diff --git a/.obsidian/plugins/dataview/main.js b/.obsidian/plugins/dataview/main.js index 7ec24c4..9f71273 100644 --- a/.obsidian/plugins/dataview/main.js +++ b/.obsidian/plugins/dataview/main.js @@ -7391,6 +7391,8 @@ const DEFAULT_SETTINGS = { /** Functional return type for error handling. */ class Success { + value; + successful; constructor(value) { this.value = value; this.successful = true; @@ -7419,6 +7421,8 @@ class Success { } /** Functional return type for error handling. */ class Failure { + error; + successful; constructor(error) { this.error = error; this.successful = false; @@ -7713,7 +7717,6 @@ var Values; Values.mapLeaves = mapLeaves; /** Compare two arbitrary JavaScript values. Produces a total ordering over ANY possible dataview value. */ function compareValue(val1, val2, linkNormalizer) { - var _a, _b; // Handle undefined/nulls first. if (val1 === undefined) val1 = null; @@ -7758,7 +7761,7 @@ var Values; case "link": let link1 = wrap1.value; let link2 = wrap2.value; - let normalize = linkNormalizer !== null && linkNormalizer !== void 0 ? linkNormalizer : ((x) => x); + let normalize = linkNormalizer ?? ((x) => x); // We can't compare by file name or display, since that would break link equality. Compare by path. let pathCompare = normalize(link1.path).localeCompare(normalize(link2.path)); if (pathCompare != 0) @@ -7775,7 +7778,7 @@ var Values; if (!link1.subpath && !link2.subpath) return 0; // Since both have a subpath, compare by subpath. - return ((_a = link1.subpath) !== null && _a !== void 0 ? _a : "").localeCompare((_b = link2.subpath) !== null && _b !== void 0 ? _b : ""); + return (link1.subpath ?? "").localeCompare(link2.subpath ?? ""); case "date": return wrap1.value < wrap2.value ? -1 @@ -7822,8 +7825,7 @@ var Values; Values.compareValue = compareValue; /** Find the corresponding Dataveiw type for an arbitrary value. */ function typeOf(val) { - var _a; - return (_a = wrapValue(val)) === null || _a === void 0 ? void 0 : _a.type; + return wrapValue(val)?.type; } Values.typeOf = typeOf; /** Determine if the given value is "truthy" (i.e., is non-null and has data in it). */ @@ -7975,6 +7977,16 @@ var Groupings; ////////// /** The Obsidian 'link', used for uniquely describing a file, header, or block. */ class Link { + /** The file path this link points to. */ + path; + /** The display name associated with the link. */ + display; + /** The block ID or header this link points to within a file, if relevant. */ + subpath; + /** Is this link an embedded link (!)? */ + embed; + /** The type of this link, which determines what 'subpath' refers to, if anything. */ + type; /** Create a link to a specific file. */ static file(path, embed = false, display) { return new Link({ @@ -8093,12 +8105,11 @@ class Link { } /** Convert the inner part of the link to something that Obsidian can open / understand. */ obsidianLink() { - var _a, _b; - const escaped = this.path.replace("|", "\\|"); + const escaped = this.path.replaceAll("|", "\\|"); if (this.type == "header") - return escaped + "#" + ((_a = this.subpath) === null || _a === void 0 ? void 0 : _a.replace("|", "\\|")); + return escaped + "#" + this.subpath?.replaceAll("|", "\\|"); if (this.type == "block") - return escaped + "#^" + ((_b = this.subpath) === null || _b === void 0 ? void 0 : _b.replace("|", "\\|")); + return escaped + "#^" + this.subpath?.replaceAll("|", "\\|"); else return escaped; } @@ -8116,12 +8127,15 @@ class Link { * to have rendering functionality (which you probably do), you should extend `RenderWidget`. */ class Widget { + $widget; constructor($widget) { this.$widget = $widget; } } /** A trivial widget which renders a (key, value) pair, and allows accessing the key and value. */ class ListPairWidget extends Widget { + key; + value; constructor(key, value) { super("dataview:list-pair"); this.key = key; @@ -8133,14 +8147,15 @@ class ListPairWidget extends Widget { } /** A simple widget which renders an external link. */ class ExternalLinkWidget extends Widget { + url; + display; constructor(url, display) { super("dataview:external-link"); this.url = url; this.display = display; } markdown() { - var _a; - return `[${(_a = this.display) !== null && _a !== void 0 ? _a : this.url}](${this.url})`; + return `[${this.display ?? this.url}](${this.url})`; } } var Widgets; @@ -8173,9 +8188,64 @@ var Widgets; /** Implementation of DataArray, minus the dynamic variable access, which is implemented via proxy. */ class DataArrayImpl { + values; + settings; + defaultComparator; + static ARRAY_FUNCTIONS = new Set([ + "where", + "filter", + "map", + "flatMap", + "mutate", + "slice", + "concat", + "indexOf", + "limit", + "find", + "findIndex", + "includes", + "join", + "sort", + "sortInPlace", + "groupBy", + "groupIn", + "distinct", + "every", + "some", + "none", + "first", + "last", + "to", + "into", + "lwrap", + "expand", + "forEach", + "length", + "values", + "array", + "defaultComparator", + "toString", + "settings", + ]); + static ARRAY_PROXY = { + get: function (target, prop, reciever) { + if (typeof prop === "symbol") + return target[prop]; + else if (typeof prop === "number") + return target.values[prop]; + else if (prop === "constructor") + return target.values.constructor; + else if (!isNaN(parseInt(prop))) + return target.values[parseInt(prop)]; + else if (DataArrayImpl.ARRAY_FUNCTIONS.has(prop.toString())) + return target[prop.toString()]; + return target.to(prop); + }, + }; static wrap(arr, settings, defaultComparator = Values.compareValue) { return new Proxy(new DataArrayImpl(arr, settings, defaultComparator), DataArrayImpl.ARRAY_PROXY); } + length; constructor(values, settings, defaultComparator = Values.compareValue) { this.values = values; this.settings = settings; @@ -8233,7 +8303,7 @@ class DataArrayImpl { return this.values[index]; } findIndex(pred, fromIndex) { - for (let index = fromIndex !== null && fromIndex !== void 0 ? fromIndex : 0; index < this.length; index++) { + for (let index = fromIndex ?? 0; index < this.length; index++) { if (pred(this.values[index], index, this.values)) return index; } @@ -8245,13 +8315,13 @@ class DataArrayImpl { join(sep) { return this.map(s => Values.toString(s, this.settings)) .array() - .join(sep !== null && sep !== void 0 ? sep : ", "); + .join(sep ?? ", "); } sort(key, direction, comparator) { if (this.values.length == 0) return this; - let realComparator = comparator !== null && comparator !== void 0 ? comparator : this.defaultComparator; - let realKey = key !== null && key !== void 0 ? key : ((l) => l); + let realComparator = comparator ?? this.defaultComparator; + let realKey = key ?? ((l) => l); // Associate each entry with it's index for the key function, and then do a normal sort. let copy = [].concat(this.array()).map((elem, index) => { return { index: index, value: elem }; @@ -8266,8 +8336,8 @@ class DataArrayImpl { sortInPlace(key, direction, comparator) { if (this.values.length == 0) return this; - let realComparator = comparator !== null && comparator !== void 0 ? comparator : this.defaultComparator; - let realKey = key !== null && key !== void 0 ? key : ((l) => l); + let realComparator = comparator ?? this.defaultComparator; + let realKey = key ?? ((l) => l); this.values.sort((a, b) => { let aKey = realKey(a); let bKey = realKey(b); @@ -8281,7 +8351,7 @@ class DataArrayImpl { // JavaScript sucks and we can't make hash maps over arbitrary types (only strings/ints), so // we do a poor man algorithm where we SORT, followed by grouping. let intermediate = this.sort(key, "asc", comparator); - comparator = comparator !== null && comparator !== void 0 ? comparator : this.defaultComparator; + comparator = comparator ?? this.defaultComparator; let result = []; let currentRow = [intermediate[0]]; let current = key(intermediate[0], 0, intermediate.values); @@ -8315,12 +8385,12 @@ class DataArrayImpl { distinct(key, comparator) { if (this.values.length == 0) return this; - let realKey = key !== null && key !== void 0 ? key : (x => x); + let realKey = key ?? (x => x); // For similar reasons to groupBy, do a sort and take the first element of each block. let intermediate = this.map((x, index) => { return { key: realKey(x, index, this.values), value: x }; }).sort(x => x.key, "asc", comparator); - comparator = comparator !== null && comparator !== void 0 ? comparator : this.defaultComparator; + comparator = comparator ?? this.defaultComparator; let result = [intermediate[0].value]; for (let index = 1; index < intermediate.length; index++) { if (comparator(intermediate[index - 1].key, intermediate[index].key) != 0) { @@ -8400,57 +8470,6 @@ class DataArrayImpl { return "[" + this.values.join(", ") + "]"; } } -DataArrayImpl.ARRAY_FUNCTIONS = new Set([ - "where", - "filter", - "map", - "flatMap", - "mutate", - "slice", - "concat", - "indexOf", - "limit", - "find", - "findIndex", - "includes", - "join", - "sort", - "sortInPlace", - "groupBy", - "groupIn", - "distinct", - "every", - "some", - "none", - "first", - "last", - "to", - "into", - "lwrap", - "expand", - "forEach", - "length", - "values", - "array", - "defaultComparator", - "toString", - "settings", -]); -DataArrayImpl.ARRAY_PROXY = { - get: function (target, prop, reciever) { - if (typeof prop === "symbol") - return target[prop]; - else if (typeof prop === "number") - return target.values[prop]; - else if (prop === "constructor") - return target.values.constructor; - else if (!isNaN(parseInt(prop))) - return target.values[parseInt(prop)]; - else if (DataArrayImpl.ARRAY_FUNCTIONS.has(prop.toString())) - return target[prop.toString()]; - return target.to(prop); - }, -}; /** Provides utility functions for generating data arrays. */ var DataArray; (function (DataArray) { @@ -8491,14 +8510,14 @@ function currentLocale() { } /** Render simple fields compactly, removing wrapping content like paragraph and span. */ -async function renderCompactMarkdown(markdown, container, sourcePath, component, isInlineFieldLivePreview = false) { +async function renderCompactMarkdown(app, markdown, container, sourcePath, component, isInlineFieldLivePreview = false) { // check if the call is from the CM6 view plugin defined in src/ui/views/inline-field-live-preview.ts if (isInlineFieldLivePreview) { - await renderCompactMarkdownForInlineFieldLivePreview(markdown, container, sourcePath, component); + await renderCompactMarkdownForInlineFieldLivePreview(app, markdown, container, sourcePath, component); } else { let subcontainer = container.createSpan(); - await obsidian.MarkdownRenderer.renderMarkdown(markdown, subcontainer, sourcePath, component); + await obsidian.MarkdownRenderer.render(app, markdown, subcontainer, sourcePath, component); let paragraph = subcontainer.querySelector(":scope > p"); if (subcontainer.children.length == 1 && paragraph) { while (paragraph.firstChild) { @@ -8508,9 +8527,9 @@ async function renderCompactMarkdown(markdown, container, sourcePath, component, } } } -async function renderCompactMarkdownForInlineFieldLivePreview(markdown, container, sourcePath, component) { +async function renderCompactMarkdownForInlineFieldLivePreview(app, markdown, container, sourcePath, component) { const tmpContainer = createSpan(); - await obsidian.MarkdownRenderer.renderMarkdown(markdown, tmpContainer, sourcePath, component); + await obsidian.MarkdownRenderer.render(app, markdown, tmpContainer, sourcePath, component); let paragraph = tmpContainer.querySelector(":scope > p"); if (tmpContainer.childNodes.length == 1 && paragraph) { container.replaceChildren(...paragraph.childNodes); @@ -8535,15 +8554,14 @@ function renderCodeBlock(container, source, language) { return code; } /** Prettily render a value into a container with the given settings. */ -async function renderValue(field, container, originFile, component, settings, expandList = false, context = "root", depth = 0, isInlineFieldLivePreview = false) { - var _a, _b, _c; +async function renderValue(app, field, container, originFile, component, settings, expandList = false, context = "root", depth = 0, isInlineFieldLivePreview = false) { // Prevent infinite recursion. if (depth > settings.maxRecursiveRenderDepth) { container.appendText("..."); return; } if (Values.isNull(field)) { - await renderCompactMarkdown(settings.renderNullAs, container, originFile, component, isInlineFieldLivePreview); + await renderCompactMarkdown(app, settings.renderNullAs, container, originFile, component, isInlineFieldLivePreview); } else if (Values.isDate(field)) { container.appendText(renderMinimalDate(field, settings, currentLocale())); @@ -8552,23 +8570,23 @@ async function renderValue(field, container, originFile, component, settings, ex container.appendText(renderMinimalDuration(field)); } else if (Values.isString(field) || Values.isBoolean(field) || Values.isNumber(field)) { - await renderCompactMarkdown("" + field, container, originFile, component, isInlineFieldLivePreview); + await renderCompactMarkdown(app, "" + field, container, originFile, component, isInlineFieldLivePreview); } else if (Values.isLink(field)) { - await renderCompactMarkdown(field.markdown(), container, originFile, component, isInlineFieldLivePreview); + await renderCompactMarkdown(app, field.markdown(), container, originFile, component, isInlineFieldLivePreview); } else if (Values.isHtml(field)) { container.appendChild(field); } else if (Values.isWidget(field)) { if (Widgets.isListPair(field)) { - await renderValue(field.key, container, originFile, component, settings, expandList, context, depth, isInlineFieldLivePreview); + await renderValue(app, field.key, container, originFile, component, settings, expandList, context, depth, isInlineFieldLivePreview); container.appendText(": "); - await renderValue(field.value, container, originFile, component, settings, expandList, context, depth, isInlineFieldLivePreview); + await renderValue(app, field.value, container, originFile, component, settings, expandList, context, depth, isInlineFieldLivePreview); } else if (Widgets.isExternalLink(field)) { let elem = document.createElement("a"); - elem.textContent = (_a = field.display) !== null && _a !== void 0 ? _a : field.url; + elem.textContent = field.display ?? field.url; elem.rel = "noopener"; elem.target = "_blank"; elem.classList.add("external-link"); @@ -8593,7 +8611,7 @@ async function renderValue(field, container, originFile, component, settings, ex }); for (let child of field) { let li = list.createEl("li", { cls: "dataview-result-list-li" }); - await renderValue(child, li, originFile, component, settings, expandList, "list", depth + 1, isInlineFieldLivePreview); + await renderValue(app, child, li, originFile, component, settings, expandList, "list", depth + 1, isInlineFieldLivePreview); } } else { @@ -8608,13 +8626,13 @@ async function renderValue(field, container, originFile, component, settings, ex first = false; else span.appendText(", "); - await renderValue(val, span, originFile, component, settings, expandList, "list", depth + 1, isInlineFieldLivePreview); + await renderValue(app, val, span, originFile, component, settings, expandList, "list", depth + 1, isInlineFieldLivePreview); } } } else if (Values.isObject(field)) { // Don't render classes in case they have recursive references; spoopy. - if (((_b = field === null || field === void 0 ? void 0 : field.constructor) === null || _b === void 0 ? void 0 : _b.name) && ((_c = field === null || field === void 0 ? void 0 : field.constructor) === null || _c === void 0 ? void 0 : _c.name) != "Object") { + if (field?.constructor?.name && field?.constructor?.name != "Object") { container.appendText(`<${field.constructor.name}>`); return; } @@ -8623,7 +8641,7 @@ async function renderValue(field, container, originFile, component, settings, ex for (let [key, value] of Object.entries(field)) { let li = list.createEl("li", { cls: ["dataview", "dataview-li", "dataview-result-object-li"] }); li.appendText(key + ": "); - await renderValue(value, li, originFile, component, settings, expandList, "list", depth + 1, isInlineFieldLivePreview); + await renderValue(app, value, li, originFile, component, settings, expandList, "list", depth + 1, isInlineFieldLivePreview); } } else { @@ -8639,7 +8657,7 @@ async function renderValue(field, container, originFile, component, settings, ex else span.appendText(", "); span.appendText(key + ": "); - await renderValue(value, span, originFile, component, settings, expandList, "list", depth + 1, isInlineFieldLivePreview); + await renderValue(app, value, span, originFile, component, settings, expandList, "list", depth + 1, isInlineFieldLivePreview); } } } @@ -9266,6 +9284,30 @@ function setEmojiShorthandCompletionField(source, value) { /** All extracted markdown file metadata obtained from a file. */ class PageMetadata { + /** The path this file exists at. */ + path; + /** Obsidian-provided date this page was created. */ + ctime; + /** Obsidian-provided date this page was modified. */ + mtime; + /** Obsidian-provided size of this page in bytes. */ + size; + /** The day associated with this page, if relevant. */ + day; + /** The first H1/H2 header in the file. May not exist. */ + title; + /** All of the fields contained in this markdown file - both frontmatter AND in-file links. */ + fields; + /** All of the exact tags (prefixed with '#') in this file overall. */ + tags; + /** All of the aliases defined for this file. */ + aliases; + /** All OUTGOING links (including embeds, header + block links) in this file. */ + links; + /** All list items contained within this page. Filter for tasks to get just tasks. */ + lists; + /** The raw frontmatter for this document. */ + frontmatter; constructor(path, init) { this.path = path; this.fields = new Map(); @@ -9333,7 +9375,7 @@ class PageMetadata { /** Map this metadata to a full object; uses the index for additional data lookups. */ serialize(index, cache) { // Convert list items via the canonicalization cache. - let realCache = cache !== null && cache !== void 0 ? cache : new ListSerializationCache(this.lists); + let realCache = cache ?? new ListSerializationCache(this.lists); let result = { file: { path: this.path, @@ -9371,6 +9413,35 @@ class PageMetadata { } /** A list item inside of a list. */ class ListItem$1 { + /** The symbol ('*', '-', '1.') used to define this list item. */ + symbol; + /** A link which points to this task, or to the closest block that this task is contained in. */ + link; + /** A link to the section that contains this list element; could be a file if this is not in a section. */ + section; + /** The text of this list item. This may be multiple lines of markdown. */ + text; + /** The line that this list item starts on in the file. */ + line; + /** The number of lines that define this list item. */ + lineCount; + /** The line number for the first list item in the list this item belongs to. */ + list; + /** Any links contained within this list item. */ + links; + /** The tags contained within this list item. */ + tags; + /** The raw Obsidian-provided position for where this task is. */ + position; + /** The line number of the parent list item, if present; if this is undefined, this is a root item. */ + parent; + /** The line numbers of children of this list item. */ + children; + /** The block ID for this item, if one is present. */ + blockId; + /** Any fields defined in this list item. For tasks, this includes fields underneath the task. */ + fields; + task; constructor(init) { Object.assign(this, init); this.fields = this.fields || new Map(); @@ -9391,24 +9462,22 @@ class ListItem$1 { return `${this.symbol} ${this.text}`; } created() { - var _a, _b, _c; - return (_c = ((_b = (_a = this.fields.get("created")) !== null && _a !== void 0 ? _a : this.fields.get("ctime")) !== null && _b !== void 0 ? _b : this.fields.get("cday"))) === null || _c === void 0 ? void 0 : _c[0]; + return (this.fields.get("created") ?? this.fields.get("ctime") ?? this.fields.get("cday"))?.[0]; } due() { - var _a, _b, _c; - return (_c = ((_b = (_a = this.fields.get("due")) !== null && _a !== void 0 ? _a : this.fields.get("duetime")) !== null && _b !== void 0 ? _b : this.fields.get("dueday"))) === null || _c === void 0 ? void 0 : _c[0]; + return (this.fields.get("due") ?? this.fields.get("duetime") ?? this.fields.get("dueday"))?.[0]; } completed() { - var _a, _b, _c, _d; - return (_d = ((_c = (_b = (_a = this.fields.get("completed")) !== null && _a !== void 0 ? _a : this.fields.get("completion")) !== null && _b !== void 0 ? _b : this.fields.get("comptime")) !== null && _c !== void 0 ? _c : this.fields.get("compday"))) === null || _d === void 0 ? void 0 : _d[0]; + return (this.fields.get("completed") ?? + this.fields.get("completion") ?? + this.fields.get("comptime") ?? + this.fields.get("compday"))?.[0]; } start() { - var _a; - return (_a = this.fields.get("start")) === null || _a === void 0 ? void 0 : _a[0]; + return this.fields.get("start")?.[0]; } scheduled() { - var _a; - return (_a = this.fields.get("scheduled")) === null || _a === void 0 ? void 0 : _a[0]; + return this.fields.get("scheduled")?.[0]; } /** Create an API-friendly copy of this list item. De-duplication is done via the provided cache. */ serialize(cache) { @@ -9463,6 +9532,9 @@ class ListItem$1 { ////////////////////////////////////////// /** De-duplicates list items across section metadata and page metadata. */ class ListSerializationCache { + listItems; + cache; + seen; constructor(listItems) { this.listItems = {}; this.cache = {}; @@ -12489,6 +12561,9 @@ var localforage = /*@__PURE__*/getDefaultExportFromCjs(localforageExports); /** Simpler wrapper for a file-backed cache for arbitrary metadata. */ class LocalStorageCache { + appId; + version; + persister; constructor(appId, version) { this.appId = appId; this.version = version; @@ -12578,12 +12653,25 @@ function createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) { }; } -var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICd1c2Ugc3RyaWN0JzsKCiAgLy8gdGhlc2UgYXJlbid0IHJlYWxseSBwcml2YXRlLCBidXQgbm9yIGFyZSB0aGV5IHJlYWxseSB1c2VmdWwgdG8gZG9jdW1lbnQKCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBMdXhvbkVycm9yIGV4dGVuZHMgRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkRGF0ZVRpbWVFcnJvciBleHRlbmRzIEx1eG9uRXJyb3IgewogICAgY29uc3RydWN0b3IocmVhc29uKSB7CiAgICAgIHN1cGVyKGBJbnZhbGlkIERhdGVUaW1lOiAke3JlYXNvbi50b01lc3NhZ2UoKX1gKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCiAgY2xhc3MgSW52YWxpZEludGVydmFsRXJyb3IgZXh0ZW5kcyBMdXhvbkVycm9yIHsKICAgIGNvbnN0cnVjdG9yKHJlYXNvbikgewogICAgICBzdXBlcihgSW52YWxpZCBJbnRlcnZhbDogJHtyZWFzb24udG9NZXNzYWdlKCl9YCk7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwogIGNsYXNzIEludmFsaWREdXJhdGlvbkVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3RvcihyZWFzb24pIHsKICAgICAgc3VwZXIoYEludmFsaWQgRHVyYXRpb246ICR7cmVhc29uLnRvTWVzc2FnZSgpfWApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkVW5pdEVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3Rvcih1bml0KSB7CiAgICAgIHN1cGVyKGBJbnZhbGlkIHVuaXQgJHt1bml0fWApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkQXJndW1lbnRFcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBab25lSXNBYnN0cmFjdEVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgc3VwZXIoIlpvbmUgaXMgYW4gYWJzdHJhY3QgY2xhc3MiKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCgogIGNvbnN0IG4gPSAibnVtZXJpYyIsCiAgICBzID0gInNob3J0IiwKICAgIGwgPSAibG9uZyI7CgogIGNvbnN0IERBVEVfU0hPUlQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IG4sCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9NRUQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9NRURfV0lUSF9XRUVLREFZID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBzLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogcywKICB9OwoKICBjb25zdCBEQVRFX0ZVTEwgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IGwsCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9IVUdFID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogbCwKICB9OwoKICBjb25zdCBUSU1FX1NJTVBMRSA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgfTsKCiAgY29uc3QgVElNRV9XSVRIX1NFQ09ORFMgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogIH07CgogIGNvbnN0IFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgdGltZVpvbmVOYW1lOiBzLAogIH07CgogIGNvbnN0IFRJTUVfV0lUSF9MT05HX09GRlNFVCA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IGwsCiAgfTsKCiAgY29uc3QgVElNRV8yNF9TSU1QTEUgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICB9OwoKICBjb25zdCBUSU1FXzI0X1dJVEhfU0VDT05EUyA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICBob3VyQ3ljbGU6ICJoMjMiLAogIH07CgogIGNvbnN0IFRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICAgIHRpbWVab25lTmFtZTogcywKICB9OwoKICBjb25zdCBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICAgIHRpbWVab25lTmFtZTogbCwKICB9OwoKICBjb25zdCBEQVRFVElNRV9TSE9SVCA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbiwKICAgIGRheTogbiwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgfTsKCiAgY29uc3QgREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBuLAogICAgZGF5OiBuLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICAgIHNlY29uZDogbiwKICB9OwoKICBjb25zdCBEQVRFVElNRV9NRUQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogIH07CgogIGNvbnN0IERBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFMgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogIH07CgogIGNvbnN0IERBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICB3ZWVrZGF5OiBzLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICB9OwoKICBjb25zdCBEQVRFVElNRV9GVUxMID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICAgIHRpbWVab25lTmFtZTogcywKICB9OwoKICBjb25zdCBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUyA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbCwKICAgIGRheTogbiwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IHMsCiAgfTsKCiAgY29uc3QgREFURVRJTUVfSFVHRSA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbCwKICAgIGRheTogbiwKICAgIHdlZWtkYXk6IGwsCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgdGltZVpvbmVOYW1lOiBsLAogIH07CgogIGNvbnN0IERBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogbCwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IGwsCiAgfTsKCiAgLyoqCiAgICogQGludGVyZmFjZQogICAqLwogIGNsYXNzIFpvbmUgewogICAgLyoqCiAgICAgKiBUaGUgdHlwZSBvZiB6b25lCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCB0eXBlKCkgewogICAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIG5hbWUgb2YgdGhpcyB6b25lLgogICAgICogQGFic3RyYWN0CiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbmFtZSgpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICBnZXQgaWFuYU5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLm5hbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIG9mZnNldCBpcyBrbm93biB0byBiZSBmaXhlZCBmb3IgdGhlIHdob2xlIHllYXIuCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBnZXQgaXNVbml2ZXJzYWwoKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBvZmZzZXQncyBjb21tb24gbmFtZSAoc3VjaCBhcyBFU1QpIGF0IHRoZSBzcGVjaWZpZWQgdGltZXN0YW1wCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBuYW1lCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgdG8gYWZmZWN0IHRoZSBmb3JtYXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmZvcm1hdCAtIFdoYXQgc3R5bGUgb2Ygb2Zmc2V0IHRvIHJldHVybi4gQWNjZXB0cyAnbG9uZycgb3IgJ3Nob3J0Jy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmxvY2FsZSAtIFdoYXQgbG9jYWxlIHRvIHJldHVybiB0aGUgb2Zmc2V0IG5hbWUgaW4uCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIG9mZnNldE5hbWUodHMsIG9wdHMpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG9mZnNldCdzIHZhbHVlIGFzIGEgc3RyaW5nCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBvZmZzZXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXQgLSBXaGF0IHN0eWxlIG9mIG9mZnNldCB0byByZXR1cm4uCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXB0cyAnbmFycm93JywgJ3Nob3J0Jywgb3IgJ3RlY2hpZScuIFJldHVybmluZyAnKzYnLCAnKzA2OjAwJywgb3IgJyswNjAwJyByZXNwZWN0aXZlbHkKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgb2Zmc2V0IGluIG1pbnV0ZXMgZm9yIHRoaXMgem9uZSBhdCB0aGUgc3BlY2lmaWVkIHRpbWVzdGFtcC4KICAgICAqIEBhYnN0cmFjdAogICAgICogQHBhcmFtIHtudW1iZXJ9IHRzIC0gRXBvY2ggbWlsbGlzZWNvbmRzIGZvciB3aGljaCB0byBjb21wdXRlIHRoZSBvZmZzZXQKICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgb2Zmc2V0KHRzKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIFpvbmUgaXMgZXF1YWwgdG8gYW5vdGhlciB6b25lCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7Wm9uZX0gb3RoZXJab25lIC0gdGhlIHpvbmUgdG8gY29tcGFyZQogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgZXF1YWxzKG90aGVyWm9uZSkgewogICAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBab25lIGlzIHZhbGlkLgogICAgICogQGFic3RyYWN0CiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CiAgfQoKICBsZXQgc2luZ2xldG9uJDEgPSBudWxsOwoKICAvKioKICAgKiBSZXByZXNlbnRzIHRoZSBsb2NhbCB6b25lIGZvciB0aGlzIEphdmFTY3JpcHQgZW52aXJvbm1lbnQuCiAgICogQGltcGxlbWVudHMge1pvbmV9CiAgICovCiAgY2xhc3MgU3lzdGVtWm9uZSBleHRlbmRzIFpvbmUgewogICAgLyoqCiAgICAgKiBHZXQgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIGxvY2FsIHpvbmUKICAgICAqIEByZXR1cm4ge1N5c3RlbVpvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgaW5zdGFuY2UoKSB7CiAgICAgIGlmIChzaW5nbGV0b24kMSA9PT0gbnVsbCkgewogICAgICAgIHNpbmdsZXRvbiQxID0gbmV3IFN5c3RlbVpvbmUoKTsKICAgICAgfQogICAgICByZXR1cm4gc2luZ2xldG9uJDE7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCB0eXBlKCkgewogICAgICByZXR1cm4gInN5c3RlbSI7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBuYW1lKCkgewogICAgICByZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVW5pdmVyc2FsKCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldE5hbWUodHMsIHsgZm9ybWF0LCBsb2NhbGUgfSkgewogICAgICByZXR1cm4gcGFyc2Vab25lSW5mbyh0cywgZm9ybWF0LCBsb2NhbGUpOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkgewogICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHRoaXMub2Zmc2V0KHRzKSwgZm9ybWF0KTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgb2Zmc2V0KHRzKSB7CiAgICAgIHJldHVybiAtbmV3IERhdGUodHMpLmdldFRpbWV6b25lT2Zmc2V0KCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAic3lzdGVtIjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogIH0KCiAgbGV0IGR0ZkNhY2hlID0ge307CiAgZnVuY3Rpb24gbWFrZURURih6b25lKSB7CiAgICBpZiAoIWR0ZkNhY2hlW3pvbmVdKSB7CiAgICAgIGR0ZkNhY2hlW3pvbmVdID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoImVuLVVTIiwgewogICAgICAgIGhvdXIxMjogZmFsc2UsCiAgICAgICAgdGltZVpvbmU6IHpvbmUsCiAgICAgICAgeWVhcjogIm51bWVyaWMiLAogICAgICAgIG1vbnRoOiAiMi1kaWdpdCIsCiAgICAgICAgZGF5OiAiMi1kaWdpdCIsCiAgICAgICAgaG91cjogIjItZGlnaXQiLAogICAgICAgIG1pbnV0ZTogIjItZGlnaXQiLAogICAgICAgIHNlY29uZDogIjItZGlnaXQiLAogICAgICAgIGVyYTogInNob3J0IiwKICAgICAgfSk7CiAgICB9CiAgICByZXR1cm4gZHRmQ2FjaGVbem9uZV07CiAgfQoKICBjb25zdCB0eXBlVG9Qb3MgPSB7CiAgICB5ZWFyOiAwLAogICAgbW9udGg6IDEsCiAgICBkYXk6IDIsCiAgICBlcmE6IDMsCiAgICBob3VyOiA0LAogICAgbWludXRlOiA1LAogICAgc2Vjb25kOiA2LAogIH07CgogIGZ1bmN0aW9uIGhhY2t5T2Zmc2V0KGR0ZiwgZGF0ZSkgewogICAgY29uc3QgZm9ybWF0dGVkID0gZHRmLmZvcm1hdChkYXRlKS5yZXBsYWNlKC9cdTIwMEUvZywgIiIpLAogICAgICBwYXJzZWQgPSAvKFxkKylcLyhcZCspXC8oXGQrKSAoQUR8QkMpLD8gKFxkKyk6KFxkKyk6KFxkKykvLmV4ZWMoZm9ybWF0dGVkKSwKICAgICAgWywgZk1vbnRoLCBmRGF5LCBmWWVhciwgZmFkT3JCYywgZkhvdXIsIGZNaW51dGUsIGZTZWNvbmRdID0gcGFyc2VkOwogICAgcmV0dXJuIFtmWWVhciwgZk1vbnRoLCBmRGF5LCBmYWRPckJjLCBmSG91ciwgZk1pbnV0ZSwgZlNlY29uZF07CiAgfQoKICBmdW5jdGlvbiBwYXJ0c09mZnNldChkdGYsIGRhdGUpIHsKICAgIGNvbnN0IGZvcm1hdHRlZCA9IGR0Zi5mb3JtYXRUb1BhcnRzKGRhdGUpOwogICAgY29uc3QgZmlsbGVkID0gW107CiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvcm1hdHRlZC5sZW5ndGg7IGkrKykgewogICAgICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSBmb3JtYXR0ZWRbaV07CiAgICAgIGNvbnN0IHBvcyA9IHR5cGVUb1Bvc1t0eXBlXTsKCiAgICAgIGlmICh0eXBlID09PSAiZXJhIikgewogICAgICAgIGZpbGxlZFtwb3NdID0gdmFsdWU7CiAgICAgIH0gZWxzZSBpZiAoIWlzVW5kZWZpbmVkKHBvcykpIHsKICAgICAgICBmaWxsZWRbcG9zXSA9IHBhcnNlSW50KHZhbHVlLCAxMCk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBmaWxsZWQ7CiAgfQoKICBsZXQgaWFuYVpvbmVDYWNoZSA9IHt9OwogIC8qKgogICAqIEEgem9uZSBpZGVudGlmaWVkIGJ5IGFuIElBTkEgaWRlbnRpZmllciwgbGlrZSBBbWVyaWNhL05ld19Zb3JrCiAgICogQGltcGxlbWVudHMge1pvbmV9CiAgICovCiAgY2xhc3MgSUFOQVpvbmUgZXh0ZW5kcyBab25lIHsKICAgIC8qKgogICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBab25lIG5hbWUKICAgICAqIEByZXR1cm4ge0lBTkFab25lfQogICAgICovCiAgICBzdGF0aWMgY3JlYXRlKG5hbWUpIHsKICAgICAgaWYgKCFpYW5hWm9uZUNhY2hlW25hbWVdKSB7CiAgICAgICAgaWFuYVpvbmVDYWNoZVtuYW1lXSA9IG5ldyBJQU5BWm9uZShuYW1lKTsKICAgICAgfQogICAgICByZXR1cm4gaWFuYVpvbmVDYWNoZVtuYW1lXTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlc2V0IGxvY2FsIGNhY2hlcy4gU2hvdWxkIG9ubHkgYmUgbmVjZXNzYXJ5IGluIHRlc3Rpbmcgc2NlbmFyaW9zLgogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqLwogICAgc3RhdGljIHJlc2V0Q2FjaGUoKSB7CiAgICAgIGlhbmFab25lQ2FjaGUgPSB7fTsKICAgICAgZHRmQ2FjaGUgPSB7fTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgcHJvdmlkZWQgc3RyaW5nIGlzIGEgdmFsaWQgc3BlY2lmaWVyLiBUaGlzIG9ubHkgY2hlY2tzIHRoZSBzdHJpbmcncyBmb3JtYXQsIG5vdCB0aGF0IHRoZSBzcGVjaWZpZXIgaWRlbnRpZmllcyBhIGtub3duIHpvbmU7IHNlZSBpc1ZhbGlkWm9uZSBmb3IgdGhhdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzIC0gVGhlIHN0cmluZyB0byBjaGVjayB2YWxpZGl0eSBvbgogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcigiQW1lcmljYS9OZXdfWW9yayIpIC8vPT4gdHJ1ZQogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcigiU3BvcnR+fmJsb3JwIikgLy89PiBmYWxzZQogICAgICogQGRlcHJlY2F0ZWQgVGhpcyBtZXRob2QgcmV0dXJucyBmYWxzZSBmb3Igc29tZSB2YWxpZCBJQU5BIG5hbWVzLiBVc2UgaXNWYWxpZFpvbmUgaW5zdGVhZC4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc1ZhbGlkU3BlY2lmaWVyKHMpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZFpvbmUocyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHByb3ZpZGVkIHN0cmluZyBpZGVudGlmaWVzIGEgcmVhbCB6b25lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gem9uZSAtIFRoZSBzdHJpbmcgdG8gY2hlY2sKICAgICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRab25lKCJBbWVyaWNhL05ld19Zb3JrIikgLy89PiB0cnVlCiAgICAgKiBAZXhhbXBsZSBJQU5BWm9uZS5pc1ZhbGlkWm9uZSgiRmFudGFzaWEvQ2FzdGxlIikgLy89PiBmYWxzZQogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFpvbmUoIlNwb3J0fn5ibG9ycCIpIC8vPT4gZmFsc2UKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc1ZhbGlkWm9uZSh6b25lKSB7CiAgICAgIGlmICghem9uZSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICB0cnkgewogICAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCJlbi1VUyIsIHsgdGltZVpvbmU6IHpvbmUgfSkuZm9ybWF0KCk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIH0KCiAgICBjb25zdHJ1Y3RvcihuYW1lKSB7CiAgICAgIHN1cGVyKCk7CiAgICAgIC8qKiBAcHJpdmF0ZSAqKi8KICAgICAgdGhpcy56b25lTmFtZSA9IG5hbWU7CiAgICAgIC8qKiBAcHJpdmF0ZSAqKi8KICAgICAgdGhpcy52YWxpZCA9IElBTkFab25lLmlzVmFsaWRab25lKG5hbWUpOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgdHlwZSgpIHsKICAgICAgcmV0dXJuICJpYW5hIjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IG5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLnpvbmVOYW1lOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgaXNVbml2ZXJzYWwoKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgb2Zmc2V0TmFtZSh0cywgeyBmb3JtYXQsIGxvY2FsZSB9KSB7CiAgICAgIHJldHVybiBwYXJzZVpvbmVJbmZvKHRzLCBmb3JtYXQsIGxvY2FsZSwgdGhpcy5uYW1lKTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHsKICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh0aGlzLm9mZnNldCh0cyksIGZvcm1hdCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldCh0cykgewogICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodHMpOwoKICAgICAgaWYgKGlzTmFOKGRhdGUpKSByZXR1cm4gTmFOOwoKICAgICAgY29uc3QgZHRmID0gbWFrZURURih0aGlzLm5hbWUpOwogICAgICBsZXQgW3llYXIsIG1vbnRoLCBkYXksIGFkT3JCYywgaG91ciwgbWludXRlLCBzZWNvbmRdID0gZHRmLmZvcm1hdFRvUGFydHMKICAgICAgICA/IHBhcnRzT2Zmc2V0KGR0ZiwgZGF0ZSkKICAgICAgICA6IGhhY2t5T2Zmc2V0KGR0ZiwgZGF0ZSk7CgogICAgICBpZiAoYWRPckJjID09PSAiQkMiKSB7CiAgICAgICAgeWVhciA9IC1NYXRoLmFicyh5ZWFyKSArIDE7CiAgICAgIH0KCiAgICAgIC8vIGJlY2F1c2Ugd2UncmUgdXNpbmcgaG91cjEyIGFuZCBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xMDI1NTY0JmNhbj0yJnE9JTIyMjQlM0EwMCUyMiUyMGRhdGV0aW1lZm9ybWF0CiAgICAgIGNvbnN0IGFkanVzdGVkSG91ciA9IGhvdXIgPT09IDI0ID8gMCA6IGhvdXI7CgogICAgICBjb25zdCBhc1VUQyA9IG9ialRvTG9jYWxUUyh7CiAgICAgICAgeWVhciwKICAgICAgICBtb250aCwKICAgICAgICBkYXksCiAgICAgICAgaG91cjogYWRqdXN0ZWRIb3VyLAogICAgICAgIG1pbnV0ZSwKICAgICAgICBzZWNvbmQsCiAgICAgICAgbWlsbGlzZWNvbmQ6IDAsCiAgICAgIH0pOwoKICAgICAgbGV0IGFzVFMgPSArZGF0ZTsKICAgICAgY29uc3Qgb3ZlciA9IGFzVFMgJSAxMDAwOwogICAgICBhc1RTIC09IG92ZXIgPj0gMCA/IG92ZXIgOiAxMDAwICsgb3ZlcjsKICAgICAgcmV0dXJuIChhc1VUQyAtIGFzVFMpIC8gKDYwICogMTAwMCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAiaWFuYSIgJiYgb3RoZXJab25lLm5hbWUgPT09IHRoaXMubmFtZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0aGlzLnZhbGlkOwogICAgfQogIH0KCiAgLy8gdG9kbyAtIHJlbWFwIGNhY2hpbmcKCiAgbGV0IGludGxMRkNhY2hlID0ge307CiAgZnVuY3Rpb24gZ2V0Q2FjaGVkTEYobG9jU3RyaW5nLCBvcHRzID0ge30pIHsKICAgIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTsKICAgIGxldCBkdGYgPSBpbnRsTEZDYWNoZVtrZXldOwogICAgaWYgKCFkdGYpIHsKICAgICAgZHRmID0gbmV3IEludGwuTGlzdEZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsTEZDYWNoZVtrZXldID0gZHRmOwogICAgfQogICAgcmV0dXJuIGR0ZjsKICB9CgogIGxldCBpbnRsRFRDYWNoZSA9IHt9OwogIGZ1bmN0aW9uIGdldENhY2hlZERURihsb2NTdHJpbmcsIG9wdHMgPSB7fSkgewogICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgb3B0c10pOwogICAgbGV0IGR0ZiA9IGludGxEVENhY2hlW2tleV07CiAgICBpZiAoIWR0ZikgewogICAgICBkdGYgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsRFRDYWNoZVtrZXldID0gZHRmOwogICAgfQogICAgcmV0dXJuIGR0ZjsKICB9CgogIGxldCBpbnRsTnVtQ2FjaGUgPSB7fTsKICBmdW5jdGlvbiBnZXRDYWNoZWRJTkYobG9jU3RyaW5nLCBvcHRzID0ge30pIHsKICAgIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTsKICAgIGxldCBpbmYgPSBpbnRsTnVtQ2FjaGVba2V5XTsKICAgIGlmICghaW5mKSB7CiAgICAgIGluZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsTnVtQ2FjaGVba2V5XSA9IGluZjsKICAgIH0KICAgIHJldHVybiBpbmY7CiAgfQoKICBsZXQgaW50bFJlbENhY2hlID0ge307CiAgZnVuY3Rpb24gZ2V0Q2FjaGVkUlRGKGxvY1N0cmluZywgb3B0cyA9IHt9KSB7CiAgICBjb25zdCB7IGJhc2UsIC4uLmNhY2hlS2V5T3B0cyB9ID0gb3B0czsgLy8gZXhjbHVkZSBgYmFzZWAgZnJvbSB0aGUgb3B0aW9ucwogICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgY2FjaGVLZXlPcHRzXSk7CiAgICBsZXQgaW5mID0gaW50bFJlbENhY2hlW2tleV07CiAgICBpZiAoIWluZikgewogICAgICBpbmYgPSBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQobG9jU3RyaW5nLCBvcHRzKTsKICAgICAgaW50bFJlbENhY2hlW2tleV0gPSBpbmY7CiAgICB9CiAgICByZXR1cm4gaW5mOwogIH0KCiAgbGV0IHN5c0xvY2FsZUNhY2hlID0gbnVsbDsKICBmdW5jdGlvbiBzeXN0ZW1Mb2NhbGUoKSB7CiAgICBpZiAoc3lzTG9jYWxlQ2FjaGUpIHsKICAgICAgcmV0dXJuIHN5c0xvY2FsZUNhY2hlOwogICAgfSBlbHNlIHsKICAgICAgc3lzTG9jYWxlQ2FjaGUgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZTsKICAgICAgcmV0dXJuIHN5c0xvY2FsZUNhY2hlOwogICAgfQogIH0KCiAgZnVuY3Rpb24gcGFyc2VMb2NhbGVTdHJpbmcobG9jYWxlU3RyKSB7CiAgICAvLyBJIHJlYWxseSB3YW50IHRvIGF2b2lkIHdyaXRpbmcgYSBCQ1AgNDcgcGFyc2VyCiAgICAvLyBzZWUsIGUuZy4gaHR0cHM6Ly9naXRodWIuY29tL3dvb29ybS9iY3AtNDcKICAgIC8vIEluc3RlYWQsIHdlJ2xsIGRvIHRoaXM6CgogICAgLy8gYSkgaWYgdGhlIHN0cmluZyBoYXMgbm8gLXUgZXh0ZW5zaW9ucywganVzdCBsZWF2ZSBpdCBhbG9uZQogICAgLy8gYikgaWYgaXQgZG9lcywgdXNlIEludGwgdG8gcmVzb2x2ZSBldmVyeXRoaW5nCiAgICAvLyBjKSBpZiBJbnRsIGZhaWxzLCB0cnkgYWdhaW4gd2l0aG91dCB0aGUgLXUKCiAgICAvLyBwcml2YXRlIHN1YnRhZ3MgYW5kIHVuaWNvZGUgc3VidGFncyBoYXZlIG9yZGVyaW5nIHJlcXVpcmVtZW50cywKICAgIC8vIGFuZCB3ZSdyZSBub3QgcHJvcGVybHkgcGFyc2luZyB0aGlzLCBzbyBqdXN0IHN0cmlwIG91dCB0aGUKICAgIC8vIHByaXZhdGUgb25lcyBpZiB0aGV5IGV4aXN0LgogICAgY29uc3QgeEluZGV4ID0gbG9jYWxlU3RyLmluZGV4T2YoIi14LSIpOwogICAgaWYgKHhJbmRleCAhPT0gLTEpIHsKICAgICAgbG9jYWxlU3RyID0gbG9jYWxlU3RyLnN1YnN0cmluZygwLCB4SW5kZXgpOwogICAgfQoKICAgIGNvbnN0IHVJbmRleCA9IGxvY2FsZVN0ci5pbmRleE9mKCItdS0iKTsKICAgIGlmICh1SW5kZXggPT09IC0xKSB7CiAgICAgIHJldHVybiBbbG9jYWxlU3RyXTsKICAgIH0gZWxzZSB7CiAgICAgIGxldCBvcHRpb25zOwogICAgICBsZXQgc2VsZWN0ZWRTdHI7CiAgICAgIHRyeSB7CiAgICAgICAgb3B0aW9ucyA9IGdldENhY2hlZERURihsb2NhbGVTdHIpLnJlc29sdmVkT3B0aW9ucygpOwogICAgICAgIHNlbGVjdGVkU3RyID0gbG9jYWxlU3RyOwogICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgY29uc3Qgc21hbGxlciA9IGxvY2FsZVN0ci5zdWJzdHJpbmcoMCwgdUluZGV4KTsKICAgICAgICBvcHRpb25zID0gZ2V0Q2FjaGVkRFRGKHNtYWxsZXIpLnJlc29sdmVkT3B0aW9ucygpOwogICAgICAgIHNlbGVjdGVkU3RyID0gc21hbGxlcjsKICAgICAgfQoKICAgICAgY29uc3QgeyBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyIH0gPSBvcHRpb25zOwogICAgICByZXR1cm4gW3NlbGVjdGVkU3RyLCBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyXTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGludGxDb25maWdTdHJpbmcobG9jYWxlU3RyLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSB7CiAgICBpZiAob3V0cHV0Q2FsZW5kYXIgfHwgbnVtYmVyaW5nU3lzdGVtKSB7CiAgICAgIGlmICghbG9jYWxlU3RyLmluY2x1ZGVzKCItdS0iKSkgewogICAgICAgIGxvY2FsZVN0ciArPSAiLXUiOwogICAgICB9CgogICAgICBpZiAob3V0cHV0Q2FsZW5kYXIpIHsKICAgICAgICBsb2NhbGVTdHIgKz0gYC1jYS0ke291dHB1dENhbGVuZGFyfWA7CiAgICAgIH0KCiAgICAgIGlmIChudW1iZXJpbmdTeXN0ZW0pIHsKICAgICAgICBsb2NhbGVTdHIgKz0gYC1udS0ke251bWJlcmluZ1N5c3RlbX1gOwogICAgICB9CiAgICAgIHJldHVybiBsb2NhbGVTdHI7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbG9jYWxlU3RyOwogICAgfQogIH0KCiAgZnVuY3Rpb24gbWFwTW9udGhzKGYpIHsKICAgIGNvbnN0IG1zID0gW107CiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSAxMjsgaSsrKSB7CiAgICAgIGNvbnN0IGR0ID0gRGF0ZVRpbWUudXRjKDIwMDksIGksIDEpOwogICAgICBtcy5wdXNoKGYoZHQpKTsKICAgIH0KICAgIHJldHVybiBtczsKICB9CgogIGZ1bmN0aW9uIG1hcFdlZWtkYXlzKGYpIHsKICAgIGNvbnN0IG1zID0gW107CiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA3OyBpKyspIHsKICAgICAgY29uc3QgZHQgPSBEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzICsgaSk7CiAgICAgIG1zLnB1c2goZihkdCkpOwogICAgfQogICAgcmV0dXJuIG1zOwogIH0KCiAgZnVuY3Rpb24gbGlzdFN0dWZmKGxvYywgbGVuZ3RoLCBlbmdsaXNoRm4sIGludGxGbikgewogICAgY29uc3QgbW9kZSA9IGxvYy5saXN0aW5nTW9kZSgpOwoKICAgIGlmIChtb2RlID09PSAiZXJyb3IiKSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfSBlbHNlIGlmIChtb2RlID09PSAiZW4iKSB7CiAgICAgIHJldHVybiBlbmdsaXNoRm4obGVuZ3RoKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBpbnRsRm4obGVuZ3RoKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHN1cHBvcnRzRmFzdE51bWJlcnMobG9jKSB7CiAgICBpZiAobG9jLm51bWJlcmluZ1N5c3RlbSAmJiBsb2MubnVtYmVyaW5nU3lzdGVtICE9PSAibGF0biIpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICgKICAgICAgICBsb2MubnVtYmVyaW5nU3lzdGVtID09PSAibGF0biIgfHwKICAgICAgICAhbG9jLmxvY2FsZSB8fAogICAgICAgIGxvYy5sb2NhbGUuc3RhcnRzV2l0aCgiZW4iKSB8fAogICAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvYy5pbnRsKS5yZXNvbHZlZE9wdGlvbnMoKS5udW1iZXJpbmdTeXN0ZW0gPT09ICJsYXRuIgogICAgICApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY2xhc3MgUG9seU51bWJlckZvcm1hdHRlciB7CiAgICBjb25zdHJ1Y3RvcihpbnRsLCBmb3JjZVNpbXBsZSwgb3B0cykgewogICAgICB0aGlzLnBhZFRvID0gb3B0cy5wYWRUbyB8fCAwOwogICAgICB0aGlzLmZsb29yID0gb3B0cy5mbG9vciB8fCBmYWxzZTsKCiAgICAgIGNvbnN0IHsgcGFkVG8sIGZsb29yLCAuLi5vdGhlck9wdHMgfSA9IG9wdHM7CgogICAgICBpZiAoIWZvcmNlU2ltcGxlIHx8IE9iamVjdC5rZXlzKG90aGVyT3B0cykubGVuZ3RoID4gMCkgewogICAgICAgIGNvbnN0IGludGxPcHRzID0geyB1c2VHcm91cGluZzogZmFsc2UsIC4uLm9wdHMgfTsKICAgICAgICBpZiAob3B0cy5wYWRUbyA+IDApIGludGxPcHRzLm1pbmltdW1JbnRlZ2VyRGlnaXRzID0gb3B0cy5wYWRUbzsKICAgICAgICB0aGlzLmluZiA9IGdldENhY2hlZElORihpbnRsLCBpbnRsT3B0cyk7CiAgICAgIH0KICAgIH0KCiAgICBmb3JtYXQoaSkgewogICAgICBpZiAodGhpcy5pbmYpIHsKICAgICAgICBjb25zdCBmaXhlZCA9IHRoaXMuZmxvb3IgPyBNYXRoLmZsb29yKGkpIDogaTsKICAgICAgICByZXR1cm4gdGhpcy5pbmYuZm9ybWF0KGZpeGVkKTsKICAgICAgfSBlbHNlIHsKICAgICAgICAvLyB0byBtYXRjaCB0aGUgYnJvd3NlcidzIG51bWJlcmZvcm1hdHRlciBkZWZhdWx0cwogICAgICAgIGNvbnN0IGZpeGVkID0gdGhpcy5mbG9vciA/IE1hdGguZmxvb3IoaSkgOiByb3VuZFRvKGksIDMpOwogICAgICAgIHJldHVybiBwYWRTdGFydChmaXhlZCwgdGhpcy5wYWRUbyk7CiAgICAgIH0KICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCgogIGNsYXNzIFBvbHlEYXRlRm9ybWF0dGVyIHsKICAgIGNvbnN0cnVjdG9yKGR0LCBpbnRsLCBvcHRzKSB7CiAgICAgIHRoaXMub3B0cyA9IG9wdHM7CiAgICAgIHRoaXMub3JpZ2luYWxab25lID0gdW5kZWZpbmVkOwoKICAgICAgbGV0IHogPSB1bmRlZmluZWQ7CiAgICAgIGlmICh0aGlzLm9wdHMudGltZVpvbmUpIHsKICAgICAgICAvLyBEb24ndCBhcHBseSBhbnkgd29ya2Fyb3VuZHMgaWYgYSB0aW1lWm9uZSBpcyBleHBsaWNpdGx5IHByb3ZpZGVkIGluIG9wdHMKICAgICAgICB0aGlzLmR0ID0gZHQ7CiAgICAgIH0gZWxzZSBpZiAoZHQuem9uZS50eXBlID09PSAiZml4ZWQiKSB7CiAgICAgICAgLy8gVVRDLTggb3IgRXRjL1VUQy04IGFyZSBub3QgcGFydCBvZiB0emRhdGEsIG9ubHkgRXRjL0dNVCs4IGFuZCB0aGUgbGlrZS4KICAgICAgICAvLyBUaGF0IGlzIHdoeSBmaXhlZC1vZmZzZXQgVFogaXMgc2V0IHRvIHRoYXQgdW5sZXNzIGl0IGlzOgogICAgICAgIC8vIDEuIFJlcHJlc2VudGluZyBvZmZzZXQgMCB3aGVuIFVUQyBpcyB1c2VkIHRvIG1haW50YWluIHByZXZpb3VzIGJlaGF2aW9yIGFuZCBkb2VzIG5vdCBiZWNvbWUgR01ULgogICAgICAgIC8vIDIuIFVuc3VwcG9ydGVkIGJ5IHRoZSBicm93c2VyOgogICAgICAgIC8vICAgIC0gc29tZSBkbyBub3Qgc3VwcG9ydCBFdGMvCiAgICAgICAgLy8gICAgLSA8IEV0Yy9HTVQtMTQsID4gRXRjL0dNVCsxMiwgYW5kIDMwLW1pbnV0ZSBvciA0NS1taW51dGUgb2Zmc2V0cyBhcmUgbm90IHBhcnQgb2YgdHpkYXRhCiAgICAgICAgY29uc3QgZ210T2Zmc2V0ID0gLTEgKiAoZHQub2Zmc2V0IC8gNjApOwogICAgICAgIGNvbnN0IG9mZnNldFogPSBnbXRPZmZzZXQgPj0gMCA/IGBFdGMvR01UKyR7Z210T2Zmc2V0fWAgOiBgRXRjL0dNVCR7Z210T2Zmc2V0fWA7CiAgICAgICAgaWYgKGR0Lm9mZnNldCAhPT0gMCAmJiBJQU5BWm9uZS5jcmVhdGUob2Zmc2V0WikudmFsaWQpIHsKICAgICAgICAgIHogPSBvZmZzZXRaOwogICAgICAgICAgdGhpcy5kdCA9IGR0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvLyBOb3QgYWxsIGZpeGVkLW9mZnNldCB6b25lcyBsaWtlIEV0Yy8rNDozMCBhcmUgcHJlc2VudCBpbiB0emRhdGEgc28KICAgICAgICAgIC8vIHdlIG1hbnVhbGx5IGFwcGx5IHRoZSBvZmZzZXQgYW5kIHN1YnN0aXR1dGUgdGhlIHpvbmUgYXMgbmVlZGVkLgogICAgICAgICAgeiA9ICJVVEMiOwogICAgICAgICAgdGhpcy5kdCA9IGR0Lm9mZnNldCA9PT0gMCA/IGR0IDogZHQuc2V0Wm9uZSgiVVRDIikucGx1cyh7IG1pbnV0ZXM6IGR0Lm9mZnNldCB9KTsKICAgICAgICAgIHRoaXMub3JpZ2luYWxab25lID0gZHQuem9uZTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAoZHQuem9uZS50eXBlID09PSAic3lzdGVtIikgewogICAgICAgIHRoaXMuZHQgPSBkdDsKICAgICAgfSBlbHNlIGlmIChkdC56b25lLnR5cGUgPT09ICJpYW5hIikgewogICAgICAgIHRoaXMuZHQgPSBkdDsKICAgICAgICB6ID0gZHQuem9uZS5uYW1lOwogICAgICB9IGVsc2UgewogICAgICAgIC8vIEN1c3RvbSB6b25lcyBjYW4gaGF2ZSBhbnkgb2Zmc2V0IC8gb2Zmc2V0TmFtZSBzbyB3ZSBqdXN0IG1hbnVhbGx5CiAgICAgICAgLy8gYXBwbHkgdGhlIG9mZnNldCBhbmQgc3Vic3RpdHV0ZSB0aGUgem9uZSBhcyBuZWVkZWQuCiAgICAgICAgeiA9ICJVVEMiOwogICAgICAgIHRoaXMuZHQgPSBkdC5zZXRab25lKCJVVEMiKS5wbHVzKHsgbWludXRlczogZHQub2Zmc2V0IH0pOwogICAgICAgIHRoaXMub3JpZ2luYWxab25lID0gZHQuem9uZTsKICAgICAgfQoKICAgICAgY29uc3QgaW50bE9wdHMgPSB7IC4uLnRoaXMub3B0cyB9OwogICAgICBpbnRsT3B0cy50aW1lWm9uZSA9IGludGxPcHRzLnRpbWVab25lIHx8IHo7CiAgICAgIHRoaXMuZHRmID0gZ2V0Q2FjaGVkRFRGKGludGwsIGludGxPcHRzKTsKICAgIH0KCiAgICBmb3JtYXQoKSB7CiAgICAgIGlmICh0aGlzLm9yaWdpbmFsWm9uZSkgewogICAgICAgIC8vIElmIHdlIGhhdmUgdG8gc3Vic3RpdHV0ZSBpbiB0aGUgYWN0dWFsIHpvbmUgbmFtZSwgd2UgaGF2ZSB0byB1c2UKICAgICAgICAvLyBmb3JtYXRUb1BhcnRzIHNvIHRoYXQgdGhlIHRpbWV6b25lIGNhbiBiZSByZXBsYWNlZC4KICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRUb1BhcnRzKCkKICAgICAgICAgIC5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpCiAgICAgICAgICAuam9pbigiIik7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuZHRmLmZvcm1hdCh0aGlzLmR0LnRvSlNEYXRlKCkpOwogICAgfQoKICAgIGZvcm1hdFRvUGFydHMoKSB7CiAgICAgIGNvbnN0IHBhcnRzID0gdGhpcy5kdGYuZm9ybWF0VG9QYXJ0cyh0aGlzLmR0LnRvSlNEYXRlKCkpOwogICAgICBpZiAodGhpcy5vcmlnaW5hbFpvbmUpIHsKICAgICAgICByZXR1cm4gcGFydHMubWFwKChwYXJ0KSA9PiB7CiAgICAgICAgICBpZiAocGFydC50eXBlID09PSAidGltZVpvbmVOYW1lIikgewogICAgICAgICAgICBjb25zdCBvZmZzZXROYW1lID0gdGhpcy5vcmlnaW5hbFpvbmUub2Zmc2V0TmFtZSh0aGlzLmR0LnRzLCB7CiAgICAgICAgICAgICAgbG9jYWxlOiB0aGlzLmR0LmxvY2FsZSwKICAgICAgICAgICAgICBmb3JtYXQ6IHRoaXMub3B0cy50aW1lWm9uZU5hbWUsCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgIC4uLnBhcnQsCiAgICAgICAgICAgICAgdmFsdWU6IG9mZnNldE5hbWUsCiAgICAgICAgICAgIH07CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gcGFydDsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfQogICAgICByZXR1cm4gcGFydHM7CiAgICB9CgogICAgcmVzb2x2ZWRPcHRpb25zKCkgewogICAgICByZXR1cm4gdGhpcy5kdGYucmVzb2x2ZWRPcHRpb25zKCk7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwogIGNsYXNzIFBvbHlSZWxGb3JtYXR0ZXIgewogICAgY29uc3RydWN0b3IoaW50bCwgaXNFbmdsaXNoLCBvcHRzKSB7CiAgICAgIHRoaXMub3B0cyA9IHsgc3R5bGU6ICJsb25nIiwgLi4ub3B0cyB9OwogICAgICBpZiAoIWlzRW5nbGlzaCAmJiBoYXNSZWxhdGl2ZSgpKSB7CiAgICAgICAgdGhpcy5ydGYgPSBnZXRDYWNoZWRSVEYoaW50bCwgb3B0cyk7CiAgICAgIH0KICAgIH0KCiAgICBmb3JtYXQoY291bnQsIHVuaXQpIHsKICAgICAgaWYgKHRoaXMucnRmKSB7CiAgICAgICAgcmV0dXJuIHRoaXMucnRmLmZvcm1hdChjb3VudCwgdW5pdCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIGZvcm1hdFJlbGF0aXZlVGltZSh1bml0LCBjb3VudCwgdGhpcy5vcHRzLm51bWVyaWMsIHRoaXMub3B0cy5zdHlsZSAhPT0gImxvbmciKTsKICAgICAgfQogICAgfQoKICAgIGZvcm1hdFRvUGFydHMoY291bnQsIHVuaXQpIHsKICAgICAgaWYgKHRoaXMucnRmKSB7CiAgICAgICAgcmV0dXJuIHRoaXMucnRmLmZvcm1hdFRvUGFydHMoY291bnQsIHVuaXQpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBbXTsKICAgICAgfQogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY2xhc3MgTG9jYWxlIHsKICAgIHN0YXRpYyBmcm9tT3B0cyhvcHRzKSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKG9wdHMubG9jYWxlLCBvcHRzLm51bWJlcmluZ1N5c3RlbSwgb3B0cy5vdXRwdXRDYWxlbmRhciwgb3B0cy5kZWZhdWx0VG9FTik7CiAgICB9CgogICAgc3RhdGljIGNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIsIGRlZmF1bHRUb0VOID0gZmFsc2UpIHsKICAgICAgY29uc3Qgc3BlY2lmaWVkTG9jYWxlID0gbG9jYWxlIHx8IFNldHRpbmdzLmRlZmF1bHRMb2NhbGU7CiAgICAgIC8vIHRoZSBzeXN0ZW0gbG9jYWxlIGlzIHVzZWZ1bCBmb3IgaHVtYW4gcmVhZGFibGUgc3RyaW5ncyBidXQgYW5ub3lpbmcgZm9yIHBhcnNpbmcvZm9ybWF0dGluZyBrbm93biBmb3JtYXRzCiAgICAgIGNvbnN0IGxvY2FsZVIgPSBzcGVjaWZpZWRMb2NhbGUgfHwgKGRlZmF1bHRUb0VOID8gImVuLVVTIiA6IHN5c3RlbUxvY2FsZSgpKTsKICAgICAgY29uc3QgbnVtYmVyaW5nU3lzdGVtUiA9IG51bWJlcmluZ1N5c3RlbSB8fCBTZXR0aW5ncy5kZWZhdWx0TnVtYmVyaW5nU3lzdGVtOwogICAgICBjb25zdCBvdXRwdXRDYWxlbmRhclIgPSBvdXRwdXRDYWxlbmRhciB8fCBTZXR0aW5ncy5kZWZhdWx0T3V0cHV0Q2FsZW5kYXI7CiAgICAgIHJldHVybiBuZXcgTG9jYWxlKGxvY2FsZVIsIG51bWJlcmluZ1N5c3RlbVIsIG91dHB1dENhbGVuZGFyUiwgc3BlY2lmaWVkTG9jYWxlKTsKICAgIH0KCiAgICBzdGF0aWMgcmVzZXRDYWNoZSgpIHsKICAgICAgc3lzTG9jYWxlQ2FjaGUgPSBudWxsOwogICAgICBpbnRsRFRDYWNoZSA9IHt9OwogICAgICBpbnRsTnVtQ2FjaGUgPSB7fTsKICAgICAgaW50bFJlbENhY2hlID0ge307CiAgICB9CgogICAgc3RhdGljIGZyb21PYmplY3QoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhcik7CiAgICB9CgogICAgY29uc3RydWN0b3IobG9jYWxlLCBudW1iZXJpbmcsIG91dHB1dENhbGVuZGFyLCBzcGVjaWZpZWRMb2NhbGUpIHsKICAgICAgY29uc3QgW3BhcnNlZExvY2FsZSwgcGFyc2VkTnVtYmVyaW5nU3lzdGVtLCBwYXJzZWRPdXRwdXRDYWxlbmRhcl0gPSBwYXJzZUxvY2FsZVN0cmluZyhsb2NhbGUpOwoKICAgICAgdGhpcy5sb2NhbGUgPSBwYXJzZWRMb2NhbGU7CiAgICAgIHRoaXMubnVtYmVyaW5nU3lzdGVtID0gbnVtYmVyaW5nIHx8IHBhcnNlZE51bWJlcmluZ1N5c3RlbSB8fCBudWxsOwogICAgICB0aGlzLm91dHB1dENhbGVuZGFyID0gb3V0cHV0Q2FsZW5kYXIgfHwgcGFyc2VkT3V0cHV0Q2FsZW5kYXIgfHwgbnVsbDsKICAgICAgdGhpcy5pbnRsID0gaW50bENvbmZpZ1N0cmluZyh0aGlzLmxvY2FsZSwgdGhpcy5udW1iZXJpbmdTeXN0ZW0sIHRoaXMub3V0cHV0Q2FsZW5kYXIpOwoKICAgICAgdGhpcy53ZWVrZGF5c0NhY2hlID0geyBmb3JtYXQ6IHt9LCBzdGFuZGFsb25lOiB7fSB9OwogICAgICB0aGlzLm1vbnRoc0NhY2hlID0geyBmb3JtYXQ6IHt9LCBzdGFuZGFsb25lOiB7fSB9OwogICAgICB0aGlzLm1lcmlkaWVtQ2FjaGUgPSBudWxsOwogICAgICB0aGlzLmVyYUNhY2hlID0ge307CgogICAgICB0aGlzLnNwZWNpZmllZExvY2FsZSA9IHNwZWNpZmllZExvY2FsZTsKICAgICAgdGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9IG51bGw7CiAgICB9CgogICAgZ2V0IGZhc3ROdW1iZXJzKCkgewogICAgICBpZiAodGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9PSBudWxsKSB7CiAgICAgICAgdGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9IHN1cHBvcnRzRmFzdE51bWJlcnModGhpcyk7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkOwogICAgfQoKICAgIGxpc3RpbmdNb2RlKCkgewogICAgICBjb25zdCBpc0FjdHVhbGx5RW4gPSB0aGlzLmlzRW5nbGlzaCgpOwogICAgICBjb25zdCBoYXNOb1dlaXJkbmVzcyA9CiAgICAgICAgKHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSBudWxsIHx8IHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSAibGF0biIpICYmCiAgICAgICAgKHRoaXMub3V0cHV0Q2FsZW5kYXIgPT09IG51bGwgfHwgdGhpcy5vdXRwdXRDYWxlbmRhciA9PT0gImdyZWdvcnkiKTsKICAgICAgcmV0dXJuIGlzQWN0dWFsbHlFbiAmJiBoYXNOb1dlaXJkbmVzcyA/ICJlbiIgOiAiaW50bCI7CiAgICB9CgogICAgY2xvbmUoYWx0cykgewogICAgICBpZiAoIWFsdHMgfHwgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYWx0cykubGVuZ3RoID09PSAwKSB7CiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIExvY2FsZS5jcmVhdGUoCiAgICAgICAgICBhbHRzLmxvY2FsZSB8fCB0aGlzLnNwZWNpZmllZExvY2FsZSwKICAgICAgICAgIGFsdHMubnVtYmVyaW5nU3lzdGVtIHx8IHRoaXMubnVtYmVyaW5nU3lzdGVtLAogICAgICAgICAgYWx0cy5vdXRwdXRDYWxlbmRhciB8fCB0aGlzLm91dHB1dENhbGVuZGFyLAogICAgICAgICAgYWx0cy5kZWZhdWx0VG9FTiB8fCBmYWxzZQogICAgICAgICk7CiAgICAgIH0KICAgIH0KCiAgICByZWRlZmF1bHRUb0VOKGFsdHMgPSB7fSkgewogICAgICByZXR1cm4gdGhpcy5jbG9uZSh7IC4uLmFsdHMsIGRlZmF1bHRUb0VOOiB0cnVlIH0pOwogICAgfQoKICAgIHJlZGVmYXVsdFRvU3lzdGVtKGFsdHMgPSB7fSkgewogICAgICByZXR1cm4gdGhpcy5jbG9uZSh7IC4uLmFsdHMsIGRlZmF1bHRUb0VOOiBmYWxzZSB9KTsKICAgIH0KCiAgICBtb250aHMobGVuZ3RoLCBmb3JtYXQgPSBmYWxzZSkgewogICAgICByZXR1cm4gbGlzdFN0dWZmKHRoaXMsIGxlbmd0aCwgbW9udGhzLCAoKSA9PiB7CiAgICAgICAgY29uc3QgaW50bCA9IGZvcm1hdCA/IHsgbW9udGg6IGxlbmd0aCwgZGF5OiAibnVtZXJpYyIgfSA6IHsgbW9udGg6IGxlbmd0aCB9LAogICAgICAgICAgZm9ybWF0U3RyID0gZm9ybWF0ID8gImZvcm1hdCIgOiAic3RhbmRhbG9uZSI7CiAgICAgICAgaWYgKCF0aGlzLm1vbnRoc0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSkgewogICAgICAgICAgdGhpcy5tb250aHNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF0gPSBtYXBNb250aHMoKGR0KSA9PiB0aGlzLmV4dHJhY3QoZHQsIGludGwsICJtb250aCIpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRoaXMubW9udGhzQ2FjaGVbZm9ybWF0U3RyXVtsZW5ndGhdOwogICAgICB9KTsKICAgIH0KCiAgICB3ZWVrZGF5cyhsZW5ndGgsIGZvcm1hdCA9IGZhbHNlKSB7CiAgICAgIHJldHVybiBsaXN0U3R1ZmYodGhpcywgbGVuZ3RoLCB3ZWVrZGF5cywgKCkgPT4gewogICAgICAgIGNvbnN0IGludGwgPSBmb3JtYXQKICAgICAgICAgICAgPyB7IHdlZWtkYXk6IGxlbmd0aCwgeWVhcjogIm51bWVyaWMiLCBtb250aDogImxvbmciLCBkYXk6ICJudW1lcmljIiB9CiAgICAgICAgICAgIDogeyB3ZWVrZGF5OiBsZW5ndGggfSwKICAgICAgICAgIGZvcm1hdFN0ciA9IGZvcm1hdCA/ICJmb3JtYXQiIDogInN0YW5kYWxvbmUiOwogICAgICAgIGlmICghdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSkgewogICAgICAgICAgdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSA9IG1hcFdlZWtkYXlzKChkdCkgPT4KICAgICAgICAgICAgdGhpcy5leHRyYWN0KGR0LCBpbnRsLCAid2Vla2RheSIpCiAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXTsKICAgICAgfSk7CiAgICB9CgogICAgbWVyaWRpZW1zKCkgewogICAgICByZXR1cm4gbGlzdFN0dWZmKAogICAgICAgIHRoaXMsCiAgICAgICAgdW5kZWZpbmVkLAogICAgICAgICgpID0+IG1lcmlkaWVtcywKICAgICAgICAoKSA9PiB7CiAgICAgICAgICAvLyBJbiB0aGVvcnkgdGhlcmUgY291bGQgYmUgYXJpYml0cmFyeSBkYXkgcGVyaW9kcy4gV2UncmUgZ29ubmEgYXNzdW1lIHRoZXJlIGFyZSBleGFjdGx5IHR3bwogICAgICAgICAgLy8gZm9yIEFNIGFuZCBQTS4gVGhpcyBpcyBwcm9iYWJseSB3cm9uZywgYnV0IGl0J3MgbWFrZXMgcGFyc2luZyB3YXkgZWFzaWVyLgogICAgICAgICAgaWYgKCF0aGlzLm1lcmlkaWVtQ2FjaGUpIHsKICAgICAgICAgICAgY29uc3QgaW50bCA9IHsgaG91cjogIm51bWVyaWMiLCBob3VyQ3ljbGU6ICJoMTIiIH07CiAgICAgICAgICAgIHRoaXMubWVyaWRpZW1DYWNoZSA9IFtEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzLCA5KSwgRGF0ZVRpbWUudXRjKDIwMTYsIDExLCAxMywgMTkpXS5tYXAoCiAgICAgICAgICAgICAgKGR0KSA9PiB0aGlzLmV4dHJhY3QoZHQsIGludGwsICJkYXlwZXJpb2QiKQogICAgICAgICAgICApOwogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiB0aGlzLm1lcmlkaWVtQ2FjaGU7CiAgICAgICAgfQogICAgICApOwogICAgfQoKICAgIGVyYXMobGVuZ3RoKSB7CiAgICAgIHJldHVybiBsaXN0U3R1ZmYodGhpcywgbGVuZ3RoLCBlcmFzLCAoKSA9PiB7CiAgICAgICAgY29uc3QgaW50bCA9IHsgZXJhOiBsZW5ndGggfTsKCiAgICAgICAgLy8gVGhpcyBpcyBwcm9ibGVtYXRpYy4gRGlmZmVyZW50IGNhbGVuZGFycyBhcmUgZ29pbmcgdG8gZGVmaW5lIGVyYXMgdG90YWxseSBkaWZmZXJlbnRseS4gV2hhdCBJIG5lZWQgaXMgdGhlIG1pbmltdW0gc2V0IG9mIGRhdGVzCiAgICAgICAgLy8gdG8gZGVmaW5pdGVseSBlbnVtZXJhdGUgdGhlbS4KICAgICAgICBpZiAoIXRoaXMuZXJhQ2FjaGVbbGVuZ3RoXSkgewogICAgICAgICAgdGhpcy5lcmFDYWNoZVtsZW5ndGhdID0gW0RhdGVUaW1lLnV0YygtNDAsIDEsIDEpLCBEYXRlVGltZS51dGMoMjAxNywgMSwgMSldLm1hcCgoZHQpID0+CiAgICAgICAgICAgIHRoaXMuZXh0cmFjdChkdCwgaW50bCwgImVyYSIpCiAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRoaXMuZXJhQ2FjaGVbbGVuZ3RoXTsKICAgICAgfSk7CiAgICB9CgogICAgZXh0cmFjdChkdCwgaW50bE9wdHMsIGZpZWxkKSB7CiAgICAgIGNvbnN0IGRmID0gdGhpcy5kdEZvcm1hdHRlcihkdCwgaW50bE9wdHMpLAogICAgICAgIHJlc3VsdHMgPSBkZi5mb3JtYXRUb1BhcnRzKCksCiAgICAgICAgbWF0Y2hpbmcgPSByZXN1bHRzLmZpbmQoKG0pID0+IG0udHlwZS50b0xvd2VyQ2FzZSgpID09PSBmaWVsZCk7CiAgICAgIHJldHVybiBtYXRjaGluZyA/IG1hdGNoaW5nLnZhbHVlIDogbnVsbDsKICAgIH0KCiAgICBudW1iZXJGb3JtYXR0ZXIob3B0cyA9IHt9KSB7CiAgICAgIC8vIHRoaXMgZm9yY2VzaW1wbGUgb3B0aW9uIGlzIG5ldmVyIHVzZWQgKHRoZSBvbmx5IGNhbGxlciBzaG9ydC1jaXJjdWl0cyBvbiBpdCwgYnV0IGl0IHNlZW1zIHNhZmVyIHRvIGxlYXZlKQogICAgICAvLyAoaW4gY29udHJhc3QsIHRoZSByZXN0IG9mIHRoZSBjb25kaXRpb24gaXMgdXNlZCBoZWF2aWx5KQogICAgICByZXR1cm4gbmV3IFBvbHlOdW1iZXJGb3JtYXR0ZXIodGhpcy5pbnRsLCBvcHRzLmZvcmNlU2ltcGxlIHx8IHRoaXMuZmFzdE51bWJlcnMsIG9wdHMpOwogICAgfQoKICAgIGR0Rm9ybWF0dGVyKGR0LCBpbnRsT3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiBuZXcgUG9seURhdGVGb3JtYXR0ZXIoZHQsIHRoaXMuaW50bCwgaW50bE9wdHMpOwogICAgfQoKICAgIHJlbEZvcm1hdHRlcihvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIG5ldyBQb2x5UmVsRm9ybWF0dGVyKHRoaXMuaW50bCwgdGhpcy5pc0VuZ2xpc2goKSwgb3B0cyk7CiAgICB9CgogICAgbGlzdEZvcm1hdHRlcihvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIGdldENhY2hlZExGKHRoaXMuaW50bCwgb3B0cyk7CiAgICB9CgogICAgaXNFbmdsaXNoKCkgewogICAgICByZXR1cm4gKAogICAgICAgIHRoaXMubG9jYWxlID09PSAiZW4iIHx8CiAgICAgICAgdGhpcy5sb2NhbGUudG9Mb3dlckNhc2UoKSA9PT0gImVuLXVzIiB8fAogICAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMuaW50bCkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlLnN0YXJ0c1dpdGgoImVuLXVzIikKICAgICAgKTsKICAgIH0KCiAgICBlcXVhbHMob3RoZXIpIHsKICAgICAgcmV0dXJuICgKICAgICAgICB0aGlzLmxvY2FsZSA9PT0gb3RoZXIubG9jYWxlICYmCiAgICAgICAgdGhpcy5udW1iZXJpbmdTeXN0ZW0gPT09IG90aGVyLm51bWJlcmluZ1N5c3RlbSAmJgogICAgICAgIHRoaXMub3V0cHV0Q2FsZW5kYXIgPT09IG90aGVyLm91dHB1dENhbGVuZGFyCiAgICAgICk7CiAgICB9CiAgfQoKICBsZXQgc2luZ2xldG9uID0gbnVsbDsKCiAgLyoqCiAgICogQSB6b25lIHdpdGggYSBmaXhlZCBvZmZzZXQgKG1lYW5pbmcgbm8gRFNUKQogICAqIEBpbXBsZW1lbnRzIHtab25lfQogICAqLwogIGNsYXNzIEZpeGVkT2Zmc2V0Wm9uZSBleHRlbmRzIFpvbmUgewogICAgLyoqCiAgICAgKiBHZXQgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgVVRDCiAgICAgKiBAcmV0dXJuIHtGaXhlZE9mZnNldFpvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgdXRjSW5zdGFuY2UoKSB7CiAgICAgIGlmIChzaW5nbGV0b24gPT09IG51bGwpIHsKICAgICAgICBzaW5nbGV0b24gPSBuZXcgRml4ZWRPZmZzZXRab25lKDApOwogICAgICB9CiAgICAgIHJldHVybiBzaW5nbGV0b247CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgYW4gaW5zdGFuY2Ugd2l0aCBhIHNwZWNpZmllZCBvZmZzZXQKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQgLSBUaGUgb2Zmc2V0IGluIG1pbnV0ZXMKICAgICAqIEByZXR1cm4ge0ZpeGVkT2Zmc2V0Wm9uZX0KICAgICAqLwogICAgc3RhdGljIGluc3RhbmNlKG9mZnNldCkgewogICAgICByZXR1cm4gb2Zmc2V0ID09PSAwID8gRml4ZWRPZmZzZXRab25lLnV0Y0luc3RhbmNlIDogbmV3IEZpeGVkT2Zmc2V0Wm9uZShvZmZzZXQpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IGFuIGluc3RhbmNlIG9mIEZpeGVkT2Zmc2V0Wm9uZSBmcm9tIGEgVVRDIG9mZnNldCBzdHJpbmcsIGxpa2UgIlVUQys2IgogICAgICogQHBhcmFtIHtzdHJpbmd9IHMgLSBUaGUgb2Zmc2V0IHN0cmluZyB0byBwYXJzZQogICAgICogQGV4YW1wbGUgRml4ZWRPZmZzZXRab25lLnBhcnNlU3BlY2lmaWVyKCJVVEMrNiIpCiAgICAgKiBAZXhhbXBsZSBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIoIlVUQyswNiIpCiAgICAgKiBAZXhhbXBsZSBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIoIlVUQy02OjAwIikKICAgICAqIEByZXR1cm4ge0ZpeGVkT2Zmc2V0Wm9uZX0KICAgICAqLwogICAgc3RhdGljIHBhcnNlU3BlY2lmaWVyKHMpIHsKICAgICAgaWYgKHMpIHsKICAgICAgICBjb25zdCByID0gcy5tYXRjaCgvXnV0Yyg/OihbKy1dXGR7MSwyfSkoPzo6KFxkezJ9KSk/KT8kL2kpOwogICAgICAgIGlmIChyKSB7CiAgICAgICAgICByZXR1cm4gbmV3IEZpeGVkT2Zmc2V0Wm9uZShzaWduZWRPZmZzZXQoclsxXSwgclsyXSkpOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBjb25zdHJ1Y3RvcihvZmZzZXQpIHsKICAgICAgc3VwZXIoKTsKICAgICAgLyoqIEBwcml2YXRlICoqLwogICAgICB0aGlzLmZpeGVkID0gb2Zmc2V0OwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgdHlwZSgpIHsKICAgICAgcmV0dXJuICJmaXhlZCI7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBuYW1lKCkgewogICAgICByZXR1cm4gdGhpcy5maXhlZCA9PT0gMCA/ICJVVEMiIDogYFVUQyR7Zm9ybWF0T2Zmc2V0KHRoaXMuZml4ZWQsICJuYXJyb3ciKX1gOwogICAgfQoKICAgIGdldCBpYW5hTmFtZSgpIHsKICAgICAgaWYgKHRoaXMuZml4ZWQgPT09IDApIHsKICAgICAgICByZXR1cm4gIkV0Yy9VVEMiOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBgRXRjL0dNVCR7Zm9ybWF0T2Zmc2V0KC10aGlzLmZpeGVkLCAibmFycm93Iil9YDsKICAgICAgfQogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBvZmZzZXROYW1lKCkgewogICAgICByZXR1cm4gdGhpcy5uYW1lOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkgewogICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHRoaXMuZml4ZWQsIGZvcm1hdCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBpc1VuaXZlcnNhbCgpIHsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuZml4ZWQ7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAiZml4ZWQiICYmIG90aGVyWm9uZS5maXhlZCA9PT0gdGhpcy5maXhlZDsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogIH0KCiAgLyoqCiAgICogQSB6b25lIHRoYXQgZmFpbGVkIHRvIHBhcnNlLiBZb3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gaW5zdGFudGlhdGUgdGhpcy4KICAgKiBAaW1wbGVtZW50cyB7Wm9uZX0KICAgKi8KICBjbGFzcyBJbnZhbGlkWm9uZSBleHRlbmRzIFpvbmUgewogICAgY29uc3RydWN0b3Ioem9uZU5hbWUpIHsKICAgICAgc3VwZXIoKTsKICAgICAgLyoqICBAcHJpdmF0ZSAqLwogICAgICB0aGlzLnpvbmVOYW1lID0gem9uZU5hbWU7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCB0eXBlKCkgewogICAgICByZXR1cm4gImludmFsaWQiOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgbmFtZSgpIHsKICAgICAgcmV0dXJuIHRoaXMuem9uZU5hbWU7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBpc1VuaXZlcnNhbCgpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBvZmZzZXROYW1lKCkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZm9ybWF0T2Zmc2V0KCkgewogICAgICByZXR1cm4gIiI7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldCgpIHsKICAgICAgcmV0dXJuIE5hTjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZXF1YWxzKCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBmdW5jdGlvbiBub3JtYWxpemVab25lKGlucHV0LCBkZWZhdWx0Wm9uZSkgewogICAgaWYgKGlzVW5kZWZpbmVkKGlucHV0KSB8fCBpbnB1dCA9PT0gbnVsbCkgewogICAgICByZXR1cm4gZGVmYXVsdFpvbmU7CiAgICB9IGVsc2UgaWYgKGlucHV0IGluc3RhbmNlb2YgWm9uZSkgewogICAgICByZXR1cm4gaW5wdXQ7CiAgICB9IGVsc2UgaWYgKGlzU3RyaW5nKGlucHV0KSkgewogICAgICBjb25zdCBsb3dlcmVkID0gaW5wdXQudG9Mb3dlckNhc2UoKTsKICAgICAgaWYgKGxvd2VyZWQgPT09ICJkZWZhdWx0IikgcmV0dXJuIGRlZmF1bHRab25lOwogICAgICBlbHNlIGlmIChsb3dlcmVkID09PSAibG9jYWwiIHx8IGxvd2VyZWQgPT09ICJzeXN0ZW0iKSByZXR1cm4gU3lzdGVtWm9uZS5pbnN0YW5jZTsKICAgICAgZWxzZSBpZiAobG93ZXJlZCA9PT0gInV0YyIgfHwgbG93ZXJlZCA9PT0gImdtdCIpIHJldHVybiBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2U7CiAgICAgIGVsc2UgcmV0dXJuIEZpeGVkT2Zmc2V0Wm9uZS5wYXJzZVNwZWNpZmllcihsb3dlcmVkKSB8fCBJQU5BWm9uZS5jcmVhdGUoaW5wdXQpOwogICAgfSBlbHNlIGlmIChpc051bWJlcihpbnB1dCkpIHsKICAgICAgcmV0dXJuIEZpeGVkT2Zmc2V0Wm9uZS5pbnN0YW5jZShpbnB1dCk7CiAgICB9IGVsc2UgaWYgKHR5cGVvZiBpbnB1dCA9PT0gIm9iamVjdCIgJiYgIm9mZnNldCIgaW4gaW5wdXQgJiYgdHlwZW9mIGlucHV0Lm9mZnNldCA9PT0gImZ1bmN0aW9uIikgewogICAgICAvLyBUaGlzIGlzIGR1bWIsIGJ1dCB0aGUgaW5zdGFuY2VvZiBjaGVjayBhYm92ZSBkb2Vzbid0IHNlZW0gdG8gcmVhbGx5IHdvcmsKICAgICAgLy8gc28gd2UncmUgZHVjayBjaGVja2luZyBpdAogICAgICByZXR1cm4gaW5wdXQ7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbmV3IEludmFsaWRab25lKGlucHV0KTsKICAgIH0KICB9CgogIGxldCBub3cgPSAoKSA9PiBEYXRlLm5vdygpLAogICAgZGVmYXVsdFpvbmUgPSAic3lzdGVtIiwKICAgIGRlZmF1bHRMb2NhbGUgPSBudWxsLAogICAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bGwsCiAgICBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIgPSBudWxsLAogICAgdHdvRGlnaXRDdXRvZmZZZWFyID0gNjAsCiAgICB0aHJvd09uSW52YWxpZDsKCiAgLyoqCiAgICogU2V0dGluZ3MgY29udGFpbnMgc3RhdGljIGdldHRlcnMgYW5kIHNldHRlcnMgdGhhdCBjb250cm9sIEx1eG9uJ3Mgb3ZlcmFsbCBiZWhhdmlvci4gTHV4b24gaXMgYSBzaW1wbGUgbGlicmFyeSB3aXRoIGZldyBvcHRpb25zLCBidXQgdGhlIG9uZXMgaXQgZG9lcyBoYXZlIGxpdmUgaGVyZS4KICAgKi8KICBjbGFzcyBTZXR0aW5ncyB7CiAgICAvKioKICAgICAqIEdldCB0aGUgY2FsbGJhY2sgZm9yIHJldHVybmluZyB0aGUgY3VycmVudCB0aW1lc3RhbXAuCiAgICAgKiBAdHlwZSB7ZnVuY3Rpb259CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgbm93KCkgewogICAgICByZXR1cm4gbm93OwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBjYWxsYmFjayBmb3IgcmV0dXJuaW5nIHRoZSBjdXJyZW50IHRpbWVzdGFtcC4KICAgICAqIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGEgbnVtYmVyLCB3aGljaCB3aWxsIGJlIGludGVycHJldGVkIGFzIGFuIEVwb2NoIG1pbGxpc2Vjb25kIGNvdW50CiAgICAgKiBAdHlwZSB7ZnVuY3Rpb259CiAgICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiBEYXRlLm5vdygpICsgMzAwMCAvLyBwcmV0ZW5kIGl0IGlzIDMgc2Vjb25kcyBpbiB0aGUgZnV0dXJlCiAgICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiAwIC8vIGFsd2F5cyBwcmV0ZW5kIGl0J3MgSmFuIDEsIDE5NzAgYXQgbWlkbmlnaHQgaW4gVVRDIHRpbWUKICAgICAqLwogICAgc3RhdGljIHNldCBub3cobikgewogICAgICBub3cgPSBuOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBkZWZhdWx0IHRpbWUgem9uZSB0byBjcmVhdGUgRGF0ZVRpbWVzIGluLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogVXNlIHRoZSB2YWx1ZSAic3lzdGVtIiB0byByZXNldCB0aGlzIHZhbHVlIHRvIHRoZSBzeXN0ZW0ncyB0aW1lIHpvbmUuCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBzdGF0aWMgc2V0IGRlZmF1bHRab25lKHpvbmUpIHsKICAgICAgZGVmYXVsdFpvbmUgPSB6b25lOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkZWZhdWx0IHRpbWUgem9uZSBvYmplY3QgY3VycmVudGx5IHVzZWQgdG8gY3JlYXRlIERhdGVUaW1lcy4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHRoZSBzeXN0ZW0ncyB0aW1lIHpvbmUgKHRoZSBvbmUgc2V0IG9uIHRoZSBtYWNoaW5lIHRoYXQgcnVucyB0aGlzIGNvZGUpLgogICAgICogQHR5cGUge1pvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgZGVmYXVsdFpvbmUoKSB7CiAgICAgIHJldHVybiBub3JtYWxpemVab25lKGRlZmF1bHRab25lLCBTeXN0ZW1ab25lLmluc3RhbmNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGVmYXVsdCBsb2NhbGUgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0TG9jYWxlKCkgewogICAgICByZXR1cm4gZGVmYXVsdExvY2FsZTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgZGVmYXVsdCBsb2NhbGUgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIHNldCBkZWZhdWx0TG9jYWxlKGxvY2FsZSkgewogICAgICBkZWZhdWx0TG9jYWxlID0gbG9jYWxlOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkZWZhdWx0IG51bWJlcmluZyBzeXN0ZW0gdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0TnVtYmVyaW5nU3lzdGVtKCkgewogICAgICByZXR1cm4gZGVmYXVsdE51bWJlcmluZ1N5c3RlbTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgZGVmYXVsdCBudW1iZXJpbmcgc3lzdGVtIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBzZXQgZGVmYXVsdE51bWJlcmluZ1N5c3RlbShudW1iZXJpbmdTeXN0ZW0pIHsKICAgICAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bWJlcmluZ1N5c3RlbTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGVmYXVsdCBvdXRwdXQgY2FsZW5kYXIgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIoKSB7CiAgICAgIHJldHVybiBkZWZhdWx0T3V0cHV0Q2FsZW5kYXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGRlZmF1bHQgb3V0cHV0IGNhbGVuZGFyIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBzZXQgZGVmYXVsdE91dHB1dENhbGVuZGFyKG91dHB1dENhbGVuZGFyKSB7CiAgICAgIGRlZmF1bHRPdXRwdXRDYWxlbmRhciA9IG91dHB1dENhbGVuZGFyOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBjdXRvZmYgeWVhciBhZnRlciB3aGljaCBhIHN0cmluZyBlbmNvZGluZyBhIHllYXIgYXMgdHdvIGRpZ2l0cyBpcyBpbnRlcnByZXRlZCB0byBvY2N1ciBpbiB0aGUgY3VycmVudCBjZW50dXJ5LgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgc3RhdGljIGdldCB0d29EaWdpdEN1dG9mZlllYXIoKSB7CiAgICAgIHJldHVybiB0d29EaWdpdEN1dG9mZlllYXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGN1dG9mZiB5ZWFyIGFmdGVyIHdoaWNoIGEgc3RyaW5nIGVuY29kaW5nIGEgeWVhciBhcyB0d28gZGlnaXRzIGlzIGludGVycHJldGVkIHRvIG9jY3VyIGluIHRoZSBjdXJyZW50IGNlbnR1cnkuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICogQGV4YW1wbGUgU2V0dGluZ3MudHdvRGlnaXRDdXRvZmZZZWFyID0gMCAvLyBjdXQtb2ZmIHllYXIgaXMgMCwgc28gYWxsICd5eScgYXJlIGludGVycHJldGVkIGFzIGN1cnJlbnQgY2VudHVyeQogICAgICogQGV4YW1wbGUgU2V0dGluZ3MudHdvRGlnaXRDdXRvZmZZZWFyID0gNTAgLy8gJzQ5JyAtPiAxOTQ5OyAnNTAnIC0+IDIwNTAKICAgICAqIEBleGFtcGxlIFNldHRpbmdzLnR3b0RpZ2l0Q3V0b2ZmWWVhciA9IDE5NTAgLy8gaW50ZXJwcmV0ZWQgYXMgNTAKICAgICAqIEBleGFtcGxlIFNldHRpbmdzLnR3b0RpZ2l0Q3V0b2ZmWWVhciA9IDIwNTAgLy8gQUxTTyBpbnRlcnByZXRlZCBhcyA1MAogICAgICovCiAgICBzdGF0aWMgc2V0IHR3b0RpZ2l0Q3V0b2ZmWWVhcihjdXRvZmZZZWFyKSB7CiAgICAgIHR3b0RpZ2l0Q3V0b2ZmWWVhciA9IGN1dG9mZlllYXIgJSAxMDA7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciBMdXhvbiB3aWxsIHRocm93IHdoZW4gaXQgZW5jb3VudGVycyBpbnZhbGlkIERhdGVUaW1lcywgRHVyYXRpb25zLCBvciBJbnRlcnZhbHMKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBzdGF0aWMgZ2V0IHRocm93T25JbnZhbGlkKCkgewogICAgICByZXR1cm4gdGhyb3dPbkludmFsaWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgd2hldGhlciBMdXhvbiB3aWxsIHRocm93IHdoZW4gaXQgZW5jb3VudGVycyBpbnZhbGlkIERhdGVUaW1lcywgRHVyYXRpb25zLCBvciBJbnRlcnZhbHMKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBzdGF0aWMgc2V0IHRocm93T25JbnZhbGlkKHQpIHsKICAgICAgdGhyb3dPbkludmFsaWQgPSB0OwogICAgfQoKICAgIC8qKgogICAgICogUmVzZXQgTHV4b24ncyBnbG9iYWwgY2FjaGVzLiBTaG91bGQgb25seSBiZSBuZWNlc3NhcnkgaW4gdGVzdGluZyBzY2VuYXJpb3MuCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICovCiAgICBzdGF0aWMgcmVzZXRDYWNoZXMoKSB7CiAgICAgIExvY2FsZS5yZXNldENhY2hlKCk7CiAgICAgIElBTkFab25lLnJlc2V0Q2FjaGUoKTsKICAgIH0KICB9CgogIC8qCiAgICBUaGlzIGlzIGp1c3QgYSBqdW5rIGRyYXdlciwgY29udGFpbmluZyBhbnl0aGluZyB1c2VkIGFjcm9zcyBtdWx0aXBsZSBjbGFzc2VzLgogICAgQmVjYXVzZSBMdXhvbiBpcyBzbWFsbChpc2gpLCB0aGlzIHNob3VsZCBzdGF5IHNtYWxsIGFuZCB3ZSB3b24ndCB3b3JyeSBhYm91dCBzcGxpdHRpbmcKICAgIGl0IHVwIGludG8sIHNheSwgcGFyc2luZ1V0aWwuanMgYW5kIGJhc2ljVXRpbC5qcyBhbmQgc28gb24uIEJ1dCB0aGV5IGFyZSBkaXZpZGVkIHVwIGJ5IGZlYXR1cmUgYXJlYS4KICAqLwoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICAvLyBUWVBFUwoKICBmdW5jdGlvbiBpc1VuZGVmaW5lZChvKSB7CiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICJ1bmRlZmluZWQiOwogIH0KCiAgZnVuY3Rpb24gaXNOdW1iZXIobykgewogICAgcmV0dXJuIHR5cGVvZiBvID09PSAibnVtYmVyIjsKICB9CgogIGZ1bmN0aW9uIGlzSW50ZWdlcihvKSB7CiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICJudW1iZXIiICYmIG8gJSAxID09PSAwOwogIH0KCiAgZnVuY3Rpb24gaXNTdHJpbmcobykgewogICAgcmV0dXJuIHR5cGVvZiBvID09PSAic3RyaW5nIjsKICB9CgogIGZ1bmN0aW9uIGlzRGF0ZShvKSB7CiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pID09PSAiW29iamVjdCBEYXRlXSI7CiAgfQoKICAvLyBDQVBBQklMSVRJRVMKCiAgZnVuY3Rpb24gaGFzUmVsYXRpdmUoKSB7CiAgICB0cnkgewogICAgICByZXR1cm4gdHlwZW9mIEludGwgIT09ICJ1bmRlZmluZWQiICYmICEhSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQ7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9CgogIC8vIE9CSkVDVFMgQU5EIEFSUkFZUwoKICBmdW5jdGlvbiBtYXliZUFycmF5KHRoaW5nKSB7CiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGluZykgPyB0aGluZyA6IFt0aGluZ107CiAgfQoKICBmdW5jdGlvbiBiZXN0QnkoYXJyLCBieSwgY29tcGFyZSkgewogICAgaWYgKGFyci5sZW5ndGggPT09IDApIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0KICAgIHJldHVybiBhcnIucmVkdWNlKChiZXN0LCBuZXh0KSA9PiB7CiAgICAgIGNvbnN0IHBhaXIgPSBbYnkobmV4dCksIG5leHRdOwogICAgICBpZiAoIWJlc3QpIHsKICAgICAgICByZXR1cm4gcGFpcjsKICAgICAgfSBlbHNlIGlmIChjb21wYXJlKGJlc3RbMF0sIHBhaXJbMF0pID09PSBiZXN0WzBdKSB7CiAgICAgICAgcmV0dXJuIGJlc3Q7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHBhaXI7CiAgICAgIH0KICAgIH0sIG51bGwpWzFdOwogIH0KCiAgZnVuY3Rpb24gcGljayhvYmosIGtleXMpIHsKICAgIHJldHVybiBrZXlzLnJlZHVjZSgoYSwgaykgPT4gewogICAgICBhW2tdID0gb2JqW2tdOwogICAgICByZXR1cm4gYTsKICAgIH0sIHt9KTsKICB9CgogIGZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkgewogICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOwogIH0KCiAgLy8gTlVNQkVSUyBBTkQgU1RSSU5HUwoKICBmdW5jdGlvbiBpbnRlZ2VyQmV0d2Vlbih0aGluZywgYm90dG9tLCB0b3ApIHsKICAgIHJldHVybiBpc0ludGVnZXIodGhpbmcpICYmIHRoaW5nID49IGJvdHRvbSAmJiB0aGluZyA8PSB0b3A7CiAgfQoKICAvLyB4ICUgbiBidXQgdGFrZXMgdGhlIHNpZ24gb2YgbiBpbnN0ZWFkIG9mIHgKICBmdW5jdGlvbiBmbG9vck1vZCh4LCBuKSB7CiAgICByZXR1cm4geCAtIG4gKiBNYXRoLmZsb29yKHggLyBuKTsKICB9CgogIGZ1bmN0aW9uIHBhZFN0YXJ0KGlucHV0LCBuID0gMikgewogICAgY29uc3QgaXNOZWcgPSBpbnB1dCA8IDA7CiAgICBsZXQgcGFkZGVkOwogICAgaWYgKGlzTmVnKSB7CiAgICAgIHBhZGRlZCA9ICItIiArICgiIiArIC1pbnB1dCkucGFkU3RhcnQobiwgIjAiKTsKICAgIH0gZWxzZSB7CiAgICAgIHBhZGRlZCA9ICgiIiArIGlucHV0KS5wYWRTdGFydChuLCAiMCIpOwogICAgfQogICAgcmV0dXJuIHBhZGRlZDsKICB9CgogIGZ1bmN0aW9uIHBhcnNlSW50ZWdlcihzdHJpbmcpIHsKICAgIGlmIChpc1VuZGVmaW5lZChzdHJpbmcpIHx8IHN0cmluZyA9PT0gbnVsbCB8fCBzdHJpbmcgPT09ICIiKSB7CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gcGFyc2VJbnQoc3RyaW5nLCAxMCk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBwYXJzZUZsb2F0aW5nKHN0cmluZykgewogICAgaWYgKGlzVW5kZWZpbmVkKHN0cmluZykgfHwgc3RyaW5nID09PSBudWxsIHx8IHN0cmluZyA9PT0gIiIpIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBwYXJzZUZsb2F0KHN0cmluZyk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBwYXJzZU1pbGxpcyhmcmFjdGlvbikgewogICAgLy8gUmV0dXJuIHVuZGVmaW5lZCAoaW5zdGVhZCBvZiAwKSBpbiB0aGVzZSBjYXNlcywgd2hlcmUgZnJhY3Rpb24gaXMgbm90IHNldAogICAgaWYgKGlzVW5kZWZpbmVkKGZyYWN0aW9uKSB8fCBmcmFjdGlvbiA9PT0gbnVsbCB8fCBmcmFjdGlvbiA9PT0gIiIpIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0gZWxzZSB7CiAgICAgIGNvbnN0IGYgPSBwYXJzZUZsb2F0KCIwLiIgKyBmcmFjdGlvbikgKiAxMDAwOwogICAgICByZXR1cm4gTWF0aC5mbG9vcihmKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHJvdW5kVG8obnVtYmVyLCBkaWdpdHMsIHRvd2FyZFplcm8gPSBmYWxzZSkgewogICAgY29uc3QgZmFjdG9yID0gMTAgKiogZGlnaXRzLAogICAgICByb3VuZGVyID0gdG93YXJkWmVybyA/IE1hdGgudHJ1bmMgOiBNYXRoLnJvdW5kOwogICAgcmV0dXJuIHJvdW5kZXIobnVtYmVyICogZmFjdG9yKSAvIGZhY3RvcjsKICB9CgogIC8vIERBVEUgQkFTSUNTCgogIGZ1bmN0aW9uIGlzTGVhcFllYXIoeWVhcikgewogICAgcmV0dXJuIHllYXIgJSA0ID09PSAwICYmICh5ZWFyICUgMTAwICE9PSAwIHx8IHllYXIgJSA0MDAgPT09IDApOwogIH0KCiAgZnVuY3Rpb24gZGF5c0luWWVhcih5ZWFyKSB7CiAgICByZXR1cm4gaXNMZWFwWWVhcih5ZWFyKSA/IDM2NiA6IDM2NTsKICB9CgogIGZ1bmN0aW9uIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSB7CiAgICBjb25zdCBtb2RNb250aCA9IGZsb29yTW9kKG1vbnRoIC0gMSwgMTIpICsgMSwKICAgICAgbW9kWWVhciA9IHllYXIgKyAobW9udGggLSBtb2RNb250aCkgLyAxMjsKCiAgICBpZiAobW9kTW9udGggPT09IDIpIHsKICAgICAgcmV0dXJuIGlzTGVhcFllYXIobW9kWWVhcikgPyAyOSA6IDI4OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIFszMSwgbnVsbCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdW21vZE1vbnRoIC0gMV07CiAgICB9CiAgfQoKICAvLyBjb252ZXJ0IGEgY2FsZW5kYXIgb2JqZWN0IHRvIGEgbG9jYWwgdGltZXN0YW1wIChlcG9jaCwgYnV0IHdpdGggdGhlIG9mZnNldCBiYWtlZCBpbikKICBmdW5jdGlvbiBvYmpUb0xvY2FsVFMob2JqKSB7CiAgICBsZXQgZCA9IERhdGUuVVRDKAogICAgICBvYmoueWVhciwKICAgICAgb2JqLm1vbnRoIC0gMSwKICAgICAgb2JqLmRheSwKICAgICAgb2JqLmhvdXIsCiAgICAgIG9iai5taW51dGUsCiAgICAgIG9iai5zZWNvbmQsCiAgICAgIG9iai5taWxsaXNlY29uZAogICAgKTsKCiAgICAvLyBmb3IgbGVnYWN5IHJlYXNvbnMsIHllYXJzIGJldHdlZW4gMCBhbmQgOTkgYXJlIGludGVycHJldGVkIGFzIDE5WFg7IHJldmVydCB0aGF0CiAgICBpZiAob2JqLnllYXIgPCAxMDAgJiYgb2JqLnllYXIgPj0gMCkgewogICAgICBkID0gbmV3IERhdGUoZCk7CiAgICAgIC8vIHNldCB0aGUgbW9udGggYW5kIGRheSBhZ2FpbiwgdGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB5ZWFyIDIwMDAgaXMgYSBsZWFwIHllYXIsIGJ1dCB5ZWFyIDEwMCBpcyBub3QKICAgICAgLy8gc28gaWYgb2JqLnllYXIgaXMgaW4gOTksIGJ1dCBvYmouZGF5IG1ha2VzIGl0IHJvbGwgb3ZlciBpbnRvIHllYXIgMTAwLAogICAgICAvLyB0aGUgY2FsY3VsYXRpb25zIGRvbmUgYnkgRGF0ZS5VVEMgYXJlIHVzaW5nIHllYXIgMjAwMCAtIHdoaWNoIGlzIGluY29ycmVjdAogICAgICBkLnNldFVUQ0Z1bGxZZWFyKG9iai55ZWFyLCBvYmoubW9udGggLSAxLCBvYmouZGF5KTsKICAgIH0KICAgIHJldHVybiArZDsKICB9CgogIGZ1bmN0aW9uIHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcikgewogICAgY29uc3QgcDEgPQogICAgICAgICh3ZWVrWWVhciArCiAgICAgICAgICBNYXRoLmZsb29yKHdlZWtZZWFyIC8gNCkgLQogICAgICAgICAgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDEwMCkgKwogICAgICAgICAgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDQwMCkpICUKICAgICAgICA3LAogICAgICBsYXN0ID0gd2Vla1llYXIgLSAxLAogICAgICBwMiA9IChsYXN0ICsgTWF0aC5mbG9vcihsYXN0IC8gNCkgLSBNYXRoLmZsb29yKGxhc3QgLyAxMDApICsgTWF0aC5mbG9vcihsYXN0IC8gNDAwKSkgJSA3OwogICAgcmV0dXJuIHAxID09PSA0IHx8IHAyID09PSAzID8gNTMgOiA1MjsKICB9CgogIGZ1bmN0aW9uIHVudHJ1bmNhdGVZZWFyKHllYXIpIHsKICAgIGlmICh5ZWFyID4gOTkpIHsKICAgICAgcmV0dXJuIHllYXI7CiAgICB9IGVsc2UgcmV0dXJuIHllYXIgPiBTZXR0aW5ncy50d29EaWdpdEN1dG9mZlllYXIgPyAxOTAwICsgeWVhciA6IDIwMDAgKyB5ZWFyOwogIH0KCiAgLy8gUEFSU0lORwoKICBmdW5jdGlvbiBwYXJzZVpvbmVJbmZvKHRzLCBvZmZzZXRGb3JtYXQsIGxvY2FsZSwgdGltZVpvbmUgPSBudWxsKSB7CiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodHMpLAogICAgICBpbnRsT3B0cyA9IHsKICAgICAgICBob3VyQ3ljbGU6ICJoMjMiLAogICAgICAgIHllYXI6ICJudW1lcmljIiwKICAgICAgICBtb250aDogIjItZGlnaXQiLAogICAgICAgIGRheTogIjItZGlnaXQiLAogICAgICAgIGhvdXI6ICIyLWRpZ2l0IiwKICAgICAgICBtaW51dGU6ICIyLWRpZ2l0IiwKICAgICAgfTsKCiAgICBpZiAodGltZVpvbmUpIHsKICAgICAgaW50bE9wdHMudGltZVpvbmUgPSB0aW1lWm9uZTsKICAgIH0KCiAgICBjb25zdCBtb2RpZmllZCA9IHsgdGltZVpvbmVOYW1lOiBvZmZzZXRGb3JtYXQsIC4uLmludGxPcHRzIH07CgogICAgY29uc3QgcGFyc2VkID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCBtb2RpZmllZCkKICAgICAgLmZvcm1hdFRvUGFydHMoZGF0ZSkKICAgICAgLmZpbmQoKG0pID0+IG0udHlwZS50b0xvd2VyQ2FzZSgpID09PSAidGltZXpvbmVuYW1lIik7CiAgICByZXR1cm4gcGFyc2VkID8gcGFyc2VkLnZhbHVlIDogbnVsbDsKICB9CgogIC8vIHNpZ25lZE9mZnNldCgnLTUnLCAnMzAnKSAtPiAtMzMwCiAgZnVuY3Rpb24gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cikgewogICAgbGV0IG9mZkhvdXIgPSBwYXJzZUludChvZmZIb3VyU3RyLCAxMCk7CgogICAgLy8gZG9uJ3QgfHwgdGhpcyBiZWNhdXNlIHdlIHdhbnQgdG8gcHJlc2VydmUgLTAKICAgIGlmIChOdW1iZXIuaXNOYU4ob2ZmSG91cikpIHsKICAgICAgb2ZmSG91ciA9IDA7CiAgICB9CgogICAgY29uc3Qgb2ZmTWluID0gcGFyc2VJbnQob2ZmTWludXRlU3RyLCAxMCkgfHwgMCwKICAgICAgb2ZmTWluU2lnbmVkID0gb2ZmSG91ciA8IDAgfHwgT2JqZWN0LmlzKG9mZkhvdXIsIC0wKSA/IC1vZmZNaW4gOiBvZmZNaW47CiAgICByZXR1cm4gb2ZmSG91ciAqIDYwICsgb2ZmTWluU2lnbmVkOwogIH0KCiAgLy8gQ09FUkNJT04KCiAgZnVuY3Rpb24gYXNOdW1iZXIodmFsdWUpIHsKICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IE51bWJlcih2YWx1ZSk7CiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAiYm9vbGVhbiIgfHwgdmFsdWUgPT09ICIiIHx8IE51bWJlci5pc05hTihudW1lcmljVmFsdWUpKQogICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoYEludmFsaWQgdW5pdCB2YWx1ZSAke3ZhbHVlfWApOwogICAgcmV0dXJuIG51bWVyaWNWYWx1ZTsKICB9CgogIGZ1bmN0aW9uIG5vcm1hbGl6ZU9iamVjdChvYmosIG5vcm1hbGl6ZXIpIHsKICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7fTsKICAgIGZvciAoY29uc3QgdSBpbiBvYmopIHsKICAgICAgaWYgKGhhc093blByb3BlcnR5KG9iaiwgdSkpIHsKICAgICAgICBjb25zdCB2ID0gb2JqW3VdOwogICAgICAgIGlmICh2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVsbCkgY29udGludWU7CiAgICAgICAgbm9ybWFsaXplZFtub3JtYWxpemVyKHUpXSA9IGFzTnVtYmVyKHYpOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gbm9ybWFsaXplZDsKICB9CgogIGZ1bmN0aW9uIGZvcm1hdE9mZnNldChvZmZzZXQsIGZvcm1hdCkgewogICAgY29uc3QgaG91cnMgPSBNYXRoLnRydW5jKE1hdGguYWJzKG9mZnNldCAvIDYwKSksCiAgICAgIG1pbnV0ZXMgPSBNYXRoLnRydW5jKE1hdGguYWJzKG9mZnNldCAlIDYwKSksCiAgICAgIHNpZ24gPSBvZmZzZXQgPj0gMCA/ICIrIiA6ICItIjsKCiAgICBzd2l0Y2ggKGZvcm1hdCkgewogICAgICBjYXNlICJzaG9ydCI6CiAgICAgICAgcmV0dXJuIGAke3NpZ259JHtwYWRTdGFydChob3VycywgMil9OiR7cGFkU3RhcnQobWludXRlcywgMil9YDsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gYCR7c2lnbn0ke2hvdXJzfSR7bWludXRlcyA+IDAgPyBgOiR7bWludXRlc31gIDogIiJ9YDsKICAgICAgY2FzZSAidGVjaGllIjoKICAgICAgICByZXR1cm4gYCR7c2lnbn0ke3BhZFN0YXJ0KGhvdXJzLCAyKX0ke3BhZFN0YXJ0KG1pbnV0ZXMsIDIpfWA7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFZhbHVlIGZvcm1hdCAke2Zvcm1hdH0gaXMgb3V0IG9mIHJhbmdlIGZvciBwcm9wZXJ0eSBmb3JtYXRgKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHRpbWVPYmplY3Qob2JqKSB7CiAgICByZXR1cm4gcGljayhvYmosIFsiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgIm1pbGxpc2Vjb25kIl0pOwogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY29uc3QgbW9udGhzTG9uZyA9IFsKICAgICJKYW51YXJ5IiwKICAgICJGZWJydWFyeSIsCiAgICAiTWFyY2giLAogICAgIkFwcmlsIiwKICAgICJNYXkiLAogICAgIkp1bmUiLAogICAgIkp1bHkiLAogICAgIkF1Z3VzdCIsCiAgICAiU2VwdGVtYmVyIiwKICAgICJPY3RvYmVyIiwKICAgICJOb3ZlbWJlciIsCiAgICAiRGVjZW1iZXIiLAogIF07CgogIGNvbnN0IG1vbnRoc1Nob3J0ID0gWwogICAgIkphbiIsCiAgICAiRmViIiwKICAgICJNYXIiLAogICAgIkFwciIsCiAgICAiTWF5IiwKICAgICJKdW4iLAogICAgIkp1bCIsCiAgICAiQXVnIiwKICAgICJTZXAiLAogICAgIk9jdCIsCiAgICAiTm92IiwKICAgICJEZWMiLAogIF07CgogIGNvbnN0IG1vbnRoc05hcnJvdyA9IFsiSiIsICJGIiwgIk0iLCAiQSIsICJNIiwgIkoiLCAiSiIsICJBIiwgIlMiLCAiTyIsICJOIiwgIkQiXTsKCiAgZnVuY3Rpb24gbW9udGhzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLm1vbnRoc05hcnJvd107CiAgICAgIGNhc2UgInNob3J0IjoKICAgICAgICByZXR1cm4gWy4uLm1vbnRoc1Nob3J0XTsKICAgICAgY2FzZSAibG9uZyI6CiAgICAgICAgcmV0dXJuIFsuLi5tb250aHNMb25nXTsKICAgICAgY2FzZSAibnVtZXJpYyI6CiAgICAgICAgcmV0dXJuIFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyIsICI4IiwgIjkiLCAiMTAiLCAiMTEiLCAiMTIiXTsKICAgICAgY2FzZSAiMi1kaWdpdCI6CiAgICAgICAgcmV0dXJuIFsiMDEiLCAiMDIiLCAiMDMiLCAiMDQiLCAiMDUiLCAiMDYiLCAiMDciLCAiMDgiLCAiMDkiLCAiMTAiLCAiMTEiLCAiMTIiXTsKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CgogIGNvbnN0IHdlZWtkYXlzTG9uZyA9IFsKICAgICJNb25kYXkiLAogICAgIlR1ZXNkYXkiLAogICAgIldlZG5lc2RheSIsCiAgICAiVGh1cnNkYXkiLAogICAgIkZyaWRheSIsCiAgICAiU2F0dXJkYXkiLAogICAgIlN1bmRheSIsCiAgXTsKCiAgY29uc3Qgd2Vla2RheXNTaG9ydCA9IFsiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiLCAiU3VuIl07CgogIGNvbnN0IHdlZWtkYXlzTmFycm93ID0gWyJNIiwgIlQiLCAiVyIsICJUIiwgIkYiLCAiUyIsICJTIl07CgogIGZ1bmN0aW9uIHdlZWtkYXlzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLndlZWtkYXlzTmFycm93XTsKICAgICAgY2FzZSAic2hvcnQiOgogICAgICAgIHJldHVybiBbLi4ud2Vla2RheXNTaG9ydF07CiAgICAgIGNhc2UgImxvbmciOgogICAgICAgIHJldHVybiBbLi4ud2Vla2RheXNMb25nXTsKICAgICAgY2FzZSAibnVtZXJpYyI6CiAgICAgICAgcmV0dXJuIFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyJdOwogICAgICBkZWZhdWx0OgogICAgICAgIHJldHVybiBudWxsOwogICAgfQogIH0KCiAgY29uc3QgbWVyaWRpZW1zID0gWyJBTSIsICJQTSJdOwoKICBjb25zdCBlcmFzTG9uZyA9IFsiQmVmb3JlIENocmlzdCIsICJBbm5vIERvbWluaSJdOwoKICBjb25zdCBlcmFzU2hvcnQgPSBbIkJDIiwgIkFEIl07CgogIGNvbnN0IGVyYXNOYXJyb3cgPSBbIkIiLCAiQSJdOwoKICBmdW5jdGlvbiBlcmFzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLmVyYXNOYXJyb3ddOwogICAgICBjYXNlICJzaG9ydCI6CiAgICAgICAgcmV0dXJuIFsuLi5lcmFzU2hvcnRdOwogICAgICBjYXNlICJsb25nIjoKICAgICAgICByZXR1cm4gWy4uLmVyYXNMb25nXTsKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CgogIGZ1bmN0aW9uIG1lcmlkaWVtRm9yRGF0ZVRpbWUoZHQpIHsKICAgIHJldHVybiBtZXJpZGllbXNbZHQuaG91ciA8IDEyID8gMCA6IDFdOwogIH0KCiAgZnVuY3Rpb24gd2Vla2RheUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIHsKICAgIHJldHVybiB3ZWVrZGF5cyhsZW5ndGgpW2R0LndlZWtkYXkgLSAxXTsKICB9CgogIGZ1bmN0aW9uIG1vbnRoRm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkgewogICAgcmV0dXJuIG1vbnRocyhsZW5ndGgpW2R0Lm1vbnRoIC0gMV07CiAgfQoKICBmdW5jdGlvbiBlcmFGb3JEYXRlVGltZShkdCwgbGVuZ3RoKSB7CiAgICByZXR1cm4gZXJhcyhsZW5ndGgpW2R0LnllYXIgPCAwID8gMCA6IDFdOwogIH0KCiAgZnVuY3Rpb24gZm9ybWF0UmVsYXRpdmVUaW1lKHVuaXQsIGNvdW50LCBudW1lcmljID0gImFsd2F5cyIsIG5hcnJvdyA9IGZhbHNlKSB7CiAgICBjb25zdCB1bml0cyA9IHsKICAgICAgeWVhcnM6IFsieWVhciIsICJ5ci4iXSwKICAgICAgcXVhcnRlcnM6IFsicXVhcnRlciIsICJxdHIuIl0sCiAgICAgIG1vbnRoczogWyJtb250aCIsICJtby4iXSwKICAgICAgd2Vla3M6IFsid2VlayIsICJ3ay4iXSwKICAgICAgZGF5czogWyJkYXkiLCAiZGF5IiwgImRheXMiXSwKICAgICAgaG91cnM6IFsiaG91ciIsICJoci4iXSwKICAgICAgbWludXRlczogWyJtaW51dGUiLCAibWluLiJdLAogICAgICBzZWNvbmRzOiBbInNlY29uZCIsICJzZWMuIl0sCiAgICB9OwoKICAgIGNvbnN0IGxhc3RhYmxlID0gWyJob3VycyIsICJtaW51dGVzIiwgInNlY29uZHMiXS5pbmRleE9mKHVuaXQpID09PSAtMTsKCiAgICBpZiAobnVtZXJpYyA9PT0gImF1dG8iICYmIGxhc3RhYmxlKSB7CiAgICAgIGNvbnN0IGlzRGF5ID0gdW5pdCA9PT0gImRheXMiOwogICAgICBzd2l0Y2ggKGNvdW50KSB7CiAgICAgICAgY2FzZSAxOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInRvbW9ycm93IiA6IGBuZXh0ICR7dW5pdHNbdW5pdF1bMF19YDsKICAgICAgICBjYXNlIC0xOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInllc3RlcmRheSIgOiBgbGFzdCAke3VuaXRzW3VuaXRdWzBdfWA7CiAgICAgICAgY2FzZSAwOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInRvZGF5IiA6IGB0aGlzICR7dW5pdHNbdW5pdF1bMF19YDsKICAgICAgfQogICAgfQoKICAgIGNvbnN0IGlzSW5QYXN0ID0gT2JqZWN0LmlzKGNvdW50LCAtMCkgfHwgY291bnQgPCAwLAogICAgICBmbXRWYWx1ZSA9IE1hdGguYWJzKGNvdW50KSwKICAgICAgc2luZ3VsYXIgPSBmbXRWYWx1ZSA9PT0gMSwKICAgICAgbGlsVW5pdHMgPSB1bml0c1t1bml0XSwKICAgICAgZm10VW5pdCA9IG5hcnJvdwogICAgICAgID8gc2luZ3VsYXIKICAgICAgICAgID8gbGlsVW5pdHNbMV0KICAgICAgICAgIDogbGlsVW5pdHNbMl0gfHwgbGlsVW5pdHNbMV0KICAgICAgICA6IHNpbmd1bGFyCiAgICAgICAgPyB1bml0c1t1bml0XVswXQogICAgICAgIDogdW5pdDsKICAgIHJldHVybiBpc0luUGFzdCA/IGAke2ZtdFZhbHVlfSAke2ZtdFVuaXR9IGFnb2AgOiBgaW4gJHtmbXRWYWx1ZX0gJHtmbXRVbml0fWA7CiAgfQoKICBmdW5jdGlvbiBzdHJpbmdpZnlUb2tlbnMoc3BsaXRzLCB0b2tlblRvU3RyaW5nKSB7CiAgICBsZXQgcyA9ICIiOwogICAgZm9yIChjb25zdCB0b2tlbiBvZiBzcGxpdHMpIHsKICAgICAgaWYgKHRva2VuLmxpdGVyYWwpIHsKICAgICAgICBzICs9IHRva2VuLnZhbDsKICAgICAgfSBlbHNlIHsKICAgICAgICBzICs9IHRva2VuVG9TdHJpbmcodG9rZW4udmFsKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHM7CiAgfQoKICBjb25zdCBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzID0gewogICAgRDogREFURV9TSE9SVCwKICAgIEREOiBEQVRFX01FRCwKICAgIERERDogREFURV9GVUxMLAogICAgRERERDogREFURV9IVUdFLAogICAgdDogVElNRV9TSU1QTEUsCiAgICB0dDogVElNRV9XSVRIX1NFQ09ORFMsCiAgICB0dHQ6IFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQsCiAgICB0dHR0OiBUSU1FX1dJVEhfTE9OR19PRkZTRVQsCiAgICBUOiBUSU1FXzI0X1NJTVBMRSwKICAgIFRUOiBUSU1FXzI0X1dJVEhfU0VDT05EUywKICAgIFRUVDogVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCwKICAgIFRUVFQ6IFRJTUVfMjRfV0lUSF9MT05HX09GRlNFVCwKICAgIGY6IERBVEVUSU1FX1NIT1JULAogICAgZmY6IERBVEVUSU1FX01FRCwKICAgIGZmZjogREFURVRJTUVfRlVMTCwKICAgIGZmZmY6IERBVEVUSU1FX0hVR0UsCiAgICBGOiBEQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFMsCiAgICBGRjogREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUywKICAgIEZGRjogREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMsCiAgICBGRkZGOiBEQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUywKICB9OwoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBjbGFzcyBGb3JtYXR0ZXIgewogICAgc3RhdGljIGNyZWF0ZShsb2NhbGUsIG9wdHMgPSB7fSkgewogICAgICByZXR1cm4gbmV3IEZvcm1hdHRlcihsb2NhbGUsIG9wdHMpOwogICAgfQoKICAgIHN0YXRpYyBwYXJzZUZvcm1hdChmbXQpIHsKICAgICAgLy8gd2hpdGUtc3BhY2UgaXMgYWx3YXlzIGNvbnNpZGVyZWQgYSBsaXRlcmFsIGluIHVzZXItcHJvdmlkZWQgZm9ybWF0cwogICAgICAvLyB0aGUgIiAiIHRva2VuIGhhcyBhIHNwZWNpYWwgbWVhbmluZyAoc2VlIHVuaXRGb3JUb2tlbikKCiAgICAgIGxldCBjdXJyZW50ID0gbnVsbCwKICAgICAgICBjdXJyZW50RnVsbCA9ICIiLAogICAgICAgIGJyYWNrZXRlZCA9IGZhbHNlOwogICAgICBjb25zdCBzcGxpdHMgPSBbXTsKICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmbXQubGVuZ3RoOyBpKyspIHsKICAgICAgICBjb25zdCBjID0gZm10LmNoYXJBdChpKTsKICAgICAgICBpZiAoYyA9PT0gIiciKSB7CiAgICAgICAgICBpZiAoY3VycmVudEZ1bGwubGVuZ3RoID4gMCkgewogICAgICAgICAgICBzcGxpdHMucHVzaCh7IGxpdGVyYWw6IGJyYWNrZXRlZCB8fCAvXlxzKyQvLnRlc3QoY3VycmVudEZ1bGwpLCB2YWw6IGN1cnJlbnRGdWxsIH0pOwogICAgICAgICAgfQogICAgICAgICAgY3VycmVudCA9IG51bGw7CiAgICAgICAgICBjdXJyZW50RnVsbCA9ICIiOwogICAgICAgICAgYnJhY2tldGVkID0gIWJyYWNrZXRlZDsKICAgICAgICB9IGVsc2UgaWYgKGJyYWNrZXRlZCkgewogICAgICAgICAgY3VycmVudEZ1bGwgKz0gYzsKICAgICAgICB9IGVsc2UgaWYgKGMgPT09IGN1cnJlbnQpIHsKICAgICAgICAgIGN1cnJlbnRGdWxsICs9IGM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGlmIChjdXJyZW50RnVsbC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIHNwbGl0cy5wdXNoKHsgbGl0ZXJhbDogL15ccyskLy50ZXN0KGN1cnJlbnRGdWxsKSwgdmFsOiBjdXJyZW50RnVsbCB9KTsKICAgICAgICAgIH0KICAgICAgICAgIGN1cnJlbnRGdWxsID0gYzsKICAgICAgICAgIGN1cnJlbnQgPSBjOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKGN1cnJlbnRGdWxsLmxlbmd0aCA+IDApIHsKICAgICAgICBzcGxpdHMucHVzaCh7IGxpdGVyYWw6IGJyYWNrZXRlZCB8fCAvXlxzKyQvLnRlc3QoY3VycmVudEZ1bGwpLCB2YWw6IGN1cnJlbnRGdWxsIH0pOwogICAgICB9CgogICAgICByZXR1cm4gc3BsaXRzOwogICAgfQoKICAgIHN0YXRpYyBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzKHRva2VuKSB7CiAgICAgIHJldHVybiBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzW3Rva2VuXTsKICAgIH0KCiAgICBjb25zdHJ1Y3Rvcihsb2NhbGUsIGZvcm1hdE9wdHMpIHsKICAgICAgdGhpcy5vcHRzID0gZm9ybWF0T3B0czsKICAgICAgdGhpcy5sb2MgPSBsb2NhbGU7CiAgICAgIHRoaXMuc3lzdGVtTG9jID0gbnVsbDsKICAgIH0KCiAgICBmb3JtYXRXaXRoU3lzdGVtRGVmYXVsdChkdCwgb3B0cykgewogICAgICBpZiAodGhpcy5zeXN0ZW1Mb2MgPT09IG51bGwpIHsKICAgICAgICB0aGlzLnN5c3RlbUxvYyA9IHRoaXMubG9jLnJlZGVmYXVsdFRvU3lzdGVtKCk7CiAgICAgIH0KICAgICAgY29uc3QgZGYgPSB0aGlzLnN5c3RlbUxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7CiAgICAgIHJldHVybiBkZi5mb3JtYXQoKTsKICAgIH0KCiAgICBkdEZvcm1hdHRlcihkdCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7CiAgICB9CgogICAgZm9ybWF0RGF0ZVRpbWUoZHQsIG9wdHMpIHsKICAgICAgcmV0dXJuIHRoaXMuZHRGb3JtYXR0ZXIoZHQsIG9wdHMpLmZvcm1hdCgpOwogICAgfQoKICAgIGZvcm1hdERhdGVUaW1lUGFydHMoZHQsIG9wdHMpIHsKICAgICAgcmV0dXJuIHRoaXMuZHRGb3JtYXR0ZXIoZHQsIG9wdHMpLmZvcm1hdFRvUGFydHMoKTsKICAgIH0KCiAgICBmb3JtYXRJbnRlcnZhbChpbnRlcnZhbCwgb3B0cykgewogICAgICBjb25zdCBkZiA9IHRoaXMuZHRGb3JtYXR0ZXIoaW50ZXJ2YWwuc3RhcnQsIG9wdHMpOwogICAgICByZXR1cm4gZGYuZHRmLmZvcm1hdFJhbmdlKGludGVydmFsLnN0YXJ0LnRvSlNEYXRlKCksIGludGVydmFsLmVuZC50b0pTRGF0ZSgpKTsKICAgIH0KCiAgICByZXNvbHZlZE9wdGlvbnMoZHQsIG9wdHMpIHsKICAgICAgcmV0dXJuIHRoaXMuZHRGb3JtYXR0ZXIoZHQsIG9wdHMpLnJlc29sdmVkT3B0aW9ucygpOwogICAgfQoKICAgIG51bShuLCBwID0gMCkgewogICAgICAvLyB3ZSBnZXQgc29tZSBwZXJmIG91dCBvZiBkb2luZyB0aGlzIGhlcmUsIGFubm95aW5nbHkKICAgICAgaWYgKHRoaXMub3B0cy5mb3JjZVNpbXBsZSkgewogICAgICAgIHJldHVybiBwYWRTdGFydChuLCBwKTsKICAgICAgfQoKICAgICAgY29uc3Qgb3B0cyA9IHsgLi4udGhpcy5vcHRzIH07CgogICAgICBpZiAocCA+IDApIHsKICAgICAgICBvcHRzLnBhZFRvID0gcDsKICAgICAgfQoKICAgICAgcmV0dXJuIHRoaXMubG9jLm51bWJlckZvcm1hdHRlcihvcHRzKS5mb3JtYXQobik7CiAgICB9CgogICAgZm9ybWF0RGF0ZVRpbWVGcm9tU3RyaW5nKGR0LCBmbXQpIHsKICAgICAgY29uc3Qga25vd25FbmdsaXNoID0gdGhpcy5sb2MubGlzdGluZ01vZGUoKSA9PT0gImVuIiwKICAgICAgICB1c2VEYXRlVGltZUZvcm1hdHRlciA9IHRoaXMubG9jLm91dHB1dENhbGVuZGFyICYmIHRoaXMubG9jLm91dHB1dENhbGVuZGFyICE9PSAiZ3JlZ29yeSIsCiAgICAgICAgc3RyaW5nID0gKG9wdHMsIGV4dHJhY3QpID0+IHRoaXMubG9jLmV4dHJhY3QoZHQsIG9wdHMsIGV4dHJhY3QpLAogICAgICAgIGZvcm1hdE9mZnNldCA9IChvcHRzKSA9PiB7CiAgICAgICAgICBpZiAoZHQuaXNPZmZzZXRGaXhlZCAmJiBkdC5vZmZzZXQgPT09IDAgJiYgb3B0cy5hbGxvd1opIHsKICAgICAgICAgICAgcmV0dXJuICJaIjsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gZHQuaXNWYWxpZCA/IGR0LnpvbmUuZm9ybWF0T2Zmc2V0KGR0LnRzLCBvcHRzLmZvcm1hdCkgOiAiIjsKICAgICAgICB9LAogICAgICAgIG1lcmlkaWVtID0gKCkgPT4KICAgICAgICAgIGtub3duRW5nbGlzaAogICAgICAgICAgICA/IG1lcmlkaWVtRm9yRGF0ZVRpbWUoZHQpCiAgICAgICAgICAgIDogc3RyaW5nKHsgaG91cjogIm51bWVyaWMiLCBob3VyQ3ljbGU6ICJoMTIiIH0sICJkYXlwZXJpb2QiKSwKICAgICAgICBtb250aCA9IChsZW5ndGgsIHN0YW5kYWxvbmUpID0+CiAgICAgICAgICBrbm93bkVuZ2xpc2gKICAgICAgICAgICAgPyBtb250aEZvckRhdGVUaW1lKGR0LCBsZW5ndGgpCiAgICAgICAgICAgIDogc3RyaW5nKHN0YW5kYWxvbmUgPyB7IG1vbnRoOiBsZW5ndGggfSA6IHsgbW9udGg6IGxlbmd0aCwgZGF5OiAibnVtZXJpYyIgfSwgIm1vbnRoIiksCiAgICAgICAgd2Vla2RheSA9IChsZW5ndGgsIHN0YW5kYWxvbmUpID0+CiAgICAgICAgICBrbm93bkVuZ2xpc2gKICAgICAgICAgICAgPyB3ZWVrZGF5Rm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkKICAgICAgICAgICAgOiBzdHJpbmcoCiAgICAgICAgICAgICAgICBzdGFuZGFsb25lID8geyB3ZWVrZGF5OiBsZW5ndGggfSA6IHsgd2Vla2RheTogbGVuZ3RoLCBtb250aDogImxvbmciLCBkYXk6ICJudW1lcmljIiB9LAogICAgICAgICAgICAgICAgIndlZWtkYXkiCiAgICAgICAgICAgICAgKSwKICAgICAgICBtYXliZU1hY3JvID0gKHRva2VuKSA9PiB7CiAgICAgICAgICBjb25zdCBmb3JtYXRPcHRzID0gRm9ybWF0dGVyLm1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4pOwogICAgICAgICAgaWYgKGZvcm1hdE9wdHMpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0V2l0aFN5c3RlbURlZmF1bHQoZHQsIGZvcm1hdE9wdHMpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgZXJhID0gKGxlbmd0aCkgPT4KICAgICAgICAgIGtub3duRW5nbGlzaCA/IGVyYUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIDogc3RyaW5nKHsgZXJhOiBsZW5ndGggfSwgImVyYSIpLAogICAgICAgIHRva2VuVG9TdHJpbmcgPSAodG9rZW4pID0+IHsKICAgICAgICAgIC8vIFdoZXJlIHBvc3NpYmxlOiBodHRwczovL2NsZHIudW5pY29kZS5vcmcvdHJhbnNsYXRpb24vZGF0ZS10aW1lL2RhdGUtdGltZS1zeW1ib2xzCiAgICAgICAgICBzd2l0Y2ggKHRva2VuKSB7CiAgICAgICAgICAgIC8vIG1zCiAgICAgICAgICAgIGNhc2UgIlMiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taWxsaXNlY29uZCk7CiAgICAgICAgICAgIGNhc2UgInUiOgogICAgICAgICAgICAvLyBmYWxscyB0aHJvdWdoCiAgICAgICAgICAgIGNhc2UgIlNTUyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbGxpc2Vjb25kLCAzKTsKICAgICAgICAgICAgLy8gc2Vjb25kcwogICAgICAgICAgICBjYXNlICJzIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuc2Vjb25kKTsKICAgICAgICAgICAgY2FzZSAic3MiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5zZWNvbmQsIDIpOwogICAgICAgICAgICAvLyBmcmFjdGlvbmFsIHNlY29uZHMKICAgICAgICAgICAgY2FzZSAidXUiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShNYXRoLmZsb29yKGR0Lm1pbGxpc2Vjb25kIC8gMTApLCAyKTsKICAgICAgICAgICAgY2FzZSAidXV1IjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC5taWxsaXNlY29uZCAvIDEwMCkpOwogICAgICAgICAgICAvLyBtaW51dGVzCiAgICAgICAgICAgIGNhc2UgIm0iOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taW51dGUpOwogICAgICAgICAgICBjYXNlICJtbSI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbnV0ZSwgMik7CiAgICAgICAgICAgIC8vIGhvdXJzCiAgICAgICAgICAgIGNhc2UgImgiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5ob3VyICUgMTIgPT09IDAgPyAxMiA6IGR0LmhvdXIgJSAxMik7CiAgICAgICAgICAgIGNhc2UgImhoIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91ciAlIDEyID09PSAwID8gMTIgOiBkdC5ob3VyICUgMTIsIDIpOwogICAgICAgICAgICBjYXNlICJIIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91cik7CiAgICAgICAgICAgIGNhc2UgIkhIIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91ciwgMik7CiAgICAgICAgICAgIC8vIG9mZnNldAogICAgICAgICAgICBjYXNlICJaIjoKICAgICAgICAgICAgICAvLyBsaWtlICs2CiAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7IGZvcm1hdDogIm5hcnJvdyIsIGFsbG93WjogdGhpcy5vcHRzLmFsbG93WiB9KTsKICAgICAgICAgICAgY2FzZSAiWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgKzA2OjAwCiAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7IGZvcm1hdDogInNob3J0IiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pOwogICAgICAgICAgICBjYXNlICJaWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgKzA2MDAKICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHsgZm9ybWF0OiAidGVjaGllIiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pOwogICAgICAgICAgICBjYXNlICJaWlpaIjoKICAgICAgICAgICAgICAvLyBsaWtlIEVTVAogICAgICAgICAgICAgIHJldHVybiBkdC56b25lLm9mZnNldE5hbWUoZHQudHMsIHsgZm9ybWF0OiAic2hvcnQiLCBsb2NhbGU6IHRoaXMubG9jLmxvY2FsZSB9KTsKICAgICAgICAgICAgY2FzZSAiWlpaWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgRWFzdGVybiBTdGFuZGFyZCBUaW1lCiAgICAgICAgICAgICAgcmV0dXJuIGR0LnpvbmUub2Zmc2V0TmFtZShkdC50cywgeyBmb3JtYXQ6ICJsb25nIiwgbG9jYWxlOiB0aGlzLmxvYy5sb2NhbGUgfSk7CiAgICAgICAgICAgIC8vIHpvbmUKICAgICAgICAgICAgY2FzZSAieiI6CiAgICAgICAgICAgICAgLy8gbGlrZSBBbWVyaWNhL05ld19Zb3JrCiAgICAgICAgICAgICAgcmV0dXJuIGR0LnpvbmVOYW1lOwogICAgICAgICAgICAvLyBtZXJpZGllbXMKICAgICAgICAgICAgY2FzZSAiYSI6CiAgICAgICAgICAgICAgcmV0dXJuIG1lcmlkaWVtKCk7CiAgICAgICAgICAgIC8vIGRhdGVzCiAgICAgICAgICAgIGNhc2UgImQiOgogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlciA/IHN0cmluZyh7IGRheTogIm51bWVyaWMiIH0sICJkYXkiKSA6IHRoaXMubnVtKGR0LmRheSk7CiAgICAgICAgICAgIGNhc2UgImRkIjoKICAgICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoeyBkYXk6ICIyLWRpZ2l0IiB9LCAiZGF5IikgOiB0aGlzLm51bShkdC5kYXksIDIpOwogICAgICAgICAgICAvLyB3ZWVrZGF5cyAtIHN0YW5kYWxvbmUKICAgICAgICAgICAgY2FzZSAiYyI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtkYXkpOwogICAgICAgICAgICBjYXNlICJjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXMnCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoInNob3J0IiwgdHJ1ZSk7CiAgICAgICAgICAgIGNhc2UgImNjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXNkYXknCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoImxvbmciLCB0cnVlKTsKICAgICAgICAgICAgY2FzZSAiY2NjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1QnCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoIm5hcnJvdyIsIHRydWUpOwogICAgICAgICAgICAvLyB3ZWVrZGF5cyAtIGZvcm1hdAogICAgICAgICAgICBjYXNlICJFIjoKICAgICAgICAgICAgICAvLyBsaWtlIDEKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla2RheSk7CiAgICAgICAgICAgIGNhc2UgIkVFRSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAnVHVlcycKICAgICAgICAgICAgICByZXR1cm4gd2Vla2RheSgic2hvcnQiLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIkVFRUUiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXNkYXknCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoImxvbmciLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIkVFRUVFIjoKICAgICAgICAgICAgICAvLyBsaWtlICdUJwogICAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5KCJuYXJyb3ciLCBmYWxzZSk7CiAgICAgICAgICAgIC8vIG1vbnRocyAtIHN0YW5kYWxvbmUKICAgICAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAibnVtZXJpYyIsIGRheTogIm51bWVyaWMiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoKTsKICAgICAgICAgICAgY2FzZSAiTEwiOgogICAgICAgICAgICAgIC8vIGxpa2UgMDEsIGRvZXNuJ3Qgc2VlbSB0byB3b3JrCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAiMi1kaWdpdCIsIGRheTogIm51bWVyaWMiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoLCAyKTsKICAgICAgICAgICAgY2FzZSAiTExMIjoKICAgICAgICAgICAgICAvLyBsaWtlIEphbgogICAgICAgICAgICAgIHJldHVybiBtb250aCgic2hvcnQiLCB0cnVlKTsKICAgICAgICAgICAgY2FzZSAiTExMTCI6CiAgICAgICAgICAgICAgLy8gbGlrZSBKYW51YXJ5CiAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoKCJsb25nIiwgdHJ1ZSk7CiAgICAgICAgICAgIGNhc2UgIkxMTExMIjoKICAgICAgICAgICAgICAvLyBsaWtlIEoKICAgICAgICAgICAgICByZXR1cm4gbW9udGgoIm5hcnJvdyIsIHRydWUpOwogICAgICAgICAgICAvLyBtb250aHMgLSBmb3JtYXQKICAgICAgICAgICAgY2FzZSAiTSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAibnVtZXJpYyIgfSwgIm1vbnRoIikKICAgICAgICAgICAgICAgIDogdGhpcy5udW0oZHQubW9udGgpOwogICAgICAgICAgICBjYXNlICJNTSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAwMQogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlcgogICAgICAgICAgICAgICAgPyBzdHJpbmcoeyBtb250aDogIjItZGlnaXQiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoLCAyKTsKICAgICAgICAgICAgY2FzZSAiTU1NIjoKICAgICAgICAgICAgICAvLyBsaWtlIEphbgogICAgICAgICAgICAgIHJldHVybiBtb250aCgic2hvcnQiLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIk1NTU0iOgogICAgICAgICAgICAgIC8vIGxpa2UgSmFudWFyeQogICAgICAgICAgICAgIHJldHVybiBtb250aCgibG9uZyIsIGZhbHNlKTsKICAgICAgICAgICAgY2FzZSAiTU1NTU0iOgogICAgICAgICAgICAgIC8vIGxpa2UgSgogICAgICAgICAgICAgIHJldHVybiBtb250aCgibmFycm93IiwgZmFsc2UpOwogICAgICAgICAgICAvLyB5ZWFycwogICAgICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgICAgICAvLyBsaWtlIDIwMTQKICAgICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoeyB5ZWFyOiAibnVtZXJpYyIgfSwgInllYXIiKSA6IHRoaXMubnVtKGR0LnllYXIpOwogICAgICAgICAgICBjYXNlICJ5eSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxNAogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlcgogICAgICAgICAgICAgICAgPyBzdHJpbmcoeyB5ZWFyOiAiMi1kaWdpdCIgfSwgInllYXIiKQogICAgICAgICAgICAgICAgOiB0aGlzLm51bShkdC55ZWFyLnRvU3RyaW5nKCkuc2xpY2UoLTIpLCAyKTsKICAgICAgICAgICAgY2FzZSAieXl5eSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAwMDEyCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IHllYXI6ICJudW1lcmljIiB9LCAieWVhciIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0LnllYXIsIDQpOwogICAgICAgICAgICBjYXNlICJ5eXl5eXkiOgogICAgICAgICAgICAgIC8vIGxpa2UgMDAwMDEyCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IHllYXI6ICJudW1lcmljIiB9LCAieWVhciIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0LnllYXIsIDYpOwogICAgICAgICAgICAvLyBlcmFzCiAgICAgICAgICAgIGNhc2UgIkciOgogICAgICAgICAgICAgIC8vIGxpa2UgQUQKICAgICAgICAgICAgICByZXR1cm4gZXJhKCJzaG9ydCIpOwogICAgICAgICAgICBjYXNlICJHRyI6CiAgICAgICAgICAgICAgLy8gbGlrZSBBbm5vIERvbWluaQogICAgICAgICAgICAgIHJldHVybiBlcmEoImxvbmciKTsKICAgICAgICAgICAgY2FzZSAiR0dHR0ciOgogICAgICAgICAgICAgIHJldHVybiBlcmEoIm5hcnJvdyIpOwogICAgICAgICAgICBjYXNlICJrayI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtZZWFyLnRvU3RyaW5nKCkuc2xpY2UoLTIpLCAyKTsKICAgICAgICAgICAgY2FzZSAia2trayI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtZZWFyLCA0KTsKICAgICAgICAgICAgY2FzZSAiVyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtOdW1iZXIpOwogICAgICAgICAgICBjYXNlICJXVyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtOdW1iZXIsIDIpOwogICAgICAgICAgICBjYXNlICJvIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQub3JkaW5hbCk7CiAgICAgICAgICAgIGNhc2UgIm9vbyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm9yZGluYWwsIDMpOwogICAgICAgICAgICBjYXNlICJxIjoKICAgICAgICAgICAgICAvLyBsaWtlIDEKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQucXVhcnRlcik7CiAgICAgICAgICAgIGNhc2UgInFxIjoKICAgICAgICAgICAgICAvLyBsaWtlIDAxCiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnF1YXJ0ZXIsIDIpOwogICAgICAgICAgICBjYXNlICJYIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC50cyAvIDEwMDApKTsKICAgICAgICAgICAgY2FzZSAieCI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnRzKTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICByZXR1cm4gbWF5YmVNYWNybyh0b2tlbik7CiAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgIHJldHVybiBzdHJpbmdpZnlUb2tlbnMoRm9ybWF0dGVyLnBhcnNlRm9ybWF0KGZtdCksIHRva2VuVG9TdHJpbmcpOwogICAgfQoKICAgIGZvcm1hdER1cmF0aW9uRnJvbVN0cmluZyhkdXIsIGZtdCkgewogICAgICBjb25zdCB0b2tlblRvRmllbGQgPSAodG9rZW4pID0+IHsKICAgICAgICAgIHN3aXRjaCAodG9rZW5bMF0pIHsKICAgICAgICAgICAgY2FzZSAiUyI6CiAgICAgICAgICAgICAgcmV0dXJuICJtaWxsaXNlY29uZCI7CiAgICAgICAgICAgIGNhc2UgInMiOgogICAgICAgICAgICAgIHJldHVybiAic2Vjb25kIjsKICAgICAgICAgICAgY2FzZSAibSI6CiAgICAgICAgICAgICAgcmV0dXJuICJtaW51dGUiOwogICAgICAgICAgICBjYXNlICJoIjoKICAgICAgICAgICAgICByZXR1cm4gImhvdXIiOwogICAgICAgICAgICBjYXNlICJkIjoKICAgICAgICAgICAgICByZXR1cm4gImRheSI7CiAgICAgICAgICAgIGNhc2UgInciOgogICAgICAgICAgICAgIHJldHVybiAid2VlayI7CiAgICAgICAgICAgIGNhc2UgIk0iOgogICAgICAgICAgICAgIHJldHVybiAibW9udGgiOwogICAgICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgICAgICByZXR1cm4gInllYXIiOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgdG9rZW5Ub1N0cmluZyA9IChsaWxkdXIpID0+ICh0b2tlbikgPT4gewogICAgICAgICAgY29uc3QgbWFwcGVkID0gdG9rZW5Ub0ZpZWxkKHRva2VuKTsKICAgICAgICAgIGlmIChtYXBwZWQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGxpbGR1ci5nZXQobWFwcGVkKSwgdG9rZW4ubGVuZ3RoKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHRva2VucyA9IEZvcm1hdHRlci5wYXJzZUZvcm1hdChmbXQpLAogICAgICAgIHJlYWxUb2tlbnMgPSB0b2tlbnMucmVkdWNlKAogICAgICAgICAgKGZvdW5kLCB7IGxpdGVyYWwsIHZhbCB9KSA9PiAobGl0ZXJhbCA/IGZvdW5kIDogZm91bmQuY29uY2F0KHZhbCkpLAogICAgICAgICAgW10KICAgICAgICApLAogICAgICAgIGNvbGxhcHNlZCA9IGR1ci5zaGlmdFRvKC4uLnJlYWxUb2tlbnMubWFwKHRva2VuVG9GaWVsZCkuZmlsdGVyKCh0KSA9PiB0KSk7CiAgICAgIHJldHVybiBzdHJpbmdpZnlUb2tlbnModG9rZW5zLCB0b2tlblRvU3RyaW5nKGNvbGxhcHNlZCkpOwogICAgfQogIH0KCiAgY2xhc3MgSW52YWxpZCB7CiAgICBjb25zdHJ1Y3RvcihyZWFzb24sIGV4cGxhbmF0aW9uKSB7CiAgICAgIHRoaXMucmVhc29uID0gcmVhc29uOwogICAgICB0aGlzLmV4cGxhbmF0aW9uID0gZXhwbGFuYXRpb247CiAgICB9CgogICAgdG9NZXNzYWdlKCkgewogICAgICBpZiAodGhpcy5leHBsYW5hdGlvbikgewogICAgICAgIHJldHVybiBgJHt0aGlzLnJlYXNvbn06ICR7dGhpcy5leHBsYW5hdGlvbn1gOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB0aGlzLnJlYXNvbjsKICAgICAgfQogICAgfQogIH0KCiAgLyoKICAgKiBUaGlzIGZpbGUgaGFuZGxlcyBwYXJzaW5nIGZvciB3ZWxsLXNwZWNpZmllZCBmb3JtYXRzLiBIZXJlJ3MgaG93IGl0IHdvcmtzOgogICAqIFR3byB0aGluZ3MgZ28gaW50byBwYXJzaW5nOiBhIHJlZ2V4IHRvIG1hdGNoIHdpdGggYW5kIGFuIGV4dHJhY3RvciB0byB0YWtlIGFwYXJ0IHRoZSBncm91cHMgaW4gdGhlIG1hdGNoLgogICAqIEFuIGV4dHJhY3RvciBpcyBqdXN0IGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHJlZ2V4IG1hdGNoIGFycmF5IGFuZCByZXR1cm5zIGEgeyB5ZWFyOiAuLi4sIG1vbnRoOiAuLi4gfSBvYmplY3QKICAgKiBwYXJzZSgpIGRvZXMgdGhlIHdvcmsgb2YgZXhlY3V0aW5nIHRoZSByZWdleCBhbmQgYXBwbHlpbmcgdGhlIGV4dHJhY3Rvci4gSXQgdGFrZXMgbXVsdGlwbGUgcmVnZXgvZXh0cmFjdG9yIHBhaXJzIHRvIHRyeSBpbiBzZXF1ZW5jZS4KICAgKiBFeHRyYWN0b3JzIGNhbiB0YWtlIGEgImN1cnNvciIgcmVwcmVzZW50aW5nIHRoZSBvZmZzZXQgaW4gdGhlIG1hdGNoIHRvIGxvb2sgYXQuIFRoaXMgbWFrZXMgaXQgZWFzeSB0byBjb21iaW5lIGV4dHJhY3RvcnMuCiAgICogY29tYmluZUV4dHJhY3RvcnMoKSBkb2VzIHRoZSB3b3JrIG9mIGNvbWJpbmluZyB0aGVtLCBrZWVwaW5nIHRyYWNrIG9mIHRoZSBjdXJzb3IgdGhyb3VnaCBtdWx0aXBsZSBleHRyYWN0aW9ucy4KICAgKiBTb21lIGV4dHJhY3Rpb25zIGFyZSBzdXBlciBkdW1iIGFuZCBzaW1wbGVQYXJzZSBhbmQgZnJvbVN0cmluZ3MgaGVscCBEUlkgdGhlbS4KICAgKi8KCiAgY29uc3QgaWFuYVJlZ2V4ID0gL1tBLVphLXpfKy1dezEsMjU2fSg/Ojo/XC9bQS1aYS16MC05XystXXsxLDI1Nn0oPzpcL1tBLVphLXowLTlfKy1dezEsMjU2fSk/KT8vOwoKICBmdW5jdGlvbiBjb21iaW5lUmVnZXhlcyguLi5yZWdleGVzKSB7CiAgICBjb25zdCBmdWxsID0gcmVnZXhlcy5yZWR1Y2UoKGYsIHIpID0+IGYgKyByLnNvdXJjZSwgIiIpOwogICAgcmV0dXJuIFJlZ0V4cChgXiR7ZnVsbH0kYCk7CiAgfQoKICBmdW5jdGlvbiBjb21iaW5lRXh0cmFjdG9ycyguLi5leHRyYWN0b3JzKSB7CiAgICByZXR1cm4gKG0pID0+CiAgICAgIGV4dHJhY3RvcnMKICAgICAgICAucmVkdWNlKAogICAgICAgICAgKFttZXJnZWRWYWxzLCBtZXJnZWRab25lLCBjdXJzb3JdLCBleCkgPT4gewogICAgICAgICAgICBjb25zdCBbdmFsLCB6b25lLCBuZXh0XSA9IGV4KG0sIGN1cnNvcik7CiAgICAgICAgICAgIHJldHVybiBbeyAuLi5tZXJnZWRWYWxzLCAuLi52YWwgfSwgem9uZSB8fCBtZXJnZWRab25lLCBuZXh0XTsKICAgICAgICAgIH0sCiAgICAgICAgICBbe30sIG51bGwsIDFdCiAgICAgICAgKQogICAgICAgIC5zbGljZSgwLCAyKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlKHMsIC4uLnBhdHRlcm5zKSB7CiAgICBpZiAocyA9PSBudWxsKSB7CiAgICAgIHJldHVybiBbbnVsbCwgbnVsbF07CiAgICB9CgogICAgZm9yIChjb25zdCBbcmVnZXgsIGV4dHJhY3Rvcl0gb2YgcGF0dGVybnMpIHsKICAgICAgY29uc3QgbSA9IHJlZ2V4LmV4ZWMocyk7CiAgICAgIGlmIChtKSB7CiAgICAgICAgcmV0dXJuIGV4dHJhY3RvcihtKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIFtudWxsLCBudWxsXTsKICB9CgogIGZ1bmN0aW9uIHNpbXBsZVBhcnNlKC4uLmtleXMpIHsKICAgIHJldHVybiAobWF0Y2gsIGN1cnNvcikgPT4gewogICAgICBjb25zdCByZXQgPSB7fTsKICAgICAgbGV0IGk7CgogICAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykgewogICAgICAgIHJldFtrZXlzW2ldXSA9IHBhcnNlSW50ZWdlcihtYXRjaFtjdXJzb3IgKyBpXSk7CiAgICAgIH0KICAgICAgcmV0dXJuIFtyZXQsIG51bGwsIGN1cnNvciArIGldOwogICAgfTsKICB9CgogIC8vIElTTyBhbmQgU1FMIHBhcnNpbmcKICBjb25zdCBvZmZzZXRSZWdleCA9IC8oPzooWil8KFsrLV1cZFxkKSg/Ojo/KFxkXGQpKT8pLzsKICBjb25zdCBpc29FeHRlbmRlZFpvbmUgPSBgKD86JHtvZmZzZXRSZWdleC5zb3VyY2V9Pyg/OlxcWygke2lhbmFSZWdleC5zb3VyY2V9KVxcXSk/KT9gOwogIGNvbnN0IGlzb1RpbWVCYXNlUmVnZXggPSAvKFxkXGQpKD86Oj8oXGRcZCkoPzo6PyhcZFxkKSg/OlsuLF0oXGR7MSwzMH0pKT8pPyk/LzsKICBjb25zdCBpc29UaW1lUmVnZXggPSBSZWdFeHAoYCR7aXNvVGltZUJhc2VSZWdleC5zb3VyY2V9JHtpc29FeHRlbmRlZFpvbmV9YCk7CiAgY29uc3QgaXNvVGltZUV4dGVuc2lvblJlZ2V4ID0gUmVnRXhwKGAoPzpUJHtpc29UaW1lUmVnZXguc291cmNlfSk/YCk7CiAgY29uc3QgaXNvWW1kUmVnZXggPSAvKFsrLV1cZHs2fXxcZHs0fSkoPzotPyhcZFxkKSg/Oi0/KFxkXGQpKT8pPy87CiAgY29uc3QgaXNvV2Vla1JlZ2V4ID0gLyhcZHs0fSktP1coXGRcZCkoPzotPyhcZCkpPy87CiAgY29uc3QgaXNvT3JkaW5hbFJlZ2V4ID0gLyhcZHs0fSktPyhcZHszfSkvOwogIGNvbnN0IGV4dHJhY3RJU09XZWVrRGF0YSA9IHNpbXBsZVBhcnNlKCJ3ZWVrWWVhciIsICJ3ZWVrTnVtYmVyIiwgIndlZWtEYXkiKTsKICBjb25zdCBleHRyYWN0SVNPT3JkaW5hbERhdGEgPSBzaW1wbGVQYXJzZSgieWVhciIsICJvcmRpbmFsIik7CiAgY29uc3Qgc3FsWW1kUmVnZXggPSAvKFxkezR9KS0oXGRcZCktKFxkXGQpLzsgLy8gZHVtYmVkLWRvd24gdmVyc2lvbiBvZiB0aGUgSVNPIG9uZQogIGNvbnN0IHNxbFRpbWVSZWdleCA9IFJlZ0V4cCgKICAgIGAke2lzb1RpbWVCYXNlUmVnZXguc291cmNlfSA/KD86JHtvZmZzZXRSZWdleC5zb3VyY2V9fCgke2lhbmFSZWdleC5zb3VyY2V9KSk/YAogICk7CiAgY29uc3Qgc3FsVGltZUV4dGVuc2lvblJlZ2V4ID0gUmVnRXhwKGAoPzogJHtzcWxUaW1lUmVnZXguc291cmNlfSk/YCk7CgogIGZ1bmN0aW9uIGludChtYXRjaCwgcG9zLCBmYWxsYmFjaykgewogICAgY29uc3QgbSA9IG1hdGNoW3Bvc107CiAgICByZXR1cm4gaXNVbmRlZmluZWQobSkgPyBmYWxsYmFjayA6IHBhcnNlSW50ZWdlcihtKTsKICB9CgogIGZ1bmN0aW9uIGV4dHJhY3RJU09ZbWQobWF0Y2gsIGN1cnNvcikgewogICAgY29uc3QgaXRlbSA9IHsKICAgICAgeWVhcjogaW50KG1hdGNoLCBjdXJzb3IpLAogICAgICBtb250aDogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAxKSwKICAgICAgZGF5OiBpbnQobWF0Y2gsIGN1cnNvciArIDIsIDEpLAogICAgfTsKCiAgICByZXR1cm4gW2l0ZW0sIG51bGwsIGN1cnNvciArIDNdOwogIH0KCiAgZnVuY3Rpb24gZXh0cmFjdElTT1RpbWUobWF0Y2gsIGN1cnNvcikgewogICAgY29uc3QgaXRlbSA9IHsKICAgICAgaG91cnM6IGludChtYXRjaCwgY3Vyc29yLCAwKSwKICAgICAgbWludXRlczogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAwKSwKICAgICAgc2Vjb25kczogaW50KG1hdGNoLCBjdXJzb3IgKyAyLCAwKSwKICAgICAgbWlsbGlzZWNvbmRzOiBwYXJzZU1pbGxpcyhtYXRjaFtjdXJzb3IgKyAzXSksCiAgICB9OwoKICAgIHJldHVybiBbaXRlbSwgbnVsbCwgY3Vyc29yICsgNF07CiAgfQoKICBmdW5jdGlvbiBleHRyYWN0SVNPT2Zmc2V0KG1hdGNoLCBjdXJzb3IpIHsKICAgIGNvbnN0IGxvY2FsID0gIW1hdGNoW2N1cnNvcl0gJiYgIW1hdGNoW2N1cnNvciArIDFdLAogICAgICBmdWxsT2Zmc2V0ID0gc2lnbmVkT2Zmc2V0KG1hdGNoW2N1cnNvciArIDFdLCBtYXRjaFtjdXJzb3IgKyAyXSksCiAgICAgIHpvbmUgPSBsb2NhbCA/IG51bGwgOiBGaXhlZE9mZnNldFpvbmUuaW5zdGFuY2UoZnVsbE9mZnNldCk7CiAgICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAzXTsKICB9CgogIGZ1bmN0aW9uIGV4dHJhY3RJQU5BWm9uZShtYXRjaCwgY3Vyc29yKSB7CiAgICBjb25zdCB6b25lID0gbWF0Y2hbY3Vyc29yXSA/IElBTkFab25lLmNyZWF0ZShtYXRjaFtjdXJzb3JdKSA6IG51bGw7CiAgICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAxXTsKICB9CgogIC8vIElTTyB0aW1lIHBhcnNpbmcKCiAgY29uc3QgaXNvVGltZU9ubHkgPSBSZWdFeHAoYF5UPyR7aXNvVGltZUJhc2VSZWdleC5zb3VyY2V9JGApOwoKICAvLyBJU08gZHVyYXRpb24gcGFyc2luZwoKICBjb25zdCBpc29EdXJhdGlvbiA9CiAgICAvXi0/UCg/Oig/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KVkpPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KU0pPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KVcpPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KUQpPyg/OlQoPzooLT9cZHsxLDIwfSg/OlwuXGR7MSwyMH0pPylIKT8oPzooLT9cZHsxLDIwfSg/OlwuXGR7MSwyMH0pPylNKT8oPzooLT9cZHsxLDIwfSkoPzpbLixdKC0/XGR7MSwyMH0pKT9TKT8pPykkLzsKCiAgZnVuY3Rpb24gZXh0cmFjdElTT0R1cmF0aW9uKG1hdGNoKSB7CiAgICBjb25zdCBbcywgeWVhclN0ciwgbW9udGhTdHIsIHdlZWtTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIsIG1pbGxpc2Vjb25kc1N0cl0gPQogICAgICBtYXRjaDsKCiAgICBjb25zdCBoYXNOZWdhdGl2ZVByZWZpeCA9IHNbMF0gPT09ICItIjsKICAgIGNvbnN0IG5lZ2F0aXZlU2Vjb25kcyA9IHNlY29uZFN0ciAmJiBzZWNvbmRTdHJbMF0gPT09ICItIjsKCiAgICBjb25zdCBtYXliZU5lZ2F0ZSA9IChudW0sIGZvcmNlID0gZmFsc2UpID0+CiAgICAgIG51bSAhPT0gdW5kZWZpbmVkICYmIChmb3JjZSB8fCAobnVtICYmIGhhc05lZ2F0aXZlUHJlZml4KSkgPyAtbnVtIDogbnVtOwoKICAgIHJldHVybiBbCiAgICAgIHsKICAgICAgICB5ZWFyczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyh5ZWFyU3RyKSksCiAgICAgICAgbW9udGhzOiBtYXliZU5lZ2F0ZShwYXJzZUZsb2F0aW5nKG1vbnRoU3RyKSksCiAgICAgICAgd2Vla3M6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcod2Vla1N0cikpLAogICAgICAgIGRheXM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoZGF5U3RyKSksCiAgICAgICAgaG91cnM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoaG91clN0cikpLAogICAgICAgIG1pbnV0ZXM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcobWludXRlU3RyKSksCiAgICAgICAgc2Vjb25kczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyhzZWNvbmRTdHIpLCBzZWNvbmRTdHIgPT09ICItMCIpLAogICAgICAgIG1pbGxpc2Vjb25kczogbWF5YmVOZWdhdGUocGFyc2VNaWxsaXMobWlsbGlzZWNvbmRzU3RyKSwgbmVnYXRpdmVTZWNvbmRzKSwKICAgICAgfSwKICAgIF07CiAgfQoKICAvLyBUaGVzZSBhcmUgYSBsaXR0bGUgYnJhaW5kZWFkLiBFRFQgKnNob3VsZCogdGVsbCB1cyB0aGF0IHdlJ3JlIGluLCBzYXksIEFtZXJpY2EvTmV3X1lvcmsKICAvLyBhbmQgbm90IGp1c3QgdGhhdCB3ZSdyZSBpbiAtMjQwICpyaWdodCBub3cqLiBCdXQgc2luY2UgSSBkb24ndCB0aGluayB0aGVzZSBhcmUgdXNlZCB0aGF0IG9mdGVuCiAgLy8gSSdtIGp1c3QgZ29pbmcgdG8gaWdub3JlIHRoYXQKICBjb25zdCBvYnNPZmZzZXRzID0gewogICAgR01UOiAwLAogICAgRURUOiAtNCAqIDYwLAogICAgRVNUOiAtNSAqIDYwLAogICAgQ0RUOiAtNSAqIDYwLAogICAgQ1NUOiAtNiAqIDYwLAogICAgTURUOiAtNiAqIDYwLAogICAgTVNUOiAtNyAqIDYwLAogICAgUERUOiAtNyAqIDYwLAogICAgUFNUOiAtOCAqIDYwLAogIH07CgogIGZ1bmN0aW9uIGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKSB7CiAgICBjb25zdCByZXN1bHQgPSB7CiAgICAgIHllYXI6IHllYXJTdHIubGVuZ3RoID09PSAyID8gdW50cnVuY2F0ZVllYXIocGFyc2VJbnRlZ2VyKHllYXJTdHIpKSA6IHBhcnNlSW50ZWdlcih5ZWFyU3RyKSwKICAgICAgbW9udGg6IG1vbnRoc1Nob3J0LmluZGV4T2YobW9udGhTdHIpICsgMSwKICAgICAgZGF5OiBwYXJzZUludGVnZXIoZGF5U3RyKSwKICAgICAgaG91cjogcGFyc2VJbnRlZ2VyKGhvdXJTdHIpLAogICAgICBtaW51dGU6IHBhcnNlSW50ZWdlcihtaW51dGVTdHIpLAogICAgfTsKCiAgICBpZiAoc2Vjb25kU3RyKSByZXN1bHQuc2Vjb25kID0gcGFyc2VJbnRlZ2VyKHNlY29uZFN0cik7CiAgICBpZiAod2Vla2RheVN0cikgewogICAgICByZXN1bHQud2Vla2RheSA9CiAgICAgICAgd2Vla2RheVN0ci5sZW5ndGggPiAzCiAgICAgICAgICA/IHdlZWtkYXlzTG9uZy5pbmRleE9mKHdlZWtkYXlTdHIpICsgMQogICAgICAgICAgOiB3ZWVrZGF5c1Nob3J0LmluZGV4T2Yod2Vla2RheVN0cikgKyAxOwogICAgfQoKICAgIHJldHVybiByZXN1bHQ7CiAgfQoKICAvLyBSRkMgMjgyMi81MzIyCiAgY29uc3QgcmZjMjgyMiA9CiAgICAvXig/OihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLFxzKT8oXGR7MSwyfSlccyhKYW58RmVifE1hcnxBcHJ8TWF5fEp1bnxKdWx8QXVnfFNlcHxPY3R8Tm92fERlYylccyhcZHsyLDR9KVxzKFxkXGQpOihcZFxkKSg/OjooXGRcZCkpP1xzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfCg/OihbKy1dXGRcZCkoXGRcZCkpKSQvOwoKICBmdW5jdGlvbiBleHRyYWN0UkZDMjgyMihtYXRjaCkgewogICAgY29uc3QgWwogICAgICAgICwKICAgICAgICB3ZWVrZGF5U3RyLAogICAgICAgIGRheVN0ciwKICAgICAgICBtb250aFN0ciwKICAgICAgICB5ZWFyU3RyLAogICAgICAgIGhvdXJTdHIsCiAgICAgICAgbWludXRlU3RyLAogICAgICAgIHNlY29uZFN0ciwKICAgICAgICBvYnNPZmZzZXQsCiAgICAgICAgbWlsT2Zmc2V0LAogICAgICAgIG9mZkhvdXJTdHIsCiAgICAgICAgb2ZmTWludXRlU3RyLAogICAgICBdID0gbWF0Y2gsCiAgICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTsKCiAgICBsZXQgb2Zmc2V0OwogICAgaWYgKG9ic09mZnNldCkgewogICAgICBvZmZzZXQgPSBvYnNPZmZzZXRzW29ic09mZnNldF07CiAgICB9IGVsc2UgaWYgKG1pbE9mZnNldCkgewogICAgICBvZmZzZXQgPSAwOwogICAgfSBlbHNlIHsKICAgICAgb2Zmc2V0ID0gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cik7CiAgICB9CgogICAgcmV0dXJuIFtyZXN1bHQsIG5ldyBGaXhlZE9mZnNldFpvbmUob2Zmc2V0KV07CiAgfQoKICBmdW5jdGlvbiBwcmVwcm9jZXNzUkZDMjgyMihzKSB7CiAgICAvLyBSZW1vdmUgY29tbWVudHMgYW5kIGZvbGRpbmcgd2hpdGVzcGFjZSBhbmQgcmVwbGFjZSBtdWx0aXBsZS1zcGFjZXMgd2l0aCBhIHNpbmdsZSBzcGFjZQogICAgcmV0dXJuIHMKICAgICAgLnJlcGxhY2UoL1woW14oKV0qXCl8W1xuXHRdL2csICIgIikKICAgICAgLnJlcGxhY2UoLyhcc1xzKykvZywgIiAiKQogICAgICAudHJpbSgpOwogIH0KCiAgLy8gaHR0cCBkYXRlCgogIGNvbnN0IHJmYzExMjMgPQogICAgICAvXihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLCAoXGRcZCkgKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKSAoXGR7NH0pIChcZFxkKTooXGRcZCk6KFxkXGQpIEdNVCQvLAogICAgcmZjODUwID0KICAgICAgL14oTW9uZGF5fFR1ZXNkYXl8V2VkbmVzZGF5fFRodXJzZGF5fEZyaWRheXxTYXR1cmRheXxTdW5kYXkpLCAoXGRcZCktKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKS0oXGRcZCkgKFxkXGQpOihcZFxkKTooXGRcZCkgR01UJC8sCiAgICBhc2NpaSA9CiAgICAgIC9eKE1vbnxUdWV8V2VkfFRodXxGcml8U2F0fFN1bikgKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKSAoIFxkfFxkXGQpIChcZFxkKTooXGRcZCk6KFxkXGQpIChcZHs0fSkkLzsKCiAgZnVuY3Rpb24gZXh0cmFjdFJGQzExMjNPcjg1MChtYXRjaCkgewogICAgY29uc3QgWywgd2Vla2RheVN0ciwgZGF5U3RyLCBtb250aFN0ciwgeWVhclN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHJdID0gbWF0Y2gsCiAgICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTsKICAgIHJldHVybiBbcmVzdWx0LCBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2VdOwogIH0KCiAgZnVuY3Rpb24gZXh0cmFjdEFTQ0lJKG1hdGNoKSB7CiAgICBjb25zdCBbLCB3ZWVrZGF5U3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0ciwgeWVhclN0cl0gPSBtYXRjaCwKICAgICAgcmVzdWx0ID0gZnJvbVN0cmluZ3Mod2Vla2RheVN0ciwgeWVhclN0ciwgbW9udGhTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIpOwogICAgcmV0dXJuIFtyZXN1bHQsIEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZV07CiAgfQoKICBjb25zdCBpc29ZbWRXaXRoVGltZUV4dGVuc2lvblJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoaXNvWW1kUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvV2Vla1dpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29XZWVrUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvT3JkaW5hbFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29PcmRpbmFsUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvVGltZUNvbWJpbmVkUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29UaW1lUmVnZXgpOwoKICBjb25zdCBleHRyYWN0SVNPWW1kVGltZUFuZE9mZnNldCA9IGNvbWJpbmVFeHRyYWN0b3JzKAogICAgZXh0cmFjdElTT1ltZCwKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CiAgY29uc3QgZXh0cmFjdElTT1dlZWtUaW1lQW5kT2Zmc2V0ID0gY29tYmluZUV4dHJhY3RvcnMoCiAgICBleHRyYWN0SVNPV2Vla0RhdGEsCiAgICBleHRyYWN0SVNPVGltZSwKICAgIGV4dHJhY3RJU09PZmZzZXQsCiAgICBleHRyYWN0SUFOQVpvbmUKICApOwogIGNvbnN0IGV4dHJhY3RJU09PcmRpbmFsRGF0ZUFuZFRpbWUgPSBjb21iaW5lRXh0cmFjdG9ycygKICAgIGV4dHJhY3RJU09PcmRpbmFsRGF0YSwKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CiAgY29uc3QgZXh0cmFjdElTT1RpbWVBbmRPZmZzZXQgPSBjb21iaW5lRXh0cmFjdG9ycygKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CgogIC8qCiAgICogQHByaXZhdGUKICAgKi8KCiAgZnVuY3Rpb24gcGFyc2VJU09EYXRlKHMpIHsKICAgIHJldHVybiBwYXJzZSgKICAgICAgcywKICAgICAgW2lzb1ltZFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09ZbWRUaW1lQW5kT2Zmc2V0XSwKICAgICAgW2lzb1dlZWtXaXRoVGltZUV4dGVuc2lvblJlZ2V4LCBleHRyYWN0SVNPV2Vla1RpbWVBbmRPZmZzZXRdLAogICAgICBbaXNvT3JkaW5hbFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09PcmRpbmFsRGF0ZUFuZFRpbWVdLAogICAgICBbaXNvVGltZUNvbWJpbmVkUmVnZXgsIGV4dHJhY3RJU09UaW1lQW5kT2Zmc2V0XQogICAgKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlUkZDMjgyMkRhdGUocykgewogICAgcmV0dXJuIHBhcnNlKHByZXByb2Nlc3NSRkMyODIyKHMpLCBbcmZjMjgyMiwgZXh0cmFjdFJGQzI4MjJdKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlSFRUUERhdGUocykgewogICAgcmV0dXJuIHBhcnNlKAogICAgICBzLAogICAgICBbcmZjMTEyMywgZXh0cmFjdFJGQzExMjNPcjg1MF0sCiAgICAgIFtyZmM4NTAsIGV4dHJhY3RSRkMxMTIzT3I4NTBdLAogICAgICBbYXNjaWksIGV4dHJhY3RBU0NJSV0KICAgICk7CiAgfQoKICBmdW5jdGlvbiBwYXJzZUlTT0R1cmF0aW9uKHMpIHsKICAgIHJldHVybiBwYXJzZShzLCBbaXNvRHVyYXRpb24sIGV4dHJhY3RJU09EdXJhdGlvbl0pOwogIH0KCiAgY29uc3QgZXh0cmFjdElTT1RpbWVPbmx5ID0gY29tYmluZUV4dHJhY3RvcnMoZXh0cmFjdElTT1RpbWUpOwoKICBmdW5jdGlvbiBwYXJzZUlTT1RpbWVPbmx5KHMpIHsKICAgIHJldHVybiBwYXJzZShzLCBbaXNvVGltZU9ubHksIGV4dHJhY3RJU09UaW1lT25seV0pOwogIH0KCiAgY29uc3Qgc3FsWW1kV2l0aFRpbWVFeHRlbnNpb25SZWdleCA9IGNvbWJpbmVSZWdleGVzKHNxbFltZFJlZ2V4LCBzcWxUaW1lRXh0ZW5zaW9uUmVnZXgpOwogIGNvbnN0IHNxbFRpbWVDb21iaW5lZFJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoc3FsVGltZVJlZ2V4KTsKCiAgY29uc3QgZXh0cmFjdElTT1RpbWVPZmZzZXRBbmRJQU5BWm9uZSA9IGNvbWJpbmVFeHRyYWN0b3JzKAogICAgZXh0cmFjdElTT1RpbWUsCiAgICBleHRyYWN0SVNPT2Zmc2V0LAogICAgZXh0cmFjdElBTkFab25lCiAgKTsKCiAgZnVuY3Rpb24gcGFyc2VTUUwocykgewogICAgcmV0dXJuIHBhcnNlKAogICAgICBzLAogICAgICBbc3FsWW1kV2l0aFRpbWVFeHRlbnNpb25SZWdleCwgZXh0cmFjdElTT1ltZFRpbWVBbmRPZmZzZXRdLAogICAgICBbc3FsVGltZUNvbWJpbmVkUmVnZXgsIGV4dHJhY3RJU09UaW1lT2Zmc2V0QW5kSUFOQVpvbmVdCiAgICApOwogIH0KCiAgY29uc3QgSU5WQUxJRCQyID0gIkludmFsaWQgRHVyYXRpb24iOwoKICAvLyB1bml0IGNvbnZlcnNpb24gY29uc3RhbnRzCiAgY29uc3QgbG93T3JkZXJNYXRyaXggPSB7CiAgICAgIHdlZWtzOiB7CiAgICAgICAgZGF5czogNywKICAgICAgICBob3VyczogNyAqIDI0LAogICAgICAgIG1pbnV0ZXM6IDcgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDcgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiA3ICogMjQgKiA2MCAqIDYwICogMTAwMCwKICAgICAgfSwKICAgICAgZGF5czogewogICAgICAgIGhvdXJzOiAyNCwKICAgICAgICBtaW51dGVzOiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDI0ICogNjAgKiA2MCwKICAgICAgICBtaWxsaXNlY29uZHM6IDI0ICogNjAgKiA2MCAqIDEwMDAsCiAgICAgIH0sCiAgICAgIGhvdXJzOiB7IG1pbnV0ZXM6IDYwLCBzZWNvbmRzOiA2MCAqIDYwLCBtaWxsaXNlY29uZHM6IDYwICogNjAgKiAxMDAwIH0sCiAgICAgIG1pbnV0ZXM6IHsgc2Vjb25kczogNjAsIG1pbGxpc2Vjb25kczogNjAgKiAxMDAwIH0sCiAgICAgIHNlY29uZHM6IHsgbWlsbGlzZWNvbmRzOiAxMDAwIH0sCiAgICB9LAogICAgY2FzdWFsTWF0cml4ID0gewogICAgICB5ZWFyczogewogICAgICAgIHF1YXJ0ZXJzOiA0LAogICAgICAgIG1vbnRoczogMTIsCiAgICAgICAgd2Vla3M6IDUyLAogICAgICAgIGRheXM6IDM2NSwKICAgICAgICBob3VyczogMzY1ICogMjQsCiAgICAgICAgbWludXRlczogMzY1ICogMjQgKiA2MCwKICAgICAgICBzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBxdWFydGVyczogewogICAgICAgIG1vbnRoczogMywKICAgICAgICB3ZWVrczogMTMsCiAgICAgICAgZGF5czogOTEsCiAgICAgICAgaG91cnM6IDkxICogMjQsCiAgICAgICAgbWludXRlczogOTEgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDkxICogMjQgKiA2MCAqIDYwLAogICAgICAgIG1pbGxpc2Vjb25kczogOTEgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBtb250aHM6IHsKICAgICAgICB3ZWVrczogNCwKICAgICAgICBkYXlzOiAzMCwKICAgICAgICBob3VyczogMzAgKiAyNCwKICAgICAgICBtaW51dGVzOiAzMCAqIDI0ICogNjAsCiAgICAgICAgc2Vjb25kczogMzAgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAzMCAqIDI0ICogNjAgKiA2MCAqIDEwMDAsCiAgICAgIH0sCgogICAgICAuLi5sb3dPcmRlck1hdHJpeCwKICAgIH0sCiAgICBkYXlzSW5ZZWFyQWNjdXJhdGUgPSAxNDYwOTcuMCAvIDQwMCwKICAgIGRheXNJbk1vbnRoQWNjdXJhdGUgPSAxNDYwOTcuMCAvIDQ4MDAsCiAgICBhY2N1cmF0ZU1hdHJpeCA9IHsKICAgICAgeWVhcnM6IHsKICAgICAgICBxdWFydGVyczogNCwKICAgICAgICBtb250aHM6IDEyLAogICAgICAgIHdlZWtzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgLyA3LAogICAgICAgIGRheXM6IGRheXNJblllYXJBY2N1cmF0ZSwKICAgICAgICBob3VyczogZGF5c0luWWVhckFjY3VyYXRlICogMjQsCiAgICAgICAgbWludXRlczogZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCwKICAgICAgICBzZWNvbmRzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBxdWFydGVyczogewogICAgICAgIG1vbnRoczogMywKICAgICAgICB3ZWVrczogZGF5c0luWWVhckFjY3VyYXRlIC8gMjgsCiAgICAgICAgZGF5czogZGF5c0luWWVhckFjY3VyYXRlIC8gNCwKICAgICAgICBob3VyczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0KSAvIDQsCiAgICAgICAgbWludXRlczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0ICogNjApIC8gNCwKICAgICAgICBzZWNvbmRzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwKSAvIDQsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCkgLyA0LAogICAgICB9LAogICAgICBtb250aHM6IHsKICAgICAgICB3ZWVrczogZGF5c0luTW9udGhBY2N1cmF0ZSAvIDcsCiAgICAgICAgZGF5czogZGF5c0luTW9udGhBY2N1cmF0ZSwKICAgICAgICBob3VyczogZGF5c0luTW9udGhBY2N1cmF0ZSAqIDI0LAogICAgICAgIG1pbnV0ZXM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiBkYXlzSW5Nb250aEFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCwKICAgICAgfSwKICAgICAgLi4ubG93T3JkZXJNYXRyaXgsCiAgICB9OwoKICAvLyB1bml0cyBvcmRlcmVkIGJ5IHNpemUKICBjb25zdCBvcmRlcmVkVW5pdHMkMSA9IFsKICAgICJ5ZWFycyIsCiAgICAicXVhcnRlcnMiLAogICAgIm1vbnRocyIsCiAgICAid2Vla3MiLAogICAgImRheXMiLAogICAgImhvdXJzIiwKICAgICJtaW51dGVzIiwKICAgICJzZWNvbmRzIiwKICAgICJtaWxsaXNlY29uZHMiLAogIF07CgogIGNvbnN0IHJldmVyc2VVbml0cyA9IG9yZGVyZWRVbml0cyQxLnNsaWNlKDApLnJldmVyc2UoKTsKCiAgLy8gY2xvbmUgcmVhbGx5IG1lYW5zICJjcmVhdGUgYW5vdGhlciBpbnN0YW5jZSBqdXN0IGxpa2UgdGhpcyBvbmUsIGJ1dCB3aXRoIHRoZXNlIGNoYW5nZXMiCiAgZnVuY3Rpb24gY2xvbmUkMShkdXIsIGFsdHMsIGNsZWFyID0gZmFsc2UpIHsKICAgIC8vIGRlZXAgbWVyZ2UgZm9yIHZhbHMKICAgIGNvbnN0IGNvbmYgPSB7CiAgICAgIHZhbHVlczogY2xlYXIgPyBhbHRzLnZhbHVlcyA6IHsgLi4uZHVyLnZhbHVlcywgLi4uKGFsdHMudmFsdWVzIHx8IHt9KSB9LAogICAgICBsb2M6IGR1ci5sb2MuY2xvbmUoYWx0cy5sb2MpLAogICAgICBjb252ZXJzaW9uQWNjdXJhY3k6IGFsdHMuY29udmVyc2lvbkFjY3VyYWN5IHx8IGR1ci5jb252ZXJzaW9uQWNjdXJhY3ksCiAgICAgIG1hdHJpeDogYWx0cy5tYXRyaXggfHwgZHVyLm1hdHJpeCwKICAgIH07CiAgICByZXR1cm4gbmV3IER1cmF0aW9uKGNvbmYpOwogIH0KCiAgZnVuY3Rpb24gZHVyYXRpb25Ub01pbGxpcyhtYXRyaXgsIHZhbHMpIHsKICAgIGxldCBzdW0gPSB2YWxzLm1pbGxpc2Vjb25kcyA/PyAwOwogICAgZm9yIChjb25zdCB1bml0IG9mIHJldmVyc2VVbml0cy5zbGljZSgxKSkgewogICAgICBpZiAodmFsc1t1bml0XSkgewogICAgICAgIHN1bSArPSB2YWxzW3VuaXRdICogbWF0cml4W3VuaXRdWyJtaWxsaXNlY29uZHMiXTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHN1bTsKICB9CgogIC8vIE5COiBtdXRhdGVzIHBhcmFtZXRlcnMKICBmdW5jdGlvbiBub3JtYWxpemVWYWx1ZXMobWF0cml4LCB2YWxzKSB7CiAgICAvLyB0aGUgbG9naWMgYmVsb3cgYXNzdW1lcyB0aGUgb3ZlcmFsbCB2YWx1ZSBvZiB0aGUgZHVyYXRpb24gaXMgcG9zaXRpdmUKICAgIC8vIGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCBmYWN0b3IgaXMgdXNlZCB0byBtYWtlIGl0IHNvCiAgICBjb25zdCBmYWN0b3IgPSBkdXJhdGlvblRvTWlsbGlzKG1hdHJpeCwgdmFscykgPCAwID8gLTEgOiAxOwoKICAgIG9yZGVyZWRVbml0cyQxLnJlZHVjZVJpZ2h0KChwcmV2aW91cywgY3VycmVudCkgPT4gewogICAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbHNbY3VycmVudF0pKSB7CiAgICAgICAgaWYgKHByZXZpb3VzKSB7CiAgICAgICAgICBjb25zdCBwcmV2aW91c1ZhbCA9IHZhbHNbcHJldmlvdXNdICogZmFjdG9yOwogICAgICAgICAgY29uc3QgY29udiA9IG1hdHJpeFtjdXJyZW50XVtwcmV2aW91c107CgogICAgICAgICAgLy8gaWYgKHByZXZpb3VzVmFsIDwgMCk6CiAgICAgICAgICAvLyBsb3dlciBvcmRlciB1bml0IGlzIG5lZ2F0aXZlIChlLmcuIHsgeWVhcnM6IDIsIGRheXM6IC0yIH0pCiAgICAgICAgICAvLyBub3JtYWxpemUgdGhpcyBieSByZWR1Y2luZyB0aGUgaGlnaGVyIG9yZGVyIHVuaXQgYnkgdGhlIGFwcHJvcHJpYXRlIGFtb3VudAogICAgICAgICAgLy8gYW5kIGluY3JlYXNpbmcgdGhlIGxvd2VyIG9yZGVyIHVuaXQKICAgICAgICAgIC8vIHRoaXMgY2FuIG5ldmVyIG1ha2UgdGhlIGhpZ2hlciBvcmRlciB1bml0IG5lZ2F0aXZlLCBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gb25seSBvcGVyYXRlcwogICAgICAgICAgLy8gb24gcG9zaXRpdmUgZHVyYXRpb25zLCBzbyB0aGUgYW1vdW50IG9mIHRpbWUgcmVwcmVzZW50ZWQgYnkgdGhlIGxvd2VyIG9yZGVyIHVuaXQgY2Fubm90CiAgICAgICAgICAvLyBiZSBsYXJnZXIgdGhhbiB0aGUgaGlnaGVyIG9yZGVyIHVuaXQKICAgICAgICAgIC8vIGVsc2U6CiAgICAgICAgICAvLyBsb3dlciBvcmRlciB1bml0IGlzIHBvc2l0aXZlIChlLmcuIHsgeWVhcnM6IDIsIGRheXM6IDQ1MCB9IG9yIHsgeWVhcnM6IC0yLCBkYXlzOiA0NTAgfSkKICAgICAgICAgIC8vIGluIHRoaXMgY2FzZSB3ZSBhdHRlbXB0IHRvIGNvbnZlcnQgYXMgbXVjaCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBsb3dlciBvcmRlciB1bml0IGludG8KICAgICAgICAgIC8vIHRoZSBoaWdoZXIgb3JkZXIgb25lCiAgICAgICAgICAvLwogICAgICAgICAgLy8gTWF0aC5mbG9vciB0YWtlcyBjYXJlIG9mIGJvdGggb2YgdGhlc2UgY2FzZXMsIHJvdW5kaW5nIGF3YXkgZnJvbSAwCiAgICAgICAgICAvLyBpZiBwcmV2aW91c1ZhbCA8IDAgaXQgbWFrZXMgdGhlIGFic29sdXRlIHZhbHVlIGxhcmdlcgogICAgICAgICAgLy8gaWYgcHJldmlvdXNWYWwgPj0gaXQgbWFrZXMgdGhlIGFic29sdXRlIHZhbHVlIHNtYWxsZXIKICAgICAgICAgIGNvbnN0IHJvbGxVcCA9IE1hdGguZmxvb3IocHJldmlvdXNWYWwgLyBjb252KTsKICAgICAgICAgIHZhbHNbY3VycmVudF0gKz0gcm9sbFVwICogZmFjdG9yOwogICAgICAgICAgdmFsc1twcmV2aW91c10gLT0gcm9sbFVwICogY29udiAqIGZhY3RvcjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHByZXZpb3VzOwogICAgICB9CiAgICB9LCBudWxsKTsKCiAgICAvLyB0cnkgdG8gY29udmVydCBhbnkgZGVjaW1hbHMgaW50byBzbWFsbGVyIHVuaXRzIGlmIHBvc3NpYmxlCiAgICAvLyBmb3IgZXhhbXBsZSBmb3IgeyB5ZWFyczogMi41LCBkYXlzOiAwLCBzZWNvbmRzOiAwIH0gd2Ugd2FudCB0byBnZXQgeyB5ZWFyczogMiwgZGF5czogMTgyLCBob3VyczogMTIgfQogICAgb3JkZXJlZFVuaXRzJDEucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4gewogICAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbHNbY3VycmVudF0pKSB7CiAgICAgICAgaWYgKHByZXZpb3VzKSB7CiAgICAgICAgICBjb25zdCBmcmFjdGlvbiA9IHZhbHNbcHJldmlvdXNdICUgMTsKICAgICAgICAgIHZhbHNbcHJldmlvdXNdIC09IGZyYWN0aW9uOwogICAgICAgICAgdmFsc1tjdXJyZW50XSArPSBmcmFjdGlvbiAqIG1hdHJpeFtwcmV2aW91c11bY3VycmVudF07CiAgICAgICAgfQogICAgICAgIHJldHVybiBjdXJyZW50OwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBwcmV2aW91czsKICAgICAgfQogICAgfSwgbnVsbCk7CiAgfQoKICAvLyBSZW1vdmUgYWxsIHByb3BlcnRpZXMgd2l0aCBhIHZhbHVlIG9mIDAgZnJvbSBhbiBvYmplY3QKICBmdW5jdGlvbiByZW1vdmVaZXJvZXModmFscykgewogICAgY29uc3QgbmV3VmFscyA9IHt9OwogICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFscykpIHsKICAgICAgaWYgKHZhbHVlICE9PSAwKSB7CiAgICAgICAgbmV3VmFsc1trZXldID0gdmFsdWU7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBuZXdWYWxzOwogIH0KCiAgLyoqCiAgICogQSBEdXJhdGlvbiBvYmplY3QgcmVwcmVzZW50cyBhIHBlcmlvZCBvZiB0aW1lLCBsaWtlICIyIG1vbnRocyIgb3IgIjEgZGF5LCAxIGhvdXIiLiBDb25jZXB0dWFsbHksIGl0J3MganVzdCBhIG1hcCBvZiB1bml0cyB0byB0aGVpciBxdWFudGl0aWVzLCBhY2NvbXBhbmllZCBieSBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBhbmQgbWV0aG9kcyBmb3IgY3JlYXRpbmcsIHBhcnNpbmcsIGludGVycm9nYXRpbmcsIHRyYW5zZm9ybWluZywgYW5kIGZvcm1hdHRpbmcgdGhlbS4gVGhleSBjYW4gYmUgdXNlZCBvbiB0aGVpciBvd24gb3IgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBMdXhvbiB0eXBlczsgZm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlIHtAbGluayBEYXRlVGltZSNwbHVzfSB0byBhZGQgYSBEdXJhdGlvbiBvYmplY3QgdG8gYSBEYXRlVGltZSwgcHJvZHVjaW5nIGFub3RoZXIgRGF0ZVRpbWUuCiAgICoKICAgKiBIZXJlIGlzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgY29tbW9ubHkgdXNlZCBtZXRob2RzIGFuZCBnZXR0ZXJzIGluIER1cmF0aW9uOgogICAqCiAgICogKiAqKkNyZWF0aW9uKiogVG8gY3JlYXRlIGEgRHVyYXRpb24sIHVzZSB7QGxpbmsgRHVyYXRpb24uZnJvbU1pbGxpc30sIHtAbGluayBEdXJhdGlvbi5mcm9tT2JqZWN0fSwgb3Ige0BsaW5rIER1cmF0aW9uLmZyb21JU099LgogICAqICogKipVbml0IHZhbHVlcyoqIFNlZSB0aGUge0BsaW5rIER1cmF0aW9uI3llYXJzfSwge0BsaW5rIER1cmF0aW9uI21vbnRoc30sIHtAbGluayBEdXJhdGlvbiN3ZWVrc30sIHtAbGluayBEdXJhdGlvbiNkYXlzfSwge0BsaW5rIER1cmF0aW9uI2hvdXJzfSwge0BsaW5rIER1cmF0aW9uI21pbnV0ZXN9LCB7QGxpbmsgRHVyYXRpb24jc2Vjb25kc30sIHtAbGluayBEdXJhdGlvbiNtaWxsaXNlY29uZHN9IGFjY2Vzc29ycy4KICAgKiAqICoqQ29uZmlndXJhdGlvbioqIFNlZSAge0BsaW5rIER1cmF0aW9uI2xvY2FsZX0gYW5kIHtAbGluayBEdXJhdGlvbiNudW1iZXJpbmdTeXN0ZW19IGFjY2Vzc29ycy4KICAgKiAqICoqVHJhbnNmb3JtYXRpb24qKiBUbyBjcmVhdGUgbmV3IER1cmF0aW9ucyBvdXQgb2Ygb2xkIG9uZXMgdXNlIHtAbGluayBEdXJhdGlvbiNwbHVzfSwge0BsaW5rIER1cmF0aW9uI21pbnVzfSwge0BsaW5rIER1cmF0aW9uI25vcm1hbGl6ZX0sIHtAbGluayBEdXJhdGlvbiNzZXR9LCB7QGxpbmsgRHVyYXRpb24jcmVjb25maWd1cmV9LCB7QGxpbmsgRHVyYXRpb24jc2hpZnRUb30sIGFuZCB7QGxpbmsgRHVyYXRpb24jbmVnYXRlfS4KICAgKiAqICoqT3V0cHV0KiogVG8gY29udmVydCB0aGUgRHVyYXRpb24gaW50byBvdGhlciByZXByZXNlbnRhdGlvbnMsIHNlZSB7QGxpbmsgRHVyYXRpb24jYXN9LCB7QGxpbmsgRHVyYXRpb24jdG9JU099LCB7QGxpbmsgRHVyYXRpb24jdG9Gb3JtYXR9LCBhbmQge0BsaW5rIER1cmF0aW9uI3RvSlNPTn0KICAgKgogICAqIFRoZXJlJ3MgYXJlIG1vcmUgbWV0aG9kcyBkb2N1bWVudGVkIGJlbG93LiBJbiBhZGRpdGlvbiwgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gc3VidGxlciB0b3BpY3MgbGlrZSBpbnRlcm5hdGlvbmFsaXphdGlvbiBhbmQgdmFsaWRpdHksIHNlZSB0aGUgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvbi4KICAgKi8KICBjbGFzcyBEdXJhdGlvbiB7CiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKi8KICAgIGNvbnN0cnVjdG9yKGNvbmZpZykgewogICAgICBjb25zdCBhY2N1cmF0ZSA9IGNvbmZpZy5jb252ZXJzaW9uQWNjdXJhY3kgPT09ICJsb25ndGVybSIgfHwgZmFsc2U7CiAgICAgIGxldCBtYXRyaXggPSBhY2N1cmF0ZSA/IGFjY3VyYXRlTWF0cml4IDogY2FzdWFsTWF0cml4OwoKICAgICAgaWYgKGNvbmZpZy5tYXRyaXgpIHsKICAgICAgICBtYXRyaXggPSBjb25maWcubWF0cml4OwogICAgICB9CgogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLnZhbHVlcyA9IGNvbmZpZy52YWx1ZXM7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubG9jID0gY29uZmlnLmxvYyB8fCBMb2NhbGUuY3JlYXRlKCk7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuY29udmVyc2lvbkFjY3VyYWN5ID0gYWNjdXJhdGUgPyAibG9uZ3Rlcm0iIDogImNhc3VhbCI7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuaW52YWxpZCA9IGNvbmZpZy5pbnZhbGlkIHx8IG51bGw7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubWF0cml4ID0gbWF0cml4OwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25EdXJhdGlvbiA9IHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgRHVyYXRpb24gZnJvbSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMuCiAgICAgKiBAcGFyYW0ge251bWJlcn0gY291bnQgb2YgbWlsbGlzZWNvbmRzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIHBhcnNpbmcKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSB0aGUgbG9jYWxlIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbU1pbGxpcyhjb3VudCwgb3B0cykgewogICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbGxpc2Vjb25kczogY291bnQgfSwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEdXJhdGlvbiBmcm9tIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXJzJyBhbmQgJ2hvdXJzJy4KICAgICAqIElmIHRoaXMgb2JqZWN0IGlzIGVtcHR5IHRoZW4gYSB6ZXJvIG1pbGxpc2Vjb25kcyBkdXJhdGlvbiBpcyByZXR1cm5lZC4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogLSB0aGUgb2JqZWN0IHRvIGNyZWF0ZSB0aGUgRGF0ZVRpbWUgZnJvbQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai55ZWFycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5xdWFydGVycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5tb250aHMKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla3MKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouZGF5cwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5ob3VycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taW51dGVzCiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLnNlY29uZHMKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoubWlsbGlzZWNvbmRzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHM9W11dIC0gb3B0aW9ucyBmb3IgY3JlYXRpbmcgdGhpcyBEdXJhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIHByZXNldCBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5tYXRyaXg9T2JqZWN0XSAtIHRoZSBjdXN0b20gY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc3RhdGljIGZyb21PYmplY3Qob2JqLCBvcHRzID0ge30pIHsKICAgICAgaWYgKG9iaiA9PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICJvYmplY3QiKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKAogICAgICAgICAgYER1cmF0aW9uLmZyb21PYmplY3Q6IGFyZ3VtZW50IGV4cGVjdGVkIHRvIGJlIGFuIG9iamVjdCwgZ290ICR7CiAgICAgICAgICBvYmogPT09IG51bGwgPyAibnVsbCIgOiB0eXBlb2Ygb2JqCiAgICAgICAgfWAKICAgICAgICApOwogICAgICB9CgogICAgICByZXR1cm4gbmV3IER1cmF0aW9uKHsKICAgICAgICB2YWx1ZXM6IG5vcm1hbGl6ZU9iamVjdChvYmosIER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpLAogICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0cyksCiAgICAgICAgY29udmVyc2lvbkFjY3VyYWN5OiBvcHRzLmNvbnZlcnNpb25BY2N1cmFjeSwKICAgICAgICBtYXRyaXg6IG9wdHMubWF0cml4LAogICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIER1cmF0aW9uIGZyb20gRHVyYXRpb25MaWtlLgogICAgICoKICAgICAqIEBwYXJhbSB7T2JqZWN0IHwgbnVtYmVyIHwgRHVyYXRpb259IGR1cmF0aW9uTGlrZQogICAgICogT25lIG9mOgogICAgICogLSBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXJzJyBhbmQgJ2hvdXJzJy4KICAgICAqIC0gbnVtYmVyIHJlcHJlc2VudGluZyBtaWxsaXNlY29uZHMKICAgICAqIC0gRHVyYXRpb24gaW5zdGFuY2UKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbkxpa2UpIHsKICAgICAgaWYgKGlzTnVtYmVyKGR1cmF0aW9uTGlrZSkpIHsKICAgICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU1pbGxpcyhkdXJhdGlvbkxpa2UpOwogICAgICB9IGVsc2UgaWYgKER1cmF0aW9uLmlzRHVyYXRpb24oZHVyYXRpb25MaWtlKSkgewogICAgICAgIHJldHVybiBkdXJhdGlvbkxpa2U7CiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGR1cmF0aW9uTGlrZSA9PT0gIm9iamVjdCIpIHsKICAgICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdChkdXJhdGlvbkxpa2UpOwogICAgICB9IGVsc2UgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigKICAgICAgICAgIGBVbmtub3duIGR1cmF0aW9uIGFyZ3VtZW50ICR7ZHVyYXRpb25MaWtlfSBvZiB0eXBlICR7dHlwZW9mIGR1cmF0aW9uTGlrZX1gCiAgICAgICAgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBhbiBJU08gODYwMSBkdXJhdGlvbiBzdHJpbmcuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRleHQgdG8gcGFyc2UKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyBmb3IgcGFyc2luZwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIHByZXNldCBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5tYXRyaXg9T2JqZWN0XSAtIHRoZSBwcmVzZXQgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI0R1cmF0aW9ucwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUDNZNk0xVzREVDEySDMwTTVTJykudG9PYmplY3QoKSAvLz0+IHsgeWVhcnM6IDMsIG1vbnRoczogNiwgd2Vla3M6IDEsIGRheXM6IDQsIGhvdXJzOiAxMiwgbWludXRlczogMzAsIHNlY29uZHM6IDUgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUFQyM0gnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjMgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUDVZM00nKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogNSwgbW9udGhzOiAzIH0KICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbUlTTyh0ZXh0LCBvcHRzKSB7CiAgICAgIGNvbnN0IFtwYXJzZWRdID0gcGFyc2VJU09EdXJhdGlvbih0ZXh0KTsKICAgICAgaWYgKHBhcnNlZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHBhcnNlZCwgb3B0cyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoInVucGFyc2FibGUiLCBgdGhlIGlucHV0ICIke3RleHR9IiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBhbiBJU08gODYwMSB0aW1lIHN0cmluZy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGV4dCB0byBwYXJzZQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIGZvciBwYXJzaW5nCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdlbi1VUyddIC0gdGhlIGxvY2FsZSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgcHJlc2V0IGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm1hdHJpeD1PYmplY3RdIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lcwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJzExOjIyOjMzLjQ0NCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMjIsIHNlY29uZHM6IDMzLCBtaWxsaXNlY29uZHM6IDQ0NCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTE6MDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJ1QxMTowMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTEwMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnVDExMDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tSVNPVGltZSh0ZXh0LCBvcHRzKSB7CiAgICAgIGNvbnN0IFtwYXJzZWRdID0gcGFyc2VJU09UaW1lT25seSh0ZXh0KTsKICAgICAgaWYgKHBhcnNlZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHBhcnNlZCwgb3B0cyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoInVucGFyc2FibGUiLCBgdGhlIGlucHV0ICIke3RleHR9IiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIGludmFsaWQgRHVyYXRpb24uCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBkYXRldGltZSBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4cGxhbmF0aW9uPW51bGxdIC0gbG9uZ2VyIGV4cGxhbmF0aW9uLCBtYXkgaW5jbHVkZSBwYXJhbWV0ZXJzIGFuZCBvdGhlciB1c2VmdWwgZGVidWdnaW5nIGluZm9ybWF0aW9uCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc3RhdGljIGludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbiA9IG51bGwpIHsKICAgICAgaWYgKCFyZWFzb24pIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoIm5lZWQgdG8gc3BlY2lmeSBhIHJlYXNvbiB0aGUgRHVyYXRpb24gaXMgaW52YWxpZCIpOwogICAgICB9CgogICAgICBjb25zdCBpbnZhbGlkID0gcmVhc29uIGluc3RhbmNlb2YgSW52YWxpZCA/IHJlYXNvbiA6IG5ldyBJbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24pOwoKICAgICAgaWYgKFNldHRpbmdzLnRocm93T25JbnZhbGlkKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWREdXJhdGlvbkVycm9yKGludmFsaWQpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRHVyYXRpb24oeyBpbnZhbGlkIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICBzdGF0aWMgbm9ybWFsaXplVW5pdCh1bml0KSB7CiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7CiAgICAgICAgeWVhcjogInllYXJzIiwKICAgICAgICB5ZWFyczogInllYXJzIiwKICAgICAgICBxdWFydGVyOiAicXVhcnRlcnMiLAogICAgICAgIHF1YXJ0ZXJzOiAicXVhcnRlcnMiLAogICAgICAgIG1vbnRoOiAibW9udGhzIiwKICAgICAgICBtb250aHM6ICJtb250aHMiLAogICAgICAgIHdlZWs6ICJ3ZWVrcyIsCiAgICAgICAgd2Vla3M6ICJ3ZWVrcyIsCiAgICAgICAgZGF5OiAiZGF5cyIsCiAgICAgICAgZGF5czogImRheXMiLAogICAgICAgIGhvdXI6ICJob3VycyIsCiAgICAgICAgaG91cnM6ICJob3VycyIsCiAgICAgICAgbWludXRlOiAibWludXRlcyIsCiAgICAgICAgbWludXRlczogIm1pbnV0ZXMiLAogICAgICAgIHNlY29uZDogInNlY29uZHMiLAogICAgICAgIHNlY29uZHM6ICJzZWNvbmRzIiwKICAgICAgICBtaWxsaXNlY29uZDogIm1pbGxpc2Vjb25kcyIsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAibWlsbGlzZWNvbmRzIiwKICAgICAgfVt1bml0ID8gdW5pdC50b0xvd2VyQ2FzZSgpIDogdW5pdF07CgogICAgICBpZiAoIW5vcm1hbGl6ZWQpIHRocm93IG5ldyBJbnZhbGlkVW5pdEVycm9yKHVuaXQpOwoKICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgYSBEdXJhdGlvbi4gV29ya3MgYWNyb3NzIGNvbnRleHQgYm91bmRhcmllcwogICAgICogQHBhcmFtIHtvYmplY3R9IG8KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc0R1cmF0aW9uKG8pIHsKICAgICAgcmV0dXJuIChvICYmIG8uaXNMdXhvbkR1cmF0aW9uKSB8fCBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCAgdGhlIGxvY2FsZSBvZiBhIER1cmF0aW9uLCBzdWNoICdlbi1HQicKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBsb2NhbGUoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5sb2NhbGUgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBudW1iZXJpbmcgc3lzdGVtIG9mIGEgRHVyYXRpb24sIHN1Y2ggJ2JlbmcnLiBUaGUgbnVtYmVyaW5nIHN5c3RlbSBpcyB1c2VkIHdoZW4gZm9ybWF0dGluZyB0aGUgRHVyYXRpb24KICAgICAqCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbnVtYmVyaW5nU3lzdGVtKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbiBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZy4gWW91IG1heSB1c2UgdGhlc2UgdG9rZW5zOgogICAgICogKiBgU2AgZm9yIG1pbGxpc2Vjb25kcwogICAgICogKiBgc2AgZm9yIHNlY29uZHMKICAgICAqICogYG1gIGZvciBtaW51dGVzCiAgICAgKiAqIGBoYCBmb3IgaG91cnMKICAgICAqICogYGRgIGZvciBkYXlzCiAgICAgKiAqIGB3YCBmb3Igd2Vla3MKICAgICAqICogYE1gIGZvciBtb250aHMKICAgICAqICogYHlgIGZvciB5ZWFycwogICAgICogTm90ZXM6CiAgICAgKiAqIEFkZCBwYWRkaW5nIGJ5IHJlcGVhdGluZyB0aGUgdG9rZW4sIGUuZy4gInl5IiBwYWRzIHRoZSB5ZWFycyB0byB0d28gZGlnaXRzLCAiaGhoaCIgcGFkcyB0aGUgaG91cnMgb3V0IHRvIGZvdXIgZGlnaXRzCiAgICAgKiAqIFRva2VucyBjYW4gYmUgZXNjYXBlZCBieSB3cmFwcGluZyB3aXRoIHNpbmdsZSBxdW90ZXMuCiAgICAgKiAqIFRoZSBkdXJhdGlvbiB3aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUgc2V0IG9mIHVuaXRzIGluIHRoZSBmb3JtYXQgc3RyaW5nIHVzaW5nIHtAbGluayBEdXJhdGlvbiNzaGlmdFRvfSBhbmQgdGhlIER1cmF0aW9ucydzIGNvbnZlcnNpb24gYWNjdXJhY3kgc2V0dGluZy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbXQgLSB0aGUgZm9ybWF0IHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmZsb29yPXRydWVdIC0gZmxvb3IgbnVtZXJpY2FsIHZhbHVlcwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KCJ5IGQgcyIpIC8vPT4gIjEgNiAyIgogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KCJ5eSBkZCBzc3MiKSAvLz0+ICIwMSAwNiAwMDIiCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfSkudG9Gb3JtYXQoIk0gUyIpIC8vPT4gIjEyIDUxODQwMjAwMCIKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9Gb3JtYXQoZm10LCBvcHRzID0ge30pIHsKICAgICAgLy8gcmV2ZXJzZS1jb21wYXQgc2luY2UgMS4yOyB3ZSBhbHdheXMgcm91bmQgZG93biBub3csIG5ldmVyIHVwLCBhbmQgd2UgZG8gaXQgYnkgZGVmYXVsdAogICAgICBjb25zdCBmbXRPcHRzID0gewogICAgICAgIC4uLm9wdHMsCiAgICAgICAgZmxvb3I6IG9wdHMucm91bmQgIT09IGZhbHNlICYmIG9wdHMuZmxvb3IgIT09IGZhbHNlLAogICAgICB9OwogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkCiAgICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMubG9jLCBmbXRPcHRzKS5mb3JtYXREdXJhdGlvbkZyb21TdHJpbmcodGhpcywgZm10KQogICAgICAgIDogSU5WQUxJRCQyOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIER1cmF0aW9uIHdpdGggYWxsIHVuaXRzIGluY2x1ZGVkLgogICAgICogVG8gbW9kaWZ5IGl0cyBiZWhhdmlvciB1c2UgdGhlIGBsaXN0U3R5bGVgIGFuZCBhbnkgSW50bC5OdW1iZXJGb3JtYXQgb3B0aW9uLCB0aG91Z2ggYHVuaXREaXNwbGF5YCBpcyBlc3BlY2lhbGx5IHJlbGV2YW50LgogICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9JbnRsL051bWJlckZvcm1hdAogICAgICogQHBhcmFtIG9wdHMgLSBPbiBvcHRpb24gb2JqZWN0IHRvIG92ZXJyaWRlIHRoZSBmb3JtYXR0aW5nLiBBY2NlcHRzIHRoZSBzYW1lIGtleXMgYXMgdGhlIG9wdGlvbnMgcGFyYW1ldGVyIG9mIHRoZSBuYXRpdmUgYEludC5OdW1iZXJGb3JtYXRgIGNvbnN0cnVjdG9yLCBhcyB3ZWxsIGFzIGBsaXN0U3R5bGVgLgogICAgICogQGV4YW1wbGUKICAgICAqIGBgYGpzCiAgICAgKiB2YXIgZHVyID0gRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEsIGhvdXJzOiA1LCBtaW51dGVzOiA2IH0pCiAgICAgKiBkdXIudG9IdW1hbigpIC8vPT4gJzEgZGF5LCA1IGhvdXJzLCA2IG1pbnV0ZXMnCiAgICAgKiBkdXIudG9IdW1hbih7IGxpc3RTdHlsZTogImxvbmciIH0pIC8vPT4gJzEgZGF5LCA1IGhvdXJzLCBhbmQgNiBtaW51dGVzJwogICAgICogZHVyLnRvSHVtYW4oeyB1bml0RGlzcGxheTogInNob3J0IiB9KSAvLz0+ICcxIGRheSwgNSBociwgNiBtaW4nCiAgICAgKiBgYGAKICAgICAqLwogICAgdG9IdW1hbihvcHRzID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEJDI7CgogICAgICBjb25zdCBsID0gb3JkZXJlZFVuaXRzJDEKICAgICAgICAubWFwKCh1bml0KSA9PiB7CiAgICAgICAgICBjb25zdCB2YWwgPSB0aGlzLnZhbHVlc1t1bml0XTsKICAgICAgICAgIGlmIChpc1VuZGVmaW5lZCh2YWwpKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHRoaXMubG9jCiAgICAgICAgICAgIC5udW1iZXJGb3JtYXR0ZXIoeyBzdHlsZTogInVuaXQiLCB1bml0RGlzcGxheTogImxvbmciLCAuLi5vcHRzLCB1bml0OiB1bml0LnNsaWNlKDAsIC0xKSB9KQogICAgICAgICAgICAuZm9ybWF0KHZhbCk7CiAgICAgICAgfSkKICAgICAgICAuZmlsdGVyKChuKSA9PiBuKTsKCiAgICAgIHJldHVybiB0aGlzLmxvYwogICAgICAgIC5saXN0Rm9ybWF0dGVyKHsgdHlwZTogImNvbmp1bmN0aW9uIiwgc3R5bGU6IG9wdHMubGlzdFN0eWxlIHx8ICJuYXJyb3ciLCAuLi5vcHRzIH0pCiAgICAgICAgLmZvcm1hdChsKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIHRoaXMgRHVyYXRpb24ncyB2YWx1ZXMuCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfSkudG9PYmplY3QoKSAvLz0+IHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfQogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICB0b09iamVjdCgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB7fTsKICAgICAgcmV0dXJuIHsgLi4udGhpcy52YWx1ZXMgfTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNEdXJhdGlvbnMKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMywgc2Vjb25kczogNDUgfSkudG9JU08oKSAvLz0+ICdQM1lUNDVTJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogNCwgc2Vjb25kczogNDUgfSkudG9JU08oKSAvLz0+ICdQNE1UNDVTJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogNSB9KS50b0lTTygpIC8vPT4gJ1A1TScKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiA1IH0pLnRvSVNPKCkgLy89PiAnUFQ1TScKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaWxsaXNlY29uZHM6IDYgfSkudG9JU08oKSAvLz0+ICdQVDAuMDA2UycKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU08oKSB7CiAgICAgIC8vIHdlIGNvdWxkIHVzZSB0aGUgZm9ybWF0dGVyLCBidXQgdGhpcyBpcyBhbiBlYXNpZXIgd2F5IHRvIGdldCB0aGUgbWluaW11bSBzdHJpbmcKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsOwoKICAgICAgbGV0IHMgPSAiUCI7CiAgICAgIGlmICh0aGlzLnllYXJzICE9PSAwKSBzICs9IHRoaXMueWVhcnMgKyAiWSI7CiAgICAgIGlmICh0aGlzLm1vbnRocyAhPT0gMCB8fCB0aGlzLnF1YXJ0ZXJzICE9PSAwKSBzICs9IHRoaXMubW9udGhzICsgdGhpcy5xdWFydGVycyAqIDMgKyAiTSI7CiAgICAgIGlmICh0aGlzLndlZWtzICE9PSAwKSBzICs9IHRoaXMud2Vla3MgKyAiVyI7CiAgICAgIGlmICh0aGlzLmRheXMgIT09IDApIHMgKz0gdGhpcy5kYXlzICsgIkQiOwogICAgICBpZiAodGhpcy5ob3VycyAhPT0gMCB8fCB0aGlzLm1pbnV0ZXMgIT09IDAgfHwgdGhpcy5zZWNvbmRzICE9PSAwIHx8IHRoaXMubWlsbGlzZWNvbmRzICE9PSAwKQogICAgICAgIHMgKz0gIlQiOwogICAgICBpZiAodGhpcy5ob3VycyAhPT0gMCkgcyArPSB0aGlzLmhvdXJzICsgIkgiOwogICAgICBpZiAodGhpcy5taW51dGVzICE9PSAwKSBzICs9IHRoaXMubWludXRlcyArICJNIjsKICAgICAgaWYgKHRoaXMuc2Vjb25kcyAhPT0gMCB8fCB0aGlzLm1pbGxpc2Vjb25kcyAhPT0gMCkKICAgICAgICAvLyB0aGlzIHdpbGwgaGFuZGxlICJmbG9hdGluZyBwb2ludCBtYWRuZXNzIiBieSByZW1vdmluZyBleHRyYSBkZWNpbWFsIHBsYWNlcwogICAgICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU4ODAwNC9pcy1mbG9hdGluZy1wb2ludC1tYXRoLWJyb2tlbgogICAgICAgIHMgKz0gcm91bmRUbyh0aGlzLnNlY29uZHMgKyB0aGlzLm1pbGxpc2Vjb25kcyAvIDEwMDAsIDMpICsgIlMiOwogICAgICBpZiAocyA9PT0gIlAiKSBzICs9ICJUMFMiOwogICAgICByZXR1cm4gczsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uLCBmb3JtYXR0ZWQgYXMgYSB0aW1lIG9mIGRheS4KICAgICAqIE5vdGUgdGhhdCB0aGlzIHdpbGwgcmV0dXJuIG51bGwgaWYgdGhlIGR1cmF0aW9uIGlzIGludmFsaWQsIG5lZ2F0aXZlLCBvciBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gMjQgaG91cnMuCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NNaWxsaXNlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBtaWxsaXNlY29uZHMgZnJvbSB0aGUgZm9ybWF0IGlmIHRoZXkncmUgMAogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc1NlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVByZWZpeD1mYWxzZV0gLSBpbmNsdWRlIHRoZSBgVGAgcHJlZml4CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKCkgLy89PiAnMTE6MDA6MDAuMDAwJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBzdXBwcmVzc01pbGxpc2Vjb25kczogdHJ1ZSB9KSAvLz0+ICcxMTowMDowMCcKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKHsgc3VwcHJlc3NTZWNvbmRzOiB0cnVlIH0pIC8vPT4gJzExOjAwJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBpbmNsdWRlUHJlZml4OiB0cnVlIH0pIC8vPT4gJ1QxMTowMDowMC4wMDAnCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcxMTAwMDAuMDAwJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT1RpbWUob3B0cyA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDsKCiAgICAgIGNvbnN0IG1pbGxpcyA9IHRoaXMudG9NaWxsaXMoKTsKICAgICAgaWYgKG1pbGxpcyA8IDAgfHwgbWlsbGlzID49IDg2NDAwMDAwKSByZXR1cm4gbnVsbDsKCiAgICAgIG9wdHMgPSB7CiAgICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHM6IGZhbHNlLAogICAgICAgIHN1cHByZXNzU2Vjb25kczogZmFsc2UsCiAgICAgICAgaW5jbHVkZVByZWZpeDogZmFsc2UsCiAgICAgICAgZm9ybWF0OiAiZXh0ZW5kZWQiLAogICAgICAgIC4uLm9wdHMsCiAgICAgICAgaW5jbHVkZU9mZnNldDogZmFsc2UsCiAgICAgIH07CgogICAgICBjb25zdCBkYXRlVGltZSA9IERhdGVUaW1lLmZyb21NaWxsaXMobWlsbGlzLCB7IHpvbmU6ICJVVEMiIH0pOwogICAgICByZXR1cm4gZGF0ZVRpbWUudG9JU09UaW1lKG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gSlNPTi4KICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9KU09OKCkgewogICAgICByZXR1cm4gdGhpcy50b0lTTygpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gZGVidWdnaW5nLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1N0cmluZygpIHsKICAgICAgcmV0dXJuIHRoaXMudG9JU08oKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gbWlsbGlzZWNvbmRzIHZhbHVlIG9mIHRoaXMgRHVyYXRpb24uCiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHRvTWlsbGlzKCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIE5hTjsKCiAgICAgIHJldHVybiBkdXJhdGlvblRvTWlsbGlzKHRoaXMubWF0cml4LCB0aGlzLnZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIG1pbGxpc2Vjb25kcyB2YWx1ZSBvZiB0aGlzIER1cmF0aW9uLiBBbGlhcyBvZiB7QGxpbmsgdG9NaWxsaXN9CiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHZhbHVlT2YoKSB7CiAgICAgIHJldHVybiB0aGlzLnRvTWlsbGlzKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBNYWtlIHRoaXMgRHVyYXRpb24gbG9uZ2VyIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgYW1vdW50IHRvIGFkZC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KCkKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBwbHVzKGR1cmF0aW9uKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKCiAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pLAogICAgICAgIHJlc3VsdCA9IHt9OwoKICAgICAgZm9yIChjb25zdCBrIG9mIG9yZGVyZWRVbml0cyQxKSB7CiAgICAgICAgaWYgKGhhc093blByb3BlcnR5KGR1ci52YWx1ZXMsIGspIHx8IGhhc093blByb3BlcnR5KHRoaXMudmFsdWVzLCBrKSkgewogICAgICAgICAgcmVzdWx0W2tdID0gZHVyLmdldChrKSArIHRoaXMuZ2V0KGspOwogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgeyB2YWx1ZXM6IHJlc3VsdCB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIE1ha2UgdGhpcyBEdXJhdGlvbiBzaG9ydGVyIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgYW1vdW50IHRvIHN1YnRyYWN0LiBFaXRoZXIgYSBMdXhvbiBEdXJhdGlvbiwgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCB0aGUgb2JqZWN0IGFyZ3VtZW50IHRvIER1cmF0aW9uLmZyb21PYmplY3QoKQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIG1pbnVzKGR1cmF0aW9uKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKCiAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pOwogICAgICByZXR1cm4gdGhpcy5wbHVzKGR1ci5uZWdhdGUoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTY2FsZSB0aGlzIER1cmF0aW9uIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZuIC0gVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggdW5pdC4gQXJpdHkgaXMgMSBvciAyOiB0aGUgdmFsdWUgb2YgdGhlIHVuaXQgYW5kLCBvcHRpb25hbGx5LCB0aGUgdW5pdCBuYW1lLiBNdXN0IHJldHVybiBhIG51bWJlci4KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSwgbWludXRlczogMzAgfSkubWFwVW5pdHMoeCA9PiB4ICogMikgLy89PiB7IGhvdXJzOiAyLCBtaW51dGVzOiA2MCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIG1pbnV0ZXM6IDMwIH0pLm1hcFVuaXRzKCh4LCB1KSA9PiB1ID09PSAiaG91cnMiID8geCAqIDIgOiB4KSAvLz0+IHsgaG91cnM6IDIsIG1pbnV0ZXM6IDMwIH0KICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBtYXBVbml0cyhmbikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHJlc3VsdCA9IHt9OwogICAgICBmb3IgKGNvbnN0IGsgb2YgT2JqZWN0LmtleXModGhpcy52YWx1ZXMpKSB7CiAgICAgICAgcmVzdWx0W2tdID0gYXNOdW1iZXIoZm4odGhpcy52YWx1ZXNba10sIGspKTsKICAgICAgfQogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogcmVzdWx0IH0sIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB2YWx1ZSBvZiB1bml0LgogICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBhIHVuaXQgc3VjaCBhcyAnbWludXRlJyBvciAnZGF5JwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7eWVhcnM6IDIsIGRheXM6IDN9KS5nZXQoJ3llYXJzJykgLy89PiAyCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgnbW9udGhzJykgLy89PiAwCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgnZGF5cycpIC8vPT4gMwogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQodW5pdCkgewogICAgICByZXR1cm4gdGhpc1tEdXJhdGlvbi5ub3JtYWxpemVVbml0KHVuaXQpXTsKICAgIH0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSB2YWx1ZXMgb2Ygc3BlY2lmaWVkIHVuaXRzLiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSBhIG1hcHBpbmcgb2YgdW5pdHMgdG8gbnVtYmVycwogICAgICogQGV4YW1wbGUgZHVyLnNldCh7IHllYXJzOiAyMDE3IH0pCiAgICAgKiBAZXhhbXBsZSBkdXIuc2V0KHsgaG91cnM6IDgsIG1pbnV0ZXM6IDMwIH0pCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc2V0KHZhbHVlcykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CgogICAgICBjb25zdCBtaXhlZCA9IHsgLi4udGhpcy52YWx1ZXMsIC4uLm5vcm1hbGl6ZU9iamVjdCh2YWx1ZXMsIER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpIH07CiAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIHsgdmFsdWVzOiBtaXhlZCB9KTsKICAgIH0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSBsb2NhbGUgYW5kL29yIG51bWJlcmluZ1N5c3RlbS4gIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBleGFtcGxlIGR1ci5yZWNvbmZpZ3VyZSh7IGxvY2FsZTogJ2VuLUdCJyB9KQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHJlY29uZmlndXJlKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIGNvbnZlcnNpb25BY2N1cmFjeSwgbWF0cml4IH0gPSB7fSkgewogICAgICBjb25zdCBsb2MgPSB0aGlzLmxvYy5jbG9uZSh7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtIH0pOwogICAgICBjb25zdCBvcHRzID0geyBsb2MsIG1hdHJpeCwgY29udmVyc2lvbkFjY3VyYWN5IH07CiAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIGR1cmF0aW9uIGluIHRoZSBzcGVjaWZpZWQgdW5pdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gYSB1bml0IHN1Y2ggYXMgJ21pbnV0ZXMnIG9yICdkYXlzJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7eWVhcnM6IDF9KS5hcygnZGF5cycpIC8vPT4gMzY1CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMX0pLmFzKCdtb250aHMnKSAvLz0+IDEyCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHtob3VyczogNjB9KS5hcygnZGF5cycpIC8vPT4gMi41CiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIGFzKHVuaXQpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuc2hpZnRUbyh1bml0KS5nZXQodW5pdCkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZWR1Y2UgdGhpcyBEdXJhdGlvbiB0byBpdHMgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIGluIGl0cyBjdXJyZW50IHVuaXRzLgogICAgICogQXNzdW1pbmcgdGhlIG92ZXJhbGwgdmFsdWUgb2YgdGhlIER1cmF0aW9uIGlzIHBvc2l0aXZlLCB0aGlzIG1lYW5zOgogICAgICogLSBleGNlc3NpdmUgdmFsdWVzIGZvciBsb3dlci1vcmRlciB1bml0cyBhcmUgY29udmVydGVkIHRvIGhpZ2hlci1vcmRlciB1bml0cyAoaWYgcG9zc2libGUsIHNlZSBmaXJzdCBhbmQgc2Vjb25kIGV4YW1wbGUpCiAgICAgKiAtIG5lZ2F0aXZlIGxvd2VyLW9yZGVyIHVuaXRzIGFyZSBjb252ZXJ0ZWQgdG8gaGlnaGVyIG9yZGVyIHVuaXRzICh0aGVyZSBtdXN0IGJlIHN1Y2ggYSBoaWdoZXIgb3JkZXIgdW5pdCwgb3RoZXJ3aXNlCiAgICAgKiAgIHRoZSBvdmVyYWxsIHZhbHVlIHdvdWxkIGJlIG5lZ2F0aXZlLCBzZWUgc2Vjb25kIGV4YW1wbGUpCiAgICAgKiAtIGZyYWN0aW9uYWwgdmFsdWVzIGZvciBoaWdoZXItb3JkZXIgdW5pdHMgYXJlIGNvbnZlcnRlZCB0byBsb3dlci1vcmRlciB1bml0cyAoaWYgcG9zc2libGUsIHNlZSBmb3VydGggZXhhbXBsZSkKICAgICAqCiAgICAgKiBJZiB0aGUgb3ZlcmFsbCB2YWx1ZSBpcyBuZWdhdGl2ZSwgdGhlIHJlc3VsdCBvZiB0aGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50IHRvIGB0aGlzLm5lZ2F0ZSgpLm5vcm1hbGl6ZSgpLm5lZ2F0ZSgpYC4KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMiwgZGF5czogNTAwMCB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogMTUsIGRheXM6IDI1NSB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogNTAwMCB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyBkYXlzOiA1MDAwIH0KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTIsIG1pbnV0ZXM6IC00NSB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDE1IH0KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMi41LCBkYXlzOiAwLCBob3VyczogMCB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogMiwgZGF5czogMTgyLCBob3VyczogMTIgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIG5vcm1hbGl6ZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCB2YWxzID0gdGhpcy50b09iamVjdCgpOwogICAgICBub3JtYWxpemVWYWx1ZXModGhpcy5tYXRyaXgsIHZhbHMpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogdmFscyB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlc2NhbGUgdW5pdHMgdG8gaXRzIGxhcmdlc3QgcmVwcmVzZW50YXRpb24KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaWxsaXNlY29uZHM6IDkwMDAwIH0pLnJlc2NhbGUoKS50b09iamVjdCgpIC8vPT4geyBtaW51dGVzOiAxLCBzZWNvbmRzOiAzMCB9CiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgcmVzY2FsZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCB2YWxzID0gcmVtb3ZlWmVyb2VzKHRoaXMubm9ybWFsaXplKCkuc2hpZnRUb0FsbCgpLnRvT2JqZWN0KCkpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogdmFscyB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnQgdGhpcyBEdXJhdGlvbiBpbnRvIGl0cyByZXByZXNlbnRhdGlvbiBpbiBhIGRpZmZlcmVudCBzZXQgb2YgdW5pdHMuCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIHNlY29uZHM6IDMwIH0pLnNoaWZ0VG8oJ21pbnV0ZXMnLCAnbWlsbGlzZWNvbmRzJykudG9PYmplY3QoKSAvLz0+IHsgbWludXRlczogNjAsIG1pbGxpc2Vjb25kczogMzAwMDAgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHNoaWZ0VG8oLi4udW5pdHMpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwoKICAgICAgaWYgKHVuaXRzLmxlbmd0aCA9PT0gMCkgewogICAgICAgIHJldHVybiB0aGlzOwogICAgICB9CgogICAgICB1bml0cyA9IHVuaXRzLm1hcCgodSkgPT4gRHVyYXRpb24ubm9ybWFsaXplVW5pdCh1KSk7CgogICAgICBjb25zdCBidWlsdCA9IHt9LAogICAgICAgIGFjY3VtdWxhdGVkID0ge30sCiAgICAgICAgdmFscyA9IHRoaXMudG9PYmplY3QoKTsKICAgICAgbGV0IGxhc3RVbml0OwoKICAgICAgZm9yIChjb25zdCBrIG9mIG9yZGVyZWRVbml0cyQxKSB7CiAgICAgICAgaWYgKHVuaXRzLmluZGV4T2YoaykgPj0gMCkgewogICAgICAgICAgbGFzdFVuaXQgPSBrOwoKICAgICAgICAgIGxldCBvd24gPSAwOwoKICAgICAgICAgIC8vIGFueXRoaW5nIHdlIGhhdmVuJ3QgYm9pbGVkIGRvd24geWV0IHNob3VsZCBnZXQgYm9pbGVkIHRvIHRoaXMgdW5pdAogICAgICAgICAgZm9yIChjb25zdCBhayBpbiBhY2N1bXVsYXRlZCkgewogICAgICAgICAgICBvd24gKz0gdGhpcy5tYXRyaXhbYWtdW2tdICogYWNjdW11bGF0ZWRbYWtdOwogICAgICAgICAgICBhY2N1bXVsYXRlZFtha10gPSAwOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIHBsdXMgYW55dGhpbmcgdGhhdCdzIGFscmVhZHkgaW4gdGhpcyB1bml0CiAgICAgICAgICBpZiAoaXNOdW1iZXIodmFsc1trXSkpIHsKICAgICAgICAgICAgb3duICs9IHZhbHNba107CiAgICAgICAgICB9CgogICAgICAgICAgLy8gb25seSBrZWVwIHRoZSBpbnRlZ2VyIHBhcnQgZm9yIG5vdyBpbiB0aGUgaG9wZXMgb2YgcHV0dGluZyBhbnkgZGVjaW1hbCBwYXJ0CiAgICAgICAgICAvLyBpbnRvIGEgc21hbGxlciB1bml0IGxhdGVyCiAgICAgICAgICBjb25zdCBpID0gTWF0aC50cnVuYyhvd24pOwogICAgICAgICAgYnVpbHRba10gPSBpOwogICAgICAgICAgYWNjdW11bGF0ZWRba10gPSAob3duICogMTAwMCAtIGkgKiAxMDAwKSAvIDEwMDA7CgogICAgICAgICAgLy8gb3RoZXJ3aXNlLCBrZWVwIGl0IGluIHRoZSB3aW5ncyB0byBib2lsIGl0IGxhdGVyCiAgICAgICAgfSBlbHNlIGlmIChpc051bWJlcih2YWxzW2tdKSkgewogICAgICAgICAgYWNjdW11bGF0ZWRba10gPSB2YWxzW2tdOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gYW55dGhpbmcgbGVmdG92ZXIgYmVjb21lcyB0aGUgZGVjaW1hbCBmb3IgdGhlIGxhc3QgdW5pdAogICAgICAvLyBsYXN0VW5pdCBtdXN0IGJlIGRlZmluZWQgc2luY2UgdW5pdHMgaXMgbm90IGVtcHR5CiAgICAgIGZvciAoY29uc3Qga2V5IGluIGFjY3VtdWxhdGVkKSB7CiAgICAgICAgaWYgKGFjY3VtdWxhdGVkW2tleV0gIT09IDApIHsKICAgICAgICAgIGJ1aWx0W2xhc3RVbml0XSArPQogICAgICAgICAgICBrZXkgPT09IGxhc3RVbml0ID8gYWNjdW11bGF0ZWRba2V5XSA6IGFjY3VtdWxhdGVkW2tleV0gLyB0aGlzLm1hdHJpeFtsYXN0VW5pdF1ba2V5XTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIG5vcm1hbGl6ZVZhbHVlcyh0aGlzLm1hdHJpeCwgYnVpbHQpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogYnVpbHQgfSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTaGlmdCB0aGlzIER1cmF0aW9uIHRvIGFsbCBhdmFpbGFibGUgdW5pdHMuCiAgICAgKiBTYW1lIGFzIHNoaWZ0VG8oInllYXJzIiwgIm1vbnRocyIsICJ3ZWVrcyIsICJkYXlzIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyIsICJtaWxsaXNlY29uZHMiKQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHNoaWZ0VG9BbGwoKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgcmV0dXJuIHRoaXMuc2hpZnRUbygKICAgICAgICAieWVhcnMiLAogICAgICAgICJtb250aHMiLAogICAgICAgICJ3ZWVrcyIsCiAgICAgICAgImRheXMiLAogICAgICAgICJob3VycyIsCiAgICAgICAgIm1pbnV0ZXMiLAogICAgICAgICJzZWNvbmRzIiwKICAgICAgICAibWlsbGlzZWNvbmRzIgogICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBuZWdhdGl2ZSBvZiB0aGlzIER1cmF0aW9uLgogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxLCBzZWNvbmRzOiAzMCB9KS5uZWdhdGUoKS50b09iamVjdCgpIC8vPT4geyBob3VyczogLTEsIHNlY29uZHM6IC0zMCB9CiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgbmVnYXRlKCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IG5lZ2F0ZWQgPSB7fTsKICAgICAgZm9yIChjb25zdCBrIG9mIE9iamVjdC5rZXlzKHRoaXMudmFsdWVzKSkgewogICAgICAgIG5lZ2F0ZWRba10gPSB0aGlzLnZhbHVlc1trXSA9PT0gMCA/IDAgOiAtdGhpcy52YWx1ZXNba107CiAgICAgIH0KICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgeyB2YWx1ZXM6IG5lZ2F0ZWQgfSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHllYXJzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHllYXJzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMueWVhcnMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgcXVhcnRlcnMuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgcXVhcnRlcnMoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5xdWFydGVycyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBtb250aHMuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbW9udGhzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMubW9udGhzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHdlZWtzCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgd2Vla3MoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy53ZWVrcyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkYXlzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGRheXMoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5kYXlzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGhvdXJzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGhvdXJzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMuaG91cnMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbWludXRlcy4KICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBtaW51dGVzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMubWludXRlcyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBzZWNvbmRzLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQgc2Vjb25kcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLnNlY29uZHMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbWlsbGlzZWNvbmRzLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbWlsbGlzZWNvbmRzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMubWlsbGlzZWNvbmRzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIER1cmF0aW9uIGlzIGludmFsaWQuIEludmFsaWQgZHVyYXRpb25zIGFyZSByZXR1cm5lZCBieSBkaWZmIG9wZXJhdGlvbnMKICAgICAqIG9uIGludmFsaWQgRGF0ZVRpbWVzIG9yIEludGVydmFscy4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID09PSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBlcnJvciBjb2RlIGlmIHRoaXMgRHVyYXRpb24gYmVjYW1lIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIER1cmF0aW9uIGlzIHZhbGlkCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkUmVhc29uKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIER1cmF0aW9uIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEdXJhdGlvbiBpcyB2YWxpZAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGludmFsaWRFeHBsYW5hdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBFcXVhbGl0eSBjaGVjawogICAgICogVHdvIER1cmF0aW9ucyBhcmUgZXF1YWwgaWZmIHRoZXkgaGF2ZSB0aGUgc2FtZSB1bml0cyBhbmQgdGhlIHNhbWUgdmFsdWVzIGZvciBlYWNoIHVuaXQuCiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufSBvdGhlcgogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgZXF1YWxzKG90aGVyKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkIHx8ICFvdGhlci5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CgogICAgICBpZiAoIXRoaXMubG9jLmVxdWFscyhvdGhlci5sb2MpKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CgogICAgICBmdW5jdGlvbiBlcSh2MSwgdjIpIHsKICAgICAgICAvLyBDb25zaWRlciAwIGFuZCB1bmRlZmluZWQgYXMgZXF1YWwKICAgICAgICBpZiAodjEgPT09IHVuZGVmaW5lZCB8fCB2MSA9PT0gMCkgcmV0dXJuIHYyID09PSB1bmRlZmluZWQgfHwgdjIgPT09IDA7CiAgICAgICAgcmV0dXJuIHYxID09PSB2MjsKICAgICAgfQoKICAgICAgZm9yIChjb25zdCB1IG9mIG9yZGVyZWRVbml0cyQxKSB7CiAgICAgICAgaWYgKCFlcSh0aGlzLnZhbHVlc1t1XSwgb3RoZXIudmFsdWVzW3VdKSkgewogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICB9CgogIGNvbnN0IElOVkFMSUQkMSA9ICJJbnZhbGlkIEludGVydmFsIjsKCiAgLy8gY2hlY2tzIGlmIHRoZSBzdGFydCBpcyBlcXVhbCB0byBvciBiZWZvcmUgdGhlIGVuZAogIGZ1bmN0aW9uIHZhbGlkYXRlU3RhcnRFbmQoc3RhcnQsIGVuZCkgewogICAgaWYgKCFzdGFydCB8fCAhc3RhcnQuaXNWYWxpZCkgewogICAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZCgibWlzc2luZyBvciBpbnZhbGlkIHN0YXJ0Iik7CiAgICB9IGVsc2UgaWYgKCFlbmQgfHwgIWVuZC5pc1ZhbGlkKSB7CiAgICAgIHJldHVybiBJbnRlcnZhbC5pbnZhbGlkKCJtaXNzaW5nIG9yIGludmFsaWQgZW5kIik7CiAgICB9IGVsc2UgaWYgKGVuZCA8IHN0YXJ0KSB7CiAgICAgIHJldHVybiBJbnRlcnZhbC5pbnZhbGlkKAogICAgICAgICJlbmQgYmVmb3JlIHN0YXJ0IiwKICAgICAgICBgVGhlIGVuZCBvZiBhbiBpbnRlcnZhbCBtdXN0IGJlIGFmdGVyIGl0cyBzdGFydCwgYnV0IHlvdSBoYWQgc3RhcnQ9JHtzdGFydC50b0lTTygpfSBhbmQgZW5kPSR7ZW5kLnRvSVNPKCl9YAogICAgICApOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgfQoKICAvKioKICAgKiBBbiBJbnRlcnZhbCBvYmplY3QgcmVwcmVzZW50cyBhIGhhbGYtb3BlbiBpbnRlcnZhbCBvZiB0aW1lLCB3aGVyZSBlYWNoIGVuZHBvaW50IGlzIGEge0BsaW5rIERhdGVUaW1lfS4gQ29uY2VwdHVhbGx5LCBpdCdzIGEgY29udGFpbmVyIGZvciB0aG9zZSB0d28gZW5kcG9pbnRzLCBhY2NvbXBhbmllZCBieSBtZXRob2RzIGZvciBjcmVhdGluZywgcGFyc2luZywgaW50ZXJyb2dhdGluZywgY29tcGFyaW5nLCB0cmFuc2Zvcm1pbmcsIGFuZCBmb3JtYXR0aW5nIHRoZW0uCiAgICoKICAgKiBIZXJlIGlzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBtZXRob2RzIGFuZCBnZXR0ZXJzIGluIEludGVydmFsOgogICAqCiAgICogKiAqKkNyZWF0aW9uKiogVG8gY3JlYXRlIGFuIEludGVydmFsLCB1c2Uge0BsaW5rIEludGVydmFsLmZyb21EYXRlVGltZXN9LCB7QGxpbmsgSW50ZXJ2YWwuYWZ0ZXJ9LCB7QGxpbmsgSW50ZXJ2YWwuYmVmb3JlfSwgb3Ige0BsaW5rIEludGVydmFsLmZyb21JU099LgogICAqICogKipBY2Nlc3NvcnMqKiBVc2Uge0BsaW5rIEludGVydmFsI3N0YXJ0fSBhbmQge0BsaW5rIEludGVydmFsI2VuZH0gdG8gZ2V0IHRoZSBzdGFydCBhbmQgZW5kLgogICAqICogKipJbnRlcnJvZ2F0aW9uKiogVG8gYW5hbHl6ZSB0aGUgSW50ZXJ2YWwsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjY291bnR9LCB7QGxpbmsgSW50ZXJ2YWwjbGVuZ3RofSwge0BsaW5rIEludGVydmFsI2hhc1NhbWV9LCB7QGxpbmsgSW50ZXJ2YWwjY29udGFpbnN9LCB7QGxpbmsgSW50ZXJ2YWwjaXNBZnRlcn0sIG9yIHtAbGluayBJbnRlcnZhbCNpc0JlZm9yZX0uCiAgICogKiAqKlRyYW5zZm9ybWF0aW9uKiogVG8gY3JlYXRlIG90aGVyIEludGVydmFscyBvdXQgb2YgdGhpcyBvbmUsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjc2V0fSwge0BsaW5rIEludGVydmFsI3NwbGl0QXR9LCB7QGxpbmsgSW50ZXJ2YWwjc3BsaXRCeX0sIHtAbGluayBJbnRlcnZhbCNkaXZpZGVFcXVhbGx5fSwge0BsaW5rIEludGVydmFsLm1lcmdlfSwge0BsaW5rIEludGVydmFsLnhvcn0sIHtAbGluayBJbnRlcnZhbCN1bmlvbn0sIHtAbGluayBJbnRlcnZhbCNpbnRlcnNlY3Rpb259LCBvciB7QGxpbmsgSW50ZXJ2YWwjZGlmZmVyZW5jZX0uCiAgICogKiAqKkNvbXBhcmlzb24qKiBUbyBjb21wYXJlIHRoaXMgSW50ZXJ2YWwgdG8gYW5vdGhlciBvbmUsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjZXF1YWxzfSwge0BsaW5rIEludGVydmFsI292ZXJsYXBzfSwge0BsaW5rIEludGVydmFsI2FidXRzU3RhcnR9LCB7QGxpbmsgSW50ZXJ2YWwjYWJ1dHNFbmR9LCB7QGxpbmsgSW50ZXJ2YWwjZW5ndWxmc30KICAgKiAqICoqT3V0cHV0KiogVG8gY29udmVydCB0aGUgSW50ZXJ2YWwgaW50byBvdGhlciByZXByZXNlbnRhdGlvbnMsIHNlZSB7QGxpbmsgSW50ZXJ2YWwjdG9TdHJpbmd9LCB7QGxpbmsgSW50ZXJ2YWwjdG9Mb2NhbGVTdHJpbmd9LCB7QGxpbmsgSW50ZXJ2YWwjdG9JU099LCB7QGxpbmsgSW50ZXJ2YWwjdG9JU09EYXRlfSwge0BsaW5rIEludGVydmFsI3RvSVNPVGltZX0sIHtAbGluayBJbnRlcnZhbCN0b0Zvcm1hdH0sIGFuZCB7QGxpbmsgSW50ZXJ2YWwjdG9EdXJhdGlvbn0uCiAgICovCiAgY2xhc3MgSW50ZXJ2YWwgewogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICBjb25zdHJ1Y3Rvcihjb25maWcpIHsKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgdGhpcy5zID0gY29uZmlnLnN0YXJ0OwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmUgPSBjb25maWcuZW5kOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmludmFsaWQgPSBjb25maWcuaW52YWxpZCB8fCBudWxsOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25JbnRlcnZhbCA9IHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW4gaW52YWxpZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSByZWFzb24gLSBzaW1wbGUgc3RyaW5nIG9mIHdoeSB0aGlzIEludGVydmFsIGlzIGludmFsaWQuIFNob3VsZCBub3QgY29udGFpbiBwYXJhbWV0ZXJzIG9yIGFueXRoaW5nIGVsc2UgZGF0YS1kZXBlbmRlbnQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbZXhwbGFuYXRpb249bnVsbF0gLSBsb25nZXIgZXhwbGFuYXRpb24sIG1heSBpbmNsdWRlIHBhcmFtZXRlcnMgYW5kIG90aGVyIHVzZWZ1bCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24KICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICBzdGF0aWMgaW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uID0gbnVsbCkgewogICAgICBpZiAoIXJlYXNvbikgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigibmVlZCB0byBzcGVjaWZ5IGEgcmVhc29uIHRoZSBJbnRlcnZhbCBpcyBpbnZhbGlkIik7CiAgICAgIH0KCiAgICAgIGNvbnN0IGludmFsaWQgPSByZWFzb24gaW5zdGFuY2VvZiBJbnZhbGlkID8gcmVhc29uIDogbmV3IEludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbik7CgogICAgICBpZiAoU2V0dGluZ3MudGhyb3dPbkludmFsaWQpIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEludGVydmFsRXJyb3IoaW52YWxpZCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIG5ldyBJbnRlcnZhbCh7IGludmFsaWQgfSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGEgc3RhcnQgRGF0ZVRpbWUgYW5kIGFuIGVuZCBEYXRlVGltZS4gSW5jbHVzaXZlIG9mIHRoZSBzdGFydCBidXQgbm90IHRoZSBlbmQuCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfERhdGV8T2JqZWN0fSBzdGFydAogICAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gZW5kCiAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAqLwogICAgc3RhdGljIGZyb21EYXRlVGltZXMoc3RhcnQsIGVuZCkgewogICAgICBjb25zdCBidWlsdFN0YXJ0ID0gZnJpZW5kbHlEYXRlVGltZShzdGFydCksCiAgICAgICAgYnVpbHRFbmQgPSBmcmllbmRseURhdGVUaW1lKGVuZCk7CgogICAgICBjb25zdCB2YWxpZGF0ZUVycm9yID0gdmFsaWRhdGVTdGFydEVuZChidWlsdFN0YXJ0LCBidWlsdEVuZCk7CgogICAgICBpZiAodmFsaWRhdGVFcnJvciA9PSBudWxsKSB7CiAgICAgICAgcmV0dXJuIG5ldyBJbnRlcnZhbCh7CiAgICAgICAgICBzdGFydDogYnVpbHRTdGFydCwKICAgICAgICAgIGVuZDogYnVpbHRFbmQsCiAgICAgICAgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHZhbGlkYXRlRXJyb3I7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGEgc3RhcnQgRGF0ZVRpbWUgYW5kIGEgRHVyYXRpb24gdG8gZXh0ZW5kIHRvLgogICAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gc3RhcnQKICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbC4KICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICBzdGF0aWMgYWZ0ZXIoc3RhcnQsIGR1cmF0aW9uKSB7CiAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pLAogICAgICAgIGR0ID0gZnJpZW5kbHlEYXRlVGltZShzdGFydCk7CiAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0LCBkdC5wbHVzKGR1cikpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYW4gZW5kIERhdGVUaW1lIGFuZCBhIER1cmF0aW9uIHRvIGV4dGVuZCBiYWNrd2FyZHMgdG8uCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfERhdGV8T2JqZWN0fSBlbmQKICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbC4KICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICBzdGF0aWMgYmVmb3JlKGVuZCwgZHVyYXRpb24pIHsKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbiksCiAgICAgICAgZHQgPSBmcmllbmRseURhdGVUaW1lKGVuZCk7CiAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0Lm1pbnVzKGR1ciksIGR0KTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGFuIElTTyA4NjAxIHN0cmluZy4KICAgICAqIEFjY2VwdHMgYDxzdGFydD4vPGVuZD5gLCBgPHN0YXJ0Pi88ZHVyYXRpb24+YCwgYW5kIGA8ZHVyYXRpb24+LzxlbmQ+YCBmb3JtYXRzLgogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZyB0byBwYXJzZQogICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIG9wdGlvbnMgdG8gcGFzcyB7QGxpbmsgRGF0ZVRpbWUjZnJvbUlTT30gYW5kIG9wdGlvbmFsbHkge0BsaW5rIER1cmF0aW9uI2Zyb21JU099CiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVfaW50ZXJ2YWxzCiAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAqLwogICAgc3RhdGljIGZyb21JU08odGV4dCwgb3B0cykgewogICAgICBjb25zdCBbcywgZV0gPSAodGV4dCB8fCAiIikuc3BsaXQoIi8iLCAyKTsKICAgICAgaWYgKHMgJiYgZSkgewogICAgICAgIGxldCBzdGFydCwgc3RhcnRJc1ZhbGlkOwogICAgICAgIHRyeSB7CiAgICAgICAgICBzdGFydCA9IERhdGVUaW1lLmZyb21JU08ocywgb3B0cyk7CiAgICAgICAgICBzdGFydElzVmFsaWQgPSBzdGFydC5pc1ZhbGlkOwogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgIHN0YXJ0SXNWYWxpZCA9IGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgbGV0IGVuZCwgZW5kSXNWYWxpZDsKICAgICAgICB0cnkgewogICAgICAgICAgZW5kID0gRGF0ZVRpbWUuZnJvbUlTTyhlLCBvcHRzKTsKICAgICAgICAgIGVuZElzVmFsaWQgPSBlbmQuaXNWYWxpZDsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICBlbmRJc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoc3RhcnRJc1ZhbGlkICYmIGVuZElzVmFsaWQpIHsKICAgICAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHN0YXJ0LCBlbmQpOwogICAgICAgIH0KCiAgICAgICAgaWYgKHN0YXJ0SXNWYWxpZCkgewogICAgICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUlTTyhlLCBvcHRzKTsKICAgICAgICAgIGlmIChkdXIuaXNWYWxpZCkgewogICAgICAgICAgICByZXR1cm4gSW50ZXJ2YWwuYWZ0ZXIoc3RhcnQsIGR1cik7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChlbmRJc1ZhbGlkKSB7CiAgICAgICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tSVNPKHMsIG9wdHMpOwogICAgICAgICAgaWYgKGR1ci5pc1ZhbGlkKSB7CiAgICAgICAgICAgIHJldHVybiBJbnRlcnZhbC5iZWZvcmUoZW5kLCBkdXIpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZCgidW5wYXJzYWJsZSIsIGB0aGUgaW5wdXQgIiR7dGV4dH0iIGNhbid0IGJlIHBhcnNlZCBhcyBJU08gODYwMWApOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgaWYgYW4gb2JqZWN0IGlzIGFuIEludGVydmFsLiBXb3JrcyBhY3Jvc3MgY29udGV4dCBib3VuZGFyaWVzCiAgICAgKiBAcGFyYW0ge29iamVjdH0gbwogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgc3RhdGljIGlzSW50ZXJ2YWwobykgewogICAgICByZXR1cm4gKG8gJiYgby5pc0x1eG9uSW50ZXJ2YWwpIHx8IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgc3RhcnQgb2YgdGhlIEludGVydmFsCiAgICAgKiBAdHlwZSB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIGdldCBzdGFydCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMucyA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBlbmQgb2YgdGhlIEludGVydmFsCiAgICAgKiBAdHlwZSB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIGdldCBlbmQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmUgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBlbmQgaXMgYXQgbGVhc3QgaXRzIHN0YXJ0LCBtZWFuaW5nIHRoYXQgdGhlIEludGVydmFsIGlzbid0ICdiYWNrd2FyZHMnLgogICAgICogQHR5cGUge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkUmVhc29uID09PSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBlcnJvciBjb2RlIGlmIHRoaXMgSW50ZXJ2YWwgaXMgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgSW50ZXJ2YWwgaXMgdmFsaWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkUmVhc29uKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIEludGVydmFsIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBJbnRlcnZhbCBpcyB2YWxpZAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGludmFsaWRFeHBsYW5hdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIEludGVydmFsIGluIHRoZSBzcGVjaWZpZWQgdW5pdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gdGhlIHVuaXQgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIHJldHVybiB0aGUgbGVuZ3RoIGluLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBsZW5ndGgodW5pdCA9ICJtaWxsaXNlY29uZHMiKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRvRHVyYXRpb24oLi4uW3VuaXRdKS5nZXQodW5pdCkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBjb3VudCBvZiBtaW51dGVzLCBob3VycywgZGF5cywgbW9udGhzLCBvciB5ZWFycyBpbmNsdWRlZCBpbiB0aGUgSW50ZXJ2YWwsIGV2ZW4gaW4gcGFydC4KICAgICAqIFVubGlrZSB7QGxpbmsgSW50ZXJ2YWwjbGVuZ3RofSB0aGlzIGNvdW50cyBzZWN0aW9ucyBvZiB0aGUgY2FsZW5kYXIsIG5vdCBwZXJpb2RzIG9mIHRpbWUsIGUuZy4gc3BlY2lmeWluZyAnZGF5JwogICAgICogYXNrcyAnd2hhdCBkYXRlcyBhcmUgaW5jbHVkZWQgaW4gdGhpcyBpbnRlcnZhbD8nLCBub3QgJ2hvdyBtYW55IGRheXMgbG9uZyBpcyB0aGlzIGludGVydmFsPycKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdW5pdD0nbWlsbGlzZWNvbmRzJ10gLSB0aGUgdW5pdCBvZiB0aW1lIHRvIGNvdW50LgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBjb3VudCh1bml0ID0gIm1pbGxpc2Vjb25kcyIpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBOYU47CiAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5zdGFydC5zdGFydE9mKHVuaXQpLAogICAgICAgIGVuZCA9IHRoaXMuZW5kLnN0YXJ0T2YodW5pdCk7CiAgICAgIHJldHVybiBNYXRoLmZsb29yKGVuZC5kaWZmKHN0YXJ0LCB1bml0KS5nZXQodW5pdCkpICsgKGVuZC52YWx1ZU9mKCkgIT09IHRoaXMuZW5kLnZhbHVlT2YoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIHN0YXJ0IGFuZCBlbmQgYXJlIGJvdGggaW4gdGhlIHNhbWUgdW5pdCBvZiB0aW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY2hlY2sgc2FtZW5lc3Mgb24KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGhhc1NhbWUodW5pdCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5pc0VtcHR5KCkgfHwgdGhpcy5lLm1pbnVzKDEpLmhhc1NhbWUodGhpcy5zLCB1bml0KSA6IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBoYXMgdGhlIHNhbWUgc3RhcnQgYW5kIGVuZCBEYXRlVGltZXMuCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBpc0VtcHR5KCkgewogICAgICByZXR1cm4gdGhpcy5zLnZhbHVlT2YoKSA9PT0gdGhpcy5lLnZhbHVlT2YoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBzdGFydCBpcyBhZnRlciB0aGUgc3BlY2lmaWVkIERhdGVUaW1lLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGlzQWZ0ZXIoZGF0ZVRpbWUpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTsKICAgICAgcmV0dXJuIHRoaXMucyA+IGRhdGVUaW1lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBiZWZvcmUgdGhlIHNwZWNpZmllZCBEYXRlVGltZS4KICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IGRhdGVUaW1lCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBpc0JlZm9yZShkYXRlVGltZSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gdGhpcy5lIDw9IGRhdGVUaW1lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBjb250YWlucyB0aGUgc3BlY2lmaWVkIERhdGVUaW1lLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGNvbnRhaW5zKGRhdGVUaW1lKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CiAgICAgIHJldHVybiB0aGlzLnMgPD0gZGF0ZVRpbWUgJiYgdGhpcy5lID4gZGF0ZVRpbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0cyIgdGhlIHN0YXJ0IGFuZC9vciBlbmQgZGF0ZXMuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSB0aGUgdmFsdWVzIHRvIHNldAogICAgICogQHBhcmFtIHtEYXRlVGltZX0gdmFsdWVzLnN0YXJ0IC0gdGhlIHN0YXJ0aW5nIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSB2YWx1ZXMuZW5kIC0gdGhlIGVuZGluZyBEYXRlVGltZQogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKi8KICAgIHNldCh7IHN0YXJ0LCBlbmQgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMoc3RhcnQgfHwgdGhpcy5zLCBlbmQgfHwgdGhpcy5lKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgYXQgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIERhdGVUaW1lcwogICAgICogQHBhcmFtIHsuLi5EYXRlVGltZX0gZGF0ZVRpbWVzIC0gdGhlIHVuaXQgb2YgdGltZSB0byBjb3VudC4KICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzcGxpdEF0KC4uLmRhdGVUaW1lcykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIFtdOwogICAgICBjb25zdCBzb3J0ZWQgPSBkYXRlVGltZXMKICAgICAgICAgIC5tYXAoZnJpZW5kbHlEYXRlVGltZSkKICAgICAgICAgIC5maWx0ZXIoKGQpID0+IHRoaXMuY29udGFpbnMoZCkpCiAgICAgICAgICAuc29ydCgpLAogICAgICAgIHJlc3VsdHMgPSBbXTsKICAgICAgbGV0IHsgcyB9ID0gdGhpcywKICAgICAgICBpID0gMDsKCiAgICAgIHdoaWxlIChzIDwgdGhpcy5lKSB7CiAgICAgICAgY29uc3QgYWRkZWQgPSBzb3J0ZWRbaV0gfHwgdGhpcy5lLAogICAgICAgICAgbmV4dCA9ICthZGRlZCA+ICt0aGlzLmUgPyB0aGlzLmUgOiBhZGRlZDsKICAgICAgICByZXN1bHRzLnB1c2goSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBuZXh0KSk7CiAgICAgICAgcyA9IG5leHQ7CiAgICAgICAgaSArPSAxOwogICAgICB9CgogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0KCiAgICAvKioKICAgICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgaW50byBzbWFsbGVyIEludGVydmFscywgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIGxlbmd0aC4KICAgICAqIExlZnQgb3ZlciB0aW1lIGlzIGdyb3VwZWQgaW50byBhIHNtYWxsZXIgaW50ZXJ2YWwKICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgbGVuZ3RoIG9mIGVhY2ggcmVzdWx0aW5nIGludGVydmFsLgogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIHNwbGl0QnkoZHVyYXRpb24pIHsKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbik7CgogICAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCAhZHVyLmlzVmFsaWQgfHwgZHVyLmFzKCJtaWxsaXNlY29uZHMiKSA9PT0gMCkgewogICAgICAgIHJldHVybiBbXTsKICAgICAgfQoKICAgICAgbGV0IHsgcyB9ID0gdGhpcywKICAgICAgICBpZHggPSAxLAogICAgICAgIG5leHQ7CgogICAgICBjb25zdCByZXN1bHRzID0gW107CiAgICAgIHdoaWxlIChzIDwgdGhpcy5lKSB7CiAgICAgICAgY29uc3QgYWRkZWQgPSB0aGlzLnN0YXJ0LnBsdXMoZHVyLm1hcFVuaXRzKCh4KSA9PiB4ICogaWR4KSk7CiAgICAgICAgbmV4dCA9ICthZGRlZCA+ICt0aGlzLmUgPyB0aGlzLmUgOiBhZGRlZDsKICAgICAgICByZXN1bHRzLnB1c2goSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBuZXh0KSk7CiAgICAgICAgcyA9IG5leHQ7CiAgICAgICAgaWR4ICs9IDE7CiAgICAgIH0KCiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfQoKICAgIC8qKgogICAgICogU3BsaXQgdGhpcyBJbnRlcnZhbCBpbnRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHNtYWxsZXIgaW50ZXJ2YWxzLgogICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlck9mUGFydHMgLSBUaGUgbnVtYmVyIG9mIEludGVydmFscyB0byBkaXZpZGUgdGhlIEludGVydmFsIGludG8uCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgZGl2aWRlRXF1YWxseShudW1iZXJPZlBhcnRzKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gW107CiAgICAgIHJldHVybiB0aGlzLnNwbGl0QnkodGhpcy5sZW5ndGgoKSAvIG51bWJlck9mUGFydHMpLnNsaWNlKDAsIG51bWJlck9mUGFydHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBvdmVybGFwcyB3aXRoIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwKICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBvdmVybGFwcyhvdGhlcikgewogICAgICByZXR1cm4gdGhpcy5lID4gb3RoZXIucyAmJiB0aGlzLnMgPCBvdGhlci5lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBhZGphY2VudCB0byB0aGUgc3BlY2lmaWVkIEludGVydmFsJ3Mgc3RhcnQuCiAgICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlcgogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgYWJ1dHNTdGFydChvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gK3RoaXMuZSA9PT0gK290aGVyLnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsJ3Mgc3RhcnQgaXMgYWRqYWNlbnQgdG8gdGhlIHNwZWNpZmllZCBJbnRlcnZhbCdzIGVuZC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBhYnV0c0VuZChvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gK290aGVyLmUgPT09ICt0aGlzLnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsIGVuZ3VsZnMgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBlbmd1bGZzKG90aGVyKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CiAgICAgIHJldHVybiB0aGlzLnMgPD0gb3RoZXIucyAmJiB0aGlzLmUgPj0gb3RoZXIuZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwgaGFzIHRoZSBzYW1lIHN0YXJ0IGFuZCBlbmQgYXMgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBlcXVhbHMob3RoZXIpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIW90aGVyLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzLnMuZXF1YWxzKG90aGVyLnMpICYmIHRoaXMuZS5lcXVhbHMob3RoZXIuZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhpcyBJbnRlcnZhbCBhbmQgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIFNwZWNpZmljYWxseSwgdGhlIHJlc3VsdGluZyBJbnRlcnZhbCBoYXMgdGhlIG1heGltdW0gc3RhcnQgdGltZSBhbmQgdGhlIG1pbmltdW0gZW5kIHRpbWUgb2YgdGhlIHR3byBJbnRlcnZhbHMuCiAgICAgKiBSZXR1cm5zIG51bGwgaWYgdGhlIGludGVyc2VjdGlvbiBpcyBlbXB0eSwgbWVhbmluZywgdGhlIGludGVydmFscyBkb24ndCBpbnRlcnNlY3QuCiAgICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlcgogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKi8KICAgIGludGVyc2VjdGlvbihvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHMgPSB0aGlzLnMgPiBvdGhlci5zID8gdGhpcy5zIDogb3RoZXIucywKICAgICAgICBlID0gdGhpcy5lIDwgb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7CgogICAgICBpZiAocyA+PSBlKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMocywgZSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBJbnRlcnZhbCByZXByZXNlbnRpbmcgdGhlIHVuaW9uIG9mIHRoaXMgSW50ZXJ2YWwgYW5kIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwuCiAgICAgKiBTcGVjaWZpY2FsbHksIHRoZSByZXN1bHRpbmcgSW50ZXJ2YWwgaGFzIHRoZSBtaW5pbXVtIHN0YXJ0IHRpbWUgYW5kIHRoZSBtYXhpbXVtIGVuZCB0aW1lIG9mIHRoZSB0d28gSW50ZXJ2YWxzLgogICAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXIKICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICB1bmlvbihvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHMgPSB0aGlzLnMgPCBvdGhlci5zID8gdGhpcy5zIDogb3RoZXIucywKICAgICAgICBlID0gdGhpcy5lID4gb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7CiAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHMsIGUpOwogICAgfQoKICAgIC8qKgogICAgICogTWVyZ2UgYW4gYXJyYXkgb2YgSW50ZXJ2YWxzIGludG8gYSBlcXVpdmFsZW50IG1pbmltYWwgc2V0IG9mIEludGVydmFscy4KICAgICAqIENvbWJpbmVzIG92ZXJsYXBwaW5nIGFuZCBhZGphY2VudCBJbnRlcnZhbHMuCiAgICAgKiBAcGFyYW0ge0FycmF5fSBpbnRlcnZhbHMKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgbWVyZ2UoaW50ZXJ2YWxzKSB7CiAgICAgIGNvbnN0IFtmb3VuZCwgZmluYWxdID0gaW50ZXJ2YWxzCiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEucyAtIGIucykKICAgICAgICAucmVkdWNlKAogICAgICAgICAgKFtzb2ZhciwgY3VycmVudF0sIGl0ZW0pID0+IHsKICAgICAgICAgICAgaWYgKCFjdXJyZW50KSB7CiAgICAgICAgICAgICAgcmV0dXJuIFtzb2ZhciwgaXRlbV07CiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudC5vdmVybGFwcyhpdGVtKSB8fCBjdXJyZW50LmFidXRzU3RhcnQoaXRlbSkpIHsKICAgICAgICAgICAgICByZXR1cm4gW3NvZmFyLCBjdXJyZW50LnVuaW9uKGl0ZW0pXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gW3NvZmFyLmNvbmNhdChbY3VycmVudF0pLCBpdGVtXTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIFtbXSwgbnVsbF0KICAgICAgICApOwogICAgICBpZiAoZmluYWwpIHsKICAgICAgICBmb3VuZC5wdXNoKGZpbmFsKTsKICAgICAgfQogICAgICByZXR1cm4gZm91bmQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgSW50ZXJ2YWxzIHJlcHJlc2VudGluZyB0aGUgc3BhbnMgb2YgdGltZSB0aGF0IG9ubHkgYXBwZWFyIGluIG9uZSBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFscy4KICAgICAqIEBwYXJhbSB7QXJyYXl9IGludGVydmFscwogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIHN0YXRpYyB4b3IoaW50ZXJ2YWxzKSB7CiAgICAgIGxldCBzdGFydCA9IG51bGwsCiAgICAgICAgY3VycmVudENvdW50ID0gMDsKICAgICAgY29uc3QgcmVzdWx0cyA9IFtdLAogICAgICAgIGVuZHMgPSBpbnRlcnZhbHMubWFwKChpKSA9PiBbCiAgICAgICAgICB7IHRpbWU6IGkucywgdHlwZTogInMiIH0sCiAgICAgICAgICB7IHRpbWU6IGkuZSwgdHlwZTogImUiIH0sCiAgICAgICAgXSksCiAgICAgICAgZmxhdHRlbmVkID0gQXJyYXkucHJvdG90eXBlLmNvbmNhdCguLi5lbmRzKSwKICAgICAgICBhcnIgPSBmbGF0dGVuZWQuc29ydCgoYSwgYikgPT4gYS50aW1lIC0gYi50aW1lKTsKCiAgICAgIGZvciAoY29uc3QgaSBvZiBhcnIpIHsKICAgICAgICBjdXJyZW50Q291bnQgKz0gaS50eXBlID09PSAicyIgPyAxIDogLTE7CgogICAgICAgIGlmIChjdXJyZW50Q291bnQgPT09IDEpIHsKICAgICAgICAgIHN0YXJ0ID0gaS50aW1lOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAoc3RhcnQgJiYgK3N0YXJ0ICE9PSAraS50aW1lKSB7CiAgICAgICAgICAgIHJlc3VsdHMucHVzaChJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHN0YXJ0LCBpLnRpbWUpKTsKICAgICAgICAgIH0KCiAgICAgICAgICBzdGFydCA9IG51bGw7CiAgICAgICAgfQogICAgICB9CgogICAgICByZXR1cm4gSW50ZXJ2YWwubWVyZ2UocmVzdWx0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBzcGFuIG9mIHRpbWUgaW4gdGhpcyBJbnRlcnZhbCB0aGF0IGRvZXNuJ3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFscy4KICAgICAqIEBwYXJhbSB7Li4uSW50ZXJ2YWx9IGludGVydmFscwogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIGRpZmZlcmVuY2UoLi4uaW50ZXJ2YWxzKSB7CiAgICAgIHJldHVybiBJbnRlcnZhbC54b3IoW3RoaXNdLmNvbmNhdChpbnRlcnZhbHMpKQogICAgICAgIC5tYXAoKGkpID0+IHRoaXMuaW50ZXJzZWN0aW9uKGkpKQogICAgICAgIC5maWx0ZXIoKGkpID0+IGkgJiYgIWkuaXNFbXB0eSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBJbnRlcnZhbCBhcHByb3ByaWF0ZSBmb3IgZGVidWdnaW5nLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1N0cmluZygpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEJDE7CiAgICAgIHJldHVybiBgWyR7dGhpcy5zLnRvSVNPKCl9IOKAkyAke3RoaXMuZS50b0lTTygpfSlgOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGxvY2FsaXplZCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoaXMgSW50ZXJ2YWwuIEFjY2VwdHMgdGhlIHNhbWUgb3B0aW9ucyBhcyB0aGUKICAgICAqIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgYW5kIGFueSBwcmVzZXRzIGRlZmluZWQgYnkgTHV4b24sIHN1Y2ggYXMKICAgICAqIHtAbGluayBEYXRlVGltZS5EQVRFX0ZVTEx9IG9yIHtAbGluayBEYXRlVGltZS5USU1FX1NJTVBMRX0uIFRoZSBleGFjdCBiZWhhdmlvciBvZiB0aGlzIG1ldGhvZAogICAgICogaXMgYnJvd3Nlci1zcGVjaWZpYywgYnV0IGluIGdlbmVyYWwgaXQgd2lsbCByZXR1cm4gYW4gYXBwcm9wcmlhdGUgcmVwcmVzZW50YXRpb24gb2YgdGhlCiAgICAgKiBJbnRlcnZhbCBpbiB0aGUgYXNzaWduZWQgbG9jYWxlLiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbgogICAgICogc3BlY2lmaWVkLgogICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlVGltZUZvcm1hdAogICAgICogQHBhcmFtIHtPYmplY3R9IFtmb3JtYXRPcHRzPURhdGVUaW1lLkRBVEVfU0hPUlRdIC0gRWl0aGVyIGEgRGF0ZVRpbWUgcHJlc2V0IG9yCiAgICAgKiBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yIG9wdGlvbnMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHN0YXJ0IERhdGVUaW1lLgogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbUlTTygnMjAyMi0xMS0wN1QwOTowMFovMjAyMi0xMS0wOFQwOTowMFonKS50b0xvY2FsZVN0cmluZygpOyAvLz0+IDExLzcvMjAyMiDigJMgMTEvOC8yMDIyCiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tSVNPKCcyMDIyLTExLTA3VDA5OjAwWi8yMDIyLTExLTA4VDA5OjAwWicpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfRlVMTCk7IC8vPT4gTm92ZW1iZXIgNyDigJMgOCwgMjAyMgogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbUlTTygnMjAyMi0xMS0wN1QwOTowMFovMjAyMi0xMS0wOFQwOTowMFonKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFX0ZVTEwsIHsgbG9jYWxlOiAnZnItRlInIH0pOyAvLz0+IDfigJM4IG5vdmVtYnJlIDIwMjIKICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21JU08oJzIwMjItMTEtMDdUMTc6MDBaLzIwMjItMTEtMDdUMTk6MDBaJykudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuVElNRV9TSU1QTEUpOyAvLz0+IDY6MDAg4oCTIDg6MDAgUE0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21JU08oJzIwMjItMTEtMDdUMTc6MDBaLzIwMjItMTEtMDdUMTk6MDBaJykudG9Mb2NhbGVTdHJpbmcoeyB3ZWVrZGF5OiAnc2hvcnQnLCBtb250aDogJ3Nob3J0JywgZGF5OiAnMi1kaWdpdCcsIGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcgfSk7IC8vPT4gTW9uLCBOb3YgMDcsIDY6MDAg4oCTIDg6MDAgcAogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0xvY2FsZVN0cmluZyhmb3JtYXRPcHRzID0gREFURV9TSE9SVCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5zLmxvYy5jbG9uZShvcHRzKSwgZm9ybWF0T3B0cykuZm9ybWF0SW50ZXJ2YWwodGhpcykKICAgICAgICA6IElOVkFMSUQkMTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEludGVydmFsLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBUaGUgc2FtZSBvcHRpb25zIGFzIHtAbGluayBEYXRlVGltZSN0b0lTT30KICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU08ob3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQkMTsKICAgICAgcmV0dXJuIGAke3RoaXMucy50b0lTTyhvcHRzKX0vJHt0aGlzLmUudG9JU08ob3B0cyl9YDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBkYXRlIG9mIHRoaXMgSW50ZXJ2YWwuCiAgICAgKiBUaGUgdGltZSBjb21wb25lbnRzIGFyZSBpZ25vcmVkLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT0RhdGUoKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRCQxOwogICAgICByZXR1cm4gYCR7dGhpcy5zLnRvSVNPRGF0ZSgpfS8ke3RoaXMuZS50b0lTT0RhdGUoKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRpbWUgb2YgdGhpcyBJbnRlcnZhbC4KICAgICAqIFRoZSBkYXRlIGNvbXBvbmVudHMgYXJlIGlnbm9yZWQuCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVfaW50ZXJ2YWxzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIFRoZSBzYW1lIG9wdGlvbnMgYXMge0BsaW5rIERhdGVUaW1lI3RvSVNPfQogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT1RpbWUob3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQkMTsKICAgICAgcmV0dXJuIGAke3RoaXMucy50b0lTT1RpbWUob3B0cyl9LyR7dGhpcy5lLnRvSVNPVGltZShvcHRzKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEludGVydmFsIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBmb3JtYXQKICAgICAqIHN0cmluZy4gKipZb3UgbWF5IG5vdCB3YW50IHRoaXMuKiogU2VlIHtAbGluayBJbnRlcnZhbCN0b0xvY2FsZVN0cmluZ30gZm9yIGEgbW9yZSBmbGV4aWJsZQogICAgICogZm9ybWF0dGluZyB0b29sLgogICAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGVGb3JtYXQgLSBUaGUgZm9ybWF0IHN0cmluZy4gVGhpcyBzdHJpbmcgZm9ybWF0cyB0aGUgc3RhcnQgYW5kIGVuZCB0aW1lLgogICAgICogU2VlIHtAbGluayBEYXRlVGltZSN0b0Zvcm1hdH0gZm9yIGRldGFpbHMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuc2VwYXJhdG9yID0gICcg4oCTICddIC0gQSBzZXBhcmF0b3IgdG8gcGxhY2UgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZAogICAgICogcmVwcmVzZW50YXRpb25zLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0Zvcm1hdChkYXRlRm9ybWF0LCB7IHNlcGFyYXRvciA9ICIg4oCTICIgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRCQxOwogICAgICByZXR1cm4gYCR7dGhpcy5zLnRvRm9ybWF0KGRhdGVGb3JtYXQpfSR7c2VwYXJhdG9yfSR7dGhpcy5lLnRvRm9ybWF0KGRhdGVGb3JtYXQpfWA7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYSBEdXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIHRpbWUgc3Bhbm5lZCBieSB0aGlzIGludGVydmFsLgogICAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFt1bml0PVsnbWlsbGlzZWNvbmRzJ11dIC0gdGhlIHVuaXQgb3IgdW5pdHMgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIGluY2x1ZGUgaW4gdGhlIGR1cmF0aW9uLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbigpLnRvT2JqZWN0KCkgLy89PiB7IG1pbGxpc2Vjb25kczogODg0ODkyNTcgfQogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbignZGF5cycpLnRvT2JqZWN0KCkgLy89PiB7IGRheXM6IDEuMDI0MTgxMjE1Mjc3Nzc3OCB9CiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS50b0R1cmF0aW9uKFsnaG91cnMnLCAnbWludXRlcyddKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjQsIG1pbnV0ZXM6IDM0LjgyMDk1IH0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oWydob3VycycsICdtaW51dGVzJywgJ3NlY29uZHMnXSkudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDI0LCBtaW51dGVzOiAzNCwgc2Vjb25kczogNDkuMjU3IH0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oJ3NlY29uZHMnKS50b09iamVjdCgpIC8vPT4geyBzZWNvbmRzOiA4ODQ4OS4yNTcgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHRvRHVyYXRpb24odW5pdCwgb3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKHRoaXMuaW52YWxpZFJlYXNvbik7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuZS5kaWZmKHRoaXMucywgdW5pdCwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSdW4gbWFwRm4gb24gdGhlIGludGVydmFsIHN0YXJ0IGFuZCBlbmQsIHJldHVybmluZyBhIG5ldyBJbnRlcnZhbCBmcm9tIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWVzCiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBtYXBGbgogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS5tYXBFbmRwb2ludHMoZW5kcG9pbnQgPT4gZW5kcG9pbnQudG9VVEMoKSkKICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLm1hcEVuZHBvaW50cyhlbmRwb2ludCA9PiBlbmRwb2ludC5wbHVzKHsgaG91cnM6IDIgfSkpCiAgICAgKi8KICAgIG1hcEVuZHBvaW50cyhtYXBGbikgewogICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhtYXBGbih0aGlzLnMpLCBtYXBGbih0aGlzLmUpKTsKICAgIH0KICB9CgogIC8qKgogICAqIFRoZSBJbmZvIGNsYXNzIGNvbnRhaW5zIHN0YXRpYyBtZXRob2RzIGZvciByZXRyaWV2aW5nIGdlbmVyYWwgdGltZSBhbmQgZGF0ZSByZWxhdGVkIGRhdGEuIEZvciBleGFtcGxlLCBpdCBoYXMgbWV0aG9kcyBmb3IgZmluZGluZyBvdXQgaWYgYSB0aW1lIHpvbmUgaGFzIGEgRFNULCBmb3IgbGlzdGluZyB0aGUgbW9udGhzIGluIGFueSBzdXBwb3J0ZWQgbG9jYWxlLCBhbmQgZm9yIGRpc2NvdmVyaW5nIHdoaWNoIG9mIEx1eG9uIGZlYXR1cmVzIGFyZSBhdmFpbGFibGUgaW4gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQuCiAgICovCiAgY2xhc3MgSW5mbyB7CiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgem9uZSBjb250YWlucyBhIERTVC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFt6b25lPSdsb2NhbCddIC0gWm9uZSB0byBjaGVjay4gRGVmYXVsdHMgdG8gdGhlIGVudmlyb25tZW50J3MgbG9jYWwgem9uZS4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBoYXNEU1Qoem9uZSA9IFNldHRpbmdzLmRlZmF1bHRab25lKSB7CiAgICAgIGNvbnN0IHByb3RvID0gRGF0ZVRpbWUubm93KCkuc2V0Wm9uZSh6b25lKS5zZXQoeyBtb250aDogMTIgfSk7CgogICAgICByZXR1cm4gIXpvbmUuaXNVbml2ZXJzYWwgJiYgcHJvdG8ub2Zmc2V0ICE9PSBwcm90by5zZXQoeyBtb250aDogNiB9KS5vZmZzZXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGUgc3BlY2lmaWVkIHpvbmUgaXMgYSB2YWxpZCBJQU5BIHNwZWNpZmllci4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB6b25lIC0gWm9uZSB0byBjaGVjawogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgc3RhdGljIGlzVmFsaWRJQU5BWm9uZSh6b25lKSB7CiAgICAgIHJldHVybiBJQU5BWm9uZS5pc1ZhbGlkWm9uZSh6b25lKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnRzIHRoZSBpbnB1dCBpbnRvIGEge0BsaW5rIFpvbmV9IGluc3RhbmNlLgogICAgICoKICAgICAqICogSWYgYGlucHV0YCBpcyBhbHJlYWR5IGEgWm9uZSBpbnN0YW5jZSwgaXQgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLgogICAgICogKiBJZiBgaW5wdXRgIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSB2YWxpZCB0aW1lIHpvbmUgbmFtZSwgYSBab25lIGluc3RhbmNlCiAgICAgKiAgIHdpdGggdGhhdCBuYW1lIGlzIHJldHVybmVkLgogICAgICogKiBJZiBgaW5wdXRgIGlzIGEgc3RyaW5nIHRoYXQgZG9lc24ndCByZWZlciB0byBhIGtub3duIHRpbWUgem9uZSwgYSBab25lCiAgICAgKiAgIGluc3RhbmNlIHdpdGgge0BsaW5rIFpvbmUjaXNWYWxpZH0gPT0gZmFsc2UgaXMgcmV0dXJuZWQuCiAgICAgKiAqIElmIGBpbnB1dCBpcyBhIG51bWJlciwgYSBab25lIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBmaXhlZCBvZmZzZXQKICAgICAqICAgaW4gbWludXRlcyBpcyByZXR1cm5lZC4KICAgICAqICogSWYgYGlucHV0YCBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRoZSBkZWZhdWx0IHpvbmUgaXMgcmV0dXJuZWQuCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfG51bWJlcn0gW2lucHV0XSAtIHRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQKICAgICAqIEByZXR1cm4ge1pvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBub3JtYWxpemVab25lKGlucHV0KSB7CiAgICAgIHJldHVybiBub3JtYWxpemVab25lKGlucHV0LCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2Ygc3RhbmRhbG9uZSBtb250aCBuYW1lcy4KICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdsb25nJ10gLSB0aGUgbGVuZ3RoIG9mIHRoZSBtb250aCByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibnVtZXJpYyIsICIyLWRpZ2l0IiwgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5vdXRwdXRDYWxlbmRhcj0nZ3JlZ29yeSddIC0gdGhlIGNhbGVuZGFyCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygpWzBdIC8vPT4gJ0phbnVhcnknCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnc2hvcnQnKVswXSAvLz0+ICdKYW4nCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnbnVtZXJpYycpWzBdIC8vPT4gJzEnCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnc2hvcnQnLCB7IGxvY2FsZTogJ2ZyLUNBJyB9IClbMF0gLy89PiAnamFudi4nCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnbnVtZXJpYycsIHsgbG9jYWxlOiAnYXInIH0pWzBdIC8vPT4gJ9mhJwogICAgICogQGV4YW1wbGUgSW5mby5tb250aHMoJ2xvbmcnLCB7IG91dHB1dENhbGVuZGFyOiAnaXNsYW1pYycgfSlbMF0gLy89PiAnUmFiacq7IEknCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIG1vbnRocygKICAgICAgbGVuZ3RoID0gImxvbmciLAogICAgICB7IGxvY2FsZSA9IG51bGwsIG51bWJlcmluZ1N5c3RlbSA9IG51bGwsIGxvY09iaiA9IG51bGwsIG91dHB1dENhbGVuZGFyID0gImdyZWdvcnkiIH0gPSB7fQogICAgKSB7CiAgICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSkubW9udGhzKGxlbmd0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgZm9ybWF0IG1vbnRoIG5hbWVzLgogICAgICogRm9ybWF0IG1vbnRocyBkaWZmZXIgZnJvbSBzdGFuZGFsb25lIG1vbnRocyBpbiB0aGF0IHRoZXkncmUgbWVhbnQgdG8gYXBwZWFyIG5leHQgdG8gdGhlIGRheSBvZiB0aGUgbW9udGguIEluIHNvbWUgbGFuZ3VhZ2VzLCB0aGF0CiAgICAgKiBjaGFuZ2VzIHRoZSBzdHJpbmcuCiAgICAgKiBTZWUge0BsaW5rIEluZm8jbW9udGhzfQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtsZW5ndGg9J2xvbmcnXSAtIHRoZSBsZW5ndGggb2YgdGhlIG1vbnRoIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzICJudW1lcmljIiwgIjItZGlnaXQiLCAibmFycm93IiwgInNob3J0IiwgImxvbmciCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGVdIC0gdGhlIGxvY2FsZSBjb2RlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtPW51bGxdIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NPYmo9bnVsbF0gLSBhbiBleGlzdGluZyBsb2NhbGUgb2JqZWN0IHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm91dHB1dENhbGVuZGFyPSdncmVnb3J5J10gLSB0aGUgY2FsZW5kYXIKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgbW9udGhzRm9ybWF0KAogICAgICBsZW5ndGggPSAibG9uZyIsCiAgICAgIHsgbG9jYWxlID0gbnVsbCwgbnVtYmVyaW5nU3lzdGVtID0gbnVsbCwgbG9jT2JqID0gbnVsbCwgb3V0cHV0Q2FsZW5kYXIgPSAiZ3JlZ29yeSIgfSA9IHt9CiAgICApIHsKICAgICAgcmV0dXJuIChsb2NPYmogfHwgTG9jYWxlLmNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIpKS5tb250aHMobGVuZ3RoLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBzdGFuZGFsb25lIHdlZWsgbmFtZXMuCiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgd2Vla2RheSByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibmFycm93IiwgInNob3J0IiwgImxvbmciLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoKVswXSAvLz0+ICdNb25kYXknCiAgICAgKiBAZXhhbXBsZSBJbmZvLndlZWtkYXlzKCdzaG9ydCcpWzBdIC8vPT4gJ01vbicKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JywgeyBsb2NhbGU6ICdmci1DQScgfSlbMF0gLy89PiAnbHVuLicKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JywgeyBsb2NhbGU6ICdhcicgfSlbMF0gLy89PiAn2KfZhNin2KvZhtmK2YYnCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIHdlZWtkYXlzKGxlbmd0aCA9ICJsb25nIiwgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsIH0gPSB7fSkgewogICAgICByZXR1cm4gKGxvY09iaiB8fCBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBudWxsKSkud2Vla2RheXMobGVuZ3RoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBmb3JtYXQgd2VlayBuYW1lcy4KICAgICAqIEZvcm1hdCB3ZWVrZGF5cyBkaWZmZXIgZnJvbSBzdGFuZGFsb25lIHdlZWtkYXlzIGluIHRoYXQgdGhleSdyZSBtZWFudCB0byBhcHBlYXIgbmV4dCB0byBtb3JlIGRhdGUgaW5mb3JtYXRpb24uIEluIHNvbWUgbGFuZ3VhZ2VzLCB0aGF0CiAgICAgKiBjaGFuZ2VzIHRoZSBzdHJpbmcuCiAgICAgKiBTZWUge0BsaW5rIEluZm8jd2Vla2RheXN9CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgbW9udGggcmVwcmVzZW50YXRpb24sIHN1Y2ggYXMgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIi4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT1udWxsXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgd2Vla2RheXNGb3JtYXQoCiAgICAgIGxlbmd0aCA9ICJsb25nIiwKICAgICAgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsIH0gPSB7fQogICAgKSB7CiAgICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG51bGwpKS53ZWVrZGF5cyhsZW5ndGgsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGFycmF5IG9mIG1lcmlkaWVtcy4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGUKICAgICAqIEBleGFtcGxlIEluZm8ubWVyaWRpZW1zKCkgLy89PiBbICdBTScsICdQTScgXQogICAgICogQGV4YW1wbGUgSW5mby5tZXJpZGllbXMoeyBsb2NhbGU6ICdteScgfSkgLy89PiBbICfhgJThgLbhgJThgIDhgLonLCAn4YCK4YCU4YCxJyBdCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIG1lcmlkaWVtcyh7IGxvY2FsZSA9IG51bGwgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSkubWVyaWRpZW1zKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgZXJhcywgc3VjaCBhcyBbJ0JDJywgJ0FEJ10uIFRoZSBsb2NhbGUgY2FuIGJlIHNwZWNpZmllZCwgYnV0IHRoZSBjYWxlbmRhciBzeXN0ZW0gaXMgYWx3YXlzIEdyZWdvcmlhbi4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdzaG9ydCddIC0gdGhlIGxlbmd0aCBvZiB0aGUgZXJhIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzICJzaG9ydCIgb3IgImxvbmciLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQGV4YW1wbGUgSW5mby5lcmFzKCkgLy89PiBbICdCQycsICdBRCcgXQogICAgICogQGV4YW1wbGUgSW5mby5lcmFzKCdsb25nJykgLy89PiBbICdCZWZvcmUgQ2hyaXN0JywgJ0Fubm8gRG9taW5pJyBdCiAgICAgKiBAZXhhbXBsZSBJbmZvLmVyYXMoJ2xvbmcnLCB7IGxvY2FsZTogJ2ZyJyB9KSAvLz0+IFsgJ2F2YW50IErDqXN1cy1DaHJpc3QnLCAnYXByw6hzIErDqXN1cy1DaHJpc3QnIF0KICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgZXJhcyhsZW5ndGggPSAic2hvcnQiLCB7IGxvY2FsZSA9IG51bGwgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVsbCwgImdyZWdvcnkiKS5lcmFzKGxlbmd0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIHNldCBvZiBhdmFpbGFibGUgZmVhdHVyZXMgaW4gdGhpcyBlbnZpcm9ubWVudC4KICAgICAqIFNvbWUgZmVhdHVyZXMgb2YgTHV4b24gYXJlIG5vdCBhdmFpbGFibGUgaW4gYWxsIGVudmlyb25tZW50cy4gRm9yIGV4YW1wbGUsIG9uIG9sZGVyIGJyb3dzZXJzLCByZWxhdGl2ZSB0aW1lIGZvcm1hdHRpbmcgc3VwcG9ydCBpcyBub3QgYXZhaWxhYmxlLiBVc2UgdGhpcyBmdW5jdGlvbiB0byBmaWd1cmUgb3V0IGlmIHRoYXQncyB0aGUgY2FzZS4KICAgICAqIEtleXM6CiAgICAgKiAqIGByZWxhdGl2ZWA6IHdoZXRoZXIgdGhpcyBlbnZpcm9ubWVudCBzdXBwb3J0cyByZWxhdGl2ZSB0aW1lIGZvcm1hdHRpbmcKICAgICAqIEBleGFtcGxlIEluZm8uZmVhdHVyZXMoKSAvLz0+IHsgcmVsYXRpdmU6IGZhbHNlIH0KICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGZlYXR1cmVzKCkgewogICAgICByZXR1cm4geyByZWxhdGl2ZTogaGFzUmVsYXRpdmUoKSB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gZGF5RGlmZihlYXJsaWVyLCBsYXRlcikgewogICAgY29uc3QgdXRjRGF5U3RhcnQgPSAoZHQpID0+IGR0LnRvVVRDKDAsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KS5zdGFydE9mKCJkYXkiKS52YWx1ZU9mKCksCiAgICAgIG1zID0gdXRjRGF5U3RhcnQobGF0ZXIpIC0gdXRjRGF5U3RhcnQoZWFybGllcik7CiAgICByZXR1cm4gTWF0aC5mbG9vcihEdXJhdGlvbi5mcm9tTWlsbGlzKG1zKS5hcygiZGF5cyIpKTsKICB9CgogIGZ1bmN0aW9uIGhpZ2hPcmRlckRpZmZzKGN1cnNvciwgbGF0ZXIsIHVuaXRzKSB7CiAgICBjb25zdCBkaWZmZXJzID0gWwogICAgICBbInllYXJzIiwgKGEsIGIpID0+IGIueWVhciAtIGEueWVhcl0sCiAgICAgIFsicXVhcnRlcnMiLCAoYSwgYikgPT4gYi5xdWFydGVyIC0gYS5xdWFydGVyICsgKGIueWVhciAtIGEueWVhcikgKiA0XSwKICAgICAgWyJtb250aHMiLCAoYSwgYikgPT4gYi5tb250aCAtIGEubW9udGggKyAoYi55ZWFyIC0gYS55ZWFyKSAqIDEyXSwKICAgICAgWwogICAgICAgICJ3ZWVrcyIsCiAgICAgICAgKGEsIGIpID0+IHsKICAgICAgICAgIGNvbnN0IGRheXMgPSBkYXlEaWZmKGEsIGIpOwogICAgICAgICAgcmV0dXJuIChkYXlzIC0gKGRheXMgJSA3KSkgLyA3OwogICAgICAgIH0sCiAgICAgIF0sCiAgICAgIFsiZGF5cyIsIGRheURpZmZdLAogICAgXTsKCiAgICBjb25zdCByZXN1bHRzID0ge307CiAgICBjb25zdCBlYXJsaWVyID0gY3Vyc29yOwogICAgbGV0IGxvd2VzdE9yZGVyLCBoaWdoV2F0ZXI7CgogICAgLyogVGhpcyBsb29wIHRyaWVzIHRvIGRpZmYgdXNpbmcgbGFyZ2VyIHVuaXRzIGZpcnN0LgogICAgICAgSWYgd2Ugb3ZlcnNob290LCB3ZSBiYWNrdHJhY2sgYW5kIHRyeSB0aGUgbmV4dCBzbWFsbGVyIHVuaXQuCiAgICAgICAiY3Vyc29yIiBzdGFydHMgb3V0IGF0IHRoZSBlYXJsaWVyIHRpbWVzdGFtcCBhbmQgbW92ZXMgY2xvc2VyIGFuZCBjbG9zZXIgdG8gImxhdGVyIgogICAgICAgYXMgd2UgdXNlIHNtYWxsZXIgYW5kIHNtYWxsZXIgdW5pdHMuCiAgICAgICBoaWdoV2F0ZXIga2VlcHMgdHJhY2sgb2Ygd2hlcmUgd2Ugd291bGQgYmUgaWYgd2UgYWRkZWQgb25lIG1vcmUgb2YgdGhlIHNtYWxsZXN0IHVuaXQsCiAgICAgICB0aGlzIGlzIHVzZWQgbGF0ZXIgdG8gcG90ZW50aWFsbHkgY29udmVydCBhbnkgZGlmZmVyZW5jZSBzbWFsbGVyIHRoYW4gdGhlIHNtYWxsZXN0IGhpZ2hlciBvcmRlciB1bml0CiAgICAgICBpbnRvIGEgZnJhY3Rpb24gb2YgdGhhdCBzbWFsbGVzdCBoaWdoZXIgb3JkZXIgdW5pdAogICAgKi8KICAgIGZvciAoY29uc3QgW3VuaXQsIGRpZmZlcl0gb2YgZGlmZmVycykgewogICAgICBpZiAodW5pdHMuaW5kZXhPZih1bml0KSA+PSAwKSB7CiAgICAgICAgbG93ZXN0T3JkZXIgPSB1bml0OwoKICAgICAgICByZXN1bHRzW3VuaXRdID0gZGlmZmVyKGN1cnNvciwgbGF0ZXIpOwogICAgICAgIGhpZ2hXYXRlciA9IGVhcmxpZXIucGx1cyhyZXN1bHRzKTsKCiAgICAgICAgaWYgKGhpZ2hXYXRlciA+IGxhdGVyKSB7CiAgICAgICAgICAvLyB3ZSBvdmVyc2hvdCB0aGUgZW5kIHBvaW50LCBiYWNrdHJhY2sgY3Vyc29yIGJ5IDEKICAgICAgICAgIHJlc3VsdHNbdW5pdF0tLTsKICAgICAgICAgIGN1cnNvciA9IGVhcmxpZXIucGx1cyhyZXN1bHRzKTsKCiAgICAgICAgICAvLyBpZiB3ZSBhcmUgc3RpbGwgb3ZlcnNob290aW5nIG5vdywgd2UgbmVlZCB0byBiYWNrdHJhY2sgYWdhaW4KICAgICAgICAgIC8vIHRoaXMgaGFwcGVucyBpbiBjZXJ0YWluIHNpdHVhdGlvbnMgd2hlbiBkaWZmaW5nIHRpbWVzIGluIGRpZmZlcmVudCB6b25lcywKICAgICAgICAgIC8vIGJlY2F1c2UgdGhpcyBjYWxjdWxhdGlvbiBpZ25vcmVzIHRpbWUgem9uZXMKICAgICAgICAgIGlmIChjdXJzb3IgPiBsYXRlcikgewogICAgICAgICAgICAvLyBrZWVwIHRoZSAib3ZlcnNob3QgYnkgMSIgYXJvdW5kIGFzIGhpZ2hXYXRlcgogICAgICAgICAgICBoaWdoV2F0ZXIgPSBjdXJzb3I7CiAgICAgICAgICAgIC8vIGJhY2t0cmFjayBjdXJzb3IgYnkgMQogICAgICAgICAgICByZXN1bHRzW3VuaXRdLS07CiAgICAgICAgICAgIGN1cnNvciA9IGVhcmxpZXIucGx1cyhyZXN1bHRzKTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgY3Vyc29yID0gaGlnaFdhdGVyOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHJldHVybiBbY3Vyc29yLCByZXN1bHRzLCBoaWdoV2F0ZXIsIGxvd2VzdE9yZGVyXTsKICB9CgogIGZ1bmN0aW9uIGRpZmYgKGVhcmxpZXIsIGxhdGVyLCB1bml0cywgb3B0cykgewogICAgbGV0IFtjdXJzb3IsIHJlc3VsdHMsIGhpZ2hXYXRlciwgbG93ZXN0T3JkZXJdID0gaGlnaE9yZGVyRGlmZnMoZWFybGllciwgbGF0ZXIsIHVuaXRzKTsKCiAgICBjb25zdCByZW1haW5pbmdNaWxsaXMgPSBsYXRlciAtIGN1cnNvcjsKCiAgICBjb25zdCBsb3dlck9yZGVyVW5pdHMgPSB1bml0cy5maWx0ZXIoCiAgICAgICh1KSA9PiBbImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyIsICJtaWxsaXNlY29uZHMiXS5pbmRleE9mKHUpID49IDAKICAgICk7CgogICAgaWYgKGxvd2VyT3JkZXJVbml0cy5sZW5ndGggPT09IDApIHsKICAgICAgaWYgKGhpZ2hXYXRlciA8IGxhdGVyKSB7CiAgICAgICAgaGlnaFdhdGVyID0gY3Vyc29yLnBsdXMoeyBbbG93ZXN0T3JkZXJdOiAxIH0pOwogICAgICB9CgogICAgICBpZiAoaGlnaFdhdGVyICE9PSBjdXJzb3IpIHsKICAgICAgICByZXN1bHRzW2xvd2VzdE9yZGVyXSA9IChyZXN1bHRzW2xvd2VzdE9yZGVyXSB8fCAwKSArIHJlbWFpbmluZ01pbGxpcyAvIChoaWdoV2F0ZXIgLSBjdXJzb3IpOwogICAgICB9CiAgICB9CgogICAgY29uc3QgZHVyYXRpb24gPSBEdXJhdGlvbi5mcm9tT2JqZWN0KHJlc3VsdHMsIG9wdHMpOwoKICAgIGlmIChsb3dlck9yZGVyVW5pdHMubGVuZ3RoID4gMCkgewogICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU1pbGxpcyhyZW1haW5pbmdNaWxsaXMsIG9wdHMpCiAgICAgICAgLnNoaWZ0VG8oLi4ubG93ZXJPcmRlclVuaXRzKQogICAgICAgIC5wbHVzKGR1cmF0aW9uKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBkdXJhdGlvbjsKICAgIH0KICB9CgogIGNvbnN0IG51bWJlcmluZ1N5c3RlbXMgPSB7CiAgICBhcmFiOiAiW1x1MDY2MC1cdTA2NjldIiwKICAgIGFyYWJleHQ6ICJbXHUwNkYwLVx1MDZGOV0iLAogICAgYmFsaTogIltcdTFCNTAtXHUxQjU5XSIsCiAgICBiZW5nOiAiW1x1MDlFNi1cdTA5RUZdIiwKICAgIGRldmE6ICJbXHUwOTY2LVx1MDk2Rl0iLAogICAgZnVsbHdpZGU6ICJbXHVGRjEwLVx1RkYxOV0iLAogICAgZ3VqcjogIltcdTBBRTYtXHUwQUVGXSIsCiAgICBoYW5pZGVjOiAiW+OAh3zkuIB85LqMfOS4iXzlm5t85LqUfOWFrXzkuIN85YWrfOS5nV0iLAogICAga2htcjogIltcdTE3RTAtXHUxN0U5XSIsCiAgICBrbmRhOiAiW1x1MENFNi1cdTBDRUZdIiwKICAgIGxhb286ICJbXHUwRUQwLVx1MEVEOV0iLAogICAgbGltYjogIltcdTE5NDYtXHUxOTRGXSIsCiAgICBtbHltOiAiW1x1MEQ2Ni1cdTBENkZdIiwKICAgIG1vbmc6ICJbXHUxODEwLVx1MTgxOV0iLAogICAgbXltcjogIltcdTEwNDAtXHUxMDQ5XSIsCiAgICBvcnlhOiAiW1x1MEI2Ni1cdTBCNkZdIiwKICAgIHRhbWxkZWM6ICJbXHUwQkU2LVx1MEJFRl0iLAogICAgdGVsdTogIltcdTBDNjYtXHUwQzZGXSIsCiAgICB0aGFpOiAiW1x1MEU1MC1cdTBFNTldIiwKICAgIHRpYnQ6ICJbXHUwRjIwLVx1MEYyOV0iLAogICAgbGF0bjogIlxcZCIsCiAgfTsKCiAgY29uc3QgbnVtYmVyaW5nU3lzdGVtc1VURjE2ID0gewogICAgYXJhYjogWzE2MzIsIDE2NDFdLAogICAgYXJhYmV4dDogWzE3NzYsIDE3ODVdLAogICAgYmFsaTogWzY5OTIsIDcwMDFdLAogICAgYmVuZzogWzI1MzQsIDI1NDNdLAogICAgZGV2YTogWzI0MDYsIDI0MTVdLAogICAgZnVsbHdpZGU6IFs2NTI5NiwgNjUzMDNdLAogICAgZ3VqcjogWzI3OTAsIDI3OTldLAogICAga2htcjogWzYxMTIsIDYxMjFdLAogICAga25kYTogWzMzMDIsIDMzMTFdLAogICAgbGFvbzogWzM3OTIsIDM4MDFdLAogICAgbGltYjogWzY0NzAsIDY0NzldLAogICAgbWx5bTogWzM0MzAsIDM0MzldLAogICAgbW9uZzogWzYxNjAsIDYxNjldLAogICAgbXltcjogWzQxNjAsIDQxNjldLAogICAgb3J5YTogWzI5MTgsIDI5MjddLAogICAgdGFtbGRlYzogWzMwNDYsIDMwNTVdLAogICAgdGVsdTogWzMxNzQsIDMxODNdLAogICAgdGhhaTogWzM2NjQsIDM2NzNdLAogICAgdGlidDogWzM4NzIsIDM4ODFdLAogIH07CgogIGNvbnN0IGhhbmlkZWNDaGFycyA9IG51bWJlcmluZ1N5c3RlbXMuaGFuaWRlYy5yZXBsYWNlKC9bXFt8XF1dL2csICIiKS5zcGxpdCgiIik7CgogIGZ1bmN0aW9uIHBhcnNlRGlnaXRzKHN0cikgewogICAgbGV0IHZhbHVlID0gcGFyc2VJbnQoc3RyLCAxMCk7CiAgICBpZiAoaXNOYU4odmFsdWUpKSB7CiAgICAgIHZhbHVlID0gIiI7CiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgY29uc3QgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpOwoKICAgICAgICBpZiAoc3RyW2ldLnNlYXJjaChudW1iZXJpbmdTeXN0ZW1zLmhhbmlkZWMpICE9PSAtMSkgewogICAgICAgICAgdmFsdWUgKz0gaGFuaWRlY0NoYXJzLmluZGV4T2Yoc3RyW2ldKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbnVtYmVyaW5nU3lzdGVtc1VURjE2KSB7CiAgICAgICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSBudW1iZXJpbmdTeXN0ZW1zVVRGMTZba2V5XTsKICAgICAgICAgICAgaWYgKGNvZGUgPj0gbWluICYmIGNvZGUgPD0gbWF4KSB7CiAgICAgICAgICAgICAgdmFsdWUgKz0gY29kZSAtIG1pbjsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gcGFyc2VJbnQodmFsdWUsIDEwKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiB2YWx1ZTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGRpZ2l0UmVnZXgoeyBudW1iZXJpbmdTeXN0ZW0gfSwgYXBwZW5kID0gIiIpIHsKICAgIHJldHVybiBuZXcgUmVnRXhwKGAke251bWJlcmluZ1N5c3RlbXNbbnVtYmVyaW5nU3lzdGVtIHx8ICJsYXRuIl19JHthcHBlbmR9YCk7CiAgfQoKICBjb25zdCBNSVNTSU5HX0ZUUCA9ICJtaXNzaW5nIEludGwuRGF0ZVRpbWVGb3JtYXQuZm9ybWF0VG9QYXJ0cyBzdXBwb3J0IjsKCiAgZnVuY3Rpb24gaW50VW5pdChyZWdleCwgcG9zdCA9IChpKSA9PiBpKSB7CiAgICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbc10pID0+IHBvc3QocGFyc2VEaWdpdHMocykpIH07CiAgfQoKICBjb25zdCBOQlNQID0gU3RyaW5nLmZyb21DaGFyQ29kZSgxNjApOwogIGNvbnN0IHNwYWNlT3JOQlNQID0gYFsgJHtOQlNQfV1gOwogIGNvbnN0IHNwYWNlT3JOQlNQUmVnRXhwID0gbmV3IFJlZ0V4cChzcGFjZU9yTkJTUCwgImciKTsKCiAgZnVuY3Rpb24gZml4TGlzdFJlZ2V4KHMpIHsKICAgIC8vIG1ha2UgZG90cyBvcHRpb25hbCBhbmQgYWxzbyBtYWtlIHRoZW0gbGl0ZXJhbAogICAgLy8gbWFrZSBzcGFjZSBhbmQgbm9uIGJyZWFrYWJsZSBzcGFjZSBjaGFyYWN0ZXJzIGludGVyY2hhbmdlYWJsZQogICAgcmV0dXJuIHMucmVwbGFjZSgvXC4vZywgIlxcLj8iKS5yZXBsYWNlKHNwYWNlT3JOQlNQUmVnRXhwLCBzcGFjZU9yTkJTUCk7CiAgfQoKICBmdW5jdGlvbiBzdHJpcEluc2Vuc2l0aXZpdGllcyhzKSB7CiAgICByZXR1cm4gcwogICAgICAucmVwbGFjZSgvXC4vZywgIiIpIC8vIGlnbm9yZSBkb3RzIHRoYXQgd2VyZSBtYWRlIG9wdGlvbmFsCiAgICAgIC5yZXBsYWNlKHNwYWNlT3JOQlNQUmVnRXhwLCAiICIpIC8vIGludGVyY2hhbmdlIHNwYWNlIGFuZCBuYnNwCiAgICAgIC50b0xvd2VyQ2FzZSgpOwogIH0KCiAgZnVuY3Rpb24gb25lT2Yoc3RyaW5ncywgc3RhcnRJbmRleCkgewogICAgaWYgKHN0cmluZ3MgPT09IG51bGwpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gewogICAgICAgIHJlZ2V4OiBSZWdFeHAoc3RyaW5ncy5tYXAoZml4TGlzdFJlZ2V4KS5qb2luKCJ8IikpLAogICAgICAgIGRlc2VyOiAoW3NdKSA9PgogICAgICAgICAgc3RyaW5ncy5maW5kSW5kZXgoKGkpID0+IHN0cmlwSW5zZW5zaXRpdml0aWVzKHMpID09PSBzdHJpcEluc2Vuc2l0aXZpdGllcyhpKSkgKyBzdGFydEluZGV4LAogICAgICB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gb2Zmc2V0KHJlZ2V4LCBncm91cHMpIHsKICAgIHJldHVybiB7IHJlZ2V4LCBkZXNlcjogKFssIGgsIG1dKSA9PiBzaWduZWRPZmZzZXQoaCwgbSksIGdyb3VwcyB9OwogIH0KCiAgZnVuY3Rpb24gc2ltcGxlKHJlZ2V4KSB7CiAgICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbc10pID0+IHMgfTsKICB9CgogIGZ1bmN0aW9uIGVzY2FwZVRva2VuKHZhbHVlKSB7CiAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvW1wtXFtcXXt9KCkqKz8uLFxcXF4kfCNcc10vZywgIlxcJCYiKTsKICB9CgogIC8qKgogICAqIEBwYXJhbSB0b2tlbgogICAqIEBwYXJhbSB7TG9jYWxlfSBsb2MKICAgKi8KICBmdW5jdGlvbiB1bml0Rm9yVG9rZW4odG9rZW4sIGxvYykgewogICAgY29uc3Qgb25lID0gZGlnaXRSZWdleChsb2MpLAogICAgICB0d28gPSBkaWdpdFJlZ2V4KGxvYywgInsyfSIpLAogICAgICB0aHJlZSA9IGRpZ2l0UmVnZXgobG9jLCAiezN9IiksCiAgICAgIGZvdXIgPSBkaWdpdFJlZ2V4KGxvYywgIns0fSIpLAogICAgICBzaXggPSBkaWdpdFJlZ2V4KGxvYywgIns2fSIpLAogICAgICBvbmVPclR3byA9IGRpZ2l0UmVnZXgobG9jLCAiezEsMn0iKSwKICAgICAgb25lVG9UaHJlZSA9IGRpZ2l0UmVnZXgobG9jLCAiezEsM30iKSwKICAgICAgb25lVG9TaXggPSBkaWdpdFJlZ2V4KGxvYywgInsxLDZ9IiksCiAgICAgIG9uZVRvTmluZSA9IGRpZ2l0UmVnZXgobG9jLCAiezEsOX0iKSwKICAgICAgdHdvVG9Gb3VyID0gZGlnaXRSZWdleChsb2MsICJ7Miw0fSIpLAogICAgICBmb3VyVG9TaXggPSBkaWdpdFJlZ2V4KGxvYywgIns0LDZ9IiksCiAgICAgIGxpdGVyYWwgPSAodCkgPT4gKHsgcmVnZXg6IFJlZ0V4cChlc2NhcGVUb2tlbih0LnZhbCkpLCBkZXNlcjogKFtzXSkgPT4gcywgbGl0ZXJhbDogdHJ1ZSB9KSwKICAgICAgdW5pdGF0ZSA9ICh0KSA9PiB7CiAgICAgICAgaWYgKHRva2VuLmxpdGVyYWwpIHsKICAgICAgICAgIHJldHVybiBsaXRlcmFsKHQpOwogICAgICAgIH0KICAgICAgICBzd2l0Y2ggKHQudmFsKSB7CiAgICAgICAgICAvLyBlcmEKICAgICAgICAgIGNhc2UgIkciOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLmVyYXMoInNob3J0IiksIDApOwogICAgICAgICAgY2FzZSAiR0ciOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLmVyYXMoImxvbmciKSwgMCk7CiAgICAgICAgICAvLyB5ZWFycwogICAgICAgICAgY2FzZSAieSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZVRvU2l4KTsKICAgICAgICAgIGNhc2UgInl5IjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvVG9Gb3VyLCB1bnRydW5jYXRlWWVhcik7CiAgICAgICAgICBjYXNlICJ5eXl5IjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQoZm91cik7CiAgICAgICAgICBjYXNlICJ5eXl5eSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KGZvdXJUb1NpeCk7CiAgICAgICAgICBjYXNlICJ5eXl5eXkiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChzaXgpOwogICAgICAgICAgLy8gbW9udGhzCiAgICAgICAgICBjYXNlICJNIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pOwogICAgICAgICAgY2FzZSAiTU0iOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwogICAgICAgICAgY2FzZSAiTU1NIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoInNob3J0IiwgdHJ1ZSksIDEpOwogICAgICAgICAgY2FzZSAiTU1NTSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJsb25nIiwgdHJ1ZSksIDEpOwogICAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgIkxMIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgIkxMTCI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJzaG9ydCIsIGZhbHNlKSwgMSk7CiAgICAgICAgICBjYXNlICJMTExMIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoImxvbmciLCBmYWxzZSksIDEpOwogICAgICAgICAgLy8gZGF0ZXMKICAgICAgICAgIGNhc2UgImQiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJkZCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICAvLyBvcmRpbmFscwogICAgICAgICAgY2FzZSAibyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZVRvVGhyZWUpOwogICAgICAgICAgY2FzZSAib29vIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodGhyZWUpOwogICAgICAgICAgLy8gdGltZQogICAgICAgICAgY2FzZSAiSEgiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwogICAgICAgICAgY2FzZSAiSCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgImhoIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgImgiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJtbSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICBjYXNlICJtIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pOwogICAgICAgICAgY2FzZSAicSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgInFxIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgInMiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJzcyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICBjYXNlICJTIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lVG9UaHJlZSk7CiAgICAgICAgICBjYXNlICJTU1MiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0aHJlZSk7CiAgICAgICAgICBjYXNlICJ1IjoKICAgICAgICAgICAgcmV0dXJuIHNpbXBsZShvbmVUb05pbmUpOwogICAgICAgICAgY2FzZSAidXUiOgogICAgICAgICAgICByZXR1cm4gc2ltcGxlKG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgInV1dSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZSk7CiAgICAgICAgICAvLyBtZXJpZGllbQogICAgICAgICAgY2FzZSAiYSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubWVyaWRpZW1zKCksIDApOwogICAgICAgICAgLy8gd2Vla1llYXIgKGspCiAgICAgICAgICBjYXNlICJra2trIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQoZm91cik7CiAgICAgICAgICBjYXNlICJrayI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3b1RvRm91ciwgdW50cnVuY2F0ZVllYXIpOwogICAgICAgICAgLy8gd2Vla051bWJlciAoVykKICAgICAgICAgIGNhc2UgIlciOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJXVyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICAvLyB3ZWVrZGF5cwogICAgICAgICAgY2FzZSAiRSI6CiAgICAgICAgICBjYXNlICJjIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lKTsKICAgICAgICAgIGNhc2UgIkVFRSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoInNob3J0IiwgZmFsc2UpLCAxKTsKICAgICAgICAgIGNhc2UgIkVFRUUiOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLndlZWtkYXlzKCJsb25nIiwgZmFsc2UpLCAxKTsKICAgICAgICAgIGNhc2UgImNjYyI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoInNob3J0IiwgdHJ1ZSksIDEpOwogICAgICAgICAgY2FzZSAiY2NjYyI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoImxvbmciLCB0cnVlKSwgMSk7CiAgICAgICAgICAvLyBvZmZzZXQvem9uZQogICAgICAgICAgY2FzZSAiWiI6CiAgICAgICAgICBjYXNlICJaWiI6CiAgICAgICAgICAgIHJldHVybiBvZmZzZXQobmV3IFJlZ0V4cChgKFsrLV0ke29uZU9yVHdvLnNvdXJjZX0pKD86Oigke3R3by5zb3VyY2V9KSk/YCksIDIpOwogICAgICAgICAgY2FzZSAiWlpaIjoKICAgICAgICAgICAgcmV0dXJuIG9mZnNldChuZXcgUmVnRXhwKGAoWystXSR7b25lT3JUd28uc291cmNlfSkoJHt0d28uc291cmNlfSk/YCksIDIpOwogICAgICAgICAgLy8gd2UgZG9uJ3Qgc3VwcG9ydCBaWlpaIChQU1QpIG9yIFpaWlpaIChQYWNpZmljIFN0YW5kYXJkIFRpbWUpIGluIHBhcnNpbmcKICAgICAgICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhbnkgd2F5IHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGV5IGFyZQogICAgICAgICAgY2FzZSAieiI6CiAgICAgICAgICAgIHJldHVybiBzaW1wbGUoL1thLXpfKy0vXXsxLDI1Nn0/L2kpOwogICAgICAgICAgLy8gdGhpcyBzcGVjaWFsLWNhc2UgInRva2VuIiByZXByZXNlbnRzIGEgcGxhY2Ugd2hlcmUgYSBtYWNyby10b2tlbiBleHBhbmRlZCBpbnRvIGEgd2hpdGUtc3BhY2UgbGl0ZXJhbAogICAgICAgICAgLy8gaW4gdGhpcyBjYXNlIHdlIGFjY2VwdCBhbnkgbm9uLW5ld2xpbmUgd2hpdGUtc3BhY2UKICAgICAgICAgIGNhc2UgIiAiOgogICAgICAgICAgICByZXR1cm4gc2ltcGxlKC9bXlxTXG5ccl0vKTsKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHJldHVybiBsaXRlcmFsKHQpOwogICAgICAgIH0KICAgICAgfTsKCiAgICBjb25zdCB1bml0ID0gdW5pdGF0ZSh0b2tlbikgfHwgewogICAgICBpbnZhbGlkUmVhc29uOiBNSVNTSU5HX0ZUUCwKICAgIH07CgogICAgdW5pdC50b2tlbiA9IHRva2VuOwoKICAgIHJldHVybiB1bml0OwogIH0KCiAgY29uc3QgcGFydFR5cGVTdHlsZVRvVG9rZW5WYWwgPSB7CiAgICB5ZWFyOiB7CiAgICAgICIyLWRpZ2l0IjogInl5IiwKICAgICAgbnVtZXJpYzogInl5eXl5IiwKICAgIH0sCiAgICBtb250aDogewogICAgICBudW1lcmljOiAiTSIsCiAgICAgICIyLWRpZ2l0IjogIk1NIiwKICAgICAgc2hvcnQ6ICJNTU0iLAogICAgICBsb25nOiAiTU1NTSIsCiAgICB9LAogICAgZGF5OiB7CiAgICAgIG51bWVyaWM6ICJkIiwKICAgICAgIjItZGlnaXQiOiAiZGQiLAogICAgfSwKICAgIHdlZWtkYXk6IHsKICAgICAgc2hvcnQ6ICJFRUUiLAogICAgICBsb25nOiAiRUVFRSIsCiAgICB9LAogICAgZGF5cGVyaW9kOiAiYSIsCiAgICBkYXlQZXJpb2Q6ICJhIiwKICAgIGhvdXIxMjogewogICAgICBudW1lcmljOiAiaCIsCiAgICAgICIyLWRpZ2l0IjogImhoIiwKICAgIH0sCiAgICBob3VyMjQ6IHsKICAgICAgbnVtZXJpYzogIkgiLAogICAgICAiMi1kaWdpdCI6ICJISCIsCiAgICB9LAogICAgbWludXRlOiB7CiAgICAgIG51bWVyaWM6ICJtIiwKICAgICAgIjItZGlnaXQiOiAibW0iLAogICAgfSwKICAgIHNlY29uZDogewogICAgICBudW1lcmljOiAicyIsCiAgICAgICIyLWRpZ2l0IjogInNzIiwKICAgIH0sCiAgICB0aW1lWm9uZU5hbWU6IHsKICAgICAgbG9uZzogIlpaWlpaIiwKICAgICAgc2hvcnQ6ICJaWloiLAogICAgfSwKICB9OwoKICBmdW5jdGlvbiB0b2tlbkZvclBhcnQocGFydCwgZm9ybWF0T3B0cywgcmVzb2x2ZWRPcHRzKSB7CiAgICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSBwYXJ0OwoKICAgIGlmICh0eXBlID09PSAibGl0ZXJhbCIpIHsKICAgICAgY29uc3QgaXNTcGFjZSA9IC9eXHMrJC8udGVzdCh2YWx1ZSk7CiAgICAgIHJldHVybiB7CiAgICAgICAgbGl0ZXJhbDogIWlzU3BhY2UsCiAgICAgICAgdmFsOiBpc1NwYWNlID8gIiAiIDogdmFsdWUsCiAgICAgIH07CiAgICB9CgogICAgY29uc3Qgc3R5bGUgPSBmb3JtYXRPcHRzW3R5cGVdOwoKICAgIC8vIFRoZSB1c2VyIG1pZ2h0IGhhdmUgZXhwbGljaXRseSBzcGVjaWZpZWQgaG91cjEyIG9yIGhvdXJDeWNsZQogICAgLy8gaWYgc28sIHJlc3BlY3QgdGhlaXIgZGVjaXNpb24KICAgIC8vIGlmIG5vdCwgcmVmZXIgYmFjayB0byB0aGUgcmVzb2x2ZWRPcHRzLCB3aGljaCBhcmUgYmFzZWQgb24gdGhlIGxvY2FsZQogICAgbGV0IGFjdHVhbFR5cGUgPSB0eXBlOwogICAgaWYgKHR5cGUgPT09ICJob3VyIikgewogICAgICBpZiAoZm9ybWF0T3B0cy5ob3VyMTIgIT0gbnVsbCkgewogICAgICAgIGFjdHVhbFR5cGUgPSBmb3JtYXRPcHRzLmhvdXIxMiA/ICJob3VyMTIiIDogImhvdXIyNCI7CiAgICAgIH0gZWxzZSBpZiAoZm9ybWF0T3B0cy5ob3VyQ3ljbGUgIT0gbnVsbCkgewogICAgICAgIGlmIChmb3JtYXRPcHRzLmhvdXJDeWNsZSA9PT0gImgxMSIgfHwgZm9ybWF0T3B0cy5ob3VyQ3ljbGUgPT09ICJoMTIiKSB7CiAgICAgICAgICBhY3R1YWxUeXBlID0gImhvdXIxMiI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGFjdHVhbFR5cGUgPSAiaG91cjI0IjsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8gdG9rZW5zIG9ubHkgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIDI0IGhvdXJzIG9yIG5vdCwKICAgICAgICAvLyBzbyB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayBob3VyQ3ljbGUgaGVyZSwgd2hpY2ggaXMgbGVzcyBzdXBwb3J0ZWQgYW55d2F5cwogICAgICAgIGFjdHVhbFR5cGUgPSByZXNvbHZlZE9wdHMuaG91cjEyID8gImhvdXIxMiIgOiAiaG91cjI0IjsKICAgICAgfQogICAgfQogICAgbGV0IHZhbCA9IHBhcnRUeXBlU3R5bGVUb1Rva2VuVmFsW2FjdHVhbFR5cGVdOwogICAgaWYgKHR5cGVvZiB2YWwgPT09ICJvYmplY3QiKSB7CiAgICAgIHZhbCA9IHZhbFtzdHlsZV07CiAgICB9CgogICAgaWYgKHZhbCkgewogICAgICByZXR1cm4gewogICAgICAgIGxpdGVyYWw6IGZhbHNlLAogICAgICAgIHZhbCwKICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gdW5kZWZpbmVkOwogIH0KCiAgZnVuY3Rpb24gYnVpbGRSZWdleCh1bml0cykgewogICAgY29uc3QgcmUgPSB1bml0cy5tYXAoKHUpID0+IHUucmVnZXgpLnJlZHVjZSgoZiwgcikgPT4gYCR7Zn0oJHtyLnNvdXJjZX0pYCwgIiIpOwogICAgcmV0dXJuIFtgXiR7cmV9JGAsIHVuaXRzXTsKICB9CgogIGZ1bmN0aW9uIG1hdGNoKGlucHV0LCByZWdleCwgaGFuZGxlcnMpIHsKICAgIGNvbnN0IG1hdGNoZXMgPSBpbnB1dC5tYXRjaChyZWdleCk7CgogICAgaWYgKG1hdGNoZXMpIHsKICAgICAgY29uc3QgYWxsID0ge307CiAgICAgIGxldCBtYXRjaEluZGV4ID0gMTsKICAgICAgZm9yIChjb25zdCBpIGluIGhhbmRsZXJzKSB7CiAgICAgICAgaWYgKGhhc093blByb3BlcnR5KGhhbmRsZXJzLCBpKSkgewogICAgICAgICAgY29uc3QgaCA9IGhhbmRsZXJzW2ldLAogICAgICAgICAgICBncm91cHMgPSBoLmdyb3VwcyA/IGguZ3JvdXBzICsgMSA6IDE7CiAgICAgICAgICBpZiAoIWgubGl0ZXJhbCAmJiBoLnRva2VuKSB7CiAgICAgICAgICAgIGFsbFtoLnRva2VuLnZhbFswXV0gPSBoLmRlc2VyKG1hdGNoZXMuc2xpY2UobWF0Y2hJbmRleCwgbWF0Y2hJbmRleCArIGdyb3VwcykpOwogICAgICAgICAgfQogICAgICAgICAgbWF0Y2hJbmRleCArPSBncm91cHM7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBbbWF0Y2hlcywgYWxsXTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBbbWF0Y2hlcywge31dOwogICAgfQogIH0KCiAgZnVuY3Rpb24gZGF0ZVRpbWVGcm9tTWF0Y2hlcyhtYXRjaGVzKSB7CiAgICBjb25zdCB0b0ZpZWxkID0gKHRva2VuKSA9PiB7CiAgICAgIHN3aXRjaCAodG9rZW4pIHsKICAgICAgICBjYXNlICJTIjoKICAgICAgICAgIHJldHVybiAibWlsbGlzZWNvbmQiOwogICAgICAgIGNhc2UgInMiOgogICAgICAgICAgcmV0dXJuICJzZWNvbmQiOwogICAgICAgIGNhc2UgIm0iOgogICAgICAgICAgcmV0dXJuICJtaW51dGUiOwogICAgICAgIGNhc2UgImgiOgogICAgICAgIGNhc2UgIkgiOgogICAgICAgICAgcmV0dXJuICJob3VyIjsKICAgICAgICBjYXNlICJkIjoKICAgICAgICAgIHJldHVybiAiZGF5IjsKICAgICAgICBjYXNlICJvIjoKICAgICAgICAgIHJldHVybiAib3JkaW5hbCI7CiAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgY2FzZSAiTSI6CiAgICAgICAgICByZXR1cm4gIm1vbnRoIjsKICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgIHJldHVybiAieWVhciI7CiAgICAgICAgY2FzZSAiRSI6CiAgICAgICAgY2FzZSAiYyI6CiAgICAgICAgICByZXR1cm4gIndlZWtkYXkiOwogICAgICAgIGNhc2UgIlciOgogICAgICAgICAgcmV0dXJuICJ3ZWVrTnVtYmVyIjsKICAgICAgICBjYXNlICJrIjoKICAgICAgICAgIHJldHVybiAid2Vla1llYXIiOwogICAgICAgIGNhc2UgInEiOgogICAgICAgICAgcmV0dXJuICJxdWFydGVyIjsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgIH07CgogICAgbGV0IHpvbmUgPSBudWxsOwogICAgbGV0IHNwZWNpZmljT2Zmc2V0OwogICAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLnopKSB7CiAgICAgIHpvbmUgPSBJQU5BWm9uZS5jcmVhdGUobWF0Y2hlcy56KTsKICAgIH0KCiAgICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMuWikpIHsKICAgICAgaWYgKCF6b25lKSB7CiAgICAgICAgem9uZSA9IG5ldyBGaXhlZE9mZnNldFpvbmUobWF0Y2hlcy5aKTsKICAgICAgfQogICAgICBzcGVjaWZpY09mZnNldCA9IG1hdGNoZXMuWjsKICAgIH0KCiAgICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMucSkpIHsKICAgICAgbWF0Y2hlcy5NID0gKG1hdGNoZXMucSAtIDEpICogMyArIDE7CiAgICB9CgogICAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLmgpKSB7CiAgICAgIGlmIChtYXRjaGVzLmggPCAxMiAmJiBtYXRjaGVzLmEgPT09IDEpIHsKICAgICAgICBtYXRjaGVzLmggKz0gMTI7CiAgICAgIH0gZWxzZSBpZiAobWF0Y2hlcy5oID09PSAxMiAmJiBtYXRjaGVzLmEgPT09IDApIHsKICAgICAgICBtYXRjaGVzLmggPSAwOwogICAgICB9CiAgICB9CgogICAgaWYgKG1hdGNoZXMuRyA9PT0gMCAmJiBtYXRjaGVzLnkpIHsKICAgICAgbWF0Y2hlcy55ID0gLW1hdGNoZXMueTsKICAgIH0KCiAgICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMudSkpIHsKICAgICAgbWF0Y2hlcy5TID0gcGFyc2VNaWxsaXMobWF0Y2hlcy51KTsKICAgIH0KCiAgICBjb25zdCB2YWxzID0gT2JqZWN0LmtleXMobWF0Y2hlcykucmVkdWNlKChyLCBrKSA9PiB7CiAgICAgIGNvbnN0IGYgPSB0b0ZpZWxkKGspOwogICAgICBpZiAoZikgewogICAgICAgIHJbZl0gPSBtYXRjaGVzW2tdOwogICAgICB9CgogICAgICByZXR1cm4gcjsKICAgIH0sIHt9KTsKCiAgICByZXR1cm4gW3ZhbHMsIHpvbmUsIHNwZWNpZmljT2Zmc2V0XTsKICB9CgogIGxldCBkdW1teURhdGVUaW1lQ2FjaGUgPSBudWxsOwoKICBmdW5jdGlvbiBnZXREdW1teURhdGVUaW1lKCkgewogICAgaWYgKCFkdW1teURhdGVUaW1lQ2FjaGUpIHsKICAgICAgZHVtbXlEYXRlVGltZUNhY2hlID0gRGF0ZVRpbWUuZnJvbU1pbGxpcygxNTU1NTU1NTU1NTU1KTsKICAgIH0KCiAgICByZXR1cm4gZHVtbXlEYXRlVGltZUNhY2hlOwogIH0KCiAgZnVuY3Rpb24gbWF5YmVFeHBhbmRNYWNyb1Rva2VuKHRva2VuLCBsb2NhbGUpIHsKICAgIGlmICh0b2tlbi5saXRlcmFsKSB7CiAgICAgIHJldHVybiB0b2tlbjsKICAgIH0KCiAgICBjb25zdCBmb3JtYXRPcHRzID0gRm9ybWF0dGVyLm1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4udmFsKTsKICAgIGNvbnN0IHRva2VucyA9IGZvcm1hdE9wdHNUb1Rva2Vucyhmb3JtYXRPcHRzLCBsb2NhbGUpOwoKICAgIGlmICh0b2tlbnMgPT0gbnVsbCB8fCB0b2tlbnMuaW5jbHVkZXModW5kZWZpbmVkKSkgewogICAgICByZXR1cm4gdG9rZW47CiAgICB9CgogICAgcmV0dXJuIHRva2VuczsKICB9CgogIGZ1bmN0aW9uIGV4cGFuZE1hY3JvVG9rZW5zKHRva2VucywgbG9jYWxlKSB7CiAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdCguLi50b2tlbnMubWFwKCh0KSA9PiBtYXliZUV4cGFuZE1hY3JvVG9rZW4odCwgbG9jYWxlKSkpOwogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgZnVuY3Rpb24gZXhwbGFpbkZyb21Ub2tlbnMobG9jYWxlLCBpbnB1dCwgZm9ybWF0KSB7CiAgICBjb25zdCB0b2tlbnMgPSBleHBhbmRNYWNyb1Rva2VucyhGb3JtYXR0ZXIucGFyc2VGb3JtYXQoZm9ybWF0KSwgbG9jYWxlKSwKICAgICAgdW5pdHMgPSB0b2tlbnMubWFwKCh0KSA9PiB1bml0Rm9yVG9rZW4odCwgbG9jYWxlKSksCiAgICAgIGRpc3F1YWxpZnlpbmdVbml0ID0gdW5pdHMuZmluZCgodCkgPT4gdC5pbnZhbGlkUmVhc29uKTsKCiAgICBpZiAoZGlzcXVhbGlmeWluZ1VuaXQpIHsKICAgICAgcmV0dXJuIHsgaW5wdXQsIHRva2VucywgaW52YWxpZFJlYXNvbjogZGlzcXVhbGlmeWluZ1VuaXQuaW52YWxpZFJlYXNvbiB9OwogICAgfSBlbHNlIHsKICAgICAgY29uc3QgW3JlZ2V4U3RyaW5nLCBoYW5kbGVyc10gPSBidWlsZFJlZ2V4KHVuaXRzKSwKICAgICAgICByZWdleCA9IFJlZ0V4cChyZWdleFN0cmluZywgImkiKSwKICAgICAgICBbcmF3TWF0Y2hlcywgbWF0Y2hlc10gPSBtYXRjaChpbnB1dCwgcmVnZXgsIGhhbmRsZXJzKSwKICAgICAgICBbcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldF0gPSBtYXRjaGVzCiAgICAgICAgICA/IGRhdGVUaW1lRnJvbU1hdGNoZXMobWF0Y2hlcykKICAgICAgICAgIDogW251bGwsIG51bGwsIHVuZGVmaW5lZF07CiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eShtYXRjaGVzLCAiYSIpICYmIGhhc093blByb3BlcnR5KG1hdGNoZXMsICJIIikpIHsKICAgICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoCiAgICAgICAgICAiQ2FuJ3QgaW5jbHVkZSBtZXJpZGllbSB3aGVuIHNwZWNpZnlpbmcgMjQtaG91ciBmb3JtYXQiCiAgICAgICAgKTsKICAgICAgfQogICAgICByZXR1cm4geyBpbnB1dCwgdG9rZW5zLCByZWdleCwgcmF3TWF0Y2hlcywgbWF0Y2hlcywgcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldCB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gcGFyc2VGcm9tVG9rZW5zKGxvY2FsZSwgaW5wdXQsIGZvcm1hdCkgewogICAgY29uc3QgeyByZXN1bHQsIHpvbmUsIHNwZWNpZmljT2Zmc2V0LCBpbnZhbGlkUmVhc29uIH0gPSBleHBsYWluRnJvbVRva2Vucyhsb2NhbGUsIGlucHV0LCBmb3JtYXQpOwogICAgcmV0dXJuIFtyZXN1bHQsIHpvbmUsIHNwZWNpZmljT2Zmc2V0LCBpbnZhbGlkUmVhc29uXTsKICB9CgogIGZ1bmN0aW9uIGZvcm1hdE9wdHNUb1Rva2Vucyhmb3JtYXRPcHRzLCBsb2NhbGUpIHsKICAgIGlmICghZm9ybWF0T3B0cykgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBjb25zdCBmb3JtYXR0ZXIgPSBGb3JtYXR0ZXIuY3JlYXRlKGxvY2FsZSwgZm9ybWF0T3B0cyk7CiAgICBjb25zdCBkZiA9IGZvcm1hdHRlci5kdEZvcm1hdHRlcihnZXREdW1teURhdGVUaW1lKCkpOwogICAgY29uc3QgcGFydHMgPSBkZi5mb3JtYXRUb1BhcnRzKCk7CiAgICBjb25zdCByZXNvbHZlZE9wdHMgPSBkZi5yZXNvbHZlZE9wdGlvbnMoKTsKICAgIHJldHVybiBwYXJ0cy5tYXAoKHApID0+IHRva2VuRm9yUGFydChwLCBmb3JtYXRPcHRzLCByZXNvbHZlZE9wdHMpKTsKICB9CgogIGNvbnN0IG5vbkxlYXBMYWRkZXIgPSBbMCwgMzEsIDU5LCA5MCwgMTIwLCAxNTEsIDE4MSwgMjEyLCAyNDMsIDI3MywgMzA0LCAzMzRdLAogICAgbGVhcExhZGRlciA9IFswLCAzMSwgNjAsIDkxLCAxMjEsIDE1MiwgMTgyLCAyMTMsIDI0NCwgMjc0LCAzMDUsIDMzNV07CgogIGZ1bmN0aW9uIHVuaXRPdXRPZlJhbmdlKHVuaXQsIHZhbHVlKSB7CiAgICByZXR1cm4gbmV3IEludmFsaWQoCiAgICAgICJ1bml0IG91dCBvZiByYW5nZSIsCiAgICAgIGB5b3Ugc3BlY2lmaWVkICR7dmFsdWV9IChvZiB0eXBlICR7dHlwZW9mIHZhbHVlfSkgYXMgYSAke3VuaXR9LCB3aGljaCBpcyBpbnZhbGlkYAogICAgKTsKICB9CgogIGZ1bmN0aW9uIGRheU9mV2Vlayh5ZWFyLCBtb250aCwgZGF5KSB7CiAgICBjb25zdCBkID0gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGggLSAxLCBkYXkpKTsKCiAgICBpZiAoeWVhciA8IDEwMCAmJiB5ZWFyID49IDApIHsKICAgICAgZC5zZXRVVENGdWxsWWVhcihkLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwKTsKICAgIH0KCiAgICBjb25zdCBqcyA9IGQuZ2V0VVRDRGF5KCk7CgogICAgcmV0dXJuIGpzID09PSAwID8gNyA6IGpzOwogIH0KCiAgZnVuY3Rpb24gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSkgewogICAgcmV0dXJuIGRheSArIChpc0xlYXBZZWFyKHllYXIpID8gbGVhcExhZGRlciA6IG5vbkxlYXBMYWRkZXIpW21vbnRoIC0gMV07CiAgfQoKICBmdW5jdGlvbiB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpIHsKICAgIGNvbnN0IHRhYmxlID0gaXNMZWFwWWVhcih5ZWFyKSA/IGxlYXBMYWRkZXIgOiBub25MZWFwTGFkZGVyLAogICAgICBtb250aDAgPSB0YWJsZS5maW5kSW5kZXgoKGkpID0+IGkgPCBvcmRpbmFsKSwKICAgICAgZGF5ID0gb3JkaW5hbCAtIHRhYmxlW21vbnRoMF07CiAgICByZXR1cm4geyBtb250aDogbW9udGgwICsgMSwgZGF5IH07CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBmdW5jdGlvbiBncmVnb3JpYW5Ub1dlZWsoZ3JlZ09iaikgewogICAgY29uc3QgeyB5ZWFyLCBtb250aCwgZGF5IH0gPSBncmVnT2JqLAogICAgICBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSksCiAgICAgIHdlZWtkYXkgPSBkYXlPZldlZWsoeWVhciwgbW9udGgsIGRheSk7CgogICAgbGV0IHdlZWtOdW1iZXIgPSBNYXRoLmZsb29yKChvcmRpbmFsIC0gd2Vla2RheSArIDEwKSAvIDcpLAogICAgICB3ZWVrWWVhcjsKCiAgICBpZiAod2Vla051bWJlciA8IDEpIHsKICAgICAgd2Vla1llYXIgPSB5ZWFyIC0gMTsKICAgICAgd2Vla051bWJlciA9IHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcik7CiAgICB9IGVsc2UgaWYgKHdlZWtOdW1iZXIgPiB3ZWVrc0luV2Vla1llYXIoeWVhcikpIHsKICAgICAgd2Vla1llYXIgPSB5ZWFyICsgMTsKICAgICAgd2Vla051bWJlciA9IDE7CiAgICB9IGVsc2UgewogICAgICB3ZWVrWWVhciA9IHllYXI7CiAgICB9CgogICAgcmV0dXJuIHsgd2Vla1llYXIsIHdlZWtOdW1iZXIsIHdlZWtkYXksIC4uLnRpbWVPYmplY3QoZ3JlZ09iaikgfTsKICB9CgogIGZ1bmN0aW9uIHdlZWtUb0dyZWdvcmlhbih3ZWVrRGF0YSkgewogICAgY29uc3QgeyB3ZWVrWWVhciwgd2Vla051bWJlciwgd2Vla2RheSB9ID0gd2Vla0RhdGEsCiAgICAgIHdlZWtkYXlPZkphbjQgPSBkYXlPZldlZWsod2Vla1llYXIsIDEsIDQpLAogICAgICB5ZWFySW5EYXlzID0gZGF5c0luWWVhcih3ZWVrWWVhcik7CgogICAgbGV0IG9yZGluYWwgPSB3ZWVrTnVtYmVyICogNyArIHdlZWtkYXkgLSB3ZWVrZGF5T2ZKYW40IC0gMywKICAgICAgeWVhcjsKCiAgICBpZiAob3JkaW5hbCA8IDEpIHsKICAgICAgeWVhciA9IHdlZWtZZWFyIC0gMTsKICAgICAgb3JkaW5hbCArPSBkYXlzSW5ZZWFyKHllYXIpOwogICAgfSBlbHNlIGlmIChvcmRpbmFsID4geWVhckluRGF5cykgewogICAgICB5ZWFyID0gd2Vla1llYXIgKyAxOwogICAgICBvcmRpbmFsIC09IGRheXNJblllYXIod2Vla1llYXIpOwogICAgfSBlbHNlIHsKICAgICAgeWVhciA9IHdlZWtZZWFyOwogICAgfQoKICAgIGNvbnN0IHsgbW9udGgsIGRheSB9ID0gdW5jb21wdXRlT3JkaW5hbCh5ZWFyLCBvcmRpbmFsKTsKICAgIHJldHVybiB7IHllYXIsIG1vbnRoLCBkYXksIC4uLnRpbWVPYmplY3Qod2Vla0RhdGEpIH07CiAgfQoKICBmdW5jdGlvbiBncmVnb3JpYW5Ub09yZGluYWwoZ3JlZ0RhdGEpIHsKICAgIGNvbnN0IHsgeWVhciwgbW9udGgsIGRheSB9ID0gZ3JlZ0RhdGE7CiAgICBjb25zdCBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSk7CiAgICByZXR1cm4geyB5ZWFyLCBvcmRpbmFsLCAuLi50aW1lT2JqZWN0KGdyZWdEYXRhKSB9OwogIH0KCiAgZnVuY3Rpb24gb3JkaW5hbFRvR3JlZ29yaWFuKG9yZGluYWxEYXRhKSB7CiAgICBjb25zdCB7IHllYXIsIG9yZGluYWwgfSA9IG9yZGluYWxEYXRhOwogICAgY29uc3QgeyBtb250aCwgZGF5IH0gPSB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpOwogICAgcmV0dXJuIHsgeWVhciwgbW9udGgsIGRheSwgLi4udGltZU9iamVjdChvcmRpbmFsRGF0YSkgfTsKICB9CgogIGZ1bmN0aW9uIGhhc0ludmFsaWRXZWVrRGF0YShvYmopIHsKICAgIGNvbnN0IHZhbGlkWWVhciA9IGlzSW50ZWdlcihvYmoud2Vla1llYXIpLAogICAgICB2YWxpZFdlZWsgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla051bWJlciwgMSwgd2Vla3NJbldlZWtZZWFyKG9iai53ZWVrWWVhcikpLAogICAgICB2YWxpZFdlZWtkYXkgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla2RheSwgMSwgNyk7CgogICAgaWYgKCF2YWxpZFllYXIpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJ3ZWVrWWVhciIsIG9iai53ZWVrWWVhcik7CiAgICB9IGVsc2UgaWYgKCF2YWxpZFdlZWspIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJ3ZWVrIiwgb2JqLndlZWspOwogICAgfSBlbHNlIGlmICghdmFsaWRXZWVrZGF5KSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgid2Vla2RheSIsIG9iai53ZWVrZGF5KTsKICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7CiAgfQoKICBmdW5jdGlvbiBoYXNJbnZhbGlkT3JkaW5hbERhdGEob2JqKSB7CiAgICBjb25zdCB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLnllYXIpLAogICAgICB2YWxpZE9yZGluYWwgPSBpbnRlZ2VyQmV0d2VlbihvYmoub3JkaW5hbCwgMSwgZGF5c0luWWVhcihvYmoueWVhcikpOwoKICAgIGlmICghdmFsaWRZZWFyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgieWVhciIsIG9iai55ZWFyKTsKICAgIH0gZWxzZSBpZiAoIXZhbGlkT3JkaW5hbCkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoIm9yZGluYWwiLCBvYmoub3JkaW5hbCk7CiAgICB9IGVsc2UgcmV0dXJuIGZhbHNlOwogIH0KCiAgZnVuY3Rpb24gaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEob2JqKSB7CiAgICBjb25zdCB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLnllYXIpLAogICAgICB2YWxpZE1vbnRoID0gaW50ZWdlckJldHdlZW4ob2JqLm1vbnRoLCAxLCAxMiksCiAgICAgIHZhbGlkRGF5ID0gaW50ZWdlckJldHdlZW4ob2JqLmRheSwgMSwgZGF5c0luTW9udGgob2JqLnllYXIsIG9iai5tb250aCkpOwoKICAgIGlmICghdmFsaWRZZWFyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgieWVhciIsIG9iai55ZWFyKTsKICAgIH0gZWxzZSBpZiAoIXZhbGlkTW9udGgpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJtb250aCIsIG9iai5tb250aCk7CiAgICB9IGVsc2UgaWYgKCF2YWxpZERheSkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoImRheSIsIG9iai5kYXkpOwogICAgfSBlbHNlIHJldHVybiBmYWxzZTsKICB9CgogIGZ1bmN0aW9uIGhhc0ludmFsaWRUaW1lRGF0YShvYmopIHsKICAgIGNvbnN0IHsgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kIH0gPSBvYmo7CiAgICBjb25zdCB2YWxpZEhvdXIgPQogICAgICAgIGludGVnZXJCZXR3ZWVuKGhvdXIsIDAsIDIzKSB8fAogICAgICAgIChob3VyID09PSAyNCAmJiBtaW51dGUgPT09IDAgJiYgc2Vjb25kID09PSAwICYmIG1pbGxpc2Vjb25kID09PSAwKSwKICAgICAgdmFsaWRNaW51dGUgPSBpbnRlZ2VyQmV0d2VlbihtaW51dGUsIDAsIDU5KSwKICAgICAgdmFsaWRTZWNvbmQgPSBpbnRlZ2VyQmV0d2VlbihzZWNvbmQsIDAsIDU5KSwKICAgICAgdmFsaWRNaWxsaXNlY29uZCA9IGludGVnZXJCZXR3ZWVuKG1pbGxpc2Vjb25kLCAwLCA5OTkpOwoKICAgIGlmICghdmFsaWRIb3VyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgiaG91ciIsIGhvdXIpOwogICAgfSBlbHNlIGlmICghdmFsaWRNaW51dGUpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJtaW51dGUiLCBtaW51dGUpOwogICAgfSBlbHNlIGlmICghdmFsaWRTZWNvbmQpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJzZWNvbmQiLCBzZWNvbmQpOwogICAgfSBlbHNlIGlmICghdmFsaWRNaWxsaXNlY29uZCkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoIm1pbGxpc2Vjb25kIiwgbWlsbGlzZWNvbmQpOwogICAgfSBlbHNlIHJldHVybiBmYWxzZTsKICB9CgogIGNvbnN0IElOVkFMSUQgPSAiSW52YWxpZCBEYXRlVGltZSI7CiAgY29uc3QgTUFYX0RBVEUgPSA4LjY0ZTE1OwoKICBmdW5jdGlvbiB1bnN1cHBvcnRlZFpvbmUoem9uZSkgewogICAgcmV0dXJuIG5ldyBJbnZhbGlkKCJ1bnN1cHBvcnRlZCB6b25lIiwgYHRoZSB6b25lICIke3pvbmUubmFtZX0iIGlzIG5vdCBzdXBwb3J0ZWRgKTsKICB9CgogIC8vIHdlIGNhY2hlIHdlZWsgZGF0YSBvbiB0aGUgRFQgb2JqZWN0IGFuZCB0aGlzIGludGVybWVkaWF0ZXMgdGhlIGNhY2hlCiAgZnVuY3Rpb24gcG9zc2libHlDYWNoZWRXZWVrRGF0YShkdCkgewogICAgaWYgKGR0LndlZWtEYXRhID09PSBudWxsKSB7CiAgICAgIGR0LndlZWtEYXRhID0gZ3JlZ29yaWFuVG9XZWVrKGR0LmMpOwogICAgfQogICAgcmV0dXJuIGR0LndlZWtEYXRhOwogIH0KCiAgLy8gY2xvbmUgcmVhbGx5IG1lYW5zLCAibWFrZSBhIG5ldyBvYmplY3Qgd2l0aCB0aGVzZSBtb2RpZmljYXRpb25zIi4gYWxsICJzZXR0ZXJzIiByZWFsbHkgdXNlIHRoaXMKICAvLyB0byBjcmVhdGUgYSBuZXcgb2JqZWN0IHdoaWxlIG9ubHkgY2hhbmdpbmcgc29tZSBvZiB0aGUgcHJvcGVydGllcwogIGZ1bmN0aW9uIGNsb25lKGluc3QsIGFsdHMpIHsKICAgIGNvbnN0IGN1cnJlbnQgPSB7CiAgICAgIHRzOiBpbnN0LnRzLAogICAgICB6b25lOiBpbnN0LnpvbmUsCiAgICAgIGM6IGluc3QuYywKICAgICAgbzogaW5zdC5vLAogICAgICBsb2M6IGluc3QubG9jLAogICAgICBpbnZhbGlkOiBpbnN0LmludmFsaWQsCiAgICB9OwogICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7IC4uLmN1cnJlbnQsIC4uLmFsdHMsIG9sZDogY3VycmVudCB9KTsKICB9CgogIC8vIGZpbmQgdGhlIHJpZ2h0IG9mZnNldCBhIGdpdmVuIGxvY2FsIHRpbWUuIFRoZSBvIGlucHV0IGlzIG91ciBndWVzcywgd2hpY2ggZGV0ZXJtaW5lcyB3aGljaAogIC8vIG9mZnNldCB3ZSdsbCBwaWNrIGluIGFtYmlndW91cyBjYXNlcyAoZS5nLiB0aGVyZSBhcmUgdHdvIDMgQU1zIGIvYyBGYWxsYmFjayBEU1QpCiAgZnVuY3Rpb24gZml4T2Zmc2V0KGxvY2FsVFMsIG8sIHR6KSB7CiAgICAvLyBPdXIgVVRDIHRpbWUgaXMganVzdCBhIGd1ZXNzIGJlY2F1c2Ugb3VyIG9mZnNldCBpcyBqdXN0IGEgZ3Vlc3MKICAgIGxldCB1dGNHdWVzcyA9IGxvY2FsVFMgLSBvICogNjAgKiAxMDAwOwoKICAgIC8vIFRlc3Qgd2hldGhlciB0aGUgem9uZSBtYXRjaGVzIHRoZSBvZmZzZXQgZm9yIHRoaXMgdHMKICAgIGNvbnN0IG8yID0gdHoub2Zmc2V0KHV0Y0d1ZXNzKTsKCiAgICAvLyBJZiBzbywgb2Zmc2V0IGRpZG4ndCBjaGFuZ2UgYW5kIHdlJ3JlIGRvbmUKICAgIGlmIChvID09PSBvMikgewogICAgICByZXR1cm4gW3V0Y0d1ZXNzLCBvXTsKICAgIH0KCiAgICAvLyBJZiBub3QsIGNoYW5nZSB0aGUgdHMgYnkgdGhlIGRpZmZlcmVuY2UgaW4gdGhlIG9mZnNldAogICAgdXRjR3Vlc3MgLT0gKG8yIC0gbykgKiA2MCAqIDEwMDA7CgogICAgLy8gSWYgdGhhdCBnaXZlcyB1cyB0aGUgbG9jYWwgdGltZSB3ZSB3YW50LCB3ZSdyZSBkb25lCiAgICBjb25zdCBvMyA9IHR6Lm9mZnNldCh1dGNHdWVzcyk7CiAgICBpZiAobzIgPT09IG8zKSB7CiAgICAgIHJldHVybiBbdXRjR3Vlc3MsIG8yXTsKICAgIH0KCiAgICAvLyBJZiBpdCdzIGRpZmZlcmVudCwgd2UncmUgaW4gYSBob2xlIHRpbWUuIFRoZSBvZmZzZXQgaGFzIGNoYW5nZWQsIGJ1dCB0aGUgd2UgZG9uJ3QgYWRqdXN0IHRoZSB0aW1lCiAgICByZXR1cm4gW2xvY2FsVFMgLSBNYXRoLm1pbihvMiwgbzMpICogNjAgKiAxMDAwLCBNYXRoLm1heChvMiwgbzMpXTsKICB9CgogIC8vIGNvbnZlcnQgYW4gZXBvY2ggdGltZXN0YW1wIGludG8gYSBjYWxlbmRhciBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gb2Zmc2V0CiAgZnVuY3Rpb24gdHNUb09iaih0cywgb2Zmc2V0KSB7CiAgICB0cyArPSBvZmZzZXQgKiA2MCAqIDEwMDA7CgogICAgY29uc3QgZCA9IG5ldyBEYXRlKHRzKTsKCiAgICByZXR1cm4gewogICAgICB5ZWFyOiBkLmdldFVUQ0Z1bGxZZWFyKCksCiAgICAgIG1vbnRoOiBkLmdldFVUQ01vbnRoKCkgKyAxLAogICAgICBkYXk6IGQuZ2V0VVRDRGF0ZSgpLAogICAgICBob3VyOiBkLmdldFVUQ0hvdXJzKCksCiAgICAgIG1pbnV0ZTogZC5nZXRVVENNaW51dGVzKCksCiAgICAgIHNlY29uZDogZC5nZXRVVENTZWNvbmRzKCksCiAgICAgIG1pbGxpc2Vjb25kOiBkLmdldFVUQ01pbGxpc2Vjb25kcygpLAogICAgfTsKICB9CgogIC8vIGNvbnZlcnQgYSBjYWxlbmRhciBvYmplY3QgdG8gYSBlcG9jaCB0aW1lc3RhbXAKICBmdW5jdGlvbiBvYmpUb1RTKG9iaiwgb2Zmc2V0LCB6b25lKSB7CiAgICByZXR1cm4gZml4T2Zmc2V0KG9ialRvTG9jYWxUUyhvYmopLCBvZmZzZXQsIHpvbmUpOwogIH0KCiAgLy8gY3JlYXRlIGEgbmV3IERUIGluc3RhbmNlIGJ5IGFkZGluZyBhIGR1cmF0aW9uLCBhZGp1c3RpbmcgZm9yIERTVHMKICBmdW5jdGlvbiBhZGp1c3RUaW1lKGluc3QsIGR1cikgewogICAgY29uc3Qgb1ByZSA9IGluc3QubywKICAgICAgeWVhciA9IGluc3QuYy55ZWFyICsgTWF0aC50cnVuYyhkdXIueWVhcnMpLAogICAgICBtb250aCA9IGluc3QuYy5tb250aCArIE1hdGgudHJ1bmMoZHVyLm1vbnRocykgKyBNYXRoLnRydW5jKGR1ci5xdWFydGVycykgKiAzLAogICAgICBjID0gewogICAgICAgIC4uLmluc3QuYywKICAgICAgICB5ZWFyLAogICAgICAgIG1vbnRoLAogICAgICAgIGRheToKICAgICAgICAgIE1hdGgubWluKGluc3QuYy5kYXksIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSkgKwogICAgICAgICAgTWF0aC50cnVuYyhkdXIuZGF5cykgKwogICAgICAgICAgTWF0aC50cnVuYyhkdXIud2Vla3MpICogNywKICAgICAgfSwKICAgICAgbWlsbGlzVG9BZGQgPSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsKICAgICAgICB5ZWFyczogZHVyLnllYXJzIC0gTWF0aC50cnVuYyhkdXIueWVhcnMpLAogICAgICAgIHF1YXJ0ZXJzOiBkdXIucXVhcnRlcnMgLSBNYXRoLnRydW5jKGR1ci5xdWFydGVycyksCiAgICAgICAgbW9udGhzOiBkdXIubW9udGhzIC0gTWF0aC50cnVuYyhkdXIubW9udGhzKSwKICAgICAgICB3ZWVrczogZHVyLndlZWtzIC0gTWF0aC50cnVuYyhkdXIud2Vla3MpLAogICAgICAgIGRheXM6IGR1ci5kYXlzIC0gTWF0aC50cnVuYyhkdXIuZGF5cyksCiAgICAgICAgaG91cnM6IGR1ci5ob3VycywKICAgICAgICBtaW51dGVzOiBkdXIubWludXRlcywKICAgICAgICBzZWNvbmRzOiBkdXIuc2Vjb25kcywKICAgICAgICBtaWxsaXNlY29uZHM6IGR1ci5taWxsaXNlY29uZHMsCiAgICAgIH0pLmFzKCJtaWxsaXNlY29uZHMiKSwKICAgICAgbG9jYWxUUyA9IG9ialRvTG9jYWxUUyhjKTsKCiAgICBsZXQgW3RzLCBvXSA9IGZpeE9mZnNldChsb2NhbFRTLCBvUHJlLCBpbnN0LnpvbmUpOwoKICAgIGlmIChtaWxsaXNUb0FkZCAhPT0gMCkgewogICAgICB0cyArPSBtaWxsaXNUb0FkZDsKICAgICAgLy8gdGhhdCBjb3VsZCBoYXZlIGNoYW5nZWQgdGhlIG9mZnNldCBieSBnb2luZyBvdmVyIGEgRFNULCBidXQgd2Ugd2FudCB0byBrZWVwIHRoZSB0cyB0aGUgc2FtZQogICAgICBvID0gaW5zdC56b25lLm9mZnNldCh0cyk7CiAgICB9CgogICAgcmV0dXJuIHsgdHMsIG8gfTsKICB9CgogIC8vIGhlbHBlciB1c2VmdWwgaW4gdHVybmluZyB0aGUgcmVzdWx0cyBvZiBwYXJzaW5nIGludG8gcmVhbCBkYXRlcwogIC8vIGJ5IGhhbmRsaW5nIHRoZSB6b25lIG9wdGlvbnMKICBmdW5jdGlvbiBwYXJzZURhdGFUb0RhdGVUaW1lKHBhcnNlZCwgcGFyc2VkWm9uZSwgb3B0cywgZm9ybWF0LCB0ZXh0LCBzcGVjaWZpY09mZnNldCkgewogICAgY29uc3QgeyBzZXRab25lLCB6b25lIH0gPSBvcHRzOwogICAgaWYgKChwYXJzZWQgJiYgT2JqZWN0LmtleXMocGFyc2VkKS5sZW5ndGggIT09IDApIHx8IHBhcnNlZFpvbmUpIHsKICAgICAgY29uc3QgaW50ZXJwcmV0YXRpb25ab25lID0gcGFyc2VkWm9uZSB8fCB6b25lLAogICAgICAgIGluc3QgPSBEYXRlVGltZS5mcm9tT2JqZWN0KHBhcnNlZCwgewogICAgICAgICAgLi4ub3B0cywKICAgICAgICAgIHpvbmU6IGludGVycHJldGF0aW9uWm9uZSwKICAgICAgICAgIHNwZWNpZmljT2Zmc2V0LAogICAgICAgIH0pOwogICAgICByZXR1cm4gc2V0Wm9uZSA/IGluc3QgOiBpbnN0LnNldFpvbmUoem9uZSk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgKICAgICAgICBuZXcgSW52YWxpZCgidW5wYXJzYWJsZSIsIGB0aGUgaW5wdXQgIiR7dGV4dH0iIGNhbid0IGJlIHBhcnNlZCBhcyAke2Zvcm1hdH1gKQogICAgICApOwogICAgfQogIH0KCiAgLy8gaWYgeW91IHdhbnQgdG8gb3V0cHV0IGEgdGVjaG5pY2FsIGZvcm1hdCAoZS5nLiBSRkMgMjgyMiksIHRoaXMgaGVscGVyCiAgLy8gaGVscHMgaGFuZGxlIHRoZSBkZXRhaWxzCiAgZnVuY3Rpb24gdG9UZWNoRm9ybWF0KGR0LCBmb3JtYXQsIGFsbG93WiA9IHRydWUpIHsKICAgIHJldHVybiBkdC5pc1ZhbGlkCiAgICAgID8gRm9ybWF0dGVyLmNyZWF0ZShMb2NhbGUuY3JlYXRlKCJlbi1VUyIpLCB7CiAgICAgICAgICBhbGxvd1osCiAgICAgICAgICBmb3JjZVNpbXBsZTogdHJ1ZSwKICAgICAgICB9KS5mb3JtYXREYXRlVGltZUZyb21TdHJpbmcoZHQsIGZvcm1hdCkKICAgICAgOiBudWxsOwogIH0KCiAgZnVuY3Rpb24gdG9JU09EYXRlKG8sIGV4dGVuZGVkKSB7CiAgICBjb25zdCBsb25nRm9ybWF0ID0gby5jLnllYXIgPiA5OTk5IHx8IG8uYy55ZWFyIDwgMDsKICAgIGxldCBjID0gIiI7CiAgICBpZiAobG9uZ0Zvcm1hdCAmJiBvLmMueWVhciA+PSAwKSBjICs9ICIrIjsKICAgIGMgKz0gcGFkU3RhcnQoby5jLnllYXIsIGxvbmdGb3JtYXQgPyA2IDogNCk7CgogICAgaWYgKGV4dGVuZGVkKSB7CiAgICAgIGMgKz0gIi0iOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5tb250aCk7CiAgICAgIGMgKz0gIi0iOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5kYXkpOwogICAgfSBlbHNlIHsKICAgICAgYyArPSBwYWRTdGFydChvLmMubW9udGgpOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5kYXkpOwogICAgfQogICAgcmV0dXJuIGM7CiAgfQoKICBmdW5jdGlvbiB0b0lTT1RpbWUoCiAgICBvLAogICAgZXh0ZW5kZWQsCiAgICBzdXBwcmVzc1NlY29uZHMsCiAgICBzdXBwcmVzc01pbGxpc2Vjb25kcywKICAgIGluY2x1ZGVPZmZzZXQsCiAgICBleHRlbmRlZFpvbmUKICApIHsKICAgIGxldCBjID0gcGFkU3RhcnQoby5jLmhvdXIpOwogICAgaWYgKGV4dGVuZGVkKSB7CiAgICAgIGMgKz0gIjoiOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5taW51dGUpOwogICAgICBpZiAoby5jLm1pbGxpc2Vjb25kICE9PSAwIHx8IG8uYy5zZWNvbmQgIT09IDAgfHwgIXN1cHByZXNzU2Vjb25kcykgewogICAgICAgIGMgKz0gIjoiOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5taW51dGUpOwogICAgfQoKICAgIGlmIChvLmMubWlsbGlzZWNvbmQgIT09IDAgfHwgby5jLnNlY29uZCAhPT0gMCB8fCAhc3VwcHJlc3NTZWNvbmRzKSB7CiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLnNlY29uZCk7CgogICAgICBpZiAoby5jLm1pbGxpc2Vjb25kICE9PSAwIHx8ICFzdXBwcmVzc01pbGxpc2Vjb25kcykgewogICAgICAgIGMgKz0gIi4iOwogICAgICAgIGMgKz0gcGFkU3RhcnQoby5jLm1pbGxpc2Vjb25kLCAzKTsKICAgICAgfQogICAgfQoKICAgIGlmIChpbmNsdWRlT2Zmc2V0KSB7CiAgICAgIGlmIChvLmlzT2Zmc2V0Rml4ZWQgJiYgby5vZmZzZXQgPT09IDAgJiYgIWV4dGVuZGVkWm9uZSkgewogICAgICAgIGMgKz0gIloiOwogICAgICB9IGVsc2UgaWYgKG8ubyA8IDApIHsKICAgICAgICBjICs9ICItIjsKICAgICAgICBjICs9IHBhZFN0YXJ0KE1hdGgudHJ1bmMoLW8ubyAvIDYwKSk7CiAgICAgICAgYyArPSAiOiI7CiAgICAgICAgYyArPSBwYWRTdGFydChNYXRoLnRydW5jKC1vLm8gJSA2MCkpOwogICAgICB9IGVsc2UgewogICAgICAgIGMgKz0gIisiOwogICAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYyhvLm8gLyA2MCkpOwogICAgICAgIGMgKz0gIjoiOwogICAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYyhvLm8gJSA2MCkpOwogICAgICB9CiAgICB9CgogICAgaWYgKGV4dGVuZGVkWm9uZSkgewogICAgICBjICs9ICJbIiArIG8uem9uZS5pYW5hTmFtZSArICJdIjsKICAgIH0KICAgIHJldHVybiBjOwogIH0KCiAgLy8gZGVmYXVsdHMgZm9yIHVuc3BlY2lmaWVkIHVuaXRzIGluIHRoZSBzdXBwb3J0ZWQgY2FsZW5kYXJzCiAgY29uc3QgZGVmYXVsdFVuaXRWYWx1ZXMgPSB7CiAgICAgIG1vbnRoOiAxLAogICAgICBkYXk6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH0sCiAgICBkZWZhdWx0V2Vla1VuaXRWYWx1ZXMgPSB7CiAgICAgIHdlZWtOdW1iZXI6IDEsCiAgICAgIHdlZWtkYXk6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH0sCiAgICBkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXMgPSB7CiAgICAgIG9yZGluYWw6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH07CgogIC8vIFVuaXRzIGluIHRoZSBzdXBwb3J0ZWQgY2FsZW5kYXJzLCBzb3J0ZWQgYnkgYmlnbmVzcwogIGNvbnN0IG9yZGVyZWRVbml0cyA9IFsieWVhciIsICJtb250aCIsICJkYXkiLCAiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgIm1pbGxpc2Vjb25kIl0sCiAgICBvcmRlcmVkV2Vla1VuaXRzID0gWwogICAgICAid2Vla1llYXIiLAogICAgICAid2Vla051bWJlciIsCiAgICAgICJ3ZWVrZGF5IiwKICAgICAgImhvdXIiLAogICAgICAibWludXRlIiwKICAgICAgInNlY29uZCIsCiAgICAgICJtaWxsaXNlY29uZCIsCiAgICBdLAogICAgb3JkZXJlZE9yZGluYWxVbml0cyA9IFsieWVhciIsICJvcmRpbmFsIiwgImhvdXIiLCAibWludXRlIiwgInNlY29uZCIsICJtaWxsaXNlY29uZCJdOwoKICAvLyBzdGFuZGFyZGl6ZSBjYXNlIGFuZCBwbHVyYWxpdHkgaW4gdW5pdHMKICBmdW5jdGlvbiBub3JtYWxpemVVbml0KHVuaXQpIHsKICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7CiAgICAgIHllYXI6ICJ5ZWFyIiwKICAgICAgeWVhcnM6ICJ5ZWFyIiwKICAgICAgbW9udGg6ICJtb250aCIsCiAgICAgIG1vbnRoczogIm1vbnRoIiwKICAgICAgZGF5OiAiZGF5IiwKICAgICAgZGF5czogImRheSIsCiAgICAgIGhvdXI6ICJob3VyIiwKICAgICAgaG91cnM6ICJob3VyIiwKICAgICAgbWludXRlOiAibWludXRlIiwKICAgICAgbWludXRlczogIm1pbnV0ZSIsCiAgICAgIHF1YXJ0ZXI6ICJxdWFydGVyIiwKICAgICAgcXVhcnRlcnM6ICJxdWFydGVyIiwKICAgICAgc2Vjb25kOiAic2Vjb25kIiwKICAgICAgc2Vjb25kczogInNlY29uZCIsCiAgICAgIG1pbGxpc2Vjb25kOiAibWlsbGlzZWNvbmQiLAogICAgICBtaWxsaXNlY29uZHM6ICJtaWxsaXNlY29uZCIsCiAgICAgIHdlZWtkYXk6ICJ3ZWVrZGF5IiwKICAgICAgd2Vla2RheXM6ICJ3ZWVrZGF5IiwKICAgICAgd2Vla251bWJlcjogIndlZWtOdW1iZXIiLAogICAgICB3ZWVrc251bWJlcjogIndlZWtOdW1iZXIiLAogICAgICB3ZWVrbnVtYmVyczogIndlZWtOdW1iZXIiLAogICAgICB3ZWVreWVhcjogIndlZWtZZWFyIiwKICAgICAgd2Vla3llYXJzOiAid2Vla1llYXIiLAogICAgICBvcmRpbmFsOiAib3JkaW5hbCIsCiAgICB9W3VuaXQudG9Mb3dlckNhc2UoKV07CgogICAgaWYgKCFub3JtYWxpemVkKSB0aHJvdyBuZXcgSW52YWxpZFVuaXRFcnJvcih1bml0KTsKCiAgICByZXR1cm4gbm9ybWFsaXplZDsKICB9CgogIC8vIHRoaXMgaXMgYSBkdW1iZWQgZG93biB2ZXJzaW9uIG9mIGZyb21PYmplY3QoKSB0aGF0IHJ1bnMgYWJvdXQgNjAlIGZhc3RlcgogIC8vIGJ1dCBkb2Vzbid0IGRvIGFueSB2YWxpZGF0aW9uLCBtYWtlcyBhIGJ1bmNoIG9mIGFzc3VtcHRpb25zIGFib3V0IHdoYXQgdW5pdHMKICAvLyBhcmUgcHJlc2VudCwgYW5kIHNvIG9uLgogIGZ1bmN0aW9uIHF1aWNrRFQob2JqLCBvcHRzKSB7CiAgICBjb25zdCB6b25lID0gbm9ybWFsaXplWm9uZShvcHRzLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSwKICAgICAgbG9jID0gTG9jYWxlLmZyb21PYmplY3Qob3B0cyksCiAgICAgIHRzTm93ID0gU2V0dGluZ3Mubm93KCk7CgogICAgbGV0IHRzLCBvOwoKICAgIC8vIGFzc3VtZSB3ZSBoYXZlIHRoZSBoaWdoZXItb3JkZXIgdW5pdHMKICAgIGlmICghaXNVbmRlZmluZWQob2JqLnllYXIpKSB7CiAgICAgIGZvciAoY29uc3QgdSBvZiBvcmRlcmVkVW5pdHMpIHsKICAgICAgICBpZiAoaXNVbmRlZmluZWQob2JqW3VdKSkgewogICAgICAgICAgb2JqW3VdID0gZGVmYXVsdFVuaXRWYWx1ZXNbdV07CiAgICAgICAgfQogICAgICB9CgogICAgICBjb25zdCBpbnZhbGlkID0gaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEob2JqKSB8fCBoYXNJbnZhbGlkVGltZURhdGEob2JqKTsKICAgICAgaWYgKGludmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChpbnZhbGlkKTsKICAgICAgfQoKICAgICAgY29uc3Qgb2Zmc2V0UHJvdmlzID0gem9uZS5vZmZzZXQodHNOb3cpOwogICAgICBbdHMsIG9dID0gb2JqVG9UUyhvYmosIG9mZnNldFByb3Zpcywgem9uZSk7CiAgICB9IGVsc2UgewogICAgICB0cyA9IHRzTm93OwogICAgfQoKICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoeyB0cywgem9uZSwgbG9jLCBvIH0pOwogIH0KCiAgZnVuY3Rpb24gZGlmZlJlbGF0aXZlKHN0YXJ0LCBlbmQsIG9wdHMpIHsKICAgIGNvbnN0IHJvdW5kID0gaXNVbmRlZmluZWQob3B0cy5yb3VuZCkgPyB0cnVlIDogb3B0cy5yb3VuZCwKICAgICAgZm9ybWF0ID0gKGMsIHVuaXQpID0+IHsKICAgICAgICBjID0gcm91bmRUbyhjLCByb3VuZCB8fCBvcHRzLmNhbGVuZGFyeSA/IDAgOiAyLCB0cnVlKTsKICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBlbmQubG9jLmNsb25lKG9wdHMpLnJlbEZvcm1hdHRlcihvcHRzKTsKICAgICAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdChjLCB1bml0KTsKICAgICAgfSwKICAgICAgZGlmZmVyID0gKHVuaXQpID0+IHsKICAgICAgICBpZiAob3B0cy5jYWxlbmRhcnkpIHsKICAgICAgICAgIGlmICghZW5kLmhhc1NhbWUoc3RhcnQsIHVuaXQpKSB7CiAgICAgICAgICAgIHJldHVybiBlbmQuc3RhcnRPZih1bml0KS5kaWZmKHN0YXJ0LnN0YXJ0T2YodW5pdCksIHVuaXQpLmdldCh1bml0KTsKICAgICAgICAgIH0gZWxzZSByZXR1cm4gMDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIGVuZC5kaWZmKHN0YXJ0LCB1bml0KS5nZXQodW5pdCk7CiAgICAgICAgfQogICAgICB9OwoKICAgIGlmIChvcHRzLnVuaXQpIHsKICAgICAgcmV0dXJuIGZvcm1hdChkaWZmZXIob3B0cy51bml0KSwgb3B0cy51bml0KTsKICAgIH0KCiAgICBmb3IgKGNvbnN0IHVuaXQgb2Ygb3B0cy51bml0cykgewogICAgICBjb25zdCBjb3VudCA9IGRpZmZlcih1bml0KTsKICAgICAgaWYgKE1hdGguYWJzKGNvdW50KSA+PSAxKSB7CiAgICAgICAgcmV0dXJuIGZvcm1hdChjb3VudCwgdW5pdCk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBmb3JtYXQoc3RhcnQgPiBlbmQgPyAtMCA6IDAsIG9wdHMudW5pdHNbb3B0cy51bml0cy5sZW5ndGggLSAxXSk7CiAgfQoKICBmdW5jdGlvbiBsYXN0T3B0cyhhcmdMaXN0KSB7CiAgICBsZXQgb3B0cyA9IHt9LAogICAgICBhcmdzOwogICAgaWYgKGFyZ0xpc3QubGVuZ3RoID4gMCAmJiB0eXBlb2YgYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdID09PSAib2JqZWN0IikgewogICAgICBvcHRzID0gYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdOwogICAgICBhcmdzID0gQXJyYXkuZnJvbShhcmdMaXN0KS5zbGljZSgwLCBhcmdMaXN0Lmxlbmd0aCAtIDEpOwogICAgfSBlbHNlIHsKICAgICAgYXJncyA9IEFycmF5LmZyb20oYXJnTGlzdCk7CiAgICB9CiAgICByZXR1cm4gW29wdHMsIGFyZ3NdOwogIH0KCiAgLyoqCiAgICogQSBEYXRlVGltZSBpcyBhbiBpbW11dGFibGUgZGF0YSBzdHJ1Y3R1cmUgcmVwcmVzZW50aW5nIGEgc3BlY2lmaWMgZGF0ZSBhbmQgdGltZSBhbmQgYWNjb21wYW55aW5nIG1ldGhvZHMuIEl0IGNvbnRhaW5zIGNsYXNzIGFuZCBpbnN0YW5jZSBtZXRob2RzIGZvciBjcmVhdGluZywgcGFyc2luZywgaW50ZXJyb2dhdGluZywgdHJhbnNmb3JtaW5nLCBhbmQgZm9ybWF0dGluZyB0aGVtLgogICAqCiAgICogQSBEYXRlVGltZSBjb21wcmlzZXMgb2Y6CiAgICogKiBBIHRpbWVzdGFtcC4gRWFjaCBEYXRlVGltZSBpbnN0YW5jZSByZWZlcnMgdG8gYSBzcGVjaWZpYyBtaWxsaXNlY29uZCBvZiB0aGUgVW5peCBlcG9jaC4KICAgKiAqIEEgdGltZSB6b25lLiBFYWNoIGluc3RhbmNlIGlzIGNvbnNpZGVyZWQgaW4gdGhlIGNvbnRleHQgb2YgYSBzcGVjaWZpYyB6b25lIChieSBkZWZhdWx0IHRoZSBsb2NhbCBzeXN0ZW0ncyB6b25lKS4KICAgKiAqIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyB0aGF0IGVmZmVjdCBob3cgb3V0cHV0IHN0cmluZ3MgYXJlIGZvcm1hdHRlZCwgc3VjaCBhcyBgbG9jYWxlYCwgYG51bWJlcmluZ1N5c3RlbWAsIGFuZCBgb3V0cHV0Q2FsZW5kYXJgLgogICAqCiAgICogSGVyZSBpcyBhIGJyaWVmIG92ZXJ2aWV3IG9mIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgZnVuY3Rpb25hbGl0eSBpdCBwcm92aWRlczoKICAgKgogICAqICogKipDcmVhdGlvbioqOiBUbyBjcmVhdGUgYSBEYXRlVGltZSBmcm9tIGl0cyBjb21wb25lbnRzLCB1c2Ugb25lIG9mIGl0cyBmYWN0b3J5IGNsYXNzIG1ldGhvZHM6IHtAbGluayBEYXRlVGltZS5sb2NhbH0sIHtAbGluayBEYXRlVGltZS51dGN9LCBhbmQgKG1vc3QgZmxleGlibHkpIHtAbGluayBEYXRlVGltZS5mcm9tT2JqZWN0fS4gVG8gY3JlYXRlIG9uZSBmcm9tIGEgc3RhbmRhcmQgc3RyaW5nIGZvcm1hdCwgdXNlIHtAbGluayBEYXRlVGltZS5mcm9tSVNPfSwge0BsaW5rIERhdGVUaW1lLmZyb21IVFRQfSwgYW5kIHtAbGluayBEYXRlVGltZS5mcm9tUkZDMjgyMn0uIFRvIGNyZWF0ZSBvbmUgZnJvbSBhIGN1c3RvbSBzdHJpbmcgZm9ybWF0LCB1c2Uge0BsaW5rIERhdGVUaW1lLmZyb21Gb3JtYXR9LiBUbyBjcmVhdGUgb25lIGZyb20gYSBuYXRpdmUgSlMgZGF0ZSwgdXNlIHtAbGluayBEYXRlVGltZS5mcm9tSlNEYXRlfS4KICAgKiAqICoqR3JlZ29yaWFuIGNhbGVuZGFyIGFuZCB0aW1lKio6IFRvIGV4YW1pbmUgdGhlIEdyZWdvcmlhbiBwcm9wZXJ0aWVzIG9mIGEgRGF0ZVRpbWUgaW5kaXZpZHVhbGx5IChpLmUgYXMgb3Bwb3NlZCB0byBjb2xsZWN0aXZlbHkgdGhyb3VnaCB7QGxpbmsgRGF0ZVRpbWUjdG9PYmplY3R9KSwgdXNlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjeWVhcn0sIHtAbGluayBEYXRlVGltZSNtb250aH0sCiAgICoge0BsaW5rIERhdGVUaW1lI2RheX0sIHtAbGluayBEYXRlVGltZSNob3VyfSwge0BsaW5rIERhdGVUaW1lI21pbnV0ZX0sIHtAbGluayBEYXRlVGltZSNzZWNvbmR9LCB7QGxpbmsgRGF0ZVRpbWUjbWlsbGlzZWNvbmR9IGFjY2Vzc29ycy4KICAgKiAqICoqV2VlayBjYWxlbmRhcioqOiBGb3IgSVNPIHdlZWsgY2FsZW5kYXIgYXR0cmlidXRlcywgc2VlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjd2Vla1llYXJ9LCB7QGxpbmsgRGF0ZVRpbWUjd2Vla051bWJlcn0sIGFuZCB7QGxpbmsgRGF0ZVRpbWUjd2Vla2RheX0gYWNjZXNzb3JzLgogICAqICogKipDb25maWd1cmF0aW9uKiogU2VlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjbG9jYWxlfSBhbmQge0BsaW5rIERhdGVUaW1lI251bWJlcmluZ1N5c3RlbX0gYWNjZXNzb3JzLgogICAqICogKipUcmFuc2Zvcm1hdGlvbioqOiBUbyB0cmFuc2Zvcm0gdGhlIERhdGVUaW1lIGludG8gb3RoZXIgRGF0ZVRpbWVzLCB1c2Uge0BsaW5rIERhdGVUaW1lI3NldH0sIHtAbGluayBEYXRlVGltZSNyZWNvbmZpZ3VyZX0sIHtAbGluayBEYXRlVGltZSNzZXRab25lfSwge0BsaW5rIERhdGVUaW1lI3NldExvY2FsZX0sIHtAbGluayBEYXRlVGltZS5wbHVzfSwge0BsaW5rIERhdGVUaW1lI21pbnVzfSwge0BsaW5rIERhdGVUaW1lI2VuZE9mfSwge0BsaW5rIERhdGVUaW1lI3N0YXJ0T2Z9LCB7QGxpbmsgRGF0ZVRpbWUjdG9VVEN9LCBhbmQge0BsaW5rIERhdGVUaW1lI3RvTG9jYWx9LgogICAqICogKipPdXRwdXQqKjogVG8gY29udmVydCB0aGUgRGF0ZVRpbWUgdG8gb3RoZXIgcmVwcmVzZW50YXRpb25zLCB1c2UgdGhlIHtAbGluayBEYXRlVGltZSN0b1JlbGF0aXZlfSwge0BsaW5rIERhdGVUaW1lI3RvUmVsYXRpdmVDYWxlbmRhcn0sIHtAbGluayBEYXRlVGltZSN0b0pTT059LCB7QGxpbmsgRGF0ZVRpbWUjdG9JU099LCB7QGxpbmsgRGF0ZVRpbWUjdG9IVFRQfSwge0BsaW5rIERhdGVUaW1lI3RvT2JqZWN0fSwge0BsaW5rIERhdGVUaW1lI3RvUkZDMjgyMn0sIHtAbGluayBEYXRlVGltZSN0b1N0cmluZ30sIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30sIHtAbGluayBEYXRlVGltZSN0b0Zvcm1hdH0sIHtAbGluayBEYXRlVGltZSN0b01pbGxpc30gYW5kIHtAbGluayBEYXRlVGltZSN0b0pTRGF0ZX0uCiAgICoKICAgKiBUaGVyZSdzIHBsZW50eSBvdGhlcnMgZG9jdW1lbnRlZCBiZWxvdy4gSW4gYWRkaXRpb24sIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHN1YnRsZXIgdG9waWNzIGxpa2UgaW50ZXJuYXRpb25hbGl6YXRpb24sIHRpbWUgem9uZXMsIGFsdGVybmF0aXZlIGNhbGVuZGFycywgdmFsaWRpdHksIGFuZCBzbyBvbiwgc2VlIHRoZSBleHRlcm5hbCBkb2N1bWVudGF0aW9uLgogICAqLwogIGNsYXNzIERhdGVUaW1lIHsKICAgIC8qKgogICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgKi8KICAgIGNvbnN0cnVjdG9yKGNvbmZpZykgewogICAgICBjb25zdCB6b25lID0gY29uZmlnLnpvbmUgfHwgU2V0dGluZ3MuZGVmYXVsdFpvbmU7CgogICAgICBsZXQgaW52YWxpZCA9CiAgICAgICAgY29uZmlnLmludmFsaWQgfHwKICAgICAgICAoTnVtYmVyLmlzTmFOKGNvbmZpZy50cykgPyBuZXcgSW52YWxpZCgiaW52YWxpZCBpbnB1dCIpIDogbnVsbCkgfHwKICAgICAgICAoIXpvbmUuaXNWYWxpZCA/IHVuc3VwcG9ydGVkWm9uZSh6b25lKSA6IG51bGwpOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLnRzID0gaXNVbmRlZmluZWQoY29uZmlnLnRzKSA/IFNldHRpbmdzLm5vdygpIDogY29uZmlnLnRzOwoKICAgICAgbGV0IGMgPSBudWxsLAogICAgICAgIG8gPSBudWxsOwogICAgICBpZiAoIWludmFsaWQpIHsKICAgICAgICBjb25zdCB1bmNoYW5nZWQgPSBjb25maWcub2xkICYmIGNvbmZpZy5vbGQudHMgPT09IHRoaXMudHMgJiYgY29uZmlnLm9sZC56b25lLmVxdWFscyh6b25lKTsKCiAgICAgICAgaWYgKHVuY2hhbmdlZCkgewogICAgICAgICAgW2MsIG9dID0gW2NvbmZpZy5vbGQuYywgY29uZmlnLm9sZC5vXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY29uc3Qgb3QgPSB6b25lLm9mZnNldCh0aGlzLnRzKTsKICAgICAgICAgIGMgPSB0c1RvT2JqKHRoaXMudHMsIG90KTsKICAgICAgICAgIGludmFsaWQgPSBOdW1iZXIuaXNOYU4oYy55ZWFyKSA/IG5ldyBJbnZhbGlkKCJpbnZhbGlkIGlucHV0IikgOiBudWxsOwogICAgICAgICAgYyA9IGludmFsaWQgPyBudWxsIDogYzsKICAgICAgICAgIG8gPSBpbnZhbGlkID8gbnVsbCA6IG90OwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgdGhpcy5fem9uZSA9IHpvbmU7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubG9jID0gY29uZmlnLmxvYyB8fCBMb2NhbGUuY3JlYXRlKCk7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuaW52YWxpZCA9IGludmFsaWQ7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMud2Vla0RhdGEgPSBudWxsOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmMgPSBjOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLm8gPSBvOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25EYXRlVGltZSA9IHRydWU7CiAgICB9CgogICAgLy8gQ09OU1RSVUNUCgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmb3IgdGhlIGN1cnJlbnQgaW5zdGFudCwgaW4gdGhlIHN5c3RlbSdzIHRpbWUgem9uZS4KICAgICAqCiAgICAgKiBVc2UgU2V0dGluZ3MgdG8gb3ZlcnJpZGUgdGhlc2UgZGVmYXVsdCB2YWx1ZXMgaWYgbmVlZGVkLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oKSAvL34+IG5vdyBpbiB0aGUgSVNPIGZvcm1hdAogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBub3coKSB7CiAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoe30pOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbG9jYWwgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbeWVhcl0gLSBUaGUgY2FsZW5kYXIgeWVhci4gSWYgb21pdHRlZCAoYXMgaW4sIGNhbGwgYGxvY2FsKClgIHdpdGggbm8gYXJndW1lbnRzKSwgdGhlIGN1cnJlbnQgdGltZSB3aWxsIGJlIHVzZWQKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbW9udGg9MV0gLSBUaGUgbW9udGgsIDEtaW5kZXhlZAogICAgICogQHBhcmFtIHtudW1iZXJ9IFtkYXk9MV0gLSBUaGUgZGF5IG9mIHRoZSBtb250aCwgMS1pbmRleGVkCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2hvdXI9MF0gLSBUaGUgaG91ciBvZiB0aGUgZGF5LCBpbiAyNC1ob3VyIHRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWludXRlPTBdIC0gVGhlIG1pbnV0ZSBvZiB0aGUgaG91ciwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW21pbGxpc2Vjb25kPTBdIC0gVGhlIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA5OTkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiBub3cKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKHsgem9uZTogIkFtZXJpY2EvTmV3X1lvcmsiIH0pICAgICAgLy9+PiBub3csIGluIFVTIGVhc3QgY29hc3QgdGltZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IDIwMTctMDEtMDFUMDA6MDA6MDAKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgeyBsb2NhbGU6ICJmciIgfSkgICAgIC8vfj4gMjAxNy0wMy0xMlQwMDowMDowMCwgd2l0aCBhIEZyZW5jaCBsb2NhbGUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCA1KSAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjAwOjAwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgeyB6b25lOiAidXRjIiB9KSAgIC8vfj4gMjAxNy0wMy0xMlQwNTowMDowMCwgaW4gVVRDCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgNDUpICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NTowMAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMywgMTIsIDUsIDQ1LCAxMCkgICAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6NDU6MTAKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTAsIDc2NSkgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwLjc2NQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBsb2NhbCgpIHsKICAgICAgY29uc3QgW29wdHMsIGFyZ3NdID0gbGFzdE9wdHMoYXJndW1lbnRzKSwKICAgICAgICBbeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kXSA9IGFyZ3M7CiAgICAgIHJldHVybiBxdWlja0RUKHsgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kIH0sIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgaW4gVVRDCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3llYXJdIC0gVGhlIGNhbGVuZGFyIHllYXIuIElmIG9taXR0ZWQgKGFzIGluLCBjYWxsIGB1dGMoKWAgd2l0aCBubyBhcmd1bWVudHMpLCB0aGUgY3VycmVudCB0aW1lIHdpbGwgYmUgdXNlZAogICAgICogQHBhcmFtIHtudW1iZXJ9IFttb250aD0xXSAtIFRoZSBtb250aCwgMS1pbmRleGVkCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RheT0xXSAtIFRoZSBkYXkgb2YgdGhlIG1vbnRoCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2hvdXI9MF0gLSBUaGUgaG91ciBvZiB0aGUgZGF5LCBpbiAyNC1ob3VyIHRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWludXRlPTBdIC0gVGhlIG1pbnV0ZSBvZiB0aGUgaG91ciwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW21pbGxpc2Vjb25kPTBdIC0gVGhlIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA5OTkKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5sb2NhbGVdIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5vdXRwdXRDYWxlbmRhcl0gLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IG5vdwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAxLTAxVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgeyBsb2NhbGU6ICJmciIgfSkgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjAwWiB3aXRoIGEgRnJlbmNoIGxvY2FsZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTApICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTAsIDc2NSwgeyBsb2NhbGU6ICJmciIgfSkgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwLjc2NVogd2l0aCBhIEZyZW5jaCBsb2NhbGUKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgdXRjKCkgewogICAgICBjb25zdCBbb3B0cywgYXJnc10gPSBsYXN0T3B0cyhhcmd1bWVudHMpLAogICAgICAgIFt5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmRdID0gYXJnczsKCiAgICAgIG9wdHMuem9uZSA9IEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZTsKICAgICAgcmV0dXJuIHF1aWNrRFQoeyB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmQgfSwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgSmF2YVNjcmlwdCBEYXRlIG9iamVjdC4gVXNlcyB0aGUgZGVmYXVsdCB6b25lLgogICAgICogQHBhcmFtIHtEYXRlfSBkYXRlIC0gYSBKYXZhU2NyaXB0IERhdGUgb2JqZWN0CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0aW9ucy56b25lPSdsb2NhbCddIC0gdGhlIHpvbmUgdG8gcGxhY2UgdGhlIERhdGVUaW1lIGludG8KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbUpTRGF0ZShkYXRlLCBvcHRpb25zID0ge30pIHsKICAgICAgY29uc3QgdHMgPSBpc0RhdGUoZGF0ZSkgPyBkYXRlLnZhbHVlT2YoKSA6IE5hTjsKICAgICAgaWYgKE51bWJlci5pc05hTih0cykpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgiaW52YWxpZCBpbnB1dCIpOwogICAgICB9CgogICAgICBjb25zdCB6b25lVG9Vc2UgPSBub3JtYWxpemVab25lKG9wdGlvbnMuem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwogICAgICBpZiAoIXpvbmVUb1VzZS5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQodW5zdXBwb3J0ZWRab25lKHpvbmVUb1VzZSkpOwogICAgICB9CgogICAgICByZXR1cm4gbmV3IERhdGVUaW1lKHsKICAgICAgICB0czogdHMsCiAgICAgICAgem9uZTogem9uZVRvVXNlLAogICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksCiAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChtZWFuaW5nIHNpbmNlIDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuIFVzZXMgdGhlIGRlZmF1bHQgem9uZS4KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaWxsaXNlY29uZHMgLSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgMTk3MCBVVEMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRpb25zLnpvbmU9J2xvY2FsJ10gLSB0aGUgem9uZSB0byBwbGFjZSB0aGUgRGF0ZVRpbWUgaW50bwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmxvY2FsZV0gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tTWlsbGlzKG1pbGxpc2Vjb25kcywgb3B0aW9ucyA9IHt9KSB7CiAgICAgIGlmICghaXNOdW1iZXIobWlsbGlzZWNvbmRzKSkgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigKICAgICAgICAgIGBmcm9tTWlsbGlzIHJlcXVpcmVzIGEgbnVtZXJpY2FsIGlucHV0LCBidXQgcmVjZWl2ZWQgYSAke3R5cGVvZiBtaWxsaXNlY29uZHN9IHdpdGggdmFsdWUgJHttaWxsaXNlY29uZHN9YAogICAgICAgICk7CiAgICAgIH0gZWxzZSBpZiAobWlsbGlzZWNvbmRzIDwgLU1BWF9EQVRFIHx8IG1pbGxpc2Vjb25kcyA+IE1BWF9EQVRFKSB7CiAgICAgICAgLy8gdGhpcyBpc24ndCBwZXJmZWN0IGJlY2F1c2UgYmVjYXVzZSB3ZSBjYW4gc3RpbGwgZW5kIHVwIG91dCBvZiByYW5nZSBiZWNhdXNlIG9mIGFkZGl0aW9uYWwgc2hpZnRpbmcsIGJ1dCBpdCdzIGEgc3RhcnQKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgiVGltZXN0YW1wIG91dCBvZiByYW5nZSIpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoewogICAgICAgICAgdHM6IG1pbGxpc2Vjb25kcywKICAgICAgICAgIHpvbmU6IG5vcm1hbGl6ZVpvbmUob3B0aW9ucy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSksCiAgICAgICAgICBsb2M6IExvY2FsZS5mcm9tT2JqZWN0KG9wdGlvbnMpLAogICAgICAgIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChtZWFuaW5nIHNpbmNlIDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuIFVzZXMgdGhlIGRlZmF1bHQgem9uZS4KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzZWNvbmRzIC0gYSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSAxOTcwIFVUQwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBEYXRlVGltZQogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdGlvbnMuem9uZT0nbG9jYWwnXSAtIHRoZSB6b25lIHRvIHBsYWNlIHRoZSBEYXRlVGltZSBpbnRvCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubG9jYWxlXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgc3RhdGljIGZyb21TZWNvbmRzKHNlY29uZHMsIG9wdGlvbnMgPSB7fSkgewogICAgICBpZiAoIWlzTnVtYmVyKHNlY29uZHMpKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJmcm9tU2Vjb25kcyByZXF1aXJlcyBhIG51bWVyaWNhbCBpbnB1dCIpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoewogICAgICAgICAgdHM6IHNlY29uZHMgKiAxMDAwLAogICAgICAgICAgem9uZTogbm9ybWFsaXplWm9uZShvcHRpb25zLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSwKICAgICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksCiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIGtleXMgbGlrZSAneWVhcicgYW5kICdob3VyJyB3aXRoIHJlYXNvbmFibGUgZGVmYXVsdHMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqIC0gdGhlIG9iamVjdCB0byBjcmVhdGUgdGhlIERhdGVUaW1lIGZyb20KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoueWVhciAtIGEgeWVhciwgc3VjaCBhcyAxOTg3CiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1vbnRoIC0gYSBtb250aCwgMS0xMgogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5kYXkgLSBhIGRheSBvZiB0aGUgbW9udGgsIDEtMzEsIGRlcGVuZGluZyBvbiB0aGUgbW9udGgKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoub3JkaW5hbCAtIGRheSBvZiB0aGUgeWVhciwgMS0zNjUgb3IgMzY2CiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLndlZWtZZWFyIC0gYW4gSVNPIHdlZWsgeWVhcgogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrTnVtYmVyIC0gYW4gSVNPIHdlZWsgbnVtYmVyLCBiZXR3ZWVuIDEgYW5kIDUyIG9yIDUzLCBkZXBlbmRpbmcgb24gdGhlIHllYXIKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla2RheSAtIGFuIElTTyB3ZWVrZGF5LCAxLTcsIHdoZXJlIDEgaXMgTW9uZGF5IGFuZCA3IGlzIFN1bmRheQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5ob3VyIC0gaG91ciBvZiB0aGUgZGF5LCAwLTIzCiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1pbnV0ZSAtIG1pbnV0ZSBvZiB0aGUgaG91ciwgMC01OQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5zZWNvbmQgLSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgMC01OQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taWxsaXNlY29uZCAtIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIDAtOTk5CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIGNyZWF0aW5nIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSBpbnRlcnByZXQgdGhlIG51bWJlcnMgaW4gdGhlIGNvbnRleHQgb2YgYSBwYXJ0aWN1bGFyIHpvbmUuIENhbiB0YWtlIGFueSB2YWx1ZSB0YWtlbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gc2V0Wm9uZSgpCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdzeXN0ZW0ncyBsb2NhbGUnXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgeWVhcjogMTk4MiwgbW9udGg6IDUsIGRheTogMjV9KS50b0lTT0RhdGUoKSAvLz0+ICcxOTgyLTA1LTI1JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IDE5ODIgfSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wMS0wMScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0pIC8vfj4gdG9kYXkgYXQgMTA6MjY6MDYKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0sIHsgem9uZTogJ3V0YycgfSksCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgaG91cjogMTAsIG1pbnV0ZTogMjYsIHNlY29uZDogNiB9LCB7IHpvbmU6ICdsb2NhbCcgfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0sIHsgem9uZTogJ0FtZXJpY2EvTmV3X1lvcmsnIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgd2Vla1llYXI6IDIwMTYsIHdlZWtOdW1iZXI6IDIsIHdlZWtkYXk6IDMgfSkudG9JU09EYXRlKCkgLy89PiAnMjAxNi0wMS0xMycKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbU9iamVjdChvYmosIG9wdHMgPSB7fSkgewogICAgICBvYmogPSBvYmogfHwge307CiAgICAgIGNvbnN0IHpvbmVUb1VzZSA9IG5vcm1hbGl6ZVpvbmUob3B0cy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7CiAgICAgIGlmICghem9uZVRvVXNlLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZVRvVXNlKSk7CiAgICAgIH0KCiAgICAgIGNvbnN0IHRzTm93ID0gU2V0dGluZ3Mubm93KCksCiAgICAgICAgb2Zmc2V0UHJvdmlzID0gIWlzVW5kZWZpbmVkKG9wdHMuc3BlY2lmaWNPZmZzZXQpCiAgICAgICAgICA/IG9wdHMuc3BlY2lmaWNPZmZzZXQKICAgICAgICAgIDogem9uZVRvVXNlLm9mZnNldCh0c05vdyksCiAgICAgICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZU9iamVjdChvYmosIG5vcm1hbGl6ZVVuaXQpLAogICAgICAgIGNvbnRhaW5zT3JkaW5hbCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm9yZGluYWwpLAogICAgICAgIGNvbnRhaW5zR3JlZ29yWWVhciA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLnllYXIpLAogICAgICAgIGNvbnRhaW5zR3JlZ29yTUQgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5tb250aCkgfHwgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQuZGF5KSwKICAgICAgICBjb250YWluc0dyZWdvciA9IGNvbnRhaW5zR3JlZ29yWWVhciB8fCBjb250YWluc0dyZWdvck1ELAogICAgICAgIGRlZmluaXRlV2Vla0RlZiA9IG5vcm1hbGl6ZWQud2Vla1llYXIgfHwgbm9ybWFsaXplZC53ZWVrTnVtYmVyLAogICAgICAgIGxvYyA9IExvY2FsZS5mcm9tT2JqZWN0KG9wdHMpOwoKICAgICAgLy8gY2FzZXM6CiAgICAgIC8vIGp1c3QgYSB3ZWVrZGF5IC0+IHRoaXMgd2VlaydzIGluc3RhbmNlIG9mIHRoYXQgd2Vla2RheSwgbm8gd29ycmllcwogICAgICAvLyAoZ3JlZ29yaWFuIGRhdGEgb3Igb3JkaW5hbCkgKyAod2Vla1llYXIgb3Igd2Vla051bWJlcikgLT4gZXJyb3IKICAgICAgLy8gKGdyZWdvcmlhbiBtb250aCBvciBkYXkpICsgb3JkaW5hbCAtPiBlcnJvcgogICAgICAvLyBvdGhlcndpc2UganVzdCB1c2Ugd2Vla3Mgb3Igb3JkaW5hbHMgb3IgZ3JlZ29yaWFuLCBkZXBlbmRpbmcgb24gd2hhdCdzIHNwZWNpZmllZAoKICAgICAgaWYgKChjb250YWluc0dyZWdvciB8fCBjb250YWluc09yZGluYWwpICYmIGRlZmluaXRlV2Vla0RlZikgewogICAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcigKICAgICAgICAgICJDYW4ndCBtaXggd2Vla1llYXIvd2Vla051bWJlciB1bml0cyB3aXRoIHllYXIvbW9udGgvZGF5IG9yIG9yZGluYWxzIgogICAgICAgICk7CiAgICAgIH0KCiAgICAgIGlmIChjb250YWluc0dyZWdvck1EICYmIGNvbnRhaW5zT3JkaW5hbCkgewogICAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcigiQ2FuJ3QgbWl4IG9yZGluYWwgZGF0ZXMgd2l0aCBtb250aC9kYXkiKTsKICAgICAgfQoKICAgICAgY29uc3QgdXNlV2Vla0RhdGEgPSBkZWZpbml0ZVdlZWtEZWYgfHwgKG5vcm1hbGl6ZWQud2Vla2RheSAmJiAhY29udGFpbnNHcmVnb3IpOwoKICAgICAgLy8gY29uZmlndXJlIG91cnNlbHZlcyB0byBkZWFsIHdpdGggZ3JlZ29yaWFuIGRhdGVzIG9yIHdlZWsgc3R1ZmYKICAgICAgbGV0IHVuaXRzLAogICAgICAgIGRlZmF1bHRWYWx1ZXMsCiAgICAgICAgb2JqTm93ID0gdHNUb09iaih0c05vdywgb2Zmc2V0UHJvdmlzKTsKICAgICAgaWYgKHVzZVdlZWtEYXRhKSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkV2Vla1VuaXRzOwogICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0V2Vla1VuaXRWYWx1ZXM7CiAgICAgICAgb2JqTm93ID0gZ3JlZ29yaWFuVG9XZWVrKG9iak5vdyk7CiAgICAgIH0gZWxzZSBpZiAoY29udGFpbnNPcmRpbmFsKSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkT3JkaW5hbFVuaXRzOwogICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXM7CiAgICAgICAgb2JqTm93ID0gZ3JlZ29yaWFuVG9PcmRpbmFsKG9iak5vdyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkVW5pdHM7CiAgICAgICAgZGVmYXVsdFZhbHVlcyA9IGRlZmF1bHRVbml0VmFsdWVzOwogICAgICB9CgogICAgICAvLyBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIG1pc3Npbmcgc3R1ZmYKICAgICAgbGV0IGZvdW5kRmlyc3QgPSBmYWxzZTsKICAgICAgZm9yIChjb25zdCB1IG9mIHVuaXRzKSB7CiAgICAgICAgY29uc3QgdiA9IG5vcm1hbGl6ZWRbdV07CiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh2KSkgewogICAgICAgICAgZm91bmRGaXJzdCA9IHRydWU7CiAgICAgICAgfSBlbHNlIGlmIChmb3VuZEZpcnN0KSB7CiAgICAgICAgICBub3JtYWxpemVkW3VdID0gZGVmYXVsdFZhbHVlc1t1XTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgbm9ybWFsaXplZFt1XSA9IG9iak5vd1t1XTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgdmFsdWVzIHdlIGhhdmUgYXJlIGluIHJhbmdlCiAgICAgIGNvbnN0IGhpZ2hlck9yZGVySW52YWxpZCA9IHVzZVdlZWtEYXRhCiAgICAgICAgICA/IGhhc0ludmFsaWRXZWVrRGF0YShub3JtYWxpemVkKQogICAgICAgICAgOiBjb250YWluc09yZGluYWwKICAgICAgICAgID8gaGFzSW52YWxpZE9yZGluYWxEYXRhKG5vcm1hbGl6ZWQpCiAgICAgICAgICA6IGhhc0ludmFsaWRHcmVnb3JpYW5EYXRhKG5vcm1hbGl6ZWQpLAogICAgICAgIGludmFsaWQgPSBoaWdoZXJPcmRlckludmFsaWQgfHwgaGFzSW52YWxpZFRpbWVEYXRhKG5vcm1hbGl6ZWQpOwoKICAgICAgaWYgKGludmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChpbnZhbGlkKTsKICAgICAgfQoKICAgICAgLy8gY29tcHV0ZSB0aGUgYWN0dWFsIHRpbWUKICAgICAgY29uc3QgZ3JlZ29yaWFuID0gdXNlV2Vla0RhdGEKICAgICAgICAgID8gd2Vla1RvR3JlZ29yaWFuKG5vcm1hbGl6ZWQpCiAgICAgICAgICA6IGNvbnRhaW5zT3JkaW5hbAogICAgICAgICAgPyBvcmRpbmFsVG9HcmVnb3JpYW4obm9ybWFsaXplZCkKICAgICAgICAgIDogbm9ybWFsaXplZCwKICAgICAgICBbdHNGaW5hbCwgb2Zmc2V0RmluYWxdID0gb2JqVG9UUyhncmVnb3JpYW4sIG9mZnNldFByb3Zpcywgem9uZVRvVXNlKSwKICAgICAgICBpbnN0ID0gbmV3IERhdGVUaW1lKHsKICAgICAgICAgIHRzOiB0c0ZpbmFsLAogICAgICAgICAgem9uZTogem9uZVRvVXNlLAogICAgICAgICAgbzogb2Zmc2V0RmluYWwsCiAgICAgICAgICBsb2MsCiAgICAgICAgfSk7CgogICAgICAvLyBncmVnb3JpYW4gZGF0YSArIHdlZWtkYXkgc2VydmVzIG9ubHkgdG8gdmFsaWRhdGUKICAgICAgaWYgKG5vcm1hbGl6ZWQud2Vla2RheSAmJiBjb250YWluc0dyZWdvciAmJiBvYmoud2Vla2RheSAhPT0gaW5zdC53ZWVrZGF5KSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoCiAgICAgICAgICAibWlzbWF0Y2hlZCB3ZWVrZGF5IiwKICAgICAgICAgIGB5b3UgY2FuJ3Qgc3BlY2lmeSBib3RoIGEgd2Vla2RheSBvZiAke25vcm1hbGl6ZWQud2Vla2RheX0gYW5kIGEgZGF0ZSBvZiAke2luc3QudG9JU08oKX1gCiAgICAgICAgKTsKICAgICAgfQoKICAgICAgcmV0dXJuIGluc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIElTTyA4NjAxIHN0cmluZwogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoaXMgem9uZQogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5vdXRwdXRDYWxlbmRhcl0gLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMycpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcsIHtzZXRab25lOiB0cnVlfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtMDUtMjVUMDk6MDg6MzQuMTIzJywge3pvbmU6ICd1dGMnfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtVzA1LTQnKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tSVNPKHRleHQsIG9wdHMgPSB7fSkgewogICAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZUlTT0RhdGUodGV4dCk7CiAgICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsICJJU08gODYwMSIsIHRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhbiBSRkMgMjgyMiBzdHJpbmcKICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIFJGQyAyODIyIHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoaXMgem9uZS4gU2luY2UgdGhlIG9mZnNldCBpcyBhbHdheXMgc3BlY2lmaWVkIGluIHRoZSBzdHJpbmcgaXRzZWxmLCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGludGVycHJldGF0aW9uIG9mIHN0cmluZywgbWVyZWx5IHRoZSB6b25lIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaXMgZXhwcmVzc2VkIGluLgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21SRkMyODIyKCcyNSBOb3YgMjAxNiAxMzoyMzoxMiBHTVQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJ0ZyaSwgMjUgTm92IDIwMTYgMTM6MjM6MTIgKzA2MDAnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJzI1IE5vdiAyMDE2IDEzOjIzIFonKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tUkZDMjgyMih0ZXh0LCBvcHRzID0ge30pIHsKICAgICAgY29uc3QgW3ZhbHMsIHBhcnNlZFpvbmVdID0gcGFyc2VSRkMyODIyRGF0ZSh0ZXh0KTsKICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgIlJGQyAyODIyIiwgdGV4dCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIEhUVFAgaGVhZGVyIGRhdGUKICAgICAqIEBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMy5odG1sI3NlYzMuMy4xCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBIVFRQIGhlYWRlciBkYXRlCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIGNvbnZlcnQgdGhlIHRpbWUgdG8gdGhpcyB6b25lLiBTaW5jZSBIVFRQIGRhdGVzIGFyZSBhbHdheXMgaW4gVVRDLCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGludGVycHJldGF0aW9uIG9mIHN0cmluZywgbWVyZWx5IHRoZSB6b25lIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaXMgZXhwcmVzc2VkIGluLgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggdGhlIGZpeGVkLW9mZnNldCB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nLiBGb3IgSFRUUCBkYXRlcywgdGhpcyBpcyBhbHdheXMgVVRDLCBzbyB0aGlzIG9wdGlvbiBpcyBlcXVpdmFsZW50IHRvIHNldHRpbmcgdGhlIGB6b25lYCBvcHRpb24gdG8gJ3V0YycsIGJ1dCB0aGlzIG9wdGlvbiBpcyBpbmNsdWRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCBzaW1pbGFyIG1ldGhvZHMuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdzeXN0ZW0ncyBsb2NhbGUnXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSFRUUCgnU3VuLCAwNiBOb3YgMTk5NCAwODo0OTozNyBHTVQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUhUVFAoJ1N1bmRheSwgMDYtTm92LTk0IDA4OjQ5OjM3IEdNVCcpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSFRUUCgnU3VuIE5vdiAgNiAwODo0OTozNyAxOTk0JykKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbUhUVFAodGV4dCwgb3B0cyA9IHt9KSB7CiAgICAgIGNvbnN0IFt2YWxzLCBwYXJzZWRab25lXSA9IHBhcnNlSFRUUERhdGUodGV4dCk7CiAgICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsICJIVFRQIiwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIGlucHV0IHN0cmluZyBhbmQgZm9ybWF0IHN0cmluZy4KICAgICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZS4gRm9yIGEgdGFibGUgb2YgdG9rZW5zIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMsIHNlZSBbaGVyZV0oaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uLyMvcGFyc2luZz9pZD10YWJsZS1vZi10b2tlbnMpLgogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZm10IC0gdGhlIGZvcm1hdCB0aGUgc3RyaW5nIGlzIGV4cGVjdGVkIHRvIGJlIGluIChzZWUgdGhlIGxpbmsgYmVsb3cgZm9yIHRoZSBmb3JtYXRzKQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSBEYXRlVGltZSB0byB0aGlzIHpvbmUKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc2V0Wm9uZT1mYWxzZV0gLSBvdmVycmlkZSB0aGUgem9uZSB3aXRoIGEgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSBhIGxvY2FsZSBzdHJpbmcgdG8gdXNlIHdoZW4gcGFyc2luZy4gV2lsbCBhbHNvIHNldCB0aGUgRGF0ZVRpbWUgdG8gdGhpcyBsb2NhbGUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZSB3aGVuIHBhcnNpbmcuIFdpbGwgYWxzbyBzZXQgdGhlIHJlc3VsdGluZyBEYXRlVGltZSB0byB0aGlzIG51bWJlcmluZyBzeXN0ZW0KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tRm9ybWF0KHRleHQsIGZtdCwgb3B0cyA9IHt9KSB7CiAgICAgIGlmIChpc1VuZGVmaW5lZCh0ZXh0KSB8fCBpc1VuZGVmaW5lZChmbXQpKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJmcm9tRm9ybWF0IHJlcXVpcmVzIGFuIGlucHV0IHN0cmluZyBhbmQgYSBmb3JtYXQiKTsKICAgICAgfQoKICAgICAgY29uc3QgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsIH0gPSBvcHRzLAogICAgICAgIGxvY2FsZVRvVXNlID0gTG9jYWxlLmZyb21PcHRzKHsKICAgICAgICAgIGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgIGRlZmF1bHRUb0VOOiB0cnVlLAogICAgICAgIH0pLAogICAgICAgIFt2YWxzLCBwYXJzZWRab25lLCBzcGVjaWZpY09mZnNldCwgaW52YWxpZF0gPSBwYXJzZUZyb21Ub2tlbnMobG9jYWxlVG9Vc2UsIHRleHQsIGZtdCk7CiAgICAgIGlmIChpbnZhbGlkKSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoaW52YWxpZCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgYGZvcm1hdCAke2ZtdH1gLCB0ZXh0LCBzcGVjaWZpY09mZnNldCk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBkZXByZWNhdGVkIHVzZSBmcm9tRm9ybWF0IGluc3RlYWQKICAgICAqLwogICAgc3RhdGljIGZyb21TdHJpbmcodGV4dCwgZm10LCBvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21Gb3JtYXQodGV4dCwgZm10LCBvcHRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBTUUwgZGF0ZSwgdGltZSwgb3IgZGF0ZXRpbWUKICAgICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZQogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIHVzZSB0aGlzIHpvbmUgaWYgbm8gb2Zmc2V0IGlzIHNwZWNpZmllZCBpbiB0aGUgaW5wdXQgc3RyaW5nIGl0c2VsZi4gV2lsbCBhbHNvIGNvbnZlcnQgdGhlIERhdGVUaW1lIHRvIHRoaXMgem9uZQogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nIGl0c2VsZiwgaWYgaXQgc3BlY2lmaWVzIG9uZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIGEgbG9jYWxlIHN0cmluZyB0byB1c2Ugd2hlbiBwYXJzaW5nLiBXaWxsIGFsc28gc2V0IHRoZSBEYXRlVGltZSB0byB0aGlzIGxvY2FsZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlIHdoZW4gcGFyc2luZy4gV2lsbCBhbHNvIHNldCB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIHRvIHRoaXMgbnVtYmVyaW5nIHN5c3RlbQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1JykKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUgMDk6MTI6MzQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDInKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDIrMDY6MDAnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDIgQW1lcmljYS9Mb3NfQW5nZWxlcycpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MiBBbWVyaWNhL0xvc19BbmdlbGVzJywgeyBzZXRab25lOiB0cnVlIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MicsIHsgem9uZTogJ0FtZXJpY2EvTG9zX0FuZ2VsZXMnIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcwOToxMjozNC4zNDInKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tU1FMKHRleHQsIG9wdHMgPSB7fSkgewogICAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZVNRTCh0ZXh0KTsKICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgIlNRTCIsIHRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIGludmFsaWQgRGF0ZVRpbWUuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBEYXRlVGltZSBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50LgogICAgICogQHBhcmFtIHtzdHJpbmd9IFtleHBsYW5hdGlvbj1udWxsXSAtIGxvbmdlciBleHBsYW5hdGlvbiwgbWF5IGluY2x1ZGUgcGFyYW1ldGVycyBhbmQgb3RoZXIgdXNlZnVsIGRlYnVnZ2luZyBpbmZvcm1hdGlvbgogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBpbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24gPSBudWxsKSB7CiAgICAgIGlmICghcmVhc29uKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJuZWVkIHRvIHNwZWNpZnkgYSByZWFzb24gdGhlIERhdGVUaW1lIGlzIGludmFsaWQiKTsKICAgICAgfQoKICAgICAgY29uc3QgaW52YWxpZCA9IHJlYXNvbiBpbnN0YW5jZW9mIEludmFsaWQgPyByZWFzb24gOiBuZXcgSW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uKTsKCiAgICAgIGlmIChTZXR0aW5ncy50aHJvd09uSW52YWxpZCkgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkRGF0ZVRpbWVFcnJvcihpbnZhbGlkKTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbmV3IERhdGVUaW1lKHsgaW52YWxpZCB9KTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgaWYgYW4gb2JqZWN0IGlzIGFuIGluc3RhbmNlIG9mIERhdGVUaW1lLiBXb3JrcyBhY3Jvc3MgY29udGV4dCBib3VuZGFyaWVzCiAgICAgKiBAcGFyYW0ge29iamVjdH0gbwogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgc3RhdGljIGlzRGF0ZVRpbWUobykgewogICAgICByZXR1cm4gKG8gJiYgby5pc0x1eG9uRGF0ZVRpbWUpIHx8IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUHJvZHVjZSB0aGUgZm9ybWF0IHN0cmluZyBmb3IgYSBzZXQgb2Ygb3B0aW9ucwogICAgICogQHBhcmFtIGZvcm1hdE9wdHMKICAgICAqIEBwYXJhbSBsb2NhbGVPcHRzCiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfQogICAgICovCiAgICBzdGF0aWMgcGFyc2VGb3JtYXRGb3JPcHRzKGZvcm1hdE9wdHMsIGxvY2FsZU9wdHMgPSB7fSkgewogICAgICBjb25zdCB0b2tlbkxpc3QgPSBmb3JtYXRPcHRzVG9Ub2tlbnMoZm9ybWF0T3B0cywgTG9jYWxlLmZyb21PYmplY3QobG9jYWxlT3B0cykpOwogICAgICByZXR1cm4gIXRva2VuTGlzdCA/IG51bGwgOiB0b2tlbkxpc3QubWFwKCh0KSA9PiAodCA/IHQudmFsIDogbnVsbCkpLmpvaW4oIiIpOwogICAgfQoKICAgIC8qKgogICAgICogUHJvZHVjZSB0aGUgdGhlIGZ1bGx5IGV4cGFuZGVkIGZvcm1hdCB0b2tlbiBmb3IgdGhlIGxvY2FsZQogICAgICogRG9lcyBOT1QgcXVvdGUgY2hhcmFjdGVycywgc28gcXVvdGVkIHRva2VucyB3aWxsIG5vdCByb3VuZCB0cmlwIGNvcnJlY3RseQogICAgICogQHBhcmFtIGZtdAogICAgICogQHBhcmFtIGxvY2FsZU9wdHMKICAgICAqIEByZXR1cm5zIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBleHBhbmRGb3JtYXQoZm10LCBsb2NhbGVPcHRzID0ge30pIHsKICAgICAgY29uc3QgZXhwYW5kZWQgPSBleHBhbmRNYWNyb1Rva2VucyhGb3JtYXR0ZXIucGFyc2VGb3JtYXQoZm10KSwgTG9jYWxlLmZyb21PYmplY3QobG9jYWxlT3B0cykpOwogICAgICByZXR1cm4gZXhwYW5kZWQubWFwKCh0KSA9PiB0LnZhbCkuam9pbigiIik7CiAgICB9CgogICAgLy8gSU5GTwoKICAgIC8qKgogICAgICogR2V0IHRoZSB2YWx1ZSBvZiB1bml0LgogICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBhIHVuaXQgc3VjaCBhcyAnbWludXRlJyBvciAnZGF5JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNywgNCkuZ2V0KCdtb250aCcpOyAvLz0+IDcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDcsIDQpLmdldCgnZGF5Jyk7IC8vPT4gNAogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQodW5pdCkgewogICAgICByZXR1cm4gdGhpc1t1bml0XTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgRGF0ZVRpbWUgaXMgdmFsaWQuIEludmFsaWQgRGF0ZVRpbWVzIG9jY3VyIHdoZW46CiAgICAgKiAqIFRoZSBEYXRlVGltZSB3YXMgY3JlYXRlZCBmcm9tIGludmFsaWQgY2FsZW5kYXIgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIDEzdGggbW9udGggb3IgRmVicnVhcnkgMzAKICAgICAqICogVGhlIERhdGVUaW1lIHdhcyBjcmVhdGVkIGJ5IGFuIG9wZXJhdGlvbiBvbiBhbm90aGVyIGludmFsaWQgZGF0ZQogICAgICogQHR5cGUge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID09PSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBlcnJvciBjb2RlIGlmIHRoaXMgRGF0ZVRpbWUgaXMgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgRGF0ZVRpbWUgaXMgdmFsaWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkUmVhc29uKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIERhdGVUaW1lIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEYXRlVGltZSBpcyB2YWxpZAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGludmFsaWRFeHBsYW5hdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGxvY2FsZSBvZiBhIERhdGVUaW1lLCBzdWNoICdlbi1HQicuIFRoZSBsb2NhbGUgaXMgdXNlZCB3aGVuIGZvcm1hdHRpbmcgdGhlIERhdGVUaW1lCiAgICAgKgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGxvY2FsZSgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMubG9jLmxvY2FsZSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG51bWJlcmluZyBzeXN0ZW0gb2YgYSBEYXRlVGltZSwgc3VjaCAnYmVuZycuIFRoZSBudW1iZXJpbmcgc3lzdGVtIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEYXRlVGltZQogICAgICoKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBudW1iZXJpbmdTeXN0ZW0oKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5udW1iZXJpbmdTeXN0ZW0gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBvdXRwdXQgY2FsZW5kYXIgb2YgYSBEYXRlVGltZSwgc3VjaCAnaXNsYW1pYycuIFRoZSBvdXRwdXQgY2FsZW5kYXIgaXMgdXNlZCB3aGVuIGZvcm1hdHRpbmcgdGhlIERhdGVUaW1lCiAgICAgKgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IG91dHB1dENhbGVuZGFyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2Mub3V0cHV0Q2FsZW5kYXIgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB0aW1lIHpvbmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAdHlwZSB7Wm9uZX0KICAgICAqLwogICAgZ2V0IHpvbmUoKSB7CiAgICAgIHJldHVybiB0aGlzLl96b25lOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBuYW1lIG9mIHRoZSB0aW1lIHpvbmUuCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgem9uZU5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnpvbmUubmFtZSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHllYXIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS55ZWFyIC8vPT4gMjAxNwogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHllYXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMueWVhciA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgcXVhcnRlcgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLnF1YXJ0ZXIgLy89PiAyCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgcXVhcnRlcigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IE1hdGguY2VpbCh0aGlzLmMubW9udGggLyAzKSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbW9udGggKDEtMTIpLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLm1vbnRoIC8vPT4gNQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IG1vbnRoKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1vbnRoIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkYXkgb2YgdGhlIG1vbnRoICgxLTMwaXNoKS4KICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5kYXkgLy89PiAyNQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGRheSgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5kYXkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGhvdXIgb2YgdGhlIGRheSAoMC0yMykuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSkuaG91ciAvLz0+IDkKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBob3VyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLmhvdXIgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG1pbnV0ZSBvZiB0aGUgaG91ciAoMC01OSkuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSwgMzApLm1pbnV0ZSAvLz0+IDMwCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbWludXRlKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1pbnV0ZSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgc2Vjb25kIG9mIHRoZSBtaW51dGUgKDAtNTkpLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDksIDMwLCA1Mikuc2Vjb25kIC8vPT4gNTIKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBzZWNvbmQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMuc2Vjb25kIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBtaWxsaXNlY29uZCBvZiB0aGUgc2Vjb25kICgwLTk5OSkuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSwgMzAsIDUyLCA2NTQpLm1pbGxpc2Vjb25kIC8vPT4gNjU0CiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbWlsbGlzZWNvbmQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMubWlsbGlzZWNvbmQgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHdlZWsgeWVhcgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAxMiwgMzEpLndlZWtZZWFyIC8vPT4gMjAxNQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHdlZWtZZWFyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gcG9zc2libHlDYWNoZWRXZWVrRGF0YSh0aGlzKS53ZWVrWWVhciA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgd2VlayBudW1iZXIgb2YgdGhlIHdlZWsgeWVhciAoMS01MmlzaCkuCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS53ZWVrTnVtYmVyIC8vPT4gMjEKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCB3ZWVrTnVtYmVyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gcG9zc2libHlDYWNoZWRXZWVrRGF0YSh0aGlzKS53ZWVrTnVtYmVyIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkYXkgb2YgdGhlIHdlZWsuCiAgICAgKiAxIGlzIE1vbmRheSBhbmQgNyBpcyBTdW5kYXkKICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMTEsIDMxKS53ZWVrZGF5IC8vPT4gNAogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHdlZWtkYXkoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBwb3NzaWJseUNhY2hlZFdlZWtEYXRhKHRoaXMpLndlZWtkYXkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG9yZGluYWwgKG1lYW5pbmcgdGhlIGRheSBvZiB0aGUgeWVhcikKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5vcmRpbmFsIC8vPT4gMTQ1CiAgICAgKiBAdHlwZSB7bnVtYmVyfERhdGVUaW1lfQogICAgICovCiAgICBnZXQgb3JkaW5hbCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IGdyZWdvcmlhblRvT3JkaW5hbCh0aGlzLmMpLm9yZGluYWwgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIHNob3J0IG1vbnRoIG5hbWUsIHN1Y2ggYXMgJ09jdCcuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkubW9udGhTaG9ydCAvLz0+IE9jdAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IG1vbnRoU2hvcnQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLm1vbnRocygic2hvcnQiLCB7IGxvY09iajogdGhpcy5sb2MgfSlbdGhpcy5tb250aCAtIDFdIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgbG9uZyBtb250aCBuYW1lLCBzdWNoIGFzICdPY3RvYmVyJy4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS5tb250aExvbmcgLy89PiBPY3RvYmVyCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbW9udGhMb25nKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby5tb250aHMoImxvbmciLCB7IGxvY09iajogdGhpcy5sb2MgfSlbdGhpcy5tb250aCAtIDFdIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgc2hvcnQgd2Vla2RheSwgc3VjaCBhcyAnTW9uJy4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS53ZWVrZGF5U2hvcnQgLy89PiBNb24KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCB3ZWVrZGF5U2hvcnQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLndlZWtkYXlzKCJzaG9ydCIsIHsgbG9jT2JqOiB0aGlzLmxvYyB9KVt0aGlzLndlZWtkYXkgLSAxXSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIGxvbmcgd2Vla2RheSwgc3VjaCBhcyAnTW9uZGF5Jy4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS53ZWVrZGF5TG9uZyAvLz0+IE1vbmRheQogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IHdlZWtkYXlMb25nKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby53ZWVrZGF5cygibG9uZyIsIHsgbG9jT2JqOiB0aGlzLmxvYyB9KVt0aGlzLndlZWtkYXkgLSAxXSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIFVUQyBvZmZzZXQgb2YgdGhpcyBEYXRlVGltZSBpbiBtaW51dGVzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5vZmZzZXQgLy89PiAtMjQwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5vZmZzZXQgLy89PiAwCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgb2Zmc2V0KCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gK3RoaXMubyA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgc2hvcnQgaHVtYW4gbmFtZSBmb3IgdGhlIHpvbmUncyBjdXJyZW50IG9mZnNldCwgZm9yIGV4YW1wbGUgIkVTVCIgb3IgIkVEVCIuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBvZmZzZXROYW1lU2hvcnQoKSB7CiAgICAgIGlmICh0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gdGhpcy56b25lLm9mZnNldE5hbWUodGhpcy50cywgewogICAgICAgICAgZm9ybWF0OiAic2hvcnQiLAogICAgICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZSwKICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBsb25nIGh1bWFuIG5hbWUgZm9yIHRoZSB6b25lJ3MgY3VycmVudCBvZmZzZXQsIGZvciBleGFtcGxlICJFYXN0ZXJuIFN0YW5kYXJkIFRpbWUiIG9yICJFYXN0ZXJuIERheWxpZ2h0IFRpbWUiLgogICAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgb2Zmc2V0TmFtZUxvbmcoKSB7CiAgICAgIGlmICh0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gdGhpcy56b25lLm9mZnNldE5hbWUodGhpcy50cywgewogICAgICAgICAgZm9ybWF0OiAibG9uZyIsCiAgICAgICAgICBsb2NhbGU6IHRoaXMubG9jYWxlLAogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciB0aGlzIHpvbmUncyBvZmZzZXQgZXZlciBjaGFuZ2VzLCBhcyBpbiBhIERTVC4KICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBnZXQgaXNPZmZzZXRGaXhlZCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuem9uZS5pc1VuaXZlcnNhbCA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciB0aGUgRGF0ZVRpbWUgaXMgaW4gYSBEU1QuCiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzSW5EU1QoKSB7CiAgICAgIGlmICh0aGlzLmlzT2Zmc2V0Rml4ZWQpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuICgKICAgICAgICAgIHRoaXMub2Zmc2V0ID4gdGhpcy5zZXQoeyBtb250aDogMSwgZGF5OiAxIH0pLm9mZnNldCB8fAogICAgICAgICAgdGhpcy5vZmZzZXQgPiB0aGlzLnNldCh7IG1vbnRoOiA1IH0pLm9mZnNldAogICAgICAgICk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aG9zZSBEYXRlVGltZXMgd2hpY2ggaGF2ZSB0aGUgc2FtZSBsb2NhbCB0aW1lIGFzIHRoaXMgRGF0ZVRpbWUsIGJ1dCBhIGRpZmZlcmVudCBvZmZzZXQgZnJvbSBVVEMKICAgICAqIGluIHRoaXMgRGF0ZVRpbWUncyB6b25lLiBEdXJpbmcgRFNUIGNoYW5nZXMgbG9jYWwgdGltZSBjYW4gYmUgYW1iaWd1b3VzLCBmb3IgZXhhbXBsZQogICAgICogYDIwMjMtMTAtMjlUMDI6MzA6MDBgIGluIGBFdXJvcGUvQmVybGluYCBjYW4gaGF2ZSBvZmZzZXQgYCswMTowMGAgb3IgYCswMjowMGAuCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBib3RoIHBvc3NpYmxlIERhdGVUaW1lcyBpZiB0aGlzIERhdGVUaW1lJ3MgbG9jYWwgdGltZSBpcyBhbWJpZ3VvdXMuCiAgICAgKiBAcmV0dXJucyB7RGF0ZVRpbWVbXX0KICAgICAqLwogICAgZ2V0UG9zc2libGVPZmZzZXRzKCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCB0aGlzLmlzT2Zmc2V0Rml4ZWQpIHsKICAgICAgICByZXR1cm4gW3RoaXNdOwogICAgICB9CiAgICAgIGNvbnN0IGRheU1zID0gODY0MDAwMDA7CiAgICAgIGNvbnN0IG1pbnV0ZU1zID0gNjAwMDA7CiAgICAgIGNvbnN0IGxvY2FsVFMgPSBvYmpUb0xvY2FsVFModGhpcy5jKTsKICAgICAgY29uc3Qgb0VhcmxpZXIgPSB0aGlzLnpvbmUub2Zmc2V0KGxvY2FsVFMgLSBkYXlNcyk7CiAgICAgIGNvbnN0IG9MYXRlciA9IHRoaXMuem9uZS5vZmZzZXQobG9jYWxUUyArIGRheU1zKTsKCiAgICAgIGNvbnN0IG8xID0gdGhpcy56b25lLm9mZnNldChsb2NhbFRTIC0gb0VhcmxpZXIgKiBtaW51dGVNcyk7CiAgICAgIGNvbnN0IG8yID0gdGhpcy56b25lLm9mZnNldChsb2NhbFRTIC0gb0xhdGVyICogbWludXRlTXMpOwogICAgICBpZiAobzEgPT09IG8yKSB7CiAgICAgICAgcmV0dXJuIFt0aGlzXTsKICAgICAgfQogICAgICBjb25zdCB0czEgPSBsb2NhbFRTIC0gbzEgKiBtaW51dGVNczsKICAgICAgY29uc3QgdHMyID0gbG9jYWxUUyAtIG8yICogbWludXRlTXM7CiAgICAgIGNvbnN0IGMxID0gdHNUb09iaih0czEsIG8xKTsKICAgICAgY29uc3QgYzIgPSB0c1RvT2JqKHRzMiwgbzIpOwogICAgICBpZiAoCiAgICAgICAgYzEuaG91ciA9PT0gYzIuaG91ciAmJgogICAgICAgIGMxLm1pbnV0ZSA9PT0gYzIubWludXRlICYmCiAgICAgICAgYzEuc2Vjb25kID09PSBjMi5zZWNvbmQgJiYKICAgICAgICBjMS5taWxsaXNlY29uZCA9PT0gYzIubWlsbGlzZWNvbmQKICAgICAgKSB7CiAgICAgICAgcmV0dXJuIFtjbG9uZSh0aGlzLCB7IHRzOiB0czEgfSksIGNsb25lKHRoaXMsIHsgdHM6IHRzMiB9KV07CiAgICAgIH0KICAgICAgcmV0dXJuIFt0aGlzXTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIERhdGVUaW1lIGlzIGluIGEgbGVhcCB5ZWFyLCBmYWxzZSBvdGhlcndpc2UKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTYpLmlzSW5MZWFwWWVhciAvLz0+IHRydWUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTMpLmlzSW5MZWFwWWVhciAvLz0+IGZhbHNlCiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzSW5MZWFwWWVhcigpIHsKICAgICAgcmV0dXJuIGlzTGVhcFllYXIodGhpcy55ZWFyKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIHRoaXMgRGF0ZVRpbWUncyBtb250aAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNiwgMikuZGF5c0luTW9udGggLy89PiAyOQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNiwgMykuZGF5c0luTW9udGggLy89PiAzMQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGRheXNJbk1vbnRoKCkgewogICAgICByZXR1cm4gZGF5c0luTW9udGgodGhpcy55ZWFyLCB0aGlzLm1vbnRoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIHRoaXMgRGF0ZVRpbWUncyB5ZWFyCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE2KS5kYXlzSW5ZZWFyIC8vPT4gMzY2CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDEzKS5kYXlzSW5ZZWFyIC8vPT4gMzY1CiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgZGF5c0luWWVhcigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IGRheXNJblllYXIodGhpcy55ZWFyKSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiB3ZWVrcyBpbiB0aGlzIERhdGVUaW1lJ3MgeWVhcgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDA0KS53ZWVrc0luV2Vla1llYXIgLy89PiA1MwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxMykud2Vla3NJbldlZWtZZWFyIC8vPT4gNTIKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCB3ZWVrc0luV2Vla1llYXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB3ZWVrc0luV2Vla1llYXIodGhpcy53ZWVrWWVhcikgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSByZXNvbHZlZCBJbnRsIG9wdGlvbnMgZm9yIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBUaGlzIGlzIHVzZWZ1bCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBiZWhhdmlvciBvZiBmb3JtYXR0aW5nIG1ldGhvZHMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gdGhlIHNhbWUgb3B0aW9ucyBhcyB0b0xvY2FsZVN0cmluZwogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICByZXNvbHZlZExvY2FsZU9wdGlvbnMob3B0cyA9IHt9KSB7CiAgICAgIGNvbnN0IHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyIH0gPSBGb3JtYXR0ZXIuY3JlYXRlKAogICAgICAgIHRoaXMubG9jLmNsb25lKG9wdHMpLAogICAgICAgIG9wdHMKICAgICAgKS5yZXNvbHZlZE9wdGlvbnModGhpcyk7CiAgICAgIHJldHVybiB7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhcjogY2FsZW5kYXIgfTsKICAgIH0KCiAgICAvLyBUUkFOU0ZPUk0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSBEYXRlVGltZSdzIHpvbmUgdG8gVVRDLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKgogICAgICogRXF1aXZhbGVudCB0byB7QGxpbmsgRGF0ZVRpbWUjc2V0Wm9uZX0oJ3V0YycpCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29mZnNldD0wXSAtIG9wdGlvbmFsbHksIGFuIG9mZnNldCBmcm9tIFVUQyBpbiBtaW51dGVzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHM9e31dIC0gb3B0aW9ucyB0byBwYXNzIHRvIGBzZXRab25lKClgCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgdG9VVEMob2Zmc2V0ID0gMCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLnNldFpvbmUoRml4ZWRPZmZzZXRab25lLmluc3RhbmNlKG9mZnNldCksIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIERhdGVUaW1lJ3Mgem9uZSB0byB0aGUgaG9zdCdzIGxvY2FsIHpvbmUuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS4KICAgICAqCiAgICAgKiBFcXVpdmFsZW50IHRvIGBzZXRab25lKCdsb2NhbCcpYAogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHRvTG9jYWwoKSB7CiAgICAgIHJldHVybiB0aGlzLnNldFpvbmUoU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIERhdGVUaW1lJ3Mgem9uZSB0byBzcGVjaWZpZWQgem9uZS4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLgogICAgICoKICAgICAqIEJ5IGRlZmF1bHQsIHRoZSBzZXR0ZXIga2VlcHMgdGhlIHVuZGVybHlpbmcgdGltZSB0aGUgc2FtZSAoYXMgaW4sIHRoZSBzYW1lIHRpbWVzdGFtcCksIGJ1dCB0aGUgbmV3IGluc3RhbmNlIHdpbGwgcmVwb3J0IGRpZmZlcmVudCBsb2NhbCB0aW1lcyBhbmQgY29uc2lkZXIgRFNUcyB3aGVuIG1ha2luZyBjb21wdXRhdGlvbnMsIGFzIHdpdGgge0BsaW5rIERhdGVUaW1lI3BsdXN9LiBZb3UgbWF5IHdpc2ggdG8gdXNlIHtAbGluayBEYXRlVGltZSN0b0xvY2FsfSBhbmQge0BsaW5rIERhdGVUaW1lI3RvVVRDfSB3aGljaCBwcm92aWRlIHNpbXBsZSBjb252ZW5pZW5jZSB3cmFwcGVycyBmb3IgY29tbW9ubHkgdXNlZCB6b25lcy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFt6b25lPSdsb2NhbCddIC0gYSB6b25lIGlkZW50aWZpZXIuIEFzIGEgc3RyaW5nLCB0aGF0IGNhbiBiZSBhbnkgSUFOQSB6b25lIHN1cHBvcnRlZCBieSB0aGUgaG9zdCBlbnZpcm9ubWVudCwgb3IgYSBmaXhlZC1vZmZzZXQgbmFtZSBvZiB0aGUgZm9ybSAnVVRDKzMnLCBvciB0aGUgc3RyaW5ncyAnbG9jYWwnIG9yICd1dGMnLiBZb3UgbWF5IGFsc28gc3VwcGx5IGFuIGluc3RhbmNlIG9mIGEge0BsaW5rIERhdGVUaW1lI1pvbmV9IGNsYXNzLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmtlZXBMb2NhbFRpbWU9ZmFsc2VdIC0gSWYgdHJ1ZSwgYWRqdXN0IHRoZSB1bmRlcmx5aW5nIHRpbWUgc28gdGhhdCB0aGUgbG9jYWwgdGltZSBzdGF5cyB0aGUgc2FtZSwgYnV0IGluIHRoZSB0YXJnZXQgem9uZS4gWW91IHNob3VsZCByYXJlbHkgbmVlZCB0aGlzLgogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHNldFpvbmUoem9uZSwgeyBrZWVwTG9jYWxUaW1lID0gZmFsc2UsIGtlZXBDYWxlbmRhclRpbWUgPSBmYWxzZSB9ID0ge30pIHsKICAgICAgem9uZSA9IG5vcm1hbGl6ZVpvbmUoem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwogICAgICBpZiAoem9uZS5lcXVhbHModGhpcy56b25lKSkgewogICAgICAgIHJldHVybiB0aGlzOwogICAgICB9IGVsc2UgaWYgKCF6b25lLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZSkpOwogICAgICB9IGVsc2UgewogICAgICAgIGxldCBuZXdUUyA9IHRoaXMudHM7CiAgICAgICAgaWYgKGtlZXBMb2NhbFRpbWUgfHwga2VlcENhbGVuZGFyVGltZSkgewogICAgICAgICAgY29uc3Qgb2Zmc2V0R3Vlc3MgPSB6b25lLm9mZnNldCh0aGlzLnRzKTsKICAgICAgICAgIGNvbnN0IGFzT2JqID0gdGhpcy50b09iamVjdCgpOwogICAgICAgICAgW25ld1RTXSA9IG9ialRvVFMoYXNPYmosIG9mZnNldEd1ZXNzLCB6b25lKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdHM6IG5ld1RTLCB6b25lIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGUgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG9yIG91dHB1dENhbGVuZGFyLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcGVydGllcyAtIHRoZSBwcm9wZXJ0aWVzIHRvIHNldAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLnJlY29uZmlndXJlKHsgbG9jYWxlOiAnZW4tR0InIH0pCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgcmVjb25maWd1cmUoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIgfSA9IHt9KSB7CiAgICAgIGNvbnN0IGxvYyA9IHRoaXMubG9jLmNsb25lKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyIH0pOwogICAgICByZXR1cm4gY2xvbmUodGhpcywgeyBsb2MgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGUgbG9jYWxlLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKiBKdXN0IGEgY29udmVuaWVudCBhbGlhcyBmb3IgcmVjb25maWd1cmUoeyBsb2NhbGUgfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5zZXRMb2NhbGUoJ2VuLUdCJykKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzZXRMb2NhbGUobG9jYWxlKSB7CiAgICAgIHJldHVybiB0aGlzLnJlY29uZmlndXJlKHsgbG9jYWxlIH0pOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIHZhbHVlcyBvZiBzcGVjaWZpZWQgdW5pdHMuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS4KICAgICAqIFlvdSBjYW4gb25seSBzZXQgdW5pdHMgd2l0aCB0aGlzIG1ldGhvZDsgZm9yICJzZXR0aW5nIiBtZXRhZGF0YSwgc2VlIHtAbGluayBEYXRlVGltZSNyZWNvbmZpZ3VyZX0gYW5kIHtAbGluayBEYXRlVGltZSNzZXRab25lfS4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSBhIG1hcHBpbmcgb2YgdW5pdHMgdG8gbnVtYmVycwogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgeWVhcjogMjAxNyB9KQogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgaG91cjogOCwgbWludXRlOiAzMCB9KQogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgd2Vla2RheTogNSB9KQogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgeWVhcjogMjAwNSwgb3JkaW5hbDogMjM0IH0pCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgc2V0KHZhbHVlcykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CgogICAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplT2JqZWN0KHZhbHVlcywgbm9ybWFsaXplVW5pdCksCiAgICAgICAgc2V0dGluZ1dlZWtTdHVmZiA9CiAgICAgICAgICAhaXNVbmRlZmluZWQobm9ybWFsaXplZC53ZWVrWWVhcikgfHwKICAgICAgICAgICFpc1VuZGVmaW5lZChub3JtYWxpemVkLndlZWtOdW1iZXIpIHx8CiAgICAgICAgICAhaXNVbmRlZmluZWQobm9ybWFsaXplZC53ZWVrZGF5KSwKICAgICAgICBjb250YWluc09yZGluYWwgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5vcmRpbmFsKSwKICAgICAgICBjb250YWluc0dyZWdvclllYXIgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC55ZWFyKSwKICAgICAgICBjb250YWluc0dyZWdvck1EID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQubW9udGgpIHx8ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLmRheSksCiAgICAgICAgY29udGFpbnNHcmVnb3IgPSBjb250YWluc0dyZWdvclllYXIgfHwgY29udGFpbnNHcmVnb3JNRCwKICAgICAgICBkZWZpbml0ZVdlZWtEZWYgPSBub3JtYWxpemVkLndlZWtZZWFyIHx8IG5vcm1hbGl6ZWQud2Vla051bWJlcjsKCiAgICAgIGlmICgoY29udGFpbnNHcmVnb3IgfHwgY29udGFpbnNPcmRpbmFsKSAmJiBkZWZpbml0ZVdlZWtEZWYpIHsKICAgICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoCiAgICAgICAgICAiQ2FuJ3QgbWl4IHdlZWtZZWFyL3dlZWtOdW1iZXIgdW5pdHMgd2l0aCB5ZWFyL21vbnRoL2RheSBvciBvcmRpbmFscyIKICAgICAgICApOwogICAgICB9CgogICAgICBpZiAoY29udGFpbnNHcmVnb3JNRCAmJiBjb250YWluc09yZGluYWwpIHsKICAgICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoIkNhbid0IG1peCBvcmRpbmFsIGRhdGVzIHdpdGggbW9udGgvZGF5Iik7CiAgICAgIH0KCiAgICAgIGxldCBtaXhlZDsKICAgICAgaWYgKHNldHRpbmdXZWVrU3R1ZmYpIHsKICAgICAgICBtaXhlZCA9IHdlZWtUb0dyZWdvcmlhbih7IC4uLmdyZWdvcmlhblRvV2Vlayh0aGlzLmMpLCAuLi5ub3JtYWxpemVkIH0pOwogICAgICB9IGVsc2UgaWYgKCFpc1VuZGVmaW5lZChub3JtYWxpemVkLm9yZGluYWwpKSB7CiAgICAgICAgbWl4ZWQgPSBvcmRpbmFsVG9HcmVnb3JpYW4oeyAuLi5ncmVnb3JpYW5Ub09yZGluYWwodGhpcy5jKSwgLi4ubm9ybWFsaXplZCB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBtaXhlZCA9IHsgLi4udGhpcy50b09iamVjdCgpLCAuLi5ub3JtYWxpemVkIH07CgogICAgICAgIC8vIGlmIHdlIGRpZG4ndCBzZXQgdGhlIGRheSBidXQgd2UgZW5kZWQgdXAgb24gYW4gb3ZlcmZsb3cgZGF0ZSwKICAgICAgICAvLyB1c2UgdGhlIGxhc3QgZGF5IG9mIHRoZSByaWdodCBtb250aAogICAgICAgIGlmIChpc1VuZGVmaW5lZChub3JtYWxpemVkLmRheSkpIHsKICAgICAgICAgIG1peGVkLmRheSA9IE1hdGgubWluKGRheXNJbk1vbnRoKG1peGVkLnllYXIsIG1peGVkLm1vbnRoKSwgbWl4ZWQuZGF5KTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGNvbnN0IFt0cywgb10gPSBvYmpUb1RTKG1peGVkLCB0aGlzLm8sIHRoaXMuem9uZSk7CiAgICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHRzLCBvIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIGEgcGVyaW9kIG9mIHRpbWUgdG8gdGhpcyBEYXRlVGltZSBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUKICAgICAqCiAgICAgKiBBZGRpbmcgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG9yIG1pbGxpc2Vjb25kcyBpbmNyZWFzZXMgdGhlIHRpbWVzdGFtcCBieSB0aGUgcmlnaHQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy4gQWRkaW5nIGRheXMsIG1vbnRocywgb3IgeWVhcnMgc2hpZnRzIHRoZSBjYWxlbmRhciwgYWNjb3VudGluZyBmb3IgRFNUcyBhbmQgbGVhcCB5ZWFycyBhbG9uZyB0aGUgd2F5LiBUaHVzLCBgZHQucGx1cyh7IGhvdXJzOiAyNCB9KWAgbWF5IHJlc3VsdCBpbiBhIGRpZmZlcmVudCB0aW1lIHRoYW4gYGR0LnBsdXMoeyBkYXlzOiAxIH0pYCBpZiB0aGVyZSdzIGEgRFNUIHNoaWZ0IGluIGJldHdlZW4uCiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gVGhlIGFtb3VudCB0byBhZGQuIEVpdGhlciBhIEx1eG9uIER1cmF0aW9uLCBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMsIHRoZSBvYmplY3QgYXJndW1lbnQgdG8gRHVyYXRpb24uZnJvbU9iamVjdCgpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKDEyMykgLy9+PiBpbiAxMjMgbWlsbGlzZWNvbmRzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgbWludXRlczogMTUgfSkgLy9+PiBpbiAxNSBtaW51dGVzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KSAvL34+IHRoaXMgdGltZSB0b21vcnJvdwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IC0xIH0pIC8vfj4gdGhpcyB0aW1lIHllc3RlcmRheQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGhvdXJzOiAzLCBtaW51dGVzOiAxMyB9KSAvL34+IGluIDMgaHIsIDEzIG1pbgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyhEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDMsIG1pbnV0ZXM6IDEzIH0pKSAvL34+IGluIDMgaHIsIDEzIG1pbgogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHBsdXMoZHVyYXRpb24pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKTsKICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIGFkanVzdFRpbWUodGhpcywgZHVyKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTdWJ0cmFjdCBhIHBlcmlvZCBvZiB0aW1lIHRvIHRoaXMgRGF0ZVRpbWUgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lCiAgICAgKiBTZWUge0BsaW5rIERhdGVUaW1lI3BsdXN9CiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gVGhlIGFtb3VudCB0byBzdWJ0cmFjdC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KCkKICAgICBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgbWludXMoZHVyYXRpb24pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKS5uZWdhdGUoKTsKICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIGFkanVzdFRpbWUodGhpcywgZHVyKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGlzIERhdGVUaW1lIHRvIHRoZSBiZWdpbm5pbmcgb2YgYSB1bml0IG9mIHRpbWUuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIFRoZSB1bml0IHRvIGdvIHRvIHRoZSBiZWdpbm5pbmcgb2YuIENhbiBiZSAneWVhcicsICdxdWFydGVyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcsIG9yICdtaWxsaXNlY29uZCcuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5zdGFydE9mKCdtb250aCcpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAzLTAxJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZigneWVhcicpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAxLTAxJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZignd2VlaycpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAzLTAzJywgd2Vla3MgYWx3YXlzIHN0YXJ0IG9uIE1vbmRheXMKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMsIDUsIDMwKS5zdGFydE9mKCdkYXknKS50b0lTT1RpbWUoKTsgLy89PiAnMDA6MDAuMDAwLTA1OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMywgNSwgMzApLnN0YXJ0T2YoJ2hvdXInKS50b0lTT1RpbWUoKTsgLy89PiAnMDU6MDA6MDAuMDAwLTA1OjAwJwogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXJ0T2YodW5pdCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IG8gPSB7fSwKICAgICAgICBub3JtYWxpemVkVW5pdCA9IER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQodW5pdCk7CiAgICAgIHN3aXRjaCAobm9ybWFsaXplZFVuaXQpIHsKICAgICAgICBjYXNlICJ5ZWFycyI6CiAgICAgICAgICBvLm1vbnRoID0gMTsKICAgICAgICAvLyBmYWxscyB0aHJvdWdoCiAgICAgICAgY2FzZSAicXVhcnRlcnMiOgogICAgICAgIGNhc2UgIm1vbnRocyI6CiAgICAgICAgICBvLmRheSA9IDE7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgIndlZWtzIjoKICAgICAgICBjYXNlICJkYXlzIjoKICAgICAgICAgIG8uaG91ciA9IDA7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgImhvdXJzIjoKICAgICAgICAgIG8ubWludXRlID0gMDsKICAgICAgICAvLyBmYWxscyB0aHJvdWdoCiAgICAgICAgY2FzZSAibWludXRlcyI6CiAgICAgICAgICBvLnNlY29uZCA9IDA7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgInNlY29uZHMiOgogICAgICAgICAgby5taWxsaXNlY29uZCA9IDA7CiAgICAgICAgICBicmVhazsKICAgICAgICAvLyBubyBkZWZhdWx0LCBpbnZhbGlkIHVuaXRzIHRocm93IGluIG5vcm1hbGl6ZVVuaXQoKQogICAgICB9CgogICAgICBpZiAobm9ybWFsaXplZFVuaXQgPT09ICJ3ZWVrcyIpIHsKICAgICAgICBvLndlZWtkYXkgPSAxOwogICAgICB9CgogICAgICBpZiAobm9ybWFsaXplZFVuaXQgPT09ICJxdWFydGVycyIpIHsKICAgICAgICBjb25zdCBxID0gTWF0aC5jZWlsKHRoaXMubW9udGggLyAzKTsKICAgICAgICBvLm1vbnRoID0gKHEgLSAxKSAqIDMgKyAxOwogICAgICB9CgogICAgICByZXR1cm4gdGhpcy5zZXQobyk7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGlzIERhdGVUaW1lIHRvIHRoZSBlbmQgKG1lYW5pbmcgdGhlIGxhc3QgbWlsbGlzZWNvbmQpIG9mIGEgdW5pdCBvZiB0aW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIFRoZSB1bml0IHRvIGdvIHRvIHRoZSBlbmQgb2YuIENhbiBiZSAneWVhcicsICdxdWFydGVyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcsIG9yICdtaWxsaXNlY29uZCcuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5lbmRPZignbW9udGgnKS50b0lTTygpOyAvLz0+ICcyMDE0LTAzLTMxVDIzOjU5OjU5Ljk5OS0wNTowMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMpLmVuZE9mKCd5ZWFyJykudG9JU08oKTsgLy89PiAnMjAxNC0xMi0zMVQyMzo1OTo1OS45OTktMDU6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5lbmRPZignd2VlaycpLnRvSVNPKCk7IC8vID0+ICcyMDE0LTAzLTA5VDIzOjU5OjU5Ljk5OS0wNTowMCcsIHdlZWtzIHN0YXJ0IG9uIE1vbmRheXMKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMsIDUsIDMwKS5lbmRPZignZGF5JykudG9JU08oKTsgLy89PiAnMjAxNC0wMy0wM1QyMzo1OTo1OS45OTktMDU6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzLCA1LCAzMCkuZW5kT2YoJ2hvdXInKS50b0lTTygpOyAvLz0+ICcyMDE0LTAzLTAzVDA1OjU5OjU5Ljk5OS0wNTowMCcKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBlbmRPZih1bml0KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IHRoaXMucGx1cyh7IFt1bml0XTogMSB9KQogICAgICAgICAgICAuc3RhcnRPZih1bml0KQogICAgICAgICAgICAubWludXMoMSkKICAgICAgICA6IHRoaXM7CiAgICB9CgogICAgLy8gT1VUUFVUCgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIGZvcm1hdCBzdHJpbmcuCiAgICAgKiAqKllvdSBtYXkgbm90IHdhbnQgdGhpcy4qKiBTZWUge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3IgYSBtb3JlIGZsZXhpYmxlIGZvcm1hdHRpbmcgdG9vbC4gRm9yIGEgdGFibGUgb2YgdG9rZW5zIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMsIHNlZSBbaGVyZV0oaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uLyMvZm9ybWF0dGluZz9pZD10YWJsZS1vZi10b2tlbnMpLgogICAgICogRGVmYXVsdHMgdG8gZW4tVVMgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZCwgcmVnYXJkbGVzcyBvZiB0aGUgc3lzdGVtJ3MgbG9jYWxlLgogICAgICogQHBhcmFtIHtzdHJpbmd9IGZtdCAtIHRoZSBmb3JtYXQgc3RyaW5nCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdHMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvbiB0aGlzIERhdGVUaW1lCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnKSAvLz0+ICcyMDE3IEFwciAyMicKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgnZnInKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnKSAvLz0+ICcyMDE3IGF2ci4gMjInCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnLCB7IGxvY2FsZTogImZyIiB9KSAvLz0+ICcyMDE3IGF2ci4gMjInCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgiSEggJ2hvdXJzIGFuZCcgbW0gJ21pbnV0ZXMnIikgLy89PiAnMjAgaG91cnMgYW5kIDU1IG1pbnV0ZXMnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvRm9ybWF0KGZtdCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MucmVkZWZhdWx0VG9FTihvcHRzKSkuZm9ybWF0RGF0ZVRpbWVGcm9tU3RyaW5nKHRoaXMsIGZtdCkKICAgICAgICA6IElOVkFMSUQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgbG9jYWxpemVkIHN0cmluZyByZXByZXNlbnRpbmcgdGhpcyBkYXRlLiBBY2NlcHRzIHRoZSBzYW1lIG9wdGlvbnMgYXMgdGhlIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgYW5kIGFueSBwcmVzZXRzIGRlZmluZWQgYnkgTHV4b24sIHN1Y2ggYXMgYERhdGVUaW1lLkRBVEVfRlVMTGAgb3IgYERhdGVUaW1lLlRJTUVfU0lNUExFYC4KICAgICAqIFRoZSBleGFjdCBiZWhhdmlvciBvZiB0aGlzIG1ldGhvZCBpcyBicm93c2VyLXNwZWNpZmljLCBidXQgaW4gZ2VuZXJhbCBpdCB3aWxsIHJldHVybiBhbiBhcHByb3ByaWF0ZSByZXByZXNlbnRhdGlvbgogICAgICogb2YgdGhlIERhdGVUaW1lIGluIHRoZSBhc3NpZ25lZCBsb2NhbGUuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXQKICAgICAqIEBwYXJhbSBmb3JtYXRPcHRzIHtPYmplY3R9IC0gSW50bC5EYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3RvciBvcHRpb25zIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0cyB0byBvdmVycmlkZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIG9uIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKCk7IC8vPT4gNC8yMC8yMDE3CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoJ2VuLWdiJykudG9Mb2NhbGVTdHJpbmcoKTsgLy89PiAnMjAvMDQvMjAxNycKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfRlVMTCk7IC8vPT4gJ0FwcmlsIDIwLCAyMDE3JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuREFURV9GVUxMLCB7IGxvY2FsZTogJ2ZyJyB9KTsgLy89PiAnMjggYW/Du3QgMjAyMicKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLlRJTUVfU0lNUExFKTsgLy89PiAnMTE6MzIgQU0nCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFVElNRV9TSE9SVCk7IC8vPT4gJzQvMjAvMjAxNywgMTE6MzIgQU0nCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IHdlZWtkYXk6ICdsb25nJywgbW9udGg6ICdsb25nJywgZGF5OiAnMi1kaWdpdCcgfSk7IC8vPT4gJ1RodXJzZGF5LCBBcHJpbCAyMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKHsgd2Vla2RheTogJ3Nob3J0JywgbW9udGg6ICdzaG9ydCcsIGRheTogJzItZGlnaXQnLCBob3VyOiAnMi1kaWdpdCcsIG1pbnV0ZTogJzItZGlnaXQnIH0pOyAvLz0+ICdUaHUsIEFwciAyMCwgMTE6MjcgQU0nCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcsIGhvdXJDeWNsZTogJ2gyMycgfSk7IC8vPT4gJzExOjMyJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0xvY2FsZVN0cmluZyhmb3JtYXRPcHRzID0gREFURV9TSE9SVCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MuY2xvbmUob3B0cyksIGZvcm1hdE9wdHMpLmZvcm1hdERhdGVUaW1lKHRoaXMpCiAgICAgICAgOiBJTlZBTElEOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBhcnJheSBvZiBmb3JtYXQgInBhcnRzIiwgbWVhbmluZyBpbmRpdmlkdWFsIHRva2VucyBhbG9uZyB3aXRoIG1ldGFkYXRhLiBUaGlzIGlzIGFsbG93cyBjYWxsZXJzIHRvIHBvc3QtcHJvY2VzcyBpbmRpdmlkdWFsIHNlY3Rpb25zIG9mIHRoZSBmb3JtYXR0ZWQgb3V0cHV0LgogICAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkCiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0L2Zvcm1hdFRvUGFydHMKICAgICAqIEBwYXJhbSBvcHRzIHtPYmplY3R9IC0gSW50bC5EYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3RvciBvcHRpb25zLCBzYW1lIGFzIGB0b0xvY2FsZVN0cmluZ2AuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVBhcnRzKCk7IC8vPT4gWwogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdkYXknLCB2YWx1ZTogJzI1JyB9LAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdsaXRlcmFsJywgdmFsdWU6ICcvJyB9LAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdtb250aCcsIHZhbHVlOiAnMDUnIH0sCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJy8nIH0sCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ3llYXInLCB2YWx1ZTogJzE5ODInIH0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+IF0KICAgICAqLwogICAgdG9Mb2NhbGVQYXJ0cyhvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZAogICAgICAgID8gRm9ybWF0dGVyLmNyZWF0ZSh0aGlzLmxvYy5jbG9uZShvcHRzKSwgb3B0cykuZm9ybWF0RGF0ZVRpbWVQYXJ0cyh0aGlzKQogICAgICAgIDogW107CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzTWlsbGlzZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NTZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXQ9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJ1onIG9yICctMDQ6MDAnCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmV4dGVuZGVkWm9uZT1mYWxzZV0gLSBhZGQgdGhlIHRpbWUgem9uZSBmb3JtYXQgZXh0ZW5zaW9uCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgzLCA1LCAyNSkudG9JU08oKSAvLz0+ICcxOTgyLTA1LTI1VDAwOjAwOjAwLjAwMFonCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0lTTygpIC8vPT4gJzIwMTctMDQtMjJUMjA6NDc6MDUuMzM1LTA0OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oeyBpbmNsdWRlT2Zmc2V0OiBmYWxzZSB9KSAvLz0+ICcyMDE3LTA0LTIyVDIwOjQ3OjA1LjMzNScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvSVNPKHsgZm9ybWF0OiAnYmFzaWMnIH0pIC8vPT4gJzIwMTcwNDIyVDIwNDcwNS4zMzUtMDQwMCcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU08oewogICAgICBmb3JtYXQgPSAiZXh0ZW5kZWQiLAogICAgICBzdXBwcmVzc1NlY29uZHMgPSBmYWxzZSwKICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHMgPSBmYWxzZSwKICAgICAgaW5jbHVkZU9mZnNldCA9IHRydWUsCiAgICAgIGV4dGVuZGVkWm9uZSA9IGZhbHNlLAogICAgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KCiAgICAgIGNvbnN0IGV4dCA9IGZvcm1hdCA9PT0gImV4dGVuZGVkIjsKCiAgICAgIGxldCBjID0gdG9JU09EYXRlKHRoaXMsIGV4dCk7CiAgICAgIGMgKz0gIlQiOwogICAgICBjICs9IHRvSVNPVGltZSh0aGlzLCBleHQsIHN1cHByZXNzU2Vjb25kcywgc3VwcHJlc3NNaWxsaXNlY29uZHMsIGluY2x1ZGVPZmZzZXQsIGV4dGVuZGVkWm9uZSk7CiAgICAgIHJldHVybiBjOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUncyBkYXRlIGNvbXBvbmVudAogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wNS0yNScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU09EYXRlKHsgZm9ybWF0OiAnYmFzaWMnIH0pIC8vPT4gJzE5ODIwNTI1JwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT0RhdGUoeyBmb3JtYXQgPSAiZXh0ZW5kZWQiIH0gPSB7fSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CgogICAgICByZXR1cm4gdG9JU09EYXRlKHRoaXMsIGZvcm1hdCA9PT0gImV4dGVuZGVkIik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSdzIHdlZWsgZGF0ZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDE5ODIsIDUsIDI1KS50b0lTT1dlZWtEYXRlKCkgLy89PiAnMTk4Mi1XMjEtMicKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU09XZWVrRGF0ZSgpIHsKICAgICAgcmV0dXJuIHRvVGVjaEZvcm1hdCh0aGlzLCAia2tray0nVydXVy1jIik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSdzIHRpbWUgY29tcG9uZW50CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NNaWxsaXNlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBtaWxsaXNlY29uZHMgZnJvbSB0aGUgZm9ybWF0IGlmIHRoZXkncmUgMAogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc1NlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldD10cnVlXSAtIGluY2x1ZGUgdGhlIG9mZnNldCwgc3VjaCBhcyAnWicgb3IgJy0wNDowMCcKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuZXh0ZW5kZWRab25lPXRydWVdIC0gYWRkIHRoZSB0aW1lIHpvbmUgZm9ybWF0IGV4dGVuc2lvbgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlUHJlZml4PWZhbHNlXSAtIGluY2x1ZGUgdGhlIGBUYCBwcmVmaXgKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5mb3JtYXQ9J2V4dGVuZGVkJ10gLSBjaG9vc2UgYmV0d2VlbiB0aGUgYmFzaWMgYW5kIGV4dGVuZGVkIGZvcm1hdAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCB9KS50b0lTT1RpbWUoKSAvLz0+ICcwNzozNDoxOS4zNjFaJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCwgc2Vjb25kczogMCwgbWlsbGlzZWNvbmRzOiAwIH0pLnRvSVNPVGltZSh7IHN1cHByZXNzU2Vjb25kczogdHJ1ZSB9KSAvLz0+ICcwNzozNFonCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5zZXQoeyBob3VyOiA3LCBtaW51dGU6IDM0IH0pLnRvSVNPVGltZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcwNzM0MTkuMzYxWicKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLnNldCh7IGhvdXI6IDcsIG1pbnV0ZTogMzQgfSkudG9JU09UaW1lKHsgaW5jbHVkZVByZWZpeDogdHJ1ZSB9KSAvLz0+ICdUMDc6MzQ6MTkuMzYxWicKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU09UaW1lKHsKICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHMgPSBmYWxzZSwKICAgICAgc3VwcHJlc3NTZWNvbmRzID0gZmFsc2UsCiAgICAgIGluY2x1ZGVPZmZzZXQgPSB0cnVlLAogICAgICBpbmNsdWRlUHJlZml4ID0gZmFsc2UsCiAgICAgIGV4dGVuZGVkWm9uZSA9IGZhbHNlLAogICAgICBmb3JtYXQgPSAiZXh0ZW5kZWQiLAogICAgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KCiAgICAgIGxldCBjID0gaW5jbHVkZVByZWZpeCA/ICJUIiA6ICIiOwogICAgICByZXR1cm4gKAogICAgICAgIGMgKwogICAgICAgIHRvSVNPVGltZSgKICAgICAgICAgIHRoaXMsCiAgICAgICAgICBmb3JtYXQgPT09ICJleHRlbmRlZCIsCiAgICAgICAgICBzdXBwcmVzc1NlY29uZHMsCiAgICAgICAgICBzdXBwcmVzc01pbGxpc2Vjb25kcywKICAgICAgICAgIGluY2x1ZGVPZmZzZXQsCiAgICAgICAgICBleHRlbmRlZFpvbmUKICAgICAgICApCiAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIFJGQyAyODIyLWNvbXBhdGlibGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMykudG9SRkMyODIyKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAwMDowMDowMCArMDAwMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDcsIDEzKS50b1JGQzI4MjIoKSAvLz0+ICdTdW4sIDEzIEp1bCAyMDE0IDAwOjAwOjAwIC0wNDAwJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1JGQzI4MjIoKSB7CiAgICAgIHJldHVybiB0b1RlY2hGb3JtYXQodGhpcywgIkVFRSwgZGQgTExMIHl5eXkgSEg6bW06c3MgWlpaIiwgZmFsc2UpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gSFRUUCBoZWFkZXJzLiBUaGUgb3V0cHV0IGlzIGFsd2F5cyBleHByZXNzZWQgaW4gR01ULgogICAgICogU3BlY2lmaWNhbGx5LCB0aGUgc3RyaW5nIGNvbmZvcm1zIHRvIFJGQyAxMTIzLgogICAgICogQHNlZSBodHRwczovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMzLmh0bWwjc2VjMy4zLjEKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMykudG9IVFRQKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAwMDowMDowMCBHTVQnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMsIDE5KS50b0hUVFAoKSAvLz0+ICdTdW4sIDEzIEp1bCAyMDE0IDE5OjAwOjAwIEdNVCcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9IVFRQKCkgewogICAgICByZXR1cm4gdG9UZWNoRm9ybWF0KHRoaXMudG9VVEMoKSwgIkVFRSwgZGQgTExMIHl5eXkgSEg6bW06c3MgJ0dNVCciKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIFNRTCBEYXRlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMpLnRvU1FMRGF0ZSgpIC8vPT4gJzIwMTQtMDctMTMnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU1FMRGF0ZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgICByZXR1cm4gdG9JU09EYXRlKHRoaXMsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gU1FMIFRpbWUKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlWm9uZT1mYWxzZV0gLSBpbmNsdWRlIHRoZSB6b25lLCBzdWNoIGFzICdBbWVyaWNhL05ld19Zb3JrJy4gT3ZlcnJpZGVzIGluY2x1ZGVPZmZzZXQuCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXQ9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJ1onIG9yICctMDQ6MDAnCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXRTcGFjZT10cnVlXSAtIGluY2x1ZGUgdGhlIHNwYWNlIGJldHdlZW4gdGhlIHRpbWUgYW5kIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJzA1OjE1OjE2LjM0NSAtMDQ6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS50b1NRTCgpIC8vPT4gJzA1OjE1OjE2LjM0NScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvU1FMKCkgLy89PiAnMDU6MTU6MTYuMzQ1IC0wNDowMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvU1FMKHsgaW5jbHVkZU9mZnNldDogZmFsc2UgfSkgLy89PiAnMDU6MTU6MTYuMzQ1JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9TUUwoeyBpbmNsdWRlWm9uZTogZmFsc2UgfSkgLy89PiAnMDU6MTU6MTYuMzQ1IEFtZXJpY2EvTmV3X1lvcmsnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU1FMVGltZSh7IGluY2x1ZGVPZmZzZXQgPSB0cnVlLCBpbmNsdWRlWm9uZSA9IGZhbHNlLCBpbmNsdWRlT2Zmc2V0U3BhY2UgPSB0cnVlIH0gPSB7fSkgewogICAgICBsZXQgZm10ID0gIkhIOm1tOnNzLlNTUyI7CgogICAgICBpZiAoaW5jbHVkZVpvbmUgfHwgaW5jbHVkZU9mZnNldCkgewogICAgICAgIGlmIChpbmNsdWRlT2Zmc2V0U3BhY2UpIHsKICAgICAgICAgIGZtdCArPSAiICI7CiAgICAgICAgfQogICAgICAgIGlmIChpbmNsdWRlWm9uZSkgewogICAgICAgICAgZm10ICs9ICJ6IjsKICAgICAgICB9IGVsc2UgaWYgKGluY2x1ZGVPZmZzZXQpIHsKICAgICAgICAgIGZtdCArPSAiWloiOwogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIHRvVGVjaEZvcm1hdCh0aGlzLCBmbXQsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gU1FMIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVpvbmU9ZmFsc2VdIC0gaW5jbHVkZSB0aGUgem9uZSwgc3VjaCBhcyAnQW1lcmljYS9OZXdfWW9yaycuIE92ZXJyaWRlcyBpbmNsdWRlT2Zmc2V0LgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJwogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0U3BhY2U9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSB0aW1lIGFuZCB0aGUgb2Zmc2V0LCBzdWNoIGFzICcwNToxNToxNi4zNDUgLTA0OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTQsIDcsIDEzKS50b1NRTCgpIC8vPT4gJzIwMTQtMDctMTMgMDA6MDA6MDAuMDAwIFonCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9TUUwoKSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCAtMDQ6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9TUUwoeyBpbmNsdWRlT2Zmc2V0OiBmYWxzZSB9KSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDcsIDEzKS50b1NRTCh7IGluY2x1ZGVab25lOiB0cnVlIH0pIC8vPT4gJzIwMTQtMDctMTMgMDA6MDA6MDAuMDAwIEFtZXJpY2EvTmV3X1lvcmsnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU1FMKG9wdHMgPSB7fSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CgogICAgICByZXR1cm4gYCR7dGhpcy50b1NRTERhdGUoKX0gJHt0aGlzLnRvU1FMVGltZShvcHRzKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciBkZWJ1Z2dpbmcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9TdHJpbmcoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRvSVNPKCkgOiBJTlZBTElEOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgZXBvY2ggbWlsbGlzZWNvbmRzIG9mIHRoaXMgRGF0ZVRpbWUuIEFsaWFzIG9mIHtAbGluayBEYXRlVGltZSN0b01pbGxpc30KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgdmFsdWVPZigpIHsKICAgICAgcmV0dXJuIHRoaXMudG9NaWxsaXMoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGVwb2NoIG1pbGxpc2Vjb25kcyBvZiB0aGlzIERhdGVUaW1lLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICB0b01pbGxpcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBlcG9jaCBzZWNvbmRzIG9mIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHRvU2Vjb25kcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgLyAxMDAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgZXBvY2ggc2Vjb25kcyAoYXMgYSB3aG9sZSBudW1iZXIpIG9mIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHRvVW5peEludGVnZXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBNYXRoLmZsb29yKHRoaXMudHMgLyAxMDAwKSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIEpTT04uCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvSlNPTigpIHsKICAgICAgcmV0dXJuIHRoaXMudG9JU08oKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBCU09OIHNlcmlhbGl6YWJsZSBlcXVpdmFsZW50IHRvIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtEYXRlfQogICAgICovCiAgICB0b0JTT04oKSB7CiAgICAgIHJldHVybiB0aGlzLnRvSlNEYXRlKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCB0aGlzIERhdGVUaW1lJ3MgeWVhciwgbW9udGgsIGRheSwgYW5kIHNvIG9uLgogICAgICogQHBhcmFtIG9wdHMgLSBvcHRpb25zIGZvciBnZW5lcmF0aW5nIHRoZSBvYmplY3QKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZUNvbmZpZz1mYWxzZV0gLSBpbmNsdWRlIGNvbmZpZ3VyYXRpb24gYXR0cmlidXRlcyBpbiB0aGUgb3V0cHV0CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b09iamVjdCgpIC8vPT4geyB5ZWFyOiAyMDE3LCBtb250aDogNCwgZGF5OiAyMiwgaG91cjogMjAsIG1pbnV0ZTogNDksIHNlY29uZDogNDIsIG1pbGxpc2Vjb25kOiAyNjggfQogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICB0b09iamVjdChvcHRzID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB7fTsKCiAgICAgIGNvbnN0IGJhc2UgPSB7IC4uLnRoaXMuYyB9OwoKICAgICAgaWYgKG9wdHMuaW5jbHVkZUNvbmZpZykgewogICAgICAgIGJhc2Uub3V0cHV0Q2FsZW5kYXIgPSB0aGlzLm91dHB1dENhbGVuZGFyOwogICAgICAgIGJhc2UubnVtYmVyaW5nU3lzdGVtID0gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtOwogICAgICAgIGJhc2UubG9jYWxlID0gdGhpcy5sb2MubG9jYWxlOwogICAgICB9CiAgICAgIHJldHVybiBiYXNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIEphdmFTY3JpcHQgRGF0ZSBlcXVpdmFsZW50IHRvIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtEYXRlfQogICAgICovCiAgICB0b0pTRGF0ZSgpIHsKICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgOiBOYU4pOwogICAgfQoKICAgIC8vIENPTVBBUkUKCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBEYXRlVGltZXMgYXMgYSBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IG90aGVyRGF0ZVRpbWUgLSB0aGUgRGF0ZVRpbWUgdG8gY29tcGFyZSB0aGlzIG9uZSB0bwogICAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFt1bml0PVsnbWlsbGlzZWNvbmRzJ11dIC0gdGhlIHVuaXQgb3IgYXJyYXkgb2YgdW5pdHMgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIGluY2x1ZGUgaW4gdGhlIGR1cmF0aW9uLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQGV4YW1wbGUKICAgICAqIHZhciBpMSA9IERhdGVUaW1lLmZyb21JU08oJzE5ODItMDUtMjVUMDk6NDUnKSwKICAgICAqICAgICBpMiA9IERhdGVUaW1lLmZyb21JU08oJzE5ODMtMTAtMTRUMTA6MzAnKTsKICAgICAqIGkyLmRpZmYoaTEpLnRvT2JqZWN0KCkgLy89PiB7IG1pbGxpc2Vjb25kczogNDM4MDc1MDAwMDAgfQogICAgICogaTIuZGlmZihpMSwgJ2hvdXJzJykudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDEyMTY4Ljc1IH0KICAgICAqIGkyLmRpZmYoaTEsIFsnbW9udGhzJywgJ2RheXMnXSkudG9PYmplY3QoKSAvLz0+IHsgbW9udGhzOiAxNiwgZGF5czogMTkuMDMxMjUgfQogICAgICogaTIuZGlmZihpMSwgWydtb250aHMnLCAnZGF5cycsICdob3VycyddKS50b09iamVjdCgpIC8vPT4geyBtb250aHM6IDE2LCBkYXlzOiAxOSwgaG91cnM6IDAuNzUgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIGRpZmYob3RoZXJEYXRlVGltZSwgdW5pdCA9ICJtaWxsaXNlY29uZHMiLCBvcHRzID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIW90aGVyRGF0ZVRpbWUuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKCJjcmVhdGVkIGJ5IGRpZmZpbmcgYW4gaW52YWxpZCBEYXRlVGltZSIpOwogICAgICB9CgogICAgICBjb25zdCBkdXJPcHRzID0geyBsb2NhbGU6IHRoaXMubG9jYWxlLCBudW1iZXJpbmdTeXN0ZW06IHRoaXMubnVtYmVyaW5nU3lzdGVtLCAuLi5vcHRzIH07CgogICAgICBjb25zdCB1bml0cyA9IG1heWJlQXJyYXkodW5pdCkubWFwKER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpLAogICAgICAgIG90aGVySXNMYXRlciA9IG90aGVyRGF0ZVRpbWUudmFsdWVPZigpID4gdGhpcy52YWx1ZU9mKCksCiAgICAgICAgZWFybGllciA9IG90aGVySXNMYXRlciA/IHRoaXMgOiBvdGhlckRhdGVUaW1lLAogICAgICAgIGxhdGVyID0gb3RoZXJJc0xhdGVyID8gb3RoZXJEYXRlVGltZSA6IHRoaXMsCiAgICAgICAgZGlmZmVkID0gZGlmZihlYXJsaWVyLCBsYXRlciwgdW5pdHMsIGR1ck9wdHMpOwoKICAgICAgcmV0dXJuIG90aGVySXNMYXRlciA/IGRpZmZlZC5uZWdhdGUoKSA6IGRpZmZlZDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgRGF0ZVRpbWUgYW5kIHJpZ2h0IG5vdy4KICAgICAqIFNlZSB7QGxpbmsgRGF0ZVRpbWUjZGlmZn0KICAgICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBbdW5pdD1bJ21pbGxpc2Vjb25kcyddXSAtIHRoZSB1bml0IG9yIHVuaXRzIHVuaXRzIChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byBpbmNsdWRlIGluIHRoZSBkdXJhdGlvbgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIGRpZmZOb3codW5pdCA9ICJtaWxsaXNlY29uZHMiLCBvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIHRoaXMuZGlmZihEYXRlVGltZS5ub3coKSwgdW5pdCwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgc3Bhbm5pbmcgYmV0d2VlbiB0aGlzIERhdGVUaW1lIGFuZCBhbm90aGVyIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBvdGhlckRhdGVUaW1lIC0gdGhlIG90aGVyIGVuZCBwb2ludCBvZiB0aGUgSW50ZXJ2YWwKICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICB1bnRpbChvdGhlckRhdGVUaW1lKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHRoaXMsIG90aGVyRGF0ZVRpbWUpIDogdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgRGF0ZVRpbWUgaXMgaW4gdGhlIHNhbWUgdW5pdCBvZiB0aW1lIGFzIGFub3RoZXIgRGF0ZVRpbWUuCiAgICAgKiBIaWdoZXItb3JkZXIgdW5pdHMgbXVzdCBhbHNvIGJlIGlkZW50aWNhbCBmb3IgdGhpcyBmdW5jdGlvbiB0byByZXR1cm4gYHRydWVgLgogICAgICogTm90ZSB0aGF0IHRpbWUgem9uZXMgYXJlICoqaWdub3JlZCoqIGluIHRoaXMgY29tcGFyaXNvbiwgd2hpY2ggY29tcGFyZXMgdGhlICoqbG9jYWwqKiBjYWxlbmRhciB0aW1lLiBVc2Uge0BsaW5rIERhdGVUaW1lI3NldFpvbmV9IHRvIGNvbnZlcnQgb25lIG9mIHRoZSBkYXRlcyBpZiBuZWVkZWQuCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBvdGhlckRhdGVUaW1lIC0gdGhlIG90aGVyIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY2hlY2sgc2FtZW5lc3Mgb24KICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLmhhc1NhbWUob3RoZXJEVCwgJ2RheScpOyAvL34+IHRydWUgaWYgb3RoZXJEVCBpcyBpbiB0aGUgc2FtZSBjdXJyZW50IGNhbGVuZGFyIGRheQogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgaGFzU2FtZShvdGhlckRhdGVUaW1lLCB1bml0KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CgogICAgICBjb25zdCBpbnB1dE1zID0gb3RoZXJEYXRlVGltZS52YWx1ZU9mKCk7CiAgICAgIGNvbnN0IGFkanVzdGVkVG9ab25lID0gdGhpcy5zZXRab25lKG90aGVyRGF0ZVRpbWUuem9uZSwgeyBrZWVwTG9jYWxUaW1lOiB0cnVlIH0pOwogICAgICByZXR1cm4gYWRqdXN0ZWRUb1pvbmUuc3RhcnRPZih1bml0KSA8PSBpbnB1dE1zICYmIGlucHV0TXMgPD0gYWRqdXN0ZWRUb1pvbmUuZW5kT2YodW5pdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFcXVhbGl0eSBjaGVjawogICAgICogVHdvIERhdGVUaW1lcyBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleSByZXByZXNlbnQgdGhlIHNhbWUgbWlsbGlzZWNvbmQsIGhhdmUgdGhlIHNhbWUgem9uZSBhbmQgbG9jYXRpb24sIGFuZCBhcmUgYm90aCB2YWxpZC4KICAgICAqIFRvIGNvbXBhcmUganVzdCB0aGUgbWlsbGlzZWNvbmQgdmFsdWVzLCB1c2UgYCtkdDEgPT09ICtkdDJgLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gb3RoZXIgLSB0aGUgb3RoZXIgRGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGVxdWFscyhvdGhlcikgewogICAgICByZXR1cm4gKAogICAgICAgIHRoaXMuaXNWYWxpZCAmJgogICAgICAgIG90aGVyLmlzVmFsaWQgJiYKICAgICAgICB0aGlzLnZhbHVlT2YoKSA9PT0gb3RoZXIudmFsdWVPZigpICYmCiAgICAgICAgdGhpcy56b25lLmVxdWFscyhvdGhlci56b25lKSAmJgogICAgICAgIHRoaXMubG9jLmVxdWFscyhvdGhlci5sb2MpCiAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgdGhpcyB0aW1lIHJlbGF0aXZlIHRvIG5vdywgc3VjaCBhcyAiaW4gdHdvIGRheXMiLiBDYW4gb25seSBpbnRlcm5hdGlvbmFsaXplIGlmIHlvdXIKICAgICAqIHBsYXRmb3JtIHN1cHBvcnRzIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LiBSb3VuZHMgZG93biBieSBkZWZhdWx0LgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBvdXRwdXQKICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IFtvcHRpb25zLmJhc2U9RGF0ZVRpbWUubm93KCldIC0gdGhlIERhdGVUaW1lIHRvIHVzZSBhcyB0aGUgYmFzaXMgdG8gd2hpY2ggdGhpcyB0aW1lIGlzIGNvbXBhcmVkLiBEZWZhdWx0cyB0byBub3cuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuc3R5bGU9ImxvbmciXSAtIHRoZSBzdHlsZSBvZiB1bml0cywgbXVzdCBiZSAibG9uZyIsICJzaG9ydCIsIG9yICJuYXJyb3ciCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gb3B0aW9ucy51bml0IC0gdXNlIGEgc3BlY2lmaWMgdW5pdCBvciBhcnJheSBvZiB1bml0czsgaWYgb21pdHRlZCwgb3IgYW4gYXJyYXksIHRoZSBtZXRob2Qgd2lsbCBwaWNrIHRoZSBiZXN0IHVuaXQuIFVzZSBhbiBhcnJheSBvciBvbmUgb2YgInllYXJzIiwgInF1YXJ0ZXJzIiwgIm1vbnRocyIsICJ3ZWVrcyIsICJkYXlzIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCBvciAic2Vjb25kcyIKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMucm91bmQ9dHJ1ZV0gLSB3aGV0aGVyIHRvIHJvdW5kIHRoZSBudW1iZXJzIGluIHRoZSBvdXRwdXQuCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMucGFkZGluZz0wXSAtIHBhZGRpbmcgaW4gbWlsbGlzZWNvbmRzLiBUaGlzIGFsbG93cyB5b3UgdG8gcm91bmQgdXAgdGhlIHJlc3VsdCBpZiBpdCBmaXRzIGluc2lkZSB0aGUgdGhyZXNob2xkLiBEb24ndCB1c2UgaW4gY29tYmluYXRpb24gd2l0aCB7cm91bmQ6IGZhbHNlfSBiZWNhdXNlIHRoZSBkZWNpbWFsIG91dHB1dCB3aWxsIGluY2x1ZGUgdGhlIHBhZGRpbmcuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5sb2NhbGUgLSBvdmVycmlkZSB0aGUgbG9jYWxlIG9mIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm51bWJlcmluZ1N5c3RlbSAtIG92ZXJyaWRlIHRoZSBudW1iZXJpbmdTeXN0ZW0gb2YgdGhpcyBEYXRlVGltZS4gVGhlIEludGwgc3lzdGVtIG1heSBjaG9vc2Ugbm90IHRvIGhvbm9yIHRoaXMKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBkYXlzOiAxIH0pLnRvUmVsYXRpdmUoKSAvLz0+ICJpbiAxIGRheSIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgiZXMiKS50b1JlbGF0aXZlKHsgZGF5czogMSB9KSAvLz0+ICJkZW50cm8gZGUgMSBkw61hIgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZSh7IGxvY2FsZTogImZyIiB9KSAvLz0+ICJkYW5zIDIzIGhldXJlcyIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgZGF5czogMiB9KS50b1JlbGF0aXZlKCkgLy89PiAiMiBkYXlzIGFnbyIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgZGF5czogMiB9KS50b1JlbGF0aXZlKHsgdW5pdDogImhvdXJzIiB9KSAvLz0+ICI0OCBob3VycyBhZ28iCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5taW51cyh7IGhvdXJzOiAzNiB9KS50b1JlbGF0aXZlKHsgcm91bmQ6IGZhbHNlIH0pIC8vPT4gIjEuNSBkYXlzIGFnbyIKICAgICAqLwogICAgdG9SZWxhdGl2ZShvcHRpb25zID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsOwogICAgICBjb25zdCBiYXNlID0gb3B0aW9ucy5iYXNlIHx8IERhdGVUaW1lLmZyb21PYmplY3Qoe30sIHsgem9uZTogdGhpcy56b25lIH0pLAogICAgICAgIHBhZGRpbmcgPSBvcHRpb25zLnBhZGRpbmcgPyAodGhpcyA8IGJhc2UgPyAtb3B0aW9ucy5wYWRkaW5nIDogb3B0aW9ucy5wYWRkaW5nKSA6IDA7CiAgICAgIGxldCB1bml0cyA9IFsieWVhcnMiLCAibW9udGhzIiwgImRheXMiLCAiaG91cnMiLCAibWludXRlcyIsICJzZWNvbmRzIl07CiAgICAgIGxldCB1bml0ID0gb3B0aW9ucy51bml0OwogICAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zLnVuaXQpKSB7CiAgICAgICAgdW5pdHMgPSBvcHRpb25zLnVuaXQ7CiAgICAgICAgdW5pdCA9IHVuZGVmaW5lZDsKICAgICAgfQogICAgICByZXR1cm4gZGlmZlJlbGF0aXZlKGJhc2UsIHRoaXMucGx1cyhwYWRkaW5nKSwgewogICAgICAgIC4uLm9wdGlvbnMsCiAgICAgICAgbnVtZXJpYzogImFsd2F5cyIsCiAgICAgICAgdW5pdHMsCiAgICAgICAgdW5pdCwKICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgZGF0ZSByZWxhdGl2ZSB0byB0b2RheSwgc3VjaCBhcyAieWVzdGVyZGF5IiBvciAibmV4dCBtb250aCIuCiAgICAgKiBPbmx5IGludGVybmF0aW9uYWxpemVzIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnRzIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBvdXRwdXQKICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IFtvcHRpb25zLmJhc2U9RGF0ZVRpbWUubm93KCldIC0gdGhlIERhdGVUaW1lIHRvIHVzZSBhcyB0aGUgYmFzaXMgdG8gd2hpY2ggdGhpcyB0aW1lIGlzIGNvbXBhcmVkLiBEZWZhdWx0cyB0byBub3cuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5sb2NhbGUgLSBvdmVycmlkZSB0aGUgbG9jYWxlIG9mIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnVuaXQgLSB1c2UgYSBzcGVjaWZpYyB1bml0OyBpZiBvbWl0dGVkLCB0aGUgbWV0aG9kIHdpbGwgcGljayB0aGUgdW5pdC4gVXNlIG9uZSBvZiAieWVhcnMiLCAicXVhcnRlcnMiLCAibW9udGhzIiwgIndlZWtzIiwgb3IgImRheXMiCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSBvdmVycmlkZSB0aGUgbnVtYmVyaW5nU3lzdGVtIG9mIHRoaXMgRGF0ZVRpbWUuIFRoZSBJbnRsIHN5c3RlbSBtYXkgY2hvb3NlIG5vdCB0byBob25vciB0aGlzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlQ2FsZW5kYXIoKSAvLz0+ICJ0b21vcnJvdyIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgiZXMiKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlKCkgLy89PiAiIm1hw7FhbmEiCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlQ2FsZW5kYXIoeyBsb2NhbGU6ICJmciIgfSkgLy89PiAiZGVtYWluIgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkubWludXMoeyBkYXlzOiAyIH0pLnRvUmVsYXRpdmVDYWxlbmRhcigpIC8vPT4gIjIgZGF5cyBhZ28iCiAgICAgKi8KICAgIHRvUmVsYXRpdmVDYWxlbmRhcihvcHRpb25zID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsOwoKICAgICAgcmV0dXJuIGRpZmZSZWxhdGl2ZShvcHRpb25zLmJhc2UgfHwgRGF0ZVRpbWUuZnJvbU9iamVjdCh7fSwgeyB6b25lOiB0aGlzLnpvbmUgfSksIHRoaXMsIHsKICAgICAgICAuLi5vcHRpb25zLAogICAgICAgIG51bWVyaWM6ICJhdXRvIiwKICAgICAgICB1bml0czogWyJ5ZWFycyIsICJtb250aHMiLCAiZGF5cyJdLAogICAgICAgIGNhbGVuZGFyeTogdHJ1ZSwKICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIG1pbiBvZiBzZXZlcmFsIGRhdGUgdGltZXMKICAgICAqIEBwYXJhbSB7Li4uRGF0ZVRpbWV9IGRhdGVUaW1lcyAtIHRoZSBEYXRlVGltZXMgZnJvbSB3aGljaCB0byBjaG9vc2UgdGhlIG1pbmltdW0KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfSB0aGUgbWluIERhdGVUaW1lLCBvciB1bmRlZmluZWQgaWYgY2FsbGVkIHdpdGggbm8gYXJndW1lbnQKICAgICAqLwogICAgc3RhdGljIG1pbiguLi5kYXRlVGltZXMpIHsKICAgICAgaWYgKCFkYXRlVGltZXMuZXZlcnkoRGF0ZVRpbWUuaXNEYXRlVGltZSkpIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoIm1pbiByZXF1aXJlcyBhbGwgYXJndW1lbnRzIGJlIERhdGVUaW1lcyIpOwogICAgICB9CiAgICAgIHJldHVybiBiZXN0QnkoZGF0ZVRpbWVzLCAoaSkgPT4gaS52YWx1ZU9mKCksIE1hdGgubWluKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgbWF4IG9mIHNldmVyYWwgZGF0ZSB0aW1lcwogICAgICogQHBhcmFtIHsuLi5EYXRlVGltZX0gZGF0ZVRpbWVzIC0gdGhlIERhdGVUaW1lcyBmcm9tIHdoaWNoIHRvIGNob29zZSB0aGUgbWF4aW11bQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9IHRoZSBtYXggRGF0ZVRpbWUsIG9yIHVuZGVmaW5lZCBpZiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudAogICAgICovCiAgICBzdGF0aWMgbWF4KC4uLmRhdGVUaW1lcykgewogICAgICBpZiAoIWRhdGVUaW1lcy5ldmVyeShEYXRlVGltZS5pc0RhdGVUaW1lKSkgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigibWF4IHJlcXVpcmVzIGFsbCBhcmd1bWVudHMgYmUgRGF0ZVRpbWVzIik7CiAgICAgIH0KICAgICAgcmV0dXJuIGJlc3RCeShkYXRlVGltZXMsIChpKSA9PiBpLnZhbHVlT2YoKSwgTWF0aC5tYXgpOwogICAgfQoKICAgIC8vIE1JU0MKCiAgICAvKioKICAgICAqIEV4cGxhaW4gaG93IGEgc3RyaW5nIHdvdWxkIGJlIHBhcnNlZCBieSBmcm9tRm9ybWF0KCkKICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIHN0cmluZyB0byBwYXJzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IGZtdCAtIHRoZSBmb3JtYXQgdGhlIHN0cmluZyBpcyBleHBlY3RlZCB0byBiZSBpbiAoc2VlIGRlc2NyaXB0aW9uKQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRha2VuIGJ5IGZyb21Gb3JtYXQoKQogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZnJvbUZvcm1hdEV4cGxhaW4odGV4dCwgZm10LCBvcHRpb25zID0ge30pIHsKICAgICAgY29uc3QgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsIH0gPSBvcHRpb25zLAogICAgICAgIGxvY2FsZVRvVXNlID0gTG9jYWxlLmZyb21PcHRzKHsKICAgICAgICAgIGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgIGRlZmF1bHRUb0VOOiB0cnVlLAogICAgICAgIH0pOwogICAgICByZXR1cm4gZXhwbGFpbkZyb21Ub2tlbnMobG9jYWxlVG9Vc2UsIHRleHQsIGZtdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgZnJvbUZvcm1hdEV4cGxhaW4gaW5zdGVhZAogICAgICovCiAgICBzdGF0aWMgZnJvbVN0cmluZ0V4cGxhaW4odGV4dCwgZm10LCBvcHRpb25zID0ge30pIHsKICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21Gb3JtYXRFeHBsYWluKHRleHQsIGZtdCwgb3B0aW9ucyk7CiAgICB9CgogICAgLy8gRk9STUFUIFBSRVNFVFMKCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgMTAvMTQvMTk4MwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX1NIT1JUKCkgewogICAgICByZXR1cm4gREFURV9TSE9SVDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdCAxNCwgMTk4MycKICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURV9NRUQoKSB7CiAgICAgIHJldHVybiBEQVRFX01FRDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaSwgT2N0IDE0LCAxOTgzJwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX01FRF9XSVRIX1dFRUtEQVkoKSB7CiAgICAgIHJldHVybiBEQVRFX01FRF9XSVRIX1dFRUtEQVk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3RvYmVyIDE0LCAxOTgzJwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX0ZVTEwoKSB7CiAgICAgIHJldHVybiBEQVRFX0ZVTEw7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdUdWVzZGF5LCBPY3RvYmVyIDE0LCAxOTgzJwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX0hVR0UoKSB7CiAgICAgIHJldHVybiBEQVRFX0hVR0U7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FX1NJTVBMRSgpIHsKICAgICAgcmV0dXJuIFRJTUVfU0lNUExFOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBUSU1FX1dJVEhfU0VDT05EUzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEFNIEVEVCcuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FX1dJVEhfU0hPUlRfT0ZGU0VUKCkgewogICAgICByZXR1cm4gVElNRV9XSVRIX1NIT1JUX09GRlNFVDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEFNIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FX1dJVEhfTE9OR19PRkZTRVQoKSB7CiAgICAgIHJldHVybiBUSU1FX1dJVEhfTE9OR19PRkZTRVQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMCcsIGFsd2F5cyAyNC1ob3VyLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FXzI0X1NJTVBMRSgpIHsKICAgICAgcmV0dXJuIFRJTUVfMjRfU0lNUExFOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMnLCBhbHdheXMgMjQtaG91ci4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV8yNF9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBUSU1FXzI0X1dJVEhfU0VDT05EUzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEVEVCcsIGFsd2F5cyAyNC1ob3VyLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FXzI0X1dJVEhfU0hPUlRfT0ZGU0VUKCkgewogICAgICByZXR1cm4gVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScsIGFsd2F5cyAyNC1ob3VyLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQoKSB7CiAgICAgIHJldHVybiBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcxMC8xNC8xOTgzLCA5OjMwIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX1NIT1JUKCkgewogICAgICByZXR1cm4gREFURVRJTUVfU0hPUlQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcxMC8xNC8xOTgzLCA5OjMwOjMzIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUygpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdCAxNCwgMTk4MywgOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9NRUQoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9NRUQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3QgMTQsIDE5ODMsIDk6MzA6MzMgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUygpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdGcmksIDE0IE9jdCAxOTgzLCA5OjMwIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9NRURfV0lUSF9XRUVLREFZOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0b2JlciAxNCwgMTk4MywgOTozMCBBTSBFRFQnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfRlVMTCgpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX0ZVTEw7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3RvYmVyIDE0LCAxOTgzLCA5OjMwOjMzIEFNIEVEVCcuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUygpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX0ZVTExfV0lUSF9TRUNPTkRTOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnRnJpZGF5LCBPY3RvYmVyIDE0LCAxOTgzLCA5OjMwIEFNIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9IVUdFKCkgewogICAgICByZXR1cm4gREFURVRJTUVfSFVHRTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaWRheSwgT2N0b2JlciAxNCwgMTk4MywgOTozMDozMyBBTSBFYXN0ZXJuIERheWxpZ2h0IFRpbWUnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUzsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCiAgZnVuY3Rpb24gZnJpZW5kbHlEYXRlVGltZShkYXRlVGltZWlzaCkgewogICAgaWYgKERhdGVUaW1lLmlzRGF0ZVRpbWUoZGF0ZVRpbWVpc2gpKSB7CiAgICAgIHJldHVybiBkYXRlVGltZWlzaDsKICAgIH0gZWxzZSBpZiAoZGF0ZVRpbWVpc2ggJiYgZGF0ZVRpbWVpc2gudmFsdWVPZiAmJiBpc051bWJlcihkYXRlVGltZWlzaC52YWx1ZU9mKCkpKSB7CiAgICAgIHJldHVybiBEYXRlVGltZS5mcm9tSlNEYXRlKGRhdGVUaW1laXNoKTsKICAgIH0gZWxzZSBpZiAoZGF0ZVRpbWVpc2ggJiYgdHlwZW9mIGRhdGVUaW1laXNoID09PSAib2JqZWN0IikgewogICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdChkYXRlVGltZWlzaCk7CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoCiAgICAgICAgYFVua25vd24gZGF0ZXRpbWUgYXJndW1lbnQ6ICR7ZGF0ZVRpbWVpc2h9LCBvZiB0eXBlICR7dHlwZW9mIGRhdGVUaW1laXNofWAKICAgICAgKTsKICAgIH0KICB9CgogIC8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgLy8gUXVlcnkgU2V0dGluZ3MgLy8KICAvLy8vLy8vLy8vLy8vLy8vLy8vLwogIGNvbnN0IERFRkFVTFRfUVVFUllfU0VUVElOR1MgPSB7CiAgICAgIHJlbmRlck51bGxBczogIlxcLSIsCiAgICAgIHRhc2tDb21wbGV0aW9uVHJhY2tpbmc6IGZhbHNlLAogICAgICB0YXNrQ29tcGxldGlvblVzZUVtb2ppU2hvcnRoYW5kOiBmYWxzZSwKICAgICAgdGFza0NvbXBsZXRpb25UZXh0OiAiY29tcGxldGlvbiIsCiAgICAgIHRhc2tDb21wbGV0aW9uRGF0ZUZvcm1hdDogInl5eXktTU0tZGQiLAogICAgICByZWN1cnNpdmVTdWJUYXNrQ29tcGxldGlvbjogZmFsc2UsCiAgICAgIHdhcm5PbkVtcHR5UmVzdWx0OiB0cnVlLAogICAgICByZWZyZXNoRW5hYmxlZDogdHJ1ZSwKICAgICAgcmVmcmVzaEludGVydmFsOiAyNTAwLAogICAgICBkZWZhdWx0RGF0ZUZvcm1hdDogIk1NTU0gZGQsIHl5eXkiLAogICAgICBkZWZhdWx0RGF0ZVRpbWVGb3JtYXQ6ICJoOm1tIGEgLSBNTU1NIGRkLCB5eXl5IiwKICAgICAgbWF4UmVjdXJzaXZlUmVuZGVyRGVwdGg6IDQsCiAgICAgIHRhYmxlSWRDb2x1bW5OYW1lOiAiRmlsZSIsCiAgICAgIHRhYmxlR3JvdXBDb2x1bW5OYW1lOiAiR3JvdXAiLAogICAgICBzaG93UmVzdWx0Q291bnQ6IHRydWUsCiAgfTsKICBjb25zdCBERUZBVUxUX0VYUE9SVF9TRVRUSU5HUyA9IHsKICAgICAgYWxsb3dIdG1sOiB0cnVlLAogIH07CiAgLyoqIERlZmF1bHQgc2V0dGluZ3MgZm9yIGRhdGF2aWV3IG9uIGluc3RhbGwuICovCiAgKHsKICAgICAgLi4uREVGQVVMVF9RVUVSWV9TRVRUSU5HUywKICAgICAgLi4uREVGQVVMVF9FWFBPUlRfU0VUVElOR1MsCiAgICAgIC4uLnsKICAgICAgICAgIGlubGluZVF1ZXJ5UHJlZml4OiAiPSIsCiAgICAgICAgICBpbmxpbmVKc1F1ZXJ5UHJlZml4OiAiJD0iLAogICAgICAgICAgaW5saW5lUXVlcmllc0luQ29kZWJsb2NrczogdHJ1ZSwKICAgICAgICAgIGVuYWJsZUlubGluZURhdGF2aWV3OiB0cnVlLAogICAgICAgICAgZW5hYmxlRGF0YXZpZXdKczogZmFsc2UsCiAgICAgICAgICBlbmFibGVJbmxpbmVEYXRhdmlld0pzOiBmYWxzZSwKICAgICAgICAgIHByZXR0eVJlbmRlcklubGluZUZpZWxkczogdHJ1ZSwKICAgICAgICAgIHByZXR0eVJlbmRlcklubGluZUZpZWxkc0luTGl2ZVByZXZpZXc6IHRydWUsCiAgICAgICAgICBkYXRhdmlld0pzS2V5d29yZDogImRhdGF2aWV3anMiLAogICAgICB9LAogIH0pOwoKICAvKiogRnVuY3Rpb25hbCByZXR1cm4gdHlwZSBmb3IgZXJyb3IgaGFuZGxpbmcuICovCiAgY2xhc3MgU3VjY2VzcyB7CiAgICAgIGNvbnN0cnVjdG9yKHZhbHVlKSB7CiAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CiAgICAgICAgICB0aGlzLnN1Y2Nlc3NmdWwgPSB0cnVlOwogICAgICB9CiAgICAgIG1hcChmKSB7CiAgICAgICAgICByZXR1cm4gbmV3IFN1Y2Nlc3MoZih0aGlzLnZhbHVlKSk7CiAgICAgIH0KICAgICAgZmxhdE1hcChmKSB7CiAgICAgICAgICByZXR1cm4gZih0aGlzLnZhbHVlKTsKICAgICAgfQogICAgICBtYXBFcnIoZikgewogICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgIH0KICAgICAgYmltYXAoc3VjYywgX2ZhaWwpIHsKICAgICAgICAgIHJldHVybiB0aGlzLm1hcChzdWNjKTsKICAgICAgfQogICAgICBvckVsc2UoX3ZhbHVlKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTsKICAgICAgfQogICAgICBjYXN0KCkgewogICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgIH0KICAgICAgb3JFbHNlVGhyb3coX21lc3NhZ2UpIHsKICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlOwogICAgICB9CiAgfQogIC8qKiBGdW5jdGlvbmFsIHJldHVybiB0eXBlIGZvciBlcnJvciBoYW5kbGluZy4gKi8KICBjbGFzcyBGYWlsdXJlIHsKICAgICAgY29uc3RydWN0b3IoZXJyb3IpIHsKICAgICAgICAgIHRoaXMuZXJyb3IgPSBlcnJvcjsKICAgICAgICAgIHRoaXMuc3VjY2Vzc2Z1bCA9IGZhbHNlOwogICAgICB9CiAgICAgIG1hcChfZikgewogICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgIH0KICAgICAgZmxhdE1hcChfZikgewogICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgIH0KICAgICAgbWFwRXJyKGYpIHsKICAgICAgICAgIHJldHVybiBuZXcgRmFpbHVyZShmKHRoaXMuZXJyb3IpKTsKICAgICAgfQogICAgICBiaW1hcChfc3VjYywgZmFpbCkgewogICAgICAgICAgcmV0dXJuIHRoaXMubWFwRXJyKGZhaWwpOwogICAgICB9CiAgICAgIG9yRWxzZSh2YWx1ZSkgewogICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICB9CiAgICAgIGNhc3QoKSB7CiAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfQogICAgICBvckVsc2VUaHJvdyhtZXNzYWdlKSB7CiAgICAgICAgICBpZiAobWVzc2FnZSkKICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSh0aGlzLmVycm9yKSk7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCIiICsgdGhpcy5lcnJvcik7CiAgICAgIH0KICB9CiAgLyoqIE1vbmFkaWMgJ1Jlc3VsdCcgdHlwZSB3aGljaCBlbmNhcHN1bGF0ZXMgd2hldGhlciBhIHByb2NlZHVyZSBzdWNjZWVkZWQgb3IgZmFpbGVkLCBhcyB3ZWxsIGFzIGl0J3MgcmV0dXJuIHZhbHVlLiAqLwogIHZhciBSZXN1bHQ7CiAgKGZ1bmN0aW9uIChSZXN1bHQpIHsKICAgICAgLyoqIENvbnN0cnVjdCBhIG5ldyBzdWNjZXNzIHJlc3VsdCB3cmFwcGluZyB0aGUgZ2l2ZW4gdmFsdWUuICovCiAgICAgIGZ1bmN0aW9uIHN1Y2Nlc3ModmFsdWUpIHsKICAgICAgICAgIHJldHVybiBuZXcgU3VjY2Vzcyh2YWx1ZSk7CiAgICAgIH0KICAgICAgUmVzdWx0LnN1Y2Nlc3MgPSBzdWNjZXNzOwogICAgICAvKiogQ29uc3RydWN0IGEgbmV3IGZhaWx1cmUgdmFsdWUgd3JhcHBpbmcgdGhlIGdpdmVuIGVycm9yLiAqLwogICAgICBmdW5jdGlvbiBmYWlsdXJlKGVycm9yKSB7CiAgICAgICAgICByZXR1cm4gbmV3IEZhaWx1cmUoZXJyb3IpOwogICAgICB9CiAgICAgIFJlc3VsdC5mYWlsdXJlID0gZmFpbHVyZTsKICAgICAgLyoqIEpvaW4gdHdvIHJlc3VsdHMgd2l0aCBhIGJpLWZ1bmN0aW9uIGFuZCByZXR1cm4gYSBuZXcgcmVzdWx0LiAqLwogICAgICBmdW5jdGlvbiBmbGF0TWFwMihmaXJzdCwgc2Vjb25kLCBmKSB7CiAgICAgICAgICBpZiAoZmlyc3Quc3VjY2Vzc2Z1bCkgewogICAgICAgICAgICAgIGlmIChzZWNvbmQuc3VjY2Vzc2Z1bCkKICAgICAgICAgICAgICAgICAgcmV0dXJuIGYoZmlyc3QudmFsdWUsIHNlY29uZC52YWx1ZSk7CiAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICByZXR1cm4gZmFpbHVyZShzZWNvbmQuZXJyb3IpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmUoZmlyc3QuZXJyb3IpOwogICAgICAgICAgfQogICAgICB9CiAgICAgIFJlc3VsdC5mbGF0TWFwMiA9IGZsYXRNYXAyOwogICAgICAvKiogSm9pbiB0d28gcmVzdWx0cyB3aXRoIGEgYmktZnVuY3Rpb24gYW5kIHJldHVybiBhIG5ldyByZXN1bHQuICovCiAgICAgIGZ1bmN0aW9uIG1hcDIoZmlyc3QsIHNlY29uZCwgZikgewogICAgICAgICAgcmV0dXJuIGZsYXRNYXAyKGZpcnN0LCBzZWNvbmQsIChhLCBiKSA9PiBzdWNjZXNzKGYoYSwgYikpKTsKICAgICAgfQogICAgICBSZXN1bHQubWFwMiA9IG1hcDI7CiAgfSkoUmVzdWx0IHx8IChSZXN1bHQgPSB7fSkpOwoKICB2YXIgY29tbW9uanNHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWxUaGlzIDogdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB7fTsKCiAgdmFyIHBhcnNpbW1vbl91bWRfbWluID0ge2V4cG9ydHM6IHt9fTsKCiAgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0czsKCiAgKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKICAJIWZ1bmN0aW9uKG4sdCl7bW9kdWxlLmV4cG9ydHM9dCgpO30oInVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6Y29tbW9uanNHbG9iYWwsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHQ9e307ZnVuY3Rpb24gcihlKXtpZih0W2VdKXJldHVybiB0W2VdLmV4cG9ydHM7dmFyIHU9dFtlXT17aTplLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIG5bZV0uY2FsbCh1LmV4cG9ydHMsdSx1LmV4cG9ydHMsciksdS5sPSEwLHUuZXhwb3J0c31yZXR1cm4gci5tPW4sci5jPXQsci5kPWZ1bmN0aW9uKG4sdCxlKXtyLm8obix0KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sdCx7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsZ2V0OmV9KTt9LHIucj1mdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7fSxyLm49ZnVuY3Rpb24obil7dmFyIHQ9biYmbi5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIG4uZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gbn07cmV0dXJuIHIuZCh0LCJhIix0KSx0fSxyLm89ZnVuY3Rpb24obix0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sdCl9LHIucD0iIixyKHIucz0wKX0oW2Z1bmN0aW9uKG4sdCxyKXtmdW5jdGlvbiBlKG4pe2lmKCEodGhpcyBpbnN0YW5jZW9mIGUpKXJldHVybiBuZXcgZShuKTt0aGlzLl89bjt9dmFyIHU9ZS5wcm90b3R5cGU7ZnVuY3Rpb24gbyhuLHQpe2Zvcih2YXIgcj0wO3I8bjtyKyspdChyKTt9ZnVuY3Rpb24gaShuLHQscil7cmV0dXJuIGZ1bmN0aW9uKG4sdCl7byh0Lmxlbmd0aCxmdW5jdGlvbihyKXtuKHRbcl0scix0KTt9KTt9KGZ1bmN0aW9uKHIsZSx1KXt0PW4odCxyLGUsdSk7fSxyKSx0fWZ1bmN0aW9uIGEobix0KXtyZXR1cm4gaShmdW5jdGlvbih0LHIsZSx1KXtyZXR1cm4gdC5jb25jYXQoW24ocixlLHUpXSl9LFtdLHQpfWZ1bmN0aW9uIGYobix0KXt2YXIgcj17djowLGJ1Zjp0fTtyZXR1cm4gbyhuLGZ1bmN0aW9uKCl7dmFyIG47cj17djpyLnY8PDF8KG49ci5idWYsblswXT4+NyksYnVmOmZ1bmN0aW9uKG4pe3ZhciB0PWkoZnVuY3Rpb24obix0LHIsZSl7cmV0dXJuIG4uY29uY2F0KHI9PT1lLmxlbmd0aC0xP0J1ZmZlci5mcm9tKFt0LDBdKS5yZWFkVUludDE2QkUoMCk6ZS5yZWFkVUludDE2QkUocikpfSxbXSxuKTtyZXR1cm4gQnVmZmVyLmZyb20oYShmdW5jdGlvbihuKXtyZXR1cm4gKG48PDEmNjU1MzUpPj44fSx0KSl9KHIuYnVmKX07fSkscn1mdW5jdGlvbiBjKCl7cmV0dXJuICJ1bmRlZmluZWQiIT10eXBlb2YgQnVmZmVyfWZ1bmN0aW9uIHMoKXtpZighYygpKXRocm93IG5ldyBFcnJvcigiQnVmZmVyIGdsb2JhbCBkb2VzIG5vdCBleGlzdDsgcGxlYXNlIHVzZSB3ZWJwYWNrIGlmIHlvdSBuZWVkIHRvIHBhcnNlIEJ1ZmZlcnMgaW4gdGhlIGJyb3dzZXIuIil9ZnVuY3Rpb24gbChuKXtzKCk7dmFyIHQ9aShmdW5jdGlvbihuLHQpe3JldHVybiBuK3R9LDAsbik7aWYodCU4IT0wKXRocm93IG5ldyBFcnJvcigiVGhlIGJpdHMgWyIrbi5qb2luKCIsICIpKyJdIGFkZCB1cCB0byAiK3QrIiB3aGljaCBpcyBub3QgYW4gZXZlbiBudW1iZXIgb2YgYnl0ZXM7IHRoZSB0b3RhbCBzaG91bGQgYmUgZGl2aXNpYmxlIGJ5IDgiKTt2YXIgcix1PXQvOCxvPShyPWZ1bmN0aW9uKG4pe3JldHVybiBuPjQ4fSxpKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG58fChyKHQpP3Q6bil9LG51bGwsbikpO2lmKG8pdGhyb3cgbmV3IEVycm9yKG8rIiBiaXQgcmFuZ2UgcmVxdWVzdGVkIGV4Y2VlZHMgNDggYml0ICg2IGJ5dGUpIE51bWJlciBtYXguIik7cmV0dXJuIG5ldyBlKGZ1bmN0aW9uKHQscil7dmFyIGU9dStyO3JldHVybiBlPnQubGVuZ3RoP3gocix1LnRvU3RyaW5nKCkrIiBieXRlcyIpOmIoZSxpKGZ1bmN0aW9uKG4sdCl7dmFyIHI9Zih0LG4uYnVmKTtyZXR1cm4ge2NvbGw6bi5jb2xsLmNvbmNhdChyLnYpLGJ1ZjpyLmJ1Zn19LHtjb2xsOltdLGJ1Zjp0LnNsaWNlKHIsZSl9LG4pLmNvbGwpfSl9ZnVuY3Rpb24gaChuLHQpe3JldHVybiBuZXcgZShmdW5jdGlvbihyLGUpe3JldHVybiBzKCksZSt0PnIubGVuZ3RoP3goZSx0KyIgYnl0ZXMgZm9yICIrbik6YihlK3Qsci5zbGljZShlLGUrdCkpfSl9ZnVuY3Rpb24gcChuLHQpe2lmKCJudW1iZXIiIT10eXBlb2Yocj10KXx8TWF0aC5mbG9vcihyKSE9PXJ8fHQ8MHx8dD42KXRocm93IG5ldyBFcnJvcihuKyIgcmVxdWlyZXMgaW50ZWdlciBsZW5ndGggaW4gcmFuZ2UgWzAsIDZdLiIpO3ZhciByO31mdW5jdGlvbiBkKG4pe3JldHVybiBwKCJ1aW50QkUiLG4pLGgoInVpbnRCRSgiK24rIikiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkVUludEJFKDAsbil9KX1mdW5jdGlvbiB2KG4pe3JldHVybiBwKCJ1aW50TEUiLG4pLGgoInVpbnRMRSgiK24rIikiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkVUludExFKDAsbil9KX1mdW5jdGlvbiBnKG4pe3JldHVybiBwKCJpbnRCRSIsbiksaCgiaW50QkUoIituKyIpIixuKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVhZEludEJFKDAsbil9KX1mdW5jdGlvbiBtKG4pe3JldHVybiBwKCJpbnRMRSIsbiksaCgiaW50TEUoIituKyIpIixuKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVhZEludExFKDAsbil9KX1mdW5jdGlvbiB5KG4pe3JldHVybiBuIGluc3RhbmNlb2YgZX1mdW5jdGlvbiBFKG4pe3JldHVybiAiW29iamVjdCBBcnJheV0iPT09e30udG9TdHJpbmcuY2FsbChuKX1mdW5jdGlvbiB3KG4pe3JldHVybiBjKCkmJkJ1ZmZlci5pc0J1ZmZlcihuKX1mdW5jdGlvbiBiKG4sdCl7cmV0dXJuIHtzdGF0dXM6ITAsaW5kZXg6bix2YWx1ZTp0LGZ1cnRoZXN0Oi0xLGV4cGVjdGVkOltdfX1mdW5jdGlvbiB4KG4sdCl7cmV0dXJuIEUodCl8fCh0PVt0XSkse3N0YXR1czohMSxpbmRleDotMSx2YWx1ZTpudWxsLGZ1cnRoZXN0Om4sZXhwZWN0ZWQ6dH19ZnVuY3Rpb24gQihuLHQpe2lmKCF0KXJldHVybiBuO2lmKG4uZnVydGhlc3Q+dC5mdXJ0aGVzdClyZXR1cm4gbjt2YXIgcj1uLmZ1cnRoZXN0PT09dC5mdXJ0aGVzdD9mdW5jdGlvbihuLHQpe2lmKGZ1bmN0aW9uKCl7aWYodm9pZCAwIT09ZS5fc3VwcG9ydHNTZXQpcmV0dXJuIGUuX3N1cHBvcnRzU2V0O3ZhciBuPSJ1bmRlZmluZWQiIT10eXBlb2YgU2V0O3JldHVybiBlLl9zdXBwb3J0c1NldD1uLG59KCkmJkFycmF5LmZyb20pe2Zvcih2YXIgcj1uZXcgU2V0KG4pLHU9MDt1PHQubGVuZ3RoO3UrKylyLmFkZCh0W3VdKTt2YXIgbz1BcnJheS5mcm9tKHIpO3JldHVybiBvLnNvcnQoKSxvfWZvcih2YXIgaT17fSxhPTA7YTxuLmxlbmd0aDthKyspaVtuW2FdXT0hMDtmb3IodmFyIGY9MDtmPHQubGVuZ3RoO2YrKylpW3RbZl1dPSEwO3ZhciBjPVtdO2Zvcih2YXIgcyBpbiBpKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChpLHMpJiZjLnB1c2gocyk7cmV0dXJuIGMuc29ydCgpLGN9KG4uZXhwZWN0ZWQsdC5leHBlY3RlZCk6dC5leHBlY3RlZDtyZXR1cm4ge3N0YXR1czpuLnN0YXR1cyxpbmRleDpuLmluZGV4LHZhbHVlOm4udmFsdWUsZnVydGhlc3Q6dC5mdXJ0aGVzdCxleHBlY3RlZDpyfX12YXIgaj17fTtmdW5jdGlvbiBTKG4sdCl7aWYodyhuKSlyZXR1cm4ge29mZnNldDp0LGxpbmU6LTEsY29sdW1uOi0xfTtuIGluIGp8fChqW25dPXt9KTtmb3IodmFyIHI9altuXSxlPTAsdT0wLG89MCxpPXQ7aT49MDspe2lmKGkgaW4gcil7ZT1yW2ldLmxpbmUsMD09PW8mJihvPXJbaV0ubGluZVN0YXJ0KTticmVha30oIlxuIj09PW4uY2hhckF0KGkpfHwiXHIiPT09bi5jaGFyQXQoaSkmJiJcbiIhPT1uLmNoYXJBdChpKzEpKSYmKHUrKywwPT09byYmKG89aSsxKSksaS0tO312YXIgYT1lK3UsZj10LW87cmV0dXJuIHJbdF09e2xpbmU6YSxsaW5lU3RhcnQ6b30se29mZnNldDp0LGxpbmU6YSsxLGNvbHVtbjpmKzF9fWZ1bmN0aW9uIF8obil7aWYoIXkobikpdGhyb3cgbmV3IEVycm9yKCJub3QgYSBwYXJzZXI6ICIrbil9ZnVuY3Rpb24gTChuLHQpe3JldHVybiAic3RyaW5nIj09dHlwZW9mIG4/bi5jaGFyQXQodCk6blt0XX1mdW5jdGlvbiBPKG4pe2lmKCJudW1iZXIiIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIG51bWJlcjogIituKX1mdW5jdGlvbiBrKG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcigibm90IGEgZnVuY3Rpb246ICIrbil9ZnVuY3Rpb24gUChuKXtpZigic3RyaW5nIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKCJub3QgYSBzdHJpbmc6ICIrbil9dmFyIHE9MixBPTMsST04LEY9NSpJLE09NCpJLHo9IiAgIjtmdW5jdGlvbiBSKG4sdCl7cmV0dXJuIG5ldyBBcnJheSh0KzEpLmpvaW4obil9ZnVuY3Rpb24gVShuLHQscil7dmFyIGU9dC1uLmxlbmd0aDtyZXR1cm4gZTw9MD9uOlIocixlKStufWZ1bmN0aW9uIFcobix0LHIsZSl7cmV0dXJuIHtmcm9tOm4tdD4wP24tdDowLHRvOm4rcj5lP2U6bityfX1mdW5jdGlvbiBEKG4sdCl7dmFyIHIsZSx1LG8sZixjPXQuaW5kZXgscz1jLm9mZnNldCxsPTE7aWYocz09PW4ubGVuZ3RoKXJldHVybiAiR290IHRoZSBlbmQgb2YgdGhlIGlucHV0IjtpZih3KG4pKXt2YXIgaD1zLXMlSSxwPXMtaCxkPVcoaCxGLE0rSSxuLmxlbmd0aCksdj1hKGZ1bmN0aW9uKG4pe3JldHVybiBhKGZ1bmN0aW9uKG4pe3JldHVybiBVKG4udG9TdHJpbmcoMTYpLDIsIjAiKX0sbil9LGZ1bmN0aW9uKG4sdCl7dmFyIHI9bi5sZW5ndGgsZT1bXSx1PTA7aWYocjw9dClyZXR1cm4gW24uc2xpY2UoKV07Zm9yKHZhciBvPTA7bzxyO28rKyllW3VdfHxlLnB1c2goW10pLGVbdV0ucHVzaChuW29dKSwobysxKSV0PT0wJiZ1Kys7cmV0dXJuIGV9KG4uc2xpY2UoZC5mcm9tLGQudG8pLnRvSlNPTigpLmRhdGEsSSkpO289ZnVuY3Rpb24obil7cmV0dXJuIDA9PT1uLmZyb20mJjE9PT1uLnRvP3tmcm9tOm4uZnJvbSx0bzpuLnRvfTp7ZnJvbTpuLmZyb20vSSx0bzpNYXRoLmZsb29yKG4udG8vSSl9fShkKSxlPWgvSSxyPTMqcCxwPj00JiYocis9MSksbD0yLHU9YShmdW5jdGlvbihuKXtyZXR1cm4gbi5sZW5ndGg8PTQ/bi5qb2luKCIgIik6bi5zbGljZSgwLDQpLmpvaW4oIiAiKSsiICAiK24uc2xpY2UoNCkuam9pbigiICIpfSx2KSwoZj0oOCooby50bz4wP28udG8tMTpvLnRvKSkudG9TdHJpbmcoMTYpLmxlbmd0aCk8MiYmKGY9Mik7fWVsc2Uge3ZhciBnPW4uc3BsaXQoL1xyXG58W1xuXHJcdTIwMjhcdTIwMjldLyk7cj1jLmNvbHVtbi0xLGU9Yy5saW5lLTEsbz1XKGUscSxBLGcubGVuZ3RoKSx1PWcuc2xpY2Uoby5mcm9tLG8udG8pLGY9by50by50b1N0cmluZygpLmxlbmd0aDt9dmFyIG09ZS1vLmZyb207cmV0dXJuIHcobikmJihmPSg4KihvLnRvPjA/by50by0xOm8udG8pKS50b1N0cmluZygxNikubGVuZ3RoKTwyJiYoZj0yKSxpKGZ1bmN0aW9uKHQsZSx1KXt2YXIgaSxhPXU9PT1tLGM9YT8iPiAiOno7cmV0dXJuIGk9dyhuKT9VKCg4KihvLmZyb20rdSkpLnRvU3RyaW5nKDE2KSxmLCIwIik6VSgoby5mcm9tK3UrMSkudG9TdHJpbmcoKSxmLCIgIiksW10uY29uY2F0KHQsW2MraSsiIHwgIitlXSxhP1t6K1IoIiAiLGYpKyIgfCAiK1UoIiIsciwiICIpK1IoIl4iLGwpXTpbXSl9LFtdLHUpLmpvaW4oIlxuIil9ZnVuY3Rpb24gTihuLHQpe3JldHVybiBbIlxuIiwiLS0gUEFSU0lORyBGQUlMRUQgIitSKCItIiw1MCksIlxuXG4iLEQobix0KSwiXG5cbiIsKHI9dC5leHBlY3RlZCwxPT09ci5sZW5ndGg/IkV4cGVjdGVkOlxuXG4iK3JbMF06IkV4cGVjdGVkIG9uZSBvZiB0aGUgZm9sbG93aW5nOiBcblxuIityLmpvaW4oIiwgIikpLCJcbiJdLmpvaW4oIiIpO3ZhciByO31mdW5jdGlvbiBHKG4pe3JldHVybiB2b2lkIDAhPT1uLmZsYWdzP24uZmxhZ3M6W24uZ2xvYmFsPyJnIjoiIixuLmlnbm9yZUNhc2U/ImkiOiIiLG4ubXVsdGlsaW5lPyJtIjoiIixuLnVuaWNvZGU/InUiOiIiLG4uc3RpY2t5PyJ5IjoiIl0uam9pbigiIil9ZnVuY3Rpb24gQygpe2Zvcih2YXIgbj1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyksdD1uLmxlbmd0aCxyPTA7cjx0O3IrPTEpXyhuW3JdKTtyZXR1cm4gZShmdW5jdGlvbihyLGUpe2Zvcih2YXIgdSxvPW5ldyBBcnJheSh0KSxpPTA7aTx0O2krPTEpe2lmKCEodT1CKG5baV0uXyhyLGUpLHUpKS5zdGF0dXMpcmV0dXJuIHU7b1tpXT11LnZhbHVlLGU9dS5pbmRleDt9cmV0dXJuIEIoYihlLG8pLHUpfSl9ZnVuY3Rpb24gSigpe3ZhciBuPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtpZigwPT09bi5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJzZXFNYXAgbmVlZHMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50Iik7dmFyIHQ9bi5wb3AoKTtyZXR1cm4gayh0KSxDLmFwcGx5KG51bGwsbikubWFwKGZ1bmN0aW9uKG4pe3JldHVybiB0LmFwcGx5KG51bGwsbil9KX1mdW5jdGlvbiBUKCl7dmFyIG49W10uc2xpY2UuY2FsbChhcmd1bWVudHMpLHQ9bi5sZW5ndGg7aWYoMD09PXQpcmV0dXJuIFkoInplcm8gYWx0ZXJuYXRlcyIpO2Zvcih2YXIgcj0wO3I8dDtyKz0xKV8obltyXSk7cmV0dXJuIGUoZnVuY3Rpb24odCxyKXtmb3IodmFyIGUsdT0wO3U8bi5sZW5ndGg7dSs9MSlpZigoZT1CKG5bdV0uXyh0LHIpLGUpKS5zdGF0dXMpcmV0dXJuIGU7cmV0dXJuIGV9KX1mdW5jdGlvbiBWKG4sdCl7cmV0dXJuIEgobix0KS5vcihYKFtdKSl9ZnVuY3Rpb24gSChuLHQpe3JldHVybiBfKG4pLF8odCksSihuLHQudGhlbihuKS5tYW55KCksZnVuY3Rpb24obix0KXtyZXR1cm4gW25dLmNvbmNhdCh0KX0pfWZ1bmN0aW9uIEsobil7UChuKTt2YXIgdD0iJyIrbisiJyI7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT1lK24ubGVuZ3RoLG89ci5zbGljZShlLHUpO3JldHVybiBvPT09bj9iKHUsbyk6eChlLHQpfSl9ZnVuY3Rpb24gUShuLHQpeyFmdW5jdGlvbihuKXtpZighKG4gaW5zdGFuY2VvZiBSZWdFeHApKXRocm93IG5ldyBFcnJvcigibm90IGEgcmVnZXhwOiAiK24pO2Zvcih2YXIgdD1HKG4pLHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGU9dC5jaGFyQXQocik7aWYoImkiIT09ZSYmIm0iIT09ZSYmInUiIT09ZSYmInMiIT09ZSl0aHJvdyBuZXcgRXJyb3IoJ3Vuc3VwcG9ydGVkIHJlZ2V4cCBmbGFnICInK2UrJyI6ICcrbil9fShuKSxhcmd1bWVudHMubGVuZ3RoPj0yP08odCk6dD0wO3ZhciByPWZ1bmN0aW9uKG4pe3JldHVybiBSZWdFeHAoIl4oPzoiK24uc291cmNlKyIpIixHKG4pKX0obiksdT0iIituO3JldHVybiBlKGZ1bmN0aW9uKG4sZSl7dmFyIG89ci5leGVjKG4uc2xpY2UoZSkpO2lmKG8pe2lmKDA8PXQmJnQ8PW8ubGVuZ3RoKXt2YXIgaT1vWzBdLGE9b1t0XTtyZXR1cm4gYihlK2kubGVuZ3RoLGEpfXJldHVybiB4KGUsInZhbGlkIG1hdGNoIGdyb3VwICgwIHRvICIrby5sZW5ndGgrIikgaW4gIit1KX1yZXR1cm4geChlLHUpfSl9ZnVuY3Rpb24gWChuKXtyZXR1cm4gZShmdW5jdGlvbih0LHIpe3JldHVybiBiKHIsbil9KX1mdW5jdGlvbiBZKG4pe3JldHVybiBlKGZ1bmN0aW9uKHQscil7cmV0dXJuIHgocixuKX0pfWZ1bmN0aW9uIFoobil7aWYoeShuKSlyZXR1cm4gZShmdW5jdGlvbih0LHIpe3ZhciBlPW4uXyh0LHIpO3JldHVybiBlLmluZGV4PXIsZS52YWx1ZT0iIixlfSk7aWYoInN0cmluZyI9PXR5cGVvZiBuKXJldHVybiBaKEsobikpO2lmKG4gaW5zdGFuY2VvZiBSZWdFeHApcmV0dXJuIFooUShuKSk7dGhyb3cgbmV3IEVycm9yKCJub3QgYSBzdHJpbmcsIHJlZ2V4cCwgb3IgcGFyc2VyOiAiK24pfWZ1bmN0aW9uICQobil7cmV0dXJuIF8obiksZShmdW5jdGlvbih0LHIpe3ZhciBlPW4uXyh0LHIpLHU9dC5zbGljZShyLGUuaW5kZXgpO3JldHVybiBlLnN0YXR1cz94KHIsJ25vdCAiJyt1KyciJyk6YihyLG51bGwpfSl9ZnVuY3Rpb24gbm4obil7cmV0dXJuIGsobiksZShmdW5jdGlvbih0LHIpe3ZhciBlPUwodCxyKTtyZXR1cm4gcjx0Lmxlbmd0aCYmbihlKT9iKHIrMSxlKTp4KHIsImEgY2hhcmFjdGVyL2J5dGUgbWF0Y2hpbmcgIituKX0pfWZ1bmN0aW9uIHRuKG4sdCl7YXJndW1lbnRzLmxlbmd0aDwyJiYodD1uLG49dm9pZCAwKTt2YXIgcj1lKGZ1bmN0aW9uKG4sZSl7cmV0dXJuIHIuXz10KCkuXyxyLl8obixlKX0pO3JldHVybiBuP3IuZGVzYyhuKTpyfWZ1bmN0aW9uIHJuKCl7cmV0dXJuIFkoImZhbnRhc3ktbGFuZC9lbXB0eSIpfXUucGFyc2U9ZnVuY3Rpb24obil7aWYoInN0cmluZyIhPXR5cGVvZiBuJiYhdyhuKSl0aHJvdyBuZXcgRXJyb3IoIi5wYXJzZSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgc3RyaW5nIG9yIEJ1ZmZlciBhcyBpdHMgYXJndW1lbnQiKTt2YXIgdCxyPXRoaXMuc2tpcChhbikuXyhuLDApO3JldHVybiB0PXIuc3RhdHVzP3tzdGF0dXM6ITAsdmFsdWU6ci52YWx1ZX06e3N0YXR1czohMSxpbmRleDpTKG4sci5mdXJ0aGVzdCksZXhwZWN0ZWQ6ci5leHBlY3RlZH0sZGVsZXRlIGpbbl0sdH0sdS50cnlQYXJzZT1mdW5jdGlvbihuKXt2YXIgdD10aGlzLnBhcnNlKG4pO2lmKHQuc3RhdHVzKXJldHVybiB0LnZhbHVlO3ZhciByPU4obix0KSxlPW5ldyBFcnJvcihyKTt0aHJvdyBlLnR5cGU9IlBhcnNpbW1vbkVycm9yIixlLnJlc3VsdD10LGV9LHUuYXNzZXJ0PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIHRoaXMuY2hhaW4oZnVuY3Rpb24ocil7cmV0dXJuIG4ocik/WChyKTpZKHQpfSl9LHUub3I9ZnVuY3Rpb24obil7cmV0dXJuIFQodGhpcyxuKX0sdS50cmltPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLndyYXAobixuKX0sdS53cmFwPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIEoobix0aGlzLHQsZnVuY3Rpb24obix0KXtyZXR1cm4gdH0pfSx1LnRocnU9ZnVuY3Rpb24obil7cmV0dXJuIG4odGhpcyl9LHUudGhlbj1mdW5jdGlvbihuKXtyZXR1cm4gXyhuKSxDKHRoaXMsbikubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuWzFdfSl9LHUubWFueT1mdW5jdGlvbigpe3ZhciBuPXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9W10sdT12b2lkIDA7Oyl7aWYoISh1PUIobi5fKHQsciksdSkpLnN0YXR1cylyZXR1cm4gQihiKHIsZSksdSk7aWYocj09PXUuaW5kZXgpdGhyb3cgbmV3IEVycm9yKCJpbmZpbml0ZSBsb29wIGRldGVjdGVkIGluIC5tYW55KCkgcGFyc2VyIC0tLSBjYWxsaW5nIC5tYW55KCkgb24gYSBwYXJzZXIgd2hpY2ggY2FuIGFjY2VwdCB6ZXJvIGNoYXJhY3RlcnMgaXMgdXN1YWxseSB0aGUgY2F1c2UiKTtyPXUuaW5kZXgsZS5wdXNoKHUudmFsdWUpO319KX0sdS50aWVXaXRoPWZ1bmN0aW9uKG4pe3JldHVybiBQKG4pLHRoaXMubWFwKGZ1bmN0aW9uKHQpe2lmKGZ1bmN0aW9uKG4pe2lmKCFFKG4pKXRocm93IG5ldyBFcnJvcigibm90IGFuIGFycmF5OiAiK24pfSh0KSx0Lmxlbmd0aCl7UCh0WzBdKTtmb3IodmFyIHI9dFswXSxlPTE7ZTx0Lmxlbmd0aDtlKyspUCh0W2VdKSxyKz1uK3RbZV07cmV0dXJuIHJ9cmV0dXJuICIifSl9LHUudGllPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGllV2l0aCgiIil9LHUudGltZXM9ZnVuY3Rpb24obix0KXt2YXIgcj10aGlzO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDImJih0PW4pLE8obiksTyh0KSxlKGZ1bmN0aW9uKGUsdSl7Zm9yKHZhciBvPVtdLGk9dm9pZCAwLGE9dm9pZCAwLGY9MDtmPG47Zis9MSl7aWYoYT1CKGk9ci5fKGUsdSksYSksIWkuc3RhdHVzKXJldHVybiBhO3U9aS5pbmRleCxvLnB1c2goaS52YWx1ZSk7fWZvcig7Zjx0JiYoYT1CKGk9ci5fKGUsdSksYSksaS5zdGF0dXMpO2YrPTEpdT1pLmluZGV4LG8ucHVzaChpLnZhbHVlKTtyZXR1cm4gQihiKHUsbyksYSl9KX0sdS5yZXN1bHQ9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIG59KX0sdS5hdE1vc3Q9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMudGltZXMoMCxuKX0sdS5hdExlYXN0PWZ1bmN0aW9uKG4pe3JldHVybiBKKHRoaXMudGltZXMobiksdGhpcy5tYW55KCksZnVuY3Rpb24obix0KXtyZXR1cm4gbi5jb25jYXQodCl9KX0sdS5tYXA9ZnVuY3Rpb24obil7ayhuKTt2YXIgdD10aGlzO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9dC5fKHIsZSk7cmV0dXJuIHUuc3RhdHVzP0IoYih1LmluZGV4LG4odS52YWx1ZSkpLHUpOnV9KX0sdS5jb250cmFtYXA9ZnVuY3Rpb24obil7ayhuKTt2YXIgdD10aGlzO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9dC5wYXJzZShuKHIuc2xpY2UoZSkpKTtyZXR1cm4gdS5zdGF0dXM/YihlK3IubGVuZ3RoLHUudmFsdWUpOnV9KX0sdS5wcm9tYXA9ZnVuY3Rpb24obix0KXtyZXR1cm4gayhuKSxrKHQpLHRoaXMuY29udHJhbWFwKG4pLm1hcCh0KX0sdS5za2lwPWZ1bmN0aW9uKG4pe3JldHVybiBDKHRoaXMsbikubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuWzBdfSl9LHUubWFyaz1mdW5jdGlvbigpe3JldHVybiBKKGVuLHRoaXMsZW4sZnVuY3Rpb24obix0LHIpe3JldHVybiB7c3RhcnQ6bix2YWx1ZTp0LGVuZDpyfX0pfSx1Lm5vZGU9ZnVuY3Rpb24obil7cmV0dXJuIEooZW4sdGhpcyxlbixmdW5jdGlvbih0LHIsZSl7cmV0dXJuIHtuYW1lOm4sdmFsdWU6cixzdGFydDp0LGVuZDplfX0pfSx1LnNlcEJ5PWZ1bmN0aW9uKG4pe3JldHVybiBWKHRoaXMsbil9LHUuc2VwQnkxPWZ1bmN0aW9uKG4pe3JldHVybiBIKHRoaXMsbil9LHUubG9va2FoZWFkPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNraXAoWihuKSl9LHUubm90Rm9sbG93ZWRCeT1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5za2lwKCQobikpfSx1LmRlc2M9ZnVuY3Rpb24obil7RShuKXx8KG49W25dKTt2YXIgdD10aGlzO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9dC5fKHIsZSk7cmV0dXJuIHUuc3RhdHVzfHwodS5leHBlY3RlZD1uKSx1fSl9LHUuZmFsbGJhY2s9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMub3IoWChuKSl9LHUuYXA9ZnVuY3Rpb24obil7cmV0dXJuIEoobix0aGlzLGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4odCl9KX0sdS5jaGFpbj1mdW5jdGlvbihuKXt2YXIgdD10aGlzO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9dC5fKHIsZSk7cmV0dXJuIHUuc3RhdHVzP0Iobih1LnZhbHVlKS5fKHIsdS5pbmRleCksdSk6dX0pfSx1LmNvbmNhdD11Lm9yLHUuZW1wdHk9cm4sdS5vZj1YLHVbImZhbnRhc3ktbGFuZC9hcCJdPXUuYXAsdVsiZmFudGFzeS1sYW5kL2NoYWluIl09dS5jaGFpbix1WyJmYW50YXN5LWxhbmQvY29uY2F0Il09dS5jb25jYXQsdVsiZmFudGFzeS1sYW5kL2VtcHR5Il09dS5lbXB0eSx1WyJmYW50YXN5LWxhbmQvb2YiXT11Lm9mLHVbImZhbnRhc3ktbGFuZC9tYXAiXT11Lm1hcDt2YXIgZW49ZShmdW5jdGlvbihuLHQpe3JldHVybiBiKHQsUyhuLHQpKX0pLHVuPWUoZnVuY3Rpb24obix0KXtyZXR1cm4gdD49bi5sZW5ndGg/eCh0LCJhbnkgY2hhcmFjdGVyL2J5dGUiKTpiKHQrMSxMKG4sdCkpfSksb249ZShmdW5jdGlvbihuLHQpe3JldHVybiBiKG4ubGVuZ3RoLG4uc2xpY2UodCkpfSksYW49ZShmdW5jdGlvbihuLHQpe3JldHVybiB0PG4ubGVuZ3RoP3godCwiRU9GIik6Yih0LG51bGwpfSksZm49USgvWzAtOV0vKS5kZXNjKCJhIGRpZ2l0IiksY249USgvWzAtOV0qLykuZGVzYygib3B0aW9uYWwgZGlnaXRzIiksc249USgvW2Etel0vaSkuZGVzYygiYSBsZXR0ZXIiKSxsbj1RKC9bYS16XSovaSkuZGVzYygib3B0aW9uYWwgbGV0dGVycyIpLGhuPVEoL1xzKi8pLmRlc2MoIm9wdGlvbmFsIHdoaXRlc3BhY2UiKSxwbj1RKC9ccysvKS5kZXNjKCJ3aGl0ZXNwYWNlIiksZG49SygiXHIiKSx2bj1LKCJcbiIpLGduPUsoIlxyXG4iKSxtbj1UKGduLHZuLGRuKS5kZXNjKCJuZXdsaW5lIikseW49VChtbixhbik7ZS5hbGw9b24sZS5hbHQ9VCxlLmFueT11bixlLmNyPWRuLGUuY3JlYXRlTGFuZ3VhZ2U9ZnVuY3Rpb24obil7dmFyIHQ9e307Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJmZ1bmN0aW9uKHIpe3Rbcl09dG4oZnVuY3Rpb24oKXtyZXR1cm4gbltyXSh0KX0pO30ocik7cmV0dXJuIHR9LGUuY3JsZj1nbixlLmN1c3RvbT1mdW5jdGlvbihuKXtyZXR1cm4gZShuKGIseCkpfSxlLmRpZ2l0PWZuLGUuZGlnaXRzPWNuLGUuZW1wdHk9cm4sZS5lbmQ9eW4sZS5lb2Y9YW4sZS5mYWlsPVksZS5mb3JtYXRFcnJvcj1OLGUuaW5kZXg9ZW4sZS5pc1BhcnNlcj15LGUubGF6eT10bixlLmxldHRlcj1zbixlLmxldHRlcnM9bG4sZS5sZj12bixlLmxvb2thaGVhZD1aLGUubWFrZUZhaWx1cmU9eCxlLm1ha2VTdWNjZXNzPWIsZS5uZXdsaW5lPW1uLGUubm9uZU9mPWZ1bmN0aW9uKG4pe3JldHVybiBubihmdW5jdGlvbih0KXtyZXR1cm4gbi5pbmRleE9mKHQpPDB9KS5kZXNjKCJub25lIG9mICciK24rIiciKX0sZS5ub3RGb2xsb3dlZEJ5PSQsZS5vZj1YLGUub25lT2Y9ZnVuY3Rpb24obil7Zm9yKHZhciB0PW4uc3BsaXQoIiIpLHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdPSInIit0W3JdKyInIjtyZXR1cm4gbm4oZnVuY3Rpb24odCl7cmV0dXJuIG4uaW5kZXhPZih0KT49MH0pLmRlc2ModCl9LGUub3B0V2hpdGVzcGFjZT1obixlLlBhcnNlcj1lLGUucmFuZ2U9ZnVuY3Rpb24obix0KXtyZXR1cm4gbm4oZnVuY3Rpb24ocil7cmV0dXJuIG48PXImJnI8PXR9KS5kZXNjKG4rIi0iK3QpfSxlLnJlZ2V4PVEsZS5yZWdleHA9USxlLnNlcEJ5PVYsZS5zZXBCeTE9SCxlLnNlcT1DLGUuc2VxTWFwPUosZS5zZXFPYmo9ZnVuY3Rpb24oKXtmb3IodmFyIG4sdD17fSxyPTAsdT0obj1hcmd1bWVudHMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwobikpLG89dS5sZW5ndGgsaT0wO2k8bztpKz0xKXt2YXIgYT11W2ldO2lmKCF5KGEpKXtpZihFKGEpJiYyPT09YS5sZW5ndGgmJiJzdHJpbmciPT10eXBlb2YgYVswXSYmeShhWzFdKSl7dmFyIGY9YVswXTtpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxmKSl0aHJvdyBuZXcgRXJyb3IoInNlcU9iajogZHVwbGljYXRlIGtleSAiK2YpO3RbZl09ITAscisrO2NvbnRpbnVlfXRocm93IG5ldyBFcnJvcigic2VxT2JqIGFyZ3VtZW50cyBtdXN0IGJlIHBhcnNlcnMgb3IgW3N0cmluZywgcGFyc2VyXSBhcnJheSBwYWlycy4iKX19aWYoMD09PXIpdGhyb3cgbmV3IEVycm9yKCJzZXFPYmogZXhwZWN0cyBhdCBsZWFzdCBvbmUgbmFtZWQgcGFyc2VyLCBmb3VuZCB6ZXJvIik7cmV0dXJuIGUoZnVuY3Rpb24obix0KXtmb3IodmFyIHIsZT17fSxpPTA7aTxvO2krPTEpe3ZhciBhLGY7aWYoRSh1W2ldKT8oYT11W2ldWzBdLGY9dVtpXVsxXSk6KGE9bnVsbCxmPXVbaV0pLCEocj1CKGYuXyhuLHQpLHIpKS5zdGF0dXMpcmV0dXJuIHI7YSYmKGVbYV09ci52YWx1ZSksdD1yLmluZGV4O31yZXR1cm4gQihiKHQsZSkscil9KX0sZS5zdHJpbmc9SyxlLnN1Y2NlZWQ9WCxlLnRha2VXaGlsZT1mdW5jdGlvbihuKXtyZXR1cm4gayhuKSxlKGZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXI7ZTx0Lmxlbmd0aCYmbihMKHQsZSkpOyllKys7cmV0dXJuIGIoZSx0LnNsaWNlKHIsZSkpfSl9LGUudGVzdD1ubixlLndoaXRlc3BhY2U9cG4sZVsiZmFudGFzeS1sYW5kL2VtcHR5Il09cm4sZVsiZmFudGFzeS1sYW5kL29mIl09WCxlLkJpbmFyeT17Yml0U2VxOmwsYml0U2VxT2JqOmZ1bmN0aW9uKG4pe3MoKTt2YXIgdD17fSxyPTAsZT1hKGZ1bmN0aW9uKG4pe2lmKEUobikpe3ZhciBlPW47aWYoMiE9PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiWyIrZS5qb2luKCIsICIpKyJdIHNob3VsZCBiZSBsZW5ndGggMiwgZ290IGxlbmd0aCAiK2UubGVuZ3RoKTtpZihQKGVbMF0pLE8oZVsxXSksT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZVswXSkpdGhyb3cgbmV3IEVycm9yKCJkdXBsaWNhdGUga2V5IGluIGJpdFNlcU9iajogIitlWzBdKTtyZXR1cm4gdFtlWzBdXT0hMCxyKyssZX1yZXR1cm4gTyhuKSxbbnVsbCxuXX0sbik7aWYocjwxKXRocm93IG5ldyBFcnJvcigiYml0U2VxT2JqIGV4cGVjdHMgYXQgbGVhc3Qgb25lIG5hbWVkIHBhaXIsIGdvdCBbIituLmpvaW4oIiwgIikrIl0iKTt2YXIgdT1hKGZ1bmN0aW9uKG4pe3JldHVybiBuWzBdfSxlKTtyZXR1cm4gbChhKGZ1bmN0aW9uKG4pe3JldHVybiBuWzFdfSxlKSkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBpKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG51bGwhPT10WzBdJiYoblt0WzBdXT10WzFdKSxufSx7fSxhKGZ1bmN0aW9uKHQscil7cmV0dXJuIFt0LG5bcl1dfSx1KSl9KX0sYnl0ZTpmdW5jdGlvbihuKXtpZihzKCksTyhuKSxuPjI1NSl0aHJvdyBuZXcgRXJyb3IoIlZhbHVlIHNwZWNpZmllZCB0byBieXRlIGNvbnN0cnVjdG9yICgiK24rIj0weCIrbi50b1N0cmluZygxNikrIikgaXMgbGFyZ2VyIGluIHZhbHVlIHRoYW4gYSBzaW5nbGUgYnl0ZS4iKTt2YXIgdD0obj4xNT8iMHgiOiIweDAiKStuLnRvU3RyaW5nKDE2KTtyZXR1cm4gZShmdW5jdGlvbihyLGUpe3ZhciB1PUwocixlKTtyZXR1cm4gdT09PW4/YihlKzEsdSk6eChlLHQpfSl9LGJ1ZmZlcjpmdW5jdGlvbihuKXtyZXR1cm4gaCgiYnVmZmVyIixuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIEJ1ZmZlci5mcm9tKG4pfSl9LGVuY29kZWRTdHJpbmc6ZnVuY3Rpb24obix0KXtyZXR1cm4gaCgic3RyaW5nIix0KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQudG9TdHJpbmcobil9KX0sdWludEJFOmQsdWludDhCRTpkKDEpLHVpbnQxNkJFOmQoMiksdWludDMyQkU6ZCg0KSx1aW50TEU6dix1aW50OExFOnYoMSksdWludDE2TEU6digyKSx1aW50MzJMRTp2KDQpLGludEJFOmcsaW50OEJFOmcoMSksaW50MTZCRTpnKDIpLGludDMyQkU6Zyg0KSxpbnRMRTptLGludDhMRTptKDEpLGludDE2TEU6bSgyKSxpbnQzMkxFOm0oNCksZmxvYXRCRTpoKCJmbG9hdEJFIiw0KS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG4ucmVhZEZsb2F0QkUoMCl9KSxmbG9hdExFOmgoImZsb2F0TEUiLDQpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkRmxvYXRMRSgwKX0pLGRvdWJsZUJFOmgoImRvdWJsZUJFIiw4KS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG4ucmVhZERvdWJsZUJFKDApfSksZG91YmxlTEU6aCgiZG91YmxlTEUiLDgpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkRG91YmxlTEUoMCl9KX0sbi5leHBvcnRzPWU7fV0pfSk7IAogIH0gKHBhcnNpbW1vbl91bWRfbWluLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzKSk7CgogIHZhciBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMgPSBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzOwoKICB2YXIgZW1vamlSZWdleCA9ICgpID0+IHsKICAJLy8gaHR0cHM6Ly9tdGhzLmJlL2Vtb2ppCiAgCXJldHVybiAvWyMqMC05XVx1RkUwRj9cdTIwRTN8W1x4QTlceEFFXHUyMDNDXHUyMDQ5XHUyMTIyXHUyMTM5XHUyMTk0LVx1MjE5OVx1MjFBOVx1MjFBQVx1MjMxQVx1MjMxQlx1MjMyOFx1MjNDRlx1MjNFRC1cdTIzRUZcdTIzRjFcdTIzRjJcdTIzRjgtXHUyM0ZBXHUyNEMyXHUyNUFBXHUyNUFCXHUyNUI2XHUyNUMwXHUyNUZCXHUyNUZDXHUyNUZFXHUyNjAwLVx1MjYwNFx1MjYwRVx1MjYxMVx1MjYxNFx1MjYxNVx1MjYxOFx1MjYyMFx1MjYyMlx1MjYyM1x1MjYyNlx1MjYyQVx1MjYyRVx1MjYyRlx1MjYzOC1cdTI2M0FcdTI2NDBcdTI2NDJcdTI2NDgtXHUyNjUzXHUyNjVGXHUyNjYwXHUyNjYzXHUyNjY1XHUyNjY2XHUyNjY4XHUyNjdCXHUyNjdFXHUyNjdGXHUyNjkyXHUyNjk0LVx1MjY5N1x1MjY5OVx1MjY5Qlx1MjY5Q1x1MjZBMFx1MjZBN1x1MjZBQVx1MjZCMFx1MjZCMVx1MjZCRFx1MjZCRVx1MjZDNFx1MjZDOFx1MjZDRlx1MjZEMVx1MjZEM1x1MjZFOVx1MjZGMC1cdTI2RjVcdTI2RjdcdTI2RjhcdTI2RkFcdTI3MDJcdTI3MDhcdTI3MDlcdTI3MEZcdTI3MTJcdTI3MTRcdTI3MTZcdTI3MURcdTI3MjFcdTI3MzNcdTI3MzRcdTI3NDRcdTI3NDdcdTI3NTdcdTI3NjNcdTI3QTFcdTI5MzRcdTI5MzVcdTJCMDUtXHUyQjA3XHUyQjFCXHUyQjFDXHUyQjU1XHUzMDMwXHUzMDNEXHUzMjk3XHUzMjk5XVx1RkUwRj98W1x1MjYxRFx1MjcwQ1x1MjcwRF0oPzpcdUZFMEZ8XHVEODNDW1x1REZGQi1cdURGRkZdKT98W1x1MjcwQVx1MjcwQl0oPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xbXHUyM0U5LVx1MjNFQ1x1MjNGMFx1MjNGM1x1MjVGRFx1MjY5M1x1MjZBMVx1MjZBQlx1MjZDNVx1MjZDRVx1MjZENFx1MjZFQVx1MjZGRFx1MjcwNVx1MjcyOFx1Mjc0Q1x1Mjc0RVx1Mjc1My1cdTI3NTVcdTI3OTUtXHUyNzk3XHUyN0IwXHUyN0JGXHUyQjUwXXxcdTI2RjkoPzpcdUZFMEZ8XHVEODNDW1x1REZGQi1cdURGRkZdKT8oPzpcdTIwMERbXHUyNjQwXHUyNjQyXVx1RkUwRj8pP3xcdTI3NjRcdUZFMEY/KD86XHUyMDBEKD86XHVEODNEXHVERDI1fFx1RDgzRVx1REU3OSkpP3xcdUQ4M0MoPzpbXHVEQzA0XHVERDcwXHVERDcxXHVERDdFXHVERDdGXHVERTAyXHVERTM3XHVERjIxXHVERjI0LVx1REYyQ1x1REYzNlx1REY3RFx1REY5Nlx1REY5N1x1REY5OS1cdURGOUJcdURGOUVcdURGOUZcdURGQ0RcdURGQ0VcdURGRDQtXHVERkRGXHVERkY1XHVERkY3XVx1RkUwRj98W1x1REY4NVx1REZDMlx1REZDN10oPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xbXHVERkMzXHVERkM0XHVERkNBXSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/KD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98W1x1REZDQlx1REZDQ10oPzpcdUZFMEZ8XHVEODNDW1x1REZGQi1cdURGRkZdKT8oPzpcdTIwMERbXHUyNjQwXHUyNjQyXVx1RkUwRj8pP3xbXHVEQ0NGXHVERDhFXHVERDkxLVx1REQ5QVx1REUwMVx1REUxQVx1REUyRlx1REUzMi1cdURFMzZcdURFMzgtXHVERTNBXHVERTUwXHVERTUxXHVERjAwLVx1REYyMFx1REYyRC1cdURGMzVcdURGMzctXHVERjdDXHVERjdFLVx1REY4NFx1REY4Ni1cdURGOTNcdURGQTAtXHVERkMxXHVERkM1XHVERkM2XHVERkM4XHVERkM5XHVERkNGLVx1REZEM1x1REZFMC1cdURGRjBcdURGRjgtXHVERkZGXXxcdURERTZcdUQ4M0NbXHVEREU4LVx1RERFQ1x1RERFRVx1RERGMVx1RERGMlx1RERGNFx1RERGNi1cdURERkFcdURERkNcdURERkRcdURERkZdfFx1RERFN1x1RDgzQ1tcdURERTZcdURERTdcdURERTktXHVEREVGXHVEREYxLVx1RERGNFx1RERGNi1cdURERjlcdURERkJcdURERkNcdURERkVcdURERkZdfFx1RERFOFx1RDgzQ1tcdURERTZcdURERThcdURERTlcdURERUItXHVEREVFXHVEREYwLVx1RERGNVx1RERGN1x1RERGQS1cdURERkZdfFx1RERFOVx1RDgzQ1tcdURERUFcdURERUNcdURERUZcdURERjBcdURERjJcdURERjRcdURERkZdfFx1RERFQVx1RDgzQ1tcdURERTZcdURERThcdURERUFcdURERUNcdURERURcdURERjctXHVEREZBXXxcdURERUJcdUQ4M0NbXHVEREVFLVx1RERGMFx1RERGMlx1RERGNFx1RERGN118XHVEREVDXHVEODNDW1x1RERFNlx1RERFN1x1RERFOS1cdURERUVcdURERjEtXHVEREYzXHVEREY1LVx1RERGQVx1RERGQ1x1RERGRV18XHVEREVEXHVEODNDW1x1RERGMFx1RERGMlx1RERGM1x1RERGN1x1RERGOVx1RERGQV18XHVEREVFXHVEODNDW1x1RERFOC1cdURERUFcdURERjEtXHVEREY0XHVEREY2LVx1RERGOV18XHVEREVGXHVEODNDW1x1RERFQVx1RERGMlx1RERGNFx1RERGNV18XHVEREYwXHVEODNDW1x1RERFQVx1RERFQy1cdURERUVcdURERjJcdURERjNcdURERjVcdURERjdcdURERkNcdURERkVcdURERkZdfFx1RERGMVx1RDgzQ1tcdURERTYtXHVEREU4XHVEREVFXHVEREYwXHVEREY3LVx1RERGQlx1RERGRV18XHVEREYyXHVEODNDW1x1RERFNlx1RERFOC1cdURERURcdURERjAtXHVEREZGXXxcdURERjNcdUQ4M0NbXHVEREU2XHVEREU4XHVEREVBLVx1RERFQ1x1RERFRVx1RERGMVx1RERGNFx1RERGNVx1RERGN1x1RERGQVx1RERGRl18XHVEREY0XHVEODNDXHVEREYyfFx1RERGNVx1RDgzQ1tcdURERTZcdURERUEtXHVEREVEXHVEREYwLVx1RERGM1x1RERGNy1cdURERjlcdURERkNcdURERkVdfFx1RERGNlx1RDgzQ1x1RERFNnxcdURERjdcdUQ4M0NbXHVEREVBXHVEREY0XHVEREY4XHVEREZBXHVEREZDXXxcdURERjhcdUQ4M0NbXHVEREU2LVx1RERFQVx1RERFQy1cdURERjRcdURERjctXHVEREY5XHVEREZCXHVEREZELVx1RERGRl18XHVEREY5XHVEODNDW1x1RERFNlx1RERFOFx1RERFOVx1RERFQi1cdURERURcdURERUYtXHVEREY0XHVEREY3XHVEREY5XHVEREZCXHVEREZDXHVEREZGXXxcdURERkFcdUQ4M0NbXHVEREU2XHVEREVDXHVEREYyXHVEREYzXHVEREY4XHVEREZFXHVEREZGXXxcdURERkJcdUQ4M0NbXHVEREU2XHVEREU4XHVEREVBXHVEREVDXHVEREVFXHVEREYzXHVEREZBXXxcdURERkNcdUQ4M0NbXHVEREVCXHVEREY4XXxcdURERkRcdUQ4M0NcdURERjB8XHVEREZFXHVEODNDW1x1RERFQVx1RERGOV18XHVEREZGXHVEODNDW1x1RERFNlx1RERGMlx1RERGQ118XHVERkYzXHVGRTBGPyg/Olx1MjAwRCg/Olx1MjZBN1x1RkUwRj98XHVEODNDXHVERjA4KSk/fFx1REZGNCg/Olx1MjAwRFx1MjYyMFx1RkUwRj98XHVEQjQwXHVEQzY3XHVEQjQwXHVEQzYyXHVEQjQwKD86XHVEQzY1XHVEQjQwXHVEQzZFXHVEQjQwXHVEQzY3fFx1REM3M1x1REI0MFx1REM2M1x1REI0MFx1REM3NHxcdURDNzdcdURCNDBcdURDNkNcdURCNDBcdURDNzMpXHVEQjQwXHVEQzdGKT8pfFx1RDgzRCg/OltcdURDMDhcdURDMjZdKD86XHUyMDBEXHUyQjFCKT98W1x1REMzRlx1RENGRFx1REQ0OVx1REQ0QVx1REQ2Rlx1REQ3MFx1REQ3M1x1REQ3Ni1cdURENzlcdUREODdcdUREOEEtXHVERDhEXHVEREE1XHVEREE4XHVEREIxXHVEREIyXHVEREJDXHVEREMyLVx1RERDNFx1REREMS1cdURERDNcdUREREMtXHVERERFXHVEREUxXHVEREUzXHVEREU4XHVEREVGXHVEREYzXHVEREZBXHVERUNCXHVERUNELVx1REVDRlx1REVFMC1cdURFRTVcdURFRTlcdURFRjBcdURFRjNdXHVGRTBGP3xbXHVEQzQyXHVEQzQzXHVEQzQ2LVx1REM1MFx1REM2Nlx1REM2N1x1REM2Qi1cdURDNkRcdURDNzJcdURDNzQtXHVEQzc2XHVEQzc4XHVEQzdDXHVEQzgzXHVEQzg1XHVEQzhGXHVEQzkxXHVEQ0FBXHVERDdBXHVERDk1XHVERDk2XHVERTRDXHVERTRGXHVERUMwXHVERUNDXSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/fFtcdURDNkVcdURDNzBcdURDNzFcdURDNzNcdURDNzdcdURDODFcdURDODJcdURDODZcdURDODdcdURFNDUtXHVERTQ3XHVERTRCXHVERTREXHVERTRFXHVERUEzXHVERUI0LVx1REVCNl0oPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pPyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGPyk/fFtcdURENzRcdUREOTBdKD86XHVGRTBGfFx1RDgzQ1tcdURGRkItXHVERkZGXSk/fFtcdURDMDAtXHVEQzA3XHVEQzA5LVx1REMxNFx1REMxNi1cdURDMjVcdURDMjctXHVEQzNBXHVEQzNDLVx1REMzRVx1REM0MFx1REM0NFx1REM0NVx1REM1MS1cdURDNjVcdURDNkFcdURDNzktXHVEQzdCXHVEQzdELVx1REM4MFx1REM4NFx1REM4OC1cdURDOEVcdURDOTBcdURDOTItXHVEQ0E5XHVEQ0FCLVx1RENGQ1x1RENGRi1cdUREM0RcdURENEItXHVERDRFXHVERDUwLVx1REQ2N1x1RERBNFx1RERGQi1cdURFMkRcdURFMkYtXHVERTM0XHVERTM3LVx1REU0NFx1REU0OC1cdURFNEFcdURFODAtXHVERUEyXHVERUE0LVx1REVCM1x1REVCNy1cdURFQkZcdURFQzEtXHVERUM1XHVERUQwLVx1REVEMlx1REVENS1cdURFRDdcdURFREMtXHVERURGXHVERUVCXHVERUVDXHVERUY0LVx1REVGQ1x1REZFMC1cdURGRUJcdURGRjBdfFx1REMxNSg/Olx1MjAwRFx1RDgzRVx1RERCQSk/fFx1REMzQig/Olx1MjAwRFx1Mjc0NFx1RkUwRj8pP3xcdURDNDFcdUZFMEY/KD86XHUyMDBEXHVEODNEXHVEREU4XHVGRTBGPyk/fFx1REM2OCg/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86XHVEQzhCXHUyMDBEXHVEODNEKT9cdURDNjh8XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEKD86W1x1REM2OFx1REM2OV1cdTIwMERcdUQ4M0QoPzpcdURDNjYoPzpcdTIwMERcdUQ4M0RcdURDNjYpP3xcdURDNjcoPzpcdTIwMERcdUQ4M0RbXHVEQzY2XHVEQzY3XSk/KXxbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdURDNjYoPzpcdTIwMERcdUQ4M0RcdURDNjYpP3xcdURDNjcoPzpcdTIwMERcdUQ4M0RbXHVEQzY2XHVEQzY3XSk/KXxcdUQ4M0VbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF0pfFx1RDgzQyg/Olx1REZGQig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86XHVEQzhCXHUyMDBEXHVEODNEKT9cdURDNjhcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFx1REM2OFx1RDgzQ1tcdURGRkMtXHVERkZGXSkpKT98XHVERkZDKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpcdURDOEJcdTIwMERcdUQ4M0QpP1x1REM2OFx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEXHVEQzY4XHVEODNDW1x1REZGQlx1REZGRC1cdURGRkZdKSkpP3xcdURGRkQoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/Olx1REM4Qlx1MjAwRFx1RDgzRCk/XHVEQzY4XHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RcdURDNjhcdUQ4M0NbXHVERkZCXHVERkZDXHVERkZFXHVERkZGXSkpKT98XHVERkZFKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpcdURDOEJcdTIwMERcdUQ4M0QpP1x1REM2OFx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEXHVEQzY4XHVEODNDW1x1REZGQi1cdURGRkRcdURGRkZdKSkpP3xcdURGRkYoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/Olx1REM4Qlx1MjAwRFx1RDgzRCk/XHVEQzY4XHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RcdURDNjhcdUQ4M0NbXHVERkZCLVx1REZGRV0pKSk/KSk/fFx1REM2OSg/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86XHVEQzhCXHUyMDBEXHVEODNEKT9bXHVEQzY4XHVEQzY5XXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0QoPzpbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdURDNjYoPzpcdTIwMERcdUQ4M0RcdURDNjYpP3xcdURDNjcoPzpcdTIwMERcdUQ4M0RbXHVEQzY2XHVEQzY3XSk/fFx1REM2OVx1MjAwRFx1RDgzRCg/Olx1REM2Nig/Olx1MjAwRFx1RDgzRFx1REM2Nik/fFx1REM2Nyg/Olx1MjAwRFx1RDgzRFtcdURDNjZcdURDNjddKT8pKXxcdUQ4M0VbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF0pfFx1RDgzQyg/Olx1REZGQig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86W1x1REM2OFx1REM2OV18XHVEQzhCXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV0pXHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XVx1RDgzQ1tcdURGRkMtXHVERkZGXSkpKT98XHVERkZDKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpbXHVEQzY4XHVEQzY5XXxcdURDOEJcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XSlcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldXHVEODNDW1x1REZGQlx1REZGRC1cdURGRkZdKSkpP3xcdURGRkQoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/OltcdURDNjhcdURDNjldfFx1REM4Qlx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldKVx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV1cdUQ4M0NbXHVERkZCXHVERkZDXHVERkZFXHVERkZGXSkpKT98XHVERkZFKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpbXHVEQzY4XHVEQzY5XXxcdURDOEJcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XSlcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldXHVEODNDW1x1REZGQi1cdURGRkRcdURGRkZdKSkpP3xcdURGRkYoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/OltcdURDNjhcdURDNjldfFx1REM4Qlx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldKVx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV1cdUQ4M0NbXHVERkZCLVx1REZGRV0pKSk/KSk/fFx1REM2Rig/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGPyk/fFx1REQ3NSg/Olx1RkUwRnxcdUQ4M0NbXHVERkZCLVx1REZGRl0pPyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGPyk/fFx1REUyRSg/Olx1MjAwRFx1RDgzRFx1RENBOCk/fFx1REUzNSg/Olx1MjAwRFx1RDgzRFx1RENBQik/fFx1REUzNig/Olx1MjAwRFx1RDgzQ1x1REYyQlx1RkUwRj8pPyl8XHVEODNFKD86W1x1REQwQ1x1REQwRlx1REQxOC1cdUREMUZcdUREMzAtXHVERDM0XHVERDM2XHVERDc3XHVEREI1XHVEREI2XHVEREJCXHVEREQyXHVEREQzXHVEREQ1XHVERUMzLVx1REVDNVx1REVGMFx1REVGMi1cdURFRjhdKD86XHVEODNDW1x1REZGQi1cdURGRkZdKT98W1x1REQyNlx1REQzNVx1REQzNy1cdUREMzlcdUREM0RcdUREM0VcdUREQjhcdUREQjlcdUREQ0QtXHVERENGXHVEREQ0XHVEREQ2LVx1RERERF0oPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pPyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGPyk/fFtcdUREREVcdUREREZdKD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98W1x1REQwRFx1REQwRVx1REQxMC1cdUREMTdcdUREMjAtXHVERDI1XHVERDI3LVx1REQyRlx1REQzQVx1REQzRi1cdURENDVcdURENDctXHVERDc2XHVERDc4LVx1RERCNFx1RERCN1x1RERCQVx1RERCQy1cdUREQ0NcdURERDBcdURERTAtXHVEREZGXHVERTcwLVx1REU3Q1x1REU4MC1cdURFODhcdURFOTAtXHVERUJEXHVERUJGLVx1REVDMlx1REVDRS1cdURFREJcdURFRTAtXHVERUU4XXxcdUREM0MoPzpcdTIwMERbXHUyNjQwXHUyNjQyXVx1RkUwRj98XHVEODNDW1x1REZGQi1cdURGRkZdKT98XHVEREQxKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGODRcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0VcdURERDEpKXxcdUQ4M0MoPzpcdURGRkIoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/XHVEODNFXHVEREQxXHVEODNDW1x1REZGQy1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGODRcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0VcdURERDFcdUQ4M0NbXHVERkZCLVx1REZGRl0pKSk/fFx1REZGQyg/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEKT9cdUQ4M0VcdURERDFcdUQ4M0NbXHVERkZCXHVERkZELVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZGXSkpKT98XHVERkZEKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpP1x1RDgzRVx1REREMVx1RDgzQ1tcdURGRkJcdURGRkNcdURGRkVcdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGODRcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0VcdURERDFcdUQ4M0NbXHVERkZCLVx1REZGRl0pKSk/fFx1REZGRSg/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEKT9cdUQ4M0VcdURERDFcdUQ4M0NbXHVERkZCLVx1REZGRFx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZGXSkpKT98XHVERkZGKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpP1x1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZFXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjg0XHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkZdKSkpPykpP3xcdURFRjEoPzpcdUQ4M0MoPzpcdURGRkIoPzpcdTIwMERcdUQ4M0VcdURFRjJcdUQ4M0NbXHVERkZDLVx1REZGRl0pP3xcdURGRkMoPzpcdTIwMERcdUQ4M0VcdURFRjJcdUQ4M0NbXHVERkZCXHVERkZELVx1REZGRl0pP3xcdURGRkQoPzpcdTIwMERcdUQ4M0VcdURFRjJcdUQ4M0NbXHVERkZCXHVERkZDXHVERkZFXHVERkZGXSk/fFx1REZGRSg/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkItXHVERkZEXHVERkZGXSk/fFx1REZGRig/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkItXHVERkZFXSk/KSk/KS9nOwogIH07CgogIC8qKiBOb3JtYWxpemUgYSBkdXJhdGlvbiB0byBhbGwgb2YgdGhlIHByb3BlciB1bml0cy4gKi8KICBmdW5jdGlvbiBub3JtYWxpemVEdXJhdGlvbihkdXIpIHsKICAgICAgaWYgKGR1ciA9PT0gdW5kZWZpbmVkIHx8IGR1ciA9PT0gbnVsbCkKICAgICAgICAgIHJldHVybiBkdXI7CiAgICAgIHJldHVybiBkdXIuc2hpZnRUb0FsbCgpLm5vcm1hbGl6ZSgpOwogIH0KICAvKiogU3RyaXAgdGhlIHRpbWUgY29tcG9uZW50cyBvZiBhIGRhdGUgdGltZSBvYmplY3QuICovCiAgZnVuY3Rpb24gc3RyaXBUaW1lKGR0KSB7CiAgICAgIGlmIChkdCA9PT0gbnVsbCB8fCBkdCA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgcmV0dXJuIGR0OwogICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdCh7CiAgICAgICAgICB5ZWFyOiBkdC55ZWFyLAogICAgICAgICAgbW9udGg6IGR0Lm1vbnRoLAogICAgICAgICAgZGF5OiBkdC5kYXksCiAgICAgIH0pOwogIH0KICAvKiogVHJ5IHRvIGV4dHJhY3QgYSBZWVlZTU1ERCBkYXRlIGZyb20gYSBzdHJpbmcuICovCiAgZnVuY3Rpb24gZXh0cmFjdERhdGUoc3RyKSB7CiAgICAgIGxldCBkYXRlTWF0Y2ggPSAvKFxkezR9KS0oXGR7Mn0pLShcZHsyfSkvLmV4ZWMoc3RyKTsKICAgICAgaWYgKCFkYXRlTWF0Y2gpCiAgICAgICAgICBkYXRlTWF0Y2ggPSAvKFxkezR9KShcZHsyfSkoXGR7Mn0pLy5leGVjKHN0cik7CiAgICAgIGlmIChkYXRlTWF0Y2gpIHsKICAgICAgICAgIGxldCB5ZWFyID0gTnVtYmVyLnBhcnNlSW50KGRhdGVNYXRjaFsxXSk7CiAgICAgICAgICBsZXQgbW9udGggPSBOdW1iZXIucGFyc2VJbnQoZGF0ZU1hdGNoWzJdKTsKICAgICAgICAgIGxldCBkYXkgPSBOdW1iZXIucGFyc2VJbnQoZGF0ZU1hdGNoWzNdKTsKICAgICAgICAgIHJldHVybiBEYXRlVGltZS5mcm9tT2JqZWN0KHsgeWVhciwgbW9udGgsIGRheSB9KTsKICAgICAgfQogICAgICByZXR1cm4gdW5kZWZpbmVkOwogIH0KICAvKiogR2V0IHRoZSBmb2xkZXIgY29udGFpbmluZyB0aGUgZ2l2ZW4gcGF0aCAoaS5lLiwgbGlrZSBjb21wdXRpbmcgJ3BhdGgvLi4nKS4gKi8KICBmdW5jdGlvbiBnZXRQYXJlbnRGb2xkZXIocGF0aCkgewogICAgICByZXR1cm4gcGF0aC5zcGxpdCgiLyIpLnNsaWNlKDAsIC0xKS5qb2luKCIvIik7CiAgfQogIC8qKiBHZXQgdGhlICJ0aXRsZSIgZm9yIGEgZmlsZSwgYnkgc3RyaXBwaW5nIG90aGVyIHBhcnRzIG9mIHRoZSBwYXRoIGFzIHdlbGwgYXMgdGhlIGV4dGVuc2lvbi4gKi8KICBmdW5jdGlvbiBnZXRGaWxlVGl0bGUocGF0aCkgewogICAgICBpZiAocGF0aC5pbmNsdWRlcygiLyIpKQogICAgICAgICAgcGF0aCA9IHBhdGguc3Vic3RyaW5nKHBhdGgubGFzdEluZGV4T2YoIi8iKSArIDEpOwogICAgICBpZiAocGF0aC5lbmRzV2l0aCgiLm1kIikpCiAgICAgICAgICBwYXRoID0gcGF0aC5zdWJzdHJpbmcoMCwgcGF0aC5sZW5ndGggLSAzKTsKICAgICAgcmV0dXJuIHBhdGg7CiAgfQogIC8qKiBHZXQgdGhlIGV4dGVuc2lvbiBvZiBhIGZpbGUgZnJvbSB0aGUgZmlsZSBwYXRoLiAqLwogIGZ1bmN0aW9uIGdldEV4dGVuc2lvbihwYXRoKSB7CiAgICAgIGlmICghcGF0aC5pbmNsdWRlcygiLiIpKQogICAgICAgICAgcmV0dXJuICIiOwogICAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcocGF0aC5sYXN0SW5kZXhPZigiLiIpICsgMSk7CiAgfQogIC8qKiBQYXJzZSBhbGwgc3VidGFncyBvdXQgb2YgdGhlIGdpdmVuIHRhZy4gSS5lLiwgI2hlbGxvL2kvYW0gd291bGQgeWllbGQgWyNoZWxsby9pL2FtLCAjaGVsbG8vaSwgI2hlbGxvXS4gKi8KICBmdW5jdGlvbiBleHRyYWN0U3VidGFncyh0YWcpIHsKICAgICAgbGV0IHJlc3VsdCA9IFt0YWddOwogICAgICB3aGlsZSAodGFnLmluY2x1ZGVzKCIvIikpIHsKICAgICAgICAgIHRhZyA9IHRhZy5zdWJzdHJpbmcoMCwgdGFnLmxhc3RJbmRleE9mKCIvIikpOwogICAgICAgICAgcmVzdWx0LnB1c2godGFnKTsKICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0OwogIH0KICAvKiogQSBwYXJzaW1tb24gcGFyc2VyIHdoaWNoIGNhbm9uaWNhbGl6ZXMgdmFyaWFibGUgbmFtZXMgd2hpbGUgcHJvcGVybHkgcmVzcGVjdGluZyBlbW9qaS4gKi8KICBjb25zdCBWQVJfTkFNRV9DQU5PTklDQUxJWkVSID0gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXgobmV3IFJlZ0V4cChlbW9qaVJlZ2V4KCksICIiKSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleCgvWzAtOVxwe0xldHRlcn1fLV0rL3UpLm1hcChzdHIgPT4gc3RyLnRvTG9jYWxlTG93ZXJDYXNlKCkpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMud2hpdGVzcGFjZS5tYXAoXyA9PiAiLSIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYW55Lm1hcChfID0+ICIiKSkKICAgICAgLm1hbnkoKQogICAgICAubWFwKHJlc3VsdCA9PiByZXN1bHQuam9pbigiIikpOwogIC8qKiBDb252ZXJ0IGFuIGFyYml0cmFyeSB2YXJpYWJsZSBuYW1lIGludG8gc29tZXRoaW5nIEpTL3F1ZXJ5IGZyaWVuZGx5LiAqLwogIGZ1bmN0aW9uIGNhbm9uaWNhbGl6ZVZhck5hbWUobmFtZSkgewogICAgICByZXR1cm4gVkFSX05BTUVfQ0FOT05JQ0FMSVpFUi50cnlQYXJzZShuYW1lKTsKICB9CiAgY29uc3QgSEVBREVSX0NBTk9OSUNBTElaRVIgPSBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleChuZXcgUmVnRXhwKGVtb2ppUmVnZXgoKSwgIiIpKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4KC9bMC05XHB7TGV0dGVyfV8tXSsvdSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy53aGl0ZXNwYWNlLm1hcChfID0+ICIgIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbnkubWFwKF8gPT4gIiAiKSkKICAgICAgLm1hbnkoKQogICAgICAubWFwKHJlc3VsdCA9PiB7CiAgICAgIHJldHVybiByZXN1bHQuam9pbigiIikuc3BsaXQoL1xzKy8pLmpvaW4oIiAiKS50cmltKCk7CiAgfSk7CiAgLyoqCiAgICogTm9ybWFsaXplcyB0aGUgdGV4dCBpbiBhIGhlYWRlciB0byBiZSBzb21ldGhpbmcgdGhhdCBpcyBhY3R1YWxseSBsaW5rYWJsZSB0by4gVGhpcyBtaW1pY3MKICAgKiBob3cgT2JzaWRpYW4gZG9lcyBpdCdzIG5vcm1hbGl6YXRpb24sIGNvbGxhcHNpbmcgcmVwZWF0ZWQgc3BhY2VzIGFuZCBzdHJpcHBpbmcgb3V0IGNvbnRyb2wgY2hhcmFjdGVycy4KICAgKi8KICBmdW5jdGlvbiBub3JtYWxpemVIZWFkZXJGb3JMaW5rKGhlYWRlcikgewogICAgICByZXR1cm4gSEVBREVSX0NBTk9OSUNBTElaRVIudHJ5UGFyc2UoaGVhZGVyKTsKICB9CiAgLyoqIFJlbmRlciBhIGR1cmF0aW9uIGluIGEgbWluaW1hbCBmb3JtYXQgdG8gc2F2ZSBzcGFjZS4gKi8KICBmdW5jdGlvbiByZW5kZXJNaW5pbWFsRHVyYXRpb24oZHVyKSB7CiAgICAgIGR1ciA9IG5vcm1hbGl6ZUR1cmF0aW9uKGR1cik7CiAgICAgIC8vIHRvSHVtYW4gb3V0cHV0cyB6ZXJvIHF1YW50aXRpZXMgZS5nLiAiMCBzZWNvbmRzIgogICAgICBkdXIgPSBEdXJhdGlvbi5mcm9tT2JqZWN0KE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhkdXIudG9PYmplY3QoKSkuZmlsdGVyKChbLCBxdWFudGl0eV0pID0+IHF1YW50aXR5ICE9IDApKSk7CiAgICAgIHJldHVybiBkdXIudG9IdW1hbigpOwogIH0KCiAgdmFyIFZhbHVlczsKICAoZnVuY3Rpb24gKFZhbHVlcykgewogICAgICAvKiogQ29udmVydCBhbiBhcmJpdHJhcnkgdmFsdWUgaW50byBhIHJlYXNvbmFibGUsIE1hcmtkb3duLWZyaWVuZGx5IHN0cmluZyBpZiBwb3NzaWJsZS4gKi8KICAgICAgZnVuY3Rpb24gdG9TdHJpbmcoZmllbGQsIHNldHRpbmcgPSBERUZBVUxUX1FVRVJZX1NFVFRJTkdTLCByZWN1cnNpdmUgPSBmYWxzZSkgewogICAgICAgICAgbGV0IHdyYXBwZWQgPSB3cmFwVmFsdWUoZmllbGQpOwogICAgICAgICAgaWYgKCF3cmFwcGVkKQogICAgICAgICAgICAgIHJldHVybiBzZXR0aW5nLnJlbmRlck51bGxBczsKICAgICAgICAgIHN3aXRjaCAod3JhcHBlZC50eXBlKSB7CiAgICAgICAgICAgICAgY2FzZSAibnVsbCI6CiAgICAgICAgICAgICAgICAgIHJldHVybiBzZXR0aW5nLnJlbmRlck51bGxBczsKICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZTsKICAgICAgICAgICAgICBjYXNlICJudW1iZXIiOgogICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOgogICAgICAgICAgICAgICAgICByZXR1cm4gIiIgKyB3cmFwcGVkLnZhbHVlOwogICAgICAgICAgICAgIGNhc2UgImh0bWwiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5vdXRlckhUTUw7CiAgICAgICAgICAgICAgY2FzZSAid2lkZ2V0IjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubWFya2Rvd24oKTsKICAgICAgICAgICAgICBjYXNlICJsaW5rIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubWFya2Rvd24oKTsKICAgICAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6CiAgICAgICAgICAgICAgICAgIHJldHVybiAiPGZ1bmN0aW9uPiI7CiAgICAgICAgICAgICAgY2FzZSAiYXJyYXkiOgogICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gIiI7CiAgICAgICAgICAgICAgICAgIGlmIChyZWN1cnNpdmUpCiAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIlsiOwogICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd3JhcHBlZC52YWx1ZS5tYXAoZiA9PiB0b1N0cmluZyhmLCBzZXR0aW5nLCB0cnVlKSkuam9pbigiLCAiKTsKICAgICAgICAgICAgICAgICAgaWYgKHJlY3Vyc2l2ZSkKICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiXSI7CiAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgY2FzZSAib2JqZWN0IjoKICAgICAgICAgICAgICAgICAgcmV0dXJuICgieyAiICsKICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHdyYXBwZWQudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChlID0+IGVbMF0gKyAiOiAiICsgdG9TdHJpbmcoZVsxXSwgc2V0dGluZywgdHJ1ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oIiwgIikgKwogICAgICAgICAgICAgICAgICAgICAgIiB9Iik7CiAgICAgICAgICAgICAgY2FzZSAiZGF0ZSI6CiAgICAgICAgICAgICAgICAgIGlmICh3cmFwcGVkLnZhbHVlLnNlY29uZCA9PSAwICYmIHdyYXBwZWQudmFsdWUuaG91ciA9PSAwICYmIHdyYXBwZWQudmFsdWUubWludXRlID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLnRvRm9ybWF0KHNldHRpbmcuZGVmYXVsdERhdGVGb3JtYXQpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLnRvRm9ybWF0KHNldHRpbmcuZGVmYXVsdERhdGVUaW1lRm9ybWF0KTsKICAgICAgICAgICAgICBjYXNlICJkdXJhdGlvbiI6CiAgICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJNaW5pbWFsRHVyYXRpb24od3JhcHBlZC52YWx1ZSk7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgVmFsdWVzLnRvU3RyaW5nID0gdG9TdHJpbmc7CiAgICAgIC8qKiBXcmFwIGEgbGl0ZXJhbCB2YWx1ZSBzbyB5b3UgY2FuIHN3aXRjaCBvbiBpdCBlYXNpbHkuICovCiAgICAgIGZ1bmN0aW9uIHdyYXBWYWx1ZSh2YWwpIHsKICAgICAgICAgIGlmIChpc051bGwodmFsKSkKICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAibnVsbCIsIHZhbHVlOiB2YWwgfTsKICAgICAgICAgIGVsc2UgaWYgKGlzTnVtYmVyKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogIm51bWJlciIsIHZhbHVlOiB2YWwgfTsKICAgICAgICAgIGVsc2UgaWYgKGlzU3RyaW5nKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogInN0cmluZyIsIHZhbHVlOiB2YWwgfTsKICAgICAgICAgIGVsc2UgaWYgKGlzQm9vbGVhbih2YWwpKQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJib29sZWFuIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNEdXJhdGlvbih2YWwpKQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJkdXJhdGlvbiIsIHZhbHVlOiB2YWwgfTsKICAgICAgICAgIGVsc2UgaWYgKGlzRGF0ZSh2YWwpKQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJkYXRlIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNXaWRnZXQodmFsKSkKICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAid2lkZ2V0IiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNBcnJheSh2YWwpKQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJhcnJheSIsIHZhbHVlOiB2YWwgfTsKICAgICAgICAgIGVsc2UgaWYgKGlzTGluayh2YWwpKQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsaW5rIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNGdW5jdGlvbih2YWwpKQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJmdW5jdGlvbiIsIHZhbHVlOiB2YWwgfTsKICAgICAgICAgIGVsc2UgaWYgKGlzSHRtbCh2YWwpKQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJodG1sIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNPYmplY3QodmFsKSkKICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAib2JqZWN0IiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgIH0KICAgICAgVmFsdWVzLndyYXBWYWx1ZSA9IHdyYXBWYWx1ZTsKICAgICAgLyoqIFJlY3Vyc2l2ZWx5IG1hcCBjb21wbGV4IG9iamVjdHMgYXQgdGhlIGxlYXZlcy4gKi8KICAgICAgZnVuY3Rpb24gbWFwTGVhdmVzKHZhbCwgZnVuYykgewogICAgICAgICAgaWYgKGlzT2JqZWN0KHZhbCkpIHsKICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0ge307CiAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhbCkpCiAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gbWFwTGVhdmVzKHZhbHVlLCBmdW5jKTsKICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAoaXNBcnJheSh2YWwpKSB7CiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IFtdOwogICAgICAgICAgICAgIGZvciAobGV0IHZhbHVlIG9mIHZhbCkKICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobWFwTGVhdmVzKHZhbHVlLCBmdW5jKSk7CiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHJldHVybiBmdW5jKHZhbCk7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgVmFsdWVzLm1hcExlYXZlcyA9IG1hcExlYXZlczsKICAgICAgLyoqIENvbXBhcmUgdHdvIGFyYml0cmFyeSBKYXZhU2NyaXB0IHZhbHVlcy4gUHJvZHVjZXMgYSB0b3RhbCBvcmRlcmluZyBvdmVyIEFOWSBwb3NzaWJsZSBkYXRhdmlldyB2YWx1ZS4gKi8KICAgICAgZnVuY3Rpb24gY29tcGFyZVZhbHVlKHZhbDEsIHZhbDIsIGxpbmtOb3JtYWxpemVyKSB7CiAgICAgICAgICB2YXIgX2EsIF9iOwogICAgICAgICAgLy8gSGFuZGxlIHVuZGVmaW5lZC9udWxscyBmaXJzdC4KICAgICAgICAgIGlmICh2YWwxID09PSB1bmRlZmluZWQpCiAgICAgICAgICAgICAgdmFsMSA9IG51bGw7CiAgICAgICAgICBpZiAodmFsMiA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgICAgIHZhbDIgPSBudWxsOwogICAgICAgICAgaWYgKHZhbDEgPT09IG51bGwgJiYgdmFsMiA9PT0gbnVsbCkKICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgIGVsc2UgaWYgKHZhbDEgPT09IG51bGwpCiAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgZWxzZSBpZiAodmFsMiA9PT0gbnVsbCkKICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgIC8vIEEgbm9uLW51bGwgdmFsdWUgbm93IHdoaWNoIHdlIGNhbiB3cmFwICYgY29tcGFyZSBvbi4KICAgICAgICAgIGxldCB3cmFwMSA9IHdyYXBWYWx1ZSh2YWwxKTsKICAgICAgICAgIGxldCB3cmFwMiA9IHdyYXBWYWx1ZSh2YWwyKTsKICAgICAgICAgIGlmICh3cmFwMSA9PT0gdW5kZWZpbmVkICYmIHdyYXAyID09PSB1bmRlZmluZWQpCiAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICBlbHNlIGlmICh3cmFwMSA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgIGVsc2UgaWYgKHdyYXAyID09PSB1bmRlZmluZWQpCiAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAvLyBTaG9ydC1jaXJjdWl0IG9uIGRpZmZlcmVudCB0eXBlcyBvciBvbiByZWZlcmVuY2UgZXF1YWxpdHkuCiAgICAgICAgICBpZiAod3JhcDEudHlwZSAhPSB3cmFwMi50eXBlKQogICAgICAgICAgICAgIHJldHVybiB3cmFwMS50eXBlLmxvY2FsZUNvbXBhcmUod3JhcDIudHlwZSk7CiAgICAgICAgICBpZiAod3JhcDEudmFsdWUgPT09IHdyYXAyLnZhbHVlKQogICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgc3dpdGNoICh3cmFwMS50eXBlKSB7CiAgICAgICAgICAgICAgY2FzZSAic3RyaW5nIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXAxLnZhbHVlLmxvY2FsZUNvbXBhcmUod3JhcDIudmFsdWUpOwogICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6CiAgICAgICAgICAgICAgICAgIGlmICh3cmFwMS52YWx1ZSA8IHdyYXAyLnZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgICBlbHNlIGlmICh3cmFwMS52YWx1ZSA9PSB3cmFwMi52YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICBjYXNlICJudWxsIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgY2FzZSAiYm9vbGVhbiI6CiAgICAgICAgICAgICAgICAgIGlmICh3cmFwMS52YWx1ZSA9PSB3cmFwMi52YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcDEudmFsdWUgPyAxIDogLTE7CiAgICAgICAgICAgICAgY2FzZSAibGluayI6CiAgICAgICAgICAgICAgICAgIGxldCBsaW5rMSA9IHdyYXAxLnZhbHVlOwogICAgICAgICAgICAgICAgICBsZXQgbGluazIgPSB3cmFwMi52YWx1ZTsKICAgICAgICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZSA9IGxpbmtOb3JtYWxpemVyICE9PSBudWxsICYmIGxpbmtOb3JtYWxpemVyICE9PSB2b2lkIDAgPyBsaW5rTm9ybWFsaXplciA6ICgoeCkgPT4geCk7CiAgICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IGNvbXBhcmUgYnkgZmlsZSBuYW1lIG9yIGRpc3BsYXksIHNpbmNlIHRoYXQgd291bGQgYnJlYWsgbGluayBlcXVhbGl0eS4gQ29tcGFyZSBieSBwYXRoLgogICAgICAgICAgICAgICAgICBsZXQgcGF0aENvbXBhcmUgPSBub3JtYWxpemUobGluazEucGF0aCkubG9jYWxlQ29tcGFyZShub3JtYWxpemUobGluazIucGF0aCkpOwogICAgICAgICAgICAgICAgICBpZiAocGF0aENvbXBhcmUgIT0gMCkKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXRoQ29tcGFyZTsKICAgICAgICAgICAgICAgICAgLy8gVGhlbiBjb21wYXJlIGJ5IHR5cGUuCiAgICAgICAgICAgICAgICAgIGxldCB0eXBlQ29tcGFyZSA9IGxpbmsxLnR5cGUubG9jYWxlQ29tcGFyZShsaW5rMi50eXBlKTsKICAgICAgICAgICAgICAgICAgaWYgKHR5cGVDb21wYXJlICE9IDApCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZUNvbXBhcmU7CiAgICAgICAgICAgICAgICAgIC8vIFRoZW4gY29tcGFyZSBieSBzdWJwYXRoIGV4aXN0ZW5jZS4KICAgICAgICAgICAgICAgICAgaWYgKGxpbmsxLnN1YnBhdGggJiYgIWxpbmsyLnN1YnBhdGgpCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICAgaWYgKCFsaW5rMS5zdWJwYXRoICYmIGxpbmsyLnN1YnBhdGgpCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgIGlmICghbGluazEuc3VicGF0aCAmJiAhbGluazIuc3VicGF0aCkKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgICAvLyBTaW5jZSBib3RoIGhhdmUgYSBzdWJwYXRoLCBjb21wYXJlIGJ5IHN1YnBhdGguCiAgICAgICAgICAgICAgICAgIHJldHVybiAoKF9hID0gbGluazEuc3VicGF0aCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogIiIpLmxvY2FsZUNvbXBhcmUoKF9iID0gbGluazIuc3VicGF0aCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogIiIpOwogICAgICAgICAgICAgIGNhc2UgImRhdGUiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcDEudmFsdWUgPCB3cmFwMi52YWx1ZQogICAgICAgICAgICAgICAgICAgICAgPyAtMQogICAgICAgICAgICAgICAgICAgICAgOiB3cmFwMS52YWx1ZS5lcXVhbHMod3JhcDIudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAxOwogICAgICAgICAgICAgIGNhc2UgImR1cmF0aW9uIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXAxLnZhbHVlIDwgd3JhcDIudmFsdWUKICAgICAgICAgICAgICAgICAgICAgID8gLTEKICAgICAgICAgICAgICAgICAgICAgIDogd3JhcDEudmFsdWUuZXF1YWxzKHdyYXAyLnZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICAgID8gMAogICAgICAgICAgICAgICAgICAgICAgICAgIDogMTsKICAgICAgICAgICAgICBjYXNlICJhcnJheSI6CiAgICAgICAgICAgICAgICAgIGxldCBmMSA9IHdyYXAxLnZhbHVlOwogICAgICAgICAgICAgICAgICBsZXQgZjIgPSB3cmFwMi52YWx1ZTsKICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IE1hdGgubWluKGYxLmxlbmd0aCwgZjIubGVuZ3RoKTsgaW5kZXgrKykgewogICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbXAgPSBjb21wYXJlVmFsdWUoZjFbaW5kZXhdLCBmMltpbmRleF0pOwogICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXAgIT0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICByZXR1cm4gZjEubGVuZ3RoIC0gZjIubGVuZ3RoOwogICAgICAgICAgICAgIGNhc2UgIm9iamVjdCI6CiAgICAgICAgICAgICAgICAgIGxldCBvMSA9IHdyYXAxLnZhbHVlOwogICAgICAgICAgICAgICAgICBsZXQgbzIgPSB3cmFwMi52YWx1ZTsKICAgICAgICAgICAgICAgICAgbGV0IGsxID0gQXJyYXkuZnJvbShPYmplY3Qua2V5cyhvMSkpOwogICAgICAgICAgICAgICAgICBsZXQgazIgPSBBcnJheS5mcm9tKE9iamVjdC5rZXlzKG8yKSk7CiAgICAgICAgICAgICAgICAgIGsxLnNvcnQoKTsKICAgICAgICAgICAgICAgICAgazIuc29ydCgpOwogICAgICAgICAgICAgICAgICBsZXQga2V5Q29tcGFyZSA9IGNvbXBhcmVWYWx1ZShrMSwgazIpOwogICAgICAgICAgICAgICAgICBpZiAoa2V5Q29tcGFyZSAhPSAwKQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleUNvbXBhcmU7CiAgICAgICAgICAgICAgICAgIGZvciAobGV0IGtleSBvZiBrMSkgewogICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbXAgPSBjb21wYXJlVmFsdWUobzFba2V5XSwgbzJba2V5XSk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcCAhPSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgIGNhc2UgIndpZGdldCI6CiAgICAgICAgICAgICAgY2FzZSAiaHRtbCI6CiAgICAgICAgICAgICAgY2FzZSAiZnVuY3Rpb24iOgogICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgIH0KICAgICAgfQogICAgICBWYWx1ZXMuY29tcGFyZVZhbHVlID0gY29tcGFyZVZhbHVlOwogICAgICAvKiogRmluZCB0aGUgY29ycmVzcG9uZGluZyBEYXRhdmVpdyB0eXBlIGZvciBhbiBhcmJpdHJhcnkgdmFsdWUuICovCiAgICAgIGZ1bmN0aW9uIHR5cGVPZih2YWwpIHsKICAgICAgICAgIHZhciBfYTsKICAgICAgICAgIHJldHVybiAoX2EgPSB3cmFwVmFsdWUodmFsKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnR5cGU7CiAgICAgIH0KICAgICAgVmFsdWVzLnR5cGVPZiA9IHR5cGVPZjsKICAgICAgLyoqIERldGVybWluZSBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgInRydXRoeSIgKGkuZS4sIGlzIG5vbi1udWxsIGFuZCBoYXMgZGF0YSBpbiBpdCkuICovCiAgICAgIGZ1bmN0aW9uIGlzVHJ1dGh5KGZpZWxkKSB7CiAgICAgICAgICBsZXQgd3JhcHBlZCA9IHdyYXBWYWx1ZShmaWVsZCk7CiAgICAgICAgICBpZiAoIXdyYXBwZWQpCiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgc3dpdGNoICh3cmFwcGVkLnR5cGUpIHsKICAgICAgICAgICAgICBjYXNlICJudW1iZXIiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZSAhPSAwOwogICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLmxlbmd0aCA+IDA7CiAgICAgICAgICAgICAgY2FzZSAiYm9vbGVhbiI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlOwogICAgICAgICAgICAgIGNhc2UgImxpbmsiOgogICAgICAgICAgICAgICAgICByZXR1cm4gISF3cmFwcGVkLnZhbHVlLnBhdGg7CiAgICAgICAgICAgICAgY2FzZSAiZGF0ZSI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLnRvTWlsbGlzKCkgIT0gMDsKICAgICAgICAgICAgICBjYXNlICJkdXJhdGlvbiI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLmFzKCJzZWNvbmRzIikgIT0gMDsKICAgICAgICAgICAgICBjYXNlICJvYmplY3QiOgogICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMod3JhcHBlZC52YWx1ZSkubGVuZ3RoID4gMDsKICAgICAgICAgICAgICBjYXNlICJhcnJheSI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLmxlbmd0aCA+IDA7CiAgICAgICAgICAgICAgY2FzZSAibnVsbCI6CiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICBjYXNlICJodG1sIjoKICAgICAgICAgICAgICBjYXNlICJ3aWRnZXQiOgogICAgICAgICAgICAgIGNhc2UgImZ1bmN0aW9uIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgVmFsdWVzLmlzVHJ1dGh5ID0gaXNUcnV0aHk7CiAgICAgIC8qKiBEZWVwIGNvcHkgYSBmaWVsZC4gKi8KICAgICAgZnVuY3Rpb24gZGVlcENvcHkoZmllbGQpIHsKICAgICAgICAgIGlmIChmaWVsZCA9PT0gbnVsbCB8fCBmaWVsZCA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgICAgIHJldHVybiBmaWVsZDsKICAgICAgICAgIGlmIChWYWx1ZXMuaXNBcnJheShmaWVsZCkpIHsKICAgICAgICAgICAgICByZXR1cm4gW10uY29uY2F0KGZpZWxkLm1hcCh2ID0+IGRlZXBDb3B5KHYpKSk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChWYWx1ZXMuaXNPYmplY3QoZmllbGQpKSB7CiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHt9OwogICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhmaWVsZCkpCiAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gZGVlcENvcHkodmFsdWUpOwogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gZmllbGQ7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgVmFsdWVzLmRlZXBDb3B5ID0gZGVlcENvcHk7CiAgICAgIGZ1bmN0aW9uIGlzU3RyaW5nKHZhbCkgewogICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gInN0cmluZyI7CiAgICAgIH0KICAgICAgVmFsdWVzLmlzU3RyaW5nID0gaXNTdHJpbmc7CiAgICAgIGZ1bmN0aW9uIGlzTnVtYmVyKHZhbCkgewogICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gIm51bWJlciI7CiAgICAgIH0KICAgICAgVmFsdWVzLmlzTnVtYmVyID0gaXNOdW1iZXI7CiAgICAgIGZ1bmN0aW9uIGlzRGF0ZSh2YWwpIHsKICAgICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBEYXRlVGltZTsKICAgICAgfQogICAgICBWYWx1ZXMuaXNEYXRlID0gaXNEYXRlOwogICAgICBmdW5jdGlvbiBpc0R1cmF0aW9uKHZhbCkgewogICAgICAgICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIER1cmF0aW9uOwogICAgICB9CiAgICAgIFZhbHVlcy5pc0R1cmF0aW9uID0gaXNEdXJhdGlvbjsKICAgICAgZnVuY3Rpb24gaXNOdWxsKHZhbCkgewogICAgICAgICAgcmV0dXJuIHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZDsKICAgICAgfQogICAgICBWYWx1ZXMuaXNOdWxsID0gaXNOdWxsOwogICAgICBmdW5jdGlvbiBpc0FycmF5KHZhbCkgewogICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsKTsKICAgICAgfQogICAgICBWYWx1ZXMuaXNBcnJheSA9IGlzQXJyYXk7CiAgICAgIGZ1bmN0aW9uIGlzQm9vbGVhbih2YWwpIHsKICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09PSAiYm9vbGVhbiI7CiAgICAgIH0KICAgICAgVmFsdWVzLmlzQm9vbGVhbiA9IGlzQm9vbGVhbjsKICAgICAgZnVuY3Rpb24gaXNMaW5rKHZhbCkgewogICAgICAgICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIExpbms7CiAgICAgIH0KICAgICAgVmFsdWVzLmlzTGluayA9IGlzTGluazsKICAgICAgZnVuY3Rpb24gaXNXaWRnZXQodmFsKSB7CiAgICAgICAgICByZXR1cm4gdmFsIGluc3RhbmNlb2YgV2lkZ2V0OwogICAgICB9CiAgICAgIFZhbHVlcy5pc1dpZGdldCA9IGlzV2lkZ2V0OwogICAgICBmdW5jdGlvbiBpc0h0bWwodmFsKSB7CiAgICAgICAgICBpZiAodHlwZW9mIEhUTUxFbGVtZW50ICE9PSAidW5kZWZpbmVkIikgewogICAgICAgICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBWYWx1ZXMuaXNIdG1sID0gaXNIdG1sOwogICAgICAvKiogQ2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhbiBvYmplY3QgKGFuZCBub3QgYW55IG90aGVyIGRhdGF2aWV3LXJlY29nbml6ZWQgb2JqZWN0LWxpa2UgdHlwZSkuICovCiAgICAgIGZ1bmN0aW9uIGlzT2JqZWN0KHZhbCkgewogICAgICAgICAgcmV0dXJuICh0eXBlb2YgdmFsID09ICJvYmplY3QiICYmCiAgICAgICAgICAgICAgIWlzSHRtbCh2YWwpICYmCiAgICAgICAgICAgICAgIWlzV2lkZ2V0KHZhbCkgJiYKICAgICAgICAgICAgICAhaXNBcnJheSh2YWwpICYmCiAgICAgICAgICAgICAgIWlzRHVyYXRpb24odmFsKSAmJgogICAgICAgICAgICAgICFpc0RhdGUodmFsKSAmJgogICAgICAgICAgICAgICFpc0xpbmsodmFsKSAmJgogICAgICAgICAgICAgIHZhbCAhPT0gdW5kZWZpbmVkICYmCiAgICAgICAgICAgICAgIWlzTnVsbCh2YWwpKTsKICAgICAgfQogICAgICBWYWx1ZXMuaXNPYmplY3QgPSBpc09iamVjdDsKICAgICAgZnVuY3Rpb24gaXNGdW5jdGlvbih2YWwpIHsKICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09ICJmdW5jdGlvbiI7CiAgICAgIH0KICAgICAgVmFsdWVzLmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uOwogIH0pKFZhbHVlcyB8fCAoVmFsdWVzID0ge30pKTsKICAvLy8vLy8vLy8vLy8vLy8KICAvLyBHcm91cGluZ3MgLy8KICAvLy8vLy8vLy8vLy8vLy8KICB2YXIgR3JvdXBpbmdzOwogIChmdW5jdGlvbiAoR3JvdXBpbmdzKSB7CiAgICAgIC8qKiBEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiBncm91cCBlbnRyeSBpcyBhIHN0YW5kYWxvbmUgdmFsdWUsIG9yIGEgZ3JvdXBpbmcgb2Ygc3ViLWVudHJpZXMuICovCiAgICAgIGZ1bmN0aW9uIGlzRWxlbWVudEdyb3VwKGVudHJ5KSB7CiAgICAgICAgICByZXR1cm4gVmFsdWVzLmlzT2JqZWN0KGVudHJ5KSAmJiBPYmplY3Qua2V5cyhlbnRyeSkubGVuZ3RoID09IDIgJiYgImtleSIgaW4gZW50cnkgJiYgInJvd3MiIGluIGVudHJ5OwogICAgICB9CiAgICAgIEdyb3VwaW5ncy5pc0VsZW1lbnRHcm91cCA9IGlzRWxlbWVudEdyb3VwOwogICAgICAvKiogRGV0ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4gYXJyYXkgaXMgYSBncm91cGluZyBhcnJheS4gKi8KICAgICAgZnVuY3Rpb24gaXNHcm91cGluZyhlbnRyeSkgewogICAgICAgICAgZm9yIChsZXQgZWxlbWVudCBvZiBlbnRyeSkKICAgICAgICAgICAgICBpZiAoIWlzRWxlbWVudEdyb3VwKGVsZW1lbnQpKQogICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfQogICAgICBHcm91cGluZ3MuaXNHcm91cGluZyA9IGlzR3JvdXBpbmc7CiAgICAgIC8qKiBDb3VudCB0aGUgdG90YWwgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgcmVjdXJzaXZlIGdyb3VwaW5nLiAqLwogICAgICBmdW5jdGlvbiBjb3VudChlbGVtZW50cykgewogICAgICAgICAgaWYgKGlzR3JvdXBpbmcoZWxlbWVudHMpKSB7CiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IDA7CiAgICAgICAgICAgICAgZm9yIChsZXQgc3ViZ3JvdXAgb2YgZWxlbWVudHMpCiAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBjb3VudChzdWJncm91cC5yb3dzKTsKICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzLmxlbmd0aDsKICAgICAgICAgIH0KICAgICAgfQogICAgICBHcm91cGluZ3MuY291bnQgPSBjb3VudDsKICB9KShHcm91cGluZ3MgfHwgKEdyb3VwaW5ncyA9IHt9KSk7CiAgLy8vLy8vLy8vLwogIC8vIExJTksgLy8KICAvLy8vLy8vLy8vCiAgLyoqIFRoZSBPYnNpZGlhbiAnbGluaycsIHVzZWQgZm9yIHVuaXF1ZWx5IGRlc2NyaWJpbmcgYSBmaWxlLCBoZWFkZXIsIG9yIGJsb2NrLiAqLwogIGNsYXNzIExpbmsgewogICAgICAvKiogQ3JlYXRlIGEgbGluayB0byBhIHNwZWNpZmljIGZpbGUuICovCiAgICAgIHN0YXRpYyBmaWxlKHBhdGgsIGVtYmVkID0gZmFsc2UsIGRpc3BsYXkpIHsKICAgICAgICAgIHJldHVybiBuZXcgTGluayh7CiAgICAgICAgICAgICAgcGF0aCwKICAgICAgICAgICAgICBlbWJlZCwKICAgICAgICAgICAgICBkaXNwbGF5LAogICAgICAgICAgICAgIHN1YnBhdGg6IHVuZGVmaW5lZCwKICAgICAgICAgICAgICB0eXBlOiAiZmlsZSIsCiAgICAgICAgICB9KTsKICAgICAgfQogICAgICBzdGF0aWMgaW5mZXIobGlua3BhdGgsIGVtYmVkID0gZmFsc2UsIGRpc3BsYXkpIHsKICAgICAgICAgIGlmIChsaW5rcGF0aC5pbmNsdWRlcygiI14iKSkgewogICAgICAgICAgICAgIGxldCBzcGxpdCA9IGxpbmtwYXRoLnNwbGl0KCIjXiIpOwogICAgICAgICAgICAgIHJldHVybiBMaW5rLmJsb2NrKHNwbGl0WzBdLCBzcGxpdFsxXSwgZW1iZWQsIGRpc3BsYXkpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAobGlua3BhdGguaW5jbHVkZXMoIiMiKSkgewogICAgICAgICAgICAgIGxldCBzcGxpdCA9IGxpbmtwYXRoLnNwbGl0KCIjIik7CiAgICAgICAgICAgICAgcmV0dXJuIExpbmsuaGVhZGVyKHNwbGl0WzBdLCBzcGxpdFsxXSwgZW1iZWQsIGRpc3BsYXkpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHJldHVybiBMaW5rLmZpbGUobGlua3BhdGgsIGVtYmVkLCBkaXNwbGF5KTsKICAgICAgfQogICAgICAvKiogQ3JlYXRlIGEgbGluayB0byBhIHNwZWNpZmljIGZpbGUgYW5kIGhlYWRlciBpbiB0aGF0IGZpbGUuICovCiAgICAgIHN0YXRpYyBoZWFkZXIocGF0aCwgaGVhZGVyLCBlbWJlZCwgZGlzcGxheSkgewogICAgICAgICAgLy8gSGVhZGVycyBuZWVkIHRvIGJlIG5vcm1hbGl6ZWQgdG8gYWxwaGEtbnVtZXJpYyAmIHdpdGggZXh0cmEgc3BhY2luZyByZW1vdmVkLgogICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKHsKICAgICAgICAgICAgICBwYXRoLAogICAgICAgICAgICAgIGVtYmVkLAogICAgICAgICAgICAgIGRpc3BsYXksCiAgICAgICAgICAgICAgc3VicGF0aDogbm9ybWFsaXplSGVhZGVyRm9yTGluayhoZWFkZXIpLAogICAgICAgICAgICAgIHR5cGU6ICJoZWFkZXIiLAogICAgICAgICAgfSk7CiAgICAgIH0KICAgICAgLyoqIENyZWF0ZSBhIGxpbmsgdG8gYSBzcGVjaWZpYyBmaWxlIGFuZCBibG9jayBpbiB0aGF0IGZpbGUuICovCiAgICAgIHN0YXRpYyBibG9jayhwYXRoLCBibG9ja0lkLCBlbWJlZCwgZGlzcGxheSkgewogICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKHsKICAgICAgICAgICAgICBwYXRoLAogICAgICAgICAgICAgIGVtYmVkLAogICAgICAgICAgICAgIGRpc3BsYXksCiAgICAgICAgICAgICAgc3VicGF0aDogYmxvY2tJZCwKICAgICAgICAgICAgICB0eXBlOiAiYmxvY2siLAogICAgICAgICAgfSk7CiAgICAgIH0KICAgICAgc3RhdGljIGZyb21PYmplY3Qob2JqZWN0KSB7CiAgICAgICAgICByZXR1cm4gbmV3IExpbmsob2JqZWN0KTsKICAgICAgfQogICAgICBjb25zdHJ1Y3RvcihmaWVsZHMpIHsKICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgZmllbGRzKTsKICAgICAgfQogICAgICAvKiogQ2hlY2tzIGZvciBsaW5rIGVxdWFsaXR5IChpLmUuLCB0aGF0IHRoZSBsaW5rcyBhcmUgcG9pbnRpbmcgdG8gdGhlIHNhbWUgZXhhY3QgbG9jYXRpb24pLiAqLwogICAgICBlcXVhbHMob3RoZXIpIHsKICAgICAgICAgIGlmIChvdGhlciA9PSB1bmRlZmluZWQgfHwgb3RoZXIgPT0gbnVsbCkKICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICByZXR1cm4gdGhpcy5wYXRoID09IG90aGVyLnBhdGggJiYgdGhpcy50eXBlID09IG90aGVyLnR5cGUgJiYgdGhpcy5zdWJwYXRoID09IG90aGVyLnN1YnBhdGg7CiAgICAgIH0KICAgICAgLyoqIENvbnZlcnQgdGhpcyBsaW5rIHRvIGl0J3MgbWFya2Rvd24gcmVwcmVzZW50YXRpb24uICovCiAgICAgIHRvU3RyaW5nKCkgewogICAgICAgICAgcmV0dXJuIHRoaXMubWFya2Rvd24oKTsKICAgICAgfQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgdG8gYSByYXcgb2JqZWN0IHdoaWNoIGlzIHNlcmlhbGl6YXRpb24tZnJpZW5kbHkuICovCiAgICAgIHRvT2JqZWN0KCkgewogICAgICAgICAgcmV0dXJuIHsgcGF0aDogdGhpcy5wYXRoLCB0eXBlOiB0aGlzLnR5cGUsIHN1YnBhdGg6IHRoaXMuc3VicGF0aCwgZGlzcGxheTogdGhpcy5kaXNwbGF5LCBlbWJlZDogdGhpcy5lbWJlZCB9OwogICAgICB9CiAgICAgIC8qKiBVcGRhdGUgdGhpcyBsaW5rIHdpdGggYSBuZXcgcGF0aC4gKi8KICAgICAgLy9AdHMtaWdub3JlOyBlcnJvciBhcHBlYXJlZCBhZnRlciB1cGRhdGluZyBPYnNpZGlhbiB0byAwLjE1LjQ7IGl0IGFsc28gdXBkYXRlZCBvdGhlciBwYWNrYWdlcyBidXQgZGlkbid0IHNheSB3aGljaAogICAgICB3aXRoUGF0aChwYXRoKSB7CiAgICAgICAgICByZXR1cm4gbmV3IExpbmsoT2JqZWN0LmFzc2lnbih7fSwgdGhpcywgeyBwYXRoIH0pKTsKICAgICAgfQogICAgICAvKiogUmV0dXJuIGEgbmV3IGxpbmsgd2hpY2ggcG9pbnRzIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGJ1dCB3aXRoIGEgbmV3IGRpc3BsYXkgdmFsdWUuICovCiAgICAgIHdpdGhEaXNwbGF5KGRpc3BsYXkpIHsKICAgICAgICAgIHJldHVybiBuZXcgTGluayhPYmplY3QuYXNzaWduKHt9LCB0aGlzLCB7IGRpc3BsYXkgfSkpOwogICAgICB9CiAgICAgIC8qKiBDb252ZXJ0IGEgZmlsZSBsaW5rIGludG8gYSBsaW5rIHRvIGEgc3BlY2lmaWMgaGVhZGVyLiAqLwogICAgICB3aXRoSGVhZGVyKGhlYWRlcikgewogICAgICAgICAgcmV0dXJuIExpbmsuaGVhZGVyKHRoaXMucGF0aCwgaGVhZGVyLCB0aGlzLmVtYmVkLCB0aGlzLmRpc3BsYXkpOwogICAgICB9CiAgICAgIC8qKiBDb252ZXJ0IGFueSBsaW5rIGludG8gYSBsaW5rIHRvIGl0cyBmaWxlLiAqLwogICAgICB0b0ZpbGUoKSB7CiAgICAgICAgICByZXR1cm4gTGluay5maWxlKHRoaXMucGF0aCwgdGhpcy5lbWJlZCwgdGhpcy5kaXNwbGF5KTsKICAgICAgfQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgaW50byBhbiBlbWJlZGRlZCBsaW5rLiAqLwogICAgICB0b0VtYmVkKCkgewogICAgICAgICAgaWYgKHRoaXMuZW1iZWQpIHsKICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIGxldCBsaW5rID0gbmV3IExpbmsodGhpcyk7CiAgICAgICAgICAgICAgbGluay5lbWJlZCA9IHRydWU7CiAgICAgICAgICAgICAgcmV0dXJuIGxpbms7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgLyoqIENvbnZlcnQgdGhpcyBsaW5rIGludG8gYSBub24tZW1iZWRkZWQgbGluay4gKi8KICAgICAgZnJvbUVtYmVkKCkgewogICAgICAgICAgaWYgKCF0aGlzLmVtYmVkKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICBsZXQgbGluayA9IG5ldyBMaW5rKHRoaXMpOwogICAgICAgICAgICAgIGxpbmsuZW1iZWQgPSBmYWxzZTsKICAgICAgICAgICAgICByZXR1cm4gbGluazsKICAgICAgICAgIH0KICAgICAgfQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgdG8gbWFya2Rvd24gc28gaXQgY2FuIGJlIHJlbmRlcmVkLiAqLwogICAgICBtYXJrZG93bigpIHsKICAgICAgICAgIGxldCByZXN1bHQgPSAodGhpcy5lbWJlZCA/ICIhIiA6ICIiKSArICJbWyIgKyB0aGlzLm9ic2lkaWFuTGluaygpOwogICAgICAgICAgaWYgKHRoaXMuZGlzcGxheSkgewogICAgICAgICAgICAgIHJlc3VsdCArPSAifCIgKyB0aGlzLmRpc3BsYXk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICByZXN1bHQgKz0gInwiICsgZ2V0RmlsZVRpdGxlKHRoaXMucGF0aCk7CiAgICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSAiaGVhZGVyIiB8fCB0aGlzLnR5cGUgPT0gImJsb2NrIikKICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICIgPiAiICsgdGhpcy5zdWJwYXRoOwogICAgICAgICAgfQogICAgICAgICAgcmVzdWx0ICs9ICJdXSI7CiAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9CiAgICAgIC8qKiBDb252ZXJ0IHRoZSBpbm5lciBwYXJ0IG9mIHRoZSBsaW5rIHRvIHNvbWV0aGluZyB0aGF0IE9ic2lkaWFuIGNhbiBvcGVuIC8gdW5kZXJzdGFuZC4gKi8KICAgICAgb2JzaWRpYW5MaW5rKCkgewogICAgICAgICAgdmFyIF9hLCBfYjsKICAgICAgICAgIGNvbnN0IGVzY2FwZWQgPSB0aGlzLnBhdGgucmVwbGFjZSgifCIsICJcXHwiKTsKICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT0gImhlYWRlciIpCiAgICAgICAgICAgICAgcmV0dXJuIGVzY2FwZWQgKyAiIyIgKyAoKF9hID0gdGhpcy5zdWJwYXRoKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVwbGFjZSgifCIsICJcXHwiKSk7CiAgICAgICAgICBpZiAodGhpcy50eXBlID09ICJibG9jayIpCiAgICAgICAgICAgICAgcmV0dXJuIGVzY2FwZWQgKyAiI14iICsgKChfYiA9IHRoaXMuc3VicGF0aCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnJlcGxhY2UoInwiLCAiXFx8IikpOwogICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHJldHVybiBlc2NhcGVkOwogICAgICB9CiAgICAgIC8qKiBUaGUgc3RyaXBwZWQgbmFtZSBvZiB0aGUgZmlsZSB0aGlzIGxpbmsgcG9pbnRzIHRvLiAqLwogICAgICBmaWxlTmFtZSgpIHsKICAgICAgICAgIHJldHVybiBnZXRGaWxlVGl0bGUodGhpcy5wYXRoKS5yZXBsYWNlKCIubWQiLCAiIik7CiAgICAgIH0KICB9CiAgLy8vLy8vLy8vLy8vLy8vLy8KICAvLyBXSURHRVQgQkFTRSAvLwogIC8vLy8vLy8vLy8vLy8vLy8vCiAgLyoqCiAgICogQSB0cml2aWFsIGJhc2UgY2xhc3Mgd2hpY2gganVzdCBkZWZpbmVzIHRoZSAnJHdpZGdldCcgaWRlbnRpZmllciB0eXBlLiBTdWJ0eXBlcyBvZgogICAqIHdpZGdldCBhcmUgcmVzcG9uc2libGUgZm9yIGFkZGluZyB3aGF0ZXZlciBtZXRhZGF0YSBpcyByZWxldmFudC4gSWYgeW91IHdhbnQgeW91ciB3aWRnZXQKICAgKiB0byBoYXZlIHJlbmRlcmluZyBmdW5jdGlvbmFsaXR5ICh3aGljaCB5b3UgcHJvYmFibHkgZG8pLCB5b3Ugc2hvdWxkIGV4dGVuZCBgUmVuZGVyV2lkZ2V0YC4KICAgKi8KICBjbGFzcyBXaWRnZXQgewogICAgICBjb25zdHJ1Y3Rvcigkd2lkZ2V0KSB7CiAgICAgICAgICB0aGlzLiR3aWRnZXQgPSAkd2lkZ2V0OwogICAgICB9CiAgfQogIC8qKiBBIHRyaXZpYWwgd2lkZ2V0IHdoaWNoIHJlbmRlcnMgYSAoa2V5LCB2YWx1ZSkgcGFpciwgYW5kIGFsbG93cyBhY2Nlc3NpbmcgdGhlIGtleSBhbmQgdmFsdWUuICovCiAgY2xhc3MgTGlzdFBhaXJXaWRnZXQgZXh0ZW5kcyBXaWRnZXQgewogICAgICBjb25zdHJ1Y3RvcihrZXksIHZhbHVlKSB7CiAgICAgICAgICBzdXBlcigiZGF0YXZpZXc6bGlzdC1wYWlyIik7CiAgICAgICAgICB0aGlzLmtleSA9IGtleTsKICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKICAgICAgfQogICAgICBtYXJrZG93bigpIHsKICAgICAgICAgIHJldHVybiBgJHtWYWx1ZXMudG9TdHJpbmcodGhpcy5rZXkpfTogJHtWYWx1ZXMudG9TdHJpbmcodGhpcy52YWx1ZSl9YDsKICAgICAgfQogIH0KICAvKiogQSBzaW1wbGUgd2lkZ2V0IHdoaWNoIHJlbmRlcnMgYW4gZXh0ZXJuYWwgbGluay4gKi8KICBjbGFzcyBFeHRlcm5hbExpbmtXaWRnZXQgZXh0ZW5kcyBXaWRnZXQgewogICAgICBjb25zdHJ1Y3Rvcih1cmwsIGRpc3BsYXkpIHsKICAgICAgICAgIHN1cGVyKCJkYXRhdmlldzpleHRlcm5hbC1saW5rIik7CiAgICAgICAgICB0aGlzLnVybCA9IHVybDsKICAgICAgICAgIHRoaXMuZGlzcGxheSA9IGRpc3BsYXk7CiAgICAgIH0KICAgICAgbWFya2Rvd24oKSB7CiAgICAgICAgICB2YXIgX2E7CiAgICAgICAgICByZXR1cm4gYFskeyhfYSA9IHRoaXMuZGlzcGxheSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogdGhpcy51cmx9XSgke3RoaXMudXJsfSlgOwogICAgICB9CiAgfQogIHZhciBXaWRnZXRzOwogIChmdW5jdGlvbiAoV2lkZ2V0cykgewogICAgICAvKiogQ3JlYXRlIGEgbGlzdCBwYWlyIHdpZGdldCBtYXRjaGluZyB0aGUgZ2l2ZW4ga2V5IGFuZCB2YWx1ZS4gKi8KICAgICAgZnVuY3Rpb24gbGlzdFBhaXIoa2V5LCB2YWx1ZSkgewogICAgICAgICAgcmV0dXJuIG5ldyBMaXN0UGFpcldpZGdldChrZXksIHZhbHVlKTsKICAgICAgfQogICAgICBXaWRnZXRzLmxpc3RQYWlyID0gbGlzdFBhaXI7CiAgICAgIC8qKiBDcmVhdGUgYW4gZXh0ZXJuYWwgbGluayB3aWRnZXQgd2hpY2ggcmVuZGVycyBhbiBleHRlcm5hbCBPYnNpZGlhbiBsaW5rLiAqLwogICAgICBmdW5jdGlvbiBleHRlcm5hbExpbmsodXJsLCBkaXNwbGF5KSB7CiAgICAgICAgICByZXR1cm4gbmV3IEV4dGVybmFsTGlua1dpZGdldCh1cmwsIGRpc3BsYXkpOwogICAgICB9CiAgICAgIFdpZGdldHMuZXh0ZXJuYWxMaW5rID0gZXh0ZXJuYWxMaW5rOwogICAgICAvKiogQ2hlY2tzIGlmIHRoZSBnaXZlbiB3aWRnZXQgaXMgYSBsaXN0IHBhaXIgd2lkZ2V0LiAqLwogICAgICBmdW5jdGlvbiBpc0xpc3RQYWlyKHdpZGdldCkgewogICAgICAgICAgcmV0dXJuIHdpZGdldC4kd2lkZ2V0ID09PSAiZGF0YXZpZXc6bGlzdC1wYWlyIjsKICAgICAgfQogICAgICBXaWRnZXRzLmlzTGlzdFBhaXIgPSBpc0xpc3RQYWlyOwogICAgICBmdW5jdGlvbiBpc0V4dGVybmFsTGluayh3aWRnZXQpIHsKICAgICAgICAgIHJldHVybiB3aWRnZXQuJHdpZGdldCA9PT0gImRhdGF2aWV3OmV4dGVybmFsLWxpbmsiOwogICAgICB9CiAgICAgIFdpZGdldHMuaXNFeHRlcm5hbExpbmsgPSBpc0V4dGVybmFsTGluazsKICAgICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIHdpZGdldCBpcyBhbnkga2luZCBvZiBidWlsdC1pbiB3aWRnZXQgd2l0aCBzcGVjaWFsIHJlbmRlcmluZyBoYW5kbGluZy4gKi8KICAgICAgZnVuY3Rpb24gaXNCdWlsdGluKHdpZGdldCkgewogICAgICAgICAgcmV0dXJuIGlzTGlzdFBhaXIod2lkZ2V0KSB8fCBpc0V4dGVybmFsTGluayh3aWRnZXQpOwogICAgICB9CiAgICAgIFdpZGdldHMuaXNCdWlsdGluID0gaXNCdWlsdGluOwogIH0pKFdpZGdldHMgfHwgKFdpZGdldHMgPSB7fSkpOwoKICAvKiogVXRpbGl0eSBtZXRob2RzIGZvciBjcmVhdGluZyAmIGNvbXBhcmluZyBmaWVsZHMuICovCiAgdmFyIEZpZWxkczsKICAoZnVuY3Rpb24gKEZpZWxkcykgewogICAgICBmdW5jdGlvbiB2YXJpYWJsZShuYW1lKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAidmFyaWFibGUiLCBuYW1lIH07CiAgICAgIH0KICAgICAgRmllbGRzLnZhcmlhYmxlID0gdmFyaWFibGU7CiAgICAgIGZ1bmN0aW9uIGxpdGVyYWwodmFsdWUpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsaXRlcmFsIiwgdmFsdWUgfTsKICAgICAgfQogICAgICBGaWVsZHMubGl0ZXJhbCA9IGxpdGVyYWw7CiAgICAgIGZ1bmN0aW9uIGJpbmFyeU9wKGxlZnQsIG9wLCByaWdodCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJpbmFyeW9wIiwgbGVmdCwgb3AsIHJpZ2h0IH07CiAgICAgIH0KICAgICAgRmllbGRzLmJpbmFyeU9wID0gYmluYXJ5T3A7CiAgICAgIGZ1bmN0aW9uIGluZGV4KG9iaiwgaW5kZXgpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJpbmRleCIsIG9iamVjdDogb2JqLCBpbmRleCB9OwogICAgICB9CiAgICAgIEZpZWxkcy5pbmRleCA9IGluZGV4OwogICAgICAvKiogQ29udmVydHMgYSBzdHJpbmcgaW4gZG90LW5vdGF0aW9uLWZvcm1hdCBpbnRvIGEgdmFyaWFibGUgd2hpY2ggaW5kZXhlcy4gKi8KICAgICAgZnVuY3Rpb24gaW5kZXhWYXJpYWJsZShuYW1lKSB7CiAgICAgICAgICBsZXQgcGFydHMgPSBuYW1lLnNwbGl0KCIuIik7CiAgICAgICAgICBsZXQgcmVzdWx0ID0gRmllbGRzLnZhcmlhYmxlKHBhcnRzWzBdKTsKICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCBwYXJ0cy5sZW5ndGg7IGluZGV4KyspIHsKICAgICAgICAgICAgICByZXN1bHQgPSBGaWVsZHMuaW5kZXgocmVzdWx0LCBGaWVsZHMubGl0ZXJhbChwYXJ0c1tpbmRleF0pKTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgIH0KICAgICAgRmllbGRzLmluZGV4VmFyaWFibGUgPSBpbmRleFZhcmlhYmxlOwogICAgICBmdW5jdGlvbiBsYW1iZGEoYXJncywgdmFsdWUpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsYW1iZGEiLCBhcmd1bWVudHM6IGFyZ3MsIHZhbHVlIH07CiAgICAgIH0KICAgICAgRmllbGRzLmxhbWJkYSA9IGxhbWJkYTsKICAgICAgZnVuY3Rpb24gZnVuYyhmdW5jLCBhcmdzKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZnVuY3Rpb24iLCBmdW5jLCBhcmd1bWVudHM6IGFyZ3MgfTsKICAgICAgfQogICAgICBGaWVsZHMuZnVuYyA9IGZ1bmM7CiAgICAgIGZ1bmN0aW9uIGxpc3QodmFsdWVzKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAibGlzdCIsIHZhbHVlcyB9OwogICAgICB9CiAgICAgIEZpZWxkcy5saXN0ID0gbGlzdDsKICAgICAgZnVuY3Rpb24gb2JqZWN0KHZhbHVlcykgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogIm9iamVjdCIsIHZhbHVlcyB9OwogICAgICB9CiAgICAgIEZpZWxkcy5vYmplY3QgPSBvYmplY3Q7CiAgICAgIGZ1bmN0aW9uIG5lZ2F0ZShjaGlsZCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogIm5lZ2F0ZWQiLCBjaGlsZCB9OwogICAgICB9CiAgICAgIEZpZWxkcy5uZWdhdGUgPSBuZWdhdGU7CiAgICAgIGZ1bmN0aW9uIGlzQ29tcGFyZU9wKG9wKSB7CiAgICAgICAgICByZXR1cm4gb3AgPT0gIjw9IiB8fCBvcCA9PSAiPCIgfHwgb3AgPT0gIj4iIHx8IG9wID09ICI+PSIgfHwgb3AgPT0gIiE9IiB8fCBvcCA9PSAiPSI7CiAgICAgIH0KICAgICAgRmllbGRzLmlzQ29tcGFyZU9wID0gaXNDb21wYXJlT3A7CiAgICAgIEZpZWxkcy5OVUxMID0gRmllbGRzLmxpdGVyYWwobnVsbCk7CiAgfSkoRmllbGRzIHx8IChGaWVsZHMgPSB7fSkpOwoKICAvKiogQVNUIGltcGxlbWVudGF0aW9uIGZvciBxdWVyaWVzIG92ZXIgZGF0YSBzb3VyY2VzLiAqLwogIC8qKiBVdGlsaXR5IGZ1bmN0aW9ucyBmb3IgY3JlYXRpbmcgYW5kIG1hbmlwdWxhdGluZyBzb3VyY2VzLiAqLwogIHZhciBTb3VyY2VzOwogIChmdW5jdGlvbiAoU291cmNlcykgewogICAgICAvKiogQ3JlYXRlIGEgc291cmNlIHdoaWNoIHNlYXJjaGVzIGZyb20gYSB0YWcuICovCiAgICAgIGZ1bmN0aW9uIHRhZyh0YWcpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJ0YWciLCB0YWcgfTsKICAgICAgfQogICAgICBTb3VyY2VzLnRhZyA9IHRhZzsKICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBmZXRjaGVzIGZyb20gYSBDU1YgZmlsZS4gKi8KICAgICAgZnVuY3Rpb24gY3N2KHBhdGgpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJjc3YiLCBwYXRoIH07CiAgICAgIH0KICAgICAgU291cmNlcy5jc3YgPSBjc3Y7CiAgICAgIC8qKiBDcmVhdGUgYSBzb3VyY2Ugd2hpY2ggc2VhcmNoZXMgZm9yIGZpbGVzIHVuZGVyIGEgZm9sZGVyIHByZWZpeC4gKi8KICAgICAgZnVuY3Rpb24gZm9sZGVyKHByZWZpeCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImZvbGRlciIsIGZvbGRlcjogcHJlZml4IH07CiAgICAgIH0KICAgICAgU291cmNlcy5mb2xkZXIgPSBmb2xkZXI7CiAgICAgIC8qKiBDcmVhdGUgYSBzb3VyY2Ugd2hpY2ggc2VhcmNoZXMgZm9yIGZpbGVzIHdoaWNoIGxpbmsgdG8vZnJvbSBhIGdpdmVuIGZpbGUuICovCiAgICAgIGZ1bmN0aW9uIGxpbmsoZmlsZSwgaW5jb21pbmcpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsaW5rIiwgZmlsZSwgZGlyZWN0aW9uOiBpbmNvbWluZyA/ICJpbmNvbWluZyIgOiAib3V0Z29pbmciIH07CiAgICAgIH0KICAgICAgU291cmNlcy5saW5rID0gbGluazsKICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBqb2lucyB0d28gc291cmNlcyBieSBhIGxvZ2ljYWwgb3BlcmF0b3IgKGFuZC9vcikuICovCiAgICAgIGZ1bmN0aW9uIGJpbmFyeU9wKGxlZnQsIG9wLCByaWdodCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJpbmFyeW9wIiwgbGVmdCwgb3AsIHJpZ2h0IH07CiAgICAgIH0KICAgICAgU291cmNlcy5iaW5hcnlPcCA9IGJpbmFyeU9wOwogICAgICAvKiogQ3JlYXRlIGEgc291cmNlIHdoaWNoIHRha2VzIHRoZSBpbnRlcnNlY3Rpb24gb2YgdHdvIHNvdXJjZXMuICovCiAgICAgIGZ1bmN0aW9uIGFuZChsZWZ0LCByaWdodCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJpbmFyeW9wIiwgbGVmdCwgb3A6ICImIiwgcmlnaHQgfTsKICAgICAgfQogICAgICBTb3VyY2VzLmFuZCA9IGFuZDsKICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCB0YWtlcyB0aGUgdW5pb24gb2YgdHdvIHNvdXJjZXMuICovCiAgICAgIGZ1bmN0aW9uIG9yKGxlZnQsIHJpZ2h0KSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiYmluYXJ5b3AiLCBsZWZ0LCBvcDogInwiLCByaWdodCB9OwogICAgICB9CiAgICAgIFNvdXJjZXMub3IgPSBvcjsKICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBuZWdhdGVzIHRoZSB1bmRlcmx5aW5nIHNvdXJjZS4gKi8KICAgICAgZnVuY3Rpb24gbmVnYXRlKGNoaWxkKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAibmVnYXRlIiwgY2hpbGQgfTsKICAgICAgfQogICAgICBTb3VyY2VzLm5lZ2F0ZSA9IG5lZ2F0ZTsKICAgICAgZnVuY3Rpb24gZW1wdHkoKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZW1wdHkiIH07CiAgICAgIH0KICAgICAgU291cmNlcy5lbXB0eSA9IGVtcHR5OwogIH0pKFNvdXJjZXMgfHwgKFNvdXJjZXMgPSB7fSkpOwoKICAvKiogRW1vamkgcmVnZXggd2l0aG91dCBhbnkgYWRkaXRpb25hbCBmbGFncy4gKi8KICBjb25zdCBFTU9KSV9SRUdFWCA9IG5ldyBSZWdFeHAoZW1vamlSZWdleCgpLCAiIik7CiAgLyoqIFByb3ZpZGVzIGEgbG9va3VwIHRhYmxlIGZvciB1bml0IGR1cmF0aW9ucyBvZiB0aGUgZ2l2ZW4gdHlwZS4gKi8KICBjb25zdCBEVVJBVElPTl9UWVBFUyA9IHsKICAgICAgeWVhcjogRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLAogICAgICB5ZWFyczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLAogICAgICB5cjogRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLAogICAgICB5cnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMSB9KSwKICAgICAgbW9udGg6IER1cmF0aW9uLmZyb21PYmplY3QoeyBtb250aHM6IDEgfSksCiAgICAgIG1vbnRoczogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSwKICAgICAgbW86IER1cmF0aW9uLmZyb21PYmplY3QoeyBtb250aHM6IDEgfSksCiAgICAgIG1vczogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSwKICAgICAgd2VlazogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLAogICAgICB3ZWVrczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLAogICAgICB3azogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLAogICAgICB3a3M6IER1cmF0aW9uLmZyb21PYmplY3QoeyB3ZWVrczogMSB9KSwKICAgICAgdzogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLAogICAgICBkYXk6IER1cmF0aW9uLmZyb21PYmplY3QoeyBkYXlzOiAxIH0pLAogICAgICBkYXlzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSwKICAgICAgZDogRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEgfSksCiAgICAgIGhvdXI6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwKICAgICAgaG91cnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwKICAgICAgaHI6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwKICAgICAgaHJzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEgfSksCiAgICAgIGg6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwKICAgICAgbWludXRlOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSwKICAgICAgbWludXRlczogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksCiAgICAgIG1pbjogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksCiAgICAgIG1pbnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiAxIH0pLAogICAgICBtOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSwKICAgICAgc2Vjb25kOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSwKICAgICAgc2Vjb25kczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHNlY29uZHM6IDEgfSksCiAgICAgIHNlYzogRHVyYXRpb24uZnJvbU9iamVjdCh7IHNlY29uZHM6IDEgfSksCiAgICAgIHNlY3M6IER1cmF0aW9uLmZyb21PYmplY3QoeyBzZWNvbmRzOiAxIH0pLAogICAgICBzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSwKICB9OwogIC8qKiBTaG9ydGhhbmQgZm9yIGNvbW1vbiBkYXRlcyAocmVsYXRpdmUgdG8gcmlnaHQgbm93KS4gKi8KICBjb25zdCBEQVRFX1NIT1JUSEFORFMgPSB7CiAgICAgIG5vdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKSwKICAgICAgdG9kYXk6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuc3RhcnRPZigiZGF5IiksCiAgICAgIHllc3RlcmRheTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKQogICAgICAgICAgLnN0YXJ0T2YoImRheSIpCiAgICAgICAgICAubWludXMoRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEgfSkpLAogICAgICB0b21vcnJvdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKQogICAgICAgICAgLnN0YXJ0T2YoImRheSIpCiAgICAgICAgICAucGx1cyhEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSksCiAgICAgIHNvdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJ3ZWVrIiksCiAgICAgICJzdGFydC1vZi13ZWVrIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJ3ZWVrIiksCiAgICAgIGVvdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZigid2VlayIpLAogICAgICAiZW5kLW9mLXdlZWsiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKCJ3ZWVrIiksCiAgICAgIHNveTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJ5ZWFyIiksCiAgICAgICJzdGFydC1vZi15ZWFyIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJ5ZWFyIiksCiAgICAgIGVveTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZigieWVhciIpLAogICAgICAiZW5kLW9mLXllYXIiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKCJ5ZWFyIiksCiAgICAgIHNvbTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJtb250aCIpLAogICAgICAic3RhcnQtb2YtbW9udGgiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoIm1vbnRoIiksCiAgICAgIGVvbTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZigibW9udGgiKSwKICAgICAgImVuZC1vZi1tb250aCI6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuZW5kT2YoIm1vbnRoIiksCiAgfTsKICAvKioKICAgKiBLZXl3b3JkcyB3aGljaCBjYW5ub3QgYmUgdXNlZCBhcyB2YXJpYWJsZXMgZGlyZWN0bHkuIFVzZSBgcm93Ljx0aGluZz5gIGlmIGl0IGlzIGEgdmFyaWFibGUgeW91IGhhdmUgZGVmaW5lZCBhbmQgd2FudAogICAqIHRvIGFjY2Vzcy4KICAgKi8KICBjb25zdCBLRVlXT1JEUyA9IFsiRlJPTSIsICJXSEVSRSIsICJMSU1JVCIsICJHUk9VUCIsICJGTEFUVEVOIl07CiAgLy8vLy8vLy8vLy8vLy8vCiAgLy8gVXRpbGl0aWVzIC8vCiAgLy8vLy8vLy8vLy8vLy8vCiAgLyoqIFNwbGl0IG9uIHVuZXNjYXBlZCBwaXBlcyBpbiBhbiBpbm5lciBsaW5rLiAqLwogIGZ1bmN0aW9uIHNwbGl0T25VbmVzY2FwZWRQaXBlKGxpbmspIHsKICAgICAgbGV0IHBpcGUgPSAtMTsKICAgICAgd2hpbGUgKChwaXBlID0gbGluay5pbmRleE9mKCJ8IiwgcGlwZSArIDEpKSA+PSAwKSB7CiAgICAgICAgICBpZiAocGlwZSA+IDAgJiYgbGlua1twaXBlIC0gMV0gPT0gIlxcIikKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIHJldHVybiBbbGluay5zdWJzdHJpbmcoMCwgcGlwZSkucmVwbGFjZSgvXFxcfC9nLCAifCIpLCBsaW5rLnN1YnN0cmluZyhwaXBlICsgMSldOwogICAgICB9CiAgICAgIHJldHVybiBbbGluay5yZXBsYWNlKC9cXFx8L2csICJ8IiksIHVuZGVmaW5lZF07CiAgfQogIC8qKiBBdHRlbXB0IHRvIHBhcnNlIHRoZSBpbnNpZGUgb2YgYSBsaW5rIHRvIHB1bGwgb3V0IGRpc3BsYXkgbmFtZSwgc3VicGF0aCwgZXRjLiAqLwogIGZ1bmN0aW9uIHBhcnNlSW5uZXJMaW5rKHJhd2xpbmspIHsKICAgICAgbGV0IFtsaW5rLCBkaXNwbGF5XSA9IHNwbGl0T25VbmVzY2FwZWRQaXBlKHJhd2xpbmspOwogICAgICByZXR1cm4gTGluay5pbmZlcihsaW5rLCBmYWxzZSwgZGlzcGxheSk7CiAgfQogIC8qKiBDcmVhdGUgYSBsZWZ0LWFzc29jaWF0aXZlIGJpbmFyeSBwYXJzZXIgd2hpY2ggcGFyc2VzIHRoZSBnaXZlbiBzdWItZWxlbWVudCBhbmQgc2VwYXJhdG9yLiBIYW5kbGVzIHdoaXRlc3BhY2UuICovCiAgZnVuY3Rpb24gY3JlYXRlQmluYXJ5UGFyc2VyKGNoaWxkLCBzZXAsIGNvbWJpbmUpIHsKICAgICAgcmV0dXJuIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAoY2hpbGQsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXEocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIHNlcCwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIGNoaWxkKS5tYW55KCksIChmaXJzdCwgcmVzdCkgPT4gewogICAgICAgICAgaWYgKHJlc3QubGVuZ3RoID09IDApCiAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0OwogICAgICAgICAgbGV0IG5vZGUgPSBjb21iaW5lKGZpcnN0LCByZXN0WzBdWzFdLCByZXN0WzBdWzNdKTsKICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCByZXN0Lmxlbmd0aDsgaW5kZXgrKykgewogICAgICAgICAgICAgIG5vZGUgPSBjb21iaW5lKG5vZGUsIHJlc3RbaW5kZXhdWzFdLCByZXN0W2luZGV4XVszXSk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgfSk7CiAgfQogIGZ1bmN0aW9uIGNoYWluT3B0KGJhc2UsIC4uLmZ1bmNzKSB7CiAgICAgIHJldHVybiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuY3VzdG9tKChzdWNjZXNzLCBmYWlsdXJlKSA9PiB7CiAgICAgICAgICByZXR1cm4gKGlucHV0LCBpKSA9PiB7CiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGJhc2UuXyhpbnB1dCwgaSk7CiAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuc3RhdHVzKQogICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgIGZvciAobGV0IGZ1bmMgb2YgZnVuY3MpIHsKICAgICAgICAgICAgICAgICAgbGV0IG5leHQgPSBmdW5jKHJlc3VsdC52YWx1ZSkuXyhpbnB1dCwgcmVzdWx0LmluZGV4KTsKICAgICAgICAgICAgICAgICAgaWYgKCFuZXh0LnN0YXR1cykKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5leHQ7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICB9OwogICAgICB9KTsKICB9CiAgY29uc3QgRVhQUkVTU0lPTiA9IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5jcmVhdGVMYW5ndWFnZSh7CiAgICAgIC8vIEEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyOyB0aGUgZGVjaW1hbCBwb2ludCBpcyBvcHRpb25hbC4KICAgICAgbnVtYmVyOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoLy0/WzAtOV0rKFwuWzAtOV0rKT8vKQogICAgICAgICAgLm1hcChzdHIgPT4gTnVtYmVyLnBhcnNlRmxvYXQoc3RyKSkKICAgICAgICAgIC5kZXNjKCJudW1iZXIiKSwKICAgICAgLy8gQSBxdW90ZS1zdXJyb3VuZGVkIHN0cmluZyB3aGljaCBzdXBwb3J0cyBlc2NhcGUgY2hhcmFjdGVycyAoJ1wnKS4KICAgICAgc3RyaW5nOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoJyInKQogICAgICAgICAgLnRoZW4ocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChxLmVzY2FwZUNoYXJhY3RlciwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm5vbmVPZignIlxcJykpCiAgICAgICAgICAuYXRMZWFzdCgwKQogICAgICAgICAgLm1hcChjaGFycyA9PiBjaGFycy5qb2luKCIiKSkpCiAgICAgICAgICAuc2tpcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCciJykpCiAgICAgICAgICAuZGVzYygic3RyaW5nIiksCiAgICAgIGVzY2FwZUNoYXJhY3RlcjogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJcXCIpCiAgICAgICAgICAudGhlbihwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYW55KQogICAgICAgICAgLm1hcChlc2NhcGVkID0+IHsKICAgICAgICAgIC8vIElmIHdlIGFyZSBlc2NhcGluZyBhIGJhY2tzbGFzaCBvciBhIHF1b3RlLCBwYXNzIGluIG9uIGluIGVzY2FwZWQgZm9ybQogICAgICAgICAgaWYgKGVzY2FwZWQgPT09ICciJykKICAgICAgICAgICAgICByZXR1cm4gJyInOwogICAgICAgICAgaWYgKGVzY2FwZWQgPT09ICJcXCIpCiAgICAgICAgICAgICAgcmV0dXJuICJcXCI7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuICJcXCIgKyBlc2NhcGVkOwogICAgICB9KSwKICAgICAgLy8gQSBib29sZWFuIHRydWUvZmFsc2UgdmFsdWUuCiAgICAgIGJvb2w6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvdHJ1ZXxmYWxzZXxUcnVlfEZhbHNlLykKICAgICAgICAgIC5tYXAoc3RyID0+IHN0ci50b0xvd2VyQ2FzZSgpID09ICJ0cnVlIikKICAgICAgICAgIC5kZXNjKCJib29sZWFuICgndHJ1ZScgb3IgJ2ZhbHNlJykiKSwKICAgICAgLy8gQSB0YWcgb2YgdGhlIGZvcm0gJyNzdHVmZi9oZWxsby10aGVyZScuCiAgICAgIHRhZzogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiMiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9bXlx1MjAwMC1cdTIwNkZcdTJFMDAtXHUyRTdGJyEiIyQlJigpKissLjo7PD0+P0BeYHt8fX5cW1xdXFxcc10vKS5kZXNjKCJ0ZXh0IikpLm1hbnkoKSwgKHN0YXJ0LCByZXN0KSA9PiBzdGFydCArIHJlc3Quam9pbigiIikpLmRlc2MoInRhZyAoJyNoZWxsby9zdHVmZicpIiksCiAgICAgIC8vIEEgdmFyaWFibGUgaWRlbnRpZmllciwgd2hpY2ggaXMgYWxwaGFudW1lcmljIGFuZCBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIgb3IuLi4gZW1vamkuCiAgICAgIGlkZW50aWZpZXI6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1xwe0xldHRlcn0vdSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoRU1PSklfUkVHRVgpLmRlc2MoInRleHQiKSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvWzAtOVxwe0xldHRlcn1fLV0vdSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoRU1PSklfUkVHRVgpLmRlc2MoInRleHQiKSkubWFueSgpLCAoZmlyc3QsIHJlc3QpID0+IGZpcnN0ICsgcmVzdC5qb2luKCIiKSkuZGVzYygidmFyaWFibGUgaWRlbnRpZmllciIpLAogICAgICAvLyBBbiBPYnNpZGlhbiBsaW5rIG9mIHRoZSBmb3JtIFtbPGxpbms+XV0uCiAgICAgIGxpbms6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXFtcWyhbXlxbXF1dKj8pXF1cXS91LCAxKQogICAgICAgICAgLm1hcChsaW5rSW5uZXIgPT4gcGFyc2VJbm5lckxpbmsobGlua0lubmVyKSkKICAgICAgICAgIC5kZXNjKCJmaWxlIGxpbmsiKSwKICAgICAgLy8gQW4gZW1iZWRkYWJsZSBsaW5rIHdoaWNoIGNhbiBzdGFydCB3aXRoICchJy4gVGhpcyBvdmVybGFwcyB3aXRoIHRoZSBub3JtYWwgbmVnYXRpb24gb3BlcmF0b3IsIHNvIGl0IGlzIG9ubHkKICAgICAgLy8gcHJvdmlkZWQgZm9yIG1ldGFkYXRhIHBhcnNpbmcuCiAgICAgIGVtYmVkTGluazogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiEiKS5hdE1vc3QoMSksIHEubGluaywgKHAsIGwpID0+IHsKICAgICAgICAgIGlmIChwLmxlbmd0aCA+IDApCiAgICAgICAgICAgICAgbC5lbWJlZCA9IHRydWU7CiAgICAgICAgICByZXR1cm4gbDsKICAgICAgfSkuZGVzYygiZmlsZSBsaW5rIiksCiAgICAgIC8vIEJpbmFyeSBwbHVzIG9yIG1pbnVzIG9wZXJhdG9yLgogICAgICBiaW5hcnlQbHVzTWludXM6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXCt8LS8pCiAgICAgICAgICAubWFwKHN0ciA9PiBzdHIpCiAgICAgICAgICAuZGVzYygiJysnIG9yICctJyIpLAogICAgICAvLyBCaW5hcnkgdGltZXMgb3IgZGl2aWRlIG9wZXJhdG9yLgogICAgICBiaW5hcnlNdWxEaXY6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXCp8XC98JS8pCiAgICAgICAgICAubWFwKHN0ciA9PiBzdHIpCiAgICAgICAgICAuZGVzYygiJyonIG9yICcvJyBvciAnJSciKSwKICAgICAgLy8gQmluYXJ5IGNvbXBhcmlzb24gb3BlcmF0b3IuCiAgICAgIGJpbmFyeUNvbXBhcmVPcDogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC8+PXw8PXwhPXw+fDx8PS8pCiAgICAgICAgICAubWFwKHN0ciA9PiBzdHIpCiAgICAgICAgICAuZGVzYygiJz49JyBvciAnPD0nIG9yICchPScgb3IgJz0nIG9yICc+JyBvciAnPCciKSwKICAgICAgLy8gQmluYXJ5IGJvb2xlYW4gY29tYmluYXRpb24gb3BlcmF0b3IuCiAgICAgIGJpbmFyeUJvb2xlYW5PcDogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9hbmR8b3J8JnxcfC9pKQogICAgICAgICAgLm1hcChzdHIgPT4gewogICAgICAgICAgaWYgKHN0ci50b0xvd2VyQ2FzZSgpID09ICJhbmQiKQogICAgICAgICAgICAgIHJldHVybiAiJiI7CiAgICAgICAgICBlbHNlIGlmIChzdHIudG9Mb3dlckNhc2UoKSA9PSAib3IiKQogICAgICAgICAgICAgIHJldHVybiAifCI7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuIHN0cjsKICAgICAgfSkKICAgICAgICAgIC5kZXNjKCInYW5kJyBvciAnb3InIiksCiAgICAgIC8vIEEgZGF0ZSB3aGljaCBjYW4gYmUgWVlZWS1NTVstRERUSEg6bW06c3NdLgogICAgICByb290RGF0ZTogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1xkezR9LyksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIi0iKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXGR7Mn0vKSwgKHllYXIsIF8sIG1vbnRoKSA9PiB7CiAgICAgICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IE51bWJlci5wYXJzZUludCh5ZWFyKSwgbW9udGg6IE51bWJlci5wYXJzZUludChtb250aCkgfSk7CiAgICAgIH0pLmRlc2MoImRhdGUgaW4gZm9ybWF0IFlZWVktTU1bLUREVEhILU1NLVNTLk1TXSIpLAogICAgICBkYXRlU2hvcnRoYW5kOiBfID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQoLi4uT2JqZWN0LmtleXMoREFURV9TSE9SVEhBTkRTKQogICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpCiAgICAgICAgICAubWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcpKSwKICAgICAgZGF0ZTogcSA9PiBjaGFpbk9wdChxLnJvb3REYXRlLCAoeW0pID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLSIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9cZHsyfS8pLCAoXywgZGF5KSA9PiB5bS5zZXQoeyBkYXk6IE51bWJlci5wYXJzZUludChkYXkpIH0pKSwgKHltZCkgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJUIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1xkezJ9LyksIChfLCBob3VyKSA9PiB5bWQuc2V0KHsgaG91cjogTnVtYmVyLnBhcnNlSW50KGhvdXIpIH0pKSwgKHltZGgpID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiOiIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9cZHsyfS8pLCAoXywgbWludXRlKSA9PiB5bWRoLnNldCh7IG1pbnV0ZTogTnVtYmVyLnBhcnNlSW50KG1pbnV0ZSkgfSkpLCAoeW1kaG0pID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiOiIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9cZHsyfS8pLCAoXywgc2Vjb25kKSA9PiB5bWRobS5zZXQoeyBzZWNvbmQ6IE51bWJlci5wYXJzZUludChzZWNvbmQpIH0pKSwgKHltZGhtcykgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIi4iKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXGR7M30vKSwgKF8sIG1pbGxpc2Vjb25kKSA9PiB5bWRobXMuc2V0KHsgbWlsbGlzZWNvbmQ6IE51bWJlci5wYXJzZUludChtaWxsaXNlY29uZCkgfSkpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3VjY2VlZCh5bWRobXMpIC8vIHBhc3MKICAgICAgKSwgKGR0KSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKyIpLm9yKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIi0iKSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1xkezEsMn0oOlxkezJ9KT8vKSwgKHBtLCBocikgPT4gZHQuc2V0Wm9uZSgiVVRDIiArIHBtICsgaHIsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiWiIpLCAoKSA9PiBkdC5zZXRab25lKCJ1dGMiLCB7IGtlZXBMb2NhbFRpbWU6IHRydWUgfSkpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIlsiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvWzAtOUEtWmEteistXC9dKy91KSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiXSIpLCAoX2EsIHpvbmUsIF9iKSA9PiBkdC5zZXRab25lKHpvbmUsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KSkpKQogICAgICAgICAgLmFzc2VydCgoZHQpID0+IGR0LmlzVmFsaWQsICJ2YWxpZCBkYXRlIikKICAgICAgICAgIC5kZXNjKCJkYXRlIGluIGZvcm1hdCBZWVlZLU1NWy1ERFRISC1NTS1TUy5NU10iKSwKICAgICAgLy8gQSBkYXRlLCBwbHVzIHZhcmlvdXMgc2hvcnRoYW5kIHRpbWVzIG9mIGRheSBpdCBjb3VsZCBiZS4KICAgICAgZGF0ZVBsdXM6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChxLmRhdGVTaG9ydGhhbmQubWFwKGQgPT4gREFURV9TSE9SVEhBTkRTW2RdKCkpLCBxLmRhdGUpLmRlc2MoImRhdGUgaW4gZm9ybWF0IFlZWVktTU1bLUREVEhILU1NLVNTLk1TXSBvciBpbiBzaG9ydGhhbmQiKSwKICAgICAgLy8gQSBkdXJhdGlvbiBvZiB0aW1lLgogICAgICBkdXJhdGlvblR5cGU6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdCguLi5PYmplY3Qua2V5cyhEVVJBVElPTl9UWVBFUykKICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiLmxlbmd0aCAtIGEubGVuZ3RoKQogICAgICAgICAgLm1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKSksCiAgICAgIGR1cmF0aW9uOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocS5udW1iZXIsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmR1cmF0aW9uVHlwZSwgKGNvdW50LCBfLCB0KSA9PiBEVVJBVElPTl9UWVBFU1t0XS5tYXBVbml0cyh4ID0+IHggKiBjb3VudCkpCiAgICAgICAgICAuc2VwQnkxKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKS5vcihwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSkpCiAgICAgICAgICAubWFwKGR1cmF0aW9ucyA9PiBkdXJhdGlvbnMucmVkdWNlKChwLCBjKSA9PiBwLnBsdXMoYykpKQogICAgICAgICAgLmRlc2MoImR1cmF0aW9uIGxpa2UgNGhyMm1pbiIpLAogICAgICAvLyBBIHJhdyBudWxsIHZhbHVlLgogICAgICByYXdOdWxsOiBfID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIm51bGwiKSwKICAgICAgLy8gU291cmNlIHBhcnNpbmcuCiAgICAgIHRhZ1NvdXJjZTogcSA9PiBxLnRhZy5tYXAodGFnID0+IFNvdXJjZXMudGFnKHRhZykpLAogICAgICBjc3ZTb3VyY2U6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJjc3YoIikuc2tpcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSksIHEuc3RyaW5nLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIpIiksIChfMSwgcGF0aCwgXzIpID0+IFNvdXJjZXMuY3N2KHBhdGgpKSwKICAgICAgbGlua0luY29taW5nU291cmNlOiBxID0+IHEubGluay5tYXAobGluayA9PiBTb3VyY2VzLmxpbmsobGluay5wYXRoLCB0cnVlKSksCiAgICAgIGxpbmtPdXRnb2luZ1NvdXJjZTogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIm91dGdvaW5nKCIpLnNraXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBxLmxpbmssIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIikiKSwgKF8xLCBsaW5rLCBfMikgPT4gU291cmNlcy5saW5rKGxpbmsucGF0aCwgZmFsc2UpKSwKICAgICAgZm9sZGVyU291cmNlOiBxID0+IHEuc3RyaW5nLm1hcChzdHIgPT4gU291cmNlcy5mb2xkZXIoc3RyKSksCiAgICAgIHBhcmVuc1NvdXJjZTogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIigiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuc291cmNlLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLCAoXzEsIF8yLCBmaWVsZCwgXzMsIF80KSA9PiBmaWVsZCksCiAgICAgIG5lZ2F0ZVNvdXJjZTogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLSIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIhIikpLCBxLmF0b21Tb3VyY2UsIChfLCBzb3VyY2UpID0+IFNvdXJjZXMubmVnYXRlKHNvdXJjZSkpLAogICAgICBhdG9tU291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocS5wYXJlbnNTb3VyY2UsIHEubmVnYXRlU291cmNlLCBxLmxpbmtPdXRnb2luZ1NvdXJjZSwgcS5saW5rSW5jb21pbmdTb3VyY2UsIHEuZm9sZGVyU291cmNlLCBxLnRhZ1NvdXJjZSwgcS5jc3ZTb3VyY2UpLAogICAgICBiaW5hcnlPcFNvdXJjZTogcSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5hdG9tU291cmNlLCBxLmJpbmFyeUJvb2xlYW5PcC5tYXAocyA9PiBzKSwgU291cmNlcy5iaW5hcnlPcCksCiAgICAgIHNvdXJjZTogcSA9PiBxLmJpbmFyeU9wU291cmNlLAogICAgICAvLyBGaWVsZCBwYXJzaW5nLgogICAgICB2YXJpYWJsZUZpZWxkOiBxID0+IHEuaWRlbnRpZmllcgogICAgICAgICAgLmNoYWluKHIgPT4gewogICAgICAgICAgaWYgKEtFWVdPUkRTLmluY2x1ZGVzKHIudG9VcHBlckNhc2UoKSkpIHsKICAgICAgICAgICAgICByZXR1cm4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmZhaWwoIlZhcmlhYmxlIGZpZWxkcyBjYW5ub3QgYmUgYSBrZXl3b3JkICgiICsgS0VZV09SRFMuam9pbigiIG9yICIpICsgIikiKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHJldHVybiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3VjY2VlZChGaWVsZHMudmFyaWFibGUocikpOwogICAgICAgICAgfQogICAgICB9KQogICAgICAgICAgLmRlc2MoInZhcmlhYmxlIiksCiAgICAgIG51bWJlckZpZWxkOiBxID0+IHEubnVtYmVyLm1hcCh2YWwgPT4gRmllbGRzLmxpdGVyYWwodmFsKSkuZGVzYygibnVtYmVyIiksCiAgICAgIHN0cmluZ0ZpZWxkOiBxID0+IHEuc3RyaW5nLm1hcCh2YWwgPT4gRmllbGRzLmxpdGVyYWwodmFsKSkuZGVzYygic3RyaW5nIiksCiAgICAgIGJvb2xGaWVsZDogcSA9PiBxLmJvb2wubWFwKHZhbCA9PiBGaWVsZHMubGl0ZXJhbCh2YWwpKS5kZXNjKCJib29sZWFuIiksCiAgICAgIGRhdGVGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoImRhdGUoIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmRhdGVQbHVzLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLCAocHJlZml4LCBfMSwgZGF0ZSwgXzIsIHBvc3RmaXgpID0+IEZpZWxkcy5saXRlcmFsKGRhdGUpKS5kZXNjKCJkYXRlIiksCiAgICAgIGR1cmF0aW9uRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJkdXIoIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmR1cmF0aW9uLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLCAocHJlZml4LCBfMSwgZHVyLCBfMiwgcG9zdGZpeCkgPT4gRmllbGRzLmxpdGVyYWwoZHVyKSkuZGVzYygiZHVyYXRpb24iKSwKICAgICAgbnVsbEZpZWxkOiBxID0+IHEucmF3TnVsbC5tYXAoXyA9PiBGaWVsZHMuTlVMTCksCiAgICAgIGxpbmtGaWVsZDogcSA9PiBxLmxpbmsubWFwKGYgPT4gRmllbGRzLmxpdGVyYWwoZikpLAogICAgICBsaXN0RmllbGQ6IHEgPT4gcS5maWVsZAogICAgICAgICAgLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSkKICAgICAgICAgIC53cmFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIlsiKS5za2lwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UudGhlbihwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJdIikpKQogICAgICAgICAgLm1hcChsID0+IEZpZWxkcy5saXN0KGwpKQogICAgICAgICAgLmRlc2MoImxpc3QgKCdbMSwgMiwgM10nKSIpLAogICAgICBvYmplY3RGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHEuaWRlbnRpZmllci5vcihxLnN0cmluZyksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIjoiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcS5maWVsZCwgKG5hbWUsIF9zZXAsIHZhbHVlKSA9PiB7CiAgICAgICAgICByZXR1cm4geyBuYW1lLCB2YWx1ZSB9OwogICAgICB9KQogICAgICAgICAgLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSkKICAgICAgICAgIC53cmFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoInsiKS5za2lwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UudGhlbihwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJ9IikpKQogICAgICAgICAgLm1hcCh2YWxzID0+IHsKICAgICAgICAgIGxldCByZXMgPSB7fTsKICAgICAgICAgIGZvciAobGV0IGVudHJ5IG9mIHZhbHMpCiAgICAgICAgICAgICAgcmVzW2VudHJ5Lm5hbWVdID0gZW50cnkudmFsdWU7CiAgICAgICAgICByZXR1cm4gRmllbGRzLm9iamVjdChyZXMpOwogICAgICB9KQogICAgICAgICAgLmRlc2MoIm9iamVjdCAoJ3sgYTogMSwgYjogMiB9JykiKSwKICAgICAgYXRvbUlubGluZUZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocS5kYXRlLCBxLmR1cmF0aW9uLm1hcChkID0+IG5vcm1hbGl6ZUR1cmF0aW9uKGQpKSwgcS5zdHJpbmcsIHEudGFnLCBxLmVtYmVkTGluaywgcS5ib29sLCBxLm51bWJlciwgcS5yYXdOdWxsKSwKICAgICAgaW5saW5lRmllbGRMaXN0OiBxID0+IHEuYXRvbUlubGluZUZpZWxkLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKS5sb29rYWhlYWQocS5hdG9tSW5saW5lRmllbGQpKSwKICAgICAgaW5saW5lRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHEuYXRvbUlubGluZUZpZWxkLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSksIHEuaW5saW5lRmllbGRMaXN0LCAoZiwgX3MsIGwpID0+IFtmXS5jb25jYXQobCkpLCBxLmF0b21JbmxpbmVGaWVsZCksCiAgICAgIGF0b21GaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KAogICAgICAvLyBQbGFjZSBlbWJlZCBsaW5rcyBhYm92ZSBuZWdhdGVkIGZpZWxkcyBhcyB0aGV5IGFyZSB0aGUgc3BlY2lhbCBwYXJzZXIgY2FzZSAnIVtbdGhpbmddXScgYW5kIGFyZSBnZW5lcmFsbHkgdW5hbWJpZ2lvdXMuCiAgICAgIHEuZW1iZWRMaW5rLm1hcChsID0+IEZpZWxkcy5saXRlcmFsKGwpKSwgcS5uZWdhdGVkRmllbGQsIHEubGlua0ZpZWxkLCBxLmxpc3RGaWVsZCwgcS5vYmplY3RGaWVsZCwgcS5sYW1iZGFGaWVsZCwgcS5wYXJlbnNGaWVsZCwgcS5ib29sRmllbGQsIHEubnVtYmVyRmllbGQsIHEuc3RyaW5nRmllbGQsIHEuZGF0ZUZpZWxkLCBxLmR1cmF0aW9uRmllbGQsIHEubnVsbEZpZWxkLCBxLnZhcmlhYmxlRmllbGQpLAogICAgICBpbmRleEZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocS5hdG9tRmllbGQsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocS5kb3RQb3N0Zml4LCBxLmluZGV4UG9zdGZpeCwgcS5mdW5jdGlvblBvc3RmaXgpLm1hbnkoKSwgKG9iaiwgcG9zdGZpeGVzKSA9PiB7CiAgICAgICAgICBsZXQgcmVzdWx0ID0gb2JqOwogICAgICAgICAgZm9yIChsZXQgcG9zdCBvZiBwb3N0Zml4ZXMpIHsKICAgICAgICAgICAgICBzd2l0Y2ggKHBvc3QudHlwZSkgewogICAgICAgICAgICAgICAgICBjYXNlICJkb3QiOgogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gRmllbGRzLmluZGV4KHJlc3VsdCwgRmllbGRzLmxpdGVyYWwocG9zdC5maWVsZCkpOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIGNhc2UgImluZGV4IjoKICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZpZWxkcy5pbmRleChyZXN1bHQsIHBvc3QuZmllbGQpOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIGNhc2UgImZ1bmN0aW9uIjoKICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZpZWxkcy5mdW5jKHJlc3VsdCwgcG9zdC5maWVsZHMpOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgfSksCiAgICAgIG5lZ2F0ZWRGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiEiKSwgcS5pbmRleEZpZWxkLCAoXywgZmllbGQpID0+IEZpZWxkcy5uZWdhdGUoZmllbGQpKS5kZXNjKCJuZWdhdGVkIGZpZWxkIiksCiAgICAgIHBhcmVuc0ZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKCIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcS5maWVsZCwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIikiKSwgKF8xLCBfMiwgZmllbGQsIF8zLCBfNCkgPT4gZmllbGQpLAogICAgICBsYW1iZGFGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHEuaWRlbnRpZmllcgogICAgICAgICAgLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSkKICAgICAgICAgIC53cmFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIigiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiPT4iKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcS5maWVsZCwgKGlkZW50LCBfaWdub3JlLCB2YWx1ZSkgPT4gewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImxhbWJkYSIsIGFyZ3VtZW50czogaWRlbnQsIHZhbHVlIH07CiAgICAgIH0pLAogICAgICBkb3RQb3N0Zml4OiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLiIpLCBxLmlkZW50aWZpZXIsIChfLCBmaWVsZCkgPT4gewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImRvdCIsIGZpZWxkOiBmaWVsZCB9OwogICAgICB9KSwKICAgICAgaW5kZXhQb3N0Zml4OiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiWyIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcS5maWVsZCwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIl0iKSwgKF8sIF8yLCBmaWVsZCwgXzMsIF80KSA9PiB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiaW5kZXgiLCBmaWVsZCB9OwogICAgICB9KSwKICAgICAgZnVuY3Rpb25Qb3N0Zml4OiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKCIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcS5maWVsZC5zZXBCeShwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSkpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLCAoXywgXzEsIGZpZWxkcywgXzIsIF8zKSA9PiB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZnVuY3Rpb24iLCBmaWVsZHMgfTsKICAgICAgfSksCiAgICAgIC8vIFRoZSBwcmVjZWRlbmNlIGhpZXJhcmNoeSBvZiBvcGVyYXRvcnMgLSBtdWx0aXBseS9kaXZpZGUsIGFkZC9zdWJ0cmFjdCwgY29tcGFyZSwgYW5kIHRoZW4gYm9vbGVhbiBvcGVyYXRpb25zLgogICAgICBiaW5hcnlNdWxEaXZGaWVsZDogcSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5pbmRleEZpZWxkLCBxLmJpbmFyeU11bERpdiwgRmllbGRzLmJpbmFyeU9wKSwKICAgICAgYmluYXJ5UGx1c01pbnVzRmllbGQ6IHEgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuYmluYXJ5TXVsRGl2RmllbGQsIHEuYmluYXJ5UGx1c01pbnVzLCBGaWVsZHMuYmluYXJ5T3ApLAogICAgICBiaW5hcnlDb21wYXJlRmllbGQ6IHEgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuYmluYXJ5UGx1c01pbnVzRmllbGQsIHEuYmluYXJ5Q29tcGFyZU9wLCBGaWVsZHMuYmluYXJ5T3ApLAogICAgICBiaW5hcnlCb29sZWFuRmllbGQ6IHEgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuYmluYXJ5Q29tcGFyZUZpZWxkLCBxLmJpbmFyeUJvb2xlYW5PcCwgRmllbGRzLmJpbmFyeU9wKSwKICAgICAgYmluYXJ5T3BGaWVsZDogcSA9PiBxLmJpbmFyeUJvb2xlYW5GaWVsZCwKICAgICAgZmllbGQ6IHEgPT4gcS5iaW5hcnlPcEZpZWxkLAogIH0pOwoKICAvKiogUGFyc2UgaW5saW5lIGZpZWxkcyBhbmQgb3RoZXIgZW1iZWRkZWQgbWV0YWRhdGEgaW4gYSBsaW5lLiAqLwogIC8qKiBUaGUgd3JhcHBlciBjaGFyYWN0ZXJzIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIGFuIGlubGluZSBmaWVsZC4gKi8KICBjb25zdCBJTkxJTkVfRklFTERfV1JBUFBFUlMgPSBPYmplY3QuZnJlZXplKHsKICAgICAgIlsiOiAiXSIsCiAgICAgICIoIjogIikiLAogIH0pOwogIC8qKgogICAqIEZpbmQgYSBtYXRjaGluZyBjbG9zaW5nIGJyYWNrZXQgdGhhdCBvY2N1cnMgYXQgb3IgYWZ0ZXIgYHN0YXJ0YCwgcmVzcGVjdGluZyBuZXN0aW5nIGFuZCBlc2NhcGVzLiBJZiBmb3VuZCwKICAgKiByZXR1cm5zIHRoZSB2YWx1ZSBjb250YWluZWQgd2l0aGluIGFuZCB0aGUgc3RyaW5nIGluZGV4IGFmdGVyIHRoZSBlbmQgb2YgdGhlIHZhbHVlLgogICAqLwogIGZ1bmN0aW9uIGZpbmRDbG9zaW5nKGxpbmUsIHN0YXJ0LCBvcGVuLCBjbG9zZSkgewogICAgICBsZXQgbmVzdGluZyA9IDA7CiAgICAgIGxldCBlc2NhcGVkID0gZmFsc2U7CiAgICAgIGZvciAobGV0IGluZGV4ID0gc3RhcnQ7IGluZGV4IDwgbGluZS5sZW5ndGg7IGluZGV4KyspIHsKICAgICAgICAgIGxldCBjaGFyID0gbGluZS5jaGFyQXQoaW5kZXgpOwogICAgICAgICAgLy8gQWxsb3dzIGZvciBkb3VibGUgZXNjYXBlcyBsaWtlICdcXCcgdG8gYmUgcmVuZGVyZWQgbm9ybWFsbHkuCiAgICAgICAgICBpZiAoY2hhciA9PSAiXFwiKSB7CiAgICAgICAgICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkOwogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgLy8gSWYgZXNjYXBlZCwgaWdub3JlIHRoZSBuZXh0IGNoYXJhY3RlciBmb3IgY29tcHV0aW5nIG5lc3RpbmcsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCBpdCBpcy4KICAgICAgICAgIGlmIChlc2NhcGVkKSB7CiAgICAgICAgICAgICAgZXNjYXBlZCA9IGZhbHNlOwogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgaWYgKGNoYXIgPT0gb3BlbikKICAgICAgICAgICAgICBuZXN0aW5nKys7CiAgICAgICAgICBlbHNlIGlmIChjaGFyID09IGNsb3NlKQogICAgICAgICAgICAgIG5lc3RpbmctLTsKICAgICAgICAgIC8vIE9ubHkgb2NjdXJzIGlmIHdlIGFyZSBvbiBhIGNsb3NlIGNoYXJhY3RlciBhbmQgdHJoZXJlIGlzIG5vIG1vcmUgbmVzdGluZy4KICAgICAgICAgIGlmIChuZXN0aW5nIDwgMCkKICAgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbGluZS5zdWJzdHJpbmcoc3RhcnQsIGluZGV4KS50cmltKCksIGVuZEluZGV4OiBpbmRleCArIDEgfTsKICAgICAgICAgIGVzY2FwZWQgPSBmYWxzZTsKICAgICAgfQogICAgICByZXR1cm4gdW5kZWZpbmVkOwogIH0KICAvKiogRmluZCB0aGUgJzo6JyBzZXBhcmF0b3IgaW4gYW4gaW5saW5lIGZpZWxkLiAqLwogIGZ1bmN0aW9uIGZpbmRTZXBhcmF0b3IobGluZSwgc3RhcnQpIHsKICAgICAgbGV0IHNlcCA9IGxpbmUuaW5kZXhPZigiOjoiLCBzdGFydCk7CiAgICAgIGlmIChzZXAgPCAwKQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgcmV0dXJuIHsga2V5OiBsaW5lLnN1YnN0cmluZyhzdGFydCwgc2VwKS50cmltKCksIHZhbHVlSW5kZXg6IHNlcCArIDIgfTsKICB9CiAgLyoqIFRyeSB0byBjb21wbGV0ZWx5IHBhcnNlIGFuIGlubGluZSBmaWVsZCBzdGFydGluZyBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24uIEFzc3VlbXMgYHN0YXJ0YCBpcyBvbiBhIHdyYXBwaW5nIGNoYXJhY3Rlci4gKi8KICBmdW5jdGlvbiBmaW5kU3BlY2lmaWNJbmxpbmVGaWVsZChsaW5lLCBzdGFydCkgewogICAgICBsZXQgb3BlbiA9IGxpbmUuY2hhckF0KHN0YXJ0KTsKICAgICAgbGV0IGtleSA9IGZpbmRTZXBhcmF0b3IobGluZSwgc3RhcnQgKyAxKTsKICAgICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgLy8gRmFpbCB0aGUgbWF0Y2ggaWYgd2UgZmluZCBhbnkgc2VwYXJhdG9yIGNoYXJhY3RlcnMgKG5vdCBhbGxvd2VkIGluIGtleXMpLgogICAgICBmb3IgKGxldCBzZXAgb2YgT2JqZWN0LmtleXMoSU5MSU5FX0ZJRUxEX1dSQVBQRVJTKS5jb25jYXQoT2JqZWN0LnZhbHVlcyhJTkxJTkVfRklFTERfV1JBUFBFUlMpKSkgewogICAgICAgICAgaWYgKGtleS5rZXkuaW5jbHVkZXMoc2VwKSkKICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICB9CiAgICAgIGxldCB2YWx1ZSA9IGZpbmRDbG9zaW5nKGxpbmUsIGtleS52YWx1ZUluZGV4LCBvcGVuLCBJTkxJTkVfRklFTERfV1JBUFBFUlNbb3Blbl0pOwogICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkKICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgIHJldHVybiB7CiAgICAgICAgICBrZXk6IGtleS5rZXksCiAgICAgICAgICB2YWx1ZTogdmFsdWUudmFsdWUsCiAgICAgICAgICBzdGFydDogc3RhcnQsCiAgICAgICAgICBzdGFydFZhbHVlOiBrZXkudmFsdWVJbmRleCwKICAgICAgICAgIGVuZDogdmFsdWUuZW5kSW5kZXgsCiAgICAgICAgICB3cmFwcGluZzogb3BlbiwKICAgICAgfTsKICB9CiAgLyoqIFBhcnNlIGEgdGV4dHVhbCBpbmxpbmUgZmllbGQgdmFsdWUgaW50byBzb21ldGhpbmcgd2UgY2FuIHdvcmsgd2l0aC4gKi8KICBmdW5jdGlvbiBwYXJzZUlubGluZVZhbHVlKHZhbHVlKSB7CiAgICAgIC8vIEVtcHR5IGlubGluZSB2YWx1ZXMgKGkuZS4sIG5vIHRleHQpIHNob3VsZCBtYXAgdG8gbnVsbCB0byBtYXRjaCBsb25nLXRlcm0gRGF0YXZpZXcgc2VtYW50aWNzLgogICAgICAvLyBOdWxsIGlzIGFsc28gYSBtb3JlIHVuaXZlcnNhbCB0eXBlIHRvIGRlYWwgd2l0aCB0aGFuIHN0cmluZ3MsIHNpbmNlIGFsbCBmdW5jdGlvbnMgYWNjZXB0IG51bGxzLgogICAgICBpZiAodmFsdWUudHJpbSgpID09ICIiKQogICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIC8vIFRoZSBzdHJpcHBlZCBsaXRlcmFsIGZpZWxkIHBhcnNlciB1bmRlcnN0YW5kcyBhbGwgb2YgdGhlIG5vbi1hcnJheS9ub24tb2JqZWN0IGZpZWxkcyBhbmQgY2FuIHBhcnNlIHRoZW0gZm9yIHVzLgogICAgICAvLyBJbmxpbmUgZmllbGQgb2JqZWN0cyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQ7IGlubGluZSBhcnJheSBvYmplY3RzIGhhdmUgdG8gYmUgaGFuZGxlZCBieSB0aGUgcGFyc2VyCiAgICAgIC8vIHNlcGFyYXRlbHkuCiAgICAgIGxldCBpbmxpbmUgPSBFWFBSRVNTSU9OLmlubGluZUZpZWxkLnBhcnNlKHZhbHVlKTsKICAgICAgaWYgKGlubGluZS5zdGF0dXMpCiAgICAgICAgICByZXR1cm4gaW5saW5lLnZhbHVlOwogICAgICBlbHNlCiAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgfQogIC8qKiBFeHRyYWN0cyBpbmxpbmUgZmllbGRzIG9mIHRoZSBmb3JtICdba2V5OjogdmFsdWVdJyBmcm9tIGEgbGluZSBvZiB0ZXh0LiBUaGlzIGlzIGRvbmUgaW4gYSByZWxhdGl2ZWx5CiAgICogInJvYnVzdCIgd2F5IHRvIGF2b2lkIGZhaWxpbmcgZHVlIHRvIGJhZCBuZXN0aW5nIG9yIG90aGVyIGludGVyZmVyaW5nIE1hcmtkb3duIHN5bWJvbHM6CiAgICoKICAgKiAtIExvb2sgZm9yIGFueSB3cmFwcGVycyAoJ1snIGFuZCAnKCcpIGluIHRoZSBsaW5lLCB0cnlpbmcgdG8gcGFyc2Ugd2hhdGV2ZXIgY29tZXMgYWZ0ZXIgaXQgYXMgYW4gaW5saW5lIGtleTo6LgogICAqIC0gSWYgc3VjY2Vzc2Z1bCwgc2NhbiB1bnRpbCB5b3UgZmluZCBhIG1hdGNoaW5nIGVuZCBicmFja2V0LCBhbmQgcGFyc2Ugd2hhdGV2ZXIgcmVtYWlucyBhcyBhbiBpbmxpbmUgdmFsdWUuCiAgICovCiAgZnVuY3Rpb24gZXh0cmFjdElubGluZUZpZWxkcyhsaW5lLCBpbmNsdWRlVGFza0ZpZWxkcyA9IGZhbHNlKSB7CiAgICAgIGxldCBmaWVsZHMgPSBbXTsKICAgICAgZm9yIChsZXQgd3JhcHBlciBvZiBPYmplY3Qua2V5cyhJTkxJTkVfRklFTERfV1JBUFBFUlMpKSB7CiAgICAgICAgICBsZXQgZm91bmRJbmRleCA9IGxpbmUuaW5kZXhPZih3cmFwcGVyKTsKICAgICAgICAgIHdoaWxlIChmb3VuZEluZGV4ID49IDApIHsKICAgICAgICAgICAgICBsZXQgcGFyc2VkRmllbGQgPSBmaW5kU3BlY2lmaWNJbmxpbmVGaWVsZChsaW5lLCBmb3VuZEluZGV4KTsKICAgICAgICAgICAgICBpZiAoIXBhcnNlZEZpZWxkKSB7CiAgICAgICAgICAgICAgICAgIGZvdW5kSW5kZXggPSBsaW5lLmluZGV4T2Yod3JhcHBlciwgZm91bmRJbmRleCArIDEpOwogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZmllbGRzLnB1c2gocGFyc2VkRmllbGQpOwogICAgICAgICAgICAgIGZvdW5kSW5kZXggPSBsaW5lLmluZGV4T2Yod3JhcHBlciwgcGFyc2VkRmllbGQuZW5kKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBpZiAoaW5jbHVkZVRhc2tGaWVsZHMpCiAgICAgICAgICBmaWVsZHMgPSBmaWVsZHMuY29uY2F0KGV4dHJhY3RTcGVjaWFsVGFza0ZpZWxkcyhsaW5lKSk7CiAgICAgIGZpZWxkcy5zb3J0KChhLCBiKSA9PiBhLnN0YXJ0IC0gYi5zdGFydCk7CiAgICAgIGxldCBmaWx0ZXJlZEZpZWxkcyA9IFtdOwogICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpZWxkcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgaWYgKGkgPT0gMCB8fCBmaWx0ZXJlZEZpZWxkc1tmaWx0ZXJlZEZpZWxkcy5sZW5ndGggLSAxXS5lbmQgPCBmaWVsZHNbaV0uc3RhcnQpIHsKICAgICAgICAgICAgICBmaWx0ZXJlZEZpZWxkcy5wdXNoKGZpZWxkc1tpXSk7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIGZpbHRlcmVkRmllbGRzOwogIH0KICAvKiogVmFsaWRhdGVzIHRoYXQgYSByYXcgZmllbGQgbmFtZSBoYXMgYSB2YWxpZCBmb3JtLiAqLwogIGNvbnN0IEZVTExfTElORV9LRVlfUEFSVCA9IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cChuZXcgUmVnRXhwKGVtb2ppUmVnZXgoKSwgInUiKSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1swLTlccHtMZXR0ZXJ9XHdcc18vLV0rL3UpKQogICAgICAubWFueSgpCiAgICAgIC5tYXAocGFydHMgPT4gcGFydHMuam9pbigiIikpOwogIGNvbnN0IEZVTExfTElORV9LRVlfUEFSU0VSID0gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvW14wLTlcd1xwe0xldHRlcn1dKi91KQogICAgICAudGhlbihGVUxMX0xJTkVfS0VZX1BBUlQpCiAgICAgIC5za2lwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1tfXCp+YF0qL3UpKTsKICAvKiogQXR0ZW1wdCB0byBleHRyYWN0IGEgZnVsbC1saW5lIGZpZWxkIChLZXk6OiBWYWx1ZSBjb25zdW1pbmcgdGhlIGVudGlyZSBjb250ZW50IGxpbmUpLiAqLwogIGZ1bmN0aW9uIGV4dHJhY3RGdWxsTGluZUZpZWxkKHRleHQpIHsKICAgICAgbGV0IHNlcCA9IGZpbmRTZXBhcmF0b3IodGV4dCwgMCk7CiAgICAgIGlmICghc2VwKQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgLy8gV2UgbmVlZCB0byBwb3N0LXByb2Nlc3MgdGhlIGtleSB0byBkcm9wIHVubmVjZXNzYXJ5IG9wZW5pbmcgYW5ub3RhdGlvbnMgYXMgd2VsbCBhcwogICAgICAvLyBkcm9wIHN1cnJvdW5kaW5nIE1hcmtkb3duLgogICAgICBsZXQgcmVhbEtleSA9IEZVTExfTElORV9LRVlfUEFSU0VSLnBhcnNlKHNlcC5rZXkpOwogICAgICBpZiAoIXJlYWxLZXkuc3RhdHVzKQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgcmV0dXJuIHsKICAgICAgICAgIGtleTogcmVhbEtleS52YWx1ZSwKICAgICAgICAgIHZhbHVlOiB0ZXh0LnN1YnN0cmluZyhzZXAudmFsdWVJbmRleCkudHJpbSgpLAogICAgICAgICAgc3RhcnQ6IDAsCiAgICAgICAgICBzdGFydFZhbHVlOiBzZXAudmFsdWVJbmRleCwKICAgICAgICAgIGVuZDogdGV4dC5sZW5ndGgsCiAgICAgIH07CiAgfQogIGNvbnN0IENSRUFURURfREFURV9SRUdFWCA9IC9cdXsyNzk1fVxzKihcZHs0fS1cZHsyfS1cZHsyfSkvdTsKICBjb25zdCBEVUVfREFURV9SRUdFWCA9IC8oPzpcdXsxRjRDNX18XHV7MUY0QzZ9fFx1ezFGNUQzfVx1e0ZFMEZ9PylccyooXGR7NH0tXGR7Mn0tXGR7Mn0pL3U7CiAgY29uc3QgRE9ORV9EQVRFX1JFR0VYID0gL1x1ezI3MDV9XHMqKFxkezR9LVxkezJ9LVxkezJ9KS91OwogIGNvbnN0IFNDSEVEVUxFRF9EQVRFX1JFR0VYID0gL1tcdXsyM0YzfVx1ezIzMUJ9XVxzKihcZHs0fS1cZHsyfS1cZHsyfSkvdTsKICBjb25zdCBTVEFSVF9EQVRFX1JFR0VYID0gL1x1ezFGNkVCfVxzKihcZHs0fS1cZHsyfS1cZHsyfSkvdTsKICBjb25zdCBFTU9KSV9SRUdFWEVTID0gWwogICAgICB7IHJlZ2V4OiBDUkVBVEVEX0RBVEVfUkVHRVgsIGtleTogImNyZWF0ZWQiIH0sCiAgICAgIHsgcmVnZXg6IFNUQVJUX0RBVEVfUkVHRVgsIGtleTogInN0YXJ0IiB9LAogICAgICB7IHJlZ2V4OiBTQ0hFRFVMRURfREFURV9SRUdFWCwga2V5OiAic2NoZWR1bGVkIiB9LAogICAgICB7IHJlZ2V4OiBEVUVfREFURV9SRUdFWCwga2V5OiAiZHVlIiB9LAogICAgICB7IHJlZ2V4OiBET05FX0RBVEVfUkVHRVgsIGtleTogImNvbXBsZXRpb24iIH0sCiAgXTsKICAvKiogUGFyc2Ugc3BlY2lhbCBjb21wbGV0ZWQvZHVlL2RvbmUgdGFzayBmaWVsZHMgd2hpY2ggYXJlIG1hcmtlZCB2aWEgZW1vamkuICovCiAgZnVuY3Rpb24gZXh0cmFjdFNwZWNpYWxUYXNrRmllbGRzKGxpbmUpIHsKICAgICAgbGV0IHJlc3VsdHMgPSBbXTsKICAgICAgZm9yIChsZXQgeyByZWdleCwga2V5IH0gb2YgRU1PSklfUkVHRVhFUykgewogICAgICAgICAgY29uc3QgbWF0Y2ggPSByZWdleC5leGVjKGxpbmUpOwogICAgICAgICAgaWYgKCFtYXRjaCkKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIHJlc3VsdHMucHVzaCh7CiAgICAgICAgICAgICAga2V5LAogICAgICAgICAgICAgIHZhbHVlOiBtYXRjaFsxXSwKICAgICAgICAgICAgICBzdGFydDogbWF0Y2guaW5kZXgsCiAgICAgICAgICAgICAgc3RhcnRWYWx1ZTogbWF0Y2guaW5kZXggKyAxLAogICAgICAgICAgICAgIGVuZDogbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGgsCiAgICAgICAgICAgICAgd3JhcHBpbmc6ICJlbW9qaS1zaG9ydGhhbmQiLAogICAgICAgICAgfSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgfQoKICAvKiogQWxsIGV4dHJhY3RlZCBtYXJrZG93biBmaWxlIG1ldGFkYXRhIG9idGFpbmVkIGZyb20gYSBmaWxlLiAqLwogIGNsYXNzIFBhZ2VNZXRhZGF0YSB7CiAgICAgIGNvbnN0cnVjdG9yKHBhdGgsIGluaXQpIHsKICAgICAgICAgIHRoaXMucGF0aCA9IHBhdGg7CiAgICAgICAgICB0aGlzLmZpZWxkcyA9IG5ldyBNYXAoKTsKICAgICAgICAgIHRoaXMuZnJvbnRtYXR0ZXIgPSB7fTsKICAgICAgICAgIHRoaXMudGFncyA9IG5ldyBTZXQoKTsKICAgICAgICAgIHRoaXMuYWxpYXNlcyA9IG5ldyBTZXQoKTsKICAgICAgICAgIHRoaXMubGlua3MgPSBbXTsKICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgaW5pdCk7CiAgICAgICAgICB0aGlzLmxpc3RzID0gKHRoaXMubGlzdHMgfHwgW10pLm1hcChsID0+IG5ldyBMaXN0SXRlbShsKSk7CiAgICAgIH0KICAgICAgLyoqIENhbm9uaWNhbGl6ZSByYXcgbGlua3MgYW5kIG90aGVyIGRhdGEgaW4gcGFydGlhbCBkYXRhIHdpdGggbm9ybWFsaXplcnMsIHJldHVybmluZyBhIGNvbXBsZXRlZCBvYmplY3QuICovCiAgICAgIHN0YXRpYyBjYW5vbmljYWxpemUoZGF0YSwgbGlua05vcm1hbGl6ZXIpIHsKICAgICAgICAgIC8vIE11dGF0ZSB0aGUgZGF0YSBmb3Igbm93LCB3aGljaCBpcyBwcm9iYWJseSBhIGJhZCBpZGVhIGJ1dC4uLiBhbGwgd2VsbC4KICAgICAgICAgIGlmIChkYXRhLmZyb250bWF0dGVyKSB7CiAgICAgICAgICAgICAgZGF0YS5mcm9udG1hdHRlciA9IFZhbHVlcy5tYXBMZWF2ZXMoZGF0YS5mcm9udG1hdHRlciwgdCA9PiBWYWx1ZXMuaXNMaW5rKHQpID8gbGlua05vcm1hbGl6ZXIodCkgOiB0KTsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChkYXRhLmZpZWxkcykgewogICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBkYXRhLmZpZWxkcy5lbnRyaWVzKCkpIHsKICAgICAgICAgICAgICAgICAgZGF0YS5maWVsZHMuc2V0KGtleSwgVmFsdWVzLm1hcExlYXZlcyh2YWx1ZSwgdCA9PiAoVmFsdWVzLmlzTGluayh0KSA/IGxpbmtOb3JtYWxpemVyKHQpIDogdCkpKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoZGF0YS5saXN0cykgewogICAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgZGF0YS5saXN0cykgewogICAgICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgaXRlbS5maWVsZHMuZW50cmllcygpKSB7CiAgICAgICAgICAgICAgICAgICAgICBpdGVtLmZpZWxkcy5zZXQoa2V5LCB2YWx1ZS5tYXAoeCA9PiBWYWx1ZXMubWFwTGVhdmVzKHgsIHQgPT4gKFZhbHVlcy5pc0xpbmsodCkgPyBsaW5rTm9ybWFsaXplcih0KSA6IHQpKSkpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaWYgKGRhdGEubGlua3MpIHsKICAgICAgICAgICAgICBkYXRhLmxpbmtzID0gZGF0YS5saW5rcy5tYXAobCA9PiBsaW5rTm9ybWFsaXplcihsKSk7CiAgICAgICAgICB9CiAgICAgICAgICAvLyBUaGlzIGlzIHByZXR0eSB1Z2x5LCBidXQgaXQncyBub3QgcG9zc2libGUgdG8gbm9ybWFsaXplIG9uIHRoZSB3b3JrZXIgdGhyZWFkIHRoYXQgZG9lcyBwYXJzaW5nLgogICAgICAgICAgLy8gVGhlIGJlc3Qgd2F5IHRvIGltcHJvdmUgdGhpcyBpcyB0byBpbnN0ZWFkIGp1c3QgY2Fub25pY2FsaXplIHRoZSBlbnRpcmUgZGF0YSBvYmplY3Q7IEkgY2FuIHRyeSB0bwogICAgICAgICAgLy8gb3B0aW1pemUgYFZhbHVlcy5tYXBMZWF2ZXNgIHRvIG9ubHkgbXV0YXRlIGlmIGl0IGFjdHVhbGx5IGNoYW5nZXMgdGhpbmdzLgogICAgICAgICAgcmV0dXJuIG5ldyBQYWdlTWV0YWRhdGEoZGF0YS5wYXRoLCBkYXRhKTsKICAgICAgfQogICAgICAvKiogVGhlIG5hbWUgKGJhc2VkIG9uIHBhdGgpIG9mIHRoaXMgZmlsZS4gKi8KICAgICAgbmFtZSgpIHsKICAgICAgICAgIHJldHVybiBnZXRGaWxlVGl0bGUodGhpcy5wYXRoKTsKICAgICAgfQogICAgICAvKiogVGhlIGNvbnRhaW5pbmcgZm9sZGVyIChiYXNlZCBvbiBwYXRoKSBvZiB0aGlzIGZpbGUuICovCiAgICAgIGZvbGRlcigpIHsKICAgICAgICAgIHJldHVybiBnZXRQYXJlbnRGb2xkZXIodGhpcy5wYXRoKTsKICAgICAgfQogICAgICAvKiogVGhlIGV4dGVuc2lvbiBvZiB0aGlzIGZpbGUgKGxpa2VseSAnbWQnKS4gKi8KICAgICAgZXh0ZW5zaW9uKCkgewogICAgICAgICAgcmV0dXJuIGdldEV4dGVuc2lvbih0aGlzLnBhdGgpOwogICAgICB9CiAgICAgIC8qKiBSZXR1cm4gYSBzZXQgb2YgdGFncyBBTkQgYWxsIG9mIHRoZWlyIHBhcmVudCB0YWdzIChzbyAjaGVsbG8veWVzIHdvdWxkIGJlY29tZSAjaGVsbG8sICNoZWxsby95ZXMpLiAqLwogICAgICBmdWxsVGFncygpIHsKICAgICAgICAgIGxldCByZXN1bHQgPSBuZXcgU2V0KCk7CiAgICAgICAgICBmb3IgKGxldCB0YWcgb2YgdGhpcy50YWdzKSB7CiAgICAgICAgICAgICAgZm9yIChsZXQgc3VidGFnIG9mIGV4dHJhY3RTdWJ0YWdzKHRhZykpCiAgICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoc3VidGFnKTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgIH0KICAgICAgLyoqIENvbnZlcnQgYWxsIGxpbmtzIGluIHRoaXMgZmlsZSB0byBmaWxlIGxpbmtzLiAqLwogICAgICBmaWxlTGlua3MoKSB7CiAgICAgICAgICAvLyBXZSB3YW50IHRvIG1ha2UgdGhlbSBkaXN0aW5jdCwgYnV0IHdoZXJlIGxpbmtzIGFyZSBub3QgcmF3IGxpbmtzIHdlCiAgICAgICAgICAvLyBub3cga2VlcCB0aGUgYWRkaXRpb25hbCBtZXRhZGF0YS4KICAgICAgICAgIGxldCBkaXN0aW5jdExpbmtzID0gbmV3IFNldCh0aGlzLmxpbmtzKTsKICAgICAgICAgIHJldHVybiBBcnJheS5mcm9tKGRpc3RpbmN0TGlua3MpOwogICAgICB9CiAgICAgIC8qKiBNYXAgdGhpcyBtZXRhZGF0YSB0byBhIGZ1bGwgb2JqZWN0OyB1c2VzIHRoZSBpbmRleCBmb3IgYWRkaXRpb25hbCBkYXRhIGxvb2t1cHMuICAqLwogICAgICBzZXJpYWxpemUoaW5kZXgsIGNhY2hlKSB7CiAgICAgICAgICAvLyBDb252ZXJ0IGxpc3QgaXRlbXMgdmlhIHRoZSBjYW5vbmljYWxpemF0aW9uIGNhY2hlLgogICAgICAgICAgbGV0IHJlYWxDYWNoZSA9IGNhY2hlICE9PSBudWxsICYmIGNhY2hlICE9PSB2b2lkIDAgPyBjYWNoZSA6IG5ldyBMaXN0U2VyaWFsaXphdGlvbkNhY2hlKHRoaXMubGlzdHMpOwogICAgICAgICAgbGV0IHJlc3VsdCA9IHsKICAgICAgICAgICAgICBmaWxlOiB7CiAgICAgICAgICAgICAgICAgIHBhdGg6IHRoaXMucGF0aCwKICAgICAgICAgICAgICAgICAgZm9sZGVyOiB0aGlzLmZvbGRlcigpLAogICAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUoKSwKICAgICAgICAgICAgICAgICAgbGluazogTGluay5maWxlKHRoaXMucGF0aCksCiAgICAgICAgICAgICAgICAgIG91dGxpbmtzOiB0aGlzLmZpbGVMaW5rcygpLAogICAgICAgICAgICAgICAgICBpbmxpbmtzOiBBcnJheS5mcm9tKGluZGV4LmxpbmtzLmdldEludmVyc2UodGhpcy5wYXRoKSkubWFwKGwgPT4gTGluay5maWxlKGwpKSwKICAgICAgICAgICAgICAgICAgZXRhZ3M6IEFycmF5LmZyb20odGhpcy50YWdzKSwKICAgICAgICAgICAgICAgICAgdGFnczogQXJyYXkuZnJvbSh0aGlzLmZ1bGxUYWdzKCkpLAogICAgICAgICAgICAgICAgICBhbGlhc2VzOiBBcnJheS5mcm9tKHRoaXMuYWxpYXNlcyksCiAgICAgICAgICAgICAgICAgIGxpc3RzOiB0aGlzLmxpc3RzLm1hcChsID0+IHJlYWxDYWNoZS5nZXQobC5saW5lKSksCiAgICAgICAgICAgICAgICAgIHRhc2tzOiB0aGlzLmxpc3RzLmZpbHRlcihsID0+ICEhbC50YXNrKS5tYXAobCA9PiByZWFsQ2FjaGUuZ2V0KGwubGluZSkpLAogICAgICAgICAgICAgICAgICBjdGltZTogdGhpcy5jdGltZSwKICAgICAgICAgICAgICAgICAgY2RheTogc3RyaXBUaW1lKHRoaXMuY3RpbWUpLAogICAgICAgICAgICAgICAgICBtdGltZTogdGhpcy5tdGltZSwKICAgICAgICAgICAgICAgICAgbWRheTogc3RyaXBUaW1lKHRoaXMubXRpbWUpLAogICAgICAgICAgICAgICAgICBzaXplOiB0aGlzLnNpemUsCiAgICAgICAgICAgICAgICAgIHN0YXJyZWQ6IGluZGV4LnN0YXJyZWQuc3RhcnJlZCh0aGlzLnBhdGgpLAogICAgICAgICAgICAgICAgICBmcm9udG1hdHRlcjogVmFsdWVzLmRlZXBDb3B5KHRoaXMuZnJvbnRtYXR0ZXIpLAogICAgICAgICAgICAgICAgICBleHQ6IHRoaXMuZXh0ZW5zaW9uKCksCiAgICAgICAgICAgICAgfSwKICAgICAgICAgIH07CiAgICAgICAgICAvLyBBZGQgdGhlIGN1cnJlbnQgZGF5IGlmIHByZXNlbnQuCiAgICAgICAgICBpZiAodGhpcy5kYXkpCiAgICAgICAgICAgICAgcmVzdWx0LmZpbGUuZGF5ID0gdGhpcy5kYXk7CiAgICAgICAgICAvLyBUaGVuIGFwcGVuZCB0aGUgY29tcHV0ZWQgZmllbGRzLgogICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIHRoaXMuZmllbGRzLmVudHJpZXMoKSkgewogICAgICAgICAgICAgIGlmIChrZXkgaW4gcmVzdWx0KQogICAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gRG9uJ3QgYWxsb3cgZmllbGRzIHRvIG92ZXJyaWRlIGV4aXN0aW5nIGtleXMuCiAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgIH0KICB9CiAgLyoqIEEgbGlzdCBpdGVtIGluc2lkZSBvZiBhIGxpc3QuICovCiAgY2xhc3MgTGlzdEl0ZW0gewogICAgICBjb25zdHJ1Y3Rvcihpbml0KSB7CiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGluaXQpOwogICAgICAgICAgdGhpcy5maWVsZHMgPSB0aGlzLmZpZWxkcyB8fCBuZXcgTWFwKCk7CiAgICAgICAgICB0aGlzLnRhZ3MgPSB0aGlzLnRhZ3MgfHwgbmV3IFNldCgpOwogICAgICAgICAgdGhpcy5jaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW4gfHwgW107CiAgICAgICAgICB0aGlzLmxpbmtzID0gdGhpcy5saW5rcyB8fCBbXTsKICAgICAgfQogICAgICBpZCgpIHsKICAgICAgICAgIHJldHVybiBgJHt0aGlzLmZpbGUoKS5wYXRofS0ke3RoaXMubGluZX1gOwogICAgICB9CiAgICAgIGZpbGUoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5saW5rLnRvRmlsZSgpOwogICAgICB9CiAgICAgIG1hcmtkb3duKCkgewogICAgICAgICAgaWYgKHRoaXMudGFzaykKICAgICAgICAgICAgICByZXR1cm4gYCR7dGhpcy5zeW1ib2x9IFske3RoaXMudGFzay5jb21wbGV0ZWQgPyAieCIgOiAiICJ9XSAke3RoaXMudGV4dH1gOwogICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLnN5bWJvbH0gJHt0aGlzLnRleHR9YDsKICAgICAgfQogICAgICBjcmVhdGVkKCkgewogICAgICAgICAgdmFyIF9hLCBfYiwgX2M7CiAgICAgICAgICByZXR1cm4gKF9jID0gKChfYiA9IChfYSA9IHRoaXMuZmllbGRzLmdldCgiY3JlYXRlZCIpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aGlzLmZpZWxkcy5nZXQoImN0aW1lIikpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHRoaXMuZmllbGRzLmdldCgiY2RheSIpKSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jWzBdOwogICAgICB9CiAgICAgIGR1ZSgpIHsKICAgICAgICAgIHZhciBfYSwgX2IsIF9jOwogICAgICAgICAgcmV0dXJuIChfYyA9ICgoX2IgPSAoX2EgPSB0aGlzLmZpZWxkcy5nZXQoImR1ZSIpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aGlzLmZpZWxkcy5nZXQoImR1ZXRpbWUiKSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogdGhpcy5maWVsZHMuZ2V0KCJkdWVkYXkiKSkpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY1swXTsKICAgICAgfQogICAgICBjb21wbGV0ZWQoKSB7CiAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7CiAgICAgICAgICByZXR1cm4gKF9kID0gKChfYyA9IChfYiA9IChfYSA9IHRoaXMuZmllbGRzLmdldCgiY29tcGxldGVkIikpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHRoaXMuZmllbGRzLmdldCgiY29tcGxldGlvbiIpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiB0aGlzLmZpZWxkcy5nZXQoImNvbXB0aW1lIikpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IHRoaXMuZmllbGRzLmdldCgiY29tcGRheSIpKSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kWzBdOwogICAgICB9CiAgICAgIHN0YXJ0KCkgewogICAgICAgICAgdmFyIF9hOwogICAgICAgICAgcmV0dXJuIChfYSA9IHRoaXMuZmllbGRzLmdldCgic3RhcnQiKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hWzBdOwogICAgICB9CiAgICAgIHNjaGVkdWxlZCgpIHsKICAgICAgICAgIHZhciBfYTsKICAgICAgICAgIHJldHVybiAoX2EgPSB0aGlzLmZpZWxkcy5nZXQoInNjaGVkdWxlZCIpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMF07CiAgICAgIH0KICAgICAgLyoqIENyZWF0ZSBhbiBBUEktZnJpZW5kbHkgY29weSBvZiB0aGlzIGxpc3QgaXRlbS4gRGUtZHVwbGljYXRpb24gaXMgZG9uZSB2aWEgdGhlIHByb3ZpZGVkIGNhY2hlLiAqLwogICAgICBzZXJpYWxpemUoY2FjaGUpIHsKICAgICAgICAgIC8vIE1hcCBjaGlsZHJlbiB0byB0aGVpciBzZXJpYWxpemVkL2RlLWR1cGxpY2F0ZWQgZXF1aXZhbGVudHMgcmlnaHQgYXdheS4KICAgICAgICAgIGxldCBjaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW4ubWFwKGwgPT4gY2FjaGUuZ2V0KGwpKS5maWx0ZXIoKGwpID0+IGwgIT09IHVuZGVmaW5lZCk7CiAgICAgICAgICBsZXQgcmVzdWx0ID0gewogICAgICAgICAgICAgIHN5bWJvbDogdGhpcy5zeW1ib2wsCiAgICAgICAgICAgICAgbGluazogdGhpcy5saW5rLAogICAgICAgICAgICAgIHNlY3Rpb246IHRoaXMuc2VjdGlvbiwKICAgICAgICAgICAgICB0ZXh0OiB0aGlzLnRleHQsCiAgICAgICAgICAgICAgdGFnczogQXJyYXkuZnJvbSh0aGlzLnRhZ3MpLAogICAgICAgICAgICAgIGxpbmU6IHRoaXMubGluZSwKICAgICAgICAgICAgICBsaW5lQ291bnQ6IHRoaXMubGluZUNvdW50LAogICAgICAgICAgICAgIGxpc3Q6IHRoaXMubGlzdCwKICAgICAgICAgICAgICBvdXRsaW5rczogQXJyYXkuZnJvbSh0aGlzLmxpbmtzKSwKICAgICAgICAgICAgICBwYXRoOiB0aGlzLmxpbmsucGF0aCwKICAgICAgICAgICAgICBjaGlsZHJlbjogY2hpbGRyZW4sCiAgICAgICAgICAgICAgdGFzazogISF0aGlzLnRhc2ssCiAgICAgICAgICAgICAgYW5ub3RhdGVkOiB0aGlzLmZpZWxkcy5zaXplID4gMCwKICAgICAgICAgICAgICBwb3NpdGlvbjogVmFsdWVzLmRlZXBDb3B5KHRoaXMucG9zaXRpb24pLAogICAgICAgICAgICAgIHN1YnRhc2tzOiBjaGlsZHJlbiwKICAgICAgICAgICAgICByZWFsOiAhIXRoaXMudGFzaywKICAgICAgICAgICAgICBoZWFkZXI6IHRoaXMuc2VjdGlvbiwgLy8gQGRlcHJlY2F0ZWQsIHVzZSAnaXRlbS5zZWN0aW9uJyBpbnN0ZWFkLgogICAgICAgICAgfTsKICAgICAgICAgIGlmICh0aGlzLnBhcmVudCB8fCB0aGlzLnBhcmVudCA9PT0gMCkKICAgICAgICAgICAgICByZXN1bHQucGFyZW50ID0gdGhpcy5wYXJlbnQ7CiAgICAgICAgICBpZiAodGhpcy5ibG9ja0lkKQogICAgICAgICAgICAgIHJlc3VsdC5ibG9ja0lkID0gdGhpcy5ibG9ja0lkOwogICAgICAgICAgYWRkRmllbGRzKHRoaXMuZmllbGRzLCByZXN1bHQpOwogICAgICAgICAgaWYgKHRoaXMudGFzaykgewogICAgICAgICAgICAgIHJlc3VsdC5zdGF0dXMgPSB0aGlzLnRhc2suc3RhdHVzOwogICAgICAgICAgICAgIHJlc3VsdC5jaGVja2VkID0gdGhpcy50YXNrLmNoZWNrZWQ7CiAgICAgICAgICAgICAgcmVzdWx0LmNvbXBsZXRlZCA9IHRoaXMudGFzay5jb21wbGV0ZWQ7CiAgICAgICAgICAgICAgcmVzdWx0LmZ1bGx5Q29tcGxldGVkID0gdGhpcy50YXNrLmZ1bGx5Q29tcGxldGVkOwogICAgICAgICAgICAgIGxldCBjcmVhdGVkID0gdGhpcy5jcmVhdGVkKCksIGR1ZSA9IHRoaXMuZHVlKCksIGNvbXBsZXRlZCA9IHRoaXMuY29tcGxldGVkKCksIHN0YXJ0ID0gdGhpcy5zdGFydCgpLCBzY2hlZHVsZWQgPSB0aGlzLnNjaGVkdWxlZCgpOwogICAgICAgICAgICAgIGlmIChjcmVhdGVkKQogICAgICAgICAgICAgICAgICByZXN1bHQuY3JlYXRlZCA9IFZhbHVlcy5kZWVwQ29weShjcmVhdGVkKTsKICAgICAgICAgICAgICBpZiAoZHVlKQogICAgICAgICAgICAgICAgICByZXN1bHQuZHVlID0gVmFsdWVzLmRlZXBDb3B5KGR1ZSk7CiAgICAgICAgICAgICAgaWYgKGNvbXBsZXRlZCkKICAgICAgICAgICAgICAgICAgcmVzdWx0LmNvbXBsZXRpb24gPSBWYWx1ZXMuZGVlcENvcHkoY29tcGxldGVkKTsKICAgICAgICAgICAgICBpZiAoc3RhcnQpCiAgICAgICAgICAgICAgICAgIHJlc3VsdC5zdGFydCA9IFZhbHVlcy5kZWVwQ29weShzdGFydCk7CiAgICAgICAgICAgICAgaWYgKHNjaGVkdWxlZCkKICAgICAgICAgICAgICAgICAgcmVzdWx0LnNjaGVkdWxlZCA9IFZhbHVlcy5kZWVwQ29weShzY2hlZHVsZWQpOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgfQogIH0KICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAvLyBDb252ZXJzaW9uIC8gU2VyaWFsaXphdGlvbiBVdGlsaXRpZXMgLy8KICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAvKiogRGUtZHVwbGljYXRlcyBsaXN0IGl0ZW1zIGFjcm9zcyBzZWN0aW9uIG1ldGFkYXRhIGFuZCBwYWdlIG1ldGFkYXRhLiAqLwogIGNsYXNzIExpc3RTZXJpYWxpemF0aW9uQ2FjaGUgewogICAgICBjb25zdHJ1Y3RvcihsaXN0SXRlbXMpIHsKICAgICAgICAgIHRoaXMubGlzdEl0ZW1zID0ge307CiAgICAgICAgICB0aGlzLmNhY2hlID0ge307CiAgICAgICAgICB0aGlzLnNlZW4gPSBuZXcgU2V0KCk7CiAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIGxpc3RJdGVtcykKICAgICAgICAgICAgICB0aGlzLmxpc3RJdGVtc1tpdGVtLmxpbmVdID0gaXRlbTsKICAgICAgfQogICAgICBnZXQobGluZW5vKSB7CiAgICAgICAgICBpZiAobGluZW5vIGluIHRoaXMuY2FjaGUpCiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGVbbGluZW5vXTsKICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc2Vlbi5oYXMobGluZW5vKSkgewogICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBEYXRhdmlldzogRW5jb3VudGVyZWQgYSBjaXJjdWxhciBsaXN0IChsaW5lIG51bWJlciAke2xpbmVub307IGNoaWxkcmVuICR7dGhpcy5saXN0SXRlbXNbbGluZW5vXS5jaGlsZHJlbi5qb2luKCIsICIpfSlgKTsKICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICAgICAgfQogICAgICAgICAgdGhpcy5zZWVuLmFkZChsaW5lbm8pOwogICAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMubGlzdEl0ZW1zW2xpbmVub10uc2VyaWFsaXplKHRoaXMpOwogICAgICAgICAgdGhpcy5jYWNoZVtsaW5lbm9dID0gcmVzdWx0OwogICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgfQogIH0KICBmdW5jdGlvbiBhZGRGaWVsZHMoZmllbGRzLCB0YXJnZXQpIHsKICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVzXSBvZiBmaWVsZHMuZW50cmllcygpKSB7CiAgICAgICAgICBpZiAoa2V5IGluIHRhcmdldCkKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIHRhcmdldFtrZXldID0gdmFsdWVzLmxlbmd0aCA9PSAxID8gdmFsdWVzWzBdIDogdmFsdWVzOwogICAgICB9CiAgICAgIHJldHVybiB0YXJnZXQ7CiAgfQoKICAvKiogQ29tbW9uIHV0aWxpdGllcyBmb3IgZXh0cmFjdGluZyB0YWdzLCBsaW5rcywgYW5kIG90aGVyIGJ1c2luZXNzIGZyb20gbWV0YWRhdGEuICovCiAgY29uc3QgUE9URU5USUFMX1RBR19NQVRDSEVSID0gLyNbXlxzLDtcLjohXD8nImAoKVxbXF1ce1x9XSsvZ2l1OwogIC8qKiBFeHRyYWN0IGFsbCB0YWdzIGZyb20gdGhlIGdpdmVuIHNvdXJjZSBzdHJpbmcuICovCiAgZnVuY3Rpb24gZXh0cmFjdFRhZ3MkMShzb3VyY2UpIHsKICAgICAgbGV0IHJlc3VsdCA9IG5ldyBTZXQoKTsKICAgICAgbGV0IG1hdGNoZXMgPSBzb3VyY2UubWF0Y2hBbGwoUE9URU5USUFMX1RBR19NQVRDSEVSKTsKICAgICAgZm9yIChsZXQgbWF0Y2ggb2YgbWF0Y2hlcykgewogICAgICAgICAgbGV0IHBhcnNlZCA9IEVYUFJFU1NJT04udGFnLnBhcnNlKG1hdGNoWzBdKTsKICAgICAgICAgIGlmIChwYXJzZWQuc3RhdHVzKQogICAgICAgICAgICAgIHJlc3VsdC5hZGQocGFyc2VkLnZhbHVlKTsKICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0OwogIH0KCiAgLyoqIEltcG9ydGVyIGZvciBtYXJrZG93biBkb2N1bWVudHMuICovCiAgLyoqIEV4dHJhY3QgbWFya2Rvd24gbWV0YWRhdGEgZnJvbSB0aGUgZ2l2ZW4gT2JzaWRpYW4gbWFya2Rvd24gZmlsZS4gKi8KICBmdW5jdGlvbiBwYXJzZVBhZ2UocGF0aCwgY29udGVudHMsIHN0YXQsIG1ldGFkYXRhKSB7CiAgICAgIGxldCB0YWdzID0gbmV3IFNldCgpOwogICAgICBsZXQgYWxpYXNlcyA9IG5ldyBTZXQoKTsKICAgICAgbGV0IGZpZWxkcyA9IG5ldyBNYXAoKTsKICAgICAgbGV0IGxpbmtzID0gW107CiAgICAgIC8vIEZpbGUgdGFncywgaW5jbHVkaW5nIGZyb250LW1hdHRlciBhbmQgaW4tZmlsZSB0YWdzLgogICAgICAobWV0YWRhdGEudGFncyB8fCBbXSkuZm9yRWFjaCh0ID0+IHRhZ3MuYWRkKHQudGFnLnN0YXJ0c1dpdGgoIiMiKSA/IHQudGFnIDogIiMiICsgdC50YWcpKTsKICAgICAgLy8gRnJvbnQtbWF0dGVyIGZpbGUgdGFncywgYWxpYXNlcywgQU5EIGZyb250bWF0dGVyIHByb3BlcnRpZXMuCiAgICAgIGlmIChtZXRhZGF0YS5mcm9udG1hdHRlcikgewogICAgICAgICAgZm9yIChsZXQgdGFnIG9mIGV4dHJhY3RUYWdzKG1ldGFkYXRhLmZyb250bWF0dGVyKSkgewogICAgICAgICAgICAgIGlmICghdGFnLnN0YXJ0c1dpdGgoIiMiKSkKICAgICAgICAgICAgICAgICAgdGFnID0gIiMiICsgdGFnOwogICAgICAgICAgICAgIHRhZ3MuYWRkKHRhZyk7CiAgICAgICAgICB9CiAgICAgICAgICBmb3IgKGxldCBhbGlhcyBvZiBleHRyYWN0QWxpYXNlcyhtZXRhZGF0YS5mcm9udG1hdHRlcikgfHwgW10pCiAgICAgICAgICAgICAgYWxpYXNlcy5hZGQoYWxpYXMpOwogICAgICAgICAgbGV0IGZyb250RmllbGRzID0gcGFyc2VGcm9udG1hdHRlcihtZXRhZGF0YS5mcm9udG1hdHRlcik7CiAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZnJvbnRGaWVsZHMpKSB7CiAgICAgICAgICAgICAgaWYgKGtleSA9PSAicG9zaXRpb24iKQogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICBhZGRJbmxpbmVGaWVsZChrZXksIHZhbHVlLCBmaWVsZHMpOwogICAgICAgICAgfQogICAgICB9CiAgICAgIC8vIEFkZCBmcm9udG1hdHRlciBsaW5rcyB0byBsaW5rcy4KICAgICAgaWYgKG1ldGFkYXRhLmZyb250bWF0dGVyTGlua3MpIHsKICAgICAgICAgIGZvciAobGV0IHJhd0xpbmsgb2YgbWV0YWRhdGEuZnJvbnRtYXR0ZXJMaW5rcyB8fCBbXSkgewogICAgICAgICAgICAgIGNvbnN0IGxpbmsgPSBMaW5rLmluZmVyKHJhd0xpbmsubGluaywgZmFsc2UsIHJhd0xpbmsuZGlzcGxheVRleHQpOwogICAgICAgICAgICAgIGxpbmtzLnB1c2gobGluayk7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgLy8gTGlua3MgaW4gbWV0YWRhdGEuCiAgICAgIGNvbnN0IGxpbmtzQnlMaW5lID0ge307CiAgICAgIGZvciAobGV0IHJhd0xpbmsgb2YgbWV0YWRhdGEubGlua3MgfHwgW10pIHsKICAgICAgICAgIGNvbnN0IGxpbmsgPSBMaW5rLmluZmVyKHJhd0xpbmsubGluaywgZmFsc2UsIHJhd0xpbmsuZGlzcGxheVRleHQpOwogICAgICAgICAgY29uc3QgbGluZSA9IHJhd0xpbmsucG9zaXRpb24uc3RhcnQubGluZTsKICAgICAgICAgIGxpbmtzLnB1c2gobGluayk7CiAgICAgICAgICBpZiAoIShsaW5lIGluIGxpbmtzQnlMaW5lKSkKICAgICAgICAgICAgICBsaW5rc0J5TGluZVtsaW5lXSA9IFtsaW5rXTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICBsaW5rc0J5TGluZVtsaW5lXS5wdXNoKGxpbmspOwogICAgICB9CiAgICAgIC8vIEVtYmVkIExpbmtzIGluIG1ldGFkYXRhLgogICAgICBmb3IgKGxldCByYXdFbWJlZCBvZiBtZXRhZGF0YS5lbWJlZHMgfHwgW10pIHsKICAgICAgICAgIGNvbnN0IGxpbmsgPSBMaW5rLmluZmVyKHJhd0VtYmVkLmxpbmssIHRydWUsIHJhd0VtYmVkLmRpc3BsYXlUZXh0KTsKICAgICAgICAgIGNvbnN0IGxpbmUgPSByYXdFbWJlZC5wb3NpdGlvbi5zdGFydC5saW5lOwogICAgICAgICAgbGlua3MucHVzaChsaW5rKTsKICAgICAgICAgIGlmICghKGxpbmUgaW4gbGlua3NCeUxpbmUpKQogICAgICAgICAgICAgIGxpbmtzQnlMaW5lW2xpbmVdID0gW2xpbmtdOwogICAgICAgICAgZWxzZQogICAgICAgICAgICAgIGxpbmtzQnlMaW5lW2xpbmVdLnB1c2gobGluayk7CiAgICAgIH0KICAgICAgLy8gTWVyZ2UgZnJvbnRtYXR0ZXIgZmllbGRzIHdpdGggcGFyc2VkIGZpZWxkcy4KICAgICAgbGV0IG1hcmtkb3duRGF0YSA9IHBhcnNlTWFya2Rvd24ocGF0aCwgY29udGVudHMuc3BsaXQoIlxuIiksIG1ldGFkYXRhLCBsaW5rc0J5TGluZSk7CiAgICAgIG1lcmdlRmllbGRHcm91cHMoZmllbGRzLCBtYXJrZG93bkRhdGEuZmllbGRzKTsKICAgICAgLy8gU3RyaXAgInBvc2l0aW9uIiBmcm9tIGZyb250bWF0dGVyIHNpbmNlIGl0IGlzIE9ic2lkaWFuIGRldGVybWluZWQuCiAgICAgIGNvbnN0IGZyb250bWF0dGVyID0gbWV0YWRhdGEuZnJvbnRtYXR0ZXIgfHwge307CiAgICAgIGlmIChmcm9udG1hdHRlciAmJiAicG9zaXRpb24iIGluIGZyb250bWF0dGVyKQogICAgICAgICAgZGVsZXRlIGZyb250bWF0dGVyWyJwb3NpdGlvbiJdOwogICAgICByZXR1cm4gbmV3IFBhZ2VNZXRhZGF0YShwYXRoLCB7CiAgICAgICAgICB0YWdzLAogICAgICAgICAgYWxpYXNlcywKICAgICAgICAgIGxpbmtzLAogICAgICAgICAgbGlzdHM6IG1hcmtkb3duRGF0YS5saXN0cywKICAgICAgICAgIGZpZWxkczogZmluYWxpemVJbmxpbmVGaWVsZHMoZmllbGRzKSwKICAgICAgICAgIGZyb250bWF0dGVyOiBmcm9udG1hdHRlciwKICAgICAgICAgIGN0aW1lOiBEYXRlVGltZS5mcm9tTWlsbGlzKHN0YXQuY3RpbWUpLAogICAgICAgICAgbXRpbWU6IERhdGVUaW1lLmZyb21NaWxsaXMoc3RhdC5tdGltZSksCiAgICAgICAgICBzaXplOiBzdGF0LnNpemUsCiAgICAgICAgICBkYXk6IGZpbmREYXRlKHBhdGgsIGZpZWxkcyksCiAgICAgIH0pOwogIH0KICAvKiogRXh0cmFjdCB0YWdzIGludGVsbGlnZW50bHkgZnJvbSBmcm9udG1hdHRlci4gSGFuZGxlcyBhcnJheXMsIG51bWJlcnMsIGFuZCBzdHJpbmdzLiAqLwogIGZ1bmN0aW9uIGV4dHJhY3RUYWdzKG1ldGFkYXRhKSB7CiAgICAgIGxldCB0YWdLZXlzID0gT2JqZWN0LmtleXMobWV0YWRhdGEpLmZpbHRlcih0ID0+IHQudG9Mb3dlckNhc2UoKSA9PSAidGFncyIgfHwgdC50b0xvd2VyQ2FzZSgpID09ICJ0YWciKTsKICAgICAgcmV0dXJuIHRhZ0tleXMKICAgICAgICAgIC5tYXAoayA9PiBzcGxpdEZyb250bWF0dGVyVGFnT3JBbGlhcyhtZXRhZGF0YVtrXSwgL1ssXHNdKy8pKQogICAgICAgICAgLnJlZHVjZSgocCwgYykgPT4gcC5jb25jYXQoYyksIFtdKQogICAgICAgICAgLm1hcChzdHIgPT4gKHN0ci5zdGFydHNXaXRoKCIjIikgPyBzdHIgOiAiIyIgKyBzdHIpKTsKICB9CiAgLyoqIEV4dHJhY3QgYWxpYXNlcyBpbnRlbGxpZ2VudGx5IGZyb20gZnJvbnRtYXR0ZXIuIEhhbmRsZXMgYXJyYXlzLCBudW1iZXJzLCBhbmQgc3RyaW5ncy4gICovCiAgZnVuY3Rpb24gZXh0cmFjdEFsaWFzZXMobWV0YWRhdGEpIHsKICAgICAgbGV0IGFsaWFzS2V5cyA9IE9iamVjdC5rZXlzKG1ldGFkYXRhKS5maWx0ZXIodCA9PiB0LnRvTG93ZXJDYXNlKCkgPT0gImFsaWFzIiB8fCB0LnRvTG93ZXJDYXNlKCkgPT0gImFsaWFzZXMiKTsKICAgICAgY29uc3QgcmVzdWx0ID0gW107CiAgICAgIGZvciAobGV0IGtleSBvZiBhbGlhc0tleXMpIHsKICAgICAgICAgIGNvbnN0IHZhbHVlID0gbWV0YWRhdGFba2V5XTsKICAgICAgICAgIGlmICghdmFsdWUpCiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpCiAgICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4udmFsdWUubWFwKHYgPT4gKCIiICsgdikudHJpbSgpKSk7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4uc3BsaXRGcm9udG1hdHRlclRhZ09yQWxpYXModmFsdWUsIC8sLykpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHQ7CiAgfQogIC8qKiBTcGxpdCBhIGZyb250bWF0dGVyIGxpc3QgaW50byBzZXBhcmF0ZSBlbGVtZW50czsgaGFuZGxlcyBhY3R1YWwgbGlzdHMsIGNvbW1hIHNlcGFyYXRlZCBsaXN0cywgYW5kIHNpbmdsZSBlbGVtZW50cy4gKi8KICBmdW5jdGlvbiBzcGxpdEZyb250bWF0dGVyVGFnT3JBbGlhcyhkYXRhLCBvbikgewogICAgICBpZiAoZGF0YSA9PSBudWxsIHx8IGRhdGEgPT0gdW5kZWZpbmVkKQogICAgICAgICAgcmV0dXJuIFtdOwogICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkgewogICAgICAgICAgcmV0dXJuIGRhdGEKICAgICAgICAgICAgICAuZmlsdGVyKHMgPT4gISFzKQogICAgICAgICAgICAgIC5tYXAocyA9PiBzcGxpdEZyb250bWF0dGVyVGFnT3JBbGlhcyhzLCBvbikpCiAgICAgICAgICAgICAgLnJlZHVjZSgocCwgYykgPT4gcC5jb25jYXQoYyksIFtdKTsKICAgICAgfQogICAgICAvLyBGb3JjZSB0byBhIHN0cmluZyB0byBoYW5kbGUgbnVtYmVycyBhbmQgc28gb24uCiAgICAgIHJldHVybiAoIiIgKyBkYXRhKQogICAgICAgICAgLnNwbGl0KG9uKQogICAgICAgICAgLmZpbHRlcih0ID0+ICEhdCkKICAgICAgICAgIC5tYXAodCA9PiB0LnRyaW0oKSkKICAgICAgICAgIC5maWx0ZXIodCA9PiB0Lmxlbmd0aCA+IDApOwogIH0KICAvKiogUGFyc2UgcmF3IChuZXdsaW5lLWRlbGltaXRlZCkgbWFya2Rvd24sIHJldHVybmluZyBpbmxpbmUgZmllbGRzLCBsaXN0IGl0ZW1zLCBhbmQgb3RoZXIgbWV0YWRhdGEuICovCiAgZnVuY3Rpb24gcGFyc2VNYXJrZG93bihwYXRoLCBjb250ZW50cywgbWV0YWRhdGEsIGxpbmtzQnlMaW5lKSB7CiAgICAgIGxldCBmaWVsZHMgPSBuZXcgTWFwKCk7CiAgICAgIC8vIEV4dHJhY3QgdGFzayBkYXRhIGFuZCBhcHBlbmQgdGhlIGdsb2JhbCBkYXRhIGV4dHJhY3RlZCBmcm9tIHRoZW0gdG8gb3VyIGZpZWxkcy4KICAgICAgbGV0IFtsaXN0cywgZXh0cmFEYXRhXSA9IHBhcnNlTGlzdHMocGF0aCwgY29udGVudHMsIG1ldGFkYXRhLCBsaW5rc0J5TGluZSk7CiAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlc10gb2YgZXh0cmFEYXRhLmVudHJpZXMoKSkgewogICAgICAgICAgaWYgKCFmaWVsZHMuaGFzKGtleSkpCiAgICAgICAgICAgICAgZmllbGRzLnNldChrZXksIHZhbHVlcyk7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgZmllbGRzLnNldChrZXksIGZpZWxkcy5nZXQoa2V5KS5jb25jYXQodmFsdWVzKSk7CiAgICAgIH0KICAgICAgLy8gVGhlIE9ic2lkaWFuIG1ldGFkYXRhIGNhY2hlIHdpbGwgdHJhY2sgbGlzdCBlbGVtZW50cyBpbnNpZGUgb2Ygb3RoZXIgZWxlbWVudCBncm91cHMgKGxpa2UgYW5ub3RhdGlvbnMgYW5kCiAgICAgIC8vIGNhbGxvdXRzKS4uLiB0aGlzIG1lYW5zIHdlIG1pZ2h0IHNlZSBtZXRhZGF0YSB0d2ljZSwgc28gc2tpcCB0aGVtIG5vdy4gVmVyeSBhbm5veWluZy4KICAgICAgY29uc3QgbGlzdExpbmVzVG9Ta2lwID0gbmV3IFNldCgpOwogICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGlzdHMpIHsKICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZS5saW5lQ291bnQ7IGkrKykKICAgICAgICAgICAgICBsaXN0TGluZXNUb1NraXAuYWRkKGxpbmUubGluZSArIGkpOwogICAgICB9CiAgICAgIC8vIE9ubHkgcGFyc2UgaGVhZGluZyBhbmQgcGFyYWdyYXBoIGVsZW1lbnRzIGZvciBpbmxpbmUgZmllbGRzOyB3ZSB3aWxsIHBhcnNlIGxpc3QgbWV0YWRhdGEgc2VwYXJhdGVseS4KICAgICAgZm9yIChsZXQgc2VjdGlvbiBvZiBtZXRhZGF0YS5zZWN0aW9ucyB8fCBbXSkgewogICAgICAgICAgaWYgKHNlY3Rpb24udHlwZSA9PSAibGlzdCIgfHwgc2VjdGlvbi50eXBlID09ICJydWxpbmciKQogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgZm9yIChsZXQgbGluZW5vID0gc2VjdGlvbi5wb3NpdGlvbi5zdGFydC5saW5lOyBsaW5lbm8gPD0gc2VjdGlvbi5wb3NpdGlvbi5lbmQubGluZTsgbGluZW5vKyspIHsKICAgICAgICAgICAgICBsZXQgbGluZSA9IGNvbnRlbnRzW2xpbmVub107CiAgICAgICAgICAgICAgaWYgKGxpbmUgPT0gdW5kZWZpbmVkIHx8IGxpbmUgPT0gbnVsbCkKICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgaWYgKGxpc3RMaW5lc1RvU2tpcC5oYXMobGluZW5vKSkKICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgLy8gRmFzdCBiYWlsLW91dCBmb3IgbGluZXMgdGhhdCBhcmUgdG9vIGxvbmcgb3IgZG8gbm90IGNvbnRhaW4gJzo6Jy4KICAgICAgICAgICAgICBpZiAobGluZS5sZW5ndGggPiAzMjc2OCB8fCAhbGluZS5pbmNsdWRlcygiOjoiKSkKICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgbGluZSA9IGxpbmUudHJpbSgpOwogICAgICAgICAgICAgIGxldCBpbmxpbmVGaWVsZHMgPSBleHRyYWN0SW5saW5lRmllbGRzKGxpbmUpOwogICAgICAgICAgICAgIGlmIChpbmxpbmVGaWVsZHMubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICBmb3IgKGxldCBpZmllbGQgb2YgaW5saW5lRmllbGRzKQogICAgICAgICAgICAgICAgICAgICAgYWRkUmF3SW5saW5lRmllbGQoaWZpZWxkLCBmaWVsZHMpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgbGV0IGZ1bGxMaW5lID0gZXh0cmFjdEZ1bGxMaW5lRmllbGQobGluZSk7CiAgICAgICAgICAgICAgICAgIGlmIChmdWxsTGluZSkKICAgICAgICAgICAgICAgICAgICAgIGFkZFJhd0lubGluZUZpZWxkKGZ1bGxMaW5lLCBmaWVsZHMpOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4geyBmaWVsZHMsIGxpc3RzIH07CiAgfQogIC8vIFRPRE86IENvbnNpZGVyIHVzaW5nIGFuIGFjdHVhbCBwYXJzZXIgaW4gbGVpdSBvZiBhIG1vcmUgZXhwZW5zaXZlIHJlZ2V4LgogIGNvbnN0IExJU1RfSVRFTV9SRUdFWCA9IC9eW1xzPl0qKFxkK1wufFxkK1wpfFwqfC18XCspXHMqKFxbLnswLDF9XF0pP1xzKiguKikkL211OwogIC8qKgogICAqIFBhcnNlIGxpc3QgaXRlbXMgZnJvbSB0aGUgcGFnZSArIG1ldGFkYXRhLiBUaGlzIHJlcXVpcmVzIHNvbWUgYWRkaXRpb25hbCBwYXJzaW5nIGFib3ZlIHdoYXRldmVyIE9ic2lkaWFuIHByb3ZpZGVzLAogICAqIHNpbmNlIE9ic2lkaWFuIG9ubHkgZ2l2ZXMgbGluZSBudW1iZXJzLgogICAqLwogIGZ1bmN0aW9uIHBhcnNlTGlzdHMocGF0aCwgY29udGVudCwgbWV0YWRhdGEsIGxpbmtzQnlMaW5lKSB7CiAgICAgIHZhciBfYTsKICAgICAgbGV0IGNhY2hlID0ge307CiAgICAgIC8vIFBsYWNlIGFsbCBvZiB0aGUgdmFsdWVzIGluIHRoZSBjYWNoZSBiZWZvcmUgcmVzb2x2aW5nIGNoaWxkcmVuICYgbWV0YWRhdGEgcmVsYXRpb25zaGlwcy4KICAgICAgZm9yIChsZXQgcmF3RWxlbWVudCBvZiBtZXRhZGF0YS5saXN0SXRlbXMgfHwgW10pIHsKICAgICAgICAgIC8vIE1hdGNoIG9uIHRoZSBmaXJzdCBsaW5lIHRvIGdldCB0aGUgc3ltYm9sIGFuZCBmaXJzdCBsaW5lIG9mIHRleHQuCiAgICAgICAgICBsZXQgcmF3TWF0Y2ggPSBMSVNUX0lURU1fUkVHRVguZXhlYyhjb250ZW50W3Jhd0VsZW1lbnQucG9zaXRpb24uc3RhcnQubGluZV0pOwogICAgICAgICAgaWYgKCFyYXdNYXRjaCkKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIC8vIEFuZCB0aGVuIHN0cmlwIHVubmVjZXNzYXJ5IHNwYWNpbmcgZnJvbSB0aGUgcmVtYWluaW5nIGxpbmVzLgogICAgICAgICAgbGV0IHRleHRQYXJ0cyA9IFtyYXdNYXRjaFszXV0KICAgICAgICAgICAgICAuY29uY2F0KGNvbnRlbnQuc2xpY2UocmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lICsgMSwgcmF3RWxlbWVudC5wb3NpdGlvbi5lbmQubGluZSArIDEpKQogICAgICAgICAgICAgIC5tYXAodCA9PiB0LnRyaW0oKSk7CiAgICAgICAgICBsZXQgdGV4dFdpdGhOZXdsaW5lID0gdGV4dFBhcnRzLmpvaW4oIlxuIik7CiAgICAgICAgICBsZXQgdGV4dE5vTmV3bGluZSA9IHRleHRQYXJ0cy5qb2luKCIgIik7CiAgICAgICAgICAvLyBGaW5kIHRoZSBsaXN0IHRoYXQgd2UgYXJlIGEgcGFydCBvZiBieSBsaW5lLgogICAgICAgICAgbGV0IGNvbnRhaW5pbmdMaXN0SWQgPSAobWV0YWRhdGEuc2VjdGlvbnMgfHwgW10pLmZpbmRJbmRleChzID0+IHMudHlwZSA9PSAibGlzdCIgJiYKICAgICAgICAgICAgICBzLnBvc2l0aW9uLnN0YXJ0LmxpbmUgPD0gcmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lICYmCiAgICAgICAgICAgICAgcy5wb3NpdGlvbi5lbmQubGluZSA+PSByYXdFbGVtZW50LnBvc2l0aW9uLnN0YXJ0LmxpbmUpOwogICAgICAgICAgLy8gRmluZCB0aGUgc2VjdGlvbiB3ZSBiZWxvbmcgdG8gYXMgd2VsbC4KICAgICAgICAgIGxldCBzZWN0aW9uTmFtZSA9IGZpbmRQcmV2aW91c0hlYWRlcihyYXdFbGVtZW50LnBvc2l0aW9uLnN0YXJ0LmxpbmUsIG1ldGFkYXRhLmhlYWRpbmdzIHx8IFtdKTsKICAgICAgICAgIGxldCBzZWN0aW9uTGluayA9IHNlY3Rpb25OYW1lID09PSB1bmRlZmluZWQgPyBMaW5rLmZpbGUocGF0aCkgOiBMaW5rLmhlYWRlcihwYXRoLCBzZWN0aW9uTmFtZSk7CiAgICAgICAgICBsZXQgY2xvc2VzdExpbmsgPSByYXdFbGVtZW50LmlkID09PSB1bmRlZmluZWQgPyBzZWN0aW9uTGluayA6IExpbmsuYmxvY2socGF0aCwgcmF3RWxlbWVudC5pZCk7CiAgICAgICAgICAvLyBHYXRoZXIgYW55IGxpbmtzIHRoYXQgb2NjdXIgb24gdGhlIHNhbWUgbGluZXMgYXMgdGhlIHRhc2suCiAgICAgICAgICBjb25zdCBsaW5rcyA9IFtdOwogICAgICAgICAgZm9yIChsZXQgbGluZSA9IHJhd0VsZW1lbnQucG9zaXRpb24uc3RhcnQubGluZTsgbGluZSA8PSByYXdFbGVtZW50LnBvc2l0aW9uLmVuZC5saW5lOyBsaW5lKyspIHsKICAgICAgICAgICAgICBpZiAobGlua3NCeUxpbmVbbGluZV0pCiAgICAgICAgICAgICAgICAgIGxpbmtzLnB1c2goLi4ubGlua3NCeUxpbmVbbGluZV0pOwogICAgICAgICAgfQogICAgICAgICAgLy8gQ29uc3RydWN0IHVuaXZlcnNhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGVsZW1lbnQgKGJlZm9yZSB0YXNrcykuCiAgICAgICAgICBsZXQgaXRlbSA9IG5ldyBMaXN0SXRlbSh7CiAgICAgICAgICAgICAgc3ltYm9sOiByYXdNYXRjaFsxXSwKICAgICAgICAgICAgICBsaW5rOiBjbG9zZXN0TGluaywKICAgICAgICAgICAgICBsaW5rczogbGlua3MsCiAgICAgICAgICAgICAgc2VjdGlvbjogc2VjdGlvbkxpbmssCiAgICAgICAgICAgICAgdGV4dDogdGV4dFdpdGhOZXdsaW5lLAogICAgICAgICAgICAgIHRhZ3M6IGV4dHJhY3RUYWdzJDEodGV4dE5vTmV3bGluZSksCiAgICAgICAgICAgICAgbGluZTogcmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lLAogICAgICAgICAgICAgIGxpbmVDb3VudDogcmF3RWxlbWVudC5wb3NpdGlvbi5lbmQubGluZSAtIHJhd0VsZW1lbnQucG9zaXRpb24uc3RhcnQubGluZSArIDEsCiAgICAgICAgICAgICAgbGlzdDogY29udGFpbmluZ0xpc3RJZCA9PSAtMSA/IC0xIDogKG1ldGFkYXRhLnNlY3Rpb25zIHx8IFtdKVtjb250YWluaW5nTGlzdElkXS5wb3NpdGlvbi5zdGFydC5saW5lLAogICAgICAgICAgICAgIHBvc2l0aW9uOiByYXdFbGVtZW50LnBvc2l0aW9uLAogICAgICAgICAgICAgIGNoaWxkcmVuOiBbXSwKICAgICAgICAgICAgICBibG9ja0lkOiByYXdFbGVtZW50LmlkLAogICAgICAgICAgfSk7CiAgICAgICAgICBpZiAocmF3RWxlbWVudC5wYXJlbnQgPj0gMCAmJiByYXdFbGVtZW50LnBhcmVudCAhPSBpdGVtLmxpbmUpCiAgICAgICAgICAgICAgaXRlbS5wYXJlbnQgPSByYXdFbGVtZW50LnBhcmVudDsKICAgICAgICAgIC8vIFNldCB1cCB0aGUgYmFzaWMgdGFzayBpbmZvcm1hdGlvbiBmb3Igbm93LCB0aG91Z2ggd2UgaGF2ZSB0byByZWNvbXB1dGUgYGZ1bGx5Q29tcHV0ZWRgIGxhdGVyLgogICAgICAgICAgaWYgKHJhd0VsZW1lbnQudGFzaykgewogICAgICAgICAgICAgIGl0ZW0udGFzayA9IHsKICAgICAgICAgICAgICAgICAgc3RhdHVzOiByYXdFbGVtZW50LnRhc2ssCiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IHJhd0VsZW1lbnQudGFzayAhPSAiIiAmJiByYXdFbGVtZW50LnRhc2sgIT0gIiAiLAogICAgICAgICAgICAgICAgICBjb21wbGV0ZWQ6IHJhd0VsZW1lbnQudGFzayA9PSAiWCIgfHwgcmF3RWxlbWVudC50YXNrID09ICJ4IiwKICAgICAgICAgICAgICAgICAgZnVsbHlDb21wbGV0ZWQ6IHJhd0VsZW1lbnQudGFzayA9PSAiWCIgfHwgcmF3RWxlbWVudC50YXNrID09ICJ4IiwKICAgICAgICAgICAgICB9OwogICAgICAgICAgfQogICAgICAgICAgLy8gRXh0cmFjdCBpbmxpbmUgZmllbGRzOyBleHRyYWN0IGZ1bGwtbGluZSBmaWVsZHMgb25seSBpZiB3ZSBhcmUgTk9UIGEgdGFzay4KICAgICAgICAgIGl0ZW0uZmllbGRzID0gbmV3IE1hcCgpOwogICAgICAgICAgZm9yIChsZXQgZWxlbWVudCBvZiBleHRyYWN0SW5saW5lRmllbGRzKHRleHROb05ld2xpbmUsIHRydWUpKQogICAgICAgICAgICAgIGFkZFJhd0lubGluZUZpZWxkKGVsZW1lbnQsIGl0ZW0uZmllbGRzKTsKICAgICAgICAgIGlmICghcmF3RWxlbWVudC50YXNrICYmIGl0ZW0uZmllbGRzLnNpemUgPT0gMCkgewogICAgICAgICAgICAgIGxldCBmdWxsTGluZSA9IGV4dHJhY3RGdWxsTGluZUZpZWxkKHRleHROb05ld2xpbmUpOwogICAgICAgICAgICAgIGlmIChmdWxsTGluZSkKICAgICAgICAgICAgICAgICAgYWRkUmF3SW5saW5lRmllbGQoZnVsbExpbmUsIGl0ZW0uZmllbGRzKTsKICAgICAgICAgIH0KICAgICAgICAgIGNhY2hlW2l0ZW0ubGluZV0gPSBpdGVtOwogICAgICB9CiAgICAgIC8vIFRyZWUgdXBkYXRpbmcgcGFzc2VzLiBVcGRhdGUgY2hpbGQgbGlzdHMuIFByb3BvZ2F0ZSBtZXRhZGF0YSB1cCB0byBwYXJlbnQgdGFza3MuIFVwZGF0ZSB0YXNrIGBmdWxseUNvbXBsZXRlZGAuCiAgICAgIGxldCBsaXRlcmFscyA9IG5ldyBNYXAoKTsKICAgICAgZm9yIChsZXQgbGlzdEl0ZW0gb2YgT2JqZWN0LnZhbHVlcyhjYWNoZSkpIHsKICAgICAgICAgIC8vIFBhc3MgMTogVXBkYXRlIGNoaWxkIGxpc3RzLgogICAgICAgICAgaWYgKGxpc3RJdGVtLnBhcmVudCAhPT0gdW5kZWZpbmVkICYmIGxpc3RJdGVtLnBhcmVudCBpbiBjYWNoZSkgewogICAgICAgICAgICAgIGxldCBwYXJlbnQgPSBjYWNoZVtsaXN0SXRlbS5wYXJlbnRdOwogICAgICAgICAgICAgIHBhcmVudC5jaGlsZHJlbi5wdXNoKGxpc3RJdGVtLmxpbmUpOwogICAgICAgICAgfQogICAgICAgICAgLy8gUGFzcyAyOiBQcm9wb2dhdGUgbWV0YWRhdGEgdXAgdG8gdGhlIHBhcmVudCB0YXNrIG9yIHJvb3QgZWxlbWVudC4KICAgICAgICAgIGlmICghbGlzdEl0ZW0udGFzaykgewogICAgICAgICAgICAgIG1lcmdlRmllbGRHcm91cHMobGl0ZXJhbHMsIGxpc3RJdGVtLmZpZWxkcyk7CiAgICAgICAgICAgICAgLy8gVE9ETyAoYmxhY2tzbWl0aGd1KTogVGhlIGJlbG93IGNvZGUgcHJvcGVybHkgcHJvcG9nYXRlcyBtZXRhZGF0YSB1cCB0byB0aGUgbmVhcmVzdCB0YXNrLCB3aGljaCBpcyB0aGUKICAgICAgICAgICAgICAvLyBtb3JlIGludHVpdGl2ZSBiZWhhdmlvci4gRm9yIG5vdywgdGhvdWdoLCB3ZSB3aWxsIGtlZXAgdGhlIGV4aXN0aW5nIGxvZ2ljLgogICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgbGV0IHJvb3Q6IExpc3RJdGVtIHwgdW5kZWZpbmVkID0gbGlzdEl0ZW07CiAgICAgICAgICAgICAgd2hpbGUgKCEhcm9vdCAmJiAhcm9vdC50YXNrKSByb290ID0gY2FjaGVbcm9vdC5wYXJlbnQgPz8gLTFdOwoKICAgICAgICAgICAgICAvLyBJZiB0aGUgcm9vdCBpcyBudWxsLCBhcHBlbmQgdGhpcyBtZXRhZGF0YSB0byB0aGUgcm9vdDsgb3RoZXJ3aXNlLCBhcHBlbmQgdG8gdGhlIHRhc2suCiAgICAgICAgICAgICAgbWVyZ2VGaWVsZEdyb3Vwcyhyb290ID09PSB1bmRlZmluZWQgfHwgcm9vdCA9PSBudWxsID8gbGl0ZXJhbHMgOiByb290LmZpZWxkcywgbGlzdEl0ZW0uZmllbGRzKTsKICAgICAgICAgICAgICAqLwogICAgICAgICAgfQogICAgICAgICAgLy8gUGFzcyAzOiBQcm9wb2dhdGUgYGZ1bGx5Q29tcGxldGVkYCB1cCB0aGUgdGFzayB0cmVlLiBUaGlzIGlzIGEgbGl0dGxlIGxlc3MgZWZmaWNpZW50IHRoYW4ganVzdCBkb2luZyBhIHNpbXBsZQogICAgICAgICAgLy8gREZTIHVzaW5nIHRoZSBjaGlsZHJlbiBJRHMsIGJ1dCBpdCdzIHByb2JhYmx5IGZpbmUuCiAgICAgICAgICBpZiAobGlzdEl0ZW0udGFzaykgewogICAgICAgICAgICAgIGxldCBjdXJyID0gbGlzdEl0ZW07CiAgICAgICAgICAgICAgd2hpbGUgKCEhY3VycikgewogICAgICAgICAgICAgICAgICBpZiAoY3Vyci50YXNrKQogICAgICAgICAgICAgICAgICAgICAgY3Vyci50YXNrLmZ1bGx5Q29tcGxldGVkID0gY3Vyci50YXNrLmZ1bGx5Q29tcGxldGVkICYmIGxpc3RJdGVtLnRhc2suY29tcGxldGVkOwogICAgICAgICAgICAgICAgICBjdXJyID0gY2FjaGVbKF9hID0gY3Vyci5wYXJlbnQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IC0xXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIFtPYmplY3QudmFsdWVzKGNhY2hlKSwgbGl0ZXJhbHNdOwogIH0KICAvKiogQXR0ZW1wdCB0byBmaW5kIGEgZGF0ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIHBhZ2UgZnJvbSBtZXRhZGF0YSBvciBmaWxlbmFtZXMuICovCiAgZnVuY3Rpb24gZmluZERhdGUoZmlsZSwgZmllbGRzKSB7CiAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDsKICAgICAgZm9yIChsZXQga2V5IG9mIGZpZWxkcy5rZXlzKCkpIHsKICAgICAgICAgIGlmICghKGtleS50b0xvY2FsZUxvd2VyQ2FzZSgpID09ICJkYXRlIiB8fCBrZXkudG9Mb2NhbGVMb3dlckNhc2UoKSA9PSAiZGF5IikpCiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICBsZXQgdmFsdWUgPSBmaWVsZHMuZ2V0KGtleSk7CiAgICAgICAgICBpZiAoVmFsdWVzLmlzRGF0ZSh2YWx1ZSkpIHsKICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChWYWx1ZXMuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMCAmJiBWYWx1ZXMuaXNEYXRlKHZhbHVlWzBdKSkgewogICAgICAgICAgICAgIHJldHVybiB2YWx1ZVswXTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKFZhbHVlcy5pc0xpbmsodmFsdWUpKSB7CiAgICAgICAgICAgICAgbGV0IGRhdGUgPSAoX2MgPSAoX2EgPSBleHRyYWN0RGF0ZSh2YWx1ZS5wYXRoKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogZXh0cmFjdERhdGUoKF9iID0gdmFsdWUuc3VicGF0aCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogIiIpKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiBleHRyYWN0RGF0ZSgoX2QgPSB2YWx1ZS5kaXNwbGF5KSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAiIik7CiAgICAgICAgICAgICAgaWYgKGRhdGUpCiAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRlOwogICAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBleHRyYWN0RGF0ZShnZXRGaWxlVGl0bGUoZmlsZSkpOwogIH0KICAvKiogUmVjdXJzaXZlbHkgY29udmVydCBmcm9udG1hdHRlciBpbnRvIGZpZWxkcy4gV2UgaGF2ZSB0byBkYW5jZSBhcm91bmQgWUFNTCBzdHJ1Y3R1cmUuICovCiAgZnVuY3Rpb24gcGFyc2VGcm9udG1hdHRlcih2YWx1ZSkgewogICAgICBpZiAodmFsdWUgPT0gbnVsbCkgewogICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAib2JqZWN0IikgewogICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7CiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IFtdOwogICAgICAgICAgICAgIGZvciAobGV0IGNoaWxkIG9mIHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHBhcnNlRnJvbnRtYXR0ZXIoY2hpbGQpKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgewogICAgICAgICAgICAgIGxldCBkYXRlUGFyc2UgPSBEYXRlVGltZS5mcm9tSlNEYXRlKHZhbHVlKTsKICAgICAgICAgICAgICByZXR1cm4gZGF0ZVBhcnNlOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgbGV0IG9iamVjdCA9IHZhbHVlOwogICAgICAgICAgICAgIGxldCByZXN1bHQgPSB7fTsKICAgICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gb2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gcGFyc2VGcm9udG1hdHRlcihvYmplY3Rba2V5XSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAibnVtYmVyIikgewogICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICB9CiAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gImJvb2xlYW4iKSB7CiAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgIH0KICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAic3RyaW5nIikgewogICAgICAgICAgbGV0IGRhdGVQYXJzZSA9IEVYUFJFU1NJT04uZGF0ZS5wYXJzZSh2YWx1ZSk7CiAgICAgICAgICBpZiAoZGF0ZVBhcnNlLnN0YXR1cykKICAgICAgICAgICAgICByZXR1cm4gZGF0ZVBhcnNlLnZhbHVlOwogICAgICAgICAgbGV0IGR1cmF0aW9uUGFyc2UgPSBFWFBSRVNTSU9OLmR1cmF0aW9uLnBhcnNlKHZhbHVlKTsKICAgICAgICAgIGlmIChkdXJhdGlvblBhcnNlLnN0YXR1cykKICAgICAgICAgICAgICByZXR1cm4gZHVyYXRpb25QYXJzZS52YWx1ZTsKICAgICAgICAgIGxldCBsaW5rUGFyc2UgPSBFWFBSRVNTSU9OLmVtYmVkTGluay5wYXJzZSh2YWx1ZSk7CiAgICAgICAgICBpZiAobGlua1BhcnNlLnN0YXR1cykKICAgICAgICAgICAgICByZXR1cm4gbGlua1BhcnNlLnZhbHVlOwogICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICB9CiAgICAgIC8vIEJhY2t1cCBpZiB3ZSBkb24ndCB1bmRlcnN0YW5kIHRoZSB0eXBlLgogICAgICByZXR1cm4gbnVsbDsKICB9CiAgLyoqIEFkZCBhIHBhcnNlZCBpbmxpbmUgZmllbGQgdG8gdGhlIG91dHB1dCBtYXAuICovCiAgZnVuY3Rpb24gYWRkUmF3SW5saW5lRmllbGQoZmllbGQsIG91dHB1dCkgewogICAgICBhZGRJbmxpbmVGaWVsZChmaWVsZC5rZXksIHBhcnNlSW5saW5lVmFsdWUoZmllbGQudmFsdWUpLCBvdXRwdXQpOwogIH0KICAvKiogQWRkIGEgcmF3IGlubGluZSBmaWVsZCB0byBhbiBvdXRwdXQgbWFwLCBjYW5vbmljYWxpemluZyBhcyBuZWVkZWQuICovCiAgZnVuY3Rpb24gYWRkSW5saW5lRmllbGQoa2V5LCB2YWx1ZSwgb3V0cHV0KSB7CiAgICAgIHZhciBfYTsKICAgICAgaWYgKCFvdXRwdXQuaGFzKGtleSkpCiAgICAgICAgICBvdXRwdXQuc2V0KGtleSwgW3ZhbHVlXSk7CiAgICAgIGVsc2UKICAgICAgICAgIChfYSA9IG91dHB1dC5nZXQoa2V5KSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnB1c2godmFsdWUpOwogIH0KICAvKiogR2l2ZW4gYSByYXcgbGlzdCBvZiBpbmxpbmUgZmllbGQgdmFsdWVzLCBhZGQgbm9ybWFsaXplZCBrZXlzIGFuZCBzcXVhc2ggdGhlbS4gKi8KICBmdW5jdGlvbiBmaW5hbGl6ZUlubGluZUZpZWxkcyhmaWVsZHMpIHsKICAgICAgLy8gQ29tcHV0ZSB1bmlxdWUgbm9ybWFsaXplZCBrZXlzICh0aGF0IGRvIG5vdCBvdmVybGFwIHcvIHRoZSBmaWVsZHMpLgogICAgICBsZXQgbm9ybWFsaXplZCA9IG5ldyBNYXAoKTsKICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVzXSBvZiBmaWVsZHMuZW50cmllcygpKSB7CiAgICAgICAgICBsZXQgbm9ybUtleSA9IGNhbm9uaWNhbGl6ZVZhck5hbWUoa2V5KTsKICAgICAgICAgIGlmIChub3JtS2V5ID09ICIiIHx8IGZpZWxkcy5oYXMobm9ybUtleSkpCiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICBpZiAoIW5vcm1hbGl6ZWQuaGFzKG5vcm1LZXkpKQogICAgICAgICAgICAgIG5vcm1hbGl6ZWQuc2V0KG5vcm1LZXksIHZhbHVlcyk7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgbm9ybWFsaXplZC5zZXQobm9ybUtleSwgbm9ybWFsaXplZC5nZXQobm9ybUtleSkuY29uY2F0KHZhbHVlcykpOwogICAgICB9CiAgICAgIC8vIENvbWJpbmUgbm9ybWFsaXplZCArIG5vcm1hbCBrZXlzLgogICAgICBsZXQgaW50ZXJpbSA9IG5ldyBNYXAoKTsKICAgICAgbWVyZ2VGaWVsZEdyb3VwcyhpbnRlcmltLCBmaWVsZHMpOwogICAgICBtZXJnZUZpZWxkR3JvdXBzKGludGVyaW0sIG5vcm1hbGl6ZWQpOwogICAgICAvLyBBbmQgdGhlbiBmbGF0dGVuIHRoZW0uCiAgICAgIGxldCByZXN1bHQgPSBuZXcgTWFwKCk7CiAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBpbnRlcmltLmVudHJpZXMoKSkgewogICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PSAxKQogICAgICAgICAgICAgIHJlc3VsdC5zZXQoa2V5LCB2YWx1ZVswXSk7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmVzdWx0LnNldChrZXksIHZhbHVlKTsKICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0OwogIH0KICAvKiogQ29weSBhbGwgZmllbGRzIG9mICdzb3VyY2UnIGludG8gJ3RhcmdldCcuICovCiAgZnVuY3Rpb24gbWVyZ2VGaWVsZEdyb3Vwcyh0YXJnZXQsIHNvdXJjZSkgewogICAgICBmb3IgKGxldCBrZXkgb2Ygc291cmNlLmtleXMoKSkgewogICAgICAgICAgaWYgKCF0YXJnZXQuaGFzKGtleSkpCiAgICAgICAgICAgICAgdGFyZ2V0LnNldChrZXksIHNvdXJjZS5nZXQoa2V5KSk7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgdGFyZ2V0LnNldChrZXksIHRhcmdldC5nZXQoa2V5KS5jb25jYXQoc291cmNlLmdldChrZXkpKSk7CiAgICAgIH0KICB9CiAgLyoqIEZpbmQgdGhlIGhlYWRlciB0aGF0IGlzIG1vc3QgaW1tZWRpYXRlbHkgYWJvdmUgdGhlIGdpdmVuIGxpbmUgbnVtYmVyLiAqLwogIGZ1bmN0aW9uIGZpbmRQcmV2aW91c0hlYWRlcihsaW5lLCBoZWFkZXJzKSB7CiAgICAgIGlmIChoZWFkZXJzLmxlbmd0aCA9PSAwKQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgaWYgKGhlYWRlcnNbMF0ucG9zaXRpb24uc3RhcnQubGluZSA+IGxpbmUpCiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICBsZXQgaW5kZXggPSBoZWFkZXJzLmxlbmd0aCAtIDE7CiAgICAgIHdoaWxlIChpbmRleCA+PSAwICYmIGhlYWRlcnNbaW5kZXhdLnBvc2l0aW9uLnN0YXJ0LmxpbmUgPiBsaW5lKQogICAgICAgICAgaW5kZXgtLTsKICAgICAgcmV0dXJuIGhlYWRlcnNbaW5kZXhdLmhlYWRpbmc7CiAgfQoKICAvKiogQWN0dWFsIGltcG9ydCBpbXBsZW1lbnRhdGlvbiBiYWNrZW5kLiBUaGlzIG11c3QgcmVtYWluIHNlcGFyYXRlIGZyb20gYGltcG9ydC1lbnRyeWAgc2luY2UgaXQgaXMgdXNlZCB3aXRob3V0IHdlYiB3b3JrZXJzLiAqLwogIGZ1bmN0aW9uIHJ1bkltcG9ydChwYXRoLCBjb250ZW50cywgc3RhdHMsIG1ldGFkYXRhKSB7CiAgICAgIHJldHVybiBwYXJzZVBhZ2UocGF0aCwgY29udGVudHMsIHN0YXRzLCBtZXRhZGF0YSk7CiAgfQoKICAvKiogU2ltcGxpZmllcyBwYXNzaW5nIGRhdGF2aWV3IHZhbHVlcyBhY3Jvc3MgdGhlIEpTIHdlYiB3b3JrZXIgYmFycmllci4gKi8KICB2YXIgVHJhbnNmZXJhYmxlOwogIChmdW5jdGlvbiAoVHJhbnNmZXJhYmxlKSB7CiAgICAgIC8qKiBDb252ZXJ0IGEgbGl0ZXJhbCB2YWx1ZSB0byBhIHNlcmlhbGl6ZXItZnJpZW5kbHkgdHJhbnNmZXJhYmxlIHZhbHVlLiAqLwogICAgICBmdW5jdGlvbiB0cmFuc2ZlcmFibGUodmFsdWUpIHsKICAgICAgICAgIC8vIEhhbmRsZSBzaW1wbGUgdW5pdmVyc2FsIHR5cGVzIGZpcnN0LgogICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTWFwKSB7CiAgICAgICAgICAgICAgbGV0IGNvcGllZCA9IG5ldyBNYXAoKTsKICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWxdIG9mIHZhbHVlLmVudHJpZXMoKSkKICAgICAgICAgICAgICAgICAgY29waWVkLnNldCh0cmFuc2ZlcmFibGUoa2V5KSwgdHJhbnNmZXJhYmxlKHZhbCkpOwogICAgICAgICAgICAgIHJldHVybiBjb3BpZWQ7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFNldCkgewogICAgICAgICAgICAgIGxldCBjb3BpZWQgPSBuZXcgU2V0KCk7CiAgICAgICAgICAgICAgZm9yIChsZXQgdmFsIG9mIHZhbHVlKQogICAgICAgICAgICAgICAgICBjb3BpZWQuYWRkKHRyYW5zZmVyYWJsZSh2YWwpKTsKICAgICAgICAgICAgICByZXR1cm4gY29waWVkOwogICAgICAgICAgfQogICAgICAgICAgbGV0IHdyYXBwZWQgPSBWYWx1ZXMud3JhcFZhbHVlKHZhbHVlKTsKICAgICAgICAgIGlmICh3cmFwcGVkID09PSB1bmRlZmluZWQpCiAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoIlVucmVjb2duaXplZCB0cmFuc2ZlcmFibGUgdmFsdWU6ICIgKyB2YWx1ZSk7CiAgICAgICAgICBzd2l0Y2ggKHdyYXBwZWQudHlwZSkgewogICAgICAgICAgICAgIGNhc2UgIm51bGwiOgogICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6CiAgICAgICAgICAgICAgY2FzZSAic3RyaW5nIjoKICAgICAgICAgICAgICBjYXNlICJib29sZWFuIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWU7CiAgICAgICAgICAgICAgY2FzZSAiZGF0ZSI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAiX19fdHJhbnNmZXItdHlwZSI6ICJkYXRlIiwKICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0cmFuc2ZlcmFibGUod3JhcHBlZC52YWx1ZS50b09iamVjdCgpKSwKICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICB6b25lOiB3cmFwcGVkLnZhbHVlLnpvbmUuZXF1YWxzKFN5c3RlbVpvbmUuaW5zdGFuY2UpID8gdW5kZWZpbmVkIDogd3JhcHBlZC52YWx1ZS56b25lTmFtZSwKICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgY2FzZSAiZHVyYXRpb24iOgogICAgICAgICAgICAgICAgICByZXR1cm4geyAiX19fdHJhbnNmZXItdHlwZSI6ICJkdXJhdGlvbiIsIHZhbHVlOiB0cmFuc2ZlcmFibGUod3JhcHBlZC52YWx1ZS50b09iamVjdCgpKSB9OwogICAgICAgICAgICAgIGNhc2UgImFycmF5IjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubWFwKHYgPT4gdHJhbnNmZXJhYmxlKHYpKTsKICAgICAgICAgICAgICBjYXNlICJsaW5rIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgIl9fX3RyYW5zZmVyLXR5cGUiOiAibGluayIsIHZhbHVlOiB0cmFuc2ZlcmFibGUod3JhcHBlZC52YWx1ZS50b09iamVjdCgpKSB9OwogICAgICAgICAgICAgIGNhc2UgIm9iamVjdCI6CiAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB7fTsKICAgICAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHdyYXBwZWQudmFsdWUpKQogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB0cmFuc2ZlcmFibGUodmFsdWUpOwogICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgfQogICAgICB9CiAgICAgIFRyYW5zZmVyYWJsZS50cmFuc2ZlcmFibGUgPSB0cmFuc2ZlcmFibGU7CiAgICAgIC8qKiBDb252ZXJ0IGEgdHJhbnNmZXJhYmxlIHZhbHVlIGJhY2sgdG8gYSBsaXRlcmFsIHZhbHVlIHdlIGNhbiB3b3JrIHdpdGguICovCiAgICAgIGZ1bmN0aW9uIHZhbHVlKHRyYW5zZmVyYWJsZSkgewogICAgICAgICAgaWYgKHRyYW5zZmVyYWJsZSA9PT0gbnVsbCkgewogICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAodHJhbnNmZXJhYmxlID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAodHJhbnNmZXJhYmxlIGluc3RhbmNlb2YgTWFwKSB7CiAgICAgICAgICAgICAgbGV0IHJlYWwgPSBuZXcgTWFwKCk7CiAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsXSBvZiB0cmFuc2ZlcmFibGUuZW50cmllcygpKQogICAgICAgICAgICAgICAgICByZWFsLnNldCh2YWx1ZShrZXkpLCB2YWx1ZSh2YWwpKTsKICAgICAgICAgICAgICByZXR1cm4gcmVhbDsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKHRyYW5zZmVyYWJsZSBpbnN0YW5jZW9mIFNldCkgewogICAgICAgICAgICAgIGxldCByZWFsID0gbmV3IFNldCgpOwogICAgICAgICAgICAgIGZvciAobGV0IHZhbCBvZiB0cmFuc2ZlcmFibGUpCiAgICAgICAgICAgICAgICAgIHJlYWwuYWRkKHZhbHVlKHZhbCkpOwogICAgICAgICAgICAgIHJldHVybiByZWFsOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0cmFuc2ZlcmFibGUpKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zZmVyYWJsZS5tYXAodiA9PiB2YWx1ZSh2KSk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdHJhbnNmZXJhYmxlID09PSAib2JqZWN0IikgewogICAgICAgICAgICAgIGlmICgiX19fdHJhbnNmZXItdHlwZSIgaW4gdHJhbnNmZXJhYmxlKSB7CiAgICAgICAgICAgICAgICAgIHN3aXRjaCAodHJhbnNmZXJhYmxlWyJfX190cmFuc2Zlci10eXBlIl0pIHsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImRhdGUiOgogICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXRlT3B0cyA9IHZhbHVlKHRyYW5zZmVyYWJsZS5vcHRpb25zKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF0ZURhdGEgPSB2YWx1ZSh0cmFuc2ZlcmFibGUudmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBEYXRlVGltZS5mcm9tT2JqZWN0KGRhdGVEYXRhLCB7IHpvbmU6IGRhdGVPcHRzLnpvbmUgfSk7CiAgICAgICAgICAgICAgICAgICAgICBjYXNlICJkdXJhdGlvbiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIER1cmF0aW9uLmZyb21PYmplY3QodmFsdWUodHJhbnNmZXJhYmxlLnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgICAgICBjYXNlICJsaW5rIjoKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTGluay5mcm9tT2JqZWN0KHZhbHVlKHRyYW5zZmVyYWJsZS52YWx1ZSkpOwogICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgVW5yZWNvZ25pemVkIHRyYW5zZmVyIHR5cGUgJyR7dHJhbnNmZXJhYmxlWyJfX190cmFuc2Zlci10eXBlIl19J2ApOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGxldCByZXN1bHQgPSB7fTsKICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWxdIG9mIE9iamVjdC5lbnRyaWVzKHRyYW5zZmVyYWJsZSkpCiAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWUodmFsKTsKICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHRyYW5zZmVyYWJsZTsKICAgICAgfQogICAgICBUcmFuc2ZlcmFibGUudmFsdWUgPSB2YWx1ZTsKICB9KShUcmFuc2ZlcmFibGUgfHwgKFRyYW5zZmVyYWJsZSA9IHt9KSk7CgogIC8qKiBFbnRyeS1wb2ludCBzY3JpcHQgdXNlZCBieSB0aGUgaW5kZXggYXMgYSB3ZWIgd29ya2VyLiAqLwogIC8qKiBBbiBpbXBvcnQgd2hpY2ggY2FuIGZhaWwgYW5kIHJhaXNlIGFuIGV4Y2VwdGlvbiwgd2hpY2ggd2lsbCBiZSBjYXVnaHQgYnkgdGhlIGhhbmRsZXIuICovCiAgZnVuY3Rpb24gZmFpbGFibGVJbXBvcnQocGF0aCwgY29udGVudHMsIHN0YXQsIG1ldGFkYXRhKSB7CiAgICAgIGlmIChtZXRhZGF0YSA9PT0gdW5kZWZpbmVkIHx8IG1ldGFkYXRhID09PSBudWxsKSB7CiAgICAgICAgICB0aHJvdyBFcnJvcihgQ2Fubm90IGluZGV4IGZpbGUsIHNpbmNlIGl0IGhhcyBubyBPYnNpZGlhbiBmaWxlIG1ldGFkYXRhLmApOwogICAgICB9CiAgICAgIHJldHVybiBydW5JbXBvcnQocGF0aCwgY29udGVudHMsIHN0YXQsIG1ldGFkYXRhKTsKICB9CiAgb25tZXNzYWdlID0gYXN5bmMgKGV2dCkgPT4gewogICAgICB0cnkgewogICAgICAgICAgbGV0IHsgcGF0aCwgY29udGVudHMsIHN0YXQsIG1ldGFkYXRhIH0gPSBldnQuZGF0YTsKICAgICAgICAgIGxldCByZXN1bHQgPSBmYWlsYWJsZUltcG9ydChwYXRoLCBjb250ZW50cywgc3RhdCwgbWV0YWRhdGEpOwogICAgICAgICAgcG9zdE1lc3NhZ2UoeyBwYXRoOiBldnQuZGF0YS5wYXRoLCByZXN1bHQ6IFRyYW5zZmVyYWJsZS50cmFuc2ZlcmFibGUocmVzdWx0KSB9KTsKICAgICAgfQogICAgICBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTsKICAgICAgICAgIHBvc3RNZXNzYWdlKHsKICAgICAgICAgICAgICBwYXRoOiBldnQuZGF0YS5wYXRoLAogICAgICAgICAgICAgIHJlc3VsdDogewogICAgICAgICAgICAgICAgICAkZXJyb3I6IGBGYWlsZWQgdG8gaW5kZXggZmlsZTogJHtldnQuZGF0YS5wYXRofTogJHtlcnJvcn1gLAogICAgICAgICAgICAgIH0sCiAgICAgICAgICB9KTsKICAgICAgfQogIH07Cgp9KSgpOwoK', null, false); +var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICd1c2Ugc3RyaWN0JzsKCiAgLy8gdGhlc2UgYXJlbid0IHJlYWxseSBwcml2YXRlLCBidXQgbm9yIGFyZSB0aGV5IHJlYWxseSB1c2VmdWwgdG8gZG9jdW1lbnQKCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBMdXhvbkVycm9yIGV4dGVuZHMgRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkRGF0ZVRpbWVFcnJvciBleHRlbmRzIEx1eG9uRXJyb3IgewogICAgY29uc3RydWN0b3IocmVhc29uKSB7CiAgICAgIHN1cGVyKGBJbnZhbGlkIERhdGVUaW1lOiAke3JlYXNvbi50b01lc3NhZ2UoKX1gKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCiAgY2xhc3MgSW52YWxpZEludGVydmFsRXJyb3IgZXh0ZW5kcyBMdXhvbkVycm9yIHsKICAgIGNvbnN0cnVjdG9yKHJlYXNvbikgewogICAgICBzdXBlcihgSW52YWxpZCBJbnRlcnZhbDogJHtyZWFzb24udG9NZXNzYWdlKCl9YCk7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwogIGNsYXNzIEludmFsaWREdXJhdGlvbkVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3RvcihyZWFzb24pIHsKICAgICAgc3VwZXIoYEludmFsaWQgRHVyYXRpb246ICR7cmVhc29uLnRvTWVzc2FnZSgpfWApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkVW5pdEVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3Rvcih1bml0KSB7CiAgICAgIHN1cGVyKGBJbnZhbGlkIHVuaXQgJHt1bml0fWApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkQXJndW1lbnRFcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBab25lSXNBYnN0cmFjdEVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgc3VwZXIoIlpvbmUgaXMgYW4gYWJzdHJhY3QgY2xhc3MiKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCgogIGNvbnN0IG4gPSAibnVtZXJpYyIsCiAgICBzID0gInNob3J0IiwKICAgIGwgPSAibG9uZyI7CgogIGNvbnN0IERBVEVfU0hPUlQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IG4sCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9NRUQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9NRURfV0lUSF9XRUVLREFZID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBzLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogcywKICB9OwoKICBjb25zdCBEQVRFX0ZVTEwgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IGwsCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9IVUdFID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogbCwKICB9OwoKICBjb25zdCBUSU1FX1NJTVBMRSA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgfTsKCiAgY29uc3QgVElNRV9XSVRIX1NFQ09ORFMgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogIH07CgogIGNvbnN0IFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgdGltZVpvbmVOYW1lOiBzLAogIH07CgogIGNvbnN0IFRJTUVfV0lUSF9MT05HX09GRlNFVCA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IGwsCiAgfTsKCiAgY29uc3QgVElNRV8yNF9TSU1QTEUgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICB9OwoKICBjb25zdCBUSU1FXzI0X1dJVEhfU0VDT05EUyA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICBob3VyQ3ljbGU6ICJoMjMiLAogIH07CgogIGNvbnN0IFRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICAgIHRpbWVab25lTmFtZTogcywKICB9OwoKICBjb25zdCBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICAgIHRpbWVab25lTmFtZTogbCwKICB9OwoKICBjb25zdCBEQVRFVElNRV9TSE9SVCA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbiwKICAgIGRheTogbiwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgfTsKCiAgY29uc3QgREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBuLAogICAgZGF5OiBuLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICAgIHNlY29uZDogbiwKICB9OwoKICBjb25zdCBEQVRFVElNRV9NRUQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogIH07CgogIGNvbnN0IERBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFMgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogIH07CgogIGNvbnN0IERBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICB3ZWVrZGF5OiBzLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICB9OwoKICBjb25zdCBEQVRFVElNRV9GVUxMID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICAgIHRpbWVab25lTmFtZTogcywKICB9OwoKICBjb25zdCBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUyA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbCwKICAgIGRheTogbiwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IHMsCiAgfTsKCiAgY29uc3QgREFURVRJTUVfSFVHRSA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbCwKICAgIGRheTogbiwKICAgIHdlZWtkYXk6IGwsCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgdGltZVpvbmVOYW1lOiBsLAogIH07CgogIGNvbnN0IERBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogbCwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IGwsCiAgfTsKCiAgLyoqCiAgICogQGludGVyZmFjZQogICAqLwogIGNsYXNzIFpvbmUgewogICAgLyoqCiAgICAgKiBUaGUgdHlwZSBvZiB6b25lCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCB0eXBlKCkgewogICAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIG5hbWUgb2YgdGhpcyB6b25lLgogICAgICogQGFic3RyYWN0CiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbmFtZSgpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICBnZXQgaWFuYU5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLm5hbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIG9mZnNldCBpcyBrbm93biB0byBiZSBmaXhlZCBmb3IgdGhlIHdob2xlIHllYXIuCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBnZXQgaXNVbml2ZXJzYWwoKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBvZmZzZXQncyBjb21tb24gbmFtZSAoc3VjaCBhcyBFU1QpIGF0IHRoZSBzcGVjaWZpZWQgdGltZXN0YW1wCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBuYW1lCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgdG8gYWZmZWN0IHRoZSBmb3JtYXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmZvcm1hdCAtIFdoYXQgc3R5bGUgb2Ygb2Zmc2V0IHRvIHJldHVybi4gQWNjZXB0cyAnbG9uZycgb3IgJ3Nob3J0Jy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmxvY2FsZSAtIFdoYXQgbG9jYWxlIHRvIHJldHVybiB0aGUgb2Zmc2V0IG5hbWUgaW4uCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIG9mZnNldE5hbWUodHMsIG9wdHMpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG9mZnNldCdzIHZhbHVlIGFzIGEgc3RyaW5nCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBvZmZzZXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXQgLSBXaGF0IHN0eWxlIG9mIG9mZnNldCB0byByZXR1cm4uCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXB0cyAnbmFycm93JywgJ3Nob3J0Jywgb3IgJ3RlY2hpZScuIFJldHVybmluZyAnKzYnLCAnKzA2OjAwJywgb3IgJyswNjAwJyByZXNwZWN0aXZlbHkKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgb2Zmc2V0IGluIG1pbnV0ZXMgZm9yIHRoaXMgem9uZSBhdCB0aGUgc3BlY2lmaWVkIHRpbWVzdGFtcC4KICAgICAqIEBhYnN0cmFjdAogICAgICogQHBhcmFtIHtudW1iZXJ9IHRzIC0gRXBvY2ggbWlsbGlzZWNvbmRzIGZvciB3aGljaCB0byBjb21wdXRlIHRoZSBvZmZzZXQKICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgb2Zmc2V0KHRzKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIFpvbmUgaXMgZXF1YWwgdG8gYW5vdGhlciB6b25lCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7Wm9uZX0gb3RoZXJab25lIC0gdGhlIHpvbmUgdG8gY29tcGFyZQogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgZXF1YWxzKG90aGVyWm9uZSkgewogICAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBab25lIGlzIHZhbGlkLgogICAgICogQGFic3RyYWN0CiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CiAgfQoKICBsZXQgc2luZ2xldG9uJDEgPSBudWxsOwoKICAvKioKICAgKiBSZXByZXNlbnRzIHRoZSBsb2NhbCB6b25lIGZvciB0aGlzIEphdmFTY3JpcHQgZW52aXJvbm1lbnQuCiAgICogQGltcGxlbWVudHMge1pvbmV9CiAgICovCiAgY2xhc3MgU3lzdGVtWm9uZSBleHRlbmRzIFpvbmUgewogICAgLyoqCiAgICAgKiBHZXQgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIGxvY2FsIHpvbmUKICAgICAqIEByZXR1cm4ge1N5c3RlbVpvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgaW5zdGFuY2UoKSB7CiAgICAgIGlmIChzaW5nbGV0b24kMSA9PT0gbnVsbCkgewogICAgICAgIHNpbmdsZXRvbiQxID0gbmV3IFN5c3RlbVpvbmUoKTsKICAgICAgfQogICAgICByZXR1cm4gc2luZ2xldG9uJDE7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCB0eXBlKCkgewogICAgICByZXR1cm4gInN5c3RlbSI7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBuYW1lKCkgewogICAgICByZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVW5pdmVyc2FsKCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldE5hbWUodHMsIHsgZm9ybWF0LCBsb2NhbGUgfSkgewogICAgICByZXR1cm4gcGFyc2Vab25lSW5mbyh0cywgZm9ybWF0LCBsb2NhbGUpOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkgewogICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHRoaXMub2Zmc2V0KHRzKSwgZm9ybWF0KTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgb2Zmc2V0KHRzKSB7CiAgICAgIHJldHVybiAtbmV3IERhdGUodHMpLmdldFRpbWV6b25lT2Zmc2V0KCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAic3lzdGVtIjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogIH0KCiAgbGV0IGR0ZkNhY2hlID0ge307CiAgZnVuY3Rpb24gbWFrZURURih6b25lKSB7CiAgICBpZiAoIWR0ZkNhY2hlW3pvbmVdKSB7CiAgICAgIGR0ZkNhY2hlW3pvbmVdID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoImVuLVVTIiwgewogICAgICAgIGhvdXIxMjogZmFsc2UsCiAgICAgICAgdGltZVpvbmU6IHpvbmUsCiAgICAgICAgeWVhcjogIm51bWVyaWMiLAogICAgICAgIG1vbnRoOiAiMi1kaWdpdCIsCiAgICAgICAgZGF5OiAiMi1kaWdpdCIsCiAgICAgICAgaG91cjogIjItZGlnaXQiLAogICAgICAgIG1pbnV0ZTogIjItZGlnaXQiLAogICAgICAgIHNlY29uZDogIjItZGlnaXQiLAogICAgICAgIGVyYTogInNob3J0IiwKICAgICAgfSk7CiAgICB9CiAgICByZXR1cm4gZHRmQ2FjaGVbem9uZV07CiAgfQoKICBjb25zdCB0eXBlVG9Qb3MgPSB7CiAgICB5ZWFyOiAwLAogICAgbW9udGg6IDEsCiAgICBkYXk6IDIsCiAgICBlcmE6IDMsCiAgICBob3VyOiA0LAogICAgbWludXRlOiA1LAogICAgc2Vjb25kOiA2LAogIH07CgogIGZ1bmN0aW9uIGhhY2t5T2Zmc2V0KGR0ZiwgZGF0ZSkgewogICAgY29uc3QgZm9ybWF0dGVkID0gZHRmLmZvcm1hdChkYXRlKS5yZXBsYWNlKC9cdTIwMEUvZywgIiIpLAogICAgICBwYXJzZWQgPSAvKFxkKylcLyhcZCspXC8oXGQrKSAoQUR8QkMpLD8gKFxkKyk6KFxkKyk6KFxkKykvLmV4ZWMoZm9ybWF0dGVkKSwKICAgICAgWywgZk1vbnRoLCBmRGF5LCBmWWVhciwgZmFkT3JCYywgZkhvdXIsIGZNaW51dGUsIGZTZWNvbmRdID0gcGFyc2VkOwogICAgcmV0dXJuIFtmWWVhciwgZk1vbnRoLCBmRGF5LCBmYWRPckJjLCBmSG91ciwgZk1pbnV0ZSwgZlNlY29uZF07CiAgfQoKICBmdW5jdGlvbiBwYXJ0c09mZnNldChkdGYsIGRhdGUpIHsKICAgIGNvbnN0IGZvcm1hdHRlZCA9IGR0Zi5mb3JtYXRUb1BhcnRzKGRhdGUpOwogICAgY29uc3QgZmlsbGVkID0gW107CiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvcm1hdHRlZC5sZW5ndGg7IGkrKykgewogICAgICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSBmb3JtYXR0ZWRbaV07CiAgICAgIGNvbnN0IHBvcyA9IHR5cGVUb1Bvc1t0eXBlXTsKCiAgICAgIGlmICh0eXBlID09PSAiZXJhIikgewogICAgICAgIGZpbGxlZFtwb3NdID0gdmFsdWU7CiAgICAgIH0gZWxzZSBpZiAoIWlzVW5kZWZpbmVkKHBvcykpIHsKICAgICAgICBmaWxsZWRbcG9zXSA9IHBhcnNlSW50KHZhbHVlLCAxMCk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBmaWxsZWQ7CiAgfQoKICBsZXQgaWFuYVpvbmVDYWNoZSA9IHt9OwogIC8qKgogICAqIEEgem9uZSBpZGVudGlmaWVkIGJ5IGFuIElBTkEgaWRlbnRpZmllciwgbGlrZSBBbWVyaWNhL05ld19Zb3JrCiAgICogQGltcGxlbWVudHMge1pvbmV9CiAgICovCiAgY2xhc3MgSUFOQVpvbmUgZXh0ZW5kcyBab25lIHsKICAgIC8qKgogICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBab25lIG5hbWUKICAgICAqIEByZXR1cm4ge0lBTkFab25lfQogICAgICovCiAgICBzdGF0aWMgY3JlYXRlKG5hbWUpIHsKICAgICAgaWYgKCFpYW5hWm9uZUNhY2hlW25hbWVdKSB7CiAgICAgICAgaWFuYVpvbmVDYWNoZVtuYW1lXSA9IG5ldyBJQU5BWm9uZShuYW1lKTsKICAgICAgfQogICAgICByZXR1cm4gaWFuYVpvbmVDYWNoZVtuYW1lXTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlc2V0IGxvY2FsIGNhY2hlcy4gU2hvdWxkIG9ubHkgYmUgbmVjZXNzYXJ5IGluIHRlc3Rpbmcgc2NlbmFyaW9zLgogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqLwogICAgc3RhdGljIHJlc2V0Q2FjaGUoKSB7CiAgICAgIGlhbmFab25lQ2FjaGUgPSB7fTsKICAgICAgZHRmQ2FjaGUgPSB7fTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgcHJvdmlkZWQgc3RyaW5nIGlzIGEgdmFsaWQgc3BlY2lmaWVyLiBUaGlzIG9ubHkgY2hlY2tzIHRoZSBzdHJpbmcncyBmb3JtYXQsIG5vdCB0aGF0IHRoZSBzcGVjaWZpZXIgaWRlbnRpZmllcyBhIGtub3duIHpvbmU7IHNlZSBpc1ZhbGlkWm9uZSBmb3IgdGhhdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzIC0gVGhlIHN0cmluZyB0byBjaGVjayB2YWxpZGl0eSBvbgogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcigiQW1lcmljYS9OZXdfWW9yayIpIC8vPT4gdHJ1ZQogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcigiU3BvcnR+fmJsb3JwIikgLy89PiBmYWxzZQogICAgICogQGRlcHJlY2F0ZWQgVGhpcyBtZXRob2QgcmV0dXJucyBmYWxzZSBmb3Igc29tZSB2YWxpZCBJQU5BIG5hbWVzLiBVc2UgaXNWYWxpZFpvbmUgaW5zdGVhZC4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc1ZhbGlkU3BlY2lmaWVyKHMpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZFpvbmUocyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHByb3ZpZGVkIHN0cmluZyBpZGVudGlmaWVzIGEgcmVhbCB6b25lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gem9uZSAtIFRoZSBzdHJpbmcgdG8gY2hlY2sKICAgICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRab25lKCJBbWVyaWNhL05ld19Zb3JrIikgLy89PiB0cnVlCiAgICAgKiBAZXhhbXBsZSBJQU5BWm9uZS5pc1ZhbGlkWm9uZSgiRmFudGFzaWEvQ2FzdGxlIikgLy89PiBmYWxzZQogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFpvbmUoIlNwb3J0fn5ibG9ycCIpIC8vPT4gZmFsc2UKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc1ZhbGlkWm9uZSh6b25lKSB7CiAgICAgIGlmICghem9uZSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICB0cnkgewogICAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCJlbi1VUyIsIHsgdGltZVpvbmU6IHpvbmUgfSkuZm9ybWF0KCk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIH0KCiAgICBjb25zdHJ1Y3RvcihuYW1lKSB7CiAgICAgIHN1cGVyKCk7CiAgICAgIC8qKiBAcHJpdmF0ZSAqKi8KICAgICAgdGhpcy56b25lTmFtZSA9IG5hbWU7CiAgICAgIC8qKiBAcHJpdmF0ZSAqKi8KICAgICAgdGhpcy52YWxpZCA9IElBTkFab25lLmlzVmFsaWRab25lKG5hbWUpOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgdHlwZSgpIHsKICAgICAgcmV0dXJuICJpYW5hIjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IG5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLnpvbmVOYW1lOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgaXNVbml2ZXJzYWwoKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgb2Zmc2V0TmFtZSh0cywgeyBmb3JtYXQsIGxvY2FsZSB9KSB7CiAgICAgIHJldHVybiBwYXJzZVpvbmVJbmZvKHRzLCBmb3JtYXQsIGxvY2FsZSwgdGhpcy5uYW1lKTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHsKICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh0aGlzLm9mZnNldCh0cyksIGZvcm1hdCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldCh0cykgewogICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodHMpOwoKICAgICAgaWYgKGlzTmFOKGRhdGUpKSByZXR1cm4gTmFOOwoKICAgICAgY29uc3QgZHRmID0gbWFrZURURih0aGlzLm5hbWUpOwogICAgICBsZXQgW3llYXIsIG1vbnRoLCBkYXksIGFkT3JCYywgaG91ciwgbWludXRlLCBzZWNvbmRdID0gZHRmLmZvcm1hdFRvUGFydHMKICAgICAgICA/IHBhcnRzT2Zmc2V0KGR0ZiwgZGF0ZSkKICAgICAgICA6IGhhY2t5T2Zmc2V0KGR0ZiwgZGF0ZSk7CgogICAgICBpZiAoYWRPckJjID09PSAiQkMiKSB7CiAgICAgICAgeWVhciA9IC1NYXRoLmFicyh5ZWFyKSArIDE7CiAgICAgIH0KCiAgICAgIC8vIGJlY2F1c2Ugd2UncmUgdXNpbmcgaG91cjEyIGFuZCBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xMDI1NTY0JmNhbj0yJnE9JTIyMjQlM0EwMCUyMiUyMGRhdGV0aW1lZm9ybWF0CiAgICAgIGNvbnN0IGFkanVzdGVkSG91ciA9IGhvdXIgPT09IDI0ID8gMCA6IGhvdXI7CgogICAgICBjb25zdCBhc1VUQyA9IG9ialRvTG9jYWxUUyh7CiAgICAgICAgeWVhciwKICAgICAgICBtb250aCwKICAgICAgICBkYXksCiAgICAgICAgaG91cjogYWRqdXN0ZWRIb3VyLAogICAgICAgIG1pbnV0ZSwKICAgICAgICBzZWNvbmQsCiAgICAgICAgbWlsbGlzZWNvbmQ6IDAsCiAgICAgIH0pOwoKICAgICAgbGV0IGFzVFMgPSArZGF0ZTsKICAgICAgY29uc3Qgb3ZlciA9IGFzVFMgJSAxMDAwOwogICAgICBhc1RTIC09IG92ZXIgPj0gMCA/IG92ZXIgOiAxMDAwICsgb3ZlcjsKICAgICAgcmV0dXJuIChhc1VUQyAtIGFzVFMpIC8gKDYwICogMTAwMCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAiaWFuYSIgJiYgb3RoZXJab25lLm5hbWUgPT09IHRoaXMubmFtZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0aGlzLnZhbGlkOwogICAgfQogIH0KCiAgLy8gdG9kbyAtIHJlbWFwIGNhY2hpbmcKCiAgbGV0IGludGxMRkNhY2hlID0ge307CiAgZnVuY3Rpb24gZ2V0Q2FjaGVkTEYobG9jU3RyaW5nLCBvcHRzID0ge30pIHsKICAgIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTsKICAgIGxldCBkdGYgPSBpbnRsTEZDYWNoZVtrZXldOwogICAgaWYgKCFkdGYpIHsKICAgICAgZHRmID0gbmV3IEludGwuTGlzdEZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsTEZDYWNoZVtrZXldID0gZHRmOwogICAgfQogICAgcmV0dXJuIGR0ZjsKICB9CgogIGxldCBpbnRsRFRDYWNoZSA9IHt9OwogIGZ1bmN0aW9uIGdldENhY2hlZERURihsb2NTdHJpbmcsIG9wdHMgPSB7fSkgewogICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgb3B0c10pOwogICAgbGV0IGR0ZiA9IGludGxEVENhY2hlW2tleV07CiAgICBpZiAoIWR0ZikgewogICAgICBkdGYgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsRFRDYWNoZVtrZXldID0gZHRmOwogICAgfQogICAgcmV0dXJuIGR0ZjsKICB9CgogIGxldCBpbnRsTnVtQ2FjaGUgPSB7fTsKICBmdW5jdGlvbiBnZXRDYWNoZWRJTkYobG9jU3RyaW5nLCBvcHRzID0ge30pIHsKICAgIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTsKICAgIGxldCBpbmYgPSBpbnRsTnVtQ2FjaGVba2V5XTsKICAgIGlmICghaW5mKSB7CiAgICAgIGluZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsTnVtQ2FjaGVba2V5XSA9IGluZjsKICAgIH0KICAgIHJldHVybiBpbmY7CiAgfQoKICBsZXQgaW50bFJlbENhY2hlID0ge307CiAgZnVuY3Rpb24gZ2V0Q2FjaGVkUlRGKGxvY1N0cmluZywgb3B0cyA9IHt9KSB7CiAgICBjb25zdCB7IGJhc2UsIC4uLmNhY2hlS2V5T3B0cyB9ID0gb3B0czsgLy8gZXhjbHVkZSBgYmFzZWAgZnJvbSB0aGUgb3B0aW9ucwogICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgY2FjaGVLZXlPcHRzXSk7CiAgICBsZXQgaW5mID0gaW50bFJlbENhY2hlW2tleV07CiAgICBpZiAoIWluZikgewogICAgICBpbmYgPSBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQobG9jU3RyaW5nLCBvcHRzKTsKICAgICAgaW50bFJlbENhY2hlW2tleV0gPSBpbmY7CiAgICB9CiAgICByZXR1cm4gaW5mOwogIH0KCiAgbGV0IHN5c0xvY2FsZUNhY2hlID0gbnVsbDsKICBmdW5jdGlvbiBzeXN0ZW1Mb2NhbGUoKSB7CiAgICBpZiAoc3lzTG9jYWxlQ2FjaGUpIHsKICAgICAgcmV0dXJuIHN5c0xvY2FsZUNhY2hlOwogICAgfSBlbHNlIHsKICAgICAgc3lzTG9jYWxlQ2FjaGUgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZTsKICAgICAgcmV0dXJuIHN5c0xvY2FsZUNhY2hlOwogICAgfQogIH0KCiAgZnVuY3Rpb24gcGFyc2VMb2NhbGVTdHJpbmcobG9jYWxlU3RyKSB7CiAgICAvLyBJIHJlYWxseSB3YW50IHRvIGF2b2lkIHdyaXRpbmcgYSBCQ1AgNDcgcGFyc2VyCiAgICAvLyBzZWUsIGUuZy4gaHR0cHM6Ly9naXRodWIuY29tL3dvb29ybS9iY3AtNDcKICAgIC8vIEluc3RlYWQsIHdlJ2xsIGRvIHRoaXM6CgogICAgLy8gYSkgaWYgdGhlIHN0cmluZyBoYXMgbm8gLXUgZXh0ZW5zaW9ucywganVzdCBsZWF2ZSBpdCBhbG9uZQogICAgLy8gYikgaWYgaXQgZG9lcywgdXNlIEludGwgdG8gcmVzb2x2ZSBldmVyeXRoaW5nCiAgICAvLyBjKSBpZiBJbnRsIGZhaWxzLCB0cnkgYWdhaW4gd2l0aG91dCB0aGUgLXUKCiAgICAvLyBwcml2YXRlIHN1YnRhZ3MgYW5kIHVuaWNvZGUgc3VidGFncyBoYXZlIG9yZGVyaW5nIHJlcXVpcmVtZW50cywKICAgIC8vIGFuZCB3ZSdyZSBub3QgcHJvcGVybHkgcGFyc2luZyB0aGlzLCBzbyBqdXN0IHN0cmlwIG91dCB0aGUKICAgIC8vIHByaXZhdGUgb25lcyBpZiB0aGV5IGV4aXN0LgogICAgY29uc3QgeEluZGV4ID0gbG9jYWxlU3RyLmluZGV4T2YoIi14LSIpOwogICAgaWYgKHhJbmRleCAhPT0gLTEpIHsKICAgICAgbG9jYWxlU3RyID0gbG9jYWxlU3RyLnN1YnN0cmluZygwLCB4SW5kZXgpOwogICAgfQoKICAgIGNvbnN0IHVJbmRleCA9IGxvY2FsZVN0ci5pbmRleE9mKCItdS0iKTsKICAgIGlmICh1SW5kZXggPT09IC0xKSB7CiAgICAgIHJldHVybiBbbG9jYWxlU3RyXTsKICAgIH0gZWxzZSB7CiAgICAgIGxldCBvcHRpb25zOwogICAgICBsZXQgc2VsZWN0ZWRTdHI7CiAgICAgIHRyeSB7CiAgICAgICAgb3B0aW9ucyA9IGdldENhY2hlZERURihsb2NhbGVTdHIpLnJlc29sdmVkT3B0aW9ucygpOwogICAgICAgIHNlbGVjdGVkU3RyID0gbG9jYWxlU3RyOwogICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgY29uc3Qgc21hbGxlciA9IGxvY2FsZVN0ci5zdWJzdHJpbmcoMCwgdUluZGV4KTsKICAgICAgICBvcHRpb25zID0gZ2V0Q2FjaGVkRFRGKHNtYWxsZXIpLnJlc29sdmVkT3B0aW9ucygpOwogICAgICAgIHNlbGVjdGVkU3RyID0gc21hbGxlcjsKICAgICAgfQoKICAgICAgY29uc3QgeyBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyIH0gPSBvcHRpb25zOwogICAgICByZXR1cm4gW3NlbGVjdGVkU3RyLCBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyXTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGludGxDb25maWdTdHJpbmcobG9jYWxlU3RyLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSB7CiAgICBpZiAob3V0cHV0Q2FsZW5kYXIgfHwgbnVtYmVyaW5nU3lzdGVtKSB7CiAgICAgIGlmICghbG9jYWxlU3RyLmluY2x1ZGVzKCItdS0iKSkgewogICAgICAgIGxvY2FsZVN0ciArPSAiLXUiOwogICAgICB9CgogICAgICBpZiAob3V0cHV0Q2FsZW5kYXIpIHsKICAgICAgICBsb2NhbGVTdHIgKz0gYC1jYS0ke291dHB1dENhbGVuZGFyfWA7CiAgICAgIH0KCiAgICAgIGlmIChudW1iZXJpbmdTeXN0ZW0pIHsKICAgICAgICBsb2NhbGVTdHIgKz0gYC1udS0ke251bWJlcmluZ1N5c3RlbX1gOwogICAgICB9CiAgICAgIHJldHVybiBsb2NhbGVTdHI7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbG9jYWxlU3RyOwogICAgfQogIH0KCiAgZnVuY3Rpb24gbWFwTW9udGhzKGYpIHsKICAgIGNvbnN0IG1zID0gW107CiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSAxMjsgaSsrKSB7CiAgICAgIGNvbnN0IGR0ID0gRGF0ZVRpbWUudXRjKDIwMDksIGksIDEpOwogICAgICBtcy5wdXNoKGYoZHQpKTsKICAgIH0KICAgIHJldHVybiBtczsKICB9CgogIGZ1bmN0aW9uIG1hcFdlZWtkYXlzKGYpIHsKICAgIGNvbnN0IG1zID0gW107CiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA3OyBpKyspIHsKICAgICAgY29uc3QgZHQgPSBEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzICsgaSk7CiAgICAgIG1zLnB1c2goZihkdCkpOwogICAgfQogICAgcmV0dXJuIG1zOwogIH0KCiAgZnVuY3Rpb24gbGlzdFN0dWZmKGxvYywgbGVuZ3RoLCBlbmdsaXNoRm4sIGludGxGbikgewogICAgY29uc3QgbW9kZSA9IGxvYy5saXN0aW5nTW9kZSgpOwoKICAgIGlmIChtb2RlID09PSAiZXJyb3IiKSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfSBlbHNlIGlmIChtb2RlID09PSAiZW4iKSB7CiAgICAgIHJldHVybiBlbmdsaXNoRm4obGVuZ3RoKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBpbnRsRm4obGVuZ3RoKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHN1cHBvcnRzRmFzdE51bWJlcnMobG9jKSB7CiAgICBpZiAobG9jLm51bWJlcmluZ1N5c3RlbSAmJiBsb2MubnVtYmVyaW5nU3lzdGVtICE9PSAibGF0biIpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICgKICAgICAgICBsb2MubnVtYmVyaW5nU3lzdGVtID09PSAibGF0biIgfHwKICAgICAgICAhbG9jLmxvY2FsZSB8fAogICAgICAgIGxvYy5sb2NhbGUuc3RhcnRzV2l0aCgiZW4iKSB8fAogICAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvYy5pbnRsKS5yZXNvbHZlZE9wdGlvbnMoKS5udW1iZXJpbmdTeXN0ZW0gPT09ICJsYXRuIgogICAgICApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY2xhc3MgUG9seU51bWJlckZvcm1hdHRlciB7CiAgICBjb25zdHJ1Y3RvcihpbnRsLCBmb3JjZVNpbXBsZSwgb3B0cykgewogICAgICB0aGlzLnBhZFRvID0gb3B0cy5wYWRUbyB8fCAwOwogICAgICB0aGlzLmZsb29yID0gb3B0cy5mbG9vciB8fCBmYWxzZTsKCiAgICAgIGNvbnN0IHsgcGFkVG8sIGZsb29yLCAuLi5vdGhlck9wdHMgfSA9IG9wdHM7CgogICAgICBpZiAoIWZvcmNlU2ltcGxlIHx8IE9iamVjdC5rZXlzKG90aGVyT3B0cykubGVuZ3RoID4gMCkgewogICAgICAgIGNvbnN0IGludGxPcHRzID0geyB1c2VHcm91cGluZzogZmFsc2UsIC4uLm9wdHMgfTsKICAgICAgICBpZiAob3B0cy5wYWRUbyA+IDApIGludGxPcHRzLm1pbmltdW1JbnRlZ2VyRGlnaXRzID0gb3B0cy5wYWRUbzsKICAgICAgICB0aGlzLmluZiA9IGdldENhY2hlZElORihpbnRsLCBpbnRsT3B0cyk7CiAgICAgIH0KICAgIH0KCiAgICBmb3JtYXQoaSkgewogICAgICBpZiAodGhpcy5pbmYpIHsKICAgICAgICBjb25zdCBmaXhlZCA9IHRoaXMuZmxvb3IgPyBNYXRoLmZsb29yKGkpIDogaTsKICAgICAgICByZXR1cm4gdGhpcy5pbmYuZm9ybWF0KGZpeGVkKTsKICAgICAgfSBlbHNlIHsKICAgICAgICAvLyB0byBtYXRjaCB0aGUgYnJvd3NlcidzIG51bWJlcmZvcm1hdHRlciBkZWZhdWx0cwogICAgICAgIGNvbnN0IGZpeGVkID0gdGhpcy5mbG9vciA/IE1hdGguZmxvb3IoaSkgOiByb3VuZFRvKGksIDMpOwogICAgICAgIHJldHVybiBwYWRTdGFydChmaXhlZCwgdGhpcy5wYWRUbyk7CiAgICAgIH0KICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCgogIGNsYXNzIFBvbHlEYXRlRm9ybWF0dGVyIHsKICAgIGNvbnN0cnVjdG9yKGR0LCBpbnRsLCBvcHRzKSB7CiAgICAgIHRoaXMub3B0cyA9IG9wdHM7CiAgICAgIHRoaXMub3JpZ2luYWxab25lID0gdW5kZWZpbmVkOwoKICAgICAgbGV0IHogPSB1bmRlZmluZWQ7CiAgICAgIGlmICh0aGlzLm9wdHMudGltZVpvbmUpIHsKICAgICAgICAvLyBEb24ndCBhcHBseSBhbnkgd29ya2Fyb3VuZHMgaWYgYSB0aW1lWm9uZSBpcyBleHBsaWNpdGx5IHByb3ZpZGVkIGluIG9wdHMKICAgICAgICB0aGlzLmR0ID0gZHQ7CiAgICAgIH0gZWxzZSBpZiAoZHQuem9uZS50eXBlID09PSAiZml4ZWQiKSB7CiAgICAgICAgLy8gVVRDLTggb3IgRXRjL1VUQy04IGFyZSBub3QgcGFydCBvZiB0emRhdGEsIG9ubHkgRXRjL0dNVCs4IGFuZCB0aGUgbGlrZS4KICAgICAgICAvLyBUaGF0IGlzIHdoeSBmaXhlZC1vZmZzZXQgVFogaXMgc2V0IHRvIHRoYXQgdW5sZXNzIGl0IGlzOgogICAgICAgIC8vIDEuIFJlcHJlc2VudGluZyBvZmZzZXQgMCB3aGVuIFVUQyBpcyB1c2VkIHRvIG1haW50YWluIHByZXZpb3VzIGJlaGF2aW9yIGFuZCBkb2VzIG5vdCBiZWNvbWUgR01ULgogICAgICAgIC8vIDIuIFVuc3VwcG9ydGVkIGJ5IHRoZSBicm93c2VyOgogICAgICAgIC8vICAgIC0gc29tZSBkbyBub3Qgc3VwcG9ydCBFdGMvCiAgICAgICAgLy8gICAgLSA8IEV0Yy9HTVQtMTQsID4gRXRjL0dNVCsxMiwgYW5kIDMwLW1pbnV0ZSBvciA0NS1taW51dGUgb2Zmc2V0cyBhcmUgbm90IHBhcnQgb2YgdHpkYXRhCiAgICAgICAgY29uc3QgZ210T2Zmc2V0ID0gLTEgKiAoZHQub2Zmc2V0IC8gNjApOwogICAgICAgIGNvbnN0IG9mZnNldFogPSBnbXRPZmZzZXQgPj0gMCA/IGBFdGMvR01UKyR7Z210T2Zmc2V0fWAgOiBgRXRjL0dNVCR7Z210T2Zmc2V0fWA7CiAgICAgICAgaWYgKGR0Lm9mZnNldCAhPT0gMCAmJiBJQU5BWm9uZS5jcmVhdGUob2Zmc2V0WikudmFsaWQpIHsKICAgICAgICAgIHogPSBvZmZzZXRaOwogICAgICAgICAgdGhpcy5kdCA9IGR0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvLyBOb3QgYWxsIGZpeGVkLW9mZnNldCB6b25lcyBsaWtlIEV0Yy8rNDozMCBhcmUgcHJlc2VudCBpbiB0emRhdGEgc28KICAgICAgICAgIC8vIHdlIG1hbnVhbGx5IGFwcGx5IHRoZSBvZmZzZXQgYW5kIHN1YnN0aXR1dGUgdGhlIHpvbmUgYXMgbmVlZGVkLgogICAgICAgICAgeiA9ICJVVEMiOwogICAgICAgICAgdGhpcy5kdCA9IGR0Lm9mZnNldCA9PT0gMCA/IGR0IDogZHQuc2V0Wm9uZSgiVVRDIikucGx1cyh7IG1pbnV0ZXM6IGR0Lm9mZnNldCB9KTsKICAgICAgICAgIHRoaXMub3JpZ2luYWxab25lID0gZHQuem9uZTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAoZHQuem9uZS50eXBlID09PSAic3lzdGVtIikgewogICAgICAgIHRoaXMuZHQgPSBkdDsKICAgICAgfSBlbHNlIGlmIChkdC56b25lLnR5cGUgPT09ICJpYW5hIikgewogICAgICAgIHRoaXMuZHQgPSBkdDsKICAgICAgICB6ID0gZHQuem9uZS5uYW1lOwogICAgICB9IGVsc2UgewogICAgICAgIC8vIEN1c3RvbSB6b25lcyBjYW4gaGF2ZSBhbnkgb2Zmc2V0IC8gb2Zmc2V0TmFtZSBzbyB3ZSBqdXN0IG1hbnVhbGx5CiAgICAgICAgLy8gYXBwbHkgdGhlIG9mZnNldCBhbmQgc3Vic3RpdHV0ZSB0aGUgem9uZSBhcyBuZWVkZWQuCiAgICAgICAgeiA9ICJVVEMiOwogICAgICAgIHRoaXMuZHQgPSBkdC5zZXRab25lKCJVVEMiKS5wbHVzKHsgbWludXRlczogZHQub2Zmc2V0IH0pOwogICAgICAgIHRoaXMub3JpZ2luYWxab25lID0gZHQuem9uZTsKICAgICAgfQoKICAgICAgY29uc3QgaW50bE9wdHMgPSB7IC4uLnRoaXMub3B0cyB9OwogICAgICBpbnRsT3B0cy50aW1lWm9uZSA9IGludGxPcHRzLnRpbWVab25lIHx8IHo7CiAgICAgIHRoaXMuZHRmID0gZ2V0Q2FjaGVkRFRGKGludGwsIGludGxPcHRzKTsKICAgIH0KCiAgICBmb3JtYXQoKSB7CiAgICAgIGlmICh0aGlzLm9yaWdpbmFsWm9uZSkgewogICAgICAgIC8vIElmIHdlIGhhdmUgdG8gc3Vic3RpdHV0ZSBpbiB0aGUgYWN0dWFsIHpvbmUgbmFtZSwgd2UgaGF2ZSB0byB1c2UKICAgICAgICAvLyBmb3JtYXRUb1BhcnRzIHNvIHRoYXQgdGhlIHRpbWV6b25lIGNhbiBiZSByZXBsYWNlZC4KICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRUb1BhcnRzKCkKICAgICAgICAgIC5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpCiAgICAgICAgICAuam9pbigiIik7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuZHRmLmZvcm1hdCh0aGlzLmR0LnRvSlNEYXRlKCkpOwogICAgfQoKICAgIGZvcm1hdFRvUGFydHMoKSB7CiAgICAgIGNvbnN0IHBhcnRzID0gdGhpcy5kdGYuZm9ybWF0VG9QYXJ0cyh0aGlzLmR0LnRvSlNEYXRlKCkpOwogICAgICBpZiAodGhpcy5vcmlnaW5hbFpvbmUpIHsKICAgICAgICByZXR1cm4gcGFydHMubWFwKChwYXJ0KSA9PiB7CiAgICAgICAgICBpZiAocGFydC50eXBlID09PSAidGltZVpvbmVOYW1lIikgewogICAgICAgICAgICBjb25zdCBvZmZzZXROYW1lID0gdGhpcy5vcmlnaW5hbFpvbmUub2Zmc2V0TmFtZSh0aGlzLmR0LnRzLCB7CiAgICAgICAgICAgICAgbG9jYWxlOiB0aGlzLmR0LmxvY2FsZSwKICAgICAgICAgICAgICBmb3JtYXQ6IHRoaXMub3B0cy50aW1lWm9uZU5hbWUsCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgIC4uLnBhcnQsCiAgICAgICAgICAgICAgdmFsdWU6IG9mZnNldE5hbWUsCiAgICAgICAgICAgIH07CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gcGFydDsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfQogICAgICByZXR1cm4gcGFydHM7CiAgICB9CgogICAgcmVzb2x2ZWRPcHRpb25zKCkgewogICAgICByZXR1cm4gdGhpcy5kdGYucmVzb2x2ZWRPcHRpb25zKCk7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwogIGNsYXNzIFBvbHlSZWxGb3JtYXR0ZXIgewogICAgY29uc3RydWN0b3IoaW50bCwgaXNFbmdsaXNoLCBvcHRzKSB7CiAgICAgIHRoaXMub3B0cyA9IHsgc3R5bGU6ICJsb25nIiwgLi4ub3B0cyB9OwogICAgICBpZiAoIWlzRW5nbGlzaCAmJiBoYXNSZWxhdGl2ZSgpKSB7CiAgICAgICAgdGhpcy5ydGYgPSBnZXRDYWNoZWRSVEYoaW50bCwgb3B0cyk7CiAgICAgIH0KICAgIH0KCiAgICBmb3JtYXQoY291bnQsIHVuaXQpIHsKICAgICAgaWYgKHRoaXMucnRmKSB7CiAgICAgICAgcmV0dXJuIHRoaXMucnRmLmZvcm1hdChjb3VudCwgdW5pdCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIGZvcm1hdFJlbGF0aXZlVGltZSh1bml0LCBjb3VudCwgdGhpcy5vcHRzLm51bWVyaWMsIHRoaXMub3B0cy5zdHlsZSAhPT0gImxvbmciKTsKICAgICAgfQogICAgfQoKICAgIGZvcm1hdFRvUGFydHMoY291bnQsIHVuaXQpIHsKICAgICAgaWYgKHRoaXMucnRmKSB7CiAgICAgICAgcmV0dXJuIHRoaXMucnRmLmZvcm1hdFRvUGFydHMoY291bnQsIHVuaXQpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBbXTsKICAgICAgfQogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY2xhc3MgTG9jYWxlIHsKICAgIHN0YXRpYyBmcm9tT3B0cyhvcHRzKSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKG9wdHMubG9jYWxlLCBvcHRzLm51bWJlcmluZ1N5c3RlbSwgb3B0cy5vdXRwdXRDYWxlbmRhciwgb3B0cy5kZWZhdWx0VG9FTik7CiAgICB9CgogICAgc3RhdGljIGNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIsIGRlZmF1bHRUb0VOID0gZmFsc2UpIHsKICAgICAgY29uc3Qgc3BlY2lmaWVkTG9jYWxlID0gbG9jYWxlIHx8IFNldHRpbmdzLmRlZmF1bHRMb2NhbGU7CiAgICAgIC8vIHRoZSBzeXN0ZW0gbG9jYWxlIGlzIHVzZWZ1bCBmb3IgaHVtYW4gcmVhZGFibGUgc3RyaW5ncyBidXQgYW5ub3lpbmcgZm9yIHBhcnNpbmcvZm9ybWF0dGluZyBrbm93biBmb3JtYXRzCiAgICAgIGNvbnN0IGxvY2FsZVIgPSBzcGVjaWZpZWRMb2NhbGUgfHwgKGRlZmF1bHRUb0VOID8gImVuLVVTIiA6IHN5c3RlbUxvY2FsZSgpKTsKICAgICAgY29uc3QgbnVtYmVyaW5nU3lzdGVtUiA9IG51bWJlcmluZ1N5c3RlbSB8fCBTZXR0aW5ncy5kZWZhdWx0TnVtYmVyaW5nU3lzdGVtOwogICAgICBjb25zdCBvdXRwdXRDYWxlbmRhclIgPSBvdXRwdXRDYWxlbmRhciB8fCBTZXR0aW5ncy5kZWZhdWx0T3V0cHV0Q2FsZW5kYXI7CiAgICAgIHJldHVybiBuZXcgTG9jYWxlKGxvY2FsZVIsIG51bWJlcmluZ1N5c3RlbVIsIG91dHB1dENhbGVuZGFyUiwgc3BlY2lmaWVkTG9jYWxlKTsKICAgIH0KCiAgICBzdGF0aWMgcmVzZXRDYWNoZSgpIHsKICAgICAgc3lzTG9jYWxlQ2FjaGUgPSBudWxsOwogICAgICBpbnRsRFRDYWNoZSA9IHt9OwogICAgICBpbnRsTnVtQ2FjaGUgPSB7fTsKICAgICAgaW50bFJlbENhY2hlID0ge307CiAgICB9CgogICAgc3RhdGljIGZyb21PYmplY3QoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhcik7CiAgICB9CgogICAgY29uc3RydWN0b3IobG9jYWxlLCBudW1iZXJpbmcsIG91dHB1dENhbGVuZGFyLCBzcGVjaWZpZWRMb2NhbGUpIHsKICAgICAgY29uc3QgW3BhcnNlZExvY2FsZSwgcGFyc2VkTnVtYmVyaW5nU3lzdGVtLCBwYXJzZWRPdXRwdXRDYWxlbmRhcl0gPSBwYXJzZUxvY2FsZVN0cmluZyhsb2NhbGUpOwoKICAgICAgdGhpcy5sb2NhbGUgPSBwYXJzZWRMb2NhbGU7CiAgICAgIHRoaXMubnVtYmVyaW5nU3lzdGVtID0gbnVtYmVyaW5nIHx8IHBhcnNlZE51bWJlcmluZ1N5c3RlbSB8fCBudWxsOwogICAgICB0aGlzLm91dHB1dENhbGVuZGFyID0gb3V0cHV0Q2FsZW5kYXIgfHwgcGFyc2VkT3V0cHV0Q2FsZW5kYXIgfHwgbnVsbDsKICAgICAgdGhpcy5pbnRsID0gaW50bENvbmZpZ1N0cmluZyh0aGlzLmxvY2FsZSwgdGhpcy5udW1iZXJpbmdTeXN0ZW0sIHRoaXMub3V0cHV0Q2FsZW5kYXIpOwoKICAgICAgdGhpcy53ZWVrZGF5c0NhY2hlID0geyBmb3JtYXQ6IHt9LCBzdGFuZGFsb25lOiB7fSB9OwogICAgICB0aGlzLm1vbnRoc0NhY2hlID0geyBmb3JtYXQ6IHt9LCBzdGFuZGFsb25lOiB7fSB9OwogICAgICB0aGlzLm1lcmlkaWVtQ2FjaGUgPSBudWxsOwogICAgICB0aGlzLmVyYUNhY2hlID0ge307CgogICAgICB0aGlzLnNwZWNpZmllZExvY2FsZSA9IHNwZWNpZmllZExvY2FsZTsKICAgICAgdGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9IG51bGw7CiAgICB9CgogICAgZ2V0IGZhc3ROdW1iZXJzKCkgewogICAgICBpZiAodGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9PSBudWxsKSB7CiAgICAgICAgdGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9IHN1cHBvcnRzRmFzdE51bWJlcnModGhpcyk7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkOwogICAgfQoKICAgIGxpc3RpbmdNb2RlKCkgewogICAgICBjb25zdCBpc0FjdHVhbGx5RW4gPSB0aGlzLmlzRW5nbGlzaCgpOwogICAgICBjb25zdCBoYXNOb1dlaXJkbmVzcyA9CiAgICAgICAgKHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSBudWxsIHx8IHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSAibGF0biIpICYmCiAgICAgICAgKHRoaXMub3V0cHV0Q2FsZW5kYXIgPT09IG51bGwgfHwgdGhpcy5vdXRwdXRDYWxlbmRhciA9PT0gImdyZWdvcnkiKTsKICAgICAgcmV0dXJuIGlzQWN0dWFsbHlFbiAmJiBoYXNOb1dlaXJkbmVzcyA/ICJlbiIgOiAiaW50bCI7CiAgICB9CgogICAgY2xvbmUoYWx0cykgewogICAgICBpZiAoIWFsdHMgfHwgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYWx0cykubGVuZ3RoID09PSAwKSB7CiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIExvY2FsZS5jcmVhdGUoCiAgICAgICAgICBhbHRzLmxvY2FsZSB8fCB0aGlzLnNwZWNpZmllZExvY2FsZSwKICAgICAgICAgIGFsdHMubnVtYmVyaW5nU3lzdGVtIHx8IHRoaXMubnVtYmVyaW5nU3lzdGVtLAogICAgICAgICAgYWx0cy5vdXRwdXRDYWxlbmRhciB8fCB0aGlzLm91dHB1dENhbGVuZGFyLAogICAgICAgICAgYWx0cy5kZWZhdWx0VG9FTiB8fCBmYWxzZQogICAgICAgICk7CiAgICAgIH0KICAgIH0KCiAgICByZWRlZmF1bHRUb0VOKGFsdHMgPSB7fSkgewogICAgICByZXR1cm4gdGhpcy5jbG9uZSh7IC4uLmFsdHMsIGRlZmF1bHRUb0VOOiB0cnVlIH0pOwogICAgfQoKICAgIHJlZGVmYXVsdFRvU3lzdGVtKGFsdHMgPSB7fSkgewogICAgICByZXR1cm4gdGhpcy5jbG9uZSh7IC4uLmFsdHMsIGRlZmF1bHRUb0VOOiBmYWxzZSB9KTsKICAgIH0KCiAgICBtb250aHMobGVuZ3RoLCBmb3JtYXQgPSBmYWxzZSkgewogICAgICByZXR1cm4gbGlzdFN0dWZmKHRoaXMsIGxlbmd0aCwgbW9udGhzLCAoKSA9PiB7CiAgICAgICAgY29uc3QgaW50bCA9IGZvcm1hdCA/IHsgbW9udGg6IGxlbmd0aCwgZGF5OiAibnVtZXJpYyIgfSA6IHsgbW9udGg6IGxlbmd0aCB9LAogICAgICAgICAgZm9ybWF0U3RyID0gZm9ybWF0ID8gImZvcm1hdCIgOiAic3RhbmRhbG9uZSI7CiAgICAgICAgaWYgKCF0aGlzLm1vbnRoc0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSkgewogICAgICAgICAgdGhpcy5tb250aHNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF0gPSBtYXBNb250aHMoKGR0KSA9PiB0aGlzLmV4dHJhY3QoZHQsIGludGwsICJtb250aCIpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRoaXMubW9udGhzQ2FjaGVbZm9ybWF0U3RyXVtsZW5ndGhdOwogICAgICB9KTsKICAgIH0KCiAgICB3ZWVrZGF5cyhsZW5ndGgsIGZvcm1hdCA9IGZhbHNlKSB7CiAgICAgIHJldHVybiBsaXN0U3R1ZmYodGhpcywgbGVuZ3RoLCB3ZWVrZGF5cywgKCkgPT4gewogICAgICAgIGNvbnN0IGludGwgPSBmb3JtYXQKICAgICAgICAgICAgPyB7IHdlZWtkYXk6IGxlbmd0aCwgeWVhcjogIm51bWVyaWMiLCBtb250aDogImxvbmciLCBkYXk6ICJudW1lcmljIiB9CiAgICAgICAgICAgIDogeyB3ZWVrZGF5OiBsZW5ndGggfSwKICAgICAgICAgIGZvcm1hdFN0ciA9IGZvcm1hdCA/ICJmb3JtYXQiIDogInN0YW5kYWxvbmUiOwogICAgICAgIGlmICghdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSkgewogICAgICAgICAgdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSA9IG1hcFdlZWtkYXlzKChkdCkgPT4KICAgICAgICAgICAgdGhpcy5leHRyYWN0KGR0LCBpbnRsLCAid2Vla2RheSIpCiAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXTsKICAgICAgfSk7CiAgICB9CgogICAgbWVyaWRpZW1zKCkgewogICAgICByZXR1cm4gbGlzdFN0dWZmKAogICAgICAgIHRoaXMsCiAgICAgICAgdW5kZWZpbmVkLAogICAgICAgICgpID0+IG1lcmlkaWVtcywKICAgICAgICAoKSA9PiB7CiAgICAgICAgICAvLyBJbiB0aGVvcnkgdGhlcmUgY291bGQgYmUgYXJpYml0cmFyeSBkYXkgcGVyaW9kcy4gV2UncmUgZ29ubmEgYXNzdW1lIHRoZXJlIGFyZSBleGFjdGx5IHR3bwogICAgICAgICAgLy8gZm9yIEFNIGFuZCBQTS4gVGhpcyBpcyBwcm9iYWJseSB3cm9uZywgYnV0IGl0J3MgbWFrZXMgcGFyc2luZyB3YXkgZWFzaWVyLgogICAgICAgICAgaWYgKCF0aGlzLm1lcmlkaWVtQ2FjaGUpIHsKICAgICAgICAgICAgY29uc3QgaW50bCA9IHsgaG91cjogIm51bWVyaWMiLCBob3VyQ3ljbGU6ICJoMTIiIH07CiAgICAgICAgICAgIHRoaXMubWVyaWRpZW1DYWNoZSA9IFtEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzLCA5KSwgRGF0ZVRpbWUudXRjKDIwMTYsIDExLCAxMywgMTkpXS5tYXAoCiAgICAgICAgICAgICAgKGR0KSA9PiB0aGlzLmV4dHJhY3QoZHQsIGludGwsICJkYXlwZXJpb2QiKQogICAgICAgICAgICApOwogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiB0aGlzLm1lcmlkaWVtQ2FjaGU7CiAgICAgICAgfQogICAgICApOwogICAgfQoKICAgIGVyYXMobGVuZ3RoKSB7CiAgICAgIHJldHVybiBsaXN0U3R1ZmYodGhpcywgbGVuZ3RoLCBlcmFzLCAoKSA9PiB7CiAgICAgICAgY29uc3QgaW50bCA9IHsgZXJhOiBsZW5ndGggfTsKCiAgICAgICAgLy8gVGhpcyBpcyBwcm9ibGVtYXRpYy4gRGlmZmVyZW50IGNhbGVuZGFycyBhcmUgZ29pbmcgdG8gZGVmaW5lIGVyYXMgdG90YWxseSBkaWZmZXJlbnRseS4gV2hhdCBJIG5lZWQgaXMgdGhlIG1pbmltdW0gc2V0IG9mIGRhdGVzCiAgICAgICAgLy8gdG8gZGVmaW5pdGVseSBlbnVtZXJhdGUgdGhlbS4KICAgICAgICBpZiAoIXRoaXMuZXJhQ2FjaGVbbGVuZ3RoXSkgewogICAgICAgICAgdGhpcy5lcmFDYWNoZVtsZW5ndGhdID0gW0RhdGVUaW1lLnV0YygtNDAsIDEsIDEpLCBEYXRlVGltZS51dGMoMjAxNywgMSwgMSldLm1hcCgoZHQpID0+CiAgICAgICAgICAgIHRoaXMuZXh0cmFjdChkdCwgaW50bCwgImVyYSIpCiAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRoaXMuZXJhQ2FjaGVbbGVuZ3RoXTsKICAgICAgfSk7CiAgICB9CgogICAgZXh0cmFjdChkdCwgaW50bE9wdHMsIGZpZWxkKSB7CiAgICAgIGNvbnN0IGRmID0gdGhpcy5kdEZvcm1hdHRlcihkdCwgaW50bE9wdHMpLAogICAgICAgIHJlc3VsdHMgPSBkZi5mb3JtYXRUb1BhcnRzKCksCiAgICAgICAgbWF0Y2hpbmcgPSByZXN1bHRzLmZpbmQoKG0pID0+IG0udHlwZS50b0xvd2VyQ2FzZSgpID09PSBmaWVsZCk7CiAgICAgIHJldHVybiBtYXRjaGluZyA/IG1hdGNoaW5nLnZhbHVlIDogbnVsbDsKICAgIH0KCiAgICBudW1iZXJGb3JtYXR0ZXIob3B0cyA9IHt9KSB7CiAgICAgIC8vIHRoaXMgZm9yY2VzaW1wbGUgb3B0aW9uIGlzIG5ldmVyIHVzZWQgKHRoZSBvbmx5IGNhbGxlciBzaG9ydC1jaXJjdWl0cyBvbiBpdCwgYnV0IGl0IHNlZW1zIHNhZmVyIHRvIGxlYXZlKQogICAgICAvLyAoaW4gY29udHJhc3QsIHRoZSByZXN0IG9mIHRoZSBjb25kaXRpb24gaXMgdXNlZCBoZWF2aWx5KQogICAgICByZXR1cm4gbmV3IFBvbHlOdW1iZXJGb3JtYXR0ZXIodGhpcy5pbnRsLCBvcHRzLmZvcmNlU2ltcGxlIHx8IHRoaXMuZmFzdE51bWJlcnMsIG9wdHMpOwogICAgfQoKICAgIGR0Rm9ybWF0dGVyKGR0LCBpbnRsT3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiBuZXcgUG9seURhdGVGb3JtYXR0ZXIoZHQsIHRoaXMuaW50bCwgaW50bE9wdHMpOwogICAgfQoKICAgIHJlbEZvcm1hdHRlcihvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIG5ldyBQb2x5UmVsRm9ybWF0dGVyKHRoaXMuaW50bCwgdGhpcy5pc0VuZ2xpc2goKSwgb3B0cyk7CiAgICB9CgogICAgbGlzdEZvcm1hdHRlcihvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIGdldENhY2hlZExGKHRoaXMuaW50bCwgb3B0cyk7CiAgICB9CgogICAgaXNFbmdsaXNoKCkgewogICAgICByZXR1cm4gKAogICAgICAgIHRoaXMubG9jYWxlID09PSAiZW4iIHx8CiAgICAgICAgdGhpcy5sb2NhbGUudG9Mb3dlckNhc2UoKSA9PT0gImVuLXVzIiB8fAogICAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMuaW50bCkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlLnN0YXJ0c1dpdGgoImVuLXVzIikKICAgICAgKTsKICAgIH0KCiAgICBlcXVhbHMob3RoZXIpIHsKICAgICAgcmV0dXJuICgKICAgICAgICB0aGlzLmxvY2FsZSA9PT0gb3RoZXIubG9jYWxlICYmCiAgICAgICAgdGhpcy5udW1iZXJpbmdTeXN0ZW0gPT09IG90aGVyLm51bWJlcmluZ1N5c3RlbSAmJgogICAgICAgIHRoaXMub3V0cHV0Q2FsZW5kYXIgPT09IG90aGVyLm91dHB1dENhbGVuZGFyCiAgICAgICk7CiAgICB9CiAgfQoKICBsZXQgc2luZ2xldG9uID0gbnVsbDsKCiAgLyoqCiAgICogQSB6b25lIHdpdGggYSBmaXhlZCBvZmZzZXQgKG1lYW5pbmcgbm8gRFNUKQogICAqIEBpbXBsZW1lbnRzIHtab25lfQogICAqLwogIGNsYXNzIEZpeGVkT2Zmc2V0Wm9uZSBleHRlbmRzIFpvbmUgewogICAgLyoqCiAgICAgKiBHZXQgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgVVRDCiAgICAgKiBAcmV0dXJuIHtGaXhlZE9mZnNldFpvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgdXRjSW5zdGFuY2UoKSB7CiAgICAgIGlmIChzaW5nbGV0b24gPT09IG51bGwpIHsKICAgICAgICBzaW5nbGV0b24gPSBuZXcgRml4ZWRPZmZzZXRab25lKDApOwogICAgICB9CiAgICAgIHJldHVybiBzaW5nbGV0b247CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgYW4gaW5zdGFuY2Ugd2l0aCBhIHNwZWNpZmllZCBvZmZzZXQKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQgLSBUaGUgb2Zmc2V0IGluIG1pbnV0ZXMKICAgICAqIEByZXR1cm4ge0ZpeGVkT2Zmc2V0Wm9uZX0KICAgICAqLwogICAgc3RhdGljIGluc3RhbmNlKG9mZnNldCkgewogICAgICByZXR1cm4gb2Zmc2V0ID09PSAwID8gRml4ZWRPZmZzZXRab25lLnV0Y0luc3RhbmNlIDogbmV3IEZpeGVkT2Zmc2V0Wm9uZShvZmZzZXQpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IGFuIGluc3RhbmNlIG9mIEZpeGVkT2Zmc2V0Wm9uZSBmcm9tIGEgVVRDIG9mZnNldCBzdHJpbmcsIGxpa2UgIlVUQys2IgogICAgICogQHBhcmFtIHtzdHJpbmd9IHMgLSBUaGUgb2Zmc2V0IHN0cmluZyB0byBwYXJzZQogICAgICogQGV4YW1wbGUgRml4ZWRPZmZzZXRab25lLnBhcnNlU3BlY2lmaWVyKCJVVEMrNiIpCiAgICAgKiBAZXhhbXBsZSBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIoIlVUQyswNiIpCiAgICAgKiBAZXhhbXBsZSBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIoIlVUQy02OjAwIikKICAgICAqIEByZXR1cm4ge0ZpeGVkT2Zmc2V0Wm9uZX0KICAgICAqLwogICAgc3RhdGljIHBhcnNlU3BlY2lmaWVyKHMpIHsKICAgICAgaWYgKHMpIHsKICAgICAgICBjb25zdCByID0gcy5tYXRjaCgvXnV0Yyg/OihbKy1dXGR7MSwyfSkoPzo6KFxkezJ9KSk/KT8kL2kpOwogICAgICAgIGlmIChyKSB7CiAgICAgICAgICByZXR1cm4gbmV3IEZpeGVkT2Zmc2V0Wm9uZShzaWduZWRPZmZzZXQoclsxXSwgclsyXSkpOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBjb25zdHJ1Y3RvcihvZmZzZXQpIHsKICAgICAgc3VwZXIoKTsKICAgICAgLyoqIEBwcml2YXRlICoqLwogICAgICB0aGlzLmZpeGVkID0gb2Zmc2V0OwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgdHlwZSgpIHsKICAgICAgcmV0dXJuICJmaXhlZCI7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBuYW1lKCkgewogICAgICByZXR1cm4gdGhpcy5maXhlZCA9PT0gMCA/ICJVVEMiIDogYFVUQyR7Zm9ybWF0T2Zmc2V0KHRoaXMuZml4ZWQsICJuYXJyb3ciKX1gOwogICAgfQoKICAgIGdldCBpYW5hTmFtZSgpIHsKICAgICAgaWYgKHRoaXMuZml4ZWQgPT09IDApIHsKICAgICAgICByZXR1cm4gIkV0Yy9VVEMiOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBgRXRjL0dNVCR7Zm9ybWF0T2Zmc2V0KC10aGlzLmZpeGVkLCAibmFycm93Iil9YDsKICAgICAgfQogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBvZmZzZXROYW1lKCkgewogICAgICByZXR1cm4gdGhpcy5uYW1lOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkgewogICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHRoaXMuZml4ZWQsIGZvcm1hdCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBpc1VuaXZlcnNhbCgpIHsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuZml4ZWQ7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAiZml4ZWQiICYmIG90aGVyWm9uZS5maXhlZCA9PT0gdGhpcy5maXhlZDsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogIH0KCiAgLyoqCiAgICogQSB6b25lIHRoYXQgZmFpbGVkIHRvIHBhcnNlLiBZb3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gaW5zdGFudGlhdGUgdGhpcy4KICAgKiBAaW1wbGVtZW50cyB7Wm9uZX0KICAgKi8KICBjbGFzcyBJbnZhbGlkWm9uZSBleHRlbmRzIFpvbmUgewogICAgY29uc3RydWN0b3Ioem9uZU5hbWUpIHsKICAgICAgc3VwZXIoKTsKICAgICAgLyoqICBAcHJpdmF0ZSAqLwogICAgICB0aGlzLnpvbmVOYW1lID0gem9uZU5hbWU7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCB0eXBlKCkgewogICAgICByZXR1cm4gImludmFsaWQiOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgbmFtZSgpIHsKICAgICAgcmV0dXJuIHRoaXMuem9uZU5hbWU7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBpc1VuaXZlcnNhbCgpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBvZmZzZXROYW1lKCkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZm9ybWF0T2Zmc2V0KCkgewogICAgICByZXR1cm4gIiI7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldCgpIHsKICAgICAgcmV0dXJuIE5hTjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZXF1YWxzKCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBmdW5jdGlvbiBub3JtYWxpemVab25lKGlucHV0LCBkZWZhdWx0Wm9uZSkgewogICAgaWYgKGlzVW5kZWZpbmVkKGlucHV0KSB8fCBpbnB1dCA9PT0gbnVsbCkgewogICAgICByZXR1cm4gZGVmYXVsdFpvbmU7CiAgICB9IGVsc2UgaWYgKGlucHV0IGluc3RhbmNlb2YgWm9uZSkgewogICAgICByZXR1cm4gaW5wdXQ7CiAgICB9IGVsc2UgaWYgKGlzU3RyaW5nKGlucHV0KSkgewogICAgICBjb25zdCBsb3dlcmVkID0gaW5wdXQudG9Mb3dlckNhc2UoKTsKICAgICAgaWYgKGxvd2VyZWQgPT09ICJkZWZhdWx0IikgcmV0dXJuIGRlZmF1bHRab25lOwogICAgICBlbHNlIGlmIChsb3dlcmVkID09PSAibG9jYWwiIHx8IGxvd2VyZWQgPT09ICJzeXN0ZW0iKSByZXR1cm4gU3lzdGVtWm9uZS5pbnN0YW5jZTsKICAgICAgZWxzZSBpZiAobG93ZXJlZCA9PT0gInV0YyIgfHwgbG93ZXJlZCA9PT0gImdtdCIpIHJldHVybiBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2U7CiAgICAgIGVsc2UgcmV0dXJuIEZpeGVkT2Zmc2V0Wm9uZS5wYXJzZVNwZWNpZmllcihsb3dlcmVkKSB8fCBJQU5BWm9uZS5jcmVhdGUoaW5wdXQpOwogICAgfSBlbHNlIGlmIChpc051bWJlcihpbnB1dCkpIHsKICAgICAgcmV0dXJuIEZpeGVkT2Zmc2V0Wm9uZS5pbnN0YW5jZShpbnB1dCk7CiAgICB9IGVsc2UgaWYgKHR5cGVvZiBpbnB1dCA9PT0gIm9iamVjdCIgJiYgIm9mZnNldCIgaW4gaW5wdXQgJiYgdHlwZW9mIGlucHV0Lm9mZnNldCA9PT0gImZ1bmN0aW9uIikgewogICAgICAvLyBUaGlzIGlzIGR1bWIsIGJ1dCB0aGUgaW5zdGFuY2VvZiBjaGVjayBhYm92ZSBkb2Vzbid0IHNlZW0gdG8gcmVhbGx5IHdvcmsKICAgICAgLy8gc28gd2UncmUgZHVjayBjaGVja2luZyBpdAogICAgICByZXR1cm4gaW5wdXQ7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbmV3IEludmFsaWRab25lKGlucHV0KTsKICAgIH0KICB9CgogIGxldCBub3cgPSAoKSA9PiBEYXRlLm5vdygpLAogICAgZGVmYXVsdFpvbmUgPSAic3lzdGVtIiwKICAgIGRlZmF1bHRMb2NhbGUgPSBudWxsLAogICAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bGwsCiAgICBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIgPSBudWxsLAogICAgdHdvRGlnaXRDdXRvZmZZZWFyID0gNjAsCiAgICB0aHJvd09uSW52YWxpZDsKCiAgLyoqCiAgICogU2V0dGluZ3MgY29udGFpbnMgc3RhdGljIGdldHRlcnMgYW5kIHNldHRlcnMgdGhhdCBjb250cm9sIEx1eG9uJ3Mgb3ZlcmFsbCBiZWhhdmlvci4gTHV4b24gaXMgYSBzaW1wbGUgbGlicmFyeSB3aXRoIGZldyBvcHRpb25zLCBidXQgdGhlIG9uZXMgaXQgZG9lcyBoYXZlIGxpdmUgaGVyZS4KICAgKi8KICBjbGFzcyBTZXR0aW5ncyB7CiAgICAvKioKICAgICAqIEdldCB0aGUgY2FsbGJhY2sgZm9yIHJldHVybmluZyB0aGUgY3VycmVudCB0aW1lc3RhbXAuCiAgICAgKiBAdHlwZSB7ZnVuY3Rpb259CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgbm93KCkgewogICAgICByZXR1cm4gbm93OwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBjYWxsYmFjayBmb3IgcmV0dXJuaW5nIHRoZSBjdXJyZW50IHRpbWVzdGFtcC4KICAgICAqIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGEgbnVtYmVyLCB3aGljaCB3aWxsIGJlIGludGVycHJldGVkIGFzIGFuIEVwb2NoIG1pbGxpc2Vjb25kIGNvdW50CiAgICAgKiBAdHlwZSB7ZnVuY3Rpb259CiAgICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiBEYXRlLm5vdygpICsgMzAwMCAvLyBwcmV0ZW5kIGl0IGlzIDMgc2Vjb25kcyBpbiB0aGUgZnV0dXJlCiAgICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiAwIC8vIGFsd2F5cyBwcmV0ZW5kIGl0J3MgSmFuIDEsIDE5NzAgYXQgbWlkbmlnaHQgaW4gVVRDIHRpbWUKICAgICAqLwogICAgc3RhdGljIHNldCBub3cobikgewogICAgICBub3cgPSBuOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBkZWZhdWx0IHRpbWUgem9uZSB0byBjcmVhdGUgRGF0ZVRpbWVzIGluLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogVXNlIHRoZSB2YWx1ZSAic3lzdGVtIiB0byByZXNldCB0aGlzIHZhbHVlIHRvIHRoZSBzeXN0ZW0ncyB0aW1lIHpvbmUuCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBzdGF0aWMgc2V0IGRlZmF1bHRab25lKHpvbmUpIHsKICAgICAgZGVmYXVsdFpvbmUgPSB6b25lOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkZWZhdWx0IHRpbWUgem9uZSBvYmplY3QgY3VycmVudGx5IHVzZWQgdG8gY3JlYXRlIERhdGVUaW1lcy4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHRoZSBzeXN0ZW0ncyB0aW1lIHpvbmUgKHRoZSBvbmUgc2V0IG9uIHRoZSBtYWNoaW5lIHRoYXQgcnVucyB0aGlzIGNvZGUpLgogICAgICogQHR5cGUge1pvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgZGVmYXVsdFpvbmUoKSB7CiAgICAgIHJldHVybiBub3JtYWxpemVab25lKGRlZmF1bHRab25lLCBTeXN0ZW1ab25lLmluc3RhbmNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGVmYXVsdCBsb2NhbGUgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0TG9jYWxlKCkgewogICAgICByZXR1cm4gZGVmYXVsdExvY2FsZTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgZGVmYXVsdCBsb2NhbGUgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIHNldCBkZWZhdWx0TG9jYWxlKGxvY2FsZSkgewogICAgICBkZWZhdWx0TG9jYWxlID0gbG9jYWxlOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkZWZhdWx0IG51bWJlcmluZyBzeXN0ZW0gdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0TnVtYmVyaW5nU3lzdGVtKCkgewogICAgICByZXR1cm4gZGVmYXVsdE51bWJlcmluZ1N5c3RlbTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgZGVmYXVsdCBudW1iZXJpbmcgc3lzdGVtIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBzZXQgZGVmYXVsdE51bWJlcmluZ1N5c3RlbShudW1iZXJpbmdTeXN0ZW0pIHsKICAgICAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bWJlcmluZ1N5c3RlbTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGVmYXVsdCBvdXRwdXQgY2FsZW5kYXIgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIoKSB7CiAgICAgIHJldHVybiBkZWZhdWx0T3V0cHV0Q2FsZW5kYXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGRlZmF1bHQgb3V0cHV0IGNhbGVuZGFyIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBzZXQgZGVmYXVsdE91dHB1dENhbGVuZGFyKG91dHB1dENhbGVuZGFyKSB7CiAgICAgIGRlZmF1bHRPdXRwdXRDYWxlbmRhciA9IG91dHB1dENhbGVuZGFyOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBjdXRvZmYgeWVhciBhZnRlciB3aGljaCBhIHN0cmluZyBlbmNvZGluZyBhIHllYXIgYXMgdHdvIGRpZ2l0cyBpcyBpbnRlcnByZXRlZCB0byBvY2N1ciBpbiB0aGUgY3VycmVudCBjZW50dXJ5LgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgc3RhdGljIGdldCB0d29EaWdpdEN1dG9mZlllYXIoKSB7CiAgICAgIHJldHVybiB0d29EaWdpdEN1dG9mZlllYXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGN1dG9mZiB5ZWFyIGFmdGVyIHdoaWNoIGEgc3RyaW5nIGVuY29kaW5nIGEgeWVhciBhcyB0d28gZGlnaXRzIGlzIGludGVycHJldGVkIHRvIG9jY3VyIGluIHRoZSBjdXJyZW50IGNlbnR1cnkuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICogQGV4YW1wbGUgU2V0dGluZ3MudHdvRGlnaXRDdXRvZmZZZWFyID0gMCAvLyBjdXQtb2ZmIHllYXIgaXMgMCwgc28gYWxsICd5eScgYXJlIGludGVycHJldGVkIGFzIGN1cnJlbnQgY2VudHVyeQogICAgICogQGV4YW1wbGUgU2V0dGluZ3MudHdvRGlnaXRDdXRvZmZZZWFyID0gNTAgLy8gJzQ5JyAtPiAxOTQ5OyAnNTAnIC0+IDIwNTAKICAgICAqIEBleGFtcGxlIFNldHRpbmdzLnR3b0RpZ2l0Q3V0b2ZmWWVhciA9IDE5NTAgLy8gaW50ZXJwcmV0ZWQgYXMgNTAKICAgICAqIEBleGFtcGxlIFNldHRpbmdzLnR3b0RpZ2l0Q3V0b2ZmWWVhciA9IDIwNTAgLy8gQUxTTyBpbnRlcnByZXRlZCBhcyA1MAogICAgICovCiAgICBzdGF0aWMgc2V0IHR3b0RpZ2l0Q3V0b2ZmWWVhcihjdXRvZmZZZWFyKSB7CiAgICAgIHR3b0RpZ2l0Q3V0b2ZmWWVhciA9IGN1dG9mZlllYXIgJSAxMDA7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciBMdXhvbiB3aWxsIHRocm93IHdoZW4gaXQgZW5jb3VudGVycyBpbnZhbGlkIERhdGVUaW1lcywgRHVyYXRpb25zLCBvciBJbnRlcnZhbHMKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBzdGF0aWMgZ2V0IHRocm93T25JbnZhbGlkKCkgewogICAgICByZXR1cm4gdGhyb3dPbkludmFsaWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgd2hldGhlciBMdXhvbiB3aWxsIHRocm93IHdoZW4gaXQgZW5jb3VudGVycyBpbnZhbGlkIERhdGVUaW1lcywgRHVyYXRpb25zLCBvciBJbnRlcnZhbHMKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBzdGF0aWMgc2V0IHRocm93T25JbnZhbGlkKHQpIHsKICAgICAgdGhyb3dPbkludmFsaWQgPSB0OwogICAgfQoKICAgIC8qKgogICAgICogUmVzZXQgTHV4b24ncyBnbG9iYWwgY2FjaGVzLiBTaG91bGQgb25seSBiZSBuZWNlc3NhcnkgaW4gdGVzdGluZyBzY2VuYXJpb3MuCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICovCiAgICBzdGF0aWMgcmVzZXRDYWNoZXMoKSB7CiAgICAgIExvY2FsZS5yZXNldENhY2hlKCk7CiAgICAgIElBTkFab25lLnJlc2V0Q2FjaGUoKTsKICAgIH0KICB9CgogIC8qCiAgICBUaGlzIGlzIGp1c3QgYSBqdW5rIGRyYXdlciwgY29udGFpbmluZyBhbnl0aGluZyB1c2VkIGFjcm9zcyBtdWx0aXBsZSBjbGFzc2VzLgogICAgQmVjYXVzZSBMdXhvbiBpcyBzbWFsbChpc2gpLCB0aGlzIHNob3VsZCBzdGF5IHNtYWxsIGFuZCB3ZSB3b24ndCB3b3JyeSBhYm91dCBzcGxpdHRpbmcKICAgIGl0IHVwIGludG8sIHNheSwgcGFyc2luZ1V0aWwuanMgYW5kIGJhc2ljVXRpbC5qcyBhbmQgc28gb24uIEJ1dCB0aGV5IGFyZSBkaXZpZGVkIHVwIGJ5IGZlYXR1cmUgYXJlYS4KICAqLwoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICAvLyBUWVBFUwoKICBmdW5jdGlvbiBpc1VuZGVmaW5lZChvKSB7CiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICJ1bmRlZmluZWQiOwogIH0KCiAgZnVuY3Rpb24gaXNOdW1iZXIobykgewogICAgcmV0dXJuIHR5cGVvZiBvID09PSAibnVtYmVyIjsKICB9CgogIGZ1bmN0aW9uIGlzSW50ZWdlcihvKSB7CiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICJudW1iZXIiICYmIG8gJSAxID09PSAwOwogIH0KCiAgZnVuY3Rpb24gaXNTdHJpbmcobykgewogICAgcmV0dXJuIHR5cGVvZiBvID09PSAic3RyaW5nIjsKICB9CgogIGZ1bmN0aW9uIGlzRGF0ZShvKSB7CiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pID09PSAiW29iamVjdCBEYXRlXSI7CiAgfQoKICAvLyBDQVBBQklMSVRJRVMKCiAgZnVuY3Rpb24gaGFzUmVsYXRpdmUoKSB7CiAgICB0cnkgewogICAgICByZXR1cm4gdHlwZW9mIEludGwgIT09ICJ1bmRlZmluZWQiICYmICEhSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQ7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9CgogIC8vIE9CSkVDVFMgQU5EIEFSUkFZUwoKICBmdW5jdGlvbiBtYXliZUFycmF5KHRoaW5nKSB7CiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGluZykgPyB0aGluZyA6IFt0aGluZ107CiAgfQoKICBmdW5jdGlvbiBiZXN0QnkoYXJyLCBieSwgY29tcGFyZSkgewogICAgaWYgKGFyci5sZW5ndGggPT09IDApIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0KICAgIHJldHVybiBhcnIucmVkdWNlKChiZXN0LCBuZXh0KSA9PiB7CiAgICAgIGNvbnN0IHBhaXIgPSBbYnkobmV4dCksIG5leHRdOwogICAgICBpZiAoIWJlc3QpIHsKICAgICAgICByZXR1cm4gcGFpcjsKICAgICAgfSBlbHNlIGlmIChjb21wYXJlKGJlc3RbMF0sIHBhaXJbMF0pID09PSBiZXN0WzBdKSB7CiAgICAgICAgcmV0dXJuIGJlc3Q7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHBhaXI7CiAgICAgIH0KICAgIH0sIG51bGwpWzFdOwogIH0KCiAgZnVuY3Rpb24gcGljayhvYmosIGtleXMpIHsKICAgIHJldHVybiBrZXlzLnJlZHVjZSgoYSwgaykgPT4gewogICAgICBhW2tdID0gb2JqW2tdOwogICAgICByZXR1cm4gYTsKICAgIH0sIHt9KTsKICB9CgogIGZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkgewogICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOwogIH0KCiAgLy8gTlVNQkVSUyBBTkQgU1RSSU5HUwoKICBmdW5jdGlvbiBpbnRlZ2VyQmV0d2Vlbih0aGluZywgYm90dG9tLCB0b3ApIHsKICAgIHJldHVybiBpc0ludGVnZXIodGhpbmcpICYmIHRoaW5nID49IGJvdHRvbSAmJiB0aGluZyA8PSB0b3A7CiAgfQoKICAvLyB4ICUgbiBidXQgdGFrZXMgdGhlIHNpZ24gb2YgbiBpbnN0ZWFkIG9mIHgKICBmdW5jdGlvbiBmbG9vck1vZCh4LCBuKSB7CiAgICByZXR1cm4geCAtIG4gKiBNYXRoLmZsb29yKHggLyBuKTsKICB9CgogIGZ1bmN0aW9uIHBhZFN0YXJ0KGlucHV0LCBuID0gMikgewogICAgY29uc3QgaXNOZWcgPSBpbnB1dCA8IDA7CiAgICBsZXQgcGFkZGVkOwogICAgaWYgKGlzTmVnKSB7CiAgICAgIHBhZGRlZCA9ICItIiArICgiIiArIC1pbnB1dCkucGFkU3RhcnQobiwgIjAiKTsKICAgIH0gZWxzZSB7CiAgICAgIHBhZGRlZCA9ICgiIiArIGlucHV0KS5wYWRTdGFydChuLCAiMCIpOwogICAgfQogICAgcmV0dXJuIHBhZGRlZDsKICB9CgogIGZ1bmN0aW9uIHBhcnNlSW50ZWdlcihzdHJpbmcpIHsKICAgIGlmIChpc1VuZGVmaW5lZChzdHJpbmcpIHx8IHN0cmluZyA9PT0gbnVsbCB8fCBzdHJpbmcgPT09ICIiKSB7CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gcGFyc2VJbnQoc3RyaW5nLCAxMCk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBwYXJzZUZsb2F0aW5nKHN0cmluZykgewogICAgaWYgKGlzVW5kZWZpbmVkKHN0cmluZykgfHwgc3RyaW5nID09PSBudWxsIHx8IHN0cmluZyA9PT0gIiIpIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBwYXJzZUZsb2F0KHN0cmluZyk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBwYXJzZU1pbGxpcyhmcmFjdGlvbikgewogICAgLy8gUmV0dXJuIHVuZGVmaW5lZCAoaW5zdGVhZCBvZiAwKSBpbiB0aGVzZSBjYXNlcywgd2hlcmUgZnJhY3Rpb24gaXMgbm90IHNldAogICAgaWYgKGlzVW5kZWZpbmVkKGZyYWN0aW9uKSB8fCBmcmFjdGlvbiA9PT0gbnVsbCB8fCBmcmFjdGlvbiA9PT0gIiIpIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0gZWxzZSB7CiAgICAgIGNvbnN0IGYgPSBwYXJzZUZsb2F0KCIwLiIgKyBmcmFjdGlvbikgKiAxMDAwOwogICAgICByZXR1cm4gTWF0aC5mbG9vcihmKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHJvdW5kVG8obnVtYmVyLCBkaWdpdHMsIHRvd2FyZFplcm8gPSBmYWxzZSkgewogICAgY29uc3QgZmFjdG9yID0gMTAgKiogZGlnaXRzLAogICAgICByb3VuZGVyID0gdG93YXJkWmVybyA/IE1hdGgudHJ1bmMgOiBNYXRoLnJvdW5kOwogICAgcmV0dXJuIHJvdW5kZXIobnVtYmVyICogZmFjdG9yKSAvIGZhY3RvcjsKICB9CgogIC8vIERBVEUgQkFTSUNTCgogIGZ1bmN0aW9uIGlzTGVhcFllYXIoeWVhcikgewogICAgcmV0dXJuIHllYXIgJSA0ID09PSAwICYmICh5ZWFyICUgMTAwICE9PSAwIHx8IHllYXIgJSA0MDAgPT09IDApOwogIH0KCiAgZnVuY3Rpb24gZGF5c0luWWVhcih5ZWFyKSB7CiAgICByZXR1cm4gaXNMZWFwWWVhcih5ZWFyKSA/IDM2NiA6IDM2NTsKICB9CgogIGZ1bmN0aW9uIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSB7CiAgICBjb25zdCBtb2RNb250aCA9IGZsb29yTW9kKG1vbnRoIC0gMSwgMTIpICsgMSwKICAgICAgbW9kWWVhciA9IHllYXIgKyAobW9udGggLSBtb2RNb250aCkgLyAxMjsKCiAgICBpZiAobW9kTW9udGggPT09IDIpIHsKICAgICAgcmV0dXJuIGlzTGVhcFllYXIobW9kWWVhcikgPyAyOSA6IDI4OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIFszMSwgbnVsbCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdW21vZE1vbnRoIC0gMV07CiAgICB9CiAgfQoKICAvLyBjb252ZXJ0IGEgY2FsZW5kYXIgb2JqZWN0IHRvIGEgbG9jYWwgdGltZXN0YW1wIChlcG9jaCwgYnV0IHdpdGggdGhlIG9mZnNldCBiYWtlZCBpbikKICBmdW5jdGlvbiBvYmpUb0xvY2FsVFMob2JqKSB7CiAgICBsZXQgZCA9IERhdGUuVVRDKAogICAgICBvYmoueWVhciwKICAgICAgb2JqLm1vbnRoIC0gMSwKICAgICAgb2JqLmRheSwKICAgICAgb2JqLmhvdXIsCiAgICAgIG9iai5taW51dGUsCiAgICAgIG9iai5zZWNvbmQsCiAgICAgIG9iai5taWxsaXNlY29uZAogICAgKTsKCiAgICAvLyBmb3IgbGVnYWN5IHJlYXNvbnMsIHllYXJzIGJldHdlZW4gMCBhbmQgOTkgYXJlIGludGVycHJldGVkIGFzIDE5WFg7IHJldmVydCB0aGF0CiAgICBpZiAob2JqLnllYXIgPCAxMDAgJiYgb2JqLnllYXIgPj0gMCkgewogICAgICBkID0gbmV3IERhdGUoZCk7CiAgICAgIC8vIHNldCB0aGUgbW9udGggYW5kIGRheSBhZ2FpbiwgdGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB5ZWFyIDIwMDAgaXMgYSBsZWFwIHllYXIsIGJ1dCB5ZWFyIDEwMCBpcyBub3QKICAgICAgLy8gc28gaWYgb2JqLnllYXIgaXMgaW4gOTksIGJ1dCBvYmouZGF5IG1ha2VzIGl0IHJvbGwgb3ZlciBpbnRvIHllYXIgMTAwLAogICAgICAvLyB0aGUgY2FsY3VsYXRpb25zIGRvbmUgYnkgRGF0ZS5VVEMgYXJlIHVzaW5nIHllYXIgMjAwMCAtIHdoaWNoIGlzIGluY29ycmVjdAogICAgICBkLnNldFVUQ0Z1bGxZZWFyKG9iai55ZWFyLCBvYmoubW9udGggLSAxLCBvYmouZGF5KTsKICAgIH0KICAgIHJldHVybiArZDsKICB9CgogIGZ1bmN0aW9uIHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcikgewogICAgY29uc3QgcDEgPQogICAgICAgICh3ZWVrWWVhciArCiAgICAgICAgICBNYXRoLmZsb29yKHdlZWtZZWFyIC8gNCkgLQogICAgICAgICAgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDEwMCkgKwogICAgICAgICAgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDQwMCkpICUKICAgICAgICA3LAogICAgICBsYXN0ID0gd2Vla1llYXIgLSAxLAogICAgICBwMiA9IChsYXN0ICsgTWF0aC5mbG9vcihsYXN0IC8gNCkgLSBNYXRoLmZsb29yKGxhc3QgLyAxMDApICsgTWF0aC5mbG9vcihsYXN0IC8gNDAwKSkgJSA3OwogICAgcmV0dXJuIHAxID09PSA0IHx8IHAyID09PSAzID8gNTMgOiA1MjsKICB9CgogIGZ1bmN0aW9uIHVudHJ1bmNhdGVZZWFyKHllYXIpIHsKICAgIGlmICh5ZWFyID4gOTkpIHsKICAgICAgcmV0dXJuIHllYXI7CiAgICB9IGVsc2UgcmV0dXJuIHllYXIgPiBTZXR0aW5ncy50d29EaWdpdEN1dG9mZlllYXIgPyAxOTAwICsgeWVhciA6IDIwMDAgKyB5ZWFyOwogIH0KCiAgLy8gUEFSU0lORwoKICBmdW5jdGlvbiBwYXJzZVpvbmVJbmZvKHRzLCBvZmZzZXRGb3JtYXQsIGxvY2FsZSwgdGltZVpvbmUgPSBudWxsKSB7CiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodHMpLAogICAgICBpbnRsT3B0cyA9IHsKICAgICAgICBob3VyQ3ljbGU6ICJoMjMiLAogICAgICAgIHllYXI6ICJudW1lcmljIiwKICAgICAgICBtb250aDogIjItZGlnaXQiLAogICAgICAgIGRheTogIjItZGlnaXQiLAogICAgICAgIGhvdXI6ICIyLWRpZ2l0IiwKICAgICAgICBtaW51dGU6ICIyLWRpZ2l0IiwKICAgICAgfTsKCiAgICBpZiAodGltZVpvbmUpIHsKICAgICAgaW50bE9wdHMudGltZVpvbmUgPSB0aW1lWm9uZTsKICAgIH0KCiAgICBjb25zdCBtb2RpZmllZCA9IHsgdGltZVpvbmVOYW1lOiBvZmZzZXRGb3JtYXQsIC4uLmludGxPcHRzIH07CgogICAgY29uc3QgcGFyc2VkID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCBtb2RpZmllZCkKICAgICAgLmZvcm1hdFRvUGFydHMoZGF0ZSkKICAgICAgLmZpbmQoKG0pID0+IG0udHlwZS50b0xvd2VyQ2FzZSgpID09PSAidGltZXpvbmVuYW1lIik7CiAgICByZXR1cm4gcGFyc2VkID8gcGFyc2VkLnZhbHVlIDogbnVsbDsKICB9CgogIC8vIHNpZ25lZE9mZnNldCgnLTUnLCAnMzAnKSAtPiAtMzMwCiAgZnVuY3Rpb24gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cikgewogICAgbGV0IG9mZkhvdXIgPSBwYXJzZUludChvZmZIb3VyU3RyLCAxMCk7CgogICAgLy8gZG9uJ3QgfHwgdGhpcyBiZWNhdXNlIHdlIHdhbnQgdG8gcHJlc2VydmUgLTAKICAgIGlmIChOdW1iZXIuaXNOYU4ob2ZmSG91cikpIHsKICAgICAgb2ZmSG91ciA9IDA7CiAgICB9CgogICAgY29uc3Qgb2ZmTWluID0gcGFyc2VJbnQob2ZmTWludXRlU3RyLCAxMCkgfHwgMCwKICAgICAgb2ZmTWluU2lnbmVkID0gb2ZmSG91ciA8IDAgfHwgT2JqZWN0LmlzKG9mZkhvdXIsIC0wKSA/IC1vZmZNaW4gOiBvZmZNaW47CiAgICByZXR1cm4gb2ZmSG91ciAqIDYwICsgb2ZmTWluU2lnbmVkOwogIH0KCiAgLy8gQ09FUkNJT04KCiAgZnVuY3Rpb24gYXNOdW1iZXIodmFsdWUpIHsKICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IE51bWJlcih2YWx1ZSk7CiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAiYm9vbGVhbiIgfHwgdmFsdWUgPT09ICIiIHx8IE51bWJlci5pc05hTihudW1lcmljVmFsdWUpKQogICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoYEludmFsaWQgdW5pdCB2YWx1ZSAke3ZhbHVlfWApOwogICAgcmV0dXJuIG51bWVyaWNWYWx1ZTsKICB9CgogIGZ1bmN0aW9uIG5vcm1hbGl6ZU9iamVjdChvYmosIG5vcm1hbGl6ZXIpIHsKICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7fTsKICAgIGZvciAoY29uc3QgdSBpbiBvYmopIHsKICAgICAgaWYgKGhhc093blByb3BlcnR5KG9iaiwgdSkpIHsKICAgICAgICBjb25zdCB2ID0gb2JqW3VdOwogICAgICAgIGlmICh2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVsbCkgY29udGludWU7CiAgICAgICAgbm9ybWFsaXplZFtub3JtYWxpemVyKHUpXSA9IGFzTnVtYmVyKHYpOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gbm9ybWFsaXplZDsKICB9CgogIGZ1bmN0aW9uIGZvcm1hdE9mZnNldChvZmZzZXQsIGZvcm1hdCkgewogICAgY29uc3QgaG91cnMgPSBNYXRoLnRydW5jKE1hdGguYWJzKG9mZnNldCAvIDYwKSksCiAgICAgIG1pbnV0ZXMgPSBNYXRoLnRydW5jKE1hdGguYWJzKG9mZnNldCAlIDYwKSksCiAgICAgIHNpZ24gPSBvZmZzZXQgPj0gMCA/ICIrIiA6ICItIjsKCiAgICBzd2l0Y2ggKGZvcm1hdCkgewogICAgICBjYXNlICJzaG9ydCI6CiAgICAgICAgcmV0dXJuIGAke3NpZ259JHtwYWRTdGFydChob3VycywgMil9OiR7cGFkU3RhcnQobWludXRlcywgMil9YDsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gYCR7c2lnbn0ke2hvdXJzfSR7bWludXRlcyA+IDAgPyBgOiR7bWludXRlc31gIDogIiJ9YDsKICAgICAgY2FzZSAidGVjaGllIjoKICAgICAgICByZXR1cm4gYCR7c2lnbn0ke3BhZFN0YXJ0KGhvdXJzLCAyKX0ke3BhZFN0YXJ0KG1pbnV0ZXMsIDIpfWA7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFZhbHVlIGZvcm1hdCAke2Zvcm1hdH0gaXMgb3V0IG9mIHJhbmdlIGZvciBwcm9wZXJ0eSBmb3JtYXRgKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHRpbWVPYmplY3Qob2JqKSB7CiAgICByZXR1cm4gcGljayhvYmosIFsiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgIm1pbGxpc2Vjb25kIl0pOwogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY29uc3QgbW9udGhzTG9uZyA9IFsKICAgICJKYW51YXJ5IiwKICAgICJGZWJydWFyeSIsCiAgICAiTWFyY2giLAogICAgIkFwcmlsIiwKICAgICJNYXkiLAogICAgIkp1bmUiLAogICAgIkp1bHkiLAogICAgIkF1Z3VzdCIsCiAgICAiU2VwdGVtYmVyIiwKICAgICJPY3RvYmVyIiwKICAgICJOb3ZlbWJlciIsCiAgICAiRGVjZW1iZXIiLAogIF07CgogIGNvbnN0IG1vbnRoc1Nob3J0ID0gWwogICAgIkphbiIsCiAgICAiRmViIiwKICAgICJNYXIiLAogICAgIkFwciIsCiAgICAiTWF5IiwKICAgICJKdW4iLAogICAgIkp1bCIsCiAgICAiQXVnIiwKICAgICJTZXAiLAogICAgIk9jdCIsCiAgICAiTm92IiwKICAgICJEZWMiLAogIF07CgogIGNvbnN0IG1vbnRoc05hcnJvdyA9IFsiSiIsICJGIiwgIk0iLCAiQSIsICJNIiwgIkoiLCAiSiIsICJBIiwgIlMiLCAiTyIsICJOIiwgIkQiXTsKCiAgZnVuY3Rpb24gbW9udGhzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLm1vbnRoc05hcnJvd107CiAgICAgIGNhc2UgInNob3J0IjoKICAgICAgICByZXR1cm4gWy4uLm1vbnRoc1Nob3J0XTsKICAgICAgY2FzZSAibG9uZyI6CiAgICAgICAgcmV0dXJuIFsuLi5tb250aHNMb25nXTsKICAgICAgY2FzZSAibnVtZXJpYyI6CiAgICAgICAgcmV0dXJuIFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyIsICI4IiwgIjkiLCAiMTAiLCAiMTEiLCAiMTIiXTsKICAgICAgY2FzZSAiMi1kaWdpdCI6CiAgICAgICAgcmV0dXJuIFsiMDEiLCAiMDIiLCAiMDMiLCAiMDQiLCAiMDUiLCAiMDYiLCAiMDciLCAiMDgiLCAiMDkiLCAiMTAiLCAiMTEiLCAiMTIiXTsKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CgogIGNvbnN0IHdlZWtkYXlzTG9uZyA9IFsKICAgICJNb25kYXkiLAogICAgIlR1ZXNkYXkiLAogICAgIldlZG5lc2RheSIsCiAgICAiVGh1cnNkYXkiLAogICAgIkZyaWRheSIsCiAgICAiU2F0dXJkYXkiLAogICAgIlN1bmRheSIsCiAgXTsKCiAgY29uc3Qgd2Vla2RheXNTaG9ydCA9IFsiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiLCAiU3VuIl07CgogIGNvbnN0IHdlZWtkYXlzTmFycm93ID0gWyJNIiwgIlQiLCAiVyIsICJUIiwgIkYiLCAiUyIsICJTIl07CgogIGZ1bmN0aW9uIHdlZWtkYXlzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLndlZWtkYXlzTmFycm93XTsKICAgICAgY2FzZSAic2hvcnQiOgogICAgICAgIHJldHVybiBbLi4ud2Vla2RheXNTaG9ydF07CiAgICAgIGNhc2UgImxvbmciOgogICAgICAgIHJldHVybiBbLi4ud2Vla2RheXNMb25nXTsKICAgICAgY2FzZSAibnVtZXJpYyI6CiAgICAgICAgcmV0dXJuIFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyJdOwogICAgICBkZWZhdWx0OgogICAgICAgIHJldHVybiBudWxsOwogICAgfQogIH0KCiAgY29uc3QgbWVyaWRpZW1zID0gWyJBTSIsICJQTSJdOwoKICBjb25zdCBlcmFzTG9uZyA9IFsiQmVmb3JlIENocmlzdCIsICJBbm5vIERvbWluaSJdOwoKICBjb25zdCBlcmFzU2hvcnQgPSBbIkJDIiwgIkFEIl07CgogIGNvbnN0IGVyYXNOYXJyb3cgPSBbIkIiLCAiQSJdOwoKICBmdW5jdGlvbiBlcmFzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLmVyYXNOYXJyb3ddOwogICAgICBjYXNlICJzaG9ydCI6CiAgICAgICAgcmV0dXJuIFsuLi5lcmFzU2hvcnRdOwogICAgICBjYXNlICJsb25nIjoKICAgICAgICByZXR1cm4gWy4uLmVyYXNMb25nXTsKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CgogIGZ1bmN0aW9uIG1lcmlkaWVtRm9yRGF0ZVRpbWUoZHQpIHsKICAgIHJldHVybiBtZXJpZGllbXNbZHQuaG91ciA8IDEyID8gMCA6IDFdOwogIH0KCiAgZnVuY3Rpb24gd2Vla2RheUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIHsKICAgIHJldHVybiB3ZWVrZGF5cyhsZW5ndGgpW2R0LndlZWtkYXkgLSAxXTsKICB9CgogIGZ1bmN0aW9uIG1vbnRoRm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkgewogICAgcmV0dXJuIG1vbnRocyhsZW5ndGgpW2R0Lm1vbnRoIC0gMV07CiAgfQoKICBmdW5jdGlvbiBlcmFGb3JEYXRlVGltZShkdCwgbGVuZ3RoKSB7CiAgICByZXR1cm4gZXJhcyhsZW5ndGgpW2R0LnllYXIgPCAwID8gMCA6IDFdOwogIH0KCiAgZnVuY3Rpb24gZm9ybWF0UmVsYXRpdmVUaW1lKHVuaXQsIGNvdW50LCBudW1lcmljID0gImFsd2F5cyIsIG5hcnJvdyA9IGZhbHNlKSB7CiAgICBjb25zdCB1bml0cyA9IHsKICAgICAgeWVhcnM6IFsieWVhciIsICJ5ci4iXSwKICAgICAgcXVhcnRlcnM6IFsicXVhcnRlciIsICJxdHIuIl0sCiAgICAgIG1vbnRoczogWyJtb250aCIsICJtby4iXSwKICAgICAgd2Vla3M6IFsid2VlayIsICJ3ay4iXSwKICAgICAgZGF5czogWyJkYXkiLCAiZGF5IiwgImRheXMiXSwKICAgICAgaG91cnM6IFsiaG91ciIsICJoci4iXSwKICAgICAgbWludXRlczogWyJtaW51dGUiLCAibWluLiJdLAogICAgICBzZWNvbmRzOiBbInNlY29uZCIsICJzZWMuIl0sCiAgICB9OwoKICAgIGNvbnN0IGxhc3RhYmxlID0gWyJob3VycyIsICJtaW51dGVzIiwgInNlY29uZHMiXS5pbmRleE9mKHVuaXQpID09PSAtMTsKCiAgICBpZiAobnVtZXJpYyA9PT0gImF1dG8iICYmIGxhc3RhYmxlKSB7CiAgICAgIGNvbnN0IGlzRGF5ID0gdW5pdCA9PT0gImRheXMiOwogICAgICBzd2l0Y2ggKGNvdW50KSB7CiAgICAgICAgY2FzZSAxOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInRvbW9ycm93IiA6IGBuZXh0ICR7dW5pdHNbdW5pdF1bMF19YDsKICAgICAgICBjYXNlIC0xOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInllc3RlcmRheSIgOiBgbGFzdCAke3VuaXRzW3VuaXRdWzBdfWA7CiAgICAgICAgY2FzZSAwOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInRvZGF5IiA6IGB0aGlzICR7dW5pdHNbdW5pdF1bMF19YDsKICAgICAgfQogICAgfQoKICAgIGNvbnN0IGlzSW5QYXN0ID0gT2JqZWN0LmlzKGNvdW50LCAtMCkgfHwgY291bnQgPCAwLAogICAgICBmbXRWYWx1ZSA9IE1hdGguYWJzKGNvdW50KSwKICAgICAgc2luZ3VsYXIgPSBmbXRWYWx1ZSA9PT0gMSwKICAgICAgbGlsVW5pdHMgPSB1bml0c1t1bml0XSwKICAgICAgZm10VW5pdCA9IG5hcnJvdwogICAgICAgID8gc2luZ3VsYXIKICAgICAgICAgID8gbGlsVW5pdHNbMV0KICAgICAgICAgIDogbGlsVW5pdHNbMl0gfHwgbGlsVW5pdHNbMV0KICAgICAgICA6IHNpbmd1bGFyCiAgICAgICAgPyB1bml0c1t1bml0XVswXQogICAgICAgIDogdW5pdDsKICAgIHJldHVybiBpc0luUGFzdCA/IGAke2ZtdFZhbHVlfSAke2ZtdFVuaXR9IGFnb2AgOiBgaW4gJHtmbXRWYWx1ZX0gJHtmbXRVbml0fWA7CiAgfQoKICBmdW5jdGlvbiBzdHJpbmdpZnlUb2tlbnMoc3BsaXRzLCB0b2tlblRvU3RyaW5nKSB7CiAgICBsZXQgcyA9ICIiOwogICAgZm9yIChjb25zdCB0b2tlbiBvZiBzcGxpdHMpIHsKICAgICAgaWYgKHRva2VuLmxpdGVyYWwpIHsKICAgICAgICBzICs9IHRva2VuLnZhbDsKICAgICAgfSBlbHNlIHsKICAgICAgICBzICs9IHRva2VuVG9TdHJpbmcodG9rZW4udmFsKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHM7CiAgfQoKICBjb25zdCBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzID0gewogICAgRDogREFURV9TSE9SVCwKICAgIEREOiBEQVRFX01FRCwKICAgIERERDogREFURV9GVUxMLAogICAgRERERDogREFURV9IVUdFLAogICAgdDogVElNRV9TSU1QTEUsCiAgICB0dDogVElNRV9XSVRIX1NFQ09ORFMsCiAgICB0dHQ6IFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQsCiAgICB0dHR0OiBUSU1FX1dJVEhfTE9OR19PRkZTRVQsCiAgICBUOiBUSU1FXzI0X1NJTVBMRSwKICAgIFRUOiBUSU1FXzI0X1dJVEhfU0VDT05EUywKICAgIFRUVDogVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCwKICAgIFRUVFQ6IFRJTUVfMjRfV0lUSF9MT05HX09GRlNFVCwKICAgIGY6IERBVEVUSU1FX1NIT1JULAogICAgZmY6IERBVEVUSU1FX01FRCwKICAgIGZmZjogREFURVRJTUVfRlVMTCwKICAgIGZmZmY6IERBVEVUSU1FX0hVR0UsCiAgICBGOiBEQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFMsCiAgICBGRjogREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUywKICAgIEZGRjogREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMsCiAgICBGRkZGOiBEQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUywKICB9OwoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBjbGFzcyBGb3JtYXR0ZXIgewogICAgc3RhdGljIGNyZWF0ZShsb2NhbGUsIG9wdHMgPSB7fSkgewogICAgICByZXR1cm4gbmV3IEZvcm1hdHRlcihsb2NhbGUsIG9wdHMpOwogICAgfQoKICAgIHN0YXRpYyBwYXJzZUZvcm1hdChmbXQpIHsKICAgICAgLy8gd2hpdGUtc3BhY2UgaXMgYWx3YXlzIGNvbnNpZGVyZWQgYSBsaXRlcmFsIGluIHVzZXItcHJvdmlkZWQgZm9ybWF0cwogICAgICAvLyB0aGUgIiAiIHRva2VuIGhhcyBhIHNwZWNpYWwgbWVhbmluZyAoc2VlIHVuaXRGb3JUb2tlbikKCiAgICAgIGxldCBjdXJyZW50ID0gbnVsbCwKICAgICAgICBjdXJyZW50RnVsbCA9ICIiLAogICAgICAgIGJyYWNrZXRlZCA9IGZhbHNlOwogICAgICBjb25zdCBzcGxpdHMgPSBbXTsKICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmbXQubGVuZ3RoOyBpKyspIHsKICAgICAgICBjb25zdCBjID0gZm10LmNoYXJBdChpKTsKICAgICAgICBpZiAoYyA9PT0gIiciKSB7CiAgICAgICAgICBpZiAoY3VycmVudEZ1bGwubGVuZ3RoID4gMCkgewogICAgICAgICAgICBzcGxpdHMucHVzaCh7IGxpdGVyYWw6IGJyYWNrZXRlZCB8fCAvXlxzKyQvLnRlc3QoY3VycmVudEZ1bGwpLCB2YWw6IGN1cnJlbnRGdWxsIH0pOwogICAgICAgICAgfQogICAgICAgICAgY3VycmVudCA9IG51bGw7CiAgICAgICAgICBjdXJyZW50RnVsbCA9ICIiOwogICAgICAgICAgYnJhY2tldGVkID0gIWJyYWNrZXRlZDsKICAgICAgICB9IGVsc2UgaWYgKGJyYWNrZXRlZCkgewogICAgICAgICAgY3VycmVudEZ1bGwgKz0gYzsKICAgICAgICB9IGVsc2UgaWYgKGMgPT09IGN1cnJlbnQpIHsKICAgICAgICAgIGN1cnJlbnRGdWxsICs9IGM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGlmIChjdXJyZW50RnVsbC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIHNwbGl0cy5wdXNoKHsgbGl0ZXJhbDogL15ccyskLy50ZXN0KGN1cnJlbnRGdWxsKSwgdmFsOiBjdXJyZW50RnVsbCB9KTsKICAgICAgICAgIH0KICAgICAgICAgIGN1cnJlbnRGdWxsID0gYzsKICAgICAgICAgIGN1cnJlbnQgPSBjOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKGN1cnJlbnRGdWxsLmxlbmd0aCA+IDApIHsKICAgICAgICBzcGxpdHMucHVzaCh7IGxpdGVyYWw6IGJyYWNrZXRlZCB8fCAvXlxzKyQvLnRlc3QoY3VycmVudEZ1bGwpLCB2YWw6IGN1cnJlbnRGdWxsIH0pOwogICAgICB9CgogICAgICByZXR1cm4gc3BsaXRzOwogICAgfQoKICAgIHN0YXRpYyBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzKHRva2VuKSB7CiAgICAgIHJldHVybiBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzW3Rva2VuXTsKICAgIH0KCiAgICBjb25zdHJ1Y3Rvcihsb2NhbGUsIGZvcm1hdE9wdHMpIHsKICAgICAgdGhpcy5vcHRzID0gZm9ybWF0T3B0czsKICAgICAgdGhpcy5sb2MgPSBsb2NhbGU7CiAgICAgIHRoaXMuc3lzdGVtTG9jID0gbnVsbDsKICAgIH0KCiAgICBmb3JtYXRXaXRoU3lzdGVtRGVmYXVsdChkdCwgb3B0cykgewogICAgICBpZiAodGhpcy5zeXN0ZW1Mb2MgPT09IG51bGwpIHsKICAgICAgICB0aGlzLnN5c3RlbUxvYyA9IHRoaXMubG9jLnJlZGVmYXVsdFRvU3lzdGVtKCk7CiAgICAgIH0KICAgICAgY29uc3QgZGYgPSB0aGlzLnN5c3RlbUxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7CiAgICAgIHJldHVybiBkZi5mb3JtYXQoKTsKICAgIH0KCiAgICBkdEZvcm1hdHRlcihkdCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7CiAgICB9CgogICAgZm9ybWF0RGF0ZVRpbWUoZHQsIG9wdHMpIHsKICAgICAgcmV0dXJuIHRoaXMuZHRGb3JtYXR0ZXIoZHQsIG9wdHMpLmZvcm1hdCgpOwogICAgfQoKICAgIGZvcm1hdERhdGVUaW1lUGFydHMoZHQsIG9wdHMpIHsKICAgICAgcmV0dXJuIHRoaXMuZHRGb3JtYXR0ZXIoZHQsIG9wdHMpLmZvcm1hdFRvUGFydHMoKTsKICAgIH0KCiAgICBmb3JtYXRJbnRlcnZhbChpbnRlcnZhbCwgb3B0cykgewogICAgICBjb25zdCBkZiA9IHRoaXMuZHRGb3JtYXR0ZXIoaW50ZXJ2YWwuc3RhcnQsIG9wdHMpOwogICAgICByZXR1cm4gZGYuZHRmLmZvcm1hdFJhbmdlKGludGVydmFsLnN0YXJ0LnRvSlNEYXRlKCksIGludGVydmFsLmVuZC50b0pTRGF0ZSgpKTsKICAgIH0KCiAgICByZXNvbHZlZE9wdGlvbnMoZHQsIG9wdHMpIHsKICAgICAgcmV0dXJuIHRoaXMuZHRGb3JtYXR0ZXIoZHQsIG9wdHMpLnJlc29sdmVkT3B0aW9ucygpOwogICAgfQoKICAgIG51bShuLCBwID0gMCkgewogICAgICAvLyB3ZSBnZXQgc29tZSBwZXJmIG91dCBvZiBkb2luZyB0aGlzIGhlcmUsIGFubm95aW5nbHkKICAgICAgaWYgKHRoaXMub3B0cy5mb3JjZVNpbXBsZSkgewogICAgICAgIHJldHVybiBwYWRTdGFydChuLCBwKTsKICAgICAgfQoKICAgICAgY29uc3Qgb3B0cyA9IHsgLi4udGhpcy5vcHRzIH07CgogICAgICBpZiAocCA+IDApIHsKICAgICAgICBvcHRzLnBhZFRvID0gcDsKICAgICAgfQoKICAgICAgcmV0dXJuIHRoaXMubG9jLm51bWJlckZvcm1hdHRlcihvcHRzKS5mb3JtYXQobik7CiAgICB9CgogICAgZm9ybWF0RGF0ZVRpbWVGcm9tU3RyaW5nKGR0LCBmbXQpIHsKICAgICAgY29uc3Qga25vd25FbmdsaXNoID0gdGhpcy5sb2MubGlzdGluZ01vZGUoKSA9PT0gImVuIiwKICAgICAgICB1c2VEYXRlVGltZUZvcm1hdHRlciA9IHRoaXMubG9jLm91dHB1dENhbGVuZGFyICYmIHRoaXMubG9jLm91dHB1dENhbGVuZGFyICE9PSAiZ3JlZ29yeSIsCiAgICAgICAgc3RyaW5nID0gKG9wdHMsIGV4dHJhY3QpID0+IHRoaXMubG9jLmV4dHJhY3QoZHQsIG9wdHMsIGV4dHJhY3QpLAogICAgICAgIGZvcm1hdE9mZnNldCA9IChvcHRzKSA9PiB7CiAgICAgICAgICBpZiAoZHQuaXNPZmZzZXRGaXhlZCAmJiBkdC5vZmZzZXQgPT09IDAgJiYgb3B0cy5hbGxvd1opIHsKICAgICAgICAgICAgcmV0dXJuICJaIjsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gZHQuaXNWYWxpZCA/IGR0LnpvbmUuZm9ybWF0T2Zmc2V0KGR0LnRzLCBvcHRzLmZvcm1hdCkgOiAiIjsKICAgICAgICB9LAogICAgICAgIG1lcmlkaWVtID0gKCkgPT4KICAgICAgICAgIGtub3duRW5nbGlzaAogICAgICAgICAgICA/IG1lcmlkaWVtRm9yRGF0ZVRpbWUoZHQpCiAgICAgICAgICAgIDogc3RyaW5nKHsgaG91cjogIm51bWVyaWMiLCBob3VyQ3ljbGU6ICJoMTIiIH0sICJkYXlwZXJpb2QiKSwKICAgICAgICBtb250aCA9IChsZW5ndGgsIHN0YW5kYWxvbmUpID0+CiAgICAgICAgICBrbm93bkVuZ2xpc2gKICAgICAgICAgICAgPyBtb250aEZvckRhdGVUaW1lKGR0LCBsZW5ndGgpCiAgICAgICAgICAgIDogc3RyaW5nKHN0YW5kYWxvbmUgPyB7IG1vbnRoOiBsZW5ndGggfSA6IHsgbW9udGg6IGxlbmd0aCwgZGF5OiAibnVtZXJpYyIgfSwgIm1vbnRoIiksCiAgICAgICAgd2Vla2RheSA9IChsZW5ndGgsIHN0YW5kYWxvbmUpID0+CiAgICAgICAgICBrbm93bkVuZ2xpc2gKICAgICAgICAgICAgPyB3ZWVrZGF5Rm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkKICAgICAgICAgICAgOiBzdHJpbmcoCiAgICAgICAgICAgICAgICBzdGFuZGFsb25lID8geyB3ZWVrZGF5OiBsZW5ndGggfSA6IHsgd2Vla2RheTogbGVuZ3RoLCBtb250aDogImxvbmciLCBkYXk6ICJudW1lcmljIiB9LAogICAgICAgICAgICAgICAgIndlZWtkYXkiCiAgICAgICAgICAgICAgKSwKICAgICAgICBtYXliZU1hY3JvID0gKHRva2VuKSA9PiB7CiAgICAgICAgICBjb25zdCBmb3JtYXRPcHRzID0gRm9ybWF0dGVyLm1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4pOwogICAgICAgICAgaWYgKGZvcm1hdE9wdHMpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0V2l0aFN5c3RlbURlZmF1bHQoZHQsIGZvcm1hdE9wdHMpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgZXJhID0gKGxlbmd0aCkgPT4KICAgICAgICAgIGtub3duRW5nbGlzaCA/IGVyYUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIDogc3RyaW5nKHsgZXJhOiBsZW5ndGggfSwgImVyYSIpLAogICAgICAgIHRva2VuVG9TdHJpbmcgPSAodG9rZW4pID0+IHsKICAgICAgICAgIC8vIFdoZXJlIHBvc3NpYmxlOiBodHRwczovL2NsZHIudW5pY29kZS5vcmcvdHJhbnNsYXRpb24vZGF0ZS10aW1lL2RhdGUtdGltZS1zeW1ib2xzCiAgICAgICAgICBzd2l0Y2ggKHRva2VuKSB7CiAgICAgICAgICAgIC8vIG1zCiAgICAgICAgICAgIGNhc2UgIlMiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taWxsaXNlY29uZCk7CiAgICAgICAgICAgIGNhc2UgInUiOgogICAgICAgICAgICAvLyBmYWxscyB0aHJvdWdoCiAgICAgICAgICAgIGNhc2UgIlNTUyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbGxpc2Vjb25kLCAzKTsKICAgICAgICAgICAgLy8gc2Vjb25kcwogICAgICAgICAgICBjYXNlICJzIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuc2Vjb25kKTsKICAgICAgICAgICAgY2FzZSAic3MiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5zZWNvbmQsIDIpOwogICAgICAgICAgICAvLyBmcmFjdGlvbmFsIHNlY29uZHMKICAgICAgICAgICAgY2FzZSAidXUiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShNYXRoLmZsb29yKGR0Lm1pbGxpc2Vjb25kIC8gMTApLCAyKTsKICAgICAgICAgICAgY2FzZSAidXV1IjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC5taWxsaXNlY29uZCAvIDEwMCkpOwogICAgICAgICAgICAvLyBtaW51dGVzCiAgICAgICAgICAgIGNhc2UgIm0iOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taW51dGUpOwogICAgICAgICAgICBjYXNlICJtbSI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbnV0ZSwgMik7CiAgICAgICAgICAgIC8vIGhvdXJzCiAgICAgICAgICAgIGNhc2UgImgiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5ob3VyICUgMTIgPT09IDAgPyAxMiA6IGR0LmhvdXIgJSAxMik7CiAgICAgICAgICAgIGNhc2UgImhoIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91ciAlIDEyID09PSAwID8gMTIgOiBkdC5ob3VyICUgMTIsIDIpOwogICAgICAgICAgICBjYXNlICJIIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91cik7CiAgICAgICAgICAgIGNhc2UgIkhIIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91ciwgMik7CiAgICAgICAgICAgIC8vIG9mZnNldAogICAgICAgICAgICBjYXNlICJaIjoKICAgICAgICAgICAgICAvLyBsaWtlICs2CiAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7IGZvcm1hdDogIm5hcnJvdyIsIGFsbG93WjogdGhpcy5vcHRzLmFsbG93WiB9KTsKICAgICAgICAgICAgY2FzZSAiWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgKzA2OjAwCiAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7IGZvcm1hdDogInNob3J0IiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pOwogICAgICAgICAgICBjYXNlICJaWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgKzA2MDAKICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHsgZm9ybWF0OiAidGVjaGllIiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pOwogICAgICAgICAgICBjYXNlICJaWlpaIjoKICAgICAgICAgICAgICAvLyBsaWtlIEVTVAogICAgICAgICAgICAgIHJldHVybiBkdC56b25lLm9mZnNldE5hbWUoZHQudHMsIHsgZm9ybWF0OiAic2hvcnQiLCBsb2NhbGU6IHRoaXMubG9jLmxvY2FsZSB9KTsKICAgICAgICAgICAgY2FzZSAiWlpaWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgRWFzdGVybiBTdGFuZGFyZCBUaW1lCiAgICAgICAgICAgICAgcmV0dXJuIGR0LnpvbmUub2Zmc2V0TmFtZShkdC50cywgeyBmb3JtYXQ6ICJsb25nIiwgbG9jYWxlOiB0aGlzLmxvYy5sb2NhbGUgfSk7CiAgICAgICAgICAgIC8vIHpvbmUKICAgICAgICAgICAgY2FzZSAieiI6CiAgICAgICAgICAgICAgLy8gbGlrZSBBbWVyaWNhL05ld19Zb3JrCiAgICAgICAgICAgICAgcmV0dXJuIGR0LnpvbmVOYW1lOwogICAgICAgICAgICAvLyBtZXJpZGllbXMKICAgICAgICAgICAgY2FzZSAiYSI6CiAgICAgICAgICAgICAgcmV0dXJuIG1lcmlkaWVtKCk7CiAgICAgICAgICAgIC8vIGRhdGVzCiAgICAgICAgICAgIGNhc2UgImQiOgogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlciA/IHN0cmluZyh7IGRheTogIm51bWVyaWMiIH0sICJkYXkiKSA6IHRoaXMubnVtKGR0LmRheSk7CiAgICAgICAgICAgIGNhc2UgImRkIjoKICAgICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoeyBkYXk6ICIyLWRpZ2l0IiB9LCAiZGF5IikgOiB0aGlzLm51bShkdC5kYXksIDIpOwogICAgICAgICAgICAvLyB3ZWVrZGF5cyAtIHN0YW5kYWxvbmUKICAgICAgICAgICAgY2FzZSAiYyI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtkYXkpOwogICAgICAgICAgICBjYXNlICJjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXMnCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoInNob3J0IiwgdHJ1ZSk7CiAgICAgICAgICAgIGNhc2UgImNjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXNkYXknCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoImxvbmciLCB0cnVlKTsKICAgICAgICAgICAgY2FzZSAiY2NjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1QnCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoIm5hcnJvdyIsIHRydWUpOwogICAgICAgICAgICAvLyB3ZWVrZGF5cyAtIGZvcm1hdAogICAgICAgICAgICBjYXNlICJFIjoKICAgICAgICAgICAgICAvLyBsaWtlIDEKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla2RheSk7CiAgICAgICAgICAgIGNhc2UgIkVFRSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAnVHVlcycKICAgICAgICAgICAgICByZXR1cm4gd2Vla2RheSgic2hvcnQiLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIkVFRUUiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXNkYXknCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoImxvbmciLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIkVFRUVFIjoKICAgICAgICAgICAgICAvLyBsaWtlICdUJwogICAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5KCJuYXJyb3ciLCBmYWxzZSk7CiAgICAgICAgICAgIC8vIG1vbnRocyAtIHN0YW5kYWxvbmUKICAgICAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAibnVtZXJpYyIsIGRheTogIm51bWVyaWMiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoKTsKICAgICAgICAgICAgY2FzZSAiTEwiOgogICAgICAgICAgICAgIC8vIGxpa2UgMDEsIGRvZXNuJ3Qgc2VlbSB0byB3b3JrCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAiMi1kaWdpdCIsIGRheTogIm51bWVyaWMiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoLCAyKTsKICAgICAgICAgICAgY2FzZSAiTExMIjoKICAgICAgICAgICAgICAvLyBsaWtlIEphbgogICAgICAgICAgICAgIHJldHVybiBtb250aCgic2hvcnQiLCB0cnVlKTsKICAgICAgICAgICAgY2FzZSAiTExMTCI6CiAgICAgICAgICAgICAgLy8gbGlrZSBKYW51YXJ5CiAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoKCJsb25nIiwgdHJ1ZSk7CiAgICAgICAgICAgIGNhc2UgIkxMTExMIjoKICAgICAgICAgICAgICAvLyBsaWtlIEoKICAgICAgICAgICAgICByZXR1cm4gbW9udGgoIm5hcnJvdyIsIHRydWUpOwogICAgICAgICAgICAvLyBtb250aHMgLSBmb3JtYXQKICAgICAgICAgICAgY2FzZSAiTSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAibnVtZXJpYyIgfSwgIm1vbnRoIikKICAgICAgICAgICAgICAgIDogdGhpcy5udW0oZHQubW9udGgpOwogICAgICAgICAgICBjYXNlICJNTSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAwMQogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlcgogICAgICAgICAgICAgICAgPyBzdHJpbmcoeyBtb250aDogIjItZGlnaXQiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoLCAyKTsKICAgICAgICAgICAgY2FzZSAiTU1NIjoKICAgICAgICAgICAgICAvLyBsaWtlIEphbgogICAgICAgICAgICAgIHJldHVybiBtb250aCgic2hvcnQiLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIk1NTU0iOgogICAgICAgICAgICAgIC8vIGxpa2UgSmFudWFyeQogICAgICAgICAgICAgIHJldHVybiBtb250aCgibG9uZyIsIGZhbHNlKTsKICAgICAgICAgICAgY2FzZSAiTU1NTU0iOgogICAgICAgICAgICAgIC8vIGxpa2UgSgogICAgICAgICAgICAgIHJldHVybiBtb250aCgibmFycm93IiwgZmFsc2UpOwogICAgICAgICAgICAvLyB5ZWFycwogICAgICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgICAgICAvLyBsaWtlIDIwMTQKICAgICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoeyB5ZWFyOiAibnVtZXJpYyIgfSwgInllYXIiKSA6IHRoaXMubnVtKGR0LnllYXIpOwogICAgICAgICAgICBjYXNlICJ5eSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxNAogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlcgogICAgICAgICAgICAgICAgPyBzdHJpbmcoeyB5ZWFyOiAiMi1kaWdpdCIgfSwgInllYXIiKQogICAgICAgICAgICAgICAgOiB0aGlzLm51bShkdC55ZWFyLnRvU3RyaW5nKCkuc2xpY2UoLTIpLCAyKTsKICAgICAgICAgICAgY2FzZSAieXl5eSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAwMDEyCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IHllYXI6ICJudW1lcmljIiB9LCAieWVhciIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0LnllYXIsIDQpOwogICAgICAgICAgICBjYXNlICJ5eXl5eXkiOgogICAgICAgICAgICAgIC8vIGxpa2UgMDAwMDEyCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IHllYXI6ICJudW1lcmljIiB9LCAieWVhciIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0LnllYXIsIDYpOwogICAgICAgICAgICAvLyBlcmFzCiAgICAgICAgICAgIGNhc2UgIkciOgogICAgICAgICAgICAgIC8vIGxpa2UgQUQKICAgICAgICAgICAgICByZXR1cm4gZXJhKCJzaG9ydCIpOwogICAgICAgICAgICBjYXNlICJHRyI6CiAgICAgICAgICAgICAgLy8gbGlrZSBBbm5vIERvbWluaQogICAgICAgICAgICAgIHJldHVybiBlcmEoImxvbmciKTsKICAgICAgICAgICAgY2FzZSAiR0dHR0ciOgogICAgICAgICAgICAgIHJldHVybiBlcmEoIm5hcnJvdyIpOwogICAgICAgICAgICBjYXNlICJrayI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtZZWFyLnRvU3RyaW5nKCkuc2xpY2UoLTIpLCAyKTsKICAgICAgICAgICAgY2FzZSAia2trayI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtZZWFyLCA0KTsKICAgICAgICAgICAgY2FzZSAiVyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtOdW1iZXIpOwogICAgICAgICAgICBjYXNlICJXVyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtOdW1iZXIsIDIpOwogICAgICAgICAgICBjYXNlICJvIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQub3JkaW5hbCk7CiAgICAgICAgICAgIGNhc2UgIm9vbyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm9yZGluYWwsIDMpOwogICAgICAgICAgICBjYXNlICJxIjoKICAgICAgICAgICAgICAvLyBsaWtlIDEKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQucXVhcnRlcik7CiAgICAgICAgICAgIGNhc2UgInFxIjoKICAgICAgICAgICAgICAvLyBsaWtlIDAxCiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnF1YXJ0ZXIsIDIpOwogICAgICAgICAgICBjYXNlICJYIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC50cyAvIDEwMDApKTsKICAgICAgICAgICAgY2FzZSAieCI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnRzKTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICByZXR1cm4gbWF5YmVNYWNybyh0b2tlbik7CiAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgIHJldHVybiBzdHJpbmdpZnlUb2tlbnMoRm9ybWF0dGVyLnBhcnNlRm9ybWF0KGZtdCksIHRva2VuVG9TdHJpbmcpOwogICAgfQoKICAgIGZvcm1hdER1cmF0aW9uRnJvbVN0cmluZyhkdXIsIGZtdCkgewogICAgICBjb25zdCB0b2tlblRvRmllbGQgPSAodG9rZW4pID0+IHsKICAgICAgICAgIHN3aXRjaCAodG9rZW5bMF0pIHsKICAgICAgICAgICAgY2FzZSAiUyI6CiAgICAgICAgICAgICAgcmV0dXJuICJtaWxsaXNlY29uZCI7CiAgICAgICAgICAgIGNhc2UgInMiOgogICAgICAgICAgICAgIHJldHVybiAic2Vjb25kIjsKICAgICAgICAgICAgY2FzZSAibSI6CiAgICAgICAgICAgICAgcmV0dXJuICJtaW51dGUiOwogICAgICAgICAgICBjYXNlICJoIjoKICAgICAgICAgICAgICByZXR1cm4gImhvdXIiOwogICAgICAgICAgICBjYXNlICJkIjoKICAgICAgICAgICAgICByZXR1cm4gImRheSI7CiAgICAgICAgICAgIGNhc2UgInciOgogICAgICAgICAgICAgIHJldHVybiAid2VlayI7CiAgICAgICAgICAgIGNhc2UgIk0iOgogICAgICAgICAgICAgIHJldHVybiAibW9udGgiOwogICAgICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgICAgICByZXR1cm4gInllYXIiOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgdG9rZW5Ub1N0cmluZyA9IChsaWxkdXIpID0+ICh0b2tlbikgPT4gewogICAgICAgICAgY29uc3QgbWFwcGVkID0gdG9rZW5Ub0ZpZWxkKHRva2VuKTsKICAgICAgICAgIGlmIChtYXBwZWQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGxpbGR1ci5nZXQobWFwcGVkKSwgdG9rZW4ubGVuZ3RoKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHRva2VucyA9IEZvcm1hdHRlci5wYXJzZUZvcm1hdChmbXQpLAogICAgICAgIHJlYWxUb2tlbnMgPSB0b2tlbnMucmVkdWNlKAogICAgICAgICAgKGZvdW5kLCB7IGxpdGVyYWwsIHZhbCB9KSA9PiAobGl0ZXJhbCA/IGZvdW5kIDogZm91bmQuY29uY2F0KHZhbCkpLAogICAgICAgICAgW10KICAgICAgICApLAogICAgICAgIGNvbGxhcHNlZCA9IGR1ci5zaGlmdFRvKC4uLnJlYWxUb2tlbnMubWFwKHRva2VuVG9GaWVsZCkuZmlsdGVyKCh0KSA9PiB0KSk7CiAgICAgIHJldHVybiBzdHJpbmdpZnlUb2tlbnModG9rZW5zLCB0b2tlblRvU3RyaW5nKGNvbGxhcHNlZCkpOwogICAgfQogIH0KCiAgY2xhc3MgSW52YWxpZCB7CiAgICBjb25zdHJ1Y3RvcihyZWFzb24sIGV4cGxhbmF0aW9uKSB7CiAgICAgIHRoaXMucmVhc29uID0gcmVhc29uOwogICAgICB0aGlzLmV4cGxhbmF0aW9uID0gZXhwbGFuYXRpb247CiAgICB9CgogICAgdG9NZXNzYWdlKCkgewogICAgICBpZiAodGhpcy5leHBsYW5hdGlvbikgewogICAgICAgIHJldHVybiBgJHt0aGlzLnJlYXNvbn06ICR7dGhpcy5leHBsYW5hdGlvbn1gOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB0aGlzLnJlYXNvbjsKICAgICAgfQogICAgfQogIH0KCiAgLyoKICAgKiBUaGlzIGZpbGUgaGFuZGxlcyBwYXJzaW5nIGZvciB3ZWxsLXNwZWNpZmllZCBmb3JtYXRzLiBIZXJlJ3MgaG93IGl0IHdvcmtzOgogICAqIFR3byB0aGluZ3MgZ28gaW50byBwYXJzaW5nOiBhIHJlZ2V4IHRvIG1hdGNoIHdpdGggYW5kIGFuIGV4dHJhY3RvciB0byB0YWtlIGFwYXJ0IHRoZSBncm91cHMgaW4gdGhlIG1hdGNoLgogICAqIEFuIGV4dHJhY3RvciBpcyBqdXN0IGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHJlZ2V4IG1hdGNoIGFycmF5IGFuZCByZXR1cm5zIGEgeyB5ZWFyOiAuLi4sIG1vbnRoOiAuLi4gfSBvYmplY3QKICAgKiBwYXJzZSgpIGRvZXMgdGhlIHdvcmsgb2YgZXhlY3V0aW5nIHRoZSByZWdleCBhbmQgYXBwbHlpbmcgdGhlIGV4dHJhY3Rvci4gSXQgdGFrZXMgbXVsdGlwbGUgcmVnZXgvZXh0cmFjdG9yIHBhaXJzIHRvIHRyeSBpbiBzZXF1ZW5jZS4KICAgKiBFeHRyYWN0b3JzIGNhbiB0YWtlIGEgImN1cnNvciIgcmVwcmVzZW50aW5nIHRoZSBvZmZzZXQgaW4gdGhlIG1hdGNoIHRvIGxvb2sgYXQuIFRoaXMgbWFrZXMgaXQgZWFzeSB0byBjb21iaW5lIGV4dHJhY3RvcnMuCiAgICogY29tYmluZUV4dHJhY3RvcnMoKSBkb2VzIHRoZSB3b3JrIG9mIGNvbWJpbmluZyB0aGVtLCBrZWVwaW5nIHRyYWNrIG9mIHRoZSBjdXJzb3IgdGhyb3VnaCBtdWx0aXBsZSBleHRyYWN0aW9ucy4KICAgKiBTb21lIGV4dHJhY3Rpb25zIGFyZSBzdXBlciBkdW1iIGFuZCBzaW1wbGVQYXJzZSBhbmQgZnJvbVN0cmluZ3MgaGVscCBEUlkgdGhlbS4KICAgKi8KCiAgY29uc3QgaWFuYVJlZ2V4ID0gL1tBLVphLXpfKy1dezEsMjU2fSg/Ojo/XC9bQS1aYS16MC05XystXXsxLDI1Nn0oPzpcL1tBLVphLXowLTlfKy1dezEsMjU2fSk/KT8vOwoKICBmdW5jdGlvbiBjb21iaW5lUmVnZXhlcyguLi5yZWdleGVzKSB7CiAgICBjb25zdCBmdWxsID0gcmVnZXhlcy5yZWR1Y2UoKGYsIHIpID0+IGYgKyByLnNvdXJjZSwgIiIpOwogICAgcmV0dXJuIFJlZ0V4cChgXiR7ZnVsbH0kYCk7CiAgfQoKICBmdW5jdGlvbiBjb21iaW5lRXh0cmFjdG9ycyguLi5leHRyYWN0b3JzKSB7CiAgICByZXR1cm4gKG0pID0+CiAgICAgIGV4dHJhY3RvcnMKICAgICAgICAucmVkdWNlKAogICAgICAgICAgKFttZXJnZWRWYWxzLCBtZXJnZWRab25lLCBjdXJzb3JdLCBleCkgPT4gewogICAgICAgICAgICBjb25zdCBbdmFsLCB6b25lLCBuZXh0XSA9IGV4KG0sIGN1cnNvcik7CiAgICAgICAgICAgIHJldHVybiBbeyAuLi5tZXJnZWRWYWxzLCAuLi52YWwgfSwgem9uZSB8fCBtZXJnZWRab25lLCBuZXh0XTsKICAgICAgICAgIH0sCiAgICAgICAgICBbe30sIG51bGwsIDFdCiAgICAgICAgKQogICAgICAgIC5zbGljZSgwLCAyKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlKHMsIC4uLnBhdHRlcm5zKSB7CiAgICBpZiAocyA9PSBudWxsKSB7CiAgICAgIHJldHVybiBbbnVsbCwgbnVsbF07CiAgICB9CgogICAgZm9yIChjb25zdCBbcmVnZXgsIGV4dHJhY3Rvcl0gb2YgcGF0dGVybnMpIHsKICAgICAgY29uc3QgbSA9IHJlZ2V4LmV4ZWMocyk7CiAgICAgIGlmIChtKSB7CiAgICAgICAgcmV0dXJuIGV4dHJhY3RvcihtKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIFtudWxsLCBudWxsXTsKICB9CgogIGZ1bmN0aW9uIHNpbXBsZVBhcnNlKC4uLmtleXMpIHsKICAgIHJldHVybiAobWF0Y2gsIGN1cnNvcikgPT4gewogICAgICBjb25zdCByZXQgPSB7fTsKICAgICAgbGV0IGk7CgogICAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykgewogICAgICAgIHJldFtrZXlzW2ldXSA9IHBhcnNlSW50ZWdlcihtYXRjaFtjdXJzb3IgKyBpXSk7CiAgICAgIH0KICAgICAgcmV0dXJuIFtyZXQsIG51bGwsIGN1cnNvciArIGldOwogICAgfTsKICB9CgogIC8vIElTTyBhbmQgU1FMIHBhcnNpbmcKICBjb25zdCBvZmZzZXRSZWdleCA9IC8oPzooWil8KFsrLV1cZFxkKSg/Ojo/KFxkXGQpKT8pLzsKICBjb25zdCBpc29FeHRlbmRlZFpvbmUgPSBgKD86JHtvZmZzZXRSZWdleC5zb3VyY2V9Pyg/OlxcWygke2lhbmFSZWdleC5zb3VyY2V9KVxcXSk/KT9gOwogIGNvbnN0IGlzb1RpbWVCYXNlUmVnZXggPSAvKFxkXGQpKD86Oj8oXGRcZCkoPzo6PyhcZFxkKSg/OlsuLF0oXGR7MSwzMH0pKT8pPyk/LzsKICBjb25zdCBpc29UaW1lUmVnZXggPSBSZWdFeHAoYCR7aXNvVGltZUJhc2VSZWdleC5zb3VyY2V9JHtpc29FeHRlbmRlZFpvbmV9YCk7CiAgY29uc3QgaXNvVGltZUV4dGVuc2lvblJlZ2V4ID0gUmVnRXhwKGAoPzpUJHtpc29UaW1lUmVnZXguc291cmNlfSk/YCk7CiAgY29uc3QgaXNvWW1kUmVnZXggPSAvKFsrLV1cZHs2fXxcZHs0fSkoPzotPyhcZFxkKSg/Oi0/KFxkXGQpKT8pPy87CiAgY29uc3QgaXNvV2Vla1JlZ2V4ID0gLyhcZHs0fSktP1coXGRcZCkoPzotPyhcZCkpPy87CiAgY29uc3QgaXNvT3JkaW5hbFJlZ2V4ID0gLyhcZHs0fSktPyhcZHszfSkvOwogIGNvbnN0IGV4dHJhY3RJU09XZWVrRGF0YSA9IHNpbXBsZVBhcnNlKCJ3ZWVrWWVhciIsICJ3ZWVrTnVtYmVyIiwgIndlZWtEYXkiKTsKICBjb25zdCBleHRyYWN0SVNPT3JkaW5hbERhdGEgPSBzaW1wbGVQYXJzZSgieWVhciIsICJvcmRpbmFsIik7CiAgY29uc3Qgc3FsWW1kUmVnZXggPSAvKFxkezR9KS0oXGRcZCktKFxkXGQpLzsgLy8gZHVtYmVkLWRvd24gdmVyc2lvbiBvZiB0aGUgSVNPIG9uZQogIGNvbnN0IHNxbFRpbWVSZWdleCA9IFJlZ0V4cCgKICAgIGAke2lzb1RpbWVCYXNlUmVnZXguc291cmNlfSA/KD86JHtvZmZzZXRSZWdleC5zb3VyY2V9fCgke2lhbmFSZWdleC5zb3VyY2V9KSk/YAogICk7CiAgY29uc3Qgc3FsVGltZUV4dGVuc2lvblJlZ2V4ID0gUmVnRXhwKGAoPzogJHtzcWxUaW1lUmVnZXguc291cmNlfSk/YCk7CgogIGZ1bmN0aW9uIGludChtYXRjaCwgcG9zLCBmYWxsYmFjaykgewogICAgY29uc3QgbSA9IG1hdGNoW3Bvc107CiAgICByZXR1cm4gaXNVbmRlZmluZWQobSkgPyBmYWxsYmFjayA6IHBhcnNlSW50ZWdlcihtKTsKICB9CgogIGZ1bmN0aW9uIGV4dHJhY3RJU09ZbWQobWF0Y2gsIGN1cnNvcikgewogICAgY29uc3QgaXRlbSA9IHsKICAgICAgeWVhcjogaW50KG1hdGNoLCBjdXJzb3IpLAogICAgICBtb250aDogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAxKSwKICAgICAgZGF5OiBpbnQobWF0Y2gsIGN1cnNvciArIDIsIDEpLAogICAgfTsKCiAgICByZXR1cm4gW2l0ZW0sIG51bGwsIGN1cnNvciArIDNdOwogIH0KCiAgZnVuY3Rpb24gZXh0cmFjdElTT1RpbWUobWF0Y2gsIGN1cnNvcikgewogICAgY29uc3QgaXRlbSA9IHsKICAgICAgaG91cnM6IGludChtYXRjaCwgY3Vyc29yLCAwKSwKICAgICAgbWludXRlczogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAwKSwKICAgICAgc2Vjb25kczogaW50KG1hdGNoLCBjdXJzb3IgKyAyLCAwKSwKICAgICAgbWlsbGlzZWNvbmRzOiBwYXJzZU1pbGxpcyhtYXRjaFtjdXJzb3IgKyAzXSksCiAgICB9OwoKICAgIHJldHVybiBbaXRlbSwgbnVsbCwgY3Vyc29yICsgNF07CiAgfQoKICBmdW5jdGlvbiBleHRyYWN0SVNPT2Zmc2V0KG1hdGNoLCBjdXJzb3IpIHsKICAgIGNvbnN0IGxvY2FsID0gIW1hdGNoW2N1cnNvcl0gJiYgIW1hdGNoW2N1cnNvciArIDFdLAogICAgICBmdWxsT2Zmc2V0ID0gc2lnbmVkT2Zmc2V0KG1hdGNoW2N1cnNvciArIDFdLCBtYXRjaFtjdXJzb3IgKyAyXSksCiAgICAgIHpvbmUgPSBsb2NhbCA/IG51bGwgOiBGaXhlZE9mZnNldFpvbmUuaW5zdGFuY2UoZnVsbE9mZnNldCk7CiAgICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAzXTsKICB9CgogIGZ1bmN0aW9uIGV4dHJhY3RJQU5BWm9uZShtYXRjaCwgY3Vyc29yKSB7CiAgICBjb25zdCB6b25lID0gbWF0Y2hbY3Vyc29yXSA/IElBTkFab25lLmNyZWF0ZShtYXRjaFtjdXJzb3JdKSA6IG51bGw7CiAgICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAxXTsKICB9CgogIC8vIElTTyB0aW1lIHBhcnNpbmcKCiAgY29uc3QgaXNvVGltZU9ubHkgPSBSZWdFeHAoYF5UPyR7aXNvVGltZUJhc2VSZWdleC5zb3VyY2V9JGApOwoKICAvLyBJU08gZHVyYXRpb24gcGFyc2luZwoKICBjb25zdCBpc29EdXJhdGlvbiA9CiAgICAvXi0/UCg/Oig/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KVkpPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KU0pPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KVcpPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KUQpPyg/OlQoPzooLT9cZHsxLDIwfSg/OlwuXGR7MSwyMH0pPylIKT8oPzooLT9cZHsxLDIwfSg/OlwuXGR7MSwyMH0pPylNKT8oPzooLT9cZHsxLDIwfSkoPzpbLixdKC0/XGR7MSwyMH0pKT9TKT8pPykkLzsKCiAgZnVuY3Rpb24gZXh0cmFjdElTT0R1cmF0aW9uKG1hdGNoKSB7CiAgICBjb25zdCBbcywgeWVhclN0ciwgbW9udGhTdHIsIHdlZWtTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIsIG1pbGxpc2Vjb25kc1N0cl0gPQogICAgICBtYXRjaDsKCiAgICBjb25zdCBoYXNOZWdhdGl2ZVByZWZpeCA9IHNbMF0gPT09ICItIjsKICAgIGNvbnN0IG5lZ2F0aXZlU2Vjb25kcyA9IHNlY29uZFN0ciAmJiBzZWNvbmRTdHJbMF0gPT09ICItIjsKCiAgICBjb25zdCBtYXliZU5lZ2F0ZSA9IChudW0sIGZvcmNlID0gZmFsc2UpID0+CiAgICAgIG51bSAhPT0gdW5kZWZpbmVkICYmIChmb3JjZSB8fCAobnVtICYmIGhhc05lZ2F0aXZlUHJlZml4KSkgPyAtbnVtIDogbnVtOwoKICAgIHJldHVybiBbCiAgICAgIHsKICAgICAgICB5ZWFyczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyh5ZWFyU3RyKSksCiAgICAgICAgbW9udGhzOiBtYXliZU5lZ2F0ZShwYXJzZUZsb2F0aW5nKG1vbnRoU3RyKSksCiAgICAgICAgd2Vla3M6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcod2Vla1N0cikpLAogICAgICAgIGRheXM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoZGF5U3RyKSksCiAgICAgICAgaG91cnM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoaG91clN0cikpLAogICAgICAgIG1pbnV0ZXM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcobWludXRlU3RyKSksCiAgICAgICAgc2Vjb25kczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyhzZWNvbmRTdHIpLCBzZWNvbmRTdHIgPT09ICItMCIpLAogICAgICAgIG1pbGxpc2Vjb25kczogbWF5YmVOZWdhdGUocGFyc2VNaWxsaXMobWlsbGlzZWNvbmRzU3RyKSwgbmVnYXRpdmVTZWNvbmRzKSwKICAgICAgfSwKICAgIF07CiAgfQoKICAvLyBUaGVzZSBhcmUgYSBsaXR0bGUgYnJhaW5kZWFkLiBFRFQgKnNob3VsZCogdGVsbCB1cyB0aGF0IHdlJ3JlIGluLCBzYXksIEFtZXJpY2EvTmV3X1lvcmsKICAvLyBhbmQgbm90IGp1c3QgdGhhdCB3ZSdyZSBpbiAtMjQwICpyaWdodCBub3cqLiBCdXQgc2luY2UgSSBkb24ndCB0aGluayB0aGVzZSBhcmUgdXNlZCB0aGF0IG9mdGVuCiAgLy8gSSdtIGp1c3QgZ29pbmcgdG8gaWdub3JlIHRoYXQKICBjb25zdCBvYnNPZmZzZXRzID0gewogICAgR01UOiAwLAogICAgRURUOiAtNCAqIDYwLAogICAgRVNUOiAtNSAqIDYwLAogICAgQ0RUOiAtNSAqIDYwLAogICAgQ1NUOiAtNiAqIDYwLAogICAgTURUOiAtNiAqIDYwLAogICAgTVNUOiAtNyAqIDYwLAogICAgUERUOiAtNyAqIDYwLAogICAgUFNUOiAtOCAqIDYwLAogIH07CgogIGZ1bmN0aW9uIGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKSB7CiAgICBjb25zdCByZXN1bHQgPSB7CiAgICAgIHllYXI6IHllYXJTdHIubGVuZ3RoID09PSAyID8gdW50cnVuY2F0ZVllYXIocGFyc2VJbnRlZ2VyKHllYXJTdHIpKSA6IHBhcnNlSW50ZWdlcih5ZWFyU3RyKSwKICAgICAgbW9udGg6IG1vbnRoc1Nob3J0LmluZGV4T2YobW9udGhTdHIpICsgMSwKICAgICAgZGF5OiBwYXJzZUludGVnZXIoZGF5U3RyKSwKICAgICAgaG91cjogcGFyc2VJbnRlZ2VyKGhvdXJTdHIpLAogICAgICBtaW51dGU6IHBhcnNlSW50ZWdlcihtaW51dGVTdHIpLAogICAgfTsKCiAgICBpZiAoc2Vjb25kU3RyKSByZXN1bHQuc2Vjb25kID0gcGFyc2VJbnRlZ2VyKHNlY29uZFN0cik7CiAgICBpZiAod2Vla2RheVN0cikgewogICAgICByZXN1bHQud2Vla2RheSA9CiAgICAgICAgd2Vla2RheVN0ci5sZW5ndGggPiAzCiAgICAgICAgICA/IHdlZWtkYXlzTG9uZy5pbmRleE9mKHdlZWtkYXlTdHIpICsgMQogICAgICAgICAgOiB3ZWVrZGF5c1Nob3J0LmluZGV4T2Yod2Vla2RheVN0cikgKyAxOwogICAgfQoKICAgIHJldHVybiByZXN1bHQ7CiAgfQoKICAvLyBSRkMgMjgyMi81MzIyCiAgY29uc3QgcmZjMjgyMiA9CiAgICAvXig/OihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLFxzKT8oXGR7MSwyfSlccyhKYW58RmVifE1hcnxBcHJ8TWF5fEp1bnxKdWx8QXVnfFNlcHxPY3R8Tm92fERlYylccyhcZHsyLDR9KVxzKFxkXGQpOihcZFxkKSg/OjooXGRcZCkpP1xzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfCg/OihbKy1dXGRcZCkoXGRcZCkpKSQvOwoKICBmdW5jdGlvbiBleHRyYWN0UkZDMjgyMihtYXRjaCkgewogICAgY29uc3QgWwogICAgICAgICwKICAgICAgICB3ZWVrZGF5U3RyLAogICAgICAgIGRheVN0ciwKICAgICAgICBtb250aFN0ciwKICAgICAgICB5ZWFyU3RyLAogICAgICAgIGhvdXJTdHIsCiAgICAgICAgbWludXRlU3RyLAogICAgICAgIHNlY29uZFN0ciwKICAgICAgICBvYnNPZmZzZXQsCiAgICAgICAgbWlsT2Zmc2V0LAogICAgICAgIG9mZkhvdXJTdHIsCiAgICAgICAgb2ZmTWludXRlU3RyLAogICAgICBdID0gbWF0Y2gsCiAgICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTsKCiAgICBsZXQgb2Zmc2V0OwogICAgaWYgKG9ic09mZnNldCkgewogICAgICBvZmZzZXQgPSBvYnNPZmZzZXRzW29ic09mZnNldF07CiAgICB9IGVsc2UgaWYgKG1pbE9mZnNldCkgewogICAgICBvZmZzZXQgPSAwOwogICAgfSBlbHNlIHsKICAgICAgb2Zmc2V0ID0gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cik7CiAgICB9CgogICAgcmV0dXJuIFtyZXN1bHQsIG5ldyBGaXhlZE9mZnNldFpvbmUob2Zmc2V0KV07CiAgfQoKICBmdW5jdGlvbiBwcmVwcm9jZXNzUkZDMjgyMihzKSB7CiAgICAvLyBSZW1vdmUgY29tbWVudHMgYW5kIGZvbGRpbmcgd2hpdGVzcGFjZSBhbmQgcmVwbGFjZSBtdWx0aXBsZS1zcGFjZXMgd2l0aCBhIHNpbmdsZSBzcGFjZQogICAgcmV0dXJuIHMKICAgICAgLnJlcGxhY2UoL1woW14oKV0qXCl8W1xuXHRdL2csICIgIikKICAgICAgLnJlcGxhY2UoLyhcc1xzKykvZywgIiAiKQogICAgICAudHJpbSgpOwogIH0KCiAgLy8gaHR0cCBkYXRlCgogIGNvbnN0IHJmYzExMjMgPQogICAgICAvXihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLCAoXGRcZCkgKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKSAoXGR7NH0pIChcZFxkKTooXGRcZCk6KFxkXGQpIEdNVCQvLAogICAgcmZjODUwID0KICAgICAgL14oTW9uZGF5fFR1ZXNkYXl8V2VkbmVzZGF5fFRodXJzZGF5fEZyaWRheXxTYXR1cmRheXxTdW5kYXkpLCAoXGRcZCktKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKS0oXGRcZCkgKFxkXGQpOihcZFxkKTooXGRcZCkgR01UJC8sCiAgICBhc2NpaSA9CiAgICAgIC9eKE1vbnxUdWV8V2VkfFRodXxGcml8U2F0fFN1bikgKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKSAoIFxkfFxkXGQpIChcZFxkKTooXGRcZCk6KFxkXGQpIChcZHs0fSkkLzsKCiAgZnVuY3Rpb24gZXh0cmFjdFJGQzExMjNPcjg1MChtYXRjaCkgewogICAgY29uc3QgWywgd2Vla2RheVN0ciwgZGF5U3RyLCBtb250aFN0ciwgeWVhclN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHJdID0gbWF0Y2gsCiAgICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTsKICAgIHJldHVybiBbcmVzdWx0LCBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2VdOwogIH0KCiAgZnVuY3Rpb24gZXh0cmFjdEFTQ0lJKG1hdGNoKSB7CiAgICBjb25zdCBbLCB3ZWVrZGF5U3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0ciwgeWVhclN0cl0gPSBtYXRjaCwKICAgICAgcmVzdWx0ID0gZnJvbVN0cmluZ3Mod2Vla2RheVN0ciwgeWVhclN0ciwgbW9udGhTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIpOwogICAgcmV0dXJuIFtyZXN1bHQsIEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZV07CiAgfQoKICBjb25zdCBpc29ZbWRXaXRoVGltZUV4dGVuc2lvblJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoaXNvWW1kUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvV2Vla1dpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29XZWVrUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvT3JkaW5hbFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29PcmRpbmFsUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvVGltZUNvbWJpbmVkUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29UaW1lUmVnZXgpOwoKICBjb25zdCBleHRyYWN0SVNPWW1kVGltZUFuZE9mZnNldCA9IGNvbWJpbmVFeHRyYWN0b3JzKAogICAgZXh0cmFjdElTT1ltZCwKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CiAgY29uc3QgZXh0cmFjdElTT1dlZWtUaW1lQW5kT2Zmc2V0ID0gY29tYmluZUV4dHJhY3RvcnMoCiAgICBleHRyYWN0SVNPV2Vla0RhdGEsCiAgICBleHRyYWN0SVNPVGltZSwKICAgIGV4dHJhY3RJU09PZmZzZXQsCiAgICBleHRyYWN0SUFOQVpvbmUKICApOwogIGNvbnN0IGV4dHJhY3RJU09PcmRpbmFsRGF0ZUFuZFRpbWUgPSBjb21iaW5lRXh0cmFjdG9ycygKICAgIGV4dHJhY3RJU09PcmRpbmFsRGF0YSwKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CiAgY29uc3QgZXh0cmFjdElTT1RpbWVBbmRPZmZzZXQgPSBjb21iaW5lRXh0cmFjdG9ycygKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CgogIC8qCiAgICogQHByaXZhdGUKICAgKi8KCiAgZnVuY3Rpb24gcGFyc2VJU09EYXRlKHMpIHsKICAgIHJldHVybiBwYXJzZSgKICAgICAgcywKICAgICAgW2lzb1ltZFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09ZbWRUaW1lQW5kT2Zmc2V0XSwKICAgICAgW2lzb1dlZWtXaXRoVGltZUV4dGVuc2lvblJlZ2V4LCBleHRyYWN0SVNPV2Vla1RpbWVBbmRPZmZzZXRdLAogICAgICBbaXNvT3JkaW5hbFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09PcmRpbmFsRGF0ZUFuZFRpbWVdLAogICAgICBbaXNvVGltZUNvbWJpbmVkUmVnZXgsIGV4dHJhY3RJU09UaW1lQW5kT2Zmc2V0XQogICAgKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlUkZDMjgyMkRhdGUocykgewogICAgcmV0dXJuIHBhcnNlKHByZXByb2Nlc3NSRkMyODIyKHMpLCBbcmZjMjgyMiwgZXh0cmFjdFJGQzI4MjJdKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlSFRUUERhdGUocykgewogICAgcmV0dXJuIHBhcnNlKAogICAgICBzLAogICAgICBbcmZjMTEyMywgZXh0cmFjdFJGQzExMjNPcjg1MF0sCiAgICAgIFtyZmM4NTAsIGV4dHJhY3RSRkMxMTIzT3I4NTBdLAogICAgICBbYXNjaWksIGV4dHJhY3RBU0NJSV0KICAgICk7CiAgfQoKICBmdW5jdGlvbiBwYXJzZUlTT0R1cmF0aW9uKHMpIHsKICAgIHJldHVybiBwYXJzZShzLCBbaXNvRHVyYXRpb24sIGV4dHJhY3RJU09EdXJhdGlvbl0pOwogIH0KCiAgY29uc3QgZXh0cmFjdElTT1RpbWVPbmx5ID0gY29tYmluZUV4dHJhY3RvcnMoZXh0cmFjdElTT1RpbWUpOwoKICBmdW5jdGlvbiBwYXJzZUlTT1RpbWVPbmx5KHMpIHsKICAgIHJldHVybiBwYXJzZShzLCBbaXNvVGltZU9ubHksIGV4dHJhY3RJU09UaW1lT25seV0pOwogIH0KCiAgY29uc3Qgc3FsWW1kV2l0aFRpbWVFeHRlbnNpb25SZWdleCA9IGNvbWJpbmVSZWdleGVzKHNxbFltZFJlZ2V4LCBzcWxUaW1lRXh0ZW5zaW9uUmVnZXgpOwogIGNvbnN0IHNxbFRpbWVDb21iaW5lZFJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoc3FsVGltZVJlZ2V4KTsKCiAgY29uc3QgZXh0cmFjdElTT1RpbWVPZmZzZXRBbmRJQU5BWm9uZSA9IGNvbWJpbmVFeHRyYWN0b3JzKAogICAgZXh0cmFjdElTT1RpbWUsCiAgICBleHRyYWN0SVNPT2Zmc2V0LAogICAgZXh0cmFjdElBTkFab25lCiAgKTsKCiAgZnVuY3Rpb24gcGFyc2VTUUwocykgewogICAgcmV0dXJuIHBhcnNlKAogICAgICBzLAogICAgICBbc3FsWW1kV2l0aFRpbWVFeHRlbnNpb25SZWdleCwgZXh0cmFjdElTT1ltZFRpbWVBbmRPZmZzZXRdLAogICAgICBbc3FsVGltZUNvbWJpbmVkUmVnZXgsIGV4dHJhY3RJU09UaW1lT2Zmc2V0QW5kSUFOQVpvbmVdCiAgICApOwogIH0KCiAgY29uc3QgSU5WQUxJRCQyID0gIkludmFsaWQgRHVyYXRpb24iOwoKICAvLyB1bml0IGNvbnZlcnNpb24gY29uc3RhbnRzCiAgY29uc3QgbG93T3JkZXJNYXRyaXggPSB7CiAgICAgIHdlZWtzOiB7CiAgICAgICAgZGF5czogNywKICAgICAgICBob3VyczogNyAqIDI0LAogICAgICAgIG1pbnV0ZXM6IDcgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDcgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiA3ICogMjQgKiA2MCAqIDYwICogMTAwMCwKICAgICAgfSwKICAgICAgZGF5czogewogICAgICAgIGhvdXJzOiAyNCwKICAgICAgICBtaW51dGVzOiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDI0ICogNjAgKiA2MCwKICAgICAgICBtaWxsaXNlY29uZHM6IDI0ICogNjAgKiA2MCAqIDEwMDAsCiAgICAgIH0sCiAgICAgIGhvdXJzOiB7IG1pbnV0ZXM6IDYwLCBzZWNvbmRzOiA2MCAqIDYwLCBtaWxsaXNlY29uZHM6IDYwICogNjAgKiAxMDAwIH0sCiAgICAgIG1pbnV0ZXM6IHsgc2Vjb25kczogNjAsIG1pbGxpc2Vjb25kczogNjAgKiAxMDAwIH0sCiAgICAgIHNlY29uZHM6IHsgbWlsbGlzZWNvbmRzOiAxMDAwIH0sCiAgICB9LAogICAgY2FzdWFsTWF0cml4ID0gewogICAgICB5ZWFyczogewogICAgICAgIHF1YXJ0ZXJzOiA0LAogICAgICAgIG1vbnRoczogMTIsCiAgICAgICAgd2Vla3M6IDUyLAogICAgICAgIGRheXM6IDM2NSwKICAgICAgICBob3VyczogMzY1ICogMjQsCiAgICAgICAgbWludXRlczogMzY1ICogMjQgKiA2MCwKICAgICAgICBzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBxdWFydGVyczogewogICAgICAgIG1vbnRoczogMywKICAgICAgICB3ZWVrczogMTMsCiAgICAgICAgZGF5czogOTEsCiAgICAgICAgaG91cnM6IDkxICogMjQsCiAgICAgICAgbWludXRlczogOTEgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDkxICogMjQgKiA2MCAqIDYwLAogICAgICAgIG1pbGxpc2Vjb25kczogOTEgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBtb250aHM6IHsKICAgICAgICB3ZWVrczogNCwKICAgICAgICBkYXlzOiAzMCwKICAgICAgICBob3VyczogMzAgKiAyNCwKICAgICAgICBtaW51dGVzOiAzMCAqIDI0ICogNjAsCiAgICAgICAgc2Vjb25kczogMzAgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAzMCAqIDI0ICogNjAgKiA2MCAqIDEwMDAsCiAgICAgIH0sCgogICAgICAuLi5sb3dPcmRlck1hdHJpeCwKICAgIH0sCiAgICBkYXlzSW5ZZWFyQWNjdXJhdGUgPSAxNDYwOTcuMCAvIDQwMCwKICAgIGRheXNJbk1vbnRoQWNjdXJhdGUgPSAxNDYwOTcuMCAvIDQ4MDAsCiAgICBhY2N1cmF0ZU1hdHJpeCA9IHsKICAgICAgeWVhcnM6IHsKICAgICAgICBxdWFydGVyczogNCwKICAgICAgICBtb250aHM6IDEyLAogICAgICAgIHdlZWtzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgLyA3LAogICAgICAgIGRheXM6IGRheXNJblllYXJBY2N1cmF0ZSwKICAgICAgICBob3VyczogZGF5c0luWWVhckFjY3VyYXRlICogMjQsCiAgICAgICAgbWludXRlczogZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCwKICAgICAgICBzZWNvbmRzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBxdWFydGVyczogewogICAgICAgIG1vbnRoczogMywKICAgICAgICB3ZWVrczogZGF5c0luWWVhckFjY3VyYXRlIC8gMjgsCiAgICAgICAgZGF5czogZGF5c0luWWVhckFjY3VyYXRlIC8gNCwKICAgICAgICBob3VyczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0KSAvIDQsCiAgICAgICAgbWludXRlczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0ICogNjApIC8gNCwKICAgICAgICBzZWNvbmRzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwKSAvIDQsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCkgLyA0LAogICAgICB9LAogICAgICBtb250aHM6IHsKICAgICAgICB3ZWVrczogZGF5c0luTW9udGhBY2N1cmF0ZSAvIDcsCiAgICAgICAgZGF5czogZGF5c0luTW9udGhBY2N1cmF0ZSwKICAgICAgICBob3VyczogZGF5c0luTW9udGhBY2N1cmF0ZSAqIDI0LAogICAgICAgIG1pbnV0ZXM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiBkYXlzSW5Nb250aEFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCwKICAgICAgfSwKICAgICAgLi4ubG93T3JkZXJNYXRyaXgsCiAgICB9OwoKICAvLyB1bml0cyBvcmRlcmVkIGJ5IHNpemUKICBjb25zdCBvcmRlcmVkVW5pdHMkMSA9IFsKICAgICJ5ZWFycyIsCiAgICAicXVhcnRlcnMiLAogICAgIm1vbnRocyIsCiAgICAid2Vla3MiLAogICAgImRheXMiLAogICAgImhvdXJzIiwKICAgICJtaW51dGVzIiwKICAgICJzZWNvbmRzIiwKICAgICJtaWxsaXNlY29uZHMiLAogIF07CgogIGNvbnN0IHJldmVyc2VVbml0cyA9IG9yZGVyZWRVbml0cyQxLnNsaWNlKDApLnJldmVyc2UoKTsKCiAgLy8gY2xvbmUgcmVhbGx5IG1lYW5zICJjcmVhdGUgYW5vdGhlciBpbnN0YW5jZSBqdXN0IGxpa2UgdGhpcyBvbmUsIGJ1dCB3aXRoIHRoZXNlIGNoYW5nZXMiCiAgZnVuY3Rpb24gY2xvbmUkMShkdXIsIGFsdHMsIGNsZWFyID0gZmFsc2UpIHsKICAgIC8vIGRlZXAgbWVyZ2UgZm9yIHZhbHMKICAgIGNvbnN0IGNvbmYgPSB7CiAgICAgIHZhbHVlczogY2xlYXIgPyBhbHRzLnZhbHVlcyA6IHsgLi4uZHVyLnZhbHVlcywgLi4uKGFsdHMudmFsdWVzIHx8IHt9KSB9LAogICAgICBsb2M6IGR1ci5sb2MuY2xvbmUoYWx0cy5sb2MpLAogICAgICBjb252ZXJzaW9uQWNjdXJhY3k6IGFsdHMuY29udmVyc2lvbkFjY3VyYWN5IHx8IGR1ci5jb252ZXJzaW9uQWNjdXJhY3ksCiAgICAgIG1hdHJpeDogYWx0cy5tYXRyaXggfHwgZHVyLm1hdHJpeCwKICAgIH07CiAgICByZXR1cm4gbmV3IER1cmF0aW9uKGNvbmYpOwogIH0KCiAgZnVuY3Rpb24gZHVyYXRpb25Ub01pbGxpcyhtYXRyaXgsIHZhbHMpIHsKICAgIGxldCBzdW0gPSB2YWxzLm1pbGxpc2Vjb25kcyA/PyAwOwogICAgZm9yIChjb25zdCB1bml0IG9mIHJldmVyc2VVbml0cy5zbGljZSgxKSkgewogICAgICBpZiAodmFsc1t1bml0XSkgewogICAgICAgIHN1bSArPSB2YWxzW3VuaXRdICogbWF0cml4W3VuaXRdWyJtaWxsaXNlY29uZHMiXTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHN1bTsKICB9CgogIC8vIE5COiBtdXRhdGVzIHBhcmFtZXRlcnMKICBmdW5jdGlvbiBub3JtYWxpemVWYWx1ZXMobWF0cml4LCB2YWxzKSB7CiAgICAvLyB0aGUgbG9naWMgYmVsb3cgYXNzdW1lcyB0aGUgb3ZlcmFsbCB2YWx1ZSBvZiB0aGUgZHVyYXRpb24gaXMgcG9zaXRpdmUKICAgIC8vIGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCBmYWN0b3IgaXMgdXNlZCB0byBtYWtlIGl0IHNvCiAgICBjb25zdCBmYWN0b3IgPSBkdXJhdGlvblRvTWlsbGlzKG1hdHJpeCwgdmFscykgPCAwID8gLTEgOiAxOwoKICAgIG9yZGVyZWRVbml0cyQxLnJlZHVjZVJpZ2h0KChwcmV2aW91cywgY3VycmVudCkgPT4gewogICAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbHNbY3VycmVudF0pKSB7CiAgICAgICAgaWYgKHByZXZpb3VzKSB7CiAgICAgICAgICBjb25zdCBwcmV2aW91c1ZhbCA9IHZhbHNbcHJldmlvdXNdICogZmFjdG9yOwogICAgICAgICAgY29uc3QgY29udiA9IG1hdHJpeFtjdXJyZW50XVtwcmV2aW91c107CgogICAgICAgICAgLy8gaWYgKHByZXZpb3VzVmFsIDwgMCk6CiAgICAgICAgICAvLyBsb3dlciBvcmRlciB1bml0IGlzIG5lZ2F0aXZlIChlLmcuIHsgeWVhcnM6IDIsIGRheXM6IC0yIH0pCiAgICAgICAgICAvLyBub3JtYWxpemUgdGhpcyBieSByZWR1Y2luZyB0aGUgaGlnaGVyIG9yZGVyIHVuaXQgYnkgdGhlIGFwcHJvcHJpYXRlIGFtb3VudAogICAgICAgICAgLy8gYW5kIGluY3JlYXNpbmcgdGhlIGxvd2VyIG9yZGVyIHVuaXQKICAgICAgICAgIC8vIHRoaXMgY2FuIG5ldmVyIG1ha2UgdGhlIGhpZ2hlciBvcmRlciB1bml0IG5lZ2F0aXZlLCBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gb25seSBvcGVyYXRlcwogICAgICAgICAgLy8gb24gcG9zaXRpdmUgZHVyYXRpb25zLCBzbyB0aGUgYW1vdW50IG9mIHRpbWUgcmVwcmVzZW50ZWQgYnkgdGhlIGxvd2VyIG9yZGVyIHVuaXQgY2Fubm90CiAgICAgICAgICAvLyBiZSBsYXJnZXIgdGhhbiB0aGUgaGlnaGVyIG9yZGVyIHVuaXQKICAgICAgICAgIC8vIGVsc2U6CiAgICAgICAgICAvLyBsb3dlciBvcmRlciB1bml0IGlzIHBvc2l0aXZlIChlLmcuIHsgeWVhcnM6IDIsIGRheXM6IDQ1MCB9IG9yIHsgeWVhcnM6IC0yLCBkYXlzOiA0NTAgfSkKICAgICAgICAgIC8vIGluIHRoaXMgY2FzZSB3ZSBhdHRlbXB0IHRvIGNvbnZlcnQgYXMgbXVjaCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBsb3dlciBvcmRlciB1bml0IGludG8KICAgICAgICAgIC8vIHRoZSBoaWdoZXIgb3JkZXIgb25lCiAgICAgICAgICAvLwogICAgICAgICAgLy8gTWF0aC5mbG9vciB0YWtlcyBjYXJlIG9mIGJvdGggb2YgdGhlc2UgY2FzZXMsIHJvdW5kaW5nIGF3YXkgZnJvbSAwCiAgICAgICAgICAvLyBpZiBwcmV2aW91c1ZhbCA8IDAgaXQgbWFrZXMgdGhlIGFic29sdXRlIHZhbHVlIGxhcmdlcgogICAgICAgICAgLy8gaWYgcHJldmlvdXNWYWwgPj0gaXQgbWFrZXMgdGhlIGFic29sdXRlIHZhbHVlIHNtYWxsZXIKICAgICAgICAgIGNvbnN0IHJvbGxVcCA9IE1hdGguZmxvb3IocHJldmlvdXNWYWwgLyBjb252KTsKICAgICAgICAgIHZhbHNbY3VycmVudF0gKz0gcm9sbFVwICogZmFjdG9yOwogICAgICAgICAgdmFsc1twcmV2aW91c10gLT0gcm9sbFVwICogY29udiAqIGZhY3RvcjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHByZXZpb3VzOwogICAgICB9CiAgICB9LCBudWxsKTsKCiAgICAvLyB0cnkgdG8gY29udmVydCBhbnkgZGVjaW1hbHMgaW50byBzbWFsbGVyIHVuaXRzIGlmIHBvc3NpYmxlCiAgICAvLyBmb3IgZXhhbXBsZSBmb3IgeyB5ZWFyczogMi41LCBkYXlzOiAwLCBzZWNvbmRzOiAwIH0gd2Ugd2FudCB0byBnZXQgeyB5ZWFyczogMiwgZGF5czogMTgyLCBob3VyczogMTIgfQogICAgb3JkZXJlZFVuaXRzJDEucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4gewogICAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbHNbY3VycmVudF0pKSB7CiAgICAgICAgaWYgKHByZXZpb3VzKSB7CiAgICAgICAgICBjb25zdCBmcmFjdGlvbiA9IHZhbHNbcHJldmlvdXNdICUgMTsKICAgICAgICAgIHZhbHNbcHJldmlvdXNdIC09IGZyYWN0aW9uOwogICAgICAgICAgdmFsc1tjdXJyZW50XSArPSBmcmFjdGlvbiAqIG1hdHJpeFtwcmV2aW91c11bY3VycmVudF07CiAgICAgICAgfQogICAgICAgIHJldHVybiBjdXJyZW50OwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBwcmV2aW91czsKICAgICAgfQogICAgfSwgbnVsbCk7CiAgfQoKICAvLyBSZW1vdmUgYWxsIHByb3BlcnRpZXMgd2l0aCBhIHZhbHVlIG9mIDAgZnJvbSBhbiBvYmplY3QKICBmdW5jdGlvbiByZW1vdmVaZXJvZXModmFscykgewogICAgY29uc3QgbmV3VmFscyA9IHt9OwogICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFscykpIHsKICAgICAgaWYgKHZhbHVlICE9PSAwKSB7CiAgICAgICAgbmV3VmFsc1trZXldID0gdmFsdWU7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBuZXdWYWxzOwogIH0KCiAgLyoqCiAgICogQSBEdXJhdGlvbiBvYmplY3QgcmVwcmVzZW50cyBhIHBlcmlvZCBvZiB0aW1lLCBsaWtlICIyIG1vbnRocyIgb3IgIjEgZGF5LCAxIGhvdXIiLiBDb25jZXB0dWFsbHksIGl0J3MganVzdCBhIG1hcCBvZiB1bml0cyB0byB0aGVpciBxdWFudGl0aWVzLCBhY2NvbXBhbmllZCBieSBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBhbmQgbWV0aG9kcyBmb3IgY3JlYXRpbmcsIHBhcnNpbmcsIGludGVycm9nYXRpbmcsIHRyYW5zZm9ybWluZywgYW5kIGZvcm1hdHRpbmcgdGhlbS4gVGhleSBjYW4gYmUgdXNlZCBvbiB0aGVpciBvd24gb3IgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBMdXhvbiB0eXBlczsgZm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlIHtAbGluayBEYXRlVGltZSNwbHVzfSB0byBhZGQgYSBEdXJhdGlvbiBvYmplY3QgdG8gYSBEYXRlVGltZSwgcHJvZHVjaW5nIGFub3RoZXIgRGF0ZVRpbWUuCiAgICoKICAgKiBIZXJlIGlzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgY29tbW9ubHkgdXNlZCBtZXRob2RzIGFuZCBnZXR0ZXJzIGluIER1cmF0aW9uOgogICAqCiAgICogKiAqKkNyZWF0aW9uKiogVG8gY3JlYXRlIGEgRHVyYXRpb24sIHVzZSB7QGxpbmsgRHVyYXRpb24uZnJvbU1pbGxpc30sIHtAbGluayBEdXJhdGlvbi5mcm9tT2JqZWN0fSwgb3Ige0BsaW5rIER1cmF0aW9uLmZyb21JU099LgogICAqICogKipVbml0IHZhbHVlcyoqIFNlZSB0aGUge0BsaW5rIER1cmF0aW9uI3llYXJzfSwge0BsaW5rIER1cmF0aW9uI21vbnRoc30sIHtAbGluayBEdXJhdGlvbiN3ZWVrc30sIHtAbGluayBEdXJhdGlvbiNkYXlzfSwge0BsaW5rIER1cmF0aW9uI2hvdXJzfSwge0BsaW5rIER1cmF0aW9uI21pbnV0ZXN9LCB7QGxpbmsgRHVyYXRpb24jc2Vjb25kc30sIHtAbGluayBEdXJhdGlvbiNtaWxsaXNlY29uZHN9IGFjY2Vzc29ycy4KICAgKiAqICoqQ29uZmlndXJhdGlvbioqIFNlZSAge0BsaW5rIER1cmF0aW9uI2xvY2FsZX0gYW5kIHtAbGluayBEdXJhdGlvbiNudW1iZXJpbmdTeXN0ZW19IGFjY2Vzc29ycy4KICAgKiAqICoqVHJhbnNmb3JtYXRpb24qKiBUbyBjcmVhdGUgbmV3IER1cmF0aW9ucyBvdXQgb2Ygb2xkIG9uZXMgdXNlIHtAbGluayBEdXJhdGlvbiNwbHVzfSwge0BsaW5rIER1cmF0aW9uI21pbnVzfSwge0BsaW5rIER1cmF0aW9uI25vcm1hbGl6ZX0sIHtAbGluayBEdXJhdGlvbiNzZXR9LCB7QGxpbmsgRHVyYXRpb24jcmVjb25maWd1cmV9LCB7QGxpbmsgRHVyYXRpb24jc2hpZnRUb30sIGFuZCB7QGxpbmsgRHVyYXRpb24jbmVnYXRlfS4KICAgKiAqICoqT3V0cHV0KiogVG8gY29udmVydCB0aGUgRHVyYXRpb24gaW50byBvdGhlciByZXByZXNlbnRhdGlvbnMsIHNlZSB7QGxpbmsgRHVyYXRpb24jYXN9LCB7QGxpbmsgRHVyYXRpb24jdG9JU099LCB7QGxpbmsgRHVyYXRpb24jdG9Gb3JtYXR9LCBhbmQge0BsaW5rIER1cmF0aW9uI3RvSlNPTn0KICAgKgogICAqIFRoZXJlJ3MgYXJlIG1vcmUgbWV0aG9kcyBkb2N1bWVudGVkIGJlbG93LiBJbiBhZGRpdGlvbiwgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gc3VidGxlciB0b3BpY3MgbGlrZSBpbnRlcm5hdGlvbmFsaXphdGlvbiBhbmQgdmFsaWRpdHksIHNlZSB0aGUgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvbi4KICAgKi8KICBjbGFzcyBEdXJhdGlvbiB7CiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKi8KICAgIGNvbnN0cnVjdG9yKGNvbmZpZykgewogICAgICBjb25zdCBhY2N1cmF0ZSA9IGNvbmZpZy5jb252ZXJzaW9uQWNjdXJhY3kgPT09ICJsb25ndGVybSIgfHwgZmFsc2U7CiAgICAgIGxldCBtYXRyaXggPSBhY2N1cmF0ZSA/IGFjY3VyYXRlTWF0cml4IDogY2FzdWFsTWF0cml4OwoKICAgICAgaWYgKGNvbmZpZy5tYXRyaXgpIHsKICAgICAgICBtYXRyaXggPSBjb25maWcubWF0cml4OwogICAgICB9CgogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLnZhbHVlcyA9IGNvbmZpZy52YWx1ZXM7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubG9jID0gY29uZmlnLmxvYyB8fCBMb2NhbGUuY3JlYXRlKCk7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuY29udmVyc2lvbkFjY3VyYWN5ID0gYWNjdXJhdGUgPyAibG9uZ3Rlcm0iIDogImNhc3VhbCI7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuaW52YWxpZCA9IGNvbmZpZy5pbnZhbGlkIHx8IG51bGw7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubWF0cml4ID0gbWF0cml4OwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25EdXJhdGlvbiA9IHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgRHVyYXRpb24gZnJvbSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMuCiAgICAgKiBAcGFyYW0ge251bWJlcn0gY291bnQgb2YgbWlsbGlzZWNvbmRzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIHBhcnNpbmcKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSB0aGUgbG9jYWxlIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbU1pbGxpcyhjb3VudCwgb3B0cykgewogICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbGxpc2Vjb25kczogY291bnQgfSwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEdXJhdGlvbiBmcm9tIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXJzJyBhbmQgJ2hvdXJzJy4KICAgICAqIElmIHRoaXMgb2JqZWN0IGlzIGVtcHR5IHRoZW4gYSB6ZXJvIG1pbGxpc2Vjb25kcyBkdXJhdGlvbiBpcyByZXR1cm5lZC4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogLSB0aGUgb2JqZWN0IHRvIGNyZWF0ZSB0aGUgRGF0ZVRpbWUgZnJvbQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai55ZWFycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5xdWFydGVycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5tb250aHMKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla3MKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouZGF5cwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5ob3VycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taW51dGVzCiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLnNlY29uZHMKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoubWlsbGlzZWNvbmRzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHM9W11dIC0gb3B0aW9ucyBmb3IgY3JlYXRpbmcgdGhpcyBEdXJhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIHByZXNldCBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5tYXRyaXg9T2JqZWN0XSAtIHRoZSBjdXN0b20gY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc3RhdGljIGZyb21PYmplY3Qob2JqLCBvcHRzID0ge30pIHsKICAgICAgaWYgKG9iaiA9PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICJvYmplY3QiKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKAogICAgICAgICAgYER1cmF0aW9uLmZyb21PYmplY3Q6IGFyZ3VtZW50IGV4cGVjdGVkIHRvIGJlIGFuIG9iamVjdCwgZ290ICR7CiAgICAgICAgICBvYmogPT09IG51bGwgPyAibnVsbCIgOiB0eXBlb2Ygb2JqCiAgICAgICAgfWAKICAgICAgICApOwogICAgICB9CgogICAgICByZXR1cm4gbmV3IER1cmF0aW9uKHsKICAgICAgICB2YWx1ZXM6IG5vcm1hbGl6ZU9iamVjdChvYmosIER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpLAogICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0cyksCiAgICAgICAgY29udmVyc2lvbkFjY3VyYWN5OiBvcHRzLmNvbnZlcnNpb25BY2N1cmFjeSwKICAgICAgICBtYXRyaXg6IG9wdHMubWF0cml4LAogICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIER1cmF0aW9uIGZyb20gRHVyYXRpb25MaWtlLgogICAgICoKICAgICAqIEBwYXJhbSB7T2JqZWN0IHwgbnVtYmVyIHwgRHVyYXRpb259IGR1cmF0aW9uTGlrZQogICAgICogT25lIG9mOgogICAgICogLSBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXJzJyBhbmQgJ2hvdXJzJy4KICAgICAqIC0gbnVtYmVyIHJlcHJlc2VudGluZyBtaWxsaXNlY29uZHMKICAgICAqIC0gRHVyYXRpb24gaW5zdGFuY2UKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbkxpa2UpIHsKICAgICAgaWYgKGlzTnVtYmVyKGR1cmF0aW9uTGlrZSkpIHsKICAgICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU1pbGxpcyhkdXJhdGlvbkxpa2UpOwogICAgICB9IGVsc2UgaWYgKER1cmF0aW9uLmlzRHVyYXRpb24oZHVyYXRpb25MaWtlKSkgewogICAgICAgIHJldHVybiBkdXJhdGlvbkxpa2U7CiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGR1cmF0aW9uTGlrZSA9PT0gIm9iamVjdCIpIHsKICAgICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdChkdXJhdGlvbkxpa2UpOwogICAgICB9IGVsc2UgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigKICAgICAgICAgIGBVbmtub3duIGR1cmF0aW9uIGFyZ3VtZW50ICR7ZHVyYXRpb25MaWtlfSBvZiB0eXBlICR7dHlwZW9mIGR1cmF0aW9uTGlrZX1gCiAgICAgICAgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBhbiBJU08gODYwMSBkdXJhdGlvbiBzdHJpbmcuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRleHQgdG8gcGFyc2UKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyBmb3IgcGFyc2luZwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIHByZXNldCBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5tYXRyaXg9T2JqZWN0XSAtIHRoZSBwcmVzZXQgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI0R1cmF0aW9ucwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUDNZNk0xVzREVDEySDMwTTVTJykudG9PYmplY3QoKSAvLz0+IHsgeWVhcnM6IDMsIG1vbnRoczogNiwgd2Vla3M6IDEsIGRheXM6IDQsIGhvdXJzOiAxMiwgbWludXRlczogMzAsIHNlY29uZHM6IDUgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUFQyM0gnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjMgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUDVZM00nKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogNSwgbW9udGhzOiAzIH0KICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbUlTTyh0ZXh0LCBvcHRzKSB7CiAgICAgIGNvbnN0IFtwYXJzZWRdID0gcGFyc2VJU09EdXJhdGlvbih0ZXh0KTsKICAgICAgaWYgKHBhcnNlZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHBhcnNlZCwgb3B0cyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoInVucGFyc2FibGUiLCBgdGhlIGlucHV0ICIke3RleHR9IiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBhbiBJU08gODYwMSB0aW1lIHN0cmluZy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGV4dCB0byBwYXJzZQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIGZvciBwYXJzaW5nCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdlbi1VUyddIC0gdGhlIGxvY2FsZSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgcHJlc2V0IGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm1hdHJpeD1PYmplY3RdIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lcwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJzExOjIyOjMzLjQ0NCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMjIsIHNlY29uZHM6IDMzLCBtaWxsaXNlY29uZHM6IDQ0NCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTE6MDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJ1QxMTowMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTEwMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnVDExMDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tSVNPVGltZSh0ZXh0LCBvcHRzKSB7CiAgICAgIGNvbnN0IFtwYXJzZWRdID0gcGFyc2VJU09UaW1lT25seSh0ZXh0KTsKICAgICAgaWYgKHBhcnNlZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHBhcnNlZCwgb3B0cyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoInVucGFyc2FibGUiLCBgdGhlIGlucHV0ICIke3RleHR9IiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIGludmFsaWQgRHVyYXRpb24uCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBkYXRldGltZSBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4cGxhbmF0aW9uPW51bGxdIC0gbG9uZ2VyIGV4cGxhbmF0aW9uLCBtYXkgaW5jbHVkZSBwYXJhbWV0ZXJzIGFuZCBvdGhlciB1c2VmdWwgZGVidWdnaW5nIGluZm9ybWF0aW9uCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc3RhdGljIGludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbiA9IG51bGwpIHsKICAgICAgaWYgKCFyZWFzb24pIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoIm5lZWQgdG8gc3BlY2lmeSBhIHJlYXNvbiB0aGUgRHVyYXRpb24gaXMgaW52YWxpZCIpOwogICAgICB9CgogICAgICBjb25zdCBpbnZhbGlkID0gcmVhc29uIGluc3RhbmNlb2YgSW52YWxpZCA/IHJlYXNvbiA6IG5ldyBJbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24pOwoKICAgICAgaWYgKFNldHRpbmdzLnRocm93T25JbnZhbGlkKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWREdXJhdGlvbkVycm9yKGludmFsaWQpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRHVyYXRpb24oeyBpbnZhbGlkIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICBzdGF0aWMgbm9ybWFsaXplVW5pdCh1bml0KSB7CiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7CiAgICAgICAgeWVhcjogInllYXJzIiwKICAgICAgICB5ZWFyczogInllYXJzIiwKICAgICAgICBxdWFydGVyOiAicXVhcnRlcnMiLAogICAgICAgIHF1YXJ0ZXJzOiAicXVhcnRlcnMiLAogICAgICAgIG1vbnRoOiAibW9udGhzIiwKICAgICAgICBtb250aHM6ICJtb250aHMiLAogICAgICAgIHdlZWs6ICJ3ZWVrcyIsCiAgICAgICAgd2Vla3M6ICJ3ZWVrcyIsCiAgICAgICAgZGF5OiAiZGF5cyIsCiAgICAgICAgZGF5czogImRheXMiLAogICAgICAgIGhvdXI6ICJob3VycyIsCiAgICAgICAgaG91cnM6ICJob3VycyIsCiAgICAgICAgbWludXRlOiAibWludXRlcyIsCiAgICAgICAgbWludXRlczogIm1pbnV0ZXMiLAogICAgICAgIHNlY29uZDogInNlY29uZHMiLAogICAgICAgIHNlY29uZHM6ICJzZWNvbmRzIiwKICAgICAgICBtaWxsaXNlY29uZDogIm1pbGxpc2Vjb25kcyIsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAibWlsbGlzZWNvbmRzIiwKICAgICAgfVt1bml0ID8gdW5pdC50b0xvd2VyQ2FzZSgpIDogdW5pdF07CgogICAgICBpZiAoIW5vcm1hbGl6ZWQpIHRocm93IG5ldyBJbnZhbGlkVW5pdEVycm9yKHVuaXQpOwoKICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgYSBEdXJhdGlvbi4gV29ya3MgYWNyb3NzIGNvbnRleHQgYm91bmRhcmllcwogICAgICogQHBhcmFtIHtvYmplY3R9IG8KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc0R1cmF0aW9uKG8pIHsKICAgICAgcmV0dXJuIChvICYmIG8uaXNMdXhvbkR1cmF0aW9uKSB8fCBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCAgdGhlIGxvY2FsZSBvZiBhIER1cmF0aW9uLCBzdWNoICdlbi1HQicKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBsb2NhbGUoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5sb2NhbGUgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBudW1iZXJpbmcgc3lzdGVtIG9mIGEgRHVyYXRpb24sIHN1Y2ggJ2JlbmcnLiBUaGUgbnVtYmVyaW5nIHN5c3RlbSBpcyB1c2VkIHdoZW4gZm9ybWF0dGluZyB0aGUgRHVyYXRpb24KICAgICAqCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbnVtYmVyaW5nU3lzdGVtKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbiBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZy4gWW91IG1heSB1c2UgdGhlc2UgdG9rZW5zOgogICAgICogKiBgU2AgZm9yIG1pbGxpc2Vjb25kcwogICAgICogKiBgc2AgZm9yIHNlY29uZHMKICAgICAqICogYG1gIGZvciBtaW51dGVzCiAgICAgKiAqIGBoYCBmb3IgaG91cnMKICAgICAqICogYGRgIGZvciBkYXlzCiAgICAgKiAqIGB3YCBmb3Igd2Vla3MKICAgICAqICogYE1gIGZvciBtb250aHMKICAgICAqICogYHlgIGZvciB5ZWFycwogICAgICogTm90ZXM6CiAgICAgKiAqIEFkZCBwYWRkaW5nIGJ5IHJlcGVhdGluZyB0aGUgdG9rZW4sIGUuZy4gInl5IiBwYWRzIHRoZSB5ZWFycyB0byB0d28gZGlnaXRzLCAiaGhoaCIgcGFkcyB0aGUgaG91cnMgb3V0IHRvIGZvdXIgZGlnaXRzCiAgICAgKiAqIFRva2VucyBjYW4gYmUgZXNjYXBlZCBieSB3cmFwcGluZyB3aXRoIHNpbmdsZSBxdW90ZXMuCiAgICAgKiAqIFRoZSBkdXJhdGlvbiB3aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUgc2V0IG9mIHVuaXRzIGluIHRoZSBmb3JtYXQgc3RyaW5nIHVzaW5nIHtAbGluayBEdXJhdGlvbiNzaGlmdFRvfSBhbmQgdGhlIER1cmF0aW9ucydzIGNvbnZlcnNpb24gYWNjdXJhY3kgc2V0dGluZy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbXQgLSB0aGUgZm9ybWF0IHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmZsb29yPXRydWVdIC0gZmxvb3IgbnVtZXJpY2FsIHZhbHVlcwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KCJ5IGQgcyIpIC8vPT4gIjEgNiAyIgogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KCJ5eSBkZCBzc3MiKSAvLz0+ICIwMSAwNiAwMDIiCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfSkudG9Gb3JtYXQoIk0gUyIpIC8vPT4gIjEyIDUxODQwMjAwMCIKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9Gb3JtYXQoZm10LCBvcHRzID0ge30pIHsKICAgICAgLy8gcmV2ZXJzZS1jb21wYXQgc2luY2UgMS4yOyB3ZSBhbHdheXMgcm91bmQgZG93biBub3csIG5ldmVyIHVwLCBhbmQgd2UgZG8gaXQgYnkgZGVmYXVsdAogICAgICBjb25zdCBmbXRPcHRzID0gewogICAgICAgIC4uLm9wdHMsCiAgICAgICAgZmxvb3I6IG9wdHMucm91bmQgIT09IGZhbHNlICYmIG9wdHMuZmxvb3IgIT09IGZhbHNlLAogICAgICB9OwogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkCiAgICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMubG9jLCBmbXRPcHRzKS5mb3JtYXREdXJhdGlvbkZyb21TdHJpbmcodGhpcywgZm10KQogICAgICAgIDogSU5WQUxJRCQyOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIER1cmF0aW9uIHdpdGggYWxsIHVuaXRzIGluY2x1ZGVkLgogICAgICogVG8gbW9kaWZ5IGl0cyBiZWhhdmlvciB1c2UgdGhlIGBsaXN0U3R5bGVgIGFuZCBhbnkgSW50bC5OdW1iZXJGb3JtYXQgb3B0aW9uLCB0aG91Z2ggYHVuaXREaXNwbGF5YCBpcyBlc3BlY2lhbGx5IHJlbGV2YW50LgogICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9JbnRsL051bWJlckZvcm1hdAogICAgICogQHBhcmFtIG9wdHMgLSBPbiBvcHRpb24gb2JqZWN0IHRvIG92ZXJyaWRlIHRoZSBmb3JtYXR0aW5nLiBBY2NlcHRzIHRoZSBzYW1lIGtleXMgYXMgdGhlIG9wdGlvbnMgcGFyYW1ldGVyIG9mIHRoZSBuYXRpdmUgYEludC5OdW1iZXJGb3JtYXRgIGNvbnN0cnVjdG9yLCBhcyB3ZWxsIGFzIGBsaXN0U3R5bGVgLgogICAgICogQGV4YW1wbGUKICAgICAqIGBgYGpzCiAgICAgKiB2YXIgZHVyID0gRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEsIGhvdXJzOiA1LCBtaW51dGVzOiA2IH0pCiAgICAgKiBkdXIudG9IdW1hbigpIC8vPT4gJzEgZGF5LCA1IGhvdXJzLCA2IG1pbnV0ZXMnCiAgICAgKiBkdXIudG9IdW1hbih7IGxpc3RTdHlsZTogImxvbmciIH0pIC8vPT4gJzEgZGF5LCA1IGhvdXJzLCBhbmQgNiBtaW51dGVzJwogICAgICogZHVyLnRvSHVtYW4oeyB1bml0RGlzcGxheTogInNob3J0IiB9KSAvLz0+ICcxIGRheSwgNSBociwgNiBtaW4nCiAgICAgKiBgYGAKICAgICAqLwogICAgdG9IdW1hbihvcHRzID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEJDI7CgogICAgICBjb25zdCBsID0gb3JkZXJlZFVuaXRzJDEKICAgICAgICAubWFwKCh1bml0KSA9PiB7CiAgICAgICAgICBjb25zdCB2YWwgPSB0aGlzLnZhbHVlc1t1bml0XTsKICAgICAgICAgIGlmIChpc1VuZGVmaW5lZCh2YWwpKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHRoaXMubG9jCiAgICAgICAgICAgIC5udW1iZXJGb3JtYXR0ZXIoeyBzdHlsZTogInVuaXQiLCB1bml0RGlzcGxheTogImxvbmciLCAuLi5vcHRzLCB1bml0OiB1bml0LnNsaWNlKDAsIC0xKSB9KQogICAgICAgICAgICAuZm9ybWF0KHZhbCk7CiAgICAgICAgfSkKICAgICAgICAuZmlsdGVyKChuKSA9PiBuKTsKCiAgICAgIHJldHVybiB0aGlzLmxvYwogICAgICAgIC5saXN0Rm9ybWF0dGVyKHsgdHlwZTogImNvbmp1bmN0aW9uIiwgc3R5bGU6IG9wdHMubGlzdFN0eWxlIHx8ICJuYXJyb3ciLCAuLi5vcHRzIH0pCiAgICAgICAgLmZvcm1hdChsKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIHRoaXMgRHVyYXRpb24ncyB2YWx1ZXMuCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfSkudG9PYmplY3QoKSAvLz0+IHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfQogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICB0b09iamVjdCgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB7fTsKICAgICAgcmV0dXJuIHsgLi4udGhpcy52YWx1ZXMgfTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNEdXJhdGlvbnMKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMywgc2Vjb25kczogNDUgfSkudG9JU08oKSAvLz0+ICdQM1lUNDVTJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogNCwgc2Vjb25kczogNDUgfSkudG9JU08oKSAvLz0+ICdQNE1UNDVTJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogNSB9KS50b0lTTygpIC8vPT4gJ1A1TScKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiA1IH0pLnRvSVNPKCkgLy89PiAnUFQ1TScKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaWxsaXNlY29uZHM6IDYgfSkudG9JU08oKSAvLz0+ICdQVDAuMDA2UycKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU08oKSB7CiAgICAgIC8vIHdlIGNvdWxkIHVzZSB0aGUgZm9ybWF0dGVyLCBidXQgdGhpcyBpcyBhbiBlYXNpZXIgd2F5IHRvIGdldCB0aGUgbWluaW11bSBzdHJpbmcKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsOwoKICAgICAgbGV0IHMgPSAiUCI7CiAgICAgIGlmICh0aGlzLnllYXJzICE9PSAwKSBzICs9IHRoaXMueWVhcnMgKyAiWSI7CiAgICAgIGlmICh0aGlzLm1vbnRocyAhPT0gMCB8fCB0aGlzLnF1YXJ0ZXJzICE9PSAwKSBzICs9IHRoaXMubW9udGhzICsgdGhpcy5xdWFydGVycyAqIDMgKyAiTSI7CiAgICAgIGlmICh0aGlzLndlZWtzICE9PSAwKSBzICs9IHRoaXMud2Vla3MgKyAiVyI7CiAgICAgIGlmICh0aGlzLmRheXMgIT09IDApIHMgKz0gdGhpcy5kYXlzICsgIkQiOwogICAgICBpZiAodGhpcy5ob3VycyAhPT0gMCB8fCB0aGlzLm1pbnV0ZXMgIT09IDAgfHwgdGhpcy5zZWNvbmRzICE9PSAwIHx8IHRoaXMubWlsbGlzZWNvbmRzICE9PSAwKQogICAgICAgIHMgKz0gIlQiOwogICAgICBpZiAodGhpcy5ob3VycyAhPT0gMCkgcyArPSB0aGlzLmhvdXJzICsgIkgiOwogICAgICBpZiAodGhpcy5taW51dGVzICE9PSAwKSBzICs9IHRoaXMubWludXRlcyArICJNIjsKICAgICAgaWYgKHRoaXMuc2Vjb25kcyAhPT0gMCB8fCB0aGlzLm1pbGxpc2Vjb25kcyAhPT0gMCkKICAgICAgICAvLyB0aGlzIHdpbGwgaGFuZGxlICJmbG9hdGluZyBwb2ludCBtYWRuZXNzIiBieSByZW1vdmluZyBleHRyYSBkZWNpbWFsIHBsYWNlcwogICAgICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU4ODAwNC9pcy1mbG9hdGluZy1wb2ludC1tYXRoLWJyb2tlbgogICAgICAgIHMgKz0gcm91bmRUbyh0aGlzLnNlY29uZHMgKyB0aGlzLm1pbGxpc2Vjb25kcyAvIDEwMDAsIDMpICsgIlMiOwogICAgICBpZiAocyA9PT0gIlAiKSBzICs9ICJUMFMiOwogICAgICByZXR1cm4gczsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uLCBmb3JtYXR0ZWQgYXMgYSB0aW1lIG9mIGRheS4KICAgICAqIE5vdGUgdGhhdCB0aGlzIHdpbGwgcmV0dXJuIG51bGwgaWYgdGhlIGR1cmF0aW9uIGlzIGludmFsaWQsIG5lZ2F0aXZlLCBvciBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gMjQgaG91cnMuCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NNaWxsaXNlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBtaWxsaXNlY29uZHMgZnJvbSB0aGUgZm9ybWF0IGlmIHRoZXkncmUgMAogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc1NlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVByZWZpeD1mYWxzZV0gLSBpbmNsdWRlIHRoZSBgVGAgcHJlZml4CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKCkgLy89PiAnMTE6MDA6MDAuMDAwJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBzdXBwcmVzc01pbGxpc2Vjb25kczogdHJ1ZSB9KSAvLz0+ICcxMTowMDowMCcKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKHsgc3VwcHJlc3NTZWNvbmRzOiB0cnVlIH0pIC8vPT4gJzExOjAwJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBpbmNsdWRlUHJlZml4OiB0cnVlIH0pIC8vPT4gJ1QxMTowMDowMC4wMDAnCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcxMTAwMDAuMDAwJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT1RpbWUob3B0cyA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDsKCiAgICAgIGNvbnN0IG1pbGxpcyA9IHRoaXMudG9NaWxsaXMoKTsKICAgICAgaWYgKG1pbGxpcyA8IDAgfHwgbWlsbGlzID49IDg2NDAwMDAwKSByZXR1cm4gbnVsbDsKCiAgICAgIG9wdHMgPSB7CiAgICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHM6IGZhbHNlLAogICAgICAgIHN1cHByZXNzU2Vjb25kczogZmFsc2UsCiAgICAgICAgaW5jbHVkZVByZWZpeDogZmFsc2UsCiAgICAgICAgZm9ybWF0OiAiZXh0ZW5kZWQiLAogICAgICAgIC4uLm9wdHMsCiAgICAgICAgaW5jbHVkZU9mZnNldDogZmFsc2UsCiAgICAgIH07CgogICAgICBjb25zdCBkYXRlVGltZSA9IERhdGVUaW1lLmZyb21NaWxsaXMobWlsbGlzLCB7IHpvbmU6ICJVVEMiIH0pOwogICAgICByZXR1cm4gZGF0ZVRpbWUudG9JU09UaW1lKG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gSlNPTi4KICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9KU09OKCkgewogICAgICByZXR1cm4gdGhpcy50b0lTTygpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gZGVidWdnaW5nLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1N0cmluZygpIHsKICAgICAgcmV0dXJuIHRoaXMudG9JU08oKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gbWlsbGlzZWNvbmRzIHZhbHVlIG9mIHRoaXMgRHVyYXRpb24uCiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHRvTWlsbGlzKCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIE5hTjsKCiAgICAgIHJldHVybiBkdXJhdGlvblRvTWlsbGlzKHRoaXMubWF0cml4LCB0aGlzLnZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIG1pbGxpc2Vjb25kcyB2YWx1ZSBvZiB0aGlzIER1cmF0aW9uLiBBbGlhcyBvZiB7QGxpbmsgdG9NaWxsaXN9CiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHZhbHVlT2YoKSB7CiAgICAgIHJldHVybiB0aGlzLnRvTWlsbGlzKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBNYWtlIHRoaXMgRHVyYXRpb24gbG9uZ2VyIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgYW1vdW50IHRvIGFkZC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KCkKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBwbHVzKGR1cmF0aW9uKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKCiAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pLAogICAgICAgIHJlc3VsdCA9IHt9OwoKICAgICAgZm9yIChjb25zdCBrIG9mIG9yZGVyZWRVbml0cyQxKSB7CiAgICAgICAgaWYgKGhhc093blByb3BlcnR5KGR1ci52YWx1ZXMsIGspIHx8IGhhc093blByb3BlcnR5KHRoaXMudmFsdWVzLCBrKSkgewogICAgICAgICAgcmVzdWx0W2tdID0gZHVyLmdldChrKSArIHRoaXMuZ2V0KGspOwogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgeyB2YWx1ZXM6IHJlc3VsdCB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIE1ha2UgdGhpcyBEdXJhdGlvbiBzaG9ydGVyIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgYW1vdW50IHRvIHN1YnRyYWN0LiBFaXRoZXIgYSBMdXhvbiBEdXJhdGlvbiwgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCB0aGUgb2JqZWN0IGFyZ3VtZW50IHRvIER1cmF0aW9uLmZyb21PYmplY3QoKQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIG1pbnVzKGR1cmF0aW9uKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKCiAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pOwogICAgICByZXR1cm4gdGhpcy5wbHVzKGR1ci5uZWdhdGUoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTY2FsZSB0aGlzIER1cmF0aW9uIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZuIC0gVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggdW5pdC4gQXJpdHkgaXMgMSBvciAyOiB0aGUgdmFsdWUgb2YgdGhlIHVuaXQgYW5kLCBvcHRpb25hbGx5LCB0aGUgdW5pdCBuYW1lLiBNdXN0IHJldHVybiBhIG51bWJlci4KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSwgbWludXRlczogMzAgfSkubWFwVW5pdHMoeCA9PiB4ICogMikgLy89PiB7IGhvdXJzOiAyLCBtaW51dGVzOiA2MCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIG1pbnV0ZXM6IDMwIH0pLm1hcFVuaXRzKCh4LCB1KSA9PiB1ID09PSAiaG91cnMiID8geCAqIDIgOiB4KSAvLz0+IHsgaG91cnM6IDIsIG1pbnV0ZXM6IDMwIH0KICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBtYXBVbml0cyhmbikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHJlc3VsdCA9IHt9OwogICAgICBmb3IgKGNvbnN0IGsgb2YgT2JqZWN0LmtleXModGhpcy52YWx1ZXMpKSB7CiAgICAgICAgcmVzdWx0W2tdID0gYXNOdW1iZXIoZm4odGhpcy52YWx1ZXNba10sIGspKTsKICAgICAgfQogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogcmVzdWx0IH0sIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB2YWx1ZSBvZiB1bml0LgogICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBhIHVuaXQgc3VjaCBhcyAnbWludXRlJyBvciAnZGF5JwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7eWVhcnM6IDIsIGRheXM6IDN9KS5nZXQoJ3llYXJzJykgLy89PiAyCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgnbW9udGhzJykgLy89PiAwCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgnZGF5cycpIC8vPT4gMwogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQodW5pdCkgewogICAgICByZXR1cm4gdGhpc1tEdXJhdGlvbi5ub3JtYWxpemVVbml0KHVuaXQpXTsKICAgIH0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSB2YWx1ZXMgb2Ygc3BlY2lmaWVkIHVuaXRzLiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSBhIG1hcHBpbmcgb2YgdW5pdHMgdG8gbnVtYmVycwogICAgICogQGV4YW1wbGUgZHVyLnNldCh7IHllYXJzOiAyMDE3IH0pCiAgICAgKiBAZXhhbXBsZSBkdXIuc2V0KHsgaG91cnM6IDgsIG1pbnV0ZXM6IDMwIH0pCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc2V0KHZhbHVlcykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CgogICAgICBjb25zdCBtaXhlZCA9IHsgLi4udGhpcy52YWx1ZXMsIC4uLm5vcm1hbGl6ZU9iamVjdCh2YWx1ZXMsIER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpIH07CiAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIHsgdmFsdWVzOiBtaXhlZCB9KTsKICAgIH0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSBsb2NhbGUgYW5kL29yIG51bWJlcmluZ1N5c3RlbS4gIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBleGFtcGxlIGR1ci5yZWNvbmZpZ3VyZSh7IGxvY2FsZTogJ2VuLUdCJyB9KQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHJlY29uZmlndXJlKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIGNvbnZlcnNpb25BY2N1cmFjeSwgbWF0cml4IH0gPSB7fSkgewogICAgICBjb25zdCBsb2MgPSB0aGlzLmxvYy5jbG9uZSh7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtIH0pOwogICAgICBjb25zdCBvcHRzID0geyBsb2MsIG1hdHJpeCwgY29udmVyc2lvbkFjY3VyYWN5IH07CiAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIGR1cmF0aW9uIGluIHRoZSBzcGVjaWZpZWQgdW5pdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gYSB1bml0IHN1Y2ggYXMgJ21pbnV0ZXMnIG9yICdkYXlzJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7eWVhcnM6IDF9KS5hcygnZGF5cycpIC8vPT4gMzY1CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMX0pLmFzKCdtb250aHMnKSAvLz0+IDEyCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHtob3VyczogNjB9KS5hcygnZGF5cycpIC8vPT4gMi41CiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIGFzKHVuaXQpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuc2hpZnRUbyh1bml0KS5nZXQodW5pdCkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZWR1Y2UgdGhpcyBEdXJhdGlvbiB0byBpdHMgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIGluIGl0cyBjdXJyZW50IHVuaXRzLgogICAgICogQXNzdW1pbmcgdGhlIG92ZXJhbGwgdmFsdWUgb2YgdGhlIER1cmF0aW9uIGlzIHBvc2l0aXZlLCB0aGlzIG1lYW5zOgogICAgICogLSBleGNlc3NpdmUgdmFsdWVzIGZvciBsb3dlci1vcmRlciB1bml0cyBhcmUgY29udmVydGVkIHRvIGhpZ2hlci1vcmRlciB1bml0cyAoaWYgcG9zc2libGUsIHNlZSBmaXJzdCBhbmQgc2Vjb25kIGV4YW1wbGUpCiAgICAgKiAtIG5lZ2F0aXZlIGxvd2VyLW9yZGVyIHVuaXRzIGFyZSBjb252ZXJ0ZWQgdG8gaGlnaGVyIG9yZGVyIHVuaXRzICh0aGVyZSBtdXN0IGJlIHN1Y2ggYSBoaWdoZXIgb3JkZXIgdW5pdCwgb3RoZXJ3aXNlCiAgICAgKiAgIHRoZSBvdmVyYWxsIHZhbHVlIHdvdWxkIGJlIG5lZ2F0aXZlLCBzZWUgc2Vjb25kIGV4YW1wbGUpCiAgICAgKiAtIGZyYWN0aW9uYWwgdmFsdWVzIGZvciBoaWdoZXItb3JkZXIgdW5pdHMgYXJlIGNvbnZlcnRlZCB0byBsb3dlci1vcmRlciB1bml0cyAoaWYgcG9zc2libGUsIHNlZSBmb3VydGggZXhhbXBsZSkKICAgICAqCiAgICAgKiBJZiB0aGUgb3ZlcmFsbCB2YWx1ZSBpcyBuZWdhdGl2ZSwgdGhlIHJlc3VsdCBvZiB0aGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50IHRvIGB0aGlzLm5lZ2F0ZSgpLm5vcm1hbGl6ZSgpLm5lZ2F0ZSgpYC4KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMiwgZGF5czogNTAwMCB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogMTUsIGRheXM6IDI1NSB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogNTAwMCB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyBkYXlzOiA1MDAwIH0KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTIsIG1pbnV0ZXM6IC00NSB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDE1IH0KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMi41LCBkYXlzOiAwLCBob3VyczogMCB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogMiwgZGF5czogMTgyLCBob3VyczogMTIgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIG5vcm1hbGl6ZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCB2YWxzID0gdGhpcy50b09iamVjdCgpOwogICAgICBub3JtYWxpemVWYWx1ZXModGhpcy5tYXRyaXgsIHZhbHMpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogdmFscyB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlc2NhbGUgdW5pdHMgdG8gaXRzIGxhcmdlc3QgcmVwcmVzZW50YXRpb24KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaWxsaXNlY29uZHM6IDkwMDAwIH0pLnJlc2NhbGUoKS50b09iamVjdCgpIC8vPT4geyBtaW51dGVzOiAxLCBzZWNvbmRzOiAzMCB9CiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgcmVzY2FsZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCB2YWxzID0gcmVtb3ZlWmVyb2VzKHRoaXMubm9ybWFsaXplKCkuc2hpZnRUb0FsbCgpLnRvT2JqZWN0KCkpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogdmFscyB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnQgdGhpcyBEdXJhdGlvbiBpbnRvIGl0cyByZXByZXNlbnRhdGlvbiBpbiBhIGRpZmZlcmVudCBzZXQgb2YgdW5pdHMuCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIHNlY29uZHM6IDMwIH0pLnNoaWZ0VG8oJ21pbnV0ZXMnLCAnbWlsbGlzZWNvbmRzJykudG9PYmplY3QoKSAvLz0+IHsgbWludXRlczogNjAsIG1pbGxpc2Vjb25kczogMzAwMDAgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHNoaWZ0VG8oLi4udW5pdHMpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwoKICAgICAgaWYgKHVuaXRzLmxlbmd0aCA9PT0gMCkgewogICAgICAgIHJldHVybiB0aGlzOwogICAgICB9CgogICAgICB1bml0cyA9IHVuaXRzLm1hcCgodSkgPT4gRHVyYXRpb24ubm9ybWFsaXplVW5pdCh1KSk7CgogICAgICBjb25zdCBidWlsdCA9IHt9LAogICAgICAgIGFjY3VtdWxhdGVkID0ge30sCiAgICAgICAgdmFscyA9IHRoaXMudG9PYmplY3QoKTsKICAgICAgbGV0IGxhc3RVbml0OwoKICAgICAgZm9yIChjb25zdCBrIG9mIG9yZGVyZWRVbml0cyQxKSB7CiAgICAgICAgaWYgKHVuaXRzLmluZGV4T2YoaykgPj0gMCkgewogICAgICAgICAgbGFzdFVuaXQgPSBrOwoKICAgICAgICAgIGxldCBvd24gPSAwOwoKICAgICAgICAgIC8vIGFueXRoaW5nIHdlIGhhdmVuJ3QgYm9pbGVkIGRvd24geWV0IHNob3VsZCBnZXQgYm9pbGVkIHRvIHRoaXMgdW5pdAogICAgICAgICAgZm9yIChjb25zdCBhayBpbiBhY2N1bXVsYXRlZCkgewogICAgICAgICAgICBvd24gKz0gdGhpcy5tYXRyaXhbYWtdW2tdICogYWNjdW11bGF0ZWRbYWtdOwogICAgICAgICAgICBhY2N1bXVsYXRlZFtha10gPSAwOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIHBsdXMgYW55dGhpbmcgdGhhdCdzIGFscmVhZHkgaW4gdGhpcyB1bml0CiAgICAgICAgICBpZiAoaXNOdW1iZXIodmFsc1trXSkpIHsKICAgICAgICAgICAgb3duICs9IHZhbHNba107CiAgICAgICAgICB9CgogICAgICAgICAgLy8gb25seSBrZWVwIHRoZSBpbnRlZ2VyIHBhcnQgZm9yIG5vdyBpbiB0aGUgaG9wZXMgb2YgcHV0dGluZyBhbnkgZGVjaW1hbCBwYXJ0CiAgICAgICAgICAvLyBpbnRvIGEgc21hbGxlciB1bml0IGxhdGVyCiAgICAgICAgICBjb25zdCBpID0gTWF0aC50cnVuYyhvd24pOwogICAgICAgICAgYnVpbHRba10gPSBpOwogICAgICAgICAgYWNjdW11bGF0ZWRba10gPSAob3duICogMTAwMCAtIGkgKiAxMDAwKSAvIDEwMDA7CgogICAgICAgICAgLy8gb3RoZXJ3aXNlLCBrZWVwIGl0IGluIHRoZSB3aW5ncyB0byBib2lsIGl0IGxhdGVyCiAgICAgICAgfSBlbHNlIGlmIChpc051bWJlcih2YWxzW2tdKSkgewogICAgICAgICAgYWNjdW11bGF0ZWRba10gPSB2YWxzW2tdOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gYW55dGhpbmcgbGVmdG92ZXIgYmVjb21lcyB0aGUgZGVjaW1hbCBmb3IgdGhlIGxhc3QgdW5pdAogICAgICAvLyBsYXN0VW5pdCBtdXN0IGJlIGRlZmluZWQgc2luY2UgdW5pdHMgaXMgbm90IGVtcHR5CiAgICAgIGZvciAoY29uc3Qga2V5IGluIGFjY3VtdWxhdGVkKSB7CiAgICAgICAgaWYgKGFjY3VtdWxhdGVkW2tleV0gIT09IDApIHsKICAgICAgICAgIGJ1aWx0W2xhc3RVbml0XSArPQogICAgICAgICAgICBrZXkgPT09IGxhc3RVbml0ID8gYWNjdW11bGF0ZWRba2V5XSA6IGFjY3VtdWxhdGVkW2tleV0gLyB0aGlzLm1hdHJpeFtsYXN0VW5pdF1ba2V5XTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIG5vcm1hbGl6ZVZhbHVlcyh0aGlzLm1hdHJpeCwgYnVpbHQpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogYnVpbHQgfSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTaGlmdCB0aGlzIER1cmF0aW9uIHRvIGFsbCBhdmFpbGFibGUgdW5pdHMuCiAgICAgKiBTYW1lIGFzIHNoaWZ0VG8oInllYXJzIiwgIm1vbnRocyIsICJ3ZWVrcyIsICJkYXlzIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyIsICJtaWxsaXNlY29uZHMiKQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHNoaWZ0VG9BbGwoKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgcmV0dXJuIHRoaXMuc2hpZnRUbygKICAgICAgICAieWVhcnMiLAogICAgICAgICJtb250aHMiLAogICAgICAgICJ3ZWVrcyIsCiAgICAgICAgImRheXMiLAogICAgICAgICJob3VycyIsCiAgICAgICAgIm1pbnV0ZXMiLAogICAgICAgICJzZWNvbmRzIiwKICAgICAgICAibWlsbGlzZWNvbmRzIgogICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBuZWdhdGl2ZSBvZiB0aGlzIER1cmF0aW9uLgogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxLCBzZWNvbmRzOiAzMCB9KS5uZWdhdGUoKS50b09iamVjdCgpIC8vPT4geyBob3VyczogLTEsIHNlY29uZHM6IC0zMCB9CiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgbmVnYXRlKCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IG5lZ2F0ZWQgPSB7fTsKICAgICAgZm9yIChjb25zdCBrIG9mIE9iamVjdC5rZXlzKHRoaXMudmFsdWVzKSkgewogICAgICAgIG5lZ2F0ZWRba10gPSB0aGlzLnZhbHVlc1trXSA9PT0gMCA/IDAgOiAtdGhpcy52YWx1ZXNba107CiAgICAgIH0KICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgeyB2YWx1ZXM6IG5lZ2F0ZWQgfSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHllYXJzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHllYXJzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMueWVhcnMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgcXVhcnRlcnMuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgcXVhcnRlcnMoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5xdWFydGVycyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBtb250aHMuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbW9udGhzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMubW9udGhzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHdlZWtzCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgd2Vla3MoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy53ZWVrcyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkYXlzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGRheXMoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5kYXlzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGhvdXJzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGhvdXJzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMuaG91cnMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbWludXRlcy4KICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBtaW51dGVzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMubWludXRlcyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBzZWNvbmRzLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQgc2Vjb25kcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLnNlY29uZHMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbWlsbGlzZWNvbmRzLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbWlsbGlzZWNvbmRzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMubWlsbGlzZWNvbmRzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIER1cmF0aW9uIGlzIGludmFsaWQuIEludmFsaWQgZHVyYXRpb25zIGFyZSByZXR1cm5lZCBieSBkaWZmIG9wZXJhdGlvbnMKICAgICAqIG9uIGludmFsaWQgRGF0ZVRpbWVzIG9yIEludGVydmFscy4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID09PSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBlcnJvciBjb2RlIGlmIHRoaXMgRHVyYXRpb24gYmVjYW1lIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIER1cmF0aW9uIGlzIHZhbGlkCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkUmVhc29uKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIER1cmF0aW9uIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEdXJhdGlvbiBpcyB2YWxpZAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGludmFsaWRFeHBsYW5hdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBFcXVhbGl0eSBjaGVjawogICAgICogVHdvIER1cmF0aW9ucyBhcmUgZXF1YWwgaWZmIHRoZXkgaGF2ZSB0aGUgc2FtZSB1bml0cyBhbmQgdGhlIHNhbWUgdmFsdWVzIGZvciBlYWNoIHVuaXQuCiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufSBvdGhlcgogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgZXF1YWxzKG90aGVyKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkIHx8ICFvdGhlci5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CgogICAgICBpZiAoIXRoaXMubG9jLmVxdWFscyhvdGhlci5sb2MpKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CgogICAgICBmdW5jdGlvbiBlcSh2MSwgdjIpIHsKICAgICAgICAvLyBDb25zaWRlciAwIGFuZCB1bmRlZmluZWQgYXMgZXF1YWwKICAgICAgICBpZiAodjEgPT09IHVuZGVmaW5lZCB8fCB2MSA9PT0gMCkgcmV0dXJuIHYyID09PSB1bmRlZmluZWQgfHwgdjIgPT09IDA7CiAgICAgICAgcmV0dXJuIHYxID09PSB2MjsKICAgICAgfQoKICAgICAgZm9yIChjb25zdCB1IG9mIG9yZGVyZWRVbml0cyQxKSB7CiAgICAgICAgaWYgKCFlcSh0aGlzLnZhbHVlc1t1XSwgb3RoZXIudmFsdWVzW3VdKSkgewogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICB9CgogIGNvbnN0IElOVkFMSUQkMSA9ICJJbnZhbGlkIEludGVydmFsIjsKCiAgLy8gY2hlY2tzIGlmIHRoZSBzdGFydCBpcyBlcXVhbCB0byBvciBiZWZvcmUgdGhlIGVuZAogIGZ1bmN0aW9uIHZhbGlkYXRlU3RhcnRFbmQoc3RhcnQsIGVuZCkgewogICAgaWYgKCFzdGFydCB8fCAhc3RhcnQuaXNWYWxpZCkgewogICAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZCgibWlzc2luZyBvciBpbnZhbGlkIHN0YXJ0Iik7CiAgICB9IGVsc2UgaWYgKCFlbmQgfHwgIWVuZC5pc1ZhbGlkKSB7CiAgICAgIHJldHVybiBJbnRlcnZhbC5pbnZhbGlkKCJtaXNzaW5nIG9yIGludmFsaWQgZW5kIik7CiAgICB9IGVsc2UgaWYgKGVuZCA8IHN0YXJ0KSB7CiAgICAgIHJldHVybiBJbnRlcnZhbC5pbnZhbGlkKAogICAgICAgICJlbmQgYmVmb3JlIHN0YXJ0IiwKICAgICAgICBgVGhlIGVuZCBvZiBhbiBpbnRlcnZhbCBtdXN0IGJlIGFmdGVyIGl0cyBzdGFydCwgYnV0IHlvdSBoYWQgc3RhcnQ9JHtzdGFydC50b0lTTygpfSBhbmQgZW5kPSR7ZW5kLnRvSVNPKCl9YAogICAgICApOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgfQoKICAvKioKICAgKiBBbiBJbnRlcnZhbCBvYmplY3QgcmVwcmVzZW50cyBhIGhhbGYtb3BlbiBpbnRlcnZhbCBvZiB0aW1lLCB3aGVyZSBlYWNoIGVuZHBvaW50IGlzIGEge0BsaW5rIERhdGVUaW1lfS4gQ29uY2VwdHVhbGx5LCBpdCdzIGEgY29udGFpbmVyIGZvciB0aG9zZSB0d28gZW5kcG9pbnRzLCBhY2NvbXBhbmllZCBieSBtZXRob2RzIGZvciBjcmVhdGluZywgcGFyc2luZywgaW50ZXJyb2dhdGluZywgY29tcGFyaW5nLCB0cmFuc2Zvcm1pbmcsIGFuZCBmb3JtYXR0aW5nIHRoZW0uCiAgICoKICAgKiBIZXJlIGlzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBtZXRob2RzIGFuZCBnZXR0ZXJzIGluIEludGVydmFsOgogICAqCiAgICogKiAqKkNyZWF0aW9uKiogVG8gY3JlYXRlIGFuIEludGVydmFsLCB1c2Uge0BsaW5rIEludGVydmFsLmZyb21EYXRlVGltZXN9LCB7QGxpbmsgSW50ZXJ2YWwuYWZ0ZXJ9LCB7QGxpbmsgSW50ZXJ2YWwuYmVmb3JlfSwgb3Ige0BsaW5rIEludGVydmFsLmZyb21JU099LgogICAqICogKipBY2Nlc3NvcnMqKiBVc2Uge0BsaW5rIEludGVydmFsI3N0YXJ0fSBhbmQge0BsaW5rIEludGVydmFsI2VuZH0gdG8gZ2V0IHRoZSBzdGFydCBhbmQgZW5kLgogICAqICogKipJbnRlcnJvZ2F0aW9uKiogVG8gYW5hbHl6ZSB0aGUgSW50ZXJ2YWwsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjY291bnR9LCB7QGxpbmsgSW50ZXJ2YWwjbGVuZ3RofSwge0BsaW5rIEludGVydmFsI2hhc1NhbWV9LCB7QGxpbmsgSW50ZXJ2YWwjY29udGFpbnN9LCB7QGxpbmsgSW50ZXJ2YWwjaXNBZnRlcn0sIG9yIHtAbGluayBJbnRlcnZhbCNpc0JlZm9yZX0uCiAgICogKiAqKlRyYW5zZm9ybWF0aW9uKiogVG8gY3JlYXRlIG90aGVyIEludGVydmFscyBvdXQgb2YgdGhpcyBvbmUsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjc2V0fSwge0BsaW5rIEludGVydmFsI3NwbGl0QXR9LCB7QGxpbmsgSW50ZXJ2YWwjc3BsaXRCeX0sIHtAbGluayBJbnRlcnZhbCNkaXZpZGVFcXVhbGx5fSwge0BsaW5rIEludGVydmFsLm1lcmdlfSwge0BsaW5rIEludGVydmFsLnhvcn0sIHtAbGluayBJbnRlcnZhbCN1bmlvbn0sIHtAbGluayBJbnRlcnZhbCNpbnRlcnNlY3Rpb259LCBvciB7QGxpbmsgSW50ZXJ2YWwjZGlmZmVyZW5jZX0uCiAgICogKiAqKkNvbXBhcmlzb24qKiBUbyBjb21wYXJlIHRoaXMgSW50ZXJ2YWwgdG8gYW5vdGhlciBvbmUsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjZXF1YWxzfSwge0BsaW5rIEludGVydmFsI292ZXJsYXBzfSwge0BsaW5rIEludGVydmFsI2FidXRzU3RhcnR9LCB7QGxpbmsgSW50ZXJ2YWwjYWJ1dHNFbmR9LCB7QGxpbmsgSW50ZXJ2YWwjZW5ndWxmc30KICAgKiAqICoqT3V0cHV0KiogVG8gY29udmVydCB0aGUgSW50ZXJ2YWwgaW50byBvdGhlciByZXByZXNlbnRhdGlvbnMsIHNlZSB7QGxpbmsgSW50ZXJ2YWwjdG9TdHJpbmd9LCB7QGxpbmsgSW50ZXJ2YWwjdG9Mb2NhbGVTdHJpbmd9LCB7QGxpbmsgSW50ZXJ2YWwjdG9JU099LCB7QGxpbmsgSW50ZXJ2YWwjdG9JU09EYXRlfSwge0BsaW5rIEludGVydmFsI3RvSVNPVGltZX0sIHtAbGluayBJbnRlcnZhbCN0b0Zvcm1hdH0sIGFuZCB7QGxpbmsgSW50ZXJ2YWwjdG9EdXJhdGlvbn0uCiAgICovCiAgY2xhc3MgSW50ZXJ2YWwgewogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICBjb25zdHJ1Y3Rvcihjb25maWcpIHsKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgdGhpcy5zID0gY29uZmlnLnN0YXJ0OwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmUgPSBjb25maWcuZW5kOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmludmFsaWQgPSBjb25maWcuaW52YWxpZCB8fCBudWxsOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25JbnRlcnZhbCA9IHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW4gaW52YWxpZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSByZWFzb24gLSBzaW1wbGUgc3RyaW5nIG9mIHdoeSB0aGlzIEludGVydmFsIGlzIGludmFsaWQuIFNob3VsZCBub3QgY29udGFpbiBwYXJhbWV0ZXJzIG9yIGFueXRoaW5nIGVsc2UgZGF0YS1kZXBlbmRlbnQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbZXhwbGFuYXRpb249bnVsbF0gLSBsb25nZXIgZXhwbGFuYXRpb24sIG1heSBpbmNsdWRlIHBhcmFtZXRlcnMgYW5kIG90aGVyIHVzZWZ1bCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24KICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICBzdGF0aWMgaW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uID0gbnVsbCkgewogICAgICBpZiAoIXJlYXNvbikgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigibmVlZCB0byBzcGVjaWZ5IGEgcmVhc29uIHRoZSBJbnRlcnZhbCBpcyBpbnZhbGlkIik7CiAgICAgIH0KCiAgICAgIGNvbnN0IGludmFsaWQgPSByZWFzb24gaW5zdGFuY2VvZiBJbnZhbGlkID8gcmVhc29uIDogbmV3IEludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbik7CgogICAgICBpZiAoU2V0dGluZ3MudGhyb3dPbkludmFsaWQpIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEludGVydmFsRXJyb3IoaW52YWxpZCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIG5ldyBJbnRlcnZhbCh7IGludmFsaWQgfSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGEgc3RhcnQgRGF0ZVRpbWUgYW5kIGFuIGVuZCBEYXRlVGltZS4gSW5jbHVzaXZlIG9mIHRoZSBzdGFydCBidXQgbm90IHRoZSBlbmQuCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfERhdGV8T2JqZWN0fSBzdGFydAogICAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gZW5kCiAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAqLwogICAgc3RhdGljIGZyb21EYXRlVGltZXMoc3RhcnQsIGVuZCkgewogICAgICBjb25zdCBidWlsdFN0YXJ0ID0gZnJpZW5kbHlEYXRlVGltZShzdGFydCksCiAgICAgICAgYnVpbHRFbmQgPSBmcmllbmRseURhdGVUaW1lKGVuZCk7CgogICAgICBjb25zdCB2YWxpZGF0ZUVycm9yID0gdmFsaWRhdGVTdGFydEVuZChidWlsdFN0YXJ0LCBidWlsdEVuZCk7CgogICAgICBpZiAodmFsaWRhdGVFcnJvciA9PSBudWxsKSB7CiAgICAgICAgcmV0dXJuIG5ldyBJbnRlcnZhbCh7CiAgICAgICAgICBzdGFydDogYnVpbHRTdGFydCwKICAgICAgICAgIGVuZDogYnVpbHRFbmQsCiAgICAgICAgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHZhbGlkYXRlRXJyb3I7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGEgc3RhcnQgRGF0ZVRpbWUgYW5kIGEgRHVyYXRpb24gdG8gZXh0ZW5kIHRvLgogICAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gc3RhcnQKICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbC4KICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICBzdGF0aWMgYWZ0ZXIoc3RhcnQsIGR1cmF0aW9uKSB7CiAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pLAogICAgICAgIGR0ID0gZnJpZW5kbHlEYXRlVGltZShzdGFydCk7CiAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0LCBkdC5wbHVzKGR1cikpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYW4gZW5kIERhdGVUaW1lIGFuZCBhIER1cmF0aW9uIHRvIGV4dGVuZCBiYWNrd2FyZHMgdG8uCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfERhdGV8T2JqZWN0fSBlbmQKICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbC4KICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICBzdGF0aWMgYmVmb3JlKGVuZCwgZHVyYXRpb24pIHsKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbiksCiAgICAgICAgZHQgPSBmcmllbmRseURhdGVUaW1lKGVuZCk7CiAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0Lm1pbnVzKGR1ciksIGR0KTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGFuIElTTyA4NjAxIHN0cmluZy4KICAgICAqIEFjY2VwdHMgYDxzdGFydD4vPGVuZD5gLCBgPHN0YXJ0Pi88ZHVyYXRpb24+YCwgYW5kIGA8ZHVyYXRpb24+LzxlbmQ+YCBmb3JtYXRzLgogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZyB0byBwYXJzZQogICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIG9wdGlvbnMgdG8gcGFzcyB7QGxpbmsgRGF0ZVRpbWUjZnJvbUlTT30gYW5kIG9wdGlvbmFsbHkge0BsaW5rIER1cmF0aW9uI2Zyb21JU099CiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVfaW50ZXJ2YWxzCiAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAqLwogICAgc3RhdGljIGZyb21JU08odGV4dCwgb3B0cykgewogICAgICBjb25zdCBbcywgZV0gPSAodGV4dCB8fCAiIikuc3BsaXQoIi8iLCAyKTsKICAgICAgaWYgKHMgJiYgZSkgewogICAgICAgIGxldCBzdGFydCwgc3RhcnRJc1ZhbGlkOwogICAgICAgIHRyeSB7CiAgICAgICAgICBzdGFydCA9IERhdGVUaW1lLmZyb21JU08ocywgb3B0cyk7CiAgICAgICAgICBzdGFydElzVmFsaWQgPSBzdGFydC5pc1ZhbGlkOwogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgIHN0YXJ0SXNWYWxpZCA9IGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgbGV0IGVuZCwgZW5kSXNWYWxpZDsKICAgICAgICB0cnkgewogICAgICAgICAgZW5kID0gRGF0ZVRpbWUuZnJvbUlTTyhlLCBvcHRzKTsKICAgICAgICAgIGVuZElzVmFsaWQgPSBlbmQuaXNWYWxpZDsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICBlbmRJc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoc3RhcnRJc1ZhbGlkICYmIGVuZElzVmFsaWQpIHsKICAgICAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHN0YXJ0LCBlbmQpOwogICAgICAgIH0KCiAgICAgICAgaWYgKHN0YXJ0SXNWYWxpZCkgewogICAgICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUlTTyhlLCBvcHRzKTsKICAgICAgICAgIGlmIChkdXIuaXNWYWxpZCkgewogICAgICAgICAgICByZXR1cm4gSW50ZXJ2YWwuYWZ0ZXIoc3RhcnQsIGR1cik7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChlbmRJc1ZhbGlkKSB7CiAgICAgICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tSVNPKHMsIG9wdHMpOwogICAgICAgICAgaWYgKGR1ci5pc1ZhbGlkKSB7CiAgICAgICAgICAgIHJldHVybiBJbnRlcnZhbC5iZWZvcmUoZW5kLCBkdXIpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZCgidW5wYXJzYWJsZSIsIGB0aGUgaW5wdXQgIiR7dGV4dH0iIGNhbid0IGJlIHBhcnNlZCBhcyBJU08gODYwMWApOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgaWYgYW4gb2JqZWN0IGlzIGFuIEludGVydmFsLiBXb3JrcyBhY3Jvc3MgY29udGV4dCBib3VuZGFyaWVzCiAgICAgKiBAcGFyYW0ge29iamVjdH0gbwogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgc3RhdGljIGlzSW50ZXJ2YWwobykgewogICAgICByZXR1cm4gKG8gJiYgby5pc0x1eG9uSW50ZXJ2YWwpIHx8IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgc3RhcnQgb2YgdGhlIEludGVydmFsCiAgICAgKiBAdHlwZSB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIGdldCBzdGFydCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMucyA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBlbmQgb2YgdGhlIEludGVydmFsCiAgICAgKiBAdHlwZSB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIGdldCBlbmQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmUgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBlbmQgaXMgYXQgbGVhc3QgaXRzIHN0YXJ0LCBtZWFuaW5nIHRoYXQgdGhlIEludGVydmFsIGlzbid0ICdiYWNrd2FyZHMnLgogICAgICogQHR5cGUge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkUmVhc29uID09PSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBlcnJvciBjb2RlIGlmIHRoaXMgSW50ZXJ2YWwgaXMgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgSW50ZXJ2YWwgaXMgdmFsaWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkUmVhc29uKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIEludGVydmFsIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBJbnRlcnZhbCBpcyB2YWxpZAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGludmFsaWRFeHBsYW5hdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIEludGVydmFsIGluIHRoZSBzcGVjaWZpZWQgdW5pdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gdGhlIHVuaXQgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIHJldHVybiB0aGUgbGVuZ3RoIGluLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBsZW5ndGgodW5pdCA9ICJtaWxsaXNlY29uZHMiKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRvRHVyYXRpb24oLi4uW3VuaXRdKS5nZXQodW5pdCkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBjb3VudCBvZiBtaW51dGVzLCBob3VycywgZGF5cywgbW9udGhzLCBvciB5ZWFycyBpbmNsdWRlZCBpbiB0aGUgSW50ZXJ2YWwsIGV2ZW4gaW4gcGFydC4KICAgICAqIFVubGlrZSB7QGxpbmsgSW50ZXJ2YWwjbGVuZ3RofSB0aGlzIGNvdW50cyBzZWN0aW9ucyBvZiB0aGUgY2FsZW5kYXIsIG5vdCBwZXJpb2RzIG9mIHRpbWUsIGUuZy4gc3BlY2lmeWluZyAnZGF5JwogICAgICogYXNrcyAnd2hhdCBkYXRlcyBhcmUgaW5jbHVkZWQgaW4gdGhpcyBpbnRlcnZhbD8nLCBub3QgJ2hvdyBtYW55IGRheXMgbG9uZyBpcyB0aGlzIGludGVydmFsPycKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdW5pdD0nbWlsbGlzZWNvbmRzJ10gLSB0aGUgdW5pdCBvZiB0aW1lIHRvIGNvdW50LgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBjb3VudCh1bml0ID0gIm1pbGxpc2Vjb25kcyIpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBOYU47CiAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5zdGFydC5zdGFydE9mKHVuaXQpLAogICAgICAgIGVuZCA9IHRoaXMuZW5kLnN0YXJ0T2YodW5pdCk7CiAgICAgIHJldHVybiBNYXRoLmZsb29yKGVuZC5kaWZmKHN0YXJ0LCB1bml0KS5nZXQodW5pdCkpICsgKGVuZC52YWx1ZU9mKCkgIT09IHRoaXMuZW5kLnZhbHVlT2YoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIHN0YXJ0IGFuZCBlbmQgYXJlIGJvdGggaW4gdGhlIHNhbWUgdW5pdCBvZiB0aW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY2hlY2sgc2FtZW5lc3Mgb24KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGhhc1NhbWUodW5pdCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5pc0VtcHR5KCkgfHwgdGhpcy5lLm1pbnVzKDEpLmhhc1NhbWUodGhpcy5zLCB1bml0KSA6IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBoYXMgdGhlIHNhbWUgc3RhcnQgYW5kIGVuZCBEYXRlVGltZXMuCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBpc0VtcHR5KCkgewogICAgICByZXR1cm4gdGhpcy5zLnZhbHVlT2YoKSA9PT0gdGhpcy5lLnZhbHVlT2YoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBzdGFydCBpcyBhZnRlciB0aGUgc3BlY2lmaWVkIERhdGVUaW1lLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGlzQWZ0ZXIoZGF0ZVRpbWUpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTsKICAgICAgcmV0dXJuIHRoaXMucyA+IGRhdGVUaW1lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBiZWZvcmUgdGhlIHNwZWNpZmllZCBEYXRlVGltZS4KICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IGRhdGVUaW1lCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBpc0JlZm9yZShkYXRlVGltZSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gdGhpcy5lIDw9IGRhdGVUaW1lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBjb250YWlucyB0aGUgc3BlY2lmaWVkIERhdGVUaW1lLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGNvbnRhaW5zKGRhdGVUaW1lKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CiAgICAgIHJldHVybiB0aGlzLnMgPD0gZGF0ZVRpbWUgJiYgdGhpcy5lID4gZGF0ZVRpbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0cyIgdGhlIHN0YXJ0IGFuZC9vciBlbmQgZGF0ZXMuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSB0aGUgdmFsdWVzIHRvIHNldAogICAgICogQHBhcmFtIHtEYXRlVGltZX0gdmFsdWVzLnN0YXJ0IC0gdGhlIHN0YXJ0aW5nIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSB2YWx1ZXMuZW5kIC0gdGhlIGVuZGluZyBEYXRlVGltZQogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKi8KICAgIHNldCh7IHN0YXJ0LCBlbmQgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMoc3RhcnQgfHwgdGhpcy5zLCBlbmQgfHwgdGhpcy5lKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgYXQgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIERhdGVUaW1lcwogICAgICogQHBhcmFtIHsuLi5EYXRlVGltZX0gZGF0ZVRpbWVzIC0gdGhlIHVuaXQgb2YgdGltZSB0byBjb3VudC4KICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzcGxpdEF0KC4uLmRhdGVUaW1lcykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIFtdOwogICAgICBjb25zdCBzb3J0ZWQgPSBkYXRlVGltZXMKICAgICAgICAgIC5tYXAoZnJpZW5kbHlEYXRlVGltZSkKICAgICAgICAgIC5maWx0ZXIoKGQpID0+IHRoaXMuY29udGFpbnMoZCkpCiAgICAgICAgICAuc29ydCgpLAogICAgICAgIHJlc3VsdHMgPSBbXTsKICAgICAgbGV0IHsgcyB9ID0gdGhpcywKICAgICAgICBpID0gMDsKCiAgICAgIHdoaWxlIChzIDwgdGhpcy5lKSB7CiAgICAgICAgY29uc3QgYWRkZWQgPSBzb3J0ZWRbaV0gfHwgdGhpcy5lLAogICAgICAgICAgbmV4dCA9ICthZGRlZCA+ICt0aGlzLmUgPyB0aGlzLmUgOiBhZGRlZDsKICAgICAgICByZXN1bHRzLnB1c2goSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBuZXh0KSk7CiAgICAgICAgcyA9IG5leHQ7CiAgICAgICAgaSArPSAxOwogICAgICB9CgogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0KCiAgICAvKioKICAgICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgaW50byBzbWFsbGVyIEludGVydmFscywgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIGxlbmd0aC4KICAgICAqIExlZnQgb3ZlciB0aW1lIGlzIGdyb3VwZWQgaW50byBhIHNtYWxsZXIgaW50ZXJ2YWwKICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgbGVuZ3RoIG9mIGVhY2ggcmVzdWx0aW5nIGludGVydmFsLgogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIHNwbGl0QnkoZHVyYXRpb24pIHsKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbik7CgogICAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCAhZHVyLmlzVmFsaWQgfHwgZHVyLmFzKCJtaWxsaXNlY29uZHMiKSA9PT0gMCkgewogICAgICAgIHJldHVybiBbXTsKICAgICAgfQoKICAgICAgbGV0IHsgcyB9ID0gdGhpcywKICAgICAgICBpZHggPSAxLAogICAgICAgIG5leHQ7CgogICAgICBjb25zdCByZXN1bHRzID0gW107CiAgICAgIHdoaWxlIChzIDwgdGhpcy5lKSB7CiAgICAgICAgY29uc3QgYWRkZWQgPSB0aGlzLnN0YXJ0LnBsdXMoZHVyLm1hcFVuaXRzKCh4KSA9PiB4ICogaWR4KSk7CiAgICAgICAgbmV4dCA9ICthZGRlZCA+ICt0aGlzLmUgPyB0aGlzLmUgOiBhZGRlZDsKICAgICAgICByZXN1bHRzLnB1c2goSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBuZXh0KSk7CiAgICAgICAgcyA9IG5leHQ7CiAgICAgICAgaWR4ICs9IDE7CiAgICAgIH0KCiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfQoKICAgIC8qKgogICAgICogU3BsaXQgdGhpcyBJbnRlcnZhbCBpbnRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHNtYWxsZXIgaW50ZXJ2YWxzLgogICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlck9mUGFydHMgLSBUaGUgbnVtYmVyIG9mIEludGVydmFscyB0byBkaXZpZGUgdGhlIEludGVydmFsIGludG8uCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgZGl2aWRlRXF1YWxseShudW1iZXJPZlBhcnRzKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gW107CiAgICAgIHJldHVybiB0aGlzLnNwbGl0QnkodGhpcy5sZW5ndGgoKSAvIG51bWJlck9mUGFydHMpLnNsaWNlKDAsIG51bWJlck9mUGFydHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBvdmVybGFwcyB3aXRoIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwKICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBvdmVybGFwcyhvdGhlcikgewogICAgICByZXR1cm4gdGhpcy5lID4gb3RoZXIucyAmJiB0aGlzLnMgPCBvdGhlci5lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBhZGphY2VudCB0byB0aGUgc3BlY2lmaWVkIEludGVydmFsJ3Mgc3RhcnQuCiAgICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlcgogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgYWJ1dHNTdGFydChvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gK3RoaXMuZSA9PT0gK290aGVyLnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsJ3Mgc3RhcnQgaXMgYWRqYWNlbnQgdG8gdGhlIHNwZWNpZmllZCBJbnRlcnZhbCdzIGVuZC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBhYnV0c0VuZChvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gK290aGVyLmUgPT09ICt0aGlzLnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsIGVuZ3VsZnMgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBlbmd1bGZzKG90aGVyKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CiAgICAgIHJldHVybiB0aGlzLnMgPD0gb3RoZXIucyAmJiB0aGlzLmUgPj0gb3RoZXIuZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwgaGFzIHRoZSBzYW1lIHN0YXJ0IGFuZCBlbmQgYXMgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBlcXVhbHMob3RoZXIpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIW90aGVyLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzLnMuZXF1YWxzKG90aGVyLnMpICYmIHRoaXMuZS5lcXVhbHMob3RoZXIuZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhpcyBJbnRlcnZhbCBhbmQgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIFNwZWNpZmljYWxseSwgdGhlIHJlc3VsdGluZyBJbnRlcnZhbCBoYXMgdGhlIG1heGltdW0gc3RhcnQgdGltZSBhbmQgdGhlIG1pbmltdW0gZW5kIHRpbWUgb2YgdGhlIHR3byBJbnRlcnZhbHMuCiAgICAgKiBSZXR1cm5zIG51bGwgaWYgdGhlIGludGVyc2VjdGlvbiBpcyBlbXB0eSwgbWVhbmluZywgdGhlIGludGVydmFscyBkb24ndCBpbnRlcnNlY3QuCiAgICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlcgogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKi8KICAgIGludGVyc2VjdGlvbihvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHMgPSB0aGlzLnMgPiBvdGhlci5zID8gdGhpcy5zIDogb3RoZXIucywKICAgICAgICBlID0gdGhpcy5lIDwgb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7CgogICAgICBpZiAocyA+PSBlKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMocywgZSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBJbnRlcnZhbCByZXByZXNlbnRpbmcgdGhlIHVuaW9uIG9mIHRoaXMgSW50ZXJ2YWwgYW5kIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwuCiAgICAgKiBTcGVjaWZpY2FsbHksIHRoZSByZXN1bHRpbmcgSW50ZXJ2YWwgaGFzIHRoZSBtaW5pbXVtIHN0YXJ0IHRpbWUgYW5kIHRoZSBtYXhpbXVtIGVuZCB0aW1lIG9mIHRoZSB0d28gSW50ZXJ2YWxzLgogICAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXIKICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICB1bmlvbihvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHMgPSB0aGlzLnMgPCBvdGhlci5zID8gdGhpcy5zIDogb3RoZXIucywKICAgICAgICBlID0gdGhpcy5lID4gb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7CiAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHMsIGUpOwogICAgfQoKICAgIC8qKgogICAgICogTWVyZ2UgYW4gYXJyYXkgb2YgSW50ZXJ2YWxzIGludG8gYSBlcXVpdmFsZW50IG1pbmltYWwgc2V0IG9mIEludGVydmFscy4KICAgICAqIENvbWJpbmVzIG92ZXJsYXBwaW5nIGFuZCBhZGphY2VudCBJbnRlcnZhbHMuCiAgICAgKiBAcGFyYW0ge0FycmF5fSBpbnRlcnZhbHMKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgbWVyZ2UoaW50ZXJ2YWxzKSB7CiAgICAgIGNvbnN0IFtmb3VuZCwgZmluYWxdID0gaW50ZXJ2YWxzCiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEucyAtIGIucykKICAgICAgICAucmVkdWNlKAogICAgICAgICAgKFtzb2ZhciwgY3VycmVudF0sIGl0ZW0pID0+IHsKICAgICAgICAgICAgaWYgKCFjdXJyZW50KSB7CiAgICAgICAgICAgICAgcmV0dXJuIFtzb2ZhciwgaXRlbV07CiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudC5vdmVybGFwcyhpdGVtKSB8fCBjdXJyZW50LmFidXRzU3RhcnQoaXRlbSkpIHsKICAgICAgICAgICAgICByZXR1cm4gW3NvZmFyLCBjdXJyZW50LnVuaW9uKGl0ZW0pXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gW3NvZmFyLmNvbmNhdChbY3VycmVudF0pLCBpdGVtXTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIFtbXSwgbnVsbF0KICAgICAgICApOwogICAgICBpZiAoZmluYWwpIHsKICAgICAgICBmb3VuZC5wdXNoKGZpbmFsKTsKICAgICAgfQogICAgICByZXR1cm4gZm91bmQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgSW50ZXJ2YWxzIHJlcHJlc2VudGluZyB0aGUgc3BhbnMgb2YgdGltZSB0aGF0IG9ubHkgYXBwZWFyIGluIG9uZSBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFscy4KICAgICAqIEBwYXJhbSB7QXJyYXl9IGludGVydmFscwogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIHN0YXRpYyB4b3IoaW50ZXJ2YWxzKSB7CiAgICAgIGxldCBzdGFydCA9IG51bGwsCiAgICAgICAgY3VycmVudENvdW50ID0gMDsKICAgICAgY29uc3QgcmVzdWx0cyA9IFtdLAogICAgICAgIGVuZHMgPSBpbnRlcnZhbHMubWFwKChpKSA9PiBbCiAgICAgICAgICB7IHRpbWU6IGkucywgdHlwZTogInMiIH0sCiAgICAgICAgICB7IHRpbWU6IGkuZSwgdHlwZTogImUiIH0sCiAgICAgICAgXSksCiAgICAgICAgZmxhdHRlbmVkID0gQXJyYXkucHJvdG90eXBlLmNvbmNhdCguLi5lbmRzKSwKICAgICAgICBhcnIgPSBmbGF0dGVuZWQuc29ydCgoYSwgYikgPT4gYS50aW1lIC0gYi50aW1lKTsKCiAgICAgIGZvciAoY29uc3QgaSBvZiBhcnIpIHsKICAgICAgICBjdXJyZW50Q291bnQgKz0gaS50eXBlID09PSAicyIgPyAxIDogLTE7CgogICAgICAgIGlmIChjdXJyZW50Q291bnQgPT09IDEpIHsKICAgICAgICAgIHN0YXJ0ID0gaS50aW1lOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAoc3RhcnQgJiYgK3N0YXJ0ICE9PSAraS50aW1lKSB7CiAgICAgICAgICAgIHJlc3VsdHMucHVzaChJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHN0YXJ0LCBpLnRpbWUpKTsKICAgICAgICAgIH0KCiAgICAgICAgICBzdGFydCA9IG51bGw7CiAgICAgICAgfQogICAgICB9CgogICAgICByZXR1cm4gSW50ZXJ2YWwubWVyZ2UocmVzdWx0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBzcGFuIG9mIHRpbWUgaW4gdGhpcyBJbnRlcnZhbCB0aGF0IGRvZXNuJ3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFscy4KICAgICAqIEBwYXJhbSB7Li4uSW50ZXJ2YWx9IGludGVydmFscwogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIGRpZmZlcmVuY2UoLi4uaW50ZXJ2YWxzKSB7CiAgICAgIHJldHVybiBJbnRlcnZhbC54b3IoW3RoaXNdLmNvbmNhdChpbnRlcnZhbHMpKQogICAgICAgIC5tYXAoKGkpID0+IHRoaXMuaW50ZXJzZWN0aW9uKGkpKQogICAgICAgIC5maWx0ZXIoKGkpID0+IGkgJiYgIWkuaXNFbXB0eSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBJbnRlcnZhbCBhcHByb3ByaWF0ZSBmb3IgZGVidWdnaW5nLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1N0cmluZygpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEJDE7CiAgICAgIHJldHVybiBgWyR7dGhpcy5zLnRvSVNPKCl9IOKAkyAke3RoaXMuZS50b0lTTygpfSlgOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGxvY2FsaXplZCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoaXMgSW50ZXJ2YWwuIEFjY2VwdHMgdGhlIHNhbWUgb3B0aW9ucyBhcyB0aGUKICAgICAqIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgYW5kIGFueSBwcmVzZXRzIGRlZmluZWQgYnkgTHV4b24sIHN1Y2ggYXMKICAgICAqIHtAbGluayBEYXRlVGltZS5EQVRFX0ZVTEx9IG9yIHtAbGluayBEYXRlVGltZS5USU1FX1NJTVBMRX0uIFRoZSBleGFjdCBiZWhhdmlvciBvZiB0aGlzIG1ldGhvZAogICAgICogaXMgYnJvd3Nlci1zcGVjaWZpYywgYnV0IGluIGdlbmVyYWwgaXQgd2lsbCByZXR1cm4gYW4gYXBwcm9wcmlhdGUgcmVwcmVzZW50YXRpb24gb2YgdGhlCiAgICAgKiBJbnRlcnZhbCBpbiB0aGUgYXNzaWduZWQgbG9jYWxlLiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbgogICAgICogc3BlY2lmaWVkLgogICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlVGltZUZvcm1hdAogICAgICogQHBhcmFtIHtPYmplY3R9IFtmb3JtYXRPcHRzPURhdGVUaW1lLkRBVEVfU0hPUlRdIC0gRWl0aGVyIGEgRGF0ZVRpbWUgcHJlc2V0IG9yCiAgICAgKiBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yIG9wdGlvbnMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHN0YXJ0IERhdGVUaW1lLgogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbUlTTygnMjAyMi0xMS0wN1QwOTowMFovMjAyMi0xMS0wOFQwOTowMFonKS50b0xvY2FsZVN0cmluZygpOyAvLz0+IDExLzcvMjAyMiDigJMgMTEvOC8yMDIyCiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tSVNPKCcyMDIyLTExLTA3VDA5OjAwWi8yMDIyLTExLTA4VDA5OjAwWicpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfRlVMTCk7IC8vPT4gTm92ZW1iZXIgNyDigJMgOCwgMjAyMgogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbUlTTygnMjAyMi0xMS0wN1QwOTowMFovMjAyMi0xMS0wOFQwOTowMFonKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFX0ZVTEwsIHsgbG9jYWxlOiAnZnItRlInIH0pOyAvLz0+IDfigJM4IG5vdmVtYnJlIDIwMjIKICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21JU08oJzIwMjItMTEtMDdUMTc6MDBaLzIwMjItMTEtMDdUMTk6MDBaJykudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuVElNRV9TSU1QTEUpOyAvLz0+IDY6MDAg4oCTIDg6MDAgUE0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21JU08oJzIwMjItMTEtMDdUMTc6MDBaLzIwMjItMTEtMDdUMTk6MDBaJykudG9Mb2NhbGVTdHJpbmcoeyB3ZWVrZGF5OiAnc2hvcnQnLCBtb250aDogJ3Nob3J0JywgZGF5OiAnMi1kaWdpdCcsIGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcgfSk7IC8vPT4gTW9uLCBOb3YgMDcsIDY6MDAg4oCTIDg6MDAgcAogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0xvY2FsZVN0cmluZyhmb3JtYXRPcHRzID0gREFURV9TSE9SVCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5zLmxvYy5jbG9uZShvcHRzKSwgZm9ybWF0T3B0cykuZm9ybWF0SW50ZXJ2YWwodGhpcykKICAgICAgICA6IElOVkFMSUQkMTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEludGVydmFsLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBUaGUgc2FtZSBvcHRpb25zIGFzIHtAbGluayBEYXRlVGltZSN0b0lTT30KICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU08ob3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQkMTsKICAgICAgcmV0dXJuIGAke3RoaXMucy50b0lTTyhvcHRzKX0vJHt0aGlzLmUudG9JU08ob3B0cyl9YDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBkYXRlIG9mIHRoaXMgSW50ZXJ2YWwuCiAgICAgKiBUaGUgdGltZSBjb21wb25lbnRzIGFyZSBpZ25vcmVkLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT0RhdGUoKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRCQxOwogICAgICByZXR1cm4gYCR7dGhpcy5zLnRvSVNPRGF0ZSgpfS8ke3RoaXMuZS50b0lTT0RhdGUoKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRpbWUgb2YgdGhpcyBJbnRlcnZhbC4KICAgICAqIFRoZSBkYXRlIGNvbXBvbmVudHMgYXJlIGlnbm9yZWQuCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVfaW50ZXJ2YWxzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIFRoZSBzYW1lIG9wdGlvbnMgYXMge0BsaW5rIERhdGVUaW1lI3RvSVNPfQogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT1RpbWUob3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQkMTsKICAgICAgcmV0dXJuIGAke3RoaXMucy50b0lTT1RpbWUob3B0cyl9LyR7dGhpcy5lLnRvSVNPVGltZShvcHRzKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEludGVydmFsIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBmb3JtYXQKICAgICAqIHN0cmluZy4gKipZb3UgbWF5IG5vdCB3YW50IHRoaXMuKiogU2VlIHtAbGluayBJbnRlcnZhbCN0b0xvY2FsZVN0cmluZ30gZm9yIGEgbW9yZSBmbGV4aWJsZQogICAgICogZm9ybWF0dGluZyB0b29sLgogICAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGVGb3JtYXQgLSBUaGUgZm9ybWF0IHN0cmluZy4gVGhpcyBzdHJpbmcgZm9ybWF0cyB0aGUgc3RhcnQgYW5kIGVuZCB0aW1lLgogICAgICogU2VlIHtAbGluayBEYXRlVGltZSN0b0Zvcm1hdH0gZm9yIGRldGFpbHMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuc2VwYXJhdG9yID0gICcg4oCTICddIC0gQSBzZXBhcmF0b3IgdG8gcGxhY2UgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZAogICAgICogcmVwcmVzZW50YXRpb25zLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0Zvcm1hdChkYXRlRm9ybWF0LCB7IHNlcGFyYXRvciA9ICIg4oCTICIgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRCQxOwogICAgICByZXR1cm4gYCR7dGhpcy5zLnRvRm9ybWF0KGRhdGVGb3JtYXQpfSR7c2VwYXJhdG9yfSR7dGhpcy5lLnRvRm9ybWF0KGRhdGVGb3JtYXQpfWA7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYSBEdXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIHRpbWUgc3Bhbm5lZCBieSB0aGlzIGludGVydmFsLgogICAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFt1bml0PVsnbWlsbGlzZWNvbmRzJ11dIC0gdGhlIHVuaXQgb3IgdW5pdHMgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIGluY2x1ZGUgaW4gdGhlIGR1cmF0aW9uLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbigpLnRvT2JqZWN0KCkgLy89PiB7IG1pbGxpc2Vjb25kczogODg0ODkyNTcgfQogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbignZGF5cycpLnRvT2JqZWN0KCkgLy89PiB7IGRheXM6IDEuMDI0MTgxMjE1Mjc3Nzc3OCB9CiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS50b0R1cmF0aW9uKFsnaG91cnMnLCAnbWludXRlcyddKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjQsIG1pbnV0ZXM6IDM0LjgyMDk1IH0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oWydob3VycycsICdtaW51dGVzJywgJ3NlY29uZHMnXSkudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDI0LCBtaW51dGVzOiAzNCwgc2Vjb25kczogNDkuMjU3IH0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oJ3NlY29uZHMnKS50b09iamVjdCgpIC8vPT4geyBzZWNvbmRzOiA4ODQ4OS4yNTcgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHRvRHVyYXRpb24odW5pdCwgb3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKHRoaXMuaW52YWxpZFJlYXNvbik7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuZS5kaWZmKHRoaXMucywgdW5pdCwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSdW4gbWFwRm4gb24gdGhlIGludGVydmFsIHN0YXJ0IGFuZCBlbmQsIHJldHVybmluZyBhIG5ldyBJbnRlcnZhbCBmcm9tIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWVzCiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBtYXBGbgogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS5tYXBFbmRwb2ludHMoZW5kcG9pbnQgPT4gZW5kcG9pbnQudG9VVEMoKSkKICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLm1hcEVuZHBvaW50cyhlbmRwb2ludCA9PiBlbmRwb2ludC5wbHVzKHsgaG91cnM6IDIgfSkpCiAgICAgKi8KICAgIG1hcEVuZHBvaW50cyhtYXBGbikgewogICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhtYXBGbih0aGlzLnMpLCBtYXBGbih0aGlzLmUpKTsKICAgIH0KICB9CgogIC8qKgogICAqIFRoZSBJbmZvIGNsYXNzIGNvbnRhaW5zIHN0YXRpYyBtZXRob2RzIGZvciByZXRyaWV2aW5nIGdlbmVyYWwgdGltZSBhbmQgZGF0ZSByZWxhdGVkIGRhdGEuIEZvciBleGFtcGxlLCBpdCBoYXMgbWV0aG9kcyBmb3IgZmluZGluZyBvdXQgaWYgYSB0aW1lIHpvbmUgaGFzIGEgRFNULCBmb3IgbGlzdGluZyB0aGUgbW9udGhzIGluIGFueSBzdXBwb3J0ZWQgbG9jYWxlLCBhbmQgZm9yIGRpc2NvdmVyaW5nIHdoaWNoIG9mIEx1eG9uIGZlYXR1cmVzIGFyZSBhdmFpbGFibGUgaW4gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQuCiAgICovCiAgY2xhc3MgSW5mbyB7CiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgem9uZSBjb250YWlucyBhIERTVC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFt6b25lPSdsb2NhbCddIC0gWm9uZSB0byBjaGVjay4gRGVmYXVsdHMgdG8gdGhlIGVudmlyb25tZW50J3MgbG9jYWwgem9uZS4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBoYXNEU1Qoem9uZSA9IFNldHRpbmdzLmRlZmF1bHRab25lKSB7CiAgICAgIGNvbnN0IHByb3RvID0gRGF0ZVRpbWUubm93KCkuc2V0Wm9uZSh6b25lKS5zZXQoeyBtb250aDogMTIgfSk7CgogICAgICByZXR1cm4gIXpvbmUuaXNVbml2ZXJzYWwgJiYgcHJvdG8ub2Zmc2V0ICE9PSBwcm90by5zZXQoeyBtb250aDogNiB9KS5vZmZzZXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGUgc3BlY2lmaWVkIHpvbmUgaXMgYSB2YWxpZCBJQU5BIHNwZWNpZmllci4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB6b25lIC0gWm9uZSB0byBjaGVjawogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgc3RhdGljIGlzVmFsaWRJQU5BWm9uZSh6b25lKSB7CiAgICAgIHJldHVybiBJQU5BWm9uZS5pc1ZhbGlkWm9uZSh6b25lKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnRzIHRoZSBpbnB1dCBpbnRvIGEge0BsaW5rIFpvbmV9IGluc3RhbmNlLgogICAgICoKICAgICAqICogSWYgYGlucHV0YCBpcyBhbHJlYWR5IGEgWm9uZSBpbnN0YW5jZSwgaXQgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLgogICAgICogKiBJZiBgaW5wdXRgIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSB2YWxpZCB0aW1lIHpvbmUgbmFtZSwgYSBab25lIGluc3RhbmNlCiAgICAgKiAgIHdpdGggdGhhdCBuYW1lIGlzIHJldHVybmVkLgogICAgICogKiBJZiBgaW5wdXRgIGlzIGEgc3RyaW5nIHRoYXQgZG9lc24ndCByZWZlciB0byBhIGtub3duIHRpbWUgem9uZSwgYSBab25lCiAgICAgKiAgIGluc3RhbmNlIHdpdGgge0BsaW5rIFpvbmUjaXNWYWxpZH0gPT0gZmFsc2UgaXMgcmV0dXJuZWQuCiAgICAgKiAqIElmIGBpbnB1dCBpcyBhIG51bWJlciwgYSBab25lIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBmaXhlZCBvZmZzZXQKICAgICAqICAgaW4gbWludXRlcyBpcyByZXR1cm5lZC4KICAgICAqICogSWYgYGlucHV0YCBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRoZSBkZWZhdWx0IHpvbmUgaXMgcmV0dXJuZWQuCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfG51bWJlcn0gW2lucHV0XSAtIHRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQKICAgICAqIEByZXR1cm4ge1pvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBub3JtYWxpemVab25lKGlucHV0KSB7CiAgICAgIHJldHVybiBub3JtYWxpemVab25lKGlucHV0LCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2Ygc3RhbmRhbG9uZSBtb250aCBuYW1lcy4KICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdsb25nJ10gLSB0aGUgbGVuZ3RoIG9mIHRoZSBtb250aCByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibnVtZXJpYyIsICIyLWRpZ2l0IiwgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5vdXRwdXRDYWxlbmRhcj0nZ3JlZ29yeSddIC0gdGhlIGNhbGVuZGFyCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygpWzBdIC8vPT4gJ0phbnVhcnknCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnc2hvcnQnKVswXSAvLz0+ICdKYW4nCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnbnVtZXJpYycpWzBdIC8vPT4gJzEnCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnc2hvcnQnLCB7IGxvY2FsZTogJ2ZyLUNBJyB9IClbMF0gLy89PiAnamFudi4nCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnbnVtZXJpYycsIHsgbG9jYWxlOiAnYXInIH0pWzBdIC8vPT4gJ9mhJwogICAgICogQGV4YW1wbGUgSW5mby5tb250aHMoJ2xvbmcnLCB7IG91dHB1dENhbGVuZGFyOiAnaXNsYW1pYycgfSlbMF0gLy89PiAnUmFiacq7IEknCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIG1vbnRocygKICAgICAgbGVuZ3RoID0gImxvbmciLAogICAgICB7IGxvY2FsZSA9IG51bGwsIG51bWJlcmluZ1N5c3RlbSA9IG51bGwsIGxvY09iaiA9IG51bGwsIG91dHB1dENhbGVuZGFyID0gImdyZWdvcnkiIH0gPSB7fQogICAgKSB7CiAgICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSkubW9udGhzKGxlbmd0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgZm9ybWF0IG1vbnRoIG5hbWVzLgogICAgICogRm9ybWF0IG1vbnRocyBkaWZmZXIgZnJvbSBzdGFuZGFsb25lIG1vbnRocyBpbiB0aGF0IHRoZXkncmUgbWVhbnQgdG8gYXBwZWFyIG5leHQgdG8gdGhlIGRheSBvZiB0aGUgbW9udGguIEluIHNvbWUgbGFuZ3VhZ2VzLCB0aGF0CiAgICAgKiBjaGFuZ2VzIHRoZSBzdHJpbmcuCiAgICAgKiBTZWUge0BsaW5rIEluZm8jbW9udGhzfQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtsZW5ndGg9J2xvbmcnXSAtIHRoZSBsZW5ndGggb2YgdGhlIG1vbnRoIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzICJudW1lcmljIiwgIjItZGlnaXQiLCAibmFycm93IiwgInNob3J0IiwgImxvbmciCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGVdIC0gdGhlIGxvY2FsZSBjb2RlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtPW51bGxdIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NPYmo9bnVsbF0gLSBhbiBleGlzdGluZyBsb2NhbGUgb2JqZWN0IHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm91dHB1dENhbGVuZGFyPSdncmVnb3J5J10gLSB0aGUgY2FsZW5kYXIKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgbW9udGhzRm9ybWF0KAogICAgICBsZW5ndGggPSAibG9uZyIsCiAgICAgIHsgbG9jYWxlID0gbnVsbCwgbnVtYmVyaW5nU3lzdGVtID0gbnVsbCwgbG9jT2JqID0gbnVsbCwgb3V0cHV0Q2FsZW5kYXIgPSAiZ3JlZ29yeSIgfSA9IHt9CiAgICApIHsKICAgICAgcmV0dXJuIChsb2NPYmogfHwgTG9jYWxlLmNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIpKS5tb250aHMobGVuZ3RoLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBzdGFuZGFsb25lIHdlZWsgbmFtZXMuCiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgd2Vla2RheSByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibmFycm93IiwgInNob3J0IiwgImxvbmciLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoKVswXSAvLz0+ICdNb25kYXknCiAgICAgKiBAZXhhbXBsZSBJbmZvLndlZWtkYXlzKCdzaG9ydCcpWzBdIC8vPT4gJ01vbicKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JywgeyBsb2NhbGU6ICdmci1DQScgfSlbMF0gLy89PiAnbHVuLicKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JywgeyBsb2NhbGU6ICdhcicgfSlbMF0gLy89PiAn2KfZhNin2KvZhtmK2YYnCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIHdlZWtkYXlzKGxlbmd0aCA9ICJsb25nIiwgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsIH0gPSB7fSkgewogICAgICByZXR1cm4gKGxvY09iaiB8fCBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBudWxsKSkud2Vla2RheXMobGVuZ3RoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBmb3JtYXQgd2VlayBuYW1lcy4KICAgICAqIEZvcm1hdCB3ZWVrZGF5cyBkaWZmZXIgZnJvbSBzdGFuZGFsb25lIHdlZWtkYXlzIGluIHRoYXQgdGhleSdyZSBtZWFudCB0byBhcHBlYXIgbmV4dCB0byBtb3JlIGRhdGUgaW5mb3JtYXRpb24uIEluIHNvbWUgbGFuZ3VhZ2VzLCB0aGF0CiAgICAgKiBjaGFuZ2VzIHRoZSBzdHJpbmcuCiAgICAgKiBTZWUge0BsaW5rIEluZm8jd2Vla2RheXN9CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgbW9udGggcmVwcmVzZW50YXRpb24sIHN1Y2ggYXMgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIi4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT1udWxsXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgd2Vla2RheXNGb3JtYXQoCiAgICAgIGxlbmd0aCA9ICJsb25nIiwKICAgICAgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsIH0gPSB7fQogICAgKSB7CiAgICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG51bGwpKS53ZWVrZGF5cyhsZW5ndGgsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGFycmF5IG9mIG1lcmlkaWVtcy4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGUKICAgICAqIEBleGFtcGxlIEluZm8ubWVyaWRpZW1zKCkgLy89PiBbICdBTScsICdQTScgXQogICAgICogQGV4YW1wbGUgSW5mby5tZXJpZGllbXMoeyBsb2NhbGU6ICdteScgfSkgLy89PiBbICfhgJThgLbhgJThgIDhgLonLCAn4YCK4YCU4YCxJyBdCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIG1lcmlkaWVtcyh7IGxvY2FsZSA9IG51bGwgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSkubWVyaWRpZW1zKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgZXJhcywgc3VjaCBhcyBbJ0JDJywgJ0FEJ10uIFRoZSBsb2NhbGUgY2FuIGJlIHNwZWNpZmllZCwgYnV0IHRoZSBjYWxlbmRhciBzeXN0ZW0gaXMgYWx3YXlzIEdyZWdvcmlhbi4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdzaG9ydCddIC0gdGhlIGxlbmd0aCBvZiB0aGUgZXJhIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzICJzaG9ydCIgb3IgImxvbmciLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQGV4YW1wbGUgSW5mby5lcmFzKCkgLy89PiBbICdCQycsICdBRCcgXQogICAgICogQGV4YW1wbGUgSW5mby5lcmFzKCdsb25nJykgLy89PiBbICdCZWZvcmUgQ2hyaXN0JywgJ0Fubm8gRG9taW5pJyBdCiAgICAgKiBAZXhhbXBsZSBJbmZvLmVyYXMoJ2xvbmcnLCB7IGxvY2FsZTogJ2ZyJyB9KSAvLz0+IFsgJ2F2YW50IErDqXN1cy1DaHJpc3QnLCAnYXByw6hzIErDqXN1cy1DaHJpc3QnIF0KICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgZXJhcyhsZW5ndGggPSAic2hvcnQiLCB7IGxvY2FsZSA9IG51bGwgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVsbCwgImdyZWdvcnkiKS5lcmFzKGxlbmd0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIHNldCBvZiBhdmFpbGFibGUgZmVhdHVyZXMgaW4gdGhpcyBlbnZpcm9ubWVudC4KICAgICAqIFNvbWUgZmVhdHVyZXMgb2YgTHV4b24gYXJlIG5vdCBhdmFpbGFibGUgaW4gYWxsIGVudmlyb25tZW50cy4gRm9yIGV4YW1wbGUsIG9uIG9sZGVyIGJyb3dzZXJzLCByZWxhdGl2ZSB0aW1lIGZvcm1hdHRpbmcgc3VwcG9ydCBpcyBub3QgYXZhaWxhYmxlLiBVc2UgdGhpcyBmdW5jdGlvbiB0byBmaWd1cmUgb3V0IGlmIHRoYXQncyB0aGUgY2FzZS4KICAgICAqIEtleXM6CiAgICAgKiAqIGByZWxhdGl2ZWA6IHdoZXRoZXIgdGhpcyBlbnZpcm9ubWVudCBzdXBwb3J0cyByZWxhdGl2ZSB0aW1lIGZvcm1hdHRpbmcKICAgICAqIEBleGFtcGxlIEluZm8uZmVhdHVyZXMoKSAvLz0+IHsgcmVsYXRpdmU6IGZhbHNlIH0KICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGZlYXR1cmVzKCkgewogICAgICByZXR1cm4geyByZWxhdGl2ZTogaGFzUmVsYXRpdmUoKSB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gZGF5RGlmZihlYXJsaWVyLCBsYXRlcikgewogICAgY29uc3QgdXRjRGF5U3RhcnQgPSAoZHQpID0+IGR0LnRvVVRDKDAsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KS5zdGFydE9mKCJkYXkiKS52YWx1ZU9mKCksCiAgICAgIG1zID0gdXRjRGF5U3RhcnQobGF0ZXIpIC0gdXRjRGF5U3RhcnQoZWFybGllcik7CiAgICByZXR1cm4gTWF0aC5mbG9vcihEdXJhdGlvbi5mcm9tTWlsbGlzKG1zKS5hcygiZGF5cyIpKTsKICB9CgogIGZ1bmN0aW9uIGhpZ2hPcmRlckRpZmZzKGN1cnNvciwgbGF0ZXIsIHVuaXRzKSB7CiAgICBjb25zdCBkaWZmZXJzID0gWwogICAgICBbInllYXJzIiwgKGEsIGIpID0+IGIueWVhciAtIGEueWVhcl0sCiAgICAgIFsicXVhcnRlcnMiLCAoYSwgYikgPT4gYi5xdWFydGVyIC0gYS5xdWFydGVyICsgKGIueWVhciAtIGEueWVhcikgKiA0XSwKICAgICAgWyJtb250aHMiLCAoYSwgYikgPT4gYi5tb250aCAtIGEubW9udGggKyAoYi55ZWFyIC0gYS55ZWFyKSAqIDEyXSwKICAgICAgWwogICAgICAgICJ3ZWVrcyIsCiAgICAgICAgKGEsIGIpID0+IHsKICAgICAgICAgIGNvbnN0IGRheXMgPSBkYXlEaWZmKGEsIGIpOwogICAgICAgICAgcmV0dXJuIChkYXlzIC0gKGRheXMgJSA3KSkgLyA3OwogICAgICAgIH0sCiAgICAgIF0sCiAgICAgIFsiZGF5cyIsIGRheURpZmZdLAogICAgXTsKCiAgICBjb25zdCByZXN1bHRzID0ge307CiAgICBjb25zdCBlYXJsaWVyID0gY3Vyc29yOwogICAgbGV0IGxvd2VzdE9yZGVyLCBoaWdoV2F0ZXI7CgogICAgLyogVGhpcyBsb29wIHRyaWVzIHRvIGRpZmYgdXNpbmcgbGFyZ2VyIHVuaXRzIGZpcnN0LgogICAgICAgSWYgd2Ugb3ZlcnNob290LCB3ZSBiYWNrdHJhY2sgYW5kIHRyeSB0aGUgbmV4dCBzbWFsbGVyIHVuaXQuCiAgICAgICAiY3Vyc29yIiBzdGFydHMgb3V0IGF0IHRoZSBlYXJsaWVyIHRpbWVzdGFtcCBhbmQgbW92ZXMgY2xvc2VyIGFuZCBjbG9zZXIgdG8gImxhdGVyIgogICAgICAgYXMgd2UgdXNlIHNtYWxsZXIgYW5kIHNtYWxsZXIgdW5pdHMuCiAgICAgICBoaWdoV2F0ZXIga2VlcHMgdHJhY2sgb2Ygd2hlcmUgd2Ugd291bGQgYmUgaWYgd2UgYWRkZWQgb25lIG1vcmUgb2YgdGhlIHNtYWxsZXN0IHVuaXQsCiAgICAgICB0aGlzIGlzIHVzZWQgbGF0ZXIgdG8gcG90ZW50aWFsbHkgY29udmVydCBhbnkgZGlmZmVyZW5jZSBzbWFsbGVyIHRoYW4gdGhlIHNtYWxsZXN0IGhpZ2hlciBvcmRlciB1bml0CiAgICAgICBpbnRvIGEgZnJhY3Rpb24gb2YgdGhhdCBzbWFsbGVzdCBoaWdoZXIgb3JkZXIgdW5pdAogICAgKi8KICAgIGZvciAoY29uc3QgW3VuaXQsIGRpZmZlcl0gb2YgZGlmZmVycykgewogICAgICBpZiAodW5pdHMuaW5kZXhPZih1bml0KSA+PSAwKSB7CiAgICAgICAgbG93ZXN0T3JkZXIgPSB1bml0OwoKICAgICAgICByZXN1bHRzW3VuaXRdID0gZGlmZmVyKGN1cnNvciwgbGF0ZXIpOwogICAgICAgIGhpZ2hXYXRlciA9IGVhcmxpZXIucGx1cyhyZXN1bHRzKTsKCiAgICAgICAgaWYgKGhpZ2hXYXRlciA+IGxhdGVyKSB7CiAgICAgICAgICAvLyB3ZSBvdmVyc2hvdCB0aGUgZW5kIHBvaW50LCBiYWNrdHJhY2sgY3Vyc29yIGJ5IDEKICAgICAgICAgIHJlc3VsdHNbdW5pdF0tLTsKICAgICAgICAgIGN1cnNvciA9IGVhcmxpZXIucGx1cyhyZXN1bHRzKTsKCiAgICAgICAgICAvLyBpZiB3ZSBhcmUgc3RpbGwgb3ZlcnNob290aW5nIG5vdywgd2UgbmVlZCB0byBiYWNrdHJhY2sgYWdhaW4KICAgICAgICAgIC8vIHRoaXMgaGFwcGVucyBpbiBjZXJ0YWluIHNpdHVhdGlvbnMgd2hlbiBkaWZmaW5nIHRpbWVzIGluIGRpZmZlcmVudCB6b25lcywKICAgICAgICAgIC8vIGJlY2F1c2UgdGhpcyBjYWxjdWxhdGlvbiBpZ25vcmVzIHRpbWUgem9uZXMKICAgICAgICAgIGlmIChjdXJzb3IgPiBsYXRlcikgewogICAgICAgICAgICAvLyBrZWVwIHRoZSAib3ZlcnNob3QgYnkgMSIgYXJvdW5kIGFzIGhpZ2hXYXRlcgogICAgICAgICAgICBoaWdoV2F0ZXIgPSBjdXJzb3I7CiAgICAgICAgICAgIC8vIGJhY2t0cmFjayBjdXJzb3IgYnkgMQogICAgICAgICAgICByZXN1bHRzW3VuaXRdLS07CiAgICAgICAgICAgIGN1cnNvciA9IGVhcmxpZXIucGx1cyhyZXN1bHRzKTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgY3Vyc29yID0gaGlnaFdhdGVyOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHJldHVybiBbY3Vyc29yLCByZXN1bHRzLCBoaWdoV2F0ZXIsIGxvd2VzdE9yZGVyXTsKICB9CgogIGZ1bmN0aW9uIGRpZmYgKGVhcmxpZXIsIGxhdGVyLCB1bml0cywgb3B0cykgewogICAgbGV0IFtjdXJzb3IsIHJlc3VsdHMsIGhpZ2hXYXRlciwgbG93ZXN0T3JkZXJdID0gaGlnaE9yZGVyRGlmZnMoZWFybGllciwgbGF0ZXIsIHVuaXRzKTsKCiAgICBjb25zdCByZW1haW5pbmdNaWxsaXMgPSBsYXRlciAtIGN1cnNvcjsKCiAgICBjb25zdCBsb3dlck9yZGVyVW5pdHMgPSB1bml0cy5maWx0ZXIoCiAgICAgICh1KSA9PiBbImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyIsICJtaWxsaXNlY29uZHMiXS5pbmRleE9mKHUpID49IDAKICAgICk7CgogICAgaWYgKGxvd2VyT3JkZXJVbml0cy5sZW5ndGggPT09IDApIHsKICAgICAgaWYgKGhpZ2hXYXRlciA8IGxhdGVyKSB7CiAgICAgICAgaGlnaFdhdGVyID0gY3Vyc29yLnBsdXMoeyBbbG93ZXN0T3JkZXJdOiAxIH0pOwogICAgICB9CgogICAgICBpZiAoaGlnaFdhdGVyICE9PSBjdXJzb3IpIHsKICAgICAgICByZXN1bHRzW2xvd2VzdE9yZGVyXSA9IChyZXN1bHRzW2xvd2VzdE9yZGVyXSB8fCAwKSArIHJlbWFpbmluZ01pbGxpcyAvIChoaWdoV2F0ZXIgLSBjdXJzb3IpOwogICAgICB9CiAgICB9CgogICAgY29uc3QgZHVyYXRpb24gPSBEdXJhdGlvbi5mcm9tT2JqZWN0KHJlc3VsdHMsIG9wdHMpOwoKICAgIGlmIChsb3dlck9yZGVyVW5pdHMubGVuZ3RoID4gMCkgewogICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU1pbGxpcyhyZW1haW5pbmdNaWxsaXMsIG9wdHMpCiAgICAgICAgLnNoaWZ0VG8oLi4ubG93ZXJPcmRlclVuaXRzKQogICAgICAgIC5wbHVzKGR1cmF0aW9uKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBkdXJhdGlvbjsKICAgIH0KICB9CgogIGNvbnN0IG51bWJlcmluZ1N5c3RlbXMgPSB7CiAgICBhcmFiOiAiW1x1MDY2MC1cdTA2NjldIiwKICAgIGFyYWJleHQ6ICJbXHUwNkYwLVx1MDZGOV0iLAogICAgYmFsaTogIltcdTFCNTAtXHUxQjU5XSIsCiAgICBiZW5nOiAiW1x1MDlFNi1cdTA5RUZdIiwKICAgIGRldmE6ICJbXHUwOTY2LVx1MDk2Rl0iLAogICAgZnVsbHdpZGU6ICJbXHVGRjEwLVx1RkYxOV0iLAogICAgZ3VqcjogIltcdTBBRTYtXHUwQUVGXSIsCiAgICBoYW5pZGVjOiAiW+OAh3zkuIB85LqMfOS4iXzlm5t85LqUfOWFrXzkuIN85YWrfOS5nV0iLAogICAga2htcjogIltcdTE3RTAtXHUxN0U5XSIsCiAgICBrbmRhOiAiW1x1MENFNi1cdTBDRUZdIiwKICAgIGxhb286ICJbXHUwRUQwLVx1MEVEOV0iLAogICAgbGltYjogIltcdTE5NDYtXHUxOTRGXSIsCiAgICBtbHltOiAiW1x1MEQ2Ni1cdTBENkZdIiwKICAgIG1vbmc6ICJbXHUxODEwLVx1MTgxOV0iLAogICAgbXltcjogIltcdTEwNDAtXHUxMDQ5XSIsCiAgICBvcnlhOiAiW1x1MEI2Ni1cdTBCNkZdIiwKICAgIHRhbWxkZWM6ICJbXHUwQkU2LVx1MEJFRl0iLAogICAgdGVsdTogIltcdTBDNjYtXHUwQzZGXSIsCiAgICB0aGFpOiAiW1x1MEU1MC1cdTBFNTldIiwKICAgIHRpYnQ6ICJbXHUwRjIwLVx1MEYyOV0iLAogICAgbGF0bjogIlxcZCIsCiAgfTsKCiAgY29uc3QgbnVtYmVyaW5nU3lzdGVtc1VURjE2ID0gewogICAgYXJhYjogWzE2MzIsIDE2NDFdLAogICAgYXJhYmV4dDogWzE3NzYsIDE3ODVdLAogICAgYmFsaTogWzY5OTIsIDcwMDFdLAogICAgYmVuZzogWzI1MzQsIDI1NDNdLAogICAgZGV2YTogWzI0MDYsIDI0MTVdLAogICAgZnVsbHdpZGU6IFs2NTI5NiwgNjUzMDNdLAogICAgZ3VqcjogWzI3OTAsIDI3OTldLAogICAga2htcjogWzYxMTIsIDYxMjFdLAogICAga25kYTogWzMzMDIsIDMzMTFdLAogICAgbGFvbzogWzM3OTIsIDM4MDFdLAogICAgbGltYjogWzY0NzAsIDY0NzldLAogICAgbWx5bTogWzM0MzAsIDM0MzldLAogICAgbW9uZzogWzYxNjAsIDYxNjldLAogICAgbXltcjogWzQxNjAsIDQxNjldLAogICAgb3J5YTogWzI5MTgsIDI5MjddLAogICAgdGFtbGRlYzogWzMwNDYsIDMwNTVdLAogICAgdGVsdTogWzMxNzQsIDMxODNdLAogICAgdGhhaTogWzM2NjQsIDM2NzNdLAogICAgdGlidDogWzM4NzIsIDM4ODFdLAogIH07CgogIGNvbnN0IGhhbmlkZWNDaGFycyA9IG51bWJlcmluZ1N5c3RlbXMuaGFuaWRlYy5yZXBsYWNlKC9bXFt8XF1dL2csICIiKS5zcGxpdCgiIik7CgogIGZ1bmN0aW9uIHBhcnNlRGlnaXRzKHN0cikgewogICAgbGV0IHZhbHVlID0gcGFyc2VJbnQoc3RyLCAxMCk7CiAgICBpZiAoaXNOYU4odmFsdWUpKSB7CiAgICAgIHZhbHVlID0gIiI7CiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgY29uc3QgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpOwoKICAgICAgICBpZiAoc3RyW2ldLnNlYXJjaChudW1iZXJpbmdTeXN0ZW1zLmhhbmlkZWMpICE9PSAtMSkgewogICAgICAgICAgdmFsdWUgKz0gaGFuaWRlY0NoYXJzLmluZGV4T2Yoc3RyW2ldKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbnVtYmVyaW5nU3lzdGVtc1VURjE2KSB7CiAgICAgICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSBudW1iZXJpbmdTeXN0ZW1zVVRGMTZba2V5XTsKICAgICAgICAgICAgaWYgKGNvZGUgPj0gbWluICYmIGNvZGUgPD0gbWF4KSB7CiAgICAgICAgICAgICAgdmFsdWUgKz0gY29kZSAtIG1pbjsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gcGFyc2VJbnQodmFsdWUsIDEwKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiB2YWx1ZTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGRpZ2l0UmVnZXgoeyBudW1iZXJpbmdTeXN0ZW0gfSwgYXBwZW5kID0gIiIpIHsKICAgIHJldHVybiBuZXcgUmVnRXhwKGAke251bWJlcmluZ1N5c3RlbXNbbnVtYmVyaW5nU3lzdGVtIHx8ICJsYXRuIl19JHthcHBlbmR9YCk7CiAgfQoKICBjb25zdCBNSVNTSU5HX0ZUUCA9ICJtaXNzaW5nIEludGwuRGF0ZVRpbWVGb3JtYXQuZm9ybWF0VG9QYXJ0cyBzdXBwb3J0IjsKCiAgZnVuY3Rpb24gaW50VW5pdChyZWdleCwgcG9zdCA9IChpKSA9PiBpKSB7CiAgICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbc10pID0+IHBvc3QocGFyc2VEaWdpdHMocykpIH07CiAgfQoKICBjb25zdCBOQlNQID0gU3RyaW5nLmZyb21DaGFyQ29kZSgxNjApOwogIGNvbnN0IHNwYWNlT3JOQlNQID0gYFsgJHtOQlNQfV1gOwogIGNvbnN0IHNwYWNlT3JOQlNQUmVnRXhwID0gbmV3IFJlZ0V4cChzcGFjZU9yTkJTUCwgImciKTsKCiAgZnVuY3Rpb24gZml4TGlzdFJlZ2V4KHMpIHsKICAgIC8vIG1ha2UgZG90cyBvcHRpb25hbCBhbmQgYWxzbyBtYWtlIHRoZW0gbGl0ZXJhbAogICAgLy8gbWFrZSBzcGFjZSBhbmQgbm9uIGJyZWFrYWJsZSBzcGFjZSBjaGFyYWN0ZXJzIGludGVyY2hhbmdlYWJsZQogICAgcmV0dXJuIHMucmVwbGFjZSgvXC4vZywgIlxcLj8iKS5yZXBsYWNlKHNwYWNlT3JOQlNQUmVnRXhwLCBzcGFjZU9yTkJTUCk7CiAgfQoKICBmdW5jdGlvbiBzdHJpcEluc2Vuc2l0aXZpdGllcyhzKSB7CiAgICByZXR1cm4gcwogICAgICAucmVwbGFjZSgvXC4vZywgIiIpIC8vIGlnbm9yZSBkb3RzIHRoYXQgd2VyZSBtYWRlIG9wdGlvbmFsCiAgICAgIC5yZXBsYWNlKHNwYWNlT3JOQlNQUmVnRXhwLCAiICIpIC8vIGludGVyY2hhbmdlIHNwYWNlIGFuZCBuYnNwCiAgICAgIC50b0xvd2VyQ2FzZSgpOwogIH0KCiAgZnVuY3Rpb24gb25lT2Yoc3RyaW5ncywgc3RhcnRJbmRleCkgewogICAgaWYgKHN0cmluZ3MgPT09IG51bGwpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gewogICAgICAgIHJlZ2V4OiBSZWdFeHAoc3RyaW5ncy5tYXAoZml4TGlzdFJlZ2V4KS5qb2luKCJ8IikpLAogICAgICAgIGRlc2VyOiAoW3NdKSA9PgogICAgICAgICAgc3RyaW5ncy5maW5kSW5kZXgoKGkpID0+IHN0cmlwSW5zZW5zaXRpdml0aWVzKHMpID09PSBzdHJpcEluc2Vuc2l0aXZpdGllcyhpKSkgKyBzdGFydEluZGV4LAogICAgICB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gb2Zmc2V0KHJlZ2V4LCBncm91cHMpIHsKICAgIHJldHVybiB7IHJlZ2V4LCBkZXNlcjogKFssIGgsIG1dKSA9PiBzaWduZWRPZmZzZXQoaCwgbSksIGdyb3VwcyB9OwogIH0KCiAgZnVuY3Rpb24gc2ltcGxlKHJlZ2V4KSB7CiAgICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbc10pID0+IHMgfTsKICB9CgogIGZ1bmN0aW9uIGVzY2FwZVRva2VuKHZhbHVlKSB7CiAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvW1wtXFtcXXt9KCkqKz8uLFxcXF4kfCNcc10vZywgIlxcJCYiKTsKICB9CgogIC8qKgogICAqIEBwYXJhbSB0b2tlbgogICAqIEBwYXJhbSB7TG9jYWxlfSBsb2MKICAgKi8KICBmdW5jdGlvbiB1bml0Rm9yVG9rZW4odG9rZW4sIGxvYykgewogICAgY29uc3Qgb25lID0gZGlnaXRSZWdleChsb2MpLAogICAgICB0d28gPSBkaWdpdFJlZ2V4KGxvYywgInsyfSIpLAogICAgICB0aHJlZSA9IGRpZ2l0UmVnZXgobG9jLCAiezN9IiksCiAgICAgIGZvdXIgPSBkaWdpdFJlZ2V4KGxvYywgIns0fSIpLAogICAgICBzaXggPSBkaWdpdFJlZ2V4KGxvYywgIns2fSIpLAogICAgICBvbmVPclR3byA9IGRpZ2l0UmVnZXgobG9jLCAiezEsMn0iKSwKICAgICAgb25lVG9UaHJlZSA9IGRpZ2l0UmVnZXgobG9jLCAiezEsM30iKSwKICAgICAgb25lVG9TaXggPSBkaWdpdFJlZ2V4KGxvYywgInsxLDZ9IiksCiAgICAgIG9uZVRvTmluZSA9IGRpZ2l0UmVnZXgobG9jLCAiezEsOX0iKSwKICAgICAgdHdvVG9Gb3VyID0gZGlnaXRSZWdleChsb2MsICJ7Miw0fSIpLAogICAgICBmb3VyVG9TaXggPSBkaWdpdFJlZ2V4KGxvYywgIns0LDZ9IiksCiAgICAgIGxpdGVyYWwgPSAodCkgPT4gKHsgcmVnZXg6IFJlZ0V4cChlc2NhcGVUb2tlbih0LnZhbCkpLCBkZXNlcjogKFtzXSkgPT4gcywgbGl0ZXJhbDogdHJ1ZSB9KSwKICAgICAgdW5pdGF0ZSA9ICh0KSA9PiB7CiAgICAgICAgaWYgKHRva2VuLmxpdGVyYWwpIHsKICAgICAgICAgIHJldHVybiBsaXRlcmFsKHQpOwogICAgICAgIH0KICAgICAgICBzd2l0Y2ggKHQudmFsKSB7CiAgICAgICAgICAvLyBlcmEKICAgICAgICAgIGNhc2UgIkciOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLmVyYXMoInNob3J0IiksIDApOwogICAgICAgICAgY2FzZSAiR0ciOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLmVyYXMoImxvbmciKSwgMCk7CiAgICAgICAgICAvLyB5ZWFycwogICAgICAgICAgY2FzZSAieSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZVRvU2l4KTsKICAgICAgICAgIGNhc2UgInl5IjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvVG9Gb3VyLCB1bnRydW5jYXRlWWVhcik7CiAgICAgICAgICBjYXNlICJ5eXl5IjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQoZm91cik7CiAgICAgICAgICBjYXNlICJ5eXl5eSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KGZvdXJUb1NpeCk7CiAgICAgICAgICBjYXNlICJ5eXl5eXkiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChzaXgpOwogICAgICAgICAgLy8gbW9udGhzCiAgICAgICAgICBjYXNlICJNIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pOwogICAgICAgICAgY2FzZSAiTU0iOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwogICAgICAgICAgY2FzZSAiTU1NIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoInNob3J0IiwgdHJ1ZSksIDEpOwogICAgICAgICAgY2FzZSAiTU1NTSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJsb25nIiwgdHJ1ZSksIDEpOwogICAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgIkxMIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgIkxMTCI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJzaG9ydCIsIGZhbHNlKSwgMSk7CiAgICAgICAgICBjYXNlICJMTExMIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoImxvbmciLCBmYWxzZSksIDEpOwogICAgICAgICAgLy8gZGF0ZXMKICAgICAgICAgIGNhc2UgImQiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJkZCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICAvLyBvcmRpbmFscwogICAgICAgICAgY2FzZSAibyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZVRvVGhyZWUpOwogICAgICAgICAgY2FzZSAib29vIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodGhyZWUpOwogICAgICAgICAgLy8gdGltZQogICAgICAgICAgY2FzZSAiSEgiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwogICAgICAgICAgY2FzZSAiSCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgImhoIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgImgiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJtbSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICBjYXNlICJtIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pOwogICAgICAgICAgY2FzZSAicSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgInFxIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgInMiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJzcyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICBjYXNlICJTIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lVG9UaHJlZSk7CiAgICAgICAgICBjYXNlICJTU1MiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0aHJlZSk7CiAgICAgICAgICBjYXNlICJ1IjoKICAgICAgICAgICAgcmV0dXJuIHNpbXBsZShvbmVUb05pbmUpOwogICAgICAgICAgY2FzZSAidXUiOgogICAgICAgICAgICByZXR1cm4gc2ltcGxlKG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgInV1dSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZSk7CiAgICAgICAgICAvLyBtZXJpZGllbQogICAgICAgICAgY2FzZSAiYSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubWVyaWRpZW1zKCksIDApOwogICAgICAgICAgLy8gd2Vla1llYXIgKGspCiAgICAgICAgICBjYXNlICJra2trIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQoZm91cik7CiAgICAgICAgICBjYXNlICJrayI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3b1RvRm91ciwgdW50cnVuY2F0ZVllYXIpOwogICAgICAgICAgLy8gd2Vla051bWJlciAoVykKICAgICAgICAgIGNhc2UgIlciOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJXVyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICAvLyB3ZWVrZGF5cwogICAgICAgICAgY2FzZSAiRSI6CiAgICAgICAgICBjYXNlICJjIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lKTsKICAgICAgICAgIGNhc2UgIkVFRSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoInNob3J0IiwgZmFsc2UpLCAxKTsKICAgICAgICAgIGNhc2UgIkVFRUUiOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLndlZWtkYXlzKCJsb25nIiwgZmFsc2UpLCAxKTsKICAgICAgICAgIGNhc2UgImNjYyI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoInNob3J0IiwgdHJ1ZSksIDEpOwogICAgICAgICAgY2FzZSAiY2NjYyI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoImxvbmciLCB0cnVlKSwgMSk7CiAgICAgICAgICAvLyBvZmZzZXQvem9uZQogICAgICAgICAgY2FzZSAiWiI6CiAgICAgICAgICBjYXNlICJaWiI6CiAgICAgICAgICAgIHJldHVybiBvZmZzZXQobmV3IFJlZ0V4cChgKFsrLV0ke29uZU9yVHdvLnNvdXJjZX0pKD86Oigke3R3by5zb3VyY2V9KSk/YCksIDIpOwogICAgICAgICAgY2FzZSAiWlpaIjoKICAgICAgICAgICAgcmV0dXJuIG9mZnNldChuZXcgUmVnRXhwKGAoWystXSR7b25lT3JUd28uc291cmNlfSkoJHt0d28uc291cmNlfSk/YCksIDIpOwogICAgICAgICAgLy8gd2UgZG9uJ3Qgc3VwcG9ydCBaWlpaIChQU1QpIG9yIFpaWlpaIChQYWNpZmljIFN0YW5kYXJkIFRpbWUpIGluIHBhcnNpbmcKICAgICAgICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhbnkgd2F5IHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGV5IGFyZQogICAgICAgICAgY2FzZSAieiI6CiAgICAgICAgICAgIHJldHVybiBzaW1wbGUoL1thLXpfKy0vXXsxLDI1Nn0/L2kpOwogICAgICAgICAgLy8gdGhpcyBzcGVjaWFsLWNhc2UgInRva2VuIiByZXByZXNlbnRzIGEgcGxhY2Ugd2hlcmUgYSBtYWNyby10b2tlbiBleHBhbmRlZCBpbnRvIGEgd2hpdGUtc3BhY2UgbGl0ZXJhbAogICAgICAgICAgLy8gaW4gdGhpcyBjYXNlIHdlIGFjY2VwdCBhbnkgbm9uLW5ld2xpbmUgd2hpdGUtc3BhY2UKICAgICAgICAgIGNhc2UgIiAiOgogICAgICAgICAgICByZXR1cm4gc2ltcGxlKC9bXlxTXG5ccl0vKTsKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHJldHVybiBsaXRlcmFsKHQpOwogICAgICAgIH0KICAgICAgfTsKCiAgICBjb25zdCB1bml0ID0gdW5pdGF0ZSh0b2tlbikgfHwgewogICAgICBpbnZhbGlkUmVhc29uOiBNSVNTSU5HX0ZUUCwKICAgIH07CgogICAgdW5pdC50b2tlbiA9IHRva2VuOwoKICAgIHJldHVybiB1bml0OwogIH0KCiAgY29uc3QgcGFydFR5cGVTdHlsZVRvVG9rZW5WYWwgPSB7CiAgICB5ZWFyOiB7CiAgICAgICIyLWRpZ2l0IjogInl5IiwKICAgICAgbnVtZXJpYzogInl5eXl5IiwKICAgIH0sCiAgICBtb250aDogewogICAgICBudW1lcmljOiAiTSIsCiAgICAgICIyLWRpZ2l0IjogIk1NIiwKICAgICAgc2hvcnQ6ICJNTU0iLAogICAgICBsb25nOiAiTU1NTSIsCiAgICB9LAogICAgZGF5OiB7CiAgICAgIG51bWVyaWM6ICJkIiwKICAgICAgIjItZGlnaXQiOiAiZGQiLAogICAgfSwKICAgIHdlZWtkYXk6IHsKICAgICAgc2hvcnQ6ICJFRUUiLAogICAgICBsb25nOiAiRUVFRSIsCiAgICB9LAogICAgZGF5cGVyaW9kOiAiYSIsCiAgICBkYXlQZXJpb2Q6ICJhIiwKICAgIGhvdXIxMjogewogICAgICBudW1lcmljOiAiaCIsCiAgICAgICIyLWRpZ2l0IjogImhoIiwKICAgIH0sCiAgICBob3VyMjQ6IHsKICAgICAgbnVtZXJpYzogIkgiLAogICAgICAiMi1kaWdpdCI6ICJISCIsCiAgICB9LAogICAgbWludXRlOiB7CiAgICAgIG51bWVyaWM6ICJtIiwKICAgICAgIjItZGlnaXQiOiAibW0iLAogICAgfSwKICAgIHNlY29uZDogewogICAgICBudW1lcmljOiAicyIsCiAgICAgICIyLWRpZ2l0IjogInNzIiwKICAgIH0sCiAgICB0aW1lWm9uZU5hbWU6IHsKICAgICAgbG9uZzogIlpaWlpaIiwKICAgICAgc2hvcnQ6ICJaWloiLAogICAgfSwKICB9OwoKICBmdW5jdGlvbiB0b2tlbkZvclBhcnQocGFydCwgZm9ybWF0T3B0cywgcmVzb2x2ZWRPcHRzKSB7CiAgICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSBwYXJ0OwoKICAgIGlmICh0eXBlID09PSAibGl0ZXJhbCIpIHsKICAgICAgY29uc3QgaXNTcGFjZSA9IC9eXHMrJC8udGVzdCh2YWx1ZSk7CiAgICAgIHJldHVybiB7CiAgICAgICAgbGl0ZXJhbDogIWlzU3BhY2UsCiAgICAgICAgdmFsOiBpc1NwYWNlID8gIiAiIDogdmFsdWUsCiAgICAgIH07CiAgICB9CgogICAgY29uc3Qgc3R5bGUgPSBmb3JtYXRPcHRzW3R5cGVdOwoKICAgIC8vIFRoZSB1c2VyIG1pZ2h0IGhhdmUgZXhwbGljaXRseSBzcGVjaWZpZWQgaG91cjEyIG9yIGhvdXJDeWNsZQogICAgLy8gaWYgc28sIHJlc3BlY3QgdGhlaXIgZGVjaXNpb24KICAgIC8vIGlmIG5vdCwgcmVmZXIgYmFjayB0byB0aGUgcmVzb2x2ZWRPcHRzLCB3aGljaCBhcmUgYmFzZWQgb24gdGhlIGxvY2FsZQogICAgbGV0IGFjdHVhbFR5cGUgPSB0eXBlOwogICAgaWYgKHR5cGUgPT09ICJob3VyIikgewogICAgICBpZiAoZm9ybWF0T3B0cy5ob3VyMTIgIT0gbnVsbCkgewogICAgICAgIGFjdHVhbFR5cGUgPSBmb3JtYXRPcHRzLmhvdXIxMiA/ICJob3VyMTIiIDogImhvdXIyNCI7CiAgICAgIH0gZWxzZSBpZiAoZm9ybWF0T3B0cy5ob3VyQ3ljbGUgIT0gbnVsbCkgewogICAgICAgIGlmIChmb3JtYXRPcHRzLmhvdXJDeWNsZSA9PT0gImgxMSIgfHwgZm9ybWF0T3B0cy5ob3VyQ3ljbGUgPT09ICJoMTIiKSB7CiAgICAgICAgICBhY3R1YWxUeXBlID0gImhvdXIxMiI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGFjdHVhbFR5cGUgPSAiaG91cjI0IjsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8gdG9rZW5zIG9ubHkgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIDI0IGhvdXJzIG9yIG5vdCwKICAgICAgICAvLyBzbyB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayBob3VyQ3ljbGUgaGVyZSwgd2hpY2ggaXMgbGVzcyBzdXBwb3J0ZWQgYW55d2F5cwogICAgICAgIGFjdHVhbFR5cGUgPSByZXNvbHZlZE9wdHMuaG91cjEyID8gImhvdXIxMiIgOiAiaG91cjI0IjsKICAgICAgfQogICAgfQogICAgbGV0IHZhbCA9IHBhcnRUeXBlU3R5bGVUb1Rva2VuVmFsW2FjdHVhbFR5cGVdOwogICAgaWYgKHR5cGVvZiB2YWwgPT09ICJvYmplY3QiKSB7CiAgICAgIHZhbCA9IHZhbFtzdHlsZV07CiAgICB9CgogICAgaWYgKHZhbCkgewogICAgICByZXR1cm4gewogICAgICAgIGxpdGVyYWw6IGZhbHNlLAogICAgICAgIHZhbCwKICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gdW5kZWZpbmVkOwogIH0KCiAgZnVuY3Rpb24gYnVpbGRSZWdleCh1bml0cykgewogICAgY29uc3QgcmUgPSB1bml0cy5tYXAoKHUpID0+IHUucmVnZXgpLnJlZHVjZSgoZiwgcikgPT4gYCR7Zn0oJHtyLnNvdXJjZX0pYCwgIiIpOwogICAgcmV0dXJuIFtgXiR7cmV9JGAsIHVuaXRzXTsKICB9CgogIGZ1bmN0aW9uIG1hdGNoKGlucHV0LCByZWdleCwgaGFuZGxlcnMpIHsKICAgIGNvbnN0IG1hdGNoZXMgPSBpbnB1dC5tYXRjaChyZWdleCk7CgogICAgaWYgKG1hdGNoZXMpIHsKICAgICAgY29uc3QgYWxsID0ge307CiAgICAgIGxldCBtYXRjaEluZGV4ID0gMTsKICAgICAgZm9yIChjb25zdCBpIGluIGhhbmRsZXJzKSB7CiAgICAgICAgaWYgKGhhc093blByb3BlcnR5KGhhbmRsZXJzLCBpKSkgewogICAgICAgICAgY29uc3QgaCA9IGhhbmRsZXJzW2ldLAogICAgICAgICAgICBncm91cHMgPSBoLmdyb3VwcyA/IGguZ3JvdXBzICsgMSA6IDE7CiAgICAgICAgICBpZiAoIWgubGl0ZXJhbCAmJiBoLnRva2VuKSB7CiAgICAgICAgICAgIGFsbFtoLnRva2VuLnZhbFswXV0gPSBoLmRlc2VyKG1hdGNoZXMuc2xpY2UobWF0Y2hJbmRleCwgbWF0Y2hJbmRleCArIGdyb3VwcykpOwogICAgICAgICAgfQogICAgICAgICAgbWF0Y2hJbmRleCArPSBncm91cHM7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBbbWF0Y2hlcywgYWxsXTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBbbWF0Y2hlcywge31dOwogICAgfQogIH0KCiAgZnVuY3Rpb24gZGF0ZVRpbWVGcm9tTWF0Y2hlcyhtYXRjaGVzKSB7CiAgICBjb25zdCB0b0ZpZWxkID0gKHRva2VuKSA9PiB7CiAgICAgIHN3aXRjaCAodG9rZW4pIHsKICAgICAgICBjYXNlICJTIjoKICAgICAgICAgIHJldHVybiAibWlsbGlzZWNvbmQiOwogICAgICAgIGNhc2UgInMiOgogICAgICAgICAgcmV0dXJuICJzZWNvbmQiOwogICAgICAgIGNhc2UgIm0iOgogICAgICAgICAgcmV0dXJuICJtaW51dGUiOwogICAgICAgIGNhc2UgImgiOgogICAgICAgIGNhc2UgIkgiOgogICAgICAgICAgcmV0dXJuICJob3VyIjsKICAgICAgICBjYXNlICJkIjoKICAgICAgICAgIHJldHVybiAiZGF5IjsKICAgICAgICBjYXNlICJvIjoKICAgICAgICAgIHJldHVybiAib3JkaW5hbCI7CiAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgY2FzZSAiTSI6CiAgICAgICAgICByZXR1cm4gIm1vbnRoIjsKICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgIHJldHVybiAieWVhciI7CiAgICAgICAgY2FzZSAiRSI6CiAgICAgICAgY2FzZSAiYyI6CiAgICAgICAgICByZXR1cm4gIndlZWtkYXkiOwogICAgICAgIGNhc2UgIlciOgogICAgICAgICAgcmV0dXJuICJ3ZWVrTnVtYmVyIjsKICAgICAgICBjYXNlICJrIjoKICAgICAgICAgIHJldHVybiAid2Vla1llYXIiOwogICAgICAgIGNhc2UgInEiOgogICAgICAgICAgcmV0dXJuICJxdWFydGVyIjsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgIH07CgogICAgbGV0IHpvbmUgPSBudWxsOwogICAgbGV0IHNwZWNpZmljT2Zmc2V0OwogICAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLnopKSB7CiAgICAgIHpvbmUgPSBJQU5BWm9uZS5jcmVhdGUobWF0Y2hlcy56KTsKICAgIH0KCiAgICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMuWikpIHsKICAgICAgaWYgKCF6b25lKSB7CiAgICAgICAgem9uZSA9IG5ldyBGaXhlZE9mZnNldFpvbmUobWF0Y2hlcy5aKTsKICAgICAgfQogICAgICBzcGVjaWZpY09mZnNldCA9IG1hdGNoZXMuWjsKICAgIH0KCiAgICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMucSkpIHsKICAgICAgbWF0Y2hlcy5NID0gKG1hdGNoZXMucSAtIDEpICogMyArIDE7CiAgICB9CgogICAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLmgpKSB7CiAgICAgIGlmIChtYXRjaGVzLmggPCAxMiAmJiBtYXRjaGVzLmEgPT09IDEpIHsKICAgICAgICBtYXRjaGVzLmggKz0gMTI7CiAgICAgIH0gZWxzZSBpZiAobWF0Y2hlcy5oID09PSAxMiAmJiBtYXRjaGVzLmEgPT09IDApIHsKICAgICAgICBtYXRjaGVzLmggPSAwOwogICAgICB9CiAgICB9CgogICAgaWYgKG1hdGNoZXMuRyA9PT0gMCAmJiBtYXRjaGVzLnkpIHsKICAgICAgbWF0Y2hlcy55ID0gLW1hdGNoZXMueTsKICAgIH0KCiAgICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMudSkpIHsKICAgICAgbWF0Y2hlcy5TID0gcGFyc2VNaWxsaXMobWF0Y2hlcy51KTsKICAgIH0KCiAgICBjb25zdCB2YWxzID0gT2JqZWN0LmtleXMobWF0Y2hlcykucmVkdWNlKChyLCBrKSA9PiB7CiAgICAgIGNvbnN0IGYgPSB0b0ZpZWxkKGspOwogICAgICBpZiAoZikgewogICAgICAgIHJbZl0gPSBtYXRjaGVzW2tdOwogICAgICB9CgogICAgICByZXR1cm4gcjsKICAgIH0sIHt9KTsKCiAgICByZXR1cm4gW3ZhbHMsIHpvbmUsIHNwZWNpZmljT2Zmc2V0XTsKICB9CgogIGxldCBkdW1teURhdGVUaW1lQ2FjaGUgPSBudWxsOwoKICBmdW5jdGlvbiBnZXREdW1teURhdGVUaW1lKCkgewogICAgaWYgKCFkdW1teURhdGVUaW1lQ2FjaGUpIHsKICAgICAgZHVtbXlEYXRlVGltZUNhY2hlID0gRGF0ZVRpbWUuZnJvbU1pbGxpcygxNTU1NTU1NTU1NTU1KTsKICAgIH0KCiAgICByZXR1cm4gZHVtbXlEYXRlVGltZUNhY2hlOwogIH0KCiAgZnVuY3Rpb24gbWF5YmVFeHBhbmRNYWNyb1Rva2VuKHRva2VuLCBsb2NhbGUpIHsKICAgIGlmICh0b2tlbi5saXRlcmFsKSB7CiAgICAgIHJldHVybiB0b2tlbjsKICAgIH0KCiAgICBjb25zdCBmb3JtYXRPcHRzID0gRm9ybWF0dGVyLm1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4udmFsKTsKICAgIGNvbnN0IHRva2VucyA9IGZvcm1hdE9wdHNUb1Rva2Vucyhmb3JtYXRPcHRzLCBsb2NhbGUpOwoKICAgIGlmICh0b2tlbnMgPT0gbnVsbCB8fCB0b2tlbnMuaW5jbHVkZXModW5kZWZpbmVkKSkgewogICAgICByZXR1cm4gdG9rZW47CiAgICB9CgogICAgcmV0dXJuIHRva2VuczsKICB9CgogIGZ1bmN0aW9uIGV4cGFuZE1hY3JvVG9rZW5zKHRva2VucywgbG9jYWxlKSB7CiAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdCguLi50b2tlbnMubWFwKCh0KSA9PiBtYXliZUV4cGFuZE1hY3JvVG9rZW4odCwgbG9jYWxlKSkpOwogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgZnVuY3Rpb24gZXhwbGFpbkZyb21Ub2tlbnMobG9jYWxlLCBpbnB1dCwgZm9ybWF0KSB7CiAgICBjb25zdCB0b2tlbnMgPSBleHBhbmRNYWNyb1Rva2VucyhGb3JtYXR0ZXIucGFyc2VGb3JtYXQoZm9ybWF0KSwgbG9jYWxlKSwKICAgICAgdW5pdHMgPSB0b2tlbnMubWFwKCh0KSA9PiB1bml0Rm9yVG9rZW4odCwgbG9jYWxlKSksCiAgICAgIGRpc3F1YWxpZnlpbmdVbml0ID0gdW5pdHMuZmluZCgodCkgPT4gdC5pbnZhbGlkUmVhc29uKTsKCiAgICBpZiAoZGlzcXVhbGlmeWluZ1VuaXQpIHsKICAgICAgcmV0dXJuIHsgaW5wdXQsIHRva2VucywgaW52YWxpZFJlYXNvbjogZGlzcXVhbGlmeWluZ1VuaXQuaW52YWxpZFJlYXNvbiB9OwogICAgfSBlbHNlIHsKICAgICAgY29uc3QgW3JlZ2V4U3RyaW5nLCBoYW5kbGVyc10gPSBidWlsZFJlZ2V4KHVuaXRzKSwKICAgICAgICByZWdleCA9IFJlZ0V4cChyZWdleFN0cmluZywgImkiKSwKICAgICAgICBbcmF3TWF0Y2hlcywgbWF0Y2hlc10gPSBtYXRjaChpbnB1dCwgcmVnZXgsIGhhbmRsZXJzKSwKICAgICAgICBbcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldF0gPSBtYXRjaGVzCiAgICAgICAgICA/IGRhdGVUaW1lRnJvbU1hdGNoZXMobWF0Y2hlcykKICAgICAgICAgIDogW251bGwsIG51bGwsIHVuZGVmaW5lZF07CiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eShtYXRjaGVzLCAiYSIpICYmIGhhc093blByb3BlcnR5KG1hdGNoZXMsICJIIikpIHsKICAgICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoCiAgICAgICAgICAiQ2FuJ3QgaW5jbHVkZSBtZXJpZGllbSB3aGVuIHNwZWNpZnlpbmcgMjQtaG91ciBmb3JtYXQiCiAgICAgICAgKTsKICAgICAgfQogICAgICByZXR1cm4geyBpbnB1dCwgdG9rZW5zLCByZWdleCwgcmF3TWF0Y2hlcywgbWF0Y2hlcywgcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldCB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gcGFyc2VGcm9tVG9rZW5zKGxvY2FsZSwgaW5wdXQsIGZvcm1hdCkgewogICAgY29uc3QgeyByZXN1bHQsIHpvbmUsIHNwZWNpZmljT2Zmc2V0LCBpbnZhbGlkUmVhc29uIH0gPSBleHBsYWluRnJvbVRva2Vucyhsb2NhbGUsIGlucHV0LCBmb3JtYXQpOwogICAgcmV0dXJuIFtyZXN1bHQsIHpvbmUsIHNwZWNpZmljT2Zmc2V0LCBpbnZhbGlkUmVhc29uXTsKICB9CgogIGZ1bmN0aW9uIGZvcm1hdE9wdHNUb1Rva2Vucyhmb3JtYXRPcHRzLCBsb2NhbGUpIHsKICAgIGlmICghZm9ybWF0T3B0cykgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBjb25zdCBmb3JtYXR0ZXIgPSBGb3JtYXR0ZXIuY3JlYXRlKGxvY2FsZSwgZm9ybWF0T3B0cyk7CiAgICBjb25zdCBkZiA9IGZvcm1hdHRlci5kdEZvcm1hdHRlcihnZXREdW1teURhdGVUaW1lKCkpOwogICAgY29uc3QgcGFydHMgPSBkZi5mb3JtYXRUb1BhcnRzKCk7CiAgICBjb25zdCByZXNvbHZlZE9wdHMgPSBkZi5yZXNvbHZlZE9wdGlvbnMoKTsKICAgIHJldHVybiBwYXJ0cy5tYXAoKHApID0+IHRva2VuRm9yUGFydChwLCBmb3JtYXRPcHRzLCByZXNvbHZlZE9wdHMpKTsKICB9CgogIGNvbnN0IG5vbkxlYXBMYWRkZXIgPSBbMCwgMzEsIDU5LCA5MCwgMTIwLCAxNTEsIDE4MSwgMjEyLCAyNDMsIDI3MywgMzA0LCAzMzRdLAogICAgbGVhcExhZGRlciA9IFswLCAzMSwgNjAsIDkxLCAxMjEsIDE1MiwgMTgyLCAyMTMsIDI0NCwgMjc0LCAzMDUsIDMzNV07CgogIGZ1bmN0aW9uIHVuaXRPdXRPZlJhbmdlKHVuaXQsIHZhbHVlKSB7CiAgICByZXR1cm4gbmV3IEludmFsaWQoCiAgICAgICJ1bml0IG91dCBvZiByYW5nZSIsCiAgICAgIGB5b3Ugc3BlY2lmaWVkICR7dmFsdWV9IChvZiB0eXBlICR7dHlwZW9mIHZhbHVlfSkgYXMgYSAke3VuaXR9LCB3aGljaCBpcyBpbnZhbGlkYAogICAgKTsKICB9CgogIGZ1bmN0aW9uIGRheU9mV2Vlayh5ZWFyLCBtb250aCwgZGF5KSB7CiAgICBjb25zdCBkID0gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGggLSAxLCBkYXkpKTsKCiAgICBpZiAoeWVhciA8IDEwMCAmJiB5ZWFyID49IDApIHsKICAgICAgZC5zZXRVVENGdWxsWWVhcihkLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwKTsKICAgIH0KCiAgICBjb25zdCBqcyA9IGQuZ2V0VVRDRGF5KCk7CgogICAgcmV0dXJuIGpzID09PSAwID8gNyA6IGpzOwogIH0KCiAgZnVuY3Rpb24gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSkgewogICAgcmV0dXJuIGRheSArIChpc0xlYXBZZWFyKHllYXIpID8gbGVhcExhZGRlciA6IG5vbkxlYXBMYWRkZXIpW21vbnRoIC0gMV07CiAgfQoKICBmdW5jdGlvbiB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpIHsKICAgIGNvbnN0IHRhYmxlID0gaXNMZWFwWWVhcih5ZWFyKSA/IGxlYXBMYWRkZXIgOiBub25MZWFwTGFkZGVyLAogICAgICBtb250aDAgPSB0YWJsZS5maW5kSW5kZXgoKGkpID0+IGkgPCBvcmRpbmFsKSwKICAgICAgZGF5ID0gb3JkaW5hbCAtIHRhYmxlW21vbnRoMF07CiAgICByZXR1cm4geyBtb250aDogbW9udGgwICsgMSwgZGF5IH07CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBmdW5jdGlvbiBncmVnb3JpYW5Ub1dlZWsoZ3JlZ09iaikgewogICAgY29uc3QgeyB5ZWFyLCBtb250aCwgZGF5IH0gPSBncmVnT2JqLAogICAgICBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSksCiAgICAgIHdlZWtkYXkgPSBkYXlPZldlZWsoeWVhciwgbW9udGgsIGRheSk7CgogICAgbGV0IHdlZWtOdW1iZXIgPSBNYXRoLmZsb29yKChvcmRpbmFsIC0gd2Vla2RheSArIDEwKSAvIDcpLAogICAgICB3ZWVrWWVhcjsKCiAgICBpZiAod2Vla051bWJlciA8IDEpIHsKICAgICAgd2Vla1llYXIgPSB5ZWFyIC0gMTsKICAgICAgd2Vla051bWJlciA9IHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcik7CiAgICB9IGVsc2UgaWYgKHdlZWtOdW1iZXIgPiB3ZWVrc0luV2Vla1llYXIoeWVhcikpIHsKICAgICAgd2Vla1llYXIgPSB5ZWFyICsgMTsKICAgICAgd2Vla051bWJlciA9IDE7CiAgICB9IGVsc2UgewogICAgICB3ZWVrWWVhciA9IHllYXI7CiAgICB9CgogICAgcmV0dXJuIHsgd2Vla1llYXIsIHdlZWtOdW1iZXIsIHdlZWtkYXksIC4uLnRpbWVPYmplY3QoZ3JlZ09iaikgfTsKICB9CgogIGZ1bmN0aW9uIHdlZWtUb0dyZWdvcmlhbih3ZWVrRGF0YSkgewogICAgY29uc3QgeyB3ZWVrWWVhciwgd2Vla051bWJlciwgd2Vla2RheSB9ID0gd2Vla0RhdGEsCiAgICAgIHdlZWtkYXlPZkphbjQgPSBkYXlPZldlZWsod2Vla1llYXIsIDEsIDQpLAogICAgICB5ZWFySW5EYXlzID0gZGF5c0luWWVhcih3ZWVrWWVhcik7CgogICAgbGV0IG9yZGluYWwgPSB3ZWVrTnVtYmVyICogNyArIHdlZWtkYXkgLSB3ZWVrZGF5T2ZKYW40IC0gMywKICAgICAgeWVhcjsKCiAgICBpZiAob3JkaW5hbCA8IDEpIHsKICAgICAgeWVhciA9IHdlZWtZZWFyIC0gMTsKICAgICAgb3JkaW5hbCArPSBkYXlzSW5ZZWFyKHllYXIpOwogICAgfSBlbHNlIGlmIChvcmRpbmFsID4geWVhckluRGF5cykgewogICAgICB5ZWFyID0gd2Vla1llYXIgKyAxOwogICAgICBvcmRpbmFsIC09IGRheXNJblllYXIod2Vla1llYXIpOwogICAgfSBlbHNlIHsKICAgICAgeWVhciA9IHdlZWtZZWFyOwogICAgfQoKICAgIGNvbnN0IHsgbW9udGgsIGRheSB9ID0gdW5jb21wdXRlT3JkaW5hbCh5ZWFyLCBvcmRpbmFsKTsKICAgIHJldHVybiB7IHllYXIsIG1vbnRoLCBkYXksIC4uLnRpbWVPYmplY3Qod2Vla0RhdGEpIH07CiAgfQoKICBmdW5jdGlvbiBncmVnb3JpYW5Ub09yZGluYWwoZ3JlZ0RhdGEpIHsKICAgIGNvbnN0IHsgeWVhciwgbW9udGgsIGRheSB9ID0gZ3JlZ0RhdGE7CiAgICBjb25zdCBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSk7CiAgICByZXR1cm4geyB5ZWFyLCBvcmRpbmFsLCAuLi50aW1lT2JqZWN0KGdyZWdEYXRhKSB9OwogIH0KCiAgZnVuY3Rpb24gb3JkaW5hbFRvR3JlZ29yaWFuKG9yZGluYWxEYXRhKSB7CiAgICBjb25zdCB7IHllYXIsIG9yZGluYWwgfSA9IG9yZGluYWxEYXRhOwogICAgY29uc3QgeyBtb250aCwgZGF5IH0gPSB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpOwogICAgcmV0dXJuIHsgeWVhciwgbW9udGgsIGRheSwgLi4udGltZU9iamVjdChvcmRpbmFsRGF0YSkgfTsKICB9CgogIGZ1bmN0aW9uIGhhc0ludmFsaWRXZWVrRGF0YShvYmopIHsKICAgIGNvbnN0IHZhbGlkWWVhciA9IGlzSW50ZWdlcihvYmoud2Vla1llYXIpLAogICAgICB2YWxpZFdlZWsgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla051bWJlciwgMSwgd2Vla3NJbldlZWtZZWFyKG9iai53ZWVrWWVhcikpLAogICAgICB2YWxpZFdlZWtkYXkgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla2RheSwgMSwgNyk7CgogICAgaWYgKCF2YWxpZFllYXIpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJ3ZWVrWWVhciIsIG9iai53ZWVrWWVhcik7CiAgICB9IGVsc2UgaWYgKCF2YWxpZFdlZWspIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJ3ZWVrIiwgb2JqLndlZWspOwogICAgfSBlbHNlIGlmICghdmFsaWRXZWVrZGF5KSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgid2Vla2RheSIsIG9iai53ZWVrZGF5KTsKICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7CiAgfQoKICBmdW5jdGlvbiBoYXNJbnZhbGlkT3JkaW5hbERhdGEob2JqKSB7CiAgICBjb25zdCB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLnllYXIpLAogICAgICB2YWxpZE9yZGluYWwgPSBpbnRlZ2VyQmV0d2VlbihvYmoub3JkaW5hbCwgMSwgZGF5c0luWWVhcihvYmoueWVhcikpOwoKICAgIGlmICghdmFsaWRZZWFyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgieWVhciIsIG9iai55ZWFyKTsKICAgIH0gZWxzZSBpZiAoIXZhbGlkT3JkaW5hbCkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoIm9yZGluYWwiLCBvYmoub3JkaW5hbCk7CiAgICB9IGVsc2UgcmV0dXJuIGZhbHNlOwogIH0KCiAgZnVuY3Rpb24gaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEob2JqKSB7CiAgICBjb25zdCB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLnllYXIpLAogICAgICB2YWxpZE1vbnRoID0gaW50ZWdlckJldHdlZW4ob2JqLm1vbnRoLCAxLCAxMiksCiAgICAgIHZhbGlkRGF5ID0gaW50ZWdlckJldHdlZW4ob2JqLmRheSwgMSwgZGF5c0luTW9udGgob2JqLnllYXIsIG9iai5tb250aCkpOwoKICAgIGlmICghdmFsaWRZZWFyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgieWVhciIsIG9iai55ZWFyKTsKICAgIH0gZWxzZSBpZiAoIXZhbGlkTW9udGgpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJtb250aCIsIG9iai5tb250aCk7CiAgICB9IGVsc2UgaWYgKCF2YWxpZERheSkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoImRheSIsIG9iai5kYXkpOwogICAgfSBlbHNlIHJldHVybiBmYWxzZTsKICB9CgogIGZ1bmN0aW9uIGhhc0ludmFsaWRUaW1lRGF0YShvYmopIHsKICAgIGNvbnN0IHsgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kIH0gPSBvYmo7CiAgICBjb25zdCB2YWxpZEhvdXIgPQogICAgICAgIGludGVnZXJCZXR3ZWVuKGhvdXIsIDAsIDIzKSB8fAogICAgICAgIChob3VyID09PSAyNCAmJiBtaW51dGUgPT09IDAgJiYgc2Vjb25kID09PSAwICYmIG1pbGxpc2Vjb25kID09PSAwKSwKICAgICAgdmFsaWRNaW51dGUgPSBpbnRlZ2VyQmV0d2VlbihtaW51dGUsIDAsIDU5KSwKICAgICAgdmFsaWRTZWNvbmQgPSBpbnRlZ2VyQmV0d2VlbihzZWNvbmQsIDAsIDU5KSwKICAgICAgdmFsaWRNaWxsaXNlY29uZCA9IGludGVnZXJCZXR3ZWVuKG1pbGxpc2Vjb25kLCAwLCA5OTkpOwoKICAgIGlmICghdmFsaWRIb3VyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgiaG91ciIsIGhvdXIpOwogICAgfSBlbHNlIGlmICghdmFsaWRNaW51dGUpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJtaW51dGUiLCBtaW51dGUpOwogICAgfSBlbHNlIGlmICghdmFsaWRTZWNvbmQpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJzZWNvbmQiLCBzZWNvbmQpOwogICAgfSBlbHNlIGlmICghdmFsaWRNaWxsaXNlY29uZCkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoIm1pbGxpc2Vjb25kIiwgbWlsbGlzZWNvbmQpOwogICAgfSBlbHNlIHJldHVybiBmYWxzZTsKICB9CgogIGNvbnN0IElOVkFMSUQgPSAiSW52YWxpZCBEYXRlVGltZSI7CiAgY29uc3QgTUFYX0RBVEUgPSA4LjY0ZTE1OwoKICBmdW5jdGlvbiB1bnN1cHBvcnRlZFpvbmUoem9uZSkgewogICAgcmV0dXJuIG5ldyBJbnZhbGlkKCJ1bnN1cHBvcnRlZCB6b25lIiwgYHRoZSB6b25lICIke3pvbmUubmFtZX0iIGlzIG5vdCBzdXBwb3J0ZWRgKTsKICB9CgogIC8vIHdlIGNhY2hlIHdlZWsgZGF0YSBvbiB0aGUgRFQgb2JqZWN0IGFuZCB0aGlzIGludGVybWVkaWF0ZXMgdGhlIGNhY2hlCiAgZnVuY3Rpb24gcG9zc2libHlDYWNoZWRXZWVrRGF0YShkdCkgewogICAgaWYgKGR0LndlZWtEYXRhID09PSBudWxsKSB7CiAgICAgIGR0LndlZWtEYXRhID0gZ3JlZ29yaWFuVG9XZWVrKGR0LmMpOwogICAgfQogICAgcmV0dXJuIGR0LndlZWtEYXRhOwogIH0KCiAgLy8gY2xvbmUgcmVhbGx5IG1lYW5zLCAibWFrZSBhIG5ldyBvYmplY3Qgd2l0aCB0aGVzZSBtb2RpZmljYXRpb25zIi4gYWxsICJzZXR0ZXJzIiByZWFsbHkgdXNlIHRoaXMKICAvLyB0byBjcmVhdGUgYSBuZXcgb2JqZWN0IHdoaWxlIG9ubHkgY2hhbmdpbmcgc29tZSBvZiB0aGUgcHJvcGVydGllcwogIGZ1bmN0aW9uIGNsb25lKGluc3QsIGFsdHMpIHsKICAgIGNvbnN0IGN1cnJlbnQgPSB7CiAgICAgIHRzOiBpbnN0LnRzLAogICAgICB6b25lOiBpbnN0LnpvbmUsCiAgICAgIGM6IGluc3QuYywKICAgICAgbzogaW5zdC5vLAogICAgICBsb2M6IGluc3QubG9jLAogICAgICBpbnZhbGlkOiBpbnN0LmludmFsaWQsCiAgICB9OwogICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7IC4uLmN1cnJlbnQsIC4uLmFsdHMsIG9sZDogY3VycmVudCB9KTsKICB9CgogIC8vIGZpbmQgdGhlIHJpZ2h0IG9mZnNldCBhIGdpdmVuIGxvY2FsIHRpbWUuIFRoZSBvIGlucHV0IGlzIG91ciBndWVzcywgd2hpY2ggZGV0ZXJtaW5lcyB3aGljaAogIC8vIG9mZnNldCB3ZSdsbCBwaWNrIGluIGFtYmlndW91cyBjYXNlcyAoZS5nLiB0aGVyZSBhcmUgdHdvIDMgQU1zIGIvYyBGYWxsYmFjayBEU1QpCiAgZnVuY3Rpb24gZml4T2Zmc2V0KGxvY2FsVFMsIG8sIHR6KSB7CiAgICAvLyBPdXIgVVRDIHRpbWUgaXMganVzdCBhIGd1ZXNzIGJlY2F1c2Ugb3VyIG9mZnNldCBpcyBqdXN0IGEgZ3Vlc3MKICAgIGxldCB1dGNHdWVzcyA9IGxvY2FsVFMgLSBvICogNjAgKiAxMDAwOwoKICAgIC8vIFRlc3Qgd2hldGhlciB0aGUgem9uZSBtYXRjaGVzIHRoZSBvZmZzZXQgZm9yIHRoaXMgdHMKICAgIGNvbnN0IG8yID0gdHoub2Zmc2V0KHV0Y0d1ZXNzKTsKCiAgICAvLyBJZiBzbywgb2Zmc2V0IGRpZG4ndCBjaGFuZ2UgYW5kIHdlJ3JlIGRvbmUKICAgIGlmIChvID09PSBvMikgewogICAgICByZXR1cm4gW3V0Y0d1ZXNzLCBvXTsKICAgIH0KCiAgICAvLyBJZiBub3QsIGNoYW5nZSB0aGUgdHMgYnkgdGhlIGRpZmZlcmVuY2UgaW4gdGhlIG9mZnNldAogICAgdXRjR3Vlc3MgLT0gKG8yIC0gbykgKiA2MCAqIDEwMDA7CgogICAgLy8gSWYgdGhhdCBnaXZlcyB1cyB0aGUgbG9jYWwgdGltZSB3ZSB3YW50LCB3ZSdyZSBkb25lCiAgICBjb25zdCBvMyA9IHR6Lm9mZnNldCh1dGNHdWVzcyk7CiAgICBpZiAobzIgPT09IG8zKSB7CiAgICAgIHJldHVybiBbdXRjR3Vlc3MsIG8yXTsKICAgIH0KCiAgICAvLyBJZiBpdCdzIGRpZmZlcmVudCwgd2UncmUgaW4gYSBob2xlIHRpbWUuIFRoZSBvZmZzZXQgaGFzIGNoYW5nZWQsIGJ1dCB0aGUgd2UgZG9uJ3QgYWRqdXN0IHRoZSB0aW1lCiAgICByZXR1cm4gW2xvY2FsVFMgLSBNYXRoLm1pbihvMiwgbzMpICogNjAgKiAxMDAwLCBNYXRoLm1heChvMiwgbzMpXTsKICB9CgogIC8vIGNvbnZlcnQgYW4gZXBvY2ggdGltZXN0YW1wIGludG8gYSBjYWxlbmRhciBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gb2Zmc2V0CiAgZnVuY3Rpb24gdHNUb09iaih0cywgb2Zmc2V0KSB7CiAgICB0cyArPSBvZmZzZXQgKiA2MCAqIDEwMDA7CgogICAgY29uc3QgZCA9IG5ldyBEYXRlKHRzKTsKCiAgICByZXR1cm4gewogICAgICB5ZWFyOiBkLmdldFVUQ0Z1bGxZZWFyKCksCiAgICAgIG1vbnRoOiBkLmdldFVUQ01vbnRoKCkgKyAxLAogICAgICBkYXk6IGQuZ2V0VVRDRGF0ZSgpLAogICAgICBob3VyOiBkLmdldFVUQ0hvdXJzKCksCiAgICAgIG1pbnV0ZTogZC5nZXRVVENNaW51dGVzKCksCiAgICAgIHNlY29uZDogZC5nZXRVVENTZWNvbmRzKCksCiAgICAgIG1pbGxpc2Vjb25kOiBkLmdldFVUQ01pbGxpc2Vjb25kcygpLAogICAgfTsKICB9CgogIC8vIGNvbnZlcnQgYSBjYWxlbmRhciBvYmplY3QgdG8gYSBlcG9jaCB0aW1lc3RhbXAKICBmdW5jdGlvbiBvYmpUb1RTKG9iaiwgb2Zmc2V0LCB6b25lKSB7CiAgICByZXR1cm4gZml4T2Zmc2V0KG9ialRvTG9jYWxUUyhvYmopLCBvZmZzZXQsIHpvbmUpOwogIH0KCiAgLy8gY3JlYXRlIGEgbmV3IERUIGluc3RhbmNlIGJ5IGFkZGluZyBhIGR1cmF0aW9uLCBhZGp1c3RpbmcgZm9yIERTVHMKICBmdW5jdGlvbiBhZGp1c3RUaW1lKGluc3QsIGR1cikgewogICAgY29uc3Qgb1ByZSA9IGluc3QubywKICAgICAgeWVhciA9IGluc3QuYy55ZWFyICsgTWF0aC50cnVuYyhkdXIueWVhcnMpLAogICAgICBtb250aCA9IGluc3QuYy5tb250aCArIE1hdGgudHJ1bmMoZHVyLm1vbnRocykgKyBNYXRoLnRydW5jKGR1ci5xdWFydGVycykgKiAzLAogICAgICBjID0gewogICAgICAgIC4uLmluc3QuYywKICAgICAgICB5ZWFyLAogICAgICAgIG1vbnRoLAogICAgICAgIGRheToKICAgICAgICAgIE1hdGgubWluKGluc3QuYy5kYXksIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSkgKwogICAgICAgICAgTWF0aC50cnVuYyhkdXIuZGF5cykgKwogICAgICAgICAgTWF0aC50cnVuYyhkdXIud2Vla3MpICogNywKICAgICAgfSwKICAgICAgbWlsbGlzVG9BZGQgPSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsKICAgICAgICB5ZWFyczogZHVyLnllYXJzIC0gTWF0aC50cnVuYyhkdXIueWVhcnMpLAogICAgICAgIHF1YXJ0ZXJzOiBkdXIucXVhcnRlcnMgLSBNYXRoLnRydW5jKGR1ci5xdWFydGVycyksCiAgICAgICAgbW9udGhzOiBkdXIubW9udGhzIC0gTWF0aC50cnVuYyhkdXIubW9udGhzKSwKICAgICAgICB3ZWVrczogZHVyLndlZWtzIC0gTWF0aC50cnVuYyhkdXIud2Vla3MpLAogICAgICAgIGRheXM6IGR1ci5kYXlzIC0gTWF0aC50cnVuYyhkdXIuZGF5cyksCiAgICAgICAgaG91cnM6IGR1ci5ob3VycywKICAgICAgICBtaW51dGVzOiBkdXIubWludXRlcywKICAgICAgICBzZWNvbmRzOiBkdXIuc2Vjb25kcywKICAgICAgICBtaWxsaXNlY29uZHM6IGR1ci5taWxsaXNlY29uZHMsCiAgICAgIH0pLmFzKCJtaWxsaXNlY29uZHMiKSwKICAgICAgbG9jYWxUUyA9IG9ialRvTG9jYWxUUyhjKTsKCiAgICBsZXQgW3RzLCBvXSA9IGZpeE9mZnNldChsb2NhbFRTLCBvUHJlLCBpbnN0LnpvbmUpOwoKICAgIGlmIChtaWxsaXNUb0FkZCAhPT0gMCkgewogICAgICB0cyArPSBtaWxsaXNUb0FkZDsKICAgICAgLy8gdGhhdCBjb3VsZCBoYXZlIGNoYW5nZWQgdGhlIG9mZnNldCBieSBnb2luZyBvdmVyIGEgRFNULCBidXQgd2Ugd2FudCB0byBrZWVwIHRoZSB0cyB0aGUgc2FtZQogICAgICBvID0gaW5zdC56b25lLm9mZnNldCh0cyk7CiAgICB9CgogICAgcmV0dXJuIHsgdHMsIG8gfTsKICB9CgogIC8vIGhlbHBlciB1c2VmdWwgaW4gdHVybmluZyB0aGUgcmVzdWx0cyBvZiBwYXJzaW5nIGludG8gcmVhbCBkYXRlcwogIC8vIGJ5IGhhbmRsaW5nIHRoZSB6b25lIG9wdGlvbnMKICBmdW5jdGlvbiBwYXJzZURhdGFUb0RhdGVUaW1lKHBhcnNlZCwgcGFyc2VkWm9uZSwgb3B0cywgZm9ybWF0LCB0ZXh0LCBzcGVjaWZpY09mZnNldCkgewogICAgY29uc3QgeyBzZXRab25lLCB6b25lIH0gPSBvcHRzOwogICAgaWYgKChwYXJzZWQgJiYgT2JqZWN0LmtleXMocGFyc2VkKS5sZW5ndGggIT09IDApIHx8IHBhcnNlZFpvbmUpIHsKICAgICAgY29uc3QgaW50ZXJwcmV0YXRpb25ab25lID0gcGFyc2VkWm9uZSB8fCB6b25lLAogICAgICAgIGluc3QgPSBEYXRlVGltZS5mcm9tT2JqZWN0KHBhcnNlZCwgewogICAgICAgICAgLi4ub3B0cywKICAgICAgICAgIHpvbmU6IGludGVycHJldGF0aW9uWm9uZSwKICAgICAgICAgIHNwZWNpZmljT2Zmc2V0LAogICAgICAgIH0pOwogICAgICByZXR1cm4gc2V0Wm9uZSA/IGluc3QgOiBpbnN0LnNldFpvbmUoem9uZSk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgKICAgICAgICBuZXcgSW52YWxpZCgidW5wYXJzYWJsZSIsIGB0aGUgaW5wdXQgIiR7dGV4dH0iIGNhbid0IGJlIHBhcnNlZCBhcyAke2Zvcm1hdH1gKQogICAgICApOwogICAgfQogIH0KCiAgLy8gaWYgeW91IHdhbnQgdG8gb3V0cHV0IGEgdGVjaG5pY2FsIGZvcm1hdCAoZS5nLiBSRkMgMjgyMiksIHRoaXMgaGVscGVyCiAgLy8gaGVscHMgaGFuZGxlIHRoZSBkZXRhaWxzCiAgZnVuY3Rpb24gdG9UZWNoRm9ybWF0KGR0LCBmb3JtYXQsIGFsbG93WiA9IHRydWUpIHsKICAgIHJldHVybiBkdC5pc1ZhbGlkCiAgICAgID8gRm9ybWF0dGVyLmNyZWF0ZShMb2NhbGUuY3JlYXRlKCJlbi1VUyIpLCB7CiAgICAgICAgICBhbGxvd1osCiAgICAgICAgICBmb3JjZVNpbXBsZTogdHJ1ZSwKICAgICAgICB9KS5mb3JtYXREYXRlVGltZUZyb21TdHJpbmcoZHQsIGZvcm1hdCkKICAgICAgOiBudWxsOwogIH0KCiAgZnVuY3Rpb24gdG9JU09EYXRlKG8sIGV4dGVuZGVkKSB7CiAgICBjb25zdCBsb25nRm9ybWF0ID0gby5jLnllYXIgPiA5OTk5IHx8IG8uYy55ZWFyIDwgMDsKICAgIGxldCBjID0gIiI7CiAgICBpZiAobG9uZ0Zvcm1hdCAmJiBvLmMueWVhciA+PSAwKSBjICs9ICIrIjsKICAgIGMgKz0gcGFkU3RhcnQoby5jLnllYXIsIGxvbmdGb3JtYXQgPyA2IDogNCk7CgogICAgaWYgKGV4dGVuZGVkKSB7CiAgICAgIGMgKz0gIi0iOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5tb250aCk7CiAgICAgIGMgKz0gIi0iOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5kYXkpOwogICAgfSBlbHNlIHsKICAgICAgYyArPSBwYWRTdGFydChvLmMubW9udGgpOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5kYXkpOwogICAgfQogICAgcmV0dXJuIGM7CiAgfQoKICBmdW5jdGlvbiB0b0lTT1RpbWUoCiAgICBvLAogICAgZXh0ZW5kZWQsCiAgICBzdXBwcmVzc1NlY29uZHMsCiAgICBzdXBwcmVzc01pbGxpc2Vjb25kcywKICAgIGluY2x1ZGVPZmZzZXQsCiAgICBleHRlbmRlZFpvbmUKICApIHsKICAgIGxldCBjID0gcGFkU3RhcnQoby5jLmhvdXIpOwogICAgaWYgKGV4dGVuZGVkKSB7CiAgICAgIGMgKz0gIjoiOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5taW51dGUpOwogICAgICBpZiAoby5jLm1pbGxpc2Vjb25kICE9PSAwIHx8IG8uYy5zZWNvbmQgIT09IDAgfHwgIXN1cHByZXNzU2Vjb25kcykgewogICAgICAgIGMgKz0gIjoiOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5taW51dGUpOwogICAgfQoKICAgIGlmIChvLmMubWlsbGlzZWNvbmQgIT09IDAgfHwgby5jLnNlY29uZCAhPT0gMCB8fCAhc3VwcHJlc3NTZWNvbmRzKSB7CiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLnNlY29uZCk7CgogICAgICBpZiAoby5jLm1pbGxpc2Vjb25kICE9PSAwIHx8ICFzdXBwcmVzc01pbGxpc2Vjb25kcykgewogICAgICAgIGMgKz0gIi4iOwogICAgICAgIGMgKz0gcGFkU3RhcnQoby5jLm1pbGxpc2Vjb25kLCAzKTsKICAgICAgfQogICAgfQoKICAgIGlmIChpbmNsdWRlT2Zmc2V0KSB7CiAgICAgIGlmIChvLmlzT2Zmc2V0Rml4ZWQgJiYgby5vZmZzZXQgPT09IDAgJiYgIWV4dGVuZGVkWm9uZSkgewogICAgICAgIGMgKz0gIloiOwogICAgICB9IGVsc2UgaWYgKG8ubyA8IDApIHsKICAgICAgICBjICs9ICItIjsKICAgICAgICBjICs9IHBhZFN0YXJ0KE1hdGgudHJ1bmMoLW8ubyAvIDYwKSk7CiAgICAgICAgYyArPSAiOiI7CiAgICAgICAgYyArPSBwYWRTdGFydChNYXRoLnRydW5jKC1vLm8gJSA2MCkpOwogICAgICB9IGVsc2UgewogICAgICAgIGMgKz0gIisiOwogICAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYyhvLm8gLyA2MCkpOwogICAgICAgIGMgKz0gIjoiOwogICAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYyhvLm8gJSA2MCkpOwogICAgICB9CiAgICB9CgogICAgaWYgKGV4dGVuZGVkWm9uZSkgewogICAgICBjICs9ICJbIiArIG8uem9uZS5pYW5hTmFtZSArICJdIjsKICAgIH0KICAgIHJldHVybiBjOwogIH0KCiAgLy8gZGVmYXVsdHMgZm9yIHVuc3BlY2lmaWVkIHVuaXRzIGluIHRoZSBzdXBwb3J0ZWQgY2FsZW5kYXJzCiAgY29uc3QgZGVmYXVsdFVuaXRWYWx1ZXMgPSB7CiAgICAgIG1vbnRoOiAxLAogICAgICBkYXk6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH0sCiAgICBkZWZhdWx0V2Vla1VuaXRWYWx1ZXMgPSB7CiAgICAgIHdlZWtOdW1iZXI6IDEsCiAgICAgIHdlZWtkYXk6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH0sCiAgICBkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXMgPSB7CiAgICAgIG9yZGluYWw6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH07CgogIC8vIFVuaXRzIGluIHRoZSBzdXBwb3J0ZWQgY2FsZW5kYXJzLCBzb3J0ZWQgYnkgYmlnbmVzcwogIGNvbnN0IG9yZGVyZWRVbml0cyA9IFsieWVhciIsICJtb250aCIsICJkYXkiLCAiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgIm1pbGxpc2Vjb25kIl0sCiAgICBvcmRlcmVkV2Vla1VuaXRzID0gWwogICAgICAid2Vla1llYXIiLAogICAgICAid2Vla051bWJlciIsCiAgICAgICJ3ZWVrZGF5IiwKICAgICAgImhvdXIiLAogICAgICAibWludXRlIiwKICAgICAgInNlY29uZCIsCiAgICAgICJtaWxsaXNlY29uZCIsCiAgICBdLAogICAgb3JkZXJlZE9yZGluYWxVbml0cyA9IFsieWVhciIsICJvcmRpbmFsIiwgImhvdXIiLCAibWludXRlIiwgInNlY29uZCIsICJtaWxsaXNlY29uZCJdOwoKICAvLyBzdGFuZGFyZGl6ZSBjYXNlIGFuZCBwbHVyYWxpdHkgaW4gdW5pdHMKICBmdW5jdGlvbiBub3JtYWxpemVVbml0KHVuaXQpIHsKICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7CiAgICAgIHllYXI6ICJ5ZWFyIiwKICAgICAgeWVhcnM6ICJ5ZWFyIiwKICAgICAgbW9udGg6ICJtb250aCIsCiAgICAgIG1vbnRoczogIm1vbnRoIiwKICAgICAgZGF5OiAiZGF5IiwKICAgICAgZGF5czogImRheSIsCiAgICAgIGhvdXI6ICJob3VyIiwKICAgICAgaG91cnM6ICJob3VyIiwKICAgICAgbWludXRlOiAibWludXRlIiwKICAgICAgbWludXRlczogIm1pbnV0ZSIsCiAgICAgIHF1YXJ0ZXI6ICJxdWFydGVyIiwKICAgICAgcXVhcnRlcnM6ICJxdWFydGVyIiwKICAgICAgc2Vjb25kOiAic2Vjb25kIiwKICAgICAgc2Vjb25kczogInNlY29uZCIsCiAgICAgIG1pbGxpc2Vjb25kOiAibWlsbGlzZWNvbmQiLAogICAgICBtaWxsaXNlY29uZHM6ICJtaWxsaXNlY29uZCIsCiAgICAgIHdlZWtkYXk6ICJ3ZWVrZGF5IiwKICAgICAgd2Vla2RheXM6ICJ3ZWVrZGF5IiwKICAgICAgd2Vla251bWJlcjogIndlZWtOdW1iZXIiLAogICAgICB3ZWVrc251bWJlcjogIndlZWtOdW1iZXIiLAogICAgICB3ZWVrbnVtYmVyczogIndlZWtOdW1iZXIiLAogICAgICB3ZWVreWVhcjogIndlZWtZZWFyIiwKICAgICAgd2Vla3llYXJzOiAid2Vla1llYXIiLAogICAgICBvcmRpbmFsOiAib3JkaW5hbCIsCiAgICB9W3VuaXQudG9Mb3dlckNhc2UoKV07CgogICAgaWYgKCFub3JtYWxpemVkKSB0aHJvdyBuZXcgSW52YWxpZFVuaXRFcnJvcih1bml0KTsKCiAgICByZXR1cm4gbm9ybWFsaXplZDsKICB9CgogIC8vIHRoaXMgaXMgYSBkdW1iZWQgZG93biB2ZXJzaW9uIG9mIGZyb21PYmplY3QoKSB0aGF0IHJ1bnMgYWJvdXQgNjAlIGZhc3RlcgogIC8vIGJ1dCBkb2Vzbid0IGRvIGFueSB2YWxpZGF0aW9uLCBtYWtlcyBhIGJ1bmNoIG9mIGFzc3VtcHRpb25zIGFib3V0IHdoYXQgdW5pdHMKICAvLyBhcmUgcHJlc2VudCwgYW5kIHNvIG9uLgogIGZ1bmN0aW9uIHF1aWNrRFQob2JqLCBvcHRzKSB7CiAgICBjb25zdCB6b25lID0gbm9ybWFsaXplWm9uZShvcHRzLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSwKICAgICAgbG9jID0gTG9jYWxlLmZyb21PYmplY3Qob3B0cyksCiAgICAgIHRzTm93ID0gU2V0dGluZ3Mubm93KCk7CgogICAgbGV0IHRzLCBvOwoKICAgIC8vIGFzc3VtZSB3ZSBoYXZlIHRoZSBoaWdoZXItb3JkZXIgdW5pdHMKICAgIGlmICghaXNVbmRlZmluZWQob2JqLnllYXIpKSB7CiAgICAgIGZvciAoY29uc3QgdSBvZiBvcmRlcmVkVW5pdHMpIHsKICAgICAgICBpZiAoaXNVbmRlZmluZWQob2JqW3VdKSkgewogICAgICAgICAgb2JqW3VdID0gZGVmYXVsdFVuaXRWYWx1ZXNbdV07CiAgICAgICAgfQogICAgICB9CgogICAgICBjb25zdCBpbnZhbGlkID0gaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEob2JqKSB8fCBoYXNJbnZhbGlkVGltZURhdGEob2JqKTsKICAgICAgaWYgKGludmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChpbnZhbGlkKTsKICAgICAgfQoKICAgICAgY29uc3Qgb2Zmc2V0UHJvdmlzID0gem9uZS5vZmZzZXQodHNOb3cpOwogICAgICBbdHMsIG9dID0gb2JqVG9UUyhvYmosIG9mZnNldFByb3Zpcywgem9uZSk7CiAgICB9IGVsc2UgewogICAgICB0cyA9IHRzTm93OwogICAgfQoKICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoeyB0cywgem9uZSwgbG9jLCBvIH0pOwogIH0KCiAgZnVuY3Rpb24gZGlmZlJlbGF0aXZlKHN0YXJ0LCBlbmQsIG9wdHMpIHsKICAgIGNvbnN0IHJvdW5kID0gaXNVbmRlZmluZWQob3B0cy5yb3VuZCkgPyB0cnVlIDogb3B0cy5yb3VuZCwKICAgICAgZm9ybWF0ID0gKGMsIHVuaXQpID0+IHsKICAgICAgICBjID0gcm91bmRUbyhjLCByb3VuZCB8fCBvcHRzLmNhbGVuZGFyeSA/IDAgOiAyLCB0cnVlKTsKICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBlbmQubG9jLmNsb25lKG9wdHMpLnJlbEZvcm1hdHRlcihvcHRzKTsKICAgICAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdChjLCB1bml0KTsKICAgICAgfSwKICAgICAgZGlmZmVyID0gKHVuaXQpID0+IHsKICAgICAgICBpZiAob3B0cy5jYWxlbmRhcnkpIHsKICAgICAgICAgIGlmICghZW5kLmhhc1NhbWUoc3RhcnQsIHVuaXQpKSB7CiAgICAgICAgICAgIHJldHVybiBlbmQuc3RhcnRPZih1bml0KS5kaWZmKHN0YXJ0LnN0YXJ0T2YodW5pdCksIHVuaXQpLmdldCh1bml0KTsKICAgICAgICAgIH0gZWxzZSByZXR1cm4gMDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIGVuZC5kaWZmKHN0YXJ0LCB1bml0KS5nZXQodW5pdCk7CiAgICAgICAgfQogICAgICB9OwoKICAgIGlmIChvcHRzLnVuaXQpIHsKICAgICAgcmV0dXJuIGZvcm1hdChkaWZmZXIob3B0cy51bml0KSwgb3B0cy51bml0KTsKICAgIH0KCiAgICBmb3IgKGNvbnN0IHVuaXQgb2Ygb3B0cy51bml0cykgewogICAgICBjb25zdCBjb3VudCA9IGRpZmZlcih1bml0KTsKICAgICAgaWYgKE1hdGguYWJzKGNvdW50KSA+PSAxKSB7CiAgICAgICAgcmV0dXJuIGZvcm1hdChjb3VudCwgdW5pdCk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBmb3JtYXQoc3RhcnQgPiBlbmQgPyAtMCA6IDAsIG9wdHMudW5pdHNbb3B0cy51bml0cy5sZW5ndGggLSAxXSk7CiAgfQoKICBmdW5jdGlvbiBsYXN0T3B0cyhhcmdMaXN0KSB7CiAgICBsZXQgb3B0cyA9IHt9LAogICAgICBhcmdzOwogICAgaWYgKGFyZ0xpc3QubGVuZ3RoID4gMCAmJiB0eXBlb2YgYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdID09PSAib2JqZWN0IikgewogICAgICBvcHRzID0gYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdOwogICAgICBhcmdzID0gQXJyYXkuZnJvbShhcmdMaXN0KS5zbGljZSgwLCBhcmdMaXN0Lmxlbmd0aCAtIDEpOwogICAgfSBlbHNlIHsKICAgICAgYXJncyA9IEFycmF5LmZyb20oYXJnTGlzdCk7CiAgICB9CiAgICByZXR1cm4gW29wdHMsIGFyZ3NdOwogIH0KCiAgLyoqCiAgICogQSBEYXRlVGltZSBpcyBhbiBpbW11dGFibGUgZGF0YSBzdHJ1Y3R1cmUgcmVwcmVzZW50aW5nIGEgc3BlY2lmaWMgZGF0ZSBhbmQgdGltZSBhbmQgYWNjb21wYW55aW5nIG1ldGhvZHMuIEl0IGNvbnRhaW5zIGNsYXNzIGFuZCBpbnN0YW5jZSBtZXRob2RzIGZvciBjcmVhdGluZywgcGFyc2luZywgaW50ZXJyb2dhdGluZywgdHJhbnNmb3JtaW5nLCBhbmQgZm9ybWF0dGluZyB0aGVtLgogICAqCiAgICogQSBEYXRlVGltZSBjb21wcmlzZXMgb2Y6CiAgICogKiBBIHRpbWVzdGFtcC4gRWFjaCBEYXRlVGltZSBpbnN0YW5jZSByZWZlcnMgdG8gYSBzcGVjaWZpYyBtaWxsaXNlY29uZCBvZiB0aGUgVW5peCBlcG9jaC4KICAgKiAqIEEgdGltZSB6b25lLiBFYWNoIGluc3RhbmNlIGlzIGNvbnNpZGVyZWQgaW4gdGhlIGNvbnRleHQgb2YgYSBzcGVjaWZpYyB6b25lIChieSBkZWZhdWx0IHRoZSBsb2NhbCBzeXN0ZW0ncyB6b25lKS4KICAgKiAqIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyB0aGF0IGVmZmVjdCBob3cgb3V0cHV0IHN0cmluZ3MgYXJlIGZvcm1hdHRlZCwgc3VjaCBhcyBgbG9jYWxlYCwgYG51bWJlcmluZ1N5c3RlbWAsIGFuZCBgb3V0cHV0Q2FsZW5kYXJgLgogICAqCiAgICogSGVyZSBpcyBhIGJyaWVmIG92ZXJ2aWV3IG9mIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgZnVuY3Rpb25hbGl0eSBpdCBwcm92aWRlczoKICAgKgogICAqICogKipDcmVhdGlvbioqOiBUbyBjcmVhdGUgYSBEYXRlVGltZSBmcm9tIGl0cyBjb21wb25lbnRzLCB1c2Ugb25lIG9mIGl0cyBmYWN0b3J5IGNsYXNzIG1ldGhvZHM6IHtAbGluayBEYXRlVGltZS5sb2NhbH0sIHtAbGluayBEYXRlVGltZS51dGN9LCBhbmQgKG1vc3QgZmxleGlibHkpIHtAbGluayBEYXRlVGltZS5mcm9tT2JqZWN0fS4gVG8gY3JlYXRlIG9uZSBmcm9tIGEgc3RhbmRhcmQgc3RyaW5nIGZvcm1hdCwgdXNlIHtAbGluayBEYXRlVGltZS5mcm9tSVNPfSwge0BsaW5rIERhdGVUaW1lLmZyb21IVFRQfSwgYW5kIHtAbGluayBEYXRlVGltZS5mcm9tUkZDMjgyMn0uIFRvIGNyZWF0ZSBvbmUgZnJvbSBhIGN1c3RvbSBzdHJpbmcgZm9ybWF0LCB1c2Uge0BsaW5rIERhdGVUaW1lLmZyb21Gb3JtYXR9LiBUbyBjcmVhdGUgb25lIGZyb20gYSBuYXRpdmUgSlMgZGF0ZSwgdXNlIHtAbGluayBEYXRlVGltZS5mcm9tSlNEYXRlfS4KICAgKiAqICoqR3JlZ29yaWFuIGNhbGVuZGFyIGFuZCB0aW1lKio6IFRvIGV4YW1pbmUgdGhlIEdyZWdvcmlhbiBwcm9wZXJ0aWVzIG9mIGEgRGF0ZVRpbWUgaW5kaXZpZHVhbGx5IChpLmUgYXMgb3Bwb3NlZCB0byBjb2xsZWN0aXZlbHkgdGhyb3VnaCB7QGxpbmsgRGF0ZVRpbWUjdG9PYmplY3R9KSwgdXNlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjeWVhcn0sIHtAbGluayBEYXRlVGltZSNtb250aH0sCiAgICoge0BsaW5rIERhdGVUaW1lI2RheX0sIHtAbGluayBEYXRlVGltZSNob3VyfSwge0BsaW5rIERhdGVUaW1lI21pbnV0ZX0sIHtAbGluayBEYXRlVGltZSNzZWNvbmR9LCB7QGxpbmsgRGF0ZVRpbWUjbWlsbGlzZWNvbmR9IGFjY2Vzc29ycy4KICAgKiAqICoqV2VlayBjYWxlbmRhcioqOiBGb3IgSVNPIHdlZWsgY2FsZW5kYXIgYXR0cmlidXRlcywgc2VlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjd2Vla1llYXJ9LCB7QGxpbmsgRGF0ZVRpbWUjd2Vla051bWJlcn0sIGFuZCB7QGxpbmsgRGF0ZVRpbWUjd2Vla2RheX0gYWNjZXNzb3JzLgogICAqICogKipDb25maWd1cmF0aW9uKiogU2VlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjbG9jYWxlfSBhbmQge0BsaW5rIERhdGVUaW1lI251bWJlcmluZ1N5c3RlbX0gYWNjZXNzb3JzLgogICAqICogKipUcmFuc2Zvcm1hdGlvbioqOiBUbyB0cmFuc2Zvcm0gdGhlIERhdGVUaW1lIGludG8gb3RoZXIgRGF0ZVRpbWVzLCB1c2Uge0BsaW5rIERhdGVUaW1lI3NldH0sIHtAbGluayBEYXRlVGltZSNyZWNvbmZpZ3VyZX0sIHtAbGluayBEYXRlVGltZSNzZXRab25lfSwge0BsaW5rIERhdGVUaW1lI3NldExvY2FsZX0sIHtAbGluayBEYXRlVGltZS5wbHVzfSwge0BsaW5rIERhdGVUaW1lI21pbnVzfSwge0BsaW5rIERhdGVUaW1lI2VuZE9mfSwge0BsaW5rIERhdGVUaW1lI3N0YXJ0T2Z9LCB7QGxpbmsgRGF0ZVRpbWUjdG9VVEN9LCBhbmQge0BsaW5rIERhdGVUaW1lI3RvTG9jYWx9LgogICAqICogKipPdXRwdXQqKjogVG8gY29udmVydCB0aGUgRGF0ZVRpbWUgdG8gb3RoZXIgcmVwcmVzZW50YXRpb25zLCB1c2UgdGhlIHtAbGluayBEYXRlVGltZSN0b1JlbGF0aXZlfSwge0BsaW5rIERhdGVUaW1lI3RvUmVsYXRpdmVDYWxlbmRhcn0sIHtAbGluayBEYXRlVGltZSN0b0pTT059LCB7QGxpbmsgRGF0ZVRpbWUjdG9JU099LCB7QGxpbmsgRGF0ZVRpbWUjdG9IVFRQfSwge0BsaW5rIERhdGVUaW1lI3RvT2JqZWN0fSwge0BsaW5rIERhdGVUaW1lI3RvUkZDMjgyMn0sIHtAbGluayBEYXRlVGltZSN0b1N0cmluZ30sIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30sIHtAbGluayBEYXRlVGltZSN0b0Zvcm1hdH0sIHtAbGluayBEYXRlVGltZSN0b01pbGxpc30gYW5kIHtAbGluayBEYXRlVGltZSN0b0pTRGF0ZX0uCiAgICoKICAgKiBUaGVyZSdzIHBsZW50eSBvdGhlcnMgZG9jdW1lbnRlZCBiZWxvdy4gSW4gYWRkaXRpb24sIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHN1YnRsZXIgdG9waWNzIGxpa2UgaW50ZXJuYXRpb25hbGl6YXRpb24sIHRpbWUgem9uZXMsIGFsdGVybmF0aXZlIGNhbGVuZGFycywgdmFsaWRpdHksIGFuZCBzbyBvbiwgc2VlIHRoZSBleHRlcm5hbCBkb2N1bWVudGF0aW9uLgogICAqLwogIGNsYXNzIERhdGVUaW1lIHsKICAgIC8qKgogICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgKi8KICAgIGNvbnN0cnVjdG9yKGNvbmZpZykgewogICAgICBjb25zdCB6b25lID0gY29uZmlnLnpvbmUgfHwgU2V0dGluZ3MuZGVmYXVsdFpvbmU7CgogICAgICBsZXQgaW52YWxpZCA9CiAgICAgICAgY29uZmlnLmludmFsaWQgfHwKICAgICAgICAoTnVtYmVyLmlzTmFOKGNvbmZpZy50cykgPyBuZXcgSW52YWxpZCgiaW52YWxpZCBpbnB1dCIpIDogbnVsbCkgfHwKICAgICAgICAoIXpvbmUuaXNWYWxpZCA/IHVuc3VwcG9ydGVkWm9uZSh6b25lKSA6IG51bGwpOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLnRzID0gaXNVbmRlZmluZWQoY29uZmlnLnRzKSA/IFNldHRpbmdzLm5vdygpIDogY29uZmlnLnRzOwoKICAgICAgbGV0IGMgPSBudWxsLAogICAgICAgIG8gPSBudWxsOwogICAgICBpZiAoIWludmFsaWQpIHsKICAgICAgICBjb25zdCB1bmNoYW5nZWQgPSBjb25maWcub2xkICYmIGNvbmZpZy5vbGQudHMgPT09IHRoaXMudHMgJiYgY29uZmlnLm9sZC56b25lLmVxdWFscyh6b25lKTsKCiAgICAgICAgaWYgKHVuY2hhbmdlZCkgewogICAgICAgICAgW2MsIG9dID0gW2NvbmZpZy5vbGQuYywgY29uZmlnLm9sZC5vXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY29uc3Qgb3QgPSB6b25lLm9mZnNldCh0aGlzLnRzKTsKICAgICAgICAgIGMgPSB0c1RvT2JqKHRoaXMudHMsIG90KTsKICAgICAgICAgIGludmFsaWQgPSBOdW1iZXIuaXNOYU4oYy55ZWFyKSA/IG5ldyBJbnZhbGlkKCJpbnZhbGlkIGlucHV0IikgOiBudWxsOwogICAgICAgICAgYyA9IGludmFsaWQgPyBudWxsIDogYzsKICAgICAgICAgIG8gPSBpbnZhbGlkID8gbnVsbCA6IG90OwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgdGhpcy5fem9uZSA9IHpvbmU7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubG9jID0gY29uZmlnLmxvYyB8fCBMb2NhbGUuY3JlYXRlKCk7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuaW52YWxpZCA9IGludmFsaWQ7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMud2Vla0RhdGEgPSBudWxsOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmMgPSBjOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLm8gPSBvOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25EYXRlVGltZSA9IHRydWU7CiAgICB9CgogICAgLy8gQ09OU1RSVUNUCgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmb3IgdGhlIGN1cnJlbnQgaW5zdGFudCwgaW4gdGhlIHN5c3RlbSdzIHRpbWUgem9uZS4KICAgICAqCiAgICAgKiBVc2UgU2V0dGluZ3MgdG8gb3ZlcnJpZGUgdGhlc2UgZGVmYXVsdCB2YWx1ZXMgaWYgbmVlZGVkLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oKSAvL34+IG5vdyBpbiB0aGUgSVNPIGZvcm1hdAogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBub3coKSB7CiAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoe30pOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbG9jYWwgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbeWVhcl0gLSBUaGUgY2FsZW5kYXIgeWVhci4gSWYgb21pdHRlZCAoYXMgaW4sIGNhbGwgYGxvY2FsKClgIHdpdGggbm8gYXJndW1lbnRzKSwgdGhlIGN1cnJlbnQgdGltZSB3aWxsIGJlIHVzZWQKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbW9udGg9MV0gLSBUaGUgbW9udGgsIDEtaW5kZXhlZAogICAgICogQHBhcmFtIHtudW1iZXJ9IFtkYXk9MV0gLSBUaGUgZGF5IG9mIHRoZSBtb250aCwgMS1pbmRleGVkCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2hvdXI9MF0gLSBUaGUgaG91ciBvZiB0aGUgZGF5LCBpbiAyNC1ob3VyIHRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWludXRlPTBdIC0gVGhlIG1pbnV0ZSBvZiB0aGUgaG91ciwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW21pbGxpc2Vjb25kPTBdIC0gVGhlIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA5OTkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiBub3cKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKHsgem9uZTogIkFtZXJpY2EvTmV3X1lvcmsiIH0pICAgICAgLy9+PiBub3csIGluIFVTIGVhc3QgY29hc3QgdGltZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IDIwMTctMDEtMDFUMDA6MDA6MDAKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgeyBsb2NhbGU6ICJmciIgfSkgICAgIC8vfj4gMjAxNy0wMy0xMlQwMDowMDowMCwgd2l0aCBhIEZyZW5jaCBsb2NhbGUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCA1KSAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjAwOjAwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgeyB6b25lOiAidXRjIiB9KSAgIC8vfj4gMjAxNy0wMy0xMlQwNTowMDowMCwgaW4gVVRDCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgNDUpICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NTowMAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMywgMTIsIDUsIDQ1LCAxMCkgICAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6NDU6MTAKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTAsIDc2NSkgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwLjc2NQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBsb2NhbCgpIHsKICAgICAgY29uc3QgW29wdHMsIGFyZ3NdID0gbGFzdE9wdHMoYXJndW1lbnRzKSwKICAgICAgICBbeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kXSA9IGFyZ3M7CiAgICAgIHJldHVybiBxdWlja0RUKHsgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kIH0sIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgaW4gVVRDCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3llYXJdIC0gVGhlIGNhbGVuZGFyIHllYXIuIElmIG9taXR0ZWQgKGFzIGluLCBjYWxsIGB1dGMoKWAgd2l0aCBubyBhcmd1bWVudHMpLCB0aGUgY3VycmVudCB0aW1lIHdpbGwgYmUgdXNlZAogICAgICogQHBhcmFtIHtudW1iZXJ9IFttb250aD0xXSAtIFRoZSBtb250aCwgMS1pbmRleGVkCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RheT0xXSAtIFRoZSBkYXkgb2YgdGhlIG1vbnRoCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2hvdXI9MF0gLSBUaGUgaG91ciBvZiB0aGUgZGF5LCBpbiAyNC1ob3VyIHRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWludXRlPTBdIC0gVGhlIG1pbnV0ZSBvZiB0aGUgaG91ciwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW21pbGxpc2Vjb25kPTBdIC0gVGhlIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA5OTkKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5sb2NhbGVdIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5vdXRwdXRDYWxlbmRhcl0gLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IG5vdwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAxLTAxVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgeyBsb2NhbGU6ICJmciIgfSkgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjAwWiB3aXRoIGEgRnJlbmNoIGxvY2FsZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTApICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTAsIDc2NSwgeyBsb2NhbGU6ICJmciIgfSkgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwLjc2NVogd2l0aCBhIEZyZW5jaCBsb2NhbGUKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgdXRjKCkgewogICAgICBjb25zdCBbb3B0cywgYXJnc10gPSBsYXN0T3B0cyhhcmd1bWVudHMpLAogICAgICAgIFt5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmRdID0gYXJnczsKCiAgICAgIG9wdHMuem9uZSA9IEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZTsKICAgICAgcmV0dXJuIHF1aWNrRFQoeyB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmQgfSwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgSmF2YVNjcmlwdCBEYXRlIG9iamVjdC4gVXNlcyB0aGUgZGVmYXVsdCB6b25lLgogICAgICogQHBhcmFtIHtEYXRlfSBkYXRlIC0gYSBKYXZhU2NyaXB0IERhdGUgb2JqZWN0CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0aW9ucy56b25lPSdsb2NhbCddIC0gdGhlIHpvbmUgdG8gcGxhY2UgdGhlIERhdGVUaW1lIGludG8KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbUpTRGF0ZShkYXRlLCBvcHRpb25zID0ge30pIHsKICAgICAgY29uc3QgdHMgPSBpc0RhdGUoZGF0ZSkgPyBkYXRlLnZhbHVlT2YoKSA6IE5hTjsKICAgICAgaWYgKE51bWJlci5pc05hTih0cykpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgiaW52YWxpZCBpbnB1dCIpOwogICAgICB9CgogICAgICBjb25zdCB6b25lVG9Vc2UgPSBub3JtYWxpemVab25lKG9wdGlvbnMuem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwogICAgICBpZiAoIXpvbmVUb1VzZS5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQodW5zdXBwb3J0ZWRab25lKHpvbmVUb1VzZSkpOwogICAgICB9CgogICAgICByZXR1cm4gbmV3IERhdGVUaW1lKHsKICAgICAgICB0czogdHMsCiAgICAgICAgem9uZTogem9uZVRvVXNlLAogICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksCiAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChtZWFuaW5nIHNpbmNlIDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuIFVzZXMgdGhlIGRlZmF1bHQgem9uZS4KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaWxsaXNlY29uZHMgLSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgMTk3MCBVVEMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRpb25zLnpvbmU9J2xvY2FsJ10gLSB0aGUgem9uZSB0byBwbGFjZSB0aGUgRGF0ZVRpbWUgaW50bwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmxvY2FsZV0gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tTWlsbGlzKG1pbGxpc2Vjb25kcywgb3B0aW9ucyA9IHt9KSB7CiAgICAgIGlmICghaXNOdW1iZXIobWlsbGlzZWNvbmRzKSkgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigKICAgICAgICAgIGBmcm9tTWlsbGlzIHJlcXVpcmVzIGEgbnVtZXJpY2FsIGlucHV0LCBidXQgcmVjZWl2ZWQgYSAke3R5cGVvZiBtaWxsaXNlY29uZHN9IHdpdGggdmFsdWUgJHttaWxsaXNlY29uZHN9YAogICAgICAgICk7CiAgICAgIH0gZWxzZSBpZiAobWlsbGlzZWNvbmRzIDwgLU1BWF9EQVRFIHx8IG1pbGxpc2Vjb25kcyA+IE1BWF9EQVRFKSB7CiAgICAgICAgLy8gdGhpcyBpc24ndCBwZXJmZWN0IGJlY2F1c2UgYmVjYXVzZSB3ZSBjYW4gc3RpbGwgZW5kIHVwIG91dCBvZiByYW5nZSBiZWNhdXNlIG9mIGFkZGl0aW9uYWwgc2hpZnRpbmcsIGJ1dCBpdCdzIGEgc3RhcnQKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgiVGltZXN0YW1wIG91dCBvZiByYW5nZSIpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoewogICAgICAgICAgdHM6IG1pbGxpc2Vjb25kcywKICAgICAgICAgIHpvbmU6IG5vcm1hbGl6ZVpvbmUob3B0aW9ucy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSksCiAgICAgICAgICBsb2M6IExvY2FsZS5mcm9tT2JqZWN0KG9wdGlvbnMpLAogICAgICAgIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChtZWFuaW5nIHNpbmNlIDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuIFVzZXMgdGhlIGRlZmF1bHQgem9uZS4KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzZWNvbmRzIC0gYSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSAxOTcwIFVUQwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBEYXRlVGltZQogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdGlvbnMuem9uZT0nbG9jYWwnXSAtIHRoZSB6b25lIHRvIHBsYWNlIHRoZSBEYXRlVGltZSBpbnRvCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubG9jYWxlXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgc3RhdGljIGZyb21TZWNvbmRzKHNlY29uZHMsIG9wdGlvbnMgPSB7fSkgewogICAgICBpZiAoIWlzTnVtYmVyKHNlY29uZHMpKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJmcm9tU2Vjb25kcyByZXF1aXJlcyBhIG51bWVyaWNhbCBpbnB1dCIpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoewogICAgICAgICAgdHM6IHNlY29uZHMgKiAxMDAwLAogICAgICAgICAgem9uZTogbm9ybWFsaXplWm9uZShvcHRpb25zLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSwKICAgICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksCiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIGtleXMgbGlrZSAneWVhcicgYW5kICdob3VyJyB3aXRoIHJlYXNvbmFibGUgZGVmYXVsdHMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqIC0gdGhlIG9iamVjdCB0byBjcmVhdGUgdGhlIERhdGVUaW1lIGZyb20KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoueWVhciAtIGEgeWVhciwgc3VjaCBhcyAxOTg3CiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1vbnRoIC0gYSBtb250aCwgMS0xMgogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5kYXkgLSBhIGRheSBvZiB0aGUgbW9udGgsIDEtMzEsIGRlcGVuZGluZyBvbiB0aGUgbW9udGgKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoub3JkaW5hbCAtIGRheSBvZiB0aGUgeWVhciwgMS0zNjUgb3IgMzY2CiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLndlZWtZZWFyIC0gYW4gSVNPIHdlZWsgeWVhcgogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrTnVtYmVyIC0gYW4gSVNPIHdlZWsgbnVtYmVyLCBiZXR3ZWVuIDEgYW5kIDUyIG9yIDUzLCBkZXBlbmRpbmcgb24gdGhlIHllYXIKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla2RheSAtIGFuIElTTyB3ZWVrZGF5LCAxLTcsIHdoZXJlIDEgaXMgTW9uZGF5IGFuZCA3IGlzIFN1bmRheQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5ob3VyIC0gaG91ciBvZiB0aGUgZGF5LCAwLTIzCiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1pbnV0ZSAtIG1pbnV0ZSBvZiB0aGUgaG91ciwgMC01OQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5zZWNvbmQgLSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgMC01OQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taWxsaXNlY29uZCAtIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIDAtOTk5CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIGNyZWF0aW5nIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSBpbnRlcnByZXQgdGhlIG51bWJlcnMgaW4gdGhlIGNvbnRleHQgb2YgYSBwYXJ0aWN1bGFyIHpvbmUuIENhbiB0YWtlIGFueSB2YWx1ZSB0YWtlbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gc2V0Wm9uZSgpCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdzeXN0ZW0ncyBsb2NhbGUnXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgeWVhcjogMTk4MiwgbW9udGg6IDUsIGRheTogMjV9KS50b0lTT0RhdGUoKSAvLz0+ICcxOTgyLTA1LTI1JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IDE5ODIgfSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wMS0wMScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0pIC8vfj4gdG9kYXkgYXQgMTA6MjY6MDYKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0sIHsgem9uZTogJ3V0YycgfSksCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgaG91cjogMTAsIG1pbnV0ZTogMjYsIHNlY29uZDogNiB9LCB7IHpvbmU6ICdsb2NhbCcgfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0sIHsgem9uZTogJ0FtZXJpY2EvTmV3X1lvcmsnIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgd2Vla1llYXI6IDIwMTYsIHdlZWtOdW1iZXI6IDIsIHdlZWtkYXk6IDMgfSkudG9JU09EYXRlKCkgLy89PiAnMjAxNi0wMS0xMycKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbU9iamVjdChvYmosIG9wdHMgPSB7fSkgewogICAgICBvYmogPSBvYmogfHwge307CiAgICAgIGNvbnN0IHpvbmVUb1VzZSA9IG5vcm1hbGl6ZVpvbmUob3B0cy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7CiAgICAgIGlmICghem9uZVRvVXNlLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZVRvVXNlKSk7CiAgICAgIH0KCiAgICAgIGNvbnN0IHRzTm93ID0gU2V0dGluZ3Mubm93KCksCiAgICAgICAgb2Zmc2V0UHJvdmlzID0gIWlzVW5kZWZpbmVkKG9wdHMuc3BlY2lmaWNPZmZzZXQpCiAgICAgICAgICA/IG9wdHMuc3BlY2lmaWNPZmZzZXQKICAgICAgICAgIDogem9uZVRvVXNlLm9mZnNldCh0c05vdyksCiAgICAgICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZU9iamVjdChvYmosIG5vcm1hbGl6ZVVuaXQpLAogICAgICAgIGNvbnRhaW5zT3JkaW5hbCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm9yZGluYWwpLAogICAgICAgIGNvbnRhaW5zR3JlZ29yWWVhciA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLnllYXIpLAogICAgICAgIGNvbnRhaW5zR3JlZ29yTUQgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5tb250aCkgfHwgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQuZGF5KSwKICAgICAgICBjb250YWluc0dyZWdvciA9IGNvbnRhaW5zR3JlZ29yWWVhciB8fCBjb250YWluc0dyZWdvck1ELAogICAgICAgIGRlZmluaXRlV2Vla0RlZiA9IG5vcm1hbGl6ZWQud2Vla1llYXIgfHwgbm9ybWFsaXplZC53ZWVrTnVtYmVyLAogICAgICAgIGxvYyA9IExvY2FsZS5mcm9tT2JqZWN0KG9wdHMpOwoKICAgICAgLy8gY2FzZXM6CiAgICAgIC8vIGp1c3QgYSB3ZWVrZGF5IC0+IHRoaXMgd2VlaydzIGluc3RhbmNlIG9mIHRoYXQgd2Vla2RheSwgbm8gd29ycmllcwogICAgICAvLyAoZ3JlZ29yaWFuIGRhdGEgb3Igb3JkaW5hbCkgKyAod2Vla1llYXIgb3Igd2Vla051bWJlcikgLT4gZXJyb3IKICAgICAgLy8gKGdyZWdvcmlhbiBtb250aCBvciBkYXkpICsgb3JkaW5hbCAtPiBlcnJvcgogICAgICAvLyBvdGhlcndpc2UganVzdCB1c2Ugd2Vla3Mgb3Igb3JkaW5hbHMgb3IgZ3JlZ29yaWFuLCBkZXBlbmRpbmcgb24gd2hhdCdzIHNwZWNpZmllZAoKICAgICAgaWYgKChjb250YWluc0dyZWdvciB8fCBjb250YWluc09yZGluYWwpICYmIGRlZmluaXRlV2Vla0RlZikgewogICAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcigKICAgICAgICAgICJDYW4ndCBtaXggd2Vla1llYXIvd2Vla051bWJlciB1bml0cyB3aXRoIHllYXIvbW9udGgvZGF5IG9yIG9yZGluYWxzIgogICAgICAgICk7CiAgICAgIH0KCiAgICAgIGlmIChjb250YWluc0dyZWdvck1EICYmIGNvbnRhaW5zT3JkaW5hbCkgewogICAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcigiQ2FuJ3QgbWl4IG9yZGluYWwgZGF0ZXMgd2l0aCBtb250aC9kYXkiKTsKICAgICAgfQoKICAgICAgY29uc3QgdXNlV2Vla0RhdGEgPSBkZWZpbml0ZVdlZWtEZWYgfHwgKG5vcm1hbGl6ZWQud2Vla2RheSAmJiAhY29udGFpbnNHcmVnb3IpOwoKICAgICAgLy8gY29uZmlndXJlIG91cnNlbHZlcyB0byBkZWFsIHdpdGggZ3JlZ29yaWFuIGRhdGVzIG9yIHdlZWsgc3R1ZmYKICAgICAgbGV0IHVuaXRzLAogICAgICAgIGRlZmF1bHRWYWx1ZXMsCiAgICAgICAgb2JqTm93ID0gdHNUb09iaih0c05vdywgb2Zmc2V0UHJvdmlzKTsKICAgICAgaWYgKHVzZVdlZWtEYXRhKSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkV2Vla1VuaXRzOwogICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0V2Vla1VuaXRWYWx1ZXM7CiAgICAgICAgb2JqTm93ID0gZ3JlZ29yaWFuVG9XZWVrKG9iak5vdyk7CiAgICAgIH0gZWxzZSBpZiAoY29udGFpbnNPcmRpbmFsKSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkT3JkaW5hbFVuaXRzOwogICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXM7CiAgICAgICAgb2JqTm93ID0gZ3JlZ29yaWFuVG9PcmRpbmFsKG9iak5vdyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkVW5pdHM7CiAgICAgICAgZGVmYXVsdFZhbHVlcyA9IGRlZmF1bHRVbml0VmFsdWVzOwogICAgICB9CgogICAgICAvLyBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIG1pc3Npbmcgc3R1ZmYKICAgICAgbGV0IGZvdW5kRmlyc3QgPSBmYWxzZTsKICAgICAgZm9yIChjb25zdCB1IG9mIHVuaXRzKSB7CiAgICAgICAgY29uc3QgdiA9IG5vcm1hbGl6ZWRbdV07CiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh2KSkgewogICAgICAgICAgZm91bmRGaXJzdCA9IHRydWU7CiAgICAgICAgfSBlbHNlIGlmIChmb3VuZEZpcnN0KSB7CiAgICAgICAgICBub3JtYWxpemVkW3VdID0gZGVmYXVsdFZhbHVlc1t1XTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgbm9ybWFsaXplZFt1XSA9IG9iak5vd1t1XTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgdmFsdWVzIHdlIGhhdmUgYXJlIGluIHJhbmdlCiAgICAgIGNvbnN0IGhpZ2hlck9yZGVySW52YWxpZCA9IHVzZVdlZWtEYXRhCiAgICAgICAgICA/IGhhc0ludmFsaWRXZWVrRGF0YShub3JtYWxpemVkKQogICAgICAgICAgOiBjb250YWluc09yZGluYWwKICAgICAgICAgID8gaGFzSW52YWxpZE9yZGluYWxEYXRhKG5vcm1hbGl6ZWQpCiAgICAgICAgICA6IGhhc0ludmFsaWRHcmVnb3JpYW5EYXRhKG5vcm1hbGl6ZWQpLAogICAgICAgIGludmFsaWQgPSBoaWdoZXJPcmRlckludmFsaWQgfHwgaGFzSW52YWxpZFRpbWVEYXRhKG5vcm1hbGl6ZWQpOwoKICAgICAgaWYgKGludmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChpbnZhbGlkKTsKICAgICAgfQoKICAgICAgLy8gY29tcHV0ZSB0aGUgYWN0dWFsIHRpbWUKICAgICAgY29uc3QgZ3JlZ29yaWFuID0gdXNlV2Vla0RhdGEKICAgICAgICAgID8gd2Vla1RvR3JlZ29yaWFuKG5vcm1hbGl6ZWQpCiAgICAgICAgICA6IGNvbnRhaW5zT3JkaW5hbAogICAgICAgICAgPyBvcmRpbmFsVG9HcmVnb3JpYW4obm9ybWFsaXplZCkKICAgICAgICAgIDogbm9ybWFsaXplZCwKICAgICAgICBbdHNGaW5hbCwgb2Zmc2V0RmluYWxdID0gb2JqVG9UUyhncmVnb3JpYW4sIG9mZnNldFByb3Zpcywgem9uZVRvVXNlKSwKICAgICAgICBpbnN0ID0gbmV3IERhdGVUaW1lKHsKICAgICAgICAgIHRzOiB0c0ZpbmFsLAogICAgICAgICAgem9uZTogem9uZVRvVXNlLAogICAgICAgICAgbzogb2Zmc2V0RmluYWwsCiAgICAgICAgICBsb2MsCiAgICAgICAgfSk7CgogICAgICAvLyBncmVnb3JpYW4gZGF0YSArIHdlZWtkYXkgc2VydmVzIG9ubHkgdG8gdmFsaWRhdGUKICAgICAgaWYgKG5vcm1hbGl6ZWQud2Vla2RheSAmJiBjb250YWluc0dyZWdvciAmJiBvYmoud2Vla2RheSAhPT0gaW5zdC53ZWVrZGF5KSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoCiAgICAgICAgICAibWlzbWF0Y2hlZCB3ZWVrZGF5IiwKICAgICAgICAgIGB5b3UgY2FuJ3Qgc3BlY2lmeSBib3RoIGEgd2Vla2RheSBvZiAke25vcm1hbGl6ZWQud2Vla2RheX0gYW5kIGEgZGF0ZSBvZiAke2luc3QudG9JU08oKX1gCiAgICAgICAgKTsKICAgICAgfQoKICAgICAgcmV0dXJuIGluc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIElTTyA4NjAxIHN0cmluZwogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoaXMgem9uZQogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5vdXRwdXRDYWxlbmRhcl0gLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMycpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcsIHtzZXRab25lOiB0cnVlfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtMDUtMjVUMDk6MDg6MzQuMTIzJywge3pvbmU6ICd1dGMnfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtVzA1LTQnKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tSVNPKHRleHQsIG9wdHMgPSB7fSkgewogICAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZUlTT0RhdGUodGV4dCk7CiAgICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsICJJU08gODYwMSIsIHRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhbiBSRkMgMjgyMiBzdHJpbmcKICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIFJGQyAyODIyIHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoaXMgem9uZS4gU2luY2UgdGhlIG9mZnNldCBpcyBhbHdheXMgc3BlY2lmaWVkIGluIHRoZSBzdHJpbmcgaXRzZWxmLCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGludGVycHJldGF0aW9uIG9mIHN0cmluZywgbWVyZWx5IHRoZSB6b25lIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaXMgZXhwcmVzc2VkIGluLgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21SRkMyODIyKCcyNSBOb3YgMjAxNiAxMzoyMzoxMiBHTVQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJ0ZyaSwgMjUgTm92IDIwMTYgMTM6MjM6MTIgKzA2MDAnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJzI1IE5vdiAyMDE2IDEzOjIzIFonKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tUkZDMjgyMih0ZXh0LCBvcHRzID0ge30pIHsKICAgICAgY29uc3QgW3ZhbHMsIHBhcnNlZFpvbmVdID0gcGFyc2VSRkMyODIyRGF0ZSh0ZXh0KTsKICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgIlJGQyAyODIyIiwgdGV4dCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIEhUVFAgaGVhZGVyIGRhdGUKICAgICAqIEBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMy5odG1sI3NlYzMuMy4xCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBIVFRQIGhlYWRlciBkYXRlCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIGNvbnZlcnQgdGhlIHRpbWUgdG8gdGhpcyB6b25lLiBTaW5jZSBIVFRQIGRhdGVzIGFyZSBhbHdheXMgaW4gVVRDLCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGludGVycHJldGF0aW9uIG9mIHN0cmluZywgbWVyZWx5IHRoZSB6b25lIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaXMgZXhwcmVzc2VkIGluLgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggdGhlIGZpeGVkLW9mZnNldCB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nLiBGb3IgSFRUUCBkYXRlcywgdGhpcyBpcyBhbHdheXMgVVRDLCBzbyB0aGlzIG9wdGlvbiBpcyBlcXVpdmFsZW50IHRvIHNldHRpbmcgdGhlIGB6b25lYCBvcHRpb24gdG8gJ3V0YycsIGJ1dCB0aGlzIG9wdGlvbiBpcyBpbmNsdWRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCBzaW1pbGFyIG1ldGhvZHMuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdzeXN0ZW0ncyBsb2NhbGUnXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSFRUUCgnU3VuLCAwNiBOb3YgMTk5NCAwODo0OTozNyBHTVQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUhUVFAoJ1N1bmRheSwgMDYtTm92LTk0IDA4OjQ5OjM3IEdNVCcpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSFRUUCgnU3VuIE5vdiAgNiAwODo0OTozNyAxOTk0JykKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbUhUVFAodGV4dCwgb3B0cyA9IHt9KSB7CiAgICAgIGNvbnN0IFt2YWxzLCBwYXJzZWRab25lXSA9IHBhcnNlSFRUUERhdGUodGV4dCk7CiAgICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsICJIVFRQIiwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIGlucHV0IHN0cmluZyBhbmQgZm9ybWF0IHN0cmluZy4KICAgICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZS4gRm9yIGEgdGFibGUgb2YgdG9rZW5zIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMsIHNlZSBbaGVyZV0oaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uLyMvcGFyc2luZz9pZD10YWJsZS1vZi10b2tlbnMpLgogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZm10IC0gdGhlIGZvcm1hdCB0aGUgc3RyaW5nIGlzIGV4cGVjdGVkIHRvIGJlIGluIChzZWUgdGhlIGxpbmsgYmVsb3cgZm9yIHRoZSBmb3JtYXRzKQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSBEYXRlVGltZSB0byB0aGlzIHpvbmUKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc2V0Wm9uZT1mYWxzZV0gLSBvdmVycmlkZSB0aGUgem9uZSB3aXRoIGEgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSBhIGxvY2FsZSBzdHJpbmcgdG8gdXNlIHdoZW4gcGFyc2luZy4gV2lsbCBhbHNvIHNldCB0aGUgRGF0ZVRpbWUgdG8gdGhpcyBsb2NhbGUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZSB3aGVuIHBhcnNpbmcuIFdpbGwgYWxzbyBzZXQgdGhlIHJlc3VsdGluZyBEYXRlVGltZSB0byB0aGlzIG51bWJlcmluZyBzeXN0ZW0KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tRm9ybWF0KHRleHQsIGZtdCwgb3B0cyA9IHt9KSB7CiAgICAgIGlmIChpc1VuZGVmaW5lZCh0ZXh0KSB8fCBpc1VuZGVmaW5lZChmbXQpKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJmcm9tRm9ybWF0IHJlcXVpcmVzIGFuIGlucHV0IHN0cmluZyBhbmQgYSBmb3JtYXQiKTsKICAgICAgfQoKICAgICAgY29uc3QgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsIH0gPSBvcHRzLAogICAgICAgIGxvY2FsZVRvVXNlID0gTG9jYWxlLmZyb21PcHRzKHsKICAgICAgICAgIGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgIGRlZmF1bHRUb0VOOiB0cnVlLAogICAgICAgIH0pLAogICAgICAgIFt2YWxzLCBwYXJzZWRab25lLCBzcGVjaWZpY09mZnNldCwgaW52YWxpZF0gPSBwYXJzZUZyb21Ub2tlbnMobG9jYWxlVG9Vc2UsIHRleHQsIGZtdCk7CiAgICAgIGlmIChpbnZhbGlkKSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoaW52YWxpZCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgYGZvcm1hdCAke2ZtdH1gLCB0ZXh0LCBzcGVjaWZpY09mZnNldCk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBkZXByZWNhdGVkIHVzZSBmcm9tRm9ybWF0IGluc3RlYWQKICAgICAqLwogICAgc3RhdGljIGZyb21TdHJpbmcodGV4dCwgZm10LCBvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21Gb3JtYXQodGV4dCwgZm10LCBvcHRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBTUUwgZGF0ZSwgdGltZSwgb3IgZGF0ZXRpbWUKICAgICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZQogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIHVzZSB0aGlzIHpvbmUgaWYgbm8gb2Zmc2V0IGlzIHNwZWNpZmllZCBpbiB0aGUgaW5wdXQgc3RyaW5nIGl0c2VsZi4gV2lsbCBhbHNvIGNvbnZlcnQgdGhlIERhdGVUaW1lIHRvIHRoaXMgem9uZQogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nIGl0c2VsZiwgaWYgaXQgc3BlY2lmaWVzIG9uZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIGEgbG9jYWxlIHN0cmluZyB0byB1c2Ugd2hlbiBwYXJzaW5nLiBXaWxsIGFsc28gc2V0IHRoZSBEYXRlVGltZSB0byB0aGlzIGxvY2FsZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlIHdoZW4gcGFyc2luZy4gV2lsbCBhbHNvIHNldCB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIHRvIHRoaXMgbnVtYmVyaW5nIHN5c3RlbQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1JykKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUgMDk6MTI6MzQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDInKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDIrMDY6MDAnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDIgQW1lcmljYS9Mb3NfQW5nZWxlcycpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MiBBbWVyaWNhL0xvc19BbmdlbGVzJywgeyBzZXRab25lOiB0cnVlIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MicsIHsgem9uZTogJ0FtZXJpY2EvTG9zX0FuZ2VsZXMnIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcwOToxMjozNC4zNDInKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tU1FMKHRleHQsIG9wdHMgPSB7fSkgewogICAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZVNRTCh0ZXh0KTsKICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgIlNRTCIsIHRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIGludmFsaWQgRGF0ZVRpbWUuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBEYXRlVGltZSBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50LgogICAgICogQHBhcmFtIHtzdHJpbmd9IFtleHBsYW5hdGlvbj1udWxsXSAtIGxvbmdlciBleHBsYW5hdGlvbiwgbWF5IGluY2x1ZGUgcGFyYW1ldGVycyBhbmQgb3RoZXIgdXNlZnVsIGRlYnVnZ2luZyBpbmZvcm1hdGlvbgogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBpbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24gPSBudWxsKSB7CiAgICAgIGlmICghcmVhc29uKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJuZWVkIHRvIHNwZWNpZnkgYSByZWFzb24gdGhlIERhdGVUaW1lIGlzIGludmFsaWQiKTsKICAgICAgfQoKICAgICAgY29uc3QgaW52YWxpZCA9IHJlYXNvbiBpbnN0YW5jZW9mIEludmFsaWQgPyByZWFzb24gOiBuZXcgSW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uKTsKCiAgICAgIGlmIChTZXR0aW5ncy50aHJvd09uSW52YWxpZCkgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkRGF0ZVRpbWVFcnJvcihpbnZhbGlkKTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbmV3IERhdGVUaW1lKHsgaW52YWxpZCB9KTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgaWYgYW4gb2JqZWN0IGlzIGFuIGluc3RhbmNlIG9mIERhdGVUaW1lLiBXb3JrcyBhY3Jvc3MgY29udGV4dCBib3VuZGFyaWVzCiAgICAgKiBAcGFyYW0ge29iamVjdH0gbwogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgc3RhdGljIGlzRGF0ZVRpbWUobykgewogICAgICByZXR1cm4gKG8gJiYgby5pc0x1eG9uRGF0ZVRpbWUpIHx8IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUHJvZHVjZSB0aGUgZm9ybWF0IHN0cmluZyBmb3IgYSBzZXQgb2Ygb3B0aW9ucwogICAgICogQHBhcmFtIGZvcm1hdE9wdHMKICAgICAqIEBwYXJhbSBsb2NhbGVPcHRzCiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfQogICAgICovCiAgICBzdGF0aWMgcGFyc2VGb3JtYXRGb3JPcHRzKGZvcm1hdE9wdHMsIGxvY2FsZU9wdHMgPSB7fSkgewogICAgICBjb25zdCB0b2tlbkxpc3QgPSBmb3JtYXRPcHRzVG9Ub2tlbnMoZm9ybWF0T3B0cywgTG9jYWxlLmZyb21PYmplY3QobG9jYWxlT3B0cykpOwogICAgICByZXR1cm4gIXRva2VuTGlzdCA/IG51bGwgOiB0b2tlbkxpc3QubWFwKCh0KSA9PiAodCA/IHQudmFsIDogbnVsbCkpLmpvaW4oIiIpOwogICAgfQoKICAgIC8qKgogICAgICogUHJvZHVjZSB0aGUgdGhlIGZ1bGx5IGV4cGFuZGVkIGZvcm1hdCB0b2tlbiBmb3IgdGhlIGxvY2FsZQogICAgICogRG9lcyBOT1QgcXVvdGUgY2hhcmFjdGVycywgc28gcXVvdGVkIHRva2VucyB3aWxsIG5vdCByb3VuZCB0cmlwIGNvcnJlY3RseQogICAgICogQHBhcmFtIGZtdAogICAgICogQHBhcmFtIGxvY2FsZU9wdHMKICAgICAqIEByZXR1cm5zIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBleHBhbmRGb3JtYXQoZm10LCBsb2NhbGVPcHRzID0ge30pIHsKICAgICAgY29uc3QgZXhwYW5kZWQgPSBleHBhbmRNYWNyb1Rva2VucyhGb3JtYXR0ZXIucGFyc2VGb3JtYXQoZm10KSwgTG9jYWxlLmZyb21PYmplY3QobG9jYWxlT3B0cykpOwogICAgICByZXR1cm4gZXhwYW5kZWQubWFwKCh0KSA9PiB0LnZhbCkuam9pbigiIik7CiAgICB9CgogICAgLy8gSU5GTwoKICAgIC8qKgogICAgICogR2V0IHRoZSB2YWx1ZSBvZiB1bml0LgogICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBhIHVuaXQgc3VjaCBhcyAnbWludXRlJyBvciAnZGF5JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNywgNCkuZ2V0KCdtb250aCcpOyAvLz0+IDcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDcsIDQpLmdldCgnZGF5Jyk7IC8vPT4gNAogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQodW5pdCkgewogICAgICByZXR1cm4gdGhpc1t1bml0XTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgRGF0ZVRpbWUgaXMgdmFsaWQuIEludmFsaWQgRGF0ZVRpbWVzIG9jY3VyIHdoZW46CiAgICAgKiAqIFRoZSBEYXRlVGltZSB3YXMgY3JlYXRlZCBmcm9tIGludmFsaWQgY2FsZW5kYXIgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIDEzdGggbW9udGggb3IgRmVicnVhcnkgMzAKICAgICAqICogVGhlIERhdGVUaW1lIHdhcyBjcmVhdGVkIGJ5IGFuIG9wZXJhdGlvbiBvbiBhbm90aGVyIGludmFsaWQgZGF0ZQogICAgICogQHR5cGUge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID09PSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBlcnJvciBjb2RlIGlmIHRoaXMgRGF0ZVRpbWUgaXMgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgRGF0ZVRpbWUgaXMgdmFsaWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkUmVhc29uKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIERhdGVUaW1lIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEYXRlVGltZSBpcyB2YWxpZAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGludmFsaWRFeHBsYW5hdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGxvY2FsZSBvZiBhIERhdGVUaW1lLCBzdWNoICdlbi1HQicuIFRoZSBsb2NhbGUgaXMgdXNlZCB3aGVuIGZvcm1hdHRpbmcgdGhlIERhdGVUaW1lCiAgICAgKgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGxvY2FsZSgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMubG9jLmxvY2FsZSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG51bWJlcmluZyBzeXN0ZW0gb2YgYSBEYXRlVGltZSwgc3VjaCAnYmVuZycuIFRoZSBudW1iZXJpbmcgc3lzdGVtIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEYXRlVGltZQogICAgICoKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBudW1iZXJpbmdTeXN0ZW0oKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5udW1iZXJpbmdTeXN0ZW0gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBvdXRwdXQgY2FsZW5kYXIgb2YgYSBEYXRlVGltZSwgc3VjaCAnaXNsYW1pYycuIFRoZSBvdXRwdXQgY2FsZW5kYXIgaXMgdXNlZCB3aGVuIGZvcm1hdHRpbmcgdGhlIERhdGVUaW1lCiAgICAgKgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IG91dHB1dENhbGVuZGFyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2Mub3V0cHV0Q2FsZW5kYXIgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB0aW1lIHpvbmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAdHlwZSB7Wm9uZX0KICAgICAqLwogICAgZ2V0IHpvbmUoKSB7CiAgICAgIHJldHVybiB0aGlzLl96b25lOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBuYW1lIG9mIHRoZSB0aW1lIHpvbmUuCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgem9uZU5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnpvbmUubmFtZSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHllYXIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS55ZWFyIC8vPT4gMjAxNwogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHllYXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMueWVhciA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgcXVhcnRlcgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLnF1YXJ0ZXIgLy89PiAyCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgcXVhcnRlcigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IE1hdGguY2VpbCh0aGlzLmMubW9udGggLyAzKSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbW9udGggKDEtMTIpLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLm1vbnRoIC8vPT4gNQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IG1vbnRoKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1vbnRoIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkYXkgb2YgdGhlIG1vbnRoICgxLTMwaXNoKS4KICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5kYXkgLy89PiAyNQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGRheSgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5kYXkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGhvdXIgb2YgdGhlIGRheSAoMC0yMykuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSkuaG91ciAvLz0+IDkKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBob3VyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLmhvdXIgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG1pbnV0ZSBvZiB0aGUgaG91ciAoMC01OSkuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSwgMzApLm1pbnV0ZSAvLz0+IDMwCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbWludXRlKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1pbnV0ZSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgc2Vjb25kIG9mIHRoZSBtaW51dGUgKDAtNTkpLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDksIDMwLCA1Mikuc2Vjb25kIC8vPT4gNTIKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBzZWNvbmQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMuc2Vjb25kIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBtaWxsaXNlY29uZCBvZiB0aGUgc2Vjb25kICgwLTk5OSkuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSwgMzAsIDUyLCA2NTQpLm1pbGxpc2Vjb25kIC8vPT4gNjU0CiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbWlsbGlzZWNvbmQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMubWlsbGlzZWNvbmQgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHdlZWsgeWVhcgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAxMiwgMzEpLndlZWtZZWFyIC8vPT4gMjAxNQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHdlZWtZZWFyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gcG9zc2libHlDYWNoZWRXZWVrRGF0YSh0aGlzKS53ZWVrWWVhciA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgd2VlayBudW1iZXIgb2YgdGhlIHdlZWsgeWVhciAoMS01MmlzaCkuCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS53ZWVrTnVtYmVyIC8vPT4gMjEKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCB3ZWVrTnVtYmVyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gcG9zc2libHlDYWNoZWRXZWVrRGF0YSh0aGlzKS53ZWVrTnVtYmVyIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkYXkgb2YgdGhlIHdlZWsuCiAgICAgKiAxIGlzIE1vbmRheSBhbmQgNyBpcyBTdW5kYXkKICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMTEsIDMxKS53ZWVrZGF5IC8vPT4gNAogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHdlZWtkYXkoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBwb3NzaWJseUNhY2hlZFdlZWtEYXRhKHRoaXMpLndlZWtkYXkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG9yZGluYWwgKG1lYW5pbmcgdGhlIGRheSBvZiB0aGUgeWVhcikKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5vcmRpbmFsIC8vPT4gMTQ1CiAgICAgKiBAdHlwZSB7bnVtYmVyfERhdGVUaW1lfQogICAgICovCiAgICBnZXQgb3JkaW5hbCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IGdyZWdvcmlhblRvT3JkaW5hbCh0aGlzLmMpLm9yZGluYWwgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIHNob3J0IG1vbnRoIG5hbWUsIHN1Y2ggYXMgJ09jdCcuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkubW9udGhTaG9ydCAvLz0+IE9jdAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IG1vbnRoU2hvcnQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLm1vbnRocygic2hvcnQiLCB7IGxvY09iajogdGhpcy5sb2MgfSlbdGhpcy5tb250aCAtIDFdIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgbG9uZyBtb250aCBuYW1lLCBzdWNoIGFzICdPY3RvYmVyJy4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS5tb250aExvbmcgLy89PiBPY3RvYmVyCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbW9udGhMb25nKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby5tb250aHMoImxvbmciLCB7IGxvY09iajogdGhpcy5sb2MgfSlbdGhpcy5tb250aCAtIDFdIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgc2hvcnQgd2Vla2RheSwgc3VjaCBhcyAnTW9uJy4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS53ZWVrZGF5U2hvcnQgLy89PiBNb24KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCB3ZWVrZGF5U2hvcnQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLndlZWtkYXlzKCJzaG9ydCIsIHsgbG9jT2JqOiB0aGlzLmxvYyB9KVt0aGlzLndlZWtkYXkgLSAxXSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIGxvbmcgd2Vla2RheSwgc3VjaCBhcyAnTW9uZGF5Jy4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS53ZWVrZGF5TG9uZyAvLz0+IE1vbmRheQogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IHdlZWtkYXlMb25nKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby53ZWVrZGF5cygibG9uZyIsIHsgbG9jT2JqOiB0aGlzLmxvYyB9KVt0aGlzLndlZWtkYXkgLSAxXSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIFVUQyBvZmZzZXQgb2YgdGhpcyBEYXRlVGltZSBpbiBtaW51dGVzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5vZmZzZXQgLy89PiAtMjQwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5vZmZzZXQgLy89PiAwCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgb2Zmc2V0KCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gK3RoaXMubyA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgc2hvcnQgaHVtYW4gbmFtZSBmb3IgdGhlIHpvbmUncyBjdXJyZW50IG9mZnNldCwgZm9yIGV4YW1wbGUgIkVTVCIgb3IgIkVEVCIuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBvZmZzZXROYW1lU2hvcnQoKSB7CiAgICAgIGlmICh0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gdGhpcy56b25lLm9mZnNldE5hbWUodGhpcy50cywgewogICAgICAgICAgZm9ybWF0OiAic2hvcnQiLAogICAgICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZSwKICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBsb25nIGh1bWFuIG5hbWUgZm9yIHRoZSB6b25lJ3MgY3VycmVudCBvZmZzZXQsIGZvciBleGFtcGxlICJFYXN0ZXJuIFN0YW5kYXJkIFRpbWUiIG9yICJFYXN0ZXJuIERheWxpZ2h0IFRpbWUiLgogICAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgb2Zmc2V0TmFtZUxvbmcoKSB7CiAgICAgIGlmICh0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gdGhpcy56b25lLm9mZnNldE5hbWUodGhpcy50cywgewogICAgICAgICAgZm9ybWF0OiAibG9uZyIsCiAgICAgICAgICBsb2NhbGU6IHRoaXMubG9jYWxlLAogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciB0aGlzIHpvbmUncyBvZmZzZXQgZXZlciBjaGFuZ2VzLCBhcyBpbiBhIERTVC4KICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBnZXQgaXNPZmZzZXRGaXhlZCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuem9uZS5pc1VuaXZlcnNhbCA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciB0aGUgRGF0ZVRpbWUgaXMgaW4gYSBEU1QuCiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzSW5EU1QoKSB7CiAgICAgIGlmICh0aGlzLmlzT2Zmc2V0Rml4ZWQpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuICgKICAgICAgICAgIHRoaXMub2Zmc2V0ID4gdGhpcy5zZXQoeyBtb250aDogMSwgZGF5OiAxIH0pLm9mZnNldCB8fAogICAgICAgICAgdGhpcy5vZmZzZXQgPiB0aGlzLnNldCh7IG1vbnRoOiA1IH0pLm9mZnNldAogICAgICAgICk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aG9zZSBEYXRlVGltZXMgd2hpY2ggaGF2ZSB0aGUgc2FtZSBsb2NhbCB0aW1lIGFzIHRoaXMgRGF0ZVRpbWUsIGJ1dCBhIGRpZmZlcmVudCBvZmZzZXQgZnJvbSBVVEMKICAgICAqIGluIHRoaXMgRGF0ZVRpbWUncyB6b25lLiBEdXJpbmcgRFNUIGNoYW5nZXMgbG9jYWwgdGltZSBjYW4gYmUgYW1iaWd1b3VzLCBmb3IgZXhhbXBsZQogICAgICogYDIwMjMtMTAtMjlUMDI6MzA6MDBgIGluIGBFdXJvcGUvQmVybGluYCBjYW4gaGF2ZSBvZmZzZXQgYCswMTowMGAgb3IgYCswMjowMGAuCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBib3RoIHBvc3NpYmxlIERhdGVUaW1lcyBpZiB0aGlzIERhdGVUaW1lJ3MgbG9jYWwgdGltZSBpcyBhbWJpZ3VvdXMuCiAgICAgKiBAcmV0dXJucyB7RGF0ZVRpbWVbXX0KICAgICAqLwogICAgZ2V0UG9zc2libGVPZmZzZXRzKCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCB0aGlzLmlzT2Zmc2V0Rml4ZWQpIHsKICAgICAgICByZXR1cm4gW3RoaXNdOwogICAgICB9CiAgICAgIGNvbnN0IGRheU1zID0gODY0MDAwMDA7CiAgICAgIGNvbnN0IG1pbnV0ZU1zID0gNjAwMDA7CiAgICAgIGNvbnN0IGxvY2FsVFMgPSBvYmpUb0xvY2FsVFModGhpcy5jKTsKICAgICAgY29uc3Qgb0VhcmxpZXIgPSB0aGlzLnpvbmUub2Zmc2V0KGxvY2FsVFMgLSBkYXlNcyk7CiAgICAgIGNvbnN0IG9MYXRlciA9IHRoaXMuem9uZS5vZmZzZXQobG9jYWxUUyArIGRheU1zKTsKCiAgICAgIGNvbnN0IG8xID0gdGhpcy56b25lLm9mZnNldChsb2NhbFRTIC0gb0VhcmxpZXIgKiBtaW51dGVNcyk7CiAgICAgIGNvbnN0IG8yID0gdGhpcy56b25lLm9mZnNldChsb2NhbFRTIC0gb0xhdGVyICogbWludXRlTXMpOwogICAgICBpZiAobzEgPT09IG8yKSB7CiAgICAgICAgcmV0dXJuIFt0aGlzXTsKICAgICAgfQogICAgICBjb25zdCB0czEgPSBsb2NhbFRTIC0gbzEgKiBtaW51dGVNczsKICAgICAgY29uc3QgdHMyID0gbG9jYWxUUyAtIG8yICogbWludXRlTXM7CiAgICAgIGNvbnN0IGMxID0gdHNUb09iaih0czEsIG8xKTsKICAgICAgY29uc3QgYzIgPSB0c1RvT2JqKHRzMiwgbzIpOwogICAgICBpZiAoCiAgICAgICAgYzEuaG91ciA9PT0gYzIuaG91ciAmJgogICAgICAgIGMxLm1pbnV0ZSA9PT0gYzIubWludXRlICYmCiAgICAgICAgYzEuc2Vjb25kID09PSBjMi5zZWNvbmQgJiYKICAgICAgICBjMS5taWxsaXNlY29uZCA9PT0gYzIubWlsbGlzZWNvbmQKICAgICAgKSB7CiAgICAgICAgcmV0dXJuIFtjbG9uZSh0aGlzLCB7IHRzOiB0czEgfSksIGNsb25lKHRoaXMsIHsgdHM6IHRzMiB9KV07CiAgICAgIH0KICAgICAgcmV0dXJuIFt0aGlzXTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIERhdGVUaW1lIGlzIGluIGEgbGVhcCB5ZWFyLCBmYWxzZSBvdGhlcndpc2UKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTYpLmlzSW5MZWFwWWVhciAvLz0+IHRydWUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTMpLmlzSW5MZWFwWWVhciAvLz0+IGZhbHNlCiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzSW5MZWFwWWVhcigpIHsKICAgICAgcmV0dXJuIGlzTGVhcFllYXIodGhpcy55ZWFyKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIHRoaXMgRGF0ZVRpbWUncyBtb250aAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNiwgMikuZGF5c0luTW9udGggLy89PiAyOQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNiwgMykuZGF5c0luTW9udGggLy89PiAzMQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGRheXNJbk1vbnRoKCkgewogICAgICByZXR1cm4gZGF5c0luTW9udGgodGhpcy55ZWFyLCB0aGlzLm1vbnRoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIHRoaXMgRGF0ZVRpbWUncyB5ZWFyCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE2KS5kYXlzSW5ZZWFyIC8vPT4gMzY2CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDEzKS5kYXlzSW5ZZWFyIC8vPT4gMzY1CiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgZGF5c0luWWVhcigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IGRheXNJblllYXIodGhpcy55ZWFyKSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiB3ZWVrcyBpbiB0aGlzIERhdGVUaW1lJ3MgeWVhcgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDA0KS53ZWVrc0luV2Vla1llYXIgLy89PiA1MwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxMykud2Vla3NJbldlZWtZZWFyIC8vPT4gNTIKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCB3ZWVrc0luV2Vla1llYXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB3ZWVrc0luV2Vla1llYXIodGhpcy53ZWVrWWVhcikgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSByZXNvbHZlZCBJbnRsIG9wdGlvbnMgZm9yIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBUaGlzIGlzIHVzZWZ1bCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBiZWhhdmlvciBvZiBmb3JtYXR0aW5nIG1ldGhvZHMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gdGhlIHNhbWUgb3B0aW9ucyBhcyB0b0xvY2FsZVN0cmluZwogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICByZXNvbHZlZExvY2FsZU9wdGlvbnMob3B0cyA9IHt9KSB7CiAgICAgIGNvbnN0IHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyIH0gPSBGb3JtYXR0ZXIuY3JlYXRlKAogICAgICAgIHRoaXMubG9jLmNsb25lKG9wdHMpLAogICAgICAgIG9wdHMKICAgICAgKS5yZXNvbHZlZE9wdGlvbnModGhpcyk7CiAgICAgIHJldHVybiB7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhcjogY2FsZW5kYXIgfTsKICAgIH0KCiAgICAvLyBUUkFOU0ZPUk0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSBEYXRlVGltZSdzIHpvbmUgdG8gVVRDLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKgogICAgICogRXF1aXZhbGVudCB0byB7QGxpbmsgRGF0ZVRpbWUjc2V0Wm9uZX0oJ3V0YycpCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29mZnNldD0wXSAtIG9wdGlvbmFsbHksIGFuIG9mZnNldCBmcm9tIFVUQyBpbiBtaW51dGVzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHM9e31dIC0gb3B0aW9ucyB0byBwYXNzIHRvIGBzZXRab25lKClgCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgdG9VVEMob2Zmc2V0ID0gMCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLnNldFpvbmUoRml4ZWRPZmZzZXRab25lLmluc3RhbmNlKG9mZnNldCksIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIERhdGVUaW1lJ3Mgem9uZSB0byB0aGUgaG9zdCdzIGxvY2FsIHpvbmUuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS4KICAgICAqCiAgICAgKiBFcXVpdmFsZW50IHRvIGBzZXRab25lKCdsb2NhbCcpYAogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHRvTG9jYWwoKSB7CiAgICAgIHJldHVybiB0aGlzLnNldFpvbmUoU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIERhdGVUaW1lJ3Mgem9uZSB0byBzcGVjaWZpZWQgem9uZS4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLgogICAgICoKICAgICAqIEJ5IGRlZmF1bHQsIHRoZSBzZXR0ZXIga2VlcHMgdGhlIHVuZGVybHlpbmcgdGltZSB0aGUgc2FtZSAoYXMgaW4sIHRoZSBzYW1lIHRpbWVzdGFtcCksIGJ1dCB0aGUgbmV3IGluc3RhbmNlIHdpbGwgcmVwb3J0IGRpZmZlcmVudCBsb2NhbCB0aW1lcyBhbmQgY29uc2lkZXIgRFNUcyB3aGVuIG1ha2luZyBjb21wdXRhdGlvbnMsIGFzIHdpdGgge0BsaW5rIERhdGVUaW1lI3BsdXN9LiBZb3UgbWF5IHdpc2ggdG8gdXNlIHtAbGluayBEYXRlVGltZSN0b0xvY2FsfSBhbmQge0BsaW5rIERhdGVUaW1lI3RvVVRDfSB3aGljaCBwcm92aWRlIHNpbXBsZSBjb252ZW5pZW5jZSB3cmFwcGVycyBmb3IgY29tbW9ubHkgdXNlZCB6b25lcy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFt6b25lPSdsb2NhbCddIC0gYSB6b25lIGlkZW50aWZpZXIuIEFzIGEgc3RyaW5nLCB0aGF0IGNhbiBiZSBhbnkgSUFOQSB6b25lIHN1cHBvcnRlZCBieSB0aGUgaG9zdCBlbnZpcm9ubWVudCwgb3IgYSBmaXhlZC1vZmZzZXQgbmFtZSBvZiB0aGUgZm9ybSAnVVRDKzMnLCBvciB0aGUgc3RyaW5ncyAnbG9jYWwnIG9yICd1dGMnLiBZb3UgbWF5IGFsc28gc3VwcGx5IGFuIGluc3RhbmNlIG9mIGEge0BsaW5rIERhdGVUaW1lI1pvbmV9IGNsYXNzLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmtlZXBMb2NhbFRpbWU9ZmFsc2VdIC0gSWYgdHJ1ZSwgYWRqdXN0IHRoZSB1bmRlcmx5aW5nIHRpbWUgc28gdGhhdCB0aGUgbG9jYWwgdGltZSBzdGF5cyB0aGUgc2FtZSwgYnV0IGluIHRoZSB0YXJnZXQgem9uZS4gWW91IHNob3VsZCByYXJlbHkgbmVlZCB0aGlzLgogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHNldFpvbmUoem9uZSwgeyBrZWVwTG9jYWxUaW1lID0gZmFsc2UsIGtlZXBDYWxlbmRhclRpbWUgPSBmYWxzZSB9ID0ge30pIHsKICAgICAgem9uZSA9IG5vcm1hbGl6ZVpvbmUoem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwogICAgICBpZiAoem9uZS5lcXVhbHModGhpcy56b25lKSkgewogICAgICAgIHJldHVybiB0aGlzOwogICAgICB9IGVsc2UgaWYgKCF6b25lLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZSkpOwogICAgICB9IGVsc2UgewogICAgICAgIGxldCBuZXdUUyA9IHRoaXMudHM7CiAgICAgICAgaWYgKGtlZXBMb2NhbFRpbWUgfHwga2VlcENhbGVuZGFyVGltZSkgewogICAgICAgICAgY29uc3Qgb2Zmc2V0R3Vlc3MgPSB6b25lLm9mZnNldCh0aGlzLnRzKTsKICAgICAgICAgIGNvbnN0IGFzT2JqID0gdGhpcy50b09iamVjdCgpOwogICAgICAgICAgW25ld1RTXSA9IG9ialRvVFMoYXNPYmosIG9mZnNldEd1ZXNzLCB6b25lKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdHM6IG5ld1RTLCB6b25lIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGUgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG9yIG91dHB1dENhbGVuZGFyLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcGVydGllcyAtIHRoZSBwcm9wZXJ0aWVzIHRvIHNldAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLnJlY29uZmlndXJlKHsgbG9jYWxlOiAnZW4tR0InIH0pCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgcmVjb25maWd1cmUoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIgfSA9IHt9KSB7CiAgICAgIGNvbnN0IGxvYyA9IHRoaXMubG9jLmNsb25lKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyIH0pOwogICAgICByZXR1cm4gY2xvbmUodGhpcywgeyBsb2MgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGUgbG9jYWxlLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKiBKdXN0IGEgY29udmVuaWVudCBhbGlhcyBmb3IgcmVjb25maWd1cmUoeyBsb2NhbGUgfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5zZXRMb2NhbGUoJ2VuLUdCJykKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzZXRMb2NhbGUobG9jYWxlKSB7CiAgICAgIHJldHVybiB0aGlzLnJlY29uZmlndXJlKHsgbG9jYWxlIH0pOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIHZhbHVlcyBvZiBzcGVjaWZpZWQgdW5pdHMuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS4KICAgICAqIFlvdSBjYW4gb25seSBzZXQgdW5pdHMgd2l0aCB0aGlzIG1ldGhvZDsgZm9yICJzZXR0aW5nIiBtZXRhZGF0YSwgc2VlIHtAbGluayBEYXRlVGltZSNyZWNvbmZpZ3VyZX0gYW5kIHtAbGluayBEYXRlVGltZSNzZXRab25lfS4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSBhIG1hcHBpbmcgb2YgdW5pdHMgdG8gbnVtYmVycwogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgeWVhcjogMjAxNyB9KQogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgaG91cjogOCwgbWludXRlOiAzMCB9KQogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgd2Vla2RheTogNSB9KQogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgeWVhcjogMjAwNSwgb3JkaW5hbDogMjM0IH0pCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgc2V0KHZhbHVlcykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CgogICAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplT2JqZWN0KHZhbHVlcywgbm9ybWFsaXplVW5pdCksCiAgICAgICAgc2V0dGluZ1dlZWtTdHVmZiA9CiAgICAgICAgICAhaXNVbmRlZmluZWQobm9ybWFsaXplZC53ZWVrWWVhcikgfHwKICAgICAgICAgICFpc1VuZGVmaW5lZChub3JtYWxpemVkLndlZWtOdW1iZXIpIHx8CiAgICAgICAgICAhaXNVbmRlZmluZWQobm9ybWFsaXplZC53ZWVrZGF5KSwKICAgICAgICBjb250YWluc09yZGluYWwgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5vcmRpbmFsKSwKICAgICAgICBjb250YWluc0dyZWdvclllYXIgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC55ZWFyKSwKICAgICAgICBjb250YWluc0dyZWdvck1EID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQubW9udGgpIHx8ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLmRheSksCiAgICAgICAgY29udGFpbnNHcmVnb3IgPSBjb250YWluc0dyZWdvclllYXIgfHwgY29udGFpbnNHcmVnb3JNRCwKICAgICAgICBkZWZpbml0ZVdlZWtEZWYgPSBub3JtYWxpemVkLndlZWtZZWFyIHx8IG5vcm1hbGl6ZWQud2Vla051bWJlcjsKCiAgICAgIGlmICgoY29udGFpbnNHcmVnb3IgfHwgY29udGFpbnNPcmRpbmFsKSAmJiBkZWZpbml0ZVdlZWtEZWYpIHsKICAgICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoCiAgICAgICAgICAiQ2FuJ3QgbWl4IHdlZWtZZWFyL3dlZWtOdW1iZXIgdW5pdHMgd2l0aCB5ZWFyL21vbnRoL2RheSBvciBvcmRpbmFscyIKICAgICAgICApOwogICAgICB9CgogICAgICBpZiAoY29udGFpbnNHcmVnb3JNRCAmJiBjb250YWluc09yZGluYWwpIHsKICAgICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoIkNhbid0IG1peCBvcmRpbmFsIGRhdGVzIHdpdGggbW9udGgvZGF5Iik7CiAgICAgIH0KCiAgICAgIGxldCBtaXhlZDsKICAgICAgaWYgKHNldHRpbmdXZWVrU3R1ZmYpIHsKICAgICAgICBtaXhlZCA9IHdlZWtUb0dyZWdvcmlhbih7IC4uLmdyZWdvcmlhblRvV2Vlayh0aGlzLmMpLCAuLi5ub3JtYWxpemVkIH0pOwogICAgICB9IGVsc2UgaWYgKCFpc1VuZGVmaW5lZChub3JtYWxpemVkLm9yZGluYWwpKSB7CiAgICAgICAgbWl4ZWQgPSBvcmRpbmFsVG9HcmVnb3JpYW4oeyAuLi5ncmVnb3JpYW5Ub09yZGluYWwodGhpcy5jKSwgLi4ubm9ybWFsaXplZCB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBtaXhlZCA9IHsgLi4udGhpcy50b09iamVjdCgpLCAuLi5ub3JtYWxpemVkIH07CgogICAgICAgIC8vIGlmIHdlIGRpZG4ndCBzZXQgdGhlIGRheSBidXQgd2UgZW5kZWQgdXAgb24gYW4gb3ZlcmZsb3cgZGF0ZSwKICAgICAgICAvLyB1c2UgdGhlIGxhc3QgZGF5IG9mIHRoZSByaWdodCBtb250aAogICAgICAgIGlmIChpc1VuZGVmaW5lZChub3JtYWxpemVkLmRheSkpIHsKICAgICAgICAgIG1peGVkLmRheSA9IE1hdGgubWluKGRheXNJbk1vbnRoKG1peGVkLnllYXIsIG1peGVkLm1vbnRoKSwgbWl4ZWQuZGF5KTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGNvbnN0IFt0cywgb10gPSBvYmpUb1RTKG1peGVkLCB0aGlzLm8sIHRoaXMuem9uZSk7CiAgICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHRzLCBvIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIGEgcGVyaW9kIG9mIHRpbWUgdG8gdGhpcyBEYXRlVGltZSBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUKICAgICAqCiAgICAgKiBBZGRpbmcgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG9yIG1pbGxpc2Vjb25kcyBpbmNyZWFzZXMgdGhlIHRpbWVzdGFtcCBieSB0aGUgcmlnaHQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy4gQWRkaW5nIGRheXMsIG1vbnRocywgb3IgeWVhcnMgc2hpZnRzIHRoZSBjYWxlbmRhciwgYWNjb3VudGluZyBmb3IgRFNUcyBhbmQgbGVhcCB5ZWFycyBhbG9uZyB0aGUgd2F5LiBUaHVzLCBgZHQucGx1cyh7IGhvdXJzOiAyNCB9KWAgbWF5IHJlc3VsdCBpbiBhIGRpZmZlcmVudCB0aW1lIHRoYW4gYGR0LnBsdXMoeyBkYXlzOiAxIH0pYCBpZiB0aGVyZSdzIGEgRFNUIHNoaWZ0IGluIGJldHdlZW4uCiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gVGhlIGFtb3VudCB0byBhZGQuIEVpdGhlciBhIEx1eG9uIER1cmF0aW9uLCBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMsIHRoZSBvYmplY3QgYXJndW1lbnQgdG8gRHVyYXRpb24uZnJvbU9iamVjdCgpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKDEyMykgLy9+PiBpbiAxMjMgbWlsbGlzZWNvbmRzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgbWludXRlczogMTUgfSkgLy9+PiBpbiAxNSBtaW51dGVzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KSAvL34+IHRoaXMgdGltZSB0b21vcnJvdwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IC0xIH0pIC8vfj4gdGhpcyB0aW1lIHllc3RlcmRheQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGhvdXJzOiAzLCBtaW51dGVzOiAxMyB9KSAvL34+IGluIDMgaHIsIDEzIG1pbgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyhEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDMsIG1pbnV0ZXM6IDEzIH0pKSAvL34+IGluIDMgaHIsIDEzIG1pbgogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHBsdXMoZHVyYXRpb24pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKTsKICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIGFkanVzdFRpbWUodGhpcywgZHVyKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTdWJ0cmFjdCBhIHBlcmlvZCBvZiB0aW1lIHRvIHRoaXMgRGF0ZVRpbWUgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lCiAgICAgKiBTZWUge0BsaW5rIERhdGVUaW1lI3BsdXN9CiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gVGhlIGFtb3VudCB0byBzdWJ0cmFjdC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KCkKICAgICBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgbWludXMoZHVyYXRpb24pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKS5uZWdhdGUoKTsKICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIGFkanVzdFRpbWUodGhpcywgZHVyKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGlzIERhdGVUaW1lIHRvIHRoZSBiZWdpbm5pbmcgb2YgYSB1bml0IG9mIHRpbWUuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIFRoZSB1bml0IHRvIGdvIHRvIHRoZSBiZWdpbm5pbmcgb2YuIENhbiBiZSAneWVhcicsICdxdWFydGVyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcsIG9yICdtaWxsaXNlY29uZCcuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5zdGFydE9mKCdtb250aCcpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAzLTAxJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZigneWVhcicpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAxLTAxJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZignd2VlaycpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAzLTAzJywgd2Vla3MgYWx3YXlzIHN0YXJ0IG9uIE1vbmRheXMKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMsIDUsIDMwKS5zdGFydE9mKCdkYXknKS50b0lTT1RpbWUoKTsgLy89PiAnMDA6MDAuMDAwLTA1OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMywgNSwgMzApLnN0YXJ0T2YoJ2hvdXInKS50b0lTT1RpbWUoKTsgLy89PiAnMDU6MDA6MDAuMDAwLTA1OjAwJwogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXJ0T2YodW5pdCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IG8gPSB7fSwKICAgICAgICBub3JtYWxpemVkVW5pdCA9IER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQodW5pdCk7CiAgICAgIHN3aXRjaCAobm9ybWFsaXplZFVuaXQpIHsKICAgICAgICBjYXNlICJ5ZWFycyI6CiAgICAgICAgICBvLm1vbnRoID0gMTsKICAgICAgICAvLyBmYWxscyB0aHJvdWdoCiAgICAgICAgY2FzZSAicXVhcnRlcnMiOgogICAgICAgIGNhc2UgIm1vbnRocyI6CiAgICAgICAgICBvLmRheSA9IDE7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgIndlZWtzIjoKICAgICAgICBjYXNlICJkYXlzIjoKICAgICAgICAgIG8uaG91ciA9IDA7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgImhvdXJzIjoKICAgICAgICAgIG8ubWludXRlID0gMDsKICAgICAgICAvLyBmYWxscyB0aHJvdWdoCiAgICAgICAgY2FzZSAibWludXRlcyI6CiAgICAgICAgICBvLnNlY29uZCA9IDA7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgInNlY29uZHMiOgogICAgICAgICAgby5taWxsaXNlY29uZCA9IDA7CiAgICAgICAgICBicmVhazsKICAgICAgICAvLyBubyBkZWZhdWx0LCBpbnZhbGlkIHVuaXRzIHRocm93IGluIG5vcm1hbGl6ZVVuaXQoKQogICAgICB9CgogICAgICBpZiAobm9ybWFsaXplZFVuaXQgPT09ICJ3ZWVrcyIpIHsKICAgICAgICBvLndlZWtkYXkgPSAxOwogICAgICB9CgogICAgICBpZiAobm9ybWFsaXplZFVuaXQgPT09ICJxdWFydGVycyIpIHsKICAgICAgICBjb25zdCBxID0gTWF0aC5jZWlsKHRoaXMubW9udGggLyAzKTsKICAgICAgICBvLm1vbnRoID0gKHEgLSAxKSAqIDMgKyAxOwogICAgICB9CgogICAgICByZXR1cm4gdGhpcy5zZXQobyk7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGlzIERhdGVUaW1lIHRvIHRoZSBlbmQgKG1lYW5pbmcgdGhlIGxhc3QgbWlsbGlzZWNvbmQpIG9mIGEgdW5pdCBvZiB0aW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIFRoZSB1bml0IHRvIGdvIHRvIHRoZSBlbmQgb2YuIENhbiBiZSAneWVhcicsICdxdWFydGVyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcsIG9yICdtaWxsaXNlY29uZCcuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5lbmRPZignbW9udGgnKS50b0lTTygpOyAvLz0+ICcyMDE0LTAzLTMxVDIzOjU5OjU5Ljk5OS0wNTowMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMpLmVuZE9mKCd5ZWFyJykudG9JU08oKTsgLy89PiAnMjAxNC0xMi0zMVQyMzo1OTo1OS45OTktMDU6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5lbmRPZignd2VlaycpLnRvSVNPKCk7IC8vID0+ICcyMDE0LTAzLTA5VDIzOjU5OjU5Ljk5OS0wNTowMCcsIHdlZWtzIHN0YXJ0IG9uIE1vbmRheXMKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMsIDUsIDMwKS5lbmRPZignZGF5JykudG9JU08oKTsgLy89PiAnMjAxNC0wMy0wM1QyMzo1OTo1OS45OTktMDU6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzLCA1LCAzMCkuZW5kT2YoJ2hvdXInKS50b0lTTygpOyAvLz0+ICcyMDE0LTAzLTAzVDA1OjU5OjU5Ljk5OS0wNTowMCcKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBlbmRPZih1bml0KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IHRoaXMucGx1cyh7IFt1bml0XTogMSB9KQogICAgICAgICAgICAuc3RhcnRPZih1bml0KQogICAgICAgICAgICAubWludXMoMSkKICAgICAgICA6IHRoaXM7CiAgICB9CgogICAgLy8gT1VUUFVUCgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIGZvcm1hdCBzdHJpbmcuCiAgICAgKiAqKllvdSBtYXkgbm90IHdhbnQgdGhpcy4qKiBTZWUge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3IgYSBtb3JlIGZsZXhpYmxlIGZvcm1hdHRpbmcgdG9vbC4gRm9yIGEgdGFibGUgb2YgdG9rZW5zIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMsIHNlZSBbaGVyZV0oaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uLyMvZm9ybWF0dGluZz9pZD10YWJsZS1vZi10b2tlbnMpLgogICAgICogRGVmYXVsdHMgdG8gZW4tVVMgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZCwgcmVnYXJkbGVzcyBvZiB0aGUgc3lzdGVtJ3MgbG9jYWxlLgogICAgICogQHBhcmFtIHtzdHJpbmd9IGZtdCAtIHRoZSBmb3JtYXQgc3RyaW5nCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdHMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvbiB0aGlzIERhdGVUaW1lCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnKSAvLz0+ICcyMDE3IEFwciAyMicKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgnZnInKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnKSAvLz0+ICcyMDE3IGF2ci4gMjInCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnLCB7IGxvY2FsZTogImZyIiB9KSAvLz0+ICcyMDE3IGF2ci4gMjInCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgiSEggJ2hvdXJzIGFuZCcgbW0gJ21pbnV0ZXMnIikgLy89PiAnMjAgaG91cnMgYW5kIDU1IG1pbnV0ZXMnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvRm9ybWF0KGZtdCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MucmVkZWZhdWx0VG9FTihvcHRzKSkuZm9ybWF0RGF0ZVRpbWVGcm9tU3RyaW5nKHRoaXMsIGZtdCkKICAgICAgICA6IElOVkFMSUQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgbG9jYWxpemVkIHN0cmluZyByZXByZXNlbnRpbmcgdGhpcyBkYXRlLiBBY2NlcHRzIHRoZSBzYW1lIG9wdGlvbnMgYXMgdGhlIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgYW5kIGFueSBwcmVzZXRzIGRlZmluZWQgYnkgTHV4b24sIHN1Y2ggYXMgYERhdGVUaW1lLkRBVEVfRlVMTGAgb3IgYERhdGVUaW1lLlRJTUVfU0lNUExFYC4KICAgICAqIFRoZSBleGFjdCBiZWhhdmlvciBvZiB0aGlzIG1ldGhvZCBpcyBicm93c2VyLXNwZWNpZmljLCBidXQgaW4gZ2VuZXJhbCBpdCB3aWxsIHJldHVybiBhbiBhcHByb3ByaWF0ZSByZXByZXNlbnRhdGlvbgogICAgICogb2YgdGhlIERhdGVUaW1lIGluIHRoZSBhc3NpZ25lZCBsb2NhbGUuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXQKICAgICAqIEBwYXJhbSBmb3JtYXRPcHRzIHtPYmplY3R9IC0gSW50bC5EYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3RvciBvcHRpb25zIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0cyB0byBvdmVycmlkZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIG9uIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKCk7IC8vPT4gNC8yMC8yMDE3CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoJ2VuLWdiJykudG9Mb2NhbGVTdHJpbmcoKTsgLy89PiAnMjAvMDQvMjAxNycKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfRlVMTCk7IC8vPT4gJ0FwcmlsIDIwLCAyMDE3JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuREFURV9GVUxMLCB7IGxvY2FsZTogJ2ZyJyB9KTsgLy89PiAnMjggYW/Du3QgMjAyMicKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLlRJTUVfU0lNUExFKTsgLy89PiAnMTE6MzIgQU0nCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFVElNRV9TSE9SVCk7IC8vPT4gJzQvMjAvMjAxNywgMTE6MzIgQU0nCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IHdlZWtkYXk6ICdsb25nJywgbW9udGg6ICdsb25nJywgZGF5OiAnMi1kaWdpdCcgfSk7IC8vPT4gJ1RodXJzZGF5LCBBcHJpbCAyMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKHsgd2Vla2RheTogJ3Nob3J0JywgbW9udGg6ICdzaG9ydCcsIGRheTogJzItZGlnaXQnLCBob3VyOiAnMi1kaWdpdCcsIG1pbnV0ZTogJzItZGlnaXQnIH0pOyAvLz0+ICdUaHUsIEFwciAyMCwgMTE6MjcgQU0nCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcsIGhvdXJDeWNsZTogJ2gyMycgfSk7IC8vPT4gJzExOjMyJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0xvY2FsZVN0cmluZyhmb3JtYXRPcHRzID0gREFURV9TSE9SVCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MuY2xvbmUob3B0cyksIGZvcm1hdE9wdHMpLmZvcm1hdERhdGVUaW1lKHRoaXMpCiAgICAgICAgOiBJTlZBTElEOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBhcnJheSBvZiBmb3JtYXQgInBhcnRzIiwgbWVhbmluZyBpbmRpdmlkdWFsIHRva2VucyBhbG9uZyB3aXRoIG1ldGFkYXRhLiBUaGlzIGlzIGFsbG93cyBjYWxsZXJzIHRvIHBvc3QtcHJvY2VzcyBpbmRpdmlkdWFsIHNlY3Rpb25zIG9mIHRoZSBmb3JtYXR0ZWQgb3V0cHV0LgogICAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkCiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0L2Zvcm1hdFRvUGFydHMKICAgICAqIEBwYXJhbSBvcHRzIHtPYmplY3R9IC0gSW50bC5EYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3RvciBvcHRpb25zLCBzYW1lIGFzIGB0b0xvY2FsZVN0cmluZ2AuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVBhcnRzKCk7IC8vPT4gWwogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdkYXknLCB2YWx1ZTogJzI1JyB9LAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdsaXRlcmFsJywgdmFsdWU6ICcvJyB9LAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdtb250aCcsIHZhbHVlOiAnMDUnIH0sCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJy8nIH0sCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ3llYXInLCB2YWx1ZTogJzE5ODInIH0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+IF0KICAgICAqLwogICAgdG9Mb2NhbGVQYXJ0cyhvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZAogICAgICAgID8gRm9ybWF0dGVyLmNyZWF0ZSh0aGlzLmxvYy5jbG9uZShvcHRzKSwgb3B0cykuZm9ybWF0RGF0ZVRpbWVQYXJ0cyh0aGlzKQogICAgICAgIDogW107CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzTWlsbGlzZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NTZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXQ9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJ1onIG9yICctMDQ6MDAnCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmV4dGVuZGVkWm9uZT1mYWxzZV0gLSBhZGQgdGhlIHRpbWUgem9uZSBmb3JtYXQgZXh0ZW5zaW9uCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgzLCA1LCAyNSkudG9JU08oKSAvLz0+ICcxOTgyLTA1LTI1VDAwOjAwOjAwLjAwMFonCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0lTTygpIC8vPT4gJzIwMTctMDQtMjJUMjA6NDc6MDUuMzM1LTA0OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oeyBpbmNsdWRlT2Zmc2V0OiBmYWxzZSB9KSAvLz0+ICcyMDE3LTA0LTIyVDIwOjQ3OjA1LjMzNScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvSVNPKHsgZm9ybWF0OiAnYmFzaWMnIH0pIC8vPT4gJzIwMTcwNDIyVDIwNDcwNS4zMzUtMDQwMCcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU08oewogICAgICBmb3JtYXQgPSAiZXh0ZW5kZWQiLAogICAgICBzdXBwcmVzc1NlY29uZHMgPSBmYWxzZSwKICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHMgPSBmYWxzZSwKICAgICAgaW5jbHVkZU9mZnNldCA9IHRydWUsCiAgICAgIGV4dGVuZGVkWm9uZSA9IGZhbHNlLAogICAgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KCiAgICAgIGNvbnN0IGV4dCA9IGZvcm1hdCA9PT0gImV4dGVuZGVkIjsKCiAgICAgIGxldCBjID0gdG9JU09EYXRlKHRoaXMsIGV4dCk7CiAgICAgIGMgKz0gIlQiOwogICAgICBjICs9IHRvSVNPVGltZSh0aGlzLCBleHQsIHN1cHByZXNzU2Vjb25kcywgc3VwcHJlc3NNaWxsaXNlY29uZHMsIGluY2x1ZGVPZmZzZXQsIGV4dGVuZGVkWm9uZSk7CiAgICAgIHJldHVybiBjOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUncyBkYXRlIGNvbXBvbmVudAogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wNS0yNScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU09EYXRlKHsgZm9ybWF0OiAnYmFzaWMnIH0pIC8vPT4gJzE5ODIwNTI1JwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT0RhdGUoeyBmb3JtYXQgPSAiZXh0ZW5kZWQiIH0gPSB7fSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CgogICAgICByZXR1cm4gdG9JU09EYXRlKHRoaXMsIGZvcm1hdCA9PT0gImV4dGVuZGVkIik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSdzIHdlZWsgZGF0ZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDE5ODIsIDUsIDI1KS50b0lTT1dlZWtEYXRlKCkgLy89PiAnMTk4Mi1XMjEtMicKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU09XZWVrRGF0ZSgpIHsKICAgICAgcmV0dXJuIHRvVGVjaEZvcm1hdCh0aGlzLCAia2tray0nVydXVy1jIik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSdzIHRpbWUgY29tcG9uZW50CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NNaWxsaXNlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBtaWxsaXNlY29uZHMgZnJvbSB0aGUgZm9ybWF0IGlmIHRoZXkncmUgMAogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc1NlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldD10cnVlXSAtIGluY2x1ZGUgdGhlIG9mZnNldCwgc3VjaCBhcyAnWicgb3IgJy0wNDowMCcKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuZXh0ZW5kZWRab25lPXRydWVdIC0gYWRkIHRoZSB0aW1lIHpvbmUgZm9ybWF0IGV4dGVuc2lvbgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlUHJlZml4PWZhbHNlXSAtIGluY2x1ZGUgdGhlIGBUYCBwcmVmaXgKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5mb3JtYXQ9J2V4dGVuZGVkJ10gLSBjaG9vc2UgYmV0d2VlbiB0aGUgYmFzaWMgYW5kIGV4dGVuZGVkIGZvcm1hdAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCB9KS50b0lTT1RpbWUoKSAvLz0+ICcwNzozNDoxOS4zNjFaJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCwgc2Vjb25kczogMCwgbWlsbGlzZWNvbmRzOiAwIH0pLnRvSVNPVGltZSh7IHN1cHByZXNzU2Vjb25kczogdHJ1ZSB9KSAvLz0+ICcwNzozNFonCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5zZXQoeyBob3VyOiA3LCBtaW51dGU6IDM0IH0pLnRvSVNPVGltZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcwNzM0MTkuMzYxWicKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLnNldCh7IGhvdXI6IDcsIG1pbnV0ZTogMzQgfSkudG9JU09UaW1lKHsgaW5jbHVkZVByZWZpeDogdHJ1ZSB9KSAvLz0+ICdUMDc6MzQ6MTkuMzYxWicKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU09UaW1lKHsKICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHMgPSBmYWxzZSwKICAgICAgc3VwcHJlc3NTZWNvbmRzID0gZmFsc2UsCiAgICAgIGluY2x1ZGVPZmZzZXQgPSB0cnVlLAogICAgICBpbmNsdWRlUHJlZml4ID0gZmFsc2UsCiAgICAgIGV4dGVuZGVkWm9uZSA9IGZhbHNlLAogICAgICBmb3JtYXQgPSAiZXh0ZW5kZWQiLAogICAgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KCiAgICAgIGxldCBjID0gaW5jbHVkZVByZWZpeCA/ICJUIiA6ICIiOwogICAgICByZXR1cm4gKAogICAgICAgIGMgKwogICAgICAgIHRvSVNPVGltZSgKICAgICAgICAgIHRoaXMsCiAgICAgICAgICBmb3JtYXQgPT09ICJleHRlbmRlZCIsCiAgICAgICAgICBzdXBwcmVzc1NlY29uZHMsCiAgICAgICAgICBzdXBwcmVzc01pbGxpc2Vjb25kcywKICAgICAgICAgIGluY2x1ZGVPZmZzZXQsCiAgICAgICAgICBleHRlbmRlZFpvbmUKICAgICAgICApCiAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIFJGQyAyODIyLWNvbXBhdGlibGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMykudG9SRkMyODIyKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAwMDowMDowMCArMDAwMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDcsIDEzKS50b1JGQzI4MjIoKSAvLz0+ICdTdW4sIDEzIEp1bCAyMDE0IDAwOjAwOjAwIC0wNDAwJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1JGQzI4MjIoKSB7CiAgICAgIHJldHVybiB0b1RlY2hGb3JtYXQodGhpcywgIkVFRSwgZGQgTExMIHl5eXkgSEg6bW06c3MgWlpaIiwgZmFsc2UpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gSFRUUCBoZWFkZXJzLiBUaGUgb3V0cHV0IGlzIGFsd2F5cyBleHByZXNzZWQgaW4gR01ULgogICAgICogU3BlY2lmaWNhbGx5LCB0aGUgc3RyaW5nIGNvbmZvcm1zIHRvIFJGQyAxMTIzLgogICAgICogQHNlZSBodHRwczovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMzLmh0bWwjc2VjMy4zLjEKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMykudG9IVFRQKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAwMDowMDowMCBHTVQnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMsIDE5KS50b0hUVFAoKSAvLz0+ICdTdW4sIDEzIEp1bCAyMDE0IDE5OjAwOjAwIEdNVCcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9IVFRQKCkgewogICAgICByZXR1cm4gdG9UZWNoRm9ybWF0KHRoaXMudG9VVEMoKSwgIkVFRSwgZGQgTExMIHl5eXkgSEg6bW06c3MgJ0dNVCciKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIFNRTCBEYXRlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMpLnRvU1FMRGF0ZSgpIC8vPT4gJzIwMTQtMDctMTMnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU1FMRGF0ZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgICByZXR1cm4gdG9JU09EYXRlKHRoaXMsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gU1FMIFRpbWUKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlWm9uZT1mYWxzZV0gLSBpbmNsdWRlIHRoZSB6b25lLCBzdWNoIGFzICdBbWVyaWNhL05ld19Zb3JrJy4gT3ZlcnJpZGVzIGluY2x1ZGVPZmZzZXQuCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXQ9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJ1onIG9yICctMDQ6MDAnCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXRTcGFjZT10cnVlXSAtIGluY2x1ZGUgdGhlIHNwYWNlIGJldHdlZW4gdGhlIHRpbWUgYW5kIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJzA1OjE1OjE2LjM0NSAtMDQ6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS50b1NRTCgpIC8vPT4gJzA1OjE1OjE2LjM0NScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvU1FMKCkgLy89PiAnMDU6MTU6MTYuMzQ1IC0wNDowMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvU1FMKHsgaW5jbHVkZU9mZnNldDogZmFsc2UgfSkgLy89PiAnMDU6MTU6MTYuMzQ1JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9TUUwoeyBpbmNsdWRlWm9uZTogZmFsc2UgfSkgLy89PiAnMDU6MTU6MTYuMzQ1IEFtZXJpY2EvTmV3X1lvcmsnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU1FMVGltZSh7IGluY2x1ZGVPZmZzZXQgPSB0cnVlLCBpbmNsdWRlWm9uZSA9IGZhbHNlLCBpbmNsdWRlT2Zmc2V0U3BhY2UgPSB0cnVlIH0gPSB7fSkgewogICAgICBsZXQgZm10ID0gIkhIOm1tOnNzLlNTUyI7CgogICAgICBpZiAoaW5jbHVkZVpvbmUgfHwgaW5jbHVkZU9mZnNldCkgewogICAgICAgIGlmIChpbmNsdWRlT2Zmc2V0U3BhY2UpIHsKICAgICAgICAgIGZtdCArPSAiICI7CiAgICAgICAgfQogICAgICAgIGlmIChpbmNsdWRlWm9uZSkgewogICAgICAgICAgZm10ICs9ICJ6IjsKICAgICAgICB9IGVsc2UgaWYgKGluY2x1ZGVPZmZzZXQpIHsKICAgICAgICAgIGZtdCArPSAiWloiOwogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIHRvVGVjaEZvcm1hdCh0aGlzLCBmbXQsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gU1FMIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVpvbmU9ZmFsc2VdIC0gaW5jbHVkZSB0aGUgem9uZSwgc3VjaCBhcyAnQW1lcmljYS9OZXdfWW9yaycuIE92ZXJyaWRlcyBpbmNsdWRlT2Zmc2V0LgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJwogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0U3BhY2U9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSB0aW1lIGFuZCB0aGUgb2Zmc2V0LCBzdWNoIGFzICcwNToxNToxNi4zNDUgLTA0OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTQsIDcsIDEzKS50b1NRTCgpIC8vPT4gJzIwMTQtMDctMTMgMDA6MDA6MDAuMDAwIFonCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9TUUwoKSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCAtMDQ6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9TUUwoeyBpbmNsdWRlT2Zmc2V0OiBmYWxzZSB9KSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDcsIDEzKS50b1NRTCh7IGluY2x1ZGVab25lOiB0cnVlIH0pIC8vPT4gJzIwMTQtMDctMTMgMDA6MDA6MDAuMDAwIEFtZXJpY2EvTmV3X1lvcmsnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU1FMKG9wdHMgPSB7fSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CgogICAgICByZXR1cm4gYCR7dGhpcy50b1NRTERhdGUoKX0gJHt0aGlzLnRvU1FMVGltZShvcHRzKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciBkZWJ1Z2dpbmcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9TdHJpbmcoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRvSVNPKCkgOiBJTlZBTElEOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgZXBvY2ggbWlsbGlzZWNvbmRzIG9mIHRoaXMgRGF0ZVRpbWUuIEFsaWFzIG9mIHtAbGluayBEYXRlVGltZSN0b01pbGxpc30KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgdmFsdWVPZigpIHsKICAgICAgcmV0dXJuIHRoaXMudG9NaWxsaXMoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGVwb2NoIG1pbGxpc2Vjb25kcyBvZiB0aGlzIERhdGVUaW1lLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICB0b01pbGxpcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBlcG9jaCBzZWNvbmRzIG9mIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHRvU2Vjb25kcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgLyAxMDAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgZXBvY2ggc2Vjb25kcyAoYXMgYSB3aG9sZSBudW1iZXIpIG9mIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHRvVW5peEludGVnZXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBNYXRoLmZsb29yKHRoaXMudHMgLyAxMDAwKSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIEpTT04uCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvSlNPTigpIHsKICAgICAgcmV0dXJuIHRoaXMudG9JU08oKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBCU09OIHNlcmlhbGl6YWJsZSBlcXVpdmFsZW50IHRvIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtEYXRlfQogICAgICovCiAgICB0b0JTT04oKSB7CiAgICAgIHJldHVybiB0aGlzLnRvSlNEYXRlKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCB0aGlzIERhdGVUaW1lJ3MgeWVhciwgbW9udGgsIGRheSwgYW5kIHNvIG9uLgogICAgICogQHBhcmFtIG9wdHMgLSBvcHRpb25zIGZvciBnZW5lcmF0aW5nIHRoZSBvYmplY3QKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZUNvbmZpZz1mYWxzZV0gLSBpbmNsdWRlIGNvbmZpZ3VyYXRpb24gYXR0cmlidXRlcyBpbiB0aGUgb3V0cHV0CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b09iamVjdCgpIC8vPT4geyB5ZWFyOiAyMDE3LCBtb250aDogNCwgZGF5OiAyMiwgaG91cjogMjAsIG1pbnV0ZTogNDksIHNlY29uZDogNDIsIG1pbGxpc2Vjb25kOiAyNjggfQogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICB0b09iamVjdChvcHRzID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB7fTsKCiAgICAgIGNvbnN0IGJhc2UgPSB7IC4uLnRoaXMuYyB9OwoKICAgICAgaWYgKG9wdHMuaW5jbHVkZUNvbmZpZykgewogICAgICAgIGJhc2Uub3V0cHV0Q2FsZW5kYXIgPSB0aGlzLm91dHB1dENhbGVuZGFyOwogICAgICAgIGJhc2UubnVtYmVyaW5nU3lzdGVtID0gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtOwogICAgICAgIGJhc2UubG9jYWxlID0gdGhpcy5sb2MubG9jYWxlOwogICAgICB9CiAgICAgIHJldHVybiBiYXNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIEphdmFTY3JpcHQgRGF0ZSBlcXVpdmFsZW50IHRvIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtEYXRlfQogICAgICovCiAgICB0b0pTRGF0ZSgpIHsKICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgOiBOYU4pOwogICAgfQoKICAgIC8vIENPTVBBUkUKCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBEYXRlVGltZXMgYXMgYSBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IG90aGVyRGF0ZVRpbWUgLSB0aGUgRGF0ZVRpbWUgdG8gY29tcGFyZSB0aGlzIG9uZSB0bwogICAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFt1bml0PVsnbWlsbGlzZWNvbmRzJ11dIC0gdGhlIHVuaXQgb3IgYXJyYXkgb2YgdW5pdHMgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIGluY2x1ZGUgaW4gdGhlIGR1cmF0aW9uLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQGV4YW1wbGUKICAgICAqIHZhciBpMSA9IERhdGVUaW1lLmZyb21JU08oJzE5ODItMDUtMjVUMDk6NDUnKSwKICAgICAqICAgICBpMiA9IERhdGVUaW1lLmZyb21JU08oJzE5ODMtMTAtMTRUMTA6MzAnKTsKICAgICAqIGkyLmRpZmYoaTEpLnRvT2JqZWN0KCkgLy89PiB7IG1pbGxpc2Vjb25kczogNDM4MDc1MDAwMDAgfQogICAgICogaTIuZGlmZihpMSwgJ2hvdXJzJykudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDEyMTY4Ljc1IH0KICAgICAqIGkyLmRpZmYoaTEsIFsnbW9udGhzJywgJ2RheXMnXSkudG9PYmplY3QoKSAvLz0+IHsgbW9udGhzOiAxNiwgZGF5czogMTkuMDMxMjUgfQogICAgICogaTIuZGlmZihpMSwgWydtb250aHMnLCAnZGF5cycsICdob3VycyddKS50b09iamVjdCgpIC8vPT4geyBtb250aHM6IDE2LCBkYXlzOiAxOSwgaG91cnM6IDAuNzUgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIGRpZmYob3RoZXJEYXRlVGltZSwgdW5pdCA9ICJtaWxsaXNlY29uZHMiLCBvcHRzID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIW90aGVyRGF0ZVRpbWUuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKCJjcmVhdGVkIGJ5IGRpZmZpbmcgYW4gaW52YWxpZCBEYXRlVGltZSIpOwogICAgICB9CgogICAgICBjb25zdCBkdXJPcHRzID0geyBsb2NhbGU6IHRoaXMubG9jYWxlLCBudW1iZXJpbmdTeXN0ZW06IHRoaXMubnVtYmVyaW5nU3lzdGVtLCAuLi5vcHRzIH07CgogICAgICBjb25zdCB1bml0cyA9IG1heWJlQXJyYXkodW5pdCkubWFwKER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpLAogICAgICAgIG90aGVySXNMYXRlciA9IG90aGVyRGF0ZVRpbWUudmFsdWVPZigpID4gdGhpcy52YWx1ZU9mKCksCiAgICAgICAgZWFybGllciA9IG90aGVySXNMYXRlciA/IHRoaXMgOiBvdGhlckRhdGVUaW1lLAogICAgICAgIGxhdGVyID0gb3RoZXJJc0xhdGVyID8gb3RoZXJEYXRlVGltZSA6IHRoaXMsCiAgICAgICAgZGlmZmVkID0gZGlmZihlYXJsaWVyLCBsYXRlciwgdW5pdHMsIGR1ck9wdHMpOwoKICAgICAgcmV0dXJuIG90aGVySXNMYXRlciA/IGRpZmZlZC5uZWdhdGUoKSA6IGRpZmZlZDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgRGF0ZVRpbWUgYW5kIHJpZ2h0IG5vdy4KICAgICAqIFNlZSB7QGxpbmsgRGF0ZVRpbWUjZGlmZn0KICAgICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBbdW5pdD1bJ21pbGxpc2Vjb25kcyddXSAtIHRoZSB1bml0IG9yIHVuaXRzIHVuaXRzIChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byBpbmNsdWRlIGluIHRoZSBkdXJhdGlvbgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIGRpZmZOb3codW5pdCA9ICJtaWxsaXNlY29uZHMiLCBvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIHRoaXMuZGlmZihEYXRlVGltZS5ub3coKSwgdW5pdCwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgc3Bhbm5pbmcgYmV0d2VlbiB0aGlzIERhdGVUaW1lIGFuZCBhbm90aGVyIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBvdGhlckRhdGVUaW1lIC0gdGhlIG90aGVyIGVuZCBwb2ludCBvZiB0aGUgSW50ZXJ2YWwKICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICB1bnRpbChvdGhlckRhdGVUaW1lKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHRoaXMsIG90aGVyRGF0ZVRpbWUpIDogdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgRGF0ZVRpbWUgaXMgaW4gdGhlIHNhbWUgdW5pdCBvZiB0aW1lIGFzIGFub3RoZXIgRGF0ZVRpbWUuCiAgICAgKiBIaWdoZXItb3JkZXIgdW5pdHMgbXVzdCBhbHNvIGJlIGlkZW50aWNhbCBmb3IgdGhpcyBmdW5jdGlvbiB0byByZXR1cm4gYHRydWVgLgogICAgICogTm90ZSB0aGF0IHRpbWUgem9uZXMgYXJlICoqaWdub3JlZCoqIGluIHRoaXMgY29tcGFyaXNvbiwgd2hpY2ggY29tcGFyZXMgdGhlICoqbG9jYWwqKiBjYWxlbmRhciB0aW1lLiBVc2Uge0BsaW5rIERhdGVUaW1lI3NldFpvbmV9IHRvIGNvbnZlcnQgb25lIG9mIHRoZSBkYXRlcyBpZiBuZWVkZWQuCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBvdGhlckRhdGVUaW1lIC0gdGhlIG90aGVyIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY2hlY2sgc2FtZW5lc3Mgb24KICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLmhhc1NhbWUob3RoZXJEVCwgJ2RheScpOyAvL34+IHRydWUgaWYgb3RoZXJEVCBpcyBpbiB0aGUgc2FtZSBjdXJyZW50IGNhbGVuZGFyIGRheQogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgaGFzU2FtZShvdGhlckRhdGVUaW1lLCB1bml0KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CgogICAgICBjb25zdCBpbnB1dE1zID0gb3RoZXJEYXRlVGltZS52YWx1ZU9mKCk7CiAgICAgIGNvbnN0IGFkanVzdGVkVG9ab25lID0gdGhpcy5zZXRab25lKG90aGVyRGF0ZVRpbWUuem9uZSwgeyBrZWVwTG9jYWxUaW1lOiB0cnVlIH0pOwogICAgICByZXR1cm4gYWRqdXN0ZWRUb1pvbmUuc3RhcnRPZih1bml0KSA8PSBpbnB1dE1zICYmIGlucHV0TXMgPD0gYWRqdXN0ZWRUb1pvbmUuZW5kT2YodW5pdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFcXVhbGl0eSBjaGVjawogICAgICogVHdvIERhdGVUaW1lcyBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleSByZXByZXNlbnQgdGhlIHNhbWUgbWlsbGlzZWNvbmQsIGhhdmUgdGhlIHNhbWUgem9uZSBhbmQgbG9jYXRpb24sIGFuZCBhcmUgYm90aCB2YWxpZC4KICAgICAqIFRvIGNvbXBhcmUganVzdCB0aGUgbWlsbGlzZWNvbmQgdmFsdWVzLCB1c2UgYCtkdDEgPT09ICtkdDJgLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gb3RoZXIgLSB0aGUgb3RoZXIgRGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGVxdWFscyhvdGhlcikgewogICAgICByZXR1cm4gKAogICAgICAgIHRoaXMuaXNWYWxpZCAmJgogICAgICAgIG90aGVyLmlzVmFsaWQgJiYKICAgICAgICB0aGlzLnZhbHVlT2YoKSA9PT0gb3RoZXIudmFsdWVPZigpICYmCiAgICAgICAgdGhpcy56b25lLmVxdWFscyhvdGhlci56b25lKSAmJgogICAgICAgIHRoaXMubG9jLmVxdWFscyhvdGhlci5sb2MpCiAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgdGhpcyB0aW1lIHJlbGF0aXZlIHRvIG5vdywgc3VjaCBhcyAiaW4gdHdvIGRheXMiLiBDYW4gb25seSBpbnRlcm5hdGlvbmFsaXplIGlmIHlvdXIKICAgICAqIHBsYXRmb3JtIHN1cHBvcnRzIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LiBSb3VuZHMgZG93biBieSBkZWZhdWx0LgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBvdXRwdXQKICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IFtvcHRpb25zLmJhc2U9RGF0ZVRpbWUubm93KCldIC0gdGhlIERhdGVUaW1lIHRvIHVzZSBhcyB0aGUgYmFzaXMgdG8gd2hpY2ggdGhpcyB0aW1lIGlzIGNvbXBhcmVkLiBEZWZhdWx0cyB0byBub3cuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuc3R5bGU9ImxvbmciXSAtIHRoZSBzdHlsZSBvZiB1bml0cywgbXVzdCBiZSAibG9uZyIsICJzaG9ydCIsIG9yICJuYXJyb3ciCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gb3B0aW9ucy51bml0IC0gdXNlIGEgc3BlY2lmaWMgdW5pdCBvciBhcnJheSBvZiB1bml0czsgaWYgb21pdHRlZCwgb3IgYW4gYXJyYXksIHRoZSBtZXRob2Qgd2lsbCBwaWNrIHRoZSBiZXN0IHVuaXQuIFVzZSBhbiBhcnJheSBvciBvbmUgb2YgInllYXJzIiwgInF1YXJ0ZXJzIiwgIm1vbnRocyIsICJ3ZWVrcyIsICJkYXlzIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCBvciAic2Vjb25kcyIKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMucm91bmQ9dHJ1ZV0gLSB3aGV0aGVyIHRvIHJvdW5kIHRoZSBudW1iZXJzIGluIHRoZSBvdXRwdXQuCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMucGFkZGluZz0wXSAtIHBhZGRpbmcgaW4gbWlsbGlzZWNvbmRzLiBUaGlzIGFsbG93cyB5b3UgdG8gcm91bmQgdXAgdGhlIHJlc3VsdCBpZiBpdCBmaXRzIGluc2lkZSB0aGUgdGhyZXNob2xkLiBEb24ndCB1c2UgaW4gY29tYmluYXRpb24gd2l0aCB7cm91bmQ6IGZhbHNlfSBiZWNhdXNlIHRoZSBkZWNpbWFsIG91dHB1dCB3aWxsIGluY2x1ZGUgdGhlIHBhZGRpbmcuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5sb2NhbGUgLSBvdmVycmlkZSB0aGUgbG9jYWxlIG9mIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm51bWJlcmluZ1N5c3RlbSAtIG92ZXJyaWRlIHRoZSBudW1iZXJpbmdTeXN0ZW0gb2YgdGhpcyBEYXRlVGltZS4gVGhlIEludGwgc3lzdGVtIG1heSBjaG9vc2Ugbm90IHRvIGhvbm9yIHRoaXMKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBkYXlzOiAxIH0pLnRvUmVsYXRpdmUoKSAvLz0+ICJpbiAxIGRheSIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgiZXMiKS50b1JlbGF0aXZlKHsgZGF5czogMSB9KSAvLz0+ICJkZW50cm8gZGUgMSBkw61hIgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZSh7IGxvY2FsZTogImZyIiB9KSAvLz0+ICJkYW5zIDIzIGhldXJlcyIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgZGF5czogMiB9KS50b1JlbGF0aXZlKCkgLy89PiAiMiBkYXlzIGFnbyIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgZGF5czogMiB9KS50b1JlbGF0aXZlKHsgdW5pdDogImhvdXJzIiB9KSAvLz0+ICI0OCBob3VycyBhZ28iCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5taW51cyh7IGhvdXJzOiAzNiB9KS50b1JlbGF0aXZlKHsgcm91bmQ6IGZhbHNlIH0pIC8vPT4gIjEuNSBkYXlzIGFnbyIKICAgICAqLwogICAgdG9SZWxhdGl2ZShvcHRpb25zID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsOwogICAgICBjb25zdCBiYXNlID0gb3B0aW9ucy5iYXNlIHx8IERhdGVUaW1lLmZyb21PYmplY3Qoe30sIHsgem9uZTogdGhpcy56b25lIH0pLAogICAgICAgIHBhZGRpbmcgPSBvcHRpb25zLnBhZGRpbmcgPyAodGhpcyA8IGJhc2UgPyAtb3B0aW9ucy5wYWRkaW5nIDogb3B0aW9ucy5wYWRkaW5nKSA6IDA7CiAgICAgIGxldCB1bml0cyA9IFsieWVhcnMiLCAibW9udGhzIiwgImRheXMiLCAiaG91cnMiLCAibWludXRlcyIsICJzZWNvbmRzIl07CiAgICAgIGxldCB1bml0ID0gb3B0aW9ucy51bml0OwogICAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zLnVuaXQpKSB7CiAgICAgICAgdW5pdHMgPSBvcHRpb25zLnVuaXQ7CiAgICAgICAgdW5pdCA9IHVuZGVmaW5lZDsKICAgICAgfQogICAgICByZXR1cm4gZGlmZlJlbGF0aXZlKGJhc2UsIHRoaXMucGx1cyhwYWRkaW5nKSwgewogICAgICAgIC4uLm9wdGlvbnMsCiAgICAgICAgbnVtZXJpYzogImFsd2F5cyIsCiAgICAgICAgdW5pdHMsCiAgICAgICAgdW5pdCwKICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgZGF0ZSByZWxhdGl2ZSB0byB0b2RheSwgc3VjaCBhcyAieWVzdGVyZGF5IiBvciAibmV4dCBtb250aCIuCiAgICAgKiBPbmx5IGludGVybmF0aW9uYWxpemVzIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnRzIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBvdXRwdXQKICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IFtvcHRpb25zLmJhc2U9RGF0ZVRpbWUubm93KCldIC0gdGhlIERhdGVUaW1lIHRvIHVzZSBhcyB0aGUgYmFzaXMgdG8gd2hpY2ggdGhpcyB0aW1lIGlzIGNvbXBhcmVkLiBEZWZhdWx0cyB0byBub3cuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5sb2NhbGUgLSBvdmVycmlkZSB0aGUgbG9jYWxlIG9mIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnVuaXQgLSB1c2UgYSBzcGVjaWZpYyB1bml0OyBpZiBvbWl0dGVkLCB0aGUgbWV0aG9kIHdpbGwgcGljayB0aGUgdW5pdC4gVXNlIG9uZSBvZiAieWVhcnMiLCAicXVhcnRlcnMiLCAibW9udGhzIiwgIndlZWtzIiwgb3IgImRheXMiCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSBvdmVycmlkZSB0aGUgbnVtYmVyaW5nU3lzdGVtIG9mIHRoaXMgRGF0ZVRpbWUuIFRoZSBJbnRsIHN5c3RlbSBtYXkgY2hvb3NlIG5vdCB0byBob25vciB0aGlzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlQ2FsZW5kYXIoKSAvLz0+ICJ0b21vcnJvdyIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgiZXMiKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlKCkgLy89PiAiIm1hw7FhbmEiCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlQ2FsZW5kYXIoeyBsb2NhbGU6ICJmciIgfSkgLy89PiAiZGVtYWluIgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkubWludXMoeyBkYXlzOiAyIH0pLnRvUmVsYXRpdmVDYWxlbmRhcigpIC8vPT4gIjIgZGF5cyBhZ28iCiAgICAgKi8KICAgIHRvUmVsYXRpdmVDYWxlbmRhcihvcHRpb25zID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsOwoKICAgICAgcmV0dXJuIGRpZmZSZWxhdGl2ZShvcHRpb25zLmJhc2UgfHwgRGF0ZVRpbWUuZnJvbU9iamVjdCh7fSwgeyB6b25lOiB0aGlzLnpvbmUgfSksIHRoaXMsIHsKICAgICAgICAuLi5vcHRpb25zLAogICAgICAgIG51bWVyaWM6ICJhdXRvIiwKICAgICAgICB1bml0czogWyJ5ZWFycyIsICJtb250aHMiLCAiZGF5cyJdLAogICAgICAgIGNhbGVuZGFyeTogdHJ1ZSwKICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIG1pbiBvZiBzZXZlcmFsIGRhdGUgdGltZXMKICAgICAqIEBwYXJhbSB7Li4uRGF0ZVRpbWV9IGRhdGVUaW1lcyAtIHRoZSBEYXRlVGltZXMgZnJvbSB3aGljaCB0byBjaG9vc2UgdGhlIG1pbmltdW0KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfSB0aGUgbWluIERhdGVUaW1lLCBvciB1bmRlZmluZWQgaWYgY2FsbGVkIHdpdGggbm8gYXJndW1lbnQKICAgICAqLwogICAgc3RhdGljIG1pbiguLi5kYXRlVGltZXMpIHsKICAgICAgaWYgKCFkYXRlVGltZXMuZXZlcnkoRGF0ZVRpbWUuaXNEYXRlVGltZSkpIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoIm1pbiByZXF1aXJlcyBhbGwgYXJndW1lbnRzIGJlIERhdGVUaW1lcyIpOwogICAgICB9CiAgICAgIHJldHVybiBiZXN0QnkoZGF0ZVRpbWVzLCAoaSkgPT4gaS52YWx1ZU9mKCksIE1hdGgubWluKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgbWF4IG9mIHNldmVyYWwgZGF0ZSB0aW1lcwogICAgICogQHBhcmFtIHsuLi5EYXRlVGltZX0gZGF0ZVRpbWVzIC0gdGhlIERhdGVUaW1lcyBmcm9tIHdoaWNoIHRvIGNob29zZSB0aGUgbWF4aW11bQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9IHRoZSBtYXggRGF0ZVRpbWUsIG9yIHVuZGVmaW5lZCBpZiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudAogICAgICovCiAgICBzdGF0aWMgbWF4KC4uLmRhdGVUaW1lcykgewogICAgICBpZiAoIWRhdGVUaW1lcy5ldmVyeShEYXRlVGltZS5pc0RhdGVUaW1lKSkgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigibWF4IHJlcXVpcmVzIGFsbCBhcmd1bWVudHMgYmUgRGF0ZVRpbWVzIik7CiAgICAgIH0KICAgICAgcmV0dXJuIGJlc3RCeShkYXRlVGltZXMsIChpKSA9PiBpLnZhbHVlT2YoKSwgTWF0aC5tYXgpOwogICAgfQoKICAgIC8vIE1JU0MKCiAgICAvKioKICAgICAqIEV4cGxhaW4gaG93IGEgc3RyaW5nIHdvdWxkIGJlIHBhcnNlZCBieSBmcm9tRm9ybWF0KCkKICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIHN0cmluZyB0byBwYXJzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IGZtdCAtIHRoZSBmb3JtYXQgdGhlIHN0cmluZyBpcyBleHBlY3RlZCB0byBiZSBpbiAoc2VlIGRlc2NyaXB0aW9uKQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRha2VuIGJ5IGZyb21Gb3JtYXQoKQogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZnJvbUZvcm1hdEV4cGxhaW4odGV4dCwgZm10LCBvcHRpb25zID0ge30pIHsKICAgICAgY29uc3QgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsIH0gPSBvcHRpb25zLAogICAgICAgIGxvY2FsZVRvVXNlID0gTG9jYWxlLmZyb21PcHRzKHsKICAgICAgICAgIGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgIGRlZmF1bHRUb0VOOiB0cnVlLAogICAgICAgIH0pOwogICAgICByZXR1cm4gZXhwbGFpbkZyb21Ub2tlbnMobG9jYWxlVG9Vc2UsIHRleHQsIGZtdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgZnJvbUZvcm1hdEV4cGxhaW4gaW5zdGVhZAogICAgICovCiAgICBzdGF0aWMgZnJvbVN0cmluZ0V4cGxhaW4odGV4dCwgZm10LCBvcHRpb25zID0ge30pIHsKICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21Gb3JtYXRFeHBsYWluKHRleHQsIGZtdCwgb3B0aW9ucyk7CiAgICB9CgogICAgLy8gRk9STUFUIFBSRVNFVFMKCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgMTAvMTQvMTk4MwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX1NIT1JUKCkgewogICAgICByZXR1cm4gREFURV9TSE9SVDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdCAxNCwgMTk4MycKICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURV9NRUQoKSB7CiAgICAgIHJldHVybiBEQVRFX01FRDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaSwgT2N0IDE0LCAxOTgzJwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX01FRF9XSVRIX1dFRUtEQVkoKSB7CiAgICAgIHJldHVybiBEQVRFX01FRF9XSVRIX1dFRUtEQVk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3RvYmVyIDE0LCAxOTgzJwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX0ZVTEwoKSB7CiAgICAgIHJldHVybiBEQVRFX0ZVTEw7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdUdWVzZGF5LCBPY3RvYmVyIDE0LCAxOTgzJwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX0hVR0UoKSB7CiAgICAgIHJldHVybiBEQVRFX0hVR0U7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FX1NJTVBMRSgpIHsKICAgICAgcmV0dXJuIFRJTUVfU0lNUExFOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBUSU1FX1dJVEhfU0VDT05EUzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEFNIEVEVCcuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FX1dJVEhfU0hPUlRfT0ZGU0VUKCkgewogICAgICByZXR1cm4gVElNRV9XSVRIX1NIT1JUX09GRlNFVDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEFNIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FX1dJVEhfTE9OR19PRkZTRVQoKSB7CiAgICAgIHJldHVybiBUSU1FX1dJVEhfTE9OR19PRkZTRVQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMCcsIGFsd2F5cyAyNC1ob3VyLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FXzI0X1NJTVBMRSgpIHsKICAgICAgcmV0dXJuIFRJTUVfMjRfU0lNUExFOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMnLCBhbHdheXMgMjQtaG91ci4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV8yNF9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBUSU1FXzI0X1dJVEhfU0VDT05EUzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEVEVCcsIGFsd2F5cyAyNC1ob3VyLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FXzI0X1dJVEhfU0hPUlRfT0ZGU0VUKCkgewogICAgICByZXR1cm4gVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScsIGFsd2F5cyAyNC1ob3VyLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQoKSB7CiAgICAgIHJldHVybiBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcxMC8xNC8xOTgzLCA5OjMwIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX1NIT1JUKCkgewogICAgICByZXR1cm4gREFURVRJTUVfU0hPUlQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcxMC8xNC8xOTgzLCA5OjMwOjMzIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUygpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdCAxNCwgMTk4MywgOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9NRUQoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9NRUQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3QgMTQsIDE5ODMsIDk6MzA6MzMgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUygpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdGcmksIDE0IE9jdCAxOTgzLCA5OjMwIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9NRURfV0lUSF9XRUVLREFZOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0b2JlciAxNCwgMTk4MywgOTozMCBBTSBFRFQnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfRlVMTCgpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX0ZVTEw7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3RvYmVyIDE0LCAxOTgzLCA5OjMwOjMzIEFNIEVEVCcuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUygpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX0ZVTExfV0lUSF9TRUNPTkRTOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnRnJpZGF5LCBPY3RvYmVyIDE0LCAxOTgzLCA5OjMwIEFNIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9IVUdFKCkgewogICAgICByZXR1cm4gREFURVRJTUVfSFVHRTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaWRheSwgT2N0b2JlciAxNCwgMTk4MywgOTozMDozMyBBTSBFYXN0ZXJuIERheWxpZ2h0IFRpbWUnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUzsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCiAgZnVuY3Rpb24gZnJpZW5kbHlEYXRlVGltZShkYXRlVGltZWlzaCkgewogICAgaWYgKERhdGVUaW1lLmlzRGF0ZVRpbWUoZGF0ZVRpbWVpc2gpKSB7CiAgICAgIHJldHVybiBkYXRlVGltZWlzaDsKICAgIH0gZWxzZSBpZiAoZGF0ZVRpbWVpc2ggJiYgZGF0ZVRpbWVpc2gudmFsdWVPZiAmJiBpc051bWJlcihkYXRlVGltZWlzaC52YWx1ZU9mKCkpKSB7CiAgICAgIHJldHVybiBEYXRlVGltZS5mcm9tSlNEYXRlKGRhdGVUaW1laXNoKTsKICAgIH0gZWxzZSBpZiAoZGF0ZVRpbWVpc2ggJiYgdHlwZW9mIGRhdGVUaW1laXNoID09PSAib2JqZWN0IikgewogICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdChkYXRlVGltZWlzaCk7CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoCiAgICAgICAgYFVua25vd24gZGF0ZXRpbWUgYXJndW1lbnQ6ICR7ZGF0ZVRpbWVpc2h9LCBvZiB0eXBlICR7dHlwZW9mIGRhdGVUaW1laXNofWAKICAgICAgKTsKICAgIH0KICB9CgogIC8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgLy8gUXVlcnkgU2V0dGluZ3MgLy8KICAvLy8vLy8vLy8vLy8vLy8vLy8vLwogIGNvbnN0IERFRkFVTFRfUVVFUllfU0VUVElOR1MgPSB7CiAgICAgIHJlbmRlck51bGxBczogIlxcLSIsCiAgICAgIHRhc2tDb21wbGV0aW9uVHJhY2tpbmc6IGZhbHNlLAogICAgICB0YXNrQ29tcGxldGlvblVzZUVtb2ppU2hvcnRoYW5kOiBmYWxzZSwKICAgICAgdGFza0NvbXBsZXRpb25UZXh0OiAiY29tcGxldGlvbiIsCiAgICAgIHRhc2tDb21wbGV0aW9uRGF0ZUZvcm1hdDogInl5eXktTU0tZGQiLAogICAgICByZWN1cnNpdmVTdWJUYXNrQ29tcGxldGlvbjogZmFsc2UsCiAgICAgIHdhcm5PbkVtcHR5UmVzdWx0OiB0cnVlLAogICAgICByZWZyZXNoRW5hYmxlZDogdHJ1ZSwKICAgICAgcmVmcmVzaEludGVydmFsOiAyNTAwLAogICAgICBkZWZhdWx0RGF0ZUZvcm1hdDogIk1NTU0gZGQsIHl5eXkiLAogICAgICBkZWZhdWx0RGF0ZVRpbWVGb3JtYXQ6ICJoOm1tIGEgLSBNTU1NIGRkLCB5eXl5IiwKICAgICAgbWF4UmVjdXJzaXZlUmVuZGVyRGVwdGg6IDQsCiAgICAgIHRhYmxlSWRDb2x1bW5OYW1lOiAiRmlsZSIsCiAgICAgIHRhYmxlR3JvdXBDb2x1bW5OYW1lOiAiR3JvdXAiLAogICAgICBzaG93UmVzdWx0Q291bnQ6IHRydWUsCiAgfTsKICBjb25zdCBERUZBVUxUX0VYUE9SVF9TRVRUSU5HUyA9IHsKICAgICAgYWxsb3dIdG1sOiB0cnVlLAogIH07CiAgLyoqIERlZmF1bHQgc2V0dGluZ3MgZm9yIGRhdGF2aWV3IG9uIGluc3RhbGwuICovCiAgKHsKICAgICAgLi4uREVGQVVMVF9RVUVSWV9TRVRUSU5HUywKICAgICAgLi4uREVGQVVMVF9FWFBPUlRfU0VUVElOR1MsCiAgICAgIC4uLnsKICAgICAgICAgIGlubGluZVF1ZXJ5UHJlZml4OiAiPSIsCiAgICAgICAgICBpbmxpbmVKc1F1ZXJ5UHJlZml4OiAiJD0iLAogICAgICAgICAgaW5saW5lUXVlcmllc0luQ29kZWJsb2NrczogdHJ1ZSwKICAgICAgICAgIGVuYWJsZUlubGluZURhdGF2aWV3OiB0cnVlLAogICAgICAgICAgZW5hYmxlRGF0YXZpZXdKczogZmFsc2UsCiAgICAgICAgICBlbmFibGVJbmxpbmVEYXRhdmlld0pzOiBmYWxzZSwKICAgICAgICAgIHByZXR0eVJlbmRlcklubGluZUZpZWxkczogdHJ1ZSwKICAgICAgICAgIHByZXR0eVJlbmRlcklubGluZUZpZWxkc0luTGl2ZVByZXZpZXc6IHRydWUsCiAgICAgICAgICBkYXRhdmlld0pzS2V5d29yZDogImRhdGF2aWV3anMiLAogICAgICB9LAogIH0pOwoKICAvKiogRnVuY3Rpb25hbCByZXR1cm4gdHlwZSBmb3IgZXJyb3IgaGFuZGxpbmcuICovCiAgY2xhc3MgU3VjY2VzcyB7CiAgICAgIHZhbHVlOwogICAgICBzdWNjZXNzZnVsOwogICAgICBjb25zdHJ1Y3Rvcih2YWx1ZSkgewogICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwogICAgICAgICAgdGhpcy5zdWNjZXNzZnVsID0gdHJ1ZTsKICAgICAgfQogICAgICBtYXAoZikgewogICAgICAgICAgcmV0dXJuIG5ldyBTdWNjZXNzKGYodGhpcy52YWx1ZSkpOwogICAgICB9CiAgICAgIGZsYXRNYXAoZikgewogICAgICAgICAgcmV0dXJuIGYodGhpcy52YWx1ZSk7CiAgICAgIH0KICAgICAgbWFwRXJyKGYpIHsKICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICB9CiAgICAgIGJpbWFwKHN1Y2MsIF9mYWlsKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5tYXAoc3VjYyk7CiAgICAgIH0KICAgICAgb3JFbHNlKF92YWx1ZSkgewogICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7CiAgICAgIH0KICAgICAgY2FzdCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICB9CiAgICAgIG9yRWxzZVRocm93KF9tZXNzYWdlKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTsKICAgICAgfQogIH0KICAvKiogRnVuY3Rpb25hbCByZXR1cm4gdHlwZSBmb3IgZXJyb3IgaGFuZGxpbmcuICovCiAgY2xhc3MgRmFpbHVyZSB7CiAgICAgIGVycm9yOwogICAgICBzdWNjZXNzZnVsOwogICAgICBjb25zdHJ1Y3RvcihlcnJvcikgewogICAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yOwogICAgICAgICAgdGhpcy5zdWNjZXNzZnVsID0gZmFsc2U7CiAgICAgIH0KICAgICAgbWFwKF9mKSB7CiAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfQogICAgICBmbGF0TWFwKF9mKSB7CiAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfQogICAgICBtYXBFcnIoZikgewogICAgICAgICAgcmV0dXJuIG5ldyBGYWlsdXJlKGYodGhpcy5lcnJvcikpOwogICAgICB9CiAgICAgIGJpbWFwKF9zdWNjLCBmYWlsKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5tYXBFcnIoZmFpbCk7CiAgICAgIH0KICAgICAgb3JFbHNlKHZhbHVlKSB7CiAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgIH0KICAgICAgY2FzdCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICB9CiAgICAgIG9yRWxzZVRocm93KG1lc3NhZ2UpIHsKICAgICAgICAgIGlmIChtZXNzYWdlKQogICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKHRoaXMuZXJyb3IpKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIiIgKyB0aGlzLmVycm9yKTsKICAgICAgfQogIH0KICAvKiogTW9uYWRpYyAnUmVzdWx0JyB0eXBlIHdoaWNoIGVuY2Fwc3VsYXRlcyB3aGV0aGVyIGEgcHJvY2VkdXJlIHN1Y2NlZWRlZCBvciBmYWlsZWQsIGFzIHdlbGwgYXMgaXQncyByZXR1cm4gdmFsdWUuICovCiAgdmFyIFJlc3VsdDsKICAoZnVuY3Rpb24gKFJlc3VsdCkgewogICAgICAvKiogQ29uc3RydWN0IGEgbmV3IHN1Y2Nlc3MgcmVzdWx0IHdyYXBwaW5nIHRoZSBnaXZlbiB2YWx1ZS4gKi8KICAgICAgZnVuY3Rpb24gc3VjY2Vzcyh2YWx1ZSkgewogICAgICAgICAgcmV0dXJuIG5ldyBTdWNjZXNzKHZhbHVlKTsKICAgICAgfQogICAgICBSZXN1bHQuc3VjY2VzcyA9IHN1Y2Nlc3M7CiAgICAgIC8qKiBDb25zdHJ1Y3QgYSBuZXcgZmFpbHVyZSB2YWx1ZSB3cmFwcGluZyB0aGUgZ2l2ZW4gZXJyb3IuICovCiAgICAgIGZ1bmN0aW9uIGZhaWx1cmUoZXJyb3IpIHsKICAgICAgICAgIHJldHVybiBuZXcgRmFpbHVyZShlcnJvcik7CiAgICAgIH0KICAgICAgUmVzdWx0LmZhaWx1cmUgPSBmYWlsdXJlOwogICAgICAvKiogSm9pbiB0d28gcmVzdWx0cyB3aXRoIGEgYmktZnVuY3Rpb24gYW5kIHJldHVybiBhIG5ldyByZXN1bHQuICovCiAgICAgIGZ1bmN0aW9uIGZsYXRNYXAyKGZpcnN0LCBzZWNvbmQsIGYpIHsKICAgICAgICAgIGlmIChmaXJzdC5zdWNjZXNzZnVsKSB7CiAgICAgICAgICAgICAgaWYgKHNlY29uZC5zdWNjZXNzZnVsKQogICAgICAgICAgICAgICAgICByZXR1cm4gZihmaXJzdC52YWx1ZSwgc2Vjb25kLnZhbHVlKTsKICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlKHNlY29uZC5lcnJvcik7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gZmFpbHVyZShmaXJzdC5lcnJvcik7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgUmVzdWx0LmZsYXRNYXAyID0gZmxhdE1hcDI7CiAgICAgIC8qKiBKb2luIHR3byByZXN1bHRzIHdpdGggYSBiaS1mdW5jdGlvbiBhbmQgcmV0dXJuIGEgbmV3IHJlc3VsdC4gKi8KICAgICAgZnVuY3Rpb24gbWFwMihmaXJzdCwgc2Vjb25kLCBmKSB7CiAgICAgICAgICByZXR1cm4gZmxhdE1hcDIoZmlyc3QsIHNlY29uZCwgKGEsIGIpID0+IHN1Y2Nlc3MoZihhLCBiKSkpOwogICAgICB9CiAgICAgIFJlc3VsdC5tYXAyID0gbWFwMjsKICB9KShSZXN1bHQgfHwgKFJlc3VsdCA9IHt9KSk7CgogIHZhciBjb21tb25qc0dsb2JhbCA9IHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbFRoaXMgOiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHt9OwoKICB2YXIgcGFyc2ltbW9uX3VtZF9taW4gPSB7ZXhwb3J0czoge319OwoKICBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzOwoKICAoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewogIAkhZnVuY3Rpb24obix0KXttb2R1bGUuZXhwb3J0cz10KCk7fSgidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjpjb21tb25qc0dsb2JhbCxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgdD17fTtmdW5jdGlvbiByKGUpe2lmKHRbZV0pcmV0dXJuIHRbZV0uZXhwb3J0czt2YXIgdT10W2VdPXtpOmUsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gbltlXS5jYWxsKHUuZXhwb3J0cyx1LHUuZXhwb3J0cyxyKSx1Lmw9ITAsdS5leHBvcnRzfXJldHVybiByLm09bixyLmM9dCxyLmQ9ZnVuY3Rpb24obix0LGUpe3IubyhuLHQpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkobix0LHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCxnZXQ6ZX0pO30sci5yPWZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt9LHIubj1mdW5jdGlvbihuKXt2YXIgdD1uJiZuLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gbi5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBufTtyZXR1cm4gci5kKHQsImEiLHQpLHR9LHIubz1mdW5jdGlvbihuLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobix0KX0sci5wPSIiLHIoci5zPTApfShbZnVuY3Rpb24obix0LHIpe2Z1bmN0aW9uIGUobil7aWYoISh0aGlzIGluc3RhbmNlb2YgZSkpcmV0dXJuIG5ldyBlKG4pO3RoaXMuXz1uO312YXIgdT1lLnByb3RvdHlwZTtmdW5jdGlvbiBvKG4sdCl7Zm9yKHZhciByPTA7cjxuO3IrKyl0KHIpO31mdW5jdGlvbiBpKG4sdCxyKXtyZXR1cm4gZnVuY3Rpb24obix0KXtvKHQubGVuZ3RoLGZ1bmN0aW9uKHIpe24odFtyXSxyLHQpO30pO30oZnVuY3Rpb24ocixlLHUpe3Q9bih0LHIsZSx1KTt9LHIpLHR9ZnVuY3Rpb24gYShuLHQpe3JldHVybiBpKGZ1bmN0aW9uKHQscixlLHUpe3JldHVybiB0LmNvbmNhdChbbihyLGUsdSldKX0sW10sdCl9ZnVuY3Rpb24gZihuLHQpe3ZhciByPXt2OjAsYnVmOnR9O3JldHVybiBvKG4sZnVuY3Rpb24oKXt2YXIgbjtyPXt2OnIudjw8MXwobj1yLmJ1ZixuWzBdPj43KSxidWY6ZnVuY3Rpb24obil7dmFyIHQ9aShmdW5jdGlvbihuLHQscixlKXtyZXR1cm4gbi5jb25jYXQocj09PWUubGVuZ3RoLTE/QnVmZmVyLmZyb20oW3QsMF0pLnJlYWRVSW50MTZCRSgwKTplLnJlYWRVSW50MTZCRShyKSl9LFtdLG4pO3JldHVybiBCdWZmZXIuZnJvbShhKGZ1bmN0aW9uKG4pe3JldHVybiAobjw8MSY2NTUzNSk+Pjh9LHQpKX0oci5idWYpfTt9KSxyfWZ1bmN0aW9uIGMoKXtyZXR1cm4gInVuZGVmaW5lZCIhPXR5cGVvZiBCdWZmZXJ9ZnVuY3Rpb24gcygpe2lmKCFjKCkpdGhyb3cgbmV3IEVycm9yKCJCdWZmZXIgZ2xvYmFsIGRvZXMgbm90IGV4aXN0OyBwbGVhc2UgdXNlIHdlYnBhY2sgaWYgeW91IG5lZWQgdG8gcGFyc2UgQnVmZmVycyBpbiB0aGUgYnJvd3Nlci4iKX1mdW5jdGlvbiBsKG4pe3MoKTt2YXIgdD1pKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4rdH0sMCxuKTtpZih0JTghPTApdGhyb3cgbmV3IEVycm9yKCJUaGUgYml0cyBbIituLmpvaW4oIiwgIikrIl0gYWRkIHVwIHRvICIrdCsiIHdoaWNoIGlzIG5vdCBhbiBldmVuIG51bWJlciBvZiBieXRlczsgdGhlIHRvdGFsIHNob3VsZCBiZSBkaXZpc2libGUgYnkgOCIpO3ZhciByLHU9dC84LG89KHI9ZnVuY3Rpb24obil7cmV0dXJuIG4+NDh9LGkoZnVuY3Rpb24obix0KXtyZXR1cm4gbnx8KHIodCk/dDpuKX0sbnVsbCxuKSk7aWYobyl0aHJvdyBuZXcgRXJyb3IobysiIGJpdCByYW5nZSByZXF1ZXN0ZWQgZXhjZWVkcyA0OCBiaXQgKDYgYnl0ZSkgTnVtYmVyIG1heC4iKTtyZXR1cm4gbmV3IGUoZnVuY3Rpb24odCxyKXt2YXIgZT11K3I7cmV0dXJuIGU+dC5sZW5ndGg/eChyLHUudG9TdHJpbmcoKSsiIGJ5dGVzIik6YihlLGkoZnVuY3Rpb24obix0KXt2YXIgcj1mKHQsbi5idWYpO3JldHVybiB7Y29sbDpuLmNvbGwuY29uY2F0KHIudiksYnVmOnIuYnVmfX0se2NvbGw6W10sYnVmOnQuc2xpY2UocixlKX0sbikuY29sbCl9KX1mdW5jdGlvbiBoKG4sdCl7cmV0dXJuIG5ldyBlKGZ1bmN0aW9uKHIsZSl7cmV0dXJuIHMoKSxlK3Q+ci5sZW5ndGg/eChlLHQrIiBieXRlcyBmb3IgIituKTpiKGUrdCxyLnNsaWNlKGUsZSt0KSl9KX1mdW5jdGlvbiBwKG4sdCl7aWYoIm51bWJlciIhPXR5cGVvZihyPXQpfHxNYXRoLmZsb29yKHIpIT09cnx8dDwwfHx0PjYpdGhyb3cgbmV3IEVycm9yKG4rIiByZXF1aXJlcyBpbnRlZ2VyIGxlbmd0aCBpbiByYW5nZSBbMCwgNl0uIik7dmFyIHI7fWZ1bmN0aW9uIGQobil7cmV0dXJuIHAoInVpbnRCRSIsbiksaCgidWludEJFKCIrbisiKSIsbikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlYWRVSW50QkUoMCxuKX0pfWZ1bmN0aW9uIHYobil7cmV0dXJuIHAoInVpbnRMRSIsbiksaCgidWludExFKCIrbisiKSIsbikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlYWRVSW50TEUoMCxuKX0pfWZ1bmN0aW9uIGcobil7cmV0dXJuIHAoImludEJFIixuKSxoKCJpbnRCRSgiK24rIikiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkSW50QkUoMCxuKX0pfWZ1bmN0aW9uIG0obil7cmV0dXJuIHAoImludExFIixuKSxoKCJpbnRMRSgiK24rIikiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkSW50TEUoMCxuKX0pfWZ1bmN0aW9uIHkobil7cmV0dXJuIG4gaW5zdGFuY2VvZiBlfWZ1bmN0aW9uIEUobil7cmV0dXJuICJbb2JqZWN0IEFycmF5XSI9PT17fS50b1N0cmluZy5jYWxsKG4pfWZ1bmN0aW9uIHcobil7cmV0dXJuIGMoKSYmQnVmZmVyLmlzQnVmZmVyKG4pfWZ1bmN0aW9uIGIobix0KXtyZXR1cm4ge3N0YXR1czohMCxpbmRleDpuLHZhbHVlOnQsZnVydGhlc3Q6LTEsZXhwZWN0ZWQ6W119fWZ1bmN0aW9uIHgobix0KXtyZXR1cm4gRSh0KXx8KHQ9W3RdKSx7c3RhdHVzOiExLGluZGV4Oi0xLHZhbHVlOm51bGwsZnVydGhlc3Q6bixleHBlY3RlZDp0fX1mdW5jdGlvbiBCKG4sdCl7aWYoIXQpcmV0dXJuIG47aWYobi5mdXJ0aGVzdD50LmZ1cnRoZXN0KXJldHVybiBuO3ZhciByPW4uZnVydGhlc3Q9PT10LmZ1cnRoZXN0P2Z1bmN0aW9uKG4sdCl7aWYoZnVuY3Rpb24oKXtpZih2b2lkIDAhPT1lLl9zdXBwb3J0c1NldClyZXR1cm4gZS5fc3VwcG9ydHNTZXQ7dmFyIG49InVuZGVmaW5lZCIhPXR5cGVvZiBTZXQ7cmV0dXJuIGUuX3N1cHBvcnRzU2V0PW4sbn0oKSYmQXJyYXkuZnJvbSl7Zm9yKHZhciByPW5ldyBTZXQobiksdT0wO3U8dC5sZW5ndGg7dSsrKXIuYWRkKHRbdV0pO3ZhciBvPUFycmF5LmZyb20ocik7cmV0dXJuIG8uc29ydCgpLG99Zm9yKHZhciBpPXt9LGE9MDthPG4ubGVuZ3RoO2ErKylpW25bYV1dPSEwO2Zvcih2YXIgZj0wO2Y8dC5sZW5ndGg7ZisrKWlbdFtmXV09ITA7dmFyIGM9W107Zm9yKHZhciBzIGluIGkpKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGkscykmJmMucHVzaChzKTtyZXR1cm4gYy5zb3J0KCksY30obi5leHBlY3RlZCx0LmV4cGVjdGVkKTp0LmV4cGVjdGVkO3JldHVybiB7c3RhdHVzOm4uc3RhdHVzLGluZGV4Om4uaW5kZXgsdmFsdWU6bi52YWx1ZSxmdXJ0aGVzdDp0LmZ1cnRoZXN0LGV4cGVjdGVkOnJ9fXZhciBqPXt9O2Z1bmN0aW9uIFMobix0KXtpZih3KG4pKXJldHVybiB7b2Zmc2V0OnQsbGluZTotMSxjb2x1bW46LTF9O24gaW4ganx8KGpbbl09e30pO2Zvcih2YXIgcj1qW25dLGU9MCx1PTAsbz0wLGk9dDtpPj0wOyl7aWYoaSBpbiByKXtlPXJbaV0ubGluZSwwPT09byYmKG89cltpXS5saW5lU3RhcnQpO2JyZWFrfSgiXG4iPT09bi5jaGFyQXQoaSl8fCJcciI9PT1uLmNoYXJBdChpKSYmIlxuIiE9PW4uY2hhckF0KGkrMSkpJiYodSsrLDA9PT1vJiYobz1pKzEpKSxpLS07fXZhciBhPWUrdSxmPXQtbztyZXR1cm4gclt0XT17bGluZTphLGxpbmVTdGFydDpvfSx7b2Zmc2V0OnQsbGluZTphKzEsY29sdW1uOmYrMX19ZnVuY3Rpb24gXyhuKXtpZigheShuKSl0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIHBhcnNlcjogIituKX1mdW5jdGlvbiBMKG4sdCl7cmV0dXJuICJzdHJpbmciPT10eXBlb2Ygbj9uLmNoYXJBdCh0KTpuW3RdfWZ1bmN0aW9uIE8obil7aWYoIm51bWJlciIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcigibm90IGEgbnVtYmVyOiAiK24pfWZ1bmN0aW9uIGsobil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKCJub3QgYSBmdW5jdGlvbjogIituKX1mdW5jdGlvbiBQKG4pe2lmKCJzdHJpbmciIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIHN0cmluZzogIituKX12YXIgcT0yLEE9MyxJPTgsRj01KkksTT00Kkksej0iICAiO2Z1bmN0aW9uIFIobix0KXtyZXR1cm4gbmV3IEFycmF5KHQrMSkuam9pbihuKX1mdW5jdGlvbiBVKG4sdCxyKXt2YXIgZT10LW4ubGVuZ3RoO3JldHVybiBlPD0wP246UihyLGUpK259ZnVuY3Rpb24gVyhuLHQscixlKXtyZXR1cm4ge2Zyb206bi10PjA/bi10OjAsdG86bityPmU/ZTpuK3J9fWZ1bmN0aW9uIEQobix0KXt2YXIgcixlLHUsbyxmLGM9dC5pbmRleCxzPWMub2Zmc2V0LGw9MTtpZihzPT09bi5sZW5ndGgpcmV0dXJuICJHb3QgdGhlIGVuZCBvZiB0aGUgaW5wdXQiO2lmKHcobikpe3ZhciBoPXMtcyVJLHA9cy1oLGQ9VyhoLEYsTStJLG4ubGVuZ3RoKSx2PWEoZnVuY3Rpb24obil7cmV0dXJuIGEoZnVuY3Rpb24obil7cmV0dXJuIFUobi50b1N0cmluZygxNiksMiwiMCIpfSxuKX0sZnVuY3Rpb24obix0KXt2YXIgcj1uLmxlbmd0aCxlPVtdLHU9MDtpZihyPD10KXJldHVybiBbbi5zbGljZSgpXTtmb3IodmFyIG89MDtvPHI7bysrKWVbdV18fGUucHVzaChbXSksZVt1XS5wdXNoKG5bb10pLChvKzEpJXQ9PTAmJnUrKztyZXR1cm4gZX0obi5zbGljZShkLmZyb20sZC50bykudG9KU09OKCkuZGF0YSxJKSk7bz1mdW5jdGlvbihuKXtyZXR1cm4gMD09PW4uZnJvbSYmMT09PW4udG8/e2Zyb206bi5mcm9tLHRvOm4udG99Ontmcm9tOm4uZnJvbS9JLHRvOk1hdGguZmxvb3Iobi50by9JKX19KGQpLGU9aC9JLHI9MypwLHA+PTQmJihyKz0xKSxsPTIsdT1hKGZ1bmN0aW9uKG4pe3JldHVybiBuLmxlbmd0aDw9ND9uLmpvaW4oIiAiKTpuLnNsaWNlKDAsNCkuam9pbigiICIpKyIgICIrbi5zbGljZSg0KS5qb2luKCIgIil9LHYpLChmPSg4KihvLnRvPjA/by50by0xOm8udG8pKS50b1N0cmluZygxNikubGVuZ3RoKTwyJiYoZj0yKTt9ZWxzZSB7dmFyIGc9bi5zcGxpdCgvXHJcbnxbXG5cclx1MjAyOFx1MjAyOV0vKTtyPWMuY29sdW1uLTEsZT1jLmxpbmUtMSxvPVcoZSxxLEEsZy5sZW5ndGgpLHU9Zy5zbGljZShvLmZyb20sby50byksZj1vLnRvLnRvU3RyaW5nKCkubGVuZ3RoO312YXIgbT1lLW8uZnJvbTtyZXR1cm4gdyhuKSYmKGY9KDgqKG8udG8+MD9vLnRvLTE6by50bykpLnRvU3RyaW5nKDE2KS5sZW5ndGgpPDImJihmPTIpLGkoZnVuY3Rpb24odCxlLHUpe3ZhciBpLGE9dT09PW0sYz1hPyI+ICI6ejtyZXR1cm4gaT13KG4pP1UoKDgqKG8uZnJvbSt1KSkudG9TdHJpbmcoMTYpLGYsIjAiKTpVKChvLmZyb20rdSsxKS50b1N0cmluZygpLGYsIiAiKSxbXS5jb25jYXQodCxbYytpKyIgfCAiK2VdLGE/W3orUigiICIsZikrIiB8ICIrVSgiIixyLCIgIikrUigiXiIsbCldOltdKX0sW10sdSkuam9pbigiXG4iKX1mdW5jdGlvbiBOKG4sdCl7cmV0dXJuIFsiXG4iLCItLSBQQVJTSU5HIEZBSUxFRCAiK1IoIi0iLDUwKSwiXG5cbiIsRChuLHQpLCJcblxuIiwocj10LmV4cGVjdGVkLDE9PT1yLmxlbmd0aD8iRXhwZWN0ZWQ6XG5cbiIrclswXToiRXhwZWN0ZWQgb25lIG9mIHRoZSBmb2xsb3dpbmc6IFxuXG4iK3Iuam9pbigiLCAiKSksIlxuIl0uam9pbigiIik7dmFyIHI7fWZ1bmN0aW9uIEcobil7cmV0dXJuIHZvaWQgMCE9PW4uZmxhZ3M/bi5mbGFnczpbbi5nbG9iYWw/ImciOiIiLG4uaWdub3JlQ2FzZT8iaSI6IiIsbi5tdWx0aWxpbmU/Im0iOiIiLG4udW5pY29kZT8idSI6IiIsbi5zdGlja3k/InkiOiIiXS5qb2luKCIiKX1mdW5jdGlvbiBDKCl7Zm9yKHZhciBuPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSx0PW4ubGVuZ3RoLHI9MDtyPHQ7cis9MSlfKG5bcl0pO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7Zm9yKHZhciB1LG89bmV3IEFycmF5KHQpLGk9MDtpPHQ7aSs9MSl7aWYoISh1PUIobltpXS5fKHIsZSksdSkpLnN0YXR1cylyZXR1cm4gdTtvW2ldPXUudmFsdWUsZT11LmluZGV4O31yZXR1cm4gQihiKGUsbyksdSl9KX1mdW5jdGlvbiBKKCl7dmFyIG49W10uc2xpY2UuY2FsbChhcmd1bWVudHMpO2lmKDA9PT1uLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoInNlcU1hcCBuZWVkcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKTt2YXIgdD1uLnBvcCgpO3JldHVybiBrKHQpLEMuYXBwbHkobnVsbCxuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIHQuYXBwbHkobnVsbCxuKX0pfWZ1bmN0aW9uIFQoKXt2YXIgbj1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyksdD1uLmxlbmd0aDtpZigwPT09dClyZXR1cm4gWSgiemVybyBhbHRlcm5hdGVzIik7Zm9yKHZhciByPTA7cjx0O3IrPTEpXyhuW3JdKTtyZXR1cm4gZShmdW5jdGlvbih0LHIpe2Zvcih2YXIgZSx1PTA7dTxuLmxlbmd0aDt1Kz0xKWlmKChlPUIoblt1XS5fKHQsciksZSkpLnN0YXR1cylyZXR1cm4gZTtyZXR1cm4gZX0pfWZ1bmN0aW9uIFYobix0KXtyZXR1cm4gSChuLHQpLm9yKFgoW10pKX1mdW5jdGlvbiBIKG4sdCl7cmV0dXJuIF8obiksXyh0KSxKKG4sdC50aGVuKG4pLm1hbnkoKSxmdW5jdGlvbihuLHQpe3JldHVybiBbbl0uY29uY2F0KHQpfSl9ZnVuY3Rpb24gSyhuKXtQKG4pO3ZhciB0PSInIituKyInIjtyZXR1cm4gZShmdW5jdGlvbihyLGUpe3ZhciB1PWUrbi5sZW5ndGgsbz1yLnNsaWNlKGUsdSk7cmV0dXJuIG89PT1uP2IodSxvKTp4KGUsdCl9KX1mdW5jdGlvbiBRKG4sdCl7IWZ1bmN0aW9uKG4pe2lmKCEobiBpbnN0YW5jZW9mIFJlZ0V4cCkpdGhyb3cgbmV3IEVycm9yKCJub3QgYSByZWdleHA6ICIrbik7Zm9yKHZhciB0PUcobikscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgZT10LmNoYXJBdChyKTtpZigiaSIhPT1lJiYibSIhPT1lJiYidSIhPT1lJiYicyIhPT1lKXRocm93IG5ldyBFcnJvcigndW5zdXBwb3J0ZWQgcmVnZXhwIGZsYWcgIicrZSsnIjogJytuKX19KG4pLGFyZ3VtZW50cy5sZW5ndGg+PTI/Tyh0KTp0PTA7dmFyIHI9ZnVuY3Rpb24obil7cmV0dXJuIFJlZ0V4cCgiXig/OiIrbi5zb3VyY2UrIikiLEcobikpfShuKSx1PSIiK247cmV0dXJuIGUoZnVuY3Rpb24obixlKXt2YXIgbz1yLmV4ZWMobi5zbGljZShlKSk7aWYobyl7aWYoMDw9dCYmdDw9by5sZW5ndGgpe3ZhciBpPW9bMF0sYT1vW3RdO3JldHVybiBiKGUraS5sZW5ndGgsYSl9cmV0dXJuIHgoZSwidmFsaWQgbWF0Y2ggZ3JvdXAgKDAgdG8gIitvLmxlbmd0aCsiKSBpbiAiK3UpfXJldHVybiB4KGUsdSl9KX1mdW5jdGlvbiBYKG4pe3JldHVybiBlKGZ1bmN0aW9uKHQscil7cmV0dXJuIGIocixuKX0pfWZ1bmN0aW9uIFkobil7cmV0dXJuIGUoZnVuY3Rpb24odCxyKXtyZXR1cm4geChyLG4pfSl9ZnVuY3Rpb24gWihuKXtpZih5KG4pKXJldHVybiBlKGZ1bmN0aW9uKHQscil7dmFyIGU9bi5fKHQscik7cmV0dXJuIGUuaW5kZXg9cixlLnZhbHVlPSIiLGV9KTtpZigic3RyaW5nIj09dHlwZW9mIG4pcmV0dXJuIFooSyhuKSk7aWYobiBpbnN0YW5jZW9mIFJlZ0V4cClyZXR1cm4gWihRKG4pKTt0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIHN0cmluZywgcmVnZXhwLCBvciBwYXJzZXI6ICIrbil9ZnVuY3Rpb24gJChuKXtyZXR1cm4gXyhuKSxlKGZ1bmN0aW9uKHQscil7dmFyIGU9bi5fKHQsciksdT10LnNsaWNlKHIsZS5pbmRleCk7cmV0dXJuIGUuc3RhdHVzP3gociwnbm90ICInK3UrJyInKTpiKHIsbnVsbCl9KX1mdW5jdGlvbiBubihuKXtyZXR1cm4gayhuKSxlKGZ1bmN0aW9uKHQscil7dmFyIGU9TCh0LHIpO3JldHVybiByPHQubGVuZ3RoJiZuKGUpP2IocisxLGUpOngociwiYSBjaGFyYWN0ZXIvYnl0ZSBtYXRjaGluZyAiK24pfSl9ZnVuY3Rpb24gdG4obix0KXthcmd1bWVudHMubGVuZ3RoPDImJih0PW4sbj12b2lkIDApO3ZhciByPWUoZnVuY3Rpb24obixlKXtyZXR1cm4gci5fPXQoKS5fLHIuXyhuLGUpfSk7cmV0dXJuIG4/ci5kZXNjKG4pOnJ9ZnVuY3Rpb24gcm4oKXtyZXR1cm4gWSgiZmFudGFzeS1sYW5kL2VtcHR5Iil9dS5wYXJzZT1mdW5jdGlvbihuKXtpZigic3RyaW5nIiE9dHlwZW9mIG4mJiF3KG4pKXRocm93IG5ldyBFcnJvcigiLnBhcnNlIG11c3QgYmUgY2FsbGVkIHdpdGggYSBzdHJpbmcgb3IgQnVmZmVyIGFzIGl0cyBhcmd1bWVudCIpO3ZhciB0LHI9dGhpcy5za2lwKGFuKS5fKG4sMCk7cmV0dXJuIHQ9ci5zdGF0dXM/e3N0YXR1czohMCx2YWx1ZTpyLnZhbHVlfTp7c3RhdHVzOiExLGluZGV4OlMobixyLmZ1cnRoZXN0KSxleHBlY3RlZDpyLmV4cGVjdGVkfSxkZWxldGUgaltuXSx0fSx1LnRyeVBhcnNlPWZ1bmN0aW9uKG4pe3ZhciB0PXRoaXMucGFyc2Uobik7aWYodC5zdGF0dXMpcmV0dXJuIHQudmFsdWU7dmFyIHI9TihuLHQpLGU9bmV3IEVycm9yKHIpO3Rocm93IGUudHlwZT0iUGFyc2ltbW9uRXJyb3IiLGUucmVzdWx0PXQsZX0sdS5hc3NlcnQ9ZnVuY3Rpb24obix0KXtyZXR1cm4gdGhpcy5jaGFpbihmdW5jdGlvbihyKXtyZXR1cm4gbihyKT9YKHIpOlkodCl9KX0sdS5vcj1mdW5jdGlvbihuKXtyZXR1cm4gVCh0aGlzLG4pfSx1LnRyaW09ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMud3JhcChuLG4pfSx1LndyYXA9ZnVuY3Rpb24obix0KXtyZXR1cm4gSihuLHRoaXMsdCxmdW5jdGlvbihuLHQpe3JldHVybiB0fSl9LHUudGhydT1mdW5jdGlvbihuKXtyZXR1cm4gbih0aGlzKX0sdS50aGVuPWZ1bmN0aW9uKG4pe3JldHVybiBfKG4pLEModGhpcyxuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG5bMV19KX0sdS5tYW55PWZ1bmN0aW9uKCl7dmFyIG49dGhpcztyZXR1cm4gZShmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT1bXSx1PXZvaWQgMDs7KXtpZighKHU9QihuLl8odCxyKSx1KSkuc3RhdHVzKXJldHVybiBCKGIocixlKSx1KTtpZihyPT09dS5pbmRleCl0aHJvdyBuZXcgRXJyb3IoImluZmluaXRlIGxvb3AgZGV0ZWN0ZWQgaW4gLm1hbnkoKSBwYXJzZXIgLS0tIGNhbGxpbmcgLm1hbnkoKSBvbiBhIHBhcnNlciB3aGljaCBjYW4gYWNjZXB0IHplcm8gY2hhcmFjdGVycyBpcyB1c3VhbGx5IHRoZSBjYXVzZSIpO3I9dS5pbmRleCxlLnB1c2godS52YWx1ZSk7fX0pfSx1LnRpZVdpdGg9ZnVuY3Rpb24obil7cmV0dXJuIFAobiksdGhpcy5tYXAoZnVuY3Rpb24odCl7aWYoZnVuY3Rpb24obil7aWYoIUUobikpdGhyb3cgbmV3IEVycm9yKCJub3QgYW4gYXJyYXk6ICIrbil9KHQpLHQubGVuZ3RoKXtQKHRbMF0pO2Zvcih2YXIgcj10WzBdLGU9MTtlPHQubGVuZ3RoO2UrKylQKHRbZV0pLHIrPW4rdFtlXTtyZXR1cm4gcn1yZXR1cm4gIiJ9KX0sdS50aWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50aWVXaXRoKCIiKX0sdS50aW1lcz1mdW5jdGlvbihuLHQpe3ZhciByPXRoaXM7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MiYmKHQ9biksTyhuKSxPKHQpLGUoZnVuY3Rpb24oZSx1KXtmb3IodmFyIG89W10saT12b2lkIDAsYT12b2lkIDAsZj0wO2Y8bjtmKz0xKXtpZihhPUIoaT1yLl8oZSx1KSxhKSwhaS5zdGF0dXMpcmV0dXJuIGE7dT1pLmluZGV4LG8ucHVzaChpLnZhbHVlKTt9Zm9yKDtmPHQmJihhPUIoaT1yLl8oZSx1KSxhKSxpLnN0YXR1cyk7Zis9MSl1PWkuaW5kZXgsby5wdXNoKGkudmFsdWUpO3JldHVybiBCKGIodSxvKSxhKX0pfSx1LnJlc3VsdD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gbn0pfSx1LmF0TW9zdD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy50aW1lcygwLG4pfSx1LmF0TGVhc3Q9ZnVuY3Rpb24obil7cmV0dXJuIEoodGhpcy50aW1lcyhuKSx0aGlzLm1hbnkoKSxmdW5jdGlvbihuLHQpe3JldHVybiBuLmNvbmNhdCh0KX0pfSx1Lm1hcD1mdW5jdGlvbihuKXtrKG4pO3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10Ll8ocixlKTtyZXR1cm4gdS5zdGF0dXM/QihiKHUuaW5kZXgsbih1LnZhbHVlKSksdSk6dX0pfSx1LmNvbnRyYW1hcD1mdW5jdGlvbihuKXtrKG4pO3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10LnBhcnNlKG4oci5zbGljZShlKSkpO3JldHVybiB1LnN0YXR1cz9iKGUrci5sZW5ndGgsdS52YWx1ZSk6dX0pfSx1LnByb21hcD1mdW5jdGlvbihuLHQpe3JldHVybiBrKG4pLGsodCksdGhpcy5jb250cmFtYXAobikubWFwKHQpfSx1LnNraXA9ZnVuY3Rpb24obil7cmV0dXJuIEModGhpcyxuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG5bMF19KX0sdS5tYXJrPWZ1bmN0aW9uKCl7cmV0dXJuIEooZW4sdGhpcyxlbixmdW5jdGlvbihuLHQscil7cmV0dXJuIHtzdGFydDpuLHZhbHVlOnQsZW5kOnJ9fSl9LHUubm9kZT1mdW5jdGlvbihuKXtyZXR1cm4gSihlbix0aGlzLGVuLGZ1bmN0aW9uKHQscixlKXtyZXR1cm4ge25hbWU6bix2YWx1ZTpyLHN0YXJ0OnQsZW5kOmV9fSl9LHUuc2VwQnk9ZnVuY3Rpb24obil7cmV0dXJuIFYodGhpcyxuKX0sdS5zZXBCeTE9ZnVuY3Rpb24obil7cmV0dXJuIEgodGhpcyxuKX0sdS5sb29rYWhlYWQ9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuc2tpcChaKG4pKX0sdS5ub3RGb2xsb3dlZEJ5PWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNraXAoJChuKSl9LHUuZGVzYz1mdW5jdGlvbihuKXtFKG4pfHwobj1bbl0pO3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10Ll8ocixlKTtyZXR1cm4gdS5zdGF0dXN8fCh1LmV4cGVjdGVkPW4pLHV9KX0sdS5mYWxsYmFjaz1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5vcihYKG4pKX0sdS5hcD1mdW5jdGlvbihuKXtyZXR1cm4gSihuLHRoaXMsZnVuY3Rpb24obix0KXtyZXR1cm4gbih0KX0pfSx1LmNoYWluPWZ1bmN0aW9uKG4pe3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10Ll8ocixlKTtyZXR1cm4gdS5zdGF0dXM/QihuKHUudmFsdWUpLl8ocix1LmluZGV4KSx1KTp1fSl9LHUuY29uY2F0PXUub3IsdS5lbXB0eT1ybix1Lm9mPVgsdVsiZmFudGFzeS1sYW5kL2FwIl09dS5hcCx1WyJmYW50YXN5LWxhbmQvY2hhaW4iXT11LmNoYWluLHVbImZhbnRhc3ktbGFuZC9jb25jYXQiXT11LmNvbmNhdCx1WyJmYW50YXN5LWxhbmQvZW1wdHkiXT11LmVtcHR5LHVbImZhbnRhc3ktbGFuZC9vZiJdPXUub2YsdVsiZmFudGFzeS1sYW5kL21hcCJdPXUubWFwO3ZhciBlbj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIGIodCxTKG4sdCkpfSksdW49ZShmdW5jdGlvbihuLHQpe3JldHVybiB0Pj1uLmxlbmd0aD94KHQsImFueSBjaGFyYWN0ZXIvYnl0ZSIpOmIodCsxLEwobix0KSl9KSxvbj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIGIobi5sZW5ndGgsbi5zbGljZSh0KSl9KSxhbj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQ8bi5sZW5ndGg/eCh0LCJFT0YiKTpiKHQsbnVsbCl9KSxmbj1RKC9bMC05XS8pLmRlc2MoImEgZGlnaXQiKSxjbj1RKC9bMC05XSovKS5kZXNjKCJvcHRpb25hbCBkaWdpdHMiKSxzbj1RKC9bYS16XS9pKS5kZXNjKCJhIGxldHRlciIpLGxuPVEoL1thLXpdKi9pKS5kZXNjKCJvcHRpb25hbCBsZXR0ZXJzIiksaG49USgvXHMqLykuZGVzYygib3B0aW9uYWwgd2hpdGVzcGFjZSIpLHBuPVEoL1xzKy8pLmRlc2MoIndoaXRlc3BhY2UiKSxkbj1LKCJcciIpLHZuPUsoIlxuIiksZ249SygiXHJcbiIpLG1uPVQoZ24sdm4sZG4pLmRlc2MoIm5ld2xpbmUiKSx5bj1UKG1uLGFuKTtlLmFsbD1vbixlLmFsdD1ULGUuYW55PXVuLGUuY3I9ZG4sZS5jcmVhdGVMYW5ndWFnZT1mdW5jdGlvbihuKXt2YXIgdD17fTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmZnVuY3Rpb24ocil7dFtyXT10bihmdW5jdGlvbigpe3JldHVybiBuW3JdKHQpfSk7fShyKTtyZXR1cm4gdH0sZS5jcmxmPWduLGUuY3VzdG9tPWZ1bmN0aW9uKG4pe3JldHVybiBlKG4oYix4KSl9LGUuZGlnaXQ9Zm4sZS5kaWdpdHM9Y24sZS5lbXB0eT1ybixlLmVuZD15bixlLmVvZj1hbixlLmZhaWw9WSxlLmZvcm1hdEVycm9yPU4sZS5pbmRleD1lbixlLmlzUGFyc2VyPXksZS5sYXp5PXRuLGUubGV0dGVyPXNuLGUubGV0dGVycz1sbixlLmxmPXZuLGUubG9va2FoZWFkPVosZS5tYWtlRmFpbHVyZT14LGUubWFrZVN1Y2Nlc3M9YixlLm5ld2xpbmU9bW4sZS5ub25lT2Y9ZnVuY3Rpb24obil7cmV0dXJuIG5uKGZ1bmN0aW9uKHQpe3JldHVybiBuLmluZGV4T2YodCk8MH0pLmRlc2MoIm5vbmUgb2YgJyIrbisiJyIpfSxlLm5vdEZvbGxvd2VkQnk9JCxlLm9mPVgsZS5vbmVPZj1mdW5jdGlvbihuKXtmb3IodmFyIHQ9bi5zcGxpdCgiIikscj0wO3I8dC5sZW5ndGg7cisrKXRbcl09IiciK3Rbcl0rIiciO3JldHVybiBubihmdW5jdGlvbih0KXtyZXR1cm4gbi5pbmRleE9mKHQpPj0wfSkuZGVzYyh0KX0sZS5vcHRXaGl0ZXNwYWNlPWhuLGUuUGFyc2VyPWUsZS5yYW5nZT1mdW5jdGlvbihuLHQpe3JldHVybiBubihmdW5jdGlvbihyKXtyZXR1cm4gbjw9ciYmcjw9dH0pLmRlc2MobisiLSIrdCl9LGUucmVnZXg9USxlLnJlZ2V4cD1RLGUuc2VwQnk9VixlLnNlcEJ5MT1ILGUuc2VxPUMsZS5zZXFNYXA9SixlLnNlcU9iaj1mdW5jdGlvbigpe2Zvcih2YXIgbix0PXt9LHI9MCx1PShuPWFyZ3VtZW50cyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChuKSksbz11Lmxlbmd0aCxpPTA7aTxvO2krPTEpe3ZhciBhPXVbaV07aWYoIXkoYSkpe2lmKEUoYSkmJjI9PT1hLmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiBhWzBdJiZ5KGFbMV0pKXt2YXIgZj1hWzBdO2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGYpKXRocm93IG5ldyBFcnJvcigic2VxT2JqOiBkdXBsaWNhdGUga2V5ICIrZik7dFtmXT0hMCxyKys7Y29udGludWV9dGhyb3cgbmV3IEVycm9yKCJzZXFPYmogYXJndW1lbnRzIG11c3QgYmUgcGFyc2VycyBvciBbc3RyaW5nLCBwYXJzZXJdIGFycmF5IHBhaXJzLiIpfX1pZigwPT09cil0aHJvdyBuZXcgRXJyb3IoInNlcU9iaiBleHBlY3RzIGF0IGxlYXN0IG9uZSBuYW1lZCBwYXJzZXIsIGZvdW5kIHplcm8iKTtyZXR1cm4gZShmdW5jdGlvbihuLHQpe2Zvcih2YXIgcixlPXt9LGk9MDtpPG87aSs9MSl7dmFyIGEsZjtpZihFKHVbaV0pPyhhPXVbaV1bMF0sZj11W2ldWzFdKTooYT1udWxsLGY9dVtpXSksIShyPUIoZi5fKG4sdCkscikpLnN0YXR1cylyZXR1cm4gcjthJiYoZVthXT1yLnZhbHVlKSx0PXIuaW5kZXg7fXJldHVybiBCKGIodCxlKSxyKX0pfSxlLnN0cmluZz1LLGUuc3VjY2VlZD1YLGUudGFrZVdoaWxlPWZ1bmN0aW9uKG4pe3JldHVybiBrKG4pLGUoZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9cjtlPHQubGVuZ3RoJiZuKEwodCxlKSk7KWUrKztyZXR1cm4gYihlLHQuc2xpY2UocixlKSl9KX0sZS50ZXN0PW5uLGUud2hpdGVzcGFjZT1wbixlWyJmYW50YXN5LWxhbmQvZW1wdHkiXT1ybixlWyJmYW50YXN5LWxhbmQvb2YiXT1YLGUuQmluYXJ5PXtiaXRTZXE6bCxiaXRTZXFPYmo6ZnVuY3Rpb24obil7cygpO3ZhciB0PXt9LHI9MCxlPWEoZnVuY3Rpb24obil7aWYoRShuKSl7dmFyIGU9bjtpZigyIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJbIitlLmpvaW4oIiwgIikrIl0gc2hvdWxkIGJlIGxlbmd0aCAyLCBnb3QgbGVuZ3RoICIrZS5sZW5ndGgpO2lmKFAoZVswXSksTyhlWzFdKSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlWzBdKSl0aHJvdyBuZXcgRXJyb3IoImR1cGxpY2F0ZSBrZXkgaW4gYml0U2VxT2JqOiAiK2VbMF0pO3JldHVybiB0W2VbMF1dPSEwLHIrKyxlfXJldHVybiBPKG4pLFtudWxsLG5dfSxuKTtpZihyPDEpdGhyb3cgbmV3IEVycm9yKCJiaXRTZXFPYmogZXhwZWN0cyBhdCBsZWFzdCBvbmUgbmFtZWQgcGFpciwgZ290IFsiK24uam9pbigiLCAiKSsiXSIpO3ZhciB1PWEoZnVuY3Rpb24obil7cmV0dXJuIG5bMF19LGUpO3JldHVybiBsKGEoZnVuY3Rpb24obil7cmV0dXJuIG5bMV19LGUpKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIGkoZnVuY3Rpb24obix0KXtyZXR1cm4gbnVsbCE9PXRbMF0mJihuW3RbMF1dPXRbMV0pLG59LHt9LGEoZnVuY3Rpb24odCxyKXtyZXR1cm4gW3QsbltyXV19LHUpKX0pfSxieXRlOmZ1bmN0aW9uKG4pe2lmKHMoKSxPKG4pLG4+MjU1KXRocm93IG5ldyBFcnJvcigiVmFsdWUgc3BlY2lmaWVkIHRvIGJ5dGUgY29uc3RydWN0b3IgKCIrbisiPTB4IituLnRvU3RyaW5nKDE2KSsiKSBpcyBsYXJnZXIgaW4gdmFsdWUgdGhhbiBhIHNpbmdsZSBieXRlLiIpO3ZhciB0PShuPjE1PyIweCI6IjB4MCIpK24udG9TdHJpbmcoMTYpO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9TChyLGUpO3JldHVybiB1PT09bj9iKGUrMSx1KTp4KGUsdCl9KX0sYnVmZmVyOmZ1bmN0aW9uKG4pe3JldHVybiBoKCJidWZmZXIiLG4pLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gQnVmZmVyLmZyb20obil9KX0sZW5jb2RlZFN0cmluZzpmdW5jdGlvbihuLHQpe3JldHVybiBoKCJzdHJpbmciLHQpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC50b1N0cmluZyhuKX0pfSx1aW50QkU6ZCx1aW50OEJFOmQoMSksdWludDE2QkU6ZCgyKSx1aW50MzJCRTpkKDQpLHVpbnRMRTp2LHVpbnQ4TEU6digxKSx1aW50MTZMRTp2KDIpLHVpbnQzMkxFOnYoNCksaW50QkU6ZyxpbnQ4QkU6ZygxKSxpbnQxNkJFOmcoMiksaW50MzJCRTpnKDQpLGludExFOm0saW50OExFOm0oMSksaW50MTZMRTptKDIpLGludDMyTEU6bSg0KSxmbG9hdEJFOmgoImZsb2F0QkUiLDQpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkRmxvYXRCRSgwKX0pLGZsb2F0TEU6aCgiZmxvYXRMRSIsNCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlYWRGbG9hdExFKDApfSksZG91YmxlQkU6aCgiZG91YmxlQkUiLDgpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkRG91YmxlQkUoMCl9KSxkb3VibGVMRTpoKCJkb3VibGVMRSIsOCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlYWREb3VibGVMRSgwKX0pfSxuLmV4cG9ydHM9ZTt9XSl9KTsgCiAgfSAocGFyc2ltbW9uX3VtZF9taW4sIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMpKTsKCiAgdmFyIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cyA9IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHM7CgogIHZhciBlbW9qaVJlZ2V4ID0gKCkgPT4gewogIAkvLyBodHRwczovL210aHMuYmUvZW1vamkKICAJcmV0dXJuIC9bIyowLTldXHVGRTBGP1x1MjBFM3xbXHhBOVx4QUVcdTIwM0NcdTIwNDlcdTIxMjJcdTIxMzlcdTIxOTQtXHUyMTk5XHUyMUE5XHUyMUFBXHUyMzFBXHUyMzFCXHUyMzI4XHUyM0NGXHUyM0VELVx1MjNFRlx1MjNGMVx1MjNGMlx1MjNGOC1cdTIzRkFcdTI0QzJcdTI1QUFcdTI1QUJcdTI1QjZcdTI1QzBcdTI1RkJcdTI1RkNcdTI1RkVcdTI2MDAtXHUyNjA0XHUyNjBFXHUyNjExXHUyNjE0XHUyNjE1XHUyNjE4XHUyNjIwXHUyNjIyXHUyNjIzXHUyNjI2XHUyNjJBXHUyNjJFXHUyNjJGXHUyNjM4LVx1MjYzQVx1MjY0MFx1MjY0Mlx1MjY0OC1cdTI2NTNcdTI2NUZcdTI2NjBcdTI2NjNcdTI2NjVcdTI2NjZcdTI2NjhcdTI2N0JcdTI2N0VcdTI2N0ZcdTI2OTJcdTI2OTQtXHUyNjk3XHUyNjk5XHUyNjlCXHUyNjlDXHUyNkEwXHUyNkE3XHUyNkFBXHUyNkIwXHUyNkIxXHUyNkJEXHUyNkJFXHUyNkM0XHUyNkM4XHUyNkNGXHUyNkQxXHUyNkQzXHUyNkU5XHUyNkYwLVx1MjZGNVx1MjZGN1x1MjZGOFx1MjZGQVx1MjcwMlx1MjcwOFx1MjcwOVx1MjcwRlx1MjcxMlx1MjcxNFx1MjcxNlx1MjcxRFx1MjcyMVx1MjczM1x1MjczNFx1Mjc0NFx1Mjc0N1x1Mjc1N1x1Mjc2M1x1MjdBMVx1MjkzNFx1MjkzNVx1MkIwNS1cdTJCMDdcdTJCMUJcdTJCMUNcdTJCNTVcdTMwMzBcdTMwM0RcdTMyOTdcdTMyOTldXHVGRTBGP3xbXHUyNjFEXHUyNzBDXHUyNzBEXSg/Olx1RkUwRnxcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xbXHUyNzBBXHUyNzBCXSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/fFtcdTIzRTktXHUyM0VDXHUyM0YwXHUyM0YzXHUyNUZEXHUyNjkzXHUyNkExXHUyNkFCXHUyNkM1XHUyNkNFXHUyNkQ0XHUyNkVBXHUyNkZEXHUyNzA1XHUyNzI4XHUyNzRDXHUyNzRFXHUyNzUzLVx1Mjc1NVx1Mjc5NS1cdTI3OTdcdTI3QjBcdTI3QkZcdTJCNTBdfFx1MjZGOSg/Olx1RkUwRnxcdUQ4M0NbXHVERkZCLVx1REZGRl0pPyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGPyk/fFx1Mjc2NFx1RkUwRj8oPzpcdTIwMEQoPzpcdUQ4M0RcdUREMjV8XHVEODNFXHVERTc5KSk/fFx1RDgzQyg/OltcdURDMDRcdURENzBcdURENzFcdUREN0VcdUREN0ZcdURFMDJcdURFMzdcdURGMjFcdURGMjQtXHVERjJDXHVERjM2XHVERjdEXHVERjk2XHVERjk3XHVERjk5LVx1REY5Qlx1REY5RVx1REY5Rlx1REZDRFx1REZDRVx1REZENC1cdURGREZcdURGRjVcdURGRjddXHVGRTBGP3xbXHVERjg1XHVERkMyXHVERkM3XSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/fFtcdURGQzNcdURGQzRcdURGQ0FdKD86XHVEODNDW1x1REZGQi1cdURGRkZdKT8oPzpcdTIwMERbXHUyNjQwXHUyNjQyXVx1RkUwRj8pP3xbXHVERkNCXHVERkNDXSg/Olx1RkUwRnxcdUQ4M0NbXHVERkZCLVx1REZGRl0pPyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGPyk/fFtcdURDQ0ZcdUREOEVcdUREOTEtXHVERDlBXHVERTAxXHVERTFBXHVERTJGXHVERTMyLVx1REUzNlx1REUzOC1cdURFM0FcdURFNTBcdURFNTFcdURGMDAtXHVERjIwXHVERjJELVx1REYzNVx1REYzNy1cdURGN0NcdURGN0UtXHVERjg0XHVERjg2LVx1REY5M1x1REZBMC1cdURGQzFcdURGQzVcdURGQzZcdURGQzhcdURGQzlcdURGQ0YtXHVERkQzXHVERkUwLVx1REZGMFx1REZGOC1cdURGRkZdfFx1RERFNlx1RDgzQ1tcdURERTgtXHVEREVDXHVEREVFXHVEREYxXHVEREYyXHVEREY0XHVEREY2LVx1RERGQVx1RERGQ1x1RERGRFx1RERGRl18XHVEREU3XHVEODNDW1x1RERFNlx1RERFN1x1RERFOS1cdURERUZcdURERjEtXHVEREY0XHVEREY2LVx1RERGOVx1RERGQlx1RERGQ1x1RERGRVx1RERGRl18XHVEREU4XHVEODNDW1x1RERFNlx1RERFOFx1RERFOVx1RERFQi1cdURERUVcdURERjAtXHVEREY1XHVEREY3XHVEREZBLVx1RERGRl18XHVEREU5XHVEODNDW1x1RERFQVx1RERFQ1x1RERFRlx1RERGMFx1RERGMlx1RERGNFx1RERGRl18XHVEREVBXHVEODNDW1x1RERFNlx1RERFOFx1RERFQVx1RERFQ1x1RERFRFx1RERGNy1cdURERkFdfFx1RERFQlx1RDgzQ1tcdURERUUtXHVEREYwXHVEREYyXHVEREY0XHVEREY3XXxcdURERUNcdUQ4M0NbXHVEREU2XHVEREU3XHVEREU5LVx1RERFRVx1RERGMS1cdURERjNcdURERjUtXHVEREZBXHVEREZDXHVEREZFXXxcdURERURcdUQ4M0NbXHVEREYwXHVEREYyXHVEREYzXHVEREY3XHVEREY5XHVEREZBXXxcdURERUVcdUQ4M0NbXHVEREU4LVx1RERFQVx1RERGMS1cdURERjRcdURERjYtXHVEREY5XXxcdURERUZcdUQ4M0NbXHVEREVBXHVEREYyXHVEREY0XHVEREY1XXxcdURERjBcdUQ4M0NbXHVEREVBXHVEREVDLVx1RERFRVx1RERGMlx1RERGM1x1RERGNVx1RERGN1x1RERGQ1x1RERGRVx1RERGRl18XHVEREYxXHVEODNDW1x1RERFNi1cdURERThcdURERUVcdURERjBcdURERjctXHVEREZCXHVEREZFXXxcdURERjJcdUQ4M0NbXHVEREU2XHVEREU4LVx1RERFRFx1RERGMC1cdURERkZdfFx1RERGM1x1RDgzQ1tcdURERTZcdURERThcdURERUEtXHVEREVDXHVEREVFXHVEREYxXHVEREY0XHVEREY1XHVEREY3XHVEREZBXHVEREZGXXxcdURERjRcdUQ4M0NcdURERjJ8XHVEREY1XHVEODNDW1x1RERFNlx1RERFQS1cdURERURcdURERjAtXHVEREYzXHVEREY3LVx1RERGOVx1RERGQ1x1RERGRV18XHVEREY2XHVEODNDXHVEREU2fFx1RERGN1x1RDgzQ1tcdURERUFcdURERjRcdURERjhcdURERkFcdURERkNdfFx1RERGOFx1RDgzQ1tcdURERTYtXHVEREVBXHVEREVDLVx1RERGNFx1RERGNy1cdURERjlcdURERkJcdURERkQtXHVEREZGXXxcdURERjlcdUQ4M0NbXHVEREU2XHVEREU4XHVEREU5XHVEREVCLVx1RERFRFx1RERFRi1cdURERjRcdURERjdcdURERjlcdURERkJcdURERkNcdURERkZdfFx1RERGQVx1RDgzQ1tcdURERTZcdURERUNcdURERjJcdURERjNcdURERjhcdURERkVcdURERkZdfFx1RERGQlx1RDgzQ1tcdURERTZcdURERThcdURERUFcdURERUNcdURERUVcdURERjNcdURERkFdfFx1RERGQ1x1RDgzQ1tcdURERUJcdURERjhdfFx1RERGRFx1RDgzQ1x1RERGMHxcdURERkVcdUQ4M0NbXHVEREVBXHVEREY5XXxcdURERkZcdUQ4M0NbXHVEREU2XHVEREYyXHVEREZDXXxcdURGRjNcdUZFMEY/KD86XHUyMDBEKD86XHUyNkE3XHVGRTBGP3xcdUQ4M0NcdURGMDgpKT98XHVERkY0KD86XHUyMDBEXHUyNjIwXHVGRTBGP3xcdURCNDBcdURDNjdcdURCNDBcdURDNjJcdURCNDAoPzpcdURDNjVcdURCNDBcdURDNkVcdURCNDBcdURDNjd8XHVEQzczXHVEQjQwXHVEQzYzXHVEQjQwXHVEQzc0fFx1REM3N1x1REI0MFx1REM2Q1x1REI0MFx1REM3MylcdURCNDBcdURDN0YpPyl8XHVEODNEKD86W1x1REMwOFx1REMyNl0oPzpcdTIwMERcdTJCMUIpP3xbXHVEQzNGXHVEQ0ZEXHVERDQ5XHVERDRBXHVERDZGXHVERDcwXHVERDczXHVERDc2LVx1REQ3OVx1REQ4N1x1REQ4QS1cdUREOERcdUREQTVcdUREQThcdUREQjFcdUREQjJcdUREQkNcdUREQzItXHVEREM0XHVEREQxLVx1REREM1x1REREQy1cdUREREVcdURERTFcdURERTNcdURERThcdURERUZcdURERjNcdURERkFcdURFQ0JcdURFQ0QtXHVERUNGXHVERUUwLVx1REVFNVx1REVFOVx1REVGMFx1REVGM11cdUZFMEY/fFtcdURDNDJcdURDNDNcdURDNDYtXHVEQzUwXHVEQzY2XHVEQzY3XHVEQzZCLVx1REM2RFx1REM3Mlx1REM3NC1cdURDNzZcdURDNzhcdURDN0NcdURDODNcdURDODVcdURDOEZcdURDOTFcdURDQUFcdUREN0FcdUREOTVcdUREOTZcdURFNENcdURFNEZcdURFQzBcdURFQ0NdKD86XHVEODNDW1x1REZGQi1cdURGRkZdKT98W1x1REM2RVx1REM3MFx1REM3MVx1REM3M1x1REM3N1x1REM4MVx1REM4Mlx1REM4Nlx1REM4N1x1REU0NS1cdURFNDdcdURFNEJcdURFNERcdURFNEVcdURFQTNcdURFQjQtXHVERUI2XSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/KD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98W1x1REQ3NFx1REQ5MF0oPzpcdUZFMEZ8XHVEODNDW1x1REZGQi1cdURGRkZdKT98W1x1REMwMC1cdURDMDdcdURDMDktXHVEQzE0XHVEQzE2LVx1REMyNVx1REMyNy1cdURDM0FcdURDM0MtXHVEQzNFXHVEQzQwXHVEQzQ0XHVEQzQ1XHVEQzUxLVx1REM2NVx1REM2QVx1REM3OS1cdURDN0JcdURDN0QtXHVEQzgwXHVEQzg0XHVEQzg4LVx1REM4RVx1REM5MFx1REM5Mi1cdURDQTlcdURDQUItXHVEQ0ZDXHVEQ0ZGLVx1REQzRFx1REQ0Qi1cdURENEVcdURENTAtXHVERDY3XHVEREE0XHVEREZCLVx1REUyRFx1REUyRi1cdURFMzRcdURFMzctXHVERTQ0XHVERTQ4LVx1REU0QVx1REU4MC1cdURFQTJcdURFQTQtXHVERUIzXHVERUI3LVx1REVCRlx1REVDMS1cdURFQzVcdURFRDAtXHVERUQyXHVERUQ1LVx1REVEN1x1REVEQy1cdURFREZcdURFRUJcdURFRUNcdURFRjQtXHVERUZDXHVERkUwLVx1REZFQlx1REZGMF18XHVEQzE1KD86XHUyMDBEXHVEODNFXHVEREJBKT98XHVEQzNCKD86XHUyMDBEXHUyNzQ0XHVGRTBGPyk/fFx1REM0MVx1RkUwRj8oPzpcdTIwMERcdUQ4M0RcdURERThcdUZFMEY/KT98XHVEQzY4KD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpcdURDOEJcdTIwMERcdUQ4M0QpP1x1REM2OHxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0QoPzpbXHVEQzY4XHVEQzY5XVx1MjAwRFx1RDgzRCg/Olx1REM2Nig/Olx1MjAwRFx1RDgzRFx1REM2Nik/fFx1REM2Nyg/Olx1MjAwRFx1RDgzRFtcdURDNjZcdURDNjddKT8pfFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1REM2Nig/Olx1MjAwRFx1RDgzRFx1REM2Nik/fFx1REM2Nyg/Olx1MjAwRFx1RDgzRFtcdURDNjZcdURDNjddKT8pfFx1RDgzRVtcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXSl8XHVEODNDKD86XHVERkZCKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpcdURDOEJcdTIwMERcdUQ4M0QpP1x1REM2OFx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEXHVEQzY4XHVEODNDW1x1REZGQy1cdURGRkZdKSkpP3xcdURGRkMoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/Olx1REM4Qlx1MjAwRFx1RDgzRCk/XHVEQzY4XHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RcdURDNjhcdUQ4M0NbXHVERkZCXHVERkZELVx1REZGRl0pKSk/fFx1REZGRCg/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86XHVEQzhCXHUyMDBEXHVEODNEKT9cdURDNjhcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFx1REM2OFx1RDgzQ1tcdURGRkJcdURGRkNcdURGRkVcdURGRkZdKSkpP3xcdURGRkUoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/Olx1REM4Qlx1MjAwRFx1RDgzRCk/XHVEQzY4XHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RcdURDNjhcdUQ4M0NbXHVERkZCLVx1REZGRFx1REZGRl0pKSk/fFx1REZGRig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86XHVEQzhCXHUyMDBEXHVEODNEKT9cdURDNjhcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFx1REM2OFx1RDgzQ1tcdURGRkItXHVERkZFXSkpKT8pKT98XHVEQzY5KD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpcdURDOEJcdTIwMERcdUQ4M0QpP1tcdURDNjhcdURDNjldfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRCg/OltcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1REM2Nig/Olx1MjAwRFx1RDgzRFx1REM2Nik/fFx1REM2Nyg/Olx1MjAwRFx1RDgzRFtcdURDNjZcdURDNjddKT98XHVEQzY5XHUyMDBEXHVEODNEKD86XHVEQzY2KD86XHUyMDBEXHVEODNEXHVEQzY2KT98XHVEQzY3KD86XHUyMDBEXHVEODNEW1x1REM2Nlx1REM2N10pPykpfFx1RDgzRVtcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXSl8XHVEODNDKD86XHVERkZCKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpbXHVEQzY4XHVEQzY5XXxcdURDOEJcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XSlcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldXHVEODNDW1x1REZGQy1cdURGRkZdKSkpP3xcdURGRkMoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/OltcdURDNjhcdURDNjldfFx1REM4Qlx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldKVx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV1cdUQ4M0NbXHVERkZCXHVERkZELVx1REZGRl0pKSk/fFx1REZGRCg/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86W1x1REM2OFx1REM2OV18XHVEQzhCXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV0pXHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XVx1RDgzQ1tcdURGRkJcdURGRkNcdURGRkVcdURGRkZdKSkpP3xcdURGRkUoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/OltcdURDNjhcdURDNjldfFx1REM4Qlx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldKVx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV1cdUQ4M0NbXHVERkZCLVx1REZGRFx1REZGRl0pKSk/fFx1REZGRig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86W1x1REM2OFx1REM2OV18XHVEQzhCXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV0pXHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XVx1RDgzQ1tcdURGRkItXHVERkZFXSkpKT8pKT98XHVEQzZGKD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98XHVERDc1KD86XHVGRTBGfFx1RDgzQ1tcdURGRkItXHVERkZGXSk/KD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98XHVERTJFKD86XHUyMDBEXHVEODNEXHVEQ0E4KT98XHVERTM1KD86XHUyMDBEXHVEODNEXHVEQ0FCKT98XHVERTM2KD86XHUyMDBEXHVEODNDXHVERjJCXHVGRTBGPyk/KXxcdUQ4M0UoPzpbXHVERDBDXHVERDBGXHVERDE4LVx1REQxRlx1REQzMC1cdUREMzRcdUREMzZcdURENzdcdUREQjVcdUREQjZcdUREQkJcdURERDJcdURERDNcdURERDVcdURFQzMtXHVERUM1XHVERUYwXHVERUYyLVx1REVGOF0oPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xbXHVERDI2XHVERDM1XHVERDM3LVx1REQzOVx1REQzRFx1REQzRVx1RERCOFx1RERCOVx1RERDRC1cdUREQ0ZcdURERDRcdURERDYtXHVEREREXSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/KD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98W1x1RERERVx1RERERl0oPzpcdTIwMERbXHUyNjQwXHUyNjQyXVx1RkUwRj8pP3xbXHVERDBEXHVERDBFXHVERDEwLVx1REQxN1x1REQyMC1cdUREMjVcdUREMjctXHVERDJGXHVERDNBXHVERDNGLVx1REQ0NVx1REQ0Ny1cdURENzZcdURENzgtXHVEREI0XHVEREI3XHVEREJBXHVEREJDLVx1RERDQ1x1REREMFx1RERFMC1cdURERkZcdURFNzAtXHVERTdDXHVERTgwLVx1REU4OFx1REU5MC1cdURFQkRcdURFQkYtXHVERUMyXHVERUNFLVx1REVEQlx1REVFMC1cdURFRThdfFx1REQzQyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGP3xcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xcdURERDEoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMSkpfFx1RDgzQyg/Olx1REZGQig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEKT9cdUQ4M0VcdURERDFcdUQ4M0NbXHVERkZDLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZGXSkpKT98XHVERkZDKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpP1x1RDgzRVx1REREMVx1RDgzQ1tcdURGRkJcdURGRkQtXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjg0XHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkZdKSkpP3xcdURGRkQoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/XHVEODNFXHVEREQxXHVEODNDW1x1REZGQlx1REZGQ1x1REZGRVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZGXSkpKT98XHVERkZFKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpP1x1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZEXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjg0XHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkZdKSkpP3xcdURGRkYoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/XHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkVdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGODRcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0VcdURERDFcdUQ4M0NbXHVERkZCLVx1REZGRl0pKSk/KSk/fFx1REVGMSg/Olx1RDgzQyg/Olx1REZGQig/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkMtXHVERkZGXSk/fFx1REZGQyg/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkJcdURGRkQtXHVERkZGXSk/fFx1REZGRCg/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkJcdURGRkNcdURGRkVcdURGRkZdKT98XHVERkZFKD86XHUyMDBEXHVEODNFXHVERUYyXHVEODNDW1x1REZGQi1cdURGRkRcdURGRkZdKT98XHVERkZGKD86XHUyMDBEXHVEODNFXHVERUYyXHVEODNDW1x1REZGQi1cdURGRkVdKT8pKT8pL2c7CiAgfTsKCiAgLyoqIE5vcm1hbGl6ZSBhIGR1cmF0aW9uIHRvIGFsbCBvZiB0aGUgcHJvcGVyIHVuaXRzLiAqLwogIGZ1bmN0aW9uIG5vcm1hbGl6ZUR1cmF0aW9uKGR1cikgewogICAgICBpZiAoZHVyID09PSB1bmRlZmluZWQgfHwgZHVyID09PSBudWxsKQogICAgICAgICAgcmV0dXJuIGR1cjsKICAgICAgcmV0dXJuIGR1ci5zaGlmdFRvQWxsKCkubm9ybWFsaXplKCk7CiAgfQogIC8qKiBTdHJpcCB0aGUgdGltZSBjb21wb25lbnRzIG9mIGEgZGF0ZSB0aW1lIG9iamVjdC4gKi8KICBmdW5jdGlvbiBzdHJpcFRpbWUoZHQpIHsKICAgICAgaWYgKGR0ID09PSBudWxsIHx8IGR0ID09PSB1bmRlZmluZWQpCiAgICAgICAgICByZXR1cm4gZHQ7CiAgICAgIHJldHVybiBEYXRlVGltZS5mcm9tT2JqZWN0KHsKICAgICAgICAgIHllYXI6IGR0LnllYXIsCiAgICAgICAgICBtb250aDogZHQubW9udGgsCiAgICAgICAgICBkYXk6IGR0LmRheSwKICAgICAgfSk7CiAgfQogIC8qKiBUcnkgdG8gZXh0cmFjdCBhIFlZWVlNTUREIGRhdGUgZnJvbSBhIHN0cmluZy4gKi8KICBmdW5jdGlvbiBleHRyYWN0RGF0ZShzdHIpIHsKICAgICAgbGV0IGRhdGVNYXRjaCA9IC8oXGR7NH0pLShcZHsyfSktKFxkezJ9KS8uZXhlYyhzdHIpOwogICAgICBpZiAoIWRhdGVNYXRjaCkKICAgICAgICAgIGRhdGVNYXRjaCA9IC8oXGR7NH0pKFxkezJ9KShcZHsyfSkvLmV4ZWMoc3RyKTsKICAgICAgaWYgKGRhdGVNYXRjaCkgewogICAgICAgICAgbGV0IHllYXIgPSBOdW1iZXIucGFyc2VJbnQoZGF0ZU1hdGNoWzFdKTsKICAgICAgICAgIGxldCBtb250aCA9IE51bWJlci5wYXJzZUludChkYXRlTWF0Y2hbMl0pOwogICAgICAgICAgbGV0IGRheSA9IE51bWJlci5wYXJzZUludChkYXRlTWF0Y2hbM10pOwogICAgICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21PYmplY3QoeyB5ZWFyLCBtb250aCwgZGF5IH0pOwogICAgICB9CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgfQogIC8qKiBHZXQgdGhlIGZvbGRlciBjb250YWluaW5nIHRoZSBnaXZlbiBwYXRoIChpLmUuLCBsaWtlIGNvbXB1dGluZyAncGF0aC8uLicpLiAqLwogIGZ1bmN0aW9uIGdldFBhcmVudEZvbGRlcihwYXRoKSB7CiAgICAgIHJldHVybiBwYXRoLnNwbGl0KCIvIikuc2xpY2UoMCwgLTEpLmpvaW4oIi8iKTsKICB9CiAgLyoqIEdldCB0aGUgInRpdGxlIiBmb3IgYSBmaWxlLCBieSBzdHJpcHBpbmcgb3RoZXIgcGFydHMgb2YgdGhlIHBhdGggYXMgd2VsbCBhcyB0aGUgZXh0ZW5zaW9uLiAqLwogIGZ1bmN0aW9uIGdldEZpbGVUaXRsZShwYXRoKSB7CiAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCIvIikpCiAgICAgICAgICBwYXRoID0gcGF0aC5zdWJzdHJpbmcocGF0aC5sYXN0SW5kZXhPZigiLyIpICsgMSk7CiAgICAgIGlmIChwYXRoLmVuZHNXaXRoKCIubWQiKSkKICAgICAgICAgIHBhdGggPSBwYXRoLnN1YnN0cmluZygwLCBwYXRoLmxlbmd0aCAtIDMpOwogICAgICByZXR1cm4gcGF0aDsKICB9CiAgLyoqIEdldCB0aGUgZXh0ZW5zaW9uIG9mIGEgZmlsZSBmcm9tIHRoZSBmaWxlIHBhdGguICovCiAgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uKHBhdGgpIHsKICAgICAgaWYgKCFwYXRoLmluY2x1ZGVzKCIuIikpCiAgICAgICAgICByZXR1cm4gIiI7CiAgICAgIHJldHVybiBwYXRoLnN1YnN0cmluZyhwYXRoLmxhc3RJbmRleE9mKCIuIikgKyAxKTsKICB9CiAgLyoqIFBhcnNlIGFsbCBzdWJ0YWdzIG91dCBvZiB0aGUgZ2l2ZW4gdGFnLiBJLmUuLCAjaGVsbG8vaS9hbSB3b3VsZCB5aWVsZCBbI2hlbGxvL2kvYW0sICNoZWxsby9pLCAjaGVsbG9dLiAqLwogIGZ1bmN0aW9uIGV4dHJhY3RTdWJ0YWdzKHRhZykgewogICAgICBsZXQgcmVzdWx0ID0gW3RhZ107CiAgICAgIHdoaWxlICh0YWcuaW5jbHVkZXMoIi8iKSkgewogICAgICAgICAgdGFnID0gdGFnLnN1YnN0cmluZygwLCB0YWcubGFzdEluZGV4T2YoIi8iKSk7CiAgICAgICAgICByZXN1bHQucHVzaCh0YWcpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHQ7CiAgfQogIC8qKiBBIHBhcnNpbW1vbiBwYXJzZXIgd2hpY2ggY2Fub25pY2FsaXplcyB2YXJpYWJsZSBuYW1lcyB3aGlsZSBwcm9wZXJseSByZXNwZWN0aW5nIGVtb2ppLiAqLwogIGNvbnN0IFZBUl9OQU1FX0NBTk9OSUNBTElaRVIgPSBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleChuZXcgUmVnRXhwKGVtb2ppUmVnZXgoKSwgIiIpKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4KC9bMC05XHB7TGV0dGVyfV8tXSsvdSkubWFwKHN0ciA9PiBzdHIudG9Mb2NhbGVMb3dlckNhc2UoKSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy53aGl0ZXNwYWNlLm1hcChfID0+ICItIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbnkubWFwKF8gPT4gIiIpKQogICAgICAubWFueSgpCiAgICAgIC5tYXAocmVzdWx0ID0+IHJlc3VsdC5qb2luKCIiKSk7CiAgLyoqIENvbnZlcnQgYW4gYXJiaXRyYXJ5IHZhcmlhYmxlIG5hbWUgaW50byBzb21ldGhpbmcgSlMvcXVlcnkgZnJpZW5kbHkuICovCiAgZnVuY3Rpb24gY2Fub25pY2FsaXplVmFyTmFtZShuYW1lKSB7CiAgICAgIHJldHVybiBWQVJfTkFNRV9DQU5PTklDQUxJWkVSLnRyeVBhcnNlKG5hbWUpOwogIH0KICBjb25zdCBIRUFERVJfQ0FOT05JQ0FMSVpFUiA9IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4KG5ldyBSZWdFeHAoZW1vamlSZWdleCgpLCAiIikpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXgoL1swLTlccHtMZXR0ZXJ9Xy1dKy91KSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLndoaXRlc3BhY2UubWFwKF8gPT4gIiAiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFueS5tYXAoXyA9PiAiICIpKQogICAgICAubWFueSgpCiAgICAgIC5tYXAocmVzdWx0ID0+IHsKICAgICAgcmV0dXJuIHJlc3VsdC5qb2luKCIiKS5zcGxpdCgvXHMrLykuam9pbigiICIpLnRyaW0oKTsKICB9KTsKICAvKioKICAgKiBOb3JtYWxpemVzIHRoZSB0ZXh0IGluIGEgaGVhZGVyIHRvIGJlIHNvbWV0aGluZyB0aGF0IGlzIGFjdHVhbGx5IGxpbmthYmxlIHRvLiBUaGlzIG1pbWljcwogICAqIGhvdyBPYnNpZGlhbiBkb2VzIGl0J3Mgbm9ybWFsaXphdGlvbiwgY29sbGFwc2luZyByZXBlYXRlZCBzcGFjZXMgYW5kIHN0cmlwcGluZyBvdXQgY29udHJvbCBjaGFyYWN0ZXJzLgogICAqLwogIGZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlckZvckxpbmsoaGVhZGVyKSB7CiAgICAgIHJldHVybiBIRUFERVJfQ0FOT05JQ0FMSVpFUi50cnlQYXJzZShoZWFkZXIpOwogIH0KICAvKiogUmVuZGVyIGEgZHVyYXRpb24gaW4gYSBtaW5pbWFsIGZvcm1hdCB0byBzYXZlIHNwYWNlLiAqLwogIGZ1bmN0aW9uIHJlbmRlck1pbmltYWxEdXJhdGlvbihkdXIpIHsKICAgICAgZHVyID0gbm9ybWFsaXplRHVyYXRpb24oZHVyKTsKICAgICAgLy8gdG9IdW1hbiBvdXRwdXRzIHplcm8gcXVhbnRpdGllcyBlLmcuICIwIHNlY29uZHMiCiAgICAgIGR1ciA9IER1cmF0aW9uLmZyb21PYmplY3QoT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGR1ci50b09iamVjdCgpKS5maWx0ZXIoKFssIHF1YW50aXR5XSkgPT4gcXVhbnRpdHkgIT0gMCkpKTsKICAgICAgcmV0dXJuIGR1ci50b0h1bWFuKCk7CiAgfQoKICB2YXIgVmFsdWVzOwogIChmdW5jdGlvbiAoVmFsdWVzKSB7CiAgICAgIC8qKiBDb252ZXJ0IGFuIGFyYml0cmFyeSB2YWx1ZSBpbnRvIGEgcmVhc29uYWJsZSwgTWFya2Rvd24tZnJpZW5kbHkgc3RyaW5nIGlmIHBvc3NpYmxlLiAqLwogICAgICBmdW5jdGlvbiB0b1N0cmluZyhmaWVsZCwgc2V0dGluZyA9IERFRkFVTFRfUVVFUllfU0VUVElOR1MsIHJlY3Vyc2l2ZSA9IGZhbHNlKSB7CiAgICAgICAgICBsZXQgd3JhcHBlZCA9IHdyYXBWYWx1ZShmaWVsZCk7CiAgICAgICAgICBpZiAoIXdyYXBwZWQpCiAgICAgICAgICAgICAgcmV0dXJuIHNldHRpbmcucmVuZGVyTnVsbEFzOwogICAgICAgICAgc3dpdGNoICh3cmFwcGVkLnR5cGUpIHsKICAgICAgICAgICAgICBjYXNlICJudWxsIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldHRpbmcucmVuZGVyTnVsbEFzOwogICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlOwogICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6CiAgICAgICAgICAgICAgY2FzZSAiYm9vbGVhbiI6CiAgICAgICAgICAgICAgICAgIHJldHVybiAiIiArIHdyYXBwZWQudmFsdWU7CiAgICAgICAgICAgICAgY2FzZSAiaHRtbCI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLm91dGVySFRNTDsKICAgICAgICAgICAgICBjYXNlICJ3aWRnZXQiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5tYXJrZG93bigpOwogICAgICAgICAgICAgIGNhc2UgImxpbmsiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5tYXJrZG93bigpOwogICAgICAgICAgICAgIGNhc2UgImZ1bmN0aW9uIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuICI8ZnVuY3Rpb24+IjsKICAgICAgICAgICAgICBjYXNlICJhcnJheSI6CiAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSAiIjsKICAgICAgICAgICAgICAgICAgaWYgKHJlY3Vyc2l2ZSkKICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiWyI7CiAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3cmFwcGVkLnZhbHVlLm1hcChmID0+IHRvU3RyaW5nKGYsIHNldHRpbmcsIHRydWUpKS5qb2luKCIsICIpOwogICAgICAgICAgICAgICAgICBpZiAocmVjdXJzaXZlKQogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJdIjsKICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICBjYXNlICJvYmplY3QiOgogICAgICAgICAgICAgICAgICByZXR1cm4gKCJ7ICIgKwogICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMod3JhcHBlZC52YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKGUgPT4gZVswXSArICI6ICIgKyB0b1N0cmluZyhlWzFdLCBzZXR0aW5nLCB0cnVlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAuam9pbigiLCAiKSArCiAgICAgICAgICAgICAgICAgICAgICAiIH0iKTsKICAgICAgICAgICAgICBjYXNlICJkYXRlIjoKICAgICAgICAgICAgICAgICAgaWYgKHdyYXBwZWQudmFsdWUuc2Vjb25kID09IDAgJiYgd3JhcHBlZC52YWx1ZS5ob3VyID09IDAgJiYgd3JhcHBlZC52YWx1ZS5taW51dGUgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUudG9Gb3JtYXQoc2V0dGluZy5kZWZhdWx0RGF0ZUZvcm1hdCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUudG9Gb3JtYXQoc2V0dGluZy5kZWZhdWx0RGF0ZVRpbWVGb3JtYXQpOwogICAgICAgICAgICAgIGNhc2UgImR1cmF0aW9uIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlck1pbmltYWxEdXJhdGlvbih3cmFwcGVkLnZhbHVlKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBWYWx1ZXMudG9TdHJpbmcgPSB0b1N0cmluZzsKICAgICAgLyoqIFdyYXAgYSBsaXRlcmFsIHZhbHVlIHNvIHlvdSBjYW4gc3dpdGNoIG9uIGl0IGVhc2lseS4gKi8KICAgICAgZnVuY3Rpb24gd3JhcFZhbHVlKHZhbCkgewogICAgICAgICAgaWYgKGlzTnVsbCh2YWwpKQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJudWxsIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNOdW1iZXIodmFsKSkKICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAibnVtYmVyIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNTdHJpbmcodmFsKSkKICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAic3RyaW5nIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNCb29sZWFuKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJvb2xlYW4iLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc0R1cmF0aW9uKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImR1cmF0aW9uIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNEYXRlKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImRhdGUiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc1dpZGdldCh2YWwpKQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJ3aWRnZXQiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc0FycmF5KHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImFycmF5IiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNMaW5rKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImxpbmsiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImZ1bmN0aW9uIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNIdG1sKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImh0bWwiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc09iamVjdCh2YWwpKQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJvYmplY3QiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgfQogICAgICBWYWx1ZXMud3JhcFZhbHVlID0gd3JhcFZhbHVlOwogICAgICAvKiogUmVjdXJzaXZlbHkgbWFwIGNvbXBsZXggb2JqZWN0cyBhdCB0aGUgbGVhdmVzLiAqLwogICAgICBmdW5jdGlvbiBtYXBMZWF2ZXModmFsLCBmdW5jKSB7CiAgICAgICAgICBpZiAoaXNPYmplY3QodmFsKSkgewogICAgICAgICAgICAgIGxldCByZXN1bHQgPSB7fTsKICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFsKSkKICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBtYXBMZWF2ZXModmFsdWUsIGZ1bmMpOwogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChpc0FycmF5KHZhbCkpIHsKICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gW107CiAgICAgICAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsKQogICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChtYXBMZWF2ZXModmFsdWUsIGZ1bmMpKTsKICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIGZ1bmModmFsKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBWYWx1ZXMubWFwTGVhdmVzID0gbWFwTGVhdmVzOwogICAgICAvKiogQ29tcGFyZSB0d28gYXJiaXRyYXJ5IEphdmFTY3JpcHQgdmFsdWVzLiBQcm9kdWNlcyBhIHRvdGFsIG9yZGVyaW5nIG92ZXIgQU5ZIHBvc3NpYmxlIGRhdGF2aWV3IHZhbHVlLiAqLwogICAgICBmdW5jdGlvbiBjb21wYXJlVmFsdWUodmFsMSwgdmFsMiwgbGlua05vcm1hbGl6ZXIpIHsKICAgICAgICAgIC8vIEhhbmRsZSB1bmRlZmluZWQvbnVsbHMgZmlyc3QuCiAgICAgICAgICBpZiAodmFsMSA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgICAgIHZhbDEgPSBudWxsOwogICAgICAgICAgaWYgKHZhbDIgPT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICB2YWwyID0gbnVsbDsKICAgICAgICAgIGlmICh2YWwxID09PSBudWxsICYmIHZhbDIgPT09IG51bGwpCiAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICBlbHNlIGlmICh2YWwxID09PSBudWxsKQogICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgIGVsc2UgaWYgKHZhbDIgPT09IG51bGwpCiAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAvLyBBIG5vbi1udWxsIHZhbHVlIG5vdyB3aGljaCB3ZSBjYW4gd3JhcCAmIGNvbXBhcmUgb24uCiAgICAgICAgICBsZXQgd3JhcDEgPSB3cmFwVmFsdWUodmFsMSk7CiAgICAgICAgICBsZXQgd3JhcDIgPSB3cmFwVmFsdWUodmFsMik7CiAgICAgICAgICBpZiAod3JhcDEgPT09IHVuZGVmaW5lZCAmJiB3cmFwMiA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgZWxzZSBpZiAod3JhcDEgPT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICBlbHNlIGlmICh3cmFwMiA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgLy8gU2hvcnQtY2lyY3VpdCBvbiBkaWZmZXJlbnQgdHlwZXMgb3Igb24gcmVmZXJlbmNlIGVxdWFsaXR5LgogICAgICAgICAgaWYgKHdyYXAxLnR5cGUgIT0gd3JhcDIudHlwZSkKICAgICAgICAgICAgICByZXR1cm4gd3JhcDEudHlwZS5sb2NhbGVDb21wYXJlKHdyYXAyLnR5cGUpOwogICAgICAgICAgaWYgKHdyYXAxLnZhbHVlID09PSB3cmFwMi52YWx1ZSkKICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgIHN3aXRjaCAod3JhcDEudHlwZSkgewogICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwMS52YWx1ZS5sb2NhbGVDb21wYXJlKHdyYXAyLnZhbHVlKTsKICAgICAgICAgICAgICBjYXNlICJudW1iZXIiOgogICAgICAgICAgICAgICAgICBpZiAod3JhcDEudmFsdWUgPCB3cmFwMi52YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICAgZWxzZSBpZiAod3JhcDEudmFsdWUgPT0gd3JhcDIudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgY2FzZSAibnVsbCI6CiAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOgogICAgICAgICAgICAgICAgICBpZiAod3JhcDEudmFsdWUgPT0gd3JhcDIudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXAxLnZhbHVlID8gMSA6IC0xOwogICAgICAgICAgICAgIGNhc2UgImxpbmsiOgogICAgICAgICAgICAgICAgICBsZXQgbGluazEgPSB3cmFwMS52YWx1ZTsKICAgICAgICAgICAgICAgICAgbGV0IGxpbmsyID0gd3JhcDIudmFsdWU7CiAgICAgICAgICAgICAgICAgIGxldCBub3JtYWxpemUgPSBsaW5rTm9ybWFsaXplciA/PyAoKHgpID0+IHgpOwogICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBjb21wYXJlIGJ5IGZpbGUgbmFtZSBvciBkaXNwbGF5LCBzaW5jZSB0aGF0IHdvdWxkIGJyZWFrIGxpbmsgZXF1YWxpdHkuIENvbXBhcmUgYnkgcGF0aC4KICAgICAgICAgICAgICAgICAgbGV0IHBhdGhDb21wYXJlID0gbm9ybWFsaXplKGxpbmsxLnBhdGgpLmxvY2FsZUNvbXBhcmUobm9ybWFsaXplKGxpbmsyLnBhdGgpKTsKICAgICAgICAgICAgICAgICAgaWYgKHBhdGhDb21wYXJlICE9IDApCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF0aENvbXBhcmU7CiAgICAgICAgICAgICAgICAgIC8vIFRoZW4gY29tcGFyZSBieSB0eXBlLgogICAgICAgICAgICAgICAgICBsZXQgdHlwZUNvbXBhcmUgPSBsaW5rMS50eXBlLmxvY2FsZUNvbXBhcmUobGluazIudHlwZSk7CiAgICAgICAgICAgICAgICAgIGlmICh0eXBlQ29tcGFyZSAhPSAwKQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVDb21wYXJlOwogICAgICAgICAgICAgICAgICAvLyBUaGVuIGNvbXBhcmUgYnkgc3VicGF0aCBleGlzdGVuY2UuCiAgICAgICAgICAgICAgICAgIGlmIChsaW5rMS5zdWJwYXRoICYmICFsaW5rMi5zdWJwYXRoKQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgIGlmICghbGluazEuc3VicGF0aCAmJiBsaW5rMi5zdWJwYXRoKQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgICBpZiAoIWxpbmsxLnN1YnBhdGggJiYgIWxpbmsyLnN1YnBhdGgpCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICAgLy8gU2luY2UgYm90aCBoYXZlIGEgc3VicGF0aCwgY29tcGFyZSBieSBzdWJwYXRoLgogICAgICAgICAgICAgICAgICByZXR1cm4gKGxpbmsxLnN1YnBhdGggPz8gIiIpLmxvY2FsZUNvbXBhcmUobGluazIuc3VicGF0aCA/PyAiIik7CiAgICAgICAgICAgICAgY2FzZSAiZGF0ZSI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwMS52YWx1ZSA8IHdyYXAyLnZhbHVlCiAgICAgICAgICAgICAgICAgICAgICA/IC0xCiAgICAgICAgICAgICAgICAgICAgICA6IHdyYXAxLnZhbHVlLmVxdWFscyh3cmFwMi52YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICA/IDAKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDE7CiAgICAgICAgICAgICAgY2FzZSAiZHVyYXRpb24iOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcDEudmFsdWUgPCB3cmFwMi52YWx1ZQogICAgICAgICAgICAgICAgICAgICAgPyAtMQogICAgICAgICAgICAgICAgICAgICAgOiB3cmFwMS52YWx1ZS5lcXVhbHMod3JhcDIudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAxOwogICAgICAgICAgICAgIGNhc2UgImFycmF5IjoKICAgICAgICAgICAgICAgICAgbGV0IGYxID0gd3JhcDEudmFsdWU7CiAgICAgICAgICAgICAgICAgIGxldCBmMiA9IHdyYXAyLnZhbHVlOwogICAgICAgICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgTWF0aC5taW4oZjEubGVuZ3RoLCBmMi5sZW5ndGgpOyBpbmRleCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICBsZXQgY29tcCA9IGNvbXBhcmVWYWx1ZShmMVtpbmRleF0sIGYyW2luZGV4XSk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcCAhPSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHJldHVybiBmMS5sZW5ndGggLSBmMi5sZW5ndGg7CiAgICAgICAgICAgICAgY2FzZSAib2JqZWN0IjoKICAgICAgICAgICAgICAgICAgbGV0IG8xID0gd3JhcDEudmFsdWU7CiAgICAgICAgICAgICAgICAgIGxldCBvMiA9IHdyYXAyLnZhbHVlOwogICAgICAgICAgICAgICAgICBsZXQgazEgPSBBcnJheS5mcm9tKE9iamVjdC5rZXlzKG8xKSk7CiAgICAgICAgICAgICAgICAgIGxldCBrMiA9IEFycmF5LmZyb20oT2JqZWN0LmtleXMobzIpKTsKICAgICAgICAgICAgICAgICAgazEuc29ydCgpOwogICAgICAgICAgICAgICAgICBrMi5zb3J0KCk7CiAgICAgICAgICAgICAgICAgIGxldCBrZXlDb21wYXJlID0gY29tcGFyZVZhbHVlKGsxLCBrMik7CiAgICAgICAgICAgICAgICAgIGlmIChrZXlDb21wYXJlICE9IDApCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5Q29tcGFyZTsKICAgICAgICAgICAgICAgICAgZm9yIChsZXQga2V5IG9mIGsxKSB7CiAgICAgICAgICAgICAgICAgICAgICBsZXQgY29tcCA9IGNvbXBhcmVWYWx1ZShvMVtrZXldLCBvMltrZXldKTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChjb21wICE9IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXA7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgY2FzZSAid2lkZ2V0IjoKICAgICAgICAgICAgICBjYXNlICJodG1sIjoKICAgICAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6CiAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgfQogICAgICB9CiAgICAgIFZhbHVlcy5jb21wYXJlVmFsdWUgPSBjb21wYXJlVmFsdWU7CiAgICAgIC8qKiBGaW5kIHRoZSBjb3JyZXNwb25kaW5nIERhdGF2ZWl3IHR5cGUgZm9yIGFuIGFyYml0cmFyeSB2YWx1ZS4gKi8KICAgICAgZnVuY3Rpb24gdHlwZU9mKHZhbCkgewogICAgICAgICAgcmV0dXJuIHdyYXBWYWx1ZSh2YWwpPy50eXBlOwogICAgICB9CiAgICAgIFZhbHVlcy50eXBlT2YgPSB0eXBlT2Y7CiAgICAgIC8qKiBEZXRlcm1pbmUgaWYgdGhlIGdpdmVuIHZhbHVlIGlzICJ0cnV0aHkiIChpLmUuLCBpcyBub24tbnVsbCBhbmQgaGFzIGRhdGEgaW4gaXQpLiAqLwogICAgICBmdW5jdGlvbiBpc1RydXRoeShmaWVsZCkgewogICAgICAgICAgbGV0IHdyYXBwZWQgPSB3cmFwVmFsdWUoZmllbGQpOwogICAgICAgICAgaWYgKCF3cmFwcGVkKQogICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgIHN3aXRjaCAod3JhcHBlZC50eXBlKSB7CiAgICAgICAgICAgICAgY2FzZSAibnVtYmVyIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUgIT0gMDsKICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5sZW5ndGggPiAwOwogICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZTsKICAgICAgICAgICAgICBjYXNlICJsaW5rIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuICEhd3JhcHBlZC52YWx1ZS5wYXRoOwogICAgICAgICAgICAgIGNhc2UgImRhdGUiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS50b01pbGxpcygpICE9IDA7CiAgICAgICAgICAgICAgY2FzZSAiZHVyYXRpb24iOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5hcygic2Vjb25kcyIpICE9IDA7CiAgICAgICAgICAgICAgY2FzZSAib2JqZWN0IjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHdyYXBwZWQudmFsdWUpLmxlbmd0aCA+IDA7CiAgICAgICAgICAgICAgY2FzZSAiYXJyYXkiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5sZW5ndGggPiAwOwogICAgICAgICAgICAgIGNhc2UgIm51bGwiOgogICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgY2FzZSAiaHRtbCI6CiAgICAgICAgICAgICAgY2FzZSAid2lkZ2V0IjoKICAgICAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgfQogICAgICB9CiAgICAgIFZhbHVlcy5pc1RydXRoeSA9IGlzVHJ1dGh5OwogICAgICAvKiogRGVlcCBjb3B5IGEgZmllbGQuICovCiAgICAgIGZ1bmN0aW9uIGRlZXBDb3B5KGZpZWxkKSB7CiAgICAgICAgICBpZiAoZmllbGQgPT09IG51bGwgfHwgZmllbGQgPT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICByZXR1cm4gZmllbGQ7CiAgICAgICAgICBpZiAoVmFsdWVzLmlzQXJyYXkoZmllbGQpKSB7CiAgICAgICAgICAgICAgcmV0dXJuIFtdLmNvbmNhdChmaWVsZC5tYXAodiA9PiBkZWVwQ29weSh2KSkpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAoVmFsdWVzLmlzT2JqZWN0KGZpZWxkKSkgewogICAgICAgICAgICAgIGxldCByZXN1bHQgPSB7fTsKICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZmllbGQpKQogICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IGRlZXBDb3B5KHZhbHVlKTsKICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkOwogICAgICAgICAgfQogICAgICB9CiAgICAgIFZhbHVlcy5kZWVwQ29weSA9IGRlZXBDb3B5OwogICAgICBmdW5jdGlvbiBpc1N0cmluZyh2YWwpIHsKICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09ICJzdHJpbmciOwogICAgICB9CiAgICAgIFZhbHVlcy5pc1N0cmluZyA9IGlzU3RyaW5nOwogICAgICBmdW5jdGlvbiBpc051bWJlcih2YWwpIHsKICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09ICJudW1iZXIiOwogICAgICB9CiAgICAgIFZhbHVlcy5pc051bWJlciA9IGlzTnVtYmVyOwogICAgICBmdW5jdGlvbiBpc0RhdGUodmFsKSB7CiAgICAgICAgICByZXR1cm4gdmFsIGluc3RhbmNlb2YgRGF0ZVRpbWU7CiAgICAgIH0KICAgICAgVmFsdWVzLmlzRGF0ZSA9IGlzRGF0ZTsKICAgICAgZnVuY3Rpb24gaXNEdXJhdGlvbih2YWwpIHsKICAgICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBEdXJhdGlvbjsKICAgICAgfQogICAgICBWYWx1ZXMuaXNEdXJhdGlvbiA9IGlzRHVyYXRpb247CiAgICAgIGZ1bmN0aW9uIGlzTnVsbCh2YWwpIHsKICAgICAgICAgIHJldHVybiB2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQ7CiAgICAgIH0KICAgICAgVmFsdWVzLmlzTnVsbCA9IGlzTnVsbDsKICAgICAgZnVuY3Rpb24gaXNBcnJheSh2YWwpIHsKICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbCk7CiAgICAgIH0KICAgICAgVmFsdWVzLmlzQXJyYXkgPSBpc0FycmF5OwogICAgICBmdW5jdGlvbiBpc0Jvb2xlYW4odmFsKSB7CiAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gImJvb2xlYW4iOwogICAgICB9CiAgICAgIFZhbHVlcy5pc0Jvb2xlYW4gPSBpc0Jvb2xlYW47CiAgICAgIGZ1bmN0aW9uIGlzTGluayh2YWwpIHsKICAgICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBMaW5rOwogICAgICB9CiAgICAgIFZhbHVlcy5pc0xpbmsgPSBpc0xpbms7CiAgICAgIGZ1bmN0aW9uIGlzV2lkZ2V0KHZhbCkgewogICAgICAgICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIFdpZGdldDsKICAgICAgfQogICAgICBWYWx1ZXMuaXNXaWRnZXQgPSBpc1dpZGdldDsKICAgICAgZnVuY3Rpb24gaXNIdG1sKHZhbCkgewogICAgICAgICAgaWYgKHR5cGVvZiBIVE1MRWxlbWVudCAhPT0gInVuZGVmaW5lZCIpIHsKICAgICAgICAgICAgICByZXR1cm4gdmFsIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgVmFsdWVzLmlzSHRtbCA9IGlzSHRtbDsKICAgICAgLyoqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYW4gb2JqZWN0IChhbmQgbm90IGFueSBvdGhlciBkYXRhdmlldy1yZWNvZ25pemVkIG9iamVjdC1saWtlIHR5cGUpLiAqLwogICAgICBmdW5jdGlvbiBpc09iamVjdCh2YWwpIHsKICAgICAgICAgIHJldHVybiAodHlwZW9mIHZhbCA9PSAib2JqZWN0IiAmJgogICAgICAgICAgICAgICFpc0h0bWwodmFsKSAmJgogICAgICAgICAgICAgICFpc1dpZGdldCh2YWwpICYmCiAgICAgICAgICAgICAgIWlzQXJyYXkodmFsKSAmJgogICAgICAgICAgICAgICFpc0R1cmF0aW9uKHZhbCkgJiYKICAgICAgICAgICAgICAhaXNEYXRlKHZhbCkgJiYKICAgICAgICAgICAgICAhaXNMaW5rKHZhbCkgJiYKICAgICAgICAgICAgICB2YWwgIT09IHVuZGVmaW5lZCAmJgogICAgICAgICAgICAgICFpc051bGwodmFsKSk7CiAgICAgIH0KICAgICAgVmFsdWVzLmlzT2JqZWN0ID0gaXNPYmplY3Q7CiAgICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsKSB7CiAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PSAiZnVuY3Rpb24iOwogICAgICB9CiAgICAgIFZhbHVlcy5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjsKICB9KShWYWx1ZXMgfHwgKFZhbHVlcyA9IHt9KSk7CiAgLy8vLy8vLy8vLy8vLy8vCiAgLy8gR3JvdXBpbmdzIC8vCiAgLy8vLy8vLy8vLy8vLy8vCiAgdmFyIEdyb3VwaW5nczsKICAoZnVuY3Rpb24gKEdyb3VwaW5ncykgewogICAgICAvKiogRGV0ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4gZ3JvdXAgZW50cnkgaXMgYSBzdGFuZGFsb25lIHZhbHVlLCBvciBhIGdyb3VwaW5nIG9mIHN1Yi1lbnRyaWVzLiAqLwogICAgICBmdW5jdGlvbiBpc0VsZW1lbnRHcm91cChlbnRyeSkgewogICAgICAgICAgcmV0dXJuIFZhbHVlcy5pc09iamVjdChlbnRyeSkgJiYgT2JqZWN0LmtleXMoZW50cnkpLmxlbmd0aCA9PSAyICYmICJrZXkiIGluIGVudHJ5ICYmICJyb3dzIiBpbiBlbnRyeTsKICAgICAgfQogICAgICBHcm91cGluZ3MuaXNFbGVtZW50R3JvdXAgPSBpc0VsZW1lbnRHcm91cDsKICAgICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGFycmF5IGlzIGEgZ3JvdXBpbmcgYXJyYXkuICovCiAgICAgIGZ1bmN0aW9uIGlzR3JvdXBpbmcoZW50cnkpIHsKICAgICAgICAgIGZvciAobGV0IGVsZW1lbnQgb2YgZW50cnkpCiAgICAgICAgICAgICAgaWYgKCFpc0VsZW1lbnRHcm91cChlbGVtZW50KSkKICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0KICAgICAgR3JvdXBpbmdzLmlzR3JvdXBpbmcgPSBpc0dyb3VwaW5nOwogICAgICAvKiogQ291bnQgdGhlIHRvdGFsIG51bWJlciBvZiBlbGVtZW50cyBpbiBhIHJlY3Vyc2l2ZSBncm91cGluZy4gKi8KICAgICAgZnVuY3Rpb24gY291bnQoZWxlbWVudHMpIHsKICAgICAgICAgIGlmIChpc0dyb3VwaW5nKGVsZW1lbnRzKSkgewogICAgICAgICAgICAgIGxldCByZXN1bHQgPSAwOwogICAgICAgICAgICAgIGZvciAobGV0IHN1Ymdyb3VwIG9mIGVsZW1lbnRzKQogICAgICAgICAgICAgICAgICByZXN1bHQgKz0gY291bnQoc3ViZ3JvdXAucm93cyk7CiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHJldHVybiBlbGVtZW50cy5sZW5ndGg7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgR3JvdXBpbmdzLmNvdW50ID0gY291bnQ7CiAgfSkoR3JvdXBpbmdzIHx8IChHcm91cGluZ3MgPSB7fSkpOwogIC8vLy8vLy8vLy8KICAvLyBMSU5LIC8vCiAgLy8vLy8vLy8vLwogIC8qKiBUaGUgT2JzaWRpYW4gJ2xpbmsnLCB1c2VkIGZvciB1bmlxdWVseSBkZXNjcmliaW5nIGEgZmlsZSwgaGVhZGVyLCBvciBibG9jay4gKi8KICBjbGFzcyBMaW5rIHsKICAgICAgLyoqIFRoZSBmaWxlIHBhdGggdGhpcyBsaW5rIHBvaW50cyB0by4gKi8KICAgICAgcGF0aDsKICAgICAgLyoqIFRoZSBkaXNwbGF5IG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBsaW5rLiAqLwogICAgICBkaXNwbGF5OwogICAgICAvKiogVGhlIGJsb2NrIElEIG9yIGhlYWRlciB0aGlzIGxpbmsgcG9pbnRzIHRvIHdpdGhpbiBhIGZpbGUsIGlmIHJlbGV2YW50LiAqLwogICAgICBzdWJwYXRoOwogICAgICAvKiogSXMgdGhpcyBsaW5rIGFuIGVtYmVkZGVkIGxpbmsgKCEpPyAqLwogICAgICBlbWJlZDsKICAgICAgLyoqIFRoZSB0eXBlIG9mIHRoaXMgbGluaywgd2hpY2ggZGV0ZXJtaW5lcyB3aGF0ICdzdWJwYXRoJyByZWZlcnMgdG8sIGlmIGFueXRoaW5nLiAqLwogICAgICB0eXBlOwogICAgICAvKiogQ3JlYXRlIGEgbGluayB0byBhIHNwZWNpZmljIGZpbGUuICovCiAgICAgIHN0YXRpYyBmaWxlKHBhdGgsIGVtYmVkID0gZmFsc2UsIGRpc3BsYXkpIHsKICAgICAgICAgIHJldHVybiBuZXcgTGluayh7CiAgICAgICAgICAgICAgcGF0aCwKICAgICAgICAgICAgICBlbWJlZCwKICAgICAgICAgICAgICBkaXNwbGF5LAogICAgICAgICAgICAgIHN1YnBhdGg6IHVuZGVmaW5lZCwKICAgICAgICAgICAgICB0eXBlOiAiZmlsZSIsCiAgICAgICAgICB9KTsKICAgICAgfQogICAgICBzdGF0aWMgaW5mZXIobGlua3BhdGgsIGVtYmVkID0gZmFsc2UsIGRpc3BsYXkpIHsKICAgICAgICAgIGlmIChsaW5rcGF0aC5pbmNsdWRlcygiI14iKSkgewogICAgICAgICAgICAgIGxldCBzcGxpdCA9IGxpbmtwYXRoLnNwbGl0KCIjXiIpOwogICAgICAgICAgICAgIHJldHVybiBMaW5rLmJsb2NrKHNwbGl0WzBdLCBzcGxpdFsxXSwgZW1iZWQsIGRpc3BsYXkpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAobGlua3BhdGguaW5jbHVkZXMoIiMiKSkgewogICAgICAgICAgICAgIGxldCBzcGxpdCA9IGxpbmtwYXRoLnNwbGl0KCIjIik7CiAgICAgICAgICAgICAgcmV0dXJuIExpbmsuaGVhZGVyKHNwbGl0WzBdLCBzcGxpdFsxXSwgZW1iZWQsIGRpc3BsYXkpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHJldHVybiBMaW5rLmZpbGUobGlua3BhdGgsIGVtYmVkLCBkaXNwbGF5KTsKICAgICAgfQogICAgICAvKiogQ3JlYXRlIGEgbGluayB0byBhIHNwZWNpZmljIGZpbGUgYW5kIGhlYWRlciBpbiB0aGF0IGZpbGUuICovCiAgICAgIHN0YXRpYyBoZWFkZXIocGF0aCwgaGVhZGVyLCBlbWJlZCwgZGlzcGxheSkgewogICAgICAgICAgLy8gSGVhZGVycyBuZWVkIHRvIGJlIG5vcm1hbGl6ZWQgdG8gYWxwaGEtbnVtZXJpYyAmIHdpdGggZXh0cmEgc3BhY2luZyByZW1vdmVkLgogICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKHsKICAgICAgICAgICAgICBwYXRoLAogICAgICAgICAgICAgIGVtYmVkLAogICAgICAgICAgICAgIGRpc3BsYXksCiAgICAgICAgICAgICAgc3VicGF0aDogbm9ybWFsaXplSGVhZGVyRm9yTGluayhoZWFkZXIpLAogICAgICAgICAgICAgIHR5cGU6ICJoZWFkZXIiLAogICAgICAgICAgfSk7CiAgICAgIH0KICAgICAgLyoqIENyZWF0ZSBhIGxpbmsgdG8gYSBzcGVjaWZpYyBmaWxlIGFuZCBibG9jayBpbiB0aGF0IGZpbGUuICovCiAgICAgIHN0YXRpYyBibG9jayhwYXRoLCBibG9ja0lkLCBlbWJlZCwgZGlzcGxheSkgewogICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKHsKICAgICAgICAgICAgICBwYXRoLAogICAgICAgICAgICAgIGVtYmVkLAogICAgICAgICAgICAgIGRpc3BsYXksCiAgICAgICAgICAgICAgc3VicGF0aDogYmxvY2tJZCwKICAgICAgICAgICAgICB0eXBlOiAiYmxvY2siLAogICAgICAgICAgfSk7CiAgICAgIH0KICAgICAgc3RhdGljIGZyb21PYmplY3Qob2JqZWN0KSB7CiAgICAgICAgICByZXR1cm4gbmV3IExpbmsob2JqZWN0KTsKICAgICAgfQogICAgICBjb25zdHJ1Y3RvcihmaWVsZHMpIHsKICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgZmllbGRzKTsKICAgICAgfQogICAgICAvKiogQ2hlY2tzIGZvciBsaW5rIGVxdWFsaXR5IChpLmUuLCB0aGF0IHRoZSBsaW5rcyBhcmUgcG9pbnRpbmcgdG8gdGhlIHNhbWUgZXhhY3QgbG9jYXRpb24pLiAqLwogICAgICBlcXVhbHMob3RoZXIpIHsKICAgICAgICAgIGlmIChvdGhlciA9PSB1bmRlZmluZWQgfHwgb3RoZXIgPT0gbnVsbCkKICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICByZXR1cm4gdGhpcy5wYXRoID09IG90aGVyLnBhdGggJiYgdGhpcy50eXBlID09IG90aGVyLnR5cGUgJiYgdGhpcy5zdWJwYXRoID09IG90aGVyLnN1YnBhdGg7CiAgICAgIH0KICAgICAgLyoqIENvbnZlcnQgdGhpcyBsaW5rIHRvIGl0J3MgbWFya2Rvd24gcmVwcmVzZW50YXRpb24uICovCiAgICAgIHRvU3RyaW5nKCkgewogICAgICAgICAgcmV0dXJuIHRoaXMubWFya2Rvd24oKTsKICAgICAgfQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgdG8gYSByYXcgb2JqZWN0IHdoaWNoIGlzIHNlcmlhbGl6YXRpb24tZnJpZW5kbHkuICovCiAgICAgIHRvT2JqZWN0KCkgewogICAgICAgICAgcmV0dXJuIHsgcGF0aDogdGhpcy5wYXRoLCB0eXBlOiB0aGlzLnR5cGUsIHN1YnBhdGg6IHRoaXMuc3VicGF0aCwgZGlzcGxheTogdGhpcy5kaXNwbGF5LCBlbWJlZDogdGhpcy5lbWJlZCB9OwogICAgICB9CiAgICAgIC8qKiBVcGRhdGUgdGhpcyBsaW5rIHdpdGggYSBuZXcgcGF0aC4gKi8KICAgICAgLy9AdHMtaWdub3JlOyBlcnJvciBhcHBlYXJlZCBhZnRlciB1cGRhdGluZyBPYnNpZGlhbiB0byAwLjE1LjQ7IGl0IGFsc28gdXBkYXRlZCBvdGhlciBwYWNrYWdlcyBidXQgZGlkbid0IHNheSB3aGljaAogICAgICB3aXRoUGF0aChwYXRoKSB7CiAgICAgICAgICByZXR1cm4gbmV3IExpbmsoT2JqZWN0LmFzc2lnbih7fSwgdGhpcywgeyBwYXRoIH0pKTsKICAgICAgfQogICAgICAvKiogUmV0dXJuIGEgbmV3IGxpbmsgd2hpY2ggcG9pbnRzIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGJ1dCB3aXRoIGEgbmV3IGRpc3BsYXkgdmFsdWUuICovCiAgICAgIHdpdGhEaXNwbGF5KGRpc3BsYXkpIHsKICAgICAgICAgIHJldHVybiBuZXcgTGluayhPYmplY3QuYXNzaWduKHt9LCB0aGlzLCB7IGRpc3BsYXkgfSkpOwogICAgICB9CiAgICAgIC8qKiBDb252ZXJ0IGEgZmlsZSBsaW5rIGludG8gYSBsaW5rIHRvIGEgc3BlY2lmaWMgaGVhZGVyLiAqLwogICAgICB3aXRoSGVhZGVyKGhlYWRlcikgewogICAgICAgICAgcmV0dXJuIExpbmsuaGVhZGVyKHRoaXMucGF0aCwgaGVhZGVyLCB0aGlzLmVtYmVkLCB0aGlzLmRpc3BsYXkpOwogICAgICB9CiAgICAgIC8qKiBDb252ZXJ0IGFueSBsaW5rIGludG8gYSBsaW5rIHRvIGl0cyBmaWxlLiAqLwogICAgICB0b0ZpbGUoKSB7CiAgICAgICAgICByZXR1cm4gTGluay5maWxlKHRoaXMucGF0aCwgdGhpcy5lbWJlZCwgdGhpcy5kaXNwbGF5KTsKICAgICAgfQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgaW50byBhbiBlbWJlZGRlZCBsaW5rLiAqLwogICAgICB0b0VtYmVkKCkgewogICAgICAgICAgaWYgKHRoaXMuZW1iZWQpIHsKICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIGxldCBsaW5rID0gbmV3IExpbmsodGhpcyk7CiAgICAgICAgICAgICAgbGluay5lbWJlZCA9IHRydWU7CiAgICAgICAgICAgICAgcmV0dXJuIGxpbms7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgLyoqIENvbnZlcnQgdGhpcyBsaW5rIGludG8gYSBub24tZW1iZWRkZWQgbGluay4gKi8KICAgICAgZnJvbUVtYmVkKCkgewogICAgICAgICAgaWYgKCF0aGlzLmVtYmVkKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICBsZXQgbGluayA9IG5ldyBMaW5rKHRoaXMpOwogICAgICAgICAgICAgIGxpbmsuZW1iZWQgPSBmYWxzZTsKICAgICAgICAgICAgICByZXR1cm4gbGluazsKICAgICAgICAgIH0KICAgICAgfQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgdG8gbWFya2Rvd24gc28gaXQgY2FuIGJlIHJlbmRlcmVkLiAqLwogICAgICBtYXJrZG93bigpIHsKICAgICAgICAgIGxldCByZXN1bHQgPSAodGhpcy5lbWJlZCA/ICIhIiA6ICIiKSArICJbWyIgKyB0aGlzLm9ic2lkaWFuTGluaygpOwogICAgICAgICAgaWYgKHRoaXMuZGlzcGxheSkgewogICAgICAgICAgICAgIHJlc3VsdCArPSAifCIgKyB0aGlzLmRpc3BsYXk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICByZXN1bHQgKz0gInwiICsgZ2V0RmlsZVRpdGxlKHRoaXMucGF0aCk7CiAgICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSAiaGVhZGVyIiB8fCB0aGlzLnR5cGUgPT0gImJsb2NrIikKICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICIgPiAiICsgdGhpcy5zdWJwYXRoOwogICAgICAgICAgfQogICAgICAgICAgcmVzdWx0ICs9ICJdXSI7CiAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9CiAgICAgIC8qKiBDb252ZXJ0IHRoZSBpbm5lciBwYXJ0IG9mIHRoZSBsaW5rIHRvIHNvbWV0aGluZyB0aGF0IE9ic2lkaWFuIGNhbiBvcGVuIC8gdW5kZXJzdGFuZC4gKi8KICAgICAgb2JzaWRpYW5MaW5rKCkgewogICAgICAgICAgY29uc3QgZXNjYXBlZCA9IHRoaXMucGF0aC5yZXBsYWNlQWxsKCJ8IiwgIlxcfCIpOwogICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSAiaGVhZGVyIikKICAgICAgICAgICAgICByZXR1cm4gZXNjYXBlZCArICIjIiArIHRoaXMuc3VicGF0aD8ucmVwbGFjZUFsbCgifCIsICJcXHwiKTsKICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT0gImJsb2NrIikKICAgICAgICAgICAgICByZXR1cm4gZXNjYXBlZCArICIjXiIgKyB0aGlzLnN1YnBhdGg/LnJlcGxhY2VBbGwoInwiLCAiXFx8Iik7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuIGVzY2FwZWQ7CiAgICAgIH0KICAgICAgLyoqIFRoZSBzdHJpcHBlZCBuYW1lIG9mIHRoZSBmaWxlIHRoaXMgbGluayBwb2ludHMgdG8uICovCiAgICAgIGZpbGVOYW1lKCkgewogICAgICAgICAgcmV0dXJuIGdldEZpbGVUaXRsZSh0aGlzLnBhdGgpLnJlcGxhY2UoIi5tZCIsICIiKTsKICAgICAgfQogIH0KICAvLy8vLy8vLy8vLy8vLy8vLwogIC8vIFdJREdFVCBCQVNFIC8vCiAgLy8vLy8vLy8vLy8vLy8vLy8KICAvKioKICAgKiBBIHRyaXZpYWwgYmFzZSBjbGFzcyB3aGljaCBqdXN0IGRlZmluZXMgdGhlICckd2lkZ2V0JyBpZGVudGlmaWVyIHR5cGUuIFN1YnR5cGVzIG9mCiAgICogd2lkZ2V0IGFyZSByZXNwb25zaWJsZSBmb3IgYWRkaW5nIHdoYXRldmVyIG1ldGFkYXRhIGlzIHJlbGV2YW50LiBJZiB5b3Ugd2FudCB5b3VyIHdpZGdldAogICAqIHRvIGhhdmUgcmVuZGVyaW5nIGZ1bmN0aW9uYWxpdHkgKHdoaWNoIHlvdSBwcm9iYWJseSBkbyksIHlvdSBzaG91bGQgZXh0ZW5kIGBSZW5kZXJXaWRnZXRgLgogICAqLwogIGNsYXNzIFdpZGdldCB7CiAgICAgICR3aWRnZXQ7CiAgICAgIGNvbnN0cnVjdG9yKCR3aWRnZXQpIHsKICAgICAgICAgIHRoaXMuJHdpZGdldCA9ICR3aWRnZXQ7CiAgICAgIH0KICB9CiAgLyoqIEEgdHJpdmlhbCB3aWRnZXQgd2hpY2ggcmVuZGVycyBhIChrZXksIHZhbHVlKSBwYWlyLCBhbmQgYWxsb3dzIGFjY2Vzc2luZyB0aGUga2V5IGFuZCB2YWx1ZS4gKi8KICBjbGFzcyBMaXN0UGFpcldpZGdldCBleHRlbmRzIFdpZGdldCB7CiAgICAgIGtleTsKICAgICAgdmFsdWU7CiAgICAgIGNvbnN0cnVjdG9yKGtleSwgdmFsdWUpIHsKICAgICAgICAgIHN1cGVyKCJkYXRhdmlldzpsaXN0LXBhaXIiKTsKICAgICAgICAgIHRoaXMua2V5ID0ga2V5OwogICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwogICAgICB9CiAgICAgIG1hcmtkb3duKCkgewogICAgICAgICAgcmV0dXJuIGAke1ZhbHVlcy50b1N0cmluZyh0aGlzLmtleSl9OiAke1ZhbHVlcy50b1N0cmluZyh0aGlzLnZhbHVlKX1gOwogICAgICB9CiAgfQogIC8qKiBBIHNpbXBsZSB3aWRnZXQgd2hpY2ggcmVuZGVycyBhbiBleHRlcm5hbCBsaW5rLiAqLwogIGNsYXNzIEV4dGVybmFsTGlua1dpZGdldCBleHRlbmRzIFdpZGdldCB7CiAgICAgIHVybDsKICAgICAgZGlzcGxheTsKICAgICAgY29uc3RydWN0b3IodXJsLCBkaXNwbGF5KSB7CiAgICAgICAgICBzdXBlcigiZGF0YXZpZXc6ZXh0ZXJuYWwtbGluayIpOwogICAgICAgICAgdGhpcy51cmwgPSB1cmw7CiAgICAgICAgICB0aGlzLmRpc3BsYXkgPSBkaXNwbGF5OwogICAgICB9CiAgICAgIG1hcmtkb3duKCkgewogICAgICAgICAgcmV0dXJuIGBbJHt0aGlzLmRpc3BsYXkgPz8gdGhpcy51cmx9XSgke3RoaXMudXJsfSlgOwogICAgICB9CiAgfQogIHZhciBXaWRnZXRzOwogIChmdW5jdGlvbiAoV2lkZ2V0cykgewogICAgICAvKiogQ3JlYXRlIGEgbGlzdCBwYWlyIHdpZGdldCBtYXRjaGluZyB0aGUgZ2l2ZW4ga2V5IGFuZCB2YWx1ZS4gKi8KICAgICAgZnVuY3Rpb24gbGlzdFBhaXIoa2V5LCB2YWx1ZSkgewogICAgICAgICAgcmV0dXJuIG5ldyBMaXN0UGFpcldpZGdldChrZXksIHZhbHVlKTsKICAgICAgfQogICAgICBXaWRnZXRzLmxpc3RQYWlyID0gbGlzdFBhaXI7CiAgICAgIC8qKiBDcmVhdGUgYW4gZXh0ZXJuYWwgbGluayB3aWRnZXQgd2hpY2ggcmVuZGVycyBhbiBleHRlcm5hbCBPYnNpZGlhbiBsaW5rLiAqLwogICAgICBmdW5jdGlvbiBleHRlcm5hbExpbmsodXJsLCBkaXNwbGF5KSB7CiAgICAgICAgICByZXR1cm4gbmV3IEV4dGVybmFsTGlua1dpZGdldCh1cmwsIGRpc3BsYXkpOwogICAgICB9CiAgICAgIFdpZGdldHMuZXh0ZXJuYWxMaW5rID0gZXh0ZXJuYWxMaW5rOwogICAgICAvKiogQ2hlY2tzIGlmIHRoZSBnaXZlbiB3aWRnZXQgaXMgYSBsaXN0IHBhaXIgd2lkZ2V0LiAqLwogICAgICBmdW5jdGlvbiBpc0xpc3RQYWlyKHdpZGdldCkgewogICAgICAgICAgcmV0dXJuIHdpZGdldC4kd2lkZ2V0ID09PSAiZGF0YXZpZXc6bGlzdC1wYWlyIjsKICAgICAgfQogICAgICBXaWRnZXRzLmlzTGlzdFBhaXIgPSBpc0xpc3RQYWlyOwogICAgICBmdW5jdGlvbiBpc0V4dGVybmFsTGluayh3aWRnZXQpIHsKICAgICAgICAgIHJldHVybiB3aWRnZXQuJHdpZGdldCA9PT0gImRhdGF2aWV3OmV4dGVybmFsLWxpbmsiOwogICAgICB9CiAgICAgIFdpZGdldHMuaXNFeHRlcm5hbExpbmsgPSBpc0V4dGVybmFsTGluazsKICAgICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIHdpZGdldCBpcyBhbnkga2luZCBvZiBidWlsdC1pbiB3aWRnZXQgd2l0aCBzcGVjaWFsIHJlbmRlcmluZyBoYW5kbGluZy4gKi8KICAgICAgZnVuY3Rpb24gaXNCdWlsdGluKHdpZGdldCkgewogICAgICAgICAgcmV0dXJuIGlzTGlzdFBhaXIod2lkZ2V0KSB8fCBpc0V4dGVybmFsTGluayh3aWRnZXQpOwogICAgICB9CiAgICAgIFdpZGdldHMuaXNCdWlsdGluID0gaXNCdWlsdGluOwogIH0pKFdpZGdldHMgfHwgKFdpZGdldHMgPSB7fSkpOwoKICAvKiogVXRpbGl0eSBtZXRob2RzIGZvciBjcmVhdGluZyAmIGNvbXBhcmluZyBmaWVsZHMuICovCiAgdmFyIEZpZWxkczsKICAoZnVuY3Rpb24gKEZpZWxkcykgewogICAgICBmdW5jdGlvbiB2YXJpYWJsZShuYW1lKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAidmFyaWFibGUiLCBuYW1lIH07CiAgICAgIH0KICAgICAgRmllbGRzLnZhcmlhYmxlID0gdmFyaWFibGU7CiAgICAgIGZ1bmN0aW9uIGxpdGVyYWwodmFsdWUpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsaXRlcmFsIiwgdmFsdWUgfTsKICAgICAgfQogICAgICBGaWVsZHMubGl0ZXJhbCA9IGxpdGVyYWw7CiAgICAgIGZ1bmN0aW9uIGJpbmFyeU9wKGxlZnQsIG9wLCByaWdodCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJpbmFyeW9wIiwgbGVmdCwgb3AsIHJpZ2h0IH07CiAgICAgIH0KICAgICAgRmllbGRzLmJpbmFyeU9wID0gYmluYXJ5T3A7CiAgICAgIGZ1bmN0aW9uIGluZGV4KG9iaiwgaW5kZXgpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJpbmRleCIsIG9iamVjdDogb2JqLCBpbmRleCB9OwogICAgICB9CiAgICAgIEZpZWxkcy5pbmRleCA9IGluZGV4OwogICAgICAvKiogQ29udmVydHMgYSBzdHJpbmcgaW4gZG90LW5vdGF0aW9uLWZvcm1hdCBpbnRvIGEgdmFyaWFibGUgd2hpY2ggaW5kZXhlcy4gKi8KICAgICAgZnVuY3Rpb24gaW5kZXhWYXJpYWJsZShuYW1lKSB7CiAgICAgICAgICBsZXQgcGFydHMgPSBuYW1lLnNwbGl0KCIuIik7CiAgICAgICAgICBsZXQgcmVzdWx0ID0gRmllbGRzLnZhcmlhYmxlKHBhcnRzWzBdKTsKICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCBwYXJ0cy5sZW5ndGg7IGluZGV4KyspIHsKICAgICAgICAgICAgICByZXN1bHQgPSBGaWVsZHMuaW5kZXgocmVzdWx0LCBGaWVsZHMubGl0ZXJhbChwYXJ0c1tpbmRleF0pKTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgIH0KICAgICAgRmllbGRzLmluZGV4VmFyaWFibGUgPSBpbmRleFZhcmlhYmxlOwogICAgICBmdW5jdGlvbiBsYW1iZGEoYXJncywgdmFsdWUpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsYW1iZGEiLCBhcmd1bWVudHM6IGFyZ3MsIHZhbHVlIH07CiAgICAgIH0KICAgICAgRmllbGRzLmxhbWJkYSA9IGxhbWJkYTsKICAgICAgZnVuY3Rpb24gZnVuYyhmdW5jLCBhcmdzKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZnVuY3Rpb24iLCBmdW5jLCBhcmd1bWVudHM6IGFyZ3MgfTsKICAgICAgfQogICAgICBGaWVsZHMuZnVuYyA9IGZ1bmM7CiAgICAgIGZ1bmN0aW9uIGxpc3QodmFsdWVzKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAibGlzdCIsIHZhbHVlcyB9OwogICAgICB9CiAgICAgIEZpZWxkcy5saXN0ID0gbGlzdDsKICAgICAgZnVuY3Rpb24gb2JqZWN0KHZhbHVlcykgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogIm9iamVjdCIsIHZhbHVlcyB9OwogICAgICB9CiAgICAgIEZpZWxkcy5vYmplY3QgPSBvYmplY3Q7CiAgICAgIGZ1bmN0aW9uIG5lZ2F0ZShjaGlsZCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogIm5lZ2F0ZWQiLCBjaGlsZCB9OwogICAgICB9CiAgICAgIEZpZWxkcy5uZWdhdGUgPSBuZWdhdGU7CiAgICAgIGZ1bmN0aW9uIGlzQ29tcGFyZU9wKG9wKSB7CiAgICAgICAgICByZXR1cm4gb3AgPT0gIjw9IiB8fCBvcCA9PSAiPCIgfHwgb3AgPT0gIj4iIHx8IG9wID09ICI+PSIgfHwgb3AgPT0gIiE9IiB8fCBvcCA9PSAiPSI7CiAgICAgIH0KICAgICAgRmllbGRzLmlzQ29tcGFyZU9wID0gaXNDb21wYXJlT3A7CiAgICAgIEZpZWxkcy5OVUxMID0gRmllbGRzLmxpdGVyYWwobnVsbCk7CiAgfSkoRmllbGRzIHx8IChGaWVsZHMgPSB7fSkpOwoKICAvKiogQVNUIGltcGxlbWVudGF0aW9uIGZvciBxdWVyaWVzIG92ZXIgZGF0YSBzb3VyY2VzLiAqLwogIC8qKiBVdGlsaXR5IGZ1bmN0aW9ucyBmb3IgY3JlYXRpbmcgYW5kIG1hbmlwdWxhdGluZyBzb3VyY2VzLiAqLwogIHZhciBTb3VyY2VzOwogIChmdW5jdGlvbiAoU291cmNlcykgewogICAgICAvKiogQ3JlYXRlIGEgc291cmNlIHdoaWNoIHNlYXJjaGVzIGZyb20gYSB0YWcuICovCiAgICAgIGZ1bmN0aW9uIHRhZyh0YWcpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJ0YWciLCB0YWcgfTsKICAgICAgfQogICAgICBTb3VyY2VzLnRhZyA9IHRhZzsKICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBmZXRjaGVzIGZyb20gYSBDU1YgZmlsZS4gKi8KICAgICAgZnVuY3Rpb24gY3N2KHBhdGgpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJjc3YiLCBwYXRoIH07CiAgICAgIH0KICAgICAgU291cmNlcy5jc3YgPSBjc3Y7CiAgICAgIC8qKiBDcmVhdGUgYSBzb3VyY2Ugd2hpY2ggc2VhcmNoZXMgZm9yIGZpbGVzIHVuZGVyIGEgZm9sZGVyIHByZWZpeC4gKi8KICAgICAgZnVuY3Rpb24gZm9sZGVyKHByZWZpeCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImZvbGRlciIsIGZvbGRlcjogcHJlZml4IH07CiAgICAgIH0KICAgICAgU291cmNlcy5mb2xkZXIgPSBmb2xkZXI7CiAgICAgIC8qKiBDcmVhdGUgYSBzb3VyY2Ugd2hpY2ggc2VhcmNoZXMgZm9yIGZpbGVzIHdoaWNoIGxpbmsgdG8vZnJvbSBhIGdpdmVuIGZpbGUuICovCiAgICAgIGZ1bmN0aW9uIGxpbmsoZmlsZSwgaW5jb21pbmcpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsaW5rIiwgZmlsZSwgZGlyZWN0aW9uOiBpbmNvbWluZyA/ICJpbmNvbWluZyIgOiAib3V0Z29pbmciIH07CiAgICAgIH0KICAgICAgU291cmNlcy5saW5rID0gbGluazsKICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBqb2lucyB0d28gc291cmNlcyBieSBhIGxvZ2ljYWwgb3BlcmF0b3IgKGFuZC9vcikuICovCiAgICAgIGZ1bmN0aW9uIGJpbmFyeU9wKGxlZnQsIG9wLCByaWdodCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJpbmFyeW9wIiwgbGVmdCwgb3AsIHJpZ2h0IH07CiAgICAgIH0KICAgICAgU291cmNlcy5iaW5hcnlPcCA9IGJpbmFyeU9wOwogICAgICAvKiogQ3JlYXRlIGEgc291cmNlIHdoaWNoIHRha2VzIHRoZSBpbnRlcnNlY3Rpb24gb2YgdHdvIHNvdXJjZXMuICovCiAgICAgIGZ1bmN0aW9uIGFuZChsZWZ0LCByaWdodCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJpbmFyeW9wIiwgbGVmdCwgb3A6ICImIiwgcmlnaHQgfTsKICAgICAgfQogICAgICBTb3VyY2VzLmFuZCA9IGFuZDsKICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCB0YWtlcyB0aGUgdW5pb24gb2YgdHdvIHNvdXJjZXMuICovCiAgICAgIGZ1bmN0aW9uIG9yKGxlZnQsIHJpZ2h0KSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiYmluYXJ5b3AiLCBsZWZ0LCBvcDogInwiLCByaWdodCB9OwogICAgICB9CiAgICAgIFNvdXJjZXMub3IgPSBvcjsKICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBuZWdhdGVzIHRoZSB1bmRlcmx5aW5nIHNvdXJjZS4gKi8KICAgICAgZnVuY3Rpb24gbmVnYXRlKGNoaWxkKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAibmVnYXRlIiwgY2hpbGQgfTsKICAgICAgfQogICAgICBTb3VyY2VzLm5lZ2F0ZSA9IG5lZ2F0ZTsKICAgICAgZnVuY3Rpb24gZW1wdHkoKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZW1wdHkiIH07CiAgICAgIH0KICAgICAgU291cmNlcy5lbXB0eSA9IGVtcHR5OwogIH0pKFNvdXJjZXMgfHwgKFNvdXJjZXMgPSB7fSkpOwoKICAvKiogRW1vamkgcmVnZXggd2l0aG91dCBhbnkgYWRkaXRpb25hbCBmbGFncy4gKi8KICBjb25zdCBFTU9KSV9SRUdFWCA9IG5ldyBSZWdFeHAoZW1vamlSZWdleCgpLCAiIik7CiAgLyoqIFByb3ZpZGVzIGEgbG9va3VwIHRhYmxlIGZvciB1bml0IGR1cmF0aW9ucyBvZiB0aGUgZ2l2ZW4gdHlwZS4gKi8KICBjb25zdCBEVVJBVElPTl9UWVBFUyA9IHsKICAgICAgeWVhcjogRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLAogICAgICB5ZWFyczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLAogICAgICB5cjogRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLAogICAgICB5cnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMSB9KSwKICAgICAgbW9udGg6IER1cmF0aW9uLmZyb21PYmplY3QoeyBtb250aHM6IDEgfSksCiAgICAgIG1vbnRoczogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSwKICAgICAgbW86IER1cmF0aW9uLmZyb21PYmplY3QoeyBtb250aHM6IDEgfSksCiAgICAgIG1vczogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSwKICAgICAgd2VlazogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLAogICAgICB3ZWVrczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLAogICAgICB3azogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLAogICAgICB3a3M6IER1cmF0aW9uLmZyb21PYmplY3QoeyB3ZWVrczogMSB9KSwKICAgICAgdzogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLAogICAgICBkYXk6IER1cmF0aW9uLmZyb21PYmplY3QoeyBkYXlzOiAxIH0pLAogICAgICBkYXlzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSwKICAgICAgZDogRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEgfSksCiAgICAgIGhvdXI6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwKICAgICAgaG91cnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwKICAgICAgaHI6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwKICAgICAgaHJzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEgfSksCiAgICAgIGg6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwKICAgICAgbWludXRlOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSwKICAgICAgbWludXRlczogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksCiAgICAgIG1pbjogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksCiAgICAgIG1pbnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiAxIH0pLAogICAgICBtOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSwKICAgICAgc2Vjb25kOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSwKICAgICAgc2Vjb25kczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHNlY29uZHM6IDEgfSksCiAgICAgIHNlYzogRHVyYXRpb24uZnJvbU9iamVjdCh7IHNlY29uZHM6IDEgfSksCiAgICAgIHNlY3M6IER1cmF0aW9uLmZyb21PYmplY3QoeyBzZWNvbmRzOiAxIH0pLAogICAgICBzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSwKICB9OwogIC8qKiBTaG9ydGhhbmQgZm9yIGNvbW1vbiBkYXRlcyAocmVsYXRpdmUgdG8gcmlnaHQgbm93KS4gKi8KICBjb25zdCBEQVRFX1NIT1JUSEFORFMgPSB7CiAgICAgIG5vdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKSwKICAgICAgdG9kYXk6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuc3RhcnRPZigiZGF5IiksCiAgICAgIHllc3RlcmRheTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKQogICAgICAgICAgLnN0YXJ0T2YoImRheSIpCiAgICAgICAgICAubWludXMoRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEgfSkpLAogICAgICB0b21vcnJvdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKQogICAgICAgICAgLnN0YXJ0T2YoImRheSIpCiAgICAgICAgICAucGx1cyhEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSksCiAgICAgIHNvdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJ3ZWVrIiksCiAgICAgICJzdGFydC1vZi13ZWVrIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJ3ZWVrIiksCiAgICAgIGVvdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZigid2VlayIpLAogICAgICAiZW5kLW9mLXdlZWsiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKCJ3ZWVrIiksCiAgICAgIHNveTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJ5ZWFyIiksCiAgICAgICJzdGFydC1vZi15ZWFyIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJ5ZWFyIiksCiAgICAgIGVveTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZigieWVhciIpLAogICAgICAiZW5kLW9mLXllYXIiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKCJ5ZWFyIiksCiAgICAgIHNvbTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJtb250aCIpLAogICAgICAic3RhcnQtb2YtbW9udGgiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoIm1vbnRoIiksCiAgICAgIGVvbTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZigibW9udGgiKSwKICAgICAgImVuZC1vZi1tb250aCI6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuZW5kT2YoIm1vbnRoIiksCiAgfTsKICAvKioKICAgKiBLZXl3b3JkcyB3aGljaCBjYW5ub3QgYmUgdXNlZCBhcyB2YXJpYWJsZXMgZGlyZWN0bHkuIFVzZSBgcm93Ljx0aGluZz5gIGlmIGl0IGlzIGEgdmFyaWFibGUgeW91IGhhdmUgZGVmaW5lZCBhbmQgd2FudAogICAqIHRvIGFjY2Vzcy4KICAgKi8KICBjb25zdCBLRVlXT1JEUyA9IFsiRlJPTSIsICJXSEVSRSIsICJMSU1JVCIsICJHUk9VUCIsICJGTEFUVEVOIl07CiAgLy8vLy8vLy8vLy8vLy8vCiAgLy8gVXRpbGl0aWVzIC8vCiAgLy8vLy8vLy8vLy8vLy8vCiAgLyoqIFNwbGl0IG9uIHVuZXNjYXBlZCBwaXBlcyBpbiBhbiBpbm5lciBsaW5rLiAqLwogIGZ1bmN0aW9uIHNwbGl0T25VbmVzY2FwZWRQaXBlKGxpbmspIHsKICAgICAgbGV0IHBpcGUgPSAtMTsKICAgICAgd2hpbGUgKChwaXBlID0gbGluay5pbmRleE9mKCJ8IiwgcGlwZSArIDEpKSA+PSAwKSB7CiAgICAgICAgICBpZiAocGlwZSA+IDAgJiYgbGlua1twaXBlIC0gMV0gPT0gIlxcIikKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIHJldHVybiBbbGluay5zdWJzdHJpbmcoMCwgcGlwZSkucmVwbGFjZSgvXFxcfC9nLCAifCIpLCBsaW5rLnN1YnN0cmluZyhwaXBlICsgMSldOwogICAgICB9CiAgICAgIHJldHVybiBbbGluay5yZXBsYWNlKC9cXFx8L2csICJ8IiksIHVuZGVmaW5lZF07CiAgfQogIC8qKiBBdHRlbXB0IHRvIHBhcnNlIHRoZSBpbnNpZGUgb2YgYSBsaW5rIHRvIHB1bGwgb3V0IGRpc3BsYXkgbmFtZSwgc3VicGF0aCwgZXRjLiAqLwogIGZ1bmN0aW9uIHBhcnNlSW5uZXJMaW5rKHJhd2xpbmspIHsKICAgICAgbGV0IFtsaW5rLCBkaXNwbGF5XSA9IHNwbGl0T25VbmVzY2FwZWRQaXBlKHJhd2xpbmspOwogICAgICByZXR1cm4gTGluay5pbmZlcihsaW5rLCBmYWxzZSwgZGlzcGxheSk7CiAgfQogIC8qKiBDcmVhdGUgYSBsZWZ0LWFzc29jaWF0aXZlIGJpbmFyeSBwYXJzZXIgd2hpY2ggcGFyc2VzIHRoZSBnaXZlbiBzdWItZWxlbWVudCBhbmQgc2VwYXJhdG9yLiBIYW5kbGVzIHdoaXRlc3BhY2UuICovCiAgZnVuY3Rpb24gY3JlYXRlQmluYXJ5UGFyc2VyKGNoaWxkLCBzZXAsIGNvbWJpbmUpIHsKICAgICAgcmV0dXJuIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAoY2hpbGQsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXEocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIHNlcCwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIGNoaWxkKS5tYW55KCksIChmaXJzdCwgcmVzdCkgPT4gewogICAgICAgICAgaWYgKHJlc3QubGVuZ3RoID09IDApCiAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0OwogICAgICAgICAgbGV0IG5vZGUgPSBjb21iaW5lKGZpcnN0LCByZXN0WzBdWzFdLCByZXN0WzBdWzNdKTsKICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCByZXN0Lmxlbmd0aDsgaW5kZXgrKykgewogICAgICAgICAgICAgIG5vZGUgPSBjb21iaW5lKG5vZGUsIHJlc3RbaW5kZXhdWzFdLCByZXN0W2luZGV4XVszXSk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgfSk7CiAgfQogIGZ1bmN0aW9uIGNoYWluT3B0KGJhc2UsIC4uLmZ1bmNzKSB7CiAgICAgIHJldHVybiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuY3VzdG9tKChzdWNjZXNzLCBmYWlsdXJlKSA9PiB7CiAgICAgICAgICByZXR1cm4gKGlucHV0LCBpKSA9PiB7CiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGJhc2UuXyhpbnB1dCwgaSk7CiAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuc3RhdHVzKQogICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgIGZvciAobGV0IGZ1bmMgb2YgZnVuY3MpIHsKICAgICAgICAgICAgICAgICAgbGV0IG5leHQgPSBmdW5jKHJlc3VsdC52YWx1ZSkuXyhpbnB1dCwgcmVzdWx0LmluZGV4KTsKICAgICAgICAgICAgICAgICAgaWYgKCFuZXh0LnN0YXR1cykKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5leHQ7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICB9OwogICAgICB9KTsKICB9CiAgY29uc3QgRVhQUkVTU0lPTiA9IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5jcmVhdGVMYW5ndWFnZSh7CiAgICAgIC8vIEEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyOyB0aGUgZGVjaW1hbCBwb2ludCBpcyBvcHRpb25hbC4KICAgICAgbnVtYmVyOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoLy0/WzAtOV0rKFwuWzAtOV0rKT8vKQogICAgICAgICAgLm1hcChzdHIgPT4gTnVtYmVyLnBhcnNlRmxvYXQoc3RyKSkKICAgICAgICAgIC5kZXNjKCJudW1iZXIiKSwKICAgICAgLy8gQSBxdW90ZS1zdXJyb3VuZGVkIHN0cmluZyB3aGljaCBzdXBwb3J0cyBlc2NhcGUgY2hhcmFjdGVycyAoJ1wnKS4KICAgICAgc3RyaW5nOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoJyInKQogICAgICAgICAgLnRoZW4ocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChxLmVzY2FwZUNoYXJhY3RlciwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm5vbmVPZignIlxcJykpCiAgICAgICAgICAuYXRMZWFzdCgwKQogICAgICAgICAgLm1hcChjaGFycyA9PiBjaGFycy5qb2luKCIiKSkpCiAgICAgICAgICAuc2tpcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCciJykpCiAgICAgICAgICAuZGVzYygic3RyaW5nIiksCiAgICAgIGVzY2FwZUNoYXJhY3RlcjogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJcXCIpCiAgICAgICAgICAudGhlbihwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYW55KQogICAgICAgICAgLm1hcChlc2NhcGVkID0+IHsKICAgICAgICAgIC8vIElmIHdlIGFyZSBlc2NhcGluZyBhIGJhY2tzbGFzaCBvciBhIHF1b3RlLCBwYXNzIGluIG9uIGluIGVzY2FwZWQgZm9ybQogICAgICAgICAgaWYgKGVzY2FwZWQgPT09ICciJykKICAgICAgICAgICAgICByZXR1cm4gJyInOwogICAgICAgICAgaWYgKGVzY2FwZWQgPT09ICJcXCIpCiAgICAgICAgICAgICAgcmV0dXJuICJcXCI7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuICJcXCIgKyBlc2NhcGVkOwogICAgICB9KSwKICAgICAgLy8gQSBib29sZWFuIHRydWUvZmFsc2UgdmFsdWUuCiAgICAgIGJvb2w6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvdHJ1ZXxmYWxzZXxUcnVlfEZhbHNlLykKICAgICAgICAgIC5tYXAoc3RyID0+IHN0ci50b0xvd2VyQ2FzZSgpID09ICJ0cnVlIikKICAgICAgICAgIC5kZXNjKCJib29sZWFuICgndHJ1ZScgb3IgJ2ZhbHNlJykiKSwKICAgICAgLy8gQSB0YWcgb2YgdGhlIGZvcm0gJyNzdHVmZi9oZWxsby10aGVyZScuCiAgICAgIHRhZzogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiMiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9bXlx1MjAwMC1cdTIwNkZcdTJFMDAtXHUyRTdGJyEiIyQlJigpKissLjo7PD0+P0BeYHt8fX5cW1xdXFxcc10vKS5kZXNjKCJ0ZXh0IikpLm1hbnkoKSwgKHN0YXJ0LCByZXN0KSA9PiBzdGFydCArIHJlc3Quam9pbigiIikpLmRlc2MoInRhZyAoJyNoZWxsby9zdHVmZicpIiksCiAgICAgIC8vIEEgdmFyaWFibGUgaWRlbnRpZmllciwgd2hpY2ggaXMgYWxwaGFudW1lcmljIGFuZCBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIgb3IuLi4gZW1vamkuCiAgICAgIGlkZW50aWZpZXI6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1xwe0xldHRlcn0vdSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoRU1PSklfUkVHRVgpLmRlc2MoInRleHQiKSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvWzAtOVxwe0xldHRlcn1fLV0vdSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoRU1PSklfUkVHRVgpLmRlc2MoInRleHQiKSkubWFueSgpLCAoZmlyc3QsIHJlc3QpID0+IGZpcnN0ICsgcmVzdC5qb2luKCIiKSkuZGVzYygidmFyaWFibGUgaWRlbnRpZmllciIpLAogICAgICAvLyBBbiBPYnNpZGlhbiBsaW5rIG9mIHRoZSBmb3JtIFtbPGxpbms+XV0uCiAgICAgIGxpbms6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXFtcWyhbXlxbXF1dKj8pXF1cXS91LCAxKQogICAgICAgICAgLm1hcChsaW5rSW5uZXIgPT4gcGFyc2VJbm5lckxpbmsobGlua0lubmVyKSkKICAgICAgICAgIC5kZXNjKCJmaWxlIGxpbmsiKSwKICAgICAgLy8gQW4gZW1iZWRkYWJsZSBsaW5rIHdoaWNoIGNhbiBzdGFydCB3aXRoICchJy4gVGhpcyBvdmVybGFwcyB3aXRoIHRoZSBub3JtYWwgbmVnYXRpb24gb3BlcmF0b3IsIHNvIGl0IGlzIG9ubHkKICAgICAgLy8gcHJvdmlkZWQgZm9yIG1ldGFkYXRhIHBhcnNpbmcuCiAgICAgIGVtYmVkTGluazogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiEiKS5hdE1vc3QoMSksIHEubGluaywgKHAsIGwpID0+IHsKICAgICAgICAgIGlmIChwLmxlbmd0aCA+IDApCiAgICAgICAgICAgICAgbC5lbWJlZCA9IHRydWU7CiAgICAgICAgICByZXR1cm4gbDsKICAgICAgfSkuZGVzYygiZmlsZSBsaW5rIiksCiAgICAgIC8vIEJpbmFyeSBwbHVzIG9yIG1pbnVzIG9wZXJhdG9yLgogICAgICBiaW5hcnlQbHVzTWludXM6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXCt8LS8pCiAgICAgICAgICAubWFwKHN0ciA9PiBzdHIpCiAgICAgICAgICAuZGVzYygiJysnIG9yICctJyIpLAogICAgICAvLyBCaW5hcnkgdGltZXMgb3IgZGl2aWRlIG9wZXJhdG9yLgogICAgICBiaW5hcnlNdWxEaXY6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXCp8XC98JS8pCiAgICAgICAgICAubWFwKHN0ciA9PiBzdHIpCiAgICAgICAgICAuZGVzYygiJyonIG9yICcvJyBvciAnJSciKSwKICAgICAgLy8gQmluYXJ5IGNvbXBhcmlzb24gb3BlcmF0b3IuCiAgICAgIGJpbmFyeUNvbXBhcmVPcDogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC8+PXw8PXwhPXw+fDx8PS8pCiAgICAgICAgICAubWFwKHN0ciA9PiBzdHIpCiAgICAgICAgICAuZGVzYygiJz49JyBvciAnPD0nIG9yICchPScgb3IgJz0nIG9yICc+JyBvciAnPCciKSwKICAgICAgLy8gQmluYXJ5IGJvb2xlYW4gY29tYmluYXRpb24gb3BlcmF0b3IuCiAgICAgIGJpbmFyeUJvb2xlYW5PcDogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9hbmR8b3J8JnxcfC9pKQogICAgICAgICAgLm1hcChzdHIgPT4gewogICAgICAgICAgaWYgKHN0ci50b0xvd2VyQ2FzZSgpID09ICJhbmQiKQogICAgICAgICAgICAgIHJldHVybiAiJiI7CiAgICAgICAgICBlbHNlIGlmIChzdHIudG9Mb3dlckNhc2UoKSA9PSAib3IiKQogICAgICAgICAgICAgIHJldHVybiAifCI7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuIHN0cjsKICAgICAgfSkKICAgICAgICAgIC5kZXNjKCInYW5kJyBvciAnb3InIiksCiAgICAgIC8vIEEgZGF0ZSB3aGljaCBjYW4gYmUgWVlZWS1NTVstRERUSEg6bW06c3NdLgogICAgICByb290RGF0ZTogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1xkezR9LyksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIi0iKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXGR7Mn0vKSwgKHllYXIsIF8sIG1vbnRoKSA9PiB7CiAgICAgICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IE51bWJlci5wYXJzZUludCh5ZWFyKSwgbW9udGg6IE51bWJlci5wYXJzZUludChtb250aCkgfSk7CiAgICAgIH0pLmRlc2MoImRhdGUgaW4gZm9ybWF0IFlZWVktTU1bLUREVEhILU1NLVNTLk1TXSIpLAogICAgICBkYXRlU2hvcnRoYW5kOiBfID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQoLi4uT2JqZWN0LmtleXMoREFURV9TSE9SVEhBTkRTKQogICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpCiAgICAgICAgICAubWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcpKSwKICAgICAgZGF0ZTogcSA9PiBjaGFpbk9wdChxLnJvb3REYXRlLCAoeW0pID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLSIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9cZHsyfS8pLCAoXywgZGF5KSA9PiB5bS5zZXQoeyBkYXk6IE51bWJlci5wYXJzZUludChkYXkpIH0pKSwgKHltZCkgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJUIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1xkezJ9LyksIChfLCBob3VyKSA9PiB5bWQuc2V0KHsgaG91cjogTnVtYmVyLnBhcnNlSW50KGhvdXIpIH0pKSwgKHltZGgpID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiOiIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9cZHsyfS8pLCAoXywgbWludXRlKSA9PiB5bWRoLnNldCh7IG1pbnV0ZTogTnVtYmVyLnBhcnNlSW50KG1pbnV0ZSkgfSkpLCAoeW1kaG0pID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiOiIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9cZHsyfS8pLCAoXywgc2Vjb25kKSA9PiB5bWRobS5zZXQoeyBzZWNvbmQ6IE51bWJlci5wYXJzZUludChzZWNvbmQpIH0pKSwgKHltZGhtcykgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIi4iKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXGR7M30vKSwgKF8sIG1pbGxpc2Vjb25kKSA9PiB5bWRobXMuc2V0KHsgbWlsbGlzZWNvbmQ6IE51bWJlci5wYXJzZUludChtaWxsaXNlY29uZCkgfSkpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3VjY2VlZCh5bWRobXMpIC8vIHBhc3MKICAgICAgKSwgKGR0KSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKyIpLm9yKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIi0iKSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1xkezEsMn0oOlxkezJ9KT8vKSwgKHBtLCBocikgPT4gZHQuc2V0Wm9uZSgiVVRDIiArIHBtICsgaHIsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiWiIpLCAoKSA9PiBkdC5zZXRab25lKCJ1dGMiLCB7IGtlZXBMb2NhbFRpbWU6IHRydWUgfSkpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIlsiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvWzAtOUEtWmEteistXC9dKy91KSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiXSIpLCAoX2EsIHpvbmUsIF9iKSA9PiBkdC5zZXRab25lKHpvbmUsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KSkpKQogICAgICAgICAgLmFzc2VydCgoZHQpID0+IGR0LmlzVmFsaWQsICJ2YWxpZCBkYXRlIikKICAgICAgICAgIC5kZXNjKCJkYXRlIGluIGZvcm1hdCBZWVlZLU1NWy1ERFRISC1NTS1TUy5NU10iKSwKICAgICAgLy8gQSBkYXRlLCBwbHVzIHZhcmlvdXMgc2hvcnRoYW5kIHRpbWVzIG9mIGRheSBpdCBjb3VsZCBiZS4KICAgICAgZGF0ZVBsdXM6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChxLmRhdGVTaG9ydGhhbmQubWFwKGQgPT4gREFURV9TSE9SVEhBTkRTW2RdKCkpLCBxLmRhdGUpLmRlc2MoImRhdGUgaW4gZm9ybWF0IFlZWVktTU1bLUREVEhILU1NLVNTLk1TXSBvciBpbiBzaG9ydGhhbmQiKSwKICAgICAgLy8gQSBkdXJhdGlvbiBvZiB0aW1lLgogICAgICBkdXJhdGlvblR5cGU6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdCguLi5PYmplY3Qua2V5cyhEVVJBVElPTl9UWVBFUykKICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiLmxlbmd0aCAtIGEubGVuZ3RoKQogICAgICAgICAgLm1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKSksCiAgICAgIGR1cmF0aW9uOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocS5udW1iZXIsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmR1cmF0aW9uVHlwZSwgKGNvdW50LCBfLCB0KSA9PiBEVVJBVElPTl9UWVBFU1t0XS5tYXBVbml0cyh4ID0+IHggKiBjb3VudCkpCiAgICAgICAgICAuc2VwQnkxKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKS5vcihwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSkpCiAgICAgICAgICAubWFwKGR1cmF0aW9ucyA9PiBkdXJhdGlvbnMucmVkdWNlKChwLCBjKSA9PiBwLnBsdXMoYykpKQogICAgICAgICAgLmRlc2MoImR1cmF0aW9uIGxpa2UgNGhyMm1pbiIpLAogICAgICAvLyBBIHJhdyBudWxsIHZhbHVlLgogICAgICByYXdOdWxsOiBfID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIm51bGwiKSwKICAgICAgLy8gU291cmNlIHBhcnNpbmcuCiAgICAgIHRhZ1NvdXJjZTogcSA9PiBxLnRhZy5tYXAodGFnID0+IFNvdXJjZXMudGFnKHRhZykpLAogICAgICBjc3ZTb3VyY2U6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJjc3YoIikuc2tpcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSksIHEuc3RyaW5nLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIpIiksIChfMSwgcGF0aCwgXzIpID0+IFNvdXJjZXMuY3N2KHBhdGgpKSwKICAgICAgbGlua0luY29taW5nU291cmNlOiBxID0+IHEubGluay5tYXAobGluayA9PiBTb3VyY2VzLmxpbmsobGluay5wYXRoLCB0cnVlKSksCiAgICAgIGxpbmtPdXRnb2luZ1NvdXJjZTogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIm91dGdvaW5nKCIpLnNraXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBxLmxpbmssIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIikiKSwgKF8xLCBsaW5rLCBfMikgPT4gU291cmNlcy5saW5rKGxpbmsucGF0aCwgZmFsc2UpKSwKICAgICAgZm9sZGVyU291cmNlOiBxID0+IHEuc3RyaW5nLm1hcChzdHIgPT4gU291cmNlcy5mb2xkZXIoc3RyKSksCiAgICAgIHBhcmVuc1NvdXJjZTogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIigiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuc291cmNlLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLCAoXzEsIF8yLCBmaWVsZCwgXzMsIF80KSA9PiBmaWVsZCksCiAgICAgIG5lZ2F0ZVNvdXJjZTogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLSIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIhIikpLCBxLmF0b21Tb3VyY2UsIChfLCBzb3VyY2UpID0+IFNvdXJjZXMubmVnYXRlKHNvdXJjZSkpLAogICAgICBhdG9tU291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocS5wYXJlbnNTb3VyY2UsIHEubmVnYXRlU291cmNlLCBxLmxpbmtPdXRnb2luZ1NvdXJjZSwgcS5saW5rSW5jb21pbmdTb3VyY2UsIHEuZm9sZGVyU291cmNlLCBxLnRhZ1NvdXJjZSwgcS5jc3ZTb3VyY2UpLAogICAgICBiaW5hcnlPcFNvdXJjZTogcSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5hdG9tU291cmNlLCBxLmJpbmFyeUJvb2xlYW5PcC5tYXAocyA9PiBzKSwgU291cmNlcy5iaW5hcnlPcCksCiAgICAgIHNvdXJjZTogcSA9PiBxLmJpbmFyeU9wU291cmNlLAogICAgICAvLyBGaWVsZCBwYXJzaW5nLgogICAgICB2YXJpYWJsZUZpZWxkOiBxID0+IHEuaWRlbnRpZmllcgogICAgICAgICAgLmNoYWluKHIgPT4gewogICAgICAgICAgaWYgKEtFWVdPUkRTLmluY2x1ZGVzKHIudG9VcHBlckNhc2UoKSkpIHsKICAgICAgICAgICAgICByZXR1cm4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmZhaWwoIlZhcmlhYmxlIGZpZWxkcyBjYW5ub3QgYmUgYSBrZXl3b3JkICgiICsgS0VZV09SRFMuam9pbigiIG9yICIpICsgIikiKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHJldHVybiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3VjY2VlZChGaWVsZHMudmFyaWFibGUocikpOwogICAgICAgICAgfQogICAgICB9KQogICAgICAgICAgLmRlc2MoInZhcmlhYmxlIiksCiAgICAgIG51bWJlckZpZWxkOiBxID0+IHEubnVtYmVyLm1hcCh2YWwgPT4gRmllbGRzLmxpdGVyYWwodmFsKSkuZGVzYygibnVtYmVyIiksCiAgICAgIHN0cmluZ0ZpZWxkOiBxID0+IHEuc3RyaW5nLm1hcCh2YWwgPT4gRmllbGRzLmxpdGVyYWwodmFsKSkuZGVzYygic3RyaW5nIiksCiAgICAgIGJvb2xGaWVsZDogcSA9PiBxLmJvb2wubWFwKHZhbCA9PiBGaWVsZHMubGl0ZXJhbCh2YWwpKS5kZXNjKCJib29sZWFuIiksCiAgICAgIGRhdGVGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoImRhdGUoIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmRhdGVQbHVzLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLCAocHJlZml4LCBfMSwgZGF0ZSwgXzIsIHBvc3RmaXgpID0+IEZpZWxkcy5saXRlcmFsKGRhdGUpKS5kZXNjKCJkYXRlIiksCiAgICAgIGR1cmF0aW9uRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJkdXIoIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmR1cmF0aW9uLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLCAocHJlZml4LCBfMSwgZHVyLCBfMiwgcG9zdGZpeCkgPT4gRmllbGRzLmxpdGVyYWwoZHVyKSkuZGVzYygiZHVyYXRpb24iKSwKICAgICAgbnVsbEZpZWxkOiBxID0+IHEucmF3TnVsbC5tYXAoXyA9PiBGaWVsZHMuTlVMTCksCiAgICAgIGxpbmtGaWVsZDogcSA9PiBxLmxpbmsubWFwKGYgPT4gRmllbGRzLmxpdGVyYWwoZikpLAogICAgICBsaXN0RmllbGQ6IHEgPT4gcS5maWVsZAogICAgICAgICAgLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSkKICAgICAgICAgIC53cmFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIlsiKS5za2lwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UudGhlbihwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJdIikpKQogICAgICAgICAgLm1hcChsID0+IEZpZWxkcy5saXN0KGwpKQogICAgICAgICAgLmRlc2MoImxpc3QgKCdbMSwgMiwgM10nKSIpLAogICAgICBvYmplY3RGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHEuaWRlbnRpZmllci5vcihxLnN0cmluZyksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIjoiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcS5maWVsZCwgKG5hbWUsIF9zZXAsIHZhbHVlKSA9PiB7CiAgICAgICAgICByZXR1cm4geyBuYW1lLCB2YWx1ZSB9OwogICAgICB9KQogICAgICAgICAgLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSkKICAgICAgICAgIC53cmFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoInsiKS5za2lwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UudGhlbihwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJ9IikpKQogICAgICAgICAgLm1hcCh2YWxzID0+IHsKICAgICAgICAgIGxldCByZXMgPSB7fTsKICAgICAgICAgIGZvciAobGV0IGVudHJ5IG9mIHZhbHMpCiAgICAgICAgICAgICAgcmVzW2VudHJ5Lm5hbWVdID0gZW50cnkudmFsdWU7CiAgICAgICAgICByZXR1cm4gRmllbGRzLm9iamVjdChyZXMpOwogICAgICB9KQogICAgICAgICAgLmRlc2MoIm9iamVjdCAoJ3sgYTogMSwgYjogMiB9JykiKSwKICAgICAgYXRvbUlubGluZUZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocS5kYXRlLCBxLmR1cmF0aW9uLm1hcChkID0+IG5vcm1hbGl6ZUR1cmF0aW9uKGQpKSwgcS5zdHJpbmcsIHEudGFnLCBxLmVtYmVkTGluaywgcS5ib29sLCBxLm51bWJlciwgcS5yYXdOdWxsKSwKICAgICAgaW5saW5lRmllbGRMaXN0OiBxID0+IHEuYXRvbUlubGluZUZpZWxkLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKS5sb29rYWhlYWQocS5hdG9tSW5saW5lRmllbGQpKSwKICAgICAgaW5saW5lRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHEuYXRvbUlubGluZUZpZWxkLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSksIHEuaW5saW5lRmllbGRMaXN0LCAoZiwgX3MsIGwpID0+IFtmXS5jb25jYXQobCkpLCBxLmF0b21JbmxpbmVGaWVsZCksCiAgICAgIGF0b21GaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KAogICAgICAvLyBQbGFjZSBlbWJlZCBsaW5rcyBhYm92ZSBuZWdhdGVkIGZpZWxkcyBhcyB0aGV5IGFyZSB0aGUgc3BlY2lhbCBwYXJzZXIgY2FzZSAnIVtbdGhpbmddXScgYW5kIGFyZSBnZW5lcmFsbHkgdW5hbWJpZ2lvdXMuCiAgICAgIHEuZW1iZWRMaW5rLm1hcChsID0+IEZpZWxkcy5saXRlcmFsKGwpKSwgcS5uZWdhdGVkRmllbGQsIHEubGlua0ZpZWxkLCBxLmxpc3RGaWVsZCwgcS5vYmplY3RGaWVsZCwgcS5sYW1iZGFGaWVsZCwgcS5wYXJlbnNGaWVsZCwgcS5ib29sRmllbGQsIHEubnVtYmVyRmllbGQsIHEuc3RyaW5nRmllbGQsIHEuZGF0ZUZpZWxkLCBxLmR1cmF0aW9uRmllbGQsIHEubnVsbEZpZWxkLCBxLnZhcmlhYmxlRmllbGQpLAogICAgICBpbmRleEZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocS5hdG9tRmllbGQsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocS5kb3RQb3N0Zml4LCBxLmluZGV4UG9zdGZpeCwgcS5mdW5jdGlvblBvc3RmaXgpLm1hbnkoKSwgKG9iaiwgcG9zdGZpeGVzKSA9PiB7CiAgICAgICAgICBsZXQgcmVzdWx0ID0gb2JqOwogICAgICAgICAgZm9yIChsZXQgcG9zdCBvZiBwb3N0Zml4ZXMpIHsKICAgICAgICAgICAgICBzd2l0Y2ggKHBvc3QudHlwZSkgewogICAgICAgICAgICAgICAgICBjYXNlICJkb3QiOgogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gRmllbGRzLmluZGV4KHJlc3VsdCwgRmllbGRzLmxpdGVyYWwocG9zdC5maWVsZCkpOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIGNhc2UgImluZGV4IjoKICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZpZWxkcy5pbmRleChyZXN1bHQsIHBvc3QuZmllbGQpOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIGNhc2UgImZ1bmN0aW9uIjoKICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZpZWxkcy5mdW5jKHJlc3VsdCwgcG9zdC5maWVsZHMpOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgfSksCiAgICAgIG5lZ2F0ZWRGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiEiKSwgcS5pbmRleEZpZWxkLCAoXywgZmllbGQpID0+IEZpZWxkcy5uZWdhdGUoZmllbGQpKS5kZXNjKCJuZWdhdGVkIGZpZWxkIiksCiAgICAgIHBhcmVuc0ZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKCIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcS5maWVsZCwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIikiKSwgKF8xLCBfMiwgZmllbGQsIF8zLCBfNCkgPT4gZmllbGQpLAogICAgICBsYW1iZGFGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHEuaWRlbnRpZmllcgogICAgICAgICAgLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSkKICAgICAgICAgIC53cmFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIigiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiPT4iKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcS5maWVsZCwgKGlkZW50LCBfaWdub3JlLCB2YWx1ZSkgPT4gewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImxhbWJkYSIsIGFyZ3VtZW50czogaWRlbnQsIHZhbHVlIH07CiAgICAgIH0pLAogICAgICBkb3RQb3N0Zml4OiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLiIpLCBxLmlkZW50aWZpZXIsIChfLCBmaWVsZCkgPT4gewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImRvdCIsIGZpZWxkOiBmaWVsZCB9OwogICAgICB9KSwKICAgICAgaW5kZXhQb3N0Zml4OiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiWyIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcS5maWVsZCwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIl0iKSwgKF8sIF8yLCBmaWVsZCwgXzMsIF80KSA9PiB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiaW5kZXgiLCBmaWVsZCB9OwogICAgICB9KSwKICAgICAgZnVuY3Rpb25Qb3N0Zml4OiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKCIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcS5maWVsZC5zZXBCeShwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSkpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLCAoXywgXzEsIGZpZWxkcywgXzIsIF8zKSA9PiB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZnVuY3Rpb24iLCBmaWVsZHMgfTsKICAgICAgfSksCiAgICAgIC8vIFRoZSBwcmVjZWRlbmNlIGhpZXJhcmNoeSBvZiBvcGVyYXRvcnMgLSBtdWx0aXBseS9kaXZpZGUsIGFkZC9zdWJ0cmFjdCwgY29tcGFyZSwgYW5kIHRoZW4gYm9vbGVhbiBvcGVyYXRpb25zLgogICAgICBiaW5hcnlNdWxEaXZGaWVsZDogcSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5pbmRleEZpZWxkLCBxLmJpbmFyeU11bERpdiwgRmllbGRzLmJpbmFyeU9wKSwKICAgICAgYmluYXJ5UGx1c01pbnVzRmllbGQ6IHEgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuYmluYXJ5TXVsRGl2RmllbGQsIHEuYmluYXJ5UGx1c01pbnVzLCBGaWVsZHMuYmluYXJ5T3ApLAogICAgICBiaW5hcnlDb21wYXJlRmllbGQ6IHEgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuYmluYXJ5UGx1c01pbnVzRmllbGQsIHEuYmluYXJ5Q29tcGFyZU9wLCBGaWVsZHMuYmluYXJ5T3ApLAogICAgICBiaW5hcnlCb29sZWFuRmllbGQ6IHEgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuYmluYXJ5Q29tcGFyZUZpZWxkLCBxLmJpbmFyeUJvb2xlYW5PcCwgRmllbGRzLmJpbmFyeU9wKSwKICAgICAgYmluYXJ5T3BGaWVsZDogcSA9PiBxLmJpbmFyeUJvb2xlYW5GaWVsZCwKICAgICAgZmllbGQ6IHEgPT4gcS5iaW5hcnlPcEZpZWxkLAogIH0pOwoKICAvKiogUGFyc2UgaW5saW5lIGZpZWxkcyBhbmQgb3RoZXIgZW1iZWRkZWQgbWV0YWRhdGEgaW4gYSBsaW5lLiAqLwogIC8qKiBUaGUgd3JhcHBlciBjaGFyYWN0ZXJzIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIGFuIGlubGluZSBmaWVsZC4gKi8KICBjb25zdCBJTkxJTkVfRklFTERfV1JBUFBFUlMgPSBPYmplY3QuZnJlZXplKHsKICAgICAgIlsiOiAiXSIsCiAgICAgICIoIjogIikiLAogIH0pOwogIC8qKgogICAqIEZpbmQgYSBtYXRjaGluZyBjbG9zaW5nIGJyYWNrZXQgdGhhdCBvY2N1cnMgYXQgb3IgYWZ0ZXIgYHN0YXJ0YCwgcmVzcGVjdGluZyBuZXN0aW5nIGFuZCBlc2NhcGVzLiBJZiBmb3VuZCwKICAgKiByZXR1cm5zIHRoZSB2YWx1ZSBjb250YWluZWQgd2l0aGluIGFuZCB0aGUgc3RyaW5nIGluZGV4IGFmdGVyIHRoZSBlbmQgb2YgdGhlIHZhbHVlLgogICAqLwogIGZ1bmN0aW9uIGZpbmRDbG9zaW5nKGxpbmUsIHN0YXJ0LCBvcGVuLCBjbG9zZSkgewogICAgICBsZXQgbmVzdGluZyA9IDA7CiAgICAgIGxldCBlc2NhcGVkID0gZmFsc2U7CiAgICAgIGZvciAobGV0IGluZGV4ID0gc3RhcnQ7IGluZGV4IDwgbGluZS5sZW5ndGg7IGluZGV4KyspIHsKICAgICAgICAgIGxldCBjaGFyID0gbGluZS5jaGFyQXQoaW5kZXgpOwogICAgICAgICAgLy8gQWxsb3dzIGZvciBkb3VibGUgZXNjYXBlcyBsaWtlICdcXCcgdG8gYmUgcmVuZGVyZWQgbm9ybWFsbHkuCiAgICAgICAgICBpZiAoY2hhciA9PSAiXFwiKSB7CiAgICAgICAgICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkOwogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgLy8gSWYgZXNjYXBlZCwgaWdub3JlIHRoZSBuZXh0IGNoYXJhY3RlciBmb3IgY29tcHV0aW5nIG5lc3RpbmcsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCBpdCBpcy4KICAgICAgICAgIGlmIChlc2NhcGVkKSB7CiAgICAgICAgICAgICAgZXNjYXBlZCA9IGZhbHNlOwogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgaWYgKGNoYXIgPT0gb3BlbikKICAgICAgICAgICAgICBuZXN0aW5nKys7CiAgICAgICAgICBlbHNlIGlmIChjaGFyID09IGNsb3NlKQogICAgICAgICAgICAgIG5lc3RpbmctLTsKICAgICAgICAgIC8vIE9ubHkgb2NjdXJzIGlmIHdlIGFyZSBvbiBhIGNsb3NlIGNoYXJhY3RlciBhbmQgdHJoZXJlIGlzIG5vIG1vcmUgbmVzdGluZy4KICAgICAgICAgIGlmIChuZXN0aW5nIDwgMCkKICAgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbGluZS5zdWJzdHJpbmcoc3RhcnQsIGluZGV4KS50cmltKCksIGVuZEluZGV4OiBpbmRleCArIDEgfTsKICAgICAgICAgIGVzY2FwZWQgPSBmYWxzZTsKICAgICAgfQogICAgICByZXR1cm4gdW5kZWZpbmVkOwogIH0KICAvKiogRmluZCB0aGUgJzo6JyBzZXBhcmF0b3IgaW4gYW4gaW5saW5lIGZpZWxkLiAqLwogIGZ1bmN0aW9uIGZpbmRTZXBhcmF0b3IobGluZSwgc3RhcnQpIHsKICAgICAgbGV0IHNlcCA9IGxpbmUuaW5kZXhPZigiOjoiLCBzdGFydCk7CiAgICAgIGlmIChzZXAgPCAwKQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgcmV0dXJuIHsga2V5OiBsaW5lLnN1YnN0cmluZyhzdGFydCwgc2VwKS50cmltKCksIHZhbHVlSW5kZXg6IHNlcCArIDIgfTsKICB9CiAgLyoqIFRyeSB0byBjb21wbGV0ZWx5IHBhcnNlIGFuIGlubGluZSBmaWVsZCBzdGFydGluZyBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24uIEFzc3VlbXMgYHN0YXJ0YCBpcyBvbiBhIHdyYXBwaW5nIGNoYXJhY3Rlci4gKi8KICBmdW5jdGlvbiBmaW5kU3BlY2lmaWNJbmxpbmVGaWVsZChsaW5lLCBzdGFydCkgewogICAgICBsZXQgb3BlbiA9IGxpbmUuY2hhckF0KHN0YXJ0KTsKICAgICAgbGV0IGtleSA9IGZpbmRTZXBhcmF0b3IobGluZSwgc3RhcnQgKyAxKTsKICAgICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgLy8gRmFpbCB0aGUgbWF0Y2ggaWYgd2UgZmluZCBhbnkgc2VwYXJhdG9yIGNoYXJhY3RlcnMgKG5vdCBhbGxvd2VkIGluIGtleXMpLgogICAgICBmb3IgKGxldCBzZXAgb2YgT2JqZWN0LmtleXMoSU5MSU5FX0ZJRUxEX1dSQVBQRVJTKS5jb25jYXQoT2JqZWN0LnZhbHVlcyhJTkxJTkVfRklFTERfV1JBUFBFUlMpKSkgewogICAgICAgICAgaWYgKGtleS5rZXkuaW5jbHVkZXMoc2VwKSkKICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICB9CiAgICAgIGxldCB2YWx1ZSA9IGZpbmRDbG9zaW5nKGxpbmUsIGtleS52YWx1ZUluZGV4LCBvcGVuLCBJTkxJTkVfRklFTERfV1JBUFBFUlNbb3Blbl0pOwogICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkKICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgIHJldHVybiB7CiAgICAgICAgICBrZXk6IGtleS5rZXksCiAgICAgICAgICB2YWx1ZTogdmFsdWUudmFsdWUsCiAgICAgICAgICBzdGFydDogc3RhcnQsCiAgICAgICAgICBzdGFydFZhbHVlOiBrZXkudmFsdWVJbmRleCwKICAgICAgICAgIGVuZDogdmFsdWUuZW5kSW5kZXgsCiAgICAgICAgICB3cmFwcGluZzogb3BlbiwKICAgICAgfTsKICB9CiAgLyoqIFBhcnNlIGEgdGV4dHVhbCBpbmxpbmUgZmllbGQgdmFsdWUgaW50byBzb21ldGhpbmcgd2UgY2FuIHdvcmsgd2l0aC4gKi8KICBmdW5jdGlvbiBwYXJzZUlubGluZVZhbHVlKHZhbHVlKSB7CiAgICAgIC8vIEVtcHR5IGlubGluZSB2YWx1ZXMgKGkuZS4sIG5vIHRleHQpIHNob3VsZCBtYXAgdG8gbnVsbCB0byBtYXRjaCBsb25nLXRlcm0gRGF0YXZpZXcgc2VtYW50aWNzLgogICAgICAvLyBOdWxsIGlzIGFsc28gYSBtb3JlIHVuaXZlcnNhbCB0eXBlIHRvIGRlYWwgd2l0aCB0aGFuIHN0cmluZ3MsIHNpbmNlIGFsbCBmdW5jdGlvbnMgYWNjZXB0IG51bGxzLgogICAgICBpZiAodmFsdWUudHJpbSgpID09ICIiKQogICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIC8vIFRoZSBzdHJpcHBlZCBsaXRlcmFsIGZpZWxkIHBhcnNlciB1bmRlcnN0YW5kcyBhbGwgb2YgdGhlIG5vbi1hcnJheS9ub24tb2JqZWN0IGZpZWxkcyBhbmQgY2FuIHBhcnNlIHRoZW0gZm9yIHVzLgogICAgICAvLyBJbmxpbmUgZmllbGQgb2JqZWN0cyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQ7IGlubGluZSBhcnJheSBvYmplY3RzIGhhdmUgdG8gYmUgaGFuZGxlZCBieSB0aGUgcGFyc2VyCiAgICAgIC8vIHNlcGFyYXRlbHkuCiAgICAgIGxldCBpbmxpbmUgPSBFWFBSRVNTSU9OLmlubGluZUZpZWxkLnBhcnNlKHZhbHVlKTsKICAgICAgaWYgKGlubGluZS5zdGF0dXMpCiAgICAgICAgICByZXR1cm4gaW5saW5lLnZhbHVlOwogICAgICBlbHNlCiAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgfQogIC8qKiBFeHRyYWN0cyBpbmxpbmUgZmllbGRzIG9mIHRoZSBmb3JtICdba2V5OjogdmFsdWVdJyBmcm9tIGEgbGluZSBvZiB0ZXh0LiBUaGlzIGlzIGRvbmUgaW4gYSByZWxhdGl2ZWx5CiAgICogInJvYnVzdCIgd2F5IHRvIGF2b2lkIGZhaWxpbmcgZHVlIHRvIGJhZCBuZXN0aW5nIG9yIG90aGVyIGludGVyZmVyaW5nIE1hcmtkb3duIHN5bWJvbHM6CiAgICoKICAgKiAtIExvb2sgZm9yIGFueSB3cmFwcGVycyAoJ1snIGFuZCAnKCcpIGluIHRoZSBsaW5lLCB0cnlpbmcgdG8gcGFyc2Ugd2hhdGV2ZXIgY29tZXMgYWZ0ZXIgaXQgYXMgYW4gaW5saW5lIGtleTo6LgogICAqIC0gSWYgc3VjY2Vzc2Z1bCwgc2NhbiB1bnRpbCB5b3UgZmluZCBhIG1hdGNoaW5nIGVuZCBicmFja2V0LCBhbmQgcGFyc2Ugd2hhdGV2ZXIgcmVtYWlucyBhcyBhbiBpbmxpbmUgdmFsdWUuCiAgICovCiAgZnVuY3Rpb24gZXh0cmFjdElubGluZUZpZWxkcyhsaW5lLCBpbmNsdWRlVGFza0ZpZWxkcyA9IGZhbHNlKSB7CiAgICAgIGxldCBmaWVsZHMgPSBbXTsKICAgICAgZm9yIChsZXQgd3JhcHBlciBvZiBPYmplY3Qua2V5cyhJTkxJTkVfRklFTERfV1JBUFBFUlMpKSB7CiAgICAgICAgICBsZXQgZm91bmRJbmRleCA9IGxpbmUuaW5kZXhPZih3cmFwcGVyKTsKICAgICAgICAgIHdoaWxlIChmb3VuZEluZGV4ID49IDApIHsKICAgICAgICAgICAgICBsZXQgcGFyc2VkRmllbGQgPSBmaW5kU3BlY2lmaWNJbmxpbmVGaWVsZChsaW5lLCBmb3VuZEluZGV4KTsKICAgICAgICAgICAgICBpZiAoIXBhcnNlZEZpZWxkKSB7CiAgICAgICAgICAgICAgICAgIGZvdW5kSW5kZXggPSBsaW5lLmluZGV4T2Yod3JhcHBlciwgZm91bmRJbmRleCArIDEpOwogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZmllbGRzLnB1c2gocGFyc2VkRmllbGQpOwogICAgICAgICAgICAgIGZvdW5kSW5kZXggPSBsaW5lLmluZGV4T2Yod3JhcHBlciwgcGFyc2VkRmllbGQuZW5kKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBpZiAoaW5jbHVkZVRhc2tGaWVsZHMpCiAgICAgICAgICBmaWVsZHMgPSBmaWVsZHMuY29uY2F0KGV4dHJhY3RTcGVjaWFsVGFza0ZpZWxkcyhsaW5lKSk7CiAgICAgIGZpZWxkcy5zb3J0KChhLCBiKSA9PiBhLnN0YXJ0IC0gYi5zdGFydCk7CiAgICAgIGxldCBmaWx0ZXJlZEZpZWxkcyA9IFtdOwogICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpZWxkcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgaWYgKGkgPT0gMCB8fCBmaWx0ZXJlZEZpZWxkc1tmaWx0ZXJlZEZpZWxkcy5sZW5ndGggLSAxXS5lbmQgPCBmaWVsZHNbaV0uc3RhcnQpIHsKICAgICAgICAgICAgICBmaWx0ZXJlZEZpZWxkcy5wdXNoKGZpZWxkc1tpXSk7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIGZpbHRlcmVkRmllbGRzOwogIH0KICAvKiogVmFsaWRhdGVzIHRoYXQgYSByYXcgZmllbGQgbmFtZSBoYXMgYSB2YWxpZCBmb3JtLiAqLwogIGNvbnN0IEZVTExfTElORV9LRVlfUEFSVCA9IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cChuZXcgUmVnRXhwKGVtb2ppUmVnZXgoKSwgInUiKSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1swLTlccHtMZXR0ZXJ9XHdcc18vLV0rL3UpKQogICAgICAubWFueSgpCiAgICAgIC5tYXAocGFydHMgPT4gcGFydHMuam9pbigiIikpOwogIGNvbnN0IEZVTExfTElORV9LRVlfUEFSU0VSID0gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvW14wLTlcd1xwe0xldHRlcn1dKi91KQogICAgICAudGhlbihGVUxMX0xJTkVfS0VZX1BBUlQpCiAgICAgIC5za2lwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1tfXCp+YF0qL3UpKTsKICAvKiogQXR0ZW1wdCB0byBleHRyYWN0IGEgZnVsbC1saW5lIGZpZWxkIChLZXk6OiBWYWx1ZSBjb25zdW1pbmcgdGhlIGVudGlyZSBjb250ZW50IGxpbmUpLiAqLwogIGZ1bmN0aW9uIGV4dHJhY3RGdWxsTGluZUZpZWxkKHRleHQpIHsKICAgICAgbGV0IHNlcCA9IGZpbmRTZXBhcmF0b3IodGV4dCwgMCk7CiAgICAgIGlmICghc2VwKQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgLy8gV2UgbmVlZCB0byBwb3N0LXByb2Nlc3MgdGhlIGtleSB0byBkcm9wIHVubmVjZXNzYXJ5IG9wZW5pbmcgYW5ub3RhdGlvbnMgYXMgd2VsbCBhcwogICAgICAvLyBkcm9wIHN1cnJvdW5kaW5nIE1hcmtkb3duLgogICAgICBsZXQgcmVhbEtleSA9IEZVTExfTElORV9LRVlfUEFSU0VSLnBhcnNlKHNlcC5rZXkpOwogICAgICBpZiAoIXJlYWxLZXkuc3RhdHVzKQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgcmV0dXJuIHsKICAgICAgICAgIGtleTogcmVhbEtleS52YWx1ZSwKICAgICAgICAgIHZhbHVlOiB0ZXh0LnN1YnN0cmluZyhzZXAudmFsdWVJbmRleCkudHJpbSgpLAogICAgICAgICAgc3RhcnQ6IDAsCiAgICAgICAgICBzdGFydFZhbHVlOiBzZXAudmFsdWVJbmRleCwKICAgICAgICAgIGVuZDogdGV4dC5sZW5ndGgsCiAgICAgIH07CiAgfQogIGNvbnN0IENSRUFURURfREFURV9SRUdFWCA9IC9cdXsyNzk1fVxzKihcZHs0fS1cZHsyfS1cZHsyfSkvdTsKICBjb25zdCBEVUVfREFURV9SRUdFWCA9IC8oPzpcdXsxRjRDNX18XHV7MUY0QzZ9fFx1ezFGNUQzfVx1e0ZFMEZ9PylccyooXGR7NH0tXGR7Mn0tXGR7Mn0pL3U7CiAgY29uc3QgRE9ORV9EQVRFX1JFR0VYID0gL1x1ezI3MDV9XHMqKFxkezR9LVxkezJ9LVxkezJ9KS91OwogIGNvbnN0IFNDSEVEVUxFRF9EQVRFX1JFR0VYID0gL1tcdXsyM0YzfVx1ezIzMUJ9XVxzKihcZHs0fS1cZHsyfS1cZHsyfSkvdTsKICBjb25zdCBTVEFSVF9EQVRFX1JFR0VYID0gL1x1ezFGNkVCfVxzKihcZHs0fS1cZHsyfS1cZHsyfSkvdTsKICBjb25zdCBFTU9KSV9SRUdFWEVTID0gWwogICAgICB7IHJlZ2V4OiBDUkVBVEVEX0RBVEVfUkVHRVgsIGtleTogImNyZWF0ZWQiIH0sCiAgICAgIHsgcmVnZXg6IFNUQVJUX0RBVEVfUkVHRVgsIGtleTogInN0YXJ0IiB9LAogICAgICB7IHJlZ2V4OiBTQ0hFRFVMRURfREFURV9SRUdFWCwga2V5OiAic2NoZWR1bGVkIiB9LAogICAgICB7IHJlZ2V4OiBEVUVfREFURV9SRUdFWCwga2V5OiAiZHVlIiB9LAogICAgICB7IHJlZ2V4OiBET05FX0RBVEVfUkVHRVgsIGtleTogImNvbXBsZXRpb24iIH0sCiAgXTsKICAvKiogUGFyc2Ugc3BlY2lhbCBjb21wbGV0ZWQvZHVlL2RvbmUgdGFzayBmaWVsZHMgd2hpY2ggYXJlIG1hcmtlZCB2aWEgZW1vamkuICovCiAgZnVuY3Rpb24gZXh0cmFjdFNwZWNpYWxUYXNrRmllbGRzKGxpbmUpIHsKICAgICAgbGV0IHJlc3VsdHMgPSBbXTsKICAgICAgZm9yIChsZXQgeyByZWdleCwga2V5IH0gb2YgRU1PSklfUkVHRVhFUykgewogICAgICAgICAgY29uc3QgbWF0Y2ggPSByZWdleC5leGVjKGxpbmUpOwogICAgICAgICAgaWYgKCFtYXRjaCkKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIHJlc3VsdHMucHVzaCh7CiAgICAgICAgICAgICAga2V5LAogICAgICAgICAgICAgIHZhbHVlOiBtYXRjaFsxXSwKICAgICAgICAgICAgICBzdGFydDogbWF0Y2guaW5kZXgsCiAgICAgICAgICAgICAgc3RhcnRWYWx1ZTogbWF0Y2guaW5kZXggKyAxLAogICAgICAgICAgICAgIGVuZDogbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGgsCiAgICAgICAgICAgICAgd3JhcHBpbmc6ICJlbW9qaS1zaG9ydGhhbmQiLAogICAgICAgICAgfSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgfQoKICAvKiogQWxsIGV4dHJhY3RlZCBtYXJrZG93biBmaWxlIG1ldGFkYXRhIG9idGFpbmVkIGZyb20gYSBmaWxlLiAqLwogIGNsYXNzIFBhZ2VNZXRhZGF0YSB7CiAgICAgIC8qKiBUaGUgcGF0aCB0aGlzIGZpbGUgZXhpc3RzIGF0LiAqLwogICAgICBwYXRoOwogICAgICAvKiogT2JzaWRpYW4tcHJvdmlkZWQgZGF0ZSB0aGlzIHBhZ2Ugd2FzIGNyZWF0ZWQuICovCiAgICAgIGN0aW1lOwogICAgICAvKiogT2JzaWRpYW4tcHJvdmlkZWQgZGF0ZSB0aGlzIHBhZ2Ugd2FzIG1vZGlmaWVkLiAqLwogICAgICBtdGltZTsKICAgICAgLyoqIE9ic2lkaWFuLXByb3ZpZGVkIHNpemUgb2YgdGhpcyBwYWdlIGluIGJ5dGVzLiAqLwogICAgICBzaXplOwogICAgICAvKiogVGhlIGRheSBhc3NvY2lhdGVkIHdpdGggdGhpcyBwYWdlLCBpZiByZWxldmFudC4gKi8KICAgICAgZGF5OwogICAgICAvKiogVGhlIGZpcnN0IEgxL0gyIGhlYWRlciBpbiB0aGUgZmlsZS4gTWF5IG5vdCBleGlzdC4gKi8KICAgICAgdGl0bGU7CiAgICAgIC8qKiBBbGwgb2YgdGhlIGZpZWxkcyBjb250YWluZWQgaW4gdGhpcyBtYXJrZG93biBmaWxlIC0gYm90aCBmcm9udG1hdHRlciBBTkQgaW4tZmlsZSBsaW5rcy4gKi8KICAgICAgZmllbGRzOwogICAgICAvKiogQWxsIG9mIHRoZSBleGFjdCB0YWdzIChwcmVmaXhlZCB3aXRoICcjJykgaW4gdGhpcyBmaWxlIG92ZXJhbGwuICovCiAgICAgIHRhZ3M7CiAgICAgIC8qKiBBbGwgb2YgdGhlIGFsaWFzZXMgZGVmaW5lZCBmb3IgdGhpcyBmaWxlLiAqLwogICAgICBhbGlhc2VzOwogICAgICAvKiogQWxsIE9VVEdPSU5HIGxpbmtzIChpbmNsdWRpbmcgZW1iZWRzLCBoZWFkZXIgKyBibG9jayBsaW5rcykgaW4gdGhpcyBmaWxlLiAqLwogICAgICBsaW5rczsKICAgICAgLyoqIEFsbCBsaXN0IGl0ZW1zIGNvbnRhaW5lZCB3aXRoaW4gdGhpcyBwYWdlLiBGaWx0ZXIgZm9yIHRhc2tzIHRvIGdldCBqdXN0IHRhc2tzLiAqLwogICAgICBsaXN0czsKICAgICAgLyoqIFRoZSByYXcgZnJvbnRtYXR0ZXIgZm9yIHRoaXMgZG9jdW1lbnQuICovCiAgICAgIGZyb250bWF0dGVyOwogICAgICBjb25zdHJ1Y3RvcihwYXRoLCBpbml0KSB7CiAgICAgICAgICB0aGlzLnBhdGggPSBwYXRoOwogICAgICAgICAgdGhpcy5maWVsZHMgPSBuZXcgTWFwKCk7CiAgICAgICAgICB0aGlzLmZyb250bWF0dGVyID0ge307CiAgICAgICAgICB0aGlzLnRhZ3MgPSBuZXcgU2V0KCk7CiAgICAgICAgICB0aGlzLmFsaWFzZXMgPSBuZXcgU2V0KCk7CiAgICAgICAgICB0aGlzLmxpbmtzID0gW107CiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGluaXQpOwogICAgICAgICAgdGhpcy5saXN0cyA9ICh0aGlzLmxpc3RzIHx8IFtdKS5tYXAobCA9PiBuZXcgTGlzdEl0ZW0obCkpOwogICAgICB9CiAgICAgIC8qKiBDYW5vbmljYWxpemUgcmF3IGxpbmtzIGFuZCBvdGhlciBkYXRhIGluIHBhcnRpYWwgZGF0YSB3aXRoIG5vcm1hbGl6ZXJzLCByZXR1cm5pbmcgYSBjb21wbGV0ZWQgb2JqZWN0LiAqLwogICAgICBzdGF0aWMgY2Fub25pY2FsaXplKGRhdGEsIGxpbmtOb3JtYWxpemVyKSB7CiAgICAgICAgICAvLyBNdXRhdGUgdGhlIGRhdGEgZm9yIG5vdywgd2hpY2ggaXMgcHJvYmFibHkgYSBiYWQgaWRlYSBidXQuLi4gYWxsIHdlbGwuCiAgICAgICAgICBpZiAoZGF0YS5mcm9udG1hdHRlcikgewogICAgICAgICAgICAgIGRhdGEuZnJvbnRtYXR0ZXIgPSBWYWx1ZXMubWFwTGVhdmVzKGRhdGEuZnJvbnRtYXR0ZXIsIHQgPT4gVmFsdWVzLmlzTGluayh0KSA/IGxpbmtOb3JtYWxpemVyKHQpIDogdCk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoZGF0YS5maWVsZHMpIHsKICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgZGF0YS5maWVsZHMuZW50cmllcygpKSB7CiAgICAgICAgICAgICAgICAgIGRhdGEuZmllbGRzLnNldChrZXksIFZhbHVlcy5tYXBMZWF2ZXModmFsdWUsIHQgPT4gKFZhbHVlcy5pc0xpbmsodCkgPyBsaW5rTm9ybWFsaXplcih0KSA6IHQpKSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaWYgKGRhdGEubGlzdHMpIHsKICAgICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIGRhdGEubGlzdHMpIHsKICAgICAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIGl0ZW0uZmllbGRzLmVudHJpZXMoKSkgewogICAgICAgICAgICAgICAgICAgICAgaXRlbS5maWVsZHMuc2V0KGtleSwgdmFsdWUubWFwKHggPT4gVmFsdWVzLm1hcExlYXZlcyh4LCB0ID0+IChWYWx1ZXMuaXNMaW5rKHQpID8gbGlua05vcm1hbGl6ZXIodCkgOiB0KSkpKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChkYXRhLmxpbmtzKSB7CiAgICAgICAgICAgICAgZGF0YS5saW5rcyA9IGRhdGEubGlua3MubWFwKGwgPT4gbGlua05vcm1hbGl6ZXIobCkpOwogICAgICAgICAgfQogICAgICAgICAgLy8gVGhpcyBpcyBwcmV0dHkgdWdseSwgYnV0IGl0J3Mgbm90IHBvc3NpYmxlIHRvIG5vcm1hbGl6ZSBvbiB0aGUgd29ya2VyIHRocmVhZCB0aGF0IGRvZXMgcGFyc2luZy4KICAgICAgICAgIC8vIFRoZSBiZXN0IHdheSB0byBpbXByb3ZlIHRoaXMgaXMgdG8gaW5zdGVhZCBqdXN0IGNhbm9uaWNhbGl6ZSB0aGUgZW50aXJlIGRhdGEgb2JqZWN0OyBJIGNhbiB0cnkgdG8KICAgICAgICAgIC8vIG9wdGltaXplIGBWYWx1ZXMubWFwTGVhdmVzYCB0byBvbmx5IG11dGF0ZSBpZiBpdCBhY3R1YWxseSBjaGFuZ2VzIHRoaW5ncy4KICAgICAgICAgIHJldHVybiBuZXcgUGFnZU1ldGFkYXRhKGRhdGEucGF0aCwgZGF0YSk7CiAgICAgIH0KICAgICAgLyoqIFRoZSBuYW1lIChiYXNlZCBvbiBwYXRoKSBvZiB0aGlzIGZpbGUuICovCiAgICAgIG5hbWUoKSB7CiAgICAgICAgICByZXR1cm4gZ2V0RmlsZVRpdGxlKHRoaXMucGF0aCk7CiAgICAgIH0KICAgICAgLyoqIFRoZSBjb250YWluaW5nIGZvbGRlciAoYmFzZWQgb24gcGF0aCkgb2YgdGhpcyBmaWxlLiAqLwogICAgICBmb2xkZXIoKSB7CiAgICAgICAgICByZXR1cm4gZ2V0UGFyZW50Rm9sZGVyKHRoaXMucGF0aCk7CiAgICAgIH0KICAgICAgLyoqIFRoZSBleHRlbnNpb24gb2YgdGhpcyBmaWxlIChsaWtlbHkgJ21kJykuICovCiAgICAgIGV4dGVuc2lvbigpIHsKICAgICAgICAgIHJldHVybiBnZXRFeHRlbnNpb24odGhpcy5wYXRoKTsKICAgICAgfQogICAgICAvKiogUmV0dXJuIGEgc2V0IG9mIHRhZ3MgQU5EIGFsbCBvZiB0aGVpciBwYXJlbnQgdGFncyAoc28gI2hlbGxvL3llcyB3b3VsZCBiZWNvbWUgI2hlbGxvLCAjaGVsbG8veWVzKS4gKi8KICAgICAgZnVsbFRhZ3MoKSB7CiAgICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IFNldCgpOwogICAgICAgICAgZm9yIChsZXQgdGFnIG9mIHRoaXMudGFncykgewogICAgICAgICAgICAgIGZvciAobGV0IHN1YnRhZyBvZiBleHRyYWN0U3VidGFncyh0YWcpKQogICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKHN1YnRhZyk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9CiAgICAgIC8qKiBDb252ZXJ0IGFsbCBsaW5rcyBpbiB0aGlzIGZpbGUgdG8gZmlsZSBsaW5rcy4gKi8KICAgICAgZmlsZUxpbmtzKCkgewogICAgICAgICAgLy8gV2Ugd2FudCB0byBtYWtlIHRoZW0gZGlzdGluY3QsIGJ1dCB3aGVyZSBsaW5rcyBhcmUgbm90IHJhdyBsaW5rcyB3ZQogICAgICAgICAgLy8gbm93IGtlZXAgdGhlIGFkZGl0aW9uYWwgbWV0YWRhdGEuCiAgICAgICAgICBsZXQgZGlzdGluY3RMaW5rcyA9IG5ldyBTZXQodGhpcy5saW5rcyk7CiAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShkaXN0aW5jdExpbmtzKTsKICAgICAgfQogICAgICAvKiogTWFwIHRoaXMgbWV0YWRhdGEgdG8gYSBmdWxsIG9iamVjdDsgdXNlcyB0aGUgaW5kZXggZm9yIGFkZGl0aW9uYWwgZGF0YSBsb29rdXBzLiAgKi8KICAgICAgc2VyaWFsaXplKGluZGV4LCBjYWNoZSkgewogICAgICAgICAgLy8gQ29udmVydCBsaXN0IGl0ZW1zIHZpYSB0aGUgY2Fub25pY2FsaXphdGlvbiBjYWNoZS4KICAgICAgICAgIGxldCByZWFsQ2FjaGUgPSBjYWNoZSA/PyBuZXcgTGlzdFNlcmlhbGl6YXRpb25DYWNoZSh0aGlzLmxpc3RzKTsKICAgICAgICAgIGxldCByZXN1bHQgPSB7CiAgICAgICAgICAgICAgZmlsZTogewogICAgICAgICAgICAgICAgICBwYXRoOiB0aGlzLnBhdGgsCiAgICAgICAgICAgICAgICAgIGZvbGRlcjogdGhpcy5mb2xkZXIoKSwKICAgICAgICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lKCksCiAgICAgICAgICAgICAgICAgIGxpbms6IExpbmsuZmlsZSh0aGlzLnBhdGgpLAogICAgICAgICAgICAgICAgICBvdXRsaW5rczogdGhpcy5maWxlTGlua3MoKSwKICAgICAgICAgICAgICAgICAgaW5saW5rczogQXJyYXkuZnJvbShpbmRleC5saW5rcy5nZXRJbnZlcnNlKHRoaXMucGF0aCkpLm1hcChsID0+IExpbmsuZmlsZShsKSksCiAgICAgICAgICAgICAgICAgIGV0YWdzOiBBcnJheS5mcm9tKHRoaXMudGFncyksCiAgICAgICAgICAgICAgICAgIHRhZ3M6IEFycmF5LmZyb20odGhpcy5mdWxsVGFncygpKSwKICAgICAgICAgICAgICAgICAgYWxpYXNlczogQXJyYXkuZnJvbSh0aGlzLmFsaWFzZXMpLAogICAgICAgICAgICAgICAgICBsaXN0czogdGhpcy5saXN0cy5tYXAobCA9PiByZWFsQ2FjaGUuZ2V0KGwubGluZSkpLAogICAgICAgICAgICAgICAgICB0YXNrczogdGhpcy5saXN0cy5maWx0ZXIobCA9PiAhIWwudGFzaykubWFwKGwgPT4gcmVhbENhY2hlLmdldChsLmxpbmUpKSwKICAgICAgICAgICAgICAgICAgY3RpbWU6IHRoaXMuY3RpbWUsCiAgICAgICAgICAgICAgICAgIGNkYXk6IHN0cmlwVGltZSh0aGlzLmN0aW1lKSwKICAgICAgICAgICAgICAgICAgbXRpbWU6IHRoaXMubXRpbWUsCiAgICAgICAgICAgICAgICAgIG1kYXk6IHN0cmlwVGltZSh0aGlzLm10aW1lKSwKICAgICAgICAgICAgICAgICAgc2l6ZTogdGhpcy5zaXplLAogICAgICAgICAgICAgICAgICBzdGFycmVkOiBpbmRleC5zdGFycmVkLnN0YXJyZWQodGhpcy5wYXRoKSwKICAgICAgICAgICAgICAgICAgZnJvbnRtYXR0ZXI6IFZhbHVlcy5kZWVwQ29weSh0aGlzLmZyb250bWF0dGVyKSwKICAgICAgICAgICAgICAgICAgZXh0OiB0aGlzLmV4dGVuc2lvbigpLAogICAgICAgICAgICAgIH0sCiAgICAgICAgICB9OwogICAgICAgICAgLy8gQWRkIHRoZSBjdXJyZW50IGRheSBpZiBwcmVzZW50LgogICAgICAgICAgaWYgKHRoaXMuZGF5KQogICAgICAgICAgICAgIHJlc3VsdC5maWxlLmRheSA9IHRoaXMuZGF5OwogICAgICAgICAgLy8gVGhlbiBhcHBlbmQgdGhlIGNvbXB1dGVkIGZpZWxkcy4KICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiB0aGlzLmZpZWxkcy5lbnRyaWVzKCkpIHsKICAgICAgICAgICAgICBpZiAoa2V5IGluIHJlc3VsdCkKICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIERvbid0IGFsbG93IGZpZWxkcyB0byBvdmVycmlkZSBleGlzdGluZyBrZXlzLgogICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWU7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9CiAgfQogIC8qKiBBIGxpc3QgaXRlbSBpbnNpZGUgb2YgYSBsaXN0LiAqLwogIGNsYXNzIExpc3RJdGVtIHsKICAgICAgLyoqIFRoZSBzeW1ib2wgKCcqJywgJy0nLCAnMS4nKSB1c2VkIHRvIGRlZmluZSB0aGlzIGxpc3QgaXRlbS4gKi8KICAgICAgc3ltYm9sOwogICAgICAvKiogQSBsaW5rIHdoaWNoIHBvaW50cyB0byB0aGlzIHRhc2ssIG9yIHRvIHRoZSBjbG9zZXN0IGJsb2NrIHRoYXQgdGhpcyB0YXNrIGlzIGNvbnRhaW5lZCBpbi4gKi8KICAgICAgbGluazsKICAgICAgLyoqIEEgbGluayB0byB0aGUgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIHRoaXMgbGlzdCBlbGVtZW50OyBjb3VsZCBiZSBhIGZpbGUgaWYgdGhpcyBpcyBub3QgaW4gYSBzZWN0aW9uLiAqLwogICAgICBzZWN0aW9uOwogICAgICAvKiogVGhlIHRleHQgb2YgdGhpcyBsaXN0IGl0ZW0uIFRoaXMgbWF5IGJlIG11bHRpcGxlIGxpbmVzIG9mIG1hcmtkb3duLiAqLwogICAgICB0ZXh0OwogICAgICAvKiogVGhlIGxpbmUgdGhhdCB0aGlzIGxpc3QgaXRlbSBzdGFydHMgb24gaW4gdGhlIGZpbGUuICovCiAgICAgIGxpbmU7CiAgICAgIC8qKiBUaGUgbnVtYmVyIG9mIGxpbmVzIHRoYXQgZGVmaW5lIHRoaXMgbGlzdCBpdGVtLiAqLwogICAgICBsaW5lQ291bnQ7CiAgICAgIC8qKiBUaGUgbGluZSBudW1iZXIgZm9yIHRoZSBmaXJzdCBsaXN0IGl0ZW0gaW4gdGhlIGxpc3QgdGhpcyBpdGVtIGJlbG9uZ3MgdG8uICovCiAgICAgIGxpc3Q7CiAgICAgIC8qKiBBbnkgbGlua3MgY29udGFpbmVkIHdpdGhpbiB0aGlzIGxpc3QgaXRlbS4gKi8KICAgICAgbGlua3M7CiAgICAgIC8qKiBUaGUgdGFncyBjb250YWluZWQgd2l0aGluIHRoaXMgbGlzdCBpdGVtLiAqLwogICAgICB0YWdzOwogICAgICAvKiogVGhlIHJhdyBPYnNpZGlhbi1wcm92aWRlZCBwb3NpdGlvbiBmb3Igd2hlcmUgdGhpcyB0YXNrIGlzLiAqLwogICAgICBwb3NpdGlvbjsKICAgICAgLyoqIFRoZSBsaW5lIG51bWJlciBvZiB0aGUgcGFyZW50IGxpc3QgaXRlbSwgaWYgcHJlc2VudDsgaWYgdGhpcyBpcyB1bmRlZmluZWQsIHRoaXMgaXMgYSByb290IGl0ZW0uICovCiAgICAgIHBhcmVudDsKICAgICAgLyoqIFRoZSBsaW5lIG51bWJlcnMgb2YgY2hpbGRyZW4gb2YgdGhpcyBsaXN0IGl0ZW0uICovCiAgICAgIGNoaWxkcmVuOwogICAgICAvKiogVGhlIGJsb2NrIElEIGZvciB0aGlzIGl0ZW0sIGlmIG9uZSBpcyBwcmVzZW50LiAqLwogICAgICBibG9ja0lkOwogICAgICAvKiogQW55IGZpZWxkcyBkZWZpbmVkIGluIHRoaXMgbGlzdCBpdGVtLiBGb3IgdGFza3MsIHRoaXMgaW5jbHVkZXMgZmllbGRzIHVuZGVybmVhdGggdGhlIHRhc2suICovCiAgICAgIGZpZWxkczsKICAgICAgdGFzazsKICAgICAgY29uc3RydWN0b3IoaW5pdCkgewogICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBpbml0KTsKICAgICAgICAgIHRoaXMuZmllbGRzID0gdGhpcy5maWVsZHMgfHwgbmV3IE1hcCgpOwogICAgICAgICAgdGhpcy50YWdzID0gdGhpcy50YWdzIHx8IG5ldyBTZXQoKTsKICAgICAgICAgIHRoaXMuY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuIHx8IFtdOwogICAgICAgICAgdGhpcy5saW5rcyA9IHRoaXMubGlua3MgfHwgW107CiAgICAgIH0KICAgICAgaWQoKSB7CiAgICAgICAgICByZXR1cm4gYCR7dGhpcy5maWxlKCkucGF0aH0tJHt0aGlzLmxpbmV9YDsKICAgICAgfQogICAgICBmaWxlKCkgewogICAgICAgICAgcmV0dXJuIHRoaXMubGluay50b0ZpbGUoKTsKICAgICAgfQogICAgICBtYXJrZG93bigpIHsKICAgICAgICAgIGlmICh0aGlzLnRhc2spCiAgICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMuc3ltYm9sfSBbJHt0aGlzLnRhc2suY29tcGxldGVkID8gIngiIDogIiAifV0gJHt0aGlzLnRleHR9YDsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICByZXR1cm4gYCR7dGhpcy5zeW1ib2x9ICR7dGhpcy50ZXh0fWA7CiAgICAgIH0KICAgICAgY3JlYXRlZCgpIHsKICAgICAgICAgIHJldHVybiAodGhpcy5maWVsZHMuZ2V0KCJjcmVhdGVkIikgPz8gdGhpcy5maWVsZHMuZ2V0KCJjdGltZSIpID8/IHRoaXMuZmllbGRzLmdldCgiY2RheSIpKT8uWzBdOwogICAgICB9CiAgICAgIGR1ZSgpIHsKICAgICAgICAgIHJldHVybiAodGhpcy5maWVsZHMuZ2V0KCJkdWUiKSA/PyB0aGlzLmZpZWxkcy5nZXQoImR1ZXRpbWUiKSA/PyB0aGlzLmZpZWxkcy5nZXQoImR1ZWRheSIpKT8uWzBdOwogICAgICB9CiAgICAgIGNvbXBsZXRlZCgpIHsKICAgICAgICAgIHJldHVybiAodGhpcy5maWVsZHMuZ2V0KCJjb21wbGV0ZWQiKSA/PwogICAgICAgICAgICAgIHRoaXMuZmllbGRzLmdldCgiY29tcGxldGlvbiIpID8/CiAgICAgICAgICAgICAgdGhpcy5maWVsZHMuZ2V0KCJjb21wdGltZSIpID8/CiAgICAgICAgICAgICAgdGhpcy5maWVsZHMuZ2V0KCJjb21wZGF5IikpPy5bMF07CiAgICAgIH0KICAgICAgc3RhcnQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5maWVsZHMuZ2V0KCJzdGFydCIpPy5bMF07CiAgICAgIH0KICAgICAgc2NoZWR1bGVkKCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuZmllbGRzLmdldCgic2NoZWR1bGVkIik/LlswXTsKICAgICAgfQogICAgICAvKiogQ3JlYXRlIGFuIEFQSS1mcmllbmRseSBjb3B5IG9mIHRoaXMgbGlzdCBpdGVtLiBEZS1kdXBsaWNhdGlvbiBpcyBkb25lIHZpYSB0aGUgcHJvdmlkZWQgY2FjaGUuICovCiAgICAgIHNlcmlhbGl6ZShjYWNoZSkgewogICAgICAgICAgLy8gTWFwIGNoaWxkcmVuIHRvIHRoZWlyIHNlcmlhbGl6ZWQvZGUtZHVwbGljYXRlZCBlcXVpdmFsZW50cyByaWdodCBhd2F5LgogICAgICAgICAgbGV0IGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbi5tYXAobCA9PiBjYWNoZS5nZXQobCkpLmZpbHRlcigobCkgPT4gbCAhPT0gdW5kZWZpbmVkKTsKICAgICAgICAgIGxldCByZXN1bHQgPSB7CiAgICAgICAgICAgICAgc3ltYm9sOiB0aGlzLnN5bWJvbCwKICAgICAgICAgICAgICBsaW5rOiB0aGlzLmxpbmssCiAgICAgICAgICAgICAgc2VjdGlvbjogdGhpcy5zZWN0aW9uLAogICAgICAgICAgICAgIHRleHQ6IHRoaXMudGV4dCwKICAgICAgICAgICAgICB0YWdzOiBBcnJheS5mcm9tKHRoaXMudGFncyksCiAgICAgICAgICAgICAgbGluZTogdGhpcy5saW5lLAogICAgICAgICAgICAgIGxpbmVDb3VudDogdGhpcy5saW5lQ291bnQsCiAgICAgICAgICAgICAgbGlzdDogdGhpcy5saXN0LAogICAgICAgICAgICAgIG91dGxpbmtzOiBBcnJheS5mcm9tKHRoaXMubGlua3MpLAogICAgICAgICAgICAgIHBhdGg6IHRoaXMubGluay5wYXRoLAogICAgICAgICAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbiwKICAgICAgICAgICAgICB0YXNrOiAhIXRoaXMudGFzaywKICAgICAgICAgICAgICBhbm5vdGF0ZWQ6IHRoaXMuZmllbGRzLnNpemUgPiAwLAogICAgICAgICAgICAgIHBvc2l0aW9uOiBWYWx1ZXMuZGVlcENvcHkodGhpcy5wb3NpdGlvbiksCiAgICAgICAgICAgICAgc3VidGFza3M6IGNoaWxkcmVuLAogICAgICAgICAgICAgIHJlYWw6ICEhdGhpcy50YXNrLAogICAgICAgICAgICAgIGhlYWRlcjogdGhpcy5zZWN0aW9uLCAvLyBAZGVwcmVjYXRlZCwgdXNlICdpdGVtLnNlY3Rpb24nIGluc3RlYWQuCiAgICAgICAgICB9OwogICAgICAgICAgaWYgKHRoaXMucGFyZW50IHx8IHRoaXMucGFyZW50ID09PSAwKQogICAgICAgICAgICAgIHJlc3VsdC5wYXJlbnQgPSB0aGlzLnBhcmVudDsKICAgICAgICAgIGlmICh0aGlzLmJsb2NrSWQpCiAgICAgICAgICAgICAgcmVzdWx0LmJsb2NrSWQgPSB0aGlzLmJsb2NrSWQ7CiAgICAgICAgICBhZGRGaWVsZHModGhpcy5maWVsZHMsIHJlc3VsdCk7CiAgICAgICAgICBpZiAodGhpcy50YXNrKSB7CiAgICAgICAgICAgICAgcmVzdWx0LnN0YXR1cyA9IHRoaXMudGFzay5zdGF0dXM7CiAgICAgICAgICAgICAgcmVzdWx0LmNoZWNrZWQgPSB0aGlzLnRhc2suY2hlY2tlZDsKICAgICAgICAgICAgICByZXN1bHQuY29tcGxldGVkID0gdGhpcy50YXNrLmNvbXBsZXRlZDsKICAgICAgICAgICAgICByZXN1bHQuZnVsbHlDb21wbGV0ZWQgPSB0aGlzLnRhc2suZnVsbHlDb21wbGV0ZWQ7CiAgICAgICAgICAgICAgbGV0IGNyZWF0ZWQgPSB0aGlzLmNyZWF0ZWQoKSwgZHVlID0gdGhpcy5kdWUoKSwgY29tcGxldGVkID0gdGhpcy5jb21wbGV0ZWQoKSwgc3RhcnQgPSB0aGlzLnN0YXJ0KCksIHNjaGVkdWxlZCA9IHRoaXMuc2NoZWR1bGVkKCk7CiAgICAgICAgICAgICAgaWYgKGNyZWF0ZWQpCiAgICAgICAgICAgICAgICAgIHJlc3VsdC5jcmVhdGVkID0gVmFsdWVzLmRlZXBDb3B5KGNyZWF0ZWQpOwogICAgICAgICAgICAgIGlmIChkdWUpCiAgICAgICAgICAgICAgICAgIHJlc3VsdC5kdWUgPSBWYWx1ZXMuZGVlcENvcHkoZHVlKTsKICAgICAgICAgICAgICBpZiAoY29tcGxldGVkKQogICAgICAgICAgICAgICAgICByZXN1bHQuY29tcGxldGlvbiA9IFZhbHVlcy5kZWVwQ29weShjb21wbGV0ZWQpOwogICAgICAgICAgICAgIGlmIChzdGFydCkKICAgICAgICAgICAgICAgICAgcmVzdWx0LnN0YXJ0ID0gVmFsdWVzLmRlZXBDb3B5KHN0YXJ0KTsKICAgICAgICAgICAgICBpZiAoc2NoZWR1bGVkKQogICAgICAgICAgICAgICAgICByZXN1bHQuc2NoZWR1bGVkID0gVmFsdWVzLmRlZXBDb3B5KHNjaGVkdWxlZCk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9CiAgfQogIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIC8vIENvbnZlcnNpb24gLyBTZXJpYWxpemF0aW9uIFV0aWxpdGllcyAvLwogIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIC8qKiBEZS1kdXBsaWNhdGVzIGxpc3QgaXRlbXMgYWNyb3NzIHNlY3Rpb24gbWV0YWRhdGEgYW5kIHBhZ2UgbWV0YWRhdGEuICovCiAgY2xhc3MgTGlzdFNlcmlhbGl6YXRpb25DYWNoZSB7CiAgICAgIGxpc3RJdGVtczsKICAgICAgY2FjaGU7CiAgICAgIHNlZW47CiAgICAgIGNvbnN0cnVjdG9yKGxpc3RJdGVtcykgewogICAgICAgICAgdGhpcy5saXN0SXRlbXMgPSB7fTsKICAgICAgICAgIHRoaXMuY2FjaGUgPSB7fTsKICAgICAgICAgIHRoaXMuc2VlbiA9IG5ldyBTZXQoKTsKICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgbGlzdEl0ZW1zKQogICAgICAgICAgICAgIHRoaXMubGlzdEl0ZW1zW2l0ZW0ubGluZV0gPSBpdGVtOwogICAgICB9CiAgICAgIGdldChsaW5lbm8pIHsKICAgICAgICAgIGlmIChsaW5lbm8gaW4gdGhpcy5jYWNoZSkKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jYWNoZVtsaW5lbm9dOwogICAgICAgICAgZWxzZSBpZiAodGhpcy5zZWVuLmhhcyhsaW5lbm8pKSB7CiAgICAgICAgICAgICAgY29uc29sZS5sb2coYERhdGF2aWV3OiBFbmNvdW50ZXJlZCBhIGNpcmN1bGFyIGxpc3QgKGxpbmUgbnVtYmVyICR7bGluZW5vfTsgY2hpbGRyZW4gJHt0aGlzLmxpc3RJdGVtc1tsaW5lbm9dLmNoaWxkcmVuLmpvaW4oIiwgIil9KWApOwogICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgICAgICB9CiAgICAgICAgICB0aGlzLnNlZW4uYWRkKGxpbmVubyk7CiAgICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5saXN0SXRlbXNbbGluZW5vXS5zZXJpYWxpemUodGhpcyk7CiAgICAgICAgICB0aGlzLmNhY2hlW2xpbmVub10gPSByZXN1bHQ7CiAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9CiAgfQogIGZ1bmN0aW9uIGFkZEZpZWxkcyhmaWVsZHMsIHRhcmdldCkgewogICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZXNdIG9mIGZpZWxkcy5lbnRyaWVzKCkpIHsKICAgICAgICAgIGlmIChrZXkgaW4gdGFyZ2V0KQogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgdGFyZ2V0W2tleV0gPSB2YWx1ZXMubGVuZ3RoID09IDEgPyB2YWx1ZXNbMF0gOiB2YWx1ZXM7CiAgICAgIH0KICAgICAgcmV0dXJuIHRhcmdldDsKICB9CgogIC8qKiBDb21tb24gdXRpbGl0aWVzIGZvciBleHRyYWN0aW5nIHRhZ3MsIGxpbmtzLCBhbmQgb3RoZXIgYnVzaW5lc3MgZnJvbSBtZXRhZGF0YS4gKi8KICBjb25zdCBQT1RFTlRJQUxfVEFHX01BVENIRVIgPSAvI1teXHMsO1wuOiFcPyciYCgpXFtcXVx7XH1dKy9naXU7CiAgLyoqIEV4dHJhY3QgYWxsIHRhZ3MgZnJvbSB0aGUgZ2l2ZW4gc291cmNlIHN0cmluZy4gKi8KICBmdW5jdGlvbiBleHRyYWN0VGFncyQxKHNvdXJjZSkgewogICAgICBsZXQgcmVzdWx0ID0gbmV3IFNldCgpOwogICAgICBsZXQgbWF0Y2hlcyA9IHNvdXJjZS5tYXRjaEFsbChQT1RFTlRJQUxfVEFHX01BVENIRVIpOwogICAgICBmb3IgKGxldCBtYXRjaCBvZiBtYXRjaGVzKSB7CiAgICAgICAgICBsZXQgcGFyc2VkID0gRVhQUkVTU0lPTi50YWcucGFyc2UobWF0Y2hbMF0pOwogICAgICAgICAgaWYgKHBhcnNlZC5zdGF0dXMpCiAgICAgICAgICAgICAgcmVzdWx0LmFkZChwYXJzZWQudmFsdWUpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHQ7CiAgfQoKICAvKiogSW1wb3J0ZXIgZm9yIG1hcmtkb3duIGRvY3VtZW50cy4gKi8KICAvKiogRXh0cmFjdCBtYXJrZG93biBtZXRhZGF0YSBmcm9tIHRoZSBnaXZlbiBPYnNpZGlhbiBtYXJrZG93biBmaWxlLiAqLwogIGZ1bmN0aW9uIHBhcnNlUGFnZShwYXRoLCBjb250ZW50cywgc3RhdCwgbWV0YWRhdGEpIHsKICAgICAgbGV0IHRhZ3MgPSBuZXcgU2V0KCk7CiAgICAgIGxldCBhbGlhc2VzID0gbmV3IFNldCgpOwogICAgICBsZXQgZmllbGRzID0gbmV3IE1hcCgpOwogICAgICBsZXQgbGlua3MgPSBbXTsKICAgICAgLy8gRmlsZSB0YWdzLCBpbmNsdWRpbmcgZnJvbnQtbWF0dGVyIGFuZCBpbi1maWxlIHRhZ3MuCiAgICAgIChtZXRhZGF0YS50YWdzIHx8IFtdKS5mb3JFYWNoKHQgPT4gdGFncy5hZGQodC50YWcuc3RhcnRzV2l0aCgiIyIpID8gdC50YWcgOiAiIyIgKyB0LnRhZykpOwogICAgICAvLyBGcm9udC1tYXR0ZXIgZmlsZSB0YWdzLCBhbGlhc2VzLCBBTkQgZnJvbnRtYXR0ZXIgcHJvcGVydGllcy4KICAgICAgaWYgKG1ldGFkYXRhLmZyb250bWF0dGVyKSB7CiAgICAgICAgICBmb3IgKGxldCB0YWcgb2YgZXh0cmFjdFRhZ3MobWV0YWRhdGEuZnJvbnRtYXR0ZXIpKSB7CiAgICAgICAgICAgICAgaWYgKCF0YWcuc3RhcnRzV2l0aCgiIyIpKQogICAgICAgICAgICAgICAgICB0YWcgPSAiIyIgKyB0YWc7CiAgICAgICAgICAgICAgdGFncy5hZGQodGFnKTsKICAgICAgICAgIH0KICAgICAgICAgIGZvciAobGV0IGFsaWFzIG9mIGV4dHJhY3RBbGlhc2VzKG1ldGFkYXRhLmZyb250bWF0dGVyKSB8fCBbXSkKICAgICAgICAgICAgICBhbGlhc2VzLmFkZChhbGlhcyk7CiAgICAgICAgICBsZXQgZnJvbnRGaWVsZHMgPSBwYXJzZUZyb250bWF0dGVyKG1ldGFkYXRhLmZyb250bWF0dGVyKTsKICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhmcm9udEZpZWxkcykpIHsKICAgICAgICAgICAgICBpZiAoa2V5ID09ICJwb3NpdGlvbiIpCiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgIGFkZElubGluZUZpZWxkKGtleSwgdmFsdWUsIGZpZWxkcyk7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgLy8gQWRkIGZyb250bWF0dGVyIGxpbmtzIHRvIGxpbmtzLgogICAgICBpZiAobWV0YWRhdGEuZnJvbnRtYXR0ZXJMaW5rcykgewogICAgICAgICAgZm9yIChsZXQgcmF3TGluayBvZiBtZXRhZGF0YS5mcm9udG1hdHRlckxpbmtzIHx8IFtdKSB7CiAgICAgICAgICAgICAgY29uc3QgbGluayA9IExpbmsuaW5mZXIocmF3TGluay5saW5rLCBmYWxzZSwgcmF3TGluay5kaXNwbGF5VGV4dCk7CiAgICAgICAgICAgICAgbGlua3MucHVzaChsaW5rKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICAvLyBMaW5rcyBpbiBtZXRhZGF0YS4KICAgICAgY29uc3QgbGlua3NCeUxpbmUgPSB7fTsKICAgICAgZm9yIChsZXQgcmF3TGluayBvZiBtZXRhZGF0YS5saW5rcyB8fCBbXSkgewogICAgICAgICAgY29uc3QgbGluayA9IExpbmsuaW5mZXIocmF3TGluay5saW5rLCBmYWxzZSwgcmF3TGluay5kaXNwbGF5VGV4dCk7CiAgICAgICAgICBjb25zdCBsaW5lID0gcmF3TGluay5wb3NpdGlvbi5zdGFydC5saW5lOwogICAgICAgICAgbGlua3MucHVzaChsaW5rKTsKICAgICAgICAgIGlmICghKGxpbmUgaW4gbGlua3NCeUxpbmUpKQogICAgICAgICAgICAgIGxpbmtzQnlMaW5lW2xpbmVdID0gW2xpbmtdOwogICAgICAgICAgZWxzZQogICAgICAgICAgICAgIGxpbmtzQnlMaW5lW2xpbmVdLnB1c2gobGluayk7CiAgICAgIH0KICAgICAgLy8gRW1iZWQgTGlua3MgaW4gbWV0YWRhdGEuCiAgICAgIGZvciAobGV0IHJhd0VtYmVkIG9mIG1ldGFkYXRhLmVtYmVkcyB8fCBbXSkgewogICAgICAgICAgY29uc3QgbGluayA9IExpbmsuaW5mZXIocmF3RW1iZWQubGluaywgdHJ1ZSwgcmF3RW1iZWQuZGlzcGxheVRleHQpOwogICAgICAgICAgY29uc3QgbGluZSA9IHJhd0VtYmVkLnBvc2l0aW9uLnN0YXJ0LmxpbmU7CiAgICAgICAgICBsaW5rcy5wdXNoKGxpbmspOwogICAgICAgICAgaWYgKCEobGluZSBpbiBsaW5rc0J5TGluZSkpCiAgICAgICAgICAgICAgbGlua3NCeUxpbmVbbGluZV0gPSBbbGlua107CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgbGlua3NCeUxpbmVbbGluZV0ucHVzaChsaW5rKTsKICAgICAgfQogICAgICAvLyBNZXJnZSBmcm9udG1hdHRlciBmaWVsZHMgd2l0aCBwYXJzZWQgZmllbGRzLgogICAgICBsZXQgbWFya2Rvd25EYXRhID0gcGFyc2VNYXJrZG93bihwYXRoLCBjb250ZW50cy5zcGxpdCgiXG4iKSwgbWV0YWRhdGEsIGxpbmtzQnlMaW5lKTsKICAgICAgbWVyZ2VGaWVsZEdyb3VwcyhmaWVsZHMsIG1hcmtkb3duRGF0YS5maWVsZHMpOwogICAgICAvLyBTdHJpcCAicG9zaXRpb24iIGZyb20gZnJvbnRtYXR0ZXIgc2luY2UgaXQgaXMgT2JzaWRpYW4gZGV0ZXJtaW5lZC4KICAgICAgY29uc3QgZnJvbnRtYXR0ZXIgPSBtZXRhZGF0YS5mcm9udG1hdHRlciB8fCB7fTsKICAgICAgaWYgKGZyb250bWF0dGVyICYmICJwb3NpdGlvbiIgaW4gZnJvbnRtYXR0ZXIpCiAgICAgICAgICBkZWxldGUgZnJvbnRtYXR0ZXJbInBvc2l0aW9uIl07CiAgICAgIHJldHVybiBuZXcgUGFnZU1ldGFkYXRhKHBhdGgsIHsKICAgICAgICAgIHRhZ3MsCiAgICAgICAgICBhbGlhc2VzLAogICAgICAgICAgbGlua3MsCiAgICAgICAgICBsaXN0czogbWFya2Rvd25EYXRhLmxpc3RzLAogICAgICAgICAgZmllbGRzOiBmaW5hbGl6ZUlubGluZUZpZWxkcyhmaWVsZHMpLAogICAgICAgICAgZnJvbnRtYXR0ZXI6IGZyb250bWF0dGVyLAogICAgICAgICAgY3RpbWU6IERhdGVUaW1lLmZyb21NaWxsaXMoc3RhdC5jdGltZSksCiAgICAgICAgICBtdGltZTogRGF0ZVRpbWUuZnJvbU1pbGxpcyhzdGF0Lm10aW1lKSwKICAgICAgICAgIHNpemU6IHN0YXQuc2l6ZSwKICAgICAgICAgIGRheTogZmluZERhdGUocGF0aCwgZmllbGRzKSwKICAgICAgfSk7CiAgfQogIC8qKiBFeHRyYWN0IHRhZ3MgaW50ZWxsaWdlbnRseSBmcm9tIGZyb250bWF0dGVyLiBIYW5kbGVzIGFycmF5cywgbnVtYmVycywgYW5kIHN0cmluZ3MuICovCiAgZnVuY3Rpb24gZXh0cmFjdFRhZ3MobWV0YWRhdGEpIHsKICAgICAgbGV0IHRhZ0tleXMgPSBPYmplY3Qua2V5cyhtZXRhZGF0YSkuZmlsdGVyKHQgPT4gdC50b0xvd2VyQ2FzZSgpID09ICJ0YWdzIiB8fCB0LnRvTG93ZXJDYXNlKCkgPT0gInRhZyIpOwogICAgICByZXR1cm4gdGFnS2V5cwogICAgICAgICAgLm1hcChrID0+IHNwbGl0RnJvbnRtYXR0ZXJUYWdPckFsaWFzKG1ldGFkYXRhW2tdLCAvWyxcc10rLykpCiAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBwLmNvbmNhdChjKSwgW10pCiAgICAgICAgICAubWFwKHN0ciA9PiAoc3RyLnN0YXJ0c1dpdGgoIiMiKSA/IHN0ciA6ICIjIiArIHN0cikpOwogIH0KICAvKiogRXh0cmFjdCBhbGlhc2VzIGludGVsbGlnZW50bHkgZnJvbSBmcm9udG1hdHRlci4gSGFuZGxlcyBhcnJheXMsIG51bWJlcnMsIGFuZCBzdHJpbmdzLiAgKi8KICBmdW5jdGlvbiBleHRyYWN0QWxpYXNlcyhtZXRhZGF0YSkgewogICAgICBsZXQgYWxpYXNLZXlzID0gT2JqZWN0LmtleXMobWV0YWRhdGEpLmZpbHRlcih0ID0+IHQudG9Mb3dlckNhc2UoKSA9PSAiYWxpYXMiIHx8IHQudG9Mb3dlckNhc2UoKSA9PSAiYWxpYXNlcyIpOwogICAgICBjb25zdCByZXN1bHQgPSBbXTsKICAgICAgZm9yIChsZXQga2V5IG9mIGFsaWFzS2V5cykgewogICAgICAgICAgY29uc3QgdmFsdWUgPSBtZXRhZGF0YVtrZXldOwogICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkKICAgICAgICAgICAgICByZXN1bHQucHVzaCguLi52YWx1ZS5tYXAodiA9PiAoIiIgKyB2KS50cmltKCkpKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICByZXN1bHQucHVzaCguLi5zcGxpdEZyb250bWF0dGVyVGFnT3JBbGlhcyh2YWx1ZSwgLywvKSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdDsKICB9CiAgLyoqIFNwbGl0IGEgZnJvbnRtYXR0ZXIgbGlzdCBpbnRvIHNlcGFyYXRlIGVsZW1lbnRzOyBoYW5kbGVzIGFjdHVhbCBsaXN0cywgY29tbWEgc2VwYXJhdGVkIGxpc3RzLCBhbmQgc2luZ2xlIGVsZW1lbnRzLiAqLwogIGZ1bmN0aW9uIHNwbGl0RnJvbnRtYXR0ZXJUYWdPckFsaWFzKGRhdGEsIG9uKSB7CiAgICAgIGlmIChkYXRhID09IG51bGwgfHwgZGF0YSA9PSB1bmRlZmluZWQpCiAgICAgICAgICByZXR1cm4gW107CiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7CiAgICAgICAgICByZXR1cm4gZGF0YQogICAgICAgICAgICAgIC5maWx0ZXIocyA9PiAhIXMpCiAgICAgICAgICAgICAgLm1hcChzID0+IHNwbGl0RnJvbnRtYXR0ZXJUYWdPckFsaWFzKHMsIG9uKSkKICAgICAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBwLmNvbmNhdChjKSwgW10pOwogICAgICB9CiAgICAgIC8vIEZvcmNlIHRvIGEgc3RyaW5nIHRvIGhhbmRsZSBudW1iZXJzIGFuZCBzbyBvbi4KICAgICAgcmV0dXJuICgiIiArIGRhdGEpCiAgICAgICAgICAuc3BsaXQob24pCiAgICAgICAgICAuZmlsdGVyKHQgPT4gISF0KQogICAgICAgICAgLm1hcCh0ID0+IHQudHJpbSgpKQogICAgICAgICAgLmZpbHRlcih0ID0+IHQubGVuZ3RoID4gMCk7CiAgfQogIC8qKiBQYXJzZSByYXcgKG5ld2xpbmUtZGVsaW1pdGVkKSBtYXJrZG93biwgcmV0dXJuaW5nIGlubGluZSBmaWVsZHMsIGxpc3QgaXRlbXMsIGFuZCBvdGhlciBtZXRhZGF0YS4gKi8KICBmdW5jdGlvbiBwYXJzZU1hcmtkb3duKHBhdGgsIGNvbnRlbnRzLCBtZXRhZGF0YSwgbGlua3NCeUxpbmUpIHsKICAgICAgbGV0IGZpZWxkcyA9IG5ldyBNYXAoKTsKICAgICAgLy8gRXh0cmFjdCB0YXNrIGRhdGEgYW5kIGFwcGVuZCB0aGUgZ2xvYmFsIGRhdGEgZXh0cmFjdGVkIGZyb20gdGhlbSB0byBvdXIgZmllbGRzLgogICAgICBsZXQgW2xpc3RzLCBleHRyYURhdGFdID0gcGFyc2VMaXN0cyhwYXRoLCBjb250ZW50cywgbWV0YWRhdGEsIGxpbmtzQnlMaW5lKTsKICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVzXSBvZiBleHRyYURhdGEuZW50cmllcygpKSB7CiAgICAgICAgICBpZiAoIWZpZWxkcy5oYXMoa2V5KSkKICAgICAgICAgICAgICBmaWVsZHMuc2V0KGtleSwgdmFsdWVzKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICBmaWVsZHMuc2V0KGtleSwgZmllbGRzLmdldChrZXkpLmNvbmNhdCh2YWx1ZXMpKTsKICAgICAgfQogICAgICAvLyBUaGUgT2JzaWRpYW4gbWV0YWRhdGEgY2FjaGUgd2lsbCB0cmFjayBsaXN0IGVsZW1lbnRzIGluc2lkZSBvZiBvdGhlciBlbGVtZW50IGdyb3VwcyAobGlrZSBhbm5vdGF0aW9ucyBhbmQKICAgICAgLy8gY2FsbG91dHMpLi4uIHRoaXMgbWVhbnMgd2UgbWlnaHQgc2VlIG1ldGFkYXRhIHR3aWNlLCBzbyBza2lwIHRoZW0gbm93LiBWZXJ5IGFubm95aW5nLgogICAgICBjb25zdCBsaXN0TGluZXNUb1NraXAgPSBuZXcgU2V0KCk7CiAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaXN0cykgewogICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lLmxpbmVDb3VudDsgaSsrKQogICAgICAgICAgICAgIGxpc3RMaW5lc1RvU2tpcC5hZGQobGluZS5saW5lICsgaSk7CiAgICAgIH0KICAgICAgLy8gT25seSBwYXJzZSBoZWFkaW5nIGFuZCBwYXJhZ3JhcGggZWxlbWVudHMgZm9yIGlubGluZSBmaWVsZHM7IHdlIHdpbGwgcGFyc2UgbGlzdCBtZXRhZGF0YSBzZXBhcmF0ZWx5LgogICAgICBmb3IgKGxldCBzZWN0aW9uIG9mIG1ldGFkYXRhLnNlY3Rpb25zIHx8IFtdKSB7CiAgICAgICAgICBpZiAoc2VjdGlvbi50eXBlID09ICJsaXN0IiB8fCBzZWN0aW9uLnR5cGUgPT0gInJ1bGluZyIpCiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICBmb3IgKGxldCBsaW5lbm8gPSBzZWN0aW9uLnBvc2l0aW9uLnN0YXJ0LmxpbmU7IGxpbmVubyA8PSBzZWN0aW9uLnBvc2l0aW9uLmVuZC5saW5lOyBsaW5lbm8rKykgewogICAgICAgICAgICAgIGxldCBsaW5lID0gY29udGVudHNbbGluZW5vXTsKICAgICAgICAgICAgICBpZiAobGluZSA9PSB1bmRlZmluZWQgfHwgbGluZSA9PSBudWxsKQogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICBpZiAobGlzdExpbmVzVG9Ta2lwLmhhcyhsaW5lbm8pKQogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAvLyBGYXN0IGJhaWwtb3V0IGZvciBsaW5lcyB0aGF0IGFyZSB0b28gbG9uZyBvciBkbyBub3QgY29udGFpbiAnOjonLgogICAgICAgICAgICAgIGlmIChsaW5lLmxlbmd0aCA+IDMyNzY4IHx8ICFsaW5lLmluY2x1ZGVzKCI6OiIpKQogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICBsaW5lID0gbGluZS50cmltKCk7CiAgICAgICAgICAgICAgbGV0IGlubGluZUZpZWxkcyA9IGV4dHJhY3RJbmxpbmVGaWVsZHMobGluZSk7CiAgICAgICAgICAgICAgaWYgKGlubGluZUZpZWxkcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgIGZvciAobGV0IGlmaWVsZCBvZiBpbmxpbmVGaWVsZHMpCiAgICAgICAgICAgICAgICAgICAgICBhZGRSYXdJbmxpbmVGaWVsZChpZmllbGQsIGZpZWxkcyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICBsZXQgZnVsbExpbmUgPSBleHRyYWN0RnVsbExpbmVGaWVsZChsaW5lKTsKICAgICAgICAgICAgICAgICAgaWYgKGZ1bGxMaW5lKQogICAgICAgICAgICAgICAgICAgICAgYWRkUmF3SW5saW5lRmllbGQoZnVsbExpbmUsIGZpZWxkcyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiB7IGZpZWxkcywgbGlzdHMgfTsKICB9CiAgLy8gVE9ETzogQ29uc2lkZXIgdXNpbmcgYW4gYWN0dWFsIHBhcnNlciBpbiBsZWl1IG9mIGEgbW9yZSBleHBlbnNpdmUgcmVnZXguCiAgY29uc3QgTElTVF9JVEVNX1JFR0VYID0gL15bXHM+XSooXGQrXC58XGQrXCl8XCp8LXxcKylccyooXFsuezAsMX1cXSk/XHMqKC4qKSQvbXU7CiAgLyoqCiAgICogUGFyc2UgbGlzdCBpdGVtcyBmcm9tIHRoZSBwYWdlICsgbWV0YWRhdGEuIFRoaXMgcmVxdWlyZXMgc29tZSBhZGRpdGlvbmFsIHBhcnNpbmcgYWJvdmUgd2hhdGV2ZXIgT2JzaWRpYW4gcHJvdmlkZXMsCiAgICogc2luY2UgT2JzaWRpYW4gb25seSBnaXZlcyBsaW5lIG51bWJlcnMuCiAgICovCiAgZnVuY3Rpb24gcGFyc2VMaXN0cyhwYXRoLCBjb250ZW50LCBtZXRhZGF0YSwgbGlua3NCeUxpbmUpIHsKICAgICAgbGV0IGNhY2hlID0ge307CiAgICAgIC8vIFBsYWNlIGFsbCBvZiB0aGUgdmFsdWVzIGluIHRoZSBjYWNoZSBiZWZvcmUgcmVzb2x2aW5nIGNoaWxkcmVuICYgbWV0YWRhdGEgcmVsYXRpb25zaGlwcy4KICAgICAgZm9yIChsZXQgcmF3RWxlbWVudCBvZiBtZXRhZGF0YS5saXN0SXRlbXMgfHwgW10pIHsKICAgICAgICAgIC8vIE1hdGNoIG9uIHRoZSBmaXJzdCBsaW5lIHRvIGdldCB0aGUgc3ltYm9sIGFuZCBmaXJzdCBsaW5lIG9mIHRleHQuCiAgICAgICAgICBsZXQgcmF3TWF0Y2ggPSBMSVNUX0lURU1fUkVHRVguZXhlYyhjb250ZW50W3Jhd0VsZW1lbnQucG9zaXRpb24uc3RhcnQubGluZV0pOwogICAgICAgICAgaWYgKCFyYXdNYXRjaCkKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIC8vIEFuZCB0aGVuIHN0cmlwIHVubmVjZXNzYXJ5IHNwYWNpbmcgZnJvbSB0aGUgcmVtYWluaW5nIGxpbmVzLgogICAgICAgICAgbGV0IHRleHRQYXJ0cyA9IFtyYXdNYXRjaFszXV0KICAgICAgICAgICAgICAuY29uY2F0KGNvbnRlbnQuc2xpY2UocmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lICsgMSwgcmF3RWxlbWVudC5wb3NpdGlvbi5lbmQubGluZSArIDEpKQogICAgICAgICAgICAgIC5tYXAodCA9PiB0LnRyaW0oKSk7CiAgICAgICAgICBsZXQgdGV4dFdpdGhOZXdsaW5lID0gdGV4dFBhcnRzLmpvaW4oIlxuIik7CiAgICAgICAgICBsZXQgdGV4dE5vTmV3bGluZSA9IHRleHRQYXJ0cy5qb2luKCIgIik7CiAgICAgICAgICAvLyBGaW5kIHRoZSBsaXN0IHRoYXQgd2UgYXJlIGEgcGFydCBvZiBieSBsaW5lLgogICAgICAgICAgbGV0IGNvbnRhaW5pbmdMaXN0SWQgPSAobWV0YWRhdGEuc2VjdGlvbnMgfHwgW10pLmZpbmRJbmRleChzID0+IHMudHlwZSA9PSAibGlzdCIgJiYKICAgICAgICAgICAgICBzLnBvc2l0aW9uLnN0YXJ0LmxpbmUgPD0gcmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lICYmCiAgICAgICAgICAgICAgcy5wb3NpdGlvbi5lbmQubGluZSA+PSByYXdFbGVtZW50LnBvc2l0aW9uLnN0YXJ0LmxpbmUpOwogICAgICAgICAgLy8gRmluZCB0aGUgc2VjdGlvbiB3ZSBiZWxvbmcgdG8gYXMgd2VsbC4KICAgICAgICAgIGxldCBzZWN0aW9uTmFtZSA9IGZpbmRQcmV2aW91c0hlYWRlcihyYXdFbGVtZW50LnBvc2l0aW9uLnN0YXJ0LmxpbmUsIG1ldGFkYXRhLmhlYWRpbmdzIHx8IFtdKTsKICAgICAgICAgIGxldCBzZWN0aW9uTGluayA9IHNlY3Rpb25OYW1lID09PSB1bmRlZmluZWQgPyBMaW5rLmZpbGUocGF0aCkgOiBMaW5rLmhlYWRlcihwYXRoLCBzZWN0aW9uTmFtZSk7CiAgICAgICAgICBsZXQgY2xvc2VzdExpbmsgPSByYXdFbGVtZW50LmlkID09PSB1bmRlZmluZWQgPyBzZWN0aW9uTGluayA6IExpbmsuYmxvY2socGF0aCwgcmF3RWxlbWVudC5pZCk7CiAgICAgICAgICAvLyBHYXRoZXIgYW55IGxpbmtzIHRoYXQgb2NjdXIgb24gdGhlIHNhbWUgbGluZXMgYXMgdGhlIHRhc2suCiAgICAgICAgICBjb25zdCBsaW5rcyA9IFtdOwogICAgICAgICAgZm9yIChsZXQgbGluZSA9IHJhd0VsZW1lbnQucG9zaXRpb24uc3RhcnQubGluZTsgbGluZSA8PSByYXdFbGVtZW50LnBvc2l0aW9uLmVuZC5saW5lOyBsaW5lKyspIHsKICAgICAgICAgICAgICBpZiAobGlua3NCeUxpbmVbbGluZV0pCiAgICAgICAgICAgICAgICAgIGxpbmtzLnB1c2goLi4ubGlua3NCeUxpbmVbbGluZV0pOwogICAgICAgICAgfQogICAgICAgICAgLy8gQ29uc3RydWN0IHVuaXZlcnNhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGVsZW1lbnQgKGJlZm9yZSB0YXNrcykuCiAgICAgICAgICBsZXQgaXRlbSA9IG5ldyBMaXN0SXRlbSh7CiAgICAgICAgICAgICAgc3ltYm9sOiByYXdNYXRjaFsxXSwKICAgICAgICAgICAgICBsaW5rOiBjbG9zZXN0TGluaywKICAgICAgICAgICAgICBsaW5rczogbGlua3MsCiAgICAgICAgICAgICAgc2VjdGlvbjogc2VjdGlvbkxpbmssCiAgICAgICAgICAgICAgdGV4dDogdGV4dFdpdGhOZXdsaW5lLAogICAgICAgICAgICAgIHRhZ3M6IGV4dHJhY3RUYWdzJDEodGV4dE5vTmV3bGluZSksCiAgICAgICAgICAgICAgbGluZTogcmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lLAogICAgICAgICAgICAgIGxpbmVDb3VudDogcmF3RWxlbWVudC5wb3NpdGlvbi5lbmQubGluZSAtIHJhd0VsZW1lbnQucG9zaXRpb24uc3RhcnQubGluZSArIDEsCiAgICAgICAgICAgICAgbGlzdDogY29udGFpbmluZ0xpc3RJZCA9PSAtMSA/IC0xIDogKG1ldGFkYXRhLnNlY3Rpb25zIHx8IFtdKVtjb250YWluaW5nTGlzdElkXS5wb3NpdGlvbi5zdGFydC5saW5lLAogICAgICAgICAgICAgIHBvc2l0aW9uOiByYXdFbGVtZW50LnBvc2l0aW9uLAogICAgICAgICAgICAgIGNoaWxkcmVuOiBbXSwKICAgICAgICAgICAgICBibG9ja0lkOiByYXdFbGVtZW50LmlkLAogICAgICAgICAgfSk7CiAgICAgICAgICBpZiAocmF3RWxlbWVudC5wYXJlbnQgPj0gMCAmJiByYXdFbGVtZW50LnBhcmVudCAhPSBpdGVtLmxpbmUpCiAgICAgICAgICAgICAgaXRlbS5wYXJlbnQgPSByYXdFbGVtZW50LnBhcmVudDsKICAgICAgICAgIC8vIFNldCB1cCB0aGUgYmFzaWMgdGFzayBpbmZvcm1hdGlvbiBmb3Igbm93LCB0aG91Z2ggd2UgaGF2ZSB0byByZWNvbXB1dGUgYGZ1bGx5Q29tcHV0ZWRgIGxhdGVyLgogICAgICAgICAgaWYgKHJhd0VsZW1lbnQudGFzaykgewogICAgICAgICAgICAgIGl0ZW0udGFzayA9IHsKICAgICAgICAgICAgICAgICAgc3RhdHVzOiByYXdFbGVtZW50LnRhc2ssCiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IHJhd0VsZW1lbnQudGFzayAhPSAiIiAmJiByYXdFbGVtZW50LnRhc2sgIT0gIiAiLAogICAgICAgICAgICAgICAgICBjb21wbGV0ZWQ6IHJhd0VsZW1lbnQudGFzayA9PSAiWCIgfHwgcmF3RWxlbWVudC50YXNrID09ICJ4IiwKICAgICAgICAgICAgICAgICAgZnVsbHlDb21wbGV0ZWQ6IHJhd0VsZW1lbnQudGFzayA9PSAiWCIgfHwgcmF3RWxlbWVudC50YXNrID09ICJ4IiwKICAgICAgICAgICAgICB9OwogICAgICAgICAgfQogICAgICAgICAgLy8gRXh0cmFjdCBpbmxpbmUgZmllbGRzOyBleHRyYWN0IGZ1bGwtbGluZSBmaWVsZHMgb25seSBpZiB3ZSBhcmUgTk9UIGEgdGFzay4KICAgICAgICAgIGl0ZW0uZmllbGRzID0gbmV3IE1hcCgpOwogICAgICAgICAgZm9yIChsZXQgZWxlbWVudCBvZiBleHRyYWN0SW5saW5lRmllbGRzKHRleHROb05ld2xpbmUsIHRydWUpKQogICAgICAgICAgICAgIGFkZFJhd0lubGluZUZpZWxkKGVsZW1lbnQsIGl0ZW0uZmllbGRzKTsKICAgICAgICAgIGlmICghcmF3RWxlbWVudC50YXNrICYmIGl0ZW0uZmllbGRzLnNpemUgPT0gMCkgewogICAgICAgICAgICAgIGxldCBmdWxsTGluZSA9IGV4dHJhY3RGdWxsTGluZUZpZWxkKHRleHROb05ld2xpbmUpOwogICAgICAgICAgICAgIGlmIChmdWxsTGluZSkKICAgICAgICAgICAgICAgICAgYWRkUmF3SW5saW5lRmllbGQoZnVsbExpbmUsIGl0ZW0uZmllbGRzKTsKICAgICAgICAgIH0KICAgICAgICAgIGNhY2hlW2l0ZW0ubGluZV0gPSBpdGVtOwogICAgICB9CiAgICAgIC8vIFRyZWUgdXBkYXRpbmcgcGFzc2VzLiBVcGRhdGUgY2hpbGQgbGlzdHMuIFByb3BvZ2F0ZSBtZXRhZGF0YSB1cCB0byBwYXJlbnQgdGFza3MuIFVwZGF0ZSB0YXNrIGBmdWxseUNvbXBsZXRlZGAuCiAgICAgIGxldCBsaXRlcmFscyA9IG5ldyBNYXAoKTsKICAgICAgZm9yIChsZXQgbGlzdEl0ZW0gb2YgT2JqZWN0LnZhbHVlcyhjYWNoZSkpIHsKICAgICAgICAgIC8vIFBhc3MgMTogVXBkYXRlIGNoaWxkIGxpc3RzLgogICAgICAgICAgaWYgKGxpc3RJdGVtLnBhcmVudCAhPT0gdW5kZWZpbmVkICYmIGxpc3RJdGVtLnBhcmVudCBpbiBjYWNoZSkgewogICAgICAgICAgICAgIGxldCBwYXJlbnQgPSBjYWNoZVtsaXN0SXRlbS5wYXJlbnRdOwogICAgICAgICAgICAgIHBhcmVudC5jaGlsZHJlbi5wdXNoKGxpc3RJdGVtLmxpbmUpOwogICAgICAgICAgfQogICAgICAgICAgLy8gUGFzcyAyOiBQcm9wb2dhdGUgbWV0YWRhdGEgdXAgdG8gdGhlIHBhcmVudCB0YXNrIG9yIHJvb3QgZWxlbWVudC4KICAgICAgICAgIGlmICghbGlzdEl0ZW0udGFzaykgewogICAgICAgICAgICAgIG1lcmdlRmllbGRHcm91cHMobGl0ZXJhbHMsIGxpc3RJdGVtLmZpZWxkcyk7CiAgICAgICAgICAgICAgLy8gVE9ETyAoYmxhY2tzbWl0aGd1KTogVGhlIGJlbG93IGNvZGUgcHJvcGVybHkgcHJvcG9nYXRlcyBtZXRhZGF0YSB1cCB0byB0aGUgbmVhcmVzdCB0YXNrLCB3aGljaCBpcyB0aGUKICAgICAgICAgICAgICAvLyBtb3JlIGludHVpdGl2ZSBiZWhhdmlvci4gRm9yIG5vdywgdGhvdWdoLCB3ZSB3aWxsIGtlZXAgdGhlIGV4aXN0aW5nIGxvZ2ljLgogICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgbGV0IHJvb3Q6IExpc3RJdGVtIHwgdW5kZWZpbmVkID0gbGlzdEl0ZW07CiAgICAgICAgICAgICAgd2hpbGUgKCEhcm9vdCAmJiAhcm9vdC50YXNrKSByb290ID0gY2FjaGVbcm9vdC5wYXJlbnQgPz8gLTFdOwoKICAgICAgICAgICAgICAvLyBJZiB0aGUgcm9vdCBpcyBudWxsLCBhcHBlbmQgdGhpcyBtZXRhZGF0YSB0byB0aGUgcm9vdDsgb3RoZXJ3aXNlLCBhcHBlbmQgdG8gdGhlIHRhc2suCiAgICAgICAgICAgICAgbWVyZ2VGaWVsZEdyb3Vwcyhyb290ID09PSB1bmRlZmluZWQgfHwgcm9vdCA9PSBudWxsID8gbGl0ZXJhbHMgOiByb290LmZpZWxkcywgbGlzdEl0ZW0uZmllbGRzKTsKICAgICAgICAgICAgICAqLwogICAgICAgICAgfQogICAgICAgICAgLy8gUGFzcyAzOiBQcm9wb2dhdGUgYGZ1bGx5Q29tcGxldGVkYCB1cCB0aGUgdGFzayB0cmVlLiBUaGlzIGlzIGEgbGl0dGxlIGxlc3MgZWZmaWNpZW50IHRoYW4ganVzdCBkb2luZyBhIHNpbXBsZQogICAgICAgICAgLy8gREZTIHVzaW5nIHRoZSBjaGlsZHJlbiBJRHMsIGJ1dCBpdCdzIHByb2JhYmx5IGZpbmUuCiAgICAgICAgICBpZiAobGlzdEl0ZW0udGFzaykgewogICAgICAgICAgICAgIGxldCBjdXJyID0gbGlzdEl0ZW07CiAgICAgICAgICAgICAgd2hpbGUgKCEhY3VycikgewogICAgICAgICAgICAgICAgICBpZiAoY3Vyci50YXNrKQogICAgICAgICAgICAgICAgICAgICAgY3Vyci50YXNrLmZ1bGx5Q29tcGxldGVkID0gY3Vyci50YXNrLmZ1bGx5Q29tcGxldGVkICYmIGxpc3RJdGVtLnRhc2suY29tcGxldGVkOwogICAgICAgICAgICAgICAgICBjdXJyID0gY2FjaGVbY3Vyci5wYXJlbnQgPz8gLTFdOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gW09iamVjdC52YWx1ZXMoY2FjaGUpLCBsaXRlcmFsc107CiAgfQogIC8qKiBBdHRlbXB0IHRvIGZpbmQgYSBkYXRlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gcGFnZSBmcm9tIG1ldGFkYXRhIG9yIGZpbGVuYW1lcy4gKi8KICBmdW5jdGlvbiBmaW5kRGF0ZShmaWxlLCBmaWVsZHMpIHsKICAgICAgZm9yIChsZXQga2V5IG9mIGZpZWxkcy5rZXlzKCkpIHsKICAgICAgICAgIGlmICghKGtleS50b0xvY2FsZUxvd2VyQ2FzZSgpID09ICJkYXRlIiB8fCBrZXkudG9Mb2NhbGVMb3dlckNhc2UoKSA9PSAiZGF5IikpCiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICBsZXQgdmFsdWUgPSBmaWVsZHMuZ2V0KGtleSk7CiAgICAgICAgICBpZiAoVmFsdWVzLmlzRGF0ZSh2YWx1ZSkpIHsKICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChWYWx1ZXMuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMCAmJiBWYWx1ZXMuaXNEYXRlKHZhbHVlWzBdKSkgewogICAgICAgICAgICAgIHJldHVybiB2YWx1ZVswXTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKFZhbHVlcy5pc0xpbmsodmFsdWUpKSB7CiAgICAgICAgICAgICAgbGV0IGRhdGUgPSBleHRyYWN0RGF0ZSh2YWx1ZS5wYXRoKSA/PyBleHRyYWN0RGF0ZSh2YWx1ZS5zdWJwYXRoID8/ICIiKSA/PyBleHRyYWN0RGF0ZSh2YWx1ZS5kaXNwbGF5ID8/ICIiKTsKICAgICAgICAgICAgICBpZiAoZGF0ZSkKICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGU7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIGV4dHJhY3REYXRlKGdldEZpbGVUaXRsZShmaWxlKSk7CiAgfQogIC8qKiBSZWN1cnNpdmVseSBjb252ZXJ0IGZyb250bWF0dGVyIGludG8gZmllbGRzLiBXZSBoYXZlIHRvIGRhbmNlIGFyb3VuZCBZQU1MIHN0cnVjdHVyZS4gKi8KICBmdW5jdGlvbiBwYXJzZUZyb250bWF0dGVyKHZhbHVlKSB7CiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7CiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICJvYmplY3QiKSB7CiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHsKICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gW107CiAgICAgICAgICAgICAgZm9yIChsZXQgY2hpbGQgb2YgdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocGFyc2VGcm9udG1hdHRlcihjaGlsZCkpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7CiAgICAgICAgICAgICAgbGV0IGRhdGVQYXJzZSA9IERhdGVUaW1lLmZyb21KU0RhdGUodmFsdWUpOwogICAgICAgICAgICAgIHJldHVybiBkYXRlUGFyc2U7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICBsZXQgb2JqZWN0ID0gdmFsdWU7CiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHt9OwogICAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBvYmplY3QpIHsKICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBwYXJzZUZyb250bWF0dGVyKG9iamVjdFtrZXldKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgIH0KICAgICAgfQogICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICJudW1iZXIiKSB7CiAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgIH0KICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAiYm9vbGVhbiIpIHsKICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgfQogICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciKSB7CiAgICAgICAgICBsZXQgZGF0ZVBhcnNlID0gRVhQUkVTU0lPTi5kYXRlLnBhcnNlKHZhbHVlKTsKICAgICAgICAgIGlmIChkYXRlUGFyc2Uuc3RhdHVzKQogICAgICAgICAgICAgIHJldHVybiBkYXRlUGFyc2UudmFsdWU7CiAgICAgICAgICBsZXQgZHVyYXRpb25QYXJzZSA9IEVYUFJFU1NJT04uZHVyYXRpb24ucGFyc2UodmFsdWUpOwogICAgICAgICAgaWYgKGR1cmF0aW9uUGFyc2Uuc3RhdHVzKQogICAgICAgICAgICAgIHJldHVybiBkdXJhdGlvblBhcnNlLnZhbHVlOwogICAgICAgICAgbGV0IGxpbmtQYXJzZSA9IEVYUFJFU1NJT04uZW1iZWRMaW5rLnBhcnNlKHZhbHVlKTsKICAgICAgICAgIGlmIChsaW5rUGFyc2Uuc3RhdHVzKQogICAgICAgICAgICAgIHJldHVybiBsaW5rUGFyc2UudmFsdWU7CiAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgIH0KICAgICAgLy8gQmFja3VwIGlmIHdlIGRvbid0IHVuZGVyc3RhbmQgdGhlIHR5cGUuCiAgICAgIHJldHVybiBudWxsOwogIH0KICAvKiogQWRkIGEgcGFyc2VkIGlubGluZSBmaWVsZCB0byB0aGUgb3V0cHV0IG1hcC4gKi8KICBmdW5jdGlvbiBhZGRSYXdJbmxpbmVGaWVsZChmaWVsZCwgb3V0cHV0KSB7CiAgICAgIGFkZElubGluZUZpZWxkKGZpZWxkLmtleSwgcGFyc2VJbmxpbmVWYWx1ZShmaWVsZC52YWx1ZSksIG91dHB1dCk7CiAgfQogIC8qKiBBZGQgYSByYXcgaW5saW5lIGZpZWxkIHRvIGFuIG91dHB1dCBtYXAsIGNhbm9uaWNhbGl6aW5nIGFzIG5lZWRlZC4gKi8KICBmdW5jdGlvbiBhZGRJbmxpbmVGaWVsZChrZXksIHZhbHVlLCBvdXRwdXQpIHsKICAgICAgaWYgKCFvdXRwdXQuaGFzKGtleSkpCiAgICAgICAgICBvdXRwdXQuc2V0KGtleSwgW3ZhbHVlXSk7CiAgICAgIGVsc2UKICAgICAgICAgIG91dHB1dC5nZXQoa2V5KT8ucHVzaCh2YWx1ZSk7CiAgfQogIC8qKiBHaXZlbiBhIHJhdyBsaXN0IG9mIGlubGluZSBmaWVsZCB2YWx1ZXMsIGFkZCBub3JtYWxpemVkIGtleXMgYW5kIHNxdWFzaCB0aGVtLiAqLwogIGZ1bmN0aW9uIGZpbmFsaXplSW5saW5lRmllbGRzKGZpZWxkcykgewogICAgICAvLyBDb21wdXRlIHVuaXF1ZSBub3JtYWxpemVkIGtleXMgKHRoYXQgZG8gbm90IG92ZXJsYXAgdy8gdGhlIGZpZWxkcykuCiAgICAgIGxldCBub3JtYWxpemVkID0gbmV3IE1hcCgpOwogICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZXNdIG9mIGZpZWxkcy5lbnRyaWVzKCkpIHsKICAgICAgICAgIGxldCBub3JtS2V5ID0gY2Fub25pY2FsaXplVmFyTmFtZShrZXkpOwogICAgICAgICAgaWYgKG5vcm1LZXkgPT0gIiIgfHwgZmllbGRzLmhhcyhub3JtS2V5KSkKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIGlmICghbm9ybWFsaXplZC5oYXMobm9ybUtleSkpCiAgICAgICAgICAgICAgbm9ybWFsaXplZC5zZXQobm9ybUtleSwgdmFsdWVzKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICBub3JtYWxpemVkLnNldChub3JtS2V5LCBub3JtYWxpemVkLmdldChub3JtS2V5KS5jb25jYXQodmFsdWVzKSk7CiAgICAgIH0KICAgICAgLy8gQ29tYmluZSBub3JtYWxpemVkICsgbm9ybWFsIGtleXMuCiAgICAgIGxldCBpbnRlcmltID0gbmV3IE1hcCgpOwogICAgICBtZXJnZUZpZWxkR3JvdXBzKGludGVyaW0sIGZpZWxkcyk7CiAgICAgIG1lcmdlRmllbGRHcm91cHMoaW50ZXJpbSwgbm9ybWFsaXplZCk7CiAgICAgIC8vIEFuZCB0aGVuIGZsYXR0ZW4gdGhlbS4KICAgICAgbGV0IHJlc3VsdCA9IG5ldyBNYXAoKTsKICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIGludGVyaW0uZW50cmllcygpKSB7CiAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID09IDEpCiAgICAgICAgICAgICAgcmVzdWx0LnNldChrZXksIHZhbHVlWzBdKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICByZXN1bHQuc2V0KGtleSwgdmFsdWUpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHQ7CiAgfQogIC8qKiBDb3B5IGFsbCBmaWVsZHMgb2YgJ3NvdXJjZScgaW50byAndGFyZ2V0Jy4gKi8KICBmdW5jdGlvbiBtZXJnZUZpZWxkR3JvdXBzKHRhcmdldCwgc291cmNlKSB7CiAgICAgIGZvciAobGV0IGtleSBvZiBzb3VyY2Uua2V5cygpKSB7CiAgICAgICAgICBpZiAoIXRhcmdldC5oYXMoa2V5KSkKICAgICAgICAgICAgICB0YXJnZXQuc2V0KGtleSwgc291cmNlLmdldChrZXkpKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICB0YXJnZXQuc2V0KGtleSwgdGFyZ2V0LmdldChrZXkpLmNvbmNhdChzb3VyY2UuZ2V0KGtleSkpKTsKICAgICAgfQogIH0KICAvKiogRmluZCB0aGUgaGVhZGVyIHRoYXQgaXMgbW9zdCBpbW1lZGlhdGVseSBhYm92ZSB0aGUgZ2l2ZW4gbGluZSBudW1iZXIuICovCiAgZnVuY3Rpb24gZmluZFByZXZpb3VzSGVhZGVyKGxpbmUsIGhlYWRlcnMpIHsKICAgICAgaWYgKGhlYWRlcnMubGVuZ3RoID09IDApCiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICBpZiAoaGVhZGVyc1swXS5wb3NpdGlvbi5zdGFydC5saW5lID4gbGluZSkKICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgIGxldCBpbmRleCA9IGhlYWRlcnMubGVuZ3RoIC0gMTsKICAgICAgd2hpbGUgKGluZGV4ID49IDAgJiYgaGVhZGVyc1tpbmRleF0ucG9zaXRpb24uc3RhcnQubGluZSA+IGxpbmUpCiAgICAgICAgICBpbmRleC0tOwogICAgICByZXR1cm4gaGVhZGVyc1tpbmRleF0uaGVhZGluZzsKICB9CgogIC8qKiBBY3R1YWwgaW1wb3J0IGltcGxlbWVudGF0aW9uIGJhY2tlbmQuIFRoaXMgbXVzdCByZW1haW4gc2VwYXJhdGUgZnJvbSBgaW1wb3J0LWVudHJ5YCBzaW5jZSBpdCBpcyB1c2VkIHdpdGhvdXQgd2ViIHdvcmtlcnMuICovCiAgZnVuY3Rpb24gcnVuSW1wb3J0KHBhdGgsIGNvbnRlbnRzLCBzdGF0cywgbWV0YWRhdGEpIHsKICAgICAgcmV0dXJuIHBhcnNlUGFnZShwYXRoLCBjb250ZW50cywgc3RhdHMsIG1ldGFkYXRhKTsKICB9CgogIC8qKiBTaW1wbGlmaWVzIHBhc3NpbmcgZGF0YXZpZXcgdmFsdWVzIGFjcm9zcyB0aGUgSlMgd2ViIHdvcmtlciBiYXJyaWVyLiAqLwogIHZhciBUcmFuc2ZlcmFibGU7CiAgKGZ1bmN0aW9uIChUcmFuc2ZlcmFibGUpIHsKICAgICAgLyoqIENvbnZlcnQgYSBsaXRlcmFsIHZhbHVlIHRvIGEgc2VyaWFsaXplci1mcmllbmRseSB0cmFuc2ZlcmFibGUgdmFsdWUuICovCiAgICAgIGZ1bmN0aW9uIHRyYW5zZmVyYWJsZSh2YWx1ZSkgewogICAgICAgICAgLy8gSGFuZGxlIHNpbXBsZSB1bml2ZXJzYWwgdHlwZXMgZmlyc3QuCiAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBNYXApIHsKICAgICAgICAgICAgICBsZXQgY29waWVkID0gbmV3IE1hcCgpOwogICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbF0gb2YgdmFsdWUuZW50cmllcygpKQogICAgICAgICAgICAgICAgICBjb3BpZWQuc2V0KHRyYW5zZmVyYWJsZShrZXkpLCB0cmFuc2ZlcmFibGUodmFsKSk7CiAgICAgICAgICAgICAgcmV0dXJuIGNvcGllZDsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgU2V0KSB7CiAgICAgICAgICAgICAgbGV0IGNvcGllZCA9IG5ldyBTZXQoKTsKICAgICAgICAgICAgICBmb3IgKGxldCB2YWwgb2YgdmFsdWUpCiAgICAgICAgICAgICAgICAgIGNvcGllZC5hZGQodHJhbnNmZXJhYmxlKHZhbCkpOwogICAgICAgICAgICAgIHJldHVybiBjb3BpZWQ7CiAgICAgICAgICB9CiAgICAgICAgICBsZXQgd3JhcHBlZCA9IFZhbHVlcy53cmFwVmFsdWUodmFsdWUpOwogICAgICAgICAgaWYgKHdyYXBwZWQgPT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICB0aHJvdyBFcnJvcigiVW5yZWNvZ25pemVkIHRyYW5zZmVyYWJsZSB2YWx1ZTogIiArIHZhbHVlKTsKICAgICAgICAgIHN3aXRjaCAod3JhcHBlZC50eXBlKSB7CiAgICAgICAgICAgICAgY2FzZSAibnVsbCI6CiAgICAgICAgICAgICAgY2FzZSAibnVtYmVyIjoKICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOgogICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZTsKICAgICAgICAgICAgICBjYXNlICJkYXRlIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICJfX190cmFuc2Zlci10eXBlIjogImRhdGUiLAogICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRyYW5zZmVyYWJsZSh3cmFwcGVkLnZhbHVlLnRvT2JqZWN0KCkpLAogICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAgICAgICAgICAgICAgIHpvbmU6IHdyYXBwZWQudmFsdWUuem9uZS5lcXVhbHMoU3lzdGVtWm9uZS5pbnN0YW5jZSkgPyB1bmRlZmluZWQgOiB3cmFwcGVkLnZhbHVlLnpvbmVOYW1lLAogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICBjYXNlICJkdXJhdGlvbiI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB7ICJfX190cmFuc2Zlci10eXBlIjogImR1cmF0aW9uIiwgdmFsdWU6IHRyYW5zZmVyYWJsZSh3cmFwcGVkLnZhbHVlLnRvT2JqZWN0KCkpIH07CiAgICAgICAgICAgICAgY2FzZSAiYXJyYXkiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5tYXAodiA9PiB0cmFuc2ZlcmFibGUodikpOwogICAgICAgICAgICAgIGNhc2UgImxpbmsiOgogICAgICAgICAgICAgICAgICByZXR1cm4geyAiX19fdHJhbnNmZXItdHlwZSI6ICJsaW5rIiwgdmFsdWU6IHRyYW5zZmVyYWJsZSh3cmFwcGVkLnZhbHVlLnRvT2JqZWN0KCkpIH07CiAgICAgICAgICAgICAgY2FzZSAib2JqZWN0IjoKICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHt9OwogICAgICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMod3JhcHBlZC52YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHRyYW5zZmVyYWJsZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgVHJhbnNmZXJhYmxlLnRyYW5zZmVyYWJsZSA9IHRyYW5zZmVyYWJsZTsKICAgICAgLyoqIENvbnZlcnQgYSB0cmFuc2ZlcmFibGUgdmFsdWUgYmFjayB0byBhIGxpdGVyYWwgdmFsdWUgd2UgY2FuIHdvcmsgd2l0aC4gKi8KICAgICAgZnVuY3Rpb24gdmFsdWUodHJhbnNmZXJhYmxlKSB7CiAgICAgICAgICBpZiAodHJhbnNmZXJhYmxlID09PSBudWxsKSB7CiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmICh0cmFuc2ZlcmFibGUgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmICh0cmFuc2ZlcmFibGUgaW5zdGFuY2VvZiBNYXApIHsKICAgICAgICAgICAgICBsZXQgcmVhbCA9IG5ldyBNYXAoKTsKICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWxdIG9mIHRyYW5zZmVyYWJsZS5lbnRyaWVzKCkpCiAgICAgICAgICAgICAgICAgIHJlYWwuc2V0KHZhbHVlKGtleSksIHZhbHVlKHZhbCkpOwogICAgICAgICAgICAgIHJldHVybiByZWFsOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAodHJhbnNmZXJhYmxlIGluc3RhbmNlb2YgU2V0KSB7CiAgICAgICAgICAgICAgbGV0IHJlYWwgPSBuZXcgU2V0KCk7CiAgICAgICAgICAgICAgZm9yIChsZXQgdmFsIG9mIHRyYW5zZmVyYWJsZSkKICAgICAgICAgICAgICAgICAgcmVhbC5hZGQodmFsdWUodmFsKSk7CiAgICAgICAgICAgICAgcmV0dXJuIHJlYWw7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRyYW5zZmVyYWJsZSkpIHsKICAgICAgICAgICAgICByZXR1cm4gdHJhbnNmZXJhYmxlLm1hcCh2ID0+IHZhbHVlKHYpKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB0cmFuc2ZlcmFibGUgPT09ICJvYmplY3QiKSB7CiAgICAgICAgICAgICAgaWYgKCJfX190cmFuc2Zlci10eXBlIiBpbiB0cmFuc2ZlcmFibGUpIHsKICAgICAgICAgICAgICAgICAgc3dpdGNoICh0cmFuc2ZlcmFibGVbIl9fX3RyYW5zZmVyLXR5cGUiXSkgewogICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZGF0ZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGVPcHRzID0gdmFsdWUodHJhbnNmZXJhYmxlLm9wdGlvbnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXRlRGF0YSA9IHZhbHVlKHRyYW5zZmVyYWJsZS52YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21PYmplY3QoZGF0ZURhdGEsIHsgem9uZTogZGF0ZU9wdHMuem9uZSB9KTsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImR1cmF0aW9uIjoKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdCh2YWx1ZSh0cmFuc2ZlcmFibGUudmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImxpbmsiOgogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBMaW5rLmZyb21PYmplY3QodmFsdWUodHJhbnNmZXJhYmxlLnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGBVbnJlY29nbml6ZWQgdHJhbnNmZXIgdHlwZSAnJHt0cmFuc2ZlcmFibGVbIl9fX3RyYW5zZmVyLXR5cGUiXX0nYCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHt9OwogICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbF0gb2YgT2JqZWN0LmVudHJpZXModHJhbnNmZXJhYmxlKSkKICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZSh2YWwpOwogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gdHJhbnNmZXJhYmxlOwogICAgICB9CiAgICAgIFRyYW5zZmVyYWJsZS52YWx1ZSA9IHZhbHVlOwogIH0pKFRyYW5zZmVyYWJsZSB8fCAoVHJhbnNmZXJhYmxlID0ge30pKTsKCiAgLyoqIEVudHJ5LXBvaW50IHNjcmlwdCB1c2VkIGJ5IHRoZSBpbmRleCBhcyBhIHdlYiB3b3JrZXIuICovCiAgLyoqIEFuIGltcG9ydCB3aGljaCBjYW4gZmFpbCBhbmQgcmFpc2UgYW4gZXhjZXB0aW9uLCB3aGljaCB3aWxsIGJlIGNhdWdodCBieSB0aGUgaGFuZGxlci4gKi8KICBmdW5jdGlvbiBmYWlsYWJsZUltcG9ydChwYXRoLCBjb250ZW50cywgc3RhdCwgbWV0YWRhdGEpIHsKICAgICAgaWYgKG1ldGFkYXRhID09PSB1bmRlZmluZWQgfHwgbWV0YWRhdGEgPT09IG51bGwpIHsKICAgICAgICAgIHRocm93IEVycm9yKGBDYW5ub3QgaW5kZXggZmlsZSwgc2luY2UgaXQgaGFzIG5vIE9ic2lkaWFuIGZpbGUgbWV0YWRhdGEuYCk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJ1bkltcG9ydChwYXRoLCBjb250ZW50cywgc3RhdCwgbWV0YWRhdGEpOwogIH0KICBvbm1lc3NhZ2UgPSBhc3luYyAoZXZ0KSA9PiB7CiAgICAgIHRyeSB7CiAgICAgICAgICBsZXQgeyBwYXRoLCBjb250ZW50cywgc3RhdCwgbWV0YWRhdGEgfSA9IGV2dC5kYXRhOwogICAgICAgICAgbGV0IHJlc3VsdCA9IGZhaWxhYmxlSW1wb3J0KHBhdGgsIGNvbnRlbnRzLCBzdGF0LCBtZXRhZGF0YSk7CiAgICAgICAgICBwb3N0TWVzc2FnZSh7IHBhdGg6IGV2dC5kYXRhLnBhdGgsIHJlc3VsdDogVHJhbnNmZXJhYmxlLnRyYW5zZmVyYWJsZShyZXN1bHQpIH0pOwogICAgICB9CiAgICAgIGNhdGNoIChlcnJvcikgewogICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpOwogICAgICAgICAgcG9zdE1lc3NhZ2UoewogICAgICAgICAgICAgIHBhdGg6IGV2dC5kYXRhLnBhdGgsCiAgICAgICAgICAgICAgcmVzdWx0OiB7CiAgICAgICAgICAgICAgICAgICRlcnJvcjogYEZhaWxlZCB0byBpbmRleCBmaWxlOiAke2V2dC5kYXRhLnBhdGh9OiAke2Vycm9yfWAsCiAgICAgICAgICAgICAgfSwKICAgICAgICAgIH0pOwogICAgICB9CiAgfTsKCn0pKCk7Cgo=', null, false); /* eslint-enable */ /** Controls and creates Dataview file importers, allowing for asynchronous loading and parsing of files. */ /** Multi-threaded file parser which debounces rapid file requests automatically. */ class FileImporter extends obsidian.Component { + numWorkers; + vault; + metadataCache; + /* Background workers which do the actual file parsing. */ + workers; + /** Tracks which workers are actively parsing a file, to make sure we properly delegate results. */ + busy; + /** List of files which have been queued for a reload. */ + reloadQueue; + /** Fast-access set which holds the list of files queued to be reloaded; used for debouncing. */ + reloadSet; + /** Paths -> promises for file reloads which have not yet been queued. */ + callbacks; constructor(numWorkers, vault, metadataCache) { super(); this.numWorkers = numWorkers; @@ -12608,9 +12696,8 @@ class FileImporter extends obsidian.Component { */ reload(file) { let promise = new Promise((resolve, reject) => { - var _a; if (this.callbacks.has(file.path)) - (_a = this.callbacks.get(file.path)) === null || _a === void 0 ? void 0 : _a.push([resolve, reject]); + this.callbacks.get(file.path)?.push([resolve, reject]); else this.callbacks.set(file.path, [[resolve, reject]]); }); @@ -12630,9 +12717,8 @@ class FileImporter extends obsidian.Component { } /** Finish the parsing of a file, potentially queueing a new file. */ finish(path, data, index) { - var _a; // Cache the callbacks before we do book-keeping. - let calls = [].concat((_a = this.callbacks.get(path)) !== null && _a !== void 0 ? _a : []); + let calls = [].concat(this.callbacks.get(path) ?? []); // Book-keeping to clear metadata & allow the file to be re-loaded again. this.reloadSet.delete(path); this.callbacks.delete(path); @@ -12672,10 +12758,43 @@ class FileImporter extends obsidian.Component { /** Stores various indices on all files in the vault to make dataview generation fast. */ /** Aggregate index which has several sub-indices and will initialize all of them. */ class FullIndex extends obsidian.Component { + app; + indexVersion; + onChange; /** Generate a full index from the given vault. */ static create(app, indexVersion, onChange) { return new FullIndex(app, indexVersion, onChange); } + /** Whether all files in the vault have been indexed at least once. */ + initialized; + /** I/O access to the Obsidian vault contents. */ + vault; + /** Access to in-memory metadata, useful for parsing and metadata lookups. */ + metadataCache; + /** Persistent IndexedDB backing store, used for faster startup. */ + persister; + /* Maps path -> markdown metadata for all markdown pages. */ + pages; + /** Map files -> tags in that file, and tags -> files. This version includes subtags. */ + tags; + /** Map files -> exact tags in that file, and tags -> files. This version does not automatically add subtags. */ + etags; + /** Map files -> linked files in that file, and linked file -> files that link to it. */ + links; + /** Search files by path prefix. */ + prefix; + /** Allows for efficient lookups of whether a file is starred or not. */ + starred; + /** Caches data in CSV files. */ + // TODO: CSV parsing should be done by a worker thread asynchronously to avoid frontend stalls. + csv; + /** + * The current "revision" of the index, which monotonically increases for every index change. Use this to determine + * if you are up to date. + */ + revision; + /** Asynchronously parses files in the background using web workers. */ + importer; /** Construct a new index using the app data and a current data version. */ constructor(app, indexVersion, onChange) { super(); @@ -12836,6 +12955,8 @@ class FullIndex extends obsidian.Component { } /** Indexes files by their full prefix - essentially a simple prefix tree. */ class PrefixIndex extends obsidian.Component { + vault; + updateRevision; static create(vault, updateRevision) { return new PrefixIndex(vault, updateRevision); } @@ -12900,6 +13021,12 @@ var PathFilters; * that uses CSV) fast. */ class CsvCache extends obsidian.Component { + vault; + static CACHE_EXPIRY_SECONDS = 5 * 60; + // Cache of loaded CSVs; old entries will periodically be removed + cache; + // Periodic job which clears out the cache based on time. + cacheClearInterval; constructor(vault) { super(); this.vault = vault; @@ -12965,9 +13092,16 @@ class CsvCache extends obsidian.Component { keysToRemove.forEach(key => this.cache.delete(key)); } } -CsvCache.CACHE_EXPIRY_SECONDS = 5 * 60; /** Optional connector to the Obsidian 'Starred' plugin which allows for efficiently querying if a file is starred or not. */ class StarredCache extends obsidian.Component { + app; + onUpdate; + /** Initial delay before checking the cache; we need to wait for it to asynchronously load the initial stars. */ + static INITIAL_DELAY = 4 * 1000; + /** How frequently to check for star updates. */ + static REFRESH_INTERVAL = 30 * 1000; + /** Set of all starred file paths. */ + stars; constructor(app, onUpdate) { super(); this.app = app; @@ -12990,8 +13124,7 @@ class StarredCache extends obsidian.Component { } /** Fetch all starred files from the stars plugin, if present. */ static fetch(app) { - var _a, _b, _c, _d; - let items = (_d = (_c = (_b = (_a = app === null || app === void 0 ? void 0 : app.internalPlugins) === null || _a === void 0 ? void 0 : _a.plugins) === null || _b === void 0 ? void 0 : _b.bookmarks) === null || _c === void 0 ? void 0 : _c.instance) === null || _d === void 0 ? void 0 : _d.items; + let items = app?.internalPlugins?.plugins?.bookmarks?.instance?.items; if (items == undefined) return new Set(); // Retrieve all grouped (nested) items, returning a flat array @@ -13010,12 +13143,12 @@ class StarredCache extends obsidian.Component { return new Set(items.filter((l) => l.type === "file").map(l => l.path)); } } -/** Initial delay before checking the cache; we need to wait for it to asynchronously load the initial stars. */ -StarredCache.INITIAL_DELAY = 4 * 1000; -/** How frequently to check for star updates. */ -StarredCache.REFRESH_INTERVAL = 30 * 1000; /** A generic index which indexes variables of the form key -> value[], allowing both forward and reverse lookups. */ class IndexMap { + /** Maps key -> values for that key. */ + map; + /** Cached inverse map; maps value -> keys that reference that value. */ + invMap; /** Create a new, empty index map. */ constructor() { this.map = new Map(); @@ -13037,7 +13170,6 @@ class IndexMap { } /** Sets the key to the given values; this will delete the old mapping for the key if one was present. */ set(key, values) { - var _a, _b; if (!values.size) { // no need to store if no values this.delete(key); @@ -13048,7 +13180,7 @@ class IndexMap { for (let value of oldValues) { // Only delete the ones we're not adding back if (!values.has(key)) - (_a = this.invMap.get(value)) === null || _a === void 0 ? void 0 : _a.delete(key); + this.invMap.get(value)?.delete(key); } } this.map.set(key, values); @@ -13056,19 +13188,18 @@ class IndexMap { if (!this.invMap.has(value)) this.invMap.set(value, new Set([key])); else - (_b = this.invMap.get(value)) === null || _b === void 0 ? void 0 : _b.add(key); + this.invMap.get(value)?.add(key); } return this; } /** Clears all values for the given key so they can be re-added. */ delete(key) { - var _a; let oldValues = this.map.get(key); if (!oldValues) return false; this.map.delete(key); for (let value of oldValues) { - (_a = this.invMap.get(value)) === null || _a === void 0 ? void 0 : _a.delete(key); + this.invMap.get(value)?.delete(key); } return true; } @@ -13086,10 +13217,11 @@ class IndexMap { this.map.clear(); this.invMap.clear(); } + static EMPTY_SET = Object.freeze(new Set()); } -IndexMap.EMPTY_SET = Object.freeze(new Set()); /** Index map wrapper which is case-insensitive in the key. */ class ValueCaseInsensitiveIndexMap { + delegate; /** Create a new, empty case insensitive index map. */ constructor(delegate = new IndexMap()) { this.delegate = delegate; @@ -13124,7 +13256,6 @@ class ValueCaseInsensitiveIndexMap { /** Collect data matching a source query. */ /** Find source paths which match the given source. */ function matchingSourcePaths(source, index, originFile = "") { - var _a; switch (source.type) { case "empty": return Result.success(new Set()); @@ -13144,7 +13275,7 @@ function matchingSourcePaths(source, index, originFile = "") { // For backwards-compat, return an empty result even if the folder does not exist. return Result.success(new Set()); case "link": - let fullPath = (_a = index.metadataCache.getFirstLinkpathDest(source.file, originFile)) === null || _a === void 0 ? void 0 : _a.path; + let fullPath = index.metadataCache.getFirstLinkpathDest(source.file, originFile)?.path; if (!fullPath) { // Look in links which includes unresolved links return Result.success(index.links.getInverse(source.file)); @@ -13244,12 +13375,36 @@ async function resolveSource(source, index, originFile = "") { return Result.success(result); } +// cyrb53 (c) 2018 bryc (github.com/bryc). License: Public domain. Attribution appreciated. +// A fast and simple 64-bit (or 53-bit) string hash function with decent collision resistance. +// Largely inspired by MurmurHash2/3, but with a focus on speed/simplicity. +// See https://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript/52171480#52171480 +// https://github.com/bryc/code/blob/master/jshash/experimental/cyrb53.js +function cyrb53(str, seed = 0) { + let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed; + for (let i = 0, ch; i < str.length; i++) { + ch = str.charCodeAt(i); + h1 = Math.imul(h1 ^ ch, 2654435761); + h2 = Math.imul(h2 ^ ch, 1597334677); + } + h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507); + h1 ^= Math.imul(h2 ^ (h2 >>> 13), 3266489909); + h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507); + h2 ^= Math.imul(h1 ^ (h1 >>> 13), 3266489909); + // For a full 64-bit value we could return + // [h2>>>0, h1>>>0] + return 4294967296 * (2097151 & h2) + (h1 >>> 0); // ; +} + /** Default function implementations for the expression evaluator. */ /** * Allows for the creation of functions that check the number and type of their arguments, and dispatch * to different implemenations based on the types of the inputs. */ class FunctionBuilder { + name; + variants; + vectorized; constructor(name) { this.name = name; this.variants = []; @@ -13449,7 +13604,6 @@ var DefaultFunctions; }) .add1("date", d => d) .add1("link", (link, c) => { - var _c, _d; // Try to parse from the display... if (link.display) { let parsedDate = EXPRESSION.date.parse(link.display); @@ -13462,8 +13616,8 @@ var DefaultFunctions; return parsedDate.value; // Then pull it from the file. let resolved = c.linkHandler.resolve(link.path); - if (resolved && ((_c = resolved === null || resolved === void 0 ? void 0 : resolved.file) === null || _c === void 0 ? void 0 : _c.day)) { - return (_d = resolved === null || resolved === void 0 ? void 0 : resolved.file) === null || _d === void 0 ? void 0 : _d.day; + if (resolved && resolved?.file?.day) { + return resolved?.file?.day; } return null; }) @@ -13485,6 +13639,7 @@ var DefaultFunctions; } } }) + .add2("null", "string", () => null) .add1("null", () => null) .vectorize(1, [0]) .build(); @@ -13851,6 +14006,17 @@ var DefaultFunctions; .add3("*", "*", "*", (b, left, right) => (Values.isTruthy(b) ? left : right)) .vectorize(3, [0]) .build(); + DefaultFunctions.hash = new FunctionBuilder("hash") + .add2("string", "number", (seed, variant) => { + return cyrb53(seed, variant); + }) + .add2("string", "string", (seed, text) => { + return cyrb53(seed + text); + }) + .add3("string", "string", "number", (seed, text, variant) => { + return cyrb53(seed + text, variant); + }) + .build(); DefaultFunctions.reduce = new FunctionBuilder("reduce") .add2("array", "string", (lis, op, context) => { if (lis.length == 0) @@ -13943,16 +14109,13 @@ var DefaultFunctions; .build(); /** Gets an object containing a link's own properties */ DefaultFunctions.meta = new FunctionBuilder("meta") - .add1("link", link => { - var _c, _d; - return ({ - display: (_c = link.display) !== null && _c !== void 0 ? _c : null, - embed: link.embed, - path: link.path, - subpath: (_d = link.subpath) !== null && _d !== void 0 ? _d : null, - type: link.type, - }); - }) + .add1("link", link => ({ + display: link.display ?? null, + embed: link.embed, + path: link.path, + subpath: link.subpath ?? null, + type: link.type, + })) .build(); // Concatenates sub-array elements into a new array DefaultFunctions.flat = new FunctionBuilder("flat") @@ -13965,38 +14128,71 @@ var DefaultFunctions; }) .add1("null", () => null) .build(); + // Slices the array into a new array + DefaultFunctions.slice = new FunctionBuilder("slice") + .add1("array", a => { + return a.slice(); + }) + .add2("array", "number", (a, start) => { + return a.slice(start); + }) + .add3("array", "number", "number", (a, start, end) => { + return a.slice(start, end); + }) + .add1("null", () => null) + .build(); })(DefaultFunctions || (DefaultFunctions = {})); /** Default function implementations for the expression evaluator. */ +// Keep functions in same order as they're documented !! const DEFAULT_FUNCTIONS = { - // Constructors. + // Constructors + object: DefaultFunctions.object, list: DefaultFunctions.list, array: DefaultFunctions.list, + date: DefaultFunctions.date, + dur: DefaultFunctions.dur, + number: DefaultFunctions.number, + string: DefaultFunctions.string, link: DefaultFunctions.link, embed: DefaultFunctions.embed, elink: DefaultFunctions.elink, - date: DefaultFunctions.date, - dur: DefaultFunctions.dur, - dateformat: DefaultFunctions.dateformat, - durationformat: DefaultFunctions.durationformat, - localtime: DefaultFunctions.localtime, - number: DefaultFunctions.number, - currencyformat: DefaultFunctions.currencyformat, - string: DefaultFunctions.string, - object: DefaultFunctions.object, typeof: DefaultFunctions.typeOf, - // Math Operations. + // Numeric Operations round: DefaultFunctions.round, trunc: DefaultFunctions.trunc, floor: DefaultFunctions.floor, ceil: DefaultFunctions.ceil, min: DefaultFunctions.min, max: DefaultFunctions.max, + sum: DefaultFunctions.sum, + product: DefaultFunctions.product, + average: DefaultFunctions.average, minby: DefaultFunctions.minby, maxby: DefaultFunctions.maxby, - // String operations. - regexreplace: DefaultFunctions.regexreplace, + // Object, Arrays, and String operations + contains: DefaultFunctions.contains, + icontains: DefaultFunctions.icontains, + econtains: DefaultFunctions.econtains, + containsword: DefaultFunctions.containsword, + extract: DefaultFunctions.extract, + sort: DefaultFunctions.sort, + reverse: DefaultFunctions.reverse, + length: DefaultFunctions.length, + nonnull: DefaultFunctions.nonnull, + all: DefaultFunctions.all, + any: DefaultFunctions.any, + none: DefaultFunctions.none, + join: DefaultFunctions.join, + filter: DefaultFunctions.filter, + map: DefaultFunctions.map, + flat: DefaultFunctions.flat, + slice: DefaultFunctions.slice, + unique: DefaultFunctions.unique, + reduce: DefaultFunctions.reduce, + // String Operations regextest: DefaultFunctions.regextest, regexmatch: DefaultFunctions.regexmatch, + regexreplace: DefaultFunctions.regexreplace, replace: DefaultFunctions.replace, lower: DefaultFunctions.lower, upper: DefaultFunctions.upper, @@ -14007,41 +14203,23 @@ const DEFAULT_FUNCTIONS = { padright: DefaultFunctions.padright, substring: DefaultFunctions.substring, truncate: DefaultFunctions.truncate, - // Date Operations. - striptime: DefaultFunctions.striptime, - // List operations. - length: DefaultFunctions.length, - contains: DefaultFunctions.contains, - icontains: DefaultFunctions.icontains, - econtains: DefaultFunctions.econtains, - containsword: DefaultFunctions.containsword, - reverse: DefaultFunctions.reverse, - sort: DefaultFunctions.sort, - flat: DefaultFunctions.flat, - // Aggregation operations like reduce. - reduce: DefaultFunctions.reduce, - join: DefaultFunctions.join, - sum: DefaultFunctions.sum, - product: DefaultFunctions.product, - average: DefaultFunctions.average, - all: DefaultFunctions.all, - any: DefaultFunctions.any, - none: DefaultFunctions.none, - filter: DefaultFunctions.filter, - unique: DefaultFunctions.unique, - map: DefaultFunctions.map, - nonnull: DefaultFunctions.nonnull, - // Object/Utility operations. - extract: DefaultFunctions.extract, + // Utility Operations default: DefaultFunctions.fdefault, ldefault: DefaultFunctions.ldefault, choice: DefaultFunctions.choice, + striptime: DefaultFunctions.striptime, + dateformat: DefaultFunctions.dateformat, + durationformat: DefaultFunctions.durationformat, + currencyformat: DefaultFunctions.currencyformat, + localtime: DefaultFunctions.localtime, + hash: DefaultFunctions.hash, meta: DefaultFunctions.meta, }; /** Provides a global dispatch table for evaluating binary operators, including comparison. */ /** Provides implementations for binary operators on two types using a registry. */ class BinaryOpHandler { + map; static create() { return new BinaryOpHandler(); } @@ -14145,6 +14323,11 @@ function createBinaryOps(linkNormalizer) { * for binary operators. */ class Context { + linkHandler; + settings; + globals; + binaryOps; + functions; /** * Create a new context with the given namespace of globals, as well as optionally with custom binary operator, function, * and link handlers. @@ -14163,8 +14346,7 @@ class Context { } /** Get the value of a global variable by name. Returns null if not present. */ get(name) { - var _a; - return (_a = this.globals[name]) !== null && _a !== void 0 ? _a : null; + return this.globals[name] ?? null; } /** Try to evaluate an arbitrary field in this context, raising an exception on failure. */ tryEvaluate(field, data = {}) { @@ -14172,7 +14354,6 @@ class Context { } /** Evaluate an arbitrary field in this context. */ evaluate(field, data = {}) { - var _a, _b; switch (field.type) { case "literal": return Result.success(field.value); @@ -14267,14 +14448,14 @@ class Context { case "object": if (!Values.isString(index)) return Result.failure('can only index into objects with strings (a.b or a["b"])'); - return Result.success((_a = object.value[index]) !== null && _a !== void 0 ? _a : null); + return Result.success(object.value[index] ?? null); case "link": if (!Values.isString(index)) return Result.failure('can only index into links with strings (a.b or a["b"])'); let linkValue = this.linkHandler.resolve(object.value.path); if (Values.isNull(linkValue)) return Result.success(null); - return Result.success((_b = linkValue[index]) !== null && _b !== void 0 ? _b : null); + return Result.success(linkValue[index] ?? null); case "array": if (Values.isNumber(index)) { if (index >= object.value.length || index < 0) @@ -14570,14 +14751,13 @@ function executeCoreExtract(rows, context, ops, fields) { } /** Execute a list-based query, returning the final results. */ async function executeList(query, index, origin, settings) { - var _a, _b; // Start by collecting all of the files that match the 'from' queries. let fileset = await resolveSource(query.source, index, origin); if (!fileset.successful) return Result.failure(fileset.error); // Extract information about the origin page to add to the root context. let rootContext = new Context(defaultLinkHandler(index, origin), settings, { - this: (_b = (_a = index.pages.get(origin)) === null || _a === void 0 ? void 0 : _a.serialize(index)) !== null && _b !== void 0 ? _b : {}, + this: index.pages.get(origin)?.serialize(index) ?? {}, }); let targetField = query.header.format; let showId = query.header.showId; @@ -14585,10 +14765,10 @@ async function executeList(query, index, origin, settings) { return executeCoreExtract(fileset.value, rootContext, query.operations, fields).map(core => { let data; if (showId && targetField) { - data = core.data.map(p => { var _a; return Widgets.listPair(p.id, (_a = p.data["target"]) !== null && _a !== void 0 ? _a : null); }); + data = core.data.map(p => Widgets.listPair(p.id, p.data["target"] ?? null)); } else if (targetField) { - data = core.data.map(p => { var _a; return (_a = p.data["target"]) !== null && _a !== void 0 ? _a : null; }); + data = core.data.map(p => p.data["target"] ?? null); } else { data = core.data.map(p => p.id); @@ -14598,14 +14778,13 @@ async function executeList(query, index, origin, settings) { } /** Execute a table query. */ async function executeTable(query, index, origin, settings) { - var _a, _b; // Start by collecting all of the files that match the 'from' queries. let fileset = await resolveSource(query.source, index, origin); if (!fileset.successful) return Result.failure(fileset.error); // Extract information about the origin page to add to the root context. let rootContext = new Context(defaultLinkHandler(index, origin), settings, { - this: (_b = (_a = index.pages.get(origin)) === null || _a === void 0 ? void 0 : _a.serialize(index)) !== null && _b !== void 0 ? _b : {}, + this: index.pages.get(origin)?.serialize(index) ?? {}, }); let targetFields = query.header.fields; let showId = query.header.showId; @@ -14641,7 +14820,6 @@ function extractTaskGroupings(id, rows) { } /** Execute a task query, returning all matching tasks. */ async function executeTask(query, origin, index, settings) { - var _a, _b; let fileset = matchingSourcePaths(query.source, index, origin); if (!fileset.successful) return Result.failure(fileset.error); @@ -14667,7 +14845,7 @@ async function executeTask(query, origin, index, settings) { } // Extract information about the origin page to add to the root context. let rootContext = new Context(defaultLinkHandler(index, origin), settings, { - this: (_b = (_a = index.pages.get(origin)) === null || _a === void 0 ? void 0 : _a.serialize(index)) !== null && _b !== void 0 ? _b : {}, + this: index.pages.get(origin)?.serialize(index) ?? {}, }); return executeCore(incomingTasks, rootContext, query.operations).map(core => { return { @@ -14678,9 +14856,8 @@ async function executeTask(query, origin, index, settings) { } /** Execute a single field inline a file, returning the evaluated result. */ function executeInline(field, origin, index, settings) { - var _a, _b; return new Context(defaultLinkHandler(index, origin), settings, { - this: (_b = (_a = index.pages.get(origin)) === null || _a === void 0 ? void 0 : _a.serialize(index)) !== null && _b !== void 0 ? _b : {}, + this: index.pages.get(origin)?.serialize(index) ?? {}, }).evaluate(field); } /** The default link resolver used when creating contexts. */ @@ -14696,9 +14873,8 @@ function defaultLinkHandler(index, origin) { return realPage.serialize(index); }, normalize: link => { - var _a; let realFile = index.metadataCache.getFirstLinkpathDest(link, origin); - return (_a = realFile === null || realFile === void 0 ? void 0 : realFile.path) !== null && _a !== void 0 ? _a : link; + return realFile?.path ?? link; }, exists: link => { let realFile = index.metadataCache.getFirstLinkpathDest(link, origin); @@ -14708,14 +14884,13 @@ function defaultLinkHandler(index, origin) { } /** Execute a calendar-based query, returning the final results. */ async function executeCalendar(query, index, origin, settings) { - var _a, _b; // Start by collecting all of the files that match the 'from' queries. let fileset = await resolveSource(query.source, index, origin); if (!fileset.successful) return Result.failure(fileset.error); // Extract information about the origin page to add to the root context. let rootContext = new Context(defaultLinkHandler(index, origin), settings, { - this: (_b = (_a = index.pages.get(origin)) === null || _a === void 0 ? void 0 : _a.serialize(index)) !== null && _b !== void 0 ? _b : {}, + this: index.pages.get(origin)?.serialize(index) ?? {}, }); let targetField = query.header.field.field; let fields = { @@ -14942,7 +15117,6 @@ function RawEmbedHtml({ element }) { const EmbedHtml = wn.memo(RawEmbedHtml); /** Intelligently render an arbitrary literal value. */ function RawLit({ value, sourcePath, inline = false, depth = 0, }) { - var _a, _b, _c; const context = q$1(DataviewContext); // Short-circuit if beyond the maximum render depth. if (depth >= context.settings.maxRecursiveRenderDepth) @@ -14994,7 +15168,7 @@ function RawLit({ value, sourcePath, inline = false, depth = 0, }) { y$1(Lit, { value: value.value, sourcePath: sourcePath }))); } else if (Widgets.isExternalLink(value)) { - return (y$1("a", { href: value.url, rel: "noopener", target: "_blank", class: "external-link" }, (_a = value.display) !== null && _a !== void 0 ? _a : value.url)); + return (y$1("a", { href: value.url, rel: "noopener", target: "_blank", class: "external-link" }, value.display ?? value.url)); } else { return y$1("b", null, @@ -15021,7 +15195,7 @@ function RawLit({ value, sourcePath, inline = false, depth = 0, }) { } else if (Values.isObject(value)) { // Don't render classes in case they have recursive references; spoopy. - if (((_b = value === null || value === void 0 ? void 0 : value.constructor) === null || _b === void 0 ? void 0 : _b.name) && ((_c = value === null || value === void 0 ? void 0 : value.constructor) === null || _c === void 0 ? void 0 : _c.name) != "Object") { + if (value?.constructor?.name && value?.constructor?.name != "Object") { return y$1(k$2, null, "<", value.constructor.name, @@ -15093,6 +15267,8 @@ function useIndexBackedState(container, app, settings, index, initial, compute) } /** A trivial wrapper which allows a react component to live for the duration of a `MarkdownRenderChild`. */ class ReactRenderer extends obsidian.MarkdownRenderChild { + init; + element; constructor(init, element) { super(init.container); this.init = init; @@ -15113,7 +15289,6 @@ function wasLinkPressed(evt) { } /** JSX component which renders a task element recursively. */ function TaskItem({ item }) { - var _a; let context = q$1(DataviewContext); // Navigate to the given task on click. const onClicked = (evt) => { @@ -15140,7 +15315,7 @@ function TaskItem({ item }) { const status = completed ? "x" : " "; // Update data-task on the parent element (css style) const parent = evt.currentTarget.parentElement; - parent === null || parent === void 0 ? void 0 : parent.setAttribute("data-task", status); + parent?.setAttribute("data-task", status); let flatted = [item]; if (context.settings.recursiveSubTaskCompletion) { function flatter(iitem) { @@ -15166,12 +15341,11 @@ function TaskItem({ item }) { const checked = item.status !== " "; return (y$1("li", { class: "dataview task-list-item" + (checked ? " is-checked" : ""), onClick: onClicked, "data-task": item.status }, y$1("input", { class: "dataview task-list-item-checkbox", type: "checkbox", checked: checked, onClick: onChecked }), - y$1(Markdown, { inline: true, content: (_a = item.visual) !== null && _a !== void 0 ? _a : item.text, sourcePath: item.path }), + y$1(Markdown, { inline: true, content: item.visual ?? item.text, sourcePath: item.path }), item.children.length > 0 && y$1(TaskList, { items: item.children }))); } /** JSX component which renders a plain list item recursively. */ function ListItem({ item }) { - var _a; let context = q$1(DataviewContext); // Navigate to the given task on click. const onClicked = (evt) => { @@ -15192,7 +15366,7 @@ function ListItem({ item }) { context.app.workspace.openLinkText(item.link.toFile().obsidianLink(), item.path, evt.ctrlKey || (evt.metaKey && obsidian.Platform.isMacOS), selectionState); }; return (y$1("li", { class: "dataview task-list-basic-item", onClick: onClicked }, - y$1(Markdown, { inline: true, content: (_a = item.visual) !== null && _a !== void 0 ? _a : item.text, sourcePath: item.path }), + y$1(Markdown, { inline: true, content: item.visual ?? item.text, sourcePath: item.path }), item.children.length > 0 && y$1(TaskList, { items: item.children }))); } /** JSX component which renders a list of task items recursively. */ @@ -15338,7 +15512,7 @@ function setTaskCompletion(originalText, useEmojiShorthand, completionKey, compl else { processedPart = setInlineField(processedPart, completionKey, DateTime.now().toFormat(completionDateFormat)); } - processedPart = `${processedPart.trimEnd()}${(matches === null || matches === void 0 ? void 0 : matches.length) ? " " + matches[0].trim() : ""}`.trimEnd(); // add back block id + processedPart = `${processedPart.trimEnd()}${matches?.length ? " " + matches[0].trim() : ""}`.trimEnd(); // add back block id parts[parts.length - 1] = processedPart; return parts.join("\n"); } @@ -15495,6 +15669,16 @@ const QUERY_LANGUAGE = parsimmon_umd_minExports.createLanguage({ .map(str => str.toLowerCase()) .desc("query type ('TABLE', 'LIST', 'TASK', or 'CALENDAR')"), explicitNamedField: q => parsimmon_umd_minExports.seqMap(EXPRESSION.field.skip(parsimmon_umd_minExports.whitespace), parsimmon_umd_minExports.regexp(/AS/i).skip(parsimmon_umd_minExports.whitespace), EXPRESSION.identifier.or(EXPRESSION.string), (field, _as, ident) => QueryFields.named(ident, field)), + comment: () => parsimmon_umd_minExports.Parser((input, i) => { + // Parse a comment, which is a line starting with //. + let line = input.substring(i); + if (!line.startsWith("//")) + return parsimmon_umd_minExports.makeFailure(i, "Not a comment"); + // The comment ends at the end of the line. + line = line.split("\n")[0]; + let comment = line.substring(2).trim(); + return parsimmon_umd_minExports.makeSuccess(i + line.length, comment); + }), namedField: q => parsimmon_umd_minExports.alt(q.explicitNamedField, captureRaw(EXPRESSION.field).map(([value, text]) => QueryFields.named(stripNewlines(text), value))), sortField: q => parsimmon_umd_minExports.seqMap(EXPRESSION.field.skip(parsimmon_umd_minExports.optWhitespace), parsimmon_umd_minExports.regexp(/ASCENDING|DESCENDING|ASC|DESC/i).atMost(1), (field, dir) => { let direction = dir.length == 0 ? "ascending" : dir[0].toLowerCase(); @@ -15560,7 +15744,7 @@ const QUERY_LANGUAGE = parsimmon_umd_minExports.createLanguage({ }).desc("GROUP BY [AS ]"), // Full query parsing. clause: q => parsimmon_umd_minExports.alt(q.fromClause, q.whereClause, q.sortByClause, q.limitClause, q.groupByClause, q.flattenClause), - query: q => parsimmon_umd_minExports.seqMap(q.headerClause.trim(parsimmon_umd_minExports.optWhitespace), q.fromClause.trim(parsimmon_umd_minExports.optWhitespace).atMost(1), q.clause.trim(parsimmon_umd_minExports.optWhitespace).many(), (header, from, clauses) => { + query: q => parsimmon_umd_minExports.seqMap(q.headerClause.trim(optionalWhitespaceOrComment), q.fromClause.trim(optionalWhitespaceOrComment).atMost(1), q.clause.trim(optionalWhitespaceOrComment).many(), (header, from, clauses) => { return { header, source: from.length == 0 ? Sources.folder("") : from[0], @@ -15569,6 +15753,13 @@ const QUERY_LANGUAGE = parsimmon_umd_minExports.createLanguage({ }; }), }); +/** + * A parser for optional whitespace or comments. This is used to exclude whitespace and comments from other parsers. + */ +const optionalWhitespaceOrComment = parsimmon_umd_minExports.alt(parsimmon_umd_minExports.whitespace, QUERY_LANGUAGE.comment) + .many() // Use many() since there may be zero whitespaces or comments. + // Transform the many to a single result. + .map(arr => arr.join("")); /** * Attempt to parse a query from the given query text, returning a string error * if the parse failed. @@ -18240,20 +18431,17 @@ class Calendar extends SvelteComponent { /** Generic code for embedded Dataviews. */ class DataviewRefreshableRenderer extends obsidian.MarkdownRenderChild { + container; + index; + app; + settings; + lastReload; constructor(container, index, app, settings) { super(container); this.container = container; this.index = index; this.app = app; this.settings = settings; - this.maybeRefresh = () => { - // If the index revision has changed recently, then queue a reload. - // But only if we're mounted in the DOM and auto-refreshing is active. - if (this.lastReload != this.index.revision && this.container.isShown() && this.settings.refreshEnabled) { - this.lastReload = this.index.revision; - this.render(); - } - }; this.lastReload = 0; } onload() { @@ -18264,9 +18452,24 @@ class DataviewRefreshableRenderer extends obsidian.MarkdownRenderChild { // ...or when the DOM is shown (sidebar expands, tab selected, nodes scrolled into view). this.register(this.container.onNodeInserted(this.maybeRefresh)); } + maybeRefresh = () => { + // If the index revision has changed recently, then queue a reload. + // But only if we're mounted in the DOM and auto-refreshing is active. + if (this.lastReload != this.index.revision && this.container.isShown() && this.settings.refreshEnabled) { + this.lastReload = this.index.revision; + this.render(); + } + }; } class DataviewCalendarRenderer extends DataviewRefreshableRenderer { + query; + container; + index; + origin; + settings; + app; + calendar; constructor(query, container, index, origin, settings, app) { super(container, index, app, settings); this.query = query; @@ -18277,7 +18480,6 @@ class DataviewCalendarRenderer extends DataviewRefreshableRenderer { this.app = app; } async render() { - var _a; this.container.innerHTML = ""; let maybeResult = await asyncTryOrPropogate(() => executeCalendar(this.query, this.index, this.origin, this.settings)); if (!maybeResult.successful) { @@ -18301,7 +18503,7 @@ class DataviewCalendarRenderer extends DataviewRefreshableRenderer { dateMap.set(d, [dot]); } else { - (_a = dateMap.get(d)) === null || _a === void 0 ? void 0 : _a.push(dot); + dateMap.get(d)?.push(dot); } } const querySource = { @@ -18322,7 +18524,7 @@ class DataviewCalendarRenderer extends DataviewRefreshableRenderer { if (!vals || vals.length == 0) { return; } - if ((vals === null || vals === void 0 ? void 0 : vals.length) == 0) { + if (vals?.length == 0) { return; } renderer.app.workspace.trigger("link-hover", {}, targetEl, vals[0].link.path, vals[0].link.path); @@ -18332,7 +18534,7 @@ class DataviewCalendarRenderer extends DataviewRefreshableRenderer { if (!vals || vals.length == 0) { return; } - if ((vals === null || vals === void 0 ? void 0 : vals.length) == 0) { + if (vals?.length == 0) { return; } const file = renderer.app.metadataCache.getFirstLinkpathDest(vals[0].link.path, ""); @@ -18358,6 +18560,8 @@ class DataviewCalendarRenderer extends DataviewRefreshableRenderer { /** Fancy wrappers for the JavaScript API, used both by external plugins AND by the dataview javascript view. */ /** Asynchronous API calls related to file / system IO. */ class DataviewInlineIOApi { + api; + currentFile; constructor(api, currentFile) { this.api = api; this.currentFile = currentFile; @@ -18376,14 +18580,39 @@ class DataviewInlineIOApi { } } class DataviewInlineApi { + /** + * The raw dataview indices, which track file <-> metadata relations. Use these if the intuitive API does not support + * your use case. + */ + index; + /** The component that handles the lifetime of this view. Use it if you are adding custom event handlers/components. */ + component; + /** The path to the current file this script is running in. */ + currentFilePath; + /** + * The container which holds the output of this view. You can directly append fields to this, if you wish, though + * the rendering API is likely to be easier for straight-forward purposes. + */ + container; + /** Directly access the Obsidian app object, such as for reaching out to other plugins. */ + app; + /** The general plugin API which much of this inline API delegates to. */ + api; + /** Settings which determine defaults, incl. many rendering options. */ + settings; + /** Evaluation context which expressions can be evaluated in. */ + evaluationContext; + /** Value utilities which allow for type-checking and comparisons. */ + value = Values; + /** Widget utility functions for creating built-in widgets. */ + widget = Widgets; + /** IO utilities which are largely asynchronous. */ + io; + /** Re-exporting of luxon for people who can't easily require it. Sorry! */ + luxon = Luxon; + /** Dataview functions which can be called from DataviewJS. */ + func; constructor(api, component, container, currentFilePath) { - var _a, _b; - /** Value utilities which allow for type-checking and comparisons. */ - this.value = Values; - /** Widget utility functions for creating built-in widgets. */ - this.widget = Widgets; - /** Re-exporting of luxon for people who can't easily require it. Sorry! */ - this.luxon = Luxon; this.index = api.index; this.app = api.app; this.settings = api.settings; @@ -18393,7 +18622,7 @@ class DataviewInlineApi { this.api = api; this.io = new DataviewInlineIOApi(this.api.io, this.currentFilePath); // Set up the evaluation context with variables from the current file. - let fileMeta = (_b = (_a = this.index.pages.get(this.currentFilePath)) === null || _a === void 0 ? void 0 : _a.serialize(this.index)) !== null && _b !== void 0 ? _b : {}; + let fileMeta = this.index.pages.get(this.currentFilePath)?.serialize(this.index) ?? {}; this.evaluationContext = new Context(defaultLinkHandler(this.index, this.currentFilePath), this.settings, { this: fileMeta, }); @@ -18423,19 +18652,19 @@ class DataviewInlineApi { /////////////////////////////// /** Execute a Dataview query, returning the results in programmatic form. */ async query(source, originFile, settings) { - return this.api.query(source, originFile !== null && originFile !== void 0 ? originFile : this.currentFilePath, settings); + return this.api.query(source, originFile ?? this.currentFilePath, settings); } /** Error-throwing version of {@link query}. */ async tryQuery(source, originFile, settings) { - return this.api.tryQuery(source, originFile !== null && originFile !== void 0 ? originFile : this.currentFilePath, settings); + return this.api.tryQuery(source, originFile ?? this.currentFilePath, settings); } /** Execute a Dataview query, returning the results in Markdown. */ async queryMarkdown(source, originFile, settings) { - return this.api.queryMarkdown(source, originFile !== null && originFile !== void 0 ? originFile : this.currentFilePath, settings); + return this.api.queryMarkdown(source, originFile ?? this.currentFilePath, settings); } /** Error-throwing version of {@link queryMarkdown}. */ async tryQueryMarkdown(source, originFile, settings) { - return this.api.tryQueryMarkdown(source, originFile !== null && originFile !== void 0 ? originFile : this.currentFilePath, settings); + return this.api.tryQueryMarkdown(source, originFile ?? this.currentFilePath, settings); } /** * Evaluate a dataview expression (like '2 + 2' or 'link("hello")'), returning the evaluated result. @@ -18541,7 +18770,7 @@ class DataviewInlineApi { return container.createEl(el, Object.assign({ text }, options)); } let _el = container.createEl(el, options); - renderValue(wrapped.value, _el, this.currentFilePath, this.component, this.settings, true); + renderValue(this.app, wrapped.value, _el, this.currentFilePath, this.component, this.settings, true); return _el; } /** Render an HTML header; the level can be anything from 1 - 6. */ @@ -18568,6 +18797,7 @@ class DataviewInlineApi { const simpleViewPath = `${viewName}.js`; const complexViewPath = `${viewName}/view.js`; let checkForCss = false; + let cssElement = undefined; let viewFile = this.app.metadataCache.getFirstLinkpathDest(simpleViewPath, this.currentFilePath); if (!viewFile) { viewFile = this.app.metadataCache.getFirstLinkpathDest(complexViewPath, this.currentFilePath); @@ -18577,6 +18807,15 @@ class DataviewInlineApi { renderErrorPre(this.container, `Dataview: custom view not found for '${simpleViewPath}' or '${complexViewPath}'.`); return; } + if (checkForCss) { + // Check for optional CSS. + let cssFile = this.app.metadataCache.getFirstLinkpathDest(`${viewName}/view.css`, this.currentFilePath); + if (cssFile) { + let cssContents = await this.app.vault.read(cssFile); + cssContents += `\n/*# sourceURL=${location.origin}/${cssFile.path} */`; + cssElement = this.container.createEl("style", { text: cssContents, attr: { scope: " " } }); + } + } let contents = await this.app.vault.read(viewFile); if (contents.contains("await")) contents = "(async () => { " + contents + " })()"; @@ -18586,21 +18825,13 @@ class DataviewInlineApi { // This may directly render, in which case it will likely return undefined or null. let result = await Promise.resolve(func(this, input)); if (result) - await renderValue(result, this.container, this.currentFilePath, this.component, this.settings, true); + await renderValue(this.app, result, this.container, this.currentFilePath, this.component, this.settings, true); } catch (ex) { + if (cssElement) + this.container.removeChild(cssElement); renderErrorPre(this.container, `Dataview: Failed to execute view '${viewFile.path}'.\n\n${ex}`); } - if (!checkForCss) { - return; - } - // Check for optional CSS. - let cssFile = this.app.metadataCache.getFirstLinkpathDest(`${viewName}/view.css`, this.currentFilePath); - if (!cssFile) - return; - let cssContents = await this.app.vault.read(cssFile); - cssContents += `\n/*# sourceURL=${location.origin}/${cssFile.path} */`; - this.container.createEl("style", { text: cssContents, attr: { scope: " " } }); } /** Render a dataview list of the given values. */ list(values) { @@ -18651,6 +18882,11 @@ async function asyncEvalInContext(script, context) { } class DataviewJSRenderer extends DataviewRefreshableRenderer { + api; + script; + container; + origin; + static PREAMBLE = "const dataview = this;const dv = this;"; constructor(api, script, container, origin) { super(container, api.index, api.app, api.settings); this.api = api; @@ -18675,9 +18911,16 @@ class DataviewJSRenderer extends DataviewRefreshableRenderer { } } } -DataviewJSRenderer.PREAMBLE = "const dataview = this;const dv = this;"; /** Inline JS renderer accessible using '=$' by default. */ class DataviewInlineJSRenderer extends DataviewRefreshableRenderer { + api; + script; + container; + target; + origin; + static PREAMBLE = "const dataview = this;const dv=this;"; + // The box that the error is rendered in, if relevant. + errorbox; constructor(api, script, container, target, origin) { super(container, api.index, api.app, api.settings); this.api = api; @@ -18687,8 +18930,7 @@ class DataviewInlineJSRenderer extends DataviewRefreshableRenderer { this.origin = origin; } async render() { - var _a; - (_a = this.errorbox) === null || _a === void 0 ? void 0 : _a.remove(); + this.errorbox?.remove(); if (!this.settings.enableDataviewJs || !this.settings.enableInlineDataviewJs) { let temp = document.createElement("span"); temp.innerText = "(disabled; enable in settings)"; @@ -18704,7 +18946,7 @@ class DataviewInlineJSRenderer extends DataviewRefreshableRenderer { this.target = temp; if (result === undefined) return; - renderValue(result, temp, this.origin, this, this.settings, false); + renderValue(this.api.app, result, temp, this.origin, this, this.settings, false); } catch (e) { this.errorbox = this.container.createEl("div"); @@ -18712,7 +18954,6 @@ class DataviewInlineJSRenderer extends DataviewRefreshableRenderer { } } } -DataviewInlineJSRenderer.PREAMBLE = "const dataview = this;const dv=this;"; //////////// // Tables // @@ -18721,7 +18962,7 @@ DataviewInlineJSRenderer.PREAMBLE = "const dataview = this;const dv=this;"; function markdownTable(headers, values, settings) { if (values.length > 0 && headers.length != values[0].length) throw new Error(`The number of headers (${headers.length}) must match the number of columns (${values[0].length})`); - settings = settings !== null && settings !== void 0 ? settings : DEFAULT_SETTINGS; + settings = settings ?? DEFAULT_SETTINGS; const mvalues = []; const maxLengths = Array.from(headers, v => escapeTable(v).length); // Pre-construct the table in memory so we can size columns. @@ -18816,7 +19057,6 @@ function markdownListRec(input, settings, depth = 0) { /////////// /** Render the result of a task query to markdown. */ function markdownTaskList(tasks, settings, depth = 0) { - var _a, _b; if (Groupings.isGrouping(tasks)) { let result = ""; for (let element of tasks) { @@ -18832,10 +19072,10 @@ function markdownTaskList(tasks, settings, depth = 0) { for (let element of dedupTasks) { result += " ".repeat(depth) + "- "; if (element.task) { - result += `[${element.status}] ${((_a = element.visual) !== null && _a !== void 0 ? _a : element.text).split("\n").join(" ")}\n`; + result += `[${element.status}] ${(element.visual ?? element.text).split("\n").join(" ")}\n`; } else { - result += `${((_b = element.visual) !== null && _b !== void 0 ? _b : element.text).split("\n").join(" ")}\n`; + result += `${(element.visual ?? element.text).split("\n").join(" ")}\n`; } result += markdownTaskList(element.children, settings, depth + 1); } @@ -18846,6 +19086,7 @@ function markdownTaskList(tasks, settings, depth = 0) { /** The general, externally accessible plugin API (available at `app.plugins.plugins.dataview.api` or as global `DataviewAPI`). */ /** Asynchronous API calls related to file / system IO. */ class DataviewIOApi { + api; constructor(api) { this.api = api; } @@ -18858,7 +19099,7 @@ class DataviewIOApi { if (data.successful) return DataArray.from(data.value, this.api.settings); else - throw Error(`Could not find CSV for path '${path}' (relative to origin '${originFile !== null && originFile !== void 0 ? originFile : "/"}')`); + throw Error(`Could not find CSV for path '${path}' (relative to origin '${originFile ?? "/"}')`); } /** Asynchronously load the contents of any link or path in an Obsidian vault. */ async load(path, originFile) { @@ -18882,32 +19123,42 @@ class DataviewIOApi { } /** Global API for accessing the Dataview API, executing dataview queries, and */ class DataviewApi { + app; + index; + settings; + verNum; + /** Evaluation context which expressions can be evaluated in. */ + evaluationContext; + /** IO API which supports asynchronous loading of data directly. */ + io; + /** Dataview functions which can be called from DataviewJS. */ + func; + /** Value utility functions for comparisons and type-checking. */ + value = Values; + /** Widget utility functions for creating built-in widgets. */ + widget = Widgets; + /** Re-exporting of luxon for people who can't easily require it. Sorry! */ + luxon = Luxon; constructor(app, index, settings, verNum) { this.app = app; this.index = index; this.settings = settings; this.verNum = verNum; - /** Value utility functions for comparisons and type-checking. */ - this.value = Values; - /** Widget utility functions for creating built-in widgets. */ - this.widget = Widgets; - /** Re-exporting of luxon for people who can't easily require it. Sorry! */ - this.luxon = Luxon; - /** Utilities to check the current Dataview version and comapre it to SemVer version ranges. */ - this.version = (() => { - const { verNum: version } = this; - return { - get current() { - return version; - }, - compare: (op, ver) => compare(version, ver, op), - satisfies: (range) => satisfies(version, range), - }; - })(); this.evaluationContext = new Context(defaultLinkHandler(index, ""), settings); this.func = Functions.bindAll(DEFAULT_FUNCTIONS, this.evaluationContext); this.io = new DataviewIOApi(this); } + /** Utilities to check the current Dataview version and comapre it to SemVer version ranges. */ + version = (() => { + const self = this; + return { + get current() { + return self.verNum; + }, + compare: (op, ver) => compare(this.verNum, ver, op), + satisfies: (range) => satisfies(this.verNum, range), + }; + })(); ///////////////////////////// // Index + Data Collection // ///////////////////////////// @@ -18933,7 +19184,7 @@ class DataviewApi { throw Error("dv.page only handles string and link paths; was provided type '" + typeof path + "'"); } let rawPath = path instanceof Link ? path.path : path; - let normPath = this.app.metadataCache.getFirstLinkpathDest(rawPath, originFile !== null && originFile !== void 0 ? originFile : ""); + let normPath = this.app.metadataCache.getFirstLinkpathDest(rawPath, originFile ?? ""); if (!normPath) return undefined; let pageObject = this.index.pages.get(normPath.path); @@ -19047,19 +19298,19 @@ class DataviewApi { const header = query.value.header; switch (header.type) { case "calendar": - const cres = await executeCalendar(query.value, this.index, originFile !== null && originFile !== void 0 ? originFile : "", this.settings); + const cres = await executeCalendar(query.value, this.index, originFile ?? "", this.settings); if (!cres.successful) return cres.cast(); return Result.success({ type: "calendar", values: cres.value.data }); case "task": - const tasks = await executeTask(query.value, originFile !== null && originFile !== void 0 ? originFile : "", this.index, this.settings); + const tasks = await executeTask(query.value, originFile ?? "", this.index, this.settings); if (!tasks.successful) return tasks.cast(); return Result.success({ type: "task", values: tasks.value.tasks }); case "list": - if ((settings === null || settings === void 0 ? void 0 : settings.forceId) !== undefined) + if (settings?.forceId !== undefined) header.showId = settings.forceId; - const lres = await executeList(query.value, this.index, originFile !== null && originFile !== void 0 ? originFile : "", this.settings); + const lres = await executeList(query.value, this.index, originFile ?? "", this.settings); if (!lres.successful) return lres.cast(); // TODO: WITHOUT ID probably shouldn't exist, or should be moved to the engine itself. @@ -19070,9 +19321,9 @@ class DataviewApi { primaryMeaning: lres.value.primaryMeaning, }); case "table": - if ((settings === null || settings === void 0 ? void 0 : settings.forceId) !== undefined) + if (settings?.forceId !== undefined) header.showId = settings.forceId; - const tres = await executeTable(query.value, this.index, originFile !== null && originFile !== void 0 ? originFile : "", this.settings); + const tres = await executeTable(query.value, this.index, originFile ?? "", this.settings); if (!tres.successful) return tres.cast(); return Result.success({ @@ -19229,7 +19480,7 @@ class DataviewApi { } /** Render an arbitrary value into a container. */ async renderValue(value, container, component, filePath, inline = false) { - return renderValue(value, container, filePath, component, this.settings, inline); + return renderValue(this.app, value, container, filePath, component, this.settings, inline); } ///////////////// // Data Export // @@ -19261,6 +19512,8 @@ class DataviewApi { } /** Determines if source-path has a `?no-dataview` annotation that disables dataview. */ function isDataviewDisabled(sourcePath) { + if (!sourcePath) + return false; let questionLocation = sourcePath.lastIndexOf("?"); if (questionLocation == -1) return false; @@ -19269,6 +19522,16 @@ function isDataviewDisabled(sourcePath) { /** Refreshable renderer which renders inline instead of in a div. */ class DataviewInlineRenderer extends DataviewRefreshableRenderer { + field; + fieldText; + container; + target; + index; + origin; + settings; + app; + // The box that the error is rendered in, if relevant. + errorbox; constructor(field, fieldText, container, target, index, origin, settings, app) { super(container, index, app, settings); this.field = field; @@ -19281,8 +19544,7 @@ class DataviewInlineRenderer extends DataviewRefreshableRenderer { this.app = app; } async render() { - var _a; - (_a = this.errorbox) === null || _a === void 0 ? void 0 : _a.remove(); + this.errorbox?.remove(); let result = tryOrPropogate(() => executeInline(this.field, this.origin, this.index, this.settings)); if (!result.successful) { this.errorbox = this.container.createEl("div"); @@ -19291,7 +19553,7 @@ class DataviewInlineRenderer extends DataviewRefreshableRenderer { else { let temp = document.createElement("span"); temp.addClasses(["dataview", "dataview-inline-query"]); - await renderValue(result.value, temp, this.origin, this, this.settings, false); + await renderValue(this.app, result.value, temp, this.origin, this, this.settings, false); this.target.replaceWith(temp); } } @@ -19299,11 +19561,10 @@ class DataviewInlineRenderer extends DataviewRefreshableRenderer { /** Replaces raw textual inline fields in text containers with pretty HTML equivalents. */ async function replaceInlineFields(ctx, init) { - var _a; let inlineFields = extractInlineFields(init.container.innerHTML); if (inlineFields.length == 0) return; - const text = (_a = ctx.getSectionInfo(init.container)) === null || _a === void 0 ? void 0 : _a.text; + const text = ctx.getSectionInfo(init.container)?.text; let inlineFieldsFromText = null; if (text) { inlineFieldsFromText = extractInlineFields(text); @@ -19403,6 +19664,10 @@ function selectionAndRangeOverlap(selection, rangeFrom, rangeTo) { return false; } class InlineWidget extends view.WidgetType { + cssClasses; + rawQuery; + el; + view; constructor(cssClasses, rawQuery, el, view) { super(); this.cssClasses = cssClasses; @@ -19477,14 +19742,14 @@ function getCssClasses(props) { } function inlinePlugin(app, index, settings, api) { return view.ViewPlugin.fromClass(class { + decorations; + component; constructor(view$1) { - var _a; this.component = new obsidian.Component(); this.component.load(); - this.decorations = (_a = this.inlineRender(view$1)) !== null && _a !== void 0 ? _a : view.Decoration.none; + this.decorations = this.inlineRender(view$1) ?? view.Decoration.none; } update(update) { - var _a; // only activate in LP and not source mode if (!update.state.field(obsidian.editorLivePreviewField)) { this.decorations = view.Decoration.none; @@ -19498,7 +19763,7 @@ function inlinePlugin(app, index, settings, api) { this.updateTree(update.view); } else if (update.viewportChanged /*|| update.selectionSet*/) { - this.decorations = (_a = this.inlineRender(update.view)) !== null && _a !== void 0 ? _a : view.Decoration.none; + this.decorations = this.inlineRender(update.view) ?? view.Decoration.none; } } updateTree(view) { @@ -19532,7 +19797,6 @@ function inlinePlugin(app, index, settings, api) { }); } addDeco(node, view) { - var _a; const from = node.from - 1; const to = node.to + 1; let exists = false; @@ -19549,7 +19813,7 @@ function inlinePlugin(app, index, settings, api) { const currentFile = view.state.field(obsidian.editorInfoField).file; if (!currentFile) return; - const newDeco = (_a = this.renderWidget(node, view, currentFile)) === null || _a === void 0 ? void 0 : _a.value; + const newDeco = this.renderWidget(node, view, currentFile)?.value; if (newDeco) { this.decorations = this.decorations.update({ add: [{ from: from, to: to, value: newDeco }], @@ -19562,7 +19826,7 @@ function inlinePlugin(app, index, settings, api) { const type = node.type; // current node is inline code const tokenProps = type.prop(language.tokenClassNodeProp); - const props = new Set(tokenProps === null || tokenProps === void 0 ? void 0 : tokenProps.split(" ")); + const props = new Set(tokenProps?.split(" ")); if (props.has("inline-code") && !props.has("formatting")) { // contains the position of inline code const start = node.from; @@ -19659,7 +19923,7 @@ function inlinePlugin(app, index, settings, api) { else { const { value } = intermediateResult; result = value; - renderValue(result, el, currentFile.path, this.component, settings); + renderValue(app, result, el, currentFile.path, this.component, settings); } } } @@ -19677,12 +19941,12 @@ function inlinePlugin(app, index, settings, api) { const dvInlineApi = new DataviewInlineApi(api, this.component, myEl, currentFile.path); if (code.includes("await")) { evalInContext("(async () => { " + PREAMBLE + code + " })()").then((result) => { - renderValue(result, el, currentFile.path, this.component, settings); + renderValue(app, result, el, currentFile.path, this.component, settings); }); } else { result = evalInContext(PREAMBLE + code); - renderValue(result, el, currentFile.path, this.component, settings); + renderValue(app, result, el, currentFile.path, this.component, settings); } function evalInContext(script) { return function () { @@ -19704,7 +19968,7 @@ function inlinePlugin(app, index, settings, api) { return; } const tokenProps = type.prop(language.tokenClassNodeProp); - const props = new Set(tokenProps === null || tokenProps === void 0 ? void 0 : tokenProps.split(" ")); + const props = new Set(tokenProps?.split(" ")); const classes = getCssClasses(props); return view.Decoration.replace({ widget: new InlineWidget(classes, code, el, view$1), @@ -19719,6 +19983,7 @@ function inlinePlugin(app, index, settings, api) { } class InlineFieldValue extends state.RangeValue { + field; constructor(field) { super(); this.field = field; @@ -19762,6 +20027,8 @@ const inlineFieldsField = state.StateField.define({ }); /** Create a view plugin that renders inline fields in live preview just as in the reading view. */ const replaceInlineFieldsInLivePreview = (app, settings) => view.ViewPlugin.fromClass(class { + decorations; + component; constructor(view) { this.component = new obsidian.Component(); this.component.load(); @@ -19864,6 +20131,12 @@ const replaceInlineFieldsInLivePreview = (app, settings) => view.ViewPlugin.from }); /** A widget which inline fields are replaced with. */ class InlineFieldWidget extends view.WidgetType { + app; + field; + sourcePath; + component; + settings; + view; constructor(app, field, sourcePath, component, settings, view) { super(); this.app = app; @@ -19891,11 +20164,11 @@ class InlineFieldWidget extends view.WidgetType { "data-dv-norm-key": canonicalizeVarName(this.field.key), }, }); - renderCompactMarkdown(this.field.key, key, this.sourcePath, this.component, true); + renderCompactMarkdown(this.app, this.field.key, key, this.sourcePath, this.component, true); const value = renderContainer.createSpan({ cls: ["dataview", "inline-field-value"], }); - renderValue(parseInlineValue(this.field.value), value, this.sourcePath, this.component, this.settings, false, undefined, undefined, true); + renderValue(this.app, parseInlineValue(this.field.value), value, this.sourcePath, this.component, this.settings, false, undefined, undefined, true); this.addKeyClickHandler(key, renderContainer); this.addValueClickHandler(value, renderContainer); } @@ -19903,7 +20176,7 @@ class InlineFieldWidget extends view.WidgetType { const value = renderContainer.createSpan({ cls: ["dataview", "inline-field-standalone-value"], }); - renderValue(parseInlineValue(this.field.value), value, this.sourcePath, this.component, this.settings, false, undefined, undefined, true); + renderValue(this.app, parseInlineValue(this.field.value), value, this.sourcePath, this.component, this.settings, false, undefined, undefined, true); this.addValueClickHandler(value, renderContainer); } return renderContainer; @@ -19942,14 +20215,17 @@ class InlineFieldWidget extends view.WidgetType { const workspaceLayoutChangeEffect = state.StateEffect.define(); class DataviewPlugin extends obsidian.Plugin { - constructor() { - super(...arguments); - this.debouncedRefresh = () => null; - } + /** Plugin-wide default settings. */ + settings; + /** The index that stores all dataview data. */ + index; + /** External-facing plugin API. */ + api; + /** CodeMirror 6 extensions that dataview installs. Tracked via array to allow for dynamic updates. */ + cmExtension; async onload() { - var _a; // Settings initialization; write defaults first time around. - this.settings = Object.assign(DEFAULT_SETTINGS, (_a = (await this.loadData())) !== null && _a !== void 0 ? _a : {}); + this.settings = Object.assign(DEFAULT_SETTINGS, (await this.loadData()) ?? {}); this.addSettingTab(new GeneralSettingsTab(this.app, this)); this.index = this.addChild(FullIndex.create(this.app, this.manifest.version, () => { if (this.settings.refreshEnabled) @@ -20008,6 +20284,16 @@ class DataviewPlugin extends obsidian.Plugin { this.index.reinitialize(); }, }); + this.addCommand({ + id: "dataview-rebuild-current-view", + name: "Rebuild current view", + callback: () => { + const activeView = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView); + if (activeView) { + activeView.leaf.rebuildView(); + } + }, + }); // Run index initialization, which actually traverses the vault to index files. if (!this.app.workspace.layoutReady) { this.app.workspace.onLayoutReady(async () => this.index.initialize()); @@ -20029,6 +20315,7 @@ class DataviewPlugin extends obsidian.Plugin { }); })); } + debouncedRefresh = () => null; updateRefreshSettings() { this.debouncedRefresh = obsidian.debounce(() => this.app.workspace.trigger("dataview:refresh-views"), this.settings.refreshInterval, true); } @@ -20061,10 +20348,12 @@ class DataviewPlugin extends obsidian.Plugin { * a long-lived view object to the given component for life-cycle management. */ async dataview(source, el, component, sourcePath) { + el.style.overflowX = "auto"; this.api.execute(source, el, component, sourcePath); } /** Generate a DataviewJS view running the given source in the given element. */ async dataviewjs(source, el, component, sourcePath) { + el.style.overflowX = "auto"; this.api.executeJs(source, el, component, sourcePath); } /** Render all dataview inline expressions in the given element. */ @@ -20123,6 +20412,7 @@ class DataviewPlugin extends obsidian.Plugin { } /** All of the dataview settings in a single, nice tab. */ class GeneralSettingsTab extends obsidian.PluginSettingTab { + plugin; constructor(app, plugin) { super(app, plugin); this.plugin = plugin; @@ -20401,4 +20691,4 @@ class GeneralSettingsTab extends obsidian.PluginSettingTab { } module.exports = DataviewPlugin; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9lcnJvcnMuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvZm9ybWF0cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZXMvc3lzdGVtWm9uZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZXMvSUFOQVpvbmUuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvbG9jYWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy96b25lcy9maXhlZE9mZnNldFpvbmUuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL3pvbmVzL2ludmFsaWRab25lLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL3pvbmVVdGlsLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9zZXR0aW5ncy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC91dGlsLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2VuZ2xpc2guanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvZm9ybWF0dGVyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2ludmFsaWQuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvcmVnZXhQYXJzZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2R1cmF0aW9uLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbnRlcnZhbC5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW5mby5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9kaWZmLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2RpZ2l0cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC90b2tlblBhcnNlci5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9jb252ZXJzaW9ucy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvZGF0ZXRpbWUuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2x1eG9uLmpzIiwiLi4vc3JjL3NldHRpbmdzLnRzIiwiLi4vc3JjL2FwaS9yZXN1bHQudHMiLCIuLi9ub2RlX21vZHVsZXMvcGFyc2ltbW9uL2J1aWxkL3BhcnNpbW1vbi51bWQubWluLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2Vtb2ppLXJlZ2V4L2luZGV4Lm1qcyIsIi4uL3NyYy91dGlsL25vcm1hbGl6ZS50cyIsIi4uL3NyYy9kYXRhLW1vZGVsL3ZhbHVlLnRzIiwiLi4vc3JjL2FwaS9kYXRhLWFycmF5LnRzIiwiLi4vc3JjL3V0aWwvbG9jYWxlLnRzIiwiLi4vc3JjL3VpL3JlbmRlci50cyIsIi4uL25vZGVfbW9kdWxlcy9wYXBhcGFyc2UvcGFwYXBhcnNlLm1pbi5qcyIsIi4uL3NyYy9leHByZXNzaW9uL2ZpZWxkLnRzIiwiLi4vc3JjL2RhdGEtaW5kZXgvc291cmNlLnRzIiwiLi4vc3JjL2V4cHJlc3Npb24vcGFyc2UudHMiLCIuLi9zcmMvZGF0YS1pbXBvcnQvaW5saW5lLWZpZWxkLnRzIiwiLi4vc3JjL2RhdGEtbW9kZWwvbWFya2Rvd24udHMiLCIuLi9zcmMvZGF0YS1pbXBvcnQvbWFya2Rvd24tZmlsZS50cyIsIi4uL3NyYy9kYXRhLWltcG9ydC9jc3YudHMiLCIuLi9zcmMvZGF0YS1tb2RlbC90cmFuc2ZlcmFibGUudHMiLCIuLi9ub2RlX21vZHVsZXMvbG9jYWxmb3JhZ2UvZGlzdC9sb2NhbGZvcmFnZS5qcyIsIi4uL3NyYy9kYXRhLWltcG9ydC9wZXJzaXN0ZXIudHMiLCIuLi9zcmMvZGF0YS1pbXBvcnQvd2ViLXdvcmtlci9pbXBvcnQtbWFuYWdlci50cyIsIi4uL3NyYy9kYXRhLWluZGV4L2luZGV4LnRzIiwiLi4vc3JjL2RhdGEtaW5kZXgvcmVzb2x2ZXIudHMiLCIuLi9zcmMvZXhwcmVzc2lvbi9mdW5jdGlvbnMudHMiLCIuLi9zcmMvZXhwcmVzc2lvbi9iaW5hcnlvcC50cyIsIi4uL3NyYy9leHByZXNzaW9uL2NvbnRleHQudHMiLCIuLi9zcmMvcXVlcnkvZW5naW5lLnRzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhcmUtdmVyc2lvbnMvaW5kZXgubWpzIiwiLi4vbm9kZV9tb2R1bGVzL3ByZWFjdC9kaXN0L3ByZWFjdC5tb2R1bGUuanMiLCIuLi9ub2RlX21vZHVsZXMvcHJlYWN0L2hvb2tzL2Rpc3QvaG9va3MubW9kdWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3ByZWFjdC9jb21wYXQvZGlzdC9jb21wYXQubW9kdWxlLmpzIiwiLi4vc3JjL3V0aWwvbWVkaWEudHMiLCIuLi9zcmMvdWkvbWFya2Rvd24udHN4IiwiLi4vc3JjL3VpL3ZpZXdzL3Rhc2stdmlldy50c3giLCIuLi9zcmMvdWkvdmlld3MvbGlzdC12aWV3LnRzeCIsIi4uL3NyYy91aS92aWV3cy90YWJsZS12aWV3LnRzeCIsIi4uL3NyYy9xdWVyeS9xdWVyeS50cyIsIi4uL3NyYy9xdWVyeS9wYXJzZS50cyIsIi4uL25vZGVfbW9kdWxlcy9vYnNpZGlhbi1jYWxlbmRhci11aS9kaXN0L2luZGV4Lm1qcyIsIi4uL3NyYy91aS9yZWZyZXNoYWJsZS12aWV3LnRzIiwiLi4vc3JjL3VpL3ZpZXdzL2NhbGVuZGFyLXZpZXcudHMiLCIuLi9zcmMvYXBpL2lubGluZS1hcGkudHMiLCIuLi9zcmMvdWkvdmlld3MvanMtdmlldy50cyIsIi4uL3NyYy91aS9leHBvcnQvbWFya2Rvd24udHMiLCIuLi9zcmMvYXBpL3BsdWdpbi1hcGkudHMiLCIuLi9zcmMvdWkvdmlld3MvaW5saW5lLXZpZXcudHMiLCIuLi9zcmMvdWkvdmlld3MvaW5saW5lLWZpZWxkLnRzeCIsIi4uL3NyYy91aS9scC1yZW5kZXIudHMiLCIuLi9zcmMvdWkvdmlld3MvaW5saW5lLWZpZWxkLWxpdmUtcHJldmlldy50cyIsIi4uL3NyYy9tYWluLnRzIl0sInNvdXJjZXNDb250ZW50IjpudWxsLCJuYW1lcyI6WyJuIiwicyIsImwiLCJzaW5nbGV0b24iLCJFbmdsaXNoLmZvcm1hdFJlbGF0aXZlVGltZSIsIkVuZ2xpc2gubW9udGhzIiwiRW5nbGlzaC53ZWVrZGF5cyIsIkVuZ2xpc2gubWVyaWRpZW1zIiwiRW5nbGlzaC5lcmFzIiwiRm9ybWF0cy5EQVRFX1NIT1JUIiwiRm9ybWF0cy5EQVRFX01FRCIsIkZvcm1hdHMuREFURV9GVUxMIiwiRm9ybWF0cy5EQVRFX0hVR0UiLCJGb3JtYXRzLlRJTUVfU0lNUExFIiwiRm9ybWF0cy5USU1FX1dJVEhfU0VDT05EUyIsIkZvcm1hdHMuVElNRV9XSVRIX1NIT1JUX09GRlNFVCIsIkZvcm1hdHMuVElNRV9XSVRIX0xPTkdfT0ZGU0VUIiwiRm9ybWF0cy5USU1FXzI0X1NJTVBMRSIsIkZvcm1hdHMuVElNRV8yNF9XSVRIX1NFQ09ORFMiLCJGb3JtYXRzLlRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQiLCJGb3JtYXRzLlRJTUVfMjRfV0lUSF9MT05HX09GRlNFVCIsIkZvcm1hdHMuREFURVRJTUVfU0hPUlQiLCJGb3JtYXRzLkRBVEVUSU1FX01FRCIsIkZvcm1hdHMuREFURVRJTUVfRlVMTCIsIkZvcm1hdHMuREFURVRJTUVfSFVHRSIsIkZvcm1hdHMuREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTIiwiRm9ybWF0cy5EQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTIiwiRm9ybWF0cy5EQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUyIsIkZvcm1hdHMuREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFMiLCJFbmdsaXNoLm1lcmlkaWVtRm9yRGF0ZVRpbWUiLCJFbmdsaXNoLm1vbnRoRm9yRGF0ZVRpbWUiLCJFbmdsaXNoLndlZWtkYXlGb3JEYXRlVGltZSIsIkVuZ2xpc2guZXJhRm9yRGF0ZVRpbWUiLCJFbmdsaXNoLm1vbnRoc1Nob3J0IiwiRW5nbGlzaC53ZWVrZGF5c0xvbmciLCJFbmdsaXNoLndlZWtkYXlzU2hvcnQiLCJJTlZBTElEIiwib3JkZXJlZFVuaXRzIiwiY2xvbmUiLCJGb3JtYXRzLkRBVEVfTUVEX1dJVEhfV0VFS0RBWSIsIkZvcm1hdHMuREFURVRJTUVfTUVEX1dJVEhfV0VFS0RBWSIsInRoaXMiLCJQLmFsdCIsIlAucmVnZXgiLCJQLndoaXRlc3BhY2UiLCJQLmFueSIsIk1hcmtkb3duUmVuZGVyZXIiLCJQLnNlcU1hcCIsIlAuc2VxIiwiUC5vcHRXaGl0ZXNwYWNlIiwiUC5jdXN0b20iLCJQLmNyZWF0ZUxhbmd1YWdlIiwiUC5yZWdleHAiLCJQLnN0cmluZyIsIlAubm9uZU9mIiwiUC5zdWNjZWVkIiwiUC5mYWlsIiwiTGlzdEl0ZW0iLCJQYXBhLnBhcnNlIiwicmVxdWlyZSIsImdsb2JhbCIsIkNvbXBvbmVudCIsIkRhdGF2aWV3SW1wb3J0V29ya2VyIiwiVEZpbGUiLCJURm9sZGVyIiwidSIsImkiLCJvIiwiciIsImYiLCJlIiwiYyIsImEiLCJoIiwidiIsInAiLCJ5IiwiZCIsIl8iLCJrIiwiYiIsImciLCJtIiwidyIsIngiLCJMIiwiTSIsIlAiLCJBIiwiTyIsIiQiLCJxIiwiQyIsIkgiLCJUIiwiSSIsInoiLCJqIiwiQiIsIk4iLCJEIiwiRSIsIkYiLCJHIiwiViIsInQiLCJTIiwiY3JlYXRlQ29udGV4dCIsInVzZVJlZiIsInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJSZWFjdCIsIkZyYWdtZW50IiwidXNlU3RhdGUiLCJNYXJrZG93blJlbmRlckNoaWxkIiwicmVuZGVyIiwidW5tb3VudENvbXBvbmVudEF0Tm9kZSIsIlBsYXRmb3JtIiwiUmVzdWx0Q291bnQiLCJQLmVvZiIsIlAuc2VwQnkiLCJXaWRnZXRUeXBlIiwiZWRpdG9ySW5mb0ZpZWxkIiwiVmlld1BsdWdpbiIsInZpZXciLCJEZWNvcmF0aW9uIiwiZWRpdG9yTGl2ZVByZXZpZXdGaWVsZCIsInN5bnRheFRyZWUiLCJ0b2tlbkNsYXNzTm9kZVByb3AiLCJSYW5nZVZhbHVlIiwic3RhdGUiLCJSYW5nZVNldEJ1aWxkZXIiLCJTdGF0ZUZpZWxkIiwiU3RhdGVFZmZlY3QiLCJQbHVnaW4iLCJNYXJrZG93blZpZXciLCJkZWJvdW5jZSIsIlBsdWdpblNldHRpbmdUYWIiLCJTZXR0aW5nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sVUFBVSxTQUFTLEtBQUssQ0FBQyxFQUFFO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTSxvQkFBb0IsU0FBUyxVQUFVLENBQUM7QUFDckQsRUFBRSxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ3RCLElBQUksS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JELEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNLG9CQUFvQixTQUFTLFVBQVUsQ0FBQztBQUNyRCxFQUFFLFdBQVcsQ0FBQyxNQUFNLEVBQUU7QUFDdEIsSUFBSSxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckQsR0FBRztBQUNILENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU0sb0JBQW9CLFNBQVMsVUFBVSxDQUFDO0FBQ3JELEVBQUUsV0FBVyxDQUFDLE1BQU0sRUFBRTtBQUN0QixJQUFJLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRCxHQUFHO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTSw2QkFBNkIsU0FBUyxVQUFVLENBQUMsRUFBRTtBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU0sZ0JBQWdCLFNBQVMsVUFBVSxDQUFDO0FBQ2pELEVBQUUsV0FBVyxDQUFDLElBQUks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QUM7QUFDRjtBQUNPLE1BQU0seUJBQXlCLEdBQUc7QUFDekMsRUFBRSxJQUFJLEVBQUVBLEdBQUM7QUFDVCxFQUFFLE1BQU0sRUFBRUEsR0FBQztBQUNYLEVBQUUsTUFBTSxFQUFFQSxHQUFDO0FBQ1gsRUFBRSxTQUFTLEVBQUUsS0FBSztBQUNsQixFQUFFLFlBQVksRUFBRUMsR0FBQztBQUNqQixDQUFDLENBQUM7QUFDRjtBQUNPLE1BQU0sd0JBQXdCLEdBQUc7QUFDeEMsRUFBRSxJQUFJLEVBQUVELEdBQUM7QUFDVCxFQUFFLE1BQU0sRUFBRUEsR0FBQztBQUNYLEVBQUUsTUFBTSxFQUFFQSxHQUFDO0FBQ1gsRUFBRSxTQUFTLEVBQUUsS0FBSztBQUNsQixFQUFFLFlBQVksRUFBRUUsR0FBQztBQUNqQixDQUFDLENBQUM7QUFDRjtBQUNPLE1BQU0sY0FBYyxHQUFHO0FBQzlCLEVBQUUsSUFBSSxFQUFFRixHQUFDO0FBQ1QsRUFBRSxLQUFLLEVBQUVBLEdBQUM7QUFDVixFQUFFLEdBQUcsRUFBRUEsR0FBQztBQUNSLEVBQUUsSUFBSSxFQUFFQSxHQUFDO0FBQ1QsRUFBRSxNQUFNLEVBQUVBLEdBQUM7QUFDWCxDQUFDLENBQUM7QUFDRjtBQUNPLE1BQU0sMkJBQTJCLEdBQUc7QUFDM0MsRUFBRSxJQUFJLEVBQUVBLEdBQUM7QUFDVCxFQUFFLEtBQUssRUFBRUEsR0FBQztBQUNWLEVBQUUsR0FBRyxFQUFFQSxHQUFDO0FBQ1IsRUFBRSxJQUFJLEVBQUVBLEdBQUM7QUFDVCxFQUFFLE1BQU0sRUFBRUEsR0FBQztBQUNYLEVBQUUsTUFBTSxFQUFFQSxHQUFDO0FBQ1gsQ0FBQyxDQUFDO0FBQ0Y7QUFDTyxNQUFNLFlBQVksR0FBRztBQUM1QixFQUFFLElBQUksRUFBRUEsR0FBQztBQUNULEVBQUUsS0FBSyxFQUFFQyxHQUFDO0FBQ1YsRUFBRSxHQUFHLEVBQUVELEdBQUM7QUFDUixFQUFFLElBQUksRUFBRUEsR0FBQztBQUNULEVBQUUsTUFBTSxFQUFFQSxHQUFDO0FBQ1gsQ0FBQyxDQUFDO0FBQ0Y7QUFD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LE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDckUsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLEtBQUssQ0FBQyxJQUFJLEdBQUcsY0FBYyxFQUFFO0FBQy9CLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxHQUFHLENBQUM7QUFDbEMsSUFBSSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDMUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkMsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUNoRyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFO0FBQ2hCLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDMUYsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLE9BQU8sR0FBRztBQUNaLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLElBQUksQ0FBQyxD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TUFBTTtBQUNuQixJQUFJLEVBQUUsTUFBTSxHQUFHLElBQUksRUFBRSxlQUFlLEdBQUcsSUFBSSxFQUFFLE1BQU0sR0FBRyxJQUFJLEVBQUUsY0FBYyxHQUFHLFNBQVMsRUFBRSxHQUFHLEVBQUU7QUFDN0YsSUFBSTtBQUNKLElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUUsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzdGLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxPQUFPLFlBQVk7QUFDckIsSUFBSSxNQUFNLEdBQUcsTUFBTTtBQUNuQixJQUFJLEVBQUUsTUFBTSxHQUFHLElBQUksRUFBRSxlQUFlLEdBQUcsSUFBSSxFQUFFLE1BQU0sR0FBRyxJQUFJLEVBQUUsY0FBYyxHQUFHLFNBQVMsRUFBRSxHQUFHLEVBQUU7QUFDN0YsSUFBSTtBQUNKLElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUUsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNuRyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxPQUFPLFFBQVEsQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLEVBQUUsTUFBTSxHQUFHLElBQUksRUFBRSxlQUFlLEdBQUcsSUFBSSxFQUFFLE1BQU0sR0FBRyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDbEcsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsRUFBRSxRQUFRLENB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LE1BQU0sR0FBRztBQUNULEtBQUssQ0FBQztBQUNOLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUNEO0FBQ0EsU0FBUyxVQUFVLENBQUMsS0FBSyxFQUFFO0FBQzNCLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2pGLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM1QixDQUFDO0FBQ0Q7QUFDQSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtBQUN2QyxFQUFFLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckM7QUFDQSxFQUFFLElBQUksT0FBTyxFQUFFO0FBQ2YsSUFBSSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFDbkIsSUFBSSxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFDdkIsSUFBSSxLQUFLLE1BQU0sQ0FBQyxJQUFJLFFBQVEsRUFBRTtBQUM5QixNQUFNLElBQUksY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRTtBQUN2QyxRQUFRLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDN0IsVUFBVSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0MsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO0FB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QUFDZixLQUFLLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUN4QixNQUFNLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDZixNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzQyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDZixNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzQyxLQUFLLE1BQU07QUFDWCxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDZixNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDMUMsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDO0FBQ2YsTUFBTSxDQUFDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzFDLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksWUFBWSxFQUFFO0FBQ3BCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7QUFDckMsR0FBRztBQUNILEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBQ0Q7QUFDQTtBQUNBLE1BQU0saUJBQWlCLEdBQUc7QUFDMUIsSUFBSSxLQUFLLEVBQUUsQ0FBQztBQUNaLElBQUksR0FBRyxFQUFFLENBQUM7QUFDVixJQUFJLElBQUksRUFBRSxDQUFDO0FBQ1gsSUFBSSxNQUFNLEVBQUUsQ0FBQztBQUNiLElBQUksTUFBTSxFQUFFLENBQUM7QUFDYixJQUFJLFdBQVcs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QUFDQTtBQUNBO0FBQ0EsRUFBRSxJQUFJLE9BQU8sR0FBRztBQUNoQixJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUM1RCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxJQUFJLEtBQUssR0FBRztBQUNkLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztBQUM3QyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxJQUFJLEdBQUcsR0FBRztBQUNaLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUMzQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxJQUFJLElBQUksR0FBRztBQUNiLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztBQUM1QyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxJQUFJLE1BQU0sR0FBRztBQUNmLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztBQUM5QyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxJQUFJLE1BQU0sR0FBRztBQUNmLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztBQUM5QyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFB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QUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTSxXQUFXLEVBQUUsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQywrRkFBK0YsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsMkVBQTJFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQywwREFBMEQsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFNLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLE1BQU0sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFlBQVksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLCtEQUErRCxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdJQUFnSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLG1FQUFtRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLDBDQUEwQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxD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QyxXQUFXLEVBQUUsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLHdPQUF3TyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsWUFBWSxNQUFNLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxjQUFjLFlBQVksTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxZQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLGlCQUFpQixFQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtEQUFrRCxDQUFDLENBQUMsQ0FBQyxvTkFBb04sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyw0REFBNEQsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFNLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsNkNBQTZDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLFlBQVksTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0s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QUFDLEVBQUUsQ0FBQztJQUN2QyxLQUFLLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxFQUFFLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUVwQyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQyxJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUVuQyxJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN2QyxLQUFLLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxFQUFFLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUVwQyxNQUFNLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMzQyxPQUFPLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM1QyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN6QyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUV0QyxNQUFNLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMzQyxPQUFPLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM1QyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN6QyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztDQUN6QyxDQUFDO0FBRUY7QUFDTyxNQUFNLGVBQWUsR0FBRztBQUMzQixJQUFBLEdBQUcsRUFBRSxNQUFNLFFBQVEsQ0FBQyxLQUFLLEVBQUU7QUFDM0IsSUFBQSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztBQUM1QyxJQUFBLFNBQVMsRUFBRSxNQUNQLFFBQVEsQ0FBQyxLQUFLLEVBQUU7U0FDWCxPQUFPLENBQUMsS0FBSyxDQUFDO1NBQ2QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRCxJQUFBLFFBQVEsRUFBRSxNQUNOLFFBQVEsQ0FBQyxLQUFL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LENBQUMsU0FBUyxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUM7O1lBQ3BGLE9BQU8sQ0FBQSxFQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUM7S0FDN0M7SUFFTSxPQUFPLEdBQUE7O0FBQ1YsUUFBQSxPQUFPLENBQUEsRUFBQSxJQUFDLENBQUEsRUFBQSxHQUFBLENBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFJLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFJLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQUcsSUFBQSxJQUFBLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLENBQUEsQ0FBQyxDQUFDLENBQUM7S0FDbkc7SUFFTSxHQUFHLEdBQUE7O0FBQ04sUUFBQSxPQUFPLENBQUEsRUFBQSxJQUFDLENBQUEsRUFBQSxHQUFBLENBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFJLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFJLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQUcsSUFBQSxJQUFBLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLENBQUEsQ0FB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QyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU9BLGVBQU8sRUFBRSxVQUFVLEVBQUVBLGVBQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7Q0FDcjFCLENBQUMsVUFBVSxNQUFNLENBQUM7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QUcsUUFBUSxJQUFJLENBQUMsR0FBRyxRQUFRLElBQUksQ0FBQyxDQUFDO0FBQ25ELFNBQVEsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxRQUFRLElBQUksQ0FBQyxDQUFDO0FBQzFELFNBQVEsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxRQUFRLEdBQUcsRUFBRSxDQUFDO01BQ3BEO0tBQ0QsT0FBTyxNQUFNLENBQUM7RUFDakI7QUFDRDtBQUNBO0FBQ0E7Q0FDQSxTQUFTLGNBQWMsQ0FBQyxNQUFNLEVBQUU7QUFDaEM7S0FDSSxJQUFJLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2QyxLQUFJLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztLQUN0QixJQUFJLENBQUMsQ0FBQztBQUNWO0FBQ0EsS0FBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUMxQztTQUNRLFlBQVksSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzFDLFlBQVksSUFBSSxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ3BFLFlBQVksSUFBSSxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNqRixTQUFRLFlBQVksSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxD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Z0JBQUEsQ0FBQSxLQUFLLEdBQUcsSUFBSSxlQUFlLENBQUMsT0FBTyxDQUFDO0FBQzVDLFNBQUEsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQyxTQUFBLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDeEIsU0FBQSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDO0FBQzFDLFNBQUEsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQyxTQUFBLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDeEIsU0FBQSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxHQUFHLEdBQWlCLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQztBQUN0RCxTQUFBLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0IsU0FBQSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9CLFNBQUEsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xHLFNBQUEsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssZ0JBQUEsQ0FBQSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDekMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxNQUFNLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxnQkFBQSxDQUFBLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRixTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLEdBQUcsR0FBaUIsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDO0FBQ3RELFNBQUEsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQixTQUFBLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0IsU0FBQSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakcsU0FBQSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxnQkFBQSxDQUFBLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN6QyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLE1BQU0sSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEdB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LElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQzdCLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ2xDLFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsVUFBVSxHQUFpQixJQUFJLGVBQWUsQ0FBQyxZQUFZLENBQUM7QUFDcEUsU0FBQSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxRQUFRLEtBQUssR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNyRSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsUUFBUSxHQUFpQixJQUFJLGVBQWUsQ0FBQyxVQUFVLENBQUM7QUFDaEUsU0FBQSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLEtBQUssR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMvRCxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsT0FBTyxHQUFpQixJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUM7U0FDOUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQzlELElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsT0FBTyxLQUFLLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3JGLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQzdCLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQzdCLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDcEIsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxRQUFRLEdBQWlCLElBQUksZUFBZSxDQUFDLFVBQVUsQ0FBQztTQUNoRSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDNUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxPQUFPLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDbkYsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNwQixTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2QixTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLFNBQVMsR0FBaUIsSUFBSSxlQUFlLENBQUMsV0FBVyxDQUFDO0FBQ2xFLFNBQUEsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxLQUFLLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDOUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDbEYsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNwQixTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2QixTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLFFBQVEsR0FBaUIsSUFBSSxlQUFlLENBQUMsVUFBVSxDQUFDO0FBQ2hFLFNBQUEsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEtBQUk7UUFDeEQsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ3JDLE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUN6RSxTQUFBO0FBQU0sYUFBQTtBQUNILFlBQUEsT0FBTyxHQUFHLENBQUM7QUFDZCxTQUFBO0FBQ0wsS0FBQyxDQUFDO1NBQ0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxnQkFBQSxDQUFBLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNqRixJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3BCLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsUUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQztBQUNqRCxTQUFBLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN0RCxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsUUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLFVBQVUsQ0FBQztBQUNsRCxTQUFBLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFD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RyxDQUFDLENBQUM7YUFDdkUsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2xFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNoRSxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbEUsUUFBUSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2pFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQzNFOztBQUdNLElBQUEsUUFBUSxDQUFDLEVBQVksRUFBRSxJQUFhLEVBQUUsS0FBYyxFQUFFLEdBQVksRUFBQTtRQUNyRSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckMsUUFBQSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDaEUsYUFBQSxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFFNUUsUUFBQSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUMxRSxRQUFBLElBQUksT0FBTztBQUFFLFlBQUEsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7O0FBRzlELFFBQUEsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckUsUUFBQSxJQUFJLFFBQVE7QUFBRSxZQUFBLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDOztBQUdoRSxRQUFBLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLFFBQUEsSUFBSSxRQUFRO0FBQUUsWUFBQSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQzs7QUFHaEUsUUFBQSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoRSxRQUFBLElBQUksUUFBUTtBQUFFLFlBQUEsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFaEUsUUFBQSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBZ0MsNkJBQUEsRUFBQSxRQUFRLENBQUksQ0FBQSxFQUFBLEVBQUUsQ0FBSSxDQUFBLEVBQUEsU0FBUyxDQUFHLENBQUEsQ0FBQSxDQUFDLENBQUM7S0FDekY7O0FBR00sSUFBQSxPQUFPLElBQUksQ0FBQyxFQUFZLEVBQUUsSUFBc0IsRUFBRSxLQUF1QixFQUFBO0FBQzVFLFFBQUEsT0FBTyxHQUFHLElBQUksQ0FBQSxDQUFBLEVBQUksRUFBRSxDQUFJLENBQUEsRUFBQSxLQUFLLEVBQUUsQ0FBQztLQUNuQztBQUNKLENBQUE7QUFFRDtBQUNNLFNBQVUsZUFBZSxDQUFDLGNBQXFDLEVBQUE7QUFDakUsSUFBQSxRQUNJLGVBQWUsQ0FBQyxNQUFNLEVBQUU7O1NBRW5CLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQzs7U0FFakUsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDM0UsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRTNFLFNBQUEsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELFNBQUEsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELFNBQUEsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELFNBQUEsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELFNBQUEsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDOztBQUVsRCxTQUFBLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakYsU0FBQSxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pGLFNBQUEsWUFBWSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRTNFLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSTtRQUNwQyxPQUFPLGlCQUFpQixDQUNwQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQ3hGLENBQUM7QUFDTixLQUFDLENBQUM7U0FDRCxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkQsWUFBWSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDOztTQUUxRCxRQUFRLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM3RSxRQUFRLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5RSxTQUFBLFFBQVEsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEYsU0FBQSxZQUFZLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDOztTQUU1RixRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFNLEVBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzs7U0FFaEYsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7O0FBRXBFLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFDL0MsU0FBQSxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQztBQUMvQyxTQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQy9DLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFDL0MsU0FBQSxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQztBQUMvQyxTQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQy9DLFNB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SUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBT0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUVaLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFL0QsR0FBQyxDQUFDLEtBQUssRUFBRUEsR0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUzRFLEdBQUMsRUFBRSxDQUFDLE9BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLFNBQVNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFNLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFakIsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDa0IsR0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFakIsR0FBQyxHQUFHakUsR0FBQyxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQ2lFLEdBQUMsQ0FBQ2pFLEdBQUMsQ0FBQyxpQkFBaUIsR0FBR2tFLEdBQUMsRUFBRWdCLEdBQUMsRUFBQyxDQUFDLFNBQVNBLEdBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSWxCLEdBQUMsQ0FBQyxJQUFJLENBQUNHLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0gsR0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDQSxHQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQ1EsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNXLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUNKLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQ0ssR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUVKLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDaEIsR0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUVBLEdBQUMsQ0FBQyxJQUFJLENBQUNHLEdBQUMsQ0FBQyxDQUFDLENBQUNlLEdBQUMsQ0FBQyxHQUFHLENBQUMsRUFBQyxDQUFDLFNBQVNHLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRXRGLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDNEUsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQ0osR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDSSxHQUFDLENBQUNFLEdBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDRixHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNXLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDakIsR0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQ2MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRUksR0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdsQixHQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDbUIsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDVCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ1UsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU0QsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVNFLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsR0FBR25CLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUNtQixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTSixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxTQUFTSyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFdkIsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxTQUFTc0IsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUVDLEdBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQyxHQUFDLENBQUNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0QsR0FBQyxDQUFDQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLHlCQUF5QixHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxPQUFPLEdBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLFNBQVMsR0FBRyxDQUFDLEVBQUUsU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsU0FBU0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMvRixHQUFDLENBQUMsS0FBSyxDQUFDQSxHQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM4RixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzlGLEdBQUMsQ0FBQyxLQUFLLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBU21GLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNuRixHQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSThFLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQ2tCLEdBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUN4QixHQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEtBQUksQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDeEUsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQ3dFLEdBQUMsQ0FBQ0EsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNhLEdBQUMsQ0FBQyxDQUFDLENBQUNkLEdBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHTSxHQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQzdFLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQ2lHLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ2pHLEdBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVNvRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQ0csR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDdkYsR0FBQyxDQUFDLEdBQUcsRUFBRUEsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVNpRyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTVCLEdBQUMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBQyxDQUFDLEdBQUdzQixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUdOLEdBQUMsQ0FBQyxDQUFDLENBQUNkLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRVEsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVOLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFbUIsR0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTTCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDdkYsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxTQUFTeUYsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUd6RixHQUFDLENBQUMsT0FBTyxFQUFFQSxHQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUV1RixHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsR0FBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUN2RixHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFeUYsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUVoQixHQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQyxDQUFDLFNBQVN1QixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVNFLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDbEcsR0FBQyxDQUFDLEVBQUUsRUFBRUEsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUNtRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDVCxHQUFDLENBQUNHLEdBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRVIsR0FBQyxDQUFDQSxHQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDZSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTZSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDRCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsR0FBQyxFQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDNUIsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0csR0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMwQixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUNqQyxHQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUNhLEdBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDbEYsR0FBQyxDQUFDLEtBQUssQ0FBQ0MsR0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQytELEdBQUMsQ0FBQyxDQUFDLENBQXVEZSxHQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQ04sR0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUNTLEdBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDLENBQUNILEdBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQ0csR0FBQyxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsQ0FBQ0gsR0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUNELEdBQUMsQ0FBQ2IsR0FBQyxDQUFDLEVBQUUsQ0FBQ0UsR0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDQyxHQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDZSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQ2QsR0FBQyxDQUFDLENBQUM7O0FDQWowVSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUN0RSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxHQUFHLEVBQUVBLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDa0csR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNsRyxHQUFDLENBQUMsR0FBRyxFQUFFZ0csR0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDaEcsR0FBQyxDQUFDLEdBQUcsRUFBRWdHLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDTSxHQUFDLENBQUMsVUFBVSxDQUFDLE9BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTZCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTSxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTYyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPTixHQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQ1EsR0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVNYLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBU1AsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ3BGLEdBQUMsQ0FBQyxhQUFhLEVBQUVBLEdBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBcUssU0FBU3dHLEdBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDekIsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDSSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUNuRixHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDK0UsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUNJLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQ25GLEdBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBR0EsR0FBQyxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxxQkFBcUIsR0FBR2lHLEdBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxDQUFDakcsR0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDK0UsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFSSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQ25GLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMrRSxHQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFL0UsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJaUYsR0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLHFCQUFxQixDQUFDLFNBQVNnQixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUNoQixHQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUNBLEdBQUMsR0FBRyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTSSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU2EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBU0UsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUNBdDVGLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFVBQVUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDTyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUl6RyxHQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNzRSxHQUFDLENBQUMsR0FBRyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUNGLEdBQUMsQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFLLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDRSxHQUFDLENBQUMsR0FBRyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU9tQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQ25DLEdBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSXRFLEdBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFeUcsR0FBQyxDQUFDeEMsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDd0MsR0FBQyxDQUFDeEMsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUNFLEdBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDc0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJekcsR0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDb0UsR0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyw2UkFBNlIsQ0FBQyxDQUFDLENBQUMsa0NBQWtDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxXQUFXLEVBQUUsT0FBTyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sTUFBTSxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQ0QsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBT0QsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDbEUsR0FBQyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQywyQkFBMkIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUNBLEdBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNzRSxHQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQ0EsR0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEdBQUcsQ0FBQyxFQUFFLGNBQWMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLGNBQWMsR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUNGLEdBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDRSxHQUFDLENBQUMsR0FBRyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDQSxHQUFDLENBQUMsTUFBTSxDQUFDQSxHQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFJLENBQUMsQ0FBSSxJQUFDLEVBQUUsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWEsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBT21DLEdBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHeEMsR0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDSSxHQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBR0YsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDRixHQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUNZLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNMLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU9LLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDSCxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMs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LE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUMvQyxZQUFBLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUUxRSxZQUFBLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkIsWUFBQSxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVELFNBQUE7QUFDRCxRQUFBLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDekIsS0FBQTs7O0FBSUQsSUFBQSxJQUFJLEtBQUssR0FBRyxDQUFLLEVBQUEsRUFBQSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDOztJQUV2RyxLQUFLLElBQUksQ0FBSyxFQUFBLEVBQUEsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsSUFBQSxDQUFNLENBQUM7O0FBRTFFLElBQUEsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDMUMsUUFBQSxLQUFLLElBQUksQ0FBQSxFQUFBLEVBQUssT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssUUFBUSxDQUFDLENB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 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9lcnJvcnMuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvZm9ybWF0cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZXMvc3lzdGVtWm9uZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZXMvSUFOQVpvbmUuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvbG9jYWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy96b25lcy9maXhlZE9mZnNldFpvbmUuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL3pvbmVzL2ludmFsaWRab25lLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL3pvbmVVdGlsLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9zZXR0aW5ncy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC91dGlsLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2VuZ2xpc2guanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvZm9ybWF0dGVyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2ludmFsaWQuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvcmVnZXhQYXJzZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2R1cmF0aW9uLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbnRlcnZhbC5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW5mby5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9kaWZmLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2RpZ2l0cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC90b2tlblBhcnNlci5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9jb252ZXJzaW9ucy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvZGF0ZXRpbWUuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2x1eG9uLmpzIiwiLi4vc3JjL3NldHRpbmdzLnRzIiwiLi4vc3JjL2FwaS9yZXN1bHQudHMiLCIuLi9ub2RlX21vZHVsZXMvcGFyc2ltbW9uL2J1aWxkL3BhcnNpbW1vbi51bWQubWluLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2Vtb2ppLXJlZ2V4L2luZGV4Lm1qcyIsIi4uL3NyYy91dGlsL25vcm1hbGl6ZS50cyIsIi4uL3NyYy9kYXRhLW1vZGVsL3ZhbHVlLnRzIiwiLi4vc3JjL2FwaS9kYXRhLWFycmF5LnRzIiwiLi4vc3JjL3V0aWwvbG9jYWxlLnRzIiwiLi4vc3JjL3VpL3JlbmRlci50cyIsIi4uL25vZGVfbW9kdWxlcy9wYXBhcGFyc2UvcGFwYXBhcnNlLm1pbi5qcyIsIi4uL3NyYy9leHByZXNzaW9uL2ZpZWxkLnRzIiwiLi4vc3JjL2RhdGEtaW5kZXgvc291cmNlLnRzIiwiLi4vc3JjL2V4cHJlc3Npb24vcGFyc2UudHMiLCIuLi9zcmMvZGF0YS1pbXBvcnQvaW5saW5lLWZpZWxkLnRzIiwiLi4vc3JjL2RhdGEtbW9kZWwvbWFya2Rvd24udHMiLCIuLi9zcmMvZGF0YS1pbXBvcnQvbWFya2Rvd24tZmlsZS50cyIsIi4uL3NyYy9kYXRhLWltcG9ydC9jc3YudHMiLCIuLi9zcmMvZGF0YS1tb2RlbC90cmFuc2ZlcmFibGUudHMiLCIuLi9ub2RlX21vZHVsZXMvbG9jYWxmb3JhZ2UvZGlzdC9sb2NhbGZvcmFnZS5qcyIsIi4uL3NyYy9kYXRhLWltcG9ydC9wZXJzaXN0ZXIudHMiLCIuLi9zcmMvZGF0YS1pbXBvcnQvd2ViLXdvcmtlci9pbXBvcnQtbWFuYWdlci50cyIsIi4uL3NyYy9kYXRhLWluZGV4L2luZGV4LnRzIiwiLi4vc3JjL2RhdGEtaW5kZXgvcmVzb2x2ZXIudHMiLCIuLi9zcmMvdXRpbC9oYXNoLnRzIiwiLi4vc3JjL2V4cHJlc3Npb24vZnVuY3Rpb25zLnRzIiwiLi4vc3JjL2V4cHJlc3Npb24vYmluYXJ5b3AudHMiLCIuLi9zcmMvZXhwcmVzc2lvbi9jb250ZXh0LnRzIiwiLi4vc3JjL3F1ZXJ5L2VuZ2luZS50cyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXJlLXZlcnNpb25zL2luZGV4Lm1qcyIsIi4uL25vZGVfbW9kdWxlcy9wcmVhY3QvZGlzdC9wcmVhY3QubW9kdWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3ByZWFjdC9ob29rcy9kaXN0L2hvb2tzLm1vZHVsZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9wcmVhY3QvY29tcGF0L2Rpc3QvY29tcGF0Lm1vZHVsZS5qcyIsIi4uL3NyYy91dGlsL21lZGlhLnRzIiwiLi4vc3JjL3VpL21hcmtkb3duLnRzeCIsIi4uL3NyYy91aS92aWV3cy90YXNrLXZpZXcudHN4IiwiLi4vc3JjL3VpL3ZpZXdzL2xpc3Qtdmlldy50c3giLCIuLi9zcmMvdWkvdmlld3MvdGFibGUtdmlldy50c3giLCIuLi9zcmMvcXVlcnkvcXVlcnkudHMiLCIuLi9zcmMvcXVlcnkvcGFyc2UudHMiLCIuLi9ub2RlX21vZHVsZXMvb2JzaWRpYW4tY2FsZW5kYXItdWkvZGlzdC9pbmRleC5tanMiLCIuLi9zcmMvdWkvcmVmcmVzaGFibGUtdmlldy50cyIsIi4uL3NyYy91aS92aWV3cy9jYWxlbmRhci12aWV3LnRzIiwiLi4vc3JjL2FwaS9pbmxpbmUtYXBpLnRzIiwiLi4vc3JjL3VpL3ZpZXdzL2pzLXZpZXcudHMiLCIuLi9zcmMvdWkvZXhwb3J0L21hcmtkb3duLnRzIiwiLi4vc3JjL2FwaS9wbHVnaW4tYXBpLnRzIiwiLi4vc3JjL3VpL3ZpZXdzL2lubGluZS12aWV3LnRzIiwiLi4vc3JjL3VpL3ZpZXdzL2lubGluZS1maWVsZC50c3giLCIuLi9zcmMvdWkvbHAtcmVuZGVyLnRzIiwiLi4vc3JjL3VpL3ZpZXdzL2lubGluZS1maWVsZC1saXZlLXByZXZpZXcudHMiLCIuLi9zcmMvbWFpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6bnVsbCwibmFtZXMiOlsibiIsInMiLCJsIiwic2luZ2xldG9uIiwiRW5nbGlzaC5mb3JtYXRSZWxhdGl2ZVRpbWUiLCJFbmdsaXNoLm1vbnRocyIsIkVuZ2xpc2gud2Vla2RheXMiLCJFbmdsaXNoLm1lcmlkaWVtcyIsIkVuZ2xpc2guZXJhcyIsIkZvcm1hdHMuREFURV9TSE9SVCIsIkZvcm1hdHMuREFURV9NRUQiLCJGb3JtYXRzLkRBVEVfRlVMTCIsIkZvcm1hdHMuREFURV9IVUdFIiwiRm9ybWF0cy5USU1FX1NJTVBMRSIsIkZvcm1hdHMuVElNRV9XSVRIX1NFQ09ORFMiLCJGb3JtYXRzLlRJTUVfV0lUSF9TSE9SVF9PRkZTRVQiLCJGb3JtYXRzLlRJTUVfV0lUSF9MT05HX09GRlNFVCIsIkZvcm1hdHMuVElNRV8yNF9TSU1QTEUiLCJGb3JtYXRzLlRJTUVfMjRfV0lUSF9TRUNPTkRTIiwiRm9ybWF0cy5USU1FXzI0X1dJVEhfU0hPUlRfT0ZGU0VUIiwiRm9ybWF0cy5USU1FXzI0X1dJVEhfTE9OR19PRkZTRVQiLCJGb3JtYXRzLkRBVEVUSU1FX1NIT1JUIiwiRm9ybWF0cy5EQVRFVElNRV9NRUQiLCJGb3JtYXRzLkRBVEVUSU1FX0ZVTEwiLCJGb3JtYXRzLkRBVEVUSU1FX0hVR0UiLCJGb3JtYXRzLkRBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUyIsIkZvcm1hdHMuREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUyIsIkZvcm1hdHMuREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMiLCJGb3JtYXRzLkRBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTIiwiRW5nbGlzaC5tZXJpZGllbUZvckRhdGVUaW1lIiwiRW5nbGlzaC5tb250aEZvckRhdGVUaW1lIiwiRW5nbGlzaC53ZWVrZGF5Rm9yRGF0ZVRpbWUiLCJFbmdsaXNoLmVyYUZvckRhdGVUaW1lIiwiRW5nbGlzaC5tb250aHNTaG9ydCIsIkVuZ2xpc2gud2Vla2RheXNMb25nIiwiRW5nbGlzaC53ZWVrZGF5c1Nob3J0IiwiSU5WQUxJRCIsIm9yZGVyZWRVbml0cyIsImNsb25lIiwiRm9ybWF0cy5EQVRFX01FRF9XSVRIX1dFRUtEQVkiLCJGb3JtYXRzLkRBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkiLCJ0aGlzIiwiUC5hbHQiLCJQLnJlZ2V4IiwiUC53aGl0ZXNwYWNlIiwiUC5hbnkiLCJNYXJrZG93blJlbmRlcmVyIiwiUC5zZXFNYXAiLCJQLnNlcSIsIlAub3B0V2hpdGVzcGFjZSIsIlAuY3VzdG9tIiwiUC5jcmVhdGVMYW5ndWFnZSIsIlAucmVnZXhwIiwiUC5zdHJpbmciLCJQLm5vbmVPZiIsIlAuc3VjY2VlZCIsIlAuZmFpbCIsIkxpc3RJdGVtIiwiUGFwYS5wYXJzZSIsInJlcXVpcmUiLCJnbG9iYWwiLCJDb21wb25lbnQiLCJEYXRhdmlld0ltcG9ydFdvcmtlciIsIlRGaWxlIiwiVEZvbGRlciIsInUiLCJpIiwibyIsInIiLCJmIiwiZSIsImMiLCJhIiwiaCIsInYiLCJwIiwieSIsImQiLCJfIiwiayIsImIiLCJnIiwibSIsInciLCJ4IiwiTCIsIk0iLCJQIiwiQSIsIk8iLCIkIiwicSIsIkMiLCJIIiwiVCIsIkkiLCJ6IiwiaiIsIkIiLCJOIiwiRCIsIkUiLCJGIiwiRyIsIlYiLCJ0IiwiUyIsImNyZWF0ZUNvbnRleHQiLCJ1c2VSZWYiLCJ1c2VDb250ZXh0IiwidXNlRWZmZWN0IiwiUmVhY3QiLCJGcmFnbWVudCIsInVzZVN0YXRlIiwiTWFya2Rvd25SZW5kZXJDaGlsZCIsInJlbmRlciIsInVubW91bnRDb21wb25lbnRBdE5vZGUiLCJQbGF0Zm9ybSIsIlJlc3VsdENvdW50IiwiUC5lb2YiLCJQLlBhcnNlciIsIlAubWFrZUZhaWx1cmUiLCJQLm1ha2VTdWNjZXNzIiwiUC5zZXBCeSIsIldpZGdldFR5cGUiLCJlZGl0b3JJbmZvRmllbGQiLCJWaWV3UGx1Z2luIiwidmlldyIsIkRlY29yYXRpb24iLCJlZGl0b3JMaXZlUHJldmlld0ZpZWxkIiwic3ludGF4VHJlZSIsInRva2VuQ2xhc3NOb2RlUHJvcCIsIlJhbmdlVmFsdWUiLCJzdGF0ZSIsIlJhbmdlU2V0QnVpbGRlciIsIlN0YXRlRmllbGQiLCJTdGF0ZUVmZmVjdCIsIlBsdWdpbiIsIk1hcmtkb3duVmlldyIsImRlYm91bmNlIiwiUGx1Z2luU2V0dGluZ1RhYiIsIlNldHRpbmciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxVQUFVLFNBQVMsS0FBSyxDQUFDLEVBQUU7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNLG9CQUFvQixTQUFTLFVBQVUsQ0FBQztBQUNyRCxFQUFFLFdBQVcsQ0FBQyxNQUFNLEVBQUU7QUFDdEIsSUFBSSxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckQsR0FBRztBQUNILENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU0sb0JBQW9CLFNBQVMsVUFBVSxDQUFDO0FBQ3JELEVBQUUsV0FBVyxDQUFDLE1BQU0sRUFBRTtBQUN0QixJQUFJLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRCxHQUFHO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTSxvQkFBb0IsU0FBUyxVQUFVLENBQUM7QUFDckQsRUFBRSxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ3RCLElBQUksS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JELEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNLDZCQUE2QixTQUFTLFVBQVUsQ0FBQyxFQUFFO0FBQ2hFO0FBQ0E7QUFD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Q0FBQztBQUN0QixHQUFHO0FBQ0g7O0FDdExBO0FBQ0E7QUFDQSxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7QUFDckIsU0FBUyxXQUFXLENBQUMsU0FBUyxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUU7QUFDM0MsRUFBRSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDaEQsRUFBRSxJQUFJLEdBQUcsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0IsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO0FBQ1osSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMvQyxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDM0IsR0FBRztBQUNILEVBQUUsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBQ0Q7QUFDQSxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7QUFDckIsU0FBUyxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUU7QUFDNUMsRUFBRSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDaEQsRUFBRSxJQUFJLEdBQUcsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0IsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO0FBQ1osSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNuRCxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDM0IsR0FBRztBQUNILEVBQUUsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBQ0Q7QUFDQSxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7QUFDdEIsU0FBUyxZQUFZ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QUM3RixJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0FBQ2hELElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7QUFDOUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssQ0FBQztBQUMvRixNQUFNLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDZixJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0FBQ2hELElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7QUFDcEQsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssQ0FBQztBQUNyRDtBQUNBO0FBQ0EsTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ3JFLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUM7QUFDOUIsSUFBSSxPQUFPLENBQUMsQ0FBQztBQUNiLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLENBQUMsSUFBSSxHQUFHLEVB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QUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUM3RSxFQUFFLFVBQVUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdkU7QUFDQSxTQUFTLGNBQWMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO0FBQ3JDLEVBQUUsT0FBTyxJQUFJLE9BQU87QUFDcEIsSUFBSSxtQkFBbUI7QUFDdkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLE9BQU8sS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUM7QUFDckYsR0FBRyxDQUFDO0FBQ0osQ0FBQztBQUNEO0FBQ0EsU0FBUyxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7QUFDckMsRUFBRSxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckQ7QUFDQSxFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO0FBQy9CLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDaEQsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDM0I7QUFDQSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzNCLENBQUM7QUFDRDtBQUNBLFNBQVMs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QUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLO0FBQzNELElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksS0FBSztBQUMxQixNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDNUQsTUFBTSxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0QsTUFBTSxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLEtBQUs7QUFDTCxJQUFJLE1BQU0sR0FBRyxDQUFDLElBQUksS0FBSztBQUN2QixNQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtBQUMxQixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRTtBQUN2QyxVQUFVLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0UsU0FBUyxNQUFNLE9BQU8sQ0FBQyxDQUFDO0FBQ3hCLE9BQU8sTUFBTTtBQUNiLFFBQVEsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0MsT0FBTztBQUNQLEtBQUssQ0FBQztBQUNOO0FBQ0EsRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7QUFDakIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFD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QUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQzVDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLElBQUksT0FBTyxHQUFHO0FBQ2hCLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQzVELEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLElBQUksS0FBSyxHQUFHO0FBQ2QsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0FBQzdDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLElBQUksR0FBRyxHQUFHO0FBQ1osSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQzNDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLElBQUksSUFBSSxHQUFHO0FBQ2IsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQzVDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLElBQUksTUFBTSxHQUFHO0FBQ2YsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO0FBQzlDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLElBQUksTUFBTSxHQUFHO0FBQ2YsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFN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QW1ELE1BQWUsQ0FBQSxPQUFBLENBQUEsQ0FBQyxHQUFvSCxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQ2EsY0FBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTSxXQUFXLEVBQUUsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQywrRkFBK0YsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsMkVBQTJFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQywwREFBMEQsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFNLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLE1BQU0sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFlBQVksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLCtEQUErRCxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdJQUFnSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLG1FQUFtRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLDBDQUEwQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFD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QUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsd09BQXdPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxZQUFZLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxjQUFjLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLGNBQWMsWUFBWSxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLFlBQVksTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEVBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFNLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUMsQ0FBQyxLQUFLLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEdBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsS0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxHQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUMsQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsa0RBQWtELENBQUMsQ0FBQyxDQUFDLG9OQUFvTixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLDREQUE0RCxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxFQUFFLE9BQU8sR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU0sSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyw2Q0FBNkMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMs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QUUsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3JDLEdBQUcsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBRXRDLEtBQUssRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3pDLE1BQU0sRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzFDLEVBQUUsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3RDLEdBQUcsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBRXZDLElBQUksRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3ZDLEtBQUssRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3hDLEVBQUUsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3JDLEdBQUcsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3RDLENBQUMsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBRXBDLEdBQUcsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3JDLElBQUksRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3RDLENBQUMsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBRW5DLElBQUksRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3ZDLEtBQUssRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3hDLEVBQUUsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3JDLEdBQUcsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3RDLENBQUMsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBRXBDLE1BQU0sRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzNDLE9BQU8sRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzVDLEdBQUcsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3hDLElBQUksRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3pDLENBQUMsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBRXRDLE1BQU0sRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzNDLE9BQU8sRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzVDLEdBQUcsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3hDLElBQUksRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3pDLENBQUMsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0NBQ3pDLENBQUM7QUFFRjtBQUNPLE1BQU0sZUFBZSxHQUFHO0FBQzNCLElBQUEsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFDLEtBQUssRUFBRTtBQUMzQixJQUFBLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0FBQzVDLElBQUEsU0FBUyxFQUFFLE1BQ1AsUUFBUSxDQUFDLEtBQUssRUFBRTtTQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUM7U0FDZCxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hELElBQUEsUUFBUSxFQUFFLE1BQ04sUUFBUSxDQUFDLEtBQUssRUFBRTtTQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUM7U0FDZCxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQy9DLElBQUEsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDM0MsSUFBQSxlQUFlLEVBQUUsTUFBTSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztBQUN2RCxJQUFBLEdBQUcsRUFBRSxNQUFNLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ3pDLElBQUEsYUFBYSxFQUFFLE1BQU0sUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDbkQsSUFBQSxHQUFHLEVBQUUsTUFBTSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztBQUMzQyxJQUFBLGVBQWUsRUFBRSxNQUFNLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0FBQ3ZELElBQUEsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDekMsSUFBQSxhQUFhLEVBQUUsTUFBTSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUNuRCxJQUFBLEdBQUcsRUFBRSxNQUFNLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0FBQzVDLElBQUEsZ0JBQWdCLEVBQUUsTUFBTSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztBQUN6RCxJQUFBLEdBQUcsRUFBRSxNQUFNLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO0FBQzFDLElBQUEsY0FBYyxFQUFFLE1BQU0sUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7Q0FDeEQsQ0FBQztBQUVGOzs7QUFHRztBQUNJLE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBRXZFO0FBQ0E7QUFDQTtBQUVBO0FBQ0EsU0FBUyxvQkFBb0IsQ0FBQyxJQUFZLEVBQUE7QUFDdEMsSUFBQSxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNkLElBQUEsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQzlDLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUk7WUFBRSxTQUFTO1FBQ2pELE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEYsS0FBQTtBQUVELElBQUEsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFFRDtBQUNNLFNBQVUsY0FBYyxDQUFDLE9BQWUsRUFBQTtJQUMxQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxHQUFHLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFFRDtTQUNnQixrQkFBa0IsQ0FDOUIsS0FBa0IsRUFDbEIsR0FBZ0IsRUFDaEIsT0FBZ0MsRUFBQTtBQUVoQyxJQUFBLE9BQU9NLCtCQUFRLENBQUMsS0FBSyxFQUFFQyw0QkFBSyxDQUFDQyxzQ0FBZSxFQUFFLEdBQUcsRUFBRUEsc0NBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFJLEtBQUk7QUFDL0YsUUFBQSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQztBQUFFLFlBQUEsT0FBTyxLQUFLLENBQUM7UUFFbkMsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEQsUUFBQSxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUM5QyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEQsU0FBQTtBQUNELFFBQUEsT0FBTyxJQUFJLENBQUM7QUFDaEIsS0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO1NBRWUsUUFBUSxDQUFJLElBQWlCLEVBQUUsR0FBRyxLQUFnQyxFQUFBO0lBQzlFLE9BQU9DLCtCQUFRLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxLQUFJO0FBQ2pDLFFBQUEsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUk7WUFDaEIsSUFBSSxNQUFNLEdBQUksSUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQUUsZ0JBQUEsT0FBTyxNQUFNLENBQUM7QUFFbEMsWUFBQSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRTtBQUNwQixnQkFBQSxJQUFJLElBQUksR0FBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQVUsQ0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNuRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07QUFBRSxvQkFBQSxPQUFPLE1BQU0sQ0FBQztnQkFFaEMsTUFBTSxHQUFHLElBQUksQ0FBQztBQUNqQixhQUFBO0FBRUQsWUFBQSxPQUFPLE1BQU0sQ0FBQztBQUNsQixTQUFDLENBQUM7QUFDTixLQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFrRk0sTUFBTSxVQUFVLEdBQUdDLHVDQUFnQixDQUFxQjs7SUFFM0QsTUFBTSxFQUFFLENBQUMsSUFDTEMsK0JBQVEsQ0FBQyxxQkFBcUIsQ0FBQztTQUMxQixHQUFHLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQzs7SUFHdkIsTUFBTSxFQUFFLENBQUMsSUFDTEMsK0JBQVEsQ0FBQyxHQUFHLENBQUM7QUFDUixTQUFBLElBQUksQ0FDRFgsNEJBQUssQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFWSwrQkFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3BDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDVixTQUFBLEdBQUcsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUNwQztBQUNBLFNBQUEsSUFBSSxDQUFDRCwrQkFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ25CLElBQUksQ0FBQyxRQUFRLENBQUM7SUFFdkIsZUFBZSxFQUFFLENBQUMsSUFDZEEsK0JBQVEsQ0FBQyxJQUFJLENBQUM7QUFDVCxTQUFBLElBQUksQ0FBQ1IsNEJBQUssQ0FBQztTQUNYLEdBQUcsQ0FBQyxPQUFPLElBQUc7O1FBRVgsSUFBSSxPQUFPLEtBQUssR0FBRztBQUFFLFlBQUEsT0FBTyxHQUFHLENBQUM7UUFDaEMsSUFBSSxPQUFPLEtBQUssSUFBSTtBQUFFLFlBQUEsT0FBTyxJQUFJLENBQUM7O1lBQzdCLE9BQU8sSUFBSSxHQUFHLE9BQU8sQ0FBQztBQUMvQixLQUFDLENBQUM7O0lBR1YsSUFBSSxFQUFFLENBQUMsSUFDSE8sK0JBQVEsQ0FBQyx1QkFBdUIsQ0FBQztTQUM1QixHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxNQUFNLENBQUM7U0FDdkMsSUFBSSxDQUFDLDZCQUE2QixDQUFDOztJQUc1QyxHQUFHLEVBQUUsQ0FBQyxJQUNGTCwrQkFBUSxDQUNKTSwrQkFBUSxDQUFDLEdBQUcsQ0FBQyxFQUNiWCw0QkFBSyxDQUFDVSwrQkFBUSxDQUFDLGlFQUFpRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQ3RHLENBQUMsS0FBSyxFQUFFLElBQUksS0FBSyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FDekMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUM7O0FBR2xDLElBQUEsVUFBVSxFQUFFLENBQUMsSUFDVEwsK0JBQVEsQ0FDSkwsNEJBQUssQ0FBQ1UsK0JBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRUEsK0JBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDbEVWLDRCQUFLLENBQUNVLCtCQUFRLENBQUMsb0JBQW9CLENBQUMsRUFBRUEsK0JBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFDaEYsQ0FBQyxLQUFLLEVBQUUsSUFBSSxLQUFLLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUN6QyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQzs7QUFHakMsSUFBQSxJQUFJLEVBQUUsQ0FBQyxJQUNIQSwrQkFBUSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztTQUM5QixHQUFHLENBQUMsU0FBUyxJQUFJLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDOzs7QUFJMUIsSUFBQSxTQUFTLEVBQUUsQ0FBQyxJQUNSTCwrQkFBUSxDQUFDTSwrQkFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSTtBQUMvQyxRQUFBLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO0FBQUUsWUFBQSxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztBQUNqQyxRQUFBLE9BQU8sQ0FBQyxDQUFDO0FBQ2IsS0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzs7SUFHeEIsZUFBZSxFQUFFLENBQUMsSUFDZEQsK0JBQVEsQ0FBQyxNQUFNLENBQUM7QUFDWCxTQUFBLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBZSxDQUFDO1NBQzNCLElBQUksQ0FBQyxZQUFZLENBQUM7O0lBRzNCLFlBQVksRUFBRSxDQUFDLElBQ1hBLCtCQUFRLENBQUMsU0FBUyxDQUFDO0FBQ2QsU0FBQSxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQWUsQ0FBQztTQUMzQixJQUFJLENBQUMsbUJBQW1CLENBQUM7O0lBR2xDLGVBQWUsRUFBRSxDQUFDLElBQ2RBLCtCQUFRLENBQUMsZ0JBQWdCLENBQUM7QUFDckIsU0FBQSxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQWUsQ0FBQztTQUMzQixJQUFJLENBQUMsMkNBQTJDLENBQUM7O0lBRzFELGVBQWUsRUFBRSxDQUFDLElBQ2RBLCtCQUFRLENBQUMsY0FBYyxDQUFDO1NBQ25CLEdBQUcsQ0FBQyxHQUFHLElBQUc7QUFDUCxRQUFBLElBQUksR0FBRyxDQUFDLFdBQVcsRUFBRSxJQUFJLEtBQUs7QUFBRSxZQUFBLE9BQU8sR0FBRyxDQUFDO0FBQ3RDLGFBQUEsSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSTtBQUFFLFlBQUEsT0FBTyxHQUFHLENBQUM7O0FBQzFDLFlBQUEsT0FBTyxHQUFlLENBQUM7QUFDaEMsS0FBQyxDQUFDO1NBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQzs7QUFHOUIsSUFBQSxRQUFRLEVBQUUsQ0FBQyxJQUNQTCwrQkFBUSxDQUFDSywrQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFQywrQkFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFRCwrQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEtBQUk7UUFDN0UsT0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQy9GLEtBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyx5Q0FBeUMsQ0FBQztBQUN0RCxJQUFBLGFBQWEsRUFBRSxDQUFDLElBQ1pWLDRCQUFLLENBQ0QsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztBQUMxQixTQUFBLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ25DLFNBQUEsR0FBRyxDQUFDVywrQkFBUSxDQUFDLENBQ3FCO0FBQy9DLElBQUEsSUFBSSxFQUFFLENBQUMsSUFDSCxRQUFRLENBQ0osQ0FBQyxDQUFDLFFBQVEsRUFDVixDQUFDLEVBQVksS0FDVE4sK0JBQVEsQ0FBQ00sK0JBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRUQsK0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUNqRyxDQUFDLEdBQWEsS0FDVkwsK0JBQVEsQ0FBQ00sK0JBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRUQsK0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUNyRyxDQUFDLElBQWMsS0FDWEwsK0JBQVEsQ0FBQ00sK0JBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRUQsK0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEtBQ2pELElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQ2hELEVBQ0wsQ0FBQyxLQUFlLEtBQ1pMLCtCQUFRLENBQUNNLCtCQUFRLENBQUMsR0FBRyxDQUFDLEVBQUVELCtCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxLQUNqRCxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUNqRCxFQUNMLENBQUMsTUFBZ0IsS0FDYlYsNEJBQUssQ0FDREssK0JBQVEsQ0FBQ00sK0JBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRUQsK0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLEtBQ3RELE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQzVELEVBQ0RHLGdDQUFTLENBQUMsTUFBTSxDQUFDO0FBQ3BCLEtBQUEsRUFDTCxDQUFDLEVBQVksS0FDVGIsNEJBQUssQ0FDREssK0JBQVEsQ0FBQ00sK0JBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUNBLCtCQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRUQsK0JBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FDM0UsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUN2RCxFQUNETCwrQkFBUSxDQUFDTSwrQkFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUN6RU4sK0JBQVEsQ0FBQ00sK0JBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRUQsK0JBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFQywrQkFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEtBQy9FLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQzVDLENBQ0osQ0FDUjtTQUNJLE1BQU0sQ0FBQyxDQUFDLEVBQVksS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQztTQUNsRCxJQUFJLENBQUMseUNBQXlDLENBQUM7O0FBR3hELElBQUEsUUFBUSxFQUFFLENBQUMsSUFDUFgsNEJBQUssQ0FDRCxDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFDOUMsQ0FBQyxDQUFDLElBQUksQ0FDVCxDQUFDLElBQUksQ0FBQyx5REFBeUQsQ0FBQzs7QUFHckUsSUFBQSxZQUFZLEVBQUUsQ0FBQyxJQUNYQSw0QkFBSyxDQUNELEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7QUFDekIsU0FBQSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNuQyxTQUFBLEdBQUcsQ0FBQ1csK0JBQVEsQ0FBQyxDQUNvQjtJQUM5QyxRQUFRLEVBQUUsQ0FBQyxJQUNQTiwrQkFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUVFLHNDQUFlLEVBQUUsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztTQUMzRyxNQUFNLENBQUNJLCtCQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDSixzQ0FBZSxDQUFDLENBQUMsRUFBRSxDQUFDQSxzQ0FBZSxDQUFDLENBQUM7U0FDL0QsR0FBRyxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkQsSUFBSSxDQUFDLHVCQUF1QixDQUFDOztJQUd0QyxPQUFPLEVBQUUsQ0FBQyxJQUFJSSwrQkFBUSxDQUFDLE1BQU0sQ0FBQzs7SUFHOUIsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRCxTQUFTLEVBQUUsQ0FBQyxJQUNSTiwrQkFBUSxDQUFDTSwrQkFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQ0osc0NBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUVJLCtCQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xILGtCQUFrQixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFFLGtCQUFrQixFQUFFLENBQUMsSUFDakJOLCtCQUFRLENBQUNNLCtCQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDSixzQ0FBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRUksK0JBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxLQUN0RixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQ2pDO0lBQ0wsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzRCxZQUFZLEVBQUUsQ0FBQyxJQUNYTiwrQkFBUSxDQUNKTSwrQkFBUSxDQUFDLEdBQUcsQ0FBQyxFQUNiSixzQ0FBZSxFQUNmLENBQUMsQ0FBQyxNQUFNLEVBQ1JBLHNDQUFlLEVBQ2ZJLCtCQUFRLENBQUMsR0FBRyxDQUFDLEVBQ2IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEtBQUssQ0FDbkM7SUFDTCxZQUFZLEVBQUUsQ0FBQyxJQUNYTiwrQkFBUSxDQUFDTCw0QkFBSyxDQUFDVywrQkFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSwrQkFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEtBQUssT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN0RyxJQUFBLFVBQVUsRUFBRSxDQUFDLElBQ1RYLDRCQUFLLENBQ0QsQ0FBQyxDQUFDLFlBQVksRUFDZCxDQUFDLENBQUMsWUFBWSxFQUNkLENBQUMsQ0FBQyxrQkFBa0IsRUFDcEIsQ0FBQyxDQUFDLGtCQUFrQixFQUNwQixDQUFDLENBQUMsWUFBWSxFQUNkLENBQUMsQ0FBQyxTQUFTLEVBQ1gsQ0FBQyxDQUFDLFNBQVMsQ0FDZDtJQUNMLGNBQWMsRUFBRSxDQUFDLElBQ2Isa0JBQWtCLENBQ2QsQ0FBQyxDQUFDLFVBQVUsRUFDWixDQUFDLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBYSxDQUFDLEVBQ3pDLE9BQU8sQ0FBQyxRQUFRLENBQ25CO0FBQ0wsSUFBQSxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFjOztBQUc3QixJQUFBLGFBQWEsRUFBRSxDQUFDLElBQ1osQ0FBQyxDQUFDLFVBQVU7U0FDUCxLQUFLLENBQUMsQ0FBQyxJQUFHO1FBQ1AsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFO0FBQ3BDLFlBQUEsT0FBT2MsNkJBQU0sQ0FBQyx1Q0FBdUMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ3hGLFNBQUE7QUFBTSxhQUFBO1lBQ0gsT0FBT0QsZ0NBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEMsU0FBQTtBQUNMLEtBQUMsQ0FBQztTQUNELElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekUsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekUsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDdEUsU0FBUyxFQUFFLENBQUMsSUFDUlIsK0JBQVEsQ0FDSk0sK0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFDakJKLHNDQUFlLEVBQ2YsQ0FBQyxDQUFDLFFBQVEsRUFDVkEsc0NBQWUsRUFDZkksK0JBQVEsQ0FBQyxHQUFHLENBQUMsRUFDYixDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxPQUFPLEtBQUssTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FDMUQsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ2xCLGFBQWEsRUFBRSxDQUFDLElBQ1pOLCtCQUFRLENBQ0pNLCtCQUFRLENBQUMsTUFBTSxDQUFDLEVBQ2hCSixzQ0FBZSxFQUNmLENBQUMsQ0FBQyxRQUFRLEVBQ1ZBLHNDQUFlLEVBQ2ZJLCtCQUFRLENBQUMsR0FBRyxDQUFDLEVBQ2IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsT0FBTyxLQUFLLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQ3hELENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztBQUN0QixJQUFBLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDL0MsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRCxJQUFBLFNBQVMsRUFBRSxDQUFDLElBQ1IsQ0FBQyxDQUFDLEtBQUs7QUFDRixTQUFBLEtBQUssQ0FBQ0EsK0JBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUNKLHNDQUFlLENBQUMsQ0FBQztBQUMxQyxTQUFBLElBQUksQ0FBQ0ksK0JBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUNKLHNDQUFlLENBQUMsRUFBRUEsc0NBQWUsQ0FBQyxJQUFJLENBQUNJLCtCQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUM5RSxHQUFHLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDeEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLFdBQVcsRUFBRSxDQUFDLElBQ1ZOLCtCQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFTSwrQkFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQ0osc0NBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssS0FBSTtBQUNwRyxRQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDM0IsS0FBQyxDQUFDO0FBQ0csU0FBQSxLQUFLLENBQUNJLCtCQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDSixzQ0FBZSxDQUFDLENBQUM7QUFDMUMsU0FBQSxJQUFJLENBQUNJLCtCQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDSixzQ0FBZSxDQUFDLEVBQUVBLHNDQUFlLENBQUMsSUFBSSxDQUFDSSwrQkFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDOUUsR0FBRyxDQUFDLElBQUksSUFBRztRQUNSLElBQUksR0FBRyxHQUEwQixFQUFFLENBQUM7UUFDcEMsS0FBSyxJQUFJLEtBQUssSUFBSSxJQUFJO1lBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0FBQ3RELFFBQUEsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLEtBQUMsQ0FBQztTQUNELElBQUksQ0FBQywyQkFBMkIsQ0FBQztJQUUxQyxlQUFlLEVBQUUsQ0FBQyxJQUNkWCw0QkFBSyxDQUNELENBQUMsQ0FBQyxJQUFJLEVBQ04sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3pDLENBQUMsQ0FBQyxNQUFNLEVBQ1IsQ0FBQyxDQUFDLEdBQUcsRUFDTCxDQUFDLENBQUMsU0FBUyxFQUNYLENBQUMsQ0FBQyxJQUFJLEVBQ04sQ0FBQyxDQUFDLE1BQU0sRUFDUixDQUFDLENBQUMsT0FBTyxDQUNaO0FBQ0wsSUFBQSxlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDVywrQkFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQ0osc0NBQWUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDL0csV0FBVyxFQUFFLENBQUMsSUFDVlAsNEJBQUssQ0FDREssK0JBQVEsQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFTSwrQkFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQ0osc0NBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FDekYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQ2hCLEVBQ0QsQ0FBQyxDQUFDLGVBQWUsQ0FDcEI7QUFFTCxJQUFBLFNBQVMsRUFBRSxDQUFDLElBQ1JQLDRCQUFLOztBQUVELElBQUEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDdkMsQ0FBQyxDQUFDLFlBQVksRUFDZCxDQUFDLENBQUMsU0FBUyxFQUNYLENBQUMsQ0FBQyxTQUFTLEVBQ1gsQ0FBQyxDQUFDLFdBQVcsRUFDYixDQUFDLENBQUMsV0FBVyxFQUNiLENBQUMsQ0FBQyxXQUFXLEVBQ2IsQ0FBQyxDQUFDLFNBQVMsRUFDWCxDQUFDLENBQUMsV0FBVyxFQUNiLENBQUMsQ0FBQyxXQUFXLEVBQ2IsQ0FBQyxDQUFDLFNBQVMsRUFDWCxDQUFDLENBQUMsYUFBYSxFQUNmLENBQUMsQ0FBQyxTQUFTLEVBQ1gsQ0FBQyxDQUFDLGFBQWEsQ0FDbEI7QUFDTCxJQUFBLFVBQVUsRUFBRSxDQUFDLElBQ1RLLCtCQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRUwsNEJBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLFNBQVMsS0FBSTtRQUNwRyxJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUM7QUFDakIsUUFBQSxLQUFLLElBQUksSUFBSSxJQUFJLFNBQVMsRUFBRTtZQUN4QixRQUFRLElBQUksQ0FBQyxJQUFJO0FBQ2IsZ0JBQUEsS0FBSyxLQUFLO0FBQ04sb0JBQUEsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQzFELE1BQU07QUFDVixnQkFBQSxLQUFLLE9BQU87b0JBQ1IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDMUMsTUFBTTtBQUNWLGdCQUFBLEtBQUssVUFBVTtvQkFDWCxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUMxQyxNQUFNO0FBQ2IsYUFBQTtBQUNKLFNBQUE7QUFFRCxRQUFBLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLEtBQUMsQ0FBQztBQUNOLElBQUEsWUFBWSxFQUFFLENBQUMsSUFBSUssK0JBQVEsQ0FBQ00sK0JBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNsSCxXQUFXLEVBQUUsQ0FBQyxJQUNWTiwrQkFBUSxDQUNKTSwrQkFBUSxDQUFDLEdBQUcsQ0FBQyxFQUNiSixzQ0FBZSxFQUNmLENBQUMsQ0FBQyxLQUFLLEVBQ1BBLHNDQUFlLEVBQ2ZJLCtCQUFRLENBQUMsR0FBRyxDQUFDLEVBQ2IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEtBQUssQ0FDbkM7SUFDTCxXQUFXLEVBQUUsQ0FBQyxJQUNWTiwrQkFBUSxDQUNKLENBQUMsQ0FBQyxVQUFVO0FBQ1AsU0FBQSxLQUFLLENBQUNNLCtCQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDSixzQ0FBZSxDQUFDLENBQUM7U0FDMUMsSUFBSSxDQUFDSSwrQkFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQ0osc0NBQWUsQ0FBQyxFQUFFSSwrQkFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQ0osc0NBQWUsQ0FBQyxDQUFDLEVBQ25GSSwrQkFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQ0osc0NBQWUsQ0FBQyxFQUNwQyxDQUFDLENBQUMsS0FBSyxFQUNQLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEtBQUk7UUFDdEIsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUN2RCxLQUFDLENBQ0o7SUFFTCxVQUFVLEVBQUUsQ0FBQyxJQUNURiwrQkFBUSxDQUFDTSwrQkFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxLQUFJO1FBQy9DLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUN6QyxLQUFDLENBQUM7SUFDTixZQUFZLEVBQUUsQ0FBQyxJQUNYTiwrQkFBUSxDQUFDTSwrQkFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFSixzQ0FBZSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUVBLHNDQUFlLEVBQUVJLCtCQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFJO0FBQ3ZHLFFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDcEMsS0FBQyxDQUFDO0FBQ04sSUFBQSxlQUFlLEVBQUUsQ0FBQyxJQUNkTiwrQkFBUSxDQUNKTSwrQkFBUSxDQUFDLEdBQUcsQ0FBQyxFQUNiSixzQ0FBZSxFQUNmLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDSSwrQkFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQ0osc0NBQWUsQ0FBQyxDQUFDLEVBQ2xEQSxzQ0FBZSxFQUNmSSwrQkFBUSxDQUFDLEdBQUcsQ0FBQyxFQUNiLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSTtBQUN0QixRQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQ3hDLEtBQUMsQ0FDSjs7QUFHTCxJQUFBLGlCQUFpQixFQUFFLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQztBQUN6RixJQUFBLG9CQUFvQixFQUFFLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDO0FBQ3RHLElBQUEsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUM7QUFDdkcsSUFBQSxrQkFBa0IsRUFBRSxDQUFDLElBQUksa0JBQWtCLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxlQUFlLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQztBQUNyRyxJQUFBLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLGtCQUFrQjtBQUV4QyxJQUFBLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWE7QUFDOUIsQ0FBQSxDQUFDLENBQUM7QUFFSDs7O0FBR0c7QUFDRyxTQUFVLFVBQVUsQ0FBQyxJQUFZLEVBQUE7SUFDbkMsSUFBSTtBQUNBLFFBQUEsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDMUQsS0FBQTtBQUFDLElBQUEsT0FBTyxLQUFLLEVBQUU7UUFDWixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ3JDLEtBQUE7QUFDTDs7QUNsbEJBO0FBdUJBO0FBQ08sTUFBTSxxQkFBcUIsR0FBcUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNqRixJQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsSUFBQSxHQUFHLEVBQUUsR0FBRztBQUNYLENBQUEsQ0FBQyxDQUFDO0FBRUg7OztBQUdHO0FBQ0gsU0FBUyxXQUFXLENBQ2hCLElBQVksRUFDWixLQUFhLEVBQ2IsSUFBWSxFQUNaLEtBQWEsRUFBQTtJQUViLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztJQUNoQixJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDcEIsSUFBQSxLQUFLLElBQUksS0FBSyxHQUFHLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUNsRCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDOztRQUc5QixJQUFJLElBQUksSUFBSSxJQUFJLEVBQUU7WUFDZCxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUM7WUFDbkIsU0FBUztBQUNaLFNBQUE7O0FBR0QsUUFBQSxJQUFJLE9BQU8sRUFBRTtZQUNULE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDaEIsU0FBUztBQUNaLFNBQUE7UUFFRCxJQUFJLElBQUksSUFBSSxJQUFJO0FBQUUsWUFBQSxPQUFPLEVBQUUsQ0FBQzthQUN2QixJQUFJLElBQUksSUFBSSxLQUFLO0FBQUUsWUFBQSxPQUFPLEVBQUUsQ0FBQzs7UUFHbEMsSUFBSSxPQUFPLEdBQUcsQ0FBQztZQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUU1RixPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ25CLEtBQUE7QUFFRCxJQUFBLE9BQU8sU0FBUyxDQUFDO0FBQ3JCLENBQUM7QUFFRDtBQUNBLFNBQVMsYUFBYSxDQUFDLElBQVksRUFBRSxLQUFhLEVBQUE7SUFDOUMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEMsSUFBSSxHQUFHLEdBQUcsQ0FBQztBQUFFLFFBQUEsT0FBTyxTQUFTLENBQUM7SUFFOUIsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxVQUFVLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQzNFLENBQUM7QUFFRDtBQUNBLFNBQVMsdUJBQXVCLENBQUMsSUFBWSxFQUFFLEtBQWEsRUFBQTtJQUN4RCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTlCLElBQUksR0FBRyxHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLElBQUksR0FBRyxLQUFLLFNBQVM7QUFBRSxRQUFBLE9BQU8sU0FBUyxDQUFDOztBQUd4QyxJQUFBLEtBQUssSUFBSSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsRUFBRTtBQUM3RixRQUFBLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0FBQUUsWUFBQSxPQUFPLFNBQVMsQ0FBQztBQUMvQyxLQUFBO0FBRUQsSUFBQSxJQUFJLEtBQUssR0FBRyxXQUFXLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakYsSUFBSSxLQUFLLEtBQUssU0FBUztBQUFFLFFBQUEsT0FBTyxTQUFTLENBQUM7SUFFMUMsT0FBTztRQUNILEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRztRQUNaLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztBQUNsQixRQUFBLEtBQUssRUFBRSxLQUFLO1FBQ1osVUFBVSxFQUFFLEdBQUcsQ0FBQyxVQUFVO1FBQzFCLEdBQUcsRUFBRSxLQUFLLENBQUMsUUFBUTtBQUNuQixRQUFBLFFBQVEsRUFBRSxJQUFJO0tBQ2pCLENBQUM7QUFDTixDQUFDO0FBRUQ7QUFDTSxTQUFVLGdCQUFnQixDQUFDLEtBQWEsRUFBQTs7O0FBRzFDLElBQUEsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtBQUFFLFFBQUEsT0FBTyxJQUFJLENBQUM7Ozs7SUFLcEMsSUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsSUFBSSxNQUFNLENBQUMsTUFBTTtRQUFFLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQzs7QUFDbEMsUUFBQSxPQUFPLEtBQUssQ0FBQztBQUN0QixDQUFDO0FBRUQ7Ozs7O0FBS0c7U0FDYSxtQkFBbUIsQ0FBQyxJQUFZLEVBQUUsb0JBQTZCLEtBQUssRUFBQTtJQUNoRixJQUFJLE1BQU0sR0FBa0IsRUFBRSxDQUFDO0lBQy9CLEtBQUssSUFBSSxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFO1FBQ3BELElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsT0FBTyxVQUFVLElBQUksQ0FBQyxFQUFFO1lBQ3BCLElBQUksV0FBVyxHQUFHLHVCQUF1QixDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNkLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELFNBQVM7QUFDWixhQUFBO0FBRUQsWUFBQSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3pCLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkQsU0FBQTtBQUNKLEtBQUE7QUFFRCxJQUFBLElBQUksaUJBQWlCO1FBQUUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUU5RSxJQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXpDLElBQUksY0FBYyxHQUFrQixFQUFFLENBQUM7QUFDdkMsSUFBQSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksY0FBYyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUU7WUFDM0UsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQyxTQUFBO0FBQ0osS0FBQTtBQUNELElBQUEsT0FBTyxjQUFjLENBQUM7QUFDMUIsQ0FBQztBQUVEO0FBQ0EsTUFBTSxrQkFBa0IsR0FBcUJYLDRCQUFLLENBQzlDVSwrQkFBUSxDQUFDLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQ3ZDQSwrQkFBUSxDQUFDLDBCQUEwQixDQUFDLENBQ3ZDO0FBQ0ksS0FBQSxJQUFJLEVBQUU7QUFDTixLQUFBLEdBQUcsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRWFBLCtCQUFRLENBQUMsc0JBQXNCLENBQUM7S0FDMUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDO0tBQ3hCLElBQUksQ0FBQ0EsK0JBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRTtBQXFCMUIsTUFBTSxrQkFBa0IsR0FBRyxpQ0FBaUMsQ0FBQztBQUM3RCxNQUFNLGNBQWMsR0FBRyxtRUFBbUUsQ0FBQztBQUMzRixNQUFNLGVBQWUsR0FBRyxpQ0FBaUMsQ0FBQztBQUMxRCxNQUFNLG9CQUFvQixHQUFHLDJDQUEyQyxDQUFDO0FBQ3pFLE1BQU0sZ0JBQWdCLEdBQUcsa0NBQWtDLENBQUM7QUFFNUQsTUFBTSxhQUFhLEdBQUc7QUFDekIsSUFBQSxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFO0FBQzdDLElBQUEsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRTtBQUN6QyxJQUFBLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUU7QUFDakQsSUFBQSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtBQUNyQyxJQUFBLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFO0NBQ2hELENBQUM7QUFFRjtBQUNBLFNBQVMsd0JBQXdCLENBQUMsSUFBWSxFQUFBO0lBQzFDLElBQUksT0FBTyxHQUFrQixFQUFFLENBQUM7SUFFaEMsS0FBSyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLGFBQWEsRUFBRTtRQUN0QyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9CLFFBQUEsSUFBSSxDQUFDLEtBQUs7WUFBRSxTQUFTO1FBRXJCLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDVCxHQUFHO0FBQ0gsWUFBQSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNmLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztBQUNsQixZQUFBLFVBQVUsRUFBRSxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUM7WUFDM0IsR0FBRyxFQUFFLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU07QUFDbEMsWUFBQSxRQUFRLEVBQUUsaUJBQWlCO0FBQzlCLFNBQUEsQ0FBQyxDQUFDO0FBQ04sS0FBQTtBQUVELElBQUEsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQztBQUVEO1NBQ2dCLGNBQWMsQ0FBQyxNQUFjLEVBQUUsR0FBVyxFQUFFLEtBQWMsRUFBQTtBQUN0RSxJQUFBLElBQUksUUFBUSxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzNDLElBQUEsSUFBSSxZQUFZLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQzs7QUFHdEQsSUFBQSxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLFlBQVksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQUUsUUFBQSxPQUFPLE1BQU0sQ0FBQztBQUNuRixJQUFBLElBQUksV0FBVyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUVsQyxJQUFBLElBQUksVUFBVSxHQUFHLEtBQUssR0FBRyxDQUFBLENBQUEsRUFBSSxHQUFHLENBQUEsR0FBQSxFQUFNLEtBQUssQ0FBRyxDQUFBLENBQUEsR0FBRyxFQUFFLENBQUM7QUFDcEQsSUFBQSxJQUFJLFdBQVcsRUFBRTtBQUNiLFFBQUEsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRS9DLFFBQUEsSUFBSSxVQUFVO0FBQUUsWUFBQSxPQUFPLEdBQUcsTUFBTSxDQUFBLEVBQUcsVUFBVSxDQUFHLEVBQUEsTUFBTSxFQUFFLENBQUM7O1lBQ3BELE9BQU8sQ0FBQSxFQUFHLE1BQU0sQ0FBRyxFQUFBLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO0FBQ2hELEtBQUE7QUFBTSxTQUFBLElBQUksVUFBVSxFQUFFO1FBQ25CLE9BQU8sQ0FBQSxFQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBSSxDQUFBLEVBQUEsVUFBVSxFQUFFLENBQUM7QUFDOUMsS0FBQTtBQUVELElBQUEsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQUVlLFNBQUEsZ0NBQWdDLENBQUMsTUFBYyxFQUFFLEtBQWMsRUFBQTtJQUMzRSxNQUFNLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkQsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxZQUFZLElBQUksQ0FBQyxDQUFDLFFBQVEsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDOztBQUd0RyxJQUFBLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssWUFBWSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7QUFBRSxRQUFBLE9BQU8sTUFBTSxDQUFDOztBQUduRixJQUFBLE1BQU0sVUFBVSxHQUFHLEtBQUssR0FBRyxDQUFNLEdBQUEsRUFBQSxLQUFLLENBQUUsQ0FBQSxHQUFHLEVBQUUsQ0FBQztBQUM5QyxJQUFBLElBQUksV0FBVyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQyxJQUFBLElBQUksV0FBVyxFQUFFO0FBQ2IsUUFBQSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakQsT0FBTyxDQUFBLEVBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLFVBQVUsQ0FBQSxFQUFHLE1BQU0sQ0FBQSxDQUFFLENBQUM7QUFDdEQsS0FBQTtBQUFNLFNBQUE7UUFDSCxPQUFPLENBQUEsRUFBRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUcsRUFBQSxVQUFVLEVBQUUsQ0FBQztBQUM3QyxLQUFBO0FBQ0w7O0FDeFBBO01BQ2EsWUFBWSxDQUFBOztBQUVkLElBQUEsSUFBSSxDQUFTOztBQUViLElBQUEsS0FBSyxDQUFXOztBQUVoQixJQUFBLEtBQUssQ0FBVzs7QUFFaEIsSUFBQSxJQUFJLENBQVM7O0FBRWIsSUFBQSxHQUFHLENBQVk7O0FBRWYsSUFBQSxLQUFLLENBQVU7O0FBRWYsSUFBQSxNQUFNLENBQXVCOztBQUU3QixJQUFBLElBQUksQ0FBYzs7QUFFbEIsSUFBQSxPQUFPLENBQWM7O0FBRXJCLElBQUEsS0FBSyxDQUFTOztBQUVkLElBQUEsS0FBSyxDQUFhOztBQUVsQixJQUFBLFdBQVcsQ0FBMEI7SUFFNUMsV0FBbUIsQ0FBQSxJQUFZLEVBQUUsSUFBNEIsRUFBQTtBQUN6RCxRQUFBLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2pCLFFBQUEsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztBQUN6QyxRQUFBLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLFFBQUEsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0FBQzlCLFFBQUEsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0FBQ2pDLFFBQUEsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7QUFFaEIsUUFBQSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUUxQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJSyxVQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUM3RDs7QUFHTSxJQUFBLE9BQU8sWUFBWSxDQUFDLElBQTJCLEVBQUUsY0FBb0MsRUFBQTs7UUFFeEYsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO0FBQ2xCLFlBQUEsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUNuRCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQzdCLENBQUM7QUFDbkIsU0FBQTtRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNiLFlBQUEsS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUU7QUFDNUMsZ0JBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQ1gsR0FBRyxFQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUMzRSxDQUFDO0FBQ0wsYUFBQTtBQUNKLFNBQUE7UUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7QUFDWixZQUFBLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtBQUN6QixnQkFBQSxLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQkFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQ1gsR0FBRyxFQUNILEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3ZGLENBQUM7QUFDTCxpQkFBQTtBQUNKLGFBQUE7QUFDSixTQUFBO1FBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO0FBQ1osWUFBQSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RCxTQUFBOzs7O1FBS0QsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzlDOztJQUdNLElBQUksR0FBQTtBQUNQLFFBQUEsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xDOztJQUdNLE1BQU0sR0FBQTtBQUNULFFBQUEsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3JDOztJQUdNLFNBQVMsR0FBQTtBQUNaLFFBQUEsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xDOztJQUdNLFFBQVEsR0FBQTtBQUNYLFFBQUEsSUFBSSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztBQUMvQixRQUFBLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtBQUN2QixZQUFBLEtBQUssSUFBSSxNQUFNLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQztBQUFFLGdCQUFBLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUQsU0FBQTtBQUVELFFBQUEsT0FBTyxNQUFNLENBQUM7S0FDakI7O0lBR00sU0FBUyxHQUFBOzs7UUFHWixJQUFJLGFBQWEsR0FBRyxJQUFJLEdBQUcsQ0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUMsUUFBQSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7S0FDcEM7O0lBR00sU0FBUyxDQUFDLEtBQWdCLEVBQUUsS0FBOEIsRUFBQTs7UUFFN0QsSUFBSSxTQUFTLEdBQUcsS0FBSyxJQUFJLElBQUksc0JBQXNCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRWhFLFFBQUEsSUFBSSxNQUFNLEdBQVE7QUFDZCxZQUFBLElBQUksRUFBRTtnQkFDRixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7QUFDZixnQkFBQSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNyQixnQkFBQSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDakIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztBQUMxQixnQkFBQSxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRTtBQUMxQixnQkFBQSxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzdFLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQzVCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDakMsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUNqQyxnQkFBQSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pELGdCQUFBLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN2RSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7QUFDakIsZ0JBQUEsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUMzQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7QUFDakIsZ0JBQUEsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUMzQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3pDLFdBQVcsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7QUFDOUMsZ0JBQUEsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUU7QUFDeEIsYUFBQTtTQUNKLENBQUM7O1FBR0YsSUFBSSxJQUFJLENBQUMsR0FBRztZQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7O0FBR3pDLFFBQUEsS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDNUMsSUFBSSxHQUFHLElBQUksTUFBTTtBQUFFLGdCQUFBLFNBQVM7QUFDNUIsWUFBQSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ3ZCLFNBQUE7QUFFRCxRQUFBLE9BQU8sTUFBTSxDQUFDO0tBQ2pCO0FBQ0osQ0FBQTtBQUVEO01BQ2FBLFVBQVEsQ0FBQTs7QUFFakIsSUFBQSxNQUFNLENBQVM7O0FBRWYsSUFBQSxJQUFJLENBQU87O0FBRVgsSUFBQSxPQUFPLENBQU87O0FBRWQsSUFBQSxJQUFJLENBQVM7O0FBRWIsSUFBQSxJQUFJLENBQVM7O0FBRWIsSUFBQSxTQUFTLENBQVM7O0FBRWxCLElBQUEsSUFBSSxDQUFTOztBQUViLElBQUEsS0FBSyxDQUFTOztBQUVkLElBQUEsSUFBSSxDQUFjOztBQUVsQixJQUFBLFFBQVEsQ0FBTTs7QUFFZCxJQUFBLE1BQU0sQ0FBVTs7QUFFaEIsSUFBQSxRQUFRLENBQVc7O0FBRW5CLElBQUEsT0FBTyxDQUFVOztBQUVqQixJQUFBLE1BQU0sQ0FBeUI7QUFFL0IsSUFBQSxJQUFJLENBU0Y7QUFFRixJQUFBLFdBQUEsQ0FBbUIsSUFBd0IsRUFBQTtBQUN2QyxRQUFBLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRTFCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztLQUNqQztJQUVNLEVBQUUsR0FBQTtBQUNMLFFBQUEsT0FBTyxDQUFHLEVBQUEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQSxDQUFBLEVBQUksSUFBSSxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUM7S0FDN0M7SUFFTSxJQUFJLEdBQUE7QUFDUCxRQUFBLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztLQUM3QjtJQUVNLFFBQVEsR0FBQTtRQUNYLElBQUksSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLENBQUEsRUFBRyxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUM7O1lBQ3BGLE9BQU8sQ0FBQSxFQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUM7S0FDN0M7SUFFTSxPQUFPLEdBQUE7QUFDVixRQUFBLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztLQUNuRztJQUVNLEdBQUcsR0FBQTtBQUNOLFFBQUEsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQ25HO0lBRU0sU0FBUyxHQUFBO1FBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztBQUNoQyxZQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQztBQUM3QixZQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztBQUMzQixZQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQ3hDO0lBRU0sS0FBSyxHQUFBO0FBQ1IsUUFBQSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0tBQ3hDO0lBRU0sU0FBUyxHQUFBO0FBQ1osUUFBQSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0tBQzVDOztBQUdNLElBQUEsU0FBUyxDQUFDLEtBQTZCLEVBQUE7O0FBRTFDLFFBQUEsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQXFCLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQztBQUVuRyxRQUFBLElBQUksTUFBTSxHQUFlO1lBQ3JCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUMzQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsUUFBUSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztBQUNoQyxZQUFBLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7QUFDcEIsWUFBQSxRQUFRLEVBQUUsUUFBUTtBQUNsQixZQUFBLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUk7QUFDakIsWUFBQSxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQztZQUMvQixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBZSxDQUFDO0FBRS9DLFlBQUEsUUFBUSxFQUFFLFFBQVE7QUFDbEIsWUFBQSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJO0FBQ2pCLFlBQUEsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ3ZCLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDO0FBQUUsWUFBQSxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDbEUsSUFBSSxJQUFJLENBQUMsT0FBTztBQUFFLFlBQUEsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBRWhELFFBQUEsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFL0IsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1gsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNqQyxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ25DLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDdkMsTUFBTSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztBQUVqRCxZQUFBLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFDeEIsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFDaEIsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFDNUIsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFDcEIsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUVqQyxZQUFBLElBQUksT0FBTztnQkFBRSxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkQsWUFBQSxJQUFJLEdBQUc7Z0JBQUUsTUFBTSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNDLFlBQUEsSUFBSSxTQUFTO2dCQUFFLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM5RCxZQUFBLElBQUksS0FBSztnQkFBRSxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakQsWUFBQSxJQUFJLFNBQVM7Z0JBQUUsTUFBTSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2hFLFNBQUE7QUFFRCxRQUFBLE9BQU8sTUFBbUIsQ0FBQztLQUM5QjtBQUNKLENBQUE7QUFFRDtBQUNBO0FBQ0E7QUFFQTtNQUNhLHNCQUFzQixDQUFBO0FBQ3hCLElBQUEsU0FBUyxDQUEyQjtBQUNwQyxJQUFBLEtBQUssQ0FBNEI7QUFDakMsSUFBQSxJQUFJLENBQWM7QUFFekIsSUFBQSxXQUFBLENBQW1CLFNBQXFCLEVBQUE7QUFDcEMsUUFBQSxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUNwQixRQUFBLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ2hCLFFBQUEsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRXRCLEtBQUssSUFBSSxJQUFJLElBQUksU0FBUztZQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztLQUNoRTtBQUVNLElBQUEsR0FBRyxDQUFDLE1BQWMsRUFBQTtBQUNyQixRQUFBLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLO0FBQUUsWUFBQSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDL0MsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM1QixPQUFPLENBQUMsR0FBRyxDQUNQLENBQUEsbURBQUEsRUFBc0QsTUFBTSxDQUFjLFdBQUEsRUFBQSxJQUFJLENBQUMsU0FBUyxDQUNwRixNQUFNLENBQ1QsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFHLENBQUEsQ0FBQSxDQUMzQixDQUFDO0FBQ0YsWUFBQSxPQUFPLFNBQVMsQ0FBQztBQUNwQixTQUFBO0FBRUQsUUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN0QixRQUFBLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3BELFFBQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDNUIsUUFBQSxPQUFPLE1BQU0sQ0FBQztLQUNqQjtBQUNKLENBQUE7QUFFZSxTQUFBLFNBQVMsQ0FBQyxNQUE4QixFQUFFLE1BQWtCLEVBQUE7SUFDeEUsS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUN4QyxJQUFJLEdBQUcsSUFBSSxNQUFNO1lBQUUsU0FBUztRQUM1QixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUN6RCxLQUFBO0FBRUQsSUFBQSxPQUFPLE1BQU0sQ0FBQztBQUNsQjs7QUMxVkE7QUFxTEE7QUFDTyxNQUFNLGVBQWUsR0FBRyx3REFBd0QsQ0FBQztBQStJeEY7QUFDTSxTQUFVLGdCQUFnQixDQUFDLEtBQVUsRUFBQTtJQUN2QyxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUU7QUFDZixRQUFBLE9BQU8sSUFBSSxDQUFDO0FBQ2YsS0FBQTtBQUFNLFNBQUEsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7QUFDbEMsUUFBQSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdEIsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ2hCLFlBQUEsS0FBSyxJQUFJLEtBQUssSUFBSSxLQUFtQixFQUFFO2dCQUNuQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDeEMsYUFBQTtBQUVELFlBQUEsT0FBTyxNQUFNLENBQUM7QUFDakIsU0FBQTthQUFNLElBQUksS0FBSyxZQUFZLElBQUksRUFBRTtZQUM5QixJQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzNDLFlBQUEsT0FBTyxTQUFTLENBQUM7QUFDcEIsU0FBQTtBQUFNLGFBQUE7WUFDSCxJQUFJLE1BQU0sR0FBRyxLQUE0QixDQUFDO1lBQzFDLElBQUksTUFBTSxHQUE0QixFQUFFLENBQUM7QUFDekMsWUFBQSxLQUFLLElBQUksR0FBRyxJQUFJLE1BQU0sRUFBRTtnQkFDcEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQy9DLGFBQUE7QUFFRCxZQUFBLE9BQU8sTUFBTSxDQUFDO0FBQ2pCLFNBQUE7QUFDSixLQUFBO0FBQU0sU0FBQSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUNsQyxRQUFBLE9BQU8sS0FBSyxDQUFDO0FBQ2hCLEtBQUE7QUFBTSxTQUFBLElBQUksT0FBTyxLQUFLLEtBQUssU0FBUyxFQUFFO0FBQ25DLFFBQUEsT0FBTyxLQUFLLENBQUM7QUFDaEIsS0FBQTtBQUFNLFNBQUEsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDbEMsSUFBSSxTQUFTLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0MsSUFBSSxTQUFTLENBQUMsTUFBTTtZQUFFLE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQztRQUU3QyxJQUFJLGFBQWEsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyRCxJQUFJLGFBQWEsQ0FBQyxNQUFNO1lBQUUsT0FBTyxhQUFhLENBQUMsS0FBSyxDQUFDO1FBRXJELElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xELElBQUksU0FBUyxDQUFDLE1BQU07WUFBRSxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUM7QUFFN0MsUUFBQSxPQUFPLEtBQUssQ0FBQztBQUNoQixLQUFBOztBQUdELElBQUEsT0FBTyxJQUFJLENBQUM7QUFDaEI7O0FDM1dBO0FBQ00sU0FBVSxRQUFRLENBQUMsT0FBZSxFQUFBO0FBQ3BDLElBQUEsSUFBSSxNQUFNLEdBQUdDLDBCQUFVLENBQUMsT0FBTyxFQUFFO0FBQzdCLFFBQUEsTUFBTSxFQUFFLElBQUk7QUFDWixRQUFBLGNBQWMsRUFBRSxJQUFJO0FBQ3BCLFFBQUEsUUFBUSxFQUFFLEdBQUc7QUFDYixRQUFBLGFBQWEsRUFBRSxJQUFJO0FBQ3RCLEtBQUEsQ0FBQyxDQUFDO0lBRUgsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2QsSUFBQSxLQUFLLElBQUksU0FBUyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUU7QUFDL0IsUUFBQSxJQUFJLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLENBQWUsQ0FBQztRQUN2RCxJQUFJLE1BQU0sR0FBZSxFQUFFLENBQUM7QUFFNUIsUUFBQSxLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUM3QyxZQUFBLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDcEIsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQzVDLFNBQUE7QUFFRCxRQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDckIsS0FBQTtBQUVELElBQUEsT0FBTyxJQUFJLENBQUM7QUFDaEI7O0FDekJBO0FBQ00sSUFBVyxZQUFZLENBb0Y1QjtBQXBGRCxDQUFBLFVBQWlCLFlBQVksRUFBQTs7SUFFekIsU0FBZ0IsWUFBWSxDQUFDLEtBQVUsRUFBQTs7UUFFbkMsSUFBSSxLQUFLLFlBQVksR0FBRyxFQUFFO0FBQ3RCLFlBQUEsSUFBSSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUN2QixLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtBQUFFLGdCQUFBLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3pGLFlBQUEsT0FBTyxNQUFNLENBQUM7QUFDakIsU0FBQTthQUFNLElBQUksS0FBSyxZQUFZLEdBQUcsRUFBRTtBQUM3QixZQUFBLElBQUksTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7WUFDdkIsS0FBSyxJQUFJLEdBQUcsSUFBSSxLQUFLO2dCQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckQsWUFBQSxPQUFPLE1BQU0sQ0FBQztBQUNqQixTQUFBO1FBRUQsSUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxJQUFJLE9BQU8sS0FBSyxTQUFTO0FBQUUsWUFBQSxNQUFNLEtBQUssQ0FBQyxtQ0FBbUMsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUVwRixRQUFRLE9BQU8sQ0FBQyxJQUFJO0FBQ2hCLFlBQUEsS0FBSyxNQUFNLENBQUM7QUFDWixZQUFBLEtBQUssUUFBUSxDQUFDO0FBQ2QsWUFBQSxLQUFLLFFBQVEsQ0FBQztBQUNkLFlBQUEsS0FBSyxTQUFTO2dCQUNWLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQztBQUN6QixZQUFBLEtBQUssTUFBTTtnQkFDUCxPQUFPO0FBQ0gsb0JBQUEsa0JBQWtCLEVBQUUsTUFBTTtvQkFDMUIsS0FBSyxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQzdDLG9CQUFBLE9BQU8sRUFBRTt3QkFDTCxJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxTQUFTLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRO0FBQzVGLHFCQUFBO2lCQUNKLENBQUM7QUFDTixZQUFBLEtBQUssVUFBVTtBQUNYLGdCQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUM3RixZQUFBLEtBQUssT0FBTztBQUNSLGdCQUFBLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25ELFlBQUEsS0FBSyxNQUFNO0FBQ1AsZ0JBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQ3pGLFlBQUEsS0FBSyxRQUFRO2dCQUNULElBQUksTUFBTSxHQUF3QixFQUFFLENBQUM7QUFDckMsZ0JBQUEsS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztvQkFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzFGLGdCQUFBLE9BQU8sTUFBTSxDQUFDO0FBQ3JCLFNBQUE7S0FDSjtBQXhDZSxJQUFBLFlBQUEsQ0FBQSxZQUFZLGVBd0MzQixDQUFBOztJQUdELFNBQWdCLEtBQUssQ0FBQyxZQUFpQixFQUFBO1FBQ25DLElBQUksWUFBWSxLQUFLLElBQUksRUFBRTtBQUN2QixZQUFBLE9BQU8sSUFBSSxDQUFDO0FBQ2YsU0FBQTthQUFNLElBQUksWUFBWSxLQUFLLFNBQVMsRUFBRTtBQUNuQyxZQUFBLE9BQU8sU0FBUyxDQUFDO0FBQ3BCLFNBQUE7YUFBTSxJQUFJLFlBQVksWUFBWSxHQUFHLEVBQUU7QUFDcEMsWUFBQSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFO0FBQUUsZ0JBQUEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDaEYsWUFBQSxPQUFPLElBQUksQ0FBQztBQUNmLFNBQUE7YUFBTSxJQUFJLFlBQVksWUFBWSxHQUFHLEVBQUU7QUFDcEMsWUFBQSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLEtBQUssSUFBSSxHQUFHLElBQUksWUFBWTtnQkFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25ELFlBQUEsT0FBTyxJQUFJLENBQUM7QUFDZixTQUFBO0FBQU0sYUFBQSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUU7QUFDcEMsWUFBQSxPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDLFNBQUE7QUFBTSxhQUFBLElBQUksT0FBTyxZQUFZLEtBQUssUUFBUSxFQUFFO1lBQ3pDLElBQUksa0JBQWtCLElBQUksWUFBWSxFQUFFO0FBQ3BDLGdCQUFBLFFBQVEsWUFBWSxDQUFDLGtCQUFrQixDQUFDO0FBQ3BDLG9CQUFBLEtBQUssTUFBTTt3QkFDUCxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUMzQyxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBUSxDQUFDO0FBRWhELHdCQUFBLE9BQU8sUUFBUSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFDbEUsb0JBQUEsS0FBSyxVQUFVO3dCQUNYLE9BQU8sUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDMUQsb0JBQUEsS0FBSyxNQUFNO3dCQUNQLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdEQsb0JBQUE7d0JBQ0ksTUFBTSxLQUFLLENBQUMsQ0FBK0IsNEJBQUEsRUFBQSxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBRyxDQUFBLENBQUEsQ0FBQyxDQUFDO0FBQ3ZGLGlCQUFBO0FBQ0osYUFBQTtZQUVELElBQUksTUFBTSxHQUF3QixFQUFFLENBQUM7QUFDckMsWUFBQSxLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7Z0JBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5RSxZQUFBLE9BQU8sTUFBTSxDQUFDO0FBQ2pCLFNBQUE7QUFFRCxRQUFBLE9BQU8sWUFBWSxDQUFDO0tBQ3ZCO0FBdENlLElBQUEsWUFBQSxDQUFBLEtBQUssUUFzQ3BCLENBQUE7QUFDTCxDQUFDLEVBcEZnQixZQUFZLEtBQVosWUFBWSxHQW9GNUIsRUFBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbEZELENBQUEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUEyRCxDQUFDLE1BQUEsQ0FBQSxPQUFBLENBQWUsQ0FBQyxHQUFFLENBQTBPLENBQUMsRUFBRSxVQUFVLENBQTJCLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU9DLGVBQU8sRUFBRSxVQUFVLEVBQUVBLGVBQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FB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QztBQUNqQyxTQUFBO0FBRUQsUUFBQSxPQUFPLE1BQU0sQ0FBQztBQUNsQixLQUFDLENBQUM7O0FBR1csSUFBQSxnQkFBQSxDQUFBLElBQUksR0FBaUIsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDO1NBQ3hELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDdEUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLElBQUksQ0FBQztBQUN4QixTQUFBLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQixTQUFBLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdEYsU0FBQSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEcsU0FBQSxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsRCxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixJQUFJ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N0IsU0FBQSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxLQUFLLEdBQUcsSUFBSSxlQUFlLENBQUMsT0FBTyxDQUFDO0FBQzVDLFNBQUEsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQyxTQUFBLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDeEIsU0FBQSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxLQUFLLEdBQUcsSUFBSSxlQUFlLENBQUMsT0FBTyxDQUFDO0FBQzVDLFNBQUEsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQyxTQUFBLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDeEIsU0FBQSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDO0FBQzFDLFNBQUEsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQyxTQUFBLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDeEIsU0FBQSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxHQUFHLEdBQWlCLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQztBQUN0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Q0FBQyxDQUFDO0FBQ3BCLFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsUUFBUSxHQUFpQixJQUFJLGVBQWUsQ0FBQyxVQUFVLENBQUM7QUFDaEUsU0FBQSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLEtBQUssR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMvRCxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsT0FBTyxHQUFpQixJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUM7U0FDOUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQzlELElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsT0FBTyxLQUFLLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3JGLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQzdCLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQzdCLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDcEIsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxRQUFRLEdBQWlCLElBQUksZUFBZSxDQUFDLFVBQVUsQ0FBQztTQUNoRSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDNUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxPQUFPLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDbkYsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNwQixTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2QixTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLFNBQVMsR0FBaUIsSUFBSSxlQUFlLENBQUMsV0FBVyxDQUFDO0FBQ2xFLFNBQUEsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxLQUFLLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDOUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDbEYsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNwQixTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2QixTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLFFBQVEsR0FBaUIsSUFBSSxlQUFlLENBQUMsVUFBVSxDQUFDO0FBQ2hFLFNBQUEsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEtBQUk7UUFDeEQsSUFBSSxHQUFHLENB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RUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLElBQUksR0FBaUIsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDO0FBQ3hELFNBQUEsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDcEcsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLE9BQU8sS0FBSyxnQkFBQSxDQUFBLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3JFLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEtBQUssTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzVFLFNBQUEsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxPQUFPLEtBQUssZ0JBQUEsQ0FBQSxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN6RCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDdkQsU0FBQSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxHQUFHLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDO1NBQ3hDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RCxTQUFBLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyRixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdELFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsR0FBRyxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQztTQUN4QyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEQsU0FBQSxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEYsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5RCxTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLElBQUksR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUM7U0FDekMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEQsU0FBQSxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0RixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUQsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDO0FBQzlDLFNBQUEsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZGLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQzdCLFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLFFBQVEsQ0FBQztTQUM5QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsUUFB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O0FBQ0osQ0FBQTtBQUVEO0FBQ00sU0FBVSxlQUFlLENBQUMsY0FBcUMsRUFBQTtBQUNqRSxJQUFBLFFBQ0ksZUFBZSxDQUFDLE1BQU0sRUFBRTs7U0FFbkIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDOztTQUVqRSxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMzRSxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFM0UsU0FBQSxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEQsU0FBQSxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEQsU0FBQSxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEQsU0FBQSxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEQsU0FBQSxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxR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LEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQztBQUMvQyxTQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQy9DLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFDL0MsU0FBQSxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQztBQUMvQyxTQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQy9DLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFDL0MsU0FBQSxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQztBQUMvQyxTQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQy9DLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFDdEQ7QUFDTjs7QUM3SUE7QUFzQkE7OztBQUdHO01BQ1UsT0FBTyxDQUFBO0FBTUwsSUFBQSxXQUFBLENBQUE7QUFDQSxJQUFBLFFBQUEsQ0FBQTtBQUNBLElBQUEsT0FBQSxDQUFBO0FBQ0EsSUFBQSxTQUFBLENBQUE7QUFDQSxJQUFBLFNBQUEsQ0FBQTtBQVRYOzs7QUFHRztBQUNILElBQUEsV0FB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Q0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRVosR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUvRCxHQUFDLENBQUMsS0FBSyxFQUFFQSxHQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTNEUsR0FBQyxFQUFFLENBQUMsT0FBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU0sVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU9BLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVqQixHQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUNrQixHQUFDLENBQUMsR0FBRyxFQUFFLEVBQUVqQixHQUFDLEdBQUdqRSxHQUFDLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDaUUsR0FBQyxDQUFDakUsR0FBQyxDQUFDLGlCQUFpQixHQUFHa0UsR0FBQyxFQUFFZ0IsR0FBQyxFQUFDLENBQUMsU0FBU0EsR0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJbEIsR0FBQyxDQUFDLElBQUksQ0FBQ0csR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDSCxHQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDUSxHQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQ1csR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQ0osR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDSyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRUosR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNoQixHQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRUEsR0FBQyxDQUFDLElBQUksQ0FBQ0csR0FBQyxDQUFDLENBQUMsQ0FBQ2UsR0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUMsU0FBU0csR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFdEYsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM0RSxHQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDSixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNJLEdBQUMsQ0FBQ0UsR0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNGLEdBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQ1csR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNqQixHQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRUEsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDYyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFSSxHQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR2xCLEdBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNtQixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUNULEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDVSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTRCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBU0UsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxHQUFHbkIsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQ21CLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVNKLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVNLLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxFQUFFLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRUEsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUV2QixHQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLFNBQVNzQixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRUEsR0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNDLEdBQUMsQ0FBQ0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDRCxHQUFDLENBQUNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcseUJBQXlCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLE9BQU8sR0FBRyxDQUFDLEVBQUUsUUFBUSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsU0FBUyxHQUFHLENBQUMsRUFBRSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxTQUFTQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQy9GLEdBQUMsQ0FBQyxLQUFLLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUzhGLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOUYsR0FBQyxDQUFDLEtBQUssQ0FBQ0EsR0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTbUYsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ25GLEdBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxXQUFXLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJOEUsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDa0IsR0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyx3QkFBd0IsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQ3hCLEdBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsS0FBSSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUN4RSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDd0UsR0FBQyxDQUFDQSxHQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsdUJBQXVCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ2EsR0FBQyxDQUFDLENBQUMsQ0FBQ2QsR0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUdNLEdBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDN0UsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDaUcsR0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDakcsR0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU29GLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDRyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUN2RixHQUFDLENBQUMsR0FBRyxFQUFFQSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU2lHLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFNUIsR0FBQyxFQUFFLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFDLENBQUMsR0FBR3NCLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssR0FBR04sR0FBQyxDQUFDLENBQUMsQ0FBQ2QsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFUSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRU4sR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUVtQixHQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRUEsR0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVNMLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUN2RixHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFNBQVN5RixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR3pGLEdBQUMsQ0FBQyxPQUFPLEVBQUVBLEdBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRXVGLEdBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixHQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQ3ZGLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUV5RixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRWhCLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFDLENBQUMsU0FBU3VCLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBU0UsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNsRyxHQUFDLENBQUMsRUFBRSxFQUFFQSxHQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQ21GLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUNULEdBQUMsQ0FBQ0csR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFUixHQUFDLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNlLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVNlLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNELEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQyxHQUFDLEVBQUMsQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM1QixHQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDRyxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUzBCLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQ2pDLEdBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQ2EsR0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNsRixHQUFDLENBQUMsS0FBSyxDQUFDQyxHQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDK0QsR0FBQyxDQUFDLENBQUMsQ0FBdURlLEdBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDTixHQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQ1MsR0FBQyxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsQ0FBQ0gsR0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDRyxHQUFDLENBQUMsSUFBSSxDQUFDLEVBQUMsQ0FBQyxDQUFDSCxHQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQ0QsR0FBQyxDQUFDYixHQUFDLENBQUMsRUFBRSxDQUFDRSxHQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUNDLEdBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUNlLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDZCxHQUFDLENBQUMsQ0FBQzs7QUNBajBVLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQ3RFLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEdBQUcsRUFBRUEsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNrRyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ2xHLEdBQUMsQ0FBQyxHQUFHLEVBQUVnRyxHQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNoRyxHQUFDLENBQUMsR0FBRyxFQUFFZ0csR0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUNNLEdBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVNkLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFNLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVNjLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU9OLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVNGLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDUSxHQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBU1gsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTUCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDcEYsR0FBQyxDQUFDLGFBQWEsRUFBRUEsR0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFxSyxTQUFTd0csR0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUN6QixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUNJLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQ25GLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMrRSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQ0ksR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDbkYsR0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHQSxHQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLHFCQUFxQixHQUFHaUcsR0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLENBQUNqRyxHQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMrRSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUVJLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDbkYsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQytFLEdBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUvRSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUlpRixHQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8scUJBQXFCLENBQUMsU0FBU2dCLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQ2hCLEdBQUMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQ0EsR0FBQyxHQUFHLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVNGLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVNJLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTYSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTRSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQ0F0NUYsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsVUFBVSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUNPLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSXpHLEdBQUMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQ3NFLEdBQUMsQ0FBQyxHQUFHLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQ0YsR0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQUssZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNFLEdBQUMsQ0FBQyxHQUFHLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDQSxHQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBT21DLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDbkMsR0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJdEUsR0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUV5RyxHQUFDLENBQUN4QyxHQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUN3QyxHQUFDLENBQUN4QyxHQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQ0UsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUNzQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUl6RyxHQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUNvRSxHQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLDZSQUE2UixDQUFDLENBQUMsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLFdBQVcsRUFBRSxPQUFPLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxNQUFNLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDRCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPRCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUNsRSxHQUFDLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLDJCQUEyQixDQUFDLHFCQUFxQixDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQ0EsR0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQ3NFLEdBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDQSxHQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQ0EsR0FBQyxDQUFDLEtBQUssQ0FBQ0EsR0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsY0FBYyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsY0FBYyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQ0YsR0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUNFLEdBQUMsQ0FBQyxHQUFHLENBQUNBLEdBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUNBLEdBQUMsQ0FBQyxNQUFNLENBQUNBLEdBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUksQ0FBQyxDQUFJLElBQUMsRUFBRSxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPbUMsR0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUd4QyxHQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUNJLEdBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHRixHQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUNGLEdBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQ1ksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBT0ssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNILENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUNGLENBQUMsQ0FBQyxLQUFLLENBQUN2RSxHQUFDLENBQUMsVUFBVSxDQUFDd0UsQ0FBQyxDQUFDLFNBQVMsQ0FBQ0MsQ0FBQyxDQUFDLGVBQWUsQ0FBQ0csQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUNGLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQ08sR0FBQyxDQUFDLE9BQU8sQ0FBQ04sR0FBQyxDQUFDLFdBQVcsQ0FBQ0UsR0FBQyxDQUFDLFVBQVUsQ0FBQ0UsR0FBQyxDQUFDLGFBQWEsQ0FBQzBCLEdBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQ0QsR0FBQyxDQUFDLGFBQWEsQ0FBQ3ZHLEdBQUMsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDcUUsR0FBQyxDQUFDLFFBQVEsQ0FBQ04sR0FBQyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDakUsR0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsdUJBQXVCLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsa0RBQWtELENBQUMsRUFBRSxDQUFDOztBQ0VsMVIsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUN6QyxJQUFJLEdBQUcsQ0FBQztJQUNKLE1BQU07SUFDTixPQUFPO0lBQ1AsTUFBTTtJQUNOLE1BQU07SUFDTixPQUFPO0lBQ1AsT0FBTztJQUNQLE1BQU07SUFDTixPQUFPO0lBQ1AsT0FBTztJQUNQLFFBQVE7SUFDUixNQUFNO0lBQ04sTUFBTTtJQUNOLE9BQU87SUFDUCxNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07QUFDVCxDQUFBLENBQUMsQ0FDTCxDQUFDO0FBRUY7QUFDTSxTQUFVLFlBQVksQ0FBQyxJQUFVLEVBQUE7SUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztBQUFFLFFBQUEsT0FBTyxLQUFLLENBQUM7QUFFM0MsSUFBQSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLElBQUEsT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNoRixDQUFDO0FBRUQ7QUFDTSxTQUFVLHNCQUFzQixDQUFDLElBQVUsRUFBQTtJQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87QUFBRSxRQUFBLE9BQU8sU0FBUyxDQUFDO0lBRXBDLElBQUksS0FBSyxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDakQsSUFBQSxJQUFJLEtBQUs7QUFBRSxRQUFBLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFM0QsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDekMsSUFBQSxJQUFJLE1BQU07UUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBR3pDLElBQUEsT0FBTyxTQUFTLENBQUM7QUFDckI7O0FDM0NBO0FBOEJPLE1BQU0sZUFBZSxHQUFHMkcsR0FBYSxDQUFtQixTQUFVLENBQUMsQ0FBQztBQUUzRTtTQUNnQixXQUFXLENBQUMsRUFDeEIsT0FBTyxFQUNQLFVBQVUsRUFDVixNQUFNLEdBQUcsSUFBSSxFQUNiLEtBQUssRUFDTCxHQUFHLEVBQ0gsT0FBTyxHQVFWLEVBQUE7QUFDRyxJQUFBLE1BQU0sU0FBUyxHQUFHQyxDQUFNLENBQXFCLElBQUksQ0FBQyxDQUFDO0lBQ25ELE1BQU0sU0FBUyxHQUFHQyxHQUFVLENBQUMsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDO0lBRXhEQyxDQUFTLENBQUMsTUFBSztRQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTztZQUFFLE9BQU87QUFFL0IsUUFBQSxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFDakMsUUFBQWhFLHlCQUFnQixDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQUs7QUFDekYsWUFBQSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTzs7WUFHMUMsSUFBSSxTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckQsWUFBQSxPQUFPLFNBQVMsRUFBRTtBQUNkLGdCQUFBLElBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUM7Z0JBQ3BDLFNBQVMsQ0FBQyxXQUFXLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQy9DLFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwRCxhQUFBO0FBQ0wsU0FBQyxDQUFDLENBQUM7S0FDTixFQUFFLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUU3QyxJQUFBLE9BQU8yQixjQUFNLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxPQUFPLEdBQVMsQ0FBQztBQUNyRixDQUFDO0FBRUQ7QUFDTyxNQUFNLFFBQVEsR0FBR3NDLEVBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFFaEQ7QUFDZ0IsU0FBQSxZQUFZLENBQUMsRUFBRSxPQUFPLEVBQTRCLEVBQUE7QUFDOUQsSUFBQSxNQUFNLFNBQVMsR0FBR0gsQ0FBTSxDQUFxQixJQUFJLENBQUMsQ0FBQztJQUVuREUsQ0FBUyxDQUFDLE1BQUs7UUFDWCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU87WUFBRSxPQUFPO0FBQy9CLFFBQUEsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBQ2pDLFFBQUEsU0FBUyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDMUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUVqQyxJQUFBLE9BQU9yQyxHQUFNLENBQUEsTUFBQSxFQUFBLEVBQUEsR0FBRyxFQUFFLFNBQVMsR0FBUyxDQUFDO0FBQ3pDLENBQUM7QUFFRDtBQUNPLE1BQU0sU0FBUyxHQUFHc0MsRUFBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUVsRDtBQUNnQixTQUFBLE1BQU0sQ0FBQyxFQUNuQixLQUFLLEVBQ0wsVUFBVSxFQUNWLE1BQU0sR0FBRyxLQUFLLEVBQ2QsS0FBSyxHQUFHLENBQUMsR0FNWixFQUFBO0FBQ0csSUFBQSxNQUFNLE9BQU8sR0FBR0YsR0FBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDOztBQUc1QyxJQUFBLElBQUksS0FBSyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsdUJBQXVCO1FBQUUsT0FBT3BDLEdBQUEsQ0FBQ3VDLEdBQVEsRUFBQSxJQUFBLEVBQUEsS0FBQSxDQUFlLENBQUM7SUFFdkYsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7QUFDN0MsUUFBQSxPQUFPdkMsR0FBQyxDQUFBLFFBQVEsRUFBQyxFQUFBLE9BQU8sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsVUFBVSxHQUFJLENBQUM7QUFDdkYsS0FBQTtBQUFNLFNBQUEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQy9CLE9BQU9BLEdBQUEsQ0FBQyxRQUFRLEVBQUEsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUEsQ0FBSSxDQUFDO0FBQy9ELEtBQUE7QUFBTSxTQUFBLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUMvQixRQUFBLE9BQU9BLElBQUN1QyxHQUFRLEVBQUEsSUFBQSxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQVksQ0FBQztBQUM1QyxLQUFBO0FBQU0sU0FBQSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDaEMsUUFBQSxPQUFPdkMsSUFBQ3VDLEdBQVEsRUFBQSxJQUFBLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBWSxDQUFDO0FBQzVDLEtBQUE7QUFBTSxTQUFBLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUM3QixRQUFBLE9BQU92QyxHQUFDLENBQUF1QyxHQUFRLEVBQUUsSUFBQSxFQUFBLGlCQUFpQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQVksQ0FBQztBQUM3RixLQUFBO0FBQU0sU0FBQSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDakMsT0FBT3ZDLEdBQUEsQ0FBQ3VDLEdBQVEsRUFBRSxJQUFBLEVBQUEscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQVksQ0FBQztBQUM5RCxLQUFBO0FBQU0sU0FBQSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7O0FBRTdCLFFBQUEsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDckIsWUFBQSxJQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ3RGLFlBQUEsSUFBSSxDQUFDLFFBQVE7QUFBRSxnQkFBQSxPQUFPdkMsR0FBQyxDQUFBLFFBQVEsRUFBQyxFQUFBLE9BQU8sRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsVUFBVSxFQUFFLFVBQVUsR0FBSSxDQUFDO0FBRXRGLFlBQUEsSUFBSSxVQUFVLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0MsWUFBQSxJQUFJLFlBQVksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFL0QsWUFBQSxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUM7Z0JBQ3BDLE9BQU9BLEdBQUEsQ0FBQSxLQUFBLEVBQUEsRUFBSyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBQSxDQUFJLENBQUM7QUFDL0YsaUJBQUEsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDO0FBQ3pDLGdCQUFBLE9BQU9BLGFBQUssR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFJLENBQUM7O2dCQUN4RSxPQUFPQSxHQUFBLENBQUEsS0FBQSxFQUFBLEVBQUssR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBQSxDQUFJLENBQUM7QUFDM0QsU0FBQTtBQUVELFFBQUEsT0FBT0EsR0FBQyxDQUFBLFFBQVEsRUFBQyxFQUFBLE9BQU8sRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsVUFBVSxFQUFFLFVBQVUsR0FBSSxDQUFDO0FBQzFFLEtBQUE7QUFBTSxTQUFBLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUM3QixRQUFBLE9BQU9BLElBQUMsU0FBUyxFQUFBLEVBQUMsT0FBTyxFQUFFLEtBQUssR0FBSSxDQUFDO0FBQ3hDLEtBQUE7QUFBTSxTQUFBLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUMvQixRQUFBLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMzQixRQUNJQSxJQUFDdUMsR0FBUSxFQUFBLElBQUE7Z0JBQ0x2QyxHQUFDLENBQUEsR0FBRyxFQUFDLEVBQUEsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBSSxDQUFBOztnQkFBRSxHQUFHO0FBQ3RELGdCQUFBQSxHQUFBLENBQUMsR0FBRyxFQUFBLEVBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBSSxDQUFBLENBQzVDLEVBQ2I7QUFDTCxTQUFBO0FBQU0sYUFBQSxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDdEMsWUFBQSxRQUNJQSxHQUFBLENBQUEsR0FBQSxFQUFBLEVBQUcsSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLFVBQVUsRUFBQyxNQUFNLEVBQUMsUUFBUSxFQUFDLEtBQUssRUFBQyxlQUFlLEVBQUEsRUFDbkUsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUMzQixFQUNOO0FBQ0wsU0FBQTtBQUFNLGFBQUE7WUFDSCxPQUFPQSxHQUFBLENBQUEsR0FBQSxFQUFBLElBQUE7O0FBQXdCLGdCQUFBLEtBQUssQ0FBQyxPQUFPO3FCQUFVLENBQUM7QUFDMUQsU0FBQTtBQUNKLEtBQUE7QUFBTSxTQUFBLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNqQyxPQUFPQSxHQUFBLENBQUN1QyxHQUFRLEVBQUEsSUFBQSxFQUFBLFlBQUEsQ0FBNEIsQ0FBQztBQUNoRCxLQUFBO0FBQU0sU0FBQSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUM5RCxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ1QsWUFBQSxRQUNJdkMsR0FBSSxDQUFBLElBQUEsRUFBQSxFQUFBLEtBQUssRUFBRSw4Q0FBOEMsRUFBQSxFQUNwRCxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FDZkEsR0FBSSxDQUFBLElBQUEsRUFBQSxFQUFBLEtBQUssRUFBQyx5QkFBeUIsRUFBQTtnQkFDL0JBLEdBQUMsQ0FBQSxHQUFHLEVBQUMsRUFBQSxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBSSxDQUFBLENBQ2pGLENBQ1IsQ0FBQyxDQUNELEVBQ1A7QUFDTCxTQUFBO0FBQU0sYUFBQTtBQUNILFlBQUEsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7Z0JBQUUsT0FBT0EsR0FBQSxDQUFDdUMsR0FBUSxFQUFBLElBQUEsRUFBQSxjQUFBLENBQThCLENBQUM7QUFFdEUsWUFBQSxRQUNJdkMsR0FBTSxDQUFBLE1BQUEsRUFBQSxFQUFBLEtBQUssRUFBQyxvQ0FBb0MsRUFBQSxFQUMzQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssTUFDdkJBLElBQUN1QyxHQUFRLEVBQUEsSUFBQTtnQkFDSixLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJO2dCQUN2QnZDLEdBQUMsQ0FBQSxHQUFHLEVBQUMsRUFBQSxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBSSxDQUFBLENBQzNFLENBQ2QsQ0FBQyxDQUNDLEVBQ1Q7QUFDTCxTQUFBO0FBQ0osS0FBQTtBQUFNLFNBQUEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFOztBQUUvQixRQUFBLElBQUksS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLElBQUksUUFBUSxFQUFFO0FBQ2xFLFlBQUEsT0FBT0EsSUFBQ3VDLEdBQVEsRUFBQSxJQUFBOztnQkFBTSxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUk7b0JBQWdCLENBQUM7QUFDaEUsU0FBQTtRQUVELElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDVCxZQUFBLFFBQ0l2QyxHQUFBLENBQUEsSUFBQSxFQUFBLEVBQUksS0FBSyxFQUFDLGdEQUFnRCxFQUFBLEVBQ3JELE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLE1BQ3BDQSxHQUFBLENBQUEsSUFBQSxFQUFBLEVBQUksS0FBSyxFQUFDLGdEQUFnRCxFQUFBO2dCQUNyRCxHQUFHOztnQkFBR0EsR0FBQyxDQUFBLEdBQUcsRUFBQyxFQUFBLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFJLENBQUEsQ0FDckYsQ0FDUixDQUFDLENBQ0QsRUFDUDtBQUNMLFNBQUE7QUFBTSxhQUFBO1lBQ0gsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDO2dCQUFFLE9BQU9BLEdBQUEsQ0FBQ3VDLEdBQVEsRUFBQSxJQUFBLEVBQUEsZ0JBQUEsQ0FBZ0MsQ0FBQztBQUVyRixZQUFBLFFBQ0l2QyxHQUFBLENBQUEsTUFBQSxFQUFBLEVBQU0sS0FBSyxFQUFDLHNDQUFzQyxFQUFBLEVBQzdDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsS0FBSyxNQUMzQ0EsR0FBQSxDQUFDdUMsR0FBUSxFQUFBLElBQUE7Z0JBQ0osS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSTtnQkFDdEIsR0FBRzs7Z0JBQUd2QyxHQUFDLENBQUEsR0FBRyxFQUFDLEVBQUEsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUksQ0FBQSxDQUMvRSxDQUNkLENBQUMsQ0FDQyxFQUNUO0FBQ0wsU0FBQTtBQUNKLEtBQUE7QUFFRCxJQUFBLE9BQU9BLElBQUN1QyxHQUFRLEVBQUEsSUFBQTs7QUFBb0IsUUFBQSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUFnQixDQUFDO0FBQzlFLENBQUM7QUFFRDtBQUNPLE1BQU0sR0FBRyxHQUFHRCxFQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRXRDO0FBQ2dCLFNBQUEsUUFBUSxDQUFDLEtBQXNDLEVBQUUsRUFBRSxFQUFBO0lBQy9ELE9BQU90QyxHQUFBLENBQUEsS0FBQSxFQUFBLEVBQUssS0FBSyxFQUFDLHlCQUF5QixJQUFFLEtBQUssQ0FBQyxRQUFRLENBQU8sQ0FBQztBQUN2RSxDQUFDO0FBRUQ7QUFDZ0IsU0FBQSxZQUFZLENBQUMsRUFBRSxPQUFPLEVBQXVCLEVBQUE7QUFDekQsSUFBQSxRQUNJQSxHQUFBLENBQUEsS0FBQSxFQUFBLEVBQUssS0FBSyxFQUFDLDZCQUE2QixFQUFBO1FBQ3BDQSxHQUFHLENBQUEsR0FBQSxFQUFBLEVBQUEsS0FBSyxFQUFDLGlDQUFpQyxFQUFBLEVBQUUsT0FBTyxDQUFLLENBQ3RELEVBQ1I7QUFDTixDQUFDO0FBRUQ7O0FBRUc7QUFDYSxTQUFBLG1CQUFtQixDQUMvQixTQUFzQixFQUN0QixHQUFRLEVBQ1IsUUFBMEIsRUFDMUIsS0FBZ0IsRUFDaEIsT0FBVSxFQUNWLE9BQXlCLEVBQUE7SUFFekIsSUFBSSxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsR0FBR3dDLENBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxHQUFHQSxDQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDN0MsSUFBQSxJQUFJLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxHQUFHQSxDQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDOztJQUczRCxJQUFJLENBQUMsV0FBVyxFQUFFO0FBQ2QsUUFBQSxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlCLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUVyQixRQUFBLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUMvQixLQUFBOztJQUdESCxDQUFTLENBQUMsTUFBSztRQUNYLE1BQU0sZ0JBQWdCLEdBQUcsTUFBSztBQUMxQixZQUFBLElBQUksVUFBVSxJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLFFBQVEsQ0FBQyxjQUFjLEVBQUU7QUFDaEYsZ0JBQUEsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzVCLGdCQUFBLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakMsYUFBQTtBQUNMLFNBQUMsQ0FBQzs7QUFHRixRQUFBLElBQUksU0FBUyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLHdCQUF3QixFQUFFLGdCQUFnQixDQUFDLENBQUM7O1FBRTdFLElBQUksU0FBUyxHQUFHLFNBQVMsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUUzRCxRQUFBLE9BQU8sTUFBSztBQUNSLFlBQUEsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDaEMsWUFBQSxTQUFTLEVBQUUsQ0FBQztBQUNoQixTQUFDLENBQUM7QUFDTixLQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUU1QixJQUFBLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUM7QUFFRDtBQUNNLE1BQU8sYUFBYyxTQUFRSSw0QkFBbUIsQ0FBQTtBQUN4QixJQUFBLElBQUEsQ0FBQTtBQUEyQixJQUFBLE9BQUEsQ0FBQTtJQUFyRCxXQUEwQixDQUFBLElBQWtCLEVBQVMsT0FBc0IsRUFBQTtBQUN2RSxRQUFBLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFEQSxJQUFJLENBQUEsSUFBQSxHQUFKLElBQUksQ0FBYztRQUFTLElBQU8sQ0FBQSxPQUFBLEdBQVAsT0FBTyxDQUFlO0tBRTFFO0lBRU0sTUFBTSxHQUFBO0FBQ1QsUUFBQSxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEUsUUFBQUMsR0FBTSxDQUFDMUMsR0FBQyxDQUFBLGVBQWUsQ0FBQyxRQUFRLEVBQUEsRUFBQyxLQUFLLEVBQUUsT0FBTyxJQUFHLElBQUksQ0FBQyxPQUFPLENBQTRCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBQ2pIO0lBRU0sUUFBUSxHQUFBO0FBQ1gsUUFBQTJDLEVBQXNCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBQzVDO0FBQ0o7O0FDaFJEO0FBQ0EsU0FBUyxjQUFjLENBQUMsR0FBK0MsRUFBQTtBQUNuRSxJQUFBLE9BQU8sR0FBRyxDQUFDLE1BQU0sSUFBSSxJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxTQUFTLElBQUssR0FBRyxDQUFDLE1BQXNCLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQztBQUN2RyxDQUFDO0FBRUQ7QUFDQSxTQUFTLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBbUIsRUFBQTtBQUN2QyxJQUFBLElBQUksT0FBTyxHQUFHUCxHQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7O0FBRzFDLElBQUEsTUFBTSxTQUFTLEdBQUcsQ0FBQyxHQUErQyxLQUFJO0FBQ2xFLFFBQUEsSUFBSSxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDckIsT0FBTztBQUNWLFNBQUE7UUFFRCxHQUFHLENBQUMsZUFBZSxFQUFFLENBQUM7QUFDdEIsUUFBQSxNQUFNLGNBQWMsR0FBRztBQUNuQixZQUFBLE1BQU0sRUFBRTtBQUNKLGdCQUFBLE1BQU0sRUFBRTtBQUNKLG9CQUFBLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7b0JBQ3RELEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7QUFDMUUsaUJBQUE7Z0JBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO0FBQ2xCLGFBQUE7U0FDSixDQUFDOztBQUdGLFFBQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFlBQVksRUFBRSxFQUNqQyxJQUFJLENBQUMsSUFBSSxFQUNULEdBQUcsQ0FBQyxPQUFPLEtBQUssR0FBRyxDQUFDLE9BQU8sSUFBSVEsaUJBQVEsQ0FBQyxPQUFPLENBQUMsRUFDaEQsY0FBcUIsQ0FDeEIsQ0FBQztBQUNOLEtBQUMsQ0FBQzs7QUFHRixJQUFBLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBK0MsS0FBSTtRQUNsRSxHQUFHLENBQUMsZUFBZSxFQUFFLENBQUM7QUFDdEIsUUFBQSxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztRQUM1QyxNQUFNLE1BQU0sR0FBRyxTQUFTLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQzs7QUFFckMsUUFBQSxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQztBQUMvQyxRQUFBLE1BQU0sRUFBRSxZQUFZLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBRTFDLFFBQUEsSUFBSSxPQUFPLEdBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUU5QixRQUFBLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsRUFBRTtZQUM3QyxTQUFTLE9BQU8sQ0FBQyxLQUF3QixFQUFBO0FBQ3JDLGdCQUFBLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBYyxDQUFDLENBQUM7QUFDN0IsZ0JBQUEsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDbkM7QUFDRCxZQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLFlBQUEsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDcEMsU0FBQTtBQUVELFFBQUEsZUFBZSxRQUFRLEdBQUE7QUFDbkIsWUFBQSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNyQyxnQkFBQSxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekIsZ0JBQUEsSUFBSSxXQUFXLEdBQVcsS0FBSyxDQUFDLElBQUksQ0FBQztBQUNyQyxnQkFBQSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsc0JBQXNCLEVBQUU7b0JBQ3pDLFdBQVcsR0FBRyxpQkFBaUIsQ0FDM0IsS0FBSyxDQUFDLElBQUksRUFDVixPQUFPLENBQUMsUUFBUSxDQUFDLCtCQUErQixFQUNoRCxPQUFPLENBQUMsUUFBUSxDQUFDLGtCQUFrQixFQUNuQyxPQUFPLENBQUMsUUFBUSxDQUFDLHdCQUF3QixFQUN6QyxTQUFTLENBQ1osQ0FBQztBQUNMLGlCQUFBO0FBQ0QsZ0JBQUEsTUFBTSxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztBQUNwRSxhQUFBO1lBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBQUM7U0FDM0Q7QUFDRCxRQUFBLFFBQVEsRUFBRSxDQUFDO0FBQ2YsS0FBQyxDQUFDO0FBRUYsSUFBQSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQztJQUNwQyxRQUNJNUMsR0FDSSxDQUFBLElBQUEsRUFBQSxFQUFBLEtBQUssRUFBRSx5QkFBeUIsSUFBSSxPQUFPLEdBQUcsYUFBYSxHQUFHLEVBQUUsQ0FBQyxFQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFBLFdBQUEsRUFDUCxJQUFJLENBQUMsTUFBTSxFQUFBO0FBRXRCLFFBQUFBLEdBQUEsQ0FBQSxPQUFBLEVBQUEsRUFBTyxLQUFLLEVBQUMsa0NBQWtDLEVBQUMsSUFBSSxFQUFDLFVBQVUsRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUksQ0FBQTtRQUN4R0EsR0FBQyxDQUFBLFFBQVEsSUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUksQ0FBQTtBQUNuRixRQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSUEsR0FBQyxDQUFBLFFBQVEsRUFBQyxFQUFBLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFJLENBQUEsQ0FDOUQsRUFDUDtBQUNOLENBQUM7QUFFRDtBQUNBLFNBQVMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUF3QixFQUFBO0FBQzVDLElBQUEsSUFBSSxPQUFPLEdBQUdvQyxHQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7O0FBRzFDLElBQUEsTUFBTSxTQUFTLEdBQUcsQ0FBQyxHQUErQyxLQUFJO0FBQ2xFLFFBQUEsSUFBSSxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDckIsT0FBTztBQUNWLFNBQUE7UUFFRCxHQUFHLENBQUMsZUFBZSxFQUFFLENBQUM7QUFDdEIsUUFBQSxNQUFNLGNBQWMsR0FBRztBQUNuQixZQUFBLE1BQU0sRUFBRTtBQUNKLGdCQUFBLE1BQU0sRUFBRTtBQUNKLG9CQUFBLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7b0JBQ3RELEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7QUFDMUUsaUJBQUE7Z0JBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO0FBQ2xCLGFBQUE7U0FDSixDQUFDOztBQUdGLFFBQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFlBQVksRUFBRSxFQUNqQyxJQUFJLENBQUMsSUFBSSxFQUNULEdBQUcsQ0FBQyxPQUFPLEtBQUssR0FBRyxDQUFDLE9BQU8sSUFBSVEsaUJBQVEsQ0FBQyxPQUFPLENBQUMsRUFDaEQsY0FBcUIsQ0FDeEIsQ0FBQztBQUNOLEtBQUMsQ0FBQztJQUVGLFFBQ0k1QyxZQUFJLEtBQUssRUFBQywrQkFBK0IsRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFBO1FBQ3hEQSxHQUFDLENBQUEsUUFBUSxJQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBSSxDQUFBO0FBQ25GLFFBQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJQSxHQUFDLENBQUEsUUFBUSxFQUFDLEVBQUEsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUksQ0FBQSxDQUM5RCxFQUNQO0FBQ04sQ0FBQztBQUVEO0FBQ0EsU0FBUyxRQUFRLENBQUMsRUFBRSxLQUFLLEVBQTBCLEVBQUE7SUFDL0MsTUFBTSxRQUFRLEdBQUdvQyxHQUFVLENBQUMsZUFBZSxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ3RELElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLGlCQUFpQjtBQUMvQyxRQUFBLE9BQU9wQyxJQUFDLFlBQVksRUFBQSxFQUFDLE9BQU8sRUFBQyw4Q0FBOEMsR0FBRyxDQUFDO0lBRW5GLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLFFBQ0lBLEdBQUksQ0FBQSxJQUFBLEVBQUEsRUFBQSxLQUFLLEVBQUMsb0JBQW9CLElBQ3pCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUNWLElBQUksQ0FBQyxJQUFJLEdBQUdBLEdBQUEsQ0FBQyxRQUFRLEVBQUEsRUFBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUEsQ0FBSSxHQUFHQSxHQUFDLENBQUEsUUFBUSxFQUFDLEVBQUEsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFJLENBQUEsQ0FDeEcsQ0FDQSxFQUNQO0FBQ04sQ0FBQztBQUVEO0FBQ0EsU0FBUzZDLGFBQVcsQ0FBQyxLQUFzRSxFQUFBO0lBQ3ZGLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBR1QsR0FBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ2pELElBQUEsT0FBTyxRQUFRLENBQUMsZUFBZSxJQUMzQnBDLEdBQU0sQ0FBQSxNQUFBLEVBQUEsRUFBQSxLQUFLLEVBQUMscUJBQXFCLEVBQUUsRUFBQSxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQVEsS0FFM0VBLEdBQUEsQ0FBQ3VDLEdBQVEsRUFBQSxJQUFBLENBQVksQ0FDeEIsQ0FBQztBQUNOLENBQUM7QUFFRDtBQUNBLFNBQVMsWUFBWSxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBc0QsRUFBQTtBQUMzRixJQUFBLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFbkUsUUFDSXZDLElBQUN1QyxHQUFRLEVBQUEsSUFBQTtRQUNKLFVBQVU7QUFDUCxZQUFBLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUNWdkMsR0FBQSxDQUFDdUMsR0FBUSxFQUFDLEVBQUEsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUE7QUFDbkIsZ0JBQUF2QyxHQUFBLENBQUEsSUFBQSxFQUFBLElBQUE7b0JBQ0lBLEdBQUMsQ0FBQSxHQUFHLEVBQUMsRUFBQSxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFJLENBQUE7QUFDaEQsb0JBQUFBLEdBQUEsQ0FBQzZDLGFBQVcsRUFBQyxFQUFBLElBQUksRUFBRSxJQUFJLEdBQUksQ0FDMUI7Z0JBQ0w3QyxHQUFLLENBQUEsS0FBQSxFQUFBLEVBQUEsS0FBSyxFQUFDLHVCQUF1QixFQUFBO0FBQzlCLG9CQUFBQSxHQUFBLENBQUMsWUFBWSxFQUFBLEVBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBQSxDQUFJLENBQ3hELENBQ0MsQ0FDZCxDQUFDO1FBQ0wsQ0FBQyxVQUFVLElBQUlBLEdBQUEsQ0FBQyxRQUFRLEVBQUEsRUFBQyxLQUFLLEVBQUUsS0FBb0IsRUFBQSxDQUFJLENBQ2xELEVBQ2I7QUFDTixDQUFDO0FBT0Q7OztBQUdHO1NBQ2EsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBd0MsRUFBQTtBQUNoRixJQUFBLElBQUksT0FBTyxHQUFHb0MsR0FBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBRTFDLElBQUEsSUFBSSxLQUFLLEdBQUcsbUJBQW1CLENBQzNCLE9BQU8sQ0FBQyxTQUFTLEVBQ2pCLE9BQU8sQ0FBQyxHQUFHLEVBQ1gsT0FBTyxDQUFDLFFBQVEsRUFDaEIsT0FBTyxDQUFDLEtBQUssRUFDYixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFDcEIsWUFBVztRQUNQLElBQUksTUFBTSxHQUFHLE1BQU0sbUJBQW1CLENBQUMsTUFDbkMsV0FBVyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQ2xFLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVU7QUFBRSxZQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDOztBQUM5RSxZQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzlELEtBQUMsQ0FDSixDQUFDO0FBRUYsSUFBQSxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksU0FBUztRQUN4QixRQUNJcEMsSUFBQ3VDLEdBQVEsRUFBQSxJQUFBO0FBQ0wsWUFBQXZDLEdBQUEsQ0FBQyxRQUFRLEVBQUEsSUFBQSxFQUFBLFNBQUEsQ0FBbUIsQ0FDckIsRUFDYjtBQUNELFNBQUEsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLE9BQU87UUFDM0IsUUFDSUEsSUFBQ3VDLEdBQVEsRUFBQSxJQUFBO0FBQ0wsWUFBQXZDLEdBQUEsQ0FBQyxRQUFRLEVBQUEsSUFBQTs7QUFBWSxnQkFBQSxLQUFLLENBQUMsS0FBSyxDQUFZLENBQ3JDLEVBQ2I7QUFFTixJQUFBLFFBQ0lBLEdBQUEsQ0FBQSxLQUFBLEVBQUEsRUFBSyxLQUFLLEVBQUMsNkJBQTZCLEVBQUE7QUFDcEMsUUFBQUEsR0FBQSxDQUFDLFlBQVksRUFBQSxFQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUksQ0FBQSxDQUMxRCxFQUNSO0FBQ04sQ0FBQztTQUVlLGNBQWMsQ0FBQyxJQUFrQixFQUFFLEtBQVksRUFBRSxVQUFrQixFQUFBO0FBQy9FLElBQUEsT0FBTyxJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUVBLElBQUMsUUFBUSxFQUFBLEVBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFBLENBQUksQ0FBQyxDQUFDO0FBQ3ZGLENBQUM7U0FFZSxtQkFBbUIsQ0FDL0IsSUFBa0IsRUFDbEIsS0FBMEIsRUFDMUIsVUFBa0IsRUFBQTtBQUVsQixJQUFBLE9BQU8sSUFBSSxhQUFhLENBQUMsSUFBSSxFQUFFQSxJQUFDLFlBQVksRUFBQSxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBQSxDQUFJLENBQUMsQ0FBQztBQUMzRixDQUFDO0FBRUQ7QUFDQTtBQUNBO0FBRUEsU0FBUyxNQUFNLENBQUMsSUFBZSxFQUFBO0lBQzNCLE9BQU8sSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztBQUN2QyxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsSUFBZSxFQUFBO0lBQ2pDLE9BQU8sSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUN6QyxDQUFDO0FBRUQ7QUFDQSxTQUFTLGlCQUFpQixDQUFDLElBQWUsRUFBRSxNQUE4QixFQUFBO0lBQ3RFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzlELElBQUEsS0FBSyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUTtBQUFFLFFBQUEsaUJBQWlCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBRWxFLElBQUEsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQUVEO0FBQ0EsU0FBUyxlQUFlLENBQUMsUUFBcUIsRUFBRSxNQUE4QixFQUFBO0FBQzFFLElBQUEsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBRztRQUMxQixPQUFPLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBRTdELFFBQUEsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFFM0IsUUFBQSxJQUFJLEdBQUc7QUFBRSxZQUFBLE9BQU8sR0FBRyxDQUFDOztBQUNmLFlBQUEsT0FBTyxPQUFPLENBQUM7QUFDeEIsS0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQ7OztBQUdHO0FBQ0csU0FBVSxTQUFTLENBQUMsR0FBZ0IsRUFBQTtBQUN0QyxJQUFBLElBQUksUUFBUSxHQUEyQixJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2pELElBQUEsSUFBSSxJQUFJLEdBQWdCLElBQUksR0FBRyxFQUFFLENBQUM7QUFFbEMsSUFBQSxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRTtBQUNsQixRQUFBLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QixRQUFBLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZCLFFBQUEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoQixLQUFBOztJQUdELEtBQUssSUFBSSxJQUFJLElBQUksR0FBRztBQUFFLFFBQUEsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBRXhELElBQUEsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FDbEIsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDL0YsQ0FBQztJQUNGLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3BELENBQUM7QUFFRDs7O0FBR0c7QUFDRyxTQUFVLFVBQVUsQ0FBQyxHQUF3QixFQUFBO0FBQy9DLElBQUEsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQzNCLFFBQUEsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBRztBQUNmLFlBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDcEQsU0FBQyxDQUFDLENBQUM7QUFDTixLQUFBO0FBQU0sU0FBQTtBQUNILFFBQUEsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsS0FBQTtBQUNMLENBQUM7QUFFRDtBQUNBO0FBQ0E7QUFFQTtBQUNBLFNBQVMsZUFBZSxDQUFDLElBQVksRUFBQTtJQUNqQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2pDLElBQUEsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDNUIsSUFBQSxPQUFPLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7QUFBRSxRQUFBLElBQUksRUFBRSxDQUFDO0FBRXBELElBQUEsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVCLENBQUM7QUFFRDtBQUNNLFNBQVUsaUJBQWlCLENBQzdCLFlBQW9CLEVBQ3BCLGlCQUEwQixFQUMxQixhQUFxQixFQUNyQixvQkFBNEIsRUFDNUIsUUFBaUIsRUFBQTtJQUVqQixNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQztBQUV0QyxJQUFBLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxpQkFBaUI7QUFDL0IsUUFBQSxPQUFPLGVBQWUsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFFNUYsSUFBSSxLQUFLLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN6QyxJQUFBLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRCxJQUFBLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRW5DLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekUsSUFBQSxJQUFJLGlCQUFpQixFQUFFO1FBQ25CLGFBQWEsR0FBRyxnQ0FBZ0MsQ0FDNUMsYUFBYSxFQUNiLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FDeEQsQ0FBQztBQUNMLEtBQUE7QUFBTSxTQUFBO0FBQ0gsUUFBQSxhQUFhLEdBQUcsY0FBYyxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7QUFDL0csS0FBQTtBQUNELElBQUEsYUFBYSxHQUFHLENBQUEsRUFBRyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUEsRUFBRyxPQUFPLEVBQUUsTUFBTSxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFBLENBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4RyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUM7QUFFeEMsSUFBQSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUIsQ0FBQztBQUVEO0FBQ08sZUFBZSxXQUFXLENBQUMsS0FBWSxFQUFFLElBQVcsRUFBRSxhQUFxQixFQUFFLFdBQW9CLEVBQUE7QUFDcEcsSUFBQSxJQUFJLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLFdBQVcsSUFBSSxTQUFTLElBQUksV0FBVyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUM7UUFBRSxPQUFPO0FBQ25HLElBQUEsYUFBYSxHQUFHLGFBQWEsSUFBSSxFQUFFLEdBQUcsR0FBRyxHQUFHLGFBQWEsQ0FBQztBQUUxRCxJQUFBLElBQUksV0FBVyxHQUFHLE1BQU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELElBQUksS0FBSyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsSUFBSSxRQUFRLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUUzQyxJQUFBLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSTtRQUFFLE9BQU87QUFDeEMsSUFBQSxJQUFJLEtBQUssR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN0RCxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQztRQUFFLE9BQU87SUFFM0MsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUMsSUFBQSxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO1FBQUUsT0FBTzs7QUFHdkQsSUFBQSxJQUFJLGNBQWMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRCxJQUFBLElBQUksV0FBVyxFQUFFO1FBQ2IsSUFBSSxZQUFZLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUUzQyxRQUFBLElBQUksWUFBWSxHQUFhLENBQUMsR0FBRyxjQUFjLENBQUEsRUFBRyxJQUFJLENBQUMsTUFBTSxDQUFLLEVBQUEsRUFBQSxhQUFhLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FDekcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQzVELENBQUM7QUFFRixRQUFBLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUM7QUFDL0QsS0FBQTtBQUFNLFNBQUE7UUFDSCxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUEsRUFBRyxjQUFjLENBQUEsRUFBRyxJQUFJLENBQUMsTUFBTSxDQUFLLEVBQUEsRUFBQSxhQUFhLENBQUssRUFBQSxFQUFBLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQSxDQUFFLENBQUM7QUFDekcsS0FBQTtBQUVELElBQUEsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ25ELElBQUEsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2xEOztTQ25ZZ0IsWUFBWSxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBNEMsRUFBQTtBQUN4RixJQUFBLFFBQ0lBLEdBQUEsQ0FBQSxJQUFBLEVBQUEsRUFBSSxLQUFLLEVBQUMsdUJBQXVCLEVBQzVCLEVBQUEsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQ1hBLEdBQUEsQ0FBQSxJQUFBLEVBQUEsSUFBQTtBQUNJLFFBQUFBLEdBQUEsQ0FBQyxHQUFHLEVBQUEsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEdBQUksQ0FDM0MsQ0FDUixDQUFDLENBQ0QsRUFDUDtBQUNOLENBQUM7QUFPRDtTQUNnQixRQUFRLENBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUF3QyxFQUFBO0FBQ2hGLElBQUEsSUFBSSxPQUFPLEdBQUdvQyxHQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7QUFFMUMsSUFBQSxJQUFJLEtBQUssR0FBRyxtQkFBbUIsQ0FDM0IsT0FBTyxDQUFDLFNBQVMsRUFDakIsT0FBTyxDQUFDLEdBQUcsRUFDWCxPQUFPLENBQUMsUUFBUSxFQUNoQixPQUFPLENBQUMsS0FBSyxFQUNiLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxFQUNwQixZQUFXO1FBQ1AsSUFBSSxNQUFNLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQyxNQUNuQyxXQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FDbEUsQ0FBQztRQUVGLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVTtBQUFFLFlBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUM7QUFDbkYsUUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN4RCxLQUFDLENBQ0osQ0FBQztBQUVGLElBQUEsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLFNBQVM7UUFDeEIsUUFDSXBDLElBQUN1QyxHQUFRLEVBQUEsSUFBQTtBQUNMLFlBQUF2QyxHQUFBLENBQUMsUUFBUSxFQUFBLElBQUEsRUFBQSxZQUFBLENBQXNCLENBQ3hCLEVBQ2I7QUFDRCxTQUFBLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxPQUFPO1FBQzNCLFFBQ0lBLElBQUN1QyxHQUFRLEVBQUEsSUFBQTtZQUNKLEdBQUc7QUFDSixZQUFBdkMsR0FBQSxDQUFDLFFBQVEsRUFBQSxJQUFBOztnQkFBWSxLQUFLLENBQUMsS0FBSyxDQUFZO1lBQUMsR0FBRyxDQUN6QyxFQUNiO0FBRU4sSUFBQSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLGlCQUFpQjtBQUM3RCxRQUFBLE9BQU9BLElBQUMsWUFBWSxFQUFBLEVBQUMsT0FBTyxFQUFDLDhDQUE4QyxHQUFHLENBQUM7QUFFbkYsSUFBQSxPQUFPQSxHQUFDLENBQUEsWUFBWSxFQUFDLEVBQUEsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVUsR0FBSSxDQUFDO0FBQ3hFLENBQUM7U0FFZSxjQUFjLENBQUMsSUFBa0IsRUFBRSxLQUFZLEVBQUUsVUFBa0IsRUFBQTtBQUMvRSxJQUFBLE9BQU8sSUFBSSxhQUFhLENBQUMsSUFBSSxFQUFFQSxJQUFDLFFBQVEsRUFBQSxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBQSxDQUFJLENBQUMsQ0FBQztBQUN2RixDQUFDO1NBRWUsbUJBQW1CLENBQUMsSUFBa0IsRUFBRSxRQUFtQixFQUFFLFVBQWtCLEVBQUE7QUFDM0YsSUFBQSxPQUFPLElBQUksYUFBYSxDQUFDLElBQUksRUFBRUEsSUFBQyxZQUFZLEVBQUEsRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUEsQ0FBSSxDQUFDLENBQUM7QUFDOUY7O0FDOURBO0FBQ0EsU0FBUyxXQUFXLENBQUMsS0FBeUIsRUFBQTtJQUMxQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUdvQyxHQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDakQsT0FBTyxRQUFRLENBQUMsZUFBZSxHQUFHcEMsR0FBQSxDQUFBLE1BQUEsRUFBQSxFQUFNLEtBQUssRUFBQyxxQkFBcUIsSUFBRSxLQUFLLENBQUMsTUFBTSxDQUFRLEdBQUdBLEdBQUEsQ0FBQ3VDLEdBQVEsRUFBQSxJQUFBLENBQVksQ0FBQztBQUN0SCxDQUFDO0FBRUQ7QUFDTSxTQUFVLGFBQWEsQ0FBQyxFQUMxQixRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsR0FLYixFQUFBO0lBQ0csSUFBSSxRQUFRLEdBQUdILEdBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFFcEQsUUFDSXBDLElBQUN1QyxHQUFRLEVBQUEsSUFBQTtRQUNMdkMsR0FBTyxDQUFBLE9BQUEsRUFBQSxFQUFBLEtBQUssRUFBQywyQkFBMkIsRUFBQTtZQUNwQ0EsR0FBTyxDQUFBLE9BQUEsRUFBQSxFQUFBLEtBQUssRUFBQyxrQkFBa0IsRUFBQTtBQUMzQixnQkFBQUEsR0FBQSxDQUFBLElBQUEsRUFBQSxFQUFJLEtBQUssRUFBQyxzQkFBc0IsSUFDM0IsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLE1BQ3pCQSxHQUFJLENBQUEsSUFBQSxFQUFBLEVBQUEsS0FBSyxFQUFDLGVBQWUsRUFBQTtvQkFDckJBLEdBQUMsQ0FBQSxRQUFRLElBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFJLENBQUE7QUFDckQsb0JBQUEsS0FBSyxJQUFJLENBQUMsSUFBSUEsR0FBQyxDQUFBLFdBQVcsSUFBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBSSxDQUFBLENBQ3BELENBQ1IsQ0FBQyxDQUNELENBQ0Q7WUFDUkEsR0FBTyxDQUFBLE9BQUEsRUFBQSxFQUFBLEtBQUssRUFBQyxrQkFBa0IsRUFBQSxFQUMxQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FDWEEsR0FBQSxDQUFBLElBQUEsRUFBQSxJQUFBLEVBQ0ssR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEtBQ1pBLEdBQUEsQ0FBQSxJQUFBLEVBQUEsSUFBQTtBQUNJLGdCQUFBQSxHQUFBLENBQUMsR0FBRyxFQUFDLEVBQUEsS0FBSyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFBLENBQUksQ0FDOUMsQ0FDUixDQUFDLENBQ0QsQ0FDUixDQUFDLENBQ0UsQ0FDSjtRQUNQLFFBQVEsQ0FBQyxpQkFBaUIsSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsS0FDN0NBLElBQUMsWUFBWSxFQUFBLEVBQUMsT0FBTyxFQUFDLCtDQUErQyxHQUFHLENBQzNFLENBQ00sRUFDYjtBQUNOLENBQUM7QUFPRDtTQUNnQixTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUF3QyxFQUFBO0FBQ2pGLElBQUEsSUFBSSxPQUFPLEdBQUdvQyxHQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7QUFFMUMsSUFBQSxJQUFJLEtBQUssR0FBRyxtQkFBbUIsQ0FDM0IsT0FBTyxDQUFDLFNBQVMsRUFDakIsT0FBTyxDQUFDLEdBQUcsRUFDWCxPQUFPLENBQUMsUUFBUSxFQUNoQixPQUFPLENBQUMsS0FBSyxFQUNiLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxFQUNwQixZQUFXO1FBQ1AsSUFBSSxNQUFNLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQyxNQUNuQyxZQUFZLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FDbkUsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVTtZQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3ZGLEtBQUMsQ0FDSixDQUFDO0FBRUYsSUFBQSxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksU0FBUztRQUN4QixRQUNJcEMsSUFBQ3VDLEdBQVEsRUFBQSxJQUFBO0FBQ0wsWUFBQXZDLEdBQUEsQ0FBQyxRQUFRLEVBQUEsSUFBQSxFQUFBLFlBQUEsQ0FBc0IsQ0FDeEIsRUFDYjtBQUNELFNBQUEsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLE9BQU87UUFDM0IsUUFDSUEsSUFBQ3VDLEdBQVEsRUFBQSxJQUFBO1lBQ0osR0FBRztBQUNKLFlBQUF2QyxHQUFBLENBQUMsUUFBUSxFQUFBLElBQUE7O2dCQUFZLEtBQUssQ0FBQyxLQUFLLENBQVk7WUFBQyxHQUFHLENBQ3pDLEVBQ2I7QUFFTixJQUFBLE9BQU9BLElBQUMsYUFBYSxFQUFBLEVBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsR0FBSSxDQUFDO0FBQ3JHLENBQUM7U0FFZSxlQUFlLENBQUMsSUFBa0IsRUFBRSxLQUFZLEVBQUUsVUFBa0IsRUFBQTtBQUNoRixJQUFBLE9BQU8sSUFBSSxhQUFhLENBQUMsSUFBSSxFQUFFQSxJQUFDLFNBQVMsRUFBQSxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBQSxDQUFJLENBQUMsQ0FBQztBQUN4RixDQUFDO0FBRUssU0FBVSxvQkFBb0IsQ0FDaEMsSUFBa0IsRUFDbEIsUUFBa0IsRUFDbEIsTUFBbUIsRUFDbkIsVUFBa0IsRUFBQTtJQUVsQixPQUFPLElBQUksYUFBYSxDQUFDLElBQUksRUFBRUEsR0FBQyxDQUFBLGFBQWEsSUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBSSxDQUFBLENBQUMsQ0FBQztBQUNsSDs7QUM5RkE7QUFDTSxJQUFXLFdBQVcsQ0FRM0I7QUFSRCxDQUFBLFVBQWlCLFdBQVcsRUFBQTtBQUN4QixJQUFBLFNBQWdCLEtBQUssQ0FBQyxJQUFZLEVBQUUsS0FBWSxFQUFBO0FBQzVDLFFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQWdCLENBQUM7S0FDeEM7QUFGZSxJQUFBLFdBQUEsQ0FBQSxLQUFLLFFBRXBCLENBQUE7QUFFRCxJQUFBLFNBQWdCLE1BQU0sQ0FBQyxLQUFZLEVBQUUsR0FBK0IsRUFBQTtBQUNoRSxRQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDO0tBQ3BDO0FBRmUsSUFBQSxXQUFBLENBQUEsTUFBTSxTQUVyQixDQUFBO0FBQ0wsQ0FBQyxFQVJnQixXQUFXLEtBQVgsV0FBVyxHQVEzQixFQUFBLENBQUEsQ0FBQTs7QUNXRDtBQUNNLFNBQVUsVUFBVSxDQUFJLElBQWlCLEVBQUE7SUFDM0MsT0FBT3ZCLCtCQUFRLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxLQUFJO0FBQ2pDLFFBQUEsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUk7WUFDaEIsSUFBSSxNQUFNLEdBQUksSUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQUUsZ0JBQUEsT0FBTyxNQUFNLENBQUM7QUFFbEMsWUFBQSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xHLFNBQUMsQ0FBQztBQUNOLEtBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVEO0FBQ0EsU0FBUyxhQUFhLENBQUMsSUFBWSxFQUFBO0FBQy9CLElBQUEsT0FBTyxJQUFJO1NBQ04sS0FBSyxDQUFDLFNBQVMsQ0FBQztTQUNoQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNsQixJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEIsQ0FBQztBQUVEO0FBQzhEO0FBQzlELFNBQVMsNEJBQTRCLENBQUksTUFBMkIsRUFBRSxNQUFtQixFQUFBO0lBQ3JGLE9BQU9xRSw0QkFBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMzRSxtQ0FBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRDtBQUNPLE1BQU0sY0FBYyxHQUFHTyx1Q0FBZ0IsQ0FBcUI7O0FBRS9ELElBQUEsU0FBUyxFQUFFLENBQUMsSUFDUlQsNEJBQUssQ0FBU1UsK0JBQVEsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1NBQy9DLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLFdBQVcsRUFBZSxDQUFDO1NBQzFDLElBQUksQ0FBQyxxREFBcUQsQ0FBQztBQUNwRSxJQUFBLGtCQUFrQixFQUFFLENBQUMsSUFDakJMLCtCQUFRLENBQ0osVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUNILG1DQUFZLENBQUMsRUFDbkNRLCtCQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDUixtQ0FBWSxDQUFDLEVBQ2xDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFDM0MsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssS0FBSyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FDekQ7QUFDTCxJQUFBLE9BQU8sRUFBRSxNQUNMNEUsK0JBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUk7O1FBRWxCLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUIsUUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPQyxvQ0FBYSxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQzs7UUFFckUsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN2QyxRQUFBLE9BQU9DLG9DQUFhLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDbkQsS0FBQyxDQUFDO0FBQ04sSUFBQSxVQUFVLEVBQUUsQ0FBQyxJQUNUaEYsNEJBQUssQ0FDRCxDQUFDLENBQUMsa0JBQWtCLEVBQ3BCLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssV0FBVyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FDckc7QUFDTCxJQUFBLFNBQVMsRUFBRSxDQUFDLElBQ1JLLCtCQUFRLENBQ0osVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUNFLHNDQUFlLENBQUMsRUFDdENHLCtCQUFRLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQ3BELENBQUMsS0FBSyxFQUFFLEdBQUcsS0FBSTtRQUNYLElBQUksU0FBUyxHQUFHLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLFdBQVcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckUsSUFBSSxTQUFTLElBQUksTUFBTTtZQUFFLFNBQVMsR0FBRyxZQUFZLENBQUM7UUFDbEQsSUFBSSxTQUFTLElBQUksS0FBSztZQUFFLFNBQVMsR0FBRyxXQUFXLENBQUM7UUFDaEQsT0FBTztBQUNILFlBQUEsS0FBSyxFQUFFLEtBQUs7QUFDWixZQUFBLFNBQVMsRUFBRSxTQUF1QztTQUNyRCxDQUFDO0FBQ04sS0FBQyxDQUNKO0FBRUwsSUFBQSxZQUFZLEVBQUUsQ0FBQyxJQUNYLENBQUMsQ0FBQyxTQUFTO1NBQ04sS0FBSyxDQUFDLElBQUksSUFBRztBQUNWLFFBQUEsUUFBUSxJQUFJO1lBQ1IsS0FBSyxPQUFPLEVBQUU7QUFDVixnQkFBQSxPQUFPLDRCQUE0QixDQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQzFDTCwrQkFBUSxDQUNKSywrQkFBUSxDQUFDLGVBQWUsQ0FBQztBQUNwQixxQkFBQSxJQUFJLENBQUNILHNDQUFlLENBQUM7QUFDckIscUJBQUEsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUNkMEUsOEJBQU8sQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFdEUsK0JBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUNKLHNDQUFlLENBQUMsQ0FBQyxFQUMxRCxDQUFDLFNBQVMsRUFBRSxNQUFNLEtBQUk7QUFDbEIsb0JBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7aUJBQzFELENBQ0osQ0FDSixDQUFDO0FBQ0wsYUFBQTtBQUNELFlBQUEsS0FBSyxNQUFNO0FBQ1AsZ0JBQUEsT0FBTyw0QkFBNEIsQ0FDL0IsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUNqREYsK0JBQVEsQ0FDSkssK0JBQVEsQ0FBQyxlQUFlLENBQUM7QUFDcEIscUJBQUEsSUFBSSxDQUFDSCxzQ0FBZSxDQUFDO0FBQ3JCLHFCQUFBLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDZCxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDMUIsQ0FBQyxTQUFTLEVBQUUsTUFBTSxLQUFJO29CQUNsQixPQUFPO3dCQUNILElBQUk7QUFDSix3QkFBQSxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVM7QUFDbEQsd0JBQUEsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQztxQkFDaEMsQ0FBQztpQkFDTCxDQUNKLENBQ0osQ0FBQztBQUNOLFlBQUEsS0FBSyxNQUFNO2dCQUNQLE9BQU9NLGdDQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQy9CLFlBQUEsS0FBSyxVQUFVO0FBQ1gsZ0JBQUEsT0FBT1gsbUNBQVksQ0FBQyxJQUFJLENBQ3BCRywrQkFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxJQUFHO29CQUMzQixPQUFPO3dCQUNILElBQUk7QUFDSix3QkFBQSxNQUFNLEVBQUUsSUFBSTt3QkFDWixLQUFLO3FCQUNPLENBQUM7aUJBQ3BCLENBQUMsQ0FDTCxDQUFDO0FBQ04sWUFBQTtnQkFDSSxPQUFPUyw2QkFBTSxDQUFDLDRCQUE0QixJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUMxRCxTQUFBO0FBQ0wsS0FBQyxDQUFDO1NBQ0QsSUFBSSxDQUFDLG1DQUFtQyxDQUFDO0FBQ2xELElBQUEsVUFBVSxFQUFFLENBQUMsSUFBSVQsK0JBQVEsQ0FBQ0ssK0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRVIsbUNBQVksRUFBRSxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLEtBQUssTUFBTSxDQUFDO0FBQ3pHLElBQUEsV0FBVyxFQUFFLENBQUMsSUFDVkcsK0JBQVEsQ0FBQ0ssK0JBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRVIsbUNBQVksRUFBRSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEtBQUk7UUFDN0UsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBZSxDQUFDO0FBQ3pELEtBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNqQyxZQUFZLEVBQUUsQ0FBQyxJQUNYRywrQkFBUSxDQUNKSywrQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUNqQlIsbUNBQVksRUFDWixDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQ1MsK0JBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUNKLHNDQUFlLENBQUMsQ0FBQyxFQUN2RCxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsTUFBTSxLQUFJO0FBQ2pCLFFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFnQixDQUFDO0FBQ2xELEtBQUMsQ0FDSixDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztBQUNuQyxJQUFBLFdBQVcsRUFBRSxDQUFDLElBQ1ZGLCtCQUFRLENBQUNLLCtCQUFRLENBQUMsUUFBUSxDQUFDLEVBQUVSLG1DQUFZLEVBQUUsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxLQUFJO1FBQzlFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWUsQ0FBQztBQUN6RCxLQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO0FBQzVCLElBQUEsYUFBYSxFQUFFLENBQUMsSUFDWkcsK0JBQVEsQ0FBQ0ssK0JBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUNSLG1DQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssS0FBSTtBQUN6RSxRQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBaUIsQ0FBQztBQUNyRCxLQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUM7QUFDMUMsSUFBQSxhQUFhLEVBQUUsQ0FBQyxJQUNaRywrQkFBUSxDQUFDSywrQkFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQ1IsbUNBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxLQUFJO0FBQzFFLFFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFlLENBQUM7QUFDakQsS0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDOztBQUUzQyxJQUFBLE1BQU0sRUFBRSxDQUFDLElBQUlGLDRCQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUM7SUFDaEgsS0FBSyxFQUFFLENBQUMsSUFDSkssK0JBQVEsQ0FDSixDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxFQUNoRCxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDeEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFDakQsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sS0FBSTtRQUN0QixPQUFPO1lBQ0gsTUFBTTtZQUNOLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDdkQsWUFBQSxVQUFVLEVBQUUsT0FBTztBQUNuQixZQUFBLFFBQVEsRUFBRSxzQkFBc0I7U0FDMUIsQ0FBQztBQUNmLEtBQUMsQ0FDSjtBQUNSLENBQUEsQ0FBQyxDQUFDO0FBRUg7O0FBRUc7QUFDSCxNQUFNLDJCQUEyQixHQUFxQkwsNEJBQUssQ0FBQ0UsbUNBQVksRUFBRSxjQUFjLENBQUMsT0FBTyxDQUFDO0tBQzVGLElBQUksRUFBRTs7QUFFTixLQUFBLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRTlCOzs7QUFHRztBQUNHLFNBQVUsVUFBVSxDQUFDLElBQVksRUFBQTtJQUNuQyxJQUFJO1FBQ0EsSUFBSSxLQUFLLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDaEQsUUFBQSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEMsS0FBQTtBQUFDLElBQUEsT0FBTyxLQUFLLEVBQUU7UUFDWixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ3JDLEtBQUE7QUFDTDs7QUNyT0EsU0FBUyxJQUFJLEdBQUcsR0FBRztBQUNuQixTQUFTLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQzFCO0FBQ0EsSUFBSSxLQUFLLE1BQU0sQ0FBQyxJQUFJLEdBQUc7QUFDdkIsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hCLElBQUksT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDO0FBQ0QsU0FBUyxVQUFVLENBQUMsS0FBSyxFQUFFO0FBQzNCLElBQUksT0FBTyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUM7QUFDbEYsQ0FBQztBQUNELFNBQVMsR0FBRyxDQUFDLEVBQUUsRUFBRTtBQUNqQixJQUFJLE9BQU8sRUFBRSxFQUFFLENBQUM7QUFDaEIsQ0FBQztBQUNELFNBQVMsWUFBWSxHQUFHO0FBQ3hCLElBQUksT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFDRCxTQUFTLE9BQU8sQ0FBQyxHQUFHLEVBQUU7QUFDdEIsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCLENBQUM7QUFDRCxTQUFTLFdBQVcsQ0FBQyxLQUFLLEVBQUU7QUFDNUIsSUFBSSxPQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztBQUN2QyxDQUFDO0FBQ0QsU0FBUyxjQUFjLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUM5QixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxLQUFLLE9BQU8sQ0FBQyxLQUFLLFVBQVUsQ0FBQyxDQUFDO0FBQ2xHLENBQUM7QUFDRCxTQUFTLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3pCLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBQ0QsU0FBUyxRQUFRLENBQUMsR0FBRyxFQUFFO0FBQ3ZCLElBQUksT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUNELFNBQVMsV0FBVyxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtBQUNuRCxJQUFJLElBQUksVUFBVSxFQUFFO0FBQ3BCLFFBQVEsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDeEUsUUFBUSxPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN2QyxLQUFLO0FBQ0wsQ0FBQztBQUNELFNBQVMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO0FBQ3hELElBQUksT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRTtBQUM5QixVQUFVLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM3RCxVQUFVLE9BQU8sQ0FBQyxHQUFHLENBQUM7QUFDdEIsQ0FBQztBQUNELFNBQVMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO0FBQzFELElBQUksSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO0FBQzdCLFFBQVEsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzlDLFFBQVEsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRTtBQUN6QyxZQUFZLE9BQU8sSUFBSSxDQUFDO0FBQ3hCLFNBQVM7QUFDVCxRQUFRLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO0FBQ3RDLFlBQVksTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQzlCLFlBQVksTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDcEUsWUFBWSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDN0MsZ0JBQWdCLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RCxhQUFhO0FBQ2IsWUFBWSxPQUFPLE1BQU0sQ0FBQztBQUMxQixTQUFTO0FBQ1QsUUFBUSxPQUFPLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ3BDLEtBQUs7QUFDTCxJQUFJLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQztBQUN6QixDQUFDO0FBQ0QsU0FBUyxXQUFXLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRTtBQUMzRyxJQUFJLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixDQUFDLENBQUM7QUFDaEcsSUFBSSxJQUFJLFlBQVksRUFBRTtBQUN0QixRQUFRLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixDQUFDLENBQUM7QUFDbEcsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztBQUMzQyxLQUFLO0FBQ0wsQ0FBQztBQUNELFNBQVMsYUFBYSxDQUFDLEtBQUssRUFBRTtBQUM5QixJQUFJLE9BQU8sS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDO0FBQ3RDLENBQUM7QUFDRDtBQUNBLFNBQVMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUU7QUFDOUIsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFDRCxTQUFTLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtBQUN0QyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBQ0QsU0FBUyxNQUFNLENBQUMsSUFBSSxFQUFFO0FBQ3RCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEMsQ0FBQztBQUNELFNBQVMsWUFBWSxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUU7QUFDN0MsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ25ELFFBQVEsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLFlBQVksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN2QyxLQUFLO0FBQ0wsQ0FBQztBQUNELFNBQVMsT0FBTyxDQUFDLElBQUksRUFBRTtBQUN2QixJQUFJLE9BQU8sUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBQ0QsU0FBUyxXQUFXLENBQUMsSUFBSSxFQUFFO0FBQzNCLElBQUksT0FBTyxRQUFRLENBQUMsZUFBZSxDQUFDLDRCQUE0QixFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFDRCxTQUFTLElBQUksQ0FBQyxJQUFJLEVBQUU7QUFDcEIsSUFBSSxPQUFPLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUNELFNBQVMsS0FBSyxHQUFHO0FBQ2pCLElBQUksT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckIsQ0FBQztBQUNELFNBQVMsS0FBSyxHQUFHO0FBQ2pCLElBQUksT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDcEIsQ0FBQztBQUNELFNBQVMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUMvQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ25ELElBQUksT0FBTyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ25FLENBQUM7QUFDRCxTQUFTLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRTtBQUN0QyxJQUFJLElBQUksS0FBSyxJQUFJLElBQUk7QUFDckIsUUFBUSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3hDLFNBQVMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEtBQUs7QUFDbkQsUUFBUSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBQ0QsU0FBUyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtBQUMxQztBQUNBLElBQUksTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6RSxJQUFJLEtBQUssTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFO0FBQ2xDLFFBQVEsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFO0FBQ3JDLFlBQVksSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0QyxTQUFTO0FBQ1QsYUFBYSxJQUFJLEdBQUcsS0FBSyxPQUFPLEVBQUU7QUFDbEMsWUFBWSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakQsU0FBUztBQUNULGFBQWEsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO0FBQ3BDLFlBQVksSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JELFNBQVM7QUFDVCxhQUFhLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUU7QUFDM0QsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hDLFNBQVM7QUFDVCxhQUFhO0FBQ2IsWUFBWSxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM3QyxTQUFTO0FBQ1QsS0FBSztBQUNMLENBQUM7QUFDRCxTQUFTLFFBQVEsQ0FBQyxPQUFPLEVBQUU7QUFDM0IsSUFBSSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFDRCxTQUFTLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQzlCLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDckIsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSTtBQUMvQixRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3pCLENBQUM7QUFDRCxTQUFTLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtBQUM3QyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLEtBQUssR0FBRyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBQ0Q7QUFDQSxJQUFJLGlCQUFpQixDQUFDO0FBQ3RCLFNBQVMscUJBQXFCLENBQUMsU0FBUyxFQUFFO0FBQzFDLElBQUksaUJBQWlCLEdBQUcsU0FBUyxDQUFDO0FBQ2xDLENBQUM7QUFDRCxTQUFTLHFCQUFxQixHQUFHO0FBQ2pDLElBQUksSUFBSSxDQUFDLGlCQUFpQjtBQUMxQixRQUFRLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztBQUM1RSxJQUFJLE9BQU8saUJBQWlCLENBQUM7QUFDN0IsQ0FBQztBQUNEO0FBQ0EsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7QUFDNUIsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7QUFDN0IsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7QUFDNUIsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDO0FBQzNCLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQzNDLElBQUksZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0FBQzdCLFNBQVMsZUFBZSxHQUFHO0FBQzNCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO0FBQzNCLFFBQVEsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0FBQ2hDLFFBQVEsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3JDLEtBQUs7QUFDTCxDQUFDO0FBQ0QsU0FBUyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUU7QUFDakMsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUNELElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQztBQUNyQixNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2pDLFNBQVMsS0FBSyxHQUFHO0FBQ2pCLElBQUksSUFBSSxRQUFRO0FBQ2hCLFFBQVEsT0FBTztBQUNmLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQztBQUNwQixJQUFJLEdBQUc7QUFDUDtBQUNBO0FBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDN0QsWUFBWSxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRCxZQUFZLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdDLFlBQVksTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqQyxTQUFTO0FBQ1QsUUFBUSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwQyxRQUFRLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDcEMsUUFBUSxPQUFPLGlCQUFpQixDQUFDLE1BQU07QUFDdkMsWUFBWSxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQzdELFlBQVksTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakQsWUFBWSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUMvQztBQUNBLGdCQUFnQixjQUFjLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzdDLGdCQUFnQixRQUFRLEVBQUUsQ0FBQztBQUMzQixhQUFhO0FBQ2IsU0FBUztBQUNULFFBQVEsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNwQyxLQUFLLFFBQVEsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO0FBQ3RDLElBQUksT0FBTyxlQUFlLENBQUMsTUFBTSxFQUFFO0FBQ25DLFFBQVEsZUFBZSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDaEMsS0FBSztBQUNMLElBQUksZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0FBQzdCLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQztBQUNyQixJQUFJLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMzQixDQUFDO0FBQ0QsU0FBUyxNQUFNLENBQUMsRUFBRSxFQUFFO0FBQ3BCLElBQUksSUFBSSxFQUFFLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTtBQUM5QixRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNwQixRQUFRLE9BQU8sQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDbEMsUUFBUSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO0FBQy9CLFFBQVEsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEIsUUFBUSxFQUFFLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDcEQsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQ3JELEtBQUs7QUFDTCxDQUFDO0FBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUMzQixJQUFJLE1BQU0sQ0FBQztBQUNYLFNBQVMsWUFBWSxHQUFHO0FBQ3hCLElBQUksTUFBTSxHQUFHO0FBQ2IsUUFBUSxDQUFDLEVBQUUsQ0FBQztBQUNaLFFBQVEsQ0FBQyxFQUFFLEVBQUU7QUFDYixRQUFRLENBQUMsRUFBRSxNQUFNO0FBQ2pCLEtBQUssQ0FBQztBQUNOLENBQUM7QUFDRCxTQUFTLFlBQVksR0FBRztBQUN4QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFO0FBQ25CLFFBQVEsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQixLQUFLO0FBQ0wsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN0QixDQUFDO0FBQ0QsU0FBUyxhQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRTtBQUNyQyxJQUFJLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUU7QUFDMUIsUUFBUSxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9CLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN2QixLQUFLO0FBQ0wsQ0FBQztBQUNELFNBQVMsY0FBYyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTtBQUN4RCxJQUFJLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUU7QUFDMUIsUUFBUSxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0FBQy9CLFlBQVksT0FBTztBQUNuQixRQUFRLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUIsUUFBUSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNO0FBQzVCLFlBQVksUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuQyxZQUFZLElBQUksUUFBUSxFQUFFO0FBQzFCLGdCQUFnQixJQUFJLE1BQU07QUFDMUIsb0JBQW9CLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0IsZ0JBQWdCLFFBQVEsRUFBRSxDQUFDO0FBQzNCLGFBQWE7QUFDYixTQUFTLENBQUMsQ0FBQztBQUNYLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN2QixLQUFLO0FBQ0wsQ0FBQztBQUNEO0FBQ0EsU0FBUyxjQUFjLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUN2QyxJQUFJLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ2xDLElBQUksU0FBUyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQzdDLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUs7QUFDaEMsWUFBWSxPQUFPO0FBQ25CLFFBQVEsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDOUIsUUFBUSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ2pDLFFBQVEsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO0FBQy9CLFlBQVksU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMxQyxZQUFZLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDbkMsU0FBUztBQUNULFFBQVEsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDL0QsUUFBUSxJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUM7QUFDaEMsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7QUFDeEIsWUFBWSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDN0IsZ0JBQWdCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSztBQUNsRCxvQkFBb0IsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLEtBQUssRUFBRTtBQUM5Qyx3QkFBd0IsWUFBWSxFQUFFLENBQUM7QUFDdkMsd0JBQXdCLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNO0FBQzFELDRCQUE0QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFO0FBQzFELGdDQUFnQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUN0RCw2QkFBNkI7QUFDN0IseUJBQXlCLENBQUMsQ0FBQztBQUMzQix3QkFBd0IsWUFBWSxFQUFFLENBQUM7QUFDdkMscUJBQXFCO0FBQ3JCLGlCQUFpQixDQUFDLENBQUM7QUFDbkIsYUFBYTtBQUNiLGlCQUFpQjtBQUNqQixnQkFBZ0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEMsYUFBYTtBQUNiLFlBQVksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3RCLFlBQVksYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwQyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMvQyxZQUFZLFdBQVcsR0FBRyxJQUFJLENBQUM7QUFDL0IsU0FBUztBQUNULFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDM0IsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNO0FBQ3ZCLFlBQVksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDdkMsUUFBUSxJQUFJLFdBQVcsRUFBRTtBQUN6QixZQUFZLEtBQUssRUFBRSxDQUFDO0FBQ3BCLFNBQVM7QUFDVCxLQUFLO0FBQ0wsSUFBSSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUM3QixRQUFRLE1BQU0saUJBQWlCLEdBQUcscUJBQXFCLEVBQUUsQ0FBQztBQUMxRCxRQUFRLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJO0FBQzlCLFlBQVkscUJBQXFCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUNyRCxZQUFZLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3BELFlBQVkscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEMsU0FBUyxFQUFFLEtBQUssSUFBSTtBQUNwQixZQUFZLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDckQsWUFBWSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNyRCxZQUFZLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDaEMsZ0JBQWdCLE1BQU0sS0FBSyxDQUFDO0FBQzVCLGFBQWE7QUFDYixTQUFTLENBQUMsQ0FBQztBQUNYO0FBQ0EsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUMzQyxZQUFZLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLFlBQVksT0FBTyxJQUFJLENBQUM7QUFDeEIsU0FBUztBQUNULEtBQUs7QUFDTCxTQUFTO0FBQ1QsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLElBQUksRUFBRTtBQUN4QyxZQUFZLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3RELFlBQVksT0FBTyxJQUFJLENBQUM7QUFDeEIsU0FBUztBQUNULFFBQVEsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7QUFDaEMsS0FBSztBQUNMLENBQUM7QUFDRCxTQUFTLHVCQUF1QixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDaEQsSUFBSSxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTTtBQUN0QyxRQUFRLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pDLEtBQUssQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUNELFNBQVMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtBQUN4SSxJQUFJLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7QUFDOUIsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQ3hCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2QsSUFBSSxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7QUFDM0IsSUFBSSxPQUFPLENBQUMsRUFBRTtBQUNkLFFBQVEsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0MsSUFBSSxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7QUFDMUIsSUFBSSxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2pDLElBQUksTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDVixJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUU7QUFDaEIsUUFBUSxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwRCxRQUFRLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN2QyxRQUFRLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEMsUUFBUSxJQUFJLENBQUMsS0FBSyxFQUFFO0FBQ3BCLFlBQVksS0FBSyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUN0RCxZQUFZLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN0QixTQUFTO0FBQ1QsYUFBYSxJQUFJLE9BQU8sRUFBRTtBQUMxQixZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3RDLFNBQVM7QUFDVCxRQUFRLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUNuRCxRQUFRLElBQUksR0FBRyxJQUFJLFdBQVc7QUFDOUIsWUFBWSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVELEtBQUs7QUFDTCxJQUFJLE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDaEMsSUFBSSxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQy9CLElBQUksU0FBUyxNQUFNLENBQUMsS0FBSyxFQUFFO0FBQzNCLFFBQVEsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoQyxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzVCLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3JDLFFBQVEsSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7QUFDM0IsUUFBUSxDQUFDLEVBQUUsQ0FBQztBQUNaLEtBQUs7QUFDTCxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNuQixRQUFRLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDNUMsUUFBUSxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzVDLFFBQVEsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQztBQUN0QyxRQUFRLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUM7QUFDdEMsUUFBUSxJQUFJLFNBQVMsS0FBSyxTQUFTLEVBQUU7QUFDckM7QUFDQSxZQUFZLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO0FBQ25DLFlBQVksQ0FBQyxFQUFFLENBQUM7QUFDaEIsWUFBWSxDQUFDLEVBQUUsQ0FBQztBQUNoQixTQUFTO0FBQ1QsYUFBYSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUMzQztBQUNBLFlBQVksT0FBTyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN2QyxZQUFZLENBQUMsRUFBRSxDQUFDO0FBQ2hCLFNBQVM7QUFDVCxhQUFhLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDakUsWUFBWSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDOUIsU0FBUztBQUNULGFBQWEsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQ3hDLFlBQVksQ0FBQyxFQUFFLENBQUM7QUFDaEIsU0FBUztBQUNULGFBQWEsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDNUQsWUFBWSxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2xDLFlBQVksTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzlCLFNBQVM7QUFDVCxhQUFhO0FBQ2IsWUFBWSxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ25DLFlBQVksQ0FBQyxFQUFFLENBQUM7QUFDaEIsU0FBUztBQUNULEtBQUs7QUFDTCxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUU7QUFDaEIsUUFBUSxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEMsUUFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO0FBQzFDLFlBQVksT0FBTyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN2QyxLQUFLO0FBQ0wsSUFBSSxPQUFPLENBQUM7QUFDWixRQUFRLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEMsSUFBSSxPQUFPLFVBQVUsQ0FBQztBQUN0QixDQUFDO0FBQ0Q7QUFDQSxTQUFTLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUU7QUFDNUMsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDdEIsSUFBSSxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7QUFDM0IsSUFBSSxNQUFNLGFBQWEsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUN6QyxJQUFJLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDMUIsSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFO0FBQ2hCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLFFBQVEsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLFFBQVEsSUFBSSxDQUFDLEVBQUU7QUFDZixZQUFZLEtBQUssTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFO0FBQ2pDLGdCQUFnQixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUMvQixvQkFBb0IsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QyxhQUFhO0FBQ2IsWUFBWSxLQUFLLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRTtBQUNqQyxnQkFBZ0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUN6QyxvQkFBb0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QyxvQkFBb0IsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzQyxpQkFBaUI7QUFDakIsYUFBYTtBQUNiLFlBQVksTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMxQixTQUFTO0FBQ1QsYUFBYTtBQUNiLFlBQVksS0FBSyxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUU7QUFDakMsZ0JBQWdCLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkMsYUFBYTtBQUNiLFNBQVM7QUFDVCxLQUFLO0FBQ0wsSUFBSSxLQUFLLE1BQU0sR0FBRyxJQUFJLFdBQVcsRUFBRTtBQUNuQyxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksTUFBTSxDQUFDO0FBQzVCLFlBQVksTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUNwQyxLQUFLO0FBQ0wsSUFBSSxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDO0FBQ0QsU0FBUyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUU7QUFDekMsSUFBSSxPQUFPLE9BQU8sWUFBWSxLQUFLLFFBQVEsSUFBSSxZQUFZLEtBQUssSUFBSSxHQUFHLFlBQVksR0FBRyxFQUFFLENBQUM7QUFDekYsQ0FBQztBQUNELFNBQVMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFO0FBQ2pDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN2QixDQUFDO0FBQ0QsU0FBUyxlQUFlLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFO0FBQ25FLElBQUksTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUM7QUFDMUUsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDM0MsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO0FBQ3hCO0FBQ0EsUUFBUSxtQkFBbUIsQ0FBQyxNQUFNO0FBQ2xDLFlBQVksTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDekUsWUFBWSxJQUFJLFVBQVUsRUFBRTtBQUM1QixnQkFBZ0IsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDO0FBQ25ELGFBQWE7QUFDYixpQkFBaUI7QUFDakI7QUFDQTtBQUNBLGdCQUFnQixPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDeEMsYUFBYTtBQUNiLFlBQVksU0FBUyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3ZDLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsS0FBSztBQUNMLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFDRCxTQUFTLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUU7QUFDakQsSUFBSSxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDO0FBQzVCLElBQUksSUFBSSxFQUFFLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTtBQUM5QixRQUFRLE9BQU8sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDL0IsUUFBUSxFQUFFLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2hEO0FBQ0E7QUFDQSxRQUFRLEVBQUUsQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDM0MsUUFBUSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNwQixLQUFLO0FBQ0wsQ0FBQztBQUNELFNBQVMsVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUU7QUFDbEMsSUFBSSxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO0FBQ3RDLFFBQVEsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3pDLFFBQVEsZUFBZSxFQUFFLENBQUM7QUFDMUIsUUFBUSxTQUFTLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkMsS0FBSztBQUNMLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN4RCxDQUFDO0FBQ0QsU0FBUyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM3RixJQUFJLE1BQU0sZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUM7QUFDL0MsSUFBSSxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNyQyxJQUFJLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxFQUFFLEdBQUc7QUFDOUIsUUFBUSxRQUFRLEVBQUUsSUFBSTtBQUN0QixRQUFRLEdBQUcsRUFBRSxJQUFJO0FBQ2pCO0FBQ0EsUUFBUSxLQUFLO0FBQ2IsUUFBUSxNQUFNLEVBQUUsSUFBSTtBQUNwQixRQUFRLFNBQVM7QUFDakIsUUFBUSxLQUFLLEVBQUUsWUFBWSxFQUFFO0FBQzdCO0FBQ0EsUUFBUSxRQUFRLEVBQUUsRUFBRTtBQUNwQixRQUFRLFVBQVUsRUFBRSxFQUFFO0FBQ3RCLFFBQVEsYUFBYSxFQUFFLEVBQUU7QUFDekIsUUFBUSxhQUFhLEVBQUUsRUFBRTtBQUN6QixRQUFRLFlBQVksRUFBRSxFQUFFO0FBQ3hCLFFBQVEsT0FBTyxFQUFFLElBQUksR0FBRyxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBQzdFO0FBQ0EsUUFBUSxTQUFTLEVBQUUsWUFBWSxFQUFFO0FBQ2pDLFFBQVEsS0FBSztBQUNiLFFBQVEsVUFBVSxFQUFFLEtBQUs7QUFDekIsS0FBSyxDQUFDO0FBQ04sSUFBSSxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDdEIsSUFBSSxFQUFFLENBQUMsR0FBRyxHQUFHLFFBQVE7QUFDckIsVUFBVSxRQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksS0FBSztBQUN4RSxZQUFZLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUN0RCxZQUFZLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFO0FBQ25FLGdCQUFnQixJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNqRCxvQkFBb0IsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN2QyxnQkFBZ0IsSUFBSSxLQUFLO0FBQ3pCLG9CQUFvQixVQUFVLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdDLGFBQWE7QUFDYixZQUFZLE9BQU8sR0FBRyxDQUFDO0FBQ3ZCLFNBQVMsQ0FBQztBQUNWLFVBQVUsRUFBRSxDQUFDO0FBQ2IsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDaEIsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ2pCLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUM5QjtBQUNBLElBQUksRUFBRSxDQUFDLFFBQVEsR0FBRyxlQUFlLEdBQUcsZUFBZSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDcEUsSUFBSSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7QUFDeEIsUUFBUSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUU7QUFDN0IsWUFBWSxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25EO0FBQ0EsWUFBWSxFQUFFLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hELFlBQVksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsQyxTQUFTO0FBQ1QsYUFBYTtBQUNiO0FBQ0EsWUFBWSxFQUFFLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDM0MsU0FBUztBQUNULFFBQVEsSUFBSSxPQUFPLENBQUMsS0FBSztBQUN6QixZQUFZLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2pELFFBQVEsZUFBZSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzFGLFFBQVEsS0FBSyxFQUFFLENBQUM7QUFDaEIsS0FBSztBQUNMLElBQUkscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsTUFBTSxlQUFlLENBQUM7QUFDdEIsSUFBSSxRQUFRLEdBQUc7QUFDZixRQUFRLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuQyxRQUFRLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQzdCLEtBQUs7QUFDTCxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO0FBQ3hCLFFBQVEsTUFBTSxTQUFTLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN0RixRQUFRLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakMsUUFBUSxPQUFPLE1BQU07QUFDckIsWUFBWSxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3RELFlBQVksSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQzVCLGdCQUFnQixTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzQyxTQUFTLENBQUM7QUFDVixLQUFLO0FBQ0wsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO0FBQ2xCLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQzlDLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQ3RDLFlBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoQyxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztBQUN2QyxTQUFTO0FBQ1QsS0FBSztBQUNMLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxVQUFVLENBQUMsSUFBSSxFQUFFLFdBQVcsR0FBRyxLQUFLLEVBQUU7QUFDL0MsSUFBSSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQzFELElBQUksT0FBTyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFDRCxJQUFJLFlBQVksR0FBRyxVQUFVLENBQUM7QUFDOUI7QUFDQTtBQUNBO0FBQ0EsU0FBUyxTQUFTLEdBQUc7QUFDckIsQ0FBQyxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDOUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLHNCQUFzQixDQUFDO0FBQ25DLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyx3VUFBd1UsQ0FBQztBQUM5VixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFDRDtBQUNBO0FBQ0EsU0FBUyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUU7QUFDbEMsQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUNULENBQUMsSUFBSSxNQUFNLENBQUM7QUFDWixDQUFDLElBQUksZUFBZSxDQUFDO0FBQ3JCO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxDQUFDLEdBQUc7QUFDTixHQUFHLEdBQUcsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUIsR0FBRyxNQUFNLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2xDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDM0IsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMzQixHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsZUFBZSxHQUFHLEVBQUUsSUFBSSxhQUFhLENBQUMsQ0FBQyxPQUFPLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0FBQ3BILEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDbkMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO0FBQ3BELEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxRQUFRLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDcEIsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMvQixHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdkIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUU7QUFDaEIsR0FBRyxJQUFJLEtBQUssaUJBQWlCLENBQUMsSUFBSSxlQUFlLE1BQU0sZUFBZSxHQUFHLEVBQUUsSUFBSSxhQUFhLENBQUMsQ0FBQyxPQUFPLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxFQUFFO0FBQ3RKLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFDeEMsSUFBSTtBQUNKO0FBQ0EsR0FBRyxJQUFJLEtBQUssMkJBQTJCLENBQUMsRUFBRTtBQUMxQyxJQUFJLFlBQVksQ0FBQyxHQUFHLEVBQUUsUUFBUSxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JELElBQUk7QUFDSixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQ2YsR0FBRyxJQUFJLFNBQVMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUIsR0FBRztBQUNILEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBO0FBQ0EsU0FBUyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7QUFDaEMsQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUNULENBQUMsSUFBSSxNQUFNLENBQUM7QUFDWixDQUFDLElBQUksZUFBZSxDQUFDO0FBQ3JCO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxDQUFDLEdBQUc7QUFDTixHQUFHLEdBQUcsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUIsR0FBRyxNQUFNLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2xDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDM0IsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMzQixHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsZUFBZSxHQUFHLEVBQUUsSUFBSSxhQUFhLENBQUMsQ0FBQyxXQUFXLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0FBQ3hILEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDbkMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO0FBQ3BELEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxRQUFRLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDcEIsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMvQixHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdkIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUU7QUFDaEIsR0FBRyxJQUFJLEtBQUssaUJBQWlCLENBQUMsSUFBSSxlQUFlLE1BQU0sZUFBZSxHQUFHLEVBQUUsSUFBSSxhQUFhLENBQUMsQ0FBQyxXQUFXLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxFQUFFO0FBQzFKLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFDeEMsSUFBSTtBQUNKO0FBQ0EsR0FBRyxJQUFJLEtBQUssMkJBQTJCLENBQUMsRUFBRTtBQUMxQyxJQUFJLFlBQVksQ0FBQyxHQUFHLEVBQUUsUUFBUSxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JELElBQUk7QUFDSixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQ2YsR0FBRyxJQUFJLFNBQVMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUIsR0FBRztBQUNILEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBLFNBQVMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO0FBQ2hDLENBQUMsSUFBSSxlQUFlLENBQUM7QUFDckI7QUFDQSxDQUFDLFNBQVMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRTtBQUN4QyxFQUFFLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxpQkFBaUIsQ0FBQztBQUNwRCxFQUFFLE9BQU8sbUJBQW1CLENBQUM7QUFDN0IsRUFBRTtBQUNGO0FBQ0EsQ0FBQyxJQUFJLGtCQUFrQixHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pELENBQUMsSUFBSSxRQUFRLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEM7QUFDQSxDQUFDLE9BQU87QUFDUixFQUFFLENBQUMsR0FBRztBQUNOLEdBQUcsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ2hCLEdBQUcsZUFBZSxHQUFHLEtBQUssRUFBRSxDQUFDO0FBQzdCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3BCLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDOUIsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMzQyxHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDbEIsR0FBRyxJQUFJLGtCQUFrQixNQUFNLGtCQUFrQixHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFO0FBQ3pGLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDM0IsSUFBSSxNQUFNO0FBQ1YsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLElBQUksUUFBUSxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZDO0FBQ0EsSUFBSSxJQUFJLFFBQVEsRUFBRTtBQUNsQixLQUFLLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNsQixLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxlQUFlLENBQUMsQ0FBQztBQUM3RCxLQUFLO0FBQ0wsSUFBSTtBQUNKLEdBQUc7QUFDSCxFQUFFLENBQUMsRUFBRSxJQUFJO0FBQ1QsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNULEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRTtBQUNmLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6QixHQUFHLElBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUMxQyxHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsU0FBUyxVQUFVLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUU7QUFDbkQsQ0FBQyxJQUFJLEVBQUUsU0FBUyxHQUFHLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNsQyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDNUIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQzVCO0FBQ0EsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLE9BQU8sSUFBSTtBQUMzQixFQUFFLElBQUksV0FBVyxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDN0UsRUFBRSxJQUFJLFVBQVUsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzFFLEVBQUUsSUFBSSxVQUFVLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRSxFQUFFLENBQUM7QUFDSDtBQUNBLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUNEO0FBQ0EsTUFBTSxHQUFHLFNBQVMsZUFBZSxDQUFDO0FBQ2xDLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRTtBQUN0QixFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ1YsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBQ3BFLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqSCxFQUFFO0FBQ0YsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLE1BQU0sMEJBQTBCLEdBQUcsS0FBSyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ2pELE1BQU0sMEJBQTBCLEdBQUcsR0FBRyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDL0QsTUFBTSx3QkFBd0IsR0FBRyxLQUFLLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqRixNQUFNLHdCQUF3QixHQUFHLEdBQUcsS0FBSyxFQUFFLFFBQVEsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEY7QUFDQTtBQUNBLFNBQVMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO0FBQ2hDLENBQUMsSUFBSSxPQUFPLENBQUM7QUFDYixDQUFDLE1BQU0scUJBQXFCLGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUN6RCxDQUFDLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLDBCQUEwQixDQUFDLENBQUM7QUFDOUc7QUFDQSxDQUFDLE9BQU87QUFDUixFQUFFLENBQUMsR0FBRztBQUNOLEdBQUcsSUFBSSxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3RDLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3BCLEdBQUcsSUFBSSxZQUFZLEVBQUU7QUFDckIsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNuQyxJQUFJO0FBQ0o7QUFDQSxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUU7QUFDaEIsR0FBRyxJQUFJLFlBQVksRUFBRTtBQUNyQixJQUFJLElBQUksWUFBWSxDQUFDLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxFQUFFO0FBQ2pELEtBQUssV0FBVyxDQUFDLFlBQVksRUFBRSxxQkFBcUIsRUFBRSxHQUFHLGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSwwQkFBMEIsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO0FBQzlJLEtBQUs7QUFDTCxJQUFJO0FBQ0osR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsSUFBSSxPQUFPLEVBQUUsT0FBTztBQUN2QixHQUFHLGFBQWEsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdEMsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLGNBQWMsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdkMsR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ25CLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDZixHQUFHLElBQUksWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDL0MsR0FBRztBQUNILEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBO0FBQ0EsU0FBUyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7QUFDaEMsQ0FBQyxJQUFJLGtCQUFrQixDQUFDO0FBQ3hCLENBQUMsSUFBSSxPQUFPLENBQUM7QUFDYixDQUFDLElBQUksT0FBTyxDQUFDO0FBQ2I7QUFDQSxDQUFDLElBQUksSUFBSSxHQUFHO0FBQ1osRUFBRSxHQUFHO0FBQ0wsRUFBRSxPQUFPLEVBQUUsSUFBSTtBQUNmLEVBQUUsS0FBSyxFQUFFLElBQUk7QUFDYixFQUFFLFFBQVEsRUFBRSxLQUFLO0FBQ2pCLEVBQUUsT0FBTyxFQUFFLG9CQUFvQjtBQUMvQixFQUFFLElBQUksRUFBRSxpQkFBaUI7QUFDekIsRUFBRSxLQUFLLEVBQUUsa0JBQWtCO0FBQzNCLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDVixFQUFFLE1BQU0sRUFBRSxLQUFLO0FBQ2YsRUFBRSxDQUFDO0FBQ0g7QUFDQSxDQUFDLGNBQWMsQ0FBQyxPQUFPLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDckQ7QUFDQSxDQUFDLE9BQU87QUFDUixFQUFFLENBQUMsR0FBRztBQUNOLEdBQUcsa0JBQWtCLEdBQUcsS0FBSyxFQUFFLENBQUM7QUFDaEMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3BCLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM5QyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0FBQzlDLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztBQUNwRCxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsa0JBQWtCLENBQUM7QUFDcEMsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFO0FBQ3BCLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQztBQUNqQixHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ2xCO0FBQ0EsR0FBRyxJQUFJLEtBQUssZ0JBQWdCLENBQUMsSUFBSSxPQUFPLE1BQU0sT0FBTyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksY0FBYyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU07QUFDdEgsSUFBSSxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDbEMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUNqQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNuQyxJQUFJO0FBQ0osR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsSUFBSSxPQUFPLEVBQUUsT0FBTztBQUN2QixHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0IsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNsQyxJQUFJLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakMsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUIsSUFBSTtBQUNKO0FBQ0EsR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ25CLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDZixHQUFHLElBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQzdDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDM0IsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztBQUNyQixHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFDZixHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQSxTQUFTLGtCQUFrQixDQUFDLEdBQUcsRUFBRTtBQUNqQyxDQUFDLE9BQU87QUFDUixFQUFFLENBQUMsRUFBRSxJQUFJO0FBQ1QsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNULEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDVCxFQUFFLENBQUMsRUFBRSxJQUFJO0FBQ1QsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNULEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDVCxFQUFFLENBQUM7QUFDSCxDQUFDO0FBQ0Q7QUFDQTtBQUNBLFNBQVMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO0FBQ2hDLENBQUMsSUFBSSxPQUFPLENBQUM7QUFDYixDQUFDLE1BQU0scUJBQXFCLGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUN6RCxDQUFDLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLHdCQUF3QixDQUFDLENBQUM7QUFDNUc7QUFDQSxDQUFDLE9BQU87QUFDUixFQUFFLENBQUMsR0FBRztBQUNOLEdBQUcsSUFBSSxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3RDLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3BCLEdBQUcsSUFBSSxZQUFZLEVBQUU7QUFDckIsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNuQyxJQUFJO0FBQ0o7QUFDQSxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUU7QUFDaEIsR0FBRyxJQUFJLFlBQVksRUFBRTtBQUNyQixJQUFJLElBQUksWUFBWSxDQUFDLENBQUMsSUFBSSxLQUFLLHlCQUF5QixDQUFDLEVBQUU7QUFDM0QsS0FBSyxXQUFXLENBQUMsWUFBWSxFQUFFLHFCQUFxQixFQUFFLEdBQUcsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFLHdCQUF3QixDQUFDLENBQUM7QUFDMUksS0FBSztBQUNMLElBQUk7QUFDSixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxJQUFJLE9BQU8sRUFBRSxPQUFPO0FBQ3ZCLEdBQUcsYUFBYSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN0QyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsY0FBYyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN2QyxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDbkIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRTtBQUNmLEdBQUcsSUFBSSxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMvQyxHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQSxTQUFTLG9CQUFvQixDQUFDLEdBQUcsRUFBRTtBQUNuQyxDQUFDLE9BQU87QUFDUixFQUFFLENBQUMsRUFBRSxJQUFJO0FBQ1QsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNULEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDVCxFQUFFLENBQUMsRUFBRSxJQUFJO0FBQ1QsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNULEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDVCxFQUFFLENBQUM7QUFDSCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtBQUNoQyxDQUFDLElBQUksd0JBQXdCLENBQUM7QUFDOUIsQ0FBQyxJQUFJLFFBQVEsQ0FBQztBQUNkLENBQUMsSUFBSSxlQUFlLENBQUM7QUFDckIsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUNiLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLGlCQUFpQixFQUFFLGlCQUFpQixDQUFDLENBQUM7QUFDbEUsQ0FBQyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFDdEI7QUFDQSxDQUFDLFNBQVMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRTtBQUN4QyxFQUFFLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDcEMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNYLEVBQUU7QUFDRjtBQUNBLENBQUMsd0JBQXdCLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkQsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLHdCQUF3QixDQUFDLEdBQUcsaUJBQWlCLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuRztBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsQ0FBQyxHQUFHO0FBQ04sR0FBRyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDaEIsR0FBRyxlQUFlLEdBQUcsS0FBSyxFQUFFLENBQUM7QUFDN0IsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDcEIsR0FBRyxTQUFTLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3pELEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDM0MsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNsQixHQUFHLElBQUksb0JBQW9CLEdBQUcsd0JBQXdCLENBQUM7QUFDdkQsR0FBRyx3QkFBd0IsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyRDtBQUNBLEdBQUcsSUFBSSx3QkFBd0IsS0FBSyxvQkFBb0IsRUFBRTtBQUMxRCxJQUFJLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdEQsSUFBSSxNQUFNO0FBQ1YsSUFBSSxZQUFZLEVBQUUsQ0FBQztBQUNuQjtBQUNBLElBQUksY0FBYyxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTTtBQUNoRSxLQUFLLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUM1QyxLQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0EsSUFBSSxZQUFZLEVBQUUsQ0FBQztBQUNuQixJQUFJLFFBQVEsR0FBRyxTQUFTLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUNuRDtBQUNBLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtBQUNuQixLQUFLLFFBQVEsR0FBRyxTQUFTLENBQUMsd0JBQXdCLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZHLEtBQUssUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ2xCLEtBQUssTUFBTTtBQUNYLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDNUIsS0FBSztBQUNMO0FBQ0EsSUFBSSxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQy9CLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBQzVELElBQUk7QUFDSixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxJQUFJLE9BQU8sRUFBRSxPQUFPO0FBQ3ZCLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzNCLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDNUIsR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ25CLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDZixHQUFHLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNwRCxHQUFHLElBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUMxQyxHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsU0FBUyxVQUFVLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUU7QUFDbkQsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQ2hEO0FBQ0EsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQzVCO0FBQ0EsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLE9BQU8sSUFBSTtBQUMzQixFQUFFLElBQUksVUFBVSxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDMUUsRUFBRSxJQUFJLFNBQVMsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZFLEVBQUUsQ0FBQztBQUNIO0FBQ0EsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBQ0Q7QUFDQSxNQUFNLGdCQUFnQixTQUFTLGVBQWUsQ0FBQztBQUMvQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUU7QUFDdEIsRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUNWLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2pGLEVBQUU7QUFDRixDQUFDO0FBQ0Q7QUFDQSxTQUFTLE9BQU8sR0FBRztBQUNuQixJQUFJLE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdEQsQ0FBQztBQUNELFNBQVMsYUFBYSxDQUFDLENBQUMsRUFBRTtBQUMxQixJQUFJLE9BQU8sT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQzdDLENBQUM7QUFDRCxTQUFTLGFBQWEsQ0FBQyxHQUFHLEtBQUssRUFBRTtBQUNqQyxJQUFJLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUNELFNBQVMsU0FBUyxDQUFDLElBQUksRUFBRTtBQUN6QixJQUFJLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzlELENBQUM7QUFDRCxTQUFTLGNBQWMsQ0FBQyxJQUFJLEVBQUU7QUFDOUIsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxRQUFRLENBQUMsY0FBYyxFQUFFLEdBQUcsS0FBSyxFQUFFO0FBQzVDLElBQUksTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQzVDLElBQUksTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ3JCLElBQUksSUFBSSxJQUFJLENBQUM7QUFDYixJQUFJLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLElBQUksTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQy9DLElBQUksSUFBSSxJQUFJLEdBQUcsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbEUsSUFBSSxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFO0FBQzFDLFFBQVEsSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUM1QixZQUFZLElBQUksR0FBRztBQUNuQixnQkFBZ0IsSUFBSSxFQUFFLEVBQUU7QUFDeEIsZ0JBQWdCLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO0FBQ3BDLGFBQWEsQ0FBQztBQUNkLFlBQVksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3QixTQUFTO0FBQ1QsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3QixRQUFRLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMzQyxLQUFLO0FBQ0wsSUFBSSxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsU0FBUyxTQUFTLEdBQUc7QUFDckIsQ0FBQyxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDOUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLHFCQUFxQixDQUFDO0FBQ2xDLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxveEJBQW94QixDQUFDO0FBQzF5QixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFDRDtBQUNBLFNBQVMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7QUFDMUMsQ0FBQyxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDL0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLENBQUMsT0FBTyxTQUFTLENBQUM7QUFDbEIsQ0FBQztBQUNEO0FBQ0E7QUFDQSxTQUFTLG1CQUFtQixDQUFDLEdBQUcsRUFBRTtBQUNsQyxDQUFDLElBQUksR0FBRyxDQUFDO0FBQ1QsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUNiLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdDLENBQUMsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBQ3BCO0FBQ0EsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDdkQsRUFBRSxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RELEVBQUU7QUFDRjtBQUNBLENBQUMsR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7QUFDckM7QUFDQSxDQUFDLE9BQU87QUFDUixFQUFFLENBQUMsR0FBRztBQUNOLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNyQyxHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUNwQixHQUFHLGVBQWUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3hDLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRTtBQUNoQixHQUFHLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBSyxnQkFBZ0IsR0FBRztBQUNoRCxLQUFLLGlCQUFpQixDQUFDLGlCQUFpQixFQUFFLENBQUMsaUJBQWlCLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRSxLQUFLLEVBQUUsQ0FBQztBQUNSO0FBQ0EsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3pCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLElBQUksT0FBTyxFQUFFLE9BQU87QUFDdkIsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDekMsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMxQyxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDbkIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRTtBQUNmLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3JDLEdBQUc7QUFDSCxFQUFFLENBQUM7QUFDSCxDQUFDO0FBQ0Q7QUFDQTtBQUNBLFNBQVMscUJBQXFCLENBQUMsR0FBRyxFQUFFO0FBQ3BDLENBQUMsSUFBSSxJQUFJLENBQUM7QUFDVixDQUFDLElBQUksUUFBUSxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2pELENBQUMsSUFBSSxFQUFFLENBQUM7QUFDUixDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1IsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUNWLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQztBQUN0QixDQUFDLElBQUksT0FBTyxDQUFDO0FBQ2IsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUNiLENBQUMsSUFBSSxPQUFPLENBQUM7QUFDYixDQUFDLElBQUksVUFBVSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMzQyxDQUFDLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN0QjtBQUNBLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNoRCxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0UsRUFBRTtBQUNGO0FBQ0EsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU07QUFDN0QsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLEVBQUUsQ0FBQyxDQUFDO0FBQ0o7QUFDQSxDQUFDLElBQUksV0FBVyxHQUFHO0FBQ25CLEVBQUU7QUFDRixHQUFHLEtBQUssRUFBRSxnQkFBZ0IsR0FBRyxDQUFDLElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzNFLEdBQUc7QUFDSCxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLElBQUksRUFBRTtBQUMxQyxFQUFFLENBQUM7QUFDSDtBQUNBLENBQUMsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBQ3BCO0FBQ0EsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ2pELEVBQUUsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEQsRUFBRTtBQUNGO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxDQUFDLEdBQUc7QUFDTixHQUFHLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDekIsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZCLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO0FBQ2hCLEdBQUcsSUFBSSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QjtBQUNBLEdBQUcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNuRCxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN2QixJQUFJO0FBQ0o7QUFDQSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLDZCQUE2QixDQUFDLENBQUM7QUFDdEQsR0FBRyxjQUFjLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ25DLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssWUFBWSxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2hHLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNyRyxHQUFHLFlBQVksQ0FBQyxJQUFJLEVBQUUsT0FBTyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDaEYsR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM3QyxHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUNwQixHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2hDLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNwQixHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEIsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3RCO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ25ELElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDakMsSUFBSTtBQUNKO0FBQ0EsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCO0FBQ0EsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFO0FBQ2pCLElBQUksT0FBTyxHQUFHO0FBQ2QsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxZQUFZO0FBQ3ZDLE1BQU0sSUFBSSxXQUFXLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUMvSSxNQUFNLENBQUM7QUFDUCxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLFlBQVk7QUFDN0MsTUFBTSxJQUFJLFdBQVcsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUN2SyxNQUFNLENBQUM7QUFDUCxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLFlBQVk7QUFDN0MsTUFBTSxJQUFJLFdBQVcsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzdKLE1BQU0sQ0FBQztBQUNQLEtBQUssQ0FBQztBQUNOO0FBQ0EsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ25CLElBQUk7QUFDSixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRTtBQUNwQixHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUM7QUFDakIsR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksS0FBSyxZQUFZLENBQUMsS0FBSyxRQUFRLE1BQU0sUUFBUSxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUM5SDtBQUNBLEdBQUcsSUFBSSxLQUFLLGdCQUFnQixHQUFHLEVBQUU7QUFDakMsSUFBSSxVQUFVLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQzFDLElBQUksSUFBSSxDQUFDLENBQUM7QUFDVjtBQUNBLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDL0MsS0FBSyxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlEO0FBQ0EsS0FBSyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUN6QixNQUFNLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLE1BQU0sYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2QyxNQUFNLE1BQU07QUFDWixNQUFNLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN0RCxNQUFNLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN6QixNQUFNLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkMsTUFBTSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNuQyxNQUFNO0FBQ04sS0FBSztBQUNMO0FBQ0EsSUFBSSxZQUFZLEVBQUUsQ0FBQztBQUNuQjtBQUNBLElBQUksS0FBSyxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ2hFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1osS0FBSztBQUNMO0FBQ0EsSUFBSSxZQUFZLEVBQUUsQ0FBQztBQUNuQixJQUFJO0FBQ0o7QUFDQSxHQUFHLGNBQWMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxHQUFHLGlCQUFpQixDQUFDLFdBQVcsRUFBRTtBQUNuRSxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksS0FBSyxnQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixNQUFNLGdCQUFnQixHQUFHLENBQUMsSUFBSSxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFO0FBQ3JLLElBQUksS0FBSyxnQkFBZ0IsR0FBRyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUM7QUFDMUUsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNQO0FBQ0EsR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLFFBQVEsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxZQUFZLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDaEcsR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3JHLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxPQUFPLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNoRixHQUFHLFlBQVksQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdDLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLElBQUksT0FBTyxFQUFFLE9BQU87QUFDdkI7QUFDQSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbEQsSUFBSSxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEMsSUFBSTtBQUNKO0FBQ0EsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdDO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ25ELElBQUksY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLElBQUk7QUFDSjtBQUNBLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNuQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQ2YsR0FBRyxJQUFJLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0IsR0FBRyxZQUFZLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3hDLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNuQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNwQixHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsU0FBUyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7QUFDaEMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNSLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQztBQUN0QixDQUFDLElBQUksT0FBTyxDQUFDO0FBQ2I7QUFDQSxDQUFDLGdCQUFnQixHQUFHLElBQUksZ0JBQWdCLENBQUM7QUFDekMsR0FBRyxLQUFLLEVBQUU7QUFDVixJQUFJLFFBQVEsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLElBQUksT0FBTyxFQUFFO0FBQ2IsS0FBSyxPQUFPLEVBQUU7QUFDZCxNQUFNLHFCQUFxQjtBQUMzQixNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQztBQUN6QyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxRQUFRLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDMUMsTUFBTTtBQUNOLEtBQUs7QUFDTCxJQUFJLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRTtBQUNwQixJQUFJO0FBQ0osR0FBRyxDQUFDLENBQUM7QUFDTDtBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsQ0FBQyxHQUFHO0FBQ04sR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RCLEdBQUcsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2xELEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3BCLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDOUIsR0FBRyxlQUFlLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQy9DLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDbEIsR0FBRyxNQUFNLHdCQUF3QixHQUFHLEVBQUUsQ0FBQztBQUN2QyxHQUFHLElBQUksS0FBSyxnQkFBZ0IsR0FBRyxFQUFFLHdCQUF3QixDQUFDLFFBQVEsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RjtBQUNBLEdBQUcsSUFBSSxLQUFLLG1HQUFtRyxLQUFLLEVBQUU7QUFDdEgsSUFBSSx3QkFBd0IsQ0FBQyxPQUFPLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDdEQsSUFBSTtBQUNKO0FBQ0EsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUNuRCxHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxJQUFJLE9BQU8sRUFBRSxPQUFPO0FBQ3ZCLEdBQUcsYUFBYSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdEQsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3ZELEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNuQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQ2YsR0FBRyxJQUFJLFNBQVMsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDN0IsR0FBRyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3ZDLEdBQUc7QUFDSCxFQUFFLENBQUM7QUFDSCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRTtBQUNuRDtBQUNBO0FBQ0EsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQ3hCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUM1QixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDM0IsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQzNCLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNqQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDekIsQ0FBQyxJQUFJLEVBQUUsY0FBYyxHQUFHLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUN6QyxDQUFDLElBQUksRUFBRSxVQUFVLEdBQUcsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQ3JDLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUQsQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsSUFBSSxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3pELENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVFO0FBQ0EsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLE9BQU8sSUFBSTtBQUMzQixFQUFFLElBQUksTUFBTSxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUQsRUFBRSxJQUFJLFVBQVUsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzFFLEVBQUUsSUFBSSxTQUFTLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2RSxFQUFFLElBQUksU0FBUyxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkUsRUFBRSxJQUFJLGVBQWUsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ3pGLEVBQUUsSUFBSSxPQUFPLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNqRSxFQUFFLElBQUksZ0JBQWdCLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsY0FBYyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUM1RixFQUFFLElBQUksWUFBWSxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDaEYsRUFBRSxDQUFDO0FBQ0g7QUFDQSxDQUFDLE9BQU87QUFDUixFQUFFLElBQUk7QUFDTixFQUFFLE9BQU87QUFDVCxFQUFFLE9BQU87QUFDVCxFQUFFLGFBQWE7QUFDZixFQUFFLEtBQUs7QUFDUCxFQUFFLGNBQWM7QUFDaEIsRUFBRSxVQUFVO0FBQ1osRUFBRSxRQUFRO0FBQ1YsRUFBRSxhQUFhO0FBQ2YsRUFBRSxtQkFBbUI7QUFDckIsRUFBRSxtQkFBbUI7QUFDckIsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsTUFBTSxHQUFHLFNBQVMsZUFBZSxDQUFDO0FBQ2xDLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRTtBQUN0QixFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ1YsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBQ25FO0FBQ0EsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFO0FBQ2hFLEdBQUcsSUFBSSxFQUFFLENBQUM7QUFDVixHQUFHLFFBQVEsRUFBRSxDQUFDO0FBQ2QsR0FBRyxPQUFPLEVBQUUsQ0FBQztBQUNiLEdBQUcsT0FBTyxFQUFFLENBQUM7QUFDYixHQUFHLGFBQWEsRUFBRSxDQUFDO0FBQ25CLEdBQUcsS0FBSyxFQUFFLENBQUM7QUFDWCxHQUFHLGNBQWMsRUFBRSxDQUFDO0FBQ3BCLEdBQUcsVUFBVSxFQUFFLENBQUM7QUFDaEIsR0FBRyxDQUFDLENBQUM7QUFDTCxFQUFFO0FBQ0YsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLFNBQVMsU0FBUyxHQUFHO0FBQ3JCLENBQUMsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlCLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxzQkFBc0IsQ0FBQztBQUNuQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcseVVBQXlVLENBQUM7QUFDL1YsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBQ0Q7QUFDQSxTQUFTLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtBQUNoQyxDQUFDLElBQUksR0FBRyxDQUFDO0FBQ1QsQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUNULENBQUMsSUFBSSxJQUFJLENBQUM7QUFDVixDQUFDLElBQUksT0FBTyxDQUFDO0FBQ2IsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUNiO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxDQUFDLEdBQUc7QUFDTixHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEIsR0FBRyxHQUFHLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVCLEdBQUcsSUFBSSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM5QixHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQ3RDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsZ1BBQWdQLENBQUMsQ0FBQztBQUNyUSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ25DLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDNUIsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO0FBQ3BELEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDdkMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3hDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztBQUM5QyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsWUFBWSxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9DLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxXQUFXLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkQsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLE9BQU8sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxPQUFPLENBQUMsQ0FBQztBQUNoRSxHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUNwQixHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQy9CLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNwQixHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDckI7QUFDQSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7QUFDakIsSUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsWUFBWTtBQUMvQyxLQUFLLElBQUksV0FBVyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3BGLEtBQUssQ0FBQyxDQUFDO0FBQ1A7QUFDQSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbkIsSUFBSTtBQUNKLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUN0QixHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUM7QUFDakI7QUFDQSxHQUFHLElBQUksS0FBSyxlQUFlLENBQUMsRUFBRTtBQUM5QixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsWUFBWSxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hELElBQUk7QUFDSjtBQUNBLEdBQUcsSUFBSSxLQUFLLGlCQUFpQixDQUFDLEVBQUU7QUFDaEMsSUFBSSxZQUFZLENBQUMsR0FBRyxFQUFFLE9BQU8sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxPQUFPLENBQUMsQ0FBQztBQUNqRSxJQUFJO0FBQ0osR0FBRztBQUNILEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDVCxFQUFFLENBQUMsRUFBRSxJQUFJO0FBQ1QsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQ2YsR0FBRyxJQUFJLFNBQVMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUIsR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ25CLEdBQUcsT0FBTyxFQUFFLENBQUM7QUFDYixHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsU0FBUyxVQUFVLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUU7QUFDbkQsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQzNCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUMzQixDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDN0I7QUFDQTtBQUNBLENBQUMsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7QUFDcEM7QUFDQSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsT0FBTyxJQUFJO0FBQzNCLEVBQUUsSUFBSSxTQUFTLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2RSxFQUFFLElBQUksU0FBUyxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkUsRUFBRSxJQUFJLFdBQVcsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdFLEVBQUUsQ0FBQztBQUNIO0FBQ0EsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUNEO0FBQ0EsTUFBTSxLQUFLLFNBQVMsZUFBZSxDQUFDO0FBQ3BDLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRTtBQUN0QixFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ1YsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBQ3BFLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMvRyxFQUFFO0FBQ0YsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLFNBQVMsU0FBUyxHQUFHO0FBQ3JCLENBQUMsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlCLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxzQkFBc0IsQ0FBQztBQUNuQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsdTBCQUF1MEIsQ0FBQztBQUM3MUIsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBQ0Q7QUFDQSxTQUFTLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtBQUNoQyxDQUFDLElBQUksSUFBSSxDQUFDO0FBQ1YsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNSLENBQUMsSUFBSSxLQUFLLENBQUM7QUFDWCxDQUFDLElBQUksUUFBUSxzQkFBc0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDN0QsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNSLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDUixDQUFDLElBQUksS0FBSyxDQUFDO0FBQ1gsQ0FBQyxJQUFJLFFBQVEsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzlELENBQUMsSUFBSSxFQUFFLENBQUM7QUFDUixDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1IsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUNWLENBQUMsSUFBSSxNQUFNLENBQUM7QUFDWixDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1IsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUNWLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDUixDQUFDLElBQUksTUFBTSxDQUFDO0FBQ1osQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUNiLENBQUMsSUFBSSxPQUFPLENBQUM7QUFDYixDQUFDLElBQUksT0FBTyxDQUFDO0FBQ2I7QUFDQSxDQUFDLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQztBQUNwQixHQUFHLEtBQUssRUFBRTtBQUNWLElBQUksU0FBUyxFQUFFLE1BQU07QUFDckIsSUFBSSxPQUFPLDhCQUE4QixHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQy9DLElBQUksT0FBTyxFQUFFLGdCQUFnQjtBQUM3QixJQUFJO0FBQ0osR0FBRyxDQUFDLENBQUM7QUFDTDtBQUNBLENBQUMsTUFBTSxHQUFHLElBQUksS0FBSyxDQUFDO0FBQ3BCLEdBQUcsS0FBSyxFQUFFO0FBQ1YsSUFBSSxTQUFTLEVBQUUsT0FBTztBQUN0QixJQUFJLE9BQU8sOEJBQThCLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDL0MsSUFBSSxPQUFPLEVBQUUsWUFBWTtBQUN6QixJQUFJO0FBQ0osR0FBRyxDQUFDLENBQUM7QUFDTDtBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsQ0FBQyxHQUFHO0FBQ04sR0FBRyxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QixHQUFHLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDM0IsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZCLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO0FBQ2hCLEdBQUcsS0FBSyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMzQixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDdkIsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7QUFDaEIsR0FBRyxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN4QyxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztBQUNoQixHQUFHLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDekIsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEQsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7QUFDaEIsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3hDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztBQUNoRCxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixDQUFDLENBQUM7QUFDL0MsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0FBQzdDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsNkJBQTZCLENBQUMsQ0FBQztBQUN0RCxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLDBCQUEwQixDQUFDLENBQUM7QUFDbkQsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0FBQzdDLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxXQUFXLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEQsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDcEIsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNoQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEIsR0FBRyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3JCLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNyQixHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDbEIsR0FBRyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3JCLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNyQixHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEIsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3RCLEdBQUcsZUFBZSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdkMsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3BCLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0QixHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEIsR0FBRyxlQUFlLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN2QyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEI7QUFDQSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7QUFDakIsSUFBSSxPQUFPLEdBQUc7QUFDZCxLQUFLLE1BQU0sQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLFlBQVk7QUFDckMsTUFBTSxJQUFJLFdBQVcseUJBQXlCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQywwQkFBMEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDN0csTUFBTSxDQUFDO0FBQ1AsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxZQUFZO0FBQ3ZDLE1BQU0sSUFBSSxXQUFXLHlCQUF5QixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsMEJBQTBCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzdHLE1BQU0sQ0FBQztBQUNQLEtBQUssQ0FBQztBQUNOO0FBQ0EsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ25CLElBQUk7QUFDSixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDdEIsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDO0FBQ2pCLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssc0JBQXNCLENBQUMsS0FBSyxRQUFRLE1BQU0sUUFBUSxzQkFBc0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3BKLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssc0JBQXNCLENBQUMsS0FBSyxRQUFRLE1BQU0sUUFBUSxzQkFBc0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3JKLEdBQUcsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO0FBQzdCLEdBQUcsSUFBSSxLQUFLLCtCQUErQixDQUFDLEVBQUUsY0FBYyxDQUFDLE9BQU8sK0JBQStCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDL0IsR0FBRyxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7QUFDN0IsR0FBRyxJQUFJLEtBQUssK0JBQStCLENBQUMsRUFBRSxjQUFjLENBQUMsT0FBTywrQkFBK0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUMvQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxJQUFJLE9BQU8sRUFBRSxPQUFPO0FBQ3ZCLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzVDLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzVDLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDN0MsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDN0MsR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ25CLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDZixHQUFHLElBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQixHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzdCLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDN0IsR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ25CLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3BCLEdBQUc7QUFDSCxFQUFFLENBQUM7QUFDSCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRTtBQUNuRDtBQUNBLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNsQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDekIsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDdkMsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDM0MsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDM0M7QUFDQTtBQUNBLENBQUMsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1RDtBQUNBO0FBQ0EsQ0FBQyxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztBQUNwQztBQUNBLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxPQUFPLElBQUk7QUFDM0IsRUFBRSxJQUFJLGdCQUFnQixJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLGNBQWMsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDNUYsRUFBRSxJQUFJLE9BQU8sSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pFLEVBQUUsSUFBSSxxQkFBcUIsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUMzRyxFQUFFLElBQUkseUJBQXlCLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsdUJBQXVCLEdBQUcsT0FBTyxDQUFDLHVCQUF1QixDQUFDLENBQUM7QUFDdkgsRUFBRSxJQUFJLHlCQUF5QixJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLHVCQUF1QixHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBQ3ZILEVBQUUsQ0FBQztBQUNIO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxjQUFjO0FBQ2hCLEVBQUUsbUJBQW1CO0FBQ3JCLEVBQUUsdUJBQXVCO0FBQ3pCLEVBQUUsdUJBQXVCO0FBQ3pCLEVBQUUsZUFBZTtBQUNqQixFQUFFLFFBQVE7QUFDVixFQUFFLEtBQUs7QUFDUCxFQUFFLENBQUM7QUFDSCxDQUFDO0FBQ0Q7QUFDQSxNQUFNLEdBQUcsU0FBUyxlQUFlLENBQUM7QUFDbEMsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFO0FBQ3RCLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDVixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUM7QUFDcEU7QUFDQSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUU7QUFDckUsR0FBRyxjQUFjLEVBQUUsQ0FBQztBQUNwQixHQUFHLEtBQUssRUFBRSxDQUFDO0FBQ1gsR0FBRyxtQkFBbUIsRUFBRSxDQUFDO0FBQ3pCLEdBQUcsdUJBQXVCLEVBQUUsQ0FBQztBQUM3QixHQUFHLHVCQUF1QixFQUFFLENBQUM7QUFDN0IsR0FBRyxDQUFDLENBQUM7QUFDTCxFQUFFO0FBQ0YsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLFNBQVMsU0FBUyxHQUFHO0FBQ3JCLENBQUMsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlCLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxxQkFBcUIsQ0FBQztBQUNsQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsZ3RCQUFndEIsQ0FBQztBQUN0dUIsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBQ0Q7QUFDQSxTQUFTLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO0FBQzFDLENBQUMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQy9CLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QixDQUFDLE9BQU8sU0FBUyxDQUFDO0FBQ2xCLENBQUM7QUFDRDtBQUNBO0FBQ0EsU0FBUyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUU7QUFDbEMsQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUNULENBQUMsSUFBSSxPQUFPLENBQUM7QUFDYixDQUFDLE1BQU0saUJBQWlCLEdBQUcsU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3QyxDQUFDLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUNwQjtBQUNBLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ3ZELEVBQUUsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RCxFQUFFO0FBQ0Y7QUFDQSxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBQ3JDO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxDQUFDLEdBQUc7QUFDTixHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDckMsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDcEIsR0FBRyxlQUFlLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN4QyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUU7QUFDaEIsR0FBRyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQUssZ0JBQWdCLEVBQUU7QUFDL0MsS0FBSyxpQkFBaUIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLGlCQUFpQixTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0UsS0FBSyxFQUFFLENBQUM7QUFDUjtBQUNBLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN6QixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxJQUFJLE9BQU8sRUFBRSxPQUFPO0FBQ3ZCLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUMsR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ25CLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDZixHQUFHLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNyQyxHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQSxTQUFTLG1CQUFtQixDQUFDLEdBQUcsRUFBRTtBQUNsQyxDQUFDLElBQUksSUFBSSxDQUFDO0FBQ1YsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNSLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDUixDQUFDLElBQUksSUFBSSxDQUFDO0FBQ1YsQ0FBQyxJQUFJLGdCQUFnQixDQUFDO0FBQ3RCLENBQUMsSUFBSSxPQUFPLENBQUM7QUFDYixDQUFDLElBQUksT0FBTyxDQUFDO0FBQ2IsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUNiLENBQUMsSUFBSSxVQUFVLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQzNDLENBQUMsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBQ3RCO0FBQ0EsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ2hELEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRSxFQUFFO0FBQ0Y7QUFDQSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTTtBQUM3RCxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDeEIsRUFBRSxDQUFDLENBQUM7QUFDSjtBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsQ0FBQyxHQUFHO0FBQ04sR0FBRyxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLEdBQUcsRUFBRSxHQUFHLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQyxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztBQUNoQixHQUFHLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDekI7QUFDQSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbkQsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDdkIsSUFBSTtBQUNKO0FBQ0EsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO0FBQ3RELEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEdBQUcsRUFBRSxJQUFJLGFBQWEsQ0FBQyxDQUFDLFNBQVMsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7QUFDeEksR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLFFBQVEsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxZQUFZLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDcEcsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDcEIsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNoQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEIsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3BCLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0QjtBQUNBLEdBQUcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNuRCxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2pDLElBQUk7QUFDSjtBQUNBLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQjtBQUNBLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUNqQixJQUFJLE9BQU8sR0FBRztBQUNkLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWTtBQUN2QyxNQUFNLElBQUksV0FBVyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDL0ksTUFBTSxDQUFDO0FBQ1AsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxZQUFZO0FBQzdDLE1BQU0sSUFBSSxXQUFXLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxtQkFBbUIsR0FBRyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDdkssTUFBTSxDQUFDO0FBQ1AsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxZQUFZO0FBQzdDLE1BQU0sSUFBSSxXQUFXLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUM3SixNQUFNLENBQUM7QUFDUCxLQUFLLENBQUM7QUFDTjtBQUNBLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztBQUNuQixJQUFJO0FBQ0osR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUU7QUFDcEIsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDO0FBQ2pCLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLGVBQWUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0U7QUFDQSxHQUFHLElBQUksS0FBSyxnQkFBZ0IsRUFBRSxFQUFFO0FBQ2hDLElBQUksVUFBVSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMxQyxJQUFJLElBQUksQ0FBQyxDQUFDO0FBQ1Y7QUFDQSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQy9DLEtBQUssTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5RDtBQUNBLEtBQUssSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDekIsTUFBTSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN6QyxNQUFNLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkMsTUFBTSxNQUFNO0FBQ1osTUFBTSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDdEQsTUFBTSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDekIsTUFBTSxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLE1BQU0sV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkMsTUFBTTtBQUNOLEtBQUs7QUFDTDtBQUNBLElBQUksWUFBWSxFQUFFLENBQUM7QUFDbkI7QUFDQSxJQUFJLEtBQUssQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNoRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNaLEtBQUs7QUFDTDtBQUNBLElBQUksWUFBWSxFQUFFLENBQUM7QUFDbkIsSUFBSTtBQUNKO0FBQ0EsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLEtBQUssZ0JBQWdCLEVBQUUsSUFBSSxnQkFBZ0IsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLElBQUksYUFBYSxDQUFDLENBQUMsU0FBUyxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLENBQUMsRUFBRTtBQUN0TCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFDMUMsSUFBSTtBQUNKO0FBQ0EsR0FBRyxJQUFJLEtBQUssOENBQThDLEVBQUUsRUFBRTtBQUM5RCxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsUUFBUSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLFlBQVksVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNyRyxJQUFJO0FBQ0osR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsSUFBSSxPQUFPLEVBQUUsT0FBTztBQUN2QjtBQUNBLEdBQUcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNsRCxJQUFJLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQyxJQUFJO0FBQ0o7QUFDQSxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsV0FBVyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDN0M7QUFDQSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbkQsSUFBSSxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkMsSUFBSTtBQUNKO0FBQ0EsR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ25CLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDZixHQUFHLElBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQixHQUFHLFlBQVksQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDeEMsR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ25CLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3BCLEdBQUc7QUFDSCxFQUFFLENBQUM7QUFDSCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtBQUNoQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1IsQ0FBQyxJQUFJLGdCQUFnQixDQUFDO0FBQ3RCLENBQUMsSUFBSSxPQUFPLENBQUM7QUFDYjtBQUNBLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQztBQUN6QyxHQUFHLEtBQUssRUFBRTtBQUNWLElBQUksUUFBUSxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakMsSUFBSSxPQUFPLEVBQUU7QUFDYixLQUFLLE9BQU8sRUFBRTtBQUNkLE1BQU0sbUJBQW1CO0FBQ3pCLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDO0FBQ3pDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLFFBQVEsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUN6QyxNQUFNO0FBQ04sS0FBSztBQUNMLElBQUksT0FBTyxFQUFFLEVBQUUsR0FBRyxFQUFFO0FBQ3BCLElBQUk7QUFDSixHQUFHLENBQUMsQ0FBQztBQUNMO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxDQUFDLEdBQUc7QUFDTixHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEIsR0FBRyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbEQsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQztBQUN0QyxHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUNwQixHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzlCLEdBQUcsZUFBZSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMvQyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ2xCLEdBQUcsTUFBTSx3QkFBd0IsR0FBRyxFQUFFLENBQUM7QUFDdkMsR0FBRyxJQUFJLEtBQUssZ0JBQWdCLEVBQUUsRUFBRSx3QkFBd0IsQ0FBQyxRQUFRLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEY7QUFDQSxHQUFHLElBQUksS0FBSyxrR0FBa0csS0FBSyxFQUFFO0FBQ3JILElBQUksd0JBQXdCLENBQUMsT0FBTyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ3RELElBQUk7QUFDSjtBQUNBLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFDbkQsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsSUFBSSxPQUFPLEVBQUUsT0FBTztBQUN2QixHQUFHLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3RELEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN2RCxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDbkIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRTtBQUNmLEdBQUcsSUFBSSxTQUFTLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdCLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUN2QyxHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsU0FBUyxVQUFVLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUU7QUFDbkQ7QUFDQTtBQUNBLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUMzQixDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDeEIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQzVCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUMzQixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDM0IsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQ2pDLENBQUMsSUFBSSxFQUFFLFVBQVUsR0FBRyxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDckMsQ0FBQyxJQUFJLFdBQVcsQ0FBQztBQUNqQixDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25FLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1RCxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRjtBQUNBLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxPQUFPLElBQUk7QUFDM0IsRUFBRSxJQUFJLFNBQVMsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZFLEVBQUUsSUFBSSxNQUFNLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5RCxFQUFFLElBQUksVUFBVSxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDMUUsRUFBRSxJQUFJLFNBQVMsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZFLEVBQUUsSUFBSSxTQUFTLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2RSxFQUFFLElBQUksZUFBZSxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDekYsRUFBRSxJQUFJLFlBQVksSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ2hGLEVBQUUsQ0FBQztBQUNIO0FBQ0EsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxNQUFNO0FBQzFCLEVBQUUsSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssWUFBWSxDQUFDLEVBQUU7QUFDcEMsR0FBRyxZQUFZLENBQUMsQ0FBQyxFQUFFLFdBQVcsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN2RCxHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0g7QUFDQSxDQUFDLE9BQU87QUFDUixFQUFFLE9BQU87QUFDVCxFQUFFLElBQUk7QUFDTixFQUFFLE9BQU87QUFDVCxFQUFFLE9BQU87QUFDVCxFQUFFLGFBQWE7QUFDZixFQUFFLFVBQVU7QUFDWixFQUFFLFFBQVE7QUFDVixFQUFFLFdBQVc7QUFDYixFQUFFLGFBQWE7QUFDZixFQUFFLG1CQUFtQjtBQUNyQixFQUFFLG1CQUFtQjtBQUNyQixFQUFFLENBQUM7QUFDSCxDQUFDO0FBQ0Q7QUFDQSxNQUFNLE9BQU8sU0FBUyxlQUFlLENBQUM7QUFDdEMsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFO0FBQ3RCLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDVixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUM7QUFDbkU7QUFDQSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUU7QUFDaEUsR0FBRyxPQUFPLEVBQUUsQ0FBQztBQUNiLEdBQUcsSUFBSSxFQUFFLENBQUM7QUFDVixHQUFHLFFBQVEsRUFBRSxDQUFDO0FBQ2QsR0FBRyxPQUFPLEVBQUUsQ0FBQztBQUNiLEdBQUcsT0FBTyxFQUFFLENBQUM7QUFDYixHQUFHLGFBQWEsRUFBRSxDQUFDO0FBQ25CLEdBQUcsVUFBVSxFQUFFLENBQUM7QUFDaEIsR0FBRyxDQUFDLENBQUM7QUFDTCxFQUFFO0FBQ0YsQ0FBQztBQUNEO0FBQ0EsZUFBZSxlQUFlLENBQUMsZ0JBQWdCLEVBQUU7QUFDakQsSUFBSSxNQUFNLElBQUksR0FBRztBQUNqQixRQUFRLElBQUksRUFBRSxFQUFFO0FBQ2hCLFFBQVEsT0FBTyxFQUFFLEVBQUU7QUFDbkIsUUFBUSxjQUFjLEVBQUUsRUFBRTtBQUMxQixLQUFLLENBQUM7QUFDTixJQUFJLE1BQU0sS0FBSyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3RELElBQUksT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksTUFBTTtBQUN4QyxRQUFRLE9BQU8sRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7QUFDMUQsUUFBUSxjQUFjLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7QUFDOUUsUUFBUSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ2pELEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2QsQ0FBQztBQUNELFNBQVMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRTtBQUNuRCxJQUFJLE9BQU8sZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRixDQUFDO0FBQ0QsU0FBUyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFFO0FBQ3BELElBQUksT0FBTyxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BGLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxTQUFTLE9BQU8sR0FBRztBQUNuQixDQUFDLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5QixDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcscUJBQXFCLENBQUM7QUFDbEMsQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLDQzQkFBNDNCLENBQUM7QUFDbDVCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUNEO0FBQ0EsU0FBUyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtBQUN4QyxDQUFDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMvQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekIsQ0FBQyxPQUFPLFNBQVMsQ0FBQztBQUNsQixDQUFDO0FBQ0Q7QUFDQSxTQUFTLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO0FBQzFDLENBQUMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQy9CLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QixDQUFDLE9BQU8sU0FBUyxDQUFDO0FBQ2xCLENBQUM7QUFDRDtBQUNBLFNBQVMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7QUFDMUMsQ0FBQyxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDL0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLENBQUMsT0FBTyxTQUFTLENBQUM7QUFDbEIsQ0FBQztBQUNEO0FBQ0EsU0FBUyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtBQUMxQyxDQUFDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMvQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekIsQ0FBQyxPQUFPLFNBQVMsQ0FBQztBQUNsQixDQUFDO0FBQ0Q7QUFDQTtBQUNBLFNBQVMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO0FBQ2hDLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDVDtBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsQ0FBQyxHQUFHO0FBQ04sR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3BCLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0IsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRTtBQUNmLEdBQUcsSUFBSSxTQUFTLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLEdBQUc7QUFDSCxFQUFFLENBQUM7QUFDSCxDQUFDO0FBQ0Q7QUFDQTtBQUNBLFNBQVMsbUJBQW1CLENBQUMsR0FBRyxFQUFFO0FBQ2xDLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDVDtBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsQ0FBQyxHQUFHO0FBQ04sR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFDdkMsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3RCxHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUNwQixHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQy9CLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ2hCLEdBQUcsSUFBSSxLQUFLLHdCQUF3QixLQUFLLEVBQUU7QUFDM0MsSUFBSSxZQUFZLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5RCxJQUFJO0FBQ0osR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRTtBQUNmLEdBQUcsSUFBSSxTQUFTLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLEdBQUc7QUFDSCxFQUFFLENBQUM7QUFDSCxDQUFDO0FBQ0Q7QUFDQTtBQUNBLFNBQVMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO0FBQ2hDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDUjtBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsQ0FBQyxHQUFHO0FBQ04sR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RCLEdBQUcsRUFBRSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7QUFDeEIsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQztBQUN0QyxHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUNwQixHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzlCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDZixHQUFHLElBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3QixHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQSxTQUFTLG1CQUFtQixDQUFDLEdBQUcsRUFBRTtBQUNsQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1IsQ0FBQyxJQUFJLE9BQU8saUJBQWlCLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDMUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNQO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxDQUFDLEdBQUc7QUFDTixHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEIsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3JCLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFDdEMsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDcEIsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM5QixHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDakIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUU7QUFDaEIsR0FBRyxJQUFJLEtBQUssa0JBQWtCLEtBQUssSUFBSSxPQUFPLE1BQU0sT0FBTyxpQkFBaUIsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDaEgsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRTtBQUNmLEdBQUcsSUFBSSxTQUFTLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdCLEdBQUc7QUFDSCxFQUFFLENBQUM7QUFDSCxDQUFDO0FBQ0Q7QUFDQTtBQUNBLFNBQVMsZUFBZSxDQUFDLEdBQUcsRUFBRTtBQUM5QixDQUFDLElBQUksT0FBTyxDQUFDO0FBQ2IsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUNiO0FBQ0EsQ0FBQyxNQUFNLHFCQUFxQixHQUFHO0FBQy9CLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQztBQUNsQixFQUFFO0FBQ0YsR0FBRyxRQUFRLEVBQUUsaUJBQWlCLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQy9GLEdBQUc7QUFDSCxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ3JDLEVBQUU7QUFDRixHQUFHLGFBQWEsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUMsR0FBRztBQUNILEVBQUUsRUFBRSxPQUFPLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDckMsRUFBRSxFQUFFLFVBQVUsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUN2QyxFQUFFLENBQUM7QUFDSDtBQUNBLENBQUMsSUFBSSxhQUFhLEdBQUcsRUFBRSxDQUFDO0FBQ3hCO0FBQ0EsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcscUJBQXFCLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDM0QsRUFBRSxhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLEVBQUU7QUFDRjtBQUNBLENBQUMsT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7QUFDakQ7QUFDQSxDQUFDLE9BQU87QUFDUixFQUFFLENBQUMsR0FBRztBQUNOLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN6QyxHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUNwQixHQUFHLGVBQWUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzVDLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRTtBQUNoQixHQUFHLE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBSyx5R0FBeUcsS0FBSztBQUMvSSxLQUFLLGlCQUFpQixDQUFDLHFCQUFxQixFQUFFO0FBQzlDLEtBQUssS0FBSyxhQUFhLEtBQUssSUFBSSxpQkFBaUIsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbkUsS0FBSyxLQUFLLGdEQUFnRCxLQUFLLElBQUk7QUFDbkUsTUFBTSxRQUFRLEVBQUUsaUJBQWlCLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xHLE1BQU07QUFDTixLQUFLLEtBQUssbUJBQW1CLEdBQUcsSUFBSSxFQUFFLE9BQU8sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUN2RSxLQUFLLEtBQUsseUJBQXlCLEVBQUUsSUFBSTtBQUN6QyxNQUFNLGFBQWEsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakQsTUFBTTtBQUNOLEtBQUssS0FBSyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ3JFLEtBQUssS0FBSyxrQkFBa0IsR0FBRyxJQUFJLEVBQUUsVUFBVSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ3hFLEtBQUssQ0FBQztBQUNOLEtBQUssRUFBRSxDQUFDO0FBQ1I7QUFDQSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDakMsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsSUFBSSxPQUFPLEVBQUUsT0FBTztBQUN2QixHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM3QyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzlDLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNuQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQ2YsR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDekMsR0FBRztBQUNILEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBO0FBQ0EsU0FBUyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFO0FBQ3pDLENBQUMsSUFBSSxLQUFLLENBQUM7QUFDWCxDQUFDLElBQUksR0FBRyxDQUFDO0FBQ1QsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUNiO0FBQ0EsQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUM7QUFDZixHQUFHLEtBQUssRUFBRTtBQUNWLElBQUksSUFBSSxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDekIsSUFBSSxLQUFLLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQztBQUM1QixJQUFJLGNBQWMscUJBQXFCLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDN0MsSUFBSSxPQUFPLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLElBQUksYUFBYSx1QkFBdUIsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5QyxJQUFJLE9BQU8saUJBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbEMsSUFBSSxRQUFRLEVBQUUsZ0JBQWdCLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsWUFBWSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdEYsSUFBSSxVQUFVLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLElBQUk7QUFDSixHQUFHLENBQUMsQ0FBQztBQUNMO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxHQUFHLEVBQUUsS0FBSztBQUNaLEVBQUUsS0FBSyxFQUFFLElBQUk7QUFDYixFQUFFLENBQUMsR0FBRztBQUNOLEdBQUcsS0FBSyxHQUFHLEtBQUssRUFBRSxDQUFDO0FBQ25CLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNyQyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ3RCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3BCLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDakMsR0FBRyxlQUFlLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN4QyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUU7QUFDcEIsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDO0FBQ2pCLEdBQUcsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBQzFCLEdBQUcsSUFBSSxLQUFLLGFBQWEsS0FBSyxFQUFFLFdBQVcsQ0FBQyxJQUFJLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ25FLEdBQUcsSUFBSSxLQUFLLGFBQWEsSUFBSSxFQUFFLFdBQVcsQ0FBQyxLQUFLLGFBQWEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3JFLEdBQUcsSUFBSSxLQUFLLHNCQUFzQixDQUFDLEVBQUUsV0FBVyxDQUFDLGNBQWMsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1RixHQUFHLElBQUksS0FBSyxrQkFBa0IsRUFBRSxFQUFFLFdBQVcsQ0FBQyxPQUFPLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUUsR0FBRyxJQUFJLEtBQUssd0JBQXdCLEVBQUUsRUFBRSxXQUFXLENBQUMsYUFBYSx3QkFBd0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hHLEdBQUcsSUFBSSxLQUFLLGtCQUFrQixDQUFDLEVBQUUsV0FBVyxDQUFDLE9BQU8sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3RSxHQUFHLElBQUksS0FBSyw2QkFBNkIsS0FBSyxFQUFFLFdBQVcsQ0FBQyxRQUFRLEdBQUcsZ0JBQWdCLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsWUFBWSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoSixHQUFHLElBQUksS0FBSyxrQkFBa0IsR0FBRyxFQUFFLFdBQVcsQ0FBQyxVQUFVLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEYsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3pCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLElBQUksT0FBTyxFQUFFLE9BQU87QUFDdkIsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDekMsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMxQyxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDbkIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRTtBQUNmLEdBQUcsSUFBSSxTQUFTLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hDLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3JDLEdBQUc7QUFDSCxFQUFFLENBQUM7QUFDSCxDQUFDO0FBQ0Q7QUFDQTtBQUNBLFNBQVMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUN2QyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNSLENBQUMsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLENBQUMsSUFBSSxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUMvQixDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1IsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUNiLENBQUMsSUFBSSxRQUFRLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hFLENBQUMsSUFBSSxZQUFZLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMxQyxDQUFDLE1BQU0sT0FBTyxHQUFHLEdBQUcsWUFBWSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDakQ7QUFDQSxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbEQsRUFBRSxJQUFJLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNELEVBQUUsSUFBSSxHQUFHLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQy9CLEVBQUUsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQy9FLEVBQUU7QUFDRjtBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsR0FBRyxFQUFFLEtBQUs7QUFDWixFQUFFLEtBQUssRUFBRSxJQUFJO0FBQ2IsRUFBRSxDQUFDLEdBQUc7QUFDTixHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEIsR0FBRyxJQUFJLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDOUIsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7QUFDaEI7QUFDQSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbkQsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDdkIsSUFBSTtBQUNKO0FBQ0EsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7QUFDaEIsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztBQUNuQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUNwQixHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzlCLEdBQUcsSUFBSSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdEMsR0FBRyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2xCO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ25ELElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDL0IsSUFBSTtBQUNKO0FBQ0EsR0FBRyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2xCLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRTtBQUNwQixHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUM7QUFDakI7QUFDQSxHQUFHLHFCQUFxQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDaEMsSUFBSSxJQUFJLFFBQVEsRUFBRTtBQUNsQixLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzVCO0FBQ0EsS0FBSyxJQUFJLEtBQUssb0JBQW9CLENBQUMsRUFBRTtBQUNyQyxNQUFNLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDakMsTUFBTTtBQUNOLEtBQUssTUFBTTtBQUNYLEtBQUssUUFBUSxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNsQixLQUFLLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN4QixLQUFLO0FBQ0wsSUFBSSxNQUFNLElBQUksUUFBUSxFQUFFO0FBQ3hCLElBQUksWUFBWSxFQUFFLENBQUM7QUFDbkI7QUFDQSxJQUFJLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNO0FBQ3pDLEtBQUssUUFBUSxHQUFHLElBQUksQ0FBQztBQUNyQixLQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0EsSUFBSSxZQUFZLEVBQUUsQ0FBQztBQUNuQixJQUFJO0FBQ0o7QUFDQSxHQUFHLElBQUksS0FBSyxxSEFBcUgsS0FBSyxFQUFFO0FBQ3hJLElBQUksWUFBWSxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDekMsSUFBSSxZQUFZLEVBQUUsQ0FBQztBQUNuQixJQUFJLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLHVCQUF1QixFQUFFLG1CQUFtQixFQUFFLEVBQUUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBQ2hMLElBQUksWUFBWSxFQUFFLENBQUM7QUFDbkIsSUFBSTtBQUNKLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLElBQUksT0FBTyxFQUFFLE9BQU87QUFDdkIsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDM0I7QUFDQSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDcEQsSUFBSSxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEMsSUFBSTtBQUNKO0FBQ0EsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM1QjtBQUNBLEdBQUcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNuRCxJQUFJLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQyxJQUFJO0FBQ0o7QUFDQSxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDbkIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRTtBQUNmLEdBQUcsSUFBSSxTQUFTLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdCLEdBQUcsSUFBSSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzlCO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ25ELElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3ZCLElBQUk7QUFDSixHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsU0FBUyxlQUFlLENBQUMsR0FBRyxFQUFFO0FBQzlCLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDVCxDQUFDLElBQUksR0FBRyxDQUFDO0FBQ1QsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNSLENBQUMsSUFBSSxLQUFLLENBQUM7QUFDWCxDQUFDLElBQUksUUFBUSxDQUFDO0FBQ2QsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNSLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDUixDQUFDLElBQUksS0FBSyxDQUFDO0FBQ1gsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNSLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDUixDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1IsQ0FBQyxJQUFJLEtBQUssQ0FBQztBQUNYLENBQUMsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLENBQUMsSUFBSSxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUM5QixDQUFDLElBQUksT0FBTyxDQUFDO0FBQ2I7QUFDQSxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQztBQUNmLEdBQUcsS0FBSyxFQUFFO0FBQ1YsSUFBSSxLQUFLLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQztBQUM1QixJQUFJLGNBQWMscUJBQXFCLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDN0MsSUFBSSx1QkFBdUIsOEJBQThCLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDaEUsSUFBSSx1QkFBdUIsOEJBQThCLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDaEUsSUFBSSxtQkFBbUIsMEJBQTBCLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDeEQsSUFBSTtBQUNKLEdBQUcsQ0FBQyxDQUFDO0FBQ0w7QUFDQSxDQUFDLElBQUksU0FBUyxvQkFBb0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLGlCQUFpQixFQUFFLENBQUM7QUFDaEUsQ0FBQyxJQUFJLFlBQVksYUFBYSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQzlDLENBQUMsSUFBSSxhQUFhLEdBQUcsRUFBRSxDQUFDO0FBQ3hCO0FBQ0EsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ2xELEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRixFQUFFO0FBQ0Y7QUFDQSxDQUFDLElBQUksU0FBUyxvQkFBb0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLGlCQUFpQixFQUFFLENBQUM7QUFDaEUsQ0FBQyxJQUFJLFlBQVksa0JBQWtCLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMzQyxDQUFDLElBQUksYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUN4QjtBQUNBLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNsRCxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkYsRUFBRTtBQUNGO0FBQ0EsQ0FBQyxJQUFJLFVBQVUsYUFBYSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDcEMsQ0FBQyxNQUFNLE9BQU8sR0FBRyxHQUFHLGFBQWEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUNqRDtBQUNBLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNoRCxFQUFFLElBQUksU0FBUyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkQsRUFBRSxJQUFJLEdBQUcsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDL0IsRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDNUUsRUFBRTtBQUNGO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxDQUFDLEdBQUc7QUFDTixHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEIsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3JDLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO0FBQ2hCLEdBQUcsS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM1QixHQUFHLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDbEMsR0FBRyxJQUFJLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDaEMsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7QUFDaEI7QUFDQSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDckQsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDekIsSUFBSTtBQUNKO0FBQ0EsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7QUFDaEIsR0FBRyxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzVCLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QixHQUFHLElBQUksU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNoQyxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztBQUNoQjtBQUNBLEdBQUcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNyRCxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN6QixJQUFJO0FBQ0o7QUFDQSxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztBQUNoQixHQUFHLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDNUI7QUFDQSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbkQsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDdkIsSUFBSTtBQUNKO0FBQ0EsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0FBQ2xELEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztBQUN6QyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixDQUFDLENBQUM7QUFDakQsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLFdBQVcsZUFBZSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN4RCxHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUNwQixHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQy9CLEdBQUcsZUFBZSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkMsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ25CLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN0QixHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDM0IsR0FBRyxJQUFJLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM5QyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDeEI7QUFDQSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDckQsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN2QyxJQUFJO0FBQ0o7QUFDQSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDckIsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNyQixHQUFHLElBQUksU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3hDLEdBQUcsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsQjtBQUNBLEdBQUcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNyRCxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2pDLElBQUk7QUFDSjtBQUNBLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNyQixHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDeEI7QUFDQSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbkQsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNsQyxJQUFJO0FBQ0o7QUFDQSxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ2xCLEdBQUcsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBQzFCLEdBQUcsSUFBSSxLQUFLLGFBQWEsSUFBSSxFQUFFLFdBQVcsQ0FBQyxLQUFLLGFBQWEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3JFLEdBQUcsSUFBSSxLQUFLLHNCQUFzQixDQUFDLEVBQUUsV0FBVyxDQUFDLGNBQWMsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1RixHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDekI7QUFDQSxHQUFHLHFCQUFxQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDaEMsSUFBSSxJQUFJLFNBQVMsRUFBRSxDQUFDLE1BQU07QUFDMUIsS0FBSyxTQUFTLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztBQUNyQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNuQixLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQy9CLEtBQUs7QUFDTCxJQUFJLE1BQU0sSUFBSSxTQUFTLEVBQUU7QUFDekIsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25CLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQztBQUNyQixJQUFJO0FBQ0o7QUFDQSxHQUFHLElBQUksS0FBSyx3QkFBd0IsS0FBSyxFQUFFO0FBQzNDLElBQUksWUFBWSxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDN0MsSUFBSSxJQUFJLENBQUMsQ0FBQztBQUNWO0FBQ0EsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNqRCxLQUFLLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEU7QUFDQSxLQUFLLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQzNCLE1BQU0sYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDM0MsTUFBTSxNQUFNO0FBQ1osTUFBTSxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDeEQsTUFBTSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDM0IsTUFBTSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN6QyxNQUFNO0FBQ04sS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDN0MsS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNCLEtBQUs7QUFDTDtBQUNBLElBQUksYUFBYSxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO0FBQy9DLElBQUk7QUFDSjtBQUNBLEdBQUcscUJBQXFCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUNoQyxJQUFJLElBQUksU0FBUyxFQUFFLENBQUMsTUFBTTtBQUMxQixLQUFLLFNBQVMsR0FBRyxpQkFBaUIsRUFBRSxDQUFDO0FBQ3JDLEtBQUssU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ25CLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDekIsS0FBSztBQUNMLElBQUksTUFBTSxJQUFJLFNBQVMsRUFBRTtBQUN6QixJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkIsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLElBQUk7QUFDSjtBQUNBLEdBQUcsSUFBSSxLQUFLLGtCQUFrQixLQUFLLEVBQUU7QUFDckMsSUFBSSxZQUFZLGtCQUFrQixHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDMUMsSUFBSSxJQUFJLENBQUMsQ0FBQztBQUNWO0FBQ0EsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNqRCxLQUFLLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEU7QUFDQSxLQUFLLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQzNCLE1BQU0sYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDM0MsTUFBTSxNQUFNO0FBQ1osTUFBTSxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDeEQsTUFBTSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDM0IsTUFBTSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNuQyxNQUFNO0FBQ04sS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDN0MsS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNCLEtBQUs7QUFDTDtBQUNBLElBQUksYUFBYSxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO0FBQy9DLElBQUk7QUFDSjtBQUNBLEdBQUcsSUFBSSxLQUFLLG1NQUFtTSxLQUFLLEVBQUU7QUFDdE4sSUFBSSxVQUFVLGFBQWEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ25DLElBQUksWUFBWSxFQUFFLENBQUM7QUFDbkIsSUFBSSxXQUFXLEdBQUcsaUJBQWlCLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUM5SyxJQUFJLFlBQVksRUFBRSxDQUFDO0FBQ25CLElBQUk7QUFDSixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxJQUFJLE9BQU8sRUFBRSxPQUFPO0FBQ3ZCLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3pDO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ2xELElBQUksYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLElBQUk7QUFDSjtBQUNBLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUM7QUFDQSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbkQsSUFBSSxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkMsSUFBSTtBQUNKO0FBQ0EsR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ25CLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDZixHQUFHLElBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5QixHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLEdBQUcsSUFBSSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ2hDLEdBQUcsWUFBWSxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUMxQyxHQUFHLElBQUksU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNoQyxHQUFHLFlBQVksQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDMUM7QUFDQSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbkQsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDdkIsSUFBSTtBQUNKLEdBQUc7QUFDSCxFQUFFLENBQUM7QUFDSCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLFFBQVEsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRTtBQUNqRDtBQUNBO0FBQ0EsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQzlCLENBQUMsSUFBSSxFQUFFLFlBQVksR0FBRyxLQUFLLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDeEMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQzlCLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUMvQixDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNwQyxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNyQyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDOUIsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQy9CLENBQUMsSUFBSSxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDaEMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQzlCLENBQUMsSUFBSSxFQUFFLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDM0MsQ0FBQyxJQUFJLEVBQUUsY0FBYyxHQUFHLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUMxQyxDQUFDLElBQUksS0FBSyxDQUFDO0FBQ1gsQ0FBQyxJQUFJLFVBQVUsQ0FBQztBQUNoQjtBQUNBO0FBQ0EsQ0FBQyxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztBQUNwQztBQUNBLENBQUMsU0FBUyx1QkFBdUIsR0FBRztBQUNwQyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsY0FBYyxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDM0UsRUFBRTtBQUNGO0FBQ0EsQ0FBQyxTQUFTLHVCQUF1QixHQUFHO0FBQ3BDLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxjQUFjLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNoRixFQUFFO0FBQ0Y7QUFDQSxDQUFDLFNBQVMsbUJBQW1CLEdBQUc7QUFDaEMsRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLGNBQWMsR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUNsRCxFQUFFO0FBQ0Y7QUFDQSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsT0FBTyxJQUFJO0FBQzNCLEVBQUUsSUFBSSxZQUFZLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNqRixFQUFFLElBQUksY0FBYyxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDdEYsRUFBRSxJQUFJLFlBQVksSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ2hGLEVBQUUsSUFBSSxhQUFhLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNuRixFQUFFLElBQUksa0JBQWtCLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDbEcsRUFBRSxJQUFJLG1CQUFtQixJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ3JHLEVBQUUsSUFBSSxZQUFZLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNoRixFQUFFLElBQUksYUFBYSxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDbkYsRUFBRSxJQUFJLFNBQVMsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZFLEVBQUUsSUFBSSxZQUFZLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNoRixFQUFFLElBQUksT0FBTyxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsRUFBRSxFQUFFLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEUsRUFBRSxJQUFJLGdCQUFnQixJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLGNBQWMsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDNUYsRUFBRSxDQUFDO0FBQ0g7QUFDQSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxHQUFHLE1BQU07QUFDMUIsRUFBRSxJQUFJLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxrQ0FBa0MsTUFBTSxFQUFFO0FBQy9ELEdBQUcsWUFBWSxDQUFDLEVBQUUsRUFBRSxLQUFLLEdBQUcsUUFBUSxDQUFDLGNBQWMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUsseUJBQXlCLE1BQU0sRUFBRTtBQUN0RCxHQUFHLFlBQVksQ0FBQyxFQUFFLEVBQUUsVUFBVSxHQUFHLGFBQWEsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUNuRSxHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0g7QUFDQSxDQUFDLE9BQU87QUFDUixFQUFFLGNBQWM7QUFDaEIsRUFBRSxZQUFZO0FBQ2QsRUFBRSxVQUFVO0FBQ1osRUFBRSxXQUFXO0FBQ2IsRUFBRSxnQkFBZ0I7QUFDbEIsRUFBRSxpQkFBaUI7QUFDbkIsRUFBRSxVQUFVO0FBQ1osRUFBRSxXQUFXO0FBQ2IsRUFBRSxPQUFPO0FBQ1QsRUFBRSxVQUFVO0FBQ1osRUFBRSxLQUFLO0FBQ1AsRUFBRSx1QkFBdUI7QUFDekIsRUFBRSx1QkFBdUI7QUFDekIsRUFBRSxtQkFBbUI7QUFDckIsRUFBRSxLQUFLO0FBQ1AsRUFBRSxVQUFVO0FBQ1osRUFBRSxRQUFRO0FBQ1YsRUFBRSxVQUFVO0FBQ1osRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsTUFBTSxRQUFRLFNBQVMsZUFBZSxDQUFDO0FBQ3ZDLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRTtBQUN0QixFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ1YsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQ2pFO0FBQ0EsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRTtBQUM1RCxHQUFHLFVBQVUsRUFBRSxFQUFFO0FBQ2pCLEdBQUcsWUFBWSxFQUFFLENBQUM7QUFDbEIsR0FBRyxVQUFVLEVBQUUsQ0FBQztBQUNoQixHQUFHLFdBQVcsRUFBRSxDQUFDO0FBQ2pCLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztBQUN0QixHQUFHLGlCQUFpQixFQUFFLENBQUM7QUFDdkIsR0FBRyxVQUFVLEVBQUUsQ0FBQztBQUNoQixHQUFHLFdBQVcsRUFBRSxDQUFDO0FBQ2pCLEdBQUcsT0FBTyxFQUFFLENBQUM7QUFDYixHQUFHLFVBQVUsRUFBRSxDQUFDO0FBQ2hCLEdBQUcsS0FBSyxFQUFFLEVBQUU7QUFDWixHQUFHLGNBQWMsRUFBRSxDQUFDO0FBQ3BCLEdBQUcsdUJBQXVCLEVBQUUsRUFBRTtBQUM5QixHQUFHLHVCQUF1QixFQUFFLEVBQUU7QUFDOUIsR0FBRyxtQkFBbUIsRUFBRSxFQUFFO0FBQzFCLEdBQUcsQ0FBQyxDQUFDO0FBQ0wsRUFBRTtBQUNGO0FBQ0EsQ0FBQyxJQUFJLHVCQUF1QixHQUFHO0FBQy9CLEVBQUUsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN6QixFQUFFO0FBQ0Y7QUFDQSxDQUFDLElBQUksdUJBQXVCLEdBQUc7QUFDL0IsRUFBRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3pCLEVBQUU7QUFDRjtBQUNBLENBQUMsSUFBSSxtQkFBbUIsR0FBRztBQUMzQixFQUFFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekIsRUFBRTtBQUNGOztBQzNsRkE7QUFDTSxNQUFnQiwyQkFBNEIsU0FBUXNFLDRCQUFtQixDQUFBO0FBSTlELElBQUEsU0FBQSxDQUFBO0FBQ0EsSUFBQSxLQUFBLENBQUE7QUFDQSxJQUFBLEdBQUEsQ0FBQTtBQUNBLElBQUEsUUFBQSxDQUFBO0FBTkgsSUFBQSxVQUFVLENBQVM7QUFFM0IsSUFBQSxXQUFBLENBQ1csU0FBc0IsRUFDdEIsS0FBZ0IsRUFDaEIsR0FBUSxFQUNSLFFBQTBCLEVBQUE7UUFFakMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBTFYsSUFBUyxDQUFBLFNBQUEsR0FBVCxTQUFTLENBQWE7UUFDdEIsSUFBSyxDQUFBLEtBQUEsR0FBTCxLQUFLLENBQVc7UUFDaEIsSUFBRyxDQUFBLEdBQUEsR0FBSCxHQUFHLENBQUs7UUFDUixJQUFRLENBQUEsUUFBQSxHQUFSLFFBQVEsQ0FBa0I7QUFHakMsUUFBQSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztLQUN2QjtJQUlELE1BQU0sR0FBQTtRQUNGLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNkLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7O0FBRXRDLFFBQUEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7O0FBRXZGLFFBQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztLQUNuRTtJQUVELFlBQVksR0FBRyxNQUFLOzs7UUFHaEIsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUU7WUFDcEcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUN0QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDakIsU0FBQTtBQUNMLEtBQUMsQ0FBQztBQUNMOztBQ25CSyxNQUFPLHdCQUF5QixTQUFRLDJCQUEyQixDQUFBO0FBRzFELElBQUEsS0FBQSxDQUFBO0FBQ0EsSUFBQSxTQUFBLENBQUE7QUFDQSxJQUFBLEtBQUEsQ0FBQTtBQUNBLElBQUEsTUFBQSxDQUFBO0FBQ0EsSUFBQSxRQUFBLENBQUE7QUFDQSxJQUFBLEdBQUEsQ0FBQTtBQVBILElBQUEsUUFBUSxDQUFXO0lBQzNCLFdBQ1csQ0FBQSxLQUFZLEVBQ1osU0FBc0IsRUFDdEIsS0FBZ0IsRUFDaEIsTUFBYyxFQUNkLFFBQTBCLEVBQzFCLEdBQVEsRUFBQTtRQUVmLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQVBoQyxJQUFLLENBQUEsS0FBQSxHQUFMLEtBQUssQ0FBTztRQUNaLElBQVMsQ0FBQSxTQUFBLEdBQVQsU0FBUyxDQUFhO1FBQ3RCLElBQUssQ0FBQSxLQUFBLEdBQUwsS0FBSyxDQUFXO1FBQ2hCLElBQU0sQ0FBQSxNQUFBLEdBQU4sTUFBTSxDQUFRO1FBQ2QsSUFBUSxDQUFBLFFBQUEsR0FBUixRQUFRLENBQWtCO1FBQzFCLElBQUcsQ0FBQSxHQUFBLEdBQUgsR0FBRyxDQUFLO0tBR2xCO0FBRUQsSUFBQSxNQUFNLE1BQU0sR0FBQTtBQUNSLFFBQUEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQzlCLElBQUksV0FBVyxHQUFHLE1BQU0sbUJBQW1CLENBQUMsTUFDeEMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDdEUsQ0FBQztBQUNGLFFBQUEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUU7WUFDekIsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsWUFBWSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqRSxPQUFPO0FBQ1YsU0FBQTtBQUFNLGFBQUEsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUU7QUFDOUUsWUFBQSxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxxQ0FBcUMsQ0FBQyxDQUFDO1lBQ3RFLE9BQU87QUFDVixTQUFBO0FBQ0QsUUFBQSxJQUFJLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBMEIsQ0FBQztRQUNoRCxLQUFLLElBQUksSUFBSSxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFO0FBQ3JDLFlBQUEsTUFBTSxHQUFHLEdBQUc7QUFDUixnQkFBQSxLQUFLLEVBQUUsU0FBUztBQUNoQixnQkFBQSxTQUFTLEVBQUUsTUFBTTtBQUNqQixnQkFBQSxRQUFRLEVBQUUsSUFBSTtnQkFDZCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7YUFDbEIsQ0FBQztZQUNGLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3pDLFlBQUEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN6QixhQUFBO0FBQU0saUJBQUE7Z0JBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0IsYUFBQTtBQUNKLFNBQUE7QUFFRCxRQUFBLE1BQU0sV0FBVyxHQUFvQjtBQUNqQyxZQUFBLGdCQUFnQixFQUFFLE9BQU8sSUFBWSxLQUEyQjtnQkFDNUQsT0FBTztBQUNILG9CQUFBLElBQUksRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFO2lCQUNuRCxDQUFDO2FBQ0w7U0FDSixDQUFDO0FBRUYsUUFBQSxNQUFNLE9BQU8sR0FBc0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDdEIsUUFBQSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDOztZQUV6QixNQUFNLEVBQUcsSUFBWSxDQUFDLFNBQVM7QUFDL0IsWUFBQSxLQUFLLEVBQUU7Z0JBQ0gsVUFBVSxDQUFDLElBQVksRUFBRSxRQUFxQixFQUFBO0FBQzFDLG9CQUFBLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO29CQUNsRCxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO3dCQUMzQixPQUFPO0FBQ1YscUJBQUE7QUFDRCxvQkFBQSxJQUFJLElBQUksRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFO3dCQUNuQixPQUFPO0FBQ1YscUJBQUE7QUFFRCxvQkFBQSxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDcEc7QUFDRCxnQkFBQSxVQUFVLEVBQUUsT0FBTSxJQUFJLEtBQUc7QUFDckIsb0JBQUEsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7b0JBQ2xELElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7d0JBQzNCLE9BQU87QUFDVixxQkFBQTtBQUNELG9CQUFBLElBQUksSUFBSSxFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUU7d0JBQ25CLE9BQU87QUFDVixxQkFBQTtvQkFDRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDcEYsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO3dCQUNkLE9BQU87QUFDVixxQkFBQTtvQkFDRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztBQUN0RCxvQkFBQSxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7aUJBQy9DO0FBQ0QsZ0JBQUEsWUFBWSxFQUFFLEtBQUs7Z0JBQ25CLE9BQU87QUFDVixhQUFBO0FBQ0osU0FBQSxDQUFDLENBQUM7S0FDTjtJQUVELE9BQU8sR0FBQTtRQUNILElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtBQUNmLFlBQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUM1QixTQUFBO0FBQ0QsUUFBQSxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztLQUM1QjtBQUNKOztBQy9HRDtBQWtCQTtNQUNhLG1CQUFtQixDQUFBO0FBQ0YsSUFBQSxHQUFBLENBQUE7QUFBMkIsSUFBQSxXQUFBLENBQUE7SUFBckQsV0FBMEIsQ0FBQSxHQUFrQixFQUFTLFdBQW1CLEVBQUE7UUFBOUMsSUFBRyxDQUFBLEdBQUEsR0FBSCxHQUFHLENBQWU7UUFBUyxJQUFXLENBQUEsV0FBQSxHQUFYLFdBQVcsQ0FBUTtLQUFJOztBQUdyRSxJQUFBLE1BQU0sR0FBRyxDQUFDLElBQVksRUFBRSxVQUFtQixFQUFBO0FBQzlDLFFBQUEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztLQUM3RDs7QUFHTSxJQUFBLE1BQU0sSUFBSSxDQUFDLElBQW1CLEVBQUUsVUFBbUIsRUFBQTtBQUN0RCxRQUFBLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDOUQ7O0lBR00sU0FBUyxDQUFDLElBQW1CLEVBQUUsVUFBbUIsRUFBQTtBQUNyRCxRQUFBLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDbkU7QUFDSixDQUFBO01BRVksaUJBQWlCLENBQUE7QUFDMUI7OztBQUdHO0FBQ0ksSUFBQSxLQUFLLENBQVk7O0FBR2pCLElBQUEsU0FBUyxDQUFZOztBQUdyQixJQUFBLGVBQWUsQ0FBUztBQUUvQjs7O0FBR0c7QUFDSSxJQUFBLFNBQVMsQ0FBYzs7QUFHdkIsSUFBQSxHQUFHLENBQU07O0FBR1QsSUFBQSxHQUFHLENBQWM7O0FBR2pCLElBQUEsUUFBUSxDQUFtQjs7QUFHM0IsSUFBQSxpQkFBaUIsQ0FBVTs7SUFHM0IsS0FBSyxHQUFHLE1BQU0sQ0FBQzs7SUFHZixNQUFNLEdBQUcsT0FBTyxDQUFDOztBQUdqQixJQUFBLEVBQUUsQ0FBc0I7O0lBR3hCLEtBQUssR0FBRyxLQUFLLENBQUM7O0FBR2QsSUFBQSxJQUFJLENBQW9DO0FBRS9DLElBQUEsV0FBQSxDQUFZLEdBQWdCLEVBQUUsU0FBb0IsRUFBRSxTQUFzQixFQUFFLGVBQXVCLEVBQUE7QUFDL0YsUUFBQSxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDdkIsUUFBQSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7QUFDbkIsUUFBQSxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7QUFFN0IsUUFBQSxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztBQUMzQixRQUFBLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBQzNCLFFBQUEsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7QUFFdkMsUUFBQSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUNmLFFBQUEsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQzs7UUFHckUsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2RixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxPQUFPLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtBQUN0RyxZQUFBLElBQUksRUFBRSxRQUFRO0FBQ2pCLFNBQUEsQ0FBQyxDQUFDO0FBRUgsUUFBQSxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7S0FDNUU7Ozs7O0FBT00sSUFBQSxTQUFTLENBQUMsS0FBYyxFQUFBO0FBQzNCLFFBQUEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQzFEOztBQUdNLElBQUEsSUFBSSxDQUFDLElBQW1CLEVBQUE7QUFDM0IsUUFBQSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7S0FDcEQ7O0FBR00sSUFBQSxLQUFLLENBQUMsS0FBYyxFQUFBO0FBQ3ZCLFFBQUEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQ3REOztJQUdNLE9BQU8sR0FBQTtRQUNWLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7S0FDMUM7Ozs7O0FBT00sSUFBQSxNQUFNLEtBQUssQ0FDZCxNQUFjLEVBQ2QsVUFBbUIsRUFDbkIsUUFBMkIsRUFBQTtBQUUzQixRQUFBLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0tBQy9FOztBQUdNLElBQUEsTUFBTSxRQUFRLENBQUMsTUFBYyxFQUFFLFVBQW1CLEVBQUUsUUFBMkIsRUFBQTtBQUNsRixRQUFBLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0tBQ2xGOztBQUdNLElBQUEsTUFBTSxhQUFhLENBQ3RCLE1BQWMsRUFDZCxVQUFtQixFQUNuQixRQUEyQixFQUFBO0FBRTNCLFFBQUEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDLENBQUM7S0FDdkY7O0FBR00sSUFBQSxNQUFNLGdCQUFnQixDQUFDLE1BQWMsRUFBRSxVQUFtQixFQUFFLFFBQTJCLEVBQUE7QUFDMUYsUUFBQSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0tBQzFGO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0FBY0c7SUFDSSxRQUFRLENBQUMsVUFBa0IsRUFBRSxPQUFvQixFQUFBO1FBQ3BELElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUFFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQywrQkFBK0IsVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFFdkYsUUFBQSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztLQUNoRTs7SUFHTSxXQUFXLENBQUMsVUFBa0IsRUFBRSxPQUFvQixFQUFBO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7S0FDM0Q7O0lBR00sTUFBTSxPQUFPLENBQUMsTUFBYyxFQUFBO0FBQy9CLFFBQUEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7S0FDbEY7O0lBR00sTUFBTSxTQUFTLENBQUMsSUFBWSxFQUFBO0FBQy9CLFFBQUEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7S0FDbEY7Ozs7QUFNRDs7O0FBR0c7QUFDSSxJQUFBLEtBQUssQ0FBQyxHQUFRLEVBQUE7UUFDakIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUM5Qjs7QUFHTSxJQUFBLE9BQU8sQ0FBQyxHQUFRLEVBQUE7UUFDbkIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNoQzs7QUFHTSxJQUFBLFdBQVcsQ0FBQyxHQUFZLEVBQUE7QUFDM0IsUUFBQSxPQUFPLFNBQVMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDckM7O0FBR00sSUFBQSxRQUFRLENBQUMsSUFBWSxFQUFFLEtBQWlCLEdBQUEsS0FBSyxFQUFFLE9BQWdCLEVBQUE7UUFDbEUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDMUM7O0lBR00sV0FBVyxDQUFDLElBQVksRUFBRSxPQUFlLEVBQUUsS0FBaUIsR0FBQSxLQUFLLEVBQUUsT0FBZ0IsRUFBQTtBQUN0RixRQUFBLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztLQUNyRDs7SUFHTSxTQUFTLENBQUMsSUFBWSxFQUFFLE9BQWUsRUFBRSxLQUFpQixHQUFBLEtBQUssRUFBRSxPQUFnQixFQUFBO0FBQ3BGLFFBQUEsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ3BEOztBQUdNLElBQUEsSUFBSSxDQUFDLFFBQWtDLEVBQUE7UUFDMUMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUNsQzs7QUFHTSxJQUFBLFFBQVEsQ0FBQyxHQUFzQixFQUFBO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDakM7O0FBR00sSUFBQSxLQUFLLENBQUMsS0FBYSxFQUFBO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDaEM7O0FBR00sSUFBQSxPQUFPLENBQUMsS0FBVSxFQUFBO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDbEM7O0FBR00sSUFBQSxLQUFLLENBQUMsS0FBYyxFQUFBO0FBQ3ZCLFFBQUEsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ2pDO0FBRUQ7OztBQUdHO0lBQ0ksT0FBTyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUE7UUFDekIsT0FBTyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztLQUNwQzs7SUFHTSxLQUFLLENBQUMsQ0FBTSxFQUFFLENBQU0sRUFBQTtRQUN2QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNsQzs7Ozs7QUFPTSxJQUFBLEVBQUUsQ0FDTCxFQUFLLEVBQ0wsSUFBUyxFQUNULEVBQUUsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxPQUFPLEtBQW1ELEVBQUUsRUFBQTtRQUU3RixJQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRXJDLFFBQUEsSUFBSSxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUU7QUFDM0MsWUFBQSxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ25FLFNBQUE7UUFFRCxJQUFJLEdBQUcsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNyRyxRQUFBLE9BQU8sR0FBRyxDQUFDO0tBQ2Q7O0FBR00sSUFBQSxNQUFNLENBQUMsS0FBYSxFQUFFLElBQVMsRUFBRSxPQUF3QixFQUFBO0FBQzVELFFBQUEsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzdFLFFBQUEsSUFBSSxDQUFDLE1BQU07QUFBRSxZQUFBLE1BQU0sS0FBSyxDQUFDLENBQUEsb0JBQUEsRUFBdUIsS0FBSyxDQUFBLGdDQUFBLENBQWtDLENBQUMsQ0FBQztRQUV6RixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBcUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUF1QixDQUFDO0tBQzlGOztJQUdNLFNBQVMsQ0FBQyxJQUFTLEVBQUUsT0FBd0IsRUFBQTtRQUNoRCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztLQUN0Qzs7SUFHTSxJQUFJLENBQUMsSUFBUyxFQUFFLE9BQXdCLEVBQUE7UUFDM0MsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDekM7QUFFRDs7O0FBR0c7QUFDSSxJQUFBLE1BQU0sSUFBSSxDQUFDLFFBQWdCLEVBQUUsS0FBVSxFQUFBOztBQUUxQyxRQUFBLE1BQU0sY0FBYyxHQUFHLENBQUcsRUFBQSxRQUFRLEtBQUssQ0FBQztBQUN4QyxRQUFBLE1BQU0sZUFBZSxHQUFHLENBQUcsRUFBQSxRQUFRLFVBQVUsQ0FBQztRQUM5QyxJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxVQUFVLEdBQUcsU0FBUyxDQUFDO0FBQzNCLFFBQUEsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqRyxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ1gsWUFBQSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM5RixXQUFXLEdBQUcsSUFBSSxDQUFDO0FBQ3RCLFNBQUE7UUFFRCxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ1gsY0FBYyxDQUNWLElBQUksQ0FBQyxTQUFTLEVBQ2QsQ0FBd0MscUNBQUEsRUFBQSxjQUFjLENBQVMsTUFBQSxFQUFBLGVBQWUsQ0FBSSxFQUFBLENBQUEsQ0FDckYsQ0FBQztZQUNGLE9BQU87QUFDVixTQUFBO0FBRUQsUUFBQSxJQUFJLFdBQVcsRUFBRTs7QUFFYixZQUFBLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUEsRUFBRyxRQUFRLENBQVcsU0FBQSxDQUFBLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ3hHLFlBQUEsSUFBSSxPQUFPLEVBQUU7QUFDVCxnQkFBQSxJQUFJLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDckQsV0FBVyxJQUFJLENBQW1CLGdCQUFBLEVBQUEsUUFBUSxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFBLEdBQUEsQ0FBSyxDQUFDO2dCQUN2RSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzlGLGFBQUE7QUFDSixTQUFBO0FBRUQsUUFBQSxJQUFJLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNuRCxRQUFBLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7QUFBRSxZQUFBLFFBQVEsR0FBRyxpQkFBaUIsR0FBRyxRQUFRLEdBQUcsT0FBTyxDQUFDO0FBQ2xGLFFBQUEsUUFBUSxJQUFJLENBQW1CLGdCQUFBLEVBQUEsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9DLElBQUksSUFBSSxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFakQsSUFBSTs7QUFFQSxZQUFBLElBQUksTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdEQsWUFBQSxJQUFJLE1BQU07Z0JBQ04sTUFBTSxXQUFXLENBQ2IsSUFBSSxDQUFDLEdBQUcsRUFDUixNQUFhLEVBQ2IsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsZUFBZSxFQUNwQixJQUFJLENBQUMsU0FBUyxFQUNkLElBQUksQ0FBQyxRQUFRLEVBQ2IsSUFBSSxDQUNQLENBQUM7QUFDVCxTQUFBO0FBQUMsUUFBQSxPQUFPLEVBQUUsRUFBRTtBQUNULFlBQUEsSUFBSSxVQUFVO0FBQUUsZ0JBQUEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDdkQsWUFBQSxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFBLGtDQUFBLEVBQXFDLFFBQVEsQ0FBQyxJQUFJLENBQUEsTUFBQSxFQUFTLEVBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUNuRyxTQUFBO0tBQ0o7O0FBR00sSUFBQSxJQUFJLENBQUMsTUFBK0IsRUFBQTtRQUN2QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQ3RGOztJQUdNLEtBQUssQ0FBQyxPQUFpQixFQUFFLE1BQWlDLEVBQUE7UUFDN0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7S0FDaEc7O0FBR00sSUFBQSxRQUFRLENBQUMsS0FBMEIsRUFBRSxXQUFBLEdBQXVCLElBQUksRUFBQTtRQUNuRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztLQUN0Rzs7Ozs7QUFPTSxJQUFBLGFBQWEsQ0FDaEIsT0FBaUIsRUFDakIsTUFBaUMsRUFDakMsUUFBa0MsRUFBQTtBQUVsQyxRQUFBLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztLQUM1RDs7SUFHTSxZQUFZLENBQUMsTUFBMkMsRUFBRSxRQUFrQyxFQUFBO1FBQy9GLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0tBQ2xEOztJQUdNLGdCQUFnQixDQUFDLE1BQTJCLEVBQUUsUUFBa0MsRUFBQTtRQUNuRixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0tBQ3REO0FBQ0osQ0FBQTtBQUVEOztBQUVHO0FBQ2EsU0FBQSxhQUFhLENBQUMsTUFBYyxFQUFFLE9BQVksRUFBQTtJQUN0RCxPQUFPLFlBQUE7QUFDSCxRQUFBLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3hCLEtBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDcEIsQ0FBQztBQUVEOztBQUVHO0FBQ0ksZUFBZSxrQkFBa0IsQ0FBQyxNQUFjLEVBQUUsT0FBWSxFQUFBO0FBQ2pFLElBQUEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzFCLE9BQU8sYUFBYSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sR0FBRyxPQUFPLEVBQUUsT0FBTyxDQUFpQixDQUFDO0FBQ3ZGLEtBQUE7QUFBTSxTQUFBO1FBQ0gsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUMxRCxLQUFBO0FBQ0w7O0FDdGFNLE1BQU8sa0JBQW1CLFNBQVEsMkJBQTJCLENBQUE7QUFHNUMsSUFBQSxHQUFBLENBQUE7QUFBeUIsSUFBQSxNQUFBLENBQUE7QUFBdUIsSUFBQSxTQUFBLENBQUE7QUFBK0IsSUFBQSxNQUFBLENBQUE7QUFGbEcsSUFBQSxPQUFPLFFBQVEsR0FBVyx3Q0FBd0MsQ0FBQztBQUVuRSxJQUFBLFdBQUEsQ0FBbUIsR0FBZ0IsRUFBUyxNQUFjLEVBQVMsU0FBc0IsRUFBUyxNQUFjLEVBQUE7QUFDNUcsUUFBQSxLQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFEcEMsSUFBRyxDQUFBLEdBQUEsR0FBSCxHQUFHLENBQWE7UUFBUyxJQUFNLENBQUEsTUFBQSxHQUFOLE1BQU0sQ0FBUTtRQUFTLElBQVMsQ0FBQSxTQUFBLEdBQVQsU0FBUyxDQUFhO1FBQVMsSUFBTSxDQUFBLE1BQUEsR0FBTixNQUFNLENBQVE7S0FFL0c7QUFFRCxJQUFBLE1BQU0sTUFBTSxHQUFBO0FBQ1IsUUFBQSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFDOUIsUUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRTtBQUNqQyxZQUFBLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxZQUFBLGNBQWMsQ0FDVixJQUFJLENBQUMsU0FBUyxFQUNkLGlGQUFpRixDQUNwRixDQUFDO1lBQ0YsT0FBTztBQUNWLFNBQUE7O1FBR0QsSUFBSTtBQUNBLFlBQUEsTUFBTSxrQkFBa0IsQ0FDcEIsa0JBQWtCLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQ3pDLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQ3JFLENBQUM7QUFDTCxTQUFBO0FBQUMsUUFBQSxPQUFPLENBQUMsRUFBRTtBQUNSLFlBQUEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBQ2hDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsRSxTQUFBO0tBQ0o7O0FBR0w7QUFDTSxNQUFPLHdCQUF5QixTQUFRLDJCQUEyQixDQUFBO0FBTzFELElBQUEsR0FBQSxDQUFBO0FBQ0EsSUFBQSxNQUFBLENBQUE7QUFDQSxJQUFBLFNBQUEsQ0FBQTtBQUNBLElBQUEsTUFBQSxDQUFBO0FBQ0EsSUFBQSxNQUFBLENBQUE7QUFWWCxJQUFBLE9BQU8sUUFBUSxHQUFXLHNDQUFzQyxDQUFDOztBQUdqRSxJQUFBLFFBQVEsQ0FBZTtJQUV2QixXQUNXLENBQUEsR0FBZ0IsRUFDaEIsTUFBYyxFQUNkLFNBQXNCLEVBQ3RCLE1BQW1CLEVBQ25CLE1BQWMsRUFBQTtBQUVyQixRQUFBLEtBQUssQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQU41QyxJQUFHLENBQUEsR0FBQSxHQUFILEdBQUcsQ0FBYTtRQUNoQixJQUFNLENBQUEsTUFBQSxHQUFOLE1BQU0sQ0FBUTtRQUNkLElBQVMsQ0FBQSxTQUFBLEdBQVQsU0FBUyxDQUFhO1FBQ3RCLElBQU0sQ0FBQSxNQUFBLEdBQU4sTUFBTSxDQUFhO1FBQ25CLElBQU0sQ0FBQSxNQUFBLEdBQU4sTUFBTSxDQUFRO0tBR3hCO0FBRUQsSUFBQSxNQUFNLE1BQU0sR0FBQTtBQUNSLFFBQUEsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUN4QixRQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRTtZQUMxRSxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFDLFlBQUEsSUFBSSxDQUFDLFNBQVMsR0FBRyxnQ0FBZ0MsQ0FBQztBQUNsRCxZQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlCLFlBQUEsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDbkIsT0FBTztBQUNWLFNBQUE7O1FBR0QsSUFBSTtZQUNBLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDMUMsWUFBQSxJQUFJLE1BQU0sR0FBRyxNQUFNLGtCQUFrQixDQUNqQyx3QkFBd0IsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFDL0MsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUMzRCxDQUFDO0FBQ0YsWUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5QixZQUFBLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ25CLElBQUksTUFBTSxLQUFLLFNBQVM7Z0JBQUUsT0FBTztZQUVqQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3BGLFNBQUE7QUFBQyxRQUFBLE9BQU8sQ0FBQyxFQUFFO1lBQ1IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQyxZQUFBLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLGlDQUFpQyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQy9GLFNBQUE7S0FDSjs7O0FDMUVMO0FBQ0E7QUFDQTtBQUVBO1NBQ2dCLGFBQWEsQ0FDekIsT0FBaUIsRUFDakIsTUFBbUIsRUFDbkIsUUFBeUMsRUFBQTtBQUV6QyxJQUFBLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtBQUN2RCxRQUFBLE1BQU0sSUFBSSxLQUFLLENBQ1gsQ0FBMEIsdUJBQUEsRUFBQSxPQUFPLENBQUMsTUFBTSxDQUFBLG9DQUFBLEVBQXVDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQ3JHLENBQUM7QUFFTixJQUFBLFFBQVEsR0FBRyxRQUFRLElBQUksZ0JBQWdCLENBQUM7SUFFeEMsTUFBTSxPQUFPLEdBQWUsRUFBRSxDQUFDO0FBQy9CLElBQUEsTUFBTSxVQUFVLEdBQWEsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQzs7QUFHN0UsSUFBQSxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUMxQyxNQUFNLE9BQU8sR0FBYSxFQUFFLENBQUM7QUFDN0IsUUFBQSxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUMvQyxZQUFBLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUUxRSxZQUFBLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkIsWUFBQSxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVELFNBQUE7QUFDRCxRQUFBLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDekIsS0FBQTs7O0FBSUQsSUFBQSxJQUFJLEtBQUssR0FBRyxDQUFLLEVBQUEsRUFBQSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDOztJQUV2RyxLQUFLLElBQUksQ0FBSyxFQUFBLEVBQUEsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsSUFBQSxDQUFNLENBQUM7O0FBRTFFLElBQUEsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDMUMsUUFBQSxLQUFLLElBQUksQ0FBQSxFQUFBLEVBQUssT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUMvRixLQUFBO0FBRUQsSUFBQSxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDO0FBRUQ7QUFDQSxTQUFTLFlBQVksQ0FBQyxLQUFjLEVBQUUsU0FBcUIsR0FBQSxJQUFJLEVBQUUsUUFBd0IsRUFBQTtJQUNyRixPQUFPLFdBQVcsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ3BFLENBQUM7QUFFRDtBQUNBLFNBQVMsZUFBZSxDQUFDLEtBQWMsRUFBRSxTQUFxQixHQUFBLElBQUksRUFBRSxRQUF3QixFQUFBO0FBQ3hGLElBQUEsSUFBSSxDQUFDLFNBQVM7UUFBRSxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBRXhELElBQUEsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ3ZCLFFBQUEsT0FBTyxDQUFPLElBQUEsRUFBQSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxNQUFNLEdBQUcsWUFBWSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBLEtBQUEsQ0FBTyxDQUFDO0FBQ3pHLEtBQUE7QUFBTSxTQUFBLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUMvQixRQUFBLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO2FBQzlCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFJO0FBQ1osWUFBQSxPQUFPLFVBQVUsWUFBWSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVMsWUFBWSxDQUN0RSxDQUFDLEVBQ0QsU0FBUyxFQUNULFFBQVEsQ0FDWCxPQUFPLENBQUM7QUFDYixTQUFDLENBQUM7YUFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFZCxPQUFPLENBQUEsSUFBQSxFQUFPLEtBQUssQ0FBQSxLQUFBLENBQU8sQ0FBQztBQUM5QixLQUFBO0FBQU0sU0FBQTtRQUNILE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDM0MsS0FBQTtBQUNMLENBQUM7QUFFRDtBQUNBLFNBQVMsUUFBUSxDQUFDLElBQVksRUFBRSxPQUFlLEVBQUUsTUFBYyxFQUFBO0FBQzNELElBQUEsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU07QUFBRSxRQUFBLE9BQU8sSUFBSSxDQUFDO0FBQ3ZDLElBQUEsT0FBTyxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZELENBQUM7QUFFRDtBQUNBLFNBQVMsV0FBVyxDQUFDLElBQVksRUFBQTtJQUM3QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFFRDtBQUNBO0FBQ0E7QUFFQTtBQUNnQixTQUFBLFlBQVksQ0FBQyxNQUFpQixFQUFFLFFBQXlDLEVBQUE7SUFDckYsT0FBTyxlQUFlLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoRCxDQUFDO0FBRUQ7QUFDQSxTQUFTLGVBQWUsQ0FBQyxLQUFjLEVBQUUsUUFBeUMsRUFBRSxRQUFnQixDQUFDLEVBQUE7QUFDakcsSUFBQSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDdkIsUUFBQSxJQUFJLE1BQU0sR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDcEMsUUFBQSxLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssRUFBRTtZQUNyQixNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDdEMsTUFBTSxJQUFJLGVBQWUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2xELE1BQU0sSUFBSSxJQUFJLENBQUM7QUFDbEIsU0FBQTtBQUVELFFBQUEsT0FBTyxNQUFNLENBQUM7QUFDakIsS0FBQTtBQUFNLFNBQUEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQy9CLFFBQUEsSUFBSSxNQUFNLEdBQUcsS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3BDLFFBQUEsS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDNUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ3RDLE1BQU0sSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUN0QyxNQUFNLElBQUksZUFBZSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbEQsTUFBTSxJQUFJLElBQUksQ0FBQztBQUNsQixTQUFBO0FBRUQsUUFBQSxPQUFPLE1BQU0sQ0FBQztBQUNqQixLQUFBO0FBQU0sU0FBQSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUM1RCxPQUFPLENBQUEsRUFBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBSyxFQUFBLEVBQUEsZUFBZSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUM7QUFDaEcsS0FBQTtBQUVELElBQUEsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFFRDtBQUNBO0FBQ0E7QUFFQTtBQUNNLFNBQVUsZ0JBQWdCLENBQzVCLEtBQTBCLEVBQzFCLFFBQXlDLEVBQ3pDLFFBQWdCLENBQUMsRUFBQTtBQUVqQixJQUFBLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUM3QixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDaEIsUUFBQSxLQUFLLElBQUksT0FBTyxJQUFJLEtBQUssRUFBRTtZQUN2QixNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUM5RSxZQUFBLE1BQU0sSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakUsU0FBQTtBQUNELFFBQUEsT0FBTyxNQUFNLENBQUM7QUFDakIsS0FBQTtBQUFNLFNBQUE7O1FBRUgsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFekMsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ2hCLFFBQUEsS0FBSyxJQUFJLE9BQU8sSUFBSSxVQUFVLEVBQUU7WUFDNUIsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBRXRDLElBQUksT0FBTyxDQUFDLElBQUksRUFBRTtnQkFDZCxNQUFNLElBQUksQ0FBSSxDQUFBLEVBQUEsT0FBTyxDQUFDLE1BQU0sQ0FBSyxFQUFBLEVBQUEsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQSxFQUFBLENBQUksQ0FBQztBQUMvRixhQUFBO0FBQU0saUJBQUE7Z0JBQ0gsTUFBTSxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQSxFQUFBLENBQUksQ0FBQztBQUMzRSxhQUFBO0FBRUQsWUFBQSxNQUFNLElBQUksZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3JFLFNBQUE7QUFFRCxRQUFBLE9BQU8sTUFBTSxDQUFDO0FBQ2pCLEtBQUE7QUFDTDs7QUNsS0E7QUFzQ0E7TUFDYSxhQUFhLENBQUE7QUFDSSxJQUFBLEdBQUEsQ0FBQTtBQUExQixJQUFBLFdBQUEsQ0FBMEIsR0FBZ0IsRUFBQTtRQUFoQixJQUFHLENBQUEsR0FBQSxHQUFILEdBQUcsQ0FBYTtLQUFJOztBQUd2QyxJQUFBLE1BQU0sR0FBRyxDQUFDLElBQW1CLEVBQUUsVUFBbUIsRUFBQTtBQUNyRCxRQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNoRCxZQUFBLE1BQU0sS0FBSyxDQUFDLENBQUEsZ0VBQUEsRUFBbUUsT0FBTyxJQUFJLENBQUEsRUFBQSxDQUFJLENBQUMsQ0FBQztBQUNuRyxTQUFBO1FBRUQsSUFBSSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDMUUsSUFBSSxJQUFJLENBQUMsVUFBVTtBQUFFLFlBQUEsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7WUFDckUsTUFBTSxLQUFLLENBQUMsQ0FBQSw2QkFBQSxFQUFnQyxJQUFJLENBQUEsdUJBQUEsRUFBMEIsVUFBVSxJQUFJLEdBQUcsQ0FBSSxFQUFBLENBQUEsQ0FBQyxDQUFDO0tBQ3pHOztBQUdNLElBQUEsTUFBTSxJQUFJLENBQUMsSUFBbUIsRUFBRSxVQUFtQixFQUFBO0FBQ3RELFFBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ2hELFlBQUEsTUFBTSxLQUFLLENBQUMsQ0FBQSxpRUFBQSxFQUFvRSxPQUFPLElBQUksQ0FBQSxFQUFBLENBQUksQ0FBQyxDQUFDO0FBQ3BHLFNBQUE7UUFFRCxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUNoRyxJQUFJLENBQUMsWUFBWSxJQUFJLEVBQUUsWUFBWSxZQUFZbkQsY0FBSyxDQUFDO0FBQUUsWUFBQSxPQUFPLFNBQVMsQ0FBQztBQUV4RSxRQUFBLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUN4RDs7SUFHTSxTQUFTLENBQUMsSUFBbUIsRUFBRSxVQUFtQixFQUFBO0FBQ3JELFFBQUEsSUFBSSxRQUFRLENBQUM7QUFDYixRQUFBLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFBRSxZQUFBLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDOztZQUN6QyxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBRXJCLFFBQUEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztLQUN0RTtBQUNKLENBQUE7QUFFRDtNQUNhLFdBQVcsQ0FBQTtBQWVULElBQUEsR0FBQSxDQUFBO0FBQ0EsSUFBQSxLQUFBLENBQUE7QUFDQSxJQUFBLFFBQUEsQ0FBQTtBQUNDLElBQUEsTUFBQSxDQUFBOztBQWhCTCxJQUFBLGlCQUFpQixDQUFVOztBQUUzQixJQUFBLEVBQUUsQ0FBZ0I7O0FBRWxCLElBQUEsSUFBSSxDQUFvQzs7SUFFeEMsS0FBSyxHQUFHLE1BQU0sQ0FBQzs7SUFFZixNQUFNLEdBQUcsT0FBTyxDQUFDOztJQUVqQixLQUFLLEdBQUcsS0FBSyxDQUFDO0FBRXJCLElBQUEsV0FBQSxDQUNXLEdBQVEsRUFDUixLQUFnQixFQUNoQixRQUEwQixFQUN6QixNQUFjLEVBQUE7UUFIZixJQUFHLENBQUEsR0FBQSxHQUFILEdBQUcsQ0FBSztRQUNSLElBQUssQ0FBQSxLQUFBLEdBQUwsS0FBSyxDQUFXO1FBQ2hCLElBQVEsQ0FBQSxRQUFBLEdBQVIsUUFBUSxDQUFrQjtRQUN6QixJQUFNLENBQUEsTUFBQSxHQUFOLE1BQU0sQ0FBUTtBQUV0QixRQUFBLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDOUUsUUFBQSxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNyQzs7SUFHTSxPQUFPLEdBSVYsQ0FBQyxNQUFLO1FBQ04sTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLE9BQU87QUFDSCxZQUFBLElBQUksT0FBTyxHQUFBO2dCQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQzthQUN0QjtBQUNELFlBQUEsT0FBTyxFQUFFLENBQUMsRUFBbUIsRUFBRSxHQUFXLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUM1RSxZQUFBLFNBQVMsRUFBRSxDQUFDLEtBQWEsS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7U0FDOUQsQ0FBQztLQUNMLEdBQUcsQ0FBQzs7Ozs7SUFPRSxTQUFTLENBQUMsS0FBYyxFQUFFLFVBQW1CLEVBQUE7QUFDaEQsUUFBQSxJQUFJLE1BQU0sQ0FBQztRQUNYLElBQUk7WUFDQSxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO0FBQUUsZ0JBQUEsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7O2dCQUMxRCxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbkQsU0FBQTtBQUFDLFFBQUEsT0FBTyxFQUFFLEVBQUU7QUFDVCxZQUFBLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLEVBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUNsRSxTQUFBO1FBRUQsT0FBTyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUM7QUFDckQsYUFBQSxHQUFHLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxQyxhQUFBLFdBQVcsRUFBRSxDQUFDO0tBQ3RCOztJQUdNLElBQUksQ0FBQyxJQUFtQixFQUFFLFVBQW1CLEVBQUE7QUFDaEQsUUFBQSxJQUFJLEVBQUUsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3JELE1BQU0sS0FBSyxDQUFDLGlFQUFpRSxHQUFHLE9BQU8sSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ3RHLFNBQUE7QUFFRCxRQUFBLElBQUksT0FBTyxHQUFHLElBQUksWUFBWSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDdEQsUUFBQSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ3RGLFFBQUEsSUFBSSxDQUFDLFFBQVE7QUFBRSxZQUFBLE9BQU8sU0FBUyxDQUFDO0FBRWhDLFFBQUEsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyRCxRQUFBLElBQUksQ0FBQyxVQUFVO0FBQUUsWUFBQSxPQUFPLFNBQVMsQ0FBQztBQUVsQyxRQUFBLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBQ2hFOztJQUdNLEtBQUssQ0FBQyxLQUFjLEVBQUUsVUFBbUIsRUFBQTtBQUM1QyxRQUFBLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBRztZQUNqRCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNuQyxPQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUM1QixTQUFDLENBQUMsQ0FBQztLQUNOOztBQUdPLElBQUEsY0FBYyxDQUFDLFVBQXlCLEVBQUE7O0FBRTVDLFFBQUEsS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ3RELFlBQUEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztBQUFHLGdCQUFBLFVBQVUsQ0FBQyxJQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBTSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZHLFNBQUE7QUFFRCxRQUFBLE9BQU8sVUFBVSxDQUFDO0tBQ3JCOzs7O0FBTUQ7OztBQUdHO0FBQ0ksSUFBQSxLQUFLLENBQUMsR0FBWSxFQUFBO0FBQ3JCLFFBQUEsSUFBSSxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQztBQUFFLFlBQUEsT0FBTyxHQUFHLENBQUM7QUFDM0MsUUFBQSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQUUsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbEUsUUFBQSxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDL0M7O0FBR00sSUFBQSxPQUFPLENBQUMsR0FBWSxFQUFBO0FBQ3ZCLFFBQUEsT0FBTyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDM0Q7O0FBR00sSUFBQSxXQUFXLENBQUMsR0FBWSxFQUFBO0FBQzNCLFFBQUEsT0FBTyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ3JDOztBQUdNLElBQUEsUUFBUSxDQUFDLElBQVksRUFBRSxLQUFpQixHQUFBLEtBQUssRUFBRSxPQUFnQixFQUFBO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQzFDOztJQUdNLFdBQVcsQ0FBQyxJQUFZLEVBQUUsT0FBZSxFQUFFLEtBQWlCLEdBQUEsS0FBSyxFQUFFLE9BQWdCLEVBQUE7QUFDdEYsUUFBQSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDckQ7O0lBR00sU0FBUyxDQUFDLElBQVksRUFBRSxPQUFlLEVBQUUsS0FBaUIsR0FBQSxLQUFLLEVBQUUsT0FBZ0IsRUFBQTtBQUNwRixRQUFBLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztLQUNwRDs7QUFHTSxJQUFBLElBQUksQ0FBQyxRQUFrQyxFQUFBO1FBQzFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFvQixDQUFDO0tBQ3REOztBQUdNLElBQUEsUUFBUSxDQUFDLEdBQXNCLEVBQUE7UUFDbEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQW9CLENBQUM7S0FDaEQ7O0FBR00sSUFBQSxLQUFLLENBQUMsS0FBYSxFQUFBO1FBQ3RCLElBQUksR0FBRyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLElBQUksR0FBRyxDQUFDLE1BQU07WUFBRSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUM7O0FBQzVCLFlBQUEsT0FBTyxLQUFLLENBQUM7S0FDckI7O0FBR00sSUFBQSxPQUFPLENBQUMsS0FBVSxFQUFBO0FBQ3JCLFFBQUEsT0FBTyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNsQzs7QUFHTSxJQUFBLEtBQUssQ0FBQyxLQUFjLEVBQUE7QUFDdkIsUUFBQSxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDakM7QUFFRDs7O0FBR0c7SUFDSSxPQUFPLENBQUMsQ0FBTSxFQUFFLENBQU0sRUFBQTtBQUN6QixRQUFBLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDbEY7O0lBR00sS0FBSyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUE7UUFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDbEM7Ozs7QUFNRDs7Ozs7Ozs7OztBQVVHO0FBQ0ksSUFBQSxNQUFNLEtBQUssQ0FDZCxNQUFzQixFQUN0QixVQUFtQixFQUNuQixRQUEyQixFQUFBO1FBRTNCLE1BQU0sS0FBSyxHQUFHLE9BQU8sTUFBTSxLQUFLLFFBQVEsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBZ0IsTUFBTSxDQUFDLENBQUM7UUFDdEcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVO0FBQUUsWUFBQSxPQUFPLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUUzQyxRQUFBLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ2xDLFFBQVEsTUFBTSxDQUFDLElBQUk7QUFDZixZQUFBLEtBQUssVUFBVTtnQkFDWCxNQUFNLElBQUksR0FBRyxNQUFNLGVBQWUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzdGLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtBQUFFLG9CQUFBLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBRXpDLGdCQUFBLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUN6RSxZQUFBLEtBQUssTUFBTTtnQkFDUCxNQUFNLEtBQUssR0FBRyxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzFGLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVTtBQUFFLG9CQUFBLE9BQU8sS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0FBRTNDLGdCQUFBLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUN2RSxZQUFBLEtBQUssTUFBTTtBQUNQLGdCQUFBLElBQUksUUFBUSxFQUFFLE9BQU8sS0FBSyxTQUFTO0FBQUUsb0JBQUEsTUFBTSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO2dCQUV0RSxNQUFNLElBQUksR0FBRyxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3pGLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtBQUFFLG9CQUFBLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDOzs7Z0JBS3pDLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQztBQUNsQixvQkFBQSxJQUFJLEVBQUUsTUFBTTtBQUNaLG9CQUFBLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7QUFDdkIsb0JBQUEsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYztBQUM1QyxpQkFBQSxDQUFDLENBQUM7QUFDUCxZQUFBLEtBQUssT0FBTztBQUNSLGdCQUFBLElBQUksUUFBUSxFQUFFLE9BQU8sS0FBSyxTQUFTO0FBQUUsb0JBQUEsTUFBTSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO2dCQUV0RSxNQUFNLElBQUksR0FBRyxNQUFNLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzFGLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtBQUFFLG9CQUFBLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUV6QyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFDbEIsb0JBQUEsSUFBSSxFQUFFLE9BQU87QUFDYixvQkFBQSxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJO0FBQ3ZCLG9CQUFBLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUs7QUFDekIsb0JBQUEsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUztBQUNsQyxpQkFBQSxDQUFDLENBQUM7QUFDVixTQUFBO0tBQ0o7O0FBR00sSUFBQSxNQUFNLFFBQVEsQ0FBQyxNQUFjLEVBQUUsVUFBbUIsRUFBRSxRQUEyQixFQUFBO0FBQ2xGLFFBQUEsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDO0tBQ3pFOztBQUdNLElBQUEsTUFBTSxhQUFhLENBQ3RCLE1BQXNCLEVBQ3RCLFVBQW1CLEVBQ25CLFFBQXFELEVBQUE7QUFFckQsUUFBQSxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVU7QUFBRSxZQUFBLE9BQU8sTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0FBRTdDLFFBQUEsUUFBUSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUk7QUFDckIsWUFBQSxLQUFLLE1BQU07QUFDUCxnQkFBQSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQzVFLFlBQUEsS0FBSyxPQUFPO2dCQUNSLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDbkcsWUFBQSxLQUFLLE1BQU07QUFDUCxnQkFBQSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDaEYsWUFBQSxLQUFLLFVBQVU7QUFDWCxnQkFBQSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsNkNBQTZDLENBQUMsQ0FBQztBQUM1RSxTQUFBO0tBQ0o7O0FBR00sSUFBQSxNQUFNLGdCQUFnQixDQUN6QixNQUFzQixFQUN0QixVQUFtQixFQUNuQixRQUFxRCxFQUFBO0FBRXJELFFBQUEsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDO0tBQ2pGO0FBRUQ7Ozs7Ozs7Ozs7OztBQVlHO0FBQ0ksSUFBQSxRQUFRLENBQUMsVUFBa0IsRUFBRSxPQUFvQixFQUFFLFVBQW1CLEVBQUE7UUFDekUsSUFBSSxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQUUsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLCtCQUErQixVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztRQUV2RixJQUFJLGlCQUFpQixHQUFHLFVBQVU7QUFDOUIsY0FBRSxJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDeEUsY0FBRSxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFFN0IsT0FBTyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztLQUMzRDs7QUFHTSxJQUFBLFdBQVcsQ0FBQyxVQUFrQixFQUFFLE9BQW9CLEVBQUUsVUFBbUIsRUFBQTtBQUM1RSxRQUFBLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0tBQ3ZFOztJQUdNLGNBQWMsQ0FBQyxVQUFrQixFQUFFLE1BQWMsRUFBQTtRQUNwRCxJQUFJLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU07WUFBRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsK0JBQStCLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBRXZGLFFBQUEsT0FBTyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDeEU7Ozs7QUFNRDs7Ozs7OztBQU9HO0lBQ0ksTUFBTSxPQUFPLENBQ2hCLE1BQWMsRUFDZCxTQUFzQixFQUN0QixTQUFtRCxFQUNuRCxRQUFnQixFQUFBO0FBRWhCLFFBQUEsSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUM5QixZQUFBLGVBQWUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDbkMsT0FBTztBQUNWLFNBQUE7QUFFRCxRQUFBLElBQUksVUFBVSxHQUFHLGNBQWMsQ0FBQyxNQUFNLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDOztBQUcxRCxRQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFO1lBQ3hCLGNBQWMsQ0FBQyxTQUFTLEVBQUUsWUFBWSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRCxPQUFPO0FBQ1YsU0FBQTtBQUVELFFBQUEsSUFBSSxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUM3QixJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBQ3BGLFFBQUEsSUFBSSxjQUFjLENBQUM7QUFDbkIsUUFBQSxRQUFRLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSTtBQUNyQixZQUFBLEtBQUssTUFBTTtnQkFDUCxjQUFjLEdBQUcsY0FBYyxDQUFDLElBQUksRUFBRSxLQUFjLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDaEUsZ0JBQUEsU0FBUyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDbkMsTUFBTTtBQUNWLFlBQUEsS0FBSyxNQUFNO2dCQUNQLGNBQWMsR0FBRyxjQUFjLENBQUMsSUFBSSxFQUFFLEtBQWMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNoRSxnQkFBQSxTQUFTLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUVuQyxNQUFNO0FBQ1YsWUFBQSxLQUFLLE9BQU87Z0JBQ1IsY0FBYyxHQUFHLGVBQWUsQ0FBQyxJQUFJLEVBQUUsS0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBRWpFLGdCQUFBLFNBQVMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ25DLE1BQU07QUFDVixZQUFBLEtBQUssVUFBVTtnQkFDWCxjQUFjLEdBQUcsSUFBSSx3QkFBd0IsQ0FDekMsS0FBYyxFQUNkLFNBQVMsRUFDVCxJQUFJLENBQUMsS0FBSyxFQUNWLFFBQVEsRUFDUixJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FBQyxHQUFHLENBQ1gsQ0FBQztBQUVGLGdCQUFBLFNBQVMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ25DLE1BQU07QUFDYixTQUFBO1FBQ0QsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0tBQ3pCO0FBRUQ7OztBQUdHO0lBQ0ksTUFBTSxTQUFTLENBQ2xCLElBQVksRUFDWixTQUFzQixFQUN0QixTQUFtRCxFQUNuRCxRQUFnQixFQUFBO0FBRWhCLFFBQUEsSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUM5QixZQUFBLGVBQWUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQy9DLE9BQU87QUFDVixTQUFBO0FBQ0QsUUFBQSxNQUFNLFFBQVEsR0FBRyxJQUFJLGtCQUFrQixDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3pFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNoQixRQUFBLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDaEM7O0lBR00sTUFBTSxJQUFJLENBQ2IsTUFBMEMsRUFDMUMsU0FBc0IsRUFDdEIsU0FBb0IsRUFDcEIsUUFBZ0IsRUFBQTtBQUVoQixRQUFBLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUNwQixJQUFJLE1BQU0sS0FBSyxTQUFTLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztBQUNuRyxZQUFBLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDOztRQUdoQyxJQUFJLFlBQVksR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzdDLFFBQUEsU0FBUyxDQUFDLFFBQVEsQ0FDZCxtQkFBbUIsQ0FDZixFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsRUFDdEYsTUFBbUIsRUFDbkIsUUFBUSxDQUNYLENBQ0osQ0FBQztLQUNMOztJQUdNLE1BQU0sS0FBSyxDQUNkLE9BQWlCLEVBQ2pCLE1BQTRDLEVBQzVDLFNBQXNCLEVBQ3RCLFNBQW9CLEVBQ3BCLFFBQWdCLEVBQUE7QUFFaEIsUUFBQSxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sR0FBRyxFQUFFLENBQUM7QUFDM0IsUUFBQSxJQUFJLENBQUMsTUFBTTtZQUFFLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDekIsUUFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDO0FBQUUsWUFBQSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzs7UUFHOUYsSUFBSSxZQUFZLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3QyxRQUFBLFNBQVMsQ0FBQyxRQUFRLENBQ2Qsb0JBQW9CLENBQ2hCLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxFQUN0RixPQUFPLEVBQ1AsTUFBcUIsRUFDckIsUUFBUSxDQUNYLENBQ0osQ0FBQztLQUNMOztBQUdNLElBQUEsTUFBTSxRQUFRLENBQ2pCLEtBQTBCLEVBQzFCLFdBQUEsR0FBdUIsSUFBSSxFQUMzQixTQUFzQixFQUN0QixTQUFvQixFQUNwQixXQUFtQixFQUFFLEVBQUE7QUFFckIsUUFBQSxJQUFJLFlBQVksR0FDWixDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQzs7UUFHNUcsSUFBSSxhQUFhLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5QyxRQUFBLFNBQVMsQ0FBQyxRQUFRLENBQ2QsbUJBQW1CLENBQ2YsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLEVBQ3ZGLFlBQW1DLEVBQ25DLFFBQVEsQ0FDWCxDQUNKLENBQUM7S0FDTDs7QUFHTSxJQUFBLE1BQU0sV0FBVyxDQUNwQixLQUFVLEVBQ1YsU0FBc0IsRUFDdEIsU0FBb0IsRUFDcEIsUUFBZ0IsRUFDaEIsTUFBQSxHQUFrQixLQUFLLEVBQUE7UUFFdkIsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFnQixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDekc7Ozs7O0FBT00sSUFBQSxhQUFhLENBQ2hCLE9BQTZCLEVBQzdCLE1BQTRDLEVBQzVDLFFBQWtDLEVBQUE7QUFFbEMsUUFBQSxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sR0FBRyxFQUFFLENBQUM7QUFDM0IsUUFBQSxJQUFJLENBQUMsTUFBTTtZQUFFLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFFekIsUUFBQSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzVELE9BQU8sYUFBYSxDQUFDLE9BQU8sRUFBRSxNQUFpQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0tBQzlEOztJQUdNLFlBQVksQ0FBQyxNQUEwQyxFQUFFLFFBQWtDLEVBQUE7QUFDOUYsUUFBQSxJQUFJLENBQUMsTUFBTTtZQUFFLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFFekIsUUFBQSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzVELFFBQUEsT0FBTyxZQUFZLENBQUMsTUFBZSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0tBQ2xEOztJQUdNLGdCQUFnQixDQUFDLE1BQTJCLEVBQUUsUUFBa0MsRUFBQTtBQUNuRixRQUFBLElBQUksQ0FBQyxNQUFNO1lBQUUsTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUV6QixRQUFBLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsQyxRQUFBLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDNUQsUUFBQSxPQUFPLGdCQUFnQixDQUFDLE1BQWUsRUFBRSxRQUFRLENBQUMsQ0FBQztLQUN0RDtBQUNKLENBQUE7QUEyQkQ7QUFDTSxTQUFVLGtCQUFrQixDQUFDLFVBQWtCLEVBQUE7QUFDakQsSUFBQSxJQUFJLENBQUMsVUFBVTtBQUFFLFFBQUEsT0FBTyxLQUFLLENBQUM7SUFFOUIsSUFBSSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25ELElBQUksZ0JBQWdCLElBQUksQ0FBQyxDQUFDO0FBQUUsUUFBQSxPQUFPLEtBQUssQ0FBQztJQUV6QyxPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDMUU7O0FDL2xCQTtBQUNNLE1BQU8sc0JBQXVCLFNBQVEsMkJBQTJCLENBQUE7QUFLeEQsSUFBQSxLQUFBLENBQUE7QUFDQSxJQUFBLFNBQUEsQ0FBQTtBQUNBLElBQUEsU0FBQSxDQUFBO0FBQ0EsSUFBQSxNQUFBLENBQUE7QUFDQSxJQUFBLEtBQUEsQ0FBQTtBQUNBLElBQUEsTUFBQSxDQUFBO0FBQ0EsSUFBQSxRQUFBLENBQUE7QUFDQSxJQUFBLEdBQUEsQ0FBQTs7QUFWWCxJQUFBLFFBQVEsQ0FBZTtBQUV2QixJQUFBLFdBQUEsQ0FDVyxLQUFZLEVBQ1osU0FBaUIsRUFDakIsU0FBc0IsRUFDdEIsTUFBbUIsRUFDbkIsS0FBZ0IsRUFDaEIsTUFBYyxFQUNkLFFBQTBCLEVBQzFCLEdBQVEsRUFBQTtRQUVmLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQVRoQyxJQUFLLENBQUEsS0FBQSxHQUFMLEtBQUssQ0FBTztRQUNaLElBQVMsQ0FBQSxTQUFBLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLElBQVMsQ0FBQSxTQUFBLEdBQVQsU0FBUyxDQUFhO1FBQ3RCLElBQU0sQ0FBQSxNQUFBLEdBQU4sTUFBTSxDQUFhO1FBQ25CLElBQUssQ0FBQSxLQUFBLEdBQUwsS0FBSyxDQUFXO1FBQ2hCLElBQU0sQ0FBQSxNQUFBLEdBQU4sTUFBTSxDQUFRO1FBQ2QsSUFBUSxDQUFBLFFBQUEsR0FBUixRQUFRLENBQWtCO1FBQzFCLElBQUcsQ0FBQSxHQUFBLEdBQUgsR0FBRyxDQUFLO0tBR2xCO0FBRUQsSUFBQSxNQUFNLE1BQU0sR0FBQTtBQUNSLFFBQUEsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUN4QixJQUFJLE1BQU0sR0FBRyxjQUFjLENBQUMsTUFBTSxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDckcsUUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRTtZQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9DLFlBQUEsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsOEJBQThCLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzFHLFNBQUE7QUFBTSxhQUFBO1lBQ0gsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxFQUFFLHVCQUF1QixDQUFDLENBQUMsQ0FBQztZQUN2RCxNQUFNLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFekYsWUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqQyxTQUFBO0tBQ0o7QUFDSjs7QUNsQ0Q7QUFDTyxlQUFlLG1CQUFtQixDQUFDLEdBQWlDLEVBQUUsSUFBa0IsRUFBQTtJQUMzRixJQUFJLFlBQVksR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2pFLElBQUEsSUFBSSxZQUFZLENBQUMsTUFBTSxJQUFJLENBQUM7UUFBRSxPQUFPO0FBRXJDLElBQUEsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxDQUFDO0lBQ3RELElBQUksb0JBQW9CLEdBQXlCLElBQUksQ0FBQztBQUN0RCxJQUFBLElBQUksSUFBSSxFQUFFO0FBQ04sUUFBQSxvQkFBb0IsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwRCxLQUFBO0lBRUQsSUFBSSxTQUFTLEdBQUcsSUFBSW1ELDRCQUFtQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN4RCxJQUFBLEdBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7O0FBR3hCLElBQUEsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7QUFDdEMsSUFBQSxLQUFLLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDL0MsUUFBQSxJQUFJLEtBQUssR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsSUFBSSxlQUFlLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRCxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7O0FBR3pELFFBQUEsSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLEdBQUcsRUFBRTtBQUN2QixZQUFBLE1BQU0sR0FBRyxHQUFHLGVBQWUsQ0FBQyxVQUFVLENBQUM7QUFDbkMsZ0JBQUEsR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFFLGtCQUFrQixDQUFDO0FBQ3JDLGdCQUFBLElBQUksRUFBRTtvQkFDRixhQUFhLEVBQUUsS0FBSyxDQUFDLEdBQUc7QUFDeEIsb0JBQUEsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztBQUNyRCxpQkFBQTtBQUNKLGFBQUEsQ0FBQyxDQUFDOztBQUdILFlBQUEsR0FBRyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO1lBRTFCLGVBQWUsQ0FBQyxVQUFVLENBQUM7QUFDdkIsZ0JBQUEsR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFFLG9CQUFvQixDQUFDO0FBQ3ZDLGdCQUFBLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSx3QkFBd0IsR0FBRyxDQUFDLEVBQUU7QUFDN0MsYUFBQSxDQUFDLENBQUM7QUFDTixTQUFBO0FBQU0sYUFBQTtZQUNILGVBQWUsQ0FBQyxVQUFVLENBQUM7QUFDdkIsZ0JBQUEsR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFFLCtCQUErQixDQUFDO0FBQ2xELGdCQUFBLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSx3QkFBd0IsR0FBRyxDQUFDLEVBQUU7QUFDN0MsYUFBQSxDQUFDLENBQUM7QUFDTixTQUFBO1FBRUQsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxlQUFlLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQy9GLEtBQUE7O0lBR0QsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNwRCxJQUFBLFFBQVEsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDOzs7QUFJNUIsSUFBQSxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFFL0QsSUFBQSxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtBQUN0RCxRQUFBLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLHlCQUF5QixHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQzVFLFFBQUEsSUFBSSxDQUFDLEdBQUc7WUFBRSxTQUFTO1FBRW5CLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7QUFFbEYsUUFBQSxJQUFJLFdBQVcsQ0FBQztBQUNoQixRQUFBLElBQUksb0JBQW9CLElBQUksb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUU7WUFDcEYsTUFBTSxtQkFBbUIsR0FBRyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoRixZQUFBLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO2dCQUN0QyxXQUFXLEdBQUcsbUJBQW1CLENBQUM7QUFDckMsYUFBQTtBQUNKLFNBQUE7UUFDRCxJQUFJLFdBQVcsS0FBSyxTQUFTLEVBQUU7WUFDM0IsV0FBVyxHQUFHLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3RCxTQUFBO1FBRURDLEdBQU0sQ0FDRjFDLElBQUMsZUFBZSxDQUFDLFFBQVEsRUFBQyxFQUFBLEtBQUssRUFBRSxPQUFPLEVBQUE7WUFDcENBLEdBQUMsQ0FBQSxHQUFHLElBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVSxFQUFBLENBQUksQ0FDOUMsRUFDM0IsR0FBRyxDQUNOLENBQUM7QUFDTCxLQUFBO0FBQ0w7O0FDdkZBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEyQks7U0FpQlcsd0JBQXdCLENBQUMsU0FBMEIsRUFBRSxTQUFpQixFQUFFLE9BQWUsRUFBQTtBQUNuRyxJQUFBLEtBQUssTUFBTSxLQUFLLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRTtRQUNsQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssQ0FBQyxFQUFFLElBQUksU0FBUyxFQUFFO0FBQ2hELFlBQUEsT0FBTyxJQUFJLENBQUM7QUFDZixTQUFBO0FBQ0osS0FBQTtBQUVELElBQUEsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQztBQUVELE1BQU0sWUFBYSxTQUFRbUQsZUFBVSxDQUFBO0FBRXBCLElBQUEsVUFBQSxDQUFBO0FBQ0EsSUFBQSxRQUFBLENBQUE7QUFDRCxJQUFBLEVBQUEsQ0FBQTtBQUNBLElBQUEsSUFBQSxDQUFBO0FBSlosSUFBQSxXQUFBLENBQ2EsVUFBb0IsRUFDcEIsUUFBZ0IsRUFDakIsRUFBZSxFQUNmLElBQWdCLEVBQUE7QUFFeEIsUUFBQSxLQUFLLEVBQUUsQ0FBQztRQUxDLElBQVUsQ0FBQSxVQUFBLEdBQVYsVUFBVSxDQUFVO1FBQ3BCLElBQVEsQ0FBQSxRQUFBLEdBQVIsUUFBUSxDQUFRO1FBQ2pCLElBQUUsQ0FBQSxFQUFBLEdBQUYsRUFBRSxDQUFhO1FBQ2YsSUFBSSxDQUFBLElBQUEsR0FBSixJQUFJLENBQVk7S0FHM0I7OztBQUlELElBQUEsRUFBRSxDQUFDLEtBQW1CLEVBQUE7QUFDbEIsUUFBQSxJQUFJLEtBQUssQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRTs7QUFFbEMsWUFBQSxLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNsQyxvQkFBQSxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5QixpQkFBQTtBQUFNLHFCQUFBO0FBQ0gsb0JBQUEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDM0IsaUJBQUE7QUFDSixhQUFBO0FBQ0QsWUFBQSxPQUFPLElBQUksQ0FBQztBQUNmLFNBQUE7QUFDRCxRQUFBLE9BQU8sS0FBSyxDQUFDO0tBQ2hCOzs7QUFJRCxJQUFBLEtBQUssQ0FBQyxJQUFnQixFQUFBO1FBQ2xCLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7S0FDbEI7QUFFRDs7OztBQUlHO0FBQ0gsSUFBQSxXQUFXLENBQUMsS0FBeUIsRUFBQTs7QUFFakMsUUFBQSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQzVCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFHLEtBQW9CLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRyxLQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDckcsSUFBSyxLQUFvQixDQUFDLFFBQVEsRUFBRTs7QUFFaEMsZ0JBQUEsSUFBSSxVQUFVLEVBQUU7QUFDWixvQkFBQSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDQyx3QkFBZSxDQUFDLENBQUM7QUFDMUQsb0JBQUEsSUFBSSxNQUFNLEVBQUU7d0JBQ1IsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDcEQscUJBQUE7QUFDSixpQkFBQTtBQUNELGdCQUFBLE9BQU8sS0FBSyxDQUFDO0FBQ2hCLGFBQUE7QUFDSixTQUFBO0FBQ0QsUUFBQSxPQUFPLElBQUksQ0FBQztLQUNmO0FBQ0osQ0FBQTtBQUVELFNBQVMsYUFBYSxDQUFDLEtBQWtCLEVBQUE7SUFDckMsTUFBTSxPQUFPLEdBQWEsRUFBRSxDQUFDO0FBQzdCLElBQUEsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0FBQ3JCLFFBQUEsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUM3QixLQUFBO0FBQ0QsSUFBQSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDakIsUUFBQSxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3pCLEtBQUE7QUFDRCxJQUFBLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRTtBQUN4QixRQUFBLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDaEMsS0FBQTtBQUNELElBQUEsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFO0FBQzVCLFFBQUEsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQ3BDLEtBQUE7QUFDRCxJQUFBLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRTtBQUN0QixRQUFBLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDOUIsS0FBQTtBQUNELElBQUEsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQztBQUVLLFNBQVUsWUFBWSxDQUFDLEdBQVEsRUFBRSxLQUFnQixFQUFFLFFBQTBCLEVBQUUsR0FBZ0IsRUFBQTtJQUNqRyxPQUFPQyxlQUFVLENBQUMsU0FBUyxDQUN2QixNQUFBO0FBQ0ksUUFBQSxXQUFXLENBQWdCO0FBQzNCLFFBQUEsU0FBUyxDQUFZO0FBRXJCLFFBQUEsV0FBQSxDQUFZQyxNQUFnQixFQUFBO0FBQ3hCLFlBQUEsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJbEUsa0JBQVMsRUFBRSxDQUFDO0FBQ2pDLFlBQUEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN0QixZQUFBLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQ2tFLE1BQUksQ0FBQyxJQUFJQyxlQUFVLENBQUMsSUFBSSxDQUFDO1NBQ2pFO0FBRUQsUUFBQSxNQUFNLENBQUMsTUFBa0IsRUFBQTs7WUFFckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDQywrQkFBc0IsQ0FBQyxFQUFFO0FBQzdDLGdCQUFBLElBQUksQ0FBQyxXQUFXLEdBQUdELGVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQ25DLE9BQU87QUFDVixhQUFBO1lBQ0QsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFO0FBQ25CLGdCQUFBLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3hELGdCQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hDLGFBQUE7aUJBQU0sSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFO0FBQzVCLGdCQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hDLGFBQUE7QUFBTSxpQkFBQSxJQUFJLE1BQU0sQ0FBQyxlQUFlLDZCQUE2QjtBQUMxRCxnQkFBQSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJQSxlQUFVLENBQUMsSUFBSSxDQUFDO0FBQ3hFLGFBQUE7U0FDSjtBQUVELFFBQUEsVUFBVSxDQUFDLElBQWdCLEVBQUE7WUFDdkIsS0FBSyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7QUFDM0MsZ0JBQUFFLG1CQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQztvQkFDM0IsSUFBSTtvQkFDSixFQUFFO0FBQ0Ysb0JBQUEsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSTtBQUNoQix3QkFBQSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3hELHdCQUFBLElBQUksQ0FBQyxNQUFNLElBQUksT0FBTyxFQUFFO0FBQ3BCLDRCQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7NEJBQ3RCLE9BQU87QUFDVix5QkFBQTs2QkFBTSxJQUFJLENBQUMsTUFBTSxFQUFFOzRCQUNoQixPQUFPO0FBQ1YseUJBQUE7QUFBTSw2QkFBQSxJQUFJLE1BQU0sRUFBRTtBQUNmLDRCQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzVCLHlCQUFBO3FCQUNKO0FBQ0osaUJBQUEsQ0FBQyxDQUFDO0FBQ04sYUFBQTtTQUNKO0FBRUQsUUFBQSxVQUFVLENBQUMsSUFBZ0IsRUFBQTtZQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxLQUFJO2dCQUNyRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO0FBQ3ZDLG9CQUFBLFVBQVUsRUFBRSxJQUFJO0FBQ2hCLG9CQUFBLFFBQVEsRUFBRSxFQUFFO29CQUNaLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxLQUFLLEtBQUs7QUFDckMsaUJBQUEsQ0FBQyxDQUFDO0FBQ1AsYUFBQyxDQUFDLENBQUM7U0FDTjtRQUVELE9BQU8sQ0FBQyxJQUFnQixFQUFFLElBQWdCLEVBQUE7QUFDdEMsWUFBQSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUMzQixZQUFBLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZCLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztBQUNuQixZQUFBLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssS0FBSTtnQkFDbkQsTUFBTSxHQUFHLElBQUksQ0FBQztBQUNsQixhQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDVDs7Ozs7QUFLRztBQUNILGdCQUFBLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDTCx3QkFBZSxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQzNELGdCQUFBLElBQUksQ0FBQyxXQUFXO29CQUFFLE9BQU87QUFDekIsZ0JBQUEsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxFQUFFLEtBQUssQ0FBQztBQUNsRSxnQkFBQSxJQUFJLE9BQU8sRUFBRTtvQkFDVCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO0FBQ3ZDLHdCQUFBLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUNoRCxxQkFBQSxDQUFDLENBQUM7QUFDTixpQkFBQTtBQUNKLGFBQUE7U0FDSjs7UUFHRCxVQUFVLENBQUMsSUFBZ0IsRUFBRSxJQUFnQixFQUFBO0FBQ3pDLFlBQUEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQzs7WUFFdkIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBU00sMkJBQWtCLENBQUMsQ0FBQztBQUN6RCxZQUFBLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5QyxZQUFBLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUU7O0FBRXRELGdCQUFBLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDeEIsZ0JBQUEsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQzs7O0FBR3BCLGdCQUFBLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO0FBQ3ZDLGdCQUFBLElBQUksd0JBQXdCLENBQUMsU0FBUyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFO29CQUN6RCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRTt3QkFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO0FBQzNDLHFCQUFBO0FBQU0seUJBQUE7d0JBQ0gsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQzVDLHFCQUFBO0FBQ0osaUJBQUE7cUJBQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7b0JBQzdDLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUMxQyxpQkFBQTtBQUNKLGFBQUE7WUFDRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7U0FDNUM7QUFFRCxRQUFBLGFBQWEsQ0FBQyxJQUFnQixFQUFFLEtBQWEsRUFBRSxHQUFXLEVBQUE7QUFDdEQsWUFBQSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3BELFlBQUEsTUFBTSxhQUFhLEdBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQ2pHLFlBQUEsT0FBTyxhQUFhLENBQUM7U0FDeEI7QUFFRCxRQUFBLFlBQVksQ0FBQ0osTUFBZ0IsRUFBQTs7WUFFekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXO2dCQUFFLE9BQU87QUFDL0IsWUFBQSxNQUFNLFdBQVcsR0FBR0EsTUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUNGLHdCQUFlLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDM0QsWUFBQSxJQUFJLENBQUMsV0FBVztnQkFBRSxPQUFPO1lBRXpCLE1BQU0sT0FBTyxHQUF3QixFQUFFLENBQUM7QUFDeEM7Ozs7OztBQU1HO1lBRUgsS0FBSyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJRSxNQUFJLENBQUMsYUFBYSxFQUFFO0FBQzNDLGdCQUFBRyxtQkFBVSxDQUFDSCxNQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDO29CQUMzQixJQUFJO29CQUNKLEVBQUU7QUFDRixvQkFBQSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFJO3dCQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQ0EsTUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU07NEJBQUUsT0FBTztBQUNoRCx3QkFBQSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRUEsTUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQzFELHdCQUFBLElBQUksTUFBTSxFQUFFO0FBQ1IsNEJBQUEsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4Qix5QkFBQTtxQkFDSjtBQUNKLGlCQUFBLENBQUMsQ0FBQztBQUNOLGFBQUE7WUFFRCxPQUFPQyxlQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN4QztBQUVELFFBQUEsWUFBWSxDQUFDLElBQWdCLEVBQUVELE1BQWdCLEVBQUUsV0FBa0IsRUFBQTtBQUMvRCxZQUFBLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7O0FBRXZCLFlBQUEsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztBQUN4QixZQUFBLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7O0FBRXBCLFlBQUEsSUFBSUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUNuRCxPQUFPO0FBQ1YsYUFBQTtBQUNELFlBQUEsTUFBTSxJQUFJLEdBQUdBLE1BQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDcEQsSUFBSSxJQUFJLEdBQVcsRUFBRSxDQUFDO1lBQ3RCLElBQUksTUFBTSxHQUFZLEVBQUUsQ0FBQztZQUN6QixNQUFNLFFBQVEsR0FBVyxvQ0FBb0MsQ0FBQztZQUM5RCxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUM7QUFDbEIsZ0JBQUEsR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFFLGlCQUFpQixDQUFDO0FBQ3ZDLGFBQUEsQ0FBQyxDQUFDO0FBQ0g7Ozs7QUFJRztZQUNILElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsRUFBRTtnQkFDN0MsSUFBSSxRQUFRLENBQUMsb0JBQW9CLEVBQUU7QUFDL0Isb0JBQUEsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2hFLG9CQUFBLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxNQUFNLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3JELG9CQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFO3dCQUNuQixNQUFNLEdBQUcsMkJBQTJCLElBQUksQ0FBQSxJQUFBLEVBQU8sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzdELHdCQUFBLEVBQUUsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO0FBQ3pCLHFCQUFBO0FBQU0seUJBQUE7QUFDSCx3QkFBQSxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO3dCQUMvQixNQUFNLGtCQUFrQixHQUFHLGNBQWMsQ0FBQyxNQUN0QyxhQUFhLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUMvRCxDQUFDO0FBQ0Ysd0JBQUEsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRTs0QkFDaEMsTUFBTSxHQUFHLCtCQUErQixVQUFVLENBQUEsSUFBQSxFQUFPLGtCQUFrQixDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3BGLDRCQUFBLEVBQUUsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO0FBQ3pCLHlCQUFBO0FBQU0sNkJBQUE7QUFDSCw0QkFBQSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsa0JBQWtCLENBQUM7NEJBQ3JDLE1BQU0sR0FBRyxLQUFLLENBQUM7QUFDZiw0QkFBQSxXQUFXLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzVFLHlCQUFBO0FBQ0oscUJBQUE7QUFDSixpQkFBQTtBQUFNLHFCQUFBO29CQUNILE1BQU0sR0FBRyxnQ0FBZ0MsQ0FBQztBQUMxQyxvQkFBQSxFQUFFLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztBQUN6QixpQkFBQTtBQUNKLGFBQUE7aUJBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO2dCQUN0RCxJQUFJLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRTtBQUNqQyxvQkFBQSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ2xFLElBQUk7O0FBRUEsd0JBQUEsTUFBTSxJQUFJLEdBQUcsU0FBUyxFQUFFLENBQUM7QUFDekIsd0JBQUEsTUFBTSxXQUFXLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZGLHdCQUFBLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUN2Qiw0QkFBQSxhQUFhLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxHQUFHLElBQUksR0FBRyxPQUFPLENBQWtCLENBQUMsSUFBSSxDQUMvRSxDQUFDLE1BQVcsS0FBSTtBQUNaLGdDQUFBLFdBQVcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDN0UsNkJBQUMsQ0FDSixDQUFDO0FBQ0wseUJBQUE7QUFBTSw2QkFBQTtBQUNILDRCQUFBLE1BQU0sR0FBRyxhQUFhLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ3hDLDRCQUFBLFdBQVcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDNUUseUJBQUE7d0JBRUQsU0FBUyxhQUFhLENBQUMsTUFBYyxFQUFBOzRCQUNqQyxPQUFPLFlBQUE7QUFDSCxnQ0FBQSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4Qiw2QkFBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzt5QkFDdkI7QUFDSixxQkFBQTtBQUFDLG9CQUFBLE9BQU8sQ0FBQyxFQUFFO0FBQ1Isd0JBQUEsTUFBTSxHQUFHLENBQWtDLCtCQUFBLEVBQUEsSUFBSSxDQUFPLElBQUEsRUFBQSxDQUFDLEVBQUUsQ0FBQztBQUMxRCx3QkFBQSxFQUFFLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztBQUN6QixxQkFBQTtBQUNKLGlCQUFBO0FBQU0scUJBQUE7b0JBQ0gsTUFBTSxHQUFHLGdDQUFnQyxDQUFDO0FBQzFDLG9CQUFBLEVBQUUsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO0FBQ3pCLGlCQUFBO0FBQ0osYUFBQTtBQUFNLGlCQUFBO2dCQUNILE9BQU87QUFDVixhQUFBO1lBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBU0ksMkJBQWtCLENBQUMsQ0FBQztBQUN6RCxZQUFBLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5QyxZQUFBLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUVyQyxPQUFPSCxlQUFVLENBQUMsT0FBTyxDQUFDO2dCQUN0QixNQUFNLEVBQUUsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUVELE1BQUksQ0FBQztBQUNqRCxnQkFBQSxTQUFTLEVBQUUsS0FBSztBQUNoQixnQkFBQSxLQUFLLEVBQUUsS0FBSzthQUNmLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDaEM7UUFFRCxPQUFPLEdBQUE7QUFDSCxZQUFBLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDM0I7QUFDSixLQUFBLEVBQ0QsRUFBRSxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FDdEMsQ0FBQztBQUNOOztBQ3hXQSxNQUFNLGdCQUFpQixTQUFRSyxnQkFBVSxDQUFBO0FBQ2xCLElBQUEsS0FBQSxDQUFBO0FBQW5CLElBQUEsV0FBQSxDQUFtQixLQUFrQixFQUFBO0FBQ2pDLFFBQUEsS0FBSyxFQUFFLENBQUM7UUFETyxJQUFLLENBQUEsS0FBQSxHQUFMLEtBQUssQ0FBYTtLQUVwQztBQUVELElBQUEsRUFBRSxDQUFDLEtBQXVCLEVBQUE7UUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztLQUNyRjtBQUNKLENBQUE7QUFFRCxTQUFTLGlCQUFpQixDQUFDQyxPQUFrQixFQUFBO0FBQ3pDLElBQUEsTUFBTSxPQUFPLEdBQUcsSUFBSUMscUJBQWUsRUFBb0IsQ0FBQztBQUN4RCxJQUFBLE1BQU0sSUFBSSxHQUFHSixtQkFBVSxDQUFDRyxPQUFLLENBQUMsQ0FBQztBQUUvQixJQUFBLEtBQUssSUFBSSxVQUFVLEdBQUcsQ0FBQyxFQUFFLFVBQVUsSUFBSUEsT0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUU7UUFDbEUsTUFBTSxJQUFJLEdBQUdBLE9BQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hDLElBQUksaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDVCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxLQUFLLEVBQUUsSUFBSSxJQUFHOztnQkFFVixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7b0JBQzNDLGlCQUFpQixHQUFHLElBQUksQ0FBQztBQUM1QixpQkFBQTtBQUNELGdCQUFBLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUM7YUFDbEM7QUFDSixTQUFBLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUNwQixNQUFNLFlBQVksR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEQsWUFBQSxLQUFLLE1BQU0sS0FBSyxJQUFJLFlBQVksRUFBRTtnQkFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUM1RixhQUFBO0FBQ0osU0FBQTtBQUNKLEtBQUE7QUFDRCxJQUFBLE9BQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQzVCLENBQUM7QUFFRDtBQUNPLE1BQU0saUJBQWlCLEdBQUdFLGdCQUFVLENBQUMsTUFBTSxDQUE2QjtBQUMzRSxJQUFBLE1BQU0sRUFBRSxpQkFBaUI7SUFDekIsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUE7QUFDaEIsUUFBQSxPQUFPLEVBQUUsQ0FBQyxVQUFVLEdBQUcsaUJBQWlCLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLFNBQVMsQ0FBQztLQUNsRTtBQUNKLENBQUEsQ0FBQyxDQUFDO0FBRUg7QUFDTyxNQUFNLGdDQUFnQyxHQUFHLENBQUMsR0FBUSxFQUFFLFFBQTBCLEtBQ2pGVCxlQUFVLENBQUMsU0FBUyxDQUNoQixNQUFBO0FBQ0ksSUFBQSxXQUFXLENBQWdCO0FBQzNCLElBQUEsU0FBUyxDQUFZO0FBRXJCLElBQUEsV0FBQSxDQUFZLElBQWdCLEVBQUE7QUFDeEIsUUFBQSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUlqRSxrQkFBUyxFQUFFLENBQUM7QUFDakMsUUFBQSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xEO0lBRUQsT0FBTyxHQUFBO0FBQ0gsUUFBQSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQzNCO0FBRUQsSUFBQSxnQkFBZ0IsQ0FBQ2tFLE1BQWdCLEVBQUE7O1FBRTdCLElBQUksQ0FBQ0EsTUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUNFLCtCQUFzQixDQUFDO1lBQUUsT0FBT0QsZUFBVSxDQUFDLElBQUksQ0FBQztBQUV0RSxRQUFBLE1BQU0sSUFBSSxHQUFHRCxNQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQ0Ysd0JBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNwRCxRQUFBLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBT0csZUFBVSxDQUFDLElBQUksQ0FBQztRQUVsQyxNQUFNLElBQUksR0FBR0QsTUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUNqRCxRQUFBLE1BQU0sT0FBTyxHQUFHLElBQUlPLHFCQUFlLEVBQWMsQ0FBQztBQUNsRCxRQUFBLE1BQU0sU0FBUyxHQUFHUCxNQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUV2QyxLQUFLLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUlBLE1BQUksQ0FBQyxhQUFhLEVBQUU7QUFDM0MsWUFBQSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUk7O2dCQUU3QyxJQUFJLENBQUMsd0JBQXdCLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRTtvQkFDbEQsT0FBTyxDQUFDLEdBQUcsQ0FDUCxLQUFLLEVBQ0wsR0FBRyxFQUNIQyxlQUFVLENBQUMsT0FBTyxDQUFDO0FBQ2Ysd0JBQUEsTUFBTSxFQUFFLElBQUksaUJBQWlCLENBQ3pCLEdBQUcsRUFDSCxLQUFLLEVBQ0wsSUFBSSxDQUFDLElBQUksRUFDVCxJQUFJLENBQUMsU0FBUyxFQUNkLFFBQVEsRUFDUkQsTUFBSSxDQUNQO0FBQ0oscUJBQUEsQ0FBQyxDQUNMLENBQUM7QUFDTCxpQkFBQTtBQUNMLGFBQUMsQ0FBQyxDQUFDO0FBQ04sU0FBQTtBQUNELFFBQUEsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7S0FDM0I7QUFFRCxJQUFBLE1BQU0sQ0FBQyxNQUFrQixFQUFBOztRQUVyQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUNFLCtCQUFzQixDQUFDLEVBQUU7QUFDN0MsWUFBQSxJQUFJLENBQUMsV0FBVyxHQUFHRCxlQUFVLENBQUMsSUFBSSxDQUFDO1lBQ25DLE9BQU87QUFDVixTQUFBO0FBRUQsUUFBQSxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQ3RELFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FDN0UsQ0FBQztRQUVGLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRTtBQUNuQixZQUFBLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3hELFlBQUEsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxTQUFBO2FBQU0sSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFO0FBQzVCLFlBQUEsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxTQUFBO0FBQU0sYUFBQSxJQUFJLE1BQU0sQ0FBQyxlQUFlLElBQUksYUFBYSxFQUFFO1lBQ2hELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6RCxTQUFBO0tBQ0o7QUFFRCxJQUFBLGlCQUFpQixDQUFDRCxNQUFnQixFQUFBO0FBQzlCLFFBQUEsTUFBTSxJQUFJLEdBQUdBLE1BQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDRix3QkFBZSxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3BELElBQUksQ0FBQyxJQUFJLEVBQUU7QUFDUCxZQUFBLElBQUksQ0FBQyxXQUFXLEdBQUdHLGVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDbkMsT0FBTztBQUNWLFNBQUE7UUFFRCxNQUFNLFlBQVksR0FBR0QsTUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUN6RCxRQUFBLE1BQU0sU0FBUyxHQUFHQSxNQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUV2QyxLQUFLLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUlBLE1BQUksQ0FBQyxhQUFhLEVBQUU7QUFDM0MsWUFBQSxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUk7Z0JBQ3JELE1BQU0sT0FBTyxHQUFHLHdCQUF3QixDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDaEUsZ0JBQUEsSUFBSSxPQUFPLEVBQUU7QUFDVCxvQkFBQSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDNUIsT0FBTztBQUNWLGlCQUFBO0FBQU0scUJBQUE7QUFDSCxvQkFBQSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRUEsTUFBSSxDQUFDLENBQUM7QUFDL0MsaUJBQUE7QUFDTCxhQUFDLENBQUMsQ0FBQztBQUNOLFNBQUE7S0FDSjtJQUVELFVBQVUsQ0FBQyxLQUFhLEVBQUUsR0FBVyxFQUFBO0FBQ2pDLFFBQUEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUk7WUFDOUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztBQUN2QyxnQkFBQSxVQUFVLEVBQUUsSUFBSTtBQUNoQixnQkFBQSxRQUFRLEVBQUUsRUFBRTtBQUNaLGdCQUFBLE1BQU0sRUFBRSxNQUFNLEtBQUs7QUFDdEIsYUFBQSxDQUFDLENBQUM7QUFDUCxTQUFDLENBQUMsQ0FBQztLQUNOO0lBRUQsT0FBTyxDQUFDLEtBQWEsRUFBRSxHQUFXLEVBQUUsS0FBa0IsRUFBRSxJQUFXLEVBQUVBLE1BQWdCLEVBQUE7UUFDakYsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBSztZQUN0QyxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLFNBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7QUFDdkMsZ0JBQUEsR0FBRyxFQUFFO0FBQ0Qsb0JBQUE7QUFDSSx3QkFBQSxJQUFJLEVBQUUsS0FBSztBQUNYLHdCQUFBLEVBQUUsRUFBRSxHQUFHO0FBQ1Asd0JBQUEsS0FBSyxFQUFFQyxlQUFVLENBQUMsT0FBTyxDQUFDO0FBQ3RCLDRCQUFBLE1BQU0sRUFBRSxJQUFJLGlCQUFpQixDQUN6QixHQUFHLEVBQ0gsS0FBSyxFQUNMLElBQUksQ0FBQyxJQUFJLEVBQ1QsSUFBSSxDQUFDLFNBQVMsRUFDZCxRQUFRLEVBQ1JELE1BQUksQ0FDUDt5QkFDSixDQUFDO0FBQ0wscUJBQUE7QUFDSixpQkFBQTtBQUNKLGFBQUEsQ0FBQyxDQUFDO0FBQ04sU0FBQTtLQUNKO0NBQ0osRUFDRDtBQUNJLElBQUEsV0FBVyxFQUFFLFFBQVEsSUFBSSxRQUFRLENBQUMsV0FBVztBQUNoRCxDQUFBLENBQ0osQ0FBQztBQUVOO0FBQ0EsTUFBTSxpQkFBa0IsU0FBUUgsZUFBVSxDQUFBO0FBRTNCLElBQUEsR0FBQSxDQUFBO0FBQ0EsSUFBQSxLQUFBLENBQUE7QUFDQSxJQUFBLFVBQUEsQ0FBQTtBQUNBLElBQUEsU0FBQSxDQUFBO0FBQ0EsSUFBQSxRQUFBLENBQUE7QUFDQSxJQUFBLElBQUEsQ0FBQTtJQU5YLFdBQ1csQ0FBQSxHQUFRLEVBQ1IsS0FBa0IsRUFDbEIsVUFBa0IsRUFDbEIsU0FBb0IsRUFDcEIsUUFBMEIsRUFDMUIsSUFBZ0IsRUFBQTtBQUV2QixRQUFBLEtBQUssRUFBRSxDQUFDO1FBUEQsSUFBRyxDQUFBLEdBQUEsR0FBSCxHQUFHLENBQUs7UUFDUixJQUFLLENBQUEsS0FBQSxHQUFMLEtBQUssQ0FBYTtRQUNsQixJQUFVLENBQUEsVUFBQSxHQUFWLFVBQVUsQ0FBUTtRQUNsQixJQUFTLENBQUEsU0FBQSxHQUFULFNBQVMsQ0FBVztRQUNwQixJQUFRLENBQUEsUUFBQSxHQUFSLFFBQVEsQ0FBa0I7UUFDMUIsSUFBSSxDQUFBLElBQUEsR0FBSixJQUFJLENBQVk7S0FHMUI7QUFFRCxJQUFBLEVBQUUsQ0FBQyxLQUF3QixFQUFBO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7S0FDckY7SUFFRCxLQUFLLEdBQUE7OztRQUlELE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQztBQUMvQixZQUFBLEdBQUcsRUFBRSxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUM7QUFDcEMsU0FBQSxDQUFDLENBQUM7O0FBR0gsUUFBQSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLEdBQUcsRUFBRTtBQUM1QixZQUFBLE1BQU0sR0FBRyxHQUFHLGVBQWUsQ0FBQyxVQUFVLENBQUM7QUFDbkMsZ0JBQUEsR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFFLGtCQUFrQixDQUFDO0FBQ3JDLGdCQUFBLElBQUksRUFBRTtBQUNGLG9CQUFBLGFBQWEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUc7b0JBQzdCLGtCQUFrQixFQUFFLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO0FBQzFELGlCQUFBO0FBQ0osYUFBQSxDQUFDLENBQUM7WUFFSCxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFNUYsWUFBQSxNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsVUFBVSxDQUFDO0FBQ3JDLGdCQUFBLEdBQUcsRUFBRSxDQUFDLFVBQVUsRUFBRSxvQkFBb0IsQ0FBQztBQUMxQyxhQUFBLENBQUMsQ0FBQztBQUNILFlBQUEsV0FBVyxDQUNQLElBQUksQ0FBQyxHQUFHLEVBQ1IsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFDbEMsS0FBSyxFQUNMLElBQUksQ0FBQyxVQUFVLEVBQ2YsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsUUFBUSxFQUNiLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULElBQUksQ0FDUCxDQUFDO0FBRUYsWUFBQSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBQzlDLFlBQUEsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsQ0FBQztBQUNyRCxTQUFBO0FBQU0sYUFBQTtBQUNILFlBQUEsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLFVBQVUsQ0FBQztBQUNyQyxnQkFBQSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsK0JBQStCLENBQUM7QUFDckQsYUFBQSxDQUFDLENBQUM7QUFDSCxZQUFBLFdBQVcsQ0FDUCxJQUFJLENBQUMsR0FBRyxFQUNSLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQ2xDLEtBQUssRUFDTCxJQUFJLENBQUMsVUFBVSxFQUNmLElBQUksQ0FBQyxTQUFTLEVBQ2QsSUFBSSxDQUFDLFFBQVEsRUFDYixLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxJQUFJLENBQ1AsQ0FBQztBQUNGLFlBQUEsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsQ0FBQztBQUNyRCxTQUFBO0FBRUQsUUFBQSxPQUFPLGVBQWUsQ0FBQztLQUMxQjs7O0lBSUQsa0JBQWtCLENBQUMsR0FBZ0IsRUFBRSxlQUE0QixFQUFBO0FBQzdELFFBQUEsR0FBRyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxLQUFLLElBQUc7WUFDbEMsSUFBSSxLQUFLLFlBQVksVUFBVSxFQUFFO0FBQzdCLGdCQUFBLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0FBQ3pDLGdCQUFBLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDcEQsZ0JBQUEsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdkYsZ0JBQUEsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksV0FBVyxDQUFDLENBQUM7QUFDdkcsZ0JBQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzdELGFBQUE7QUFDTCxTQUFDLENBQUMsQ0FBQztLQUNOO0lBRUQsb0JBQW9CLENBQUMsS0FBa0IsRUFBRSxlQUE0QixFQUFBO0FBQ2pFLFFBQUEsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxLQUFLLElBQUc7WUFDcEMsSUFBSSxLQUFLLFlBQVksVUFBVSxFQUFFO0FBQzdCLGdCQUFBLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0FBQzNDLGdCQUFBLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDcEQsZ0JBQUEsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdkYsZ0JBQUEsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDekIsUUFBUTtxQkFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztBQUMxQyxvQkFBQSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLFdBQVcsQ0FDN0QsQ0FBQztBQUNGLGdCQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM3RCxhQUFBO0FBQ0wsU0FBQyxDQUFDLENBQUM7S0FDTjtBQUNKLENBQUE7QUFFRDs7O0FBR0c7QUFDSSxNQUFNLDJCQUEyQixHQUFHWSxpQkFBVyxDQUFDLE1BQU0sRUFBUTs7QUMxUmhELE1BQUEsY0FBZSxTQUFRQyxlQUFNLENBQUE7O0FBRXZDLElBQUEsUUFBUSxDQUFtQjs7QUFHM0IsSUFBQSxLQUFLLENBQVk7O0FBRWpCLElBQUEsR0FBRyxDQUFjOztBQUdoQixJQUFBLFdBQVcsQ0FBYztBQUVqQyxJQUFBLE1BQU0sTUFBTSxHQUFBOztBQUVSLFFBQUEsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDL0UsUUFBQSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRTNELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FDdEIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLE1BQUs7QUFDbkQsWUFBQSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYztnQkFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUM3RCxDQUFDLENBQ0wsQ0FBQzs7UUFHRixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQzs7UUFHN0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDOztRQUd2RixDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxPQUFPLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDOztBQUd4RixRQUFBLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsT0FBTyxNQUFjLEVBQUUsRUFBRSxFQUFFLEdBQUcsS0FDeEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQ2pELENBQUM7O0FBR0YsUUFBQSxJQUFJLENBQUMsc0NBQXNDLENBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQy9CLENBQUMsR0FBRyxFQUNKLE9BQU8sTUFBYyxFQUFFLEVBQUUsRUFBRSxHQUFHLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQ3RGLENBQUM7O0FBR0YsUUFBQSxJQUFJLENBQUMscUNBQXFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsR0FBRyxLQUFJOztBQUUvRCxZQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQixJQUFJLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7Z0JBQUUsT0FBTztZQUV0RixJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ2pELFNBQUMsQ0FBQyxDQUFDOztRQUdILElBQUksQ0FBQyxxQ0FBcUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsR0FBRyxLQUFJOztBQUU5RCxZQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHdCQUF3QixJQUFJLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7Z0JBQUUsT0FBTzs7WUFHMUYsS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLG1DQUFtQyxDQUFDLEVBQUU7QUFDL0QsZ0JBQUEsTUFBTSxJQUFJLEdBQWlCO29CQUN2QixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7b0JBQ2IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO29CQUNqQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7QUFDdkIsb0JBQUEsU0FBUyxFQUFFLENBQUM7aUJBQ2YsQ0FBQztBQUVGLGdCQUFBLE1BQU0sbUJBQW1CLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3hDLGFBQUE7QUFDTCxTQUFDLENBQUMsQ0FBQzs7QUFHSCxRQUFBLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLFFBQUEsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQzs7UUFHOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQztBQUNaLFlBQUEsRUFBRSxFQUFFLDhCQUE4QjtBQUNsQyxZQUFBLElBQUksRUFBRSxvQ0FBb0M7WUFDMUMsUUFBUSxFQUFFLE1BQUs7QUFDWCxnQkFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO2FBQ3hEO0FBQ0osU0FBQSxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxDQUFDO0FBQ1osWUFBQSxFQUFFLEVBQUUscUJBQXFCO0FBQ3pCLFlBQUEsSUFBSSxFQUFFLCtCQUErQjtZQUNyQyxRQUFRLEVBQUUsTUFBSztBQUNYLGdCQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDN0I7QUFDSixTQUFBLENBQUMsQ0FBQztRQU1ILElBQUksQ0FBQyxVQUFVLENBQUM7QUFDWixZQUFBLEVBQUUsRUFBRSwrQkFBK0I7QUFDbkMsWUFBQSxJQUFJLEVBQUUsc0JBQXNCO1lBQzVCLFFBQVEsRUFBRSxNQUFLO0FBQ1gsZ0JBQUEsTUFBTSxVQUFVLEdBQXdCLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDQyxxQkFBWSxDQUFDLENBQUM7QUFDN0YsZ0JBQUEsSUFBSSxVQUFVLEVBQUU7QUFDWCxvQkFBQSxVQUFVLENBQUMsSUFBNkIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUMzRCxpQkFBQTthQUNKO0FBQ0osU0FBQSxDQUFDLENBQUM7O1FBR0gsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRTtBQUNqQyxZQUFBLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxZQUFZLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztBQUN6RSxTQUFBO0FBQU0sYUFBQTtBQUNILFlBQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUMzQixTQUFBOztBQUdELFFBQUEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvRCxRQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBcUIsa0JBQUEsRUFBQSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQSxvQkFBQSxFQUF1QixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDOztBQUc3RyxRQUFBLElBQUksQ0FBQyxhQUFhLENBQ2QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLGVBQWUsRUFBRSxNQUFLO1lBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLElBQUksSUFBRztBQUN2QyxnQkFBQSxJQUFJLElBQUksQ0FBQyxJQUFJLFlBQVlBLHFCQUFZLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFO29CQUMxRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDO0FBQ3pCLHdCQUFBLE9BQU8sRUFBRSwyQkFBMkIsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQ2hELHFCQUFBLENBQUMsQ0FBQztBQUNOLGlCQUFBO0FBQ0wsYUFBQyxDQUFDLENBQUM7U0FDTixDQUFDLENBQ0wsQ0FBQztLQUNMO0FBRU8sSUFBQSxnQkFBZ0IsR0FBZSxNQUFNLElBQUksQ0FBQztJQUUxQyxxQkFBcUIsR0FBQTtRQUN6QixJQUFJLENBQUMsZ0JBQWdCLEdBQUdDLGlCQUFRLENBQzVCLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLEVBQzFELElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUM3QixJQUFJLENBQ1AsQ0FBQztLQUNMO0lBRU0sUUFBUSxHQUFBO1FBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFxQixrQkFBQSxFQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFZLFVBQUEsQ0FBQSxDQUFDLENBQUM7S0FDdkU7O0lBR00scUNBQXFDLENBQ3hDLFFBQWdCLEVBQ2hCLFNBQWdGLEVBQUE7UUFFaEYsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQy9ELFFBQUEsVUFBVSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7S0FDbkM7O0FBR00sSUFBQSxzQ0FBc0MsQ0FDekMsUUFBZ0IsRUFDaEIsUUFBZ0IsRUFDaEIsU0FBZ0csRUFBQTtRQUVoRyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsa0NBQWtDLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzlFLFFBQUEsVUFBVSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7S0FDbkM7SUFFTSxzQkFBc0IsR0FBQTs7QUFFekIsUUFBQSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7O1FBRTVCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzs7QUFFbkYsUUFBQSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMscUNBQXFDLEVBQUU7QUFDckQsWUFBQSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ3ZHLFNBQUE7QUFDRCxRQUFBLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDO0tBQ3RDO0FBRUQ7OztBQUdHO0lBQ0ksTUFBTSxRQUFRLENBQ2pCLE1BQWMsRUFDZCxFQUFlLEVBQ2YsU0FBbUQsRUFDbkQsVUFBa0IsRUFBQTtBQUVsQixRQUFBLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztBQUM1QixRQUFBLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQ3ZEOztJQUdNLE1BQU0sVUFBVSxDQUNuQixNQUFjLEVBQ2QsRUFBZSxFQUNmLFNBQW1ELEVBQ25ELFVBQWtCLEVBQUE7QUFFbEIsUUFBQSxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7QUFDNUIsUUFBQSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztLQUN6RDs7QUFHTSxJQUFBLE1BQU0sY0FBYyxDQUN2QixFQUFlLEVBQ2YsU0FBbUQsRUFDbkQsVUFBa0IsRUFBQTtRQUVsQixJQUFJLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU87O1FBRzNDLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM3QyxRQUFBLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3BELElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7O1lBR3ZDLElBQ0ksU0FBUyxDQUFDLGFBQWE7Z0JBQ3ZCLFNBQVMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxJQUFJLEtBQUs7QUFDdkQsZ0JBQUEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHlCQUF5QjtnQkFFeEMsU0FBUztZQUViLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdEMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7QUFDcEcsZ0JBQUEsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzNFLGdCQUFBLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDO29CQUFFLFNBQVM7QUFFL0IsZ0JBQUEsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLHdCQUF3QixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUMvRixhQUFBO2lCQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO0FBQ3ZHLGdCQUFBLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNuRixnQkFBQSxJQUFJLGNBQWMsQ0FBQyxNQUFNLElBQUksQ0FBQztvQkFBRSxTQUFTO0FBRXpDLGdCQUFBLElBQUksS0FBSyxHQUFHLGNBQWMsQ0FBQyxNQUFNLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0FBQzdELGdCQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFO29CQUNuQixJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNwQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQTJCLHdCQUFBLEVBQUEsY0FBYyxDQUFPLElBQUEsRUFBQSxLQUFLLENBQUMsS0FBSyxDQUFFLENBQUEsQ0FBQyxDQUFDO0FBQzdGLGlCQUFBO0FBQU0scUJBQUE7QUFDSCxvQkFBQSxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0FBQzdCLG9CQUFBLFNBQVMsQ0FBQyxRQUFRLENBQ2QsSUFBSSxzQkFBc0IsQ0FDdEIsVUFBVSxFQUNWLElBQUksRUFDSixFQUFFLEVBQ0YsU0FBUyxFQUNULElBQUksQ0FBQyxLQUFLLEVBQ1YsVUFBVSxFQUNWLElBQUksQ0FBQyxRQUFRLEVBQ2IsSUFBSSxDQUFDLEdBQUcsQ0FDWCxDQUNKLENBQUM7QUFDTCxpQkFBQTtBQUNKLGFBQUE7QUFDSixTQUFBO0tBQ0o7O0lBR0QsTUFBTSxjQUFjLENBQUMsUUFBbUMsRUFBQTtRQUNwRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUN0Qzs7QUFHTSxJQUFBLE9BQU8sQ0FBQyxRQUFvQyxFQUFBO0FBQy9DLFFBQUEsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUN0QjtBQUVEOzs7QUFHRztBQUNJLElBQUEsUUFBUSxDQUFDLElBQVksRUFBRSxTQUFvQixFQUFFLEVBQWUsRUFBQTtBQUMvRCxRQUFBLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDL0Q7QUFDSixDQUFBO0FBRUQ7QUFDQSxNQUFNLGtCQUFtQixTQUFRQyx5QkFBZ0IsQ0FBQTtBQUNmLElBQUEsTUFBQSxDQUFBO0lBQTlCLFdBQVksQ0FBQSxHQUFRLEVBQVUsTUFBc0IsRUFBQTtBQUNoRCxRQUFBLEtBQUssQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFETyxJQUFNLENBQUEsTUFBQSxHQUFOLE1BQU0sQ0FBZ0I7S0FFbkQ7SUFFTSxPQUFPLEdBQUE7QUFDVixRQUFBLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDekIsUUFBQSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0FBRTlELFFBQUEsSUFBSUMsZ0JBQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ3hCLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQzthQUNoQyxPQUFPLENBQUMsOERBQThELENBQUM7QUFDdkUsYUFBQSxTQUFTLENBQUMsTUFBTSxJQUNiLE1BQU07YUFDRCxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUM7YUFDbkQsUUFBUSxDQUFDLE9BQU0sS0FBSyxLQUFJLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQ2xHLENBQUM7QUFFTixRQUFBLElBQUlBLGdCQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUN4QixPQUFPLENBQUMsMkJBQTJCLENBQUM7YUFDcEMsT0FBTyxDQUFDLGlEQUFpRCxDQUFDO0FBQzFELGFBQUEsU0FBUyxDQUFDLE1BQU0sSUFDYixNQUFNO2FBQ0QsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDO2FBQy9DLFFBQVEsQ0FBQyxPQUFNLEtBQUssS0FBSSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUM5RixDQUFDO0FBRU4sUUFBQSxJQUFJQSxnQkFBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDeEIsT0FBTyxDQUFDLGtDQUFrQyxDQUFDO2FBQzNDLE9BQU8sQ0FDSixzR0FBc0csQ0FDekc7QUFDQSxhQUFBLFNBQVMsQ0FBQyxNQUFNLElBQ2IsTUFBTTthQUNELFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQzthQUNyRCxRQUFRLENBQUMsT0FBTSxLQUFLLEtBQUksTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FDcEcsQ0FBQztBQUVOLFFBQUEsSUFBSUEsZ0JBQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ3hCLE9BQU8sQ0FBQyxrREFBa0QsQ0FBQzthQUMzRCxPQUFPLENBQUMsK0ZBQStGLENBQUM7QUFDeEcsYUFBQSxTQUFTLENBQUMsTUFBTSxJQUNiLE1BQU07YUFDRCxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUM7YUFDdkQsUUFBUSxDQUFDLE9BQU0sS0FBSyxLQUFJLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQ3RHLENBQUM7QUFFTixRQUFBLElBQUlBLGdCQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUN4QixPQUFPLENBQUMsa0RBQWtELENBQUM7YUFDM0QsT0FBTyxDQUFDLCtGQUErRixDQUFDO2FBQ3hHLFNBQVMsQ0FBQyxNQUFNLElBQ2IsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFNLEtBQUssS0FBRztBQUMvRixZQUFBLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxxQ0FBcUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ25GLFlBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQ3hDLENBQUMsQ0FDTCxDQUFDO0FBRU4sUUFBQSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO0FBRWhFLFFBQUEsSUFBSUEsZ0JBQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ3hCLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQzthQUM3QixPQUFPLENBQ0osc0dBQXNHLENBQ3pHO0FBQ0EsYUFBQSxPQUFPLENBQUMsSUFBSSxJQUNULElBQUk7YUFDQyxjQUFjLENBQUMsWUFBWSxDQUFDO2FBQzVCLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztBQUNoRCxhQUFBLFFBQVEsQ0FBQyxPQUFNLEtBQUssS0FBRztBQUNwQixZQUFBLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDO2dCQUFFLE9BQU87QUFDOUIsWUFBQSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNsRSxDQUFDLENBQ1QsQ0FBQztBQUVOLFFBQUEsSUFBSUEsZ0JBQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ3hCLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQzthQUM5QixPQUFPLENBQUMsbUZBQW1GLENBQUM7QUFDNUYsYUFBQSxPQUFPLENBQUMsSUFBSSxJQUNULElBQUk7YUFDQyxjQUFjLENBQUMsR0FBRyxDQUFDO2FBQ25CLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztBQUNoRCxhQUFBLFFBQVEsQ0FBQyxPQUFNLEtBQUssS0FBRztBQUNwQixZQUFBLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDO2dCQUFFLE9BQU87QUFFOUIsWUFBQSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNsRSxDQUFDLENBQ1QsQ0FBQztBQUVOLFFBQUEsSUFBSUEsZ0JBQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ3hCLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FBQzthQUN6QyxPQUFPLENBQUMsaUdBQWlHLENBQUM7QUFDMUcsYUFBQSxPQUFPLENBQUMsSUFBSSxJQUNULElBQUk7YUFDQyxjQUFjLENBQUMsSUFBSSxDQUFDO2FBQ3BCLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQztBQUNsRCxhQUFBLFFBQVEsQ0FBQyxPQUFNLEtBQUssS0FBRztBQUNwQixZQUFBLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDO2dCQUFFLE9BQU87QUFFOUIsWUFBQSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNwRSxDQUFDLENBQ1QsQ0FBQztBQUVOLFFBQUEsSUFBSUEsZ0JBQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ3hCLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQzthQUNuQyxPQUFPLENBQUMsMkVBQTJFLENBQUM7QUFDcEYsYUFBQSxTQUFTLENBQUMsTUFBTSxJQUNiLE1BQU07YUFDRCxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMseUJBQXlCLENBQUM7YUFDeEQsUUFBUSxDQUFDLE9BQU0sS0FBSyxLQUFJLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSx5QkFBeUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQ3ZHLENBQUM7QUFFTixRQUFBLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0FBQzNELFFBQUEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7QUFFckQsUUFBQSxJQUFJQSxnQkFBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDeEIsT0FBTyxDQUFDLHNCQUFzQixDQUFDO2FBQy9CLE9BQU8sQ0FBQyxpR0FBaUcsQ0FBQzthQUMxRyxTQUFTLENBQUMsTUFBTSxJQUNiLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU0sS0FBSyxLQUFHO0FBQ3pFLFlBQUEsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQzdELFlBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDN0IsQ0FBQyxDQUNMLENBQUM7QUFFTixRQUFBLElBQUlBLGdCQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUN4QixPQUFPLENBQUMsc0JBQXNCLENBQUM7YUFDL0IsT0FBTyxDQUFDLHVFQUF1RSxDQUFDO2FBQ2hGLFNBQVMsQ0FBQyxNQUFNLElBQ2IsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFNLEtBQUssS0FBRztBQUMzRSxZQUFBLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQy9ELFlBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDN0IsQ0FBQyxDQUNMLENBQUM7QUFFTixRQUFBLElBQUlBLGdCQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUN4QixPQUFPLENBQUMsZ0JBQWdCLENBQUM7YUFDekIsT0FBTyxDQUFDLGtHQUFrRyxDQUFDO0FBQzNHLGFBQUEsT0FBTyxDQUFDLElBQUksSUFDVCxJQUFJO2FBQ0MsY0FBYyxDQUFDLEdBQUcsQ0FBQzthQUNuQixRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO0FBQzNDLGFBQUEsUUFBUSxDQUFDLE9BQU0sS0FBSyxLQUFHO0FBQ3BCLFlBQUEsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQzFELFlBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDN0IsQ0FBQyxDQUNULENBQUM7QUFFTixRQUFBLElBQUlBLGdCQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUN4QixPQUFPLENBQUMsMkJBQTJCLENBQUM7QUFDcEMsYUFBQSxPQUFPLENBQ0osMEdBQTBHO0FBQ3RHLFlBQUEsZ0dBQWdHLENBQ3ZHO2FBQ0EsU0FBUyxDQUFDLE1BQU0sSUFDYixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFNLEtBQUssS0FBRztBQUN4RSxZQUFBLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUM1RCxZQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzdCLENBQUMsQ0FDTCxDQUFDO0FBRU4sUUFBQSxJQUFJQSxnQkFBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDeEIsT0FBTyxDQUFDLGtCQUFrQixDQUFDO2FBQzNCLE9BQU8sQ0FBQyxzRkFBc0YsQ0FBQztBQUMvRixhQUFBLE9BQU8sQ0FBQyxJQUFJLElBQ1QsSUFBSTthQUNDLGNBQWMsQ0FBQyxLQUFLLENBQUM7YUFDckIsUUFBUSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7QUFDbkQsYUFBQSxRQUFRLENBQUMsT0FBTSxLQUFLLEtBQUc7QUFDcEIsWUFBQSxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0IsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDO2dCQUFFLE9BQU87QUFDMUIsWUFBQSxNQUFNLEdBQUcsTUFBTSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDO0FBQ3JDLFlBQUEsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ2pFLENBQUMsQ0FDVCxDQUFDO1FBRU4sSUFBSSxPQUFPLEdBQUcsSUFBSUEsZ0JBQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ3RDLE9BQU8sQ0FBQyxhQUFhLENBQUM7QUFDdEIsYUFBQSxPQUFPLENBQ0osMERBQTBEO1lBQ3RELGNBQWM7WUFDZCxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FDbkc7QUFDQSxhQUFBLE9BQU8sQ0FBQyxJQUFJLElBQ1QsSUFBSTtBQUNDLGFBQUEsY0FBYyxDQUFDLHNCQUFzQixDQUFDLGlCQUFpQixDQUFDO2FBQ3hELFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztBQUNoRCxhQUFBLFFBQVEsQ0FBQyxPQUFNLEtBQUssS0FBRztZQUNwQixPQUFPLENBQUMsT0FBTyxDQUNYLDBEQUEwRDtnQkFDdEQsY0FBYztBQUNkLGdCQUFBLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FDbEUsQ0FBQztBQUNGLFlBQUEsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFFL0QsWUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUM3QixDQUFDLENBQ1QsQ0FBQztRQUVOLElBQUksUUFBUSxHQUFHLElBQUlBLGdCQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUN2QyxPQUFPLENBQUMsb0JBQW9CLENBQUM7QUFDN0IsYUFBQSxPQUFPLENBQ0osbUVBQW1FO1lBQy9ELGNBQWM7WUFDZCxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FDdkc7QUFDQSxhQUFBLE9BQU8sQ0FBQyxJQUFJLElBQ1QsSUFBSTtBQUNDLGFBQUEsY0FBYyxDQUFDLHNCQUFzQixDQUFDLHFCQUFxQixDQUFDO2FBQzVELFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQztBQUNwRCxhQUFBLFFBQVEsQ0FBQyxPQUFNLEtBQUssS0FBRztZQUNwQixRQUFRLENBQUMsT0FBTyxDQUNaLG1FQUFtRTtnQkFDL0QsY0FBYztBQUNkLGdCQUFBLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FDbEUsQ0FBQztBQUNGLFlBQUEsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLHFCQUFxQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFFbkUsWUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUM3QixDQUFDLENBQ1QsQ0FBQztBQUVOLFFBQUEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztBQUU1RCxRQUFBLElBQUlBLGdCQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUN4QixPQUFPLENBQUMscUJBQXFCLENBQUM7YUFDOUIsT0FBTyxDQUNKLHFIQUFxSCxDQUN4SDtBQUNBLGFBQUEsT0FBTyxDQUFDLElBQUksSUFDVCxJQUFJO2FBQ0MsY0FBYyxDQUFDLE1BQU0sQ0FBQzthQUN0QixRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUM7QUFDaEQsYUFBQSxRQUFRLENBQUMsT0FBTSxLQUFLLEtBQUc7QUFDcEIsWUFBQSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUMvRCxZQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzdCLENBQUMsQ0FDVCxDQUFDO0FBRU4sUUFBQSxJQUFJQSxnQkFBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDeEIsT0FBTyxDQUFDLHFCQUFxQixDQUFDO0FBQzlCLGFBQUEsT0FBTyxDQUNKLHlIQUF5SDtBQUNySCxZQUFBLHNDQUFzQyxDQUM3QztBQUNBLGFBQUEsT0FBTyxDQUFDLElBQUksSUFDVCxJQUFJO2FBQ0MsY0FBYyxDQUFDLE9BQU8sQ0FBQzthQUN2QixRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUM7QUFDbkQsYUFBQSxRQUFRLENBQUMsT0FBTSxLQUFLLEtBQUc7QUFDcEIsWUFBQSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUNsRSxZQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzdCLENBQUMsQ0FDVCxDQUFDO0FBRU4sUUFBQSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUUzRCxJQUFJLGdDQUFnQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDO0FBQ25GLFFBQUEsSUFBSSxzQ0FBc0MsR0FDdEMsZ0NBQWdDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQywrQkFBK0IsQ0FBQztBQUU5RixRQUFBLElBQUlBLGdCQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUN4QixPQUFPLENBQUMsb0NBQW9DLENBQUM7QUFDN0MsYUFBQSxPQUFPLENBQ0osY0FBYyxDQUFDLEVBQUUsSUFBRztBQUNoQixZQUFBLEVBQUUsQ0FBQyxVQUFVLENBQ1QsMEhBQTBILENBQzdILENBQUM7QUFDRixZQUFBLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEIsWUFBQSxFQUFFLENBQUMsVUFBVSxDQUNULDBGQUEwRixDQUM3RixDQUFDO0FBQ04sU0FBQyxDQUFDLENBQ0w7YUFDQSxTQUFTLENBQUMsTUFBTSxJQUNiLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTSxLQUFLLEtBQUc7QUFDaEYsWUFBQSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNwRSxnQ0FBZ0MsR0FBRyxLQUFLLENBQUM7WUFDekMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2xCLENBQUMsQ0FDTCxDQUFDO1FBRU4sSUFBSSxrQkFBa0IsR0FBRyxJQUFJQSxnQkFBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDakQsT0FBTyxDQUFDLG9DQUFvQyxDQUFDO0FBQzdDLGFBQUEsV0FBVyxDQUFDLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztBQUNwRCxRQUFBLElBQUksZ0NBQWdDO1lBQ2hDLGtCQUFrQjtBQUNiLGlCQUFBLE9BQU8sQ0FDSixjQUFjLENBQUMsRUFBRSxJQUFHO0FBQ2hCLGdCQUFBLEVBQUUsQ0FBQyxVQUFVLENBQ1QsdUhBQXVILENBQzFILENBQUM7QUFDRixnQkFBQSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xCLGdCQUFBLEVBQUUsQ0FBQyxVQUFVLENBQUMscUNBQXFDLENBQUMsQ0FBQztBQUNyRCxnQkFBQSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xCLGdCQUFBLEVBQUUsQ0FBQyxVQUFVLENBQ1QsaUhBQWlILENBQ3BILENBQUM7QUFDRixnQkFBQSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xCLGdCQUFBLEVBQUUsQ0FBQyxVQUFVLENBQUMsc0VBQXNFLENBQUMsQ0FBQztBQUMxRixhQUFDLENBQUMsQ0FDTDtpQkFDQSxTQUFTLENBQUMsTUFBTSxJQUNiLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsK0JBQStCLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTSxLQUFLLEtBQUc7QUFDekYsZ0JBQUEsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLCtCQUErQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDN0UsZ0JBQUEsc0NBQXNDLEdBQUcsZ0NBQWdDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ3BGLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNsQixDQUFDLENBQ0wsQ0FBQzs7QUFDTCxZQUFBLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxzRUFBc0UsQ0FBQyxDQUFDO1FBRXhHLElBQUksYUFBYSxHQUFHLElBQUlBLGdCQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUM1QyxPQUFPLENBQUMsdUJBQXVCLENBQUM7QUFDaEMsYUFBQSxXQUFXLENBQUMsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0FBQzFELFFBQUEsSUFBSSxzQ0FBc0M7WUFDdEMsYUFBYTtBQUNSLGlCQUFBLE9BQU8sQ0FDSixjQUFjLENBQUMsRUFBRSxJQUFHO0FBQ2hCLGdCQUFBLEVBQUUsQ0FBQyxVQUFVLENBQ1QsNEdBQTRHLENBQy9HLENBQUM7QUFDRixnQkFBQSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xCLGdCQUFBLEVBQUUsQ0FBQyxVQUFVLENBQ1QsMkhBQTJILENBQzlILENBQUM7QUFDTixhQUFDLENBQUMsQ0FDTDtpQkFDQSxPQUFPLENBQUMsSUFBSSxJQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTSxLQUFLLEtBQUc7QUFDMUUsZ0JBQUEsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7YUFDMUUsQ0FBQyxDQUNMLENBQUM7O0FBRU4sWUFBQSxhQUFhLENBQUMsT0FBTyxDQUNqQiwySEFBMkgsQ0FDOUgsQ0FBQztRQUVOLElBQUksWUFBWSxHQUFHLElBQUlBLGdCQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUMzQyxPQUFPLENBQUMsd0JBQXdCLENBQUM7QUFDakMsYUFBQSxXQUFXLENBQUMsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0FBQzFELFFBQUEsSUFBSSxzQ0FBc0MsRUFBRTtBQUN4QyxZQUFBLElBQUksYUFBYSxHQUFHO2dCQUNoQiwrSEFBK0g7Z0JBQy9ILDJIQUEySDtnQkFDM0gsYUFBYTthQUNoQixDQUFDO1lBQ0YsWUFBWTtBQUNQLGlCQUFBLE9BQU8sQ0FDSixjQUFjLENBQUMsRUFBRSxJQUFHO2dCQUNoQixFQUFFLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLGdCQUFBLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xCLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEMsZ0JBQUEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsQixnQkFBQSxFQUFFLENBQUMsVUFBVSxDQUNULGFBQWEsQ0FBQyxDQUFDLENBQUM7QUFDWixvQkFBQSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLHdCQUF3QixFQUFFO3dCQUNuRSxNQUFNLEVBQUUsYUFBYSxFQUFFO0FBQzFCLHFCQUFBLENBQUMsQ0FDVCxDQUFDO0FBQ04sYUFBQyxDQUFDLENBQ0w7QUFDQSxpQkFBQSxPQUFPLENBQUMsSUFBSSxJQUNULElBQUk7QUFDQyxpQkFBQSxjQUFjLENBQUMsZ0JBQWdCLENBQUMsd0JBQXdCLENBQUM7aUJBQ3pELFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQztBQUN2RCxpQkFBQSxRQUFRLENBQUMsT0FBTSxLQUFLLEtBQUc7QUFDcEIsZ0JBQUEsWUFBWSxDQUFDLE9BQU8sQ0FDaEIsY0FBYyxDQUFDLEVBQUUsSUFBRztvQkFDaEIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoQyxvQkFBQSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNsQixFQUFFLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLG9CQUFBLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEIsb0JBQUEsRUFBRSxDQUFDLFVBQVUsQ0FDVCxhQUFhLENBQUMsQ0FBQyxDQUFDO0FBQ1osd0JBQUEsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUN6RSxDQUFDO2lCQUNMLENBQUMsQ0FDTCxDQUFDO0FBQ0YsZ0JBQUEsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDN0UsZ0JBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDN0IsQ0FBQyxDQUNULENBQUM7QUFDVCxTQUFBO0FBQU0sYUFBQTtBQUNILFlBQUEsWUFBWSxDQUFDLE9BQU8sQ0FDaEIsMkhBQTJILENBQzlILENBQUM7QUFDTCxTQUFBO0FBQ0QsUUFBQSxJQUFJQSxnQkFBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDeEIsT0FBTyxDQUFDLCtCQUErQixDQUFDOzthQUV4QyxPQUFPLENBQUMsMkZBQTJGLENBQUM7QUFDcEcsYUFBQSxTQUFTLENBQUMsTUFBTSxJQUNiLE1BQU07YUFDRCxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUM7YUFDekQsUUFBUSxDQUFDLE9BQU0sS0FBSyxLQUFJLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSwwQkFBMEIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQ3hHLENBQUM7S0FDVDtBQUNKOzs7OyJ9 diff --git a/.obsidian/plugins/dataview/manifest.json b/.obsidian/plugins/dataview/manifest.json index d04cc4a..168fe91 100644 --- a/.obsidian/plugins/dataview/manifest.json +++ b/.obsidian/plugins/dataview/manifest.json @@ -1,10 +1,11 @@ { "id": "dataview", "name": "Dataview", - "version": "0.5.64", + "version": "0.5.66", "minAppVersion": "0.13.11", "description": "Complex data views for the data-obsessed.", "author": "Michael Brenan ", "authorUrl": "https://github.com/blacksmithgu", + "helpUrl": "https://blacksmithgu.github.io/obsidian-dataview/", "isDesktopOnly": false } diff --git a/.obsidian/plugins/easy-typing-obsidian/main.js b/.obsidian/plugins/easy-typing-obsidian/main.js index 6eb5675..d6ffaa9 100644 --- a/.obsidian/plugins/easy-typing-obsidian/main.js +++ b/.obsidian/plugins/easy-typing-obsidian/main.js @@ -29,12 +29,17 @@ __export(main_exports, { module.exports = __toCommonJS(main_exports); var import_obsidian3 = require("obsidian"); var import_state = require("@codemirror/state"); -var import_state2 = require("@codemirror/state"); // src/core.ts var import_obsidian = require("obsidian"); // src/utils.ts +var DEBUG = true; +var print = (message, ...optionalParams) => { + if (DEBUG) { + console.log(message, ...optionalParams); + } +}; function offsetToPos(doc, offset) { let line = doc.lineAt(offset); return { line: line.number - 1, ch: offset - line.from }; @@ -89,6 +94,45 @@ function isParamDefined(param) { function showString(s) { return s.replace(/\n/g, "\\n"); } +function getHiddenObsidianConfig(app) { + return app.vault.config; +} +var ObsidianSettings = class { + constructor(app) { + this.app = app; + } + isLegacyEditorEnabled() { + const config = { + legacyEditor: false, + ...getHiddenObsidianConfig(this.app) + }; + return config.legacyEditor; + } + isDefaultThemeEnabled() { + const config = { + cssTheme: "", + ...getHiddenObsidianConfig(this.app) + }; + return config.cssTheme === ""; + } + getTabsSettings() { + return { + useTab: true, + tabSize: 4, + ...getHiddenObsidianConfig(this.app) + }; + } + getFoldSettings() { + return { + foldIndent: true, + ...getHiddenObsidianConfig(this.app) + }; + } + getDefaultIndentChars() { + const { useTab, tabSize } = this.getTabsSettings(); + return useTab ? " " : new Array(tabSize).fill(" ").join(""); + } +}; // src/core.ts var import_language = require("@codemirror/language"); @@ -170,7 +214,7 @@ var LineFormater = class { let line = doc.lineAt(fromB).text; let res = null; if (insertedStr.contains("\n")) { - res = this.formatLine(state, doc.lineAt(fromB).number, settings, offsetToPos(doc, fromB).ch, offsetToPos(doc, toB - 1).ch); + res = this.formatLine(state, doc.lineAt(fromB).number, settings, offsetToPos(doc, fromB).ch, offsetToPos(doc, fromB).ch); } else { res = this.formatLine(state, doc.lineAt(fromB).number, settings, offsetToPos(doc, toB).ch, offsetToPos(doc, fromB).ch); } @@ -196,12 +240,7 @@ var LineFormater = class { let regNull = /^\s*$/g; if (regNull.test(line)) return [line, curCh, []]; - let lineParts; - if (settings.UserDefinedRegSwitch) { - lineParts = this.parseLineWithSyntaxTree(state, lineNum, settings.UserDefinedRegExp); - } else { - lineParts = this.parseLineWithSyntaxTree(state, lineNum); - } + let lineParts = settings.UserDefinedRegSwitch ? this.parseLineWithSyntaxTree(state, lineNum, settings.UserDefinedRegExp) : this.parseLineWithSyntaxTree(state, lineNum); if (settings.debug) console.log("line parts\n", lineParts); let linePartsOrigin = JSON.parse(JSON.stringify(lineParts)); @@ -249,6 +288,19 @@ var LineFormater = class { } switch (lineParts[i].type) { case "text" /* text */: + let insertSpace = function(content2, reg2, prevCh2, curCh2, offset2) { + while (true) { + let match = reg2.exec(content2); + if (!match) + break; + let tempIndex = reg2.lastIndex - 1; + if (isParamDefined(prevCh2) && tempIndex >= prevCh2 - offset2 && tempIndex < curCh2 - offset2) { + content2 = content2.substring(0, tempIndex) + " " + content2.substring(tempIndex); + curCh2 += 1; + } + } + return [content2, curCh2]; + }; let content = lineParts[i].content; if (settings.AutoCapital) { var reg = /[\.\?\!。!?]([\s]*)[a-z\u0401\u0451\u0410-\u044f]/g; @@ -270,59 +322,23 @@ var LineFormater = class { if (settings.ChineseEnglishSpace) { let reg1 = /([A-Za-z])([\u4e00-\u9fa5])/gi; let reg2 = /([\u4e00-\u9fa5])([A-Za-z])/gi; - lineParts[i].content = content.replace(reg1, "$1 $2").replace(reg2, "$1 $2"); - content = lineParts[i].content; + [content, curCh] = insertSpace(content, reg1, prevCh, curCh, offset); + [content, curCh] = insertSpace(content, reg2, prevCh, curCh, offset); } if (settings.ChineseNumberSpace) { let reg2 = /([0-9])([\u4e00-\u9fa5])/g; - while (true) { - let match = reg2.exec(content); - if (!match) - break; - let tempIndex = reg2.lastIndex - 1; - if (isParamDefined(prevCh) && tempIndex >= prevCh - offset && tempIndex < curCh - offset) { - content = content.substring(0, tempIndex) + " " + content.substring(tempIndex); - curCh += 1; - } - } let reg1 = /([\u4e00-\u9fa5])([0-9])/g; - while (true) { - let match = reg1.exec(content); - if (!match) - break; - let tempIndex = reg1.lastIndex - 1; - if (isParamDefined(prevCh) && tempIndex >= prevCh - offset && tempIndex < curCh - offset) { - content = content.substring(0, tempIndex) + " " + content.substring(tempIndex); - curCh += 1; - } - } + [content, curCh] = insertSpace(content, reg2, prevCh, curCh, offset); + [content, curCh] = insertSpace(content, reg1, prevCh, curCh, offset); } if (settings.EnglishNumberSpace) { let reg2 = /([A-Za-z])(\d)/g; - while (true) { - let match = reg2.exec(content); - if (!match) - break; - let tempIndex = reg2.lastIndex - 1; - if (isParamDefined(prevCh) && tempIndex >= prevCh - offset && tempIndex < curCh - offset) { - content = content.substring(0, tempIndex) + " " + content.substring(tempIndex); - curCh += 1; - } - } let reg1 = /(\d)([A-Za-z])/g; - while (true) { - let match = reg1.exec(content); - if (!match) - break; - let tempIndex = reg1.lastIndex - 1; - if (isParamDefined(prevCh) && tempIndex >= prevCh - offset && tempIndex < curCh - offset) { - content = content.substring(0, tempIndex) + " " + content.substring(tempIndex); - curCh += 1; - } - } + [content, curCh] = insertSpace(content, reg2, prevCh, curCh, offset); + [content, curCh] = insertSpace(content, reg1, prevCh, curCh, offset); } if (settings.ChineseNoSpace) { - let reg2 = /([\u4e00-\u9fa5,。、;‘’《》]+)(\s+)([\u4e00-\u9fa5,。、;‘’《》]+)/g; + let reg2 = /([\u4e00-\u9fa5,。、!;‘’《》]+)(\s+)([\u4e00-\u9fa5,。、!;‘’《》]+)/g; while (reg2.exec(content)) { lineParts[i].content = content.replace(reg2, "$1$3"); content = lineParts[i].content; @@ -330,7 +346,7 @@ var LineFormater = class { } if (settings.PunctuationSpace) { { - let reg2 = /([,\.;\?\!\)])([0-9A-Za-z\u0401\u0451\u0410-\u044f])|([A-Za-z0-9\u4e00-\u9fa5:,\.\?\!'"]+)(\()|[,\.;\?:!][\u4e00-\u9fa5]/gi; + let reg2 = /([,\.;\?\!\)])([0-9A-Za-z\u0401\u0451\u0410-\u044f\u4e00-\u9fa5])|([A-Za-z0-9\u4e00-\u9fa5:,\.\?\!'"]+)(\()|[,\.;\?:!][\u4e00-\u9fa5]/gi; while (true) { let match = reg2.exec(content); if (!match) @@ -359,13 +375,13 @@ var LineFormater = class { let regEndWithSpace = /[\s,。、:;?!()~\*"《“\[\]\(\{\}]\0?$/; let txtStartSpaceSate = 0 /* none */; let txtEndSpaceState = 0 /* none */; - if (regStartWithSpace.test(content)) { + if (regStartWithSpace.test(content) || content.startsWith("
")) { if (regStrictSpaceStart.test(content)) txtStartSpaceSate = 2 /* strict */; else txtStartSpaceSate = 1 /* soft */; } - if (regEndWithSpace.test(content)) { + if (regEndWithSpace.test(content) || content.endsWith("
")) { if (regStrictSpaceEnd.test(content)) txtEndSpaceState = 2 /* strict */; else @@ -473,7 +489,7 @@ var LineFormater = class { } break; case "user-defined" /* user */: - if (settings.InlineCodeSpaceMode > 0 /* none */ || lineParts[i - 1].rightSpaceRequire > 0 /* none */) { + if (settings.InlineCodeSpaceMode > 0 /* none */ && lineParts[i - 1].rightSpaceRequire > 0 /* none */) { inlineChangeList.push({ text: " ", begin: lineParts[i].begin, @@ -494,6 +510,11 @@ var LineFormater = class { prevTextEndSpaceState = 0 /* none */; break; case "formula" /* formula */: + if (lineParts[i].content == "$\\qquad$") { + prevPartType = "text" /* text */; + prevTextEndSpaceState = 2 /* strict */; + break; + } switch (prevPartType) { case "none" /* none */: break; @@ -542,7 +563,7 @@ var LineFormater = class { } break; case "user-defined" /* user */: - if (settings.InlineFormulaSpaceMode > 0 /* none */ || lineParts[i - 1].rightSpaceRequire > 0 /* none */) { + if (settings.InlineFormulaSpaceMode > 0 /* none */ && lineParts[i - 1].rightSpaceRequire > 0 /* none */) { inlineChangeList.push({ text: " ", begin: lineParts[i].begin, @@ -649,7 +670,7 @@ var LineFormater = class { } break; case "user-defined" /* user */: - if (lineParts[i - 1].rightSpaceRequire > 0 /* none */ || settings.InlineLinkSpaceMode > 0 /* none */) { + if (lineParts[i - 1].rightSpaceRequire > 0 /* none */ && settings.InlineLinkSpaceMode > 0 /* none */) { inlineChangeList.push({ text: " ", begin: lineParts[i].begin, @@ -680,7 +701,7 @@ var LineFormater = class { } break; case "code" /* code */: - if (lineParts[i].leftSpaceRequire > 0 /* none */ || settings.InlineCodeSpaceMode > 0 /* none */) { + if (lineParts[i].leftSpaceRequire > 0 /* none */ && settings.InlineCodeSpaceMode > 0 /* none */) { inlineChangeList.push({ text: " ", begin: lineParts[i].begin, @@ -692,7 +713,7 @@ var LineFormater = class { } break; case "formula" /* formula */: - if (lineParts[i].leftSpaceRequire > 0 /* none */ || settings.InlineFormulaSpaceMode > 0 /* none */) { + if (lineParts[i].leftSpaceRequire > 0 /* none */ && settings.InlineFormulaSpaceMode > 0 /* none */) { inlineChangeList.push({ text: " ", begin: lineParts[i].begin, @@ -705,7 +726,7 @@ var LineFormater = class { break; case "mdlink" /* mdlink */: case "wikilink" /* wikilink */: - if (lineParts[i].leftSpaceRequire > 0 /* none */ || settings.InlineLinkSpaceMode > 0 /* none */) { + if (lineParts[i].leftSpaceRequire > 0 /* none */ && settings.InlineLinkSpaceMode > 0 /* none */) { inlineChangeList.push({ text: " ", begin: lineParts[i].begin, @@ -717,7 +738,7 @@ var LineFormater = class { } break; case "user-defined" /* user */: - if (lineParts[i].leftSpaceRequire > 0 /* none */ || lineParts[i - 1].rightSpaceRequire > 0 /* none */) { + if (lineParts[i].leftSpaceRequire > 0 /* none */ && lineParts[i - 1].rightSpaceRequire > 0 /* none */) { inlineChangeList.push({ text: " ", begin: lineParts[i].begin, @@ -868,7 +889,7 @@ function splitTextWithLinkAndUserDefined(text, regExps) { retArray = matchWithReg(text, regExpList[i], "user-defined" /* user */, retArray, true, leftSRequireList[i], rightSRequireList[i]); } } - retArray = matchWithReg(text, /\d{1,2}:\d{1,2}(:\d{0,2}){0,1}/g, "user-defined" /* user */, retArray, true, 0 /* none */, 0 /* none */); + retArray = matchWithReg(text, /\d{1,2}:\d{1,2}(:\d{0,2}){0,1}/g, "user-defined" /* user */, retArray, true, 1 /* soft */, 0 /* none */); retArray = matchWithAbbr(text, "user-defined" /* user */, retArray, true); retArray = retArray.sort((a, b) => a.begin - b.begin); let textArray = []; @@ -924,8 +945,12 @@ function string2SpaceState(s) { } function getPosLineType(state, pos) { const line = state.doc.lineAt(pos); + let line_number = line.number; const tree = (0, import_language.syntaxTree)(state); const token = tree.resolve(line.from, 1).name; + if (token.contains("table")) { + return "table" /* table */; + } if (token.contains("hmd-frontmatter")) { return "frontmatter" /* frontmatter */; } @@ -944,6 +969,36 @@ function getPosLineType(state, pos) { } } return "codeblock" /* codeblock */; + } else if (token.contains("quote") && !token.contains("callout")) { + let callout_start_line = -1; + for (let l = line_number - 1; l >= 1; l -= 1) { + let l_line = state.doc.line(l); + let l_token = tree.resolve(l_line.from, 1).name; + if (!l_token.contains("quote")) { + break; + } + if (l_token.contains("callout")) { + callout_start_line = l; + break; + } + } + if (callout_start_line == -1) + return "text" /* text */; + let is_code_block = false; + let reg_code_begin = /^>+ ```/; + let reg_code_end = /^>+ ```$/; + for (let l = callout_start_line + 1; l <= line_number; l += 1) { + let l_line = state.doc.line(l); + if (is_code_block && reg_code_end.test(l_line.text)) { + is_code_block = false; + } else if (!is_code_block && reg_code_begin.test(l_line.text)) { + is_code_block = true; + } + } + if (is_code_block) { + return "codeblock" /* codeblock */; + } else + return "text" /* text */; } return "text" /* text */; } @@ -1006,7 +1061,7 @@ var DEFAULT_SETTINGS = { InlineLinkSpaceMode: 1 /* soft */, InlineLinkSmartSpace: true, UserDefinedRegSwitch: true, - UserDefinedRegExp: "{{.*?}}|++\n<.*?>|--\n\\[\\!.*?\\][-+]{0,1}|-+\n(file:///|https?://|ftp://|obsidian://|zotero://|www.)[^\\s\uFF08\uFF09\u300A\u300B\u3002,\uFF0C\uFF01\uFF1F;\uFF1B\uFF1A\u201C\u201D\u2018\u2019\\)\\(\\[\\]\\{\\}']+|++\n\n[a-zA-Z0-9_\\-.]+@[a-zA-Z0-9_\\-.]+|++\n(?|--\n\\[\\!.*?\\][-+]{0,1}|-+\n(file:///|https?://|ftp://|obsidian://|zotero://|www.)[^\\s\uFF08\uFF09\u300A\u300B\u3002,\uFF0C\uFF01\uFF1F;\uFF1B\uFF1A\u201C\u201D\u2018\u2019\\)\\(\\[\\]\\{\\}']+|--\n\n[a-zA-Z0-9_\\-.]+@[a-zA-Z0-9_\\-.]+|++\n(? { + new import_obsidian2.Setting(containerEl).setName("Tabout").setDesc("Tabout inline code or paired symbols(when selected). Tab \u8DF3\u51FA\u884C\u5185\u4EE3\u7801\u5757\u6216\u914D\u5BF9\u7B26\u53F7\u5757(\u9009\u4E2D\u65F6)").addToggle((toggle) => { toggle.setValue(this.plugin.settings.Tabout).onChange(async (value) => { this.plugin.settings.Tabout = value; await this.plugin.saveSettings(); @@ -1213,12 +1270,24 @@ var EasyTypingSettingTab = class extends import_obsidian2.PluginSettingTab { this.plugin.saveSettings(); })); containerEl.createEl("h2", { text: "Experimental Features" }); - new import_obsidian2.Setting(containerEl).setName("Enhance Chinese Input Method").setDesc("\u4E2D\u6587\u8F93\u5165\u6CD5\u4E0B\uFF0C\u56DE\u8F66\u8F93\u5165\u82F1\u6587\u65F6\u81EA\u52A8\u683C\u5F0F\u5316").addToggle((toggle) => { + new import_obsidian2.Setting(containerEl).setName("Fix MacOS context-menu cursor position(Need to restart Obsidian)").setDesc("\u4FEE\u590D MacOS \u9F20\u6807\u53F3\u952E\u547C\u51FA\u83DC\u5355\u65F6\u5149\u6807\u8DF3\u5230\u4E0B\u4E00\u884C\u7684\u95EE\u9898(\u9700\u8981\u91CD\u542FObsidian\u751F\u6548)").addToggle((toggle) => { + toggle.setValue(this.plugin.settings.FixMacOSContextMenu).onChange(async (value) => { + this.plugin.settings.FixMacOSContextMenu = value; + await this.plugin.saveSettings(); + }); + }); + new import_obsidian2.Setting(containerEl).setName("Enhance Chinese Input Method").setDesc("\u4E2D\u6587\u8F93\u5165\u6CD5\u4E0B\uFF0C\u56DE\u8F66/Shift/Enter \u8F93\u5165\u5185\u5BB9\u65F6\u81EA\u52A8\u683C\u5F0F\u5316").addToggle((toggle) => { toggle.setValue(this.plugin.settings.TryFixChineseIM).onChange(async (value) => { this.plugin.settings.TryFixChineseIM = value; await this.plugin.saveSettings(); }); }); + new import_obsidian2.Setting(containerEl).setName("Fix MicroSoft Input Method Issue").setDesc("\u9002\u914D\u65E7\u7248\u5FAE\u8F6F\u8F93\u5165\u6CD5").addToggle((toggle) => { + toggle.setValue(this.plugin.settings.TryFixMSIME).onChange(async (value) => { + this.plugin.settings.TryFixMSIME = value; + await this.plugin.saveSettings(); + }); + }); new import_obsidian2.Setting(containerEl).setName("Strict Line breaks Mode Enter Twice").setDesc("\u4E25\u683C\u6362\u884C\u7684\u8BBE\u7F6E\u4E0B\uFF0C\u5728\u666E\u901A\u6587\u672C\u884C\u8FDB\u884C\u4E00\u6B21\u56DE\u8F66\u4F1A\u4EA7\u751F\u4E24\u4E2A\u6362\u884C\u7B26").addToggle((toggle) => { toggle.setValue(this.plugin.settings.EnterTwice).onChange(async (value) => { this.plugin.settings.EnterTwice = value; @@ -1260,8 +1329,8 @@ var EasyTypingSettingTab = class extends import_obsidian2.PluginSettingTab { let left = replaceLeftString.inputEl.value; let right = replaceRightString.inputEl.value; if (trigger && (left || right)) { - if (trigger.length > 1) { - new import_obsidian2.Notice("Inlvalid trigger, trigger must be a symbol of length 1"); + if (trigger.length != 1 && trigger != "\u2014\u2014" && trigger != "\u2026\u2026") { + new import_obsidian2.Notice("Inlvalid trigger, trigger must be a symbol of length 1 or symbol \u2014\u2014, \u2026\u2026"); return; } if (this.plugin.addUserSelectionRepRule(trigger, left, right)) { @@ -1499,7 +1568,6 @@ var EditConvertRuleModal = class extends import_obsidian2.Modal { // src/main.ts var import_view = require("@codemirror/view"); var import_language2 = require("@codemirror/language"); -var import_obsidian4 = require("obsidian"); var EasyTypingPlugin = class extends import_obsidian3.Plugin { constructor() { super(...arguments); @@ -1512,9 +1580,16 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { tr.changes.iterChanges((fromA, toA, fromB, toB, inserted) => { var _a, _b; let changedStr = tr.startState.sliceDoc(fromA, toA); + let changestr_ = changedStr.replace(/\s/g, "0"); let insertedStr = inserted.sliceString(0); + if (this.settings.debug) { + console.log("[TransactionFilter] type, fromA, toA, changed, fromB, toB, inserted"); + console.log(changeTypeStr, fromA, toA, changedStr, fromB, toB, insertedStr); + } + if (getPosLineType(tr.startState, fromA) == "table" /* table */) + return tr; if (this.settings.SelectionEnhance) { - if ((changeTypeStr == "input.type" || changeTypeStr == "input.type.compose") && fromA != toA && fromB + 1 === toB) { + if ((changeTypeStr == "input.type" || changeTypeStr == "input.type.compose") && fromA != toA && (fromB + 1 === toB || insertedStr == "\u2014\u2014" || insertedStr == "\u2026\u2026")) { if (this.SelectionReplaceMap.has(insertedStr)) { changes.push({ changes: { from: fromA, insert: (_a = this.SelectionReplaceMap.get(insertedStr)) == null ? void 0 : _a.left }, userEvent: "EasyTyping.change" }); changes.push({ changes: { from: toA, insert: (_b = this.SelectionReplaceMap.get(insertedStr)) == null ? void 0 : _b.right }, userEvent: "EasyTyping.change" }); @@ -1525,6 +1600,41 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { } if (selected) return tr; + if (this.settings.TryFixMSIME && changeTypeStr == "input.type.compose" && changedStr == "" && /^[\u4e00-\u9fa5]+$/.test(insertedStr)) { + print("MS-IME Compose detected:", insertedStr); + tr = tr.startState.update(...changes); + return tr; + } + if (changeTypeStr == "delete.backward" && !selected && getPosLineType(tr.startState, toA) == "codeblock" /* codeblock */) { + let line_number = tr.startState.doc.lineAt(toA).number; + let cur_line = tr.startState.doc.lineAt(toA); + let list_code = false; + let list_code_indent = 0; + for (let i = line_number - 1; i >= 0; i--) { + let line = tr.startState.doc.line(i); + if (/^\s+```/.test(line.text)) { + list_code = true; + list_code_indent = line.text.match(/^\s*/)[0].length; + break; + } else if (/^```/.test(line.text)) + break; + else + continue; + } + if (list_code) { + console.log("list_code, indent: ", list_code_indent); + if (toA == cur_line.from + list_code_indent) { + changes.push({ changes: { from: tr.startState.doc.line(line_number - 1).to, to: toA, insert: "" }, userEvent: "EasyTyping.change" }); + tr = tr.startState.update(...changes); + return tr; + } + if (fromA >= cur_line.from && fromA < cur_line.from + list_code_indent && toA > cur_line.from + list_code_indent) { + changes.push({ changes: { from: cur_line.from + list_code_indent, to: toA, insert: "" }, userEvent: "EasyTyping.change" }); + tr = tr.startState.update(...changes); + return tr; + } + } + } if (changeTypeStr == "delete.backward") { for (let rule of this.UserDeleteRules) { let left = tr.startState.doc.sliceString(toA - rule.before.left.length, toA); @@ -1550,6 +1660,21 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { tr = tr.startState.update(...changes); return tr; } + let line_content = tr.startState.doc.lineAt(toA).text; + let next_line_content = tr.startState.doc.sliceString(toA, toA + line_content.length + 1); + if (/^\s*```$/.test(line_content) && "\n" + line_content == next_line_content) { + changes.push({ + changes: { + from: toA - 3, + to: toA + line_content.length + 1, + insert: "" + }, + selection: { anchor: toA - 3 }, + userEvent: "EasyTyping.change" + }); + tr = tr.startState.update(...changes); + return tr; + } for (let rule of this.IntrinsicDeleteRules) { let left = tr.startState.doc.sliceString(toA - rule.before.left.length, toA); let right = tr.startState.doc.sliceString(toA, toA + rule.before.right.length); @@ -1568,8 +1693,42 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { } } } + if (changeTypeStr == "input.type" && insertedStr == "`\n```" && this.settings.BaseObEditEnhance) { + const line_content = tr.startState.doc.lineAt(fromA).text; + if (/^\s*``$/.test(line_content)) { + changes.push({ + changes: { from: fromA, to: toA, insert: "`\n" + line_content + "`" }, + selection: { anchor: fromA + 1 }, + userEvent: "EasyTyping.change" + }); + tr = tr.startState.update(...changes); + return tr; + } + } if ((changeTypeStr == "input.type" || changeTypeStr == "input.type.compose") && fromA === toA && fromB + 1 === toB) { if (this.settings.BaseObEditEnhance) { + if (insertedStr === "`" && toA - tr.startState.doc.lineAt(toA).from > 2 && tr.startState.sliceDoc(toA - 1, toA) === "`" && tr.startState.sliceDoc(toA - 2, toA - 1) != "`") { + changes.push({ + changes: { from: toA, insert: "`" }, + selection: { anchor: toA }, + userEvent: "EasyTyping.change" + }); + tr = tr.startState.update(...changes); + return tr; + } + if (insertedStr == "\xB7") { + let line_content = tr.startState.doc.lineAt(fromA).text; + let ch_pos = fromA - tr.startState.doc.lineAt(fromA).from; + if (/^\s*``$/.test(line_content) && ch_pos == line_content.length - 1) { + changes.push({ + changes: { from: fromA + 1, to: toA + 1, insert: "`\n" + line_content + "`" }, + selection: { anchor: fromA + 2 }, + userEvent: "EasyTyping.change" + }); + tr = tr.startState.update(...changes); + return tr; + } + } for (let rule of this.BasicConvRules) { if (insertedStr != rule.before.left.charAt(rule.before.left.length - 1)) continue; @@ -1649,7 +1808,7 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { return tr; } } - if (this.SymbolPairsMap.has(insertedStr)) { + if (this.SymbolPairsMap.has(insertedStr) && insertedStr != "'") { changes.push({ changes: { from: fromA, to: toA, insert: insertedStr + this.SymbolPairsMap.get(insertedStr) }, selection: { anchor: fromA + 1 }, @@ -1657,6 +1816,17 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { }); tr = tr.startState.update(...changes); return tr; + } else if (insertedStr === "'") { + let charBeforeCursor = tr.startState.sliceDoc(fromA - 1, fromA); + if (["", " ", "\n"].includes(charBeforeCursor)) { + changes.push({ + changes: { from: fromA, to: toA, insert: "''" }, + selection: { anchor: fromA + 1 }, + userEvent: "EasyTyping.change" + }); + tr = tr.startState.update(...changes); + return tr; + } } if (insertedStr === "\u201D" || insertedStr === "\u2019") { let tempStr = insertedStr === "\u201D" ? "\u201C\u201D" : "\u2018\u2019"; @@ -1670,6 +1840,32 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { } } } + if (changeTypeStr == "input.paste" && fromA == toA && fromA == fromB && getPosLineType(tr.startState, fromB) == "codeblock" /* codeblock */) { + let line = tr.startState.doc.lineAt(fromB).text; + let indent_space = line.match(/^\s*/)[0].length; + let inserted_lines = insertedStr.split("\n"); + if (inserted_lines.length > 1) { + let first_line = inserted_lines[0].trimStart(); + let rest_lines = inserted_lines.slice(1); + let min_indent_space = Infinity; + for (let line2 of rest_lines) { + let indent = line2.match(/^\s*/)[0].length; + if (indent < min_indent_space) + min_indent_space = indent; + } + let new_rest_lines = rest_lines.map((line2) => line2.substring(min_indent_space)); + new_rest_lines = new_rest_lines.map((line2) => line2.replace(/[\t]/g, this.obsidianSettings.getDefaultIndentChars())); + let final_rest_lines = new_rest_lines.map((line2) => " ".repeat(indent_space) + line2); + let new_insertedStr = first_line + "\n" + final_rest_lines.join("\n"); + changes.push({ + changes: { from: fromA, to: toA, insert: new_insertedStr }, + selection: { anchor: fromA + new_insertedStr.length }, + userEvent: "EasyTyping.change" + }); + tr = tr.startState.update(...changes); + return tr; + } + } }); return tr; }; @@ -1688,23 +1884,41 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { tr.changes.iterChanges((fromA, toA, fromB, toB, inserted) => { let insertedStr = inserted.sliceString(0); let changedStr = tr.startState.doc.sliceString(fromA, toA); - if (this.settings.debug) - console.log("ViewUpdate Catch Change-> Type: " + changeType + ", ", fromA, toA, changedStr, fromB, toB, insertedStr); + if (this.settings.debug) { + console.log("[ViewUpdate] type, fromA, toA, changed, fromB, toB, inserted"); + console.log(changeType, fromA, toA, changedStr, fromB, toB, insertedStr); + console.log("==>[Composing]", update.view.composing); + } + if (getPosLineType(update.view.state, fromB) == "table" /* table */) { + return; + } let cursor = update.view.state.selection.asSingle().main; - let ChineseRegExp = /^[\u4e00-\u9fa5【】·¥《》?:’‘”“「」、。,()!——……0-9]+$/; + let ChineseRegExp = /^[\u4e00-\u9fa5【】·¥《》?:;’‘”“「」、。,()!——……\d]+$/; let chineseEndFlag = changeType == "input.type.compose" && cursor.anchor == cursor.head && cursor.anchor === toB && ChineseRegExp.test(insertedStr); if (changeType != "input.type.compose") this.compose_need_handle = false; - if (this.settings.AutoFormat && notSelected && !isExcludeFile && getPosLineType(update.view.state, fromB) == "text" /* text */) { + if (this.settings.AutoFormat && notSelected && !isExcludeFile && (getPosLineType(update.view.state, fromB) == "text" /* text */ || getPosLineType(update.view.state, fromB) == "table" /* table */)) { if (changeType == "input.type.compose") { - if (this.compose_need_handle == false) { - this.compose_begin_pos = fromB; - this.compose_end_pos = toB; - this.compose_need_handle = true; - } else { - this.compose_end_pos = toB; - if (this.compose_begin_pos == this.compose_end_pos) { + if (!/^\d$/.test(insertedStr)) { + if (this.compose_need_handle == false) { + this.compose_begin_pos = fromB; + this.compose_end_pos = toB; + this.compose_need_handle = true; + } else { + this.compose_end_pos = toB; + if (this.compose_begin_pos == this.compose_end_pos) { + this.compose_need_handle = false; + } + } + if (chineseEndFlag) this.compose_need_handle = false; + } else { + if (this.compose_need_handle) { + this.compose_end_pos = toB; + if (this.compose_begin_pos == this.compose_end_pos) { + this.compose_need_handle = false; + } + chineseEndFlag = this.compose_need_handle ? false : chineseEndFlag; } } } @@ -1715,14 +1929,23 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { for (let rule of this.UserConvertRules) { let left = update.view.state.doc.sliceString(toB - rule.before.left.length, toB); let right = update.view.state.doc.sliceString(toB, toB + rule.before.right.length); + let inserted2 = rule.after.left + rule.after.right; + let anchor = toB - rule.before.left.length + rule.after.left.length; + let from = toB - rule.before.left.length; + let to = toB + rule.before.right.length; + if (rule.before.left.charAt(0) === "\n" && rule.after.left.charAt(0) === "\n" && toB - rule.before.left.length + 1 == 0) { + left = "\n" + left; + inserted2 = inserted2.substring(1); + from = 0; + } if (left === rule.before.left && right === rule.before.right) { update.view.dispatch({ changes: { - from: toB - rule.before.left.length, - to: toB + rule.before.right.length, - insert: rule.after.left + rule.after.right + from, + to, + insert: inserted2 }, - selection: { anchor: toB - rule.before.left.length + rule.after.left.length }, + selection: { anchor }, userEvent: "EasyTyping.change" }); return; @@ -1743,16 +1966,18 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { return; } } - if (this.settings.AutoFormat && notSelected && !isExcludeFile && (changeType != "none" || insertedStr.contains("\n")) && getPosLineType(update.view.state, fromB) == "text" /* text */) { - let changes = this.Formater.formatLineOfDoc(update.state, this.settings, fromB, cursor.anchor, insertedStr); - if (changes != null) { - update.view.dispatch(...changes[0]); - update.view.dispatch(changes[1]); - return; + if (this.settings.AutoFormat && notSelected && !isExcludeFile && (changeType != "none" || insertedStr == "\n")) { + if (getPosLineType(update.view.state, fromB) == "text" /* text */ || getPosLineType(update.view.state, fromB) == "table" /* table */) { + let changes = this.Formater.formatLineOfDoc(update.state, this.settings, fromB, cursor.anchor, insertedStr); + if (changes != null) { + update.view.dispatch(...changes[0]); + update.view.dispatch(changes[1]); + return; + } } } } - if (this.settings.AutoFormat && !isExcludeFile && changeType == "input.paste" && !import_obsidian4.Platform.isIosApp) { + if (this.settings.AutoFormat && !isExcludeFile && changeType == "input.paste" && !import_obsidian3.Platform.isIosApp) { let updateLineStart = update.state.doc.lineAt(fromB).number; let updateLineEnd = update.state.doc.lineAt(toB).number; if (updateLineStart == updateLineEnd && getPosLineType(update.view.state, toB) == "text" /* text */) { @@ -1792,6 +2017,18 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { return false; const pos = s.main.to; let line = doc.lineAt(pos); + if (s.main.from == s.main.to && getPosLineType(view.state, s.main.from) == "codeblock" /* codeblock */) { + view.dispatch({ + changes: { + from: s.main.from, + insert: this.obsidianSettings.getDefaultIndentChars() + }, + selection: { + anchor: s.main.from + this.obsidianSettings.getDefaultIndentChars().length + } + }); + return true; + } if (pos - line.from != 0 && tree.resolve(pos - 1, 1).name.contains("inline-code")) { if (tree.resolve(pos, 1).name.contains("formatting-code_inline-code")) { view.dispatch({ @@ -1814,6 +2051,20 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { } } } + let selection = view.state.selection.asSingle().main; + let selected = selection.anchor != selection.head; + if (selected) { + let new_anchor = selection.anchor < selection.head ? selection.anchor : selection.head; + let new_head = selection.anchor > selection.head ? selection.anchor : selection.head; + for (let pstr of this.TaboutPairStrs) { + if (doc.sliceString(new_anchor - pstr.left.length, new_anchor) == pstr.left && doc.sliceString(new_head, new_head + pstr.right.length) == pstr.right) { + view.dispatch({ + selection: { anchor: new_head + pstr.right.length, head: new_head + pstr.right.length } + }); + return true; + } + } + } return false; }; this.handleEnter = (view) => { @@ -1855,14 +2106,13 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { this.handleEndComposeTypeKey = (event, view) => { if (!this.settings.TryFixChineseIM) return; - if (["Enter"].contains(event.key) && this.settings.AutoFormat && this.compose_need_handle && !this.isCurrentFileExclude()) { + if (["Enter", "Process", " ", "Shift"].contains(event.key) && this.settings.AutoFormat && this.compose_need_handle && !this.isCurrentFileExclude()) { let cursor = view.state.selection.asSingle().main; if (getPosLineType(view.state, cursor.anchor) != "text" /* text */) return; if (cursor.head != cursor.anchor) return; let insertedStr = view.state.doc.sliceString(this.compose_begin_pos, cursor.anchor); - console.log("inserted str", insertedStr); let changes = this.Formater.formatLineOfDoc(view.state, this.settings, this.compose_begin_pos, cursor.anchor, insertedStr); this.compose_need_handle = false; if (changes != null) { @@ -1873,6 +2123,12 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { } }; this.formatArticle = (editor, view) => { + const editorView = editor.cm; + const tree = (0, import_language2.ensureSyntaxTree)(editorView.state, editorView.state.doc.length); + if (!tree) { + new import_obsidian3.Notice("EasyTyping: Syntax tree is not ready yet, please wait a moment and try again later!", 5e3); + return; + } this.onFormatArticle = true; let lineCount = editor.lineCount(); let new_article = ""; @@ -1914,7 +2170,6 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { for (let i = begin; i <= end; i++) { if (i != begin) new_lines += "\n"; - console.log("i+1", i + 1); new_lines += this.preFormatOneLine(editor, i + 1)[0]; } editor.replaceRange(new_lines, { line: begin, ch: 0 }, { line: end, ch: editor.getLine(end).length }); @@ -1928,7 +2183,7 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { const editorView = editor.cm; let state = editorView.state; let line = state.doc.line(lineNumber); - if (getPosLineType(state, line.from) == "text" /* text */) { + if (getPosLineType(state, line.from) == "text" /* text */ || getPosLineType(state, line.from) == "table" /* table */) { let oldLine = line.text; let newLine = this.Formater.formatLine(state, lineNumber, this.settings, oldLine.length, 0)[0]; if (oldLine != newLine) { @@ -1948,7 +2203,7 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { if (ch != -1) { curCh = ch; } - if (getPosLineType(state, line.from) == "text" /* text */) { + if (getPosLineType(state, line.from) == "text" /* text */ || getPosLineType(state, line.from) == "table" /* table */) { let newLineData = this.Formater.formatLine(state, lineNumber, this.settings, curCh, 0); newLine = newLineData[0]; newCh = newLineData[1]; @@ -1956,8 +2211,6 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { return [newLine, newCh]; }; this.deleteBlankLines = (editor) => { - const basePath = this.app.vault.adapter.basePath; - let config_path = basePath + "/" + this.app.vault.configDir + "/app.json"; if (this.settings.debug) { console.log(this.app.vault.getConfig("strictLineBreaks")); } @@ -1965,7 +2218,11 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { const editorView = editor.cm; let state = editorView.state; let doc = state.doc; - const tree = (0, import_language2.syntaxTree)(state); + const tree = (0, import_language2.ensureSyntaxTree)(state, doc.length); + if (!tree) { + new import_obsidian3.Notice("EasyTyping: Syntax tree is not ready yet, please wait a moment and try again later!", 5e3); + return; + } let start_line = 1; let end_line = doc.lines; let line_num = doc.lines; @@ -2049,7 +2306,7 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { ]; this.refreshSelectionReplaceRule(); this.SymbolPairsMap = /* @__PURE__ */ new Map(); - let SymbolPairs = ["\u3010\u3011", "\uFF08\uFF09", "\u300A\u300B", "\u201C\u201D", "\u2018\u2019", "\u300C\u300D", "\u300E\u300F"]; + let SymbolPairs = ["\u3010\u3011", "\uFF08\uFF09", "\u300A\u300B", "\u201C\u201D", "\u2018\u2019", "\u300C\u300D", "\u300E\u300F", "[]", "()", "{}", '""', "''"]; for (let pairStr of SymbolPairs) this.SymbolPairsMap.set(pairStr.charAt(0), pairStr.charAt(1)); this.halfToFullSymbolMap = /* @__PURE__ */ new Map([ @@ -2060,8 +2317,6 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { ]); let BasicConvRuleStringList = [ ["\xB7\xB7|", "`|`"], - ["`\xB7|`", "```|\n```"], - ["``|", "`|`"], ["\uFF01\u3010\u3010|\u3011", "![[|]]"], ["\uFF01\u3010\u3010|", "![[|]]"], ["\u3010\u3010|\u3011", "[[|]]"], @@ -2089,6 +2344,8 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { ["\uFF08\uFF08|", "(|)"], ["\u201C\u201C|\u201D", '"|"'], ["\u201C\u201D|\u201D", '"|"'], + ["\u2018\u2018|\u2019", "'|'"], + ["\u2018\u2019|\u2019", "'|'"], ["\u300B\u300B|", ">|"], ["\u300A\u300A|\u300B", "<|"], ["\u300A\u300A|", "<|"] @@ -2096,7 +2353,7 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { this.FW2HWSymbolRules = ruleStringList2RuleList(FW2HWSymbolRulesStrList); let fw2hw_rule_0 = { before: { left: "\uFF5C\uFF5C", right: "" }, after: { left: "|", right: "" } }; this.FW2HWSymbolRules.push(fw2hw_rule_0); - let DeleteRulesStrList = [["$|$", "|"], ["```|\n```", "|"], ["==|==", "|"], ["$$\n|\n$$", "|"]]; + let DeleteRulesStrList = [["$|$", "|"], ["==|==", "|"], ["$$\n|\n$$", "|"]]; this.IntrinsicDeleteRules = ruleStringList2RuleList(DeleteRulesStrList); let autoPairRulesPatchStrList = [ ["\u3010\u3011|\u3011", "\u3010\u3011|"], @@ -2104,23 +2361,54 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { ["<>|>", "<>|"], ["\u300A\u300B|\u300B", "\u300A\u300B|"], ["\u300C\u300D|\u300D", "\u300C\u300D|"], - ["\u300E\u300F|\u300F", "\u300E\u300F|"] + ["\u300E\u300F|\u300F", "\u300E\u300F|"], + ["()|)", "()|"], + ["[]|]", "[]|"], + ["{}|}", "{}|"], + ["''|'", "''|"], + ['""|"', '""|'] ]; this.IntrinsicAutoPairRulesPatch = ruleStringList2RuleList(autoPairRulesPatchStrList); + let TaboutPairStrs = [ + "\u3010|\u3011", + "\uFF08|\uFF09", + "\u300A|\u300B", + "\u201C|\u201D", + "\u2018|\u2019", + "\u300C|\u300D", + "\u300E|\u300F", + "'|'", + '"|"', + "$$|$$", + "$|$", + "__|__", + "_|_", + "==|==", + "~~|~~", + "**|**", + "*|*", + "[[|]]", + "[|]", + "{|}", + "(|)", + "<|>" + ]; + this.TaboutPairStrs = TaboutPairStrs.map((s) => string2pairstring(s)); this.refreshUserDeleteRule(); this.refreshUserConvertRule(); this.CurActiveMarkdown = ""; this.compose_need_handle = false; this.Formater = new LineFormater(); this.onFormatArticle = false; + this.obsidianSettings = new ObsidianSettings(this.app); this.registerEditorExtension([ import_state.EditorState.transactionFilter.of(this.transactionFilterPlugin), import_view.EditorView.updateListener.of(this.viewUpdatePlugin), - import_state2.Prec.highest(import_view.EditorView.domEventHandlers({ + import_state.Prec.highest(import_view.EditorView.domEventHandlers({ "keyup": this.onKeyup })) ]); - this.registerEditorExtension(import_state2.Prec.highest(import_view.keymap.of([ + this.registerEditorExtension(import_state.Prec.highest(import_view.keymap.of([ { key: "Tab", run: (view) => { @@ -2213,14 +2501,34 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { } } })); + if (import_obsidian3.Platform.isMacOS && this.settings.FixMacOSContextMenu) { + this.registerEvent(this.app.workspace.on("editor-menu", (menu, editor, view) => { + if (editor.listSelections().length != 1) + return; + let selection = editor.listSelections()[0]; + let selected = editor.getSelection(); + if (selected == "\n") { + editor.setSelection(selection.anchor, selection.anchor); + } + })); + } + console.log("Easy Typing Plugin loaded."); } onunload() { + console.log("Easy Typing Plugin unloaded."); } async normalPaste(editor) { let clipboardText = await navigator.clipboard.readText(); if (clipboardText === null || clipboardText === "") return; - editor.replaceSelection(clipboardText); + if (this.settings.debug) + console.log("Normal Paste!!"); + const editorView = editor.cm; + let mainSelection = editorView.state.selection.asSingle().main; + editorView.dispatch({ + changes: { from: mainSelection.from, to: mainSelection.to, insert: clipboardText }, + userEvent: "input.paste" + }); } isCurrentFileExclude() { if (this.CurActiveMarkdown == "") { @@ -2245,7 +2553,7 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { return false; } switchAutoFormatting() { - this.settings.AutoFormat = this.settings.AutoFormat ? false : true; + this.settings.AutoFormat = !this.settings.AutoFormat; let status = this.settings.AutoFormat ? "on" : "off"; new import_obsidian3.Notice("EasyTyping: Autoformat is " + status + "!"); } @@ -2400,4 +2708,4 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin { await this.saveData(this.settings); } }; -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL21haW4udHMiLCAic3JjL2NvcmUudHMiLCAic3JjL3V0aWxzLnRzIiwgInNyYy9zZXR0aW5ncy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgQXBwLCBFZGl0b3IsIE1hcmtkb3duVmlldywgTW9kYWwsIE5vdGljZSwgUGx1Z2luLCBQbHVnaW5TZXR0aW5nVGFiLCBTZXR0aW5nLCBXb3Jrc3BhY2UsIFdvcmtzcGFjZUxlYWYsIFRGaWxlIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHsgRWRpdG9yU3RhdGUsIEV4dGVuc2lvbiwgU3RhdGVGaWVsZCwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3BlYywgVGV4dCB9IGZyb20gJ0Bjb2RlbWlycm9yL3N0YXRlJztcbmltcG9ydCB7IFNlbGVjdGlvblJhbmdlLCBQcmVjIH0gZnJvbSBcIkBjb2RlbWlycm9yL3N0YXRlXCI7XG5pbXBvcnQgeyBFYXN5VHlwaW5nU2V0dGluZ1RhYiwgRWFzeVR5cGluZ1NldHRpbmdzLCBERUZBVUxUX1NFVFRJTkdTLCBQYWlyU3RyaW5nLCBDb252ZXJ0UnVsZSB9IGZyb20gXCIuL3NldHRpbmdzXCJcbmltcG9ydCB7IEVkaXRvclZpZXcsIGtleW1hcCwgVmlld1VwZGF0ZSB9IGZyb20gJ0Bjb2RlbWlycm9yL3ZpZXcnO1xuaW1wb3J0IHsgcG9zVG9PZmZzZXQsIG9mZnNldFRvUG9zLCBydWxlU3RyaW5nTGlzdDJSdWxlTGlzdCwgZ2V0VHlwZVN0ck9mVHJhbnNhYyB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgeyBMaW5lRm9ybWF0ZXIsIGdldFBvc0xpbmVUeXBlLCBnZXRQb3NMaW5lVHlwZTIsIExpbmVUeXBlIH0gZnJvbSAnLi9jb3JlJ1xuaW1wb3J0IHsgc3ludGF4VHJlZSB9IGZyb20gXCJAY29kZW1pcnJvci9sYW5ndWFnZVwiO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tIFwib2JzaWRpYW5cIjtcbmRlY2xhcmUgbW9kdWxlIFwib2JzaWRpYW5cIiB7XG5cdC8vIGFkZCB0eXBlIHNhZmV0eSBmb3IgdGhlIHVuZG9jdW1lbnRlZCBtZXRob2RzLCBcblx0Ly8gQ09QWSBGUk9NIGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc2dyaWVzZXIvb2JzaWRpYW4tc21hcnRlci1tZC1ob3RrZXlzL3RyZWUvbWFzdGVyXG5cdC8vIGludGVyZmFjZSBFZGl0b3Ige1xuXHQvLyBcdGNtOiB7XG5cdC8vIFx0XHRmaW5kV29yZEF0PzogKHBvczogRWRpdG9yUG9zaXRpb24pID0+IEVkaXRvclNlbGVjdGlvbjtcblx0Ly8gXHRcdHN0YXRlPzogeyB3b3JkQXQ6IChvZmZzZXQ6IG51bWJlcikgPT4geyBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXJ9IH07XG5cdC8vIFx0fTtcblx0Ly8gfVxuXHQvLyBpbnRlcmZhY2UgQXBwIHtcblx0Ly8gXHRjb21tYW5kczogeyBleGVjdXRlQ29tbWFuZEJ5SWQ6IChjb21tYW5kSUQ6IHN0cmluZykgPT4gdm9pZCB9O1xuXHQvLyB9XG5cdGludGVyZmFjZSBWYXVsdCB7XG5cdFx0c2V0Q29uZmlnOiAoY29uZmlnOiBzdHJpbmcsIG5ld1ZhbHVlOiBib29sZWFuKSA9PiB2b2lkO1xuXHRcdGdldENvbmZpZzogKGNvbmZpZzogc3RyaW5nKSA9PiBib29sZWFuO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVhc3lUeXBpbmdQbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xuXHRzZXR0aW5nczogRWFzeVR5cGluZ1NldHRpbmdzO1xuXHRzZWxlY3Rpb25SZXBsYWNlTWFwSW5pdGFsRGF0YTogW3N0cmluZywgUGFpclN0cmluZ11bXTtcblx0U2VsZWN0aW9uUmVwbGFjZU1hcDogTWFwPHN0cmluZywgUGFpclN0cmluZz47XG5cdFN5bWJvbFBhaXJzTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXHRoYWxmVG9GdWxsU3ltYm9sTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXHRCYXNpY0NvbnZSdWxlczogQ29udmVydFJ1bGVbXTtcblx0RlcySFdTeW1ib2xSdWxlczogQ29udmVydFJ1bGVbXTtcblx0Rm9ybWF0ZXI6IExpbmVGb3JtYXRlcjtcblx0SW50cmluc2ljRGVsZXRlUnVsZXM6IENvbnZlcnRSdWxlW107XG5cdEludHJpbnNpY0F1dG9QYWlyUnVsZXNQYXRjaDogQ29udmVydFJ1bGVbXTtcblx0Q3VyQWN0aXZlTWFya2Rvd246IHN0cmluZztcblxuXHRVc2VyRGVsZXRlUnVsZXM6IENvbnZlcnRSdWxlW107XG5cdFVzZXJDb252ZXJ0UnVsZXM6IENvbnZlcnRSdWxlW107XG5cdGxhbmc6IHN0cmluZztcblxuXHRjb21wb3NlX2JlZ2luX3BvczogbnVtYmVyO1xuXHRjb21wb3NlX2VuZF9wb3M6IG51bWJlcjtcblx0Y29tcG9zZV9uZWVkX2hhbmRsZTogYm9vbGVhbjtcblxuXHRvbkZvcm1hdEFydGljbGU6IGJvb2xlYW47XG5cblxuXHRhc3luYyBvbmxvYWQoKSB7XG5cdFx0YXdhaXQgdGhpcy5sb2FkU2V0dGluZ3MoKTtcblx0XHR0aGlzLnNlbGVjdGlvblJlcGxhY2VNYXBJbml0YWxEYXRhID0gW1xuXHRcdFx0W1wiXHUzMDEwXCIsIHsgbGVmdDogXCJbXCIsIHJpZ2h0OiBcIl1cIiB9XSwgW1wiXHVGRkU1XCIsIHsgbGVmdDogXCIkXCIsIHJpZ2h0OiBcIiRcIiB9XSwgW1wiXHUwMEI3XCIsIHsgbGVmdDogXCJgXCIsIHJpZ2h0OiBcImBcIiB9XSxcblx0XHRcdFtcIlx1MzAwQVwiLCB7IGxlZnQ6IFwiXHUzMDBBXCIsIHJpZ2h0OiBcIlx1MzAwQlwiIH1dLCBbXCJcdTIwMUNcIiwgeyBsZWZ0OiBcIlx1MjAxQ1wiLCByaWdodDogXCJcdTIwMURcIiB9XSwgW1wiXHUyMDFEXCIsIHsgbGVmdDogXCJcdTIwMUNcIiwgcmlnaHQ6IFwiXHUyMDFEXCIgfV0sIFtcIlx1RkYwOFwiLCB7IGxlZnQ6IFwiXHVGRjA4XCIsIHJpZ2h0OiBcIlx1RkYwOVwiIH1dLFxuXHRcdFx0W1wiPFwiLCB7IGxlZnQ6IFwiPFwiLCByaWdodDogXCI+XCIgfV1cblx0XHRdO1xuXHRcdHRoaXMucmVmcmVzaFNlbGVjdGlvblJlcGxhY2VSdWxlKCk7XG5cdFx0dGhpcy5TeW1ib2xQYWlyc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cdFx0bGV0IFN5bWJvbFBhaXJzID0gW1wiXHUzMDEwXHUzMDExXCIsIFwiXHVGRjA4XHVGRjA5XCIsIFwiXHUzMDBBXHUzMDBCXCIsIFwiXHUyMDFDXHUyMDFEXCIsIFwiXHUyMDE4XHUyMDE5XCIsIFwiXHUzMDBDXHUzMDBEXCIsIFwiXHUzMDBFXHUzMDBGXCJdXG5cdFx0Zm9yIChsZXQgcGFpclN0ciBvZiBTeW1ib2xQYWlycykgdGhpcy5TeW1ib2xQYWlyc01hcC5zZXQocGFpclN0ci5jaGFyQXQoMCksIHBhaXJTdHIuY2hhckF0KDEpKTtcblxuXHRcdHRoaXMuaGFsZlRvRnVsbFN5bWJvbE1hcCA9IG5ldyBNYXAoW1xuXHRcdFx0W1wiLlwiLCBcIlx1MzAwMlwiXSxcblx0XHRcdFtcIixcIiwgXCJcdUZGMENcIl0sXG5cdFx0XHRbJz8nLCAnXHVGRjFGJ10sXG5cdFx0XHRbJyEnLCAnXHVGRjAxJ11cblx0XHRdKTtcblxuXHRcdGxldCBCYXNpY0NvbnZSdWxlU3RyaW5nTGlzdDogQXJyYXk8W3N0cmluZywgc3RyaW5nXT4gPSBbWydcdTAwQjdcdTAwQjd8JywgJ2B8YCddLCBbXCJgXHUwMEI3fGBcIiwgXCJgYGB8XFxuYGBgXCJdLFsnYGB8JywnYHxgJ10sW1wiXHVGRjAxXHUzMDEwXHUzMDEwfFx1MzAxMVwiLCchW1t8XV0nXSxbJ1x1RkYwMVx1MzAxMFx1MzAxMHwnLCAnIVtbfF1dJ10sXG5cdFx0W1wiXHUzMDEwXHUzMDEwfFx1MzAxMVwiLCBcIltbfF1dXCJdLCBbJ1x1MzAxMFx1MzAxMHwnLCBcIltbfF1dXCJdLCBbJ1x1RkZFNVx1RkZFNXwnLCAnJHwkJ10sIFsnJFx1RkZFNXwkJywgXCIkJFxcbnxcXG4kJFwiXSxbJ1x1MDBBNVx1MDBBNXwnLCckfCQnXSwgWyckXHUwMEE1fCQnLCBcIiQkXFxufFxcbiQkXCJdLFtcIiQkfCRcIiwgXCIkJFxcbnxcXG4kJFwiXSwgWyckJHwnLCBcIiR8JFwiXSxcblx0XHRbXCI+XHUzMDBCfFwiLCBcIj4+fFwiXSwgWydcXG5cdTMwMEJ8JywgXCJcXG4+fFwiXSwgW1wiIFx1MzAwQnxcIiwgXCIgPnxcIl0sIFtcIlxcblx1MzAwMXxcIiwgXCJcXG4vfFwiXV07XG5cdFx0dGhpcy5CYXNpY0NvbnZSdWxlcyA9IHJ1bGVTdHJpbmdMaXN0MlJ1bGVMaXN0KEJhc2ljQ29udlJ1bGVTdHJpbmdMaXN0KTtcblx0XHRsZXQgRlcySFdTeW1ib2xSdWxlc1N0ckxpc3Q6IEFycmF5PFtzdHJpbmcsIHN0cmluZ10+ID0gW1tcIlx1MzAwMlx1MzAwMnxcIiwgXCIufFwiXSwgW1wiXHVGRjAxXHVGRjAxfFwiLCBcIiF8XCJdLCBbXCJcdUZGMUJcdUZGMUJ8XCIsIFwiO3xcIl0sIFtcIlx1RkYwQ1x1RkYwQ3xcIiwgXCIsfFwiXSxcblx0XHRbXCJcdUZGMUFcdUZGMUF8XCIsIFwiOnxcIl0sIFsnXHVGRjFGXHVGRjFGfCcsICc/fCddLCBbJ1x1RkYwOFx1RkYwOHxcdUZGMDknLCBcIih8KVwiXSwgWydcdUZGMDhcdUZGMDh8JywgJyh8KSddLCBbXCJcdTIwMUNcdTIwMUN8XHUyMDFEXCIsIFwiXFxcInxcXFwiXCJdLCBbXCJcdTIwMUNcdTIwMUR8XHUyMDFEXCIsIFwiXFxcInxcXFwiXCJdLFxuXHRcdFtcIlx1MzAwQlx1MzAwQnxcIiwgXCI+fFwiXSwgW1wiXHUzMDBBXHUzMDBBfFx1MzAwQlwiLCBcIjx8XCJdLCBbJ1x1MzAwQVx1MzAwQXwnLCBcIjx8XCJdXTtcblx0XHR0aGlzLkZXMkhXU3ltYm9sUnVsZXMgPSBydWxlU3RyaW5nTGlzdDJSdWxlTGlzdChGVzJIV1N5bWJvbFJ1bGVzU3RyTGlzdCk7XG5cdFx0bGV0IGZ3Mmh3X3J1bGVfMDogQ29udmVydFJ1bGUgPSB7YmVmb3JlOntsZWZ0OidcdUZGNUNcdUZGNUMnLCByaWdodDonJ30sIGFmdGVyOntsZWZ0Oid8JywgcmlnaHQ6Jyd9fTtcblx0XHR0aGlzLkZXMkhXU3ltYm9sUnVsZXMucHVzaChmdzJod19ydWxlXzApXG5cblx0XHRsZXQgRGVsZXRlUnVsZXNTdHJMaXN0OiBBcnJheTxbc3RyaW5nLCBzdHJpbmddPiA9IFtbXCIkfCRcIiwgXCJ8XCJdLCBbJ2BgYHxcXG5gYGAnLCAnfCddLCBbJz09fD09JywgJ3wnXSwgWyckJFxcbnxcXG4kJCcsIFwifFwiXV07XG5cdFx0dGhpcy5JbnRyaW5zaWNEZWxldGVSdWxlcyA9IHJ1bGVTdHJpbmdMaXN0MlJ1bGVMaXN0KERlbGV0ZVJ1bGVzU3RyTGlzdCk7XG5cblx0XHQvLyBsZXRcblx0XHRsZXQgYXV0b1BhaXJSdWxlc1BhdGNoU3RyTGlzdDogQXJyYXk8W3N0cmluZywgc3RyaW5nXT4gPSBbW1wiXHUzMDEwXHUzMDExfFx1MzAxMVwiLCBcIlx1MzAxMFx1MzAxMXxcIl0sIFtcIlx1RkYwOFx1RkYwOXxcdUZGMDlcIiwgXCJcdUZGMDhcdUZGMDl8XCJdLFxuXHRcdFtcIjw+fD5cIiwgXCI8PnxcIl0sIFtcIlx1MzAwQVx1MzAwQnxcdTMwMEJcIiwgXCJcdTMwMEFcdTMwMEJ8XCJdLCBbXCJcdTMwMENcdTMwMER8XHUzMDBEXCIsIFwiXHUzMDBDXHUzMDBEfFwiXSwgW1wiXHUzMDBFXHUzMDBGfFx1MzAwRlwiLCBcIlx1MzAwRVx1MzAwRnxcIl1cblx0XHRdO1xuXHRcdHRoaXMuSW50cmluc2ljQXV0b1BhaXJSdWxlc1BhdGNoID0gcnVsZVN0cmluZ0xpc3QyUnVsZUxpc3QoYXV0b1BhaXJSdWxlc1BhdGNoU3RyTGlzdCk7XG5cblx0XHR0aGlzLnJlZnJlc2hVc2VyRGVsZXRlUnVsZSgpO1xuXHRcdHRoaXMucmVmcmVzaFVzZXJDb252ZXJ0UnVsZSgpO1xuXG5cdFx0dGhpcy5DdXJBY3RpdmVNYXJrZG93biA9IFwiXCI7XG5cblx0XHR0aGlzLmNvbXBvc2VfbmVlZF9oYW5kbGUgPSBmYWxzZTtcblxuXHRcdHRoaXMuRm9ybWF0ZXIgPSBuZXcgTGluZUZvcm1hdGVyKCk7XG5cblx0XHR0aGlzLm9uRm9ybWF0QXJ0aWNsZSA9IGZhbHNlO1xuXG5cdFx0dGhpcy5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihbXG5cdFx0XHRFZGl0b3JTdGF0ZS50cmFuc2FjdGlvbkZpbHRlci5vZih0aGlzLnRyYW5zYWN0aW9uRmlsdGVyUGx1Z2luKSxcblx0XHRcdEVkaXRvclZpZXcudXBkYXRlTGlzdGVuZXIub2YodGhpcy52aWV3VXBkYXRlUGx1Z2luKSxcblx0XHRcdFByZWMuaGlnaGVzdChFZGl0b3JWaWV3LmRvbUV2ZW50SGFuZGxlcnMoe1xuXHRcdFx0XHRcImtleXVwXCI6IHRoaXMub25LZXl1cFxuXHRcdFx0fSkpXG5cdFx0XSk7XG5cblxuXHRcdHRoaXMucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oUHJlYy5oaWdoZXN0KGtleW1hcC5vZihbXG5cdFx0XHR7XG5cdFx0XHRcdGtleTogXCJUYWJcIixcblx0XHRcdFx0cnVuOiAodmlldzogRWRpdG9yVmlldyk6IGJvb2xlYW4gPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHN1Y2Nlc3MgPSB0aGlzLmhhbmRsZVRhYkRvd24odmlldyk7XG5cdFx0XHRcdFx0cmV0dXJuIHN1Y2Nlc3M7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGtleTogXCJFbnRlclwiLFxuXHRcdFx0XHRydW46ICh2aWV3OiBFZGl0b3JWaWV3KTogYm9vbGVhbiA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgc3VjY2VzcyA9IHRoaXMuaGFuZGxlRW50ZXIodmlldyk7XG5cdFx0XHRcdFx0cmV0dXJuIHN1Y2Nlc3M7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRdKSkpO1xuXG5cdFx0dGhpcy5sYW5nID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpO1xuXHRcdGxldCBjb21tYW5kX25hbWVfbWFwID0gdGhpcy5nZXRDb21tYW5kTmFtZU1hcCgpO1xuXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcImVhc3ktdHlwaW5nLWZvcm1hdC1hcnRpY2xlXCIsXG5cdFx0XHRuYW1lOiBjb21tYW5kX25hbWVfbWFwLmdldChcImZvcm1hdF9hcnRpY2xlXCIpLFxuXHRcdFx0ZWRpdG9yQ2FsbGJhY2s6IChlZGl0b3I6IEVkaXRvciwgdmlldzogTWFya2Rvd25WaWV3KSA9PiB7XG5cdFx0XHRcdHRoaXMuZm9ybWF0QXJ0aWNsZShlZGl0b3IsIHZpZXcpO1xuXHRcdFx0fSxcblx0XHRcdGhvdGtleXM6IFt7XG5cdFx0XHRcdG1vZGlmaWVyczogWydDdHJsJywgJ1NoaWZ0J10sXG5cdFx0XHRcdGtleTogXCJzXCJcblx0XHRcdH1dLFxuXHRcdH0pO1xuXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcImVhc3ktdHlwaW5nLWZvcm1hdC1zZWxlY3Rpb25cIixcblx0XHRcdG5hbWU6IGNvbW1hbmRfbmFtZV9tYXAuZ2V0KFwiZm9ybWF0X3NlbGVjdGlvblwiKSxcblx0XHRcdGVkaXRvckNhbGxiYWNrOiAoZWRpdG9yOiBFZGl0b3IsIHZpZXc6IE1hcmtkb3duVmlldykgPT4ge1xuXHRcdFx0XHR0aGlzLmZvcm1hdFNlbGVjdGlvbk9yQ3VyTGluZShlZGl0b3IsIHZpZXcpO1xuXHRcdFx0fSxcblx0XHRcdGhvdGtleXM6IFt7XG5cdFx0XHRcdG1vZGlmaWVyczogWydDdHJsJywgJ1NoaWZ0J10sXG5cdFx0XHRcdGtleTogXCJsXCJcblx0XHRcdH1dLFxuXHRcdH0pO1xuXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcImVhc3ktdHlwaW5nLWRlbGV0ZS1ibGFuay1saW5lXCIsXG5cdFx0XHRuYW1lOiBjb21tYW5kX25hbWVfbWFwLmdldChcImRlbGV0ZV9ibGFua19saW5lXCIpLFxuXHRcdFx0ZWRpdG9yQ2FsbGJhY2s6IChlZGl0b3I6IEVkaXRvciwgdmlldzogTWFya2Rvd25WaWV3KSA9PiB7XG5cdFx0XHRcdHRoaXMuZGVsZXRlQmxhbmtMaW5lcyhlZGl0b3IpO1xuXHRcdFx0fSxcblx0XHRcdGhvdGtleXM6IFt7XG5cdFx0XHRcdG1vZGlmaWVyczogWydDdHJsJywgJ1NoaWZ0J10sXG5cdFx0XHRcdGtleTogXCJrXCJcblx0XHRcdH1dLFxuXHRcdH0pO1xuXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcImVhc3ktdHlwaW5nLWluc2VydC1jb2RlYmxvY2tcIixcblx0XHRcdG5hbWU6IGNvbW1hbmRfbmFtZV9tYXAuZ2V0KFwiaW5zZXJ0X2NvZGVibG9ja1wiKSxcblx0XHRcdGVkaXRvckNhbGxiYWNrOiAoZWRpdG9yOiBFZGl0b3IsIHZpZXc6IE1hcmtkb3duVmlldykgPT4ge1xuXHRcdFx0XHR0aGlzLmNvbnZlcnQyQ29kZUJsb2NrKGVkaXRvcik7XG5cdFx0XHR9LFxuXHRcdFx0aG90a2V5czogW3tcblx0XHRcdFx0bW9kaWZpZXJzOiBbJ0N0cmwnLCAnU2hpZnQnXSxcblx0XHRcdFx0a2V5OiBcIm5cIlxuXHRcdFx0fV0sXG5cdFx0fSk7XG5cblx0XHR0aGlzLmFkZENvbW1hbmQoe1xuXHRcdFx0aWQ6IFwiZWFzeS10eXBpbmctZm9ybWF0LXN3aXRjaFwiLFxuXHRcdFx0bmFtZTogY29tbWFuZF9uYW1lX21hcC5nZXQoXCJzd2l0Y2hfYXV0b2Zvcm1hdFwiKSxcblx0XHRcdGNhbGxiYWNrOiAoKSA9PiB0aGlzLnN3aXRjaEF1dG9Gb3JtYXR0aW5nKCksXG5cdFx0XHRob3RrZXlzOiBbe1xuXHRcdFx0XHRtb2RpZmllcnM6IFsnQ3RybCddLFxuXHRcdFx0XHRrZXk6IFwidGFiXCJcblx0XHRcdH1dLFxuXHRcdH0pO1xuXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcImVhc3ktdHlwaW5nLXBhc3RlLXdpdGhvdXQtZm9ybWF0XCIsXG5cdFx0XHRuYW1lOiBjb21tYW5kX25hbWVfbWFwLmdldChcInBhc3RlX3dvX2Zvcm1hdFwiKSxcblx0XHRcdGVkaXRvckNhbGxiYWNrOiAoZWRpdG9yKSA9PiB0aGlzLm5vcm1hbFBhc3RlKGVkaXRvciksXG5cdFx0XHRob3RrZXlzOiBbXG5cdFx0XHQgIHtcblx0XHRcdFx0bW9kaWZpZXJzOiBbXCJNb2RcIiwgXCJTaGlmdFwiXSxcblx0XHRcdFx0a2V5OiBcInZcIixcblx0XHRcdCAgfSxcblx0XHRcdF0sXG5cdFx0ICB9KTtcblxuXHRcdC8vIFRoaXMgYWRkcyBhIHNldHRpbmdzIHRhYiBzbyB0aGUgdXNlciBjYW4gY29uZmlndXJlIHZhcmlvdXMgYXNwZWN0cyBvZiB0aGUgcGx1Z2luXG5cdFx0dGhpcy5hZGRTZXR0aW5nVGFiKG5ldyBFYXN5VHlwaW5nU2V0dGluZ1RhYih0aGlzLmFwcCwgdGhpcykpO1xuXG5cdFx0dGhpcy5yZWdpc3RlckV2ZW50KHRoaXMuYXBwLndvcmtzcGFjZS5vbignYWN0aXZlLWxlYWYtY2hhbmdlJywgKGxlYWY6IFdvcmtzcGFjZUxlYWYpID0+IHtcblx0XHRcdGlmIChsZWFmLnZpZXcuZ2V0Vmlld1R5cGUoKSA9PSAnbWFya2Rvd24nKSB7XG5cdFx0XHRcdGxldCBmaWxlID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZUZpbGUoKTtcblx0XHRcdFx0aWYgKGZpbGUgIT0gbnVsbCAmJiB0aGlzLkN1ckFjdGl2ZU1hcmtkb3duICE9IGZpbGUucGF0aCkge1xuXHRcdFx0XHRcdHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24gPSBmaWxlLnBhdGg7XG5cdFx0XHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpXG5cdFx0XHRcdFx0XHRuZXcgTm90aWNlKCduZXcgbWQtZmlsZSBvcGVuOiAnICsgZmlsZS5wYXRoKVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSkpO1xuXG5cdFx0Ly8gdGhpcy5yZWdpc3RlckV2ZW50KHRoaXMuYXBwLndvcmtzcGFjZS5vbignZmlsZS1vcGVuJywgKGZpbGU6IFRGaWxlIHwgbnVsbCkgPT4ge1xuXHRcdC8vIFx0aWYgKGZpbGUgIT0gbnVsbCkge1xuXHRcdC8vIFx0XHRsZXQgZWRpdG9yID0gdGhpcy5nZXRFZGl0b3IoKTtcblx0XHQvLyBcdFx0aWYgKGVkaXRvciA9PT0gbnVsbCkgcmV0dXJuO1xuXHRcdC8vIFx0XHR0aGlzLkNvbnRlbnRQYXJzZXIucGFyc2VOZXdBcnRpY2xlKGVkaXRvci5nZXRWYWx1ZSgpKTtcblx0XHQvLyBcdFx0aWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIHtcblx0XHQvLyBcdFx0XHRuZXcgTm90aWNlKFwiRWFzeVR5cGluZzogUGFyc2UgTmV3IEFydGljbGU6IFwiICsgZmlsZS52YXVsdC5nZXROYW1lKCkgKyAnLycgKyBmaWxlLnBhdGgpO1xuXHRcdC8vIFx0XHRcdC8vIGlmICh0aGlzLnNldHRpbmdzLmRlYnVnKSB0aGlzLkNvbnRlbnRQYXJzZXIucHJpbnQoKTtcblx0XHQvLyBcdFx0fVxuXHRcdC8vIFx0fVxuXHRcdC8vIH0pKTtcblx0fVxuXG5cdG9udW5sb2FkKCkge1xuXHR9XG5cblx0dHJhbnNhY3Rpb25GaWx0ZXJQbHVnaW4gPSAodHI6IFRyYW5zYWN0aW9uKTogVHJhbnNhY3Rpb25TcGVjIHwgcmVhZG9ubHkgVHJhbnNhY3Rpb25TcGVjW10gPT4ge1xuXHRcdGNvbnN0IGNoYW5nZXM6IFRyYW5zYWN0aW9uU3BlY1tdID0gW107XG5cdFx0aWYgKCF0ci5kb2NDaGFuZ2VkKSByZXR1cm4gdHI7XG5cdFx0bGV0IHNlbGVjdGVkID0gdHIuc3RhcnRTdGF0ZS5zZWxlY3Rpb24uYXNTaW5nbGUoKS5tYWluLmFuY2hvciAhPSB0ci5zdGFydFN0YXRlLnNlbGVjdGlvbi5hc1NpbmdsZSgpLm1haW4uaGVhZDtcblxuXHRcdGxldCBjaGFuZ2VUeXBlU3RyID0gZ2V0VHlwZVN0ck9mVHJhbnNhYyh0cik7XG5cdFx0dHIuY2hhbmdlcy5pdGVyQ2hhbmdlcygoZnJvbUEsIHRvQSwgZnJvbUIsIHRvQiwgaW5zZXJ0ZWQpID0+IHtcblx0XHRcdGxldCBjaGFuZ2VkU3RyID0gdHIuc3RhcnRTdGF0ZS5zbGljZURvYyhmcm9tQSwgdG9BKTtcblx0XHRcdGxldCBpbnNlcnRlZFN0ciA9IGluc2VydGVkLnNsaWNlU3RyaW5nKDApO1xuXHRcdFx0Ly8gaWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpXG5cdFx0XHQvLyB7XG5cdFx0XHQvLyBcdGNvbnNvbGUubG9nKFwiVHJhbnNhY3Rpb25GaWx0ZXIgY2F0Y2ggY2hhbmdlOlwiLGNoYW5nZVR5cGVTdHIsIGZyb21BLCB0b0EsIGZyb21CLCB0b0IsIGluc2VydGVkU3RyKTtcblx0XHRcdC8vIH1cblx0XHRcdC8vID09PT09PT09PT0gU2VsZWN0aW9uIFJlcGxhY2UgPT09PT09PT09PT09XG5cdFx0XHRpZiAodGhpcy5zZXR0aW5ncy5TZWxlY3Rpb25FbmhhbmNlKSB7XG5cdFx0XHRcdGlmICgoY2hhbmdlVHlwZVN0ciA9PSAnaW5wdXQudHlwZScgfHwgY2hhbmdlVHlwZVN0ciA9PSBcImlucHV0LnR5cGUuY29tcG9zZVwiKSAmJiBmcm9tQSAhPSB0b0EgJiYgZnJvbUIgKyAxID09PSB0b0IpIHtcblx0XHRcdFx0XHRpZiAodGhpcy5TZWxlY3Rpb25SZXBsYWNlTWFwLmhhcyhpbnNlcnRlZFN0cikpIHtcblx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7IGNoYW5nZXM6IHsgZnJvbTogZnJvbUEsIGluc2VydDogdGhpcy5TZWxlY3Rpb25SZXBsYWNlTWFwLmdldChpbnNlcnRlZFN0cik/LmxlZnQgfSwgdXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCIgfSlcblx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7IGNoYW5nZXM6IHsgZnJvbTogdG9BLCBpbnNlcnQ6IHRoaXMuU2VsZWN0aW9uUmVwbGFjZU1hcC5nZXQoaW5zZXJ0ZWRTdHIpPy5yaWdodCB9LCB1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIiB9KVxuXHRcdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKHNlbGVjdGVkKSByZXR1cm4gdHI7XG5cblx0XHRcdC8vIFVzZXJEZWZpbmVkIERlbGV0ZSBSdWxlXG5cdFx0XHRpZiAoY2hhbmdlVHlwZVN0ciA9PSBcImRlbGV0ZS5iYWNrd2FyZFwiKSB7XG5cdFx0XHRcdGZvciAobGV0IHJ1bGUgb2YgdGhpcy5Vc2VyRGVsZXRlUnVsZXMpIHtcblx0XHRcdFx0XHRsZXQgbGVmdCA9IHRyLnN0YXJ0U3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoLCB0b0EpO1xuXHRcdFx0XHRcdGxldCByaWdodCA9IHRyLnN0YXJ0U3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQSwgdG9BICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoKTtcblx0XHRcdFx0XHRpZiAobGVmdCA9PT0gcnVsZS5iZWZvcmUubGVmdCAmJiByaWdodCA9PT0gcnVsZS5iZWZvcmUucmlnaHQpIHtcblx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGNoYW5nZXM6IHtcblx0XHRcdFx0XHRcdFx0XHRmcm9tOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHR0bzogdG9BICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdGluc2VydDogcnVsZS5hZnRlci5sZWZ0ICsgcnVsZS5hZnRlci5yaWdodFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIHJ1bGUuYWZ0ZXIubGVmdC5sZW5ndGggfSxcblx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gPT09PT09PT09PSBkZWxldGUgcGFpciBzeW1ib2wgPT09PT09PT09PT09XG5cdFx0XHRpZiAoY2hhbmdlVHlwZVN0ciA9PT0gXCJkZWxldGUuYmFja3dhcmRcIiAmJiB0aGlzLnNldHRpbmdzLkludHJpbnNpY1N5bWJvbFBhaXJzKSB7XG5cdFx0XHRcdGlmICh0aGlzLlN5bWJvbFBhaXJzTWFwLmhhcyhjaGFuZ2VkU3RyKSAmJiB0aGlzLlN5bWJvbFBhaXJzTWFwLmdldChjaGFuZ2VkU3RyKSA9PT0gdHIuc3RhcnRTdGF0ZS5zbGljZURvYyh0b0EsIHRvQSArIDEpKSB7XG5cdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHsgY2hhbmdlczogeyBmcm9tOiBmcm9tQSwgdG86IHRvQSArIDEgfSwgdXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCIgfSk7XG5cdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdH1cblx0XHRcdFx0Zm9yIChsZXQgcnVsZSBvZiB0aGlzLkludHJpbnNpY0RlbGV0ZVJ1bGVzKSB7XG5cdFx0XHRcdFx0bGV0IGxlZnQgPSB0ci5zdGFydFN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCwgdG9BKTtcblx0XHRcdFx0XHRsZXQgcmlnaHQgPSB0ci5zdGFydFN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0EsIHRvQSArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCk7XG5cdFx0XHRcdFx0aWYgKGxlZnQgPT09IHJ1bGUuYmVmb3JlLmxlZnQgJiYgcmlnaHQgPT09IHJ1bGUuYmVmb3JlLnJpZ2h0KSB7XG5cdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0XHRcdFx0ZnJvbTogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGgsXG5cdFx0XHRcdFx0XHRcdFx0dG86IHRvQSArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHRpbnNlcnQ6IHJ1bGUuYWZ0ZXIubGVmdCArIHJ1bGUuYWZ0ZXIucmlnaHRcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyBydWxlLmFmdGVyLmxlZnQubGVuZ3RoIH0sXG5cdFx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFx1OTAxQVx1NUUzOFx1NTM1NVx1NUI1N1x1OEY5M1x1NTE2NVxuXHRcdFx0aWYgKChjaGFuZ2VUeXBlU3RyID09ICdpbnB1dC50eXBlJyB8fCBjaGFuZ2VUeXBlU3RyID09IFwiaW5wdXQudHlwZS5jb21wb3NlXCIpICYmIGZyb21BID09PSB0b0EgJiYgZnJvbUIgKyAxID09PSB0b0IpIHtcblx0XHRcdFx0Ly8gaWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIGNvbnNvbGUubG9nKFwiSW5wdXQudHlwZSA9PiBcIiwgaW5zZXJ0ZWRTdHIpXG5cdFx0XHRcdC8vID09PT09PT09PT09IGJhc2ljIGNvbnZlcnQgcnVsZXMgPT09PT09PT09PT09XG5cdFx0XHRcdC8vIG5vdCBzdXBwb3J0IHVuZG8gYW5kIHJlZG9cblx0XHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuQmFzZU9iRWRpdEVuaGFuY2UpIHtcblx0XHRcdFx0XHRmb3IgKGxldCBydWxlIG9mIHRoaXMuQmFzaWNDb252UnVsZXMpIHtcblx0XHRcdFx0XHRcdGlmIChpbnNlcnRlZFN0ciAhPSBydWxlLmJlZm9yZS5sZWZ0LmNoYXJBdChydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCAtIDEpKSBjb250aW51ZTtcblx0XHRcdFx0XHRcdC8vIFx1NTkwNFx1NzQwNlx1NjU4N1x1Njg2M1x1N0IyQyAwIFx1ODg0Q1xuXHRcdFx0XHRcdFx0aWYgKHJ1bGUuYmVmb3JlLmxlZnQuY2hhckF0KDApID09PSAnXFxuJyAmJiBvZmZzZXRUb1Bvcyh0ci5zdGF0ZS5kb2MsIGZyb21BKS5saW5lID09PSAwICYmIHRvQiAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgMSA9PT0gMCkge1xuXHRcdFx0XHRcdFx0XHRsZXQgbGVmdCA9IHRyLnN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0IgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIDEsIHRvQik7XG5cdFx0XHRcdFx0XHRcdGxldCByaWdodCA9IHRyLnN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0IsIHRvQiArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCk7XG5cdFx0XHRcdFx0XHRcdGlmIChsZWZ0ID09PSBydWxlLmJlZm9yZS5sZWZ0LnN1YnN0cmluZygxKSAmJiByaWdodCA9PT0gcnVsZS5iZWZvcmUucmlnaHQpIHtcblx0XHRcdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2hhbmdlczoge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmcm9tOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIDIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRvOiB0b0EgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGluc2VydDogcnVsZS5hZnRlci5sZWZ0LnN1YnN0cmluZygxKSArIHJ1bGUuYWZ0ZXIucmlnaHRcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIHJ1bGUuYWZ0ZXIubGVmdC5sZW5ndGggKyAxIH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQvLyBcdTkwMUFcdTVFMzhcdTYwQzVcdTUxQjVcdTU5MDRcdTc0MDZcblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRsZXQgbGVmdCA9IHRyLnN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0IgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCwgdG9CKTtcblx0XHRcdFx0XHRcdFx0bGV0IHJpZ2h0ID0gdHIuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiwgdG9CICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoKTtcblx0XHRcdFx0XHRcdFx0aWYgKGxlZnQgPT09IHJ1bGUuYmVmb3JlLmxlZnQgJiYgcmlnaHQgPT09IHJ1bGUuYmVmb3JlLnJpZ2h0KSB7XG5cdFx0XHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGNoYW5nZXM6IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZnJvbTogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyAxLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0bzogdG9BICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpbnNlcnQ6IHJ1bGUuYWZ0ZXIubGVmdCArIHJ1bGUuYWZ0ZXIucmlnaHRcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIHJ1bGUuYWZ0ZXIubGVmdC5sZW5ndGggKyAxIH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuRlcySFdFbmhhbmNlKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgcnVsZSBvZiB0aGlzLkZXMkhXU3ltYm9sUnVsZXMpIHtcblx0XHRcdFx0XHRcdGlmIChpbnNlcnRlZFN0ciAhPSBydWxlLmJlZm9yZS5sZWZ0LmNoYXJBdChydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCAtIDEpKSBjb250aW51ZTtcblx0XHRcdFx0XHRcdGxldCBsZWZ0ID0gdHIuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoLCB0b0IpO1xuXHRcdFx0XHRcdFx0bGV0IHJpZ2h0ID0gdHIuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiwgdG9CICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoKTtcblx0XHRcdFx0XHRcdGlmIChsZWZ0ID09PSBydWxlLmJlZm9yZS5sZWZ0ICYmIHJpZ2h0ID09PSBydWxlLmJlZm9yZS5yaWdodCkge1xuXHRcdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdGNoYW5nZXM6IHtcblx0XHRcdFx0XHRcdFx0XHRcdGZyb206IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgMSxcblx0XHRcdFx0XHRcdFx0XHRcdHRvOiB0b0EgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgsXG5cdFx0XHRcdFx0XHRcdFx0XHRpbnNlcnQ6IHJ1bGUuYWZ0ZXIubGVmdCArIHJ1bGUuYWZ0ZXIucmlnaHRcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgcnVsZS5hZnRlci5sZWZ0Lmxlbmd0aCArIDEgfSxcblx0XHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vID09PT09PT09PT09PT09PT0gYXV0byBwYWlyID09PT09PT09PT09PT09PT09XG5cdFx0XHRcdC8vIGxldCBQYWlyVmFsaWRTZXQgPSBuZXcgU2V0KFtcIlwiLCBcIiBcIixcIlxcblwiXSlcblx0XHRcdFx0Ly8gbGV0IGNoYXJBZnRlckN1cnNvciA9IHRyLnN0YXJ0U3RhdGUuc2xpY2VEb2ModG9BLCB0b0ErMSk7XG5cdFx0XHRcdGlmICh0aGlzLnNldHRpbmdzLkludHJpbnNpY1N5bWJvbFBhaXJzKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgcnVsZSBvZiB0aGlzLkludHJpbnNpY0F1dG9QYWlyUnVsZXNQYXRjaCkge1xuXHRcdFx0XHRcdFx0aWYgKGluc2VydGVkU3RyICE9IHJ1bGUuYmVmb3JlLmxlZnQuY2hhckF0KHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoIC0gMSkpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0bGV0IGxlZnQgPSB0ci5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGgsIHRvQik7XG5cdFx0XHRcdFx0XHRsZXQgcmlnaHQgPSB0ci5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CLCB0b0IgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgpO1xuXHRcdFx0XHRcdFx0aWYgKGxlZnQgPT09IHJ1bGUuYmVmb3JlLmxlZnQgJiYgcmlnaHQgPT09IHJ1bGUuYmVmb3JlLnJpZ2h0KSB7XG5cdFx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0Y2hhbmdlczoge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZnJvbTogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyAxLFxuXHRcdFx0XHRcdFx0XHRcdFx0dG86IHRvQSArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHRcdGluc2VydDogcnVsZS5hZnRlci5sZWZ0ICsgcnVsZS5hZnRlci5yaWdodFxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyBydWxlLmFmdGVyLmxlZnQubGVuZ3RoICsgMSB9LFxuXHRcdFx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKHRoaXMuU3ltYm9sUGFpcnNNYXAuaGFzKGluc2VydGVkU3RyKSkge1xuXHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlczogeyBmcm9tOiBmcm9tQSwgdG86IHRvQSwgaW5zZXJ0OiBpbnNlcnRlZFN0ciArIHRoaXMuU3ltYm9sUGFpcnNNYXAuZ2V0KGluc2VydGVkU3RyKSB9LFxuXHRcdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiBmcm9tQSArIDEgfSxcblx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gaGFuZGxlIGF1dG9wYWlyIGZvciBcIlx1MjAxRFwiIGFuZCBcIlx1MjAxOVwiXG5cdFx0XHRcdFx0aWYgKGluc2VydGVkU3RyID09PSAnXHUyMDFEJyB8fCBpbnNlcnRlZFN0ciA9PT0gJ1x1MjAxOScpIHtcblx0XHRcdFx0XHRcdGxldCB0ZW1wU3RyID0gaW5zZXJ0ZWRTdHIgPT09IFwiXHUyMDFEXCIgPyBcIlx1MjAxQ1x1MjAxRFwiIDogXCJcdTIwMThcdTIwMTlcIjtcblx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGNoYW5nZXM6IHsgZnJvbTogZnJvbUEsIHRvOiB0b0EsIGluc2VydDogdGVtcFN0ciB9LFxuXHRcdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiBmcm9tQSArIDEgfSxcblx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KVxuXHRcdHJldHVybiB0cjtcblx0fVxuXG5cdGFzeW5jIG5vcm1hbFBhc3RlKGVkaXRvcjogRWRpdG9yKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0bGV0IGNsaXBib2FyZFRleHQgPSBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLnJlYWRUZXh0KCk7XG5cdFx0aWYgKGNsaXBib2FyZFRleHQgPT09IG51bGwgfHwgY2xpcGJvYXJkVGV4dCA9PT0gXCJcIikgcmV0dXJuO1xuXG5cdFx0ZWRpdG9yLnJlcGxhY2VTZWxlY3Rpb24oY2xpcGJvYXJkVGV4dCk7XG5cdH1cblxuXHR2aWV3VXBkYXRlUGx1Z2luID0gKHVwZGF0ZTogVmlld1VwZGF0ZSkgPT4ge1xuXHRcdGlmICh0aGlzLm9uRm9ybWF0QXJ0aWNsZSA9PT0gdHJ1ZSkgcmV0dXJuO1xuXG5cdFx0Ly8gY29uc29sZS5sb2codHJlZSk7XG5cblx0XHQvLyBpZiAodGhpcy5zZXR0aW5ncy5kZWJ1ZykgY29uc29sZS5sb2coXCItLS0tLS0tVmlld1VwZGF0ZS0tLS0tLS0tLVwiKTtcblx0XHRsZXQgbm90U2VsZWN0ZWQgPSB0cnVlO1xuXHRcdGxldCBtYWluU2VsZWN0aW9uID0gdXBkYXRlLnZpZXcuc3RhdGUuc2VsZWN0aW9uLmFzU2luZ2xlKCkubWFpbjtcblx0XHRpZiAobWFpblNlbGVjdGlvbi5hbmNob3IgIT0gbWFpblNlbGVjdGlvbi5oZWFkKSBub3RTZWxlY3RlZCA9IGZhbHNlO1xuXHRcdC8vIC0tLS0tLSBEZWJ1ZyAtLS0tLS0tLS0tLS1cblx0XHQvLyBpZiAobm90U2VsZWN0ZWQpe1xuXHRcdC8vIFx0Ly8gdGhpcy5Gb3JtYXRlci5wYXJzZUxpbmVXaXRoU3ludGF4VHJlZSh1cGRhdGUuc3RhdGUsIHVwZGF0ZS5zdGF0ZS5kb2MubGluZUF0KG1haW5TZWxlY3Rpb24uYW5jaG9yKS5udW1iZXIpO1xuXHRcdC8vIFx0Y29uc3QgdHJlZSA9IHN5bnRheFRyZWUodXBkYXRlLnN0YXRlKTtcblx0XHQvLyBcdGxldCBwb3MgPSBtYWluU2VsZWN0aW9uLmFuY2hvcjtcblx0XHQvLyBcdGxldCBub2RlID0gdHJlZS5yZXNvbHZlKHBvcywgMSk7XG5cdFx0Ly8gXHRjb25zb2xlLmxvZyhub2RlLm5hbWUsIG5vZGUuZnJvbSwgbm9kZS50bywgdXBkYXRlLnN0YXRlLmRvYy5zbGljZVN0cmluZyhub2RlLmZyb20sIG5vZGUudG8pKTtcblx0XHQvLyB9XG5cblx0XHRpZiAoIXVwZGF0ZS5kb2NDaGFuZ2VkKSByZXR1cm47XG5cblx0XHRsZXQgaXNFeGNsdWRlRmlsZSA9IHRoaXMuaXNDdXJyZW50RmlsZUV4Y2x1ZGUoKTtcblx0XHQvLyBjb25zb2xlLmxvZyh0aGlzLkN1ckFjdGl2ZU1hcmtkb3duLCBpc0V4Y2x1ZGVGaWxlKVxuXG5cdFx0Ly8gaWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIGNvbnNvbGUubG9nKFwiLS0tLS1WaWV3VXBkYXRlV0NoYW5nZS0tLS0tXCIpO1xuXHRcdGxldCB0ciA9IHVwZGF0ZS50cmFuc2FjdGlvbnNbMF1cblx0XHRsZXQgY2hhbmdlVHlwZSA9IGdldFR5cGVTdHJPZlRyYW5zYWModHIpO1xuXHRcdHRyLmNoYW5nZXMuaXRlckNoYW5nZXMoKGZyb21BLCB0b0EsIGZyb21CLCB0b0IsIGluc2VydGVkKSA9PiB7XG5cdFx0XHRsZXQgaW5zZXJ0ZWRTdHIgPSBpbnNlcnRlZC5zbGljZVN0cmluZygwKTtcblx0XHRcdGxldCBjaGFuZ2VkU3RyID0gdHIuc3RhcnRTdGF0ZS5kb2Muc2xpY2VTdHJpbmcoZnJvbUEsIHRvQSk7XG5cdFx0XHRpZiAodGhpcy5zZXR0aW5ncy5kZWJ1Zylcblx0XHRcdFx0Y29uc29sZS5sb2coXCJWaWV3VXBkYXRlIENhdGNoIENoYW5nZS0+IFR5cGU6IFwiICsgY2hhbmdlVHlwZSArIFwiLCBcIiwgZnJvbUEsIHRvQSwgY2hhbmdlZFN0ciwgZnJvbUIsIHRvQiwgaW5zZXJ0ZWRTdHIpO1xuXG5cdFx0XHQvLyBcdTYyN0VcdTUyMzBcdTUxNDlcdTY4MDdcdTRGNERcdTdGNkVcdUZGMENcdTZCRDRcdThGODNcdTU0OEMgdG9CIFx1NzY4NFx1NEY0RFx1N0Y2RVx1NjYyRlx1NTQyNlx1NzZGOFx1NTQwQ1x1RkYwQ1x1NzZGOFx1NTQwQ1x1NEUxNFx1NjcwMFx1N0VDOFx1NjNEMlx1NTE2NVx1NjU4N1x1NUI1N1x1NEUzQVx1NEUyRFx1NjU4N1x1RkYwQ1x1NTIxOVx1NEUzQVx1NEUyRFx1NjU4N1x1OEY5M1x1NTE2NVx1N0VEM1x1Njc1Rlx1NzY4NFx1NzJCNlx1NjAwMVxuXHRcdFx0bGV0IGN1cnNvciA9IHVwZGF0ZS52aWV3LnN0YXRlLnNlbGVjdGlvbi5hc1NpbmdsZSgpLm1haW47XG5cdFx0XHRsZXQgQ2hpbmVzZVJlZ0V4cCA9IC9eW1xcdTRlMDAtXFx1OWZhNVx1MzAxMFx1MzAxMVx1MDBCN1x1RkZFNVx1MzAwQVx1MzAwQlx1RkYxRlx1RkYxQVx1MjAxOVx1MjAxOFx1MjAxRFx1MjAxQ1x1MzAwQ1x1MzAwRFx1MzAwMVx1MzAwMlx1RkYwQ1x1RkYwOFx1RkYwOVx1RkYwMVx1MjAxNFx1MjAxNFx1MjAyNlx1MjAyNjAtOV0rJC87XG5cdFx0XHRsZXQgY2hpbmVzZUVuZEZsYWcgPSBjaGFuZ2VUeXBlID09IFwiaW5wdXQudHlwZS5jb21wb3NlXCIgJiZcblx0XHRcdFx0Y3Vyc29yLmFuY2hvciA9PSBjdXJzb3IuaGVhZCAmJiBjdXJzb3IuYW5jaG9yID09PSB0b0IgJiZcblx0XHRcdFx0Q2hpbmVzZVJlZ0V4cC50ZXN0KGluc2VydGVkU3RyKTtcblxuXHRcdFx0aWYgKGNoYW5nZVR5cGUgIT0gXCJpbnB1dC50eXBlLmNvbXBvc2VcIikgdGhpcy5jb21wb3NlX25lZWRfaGFuZGxlID0gZmFsc2U7XG5cdFx0XHRpZiAodGhpcy5zZXR0aW5ncy5BdXRvRm9ybWF0ICYmIG5vdFNlbGVjdGVkICYmICFpc0V4Y2x1ZGVGaWxlICYmXG5cdFx0XHRcdGdldFBvc0xpbmVUeXBlKHVwZGF0ZS52aWV3LnN0YXRlLCBmcm9tQikgPT0gTGluZVR5cGUudGV4dCkge1xuXHRcdFx0XHRpZiAoY2hhbmdlVHlwZSA9PSBcImlucHV0LnR5cGUuY29tcG9zZVwiKSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZSA9PSBmYWxzZSkge1xuXHRcdFx0XHRcdFx0dGhpcy5jb21wb3NlX2JlZ2luX3BvcyA9IGZyb21CO1xuXHRcdFx0XHRcdFx0dGhpcy5jb21wb3NlX2VuZF9wb3MgPSB0b0I7XG5cdFx0XHRcdFx0XHR0aGlzLmNvbXBvc2VfbmVlZF9oYW5kbGUgPSB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdHRoaXMuY29tcG9zZV9lbmRfcG9zID0gdG9CO1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMuY29tcG9zZV9iZWdpbl9wb3MgPT0gdGhpcy5jb21wb3NlX2VuZF9wb3MpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5jb21wb3NlX25lZWRfaGFuZGxlID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChjaGluZXNlRW5kRmxhZykgdGhpcy5jb21wb3NlX25lZWRfaGFuZGxlID0gZmFsc2U7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKFwiQ29tcG9zZVwiLCBjaGluZXNlRW5kRmxhZywgdGhpcy5jb21wb3NlX25lZWRfaGFuZGxlKTtcblx0XHRcdH1cblxuXG5cdFx0XHQvLyBcdTUyMjRcdTY1QURcdTZCQ0ZcdTZCMjFcdThGOTNcdTUxNjVcdTdFRDNcdTY3NUZcblx0XHRcdGlmIChjaGFuZ2VUeXBlID09ICdpbnB1dC50eXBlJyB8fCBjaGFuZ2VUeXBlID09IFwiaW5wdXRcIiB8fCBjaGluZXNlRW5kRmxhZyB8fCBjaGFuZ2VUeXBlID09ICdub25lJykge1xuXHRcdFx0XHQvLyBcdTc1MjhcdTYyMzdcdTgxRUFcdTVCOUFcdTRFNDlcdThGNkNcdTUzMTZcdTg5QzRcdTUyMTlcblx0XHRcdFx0Zm9yIChsZXQgcnVsZSBvZiB0aGlzLlVzZXJDb252ZXJ0UnVsZXMpIHtcblx0XHRcdFx0XHQvLyBpZiAoaW5zZXJ0ZWRTdHIgIT0gcnVsZS5iZWZvcmUubGVmdC5zdWJzdHJpbmcocnVsZS5iZWZvcmUubGVmdC5sZW5ndGggLSBpbnNlcnRlZFN0ci5sZW5ndGgpKSBjb250aW51ZTtcblx0XHRcdFx0XHRsZXQgbGVmdCA9IHVwZGF0ZS52aWV3LnN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0IgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCwgdG9CKTtcblx0XHRcdFx0XHRsZXQgcmlnaHQgPSB1cGRhdGUudmlldy5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CLCB0b0IgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgpO1xuXHRcdFx0XHRcdGlmIChsZWZ0ID09PSBydWxlLmJlZm9yZS5sZWZ0ICYmIHJpZ2h0ID09PSBydWxlLmJlZm9yZS5yaWdodCkge1xuXHRcdFx0XHRcdFx0dXBkYXRlLnZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0XHRcdFx0ZnJvbTogdG9CIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGgsXG5cdFx0XHRcdFx0XHRcdFx0dG86IHRvQiArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHRpbnNlcnQ6IHJ1bGUuYWZ0ZXIubGVmdCArIHJ1bGUuYWZ0ZXIucmlnaHRcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogdG9CIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyBydWxlLmFmdGVyLmxlZnQubGVuZ3RoIH0sXG5cdFx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICh0aGlzLnNldHRpbmdzLlB1bmNSZWN0aWZ5ICYmIGNoaW5lc2VFbmRGbGFnICYmIHRoaXMuY29tcG9zZV9iZWdpbl9wb3MgPiAxICYmXG5cdFx0XHRcdFx0L1ssLj8hXS8udGVzdCh1cGRhdGUudmlldy5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodGhpcy5jb21wb3NlX2JlZ2luX3BvcyAtIDEsIHRoaXMuY29tcG9zZV9iZWdpbl9wb3MpKSkge1xuXHRcdFx0XHRcdGxldCBwdW5jID0gdXBkYXRlLnZpZXcuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRoaXMuY29tcG9zZV9iZWdpbl9wb3MgLSAxLCB0aGlzLmNvbXBvc2VfYmVnaW5fcG9zKVxuXHRcdFx0XHRcdGlmICh0aGlzLmNvbXBvc2VfYmVnaW5fcG9zID4gMiAmJlxuXHRcdFx0XHRcdFx0L1tcXHNcXG5cXHddLy50ZXN0KHVwZGF0ZS52aWV3LnN0YXRlLmRvYy5zbGljZVN0cmluZyh0aGlzLmNvbXBvc2VfYmVnaW5fcG9zIC0gMiwgdGhpcy5jb21wb3NlX2JlZ2luX3BvcyAtIDEpKSkgeyB9XG5cdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHR1cGRhdGUudmlldy5kaXNwYXRjaCh7XG5cdFx0XHRcdFx0XHRcdGNoYW5nZXM6IHtcblx0XHRcdFx0XHRcdFx0XHRmcm9tOiB0aGlzLmNvbXBvc2VfYmVnaW5fcG9zIC0gMSxcblx0XHRcdFx0XHRcdFx0XHR0bzogdGhpcy5jb21wb3NlX2JlZ2luX3Bvcyxcblx0XHRcdFx0XHRcdFx0XHRpbnNlcnQ6IHRoaXMuaGFsZlRvRnVsbFN5bWJvbE1hcC5nZXQocHVuYylcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0Ly8gc2VsZWN0aW9uOiB7IGFuY2hvcjogdG9CIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyBydWxlLmFmdGVyLmxlZnQubGVuZ3RoIH0sXG5cdFx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFx1NTIyNFx1NjVBRFx1NjgzQ1x1NUYwRlx1NTMxNlx1NjU4N1x1NjcyQ1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhcInJlYWR5IHRvIGZvcm1hdFwiKTtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJjaGVjayBpcyBleGNsdWUgZmlsZTpcIiwgaXNFeGNsdWRlRmlsZSlcblx0XHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuQXV0b0Zvcm1hdCAmJiBub3RTZWxlY3RlZCAmJiAhaXNFeGNsdWRlRmlsZSAmJiAoY2hhbmdlVHlwZSAhPSAnbm9uZScgfHwgaW5zZXJ0ZWRTdHIuY29udGFpbnMoXCJcXG5cIikpICYmXG5cdFx0XHRcdFx0Z2V0UG9zTGluZVR5cGUodXBkYXRlLnZpZXcuc3RhdGUsIGZyb21CKSA9PSBMaW5lVHlwZS50ZXh0KSB7XG5cdFx0XHRcdFx0bGV0IGNoYW5nZXMgPSB0aGlzLkZvcm1hdGVyLmZvcm1hdExpbmVPZkRvYyh1cGRhdGUuc3RhdGUsIHRoaXMuc2V0dGluZ3MsIGZyb21CLCBjdXJzb3IuYW5jaG9yLCBpbnNlcnRlZFN0cik7XG5cdFx0XHRcdFx0aWYgKGNoYW5nZXMgIT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0dXBkYXRlLnZpZXcuZGlzcGF0Y2goLi4uY2hhbmdlc1swXSk7XG5cdFx0XHRcdFx0XHR1cGRhdGUudmlldy5kaXNwYXRjaChjaGFuZ2VzWzFdKTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuQXV0b0Zvcm1hdCAmJiAhaXNFeGNsdWRlRmlsZSAmJiBjaGFuZ2VUeXBlID09IFwiaW5wdXQucGFzdGVcIiAmJiAhUGxhdGZvcm0uaXNJb3NBcHApIHtcblx0XHRcdFx0bGV0IHVwZGF0ZUxpbmVTdGFydCA9IHVwZGF0ZS5zdGF0ZS5kb2MubGluZUF0KGZyb21CKS5udW1iZXI7XG5cdFx0XHRcdGxldCB1cGRhdGVMaW5lRW5kID0gdXBkYXRlLnN0YXRlLmRvYy5saW5lQXQodG9CKS5udW1iZXI7XG5cdFx0XHRcdGlmICh1cGRhdGVMaW5lU3RhcnQgPT0gdXBkYXRlTGluZUVuZCAmJiBnZXRQb3NMaW5lVHlwZSh1cGRhdGUudmlldy5zdGF0ZSwgdG9CKSA9PSBMaW5lVHlwZS50ZXh0KSB7XG5cdFx0XHRcdFx0bGV0IGNoYW5nZXMgPSB0aGlzLkZvcm1hdGVyLmZvcm1hdExpbmVPZkRvYyh1cGRhdGUuc3RhdGUsIHRoaXMuc2V0dGluZ3MsIGZyb21CLCB0b0IsIGluc2VydGVkU3RyKTtcblx0XHRcdFx0XHRpZiAoY2hhbmdlcyAhPSBudWxsKSB7XG5cdFx0XHRcdFx0XHR1cGRhdGUudmlldy5kaXNwYXRjaCguLi5jaGFuZ2VzWzBdKTtcblx0XHRcdFx0XHRcdC8vIHVwZGF0ZS52aWV3LmRpc3BhdGNoKGNoYW5nZXNbMV0pO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRsZXQgYWxsX2NoYW5nZXM6IFRyYW5zYWN0aW9uU3BlY1tdID0gW107XG5cdFx0XHRcdFx0bGV0IGluc2VydGVkX2FycmF5ID0gaW5zZXJ0ZWRTdHIuc3BsaXQoXCJcXG5cIik7XG5cdFx0XHRcdFx0bGV0IHVwZGF0ZV9zdGFydCA9IGZyb21CXG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IHVwZGF0ZUxpbmVTdGFydDsgaSA8PSB1cGRhdGVMaW5lRW5kOyBpKyspIHtcblx0XHRcdFx0XHRcdGxldCByZWFsX2luc2VydGVkID0gaW5zZXJ0ZWRfYXJyYXlbaSAtIHVwZGF0ZUxpbmVTdGFydF07XG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZygncmVhbF9pbnNlcnRlZCcsIHJlYWxfaW5zZXJ0ZWQucmVwbGFjZSgvXFxuL2csICdcXFxcbicpKVxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ3VwZGF0ZV9kb2NfdGV4dCcsIHVwZGF0ZS5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodXBkYXRlX3N0YXJ0LCB1cGRhdGVfc3RhcnQgKyByZWFsX2luc2VydGVkLmxlbmd0aCkucmVwbGFjZSgvXFxuL2csICdcXFxcbicpKVxuXHRcdFx0XHRcdFx0bGV0IGNoYW5nZXMgPSB0aGlzLkZvcm1hdGVyLmZvcm1hdExpbmVPZkRvYyh1cGRhdGUuc3RhdGUsIHRoaXMuc2V0dGluZ3MsIHVwZGF0ZV9zdGFydCwgdXBkYXRlX3N0YXJ0ICsgcmVhbF9pbnNlcnRlZC5sZW5ndGgsIHJlYWxfaW5zZXJ0ZWQpO1xuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ2NoYW5nZXMnLCBjaGFuZ2VzKVxuXHRcdFx0XHRcdFx0aWYgKGNoYW5nZXMgIT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0XHRhbGxfY2hhbmdlcy5wdXNoKC4uLmNoYW5nZXNbMF0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dXBkYXRlX3N0YXJ0ICs9IHJlYWxfaW5zZXJ0ZWQubGVuZ3RoICsgMTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGFsbF9jaGFuZ2VzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdHVwZGF0ZS52aWV3LmRpc3BhdGNoKC4uLmFsbF9jaGFuZ2VzKTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcdC8vIGl0ZXJjaGFuZ2VzIGVuZFxuXHR9XG5cblx0cHJpdmF0ZSByZWFkb25seSBoYW5kbGVUYWJEb3duID0gKHZpZXc6IEVkaXRvclZpZXcpID0+IHtcblx0XHRpZiAoIXRoaXMuc2V0dGluZ3MuVGFib3V0KSByZXR1cm4gZmFsc2U7XG5cblx0XHRsZXQgc3RhdGUgPSB2aWV3LnN0YXRlO1xuXHRcdGxldCBkb2MgPSBzdGF0ZS5kb2Ncblx0XHRjb25zdCB0cmVlID0gc3ludGF4VHJlZShzdGF0ZSk7XG5cdFx0Y29uc3QgcyA9IHZpZXcuc3RhdGUuc2VsZWN0aW9uO1xuXHRcdGlmIChzLnJhbmdlcy5sZW5ndGggPiAxKSByZXR1cm4gZmFsc2U7XG5cdFx0Y29uc3QgcG9zID0gcy5tYWluLnRvO1xuXHRcdGxldCBsaW5lID0gZG9jLmxpbmVBdChwb3MpXG5cblx0XHQvLyBEZWJ1ZyBpbmZvXG5cdFx0Ly8gY29uc29sZS5sb2cobGluZS50ZXh0KVxuXHRcdC8vIGZvciAobGV0IHA9bGluZS5mcm9tOyBwPD1saW5lLnRvOyBwKz0xKXtcblx0XHQvLyBcdGNvbnN0IHRva2VuID0gdHJlZS5yZXNvbHZlKHAsIDEpLm5hbWVcblx0XHQvLyBcdGNvbnNvbGUubG9nKHAtbGluZS5mcm9tLCB0b2tlbilcblx0XHQvLyB9XG5cdFx0Ly8gcmV0dXJuIHRydWU7XG5cblx0XHQvLyBcdTVGNTNcdTUxNDlcdTY4MDdcdTU3MjhcdTg4NENcdTUxODVcdTRFRTNcdTc4MDFcdTUxODVcdTkwRThcblx0XHRpZiAocG9zIC0gbGluZS5mcm9tICE9IDAgJiYgdHJlZS5yZXNvbHZlKHBvcyAtIDEsIDEpLm5hbWUuY29udGFpbnMoJ2lubGluZS1jb2RlJykpIHtcblx0XHRcdGlmICh0cmVlLnJlc29sdmUocG9zLCAxKS5uYW1lLmNvbnRhaW5zKCdmb3JtYXR0aW5nLWNvZGVfaW5saW5lLWNvZGUnKSkge1xuXHRcdFx0XHR2aWV3LmRpc3BhdGNoKHtcblx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiBwb3MgKyAxLCBoZWFkOiBwb3MgKyAxIH1cblx0XHRcdFx0fSlcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cblx0XHRcdGZvciAobGV0IHAgPSBwb3MgKyAxOyBwIDwgbGluZS50byAmJiB0cmVlLnJlc29sdmUocCwgMSkubmFtZS5jb250YWlucygnaW5saW5lLWNvZGUnKTsgcCArPSAxKSB7XG5cdFx0XHRcdC8vIFx1NTk4Mlx1Njc5Q1x1NjI3RVx1NTIzMCBgIFx1NTIxOVx1NTE0OVx1NjgwN1x1OERGM1x1NTIzMFx1NTE3Nlx1NTQwRVxuXHRcdFx0XHRpZiAodHJlZS5yZXNvbHZlKHAsIDEpLm5hbWUuY29udGFpbnMoJ2Zvcm1hdHRpbmctY29kZV9pbmxpbmUtY29kZScpKSB7XG5cdFx0XHRcdFx0dmlldy5kaXNwYXRjaCh7XG5cdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiBwLCBoZWFkOiBwIH1cblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIFx1NTk4Mlx1Njc5Q1x1NkNBMVx1NjI3RVx1NTIzMCBgIFx1NTIxOVx1NzZGNFx1NjNBNVx1OERGM1x1NTIzMFx1ODg0Q1x1NUMzRVxuXHRcdFx0XHRpZiAocCA9PSBsaW5lLnRvIC0gMSAmJiB0cmVlLnJlc29sdmUocCwgMSkubmFtZS5jb250YWlucygnaW5saW5lLWNvZGUnKSkge1xuXHRcdFx0XHRcdHZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogcCArIDEsIGhlYWQ6IHAgKyAxIH1cblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cHJpdmF0ZSByZWFkb25seSBoYW5kbGVFbnRlciA9ICh2aWV3OiBFZGl0b3JWaWV3KSA9PiB7XG5cdFx0Ly8gY29uc29sZS5sb2coXCJ0aGlzLnNldHRpbmdzLkVudGVyVHdpY2VcIiwgdGhpcy5zZXR0aW5ncy5FbnRlclR3aWNlKVxuXHRcdGlmICghdGhpcy5zZXR0aW5ncy5FbnRlclR3aWNlKSByZXR1cm4gZmFsc2U7XG5cblx0XHQvLyBjb25zdCBiYXNlUGF0aCA9ICh0aGlzLmFwcC52YXVsdC5hZGFwdGVyIGFzIGFueSkuYmFzZVBhdGhcblx0XHQvLyBsZXQgY29uZmlnX3BhdGggPSBiYXNlUGF0aCArIFwiL1wiICsgdGhpcy5hcHAudmF1bHQuY29uZmlnRGlyICsgXCIvYXBwLmpzb25cIjtcblx0XHQvLyBsZXQgY29uZmlnID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoY29uZmlnX3BhdGgsICd1dGYtOCcpKVxuXHRcdC8vIGxldCBzdHJpY3RMaW5lQnJlYWtzID0gY29uZmlnLnN0cmljdExpbmVCcmVha3MgfHwgZmFsc2U7XG5cdFx0bGV0IHN0cmljdExpbmVCcmVha3MgPSB0aGlzLmFwcC52YXVsdC5nZXRDb25maWcoXCJzdHJpY3RMaW5lQnJlYWtzXCIpO1xuXHRcdGlmICghc3RyaWN0TGluZUJyZWFrcykgcmV0dXJuIGZhbHNlO1xuXG5cdFx0bGV0IHN0YXRlID0gdmlldy5zdGF0ZTtcblx0XHRsZXQgZG9jID0gc3RhdGUuZG9jXG5cdFx0Y29uc3QgdHJlZSA9IHN5bnRheFRyZWUoc3RhdGUpO1xuXHRcdGNvbnN0IHMgPSB2aWV3LnN0YXRlLnNlbGVjdGlvbjtcblx0XHRpZiAocy5yYW5nZXMubGVuZ3RoID4gMSkgcmV0dXJuIGZhbHNlO1xuXHRcdGNvbnN0IHBvcyA9IHMubWFpbi50bztcblx0XHRsZXQgbGluZSA9IGRvYy5saW5lQXQocG9zKVxuXG5cdFx0Ly8gY29uc29sZS5sb2cobGluZS50ZXh0LCBnZXRQb3NMaW5lVHlwZTIoc3RhdGUsIHBvcykpXG5cdFx0Ly8gZm9yIChsZXQgcD1saW5lLmZyb207IHA8PWxpbmUudG87IHArPTEpe1xuXHRcdC8vIFx0Y29uc3QgdG9rZW4gPSB0cmVlLnJlc29sdmUocCwgMSkubmFtZVxuXHRcdC8vIFx0Y29uc29sZS5sb2cocC1saW5lLmZyb20sIHRva2VuKVxuXHRcdC8vIH1cblx0XHRpZiAoL15cXHMqJC8udGVzdChsaW5lLnRleHQpKSByZXR1cm4gZmFsc2U7XG5cdFx0ZWxzZSBpZiAoZ2V0UG9zTGluZVR5cGUyKHN0YXRlLCBwb3MpID09IExpbmVUeXBlLnRleHQpIHtcblx0XHRcdHZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0ZnJvbTogcG9zLFxuXHRcdFx0XHRcdHRvOiBwb3MsXG5cdFx0XHRcdFx0aW5zZXJ0OiAnXFxuXFxuJ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiBwb3MgKyAyIH0sXG5cdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHR9KVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cHJpdmF0ZSByZWFkb25seSBvbktleXVwID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50LCB2aWV3OiBFZGl0b3JWaWV3KSA9PiB7XG5cdFx0aWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKFwiS2V5dXA6XCIsIGV2ZW50LmtleSwgZXZlbnQuc2hpZnRLZXksIGV2ZW50LmN0cmxLZXl8fGV2ZW50Lm1ldGFLZXkpO1xuXHRcdFx0Y29uc29sZS5sb2coXCJLZXl1cDpcIiwgZXZlbnQua2V5KTtcblx0XHR9XG5cdFx0dGhpcy5oYW5kbGVFbmRDb21wb3NlVHlwZUtleShldmVudCwgdmlldyk7XG5cdH1cblxuXHRoYW5kbGVFbmRDb21wb3NlVHlwZUtleSA9IChldmVudDogS2V5Ym9hcmRFdmVudCwgdmlldzogRWRpdG9yVmlldykgPT4ge1xuXHRcdGlmICghdGhpcy5zZXR0aW5ncy5UcnlGaXhDaGluZXNlSU0pIHJldHVybjtcblx0XHRpZiAoWydFbnRlciddLmNvbnRhaW5zKGV2ZW50LmtleSkgJiYgdGhpcy5zZXR0aW5ncy5BdXRvRm9ybWF0ICYmXG5cdFx0XHR0aGlzLmNvbXBvc2VfbmVlZF9oYW5kbGUgJiYgIXRoaXMuaXNDdXJyZW50RmlsZUV4Y2x1ZGUoKSkge1xuXHRcdFx0bGV0IGN1cnNvciA9IHZpZXcuc3RhdGUuc2VsZWN0aW9uLmFzU2luZ2xlKCkubWFpbjtcblx0XHRcdGlmIChnZXRQb3NMaW5lVHlwZSh2aWV3LnN0YXRlLCBjdXJzb3IuYW5jaG9yKSAhPSBMaW5lVHlwZS50ZXh0KSByZXR1cm47XG5cdFx0XHRpZiAoY3Vyc29yLmhlYWQgIT0gY3Vyc29yLmFuY2hvcikgcmV0dXJuO1xuXHRcdFx0bGV0IGluc2VydGVkU3RyID0gdmlldy5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodGhpcy5jb21wb3NlX2JlZ2luX3BvcywgY3Vyc29yLmFuY2hvcik7XG5cdFx0XHRjb25zb2xlLmxvZyhcImluc2VydGVkIHN0clwiLCBpbnNlcnRlZFN0cik7XG5cdFx0XHRsZXQgY2hhbmdlcyA9IHRoaXMuRm9ybWF0ZXIuZm9ybWF0TGluZU9mRG9jKHZpZXcuc3RhdGUsIHRoaXMuc2V0dGluZ3MsXG5cdFx0XHRcdHRoaXMuY29tcG9zZV9iZWdpbl9wb3MsIGN1cnNvci5hbmNob3IsIGluc2VydGVkU3RyKTtcblx0XHRcdHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZSA9IGZhbHNlO1xuXHRcdFx0aWYgKGNoYW5nZXMgIT0gbnVsbCkge1xuXHRcdFx0XHR2aWV3LmRpc3BhdGNoKC4uLmNoYW5nZXNbMF0pO1xuXHRcdFx0XHR2aWV3LmRpc3BhdGNoKGNoYW5nZXNbMV0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Zm9ybWF0QXJ0aWNsZSA9IChlZGl0b3I6IEVkaXRvciwgdmlldzogTWFya2Rvd25WaWV3KTogdm9pZCA9PiB7XG5cdFx0XG5cdFx0dGhpcy5vbkZvcm1hdEFydGljbGUgPSB0cnVlO1xuXHRcdFxuXHRcdGxldCBsaW5lQ291bnQgPSBlZGl0b3IubGluZUNvdW50KCk7XG5cdFx0bGV0IG5ld19hcnRpY2xlID0gXCJcIjtcblx0XHRsZXQgY3MgPSBlZGl0b3IuZ2V0Q3Vyc29yKCk7XG5cdFx0bGV0IGNoID0gMDtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVDb3VudDsgaSsrKSB7XG5cdFx0XHRpZiAoaSAhPSAwKSBuZXdfYXJ0aWNsZSArPSAnXFxuJztcblx0XHRcdGlmIChpICE9IGNzLmxpbmUpIHtcblx0XHRcdFx0bmV3X2FydGljbGUgKz0gdGhpcy5wcmVGb3JtYXRPbmVMaW5lKGVkaXRvciwgaSArIDEpWzBdO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdGxldCBuZXdEYXRhID0gdGhpcy5wcmVGb3JtYXRPbmVMaW5lKGVkaXRvciwgaSArIDEsIGNzLmNoKTtcblx0XHRcdFx0bmV3X2FydGljbGUgKz0gbmV3RGF0YVswXTtcblx0XHRcdFx0Y2ggPSBuZXdEYXRhWzFdO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRlZGl0b3Iuc2V0VmFsdWUobmV3X2FydGljbGUpO1xuXHRcdGVkaXRvci5zZXRDdXJzb3IoeyBsaW5lOiBjcy5saW5lLCBjaDogY2ggfSk7XG5cblx0XHR0aGlzLm9uRm9ybWF0QXJ0aWNsZSA9IGZhbHNlO1xuXG5cdFx0bmV3IE5vdGljZShcIkVhc3lUeXBpbmc6IEZvcm1hdCBBcnRpY2xlIERvbmUhXCIpO1xuXHR9XG5cblx0aXNDdXJyZW50RmlsZUV4Y2x1ZGUoKTogYm9vbGVhbiB7XG5cdFx0aWYgKHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24gPT0gXCJcIikge1xuXHRcdFx0bGV0IGZpbGUgPSB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlRmlsZSgpO1xuXHRcdFx0aWYgKGZpbGUgIT0gbnVsbCAmJiB0aGlzLkN1ckFjdGl2ZU1hcmtkb3duICE9IGZpbGUucGF0aCkge1xuXHRcdFx0XHR0aGlzLkN1ckFjdGl2ZU1hcmtkb3duID0gZmlsZS5wYXRoO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRsZXQgZXhjbHVkZVBhdGhzID0gdGhpcy5zZXR0aW5ncy5FeGNsdWRlRmlsZXMuc3BsaXQoJ1xcbicpO1xuXHRcdGZvciAobGV0IGVwYXRoIG9mIGV4Y2x1ZGVQYXRocykge1xuXHRcdFx0aWYgKGVwYXRoLmNoYXJBdCgwKSA9PSAnLycpIGVwYXRoID0gZXBhdGguc3Vic3RyaW5nKDEpO1xuXHRcdFx0aWYgKHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24gPT0gZXBhdGgpIHJldHVybiB0cnVlO1xuXHRcdFx0bGV0IGxlbiA9IGVwYXRoLmxlbmd0aDtcblx0XHRcdGlmICh0aGlzLkN1ckFjdGl2ZU1hcmtkb3duLnN1YnN0cmluZygwLCBsZW4pID09IGVwYXRoICYmICh0aGlzLkN1ckFjdGl2ZU1hcmtkb3duLmNoYXJBdChsZW4pID09ICcvJyB8fCB0aGlzLkN1ckFjdGl2ZU1hcmtkb3duLmNoYXJBdChsZW4pID09ICdcXFxcJyB8fFxuXHRcdFx0XHRlcGF0aC5jaGFyQXQobGVuIC0gMSkgPT0gXCIvXCIgfHwgZXBhdGguY2hhckF0KGxlbiAtIDEpID09IFwiXFxcXFwiKSkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Zm9ybWF0U2VsZWN0aW9uT3JDdXJMaW5lID0gKGVkaXRvcjogRWRpdG9yLCB2aWV3OiBNYXJrZG93blZpZXcpOiB2b2lkID0+IHtcblx0XHRpZiAoIWVkaXRvci5zb21ldGhpbmdTZWxlY3RlZCgpIHx8IGVkaXRvci5nZXRTZWxlY3Rpb24oKSA9PT0gJycpIHtcblx0XHRcdGxldCBsaW5lTnVtYmVyID0gZWRpdG9yLmdldEN1cnNvcigpLmxpbmU7XG5cdFx0XHRsZXQgbmV3TGluZURhdGEgPSB0aGlzLnByZUZvcm1hdE9uZUxpbmUoZWRpdG9yLCBsaW5lTnVtYmVyICsgMSwgZWRpdG9yLmdldEN1cnNvcigpLmNoKTtcblx0XHRcdGVkaXRvci5yZXBsYWNlUmFuZ2UobmV3TGluZURhdGFbMF0sIHsgbGluZTogbGluZU51bWJlciwgY2g6IDAgfSwgeyBsaW5lOiBsaW5lTnVtYmVyLCBjaDogZWRpdG9yLmdldExpbmUobGluZU51bWJlcikubGVuZ3RoIH0pO1xuXHRcdFx0ZWRpdG9yLnNldFNlbGVjdGlvbih7IGxpbmU6IGxpbmVOdW1iZXIsIGNoOiBuZXdMaW5lRGF0YVsxXSB9KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0bGV0IHNlbGVjdGlvbiA9IGVkaXRvci5saXN0U2VsZWN0aW9ucygpWzBdO1xuXHRcdGxldCBiZWdpbiA9IHNlbGVjdGlvbi5hbmNob3IubGluZTtcblx0XHRsZXQgZW5kID0gc2VsZWN0aW9uLmhlYWQubGluZTtcblx0XHRpZiAoYmVnaW4gPiBlbmQpIHtcblx0XHRcdGxldCB0ZW1wID0gYmVnaW47XG5cdFx0XHRiZWdpbiA9IGVuZDtcblx0XHRcdGVuZCA9IHRlbXA7XG5cdFx0fVxuXHRcdC8vIGNvbnNvbGUubG9nKGJlZ2luLCBlbmQpXG5cdFx0bGV0IG5ld19saW5lcyA9IFwiXCI7XG5cdFx0Zm9yIChsZXQgaSA9IGJlZ2luOyBpIDw9IGVuZDsgaSsrKSB7XG5cdFx0XHRpZiAoaSAhPSBiZWdpbikgbmV3X2xpbmVzICs9ICdcXG4nO1xuXHRcdFx0Y29uc29sZS5sb2coJ2krMScsIGkgKyAxKVxuXHRcdFx0bmV3X2xpbmVzICs9IHRoaXMucHJlRm9ybWF0T25lTGluZShlZGl0b3IsIGkgKyAxKVswXTtcblx0XHR9XG5cdFx0ZWRpdG9yLnJlcGxhY2VSYW5nZShuZXdfbGluZXMsIHsgbGluZTogYmVnaW4sIGNoOiAwIH0sIHsgbGluZTogZW5kLCBjaDogZWRpdG9yLmdldExpbmUoZW5kKS5sZW5ndGggfSk7XG5cdFx0aWYgKHNlbGVjdGlvbi5hbmNob3IubGluZSA8IHNlbGVjdGlvbi5oZWFkLmxpbmUpIHtcblx0XHRcdGVkaXRvci5zZXRTZWxlY3Rpb24oeyBsaW5lOiBzZWxlY3Rpb24uYW5jaG9yLmxpbmUsIGNoOiAwIH0sIHsgbGluZTogc2VsZWN0aW9uLmhlYWQubGluZSwgY2g6IGVkaXRvci5nZXRMaW5lKHNlbGVjdGlvbi5oZWFkLmxpbmUpLmxlbmd0aCB9KTtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHRlZGl0b3Iuc2V0U2VsZWN0aW9uKHsgbGluZTogc2VsZWN0aW9uLmFuY2hvci5saW5lLCBjaDogZWRpdG9yLmdldExpbmUoc2VsZWN0aW9uLmFuY2hvci5saW5lKS5sZW5ndGggfSwgeyBsaW5lOiBzZWxlY3Rpb24uaGVhZC5saW5lLCBjaDogMCB9KTtcblx0XHR9XG5cdH1cblxuXHQvLyBwYXJhbTogbGluZU51bWJlciBpcyAoMS1iYXNlZClcblx0Zm9ybWF0T25lTGluZSA9IChlZGl0b3I6IEVkaXRvciwgbGluZU51bWJlcjogbnVtYmVyKTogdm9pZCA9PiB7XG5cdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciwgbm90IHR5cGVkXG5cdFx0Y29uc3QgZWRpdG9yVmlldyA9IGVkaXRvci5jbSBhcyBFZGl0b3JWaWV3O1xuXHRcdGxldCBzdGF0ZSA9IGVkaXRvclZpZXcuc3RhdGU7XG5cdFx0bGV0IGxpbmUgPSBzdGF0ZS5kb2MubGluZShsaW5lTnVtYmVyKVxuXG5cdFx0aWYgKGdldFBvc0xpbmVUeXBlKHN0YXRlLCBsaW5lLmZyb20pID09IExpbmVUeXBlLnRleHQpIHtcblx0XHRcdGxldCBvbGRMaW5lID0gbGluZS50ZXh0O1xuXHRcdFx0bGV0IG5ld0xpbmUgPSB0aGlzLkZvcm1hdGVyLmZvcm1hdExpbmUoc3RhdGUsIGxpbmVOdW1iZXIsIHRoaXMuc2V0dGluZ3MsIG9sZExpbmUubGVuZ3RoLCAwKVswXTtcblx0XHRcdGlmIChvbGRMaW5lICE9IG5ld0xpbmUpIHtcblx0XHRcdFx0ZWRpdG9yLnJlcGxhY2VSYW5nZShuZXdMaW5lLCB7IGxpbmU6IGxpbmVOdW1iZXIgLSAxLCBjaDogMCB9LCB7IGxpbmU6IGxpbmVOdW1iZXIgLSAxLCBjaDogb2xkTGluZS5sZW5ndGggfSk7XG5cdFx0XHRcdGVkaXRvci5zZXRDdXJzb3IoeyBsaW5lOiBsaW5lTnVtYmVyIC0gMSwgY2g6IGVkaXRvci5nZXRMaW5lKGxpbmVOdW1iZXIgLSAxKS5sZW5ndGggfSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIHBhcmFtOiBsaW5lTnVtYmVyIGlzICgxLWJhc2VkKVxuXHRwcmVGb3JtYXRPbmVMaW5lID0gKGVkaXRvcjogRWRpdG9yLCBsaW5lTnVtYmVyOiBudW1iZXIsIGNoOiBudW1iZXIgPSAtMSk6IFtzdHJpbmcsIG51bWJlcl0gPT4ge1xuXHRcdC8vIEB0cy1leHBlY3QtZXJyb3IsIG5vdCB0eXBlZFxuXHRcdGNvbnN0IGVkaXRvclZpZXcgPSBlZGl0b3IuY20gYXMgRWRpdG9yVmlldztcblx0XHRsZXQgc3RhdGUgPSBlZGl0b3JWaWV3LnN0YXRlO1xuXHRcdGxldCBsaW5lID0gc3RhdGUuZG9jLmxpbmUobGluZU51bWJlcilcblxuXHRcdGxldCBuZXdMaW5lID0gbGluZS50ZXh0O1xuXHRcdGxldCBuZXdDaCA9IDA7XG5cdFx0bGV0IGN1ckNoID0gbGluZS50ZXh0Lmxlbmd0aDtcblx0XHRpZiAoY2ggIT0gLTEpIHtcblx0XHRcdGN1ckNoID0gY2g7XG5cdFx0fVxuXHRcdGlmIChnZXRQb3NMaW5lVHlwZShzdGF0ZSwgbGluZS5mcm9tKSA9PSBMaW5lVHlwZS50ZXh0KSB7XG5cdFx0XHRsZXQgbmV3TGluZURhdGEgPSB0aGlzLkZvcm1hdGVyLmZvcm1hdExpbmUoc3RhdGUsIGxpbmVOdW1iZXIsIHRoaXMuc2V0dGluZ3MsIGN1ckNoLCAwKTtcblx0XHRcdG5ld0xpbmUgPSBuZXdMaW5lRGF0YVswXTtcblx0XHRcdG5ld0NoID0gbmV3TGluZURhdGFbMV07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIFtuZXdMaW5lLCBuZXdDaF07XG5cdH1cblxuXHRkZWxldGVCbGFua0xpbmVzID0gKGVkaXRvcjogRWRpdG9yKTogdm9pZCA9PiB7XG5cdFx0Y29uc3QgYmFzZVBhdGggPSAodGhpcy5hcHAudmF1bHQuYWRhcHRlciBhcyBhbnkpLmJhc2VQYXRoXG5cdFx0bGV0IGNvbmZpZ19wYXRoID0gYmFzZVBhdGggKyBcIi9cIiArIHRoaXMuYXBwLnZhdWx0LmNvbmZpZ0RpciArIFwiL2FwcC5qc29uXCI7XG5cdFx0aWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIHtcblx0XHRcdGNvbnNvbGUubG9nKHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZyhcInN0cmljdExpbmVCcmVha3NcIikpO1xuXHRcdFx0Ly8gcmV0dXJuO1xuXHRcdH1cblx0XHRsZXQgc3RyaWN0TGluZUJyZWFrcyA9IHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZyhcInN0cmljdExpbmVCcmVha3NcIik7XG5cblx0XHQvLyBAdHMtZXhwZWN0LWVycm9yLCBub3QgdHlwZWRcblx0XHRjb25zdCBlZGl0b3JWaWV3ID0gZWRpdG9yLmNtIGFzIEVkaXRvclZpZXc7XG5cdFx0bGV0IHN0YXRlID0gZWRpdG9yVmlldy5zdGF0ZTtcblx0XHRsZXQgZG9jID0gc3RhdGUuZG9jXG5cdFx0Y29uc3QgdHJlZSA9IHN5bnRheFRyZWUoc3RhdGUpO1xuXHRcdGxldCBzdGFydF9saW5lID0gMTtcblx0XHRsZXQgZW5kX2xpbmUgPSBkb2MubGluZXM7XG5cdFx0bGV0IGxpbmVfbnVtID0gZG9jLmxpbmVzO1xuXHRcdGNvbnN0IHNlbGVjdGVkID0gZWRpdG9yLnNvbWV0aGluZ1NlbGVjdGVkKCkgJiYgZWRpdG9yLmdldFNlbGVjdGlvbigpICE9ICcnO1xuXHRcdGlmIChzZWxlY3RlZCkge1xuXHRcdFx0bGV0IHNlbGVjdGlvbiA9IGVkaXRvci5saXN0U2VsZWN0aW9ucygpWzBdO1xuXHRcdFx0bGV0IGJlZ2luID0gc2VsZWN0aW9uLmFuY2hvci5saW5lICsgMTtcblx0XHRcdGxldCBlbmQgPSBzZWxlY3Rpb24uaGVhZC5saW5lICsgMTtcblx0XHRcdGlmIChiZWdpbiA+IGVuZCkge1xuXHRcdFx0XHRsZXQgdGVtcCA9IGJlZ2luO1xuXHRcdFx0XHRiZWdpbiA9IGVuZDtcblx0XHRcdFx0ZW5kID0gdGVtcDtcblx0XHRcdH1cblx0XHRcdHN0YXJ0X2xpbmUgPSBiZWdpbjtcblx0XHRcdGVuZF9saW5lID0gZW5kXG5cdFx0fVxuXG5cdFx0Ly8gaWYodGhpcy5zZXR0aW5ncy5kZWJ1Zyl7XG5cdFx0Ly8gXHRsZXQgbGluZV9pbmRleCA9IGVkaXRvci5nZXRDdXJzb3IoKS5saW5lICsgMTtcblx0XHQvLyBcdGxldCBjb250ZW50ID0gZWRpdG9yLmdldExpbmUoZWRpdG9yLmdldEN1cnNvcigpLmxpbmUpO1xuXHRcdC8vIFx0Y29uc29sZS5sb2coY29udGVudCk7XG5cdFx0Ly8gXHRmb3IgKGxldCBpPTA7aTxjb250ZW50Lmxlbmd0aDtpKyspe1xuXHRcdC8vIFx0XHRsZXQgbm9kZSA9IHRyZWUucmVzb2x2ZShkb2MubGluZShsaW5lX2luZGV4KS5mcm9tK2ksIDEpO1xuXHRcdC8vIFx0XHRjb25zb2xlLmxvZyhpLCBub2RlLm5hbWUpXG5cdFx0Ly8gXHR9XG5cdFx0Ly8gXHRyZXR1cm47XG5cdFx0Ly8gfVxuXG5cblx0XHRsZXQgZGVsZXRlX2luZGV4OiBudW1iZXJbXSA9IFtdO1xuXHRcdGxldCBibGFua19yZWcgPSAvXlxccyokLztcblx0XHRsZXQgcmVtYWluX25leHRfYmxhbmsgPSBmYWxzZTtcblxuXHRcdGlmIChzdGFydF9saW5lICE9IDEpIHtcblx0XHRcdGxldCBub2RlID0gdHJlZS5yZXNvbHZlKGRvYy5saW5lKHN0YXJ0X2xpbmUgLSAxKS5mcm9tLCAxKTtcblx0XHRcdGlmIChub2RlLm5hbWUuY29udGFpbnMoJ2xpc3QnKSB8fCBub2RlLm5hbWUuY29udGFpbnMoJ3F1b3RlJykgfHwgbm9kZS5uYW1lLmNvbnRhaW5zKCdibG9ja2lkJykpIHtcblx0XHRcdFx0cmVtYWluX25leHRfYmxhbmsgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoZW5kX2xpbmUgIT0gbGluZV9udW0gJiYgIWJsYW5rX3JlZy50ZXN0KGRvYy5saW5lKGVuZF9saW5lICsgMSkudGV4dCkpIHtcblx0XHRcdGVuZF9saW5lICs9IDE7XG5cdFx0fVxuXG5cdFx0Zm9yIChsZXQgaSA9IHN0YXJ0X2xpbmU7IGkgPD0gZW5kX2xpbmU7IGkrKykge1xuXHRcdFx0bGV0IGxpbmUgPSBkb2MubGluZShpKTtcblx0XHRcdGxldCBwb3MgPSBsaW5lLmZyb207XG5cdFx0XHRsZXQgbm9kZSA9IHRyZWUucmVzb2x2ZShwb3MsIDEpO1xuXG5cdFx0XHQvLyBcdTVCRjlcdTRFOEVcdTdBN0FcdTc2N0RcdTg4NENcblx0XHRcdGlmIChibGFua19yZWcudGVzdChsaW5lLnRleHQpICYmICFyZW1haW5fbmV4dF9ibGFuaykge1xuXHRcdFx0XHRkZWxldGVfaW5kZXgucHVzaChpKTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIGlmIChibGFua19yZWcudGVzdChsaW5lLnRleHQpICYmIHJlbWFpbl9uZXh0X2JsYW5rKSB7XG5cdFx0XHRcdHJlbWFpbl9uZXh0X2JsYW5rID0gZmFsc2U7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAobm9kZS5uYW1lLmNvbnRhaW5zKCdocicpICYmIGRlbGV0ZV9pbmRleFtkZWxldGVfaW5kZXgubGVuZ3RoIC0gMV0gPT0gaSAtIDEpIHtcblx0XHRcdFx0ZGVsZXRlX2luZGV4LnBvcCgpXG5cdFx0XHR9XG5cdFx0XHRlbHNlIGlmIChub2RlLm5hbWUuY29udGFpbnMoJ2xpc3QnKSB8fCBub2RlLm5hbWUuY29udGFpbnMoJ3F1b3RlJykgfHwgbm9kZS5uYW1lLmNvbnRhaW5zKCdibG9ja2lkJykpIHtcblx0XHRcdFx0cmVtYWluX25leHRfYmxhbmsgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdHJlbWFpbl9uZXh0X2JsYW5rID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vIGNvbnNvbGUubG9nKFwiZGVsZXRlX2luZGV4XCIsZGVsZXRlX2luZGV4KVxuXHRcdGxldCBuZXdDb250ZW50ID0gXCJcIjtcblx0XHRmb3IgKGxldCBpID0gMTsgaSA8IGxpbmVfbnVtOyBpKyspIHtcblx0XHRcdGlmICghZGVsZXRlX2luZGV4LmNvbnRhaW5zKGkpKSB7XG5cdFx0XHRcdG5ld0NvbnRlbnQgKz0gZG9jLmxpbmUoaSkudGV4dCArICdcXG4nO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoIWRlbGV0ZV9pbmRleC5jb250YWlucyhsaW5lX251bSkpIHtcblx0XHRcdG5ld0NvbnRlbnQgKz0gZG9jLmxpbmUobGluZV9udW0pLnRleHRcblx0XHR9XG5cblx0XHRlZGl0b3Iuc2V0VmFsdWUobmV3Q29udGVudCk7XG5cdFx0Ly8gdGhpcy5Db250ZW50UGFyc2VyLnJlcGFyc2UoZWRpdG9yLmdldFZhbHVlKCksIDApO1xuXHR9XG5cblx0c3dpdGNoQXV0b0Zvcm1hdHRpbmcoKSB7XG5cdFx0dGhpcy5zZXR0aW5ncy5BdXRvRm9ybWF0ID0gdGhpcy5zZXR0aW5ncy5BdXRvRm9ybWF0ID8gZmFsc2UgOiB0cnVlO1xuXHRcdGxldCBzdGF0dXMgPSB0aGlzLnNldHRpbmdzLkF1dG9Gb3JtYXQgPyAnb24nIDogJ29mZic7XG5cdFx0bmV3IE5vdGljZSgnRWFzeVR5cGluZzogQXV0b2Zvcm1hdCBpcyAnICsgc3RhdHVzICsgJyEnKTtcblx0fVxuXG5cdGNvbnZlcnQyQ29kZUJsb2NrKGVkaXRvcjogRWRpdG9yKSB7XG5cdFx0aWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIGNvbnNvbGUubG9nKFwiLS0tLS0gRWFzeVR5cGluZzogaW5zZXJ0IGNvZGUgYmxvY2stLS0tLVwiKTtcblx0XHRpZiAoZWRpdG9yLnNvbWV0aGluZ1NlbGVjdGVkICYmIGVkaXRvci5nZXRTZWxlY3Rpb24oKSAhPSBcIlwiKSB7XG5cdFx0XHRsZXQgc2VsZWN0ZWQgPSBlZGl0b3IuZ2V0U2VsZWN0aW9uKCk7XG5cdFx0XHRsZXQgc2VsZWN0ZWRSYW5nZSA9IGVkaXRvci5saXN0U2VsZWN0aW9ucygpWzBdO1xuXHRcdFx0bGV0IGFuY2hvciA9IHNlbGVjdGVkUmFuZ2UuYW5jaG9yO1xuXHRcdFx0bGV0IGhlYWQgPSBzZWxlY3RlZFJhbmdlLmhlYWQ7XG5cblx0XHRcdGxldCByZXBsYWNlbWVudCA9IFwiYGBgXFxuXCIgKyBzZWxlY3RlZCArIFwiXFxuYGBgXCI7XG5cdFx0XHQvLyBtYWtlIHN1cmUgYW5jaG9yIDwgaGVhZFxuXHRcdFx0aWYgKGFuY2hvci5saW5lID4gaGVhZC5saW5lIHx8IChhbmNob3IubGluZSA9PSBoZWFkLmxpbmUgJiYgYW5jaG9yLmNoID4gaGVhZC5jaCkpIHtcblx0XHRcdFx0bGV0IHRlbXAgPSBhbmNob3I7XG5cdFx0XHRcdGFuY2hvciA9IGhlYWQ7XG5cdFx0XHRcdGhlYWQgPSB0ZW1wO1xuXHRcdFx0fVxuXHRcdFx0bGV0IGRzdExpbmUgPSBhbmNob3IubGluZTtcblx0XHRcdGlmIChhbmNob3IuY2ggIT0gMCkge1xuXHRcdFx0XHRyZXBsYWNlbWVudCA9ICdcXG4nICsgcmVwbGFjZW1lbnQ7XG5cdFx0XHRcdGRzdExpbmUgKz0gMTtcblx0XHRcdH1cblx0XHRcdGlmIChoZWFkLmNoICE9IGVkaXRvci5nZXRMaW5lKGhlYWQubGluZSkubGVuZ3RoKSB7XG5cdFx0XHRcdHJlcGxhY2VtZW50ID0gcmVwbGFjZW1lbnQgKyAnXFxuJztcblx0XHRcdH1cblx0XHRcdGVkaXRvci5yZXBsYWNlU2VsZWN0aW9uKHJlcGxhY2VtZW50KTtcblx0XHRcdGVkaXRvci5zZXRDdXJzb3IoeyBsaW5lOiBkc3RMaW5lLCBjaDogMyB9KTtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHRsZXQgY3MgPSBlZGl0b3IuZ2V0Q3Vyc29yKCk7XG5cdFx0XHRsZXQgcmVwbGFjZSA9IFwiYGBgXFxuYGBgXCI7XG5cdFx0XHRsZXQgZHN0TGluZSA9IGNzLmxpbmU7XG5cdFx0XHRpZiAoY3MuY2ggIT0gMCkge1xuXHRcdFx0XHRyZXBsYWNlID0gXCJcXG5cIiArIHJlcGxhY2U7XG5cdFx0XHRcdGRzdExpbmUgKz0gMTtcblx0XHRcdH1cblx0XHRcdGlmIChjcy5jaCAhPSBlZGl0b3IuZ2V0TGluZShjcy5saW5lKS5sZW5ndGgpIHtcblx0XHRcdFx0cmVwbGFjZSA9IHJlcGxhY2UgKyAnXFxuJztcblx0XHRcdH1cblx0XHRcdGVkaXRvci5yZXBsYWNlUmFuZ2UocmVwbGFjZSwgY3MpO1xuXHRcdFx0ZWRpdG9yLnNldEN1cnNvcih7IGxpbmU6IGRzdExpbmUsIGNoOiAzIH0pO1xuXHRcdH1cblxuXHR9XG5cblx0cmVmcmVzaFNlbGVjdGlvblJlcGxhY2VSdWxlKCkge1xuXHRcdHRoaXMuU2VsZWN0aW9uUmVwbGFjZU1hcCA9IG5ldyBNYXAodGhpcy5zZWxlY3Rpb25SZXBsYWNlTWFwSW5pdGFsRGF0YSk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlci5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IHRyaWdnZXIgPSB0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlcltpXTtcblx0XHRcdGxldCBsZWZ0cyA9IHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVWYWx1ZVtpXS5sZWZ0O1xuXHRcdFx0bGV0IHJpZ2h0cyA9IHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVWYWx1ZVtpXS5yaWdodDtcblxuXHRcdFx0dGhpcy5TZWxlY3Rpb25SZXBsYWNlTWFwLnNldCh0cmlnZ2VyLCB7IGxlZnQ6IGxlZnRzLCByaWdodDogcmlnaHRzIH0pO1xuXHRcdH1cblx0fVxuXG5cdGFkZFVzZXJTZWxlY3Rpb25SZXBSdWxlKHRyaWdnZXI6IHN0cmluZywgbGVmdDogc3RyaW5nLCByaWdodDogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0aWYgKHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVUcmlnZ2VyLmluY2x1ZGVzKHRyaWdnZXIpKSByZXR1cm4gZmFsc2U7XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVRyaWdnZXIucHVzaCh0cmlnZ2VyKVxuXHRcdHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVWYWx1ZS5wdXNoKHsgbGVmdDogbGVmdCwgcmlnaHQ6IHJpZ2h0IH0pO1xuXHRcdHRoaXMucmVmcmVzaFNlbGVjdGlvblJlcGxhY2VSdWxlKCk7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRkZWxldGVVc2VyU2VsZWN0aW9uUmVwUnVsZShpZHg6IG51bWJlcik6IHZvaWQge1xuXHRcdGlmIChpZHggPCAwIHx8IGlkeCA+PSB0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlci5sZW5ndGgpIHJldHVybjtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlci5zcGxpY2UoaWR4LCAxKTtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVmFsdWUuc3BsaWNlKGlkeCwgMSk7XG5cdFx0dGhpcy5yZWZyZXNoU2VsZWN0aW9uUmVwbGFjZVJ1bGUoKTtcblx0fVxuXG5cdHVwZGF0ZVVzZXJTZWxlY3Rpb25SZXBSdWxlKGlkeDogbnVtYmVyLCBsZWZ0OiBzdHJpbmcsIHJpZ2h0OiBzdHJpbmcpIHtcblx0XHRpZiAoaWR4IDwgMCB8fCBpZHggPj0gdGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVRyaWdnZXIubGVuZ3RoKSByZXR1cm47XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVZhbHVlW2lkeF0ubGVmdCA9IGxlZnQ7XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVZhbHVlW2lkeF0ucmlnaHQgPSByaWdodDtcblx0XHR0aGlzLnJlZnJlc2hTZWxlY3Rpb25SZXBsYWNlUnVsZSgpO1xuXHR9XG5cblx0cmVmcmVzaFVzZXJEZWxldGVSdWxlKCkge1xuXHRcdHRoaXMuVXNlckRlbGV0ZVJ1bGVzID0gcnVsZVN0cmluZ0xpc3QyUnVsZUxpc3QodGhpcy5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0KTtcblx0fVxuXG5cdGFkZFVzZXJEZWxldGVSdWxlKGJlZm9yZTogc3RyaW5nLCBhZnRlcjogc3RyaW5nKSB7XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0LnB1c2goW2JlZm9yZSwgYWZ0ZXJdKTtcblx0XHR0aGlzLnJlZnJlc2hVc2VyRGVsZXRlUnVsZSgpO1xuXHR9XG5cblx0ZGVsZXRlVXNlckRlbGV0ZVJ1bGUoaWR4OiBudW1iZXIpIHtcblx0XHRpZiAoaWR4ID49IHRoaXMuc2V0dGluZ3MudXNlckRlbGV0ZVJ1bGVzU3RyTGlzdC5sZW5ndGggfHwgaWR4IDwgMCkgcmV0dXJuO1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlckRlbGV0ZVJ1bGVzU3RyTGlzdC5zcGxpY2UoaWR4LCAxKTtcblx0XHR0aGlzLnJlZnJlc2hVc2VyRGVsZXRlUnVsZSgpO1xuXHR9XG5cblx0dXBkYXRlVXNlckRlbGV0ZVJ1bGUoaWR4OiBudW1iZXIsIGJlZm9yZTogc3RyaW5nLCBhZnRlcjogc3RyaW5nKSB7XG5cdFx0aWYgKGlkeCA+PSB0aGlzLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3QubGVuZ3RoIHx8IGlkeCA8IDApIHJldHVybjtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3RbaWR4XVswXSA9IGJlZm9yZTtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3RbaWR4XVsxXSA9IGFmdGVyO1xuXHRcdHRoaXMucmVmcmVzaFVzZXJEZWxldGVSdWxlKCk7XG5cdH1cblxuXHRyZWZyZXNoVXNlckNvbnZlcnRSdWxlKCkge1xuXHRcdHRoaXMuVXNlckNvbnZlcnRSdWxlcyA9IHJ1bGVTdHJpbmdMaXN0MlJ1bGVMaXN0KHRoaXMuc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3QpO1xuXHR9XG5cblx0YWRkVXNlckNvbnZlcnRSdWxlKGJlZm9yZTogc3RyaW5nLCBhZnRlcjogc3RyaW5nKSB7XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyQ29udmVydFJ1bGVzU3RyTGlzdC5wdXNoKFtiZWZvcmUsIGFmdGVyXSk7XG5cdFx0dGhpcy5yZWZyZXNoVXNlckNvbnZlcnRSdWxlKCk7XG5cdH1cblxuXHRkZWxldGVVc2VyQ29udmVydFJ1bGUoaWR4OiBudW1iZXIpIHtcblx0XHRpZiAoaWR4ID49IHRoaXMuc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3QubGVuZ3RoIHx8IGlkeCA8IDApIHJldHVybjtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0LnNwbGljZShpZHgsIDEpO1xuXHRcdHRoaXMucmVmcmVzaFVzZXJDb252ZXJ0UnVsZSgpO1xuXHR9XG5cblx0Z2V0Q29tbWFuZE5hbWVNYXAoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG5cdFx0Y29uc3QgbGFuZyA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKTtcblxuXHRcdGxldCBjb21tYW5kX25hbWVfbWFwX2VuID0gbmV3IE1hcChbXG5cdFx0XHRbXCJmb3JtYXRfYXJ0aWNsZVwiLCBcIkZvcm1hdCBjdXJyZW50IGFydGljbGVcIl0sXG5cdFx0XHRbXCJmb3JtYXRfc2VsZWN0aW9uXCIsIFwiRm9ybWF0IHNlbGVjdGVkIHRleHQgb3IgY3VycmVudCBsaW5lXCJdLFxuXHRcdFx0W1wiZGVsZXRlX2JsYW5rX2xpbmVcIiwgXCJEZWxldGUgYmxhbmsgbGluZXMgb2YgdGhlIHNlbGVjdGVkIG9yIHdob2xlIGFydGljbGVcIl0sXG5cdFx0XHRbXCJpbnNlcnRfY29kZWJsb2NrXCIsIFwiSW5zZXJ0IGNvZGUgYmxvY2sgdy93byBzZWxlY3Rpb25cIl0sXG5cdFx0XHRbXCJzd2l0Y2hfYXV0b2Zvcm1hdFwiLCBcIlN3aXRjaCBhdXRvZm9ybWF0XCJdLFxuXHRcdFx0W1wicGFzdGVfd29fZm9ybWF0XCIsIFwiUGFzdGUgd2l0aG91dCBmb3JtYXRcIl0sXG5cdFx0XSk7XG5cblx0XHRsZXQgY29tbWFuZF9uYW1lX21hcF96aF9UVyA9IG5ldyBNYXAoW1xuXHRcdFx0W1wiZm9ybWF0X2FydGljbGVcIiwgXCJcdTY4M0NcdTVGMEZcdTUzMTZcdTUxNjhcdTY1ODdcIl0sXG5cdFx0XHRbXCJmb3JtYXRfc2VsZWN0aW9uXCIsIFwiXHU2ODNDXHU1RjBGXHU1MzE2XHU5MDc4XHU0RTJEXHU5MEU4XHU1MjA2L1x1NzU3Nlx1NTI0RFx1ODg0Q1wiXSxcblx0XHRcdFtcImRlbGV0ZV9ibGFua19saW5lXCIsIFwiXHU1MjJBXHU5NjY0XHU5MDc4XHU0RTJEXHU5MEU4XHU1MjA2L1x1NTE2OFx1NjU4N1x1NzY4NFx1NTkxQVx1OTkxOFx1N0E3QVx1NzY3RFx1ODg0Q1wiXSxcblx0XHRcdFtcImluc2VydF9jb2RlYmxvY2tcIiwgXCJcdTYzRDJcdTUxNjVcdTRFRTNcdTc4QkNcdTU4NEFcIl0sXG5cdFx0XHRbXCJzd2l0Y2hfYXV0b2Zvcm1hdFwiLCBcIlx1NTIwN1x1NjNEQlx1ODFFQVx1NTJENVx1NjgzQ1x1NUYwRlx1NTMxNlx1OTU4Qlx1OTVEQ1wiXSxcblx0XHRcdFtcInBhc3RlX3dvX2Zvcm1hdFwiLCBcIlx1NzEyMVx1NjgzQ1x1NUYwRlx1NTMxNlx1N0M5OFx1OENCQ1wiXSxcblx0XHRdKTtcblxuXHRcdGxldCBjb21tYW5kX25hbWVfbWFwX3poID0gbmV3IE1hcChbXG5cdFx0XHRbXCJmb3JtYXRfYXJ0aWNsZVwiLCBcIlx1NjgzQ1x1NUYwRlx1NTMxNlx1NTE2OFx1NjU4N1wiXSxcblx0XHRcdFtcImZvcm1hdF9zZWxlY3Rpb25cIiwgXCJcdTY4M0NcdTVGMEZcdTUzMTZcdTkwMDlcdTRFMkRcdTkwRThcdTUyMDYvXHU1RjUzXHU1MjREXHU4ODRDXCJdLFxuXHRcdFx0W1wiZGVsZXRlX2JsYW5rX2xpbmVcIiwgXCJcdTUyMkFcdTk2NjRcdTkwMDlcdTRFMkRcdTkwRThcdTUyMDYvXHU1MTY4XHU2NTg3XHU3Njg0XHU1OTFBXHU0RjU5XHU3QTdBXHU3NjdEXHU4ODRDXCJdLFxuXHRcdFx0W1wiaW5zZXJ0X2NvZGVibG9ja1wiLCBcIlx1NjNEMlx1NTE2NVx1NEVFM1x1NzgwMVx1NTc1N1wiXSxcblx0XHRcdFtcInN3aXRjaF9hdXRvZm9ybWF0XCIsIFwiXHU1MjA3XHU2MzYyXHU4MUVBXHU1MkE4XHU2ODNDXHU1RjBGXHU1MzE2XHU1RjAwXHU1MTczXCJdLFxuXHRcdFx0W1wicGFzdGVfd29fZm9ybWF0XCIsIFwiXHU2NUUwXHU2ODNDXHU1RjBGXHU1MzE2XHU3Qzk4XHU4RDM0XCJdLFxuXHRcdF0pO1xuXG5cdFx0bGV0IGNvbW1hbmRfbmFtZV9tYXAgPSBjb21tYW5kX25hbWVfbWFwX2VuO1xuXHRcdGlmIChsYW5nID09ICd6aCcpIHtcblx0XHRcdGNvbW1hbmRfbmFtZV9tYXAgPSBjb21tYW5kX25hbWVfbWFwX3poO1xuXHRcdH1cblx0XHRlbHNlIGlmIChsYW5nID09ICd6aC1UVycpIHtcblx0XHRcdGNvbW1hbmRfbmFtZV9tYXAgPSBjb21tYW5kX25hbWVfbWFwX3poX1RXO1xuXHRcdH1cblxuXHRcdHJldHVybiBjb21tYW5kX25hbWVfbWFwO1xuXHR9XG5cblx0dXBkYXRlVXNlckNvbnZlcnRSdWxlKGlkeDogbnVtYmVyLCBiZWZvcmU6IHN0cmluZywgYWZ0ZXI6IHN0cmluZykge1xuXHRcdGlmIChpZHggPj0gdGhpcy5zZXR0aW5ncy51c2VyQ29udmVydFJ1bGVzU3RyTGlzdC5sZW5ndGggfHwgaWR4IDwgMCkgcmV0dXJuO1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3RbaWR4XVswXSA9IGJlZm9yZTtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0W2lkeF1bMV0gPSBhZnRlcjtcblx0XHR0aGlzLnJlZnJlc2hVc2VyQ29udmVydFJ1bGUoKTtcblx0fVxuXG5cdGdldEVkaXRvciA9ICgpOiBFZGl0b3IgfCBudWxsID0+IHtcblx0XHRsZXQgZWRpdG9yID0gbnVsbDtcblx0XHRsZXQgbWFya2Rvd25WaWV3ID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KTtcblx0XHRpZiAobWFya2Rvd25WaWV3KSB7XG5cdFx0XHRlZGl0b3IgPSBtYXJrZG93blZpZXcuZWRpdG9yO1xuXHRcdH1cblx0XHRpZiAoZWRpdG9yID09PSBudWxsKSBjb25zb2xlLmxvZygnY2FuXFwndCBnZXQgZWRpdG9yJyk7XG5cdFx0cmV0dXJuIGVkaXRvcjtcblx0fVxuXG5cdGFzeW5jIGxvYWRTZXR0aW5ncygpIHtcblx0XHR0aGlzLnNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9TRVRUSU5HUywgYXdhaXQgdGhpcy5sb2FkRGF0YSgpKTtcblx0fVxuXG5cdGFzeW5jIHNhdmVTZXR0aW5ncygpIHtcblx0XHRhd2FpdCB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xuXHR9XG59IiwgImltcG9ydCB7IE5vdGljZX0gZnJvbSBcIm9ic2lkaWFuXCJcbmltcG9ydCB7IEVhc3lUeXBpbmdTZXR0aW5ncywgV29ya01vZGUgfSBmcm9tICcuL3NldHRpbmdzJ1xuaW1wb3J0IHsgQW5ub3RhdGlvbiwgRWRpdG9yU3RhdGUsIEV4dGVuc2lvbiwgU3RhdGVGaWVsZCwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3BlYywgVGV4dCwgTGluZSB9IGZyb20gJ0Bjb2RlbWlycm9yL3N0YXRlJztcbmltcG9ydCB7IG9mZnNldFRvUG9zLCBwb3NUb09mZnNldCwgc3RyaW5nRGVsZXRlQXQsIHN0cmluZ0luc2VydEF0LCBpc1BhcmFtRGVmaW5lZH0gZnJvbSAnLi91dGlscydcbmltcG9ydCB7IHN5bnRheFRyZWUgfSBmcm9tIFwiQGNvZGVtaXJyb3IvbGFuZ3VhZ2VcIjtcblxuZXhwb3J0IGVudW0gTGluZVR5cGUgeyB0ZXh0ID0gJ3RleHQnLCBjb2RlYmxvY2sgPSAnY29kZWJsb2NrJywgZm9ybXVsYSA9ICdmb3JtdWxhJywgXG4gICAgICAgICAgICAgICAgICAgICAgICBub25lID0gJ25vbmUnLCBmcm9udG1hdHRlcj1cImZyb250bWF0dGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBxdW90ZT0ncXVvdGUnLCBjYWxsb3V0X3RpdGxlPSdjYWxsb3V0X3RpdGxlJywgbGlzdD0nbGlzdCcgfVxuXG5leHBvcnQgZW51bSBTcGFjZVN0YXRlIHtcbiAgICBub25lLFxuICAgIHNvZnQsXG4gICAgc3RyaWN0XG59XG5cbmV4cG9ydCBlbnVtIElubGluZVR5cGUge1xuICAgIHRleHQgPSAndGV4dCcsIGNvZGUgPSAnY29kZScsIGZvcm11bGEgPSAnZm9ybXVsYScsXG4gICAgd2lraWxpbmsgPSAnd2lraWxpbmsnLCBtZGxpbmsgPSBcIm1kbGlua1wiLFxuICAgIHVzZXIgPSAndXNlci1kZWZpbmVkJywgbm9uZSA9ICdub25lJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElubGluZUNoYW5nZSB7XG4gICAgdGV4dDogc3RyaW5nLFxuICAgIGJlZ2luOiBudW1iZXIsXG4gICAgZW5kOiBudW1iZXIsXG4gICAgb3JpZ2luOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcnRpY2xlUGFydCB7XG4gICAgdHlwZTogTGluZVR5cGU7XG4gICAgYmVnaW46IG51bWJlcjtcbiAgICBlbmQ6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElubGluZVBhcnQge1xuICAgIGNvbnRlbnQ6IHN0cmluZztcbiAgICB0eXBlOiBJbmxpbmVUeXBlO1xuICAgIGJlZ2luOiBudW1iZXI7XG4gICAgZW5kOiBudW1iZXI7XG4gICAgbGVmdFNwYWNlUmVxdWlyZTogU3BhY2VTdGF0ZTtcbiAgICByaWdodFNwYWNlUmVxdWlyZTogU3BhY2VTdGF0ZTtcbn1cblxuZXhwb3J0IGNsYXNzIExpbmVGb3JtYXRlciB7XG4gICAgY29uc3RydWN0b3IoKSB7IH1cbiAgICBzeW50YXhUcmVlTm9kZU5hbWVUeXBlKG5hbWU6c3RyaW5nKTpJbmxpbmVUeXBle1xuICAgICAgICBpZihuYW1lLmNvbnRhaW5zKCdjb2RlJykgJiYgIW5hbWUuY29udGFpbnMoXCJsaW5rXCIpKXtcbiAgICAgICAgICAgIHJldHVybiBJbmxpbmVUeXBlLmNvZGU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZihuYW1lLmNvbnRhaW5zKCdtYXRoJykpe1xuICAgICAgICAgICAgcmV0dXJuIElubGluZVR5cGUuZm9ybXVsYTtcbiAgICAgICAgfVxuICAgICAgICBlbHNle1xuICAgICAgICAgICAgcmV0dXJuIElubGluZVR5cGUudGV4dDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHBhcmFtIGxpbmVOdW06IDEtYmFzZWQgbGluZSBudW1iZXJcbiAgICBwYXJzZUxpbmVXaXRoU3ludGF4VHJlZShzdGF0ZTogRWRpdG9yU3RhdGUsIGxpbmVOdW06bnVtYmVyLCByZWdSZWdFeHA/OiBzdHJpbmcpe1xuICAgICAgICBsZXQgbGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYTogSW5saW5lUGFydFtdID0gW107XG4gICAgICAgIGxldCBsaW5lID0gc3RhdGUuZG9jLmxpbmUobGluZU51bSk7XG4gICAgICAgIGNvbnN0IHRyZWUgPSBzeW50YXhUcmVlKHN0YXRlKTtcbiAgICAgICAgbGV0IHBvcyA9IGxpbmUuZnJvbTtcbiAgICAgICAgbGV0IHByZXZOb2RlVHlwZTpJbmxpbmVUeXBlID0gSW5saW5lVHlwZS5ub25lO1xuICAgICAgICBsZXQgcHJldkJlZ2luSWR4ID0gMDtcbiAgICAgICAgd2hpbGUocG9zPGxpbmUudG8pe1xuICAgICAgICAgICAgbGV0IG5vZGUgPSB0cmVlLnJlc29sdmUocG9zLCAxKTtcbiAgICAgICAgICAgIGxldCBjdXJOb2RlVHlwZSA9IHRoaXMuc3ludGF4VHJlZU5vZGVOYW1lVHlwZShub2RlLm5hbWUpXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmKHByZXZOb2RlVHlwZT09SW5saW5lVHlwZS5ub25lKXtcbiAgICAgICAgICAgICAgICBwcmV2Tm9kZVR5cGU9Y3VyTm9kZVR5cGU7XG4gICAgICAgICAgICAgICAgcHJldkJlZ2luSWR4PTA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmKHByZXZOb2RlVHlwZT09Y3VyTm9kZVR5cGUpe31cbiAgICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICAgICAgbGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDpsaW5lLnRleHQuc3Vic3RyaW5nKHByZXZCZWdpbklkeCwgcG9zLWxpbmUuZnJvbSksXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6cHJldk5vZGVUeXBlLFxuICAgICAgICAgICAgICAgICAgICBiZWdpbjpwcmV2QmVnaW5JZHgsXG4gICAgICAgICAgICAgICAgICAgIGVuZDpwb3MtbGluZS5mcm9tLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0U3BhY2VSZXF1aXJlOlNwYWNlU3RhdGUubm9uZSxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHRTcGFjZVJlcXVpcmU6U3BhY2VTdGF0ZS5ub25lXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBwcmV2Tm9kZVR5cGUgPSBjdXJOb2RlVHlwZTtcbiAgICAgICAgICAgICAgICBwcmV2QmVnaW5JZHggPSBwb3MtbGluZS5mcm9tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdXBkYXRlIG5leHQgcG9zXG4gICAgICAgICAgICBpZiAoY3VyTm9kZVR5cGUgPT0gSW5saW5lVHlwZS50ZXh0KXtcbiAgICAgICAgICAgICAgICBwb3MrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICAgICAgcG9zID0gbm9kZS50bztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYocG9zPT1saW5lLnRvKXtcbiAgICAgICAgICAgICAgICBsaW5lUGFydHNPZlR4dENvZGVGb3JtdWxhLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OmxpbmUudGV4dC5zdWJzdHJpbmcocHJldkJlZ2luSWR4LCBwb3MtbGluZS5mcm9tKSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTpwcmV2Tm9kZVR5cGUsXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOnByZXZCZWdpbklkeCxcbiAgICAgICAgICAgICAgICAgICAgZW5kOnBvcy1saW5lLmZyb20sXG4gICAgICAgICAgICAgICAgICAgIGxlZnRTcGFjZVJlcXVpcmU6U3BhY2VTdGF0ZS5ub25lLFxuICAgICAgICAgICAgICAgICAgICByaWdodFNwYWNlUmVxdWlyZTpTcGFjZVN0YXRlLm5vbmVcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwibGluZSBwYXJ0czogXCIsIGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGEpO1xuICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgbGV0IHJldEFycmF5OiBJbmxpbmVQYXJ0W10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lUGFydHNPZlR4dENvZGVGb3JtdWxhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAobGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYVtpXS50eXBlICE9IElubGluZVR5cGUudGV4dCkge1xuICAgICAgICAgICAgICAgIHJldEFycmF5LnB1c2gobGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYVtpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgdGVtcEFycmF5OiBJbmxpbmVQYXJ0W107XG4gICAgICAgICAgICAgICAgaWYgKGlzUGFyYW1EZWZpbmVkKHJlZ1JlZ0V4cCkpXG4gICAgICAgICAgICAgICAgICAgIHRlbXBBcnJheSA9IHNwbGl0VGV4dFdpdGhMaW5rQW5kVXNlckRlZmluZWQobGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYVtpXS5jb250ZW50LCByZWdSZWdFeHApO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdGVtcEFycmF5ID0gc3BsaXRUZXh0V2l0aExpbmtBbmRVc2VyRGVmaW5lZChsaW5lUGFydHNPZlR4dENvZGVGb3JtdWxhW2ldLmNvbnRlbnQpO1xuICAgIFxuICAgICAgICAgICAgICAgIHRlbXBBcnJheS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmJlZ2luICs9IGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGFbaV0uYmVnaW47XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZW5kICs9IGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGFbaV0uYmVnaW47XG4gICAgICAgICAgICAgICAgICAgIHJldEFycmF5LnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gY29uc29sZS5sb2cocmV0QXJyYXkpXG4gICAgICAgIHJldHVybiByZXRBcnJheTtcbiAgICB9XG5cbiAgICBmb3JtYXRMaW5lT2ZEb2Moc3RhdGU6IEVkaXRvclN0YXRlLCBzZXR0aW5nczogRWFzeVR5cGluZ1NldHRpbmdzLCBmcm9tQjogbnVtYmVyLCB0b0I6IG51bWJlciwgaW5zZXJ0ZWRTdHI6IHN0cmluZyk6IFtUcmFuc2FjdGlvblNwZWNbXSwgVHJhbnNhY3Rpb25TcGVjXSB8IG51bGwge1xuICAgICAgICBsZXQgZG9jID0gc3RhdGUuZG9jO1xuICAgICAgICBsZXQgbGluZSA9IGRvYy5saW5lQXQoZnJvbUIpLnRleHQ7XG4gICAgICAgIGxldCByZXMgPSBudWxsXG4gICAgICAgIGlmIChpbnNlcnRlZFN0ci5jb250YWlucyhcIlxcblwiKSlcbiAgICAgICAge1xuICAgICAgICAgICAgcmVzID0gdGhpcy5mb3JtYXRMaW5lKHN0YXRlLCBkb2MubGluZUF0KGZyb21CKS5udW1iZXIsIHNldHRpbmdzLCBvZmZzZXRUb1Bvcyhkb2MsIGZyb21CKS5jaCwgb2Zmc2V0VG9Qb3MoZG9jLCB0b0ItMSkuY2gpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgcmVzID0gdGhpcy5mb3JtYXRMaW5lKHN0YXRlLCBkb2MubGluZUF0KGZyb21CKS5udW1iZXIsIHNldHRpbmdzLCBvZmZzZXRUb1Bvcyhkb2MsIHRvQikuY2gsIG9mZnNldFRvUG9zKGRvYywgZnJvbUIpLmNoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzID09PW51bGwgfHwgcmVzWzJdLmxlbmd0aD09MCkgcmV0dXJuIG51bGw7XG4gICAgICAgIFxuICAgICAgICBsZXQgbmV3bGluZSA9IHN0cmluZ0luc2VydEF0KHJlc1swXSwgcmVzWzFdLCBcInxcIik7XG4gICAgICAgIC8vIGlmIChzZXR0aW5ncy5kZWJ1ZykgY29uc29sZS5sb2coXCJFYXN5VHlwaW5nOiBOZXcgTGluZSBTdHJpbmc6XCIsIG5ld2xpbmUpXG5cbiAgICAgICAgbGV0IGNoYW5nZXM6IFRyYW5zYWN0aW9uU3BlY1tdID0gW107XG4gICAgICAgIGxldCBvZmZzZXQgPSBkb2MubGluZUF0KGZyb21CKS5mcm9tO1xuXG4gICAgICAgIGZvcihsZXQgY2hhbmdlSXRlbSBvZiByZXNbMl0pXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNoYW5nZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgY2hhbmdlczp7ZnJvbTogb2Zmc2V0K2NoYW5nZUl0ZW0uYmVnaW4sIHRvOm9mZnNldCtjaGFuZ2VJdGVtLmVuZCwgaW5zZXJ0OmNoYW5nZUl0ZW0udGV4dH0sIHVzZXJFdmVudDpcIkVhc3lUeXBpbmcuY2hhbmdlXCJcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluc2VydGVkU3RyLmNvbnRhaW5zKFwiXFxuXCIpKXtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiaW5zZXJ0U3RyXCIsIGluc2VydGVkU3RyKVxuICAgICAgICAgICAgcmVzWzFdKz0gaW5zZXJ0ZWRTdHIubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbY2hhbmdlcywge3NlbGVjdGlvbjp7YW5jaG9yOm9mZnNldCtyZXNbMV19LCB1c2VyRXZlbnQ6XCJFYXN5VHlwaW5nLmNoYW5nZVwifV07XG4gICAgfVxuXG4gICAgLy8gXHU4RkQ0XHU1NkRFXHU1MDNDXHVGRjFBIFtcdTY3MDBcdTdFQzhcdTc2ODRcdTg4NENcdUZGMENcdTY3MDBcdTdFQzhcdTUxNDlcdTY4MDdcdTRGNERcdTdGNkVcdUZGMENcdTUxODVcdTVCQjlcdTY1MzlcdTUzRDhdXG4gICAgLy8gcGFyYW0gbGluZU51bTogMS1iYXNlZCBsaW5lIG51bWJlclxuICAgIGZvcm1hdExpbmUoc3RhdGU6IEVkaXRvclN0YXRlLCBsaW5lTnVtOm51bWJlciwgc2V0dGluZ3M6IEVhc3lUeXBpbmdTZXR0aW5ncywgY3VyQ2g6IG51bWJlciwgcHJldkNoPzogbnVtYmVyKTogW3N0cmluZywgbnVtYmVyLCBJbmxpbmVDaGFuZ2VbXV0gfCBudWxsIHtcbiAgICAgICAgLy8gbmV3IE5vdGljZShcImZvcm1hdC1ub3dcIik7XG4gICAgICAgIGxldCBsaW5lID0gc3RhdGUuZG9jLmxpbmUobGluZU51bSkudGV4dDtcbiAgICAgICAgbGV0IHJlZ051bGwgPSAvXlxccyokL2c7XG4gICAgICAgIGlmIChyZWdOdWxsLnRlc3QobGluZSkpIHJldHVybiBbbGluZSwgY3VyQ2gsIFtdXTtcbiAgICAgICAgLy8gMS4gXHU1MjEyXHU1MjA2XHU0RTAwXHU4ODRDXHU2NTg3XHU1QjU3XHU3Njg0XHU1MTg1XHU5MEU4XHU0RTBEXHU1NDBDXHU2QTIxXHU1NzU3XHU1MzNBXHU1N0RGXG4gICAgICAgIGxldCBsaW5lUGFydHM6IElubGluZVBhcnRbXTtcbiAgICAgICAgaWYgKHNldHRpbmdzLlVzZXJEZWZpbmVkUmVnU3dpdGNoKSB7XG4gICAgICAgICAgICAvLyBsaW5lUGFydHMgPSB0aGlzLnBhcnNlTGluZShsaW5lLCBzZXR0aW5ncy5Vc2VyRGVmaW5lZFJlZ0V4cCk7XG4gICAgICAgICAgICBsaW5lUGFydHMgPSB0aGlzLnBhcnNlTGluZVdpdGhTeW50YXhUcmVlKHN0YXRlLCBsaW5lTnVtLCBzZXR0aW5ncy5Vc2VyRGVmaW5lZFJlZ0V4cCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBsaW5lUGFydHMgPSB0aGlzLnBhcnNlTGluZShsaW5lKTtcbiAgICAgICAgICAgIGxpbmVQYXJ0cyA9IHRoaXMucGFyc2VMaW5lV2l0aFN5bnRheFRyZWUoc3RhdGUsIGxpbmVOdW0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXR0aW5ncy5kZWJ1ZykgY29uc29sZS5sb2coXCJsaW5lIHBhcnRzXFxuXCIsIGxpbmVQYXJ0cyk7XG5cbiAgICAgICAgLy8gXHU1OTA3XHU0RUZEXHU1MzlGXHU2NzY1XHU3Njg0bGluZVBhcnRzLCBcdTZERjFcdTYyRjdcdThEMURcbiAgICAgICAgbGV0IGxpbmVQYXJ0c09yaWdpbiA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobGluZVBhcnRzKSk7XG4gICAgICAgIGxldCBpbmxpbmVDaGFuZ2VMaXN0OiBJbmxpbmVDaGFuZ2VbXSA9IFtdO1xuXG4gICAgICAgIGxldCBjdXJzb3JMaW5lUGFydEluZGV4ID0gLTE7XG4gICAgICAgIGxldCBjdXJzb3JSZWxhdGl2ZUluZGV4ID0gLTE7XG4gICAgICAgIGxldCByZXN1bHRDdXJzb3JDaCA9IDA7ICAgICAvLyBcdThGOTNcdTUxRkFcdTc2ODRcdTUxNDlcdTY4MDdcdTRGNERcdTdGNkVcblxuICAgICAgICAvLyAyLiBcdTYyN0VcdTUyMzBcdTUxNDlcdTY4MDdcdTYyNDBcdTU3MjhcdTc2ODRcdTkwRThcdTUyMDZcdUZGMENcdTU5ODJcdTY3OUNcdTY2MkYgSW5saW5lUGFydC50ZXh0XHVGRjBDXHU1MjE5XHU1NzI4XHU1MTQ5XHU2ODA3XHU1OTA0XHU2M0QyXHU1MTY1J1xcMCdcdTY3NjVcdTY4MDdcdThCQjBcdTUxNDlcdTY4MDdcdTRGNERcdTdGNkVcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lUGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChjdXJDaCA+IGxpbmVQYXJ0c1tpXS5iZWdpbiAmJiBjdXJDaCA8PSBsaW5lUGFydHNbaV0uZW5kKSB7XG4gICAgICAgICAgICAgICAgY3Vyc29yTGluZVBhcnRJbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgY3Vyc29yUmVsYXRpdmVJbmRleCA9IGN1ckNoIC0gbGluZVBhcnRzW2ldLmJlZ2luO1xuICAgICAgICAgICAgICAgIGlmIChsaW5lUGFydHNbaV0udHlwZSA9PT0gSW5saW5lVHlwZS50ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gc3RyaW5nSW5zZXJ0QXQobGluZVBhcnRzW2ldLmNvbnRlbnQsIGN1cnNvclJlbGF0aXZlSW5kZXgsICdcXDAnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJlc3VsdExpbmUgPSAnJztcbiAgICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICAgIC8vIFx1NEZERFx1NUI1OFx1NTI0RFx1NEUwMFx1OTBFOFx1NTIwNlx1NzY4NFx1NTMzQVx1NTc1N1x1N0M3Qlx1NTc4Qlx1RkYwQ0lubGluZVR5cGUubm9uZSBcdTRFRTNcdTg4NjhcdTRFMDBcdTg4NENcdTc2ODRcdTVGMDBcdTU5Q0JcbiAgICAgICAgbGV0IHByZXZQYXJ0VHlwZTogc3RyaW5nID0gSW5saW5lVHlwZS5ub25lO1xuICAgICAgICBsZXQgcHJldlRleHRFbmRTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lO1xuXG4gICAgICAgIC8vIDMuIFx1OTA0RFx1NTM4Nlx1NkJDRlx1NEUyQVx1ODg0Q1x1OTBFOFx1NTIwNlx1RkYwQ1x1OEZEQlx1ODg0Q1x1NjgzQ1x1NUYwRlx1NTMxNlx1NTkwNFx1NzQwNlxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVQYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgLy8gMy4xIFx1NTk4Mlx1Njc5Q1x1ODg0Q1x1NTE4NVx1N0IyQ1x1NEUwMFx1OTBFOFx1NTIwNlx1NEUzQVx1NjU4N1x1NjcyQ1x1RkYwQ1x1NTIxOVx1NTkwNFx1NzQwNlx1NTNFNVx1OTk5Nlx1NUI1N1x1NkJDRFx1NTkyN1x1NTE5OVx1NzY4NFx1OTBFOFx1NTIwNlxuICAgICAgICAgICAgaWYgKGkgPT09IDAgJiYgbGluZVBhcnRzW2ldLnR5cGUgPT09IElubGluZVR5cGUudGV4dCAmJiBzZXR0aW5ncy5BdXRvQ2FwaXRhbCkge1xuICAgICAgICAgICAgICAgIC8vIDMuMS4xIFx1NTk4Mlx1Njc5QyBwcmV2Q3Vyc29yIFx1NEUxNFx1NTE0OVx1NjgwN1x1NEUwRFx1NTcyOFx1NkI2NFx1OTBFOFx1NTIwNlx1RkYwQ1x1NTIxOVx1OERGM1x1OEZDN1xuICAgICAgICAgICAgICAgIGlmIChpc1BhcmFtRGVmaW5lZChwcmV2Q2gpICYmIGN1cnNvckxpbmVQYXJ0SW5kZXggIT0gMCkgeyB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZWdGaXJzdFNlbnRlbmNlID0gL15cXHMqKFxcLSAoXFxbW3ggXVxcXSApPyk/XHUyMDFDP1thLXpcXHUwNDAxXFx1MDQ1MVxcdTA0MTAtXFx1MDQ0Zl0vZztcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ0hlYWRlclNlbnRlbmNlID0gL14oIysgfD4rID98XHUyMDFDKVthLXpcXHUwNDAxXFx1MDQ1MVxcdTA0MTAtXFx1MDQ0Zl0vZztcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRleHRjb3B5ID0gbGluZVBhcnRzWzBdLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIGxldCBtYXRjaCA9IHJlZ0ZpcnN0U2VudGVuY2UuZXhlYyh0ZXh0Y29weSk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBtYXRjaEhlYWRlciA9IHJlZ0hlYWRlclNlbnRlbmNlLmV4ZWModGV4dGNvcHkpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgZHN0Q2hhckluZGV4ID0gLTE7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZHN0Q2hhckluZGV4ID0gcmVnRmlyc3RTZW50ZW5jZS5sYXN0SW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1hdGNoSGVhZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkc3RDaGFySW5kZXggPSByZWdIZWFkZXJTZW50ZW5jZS5sYXN0SW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLkF1dG9DYXBpdGFsTW9kZSA9PSBXb3JrTW9kZS5HbG9iYWxseSB8fCAoaXNQYXJhbURlZmluZWQocHJldkNoKSAmJiBkc3RDaGFySW5kZXggPj0gcHJldkNoICYmIGRzdENoYXJJbmRleCA8IGN1ckNoKSkgeyB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZHN0Q2hhckluZGV4ID0gLTE7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoZHN0Q2hhckluZGV4ICE9IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1swXS5jb250ZW50ID0gdGV4dGNvcHkuc3Vic3RyaW5nKDAsIGRzdENoYXJJbmRleCkgKyB0ZXh0Y29weS5jaGFyQXQoZHN0Q2hhckluZGV4KS50b1VwcGVyQ2FzZSgpICsgdGV4dGNvcHkuc3Vic3RyaW5nKGRzdENoYXJJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzd2l0Y2ggKGxpbmVQYXJ0c1tpXS50eXBlKSB7XG4gICAgICAgICAgICAgICAgLy8gMy4yLjEgXHU1OTA0XHU3NDA2XHU2NTg3XHU2NzJDXHU1MzNBXHU1NzU3XG4gICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLnRleHQ6XG4gICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRleHQuNCBcdTU5MDRcdTc0MDZcdTUzRTVcdTk5OTZcdTVCNTdcdTZCQ0RcdTU5MjdcdTUxOTlcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLkF1dG9DYXBpdGFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVnID0gL1tcXC5cXD9cXCFcdTMwMDJcdUZGMDFcdUZGMUZdKFtcXHNdKilbYS16XFx1MDQwMVxcdTA0NTFcXHUwNDEwLVxcdTA0NGZdL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXRjaCA9IHJlZy5leGVjKGNvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wSW5kZXggPSByZWcubGFzdEluZGV4IC0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcInByZXZDaCwgY3VyQ2gsIG9mZnNldCwgdGVtcEluZGV4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2cocHJldkNoLCBjdXJDaCwgb2Zmc2V0LCB0ZW1wSW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlzU3BhY2VEb3QgPSB0ZW1wSW5kZXgtMjwwIHx8IGNvbnRlbnQuc3Vic3RyaW5nKHRlbXBJbmRleC0yLCB0ZW1wSW5kZXgpPT0nIC4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5BdXRvQ2FwaXRhbE1vZGUgPT0gV29ya01vZGUuR2xvYmFsbHkgJiYgIWlzU3BhY2VEb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZygwLCB0ZW1wSW5kZXgpICsgY29udGVudC5jaGFyQXQodGVtcEluZGV4KS50b1VwcGVyQ2FzZSgpICsgY29udGVudC5zdWJzdHJpbmcocmVnLmxhc3RJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNQYXJhbURlZmluZWQocHJldkNoKSAmJiB0ZW1wSW5kZXggPj0gcHJldkNoIC0gb2Zmc2V0ICYmIHRlbXBJbmRleCA8IGN1ckNoIC0gb2Zmc2V0ICYmICFpc1NwYWNlRG90KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgdGVtcEluZGV4KSArIGNvbnRlbnQuY2hhckF0KHRlbXBJbmRleCkudG9VcHBlckNhc2UoKSArIGNvbnRlbnQuc3Vic3RyaW5nKHJlZy5sYXN0SW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9ICAgXG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVGV4dC4xIFx1NTkwNFx1NzQwNlx1NEUyRFx1ODJGMVx1NjU4N1x1NEU0Qlx1OTVGNFx1N0E3QVx1NjgzQ1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuQ2hpbmVzZUVuZ2xpc2hTcGFjZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZzEgPSAvKFtBLVphLXpdKShbXFx1NGUwMC1cXHU5ZmE1XSkvZ2k7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnMiA9IC8oW1xcdTRlMDAtXFx1OWZhNV0pKFtBLVphLXpdKS9naTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gY29udGVudC5yZXBsYWNlKHJlZzEsIFwiJDEgJDJcIikucmVwbGFjZShyZWcyLCBcIiQxICQyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLkNoaW5lc2VOdW1iZXJTcGFjZSl7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnID0gLyhbMC05XSkoW1xcdTRlMDAtXFx1OWZhNV0pL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXRjaCA9IHJlZy5leGVjKGNvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wSW5kZXggPSByZWcubGFzdEluZGV4IC0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQYXJhbURlZmluZWQocHJldkNoKSAmJiB0ZW1wSW5kZXggPj0gcHJldkNoIC0gb2Zmc2V0ICYmIHRlbXBJbmRleCA8IGN1ckNoIC0gb2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZygwLCB0ZW1wSW5kZXgpICsgXCIgXCIgKyBjb250ZW50LnN1YnN0cmluZyh0ZW1wSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJDaCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWcxID0gLyhbXFx1NGUwMC1cXHU5ZmE1XSkoWzAtOV0pL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXRjaCA9IHJlZzEuZXhlYyhjb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEluZGV4ID0gcmVnMS5sYXN0SW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1BhcmFtRGVmaW5lZChwcmV2Q2gpICYmIHRlbXBJbmRleCA+PSBwcmV2Q2ggLSBvZmZzZXQgJiYgdGVtcEluZGV4IDwgY3VyQ2ggLSBvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKDAsIHRlbXBJbmRleCkgKyBcIiBcIiArIGNvbnRlbnQuc3Vic3RyaW5nKHRlbXBJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckNoICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLkVuZ2xpc2hOdW1iZXJTcGFjZSl7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnID0gLyhbQS1aYS16XSkoXFxkKS9nO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2ggPSByZWcuZXhlYyhjb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEluZGV4ID0gcmVnLmxhc3RJbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUGFyYW1EZWZpbmVkKHByZXZDaCkgJiYgdGVtcEluZGV4ID49IHByZXZDaCAtIG9mZnNldCAmJiB0ZW1wSW5kZXggPCBjdXJDaCAtIG9mZnNldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgdGVtcEluZGV4KSArIFwiIFwiICsgY29udGVudC5zdWJzdHJpbmcodGVtcEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyQ2ggKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnMSA9IC8oXFxkKShbQS1aYS16XSkvZztcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGNoID0gcmVnMS5leGVjKGNvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wSW5kZXggPSByZWcxLmxhc3RJbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUGFyYW1EZWZpbmVkKHByZXZDaCkgJiYgdGVtcEluZGV4ID49IHByZXZDaCAtIG9mZnNldCAmJiB0ZW1wSW5kZXggPCBjdXJDaCAtIG9mZnNldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgdGVtcEluZGV4KSArIFwiIFwiICsgY29udGVudC5zdWJzdHJpbmcodGVtcEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyQ2ggKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjIgXHU1OTA0XHU3NDA2XHU0RTJEXHU2NTg3XHU5NUY0XHU2NUUwXHU3QTdBXHU2ODNDXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5DaGluZXNlTm9TcGFjZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZyA9IC8oW1xcdTRlMDAtXFx1OWZhNVx1RkYwQ1x1MzAwMlx1MzAwMVx1RkYxQlx1MjAxOFx1MjAxOVx1MzAwQVx1MzAwQl0rKShcXHMrKShbXFx1NGUwMC1cXHU5ZmE1XHVGRjBDXHUzMDAyXHUzMDAxXHVGRjFCXHUyMDE4XHUyMDE5XHUzMDBBXHUzMDBCXSspL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocmVnLmV4ZWMoY29udGVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9IGNvbnRlbnQucmVwbGFjZShyZWcsIFwiJDEkM1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBcdTY4MDdcdTcwQjlcdTRFMEVcdTY1ODdcdTY3MkNcdTdBN0FcdTY4M0NcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLlB1bmN0dWF0aW9uU3BhY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRleHQuMyBcdTU5MDRcdTc0MDZcdTY4MDdcdTcwQjlcdTRFMEVcdTY1ODdcdTY3MkNcdTdBN0FcdTY4M0NcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmKHNldHRpbmdzLkVuZ2xpc2hTcGFjZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnID0gLyhbLFxcLjtcXD9cXCFcXCldKShbMC05QS1aYS16XFx1MDQwMVxcdTA0NTFcXHUwNDEwLVxcdTA0NGZdKXwoW0EtWmEtejAtOVxcdTRlMDAtXFx1OWZhNTosXFwuXFw/XFwhJ1wiXSspKFxcKCl8WyxcXC47XFw/OiFdW1xcdTRlMDAtXFx1OWZhNV0vZ2k7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGNoID0gcmVnLmV4ZWMoY29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEluZGV4ID0gcmVnLmxhc3RJbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpc1NwYWNlRG90ID0gJyEuPzssJy5jb250YWlucyhjb250ZW50LmNoYXJBdCh0ZW1wSW5kZXgtMSkpICYmICgodGVtcEluZGV4LTI8MCAmJiBpPT0wKSB8fCBjb250ZW50LmNoYXJBdCh0ZW1wSW5kZXgtMik9PScgJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpc051bVB1bmNOdW0gPSAvWywuXVxcZC8udGVzdChjb250ZW50LnN1YnN0cmluZyh0ZW1wSW5kZXgtMSwgdGVtcEluZGV4KzEpKSAmJiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGVtcEluZGV4LTI8MCB8fCAvXFxkLy50ZXN0KGNvbnRlbnQuY2hhckF0KHRlbXBJbmRleC0yKSkpXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLlB1bmN0dWF0aW9uU3BhY2VNb2RlID09IFdvcmtNb2RlLkdsb2JhbGx5ICYmICFpc1NwYWNlRG90ICYmICFpc051bVB1bmNOdW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZygwLCB0ZW1wSW5kZXgpICsgXCIgXCIgKyBjb250ZW50LnN1YnN0cmluZyh0ZW1wSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzUGFyYW1EZWZpbmVkKHByZXZDaCkgJiYgdGVtcEluZGV4ID49IHByZXZDaCAtIG9mZnNldCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB0ZW1wSW5kZXggPCBjdXJDaCAtIG9mZnNldCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhaXNTcGFjZURvdCAmJiAhaXNOdW1QdW5jTnVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgdGVtcEluZGV4KSArIFwiIFwiICsgY29udGVudC5zdWJzdHJpbmcodGVtcEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckNoICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBcdTUzNTVcdTcyRUNcdTU5MDRcdTc0MDZcdTUxOTJcdTUzRjdcdTU0MEVcdTY1ODdcdTY3MkNcdTc2ODRcdTgxRUFcdTUyQThcdTdBN0FcdTY4M0NcdUZGMENcdTRFM0FcdTRFODZcdTUxN0NcdTVCQjkgOmVtb2ppOiBcdTY4M0NcdTVGMEZcdTc2ODRcdThGOTNcdTUxNjVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnMiA9IC8oOikoW0EtWmEtejAtOV9dK1sgLFxcLlxcP1xcXFxcXC87J1wiXHVGRjBDXHUzMDAyXHVGRjFGXHVGRjFCXHUyMDE4XHUyMDFDXHUyMDFEXHUyMDE5XHUzMDAxXFxbXFxdXFwtXFx7XFx9XSkvZ2k7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UocmVnMiwgXCIkMSAkMlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnMyA9IC8oOikoW1wiJ10pL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UocmVnMywgXCIkMSAkMlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjcgXHU1Rjk3XHU1MjMwXHU2NTg3XHU2NzJDXHU5MEU4XHU1MjA2XHU2NjJGXHU1NDI2XHU0RUU1XHU3QTdBXHU3NjdEXHU3QjI2XHU1RjAwXHU1OUNCXHU2MjE2XHU3RUQzXHU2NzVGXHVGRjBDXHU3NTI4XHU2NzY1XHU1MjI0XHU2NUFEXHU1NDBFXHU3RUVEXHU2NTg3XHU2NzJDXHU1MjREXHU1NDBFXHU2NjJGXHU1NDI2XHU5NzAwXHU4OTgxXHU2REZCXHU1MkEwXHU3QTdBXHU2ODNDXG4gICAgICAgICAgICAgICAgICAgIGxldCByZWdTdHJpY3RTcGFjZVN0YXJ0ID0gL15cXDA/XFxzLztcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ1N0cmljdFNwYWNlRW5kID0gL1xcc1xcMD8kLztcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ1N0YXJ0V2l0aFNwYWNlID0gL15cXDA/W1xccyxcXC47XFw/XFwhXHVGRjBDXHUzMDAyXHVGRjFCXHUzMDBCXHVGRjFGXHVGRjFBOlx1RkYwMX5cXCpcdTMwMDFcdUZGMDhcdUZGMDlcIlx1MjAxRFxcW1xcXVxcKVxce1xcfV0vO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVnRW5kV2l0aFNwYWNlID0gL1tcXHNcdUZGMENcdTMwMDJcdTMwMDFcdUZGMUFcdUZGMUJcdUZGMUZcdUZGMDFcdUZGMDhcdUZGMDl+XFwqXCJcdTMwMEFcdTIwMUNcXFtcXF1cXChcXHtcXH1dXFwwPyQvO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdHh0U3RhcnRTcGFjZVNhdGUgPSBTcGFjZVN0YXRlLm5vbmU7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0eHRFbmRTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVnU3RhcnRXaXRoU3BhY2UudGVzdChjb250ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlZ1N0cmljdFNwYWNlU3RhcnQudGVzdChjb250ZW50KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eHRTdGFydFNwYWNlU2F0ZSA9IFNwYWNlU3RhdGUuc3RyaWN0XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHh0U3RhcnRTcGFjZVNhdGUgPSBTcGFjZVN0YXRlLnNvZnRcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWdFbmRXaXRoU3BhY2UudGVzdChjb250ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlZ1N0cmljdFNwYWNlRW5kLnRlc3QoY29udGVudCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHh0RW5kU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUuc3RyaWN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4dEVuZFNwYWNlU3RhdGUgPSBTcGFjZVN0YXRlLnNvZnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjggXHU2ODM5XHU2MzZFXHU1MjREXHU0RTAwXHU5MEU4XHU1MjA2XHU3Njg0XHU1MzNBXHU1NzU3XHU3QzdCXHU1NzhCXHU1OTA0XHU3NDA2XHU3QTdBXHU2ODNDXHU2REZCXHU1MkEwXHU3Njg0XHU5NUVFXHU5ODk4XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocHJldlBhcnRUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubm9uZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5jb2RlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlID4gdHh0U3RhcnRTcGFjZVNhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSAnICcgKyBjb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmZvcm11bGE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUZvcm11bGFTcGFjZU1vZGUgPiB0eHRTdGFydFNwYWNlU2F0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9ICcgJyArIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUud2lraWxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubWRsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2V0dGluZ3MuSW5saW5lTGlua1NtYXJ0U3BhY2UgJiYgc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZSA+IHR4dFN0YXJ0U3BhY2VTYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gJyAnICsgY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzZXR0aW5ncy5JbmxpbmVMaW5rU21hcnRTcGFjZSAmJiB0eHRTdGFydFNwYWNlU2F0ZSA9PSBTcGFjZVN0YXRlLm5vbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoYXJBdFRleHRCZWdpbiA9IGNvbnRlbnQuY2hhckF0KDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnTWRMaW5rRW5kID0gL1xcXS87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyQXRMaW5rRW5kSW5kZXggPSBsaW5lUGFydHNbaSAtIDFdLmNvbnRlbnQuc2VhcmNoKHJlZ01kTGlua0VuZCkgLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hhckF0TGlua0VuZCA9IGxpbmVQYXJ0c1tpIC0gMV0uY29udGVudC5jaGFyQXQoY2hhckF0TGlua0VuZEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoYXJBdExpbmtFbmQgPT09ICdbJykgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0d29OZWlnaGJvckNoYXJzID0gY2hhckF0TGlua0VuZCArIGNoYXJBdFRleHRCZWdpbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ05vdE5lZWRTcGFjZSA9IC9bXFx1NGUwMC1cXHU5ZmE1XHVGRjBDXHUzMDAyXHVGRjFGXHVGRjFBXHVGRjFCXHUyMDFEXHUyMDFDXHUyMDE5XHUyMDE4LVx1RkYwOX1dW1xcdTRlMDAtXFx1OWZhNV0vZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWdOb3ROZWVkU3BhY2UudGVzdCh0d29OZWlnaGJvckNoYXJzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSAnICcgKyBjb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLnVzZXI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c1tpIC0gMV0ucmlnaHRTcGFjZVJlcXVpcmUgPiB0eHRTdGFydFNwYWNlU2F0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9ICcgJyArIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjkgXHU1OTgyXHU2NzlDXHU1MTQ5XHU2ODA3XHU1NzI4XHU4QkU1XHU1MzNBXHU1NzU3XHVGRjBDXHU1MjE5XHU4QkExXHU3Qjk3XHU2NzAwXHU3RUM4XHU1MTQ5XHU2ODA3XHU3Njg0XHU0RjREXHU3RjZFXG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09PSBjdXJzb3JMaW5lUGFydEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnID0gJ1xcMCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbiA9IGNvbnRlbnQuc2VhcmNoKHJlZylcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEN1cnNvckNoID0gb2Zmc2V0ICsgbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFx1NTIyMFx1OTY2NCBcXDBcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gc3RyaW5nRGVsZXRlQXQoY29udGVudCwgbik7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBwcmV2UGFydFR5cGUgPSBJbmxpbmVUeXBlLnRleHQ7XG4gICAgICAgICAgICAgICAgICAgIHByZXZUZXh0RW5kU3BhY2VTdGF0ZSA9IHR4dEVuZFNwYWNlU3RhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vIDMuMi4yIFx1NTkwNFx1NzQwNlx1ODg0Q1x1NTE4NVx1NEVFM1x1NzgwMVx1NTc1N1x1OTBFOFx1NTIwNlxuICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5jb2RlOlxuICAgICAgICAgICAgICAgICAgICAvLyBDb2RlLjEgXHU2ODM5XHU2MzZFXHU1MjREXHU0RTAwXHU1MzNBXHU1NzU3XHU3QzdCXHU1NzhCXHU1NDhDc2V0dGluZ3NcdTZERkJcdTUyQTBcdTdBN0FcdTY4M0NcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHByZXZQYXJ0VHlwZSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm5vbmU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudGV4dDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZSA+IHByZXZUZXh0RW5kU3BhY2VTdGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpLTFdLmNvbnRlbnQgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmNvZGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUNvZGVTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuZm9ybXVsYTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUgfHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLklubGluZUZvcm11bGFTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubWRsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLndpa2lsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSB8fCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS51c2VyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5yaWdodFNwYWNlUmVxdWlyZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBDb2RlLjIgXHU1OTgyXHU2NzlDXHU1MTQ5XHU2ODA3XHU1NzI4XHU4QkU1XHU1MzNBXHU1NzU3XHVGRjBDXHU1MjE5XHU4QkExXHU3Qjk3XHU2NzAwXHU3RUM4XHU1MTQ5XHU2ODA3XHU3Njg0XHU0RjREXHU3RjZFXG4gICAgICAgICAgICAgICAgICAgIGlmKGkgPT09IGN1cnNvckxpbmVQYXJ0SW5kZXgpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEN1cnNvckNoID0gb2Zmc2V0ICsgY3Vyc29yUmVsYXRpdmVJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBDb2RlLjMgXHU1M0Q4XHU5MUNGXHU2NkY0XHU2NUIwXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBsaW5lUGFydHNbaV0uY29udGVudC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHByZXZQYXJ0VHlwZSA9IElubGluZVR5cGUuY29kZTtcbiAgICAgICAgICAgICAgICAgICAgcHJldlRleHRFbmRTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAvLyAzLjIuMyBcdTU5MDRcdTc0MDZcdTg4NENcdTUxODVcdTUxNkNcdTVGMEZcdTc2ODRcdTkwRThcdTUyMDZcbiAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuZm9ybXVsYTpcbiAgICAgICAgICAgICAgICAgICAgLy8gRm9ybXVsYS4xIFx1NjgzOVx1NjM2RVx1NTI0RFx1NEUwMFx1NTMzQVx1NTc1N1x1N0M3Qlx1NTc4Qlx1NTQ4Q3NldHRpbmdzXHU2REZCXHU1MkEwXHU3QTdBXHU2ODNDXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaChwcmV2UGFydFR5cGUpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5ub25lOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLnRleHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUZvcm11bGFTcGFjZU1vZGU+cHJldlRleHRFbmRTcGFjZVN0YXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ktMV0uY29udGVudCArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuY29kZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5mb3JtdWxhOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm1kbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS53aWtpbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUgfHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudXNlcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ktMV0ucmlnaHRTcGFjZVJlcXVpcmU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gRm9ybXVsYS4yIFx1NTk4Mlx1Njc5Q1x1NTE0OVx1NjgwN1x1NTcyOFx1OEJFNVx1NTMzQVx1NTc1N1x1RkYwQ1x1NTIxOVx1OEJBMVx1N0I5N1x1NjcwMFx1N0VDOFx1NTE0OVx1NjgwN1x1NzY4NFx1NEY0RFx1N0Y2RVxuICAgICAgICAgICAgICAgICAgICBpZihpID09PSBjdXJzb3JMaW5lUGFydEluZGV4KVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRDdXJzb3JDaCA9IG9mZnNldCArIGN1cnNvclJlbGF0aXZlSW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gRm9ybXVsYS4zIFx1NTNEOFx1OTFDRlx1NjZGNFx1NjVCMFxuICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBwcmV2UGFydFR5cGUgPSBJbmxpbmVUeXBlLmZvcm11bGE7XG4gICAgICAgICAgICAgICAgICAgIHByZXZUZXh0RW5kU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUubm9uZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubWRsaW5rOlxuICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS53aWtpbGluazpcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHByZXZQYXJ0VHlwZSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm5vbmU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudGV4dDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJldlRleHRFbmRTcGFjZVN0YXRlPnNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGUpIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlPT1TcGFjZVN0YXRlLnN0cmljdCAmJiBwcmV2VGV4dEVuZFNwYWNlU3RhdGU8U3BhY2VTdGF0ZS5zdHJpY3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5jb250ZW50ICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzZXR0aW5ncy5JbmxpbmVMaW5rU21hcnRTcGFjZSAmJiBwcmV2VGV4dEVuZFNwYWNlU3RhdGU9PVNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWdOb05lZWRTcGFjZSA9IC9bXFx1NGUwMC1cXHU5ZmE1XVtcXHU0ZTAwLVxcdTlmYTVdL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyQXRUZXh0RW5kID0gbGluZVBhcnRzW2ktMV0uY29udGVudC5jaGFyQXQobGluZVBhcnRzW2ktMV0uY29udGVudC5sZW5ndGgtMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyQXRMaW5rQmVnaW46c3RyaW5nID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c1tpXS50eXBlPT1JbmxpbmVUeXBlLndpa2lsaW5rKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnQWxpYXMgPSAvXFx8LztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyT2ZBbGlhc0JlZ2luID0gbGluZVBhcnRzW2ldLmNvbnRlbnQuc2VhcmNoKHJlZ0FsaWFzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiY2hhck9mQWxpYXNCZWdpblwiLGNoYXJPZkFsaWFzQmVnaW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmVnaW5JbmRleCA9IDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihsaW5lUGFydHNbaV0uY29udGVudC5jaGFyQXQoMCk9PT0nIScpIGJlZ2luSW5kZXg9MztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoYXJPZkFsaWFzQmVnaW4hPS0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luSW5kZXggPSBjaGFyT2ZBbGlhc0JlZ2luKzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKGxpbmVQYXJ0c1tpXS5jb250ZW50LmNoYXJBdChiZWdpbkluZGV4KT09JyMnKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbkluZGV4ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJBdExpbmtCZWdpbiA9IGxpbmVQYXJ0c1tpXS5jb250ZW50LmNoYXJBdChiZWdpbkluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiYmVnaW5JbmRleFwiLCBiZWdpbkluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNoYXJBdExpbmtCZWdpbj09J10nKSBicmVhazsgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWdNZExpbmtCZWdpbiA9IC9cXFsvO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoYXJBdExpbmtCZWdpbkluZGV4ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQuc2VhcmNoKHJlZ01kTGlua0JlZ2luKSsxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhckF0TGlua0JlZ2luID0gbGluZVBhcnRzW2ldLmNvbnRlbnQuY2hhckF0KGNoYXJBdExpbmtCZWdpbkluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNoYXJBdExpbmtCZWdpbj09PSddJykgYnJlYWs7IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHdvTmVpZ2hib3JDaGFycyA9IGNoYXJBdFRleHRFbmQrY2hhckF0TGlua0JlZ2luO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZighcmVnTm9OZWVkU3BhY2UudGVzdCh0d29OZWlnaGJvckNoYXJzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ktMV0uY29udGVudCArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYoIXNldHRpbmdzLklubGluZUxpbmtTbWFydFNwYWNlICYmIHNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGU+cHJldlRleHRFbmRTcGFjZVN0YXRlKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ktMV0uY29udGVudCArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuY29kZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5mb3JtdWxhOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZXx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLklubGluZUZvcm11bGFTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubWRsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLndpa2lsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLnVzZXI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c1tpLTFdLnJpZ2h0U3BhY2VSZXF1aXJlPlNwYWNlU3RhdGUubm9uZXx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gTGluay4yIFx1NTk4Mlx1Njc5Q1x1OEJFNVx1NTMzQVx1NTc1N1x1NjcwOVx1NTE0OVx1NjgwN1x1RkYwQ1x1NTIxOVx1OEJBMVx1N0I5N1x1NjcwMFx1N0VDOFx1NTE0OVx1NjgwN1x1NEY0RFx1N0Y2RVxuICAgICAgICAgICAgICAgICAgICBpZihpID09PSBjdXJzb3JMaW5lUGFydEluZGV4KVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRDdXJzb3JDaCA9IG9mZnNldCArIGN1cnNvclJlbGF0aXZlSW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gTGluay4zIFx1NjZGNFx1NjVCMFx1NTNEOFx1OTFDRlxuICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBwcmV2UGFydFR5cGUgPSBsaW5lUGFydHNbaV0udHlwZTtcbiAgICAgICAgICAgICAgICAgICAgcHJldlRleHRFbmRTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAvLyAzLjIuNSBcdTU5MDRcdTc0MDZcdTc1MjhcdTYyMzdcdTgxRUFcdTVCOUFcdTRFNDlcdTUzM0FcdTU3NTdcdTc2ODRcdTkwRThcdTUyMDZcbiAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudXNlcjpcbiAgICAgICAgICAgICAgICAgICAgLy8gVXNlci4xIFx1NjgzOVx1NjM2RVx1NTI0RFx1NEUwMFx1NTMzQVx1NTc1N1x1N0M3Qlx1NTc4Qlx1NTQ4Q3NldHRpbmdzXHU2REZCXHU1MkEwXHU3QTdBXHU2ODNDXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaChwcmV2UGFydFR5cGUpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5ub25lOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLnRleHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c1tpXS5sZWZ0U3BhY2VSZXF1aXJlPnByZXZUZXh0RW5kU3BhY2VTdGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpLTFdLmNvbnRlbnQgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmNvZGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c1tpXS5sZWZ0U3BhY2VSZXF1aXJlPlNwYWNlU3RhdGUubm9uZXx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLklubGluZUNvZGVTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuZm9ybXVsYTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZVBhcnRzW2ldLmxlZnRTcGFjZVJlcXVpcmU+U3BhY2VTdGF0ZS5ub25lfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5tZGxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUud2lraWxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c1tpXS5sZWZ0U3BhY2VSZXF1aXJlPlNwYWNlU3RhdGUubm9uZXx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudXNlcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZVBhcnRzW2ldLmxlZnRTcGFjZVJlcXVpcmU+U3BhY2VTdGF0ZS5ub25lfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ktMV0ucmlnaHRTcGFjZVJlcXVpcmU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gVXNlci4yIFx1NTk4Mlx1Njc5Q1x1OEJFNVx1NTMzQVx1NTc1N1x1NjcwOVx1NTE0OVx1NjgwN1x1RkYwQ1x1NTIxOVx1OEJBMVx1N0I5N1x1NjcwMFx1N0VDOFx1NTE0OVx1NjgwN1x1NEY0RFx1N0Y2RVxuICAgICAgICAgICAgICAgICAgICBpZihpID09PSBjdXJzb3JMaW5lUGFydEluZGV4KVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRDdXJzb3JDaCA9IG9mZnNldCArIGN1cnNvclJlbGF0aXZlSW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gTGluay4zIFx1NjZGNFx1NjVCMFx1NTNEOFx1OTFDRlxuICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBwcmV2UGFydFR5cGUgPSBJbmxpbmVUeXBlLnVzZXI7XG4gICAgICAgICAgICAgICAgICAgIHByZXZUZXh0RW5kU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUubm9uZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IobGV0IGk9MDtpPGxpbmVQYXJ0cy5sZW5ndGg7aSsrKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZihsaW5lUGFydHNbaV0udHlwZSA9PT0gSW5saW5lVHlwZS50ZXh0ICYmIGxpbmVQYXJ0c1tpXS5jb250ZW50IT1saW5lUGFydHNPcmlnaW5baV0uY29udGVudClcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGxpbmVQYXJ0c1tpXS5jb250ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c09yaWdpbltpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzT3JpZ2luW2ldLmVuZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjogbGluZVBhcnRzT3JpZ2luW2ldLmNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIFxuICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0ID0gaW5saW5lQ2hhbmdlTGlzdC5zb3J0KChhLCBiKTpudW1iZXI9PmEuYmVnaW4tYi5iZWdpbik7XG4gICAgICAgIHJldHVybiBbcmVzdWx0TGluZSwgcmVzdWx0Q3Vyc29yQ2gsIGlubGluZUNoYW5nZUxpc3RdO1xuICAgIH1cbiAgICBcbn1cblxuXG5leHBvcnQgY2xhc3MgTWFya2Rvd25QYXJzZXJ7XG4gICAgY29uc3RydWN0b3IoKXt9XG5cbn1cblxuZnVuY3Rpb24gbWF0Y2hXaXRoUmVnKHRleHQ6IHN0cmluZywgcmVnRXhwOiBSZWdFeHAsIHR5cGU6IElubGluZVR5cGUsIGlubGluZVR5cGVBcnJheTogSW5saW5lUGFydFtdLFxuICAgIGNoZWNrQXJyYXkgPSBmYWxzZSwgbGVmdFNwYWNlUmU6IFNwYWNlU3RhdGUgPSBTcGFjZVN0YXRlLm5vbmUsIHJpZ2h0U3BhY2VSZTogU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUubm9uZSk6IElubGluZVBhcnRbXSB7XG4gICAgbGV0IHJldEFycmF5ID0gaW5saW5lVHlwZUFycmF5O1xuICAgIGxldCBtYXRjaEFycmF5OiBJbmxpbmVQYXJ0W10gPSBbXTtcbiAgICByZXRBcnJheSA9IHJldEFycmF5LnNvcnQoKGEsIGIpOiBudW1iZXIgPT4gYS5iZWdpbiAtIGIuYmVnaW4pO1xuICAgIC8vIGNvbnNvbGUubG9nKCdiZWZvcmUtLS0tLS0tLS0tLVxcbicscmV0QXJyYXkpXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgbGV0IG1hdGNoID0gcmVnRXhwLmV4ZWModGV4dCk7XG4gICAgICAgIGlmICghbWF0Y2gpIGJyZWFrO1xuICAgICAgICBsZXQgdmFsaWQgPSB0cnVlO1xuICAgICAgICAvLyBcdTY4QzBcdTY3RTVcdTUxQjJcdTdBODFcbiAgICAgICAgaWYgKGNoZWNrQXJyYXkpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmV0QXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZihyZWdFeHAubGFzdEluZGV4PnJldEFycmF5W2ldLmJlZ2luICYmIHJldEFycmF5W2ldLmVuZD5tYXRjaC5pbmRleCl7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIXZhbGlkKSBjb250aW51ZTtcbiAgICAgICAgbWF0Y2hBcnJheS5wdXNoKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG1hdGNoWzBdLFxuICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICAgICAgYmVnaW46IG1hdGNoLmluZGV4LFxuICAgICAgICAgICAgICAgIGVuZDogcmVnRXhwLmxhc3RJbmRleCxcbiAgICAgICAgICAgICAgICBsZWZ0U3BhY2VSZXF1aXJlOiBsZWZ0U3BhY2VSZSxcbiAgICAgICAgICAgICAgICByaWdodFNwYWNlUmVxdWlyZTogcmlnaHRTcGFjZVJlXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuICAgIHJldEFycmF5ID0gcmV0QXJyYXkuY29uY2F0KG1hdGNoQXJyYXkpO1xuICAgIC8vIGNvbnNvbGUubG9nKCdBZnRlcj09PT09PT09PT09XFxuJywgcmV0QXJyYXkpO1xuICAgIHJldHVybiByZXRBcnJheTtcbn1cblxuZnVuY3Rpb24gbWF0Y2hXaXRoQWJicih0ZXh0OiBzdHJpbmcsIHR5cGU6IElubGluZVR5cGUsIGlubGluZVR5cGVBcnJheTogSW5saW5lUGFydFtdLCBjaGVja0FycmF5ID0gZmFsc2Upe1xuICAgIGxldCByZXRBcnJheSA9IGlubGluZVR5cGVBcnJheTtcbiAgICBsZXQgbWF0Y2hBcnJheTogSW5saW5lUGFydFtdID0gW107XG4gICAgcmV0QXJyYXkgPSByZXRBcnJheS5zb3J0KChhLCBiKTogbnVtYmVyID0+IGEuYmVnaW4gLSBiLmJlZ2luKTtcbiAgICBsZXQgcmVnQWJiciA9IC8oW2EtekEtWl1cXC4pKy9nO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGxldCBtYXRjaCA9IHJlZ0FiYnIuZXhlYyh0ZXh0KTtcbiAgICAgICAgaWYgKCFtYXRjaCkgYnJlYWs7XG4gICAgICAgIGxldCB2YWxpZCA9IHRydWU7XG4gICAgICAgIGxldCBpc0luQmxvY2tCZWdpbjpib29sZWFuID0gKG1hdGNoLmluZGV4PT0wKTtcbiAgICAgICAgLy8gXHU2OEMwXHU2N0U1XHU1MUIyXHU3QTgxXG4gICAgICAgIGlmIChjaGVja0FycmF5KSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJldEFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYobWF0Y2guaW5kZXggPT0gcmV0QXJyYXlbaV0uZW5kKXtcbiAgICAgICAgICAgICAgICAgICAgaXNJbkJsb2NrQmVnaW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZihyZWdBYmJyLmxhc3RJbmRleD5yZXRBcnJheVtpXS5iZWdpbiAmJiByZXRBcnJheVtpXS5lbmQ+bWF0Y2guaW5kZXgpe1xuICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYoIWlzSW5CbG9ja0JlZ2luICYmIHZhbGlkKVxuICAgICAgICB7XG4gICAgICAgICAgICBsZXQgcmVnQ2hhciA9IC9bYS16QS1aMC05XS87XG4gICAgICAgICAgICBpZihyZWdDaGFyLnRlc3QodGV4dC5jaGFyQXQobWF0Y2guaW5kZXgtMSkpKXtcbiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF2YWxpZCkgY29udGludWU7XG4gICAgICAgIG1hdGNoQXJyYXkucHVzaChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBtYXRjaFswXSxcbiAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgICAgIGJlZ2luOiBtYXRjaC5pbmRleCxcbiAgICAgICAgICAgICAgICBlbmQ6IHJlZ0FiYnIubGFzdEluZGV4LFxuICAgICAgICAgICAgICAgIGxlZnRTcGFjZVJlcXVpcmU6IFNwYWNlU3RhdGUubm9uZSxcbiAgICAgICAgICAgICAgICByaWdodFNwYWNlUmVxdWlyZTogU3BhY2VTdGF0ZS5ub25lXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuICAgIHJldEFycmF5ID0gcmV0QXJyYXkuY29uY2F0KG1hdGNoQXJyYXkpO1xuICAgIC8vIGNvbnNvbGUubG9nKCdBZnRlcj09PT09PT09PT09XFxuJywgcmV0QXJyYXkpO1xuICAgIHJldHVybiByZXRBcnJheTtcbn1cblxuLyoqXG4gKiBcdTUyMDZcdTUyNzJcdTRFMDBcdTg4NENcdTY1ODdcdTY3MkNcdTRFMkRcdTc2ODRcdTk0RkVcdTYzQTVcdTU0OENcdTc1MjhcdTYyMzdcdTgxRUFcdTVCOUFcdTRFNDlcdTc2ODRcdTZCNjNcdTUyMTlcdTkwRThcdTUyMDZcdUZGMENcdTVGOTdcdTUyMzAgSW5saW5lUGFydCBcdTc2ODRcdTRFMERcdTU0MENcdTUzM0FcdTU3REZcbiAqL1xuZnVuY3Rpb24gc3BsaXRUZXh0V2l0aExpbmtBbmRVc2VyRGVmaW5lZCh0ZXh0OiBzdHJpbmcsIHJlZ0V4cHM/OiBzdHJpbmcpOiBJbmxpbmVQYXJ0W10ge1xuICAgIGxldCByZXRBcnJheTogSW5saW5lUGFydFtdID0gW107XG4gICAgbGV0IHJlZ1dpa2lMaW5rID0gL1xcIXswLDJ9XFxbXFxbW15cXFtcXF1dKj9cXF1cXF0vZztcbiAgICBsZXQgcmVnTWRMaW5rID0gL1xcIXswLDJ9XFxbW15cXFtcXF1dKj9cXF1cXChbXlxcc1xcKVxcKFxcW1xcXVxce1xcfSddKlxcKS9nO1xuICAgIC8vIGxldCByZWdCYXJlTGluayA9IC8oaHR0cHM/OlxcL1xcL3xmdHA6XFwvXFwvfG9ic2lkaWFuOlxcL1xcL3x6b3Rlcm86XFwvXFwvfHd3dy4pW15cXHNcdUZGMDhcdUZGMDlcdTMwMEFcdTMwMEJcdTMwMDJcdUZGMENcdUZGMDFcdUZGMUZcdUZGMUJcdUZGMUFcdTIwMUNcdTIwMURcdTIwMThcdTIwMTlcXClcXChcXFtcXF1cXHtcXH0nXSsvZztcblxuICAgIC8vIDEuIFx1NTMzOVx1OTE0RHdpa2lsaW5rXG4gICAgcmV0QXJyYXkgPSBtYXRjaFdpdGhSZWcodGV4dCwgcmVnV2lraUxpbmssIElubGluZVR5cGUud2lraWxpbmssIHJldEFycmF5KTtcbiAgICAvLyAyLiBcdTUzMzlcdTkxNERtZGxpbmtcbiAgICByZXRBcnJheSA9IG1hdGNoV2l0aFJlZyh0ZXh0LCByZWdNZExpbmssIElubGluZVR5cGUubWRsaW5rLCByZXRBcnJheSk7XG5cbiAgICAvLyAzLiBcdTUzMzlcdTkxNERcdTc1MjhcdTYyMzdcdTgxRUFcdTVCOUFcdTRFNDlcdTZCNjNcdTUyMTlcbiAgICBsZXQgcmVnRXhwTGlzdDogUmVnRXhwW10gPSBbXTtcbiAgICBsZXQgbGVmdFNSZXF1aXJlTGlzdDogU3BhY2VTdGF0ZVtdID0gW107XG4gICAgbGV0IHJpZ2h0U1JlcXVpcmVMaXN0OiBTcGFjZVN0YXRlW10gPSBbXTtcbiAgICBsZXQgcmVnTnVsbCA9IC9eXFxzKiQvZztcbiAgICBsZXQgcmVnU1JlcXVpcmUgPSAvXFx8W1xcLT1cXCtdW1xcLT1cXCtdJC87XG4gICAgaWYgKHJlZ0V4cHMpIHtcbiAgICAgICAgbGV0IHJlZ3MgPSByZWdFeHBzLnNwbGl0KCdcXG4nKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZWdzLmxlbmd0aDsgaSsrKSB7XG5cbiAgICAgICAgICAgIGlmIChyZWdOdWxsLnRlc3QocmVnc1tpXSkpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICBpZiAoKCFyZWdTUmVxdWlyZS50ZXN0KHJlZ3NbaV0pKSB8fCByZWdzW2ldLmxlbmd0aCA8PSAzKSB7XG4gICAgICAgICAgICAgICAgbmV3IE5vdGljZShcIkVhc3lUeXBpbmc6IFx1N0IyQ1wiICsgU3RyaW5nKGkpICsgXCJcdTg4NENcdTgxRUFcdTVCOUFcdTRFNDlcdTZCNjNcdTUyMTlcdTRFMERcdTdCMjZcdTU0MDhcdTg5QzRcdTgzMDNcXG5cIityZWdzW2ldKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCByZWdJdGVtID0gcmVnc1tpXS5zdWJzdHJpbmcoMCwgcmVnc1tpXS5sZW5ndGggLSAzKTtcbiAgICAgICAgICAgIGxldCBzcGFjZVJlcVN0cmluZyA9IHJlZ3NbaV0uc3Vic3RyaW5nKHJlZ3NbaV0ubGVuZ3RoIC0gMyk7XG5cbiAgICAgICAgICAgIGxldCBpc1ZhbGlkUmVnID0gdHJ1ZTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IHJlZ1RlbXAgPSBuZXcgUmVnRXhwKHJlZ0l0ZW0sICdnJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGlzVmFsaWRSZWcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLnNldHRpbmdzLmRlYnVnKXtcbiAgICAgICAgICAgICAgICAgICAgbmV3IE5vdGljZShcIkVhc3VUeXBpbmc6IEJhZCBSZWdFeHA6XFxuXCIgKyByZWdJdGVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnKSB7XG4gICAgICAgICAgICAgICAgcmVnRXhwTGlzdC5wdXNoKG5ldyBSZWdFeHAocmVnSXRlbSwgJ2cnKSk7XG4gICAgICAgICAgICAgICAgbGVmdFNSZXF1aXJlTGlzdC5wdXNoKHN0cjJTcGFjZVN0YXRlKHNwYWNlUmVxU3RyaW5nLmNoYXJBdCgxKSkpO1xuICAgICAgICAgICAgICAgIHJpZ2h0U1JlcXVpcmVMaXN0LnB1c2goc3RyMlNwYWNlU3RhdGUoc3BhY2VSZXFTdHJpbmcuY2hhckF0KDIpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJlZ0xlbiA9IHJlZ0V4cExpc3QubGVuZ3RoO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVnTGVuOyBpKyspIHtcbiAgICAgICAgICAgIHJldEFycmF5ID0gbWF0Y2hXaXRoUmVnKHRleHQsIHJlZ0V4cExpc3RbaV0sIElubGluZVR5cGUudXNlciwgcmV0QXJyYXksIHRydWUsIGxlZnRTUmVxdWlyZUxpc3RbaV0sIHJpZ2h0U1JlcXVpcmVMaXN0W2ldKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFx1NTMzOVx1OTE0RFx1NjVGNlx1OTVGNFx1NjIzM1xuICAgIHJldEFycmF5ID0gbWF0Y2hXaXRoUmVnKHRleHQsIC9cXGR7MSwyfTpcXGR7MSwyfSg6XFxkezAsMn0pezAsMX0vZywgSW5saW5lVHlwZS51c2VyLCByZXRBcnJheSwgdHJ1ZSwgU3BhY2VTdGF0ZS5ub25lLCBTcGFjZVN0YXRlLm5vbmUpO1xuXG4gICAgLy8gNC4gXHU1MzM5XHU5MTREXHU3RjI5XHU1MTk5XHU1OTgyIGEubS5cbiAgICByZXRBcnJheSA9IG1hdGNoV2l0aEFiYnIodGV4dCwgSW5saW5lVHlwZS51c2VyLCByZXRBcnJheSwgdHJ1ZSk7XG5cbiAgICAvLyA1LiBcdTVGOTdcdTUyMzBcdTUyNjlcdTRGNTlcdTc2ODRcdTY1ODdcdTY3MkNcdTkwRThcdTUyMDZcbiAgICByZXRBcnJheSA9IHJldEFycmF5LnNvcnQoKGEsIGIpOiBudW1iZXIgPT4gYS5iZWdpbiAtIGIuYmVnaW4pO1xuXG4gICAgbGV0IHRleHRBcnJheTogSW5saW5lUGFydFtdID0gW107XG4gICAgbGV0IHRleHRCZWdpbiA9IDA7XG4gICAgbGV0IHRleHRFbmQgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmV0QXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHRleHRCZWdpbiA8IHJldEFycmF5W2ldLmJlZ2luKSB7XG4gICAgICAgICAgICB0ZXh0RW5kID0gcmV0QXJyYXlbaV0uYmVnaW47XG4gICAgICAgICAgICB0ZXh0QXJyYXkucHVzaChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHRleHQuc3Vic3RyaW5nKHRleHRCZWdpbiwgdGV4dEVuZCksXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IElubGluZVR5cGUudGV4dCxcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IHRleHRCZWdpbixcbiAgICAgICAgICAgICAgICAgICAgZW5kOiB0ZXh0RW5kLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0U3BhY2VSZXF1aXJlOiBTcGFjZVN0YXRlLm5vbmUsXG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0U3BhY2VSZXF1aXJlOiBTcGFjZVN0YXRlLm5vbmVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRleHRCZWdpbiA9IHJldEFycmF5W2ldLmVuZDtcbiAgICB9XG5cbiAgICBpZiAodGV4dEJlZ2luICE9IHRleHQubGVuZ3RoKSB7XG4gICAgICAgIHRleHRBcnJheS5wdXNoKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHRleHQuc3Vic3RyaW5nKHRleHRCZWdpbiwgdGV4dC5sZW5ndGgpLFxuICAgICAgICAgICAgICAgIHR5cGU6IElubGluZVR5cGUudGV4dCxcbiAgICAgICAgICAgICAgICBiZWdpbjogdGV4dEJlZ2luLFxuICAgICAgICAgICAgICAgIGVuZDogdGV4dC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgbGVmdFNwYWNlUmVxdWlyZTogU3BhY2VTdGF0ZS5ub25lLFxuICAgICAgICAgICAgICAgIHJpZ2h0U3BhY2VSZXF1aXJlOiBTcGFjZVN0YXRlLm5vbmVcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyA2LiBcdTU0MDhcdTVFNzZcdTY1ODdcdTY3MkNcdTkwRThcdTUyMDZcdTU0OENcdTUxNzZcdTRFRDZcdTkwRThcdTUyMDZcbiAgICByZXRBcnJheSA9IHJldEFycmF5LmNvbmNhdCh0ZXh0QXJyYXkpO1xuICAgIHJldEFycmF5ID0gcmV0QXJyYXkuc29ydCgoYSwgYik6IG51bWJlciA9PiBhLmJlZ2luIC0gYi5iZWdpbik7XG4gICAgcmV0dXJuIHJldEFycmF5XG59XG5cbi8vIFx1NUI1N1x1N0IyNlx1OEY2Q1x1NTMxNlx1NjIxMFx1N0E3QVx1NjgzQ1x1NzJCNlx1NjAwMVx1ODk4MVx1NkM0MlxuZnVuY3Rpb24gc3RyMlNwYWNlU3RhdGUoczogc3RyaW5nKTogU3BhY2VTdGF0ZSB7XG4gICAgc3dpdGNoIChzKSB7XG4gICAgICAgIGNhc2UgXCIrXCI6XG4gICAgICAgICAgICByZXR1cm4gU3BhY2VTdGF0ZS5zdHJpY3Q7XG4gICAgICAgIGNhc2UgJz0nOlxuICAgICAgICAgICAgcmV0dXJuIFNwYWNlU3RhdGUuc29mdDtcbiAgICAgICAgY2FzZSAnLSc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gU3BhY2VTdGF0ZS5ub25lO1xuICAgIH1cbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nMlNwYWNlU3RhdGUoczpzdHJpbmcpOlNwYWNlU3RhdGVcbntcbiAgICBpZihOdW1iZXIocyk9PVNwYWNlU3RhdGUubm9uZSkgcmV0dXJuIFNwYWNlU3RhdGUubm9uZTtcbiAgICBpZihOdW1iZXIocyk9PVNwYWNlU3RhdGUuc29mdCkgcmV0dXJuIFNwYWNlU3RhdGUuc29mdDtcbiAgICBpZihOdW1iZXIocyk9PVNwYWNlU3RhdGUuc3RyaWN0KSByZXR1cm4gU3BhY2VTdGF0ZS5zdHJpY3Q7XG4gICAgcmV0dXJuIFNwYWNlU3RhdGUubm9uZTtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9zTGluZVR5cGUoc3RhdGU6IEVkaXRvclN0YXRlLCBwb3M6IG51bWJlcik6TGluZVR5cGUge1xuICAgIGNvbnN0IGxpbmUgPSBzdGF0ZS5kb2MubGluZUF0KHBvcylcbiAgICBjb25zdCB0cmVlID0gc3ludGF4VHJlZShzdGF0ZSk7XG4gICAgY29uc3QgdG9rZW4gPSB0cmVlLnJlc29sdmUobGluZS5mcm9tLCAxKS5uYW1lXG5cbiAgICAvLyBmb3IgKGxldCBwPWxpbmUuZnJvbTsgcDxsaW5lLnRvOyBwKz0xKXtcbiAgICAvLyAgICAgY29uc29sZS5sb2cocC1saW5lLmZyb20sIHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lKVxuICAgIC8vIH1cblxuICAgIGlmICh0b2tlbi5jb250YWlucygnaG1kLWZyb250bWF0dGVyJykpe1xuICAgICAgICByZXR1cm4gTGluZVR5cGUuZnJvbnRtYXR0ZXJcbiAgICB9XG5cbiAgICBpZih0b2tlbi5jb250YWlucygnbWF0aCcpKXtcbiAgICAgICAgZm9yKGxldCBwPWxpbmUuZnJvbSsxO3A8bGluZS50bztwKz0xKXtcbiAgICAgICAgICAgIGlmKCF0cmVlLnJlc29sdmUocCwgMSkubmFtZS5jb250YWlucygnbWF0aCcpKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gTGluZVR5cGUudGV4dFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBMaW5lVHlwZS5mb3JtdWxhXG4gICAgfVxuICAgIGVsc2UgaWYodG9rZW4uY29udGFpbnMoJ2NvZGUnKSAmJiB0b2tlbi5jb250YWlucygnYmxvY2snKSl7XG4gICAgICAgIGZvcihsZXQgcD1saW5lLmZyb20rMTtwPGxpbmUudG87cCs9MSl7XG4gICAgICAgICAgICBsZXQgdCA9IHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lXG4gICAgICAgICAgICBpZighKHQuY29udGFpbnMoJ2NvZGUnKSAmJiB0LmNvbnRhaW5zKCdibG9jaycpKSl7XG4gICAgICAgICAgICAgICAgcmV0dXJuIExpbmVUeXBlLnRleHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTGluZVR5cGUuY29kZWJsb2NrXG4gICAgfVxuICAgIHJldHVybiBMaW5lVHlwZS50ZXh0XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvc0xpbmVUeXBlMihzdGF0ZTogRWRpdG9yU3RhdGUsIHBvczogbnVtYmVyKTpMaW5lVHlwZSB7XG4gICAgY29uc3QgbGluZSA9IHN0YXRlLmRvYy5saW5lQXQocG9zKVxuICAgIGNvbnN0IHRyZWUgPSBzeW50YXhUcmVlKHN0YXRlKTtcbiAgICBjb25zdCB0b2tlbiA9IHRyZWUucmVzb2x2ZShsaW5lLmZyb20sIDEpLm5hbWVcbiAgICBpZiAodG9rZW4uY29udGFpbnMoJ2htZC1mcm9udG1hdHRlcicpKXtcbiAgICAgICAgcmV0dXJuIExpbmVUeXBlLmZyb250bWF0dGVyXG4gICAgfVxuXG4gICAgaWYodG9rZW4uY29udGFpbnMoJ21hdGgnKSl7XG4gICAgICAgIGZvcihsZXQgcD1saW5lLmZyb20rMTtwPGxpbmUudG87cCs9MSl7XG4gICAgICAgICAgICBpZighdHJlZS5yZXNvbHZlKHAsIDEpLm5hbWUuY29udGFpbnMoJ21hdGgnKSl7XG4gICAgICAgICAgICAgICAgcmV0dXJuIExpbmVUeXBlLnRleHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTGluZVR5cGUuZm9ybXVsYVxuICAgIH1cbiAgICBlbHNlIGlmKHRva2VuLmNvbnRhaW5zKCdjb2RlJykgJiYgdG9rZW4uY29udGFpbnMoJ2Jsb2NrJykpe1xuICAgICAgICBmb3IobGV0IHA9bGluZS5mcm9tKzE7cDxsaW5lLnRvO3ArPTEpe1xuICAgICAgICAgICAgbGV0IHQgPSB0cmVlLnJlc29sdmUocCwgMSkubmFtZVxuICAgICAgICAgICAgaWYoISh0LmNvbnRhaW5zKCdjb2RlJykgJiYgdC5jb250YWlucygnYmxvY2snKSkpe1xuICAgICAgICAgICAgICAgIHJldHVybiBMaW5lVHlwZS50ZXh0XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIExpbmVUeXBlLmNvZGVibG9ja1xuICAgIH1cblxuICAgIGZvcihsZXQgcD1saW5lLmZyb207cDxsaW5lLnRvO3ArPTEpe1xuICAgICAgICBpZih0cmVlLnJlc29sdmUocCwgMSkubmFtZS5jb250YWlucygnbGlzdCcpKXtcbiAgICAgICAgICAgIHJldHVybiBMaW5lVHlwZS5saXN0XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZih0cmVlLnJlc29sdmUocCwgMSkubmFtZS5jb250YWlucygnY2FsbG91dCcpKXtcbiAgICAgICAgICAgIHJldHVybiBMaW5lVHlwZS5jYWxsb3V0X3RpdGxlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYodG9rZW4uY29udGFpbnMoJ3F1b3RlJykpe1xuICAgICAgICByZXR1cm4gTGluZVR5cGUucXVvdGU7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBMaW5lVHlwZS50ZXh0XG59IiwgImltcG9ydCB7IEFubm90YXRpb24sIEVkaXRvclN0YXRlLCBFeHRlbnNpb24sIFN0YXRlRmllbGQsIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblNwZWMsIFRleHR9IGZyb20gJ0Bjb2RlbWlycm9yL3N0YXRlJztcbmltcG9ydCB7IEVhc3lUeXBpbmdTZXR0aW5nVGFiLCBFYXN5VHlwaW5nU2V0dGluZ3MsIFBhaXJTdHJpbmcsIENvbnZlcnRSdWxlfSBmcm9tIFwiLi9zZXR0aW5nc1wiXG5cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc1RvT2Zmc2V0KGRvYzpUZXh0LCBwb3M6e2xpbmU6bnVtYmVyLCBjaDpudW1iZXJ9KSB7XG5cdHJldHVybiBkb2MubGluZShwb3MubGluZSArIDEpLmZyb20gKyBwb3MuY2hcbn1cbmV4cG9ydCBmdW5jdGlvbiBvZmZzZXRUb1Bvcyhkb2M6VGV4dCwgb2Zmc2V0Om51bWJlcikge1xuXHRsZXQgbGluZSA9IGRvYy5saW5lQXQob2Zmc2V0KVxuXHRyZXR1cm4ge2xpbmU6IGxpbmUubnVtYmVyIC0gMSwgY2g6IG9mZnNldCAtIGxpbmUuZnJvbX1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFR5cGVTdHJPZlRyYW5zYWModHI6IFRyYW5zYWN0aW9uKTogc3RyaW5nIHtcblx0bGV0IFRyYW5zYWNUeXBlQXJyYXk6c3RyaW5nW10gPSBbXCJFYXN5VHlwaW5nLmNoYW5nZVwiLCBcblx0XHRcdFx0XHRcdFx0XCJpbnB1dC50eXBlLmNvbXBvc2VcIiwgXCJpbnB1dC50eXBlXCIsIFwiaW5wdXQucGFzdGVcIiwgXCJpbnB1dC5kcm9wXCIsIFwiaW5wdXQuY29tcGxldGVcIiwgXCJpbnB1dFwiLFxuXHRcdFx0XHRcdFx0XHRcImRlbGV0ZS5zZWxlY3Rpb25cIiwgXCJkZWxldGUuZm9yd2FyZFwiLCBcImRlbGV0ZS5iYWNrd2FyZFwiLCBcImRlbGV0ZS5jdXRcIiwgXCJkZWxldGVcIixcblx0XHRcdFx0XHRcdFx0XCJtb3ZlLmRyb3BcIixcblx0XHRcdFx0XHRcdFx0XCJ1bmRvXCIsIFwicmVkb1wiLFxuXHRcdFx0XHRcdFx0XHRcInNlbGVjdC5wb2ludGVyXCJdO1xuXHRmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgVHJhbnNhY1R5cGVBcnJheS5sZW5ndGg7IGkrKylcblx0e1xuXHRcdGlmICh0ci5pc1VzZXJFdmVudChUcmFuc2FjVHlwZUFycmF5W2ldKSlcblx0XHRcdHJldHVybiBUcmFuc2FjVHlwZUFycmF5W2ldO1xuXHR9XG5cdHJldHVybiBcIm5vbmVcIlxufVxuXG5mdW5jdGlvbiBzdHJpbmcycGFpcnN0cmluZyhzOiBzdHJpbmcpOlBhaXJTdHJpbmd7XG5cdGxldCBjdXJzb3JJZHggPSBzLmluZGV4T2YoXCJ8XCIpO1xuXHRsZXQgbGVmdCA9IHMuc3Vic3RyaW5nKDAsIGN1cnNvcklkeCk7XG5cdGxldCByaWdodCA9IHMuc3Vic3RyaW5nKGN1cnNvcklkeCsxKTtcblx0cmV0dXJuIHtsZWZ0OmxlZnQsIHJpZ2h0OnJpZ2h0fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVTdHJpbmdMaXN0MlJ1bGVMaXN0KGxpc3Q6IEFycmF5PFtzdHJpbmcsIHN0cmluZ10+KTpDb252ZXJ0UnVsZVtdIHtcblx0bGV0IHJlczpDb252ZXJ0UnVsZVtdID0gW107XG5cdGZvciAobGV0IGkgaW4gbGlzdCl7XG5cdFx0cmVzW2ldID0ge2JlZm9yZTogc3RyaW5nMnBhaXJzdHJpbmcobGlzdFtpXVswXSksIGFmdGVyOiBzdHJpbmcycGFpcnN0cmluZyhsaXN0W2ldWzFdKX1cblx0fVxuXHRyZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nRGVsZXRlQXQoc3RyOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOnN0cmluZ1xue1xuICAgIHJldHVybiBzdHIuc3Vic3RyaW5nKDAsIGluZGV4KStzdHIuc3Vic3RyaW5nKGluZGV4KzEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nSW5zZXJ0QXQoc3RyOnN0cmluZywgaW5kZXg6IG51bWJlciwgczogc3RyaW5nKTpzdHJpbmdcbntcbiAgICByZXR1cm4gc3RyLnN1YnN0cmluZygwLCBpbmRleCkrcytzdHIuc3Vic3RyaW5nKGluZGV4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUGFyYW1EZWZpbmVkKHBhcmFtOiBhbnkpOmJvb2xlYW5cbntcblx0cmV0dXJuIHR5cGVvZiBwYXJhbSE9PVwidW5kZWZpbmVkXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93U3RyaW5nKHM6IHN0cmluZyk6c3RyaW5ne1xuXHRyZXR1cm4gcy5yZXBsYWNlKC9cXG4vZywgJ1xcXFxuJyk7XG59IiwgImltcG9ydCB7IFNwYWNlU3RhdGUsIHN0cmluZzJTcGFjZVN0YXRlIH0gZnJvbSAnc3JjL2NvcmUnO1xuaW1wb3J0IHsgQXBwLCBUZXh0Q29tcG9uZW50LCBNYXJrZG93blZpZXcsIE1vZGFsLCBOb3RpY2UsIFBsdWdpbiwgUGx1Z2luU2V0dGluZ1RhYiwgU2V0dGluZywgV29ya3NwYWNlLCBXb3Jrc3BhY2VMZWFmLCBUZXh0QXJlYUNvbXBvbmVudCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCBFYXN5VHlwaW5nUGx1Z2luIGZyb20gJy4vbWFpbic7XG5pbXBvcnQgeyBzaG93U3RyaW5nIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFpclN0cmluZyB7XG5cdGxlZnQ6IHN0cmluZztcblx0cmlnaHQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb252ZXJ0UnVsZSB7XG5cdGJlZm9yZTogUGFpclN0cmluZztcblx0YWZ0ZXI6IFBhaXJTdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIFJ1bGVUeXBlIHtkZWxldGU9IFwiRGVsZXRlIFJ1bGVcIiwgY29udmVydD0nQ29udmVydCBSdWxlJ31cbmV4cG9ydCBlbnVtIFdvcmtNb2RlIHsgT25seVdoZW5UeXBpbmcgPSBcInR5cGluZ1wiLCBHbG9iYWxseSA9IFwiZ2xvYmFsXCIgfVxuXG5leHBvcnQgaW50ZXJmYWNlIEVhc3lUeXBpbmdTZXR0aW5ncyB7XG5cdFRhYm91dDogYm9vbGVhbjtcblx0U2VsZWN0aW9uRW5oYW5jZTogYm9vbGVhbjtcblx0SW50cmluc2ljU3ltYm9sUGFpcnM6IGJvb2xlYW47XG5cdEJhc2VPYkVkaXRFbmhhbmNlOiBib29sZWFuO1xuXHRGVzJIV0VuaGFuY2U6IGJvb2xlYW47XG5cdEF1dG9Gb3JtYXQ6IGJvb2xlYW47XG5cdEV4Y2x1ZGVGaWxlczogc3RyaW5nO1xuXHRBdXRvQ2FwaXRhbDogYm9vbGVhbjtcblx0QXV0b0NhcGl0YWxNb2RlOiBXb3JrTW9kZTtcblx0Q2hpbmVzZUVuZ2xpc2hTcGFjZTogYm9vbGVhbjtcblx0RW5nbGlzaE51bWJlclNwYWNlOiBib29sZWFuO1xuXHRDaGluZXNlTm9TcGFjZTogYm9vbGVhbjtcblx0Q2hpbmVzZU51bWJlclNwYWNlOiBib29sZWFuO1xuXHRQdW5jdHVhdGlvblNwYWNlOiBib29sZWFuO1xuXHRQdW5jdHVhdGlvblNwYWNlTW9kZTogV29ya01vZGU7XG5cdElubGluZUNvZGVTcGFjZU1vZGU6IFNwYWNlU3RhdGU7XG5cdElubGluZUZvcm11bGFTcGFjZU1vZGU6IFNwYWNlU3RhdGU7XG5cdElubGluZUxpbmtTcGFjZU1vZGU6IFNwYWNlU3RhdGU7XG5cdElubGluZUxpbmtTbWFydFNwYWNlOiBib29sZWFuO1xuXHRVc2VyRGVmaW5lZFJlZ1N3aXRjaDogYm9vbGVhbjtcblx0VXNlckRlZmluZWRSZWdFeHA6IHN0cmluZztcblx0ZGVidWc6IGJvb2xlYW47XG5cblx0dXNlclNlbFJlcFJ1bGVUcmlnZ2VyOiBzdHJpbmdbXTtcblx0dXNlclNlbFJlcFJ1bGVWYWx1ZTogUGFpclN0cmluZ1tdO1xuXHR1c2VyRGVsZXRlUnVsZXNTdHJMaXN0OiBbc3RyaW5nLCBzdHJpbmddW107XG5cdHVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0OiBbc3RyaW5nLCBzdHJpbmddW107XG5cdHVzZXJTZWxSdWxlU2V0dGluZ3NPcGVuOiBib29sZWFuO1xuXHR1c2VyRGVsUnVsZVNldHRpbmdzT3BlbjogYm9vbGVhbjtcblx0dXNlckN2dFJ1bGVTZXR0aW5nc09wZW46IGJvb2xlYW47XG5cblx0RW50ZXJUd2ljZTogYm9vbGVhbjtcblx0UHVuY1JlY3RpZnk6IGJvb2xlYW47XG5cdFRyeUZpeENoaW5lc2VJTTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfU0VUVElOR1M6IEVhc3lUeXBpbmdTZXR0aW5ncyA9IHtcblx0VGFib3V0OiB0cnVlLFxuXHRTZWxlY3Rpb25FbmhhbmNlOiB0cnVlLFxuXHRJbnRyaW5zaWNTeW1ib2xQYWlyczogdHJ1ZSxcblx0QmFzZU9iRWRpdEVuaGFuY2U6IHRydWUsXG5cdEZXMkhXRW5oYW5jZTogdHJ1ZSxcblxuXHRBdXRvRm9ybWF0OiB0cnVlLFxuXHRFeGNsdWRlRmlsZXM6IFwiXCIsXG5cdENoaW5lc2VFbmdsaXNoU3BhY2U6IHRydWUsXG5cdENoaW5lc2VOdW1iZXJTcGFjZTogdHJ1ZSxcblx0RW5nbGlzaE51bWJlclNwYWNlOiB0cnVlLFxuXHRDaGluZXNlTm9TcGFjZTogdHJ1ZSxcblx0UHVuY3R1YXRpb25TcGFjZTogdHJ1ZSxcblx0QXV0b0NhcGl0YWw6IHRydWUsXG5cdEF1dG9DYXBpdGFsTW9kZTogV29ya01vZGUuT25seVdoZW5UeXBpbmcsXG5cdFB1bmN0dWF0aW9uU3BhY2VNb2RlOiBXb3JrTW9kZS5Pbmx5V2hlblR5cGluZyxcblx0SW5saW5lQ29kZVNwYWNlTW9kZTogU3BhY2VTdGF0ZS5zb2Z0LFxuXHRJbmxpbmVGb3JtdWxhU3BhY2VNb2RlOiBTcGFjZVN0YXRlLnNvZnQsXG5cdElubGluZUxpbmtTcGFjZU1vZGU6IFNwYWNlU3RhdGUuc29mdCxcblx0SW5saW5lTGlua1NtYXJ0U3BhY2U6IHRydWUsXG5cdFVzZXJEZWZpbmVkUmVnU3dpdGNoOiB0cnVlLFxuXHRVc2VyRGVmaW5lZFJlZ0V4cDogXCJ7ey4qP319fCsrXFxuXCIrXG5cdFx0XCI8Lio/PnwtLVxcblwiICtcblx0XHRcIlxcXFxbXFxcXCEuKj9cXFxcXVstK117MCwxfXwtK1xcblwiK1xuXHRcdFwiKGZpbGU6Ly8vfGh0dHBzPzovL3xmdHA6Ly98b2JzaWRpYW46Ly98em90ZXJvOi8vfHd3dy4pW15cXFxcc1x1RkYwOFx1RkYwOVx1MzAwQVx1MzAwQlx1MzAwMixcdUZGMENcdUZGMDFcdUZGMUY7XHVGRjFCXHVGRjFBXHUyMDFDXHUyMDFEXHUyMDE4XHUyMDE5XFxcXClcXFxcKFxcXFxbXFxcXF1cXFxce1xcXFx9J10rfCsrXFxuXCIrXG5cdFx0XCJcXG5bYS16QS1aMC05X1xcXFwtLl0rQFthLXpBLVowLTlfXFxcXC0uXSt8KytcXG5cIitcblx0XHRcIig/PCEjKSNbXFxcXHU0ZTAwLVxcXFx1OWZhNVxcXFx3XFxcXC9dK3wrK1wiLFxuXHRkZWJ1ZzogZmFsc2UsXG5cdHVzZXJTZWxSZXBSdWxlVHJpZ2dlcjogW1wiLVwiLCBcIiNcIl0sXG5cdHVzZXJTZWxSZXBSdWxlVmFsdWU6IFt7bGVmdDpcIn5+XCIsIHJpZ2h0Olwifn5cIn0sIHtsZWZ0OlwiI1wiLCByaWdodDpcIiBcIn1dLFxuXHR1c2VyRGVsZXRlUnVsZXNTdHJMaXN0OiBbW1wiZGVtb3xcIiwgXCJ8XCJdXSxcblx0dXNlckNvbnZlcnRSdWxlc1N0ckxpc3Q6IFtbXCI6KXxcIixcIlx1RDgzRFx1REUwMHxcIl1dLFxuXHR1c2VyU2VsUnVsZVNldHRpbmdzT3BlbjogdHJ1ZSxcblx0dXNlckRlbFJ1bGVTZXR0aW5nc09wZW46IHRydWUsXG5cdHVzZXJDdnRSdWxlU2V0dGluZ3NPcGVuOiB0cnVlLFxuXG5cdEVudGVyVHdpY2U6IGZhbHNlLFxuXHRUcnlGaXhDaGluZXNlSU06IGZhbHNlLFxuXHRQdW5jUmVjdGlmeTogZmFsc2UsXG59XG5cbmV4cG9ydCBjbGFzcyBFYXN5VHlwaW5nU2V0dGluZ1RhYiBleHRlbmRzIFBsdWdpblNldHRpbmdUYWIge1xuXHRwbHVnaW46IEVhc3lUeXBpbmdQbHVnaW47XG5cblx0Y29uc3RydWN0b3IoYXBwOiBBcHAsIHBsdWdpbjogRWFzeVR5cGluZ1BsdWdpbikge1xuXHRcdHN1cGVyKGFwcCwgcGx1Z2luKTtcblx0XHR0aGlzLnBsdWdpbiA9IHBsdWdpbjtcblx0fVxuXG5cdGRpc3BsYXkoKTogdm9pZCB7XG5cdFx0Y29uc3QgeyBjb250YWluZXJFbCB9ID0gdGhpcztcblxuXHRcdGNvbnRhaW5lckVsLmVtcHR5KCk7XG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbChcImgxXCIsIHsgdGV4dDogXCJPYnNpZGlhbiBFYXN5VHlwaW5nIFBsdWdpblwiIH0pO1xuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwicFwiLCB7IHRleHQ6IFwiTW9yZSBkZXRhaWwgaXMgaW4gR2l0aHViOiBcIiB9KS5jcmVhdGVFbChcImFcIiwge1xuXHRcdFx0dGV4dDogXCJlYXN5LXR5cGluZy1vYnNpZGlhblwiLFxuXHRcdFx0aHJlZjogXCJodHRwczovL2dpdGh1Yi5jb20vWWFvemh1d2EvZWFzeS10eXBpbmctb2JzaWRpYW5cIixcblx0XHR9KTtcblxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMicsIHsgdGV4dDogJ1x1NTg5RVx1NUYzQVx1N0YxNlx1OEY5MVx1OEJCRVx1N0Y2RSAoRW5oYW5jZWQgRWRpdGluZyBTZXR0aW5nKScgfSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3ltYm9sIGF1dG8gcGFpciBhbmQgZGVsZXRlIHdpdGggcGFpclwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTU4OUVcdTUyQTBcdTU5MUFcdTc5Q0RcdTdCMjZcdTUzRjdcdTkxNERcdTVCRjlcdThGOTNcdTUxNjVcdUZGMENcdTkxNERcdTVCRjlcdTUyMjBcdTk2NjRcdUZGMENcdTU5ODJcdTMwMEFcdTMwMEIsIFx1MjAxQ1x1MjAxRCwgXHUzMDBDXHUzMDBELCBcdTMwMEVcdTMwMEYsXHUzMDEwXHUzMDExXHU3QjQ5XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkludHJpbnNpY1N5bWJvbFBhaXJzKVxuXHRcdFx0XHRcdC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkludHJpbnNpY1N5bWJvbFBhaXJzID0gdmFsdWU7XG5cdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlNlbGVjdGlvbiBSZXBsYWNlIEVuaGFuY2VtZW50XCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1OTAwOVx1NEUyRFx1NjU4N1x1NjcyQ1x1NjBDNVx1NTFCNVx1NEUwQlx1NzY4NFx1N0YxNlx1OEY5MVx1NTg5RVx1NUYzQVx1RkYwQ1x1NjMwOVx1RkZFNVx1MjE5MiRcdTkwMDlcdTRFMkRcdTc2ODRcdTY1ODdcdTY3MkMkLCBcdTYzMDlcdTAwQjdcdTIxOTJgXHU5MDA5XHU0RTJEXHU3Njg0XHU2NTg3XHU2NzJDYFx1RkYwQ1x1MzAwQSBcdTIxOTIgXHUzMDBBXHU5MDA5XHU0RTJEXHU3Njg0XHU2NTg3XHU2NzJDXHUzMDBCXHU3QjQ5XHU3QjQ5XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlNlbGVjdGlvbkVuaGFuY2UpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuU2VsZWN0aW9uRW5oYW5jZSA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJDb252ZXJ0IHN1Y2Nlc3NpdmUgZnVsbCB3aWR0aCBzeW1ib2wgdG8gaGFsZiB3aWR0aCBzeW1ib2xcIilcblx0XHRcdC5zZXREZXNjKFwiXHU4RkRFXHU3RUVEXHU4RjkzXHU1MTY1XHU1MTY4XHU4OUQyXHU3QjI2XHU1M0Y3XHU4RjZDXHU1MzRBXHU4OUQyXHVGRjBDXHUzMDAyXHUzMDAyXHUyMTkyIC5cdUZGMENcdUZGMDFcdUZGMDFcdTIxOTIgIVx1RkYwQyBcdTMwMEJcdTMwMEJcdTIxOTIgPlwiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5GVzJIV0VuaGFuY2UpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuRlcySFdFbmhhbmNlID0gdmFsdWU7XG5cdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkJhc2ljIHN5bWJvbCBpbnB1dCBlbmhhbmNlIGZvciBvYnNpZGlhblwiKVxuXHRcdFx0LnNldERlc2MoXCJPYnNpZGlhbiBcdTc2ODRcdTU3RkFcdTc4NDBcdThGOTNcdTUxNjVcdTU4OUVcdTVGM0FcdUZGMENcdTU5ODJcdTMwMTBcdTMwMTB8IFx1MjE5MiBbW3xdXVx1RkYwQ1x1NTNFNVx1OTk5Nlx1NzY4NFx1MzAwMVx1MjE5MiAvXHVGRjBDXHU1M0U1XHU5OTk2XHU3Njg0XHUzMDBCXHUyMTkyID5cdUZGMENcdTAwQjdcdTAwQjd8IFx1MjE5MiBgfGBcdUZGMEMgYFx1MDBCN3xgIFx1NTNEOFx1NjIxMFx1NEVFM1x0XHU3ODAxXHU1NzU3XHVGRjBDXHVGRkU1XHVGRkU1fCBcdTIxOTIgJHwkXCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkJhc2VPYkVkaXRFbmhhbmNlKVxuXHRcdFx0XHRcdC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkJhc2VPYkVkaXRFbmhhbmNlID0gdmFsdWU7XG5cdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlRhYm91dFwiKVxuXHRcdFx0LnNldERlc2MoXCJUYWJvdXQgaW5saW5lIGNvZGUuIFRhYlx1OERGM1x1NTFGQVx1ODg0Q1x1NTE4NVx1NEVFM1x1NzgwMVx1NTc1N1wiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5UYWJvdXQpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuVGFib3V0ID0gdmFsdWU7XG5cdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2gyJywgeyB0ZXh0OiAnXHU4MUVBXHU1QjlBXHU0RTQ5XHU3RjE2XHU4RjkxXHU4RjZDXHU2MzYyXHU4OUM0XHU1MjE5IChDdXN0b21pemUgRWRpdCBDb252ZXJ0aW9uIFJ1bGUpJyB9KTtcblx0XHR0aGlzLmJ1aWxkVXNlclNlbFJlcFJ1bGVTZXR0aW5nKHRoaXMuY29udGFpbmVyRWwuY3JlYXRlRWwoXCJkZXRhaWxzXCIsIHtcblx0XHRcdGNsczogXCJlYXN5dHlwaW5nLW5lc3RlZC1zZXR0aW5nc1wiLFxuXHRcdFx0YXR0cjoge1xuXHRcdFx0XHQuLi4odGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlclNlbFJ1bGVTZXR0aW5nc09wZW4/eyBvcGVuOiB0cnVlIH06e30pXG5cdFx0XHR9XG5cdFx0fSkpXG5cblx0XHR0aGlzLmJ1aWxkVXNlckRlbGV0ZVJ1bGVTZXR0aW5nKHRoaXMuY29udGFpbmVyRWwuY3JlYXRlRWwoXCJkZXRhaWxzXCIsIHtcblx0XHRcdGNsczogXCJlYXN5dHlwaW5nLW5lc3RlZC1zZXR0aW5nc1wiLFxuXHRcdFx0YXR0cjoge1xuXHRcdFx0XHQuLi4odGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckRlbFJ1bGVTZXR0aW5nc09wZW4/eyBvcGVuOiB0cnVlIH06e30pXG5cdFx0XHR9XG5cdFx0fSkpXG5cblx0XHR0aGlzLmJ1aWxkVXNlckNvbnZlcnRSdWxlU2V0dGluZyh0aGlzLmNvbnRhaW5lckVsLmNyZWF0ZUVsKFwiZGV0YWlsc1wiLCB7XG5cdFx0XHRjbHM6IFwiZWFzeXR5cGluZy1uZXN0ZWQtc2V0dGluZ3NcIixcblx0XHRcdGF0dHI6IHtcblx0XHRcdFx0Li4uKHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJDdnRSdWxlU2V0dGluZ3NPcGVuP3sgb3BlbjogdHJ1ZSB9Ont9KVxuXHRcdFx0fVxuXHRcdH0pKVxuXHRcdFxuXG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2gyJywgeyB0ZXh0OiAnXHU4MUVBXHU1MkE4XHU2ODNDXHU1RjBGXHU1MzE2XHU4QkJFXHU3RjZFIChBdXRvZm9ybWF0IFNldHRpbmcpJyB9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJBdXRvIGZvcm1hdHRpbmcgd2hlbiB0eXBpbmdcIilcblx0XHRcdC5zZXREZXNjKFwiXHU2NjJGXHU1NDI2XHU1NzI4XHU3RjE2XHU4RjkxXHU2NTg3XHU2ODYzXHU2NUY2XHU4MUVBXHU1MkE4XHU2ODNDXHU1RjBGXHU1MzE2XHU2NTg3XHU2NzJDXHVGRjBDXHU4MUVBXHU1MkE4XHU2ODNDXHU1RjBGXHU1MzE2XHU3Njg0XHU2MDNCXHU1RjAwXHU1MTczXCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkF1dG9Gb3JtYXQpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuQXV0b0Zvcm1hdCA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgncCcsIHsgdGV4dDogJ0RldGFpbGVkIFNldHRpbmcgQmVsb3cnIH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlNwYWNlIGJldHdlZW4gQ2hpbmVzZSBhbmQgRW5nbGlzaFwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTU3MjhcdTRFMkRcdTY1ODdcdTU0OENcdTgyRjFcdTY1ODdcdTk1RjRcdTdBN0FcdTY4M0NcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuQ2hpbmVzZUVuZ2xpc2hTcGFjZSkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuQ2hpbmVzZUVuZ2xpc2hTcGFjZSA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlNwYWNlIGJldHdlZW4gQ2hpbmVzZSBhbmQgTnVtYmVyXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOFx1NEUyRFx1NjU4N1x1NTQ4Q1x1NjU3MFx1NUI1N1x1OTVGNFx1N0E3QVx1NjgzQ1wiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5DaGluZXNlTnVtYmVyU3BhY2UpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkNoaW5lc2VOdW1iZXJTcGFjZSA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdFxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJTcGFjZSBiZXR3ZWVuIEVuZ2lsc2ggYW5kIE51bWJlclwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTU3MjhcdTgyRjFcdTY1ODdcdTU0OENcdTY1NzBcdTVCNTdcdTk1RjRcdTdBN0FcdTY4M0NcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuRW5nbGlzaE51bWJlclNwYWNlKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5FbmdsaXNoTnVtYmVyU3BhY2UgPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJEZWxldGUgdGhlIFNwYWNlIGJldHdlZW4gQ2hpbmVzZSBjaGFyYWN0ZXJzXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOFx1NEUyRFx1NjU4N1x1NUI1N1x1N0IyNlx1OTVGNFx1NTNCQlx1OTY2NFx1N0E3QVx1NjgzQ1wiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5DaGluZXNlTm9TcGFjZSkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuQ2hpbmVzZU5vU3BhY2UgPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJDYXBpdGFsaXplIHRoZSBmaXJzdCBsZXR0ZXIgb2YgZXZlcnkgc2VudGVuY2VcIilcblx0XHRcdC5zZXREZXNjKFwiXHU4MkYxXHU2NTg3XHU2QkNGXHU0RTJBXHU1M0U1XHU5OTk2XHU1QjU3XHU2QkNEXHU1OTI3XHU1MTk5XCIpXG5cdFx0XHQuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihXb3JrTW9kZS5Pbmx5V2hlblR5cGluZywgXCJcdThGOTNcdTUxNjVcdTY1RjZcdTc1MUZcdTY1NDgoT25seSBXaGVuIFR5cGluZylcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihXb3JrTW9kZS5HbG9iYWxseSwgXCJcdTUxNjhcdTVDNDBcdTc1MUZcdTY1NDgoV29yayBHbG9iYWxseSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkF1dG9DYXBpdGFsTW9kZSk7XG5cdFx0XHRcdGRyb3Bkb3duLm9uQ2hhbmdlKGFzeW5jICh2OiBXb3JrTW9kZS5Pbmx5V2hlblR5cGluZyB8IFdvcmtNb2RlLkdsb2JhbGx5KSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuQXV0b0NhcGl0YWxNb2RlID0gdjtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFRvb2x0aXAoXCJcdTUyOUZcdTgwRkRcdTVGMDBcdTUxNzMoU3dpdGNoKVwiKTtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkF1dG9DYXBpdGFsKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5BdXRvQ2FwaXRhbCA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlNtYXJ0bHkgaW5zZXJ0IHNwYWNlIGJldHdlZW4gdGV4dCBhbmQgcHVuY3R1YXRpb25cIilcblx0XHRcdC5zZXREZXNjKFwiXHU1NzI4XHU2NTg3XHU2NzJDXHU1NDhDXHU2ODA3XHU3MEI5XHU5NUY0XHU2REZCXHU1MkEwXHU3QTdBXHU2ODNDXCIpXG5cdFx0XHQuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihXb3JrTW9kZS5Pbmx5V2hlblR5cGluZywgXCJcdThGOTNcdTUxNjVcdTY1RjZcdTc1MUZcdTY1NDgoT25seSBXaGVuIFR5cGluZylcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihXb3JrTW9kZS5HbG9iYWxseSwgXCJcdTUxNjhcdTVDNDBcdTc1MUZcdTY1NDgoV29yayBHbG9iYWxseSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlB1bmN0dWF0aW9uU3BhY2VNb2RlKTtcblx0XHRcdFx0ZHJvcGRvd24ub25DaGFuZ2UoYXN5bmMgKHY6IFdvcmtNb2RlLk9ubHlXaGVuVHlwaW5nIHwgV29ya01vZGUuR2xvYmFsbHkpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5QdW5jdHVhdGlvblNwYWNlTW9kZSA9IHY7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pXG5cdFx0XHR9KVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5QdW5jdHVhdGlvblNwYWNlKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5QdW5jdHVhdGlvblNwYWNlID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3BhY2Ugc3RhdGVneSBiZXR3ZWVuIGlubGluZSBjb2RlIGFuZCB0ZXh0XCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOCBgXHU4ODRDXHU1MTg1XHU0RUUzXHU3ODAxYCBcdTU0OENcdTY1ODdcdTY3MkNcdTk1RjRcdTc2ODRcdTdBN0FcdTY4M0NcdTdCNTZcdTc1NjVcdTMwMDJcIiArXG5cdFx0XHRcdFwiXHU2NUUwXHU4OTgxXHU2QzQyXHVGRjFBXHU1QkY5XHU2NzJDXHU3QzdCXHU1MjJCXHU1NzU3XHU0RTBFXHU1REU2XHU1M0YzXHU2NTg3XHU2NzJDXHU2Q0ExXHU2NzA5XHU3QTdBXHU2ODNDXHU3Njg0XHU4OTgxXHU2QzQyXHVGRjBDXCIgK1xuXHRcdFx0XHRcIlx1OEY2Rlx1N0E3QVx1NjgzQ1x1RkYxQVx1NUJGOVx1NjcyQ1x1N0M3Qlx1NTIyQlx1NTc1N1x1NEUwRVx1NTQ2OFx1NTZGNFx1NTMzQVx1NTc1N1x1NTNFQVx1ODk4MVx1NkM0Mlx1NjcwOVx1OEY2Rlx1N0E3QVx1NjgzQ1x1RkYwQ1x1OEY2Rlx1N0E3QVx1NjgzQ1x1NTk4Mlx1NUY1M1x1NTI0RFx1NTc1N1x1NURFNlx1OEZCOVx1NzY4NFx1NEUzNFx1OEZEMVx1NjU4N1x1NjcyQ1x1NEUzQVx1MzAwMlx1RkYwQ1x1RkYxQlx1RkYxRlx1N0I0OVx1NTE2OFx1ODlEMlx1NjgwN1x1NzBCOVx1RkYwQ1x1NUY1M1x1NTI0RFx1NTc1N1x1NTNGM1x1OEZCOVx1NzY4NFx1NEUzNFx1OEZEMVx1NjU4N1x1NjcyQ1x1NEUzQVx1NjI0MFx1NjcwOVx1NTE2OFx1NTM0QVx1ODlEMlx1NjgwN1x1NzBCOVx1RkYwQ1wiICtcblx0XHRcdFx0XCJcdTRFMjVcdTY4M0NcdTdBN0FcdTY4M0NcdUZGMUFcdTVGNTNcdTUyNERcdTU3NTdcdTRFMEVcdTRFMzRcdThGRDFcdTY1ODdcdTY3MkNcdTRFNEJcdTk1RjRcdTRFMjVcdTY4M0NcdTZERkJcdTUyQTBcdTdBN0FcdTY4M0NcdTMwMDJcIlxuXHRcdFx0KVxuXHRcdFx0LmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4ge1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oU3RyaW5nKFNwYWNlU3RhdGUubm9uZSksIFwiXHU2NUUwXHU4OTgxXHU2QzQyKE5vIFJlcXVpcmUpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oU3RyaW5nKFNwYWNlU3RhdGUuc29mdCksIFwiXHU4RjZGXHU3QTdBXHU2ODNDKFNvZnQgU3BhY2UpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oU3RyaW5nKFNwYWNlU3RhdGUuc3RyaWN0KSwgXCJcdTRFMjVcdTY4M0NcdTdBN0FcdTY4M0MoU3RyaWN0IFNwYWNlKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uc2V0VmFsdWUoU3RyaW5nKHRoaXMucGx1Z2luLnNldHRpbmdzLklubGluZUNvZGVTcGFjZU1vZGUpKTtcblx0XHRcdFx0ZHJvcGRvd24ub25DaGFuZ2UoYXN5bmMgKHY6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLklubGluZUNvZGVTcGFjZU1vZGUgPSBzdHJpbmcyU3BhY2VTdGF0ZSh2KTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSlcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlNwYWNlIHN0YXRlZ3kgYmV0d2VlbiBpbmxpbmUgZm9ybXVsYSBhbmQgdGV4dFwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTU3MjggJFx1ODg0Q1x1NTE4NVx1NTE2Q1x1NUYwRiQgXHU1NDhDXHU2NTg3XHU2NzJDXHU5NUY0XHU3Njg0XHU3QTdBXHU2ODNDXHU3QjU2XHU3NTY1XCIpXG5cdFx0XHQuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5ub25lKSwgXCJcdTY1RTBcdTg5ODFcdTZDNDIoTm8gUmVxdWlyZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5zb2Z0KSwgXCJcdThGNkZcdTdBN0FcdTY4M0MoU29mdCBTcGFjZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihTdHJpbmcoU3BhY2VTdGF0ZS5zdHJpY3QpLCBcIlx1NEUyNVx1NjgzQ1x1N0E3QVx1NjgzQyhTdHJpY3QgU3BhY2UpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5zZXRWYWx1ZShTdHJpbmcodGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZSkpO1xuXHRcdFx0XHRkcm9wZG93bi5vbkNoYW5nZShhc3luYyAodjogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZSA9IHN0cmluZzJTcGFjZVN0YXRlKHYpO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KVxuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3BhY2Ugc3RyYXRlZ3kgYmV0d2VlbiBsaW5rIGFuZCB0ZXh0XCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOCBbW3dpa2lsaW5rXV0gW21kbGlua10oLi4uKSBcdTU0OENcdTY1ODdcdTY3MkNcdTk1RjRcdTdBN0FcdTY4M0NcdTdCNTZcdTc1NjVcdTMwMDJcdTY2N0FcdTgwRkRcdTdBN0FcdTY4M0NcdTZBMjFcdTVGMEZcdTRFMEJcdTUyMTlcdTRGMUFcdTgwMDNcdTg2NTFcdThCRTVcdTk0RkVcdTYzQTVcdTU3NTdcdTc2ODRcdTY2M0VcdTc5M0FcdTUxODVcdTVCQjlcdUZGMDhcdTU5ODJ3aWtpXHU5NEZFXHU2M0E1XHU3Njg0XHU1MjJCXHU1NDBEXHVGRjA5XHU2NzY1XHU0RTBFXHU0RTM0XHU4RkQxXHU2NTg3XHU2NzJDXHU4RkRCXHU4ODRDXHU3QTdBXHU2ODNDXHUzMDAyXCIpXG5cdFx0XHQuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihcImR1bW15XCIsIFwiXHU1NDQ2XHU3QTdBXHU2ODNDKGR1bW15KVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFwic21hcnRcIiwgXCJcdTY2N0FcdTgwRkRcdTdBN0FcdTY4M0MoU21hcnQpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5JbmxpbmVMaW5rU21hcnRTcGFjZSA/IFwic21hcnRcIiA6IFwiZHVtbXlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLm9uQ2hhbmdlKGFzeW5jICh2OiBzdHJpbmcpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5JbmxpbmVMaW5rU21hcnRTcGFjZSA9IHYgPT0gXCJzbWFydFwiID8gdHJ1ZSA6IGZhbHNlO1xuXHRcdFx0XHRcdC8vIG5ldyBOb3RpY2UoU3RyaW5nKHRoaXMucGx1Z2luLnNldHRpbmdzLklubGluZUxpbmtTbWFydFNwYWNlKSk7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pXG5cdFx0XHR9KVxuXHRcdFx0LmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4ge1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oU3RyaW5nKFNwYWNlU3RhdGUubm9uZSksIFwiXHU2NUUwXHU4OTgxXHU2QzQyKE5vIFJlcXVpcmUpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oU3RyaW5nKFNwYWNlU3RhdGUuc29mdCksIFwiXHU4RjZGXHU3QTdBXHU2ODNDKFNvZnQgU3BhY2UpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oU3RyaW5nKFNwYWNlU3RhdGUuc3RyaWN0KSwgXCJcdTRFMjVcdTY4M0NcdTdBN0FcdTY4M0MoU3RyaWN0IFNwYWNlKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uc2V0VmFsdWUoU3RyaW5nKHRoaXMucGx1Z2luLnNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGUpKTtcblx0XHRcdFx0ZHJvcGRvd24ub25DaGFuZ2UoYXN5bmMgKHY6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGUgPSBzdHJpbmcyU3BhY2VTdGF0ZSh2KTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDInLCB7IHRleHQ6ICdcdTgxRUFcdTVCOUFcdTRFNDlcdTZCNjNcdTUyMTlcdTUzM0FcdTU3NTcgKEN1c3RvbSByZWd1bGFyIGV4cHJlc3Npb25zIGJsb2NrKScgfSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlVzZXIgRGVmaW5lZCBSZWdFeHAgU3dpdGNoXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1ODFFQVx1NUI5QVx1NEU0OVx1NkI2M1x1NTIxOVx1ODg2OFx1OEZCRVx1NUYwRlx1NUYwMFx1NTE3M1x1RkYwQ1x1NTMzOVx1OTE0RFx1NTIzMFx1NzY4NFx1NTE4NVx1NUJCOVx1NEUwRFx1OEZEQlx1ODg0Q1x1NjgzQ1x1NUYwRlx1NTMxNlx1RkYwQ1x1NEUxNFx1NTNFRlx1NEVFNVx1OEJCRVx1N0Y2RVx1NTMzOVx1OTE0RFx1NTIzMFx1NzY4NFx1NTE4NVx1NUJCOVx1NTc1N1x1NEUwRVx1NTE3Nlx1NEVENlx1NTE4NVx1NUJCOVx1NEU0Qlx1OTVGNFx1NzY4NFx1N0E3QVx1NjgzQ1x1N0I1Nlx1NzU2NVwiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5Vc2VyRGVmaW5lZFJlZ1N3aXRjaCkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuVXNlckRlZmluZWRSZWdTd2l0Y2ggPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwicFwiLCB7IHRleHQ6IFwiXHU2QjYzXHU1MjE5XHU4ODY4XHU4RkJFXHU1RjBGXHU3NkY4XHU1MTczXHU3N0U1XHU4QkM2XHVGRjBDXHU4OUMxIFwiIH0pLmNyZWF0ZUVsKFwiYVwiLCB7XG5cdFx0XHR0ZXh0OiBcIlx1MzAwQVx1OTYyRVx1NEUwMFx1NUNGMFx1RkYxQVx1NkI2M1x1NTIxOVx1ODg2OFx1OEZCRVx1NUYwRlx1N0I4MFx1NjYwRVx1NjU1OVx1N0EwQlx1MzAwQlwiLFxuXHRcdFx0aHJlZjogXCJodHRwczovL2phdmFzY3JpcHQucnVhbnlpZmVuZy5jb20vc3RkbGliL3JlZ2V4cC5odG1sI1wiLFxuXHRcdH0pO1xuXG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoXCJwXCIsIHsgdGV4dDogXCJcdTZCNjNcdTUyMTlcdTg4NjhcdThGQkVcdTVGMEZcdTg5QzRcdTUyMTlcdTRGN0ZcdTc1MjhcdThCRjRcdTY2MEVcdTRFMEVcdTc5M0FcdTRGOEJcdUZGMUFcIiB9KS5jcmVhdGVFbChcImFcIiwge1xuXHRcdFx0dGV4dDogXCJcdTgxRUFcdTVCOUFcdTRFNDlcdTZCNjNcdTUyMTlcdTg4NjhcdThGQkVcdTVGMEZcdTg5QzRcdTUyMTlcIixcblx0XHRcdGhyZWY6IFwiaHR0cHM6Ly9naXRodWIuY29tL1lhb3podXdhL2Vhc3ktdHlwaW5nLW9ic2lkaWFuL2Jsb2IvbWFzdGVyL1VzZXJEZWZpbmVkUmVnRXhwLm1kXCIsXG5cdFx0fSk7XG5cblx0XHRjb25zdCByZWdDb250ZW50QXJlYVNldHRpbmcgPSBuZXcgU2V0dGluZyhjb250YWluZXJFbCk7XG5cdFx0cmVnQ29udGVudEFyZWFTZXR0aW5nLnNldHRpbmdFbC5zZXRBdHRyaWJ1dGUoXG5cdFx0XHRcInN0eWxlXCIsXG5cdFx0XHRcImRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1wiXG5cdFx0KTtcblx0XHRyZWdDb250ZW50QXJlYVNldHRpbmdcblx0XHRcdC5zZXROYW1lKFwiVXNlci1kZWZpbmVkIFJlZ3VsYXIgRXhwcmVzc2lvbiwgb25lIGV4cHJlc3Npb24gcGVyIGxpbmVcIilcblx0XHRcdC5zZXREZXNjKFxuXHRcdFx0XHRcIlx1NzUyOFx1NjIzN1x1ODFFQVx1NUI5QVx1NEU0OVx1NkI2M1x1NTIxOVx1ODg2OFx1OEZCRVx1NUYwRlx1RkYwQ1x1NTMzOVx1OTE0RFx1NTIzMFx1NzY4NFx1NTE4NVx1NUJCOVx1NEUwRFx1OEZEQlx1ODg0Q1x1NjgzQ1x1NUYwRlx1NTMxNlx1RkYwQ1x1NkJDRlx1ODg0Q1x1NEUwMFx1NEUyQVx1ODg2OFx1OEZCRVx1NUYwRlx1RkYwQ1x1ODg0Q1x1NUMzRVx1NEUwRFx1ODk4MVx1OTY4Rlx1NjEwRlx1NTJBMFx1N0E3QVx1NjgzQ1x1MzAwMlwiICtcblx0XHRcdFx0XCJcdTZCQ0ZcdTg4NENcdTY3MkJcdTVDM0UzXHU0RTJBXHU1QjU3XHU3QjI2XHU3Njg0XHU1NkZBXHU1QjlBXHU0RTNBfFx1NTQ4Q1x1NEUyNFx1NEUyQVx1N0E3QVx1NjgzQ1x1N0I1Nlx1NzU2NVx1N0IyNlx1NTNGN1x1RkYwQ1x1N0E3QVx1NjgzQ1x1N0I1Nlx1NzU2NVx1N0IyNlx1NTNGN1x1NEUzQS09K1x1RkYwQ1x1NTIwNlx1NTIyQlx1NEVFM1x1ODg2OFx1NEUwRFx1ODk4MVx1NkM0Mlx1N0E3QVx1NjgzQygtKVx1RkYwQ1x1OEY2Rlx1N0E3QVx1NjgzQyg9KVx1RkYwQ1x1NEUyNVx1NjgzQ1x1N0E3QVx1NjgzQygrKVx1MzAwMlwiICtcblx0XHRcdFx0XCJcdThGRDlcdTRFMjRcdTRFMkFcdTdBN0FcdTY4M0NcdTdCNTZcdTc1NjVcdTdCMjZcdTUzRjdcdTUyMDZcdTUyMkJcdTRFM0FcdTUzMzlcdTkxNERcdTUzM0FcdTU3NTdcdTc2ODRcdTVERTZcdTUzRjNcdTRFMjRcdThGQjlcdTc2ODRcdTdBN0FcdTY4M0NcdTdCNTZcdTc1NjVcIlxuXHRcdFx0KTtcblx0XHRjb25zdCByZWdDb250ZW50QXJlYSA9IG5ldyBUZXh0QXJlYUNvbXBvbmVudChcblx0XHRcdHJlZ0NvbnRlbnRBcmVhU2V0dGluZy5jb250cm9sRWxcblx0XHQpO1xuXG5cdFx0c2V0QXR0cmlidXRlcyhyZWdDb250ZW50QXJlYS5pbnB1dEVsLCB7XG5cdFx0XHRzdHlsZTogXCJtYXJnaW4tdG9wOiAxMnB4OyB3aWR0aDogMTAwJTsgIGhlaWdodDogMzB2aDtcIixcblx0XHRcdC8vIGNsYXNzOiBcIm1zLWNzcy1lZGl0b3JcIixcblx0XHR9KTtcblx0XHRyZWdDb250ZW50QXJlYVxuXHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlVzZXJEZWZpbmVkUmVnRXhwKVxuXHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5Vc2VyRGVmaW5lZFJlZ0V4cCA9IHZhbHVlO1xuXHRcdFx0XHR0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdH0pO1xuXG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2gyJywgeyB0ZXh0OiAnXHU2MzA3XHU1QjlBXHU2NTg3XHU0RUY2XHU0RTBEXHU4MUVBXHU1MkE4XHU2ODNDXHU1RjBGXHU1MzE2IChFeGNsdWRlIEZvbGRlcnMvRmlsZXMpJyB9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiRXhjbHVkZSBGb2xkZXJzL0ZpbGVzXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlRoaXMgcGx1Z2luIHdpbGwgcGFyc2UgZWFjaCBsaW5lIGFzIGEgZXhsdWRlIGZvbGRlciBvciBmaWxlLiBGb3IgZXhhbXBsZTogRGFpbHlOb3RlLywgRGFpbHlOb3RlL1dlZWtOb3Rlcy8sIERhaWx5Tm90ZS90ZXN0Lm1kXCIpXG5cdFx0XHQuYWRkVGV4dEFyZWEoKHRleHQpID0+XG5cdFx0XHRcdHRleHRcblx0XHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuRXhjbHVkZUZpbGVzKVxuXHRcdFx0XHRcdC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkV4Y2x1ZGVGaWxlcyA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0fSlcblx0XHRcdCk7XG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDInLCB7IHRleHQ6ICdFeHBlcmltZW50YWwgRmVhdHVyZXMnIH0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJFbmhhbmNlIENoaW5lc2UgSW5wdXQgTWV0aG9kXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NEUyRFx1NjU4N1x1OEY5M1x1NTE2NVx1NkNENVx1NEUwQlx1RkYwQ1x1NTZERVx1OEY2Nlx1OEY5M1x1NTE2NVx1ODJGMVx1NjU4N1x1NjVGNlx1ODFFQVx1NTJBOFx1NjgzQ1x1NUYwRlx1NTMxNlwiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5UcnlGaXhDaGluZXNlSU0pLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLlRyeUZpeENoaW5lc2VJTSA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlN0cmljdCBMaW5lIGJyZWFrcyBNb2RlIEVudGVyIFR3aWNlXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NEUyNVx1NjgzQ1x1NjM2Mlx1ODg0Q1x1NzY4NFx1OEJCRVx1N0Y2RVx1NEUwQlx1RkYwQ1x1NTcyOFx1NjY2RVx1OTAxQVx1NjU4N1x1NjcyQ1x1ODg0Q1x1OEZEQlx1ODg0Q1x1NEUwMFx1NkIyMVx1NTZERVx1OEY2Nlx1NEYxQVx1NEVBN1x1NzUxRlx1NEUyNFx1NEUyQVx1NjM2Mlx1ODg0Q1x1N0IyNlwiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5FbnRlclR3aWNlKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5FbnRlclR3aWNlID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlB1bmMgcmVjdGlmeVwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTRFQzVcdTU3MjhcdThGOTNcdTUxNjVcdThGQzdcdTdBMEJcdTRFMkRcdUZGMENcdTRFMkRcdTY1ODdcdTk1RjRcdTc2ODRcdTgyRjFcdTY1ODdcdTY4MDdcdTcwQjlcdUZGMDgsLj8hXHVGRjA5XHU4MUVBXHU1MkE4XHU4RjZDXHU2MzYyXHU0RTNBXHU1MTY4XHU4OUQyXHVGRjA4XHU1M0VGXHU2NEE0XHU5NTAwXHVGRjA5XCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLlB1bmNSZWN0aWZ5KS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5QdW5jUmVjdGlmeSA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlByaW50IGRlYnVnIGluZm8gaW4gY29uc29sZVwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTU3MjhcdTYzQTdcdTUyMzZcdTUzRjBcdThGOTNcdTUxRkFcdThDMDNcdThCRDVcdTRGRTFcdTYwNkZcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZGVidWcpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmRlYnVnID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdH1cblxuXHRidWlsZFVzZXJTZWxSZXBSdWxlU2V0dGluZyhjb250YWluZXJFbDogSFRNTERldGFpbHNFbGVtZW50KXtcblx0XHRjb250YWluZXJFbC5lbXB0eSgpO1xuICAgICAgICBjb250YWluZXJFbC5vbnRvZ2dsZSA9IGFzeW5jICgpID0+IHtcblx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJTZWxSdWxlU2V0dGluZ3NPcGVuID0gY29udGFpbmVyRWwub3Blbjtcblx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICB9O1xuXHRcdGNvbnN0IHN1bW1hcnkgPSBjb250YWluZXJFbC5jcmVhdGVFbChcInN1bW1hcnlcIiwge2NsczogXCJlYXN5dHlwaW5nLW5lc3RlZC1zZXR0aW5nc1wifSk7XG5cdFx0c3VtbWFyeS5zZXRUZXh0KFwiXHU4MUVBXHU1QjlBXHU0RTQ5XHU5MDA5XHU0RTJEXHU2NTg3XHU2NzJDXHU3RjE2XHU4RjkxXHU1ODlFXHU1RjNBXHU4OUM0XHU1MjE5IChDdXN0b21pemUgU2VsZWN0aW9uIFJlcGxhY2UgUnVsZSlcIilcblxuICAgICAgICAvLyBzdW1tYXJ5LnNldEhlYWRpbmcoKS5zZXROYW1lKFwiVXNlciBkZWZpbmVkIFNlbGVjdGlvbiBSZXBsYWNlIFJ1bGVcIik7XG4gICAgICAgIC8vIHN1bW1hcnkuY3JlYXRlRGl2KFwiY29sbGFwc2VyXCIpLmNyZWF0ZURpdihcImhhbmRsZVwiKTtcblxuXHRcdGNvbnN0IHNlbGVjdGlvblJ1bGVTZXR0aW5nID0gbmV3IFNldHRpbmcoY29udGFpbmVyRWwpO1xuXHRcdHNlbGVjdGlvblJ1bGVTZXR0aW5nXG5cdFx0XHQuc2V0TmFtZShcIlNlbGVjdGlvbiBSZXBsZWNlIFJ1bGVcIilcblxuXHRcdGNvbnN0IHJlcGxhY2VSdWxlVHJpZ2dlciA9IG5ldyBUZXh0Q29tcG9uZW50KHNlbGVjdGlvblJ1bGVTZXR0aW5nLmNvbnRyb2xFbCk7XG5cdFx0cmVwbGFjZVJ1bGVUcmlnZ2VyLnNldFBsYWNlaG9sZGVyKFwiVHJpZ2dyIFN5bWJvbFwiKTtcblxuXHRcdGNvbnN0IHJlcGxhY2VMZWZ0U3RyaW5nID0gbmV3IFRleHRBcmVhQ29tcG9uZW50KHNlbGVjdGlvblJ1bGVTZXR0aW5nLmNvbnRyb2xFbCk7XG5cdFx0cmVwbGFjZUxlZnRTdHJpbmcuc2V0UGxhY2Vob2xkZXIoXCJOZXcgTGVmdCBTaWRlIFN0cmluZ1wiKTtcblxuXHRcdGNvbnN0IHJlcGxhY2VSaWdodFN0cmluZyA9IG5ldyBUZXh0QXJlYUNvbXBvbmVudChzZWxlY3Rpb25SdWxlU2V0dGluZy5jb250cm9sRWwpO1xuXHRcdHJlcGxhY2VSaWdodFN0cmluZy5zZXRQbGFjZWhvbGRlcihcIk5ldyBSaWdodCBTaWRlIFN0cmluZ1wiKTtcblxuXHRcdHNlbGVjdGlvblJ1bGVTZXR0aW5nXG5cdFx0XHQuYWRkQnV0dG9uKChidXR0b24pID0+IHtcblx0XHRcdFx0YnV0dG9uXG5cdFx0XHRcdFx0LnNldEJ1dHRvblRleHQoXCIrXCIpXG5cdFx0XHRcdFx0LnNldFRvb2x0aXAoXCJBZGQgUnVsZVwiKVxuXHRcdFx0XHRcdC5vbkNsaWNrKGFzeW5jIChidXR0b25FbDogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRsZXQgdHJpZ2dlciA9IHJlcGxhY2VSdWxlVHJpZ2dlci5pbnB1dEVsLnZhbHVlO1xuXHRcdFx0XHRcdFx0bGV0IGxlZnQgPSByZXBsYWNlTGVmdFN0cmluZy5pbnB1dEVsLnZhbHVlO1xuXHRcdFx0XHRcdFx0bGV0IHJpZ2h0ID0gcmVwbGFjZVJpZ2h0U3RyaW5nLmlucHV0RWwudmFsdWU7XG5cdFx0XHRcdFx0XHRpZiAodHJpZ2dlciAmJiAobGVmdCB8fCByaWdodCkpIHtcblx0XHRcdFx0XHRcdFx0aWYodHJpZ2dlci5sZW5ndGg+MSl7XG5cdFx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIklubHZhbGlkIHRyaWdnZXIsIHRyaWdnZXIgbXVzdCBiZSBhIHN5bWJvbCBvZiBsZW5ndGggMVwiKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucGx1Z2luLmFkZFVzZXJTZWxlY3Rpb25SZXBSdWxlKHRyaWdnZXIsIGxlZnQsIHJpZ2h0KSl7XG5cdFx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5kaXNwbGF5KCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZWxzZXtcblx0XHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKFwid2FybmluZyEgVHJpZ2dlciBcIiArIHRyaWdnZXIgKyBcIiBpcyBhbHJlYWR5IGV4aXN0IVwiKVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIm1pc3NpbmcgaW5wdXRcIik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdC8vIGNvbnN0IHNlbFJlcFJ1bGVDb250YWluZXIgPSBjb250YWluZXJFbC5jcmVhdGVFbChcImRpdlwiKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlci5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IHRyaWdnZXIgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVRyaWdnZXJbaV07XG5cdFx0XHRsZXQgbGVmdF9zID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVWYWx1ZVtpXS5sZWZ0O1xuXHRcdFx0bGV0IHJpZ2h0X3MgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVZhbHVlW2ldLnJpZ2h0O1xuXHRcdFx0bGV0IHNob3dTdHIgPSBcIlRyaWdnZXI6IFwiICsgdHJpZ2dlciArIFwiIFx1MjE5MiBcIiArIHNob3dTdHJpbmcobGVmdF9zKSArIFwic2VsZWN0ZWRcIiArIHNob3dTdHJpbmcocmlnaHRfcyk7XG5cdFx0XHQvLyBjb25zdCBzZXR0aW5nSXRlbSA9IHNlbFJlcFJ1bGVDb250YWluZXIuY3JlYXRlRWwoXCJkaXZcIik7XG5cdFx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdFx0LnNldE5hbWUoc2hvd1N0cilcblx0XHRcdFx0LmFkZEV4dHJhQnV0dG9uKGJ1dHRvbiA9PiB7XG5cdFx0XHRcdFx0YnV0dG9uLnNldEljb24oXCJnZWFyXCIpXG5cdFx0XHRcdFx0XHQuc2V0VG9vbHRpcChcIkVkaXQgcnVsZVwiKVxuXHRcdFx0XHRcdFx0Lm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRuZXcgU2VsZWN0UnVsZUVkaXRNb2RhbCh0aGlzLmFwcCwgdHJpZ2dlcixsZWZ0X3MsIHJpZ2h0X3MsIGFzeW5jIChuZXdfbGVmdCwgbmV3X3JpZ2h0KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4udXBkYXRlVXNlclNlbGVjdGlvblJlcFJ1bGUoaSwgbmV3X2xlZnQsIG5ld19yaWdodCk7XG5cdFx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5kaXNwbGF5KCk7XG5cdFx0XHRcdFx0XHRcdH0pLm9wZW4oKTtcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5hZGRFeHRyYUJ1dHRvbihidXR0b24gPT4ge1xuXHRcdFx0XHRcdGJ1dHRvbi5zZXRJY29uKFwidHJhc2hcIilcblx0XHRcdFx0XHRcdC5zZXRUb29sdGlwKFwiUmVtb3ZlIHJ1bGVcIilcblx0XHRcdFx0XHRcdC5vbkNsaWNrKGFzeW5jICgpID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uZGVsZXRlVXNlclNlbGVjdGlvblJlcFJ1bGUoaSk7XG5cdFx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkoKTtcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdH0pO1xuXHRcdH1cblxuXG5cdH1cblxuXHRidWlsZFVzZXJEZWxldGVSdWxlU2V0dGluZyhjb250YWluZXJFbDogSFRNTERldGFpbHNFbGVtZW50KXtcblx0XHRjb250YWluZXJFbC5lbXB0eSgpO1xuICAgICAgICBjb250YWluZXJFbC5vbnRvZ2dsZSA9IGFzeW5jICgpID0+IHtcblx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJEZWxSdWxlU2V0dGluZ3NPcGVuID0gY29udGFpbmVyRWwub3Blbjtcblx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICB9O1xuXHRcdGNvbnN0IHN1bW1hcnkgPSBjb250YWluZXJFbC5jcmVhdGVFbChcInN1bW1hcnlcIiwge2NsczogXCJlYXN5dHlwaW5nLW5lc3RlZC1zZXR0aW5nc1wifSk7XG5cdFx0c3VtbWFyeS5zZXRUZXh0KFwiXHU4MUVBXHU1QjlBXHU0RTQ5XHU1MjIwXHU5NjY0XHU3RjE2XHU4RjkxXHU1ODlFXHU1RjNBXHU4OUM0XHU1MjE5IChDdXN0b21pemUgRGVsZXRlIFJ1bGUpXCIpXG5cblx0XHRjb25zdCBkZWxldGVSdWxlU2V0dGluZyA9IG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKTtcblx0XHRkZWxldGVSdWxlU2V0dGluZ1xuXHRcdFx0LnNldE5hbWUoXCJEZWxldGUgUnVsZVwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTg5QzRcdTUyMTlcdUZGMUFcdTc1Mjh8XHU0RUUzXHU4ODY4XHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXHVGRjBDXHU1RkM1XHU5ODdCXHU1MzA1XHU1NDJCXHU1MTQ5XHU2ODA3XHUzMDAyIFRpcHM6IFVzaW5nIHwgdG8gaW5kaWNhdGUgdGhlIGN1cnNvciBwb3NpdGlvbi5cIilcblxuXHRcdGNvbnN0IHBhdHRlcm5CZWZvcmUgPSBuZXcgVGV4dEFyZWFDb21wb25lbnQoZGVsZXRlUnVsZVNldHRpbmcuY29udHJvbEVsKTtcblx0XHRwYXR0ZXJuQmVmb3JlLnNldFBsYWNlaG9sZGVyKFwiQmVmb3JlIERlbGV0ZVwiKTtcblxuXHRcdGNvbnN0IHBhdHRlcm5BZnRlciA9IG5ldyBUZXh0QXJlYUNvbXBvbmVudChkZWxldGVSdWxlU2V0dGluZy5jb250cm9sRWwpO1xuXHRcdHBhdHRlcm5BZnRlci5zZXRQbGFjZWhvbGRlcihcIk5ldyBQYXR0ZXJuXCIpO1xuXG5cdFx0ZGVsZXRlUnVsZVNldHRpbmdcblx0XHRcdC5hZGRCdXR0b24oKGJ1dHRvbikgPT4ge1xuXHRcdFx0XHRidXR0b25cblx0XHRcdFx0XHQuc2V0QnV0dG9uVGV4dChcIitcIilcblx0XHRcdFx0XHQuc2V0VG9vbHRpcChcIkFkZCBSdWxlXCIpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soYXN5bmMgKGJ1dHRvbkVsOiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdGxldCBiZWZvcmUgPSBwYXR0ZXJuQmVmb3JlLmlucHV0RWwudmFsdWU7XG5cdFx0XHRcdFx0XHRsZXQgYWZ0ZXIgPSBwYXR0ZXJuQWZ0ZXIuaW5wdXRFbC52YWx1ZTtcblx0XHRcdFx0XHRcdGlmIChiZWZvcmUgJiYgYWZ0ZXIpIHtcblx0XHRcdFx0XHRcdFx0bGV0IHJlZ1J1bGUgPSAvXFx8L2c7XG5cdFx0XHRcdFx0XHRcdGlmKGJlZm9yZS5zZWFyY2gocmVnUnVsZSk9PS0xfHxhZnRlci5zZWFyY2gocmVnUnVsZSk9PS0xKXtcblx0XHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKFwiSW5sdmFsaWQgdHJpZ2dlciwgcGF0dGVybiBtdXN0IGNvbnRhaW4gc3ltYm9sIFxcfCB3aGljaCBpbmRpY2F0ZSBjdXJzb3IgcG9zaXRpb25cIik7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uYWRkVXNlckRlbGV0ZVJ1bGUoYmVmb3JlLCBhZnRlcik7XG5cdFx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5kaXNwbGF5KCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKFwibWlzc2luZyBpbnB1dFwiKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0Lmxlbmd0aDsgaSsrKXtcblx0XHRcdGxldCBiZWZvcmUgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0W2ldWzBdO1xuXHRcdFx0bGV0IGFmdGVyID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckRlbGV0ZVJ1bGVzU3RyTGlzdFtpXVsxXTtcblx0XHRcdGxldCBzaG93U3RyID0gXCJcXFwiXCIgKyBzaG93U3RyaW5nKGJlZm9yZSkgKyBcIlxcXCIgIGRlbGV0ZS5iYWNrd2FyZHMgIFx1MjE5MiBcXFwiXCIrIHNob3dTdHJpbmcoYWZ0ZXIpK1wiXFxcIlwiOyBcblx0XHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0XHQuc2V0TmFtZShzaG93U3RyKVxuXHRcdFx0XHQuYWRkRXh0cmFCdXR0b24oYnV0dG9uID0+IHtcblx0XHRcdFx0XHRidXR0b24uc2V0SWNvbihcImdlYXJcIilcblx0XHRcdFx0XHRcdC5zZXRUb29sdGlwKFwiRWRpdCBydWxlXCIpXG5cdFx0XHRcdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdG5ldyBFZGl0Q29udmVydFJ1bGVNb2RhbCh0aGlzLmFwcCwgUnVsZVR5cGUuZGVsZXRlLCBiZWZvcmUsIGFmdGVyLCBhc3luYyAobmV3X2JlZm9yZSwgbmV3X2FmdGVyKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4udXBkYXRlVXNlckRlbGV0ZVJ1bGUoaSwgbmV3X2JlZm9yZSwgbmV3X2FmdGVyKTtcblx0XHRcdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkoKTtcblx0XHRcdFx0XHRcdFx0fSkub3BlbigpO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0fSlcblx0XHRcdFx0LmFkZEV4dHJhQnV0dG9uKGJ1dHRvbiA9PiB7XG5cdFx0XHRcdFx0YnV0dG9uLnNldEljb24oXCJ0cmFzaFwiKVxuXHRcdFx0XHRcdFx0LnNldFRvb2x0aXAoXCJSZW1vdmUgcnVsZVwiKVxuXHRcdFx0XHRcdFx0Lm9uQ2xpY2soYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5kZWxldGVVc2VyRGVsZXRlUnVsZShpKTtcblx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0fSk7XG5cdFx0fVxuXG5cdH1cblxuXHRidWlsZFVzZXJDb252ZXJ0UnVsZVNldHRpbmcoY29udGFpbmVyRWw6IEhUTUxEZXRhaWxzRWxlbWVudCl7XG5cdFx0Y29udGFpbmVyRWwuZW1wdHkoKTtcbiAgICAgICAgY29udGFpbmVyRWwub250b2dnbGUgPSBhc3luYyAoKSA9PiB7XG5cdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyQ3Z0UnVsZVNldHRpbmdzT3BlbiA9IGNvbnRhaW5lckVsLm9wZW47XG5cdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgfTtcblx0XHRjb25zdCBzdW1tYXJ5ID0gY29udGFpbmVyRWwuY3JlYXRlRWwoXCJzdW1tYXJ5XCIsIHtjbHM6IFwiZWFzeXR5cGluZy1uZXN0ZWQtc2V0dGluZ3NcIn0pO1xuXHRcdHN1bW1hcnkuc2V0VGV4dChcIlx1ODFFQVx1NUI5QVx1NEU0OVx1N0YxNlx1OEY5MVx1OEY2Q1x1NjM2Mlx1ODlDNFx1NTIxOSAoQ3VzdG9taXplIENvbnZlcnQgUnVsZSlcIilcblxuXHRcdGNvbnN0IGNvbnZlcnRSdWxlU2V0dGluZyA9IG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKTtcblx0XHRjb252ZXJ0UnVsZVNldHRpbmdcblx0XHRcdC5zZXROYW1lKFwiQ29udmVydCBSdWxlXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1ODlDNFx1NTIxOVx1RkYxQVx1NzUyOHxcdTRFRTNcdTg4NjhcdTUxNDlcdTY4MDdcdTRGNERcdTdGNkVcdUZGMENcdTVGQzVcdTk4N0JcdTUzMDVcdTU0MkJcdTUxNDlcdTY4MDdcdTMwMDIgVGlwczogVXNpbmcgfCB0byBpbmRpY2F0ZSB0aGUgY3Vyc29yIHBvc2l0aW9uLlwiKVxuXG5cdFx0Y29uc3QgcGF0dGVybkJlZm9yZSA9IG5ldyBUZXh0QXJlYUNvbXBvbmVudChjb252ZXJ0UnVsZVNldHRpbmcuY29udHJvbEVsKTtcblx0XHRwYXR0ZXJuQmVmb3JlLnNldFBsYWNlaG9sZGVyKFwiQmVmb3JlIENvbnZlcnRcIik7XG5cblx0XHRjb25zdCBwYXR0ZXJuQWZ0ZXIgPSBuZXcgVGV4dEFyZWFDb21wb25lbnQoY29udmVydFJ1bGVTZXR0aW5nLmNvbnRyb2xFbCk7XG5cdFx0cGF0dGVybkFmdGVyLnNldFBsYWNlaG9sZGVyKFwiTmV3IFBhdHRlcm5cIik7XG5cblx0XHRjb252ZXJ0UnVsZVNldHRpbmdcblx0XHRcdC5hZGRCdXR0b24oKGJ1dHRvbikgPT4ge1xuXHRcdFx0XHRidXR0b25cblx0XHRcdFx0XHQuc2V0QnV0dG9uVGV4dChcIitcIilcblx0XHRcdFx0XHQuc2V0VG9vbHRpcChcIkFkZCBSdWxlXCIpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soYXN5bmMgKGJ1dHRvbkVsOiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdGxldCBiZWZvcmUgPSBwYXR0ZXJuQmVmb3JlLmlucHV0RWwudmFsdWU7XG5cdFx0XHRcdFx0XHRsZXQgYWZ0ZXIgPSBwYXR0ZXJuQWZ0ZXIuaW5wdXRFbC52YWx1ZTtcblx0XHRcdFx0XHRcdGlmIChiZWZvcmUgJiYgYWZ0ZXIpIHtcblx0XHRcdFx0XHRcdFx0bGV0IHJlZ1J1bGUgPSAvXFx8L2c7XG5cdFx0XHRcdFx0XHRcdGlmKGJlZm9yZS5zZWFyY2gocmVnUnVsZSk9PS0xfHxhZnRlci5zZWFyY2gocmVnUnVsZSk9PS0xKXtcblx0XHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKFwiSW5sdmFsaWQgdHJpZ2dlciwgcGF0dGVybiBtdXN0IGNvbnRhaW4gc3ltYm9sIFxcfCB3aGljaCBpbmRpY2F0ZSBjdXJzb3IgcG9zaXRpb25cIik7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uYWRkVXNlckNvbnZlcnRSdWxlKGJlZm9yZSwgYWZ0ZXIpO1xuXHRcdFx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIm1pc3NpbmcgaW5wdXRcIik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3QubGVuZ3RoOyBpKyspe1xuXHRcdFx0bGV0IGJlZm9yZSA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0W2ldWzBdO1xuXHRcdFx0bGV0IGFmdGVyID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3RbaV1bMV07XG5cdFx0XHRsZXQgc2hvd1N0ciA9IFwiXFxcIlwiICsgc2hvd1N0cmluZyhiZWZvcmUpICsgXCJcXFwiICBhdXRvIGNvbnZlcnQgdG8gXFxcIlwiKyBzaG93U3RyaW5nKGFmdGVyKStcIlxcXCJcIjsgXG5cdFx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdFx0LnNldE5hbWUoc2hvd1N0cilcblx0XHRcdFx0LmFkZEV4dHJhQnV0dG9uKGJ1dHRvbiA9PiB7XG5cdFx0XHRcdFx0YnV0dG9uLnNldEljb24oXCJnZWFyXCIpXG5cdFx0XHRcdFx0XHQuc2V0VG9vbHRpcChcIkVkaXQgcnVsZVwiKVxuXHRcdFx0XHRcdFx0Lm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRuZXcgRWRpdENvbnZlcnRSdWxlTW9kYWwodGhpcy5hcHAsIFJ1bGVUeXBlLmNvbnZlcnQsIGJlZm9yZSwgYWZ0ZXIsIGFzeW5jIChuZXdfYmVmb3JlLCBuZXdfYWZ0ZXIpID0+IHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi51cGRhdGVVc2VyQ29udmVydFJ1bGUoaSwgbmV3X2JlZm9yZSwgbmV3X2FmdGVyKTtcblx0XHRcdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkoKTtcblx0XHRcdFx0XHRcdFx0fSkub3BlbigpO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0fSlcblx0XHRcdFx0LmFkZEV4dHJhQnV0dG9uKGJ1dHRvbiA9PiB7XG5cdFx0XHRcdFx0YnV0dG9uLnNldEljb24oXCJ0cmFzaFwiKVxuXHRcdFx0XHRcdFx0LnNldFRvb2x0aXAoXCJSZW1vdmUgcnVsZVwiKVxuXHRcdFx0XHRcdFx0Lm9uQ2xpY2soYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5kZWxldGVVc2VyQ29udmVydFJ1bGUoaSk7XG5cdFx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkoKTtcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG59XG5cblxuZnVuY3Rpb24gc2V0QXR0cmlidXRlcyhlbGVtZW50OiBhbnksIGF0dHJpYnV0ZXM6IGFueSkge1xuXHRmb3IgKGxldCBrZXkgaW4gYXR0cmlidXRlcykge1xuXHRcdGVsZW1lbnQuc2V0QXR0cmlidXRlKGtleSwgYXR0cmlidXRlc1trZXldKTtcblx0fVxufVxuXG5cbmV4cG9ydCBjbGFzcyBTZWxlY3RSdWxlRWRpdE1vZGFsIGV4dGVuZHMgTW9kYWwge1xuXHR0cmlnZ2VyOiBzdHJpbmc7XG5cdG9sZF9sZWZ0OiBzdHJpbmc7XG5cdG9sZF9yaWdodDogc3RyaW5nO1xuXHRuZXdfbGVmdDogc3RyaW5nO1xuXHRuZXdfcmlnaHQ6IHN0cmluZztcblx0b25TdWJtaXQ6IChuZXdfbGVmdDogc3RyaW5nLCBuZXdfcmlnaHQ6c3RyaW5nKSA9PiB2b2lkO1xuXG5cdGNvbnN0cnVjdG9yKGFwcDogQXBwLCB0cmlnZ2VyOiBzdHJpbmcsIGxlZnQ6IHN0cmluZywgcmlnaHQ6IHN0cmluZywgb25TdWJtaXQ6IChuZXdfbGVmdDogc3RyaW5nLCBuZXdfcmlnaHQ6c3RyaW5nKSA9PiB2b2lkKSB7XG5cdFx0c3VwZXIoYXBwKTtcblx0XHR0aGlzLnRyaWdnZXIgPSB0cmlnZ2VyO1xuXHRcdHRoaXMub2xkX2xlZnQgPSBsZWZ0O1xuXHRcdHRoaXMub2xkX3JpZ2h0ID0gcmlnaHQ7XG5cdFx0dGhpcy5uZXdfbGVmdCA9IGxlZnQ7XG5cdFx0dGhpcy5uZXdfcmlnaHQgPSByaWdodDtcblxuXHRcdHRoaXMub25TdWJtaXQgPSBvblN1Ym1pdDtcblx0fVxuXG5cdG9uT3BlbigpIHtcblx0XHRjb25zdCB7IGNvbnRlbnRFbCB9ID0gdGhpcztcblxuXHRcdGNvbnRlbnRFbC5jcmVhdGVFbChcImgxXCIsIHsgdGV4dDogXCJFZGl0IFNlbGVjdGlvbiBSZXBsYWNlIFJ1bGVcIiB9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcblx0XHRcdC5zZXROYW1lKFwiVHJpZ2dlclwiKVxuXHRcdFx0LmFkZFRleHQoKHRleHQpID0+IHtcblx0XHRcdFx0dGV4dC5zZXRWYWx1ZSh0aGlzLnRyaWdnZXIpO1xuXHRcdFx0XHR0ZXh0LnNldERpc2FibGVkKHRydWUpO1xuXHRcdFx0fSlcblx0XHRcblx0XHRuZXcgU2V0dGluZyhjb250ZW50RWwpXG5cdFx0XHQuc2V0TmFtZShcIkxlZnRcIilcblx0XHRcdC5hZGRUZXh0QXJlYSgodGV4dCkgPT4ge1xuXHRcdFx0XHR0ZXh0LnNldFZhbHVlKHRoaXMub2xkX2xlZnQpO1xuXHRcdFx0XHR0ZXh0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMubmV3X2xlZnQgPSB2YWx1ZVxuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblx0XHRuZXcgU2V0dGluZyhjb250ZW50RWwpXG5cdFx0XHQuc2V0TmFtZShcIlJpZ2h0XCIpXG5cdFx0XHQuYWRkVGV4dEFyZWEoKHRleHQpID0+IHtcblx0XHRcdFx0dGV4dC5zZXRWYWx1ZSh0aGlzLm9sZF9yaWdodCk7XG5cdFx0XHRcdHRleHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5uZXdfcmlnaHQgPSB2YWx1ZVxuXHRcdFx0XHR9KVxuXHRcdFx0fSk7XG5cblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcblx0XHRcdC5hZGRCdXR0b24oKGJ0bikgPT5cblx0XHRcdFx0YnRuXG5cdFx0XHRcdFx0LnNldEJ1dHRvblRleHQoXCJVcGRhdGVcIilcblx0XHRcdFx0XHQuc2V0Q3RhKClcblx0XHRcdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLmNsb3NlKCk7XG5cdFx0XHRcdFx0XHR0aGlzLm9uU3VibWl0KHRoaXMubmV3X2xlZnQsIHRoaXMubmV3X3JpZ2h0KTtcblx0XHRcdFx0XHR9KSk7XG5cdH1cblxuXHRvbkNsb3NlKCkge1xuXHRcdGxldCB7IGNvbnRlbnRFbCB9ID0gdGhpcztcblx0XHRjb250ZW50RWwuZW1wdHkoKTtcblx0fVxufVxuXG5cblxuZXhwb3J0IGNsYXNzIEVkaXRDb252ZXJ0UnVsZU1vZGFsIGV4dGVuZHMgTW9kYWwge1xuXHR0eXBlOiBSdWxlVHlwZTtcblx0b2xkX2JlZm9yZTogc3RyaW5nO1xuXHRvbGRfYWZ0ZXI6IHN0cmluZztcblx0bmV3X2JlZm9yZTogc3RyaW5nO1xuXHRuZXdfYWZ0ZXI6IHN0cmluZztcblx0b25TdWJtaXQ6IChuZXdfYmVmb3JlOiBzdHJpbmcsIG5ld19hZnRlcjpzdHJpbmcpID0+IHZvaWQ7XG5cblx0Y29uc3RydWN0b3IoYXBwOiBBcHAsIHR5cGU6IFJ1bGVUeXBlLCBiZWZvcmU6IHN0cmluZywgYWZ0ZXI6IHN0cmluZywgb25TdWJtaXQ6IChuZXdfYmVmb3JlOiBzdHJpbmcsIG5ld19hZnRlcjpzdHJpbmcpID0+IHZvaWQpIHtcblx0XHRzdXBlcihhcHApO1xuXHRcdHRoaXMudHlwZSA9IHR5cGU7XG5cdFx0dGhpcy5vbGRfYmVmb3JlID0gYmVmb3JlO1xuXHRcdHRoaXMub2xkX2FmdGVyID0gYWZ0ZXI7XG5cdFx0dGhpcy5uZXdfYmVmb3JlID0gYmVmb3JlO1xuXHRcdHRoaXMubmV3X2FmdGVyID0gYWZ0ZXI7XG5cblx0XHR0aGlzLm9uU3VibWl0ID0gb25TdWJtaXQ7XG5cdH1cblxuXHRvbk9wZW4oKSB7XG5cdFx0Y29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XG5cblx0XHRjb250ZW50RWwuY3JlYXRlRWwoXCJoMVwiLCB7IHRleHQ6IFwiRWRpdCBcIiArIHRoaXMudHlwZX0pO1xuXHRcdFxuXHRcdG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcblx0XHRcdC5zZXROYW1lKFwiT2xkIFBhdHRlcm5cIilcblx0XHRcdC5hZGRUZXh0QXJlYSgodGV4dCkgPT4ge1xuXHRcdFx0XHR0ZXh0LnNldFZhbHVlKHRoaXMub2xkX2JlZm9yZSk7XG5cdFx0XHRcdHRleHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5uZXdfYmVmb3JlID0gdmFsdWVcblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cdFx0bmV3IFNldHRpbmcoY29udGVudEVsKVxuXHRcdFx0LnNldE5hbWUoXCJOZXcgUGF0dGVyblwiKVxuXHRcdFx0LmFkZFRleHRBcmVhKCh0ZXh0KSA9PiB7XG5cdFx0XHRcdHRleHQuc2V0VmFsdWUodGhpcy5vbGRfYWZ0ZXIpO1xuXHRcdFx0XHR0ZXh0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMubmV3X2FmdGVyID0gdmFsdWVcblx0XHRcdFx0fSlcblx0XHRcdH0pO1xuXG5cblx0XHRuZXcgU2V0dGluZyhjb250ZW50RWwpXG5cdFx0XHQuYWRkQnV0dG9uKChidG4pID0+XG5cdFx0XHRcdGJ0blxuXHRcdFx0XHRcdC5zZXRCdXR0b25UZXh0KFwiVXBkYXRlXCIpXG5cdFx0XHRcdFx0LnNldEN0YSgpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMuY2hlY2tDb252ZXJ0UGF0dGVyblN0cmluZyh0aGlzLm5ld19iZWZvcmUsIHRoaXMubmV3X2FmdGVyKSlcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGhpcy5jbG9zZSgpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLm9uU3VibWl0KHRoaXMubmV3X2JlZm9yZSwgdGhpcy5uZXdfYWZ0ZXIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZXtcblx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIkludmFsaWQgcGF0dGVybiBzdHJpbmchXCIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0fSkpO1xuXHR9XG5cblx0Y2hlY2tDb252ZXJ0UGF0dGVyblN0cmluZyhiZWZvcmU6IHN0cmluZywgYWZ0ZXI6c3RyaW5nKTpib29sZWFue1xuXHRcdGxldCByZWdSdWxlID0gL1xcfC9nO1xuXHRcdGlmKGJlZm9yZS5zZWFyY2gocmVnUnVsZSk9PS0xIHx8IGFmdGVyLnNlYXJjaChyZWdSdWxlKT09LTEpIHJldHVybiBmYWxzZTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdG9uQ2xvc2UoKSB7XG5cdFx0bGV0IHsgY29udGVudEVsIH0gPSB0aGlzO1xuXHRcdGNvbnRlbnRFbC5lbXB0eSgpO1xuXHR9XG59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 +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL21haW4udHMiLCAic3JjL2NvcmUudHMiLCAic3JjL3V0aWxzLnRzIiwgInNyYy9zZXR0aW5ncy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHtFZGl0b3IsIE1hcmtkb3duVmlldywgTWVudSwgTm90aWNlLCBQbGF0Zm9ybSwgUGx1Z2luLCBXb3Jrc3BhY2VMZWFmfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQge0VkaXRvclNlbGVjdGlvbiwgRWRpdG9yU3RhdGUsIFByZWMsIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblNwZWN9IGZyb20gJ0Bjb2RlbWlycm9yL3N0YXRlJztcbmltcG9ydCB7Q29udmVydFJ1bGUsIERFRkFVTFRfU0VUVElOR1MsIEVhc3lUeXBpbmdTZXR0aW5ncywgRWFzeVR5cGluZ1NldHRpbmdUYWIsIFBhaXJTdHJpbmd9IGZyb20gXCIuL3NldHRpbmdzXCJcbmltcG9ydCB7RWRpdG9yVmlldywga2V5bWFwLCBWaWV3VXBkYXRlfSBmcm9tICdAY29kZW1pcnJvci92aWV3JztcbmltcG9ydCB7XG5cdGdldE9ic2lkaWFuU2V0dGluZ3MsXG5cdE9ic2lkaWFuU2V0dGluZ3MsXG5cdGdldFR5cGVTdHJPZlRyYW5zYWMsXG5cdG9mZnNldFRvUG9zLFxuXHRwcmludCxcblx0cnVsZVN0cmluZ0xpc3QyUnVsZUxpc3QsXG5cdHN0cmluZzJwYWlyc3RyaW5nXG59IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQge2dldFBvc0xpbmVUeXBlLCBnZXRQb3NMaW5lVHlwZTIsIExpbmVGb3JtYXRlciwgTGluZVR5cGV9IGZyb20gJy4vY29yZSdcbmltcG9ydCB7ZW5zdXJlU3ludGF4VHJlZSwgc3ludGF4VHJlZX0gZnJvbSBcIkBjb2RlbWlycm9yL2xhbmd1YWdlXCI7XG5cbmRlY2xhcmUgbW9kdWxlIFwib2JzaWRpYW5cIiB7XG5cdC8vIGFkZCB0eXBlIHNhZmV0eSBmb3IgdGhlIHVuZG9jdW1lbnRlZCBtZXRob2RzLCBcblx0Ly8gQ09QWSBGUk9NIGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc2dyaWVzZXIvb2JzaWRpYW4tc21hcnRlci1tZC1ob3RrZXlzL3RyZWUvbWFzdGVyXG5cdC8vIGludGVyZmFjZSBFZGl0b3Ige1xuXHQvLyBcdGNtOiB7XG5cdC8vIFx0XHRmaW5kV29yZEF0PzogKHBvczogRWRpdG9yUG9zaXRpb24pID0+IEVkaXRvclNlbGVjdGlvbjtcblx0Ly8gXHRcdHN0YXRlPzogeyB3b3JkQXQ6IChvZmZzZXQ6IG51bWJlcikgPT4geyBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXJ9IH07XG5cdC8vIFx0fTtcblx0Ly8gfVxuXHQvLyBpbnRlcmZhY2UgQXBwIHtcblx0Ly8gXHRjb21tYW5kczogeyBleGVjdXRlQ29tbWFuZEJ5SWQ6IChjb21tYW5kSUQ6IHN0cmluZykgPT4gdm9pZCB9O1xuXHQvLyB9XG5cdGludGVyZmFjZSBWYXVsdCB7XG5cdFx0c2V0Q29uZmlnOiAoY29uZmlnOiBzdHJpbmcsIG5ld1ZhbHVlOiBib29sZWFuKSA9PiB2b2lkO1xuXHRcdGdldENvbmZpZzogKGNvbmZpZzogc3RyaW5nKSA9PiBib29sZWFuO1xuXHR9XG59XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWFzeVR5cGluZ1BsdWdpbiBleHRlbmRzIFBsdWdpbiB7XG5cdHNldHRpbmdzOiBFYXN5VHlwaW5nU2V0dGluZ3M7XG5cdHNlbGVjdGlvblJlcGxhY2VNYXBJbml0YWxEYXRhOiBbc3RyaW5nLCBQYWlyU3RyaW5nXVtdO1xuXHRTZWxlY3Rpb25SZXBsYWNlTWFwOiBNYXA8c3RyaW5nLCBQYWlyU3RyaW5nPjtcblx0U3ltYm9sUGFpcnNNYXA6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cdGhhbGZUb0Z1bGxTeW1ib2xNYXA6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cdEJhc2ljQ29udlJ1bGVzOiBDb252ZXJ0UnVsZVtdO1xuXHRGVzJIV1N5bWJvbFJ1bGVzOiBDb252ZXJ0UnVsZVtdO1xuXHRGb3JtYXRlcjogTGluZUZvcm1hdGVyO1xuXHRJbnRyaW5zaWNEZWxldGVSdWxlczogQ29udmVydFJ1bGVbXTtcblx0SW50cmluc2ljQXV0b1BhaXJSdWxlc1BhdGNoOiBDb252ZXJ0UnVsZVtdO1xuXHRDdXJBY3RpdmVNYXJrZG93bjogc3RyaW5nO1xuXG5cdFVzZXJEZWxldGVSdWxlczogQ29udmVydFJ1bGVbXTtcblx0VXNlckNvbnZlcnRSdWxlczogQ29udmVydFJ1bGVbXTtcblx0bGFuZzogc3RyaW5nO1xuXG5cdGNvbXBvc2VfYmVnaW5fcG9zOiBudW1iZXI7XG5cdGNvbXBvc2VfZW5kX3BvczogbnVtYmVyO1xuXHRjb21wb3NlX25lZWRfaGFuZGxlOiBib29sZWFuO1xuXG5cdG9uRm9ybWF0QXJ0aWNsZTogYm9vbGVhbjtcblx0VGFib3V0UGFpclN0cnM6IFBhaXJTdHJpbmdbXTtcblxuXHRvYnNpZGlhblNldHRpbmdzOiBPYnNpZGlhblNldHRpbmdzO1xuXG5cdGFzeW5jIG9ubG9hZCgpIHtcblx0XHRhd2FpdCB0aGlzLmxvYWRTZXR0aW5ncygpO1xuXHRcdHRoaXMuc2VsZWN0aW9uUmVwbGFjZU1hcEluaXRhbERhdGEgPSBbXG5cdFx0XHRbXCJcdTMwMTBcIiwgeyBsZWZ0OiBcIltcIiwgcmlnaHQ6IFwiXVwiIH1dLCBbXCJcdUZGRTVcIiwgeyBsZWZ0OiBcIiRcIiwgcmlnaHQ6IFwiJFwiIH1dLCBbXCJcdTAwQjdcIiwgeyBsZWZ0OiBcImBcIiwgcmlnaHQ6IFwiYFwiIH1dLFxuXHRcdFx0W1wiXHUzMDBBXCIsIHsgbGVmdDogXCJcdTMwMEFcIiwgcmlnaHQ6IFwiXHUzMDBCXCIgfV0sIFtcIlx1MjAxQ1wiLCB7IGxlZnQ6IFwiXHUyMDFDXCIsIHJpZ2h0OiBcIlx1MjAxRFwiIH1dLCBbXCJcdTIwMURcIiwgeyBsZWZ0OiBcIlx1MjAxQ1wiLCByaWdodDogXCJcdTIwMURcIiB9XSwgW1wiXHVGRjA4XCIsIHsgbGVmdDogXCJcdUZGMDhcIiwgcmlnaHQ6IFwiXHVGRjA5XCIgfV0sXG5cdFx0XHRbXCI8XCIsIHsgbGVmdDogXCI8XCIsIHJpZ2h0OiBcIj5cIiB9XVxuXHRcdF07XG5cdFx0dGhpcy5yZWZyZXNoU2VsZWN0aW9uUmVwbGFjZVJ1bGUoKTtcblx0XHR0aGlzLlN5bWJvbFBhaXJzTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblx0XHRsZXQgU3ltYm9sUGFpcnMgPSBbXCJcdTMwMTBcdTMwMTFcIiwgXCJcdUZGMDhcdUZGMDlcIiwgXCJcdTMwMEFcdTMwMEJcIiwgXCJcdTIwMUNcdTIwMURcIiwgXCJcdTIwMThcdTIwMTlcIiwgXCJcdTMwMENcdTMwMERcIiwgXCJcdTMwMEVcdTMwMEZcIiwgJ1tdJywgJygpJywgJ3t9JywgJ1wiXCInLCBcIicnXCJdXG5cdFx0Zm9yIChsZXQgcGFpclN0ciBvZiBTeW1ib2xQYWlycykgdGhpcy5TeW1ib2xQYWlyc01hcC5zZXQocGFpclN0ci5jaGFyQXQoMCksIHBhaXJTdHIuY2hhckF0KDEpKTtcblxuXHRcdHRoaXMuaGFsZlRvRnVsbFN5bWJvbE1hcCA9IG5ldyBNYXAoW1xuXHRcdFx0W1wiLlwiLCBcIlx1MzAwMlwiXSxcblx0XHRcdFtcIixcIiwgXCJcdUZGMENcIl0sXG5cdFx0XHRbJz8nLCAnXHVGRjFGJ10sXG5cdFx0XHRbJyEnLCAnXHVGRjAxJ11cblx0XHRdKTtcblxuXHRcdGxldCBCYXNpY0NvbnZSdWxlU3RyaW5nTGlzdDogQXJyYXk8W3N0cmluZywgc3RyaW5nXT4gPSBbWydcdTAwQjdcdTAwQjd8JywgJ2B8YCddLCBbXCJcdUZGMDFcdTMwMTBcdTMwMTB8XHUzMDExXCIsJyFbW3xdXSddLFsnXHVGRjAxXHUzMDEwXHUzMDEwfCcsICchW1t8XV0nXSxcblx0XHRbXCJcdTMwMTBcdTMwMTB8XHUzMDExXCIsIFwiW1t8XV1cIl0sIFsnXHUzMDEwXHUzMDEwfCcsIFwiW1t8XV1cIl0sIFsnXHVGRkU1XHVGRkU1fCcsICckfCQnXSwgWyckXHVGRkU1fCQnLCBcIiQkXFxufFxcbiQkXCJdLFsnXHUwMEE1XHUwMEE1fCcsJyR8JCddLCBbJyRcdTAwQTV8JCcsIFwiJCRcXG58XFxuJCRcIl0sW1wiJCR8JFwiLCBcIiQkXFxufFxcbiQkXCJdLCBbJyQkfCcsIFwiJHwkXCJdLFxuXHRcdFtcIj5cdTMwMEJ8XCIsIFwiPj58XCJdLCBbJ1xcblx1MzAwQnwnLCBcIlxcbj58XCJdLCBbXCIgXHUzMDBCfFwiLCBcIiA+fFwiXSwgW1wiXFxuXHUzMDAxfFwiLCBcIlxcbi98XCJdXTtcblx0XHR0aGlzLkJhc2ljQ29udlJ1bGVzID0gcnVsZVN0cmluZ0xpc3QyUnVsZUxpc3QoQmFzaWNDb252UnVsZVN0cmluZ0xpc3QpO1xuXHRcdGxldCBGVzJIV1N5bWJvbFJ1bGVzU3RyTGlzdDogQXJyYXk8W3N0cmluZywgc3RyaW5nXT4gPSBbW1wiXHUzMDAyXHUzMDAyfFwiLCBcIi58XCJdLCBbXCJcdUZGMDFcdUZGMDF8XCIsIFwiIXxcIl0sIFtcIlx1RkYxQlx1RkYxQnxcIiwgXCI7fFwiXSwgW1wiXHVGRjBDXHVGRjBDfFwiLCBcIix8XCJdLFxuXHRcdFtcIlx1RkYxQVx1RkYxQXxcIiwgXCI6fFwiXSwgWydcdUZGMUZcdUZGMUZ8JywgJz98J10sIFsnXHVGRjA4XHVGRjA4fFx1RkYwOScsIFwiKHwpXCJdLCBbJ1x1RkYwOFx1RkYwOHwnLCAnKHwpJ10sIFtcIlx1MjAxQ1x1MjAxQ3xcdTIwMURcIiwgXCJcXFwifFxcXCJcIl0sIFtcIlx1MjAxQ1x1MjAxRHxcdTIwMURcIiwgXCJcXFwifFxcXCJcIl0sIFtcIlx1MjAxOFx1MjAxOHxcdTIwMTlcIiwgXCInfCdcIl0sIFtcIlx1MjAxOFx1MjAxOXxcdTIwMTlcIiwgXCInfCdcIl0sXG5cdFx0W1wiXHUzMDBCXHUzMDBCfFwiLCBcIj58XCJdLCBbXCJcdTMwMEFcdTMwMEF8XHUzMDBCXCIsIFwiPHxcIl0sIFsnXHUzMDBBXHUzMDBBfCcsIFwiPHxcIl1dO1xuXHRcdHRoaXMuRlcySFdTeW1ib2xSdWxlcyA9IHJ1bGVTdHJpbmdMaXN0MlJ1bGVMaXN0KEZXMkhXU3ltYm9sUnVsZXNTdHJMaXN0KTtcblx0XHRsZXQgZncyaHdfcnVsZV8wOiBDb252ZXJ0UnVsZSA9IHtiZWZvcmU6e2xlZnQ6J1x1RkY1Q1x1RkY1QycsIHJpZ2h0OicnfSwgYWZ0ZXI6e2xlZnQ6J3wnLCByaWdodDonJ319O1xuXHRcdHRoaXMuRlcySFdTeW1ib2xSdWxlcy5wdXNoKGZ3Mmh3X3J1bGVfMClcblxuXHRcdGxldCBEZWxldGVSdWxlc1N0ckxpc3Q6IEFycmF5PFtzdHJpbmcsIHN0cmluZ10+ID0gW1tcIiR8JFwiLCBcInxcIl0sIFsnPT18PT0nLCAnfCddLCBbJyQkXFxufFxcbiQkJywgXCJ8XCJdXTtcblx0XHR0aGlzLkludHJpbnNpY0RlbGV0ZVJ1bGVzID0gcnVsZVN0cmluZ0xpc3QyUnVsZUxpc3QoRGVsZXRlUnVsZXNTdHJMaXN0KTtcblxuXHRcdGxldCBhdXRvUGFpclJ1bGVzUGF0Y2hTdHJMaXN0OiBBcnJheTxbc3RyaW5nLCBzdHJpbmddPiA9IFtbXCJcdTMwMTBcdTMwMTF8XHUzMDExXCIsIFwiXHUzMDEwXHUzMDExfFwiXSwgW1wiXHVGRjA4XHVGRjA5fFx1RkYwOVwiLCBcIlx1RkYwOFx1RkYwOXxcIl0sXG5cdFx0W1wiPD58PlwiLCBcIjw+fFwiXSwgW1wiXHUzMDBBXHUzMDBCfFx1MzAwQlwiLCBcIlx1MzAwQVx1MzAwQnxcIl0sIFtcIlx1MzAwQ1x1MzAwRHxcdTMwMERcIiwgXCJcdTMwMENcdTMwMER8XCJdLCBbXCJcdTMwMEVcdTMwMEZ8XHUzMDBGXCIsIFwiXHUzMDBFXHUzMDBGfFwiXSwgW1wiKCl8KVwiLCBcIigpfFwiXSwgWydbXXxdJywgJ1tdfCddLFxuXHRcdFtcInt9fH1cIiwgXCJ7fXxcIl0sIFtcIicnfCdcIiwgXCInJ3xcIl0sIFsnXCJcInxcIicsICdcIlwifCddLFxuXHRcdF07XG5cdFx0dGhpcy5JbnRyaW5zaWNBdXRvUGFpclJ1bGVzUGF0Y2ggPSBydWxlU3RyaW5nTGlzdDJSdWxlTGlzdChhdXRvUGFpclJ1bGVzUGF0Y2hTdHJMaXN0KTtcblxuXHRcdGxldCBUYWJvdXRQYWlyU3RycyA9IFtcIlx1MzAxMHxcdTMwMTFcIiwgXCJcdUZGMDh8XHVGRjA5XCIsIFwiXHUzMDBBfFx1MzAwQlwiLCBcIlx1MjAxQ3xcdTIwMURcIiwgXCJcdTIwMTh8XHUyMDE5XCIsIFxuXHRcdFx0XHRcdFx0ICAgXCJcdTMwMEN8XHUzMDBEXCIsIFwiXHUzMDBFfFx1MzAwRlwiLCBcIid8J1wiLCBcIlxcXCJ8XFxcIlwiLCBcIiQkfCQkXCIsICckfCQnLCAnX198X18nLCAnX3xfJyxcblx0XHRcdFx0XHRcdFx0XCI9PXw9PVwiLCBcIn5+fH5+XCIsIFwiKip8KipcIiwgJyp8KicsIFwiW1t8XV1cIiwgJ1t8XScsXCJ7fH1cIiwgXCIofClcIiwgXCI8fD5cIl07XG5cdFx0dGhpcy5UYWJvdXRQYWlyU3RycyA9IFRhYm91dFBhaXJTdHJzLm1hcCgoczpzdHJpbmcpPT5zdHJpbmcycGFpcnN0cmluZyhzKSk7XG5cblx0XHR0aGlzLnJlZnJlc2hVc2VyRGVsZXRlUnVsZSgpO1xuXHRcdHRoaXMucmVmcmVzaFVzZXJDb252ZXJ0UnVsZSgpO1xuXG5cdFx0dGhpcy5DdXJBY3RpdmVNYXJrZG93biA9IFwiXCI7XG5cblx0XHR0aGlzLmNvbXBvc2VfbmVlZF9oYW5kbGUgPSBmYWxzZTtcblxuXHRcdHRoaXMuRm9ybWF0ZXIgPSBuZXcgTGluZUZvcm1hdGVyKCk7XG5cblx0XHR0aGlzLm9uRm9ybWF0QXJ0aWNsZSA9IGZhbHNlO1xuXG5cdFx0dGhpcy5vYnNpZGlhblNldHRpbmdzID0gbmV3IE9ic2lkaWFuU2V0dGluZ3ModGhpcy5hcHApO1xuXG5cdFx0dGhpcy5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihbXG5cdFx0XHRFZGl0b3JTdGF0ZS50cmFuc2FjdGlvbkZpbHRlci5vZih0aGlzLnRyYW5zYWN0aW9uRmlsdGVyUGx1Z2luKSxcblx0XHRcdEVkaXRvclZpZXcudXBkYXRlTGlzdGVuZXIub2YodGhpcy52aWV3VXBkYXRlUGx1Z2luKSxcblx0XHRcdFByZWMuaGlnaGVzdChFZGl0b3JWaWV3LmRvbUV2ZW50SGFuZGxlcnMoe1xuXHRcdFx0XHRcImtleXVwXCI6IHRoaXMub25LZXl1cFxuXHRcdFx0fSkpXG5cdFx0XSk7XG5cblxuXHRcdHRoaXMucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oUHJlYy5oaWdoZXN0KGtleW1hcC5vZihbXG5cdFx0XHR7XG5cdFx0XHRcdGtleTogXCJUYWJcIixcblx0XHRcdFx0cnVuOiAodmlldzogRWRpdG9yVmlldyk6IGJvb2xlYW4gPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHN1Y2Nlc3MgPSB0aGlzLmhhbmRsZVRhYkRvd24odmlldyk7XG5cdFx0XHRcdFx0cmV0dXJuIHN1Y2Nlc3M7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGtleTogXCJFbnRlclwiLFxuXHRcdFx0XHRydW46ICh2aWV3OiBFZGl0b3JWaWV3KTogYm9vbGVhbiA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgc3VjY2VzcyA9IHRoaXMuaGFuZGxlRW50ZXIodmlldyk7XG5cdFx0XHRcdFx0cmV0dXJuIHN1Y2Nlc3M7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRdKSkpO1xuXG5cdFx0dGhpcy5sYW5nID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpO1xuXHRcdGxldCBjb21tYW5kX25hbWVfbWFwID0gdGhpcy5nZXRDb21tYW5kTmFtZU1hcCgpO1xuXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcImVhc3ktdHlwaW5nLWZvcm1hdC1hcnRpY2xlXCIsXG5cdFx0XHRuYW1lOiBjb21tYW5kX25hbWVfbWFwLmdldChcImZvcm1hdF9hcnRpY2xlXCIpLFxuXHRcdFx0ZWRpdG9yQ2FsbGJhY2s6IChlZGl0b3I6IEVkaXRvciwgdmlldzogTWFya2Rvd25WaWV3KSA9PiB7XG5cdFx0XHRcdHRoaXMuZm9ybWF0QXJ0aWNsZShlZGl0b3IsIHZpZXcpO1xuXHRcdFx0fSxcblx0XHRcdGhvdGtleXM6IFt7XG5cdFx0XHRcdG1vZGlmaWVyczogWydDdHJsJywgJ1NoaWZ0J10sXG5cdFx0XHRcdGtleTogXCJzXCJcblx0XHRcdH1dLFxuXHRcdH0pO1xuXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcImVhc3ktdHlwaW5nLWZvcm1hdC1zZWxlY3Rpb25cIixcblx0XHRcdG5hbWU6IGNvbW1hbmRfbmFtZV9tYXAuZ2V0KFwiZm9ybWF0X3NlbGVjdGlvblwiKSxcblx0XHRcdGVkaXRvckNhbGxiYWNrOiAoZWRpdG9yOiBFZGl0b3IsIHZpZXc6IE1hcmtkb3duVmlldykgPT4ge1xuXHRcdFx0XHR0aGlzLmZvcm1hdFNlbGVjdGlvbk9yQ3VyTGluZShlZGl0b3IsIHZpZXcpO1xuXHRcdFx0fSxcblx0XHRcdGhvdGtleXM6IFt7XG5cdFx0XHRcdG1vZGlmaWVyczogWydDdHJsJywgJ1NoaWZ0J10sXG5cdFx0XHRcdGtleTogXCJsXCJcblx0XHRcdH1dLFxuXHRcdH0pO1xuXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcImVhc3ktdHlwaW5nLWRlbGV0ZS1ibGFuay1saW5lXCIsXG5cdFx0XHRuYW1lOiBjb21tYW5kX25hbWVfbWFwLmdldChcImRlbGV0ZV9ibGFua19saW5lXCIpLFxuXHRcdFx0ZWRpdG9yQ2FsbGJhY2s6IChlZGl0b3I6IEVkaXRvciwgdmlldzogTWFya2Rvd25WaWV3KSA9PiB7XG5cdFx0XHRcdHRoaXMuZGVsZXRlQmxhbmtMaW5lcyhlZGl0b3IpO1xuXHRcdFx0fSxcblx0XHRcdGhvdGtleXM6IFt7XG5cdFx0XHRcdG1vZGlmaWVyczogWydDdHJsJywgJ1NoaWZ0J10sXG5cdFx0XHRcdGtleTogXCJrXCJcblx0XHRcdH1dLFxuXHRcdH0pO1xuXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcImVhc3ktdHlwaW5nLWluc2VydC1jb2RlYmxvY2tcIixcblx0XHRcdG5hbWU6IGNvbW1hbmRfbmFtZV9tYXAuZ2V0KFwiaW5zZXJ0X2NvZGVibG9ja1wiKSxcblx0XHRcdGVkaXRvckNhbGxiYWNrOiAoZWRpdG9yOiBFZGl0b3IsIHZpZXc6IE1hcmtkb3duVmlldykgPT4ge1xuXHRcdFx0XHR0aGlzLmNvbnZlcnQyQ29kZUJsb2NrKGVkaXRvcik7XG5cdFx0XHR9LFxuXHRcdFx0aG90a2V5czogW3tcblx0XHRcdFx0bW9kaWZpZXJzOiBbJ0N0cmwnLCAnU2hpZnQnXSxcblx0XHRcdFx0a2V5OiBcIm5cIlxuXHRcdFx0fV0sXG5cdFx0fSk7XG5cblx0XHR0aGlzLmFkZENvbW1hbmQoe1xuXHRcdFx0aWQ6IFwiZWFzeS10eXBpbmctZm9ybWF0LXN3aXRjaFwiLFxuXHRcdFx0bmFtZTogY29tbWFuZF9uYW1lX21hcC5nZXQoXCJzd2l0Y2hfYXV0b2Zvcm1hdFwiKSxcblx0XHRcdGNhbGxiYWNrOiAoKSA9PiB0aGlzLnN3aXRjaEF1dG9Gb3JtYXR0aW5nKCksXG5cdFx0XHRob3RrZXlzOiBbe1xuXHRcdFx0XHRtb2RpZmllcnM6IFsnQ3RybCddLFxuXHRcdFx0XHRrZXk6IFwidGFiXCJcblx0XHRcdH1dLFxuXHRcdH0pO1xuXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcImVhc3ktdHlwaW5nLXBhc3RlLXdpdGhvdXQtZm9ybWF0XCIsXG5cdFx0XHRuYW1lOiBjb21tYW5kX25hbWVfbWFwLmdldChcInBhc3RlX3dvX2Zvcm1hdFwiKSxcblx0XHRcdGVkaXRvckNhbGxiYWNrOiAoZWRpdG9yKSA9PiB0aGlzLm5vcm1hbFBhc3RlKGVkaXRvciksXG5cdFx0XHRob3RrZXlzOiBbXG5cdFx0XHQgIHtcblx0XHRcdFx0bW9kaWZpZXJzOiBbXCJNb2RcIiwgXCJTaGlmdFwiXSxcblx0XHRcdFx0a2V5OiBcInZcIixcblx0XHRcdCAgfSxcblx0XHRcdF0sXG5cdFx0ICB9KTtcblxuXHRcdC8vIFRoaXMgYWRkcyBhIHNldHRpbmdzIHRhYiBzbyB0aGUgdXNlciBjYW4gY29uZmlndXJlIHZhcmlvdXMgYXNwZWN0cyBvZiB0aGUgcGx1Z2luXG5cdFx0dGhpcy5hZGRTZXR0aW5nVGFiKG5ldyBFYXN5VHlwaW5nU2V0dGluZ1RhYih0aGlzLmFwcCwgdGhpcykpO1xuXG5cdFx0dGhpcy5yZWdpc3RlckV2ZW50KHRoaXMuYXBwLndvcmtzcGFjZS5vbignYWN0aXZlLWxlYWYtY2hhbmdlJywgKGxlYWY6IFdvcmtzcGFjZUxlYWYpID0+IHtcblx0XHRcdGlmIChsZWFmLnZpZXcuZ2V0Vmlld1R5cGUoKSA9PSAnbWFya2Rvd24nKSB7XG5cdFx0XHRcdGxldCBmaWxlID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZUZpbGUoKTtcblx0XHRcdFx0aWYgKGZpbGUgIT0gbnVsbCAmJiB0aGlzLkN1ckFjdGl2ZU1hcmtkb3duICE9IGZpbGUucGF0aCkge1xuXHRcdFx0XHRcdHRoaXMuQ3VyQWN0aXZlTWFya2Rvd24gPSBmaWxlLnBhdGg7XG5cdFx0XHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpXG5cdFx0XHRcdFx0XHRuZXcgTm90aWNlKCduZXcgbWQtZmlsZSBvcGVuOiAnICsgZmlsZS5wYXRoKVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSkpO1xuXG5cdFx0Ly9cdTUyMjRcdTY1QURcdTVGNTNcdTUyNERcdTY2MkZcdTU0MjZcdTRFM0FNQUNcdTdDRkJcdTdFREZcblx0XHRpZiAoUGxhdGZvcm0uaXNNYWNPUyAmJiB0aGlzLnNldHRpbmdzLkZpeE1hY09TQ29udGV4dE1lbnUpIHtcblx0XHRcdC8vIFx1NjhDMFx1NkQ0Qlx1OUYyMFx1NjgwN1x1NTNGM1x1OTUyRVx1NTQ3Q1x1NTFGQVx1ODNEQ1x1NTM1NVx1NzY4NFx1NEU4Qlx1NEVGNlxuXHRcdFx0dGhpcy5yZWdpc3RlckV2ZW50KHRoaXMuYXBwLndvcmtzcGFjZS5vbignZWRpdG9yLW1lbnUnLCAobWVudTogTWVudSwgZWRpdG9yOiBFZGl0b3IsIHZpZXc6IE1hcmtkb3duVmlldykgPT4ge1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZygnZWRpdG9yLW1lbnUnLCBtZW51LCBlZGl0b3IsIHZpZXcpO1xuXHRcdFx0XHRpZiAoZWRpdG9yLmxpc3RTZWxlY3Rpb25zKCkubGVuZ3RoICE9IDEpIHJldHVybjtcblx0XHRcdFx0bGV0IHNlbGVjdGlvbiA9IGVkaXRvci5saXN0U2VsZWN0aW9ucygpWzBdO1xuXHRcdFx0XHRsZXQgc2VsZWN0ZWQgPSBlZGl0b3IuZ2V0U2VsZWN0aW9uKCk7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCdzZWxlY3RlZCcsIHNlbGVjdGVkLCBzZWxlY3RlZD09J1xcbicpO1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZygnc2VsZWN0aW9uJywgc2VsZWN0aW9uKTtcblx0XHRcdFx0aWYgKHNlbGVjdGVkPT0nXFxuJylcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGVkaXRvci5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uLmFuY2hvciwgc2VsZWN0aW9uLmFuY2hvcik7XG5cdFx0XHRcdH1cblx0XHRcdH0pKTtcblx0XHR9XG5cblx0XHQvLyB0aGlzLnJlZ2lzdGVyRXZlbnQodGhpcy5hcHAud29ya3NwYWNlLm9uKCdmaWxlLW9wZW4nLCAoZmlsZTogVEZpbGUgfCBudWxsKSA9PiB7XG5cdFx0Ly8gXHRpZiAoZmlsZSAhPSBudWxsKSB7XG5cdFx0Ly8gXHRcdGxldCBlZGl0b3IgPSB0aGlzLmdldEVkaXRvcigpO1xuXHRcdC8vIFx0XHRpZiAoZWRpdG9yID09PSBudWxsKSByZXR1cm47XG5cdFx0Ly8gXHRcdHRoaXMuQ29udGVudFBhcnNlci5wYXJzZU5ld0FydGljbGUoZWRpdG9yLmdldFZhbHVlKCkpO1xuXHRcdC8vIFx0XHRpZiAodGhpcy5zZXR0aW5ncy5kZWJ1Zykge1xuXHRcdC8vIFx0XHRcdG5ldyBOb3RpY2UoXCJFYXN5VHlwaW5nOiBQYXJzZSBOZXcgQXJ0aWNsZTogXCIgKyBmaWxlLnZhdWx0LmdldE5hbWUoKSArICcvJyArIGZpbGUucGF0aCk7XG5cdFx0Ly8gXHRcdFx0Ly8gaWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIHRoaXMuQ29udGVudFBhcnNlci5wcmludCgpO1xuXHRcdC8vIFx0XHR9XG5cdFx0Ly8gXHR9XG5cdFx0Ly8gfSkpO1xuXHRcdGNvbnNvbGUubG9nKFwiRWFzeSBUeXBpbmcgUGx1Z2luIGxvYWRlZC5cIilcblx0fVxuXG5cdG9udW5sb2FkKCkge1xuXHRcdGNvbnNvbGUubG9nKFwiRWFzeSBUeXBpbmcgUGx1Z2luIHVubG9hZGVkLlwiKVxuXHR9XG5cblx0dHJhbnNhY3Rpb25GaWx0ZXJQbHVnaW4gPSAodHI6IFRyYW5zYWN0aW9uKTogVHJhbnNhY3Rpb25TcGVjIHwgcmVhZG9ubHkgVHJhbnNhY3Rpb25TcGVjW10gPT4ge1xuXHRcdGNvbnN0IGNoYW5nZXM6IFRyYW5zYWN0aW9uU3BlY1tdID0gW107XG5cdFx0aWYgKCF0ci5kb2NDaGFuZ2VkKSByZXR1cm4gdHI7XG5cdFx0bGV0IHNlbGVjdGVkID0gdHIuc3RhcnRTdGF0ZS5zZWxlY3Rpb24uYXNTaW5nbGUoKS5tYWluLmFuY2hvciAhPSB0ci5zdGFydFN0YXRlLnNlbGVjdGlvbi5hc1NpbmdsZSgpLm1haW4uaGVhZDtcblxuXHRcdGxldCBjaGFuZ2VUeXBlU3RyID0gZ2V0VHlwZVN0ck9mVHJhbnNhYyh0cik7XG5cdFx0dHIuY2hhbmdlcy5pdGVyQ2hhbmdlcygoZnJvbUEsIHRvQSwgZnJvbUIsIHRvQiwgaW5zZXJ0ZWQpID0+IHtcblx0XHRcdGxldCBjaGFuZ2VkU3RyID0gdHIuc3RhcnRTdGF0ZS5zbGljZURvYyhmcm9tQSwgdG9BKTtcblx0XHRcdGxldCBjaGFuZ2VzdHJfID0gY2hhbmdlZFN0ci5yZXBsYWNlKC9cXHMvZywgJzAnKVxuXHRcdFx0bGV0IGluc2VydGVkU3RyID0gaW5zZXJ0ZWQuc2xpY2VTdHJpbmcoMCk7XG5cdFx0XHRpZiAodGhpcy5zZXR0aW5ncy5kZWJ1Zylcblx0XHRcdHtcblx0XHRcdFx0Y29uc29sZS5sb2coXCJbVHJhbnNhY3Rpb25GaWx0ZXJdIHR5cGUsIGZyb21BLCB0b0EsIGNoYW5nZWQsIGZyb21CLCB0b0IsIGluc2VydGVkXCIpO1xuXHRcdFx0XHRjb25zb2xlLmxvZyhjaGFuZ2VUeXBlU3RyLCBmcm9tQSwgdG9BLCBjaGFuZ2VkU3RyLGZyb21CLCB0b0IsIGluc2VydGVkU3RyKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gXHU4ODY4XHU2ODNDXHU3RjE2XHU4RjkxXHU2NUY2XHU3NkY0XHU2M0E1XHU4RkQ0XHU1NkRFXHVGRjBDXHU4OUUzXHU1MUIzXHU4ODY4XHU2ODNDXHU1MTg1XHU1QkI5XHU3RjE2XHU4RjkxXHU2NzA5XHU2NUY2XHU1MDE5XHU0RjFBXHU4REYzXHU1MUZBXHU4MDVBXHU3MTI2XHU3MkI2XHU2MDAxXHU3Njg0IEJ1Z1xuXHRcdFx0aWYgKGdldFBvc0xpbmVUeXBlKHRyLnN0YXJ0U3RhdGUsIGZyb21BKT09TGluZVR5cGUudGFibGUpIHJldHVybiB0cjtcblxuXHRcdFx0Ly8gPT09PT09PT09PSBTZWxlY3Rpb24gUmVwbGFjZSA9PT09PT09PT09PT1cblx0XHRcdGlmICh0aGlzLnNldHRpbmdzLlNlbGVjdGlvbkVuaGFuY2UpIHtcblx0XHRcdFx0aWYgKChjaGFuZ2VUeXBlU3RyID09ICdpbnB1dC50eXBlJyB8fCBjaGFuZ2VUeXBlU3RyID09IFwiaW5wdXQudHlwZS5jb21wb3NlXCIpICYmIGZyb21BICE9IHRvQSAmJiAoKGZyb21CICsgMSA9PT0gdG9CKXx8aW5zZXJ0ZWRTdHI9PSdcdTIwMTRcdTIwMTQnfHxpbnNlcnRlZFN0cj09J1x1MjAyNlx1MjAyNicpKSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuU2VsZWN0aW9uUmVwbGFjZU1hcC5oYXMoaW5zZXJ0ZWRTdHIpKSB7XG5cdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goeyBjaGFuZ2VzOiB7IGZyb206IGZyb21BLCBpbnNlcnQ6IHRoaXMuU2VsZWN0aW9uUmVwbGFjZU1hcC5nZXQoaW5zZXJ0ZWRTdHIpPy5sZWZ0IH0sIHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiIH0pXG5cdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goeyBjaGFuZ2VzOiB7IGZyb206IHRvQSwgaW5zZXJ0OiB0aGlzLlNlbGVjdGlvblJlcGxhY2VNYXAuZ2V0KGluc2VydGVkU3RyKT8ucmlnaHQgfSwgdXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCIgfSlcblx0XHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmIChzZWxlY3RlZCkgcmV0dXJuIHRyO1xuXG5cdFx0XHQvLyBcdTVDMURcdThCRDVcdTg5RTNcdTUxQjNcdTVGQUVcdThGNkZcdTY1RTdcdTcyNDhcdThGOTNcdTUxNjVcdTZDRDVcdTc2ODRcdTk1RUVcdTk4OTh+XG5cdFx0XHRpZiAodGhpcy5zZXR0aW5ncy5UcnlGaXhNU0lNRSAmJiBcblx0XHRcdFx0Y2hhbmdlVHlwZVN0ciA9PSBcImlucHV0LnR5cGUuY29tcG9zZVwiICYmIFxuXHRcdFx0XHRjaGFuZ2VkU3RyID09ICcnICYmIC9eW1xcdTRlMDAtXFx1OWZhNV0rJC8udGVzdChpbnNlcnRlZFN0cikpe1xuXHRcdFx0XHRwcmludChcIk1TLUlNRSBDb21wb3NlIGRldGVjdGVkOlwiLCBpbnNlcnRlZFN0cik7XG5cdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gXHU1MjE3XHU4ODY4XHU0RTBCXHU3Njg0XHU0RUUzXHU3ODAxXHU1NzU3XHU1MjIwXHU5NjY0XHU1MjlGXHU4MEZEXHU0RjE4XHU1MzE2XG5cdFx0XHRpZiAoY2hhbmdlVHlwZVN0ciA9PSBcImRlbGV0ZS5iYWNrd2FyZFwiICYmICFzZWxlY3RlZCAmJiBcblx0XHRcdFx0Z2V0UG9zTGluZVR5cGUodHIuc3RhcnRTdGF0ZSwgdG9BKSA9PSBMaW5lVHlwZS5jb2RlYmxvY2spIHtcblx0XHRcdFx0bGV0IGxpbmVfbnVtYmVyID0gdHIuc3RhcnRTdGF0ZS5kb2MubGluZUF0KHRvQSkubnVtYmVyO1xuXHRcdFx0XHRsZXQgY3VyX2xpbmUgPSB0ci5zdGFydFN0YXRlLmRvYy5saW5lQXQodG9BKTtcblx0XHRcdFx0bGV0IGxpc3RfY29kZSA9IGZhbHNlO1xuXHRcdFx0XHRsZXQgbGlzdF9jb2RlX2luZGVudCA9IDA7XG5cdFx0XHRcdGZvciAobGV0IGkgPSBsaW5lX251bWJlciAtIDE7IGkgPj0gMDsgaS0tKSB7XG5cdFx0XHRcdFx0bGV0IGxpbmUgPSB0ci5zdGFydFN0YXRlLmRvYy5saW5lKGkpO1xuXHRcdFx0XHRcdGlmICgvXlxccytgYGAvLnRlc3QobGluZS50ZXh0KSkge1xuXHRcdFx0XHRcdFx0bGlzdF9jb2RlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGxpc3RfY29kZV9pbmRlbnQgPSBsaW5lLnRleHQubWF0Y2goL15cXHMqLylbMF0ubGVuZ3RoO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2UgaWYgKC9eYGBgLy50ZXN0KGxpbmUudGV4dCkpIGJyZWFrO1xuXHRcdFx0XHRcdGVsc2UgY29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAobGlzdF9jb2RlKSB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ2xpc3RfY29kZSwgaW5kZW50OiAnLCBsaXN0X2NvZGVfaW5kZW50KTtcblx0XHRcdFx0XHRpZiAodG9BID09IGN1cl9saW5lLmZyb20gKyBsaXN0X2NvZGVfaW5kZW50KSB7XG5cdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goeyBjaGFuZ2VzOiB7IGZyb206IHRyLnN0YXJ0U3RhdGUuZG9jLmxpbmUobGluZV9udW1iZXItMSkudG8sIHRvOiB0b0EsIGluc2VydDogJycgfSwgdXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCIgfSk7XG5cdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoZnJvbUE+PWN1cl9saW5lLmZyb20gJiYgZnJvbUEgPCBjdXJfbGluZS5mcm9tK2xpc3RfY29kZV9pbmRlbnQgJiYgdG9BPmN1cl9saW5lLmZyb20rbGlzdF9jb2RlX2luZGVudCl7XG5cdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goeyBjaGFuZ2VzOiB7IGZyb206IGN1cl9saW5lLmZyb20rbGlzdF9jb2RlX2luZGVudCwgdG86IHRvQSwgaW5zZXJ0OiAnJyB9LCB1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIiB9KTtcblx0XHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFVzZXJEZWZpbmVkIERlbGV0ZSBSdWxlXG5cdFx0XHRpZiAoY2hhbmdlVHlwZVN0ciA9PSBcImRlbGV0ZS5iYWNrd2FyZFwiKSB7XG5cdFx0XHRcdGZvciAobGV0IHJ1bGUgb2YgdGhpcy5Vc2VyRGVsZXRlUnVsZXMpIHtcblx0XHRcdFx0XHRsZXQgbGVmdCA9IHRyLnN0YXJ0U3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoLCB0b0EpO1xuXHRcdFx0XHRcdGxldCByaWdodCA9IHRyLnN0YXJ0U3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQSwgdG9BICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoKTtcblx0XHRcdFx0XHRpZiAobGVmdCA9PT0gcnVsZS5iZWZvcmUubGVmdCAmJiByaWdodCA9PT0gcnVsZS5iZWZvcmUucmlnaHQpIHtcblx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGNoYW5nZXM6IHtcblx0XHRcdFx0XHRcdFx0XHRmcm9tOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHR0bzogdG9BICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdGluc2VydDogcnVsZS5hZnRlci5sZWZ0ICsgcnVsZS5hZnRlci5yaWdodFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIHJ1bGUuYWZ0ZXIubGVmdC5sZW5ndGggfSxcblx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gPT09PT09PT09PSBkZWxldGUgcGFpciBzeW1ib2wgPT09PT09PT09PT09XG5cdFx0XHRpZiAoY2hhbmdlVHlwZVN0ciA9PT0gXCJkZWxldGUuYmFja3dhcmRcIiAmJiB0aGlzLnNldHRpbmdzLkludHJpbnNpY1N5bWJvbFBhaXJzKSB7XG5cdFx0XHRcdGlmICh0aGlzLlN5bWJvbFBhaXJzTWFwLmhhcyhjaGFuZ2VkU3RyKSAmJiB0aGlzLlN5bWJvbFBhaXJzTWFwLmdldChjaGFuZ2VkU3RyKSA9PT0gdHIuc3RhcnRTdGF0ZS5zbGljZURvYyh0b0EsIHRvQSArIDEpKSB7XG5cdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHsgY2hhbmdlczogeyBmcm9tOiBmcm9tQSwgdG86IHRvQSArIDEgfSwgdXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCIgfSk7XG5cdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBcdTU5MDRcdTc0MDZcdTUyMjBcdTk2NjRcdTRFRTNcdTc4MDFcdTU3NTdcblx0XHRcdFx0bGV0IGxpbmVfY29udGVudCA9IHRyLnN0YXJ0U3RhdGUuZG9jLmxpbmVBdCh0b0EpLnRleHQ7XG5cdFx0XHRcdGxldCBuZXh0X2xpbmVfY29udGVudCA9IHRyLnN0YXJ0U3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQSwgdG9BICsgbGluZV9jb250ZW50Lmxlbmd0aCsxKTtcblx0XHRcdFx0aWYgKC9eXFxzKmBgYCQvLnRlc3QobGluZV9jb250ZW50KSAmJiAnXFxuJytsaW5lX2NvbnRlbnQ9PW5leHRfbGluZV9jb250ZW50KSB7XG5cdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdGNoYW5nZXM6e1xuXHRcdFx0XHRcdFx0XHRmcm9tOiB0b0EtMywgXG5cdFx0XHRcdFx0XHRcdHRvOiB0b0ErbGluZV9jb250ZW50Lmxlbmd0aCsxLFxuXHRcdFx0XHRcdFx0XHRpbnNlcnQ6ICcnXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogdG9BIC0gMyB9LFxuXHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGZvciAobGV0IHJ1bGUgb2YgdGhpcy5JbnRyaW5zaWNEZWxldGVSdWxlcykge1xuXHRcdFx0XHRcdGxldCBsZWZ0ID0gdHIuc3RhcnRTdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGgsIHRvQSk7XG5cdFx0XHRcdFx0bGV0IHJpZ2h0ID0gdHIuc3RhcnRTdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9BLCB0b0EgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgpO1xuXHRcdFx0XHRcdGlmIChsZWZ0ID09PSBydWxlLmJlZm9yZS5sZWZ0ICYmIHJpZ2h0ID09PSBydWxlLmJlZm9yZS5yaWdodCkge1xuXHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlczoge1xuXHRcdFx0XHRcdFx0XHRcdGZyb206IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdHRvOiB0b0EgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgsXG5cdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiBydWxlLmFmdGVyLmxlZnQgKyBydWxlLmFmdGVyLnJpZ2h0XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgcnVsZS5hZnRlci5sZWZ0Lmxlbmd0aCB9LFxuXHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBcdTU5MDRcdTc0MDZcdTgyRjFcdTY1ODdcdThGOTNcdTUxNjVcdTZDRDVcdTRFMEJcdThGOTNcdTUxNjVcdTRFRTNcdTc4MDFcdTU3NTdcblx0XHRcdGlmIChjaGFuZ2VUeXBlU3RyID09ICdpbnB1dC50eXBlJyAmJiBpbnNlcnRlZFN0ciA9PSdgXFxuYGBgJyAmJiB0aGlzLnNldHRpbmdzLkJhc2VPYkVkaXRFbmhhbmNlKXtcblx0XHRcdFx0Y29uc3QgbGluZV9jb250ZW50ID0gdHIuc3RhcnRTdGF0ZS5kb2MubGluZUF0KGZyb21BKS50ZXh0O1xuXHRcdFx0XHRpZiAoL15cXHMqYGAkLy50ZXN0KGxpbmVfY29udGVudCkpe1xuXHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRjaGFuZ2VzOiB7ZnJvbTogZnJvbUEsIHRvOiB0b0EsIGluc2VydDogJ2BcXG4nK2xpbmVfY29udGVudCsnYCd9LFxuXHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogZnJvbUEgKyAxIH0sXG5cdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRcblx0XHRcdC8vIFx1OTAxQVx1NUUzOFx1NTM1NVx1NUI1N1x1OEY5M1x1NTE2NVxuXHRcdFx0aWYgKChjaGFuZ2VUeXBlU3RyID09ICdpbnB1dC50eXBlJyB8fCBjaGFuZ2VUeXBlU3RyID09IFwiaW5wdXQudHlwZS5jb21wb3NlXCIpICYmIGZyb21BID09PSB0b0EgJiYgZnJvbUIgKyAxID09PSB0b0IpIHtcblx0XHRcdFx0Ly8gaWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIGNvbnNvbGUubG9nKFwiSW5wdXQudHlwZSA9PiBcIiwgaW5zZXJ0ZWRTdHIpXG5cdFx0XHRcdC8vID09PT09PT09PT09IGJhc2ljIGNvbnZlcnQgcnVsZXMgPT09PT09PT09PT09XG5cdFx0XHRcdC8vIG5vdCBzdXBwb3J0IHVuZG8gYW5kIHJlZG9cblx0XHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuQmFzZU9iRWRpdEVuaGFuY2UpIHtcblx0XHRcdFx0XHQvLyBcdTU5MDRcdTc0MDZcdTgyRjFcdTY1ODdcdTY4MDdcdTcwQjlcdTRFMEJgYHxcdTc2ODRcdTYwQzVcdTUxQjVcdUZGMENcdTUxNDlcdTY4MDdcdTgxRUFcdTUyQThcdThERjNcdThGNkNcdTUyMzBcdTRFMkRcdTk1RjRcblx0XHRcdFx0XHRpZiAoaW5zZXJ0ZWRTdHIgPT09ICdgJyAmJiBcblx0XHRcdFx0XHRcdHRvQS10ci5zdGFydFN0YXRlLmRvYy5saW5lQXQodG9BKS5mcm9tPjIgJiYgXG5cdFx0XHRcdFx0XHR0ci5zdGFydFN0YXRlLnNsaWNlRG9jKHRvQS0xLCB0b0EpID09PSAnYCdcblx0XHRcdFx0XHRcdCYmIHRyLnN0YXJ0U3RhdGUuc2xpY2VEb2ModG9BLTIsIHRvQS0xKSAhPSAnYCcpe1xuXHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlczoge2Zyb206dG9BLCBpbnNlcnQ6J2AnfSxcblx0XHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogdG9BIH0sIHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiIFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFx1NTkwNFx1NzQwNlx1NEUyRFx1NjU4N1x1OEY5M1x1NTE2NVx1NkNENVx1NEUwQlx1OEY5M1x1NTE2NVx1NEVFM1x1NzgwMVx1NTc1N1xuXHRcdFx0XHRcdGlmIChpbnNlcnRlZFN0ciA9PSAnXHUwMEI3Jyl7XG5cdFx0XHRcdFx0XHRsZXQgbGluZV9jb250ZW50ID0gdHIuc3RhcnRTdGF0ZS5kb2MubGluZUF0KGZyb21BKS50ZXh0O1xuXHRcdFx0XHRcdFx0bGV0IGNoX3BvcyA9IGZyb21BIC0gdHIuc3RhcnRTdGF0ZS5kb2MubGluZUF0KGZyb21BKS5mcm9tO1xuXHRcdFx0XHRcdFx0aWYgKC9eXFxzKmBgJC8udGVzdChsaW5lX2NvbnRlbnQpICYmIGNoX3Bvcz09bGluZV9jb250ZW50Lmxlbmd0aC0xKXtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7ZnJvbTogZnJvbUErMSwgdG86IHRvQSsxLCBpbnNlcnQ6ICdgXFxuJytsaW5lX2NvbnRlbnQrJ2AnfSxcblx0XHRcdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiBmcm9tQSArIDIgfSxcblx0XHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGZvciAobGV0IHJ1bGUgb2YgdGhpcy5CYXNpY0NvbnZSdWxlcykge1xuXHRcdFx0XHRcdFx0aWYgKGluc2VydGVkU3RyICE9IHJ1bGUuYmVmb3JlLmxlZnQuY2hhckF0KHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoIC0gMSkpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0Ly8gXHU1OTA0XHU3NDA2XHU2NTg3XHU2ODYzXHU3QjJDIDAgXHU4ODRDXG5cdFx0XHRcdFx0XHRpZiAocnVsZS5iZWZvcmUubGVmdC5jaGFyQXQoMCkgPT09ICdcXG4nICYmIG9mZnNldFRvUG9zKHRyLnN0YXRlLmRvYywgZnJvbUEpLmxpbmUgPT09IDAgJiYgdG9CIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyAxID09PSAwKSB7XG5cdFx0XHRcdFx0XHRcdGxldCBsZWZ0ID0gdHIuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgMSwgdG9CKTtcblx0XHRcdFx0XHRcdFx0bGV0IHJpZ2h0ID0gdHIuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiwgdG9CICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoKTtcblx0XHRcdFx0XHRcdFx0aWYgKGxlZnQgPT09IHJ1bGUuYmVmb3JlLmxlZnQuc3Vic3RyaW5nKDEpICYmIHJpZ2h0ID09PSBydWxlLmJlZm9yZS5yaWdodCkge1xuXHRcdFx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZyb206IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgMixcblx0XHRcdFx0XHRcdFx0XHRcdFx0dG86IHRvQSArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiBydWxlLmFmdGVyLmxlZnQuc3Vic3RyaW5nKDEpICsgcnVsZS5hZnRlci5yaWdodFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgcnVsZS5hZnRlci5sZWZ0Lmxlbmd0aCArIDEgfSxcblx0XHRcdFx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdC8vIFx1OTAxQVx1NUUzOFx1NjBDNVx1NTFCNVx1NTkwNFx1NzQwNlxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGxldCBsZWZ0ID0gdHIuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoLCB0b0IpO1xuXHRcdFx0XHRcdFx0XHRsZXQgcmlnaHQgPSB0ci5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CLCB0b0IgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgpO1xuXHRcdFx0XHRcdFx0XHRpZiAobGVmdCA9PT0gcnVsZS5iZWZvcmUubGVmdCAmJiByaWdodCA9PT0gcnVsZS5iZWZvcmUucmlnaHQpIHtcblx0XHRcdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2hhbmdlczoge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmcm9tOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIDEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRvOiB0b0EgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGluc2VydDogcnVsZS5hZnRlci5sZWZ0ICsgcnVsZS5hZnRlci5yaWdodFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IHRvQSAtIHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoICsgcnVsZS5hZnRlci5sZWZ0Lmxlbmd0aCArIDEgfSxcblx0XHRcdFx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodGhpcy5zZXR0aW5ncy5GVzJIV0VuaGFuY2UpIHtcblx0XHRcdFx0XHRmb3IgKGxldCBydWxlIG9mIHRoaXMuRlcySFdTeW1ib2xSdWxlcykge1xuXHRcdFx0XHRcdFx0aWYgKGluc2VydGVkU3RyICE9IHJ1bGUuYmVmb3JlLmxlZnQuY2hhckF0KHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoIC0gMSkpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0bGV0IGxlZnQgPSB0ci5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGgsIHRvQik7XG5cdFx0XHRcdFx0XHRsZXQgcmlnaHQgPSB0ci5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CLCB0b0IgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGgpO1xuXHRcdFx0XHRcdFx0aWYgKGxlZnQgPT09IHJ1bGUuYmVmb3JlLmxlZnQgJiYgcmlnaHQgPT09IHJ1bGUuYmVmb3JlLnJpZ2h0KSB7XG5cdFx0XHRcdFx0XHRcdGNoYW5nZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0Y2hhbmdlczoge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZnJvbTogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyAxLFxuXHRcdFx0XHRcdFx0XHRcdFx0dG86IHRvQSArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCxcblx0XHRcdFx0XHRcdFx0XHRcdGluc2VydDogcnVsZS5hZnRlci5sZWZ0ICsgcnVsZS5hZnRlci5yaWdodFxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogdG9BIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGggKyBydWxlLmFmdGVyLmxlZnQubGVuZ3RoICsgMSB9LFxuXHRcdFx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gPT09PT09PT09PT09PT09PSBhdXRvIHBhaXIgPT09PT09PT09PT09PT09PT1cblx0XHRcdFx0Ly8gbGV0IFBhaXJWYWxpZFNldCA9IG5ldyBTZXQoW1wiXCIsIFwiIFwiLFwiXFxuXCJdKVxuXHRcdFx0XHQvLyBsZXQgY2hhckFmdGVyQ3Vyc29yID0gdHIuc3RhcnRTdGF0ZS5zbGljZURvYyh0b0EsIHRvQSsxKTtcblx0XHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuSW50cmluc2ljU3ltYm9sUGFpcnMpIHtcblx0XHRcdFx0XHRmb3IgKGxldCBydWxlIG9mIHRoaXMuSW50cmluc2ljQXV0b1BhaXJSdWxlc1BhdGNoKSB7XG5cdFx0XHRcdFx0XHRpZiAoaW5zZXJ0ZWRTdHIgIT0gcnVsZS5iZWZvcmUubGVmdC5jaGFyQXQocnVsZS5iZWZvcmUubGVmdC5sZW5ndGggLSAxKSkgY29udGludWU7XG5cdFx0XHRcdFx0XHRsZXQgbGVmdCA9IHRyLnN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0IgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCwgdG9CKTtcblx0XHRcdFx0XHRcdGxldCByaWdodCA9IHRyLnN0YXRlLmRvYy5zbGljZVN0cmluZyh0b0IsIHRvQiArIHJ1bGUuYmVmb3JlLnJpZ2h0Lmxlbmd0aCk7XG5cdFx0XHRcdFx0XHRpZiAobGVmdCA9PT0gcnVsZS5iZWZvcmUubGVmdCAmJiByaWdodCA9PT0gcnVsZS5iZWZvcmUucmlnaHQpIHtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRmcm9tOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIDEsXG5cdFx0XHRcdFx0XHRcdFx0XHR0bzogdG9BICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiBydWxlLmFmdGVyLmxlZnQgKyBydWxlLmFmdGVyLnJpZ2h0XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiB0b0EgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIHJ1bGUuYWZ0ZXIubGVmdC5sZW5ndGggKyAxIH0sXG5cdFx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAodGhpcy5TeW1ib2xQYWlyc01hcC5oYXMoaW5zZXJ0ZWRTdHIpICYmIGluc2VydGVkU3RyIT1cIidcIikge1xuXHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlczogeyBmcm9tOiBmcm9tQSwgdG86IHRvQSwgaW5zZXJ0OiBpbnNlcnRlZFN0ciArIHRoaXMuU3ltYm9sUGFpcnNNYXAuZ2V0KGluc2VydGVkU3RyKSB9LFxuXHRcdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiBmcm9tQSArIDEgfSxcblx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZWxzZSBpZiAoaW5zZXJ0ZWRTdHIgPT09IFwiJ1wiKSB7XG5cdFx0XHRcdFx0XHRsZXQgY2hhckJlZm9yZUN1cnNvciA9IHRyLnN0YXJ0U3RhdGUuc2xpY2VEb2MoZnJvbUEgLSAxLCBmcm9tQSk7XG5cdFx0XHRcdFx0XHRpZiAoWycnLCAnICcsICdcXG4nXS5pbmNsdWRlcyhjaGFyQmVmb3JlQ3Vyc29yKSkge1xuXHRcdFx0XHRcdFx0XHRjaGFuZ2VzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdGNoYW5nZXM6IHsgZnJvbTogZnJvbUEsIHRvOiB0b0EsIGluc2VydDogXCInJ1wiIH0sXG5cdFx0XHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogZnJvbUEgKyAxIH0sXG5cdFx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdHRyID0gdHIuc3RhcnRTdGF0ZS51cGRhdGUoLi4uY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0cjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBoYW5kbGUgYXV0b3BhaXIgZm9yIFwiXHUyMDFEXCIgYW5kIFwiXHUyMDE5XCJcblx0XHRcdFx0XHRpZiAoaW5zZXJ0ZWRTdHIgPT09ICdcdTIwMUQnIHx8IGluc2VydGVkU3RyID09PSAnXHUyMDE5Jykge1xuXHRcdFx0XHRcdFx0bGV0IHRlbXBTdHIgPSBpbnNlcnRlZFN0ciA9PT0gXCJcdTIwMURcIiA/IFwiXHUyMDFDXHUyMDFEXCIgOiBcIlx1MjAxOFx1MjAxOVwiO1xuXHRcdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlczogeyBmcm9tOiBmcm9tQSwgdG86IHRvQSwgaW5zZXJ0OiB0ZW1wU3RyIH0sXG5cdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IGZyb21BICsgMSB9LFxuXHRcdFx0XHRcdFx0XHR1c2VyRXZlbnQ6IFwiRWFzeVR5cGluZy5jaGFuZ2VcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR0ciA9IHRyLnN0YXJ0U3RhdGUudXBkYXRlKC4uLmNoYW5nZXMpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRyO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBcdTU3MjhcdTRFRTNcdTc4MDFcdTU3NTdcdTRFMkRcdTdDOThcdThEMzRcdTY1RjZcdTY2N0FcdTgwRkRcdTZERkJcdTUyQTBcdTdGMjlcdThGREJcblx0XHRcdGlmIChjaGFuZ2VUeXBlU3RyPT1cImlucHV0LnBhc3RlXCIgJiYgZnJvbUE9PXRvQSAmJiBmcm9tQT09ZnJvbUIgJiYgXG5cdFx0XHRcdFx0Z2V0UG9zTGluZVR5cGUodHIuc3RhcnRTdGF0ZSwgZnJvbUIpID09IExpbmVUeXBlLmNvZGVibG9jayl7XG5cdFx0XHRcdGxldCBsaW5lID0gdHIuc3RhcnRTdGF0ZS5kb2MubGluZUF0KGZyb21CKS50ZXh0O1xuXHRcdFx0XHRsZXQgaW5kZW50X3NwYWNlID0gbGluZS5tYXRjaCgvXlxccyovKVswXS5sZW5ndGg7XG5cdFx0XHRcdGxldCBpbnNlcnRlZF9saW5lcyA9IGluc2VydGVkU3RyLnNwbGl0KCdcXG4nKTtcblx0XHRcdFx0aWYoaW5zZXJ0ZWRfbGluZXMubGVuZ3RoPjEpe1xuXHRcdFx0XHRcdGxldCBmaXJzdF9saW5lID0gaW5zZXJ0ZWRfbGluZXNbMF0udHJpbVN0YXJ0KCk7XG5cdFx0XHRcdFx0bGV0IHJlc3RfbGluZXMgPSBpbnNlcnRlZF9saW5lcy5zbGljZSgxKTtcblx0XHRcdFx0XHQvLyBmaW5kIHRoZSBtaW5pbXVtIGluZGVudCBzcGFjZSBpbiByZXN0IGxpbmVzXG5cdFx0XHRcdFx0bGV0IG1pbl9pbmRlbnRfc3BhY2UgPSBJbmZpbml0eTtcblx0XHRcdFx0XHRmb3IgKGxldCBsaW5lIG9mIHJlc3RfbGluZXMpe1xuXHRcdFx0XHRcdFx0bGV0IGluZGVudCA9IGxpbmUubWF0Y2goL15cXHMqLylbMF0ubGVuZ3RoO1xuXHRcdFx0XHRcdFx0aWYgKGluZGVudDxtaW5faW5kZW50X3NwYWNlKSBtaW5faW5kZW50X3NwYWNlID0gaW5kZW50O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyByZW1vdmUgdGhpcyBtaW5faW5kZW50X3NwYWNlIGZyb20gcmVzdCBsaW5lc1xuXHRcdFx0XHRcdGxldCBuZXdfcmVzdF9saW5lcyA9IHJlc3RfbGluZXMubWFwKChsaW5lOnN0cmluZyk9PmxpbmUuc3Vic3RyaW5nKG1pbl9pbmRlbnRfc3BhY2UpKTtcblx0XHRcdFx0XHRuZXdfcmVzdF9saW5lcyA9IG5ld19yZXN0X2xpbmVzLm1hcChcblx0XHRcdFx0XHRcdChsaW5lOnN0cmluZyk9PmxpbmUucmVwbGFjZSgvW1xcdF0vZywgdGhpcy5vYnNpZGlhblNldHRpbmdzLmdldERlZmF1bHRJbmRlbnRDaGFycygpKSk7XG5cdFx0XHRcdFx0bGV0IGZpbmFsX3Jlc3RfbGluZXMgPSBuZXdfcmVzdF9saW5lcy5tYXAoKGxpbmU6c3RyaW5nKT0+JyAnLnJlcGVhdChpbmRlbnRfc3BhY2UpK2xpbmUpO1xuXHRcdFx0XHRcdGxldCBuZXdfaW5zZXJ0ZWRTdHIgPSBmaXJzdF9saW5lKydcXG4nK2ZpbmFsX3Jlc3RfbGluZXMuam9pbignXFxuJyk7XG5cdFx0XHRcdFx0Y2hhbmdlcy5wdXNoKHtcblx0XHRcdFx0XHRcdGNoYW5nZXM6IHtmcm9tOiBmcm9tQSwgdG86IHRvQSwgaW5zZXJ0OiBuZXdfaW5zZXJ0ZWRTdHJ9LFxuXHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7YW5jaG9yOiBmcm9tQStuZXdfaW5zZXJ0ZWRTdHIubGVuZ3RofSxcblx0XHRcdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0dHIgPSB0ci5zdGFydFN0YXRlLnVwZGF0ZSguLi5jaGFuZ2VzKTtcblx0XHRcdFx0XHRyZXR1cm4gdHI7XG5cdFx0XHRcdH1cdFx0XHRcdFxuXHRcdFx0fVxuXG5cdFx0fSlcblx0XHRyZXR1cm4gdHI7XG5cdH1cblxuXHRhc3luYyBub3JtYWxQYXN0ZShlZGl0b3I6IEVkaXRvcik6IFByb21pc2U8dm9pZD4ge1xuXHRcdGxldCBjbGlwYm9hcmRUZXh0ID0gYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC5yZWFkVGV4dCgpO1xuXHRcdGlmIChjbGlwYm9hcmRUZXh0ID09PSBudWxsIHx8IGNsaXBib2FyZFRleHQgPT09IFwiXCIpIHJldHVybjtcblxuXHRcdGlmICh0aGlzLnNldHRpbmdzLmRlYnVnKSBjb25zb2xlLmxvZyhcIk5vcm1hbCBQYXN0ZSEhXCIpXG5cdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciwgbm90IHR5cGVkXG5cdFx0Y29uc3QgZWRpdG9yVmlldyA9IGVkaXRvci5jbSBhcyBFZGl0b3JWaWV3O1xuXHRcdGxldCBtYWluU2VsZWN0aW9uID0gZWRpdG9yVmlldy5zdGF0ZS5zZWxlY3Rpb24uYXNTaW5nbGUoKS5tYWluO1xuXHRcdGVkaXRvclZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0Y2hhbmdlczogeyBmcm9tOiBtYWluU2VsZWN0aW9uLmZyb20sIHRvOiBtYWluU2VsZWN0aW9uLnRvLCBpbnNlcnQ6IGNsaXBib2FyZFRleHQgfSxcblx0XHRcdHVzZXJFdmVudDogXCJpbnB1dC5wYXN0ZVwiXG5cdFx0fSk7XG5cdH1cblxuXHR2aWV3VXBkYXRlUGx1Z2luID0gKHVwZGF0ZTogVmlld1VwZGF0ZSkgPT4ge1xuXHRcdGlmICh0aGlzLm9uRm9ybWF0QXJ0aWNsZSA9PT0gdHJ1ZSkgcmV0dXJuO1xuXG5cdFx0bGV0IG5vdFNlbGVjdGVkID0gdHJ1ZTtcblx0XHRsZXQgbWFpblNlbGVjdGlvbiA9IHVwZGF0ZS52aWV3LnN0YXRlLnNlbGVjdGlvbi5hc1NpbmdsZSgpLm1haW47XG5cdFx0aWYgKG1haW5TZWxlY3Rpb24uYW5jaG9yICE9IG1haW5TZWxlY3Rpb24uaGVhZCkgbm90U2VsZWN0ZWQgPSBmYWxzZTtcblx0XHRpZiAoIXVwZGF0ZS5kb2NDaGFuZ2VkKSByZXR1cm47XG5cblx0XHRsZXQgaXNFeGNsdWRlRmlsZSA9IHRoaXMuaXNDdXJyZW50RmlsZUV4Y2x1ZGUoKTtcblx0XHQvLyBjb25zb2xlLmxvZyh0aGlzLkN1ckFjdGl2ZU1hcmtkb3duLCBpc0V4Y2x1ZGVGaWxlKVxuXG5cdFx0Ly8gaWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIGNvbnNvbGUubG9nKFwiLS0tLS1WaWV3VXBkYXRlQ2hhbmdlLS0tLS1cIik7XG5cdFx0bGV0IHRyID0gdXBkYXRlLnRyYW5zYWN0aW9uc1swXVxuXHRcdGxldCBjaGFuZ2VUeXBlID0gZ2V0VHlwZVN0ck9mVHJhbnNhYyh0cik7XG5cblx0XHR0ci5jaGFuZ2VzLml0ZXJDaGFuZ2VzKChmcm9tQSwgdG9BLCBmcm9tQiwgdG9CLCBpbnNlcnRlZCkgPT4ge1xuXHRcdFx0bGV0IGluc2VydGVkU3RyID0gaW5zZXJ0ZWQuc2xpY2VTdHJpbmcoMCk7XG5cdFx0XHRsZXQgY2hhbmdlZFN0ciA9IHRyLnN0YXJ0U3RhdGUuZG9jLnNsaWNlU3RyaW5nKGZyb21BLCB0b0EpO1xuXHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpe1xuXHRcdFx0XHRjb25zb2xlLmxvZyhcIltWaWV3VXBkYXRlXSB0eXBlLCBmcm9tQSwgdG9BLCBjaGFuZ2VkLCBmcm9tQiwgdG9CLCBpbnNlcnRlZFwiKTtcblx0XHRcdFx0Y29uc29sZS5sb2coY2hhbmdlVHlwZSwgZnJvbUEsIHRvQSwgY2hhbmdlZFN0ciwgZnJvbUIsIHRvQiwgaW5zZXJ0ZWRTdHIpXG5cdFx0XHRcdGNvbnNvbGUubG9nKFwiPT0+W0NvbXBvc2luZ11cIiwgdXBkYXRlLnZpZXcuY29tcG9zaW5nKVxuXHRcdFx0fVxuXG5cdFx0XHQvLyB0YWJsZSBcdTUxODVcdTkwRThcdTRFMERcdTUwNUFcdTU5MDRcdTc0MDZcdUZGMENcdTc2RjRcdTYzQTVcdThGRDRcdTU2REUgPT4gXHU5MTREXHU1NDA4IE9ic2lkaWFuIFx1NzY4NFx1NjczQVx1NTIzNlxuXHRcdFx0aWYgKGdldFBvc0xpbmVUeXBlKHVwZGF0ZS52aWV3LnN0YXRlLCBmcm9tQikgPT0gTGluZVR5cGUudGFibGUpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBcdTYyN0VcdTUyMzBcdTUxNDlcdTY4MDdcdTRGNERcdTdGNkVcdUZGMENcdTZCRDRcdThGODNcdTU0OEMgdG9CIFx1NzY4NFx1NEY0RFx1N0Y2RVx1NjYyRlx1NTQyNlx1NzZGOFx1NTQwQ1x1RkYwQ1x1NzZGOFx1NTQwQ1x1NEUxNFx1NjcwMFx1N0VDOFx1NjNEMlx1NTE2NVx1NjU4N1x1NUI1N1x1NEUzQVx1NEUyRFx1NjU4N1x1RkYwQ1x1NTIxOVx1NEUzQVx1NEUyRFx1NjU4N1x1OEY5M1x1NTE2NVx1N0VEM1x1Njc1Rlx1NzY4NFx1NzJCNlx1NjAwMVxuXHRcdFx0bGV0IGN1cnNvciA9IHVwZGF0ZS52aWV3LnN0YXRlLnNlbGVjdGlvbi5hc1NpbmdsZSgpLm1haW47XG5cdFx0XHRsZXQgQ2hpbmVzZVJlZ0V4cCA9IC9eW1xcdTRlMDAtXFx1OWZhNVx1MzAxMFx1MzAxMVx1MDBCN1x1RkZFNVx1MzAwQVx1MzAwQlx1RkYxRlx1RkYxQVx1RkYxQlx1MjAxOVx1MjAxOFx1MjAxRFx1MjAxQ1x1MzAwQ1x1MzAwRFx1MzAwMVx1MzAwMlx1RkYwQ1x1RkYwOFx1RkYwOVx1RkYwMVx1MjAxNFx1MjAxNFx1MjAyNlx1MjAyNlxcZF0rJC87XG5cdFx0XHRsZXQgY2hpbmVzZUVuZEZsYWcgPSBjaGFuZ2VUeXBlID09IFwiaW5wdXQudHlwZS5jb21wb3NlXCIgJiZcblx0XHRcdFx0Y3Vyc29yLmFuY2hvciA9PSBjdXJzb3IuaGVhZCAmJiBjdXJzb3IuYW5jaG9yID09PSB0b0IgJiZcblx0XHRcdFx0Q2hpbmVzZVJlZ0V4cC50ZXN0KGluc2VydGVkU3RyKTtcblxuXHRcdFx0aWYgKGNoYW5nZVR5cGUgIT0gXCJpbnB1dC50eXBlLmNvbXBvc2VcIikgdGhpcy5jb21wb3NlX25lZWRfaGFuZGxlID0gZmFsc2U7XG5cdFx0XHRpZiAodGhpcy5zZXR0aW5ncy5BdXRvRm9ybWF0ICYmIG5vdFNlbGVjdGVkICYmICFpc0V4Y2x1ZGVGaWxlICYmXG5cdFx0XHRcdChnZXRQb3NMaW5lVHlwZSh1cGRhdGUudmlldy5zdGF0ZSwgZnJvbUIpID09IExpbmVUeXBlLnRleHQgfHwgZ2V0UG9zTGluZVR5cGUodXBkYXRlLnZpZXcuc3RhdGUsIGZyb21CKSA9PSBMaW5lVHlwZS50YWJsZSkpIHtcblx0XHRcdFx0aWYgKGNoYW5nZVR5cGUgPT0gXCJpbnB1dC50eXBlLmNvbXBvc2VcIikge1xuXHRcdFx0XHRcdGlmICghL15cXGQkLy50ZXN0KGluc2VydGVkU3RyKSl7XG5cdFx0XHRcdFx0XHRpZiAodGhpcy5jb21wb3NlX25lZWRfaGFuZGxlID09IGZhbHNlKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuY29tcG9zZV9iZWdpbl9wb3MgPSBmcm9tQjtcblx0XHRcdFx0XHRcdFx0dGhpcy5jb21wb3NlX2VuZF9wb3MgPSB0b0I7XG5cdFx0XHRcdFx0XHRcdHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZSA9IHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5jb21wb3NlX2VuZF9wb3MgPSB0b0I7XG5cdFx0XHRcdFx0XHRcdGlmICh0aGlzLmNvbXBvc2VfYmVnaW5fcG9zID09IHRoaXMuY29tcG9zZV9lbmRfcG9zKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5jb21wb3NlX25lZWRfaGFuZGxlID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChjaGluZXNlRW5kRmxhZykgdGhpcy5jb21wb3NlX25lZWRfaGFuZGxlID0gZmFsc2U7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHRpZiAodGhpcy5jb21wb3NlX25lZWRfaGFuZGxlKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuY29tcG9zZV9lbmRfcG9zID0gdG9CO1xuXHRcdFx0XHRcdFx0XHRpZiAodGhpcy5jb21wb3NlX2JlZ2luX3BvcyA9PSB0aGlzLmNvbXBvc2VfZW5kX3Bvcykge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGNoaW5lc2VFbmRGbGFnID0gdGhpcy5jb21wb3NlX25lZWRfaGFuZGxlP2ZhbHNlOmNoaW5lc2VFbmRGbGFnO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoY2hpbmVzZUVuZEZsYWcpIHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZSA9IGZhbHNlO1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhcIkNvbXBvc2VcIiwgY2hpbmVzZUVuZEZsYWcsIHRoaXMuY29tcG9zZV9uZWVkX2hhbmRsZSk7XG5cdFx0XHR9XG5cblxuXHRcdFx0Ly8gXHU1MjI0XHU2NUFEXHU2QkNGXHU2QjIxXHU4RjkzXHU1MTY1XHU3RUQzXHU2NzVGXG5cdFx0XHRpZiAoY2hhbmdlVHlwZSA9PSAnaW5wdXQudHlwZScgfHwgY2hhbmdlVHlwZSA9PSBcImlucHV0XCIgfHwgY2hpbmVzZUVuZEZsYWcgfHwgY2hhbmdlVHlwZSA9PSAnbm9uZScpIHtcblx0XHRcdFx0Ly8gXHU3NTI4XHU2MjM3XHU4MUVBXHU1QjlBXHU0RTQ5XHU4RjZDXHU1MzE2XHU4OUM0XHU1MjE5XG5cdFx0XHRcdGZvciAobGV0IHJ1bGUgb2YgdGhpcy5Vc2VyQ29udmVydFJ1bGVzKSB7XG5cdFx0XHRcdFx0Ly8gaWYgKGluc2VydGVkU3RyICE9IHJ1bGUuYmVmb3JlLmxlZnQuc3Vic3RyaW5nKHJ1bGUuYmVmb3JlLmxlZnQubGVuZ3RoIC0gaW5zZXJ0ZWRTdHIubGVuZ3RoKSkgY29udGludWU7XG5cdFx0XHRcdFx0bGV0IGxlZnQgPSB1cGRhdGUudmlldy5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodG9CIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGgsIHRvQik7XG5cdFx0XHRcdFx0bGV0IHJpZ2h0ID0gdXBkYXRlLnZpZXcuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRvQiwgdG9CICsgcnVsZS5iZWZvcmUucmlnaHQubGVuZ3RoKTtcblx0XHRcdFx0XHRsZXQgaW5zZXJ0ZWQgPSBydWxlLmFmdGVyLmxlZnQgKyBydWxlLmFmdGVyLnJpZ2h0O1xuXHRcdFx0XHRcdGxldCBhbmNob3IgPSB0b0IgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIHJ1bGUuYWZ0ZXIubGVmdC5sZW5ndGg7XG5cdFx0XHRcdFx0bGV0IGZyb20gPSB0b0IgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aDtcblx0XHRcdFx0XHRsZXQgdG8gPSB0b0IgKyBydWxlLmJlZm9yZS5yaWdodC5sZW5ndGg7XG5cdFx0XHRcdFx0Ly8gXHU1QkY5XHU2NTg3XHU2ODYzXHU5OTk2XHU4ODRDXHU4OUM0XHU1MjE5XHU1MDVBXHU3Mjc5XHU2QjhBXHU1OTA0XHU3NDA2XG5cdFx0XHRcdFx0aWYgKHJ1bGUuYmVmb3JlLmxlZnQuY2hhckF0KDApID09PSAnXFxuJyAmJiBydWxlLmFmdGVyLmxlZnQuY2hhckF0KDApID09PSAnXFxuJyAmJlxuXHRcdFx0XHRcdFx0dG9CIC0gcnVsZS5iZWZvcmUubGVmdC5sZW5ndGgrMT09MCkge1xuXHRcdFx0XHRcdFx0bGVmdCA9ICdcXG4nICsgbGVmdDtcblx0XHRcdFx0XHRcdGluc2VydGVkID0gaW5zZXJ0ZWQuc3Vic3RyaW5nKDEpO1xuXHRcdFx0XHRcdFx0ZnJvbSA9IDA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChsZWZ0ID09PSBydWxlLmJlZm9yZS5sZWZ0ICYmIHJpZ2h0ID09PSBydWxlLmJlZm9yZS5yaWdodCkge1xuXHRcdFx0XHRcdFx0dXBkYXRlLnZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0XHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0XHRcdFx0ZnJvbTogZnJvbSxcblx0XHRcdFx0XHRcdFx0XHR0bzogdG8sXG5cdFx0XHRcdFx0XHRcdFx0aW5zZXJ0OiBpbnNlcnRlZFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiBhbmNob3IgfSxcblx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHRoaXMuc2V0dGluZ3MuUHVuY1JlY3RpZnkgJiYgY2hpbmVzZUVuZEZsYWcgJiYgdGhpcy5jb21wb3NlX2JlZ2luX3BvcyA+IDEgJiZcblx0XHRcdFx0XHQvWywuPyFdLy50ZXN0KHVwZGF0ZS52aWV3LnN0YXRlLmRvYy5zbGljZVN0cmluZyh0aGlzLmNvbXBvc2VfYmVnaW5fcG9zIC0gMSwgdGhpcy5jb21wb3NlX2JlZ2luX3BvcykpKSB7XG5cdFx0XHRcdFx0bGV0IHB1bmMgPSB1cGRhdGUudmlldy5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcodGhpcy5jb21wb3NlX2JlZ2luX3BvcyAtIDEsIHRoaXMuY29tcG9zZV9iZWdpbl9wb3MpXG5cdFx0XHRcdFx0aWYgKHRoaXMuY29tcG9zZV9iZWdpbl9wb3MgPiAyICYmXG5cdFx0XHRcdFx0XHQvW1xcc1xcblxcd10vLnRlc3QodXBkYXRlLnZpZXcuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRoaXMuY29tcG9zZV9iZWdpbl9wb3MgLSAyLCB0aGlzLmNvbXBvc2VfYmVnaW5fcG9zIC0gMSkpKSB7IH1cblx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdHVwZGF0ZS52aWV3LmRpc3BhdGNoKHtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlczoge1xuXHRcdFx0XHRcdFx0XHRcdGZyb206IHRoaXMuY29tcG9zZV9iZWdpbl9wb3MgLSAxLFxuXHRcdFx0XHRcdFx0XHRcdHRvOiB0aGlzLmNvbXBvc2VfYmVnaW5fcG9zLFxuXHRcdFx0XHRcdFx0XHRcdGluc2VydDogdGhpcy5oYWxmVG9GdWxsU3ltYm9sTWFwLmdldChwdW5jKVxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHQvLyBzZWxlY3Rpb246IHsgYW5jaG9yOiB0b0IgLSBydWxlLmJlZm9yZS5sZWZ0Lmxlbmd0aCArIHJ1bGUuYWZ0ZXIubGVmdC5sZW5ndGggfSxcblx0XHRcdFx0XHRcdFx0dXNlckV2ZW50OiBcIkVhc3lUeXBpbmcuY2hhbmdlXCJcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gXHU1MjI0XHU2NUFEXHU2ODNDXHU1RjBGXHU1MzE2XHU2NTg3XHU2NzJDXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKFwicmVhZHkgdG8gZm9ybWF0XCIpO1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhcImNoZWNrIGlzIGV4Y2x1ZSBmaWxlOlwiLCBpc0V4Y2x1ZGVGaWxlKVxuXHRcdFx0XHRpZiAodGhpcy5zZXR0aW5ncy5BdXRvRm9ybWF0ICYmIG5vdFNlbGVjdGVkICYmICFpc0V4Y2x1ZGVGaWxlICYmXG5cdFx0XHRcdFx0IChjaGFuZ2VUeXBlICE9ICdub25lJyB8fCBpbnNlcnRlZFN0cj09XCJcXG5cIikpIHtcblx0XHRcdFx0XHRcblx0XHRcdFx0XHRpZiAoZ2V0UG9zTGluZVR5cGUodXBkYXRlLnZpZXcuc3RhdGUsIGZyb21CKSA9PSBMaW5lVHlwZS50ZXh0IHx8IGdldFBvc0xpbmVUeXBlKHVwZGF0ZS52aWV3LnN0YXRlLCBmcm9tQikgPT0gTGluZVR5cGUudGFibGUpe1xuXHRcdFx0XHRcdFx0bGV0IGNoYW5nZXMgPSB0aGlzLkZvcm1hdGVyLmZvcm1hdExpbmVPZkRvYyh1cGRhdGUuc3RhdGUsIHRoaXMuc2V0dGluZ3MsIGZyb21CLCBjdXJzb3IuYW5jaG9yLCBpbnNlcnRlZFN0cik7XG5cdFx0XHRcdFx0XHRpZiAoY2hhbmdlcyAhPSBudWxsKSB7XG5cdFx0XHRcdFx0XHRcdHVwZGF0ZS52aWV3LmRpc3BhdGNoKC4uLmNoYW5nZXNbMF0pO1xuXHRcdFx0XHRcdFx0XHR1cGRhdGUudmlldy5kaXNwYXRjaChjaGFuZ2VzWzFdKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBcdTdDOThcdThEMzRcdTY1RjZcdTgxRUFcdTUyQThcdTY4M0NcdTVGMEZcdTUzMTZcblx0XHRcdGlmICh0aGlzLnNldHRpbmdzLkF1dG9Gb3JtYXQgJiYgIWlzRXhjbHVkZUZpbGUgJiYgY2hhbmdlVHlwZSA9PSBcImlucHV0LnBhc3RlXCIgJiYgIVBsYXRmb3JtLmlzSW9zQXBwKSB7XG5cdFx0XHRcdGxldCB1cGRhdGVMaW5lU3RhcnQgPSB1cGRhdGUuc3RhdGUuZG9jLmxpbmVBdChmcm9tQikubnVtYmVyO1xuXHRcdFx0XHRsZXQgdXBkYXRlTGluZUVuZCA9IHVwZGF0ZS5zdGF0ZS5kb2MubGluZUF0KHRvQikubnVtYmVyO1xuXHRcdFx0XHRpZiAodXBkYXRlTGluZVN0YXJ0ID09IHVwZGF0ZUxpbmVFbmQgJiYgZ2V0UG9zTGluZVR5cGUodXBkYXRlLnZpZXcuc3RhdGUsIHRvQikgPT0gTGluZVR5cGUudGV4dCkge1xuXHRcdFx0XHRcdGxldCBjaGFuZ2VzID0gdGhpcy5Gb3JtYXRlci5mb3JtYXRMaW5lT2ZEb2ModXBkYXRlLnN0YXRlLCB0aGlzLnNldHRpbmdzLCBmcm9tQiwgdG9CLCBpbnNlcnRlZFN0cik7XG5cdFx0XHRcdFx0aWYgKGNoYW5nZXMgIT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0dXBkYXRlLnZpZXcuZGlzcGF0Y2goLi4uY2hhbmdlc1swXSk7XG5cdFx0XHRcdFx0XHQvLyB1cGRhdGUudmlldy5kaXNwYXRjaChjaGFuZ2VzWzFdKTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0bGV0IGFsbF9jaGFuZ2VzOiBUcmFuc2FjdGlvblNwZWNbXSA9IFtdO1xuXHRcdFx0XHRcdGxldCBpbnNlcnRlZF9hcnJheSA9IGluc2VydGVkU3RyLnNwbGl0KFwiXFxuXCIpO1xuXHRcdFx0XHRcdGxldCB1cGRhdGVfc3RhcnQgPSBmcm9tQlxuXHRcdFx0XHRcdGZvciAobGV0IGkgPSB1cGRhdGVMaW5lU3RhcnQ7IGkgPD0gdXBkYXRlTGluZUVuZDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRsZXQgcmVhbF9pbnNlcnRlZCA9IGluc2VydGVkX2FycmF5W2kgLSB1cGRhdGVMaW5lU3RhcnRdO1xuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ3JlYWxfaW5zZXJ0ZWQnLCByZWFsX2luc2VydGVkLnJlcGxhY2UoL1xcbi9nLCAnXFxcXG4nKSlcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCd1cGRhdGVfZG9jX3RleHQnLCB1cGRhdGUuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHVwZGF0ZV9zdGFydCwgdXBkYXRlX3N0YXJ0ICsgcmVhbF9pbnNlcnRlZC5sZW5ndGgpLnJlcGxhY2UoL1xcbi9nLCAnXFxcXG4nKSlcblx0XHRcdFx0XHRcdGxldCBjaGFuZ2VzID0gdGhpcy5Gb3JtYXRlci5mb3JtYXRMaW5lT2ZEb2ModXBkYXRlLnN0YXRlLCB0aGlzLnNldHRpbmdzLCB1cGRhdGVfc3RhcnQsIHVwZGF0ZV9zdGFydCArIHJlYWxfaW5zZXJ0ZWQubGVuZ3RoLCByZWFsX2luc2VydGVkKTtcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCdjaGFuZ2VzJywgY2hhbmdlcylcblx0XHRcdFx0XHRcdGlmIChjaGFuZ2VzICE9IG51bGwpIHtcblx0XHRcdFx0XHRcdFx0YWxsX2NoYW5nZXMucHVzaCguLi5jaGFuZ2VzWzBdKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHVwZGF0ZV9zdGFydCArPSByZWFsX2luc2VydGVkLmxlbmd0aCArIDE7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChhbGxfY2hhbmdlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHR1cGRhdGUudmlldy5kaXNwYXRjaCguLi5hbGxfY2hhbmdlcyk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XHQvLyBpdGVyY2hhbmdlcyBlbmRcblx0fVxuXG5cdHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlVGFiRG93biA9ICh2aWV3OiBFZGl0b3JWaWV3KSA9PiB7XG5cdFx0aWYgKCF0aGlzLnNldHRpbmdzLlRhYm91dCkgcmV0dXJuIGZhbHNlO1xuXG5cdFx0bGV0IHN0YXRlID0gdmlldy5zdGF0ZTtcblx0XHRsZXQgZG9jID0gc3RhdGUuZG9jXG5cdFx0Y29uc3QgdHJlZSA9IHN5bnRheFRyZWUoc3RhdGUpO1xuXHRcdGNvbnN0IHMgPSB2aWV3LnN0YXRlLnNlbGVjdGlvbjtcblx0XHRpZiAocy5yYW5nZXMubGVuZ3RoID4gMSkgcmV0dXJuIGZhbHNlO1xuXHRcdGNvbnN0IHBvcyA9IHMubWFpbi50bztcblx0XHRsZXQgbGluZSA9IGRvYy5saW5lQXQocG9zKVxuXG5cdFx0Ly8gRGVidWcgaW5mb1xuXHRcdC8vIGNvbnNvbGUubG9nKGxpbmUudGV4dClcblx0XHQvLyBmb3IgKGxldCBwPWxpbmUuZnJvbTsgcDw9bGluZS50bzsgcCs9MSl7XG5cdFx0Ly8gXHRjb25zdCB0b2tlbiA9IHRyZWUucmVzb2x2ZShwLCAxKS5uYW1lXG5cdFx0Ly8gXHRjb25zb2xlLmxvZyhwLWxpbmUuZnJvbSwgdG9rZW4pXG5cdFx0Ly8gfVxuXHRcdC8vIHJldHVybiB0cnVlO1xuXG5cdFx0aWYgKHMubWFpbi5mcm9tPT1zLm1haW4udG8gJiYgZ2V0UG9zTGluZVR5cGUodmlldy5zdGF0ZSwgcy5tYWluLmZyb20pID09IExpbmVUeXBlLmNvZGVibG9jayl7XG5cdFx0XHR2aWV3LmRpc3BhdGNoKHtcblx0XHRcdFx0Y2hhbmdlczoge1xuXHRcdFx0XHRcdGZyb206IHMubWFpbi5mcm9tLFxuXHRcdFx0XHRcdGluc2VydDogdGhpcy5vYnNpZGlhblNldHRpbmdzLmdldERlZmF1bHRJbmRlbnRDaGFycygpXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNlbGVjdGlvbjoge1xuXHRcdFx0XHRcdGFuY2hvcjogcy5tYWluLmZyb20gKyB0aGlzLm9ic2lkaWFuU2V0dGluZ3MuZ2V0RGVmYXVsdEluZGVudENoYXJzKCkubGVuZ3RoXG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0Ly8gcmV0dXJuIHRydWU7XG5cblx0XHQvLyBcdTVGNTNcdTUxNDlcdTY4MDdcdTU3MjhcdTg4NENcdTUxODVcdTRFRTNcdTc4MDFcdTUxODVcdTkwRThcblx0XHRpZiAocG9zIC0gbGluZS5mcm9tICE9IDAgJiYgdHJlZS5yZXNvbHZlKHBvcyAtIDEsIDEpLm5hbWUuY29udGFpbnMoJ2lubGluZS1jb2RlJykpIHtcblx0XHRcdGlmICh0cmVlLnJlc29sdmUocG9zLCAxKS5uYW1lLmNvbnRhaW5zKCdmb3JtYXR0aW5nLWNvZGVfaW5saW5lLWNvZGUnKSkge1xuXHRcdFx0XHR2aWV3LmRpc3BhdGNoKHtcblx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiBwb3MgKyAxLCBoZWFkOiBwb3MgKyAxIH1cblx0XHRcdFx0fSlcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cblx0XHRcdGZvciAobGV0IHAgPSBwb3MgKyAxOyBwIDwgbGluZS50byAmJiB0cmVlLnJlc29sdmUocCwgMSkubmFtZS5jb250YWlucygnaW5saW5lLWNvZGUnKTsgcCArPSAxKSB7XG5cdFx0XHRcdC8vIFx1NTk4Mlx1Njc5Q1x1NjI3RVx1NTIzMCBgIFx1NTIxOVx1NTE0OVx1NjgwN1x1OERGM1x1NTIzMFx1NTE3Nlx1NTQwRVxuXHRcdFx0XHRpZiAodHJlZS5yZXNvbHZlKHAsIDEpLm5hbWUuY29udGFpbnMoJ2Zvcm1hdHRpbmctY29kZV9pbmxpbmUtY29kZScpKSB7XG5cdFx0XHRcdFx0dmlldy5kaXNwYXRjaCh7XG5cdFx0XHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiBwLCBoZWFkOiBwIH1cblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIFx1NTk4Mlx1Njc5Q1x1NkNBMVx1NjI3RVx1NTIzMCBgIFx1NTIxOVx1NzZGNFx1NjNBNVx1OERGM1x1NTIzMFx1ODg0Q1x1NUMzRVxuXHRcdFx0XHRpZiAocCA9PSBsaW5lLnRvIC0gMSAmJiB0cmVlLnJlc29sdmUocCwgMSkubmFtZS5jb250YWlucygnaW5saW5lLWNvZGUnKSkge1xuXHRcdFx0XHRcdHZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0XHRcdFx0c2VsZWN0aW9uOiB7IGFuY2hvcjogcCArIDEsIGhlYWQ6IHAgKyAxIH1cblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gXHU1RjUzXHU1MTQ5XHU2ODA3XHU1NzI4XHU4ODRDXHU1MTg1XHU0RUUzXHU3ODAxXHU1OTE2XHU5MEU4XHVGRjBDXHU1RTc2XHU1NzI4XHU5MDA5XHU0RTJEXHU2NTg3XHU2NzJDXHU3Njg0XHU2MEM1XHU1MUI1XHU0RTBCXHVGRjBDdGFiXHU1QzA2XHU0RjFBXHU4REYzXHU1MUZBXHU1MjMwcGFpcnN0cmluZ1x1NzY4NFx1NTkxNlx1OTBFOFxuXHRcdGxldCBzZWxlY3Rpb24gPSB2aWV3LnN0YXRlLnNlbGVjdGlvbi5hc1NpbmdsZSgpLm1haW47XG5cdFx0bGV0IHNlbGVjdGVkID0gc2VsZWN0aW9uLmFuY2hvciAhPSBzZWxlY3Rpb24uaGVhZDtcblx0XHRpZiAoc2VsZWN0ZWQpe1xuXHRcdFx0bGV0IG5ld19hbmNob3IgPSBzZWxlY3Rpb24uYW5jaG9yPHNlbGVjdGlvbi5oZWFkP3NlbGVjdGlvbi5hbmNob3I6c2VsZWN0aW9uLmhlYWQ7XG5cdFx0XHRsZXQgbmV3X2hlYWQgPSBzZWxlY3Rpb24uYW5jaG9yPnNlbGVjdGlvbi5oZWFkP3NlbGVjdGlvbi5hbmNob3I6c2VsZWN0aW9uLmhlYWQ7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhcInNlbGVjdGlvblwiLCBzZWxlY3Rpb24uYW5jaG9yLCBzZWxlY3Rpb24uaGVhZClcblxuXHRcdFx0Zm9yIChsZXQgcHN0ciBvZiB0aGlzLlRhYm91dFBhaXJTdHJzKXtcblx0XHRcdFx0aWYgKGRvYy5zbGljZVN0cmluZyhuZXdfYW5jaG9yLXBzdHIubGVmdC5sZW5ndGgsIG5ld19hbmNob3IpID09IHBzdHIubGVmdCAmJlxuXHRcdFx0XHRcdGRvYy5zbGljZVN0cmluZyhuZXdfaGVhZCwgbmV3X2hlYWQrcHN0ci5yaWdodC5sZW5ndGgpID09IHBzdHIucmlnaHQpe1xuXHRcdFx0XHRcdFx0dmlldy5kaXNwYXRjaCh7XG5cdFx0XHRcdFx0XHRcdHNlbGVjdGlvbjogeyBhbmNob3I6IG5ld19oZWFkK3BzdHIucmlnaHQubGVuZ3RoLCBoZWFkOiBuZXdfaGVhZCtwc3RyLnJpZ2h0Lmxlbmd0aCB9XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cHJpdmF0ZSByZWFkb25seSBoYW5kbGVFbnRlciA9ICh2aWV3OiBFZGl0b3JWaWV3KSA9PiB7XG5cdFx0Ly8gY29uc29sZS5sb2coXCJ0aGlzLnNldHRpbmdzLkVudGVyVHdpY2VcIiwgdGhpcy5zZXR0aW5ncy5FbnRlclR3aWNlKVxuXHRcdGlmICghdGhpcy5zZXR0aW5ncy5FbnRlclR3aWNlKSByZXR1cm4gZmFsc2U7XG5cblx0XHQvLyBjb25zdCBiYXNlUGF0aCA9ICh0aGlzLmFwcC52YXVsdC5hZGFwdGVyIGFzIGFueSkuYmFzZVBhdGhcblx0XHQvLyBsZXQgY29uZmlnX3BhdGggPSBiYXNlUGF0aCArIFwiL1wiICsgdGhpcy5hcHAudmF1bHQuY29uZmlnRGlyICsgXCIvYXBwLmpzb25cIjtcblx0XHQvLyBsZXQgY29uZmlnID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoY29uZmlnX3BhdGgsICd1dGYtOCcpKVxuXHRcdC8vIGxldCBzdHJpY3RMaW5lQnJlYWtzID0gY29uZmlnLnN0cmljdExpbmVCcmVha3MgfHwgZmFsc2U7XG5cdFx0bGV0IHN0cmljdExpbmVCcmVha3MgPSB0aGlzLmFwcC52YXVsdC5nZXRDb25maWcoXCJzdHJpY3RMaW5lQnJlYWtzXCIpO1xuXHRcdGlmICghc3RyaWN0TGluZUJyZWFrcykgcmV0dXJuIGZhbHNlO1xuXG5cdFx0bGV0IHN0YXRlID0gdmlldy5zdGF0ZTtcblx0XHRsZXQgZG9jID0gc3RhdGUuZG9jXG5cdFx0Y29uc3QgdHJlZSA9IHN5bnRheFRyZWUoc3RhdGUpO1xuXHRcdGNvbnN0IHMgPSB2aWV3LnN0YXRlLnNlbGVjdGlvbjtcblx0XHRpZiAocy5yYW5nZXMubGVuZ3RoID4gMSkgcmV0dXJuIGZhbHNlO1xuXHRcdGNvbnN0IHBvcyA9IHMubWFpbi50bztcblx0XHRsZXQgbGluZSA9IGRvYy5saW5lQXQocG9zKVxuXG5cdFx0Ly8gY29uc29sZS5sb2cobGluZS50ZXh0LCBnZXRQb3NMaW5lVHlwZTIoc3RhdGUsIHBvcykpXG5cdFx0Ly8gZm9yIChsZXQgcD1saW5lLmZyb207IHA8PWxpbmUudG87IHArPTEpe1xuXHRcdC8vIFx0Y29uc3QgdG9rZW4gPSB0cmVlLnJlc29sdmUocCwgMSkubmFtZVxuXHRcdC8vIFx0Y29uc29sZS5sb2cocC1saW5lLmZyb20sIHRva2VuKVxuXHRcdC8vIH1cblx0XHRpZiAoL15cXHMqJC8udGVzdChsaW5lLnRleHQpKSByZXR1cm4gZmFsc2U7XG5cdFx0ZWxzZSBpZiAoZ2V0UG9zTGluZVR5cGUyKHN0YXRlLCBwb3MpID09IExpbmVUeXBlLnRleHQpIHtcblx0XHRcdHZpZXcuZGlzcGF0Y2goe1xuXHRcdFx0XHRjaGFuZ2VzOiB7XG5cdFx0XHRcdFx0ZnJvbTogcG9zLFxuXHRcdFx0XHRcdHRvOiBwb3MsXG5cdFx0XHRcdFx0aW5zZXJ0OiAnXFxuXFxuJ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRzZWxlY3Rpb246IHsgYW5jaG9yOiBwb3MgKyAyIH0sXG5cdFx0XHRcdHVzZXJFdmVudDogXCJFYXN5VHlwaW5nLmNoYW5nZVwiXG5cdFx0XHR9KVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cHJpdmF0ZSByZWFkb25seSBvbktleXVwID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50LCB2aWV3OiBFZGl0b3JWaWV3KSA9PiB7XG5cdFx0aWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKFwiS2V5dXA6XCIsIGV2ZW50LmtleSwgZXZlbnQuc2hpZnRLZXksIGV2ZW50LmN0cmxLZXl8fGV2ZW50Lm1ldGFLZXkpO1xuXHRcdFx0Y29uc29sZS5sb2coXCJLZXl1cDpcIiwgZXZlbnQua2V5KTtcblx0XHR9XG5cdFx0dGhpcy5oYW5kbGVFbmRDb21wb3NlVHlwZUtleShldmVudCwgdmlldyk7XG5cdH1cblxuXHRoYW5kbGVFbmRDb21wb3NlVHlwZUtleSA9IChldmVudDogS2V5Ym9hcmRFdmVudCwgdmlldzogRWRpdG9yVmlldykgPT4ge1xuXHRcdGlmICghdGhpcy5zZXR0aW5ncy5UcnlGaXhDaGluZXNlSU0pIHJldHVybjtcblx0XHRpZiAoWydFbnRlcicsICdQcm9jZXNzJywgJyAnLCAnU2hpZnQnXS5jb250YWlucyhldmVudC5rZXkpICYmIHRoaXMuc2V0dGluZ3MuQXV0b0Zvcm1hdCAmJlxuXHRcdFx0dGhpcy5jb21wb3NlX25lZWRfaGFuZGxlICYmICF0aGlzLmlzQ3VycmVudEZpbGVFeGNsdWRlKCkpIHtcblx0XHRcdGxldCBjdXJzb3IgPSB2aWV3LnN0YXRlLnNlbGVjdGlvbi5hc1NpbmdsZSgpLm1haW47XG5cdFx0XHRpZiAoZ2V0UG9zTGluZVR5cGUodmlldy5zdGF0ZSwgY3Vyc29yLmFuY2hvcikgIT0gTGluZVR5cGUudGV4dCkgcmV0dXJuO1xuXHRcdFx0aWYgKGN1cnNvci5oZWFkICE9IGN1cnNvci5hbmNob3IpIHJldHVybjtcblx0XHRcdGxldCBpbnNlcnRlZFN0ciA9IHZpZXcuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHRoaXMuY29tcG9zZV9iZWdpbl9wb3MsIGN1cnNvci5hbmNob3IpO1xuXHRcdFx0Ly8gY29uc29sZS5sb2coXCJpbnNlcnRlZCBzdHJcIiwgaW5zZXJ0ZWRTdHIpO1xuXHRcdFx0bGV0IGNoYW5nZXMgPSB0aGlzLkZvcm1hdGVyLmZvcm1hdExpbmVPZkRvYyh2aWV3LnN0YXRlLCB0aGlzLnNldHRpbmdzLFxuXHRcdFx0XHR0aGlzLmNvbXBvc2VfYmVnaW5fcG9zLCBjdXJzb3IuYW5jaG9yLCBpbnNlcnRlZFN0cik7XG5cdFx0XHR0aGlzLmNvbXBvc2VfbmVlZF9oYW5kbGUgPSBmYWxzZTtcblx0XHRcdGlmIChjaGFuZ2VzICE9IG51bGwpIHtcblx0XHRcdFx0dmlldy5kaXNwYXRjaCguLi5jaGFuZ2VzWzBdKTtcblx0XHRcdFx0dmlldy5kaXNwYXRjaChjaGFuZ2VzWzFdKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGZvcm1hdEFydGljbGUgPSAoZWRpdG9yOiBFZGl0b3IsIHZpZXc6IE1hcmtkb3duVmlldyk6IHZvaWQgPT4ge1xuXHRcdC8vIEB0cy1leHBlY3QtZXJyb3IsIG5vdCB0eXBlZFxuXHRcdGNvbnN0IGVkaXRvclZpZXcgPSBlZGl0b3IuY20gYXMgRWRpdG9yVmlldztcblx0XHRjb25zdCB0cmVlID0gZW5zdXJlU3ludGF4VHJlZShlZGl0b3JWaWV3LnN0YXRlLCBlZGl0b3JWaWV3LnN0YXRlLmRvYy5sZW5ndGgpO1xuXHRcdGlmICghdHJlZSl7XG5cdFx0XHRuZXcgTm90aWNlKCdFYXN5VHlwaW5nOiBTeW50YXggdHJlZSBpcyBub3QgcmVhZHkgeWV0LCBwbGVhc2Ugd2FpdCBhIG1vbWVudCBhbmQgdHJ5IGFnYWluIGxhdGVyIScsIDUwMDApO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHRoaXMub25Gb3JtYXRBcnRpY2xlID0gdHJ1ZTtcblx0XHRcblx0XHRsZXQgbGluZUNvdW50ID0gZWRpdG9yLmxpbmVDb3VudCgpO1xuXHRcdGxldCBuZXdfYXJ0aWNsZSA9IFwiXCI7XG5cdFx0bGV0IGNzID0gZWRpdG9yLmdldEN1cnNvcigpO1xuXHRcdGxldCBjaCA9IDA7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lQ291bnQ7IGkrKykge1xuXHRcdFx0aWYgKGkgIT0gMCkgbmV3X2FydGljbGUgKz0gJ1xcbic7XG5cdFx0XHRpZiAoaSAhPSBjcy5saW5lKSB7XG5cdFx0XHRcdG5ld19hcnRpY2xlICs9IHRoaXMucHJlRm9ybWF0T25lTGluZShlZGl0b3IsIGkgKyAxKVswXTtcblx0XHRcdH1cblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRsZXQgbmV3RGF0YSA9IHRoaXMucHJlRm9ybWF0T25lTGluZShlZGl0b3IsIGkgKyAxLCBjcy5jaCk7XG5cdFx0XHRcdG5ld19hcnRpY2xlICs9IG5ld0RhdGFbMF07XG5cdFx0XHRcdGNoID0gbmV3RGF0YVsxXTtcblx0XHRcdH1cblx0XHR9XG5cdFx0ZWRpdG9yLnNldFZhbHVlKG5ld19hcnRpY2xlKTtcblx0XHRlZGl0b3Iuc2V0Q3Vyc29yKHsgbGluZTogY3MubGluZSwgY2g6IGNoIH0pO1xuXG5cdFx0dGhpcy5vbkZvcm1hdEFydGljbGUgPSBmYWxzZTtcblxuXHRcdG5ldyBOb3RpY2UoXCJFYXN5VHlwaW5nOiBGb3JtYXQgQXJ0aWNsZSBEb25lIVwiKTtcblx0fVxuXG5cdGlzQ3VycmVudEZpbGVFeGNsdWRlKCk6IGJvb2xlYW4ge1xuXHRcdGlmICh0aGlzLkN1ckFjdGl2ZU1hcmtkb3duID09IFwiXCIpIHtcblx0XHRcdGxldCBmaWxlID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZUZpbGUoKTtcblx0XHRcdGlmIChmaWxlICE9IG51bGwgJiYgdGhpcy5DdXJBY3RpdmVNYXJrZG93biAhPSBmaWxlLnBhdGgpIHtcblx0XHRcdFx0dGhpcy5DdXJBY3RpdmVNYXJrZG93biA9IGZpbGUucGF0aDtcblx0XHRcdH1cblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0bGV0IGV4Y2x1ZGVQYXRocyA9IHRoaXMuc2V0dGluZ3MuRXhjbHVkZUZpbGVzLnNwbGl0KCdcXG4nKTtcblx0XHRmb3IgKGxldCBlcGF0aCBvZiBleGNsdWRlUGF0aHMpIHtcblx0XHRcdGlmIChlcGF0aC5jaGFyQXQoMCkgPT0gJy8nKSBlcGF0aCA9IGVwYXRoLnN1YnN0cmluZygxKTtcblx0XHRcdGlmICh0aGlzLkN1ckFjdGl2ZU1hcmtkb3duID09IGVwYXRoKSByZXR1cm4gdHJ1ZTtcblx0XHRcdGxldCBsZW4gPSBlcGF0aC5sZW5ndGg7XG5cdFx0XHRpZiAodGhpcy5DdXJBY3RpdmVNYXJrZG93bi5zdWJzdHJpbmcoMCwgbGVuKSA9PSBlcGF0aCAmJiAodGhpcy5DdXJBY3RpdmVNYXJrZG93bi5jaGFyQXQobGVuKSA9PSAnLycgfHwgdGhpcy5DdXJBY3RpdmVNYXJrZG93bi5jaGFyQXQobGVuKSA9PSAnXFxcXCcgfHxcblx0XHRcdFx0ZXBhdGguY2hhckF0KGxlbiAtIDEpID09IFwiL1wiIHx8IGVwYXRoLmNoYXJBdChsZW4gLSAxKSA9PSBcIlxcXFxcIikpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGZvcm1hdFNlbGVjdGlvbk9yQ3VyTGluZSA9IChlZGl0b3I6IEVkaXRvciwgdmlldzogTWFya2Rvd25WaWV3KTogdm9pZCA9PiB7XG5cdFx0aWYgKCFlZGl0b3Iuc29tZXRoaW5nU2VsZWN0ZWQoKSB8fCBlZGl0b3IuZ2V0U2VsZWN0aW9uKCkgPT09ICcnKSB7XG5cdFx0XHRsZXQgbGluZU51bWJlciA9IGVkaXRvci5nZXRDdXJzb3IoKS5saW5lO1xuXHRcdFx0bGV0IG5ld0xpbmVEYXRhID0gdGhpcy5wcmVGb3JtYXRPbmVMaW5lKGVkaXRvciwgbGluZU51bWJlciArIDEsIGVkaXRvci5nZXRDdXJzb3IoKS5jaCk7XG5cdFx0XHRlZGl0b3IucmVwbGFjZVJhbmdlKG5ld0xpbmVEYXRhWzBdLCB7IGxpbmU6IGxpbmVOdW1iZXIsIGNoOiAwIH0sIHsgbGluZTogbGluZU51bWJlciwgY2g6IGVkaXRvci5nZXRMaW5lKGxpbmVOdW1iZXIpLmxlbmd0aCB9KTtcblx0XHRcdGVkaXRvci5zZXRTZWxlY3Rpb24oeyBsaW5lOiBsaW5lTnVtYmVyLCBjaDogbmV3TGluZURhdGFbMV0gfSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGxldCBzZWxlY3Rpb24gPSBlZGl0b3IubGlzdFNlbGVjdGlvbnMoKVswXTtcblx0XHRsZXQgYmVnaW4gPSBzZWxlY3Rpb24uYW5jaG9yLmxpbmU7XG5cdFx0bGV0IGVuZCA9IHNlbGVjdGlvbi5oZWFkLmxpbmU7XG5cdFx0aWYgKGJlZ2luID4gZW5kKSB7XG5cdFx0XHRsZXQgdGVtcCA9IGJlZ2luO1xuXHRcdFx0YmVnaW4gPSBlbmQ7XG5cdFx0XHRlbmQgPSB0ZW1wO1xuXHRcdH1cblx0XHQvLyBjb25zb2xlLmxvZyhiZWdpbiwgZW5kKVxuXHRcdGxldCBuZXdfbGluZXMgPSBcIlwiO1xuXHRcdGZvciAobGV0IGkgPSBiZWdpbjsgaSA8PSBlbmQ7IGkrKykge1xuXHRcdFx0aWYgKGkgIT0gYmVnaW4pIG5ld19saW5lcyArPSAnXFxuJztcblx0XHRcdG5ld19saW5lcyArPSB0aGlzLnByZUZvcm1hdE9uZUxpbmUoZWRpdG9yLCBpICsgMSlbMF07XG5cdFx0fVxuXHRcdGVkaXRvci5yZXBsYWNlUmFuZ2UobmV3X2xpbmVzLCB7IGxpbmU6IGJlZ2luLCBjaDogMCB9LCB7IGxpbmU6IGVuZCwgY2g6IGVkaXRvci5nZXRMaW5lKGVuZCkubGVuZ3RoIH0pO1xuXHRcdGlmIChzZWxlY3Rpb24uYW5jaG9yLmxpbmUgPCBzZWxlY3Rpb24uaGVhZC5saW5lKSB7XG5cdFx0XHRlZGl0b3Iuc2V0U2VsZWN0aW9uKHsgbGluZTogc2VsZWN0aW9uLmFuY2hvci5saW5lLCBjaDogMCB9LCB7IGxpbmU6IHNlbGVjdGlvbi5oZWFkLmxpbmUsIGNoOiBlZGl0b3IuZ2V0TGluZShzZWxlY3Rpb24uaGVhZC5saW5lKS5sZW5ndGggfSk7XG5cdFx0fVxuXHRcdGVsc2Uge1xuXHRcdFx0ZWRpdG9yLnNldFNlbGVjdGlvbih7IGxpbmU6IHNlbGVjdGlvbi5hbmNob3IubGluZSwgY2g6IGVkaXRvci5nZXRMaW5lKHNlbGVjdGlvbi5hbmNob3IubGluZSkubGVuZ3RoIH0sIHsgbGluZTogc2VsZWN0aW9uLmhlYWQubGluZSwgY2g6IDAgfSk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gcGFyYW06IGxpbmVOdW1iZXIgaXMgKDEtYmFzZWQpLCBcdTVFOUZcdTVGMDNcdTUxRkRcdTY1NzBcblx0Zm9ybWF0T25lTGluZSA9IChlZGl0b3I6IEVkaXRvciwgbGluZU51bWJlcjogbnVtYmVyKTogdm9pZCA9PiB7XG5cdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciwgbm90IHR5cGVkXG5cdFx0Y29uc3QgZWRpdG9yVmlldyA9IGVkaXRvci5jbSBhcyBFZGl0b3JWaWV3O1xuXHRcdGxldCBzdGF0ZSA9IGVkaXRvclZpZXcuc3RhdGU7XG5cdFx0bGV0IGxpbmUgPSBzdGF0ZS5kb2MubGluZShsaW5lTnVtYmVyKVxuXG5cdFx0aWYgKGdldFBvc0xpbmVUeXBlKHN0YXRlLCBsaW5lLmZyb20pID09IExpbmVUeXBlLnRleHQgfHwgZ2V0UG9zTGluZVR5cGUoc3RhdGUsIGxpbmUuZnJvbSkgPT0gTGluZVR5cGUudGFibGUpIHtcblx0XHRcdGxldCBvbGRMaW5lID0gbGluZS50ZXh0O1xuXHRcdFx0bGV0IG5ld0xpbmUgPSB0aGlzLkZvcm1hdGVyLmZvcm1hdExpbmUoc3RhdGUsIGxpbmVOdW1iZXIsIHRoaXMuc2V0dGluZ3MsIG9sZExpbmUubGVuZ3RoLCAwKVswXTtcblx0XHRcdGlmIChvbGRMaW5lICE9IG5ld0xpbmUpIHtcblx0XHRcdFx0ZWRpdG9yLnJlcGxhY2VSYW5nZShuZXdMaW5lLCB7IGxpbmU6IGxpbmVOdW1iZXIgLSAxLCBjaDogMCB9LCB7IGxpbmU6IGxpbmVOdW1iZXIgLSAxLCBjaDogb2xkTGluZS5sZW5ndGggfSk7XG5cdFx0XHRcdGVkaXRvci5zZXRDdXJzb3IoeyBsaW5lOiBsaW5lTnVtYmVyIC0gMSwgY2g6IGVkaXRvci5nZXRMaW5lKGxpbmVOdW1iZXIgLSAxKS5sZW5ndGggfSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIHBhcmFtOiBsaW5lTnVtYmVyIGlzICgxLWJhc2VkKVxuXHRwcmVGb3JtYXRPbmVMaW5lID0gKGVkaXRvcjogRWRpdG9yLCBsaW5lTnVtYmVyOiBudW1iZXIsIGNoOiBudW1iZXIgPSAtMSk6IFtzdHJpbmcsIG51bWJlcl0gPT4ge1xuXHRcdC8vIEB0cy1leHBlY3QtZXJyb3IsIG5vdCB0eXBlZFxuXHRcdGNvbnN0IGVkaXRvclZpZXcgPSBlZGl0b3IuY20gYXMgRWRpdG9yVmlldztcblx0XHRsZXQgc3RhdGUgPSBlZGl0b3JWaWV3LnN0YXRlO1xuXHRcdGxldCBsaW5lID0gc3RhdGUuZG9jLmxpbmUobGluZU51bWJlcilcblxuXHRcdGxldCBuZXdMaW5lID0gbGluZS50ZXh0O1xuXHRcdGxldCBuZXdDaCA9IDA7XG5cdFx0bGV0IGN1ckNoID0gbGluZS50ZXh0Lmxlbmd0aDtcblx0XHRpZiAoY2ggIT0gLTEpIHtcblx0XHRcdGN1ckNoID0gY2g7XG5cdFx0fVxuXHRcdGlmIChnZXRQb3NMaW5lVHlwZShzdGF0ZSwgbGluZS5mcm9tKSA9PSBMaW5lVHlwZS50ZXh0IHx8IGdldFBvc0xpbmVUeXBlKHN0YXRlLCBsaW5lLmZyb20pID09IExpbmVUeXBlLnRhYmxlKSB7XG5cdFx0XHRsZXQgbmV3TGluZURhdGEgPSB0aGlzLkZvcm1hdGVyLmZvcm1hdExpbmUoc3RhdGUsIGxpbmVOdW1iZXIsIHRoaXMuc2V0dGluZ3MsIGN1ckNoLCAwKTtcblx0XHRcdG5ld0xpbmUgPSBuZXdMaW5lRGF0YVswXTtcblx0XHRcdG5ld0NoID0gbmV3TGluZURhdGFbMV07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIFtuZXdMaW5lLCBuZXdDaF07XG5cdH1cblxuXHRkZWxldGVCbGFua0xpbmVzID0gKGVkaXRvcjogRWRpdG9yKTogdm9pZCA9PiB7XG5cdFx0aWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIHtcblx0XHRcdGNvbnNvbGUubG9nKHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZyhcInN0cmljdExpbmVCcmVha3NcIikpO1xuXHRcdFx0Ly8gcmV0dXJuO1xuXHRcdH1cblx0XHRsZXQgc3RyaWN0TGluZUJyZWFrcyA9IHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZyhcInN0cmljdExpbmVCcmVha3NcIik7XG5cblx0XHQvLyBAdHMtZXhwZWN0LWVycm9yLCBub3QgdHlwZWRcblx0XHRjb25zdCBlZGl0b3JWaWV3ID0gZWRpdG9yLmNtIGFzIEVkaXRvclZpZXc7XG5cdFx0bGV0IHN0YXRlID0gZWRpdG9yVmlldy5zdGF0ZTtcblx0XHRsZXQgZG9jID0gc3RhdGUuZG9jXG5cdFx0XG5cdFx0Y29uc3QgdHJlZSA9IGVuc3VyZVN5bnRheFRyZWUoc3RhdGUsIGRvYy5sZW5ndGgpO1xuXHRcdGlmICghdHJlZSl7XG5cdFx0XHRuZXcgTm90aWNlKCdFYXN5VHlwaW5nOiBTeW50YXggdHJlZSBpcyBub3QgcmVhZHkgeWV0LCBwbGVhc2Ugd2FpdCBhIG1vbWVudCBhbmQgdHJ5IGFnYWluIGxhdGVyIScsIDUwMDApO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRcblx0XHRsZXQgc3RhcnRfbGluZSA9IDE7XG5cdFx0bGV0IGVuZF9saW5lID0gZG9jLmxpbmVzO1xuXHRcdGxldCBsaW5lX251bSA9IGRvYy5saW5lcztcblx0XHRjb25zdCBzZWxlY3RlZCA9IGVkaXRvci5zb21ldGhpbmdTZWxlY3RlZCgpICYmIGVkaXRvci5nZXRTZWxlY3Rpb24oKSAhPSAnJztcblx0XHRpZiAoc2VsZWN0ZWQpIHtcblx0XHRcdGxldCBzZWxlY3Rpb24gPSBlZGl0b3IubGlzdFNlbGVjdGlvbnMoKVswXTtcblx0XHRcdGxldCBiZWdpbiA9IHNlbGVjdGlvbi5hbmNob3IubGluZSArIDE7XG5cdFx0XHRsZXQgZW5kID0gc2VsZWN0aW9uLmhlYWQubGluZSArIDE7XG5cdFx0XHRpZiAoYmVnaW4gPiBlbmQpIHtcblx0XHRcdFx0bGV0IHRlbXAgPSBiZWdpbjtcblx0XHRcdFx0YmVnaW4gPSBlbmQ7XG5cdFx0XHRcdGVuZCA9IHRlbXA7XG5cdFx0XHR9XG5cdFx0XHRzdGFydF9saW5lID0gYmVnaW47XG5cdFx0XHRlbmRfbGluZSA9IGVuZFxuXHRcdH1cblxuXHRcdC8vIGlmKHRoaXMuc2V0dGluZ3MuZGVidWcpe1xuXHRcdC8vIFx0bGV0IGxpbmVfaW5kZXggPSBlZGl0b3IuZ2V0Q3Vyc29yKCkubGluZSArIDE7XG5cdFx0Ly8gXHRsZXQgY29udGVudCA9IGVkaXRvci5nZXRMaW5lKGVkaXRvci5nZXRDdXJzb3IoKS5saW5lKTtcblx0XHQvLyBcdGNvbnNvbGUubG9nKGNvbnRlbnQpO1xuXHRcdC8vIFx0Zm9yIChsZXQgaT0wO2k8Y29udGVudC5sZW5ndGg7aSsrKXtcblx0XHQvLyBcdFx0bGV0IG5vZGUgPSB0cmVlLnJlc29sdmUoZG9jLmxpbmUobGluZV9pbmRleCkuZnJvbStpLCAxKTtcblx0XHQvLyBcdFx0Y29uc29sZS5sb2coaSwgbm9kZS5uYW1lKVxuXHRcdC8vIFx0fVxuXHRcdC8vIFx0cmV0dXJuO1xuXHRcdC8vIH1cblxuXHRcdGxldCBkZWxldGVfaW5kZXg6IG51bWJlcltdID0gW107XG5cdFx0bGV0IGJsYW5rX3JlZyA9IC9eXFxzKiQvO1xuXHRcdGxldCByZW1haW5fbmV4dF9ibGFuayA9IGZhbHNlO1xuXG5cdFx0aWYgKHN0YXJ0X2xpbmUgIT0gMSkge1xuXHRcdFx0bGV0IG5vZGUgPSB0cmVlLnJlc29sdmUoZG9jLmxpbmUoc3RhcnRfbGluZSAtIDEpLmZyb20sIDEpO1xuXHRcdFx0aWYgKG5vZGUubmFtZS5jb250YWlucygnbGlzdCcpIHx8IG5vZGUubmFtZS5jb250YWlucygncXVvdGUnKSB8fCBub2RlLm5hbWUuY29udGFpbnMoJ2Jsb2NraWQnKSkge1xuXHRcdFx0XHRyZW1haW5fbmV4dF9ibGFuayA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChlbmRfbGluZSAhPSBsaW5lX251bSAmJiAhYmxhbmtfcmVnLnRlc3QoZG9jLmxpbmUoZW5kX2xpbmUgKyAxKS50ZXh0KSkge1xuXHRcdFx0ZW5kX2xpbmUgKz0gMTtcblx0XHR9XG5cblx0XHRmb3IgKGxldCBpID0gc3RhcnRfbGluZTsgaSA8PSBlbmRfbGluZTsgaSsrKSB7XG5cdFx0XHRsZXQgbGluZSA9IGRvYy5saW5lKGkpO1xuXHRcdFx0bGV0IHBvcyA9IGxpbmUuZnJvbTtcblx0XHRcdGxldCBub2RlID0gdHJlZS5yZXNvbHZlKHBvcywgMSk7XG5cblx0XHRcdC8vIFx1NUJGOVx1NEU4RVx1N0E3QVx1NzY3RFx1ODg0Q1xuXHRcdFx0aWYgKGJsYW5rX3JlZy50ZXN0KGxpbmUudGV4dCkgJiYgIXJlbWFpbl9uZXh0X2JsYW5rKSB7XG5cdFx0XHRcdGRlbGV0ZV9pbmRleC5wdXNoKGkpO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdGVsc2UgaWYgKGJsYW5rX3JlZy50ZXN0KGxpbmUudGV4dCkgJiYgcmVtYWluX25leHRfYmxhbmspIHtcblx0XHRcdFx0cmVtYWluX25leHRfYmxhbmsgPSBmYWxzZTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChub2RlLm5hbWUuY29udGFpbnMoJ2hyJykgJiYgZGVsZXRlX2luZGV4W2RlbGV0ZV9pbmRleC5sZW5ndGggLSAxXSA9PSBpIC0gMSkge1xuXHRcdFx0XHRkZWxldGVfaW5kZXgucG9wKClcblx0XHRcdH1cblx0XHRcdGVsc2UgaWYgKG5vZGUubmFtZS5jb250YWlucygnbGlzdCcpIHx8IG5vZGUubmFtZS5jb250YWlucygncXVvdGUnKSB8fCBub2RlLm5hbWUuY29udGFpbnMoJ2Jsb2NraWQnKSkge1xuXHRcdFx0XHRyZW1haW5fbmV4dF9ibGFuayA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0cmVtYWluX25leHRfYmxhbmsgPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gY29uc29sZS5sb2coXCJkZWxldGVfaW5kZXhcIixkZWxldGVfaW5kZXgpXG5cdFx0bGV0IG5ld0NvbnRlbnQgPSBcIlwiO1xuXHRcdGZvciAobGV0IGkgPSAxOyBpIDwgbGluZV9udW07IGkrKykge1xuXHRcdFx0aWYgKCFkZWxldGVfaW5kZXguY29udGFpbnMoaSkpIHtcblx0XHRcdFx0bmV3Q29udGVudCArPSBkb2MubGluZShpKS50ZXh0ICsgJ1xcbic7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmICghZGVsZXRlX2luZGV4LmNvbnRhaW5zKGxpbmVfbnVtKSkge1xuXHRcdFx0bmV3Q29udGVudCArPSBkb2MubGluZShsaW5lX251bSkudGV4dFxuXHRcdH1cblxuXHRcdGVkaXRvci5zZXRWYWx1ZShuZXdDb250ZW50KTtcblx0XHQvLyB0aGlzLkNvbnRlbnRQYXJzZXIucmVwYXJzZShlZGl0b3IuZ2V0VmFsdWUoKSwgMCk7XG5cdH1cblxuXHRzd2l0Y2hBdXRvRm9ybWF0dGluZygpIHtcblx0XHR0aGlzLnNldHRpbmdzLkF1dG9Gb3JtYXQgPSAhdGhpcy5zZXR0aW5ncy5BdXRvRm9ybWF0O1xuXHRcdGxldCBzdGF0dXMgPSB0aGlzLnNldHRpbmdzLkF1dG9Gb3JtYXQgPyAnb24nIDogJ29mZic7XG5cdFx0bmV3IE5vdGljZSgnRWFzeVR5cGluZzogQXV0b2Zvcm1hdCBpcyAnICsgc3RhdHVzICsgJyEnKTtcblx0fVxuXG5cdGNvbnZlcnQyQ29kZUJsb2NrKGVkaXRvcjogRWRpdG9yKSB7XG5cdFx0aWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIGNvbnNvbGUubG9nKFwiLS0tLS0gRWFzeVR5cGluZzogaW5zZXJ0IGNvZGUgYmxvY2stLS0tLVwiKTtcblx0XHRpZiAoZWRpdG9yLnNvbWV0aGluZ1NlbGVjdGVkICYmIGVkaXRvci5nZXRTZWxlY3Rpb24oKSAhPSBcIlwiKSB7XG5cdFx0XHRsZXQgc2VsZWN0ZWQgPSBlZGl0b3IuZ2V0U2VsZWN0aW9uKCk7XG5cdFx0XHRsZXQgc2VsZWN0ZWRSYW5nZSA9IGVkaXRvci5saXN0U2VsZWN0aW9ucygpWzBdO1xuXHRcdFx0bGV0IGFuY2hvciA9IHNlbGVjdGVkUmFuZ2UuYW5jaG9yO1xuXHRcdFx0bGV0IGhlYWQgPSBzZWxlY3RlZFJhbmdlLmhlYWQ7XG5cblx0XHRcdGxldCByZXBsYWNlbWVudCA9IFwiYGBgXFxuXCIgKyBzZWxlY3RlZCArIFwiXFxuYGBgXCI7XG5cdFx0XHQvLyBtYWtlIHN1cmUgYW5jaG9yIDwgaGVhZFxuXHRcdFx0aWYgKGFuY2hvci5saW5lID4gaGVhZC5saW5lIHx8IChhbmNob3IubGluZSA9PSBoZWFkLmxpbmUgJiYgYW5jaG9yLmNoID4gaGVhZC5jaCkpIHtcblx0XHRcdFx0bGV0IHRlbXAgPSBhbmNob3I7XG5cdFx0XHRcdGFuY2hvciA9IGhlYWQ7XG5cdFx0XHRcdGhlYWQgPSB0ZW1wO1xuXHRcdFx0fVxuXHRcdFx0bGV0IGRzdExpbmUgPSBhbmNob3IubGluZTtcblx0XHRcdGlmIChhbmNob3IuY2ggIT0gMCkge1xuXHRcdFx0XHRyZXBsYWNlbWVudCA9ICdcXG4nICsgcmVwbGFjZW1lbnQ7XG5cdFx0XHRcdGRzdExpbmUgKz0gMTtcblx0XHRcdH1cblx0XHRcdGlmIChoZWFkLmNoICE9IGVkaXRvci5nZXRMaW5lKGhlYWQubGluZSkubGVuZ3RoKSB7XG5cdFx0XHRcdHJlcGxhY2VtZW50ID0gcmVwbGFjZW1lbnQgKyAnXFxuJztcblx0XHRcdH1cblx0XHRcdGVkaXRvci5yZXBsYWNlU2VsZWN0aW9uKHJlcGxhY2VtZW50KTtcblx0XHRcdGVkaXRvci5zZXRDdXJzb3IoeyBsaW5lOiBkc3RMaW5lLCBjaDogMyB9KTtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHRsZXQgY3MgPSBlZGl0b3IuZ2V0Q3Vyc29yKCk7XG5cdFx0XHRsZXQgcmVwbGFjZSA9IFwiYGBgXFxuYGBgXCI7XG5cdFx0XHRsZXQgZHN0TGluZSA9IGNzLmxpbmU7XG5cdFx0XHRpZiAoY3MuY2ggIT0gMCkge1xuXHRcdFx0XHRyZXBsYWNlID0gXCJcXG5cIiArIHJlcGxhY2U7XG5cdFx0XHRcdGRzdExpbmUgKz0gMTtcblx0XHRcdH1cblx0XHRcdGlmIChjcy5jaCAhPSBlZGl0b3IuZ2V0TGluZShjcy5saW5lKS5sZW5ndGgpIHtcblx0XHRcdFx0cmVwbGFjZSA9IHJlcGxhY2UgKyAnXFxuJztcblx0XHRcdH1cblx0XHRcdGVkaXRvci5yZXBsYWNlUmFuZ2UocmVwbGFjZSwgY3MpO1xuXHRcdFx0ZWRpdG9yLnNldEN1cnNvcih7IGxpbmU6IGRzdExpbmUsIGNoOiAzIH0pO1xuXHRcdH1cblxuXHR9XG5cblx0cmVmcmVzaFNlbGVjdGlvblJlcGxhY2VSdWxlKCkge1xuXHRcdHRoaXMuU2VsZWN0aW9uUmVwbGFjZU1hcCA9IG5ldyBNYXAodGhpcy5zZWxlY3Rpb25SZXBsYWNlTWFwSW5pdGFsRGF0YSk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlci5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IHRyaWdnZXIgPSB0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlcltpXTtcblx0XHRcdGxldCBsZWZ0cyA9IHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVWYWx1ZVtpXS5sZWZ0O1xuXHRcdFx0bGV0IHJpZ2h0cyA9IHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVWYWx1ZVtpXS5yaWdodDtcblxuXHRcdFx0dGhpcy5TZWxlY3Rpb25SZXBsYWNlTWFwLnNldCh0cmlnZ2VyLCB7IGxlZnQ6IGxlZnRzLCByaWdodDogcmlnaHRzIH0pO1xuXHRcdH1cblx0fVxuXG5cdGFkZFVzZXJTZWxlY3Rpb25SZXBSdWxlKHRyaWdnZXI6IHN0cmluZywgbGVmdDogc3RyaW5nLCByaWdodDogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0aWYgKHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVUcmlnZ2VyLmluY2x1ZGVzKHRyaWdnZXIpKSByZXR1cm4gZmFsc2U7XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVRyaWdnZXIucHVzaCh0cmlnZ2VyKVxuXHRcdHRoaXMuc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVWYWx1ZS5wdXNoKHsgbGVmdDogbGVmdCwgcmlnaHQ6IHJpZ2h0IH0pO1xuXHRcdHRoaXMucmVmcmVzaFNlbGVjdGlvblJlcGxhY2VSdWxlKCk7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRkZWxldGVVc2VyU2VsZWN0aW9uUmVwUnVsZShpZHg6IG51bWJlcik6IHZvaWQge1xuXHRcdGlmIChpZHggPCAwIHx8IGlkeCA+PSB0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlci5sZW5ndGgpIHJldHVybjtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVHJpZ2dlci5zcGxpY2UoaWR4LCAxKTtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVmFsdWUuc3BsaWNlKGlkeCwgMSk7XG5cdFx0dGhpcy5yZWZyZXNoU2VsZWN0aW9uUmVwbGFjZVJ1bGUoKTtcblx0fVxuXG5cdHVwZGF0ZVVzZXJTZWxlY3Rpb25SZXBSdWxlKGlkeDogbnVtYmVyLCBsZWZ0OiBzdHJpbmcsIHJpZ2h0OiBzdHJpbmcpIHtcblx0XHRpZiAoaWR4IDwgMCB8fCBpZHggPj0gdGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVRyaWdnZXIubGVuZ3RoKSByZXR1cm47XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVZhbHVlW2lkeF0ubGVmdCA9IGxlZnQ7XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVZhbHVlW2lkeF0ucmlnaHQgPSByaWdodDtcblx0XHR0aGlzLnJlZnJlc2hTZWxlY3Rpb25SZXBsYWNlUnVsZSgpO1xuXHR9XG5cblx0cmVmcmVzaFVzZXJEZWxldGVSdWxlKCkge1xuXHRcdHRoaXMuVXNlckRlbGV0ZVJ1bGVzID0gcnVsZVN0cmluZ0xpc3QyUnVsZUxpc3QodGhpcy5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0KTtcblx0fVxuXG5cdGFkZFVzZXJEZWxldGVSdWxlKGJlZm9yZTogc3RyaW5nLCBhZnRlcjogc3RyaW5nKSB7XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyRGVsZXRlUnVsZXNTdHJMaXN0LnB1c2goW2JlZm9yZSwgYWZ0ZXJdKTtcblx0XHR0aGlzLnJlZnJlc2hVc2VyRGVsZXRlUnVsZSgpO1xuXHR9XG5cblx0ZGVsZXRlVXNlckRlbGV0ZVJ1bGUoaWR4OiBudW1iZXIpIHtcblx0XHRpZiAoaWR4ID49IHRoaXMuc2V0dGluZ3MudXNlckRlbGV0ZVJ1bGVzU3RyTGlzdC5sZW5ndGggfHwgaWR4IDwgMCkgcmV0dXJuO1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlckRlbGV0ZVJ1bGVzU3RyTGlzdC5zcGxpY2UoaWR4LCAxKTtcblx0XHR0aGlzLnJlZnJlc2hVc2VyRGVsZXRlUnVsZSgpO1xuXHR9XG5cblx0dXBkYXRlVXNlckRlbGV0ZVJ1bGUoaWR4OiBudW1iZXIsIGJlZm9yZTogc3RyaW5nLCBhZnRlcjogc3RyaW5nKSB7XG5cdFx0aWYgKGlkeCA+PSB0aGlzLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3QubGVuZ3RoIHx8IGlkeCA8IDApIHJldHVybjtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3RbaWR4XVswXSA9IGJlZm9yZTtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3RbaWR4XVsxXSA9IGFmdGVyO1xuXHRcdHRoaXMucmVmcmVzaFVzZXJEZWxldGVSdWxlKCk7XG5cdH1cblxuXHRyZWZyZXNoVXNlckNvbnZlcnRSdWxlKCkge1xuXHRcdHRoaXMuVXNlckNvbnZlcnRSdWxlcyA9IHJ1bGVTdHJpbmdMaXN0MlJ1bGVMaXN0KHRoaXMuc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3QpO1xuXHR9XG5cblx0YWRkVXNlckNvbnZlcnRSdWxlKGJlZm9yZTogc3RyaW5nLCBhZnRlcjogc3RyaW5nKSB7XG5cdFx0dGhpcy5zZXR0aW5ncy51c2VyQ29udmVydFJ1bGVzU3RyTGlzdC5wdXNoKFtiZWZvcmUsIGFmdGVyXSk7XG5cdFx0dGhpcy5yZWZyZXNoVXNlckNvbnZlcnRSdWxlKCk7XG5cdH1cblxuXHRkZWxldGVVc2VyQ29udmVydFJ1bGUoaWR4OiBudW1iZXIpIHtcblx0XHRpZiAoaWR4ID49IHRoaXMuc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3QubGVuZ3RoIHx8IGlkeCA8IDApIHJldHVybjtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0LnNwbGljZShpZHgsIDEpO1xuXHRcdHRoaXMucmVmcmVzaFVzZXJDb252ZXJ0UnVsZSgpO1xuXHR9XG5cblx0Z2V0Q29tbWFuZE5hbWVNYXAoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG5cdFx0Y29uc3QgbGFuZyA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKTtcblxuXHRcdGxldCBjb21tYW5kX25hbWVfbWFwX2VuID0gbmV3IE1hcChbXG5cdFx0XHRbXCJmb3JtYXRfYXJ0aWNsZVwiLCBcIkZvcm1hdCBjdXJyZW50IGFydGljbGVcIl0sXG5cdFx0XHRbXCJmb3JtYXRfc2VsZWN0aW9uXCIsIFwiRm9ybWF0IHNlbGVjdGVkIHRleHQgb3IgY3VycmVudCBsaW5lXCJdLFxuXHRcdFx0W1wiZGVsZXRlX2JsYW5rX2xpbmVcIiwgXCJEZWxldGUgYmxhbmsgbGluZXMgb2YgdGhlIHNlbGVjdGVkIG9yIHdob2xlIGFydGljbGVcIl0sXG5cdFx0XHRbXCJpbnNlcnRfY29kZWJsb2NrXCIsIFwiSW5zZXJ0IGNvZGUgYmxvY2sgdy93byBzZWxlY3Rpb25cIl0sXG5cdFx0XHRbXCJzd2l0Y2hfYXV0b2Zvcm1hdFwiLCBcIlN3aXRjaCBhdXRvZm9ybWF0XCJdLFxuXHRcdFx0W1wicGFzdGVfd29fZm9ybWF0XCIsIFwiUGFzdGUgd2l0aG91dCBmb3JtYXRcIl0sXG5cdFx0XSk7XG5cblx0XHRsZXQgY29tbWFuZF9uYW1lX21hcF96aF9UVyA9IG5ldyBNYXAoW1xuXHRcdFx0W1wiZm9ybWF0X2FydGljbGVcIiwgXCJcdTY4M0NcdTVGMEZcdTUzMTZcdTUxNjhcdTY1ODdcIl0sXG5cdFx0XHRbXCJmb3JtYXRfc2VsZWN0aW9uXCIsIFwiXHU2ODNDXHU1RjBGXHU1MzE2XHU5MDc4XHU0RTJEXHU5MEU4XHU1MjA2L1x1NzU3Nlx1NTI0RFx1ODg0Q1wiXSxcblx0XHRcdFtcImRlbGV0ZV9ibGFua19saW5lXCIsIFwiXHU1MjJBXHU5NjY0XHU5MDc4XHU0RTJEXHU5MEU4XHU1MjA2L1x1NTE2OFx1NjU4N1x1NzY4NFx1NTkxQVx1OTkxOFx1N0E3QVx1NzY3RFx1ODg0Q1wiXSxcblx0XHRcdFtcImluc2VydF9jb2RlYmxvY2tcIiwgXCJcdTYzRDJcdTUxNjVcdTRFRTNcdTc4QkNcdTU4NEFcIl0sXG5cdFx0XHRbXCJzd2l0Y2hfYXV0b2Zvcm1hdFwiLCBcIlx1NTIwN1x1NjNEQlx1ODFFQVx1NTJENVx1NjgzQ1x1NUYwRlx1NTMxNlx1OTU4Qlx1OTVEQ1wiXSxcblx0XHRcdFtcInBhc3RlX3dvX2Zvcm1hdFwiLCBcIlx1NzEyMVx1NjgzQ1x1NUYwRlx1NTMxNlx1N0M5OFx1OENCQ1wiXSxcblx0XHRdKTtcblxuXHRcdGxldCBjb21tYW5kX25hbWVfbWFwX3poID0gbmV3IE1hcChbXG5cdFx0XHRbXCJmb3JtYXRfYXJ0aWNsZVwiLCBcIlx1NjgzQ1x1NUYwRlx1NTMxNlx1NTE2OFx1NjU4N1wiXSxcblx0XHRcdFtcImZvcm1hdF9zZWxlY3Rpb25cIiwgXCJcdTY4M0NcdTVGMEZcdTUzMTZcdTkwMDlcdTRFMkRcdTkwRThcdTUyMDYvXHU1RjUzXHU1MjREXHU4ODRDXCJdLFxuXHRcdFx0W1wiZGVsZXRlX2JsYW5rX2xpbmVcIiwgXCJcdTUyMkFcdTk2NjRcdTkwMDlcdTRFMkRcdTkwRThcdTUyMDYvXHU1MTY4XHU2NTg3XHU3Njg0XHU1OTFBXHU0RjU5XHU3QTdBXHU3NjdEXHU4ODRDXCJdLFxuXHRcdFx0W1wiaW5zZXJ0X2NvZGVibG9ja1wiLCBcIlx1NjNEMlx1NTE2NVx1NEVFM1x1NzgwMVx1NTc1N1wiXSxcblx0XHRcdFtcInN3aXRjaF9hdXRvZm9ybWF0XCIsIFwiXHU1MjA3XHU2MzYyXHU4MUVBXHU1MkE4XHU2ODNDXHU1RjBGXHU1MzE2XHU1RjAwXHU1MTczXCJdLFxuXHRcdFx0W1wicGFzdGVfd29fZm9ybWF0XCIsIFwiXHU2NUUwXHU2ODNDXHU1RjBGXHU1MzE2XHU3Qzk4XHU4RDM0XCJdLFxuXHRcdF0pO1xuXG5cdFx0bGV0IGNvbW1hbmRfbmFtZV9tYXAgPSBjb21tYW5kX25hbWVfbWFwX2VuO1xuXHRcdGlmIChsYW5nID09ICd6aCcpIHtcblx0XHRcdGNvbW1hbmRfbmFtZV9tYXAgPSBjb21tYW5kX25hbWVfbWFwX3poO1xuXHRcdH1cblx0XHRlbHNlIGlmIChsYW5nID09ICd6aC1UVycpIHtcblx0XHRcdGNvbW1hbmRfbmFtZV9tYXAgPSBjb21tYW5kX25hbWVfbWFwX3poX1RXO1xuXHRcdH1cblxuXHRcdHJldHVybiBjb21tYW5kX25hbWVfbWFwO1xuXHR9XG5cblx0dXBkYXRlVXNlckNvbnZlcnRSdWxlKGlkeDogbnVtYmVyLCBiZWZvcmU6IHN0cmluZywgYWZ0ZXI6IHN0cmluZykge1xuXHRcdGlmIChpZHggPj0gdGhpcy5zZXR0aW5ncy51c2VyQ29udmVydFJ1bGVzU3RyTGlzdC5sZW5ndGggfHwgaWR4IDwgMCkgcmV0dXJuO1xuXHRcdHRoaXMuc2V0dGluZ3MudXNlckNvbnZlcnRSdWxlc1N0ckxpc3RbaWR4XVswXSA9IGJlZm9yZTtcblx0XHR0aGlzLnNldHRpbmdzLnVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0W2lkeF1bMV0gPSBhZnRlcjtcblx0XHR0aGlzLnJlZnJlc2hVc2VyQ29udmVydFJ1bGUoKTtcblx0fVxuXG5cdGdldEVkaXRvciA9ICgpOiBFZGl0b3IgfCBudWxsID0+IHtcblx0XHRsZXQgZWRpdG9yID0gbnVsbDtcblx0XHRsZXQgbWFya2Rvd25WaWV3ID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KTtcblx0XHRpZiAobWFya2Rvd25WaWV3KSB7XG5cdFx0XHRlZGl0b3IgPSBtYXJrZG93blZpZXcuZWRpdG9yO1xuXHRcdH1cblx0XHRpZiAoZWRpdG9yID09PSBudWxsKSBjb25zb2xlLmxvZygnY2FuXFwndCBnZXQgZWRpdG9yJyk7XG5cdFx0cmV0dXJuIGVkaXRvcjtcblx0fVxuXG5cdGFzeW5jIGxvYWRTZXR0aW5ncygpIHtcblx0XHR0aGlzLnNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9TRVRUSU5HUywgYXdhaXQgdGhpcy5sb2FkRGF0YSgpKTtcblx0fVxuXG5cdGFzeW5jIHNhdmVTZXR0aW5ncygpIHtcblx0XHRhd2FpdCB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xuXHR9XG59IiwgImltcG9ydCB7IE5vdGljZX0gZnJvbSBcIm9ic2lkaWFuXCJcbmltcG9ydCB7IEVhc3lUeXBpbmdTZXR0aW5ncywgV29ya01vZGUgfSBmcm9tICcuL3NldHRpbmdzJ1xuaW1wb3J0IHsgQW5ub3RhdGlvbiwgRWRpdG9yU3RhdGUsIEV4dGVuc2lvbiwgU3RhdGVGaWVsZCwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3BlYywgVGV4dCwgTGluZSB9IGZyb20gJ0Bjb2RlbWlycm9yL3N0YXRlJztcbmltcG9ydCB7IG9mZnNldFRvUG9zLCBwb3NUb09mZnNldCwgc3RyaW5nRGVsZXRlQXQsIHN0cmluZ0luc2VydEF0LCBpc1BhcmFtRGVmaW5lZH0gZnJvbSAnLi91dGlscydcbmltcG9ydCB7IHN5bnRheFRyZWUgfSBmcm9tIFwiQGNvZGVtaXJyb3IvbGFuZ3VhZ2VcIjtcbmltcG9ydCB7cHJpbnR9IGZyb20gXCIuL3V0aWxzXCJcblxuZXhwb3J0IGVudW0gTGluZVR5cGUgeyB0ZXh0ID0gJ3RleHQnLCBjb2RlYmxvY2sgPSAnY29kZWJsb2NrJywgZm9ybXVsYSA9ICdmb3JtdWxhJywgXG4gICAgICAgICAgICAgICAgICAgICAgICBub25lID0gJ25vbmUnLCBmcm9udG1hdHRlcj1cImZyb250bWF0dGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBxdW90ZT0ncXVvdGUnLCBjYWxsb3V0X3RpdGxlPSdjYWxsb3V0X3RpdGxlJywgbGlzdD0nbGlzdCcsIHRhYmxlPSAndGFibGUnIH1cblxuZXhwb3J0IGVudW0gU3BhY2VTdGF0ZSB7XG4gICAgbm9uZSxcbiAgICBzb2Z0LFxuICAgIHN0cmljdFxufVxuXG5leHBvcnQgZW51bSBJbmxpbmVUeXBlIHtcbiAgICB0ZXh0ID0gJ3RleHQnLCBjb2RlID0gJ2NvZGUnLCBmb3JtdWxhID0gJ2Zvcm11bGEnLFxuICAgIHdpa2lsaW5rID0gJ3dpa2lsaW5rJywgbWRsaW5rID0gXCJtZGxpbmtcIixcbiAgICB1c2VyID0gJ3VzZXItZGVmaW5lZCcsIG5vbmUgPSAnbm9uZSdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbmxpbmVDaGFuZ2Uge1xuICAgIHRleHQ6IHN0cmluZyxcbiAgICBiZWdpbjogbnVtYmVyLFxuICAgIGVuZDogbnVtYmVyLFxuICAgIG9yaWdpbjogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXJ0aWNsZVBhcnQge1xuICAgIHR5cGU6IExpbmVUeXBlO1xuICAgIGJlZ2luOiBudW1iZXI7XG4gICAgZW5kOiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbmxpbmVQYXJ0IHtcbiAgICBjb250ZW50OiBzdHJpbmc7XG4gICAgdHlwZTogSW5saW5lVHlwZTtcbiAgICBiZWdpbjogbnVtYmVyO1xuICAgIGVuZDogbnVtYmVyO1xuICAgIGxlZnRTcGFjZVJlcXVpcmU6IFNwYWNlU3RhdGU7XG4gICAgcmlnaHRTcGFjZVJlcXVpcmU6IFNwYWNlU3RhdGU7XG59XG5cbmV4cG9ydCBjbGFzcyBMaW5lRm9ybWF0ZXIge1xuICAgIGNvbnN0cnVjdG9yKCkgeyB9XG4gICAgc3ludGF4VHJlZU5vZGVOYW1lVHlwZShuYW1lOnN0cmluZyk6SW5saW5lVHlwZXtcbiAgICAgICAgaWYobmFtZS5jb250YWlucygnY29kZScpICYmICFuYW1lLmNvbnRhaW5zKFwibGlua1wiKSl7XG4gICAgICAgICAgICByZXR1cm4gSW5saW5lVHlwZS5jb2RlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYobmFtZS5jb250YWlucygnbWF0aCcpKXtcbiAgICAgICAgICAgIHJldHVybiBJbmxpbmVUeXBlLmZvcm11bGE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZXtcbiAgICAgICAgICAgIHJldHVybiBJbmxpbmVUeXBlLnRleHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBwYXJhbSBsaW5lTnVtOiAxLWJhc2VkIGxpbmUgbnVtYmVyXG4gICAgcGFyc2VMaW5lV2l0aFN5bnRheFRyZWUoc3RhdGU6IEVkaXRvclN0YXRlLCBsaW5lTnVtOm51bWJlciwgcmVnUmVnRXhwPzogc3RyaW5nKXtcbiAgICAgICAgbGV0IGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGE6IElubGluZVBhcnRbXSA9IFtdO1xuICAgICAgICBsZXQgbGluZSA9IHN0YXRlLmRvYy5saW5lKGxpbmVOdW0pO1xuICAgICAgICBjb25zdCB0cmVlID0gc3ludGF4VHJlZShzdGF0ZSk7XG4gICAgICAgIGxldCBwb3MgPSBsaW5lLmZyb207XG4gICAgICAgIGxldCBwcmV2Tm9kZVR5cGU6SW5saW5lVHlwZSA9IElubGluZVR5cGUubm9uZTtcbiAgICAgICAgbGV0IHByZXZCZWdpbklkeCA9IDA7XG4gICAgICAgIHdoaWxlKHBvczxsaW5lLnRvKXtcbiAgICAgICAgICAgIGxldCBub2RlID0gdHJlZS5yZXNvbHZlKHBvcywgMSk7XG4gICAgICAgICAgICBsZXQgY3VyTm9kZVR5cGUgPSB0aGlzLnN5bnRheFRyZWVOb2RlTmFtZVR5cGUobm9kZS5uYW1lKVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZihwcmV2Tm9kZVR5cGU9PUlubGluZVR5cGUubm9uZSl7XG4gICAgICAgICAgICAgICAgcHJldk5vZGVUeXBlPWN1ck5vZGVUeXBlO1xuICAgICAgICAgICAgICAgIHByZXZCZWdpbklkeD0wO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZihwcmV2Tm9kZVR5cGU9PWN1ck5vZGVUeXBlKXt9XG4gICAgICAgICAgICBlbHNle1xuICAgICAgICAgICAgICAgIGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGEucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6bGluZS50ZXh0LnN1YnN0cmluZyhwcmV2QmVnaW5JZHgsIHBvcy1saW5lLmZyb20pLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOnByZXZOb2RlVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46cHJldkJlZ2luSWR4LFxuICAgICAgICAgICAgICAgICAgICBlbmQ6cG9zLWxpbmUuZnJvbSxcbiAgICAgICAgICAgICAgICAgICAgbGVmdFNwYWNlUmVxdWlyZTpTcGFjZVN0YXRlLm5vbmUsXG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0U3BhY2VSZXF1aXJlOlNwYWNlU3RhdGUubm9uZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgcHJldk5vZGVUeXBlID0gY3VyTm9kZVR5cGU7XG4gICAgICAgICAgICAgICAgcHJldkJlZ2luSWR4ID0gcG9zLWxpbmUuZnJvbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHVwZGF0ZSBuZXh0IHBvc1xuICAgICAgICAgICAgaWYgKGN1ck5vZGVUeXBlID09IElubGluZVR5cGUudGV4dCl7XG4gICAgICAgICAgICAgICAgcG9zKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNle1xuICAgICAgICAgICAgICAgIHBvcyA9IG5vZGUudG87XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmKHBvcz09bGluZS50byl7XG4gICAgICAgICAgICAgICAgbGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDpsaW5lLnRleHQuc3Vic3RyaW5nKHByZXZCZWdpbklkeCwgcG9zLWxpbmUuZnJvbSksXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6cHJldk5vZGVUeXBlLFxuICAgICAgICAgICAgICAgICAgICBiZWdpbjpwcmV2QmVnaW5JZHgsXG4gICAgICAgICAgICAgICAgICAgIGVuZDpwb3MtbGluZS5mcm9tLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0U3BhY2VSZXF1aXJlOlNwYWNlU3RhdGUubm9uZSxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHRTcGFjZVJlcXVpcmU6U3BhY2VTdGF0ZS5ub25lXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcImxpbmUgcGFydHM6IFwiLCBsaW5lUGFydHNPZlR4dENvZGVGb3JtdWxhKTtcbiAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgIGxldCByZXRBcnJheTogSW5saW5lUGFydFtdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGFbaV0udHlwZSAhPSBJbmxpbmVUeXBlLnRleHQpIHtcbiAgICAgICAgICAgICAgICByZXRBcnJheS5wdXNoKGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGFbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IHRlbXBBcnJheTogSW5saW5lUGFydFtdO1xuICAgICAgICAgICAgICAgIGlmIChpc1BhcmFtRGVmaW5lZChyZWdSZWdFeHApKVxuICAgICAgICAgICAgICAgICAgICB0ZW1wQXJyYXkgPSBzcGxpdFRleHRXaXRoTGlua0FuZFVzZXJEZWZpbmVkKGxpbmVQYXJ0c09mVHh0Q29kZUZvcm11bGFbaV0uY29udGVudCwgcmVnUmVnRXhwKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHRlbXBBcnJheSA9IHNwbGl0VGV4dFdpdGhMaW5rQW5kVXNlckRlZmluZWQobGluZVBhcnRzT2ZUeHRDb2RlRm9ybXVsYVtpXS5jb250ZW50KTtcbiAgICBcbiAgICAgICAgICAgICAgICB0ZW1wQXJyYXkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5iZWdpbiArPSBsaW5lUGFydHNPZlR4dENvZGVGb3JtdWxhW2ldLmJlZ2luO1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmVuZCArPSBsaW5lUGFydHNPZlR4dENvZGVGb3JtdWxhW2ldLmJlZ2luO1xuICAgICAgICAgICAgICAgICAgICByZXRBcnJheS5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHJldEFycmF5KVxuICAgICAgICByZXR1cm4gcmV0QXJyYXk7XG4gICAgfVxuXG4gICAgZm9ybWF0TGluZU9mRG9jKHN0YXRlOiBFZGl0b3JTdGF0ZSwgc2V0dGluZ3M6IEVhc3lUeXBpbmdTZXR0aW5ncywgZnJvbUI6IG51bWJlciwgdG9COiBudW1iZXIsIGluc2VydGVkU3RyOiBzdHJpbmcpOiBbVHJhbnNhY3Rpb25TcGVjW10sIFRyYW5zYWN0aW9uU3BlY10gfCBudWxsIHtcbiAgICAgICAgbGV0IGRvYyA9IHN0YXRlLmRvYztcbiAgICAgICAgbGV0IGxpbmUgPSBkb2MubGluZUF0KGZyb21CKS50ZXh0O1xuICAgICAgICBsZXQgcmVzID0gbnVsbFxuICAgICAgICBpZiAoaW5zZXJ0ZWRTdHIuY29udGFpbnMoXCJcXG5cIikpXG4gICAgICAgIHtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdGcm9tQiwgVG9CJywgZnJvbUIsIHRvQilcbiAgICAgICAgICAgIHJlcyA9IHRoaXMuZm9ybWF0TGluZShzdGF0ZSwgZG9jLmxpbmVBdChmcm9tQikubnVtYmVyLCBzZXR0aW5ncywgb2Zmc2V0VG9Qb3MoZG9jLCBmcm9tQikuY2gsIG9mZnNldFRvUG9zKGRvYywgZnJvbUIpLmNoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJlcyA9IHRoaXMuZm9ybWF0TGluZShzdGF0ZSwgZG9jLmxpbmVBdChmcm9tQikubnVtYmVyLCBzZXR0aW5ncywgb2Zmc2V0VG9Qb3MoZG9jLCB0b0IpLmNoLCBvZmZzZXRUb1Bvcyhkb2MsIGZyb21CKS5jaCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcyA9PT1udWxsIHx8IHJlc1syXS5sZW5ndGg9PTApIHJldHVybiBudWxsO1xuICAgICAgICBcbiAgICAgICAgbGV0IG5ld2xpbmUgPSBzdHJpbmdJbnNlcnRBdChyZXNbMF0sIHJlc1sxXSwgXCJ8XCIpO1xuICAgICAgICAvLyBpZiAoc2V0dGluZ3MuZGVidWcpIGNvbnNvbGUubG9nKFwiRWFzeVR5cGluZzogTmV3IExpbmUgU3RyaW5nOlwiLCBuZXdsaW5lKVxuXG4gICAgICAgIGxldCBjaGFuZ2VzOiBUcmFuc2FjdGlvblNwZWNbXSA9IFtdO1xuICAgICAgICBsZXQgb2Zmc2V0ID0gZG9jLmxpbmVBdChmcm9tQikuZnJvbTtcblxuICAgICAgICBmb3IobGV0IGNoYW5nZUl0ZW0gb2YgcmVzWzJdKVxuICAgICAgICB7XG4gICAgICAgICAgICBjaGFuZ2VzLnB1c2goe1xuICAgICAgICAgICAgICAgIGNoYW5nZXM6e2Zyb206IG9mZnNldCtjaGFuZ2VJdGVtLmJlZ2luLCB0bzpvZmZzZXQrY2hhbmdlSXRlbS5lbmQsIGluc2VydDpjaGFuZ2VJdGVtLnRleHR9LCB1c2VyRXZlbnQ6XCJFYXN5VHlwaW5nLmNoYW5nZVwiXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIGlmIChpbnNlcnRlZFN0ci5jb250YWlucyhcIlxcblwiKSl7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImluc2VydFN0clwiLCBpbnNlcnRlZFN0cilcbiAgICAgICAgICAgIHJlc1sxXSs9IGluc2VydGVkU3RyLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW2NoYW5nZXMsIHtzZWxlY3Rpb246e2FuY2hvcjpvZmZzZXQrcmVzWzFdfSwgdXNlckV2ZW50OlwiRWFzeVR5cGluZy5jaGFuZ2VcIn1dO1xuICAgIH1cblxuICAgIC8vIFx1OEZENFx1NTZERVx1NTAzQ1x1RkYxQSBbXHU2NzAwXHU3RUM4XHU3Njg0XHU4ODRDXHVGRjBDXHU2NzAwXHU3RUM4XHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXHVGRjBDXHU1MTg1XHU1QkI5XHU2NTM5XHU1M0Q4XVxuICAgIC8vIHBhcmFtIGxpbmVOdW06IDEtYmFzZWQgbGluZSBudW1iZXJcbiAgICAvLyBjdXJDaDogXHU1MTQ5XHU2ODA3XHU1NzI4XHU1RjUzXHU1MjREXHU4ODRDXHU3Njg0XHU0RjREXHU3RjZFXG4gICAgLy8gcHJldkNoOiBcdTUxNDlcdTY4MDdcdTU3MjhcdTUyNERcdTRFMDBcdTY1RjZcdTUyM0JcdTU3MjhcdTVGNTNcdTUyNERcdTg4NENcdTc2ODRcdTRGNERcdTdGNkVcbiAgICBmb3JtYXRMaW5lKHN0YXRlOiBFZGl0b3JTdGF0ZSwgbGluZU51bTpudW1iZXIsIHNldHRpbmdzOiBFYXN5VHlwaW5nU2V0dGluZ3MsIGN1ckNoOiBudW1iZXIsIHByZXZDaD86IG51bWJlcik6IFtzdHJpbmcsIG51bWJlciwgSW5saW5lQ2hhbmdlW11dIHwgbnVsbCB7XG4gICAgICAgIC8vIG5ldyBOb3RpY2UoXCJmb3JtYXQtbm93XCIpO1xuICAgICAgICBsZXQgbGluZSA9IHN0YXRlLmRvYy5saW5lKGxpbmVOdW0pLnRleHQ7XG4gICAgICAgIGxldCByZWdOdWxsID0gL15cXHMqJC9nO1xuICAgICAgICBpZiAocmVnTnVsbC50ZXN0KGxpbmUpKSByZXR1cm4gW2xpbmUsIGN1ckNoLCBbXV07XG4gICAgICAgIC8vIDEuIFx1NTIxMlx1NTIwNlx1NEUwMFx1ODg0Q1x1NjU4N1x1NUI1N1x1NzY4NFx1NTE4NVx1OTBFOFx1NEUwRFx1NTQwQ1x1NkEyMVx1NTc1N1x1NTMzQVx1NTdERlxuXG4gICAgICAgIGxldCBsaW5lUGFydHMgPSBzZXR0aW5ncy5Vc2VyRGVmaW5lZFJlZ1N3aXRjaFxuICAgICAgICA/IHRoaXMucGFyc2VMaW5lV2l0aFN5bnRheFRyZWUoc3RhdGUsIGxpbmVOdW0sIHNldHRpbmdzLlVzZXJEZWZpbmVkUmVnRXhwKVxuICAgICAgICA6IHRoaXMucGFyc2VMaW5lV2l0aFN5bnRheFRyZWUoc3RhdGUsIGxpbmVOdW0pO1xuICAgICAgICBcbiAgICAgICAgaWYgKHNldHRpbmdzLmRlYnVnKSBjb25zb2xlLmxvZyhcImxpbmUgcGFydHNcXG5cIiwgbGluZVBhcnRzKTtcblxuICAgICAgICAvLyBcdTU5MDdcdTRFRkRcdTUzOUZcdTY3NjVcdTc2ODRsaW5lUGFydHMsIFx1NkRGMVx1NjJGN1x1OEQxRFxuICAgICAgICBsZXQgbGluZVBhcnRzT3JpZ2luID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShsaW5lUGFydHMpKTtcbiAgICAgICAgbGV0IGlubGluZUNoYW5nZUxpc3Q6IElubGluZUNoYW5nZVtdID0gW107XG5cbiAgICAgICAgbGV0IGN1cnNvckxpbmVQYXJ0SW5kZXggPSAtMTtcbiAgICAgICAgbGV0IGN1cnNvclJlbGF0aXZlSW5kZXggPSAtMTtcbiAgICAgICAgbGV0IHJlc3VsdEN1cnNvckNoID0gMDsgICAgIC8vIFx1OEY5M1x1NTFGQVx1NzY4NFx1NTE0OVx1NjgwN1x1NEY0RFx1N0Y2RVxuXG4gICAgICAgIC8vIDIuIFx1NjI3RVx1NTIzMFx1NTE0OVx1NjgwN1x1NjI0MFx1NTcyOFx1NzY4NFx1OTBFOFx1NTIwNlx1RkYwQ1x1NTk4Mlx1Njc5Q1x1NjYyRiBJbmxpbmVQYXJ0LnRleHRcdUZGMENcdTUyMTlcdTU3MjhcdTUxNDlcdTY4MDdcdTU5MDRcdTYzRDJcdTUxNjUnXFwwJ1x1Njc2NVx1NjgwN1x1OEJCMFx1NTE0OVx1NjgwN1x1NEY0RFx1N0Y2RVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVQYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGN1ckNoID4gbGluZVBhcnRzW2ldLmJlZ2luICYmIGN1ckNoIDw9IGxpbmVQYXJ0c1tpXS5lbmQpIHtcbiAgICAgICAgICAgICAgICBjdXJzb3JMaW5lUGFydEluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICBjdXJzb3JSZWxhdGl2ZUluZGV4ID0gY3VyQ2ggLSBsaW5lUGFydHNbaV0uYmVnaW47XG4gICAgICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c1tpXS50eXBlID09PSBJbmxpbmVUeXBlLnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSBzdHJpbmdJbnNlcnRBdChsaW5lUGFydHNbaV0uY29udGVudCwgY3Vyc29yUmVsYXRpdmVJbmRleCwgJ1xcMCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgcmVzdWx0TGluZSA9ICcnO1xuICAgICAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICAgICAgLy8gXHU0RkREXHU1QjU4XHU1MjREXHU0RTAwXHU5MEU4XHU1MjA2XHU3Njg0XHU1MzNBXHU1NzU3XHU3QzdCXHU1NzhCXHVGRjBDSW5saW5lVHlwZS5ub25lIFx1NEVFM1x1ODg2OFx1NEUwMFx1ODg0Q1x1NzY4NFx1NUYwMFx1NTlDQlxuICAgICAgICBsZXQgcHJldlBhcnRUeXBlOiBzdHJpbmcgPSBJbmxpbmVUeXBlLm5vbmU7XG4gICAgICAgIGxldCBwcmV2VGV4dEVuZFNwYWNlU3RhdGUgPSBTcGFjZVN0YXRlLm5vbmU7XG5cbiAgICAgICAgLy8gMy4gXHU5MDREXHU1Mzg2XHU2QkNGXHU0RTJBXHU4ODRDXHU5MEU4XHU1MjA2XHVGRjBDXHU4RkRCXHU4ODRDXHU2ODNDXHU1RjBGXHU1MzE2XHU1OTA0XHU3NDA2XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZVBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAvLyAzLjEgXHU1OTgyXHU2NzlDXHU4ODRDXHU1MTg1XHU3QjJDXHU0RTAwXHU5MEU4XHU1MjA2XHU0RTNBXHU2NTg3XHU2NzJDXHVGRjBDXHU1MjE5XHU1OTA0XHU3NDA2XHU1M0U1XHU5OTk2XHU1QjU3XHU2QkNEXHU1OTI3XHU1MTk5XHU3Njg0XHU5MEU4XHU1MjA2XG4gICAgICAgICAgICBpZiAoaSA9PT0gMCAmJiBsaW5lUGFydHNbaV0udHlwZSA9PT0gSW5saW5lVHlwZS50ZXh0ICYmIHNldHRpbmdzLkF1dG9DYXBpdGFsKSB7XG4gICAgICAgICAgICAgICAgLy8gMy4xLjEgXHU1OTgyXHU2NzlDIHByZXZDdXJzb3IgXHU0RTE0XHU1MTQ5XHU2ODA3XHU0RTBEXHU1NzI4XHU2QjY0XHU5MEU4XHU1MjA2XHVGRjBDXHU1MjE5XHU4REYzXHU4RkM3XG4gICAgICAgICAgICAgICAgaWYgKGlzUGFyYW1EZWZpbmVkKHByZXZDaCkgJiYgY3Vyc29yTGluZVBhcnRJbmRleCAhPSAwKSB7IH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ0ZpcnN0U2VudGVuY2UgPSAvXlxccyooXFwtIChcXFtbeCBdXFxdICk/KT9cdTIwMUM/W2EtelxcdTA0MDFcXHUwNDUxXFx1MDQxMC1cXHUwNDRmXS9nO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVnSGVhZGVyU2VudGVuY2UgPSAvXigjKyB8PisgP3xcdTIwMUMpW2EtelxcdTA0MDFcXHUwNDUxXFx1MDQxMC1cXHUwNDRmXS9nO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdGV4dGNvcHkgPSBsaW5lUGFydHNbMF0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGNoID0gcmVnRmlyc3RTZW50ZW5jZS5leGVjKHRleHRjb3B5KTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGNoSGVhZGVyID0gcmVnSGVhZGVyU2VudGVuY2UuZXhlYyh0ZXh0Y29weSk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkc3RDaGFySW5kZXggPSAtMTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkc3RDaGFySW5kZXggPSByZWdGaXJzdFNlbnRlbmNlLmxhc3RJbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2hIZWFkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRzdENoYXJJbmRleCA9IHJlZ0hlYWRlclNlbnRlbmNlLmxhc3RJbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuQXV0b0NhcGl0YWxNb2RlID09IFdvcmtNb2RlLkdsb2JhbGx5IHx8IChpc1BhcmFtRGVmaW5lZChwcmV2Q2gpICYmIGRzdENoYXJJbmRleCA+PSBwcmV2Q2ggJiYgZHN0Q2hhckluZGV4IDwgY3VyQ2gpKSB7IH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkc3RDaGFySW5kZXggPSAtMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkc3RDaGFySW5kZXggIT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzWzBdLmNvbnRlbnQgPSB0ZXh0Y29weS5zdWJzdHJpbmcoMCwgZHN0Q2hhckluZGV4KSArIHRleHRjb3B5LmNoYXJBdChkc3RDaGFySW5kZXgpLnRvVXBwZXJDYXNlKCkgKyB0ZXh0Y29weS5zdWJzdHJpbmcoZHN0Q2hhckluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN3aXRjaCAobGluZVBhcnRzW2ldLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAvLyAzLjIuMSBcdTU5MDRcdTc0MDZcdTY1ODdcdTY3MkNcdTUzM0FcdTU3NTdcbiAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudGV4dDpcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRlbnQgPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgLy8gVGV4dC40IFx1NTkwNFx1NzQwNlx1NTNFNVx1OTk5Nlx1NUI1N1x1NkJDRFx1NTkyN1x1NTE5OVxuICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuQXV0b0NhcGl0YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWcgPSAvW1xcLlxcP1xcIVx1MzAwMlx1RkYwMVx1RkYxRl0oW1xcc10qKVthLXpcXHUwNDAxXFx1MDQ1MVxcdTA0MTAtXFx1MDQ0Zl0vZztcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGNoID0gcmVnLmV4ZWMoY29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaCkgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXBJbmRleCA9IHJlZy5sYXN0SW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwicHJldkNoLCBjdXJDaCwgb2Zmc2V0LCB0ZW1wSW5kZXhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhwcmV2Q2gsIGN1ckNoLCBvZmZzZXQsIHRlbXBJbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNTcGFjZURvdCA9IHRlbXBJbmRleC0yPDAgfHwgY29udGVudC5zdWJzdHJpbmcodGVtcEluZGV4LTIsIHRlbXBJbmRleCk9PScgLic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLkF1dG9DYXBpdGFsTW9kZSA9PSBXb3JrTW9kZS5HbG9iYWxseSAmJiAhaXNTcGFjZURvdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKDAsIHRlbXBJbmRleCkgKyBjb250ZW50LmNoYXJBdCh0ZW1wSW5kZXgpLnRvVXBwZXJDYXNlKCkgKyBjb250ZW50LnN1YnN0cmluZyhyZWcubGFzdEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpc1BhcmFtRGVmaW5lZChwcmV2Q2gpICYmIHRlbXBJbmRleCA+PSBwcmV2Q2ggLSBvZmZzZXQgJiYgdGVtcEluZGV4IDwgY3VyQ2ggLSBvZmZzZXQgJiYgIWlzU3BhY2VEb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZygwLCB0ZW1wSW5kZXgpICsgY29udGVudC5jaGFyQXQodGVtcEluZGV4KS50b1VwcGVyQ2FzZSgpICsgY29udGVudC5zdWJzdHJpbmcocmVnLmxhc3RJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gICBcblxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBpbnNlcnRTcGFjZShjb250ZW50OiBzdHJpbmcsIHJlZzogUmVnRXhwLCBwcmV2Q2g6IG51bWJlciwgY3VyQ2g6IG51bWJlciwgb2Zmc2V0OiBudW1iZXIpOiBbc3RyaW5nLCBudW1iZXJdIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGNoID0gcmVnLmV4ZWMoY29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaCkgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXBJbmRleCA9IHJlZy5sYXN0SW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1BhcmFtRGVmaW5lZChwcmV2Q2gpICYmIHRlbXBJbmRleCA+PSBwcmV2Q2ggLSBvZmZzZXQgJiYgdGVtcEluZGV4IDwgY3VyQ2ggLSBvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKDAsIHRlbXBJbmRleCkgKyBcIiBcIiArIGNvbnRlbnQuc3Vic3RyaW5nKHRlbXBJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckNoICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtjb250ZW50LCBjdXJDaF07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjEgXHU1OTA0XHU3NDA2XHU0RTJEXHU4MkYxXHU2NTg3XHU0RTRCXHU5NUY0XHU3QTdBXHU2ODNDXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5DaGluZXNlRW5nbGlzaFNwYWNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnMSA9IC8oW0EtWmEtel0pKFtcXHU0ZTAwLVxcdTlmYTVdKS9naTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWcyID0gLyhbXFx1NGUwMC1cXHU5ZmE1XSkoW0EtWmEtel0pL2dpO1xuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnQsIGN1ckNoXSA9IGluc2VydFNwYWNlKGNvbnRlbnQsIHJlZzEsIHByZXZDaCwgY3VyQ2gsIG9mZnNldCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudCwgY3VyQ2hdID0gaW5zZXJ0U3BhY2UoY29udGVudCwgcmVnMiwgcHJldkNoLCBjdXJDaCwgb2Zmc2V0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5DaGluZXNlTnVtYmVyU3BhY2Upe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZyA9IC8oWzAtOV0pKFtcXHU0ZTAwLVxcdTlmYTVdKS9nO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZzEgPSAvKFtcXHU0ZTAwLVxcdTlmYTVdKShbMC05XSkvZztcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50LCBjdXJDaF0gPSBpbnNlcnRTcGFjZShjb250ZW50LCByZWcsIHByZXZDaCwgY3VyQ2gsIG9mZnNldCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudCwgY3VyQ2hdID0gaW5zZXJ0U3BhY2UoY29udGVudCwgcmVnMSwgcHJldkNoLCBjdXJDaCwgb2Zmc2V0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5FbmdsaXNoTnVtYmVyU3BhY2Upe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZyA9IC8oW0EtWmEtel0pKFxcZCkvZztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWcxID0gLyhcXGQpKFtBLVphLXpdKS9nO1xuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnQsIGN1ckNoXSA9IGluc2VydFNwYWNlKGNvbnRlbnQsIHJlZywgcHJldkNoLCBjdXJDaCwgb2Zmc2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50LCBjdXJDaF0gPSBpbnNlcnRTcGFjZShjb250ZW50LCByZWcxLCBwcmV2Q2gsIGN1ckNoLCBvZmZzZXQpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVGV4dC4yIFx1NTkwNFx1NzQwNlx1NEUyRFx1NjU4N1x1OTVGNFx1NjVFMFx1N0E3QVx1NjgzQ1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuQ2hpbmVzZU5vU3BhY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWcgPSAvKFtcXHU0ZTAwLVxcdTlmYTVcdUZGMENcdTMwMDJcdTMwMDFcdUZGMDFcdUZGMUJcdTIwMThcdTIwMTlcdTMwMEFcdTMwMEJdKykoXFxzKykoW1xcdTRlMDAtXFx1OWZhNVx1RkYwQ1x1MzAwMlx1MzAwMVx1RkYwMVx1RkYxQlx1MjAxOFx1MjAxOVx1MzAwQVx1MzAwQl0rKS9nO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHJlZy5leGVjKGNvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UocmVnLCBcIiQxJDNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gXHU2ODA3XHU3MEI5XHU0RTBFXHU2NTg3XHU2NzJDXHU3QTdBXHU2ODNDXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5QdW5jdHVhdGlvblNwYWNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUZXh0LjMgXHU1OTA0XHU3NDA2XHU2ODA3XHU3MEI5XHU0RTBFXHU2NTg3XHU2NzJDXHU3QTdBXHU2ODNDXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZihzZXR0aW5ncy5FbmdsaXNoU3BhY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZyA9IC8oWyxcXC47XFw/XFwhXFwpXSkoWzAtOUEtWmEtelxcdTA0MDFcXHUwNDUxXFx1MDQxMC1cXHUwNDRmXFx1NGUwMC1cXHU5ZmE1XSl8KFtBLVphLXowLTlcXHU0ZTAwLVxcdTlmYTU6LFxcLlxcP1xcISdcIl0rKShcXCgpfFssXFwuO1xcPzohXVtcXHU0ZTAwLVxcdTlmYTVdL2dpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXRjaCA9IHJlZy5leGVjKGNvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXBJbmRleCA9IHJlZy5sYXN0SW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNTcGFjZURvdCA9ICchLj87LCcuY29udGFpbnMoY29udGVudC5jaGFyQXQodGVtcEluZGV4LTEpKSAmJiAoKHRlbXBJbmRleC0yPDAgJiYgaT09MCkgfHwgY29udGVudC5jaGFyQXQodGVtcEluZGV4LTIpPT0nICcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNOdW1QdW5jTnVtID0gL1ssLl1cXGQvLnRlc3QoY29udGVudC5zdWJzdHJpbmcodGVtcEluZGV4LTEsIHRlbXBJbmRleCsxKSkgJiYgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRlbXBJbmRleC0yPDAgfHwgL1xcZC8udGVzdChjb250ZW50LmNoYXJBdCh0ZW1wSW5kZXgtMikpKVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5QdW5jdHVhdGlvblNwYWNlTW9kZSA9PSBXb3JrTW9kZS5HbG9iYWxseSAmJiAhaXNTcGFjZURvdCAmJiAhaXNOdW1QdW5jTnVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgdGVtcEluZGV4KSArIFwiIFwiICsgY29udGVudC5zdWJzdHJpbmcodGVtcEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpc1BhcmFtRGVmaW5lZChwcmV2Q2gpICYmIHRlbXBJbmRleCA+PSBwcmV2Q2ggLSBvZmZzZXQgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdGVtcEluZGV4IDwgY3VyQ2ggLSBvZmZzZXQgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIWlzU3BhY2VEb3QgJiYgIWlzTnVtUHVuY051bSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKDAsIHRlbXBJbmRleCkgKyBcIiBcIiArIGNvbnRlbnQuc3Vic3RyaW5nKHRlbXBJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJDaCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gXHU1MzU1XHU3MkVDXHU1OTA0XHU3NDA2XHU1MTkyXHU1M0Y3XHU1NDBFXHU2NTg3XHU2NzJDXHU3Njg0XHU4MUVBXHU1MkE4XHU3QTdBXHU2ODNDXHVGRjBDXHU0RTNBXHU0RTg2XHU1MTdDXHU1QkI5IDplbW9qaTogXHU2ODNDXHU1RjBGXHU3Njg0XHU4RjkzXHU1MTY1XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZzIgPSAvKDopKFtBLVphLXowLTlfXStbICxcXC5cXD9cXFxcXFwvOydcIlx1RkYwQ1x1MzAwMlx1RkYxRlx1RkYxQlx1MjAxOFx1MjAxQ1x1MjAxRFx1MjAxOVx1MzAwMVxcW1xcXVxcLVxce1xcfV0pL2dpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gY29udGVudC5yZXBsYWNlKHJlZzIsIFwiJDEgJDJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZzMgPSAvKDopKFtcIiddKS9nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gY29udGVudC5yZXBsYWNlKHJlZzMsIFwiJDEgJDJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVGV4dC43IFx1NUY5N1x1NTIzMFx1NjU4N1x1NjcyQ1x1OTBFOFx1NTIwNlx1NjYyRlx1NTQyNlx1NEVFNVx1N0E3QVx1NzY3RFx1N0IyNlx1NUYwMFx1NTlDQlx1NjIxNlx1N0VEM1x1Njc1Rlx1RkYwQ1x1NzUyOFx1Njc2NVx1NTIyNFx1NjVBRFx1NTQwRVx1N0VFRFx1NjU4N1x1NjcyQ1x1NTI0RFx1NTQwRVx1NjYyRlx1NTQyNlx1OTcwMFx1ODk4MVx1NkRGQlx1NTJBMFx1N0E3QVx1NjgzQ1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVnU3RyaWN0U3BhY2VTdGFydCA9IC9eXFwwP1xccy87XG4gICAgICAgICAgICAgICAgICAgIGxldCByZWdTdHJpY3RTcGFjZUVuZCA9IC9cXHNcXDA/JC87XG4gICAgICAgICAgICAgICAgICAgIGxldCByZWdTdGFydFdpdGhTcGFjZSA9IC9eXFwwP1tcXHMsXFwuO1xcP1xcIVx1RkYwQ1x1MzAwMlx1RkYxQlx1MzAwQlx1RkYxRlx1RkYxQTpcdUZGMDF+XFwqXHUzMDAxXHVGRjA4XHVGRjA5XCJcdTIwMURcXFtcXF1cXClcXHtcXH1dLztcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ0VuZFdpdGhTcGFjZSA9IC9bXFxzXHVGRjBDXHUzMDAyXHUzMDAxXHVGRjFBXHVGRjFCXHVGRjFGXHVGRjAxXHVGRjA4XHVGRjA5flxcKlwiXHUzMDBBXHUyMDFDXFxbXFxdXFwoXFx7XFx9XVxcMD8kLztcbiAgICAgICAgICAgICAgICAgICAgbGV0IHR4dFN0YXJ0U3BhY2VTYXRlID0gU3BhY2VTdGF0ZS5ub25lO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdHh0RW5kU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUubm9uZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlZ1N0YXJ0V2l0aFNwYWNlLnRlc3QoY29udGVudCl8fGNvbnRlbnQuc3RhcnRzV2l0aChcIjxicj5cIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWdTdHJpY3RTcGFjZVN0YXJ0LnRlc3QoY29udGVudCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHh0U3RhcnRTcGFjZVNhdGUgPSBTcGFjZVN0YXRlLnN0cmljdFxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4dFN0YXJ0U3BhY2VTYXRlID0gU3BhY2VTdGF0ZS5zb2Z0XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAocmVnRW5kV2l0aFNwYWNlLnRlc3QoY29udGVudCkgfHwgY29udGVudC5lbmRzV2l0aChcIjxicj5cIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWdTdHJpY3RTcGFjZUVuZC50ZXN0KGNvbnRlbnQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4dEVuZFNwYWNlU3RhdGUgPSBTcGFjZVN0YXRlLnN0cmljdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eHRFbmRTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5zb2Z0O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVGV4dC44IFx1NjgzOVx1NjM2RVx1NTI0RFx1NEUwMFx1OTBFOFx1NTIwNlx1NzY4NFx1NTMzQVx1NTc1N1x1N0M3Qlx1NTc4Qlx1NTkwNFx1NzQwNlx1N0E3QVx1NjgzQ1x1NkRGQlx1NTJBMFx1NzY4NFx1OTVFRVx1OTg5OFxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHByZXZQYXJ0VHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm5vbmU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuY29kZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZSA+IHR4dFN0YXJ0U3BhY2VTYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gJyAnICsgY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5mb3JtdWxhOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVGb3JtdWxhU3BhY2VNb2RlID4gdHh0U3RhcnRTcGFjZVNhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSAnICcgKyBjb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLndpa2lsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm1kbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNldHRpbmdzLklubGluZUxpbmtTbWFydFNwYWNlICYmIHNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGUgPiB0eHRTdGFydFNwYWNlU2F0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9ICcgJyArIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc2V0dGluZ3MuSW5saW5lTGlua1NtYXJ0U3BhY2UgJiYgdHh0U3RhcnRTcGFjZVNhdGUgPT0gU3BhY2VTdGF0ZS5ub25lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyQXRUZXh0QmVnaW4gPSBjb250ZW50LmNoYXJBdCgwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ01kTGlua0VuZCA9IC9cXF0vO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hhckF0TGlua0VuZEluZGV4ID0gbGluZVBhcnRzW2kgLSAxXS5jb250ZW50LnNlYXJjaChyZWdNZExpbmtFbmQpIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoYXJBdExpbmtFbmQgPSBsaW5lUGFydHNbaSAtIDFdLmNvbnRlbnQuY2hhckF0KGNoYXJBdExpbmtFbmRJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGFyQXRMaW5rRW5kID09PSAnWycpIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHdvTmVpZ2hib3JDaGFycyA9IGNoYXJBdExpbmtFbmQgKyBjaGFyQXRUZXh0QmVnaW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWdOb3ROZWVkU3BhY2UgPSAvW1xcdTRlMDAtXFx1OWZhNVx1RkYwQ1x1MzAwMlx1RkYxRlx1RkYxQVx1RkYxQlx1MjAxRFx1MjAxQ1x1MjAxOVx1MjAxOC1cdUZGMDl9XVtcXHU0ZTAwLVxcdTlmYTVdL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVnTm90TmVlZFNwYWNlLnRlc3QodHdvTmVpZ2hib3JDaGFycykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXJ0c1tpXS5jb250ZW50ID0gJyAnICsgY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS51c2VyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lUGFydHNbaSAtIDFdLnJpZ2h0U3BhY2VSZXF1aXJlID4gdHh0U3RhcnRTcGFjZVNhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ldLmNvbnRlbnQgPSAnICcgKyBjb250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVGV4dC45IFx1NTk4Mlx1Njc5Q1x1NTE0OVx1NjgwN1x1NTcyOFx1OEJFNVx1NTMzQVx1NTc1N1x1RkYwQ1x1NTIxOVx1OEJBMVx1N0I5N1x1NjcwMFx1N0VDOFx1NTE0OVx1NjgwN1x1NzY4NFx1NEY0RFx1N0Y2RVxuICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gY3Vyc29yTGluZVBhcnRJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZyA9ICdcXDAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG4gPSBjb250ZW50LnNlYXJjaChyZWcpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRDdXJzb3JDaCA9IG9mZnNldCArIG47XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBcdTUyMjBcdTk2NjQgXFwwXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaV0uY29udGVudCA9IHN0cmluZ0RlbGV0ZUF0KGNvbnRlbnQsIG4pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IGxpbmVQYXJ0c1tpXS5jb250ZW50Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgcHJldlBhcnRUeXBlID0gSW5saW5lVHlwZS50ZXh0O1xuICAgICAgICAgICAgICAgICAgICBwcmV2VGV4dEVuZFNwYWNlU3RhdGUgPSB0eHRFbmRTcGFjZVN0YXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAvLyAzLjIuMiBcdTU5MDRcdTc0MDZcdTg4NENcdTUxODVcdTRFRTNcdTc4MDFcdTU3NTdcdTkwRThcdTUyMDZcbiAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuY29kZTpcbiAgICAgICAgICAgICAgICAgICAgLy8gQ29kZS4xIFx1NjgzOVx1NjM2RVx1NTI0RFx1NEUwMFx1NTMzQVx1NTc1N1x1N0M3Qlx1NTc4Qlx1NTQ4Q3NldHRpbmdzXHU2REZCXHU1MkEwXHU3QTdBXHU2ODNDXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaChwcmV2UGFydFR5cGUpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5ub25lOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLnRleHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUNvZGVTcGFjZU1vZGUgPiBwcmV2VGV4dEVuZFNwYWNlU3RhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5jb250ZW50ICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5jb2RlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmZvcm11bGE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUNvZGVTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lIHx8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5JbmxpbmVGb3JtdWxhU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm1kbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS53aWtpbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUgfHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudXNlcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ktMV0ucmlnaHRTcGFjZVJlcXVpcmU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gQ29kZS4yIFx1NTk4Mlx1Njc5Q1x1NTE0OVx1NjgwN1x1NTcyOFx1OEJFNVx1NTMzQVx1NTc1N1x1RkYwQ1x1NTIxOVx1OEJBMVx1N0I5N1x1NjcwMFx1N0VDOFx1NTE0OVx1NjgwN1x1NzY4NFx1NEY0RFx1N0Y2RVxuICAgICAgICAgICAgICAgICAgICBpZihpID09PSBjdXJzb3JMaW5lUGFydEluZGV4KVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRDdXJzb3JDaCA9IG9mZnNldCArIGN1cnNvclJlbGF0aXZlSW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gQ29kZS4zIFx1NTNEOFx1OTFDRlx1NjZGNFx1NjVCMFxuICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBwcmV2UGFydFR5cGUgPSBJbmxpbmVUeXBlLmNvZGU7XG4gICAgICAgICAgICAgICAgICAgIHByZXZUZXh0RW5kU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUubm9uZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgLy8gMy4yLjMgXHU1OTA0XHU3NDA2XHU4ODRDXHU1MTg1XHU1MTZDXHU1RjBGXHU3Njg0XHU5MEU4XHU1MjA2XG4gICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLmZvcm11bGE6XG4gICAgICAgICAgICAgICAgICAgIGlmIChsaW5lUGFydHNbaV0uY29udGVudCA9PSBcIiRcXFxccXF1YWQkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZQYXJ0VHlwZSA9IElubGluZVR5cGUudGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZUZXh0RW5kU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUuc3RyaWN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gRm9ybXVsYS4xIFx1NjgzOVx1NjM2RVx1NTI0RFx1NEUwMFx1NTMzQVx1NTc1N1x1N0M3Qlx1NTc4Qlx1NTQ4Q3NldHRpbmdzXHU2REZCXHU1MkEwXHU3QTdBXHU2ODNDXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaChwcmV2UGFydFR5cGUpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5ub25lOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLnRleHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLklubGluZUZvcm11bGFTcGFjZU1vZGU+cHJldlRleHRFbmRTcGFjZVN0YXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ktMV0uY29udGVudCArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuY29kZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5mb3JtdWxhOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm1kbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS53aWtpbGluazpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUgfHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudXNlcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ktMV0ucmlnaHRTcGFjZVJlcXVpcmU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gRm9ybXVsYS4yIFx1NTk4Mlx1Njc5Q1x1NTE0OVx1NjgwN1x1NTcyOFx1OEJFNVx1NTMzQVx1NTc1N1x1RkYwQ1x1NTIxOVx1OEJBMVx1N0I5N1x1NjcwMFx1N0VDOFx1NTE0OVx1NjgwN1x1NzY4NFx1NEY0RFx1N0Y2RVxuICAgICAgICAgICAgICAgICAgICBpZihpID09PSBjdXJzb3JMaW5lUGFydEluZGV4KVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRDdXJzb3JDaCA9IG9mZnNldCArIGN1cnNvclJlbGF0aXZlSW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gRm9ybXVsYS4zIFx1NTNEOFx1OTFDRlx1NjZGNFx1NjVCMFxuICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9IGxpbmVQYXJ0c1tpXS5jb250ZW50O1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBwcmV2UGFydFR5cGUgPSBJbmxpbmVUeXBlLmZvcm11bGE7XG4gICAgICAgICAgICAgICAgICAgIHByZXZUZXh0RW5kU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUubm9uZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubWRsaW5rOlxuICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS53aWtpbGluazpcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHByZXZQYXJ0VHlwZSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLm5vbmU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUudGV4dDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJldlRleHRFbmRTcGFjZVN0YXRlPnNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGUpIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlPT1TcGFjZVN0YXRlLnN0cmljdCAmJiBwcmV2VGV4dEVuZFNwYWNlU3RhdGU8U3BhY2VTdGF0ZS5zdHJpY3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5jb250ZW50ICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzZXR0aW5ncy5JbmxpbmVMaW5rU21hcnRTcGFjZSAmJiBwcmV2VGV4dEVuZFNwYWNlU3RhdGU9PVNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWdOb05lZWRTcGFjZSA9IC9bXFx1NGUwMC1cXHU5ZmE1XVtcXHU0ZTAwLVxcdTlmYTVdL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyQXRUZXh0RW5kID0gbGluZVBhcnRzW2ktMV0uY29udGVudC5jaGFyQXQobGluZVBhcnRzW2ktMV0uY29udGVudC5sZW5ndGgtMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyQXRMaW5rQmVnaW46c3RyaW5nID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c1tpXS50eXBlPT1JbmxpbmVUeXBlLndpa2lsaW5rKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVnQWxpYXMgPSAvXFx8LztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyT2ZBbGlhc0JlZ2luID0gbGluZVBhcnRzW2ldLmNvbnRlbnQuc2VhcmNoKHJlZ0FsaWFzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiY2hhck9mQWxpYXNCZWdpblwiLGNoYXJPZkFsaWFzQmVnaW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmVnaW5JbmRleCA9IDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihsaW5lUGFydHNbaV0uY29udGVudC5jaGFyQXQoMCk9PT0nIScpIGJlZ2luSW5kZXg9MztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoYXJPZkFsaWFzQmVnaW4hPS0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luSW5kZXggPSBjaGFyT2ZBbGlhc0JlZ2luKzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKGxpbmVQYXJ0c1tpXS5jb250ZW50LmNoYXJBdChiZWdpbkluZGV4KT09JyMnKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbkluZGV4ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJBdExpbmtCZWdpbiA9IGxpbmVQYXJ0c1tpXS5jb250ZW50LmNoYXJBdChiZWdpbkluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiYmVnaW5JbmRleFwiLCBiZWdpbkluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNoYXJBdExpbmtCZWdpbj09J10nKSBicmVhazsgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWdNZExpbmtCZWdpbiA9IC9cXFsvO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoYXJBdExpbmtCZWdpbkluZGV4ID0gbGluZVBhcnRzW2ldLmNvbnRlbnQuc2VhcmNoKHJlZ01kTGlua0JlZ2luKSsxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhckF0TGlua0JlZ2luID0gbGluZVBhcnRzW2ldLmNvbnRlbnQuY2hhckF0KGNoYXJBdExpbmtCZWdpbkluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNoYXJBdExpbmtCZWdpbj09PSddJykgYnJlYWs7IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHdvTmVpZ2hib3JDaGFycyA9IGNoYXJBdFRleHRFbmQrY2hhckF0TGlua0JlZ2luO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZighcmVnTm9OZWVkU3BhY2UudGVzdCh0d29OZWlnaGJvckNoYXJzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ktMV0uY29udGVudCArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYoIXNldHRpbmdzLklubGluZUxpbmtTbWFydFNwYWNlICYmIHNldHRpbmdzLklubGluZUxpbmtTcGFjZU1vZGU+cHJldlRleHRFbmRTcGFjZVN0YXRlKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhcnRzW2ktMV0uY29udGVudCArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUuY29kZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MuSW5saW5lTGlua1NwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5mb3JtdWxhOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZXx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLklubGluZUZvcm11bGFTcGFjZU1vZGU+U3BhY2VTdGF0ZS5ub25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2hhbmdlTGlzdC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6JyAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNbaV0uYmVnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOicnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubWRsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLndpa2lsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLnVzZXI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c1tpLTFdLnJpZ2h0U3BhY2VSZXF1aXJlPlNwYWNlU3RhdGUubm9uZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIExpbmsuMiBcdTU5ODJcdTY3OUNcdThCRTVcdTUzM0FcdTU3NTdcdTY3MDlcdTUxNDlcdTY4MDdcdUZGMENcdTUyMTlcdThCQTFcdTdCOTdcdTY3MDBcdTdFQzhcdTUxNDlcdTY4MDdcdTRGNERcdTdGNkVcbiAgICAgICAgICAgICAgICAgICAgaWYoaSA9PT0gY3Vyc29yTGluZVBhcnRJbmRleClcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q3Vyc29yQ2ggPSBvZmZzZXQgKyBjdXJzb3JSZWxhdGl2ZUluZGV4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIExpbmsuMyBcdTY2RjRcdTY1QjBcdTUzRDhcdTkxQ0ZcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSBsaW5lUGFydHNbaV0uY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IGxpbmVQYXJ0c1tpXS5jb250ZW50Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgcHJldlBhcnRUeXBlID0gbGluZVBhcnRzW2ldLnR5cGU7XG4gICAgICAgICAgICAgICAgICAgIHByZXZUZXh0RW5kU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUubm9uZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgLy8gMy4yLjUgXHU1OTA0XHU3NDA2XHU3NTI4XHU2MjM3XHU4MUVBXHU1QjlBXHU0RTQ5XHU1MzNBXHU1NzU3XHU3Njg0XHU5MEU4XHU1MjA2XG4gICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLnVzZXI6XG4gICAgICAgICAgICAgICAgICAgIC8vIFVzZXIuMSBcdTY4MzlcdTYzNkVcdTUyNERcdTRFMDBcdTUzM0FcdTU3NTdcdTdDN0JcdTU3OEJcdTU0OENzZXR0aW5nc1x1NkRGQlx1NTJBMFx1N0E3QVx1NjgzQ1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2gocHJldlBhcnRUeXBlKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUubm9uZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS50ZXh0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lUGFydHNbaV0ubGVmdFNwYWNlUmVxdWlyZT5wcmV2VGV4dEVuZFNwYWNlU3RhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5jb250ZW50ICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5jb2RlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lUGFydHNbaV0ubGVmdFNwYWNlUmVxdWlyZT5TcGFjZVN0YXRlLm5vbmUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lQ29kZVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5mb3JtdWxhOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lUGFydHNbaV0ubGVmdFNwYWNlUmVxdWlyZT5TcGFjZVN0YXRlLm5vbmUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuSW5saW5lRm9ybXVsYVNwYWNlTW9kZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5saW5lVHlwZS5tZGxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElubGluZVR5cGUud2lraWxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c1tpXS5sZWZ0U3BhY2VSZXF1aXJlPlNwYWNlU3RhdGUubm9uZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlPlNwYWNlU3RhdGUubm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OicgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbGluZVBhcnRzW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRMaW5lICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJbmxpbmVUeXBlLnVzZXI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVQYXJ0c1tpXS5sZWZ0U3BhY2VSZXF1aXJlPlNwYWNlU3RhdGUubm9uZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGFydHNbaS0xXS5yaWdodFNwYWNlUmVxdWlyZT5TcGFjZVN0YXRlLm5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDaGFuZ2VMaXN0LnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDonICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW46IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGxpbmVQYXJ0c1tpXS5iZWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46JydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluZSArPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBVc2VyLjIgXHU1OTgyXHU2NzlDXHU4QkU1XHU1MzNBXHU1NzU3XHU2NzA5XHU1MTQ5XHU2ODA3XHVGRjBDXHU1MjE5XHU4QkExXHU3Qjk3XHU2NzAwXHU3RUM4XHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXG4gICAgICAgICAgICAgICAgICAgIGlmKGkgPT09IGN1cnNvckxpbmVQYXJ0SW5kZXgpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEN1cnNvckNoID0gb2Zmc2V0ICsgY3Vyc29yUmVsYXRpdmVJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBMaW5rLjMgXHU2NkY0XHU2NUIwXHU1M0Q4XHU5MUNGXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdExpbmUgKz0gbGluZVBhcnRzW2ldLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBsaW5lUGFydHNbaV0uY29udGVudC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHByZXZQYXJ0VHlwZSA9IElubGluZVR5cGUudXNlcjtcbiAgICAgICAgICAgICAgICAgICAgcHJldlRleHRFbmRTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvcihsZXQgaT0wO2k8bGluZVBhcnRzLmxlbmd0aDtpKyspXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmKGxpbmVQYXJ0c1tpXS50eXBlID09PSBJbmxpbmVUeXBlLnRleHQgJiYgbGluZVBhcnRzW2ldLmNvbnRlbnQhPWxpbmVQYXJ0c09yaWdpbltpXS5jb250ZW50KVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlubGluZUNoYW5nZUxpc3QucHVzaChcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogbGluZVBhcnRzW2ldLmNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBiZWdpbjogbGluZVBhcnRzT3JpZ2luW2ldLmJlZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsaW5lUGFydHNPcmlnaW5baV0uZW5kLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOiBsaW5lUGFydHNPcmlnaW5baV0uY29udGVudFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgXG4gICAgICAgIGlubGluZUNoYW5nZUxpc3QgPSBpbmxpbmVDaGFuZ2VMaXN0LnNvcnQoKGEsIGIpOm51bWJlcj0+YS5iZWdpbi1iLmJlZ2luKTtcbiAgICAgICAgcmV0dXJuIFtyZXN1bHRMaW5lLCByZXN1bHRDdXJzb3JDaCwgaW5saW5lQ2hhbmdlTGlzdF07XG4gICAgfVxuICAgIFxufVxuXG5cbmV4cG9ydCBjbGFzcyBNYXJrZG93blBhcnNlcntcbiAgICBjb25zdHJ1Y3Rvcigpe31cblxufVxuXG5mdW5jdGlvbiBtYXRjaFdpdGhSZWcodGV4dDogc3RyaW5nLCByZWdFeHA6IFJlZ0V4cCwgdHlwZTogSW5saW5lVHlwZSwgaW5saW5lVHlwZUFycmF5OiBJbmxpbmVQYXJ0W10sXG4gICAgY2hlY2tBcnJheSA9IGZhbHNlLCBsZWZ0U3BhY2VSZTogU3BhY2VTdGF0ZSA9IFNwYWNlU3RhdGUubm9uZSwgcmlnaHRTcGFjZVJlOiBTcGFjZVN0YXRlID0gU3BhY2VTdGF0ZS5ub25lKTogSW5saW5lUGFydFtdIHtcbiAgICBsZXQgcmV0QXJyYXkgPSBpbmxpbmVUeXBlQXJyYXk7XG4gICAgbGV0IG1hdGNoQXJyYXk6IElubGluZVBhcnRbXSA9IFtdO1xuICAgIHJldEFycmF5ID0gcmV0QXJyYXkuc29ydCgoYSwgYik6IG51bWJlciA9PiBhLmJlZ2luIC0gYi5iZWdpbik7XG4gICAgLy8gY29uc29sZS5sb2coJ2JlZm9yZS0tLS0tLS0tLS0tXFxuJyxyZXRBcnJheSlcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBsZXQgbWF0Y2ggPSByZWdFeHAuZXhlYyh0ZXh0KTtcbiAgICAgICAgaWYgKCFtYXRjaCkgYnJlYWs7XG4gICAgICAgIGxldCB2YWxpZCA9IHRydWU7XG4gICAgICAgIC8vIFx1NjhDMFx1NjdFNVx1NTFCMlx1N0E4MVxuICAgICAgICBpZiAoY2hlY2tBcnJheSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXRBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmKHJlZ0V4cC5sYXN0SW5kZXg+cmV0QXJyYXlbaV0uYmVnaW4gJiYgcmV0QXJyYXlbaV0uZW5kPm1hdGNoLmluZGV4KXtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghdmFsaWQpIGNvbnRpbnVlO1xuICAgICAgICBtYXRjaEFycmF5LnB1c2goXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29udGVudDogbWF0Y2hbMF0sXG4gICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICBiZWdpbjogbWF0Y2guaW5kZXgsXG4gICAgICAgICAgICAgICAgZW5kOiByZWdFeHAubGFzdEluZGV4LFxuICAgICAgICAgICAgICAgIGxlZnRTcGFjZVJlcXVpcmU6IGxlZnRTcGFjZVJlLFxuICAgICAgICAgICAgICAgIHJpZ2h0U3BhY2VSZXF1aXJlOiByaWdodFNwYWNlUmVcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG4gICAgcmV0QXJyYXkgPSByZXRBcnJheS5jb25jYXQobWF0Y2hBcnJheSk7XG4gICAgLy8gY29uc29sZS5sb2coJ0FmdGVyPT09PT09PT09PT1cXG4nLCByZXRBcnJheSk7XG4gICAgcmV0dXJuIHJldEFycmF5O1xufVxuXG5mdW5jdGlvbiBtYXRjaFdpdGhBYmJyKHRleHQ6IHN0cmluZywgdHlwZTogSW5saW5lVHlwZSwgaW5saW5lVHlwZUFycmF5OiBJbmxpbmVQYXJ0W10sIGNoZWNrQXJyYXkgPSBmYWxzZSl7XG4gICAgbGV0IHJldEFycmF5ID0gaW5saW5lVHlwZUFycmF5O1xuICAgIGxldCBtYXRjaEFycmF5OiBJbmxpbmVQYXJ0W10gPSBbXTtcbiAgICByZXRBcnJheSA9IHJldEFycmF5LnNvcnQoKGEsIGIpOiBudW1iZXIgPT4gYS5iZWdpbiAtIGIuYmVnaW4pO1xuICAgIGxldCByZWdBYmJyID0gLyhbYS16QS1aXVxcLikrL2c7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgbGV0IG1hdGNoID0gcmVnQWJici5leGVjKHRleHQpO1xuICAgICAgICBpZiAoIW1hdGNoKSBicmVhaztcbiAgICAgICAgbGV0IHZhbGlkID0gdHJ1ZTtcbiAgICAgICAgbGV0IGlzSW5CbG9ja0JlZ2luOmJvb2xlYW4gPSAobWF0Y2guaW5kZXg9PTApO1xuICAgICAgICAvLyBcdTY4QzBcdTY3RTVcdTUxQjJcdTdBODFcbiAgICAgICAgaWYgKGNoZWNrQXJyYXkpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmV0QXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZihtYXRjaC5pbmRleCA9PSByZXRBcnJheVtpXS5lbmQpe1xuICAgICAgICAgICAgICAgICAgICBpc0luQmxvY2tCZWdpbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmKHJlZ0FiYnIubGFzdEluZGV4PnJldEFycmF5W2ldLmJlZ2luICYmIHJldEFycmF5W2ldLmVuZD5tYXRjaC5pbmRleCl7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZighaXNJbkJsb2NrQmVnaW4gJiYgdmFsaWQpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxldCByZWdDaGFyID0gL1thLXpBLVowLTldLztcbiAgICAgICAgICAgIGlmKHJlZ0NoYXIudGVzdCh0ZXh0LmNoYXJBdChtYXRjaC5pbmRleC0xKSkpe1xuICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXZhbGlkKSBjb250aW51ZTtcbiAgICAgICAgbWF0Y2hBcnJheS5wdXNoKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG1hdGNoWzBdLFxuICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICAgICAgYmVnaW46IG1hdGNoLmluZGV4LFxuICAgICAgICAgICAgICAgIGVuZDogcmVnQWJici5sYXN0SW5kZXgsXG4gICAgICAgICAgICAgICAgbGVmdFNwYWNlUmVxdWlyZTogU3BhY2VTdGF0ZS5ub25lLFxuICAgICAgICAgICAgICAgIHJpZ2h0U3BhY2VSZXF1aXJlOiBTcGFjZVN0YXRlLm5vbmVcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG4gICAgcmV0QXJyYXkgPSByZXRBcnJheS5jb25jYXQobWF0Y2hBcnJheSk7XG4gICAgLy8gY29uc29sZS5sb2coJ0FmdGVyPT09PT09PT09PT1cXG4nLCByZXRBcnJheSk7XG4gICAgcmV0dXJuIHJldEFycmF5O1xufVxuXG4vKipcbiAqIFx1NTIwNlx1NTI3Mlx1NEUwMFx1ODg0Q1x1NjU4N1x1NjcyQ1x1NEUyRFx1NzY4NFx1OTRGRVx1NjNBNVx1NTQ4Q1x1NzUyOFx1NjIzN1x1ODFFQVx1NUI5QVx1NEU0OVx1NzY4NFx1NkI2M1x1NTIxOVx1OTBFOFx1NTIwNlx1RkYwQ1x1NUY5N1x1NTIzMCBJbmxpbmVQYXJ0IFx1NzY4NFx1NEUwRFx1NTQwQ1x1NTMzQVx1NTdERlxuICovXG5mdW5jdGlvbiBzcGxpdFRleHRXaXRoTGlua0FuZFVzZXJEZWZpbmVkKHRleHQ6IHN0cmluZywgcmVnRXhwcz86IHN0cmluZyk6IElubGluZVBhcnRbXSB7XG4gICAgbGV0IHJldEFycmF5OiBJbmxpbmVQYXJ0W10gPSBbXTtcbiAgICBsZXQgcmVnV2lraUxpbmsgPSAvXFwhezAsMn1cXFtcXFtbXlxcW1xcXV0qP1xcXVxcXS9nO1xuICAgIGxldCByZWdNZExpbmsgPSAvXFwhezAsMn1cXFtbXlxcW1xcXV0qP1xcXVxcKFteXFxzXFwpXFwoXFxbXFxdXFx7XFx9J10qXFwpL2c7XG4gICAgLy8gbGV0IHJlZ0JhcmVMaW5rID0gLyhodHRwcz86XFwvXFwvfGZ0cDpcXC9cXC98b2JzaWRpYW46XFwvXFwvfHpvdGVybzpcXC9cXC98d3d3LilbXlxcc1x1RkYwOFx1RkYwOVx1MzAwQVx1MzAwQlx1MzAwMlx1RkYwQ1x1RkYwMVx1RkYxRlx1RkYxQlx1RkYxQVx1MjAxQ1x1MjAxRFx1MjAxOFx1MjAxOVxcKVxcKFxcW1xcXVxce1xcfSddKy9nO1xuXG4gICAgLy8gMS4gXHU1MzM5XHU5MTREd2lraWxpbmtcbiAgICByZXRBcnJheSA9IG1hdGNoV2l0aFJlZyh0ZXh0LCByZWdXaWtpTGluaywgSW5saW5lVHlwZS53aWtpbGluaywgcmV0QXJyYXkpO1xuICAgIC8vIDIuIFx1NTMzOVx1OTE0RG1kbGlua1xuICAgIHJldEFycmF5ID0gbWF0Y2hXaXRoUmVnKHRleHQsIHJlZ01kTGluaywgSW5saW5lVHlwZS5tZGxpbmssIHJldEFycmF5KTtcblxuICAgIC8vIDMuIFx1NTMzOVx1OTE0RFx1NzUyOFx1NjIzN1x1ODFFQVx1NUI5QVx1NEU0OVx1NkI2M1x1NTIxOVxuICAgIGxldCByZWdFeHBMaXN0OiBSZWdFeHBbXSA9IFtdO1xuICAgIGxldCBsZWZ0U1JlcXVpcmVMaXN0OiBTcGFjZVN0YXRlW10gPSBbXTtcbiAgICBsZXQgcmlnaHRTUmVxdWlyZUxpc3Q6IFNwYWNlU3RhdGVbXSA9IFtdO1xuICAgIGxldCByZWdOdWxsID0gL15cXHMqJC9nO1xuICAgIGxldCByZWdTUmVxdWlyZSA9IC9cXHxbXFwtPVxcK11bXFwtPVxcK10kLztcbiAgICBpZiAocmVnRXhwcykge1xuICAgICAgICBsZXQgcmVncyA9IHJlZ0V4cHMuc3BsaXQoJ1xcbicpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlZ3MubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgaWYgKHJlZ051bGwudGVzdChyZWdzW2ldKSkgY29udGludWU7XG5cbiAgICAgICAgICAgIGlmICgoIXJlZ1NSZXF1aXJlLnRlc3QocmVnc1tpXSkpIHx8IHJlZ3NbaV0ubGVuZ3RoIDw9IDMpIHtcbiAgICAgICAgICAgICAgICBuZXcgTm90aWNlKFwiRWFzeVR5cGluZzogXHU3QjJDXCIgKyBTdHJpbmcoaSkgKyBcIlx1ODg0Q1x1ODFFQVx1NUI5QVx1NEU0OVx1NkI2M1x1NTIxOVx1NEUwRFx1N0IyNlx1NTQwOFx1ODlDNFx1ODMwM1xcblwiK3JlZ3NbaV0pO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHJlZ0l0ZW0gPSByZWdzW2ldLnN1YnN0cmluZygwLCByZWdzW2ldLmxlbmd0aCAtIDMpO1xuICAgICAgICAgICAgbGV0IHNwYWNlUmVxU3RyaW5nID0gcmVnc1tpXS5zdWJzdHJpbmcocmVnc1tpXS5sZW5ndGggLSAzKTtcblxuICAgICAgICAgICAgbGV0IGlzVmFsaWRSZWcgPSB0cnVlO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgcmVnVGVtcCA9IG5ldyBSZWdFeHAocmVnSXRlbSwgJ2cnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgaXNWYWxpZFJlZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuc2V0dGluZ3MuZGVidWcpe1xuICAgICAgICAgICAgICAgICAgICBuZXcgTm90aWNlKFwiRWFzdVR5cGluZzogQmFkIFJlZ0V4cDpcXG5cIiArIHJlZ0l0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWcpIHtcbiAgICAgICAgICAgICAgICByZWdFeHBMaXN0LnB1c2gobmV3IFJlZ0V4cChyZWdJdGVtLCAnZycpKTtcbiAgICAgICAgICAgICAgICBsZWZ0U1JlcXVpcmVMaXN0LnB1c2goc3RyMlNwYWNlU3RhdGUoc3BhY2VSZXFTdHJpbmcuY2hhckF0KDEpKSk7XG4gICAgICAgICAgICAgICAgcmlnaHRTUmVxdWlyZUxpc3QucHVzaChzdHIyU3BhY2VTdGF0ZShzcGFjZVJlcVN0cmluZy5jaGFyQXQoMikpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgcmVnTGVuID0gcmVnRXhwTGlzdC5sZW5ndGg7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZWdMZW47IGkrKykge1xuICAgICAgICAgICAgcmV0QXJyYXkgPSBtYXRjaFdpdGhSZWcodGV4dCwgcmVnRXhwTGlzdFtpXSwgSW5saW5lVHlwZS51c2VyLCByZXRBcnJheSwgdHJ1ZSwgbGVmdFNSZXF1aXJlTGlzdFtpXSwgcmlnaHRTUmVxdWlyZUxpc3RbaV0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gXHU1MzM5XHU5MTREXHU2NUY2XHU5NUY0XHU2MjMzXG4gICAgcmV0QXJyYXkgPSBtYXRjaFdpdGhSZWcodGV4dCwgL1xcZHsxLDJ9OlxcZHsxLDJ9KDpcXGR7MCwyfSl7MCwxfS9nLCBJbmxpbmVUeXBlLnVzZXIsIHJldEFycmF5LCB0cnVlLCBTcGFjZVN0YXRlLnNvZnQsIFNwYWNlU3RhdGUubm9uZSk7XG5cbiAgICAvLyA0LiBcdTUzMzlcdTkxNERcdTdGMjlcdTUxOTlcdTU5ODIgYS5tLlxuICAgIHJldEFycmF5ID0gbWF0Y2hXaXRoQWJicih0ZXh0LCBJbmxpbmVUeXBlLnVzZXIsIHJldEFycmF5LCB0cnVlKTtcblxuICAgIC8vIDUuIFx1NUY5N1x1NTIzMFx1NTI2OVx1NEY1OVx1NzY4NFx1NjU4N1x1NjcyQ1x1OTBFOFx1NTIwNlxuICAgIHJldEFycmF5ID0gcmV0QXJyYXkuc29ydCgoYSwgYik6IG51bWJlciA9PiBhLmJlZ2luIC0gYi5iZWdpbik7XG5cbiAgICBsZXQgdGV4dEFycmF5OiBJbmxpbmVQYXJ0W10gPSBbXTtcbiAgICBsZXQgdGV4dEJlZ2luID0gMDtcbiAgICBsZXQgdGV4dEVuZCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXRBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAodGV4dEJlZ2luIDwgcmV0QXJyYXlbaV0uYmVnaW4pIHtcbiAgICAgICAgICAgIHRleHRFbmQgPSByZXRBcnJheVtpXS5iZWdpbjtcbiAgICAgICAgICAgIHRleHRBcnJheS5wdXNoKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogdGV4dC5zdWJzdHJpbmcodGV4dEJlZ2luLCB0ZXh0RW5kKSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogSW5saW5lVHlwZS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICBiZWdpbjogdGV4dEJlZ2luLFxuICAgICAgICAgICAgICAgICAgICBlbmQ6IHRleHRFbmQsXG4gICAgICAgICAgICAgICAgICAgIGxlZnRTcGFjZVJlcXVpcmU6IFNwYWNlU3RhdGUubm9uZSxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHRTcGFjZVJlcXVpcmU6IFNwYWNlU3RhdGUubm9uZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGV4dEJlZ2luID0gcmV0QXJyYXlbaV0uZW5kO1xuICAgIH1cblxuICAgIGlmICh0ZXh0QmVnaW4gIT0gdGV4dC5sZW5ndGgpIHtcbiAgICAgICAgdGV4dEFycmF5LnB1c2goXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29udGVudDogdGV4dC5zdWJzdHJpbmcodGV4dEJlZ2luLCB0ZXh0Lmxlbmd0aCksXG4gICAgICAgICAgICAgICAgdHlwZTogSW5saW5lVHlwZS50ZXh0LFxuICAgICAgICAgICAgICAgIGJlZ2luOiB0ZXh0QmVnaW4sXG4gICAgICAgICAgICAgICAgZW5kOiB0ZXh0Lmxlbmd0aCxcbiAgICAgICAgICAgICAgICBsZWZ0U3BhY2VSZXF1aXJlOiBTcGFjZVN0YXRlLm5vbmUsXG4gICAgICAgICAgICAgICAgcmlnaHRTcGFjZVJlcXVpcmU6IFNwYWNlU3RhdGUubm9uZVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIDYuIFx1NTQwOFx1NUU3Nlx1NjU4N1x1NjcyQ1x1OTBFOFx1NTIwNlx1NTQ4Q1x1NTE3Nlx1NEVENlx1OTBFOFx1NTIwNlxuICAgIHJldEFycmF5ID0gcmV0QXJyYXkuY29uY2F0KHRleHRBcnJheSk7XG4gICAgcmV0QXJyYXkgPSByZXRBcnJheS5zb3J0KChhLCBiKTogbnVtYmVyID0+IGEuYmVnaW4gLSBiLmJlZ2luKTtcbiAgICByZXR1cm4gcmV0QXJyYXlcbn1cblxuLy8gXHU1QjU3XHU3QjI2XHU4RjZDXHU1MzE2XHU2MjEwXHU3QTdBXHU2ODNDXHU3MkI2XHU2MDAxXHU4OTgxXHU2QzQyXG5mdW5jdGlvbiBzdHIyU3BhY2VTdGF0ZShzOiBzdHJpbmcpOiBTcGFjZVN0YXRlIHtcbiAgICBzd2l0Y2ggKHMpIHtcbiAgICAgICAgY2FzZSBcIitcIjpcbiAgICAgICAgICAgIHJldHVybiBTcGFjZVN0YXRlLnN0cmljdDtcbiAgICAgICAgY2FzZSAnPSc6XG4gICAgICAgICAgICByZXR1cm4gU3BhY2VTdGF0ZS5zb2Z0O1xuICAgICAgICBjYXNlICctJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBTcGFjZVN0YXRlLm5vbmU7XG4gICAgfVxufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmcyU3BhY2VTdGF0ZShzOnN0cmluZyk6U3BhY2VTdGF0ZVxue1xuICAgIGlmKE51bWJlcihzKT09U3BhY2VTdGF0ZS5ub25lKSByZXR1cm4gU3BhY2VTdGF0ZS5ub25lO1xuICAgIGlmKE51bWJlcihzKT09U3BhY2VTdGF0ZS5zb2Z0KSByZXR1cm4gU3BhY2VTdGF0ZS5zb2Z0O1xuICAgIGlmKE51bWJlcihzKT09U3BhY2VTdGF0ZS5zdHJpY3QpIHJldHVybiBTcGFjZVN0YXRlLnN0cmljdDtcbiAgICByZXR1cm4gU3BhY2VTdGF0ZS5ub25lO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQb3NMaW5lVHlwZShzdGF0ZTogRWRpdG9yU3RhdGUsIHBvczogbnVtYmVyKTpMaW5lVHlwZSB7XG4gICAgY29uc3QgbGluZSA9IHN0YXRlLmRvYy5saW5lQXQocG9zKVxuICAgIGxldCBsaW5lX251bWJlciA9IGxpbmUubnVtYmVyXG4gICAgY29uc3QgdHJlZSA9IHN5bnRheFRyZWUoc3RhdGUpO1xuICAgIGNvbnN0IHRva2VuID0gdHJlZS5yZXNvbHZlKGxpbmUuZnJvbSwgMSkubmFtZVxuXG4gICAgLy8gZm9yIChsZXQgcD1saW5lLmZyb207IHA8bGluZS50bzsgcCs9MSl7XG4gICAgLy8gICAgIGNvbnNvbGUubG9nKHAtbGluZS5mcm9tLCB0cmVlLnJlc29sdmUocCwgMSkubmFtZSlcbiAgICAvLyB9XG5cbiAgICBpZiAodG9rZW4uY29udGFpbnMoJ3RhYmxlJykpe1xuICAgICAgICByZXR1cm4gTGluZVR5cGUudGFibGU7XG4gICAgfVxuXG4gICAgaWYgKHRva2VuLmNvbnRhaW5zKCdobWQtZnJvbnRtYXR0ZXInKSl7XG4gICAgICAgIHJldHVybiBMaW5lVHlwZS5mcm9udG1hdHRlcjtcbiAgICB9XG5cbiAgICBpZih0b2tlbi5jb250YWlucygnbWF0aCcpKXtcbiAgICAgICAgZm9yKGxldCBwPWxpbmUuZnJvbSsxO3A8bGluZS50bztwKz0xKXtcbiAgICAgICAgICAgIGlmKCF0cmVlLnJlc29sdmUocCwgMSkubmFtZS5jb250YWlucygnbWF0aCcpKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gTGluZVR5cGUudGV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTGluZVR5cGUuZm9ybXVsYVxuICAgIH1cbiAgICBlbHNlIGlmKHRva2VuLmNvbnRhaW5zKCdjb2RlJykgJiYgdG9rZW4uY29udGFpbnMoJ2Jsb2NrJykpe1xuICAgICAgICBmb3IobGV0IHA9bGluZS5mcm9tKzE7cDxsaW5lLnRvO3ArPTEpe1xuICAgICAgICAgICAgbGV0IHQgPSB0cmVlLnJlc29sdmUocCwgMSkubmFtZVxuICAgICAgICAgICAgaWYoISh0LmNvbnRhaW5zKCdjb2RlJykgJiYgdC5jb250YWlucygnYmxvY2snKSkpe1xuICAgICAgICAgICAgICAgIHJldHVybiBMaW5lVHlwZS50ZXh0XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIExpbmVUeXBlLmNvZGVibG9ja1xuICAgIH1cbiAgICBlbHNlIGlmKHRva2VuLmNvbnRhaW5zKCdxdW90ZScpICYmICF0b2tlbi5jb250YWlucygnY2FsbG91dCcpKXtcbiAgICAgICAgLy8gXHU2M0E1XHU0RTBCXHU2NzY1XHU1MjI0XHU2NUFEXHU4QkU1XHU4ODRDXHU2NjJGXHU1NDI2XHU0RTNBY2FsbG91dFx1NTc1N1x1NTE4NVx1NzY4NFx1NEVFM1x1NzgwMVx1NTc1N1xuICAgICAgICAvLyBcdTk5OTZcdTUxNDhcdTUyMjRcdTY1QURcdTY2MkZcdTU0MjZcdTRFM0FjYWxsb3V0XG4gICAgICAgIGxldCBjYWxsb3V0X3N0YXJ0X2xpbmUgPSAtMTtcbiAgICAgICAgZm9yKGxldCBsPWxpbmVfbnVtYmVyLTE7IGw+PTE7IGwtPTEpe1xuICAgICAgICAgICAgbGV0IGxfbGluZSA9IHN0YXRlLmRvYy5saW5lKGwpXG4gICAgICAgICAgICBsZXQgbF90b2tlbiA9IHRyZWUucmVzb2x2ZShsX2xpbmUuZnJvbSwgMSkubmFtZVxuICAgICAgICAgICAgaWYoIWxfdG9rZW4uY29udGFpbnMoJ3F1b3RlJykpe1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxfdG9rZW4uY29udGFpbnMoJ2NhbGxvdXQnKSl7XG4gICAgICAgICAgICAgICAgY2FsbG91dF9zdGFydF9saW5lID0gbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FsbG91dF9zdGFydF9saW5lPT0tMSkgcmV0dXJuIExpbmVUeXBlLnRleHQ7XG4gICAgICAgIFxuICAgICAgICAvLyBcdTcxMzZcdTU0MEVcdTUyMjRcdTY1QURcdTY2MkZcdTU0MjZcdTRFM0FcdTRFRTNcdTc4MDFcdTU3NTdcbiAgICAgICAgbGV0IGlzX2NvZGVfYmxvY2s6Ym9vbGVhbiA9IGZhbHNlO1xuICAgICAgICBsZXQgcmVnX2NvZGVfYmVnaW4gPSAvXj4rIGBgYC87XG4gICAgICAgIGxldCByZWdfY29kZV9lbmQgPSAvXj4rIGBgYCQvO1xuICAgICAgICBmb3IgKGxldCBsPWNhbGxvdXRfc3RhcnRfbGluZSsxOyBsPD1saW5lX251bWJlcjsgbCs9MSl7XG4gICAgICAgICAgICBsZXQgbF9saW5lID0gc3RhdGUuZG9jLmxpbmUobClcbiAgICAgICAgICAgIGlmKGlzX2NvZGVfYmxvY2sgJiYgcmVnX2NvZGVfZW5kLnRlc3QobF9saW5lLnRleHQpKXtcbiAgICAgICAgICAgICAgICBpc19jb2RlX2Jsb2NrID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmKCFpc19jb2RlX2Jsb2NrICYmIHJlZ19jb2RlX2JlZ2luLnRlc3QobF9saW5lLnRleHQpKXtcbiAgICAgICAgICAgICAgICBpc19jb2RlX2Jsb2NrID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNfY29kZV9ibG9jaykge1xuICAgICAgICAgICAgcmV0dXJuIExpbmVUeXBlLmNvZGVibG9jaztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHJldHVybiBMaW5lVHlwZS50ZXh0O1xuICAgIH1cbiAgICByZXR1cm4gTGluZVR5cGUudGV4dFxufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQb3NMaW5lVHlwZTIoc3RhdGU6IEVkaXRvclN0YXRlLCBwb3M6IG51bWJlcik6TGluZVR5cGUge1xuICAgIGNvbnN0IGxpbmUgPSBzdGF0ZS5kb2MubGluZUF0KHBvcylcbiAgICBjb25zdCB0cmVlID0gc3ludGF4VHJlZShzdGF0ZSk7XG4gICAgY29uc3QgdG9rZW4gPSB0cmVlLnJlc29sdmUobGluZS5mcm9tLCAxKS5uYW1lXG4gICAgaWYgKHRva2VuLmNvbnRhaW5zKCdobWQtZnJvbnRtYXR0ZXInKSl7XG4gICAgICAgIHJldHVybiBMaW5lVHlwZS5mcm9udG1hdHRlclxuICAgIH1cblxuICAgIGlmKHRva2VuLmNvbnRhaW5zKCdtYXRoJykpe1xuICAgICAgICBmb3IobGV0IHA9bGluZS5mcm9tKzE7cDxsaW5lLnRvO3ArPTEpe1xuICAgICAgICAgICAgaWYoIXRyZWUucmVzb2x2ZShwLCAxKS5uYW1lLmNvbnRhaW5zKCdtYXRoJykpe1xuICAgICAgICAgICAgICAgIHJldHVybiBMaW5lVHlwZS50ZXh0XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIExpbmVUeXBlLmZvcm11bGFcbiAgICB9XG4gICAgZWxzZSBpZih0b2tlbi5jb250YWlucygnY29kZScpICYmIHRva2VuLmNvbnRhaW5zKCdibG9jaycpKXtcbiAgICAgICAgZm9yKGxldCBwPWxpbmUuZnJvbSsxO3A8bGluZS50bztwKz0xKXtcbiAgICAgICAgICAgIGxldCB0ID0gdHJlZS5yZXNvbHZlKHAsIDEpLm5hbWVcbiAgICAgICAgICAgIGlmKCEodC5jb250YWlucygnY29kZScpICYmIHQuY29udGFpbnMoJ2Jsb2NrJykpKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gTGluZVR5cGUudGV4dFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBMaW5lVHlwZS5jb2RlYmxvY2tcbiAgICB9XG5cbiAgICBmb3IobGV0IHA9bGluZS5mcm9tO3A8bGluZS50bztwKz0xKXtcbiAgICAgICAgaWYodHJlZS5yZXNvbHZlKHAsIDEpLm5hbWUuY29udGFpbnMoJ2xpc3QnKSl7XG4gICAgICAgICAgICByZXR1cm4gTGluZVR5cGUubGlzdFxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYodHJlZS5yZXNvbHZlKHAsIDEpLm5hbWUuY29udGFpbnMoJ2NhbGxvdXQnKSl7XG4gICAgICAgICAgICByZXR1cm4gTGluZVR5cGUuY2FsbG91dF90aXRsZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmKHRva2VuLmNvbnRhaW5zKCdxdW90ZScpKXtcbiAgICAgICAgcmV0dXJuIExpbmVUeXBlLnF1b3RlO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gTGluZVR5cGUudGV4dFxufSIsICJpbXBvcnQgeyBBbm5vdGF0aW9uLCBFZGl0b3JTdGF0ZSwgRXh0ZW5zaW9uLCBTdGF0ZUZpZWxkLCBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25TcGVjLCBUZXh0fSBmcm9tICdAY29kZW1pcnJvci9zdGF0ZSc7XG5pbXBvcnQgeyBFYXN5VHlwaW5nU2V0dGluZ1RhYiwgRWFzeVR5cGluZ1NldHRpbmdzLCBQYWlyU3RyaW5nLCBDb252ZXJ0UnVsZX0gZnJvbSBcIi4vc2V0dGluZ3NcIlxuaW1wb3J0IHsgQXBwLCBQbHVnaW4gfSBmcm9tICdvYnNpZGlhbidcblxubGV0IERFQlVHID0gdHJ1ZTtcblxuZXhwb3J0IGNvbnN0IHByaW50PShtZXNzYWdlPzogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pID0+e1xuICAgIGlmIChERUJVRykge1xuICAgICAgICBjb25zb2xlLmxvZyhtZXNzYWdlLCAuLi5vcHRpb25hbFBhcmFtcyk7XG4gICAgfVxufVxuXG5pbnRlcmZhY2UgQXBwSGlkZGVuUHJvcHMge1xuXHRpbnRlcm5hbFBsdWdpbnM6IHtcblx0XHRjb25maWc6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9O1xuXHR9O1xuXHRpc01vYmlsZTogYm9vbGVhbjtcblx0cGx1Z2luczoge1xuXHRcdGVuYWJsZWRQbHVnaW5zOiBTZXQ8c3RyaW5nPjtcblx0XHRtYW5pZmVzdHM6IHsgW2tleTogc3RyaW5nXTogeyB2ZXJzaW9uOiBzdHJpbmcgfSB9O1xuXHR9O1xuXHR2YXVsdDoge1xuXHRcdGNvbmZpZzogb2JqZWN0O1xuXHR9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9zVG9PZmZzZXQoZG9jOlRleHQsIHBvczp7bGluZTpudW1iZXIsIGNoOm51bWJlcn0pIHtcblx0cmV0dXJuIGRvYy5saW5lKHBvcy5saW5lICsgMSkuZnJvbSArIHBvcy5jaFxufVxuZXhwb3J0IGZ1bmN0aW9uIG9mZnNldFRvUG9zKGRvYzpUZXh0LCBvZmZzZXQ6bnVtYmVyKSB7XG5cdGxldCBsaW5lID0gZG9jLmxpbmVBdChvZmZzZXQpXG5cdHJldHVybiB7bGluZTogbGluZS5udW1iZXIgLSAxLCBjaDogb2Zmc2V0IC0gbGluZS5mcm9tfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHlwZVN0ck9mVHJhbnNhYyh0cjogVHJhbnNhY3Rpb24pOiBzdHJpbmcge1xuXHRsZXQgVHJhbnNhY1R5cGVBcnJheTpzdHJpbmdbXSA9IFtcIkVhc3lUeXBpbmcuY2hhbmdlXCIsIFxuXHRcdFx0XHRcdFx0XHRcImlucHV0LnR5cGUuY29tcG9zZVwiLCBcImlucHV0LnR5cGVcIiwgXCJpbnB1dC5wYXN0ZVwiLCBcImlucHV0LmRyb3BcIiwgXCJpbnB1dC5jb21wbGV0ZVwiLCBcImlucHV0XCIsXG5cdFx0XHRcdFx0XHRcdFwiZGVsZXRlLnNlbGVjdGlvblwiLCBcImRlbGV0ZS5mb3J3YXJkXCIsIFwiZGVsZXRlLmJhY2t3YXJkXCIsIFwiZGVsZXRlLmN1dFwiLCBcImRlbGV0ZVwiLFxuXHRcdFx0XHRcdFx0XHRcIm1vdmUuZHJvcFwiLFxuXHRcdFx0XHRcdFx0XHRcInVuZG9cIiwgXCJyZWRvXCIsXG5cdFx0XHRcdFx0XHRcdFwic2VsZWN0LnBvaW50ZXJcIl07XG5cdGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBUcmFuc2FjVHlwZUFycmF5Lmxlbmd0aDsgaSsrKVxuXHR7XG5cdFx0aWYgKHRyLmlzVXNlckV2ZW50KFRyYW5zYWNUeXBlQXJyYXlbaV0pKVxuXHRcdFx0cmV0dXJuIFRyYW5zYWNUeXBlQXJyYXlbaV07XG5cdH1cblx0cmV0dXJuIFwibm9uZVwiXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmcycGFpcnN0cmluZyhzOiBzdHJpbmcpOlBhaXJTdHJpbmd7XG5cdGxldCBjdXJzb3JJZHggPSBzLmluZGV4T2YoXCJ8XCIpO1xuXHRsZXQgbGVmdCA9IHMuc3Vic3RyaW5nKDAsIGN1cnNvcklkeCk7XG5cdGxldCByaWdodCA9IHMuc3Vic3RyaW5nKGN1cnNvcklkeCsxKTtcblx0cmV0dXJuIHtsZWZ0OmxlZnQsIHJpZ2h0OnJpZ2h0fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVTdHJpbmdMaXN0MlJ1bGVMaXN0KGxpc3Q6IEFycmF5PFtzdHJpbmcsIHN0cmluZ10+KTpDb252ZXJ0UnVsZVtdIHtcblx0bGV0IHJlczpDb252ZXJ0UnVsZVtdID0gW107XG5cdGZvciAobGV0IGkgaW4gbGlzdCl7XG5cdFx0cmVzW2ldID0ge2JlZm9yZTogc3RyaW5nMnBhaXJzdHJpbmcobGlzdFtpXVswXSksIGFmdGVyOiBzdHJpbmcycGFpcnN0cmluZyhsaXN0W2ldWzFdKX1cblx0fVxuXHRyZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nRGVsZXRlQXQoc3RyOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOnN0cmluZ1xue1xuICAgIHJldHVybiBzdHIuc3Vic3RyaW5nKDAsIGluZGV4KStzdHIuc3Vic3RyaW5nKGluZGV4KzEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nSW5zZXJ0QXQoc3RyOnN0cmluZywgaW5kZXg6IG51bWJlciwgczogc3RyaW5nKTpzdHJpbmdcbntcbiAgICByZXR1cm4gc3RyLnN1YnN0cmluZygwLCBpbmRleCkrcytzdHIuc3Vic3RyaW5nKGluZGV4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUGFyYW1EZWZpbmVkKHBhcmFtOiBhbnkpOmJvb2xlYW5cbntcblx0cmV0dXJuIHR5cGVvZiBwYXJhbSE9PVwidW5kZWZpbmVkXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93U3RyaW5nKHM6IHN0cmluZyk6c3RyaW5ne1xuXHRyZXR1cm4gcy5yZXBsYWNlKC9cXG4vZywgJ1xcXFxuJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPYnNpZGlhblNldHRpbmdzKHBsdWdpbjogUGx1Z2luKSB7XG5cdGNvbnN0IGFwcCA9IHBsdWdpbi5hcHAgYXMgYW55IGFzIEFwcEhpZGRlblByb3BzO1xuXHRyZXR1cm4gYXBwLnZhdWx0LmNvbmZpZztcbn1cblxuXG4vLyBDb2RlIEJlbG93IGlzIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3ZzbGlua28vb2JzaWRpYW4tb3V0bGluZXJcbi8vIENvcHlyaWdodCAoYykgMjAyMSBWaWFjaGVzbGF2IFNsaW5rb1xuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbi8vIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuLy8gU09GVFdBUkUuXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuVGFic1NldHRpbmdzIHtcblx0dXNlVGFiOiBib29sZWFuO1xuXHR0YWJTaXplOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JzaWRpYW5Gb2xkU2V0dGluZ3Mge1xuXHRmb2xkSW5kZW50OiBib29sZWFuO1xufVxuXG5mdW5jdGlvbiBnZXRIaWRkZW5PYnNpZGlhbkNvbmZpZyhhcHA6IEFwcCkge1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuXHRyZXR1cm4gKGFwcC52YXVsdCBhcyBhbnkpLmNvbmZpZztcbn1cblxuZXhwb3J0IGNsYXNzIE9ic2lkaWFuU2V0dGluZ3Mge1xuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGFwcDogQXBwKSB7fVxuXG5cdGlzTGVnYWN5RWRpdG9yRW5hYmxlZCgpIHtcblx0XHRjb25zdCBjb25maWc6IHsgbGVnYWN5RWRpdG9yOiBib29sZWFuIH0gPSB7XG5cdFx0XHRsZWdhY3lFZGl0b3I6IGZhbHNlLFxuXHRcdFx0Li4uZ2V0SGlkZGVuT2JzaWRpYW5Db25maWcodGhpcy5hcHApLFxuXHRcdH07XG5cblx0XHRyZXR1cm4gY29uZmlnLmxlZ2FjeUVkaXRvcjtcblx0fVxuXG5cdGlzRGVmYXVsdFRoZW1lRW5hYmxlZCgpIHtcblx0XHRjb25zdCBjb25maWc6IHsgY3NzVGhlbWU6IHN0cmluZyB9ID0ge1xuXHRcdFx0Y3NzVGhlbWU6IFwiXCIsXG5cdFx0XHQuLi5nZXRIaWRkZW5PYnNpZGlhbkNvbmZpZyh0aGlzLmFwcCksXG5cdFx0fTtcblxuXHRcdHJldHVybiBjb25maWcuY3NzVGhlbWUgPT09IFwiXCI7XG5cdH1cblxuXHRnZXRUYWJzU2V0dGluZ3MoKTogT2JzaWRpYW5UYWJzU2V0dGluZ3Mge1xuXHRcdHJldHVybiB7XG5cdFx0XHR1c2VUYWI6IHRydWUsXG5cdFx0XHR0YWJTaXplOiA0LFxuXHRcdFx0Li4uZ2V0SGlkZGVuT2JzaWRpYW5Db25maWcodGhpcy5hcHApLFxuXHRcdH07XG5cdH1cblxuXHRnZXRGb2xkU2V0dGluZ3MoKTogT2JzaWRpYW5Gb2xkU2V0dGluZ3Mge1xuXHRcdHJldHVybiB7XG5cdFx0XHRmb2xkSW5kZW50OiB0cnVlLFxuXHRcdFx0Li4uZ2V0SGlkZGVuT2JzaWRpYW5Db25maWcodGhpcy5hcHApLFxuXHRcdH07XG5cdH1cblxuXHRnZXREZWZhdWx0SW5kZW50Q2hhcnMoKSB7XG5cdFx0Y29uc3QgeyB1c2VUYWIsIHRhYlNpemUgfSA9IHRoaXMuZ2V0VGFic1NldHRpbmdzKCk7XG5cblx0XHRyZXR1cm4gdXNlVGFiID8gXCJcXHRcIiA6IG5ldyBBcnJheSh0YWJTaXplKS5maWxsKFwiIFwiKS5qb2luKFwiXCIpO1xuXHR9XG59IiwgImltcG9ydCB7IFNwYWNlU3RhdGUsIHN0cmluZzJTcGFjZVN0YXRlIH0gZnJvbSAnc3JjL2NvcmUnO1xuaW1wb3J0IHsgQXBwLCBUZXh0Q29tcG9uZW50LCBNYXJrZG93blZpZXcsIE1vZGFsLCBOb3RpY2UsIFBsdWdpbiwgUGx1Z2luU2V0dGluZ1RhYiwgU2V0dGluZywgV29ya3NwYWNlLCBXb3Jrc3BhY2VMZWFmLCBUZXh0QXJlYUNvbXBvbmVudCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCBFYXN5VHlwaW5nUGx1Z2luIGZyb20gJy4vbWFpbic7XG5pbXBvcnQgeyBzaG93U3RyaW5nIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFpclN0cmluZyB7XG5cdGxlZnQ6IHN0cmluZztcblx0cmlnaHQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb252ZXJ0UnVsZSB7XG5cdGJlZm9yZTogUGFpclN0cmluZztcblx0YWZ0ZXI6IFBhaXJTdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIFJ1bGVUeXBlIHtkZWxldGU9IFwiRGVsZXRlIFJ1bGVcIiwgY29udmVydD0nQ29udmVydCBSdWxlJ31cbmV4cG9ydCBlbnVtIFdvcmtNb2RlIHsgT25seVdoZW5UeXBpbmcgPSBcInR5cGluZ1wiLCBHbG9iYWxseSA9IFwiZ2xvYmFsXCIgfVxuXG5leHBvcnQgaW50ZXJmYWNlIEVhc3lUeXBpbmdTZXR0aW5ncyB7XG5cdFRhYm91dDogYm9vbGVhbjtcblx0U2VsZWN0aW9uRW5oYW5jZTogYm9vbGVhbjtcblx0SW50cmluc2ljU3ltYm9sUGFpcnM6IGJvb2xlYW47XG5cdEJhc2VPYkVkaXRFbmhhbmNlOiBib29sZWFuO1xuXHRGVzJIV0VuaGFuY2U6IGJvb2xlYW47XG5cdEF1dG9Gb3JtYXQ6IGJvb2xlYW47XG5cdEV4Y2x1ZGVGaWxlczogc3RyaW5nO1xuXHRBdXRvQ2FwaXRhbDogYm9vbGVhbjtcblx0QXV0b0NhcGl0YWxNb2RlOiBXb3JrTW9kZTtcblx0Q2hpbmVzZUVuZ2xpc2hTcGFjZTogYm9vbGVhbjtcblx0RW5nbGlzaE51bWJlclNwYWNlOiBib29sZWFuO1xuXHRDaGluZXNlTm9TcGFjZTogYm9vbGVhbjtcblx0Q2hpbmVzZU51bWJlclNwYWNlOiBib29sZWFuO1xuXHRQdW5jdHVhdGlvblNwYWNlOiBib29sZWFuO1xuXHRQdW5jdHVhdGlvblNwYWNlTW9kZTogV29ya01vZGU7XG5cdElubGluZUNvZGVTcGFjZU1vZGU6IFNwYWNlU3RhdGU7XG5cdElubGluZUZvcm11bGFTcGFjZU1vZGU6IFNwYWNlU3RhdGU7XG5cdElubGluZUxpbmtTcGFjZU1vZGU6IFNwYWNlU3RhdGU7XG5cdElubGluZUxpbmtTbWFydFNwYWNlOiBib29sZWFuO1xuXHRVc2VyRGVmaW5lZFJlZ1N3aXRjaDogYm9vbGVhbjtcblx0VXNlckRlZmluZWRSZWdFeHA6IHN0cmluZztcblx0ZGVidWc6IGJvb2xlYW47XG5cblx0dXNlclNlbFJlcFJ1bGVUcmlnZ2VyOiBzdHJpbmdbXTtcblx0dXNlclNlbFJlcFJ1bGVWYWx1ZTogUGFpclN0cmluZ1tdO1xuXHR1c2VyRGVsZXRlUnVsZXNTdHJMaXN0OiBbc3RyaW5nLCBzdHJpbmddW107XG5cdHVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0OiBbc3RyaW5nLCBzdHJpbmddW107XG5cdHVzZXJTZWxSdWxlU2V0dGluZ3NPcGVuOiBib29sZWFuO1xuXHR1c2VyRGVsUnVsZVNldHRpbmdzT3BlbjogYm9vbGVhbjtcblx0dXNlckN2dFJ1bGVTZXR0aW5nc09wZW46IGJvb2xlYW47XG5cblx0RW50ZXJUd2ljZTogYm9vbGVhbjtcblx0UHVuY1JlY3RpZnk6IGJvb2xlYW47XG5cdFRyeUZpeENoaW5lc2VJTTogYm9vbGVhbjtcblx0Rml4TWFjT1NDb250ZXh0TWVudTogYm9vbGVhbjtcblx0VHJ5Rml4TVNJTUU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NFVFRJTkdTOiBFYXN5VHlwaW5nU2V0dGluZ3MgPSB7XG5cdFRhYm91dDogdHJ1ZSxcblx0U2VsZWN0aW9uRW5oYW5jZTogdHJ1ZSxcblx0SW50cmluc2ljU3ltYm9sUGFpcnM6IHRydWUsXG5cdEJhc2VPYkVkaXRFbmhhbmNlOiB0cnVlLFxuXHRGVzJIV0VuaGFuY2U6IHRydWUsXG5cblx0QXV0b0Zvcm1hdDogdHJ1ZSxcblx0RXhjbHVkZUZpbGVzOiBcIlwiLFxuXHRDaGluZXNlRW5nbGlzaFNwYWNlOiB0cnVlLFxuXHRDaGluZXNlTnVtYmVyU3BhY2U6IHRydWUsXG5cdEVuZ2xpc2hOdW1iZXJTcGFjZTogdHJ1ZSxcblx0Q2hpbmVzZU5vU3BhY2U6IHRydWUsXG5cdFB1bmN0dWF0aW9uU3BhY2U6IHRydWUsXG5cdEF1dG9DYXBpdGFsOiB0cnVlLFxuXHRBdXRvQ2FwaXRhbE1vZGU6IFdvcmtNb2RlLk9ubHlXaGVuVHlwaW5nLFxuXHRQdW5jdHVhdGlvblNwYWNlTW9kZTogV29ya01vZGUuT25seVdoZW5UeXBpbmcsXG5cdElubGluZUNvZGVTcGFjZU1vZGU6IFNwYWNlU3RhdGUuc29mdCxcblx0SW5saW5lRm9ybXVsYVNwYWNlTW9kZTogU3BhY2VTdGF0ZS5zb2Z0LFxuXHRJbmxpbmVMaW5rU3BhY2VNb2RlOiBTcGFjZVN0YXRlLnNvZnQsXG5cdElubGluZUxpbmtTbWFydFNwYWNlOiB0cnVlLFxuXHRVc2VyRGVmaW5lZFJlZ1N3aXRjaDogdHJ1ZSxcblx0VXNlckRlZmluZWRSZWdFeHA6IFwie3suKj99fXwrK1xcblwiK1xuXHRcdFwiPC4qPz58LS1cXG5cIiArXG5cdFx0XCJcXFxcW1xcXFwhLio/XFxcXF1bLStdezAsMX18LStcXG5cIitcblx0XHRcIihmaWxlOi8vL3xodHRwcz86Ly98ZnRwOi8vfG9ic2lkaWFuOi8vfHpvdGVybzovL3x3d3cuKVteXFxcXHNcdUZGMDhcdUZGMDlcdTMwMEFcdTMwMEJcdTMwMDIsXHVGRjBDXHVGRjAxXHVGRjFGO1x1RkYxQlx1RkYxQVx1MjAxQ1x1MjAxRFx1MjAxOFx1MjAxOVxcXFwpXFxcXChcXFxcW1xcXFxdXFxcXHtcXFxcfSddK3wtLVxcblwiK1xuXHRcdFwiXFxuW2EtekEtWjAtOV9cXFxcLS5dK0BbYS16QS1aMC05X1xcXFwtLl0rfCsrXFxuXCIrXG5cdFx0XCIoPzwhIykjW1xcXFx1NGUwMC1cXFxcdTlmYTVcXFxcdy1cXFxcL10rfCsrXCIsXG5cdGRlYnVnOiBmYWxzZSxcblx0dXNlclNlbFJlcFJ1bGVUcmlnZ2VyOiBbXCItXCIsIFwiI1wiXSxcblx0dXNlclNlbFJlcFJ1bGVWYWx1ZTogW3tsZWZ0Olwifn5cIiwgcmlnaHQ6XCJ+flwifSwge2xlZnQ6XCIjXCIsIHJpZ2h0OlwiIFwifV0sXG5cdHVzZXJEZWxldGVSdWxlc1N0ckxpc3Q6IFtbXCJkZW1vfFwiLCBcInxcIl1dLFxuXHR1c2VyQ29udmVydFJ1bGVzU3RyTGlzdDogW1tcIjopfFwiLFwiXHVEODNEXHVERTAwfFwiXV0sXG5cdHVzZXJTZWxSdWxlU2V0dGluZ3NPcGVuOiB0cnVlLFxuXHR1c2VyRGVsUnVsZVNldHRpbmdzT3BlbjogdHJ1ZSxcblx0dXNlckN2dFJ1bGVTZXR0aW5nc09wZW46IHRydWUsXG5cblx0RW50ZXJUd2ljZTogZmFsc2UsXG5cdFRyeUZpeENoaW5lc2VJTTogdHJ1ZSxcblx0UHVuY1JlY3RpZnk6IGZhbHNlLFxuXHRGaXhNYWNPU0NvbnRleHRNZW51OiBmYWxzZSxcblx0VHJ5Rml4TVNJTUU6IGZhbHNlLFxufVxuXG5leHBvcnQgY2xhc3MgRWFzeVR5cGluZ1NldHRpbmdUYWIgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcblx0cGx1Z2luOiBFYXN5VHlwaW5nUGx1Z2luO1xuXG5cdGNvbnN0cnVjdG9yKGFwcDogQXBwLCBwbHVnaW46IEVhc3lUeXBpbmdQbHVnaW4pIHtcblx0XHRzdXBlcihhcHAsIHBsdWdpbik7XG5cdFx0dGhpcy5wbHVnaW4gPSBwbHVnaW47XG5cdH1cblxuXHRkaXNwbGF5KCk6IHZvaWQge1xuXHRcdGNvbnN0IHsgY29udGFpbmVyRWwgfSA9IHRoaXM7XG5cblx0XHRjb250YWluZXJFbC5lbXB0eSgpO1xuXG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoXCJoMVwiLCB7IHRleHQ6IFwiT2JzaWRpYW4gRWFzeVR5cGluZyBQbHVnaW5cIiB9KTtcblx0XHRjb250YWluZXJFbC5jcmVhdGVFbChcInBcIiwgeyB0ZXh0OiBcIk1vcmUgZGV0YWlsIGlzIGluIEdpdGh1YjogXCIgfSkuY3JlYXRlRWwoXCJhXCIsIHtcblx0XHRcdHRleHQ6IFwiZWFzeS10eXBpbmctb2JzaWRpYW5cIixcblx0XHRcdGhyZWY6IFwiaHR0cHM6Ly9naXRodWIuY29tL1lhb3podXdhL2Vhc3ktdHlwaW5nLW9ic2lkaWFuXCIsXG5cdFx0fSk7XG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDInLCB7IHRleHQ6ICdcdTU4OUVcdTVGM0FcdTdGMTZcdThGOTFcdThCQkVcdTdGNkUgKEVuaGFuY2VkIEVkaXRpbmcgU2V0dGluZyknIH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlN5bWJvbCBhdXRvIHBhaXIgYW5kIGRlbGV0ZSB3aXRoIHBhaXJcIilcblx0XHRcdC5zZXREZXNjKFwiXHU1ODlFXHU1MkEwXHU1OTFBXHU3OUNEXHU3QjI2XHU1M0Y3XHU5MTREXHU1QkY5XHU4RjkzXHU1MTY1XHVGRjBDXHU5MTREXHU1QkY5XHU1MjIwXHU5NjY0XHVGRjBDXHU1OTgyXHUzMDBBXHUzMDBCLCBcdTIwMUNcdTIwMUQsIFx1MzAwQ1x1MzAwRCwgXHUzMDBFXHUzMDBGLFx1MzAxMFx1MzAxMVx1N0I0OVwiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5JbnRyaW5zaWNTeW1ib2xQYWlycylcblx0XHRcdFx0XHQub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5JbnRyaW5zaWNTeW1ib2xQYWlycyA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJTZWxlY3Rpb24gUmVwbGFjZSBFbmhhbmNlbWVudFwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTkwMDlcdTRFMkRcdTY1ODdcdTY3MkNcdTYwQzVcdTUxQjVcdTRFMEJcdTc2ODRcdTdGMTZcdThGOTFcdTU4OUVcdTVGM0FcdUZGMENcdTYzMDlcdUZGRTVcdTIxOTIkXHU5MDA5XHU0RTJEXHU3Njg0XHU2NTg3XHU2NzJDJCwgXHU2MzA5XHUwMEI3XHUyMTkyYFx1OTAwOVx1NEUyRFx1NzY4NFx1NjU4N1x1NjcyQ2BcdUZGMENcdTMwMEEgXHUyMTkyIFx1MzAwQVx1OTAwOVx1NEUyRFx1NzY4NFx1NjU4N1x1NjcyQ1x1MzAwQlx1N0I0OVx1N0I0OVwiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5TZWxlY3Rpb25FbmhhbmNlKVxuXHRcdFx0XHRcdC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLlNlbGVjdGlvbkVuaGFuY2UgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiQ29udmVydCBzdWNjZXNzaXZlIGZ1bGwgd2lkdGggc3ltYm9sIHRvIGhhbGYgd2lkdGggc3ltYm9sXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1OEZERVx1N0VFRFx1OEY5M1x1NTE2NVx1NTE2OFx1ODlEMlx1N0IyNlx1NTNGN1x1OEY2Q1x1NTM0QVx1ODlEMlx1RkYwQ1x1MzAwMlx1MzAwMlx1MjE5MiAuXHVGRjBDXHVGRjAxXHVGRjAxXHUyMTkyICFcdUZGMEMgXHUzMDBCXHUzMDBCXHUyMTkyID5cIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuRlcySFdFbmhhbmNlKVxuXHRcdFx0XHRcdC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkZXMkhXRW5oYW5jZSA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJCYXNpYyBzeW1ib2wgaW5wdXQgZW5oYW5jZSBmb3Igb2JzaWRpYW5cIilcblx0XHRcdC5zZXREZXNjKFwiT2JzaWRpYW4gXHU3Njg0XHU1N0ZBXHU3ODQwXHU4RjkzXHU1MTY1XHU1ODlFXHU1RjNBXHVGRjBDXHU1OTgyXHUzMDEwXHUzMDEwfCBcdTIxOTIgW1t8XV1cdUZGMENcdTUzRTVcdTk5OTZcdTc2ODRcdTMwMDFcdTIxOTIgL1x1RkYwQ1x1NTNFNVx1OTk5Nlx1NzY4NFx1MzAwQlx1MjE5MiA+XHVGRjBDXHUwMEI3XHUwMEI3fCBcdTIxOTIgYHxgXHVGRjBDIGBcdTAwQjd8YCBcdTUzRDhcdTYyMTBcdTRFRTNcdFx1NzgwMVx1NTc1N1x1RkYwQ1x1RkZFNVx1RkZFNXwgXHUyMTkyICR8JFwiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5CYXNlT2JFZGl0RW5oYW5jZSlcblx0XHRcdFx0XHQub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5CYXNlT2JFZGl0RW5oYW5jZSA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJUYWJvdXRcIilcblx0XHRcdC5zZXREZXNjKFwiVGFib3V0IGlubGluZSBjb2RlIG9yIHBhaXJlZCBzeW1ib2xzKHdoZW4gc2VsZWN0ZWQpLiBUYWIgXHU4REYzXHU1MUZBXHU4ODRDXHU1MTg1XHU0RUUzXHU3ODAxXHU1NzU3XHU2MjE2XHU5MTREXHU1QkY5XHU3QjI2XHU1M0Y3XHU1NzU3KFx1OTAwOVx1NEUyRFx1NjVGNilcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuVGFib3V0KVxuXHRcdFx0XHRcdC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLlRhYm91dCA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMicsIHsgdGV4dDogJ1x1ODFFQVx1NUI5QVx1NEU0OVx1N0YxNlx1OEY5MVx1OEY2Q1x1NjM2Mlx1ODlDNFx1NTIxOSAoQ3VzdG9taXplIEVkaXQgQ29udmVydGlvbiBSdWxlKScgfSk7XG5cdFx0dGhpcy5idWlsZFVzZXJTZWxSZXBSdWxlU2V0dGluZyh0aGlzLmNvbnRhaW5lckVsLmNyZWF0ZUVsKFwiZGV0YWlsc1wiLCB7XG5cdFx0XHRjbHM6IFwiZWFzeXR5cGluZy1uZXN0ZWQtc2V0dGluZ3NcIixcblx0XHRcdGF0dHI6IHtcblx0XHRcdFx0Li4uKHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJTZWxSdWxlU2V0dGluZ3NPcGVuP3sgb3BlbjogdHJ1ZSB9Ont9KVxuXHRcdFx0fVxuXHRcdH0pKVxuXG5cdFx0dGhpcy5idWlsZFVzZXJEZWxldGVSdWxlU2V0dGluZyh0aGlzLmNvbnRhaW5lckVsLmNyZWF0ZUVsKFwiZGV0YWlsc1wiLCB7XG5cdFx0XHRjbHM6IFwiZWFzeXR5cGluZy1uZXN0ZWQtc2V0dGluZ3NcIixcblx0XHRcdGF0dHI6IHtcblx0XHRcdFx0Li4uKHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJEZWxSdWxlU2V0dGluZ3NPcGVuP3sgb3BlbjogdHJ1ZSB9Ont9KVxuXHRcdFx0fVxuXHRcdH0pKVxuXG5cdFx0dGhpcy5idWlsZFVzZXJDb252ZXJ0UnVsZVNldHRpbmcodGhpcy5jb250YWluZXJFbC5jcmVhdGVFbChcImRldGFpbHNcIiwge1xuXHRcdFx0Y2xzOiBcImVhc3l0eXBpbmctbmVzdGVkLXNldHRpbmdzXCIsXG5cdFx0XHRhdHRyOiB7XG5cdFx0XHRcdC4uLih0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyQ3Z0UnVsZVNldHRpbmdzT3Blbj97IG9wZW46IHRydWUgfTp7fSlcblx0XHRcdH1cblx0XHR9KSlcblx0XHRcblxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMicsIHsgdGV4dDogJ1x1ODFFQVx1NTJBOFx1NjgzQ1x1NUYwRlx1NTMxNlx1OEJCRVx1N0Y2RSAoQXV0b2Zvcm1hdCBTZXR0aW5nKScgfSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiQXV0byBmb3JtYXR0aW5nIHdoZW4gdHlwaW5nXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NjYyRlx1NTQyNlx1NTcyOFx1N0YxNlx1OEY5MVx1NjU4N1x1Njg2M1x1NjVGNlx1ODFFQVx1NTJBOFx1NjgzQ1x1NUYwRlx1NTMxNlx1NjU4N1x1NjcyQ1x1RkYwQ1x1ODFFQVx1NTJBOFx1NjgzQ1x1NUYwRlx1NTMxNlx1NzY4NFx1NjAzQlx1NUYwMFx1NTE3M1wiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5BdXRvRm9ybWF0KVxuXHRcdFx0XHRcdC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkF1dG9Gb3JtYXQgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ3AnLCB7IHRleHQ6ICdEZXRhaWxlZCBTZXR0aW5nIEJlbG93JyB9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJTcGFjZSBiZXR3ZWVuIENoaW5lc2UgYW5kIEVuZ2xpc2hcIilcblx0XHRcdC5zZXREZXNjKFwiXHU1NzI4XHU0RTJEXHU2NTg3XHU1NDhDXHU4MkYxXHU2NTg3XHU5NUY0XHU3QTdBXHU2ODNDXCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkNoaW5lc2VFbmdsaXNoU3BhY2UpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkNoaW5lc2VFbmdsaXNoU3BhY2UgPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJTcGFjZSBiZXR3ZWVuIENoaW5lc2UgYW5kIE51bWJlclwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTU3MjhcdTRFMkRcdTY1ODdcdTU0OENcdTY1NzBcdTVCNTdcdTk1RjRcdTdBN0FcdTY4M0NcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuQ2hpbmVzZU51bWJlclNwYWNlKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5DaGluZXNlTnVtYmVyU3BhY2UgPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHRcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiU3BhY2UgYmV0d2VlbiBFbmdpbHNoIGFuZCBOdW1iZXJcIilcblx0XHRcdC5zZXREZXNjKFwiXHU1NzI4XHU4MkYxXHU2NTg3XHU1NDhDXHU2NTcwXHU1QjU3XHU5NUY0XHU3QTdBXHU2ODNDXCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkVuZ2xpc2hOdW1iZXJTcGFjZSkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuRW5nbGlzaE51bWJlclNwYWNlID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiRGVsZXRlIHRoZSBTcGFjZSBiZXR3ZWVuIENoaW5lc2UgY2hhcmFjdGVyc1wiKVxuXHRcdFx0LnNldERlc2MoXCJcdTU3MjhcdTRFMkRcdTY1ODdcdTVCNTdcdTdCMjZcdTk1RjRcdTUzQkJcdTk2NjRcdTdBN0FcdTY4M0NcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuQ2hpbmVzZU5vU3BhY2UpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkNoaW5lc2VOb1NwYWNlID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiQ2FwaXRhbGl6ZSB0aGUgZmlyc3QgbGV0dGVyIG9mIGV2ZXJ5IHNlbnRlbmNlXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1ODJGMVx1NjU4N1x1NkJDRlx1NEUyQVx1NTNFNVx1OTk5Nlx1NUI1N1x1NkJDRFx1NTkyN1x1NTE5OVwiKVxuXHRcdFx0LmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4ge1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oV29ya01vZGUuT25seVdoZW5UeXBpbmcsIFwiXHU4RjkzXHU1MTY1XHU2NUY2XHU3NTFGXHU2NTQ4KE9ubHkgV2hlbiBUeXBpbmcpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oV29ya01vZGUuR2xvYmFsbHksIFwiXHU1MTY4XHU1QzQwXHU3NTFGXHU2NTQ4KFdvcmsgR2xvYmFsbHkpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5BdXRvQ2FwaXRhbE1vZGUpO1xuXHRcdFx0XHRkcm9wZG93bi5vbkNoYW5nZShhc3luYyAodjogV29ya01vZGUuT25seVdoZW5UeXBpbmcgfCBXb3JrTW9kZS5HbG9iYWxseSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLkF1dG9DYXBpdGFsTW9kZSA9IHY7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pXG5cdFx0XHR9KVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRUb29sdGlwKFwiXHU1MjlGXHU4MEZEXHU1RjAwXHU1MTczKFN3aXRjaClcIik7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5BdXRvQ2FwaXRhbCkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuQXV0b0NhcGl0YWwgPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJTbWFydGx5IGluc2VydCBzcGFjZSBiZXR3ZWVuIHRleHQgYW5kIHB1bmN0dWF0aW9uXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1NTcyOFx1NjU4N1x1NjcyQ1x1NTQ4Q1x1NjgwN1x1NzBCOVx1OTVGNFx1NkRGQlx1NTJBMFx1N0E3QVx1NjgzQ1wiKVxuXHRcdFx0LmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4ge1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oV29ya01vZGUuT25seVdoZW5UeXBpbmcsIFwiXHU4RjkzXHU1MTY1XHU2NUY2XHU3NTFGXHU2NTQ4KE9ubHkgV2hlbiBUeXBpbmcpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oV29ya01vZGUuR2xvYmFsbHksIFwiXHU1MTY4XHU1QzQwXHU3NTFGXHU2NTQ4KFdvcmsgR2xvYmFsbHkpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5QdW5jdHVhdGlvblNwYWNlTW9kZSk7XG5cdFx0XHRcdGRyb3Bkb3duLm9uQ2hhbmdlKGFzeW5jICh2OiBXb3JrTW9kZS5Pbmx5V2hlblR5cGluZyB8IFdvcmtNb2RlLkdsb2JhbGx5KSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuUHVuY3R1YXRpb25TcGFjZU1vZGUgPSB2O1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuUHVuY3R1YXRpb25TcGFjZSkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuUHVuY3R1YXRpb25TcGFjZSA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlNwYWNlIHN0YXRlZ3kgYmV0d2VlbiBpbmxpbmUgY29kZSBhbmQgdGV4dFwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTU3MjggYFx1ODg0Q1x1NTE4NVx1NEVFM1x1NzgwMWAgXHU1NDhDXHU2NTg3XHU2NzJDXHU5NUY0XHU3Njg0XHU3QTdBXHU2ODNDXHU3QjU2XHU3NTY1XHUzMDAyXCIgK1xuXHRcdFx0XHRcIlx1NjVFMFx1ODk4MVx1NkM0Mlx1RkYxQVx1NUJGOVx1NjcyQ1x1N0M3Qlx1NTIyQlx1NTc1N1x1NEUwRVx1NURFNlx1NTNGM1x1NjU4N1x1NjcyQ1x1NkNBMVx1NjcwOVx1N0E3QVx1NjgzQ1x1NzY4NFx1ODk4MVx1NkM0Mlx1RkYwQ1wiICtcblx0XHRcdFx0XCJcdThGNkZcdTdBN0FcdTY4M0NcdUZGMUFcdTVCRjlcdTY3MkNcdTdDN0JcdTUyMkJcdTU3NTdcdTRFMEVcdTU0NjhcdTU2RjRcdTUzM0FcdTU3NTdcdTUzRUFcdTg5ODFcdTZDNDJcdTY3MDlcdThGNkZcdTdBN0FcdTY4M0NcdUZGMENcdThGNkZcdTdBN0FcdTY4M0NcdTU5ODJcdTVGNTNcdTUyNERcdTU3NTdcdTVERTZcdThGQjlcdTc2ODRcdTRFMzRcdThGRDFcdTY1ODdcdTY3MkNcdTRFM0FcdTMwMDJcdUZGMENcdUZGMUJcdUZGMUZcdTdCNDlcdTUxNjhcdTg5RDJcdTY4MDdcdTcwQjlcdUZGMENcdTVGNTNcdTUyNERcdTU3NTdcdTUzRjNcdThGQjlcdTc2ODRcdTRFMzRcdThGRDFcdTY1ODdcdTY3MkNcdTRFM0FcdTYyNDBcdTY3MDlcdTUxNjhcdTUzNEFcdTg5RDJcdTY4MDdcdTcwQjlcdUZGMENcIiArXG5cdFx0XHRcdFwiXHU0RTI1XHU2ODNDXHU3QTdBXHU2ODNDXHVGRjFBXHU1RjUzXHU1MjREXHU1NzU3XHU0RTBFXHU0RTM0XHU4RkQxXHU2NTg3XHU2NzJDXHU0RTRCXHU5NUY0XHU0RTI1XHU2ODNDXHU2REZCXHU1MkEwXHU3QTdBXHU2ODNDXHUzMDAyXCJcblx0XHRcdClcblx0XHRcdC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFN0cmluZyhTcGFjZVN0YXRlLm5vbmUpLCBcIlx1NjVFMFx1ODk4MVx1NkM0MihObyBSZXF1aXJlKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFN0cmluZyhTcGFjZVN0YXRlLnNvZnQpLCBcIlx1OEY2Rlx1N0E3QVx1NjgzQyhTb2Z0IFNwYWNlKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFN0cmluZyhTcGFjZVN0YXRlLnN0cmljdCksIFwiXHU0RTI1XHU2ODNDXHU3QTdBXHU2ODNDKFN0cmljdCBTcGFjZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLnNldFZhbHVlKFN0cmluZyh0aGlzLnBsdWdpbi5zZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlKSk7XG5cdFx0XHRcdGRyb3Bkb3duLm9uQ2hhbmdlKGFzeW5jICh2OiBzdHJpbmcpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5JbmxpbmVDb2RlU3BhY2VNb2RlID0gc3RyaW5nMlNwYWNlU3RhdGUodik7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pXG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJTcGFjZSBzdGF0ZWd5IGJldHdlZW4gaW5saW5lIGZvcm11bGEgYW5kIHRleHRcIilcblx0XHRcdC5zZXREZXNjKFwiXHU1NzI4ICRcdTg4NENcdTUxODVcdTUxNkNcdTVGMEYkIFx1NTQ4Q1x1NjU4N1x1NjcyQ1x1OTVGNFx1NzY4NFx1N0E3QVx1NjgzQ1x1N0I1Nlx1NzU2NVwiKVxuXHRcdFx0LmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4ge1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oU3RyaW5nKFNwYWNlU3RhdGUubm9uZSksIFwiXHU2NUUwXHU4OTgxXHU2QzQyKE5vIFJlcXVpcmUpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oU3RyaW5nKFNwYWNlU3RhdGUuc29mdCksIFwiXHU4RjZGXHU3QTdBXHU2ODNDKFNvZnQgU3BhY2UpXCIpO1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oU3RyaW5nKFNwYWNlU3RhdGUuc3RyaWN0KSwgXCJcdTRFMjVcdTY4M0NcdTdBN0FcdTY4M0MoU3RyaWN0IFNwYWNlKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uc2V0VmFsdWUoU3RyaW5nKHRoaXMucGx1Z2luLnNldHRpbmdzLklubGluZUZvcm11bGFTcGFjZU1vZGUpKTtcblx0XHRcdFx0ZHJvcGRvd24ub25DaGFuZ2UoYXN5bmMgKHY6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLklubGluZUZvcm11bGFTcGFjZU1vZGUgPSBzdHJpbmcyU3BhY2VTdGF0ZSh2KTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSlcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlNwYWNlIHN0cmF0ZWd5IGJldHdlZW4gbGluayBhbmQgdGV4dFwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTU3MjggW1t3aWtpbGlua11dIFttZGxpbmtdKC4uLikgXHU1NDhDXHU2NTg3XHU2NzJDXHU5NUY0XHU3QTdBXHU2ODNDXHU3QjU2XHU3NTY1XHUzMDAyXHU2NjdBXHU4MEZEXHU3QTdBXHU2ODNDXHU2QTIxXHU1RjBGXHU0RTBCXHU1MjE5XHU0RjFBXHU4MDAzXHU4NjUxXHU4QkU1XHU5NEZFXHU2M0E1XHU1NzU3XHU3Njg0XHU2NjNFXHU3OTNBXHU1MTg1XHU1QkI5XHVGRjA4XHU1OTgyd2lraVx1OTRGRVx1NjNBNVx1NzY4NFx1NTIyQlx1NTQwRFx1RkYwOVx1Njc2NVx1NEUwRVx1NEUzNFx1OEZEMVx1NjU4N1x1NjcyQ1x1OEZEQlx1ODg0Q1x1N0E3QVx1NjgzQ1x1MzAwMlwiKVxuXHRcdFx0LmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4ge1xuXHRcdFx0XHRkcm9wZG93bi5hZGRPcHRpb24oXCJkdW1teVwiLCBcIlx1NTQ0Nlx1N0E3QVx1NjgzQyhkdW1teSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbihcInNtYXJ0XCIsIFwiXHU2NjdBXHU4MEZEXHU3QTdBXHU2ODNDKFNtYXJ0KVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lTGlua1NtYXJ0U3BhY2UgPyBcInNtYXJ0XCIgOiBcImR1bW15XCIpO1xuXHRcdFx0XHRkcm9wZG93bi5vbkNoYW5nZShhc3luYyAodjogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuSW5saW5lTGlua1NtYXJ0U3BhY2UgPSB2ID09IFwic21hcnRcIiA/IHRydWUgOiBmYWxzZTtcblx0XHRcdFx0XHQvLyBuZXcgTm90aWNlKFN0cmluZyh0aGlzLnBsdWdpbi5zZXR0aW5ncy5JbmxpbmVMaW5rU21hcnRTcGFjZSkpO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblx0XHRcdC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFN0cmluZyhTcGFjZVN0YXRlLm5vbmUpLCBcIlx1NjVFMFx1ODk4MVx1NkM0MihObyBSZXF1aXJlKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFN0cmluZyhTcGFjZVN0YXRlLnNvZnQpLCBcIlx1OEY2Rlx1N0E3QVx1NjgzQyhTb2Z0IFNwYWNlKVwiKTtcblx0XHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKFN0cmluZyhTcGFjZVN0YXRlLnN0cmljdCksIFwiXHU0RTI1XHU2ODNDXHU3QTdBXHU2ODNDKFN0cmljdCBTcGFjZSlcIik7XG5cdFx0XHRcdGRyb3Bkb3duLnNldFZhbHVlKFN0cmluZyh0aGlzLnBsdWdpbi5zZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlKSk7XG5cdFx0XHRcdGRyb3Bkb3duLm9uQ2hhbmdlKGFzeW5jICh2OiBzdHJpbmcpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5JbmxpbmVMaW5rU3BhY2VNb2RlID0gc3RyaW5nMlNwYWNlU3RhdGUodik7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pXG5cdFx0XHR9KVxuXG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2gyJywgeyB0ZXh0OiAnXHU4MUVBXHU1QjlBXHU0RTQ5XHU2QjYzXHU1MjE5XHU1MzNBXHU1NzU3IChDdXN0b20gcmVndWxhciBleHByZXNzaW9ucyBibG9jayknIH0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJVc2VyIERlZmluZWQgUmVnRXhwIFN3aXRjaFwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTgxRUFcdTVCOUFcdTRFNDlcdTZCNjNcdTUyMTlcdTg4NjhcdThGQkVcdTVGMEZcdTVGMDBcdTUxNzNcdUZGMENcdTUzMzlcdTkxNERcdTUyMzBcdTc2ODRcdTUxODVcdTVCQjlcdTRFMERcdThGREJcdTg4NENcdTY4M0NcdTVGMEZcdTUzMTZcdUZGMENcdTRFMTRcdTUzRUZcdTRFRTVcdThCQkVcdTdGNkVcdTUzMzlcdTkxNERcdTUyMzBcdTc2ODRcdTUxODVcdTVCQjlcdTU3NTdcdTRFMEVcdTUxNzZcdTRFRDZcdTUxODVcdTVCQjlcdTRFNEJcdTk1RjRcdTc2ODRcdTdBN0FcdTY4M0NcdTdCNTZcdTc1NjVcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuVXNlckRlZmluZWRSZWdTd2l0Y2gpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLlVzZXJEZWZpbmVkUmVnU3dpdGNoID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbChcInBcIiwgeyB0ZXh0OiBcIlx1NkI2M1x1NTIxOVx1ODg2OFx1OEZCRVx1NUYwRlx1NzZGOFx1NTE3M1x1NzdFNVx1OEJDNlx1RkYwQ1x1ODlDMSBcIiB9KS5jcmVhdGVFbChcImFcIiwge1xuXHRcdFx0dGV4dDogXCJcdTMwMEFcdTk2MkVcdTRFMDBcdTVDRjBcdUZGMUFcdTZCNjNcdTUyMTlcdTg4NjhcdThGQkVcdTVGMEZcdTdCODBcdTY2MEVcdTY1NTlcdTdBMEJcdTMwMEJcIixcblx0XHRcdGhyZWY6IFwiaHR0cHM6Ly9qYXZhc2NyaXB0LnJ1YW55aWZlbmcuY29tL3N0ZGxpYi9yZWdleHAuaHRtbCNcIixcblx0XHR9KTtcblxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwicFwiLCB7IHRleHQ6IFwiXHU2QjYzXHU1MjE5XHU4ODY4XHU4RkJFXHU1RjBGXHU4OUM0XHU1MjE5XHU0RjdGXHU3NTI4XHU4QkY0XHU2NjBFXHU0RTBFXHU3OTNBXHU0RjhCXHVGRjFBXCIgfSkuY3JlYXRlRWwoXCJhXCIsIHtcblx0XHRcdHRleHQ6IFwiXHU4MUVBXHU1QjlBXHU0RTQ5XHU2QjYzXHU1MjE5XHU4ODY4XHU4RkJFXHU1RjBGXHU4OUM0XHU1MjE5XCIsXG5cdFx0XHRocmVmOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9ZYW96aHV3YS9lYXN5LXR5cGluZy1vYnNpZGlhbi9ibG9iL21hc3Rlci9Vc2VyRGVmaW5lZFJlZ0V4cC5tZFwiLFxuXHRcdH0pO1xuXG5cdFx0Y29uc3QgcmVnQ29udGVudEFyZWFTZXR0aW5nID0gbmV3IFNldHRpbmcoY29udGFpbmVyRWwpO1xuXHRcdHJlZ0NvbnRlbnRBcmVhU2V0dGluZy5zZXR0aW5nRWwuc2V0QXR0cmlidXRlKFxuXHRcdFx0XCJzdHlsZVwiLFxuXHRcdFx0XCJkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcIlxuXHRcdCk7XG5cdFx0cmVnQ29udGVudEFyZWFTZXR0aW5nXG5cdFx0XHQuc2V0TmFtZShcIlVzZXItZGVmaW5lZCBSZWd1bGFyIEV4cHJlc3Npb24sIG9uZSBleHByZXNzaW9uIHBlciBsaW5lXCIpXG5cdFx0XHQuc2V0RGVzYyhcblx0XHRcdFx0XCJcdTc1MjhcdTYyMzdcdTgxRUFcdTVCOUFcdTRFNDlcdTZCNjNcdTUyMTlcdTg4NjhcdThGQkVcdTVGMEZcdUZGMENcdTUzMzlcdTkxNERcdTUyMzBcdTc2ODRcdTUxODVcdTVCQjlcdTRFMERcdThGREJcdTg4NENcdTY4M0NcdTVGMEZcdTUzMTZcdUZGMENcdTZCQ0ZcdTg4NENcdTRFMDBcdTRFMkFcdTg4NjhcdThGQkVcdTVGMEZcdUZGMENcdTg4NENcdTVDM0VcdTRFMERcdTg5ODFcdTk2OEZcdTYxMEZcdTUyQTBcdTdBN0FcdTY4M0NcdTMwMDJcIiArXG5cdFx0XHRcdFwiXHU2QkNGXHU4ODRDXHU2NzJCXHU1QzNFM1x1NEUyQVx1NUI1N1x1N0IyNlx1NzY4NFx1NTZGQVx1NUI5QVx1NEUzQXxcdTU0OENcdTRFMjRcdTRFMkFcdTdBN0FcdTY4M0NcdTdCNTZcdTc1NjVcdTdCMjZcdTUzRjdcdUZGMENcdTdBN0FcdTY4M0NcdTdCNTZcdTc1NjVcdTdCMjZcdTUzRjdcdTRFM0EtPStcdUZGMENcdTUyMDZcdTUyMkJcdTRFRTNcdTg4NjhcdTRFMERcdTg5ODFcdTZDNDJcdTdBN0FcdTY4M0MoLSlcdUZGMENcdThGNkZcdTdBN0FcdTY4M0MoPSlcdUZGMENcdTRFMjVcdTY4M0NcdTdBN0FcdTY4M0MoKylcdTMwMDJcIiArXG5cdFx0XHRcdFwiXHU4RkQ5XHU0RTI0XHU0RTJBXHU3QTdBXHU2ODNDXHU3QjU2XHU3NTY1XHU3QjI2XHU1M0Y3XHU1MjA2XHU1MjJCXHU0RTNBXHU1MzM5XHU5MTREXHU1MzNBXHU1NzU3XHU3Njg0XHU1REU2XHU1M0YzXHU0RTI0XHU4RkI5XHU3Njg0XHU3QTdBXHU2ODNDXHU3QjU2XHU3NTY1XCJcblx0XHRcdCk7XG5cdFx0Y29uc3QgcmVnQ29udGVudEFyZWEgPSBuZXcgVGV4dEFyZWFDb21wb25lbnQoXG5cdFx0XHRyZWdDb250ZW50QXJlYVNldHRpbmcuY29udHJvbEVsXG5cdFx0KTtcblxuXHRcdHNldEF0dHJpYnV0ZXMocmVnQ29udGVudEFyZWEuaW5wdXRFbCwge1xuXHRcdFx0c3R5bGU6IFwibWFyZ2luLXRvcDogMTJweDsgd2lkdGg6IDEwMCU7ICBoZWlnaHQ6IDMwdmg7XCIsXG5cdFx0XHQvLyBjbGFzczogXCJtcy1jc3MtZWRpdG9yXCIsXG5cdFx0fSk7XG5cdFx0cmVnQ29udGVudEFyZWFcblx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5Vc2VyRGVmaW5lZFJlZ0V4cClcblx0XHRcdC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuVXNlckRlZmluZWRSZWdFeHAgPSB2YWx1ZTtcblx0XHRcdFx0dGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHR9KTtcblxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMicsIHsgdGV4dDogJ1x1NjMwN1x1NUI5QVx1NjU4N1x1NEVGNlx1NEUwRFx1ODFFQVx1NTJBOFx1NjgzQ1x1NUYwRlx1NTMxNiAoRXhjbHVkZSBGb2xkZXJzL0ZpbGVzKScgfSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkV4Y2x1ZGUgRm9sZGVycy9GaWxlc1wiKVxuXHRcdFx0LnNldERlc2MoXCJUaGlzIHBsdWdpbiB3aWxsIHBhcnNlIGVhY2ggbGluZSBhcyBhIGV4bHVkZSBmb2xkZXIgb3IgZmlsZS4gRm9yIGV4YW1wbGU6IERhaWx5Tm90ZS8sIERhaWx5Tm90ZS9XZWVrTm90ZXMvLCBEYWlseU5vdGUvdGVzdC5tZFwiKVxuXHRcdFx0LmFkZFRleHRBcmVhKCh0ZXh0KSA9PlxuXHRcdFx0XHR0ZXh0XG5cdFx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLkV4Y2x1ZGVGaWxlcylcblx0XHRcdFx0XHQub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5FeGNsdWRlRmlsZXMgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdH0pXG5cdFx0XHQpO1xuXHRcdFxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMicsIHsgdGV4dDogJ0V4cGVyaW1lbnRhbCBGZWF0dXJlcycgfSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkZpeCBNYWNPUyBjb250ZXh0LW1lbnUgY3Vyc29yIHBvc2l0aW9uKE5lZWQgdG8gcmVzdGFydCBPYnNpZGlhbilcIilcblx0XHRcdC5zZXREZXNjKFwiXHU0RkVFXHU1OTBEIE1hY09TIFx1OUYyMFx1NjgwN1x1NTNGM1x1OTUyRVx1NTQ3Q1x1NTFGQVx1ODNEQ1x1NTM1NVx1NjVGNlx1NTE0OVx1NjgwN1x1OERGM1x1NTIzMFx1NEUwQlx1NEUwMFx1ODg0Q1x1NzY4NFx1OTVFRVx1OTg5OChcdTk3MDBcdTg5ODFcdTkxQ0RcdTU0MkZPYnNpZGlhblx1NzUxRlx1NjU0OClcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuRml4TWFjT1NDb250ZXh0TWVudSkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuRml4TWFjT1NDb250ZXh0TWVudSA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkVuaGFuY2UgQ2hpbmVzZSBJbnB1dCBNZXRob2RcIilcblx0XHRcdC5zZXREZXNjKFwiXHU0RTJEXHU2NTg3XHU4RjkzXHU1MTY1XHU2Q0Q1XHU0RTBCXHVGRjBDXHU1NkRFXHU4RjY2L1NoaWZ0L0VudGVyIFx1OEY5M1x1NTE2NVx1NTE4NVx1NUJCOVx1NjVGNlx1ODFFQVx1NTJBOFx1NjgzQ1x1NUYwRlx1NTMxNlwiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5UcnlGaXhDaGluZXNlSU0pLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLlRyeUZpeENoaW5lc2VJTSA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkZpeCBNaWNyb1NvZnQgSW5wdXQgTWV0aG9kIElzc3VlXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlx1OTAwMlx1OTE0RFx1NjVFN1x1NzI0OFx1NUZBRVx1OEY2Rlx1OEY5M1x1NTE2NVx1NkNENVwiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5UcnlGaXhNU0lNRSkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuVHJ5Rml4TVNJTUUgPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJTdHJpY3QgTGluZSBicmVha3MgTW9kZSBFbnRlciBUd2ljZVwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTRFMjVcdTY4M0NcdTYzNjJcdTg4NENcdTc2ODRcdThCQkVcdTdGNkVcdTRFMEJcdUZGMENcdTU3MjhcdTY2NkVcdTkwMUFcdTY1ODdcdTY3MkNcdTg4NENcdThGREJcdTg4NENcdTRFMDBcdTZCMjFcdTU2REVcdThGNjZcdTRGMUFcdTRFQTdcdTc1MUZcdTRFMjRcdTRFMkFcdTYzNjJcdTg4NENcdTdCMjZcIilcblx0XHRcdC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuXHRcdFx0XHR0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuRW50ZXJUd2ljZSkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuRW50ZXJUd2ljZSA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdFxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJQdW5jIHJlY3RpZnlcIilcblx0XHRcdC5zZXREZXNjKFwiXHU0RUM1XHU1NzI4XHU4RjkzXHU1MTY1XHU4RkM3XHU3QTBCXHU0RTJEXHVGRjBDXHU0RTJEXHU2NTg3XHU5NUY0XHU3Njg0XHU4MkYxXHU2NTg3XHU2ODA3XHU3MEI5XHVGRjA4LC4/IVx1RkYwOVx1ODFFQVx1NTJBOFx1OEY2Q1x1NjM2Mlx1NEUzQVx1NTE2OFx1ODlEMlx1RkYwOFx1NTNFRlx1NjRBNFx1OTUwMFx1RkYwOVwiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5QdW5jUmVjdGlmeSkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuUHVuY1JlY3RpZnkgPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJQcmludCBkZWJ1ZyBpbmZvIGluIGNvbnNvbGVcIilcblx0XHRcdC5zZXREZXNjKFwiXHU1NzI4XHU2M0E3XHU1MjM2XHU1M0YwXHU4RjkzXHU1MUZBXHU4QzAzXHU4QkQ1XHU0RkUxXHU2MDZGXCIpXG5cdFx0XHQuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcblx0XHRcdFx0dG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmRlYnVnKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5kZWJ1ZyA9IHZhbHVlO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHR9XG5cblx0YnVpbGRVc2VyU2VsUmVwUnVsZVNldHRpbmcoY29udGFpbmVyRWw6IEhUTUxEZXRhaWxzRWxlbWVudCl7XG5cdFx0Y29udGFpbmVyRWwuZW1wdHkoKTtcbiAgICAgICAgY29udGFpbmVyRWwub250b2dnbGUgPSBhc3luYyAoKSA9PiB7XG5cdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyU2VsUnVsZVNldHRpbmdzT3BlbiA9IGNvbnRhaW5lckVsLm9wZW47XG5cdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgfTtcblx0XHRjb25zdCBzdW1tYXJ5ID0gY29udGFpbmVyRWwuY3JlYXRlRWwoXCJzdW1tYXJ5XCIsIHtjbHM6IFwiZWFzeXR5cGluZy1uZXN0ZWQtc2V0dGluZ3NcIn0pO1xuXHRcdHN1bW1hcnkuc2V0VGV4dChcIlx1ODFFQVx1NUI5QVx1NEU0OVx1OTAwOVx1NEUyRFx1NjU4N1x1NjcyQ1x1N0YxNlx1OEY5MVx1NTg5RVx1NUYzQVx1ODlDNFx1NTIxOSAoQ3VzdG9taXplIFNlbGVjdGlvbiBSZXBsYWNlIFJ1bGUpXCIpXG5cbiAgICAgICAgLy8gc3VtbWFyeS5zZXRIZWFkaW5nKCkuc2V0TmFtZShcIlVzZXIgZGVmaW5lZCBTZWxlY3Rpb24gUmVwbGFjZSBSdWxlXCIpO1xuICAgICAgICAvLyBzdW1tYXJ5LmNyZWF0ZURpdihcImNvbGxhcHNlclwiKS5jcmVhdGVEaXYoXCJoYW5kbGVcIik7XG5cblx0XHRjb25zdCBzZWxlY3Rpb25SdWxlU2V0dGluZyA9IG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKTtcblx0XHRzZWxlY3Rpb25SdWxlU2V0dGluZ1xuXHRcdFx0LnNldE5hbWUoXCJTZWxlY3Rpb24gUmVwbGVjZSBSdWxlXCIpXG5cblx0XHRjb25zdCByZXBsYWNlUnVsZVRyaWdnZXIgPSBuZXcgVGV4dENvbXBvbmVudChzZWxlY3Rpb25SdWxlU2V0dGluZy5jb250cm9sRWwpO1xuXHRcdHJlcGxhY2VSdWxlVHJpZ2dlci5zZXRQbGFjZWhvbGRlcihcIlRyaWdnciBTeW1ib2xcIik7XG5cblx0XHRjb25zdCByZXBsYWNlTGVmdFN0cmluZyA9IG5ldyBUZXh0QXJlYUNvbXBvbmVudChzZWxlY3Rpb25SdWxlU2V0dGluZy5jb250cm9sRWwpO1xuXHRcdHJlcGxhY2VMZWZ0U3RyaW5nLnNldFBsYWNlaG9sZGVyKFwiTmV3IExlZnQgU2lkZSBTdHJpbmdcIik7XG5cblx0XHRjb25zdCByZXBsYWNlUmlnaHRTdHJpbmcgPSBuZXcgVGV4dEFyZWFDb21wb25lbnQoc2VsZWN0aW9uUnVsZVNldHRpbmcuY29udHJvbEVsKTtcblx0XHRyZXBsYWNlUmlnaHRTdHJpbmcuc2V0UGxhY2Vob2xkZXIoXCJOZXcgUmlnaHQgU2lkZSBTdHJpbmdcIik7XG5cblx0XHRzZWxlY3Rpb25SdWxlU2V0dGluZ1xuXHRcdFx0LmFkZEJ1dHRvbigoYnV0dG9uKSA9PiB7XG5cdFx0XHRcdGJ1dHRvblxuXHRcdFx0XHRcdC5zZXRCdXR0b25UZXh0KFwiK1wiKVxuXHRcdFx0XHRcdC5zZXRUb29sdGlwKFwiQWRkIFJ1bGVcIilcblx0XHRcdFx0XHQub25DbGljayhhc3luYyAoYnV0dG9uRWw6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0bGV0IHRyaWdnZXIgPSByZXBsYWNlUnVsZVRyaWdnZXIuaW5wdXRFbC52YWx1ZTtcblx0XHRcdFx0XHRcdGxldCBsZWZ0ID0gcmVwbGFjZUxlZnRTdHJpbmcuaW5wdXRFbC52YWx1ZTtcblx0XHRcdFx0XHRcdGxldCByaWdodCA9IHJlcGxhY2VSaWdodFN0cmluZy5pbnB1dEVsLnZhbHVlO1xuXHRcdFx0XHRcdFx0aWYgKHRyaWdnZXIgJiYgKGxlZnQgfHwgcmlnaHQpKSB7XG5cdFx0XHRcdFx0XHRcdGlmKHRyaWdnZXIubGVuZ3RoIT0xICYmIHRyaWdnZXIhPVwiXHUyMDE0XHUyMDE0XCIgJiYgdHJpZ2dlciE9XCJcdTIwMjZcdTIwMjZcIil7XG5cdFx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIklubHZhbGlkIHRyaWdnZXIsIHRyaWdnZXIgbXVzdCBiZSBhIHN5bWJvbCBvZiBsZW5ndGggMSBvciBzeW1ib2wgXHUyMDE0XHUyMDE0LCBcdTIwMjZcdTIwMjZcIik7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGlmICh0aGlzLnBsdWdpbi5hZGRVc2VyU2VsZWN0aW9uUmVwUnVsZSh0cmlnZ2VyLCBsZWZ0LCByaWdodCkpe1xuXHRcdFx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIndhcm5pbmchIFRyaWdnZXIgXCIgKyB0cmlnZ2VyICsgXCIgaXMgYWxyZWFkeSBleGlzdCFcIilcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoXCJtaXNzaW5nIGlucHV0XCIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHQvLyBjb25zdCBzZWxSZXBSdWxlQ29udGFpbmVyID0gY29udGFpbmVyRWwuY3JlYXRlRWwoXCJkaXZcIik7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyU2VsUmVwUnVsZVRyaWdnZXIubGVuZ3RoOyBpKyspIHtcblx0XHRcdGxldCB0cmlnZ2VyID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVUcmlnZ2VyW2ldO1xuXHRcdFx0bGV0IGxlZnRfcyA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJTZWxSZXBSdWxlVmFsdWVbaV0ubGVmdDtcblx0XHRcdGxldCByaWdodF9zID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlclNlbFJlcFJ1bGVWYWx1ZVtpXS5yaWdodDtcblx0XHRcdGxldCBzaG93U3RyID0gXCJUcmlnZ2VyOiBcIiArIHRyaWdnZXIgKyBcIiBcdTIxOTIgXCIgKyBzaG93U3RyaW5nKGxlZnRfcykgKyBcInNlbGVjdGVkXCIgKyBzaG93U3RyaW5nKHJpZ2h0X3MpO1xuXHRcdFx0Ly8gY29uc3Qgc2V0dGluZ0l0ZW0gPSBzZWxSZXBSdWxlQ29udGFpbmVyLmNyZWF0ZUVsKFwiZGl2XCIpO1xuXHRcdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHRcdC5zZXROYW1lKHNob3dTdHIpXG5cdFx0XHRcdC5hZGRFeHRyYUJ1dHRvbihidXR0b24gPT4ge1xuXHRcdFx0XHRcdGJ1dHRvbi5zZXRJY29uKFwiZ2VhclwiKVxuXHRcdFx0XHRcdFx0LnNldFRvb2x0aXAoXCJFZGl0IHJ1bGVcIilcblx0XHRcdFx0XHRcdC5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRcdFx0bmV3IFNlbGVjdFJ1bGVFZGl0TW9kYWwodGhpcy5hcHAsIHRyaWdnZXIsbGVmdF9zLCByaWdodF9zLCBhc3luYyAobmV3X2xlZnQsIG5ld19yaWdodCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnVwZGF0ZVVzZXJTZWxlY3Rpb25SZXBSdWxlKGksIG5ld19sZWZ0LCBuZXdfcmlnaHQpO1xuXHRcdFx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0XHR9KS5vcGVuKCk7XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9KVxuXHRcdFx0XHQuYWRkRXh0cmFCdXR0b24oYnV0dG9uID0+IHtcblx0XHRcdFx0XHRidXR0b24uc2V0SWNvbihcInRyYXNoXCIpXG5cdFx0XHRcdFx0XHQuc2V0VG9vbHRpcChcIlJlbW92ZSBydWxlXCIpXG5cdFx0XHRcdFx0XHQub25DbGljayhhc3luYyAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLmRlbGV0ZVVzZXJTZWxlY3Rpb25SZXBSdWxlKGkpO1xuXHRcdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5kaXNwbGF5KCk7XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9KTtcblx0XHR9XG5cblxuXHR9XG5cblx0YnVpbGRVc2VyRGVsZXRlUnVsZVNldHRpbmcoY29udGFpbmVyRWw6IEhUTUxEZXRhaWxzRWxlbWVudCl7XG5cdFx0Y29udGFpbmVyRWwuZW1wdHkoKTtcbiAgICAgICAgY29udGFpbmVyRWwub250b2dnbGUgPSBhc3luYyAoKSA9PiB7XG5cdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyRGVsUnVsZVNldHRpbmdzT3BlbiA9IGNvbnRhaW5lckVsLm9wZW47XG5cdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgfTtcblx0XHRjb25zdCBzdW1tYXJ5ID0gY29udGFpbmVyRWwuY3JlYXRlRWwoXCJzdW1tYXJ5XCIsIHtjbHM6IFwiZWFzeXR5cGluZy1uZXN0ZWQtc2V0dGluZ3NcIn0pO1xuXHRcdHN1bW1hcnkuc2V0VGV4dChcIlx1ODFFQVx1NUI5QVx1NEU0OVx1NTIyMFx1OTY2NFx1N0YxNlx1OEY5MVx1NTg5RVx1NUYzQVx1ODlDNFx1NTIxOSAoQ3VzdG9taXplIERlbGV0ZSBSdWxlKVwiKVxuXG5cdFx0Y29uc3QgZGVsZXRlUnVsZVNldHRpbmcgPSBuZXcgU2V0dGluZyhjb250YWluZXJFbCk7XG5cdFx0ZGVsZXRlUnVsZVNldHRpbmdcblx0XHRcdC5zZXROYW1lKFwiRGVsZXRlIFJ1bGVcIilcblx0XHRcdC5zZXREZXNjKFwiXHU4OUM0XHU1MjE5XHVGRjFBXHU3NTI4fFx1NEVFM1x1ODg2OFx1NTE0OVx1NjgwN1x1NEY0RFx1N0Y2RVx1RkYwQ1x1NUZDNVx1OTg3Qlx1NTMwNVx1NTQyQlx1NTE0OVx1NjgwN1x1MzAwMiBUaXBzOiBVc2luZyB8IHRvIGluZGljYXRlIHRoZSBjdXJzb3IgcG9zaXRpb24uXCIpXG5cblx0XHRjb25zdCBwYXR0ZXJuQmVmb3JlID0gbmV3IFRleHRBcmVhQ29tcG9uZW50KGRlbGV0ZVJ1bGVTZXR0aW5nLmNvbnRyb2xFbCk7XG5cdFx0cGF0dGVybkJlZm9yZS5zZXRQbGFjZWhvbGRlcihcIkJlZm9yZSBEZWxldGVcIik7XG5cblx0XHRjb25zdCBwYXR0ZXJuQWZ0ZXIgPSBuZXcgVGV4dEFyZWFDb21wb25lbnQoZGVsZXRlUnVsZVNldHRpbmcuY29udHJvbEVsKTtcblx0XHRwYXR0ZXJuQWZ0ZXIuc2V0UGxhY2Vob2xkZXIoXCJOZXcgUGF0dGVyblwiKTtcblxuXHRcdGRlbGV0ZVJ1bGVTZXR0aW5nXG5cdFx0XHQuYWRkQnV0dG9uKChidXR0b24pID0+IHtcblx0XHRcdFx0YnV0dG9uXG5cdFx0XHRcdFx0LnNldEJ1dHRvblRleHQoXCIrXCIpXG5cdFx0XHRcdFx0LnNldFRvb2x0aXAoXCJBZGQgUnVsZVwiKVxuXHRcdFx0XHRcdC5vbkNsaWNrKGFzeW5jIChidXR0b25FbDogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRsZXQgYmVmb3JlID0gcGF0dGVybkJlZm9yZS5pbnB1dEVsLnZhbHVlO1xuXHRcdFx0XHRcdFx0bGV0IGFmdGVyID0gcGF0dGVybkFmdGVyLmlucHV0RWwudmFsdWU7XG5cdFx0XHRcdFx0XHRpZiAoYmVmb3JlICYmIGFmdGVyKSB7XG5cdFx0XHRcdFx0XHRcdGxldCByZWdSdWxlID0gL1xcfC9nO1xuXHRcdFx0XHRcdFx0XHRpZihiZWZvcmUuc2VhcmNoKHJlZ1J1bGUpPT0tMXx8YWZ0ZXIuc2VhcmNoKHJlZ1J1bGUpPT0tMSl7XG5cdFx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIklubHZhbGlkIHRyaWdnZXIsIHBhdHRlcm4gbXVzdCBjb250YWluIHN5bWJvbCBcXHwgd2hpY2ggaW5kaWNhdGUgY3Vyc29yIHBvc2l0aW9uXCIpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRlbHNle1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLmFkZFVzZXJEZWxldGVSdWxlKGJlZm9yZSwgYWZ0ZXIpO1xuXHRcdFx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIm1pc3NpbmcgaW5wdXRcIik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckRlbGV0ZVJ1bGVzU3RyTGlzdC5sZW5ndGg7IGkrKyl7XG5cdFx0XHRsZXQgYmVmb3JlID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckRlbGV0ZVJ1bGVzU3RyTGlzdFtpXVswXTtcblx0XHRcdGxldCBhZnRlciA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJEZWxldGVSdWxlc1N0ckxpc3RbaV1bMV07XG5cdFx0XHRsZXQgc2hvd1N0ciA9IFwiXFxcIlwiICsgc2hvd1N0cmluZyhiZWZvcmUpICsgXCJcXFwiICBkZWxldGUuYmFja3dhcmRzICBcdTIxOTIgXFxcIlwiKyBzaG93U3RyaW5nKGFmdGVyKStcIlxcXCJcIjsgXG5cdFx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdFx0LnNldE5hbWUoc2hvd1N0cilcblx0XHRcdFx0LmFkZEV4dHJhQnV0dG9uKGJ1dHRvbiA9PiB7XG5cdFx0XHRcdFx0YnV0dG9uLnNldEljb24oXCJnZWFyXCIpXG5cdFx0XHRcdFx0XHQuc2V0VG9vbHRpcChcIkVkaXQgcnVsZVwiKVxuXHRcdFx0XHRcdFx0Lm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRuZXcgRWRpdENvbnZlcnRSdWxlTW9kYWwodGhpcy5hcHAsIFJ1bGVUeXBlLmRlbGV0ZSwgYmVmb3JlLCBhZnRlciwgYXN5bmMgKG5ld19iZWZvcmUsIG5ld19hZnRlcikgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnVwZGF0ZVVzZXJEZWxldGVSdWxlKGksIG5ld19iZWZvcmUsIG5ld19hZnRlcik7XG5cdFx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5kaXNwbGF5KCk7XG5cdFx0XHRcdFx0XHRcdH0pLm9wZW4oKTtcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5hZGRFeHRyYUJ1dHRvbihidXR0b24gPT4ge1xuXHRcdFx0XHRcdGJ1dHRvbi5zZXRJY29uKFwidHJhc2hcIilcblx0XHRcdFx0XHRcdC5zZXRUb29sdGlwKFwiUmVtb3ZlIHJ1bGVcIilcblx0XHRcdFx0XHRcdC5vbkNsaWNrKGFzeW5jICgpID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uZGVsZXRlVXNlckRlbGV0ZVJ1bGUoaSk7XG5cdFx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkoKTtcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdH0pO1xuXHRcdH1cblxuXHR9XG5cblx0YnVpbGRVc2VyQ29udmVydFJ1bGVTZXR0aW5nKGNvbnRhaW5lckVsOiBIVE1MRGV0YWlsc0VsZW1lbnQpe1xuXHRcdGNvbnRhaW5lckVsLmVtcHR5KCk7XG4gICAgICAgIGNvbnRhaW5lckVsLm9udG9nZ2xlID0gYXN5bmMgKCkgPT4ge1xuXHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlckN2dFJ1bGVTZXR0aW5nc09wZW4gPSBjb250YWluZXJFbC5vcGVuO1xuXHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG4gICAgICAgIH07XG5cdFx0Y29uc3Qgc3VtbWFyeSA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwic3VtbWFyeVwiLCB7Y2xzOiBcImVhc3l0eXBpbmctbmVzdGVkLXNldHRpbmdzXCJ9KTtcblx0XHRzdW1tYXJ5LnNldFRleHQoXCJcdTgxRUFcdTVCOUFcdTRFNDlcdTdGMTZcdThGOTFcdThGNkNcdTYzNjJcdTg5QzRcdTUyMTkgKEN1c3RvbWl6ZSBDb252ZXJ0IFJ1bGUpXCIpXG5cblx0XHRjb25zdCBjb252ZXJ0UnVsZVNldHRpbmcgPSBuZXcgU2V0dGluZyhjb250YWluZXJFbCk7XG5cdFx0Y29udmVydFJ1bGVTZXR0aW5nXG5cdFx0XHQuc2V0TmFtZShcIkNvbnZlcnQgUnVsZVwiKVxuXHRcdFx0LnNldERlc2MoXCJcdTg5QzRcdTUyMTlcdUZGMUFcdTc1Mjh8XHU0RUUzXHU4ODY4XHU1MTQ5XHU2ODA3XHU0RjREXHU3RjZFXHVGRjBDXHU1RkM1XHU5ODdCXHU1MzA1XHU1NDJCXHU1MTQ5XHU2ODA3XHUzMDAyIFRpcHM6IFVzaW5nIHwgdG8gaW5kaWNhdGUgdGhlIGN1cnNvciBwb3NpdGlvbi5cIilcblxuXHRcdGNvbnN0IHBhdHRlcm5CZWZvcmUgPSBuZXcgVGV4dEFyZWFDb21wb25lbnQoY29udmVydFJ1bGVTZXR0aW5nLmNvbnRyb2xFbCk7XG5cdFx0cGF0dGVybkJlZm9yZS5zZXRQbGFjZWhvbGRlcihcIkJlZm9yZSBDb252ZXJ0XCIpO1xuXG5cdFx0Y29uc3QgcGF0dGVybkFmdGVyID0gbmV3IFRleHRBcmVhQ29tcG9uZW50KGNvbnZlcnRSdWxlU2V0dGluZy5jb250cm9sRWwpO1xuXHRcdHBhdHRlcm5BZnRlci5zZXRQbGFjZWhvbGRlcihcIk5ldyBQYXR0ZXJuXCIpO1xuXG5cdFx0Y29udmVydFJ1bGVTZXR0aW5nXG5cdFx0XHQuYWRkQnV0dG9uKChidXR0b24pID0+IHtcblx0XHRcdFx0YnV0dG9uXG5cdFx0XHRcdFx0LnNldEJ1dHRvblRleHQoXCIrXCIpXG5cdFx0XHRcdFx0LnNldFRvb2x0aXAoXCJBZGQgUnVsZVwiKVxuXHRcdFx0XHRcdC5vbkNsaWNrKGFzeW5jIChidXR0b25FbDogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRsZXQgYmVmb3JlID0gcGF0dGVybkJlZm9yZS5pbnB1dEVsLnZhbHVlO1xuXHRcdFx0XHRcdFx0bGV0IGFmdGVyID0gcGF0dGVybkFmdGVyLmlucHV0RWwudmFsdWU7XG5cdFx0XHRcdFx0XHRpZiAoYmVmb3JlICYmIGFmdGVyKSB7XG5cdFx0XHRcdFx0XHRcdGxldCByZWdSdWxlID0gL1xcfC9nO1xuXHRcdFx0XHRcdFx0XHRpZihiZWZvcmUuc2VhcmNoKHJlZ1J1bGUpPT0tMXx8YWZ0ZXIuc2VhcmNoKHJlZ1J1bGUpPT0tMSl7XG5cdFx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIklubHZhbGlkIHRyaWdnZXIsIHBhdHRlcm4gbXVzdCBjb250YWluIHN5bWJvbCBcXHwgd2hpY2ggaW5kaWNhdGUgY3Vyc29yIHBvc2l0aW9uXCIpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRlbHNle1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLmFkZFVzZXJDb252ZXJ0UnVsZShiZWZvcmUsIGFmdGVyKTtcblx0XHRcdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRpc3BsYXkoKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoXCJtaXNzaW5nIGlucHV0XCIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0Lmxlbmd0aDsgaSsrKXtcblx0XHRcdGxldCBiZWZvcmUgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VyQ29udmVydFJ1bGVzU3RyTGlzdFtpXVswXTtcblx0XHRcdGxldCBhZnRlciA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZXJDb252ZXJ0UnVsZXNTdHJMaXN0W2ldWzFdO1xuXHRcdFx0bGV0IHNob3dTdHIgPSBcIlxcXCJcIiArIHNob3dTdHJpbmcoYmVmb3JlKSArIFwiXFxcIiAgYXV0byBjb252ZXJ0IHRvIFxcXCJcIisgc2hvd1N0cmluZyhhZnRlcikrXCJcXFwiXCI7IFxuXHRcdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHRcdC5zZXROYW1lKHNob3dTdHIpXG5cdFx0XHRcdC5hZGRFeHRyYUJ1dHRvbihidXR0b24gPT4ge1xuXHRcdFx0XHRcdGJ1dHRvbi5zZXRJY29uKFwiZ2VhclwiKVxuXHRcdFx0XHRcdFx0LnNldFRvb2x0aXAoXCJFZGl0IHJ1bGVcIilcblx0XHRcdFx0XHRcdC5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRcdFx0bmV3IEVkaXRDb252ZXJ0UnVsZU1vZGFsKHRoaXMuYXBwLCBSdWxlVHlwZS5jb252ZXJ0LCBiZWZvcmUsIGFmdGVyLCBhc3luYyAobmV3X2JlZm9yZSwgbmV3X2FmdGVyKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4udXBkYXRlVXNlckNvbnZlcnRSdWxlKGksIG5ld19iZWZvcmUsIG5ld19hZnRlcik7XG5cdFx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5kaXNwbGF5KCk7XG5cdFx0XHRcdFx0XHRcdH0pLm9wZW4oKTtcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5hZGRFeHRyYUJ1dHRvbihidXR0b24gPT4ge1xuXHRcdFx0XHRcdGJ1dHRvbi5zZXRJY29uKFwidHJhc2hcIilcblx0XHRcdFx0XHRcdC5zZXRUb29sdGlwKFwiUmVtb3ZlIHJ1bGVcIilcblx0XHRcdFx0XHRcdC5vbkNsaWNrKGFzeW5jICgpID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uZGVsZXRlVXNlckNvbnZlcnRSdWxlKGkpO1xuXHRcdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5kaXNwbGF5KCk7XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9KTtcblx0XHR9XG5cdH1cblxufVxuXG5cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZXMoZWxlbWVudDogYW55LCBhdHRyaWJ1dGVzOiBhbnkpIHtcblx0Zm9yIChsZXQga2V5IGluIGF0dHJpYnV0ZXMpIHtcblx0XHRlbGVtZW50LnNldEF0dHJpYnV0ZShrZXksIGF0dHJpYnV0ZXNba2V5XSk7XG5cdH1cbn1cblxuXG5leHBvcnQgY2xhc3MgU2VsZWN0UnVsZUVkaXRNb2RhbCBleHRlbmRzIE1vZGFsIHtcblx0dHJpZ2dlcjogc3RyaW5nO1xuXHRvbGRfbGVmdDogc3RyaW5nO1xuXHRvbGRfcmlnaHQ6IHN0cmluZztcblx0bmV3X2xlZnQ6IHN0cmluZztcblx0bmV3X3JpZ2h0OiBzdHJpbmc7XG5cdG9uU3VibWl0OiAobmV3X2xlZnQ6IHN0cmluZywgbmV3X3JpZ2h0OnN0cmluZykgPT4gdm9pZDtcblxuXHRjb25zdHJ1Y3RvcihhcHA6IEFwcCwgdHJpZ2dlcjogc3RyaW5nLCBsZWZ0OiBzdHJpbmcsIHJpZ2h0OiBzdHJpbmcsIG9uU3VibWl0OiAobmV3X2xlZnQ6IHN0cmluZywgbmV3X3JpZ2h0OnN0cmluZykgPT4gdm9pZCkge1xuXHRcdHN1cGVyKGFwcCk7XG5cdFx0dGhpcy50cmlnZ2VyID0gdHJpZ2dlcjtcblx0XHR0aGlzLm9sZF9sZWZ0ID0gbGVmdDtcblx0XHR0aGlzLm9sZF9yaWdodCA9IHJpZ2h0O1xuXHRcdHRoaXMubmV3X2xlZnQgPSBsZWZ0O1xuXHRcdHRoaXMubmV3X3JpZ2h0ID0gcmlnaHQ7XG5cblx0XHR0aGlzLm9uU3VibWl0ID0gb25TdWJtaXQ7XG5cdH1cblxuXHRvbk9wZW4oKSB7XG5cdFx0Y29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XG5cblx0XHRjb250ZW50RWwuY3JlYXRlRWwoXCJoMVwiLCB7IHRleHQ6IFwiRWRpdCBTZWxlY3Rpb24gUmVwbGFjZSBSdWxlXCIgfSk7XG5cblx0XHRuZXcgU2V0dGluZyhjb250ZW50RWwpXG5cdFx0XHQuc2V0TmFtZShcIlRyaWdnZXJcIilcblx0XHRcdC5hZGRUZXh0KCh0ZXh0KSA9PiB7XG5cdFx0XHRcdHRleHQuc2V0VmFsdWUodGhpcy50cmlnZ2VyKTtcblx0XHRcdFx0dGV4dC5zZXREaXNhYmxlZCh0cnVlKTtcblx0XHRcdH0pXG5cdFx0XG5cdFx0bmV3IFNldHRpbmcoY29udGVudEVsKVxuXHRcdFx0LnNldE5hbWUoXCJMZWZ0XCIpXG5cdFx0XHQuYWRkVGV4dEFyZWEoKHRleHQpID0+IHtcblx0XHRcdFx0dGV4dC5zZXRWYWx1ZSh0aGlzLm9sZF9sZWZ0KTtcblx0XHRcdFx0dGV4dC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLm5ld19sZWZ0ID0gdmFsdWVcblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cdFx0bmV3IFNldHRpbmcoY29udGVudEVsKVxuXHRcdFx0LnNldE5hbWUoXCJSaWdodFwiKVxuXHRcdFx0LmFkZFRleHRBcmVhKCh0ZXh0KSA9PiB7XG5cdFx0XHRcdHRleHQuc2V0VmFsdWUodGhpcy5vbGRfcmlnaHQpO1xuXHRcdFx0XHR0ZXh0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMubmV3X3JpZ2h0ID0gdmFsdWVcblx0XHRcdFx0fSlcblx0XHRcdH0pO1xuXG5cblx0XHRuZXcgU2V0dGluZyhjb250ZW50RWwpXG5cdFx0XHQuYWRkQnV0dG9uKChidG4pID0+XG5cdFx0XHRcdGJ0blxuXHRcdFx0XHRcdC5zZXRCdXR0b25UZXh0KFwiVXBkYXRlXCIpXG5cdFx0XHRcdFx0LnNldEN0YSgpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5jbG9zZSgpO1xuXHRcdFx0XHRcdFx0dGhpcy5vblN1Ym1pdCh0aGlzLm5ld19sZWZ0LCB0aGlzLm5ld19yaWdodCk7XG5cdFx0XHRcdFx0fSkpO1xuXHR9XG5cblx0b25DbG9zZSgpIHtcblx0XHRsZXQgeyBjb250ZW50RWwgfSA9IHRoaXM7XG5cdFx0Y29udGVudEVsLmVtcHR5KCk7XG5cdH1cbn1cblxuXG5cbmV4cG9ydCBjbGFzcyBFZGl0Q29udmVydFJ1bGVNb2RhbCBleHRlbmRzIE1vZGFsIHtcblx0dHlwZTogUnVsZVR5cGU7XG5cdG9sZF9iZWZvcmU6IHN0cmluZztcblx0b2xkX2FmdGVyOiBzdHJpbmc7XG5cdG5ld19iZWZvcmU6IHN0cmluZztcblx0bmV3X2FmdGVyOiBzdHJpbmc7XG5cdG9uU3VibWl0OiAobmV3X2JlZm9yZTogc3RyaW5nLCBuZXdfYWZ0ZXI6c3RyaW5nKSA9PiB2b2lkO1xuXG5cdGNvbnN0cnVjdG9yKGFwcDogQXBwLCB0eXBlOiBSdWxlVHlwZSwgYmVmb3JlOiBzdHJpbmcsIGFmdGVyOiBzdHJpbmcsIG9uU3VibWl0OiAobmV3X2JlZm9yZTogc3RyaW5nLCBuZXdfYWZ0ZXI6c3RyaW5nKSA9PiB2b2lkKSB7XG5cdFx0c3VwZXIoYXBwKTtcblx0XHR0aGlzLnR5cGUgPSB0eXBlO1xuXHRcdHRoaXMub2xkX2JlZm9yZSA9IGJlZm9yZTtcblx0XHR0aGlzLm9sZF9hZnRlciA9IGFmdGVyO1xuXHRcdHRoaXMubmV3X2JlZm9yZSA9IGJlZm9yZTtcblx0XHR0aGlzLm5ld19hZnRlciA9IGFmdGVyO1xuXG5cdFx0dGhpcy5vblN1Ym1pdCA9IG9uU3VibWl0O1xuXHR9XG5cblx0b25PcGVuKCkge1xuXHRcdGNvbnN0IHsgY29udGVudEVsIH0gPSB0aGlzO1xuXG5cdFx0Y29udGVudEVsLmNyZWF0ZUVsKFwiaDFcIiwgeyB0ZXh0OiBcIkVkaXQgXCIgKyB0aGlzLnR5cGV9KTtcblx0XHRcblx0XHRuZXcgU2V0dGluZyhjb250ZW50RWwpXG5cdFx0XHQuc2V0TmFtZShcIk9sZCBQYXR0ZXJuXCIpXG5cdFx0XHQuYWRkVGV4dEFyZWEoKHRleHQpID0+IHtcblx0XHRcdFx0dGV4dC5zZXRWYWx1ZSh0aGlzLm9sZF9iZWZvcmUpO1xuXHRcdFx0XHR0ZXh0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMubmV3X2JlZm9yZSA9IHZhbHVlXG5cdFx0XHRcdH0pXG5cdFx0XHR9KVxuXHRcdG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcblx0XHRcdC5zZXROYW1lKFwiTmV3IFBhdHRlcm5cIilcblx0XHRcdC5hZGRUZXh0QXJlYSgodGV4dCkgPT4ge1xuXHRcdFx0XHR0ZXh0LnNldFZhbHVlKHRoaXMub2xkX2FmdGVyKTtcblx0XHRcdFx0dGV4dC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLm5ld19hZnRlciA9IHZhbHVlXG5cdFx0XHRcdH0pXG5cdFx0XHR9KTtcblxuXG5cdFx0bmV3IFNldHRpbmcoY29udGVudEVsKVxuXHRcdFx0LmFkZEJ1dHRvbigoYnRuKSA9PlxuXHRcdFx0XHRidG5cblx0XHRcdFx0XHQuc2V0QnV0dG9uVGV4dChcIlVwZGF0ZVwiKVxuXHRcdFx0XHRcdC5zZXRDdGEoKVxuXHRcdFx0XHRcdC5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRcdGlmICh0aGlzLmNoZWNrQ29udmVydFBhdHRlcm5TdHJpbmcodGhpcy5uZXdfYmVmb3JlLCB0aGlzLm5ld19hZnRlcikpXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRoaXMuY2xvc2UoKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5vblN1Ym1pdCh0aGlzLm5ld19iZWZvcmUsIHRoaXMubmV3X2FmdGVyKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoXCJJbnZhbGlkIHBhdHRlcm4gc3RyaW5nIVwiKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdH0pKTtcblx0fVxuXG5cdGNoZWNrQ29udmVydFBhdHRlcm5TdHJpbmcoYmVmb3JlOiBzdHJpbmcsIGFmdGVyOnN0cmluZyk6Ym9vbGVhbntcblx0XHRsZXQgcmVnUnVsZSA9IC9cXHwvZztcblx0XHRpZihiZWZvcmUuc2VhcmNoKHJlZ1J1bGUpPT0tMSB8fCBhZnRlci5zZWFyY2gocmVnUnVsZSk9PS0xKSByZXR1cm4gZmFsc2U7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRvbkNsb3NlKCkge1xuXHRcdGxldCB7IGNvbnRlbnRFbCB9ID0gdGhpcztcblx0XHRjb250ZW50RWwuZW1wdHkoKTtcblx0fVxufVxuXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsdUJBQWtGO0FBQ2xGLG1CQUErRTs7O0FDRC9FLHNCQUFzQjs7O0FDSXRCLElBQUksUUFBUTtBQUVMLElBQU0sUUFBTSxDQUFDLFlBQWtCLG1CQUF5QjtBQUMzRCxNQUFJLE9BQU87QUFDUCxZQUFRLElBQUksU0FBUyxHQUFHLGNBQWM7QUFBQSxFQUMxQztBQUNKO0FBbUJPLHFCQUFxQixLQUFVLFFBQWU7QUFDcEQsTUFBSSxPQUFPLElBQUksT0FBTyxNQUFNO0FBQzVCLFNBQU8sRUFBQyxNQUFNLEtBQUssU0FBUyxHQUFHLElBQUksU0FBUyxLQUFLLEtBQUk7QUFDdEQ7QUFFTyw2QkFBNkIsSUFBeUI7QUFDNUQsTUFBSSxtQkFBNEI7QUFBQSxJQUFDO0FBQUEsSUFDM0I7QUFBQSxJQUFzQjtBQUFBLElBQWM7QUFBQSxJQUFlO0FBQUEsSUFBYztBQUFBLElBQWtCO0FBQUEsSUFDbkY7QUFBQSxJQUFvQjtBQUFBLElBQWtCO0FBQUEsSUFBbUI7QUFBQSxJQUFjO0FBQUEsSUFDdkU7QUFBQSxJQUNBO0FBQUEsSUFBUTtBQUFBLElBQ1I7QUFBQSxFQUFnQjtBQUN0QixXQUFTLElBQVksR0FBRyxJQUFJLGlCQUFpQixRQUFRLEtBQ3JEO0FBQ0MsUUFBSSxHQUFHLFlBQVksaUJBQWlCLEVBQUU7QUFDckMsYUFBTyxpQkFBaUI7QUFBQSxFQUMxQjtBQUNBLFNBQU87QUFDUjtBQUVPLDJCQUEyQixHQUFxQjtBQUN0RCxNQUFJLFlBQVksRUFBRSxRQUFRLEdBQUc7QUFDN0IsTUFBSSxPQUFPLEVBQUUsVUFBVSxHQUFHLFNBQVM7QUFDbkMsTUFBSSxRQUFRLEVB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 diff --git a/.obsidian/plugins/easy-typing-obsidian/manifest.json b/.obsidian/plugins/easy-typing-obsidian/manifest.json index 047f297..22f7f13 100644 --- a/.obsidian/plugins/easy-typing-obsidian/manifest.json +++ b/.obsidian/plugins/easy-typing-obsidian/manifest.json @@ -1,7 +1,7 @@ { "id": "easy-typing-obsidian", "name": "Easy Typing", - "version": "5.1.11", + "version": "5.2.3", "minAppVersion": "0.15.0", "description": "Autoformat your note as typing.(Auto captalize, autospace)", "author": "yaozhuwa", diff --git a/.obsidian/plugins/notion-like-tables/data.json b/.obsidian/plugins/notion-like-tables/data.json index 84d0aac..07a7e78 100644 --- a/.obsidian/plugins/notion-like-tables/data.json +++ b/.obsidian/plugins/notion-like-tables/data.json @@ -1,5 +1,5 @@ { - "shouldDebug": false, + "logLevel": "off", "createAtObsidianAttachmentFolder": false, "customFolderForNewFiles": "", "removeMarkdownOnExport": true, @@ -9,7 +9,8 @@ "showWelcomeModal": false, "showWhatsNewModal": true, "defaultFrozenColumnCount": 1, - "pluginVersion": "8.15.4", + "pluginVersion": "8.15.12", + "shouldDebug": false, "showSupportModal": true, "data": { "table-id-ncD19n": { diff --git a/.obsidian/plugins/notion-like-tables/main.js b/.obsidian/plugins/notion-like-tables/main.js index d09a494..8939517 100644 --- a/.obsidian/plugins/notion-like-tables/main.js +++ b/.obsidian/plugins/notion-like-tables/main.js @@ -1,39 +1,15 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ + "use strict"; var __create = Object.create; var __defProp = Object.defineProperty; -var __defProps = Object.defineProperties; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropNames = Object.getOwnPropertyNames; -var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; -var __propIsEnum = Object.prototype.propertyIsEnumerable; -var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues = (a2, b2) => { - for (var prop in b2 || (b2 = {})) - if (__hasOwnProp.call(b2, prop)) - __defNormalProp(a2, prop, b2[prop]); - if (__getOwnPropSymbols) - for (var prop of __getOwnPropSymbols(b2)) { - if (__propIsEnum.call(b2, prop)) - __defNormalProp(a2, prop, b2[prop]); - } - return a2; -}; -var __spreadProps = (a2, b2) => __defProps(a2, __getOwnPropDescs(b2)); -var __objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && __getOwnPropSymbols) - for (var prop of __getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; @@ -50,30 +26,204 @@ var __copyProps = (to, from, except, desc) => { return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -var __async = (__this, __arguments, generator) => { - return new Promise((resolve, reject) => { - var fulfilled = (value) => { - try { - step(generator.next(value)); - } catch (e) { - reject(e); + +// node_modules/js-logger/src/logger.js +var require_logger = __commonJS({ + "node_modules/js-logger/src/logger.js"(exports, module2) { + (function(global2) { + "use strict"; + var Logger25 = {}; + Logger25.VERSION = "1.6.1"; + var logHandler; + var contextualLoggersByNameMap = {}; + var bind = function(scope, func) { + return function() { + return func.apply(scope, arguments); + }; + }; + var merge2 = function() { + var args = arguments, target = args[0], key, i2; + for (i2 = 1; i2 < args.length; i2++) { + for (key in args[i2]) { + if (!(key in target) && args[i2].hasOwnProperty(key)) { + target[key] = args[i2][key]; + } + } + } + return target; + }; + var defineLogLevel = function(value, name) { + return { value, name }; + }; + Logger25.TRACE = defineLogLevel(1, "TRACE"); + Logger25.DEBUG = defineLogLevel(2, "DEBUG"); + Logger25.INFO = defineLogLevel(3, "INFO"); + Logger25.TIME = defineLogLevel(4, "TIME"); + Logger25.WARN = defineLogLevel(5, "WARN"); + Logger25.ERROR = defineLogLevel(8, "ERROR"); + Logger25.OFF = defineLogLevel(99, "OFF"); + var ContextualLogger = function(defaultContext) { + this.context = defaultContext; + this.setLevel(defaultContext.filterLevel); + this.log = this.info; + }; + ContextualLogger.prototype = { + // Changes the current logging level for the logging instance. + setLevel: function(newLevel) { + if (newLevel && "value" in newLevel) { + this.context.filterLevel = newLevel; + } + }, + // Gets the current logging level for the logging instance + getLevel: function() { + return this.context.filterLevel; + }, + // Is the logger configured to output messages at the supplied level? + enabledFor: function(lvl) { + var filterLevel = this.context.filterLevel; + return lvl.value >= filterLevel.value; + }, + trace: function() { + this.invoke(Logger25.TRACE, arguments); + }, + debug: function() { + this.invoke(Logger25.DEBUG, arguments); + }, + info: function() { + this.invoke(Logger25.INFO, arguments); + }, + warn: function() { + this.invoke(Logger25.WARN, arguments); + }, + error: function() { + this.invoke(Logger25.ERROR, arguments); + }, + time: function(label) { + if (typeof label === "string" && label.length > 0) { + this.invoke(Logger25.TIME, [label, "start"]); + } + }, + timeEnd: function(label) { + if (typeof label === "string" && label.length > 0) { + this.invoke(Logger25.TIME, [label, "end"]); + } + }, + // Invokes the logger callback if it's not being filtered. + invoke: function(level, msgArgs) { + if (logHandler && this.enabledFor(level)) { + logHandler(msgArgs, merge2({ level }, this.context)); + } + } + }; + var globalLogger = new ContextualLogger({ filterLevel: Logger25.OFF }); + (function() { + var L2 = Logger25; + L2.enabledFor = bind(globalLogger, globalLogger.enabledFor); + L2.trace = bind(globalLogger, globalLogger.trace); + L2.debug = bind(globalLogger, globalLogger.debug); + L2.time = bind(globalLogger, globalLogger.time); + L2.timeEnd = bind(globalLogger, globalLogger.timeEnd); + L2.info = bind(globalLogger, globalLogger.info); + L2.warn = bind(globalLogger, globalLogger.warn); + L2.error = bind(globalLogger, globalLogger.error); + L2.log = L2.info; + })(); + Logger25.setHandler = function(func) { + logHandler = func; + }; + Logger25.setLevel = function(level) { + globalLogger.setLevel(level); + for (var key in contextualLoggersByNameMap) { + if (contextualLoggersByNameMap.hasOwnProperty(key)) { + contextualLoggersByNameMap[key].setLevel(level); + } + } + }; + Logger25.getLevel = function() { + return globalLogger.getLevel(); + }; + Logger25.get = function(name) { + return contextualLoggersByNameMap[name] || (contextualLoggersByNameMap[name] = new ContextualLogger(merge2({ name }, globalLogger.context))); + }; + Logger25.createDefaultHandler = function(options) { + options = options || {}; + options.formatter = options.formatter || function defaultMessageFormatter(messages, context) { + if (context.name) { + messages.unshift("[" + context.name + "]"); + } + }; + var timerStartTimeByLabelMap = {}; + var invokeConsoleMethod = function(hdlr, messages) { + Function.prototype.apply.call(hdlr, console, messages); + }; + if (typeof console === "undefined") { + return function() { + }; + } + return function(messages, context) { + messages = Array.prototype.slice.call(messages); + var hdlr = console.log; + var timerLabel; + if (context.level === Logger25.TIME) { + timerLabel = (context.name ? "[" + context.name + "] " : "") + messages[0]; + if (messages[1] === "start") { + if (console.time) { + console.time(timerLabel); + } else { + timerStartTimeByLabelMap[timerLabel] = (/* @__PURE__ */ new Date()).getTime(); + } + } else { + if (console.timeEnd) { + console.timeEnd(timerLabel); + } else { + invokeConsoleMethod(hdlr, [timerLabel + ": " + ((/* @__PURE__ */ new Date()).getTime() - timerStartTimeByLabelMap[timerLabel]) + "ms"]); + } + } + } else { + if (context.level === Logger25.WARN && console.warn) { + hdlr = console.warn; + } else if (context.level === Logger25.ERROR && console.error) { + hdlr = console.error; + } else if (context.level === Logger25.INFO && console.info) { + hdlr = console.info; + } else if (context.level === Logger25.DEBUG && console.debug) { + hdlr = console.debug; + } else if (context.level === Logger25.TRACE && console.trace) { + hdlr = console.trace; + } + options.formatter(messages, context); + invokeConsoleMethod(hdlr, messages); + } + }; + }; + Logger25.useDefaults = function(options) { + Logger25.setLevel(options && options.defaultLevel || Logger25.DEBUG); + Logger25.setHandler(Logger25.createDefaultHandler(options)); + }; + Logger25.setDefaults = Logger25.useDefaults; + if (typeof define === "function" && define.amd) { + define(Logger25); + } else if (typeof module2 !== "undefined" && module2.exports) { + module2.exports = Logger25; + } else { + Logger25._prevLogger = global2.Logger; + Logger25.noConflict = function() { + global2.Logger = Logger25._prevLogger; + return Logger25; + }; + global2.Logger = Logger25; } - }; - var rejected = (value) => { - try { - step(generator.throw(value)); - } catch (e) { - reject(e); - } - }; - var step = (x2) => x2.done ? resolve(x2.value) : Promise.resolve(x2.value).then(fulfilled, rejected); - step((generator = generator.apply(__this, __arguments)).next()); - }); -}; + })(exports); + } +}); // node_modules/react/cjs/react.development.js var require_react_development = __commonJS({ @@ -112,6 +262,10 @@ var require_react_development = __commonJS({ return null; } var ReactCurrentDispatcher = { + /** + * @internal + * @type {ReactComponent} + */ current: null }; var ReactCurrentBatchConfig = { @@ -119,10 +273,15 @@ var require_react_development = __commonJS({ }; var ReactCurrentActQueue = { current: null, + // Used to reproduce behavior of `batchedUpdates` in legacy mode. isBatchingLegacy: false, didScheduleLegacyUpdate: false }; var ReactCurrentOwner = { + /** + * @internal + * @type {ReactComponent} + */ current: null }; var ReactDebugCurrentFrame = {}; @@ -214,15 +373,62 @@ var require_react_development = __commonJS({ } } var ReactNoopUpdateQueue = { + /** + * Checks whether or not this composite component is mounted. + * @param {ReactClass} publicInstance The instance we want to test. + * @return {boolean} True if mounted, false otherwise. + * @protected + * @final + */ isMounted: function(publicInstance) { return false; }, + /** + * Forces an update. This should only be invoked when it is known with + * certainty that we are **not** in a DOM transaction. + * + * You may want to call this when you know that some deeper aspect of the + * component's state has changed but `setState` was not called. + * + * This will not invoke `shouldComponentUpdate`, but it will invoke + * `componentWillUpdate` and `componentDidUpdate`. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {?function} callback Called after component is updated. + * @param {?string} callerName name of the calling function in the public API. + * @internal + */ enqueueForceUpdate: function(publicInstance, callback, callerName) { warnNoop(publicInstance, "forceUpdate"); }, + /** + * Replaces all of the state. Always use this or `setState` to mutate state. + * You should treat `this.state` as immutable. + * + * There is no guarantee that `this.state` will be immediately updated, so + * accessing `this.state` after calling this method may return the old value. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {object} completeState Next state. + * @param {?function} callback Called after component is updated. + * @param {?string} callerName name of the calling function in the public API. + * @internal + */ enqueueReplaceState: function(publicInstance, completeState, callback, callerName) { warnNoop(publicInstance, "replaceState"); }, + /** + * Sets a subset of the state. This only exists because _pendingState is + * internal. This provides a merging strategy that is not available to deep + * properties which is confusing. TODO: Expose pendingState or don't use it + * during the merge. + * + * @param {ReactClass} publicInstance The instance that should rerender. + * @param {object} partialState Next partial state to be merged with state. + * @param {?function} callback Called after component is updated. + * @param {?string} Name of the calling function in the public API. + * @internal + */ enqueueSetState: function(publicInstance, partialState, callback, callerName) { warnNoop(publicInstance, "setState"); } @@ -467,11 +673,14 @@ var require_react_development = __commonJS({ } var ReactElement = function(type, key, ref, self2, source, owner, props) { var element = { + // This tag allows us to uniquely identify this as a React Element $$typeof: REACT_ELEMENT_TYPE, + // Built-in properties that belong on the element type, key, ref, props, + // Record the component responsible for creating this element. _owner: owner }; { @@ -690,7 +899,14 @@ var require_react_development = __commonJS({ } mappedChild = cloneAndReplaceKey( mappedChild, - escapedPrefix + (mappedChild.key && (!_child || _child.key !== mappedChild.key) ? escapeUserProvidedKey("" + mappedChild.key) + "/" : "") + childKey + // Keep both the (mapped) and old keys if they differ, just as + // traverseAllChildren used to do for objects as children + escapedPrefix + // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key + (mappedChild.key && (!_child || _child.key !== mappedChild.key) ? ( + // $FlowFixMe Flow incorrectly thinks existing element's key can be a number + // eslint-disable-next-line react-internal/safe-string-coercion + escapeUserProvidedKey("" + mappedChild.key) + "/" + ) : "") + childKey ); } array.push(mappedChild); @@ -771,11 +987,20 @@ var require_react_development = __commonJS({ function createContext2(defaultValue) { var context = { $$typeof: REACT_CONTEXT_TYPE, + // As a workaround to support multiple concurrent renderers, we categorize + // some renderers as primary and others as secondary. We only expect + // there to be two concurrent renderers at most: React Native (primary) and + // Fabric (secondary); React DOM (primary) and React ART (secondary). + // Secondary renderers store their context values on separate fields. _currentValue: defaultValue, _currentValue2: defaultValue, + // Used to track how many concurrent renderers this context currently + // supports within in a single renderer. Such as parallel server rendering. _threadCount: 0, + // These are circular Provider: null, Consumer: null, + // Add these to use same hidden class in VM as ServerContext _defaultValue: null, _globalName: null }; @@ -903,6 +1128,7 @@ var require_react_development = __commonJS({ } function lazy(ctor) { var payload = { + // We use these fields to store the result. _status: Uninitialized, _result: ctor }; @@ -996,7 +1222,11 @@ var require_react_development = __commonJS({ return true; } if (typeof type === "object" && type !== null) { - if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== void 0) { + if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object + // types supported by any Flight configuration anywhere since + // we don't know which Flight build this will end up being used + // with. + type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== void 0) { return true; } } @@ -1512,7 +1742,9 @@ var require_react_development = __commonJS({ var propTypes; if (typeof type === "function") { propTypes = type.propTypes; - } else if (typeof type === "object" && (type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_MEMO_TYPE)) { + } else if (typeof type === "object" && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here. + // Inner props are checked in the reconciler. + type.$$typeof === REACT_MEMO_TYPE)) { propTypes = type.propTypes; } else { return; @@ -1647,7 +1879,7 @@ var require_react_development = __commonJS({ } var didWarnAboutMessageChannel = false; var enqueueTaskImpl = null; - function enqueueTask(task2) { + function enqueueTask(task) { if (enqueueTaskImpl === null) { try { var requireString = ("require" + Math.random()).slice(0, 7); @@ -1669,7 +1901,7 @@ var require_react_development = __commonJS({ }; } } - return enqueueTaskImpl(task2); + return enqueueTaskImpl(task); } var actScopeDepth = 0; var didWarnNoAwaitAct = false; @@ -1962,7 +2194,7 @@ var require_scheduler_development = __commonJS({ var NormalPriority = 3; var LowPriority = 4; var IdlePriority = 5; - function markTaskErrored(task2, ms) { + function markTaskErrored(task, ms) { } var hasPerformanceNow = typeof performance === "object" && typeof performance.now === "function"; if (hasPerformanceNow) { @@ -2216,8 +2448,8 @@ var require_scheduler_development = __commonJS({ function unstable_getFirstCallbackNode() { return peek(taskQueue); } - function unstable_cancelCallback(task2) { - task2.callback = null; + function unstable_cancelCallback(task) { + task.callback = null; } function unstable_getCurrentPriorityLevel() { return currentPriorityLevel; @@ -2350,9 +2582,9 @@ var require_react_dom_development = __commonJS({ if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === "function") { __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error()); } - var React67 = require_react(); + var React66 = require_react(); var Scheduler = require_scheduler(); - var ReactSharedInternals = React67.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + var ReactSharedInternals = React66.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; var suppressWarning = false; function setSuppressWarning(newSuppressWarning) { { @@ -2630,6 +2862,9 @@ var require_react_dom_development = __commonJS({ var reservedProps = [ "children", "dangerouslySetInnerHTML", + // TODO: This prevents the assignment of defaultValue to regular + // elements (not just inputs). Now that ReactDOMInput assigns to the + // defaultValue property -- do we need this? "defaultValue", "defaultChecked", "innerHTML", @@ -2642,9 +2877,13 @@ var require_react_dom_development = __commonJS({ name, RESERVED, false, + // mustUseProperty name, + // attributeName null, + // attributeNamespace false, + // sanitizeURL false ); }); @@ -2654,9 +2893,13 @@ var require_react_dom_development = __commonJS({ name, STRING, false, + // mustUseProperty attributeName, + // attributeName null, + // attributeNamespace false, + // sanitizeURL false ); }); @@ -2665,9 +2908,13 @@ var require_react_dom_development = __commonJS({ name, BOOLEANISH_STRING, false, + // mustUseProperty name.toLowerCase(), + // attributeName null, + // attributeNamespace false, + // sanitizeURL false ); }); @@ -2676,15 +2923,21 @@ var require_react_dom_development = __commonJS({ name, BOOLEANISH_STRING, false, + // mustUseProperty name, + // attributeName null, + // attributeNamespace false, + // sanitizeURL false ); }); [ "allowFullScreen", "async", + // Note: there is a special case that prevents it from being written to the DOM + // on the client side because the browsers are inconsistent. Instead we call focus(). "autoFocus", "autoPlay", "controls", @@ -2705,45 +2958,66 @@ var require_react_dom_development = __commonJS({ "reversed", "scoped", "seamless", + // Microdata "itemScope" ].forEach(function(name) { properties[name] = new PropertyInfoRecord( name, BOOLEAN, false, + // mustUseProperty name.toLowerCase(), + // attributeName null, + // attributeNamespace false, + // sanitizeURL false ); }); [ "checked", + // Note: `option.selected` is not updated if `select.multiple` is + // disabled with `removeAttribute`. We have special logic for handling this. "multiple", "muted", "selected" + // NOTE: if you add a camelCased prop to this list, + // you'll need to set attributeName to name.toLowerCase() + // instead in the assignment below. ].forEach(function(name) { properties[name] = new PropertyInfoRecord( name, BOOLEAN, true, + // mustUseProperty name, + // attributeName null, + // attributeNamespace false, + // sanitizeURL false ); }); [ "capture", "download" + // NOTE: if you add a camelCased prop to this list, + // you'll need to set attributeName to name.toLowerCase() + // instead in the assignment below. ].forEach(function(name) { properties[name] = new PropertyInfoRecord( name, OVERLOADED_BOOLEAN, false, + // mustUseProperty name, + // attributeName null, + // attributeNamespace false, + // sanitizeURL false ); }); @@ -2752,14 +3026,21 @@ var require_react_dom_development = __commonJS({ "rows", "size", "span" + // NOTE: if you add a camelCased prop to this list, + // you'll need to set attributeName to name.toLowerCase() + // instead in the assignment below. ].forEach(function(name) { properties[name] = new PropertyInfoRecord( name, POSITIVE_NUMERIC, false, + // mustUseProperty name, + // attributeName null, + // attributeNamespace false, + // sanitizeURL false ); }); @@ -2768,9 +3049,13 @@ var require_react_dom_development = __commonJS({ name, NUMERIC, false, + // mustUseProperty name.toLowerCase(), + // attributeName null, + // attributeNamespace false, + // sanitizeURL false ); }); @@ -2852,15 +3137,21 @@ var require_react_dom_development = __commonJS({ "writing-mode", "xmlns:xlink", "x-height" + // NOTE: if you add a camelCased prop to this list, + // you'll need to set attributeName to name.toLowerCase() + // instead in the assignment below. ].forEach(function(attributeName) { var name = attributeName.replace(CAMELIZE, capitalize); properties[name] = new PropertyInfoRecord( name, STRING, false, + // mustUseProperty attributeName, null, + // attributeNamespace false, + // sanitizeURL false ); }); @@ -2871,15 +3162,20 @@ var require_react_dom_development = __commonJS({ "xlink:show", "xlink:title", "xlink:type" + // NOTE: if you add a camelCased prop to this list, + // you'll need to set attributeName to name.toLowerCase() + // instead in the assignment below. ].forEach(function(attributeName) { var name = attributeName.replace(CAMELIZE, capitalize); properties[name] = new PropertyInfoRecord( name, STRING, false, + // mustUseProperty attributeName, "http://www.w3.org/1999/xlink", false, + // sanitizeURL false ); }); @@ -2887,15 +3183,20 @@ var require_react_dom_development = __commonJS({ "xml:base", "xml:lang", "xml:space" + // NOTE: if you add a camelCased prop to this list, + // you'll need to set attributeName to name.toLowerCase() + // instead in the assignment below. ].forEach(function(attributeName) { var name = attributeName.replace(CAMELIZE, capitalize); properties[name] = new PropertyInfoRecord( name, STRING, false, + // mustUseProperty attributeName, "http://www.w3.org/XML/1998/namespace", false, + // sanitizeURL false ); }); @@ -2904,9 +3205,13 @@ var require_react_dom_development = __commonJS({ attributeName, STRING, false, + // mustUseProperty attributeName.toLowerCase(), + // attributeName null, + // attributeNamespace false, + // sanitizeURL false ); }); @@ -2915,9 +3220,11 @@ var require_react_dom_development = __commonJS({ "xlinkHref", STRING, false, + // mustUseProperty "xlink:href", "http://www.w3.org/1999/xlink", true, + // sanitizeURL false ); ["src", "href", "action", "formAction"].forEach(function(attributeName) { @@ -2925,9 +3232,13 @@ var require_react_dom_development = __commonJS({ attributeName, STRING, false, + // mustUseProperty attributeName.toLowerCase(), + // attributeName null, + // attributeNamespace true, + // sanitizeURL true ); }); @@ -3772,7 +4083,9 @@ var require_react_dom_development = __commonJS({ var type = props.type; if (value != null) { if (type === "number") { - if (value === 0 && node.value === "" || node.value != value) { + if (value === 0 && node.value === "" || // We explicitly want to coerce to number here if possible. + // eslint-disable-next-line + node.value != value) { node.value = toString(value); } } else if (node.value !== toString(value)) { @@ -3858,7 +4171,10 @@ var require_react_dom_development = __commonJS({ } } function setDefaultValue(node, type, value) { - if (type !== "number" || getActiveElement(node.ownerDocument) !== node) { + if ( + // Focused number inputs synchronize on blur. See ChangeEventPlugin.js + type !== "number" || getActiveElement(node.ownerDocument) !== node + ) { if (value == null) { node.defaultValue = toString(node._wrapperState.initialValue); } else if (node.defaultValue !== toString(value)) { @@ -3873,7 +4189,7 @@ var require_react_dom_development = __commonJS({ { if (props.value == null) { if (typeof props.children === "object" && props.children !== null) { - React67.Children.forEach(props.children, function(child) { + React66.Children.forEach(props.children, function(child) { if (child == null) { return; } @@ -4256,6 +4572,7 @@ var require_react_dom_development = __commonJS({ widows: true, zIndex: true, zoom: true, + // SVG-related properties fillOpacity: true, floodOpacity: true, stopOpacity: true, @@ -4316,6 +4633,9 @@ var require_react_dom_development = __commonJS({ error( "Unsupported style property %s. Did you mean %s?", name, + // As Andi Smith suggests + // (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix + // is converted to lowercase `ms`. camelize(name.replace(msPattern$1, "ms-")) ); }; @@ -4458,6 +4778,7 @@ var require_react_dom_development = __commonJS({ source: true, track: true, wbr: true + // NOTE: menuitem's close tag should be omitted, but that causes problems. }; var voidElementTags = assign({ menuitem: true @@ -4508,6 +4829,7 @@ var require_react_dom_development = __commonJS({ } } var possibleStandardNames = { + // HTML accept: "accept", acceptcharset: "acceptCharset", "accept-charset": "acceptCharset", @@ -4657,6 +4979,7 @@ var require_react_dom_development = __commonJS({ width: "width", wmode: "wmode", wrap: "wrap", + // SVG about: "about", accentheight: "accentHeight", "accent-height": "accentHeight", @@ -4996,14 +5319,19 @@ var require_react_dom_development = __commonJS({ }; var ariaProperties = { "aria-current": 0, + // state "aria-description": 0, "aria-details": 0, "aria-disabled": 0, + // state "aria-hidden": 0, + // state "aria-invalid": 0, + // state "aria-keyshortcuts": 0, "aria-label": 0, "aria-roledescription": 0, + // Widget Attributes "aria-autocomplete": 0, "aria-checked": 0, "aria-expanded": 0, @@ -5023,12 +5351,15 @@ var require_react_dom_development = __commonJS({ "aria-valuemin": 0, "aria-valuenow": 0, "aria-valuetext": 0, + // Live Region Attributes "aria-atomic": 0, "aria-busy": 0, "aria-live": 0, "aria-relevant": 0, + // Drag-and-Drop Attributes "aria-dropeffect": 0, "aria-grabbed": 0, + // Relationship Attributes "aria-activedescendant": 0, "aria-colcount": 0, "aria-colindex": 0, @@ -5546,33 +5877,112 @@ var require_react_dom_development = __commonJS({ function set(key, value) { key._reactInternals = value; } - var NoFlags = 0; - var PerformedWork = 1; - var Placement = 2; - var Update = 4; - var ChildDeletion = 16; - var ContentReset = 32; - var Callback = 64; - var DidCapture = 128; - var ForceClientRender = 256; - var Ref = 512; - var Snapshot = 1024; - var Passive = 2048; - var Hydrating = 4096; - var Visibility = 8192; - var StoreConsistency = 16384; + var NoFlags = ( + /* */ + 0 + ); + var PerformedWork = ( + /* */ + 1 + ); + var Placement = ( + /* */ + 2 + ); + var Update = ( + /* */ + 4 + ); + var ChildDeletion = ( + /* */ + 16 + ); + var ContentReset = ( + /* */ + 32 + ); + var Callback = ( + /* */ + 64 + ); + var DidCapture = ( + /* */ + 128 + ); + var ForceClientRender = ( + /* */ + 256 + ); + var Ref = ( + /* */ + 512 + ); + var Snapshot = ( + /* */ + 1024 + ); + var Passive = ( + /* */ + 2048 + ); + var Hydrating = ( + /* */ + 4096 + ); + var Visibility = ( + /* */ + 8192 + ); + var StoreConsistency = ( + /* */ + 16384 + ); var LifecycleEffectMask = Passive | Update | Callback | Ref | Snapshot | StoreConsistency; - var HostEffectMask = 32767; - var Incomplete = 32768; - var ShouldCapture = 65536; - var ForceUpdateForLegacySuspense = 131072; - var Forked = 1048576; - var RefStatic = 2097152; - var LayoutStatic = 4194304; - var PassiveStatic = 8388608; - var MountLayoutDev = 16777216; - var MountPassiveDev = 33554432; - var BeforeMutationMask = Update | Snapshot | 0; + var HostEffectMask = ( + /* */ + 32767 + ); + var Incomplete = ( + /* */ + 32768 + ); + var ShouldCapture = ( + /* */ + 65536 + ); + var ForceUpdateForLegacySuspense = ( + /* */ + 131072 + ); + var Forked = ( + /* */ + 1048576 + ); + var RefStatic = ( + /* */ + 2097152 + ); + var LayoutStatic = ( + /* */ + 4194304 + ); + var PassiveStatic = ( + /* */ + 8388608 + ); + var MountLayoutDev = ( + /* */ + 16777216 + ); + var MountPassiveDev = ( + /* */ + 33554432 + ); + var BeforeMutationMask = ( + // TODO: Remove Update flag from before mutation phase by re-landing Visibility + // flag logic (see #20043) + Update | Snapshot | 0 + ); var MutationMask = Placement | Update | ChildDeletion | ContentReset | Ref | Hydrating | Visibility; var LayoutMask = Update | Callback | Ref | Visibility; var PassiveMask = Passive | ChildDeletion; @@ -6114,59 +6524,182 @@ var require_react_dom_development = __commonJS({ } } } - var NoMode = 0; - var ConcurrentMode = 1; - var ProfileMode = 2; - var StrictLegacyMode = 8; - var StrictEffectsMode = 16; + var NoMode = ( + /* */ + 0 + ); + var ConcurrentMode = ( + /* */ + 1 + ); + var ProfileMode = ( + /* */ + 2 + ); + var StrictLegacyMode = ( + /* */ + 8 + ); + var StrictEffectsMode = ( + /* */ + 16 + ); var clz32 = Math.clz32 ? Math.clz32 : clz32Fallback; - var log2 = Math.log; + var log = Math.log; var LN2 = Math.LN2; function clz32Fallback(x2) { var asUint = x2 >>> 0; if (asUint === 0) { return 32; } - return 31 - (log2(asUint) / LN2 | 0) | 0; + return 31 - (log(asUint) / LN2 | 0) | 0; } var TotalLanes = 31; - var NoLanes = 0; - var NoLane = 0; - var SyncLane = 1; - var InputContinuousHydrationLane = 2; - var InputContinuousLane = 4; - var DefaultHydrationLane = 8; - var DefaultLane = 16; - var TransitionHydrationLane = 32; - var TransitionLanes = 4194240; - var TransitionLane1 = 64; - var TransitionLane2 = 128; - var TransitionLane3 = 256; - var TransitionLane4 = 512; - var TransitionLane5 = 1024; - var TransitionLane6 = 2048; - var TransitionLane7 = 4096; - var TransitionLane8 = 8192; - var TransitionLane9 = 16384; - var TransitionLane10 = 32768; - var TransitionLane11 = 65536; - var TransitionLane12 = 131072; - var TransitionLane13 = 262144; - var TransitionLane14 = 524288; - var TransitionLane15 = 1048576; - var TransitionLane16 = 2097152; - var RetryLanes = 130023424; - var RetryLane1 = 4194304; - var RetryLane2 = 8388608; - var RetryLane3 = 16777216; - var RetryLane4 = 33554432; - var RetryLane5 = 67108864; + var NoLanes = ( + /* */ + 0 + ); + var NoLane = ( + /* */ + 0 + ); + var SyncLane = ( + /* */ + 1 + ); + var InputContinuousHydrationLane = ( + /* */ + 2 + ); + var InputContinuousLane = ( + /* */ + 4 + ); + var DefaultHydrationLane = ( + /* */ + 8 + ); + var DefaultLane = ( + /* */ + 16 + ); + var TransitionHydrationLane = ( + /* */ + 32 + ); + var TransitionLanes = ( + /* */ + 4194240 + ); + var TransitionLane1 = ( + /* */ + 64 + ); + var TransitionLane2 = ( + /* */ + 128 + ); + var TransitionLane3 = ( + /* */ + 256 + ); + var TransitionLane4 = ( + /* */ + 512 + ); + var TransitionLane5 = ( + /* */ + 1024 + ); + var TransitionLane6 = ( + /* */ + 2048 + ); + var TransitionLane7 = ( + /* */ + 4096 + ); + var TransitionLane8 = ( + /* */ + 8192 + ); + var TransitionLane9 = ( + /* */ + 16384 + ); + var TransitionLane10 = ( + /* */ + 32768 + ); + var TransitionLane11 = ( + /* */ + 65536 + ); + var TransitionLane12 = ( + /* */ + 131072 + ); + var TransitionLane13 = ( + /* */ + 262144 + ); + var TransitionLane14 = ( + /* */ + 524288 + ); + var TransitionLane15 = ( + /* */ + 1048576 + ); + var TransitionLane16 = ( + /* */ + 2097152 + ); + var RetryLanes = ( + /* */ + 130023424 + ); + var RetryLane1 = ( + /* */ + 4194304 + ); + var RetryLane2 = ( + /* */ + 8388608 + ); + var RetryLane3 = ( + /* */ + 16777216 + ); + var RetryLane4 = ( + /* */ + 33554432 + ); + var RetryLane5 = ( + /* */ + 67108864 + ); var SomeRetryLane = RetryLane1; - var SelectiveHydrationLane = 134217728; - var NonIdleLanes = 268435455; - var IdleHydrationLane = 268435456; - var IdleLane = 536870912; - var OffscreenLane = 1073741824; + var SelectiveHydrationLane = ( + /* */ + 134217728 + ); + var NonIdleLanes = ( + /* */ + 268435455 + ); + var IdleHydrationLane = ( + /* */ + 268435456 + ); + var IdleLane = ( + /* */ + 536870912 + ); + var OffscreenLane = ( + /* */ + 1073741824 + ); function getLabelForLane(lane) { { if (lane & SyncLane) { @@ -6294,10 +6827,19 @@ var require_react_dom_development = __commonJS({ if (nextLanes === NoLanes) { return NoLanes; } - if (wipLanes !== NoLanes && wipLanes !== nextLanes && (wipLanes & suspendedLanes) === NoLanes) { + if (wipLanes !== NoLanes && wipLanes !== nextLanes && // If we already suspended with a delay, then interrupting is fine. Don't + // bother waiting until the root is complete. + (wipLanes & suspendedLanes) === NoLanes) { var nextLane = getHighestPriorityLane(nextLanes); var wipLane = getHighestPriorityLane(wipLanes); - if (nextLane >= wipLane || nextLane === DefaultLane && (wipLane & TransitionLanes) !== NoLanes) { + if ( + // Tests whether the next lane is equal or lower priority than the wip + // one. This works because the bits decrease in priority as you go left. + nextLane >= wipLane || // Default priority updates should not interrupt transition updates. The + // only difference between default updates and transition updates is that + // default updates do not support refresh transitions. + nextLane === DefaultLane && (wipLane & TransitionLanes) !== NoLanes + ) { return wipLanes; } } @@ -6543,7 +7085,11 @@ var require_react_dom_development = __commonJS({ while (lanes) { var index2 = pickArbitraryLaneIndex(lanes); var lane = 1 << index2; - if (lane & entangledLanes | entanglements[index2] & entangledLanes) { + if ( + // Is this one of the newly entangled lanes? + lane & entangledLanes | // Is this lane transitively entangled with the newly entangled lanes? + entanglements[index2] & entangledLanes + ) { entanglements[index2] |= entangledLanes; } lanes &= ~lane; @@ -6732,6 +7278,7 @@ var require_react_dom_development = __commonJS({ "keyup", "input", "textInput", + // Intentionally camelCase "copy", "cut", "paste", @@ -7333,8 +7880,18 @@ var require_react_dom_development = __commonJS({ } this.isPropagationStopped = functionThatReturnsTrue; }, + /** + * We release all dispatched `SyntheticEvent`s after each event loop, adding + * them back into the pool. This allows a way to hold onto a reference that + * won't be added back into the pool. + */ persist: function() { }, + /** + * Checks if this event should be released back into the pool. + * + * @return {boolean} True if this should not be released, false otherwise. + */ isPersistent: functionThatReturnsTrue }); return SyntheticBaseEvent; @@ -7526,6 +8083,7 @@ var require_react_dom_development = __commonJS({ repeat: 0, locale: 0, getModifierState: getEventModifierState, + // Legacy Interface charCode: function(event) { if (event.type === "keypress") { return getEventCharCode(event); @@ -7581,12 +8139,25 @@ var require_react_dom_development = __commonJS({ var SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface); var WheelEventInterface = assign({}, MouseEventInterface, { deltaX: function(event) { - return "deltaX" in event ? event.deltaX : "wheelDeltaX" in event ? -event.wheelDeltaX : 0; + return "deltaX" in event ? event.deltaX : ( + // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive). + "wheelDeltaX" in event ? -event.wheelDeltaX : 0 + ); }, deltaY: function(event) { - return "deltaY" in event ? event.deltaY : "wheelDeltaY" in event ? -event.wheelDeltaY : "wheelDelta" in event ? -event.wheelDelta : 0; + return "deltaY" in event ? event.deltaY : ( + // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive). + "wheelDeltaY" in event ? -event.wheelDeltaY : ( + // Fallback to `wheelDelta` for IE<9 and normalize (down is positive). + "wheelDelta" in event ? -event.wheelDelta : 0 + ) + ); }, deltaZ: 0, + // Browsers without "deltaMode" is reporting in raw wheel delta where one + // notch on the scroll is always +/- 120, roughly equivalent to pixels. + // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or + // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size. deltaMode: 0 }); var SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface); @@ -7609,7 +8180,8 @@ var require_react_dom_development = __commonJS({ } var hasSpaceKeypress = false; function isKeypressCommand(nativeEvent) { - return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) && !(nativeEvent.ctrlKey && nativeEvent.altKey); + return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) && // ctrlKey && altKey is equivalent to AltGr, and is not a command. + !(nativeEvent.ctrlKey && nativeEvent.altKey); } function getCompositionEventType(domEventName) { switch (domEventName) { @@ -8511,7 +9083,11 @@ var require_react_dom_development = __commonJS({ } var inCapturePhase = (eventSystemFlags & IS_CAPTURE_PHASE) !== 0; { - var accumulateTargetOnly = !inCapturePhase && domEventName === "scroll"; + var accumulateTargetOnly = !inCapturePhase && // TODO: ideally, we'd eventually add all events from + // nonDelegatedEvents list in DOMPluginEventSystem. + // Then we can remove this special list. + // This is a breaking change that can wait until React 18. + domEventName === "scroll"; var _listeners = accumulateSinglePhaseListeners(targetInst, reactName, nativeEvent.type, inCapturePhase, accumulateTargetOnly); if (_listeners.length > 0) { var _event = new SyntheticEventCtor(reactName, reactEventType, null, nativeEvent, nativeEventTarget); @@ -8863,7 +9439,13 @@ var require_react_dom_development = __commonJS({ var normalizeHTML; { warnedUnknownTags = { + // There are working polyfills for . Let people use it. dialog: true, + // Electron ships a custom tag to display external web content in + // an isolated frame and process. + // This tag is not present in non Electron environments such as JSDom which + // is often used for testing purposes. + // @see https://electronjs.org/docs/api/webview-tag webview: true }; validatePropertiesInDevelopment = function(type, props) { @@ -9410,12 +9992,15 @@ var require_react_dom_development = __commonJS({ listenToNonDelegatedEvent("scroll", domElement); } } - } else if (shouldWarnDev && true && typeof isCustomComponentTag === "boolean") { + } else if (shouldWarnDev && true && // Convince Flow we've calculated it (it's DEV-only in this method.) + typeof isCustomComponentTag === "boolean") { var serverValue = void 0; var propertyInfo = isCustomComponentTag && enableCustomElementPropertySupport ? null : getPropertyInfo(propKey); if (rawProps[SUPPRESS_HYDRATION_WARNING] === true) ; - else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING || propKey === "value" || propKey === "checked" || propKey === "selected") + else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING || // Controlled attributes are not validated + // TODO: Only ignore them on controlled tags. + propKey === "value" || propKey === "checked" || propKey === "selected") ; else if (propKey === DANGEROUSLY_SET_INNER_HTML) { var serverHTML = domElement.innerHTML; @@ -9472,7 +10057,10 @@ var require_react_dom_development = __commonJS({ } { if (shouldWarnDev) { - if (extraAttributeNames.size > 0 && rawProps[SUPPRESS_HYDRATION_WARNING] !== true) { + if ( + // $FlowFixMe - Should be inferred as not undefined. + extraAttributeNames.size > 0 && rawProps[SUPPRESS_HYDRATION_WARNING] !== true + ) { warnForExtraAttributes(extraAttributeNames); } } @@ -9569,6 +10157,9 @@ var require_react_dom_development = __commonJS({ "marquee", "object", "template", + // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point + // TODO: Distinguish by namespace here -- for , including it here + // errs on the side of fewer warnings "foreignObject", "desc", "title" @@ -10841,6 +11432,7 @@ var require_react_dom_development = __commonJS({ returnFiber.memoizedProps, returnFiber.stateNode, instance, + // TODO: Delete this argument when we remove the legacy root API. isConcurrentMode ); break; @@ -10903,6 +11495,7 @@ var require_react_dom_development = __commonJS({ parentInstance, _type, _props, + // TODO: Delete this argument when we remove the legacy root API. isConcurrentMode ); break; @@ -10915,6 +11508,7 @@ var require_react_dom_development = __commonJS({ parentProps, parentInstance, _text, + // TODO: Delete this argument when we remove the legacy root API. _isConcurrentMode ); break; @@ -11058,6 +11652,7 @@ var require_react_dom_development = __commonJS({ parentContainer, textInstance, textContent2, + // TODO: Delete this argument when we remove the legacy root API. isConcurrentMode ); break; @@ -11073,6 +11668,7 @@ var require_react_dom_development = __commonJS({ parentInstance, textInstance, textContent2, + // TODO: Delete this argument when we remove the legacy root API. _isConcurrentMode2 ); break; @@ -11215,7 +11811,8 @@ var require_react_dom_development = __commonJS({ if (didWarnAboutUnsafeLifecycles.has(fiber.type)) { return; } - if (typeof instance.componentWillMount === "function" && instance.componentWillMount.__suppressDeprecationWarning !== true) { + if (typeof instance.componentWillMount === "function" && // Don't warn about react-lifecycles-compat polyfilled components. + instance.componentWillMount.__suppressDeprecationWarning !== true) { pendingComponentWillMountWarnings.push(fiber); } if (fiber.mode & StrictLegacyMode && typeof instance.UNSAFE_componentWillMount === "function") { @@ -11948,6 +12545,9 @@ var require_react_dom_development = __commonJS({ if (newLastBaseUpdate !== null) { var _clone = { eventTime: updateEventTime, + // This update is going to be committed so we never want uncommit + // it. Using NoLane works because 0 is a subset of all bitmasks, so + // this will never be skipped by the check above. lane: NoLane, tag: update.tag, payload: update.payload, @@ -11958,7 +12558,9 @@ var require_react_dom_development = __commonJS({ } newState = getStateFromUpdate(workInProgress2, queue, update, newState, props, instance); var callback = update.callback; - if (callback !== null && update.lane !== NoLane) { + if (callback !== null && // If the update was already committed, we should not queue its + // callback again. + update.lane !== NoLane) { workInProgress2.flags |= Callback; var effects = queue.effects; if (effects === null) { @@ -12034,7 +12636,7 @@ var require_react_dom_development = __commonJS({ } } var fakeInternalInstance = {}; - var emptyRefsObject = new React67.Component().refs; + var emptyRefsObject = new React66.Component().refs; var didWarnAboutStateAssignmentForComponent; var didWarnAboutUninitializedState; var didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate; @@ -12289,7 +12891,10 @@ var require_react_dom_development = __commonJS({ var contextType = ctor.contextType; { if ("contextType" in ctor) { - var isValid = contextType === null || contextType !== void 0 && contextType.$$typeof === REACT_CONTEXT_TYPE && contextType._context === void 0; + var isValid = ( + // Allow null for conditional declaration + contextType === null || contextType !== void 0 && contextType.$$typeof === REACT_CONTEXT_TYPE && contextType._context === void 0 + ); if (!isValid && !didWarnAboutInvalidateContextType.has(ctor)) { didWarnAboutInvalidateContextType.add(ctor); var addendum = ""; @@ -12584,7 +13189,11 @@ var require_react_dom_development = __commonJS({ applyDerivedStateFromProps(workInProgress2, ctor, getDerivedStateFromProps, newProps); newState = workInProgress2.memoizedState; } - var shouldUpdate = checkHasForceUpdateAfterProcessing() || checkShouldComponentUpdate(workInProgress2, ctor, oldProps, newProps, oldState, newState, nextContext) || enableLazyContextPropagation; + var shouldUpdate = checkHasForceUpdateAfterProcessing() || checkShouldComponentUpdate(workInProgress2, ctor, oldProps, newProps, oldState, newState, nextContext) || // TODO: In some cases, we'll end up checking if context has changed twice, + // both before and after `shouldComponentUpdate` has been called. Not ideal, + // but I'm loath to refactor this function. This only happens for memoized + // components so it's not that common. + enableLazyContextPropagation; if (shouldUpdate) { if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillUpdate === "function" || typeof instance.componentWillUpdate === "function")) { if (typeof instance.componentWillUpdate === "function") { @@ -12655,7 +13264,10 @@ var require_react_dom_development = __commonJS({ var mixedRef = element.ref; if (mixedRef !== null && typeof mixedRef !== "function" && typeof mixedRef !== "object") { { - if ((returnFiber.mode & StrictLegacyMode || warnAboutStringRefs) && !(element._owner && element._self && element._owner.stateNode !== element._self)) { + if ((returnFiber.mode & StrictLegacyMode || warnAboutStringRefs) && // We warn in ReactElement.js if owner and self are equal for string refs + // because these cannot be automatically converted to an arrow function + // using a codemod. Therefore, we don't have to warn about string refs again. + !(element._owner && element._self && element._owner.stateNode !== element._self)) { var componentName = getComponentNameFromFiber(returnFiber) || "Component"; if (!didWarnAboutStringRefs[componentName]) { { @@ -12815,7 +13427,12 @@ var require_react_dom_development = __commonJS({ return updateFragment2(returnFiber, current2, element.props.children, lanes, element.key); } if (current2 !== null) { - if (current2.elementType === elementType || isCompatibleFamilyForHotReloading(current2, element) || typeof elementType === "object" && elementType !== null && elementType.$$typeof === REACT_LAZY_TYPE && resolveLazy(elementType) === current2.type) { + if (current2.elementType === elementType || // Keep this check inline so it only runs on the false path: + isCompatibleFamilyForHotReloading(current2, element) || // Lazy types should reconcile their resolved type. + // We need to do this after the Hot Reloading check above, + // because hot reloading has different semantics than prod because + // it doesn't resuspend. So we can't let the call below suspend. + typeof elementType === "object" && elementType !== null && elementType.$$typeof === REACT_LAZY_TYPE && resolveLazy(elementType) === current2.type) { var existing = useFiber(current2, element.props); existing.ref = coerceRef(returnFiber, current2, element); existing.return = returnFiber; @@ -13108,7 +13725,8 @@ var require_react_dom_development = __commonJS({ throw new Error("An object is not an iterable. This error is likely caused by a bug in React. Please file an issue."); } { - if (typeof Symbol === "function" && newChildrenIterable[Symbol.toStringTag] === "Generator") { + if (typeof Symbol === "function" && // $FlowFixMe Flow doesn't know about toStringTag + newChildrenIterable[Symbol.toStringTag] === "Generator") { if (!didWarnAboutGenerators) { error("Using Generators as children is unsupported and will likely yield unexpected results because enumerating a generator mutates it. You may convert it to an array with `Array.from()` or the `[...spread]` operator before rendering. Keep in mind you might need to polyfill these features for older browsers."); } @@ -13256,7 +13874,12 @@ var require_react_dom_development = __commonJS({ return existing; } } else { - if (child.elementType === elementType || isCompatibleFamilyForHotReloading(child, element) || typeof elementType === "object" && elementType !== null && elementType.$$typeof === REACT_LAZY_TYPE && resolveLazy(elementType) === child.type) { + if (child.elementType === elementType || // Keep this check inline so it only runs on the false path: + isCompatibleFamilyForHotReloading(child, element) || // Lazy types should reconcile their resolved type. + // We need to do this after the Hot Reloading check above, + // because hot reloading has different semantics than prod because + // it doesn't resuspend. So we can't let the call below suspend. + typeof elementType === "object" && elementType !== null && elementType.$$typeof === REACT_LAZY_TYPE && resolveLazy(elementType) === child.type) { deleteRemainingChildren(returnFiber, child.sibling); var _existing = useFiber(child, element.props); _existing.ref = coerceRef(returnFiber, child, element); @@ -13467,7 +14090,9 @@ var require_react_dom_development = __commonJS({ return node; } } - } else if (node.tag === SuspenseListComponent && node.memoizedProps.revealOrder !== void 0) { + } else if (node.tag === SuspenseListComponent && // revealOrder undefined can't be trusted because it don't + // keep track of whether it suspended or not. + node.memoizedProps.revealOrder !== void 0) { var didSuspend = (node.flags & DidCapture) !== NoFlags; if (didSuspend) { return node; @@ -13491,11 +14116,26 @@ var require_react_dom_development = __commonJS({ } return null; } - var NoFlags$1 = 0; - var HasEffect = 1; - var Insertion = 2; - var Layout = 4; - var Passive$1 = 8; + var NoFlags$1 = ( + /* */ + 0 + ); + var HasEffect = ( + /* */ + 1 + ); + var Insertion = ( + /* */ + 2 + ); + var Layout = ( + /* */ + 4 + ); + var Passive$1 = ( + /* */ + 8 + ); var workInProgressSources = []; function resetWorkInProgressVersions() { for (var i2 = 0; i2 < workInProgressSources.length; i2++) { @@ -13669,7 +14309,12 @@ var require_react_dom_development = __commonJS({ currentHookNameInDev = null; hookTypesDev = null; hookTypesUpdateIndexDev = -1; - if (current2 !== null && (current2.flags & StaticMask) !== (workInProgress2.flags & StaticMask) && (current2.mode & ConcurrentMode) !== NoMode) { + if (current2 !== null && (current2.flags & StaticMask) !== (workInProgress2.flags & StaticMask) && // Disable this warning in legacy mode, because legacy Suspense is weird + // and creates false positives. To make this work in legacy mode, we'd + // need to mark fibers that commit in an incomplete state, somehow. For + // now I'll disable the warning that most of the bugs that would trigger + // it are either exclusive to concurrent mode or exist in both. + (current2.mode & ConcurrentMode) !== NoMode) { error("Internal React error: Expected static flag was missing. Please notify the React team."); } } @@ -13859,6 +14504,9 @@ var require_react_dom_development = __commonJS({ } else { if (newBaseQueueLast !== null) { var _clone = { + // This update is going to be committed so we never want uncommit + // it. Using NoLane works because 0 is a subset of all bitmasks, so + // this will never be skipped by the check above. lane: NoLane, action: update.action, hasEagerState: update.hasEagerState, @@ -14013,7 +14661,9 @@ var require_react_dom_development = __commonJS({ } var inst = hook.queue; updateEffect(subscribeToStore.bind(null, fiber, inst, subscribe2), [subscribe2]); - if (inst.getSnapshot !== getSnapshot || snapshotChanged || workInProgressHook !== null && workInProgressHook.memoizedState.tag & HasEffect) { + if (inst.getSnapshot !== getSnapshot || snapshotChanged || // Check if the susbcribe function changed. We can save some memory by + // checking whether we scheduled a subscription effect above. + workInProgressHook !== null && workInProgressHook.memoizedState.tag & HasEffect) { fiber.flags |= Passive; pushEffect(HasEffect | Passive$1, updateStoreInstance.bind(null, fiber, inst, nextSnapshot, getSnapshot), void 0, null); var root2 = getWorkInProgressRoot(); @@ -14107,6 +14757,7 @@ var require_react_dom_development = __commonJS({ create, destroy, deps, + // Circular next: null }; var componentUpdateQueue = currentlyRenderingFiber$1.updateQueue; @@ -15760,6 +16411,7 @@ var require_react_dom_development = __commonJS({ checkPropTypes( innerPropTypes, nextProps, + // Resolved props "prop", getComponentNameFromType(Component2) ); @@ -15807,7 +16459,8 @@ var require_react_dom_development = __commonJS({ function updateMemoComponent(current2, workInProgress2, Component2, nextProps, renderLanes2) { if (current2 === null) { var type = Component2.type; - if (isSimpleFunctionComponent(type) && Component2.compare === null && Component2.defaultProps === void 0) { + if (isSimpleFunctionComponent(type) && Component2.compare === null && // SimpleMemoComponent codepath doesn't resolve outer props either. + Component2.defaultProps === void 0) { var resolvedType = type; { resolvedType = resolveFunctionForHotReloading(type); @@ -15825,6 +16478,7 @@ var require_react_dom_development = __commonJS({ checkPropTypes( innerPropTypes, nextProps, + // Resolved props "prop", getComponentNameFromType(type) ); @@ -15843,6 +16497,7 @@ var require_react_dom_development = __commonJS({ checkPropTypes( _innerPropTypes, nextProps, + // Resolved props "prop", getComponentNameFromType(_type) ); @@ -15883,6 +16538,7 @@ var require_react_dom_development = __commonJS({ checkPropTypes( outerPropTypes, nextProps, + // Resolved (SimpleMemoComponent has no defaultProps) "prop", getComponentNameFromType(outerMemoType) ); @@ -15892,7 +16548,8 @@ var require_react_dom_development = __commonJS({ } if (current2 !== null) { var prevProps = current2.memoizedProps; - if (shallowEqual2(prevProps, nextProps) && current2.ref === workInProgress2.ref && workInProgress2.type === current2.type) { + if (shallowEqual2(prevProps, nextProps) && current2.ref === workInProgress2.ref && // Prevent bailout if the implementation changed due to hot reload. + workInProgress2.type === current2.type) { didReceiveUpdate = false; workInProgress2.pendingProps = nextProps = prevProps; if (!checkScheduledUpdateOrContext(current2, renderLanes2)) { @@ -16001,6 +16658,7 @@ var require_react_dom_development = __commonJS({ checkPropTypes( innerPropTypes, nextProps, + // Resolved props "prop", getComponentNameFromType(Component2) ); @@ -16076,6 +16734,7 @@ var require_react_dom_development = __commonJS({ checkPropTypes( innerPropTypes, nextProps, + // Resolved props "prop", getComponentNameFromType(Component2) ); @@ -16296,6 +16955,7 @@ var require_react_dom_development = __commonJS({ checkPropTypes( outerPropTypes, resolvedProps, + // Resolved for outer only "prop", getComponentNameFromType(Component2) ); @@ -16307,6 +16967,7 @@ var require_react_dom_development = __commonJS({ workInProgress2, Component2, resolveDefaultProps(Component2.type, resolvedProps), + // The inner type can have defaults too renderLanes2 ); return child; @@ -16379,7 +17040,11 @@ var require_react_dom_development = __commonJS({ } } } - if (typeof value === "object" && value !== null && typeof value.render === "function" && value.$$typeof === void 0) { + if ( + // Run these checks in production only if the flag is off. + // Eventually we'll delete this branch altogether. + typeof value === "object" && value !== null && typeof value.render === "function" && value.$$typeof === void 0 + ) { { var _componentName2 = getComponentNameFromType(Component2) || "Unknown"; if (!didWarnAboutModulePatternComponent[_componentName2]) { @@ -16644,7 +17309,17 @@ var require_react_dom_development = __commonJS({ children: primaryChildren }; var primaryChildFragment; - if ((mode & ConcurrentMode) === NoMode && workInProgress2.child !== currentPrimaryChildFragment) { + if ( + // In legacy mode, we commit the primary tree as if it successfully + // completed, even though it's in an inconsistent state. + (mode & ConcurrentMode) === NoMode && // Make sure we're on the second pass, i.e. the primary child fragment was + // already cloned. In legacy mode, the only case where this isn't true is + // when DevTools forces us to display a fallback; we skip the first render + // pass entirely and go straight to rendering the fallback. (In Concurrent + // Mode, SuspenseList can also trigger this scenario, but this is a legacy- + // only codepath.) + workInProgress2.child !== currentPrimaryChildFragment + ) { var progressedPrimaryFragment = workInProgress2.child; primaryChildFragment = progressedPrimaryFragment; primaryChildFragment.childLanes = NoLanes; @@ -16724,6 +17399,9 @@ var require_react_dom_development = __commonJS({ current2, workInProgress2, renderLanes2, + // TODO: When we delete legacy mode, we should make this error argument + // required — every concurrent mode path that causes hydration to + // de-opt to client rendering should have an error message. null ); } @@ -16981,6 +17659,7 @@ var require_react_dom_development = __commonJS({ initSuspenseListRenderState( workInProgress2, false, + // isBackwards tail, lastContentRow, tailMode @@ -17005,8 +17684,10 @@ var require_react_dom_development = __commonJS({ initSuspenseListRenderState( workInProgress2, true, + // isBackwards _tail, null, + // last tailMode ); break; @@ -17015,8 +17696,11 @@ var require_react_dom_development = __commonJS({ initSuspenseListRenderState( workInProgress2, false, + // isBackwards null, + // tail null, + // last void 0 ); break; @@ -17292,11 +17976,14 @@ var require_react_dom_development = __commonJS({ if (current2 !== null) { var oldProps = current2.memoizedProps; var newProps = workInProgress2.pendingProps; - if (oldProps !== newProps || hasContextChanged() || workInProgress2.type !== current2.type) { + if (oldProps !== newProps || hasContextChanged() || // Force a re-render if the implementation changed due to hot reload: + workInProgress2.type !== current2.type) { didReceiveUpdate = true; } else { var hasScheduledUpdateOrContext = checkScheduledUpdateOrContext(current2, renderLanes2); - if (!hasScheduledUpdateOrContext && (workInProgress2.flags & DidCapture) === NoFlags) { + if (!hasScheduledUpdateOrContext && // If this is the second pass of an error or suspense boundary, there + // may not be work scheduled on `current`, so we check for this flag. + (workInProgress2.flags & DidCapture) === NoFlags) { didReceiveUpdate = false; return attemptEarlyBailoutIfNoScheduledUpdate(current2, workInProgress2, renderLanes2); } @@ -17372,6 +18059,7 @@ var require_react_dom_development = __commonJS({ checkPropTypes( outerPropTypes, _resolvedProps3, + // Resolved for outer only "prop", getComponentNameFromType(_type2) ); @@ -17654,7 +18342,11 @@ var require_react_dom_development = __commonJS({ } else { if (current2 !== null) { var prevState = current2.memoizedState; - if (!prevState.isDehydrated || (workInProgress2.flags & ForceClientRender) !== NoFlags) { + if ( + // Check if this is a client root + !prevState.isDehydrated || // Check if we reverted to client rendering (e.g. due to an error) + (workInProgress2.flags & ForceClientRender) !== NoFlags + ) { workInProgress2.flags |= Snapshot; upgradeHydrationErrorsToRecoverable(); } @@ -17860,7 +18552,12 @@ var require_react_dom_development = __commonJS({ bubbleProperties(workInProgress2); return null; } - } else if (now() * 2 - renderState.renderingStartTime > getRenderTargetTime() && renderLanes2 !== OffscreenLane) { + } else if ( + // The time it took to render last row is greater than the remaining + // time we have to render. So rendering one more row would likely + // exceed it. + now() * 2 - renderState.renderingStartTime > getRenderTargetTime() && renderLanes2 !== OffscreenLane + ) { workInProgress2.flags |= DidCapture; didSuspendAlready = true; cutOffTailIfNeeded(renderState, false); @@ -17909,7 +18606,8 @@ var require_react_dom_development = __commonJS({ if (current2 !== null) { var _prevState = current2.memoizedState; var prevIsHidden = _prevState !== null; - if (prevIsHidden !== nextIsHidden && !enableLegacyHidden) { + if (prevIsHidden !== nextIsHidden && // LegacyHidden doesn't do any hiding — it only pre-renders. + !enableLegacyHidden) { workInProgress2.flags |= Visibility; } } @@ -18996,7 +19694,10 @@ var require_react_dom_development = __commonJS({ return; } case OffscreenComponent: { - if (deletedFiber.mode & ConcurrentMode) { + if ( + // TODO: Remove this dead flag + deletedFiber.mode & ConcurrentMode + ) { var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden; offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || deletedFiber.memoizedState !== null; recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber); @@ -19242,7 +19943,10 @@ var require_react_dom_development = __commonJS({ } case OffscreenComponent: { var _wasHidden = current2 !== null && current2.memoizedState !== null; - if (finishedWork.mode & ConcurrentMode) { + if ( + // TODO: Remove this dead flag + finishedWork.mode & ConcurrentMode + ) { var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden; offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || _wasHidden; recursivelyTraverseMutationEffects(root2, finishedWork); @@ -19346,6 +20050,7 @@ var require_react_dom_development = __commonJS({ nextEffect = child; commitLayoutEffects_begin( child, + // New root; bubble back up to here and stop. root2, committedLanes ); @@ -19788,14 +20493,20 @@ var require_react_dom_development = __commonJS({ var ReactCurrentActQueue = ReactSharedInternals.ReactCurrentActQueue; function isLegacyActEnvironment(fiber) { { - var isReactActEnvironmentGlobal = typeof IS_REACT_ACT_ENVIRONMENT !== "undefined" ? IS_REACT_ACT_ENVIRONMENT : void 0; + var isReactActEnvironmentGlobal = ( + // $FlowExpectedError – Flow doesn't know about IS_REACT_ACT_ENVIRONMENT global + typeof IS_REACT_ACT_ENVIRONMENT !== "undefined" ? IS_REACT_ACT_ENVIRONMENT : void 0 + ); var jestIsDefined = typeof jest !== "undefined"; return jestIsDefined && isReactActEnvironmentGlobal !== false; } } function isConcurrentActEnvironment() { { - var isReactActEnvironmentGlobal = typeof IS_REACT_ACT_ENVIRONMENT !== "undefined" ? IS_REACT_ACT_ENVIRONMENT : void 0; + var isReactActEnvironmentGlobal = ( + // $FlowExpectedError – Flow doesn't know about IS_REACT_ACT_ENVIRONMENT global + typeof IS_REACT_ACT_ENVIRONMENT !== "undefined" ? IS_REACT_ACT_ENVIRONMENT : void 0 + ); if (!isReactActEnvironmentGlobal && ReactCurrentActQueue.current !== null) { error("The current testing environment is not configured to support act(...)"); } @@ -19804,10 +20515,22 @@ var require_react_dom_development = __commonJS({ } var ceil2 = Math.ceil; var ReactCurrentDispatcher$2 = ReactSharedInternals.ReactCurrentDispatcher, ReactCurrentOwner$2 = ReactSharedInternals.ReactCurrentOwner, ReactCurrentBatchConfig$3 = ReactSharedInternals.ReactCurrentBatchConfig, ReactCurrentActQueue$1 = ReactSharedInternals.ReactCurrentActQueue; - var NoContext = 0; - var BatchedContext = 1; - var RenderContext = 2; - var CommitContext = 4; + var NoContext = ( + /* */ + 0 + ); + var BatchedContext = ( + /* */ + 1 + ); + var RenderContext = ( + /* */ + 2 + ); + var CommitContext = ( + /* */ + 4 + ); var RootInProgress = 0; var RootFatalErrored = 1; var RootErrored = 2; @@ -19938,7 +20661,8 @@ var require_react_dom_development = __commonJS({ } } ensureRootIsScheduled(root2, eventTime); - if (lane === SyncLane && executionContext === NoContext && (fiber.mode & ConcurrentMode) === NoMode && !ReactCurrentActQueue$1.isBatchingLegacy) { + if (lane === SyncLane && executionContext === NoContext && (fiber.mode & ConcurrentMode) === NoMode && // Treat `act` as if it's inside `batchedUpdates`, even in legacy mode. + !ReactCurrentActQueue$1.isBatchingLegacy) { resetRenderTimer(); flushSyncCallbacksOnlyInLegacyMode(); } @@ -19951,7 +20675,11 @@ var require_react_dom_development = __commonJS({ ensureRootIsScheduled(root2, eventTime); } function isUnsafeClassRenderPhaseUpdate(fiber) { - return (executionContext & RenderContext) !== NoContext; + return ( + // TODO: Remove outdated deferRenderPhaseUpdateToNextBatch experiment. We + // decided not to enable it. + (executionContext & RenderContext) !== NoContext + ); } function ensureRootIsScheduled(root2, currentTime) { var existingCallbackNode = root2.callbackNode; @@ -19967,7 +20695,10 @@ var require_react_dom_development = __commonJS({ } var newCallbackPriority = getHighestPriorityLane(nextLanes); var existingCallbackPriority = root2.callbackPriority; - if (existingCallbackPriority === newCallbackPriority && !(ReactCurrentActQueue$1.current !== null && existingCallbackNode !== fakeActCallbackNode)) { + if (existingCallbackPriority === newCallbackPriority && // Special case related to `act`. If the currently scheduled task is a + // Scheduler task, rather than an `act` task, cancel it and re-scheduled + // on the `act` queue. + !(ReactCurrentActQueue$1.current !== null && existingCallbackNode !== fakeActCallbackNode)) { { if (existingCallbackNode == null && existingCallbackPriority !== SyncLane) { error("Expected scheduled callback to exist. This error is likely caused by a bug in React. Please file an issue."); @@ -20132,7 +20863,8 @@ var require_react_dom_development = __commonJS({ } case RootSuspended: { markRootSuspended$1(root2, lanes); - if (includesOnlyRetries(lanes) && !shouldForceFlushFallbacksInDEV()) { + if (includesOnlyRetries(lanes) && // do not delay if we're inside an act() scope + !shouldForceFlushFallbacksInDEV()) { var msUntilTimeout = globalMostRecentFallbackTime + FALLBACK_THROTTLE_MS - now(); if (msUntilTimeout > 10) { var nextLanes = getNextLanes(root2, NoLanes); @@ -20282,7 +21014,8 @@ var require_react_dom_development = __commonJS({ return fn2(a2); } finally { executionContext = prevExecutionContext; - if (executionContext === NoContext && !ReactCurrentActQueue$1.isBatchingLegacy) { + if (executionContext === NoContext && // Treat `act` as if it's inside `batchedUpdates`, even in legacy mode. + !ReactCurrentActQueue$1.isBatchingLegacy) { resetRenderTimer(); flushSyncCallbacksOnlyInLegacyMode(); } @@ -21902,6 +22635,7 @@ var require_react_dom_development = __commonJS({ fiber.stateNode = { containerInfo: portal.containerInfo, pendingChildren: null, + // Used by persistent updates implementation: portal.implementation }; return fiber; @@ -22003,6 +22737,7 @@ var require_react_dom_development = __commonJS({ element: initialChildren, isDehydrated: hydrate2, cache: null, + // not enabled yet transitions: null, pendingSuspenseBoundaries: null }; @@ -22018,6 +22753,7 @@ var require_react_dom_development = __commonJS({ checkKeyStringCoercion(key); } return { + // This tag allow us to uniquely identify this as a React Portal $$typeof: REACT_PORTAL_TYPE, key: key == null ? null : "" + key, children, @@ -22276,6 +23012,7 @@ var require_react_dom_development = __commonJS({ } } else { updated[oldKey] = copyWithRenameImpl( + // $FlowFixMe number or string is fine here obj[oldKey], oldPath, newPath, @@ -22433,15 +23170,23 @@ var require_react_dom_development = __commonJS({ currentDispatcherRef: ReactCurrentDispatcher2, findHostInstanceByFiber, findFiberByHostInstance: findFiberByHostInstance || emptyFindFiberByHostInstance, + // React Refresh findHostInstancesForRefresh, scheduleRefresh, scheduleRoot, setRefreshHandler, + // Enables DevTools to append owner stacks to error messages in DEV mode. getCurrentFiber: getCurrentFiberForDevTools, + // Enables DevTools to detect reconciler version rather than renderer version + // which may not match for third party renderers. reconcilerVersion: ReactVersion }); } - var defaultOnRecoverableError = typeof reportError === "function" ? reportError : function(error2) { + var defaultOnRecoverableError = typeof reportError === "function" ? ( + // In modern browsers, reportError will dispatch an error event, + // emulating an uncaught JavaScript error. + reportError + ) : function(error2) { console["error"](error2); }; function ReactDOMRoot(internalRoot) { @@ -22649,9 +23394,13 @@ var require_react_dom_development = __commonJS({ container, LegacyRoot, null, + // hydrationCallbacks false, + // isStrictMode false, + // concurrentUpdatesByDefaultOverride, "", + // identifierPrefix noopOnRecoverableError ); container._reactRootContainer = root2; @@ -22676,9 +23425,13 @@ var require_react_dom_development = __commonJS({ container, LegacyRoot, null, + // hydrationCallbacks false, + // isStrictMode false, + // concurrentUpdatesByDefaultOverride, "", + // identifierPrefix noopOnRecoverableError ); container._reactRootContainer = _root; @@ -22826,7 +23579,9 @@ var require_react_dom_development = __commonJS({ setGetCurrentUpdatePriority(getCurrentUpdatePriority); setAttemptHydrationAtPriority(runWithPriority); { - if (typeof Map !== "function" || Map.prototype == null || typeof Map.prototype.forEach !== "function" || typeof Set !== "function" || Set.prototype == null || typeof Set.prototype.clear !== "function" || typeof Set.prototype.forEach !== "function") { + if (typeof Map !== "function" || // $FlowIssue Flow incorrectly thinks Map has no prototype + Map.prototype == null || typeof Map.prototype.forEach !== "function" || typeof Set !== "function" || // $FlowIssue Flow incorrectly thinks Set has no prototype + Set.prototype == null || typeof Set.prototype.clear !== "function" || typeof Set.prototype.forEach !== "function") { error("React depends on Map and Set built-in types. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"); } } @@ -22844,6 +23599,8 @@ var require_react_dom_development = __commonJS({ } var Internals = { usingClientEntryPoint: false, + // Keep in sync with ReactTestUtils.js. + // This is an array for better minification. Events: [getInstanceFromNode, getNodeFromInstance, getFiberCurrentPropsFromNode, enqueueStateRestore, restoreStateIfNeeded, batchedUpdates$1] }; function createRoot$1(container, options2) { @@ -23061,6 +23818,7 @@ var require_lodash = __commonJS({ cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false; var deburredLetters = { + // Latin-1 Supplement block. "\xC0": "A", "\xC1": "A", "\xC2": "A", @@ -23123,6 +23881,7 @@ var require_lodash = __commonJS({ "\xDE": "Th", "\xFE": "th", "\xDF": "ss", + // Latin Extended-A block. "\u0100": "A", "\u0102": "A", "\u0104": "A", @@ -23682,7 +24441,7 @@ var require_lodash = __commonJS({ } return new LodashWrapper(value); } - var baseCreate = function() { + var baseCreate = /* @__PURE__ */ function() { function object() { } return function(proto) { @@ -23708,11 +24467,47 @@ var require_lodash = __commonJS({ this.__values__ = undefined2; } lodash.templateSettings = { + /** + * Used to detect `data` property values to be HTML-escaped. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ "escape": reEscape, + /** + * Used to detect code to be evaluated. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ "evaluate": reEvaluate, + /** + * Used to detect `data` property values to inject. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ "interpolate": reInterpolate, + /** + * Used to reference the data object in the template text. + * + * @memberOf _.templateSettings + * @type {string} + */ "variable": "", + /** + * Used to import variables into the compiled template. + * + * @memberOf _.templateSettings + * @type {Object} + */ "imports": { + /** + * A reference to the `lodash` function. + * + * @memberOf _.templateSettings.imports + * @type {Function} + */ "_": lodash } }; @@ -23962,7 +24757,11 @@ var require_lodash = __commonJS({ function arrayLikeKeys(value, inherited) { var isArr = isArray(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result2 = skipIndexes ? baseTimes(value.length, String3) : [], length = result2.length; for (var key in value) { - if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == "length" || isBuff && (key == "offset" || key == "parent") || isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || isIndex(key, length)))) { + if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode. + (key == "length" || // Node.js 0.10 has enumerable non-index properties on buffers. + isBuff && (key == "offset" || key == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays. + isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties. + isIndex(key, length)))) { result2.push(key); } } @@ -26949,7 +27748,7 @@ var require_lodash = __commonJS({ var gte = createRelationalOperation(function(value, other) { return value >= other; }); - var isArguments = baseIsArguments(function() { + var isArguments = baseIsArguments(/* @__PURE__ */ function() { return arguments; }()) ? baseIsArguments : function(value) { return isObjectLike(value) && hasOwnProperty.call(value, "callee") && !propertyIsEnumerable.call(value, "callee"); @@ -28403,15 +29202,25 @@ var require_result = __commonJS({ Object.defineProperty(exports, "__esModule", { value: true }); exports.Failcode = void 0; exports.Failcode = { + /** The type of the received primitive value is incompatible with expected one. */ TYPE_INCORRECT: "TYPE_INCORRECT", + /** The received primitive value is incorrect. */ VALUE_INCORRECT: "VALUE_INCORRECT", + /** The key of the property is incorrect. */ KEY_INCORRECT: "KEY_INCORRECT", + /** One or more elements or properties of the received object are incorrect. */ CONTENT_INCORRECT: "CONTENT_INCORRECT", + /** One or more arguments passed to the function is incorrect. */ ARGUMENT_INCORRECT: "ARGUMENT_INCORRECT", + /** The value returned by the function is incorrect. */ RETURN_INCORRECT: "RETURN_INCORRECT", + /** The received value does not fulfill the constraint. */ CONSTRAINT_FAILED: "CONSTRAINT_FAILED", + /** The property must be present but missing. */ PROPERTY_MISSING: "PROPERTY_MISSING", + /** The property must not be present but present. */ PROPERTY_PRESENT: "PROPERTY_PRESENT", + /** The value must not be present but present. */ NOTHING_EXPECTED: "NOTHING_EXPECTED" }; } @@ -28421,7 +29230,7 @@ var require_result = __commonJS({ var require_errors = __commonJS({ "node_modules/runtypes/lib/errors.js"(exports) { "use strict"; - var __extends2 = exports && exports.__extends || function() { + var __extends2 = exports && exports.__extends || /* @__PURE__ */ function() { var extendStatics = function(d2, b2) { extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) { d3.__proto__ = b3; @@ -28444,19 +29253,22 @@ var require_errors = __commonJS({ }(); Object.defineProperty(exports, "__esModule", { value: true }); exports.ValidationError = void 0; - var ValidationError2 = function(_super) { - __extends2(ValidationError3, _super); - function ValidationError3(failure) { - var _this = _super.call(this, failure.message) || this; - _this.name = "ValidationError"; - _this.code = failure.code; - if (failure.details !== void 0) - _this.details = failure.details; - Object.setPrototypeOf(_this, ValidationError3.prototype); - return _this; - } - return ValidationError3; - }(Error); + var ValidationError2 = ( + /** @class */ + function(_super) { + __extends2(ValidationError3, _super); + function ValidationError3(failure) { + var _this = _super.call(this, failure.message) || this; + _this.name = "ValidationError"; + _this.code = failure.code; + if (failure.details !== void 0) + _this.details = failure.details; + Object.setPrototypeOf(_this, ValidationError3.prototype); + return _this; + } + return ValidationError3; + }(Error) + ); exports.ValidationError = ValidationError2; } }); @@ -28639,10 +29451,13 @@ var require_util = __commonJS({ }; exports.typeOf = typeOf; var enumerableKeysOf = function(object) { - return typeof object === "object" && object !== null ? Reflect.ownKeys(object).filter(function(key) { - var _a2, _b; - return (_b = (_a2 = object.propertyIsEnumerable) === null || _a2 === void 0 ? void 0 : _a2.call(object, key)) !== null && _b !== void 0 ? _b : true; - }) : []; + return typeof object === "object" && object !== null ? ( + // Objects with a null prototype may not have `propertyIsEnumerable` + Reflect.ownKeys(object).filter(function(key) { + var _a2, _b; + return (_b = (_a2 = object.propertyIsEnumerable) === null || _a2 === void 0 ? void 0 : _a2.call(object, key)) !== null && _b !== void 0 ? _b : true; + }) + ) : []; }; exports.enumerableKeysOf = enumerableKeysOf; function SUCCESS(value) { @@ -29406,6 +30221,7 @@ var require_template = __commonJS({ "0[Bb][01]+", "0[Oo][0-7]+", "0[Xx][0-9A-Fa-f]+" + // Note: `"NaN"` isn't here, as TS doesn't allow `"NaN"` to be a `` `${number}` `` ], bigint: [function(s2) { return globalThis.BigInt(s2); @@ -30284,8 +31100,8 @@ var require_use_sync_external_store_shim_development = __commonJS({ if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === "function") { __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error()); } - var React67 = require_react(); - var ReactSharedInternals = React67.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + var React66 = require_react(); + var ReactSharedInternals = React66.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; function error(format) { { { @@ -30315,13 +31131,13 @@ var require_use_sync_external_store_shim_development = __commonJS({ return x2 === y2 && (x2 !== 0 || 1 / x2 === 1 / y2) || x2 !== x2 && y2 !== y2; } var objectIs = typeof Object.is === "function" ? Object.is : is; - var useState = React67.useState, useEffect2 = React67.useEffect, useLayoutEffect2 = React67.useLayoutEffect, useDebugValue2 = React67.useDebugValue; + var useState = React66.useState, useEffect2 = React66.useEffect, useLayoutEffect2 = React66.useLayoutEffect, useDebugValue2 = React66.useDebugValue; var didWarnOld18Alpha = false; var didWarnUncachedGetSnapshot = false; function useSyncExternalStore3(subscribe2, getSnapshot, getServerSnapshot) { { if (!didWarnOld18Alpha) { - if (React67.startTransition !== void 0) { + if (React66.startTransition !== void 0) { didWarnOld18Alpha = true; error("You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release."); } @@ -30386,7 +31202,7 @@ var require_use_sync_external_store_shim_development = __commonJS({ var canUseDOM2 = !!(typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined"); var isServerEnvironment = !canUseDOM2; var shim = isServerEnvironment ? useSyncExternalStore$1 : useSyncExternalStore3; - var useSyncExternalStore$2 = React67.useSyncExternalStore !== void 0 ? React67.useSyncExternalStore : shim; + var useSyncExternalStore$2 = React66.useSyncExternalStore !== void 0 ? React66.useSyncExternalStore : shim; exports.useSyncExternalStore = useSyncExternalStore$2; if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === "function") { __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error()); @@ -30418,14 +31234,14 @@ var require_with_selector_development = __commonJS({ if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === "function") { __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error()); } - var React67 = require_react(); + var React66 = require_react(); var shim = require_shim(); function is(x2, y2) { return x2 === y2 && (x2 !== 0 || 1 / x2 === 1 / y2) || x2 !== x2 && y2 !== y2; } var objectIs = typeof Object.is === "function" ? Object.is : is; var useSyncExternalStore3 = shim.useSyncExternalStore; - var useRef4 = React67.useRef, useEffect2 = React67.useEffect, useMemo3 = React67.useMemo, useDebugValue2 = React67.useDebugValue; + var useRef4 = React66.useRef, useEffect2 = React66.useEffect, useMemo3 = React66.useMemo, useDebugValue2 = React66.useDebugValue; function useSyncExternalStoreWithSelector3(subscribe2, getSnapshot, getServerSnapshot, selector, isEqual) { var instRef = useRef4(null); var inst; @@ -30537,7 +31353,8 @@ var require_react_is_development = __commonJS({ var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for("react.responder") : 60118; var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for("react.scope") : 60119; function isValidElementType2(type) { - return typeof type === "string" || typeof type === "function" || type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === "object" && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); + return typeof type === "string" || typeof type === "function" || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. + type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === "object" && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); } function typeOf(object) { if (typeof object === "object" && object !== null) { @@ -30802,7 +31619,11 @@ var require_react_is_development2 = __commonJS({ return true; } if (typeof type === "object" && type !== null) { - if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== void 0) { + if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object + // types supported by any Flight configuration anywhere since + // we don't know which Flight build this will end up being used + // with. + type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== void 0) { return true; } } @@ -30961,7 +31782,7 @@ var require_react_jsx_runtime_development = __commonJS({ if (true) { (function() { "use strict"; - var React67 = require_react(); + var React66 = require_react(); var REACT_ELEMENT_TYPE = Symbol.for("react.element"); var REACT_PORTAL_TYPE = Symbol.for("react.portal"); var REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"); @@ -30987,7 +31808,7 @@ var require_react_jsx_runtime_development = __commonJS({ } return null; } - var ReactSharedInternals = React67.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + var ReactSharedInternals = React66.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; function error(format) { { { @@ -31030,7 +31851,11 @@ var require_react_jsx_runtime_development = __commonJS({ return true; } if (typeof type === "object" && type !== null) { - if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== void 0) { + if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object + // types supported by any Flight configuration anywhere since + // we don't know which Flight build this will end up being used + // with. + type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== void 0) { return true; } } @@ -31510,11 +32335,14 @@ var require_react_jsx_runtime_development = __commonJS({ } var ReactElement = function(type, key, ref, self2, source, owner, props) { var element = { + // This tag allows us to uniquely identify this as a React Element $$typeof: REACT_ELEMENT_TYPE, + // Built-in properties that belong on the element type, key, ref, props, + // Record the component responsible for creating this element. _owner: owner }; { @@ -31708,7 +32536,9 @@ var require_react_jsx_runtime_development = __commonJS({ var propTypes; if (typeof type === "function") { propTypes = type.propTypes; - } else if (typeof type === "object" && (type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_MEMO_TYPE)) { + } else if (typeof type === "object" && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here. + // Inner props are checked in the reconciler. + type.$$typeof === REACT_MEMO_TYPE)) { propTypes = type.propTypes; } else { return; @@ -31813,10 +32643,10 @@ var require_react_jsx_runtime_development = __commonJS({ return jsxWithValidation(type, props, key, false); } } - var jsx149 = jsxWithValidationDynamic; + var jsx150 = jsxWithValidationDynamic; var jsxs71 = jsxWithValidationStatic; exports.Fragment = REACT_FRAGMENT_TYPE; - exports.jsx = jsx149; + exports.jsx = jsx150; exports.jsxs = jsxs71; })(); } @@ -32277,7 +33107,12 @@ var require_fuzzysort = __commonJS({ for (var j2 = 0; j2 < result._indexes.len; ++j2) seen_indexes.add(result._indexes[j2]); } - var allowSpacesResult = algorithm(preparedSearch, target, true); + var allowSpacesResult = algorithm( + preparedSearch, + target, + /*allowSpaces=*/ + true + ); if (allowSpacesResult !== NULL && allowSpacesResult.score > score) { return allowSpacesResult; } @@ -32483,9 +33318,9 @@ var require_dayjs_min = __commonJS({ this.$d = function(t4) { var e2 = t4.date, n3 = t4.utc; if (null === e2) - return new Date(NaN); + return /* @__PURE__ */ new Date(NaN); if (b2.u(e2)) - return new Date(); + return /* @__PURE__ */ new Date(); if (e2 instanceof Date) return new Date(e2); if ("string" == typeof e2 && !/Z$/i.test(e2)) { @@ -32824,14 +33659,14 @@ var require_customParseFormat = __commonJS({ try { if (["x", "X"].indexOf(t5) > -1) return new Date(("X" === t5 ? 1e3 : 1) * e4); - var r5 = c2(t5)(e4), i4 = r5.year, o3 = r5.month, s4 = r5.day, a4 = r5.hours, f5 = r5.minutes, h4 = r5.seconds, u4 = r5.milliseconds, d4 = r5.zone, l3 = new Date(), m3 = s4 || (i4 || o3 ? 1 : l3.getDate()), M3 = i4 || l3.getFullYear(), Y2 = 0; + var r5 = c2(t5)(e4), i4 = r5.year, o3 = r5.month, s4 = r5.day, a4 = r5.hours, f5 = r5.minutes, h4 = r5.seconds, u4 = r5.milliseconds, d4 = r5.zone, l3 = /* @__PURE__ */ new Date(), m3 = s4 || (i4 || o3 ? 1 : l3.getDate()), M3 = i4 || l3.getFullYear(), Y2 = 0; i4 && !o3 || (Y2 = o3 > 0 ? o3 - 1 : l3.getMonth()); var p2 = a4 || 0, v2 = f5 || 0, D2 = h4 || 0, g2 = u4 || 0; return d4 ? new Date(Date.UTC(M3, Y2, m3, p2, v2, D2, g2 + 60 * d4.offset * 1e3)) : n4 ? new Date(Date.UTC(M3, Y2, m3, p2, v2, D2, g2)) : new Date(M3, Y2, m3, p2, v2, D2, g2); } catch (e5) { - return new Date(""); + return /* @__PURE__ */ new Date(""); } - }(t4, a3, r4), this.init(), d3 && true !== d3 && (this.$L = this.locale(d3).$L), u3 && t4 != this.format(a3) && (this.$d = new Date("")), o2 = {}; + }(t4, a3, r4), this.init(), d3 && true !== d3 && (this.$L = this.locale(d3).$L), u3 && t4 != this.format(a3) && (this.$d = /* @__PURE__ */ new Date("")), o2 = {}; } else if (a3 instanceof Array) for (var l2 = a3.length, m2 = 1; m2 <= l2; m2 += 1) { s3[1] = a3[m2 - 1]; @@ -32840,7 +33675,7 @@ var require_customParseFormat = __commonJS({ this.$d = M2.$d, this.$L = M2.$L, this.init(); break; } - m2 === l2 && (this.$d = new Date("")); + m2 === l2 && (this.$d = /* @__PURE__ */ new Date("")); } else i3.call(this, e3); @@ -34499,6 +35334,8 @@ var require_parser_core = __commonJS({ ["linkify", require_linkify()], ["replacements", require_replacements()], ["smartquotes", require_smartquotes()], + // `text_join` finds `text_special` tokens (for escape sequences) + // and joins them with the rest of the text ["text_join", require_text_join()] ]; function Core() { @@ -35830,6 +36667,8 @@ var require_parser_block = __commonJS({ "use strict"; var Ruler = require_ruler(); var _rules = [ + // First 2 params - rule name & source. Secondary array - list of rules, + // which can be terminated by this one. ["table", require_table(), ["paragraph", "reference"]], ["code", require_code()], ["fence", require_fence(), ["paragraph", "reference", "blockquote", "list"]], @@ -36180,6 +37019,7 @@ var require_strikethrough = __commonJS({ state.delimiters.push({ marker, length: 0, + // disable "rule of 3" length checks meant for emphasis token: state.tokens.length - 1, end: -1, open: scanned.can_open, @@ -36259,10 +37099,22 @@ var require_emphasis = __commonJS({ token = state.push("text", "", 0); token.content = String.fromCharCode(marker); state.delimiters.push({ + // Char code of the starting marker (number). + // marker, + // Total length of these series of delimiters. + // length: scanned.length, + // A position of the token this delimiter corresponds to. + // token: state.tokens.length - 1, + // If this delimiter is matched as a valid opener, `end` will be + // equal to its position, otherwise it's `-1`. + // end: -1, + // Boolean flags that determine if this delimiter could open or close + // an emphasis. + // open: scanned.can_open, close: scanned.can_close }); @@ -36281,7 +37133,9 @@ var require_emphasis = __commonJS({ continue; } endDelim = delimiters[startDelim.end]; - isStrong = i2 > 0 && delimiters[i2 - 1].end === startDelim.end + 1 && delimiters[i2 - 1].marker === startDelim.marker && delimiters[i2 - 1].token === startDelim.token - 1 && delimiters[startDelim.end + 1].token === endDelim.token + 1; + isStrong = i2 > 0 && delimiters[i2 - 1].end === startDelim.end + 1 && // check that first two markers match and adjacent + delimiters[i2 - 1].marker === startDelim.marker && delimiters[i2 - 1].token === startDelim.token - 1 && // check that last two markers are adjacent (we can safely assume they match) + delimiters[startDelim.end + 1].token === endDelim.token + 1; ch = String.fromCharCode(startDelim.marker); token = state.tokens[startDelim.token]; token.type = isStrong ? "strong_open" : "em_open"; @@ -36920,6 +37774,8 @@ var require_parser_inline = __commonJS({ ["balance_pairs", require_balance_pairs()], ["strikethrough", require_strikethrough().postProcess], ["emphasis", require_emphasis().postProcess], + // rules for pairs separate '**' into its own text tokens, which may be left unused, + // rule below merges unused segments back with the rest of the text ["fragments_join", require_fragments_join()] ]; function ParserInline() { @@ -37023,7 +37879,8 @@ var require_re = __commonJS({ re.src_path = "(?:[/?#](?:(?!" + re.src_ZCc + "|" + text_separators + `|[()[\\]{}.,"'?!\\-;]).|\\[(?:(?!` + re.src_ZCc + "|\\]).)*\\]|\\((?:(?!" + re.src_ZCc + "|[)]).)*\\)|\\{(?:(?!" + re.src_ZCc + '|[}]).)*\\}|\\"(?:(?!' + re.src_ZCc + `|["]).)+\\"|\\'(?:(?!` + re.src_ZCc + "|[']).)+\\'|\\'(?=" + re.src_pseudo_letter + "|[-])|\\.{2,}[a-zA-Z0-9%/&]|\\.(?!" + re.src_ZCc + "|[.]|$)|" + (opts["---"] ? "\\-(?!--(?:[^-]|$))(?:-*)|" : "\\-+|") + ",(?!" + re.src_ZCc + "|$)|;(?!" + re.src_ZCc + "|$)|\\!+(?!" + re.src_ZCc + "|[!]|$)|\\?(?!" + re.src_ZCc + "|[?]|$))+|\\/)?"; re.src_email_name = '[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*'; re.src_xn = "xn--[a-z0-9\\-]{1,59}"; - re.src_domain_root = "(?:" + re.src_xn + "|" + re.src_pseudo_letter + "{1,63})"; + re.src_domain_root = // Allow letters & digits (http://test1) + "(?:" + re.src_xn + "|" + re.src_pseudo_letter + "{1,63})"; re.src_domain = "(?:" + re.src_xn + "|(?:" + re.src_pseudo_letter + ")|(?:" + re.src_pseudo_letter + "(?:-|" + re.src_pseudo_letter + "){0,61}" + re.src_pseudo_letter + "))"; re.src_host = "(?:(?:(?:(?:" + re.src_domain + ")\\.)*" + re.src_domain + "))"; re.tpl_host_fuzzy = "(?:" + re.src_ip4 + "|(?:(?:(?:" + re.src_domain + ")\\.)+(?:%TLDS%)))"; @@ -37035,8 +37892,12 @@ var require_re = __commonJS({ re.tpl_host_port_no_ip_fuzzy_strict = re.tpl_host_no_ip_fuzzy + re.src_port + re.src_host_terminator; re.tpl_host_fuzzy_test = "localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:" + re.src_ZPCc + "|>|$))"; re.tpl_email_fuzzy = "(^|" + text_separators + '|"|\\(|' + re.src_ZCc + ")(" + re.src_email_name + "@" + re.tpl_host_fuzzy_strict + ")"; - re.tpl_link_fuzzy = "(^|(?![.:/\\-_@])(?:[$+<=>^`|\uFF5C]|" + re.src_ZPCc + "))((?![$+<=>^`|\uFF5C])" + re.tpl_host_port_fuzzy_strict + re.src_path + ")"; - re.tpl_link_no_ip_fuzzy = "(^|(?![.:/\\-_@])(?:[$+<=>^`|\uFF5C]|" + re.src_ZPCc + "))((?![$+<=>^`|\uFF5C])" + re.tpl_host_port_no_ip_fuzzy_strict + re.src_path + ")"; + re.tpl_link_fuzzy = // Fuzzy link can't be prepended with .:/\- and non punctuation. + // but can start with > (markdown blockquote) + "(^|(?![.:/\\-_@])(?:[$+<=>^`|\uFF5C]|" + re.src_ZPCc + "))((?![$+<=>^`|\uFF5C])" + re.tpl_host_port_fuzzy_strict + re.src_path + ")"; + re.tpl_link_no_ip_fuzzy = // Fuzzy link can't be prepended with .:/\- and non punctuation. + // but can start with > (markdown blockquote) + "(^|(?![.:/\\-_@])(?:[$+<=>^`|\uFF5C]|" + re.src_ZPCc + "))((?![$+<=>^`|\uFF5C])" + re.tpl_host_port_no_ip_fuzzy_strict + re.src_path + ")"; return re; }; } @@ -37109,7 +37970,9 @@ var require_linkify_it = __commonJS({ var tail = text.slice(pos); if (!self2.re.no_http) { self2.re.no_http = new RegExp( - "^" + self2.re.src_auth + "(?:localhost|(?:(?:" + self2.re.src_domain + ")\\.)+" + self2.re.src_domain_root + ")" + self2.re.src_port + self2.re.src_host_terminator + self2.re.src_path, + "^" + self2.re.src_auth + // Don't allow single-level domains, because of false positives like '//test' + // with code comments + "(?:localhost|(?:(?:" + self2.re.src_domain + ")\\.)+" + self2.re.src_domain_root + ")" + self2.re.src_port + self2.re.src_host_terminator + self2.re.src_path, "i" ); } @@ -37405,14 +38268,33 @@ var require_default = __commonJS({ module2.exports = { options: { html: false, + // Enable HTML tags in source xhtmlOut: false, + // Use '/' to close single tags (<br />) breaks: false, + // Convert '\n' in paragraphs into <br> langPrefix: "language-", + // CSS language prefix for fenced blocks linkify: false, + // autoconvert URL-like texts to links + // Enable some language-neutral replacements + quotes beautification typographer: false, + // Double + single quotes replacement pairs, when typographer enabled, + // and smartquotes on. Could be either a String or an Array. + // + // For example, you can use '«»„“' for Russian, '„“‚‘' for German, + // and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp). quotes: "\u201C\u201D\u2018\u2019", + /* “”‘’ */ + // Highlighter function. Should return escaped HTML, + // or '' if the source string is not changed and should be escaped externaly. + // If result starts with <pre... internal wrapper is skipped. + // + // function (/*str, lang*/) { return ''; } + // highlight: null, maxNesting: 100 + // Internal protection, recursion limit }, components: { core: {}, @@ -37430,14 +38312,33 @@ var require_zero = __commonJS({ module2.exports = { options: { html: false, + // Enable HTML tags in source xhtmlOut: false, + // Use '/' to close single tags (<br />) breaks: false, + // Convert '\n' in paragraphs into <br> langPrefix: "language-", + // CSS language prefix for fenced blocks linkify: false, + // autoconvert URL-like texts to links + // Enable some language-neutral replacements + quotes beautification typographer: false, + // Double + single quotes replacement pairs, when typographer enabled, + // and smartquotes on. Could be either a String or an Array. + // + // For example, you can use '«»„“' for Russian, '„“‚‘' for German, + // and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp). quotes: "\u201C\u201D\u2018\u2019", + /* “”‘’ */ + // Highlighter function. Should return escaped HTML, + // or '' if the source string is not changed and should be escaped externaly. + // If result starts with <pre... internal wrapper is skipped. + // + // function (/*str, lang*/) { return ''; } + // highlight: null, maxNesting: 20 + // Internal protection, recursion limit }, components: { core: { @@ -37474,14 +38375,33 @@ var require_commonmark = __commonJS({ module2.exports = { options: { html: true, + // Enable HTML tags in source xhtmlOut: true, + // Use '/' to close single tags (<br />) breaks: false, + // Convert '\n' in paragraphs into <br> langPrefix: "language-", + // CSS language prefix for fenced blocks linkify: false, + // autoconvert URL-like texts to links + // Enable some language-neutral replacements + quotes beautification typographer: false, + // Double + single quotes replacement pairs, when typographer enabled, + // and smartquotes on. Could be either a String or an Array. + // + // For example, you can use '«»„“' for Russian, '„“‚‘' for German, + // and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp). quotes: "\u201C\u201D\u2018\u2019", + /* “”‘’ */ + // Highlighter function. Should return escaped HTML, + // or '' if the source string is not changed and should be escaped externaly. + // If result starts with <pre... internal wrapper is skipped. + // + // function (/*str, lang*/) { return ''; } + // highlight: null, maxNesting: 20 + // Internal protection, recursion limit }, components: { core: { @@ -39250,7 +40170,7 @@ var require_jsondiffpatch_umd = __commonJS({ if (this.Diff_Timeout <= 0) { opt_deadline = Number.MAX_VALUE; } else { - opt_deadline = new Date().getTime() + this.Diff_Timeout * 1e3; + opt_deadline = (/* @__PURE__ */ new Date()).getTime() + this.Diff_Timeout * 1e3; } } var deadline = opt_deadline; @@ -39404,7 +40324,7 @@ var require_jsondiffpatch_umd = __commonJS({ var k2start = 0; var k2end = 0; for (var d2 = 0; d2 < max_d; d2++) { - if (new Date().getTime() > deadline) { + if ((/* @__PURE__ */ new Date()).getTime() > deadline) { break; } for (var k1 = -d2 + k1start; k1 <= d2 - k1end; k1 += 2) { @@ -40273,21 +41193,32 @@ var require_jsondiffpatch_umd = __commonJS({ diff_match_patch2.prototype.patch_make = function(a2, opt_b, opt_c) { var text1, diffs; if (typeof a2 == "string" && typeof opt_b == "string" && typeof opt_c == "undefined") { - text1 = a2; - diffs = this.diff_main(text1, opt_b, true); + text1 = /** @type {string} */ + a2; + diffs = this.diff_main( + text1, + /** @type {string} */ + opt_b, + true + ); if (diffs.length > 2) { this.diff_cleanupSemantic(diffs); this.diff_cleanupEfficiency(diffs); } } else if (a2 && typeof a2 == "object" && typeof opt_b == "undefined" && typeof opt_c == "undefined") { - diffs = a2; + diffs = /** @type {!Array.<!diff_match_patch.Diff>} */ + a2; text1 = this.diff_text1(diffs); } else if (typeof a2 == "string" && opt_b && typeof opt_b == "object" && typeof opt_c == "undefined") { - text1 = a2; - diffs = opt_b; + text1 = /** @type {string} */ + a2; + diffs = /** @type {!Array.<!diff_match_patch.Diff>} */ + opt_b; } else if (typeof a2 == "string" && typeof opt_b == "string" && opt_c && typeof opt_c == "object") { - text1 = a2; - diffs = opt_c; + text1 = /** @type {string} */ + a2; + diffs = /** @type {!Array.<!diff_match_patch.Diff>} */ + opt_c; } else { throw new Error("Unknown call format to patch_make."); } @@ -41049,6 +41980,8 @@ var require_jsondiffpatch_umd = __commonJS({ nodeEnd(context) { context.out("</li>"); } + /* jshint camelcase: false */ + /* eslint-disable camelcase */ format_unchanged(context, delta, left) { if (typeof left === "undefined") { return; @@ -41093,6 +42026,7 @@ var require_jsondiffpatch_umd = __commonJS({ this.formatValue(context, delta[0]); context.out(`</div><div class="jsondiffpatch-moved-destination">${delta[1]}</div>`); context.out( + /* jshint multistr: true */ `<div class="jsondiffpatch-arrow" style="position: relative; left: -34px;"> <svg width="30" height="60" style="position: absolute; display: none;"> <defs> @@ -41318,6 +42252,8 @@ var require_jsondiffpatch_umd = __commonJS({ } context.row(`}${isLast ? "" : ","}`); } + /* jshint camelcase: false */ + /* eslint-disable camelcase */ format_unchanged() { } format_movedestination() { @@ -41460,6 +42396,8 @@ var require_jsondiffpatch_umd = __commonJS({ } = _ref2; path.pop(); } + /* jshint camelcase: false */ + /* eslint-disable camelcase */ format_unchanged() { } format_movedestination() { @@ -41688,6 +42626,8 @@ ${this.indentPad || ""}`); } context.popColor(); } + /* jshint camelcase: false */ + /* eslint-disable camelcase */ format_unchanged(context, delta, left) { if (typeof left === "undefined") { return; @@ -41732,14 +42672,14 @@ ${this.indentPad || ""}`); } return defaultInstance$1.format(delta, left); }; - function log2(delta, left) { + function log(delta, left) { console.log(format(delta, left)); } var console$1 = /* @__PURE__ */ Object.freeze({ __proto__: null, default: ConsoleFormatter, format, - log: log2 + log }); var index = /* @__PURE__ */ Object.freeze({ __proto__: null, @@ -41869,7 +42809,7 @@ var WelcomeModal = class extends import_obsidian.Modal { cardContainerEl, "Quick start", "Learn the basics of creating a loom", - "https://dataloom.xyz/basics/quick-start", + "https://dataloom.xyz/quick-start", "table" ); this.renderCard( @@ -41883,7 +42823,7 @@ var WelcomeModal = class extends import_obsidian.Modal { cardContainerEl, "Embedded looms", "Learn how to embed a loom into a markdown note", - "https://dataloom.xyz/basics/embed-loom", + "https://dataloom.xyz/basics/embed-looms", "sticky-note" ); this.renderCard( @@ -41925,9 +42865,9 @@ var import_obsidian3 = require("obsidian"); // src/data/network.ts var import_obsidian2 = require("obsidian"); -var getLastestGithubRelease = () => __async(void 0, null, function* () { +var getLastestGithubRelease = async () => { try { - const response = yield (0, import_obsidian2.requestUrl)({ + const response = await (0, import_obsidian2.requestUrl)({ url: "https://api.github.com/repos/trey-wallis/obsidian-dataloom/releases/latest", method: "GET" }); @@ -41938,66 +42878,60 @@ var getLastestGithubRelease = () => __async(void 0, null, function* () { new import_obsidian2.Notice("Error fetching latest release"); return null; } -}); +}; // src/obsidian/modal/whats-new-modal/index.tsx var WhatsNewModal = class extends import_obsidian3.Modal { constructor(app) { super(app); } - onOpen() { - return __async(this, null, function* () { - const { containerEl } = this; - const data = yield getLastestGithubRelease(); - const { body, tag_name } = data; - setModalTitle(containerEl, `DataLoom ${tag_name}`); - const { contentEl } = this; - this.renderDescription(contentEl); - renderDivider(contentEl); - this.renderContent(contentEl, body); + async onOpen() { + const { containerEl } = this; + const data = await getLastestGithubRelease(); + const { body, tag_name } = data; + setModalTitle(containerEl, `DataLoom ${tag_name}`); + const { contentEl } = this; + this.renderDescription(contentEl); + renderDivider(contentEl); + this.renderContent(contentEl, body); + } + async renderDescription(containerEl) { + containerEl.createDiv({ + text: "Thank you for using DataLoom! Here are the latest updates:" }); } - renderDescription(containerEl) { - return __async(this, null, function* () { - containerEl.createDiv({ - text: "Thank you for using DataLoom! Here are the latest updates:" + async renderContent(contentEl, body) { + const data = await getLastestGithubRelease(); + if (data) { + const bodyEl = contentEl.createDiv({ + cls: "dataloom-whats-new-modal__content" }); - }); - } - renderContent(contentEl, body) { - return __async(this, null, function* () { - const data = yield getLastestGithubRelease(); - if (data) { - const bodyEl = contentEl.createDiv({ - cls: "dataloom-whats-new-modal__content" - }); - const replacedText = this.replaceIssueNumbersWithLinks(body); - import_obsidian3.MarkdownRenderer.render( - this.app, - replacedText, - bodyEl, - "", - new import_obsidian3.Component() - ); - bodyEl.querySelectorAll("a").forEach((a2) => { - const issueNumber = this.extractIssueNumberFromURL(a2.getText()); - if (issueNumber) { - a2.setText(issueNumber); - } - }); - contentEl.createDiv({ - cls: "dataloom-whats-new-modal__spacer" - }); - contentEl.createEl("a", { - text: "View all releases", - href: "https://github.com/trey-wallis/obsidian-dataloom/releases" - }); - } else { - contentEl.createDiv({ - text: "Couldn't fetch latest release from GitHub." - }); - } - }); + const replacedText = this.replaceIssueNumbersWithLinks(body); + import_obsidian3.MarkdownRenderer.render( + this.app, + replacedText, + bodyEl, + "", + new import_obsidian3.Component() + ); + bodyEl.querySelectorAll("a").forEach((a2) => { + const issueNumber = this.extractIssueNumberFromURL(a2.getText()); + if (issueNumber) { + a2.setText(issueNumber); + } + }); + contentEl.createDiv({ + cls: "dataloom-whats-new-modal__spacer" + }); + contentEl.createEl("a", { + text: "View all releases", + href: "https://github.com/trey-wallis/obsidian-dataloom/releases" + }); + } else { + contentEl.createDiv({ + text: "Couldn't fetch latest release from GitHub." + }); + } } replaceIssueNumbersWithLinks(text) { const regex = /#(\d+)/g; @@ -42024,6 +42958,53 @@ var WhatsNewModal = class extends import_obsidian3.Modal { // src/obsidian/dataloom-settings-tab.ts var import_obsidian4 = require("obsidian"); var import_obsidian5 = require("obsidian"); +var import_js_logger2 = __toESM(require_logger()); + +// src/shared/logger/constants.ts +var LOG_LEVEL_OFF = "off"; +var LOG_LEVEL_ERROR = "error"; +var LOG_LEVEL_WARN = "warn"; +var LOG_LEVEL_INFO = "info"; +var LOG_LEVEL_DEBUG = "debug"; +var LOG_LEVEL_TRACE = "trace"; + +// src/shared/logger/index.ts +var import_js_logger = __toESM(require_logger()); +var stringToLogLevel = (value) => { + switch (value) { + case LOG_LEVEL_OFF: + return import_js_logger.default.OFF; + case LOG_LEVEL_ERROR: + return import_js_logger.default.ERROR; + case LOG_LEVEL_WARN: + return import_js_logger.default.WARN; + case LOG_LEVEL_INFO: + return import_js_logger.default.INFO; + case LOG_LEVEL_DEBUG: + return import_js_logger.default.DEBUG; + case LOG_LEVEL_TRACE: + return import_js_logger.default.TRACE; + default: + throw new Error(`Unhandled log level: ${value}`); + } +}; +var formatMessageForLogger = (...args) => { + if (args.length < 3) { + return { message: args[0], data: null }; + } + const fileName = args[0]; + const functionName = args[1]; + const message = args[2]; + if (args.length === 4) { + const data = args[3]; + if (Object.keys(data).length !== 0) { + return { message: `[${fileName}:${functionName}] ${message}`, data }; + } + } + return { message: `[${fileName}:${functionName}] ${message}`, data: null }; +}; + +// src/obsidian/dataloom-settings-tab.ts var DataLoomSettingsTab = class extends import_obsidian4.PluginSettingTab { constructor(app, plugin) { super(app, plugin); @@ -42071,11 +43052,11 @@ var DataLoomSettingsTab = class extends import_obsidian4.PluginSettingTab { new import_obsidian5.Setting(containerEl).setName("Create looms in the attachments folder").setDesc(attachmentsFolderDesc).addToggle((cb) => { cb.setValue( this.plugin.settings.createAtObsidianAttachmentFolder - ).onChange((value) => __async(this, null, function* () { + ).onChange(async (value) => { this.plugin.settings.createAtObsidianAttachmentFolder = value; - yield this.plugin.saveSettings(); + await this.plugin.saveSettings(); this.display(); - })); + }); }); const defaultLocationDesc = new DocumentFragment(); defaultLocationDesc.createSpan({ @@ -42085,10 +43066,10 @@ var DataLoomSettingsTab = class extends import_obsidian4.PluginSettingTab { new import_obsidian5.Setting(containerEl).setName("Default location for new looms").setDesc(defaultLocationDesc).addText((cb) => { cb.setValue( this.plugin.settings.customFolderForNewFiles - ).onChange((value) => __async(this, null, function* () { + ).onChange(async (value) => { this.plugin.settings.customFolderForNewFiles = value; - yield this.plugin.saveSettings(); - })); + await this.plugin.saveSettings(); + }); }); } } @@ -42106,10 +43087,10 @@ var DataLoomSettingsTab = class extends import_obsidian4.PluginSettingTab { "3": "3" }).setValue( this.plugin.settings.defaultFrozenColumnCount.toString() - ).onChange((value) => __async(this, null, function* () { + ).onChange(async (value) => { this.plugin.settings.defaultFrozenColumnCount = parseInt(value); - yield this.plugin.saveSettings(); - })); + await this.plugin.saveSettings(); + }); }); } renderExportSettings(containerEl) { @@ -42121,10 +43102,10 @@ var DataLoomSettingsTab = class extends import_obsidian4.PluginSettingTab { new import_obsidian5.Setting(containerEl).setName("Remove markdown").setDesc(removeMarkdownOnExportDesc).addToggle((cb) => { cb.setValue( this.plugin.settings.removeMarkdownOnExport - ).onChange((value) => __async(this, null, function* () { + ).onChange(async (value) => { this.plugin.settings.removeMarkdownOnExport = value; - yield this.plugin.saveSettings(); - })); + await this.plugin.saveSettings(); + }); }); } renderEmbeddedLoomSettings(containerEl) { @@ -42139,10 +43120,10 @@ var DataLoomSettingsTab = class extends import_obsidian4.PluginSettingTab { }); new import_obsidian5.Setting(containerEl).setName("Default embedded loom width").setDesc(defaultEmbedWidthDesc).addText((cb) => { cb.setValue(this.plugin.settings.defaultEmbedWidth).onChange( - (value) => __async(this, null, function* () { + async (value) => { this.plugin.settings.defaultEmbedWidth = value; - yield this.plugin.saveSettings(); - }) + await this.plugin.saveSettings(); + } ); }); const defaultEmbedHeightDesc = new DocumentFragment(); @@ -42155,10 +43136,10 @@ var DataLoomSettingsTab = class extends import_obsidian4.PluginSettingTab { }); new import_obsidian5.Setting(containerEl).setName("Default embedded loom height").setDesc(defaultEmbedHeightDesc).addText((cb) => { cb.setValue(this.plugin.settings.defaultEmbedHeight).onChange( - (value) => __async(this, null, function* () { + async (value) => { this.plugin.settings.defaultEmbedHeight = value; - yield this.plugin.saveSettings(); - }) + await this.plugin.saveSettings(); + } ); }); } @@ -42168,23 +43149,32 @@ var DataLoomSettingsTab = class extends import_obsidian4.PluginSettingTab { "Display release notes the first time a loom file is opened after the plugin is updated." ).addToggle((cb) => { cb.setValue(this.plugin.settings.showWhatsNewModal).onChange( - (value) => __async(this, null, function* () { + async (value) => { this.plugin.settings.showWhatsNewModal = value; - yield this.plugin.saveSettings(); - }) + await this.plugin.saveSettings(); + } ); }); } renderDebugSettings(containerEl) { - new import_obsidian5.Setting(containerEl).setName("Debug").setHeading(); - new import_obsidian5.Setting(containerEl).setName("Debug mode").setDesc( - "Turns on console.log for plugin events. This is useful for troubleshooting." - ).addToggle((cb) => { - cb.setValue(this.plugin.settings.shouldDebug).onChange( - (value) => __async(this, null, function* () { - this.plugin.settings.shouldDebug = value; - yield this.plugin.saveSettings(); - }) + new import_obsidian5.Setting(containerEl).setName("Debugging").setHeading(); + new import_obsidian5.Setting(containerEl).setName("Log level").setDesc( + "Sets the log level. Please use trace to see all log messages." + ).addDropdown((cb) => { + cb.addOptions({ + [LOG_LEVEL_OFF]: "Off", + [LOG_LEVEL_ERROR]: "Error", + [LOG_LEVEL_WARN]: "Warn", + [LOG_LEVEL_INFO]: "Info", + [LOG_LEVEL_DEBUG]: "Debug", + [LOG_LEVEL_TRACE]: "Trace" + }); + cb.setValue(this.plugin.settings.logLevel).onChange( + async (value) => { + this.plugin.settings.logLevel = value; + await this.plugin.saveSettings(); + import_js_logger2.default.setLevel(stringToLogLevel(value)); + } ); }); } @@ -42754,28 +43744,28 @@ function _typeof(o2) { } // node_modules/@babel/runtime/helpers/esm/toPrimitive.js -function _toPrimitive(input, hint) { - if (_typeof(input) !== "object" || input === null) - return input; - var prim = input[Symbol.toPrimitive]; - if (prim !== void 0) { - var res = prim.call(input, hint || "default"); - if (_typeof(res) !== "object") - return res; +function toPrimitive(t2, r2) { + if ("object" != _typeof(t2) || !t2) + return t2; + var e = t2[Symbol.toPrimitive]; + if (void 0 !== e) { + var i2 = e.call(t2, r2 || "default"); + if ("object" != _typeof(i2)) + return i2; throw new TypeError("@@toPrimitive must return a primitive value."); } - return (hint === "string" ? String : Number)(input); + return ("string" === r2 ? String : Number)(t2); } // node_modules/@babel/runtime/helpers/esm/toPropertyKey.js -function _toPropertyKey(arg) { - var key = _toPrimitive(arg, "string"); - return _typeof(key) === "symbol" ? key : String(key); +function toPropertyKey(t2) { + var i2 = toPrimitive(t2, "string"); + return "symbol" == _typeof(i2) ? i2 : String(i2); } // node_modules/@babel/runtime/helpers/esm/defineProperty.js function _defineProperty(obj, key, value) { - key = _toPropertyKey(key); + key = toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value, @@ -42980,6 +43970,14 @@ function createStore(reducer, preloadedState, enhancer) { var _ref; var outerSubscribe = subscribe2; return _ref = { + /** + * The minimal observable subscription method. + * @param {Object} observer Any object that can be used as an observer. + * The observer object should have a `next` method. + * @returns {subscription} An object with an `unsubscribe` method that can + * be used to unsubscribe the observable from the store, and prevent further + * emission of values from the observable. + */ subscribe: function subscribe3(observer) { if (typeof observer !== "object" || observer === null) { throw new Error(false ? formatProdErrorMessage(11) : "Expected the observer to be an object. Instead, received: '" + kindOf(observer) + "'"); @@ -43176,7 +44174,7 @@ thunk.withExtraArgument = createThunkMiddleware; var es_default = thunk; // node_modules/@reduxjs/toolkit/dist/redux-toolkit.esm.js -var __extends = function() { +var __extends = /* @__PURE__ */ function() { var extendStatics = function(d2, b2) { extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) { d3.__proto__ = b3; @@ -43279,30 +44277,30 @@ var __spreadArray = function(to, from) { return to; }; var __defProp2 = Object.defineProperty; -var __defProps2 = Object.defineProperties; -var __getOwnPropDescs2 = Object.getOwnPropertyDescriptors; -var __getOwnPropSymbols2 = Object.getOwnPropertySymbols; +var __defProps = Object.defineProperties; +var __getOwnPropDescs = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp2 = Object.prototype.hasOwnProperty; -var __propIsEnum2 = Object.prototype.propertyIsEnumerable; -var __defNormalProp2 = function(obj, key, value) { +var __propIsEnum = Object.prototype.propertyIsEnumerable; +var __defNormalProp = function(obj, key, value) { return key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; }; -var __spreadValues2 = function(a2, b2) { +var __spreadValues = function(a2, b2) { for (var prop in b2 || (b2 = {})) if (__hasOwnProp2.call(b2, prop)) - __defNormalProp2(a2, prop, b2[prop]); - if (__getOwnPropSymbols2) - for (var _i = 0, _c = __getOwnPropSymbols2(b2); _i < _c.length; _i++) { + __defNormalProp(a2, prop, b2[prop]); + if (__getOwnPropSymbols) + for (var _i = 0, _c = __getOwnPropSymbols(b2); _i < _c.length; _i++) { var prop = _c[_i]; - if (__propIsEnum2.call(b2, prop)) - __defNormalProp2(a2, prop, b2[prop]); + if (__propIsEnum.call(b2, prop)) + __defNormalProp(a2, prop, b2[prop]); } return a2; }; -var __spreadProps2 = function(a2, b2) { - return __defProps2(a2, __getOwnPropDescs2(b2)); +var __spreadProps = function(a2, b2) { + return __defProps(a2, __getOwnPropDescs(b2)); }; -var __async2 = function(__this, __arguments, generator) { +var __async = function(__this, __arguments, generator) { return new Promise(function(resolve, reject) { var fulfilled = function(value) { try { @@ -43362,7 +44360,7 @@ function createAction(type, prepareAction) { if (!prepared) { throw new Error("prepareAction did not return an object"); } - return __spreadValues2(__spreadValues2({ + return __spreadValues(__spreadValues({ type, payload: prepared.payload }, "meta" in prepared && { meta: prepared.meta }), "error" in prepared && { error: prepared.error }); @@ -43430,80 +44428,86 @@ function getTimeMeasureUtils(maxDelay, fnName) { } }; } -var MiddlewareArray = function(_super) { - __extends(MiddlewareArray2, _super); - function MiddlewareArray2() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; +var MiddlewareArray = ( + /** @class */ + function(_super) { + __extends(MiddlewareArray2, _super); + function MiddlewareArray2() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var _this = _super.apply(this, args) || this; + Object.setPrototypeOf(_this, MiddlewareArray2.prototype); + return _this; } - var _this = _super.apply(this, args) || this; - Object.setPrototypeOf(_this, MiddlewareArray2.prototype); - return _this; - } - Object.defineProperty(MiddlewareArray2, Symbol.species, { - get: function() { - return MiddlewareArray2; - }, - enumerable: false, - configurable: true - }); - MiddlewareArray2.prototype.concat = function() { - var arr = []; - for (var _i = 0; _i < arguments.length; _i++) { - arr[_i] = arguments[_i]; + Object.defineProperty(MiddlewareArray2, Symbol.species, { + get: function() { + return MiddlewareArray2; + }, + enumerable: false, + configurable: true + }); + MiddlewareArray2.prototype.concat = function() { + var arr = []; + for (var _i = 0; _i < arguments.length; _i++) { + arr[_i] = arguments[_i]; + } + return _super.prototype.concat.apply(this, arr); + }; + MiddlewareArray2.prototype.prepend = function() { + var arr = []; + for (var _i = 0; _i < arguments.length; _i++) { + arr[_i] = arguments[_i]; + } + if (arr.length === 1 && Array.isArray(arr[0])) { + return new (MiddlewareArray2.bind.apply(MiddlewareArray2, __spreadArray([void 0], arr[0].concat(this))))(); + } + return new (MiddlewareArray2.bind.apply(MiddlewareArray2, __spreadArray([void 0], arr.concat(this))))(); + }; + return MiddlewareArray2; + }(Array) +); +var EnhancerArray = ( + /** @class */ + function(_super) { + __extends(EnhancerArray2, _super); + function EnhancerArray2() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var _this = _super.apply(this, args) || this; + Object.setPrototypeOf(_this, EnhancerArray2.prototype); + return _this; } - return _super.prototype.concat.apply(this, arr); - }; - MiddlewareArray2.prototype.prepend = function() { - var arr = []; - for (var _i = 0; _i < arguments.length; _i++) { - arr[_i] = arguments[_i]; - } - if (arr.length === 1 && Array.isArray(arr[0])) { - return new (MiddlewareArray2.bind.apply(MiddlewareArray2, __spreadArray([void 0], arr[0].concat(this))))(); - } - return new (MiddlewareArray2.bind.apply(MiddlewareArray2, __spreadArray([void 0], arr.concat(this))))(); - }; - return MiddlewareArray2; -}(Array); -var EnhancerArray = function(_super) { - __extends(EnhancerArray2, _super); - function EnhancerArray2() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var _this = _super.apply(this, args) || this; - Object.setPrototypeOf(_this, EnhancerArray2.prototype); - return _this; - } - Object.defineProperty(EnhancerArray2, Symbol.species, { - get: function() { - return EnhancerArray2; - }, - enumerable: false, - configurable: true - }); - EnhancerArray2.prototype.concat = function() { - var arr = []; - for (var _i = 0; _i < arguments.length; _i++) { - arr[_i] = arguments[_i]; - } - return _super.prototype.concat.apply(this, arr); - }; - EnhancerArray2.prototype.prepend = function() { - var arr = []; - for (var _i = 0; _i < arguments.length; _i++) { - arr[_i] = arguments[_i]; - } - if (arr.length === 1 && Array.isArray(arr[0])) { - return new (EnhancerArray2.bind.apply(EnhancerArray2, __spreadArray([void 0], arr[0].concat(this))))(); - } - return new (EnhancerArray2.bind.apply(EnhancerArray2, __spreadArray([void 0], arr.concat(this))))(); - }; - return EnhancerArray2; -}(Array); + Object.defineProperty(EnhancerArray2, Symbol.species, { + get: function() { + return EnhancerArray2; + }, + enumerable: false, + configurable: true + }); + EnhancerArray2.prototype.concat = function() { + var arr = []; + for (var _i = 0; _i < arguments.length; _i++) { + arr[_i] = arguments[_i]; + } + return _super.prototype.concat.apply(this, arr); + }; + EnhancerArray2.prototype.prepend = function() { + var arr = []; + for (var _i = 0; _i < arguments.length; _i++) { + arr[_i] = arguments[_i]; + } + if (arr.length === 1 && Array.isArray(arr[0])) { + return new (EnhancerArray2.bind.apply(EnhancerArray2, __spreadArray([void 0], arr[0].concat(this))))(); + } + return new (EnhancerArray2.bind.apply(EnhancerArray2, __spreadArray([void 0], arr.concat(this))))(); + }; + return EnhancerArray2; + }(Array) +); function freezeDraftable(val) { return t(val) ? immer_esm_default(val, function() { }) : val; @@ -43865,7 +44869,7 @@ function configureStore(options) { var middlewareEnhancer = applyMiddleware.apply(void 0, finalMiddleware); var finalCompose = compose; if (devTools) { - finalCompose = composeWithDevTools(__spreadValues2({ + finalCompose = composeWithDevTools(__spreadValues({ trace: !IS_PRODUCTION }, typeof devTools === "object" && devTools)); } @@ -44046,7 +45050,7 @@ function createSlice(options) { } } var _c = typeof options.extraReducers === "function" ? executeReducerBuilderCallback(options.extraReducers) : [options.extraReducers], _d = _c[0], extraReducers = _d === void 0 ? {} : _d, _e = _c[1], actionMatchers = _e === void 0 ? [] : _e, _f = _c[2], defaultCaseReducer = _f === void 0 ? void 0 : _f; - var finalCaseReducers = __spreadValues2(__spreadValues2({}, extraReducers), sliceCaseReducersByType); + var finalCaseReducers = __spreadValues(__spreadValues({}, extraReducers), sliceCaseReducersByType); return createReducer(initialState2, function(builder) { for (var key in finalCaseReducers) { builder.addCase(key, finalCaseReducers[key]); @@ -44095,20 +45099,26 @@ var commonProperties = [ "stack", "code" ]; -var RejectWithValue = function() { - function RejectWithValue2(payload, meta) { - this.payload = payload; - this.meta = meta; - } - return RejectWithValue2; -}(); -var FulfillWithMeta = function() { - function FulfillWithMeta2(payload, meta) { - this.payload = payload; - this.meta = meta; - } - return FulfillWithMeta2; -}(); +var RejectWithValue = ( + /** @class */ + /* @__PURE__ */ function() { + function RejectWithValue2(payload, meta) { + this.payload = payload; + this.meta = meta; + } + return RejectWithValue2; + }() +); +var FulfillWithMeta = ( + /** @class */ + /* @__PURE__ */ function() { + function FulfillWithMeta2(payload, meta) { + this.payload = payload; + this.meta = meta; + } + return FulfillWithMeta2; + }() +); var miniSerializeError = function(value) { if (typeof value === "object" && value !== null) { var simpleError = {}; @@ -44127,7 +45137,7 @@ var createAsyncThunk = function() { var fulfilled = createAction(typePrefix + "/fulfilled", function(payload, requestId, arg, meta) { return { payload, - meta: __spreadProps2(__spreadValues2({}, meta || {}), { + meta: __spreadProps(__spreadValues({}, meta || {}), { arg, requestId, requestStatus: "fulfilled" @@ -44137,7 +45147,7 @@ var createAsyncThunk = function() { var pending = createAction(typePrefix + "/pending", function(requestId, arg, meta) { return { payload: void 0, - meta: __spreadProps2(__spreadValues2({}, meta || {}), { + meta: __spreadProps(__spreadValues({}, meta || {}), { arg, requestId, requestStatus: "pending" @@ -44148,7 +45158,7 @@ var createAsyncThunk = function() { return { payload, error: (options && options.serializeError || miniSerializeError)(error || "Rejected"), - meta: __spreadProps2(__spreadValues2({}, meta || {}), { + meta: __spreadProps(__spreadValues({}, meta || {}), { arg, requestId, rejectedWithValue: !!payload, @@ -44159,34 +45169,37 @@ var createAsyncThunk = function() { }; }); var displayedWarning = false; - var AC = typeof AbortController !== "undefined" ? AbortController : function() { - function class_1() { - this.signal = { - aborted: false, - addEventListener: function() { - }, - dispatchEvent: function() { - return false; - }, - onabort: function() { - }, - removeEventListener: function() { - }, - reason: void 0, - throwIfAborted: function() { + var AC = typeof AbortController !== "undefined" ? AbortController : ( + /** @class */ + function() { + function class_1() { + this.signal = { + aborted: false, + addEventListener: function() { + }, + dispatchEvent: function() { + return false; + }, + onabort: function() { + }, + removeEventListener: function() { + }, + reason: void 0, + throwIfAborted: function() { + } + }; + } + class_1.prototype.abort = function() { + if (true) { + if (!displayedWarning) { + displayedWarning = true; + console.info("This platform does not implement AbortController. \nIf you want to use the AbortController to react to `abort` events, please consider importing a polyfill like 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'."); + } } }; - } - class_1.prototype.abort = function() { - if (true) { - if (!displayedWarning) { - displayedWarning = true; - console.info("This platform does not implement AbortController. \nIf you want to use the AbortController to react to `abort` events, please consider importing a polyfill like 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'."); - } - } - }; - return class_1; - }(); + return class_1; + }() + ); function actionCreator(arg) { return function(dispatch, getState, extra) { var requestId = (options == null ? void 0 : options.idGenerator) ? options.idGenerator(arg) : nanoid(); @@ -44198,7 +45211,7 @@ var createAsyncThunk = function() { abortController.abort(); } var promise2 = function() { - return __async2(this, null, function() { + return __async(this, null, function() { var _a2, _b, finalAction, conditionResult, abortedPromise, err_1, skipDispatch; return __generator(this, function(_c) { switch (_c.label) { @@ -44304,7 +45317,6 @@ function unwrapResult(action) { function isThenable(value) { return value !== null && typeof value === "object" && typeof value.then === "function"; } -var task = "task"; var listener = "listener"; var completed = "completed"; var cancelled = "cancelled"; @@ -44312,14 +45324,6 @@ var taskCancelled = "task-" + cancelled; var taskCompleted = "task-" + completed; var listenerCancelled = listener + "-" + cancelled; var listenerCompleted = listener + "-" + completed; -var TaskAbortError = function() { - function TaskAbortError2(code) { - this.code = code; - this.name = "TaskAbortError"; - this.message = task + " " + cancelled + " (reason: " + code + ")"; - } - return TaskAbortError2; -}(); var alm = "listenerMiddleware"; var addListener = createAction(alm + "/add"); var clearAllListeners = createAction(alm + "/removeAll"); @@ -44396,15 +45400,18 @@ var MigrateState0 = class { migrate(prevState) { const { columns } = prevState.model; const nextColumns = columns.map((column) => { - return __spreadProps(__spreadValues({}, column), { + return { + ...column, currencyType: "USD" /* UNITED_STATES */ - }); + }; }); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + return { + ...prevState, + model: { + ...prevState.model, columns: nextColumns - }) - }); + } + }; } }; @@ -44413,15 +45420,18 @@ var MigrateState1 = class { migrate(prevState) { const { columns } = prevState.model; const nextColumns = columns.map((column) => { - return __spreadProps(__spreadValues({}, column), { + return { + ...column, dateFormat: "dd/mm/yyyy" /* DD_MM_YYYY */ - }); + }; }); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + return { + ...prevState, + model: { + ...prevState.model, columns: nextColumns - }) - }); + } + }; } }; @@ -44431,9 +45441,10 @@ var MigrateState2 = class { migrate(prevState) { const { columns, rows, cells } = prevState.model; const nextRows = rows.map((row, i2) => { - return __spreadProps(__spreadValues({}, row), { + return { + ...row, index: i2 - }); + }; }); const nextColumns = columns.map((column) => { const columnCopy = (0, import_lodash.cloneDeep)(column); @@ -44441,22 +45452,26 @@ var MigrateState2 = class { if (unknownColumn["hasAutoWidth"]) { delete unknownColumn.hasAutoWidth; } - return __spreadProps(__spreadValues({}, columnCopy), { + return { + ...columnCopy, isVisible: true - }); + }; }); const nextCells = cells.map((cell) => { - return __spreadProps(__spreadValues({}, cell), { + return { + ...cell, dateTime: null - }); + }; }); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + return { + ...prevState, + model: { + ...prevState.model, columns: nextColumns, cells: nextCells, rows: nextRows - }) - }); + } + }; } }; @@ -44730,8 +45745,10 @@ var MigrateState3 = class { }); }); } - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + return { + ...prevState, + model: { + ...prevState.model, columns: nextColumns, headerRows: nextHeaderRows, bodyRows: nextBodyRows, @@ -44740,8 +45757,8 @@ var MigrateState3 = class { bodyCells: nextBodyCells, footerCells: [], tags - }) - }); + } + }; } }; var createHeaderRow = () => { @@ -44789,15 +45806,17 @@ var MigrateState4 = class { markdown = CHECKBOX_MARKDOWN_UNCHECKED; } } - return __spreadProps(__spreadValues({}, cell), { + return { + ...cell, markdown - }); + }; }); return { - model: __spreadProps(__spreadValues({}, prevState.model), { + model: { + ...prevState.model, bodyCells: nextBodyCells, filterRules: [] - }), + }, pluginVersion: prevState.pluginVersion }; } @@ -44808,18 +45827,21 @@ var MigrateState5 = class { migrate(prevState) { const { footerCells } = prevState.model; const nextFooterCells = footerCells.map((cell) => { - return __spreadProps(__spreadValues({}, cell), { + return { + ...cell, functionType: cell.functionType.replace( /_/g, "-" ) - }); + }; }); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + return { + ...prevState, + model: { + ...prevState.model, footerCells: nextFooterCells - }) - }); + } + }; } }; @@ -44849,18 +45871,20 @@ var MigrateState6 = class { color: tag.color }; }); - return __spreadProps(__spreadValues({}, column), { + return { + ...column, tags: nextTags - }); + }; }); const nextBodyCells = bodyCells.map((cell) => { const filteredTags = tags.filter( (tag) => tag.cellIds.includes(cell.id) ); const nextTagIds = filteredTags.map((tag) => tag.id); - return __spreadProps(__spreadValues({}, cell), { + return { + ...cell, tagIds: nextTagIds - }); + }; }); const nextBodyRows = bodyRows.map((row) => { const rowCopy = (0, import_lodash2.cloneDeep)(row); @@ -44870,7 +45894,8 @@ var MigrateState6 = class { } return rowCopy; }); - return __spreadProps(__spreadValues({}, prevState), { + return { + ...prevState, model: { columns: nextColumns, headerRows, @@ -44881,7 +45906,7 @@ var MigrateState6 = class { footerCells, filterRules } - }); + }; } }; @@ -44896,9 +45921,10 @@ var MigrateState7 = class { ); if (!footerCell) throw new Error("Footer cell not found"); - return __spreadProps(__spreadValues({}, column), { + return { + ...column, functionType: footerCell.functionType - }); + }; }); const nextFooterCells = footerCells.map((cell) => { const cellCopy = (0, import_lodash3.cloneDeep)(cell); @@ -44908,12 +45934,14 @@ var MigrateState7 = class { } return cell; }); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + return { + ...prevState, + model: { + ...prevState.model, columns: nextColumns, footerCells: nextFooterCells - }) - }); + } + }; } }; @@ -44922,18 +45950,21 @@ var MigrateState8 = class { migrate(prevState) { const { columns } = prevState.model; const nextColumns = columns.map((column) => { - return __spreadProps(__spreadValues({}, column), { + return { + ...column, isLocked: false, aspectRatio: "16/9" /* SIXTEEN_BY_NINE */, horizontalPadding: "unset" /* UNSET */, verticalPadding: "unset" /* UNSET */ - }); + }; }); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + return { + ...prevState, + model: { + ...prevState.model, columns: nextColumns - }) - }); + } + }; } }; @@ -44962,20 +45993,20 @@ var PaddingSize2 = /* @__PURE__ */ ((PaddingSize5) => { PaddingSize5["XXXXL"] = "4xl"; return PaddingSize5; })(PaddingSize2 || {}); -var CellType2 = /* @__PURE__ */ ((CellType7) => { - CellType7["SOURCE_FILE"] = "source-file"; - CellType7["SOURCE"] = "source"; - CellType7["TEXT"] = "text"; - CellType7["EMBED"] = "embed"; - CellType7["FILE"] = "file"; - CellType7["NUMBER"] = "number"; - CellType7["TAG"] = "tag"; - CellType7["MULTI_TAG"] = "multi-tag"; - CellType7["DATE"] = "date"; - CellType7["CHECKBOX"] = "checkbox"; - CellType7["CREATION_TIME"] = "creation-time"; - CellType7["LAST_EDITED_TIME"] = "last-edited-time"; - return CellType7; +var CellType2 = /* @__PURE__ */ ((CellType8) => { + CellType8["SOURCE_FILE"] = "source-file"; + CellType8["SOURCE"] = "source"; + CellType8["TEXT"] = "text"; + CellType8["EMBED"] = "embed"; + CellType8["FILE"] = "file"; + CellType8["NUMBER"] = "number"; + CellType8["TAG"] = "tag"; + CellType8["MULTI_TAG"] = "multi-tag"; + CellType8["DATE"] = "date"; + CellType8["CHECKBOX"] = "checkbox"; + CellType8["CREATION_TIME"] = "creation-time"; + CellType8["LAST_EDITED_TIME"] = "last-edited-time"; + return CellType8; })(CellType2 || {}); var DateFormat2 = /* @__PURE__ */ ((DateFormat12) => { DateFormat12["MM_DD_YYYY"] = "mmddyyyy"; @@ -45065,23 +46096,27 @@ var MigrateState9 = class { migrate(prevState) { const { columns, bodyRows } = prevState.model; const nextColumns = columns.map((column) => { - return __spreadProps(__spreadValues({}, column), { + return { + ...column, sortDir: "default" /* NONE */ - }); + }; }); const bodyRowsCopy = (0, import_lodash4.cloneDeep)(bodyRows); bodyRowsCopy.sort((a2, b2) => a2.index - b2.index); const nextBodyRows = bodyRowsCopy.map((row, i2) => { - return __spreadProps(__spreadValues({}, row), { + return { + ...row, index: i2 - }); + }; }); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + return { + ...prevState, + model: { + ...prevState.model, columns: nextColumns, bodyRows: nextBodyRows - }) - }); + } + }; } }; @@ -45098,29 +46133,34 @@ var MigrateState10 = class { return columnCopy; }); const nextBodyCells = bodyCells.map((cell) => { - return __spreadProps(__spreadValues({}, cell), { + return { + ...cell, isExternalLink: true - }); + }; }); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + return { + ...prevState, + model: { + ...prevState.model, columns: nextColumns, bodyCells: nextBodyCells - }) - }); + } + }; } }; // src/shared/loom-state/migrate/migrate-state-11.ts var MigrateState11 = class { migrate(prevState) { - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + return { + ...prevState, + model: { + ...prevState.model, settings: { numFrozenColumns: 1 } - }) - }); + } + }; } }; @@ -45152,7 +46192,8 @@ var MigrateState12 = class { } else { newCurrency = currencyType; } - return __spreadProps(__spreadValues({}, column), { + return { + ...column, type: newType, currencyType: newCurrency, calculationType: column.calculationType, @@ -45160,7 +46201,7 @@ var MigrateState12 = class { numberSuffix: "", numberSeparator: "", numberFormat: "number" /* NUMBER */ - }); + }; }); const nextFilters = filterRules.map((rule) => { const column = columns.find( @@ -45220,7 +46261,8 @@ var MigrateState12 = class { return filter3; } }); - return __spreadProps(__spreadValues({}, prevState), { + return { + ...prevState, model: { columns: nextColumns, footerCells, @@ -45232,7 +46274,7 @@ var MigrateState12 = class { filters: nextFilters, settings } - }); + }; } }; var filterTypeToFilterCondition = (type) => { @@ -45266,11 +46308,12 @@ var createTextFilter = (columnId, options) => { const baseFilter = createBaseFilter(columnId, { isEnabled }); - return __spreadProps(__spreadValues({}, baseFilter), { + return { + ...baseFilter, type: "text" /* TEXT */, condition, text - }); + }; }; var createFileFilter = (columnId, options) => { const { @@ -45281,11 +46324,12 @@ var createFileFilter = (columnId, options) => { const baseFilter = createBaseFilter(columnId, { isEnabled }); - return __spreadProps(__spreadValues({}, baseFilter), { + return { + ...baseFilter, type: "file" /* FILE */, condition, text - }); + }; }; var createCheckboxFilter = (columnId, options) => { const { @@ -45296,12 +46340,13 @@ var createCheckboxFilter = (columnId, options) => { const baseFilter = createBaseFilter(columnId, { isEnabled }); - return __spreadProps(__spreadValues({}, baseFilter), { + return { + ...baseFilter, type: "checkbox" /* CHECKBOX */, condition, text, isEnabled - }); + }; }; var createTagFilter = (columnId, options) => { const { @@ -45312,12 +46357,13 @@ var createTagFilter = (columnId, options) => { const baseFilter = createBaseFilter(columnId, { isEnabled }); - return __spreadProps(__spreadValues({}, baseFilter), { + return { + ...baseFilter, type: "tag" /* TAG */, condition, tagId, isEnabled - }); + }; }; var createMultiTagFilter = (columnId, options) => { const { @@ -45328,11 +46374,12 @@ var createMultiTagFilter = (columnId, options) => { const baseFilter = createBaseFilter(columnId, { isEnabled }); - return __spreadProps(__spreadValues({}, baseFilter), { + return { + ...baseFilter, type: "multi-tag" /* MULTI_TAG */, condition, tagIds - }); + }; }; var createBaseFilter = (columnId, options) => { const { isEnabled = true } = options || {}; @@ -45348,9 +46395,10 @@ var createBaseFilter = (columnId, options) => { var MigrateState13 = class { migrate(prevState) { const { settings, columns, headerCells, bodyCells, bodyRows, filters } = prevState.model; - const nextSettings = __spreadProps(__spreadValues({}, settings), { + const nextSettings = { + ...settings, showCalculationRow: true - }); + }; const nextColumns = columns.map((column) => { const cell = headerCells.find( (cell2) => cell2.columnId === column.id @@ -45367,10 +46415,11 @@ var MigrateState13 = class { color }; }); - return __spreadProps(__spreadValues({}, column), { + return { + ...column, content: markdown, tags: nextTags - }); + }; }); const nextRows = bodyRows.map((row) => { const cells = bodyCells.filter( @@ -45394,18 +46443,20 @@ var MigrateState13 = class { tagIds }; }); - return __spreadProps(__spreadValues({}, row), { + return { + ...row, cells: nextCells - }); + }; }); - return __spreadProps(__spreadValues({}, prevState), { + return { + ...prevState, model: { columns: nextColumns, rows: nextRows, filters, settings: nextSettings } - }); + }; } }; @@ -45414,23 +46465,27 @@ var MigrateState14 = class { migrate(prevState) { const { rows, columns } = prevState.model; const nextRows = rows.map((row) => { - return __spreadProps(__spreadValues({}, row), { + return { + ...row, sourceId: null - }); + }; }); const newColumns = columns.map((column) => { - return __spreadProps(__spreadValues({}, column), { + return { + ...column, frontmatterKey: null - }); + }; }); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + return { + ...prevState, + model: { + ...prevState.model, rows: nextRows, columns: newColumns, sources: [], externalRowOrder: [] - }) - }); + } + }; } }; @@ -45438,7 +46493,8 @@ var MigrateState14 = class { var MigrateState15 = class { migrate(prevState) { const { rows, columns, sources, filters, settings, externalRowOrder } = prevState.model; - return __spreadProps(__spreadValues({}, prevState), { + return { + ...prevState, model: { rows, columns, @@ -45447,7 +46503,7 @@ var MigrateState15 = class { externalRowOrder, sources } - }); + }; } }; @@ -45462,16 +46518,19 @@ var MigrateState16 = class { id: id2, path, type, + //Set default value includeSubfolders: true }; } return source; }); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + return { + ...prevState, + model: { + ...prevState.model, sources: nextSources - }) - }); + } + }; } }; @@ -45495,7 +46554,7 @@ var getDateTimeFromUnixTime = (unixTime) => { return new Date(unixTime).toISOString(); }; var getCurrentDateTime = () => { - return new Date().toISOString(); + return (/* @__PURE__ */ new Date()).toISOString(); }; var padToTwoDigits = (value) => { return ("0" + value).slice(-2); @@ -45511,13 +46570,14 @@ var MigrateState17 = class { if (frontmatterKey) { newFrontmatterKey = frontmatterKey.value; } - return __spreadProps(__spreadValues({}, column), { + return { + ...column, dateFormat: getDateFormatDisplay(dateFormat), dateFormatSeparator: "-" /* HYPHEN */, hour12: true, includeTime: false, frontmatterKey: newFrontmatterKey - }); + }; }); const nextRows = rows.map((row) => { const { cells, creationTime, lastEditedTime } = row; @@ -45527,17 +46587,19 @@ var MigrateState17 = class { if (dateTime !== null) { nextDateTime = getDateTimeFromUnixTime(dateTime); } - return __spreadProps(__spreadValues({}, cell), { + return { + ...cell, dateTime: nextDateTime - }); + }; }); const nextCreationDateTime = getDateTimeFromUnixTime(creationTime); const nextLastEditedDateTime = getDateTimeFromUnixTime(lastEditedTime); - return __spreadProps(__spreadValues({}, row), { + return { + ...row, lastEditedDateTime: nextLastEditedDateTime, creationDateTime: nextCreationDateTime, cells: nextCells - }); + }; }); const nextFilters = filters.map((filter3) => { const { type } = filter3; @@ -45546,19 +46608,22 @@ var MigrateState17 = class { if (filter3.dateTime !== null) { nextDateTime = getDateTimeFromUnixTime(filter3.dateTime); } - return __spreadProps(__spreadValues({}, filter3), { + return { + ...filter3, dateTime: nextDateTime - }); + }; } return filter3; }); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + return { + ...prevState, + model: { + ...prevState.model, columns: nextColumns, rows: nextRows, filters: nextFilters - }) - }); + } + }; } }; var getDateFormatDisplay = (format) => { @@ -45749,26 +46814,30 @@ var MigrateState18 = class { throw new Error("Unhandled cell type"); } }); - return __spreadProps(__spreadValues({}, row), { + return { + ...row, cells: nextCells - }); + }; }); const nextFilters = filters.map((filter3) => { const { type } = filter3; if (type === "checkbox" /* CHECKBOX */) { const { text } = filter3; - return __spreadProps(__spreadValues({}, filter3), { + return { + ...filter3, value: isCheckboxChecked(text) ? true : false - }); + }; } return filter3; }); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + return { + ...prevState, + model: { + ...prevState.model, rows: nextRows, filters: nextFilters - }) - }); + } + }; } }; var CHECKBOX_CHECKED_REGEX = new RegExp(/^\[[x]\]$/); @@ -45783,11 +46852,13 @@ var MigrateState19 = class { const nextSources = sources.filter( (source) => source.type !== "tag" /* TAG */ ); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + return { + ...prevState, + model: { + ...prevState.model, sources: nextSources - }) - }); + } + }; } }; @@ -45862,17 +46933,20 @@ var MigrateState20 = class { const { type } = source; if (type === "frontmatter" /* FRONTMATTER */) { const { propertyType } = source; - return __spreadProps(__spreadValues({}, source), { + return { + ...source, filterCondition: getFilterConditionsForPropertyType(propertyType)[0] - }); + }; } return source; }); - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + return { + ...prevState, + model: { + ...prevState.model, sources: nextSources - }) - }); + } + }; } }; @@ -46052,7 +47126,7 @@ var CheckboxConditionUnion = (0, import_runtypes.Union)( var CheckboxFilter = BaseFilter.extend({ type: (0, import_runtypes.Literal)("checkbox" /* CHECKBOX */), condition: CheckboxConditionUnion, - text: import_runtypes.String + value: import_runtypes.Boolean }); var TagFilterConditionUnion = (0, import_runtypes.Union)( (0, import_runtypes.Literal)("is" /* IS */), @@ -46161,7 +47235,8 @@ var Column = (0, import_runtypes.Record)({ }); var BaseCell = (0, import_runtypes.Record)({ id: import_runtypes.String, - columnId: import_runtypes.String + columnId: import_runtypes.String, + hasValidFrontmatter: (0, import_runtypes.Union)(import_runtypes.Boolean, (0, import_runtypes.Literal)(null)) }); var TextCell2 = BaseCell.extend({ content: import_runtypes.String @@ -46288,16 +47363,45 @@ var DeserializationError = class extends Error { } }; +// src/shared/loom-state/migrate/migrate-state-21.ts +var MigrateState21 = class { + migrate(prevState) { + const { rows } = prevState.model; + const nextRows = rows.map((row) => { + const { cells } = row; + const nextCells = cells.map((cell) => { + return { + ...cell, + hasValidFrontmatter: null + }; + }); + return { + ...row, + cells: nextCells + }; + }); + return { + ...prevState, + model: { + ...prevState.model, + rows: nextRows + } + }; + } +}; + // src/data/serialize-state.ts var serializeState = (state) => { const filteredRows = state.model.rows.filter( (row) => row.sourceId === null ); - const filteredState = __spreadProps(__spreadValues({}, state), { - model: __spreadProps(__spreadValues({}, state.model), { + const filteredState = { + ...state, + model: { + ...state.model, rows: filteredRows - }) - }); + } + }; return JSON.stringify(filteredState, null, 2); }; var deserializeState = (data, pluginVersion) => { @@ -46506,6 +47610,15 @@ var deserializeState = (data, pluginVersion) => { currentState = nextState; failedMigration = null; } + const VERSION_8_15_6 = "8.15.6"; + if (isVersionLessThan(fileVersion, VERSION_8_15_6)) { + failedMigration = VERSION_8_15_6; + const nextState = new MigrateState21().migrate( + currentState + ); + currentState = nextState; + failedMigration = null; + } LoomStateObject.check(currentState); const state = currentState; state.pluginVersion = pluginVersion; @@ -46547,7 +47660,10 @@ var import_react = __toESM(require_react()); // node_modules/react-redux/es/components/Context.js var React = __toESM(require_react()); var ContextKey = Symbol.for(`react-redux-context`); -var gT = typeof globalThis !== "undefined" ? globalThis : {}; +var gT = typeof globalThis !== "undefined" ? globalThis : ( + /* fall back to a per-module scope (pre-8.1 behaviour) if `globalThis` is not available */ + {} +); function getContext() { var _gT$ContextKey; if (!React.createContext) @@ -46867,30 +47983,7 @@ initializeConnect(import_shim.useSyncExternalStore); setBatch(import_react_dom.unstable_batchedUpdates); // src/react/loom-app/loom-state-provider/index.tsx -var import_react5 = __toESM(require_react()); - -// src/shared/logger.ts -var import_react3 = __toESM(require_react()); - -// src/redux/hooks.ts -var useAppSelector = useSelector; - -// src/shared/logger.ts -var log = (shouldDebug, message, args = {}) => { - if (shouldDebug) { - console.log(message); - if (Object.keys(args).length !== 0) - console.log(args); - } -}; -var useLogger = () => { - const { shouldDebug } = useAppSelector((state) => state.global.settings); - const logger = import_react3.default.useCallback( - (message, args) => log(shouldDebug, message, args), - [shouldDebug] - ); - return logger; -}; +var import_react4 = __toESM(require_react()); // src/shared/error/cell-not-found-error.ts var CellNotFoundError = class extends Error { @@ -47049,11 +48142,13 @@ var sortRows = (prevState) => { } else { newRows = sortByIndex(rows); } - const nextState = __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + const nextState = { + ...prevState, + model: { + ...prevState.model, rows: newRows - }) - }); + } + }; return nextState; }; var multiSort = (sources, sortedColumns, rows) => { @@ -47276,11 +48371,11 @@ var sortByLastEditedTimeCell = (a2, b2, sortDir) => { }; // src/react/loom-app/app-mount-provider/index.tsx -var import_react4 = __toESM(require_react()); +var import_react3 = __toESM(require_react()); var import_jsx_runtime = __toESM(require_jsx_runtime()); -var MountContext = import_react4.default.createContext(null); +var MountContext = import_react3.default.createContext(null); var useAppMount = () => { - const value = import_react4.default.useContext(MountContext); + const value = import_react3.default.useContext(MountContext); if (value === null) { throw new Error( "useAppMount() called without a <AppMountProvider /> in the tree." @@ -47306,22 +48401,27 @@ function AppMountProvider({ } // src/shared/event/event-manager.ts -var EventManager = class { +var import_js_logger3 = __toESM(require_logger()); +var CLASS_NAME = "EventManager"; +var EventManager = class _EventManager { constructor() { this.eventListeners = {}; } + // Ensures only one instance is created static getInstance() { - if (!EventManager.instance) { - EventManager.instance = new EventManager(); + if (!_EventManager.instance) { + _EventManager.instance = new _EventManager(); } - return EventManager.instance; + return _EventManager.instance; } + // Method to add an event listener on(eventName, callback) { if (!this.eventListeners[eventName]) { this.eventListeners[eventName] = []; } this.eventListeners[eventName].push(callback); } + // Method to remove an event listener off(eventName, callbackToRemove) { if (!this.eventListeners[eventName]) { return; @@ -47330,7 +48430,9 @@ var EventManager = class { (callback) => callback !== callbackToRemove ); } + // Method to trigger all callbacks associated with an event emit(eventName, ...data) { + import_js_logger3.default.trace(CLASS_NAME, "emit", `emiting ${eventName} event`, data); if (!this.eventListeners[eventName]) { return; } @@ -47341,10 +48443,11 @@ var EventManager = class { }; // src/react/loom-app/loom-state-provider/index.tsx +var import_js_logger4 = __toESM(require_logger()); var import_jsx_runtime2 = __toESM(require_jsx_runtime()); -var LoomStateContext = import_react5.default.createContext(null); +var LoomStateContext = import_react4.default.createContext(null); var useLoomState = () => { - const value = import_react5.default.useContext(LoomStateContext); + const value = import_react4.default.useContext(LoomStateContext); if (value === null) { throw new Error( "useLoomState() called without a <LoomStateProvider /> in the tree." @@ -47357,34 +48460,34 @@ function LoomStateProvider({ onSaveState, children }) { - const [loomState, setLoomState] = import_react5.default.useState({ + const [loomState, setLoomState] = import_react4.default.useState({ state: initialState2, shouldSaveToDisk: false, shouldSaveFrontmatter: true, time: Date.now() }); - const [searchText, setSearchText] = import_react5.default.useState(""); - const [isSearchBarVisible, setSearchBarVisible] = import_react5.default.useState(false); - const [resizingColumnId, setResizingColumnId] = import_react5.default.useState(null); - const [history, setHistory] = import_react5.default.useState([ + const [searchText, setSearchText] = import_react4.default.useState(""); + const [isSearchBarVisible, setSearchBarVisible] = import_react4.default.useState(false); + const [resizingColumnId, setResizingColumnId] = import_react4.default.useState(null); + const [history, setHistory] = import_react4.default.useState([ null ]); - const [position, setPosition] = import_react5.default.useState(0); - const logger = useLogger(); + const [position, setPosition] = import_react4.default.useState(0); const { reactAppId, loomFile, app } = useAppMount(); - const isMountedRef = import_react5.default.useRef(false); - import_react5.default.useEffect(() => { + const [error, setError] = import_react4.default.useState(null); + const isMountedRef = import_react4.default.useRef(false); + import_react4.default.useEffect(() => { if (!isMountedRef.current) { isMountedRef.current = true; return; } const { shouldSaveToDisk, state, shouldSaveFrontmatter } = loomState; if (shouldSaveToDisk) { - logger("LoomStateProvider saving state to disk!"); + import_js_logger4.default.info("LoomStateProvider saving state to disk!"); onSaveState(reactAppId, state, shouldSaveFrontmatter); } - }, [logger, reactAppId, loomState, onSaveState]); - import_react5.default.useEffect(() => { + }, [reactAppId, loomState, onSaveState]); + import_react4.default.useEffect(() => { function handleRefreshEvent(filePath, sourceAppId, state) { if (reactAppId !== sourceAppId && filePath === loomFile.path) { setLoomState({ @@ -47395,20 +48498,52 @@ function LoomStateProvider({ }); } } - EventManager.getInstance().on("app-refresh", handleRefreshEvent); - return () => EventManager.getInstance().off("app-refresh", handleRefreshEvent); + EventManager.getInstance().on( + "app-refresh-by-state", + handleRefreshEvent + ); + return () => EventManager.getInstance().off( + "app-refresh-by-state", + handleRefreshEvent + ); }, [reactAppId, loomFile, app]); + import_react4.default.useEffect(() => { + async function handleRefreshEvent(file, pluginVersion) { + if (file.path === loomFile.path) { + const fileData = await app.vault.read(loomFile); + try { + const state = deserializeState(fileData, pluginVersion); + setLoomState({ + state, + shouldSaveToDisk: false, + shouldSaveFrontmatter: false, + time: Date.now() + }); + } catch (err) { + setError(err); + } + } + } + EventManager.getInstance().on( + "app-refresh-by-file", + handleRefreshEvent + ); + return () => EventManager.getInstance().off( + "app-refresh-by-file", + handleRefreshEvent + ); + }, [loomFile, app]); function handleToggleSearchBar() { setSearchBarVisible((prevState) => !prevState); } - const undo = import_react5.default.useCallback(() => { + const undo = import_react4.default.useCallback(() => { if (position > 0) { - logger("handleUndoEvent"); + import_js_logger4.default.trace("handleUndoEvent"); const currentPosition = position - 1; setPosition(currentPosition); const command = history[position]; if (command !== null) { - logger(command.constructor.name + ".undo"); + import_js_logger4.default.trace(command.constructor.name + ".undo"); let newState = command.undo(loomState.state); if (command.shouldSortRows) { newState = sortRows(newState); @@ -47421,15 +48556,15 @@ function LoomStateProvider({ }); } } - }, [position, history, loomState, logger]); - const redo = import_react5.default.useCallback(() => { + }, [position, history, loomState]); + const redo = import_react4.default.useCallback(() => { if (position < history.length - 1) { - logger("handleRedoEvent"); + import_js_logger4.default.trace("handleRedoEvent"); const currentPosition = position + 1; setPosition(currentPosition); const command = history[currentPosition]; if (command !== null) { - logger(command.constructor.name + ".redo"); + import_js_logger4.default.trace(command.constructor.name + ".redo"); let newState = command.redo(loomState.state); if (command.shouldSortRows) { newState = sortRows(newState); @@ -47442,8 +48577,8 @@ function LoomStateProvider({ }); } } - }, [position, history, loomState, logger]); - const doCommand = import_react5.default.useCallback( + }, [position, history, loomState]); + const doCommand = import_react4.default.useCallback( (command) => { setHistory((prevState) => { if (position < history.length - 1) { @@ -47467,6 +48602,9 @@ function LoomStateProvider({ }, [position, history, loomState] ); + if (error) { + throw error; + } return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)( LoomStateContext.Provider, { @@ -47489,13 +48627,13 @@ function LoomStateProvider({ } // src/react/loom-app/app/index.tsx -var import_react64 = __toESM(require_react()); +var import_react63 = __toESM(require_react()); // src/react/loom-app/table/index.tsx -var import_react40 = __toESM(require_react()); +var import_react39 = __toESM(require_react()); // node_modules/react-virtuoso/dist/index.mjs -var import_react6 = __toESM(require_react(), 1); +var import_react5 = __toESM(require_react(), 1); var import_react_dom2 = __toESM(require_react_dom(), 1); var PUBLISH = 0; var SUBSCRIBE = 1; @@ -47819,13 +48957,13 @@ function omit(keys, obj) { } return result; } -var useIsomorphicLayoutEffect$2 = typeof document !== "undefined" ? import_react6.default.useLayoutEffect : import_react6.default.useEffect; +var useIsomorphicLayoutEffect$2 = typeof document !== "undefined" ? import_react5.default.useLayoutEffect : import_react5.default.useEffect; function systemToComponent(systemSpec, map2, Root6) { const requiredPropNames = Object.keys(map2.required || {}); const optionalPropNames = Object.keys(map2.optional || {}); const methodNames = Object.keys(map2.methods || {}); const eventNames = Object.keys(map2.events || {}); - const Context = import_react6.default.createContext({}); + const Context = import_react5.default.createContext({}); function applyPropsToSystem(system2, props) { if (system2["propsReady"]) { publish(system2["propsReady"], false); @@ -47859,12 +48997,12 @@ function systemToComponent(systemSpec, map2, Root6) { return handlers; }, {}); } - const Component2 = import_react6.default.forwardRef((propsWithChildren, ref) => { - const _a2 = propsWithChildren, { children } = _a2, props = __objRest(_a2, ["children"]); - const [system2] = import_react6.default.useState(() => { + const Component2 = import_react5.default.forwardRef((propsWithChildren, ref) => { + const { children, ...props } = propsWithChildren; + const [system2] = import_react5.default.useState(() => { return tap(init(systemSpec), (system22) => applyPropsToSystem(system22, props)); }); - const [handlers] = import_react6.default.useState(curry1to0(buildEventHandlers, system2)); + const [handlers] = import_react5.default.useState(curry1to0(buildEventHandlers, system2)); useIsomorphicLayoutEffect$2(() => { for (const eventName of eventNames) { if (eventName in props) { @@ -47878,11 +49016,11 @@ function systemToComponent(systemSpec, map2, Root6) { useIsomorphicLayoutEffect$2(() => { applyPropsToSystem(system2, props); }); - import_react6.default.useImperativeHandle(ref, always(buildMethods(system2))); - return import_react6.default.createElement( + import_react5.default.useImperativeHandle(ref, always(buildMethods(system2))); + return import_react5.default.createElement( Context.Provider, { value: system2 }, - Root6 ? import_react6.default.createElement( + Root6 ? import_react5.default.createElement( Root6, omit([...requiredPropNames, ...optionalPropNames, ...eventNames], props), children @@ -47890,12 +49028,27 @@ function systemToComponent(systemSpec, map2, Root6) { ); }); const usePublisher2 = (key) => { - return import_react6.default.useCallback(curry2to1(publish, import_react6.default.useContext(Context)[key]), [key]); + return import_react5.default.useCallback(curry2to1(publish, import_react5.default.useContext(Context)[key]), [key]); }; - const useEmitterValue2 = (key) => { - const system2 = import_react6.default.useContext(Context); + const useEmitterValue18 = (key) => { + const system2 = import_react5.default.useContext(Context); const source = system2[key]; - const [value, setValue] = import_react6.default.useState(curry1to0(getValue, source)); + const cb = import_react5.default.useCallback( + (c2) => { + return subscribe(source, c2); + }, + [source] + ); + return import_react5.default.useSyncExternalStore( + cb, + () => getValue(source), + () => getValue(source) + ); + }; + const useEmitterValueLegacy = (key) => { + const system2 = import_react5.default.useContext(Context); + const source = system2[key]; + const [value, setValue] = import_react5.default.useState(curry1to0(getValue, source)); useIsomorphicLayoutEffect$2( () => subscribe(source, (next) => { if (next !== value) { @@ -47906,8 +49059,9 @@ function systemToComponent(systemSpec, map2, Root6) { ); return value; }; + const useEmitterValue2 = import_react5.default.version.startsWith("18") ? useEmitterValue18 : useEmitterValueLegacy; const useEmitter2 = (key, callback) => { - const context = import_react6.default.useContext(Context); + const context = import_react5.default.useContext(Context); const source = context[key]; useIsomorphicLayoutEffect$2(() => subscribe(source, callback), [callback, source]); }; @@ -47918,7 +49072,7 @@ function systemToComponent(systemSpec, map2, Root6) { useEmitter: useEmitter2 }; } -var useIsomorphicLayoutEffect2 = typeof document !== "undefined" ? import_react6.default.useLayoutEffect : import_react6.default.useEffect; +var useIsomorphicLayoutEffect2 = typeof document !== "undefined" ? import_react5.default.useLayoutEffect : import_react5.default.useEffect; var useIsomorphicLayoutEffect$1 = useIsomorphicLayoutEffect2; var LogLevel = /* @__PURE__ */ ((LogLevel2) => { LogLevel2[LogLevel2["DEBUG"] = 0] = "DEBUG"; @@ -47928,18 +49082,31 @@ var LogLevel = /* @__PURE__ */ ((LogLevel2) => { return LogLevel2; })(LogLevel || {}); var CONSOLE_METHOD_MAP = { - [0]: "debug", - [1]: "log", - [2]: "warn", - [3]: "error" + [ + 0 + /* DEBUG */ + ]: "debug", + [ + 1 + /* INFO */ + ]: "log", + [ + 2 + /* WARN */ + ]: "warn", + [ + 3 + /* ERROR */ + ]: "error" }; var getGlobalThis = () => typeof globalThis === "undefined" ? window : globalThis; var loggerSystem = system( () => { const logLevel = statefulStream( 3 + /* ERROR */ ); - const log2 = statefulStream((label, message, level = 1) => { + const log = statefulStream((label, message, level = 1) => { var _a2; const currentLevel = (_a2 = getGlobalThis()["VIRTUOSO_LOG_LEVEL"]) != null ? _a2 : getValue(logLevel); if (level >= currentLevel) { @@ -47953,7 +49120,7 @@ var loggerSystem = system( } }); return { - log: log2, + log, logLevel }; }, @@ -47961,11 +49128,11 @@ var loggerSystem = system( { singleton: true } ); function useSizeWithElRef(callback, enabled = true) { - const ref = import_react6.default.useRef(null); + const ref = import_react5.default.useRef(null); let callbackRef = (_el) => { }; if (typeof ResizeObserver !== "undefined") { - const observer = import_react6.default.useMemo(() => { + const observer = import_react5.default.useMemo(() => { return new ResizeObserver((entries) => { const element = entries[0].target; if (element.offsetParent !== null) { @@ -47990,10 +49157,10 @@ function useSizeWithElRef(callback, enabled = true) { function useSize(callback, enabled = true) { return useSizeWithElRef(callback, enabled).callbackRef; } -function useChangedListContentsSizes(callback, itemSize, enabled, scrollContainerStateCallback, log2, gap, customScrollParent) { - const memoedCallback = import_react6.default.useCallback( +function useChangedListContentsSizes(callback, itemSize, enabled, scrollContainerStateCallback, log, gap, customScrollParent) { + const memoedCallback = import_react5.default.useCallback( (el) => { - const ranges = getChangedChildSizes(el.children, itemSize, "offsetHeight", log2); + const ranges = getChangedChildSizes(el.children, itemSize, "offsetHeight", log); let scrollableElement = el.parentElement; while (!scrollableElement.dataset["virtuosoScroller"]) { scrollableElement = scrollableElement.parentElement; @@ -48007,16 +49174,16 @@ function useChangedListContentsSizes(callback, itemSize, enabled, scrollContaine scrollHeight, viewportHeight }); - gap == null ? void 0 : gap(resolveGapValue$1("row-gap", getComputedStyle(el).rowGap, log2)); + gap == null ? void 0 : gap(resolveGapValue$1("row-gap", getComputedStyle(el).rowGap, log)); if (ranges !== null) { callback(ranges); } }, - [callback, itemSize, log2, gap, customScrollParent, scrollContainerStateCallback] + [callback, itemSize, log, gap, customScrollParent, scrollContainerStateCallback] ); return useSizeWithElRef(memoedCallback, enabled); } -function getChangedChildSizes(children, itemSize, field, log2) { +function getChangedChildSizes(children, itemSize, field, log) { const length = children.length; if (length === 0) { return null; @@ -48031,7 +49198,7 @@ function getChangedChildSizes(children, itemSize, field, log2) { const knownSize = parseFloat(child.dataset.knownSize); const size = itemSize(child, field); if (size === 0) { - log2("Zero-sized element, this should not happen", { child }, LogLevel.ERROR); + log("Zero-sized element, this should not happen", { child }, LogLevel.ERROR); } if (size === knownSize) { continue; @@ -48045,9 +49212,9 @@ function getChangedChildSizes(children, itemSize, field, log2) { } return results; } -function resolveGapValue$1(property, value, log2) { +function resolveGapValue$1(property, value, log) { if (value !== "normal" && !(value == null ? void 0 : value.endsWith("px"))) { - log2(`${property} was not resolved to pixel value correctly`, value, LogLevel.WARN); + log(`${property} was not resolved to pixel value correctly`, value, LogLevel.WARN); } if (value === "normal") { return 0; @@ -48061,10 +49228,10 @@ function approximatelyEqual(num1, num2) { return Math.abs(num1 - num2) < 1.01; } function useScrollTop(scrollContainerStateCallback, smoothScrollTargetReached, scrollerElement, scrollerRefCallback = noop, customScrollParent) { - const scrollerRef = import_react6.default.useRef(null); - const scrollTopTarget = import_react6.default.useRef(null); - const timeoutRef = import_react6.default.useRef(null); - const handler = import_react6.default.useCallback( + const scrollerRef = import_react5.default.useRef(null); + const scrollTopTarget = import_react5.default.useRef(null); + const timeoutRef = import_react5.default.useRef(null); + const handler = import_react5.default.useCallback( (ev) => { const el = ev.target; const windowScroll = el === window || el === document; @@ -48096,7 +49263,7 @@ function useScrollTop(scrollContainerStateCallback, smoothScrollTargetReached, s }, [scrollContainerStateCallback, smoothScrollTargetReached] ); - import_react6.default.useEffect(() => { + import_react5.default.useEffect(() => { const localRef = customScrollParent ? customScrollParent : scrollerRef.current; scrollerRefCallback(customScrollParent ? customScrollParent : scrollerRef.current); handler({ target: localRef, suppressFlushSync: true }); @@ -48185,6 +49352,7 @@ var domIOSystem = system( ); connect(scrollTop, statefulScrollTop); return { + // input scrollContainerState, scrollTop, viewportHeight, @@ -48194,8 +49362,10 @@ var domIOSystem = system( footerHeight, scrollHeight, smoothScrollTargetReached, + // signals scrollTo, scrollBy, + // state statefulScrollTop, deviation, scrollingInProgress @@ -48550,9 +49720,9 @@ function createOffsetTree(prevOffsetTree, syncStart, sizeTree, gap) { lastSize: prevSize }; } -function sizeStateReducer(state, [ranges, groupIndices, log2, gap]) { +function sizeStateReducer(state, [ranges, groupIndices, log, gap]) { if (ranges.length > 0) { - log2("received item sizes", ranges, LogLevel.DEBUG); + log("received item sizes", ranges, LogLevel.DEBUG); } const sizeTree = state.sizeTree; let newSizeTree = sizeTree; @@ -48629,7 +49799,7 @@ var SIZE_MAP = { offsetWidth: "width" }; var sizeSystem = system( - ([{ log: log2 }, { recalcInProgress }]) => { + ([{ log }, { recalcInProgress }]) => { const sizeRanges = stream(); const totalCount = stream(); const statefulTotalCount = statefulStreamFromEmitter(totalCount, 0); @@ -48644,7 +49814,7 @@ var sizeSystem = system( const gap = statefulStream(0); const initial = initialSizeState(); const sizes = statefulStreamFromEmitter( - pipe(sizeRanges, withLatestFrom(groupIndices, log2, gap), scan(sizeStateReducer, initial), distinctUntilChanged()), + pipe(sizeRanges, withLatestFrom(groupIndices, log, gap), scan(sizeStateReducer, initial), distinctUntilChanged()), initial ); const prevGroupIndices = statefulStreamFromEmitter( @@ -48668,10 +49838,11 @@ var sizeSystem = system( const groupOffsetTree = groupIndices2.reduce((tree, index, idx) => { return insert(tree, index, offsetOf(index, sizes2.offsetTree, gap2) || idx); }, newTree()); - return __spreadProps(__spreadValues({}, sizes2), { + return { + ...sizes2, groupIndices: groupIndices2, groupOffsetTree - }); + }; }) ), sizes @@ -48754,9 +49925,9 @@ var sizeSystem = system( } } ); - subscribe(pipe(firstItemIndex, withLatestFrom(log2)), ([index, log22]) => { + subscribe(pipe(firstItemIndex, withLatestFrom(log)), ([index, log2]) => { if (index < 0) { - log22( + log2( "`firstItemIndex` prop should not be set to less than zero. If you don't know the total count, just use a very high value", { firstItemIndex }, LogLevel.ERROR @@ -48882,22 +50053,27 @@ var sizeSystem = system( const nextItemSize = findMaxKeyValue(sizes2.sizeTree, -shiftWith2 + 1)[1]; newSizeTree = insert(newSizeTree, 1, nextItemSize); } - return __spreadValues(__spreadProps(__spreadValues({}, sizes2), { - sizeTree: newSizeTree - }), createOffsetTree(sizes2.offsetTree, 0, newSizeTree, gap2)); + return { + ...sizes2, + sizeTree: newSizeTree, + ...createOffsetTree(sizes2.offsetTree, 0, newSizeTree, gap2) + }; } else { const newSizeTree = walk(sizes2.sizeTree).reduce((acc, { k: k2, v: v2 }) => { return insert(acc, Math.max(0, k2 + shiftWith2), v2); }, newTree()); - return __spreadValues(__spreadProps(__spreadValues({}, sizes2), { - sizeTree: newSizeTree - }), createOffsetTree(sizes2.offsetTree, 0, newSizeTree, gap2)); + return { + ...sizes2, + sizeTree: newSizeTree, + ...createOffsetTree(sizes2.offsetTree, 0, newSizeTree, gap2) + }; } }) ), sizes ); return { + // input data, totalCount, sizeRanges, @@ -48910,6 +50086,7 @@ var sizeSystem = system( beforeUnshiftWith, firstItemIndex, gap, + // output sizes, listRefresh, statefulTotalCount, @@ -48947,7 +50124,7 @@ var scrollToIndexSystem = system( fixedHeaderHeight, fixedFooterHeight }, - { log: log2 } + { log } ]) => { const scrollToIndex = stream(); const topListHeight = statefulStream(0); @@ -48972,11 +50149,11 @@ var scrollToIndexSystem = system( connect( pipe( scrollToIndex, - withLatestFrom(sizes, viewportHeight, totalCount, topListHeight, headerHeight, footerHeight, log2), + withLatestFrom(sizes, viewportHeight, totalCount, topListHeight, headerHeight, footerHeight, log), withLatestFrom(gap, fixedHeaderHeight, fixedFooterHeight), map( ([ - [location, sizes2, viewportHeight2, totalCount2, topListHeight2, headerHeight2, footerHeight2, log22], + [location, sizes2, viewportHeight2, totalCount2, topListHeight2, headerHeight2, footerHeight2, log2], gap2, fixedHeaderHeight2, fixedFooterHeight2 @@ -49002,10 +50179,10 @@ var scrollToIndexSystem = system( const retry = (listChanged) => { cleanup(); if (listChanged) { - log22("retrying to scroll to", { location }, LogLevel.DEBUG); + log2("retrying to scroll to", { location }, LogLevel.DEBUG); publish(scrollToIndex, location); } else { - log22("list did not change, scroll successful", {}, LogLevel.DEBUG); + log2("list did not change, scroll successful", {}, LogLevel.DEBUG); } }; cleanup(); @@ -49024,7 +50201,7 @@ var scrollToIndexSystem = system( cleanup(); }, 1200); publish(scrollingInProgress, true); - log22("scrolling from index to", { index, top, behavior }, LogLevel.DEBUG); + log2("scrolling from index to", { index, top, behavior }, LogLevel.DEBUG); return { top, behavior }; } ) @@ -49212,6 +50389,7 @@ var stateFlagsSystem = system(([{ scrollContainerState, scrollTop, viewportHeigh pipe( isScrolling, filter((value) => !value), + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument mapTo(0) ), scrollVelocity @@ -49242,7 +50420,7 @@ var stateFlagsSystem = system(([{ scrollContainerState, scrollTop, viewportHeigh }; }, tup(domIOSystem)); var propsReadySystem = system( - ([{ log: log2 }]) => { + ([{ log }]) => { const propsReady = statefulStream(false); const didMount = streamFromEmitter( pipe( @@ -49252,7 +50430,7 @@ var propsReadySystem = system( ) ); subscribe(propsReady, (value) => { - value && getValue(log2)("props updated", {}, LogLevel.DEBUG); + value && getValue(log)("props updated", {}, LogLevel.DEBUG); }); return { propsReady, didMount }; }, @@ -49329,7 +50507,7 @@ var followOutputSystem = system( { scrollToIndex }, { scrolledToInitialItem }, { propsReady, didMount }, - { log: log2 }, + { log }, { scrollingInProgress } ]) => { const followOutput = statefulStream(false); @@ -49363,7 +50541,7 @@ var followOutputSystem = system( pendingScrollHandle = null; } pendingScrollHandle = handleNext(listRefresh, () => { - getValue(log2)("following output to ", { totalCount: totalCount2 }, LogLevel.DEBUG); + getValue(log)("following output to ", { totalCount: totalCount2 }, LogLevel.DEBUG); scrollToBottom(followOutputBehavior); pendingScrollHandle = null; }); @@ -49372,7 +50550,7 @@ var followOutputSystem = system( function trapNextSizeIncrease(followOutput2) { const cancel = handleNext(atBottomState, (state) => { if (followOutput2 && !state.atBottom && state.notAtBottomBecause === "SIZE_INCREASED" && !pendingScrollHandle) { - getValue(log2)("scrolling to bottom due to increased size", {}, LogLevel.DEBUG); + getValue(log)("scrolling to bottom due to increased size", {}, LogLevel.DEBUG); scrollToBottom("auto"); } }); @@ -49535,10 +50713,12 @@ var sizeRangeSystem = system( [0, 0] ); return { + // input listBoundary, overscan, topListHeight, increaseViewportBy, + // output visibleRange }; }, @@ -49572,7 +50752,7 @@ function transposeItems(items, sizes, firstItemIndex) { return []; } if (!hasGroups(sizes)) { - return items.map((item) => __spreadProps(__spreadValues({}, item), { index: item.index + firstItemIndex, originalIndex: item.index })); + return items.map((item) => ({ ...item, index: item.index + firstItemIndex, originalIndex: item.index })); } const startIndex = items[0].index; const endIndex = items[items.length - 1].index; @@ -49597,12 +50777,13 @@ function transposeItems(items, sizes, firstItemIndex) { groupIndex: currentGroupIndex }; } - transposedItems.push(__spreadProps(__spreadValues({}, transposedItem), { + transposedItems.push({ + ...transposedItem, size: item.size, offset: item.offset, originalIndex: item.index, data: item.data - })); + }); } return transposedItems; } @@ -49703,11 +50884,11 @@ var listStateSystem = system( const { sizeTree, offsetTree } = sizesValue; const initialItemCountValue = getValue(initialItemCount); if (totalCount2 === 0) { - return __spreadProps(__spreadValues({}, EMPTY_LIST_STATE), { totalCount: totalCount2 }); + return { ...EMPTY_LIST_STATE, totalCount: totalCount2 }; } if (startOffset === 0 && endOffset === 0) { if (initialItemCountValue === 0) { - return __spreadProps(__spreadValues({}, EMPTY_LIST_STATE), { totalCount: totalCount2 }); + return { ...EMPTY_LIST_STATE, totalCount: totalCount2 }; } else { return buildListStateFromItemCount(initialItemCountValue, initialTopMostItemIndex2, sizes2, firstItemIndex2, gap2, data2 || []); } @@ -49778,6 +50959,7 @@ var listStateSystem = system( return buildListState(items, topItems, totalCount2, gap2, sizesValue, firstItemIndex2); } ), + //@ts-expect-error filter needs to be fixed filter((value) => value !== null), distinctUntilChanged() ), @@ -49856,7 +51038,7 @@ var listStateSystem = system( distinctUntilChanged(rangeComparator) ) ); - return __spreadValues({ listState, topItemsIndexes, endReached, startReached, rangeChanged, itemsRendered, initialItemCount }, stateFlags); + return { listState, topItemsIndexes, endReached, startReached, rangeChanged, itemsRendered, initialItemCount, ...stateFlags }; }, tup( sizeSystem, @@ -49975,7 +51157,7 @@ var upwardScrollFixSystem = system( { isScrolling, isAtBottom, scrollDirection, lastJumpDueToItemResize }, { listState }, { beforeUnshiftWith, shiftWithOffset, sizes, gap }, - { log: log2 }, + { log }, { recalcInProgress } ]) => { const deviationOffset = streamFromEmitter( @@ -50002,12 +51184,12 @@ var upwardScrollFixSystem = system( [0, [], 0, 0] ), filter(([amount]) => amount !== 0), - withLatestFrom(scrollTop, scrollDirection, scrollingInProgress, isAtBottom, log2, recalcInProgress), + withLatestFrom(scrollTop, scrollDirection, scrollingInProgress, isAtBottom, log, recalcInProgress), filter(([, scrollTop2, scrollDirection2, scrollingInProgress2, , , recalcInProgress2]) => { return !recalcInProgress2 && !scrollingInProgress2 && scrollTop2 !== 0 && scrollDirection2 === UP; }), - map(([[amount], , , , , log22]) => { - log22("Upward scrolling compensation", { amount }, LogLevel.DEBUG); + map(([[amount], , , , , log2]) => { + log2("Upward scrolling compensation", { amount }, LogLevel.DEBUG); return amount; }) ) @@ -50168,34 +51350,37 @@ var windowScrollerSystem = system(([{ scrollTo, scrollContainerState }]) => { scrollTo, withLatestFrom(windowViewportRect), map(([scrollTo2, { offsetTop }]) => { - return __spreadProps(__spreadValues({}, scrollTo2), { + return { + ...scrollTo2, top: scrollTo2.top + offsetTop - }); + }; }) ), windowScrollTo ); return { + // config useWindowScroll, customScrollParent, + // input windowScrollContainerState, windowViewportRect, + // signals windowScrollTo }; }, tup(domIOSystem)); -var defaultCalculateViewLocation = (_a2) => { - var { - itemTop: itemTop2, - itemBottom, - viewportTop, - viewportBottom, - locationParams: _b - } = _a2, _c = _b, { behavior, align } = _c, rest = __objRest(_c, ["behavior", "align"]); +var defaultCalculateViewLocation = ({ + itemTop: itemTop2, + itemBottom, + viewportTop, + viewportBottom, + locationParams: { behavior, align, ...rest } +}) => { if (itemTop2 < viewportTop) { - return __spreadProps(__spreadValues({}, rest), { behavior, align: align != null ? align : "start" }); + return { ...rest, behavior, align: align != null ? align : "start" }; } if (itemBottom > viewportBottom) { - return __spreadProps(__spreadValues({}, rest), { behavior, align: align != null ? align : "end" }); + return { ...rest, behavior, align: align != null ? align : "end" }; } return null; }; @@ -50212,7 +51397,7 @@ var scrollIntoViewSystem = system( withLatestFrom(sizes, viewportHeight, totalCount, headerHeight, fixedHeaderHeight, fixedFooterHeight, scrollTop), withLatestFrom(gap), map(([[viewLocation, sizes2, viewportHeight2, totalCount2, headerHeight2, fixedHeaderHeight2, fixedFooterHeight2, scrollTop2], gap2]) => { - const _a2 = viewLocation, { done, behavior, align, calculateViewLocation = defaultCalculateViewLocation } = _a2, rest = __objRest(_a2, ["done", "behavior", "align", "calculateViewLocation"]); + const { done, behavior, align, calculateViewLocation = defaultCalculateViewLocation, ...rest } = viewLocation; const actualIndex = originalIndexFromLocation(viewLocation, sizes2, totalCount2 - 1); const itemTop2 = offsetOf(actualIndex, sizes2.offsetTree, gap2) + headerHeight2 + fixedHeaderHeight2; const itemBottom = itemTop2 + findMaxKeyValue(sizes2.sizeTree, actualIndex)[1]; @@ -50223,13 +51408,15 @@ var scrollIntoViewSystem = system( itemBottom, viewportTop, viewportBottom, - locationParams: __spreadValues({ behavior, align }, rest) + locationParams: { behavior, align, ...rest } }); if (location) { done && handleNext( pipe( scrollingInProgress, filter((value) => value === false), + // skips the initial publish of false, and the cleanup call. + // but if scrollingInProgress is true, we skip the initial publish. skip(getValue(scrollingInProgress) ? 1 : 2) ), done @@ -50310,7 +51497,18 @@ var featureGroup1System = system( scrollIntoView, logger ]) => { - return __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({}, sizeRange), initialItemCount), propsReady), scrollSeek), totalListHeight), initialScrollTopSystem2), alignToBottom), windowScroller), scrollIntoView), logger); + return { + ...sizeRange, + ...initialItemCount, + ...propsReady, + ...scrollSeek, + ...totalListHeight, + ...initialScrollTopSystem2, + ...alignToBottom, + ...windowScroller, + ...scrollIntoView, + ...logger + }; }, tup( sizeRangeSystem, @@ -50326,35 +51524,32 @@ var featureGroup1System = system( ) ); var listSystem = system( - (_a2) => { - var [ - { - totalCount, - sizeRanges, - fixedItemSize, - defaultItemSize, - trackItemSizes, - itemSize, - data, - firstItemIndex, - groupIndices, - statefulTotalCount, - gap, - sizes - }, - { initialTopMostItemIndex, scrolledToInitialItem }, - domIO, - stateLoad, - followOutput, - _b, - ..._c - ] = _a2, _d = _b, { listState, topItemsIndexes } = _d, flags = __objRest(_d, ["listState", "topItemsIndexes"]), [ - { scrollToIndex }, - _7, - { topItemCount }, - { groupCounts }, - featureGroup1 - ] = _c; + ([ + { + totalCount, + sizeRanges, + fixedItemSize, + defaultItemSize, + trackItemSizes, + itemSize, + data, + firstItemIndex, + groupIndices, + statefulTotalCount, + gap, + sizes + }, + { initialTopMostItemIndex, scrolledToInitialItem }, + domIO, + stateLoad, + followOutput, + { listState, topItemsIndexes, ...flags }, + { scrollToIndex }, + _7, + { topItemCount }, + { groupCounts }, + featureGroup1 + ]) => { connect(flags.rangeChanged, featureGroup1.scrollSeekRangeChanged); connect( pipe( @@ -50363,7 +51558,8 @@ var listSystem = system( ), domIO.viewportHeight ); - return __spreadValues(__spreadProps(__spreadValues(__spreadValues(__spreadValues(__spreadProps(__spreadValues({ + return { + // input totalCount, data, firstItemIndex, @@ -50375,17 +51571,23 @@ var listSystem = system( groupCounts, fixedItemHeight: fixedItemSize, defaultItemHeight: defaultItemSize, - gap - }, followOutput), { + gap, + ...followOutput, + // output statefulTotalCount, listState, scrollToIndex, trackItemSizes, itemSize, - groupIndices - }), flags), featureGroup1), domIO), { - sizes - }), stateLoad); + groupIndices, + // exported from stateFlagsSystem + ...flags, + // the bag of IO from featureGroup1System + ...featureGroup1, + ...domIO, + sizes, + ...stateLoad + }; }, tup( sizeSystem, @@ -50412,8 +51614,8 @@ var positionStickyCssValue = simpleMemoize(() => { return node.style.position === WEBKIT_STICKY ? WEBKIT_STICKY : STICKY; }); function useWindowViewportRectRef(callback, customScrollParent) { - const viewportInfo = import_react6.default.useRef(null); - const calculateInfo = import_react6.default.useCallback( + const viewportInfo = import_react5.default.useRef(null); + const calculateInfo = import_react5.default.useCallback( (element) => { if (element === null || !element.offsetParent) { return; @@ -50440,10 +51642,10 @@ function useWindowViewportRectRef(callback, customScrollParent) { [callback, customScrollParent] ); const { callbackRef, ref } = useSizeWithElRef(calculateInfo); - const scrollAndResizeEventHandler = import_react6.default.useCallback(() => { + const scrollAndResizeEventHandler = import_react5.default.useCallback(() => { calculateInfo(ref.current); }, [calculateInfo, ref]); - import_react6.default.useEffect(() => { + import_react5.default.useEffect(() => { if (customScrollParent) { customScrollParent.addEventListener("scroll", scrollAndResizeEventHandler); const observer = new ResizeObserver(scrollAndResizeEventHandler); @@ -50463,8 +51665,8 @@ function useWindowViewportRectRef(callback, customScrollParent) { }, [scrollAndResizeEventHandler, customScrollParent]); return callbackRef; } -var VirtuosoMockContext = import_react6.default.createContext(void 0); -var VirtuosoGridMockContext = import_react6.default.createContext(void 0); +var VirtuosoMockContext = import_react5.default.createContext(void 0); +var VirtuosoGridMockContext = import_react5.default.createContext(void 0); function identity(value) { return value; } @@ -50506,12 +51708,12 @@ var listComponentPropsSystem = /* @__PURE__ */ system(() => { }; }); var combinedSystem$2 = /* @__PURE__ */ system(([listSystem2, propsSystem]) => { - return __spreadValues(__spreadValues({}, listSystem2), propsSystem); + return { ...listSystem2, ...propsSystem }; }, tup(listSystem, listComponentPropsSystem)); -var DefaultScrollSeekPlaceholder$1 = ({ height }) => /* @__PURE__ */ import_react6.default.createElement("div", { style: { height } }); +var DefaultScrollSeekPlaceholder$1 = ({ height }) => /* @__PURE__ */ import_react5.default.createElement("div", { style: { height } }); var GROUP_STYLE = { position: positionStickyCssValue(), zIndex: 1, overflowAnchor: "none" }; var ITEM_STYLE$1 = { overflowAnchor: "none" }; -var Items$1 = /* @__PURE__ */ import_react6.default.memo(function VirtuosoItems({ showTopList = false }) { +var Items$1 = /* @__PURE__ */ import_react5.default.memo(function VirtuosoItems({ showTopList = false }) { const listState = useEmitterValue$2("listState"); const sizeRanges = usePublisher$2("sizeRanges"); const useWindowScroll = useEmitterValue$2("useWindowScroll"); @@ -50524,18 +51726,18 @@ var Items$1 = /* @__PURE__ */ import_react6.default.memo(function VirtuosoItems( const groupContent = useEmitterValue$2("groupContent"); const trackItemSizes = useEmitterValue$2("trackItemSizes"); const itemSize = useEmitterValue$2("itemSize"); - const log2 = useEmitterValue$2("log"); + const log = useEmitterValue$2("log"); const listGap = usePublisher$2("gap"); const { callbackRef } = useChangedListContentsSizes( sizeRanges, itemSize, trackItemSizes, showTopList ? noop : scrollContainerStateCallback, - log2, + log, listGap, customScrollParent ); - const [deviation, setDeviation] = import_react6.default.useState(0); + const [deviation, setDeviation] = import_react5.default.useState(0); useEmitter$2("deviation", (value) => { if (deviation !== value) { setDeviation(value); @@ -50551,56 +51753,63 @@ var Items$1 = /* @__PURE__ */ import_react6.default.memo(function VirtuosoItems( const hasGroups2 = useEmitterValue$2("groupIndices").length > 0; const paddingTopAddition = useEmitterValue$2("paddingTopAddition"); const scrolledToInitialItem = useEmitterValue$2("scrolledToInitialItem"); - const containerStyle = showTopList ? {} : __spreadValues({ + const containerStyle = showTopList ? {} : { boxSizing: "border-box", paddingTop: listState.offsetTop + paddingTopAddition, paddingBottom: listState.offsetBottom, - marginTop: deviation - }, scrolledToInitialItem ? {} : { visibility: "hidden" }); + marginTop: deviation, + ...scrolledToInitialItem ? {} : { visibility: "hidden" } + }; if (!showTopList && listState.totalCount === 0 && EmptyPlaceholder) { - return import_react6.default.createElement(EmptyPlaceholder, contextPropIfNotDomElement(EmptyPlaceholder, context)); + return import_react5.default.createElement(EmptyPlaceholder, contextPropIfNotDomElement(EmptyPlaceholder, context)); } - return import_react6.default.createElement( + return import_react5.default.createElement( ListComponent, - __spreadProps(__spreadValues({}, contextPropIfNotDomElement(ListComponent, context)), { + { + ...contextPropIfNotDomElement(ListComponent, context), ref: callbackRef, style: containerStyle, "data-test-id": showTopList ? "virtuoso-top-item-list" : "virtuoso-item-list" - }), + }, (showTopList ? listState.topItems : listState.items).map((item) => { const index = item.originalIndex; const key = computeItemKey(index + listState.firstItemIndex, item.data, context); if (isSeeking) { - return import_react6.default.createElement(ScrollSeekPlaceholder, __spreadValues(__spreadProps(__spreadValues({}, contextPropIfNotDomElement(ScrollSeekPlaceholder, context)), { + return import_react5.default.createElement(ScrollSeekPlaceholder, { + ...contextPropIfNotDomElement(ScrollSeekPlaceholder, context), key, index: item.index, height: item.size, - type: item.type || "item" - }), item.type === "group" ? {} : { groupIndex: item.groupIndex })); + type: item.type || "item", + ...item.type === "group" ? {} : { groupIndex: item.groupIndex } + }); } if (item.type === "group") { - return import_react6.default.createElement( + return import_react5.default.createElement( GroupComponent, - __spreadProps(__spreadValues({}, contextPropIfNotDomElement(GroupComponent, context)), { + { + ...contextPropIfNotDomElement(GroupComponent, context), key, "data-index": index, "data-known-size": item.size, "data-item-index": item.index, style: GROUP_STYLE - }), + }, groupContent(item.index, context) ); } else { - return import_react6.default.createElement( + return import_react5.default.createElement( ItemComponent, - __spreadProps(__spreadValues(__spreadValues({}, contextPropIfNotDomElement(ItemComponent, context)), itemPropIfNotDomElement(ItemComponent, item.data)), { + { + ...contextPropIfNotDomElement(ItemComponent, context), + ...itemPropIfNotDomElement(ItemComponent, item.data), key, "data-index": index, "data-known-size": item.size, "data-item-index": item.index, "data-item-group-index": item.groupIndex, style: ITEM_STYLE$1 - }), + }, hasGroups2 ? itemContent(item.index, item.groupIndex, item.data, context) : itemContent(item.index, item.data, context) ); } @@ -50635,25 +51844,24 @@ function contextPropIfNotDomElement(element, context) { function itemPropIfNotDomElement(element, item) { return { item: typeof element === "string" ? void 0 : item }; } -var Header$1 = /* @__PURE__ */ import_react6.default.memo(function VirtuosoHeader() { +var Header$1 = /* @__PURE__ */ import_react5.default.memo(function VirtuosoHeader() { const Header2 = useEmitterValue$2("HeaderComponent"); const headerHeight = usePublisher$2("headerHeight"); const headerFooterTag = useEmitterValue$2("headerFooterTag"); const ref = useSize((el) => headerHeight(correctItemSize(el, "height"))); const context = useEmitterValue$2("context"); - return Header2 ? import_react6.default.createElement(headerFooterTag, { ref }, import_react6.default.createElement(Header2, contextPropIfNotDomElement(Header2, context))) : null; + return Header2 ? import_react5.default.createElement(headerFooterTag, { ref }, import_react5.default.createElement(Header2, contextPropIfNotDomElement(Header2, context))) : null; }); -var Footer$1 = /* @__PURE__ */ import_react6.default.memo(function VirtuosoFooter() { +var Footer$1 = /* @__PURE__ */ import_react5.default.memo(function VirtuosoFooter() { const Footer2 = useEmitterValue$2("FooterComponent"); const footerHeight = usePublisher$2("footerHeight"); const headerFooterTag = useEmitterValue$2("headerFooterTag"); const ref = useSize((el) => footerHeight(correctItemSize(el, "height"))); const context = useEmitterValue$2("context"); - return Footer2 ? import_react6.default.createElement(headerFooterTag, { ref }, import_react6.default.createElement(Footer2, contextPropIfNotDomElement(Footer2, context))) : null; + return Footer2 ? import_react5.default.createElement(headerFooterTag, { ref }, import_react5.default.createElement(Footer2, contextPropIfNotDomElement(Footer2, context))) : null; }); function buildScroller({ usePublisher: usePublisher2, useEmitter: useEmitter2, useEmitterValue: useEmitterValue2 }) { - const Scroller2 = import_react6.default.memo(function VirtuosoScroller(_a2) { - var _b = _a2, { style, children } = _b, props = __objRest(_b, ["style", "children"]); + const Scroller2 = import_react5.default.memo(function VirtuosoScroller({ style, children, ...props }) { const scrollContainerStateCallback = usePublisher2("scrollContainerState"); const ScrollerComponent = useEmitterValue2("ScrollerComponent"); const smoothScrollTargetReached = usePublisher2("smoothScrollTargetReached"); @@ -50667,23 +51875,24 @@ function buildScroller({ usePublisher: usePublisher2, useEmitter: useEmitter2, u ); useEmitter2("scrollTo", scrollToCallback); useEmitter2("scrollBy", scrollByCallback); - return import_react6.default.createElement( + return import_react5.default.createElement( ScrollerComponent, - __spreadValues(__spreadValues({ + { ref: scrollerRef, - style: __spreadValues(__spreadValues({}, scrollerStyle), style), + style: { ...scrollerStyle, ...style }, "data-test-id": "virtuoso-scroller", "data-virtuoso-scroller": true, - tabIndex: 0 - }, props), contextPropIfNotDomElement(ScrollerComponent, context)), + tabIndex: 0, + ...props, + ...contextPropIfNotDomElement(ScrollerComponent, context) + }, children ); }); return Scroller2; } function buildWindowScroller({ usePublisher: usePublisher2, useEmitter: useEmitter2, useEmitterValue: useEmitterValue2 }) { - const Scroller2 = import_react6.default.memo(function VirtuosoWindowScroller(_a2) { - var _b = _a2, { style, children } = _b, props = __objRest(_b, ["style", "children"]); + const Scroller2 = import_react5.default.memo(function VirtuosoWindowScroller({ style, children, ...props }) { const scrollContainerStateCallback = usePublisher2("windowScrollContainerState"); const ScrollerComponent = useEmitterValue2("ScrollerComponent"); const smoothScrollTargetReached = usePublisher2("smoothScrollTargetReached"); @@ -50706,58 +51915,60 @@ function buildWindowScroller({ usePublisher: usePublisher2, useEmitter: useEmitt }, [scrollerRef, customScrollParent]); useEmitter2("windowScrollTo", scrollToCallback); useEmitter2("scrollBy", scrollByCallback); - return import_react6.default.createElement( + return import_react5.default.createElement( ScrollerComponent, - __spreadValues(__spreadValues({ - style: __spreadValues(__spreadValues({ position: "relative" }, style), totalListHeight !== 0 ? { height: totalListHeight + deviation } : {}), - "data-virtuoso-scroller": true - }, props), contextPropIfNotDomElement(ScrollerComponent, context)), + { + style: { position: "relative", ...style, ...totalListHeight !== 0 ? { height: totalListHeight + deviation } : {} }, + "data-virtuoso-scroller": true, + ...props, + ...contextPropIfNotDomElement(ScrollerComponent, context) + }, children ); }); return Scroller2; } var Viewport$2 = ({ children }) => { - const ctx = import_react6.default.useContext(VirtuosoMockContext); + const ctx = import_react5.default.useContext(VirtuosoMockContext); const viewportHeight = usePublisher$2("viewportHeight"); const fixedItemHeight = usePublisher$2("fixedItemHeight"); const viewportRef = useSize(compose2(viewportHeight, (el) => correctItemSize(el, "height"))); - import_react6.default.useEffect(() => { + import_react5.default.useEffect(() => { if (ctx) { viewportHeight(ctx.viewportHeight); fixedItemHeight(ctx.itemHeight); } }, [ctx, viewportHeight, fixedItemHeight]); - return /* @__PURE__ */ import_react6.default.createElement("div", { style: viewportStyle, ref: viewportRef, "data-viewport-type": "element" }, children); + return /* @__PURE__ */ import_react5.default.createElement("div", { style: viewportStyle, ref: viewportRef, "data-viewport-type": "element" }, children); }; var WindowViewport$2 = ({ children }) => { - const ctx = import_react6.default.useContext(VirtuosoMockContext); + const ctx = import_react5.default.useContext(VirtuosoMockContext); const windowViewportRect = usePublisher$2("windowViewportRect"); const fixedItemHeight = usePublisher$2("fixedItemHeight"); const customScrollParent = useEmitterValue$2("customScrollParent"); const viewportRef = useWindowViewportRectRef(windowViewportRect, customScrollParent); - import_react6.default.useEffect(() => { + import_react5.default.useEffect(() => { if (ctx) { fixedItemHeight(ctx.itemHeight); windowViewportRect({ offsetTop: 0, visibleHeight: ctx.viewportHeight, visibleWidth: 100 }); } }, [ctx, windowViewportRect, fixedItemHeight]); - return /* @__PURE__ */ import_react6.default.createElement("div", { ref: viewportRef, style: viewportStyle, "data-viewport-type": "window" }, children); + return /* @__PURE__ */ import_react5.default.createElement("div", { ref: viewportRef, style: viewportStyle, "data-viewport-type": "window" }, children); }; var TopItemListContainer = ({ children }) => { - const TopItemList = useEmitterValue$2("TopItemListComponent"); + const TopItemList = useEmitterValue$2("TopItemListComponent") || "div"; const headerHeight = useEmitterValue$2("headerHeight"); - const style = __spreadProps(__spreadValues({}, topItemListStyle), { marginTop: `${headerHeight}px` }); + const style = { ...topItemListStyle, marginTop: `${headerHeight}px` }; const context = useEmitterValue$2("context"); - return import_react6.default.createElement(TopItemList || "div", { style, context }, children); + return import_react5.default.createElement(TopItemList, { style, ...contextPropIfNotDomElement(TopItemList, context) }, children); }; -var ListRoot = /* @__PURE__ */ import_react6.default.memo(function VirtuosoRoot(props) { +var ListRoot = /* @__PURE__ */ import_react5.default.memo(function VirtuosoRoot(props) { const useWindowScroll = useEmitterValue$2("useWindowScroll"); const showTopList = useEmitterValue$2("topItemsIndexes").length > 0; const customScrollParent = useEmitterValue$2("customScrollParent"); const TheScroller = customScrollParent || useWindowScroll ? WindowScroller$2 : Scroller$2; const TheViewport = customScrollParent || useWindowScroll ? WindowViewport$2 : Viewport$2; - return /* @__PURE__ */ import_react6.default.createElement(TheScroller, __spreadValues({}, props), showTopList && /* @__PURE__ */ import_react6.default.createElement(TopItemListContainer, null, /* @__PURE__ */ import_react6.default.createElement(Items$1, { showTopList: true })), /* @__PURE__ */ import_react6.default.createElement(TheViewport, null, /* @__PURE__ */ import_react6.default.createElement(Header$1, null), /* @__PURE__ */ import_react6.default.createElement(Items$1, null), /* @__PURE__ */ import_react6.default.createElement(Footer$1, null))); + return /* @__PURE__ */ import_react5.default.createElement(TheScroller, { ...props }, showTopList && /* @__PURE__ */ import_react5.default.createElement(TopItemListContainer, null, /* @__PURE__ */ import_react5.default.createElement(Items$1, { showTopList: true })), /* @__PURE__ */ import_react5.default.createElement(TheViewport, null, /* @__PURE__ */ import_react5.default.createElement(Header$1, null), /* @__PURE__ */ import_react5.default.createElement(Items$1, null), /* @__PURE__ */ import_react5.default.createElement(Footer$1, null))); }); var { Component: List, @@ -50843,9 +52054,10 @@ var PROBE_GRID_STATE = { }; var { round, ceil, floor, min, max } = Math; function buildProbeGridState(items) { - return __spreadProps(__spreadValues({}, PROBE_GRID_STATE), { + return { + ...PROBE_GRID_STATE, items - }); + }; } function buildItems(startIndex, endIndex, data) { return Array.from({ length: endIndex - startIndex + 1 }).map((_7, i2) => { @@ -50867,7 +52079,7 @@ var gridSystem = /* @__PURE__ */ system( scrollSeek, { propsReady, didMount }, { windowViewportRect, useWindowScroll, customScrollParent, windowScrollContainerState, windowScrollTo }, - log2 + log ]) => { const totalCount = statefulStream(0); const initialItemCount = statefulStream(0); @@ -51083,6 +52295,7 @@ var gridSystem = /* @__PURE__ */ system( filter(({ items }) => { return items.length > 0 && items[0].index === 0; }), + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument mapTo(0), distinctUntilChanged() ) @@ -51145,7 +52358,8 @@ var gridSystem = /* @__PURE__ */ system( ), viewportDimensions ); - return __spreadValues(__spreadProps(__spreadValues(__spreadProps(__spreadValues({ + return { + // input data, totalCount, viewportDimensions, @@ -51168,19 +52382,21 @@ var gridSystem = /* @__PURE__ */ system( headerHeight, initialItemCount, gap, - restoreStateFrom - }, scrollSeek), { + restoreStateFrom, + ...scrollSeek, initialTopMostItemIndex, + // output gridState, - totalListHeight - }), stateFlags), { + totalListHeight, + ...stateFlags, startReached, endReached, rangeChanged, stateChanged, propsReady, - stateRestoreInProgress - }), log2); + stateRestoreInProgress, + ...log + }; }, tup(sizeRangeSystem, domIOSystem, stateFlagsSystem, scrollSeekSystem, propsReadySystem, windowScrollerSystem, loggerSystem) ); @@ -51239,9 +52455,9 @@ var gridComponentPropsSystem = /* @__PURE__ */ system(() => { }; }); var combinedSystem$1 = /* @__PURE__ */ system(([gridSystem2, gridComponentPropsSystem2]) => { - return __spreadValues(__spreadValues({}, gridSystem2), gridComponentPropsSystem2); + return { ...gridSystem2, ...gridComponentPropsSystem2 }; }, tup(gridSystem, gridComponentPropsSystem)); -var GridItems = /* @__PURE__ */ import_react6.default.memo(function GridItems2() { +var GridItems = /* @__PURE__ */ import_react5.default.memo(function GridItems2() { const gridState = useEmitterValue$1("gridState"); const listClassName = useEmitterValue$1("listClassName"); const itemClassName = useEmitterValue$1("itemClassName"); @@ -51255,7 +52471,7 @@ var GridItems = /* @__PURE__ */ import_react6.default.memo(function GridItems2() const context = useEmitterValue$1("context"); const itemDimensions = usePublisher$1("itemDimensions"); const gridGap = usePublisher$1("gap"); - const log2 = useEmitterValue$1("log"); + const log = useEmitterValue$1("log"); const stateRestoreInProgress = useEmitterValue$1("stateRestoreInProgress"); const listRef = useSize((el) => { const scrollHeight = el.parentElement.parentElement.scrollHeight; @@ -51266,90 +52482,89 @@ var GridItems = /* @__PURE__ */ import_react6.default.memo(function GridItems2() itemDimensions({ width, height }); } gridGap({ - row: resolveGapValue("row-gap", getComputedStyle(el).rowGap, log2), - column: resolveGapValue("column-gap", getComputedStyle(el).columnGap, log2) + row: resolveGapValue("row-gap", getComputedStyle(el).rowGap, log), + column: resolveGapValue("column-gap", getComputedStyle(el).columnGap, log) }); }); if (stateRestoreInProgress) { return null; } - return import_react6.default.createElement( + return import_react5.default.createElement( ListComponent, - __spreadProps(__spreadValues({ + { ref: listRef, - className: listClassName - }, contextPropIfNotDomElement(ListComponent, context)), { + className: listClassName, + ...contextPropIfNotDomElement(ListComponent, context), style: { paddingTop: gridState.offsetTop, paddingBottom: gridState.offsetBottom }, "data-test-id": "virtuoso-item-list" - }), + }, gridState.items.map((item) => { const key = computeItemKey(item.index, item.data, context); - return isSeeking ? import_react6.default.createElement(ScrollSeekPlaceholder, __spreadProps(__spreadValues({ - key - }, contextPropIfNotDomElement(ScrollSeekPlaceholder, context)), { + return isSeeking ? import_react5.default.createElement(ScrollSeekPlaceholder, { + key, + ...contextPropIfNotDomElement(ScrollSeekPlaceholder, context), index: item.index, height: gridState.itemHeight, width: gridState.itemWidth - })) : import_react6.default.createElement( + }) : import_react5.default.createElement( ItemComponent, - __spreadProps(__spreadValues({}, contextPropIfNotDomElement(ItemComponent, context)), { className: itemClassName, "data-index": item.index, key }), + { ...contextPropIfNotDomElement(ItemComponent, context), className: itemClassName, "data-index": item.index, key }, itemContent(item.index, item.data, context) ); }) ); }); -var Header = import_react6.default.memo(function VirtuosoHeader2() { +var Header = import_react5.default.memo(function VirtuosoHeader2() { const Header2 = useEmitterValue$1("HeaderComponent"); const headerHeight = usePublisher$1("headerHeight"); const headerFooterTag = useEmitterValue$1("headerFooterTag"); const ref = useSize((el) => headerHeight(correctItemSize(el, "height"))); const context = useEmitterValue$1("context"); - return Header2 ? import_react6.default.createElement(headerFooterTag, { ref }, import_react6.default.createElement(Header2, contextPropIfNotDomElement(Header2, context))) : null; + return Header2 ? import_react5.default.createElement(headerFooterTag, { ref }, import_react5.default.createElement(Header2, contextPropIfNotDomElement(Header2, context))) : null; }); -var Footer = import_react6.default.memo(function VirtuosoGridFooter() { +var Footer = import_react5.default.memo(function VirtuosoGridFooter() { const Footer2 = useEmitterValue$1("FooterComponent"); const footerHeight = usePublisher$1("footerHeight"); const headerFooterTag = useEmitterValue$1("headerFooterTag"); const ref = useSize((el) => footerHeight(correctItemSize(el, "height"))); const context = useEmitterValue$1("context"); - return Footer2 ? import_react6.default.createElement(headerFooterTag, { ref }, import_react6.default.createElement(Footer2, contextPropIfNotDomElement(Footer2, context))) : null; + return Footer2 ? import_react5.default.createElement(headerFooterTag, { ref }, import_react5.default.createElement(Footer2, contextPropIfNotDomElement(Footer2, context))) : null; }); var Viewport$1 = ({ children }) => { - const ctx = import_react6.default.useContext(VirtuosoGridMockContext); + const ctx = import_react5.default.useContext(VirtuosoGridMockContext); const itemDimensions = usePublisher$1("itemDimensions"); const viewportDimensions = usePublisher$1("viewportDimensions"); const viewportRef = useSize((el) => { viewportDimensions(el.getBoundingClientRect()); }); - import_react6.default.useEffect(() => { + import_react5.default.useEffect(() => { if (ctx) { viewportDimensions({ height: ctx.viewportHeight, width: ctx.viewportWidth }); itemDimensions({ height: ctx.itemHeight, width: ctx.itemWidth }); } }, [ctx, viewportDimensions, itemDimensions]); - return /* @__PURE__ */ import_react6.default.createElement("div", { style: viewportStyle, ref: viewportRef }, children); + return /* @__PURE__ */ import_react5.default.createElement("div", { style: viewportStyle, ref: viewportRef }, children); }; var WindowViewport$1 = ({ children }) => { - const ctx = import_react6.default.useContext(VirtuosoGridMockContext); + const ctx = import_react5.default.useContext(VirtuosoGridMockContext); const windowViewportRect = usePublisher$1("windowViewportRect"); const itemDimensions = usePublisher$1("itemDimensions"); const customScrollParent = useEmitterValue$1("customScrollParent"); const viewportRef = useWindowViewportRectRef(windowViewportRect, customScrollParent); - import_react6.default.useEffect(() => { + import_react5.default.useEffect(() => { if (ctx) { itemDimensions({ height: ctx.itemHeight, width: ctx.itemWidth }); windowViewportRect({ offsetTop: 0, visibleHeight: ctx.viewportHeight, visibleWidth: ctx.viewportWidth }); } }, [ctx, windowViewportRect, itemDimensions]); - return /* @__PURE__ */ import_react6.default.createElement("div", { ref: viewportRef, style: viewportStyle }, children); + return /* @__PURE__ */ import_react5.default.createElement("div", { ref: viewportRef, style: viewportStyle }, children); }; -var GridRoot = /* @__PURE__ */ import_react6.default.memo(function GridRoot2(_a2) { - var props = __objRest(_a2, []); +var GridRoot = /* @__PURE__ */ import_react5.default.memo(function GridRoot2({ ...props }) { const useWindowScroll = useEmitterValue$1("useWindowScroll"); const customScrollParent = useEmitterValue$1("customScrollParent"); const TheScroller = customScrollParent || useWindowScroll ? WindowScroller$1 : Scroller$1; const TheViewport = customScrollParent || useWindowScroll ? WindowViewport$1 : Viewport$1; - return /* @__PURE__ */ import_react6.default.createElement(TheScroller, __spreadValues({}, props), /* @__PURE__ */ import_react6.default.createElement(TheViewport, null, /* @__PURE__ */ import_react6.default.createElement(Header, null), /* @__PURE__ */ import_react6.default.createElement(GridItems, null), /* @__PURE__ */ import_react6.default.createElement(Footer, null))); + return /* @__PURE__ */ import_react5.default.createElement(TheScroller, { ...props }, /* @__PURE__ */ import_react5.default.createElement(TheViewport, null, /* @__PURE__ */ import_react5.default.createElement(Header, null), /* @__PURE__ */ import_react5.default.createElement(GridItems, null), /* @__PURE__ */ import_react5.default.createElement(Footer, null))); }); var { Component: Grid, @@ -51398,9 +52613,9 @@ var { ); var Scroller$1 = /* @__PURE__ */ buildScroller({ usePublisher: usePublisher$1, useEmitterValue: useEmitterValue$1, useEmitter: useEmitter$1 }); var WindowScroller$1 = /* @__PURE__ */ buildWindowScroller({ usePublisher: usePublisher$1, useEmitterValue: useEmitterValue$1, useEmitter: useEmitter$1 }); -function resolveGapValue(property, value, log2) { +function resolveGapValue(property, value, log) { if (value !== "normal" && !(value == null ? void 0 : value.endsWith("px"))) { - log2(`${property} was not resolved to pixel value correctly`, value, LogLevel.WARN); + log(`${property} was not resolved to pixel value correctly`, value, LogLevel.WARN); } if (value === "normal") { return 0; @@ -51408,7 +52623,7 @@ function resolveGapValue(property, value, log2) { return parseInt(value != null ? value : "0", 10); } var tableComponentPropsSystem = /* @__PURE__ */ system(() => { - const itemContent = statefulStream((index) => /* @__PURE__ */ import_react6.default.createElement("td", null, "Item $", index)); + const itemContent = statefulStream((index) => /* @__PURE__ */ import_react5.default.createElement("td", null, "Item $", index)); const context = statefulStream(null); const fixedHeaderContent = statefulStream(null); const fixedFooterContent = statefulStream(null); @@ -51445,12 +52660,12 @@ var tableComponentPropsSystem = /* @__PURE__ */ system(() => { }; }); var combinedSystem = /* @__PURE__ */ system(([listSystem2, propsSystem]) => { - return __spreadValues(__spreadValues({}, listSystem2), propsSystem); + return { ...listSystem2, ...propsSystem }; }, tup(listSystem, tableComponentPropsSystem)); -var DefaultScrollSeekPlaceholder = ({ height }) => /* @__PURE__ */ import_react6.default.createElement("tr", null, /* @__PURE__ */ import_react6.default.createElement("td", { style: { height } })); -var DefaultFillerRow = ({ height }) => /* @__PURE__ */ import_react6.default.createElement("tr", null, /* @__PURE__ */ import_react6.default.createElement("td", { style: { height, padding: 0, border: 0 } })); +var DefaultScrollSeekPlaceholder = ({ height }) => /* @__PURE__ */ import_react5.default.createElement("tr", null, /* @__PURE__ */ import_react5.default.createElement("td", { style: { height } })); +var DefaultFillerRow = ({ height }) => /* @__PURE__ */ import_react5.default.createElement("tr", null, /* @__PURE__ */ import_react5.default.createElement("td", { style: { height, padding: 0, border: 0 } })); var ITEM_STYLE = { overflowAnchor: "none" }; -var Items = /* @__PURE__ */ import_react6.default.memo(function VirtuosoItems2() { +var Items = /* @__PURE__ */ import_react5.default.memo(function VirtuosoItems2() { const listState = useEmitterValue("listState"); const sizeRanges = usePublisher("sizeRanges"); const useWindowScroll = useEmitterValue("useWindowScroll"); @@ -51461,17 +52676,17 @@ var Items = /* @__PURE__ */ import_react6.default.memo(function VirtuosoItems2() const itemContent = useEmitterValue("itemContent"); const trackItemSizes = useEmitterValue("trackItemSizes"); const itemSize = useEmitterValue("itemSize"); - const log2 = useEmitterValue("log"); + const log = useEmitterValue("log"); const { callbackRef, ref } = useChangedListContentsSizes( sizeRanges, itemSize, trackItemSizes, scrollContainerStateCallback, - log2, + log, void 0, customScrollParent ); - const [deviation, setDeviation] = import_react6.default.useState(0); + const [deviation, setDeviation] = import_react5.default.useState(0); useEmitter("deviation", (value) => { if (deviation !== value) { ref.current.style.marginTop = `${value}px`; @@ -51490,69 +52705,72 @@ var Items = /* @__PURE__ */ import_react6.default.memo(function VirtuosoItems2() const statefulTotalCount = useEmitterValue("statefulTotalCount"); const context = useEmitterValue("context"); if (statefulTotalCount === 0 && EmptyPlaceholder) { - return import_react6.default.createElement(EmptyPlaceholder, contextPropIfNotDomElement(EmptyPlaceholder, context)); + return import_react5.default.createElement(EmptyPlaceholder, contextPropIfNotDomElement(EmptyPlaceholder, context)); } const paddingTop = listState.offsetTop + paddingTopAddition + deviation; const paddingBottom = listState.offsetBottom; - const paddingTopEl = paddingTop > 0 ? /* @__PURE__ */ import_react6.default.createElement(FillerRow, { height: paddingTop, key: "padding-top", context }) : null; - const paddingBottomEl = paddingBottom > 0 ? /* @__PURE__ */ import_react6.default.createElement(FillerRow, { height: paddingBottom, key: "padding-bottom", context }) : null; + const paddingTopEl = paddingTop > 0 ? /* @__PURE__ */ import_react5.default.createElement(FillerRow, { height: paddingTop, key: "padding-top", context }) : null; + const paddingBottomEl = paddingBottom > 0 ? /* @__PURE__ */ import_react5.default.createElement(FillerRow, { height: paddingBottom, key: "padding-bottom", context }) : null; const items = listState.items.map((item) => { const index = item.originalIndex; const key = computeItemKey(index + firstItemIndex, item.data, context); if (isSeeking) { - return import_react6.default.createElement(ScrollSeekPlaceholder, __spreadProps(__spreadValues({}, contextPropIfNotDomElement(ScrollSeekPlaceholder, context)), { + return import_react5.default.createElement(ScrollSeekPlaceholder, { + ...contextPropIfNotDomElement(ScrollSeekPlaceholder, context), key, index: item.index, height: item.size, type: item.type || "item" - })); + }); } - return import_react6.default.createElement( + return import_react5.default.createElement( TableRowComponent, - __spreadProps(__spreadValues(__spreadValues({}, contextPropIfNotDomElement(TableRowComponent, context)), itemPropIfNotDomElement(TableRowComponent, item.data)), { + { + ...contextPropIfNotDomElement(TableRowComponent, context), + ...itemPropIfNotDomElement(TableRowComponent, item.data), key, "data-index": index, "data-known-size": item.size, "data-item-index": item.index, style: ITEM_STYLE - }), + }, itemContent(item.index, item.data, context) ); }); - return import_react6.default.createElement( + return import_react5.default.createElement( TableBodyComponent, - __spreadValues({ ref: callbackRef, "data-test-id": "virtuoso-item-list" }, contextPropIfNotDomElement(TableBodyComponent, context)), + { ref: callbackRef, "data-test-id": "virtuoso-item-list", ...contextPropIfNotDomElement(TableBodyComponent, context) }, [paddingTopEl, ...items, paddingBottomEl] ); }); var Viewport = ({ children }) => { - const ctx = import_react6.default.useContext(VirtuosoMockContext); + const ctx = import_react5.default.useContext(VirtuosoMockContext); const viewportHeight = usePublisher("viewportHeight"); const fixedItemHeight = usePublisher("fixedItemHeight"); const viewportRef = useSize(compose2(viewportHeight, (el) => correctItemSize(el, "height"))); - import_react6.default.useEffect(() => { + import_react5.default.useEffect(() => { if (ctx) { viewportHeight(ctx.viewportHeight); fixedItemHeight(ctx.itemHeight); } }, [ctx, viewportHeight, fixedItemHeight]); - return /* @__PURE__ */ import_react6.default.createElement("div", { style: viewportStyle, ref: viewportRef, "data-viewport-type": "element" }, children); + return /* @__PURE__ */ import_react5.default.createElement("div", { style: viewportStyle, ref: viewportRef, "data-viewport-type": "element" }, children); }; var WindowViewport = ({ children }) => { - const ctx = import_react6.default.useContext(VirtuosoMockContext); + const ctx = import_react5.default.useContext(VirtuosoMockContext); const windowViewportRect = usePublisher("windowViewportRect"); const fixedItemHeight = usePublisher("fixedItemHeight"); const customScrollParent = useEmitterValue("customScrollParent"); const viewportRef = useWindowViewportRectRef(windowViewportRect, customScrollParent); - import_react6.default.useEffect(() => { + import_react5.default.useEffect(() => { if (ctx) { fixedItemHeight(ctx.itemHeight); windowViewportRect({ offsetTop: 0, visibleHeight: ctx.viewportHeight, visibleWidth: 100 }); } }, [ctx, windowViewportRect, fixedItemHeight]); - return /* @__PURE__ */ import_react6.default.createElement("div", { ref: viewportRef, style: viewportStyle, "data-viewport-type": "window" }, children); + return /* @__PURE__ */ import_react5.default.createElement("div", { ref: viewportRef, style: viewportStyle, "data-viewport-type": "window" }, children); }; -var TableRoot = /* @__PURE__ */ import_react6.default.memo(function TableVirtuosoRoot(props) { +var TableRoot = /* @__PURE__ */ import_react5.default.memo(function TableVirtuosoRoot(props) { const useWindowScroll = useEmitterValue("useWindowScroll"); const customScrollParent = useEmitterValue("customScrollParent"); const fixedHeaderHeight = usePublisher("fixedHeaderHeight"); @@ -51567,28 +52785,30 @@ var TableRoot = /* @__PURE__ */ import_react6.default.memo(function TableVirtuos const TheTable = useEmitterValue("TableComponent"); const TheTHead = useEmitterValue("TableHeadComponent"); const TheTFoot = useEmitterValue("TableFooterComponent"); - const theHead = fixedHeaderContent ? import_react6.default.createElement( + const theHead = fixedHeaderContent ? import_react5.default.createElement( TheTHead, - __spreadValues({ + { key: "TableHead", style: { zIndex: 2, position: "sticky", top: 0 }, - ref: theadRef - }, contextPropIfNotDomElement(TheTHead, context)), + ref: theadRef, + ...contextPropIfNotDomElement(TheTHead, context) + }, fixedHeaderContent() ) : null; - const theFoot = fixedFooterContent ? import_react6.default.createElement( + const theFoot = fixedFooterContent ? import_react5.default.createElement( TheTFoot, - __spreadValues({ + { key: "TableFoot", style: { zIndex: 1, position: "sticky", bottom: 0 }, - ref: tfootRef - }, contextPropIfNotDomElement(TheTFoot, context)), + ref: tfootRef, + ...contextPropIfNotDomElement(TheTFoot, context) + }, fixedFooterContent() ) : null; - return /* @__PURE__ */ import_react6.default.createElement(TheScroller, __spreadValues({}, props), /* @__PURE__ */ import_react6.default.createElement(TheViewport, null, import_react6.default.createElement( + return /* @__PURE__ */ import_react5.default.createElement(TheScroller, { ...props }, /* @__PURE__ */ import_react5.default.createElement(TheViewport, null, import_react5.default.createElement( TheTable, - __spreadValues({ style: { borderSpacing: 0, overflowAnchor: "none" } }, contextPropIfNotDomElement(TheTable, context)), - [theHead, /* @__PURE__ */ import_react6.default.createElement(Items, { key: "TableBody" }), theFoot] + { style: { borderSpacing: 0, overflowAnchor: "none" }, ...contextPropIfNotDomElement(TheTable, context) }, + [theHead, /* @__PURE__ */ import_react5.default.createElement(Items, { key: "TableBody" }), theFoot] ))); }); var { @@ -51724,17 +52944,17 @@ function Text({ } // src/react/shared/menu/index.tsx -var import_react13 = __toESM(require_react()); +var import_react12 = __toESM(require_react()); // src/react/shared/base-menu/index.tsx -var import_react10 = __toESM(require_react()); +var import_react9 = __toESM(require_react()); var import_react_dom3 = __toESM(require_react_dom()); // src/react/shared/menu-provider/hooks.ts -var import_react9 = __toESM(require_react()); +var import_react8 = __toESM(require_react()); // src/react/shared/menu-provider/index.tsx -var import_react7 = __toESM(require_react()); +var import_react6 = __toESM(require_react()); // src/react/shared/menu-provider/factory.ts var createMenu = (parentComponentId, level, position, options) => { @@ -51743,15 +52963,15 @@ var createMenu = (parentComponentId, level, position, options) => { shouldFocusTriggerOnClose = true, name } = options != null ? options : {}; - return __spreadProps(__spreadValues({ + return { id: "m" + generateUuid(), - parentComponentId - }, name && { name }), { + parentComponentId, + ...name && { name }, position, level, shouldRequestOnClose, shouldFocusTriggerOnClose - }); + }; }; var createCloseRequest = (menuId, type) => { return { @@ -51772,10 +52992,11 @@ var findMenuTriggerEl = (menuId) => { }; // src/react/shared/menu-provider/index.tsx +var import_js_logger5 = __toESM(require_logger()); var import_jsx_runtime4 = __toESM(require_jsx_runtime()); -var MenuContext = import_react7.default.createContext(null); +var MenuContext = import_react6.default.createContext(null); var useMenuContext = () => { - const value = import_react7.default.useContext(MenuContext); + const value = import_react6.default.useContext(MenuContext); if (value === null) { throw new Error( "useMenuContext() called without a <MenuProvider /> in the tree." @@ -51783,16 +53004,16 @@ var useMenuContext = () => { } return value; }; +var CLASS_NAME2 = "MenuProvider"; function MenuProvider({ children }) { - const [openMenus, setOpenMenus] = import_react7.default.useState([]); - const [closeRequests, setCloseRequests] = import_react7.default.useState([]); - const [focusedMenuTrigger, setFocusedMenuTrigger] = import_react7.default.useState(null); - const logger = useLogger(); - const clearMenuTriggerFocus = import_react7.default.useCallback(() => { - logger("MenuProvider clearMenuTriggerFocus"); + const [openMenus, setOpenMenus] = import_react6.default.useState([]); + const [closeRequests, setCloseRequests] = import_react6.default.useState([]); + const [focusedMenuTrigger, setFocusedMenuTrigger] = import_react6.default.useState(null); + const clearMenuTriggerFocus = import_react6.default.useCallback(() => { + import_js_logger5.default.trace(CLASS_NAME2, "clearMenuTriggerFocus", "called"); setFocusedMenuTrigger(null); - }, [logger]); - import_react7.default.useEffect(() => { + }, []); + import_react6.default.useEffect(() => { EventManager.getInstance().on( "clear-menu-trigger-focus", clearMenuTriggerFocus @@ -51803,17 +53024,30 @@ function MenuProvider({ children }) { ); }, [clearMenuTriggerFocus]); function handleOpen(parentComponentId, level, triggerRef, options) { - logger("MenuProvider handleOpenMenu"); + import_js_logger5.default.trace(CLASS_NAME2, "handleOpenMenu", "called"); const { name, shouldRequestOnClose, shouldFocusTriggerOnClose } = options != null ? options : {}; if (!triggerRef.current) { - logger("No trigger ref. Cannot open menu"); + import_js_logger5.default.debug( + CLASS_NAME2, + "handleOpenMenu", + "No trigger ref. Cannot open menu" + ); return; } if (!canOpen(level)) { - logger("Level is too low. Cannot open menu"); + import_js_logger5.default.debug( + CLASS_NAME2, + "handleOpenMenu", + "Level is too low. Cannot open menu" + ); return; } - logger("MenuProvider opening menu", { level }); + import_js_logger5.default.trace( + CLASS_NAME2, + "handleOpenMenu", + "MenuProvider opening menu", + { level } + ); const position = getPositionFromEl(triggerRef.current); const menu = createMenu(parentComponentId, level, position, { name, @@ -51823,9 +53057,9 @@ function MenuProvider({ children }) { clearMenuTriggerFocus(); setOpenMenus((prevMenus) => [...prevMenus, menu]); } - const focusMenuTrigger = import_react7.default.useCallback( + const focusMenuTrigger = import_react6.default.useCallback( (parentComponentId, name) => { - logger("MenuProvider focusMenuTrigger", { + import_js_logger5.default.trace(CLASS_NAME2, "focusMenuTrigger", "called", { parentComponentId, name }); @@ -51834,11 +53068,11 @@ function MenuProvider({ children }) { name }); }, - [logger] + [] ); - const handleClose = import_react7.default.useCallback( + const handleClose = import_react6.default.useCallback( (id2) => { - logger("MenuProvider onClose"); + import_js_logger5.default.trace(CLASS_NAME2, "handleClose", "called", { id: id2 }); const menu = openMenus.find((menu2) => menu2.id === id2); if (!menu) throw new Error("Menu not found"); @@ -51852,11 +53086,11 @@ function MenuProvider({ children }) { (prevRequests) => prevRequests.filter((request) => request.menuId !== id2) ); }, - [logger, openMenus, focusMenuTrigger] + [openMenus, focusMenuTrigger] ); - const handleRequestClose = import_react7.default.useCallback( + const handleRequestClose = import_react6.default.useCallback( (id2, type) => { - logger("MenuProvider onRequestClose", { type }); + import_js_logger5.default.trace(CLASS_NAME2, "onRequestClose", "called", { id: id2, type }); const menu = openMenus.find((menu2) => menu2.id === id2); if (!menu) return; @@ -51868,21 +53102,24 @@ function MenuProvider({ children }) { handleClose(id2); } }, - [logger, setCloseRequests, handleClose, openMenus] + [setCloseRequests, handleClose, openMenus] ); - const handlePositionUpdate = import_react7.default.useCallback( + const handlePositionUpdate = import_react6.default.useCallback( (id2, position) => { - logger("MenuProvider onPositionUpdate", { id: id2, position }); + import_js_logger5.default.trace(CLASS_NAME2, "onPositionUpdate", "called", { + id: id2, + position + }); setOpenMenus((prevMenus) => { return prevMenus.map((menu) => { if (menu.id === id2) { - return __spreadProps(__spreadValues({}, menu), { position }); + return { ...menu, position }; } return menu; }); }); }, - [setOpenMenus, logger] + [setOpenMenus] ); function getMenu(parentComponentId, name) { var _a2, _b, _c; @@ -51912,8 +53149,8 @@ function MenuProvider({ children }) { } }; } - const handleCloseAll = import_react7.default.useCallback(() => { - logger("MenuProvider onCloseAll"); + const handleCloseAll = import_react6.default.useCallback(() => { + import_js_logger5.default.trace(CLASS_NAME2, "handleCloseAll", "called"); setOpenMenus( (prevState) => prevState.filter((menu) => menu.shouldRequestOnClose) ); @@ -51922,12 +53159,12 @@ function MenuProvider({ children }) { (menu) => createCloseRequest(menu.id, "save-and-close") ); }); - }, [openMenus, setOpenMenus, logger]); - const getTopMenu = import_react7.default.useCallback(() => { + }, [openMenus, setOpenMenus]); + const getTopMenu = import_react6.default.useCallback(() => { var _a2; return (_a2 = openMenus[openMenus.length - 1]) != null ? _a2 : null; }, [openMenus]); - const canOpen = import_react7.default.useCallback( + const canOpen = import_react6.default.useCallback( (level) => { const topMenu = getTopMenu(); if (topMenu === null) @@ -51939,6 +53176,7 @@ function MenuProvider({ children }) { [getTopMenu] ); function handleCloseRequestClear(id2) { + import_js_logger5.default.trace(CLASS_NAME2, "handleCloseRequestClear", "called", { id: id2 }); setCloseRequests( (prevRequests) => prevRequests.filter((request) => request.menuId !== id2) ); @@ -51964,7 +53202,7 @@ function MenuProvider({ children }) { } // src/react/shared/menu/hooks.ts -var import_react8 = __toESM(require_react()); +var import_react7 = __toESM(require_react()); var import_lodash6 = __toESM(require_lodash()); // src/shared/dom-utils.ts @@ -51985,8 +53223,8 @@ var useMenuPosition = (isOpen, isParentObsidianModal, onPositionUpdate) => { return ref; }; var useBasePosition = (className, isOpen, onPositionUpdate) => { - const ref = import_react8.default.useRef(null); - import_react8.default.useEffect(() => { + const ref = import_react7.default.useRef(null); + import_react7.default.useEffect(() => { if (!ref.current) return; const positionEl = ref.current; @@ -52027,7 +53265,7 @@ var useMenu = (parentComponentId, options) => { parentComponentId, name ); - const handlePositionUpdate = import_react9.default.useCallback( + const handlePositionUpdate = import_react8.default.useCallback( (newPosition) => { onPositionUpdate(id2, newPosition); }, @@ -52038,7 +53276,7 @@ var useMenu = (parentComponentId, options) => { isParentObsidianModal, handlePositionUpdate ); - import_react9.default.useEffect( + import_react8.default.useEffect( function focusMenuTrigger() { var _a2; if (!triggerRef.current) @@ -52057,12 +53295,12 @@ var useMenu = (parentComponentId, options) => { shouldFocusTriggerOnClose }); } - const handleClose = import_react9.default.useCallback(() => { + const handleClose = import_react8.default.useCallback(() => { if (!isOpen) return; onClose(id2); }, [id2, isOpen, onClose]); - const handleCloseRequestClear = import_react9.default.useCallback(() => { + const handleCloseRequestClear = import_react8.default.useCallback(() => { onCloseRequestClear(id2); }, [id2, onCloseRequestClear]); return { @@ -52097,8 +53335,9 @@ var useMenuOperations = () => { }; // src/react/shared/base-menu/index.tsx +var import_js_logger6 = __toESM(require_logger()); var import_jsx_runtime5 = __toESM(require_jsx_runtime()); -var BaseMenu = import_react10.default.forwardRef( +var BaseMenu = import_react9.default.forwardRef( ({ id: id2, isOpen, @@ -52106,14 +53345,14 @@ var BaseMenu = import_react10.default.forwardRef( position, width = 0, height = 0, + minWidth = 0, maxHeight = 0, maxWidth = 0, children }, ref) => { - const logger = useLogger(); const { topMenu, onRequestClose, onClose } = useMenuOperations(); function handleClick(e) { - logger("Menu handleClick"); + import_js_logger6.default.trace("Menu handleClick"); e.stopPropagation(); if (!topMenu) return; @@ -52122,7 +53361,7 @@ var BaseMenu = import_react10.default.forwardRef( onRequestClose(topMenu.id, "close-on-save"); } function handleKeyDown(e) { - logger("Menu handleKeyDown"); + import_js_logger6.default.trace("Menu handleKeyDown"); if (topMenu === null) return; if (e.key === "Enter") { @@ -52147,6 +53386,7 @@ var BaseMenu = import_react10.default.forwardRef( left: numToPx(position.left), width: width !== 0 ? numToPx(width) : "max-content", height: height !== 0 ? numToPx(height) : "max-content", + minWidth: minWidth !== 0 ? numToPx(minWidth) : void 0, maxWidth: maxWidth !== 0 ? numToPx(maxWidth) : void 0, maxHeight: maxHeight !== 0 ? numToPx(maxHeight) : void 0, overflowY: maxHeight !== 0 ? "scroll" : void 0, @@ -52164,10 +53404,10 @@ var BaseMenu = import_react10.default.forwardRef( var base_menu_default = BaseMenu; // src/react/shared/base-menu/utils.ts -var import_react12 = __toESM(require_react()); +var import_react11 = __toESM(require_react()); // src/shared/render-utils.ts -var import_react11 = __toESM(require_react()); +var import_react10 = __toESM(require_react()); // src/shared/render/utils.ts var replaceNewLinesWithBr = (content) => { @@ -52515,7 +53755,7 @@ var getAssignedPropertyType = (app, name) => { }; // src/data/serialize-frontmatter.ts -var serializeFrontmatter = (app, state) => __async(void 0, null, function* () { +var serializeFrontmatter = async (app, state) => { const { rows, columns, sources } = state.model; if (sources.length === 0) return; @@ -52557,6 +53797,9 @@ var serializeFrontmatter = (app, state) => __async(void 0, null, function* () { columnId: column.id, rowId: row.id }); + const { hasValidFrontmatter } = cell; + if (hasValidFrontmatter === false) + continue; let saveValue = null; if (type === "text" /* TEXT */) { const { content } = cell; @@ -52597,7 +53840,7 @@ var serializeFrontmatter = (app, state) => __async(void 0, null, function* () { ); } } - yield app.fileManager.processFrontMatter(file, (frontmatter) => { + await app.fileManager.processFrontMatter(file, (frontmatter) => { if (!frontmatter[frontmatterKey]) { if (!saveValue) return; @@ -52605,7 +53848,7 @@ var serializeFrontmatter = (app, state) => __async(void 0, null, function* () { frontmatter[frontmatterKey] = saveValue; }); if (type === "date" /* DATE */) { - yield updateObsidianPropertyType( + await updateObsidianPropertyType( app, frontmatterKey, includeTime ? "datetime" /* DATETIME */ : "date" /* DATE */ @@ -52613,7 +53856,35 @@ var serializeFrontmatter = (app, state) => __async(void 0, null, function* () { } } } -}); +}; + +// src/shared/last-saved-manager.ts +var LastSavedManager = class _LastSavedManager { + constructor() { + this.lastSavedFile = ""; + this.lastSavedTime = 0; + } + // Ensures only one instance is created + static getInstance() { + if (!_LastSavedManager.instance) { + _LastSavedManager.instance = new _LastSavedManager(); + } + return _LastSavedManager.instance; + } + setLastSavedFile(fileName) { + this.lastSavedFile = fileName; + this.lastSavedTime = Date.now(); + } + getLastSavedFile() { + return this.lastSavedFile; + } + getLastSavedTime() { + return this.lastSavedTime; + } + clearLastSavedFile() { + this.lastSavedFile = ""; + } +}; // src/obsidian/dataloom-view.tsx var import_jsx_runtime11 = __toESM(require_jsx_runtime()); @@ -52621,44 +53892,41 @@ var DATA_LOOM_VIEW = "dataloom"; var DataLoomView = class extends import_obsidian8.TextFileView { constructor(leaf, pluginId, pluginVersion) { super(leaf); - this.handleSaveLoomState = (appId, state, shouldSaveFrontmatter) => __async(this, null, function* () { + this.handleSaveLoomState = async (appId, state, shouldSaveFrontmatter) => { if (!this.file) return; if (shouldSaveFrontmatter) { - yield serializeFrontmatter(this.app, state); + await serializeFrontmatter(this.app, state); } const serialized = serializeState(state); + LastSavedManager.getInstance().setLastSavedFile(this.file.path); this.setViewData(serialized, false); this.requestSave(); EventManager.getInstance().emit( - "app-refresh", + "app-refresh-by-state", this.file.path, appId, state ); - }); + }; this.pluginId = pluginId; this.pluginVersion = pluginVersion; this.root = null; this.data = ""; this.appId = createAppId(); } - onOpen() { - return __async(this, null, function* () { - this.containerEl.style.paddingBottom = "48px"; - this.addAction("settings", "Settings", () => { - this.app.setting.open(); - this.app.setting.openTabById(this.pluginId); - }); + async onOpen() { + this.containerEl.style.paddingBottom = "48px"; + this.addAction("settings", "Settings", () => { + this.app.setting.open(); + this.app.setting.openTabById(this.pluginId); }); } - onClose() { - return __async(this, null, function* () { - if (this.root) { - this.root.unmount(); - this.root = null; - } - }); + async onClose() { + if (this.root) { + this.root.unmount(); + this.root = null; + } } setViewData(data, clear) { this.data = data; @@ -52739,7 +54007,7 @@ var handleLinkClick = (app, event) => { // src/shared/render-embed.ts var import_obsidian9 = require("obsidian"); -var renderText = (app, leaf, value) => __async(void 0, null, function* () { +var renderText = async (app, leaf, value) => { var _a2, _b; const div = document.createElement("div"); div.style.width = "100%"; @@ -52747,7 +54015,7 @@ var renderText = (app, leaf, value) => __async(void 0, null, function* () { try { const view = leaf.view; if (view instanceof import_obsidian9.MarkdownView || view instanceof DataLoomView) { - yield import_obsidian9.MarkdownRenderer.render( + await import_obsidian9.MarkdownRenderer.render( app, value, div, @@ -52759,13 +54027,13 @@ var renderText = (app, leaf, value) => __async(void 0, null, function* () { console.error(e); } return div; -}); -var renderEmbed = (app, leaf, value) => __async(void 0, null, function* () { +}; +var renderEmbed = async (app, leaf, value) => { return renderText(app, leaf, value); -}); +}; // src/shared/render-utils.ts -var renderMarkdown = (app, leaf, markdown) => __async(void 0, null, function* () { +var renderMarkdown = async (app, leaf, markdown) => { const div = document.createElement("div"); div.style.height = "100%"; div.style.width = "100%"; @@ -52779,7 +54047,7 @@ var renderMarkdown = (app, leaf, markdown) => __async(void 0, null, function* () const file = view2.file; if (file === null) return div; - yield import_obsidian10.MarkdownRenderer.render( + await import_obsidian10.MarkdownRenderer.render( app, formattedMarkdown, div, @@ -52816,28 +54084,26 @@ var renderMarkdown = (app, leaf, markdown) => __async(void 0, null, function* () console.error(e); } return div; -}); +}; var useRenderMarkdown = (markdown, options) => { const { app } = useAppMount(); const { isEmbed = false, isExternalLink: isExternalLink2 = false } = options != null ? options : {}; - const containerRef = import_react11.default.useRef(null); - const renderRef = import_react11.default.useRef(null); + const containerRef = import_react10.default.useRef(null); + const renderRef = import_react10.default.useRef(null); const { mountLeaf } = useAppMount(); - import_react11.default.useEffect(() => { - function updateContainerRef() { - return __async(this, null, function* () { - let el = null; - if (isEmbed) { - el = yield renderEmbed(app, mountLeaf, markdown); - } else { - el = yield renderMarkdown(app, mountLeaf, markdown); - } - if (el) { - renderRef.current = el; - if (containerRef.current) - appendOrReplaceFirstChild(containerRef.current, el); - } - }); + import_react10.default.useEffect(() => { + async function updateContainerRef() { + let el = null; + if (isEmbed) { + el = await renderEmbed(app, mountLeaf, markdown); + } else { + el = await renderMarkdown(app, mountLeaf, markdown); + } + if (el) { + renderRef.current = el; + if (containerRef.current) + appendOrReplaceFirstChild(containerRef.current, el); + } } updateContainerRef(); }, [app, markdown, mountLeaf, isExternalLink2, isEmbed]); @@ -52860,7 +54126,7 @@ var useShiftMenu = (isModalMenu, viewportEl, menuRef, position, isOpen, options) topOffset = 0, leftOffset = 0 } = options || {}; - import_react12.default.useEffect(() => { + import_react11.default.useEffect(() => { if (!menuRef.current) return; if (!isOpen) @@ -52961,6 +54227,7 @@ function Menu({ hideBorder = false, openDirection, position, + minWidth = 0, width = 0, height = 0, leftOffset = 0, @@ -52969,7 +54236,7 @@ function Menu({ maxWidth = 0, children }) { - const ref = import_react13.default.useRef(null); + const ref = import_react12.default.useRef(null); const { mountLeaf } = useAppMount(); useShiftMenu(false, mountLeaf.view.containerEl, ref, position, isOpen, { openDirection, @@ -52986,6 +54253,7 @@ function Menu({ position, width, height, + minWidth, maxHeight, maxWidth, children @@ -52994,11 +54262,11 @@ function Menu({ } // src/react/shared/menu-item/index.tsx -var import_react15 = __toESM(require_react()); +var import_react14 = __toESM(require_react()); // src/react/shared/icon/index.tsx var import_obsidian11 = require("obsidian"); -var import_react14 = __toESM(require_react()); +var import_react13 = __toESM(require_react()); var import_jsx_runtime13 = __toESM(require_jsx_runtime()); function Icon({ ariaLabel, @@ -53006,7 +54274,7 @@ function Icon({ size = "sm", color }) { - const ref = import_react14.default.useRef(null); + const ref = import_react13.default.useRef(null); let className = ""; if (size === "sm") { className += "dataloom-svg--sm"; @@ -53081,8 +54349,8 @@ function MenuItem({ onClick, isSelected = false }) { - const ref = import_react15.default.useRef(null); - import_react15.default.useEffect(() => { + const ref = import_react14.default.useRef(null); + import_react14.default.useEffect(() => { if (!ref.current) return; if (isSelected) { @@ -53487,7 +54755,7 @@ function CalculationMenu({ } // src/react/shared/menu-trigger/index.tsx -var import_react16 = __toESM(require_react()); +var import_react15 = __toESM(require_react()); // src/shared/keyboard-event.ts var import_obsidian12 = require("obsidian"); @@ -53507,8 +54775,9 @@ var isInsertLineAltDown = (e) => { }; // src/react/shared/menu-trigger/index.tsx +var import_js_logger7 = __toESM(require_logger()); var import_jsx_runtime17 = __toESM(require_jsx_runtime()); -var MenuTrigger = import_react16.default.forwardRef( +var MenuTrigger = import_react15.default.forwardRef( ({ ariaLabel, menuId, @@ -53523,10 +54792,9 @@ var MenuTrigger = import_react16.default.forwardRef( onMouseDown, onOpen }, ref) => { - const logger = useLogger(); const { topMenu, canOpen, onRequestClose } = useMenuOperations(); function handleKeyDown(e) { - logger("MenuTrigger handleKeyDown"); + import_js_logger7.default.trace("MenuTrigger handleKeyDown"); if (e.key === "Enter") { e.stopPropagation(); onEnterDown == null ? void 0 : onEnterDown(); @@ -53555,7 +54823,7 @@ var MenuTrigger = import_react16.default.forwardRef( } } function handleClick(e) { - logger("MenuTrigger handleClick"); + import_js_logger7.default.trace("MenuTrigger handleClick"); e.stopPropagation(); onClick == null ? void 0 : onClick(e); if (shouldRunTrigger) { @@ -54167,10 +55435,10 @@ function FooterCellContainer({ } // src/react/loom-app/header-cell-container/use-column-resize.ts -var import_react17 = __toESM(require_react()); +var import_react16 = __toESM(require_react()); var useColumnResize = (columnId, onMove) => { const { setResizingColumnId } = useLoomState(); - const mouseDownX = (0, import_react17.useRef)(0); + const mouseDownX = (0, import_react16.useRef)(0); function handleMouseMove(e) { const dist = e.pageX - mouseDownX.current; onMove(dist); @@ -54294,9 +55562,10 @@ function ColumnResize({ } // src/react/loom-app/header-menu/index.tsx -var import_react22 = __toESM(require_react()); +var import_react21 = __toESM(require_react()); // src/react/shared/button/index.tsx +var import_js_logger8 = __toESM(require_logger()); var import_jsx_runtime20 = __toESM(require_jsx_runtime()); function Button({ isDisabled = false, @@ -54311,12 +55580,11 @@ function Button({ onClick, onMouseDown }) { - const logger = useLogger(); function handleClick() { onClick == null ? void 0 : onClick(); } function handleKeyDown(e) { - logger("Button handleKeyDown"); + import_js_logger8.default.trace("Button handleKeyDown"); if (e.key === "Enter") { e.preventDefault(); e.stopPropagation(); @@ -54616,12 +55884,12 @@ function NumberFormatSubmenu({ } // src/react/loom-app/header-menu/text-input-submenu.tsx -var import_react19 = __toESM(require_react()); +var import_react18 = __toESM(require_react()); // src/react/shared/input/index.tsx -var import_react18 = __toESM(require_react()); +var import_react17 = __toESM(require_react()); var import_jsx_runtime25 = __toESM(require_jsx_runtime()); -var Input = import_react18.default.forwardRef( +var Input = import_react17.default.forwardRef( ({ id: id2, isTransparent, @@ -54691,8 +55959,8 @@ function TextInputSubmenu({ closeRequest, onClose }) { - const [textValue, setTextValue] = import_react19.default.useState(value); - import_react19.default.useEffect(() => { + const [textValue, setTextValue] = import_react18.default.useState(value); + import_react18.default.useEffect(() => { if (closeRequest !== null) { onValueChange(textValue); onClose(); @@ -54794,7 +56062,10 @@ function FrontmatterKeySubmenu({ } // src/react/loom-app/header-menu/base-submenu.tsx -var import_react21 = __toESM(require_react()); +var import_react20 = __toESM(require_react()); + +// src/redux/hooks.ts +var useAppSelector = useSelector; // src/react/shared/switch/index.tsx var import_jsx_runtime31 = __toESM(require_jsx_runtime()); @@ -54829,16 +56100,16 @@ function Switch({ id: id2, value, ariaLabel, onToggle }) { } // src/shared/hooks.ts -var import_react20 = __toESM(require_react()); +var import_react19 = __toESM(require_react()); var usePrevious = (value) => { - const ref = import_react20.default.useRef(); - import_react20.default.useEffect(() => { + const ref = import_react19.default.useRef(); + import_react19.default.useEffect(() => { ref.current = value; }); return ref.current; }; var usePlaceCursorAtEnd = (inputRef, value) => { - import_react20.default.useEffect(() => { + import_react19.default.useEffect(() => { function setSelection() { if (inputRef.current) { inputRef.current.selectionStart = value.length; @@ -54870,9 +56141,9 @@ function BaseSubmenu({ onHideClick, onFrozenColumnsChange }) { - const inputRef = import_react21.default.useRef(null); + const inputRef = import_react20.default.useRef(null); usePlaceCursorAtEnd(inputRef, columnName); - import_react21.default.useEffect(() => { + import_react20.default.useEffect(() => { if (inputRef.current) { inputRef.current.focus(); } @@ -55079,13 +56350,13 @@ function HeaderMenu({ numberSuffix, frontmatterKey } = column; - const [submenu, setSubmenu] = import_react22.default.useState(null); - const [localValue, setLocalValue] = import_react22.default.useState(content); - const saveLocalValue = import_react22.default.useCallback(() => { + const [submenu, setSubmenu] = import_react21.default.useState(null); + const [localValue, setLocalValue] = import_react21.default.useState(content); + const saveLocalValue = import_react21.default.useCallback(() => { if (localValue !== content) onColumnChange(columnId, { content: localValue }); }, [columnId, content, localValue, onColumnChange]); - import_react22.default.useEffect(() => { + import_react21.default.useEffect(() => { if (closeRequest !== null) { saveLocalValue(); onClose(); @@ -55153,11 +56424,12 @@ function HeaderMenu({ function handleNumberFormatChange(value, options) { onColumnChange( columnId, - __spreadValues({ - numberFormat: value - }, (options == null ? void 0 : options.currency) && { - currencyType: options.currency - }), + { + numberFormat: value, + ...(options == null ? void 0 : options.currency) && { + currencyType: options.currency + } + }, { shouldSortRows: true } ); setSubmenu(1 /* OPTIONS */); @@ -55458,11 +56730,11 @@ function HeaderCellContainer({ } // src/shared/dragging/drag-context.tsx -var import_react23 = __toESM(require_react()); +var import_react22 = __toESM(require_react()); var import_jsx_runtime37 = __toESM(require_jsx_runtime()); -var DragContext = import_react23.default.createContext(null); +var DragContext = import_react22.default.createContext(null); var useDragContext = () => { - const value = import_react23.default.useContext(DragContext); + const value = import_react22.default.useContext(DragContext); if (value === null) { throw new Error( "useDragContext() called without a <DragProvider /> in the tree." @@ -55471,8 +56743,8 @@ var useDragContext = () => { return value; }; function DragProvider({ children }) { - const [dragData, setDragData] = import_react23.default.useState(null); - const [touchDropZone, setTouchDropZone] = import_react23.default.useState( + const [dragData, setDragData] = import_react22.default.useState(null); + const [touchDropZone, setTouchDropZone] = import_react22.default.useState( null ); return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( @@ -55495,16 +56767,12 @@ var getRowId = (rowEl) => { // src/react/loom-app/table/body-row.tsx var import_jsx_runtime38 = __toESM(require_jsx_runtime()); -function BodyRow(_a2) { - var _b = _a2, { - style, - children, - onRowReorder - } = _b, props = __objRest(_b, [ - "style", - "children", - "onRowReorder" - ]); +function BodyRow({ + style, + children, + onRowReorder, + ...props +}) { const { loomState } = useLoomState(); const { dragData, setDragData } = useDragContext(); function handleDragStart(e) { @@ -55541,27 +56809,27 @@ function BodyRow(_a2) { } return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( "div", - __spreadProps(__spreadValues({ + { className: "dataloom-row", onDrop: handleDrop, onDragStart: handleDragStart, onDragEnd: handleDragEnd, - onDragOver: handleDragOver - }, props), { + onDragOver: handleDragOver, + ...props, style, children - }) + } ); } // src/react/loom-app/table/header-cell.tsx -var import_react25 = __toESM(require_react()); +var import_react24 = __toESM(require_react()); // src/react/loom-app/table/hooks.tsx -var import_react24 = __toESM(require_react()); +var import_react23 = __toESM(require_react()); var useStickyOffset = (ref, numFrozenColumns, columnIndex) => { - const [columnWidths, setColumnWidths] = import_react24.default.useState([]); - import_react24.default.useEffect(() => { + const [columnWidths, setColumnWidths] = import_react23.default.useState([]); + import_react23.default.useEffect(() => { if (!ref.current) return; if (columnIndex + 1 > numFrozenColumns) @@ -55606,7 +56874,7 @@ function HeaderCell({ onColumnReorder }) { const { dragData, touchDropZone, setDragData, setTouchDropZone } = useDragContext(); - const ref = import_react25.default.useRef(null); + const ref = import_react24.default.useRef(null); const leftOffset = useStickyOffset(ref, numFrozenColumns, index); const shouldFreeze = index + 1 <= numFrozenColumns; function startDrag(el) { @@ -55719,31 +56987,31 @@ function HeaderCell({ className += " dataloom-cell--freeze dataloom-cell--freeze-header"; return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( "div", - __spreadProps(__spreadValues({ + { className, ref, "data-column-id": columnId, style: { left: shouldFreeze ? numToPx(leftOffset) : void 0 - } - }, isDraggable && { - draggable: true, - onDrop: handleDrop, - onDragStart: handleDragStart, - onDragOver: handleDragOver, - onDragEnd: handleDragEnd, - onTouchStart: handleTouchStart, - onTouchMove: handleTouchMove, - onTouchEnd: handleTouchEnd, - onTouchCancel: handleTouchCancel - }), { + }, + ...isDraggable && { + draggable: true, + onDrop: handleDrop, + onDragStart: handleDragStart, + onDragOver: handleDragOver, + onDragEnd: handleDragEnd, + onTouchStart: handleTouchStart, + onTouchMove: handleTouchMove, + onTouchEnd: handleTouchEnd, + onTouchCancel: handleTouchCancel + }, children: content - }) + } ); } // src/react/loom-app/table/body-cell.tsx -var import_react26 = __toESM(require_react()); +var import_react25 = __toESM(require_react()); var import_jsx_runtime40 = __toESM(require_jsx_runtime()); function BodyCell({ rowId, @@ -55751,7 +57019,7 @@ function BodyCell({ numFrozenColumns, contentNode }) { - const ref = import_react26.default.useRef(null); + const ref = import_react25.default.useRef(null); const leftOffset = useStickyOffset(ref, numFrozenColumns, index); const shouldFreeze = index + 1 <= numFrozenColumns; let className = "dataloom-cell dataloom-cell--body"; @@ -55770,14 +57038,14 @@ function BodyCell({ } // src/react/loom-app/table/footer-cell.tsx -var import_react27 = __toESM(require_react()); +var import_react26 = __toESM(require_react()); var import_jsx_runtime41 = __toESM(require_jsx_runtime()); function FooterCell({ index, content, numFrozenColumns }) { - const ref = import_react27.default.useRef(null); + const ref = import_react26.default.useRef(null); const leftOffset = useStickyOffset(ref, numFrozenColumns, index); const shouldFreeze = index + 1 <= numFrozenColumns; let className = "dataloom-cell dataloom-cell--footer"; @@ -55810,9 +57078,9 @@ function NewColumnButton({ onClick }) { } // src/react/shared/menu-button/index.tsx -var import_react28 = __toESM(require_react()); +var import_react27 = __toESM(require_react()); var import_jsx_runtime43 = __toESM(require_jsx_runtime()); -var MenuButton = import_react28.default.forwardRef( +var MenuButton = import_react27.default.forwardRef( ({ menuId, isDisabled, @@ -56060,7 +57328,7 @@ function RowOptions2({ } // src/react/loom-app/body-cell-container/index.tsx -var import_react39 = __toESM(require_react()); +var import_react38 = __toESM(require_react()); var import_obsidian13 = require("obsidian"); // src/react/loom-app/text-cell/index.tsx @@ -56192,7 +57460,7 @@ function NumberCell7({ content }) { } // src/react/loom-app/number-cell-edit/index.tsx -var import_react29 = __toESM(require_react()); +var import_react28 = __toESM(require_react()); var import_jsx_runtime52 = __toESM(require_jsx_runtime()); function NumberCellEdit({ closeRequest, @@ -56202,10 +57470,10 @@ function NumberCellEdit({ }) { var _a2; const initialValue = (_a2 = value == null ? void 0 : value.toString()) != null ? _a2 : ""; - const [localValue, setLocalValue] = import_react29.default.useState(initialValue); - const inputRef = import_react29.default.useRef(null); + const [localValue, setLocalValue] = import_react28.default.useState(initialValue); + const inputRef = import_react28.default.useRef(null); usePlaceCursorAtEnd(inputRef, localValue); - import_react29.default.useEffect(() => { + import_react28.default.useEffect(() => { if (closeRequest !== null) { if (localValue !== initialValue) { onChange(localValue === "" ? null : parseFloat(localValue)); @@ -56232,19 +57500,19 @@ function NumberCellEdit({ } // src/react/loom-app/text-cell-edit/index.tsx -var import_react32 = __toESM(require_react()); +var import_react31 = __toESM(require_react()); // src/react/shared/suggest-list/index.tsx -var import_react31 = __toESM(require_react()); +var import_react30 = __toESM(require_react()); var import_fuzzysort = __toESM(require_fuzzysort()); // src/react/shared/suggest-list/suggest-item/index.tsx -var import_react30 = __toESM(require_react()); +var import_react29 = __toESM(require_react()); +var import_js_logger9 = __toESM(require_logger()); var import_jsx_runtime53 = __toESM(require_jsx_runtime()); -var SuggestItem = import_react30.default.forwardRef( +var SuggestItem = import_react29.default.forwardRef( function SuggestItem2({ index, file, isHighlighted, onItemClick }, ref) { - const logger = useLogger(); - const handleClick = import_react30.default.useCallback( + const handleClick = import_react29.default.useCallback( (e) => { e.stopPropagation(); onItemClick(file); @@ -56252,7 +57520,7 @@ var SuggestItem = import_react30.default.forwardRef( [file, onItemClick] ); function handleKeyDown(e) { - logger("SuggestItem handleKeyDown"); + import_js_logger9.default.trace("SuggestItem handleKeyDown"); if (e.key === "Enter") { e.preventDefault(); onItemClick(file); @@ -56342,6 +57610,7 @@ function CreateButton({ value, onClick }) { } // src/react/shared/suggest-list/index.tsx +var import_js_logger10 = __toESM(require_logger()); var import_jsx_runtime57 = __toESM(require_jsx_runtime()); function SuggestList({ hiddenExtensions = [], @@ -56353,17 +57622,16 @@ function SuggestList({ onClearClick, onCreateClick }) { - const [localFilterValue, setLocalFilterValue] = import_react31.default.useState( + const [localFilterValue, setLocalFilterValue] = import_react30.default.useState( filterValue != null ? filterValue : "" ); - const highlightItemRef = import_react31.default.useRef(null); - const [highlightIndex, setHighlightIndex] = import_react31.default.useState(-1); + const highlightItemRef = import_react30.default.useRef(null); + const [highlightIndex, setHighlightIndex] = import_react30.default.useState(-1); const { app } = useAppMount(); - const logger = useLogger(); - import_react31.default.useEffect(() => { + import_react30.default.useEffect(() => { setLocalFilterValue(filterValue != null ? filterValue : ""); }, [filterValue]); - import_react31.default.useEffect(() => { + import_react30.default.useEffect(() => { if (highlightItemRef.current) { highlightItemRef.current.scrollIntoView({ behavior: "auto", @@ -56385,7 +57653,7 @@ function SuggestList({ filteredFiles = filteredFiles.slice(0, 20); } function handleKeyDown() { - logger("SuggestMenuContent handleKeyDown"); + import_js_logger10.default.trace("SuggestMenuContent handleKeyDown"); const focusedEl = document.activeElement; if (!focusedEl) return; @@ -56541,6 +57809,7 @@ var removeClosingBracket = (previousValue, value, selectionStart) => { }; // src/react/loom-app/text-cell-edit/index.tsx +var import_js_logger11 = __toESM(require_logger()); var import_jsx_runtime59 = __toESM(require_jsx_runtime()); function TextCellEdit({ cellId, @@ -56553,14 +57822,13 @@ function TextCellEdit({ var _a2, _b, _c; const COMPONENT_ID = `suggest-menu-${cellId}`; const menu = useMenu(COMPONENT_ID); - const [localValue, setLocalValue] = import_react32.default.useState(value); - const [cursorPosition, setCursorPosition] = import_react32.default.useState( + const [localValue, setLocalValue] = import_react31.default.useState(value); + const [cursorPosition, setCursorPosition] = import_react31.default.useState( null ); - const inputRef = import_react32.default.useRef(null); - const logger = useLogger(); + const inputRef = import_react31.default.useRef(null); usePlaceCursorAtEnd(inputRef, localValue); - import_react32.default.useEffect(() => { + import_react31.default.useEffect(() => { if (inputRef.current) { const selectionIndex = inputRef.current.selectionStart; if (localValue[selectionIndex - 1] === "]" && localValue[selectionIndex - 2] === "[") { @@ -56572,17 +57840,17 @@ function TextCellEdit({ } } }, [inputRef, localValue]); - import_react32.default.useEffect(() => { + import_react31.default.useEffect(() => { if (closeRequest !== null) { - logger("TextCellEdit onClose"); + import_js_logger11.default.trace("TextCellEdit onClose"); if (localValue !== value) onChange(localValue); onClose(); } - }, [logger, value, localValue, closeRequest, onClose, onChange]); + }, [value, localValue, closeRequest, onClose, onChange]); function handleKeyDown(e) { const el = e.target; - logger("TextCellEdit handleKeyDown"); + import_js_logger11.default.trace("TextCellEdit handleKeyDown"); if (e.key === "Enter") { if (!isInsertLineDown(e) && !isInsertLineAltDown(e)) { e.preventDefault(); @@ -56601,7 +57869,7 @@ function TextCellEdit({ } } } - import_react32.default.useEffect(() => { + import_react31.default.useEffect(() => { if (cursorPosition !== null && inputRef.current) { inputRef.current.selectionStart = cursorPosition; inputRef.current.selectionEnd = cursorPosition; @@ -56612,7 +57880,7 @@ function TextCellEdit({ menu.onOpen(2 /* TWO */); } function handleTextareaChange(e) { - logger("TextCellEdit handleTextareaChange"); + import_js_logger11.default.trace("TextCellEdit handleTextareaChange"); const inputValue = e.target.value; let newValue = inputValue; if (inputRef.current) { @@ -56684,10 +57952,10 @@ function TextCellEdit({ } // src/react/loom-app/tag-cell-edit/index.tsx -var import_react35 = __toESM(require_react()); +var import_react34 = __toESM(require_react()); // src/react/loom-app/tag-cell-edit/menu-header/index.tsx -var import_react33 = __toESM(require_react()); +var import_react32 = __toESM(require_react()); // src/react/shared/wrap/index.tsx var import_jsx_runtime60 = __toESM(require_jsx_runtime()); @@ -56725,7 +57993,7 @@ function MenuHeader({ onInputValueChange, onRemoveTag }) { - const inputRef = import_react33.default.useRef(null); + const inputRef = import_react32.default.useRef(null); function handleInputChange(value) { if (value.match(/^\s/)) return; @@ -56776,7 +58044,7 @@ function CreateTag({ content, color, onTagAdd }) { } // src/react/loom-app/tag-color-menu/index.tsx -var import_react34 = __toESM(require_react()); +var import_react33 = __toESM(require_react()); // src/shared/string-utils.ts var uppercaseFirst = (input) => { @@ -56835,8 +58103,8 @@ function TagColorMenu({ onClose }) { const { isDarkMode } = useAppSelector((state) => state.global); - const [localValue, setLocalValue] = import_react34.default.useState(content); - import_react34.default.useEffect( + const [localValue, setLocalValue] = import_react33.default.useState(content); + import_react33.default.useEffect( function saveOnCloseRequest() { if (closeRequest === null) return; @@ -57022,9 +58290,9 @@ function TagCellEdit({ onTagContentChange, onClose }) { - const [inputValue, setInputValue] = import_react35.default.useState(""); - const [newTagColor, setNewTagColor] = import_react35.default.useState(randomColor()); - const handleTagAdd = import_react35.default.useCallback( + const [inputValue, setInputValue] = import_react34.default.useState(""); + const [newTagColor, setNewTagColor] = import_react34.default.useState(randomColor()); + const handleTagAdd = import_react34.default.useCallback( (markdown, color) => { onTagAdd(markdown, color); setInputValue(""); @@ -57034,7 +58302,7 @@ function TagCellEdit({ }, [isMulti, onTagAdd, onClose] ); - import_react35.default.useEffect(() => { + import_react34.default.useEffect(() => { if (closeRequest !== null) { if (closeRequest.type === "close-on-save") { if (inputValue !== "") { @@ -57089,7 +58357,7 @@ function TagCellEdit({ } // src/react/loom-app/date-cell-edit/index.tsx -var import_react36 = __toESM(require_react()); +var import_react35 = __toESM(require_react()); // src/react/loom-app/date-cell-edit/date-format-menu.tsx var import_jsx_runtime68 = __toESM(require_jsx_runtime()); @@ -57264,7 +58532,7 @@ function DateCellEdit({ const timeFormatMenu = useMenu(COMPONENT_ID, { name: "time-format" }); - const includeTimeToggleId = import_react36.default.useId(); + const includeTimeToggleId = import_react35.default.useId(); let initialDateString = ""; if (value !== null) { initialDateString = dateTimeToDateString( @@ -57273,19 +58541,19 @@ function DateCellEdit({ dateFormatSeparator ); } - const [dateString, setDateString] = import_react36.default.useState(initialDateString); + const [dateString, setDateString] = import_react35.default.useState(initialDateString); let initialTimeString = ""; if (value !== null) { initialTimeString = dateTimeToTimeString(value, { hour12 }); } - const [timeString, setTimeString] = import_react36.default.useState(initialTimeString); - const [isDateInputInvalid, setDateInputInvalid] = import_react36.default.useState(false); - const [isTimeInputInvalid, setTimeInputInvalid] = import_react36.default.useState(false); - const dateInputRef = import_react36.default.useRef(null); - const timeInputRef = import_react36.default.useRef(null); - import_react36.default.useEffect(() => { + const [timeString, setTimeString] = import_react35.default.useState(initialTimeString); + const [isDateInputInvalid, setDateInputInvalid] = import_react35.default.useState(false); + const [isTimeInputInvalid, setTimeInputInvalid] = import_react35.default.useState(false); + const dateInputRef = import_react35.default.useRef(null); + const timeInputRef = import_react35.default.useRef(null); + import_react35.default.useEffect(() => { let timeString2 = ""; if (value !== null) { timeString2 = dateTimeToTimeString(value, { @@ -57294,7 +58562,7 @@ function DateCellEdit({ } setTimeString(timeString2); }, [value, hour12, setTimeString]); - import_react36.default.useEffect(() => { + import_react35.default.useEffect(() => { let dateString2 = ""; if (value !== null) { dateString2 = dateTimeToDateString( @@ -57305,7 +58573,7 @@ function DateCellEdit({ } setDateString(dateString2); }, [value, dateFormat, dateFormatSeparator, setDateString]); - import_react36.default.useEffect(() => { + import_react35.default.useEffect(() => { if (closeRequest === null) return; function validateDateInput(closeRequest2) { @@ -57690,13 +58958,13 @@ function EmbedCell6({ } // src/react/loom-app/embed-cell-edit/index.tsx -var import_react38 = __toESM(require_react()); +var import_react37 = __toESM(require_react()); // src/react/loom-app/embed-cell-edit/external-embed-input.tsx -var import_react37 = __toESM(require_react()); +var import_react36 = __toESM(require_react()); var import_jsx_runtime77 = __toESM(require_jsx_runtime()); function ExternalEmbedInput({ value, onChange }) { - const ref = import_react37.default.useRef(null); + const ref = import_react36.default.useRef(null); usePlaceCursorAtEnd(ref, value); return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( input_default, @@ -57736,10 +59004,10 @@ function EmbedCellEdit({ onClose, onExternalLinkToggle }) { - const [externalLink, setExternalLink] = import_react38.default.useState( + const [externalLink, setExternalLink] = import_react37.default.useState( isExternalLink2 ? value : "" ); - import_react38.default.useEffect(() => { + import_react37.default.useEffect(() => { if (closeRequest !== null) { if (isExternalLink2) { if (externalLink !== value) @@ -57905,12 +59173,28 @@ var getDateCellContent = (dateTime, format, separator, includeTime, hour12) => { return ""; }; -// src/react/loom-app/body-cell-container/index.tsx +// src/react/loom-app/disabled-cell/index.tsx var import_jsx_runtime85 = __toESM(require_jsx_runtime()); +function DisabledCell({ + hasValidFrontmatter, + doesColumnHaveFrontmatterKey +}) { + let ariaLabel = ""; + if (!doesColumnHaveFrontmatterKey) { + ariaLabel = "This cell is disabled until you choose a frontmatter key for this column"; + } else if (!hasValidFrontmatter) { + ariaLabel = "This cell has an invalid property value. Please correct it in the source file."; + } + return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("div", { className: "dataloom-disabled-cell", "aria-label": ariaLabel, children: /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(Text, { value: hasValidFrontmatter ? "" : "Invalid property value" }) }); +} + +// src/react/loom-app/body-cell-container/index.tsx +var import_jsx_runtime86 = __toESM(require_jsx_runtime()); function BodyCellContainer(props) { const { id: id2, columnId, + hasValidFrontmatter, source, includeTime, aspectRatio, @@ -57934,59 +59218,58 @@ function BodyCellContainer(props) { onCellChange } = props; const shouldRequestOnClose = type === "text" /* TEXT */ || type === "embed" /* EMBED */ || type === "number" /* NUMBER */ || type === "tag" /* TAG */ || type === "multi-tag" /* MULTI_TAG */ || type === "date" /* DATE */; - const isDisabled = source !== null && frontmatterKey === null; + let isDisabled = false; + if (hasValidFrontmatter === false) { + isDisabled = true; + } else if (source !== null && frontmatterKey === null && type !== "source" /* SOURCE */ && type !== "source-file" /* SOURCE_FILE */) { + isDisabled = true; + } const isUneditable = type === "checkbox" /* CHECKBOX */ || type === "creation-time" /* CREATION_TIME */ || type === "last-edited-time" /* LAST_EDITED_TIME */ || type === "source" /* SOURCE */ || type === "source-file" /* SOURCE_FILE */; const COMPONENT_ID = `body-cell-${id2}`; const menu = useMenu(COMPONENT_ID); - function copyTextToClipboard(value) { - return __async(this, null, function* () { - try { - yield navigator.clipboard.writeText(value); - new import_obsidian13.Notice("Copied cell content to clipboard"); - } catch (err) { - console.error(err); - } - }); + async function copyTextToClipboard(value) { + try { + await navigator.clipboard.writeText(value); + new import_obsidian13.Notice("Copied cell content to clipboard"); + } catch (err) { + console.error(err); + } } function onMenuTriggerEnterDown(cellActionCallback) { return () => { - if (isDisabled) - return; cellActionCallback(); }; } function onMenuTriggerClick(cellActionCallback) { return () => { - if (isDisabled) - return; cellActionCallback(); }; } - const handleTextChange = import_react39.default.useCallback( + const handleTextChange = import_react38.default.useCallback( (value) => { onCellChange(id2, { content: value }); }, [id2, onCellChange] ); - const handleNumberChange = import_react39.default.useCallback( + const handleNumberChange = import_react38.default.useCallback( (value) => { onCellChange(id2, { value }); }, [id2, onCellChange] ); - const handleDateTimeChange = import_react39.default.useCallback( + const handleDateTimeChange = import_react38.default.useCallback( (value) => { onCellChange(id2, { dateTime: value }); }, [id2, onCellChange] ); - const handleEmbedChange = import_react39.default.useCallback( + const handleEmbedChange = import_react38.default.useCallback( (pathOrUrl) => { onCellChange(id2, { pathOrUrl }); }, [id2, onCellChange] ); - const handleFileChange = import_react39.default.useCallback( + const handleFileChange = import_react38.default.useCallback( (path) => { onCellChange(id2, { path }); }, @@ -58011,16 +59294,28 @@ function BodyCellContainer(props) { className += " " + overflowClass; if (isUneditable) { className += " dataloom-cell--uneditable"; - } else if (isDisabled) { - className += " dataloom-cell--disabled"; } let shouldRunTrigger = true; - if (isUneditable || isDisabled) { + if (isUneditable) { shouldRunTrigger = false; } - let ariaLabel = ""; - if (isDisabled && type !== "source" /* SOURCE */ && type !== "source-file" /* SOURCE_FILE */) { - ariaLabel = "This cell is disabled until you choose a frontmatter key for this column"; + if (isDisabled) { + return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + "div", + { + className: className + " dataloom-cell--body__container--no-padding", + style: { + width + }, + children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + DisabledCell, + { + hasValidFrontmatter: hasValidFrontmatter != null ? hasValidFrontmatter : true, + doesColumnHaveFrontmatterKey: frontmatterKey !== null + } + ) + } + ); } let contentNode = null; let menuNode = null; @@ -58037,8 +59332,8 @@ function BodyCellContainer(props) { handleCellContextClick = () => { copyTextToClipboard(content); }; - contentNode = /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(TextCell6, { value: content }); - menuNode = /* @__PURE__ */ (0, import_jsx_runtime85.jsx)( + contentNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(TextCell6, { value: content }); + menuNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( TextCellEdit, { cellId: id2, @@ -58065,8 +59360,8 @@ function BodyCellContainer(props) { handleCellContextClick = () => { copyTextToClipboard(content); }; - contentNode = /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(NumberCell7, { content }); - menuNode = /* @__PURE__ */ (0, import_jsx_runtime85.jsx)( + contentNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(NumberCell7, { content }); + menuNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( NumberCellEdit, { closeRequest: menu.closeRequest, @@ -58125,7 +59420,7 @@ function BodyCellContainer(props) { }; if (type === "tag" /* TAG */) { if (cellTags.length > 0) { - contentNode = /* @__PURE__ */ (0, import_jsx_runtime85.jsx)( + contentNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( TagCell6, { content: cellTags[0].content, @@ -58134,9 +59429,9 @@ function BodyCellContainer(props) { ); } } else { - contentNode = /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(MultiTagCell6, { cellTags }); + contentNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(MultiTagCell6, { cellTags }); } - menuNode = /* @__PURE__ */ (0, import_jsx_runtime85.jsx)( + menuNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( TagCellEdit, { isMulti: type === "multi-tag" /* MULTI_TAG */, @@ -58189,17 +59484,15 @@ function BodyCellContainer(props) { handleCellContextClick = () => { copyTextToClipboard(content); }; - function handleIncludeTimeToggle(value) { - return __async(this, null, function* () { - onColumnChange( - columnId, - { includeTime: value, frontmatterKey }, - { shouldSortRows: true } - ); - }); + async function handleIncludeTimeToggle(value) { + onColumnChange( + columnId, + { includeTime: value, frontmatterKey }, + { shouldSortRows: true } + ); } - contentNode = /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(DateCell6, { content }); - menuNode = /* @__PURE__ */ (0, import_jsx_runtime85.jsx)( + contentNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(DateCell6, { content }); + menuNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( DateCellEdit, { cellId: id2, @@ -58246,7 +59539,7 @@ function BodyCellContainer(props) { handleCheckboxChange2(true); } }); - contentNode = /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(CheckboxCell6, { value }); + contentNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(CheckboxCell6, { value }); break; } case "creation-time" /* CREATION_TIME */: { @@ -58259,7 +59552,7 @@ function BodyCellContainer(props) { handleCellContextClick = () => { copyTextToClipboard(content); }; - contentNode = /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(CreationTimeCell3, { value: content }); + contentNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(CreationTimeCell3, { value: content }); break; } case "last-edited-time" /* LAST_EDITED_TIME */: { @@ -58272,7 +59565,7 @@ function BodyCellContainer(props) { handleCellContextClick = () => { copyTextToClipboard(content); }; - contentNode = /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(LastEditedTimeCell3, { value: content }); + contentNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(LastEditedTimeCell3, { value: content }); break; } case "source" /* SOURCE */: { @@ -58284,7 +59577,7 @@ function BodyCellContainer(props) { if ((source == null ? void 0 : source.type) === "frontmatter" /* FRONTMATTER */) { propertyType = source == null ? void 0 : source.propertyType; } - contentNode = /* @__PURE__ */ (0, import_jsx_runtime85.jsx)( + contentNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( SourceCell3, { sourceType: source == null ? void 0 : source.type, @@ -58300,7 +59593,7 @@ function BodyCellContainer(props) { handleCellContextClick = () => { copyTextToClipboard(content); }; - contentNode = /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(SourceFileCell6, { content }); + contentNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(SourceFileCell6, { content }); break; } case "embed" /* EMBED */: { @@ -58315,7 +59608,7 @@ function BodyCellContainer(props) { handleMenuTriggerBackspaceDown = () => { onCellChange(id2, { pathOrUrl: "", alias: null }); }; - contentNode = /* @__PURE__ */ (0, import_jsx_runtime85.jsx)( + contentNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( EmbedCell6, { isExternal, @@ -58325,7 +59618,7 @@ function BodyCellContainer(props) { aspectRatio } ); - menuNode = /* @__PURE__ */ (0, import_jsx_runtime85.jsx)( + menuNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( EmbedCellEdit, { isExternalLink: isExternal, @@ -58347,8 +59640,8 @@ function BodyCellContainer(props) { handleCellContextClick = () => { copyTextToClipboard(content); }; - contentNode = /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(FileCell6, { content }); - menuNode = /* @__PURE__ */ (0, import_jsx_runtime85.jsx)( + contentNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(FileCell6, { content }); + menuNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( FileCellEdit, { onChange: handleFileChange, @@ -58360,11 +59653,10 @@ function BodyCellContainer(props) { default: throw new Error("Unhandled cell type"); } - return /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(import_jsx_runtime85.Fragment, { children: [ - /* @__PURE__ */ (0, import_jsx_runtime85.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(import_jsx_runtime86.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( menu_trigger_default, { - ariaLabel, ref: menu.triggerRef, variant: "cell", menuId: menu.id, @@ -58377,7 +59669,7 @@ function BodyCellContainer(props) { onOpen: () => menu.onOpen(1 /* ONE */, { shouldRequestOnClose }), - children: /* @__PURE__ */ (0, import_jsx_runtime85.jsx)( + children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( "div", { onContextMenu: handleCellContextClick, @@ -58390,7 +59682,7 @@ function BodyCellContainer(props) { ) } ), - /* @__PURE__ */ (0, import_jsx_runtime85.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( Menu, { id: menu.id, @@ -58436,7 +59728,7 @@ var getAcceptedFrontmatterTypes = (type) => { }; // src/shared/frontmatter/frontmatter-cache.ts -var FrontmatterCache = class { +var FrontmatterCache = class _FrontmatterCache { constructor() { this.cache = /* @__PURE__ */ new Map(); } @@ -58472,15 +59764,15 @@ var FrontmatterCache = class { } static getInstance() { if (!this.instance) { - this.instance = new FrontmatterCache(); + this.instance = new _FrontmatterCache(); } return this.instance; } }; // src/react/loom-app/table/index.tsx -var import_jsx_runtime86 = __toESM(require_jsx_runtime()); -var Table2 = import_react40.default.forwardRef(function Table3({ +var import_jsx_runtime87 = __toESM(require_jsx_runtime()); +var Table2 = import_react39.default.forwardRef(function Table3({ sources, rows, columns, @@ -58506,7 +59798,7 @@ var Table2 = import_react40.default.forwardRef(function Table3({ onRowReorder }, ref) { const previousRowLength = usePrevious(rows.length); - import_react40.default.useEffect(() => { + import_react39.default.useEffect(() => { var _a2; if (previousRowLength === void 0) return; @@ -58514,7 +59806,7 @@ var Table2 = import_react40.default.forwardRef(function Table3({ (_a2 = ref.current) == null ? void 0 : _a2.scrollToIndex(rows.length - 1); }, [ref, previousRowLength, rows.length]); const visibleColumns = columns.filter((column) => column.isVisible); - return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( TableVirtuoso, { ref, @@ -58524,29 +59816,28 @@ var Table2 = import_react40.default.forwardRef(function Table3({ height: "100%" }, totalCount: rows.length, - components: __spreadProps(__spreadValues({}, Components), { - TableRow: (_a2) => { - var _b = _a2, { style } = _b, props = __objRest(_b, ["style"]); - return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( - BodyRow, - __spreadProps(__spreadValues({}, props), { - style, - onRowReorder - }) - ); - } - }), + components: { + ...Components, + TableRow: ({ style, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( + BodyRow, + { + ...props, + style, + onRowReorder + } + ) + }, fixedHeaderContent: () => { const tableColumns = [null, ...visibleColumns, null]; - return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("div", { className: "dataloom-row", children: tableColumns.map((column, i2) => { + return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("div", { className: "dataloom-row", children: tableColumns.map((column, i2) => { let content; let key; if (column === null) { key = `filler-${i2}`; if (i2 === 0) { - content = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(import_jsx_runtime86.Fragment, {}); + content = /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(import_jsx_runtime87.Fragment, {}); } else { - content = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + content = /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( NewColumnButton, { onClick: onColumnAddClick @@ -58582,7 +59873,7 @@ var Table2 = import_react40.default.forwardRef(function Table3({ }) ); key = id2; - content = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + content = /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( HeaderCellContainer, { index: i2, @@ -58600,7 +59891,7 @@ var Table2 = import_react40.default.forwardRef(function Table3({ id2 ); } - return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( HeaderCell, { index: i2, @@ -58618,12 +59909,12 @@ var Table2 = import_react40.default.forwardRef(function Table3({ if (!showCalculationRow) return void 0; const columns2 = [null, ...visibleColumns, null]; - return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("div", { className: "dataloom-row", children: columns2.map((column, i2) => { + return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("div", { className: "dataloom-row", children: columns2.map((column, i2) => { let content; let key; if (column === null) { key = `filler-${i2}`; - content = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(import_jsx_runtime86.Fragment, {}); + content = /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(import_jsx_runtime87.Fragment, {}); } else { const { id: columnId, @@ -58649,7 +59940,7 @@ var Table2 = import_react40.default.forwardRef(function Table3({ return cell; }); key = columnId; - content = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + content = /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( FooterCellContainer, { sources, @@ -58668,7 +59959,7 @@ var Table2 = import_react40.default.forwardRef(function Table3({ } ); } - return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( FooterCell, { index: i2, @@ -58697,7 +59988,7 @@ var Table2 = import_react40.default.forwardRef(function Table3({ if (column === null) { key = `filler-${i2}`; if (i2 === 0) { - contentNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + contentNode = /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( RowOptions2, { source, @@ -58709,7 +60000,7 @@ var Table2 = import_react40.default.forwardRef(function Table3({ } ); } else { - contentNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(import_jsx_runtime86.Fragment, {}); + contentNode = /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(import_jsx_runtime87.Fragment, {}); } } else { const { @@ -58744,9 +60035,10 @@ var Table2 = import_react40.default.forwardRef(function Table3({ (source3) => source3.id === row.sourceId )) != null ? _a3 : null; key = column.id; - const { id: id2 } = cell; + const { id: id2, hasValidFrontmatter } = cell; const commonProps = { id: id2, + hasValidFrontmatter, columnId, frontmatterKey, verticalPadding, @@ -58772,33 +60064,36 @@ var Table2 = import_react40.default.forwardRef(function Table3({ switch (type) { case "text" /* TEXT */: { const { content } = cell; - contentNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + contentNode = /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( BodyCellContainer, - __spreadProps(__spreadValues({}, commonProps), { + { + ...commonProps, type, content - }), + }, id2 ); break; } case "number" /* NUMBER */: { const { value } = cell; - contentNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + contentNode = /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( BodyCellContainer, - __spreadProps(__spreadValues({}, commonProps), { + { + ...commonProps, type, value - }), + }, id2 ); break; } case "tag" /* TAG */: { const { tagId } = cell; - contentNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + contentNode = /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( BodyCellContainer, - __spreadProps(__spreadValues({}, commonProps), { + { + ...commonProps, type, tagId, onTagAdd, @@ -58807,16 +60102,17 @@ var Table2 = import_react40.default.forwardRef(function Table3({ onTagCellMultipleRemove, onTagChange, onTagDeleteClick - }), + }, id2 ); break; } case "multi-tag" /* MULTI_TAG */: { const { tagIds } = cell; - contentNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + contentNode = /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( BodyCellContainer, - __spreadProps(__spreadValues({}, commonProps), { + { + ...commonProps, type, tagIds, onCellChange, @@ -58826,101 +60122,109 @@ var Table2 = import_react40.default.forwardRef(function Table3({ onTagCellMultipleRemove, onTagChange, onTagDeleteClick - }), + }, id2 ); break; } case "file" /* FILE */: { const { path, alias } = cell; - contentNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + contentNode = /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( BodyCellContainer, - __spreadProps(__spreadValues({}, commonProps), { + { + ...commonProps, type, path, alias - }), + }, id2 ); break; } case "embed" /* EMBED */: { const { pathOrUrl, alias, isExternal } = cell; - contentNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + contentNode = /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( BodyCellContainer, - __spreadProps(__spreadValues({}, commonProps), { + { + ...commonProps, type, pathOrUrl, alias, isExternal - }), + }, id2 ); break; } case "checkbox" /* CHECKBOX */: { const { value } = cell; - contentNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + contentNode = /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( BodyCellContainer, - __spreadProps(__spreadValues({}, commonProps), { + { + ...commonProps, type, value - }), + }, id2 ); break; } case "date" /* DATE */: { const { dateTime } = cell; - contentNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + contentNode = /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( BodyCellContainer, - __spreadProps(__spreadValues({}, commonProps), { + { + ...commonProps, type, dateTime, onColumnChange - }), + }, id2 ); break; } case "creation-time" /* CREATION_TIME */: { - contentNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + contentNode = /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( BodyCellContainer, - __spreadProps(__spreadValues({}, commonProps), { + { + ...commonProps, type - }), + }, id2 ); break; } case "last-edited-time" /* LAST_EDITED_TIME */: { - contentNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + contentNode = /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( BodyCellContainer, - __spreadProps(__spreadValues({}, commonProps), { + { + ...commonProps, type - }), + }, id2 ); break; } case "source" /* SOURCE */: { - contentNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + contentNode = /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( BodyCellContainer, - __spreadProps(__spreadValues({}, commonProps), { + { + ...commonProps, type - }), + }, id2 ); break; } case "source-file" /* SOURCE_FILE */: { const { path } = cell; - contentNode = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + contentNode = /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( BodyCellContainer, - __spreadProps(__spreadValues({}, commonProps), { + { + ...commonProps, type, path - }), + }, id2 ); break; @@ -58931,7 +60235,7 @@ var Table2 = import_react40.default.forwardRef(function Table3({ ); } } - return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( BodyCell, { rowId, @@ -58947,59 +60251,53 @@ var Table2 = import_react40.default.forwardRef(function Table3({ ); }); var Components = { - Table: (_a2) => { - var props = __objRest(_a2, []); - return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("div", __spreadValues({ className: "dataloom-table" }, props)); + Table: ({ ...props }) => { + return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("div", { className: "dataloom-table", ...props }); }, - TableHead: import_react40.default.forwardRef((_b, ref) => { - var props = __objRest(_b, []); - return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( + //Don't apply styles because we want to apply sticky positioning + //to the cells, not the header container + TableHead: import_react39.default.forwardRef(({ ...props }, ref) => { + return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( "div", - __spreadProps(__spreadValues({ - className: "dataloom-header" - }, props), { + { + className: "dataloom-header", + ...props, style: { position: void 0, top: void 0, zIndex: void 0 }, ref - }) + } ); }), - TableBody: import_react40.default.forwardRef((_c, ref) => { - var _d = _c, { style } = _d, props = __objRest(_d, ["style"]); - return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("div", __spreadProps(__spreadValues({ className: "dataloom-body" }, props), { style, ref })); - }), - TableFoot: import_react40.default.forwardRef((_e, ref) => { - var props = __objRest(_e, []); - return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( - "div", - __spreadProps(__spreadValues({ - className: "dataloom-footer" - }, props), { - style: { - position: void 0, - bottom: void 0, - zIndex: void 0 - }, - ref - }) - ); - }), - FillerRow: ({ height }) => /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("div", { className: "dataloom-row", style: { height } }) + TableBody: import_react39.default.forwardRef(({ style, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("div", { className: "dataloom-body", ...props, style, ref })), + TableFoot: import_react39.default.forwardRef(({ ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( + "div", + { + className: "dataloom-footer", + ...props, + style: { + position: void 0, + bottom: void 0, + zIndex: void 0 + }, + ref + } + )), + FillerRow: ({ height }) => /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("div", { className: "dataloom-row", style: { height } }) }; var areEqual = (prevProps, nextProps) => { return import_lodash8.default.isEqual(prevProps, nextProps); }; -var table_default = import_react40.default.memo(Table2, areEqual); +var table_default = import_react39.default.memo(Table2, areEqual); // src/react/loom-app/option-bar/search-bar/index.tsx -var import_jsx_runtime87 = __toESM(require_jsx_runtime()); +var import_jsx_runtime88 = __toESM(require_jsx_runtime()); function SearchBar() { const { searchText, setSearchText, isSearchBarVisible, toggleSearchBar } = useLoomState(); - return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("div", { className: "dataloom-search-bar", children: /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(Stack, { spacing: "lg", isHorizontal: true, children: [ - isSearchBarVisible && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { className: "dataloom-search-bar", children: /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(Stack, { spacing: "lg", isHorizontal: true, children: [ + isSearchBarVisible && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( input_default, { placeholder: "Type to search...", @@ -59007,10 +60305,10 @@ function SearchBar() { onChange: (value) => setSearchText(value) } ), - /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( Button, { - icon: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(Icon, { lucideId: "search" }), + icon: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Icon, { lucideId: "search" }), ariaLabel: "Search", onClick: () => toggleSearchBar() } @@ -59019,23 +60317,23 @@ function SearchBar() { } // src/react/loom-app/option-bar/active-filter-bubble/index.tsx -var import_jsx_runtime88 = __toESM(require_jsx_runtime()); +var import_jsx_runtime89 = __toESM(require_jsx_runtime()); function ActiveFilterBubble({ numActive }) { if (numActive === 0) - return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_jsx_runtime88.Fragment, {}); + return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_jsx_runtime89.Fragment, {}); const value = `${numActive} active filter${numActive > 1 ? "s" : ""}`; - return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { className: "dataloom-active-filter-bubble", children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Bubble, { value }) }); + return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { className: "dataloom-active-filter-bubble", children: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(Bubble, { value }) }); } // src/react/loom-app/option-bar/more-menu/index.tsx -var import_react48 = __toESM(require_react()); +var import_react47 = __toESM(require_react()); // src/obsidian/modal/export-modal.tsx var import_obsidian16 = require("obsidian"); var import_client2 = __toESM(require_client()); // src/react/export-app/index.tsx -var import_react41 = __toESM(require_react()); +var import_react40 = __toESM(require_react()); // src/shared/export/types.ts var ExportType = /* @__PURE__ */ ((ExportType2) => { @@ -59046,26 +60344,26 @@ var ExportType = /* @__PURE__ */ ((ExportType2) => { })(ExportType || {}); // src/react/export-app/export-type-select.tsx -var import_jsx_runtime89 = __toESM(require_jsx_runtime()); +var import_jsx_runtime90 = __toESM(require_jsx_runtime()); function ExportTypeSelect({ value, onChange }) { - return /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(Stack, { spacing: "xl", children: [ - /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("label", { htmlFor: "type-select", children: "File Type" }), - /* @__PURE__ */ (0, import_jsx_runtime89.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)(Stack, { spacing: "xl", children: [ + /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("label", { htmlFor: "type-select", children: "File Type" }), + /* @__PURE__ */ (0, import_jsx_runtime90.jsx)( "select", { id: "type-select", value, onChange: (e) => onChange(e.target.value), - children: Object.values(ExportType).map((type) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("option", { value: type, children: type }, type)) + children: Object.values(ExportType).map((type) => /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("option", { value: type, children: type }, type)) } ) ] }); } // src/react/export-app/content-textarea.tsx -var import_jsx_runtime90 = __toESM(require_jsx_runtime()); +var import_jsx_runtime91 = __toESM(require_jsx_runtime()); function ContentTextArea({ value }) { - return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("textarea", { readOnly: true, value }); + return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("textarea", { readOnly: true, value }); } // node_modules/markdown-table/index.js @@ -59172,7 +60470,9 @@ function markdownTable(table, options = {}) { if (options.delimiterStart !== false && !columnIndex) { line.push("|"); } - if (options.padding !== false && !(options.alignDelimiters === false && cell === "") && (options.delimiterStart !== false || columnIndex)) { + if (options.padding !== false && // Don’t add the opening space if we’re not aligning and the cell is + // empty: there will be a closing space. + !(options.alignDelimiters === false && cell === "") && (options.delimiterStart !== false || columnIndex)) { line.push(" "); } if (options.alignDelimiters !== false) { @@ -59221,11 +60521,13 @@ var import_markdown_it = __toESM(require_markdown_it()); // node_modules/entities/lib/esm/generated/decode-data-html.js var decode_data_html_default = new Uint16Array( + // prettier-ignore '\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map((c2) => c2.charCodeAt(0)) ); // node_modules/entities/lib/esm/generated/decode-data-xml.js var decode_data_xml_default = new Uint16Array( + // prettier-ignore "\u0200aglq \x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map((c2) => c2.charCodeAt(0)) ); @@ -59233,6 +60535,7 @@ var decode_data_xml_default = new Uint16Array( var _a; var decodeMap = /* @__PURE__ */ new Map([ [0, 65533], + // C1 Unicode control character reference replacements [128, 8364], [130, 8218], [131, 402], @@ -59261,16 +60564,19 @@ var decodeMap = /* @__PURE__ */ new Map([ [158, 382], [159, 376] ]); -var fromCodePoint = (_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function(codePoint) { - let output = ""; - if (codePoint > 65535) { - codePoint -= 65536; - output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296); - codePoint = 56320 | codePoint & 1023; +var fromCodePoint = ( + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins + (_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function(codePoint) { + let output = ""; + if (codePoint > 65535) { + codePoint -= 65536; + output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296); + codePoint = 56320 | codePoint & 1023; + } + output += String.fromCharCode(codePoint); + return output; } - output += String.fromCharCode(codePoint); - return output; -}; +); function replaceCodePoint(codePoint) { var _a2; if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) { @@ -59340,6 +60646,7 @@ var EntityDecoder = class { this.excess = 1; this.decodeMode = DecodingMode.Strict; } + /** Resets the instance to make it reusable. */ startEntity(decodeMode) { this.decodeMode = decodeMode; this.state = EntityDecoderState.EntityStart; @@ -59348,6 +60655,17 @@ var EntityDecoder = class { this.excess = 1; this.consumed = 1; } + /** + * Write an entity to the decoder. This can be called multiple times with partial entities. + * If the entity is incomplete, the decoder will return -1. + * + * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the + * entity is incomplete, and resume when the next string is written. + * + * @param string The string containing the entity (or a continuation of the entity). + * @param offset The offset at which the entity begins. Should be 0 if this is not the first call. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ write(str, offset) { switch (this.state) { case EntityDecoderState.EntityStart: { @@ -59373,6 +60691,15 @@ var EntityDecoder = class { } } } + /** + * Switches between the numeric decimal and hexadecimal states. + * + * Equivalent to the `Numeric character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ stateNumericStart(str, offset) { if (offset >= str.length) { return -1; @@ -59392,6 +60719,15 @@ var EntityDecoder = class { this.consumed += digitCount; } } + /** + * Parses a hexadecimal numeric entity. + * + * Equivalent to the `Hexademical character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ stateNumericHex(str, offset) { const startIdx = offset; while (offset < str.length) { @@ -59406,6 +60742,15 @@ var EntityDecoder = class { this.addToNumericResult(str, startIdx, offset, 16); return -1; } + /** + * Parses a decimal numeric entity. + * + * Equivalent to the `Decimal character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ stateNumericDecimal(str, offset) { const startIdx = offset; while (offset < str.length) { @@ -59420,6 +60765,19 @@ var EntityDecoder = class { this.addToNumericResult(str, startIdx, offset, 10); return -1; } + /** + * Validate and emit a numeric entity. + * + * Implements the logic from the `Hexademical character reference start + * state` and `Numeric character reference end state` in the HTML spec. + * + * @param lastCp The last code point of the entity. Used to see if the + * entity was terminated with a semicolon. + * @param expectedLength The minimum number of characters that should be + * consumed. Used to validate that at least one digit + * was consumed. + * @returns The number of characters that were consumed. + */ emitNumericEntity(lastCp, expectedLength) { var _a2; if (this.consumed <= expectedLength) { @@ -59440,6 +60798,15 @@ var EntityDecoder = class { } return this.consumed; } + /** + * Parses a named entity. + * + * Equivalent to the `Named character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ stateNamedEntity(str, offset) { const { decodeTree } = this; let current = decodeTree[this.treeIndex]; @@ -59448,7 +60815,10 @@ var EntityDecoder = class { const char = str.charCodeAt(offset); this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char); if (this.treeIndex < 0) { - return this.result === 0 || this.decodeMode === DecodingMode.Attribute && (valueLength === 0 || isEntityInAttributeInvalidEnd(char)) ? 0 : this.emitNotTerminatedNamedEntity(); + return this.result === 0 || // If we are parsing an attribute + this.decodeMode === DecodingMode.Attribute && // We shouldn't have consumed any characters after the entity, + (valueLength === 0 || // And there should be no invalid characters. + isEntityInAttributeInvalidEnd(char)) ? 0 : this.emitNotTerminatedNamedEntity(); } current = decodeTree[this.treeIndex]; valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; @@ -59465,6 +60835,11 @@ var EntityDecoder = class { } return -1; } + /** + * Emit a named entity that was not terminated with a semicolon. + * + * @returns The number of characters consumed. + */ emitNotTerminatedNamedEntity() { var _a2; const { result, decodeTree } = this; @@ -59473,6 +60848,15 @@ var EntityDecoder = class { (_a2 = this.errors) === null || _a2 === void 0 ? void 0 : _a2.missingSemicolonAfterCharacterReference(); return this.consumed; } + /** + * Emit a named entity. + * + * @param result The index of the entity in the decode tree. + * @param valueLength The number of bytes in the entity. + * @param consumed The number of characters consumed. + * + * @returns The number of characters consumed. + */ emitNamedEntityData(result, valueLength, consumed) { const { decodeTree } = this; this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH : decodeTree[result + 1], consumed); @@ -59481,6 +60865,13 @@ var EntityDecoder = class { } return consumed; } + /** + * Signal to the parser that the end of the input was reached. + * + * Remaining data will be emitted and relevant errors will be produced. + * + * @returns The number of characters consumed. + */ end() { var _a2; switch (this.state) { @@ -59514,6 +60905,7 @@ function getDecoder(decodeTree) { decoder.startEntity(decodeMode); const len = decoder.write( str, + // Skip the "&" offset + 1 ); if (len < 0) { @@ -59611,9 +61003,10 @@ var State; State2[State2["InSpecialComment"] = 20] = "InSpecialComment"; State2[State2["InCommentLike"] = 21] = "InCommentLike"; State2[State2["BeforeSpecialS"] = 22] = "BeforeSpecialS"; - State2[State2["SpecialStartSequence"] = 23] = "SpecialStartSequence"; - State2[State2["InSpecialTag"] = 24] = "InSpecialTag"; - State2[State2["InEntity"] = 25] = "InEntity"; + State2[State2["BeforeSpecialT"] = 23] = "BeforeSpecialT"; + State2[State2["SpecialStartSequence"] = 24] = "SpecialStartSequence"; + State2[State2["InSpecialTag"] = 25] = "InSpecialTag"; + State2[State2["InEntity"] = 26] = "InEntity"; })(State || (State = {})); function isWhitespace(c2) { return c2 === CharCodes2.Space || c2 === CharCodes2.NewLine || c2 === CharCodes2.Tab || c2 === CharCodes2.FormFeed || c2 === CharCodes2.CarriageReturn; @@ -59633,11 +61026,30 @@ var QuoteType; })(QuoteType || (QuoteType = {})); var Sequences = { Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]), + // CDATA[ CdataEnd: new Uint8Array([93, 93, 62]), + // ]]> CommentEnd: new Uint8Array([45, 45, 62]), + // `-->` ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]), + // `<\/script` StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]), - TitleEnd: new Uint8Array([60, 47, 116, 105, 116, 108, 101]) + // `</style` + TitleEnd: new Uint8Array([60, 47, 116, 105, 116, 108, 101]), + // `</title` + TextareaEnd: new Uint8Array([ + 60, + 47, + 116, + 101, + 120, + 116, + 97, + 114, + 101, + 97 + ]) + // `</textarea` }; var Tokenizer = class { constructor({ xmlMode = false, decodeEntities = true }, cbs) { @@ -59698,7 +61110,13 @@ var Tokenizer = class { } stateSpecialStartSequence(c2) { const isEnd = this.sequenceIndex === this.currentSequence.length; - const isMatch = isEnd ? isEndOfTagSection(c2) : (c2 | 32) === this.currentSequence[this.sequenceIndex]; + const isMatch = isEnd ? ( + // If we are at the end of the sequence, make sure the tag name has ended + isEndOfTagSection(c2) + ) : ( + // Otherwise, do a case-insensitive comparison + (c2 | 32) === this.currentSequence[this.sequenceIndex] + ); if (!isMatch) { this.isSpecial = false; } else if (!isEnd) { @@ -59709,6 +61127,7 @@ var Tokenizer = class { this.state = State.InTagName; this.stateInTagName(c2); } + /** Look for an end tag. For <title> tags, also decode entities. */ stateInSpecialTag(c2) { if (this.sequenceIndex === this.currentSequence.length) { if (c2 === CharCodes2.Gt || isWhitespace(c2)) { @@ -59754,6 +61173,12 @@ var Tokenizer = class { this.stateInDeclaration(c2); } } + /** + * When we wait for one specific character, we can speed things up + * by skipping through the buffer until we find it. + * + * @returns Whether the character was found. + */ fastForwardTo(c2) { while (++this.index < this.buffer.length + this.offset) { if (this.buffer.charCodeAt(this.index - this.offset) === c2) { @@ -59763,6 +61188,14 @@ var Tokenizer = class { this.index = this.buffer.length + this.offset - 1; return false; } + /** + * Comments and CDATA end with `-->` and `]]>`. + * + * Their common qualities are: + * - Their end sequences have a distinct character they start with. + * - That character is then repeated, so we have to check multiple repeats. + * - All characters but the start character of the sequence can be skipped. + */ stateInCommentLike(c2) { if (c2 === this.currentSequence[this.sequenceIndex]) { if (++this.sequenceIndex === this.currentSequence.length) { @@ -59783,6 +61216,12 @@ var Tokenizer = class { this.sequenceIndex = 0; } } + /** + * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name. + * + * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar). + * We allow anything that wouldn't end the tag. + */ isTagStartChar(c2) { return this.xmlMode ? !isEndOfTagSection(c2) : isASCIIAlpha(c2); } @@ -59802,10 +61241,14 @@ var Tokenizer = class { } else if (this.isTagStartChar(c2)) { const lower = c2 | 32; this.sectionStart = this.index; - if (!this.xmlMode && lower === Sequences.TitleEnd[2]) { - this.startSpecial(Sequences.TitleEnd, 3); + if (this.xmlMode) { + this.state = State.InTagName; + } else if (lower === Sequences.ScriptEnd[2]) { + this.state = State.BeforeSpecialS; + } else if (lower === Sequences.TitleEnd[2]) { + this.state = State.BeforeSpecialT; } else { - this.state = !this.xmlMode && lower === Sequences.ScriptEnd[2] ? State.BeforeSpecialS : State.InTagName; + this.state = State.InTagName; } } else if (c2 === CharCodes2.Slash) { this.state = State.BeforeClosingTagName; @@ -59876,7 +61319,7 @@ var Tokenizer = class { stateInAttributeName(c2) { if (c2 === CharCodes2.Eq || isEndOfTagSection(c2)) { this.cbs.onattribname(this.sectionStart, this.index); - this.sectionStart = -1; + this.sectionStart = this.index; this.state = State.AfterAttributeName; this.stateAfterAttributeName(c2); } @@ -59885,11 +61328,12 @@ var Tokenizer = class { if (c2 === CharCodes2.Eq) { this.state = State.BeforeAttributeValue; } else if (c2 === CharCodes2.Slash || c2 === CharCodes2.Gt) { - this.cbs.onattribend(QuoteType.NoValue, this.index); + this.cbs.onattribend(QuoteType.NoValue, this.sectionStart); + this.sectionStart = -1; this.state = State.BeforeAttributeName; this.stateBeforeAttributeName(c2); } else if (!isWhitespace(c2)) { - this.cbs.onattribend(QuoteType.NoValue, this.index); + this.cbs.onattribend(QuoteType.NoValue, this.sectionStart); this.state = State.InAttributeName; this.sectionStart = this.index; } @@ -59911,7 +61355,7 @@ var Tokenizer = class { if (c2 === quote || !this.decodeEntities && this.fastForwardTo(quote)) { this.cbs.onattribdata(this.sectionStart, this.index); this.sectionStart = -1; - this.cbs.onattribend(quote === CharCodes2.DoubleQuote ? QuoteType.Double : QuoteType.Single, this.index); + this.cbs.onattribend(quote === CharCodes2.DoubleQuote ? QuoteType.Double : QuoteType.Single, this.index + 1); this.state = State.BeforeAttributeName; } else if (this.decodeEntities && c2 === CharCodes2.Amp) { this.startEntity(); @@ -59984,6 +61428,17 @@ var Tokenizer = class { this.stateInTagName(c2); } } + stateBeforeSpecialT(c2) { + const lower = c2 | 32; + if (lower === Sequences.TitleEnd[3]) { + this.startSpecial(Sequences.TitleEnd, 4); + } else if (lower === Sequences.TextareaEnd[3]) { + this.startSpecial(Sequences.TextareaEnd, 4); + } else { + this.state = State.InTagName; + this.stateInTagName(c2); + } + } startEntity() { this.baseState = this.state; this.state = State.InEntity; @@ -60001,6 +61456,9 @@ var Tokenizer = class { this.index = this.offset + this.buffer.length - 1; } } + /** + * Remove data that has already been consumed from the buffer. + */ cleanup() { if (this.running && this.sectionStart !== this.index) { if (this.state === State.Text || this.state === State.InSpecialTag && this.sequenceIndex === 0) { @@ -60015,6 +61473,11 @@ var Tokenizer = class { shouldContinue() { return this.index < this.buffer.length + this.offset && this.running; } + /** + * Iterates through the buffer, calling the function corresponding to the current state. + * + * States that are more likely to be hit are higher up, as a performance improvement. + */ parse() { while (this.shouldContinue()) { const c2 = this.buffer.charCodeAt(this.index - this.offset); @@ -60091,6 +61554,10 @@ var Tokenizer = class { this.stateBeforeSpecialS(c2); break; } + case State.BeforeSpecialT: { + this.stateBeforeSpecialT(c2); + break; + } case State.InAttributeValueNq: { this.stateInAttributeValueNoQuotes(c2); break; @@ -60132,6 +61599,7 @@ var Tokenizer = class { this.handleTrailingData(); this.cbs.onend(); } + /** Handle any trailing data. */ handleTrailingData() { const endIndex = this.buffer.length + this.offset; if (this.sectionStart >= endIndex) { @@ -60266,7 +61734,7 @@ var htmlIntegrationElements = /* @__PURE__ */ new Set([ var reNameEnd = /\s|\//; var Parser = class { constructor(cbs, options = {}) { - var _a2, _b, _c, _d, _e; + var _a2, _b, _c, _d, _e, _f; this.options = options; this.startIndex = 0; this.endIndex = 0; @@ -60284,10 +61752,13 @@ var Parser = class { this.htmlMode = !this.options.xmlMode; this.lowerCaseTagNames = (_a2 = options.lowerCaseTags) !== null && _a2 !== void 0 ? _a2 : this.htmlMode; this.lowerCaseAttributeNames = (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : this.htmlMode; - this.tokenizer = new ((_c = options.Tokenizer) !== null && _c !== void 0 ? _c : Tokenizer)(this.options, this); + this.recognizeSelfClosing = (_c = options.recognizeSelfClosing) !== null && _c !== void 0 ? _c : !this.htmlMode; + this.tokenizer = new ((_d = options.Tokenizer) !== null && _d !== void 0 ? _d : Tokenizer)(this.options, this); this.foreignContext = [!this.htmlMode]; - (_e = (_d = this.cbs).onparserinit) === null || _e === void 0 ? void 0 : _e.call(_d, this); + (_f = (_e = this.cbs).onparserinit) === null || _f === void 0 ? void 0 : _f.call(_e, this); } + // Tokenizer event handlers + /** @internal */ ontext(start, endIndex) { var _a2, _b; const data = this.getSlice(start, endIndex); @@ -60295,15 +61766,21 @@ var Parser = class { (_b = (_a2 = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a2, data); this.startIndex = endIndex; } + /** @internal */ ontextentity(cp, endIndex) { var _a2, _b; this.endIndex = endIndex - 1; (_b = (_a2 = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a2, fromCodePoint(cp)); this.startIndex = endIndex; } + /** + * Checks if the current tag is a void element. Override this if you want + * to specify your own additional void elements. + */ isVoidElement(name) { return this.htmlMode && voidElements.has(name); } + /** @internal */ onopentagname(start, endIndex) { this.endIndex = endIndex; let name = this.getSlice(start, endIndex); @@ -60349,11 +61826,13 @@ var Parser = class { } this.tagname = ""; } + /** @internal */ onopentagend(endIndex) { this.endIndex = endIndex; this.endOpenTag(false); this.startIndex = endIndex + 1; } + /** @internal */ onclosetag(start, endIndex) { var _a2, _b, _c, _d, _e, _f, _g, _h; this.endIndex = endIndex; @@ -60382,9 +61861,10 @@ var Parser = class { } this.startIndex = endIndex + 1; } + /** @internal */ onselfclosingtag(endIndex) { this.endIndex = endIndex; - if (this.options.recognizeSelfClosing || this.foreignContext[0]) { + if (this.recognizeSelfClosing || this.foreignContext[0]) { this.closeCurrentTag(false); this.startIndex = endIndex + 1; } else { @@ -60400,17 +61880,21 @@ var Parser = class { this.stack.shift(); } } + /** @internal */ onattribname(start, endIndex) { this.startIndex = start; const name = this.getSlice(start, endIndex); this.attribname = this.lowerCaseAttributeNames ? name.toLowerCase() : name; } + /** @internal */ onattribdata(start, endIndex) { this.attribvalue += this.getSlice(start, endIndex); } + /** @internal */ onattribentity(cp) { this.attribvalue += fromCodePoint(cp); } + /** @internal */ onattribend(quote, endIndex) { var _a2, _b; this.endIndex = endIndex; @@ -60428,6 +61912,7 @@ var Parser = class { } return name; } + /** @internal */ ondeclaration(start, endIndex) { this.endIndex = endIndex; const value = this.getSlice(start, endIndex); @@ -60437,6 +61922,7 @@ var Parser = class { } this.startIndex = endIndex + 1; } + /** @internal */ onprocessinginstruction(start, endIndex) { this.endIndex = endIndex; const value = this.getSlice(start, endIndex); @@ -60446,6 +61932,7 @@ var Parser = class { } this.startIndex = endIndex + 1; } + /** @internal */ oncomment(start, endIndex, offset) { var _a2, _b, _c, _d; this.endIndex = endIndex; @@ -60453,6 +61940,7 @@ var Parser = class { (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c); this.startIndex = endIndex + 1; } + /** @internal */ oncdata(start, endIndex, offset) { var _a2, _b, _c, _d, _e, _f, _g, _h, _j, _k; this.endIndex = endIndex; @@ -60467,6 +61955,7 @@ var Parser = class { } this.startIndex = endIndex + 1; } + /** @internal */ onend() { var _a2, _b; if (this.cbs.onclosetag) { @@ -60477,6 +61966,9 @@ var Parser = class { } (_b = (_a2 = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a2); } + /** + * Resets the parser to a blank state, ready to parse a new HTML document + */ reset() { var _a2, _b, _c, _d; (_b = (_a2 = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a2); @@ -60495,6 +61987,12 @@ var Parser = class { this.writeIndex = 0; this.ended = false; } + /** + * Resets the parser, then parses a complete document and + * pushes it to the handler. + * + * @param data Document to parse. + */ parseComplete(data) { this.reset(); this.end(data); @@ -60515,6 +62013,11 @@ var Parser = class { this.writeIndex--; this.buffers.shift(); } + /** + * Parses a chunk of data and calls the corresponding callbacks. + * + * @param chunk Chunk to parse. + */ write(chunk) { var _a2, _b; if (this.ended) { @@ -60527,6 +62030,11 @@ var Parser = class { this.writeIndex++; } } + /** + * Parses the end of the buffer and clears the stack, calls onend. + * + * @param chunk Optional final chunk to parse. + */ end(chunk) { var _a2, _b; if (this.ended) { @@ -60538,9 +62046,15 @@ var Parser = class { this.ended = true; this.tokenizer.end(); } + /** + * Pauses parsing. The parser won't emit events until `resume` is called. + */ pause() { this.tokenizer.pause(); } + /** + * Resumes parsing after `pause` was called. + */ resume() { this.tokenizer.resume(); while (this.tokenizer.running && this.writeIndex < this.buffers.length) { @@ -60549,9 +62063,21 @@ var Parser = class { if (this.ended) this.tokenizer.end(); } + /** + * Alias of `write`, for backwards compatibility. + * + * @param chunk Chunk to parse. + * @deprecated + */ parseChunk(chunk) { this.write(chunk); } + /** + * Alias of `end`, for backwards compatibility. + * + * @param chunk Optional final chunk to parse. + * @deprecated + */ done(chunk) { this.end(chunk); } @@ -60681,7 +62207,13 @@ var xmlCodeMap = /* @__PURE__ */ new Map([ [60, "<"], [62, ">"] ]); -var getCodePoint = String.prototype.codePointAt != null ? (str, index) => str.codePointAt(index) : (c2, index) => (c2.charCodeAt(index) & 64512) === 55296 ? (c2.charCodeAt(index) - 55296) * 1024 + c2.charCodeAt(index + 1) - 56320 + 65536 : c2.charCodeAt(index); +var getCodePoint = ( + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + String.prototype.codePointAt != null ? (str, index) => str.codePointAt(index) : ( + // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + (c2, index) => (c2.charCodeAt(index) & 64512) === 55296 ? (c2.charCodeAt(index) - 55296) * 1024 + c2.charCodeAt(index + 1) - 56320 + 65536 : c2.charCodeAt(index) + ) +); function encodeXML(str) { let ret = ""; let lastIdx = 0; @@ -60942,18 +62474,24 @@ function renderTag(elem, opts) { if (opts.xmlMode === "foreign") { elem.name = (_a2 = elementNames.get(elem.name)) !== null && _a2 !== void 0 ? _a2 : elem.name; if (elem.parent && foreignModeIntegrationPoints.has(elem.parent.name)) { - opts = __spreadProps(__spreadValues({}, opts), { xmlMode: false }); + opts = { ...opts, xmlMode: false }; } } if (!opts.xmlMode && foreignElements.has(elem.name)) { - opts = __spreadProps(__spreadValues({}, opts), { xmlMode: "foreign" }); + opts = { ...opts, xmlMode: "foreign" }; } let tag = `<${elem.name}`; const attribs = formatAttributes(elem.attribs, opts); if (attribs) { tag += ` ${attribs}`; } - if (elem.children.length === 0 && (opts.xmlMode ? opts.selfClosingTags !== false : opts.selfClosingTags && singleTag.has(elem.name))) { + if (elem.children.length === 0 && (opts.xmlMode ? ( + // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags + opts.selfClosingTags !== false + ) : ( + // User explicitly asked for self-closing tags, even in HTML mode + opts.selfClosingTags && singleTag.has(elem.name) + ))) { if (!opts.xmlMode) tag += " "; tag += "/>"; @@ -61666,14 +63204,14 @@ var loomStateToArray = (app, loomState, shouldRemoveMarkdown) => { // src/shared/export/export-utils.ts var escapePipeCharacters = (value) => value.replace(/\|/g, "\\|"); +var replaceNewLinesWithBreaks = (value) => value.replace(/\n/g, "<br>"); // src/shared/export/export-to-markdown.tsx var exportToMarkdown = (app, loomState, shouldRemoveMarkdown) => { - const arr = loomStateToArray(app, loomState, shouldRemoveMarkdown); - const escapedArr = arr.map( - (row) => row.map((cell) => escapePipeCharacters(cell)) - ); - return markdownTable(escapedArr); + let arr = loomStateToArray(app, loomState, shouldRemoveMarkdown); + arr = arr.map((row) => row.map((cell) => replaceNewLinesWithBreaks(cell))); + arr = arr.map((row) => row.map((cell) => escapePipeCharacters(cell))); + return markdownTable(arr); }; // src/react/export-app/index.tsx @@ -61721,22 +63259,20 @@ var exportToCSV = (app, loomState, shouldRemoveMarkdown) => { }; // src/react/export-app/index.tsx -var import_jsx_runtime91 = __toESM(require_jsx_runtime()); +var import_jsx_runtime92 = __toESM(require_jsx_runtime()); function ExportApp({ app, loomState, loomFilePath }) { - const [exportType, setExportType] = import_react41.default.useState( + const [exportType, setExportType] = import_react40.default.useState( "Select an option" /* UNSELECTED */ ); const { removeMarkdownOnExport } = useAppSelector( (state) => state.global.settings ); - const [shouldRemoveMarkdown, setRemoveMarkdown] = import_react41.default.useState( + const [shouldRemoveMarkdown, setRemoveMarkdown] = import_react40.default.useState( removeMarkdownOnExport ); - function handleCopyClick(value) { - return __async(this, null, function* () { - yield navigator.clipboard.writeText(value); - new import_obsidian15.Notice("Copied to clipboard"); - }); + async function handleCopyClick(value) { + await navigator.clipboard.writeText(value); + new import_obsidian15.Notice("Copied to clipboard"); } function handleDownloadClick() { const fileName = getExportFileName(loomFilePath); @@ -61749,12 +63285,12 @@ function ExportApp({ app, loomState, loomFilePath }) { } else if (exportType === "CSV" /* CSV */) { content = exportToCSV(app, loomState, shouldRemoveMarkdown); } - return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("div", { className: "dataloom-export-app", children: /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)(Stack, { spacing: "xl", width: "100%", children: [ - /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(ExportTypeSelect, { value: exportType, onChange: setExportType }), - exportType !== "Select an option" /* UNSELECTED */ && /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)(import_jsx_runtime91.Fragment, { children: [ - /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)(Stack, { spacing: "sm", children: [ - /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("label", { htmlFor: "remove-markdown", children: "Remove markdown" }), - /* @__PURE__ */ (0, import_jsx_runtime91.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("div", { className: "dataloom-export-app", children: /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(Stack, { spacing: "xl", width: "100%", children: [ + /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(ExportTypeSelect, { value: exportType, onChange: setExportType }), + exportType !== "Select an option" /* UNSELECTED */ && /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(import_jsx_runtime92.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(Stack, { spacing: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("label", { htmlFor: "remove-markdown", children: "Remove markdown" }), + /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( Switch, { id: "remove-markdown", @@ -61763,9 +63299,9 @@ function ExportApp({ app, loomState, loomFilePath }) { } ) ] }), - /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(ContentTextArea, { value: content }), - /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)(Stack, { isHorizontal: true, children: [ - /* @__PURE__ */ (0, import_jsx_runtime91.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(ContentTextArea, { value: content }), + /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(Stack, { isHorizontal: true, children: [ + /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( "button", { className: "mod-cta", @@ -61773,7 +63309,7 @@ function ExportApp({ app, loomState, loomFilePath }) { children: "Download" } ), - /* @__PURE__ */ (0, import_jsx_runtime91.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( "button", { className: "dataloom-copy-button", @@ -61787,7 +63323,7 @@ function ExportApp({ app, loomState, loomFilePath }) { } // src/obsidian/modal/export-modal.tsx -var import_jsx_runtime92 = __toESM(require_jsx_runtime()); +var import_jsx_runtime93 = __toESM(require_jsx_runtime()); var ExportModal = class extends import_obsidian16.Modal { constructor(app, loomFile, loomState) { super(app); @@ -61803,20 +63339,18 @@ var ExportModal = class extends import_obsidian16.Modal { const appContainerEl = contentEl.createDiv(); this.renderApp(appContainerEl); } - renderApp(contentEl) { - return __async(this, null, function* () { - this.root = (0, import_client2.createRoot)(contentEl); - this.root.render( - /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(Provider_default, { store, children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( - ExportApp, - { - app: this.app, - loomState: this.loomState, - loomFilePath: this.loomFile.path - } - ) }) - ); - }); + async renderApp(contentEl) { + this.root = (0, import_client2.createRoot)(contentEl); + this.root.render( + /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Provider_default, { store, children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)( + ExportApp, + { + app: this.app, + loomState: this.loomState, + loomFilePath: this.loomFile.path + } + ) }) + ); } onClose() { if (this.root) @@ -61829,7 +63363,7 @@ var import_obsidian17 = require("obsidian"); var import_client3 = __toESM(require_client()); // src/react/import-app/index.tsx -var import_react47 = __toESM(require_react()); +var import_react46 = __toESM(require_react()); var import_papaparse2 = __toESM(require_papaparse_min()); // src/react/import-app/types.ts @@ -61847,39 +63381,39 @@ var DataSource = /* @__PURE__ */ ((DataSource2) => { })(DataSource || {}); // src/react/import-app/data-type-select.tsx -var import_jsx_runtime93 = __toESM(require_jsx_runtime()); +var import_jsx_runtime94 = __toESM(require_jsx_runtime()); function DataTypeSelect({ value, onChange }) { - return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("div", { className: "dataloom-data-type-select", children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Stack, { children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("div", { className: "dataloom-data-type-select", children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Stack, { children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)( "select", { value, onChange: (e) => onChange(e.target.value), - children: Object.values(DataType).map((type) => /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("option", { value: type, children: type }, type)) + children: Object.values(DataType).map((type) => /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("option", { value: type, children: type }, type)) } ) }) }); } // src/react/shared/stepper/index.tsx -var import_react42 = __toESM(require_react()); +var import_react41 = __toESM(require_react()); // src/react/shared/stepper/step-spacer.tsx -var import_jsx_runtime94 = __toESM(require_jsx_runtime()); +var import_jsx_runtime95 = __toESM(require_jsx_runtime()); function StepSpacer() { - return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("div", { className: "dataloom-step__spacer" }); + return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("div", { className: "dataloom-step__spacer" }); } // src/react/shared/stepper/step-content.tsx -var import_jsx_runtime95 = __toESM(require_jsx_runtime()); +var import_jsx_runtime96 = __toESM(require_jsx_runtime()); function StepContent({ content, addTopMargin }) { let className = "dataloom-step__content"; if (addTopMargin) { className += " dataloom-step__content--margin-top"; } - return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("div", { className, children: content }); + return /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className, children: content }); } // src/react/shared/stepper/step-buttons.tsx -var import_jsx_runtime96 = __toESM(require_jsx_runtime()); +var import_jsx_runtime97 = __toESM(require_jsx_runtime()); function StepButtons({ isFirstStep, isLastStep, @@ -61888,8 +63422,8 @@ function StepButtons({ onNextClick, onBackClick }) { - return /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: "dataloom-step__buttons", children: /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(Stack, { isHorizontal: true, spacing: "md", children: [ - /* @__PURE__ */ (0, import_jsx_runtime96.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("div", { className: "dataloom-step__buttons", children: /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(Stack, { isHorizontal: true, spacing: "md", children: [ + /* @__PURE__ */ (0, import_jsx_runtime97.jsx)( Button, { isDisabled: isNextDisabled, @@ -61898,12 +63432,12 @@ function StepButtons({ children: isLastStep ? finishButtonLabel : "Next" } ), - !isFirstStep && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(Button, { onClick: onBackClick, children: "Back" }) + !isFirstStep && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Button, { onClick: onBackClick, children: "Back" }) ] }) }); } // src/react/shared/stepper/step-indicator.tsx -var import_jsx_runtime97 = __toESM(require_jsx_runtime()); +var import_jsx_runtime98 = __toESM(require_jsx_runtime()); function StepIndicator({ index, isComplete, onClick }) { function handleClick() { if (!isComplete) @@ -61914,11 +63448,11 @@ function StepIndicator({ index, isComplete, onClick }) { if (isComplete) { className += " dataloom-step__indicator--complete"; } - return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("div", { className, onClick: handleClick, children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Flex, { justify: "center", align: "center", height: "100%", children: isComplete ? /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Icon, { lucideId: "checkmark", size: "lg" }) : /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Text, { value: index + 1, variant: "semibold", size: "lg" }) }) }); + return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className, onClick: handleClick, children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(Flex, { justify: "center", align: "center", height: "100%", children: isComplete ? /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(Icon, { lucideId: "checkmark", size: "lg" }) : /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(Text, { value: index + 1, variant: "semibold", size: "lg" }) }) }); } // src/react/shared/stepper/step-text.tsx -var import_jsx_runtime98 = __toESM(require_jsx_runtime()); +var import_jsx_runtime99 = __toESM(require_jsx_runtime()); function StepText({ title, description, @@ -61934,14 +63468,14 @@ function StepText({ if (isComplete) { className += " dataloom-step__text--complete"; } - return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(Stack, { spacing: "sm", onClick: handleClick, children: [ - /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(Text, { variant: "semibold", size: "lg", value: title }), - description && /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(Text, { size: "md", value: description }) + return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Stack, { spacing: "sm", onClick: handleClick, children: [ + /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { variant: "semibold", size: "lg", value: title }), + description && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { size: "md", value: description }) ] }) }); } // src/react/shared/stepper/step-header.tsx -var import_jsx_runtime99 = __toESM(require_jsx_runtime()); +var import_jsx_runtime100 = __toESM(require_jsx_runtime()); function StepHeader({ title, description, @@ -61954,8 +63488,8 @@ function StepHeader({ className += " dataloom-step__header--margin-bottom"; } const isComplete = activeIndex > index; - return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Stack, { isHorizontal: true, children: [ - /* @__PURE__ */ (0, import_jsx_runtime99.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(Stack, { isHorizontal: true, children: [ + /* @__PURE__ */ (0, import_jsx_runtime100.jsx)( StepIndicator, { index, @@ -61963,7 +63497,7 @@ function StepHeader({ onClick: () => onClick(index) } ), - /* @__PURE__ */ (0, import_jsx_runtime99.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime100.jsx)( StepText, { title, @@ -61976,23 +63510,23 @@ function StepHeader({ } // src/react/shared/stepper/step-separator.tsx -var import_jsx_runtime100 = __toESM(require_jsx_runtime()); +var import_jsx_runtime101 = __toESM(require_jsx_runtime()); function StepSeparator({ hideBorder }) { let className = "dataloom-step__separator"; if (hideBorder) { className += " dataloom-step__separator--no-border"; } - return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("div", { className }); + return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className }); } // src/react/shared/stepper/index.tsx -var import_jsx_runtime101 = __toESM(require_jsx_runtime()); +var import_jsx_runtime102 = __toESM(require_jsx_runtime()); function Stepper({ steps, finishButtonLabel = "Finish", onFinishClick }) { - const [activeIndex, setActiveIndex] = import_react42.default.useState(0); + const [activeIndex, setActiveIndex] = import_react41.default.useState(0); const activeStep = steps[activeIndex]; function handleStepHeaderClick(index) { var _a2, _b; @@ -62021,15 +63555,15 @@ function Stepper({ } const isFirstStep = activeIndex === 0; const isLastStep = activeIndex === steps.length - 1; - return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "dataloom-stepper", children: steps.map((step, i2) => { + return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { className: "dataloom-stepper", children: steps.map((step, i2) => { const { title, description, content, canContinue = true } = step; - return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "dataloom-step", children: [ - /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("div", { className: "dataloom-step", children: [ + /* @__PURE__ */ (0, import_jsx_runtime102.jsx)( StepHeader, { title, @@ -62039,17 +63573,17 @@ function Stepper({ onClick: handleStepHeaderClick } ), - i2 === activeIndex && /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(Stack, { isHorizontal: true, children: [ - /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(StepSeparator, { hideBorder: isLastStep }), - /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(Stack, { spacing: "lg", width: "100%", children: [ - /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( + i2 === activeIndex && /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(Stack, { isHorizontal: true, children: [ + /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(StepSeparator, { hideBorder: isLastStep }), + /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(Stack, { spacing: "lg", width: "100%", children: [ + /* @__PURE__ */ (0, import_jsx_runtime102.jsx)( StepContent, { content, addTopMargin: description !== void 0 } ), - /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime102.jsx)( StepButtons, { isNextDisabled: canContinue instanceof Function ? !canContinue() : !canContinue, @@ -62062,20 +63596,20 @@ function Stepper({ ) ] }) ] }), - i2 < steps.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(StepSpacer, {}) + i2 < steps.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(StepSpacer, {}) ] }, i2); }) }); } // src/react/import-app/data-source-select.tsx -var import_jsx_runtime102 = __toESM(require_jsx_runtime()); +var import_jsx_runtime103 = __toESM(require_jsx_runtime()); function DataSourceSelect({ value, onChange }) { - return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { className: "dataloom-data-source-select", children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Stack, { children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: "dataloom-data-source-select", children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Stack, { children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)( "select", { value, onChange: (e) => onChange(e.target.value), - children: Object.values(DataSource).map((type) => /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("option", { value: type, children: type }, type)) + children: Object.values(DataSource).map((type) => /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("option", { value: type, children: type }, type)) } ) }) }); } @@ -62093,7 +63627,7 @@ var getAcceptForDataType = (value) => { }; // src/react/import-app/upload-data/file-input/index.tsx -var import_jsx_runtime103 = __toESM(require_jsx_runtime()); +var import_jsx_runtime104 = __toESM(require_jsx_runtime()); function FileInput({ hasHeadersRow, fileName, @@ -62115,10 +63649,10 @@ function FileInput({ reader.readAsText(file); } const accept = getAcceptForDataType(dataType); - return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: "dataloom-file-input", children: /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(Stack, { spacing: "2xl", children: [ - /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(Stack, { children: [ - /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Text, { value: fileName != null ? fileName : "No file chosen" }), - /* @__PURE__ */ (0, import_jsx_runtime103.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("div", { className: "dataloom-file-input", children: /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(Stack, { spacing: "2xl", children: [ + /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(Stack, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Text, { value: fileName != null ? fileName : "No file chosen" }), + /* @__PURE__ */ (0, import_jsx_runtime104.jsx)( "input", { type: "file", @@ -62127,9 +63661,9 @@ function FileInput({ } ) ] }), - accept === ".csv" && /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(Stack, { spacing: "sm", children: [ - /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("label", { htmlFor: "has-headers", children: "First row contains headers" }), - /* @__PURE__ */ (0, import_jsx_runtime103.jsx)( + accept === ".csv" && /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(Stack, { spacing: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("label", { htmlFor: "has-headers", children: "First row contains headers" }), + /* @__PURE__ */ (0, import_jsx_runtime104.jsx)( Switch, { id: "has-headers", @@ -62142,13 +63676,13 @@ function FileInput({ } // src/react/import-app/upload-data/upload-textarea.tsx -var import_jsx_runtime104 = __toESM(require_jsx_runtime()); +var import_jsx_runtime105 = __toESM(require_jsx_runtime()); function UploadTextarea({ value, onChange }) { - return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("textarea", { value, onChange: (e) => onChange(e.target.value) }); + return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("textarea", { value, onChange: (e) => onChange(e.target.value) }); } // src/react/import-app/upload-data/index.tsx -var import_jsx_runtime105 = __toESM(require_jsx_runtime()); +var import_jsx_runtime106 = __toESM(require_jsx_runtime()); function UploadData({ source, fileName, @@ -62159,9 +63693,9 @@ function UploadData({ onRawDataChange, onHeadersRowToggle }) { - return /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)("div", { className: "dataloom-upload-data", children: [ - source === "Paste from clipboard" /* PASTE */ && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(UploadTextarea, { value: rawData, onChange: onRawDataChange }), - source === "File" /* FILE */ && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)("div", { className: "dataloom-upload-data", children: [ + source === "Paste from clipboard" /* PASTE */ && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(UploadTextarea, { value: rawData, onChange: onRawDataChange }), + source === "File" /* FILE */ && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)( FileInput, { fileName, @@ -62171,15 +63705,15 @@ function UploadData({ onDataChange: onRawDataChange } ), - errorText !== null && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Text, { variant: "error", value: errorText, size: "sm" }) + errorText !== null && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Text, { variant: "error", value: errorText, size: "sm" }) ] }); } // src/react/import-app/match-columns/index.tsx -var import_react45 = __toESM(require_react()); +var import_react44 = __toESM(require_react()); // src/react/import-app/match-columns/body-cell.tsx -var import_jsx_runtime106 = __toESM(require_jsx_runtime()); +var import_jsx_runtime107 = __toESM(require_jsx_runtime()); function BodyCell2({ value, isDisabled }) { const overflowClassName = useOverflow(false, { ellipsis: true @@ -62187,18 +63721,18 @@ function BodyCell2({ value, isDisabled }) { let className = overflowClassName; if (isDisabled) className += " dataloom-disabled"; - return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("td", { className, children: value }); + return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("td", { className, children: value }); } // src/react/shared/model-menu/index.tsx -var import_react44 = __toESM(require_react()); +var import_react43 = __toESM(require_react()); // src/react/shared/modal-mount-provider/index.tsx -var import_react43 = __toESM(require_react()); -var import_jsx_runtime107 = __toESM(require_jsx_runtime()); -var MountContext2 = import_react43.default.createContext(null); +var import_react42 = __toESM(require_react()); +var import_jsx_runtime108 = __toESM(require_jsx_runtime()); +var MountContext2 = import_react42.default.createContext(null); var useModalMount = () => { - const value = import_react43.default.useContext(MountContext2); + const value = import_react42.default.useContext(MountContext2); if (value === null) { throw new Error( "useModalMount() called without a <ModalMountProvider /> in the tree." @@ -62211,11 +63745,11 @@ function ModalMountProvider({ modalEl, children }) { - return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(MountContext2.Provider, { value: { obsidianApp, modalEl }, children }); + return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(MountContext2.Provider, { value: { obsidianApp, modalEl }, children }); } // src/react/shared/model-menu/index.tsx -var import_jsx_runtime108 = __toESM(require_jsx_runtime()); +var import_jsx_runtime109 = __toESM(require_jsx_runtime()); function ModalMenu({ id: id2, isOpen, @@ -62228,12 +63762,12 @@ function ModalMenu({ maxWidth = 0, children }) { - const ref = import_react44.default.useRef(null); + const ref = import_react43.default.useRef(null); const { modalEl } = useModalMount(); useShiftMenu(true, modalEl, ref, position, isOpen, { openDirection }); - return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)( base_menu_default, { ref, @@ -62254,7 +63788,7 @@ function ModalMenu({ var NEW_COLUMN_ID = "new-column"; // src/react/import-app/match-columns/match-column-menu.tsx -var import_jsx_runtime109 = __toESM(require_jsx_runtime()); +var import_jsx_runtime110 = __toESM(require_jsx_runtime()); function MatchColumnMenu({ id: id2, position, @@ -62264,7 +63798,7 @@ function MatchColumnMenu({ selectedColumnId, onColumnClick }) { - return /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)( + return /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)( ModalMenu, { id: id2, @@ -62272,12 +63806,14 @@ function MatchColumnMenu({ position, openDirection: "bottom-left", children: [ - columns.map((column) => { + columns.filter( + (column) => column.type !== "source" /* SOURCE */ && column.type !== "source-file" /* SOURCE_FILE */ && column.type !== "last-edited-time" /* LAST_EDITED_TIME */ && column.type !== "creation-time" /* CREATION_TIME */ + ).map((column) => { const { id: id3, content, type } = column; const isDisabled = columnMatches.some( (match) => match.columnId === id3 ); - return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)( MenuItem, { name: content, @@ -62289,8 +63825,8 @@ function MatchColumnMenu({ id3 ); }), - /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Divider, {}), - /* @__PURE__ */ (0, import_jsx_runtime109.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Divider, {}), + /* @__PURE__ */ (0, import_jsx_runtime110.jsx)( MenuItem, { name: "Match as new", @@ -62298,9 +63834,9 @@ function MatchColumnMenu({ isSelected: selectedColumnId === NEW_COLUMN_ID } ), - selectedColumnId !== null && /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_jsx_runtime109.Fragment, { children: [ - /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Divider, {}), - /* @__PURE__ */ (0, import_jsx_runtime109.jsx)( + selectedColumnId !== null && /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(import_jsx_runtime110.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Divider, {}), + /* @__PURE__ */ (0, import_jsx_runtime110.jsx)( MenuItem, { name: "Unmatch", @@ -62314,7 +63850,7 @@ function MatchColumnMenu({ } // src/react/import-app/match-columns/header-cell.tsx -var import_jsx_runtime110 = __toESM(require_jsx_runtime()); +var import_jsx_runtime111 = __toESM(require_jsx_runtime()); function HeaderCell2({ isDisabled, columns, @@ -62334,8 +63870,8 @@ function HeaderCell2({ onColumnMatch(index, columnId); menu.onClose(); } - return /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(import_jsx_runtime110.Fragment, { children: [ - /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("th", { className: overflowClassName, children: /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)( + return /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_jsx_runtime111.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime111.jsx)("th", { className: overflowClassName, children: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)( Stack, { className: isDisabled ? "dataloom-disabled" : void 0, @@ -62344,9 +63880,9 @@ function HeaderCell2({ spacing: "xl", width: "100%", children: [ - /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(Stack, { isHorizontal: true, spacing: "sm", children: [ - /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Text, { value: importValue }), - /* @__PURE__ */ (0, import_jsx_runtime110.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(Stack, { isHorizontal: true, spacing: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Text, { value: importValue }), + /* @__PURE__ */ (0, import_jsx_runtime111.jsx)( Icon, { color: matchId ? "green" : "red", @@ -62356,8 +63892,8 @@ function HeaderCell2({ } ) ] }), - /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(Stack, { isHorizontal: true, spacing: "sm", children: [ - /* @__PURE__ */ (0, import_jsx_runtime110.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(Stack, { isHorizontal: true, spacing: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime111.jsx)( "input", { "aria-label": isDisabled ? "Enable column" : "Disable column", @@ -62366,7 +63902,7 @@ function HeaderCell2({ onChange: () => onColumnEnabledToggle(index) } ), - /* @__PURE__ */ (0, import_jsx_runtime110.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime111.jsx)( menu_button_default, { ref: menu.triggerRef, @@ -62374,7 +63910,7 @@ function HeaderCell2({ menuId: menu.id, level: 1 /* ONE */, ariaLabel: "Match column", - icon: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Icon, { lucideId: "columns", size: "lg" }), + icon: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Icon, { lucideId: "columns", size: "lg" }), onOpen: () => menu.onOpen(1 /* ONE */, { shouldFocusTriggerOnClose: false }) @@ -62384,7 +63920,7 @@ function HeaderCell2({ ] } ) }), - /* @__PURE__ */ (0, import_jsx_runtime110.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime111.jsx)( MatchColumnMenu, { id: menu.id, @@ -62400,7 +63936,7 @@ function HeaderCell2({ } // src/react/import-app/match-columns/bulk-options-menu.tsx -var import_jsx_runtime111 = __toESM(require_jsx_runtime()); +var import_jsx_runtime112 = __toESM(require_jsx_runtime()); function BulkOptionsMenu({ id: id2, position, @@ -62408,7 +63944,7 @@ function BulkOptionsMenu({ onAllColumnsEnabledToggle, onAllColumnsMatch }) { - return /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)( + return /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)( ModalMenu, { id: id2, @@ -62416,28 +63952,28 @@ function BulkOptionsMenu({ position, openDirection: "bottom", children: [ - /* @__PURE__ */ (0, import_jsx_runtime111.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime112.jsx)( MenuItem, { name: "Match all as new", onClick: () => onAllColumnsMatch(NEW_COLUMN_ID) } ), - /* @__PURE__ */ (0, import_jsx_runtime111.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime112.jsx)( MenuItem, { name: "Disable all", onClick: () => onAllColumnsEnabledToggle(false) } ), - /* @__PURE__ */ (0, import_jsx_runtime111.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime112.jsx)( MenuItem, { name: "Enable all", onClick: () => onAllColumnsEnabledToggle(true) } ), - /* @__PURE__ */ (0, import_jsx_runtime111.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime112.jsx)( MenuItem, { name: "Unmatch all", @@ -62450,7 +63986,7 @@ function BulkOptionsMenu({ } // src/react/import-app/match-columns/index.tsx -var import_jsx_runtime112 = __toESM(require_jsx_runtime()); +var import_jsx_runtime113 = __toESM(require_jsx_runtime()); function MatchColumns({ columns, columnMatches, @@ -62461,11 +63997,11 @@ function MatchColumns({ onAllColumnsMatch, onColumnMatch }) { - const containerRef = import_react45.default.useRef(null); + const containerRef = import_react44.default.useRef(null); const COMPONENT_ID = "match-columns"; const menu = useMenu(COMPONENT_ID); const menuOperations = useMenuOperations(); - import_react45.default.useEffect(() => { + import_react44.default.useEffect(() => { function handleScroll() { menuOperations.onCloseAll(); } @@ -62505,9 +64041,9 @@ function MatchColumns({ } else { infoMessage = `There are ${numUnmatched} unmatched columns. Please match them to continue`; } - return /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(import_jsx_runtime112.Fragment, { children: [ - /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("div", { className: "dataloom-match-columns", children: [ - /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Padding, { pb: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { style: { width: "fit-content" }, children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(import_jsx_runtime113.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)("div", { className: "dataloom-match-columns", children: [ + /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(Padding, { pb: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime113.jsx)("div", { style: { width: "fit-content" }, children: /* @__PURE__ */ (0, import_jsx_runtime113.jsx)( menu_button_default, { menuId: menu.id, @@ -62521,18 +64057,18 @@ function MatchColumns({ children: "Bulk operations" } ) }) }), - /* @__PURE__ */ (0, import_jsx_runtime112.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime113.jsx)( "div", { ref: containerRef, className: "dataloom-match-columns__container", - children: /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("table", { children: [ - /* @__PURE__ */ (0, import_jsx_runtime112.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)("tr", { children: data[0].map((header, i2) => { + children: /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)("table", { children: [ + /* @__PURE__ */ (0, import_jsx_runtime113.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime113.jsx)("tr", { children: data[0].map((header, i2) => { var _a2, _b; const matchId = (_b = (_a2 = columnMatches.find( (match) => match.importColumnIndex === i2 )) == null ? void 0 : _a2.columnId) != null ? _b : null; - return /* @__PURE__ */ (0, import_jsx_runtime112.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime113.jsx)( HeaderCell2, { isDisabled: !enabledColumnIndices.includes( @@ -62549,7 +64085,7 @@ function MatchColumns({ i2 ); }) }) }), - /* @__PURE__ */ (0, import_jsx_runtime112.jsx)("tbody", { children: data.slice(1).map((row, i2) => /* @__PURE__ */ (0, import_jsx_runtime112.jsx)("tr", { children: row.map((cell, j2) => /* @__PURE__ */ (0, import_jsx_runtime112.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime113.jsx)("tbody", { children: data.slice(1).map((row, i2) => /* @__PURE__ */ (0, import_jsx_runtime113.jsx)("tr", { children: row.map((cell, j2) => /* @__PURE__ */ (0, import_jsx_runtime113.jsx)( BodyCell2, { value: cell, @@ -62562,8 +64098,8 @@ function MatchColumns({ ] }) } ), - /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Padding, { pt: "3xl", children: /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(Stack, { spacing: "sm", children: [ - /* @__PURE__ */ (0, import_jsx_runtime112.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(Padding, { pt: "3xl", children: /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(Stack, { spacing: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime113.jsx)( Text, { size: "sm", @@ -62571,10 +64107,10 @@ function MatchColumns({ value: `Importing ${enabledColumnIndices.length} of ${data[0].length} columns` } ), - /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Text, { size: "sm", variant: "muted", value: infoMessage }) + /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(Text, { size: "sm", variant: "muted", value: infoMessage }) ] }) }) ] }), - /* @__PURE__ */ (0, import_jsx_runtime112.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime113.jsx)( BulkOptionsMenu, { id: menu.id, @@ -62713,45 +64249,51 @@ var createRow = (index, options) => { }; }; var createTextCell = (columnId, options) => { - const { content = "" } = options != null ? options : {}; + const { content = "", hasValidFrontmatter = null } = options != null ? options : {}; return { id: generateUuid(), columnId, - content + content, + hasValidFrontmatter }; }; var createNumberCell = (columnId, options) => { - const { value = null } = options != null ? options : {}; + const { value = null, hasValidFrontmatter = null } = options != null ? options : {}; return { id: generateUuid(), columnId, - value + value, + hasValidFrontmatter }; }; var createDateCell = (columnId, options) => { - const { dateTime = null } = options != null ? options : {}; + const { dateTime = null, hasValidFrontmatter = null } = options != null ? options : {}; return { id: generateUuid(), columnId, - dateTime + dateTime, + hasValidFrontmatter }; }; var createLastEditedTimeCell = (columnId) => { return { id: generateUuid(), - columnId + columnId, + hasValidFrontmatter: null }; }; var createCreationTimeCell = (columnId) => { return { id: generateUuid(), - columnId + columnId, + hasValidFrontmatter: null }; }; var createSourceCell = (columnId) => { return { id: generateUuid(), - columnId + columnId, + hasValidFrontmatter: null }; }; var createSourceFileCell = (columnId, options) => { @@ -62759,50 +64301,65 @@ var createSourceFileCell = (columnId, options) => { return { id: generateUuid(), columnId, - path + path, + hasValidFrontmatter: null }; }; var createEmbedCell = (columnId, options) => { - const { isExternal = false, pathOrUrl = "", alias = null } = options || {}; + const { + isExternal = false, + pathOrUrl = "", + alias = null, + hasValidFrontmatter = null + } = options || {}; return { id: generateUuid(), columnId, isExternal, pathOrUrl, - alias + alias, + hasValidFrontmatter }; }; var createFileCell = (columnId, options) => { - const { path = "", alias = null } = options || {}; + const { + path = "", + alias = null, + hasValidFrontmatter = null + } = options || {}; return { id: generateUuid(), columnId, path, - alias + alias, + hasValidFrontmatter }; }; var createCheckboxCell = (columnId, options) => { - const { value = false } = options || {}; + const { value = false, hasValidFrontmatter = null } = options || {}; return { id: generateUuid(), columnId, - value + value, + hasValidFrontmatter }; }; var createTagCell = (columnId, options) => { - const { tagId = null } = options || {}; + const { tagId = null, hasValidFrontmatter = null } = options || {}; return { id: generateUuid(), columnId, - tagId + tagId, + hasValidFrontmatter }; }; var createMultiTagCell = (columnId, options) => { - const { tagIds = [] } = options || {}; + const { tagIds = [], hasValidFrontmatter = null } = options || {}; return { id: generateUuid(), columnId, - tagIds + tagIds, + hasValidFrontmatter }; }; var createSourceFileFilter = (columnId, options) => { @@ -62814,11 +64371,12 @@ var createSourceFileFilter = (columnId, options) => { const baseFilter = createBaseFilter2(columnId, { isEnabled }); - return __spreadProps(__spreadValues({}, baseFilter), { + return { + ...baseFilter, type: "source-file" /* SOURCE_FILE */, condition, text - }); + }; }; var createTextFilter2 = (columnId, options) => { const { @@ -62829,11 +64387,12 @@ var createTextFilter2 = (columnId, options) => { const baseFilter = createBaseFilter2(columnId, { isEnabled }); - return __spreadProps(__spreadValues({}, baseFilter), { + return { + ...baseFilter, type: "text" /* TEXT */, condition, text - }); + }; }; var createFileFilter2 = (columnId, options) => { const { @@ -62844,11 +64403,12 @@ var createFileFilter2 = (columnId, options) => { const baseFilter = createBaseFilter2(columnId, { isEnabled }); - return __spreadProps(__spreadValues({}, baseFilter), { + return { + ...baseFilter, type: "file" /* FILE */, condition, text - }); + }; }; var createCheckboxFilter2 = (columnId, options) => { const { @@ -62859,12 +64419,13 @@ var createCheckboxFilter2 = (columnId, options) => { const baseFilter = createBaseFilter2(columnId, { isEnabled }); - return __spreadProps(__spreadValues({}, baseFilter), { + return { + ...baseFilter, type: "checkbox" /* CHECKBOX */, condition, isEnabled, value - }); + }; }; var createTagFilter2 = (columnId, options) => { const { @@ -62875,12 +64436,13 @@ var createTagFilter2 = (columnId, options) => { const baseFilter = createBaseFilter2(columnId, { isEnabled }); - return __spreadProps(__spreadValues({}, baseFilter), { + return { + ...baseFilter, type: "tag" /* TAG */, condition, tagId, isEnabled - }); + }; }; var createMultiTagFilter2 = (columnId, options) => { const { @@ -62891,11 +64453,12 @@ var createMultiTagFilter2 = (columnId, options) => { const baseFilter = createBaseFilter2(columnId, { isEnabled }); - return __spreadProps(__spreadValues({}, baseFilter), { + return { + ...baseFilter, type: "multi-tag" /* MULTI_TAG */, condition, tagIds - }); + }; }; var createEmbedFilter = (columnId, options) => { const { @@ -62906,11 +64469,12 @@ var createEmbedFilter = (columnId, options) => { const baseFilter = createBaseFilter2(columnId, { isEnabled }); - return __spreadProps(__spreadValues({}, baseFilter), { + return { + ...baseFilter, type: "embed" /* EMBED */, condition, text - }); + }; }; var createNumberFilter = (columnId, options) => { const { @@ -62921,11 +64485,12 @@ var createNumberFilter = (columnId, options) => { const baseFilter = createBaseFilter2(columnId, { isEnabled }); - return __spreadProps(__spreadValues({}, baseFilter), { + return { + ...baseFilter, type: "number" /* NUMBER */, condition, text - }); + }; }; var createDateFilter = (columnId, options) => { const { @@ -62937,12 +64502,13 @@ var createDateFilter = (columnId, options) => { const baseFilter = createBaseFilter2(columnId, { isEnabled }); - return __spreadProps(__spreadValues({}, baseFilter), { + return { + ...baseFilter, type: "date" /* DATE */, condition, option, dateTime - }); + }; }; var createCreationTimeFilter = (columnId, options) => { const { @@ -62954,12 +64520,13 @@ var createCreationTimeFilter = (columnId, options) => { const baseFilter = createBaseFilter2(columnId, { isEnabled }); - return __spreadProps(__spreadValues({}, baseFilter), { + return { + ...baseFilter, type: "creation-time" /* CREATION_TIME */, option, condition, dateTime - }); + }; }; var createLastEditedTimeFilter = (columnId, options) => { const { @@ -62971,12 +64538,13 @@ var createLastEditedTimeFilter = (columnId, options) => { const baseFilter = createBaseFilter2(columnId, { isEnabled }); - return __spreadProps(__spreadValues({}, baseFilter), { + return { + ...baseFilter, type: "last-edited-time" /* LAST_EDITED_TIME */, option, condition, dateTime - }); + }; }; var createBaseFilter2 = (columnId, options) => { const { isEnabled = true } = options || {}; @@ -63099,9 +64667,10 @@ var addImportData = (prevState, data, columnMatches, dateFormat, dateFormatSepar const cell = createTextCell(column.id); newCells.push(cell); }); - return __spreadProps(__spreadValues({}, row), { + return { + ...row, cells: newCells - }); + }; }); const newRows = Array(importRows.length).fill(null).map((_val, i2) => { const newRow = createRow(rows.length + i2); @@ -63116,51 +64685,82 @@ var addImportData = (prevState, data, columnMatches, dateFormat, dateFormatSepar let newCell = null; if (match) { const { importColumnIndex } = match; - content = importRow[importColumnIndex].trim(); - if (type === "tag" /* TAG */) { - const { cell, newTags } = findTagCell( - columnTags, - columnId, - content - ); - newCell = cell; - columnTags.push(...newTags); - } else if (type === "multi-tag" /* MULTI_TAG */) { - const { cell, newTags } = findMultiTagCell( - columnTags, - columnId, - content - ); - newCell = cell; - columnTags.push(...newTags); - } else if (type === "date" /* DATE */) { - const cell = findDateCell( - columnId, - content, - dateFormat, - dateFormatSeparator - ); - newCell = cell; + content = importRow[importColumnIndex]; + if (content !== void 0 && content !== null) { + content = content.trim(); } } - if (!newCell) { + if (type === "tag" /* TAG */) { + const { cell, newTags } = findTagCell( + columnTags, + columnId, + content + ); + newCell = cell; + columnTags.push(...newTags); + } else if (type === "multi-tag" /* MULTI_TAG */) { + const { cell, newTags } = findMultiTagCell( + columnTags, + columnId, + content + ); + newCell = cell; + columnTags.push(...newTags); + } else if (type === "date" /* DATE */) { + const cell = findDateCell( + columnId, + content, + dateFormat, + dateFormatSeparator + ); + newCell = cell; + } else if (type === "checkbox" /* CHECKBOX */) { + newCell = createCheckboxCell(columnId, { + value: content.toLowerCase() === "true" ? true : false + }); + } else if (type === "number" /* NUMBER */) { + newCell = createNumberCell(columnId, { + value: parseFloat(content) + }); + } else if (type === "embed" /* EMBED */) { + newCell = createEmbedCell(columnId, { + pathOrUrl: content + }); + } else if (type === "file" /* FILE */) { + newCell = createFileCell(columnId, { + path: content + }); + } else if (type === "creation-time" /* CREATION_TIME */) { + newCell = createCreationTimeCell(columnId); + } else if (type === "last-edited-time" /* LAST_EDITED_TIME */) { + newCell = createLastEditedTimeCell(columnId); + } else if (type === "source" /* SOURCE */) { + newCell = createSourceCell(columnId); + } else if (type === "source-file" /* SOURCE_FILE */) { + newCell = createSourceFileCell(columnId); + } else if (type === "text" /* TEXT */) { newCell = createTextCell(columnId, { content }); + } else { + throw new Error("Unhandled cell type"); } nextCells.push(newCell); }); - return __spreadProps(__spreadValues({}, newRow), { + return { + ...newRow, cells: nextCells - }); + }; }); const nextRows = [...updatedRows, ...newRows]; - return __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + return { + ...prevState, + model: { + ...prevState.model, columns: nextColumns, rows: nextRows - }) - }); + } + }; }; var findMultiTagCell = (columnTags, columnId, content) => { const newTags = []; @@ -63234,10 +64834,10 @@ var findDateCell = (columnId, content, dateFormat, dateFormatSeparator) => { }; // src/react/import-app/finalize-import.tsx -var import_react46 = __toESM(require_react()); +var import_react45 = __toESM(require_react()); // src/react/shared/select/index.tsx -var import_jsx_runtime113 = __toESM(require_jsx_runtime()); +var import_jsx_runtime114 = __toESM(require_jsx_runtime()); function Select({ id: id2, isDisabled, @@ -63255,7 +64855,7 @@ function Select({ if (hasError) { className += " dataloom-select--error"; } - return /* @__PURE__ */ (0, import_jsx_runtime113.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)( "select", { disabled: isDisabled, @@ -63271,7 +64871,7 @@ function Select({ } // src/react/import-app/finalize-import.tsx -var import_jsx_runtime114 = __toESM(require_jsx_runtime()); +var import_jsx_runtime115 = __toESM(require_jsx_runtime()); function FinalizeImport({ hasDateColumnMatch, dateFormat, @@ -63281,11 +64881,11 @@ function FinalizeImport({ onDateFormatSeparatorChange, onIncludeTimeToggle }) { - const dateFormatId = import_react46.default.useId(); - const dateFormatSeparatorId = import_react46.default.useId(); - const includeTimeId = import_react46.default.useId(); + const dateFormatId = import_react45.default.useId(); + const dateFormatSeparatorId = import_react45.default.useId(); + const includeTimeId = import_react45.default.useId(); if (!hasDateColumnMatch) - return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Text, { value: "Everything looks good!" }); + return /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(Text, { value: "Everything looks good!" }); let expectedDateFormat = "Unknown"; if (dateFormat && dateFormatSeparator) { const EXAMPLE_DATE_TIME = "2020-12-31T23:00:00"; @@ -63298,9 +64898,9 @@ function FinalizeImport({ } ); } - return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("div", { children: hasDateColumnMatch && /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(import_jsx_runtime114.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(Stack, { spacing: "xl", children: [ - /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(Stack, { spacing: "sm", children: [ - /* @__PURE__ */ (0, import_jsx_runtime114.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("div", { children: hasDateColumnMatch && /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_jsx_runtime115.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(Stack, { spacing: "xl", children: [ + /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(Stack, { spacing: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime115.jsx)( Text, { size: "md", @@ -63308,7 +64908,7 @@ function FinalizeImport({ value: "Date format" } ), - /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Padding, { pr: "md", children: /* @__PURE__ */ (0, import_jsx_runtime114.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(Padding, { pr: "md", children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)( Text, { shouldWrap: true, @@ -63316,9 +64916,9 @@ function FinalizeImport({ } ) }) ] }), - /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(Stack, { spacing: "sm", children: [ - /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("label", { htmlFor: dateFormatId, children: "Date format" }), - /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)( + /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(Stack, { spacing: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("label", { htmlFor: dateFormatId, children: "Date format" }), + /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)( Select, { id: dateFormatId, @@ -63327,15 +64927,15 @@ function FinalizeImport({ value || null ), children: [ - /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("option", { value: "", children: "Select an option" }), - Object.values(DateFormat2).map((format) => /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("option", { value: format, children: getDisplayNameForDateFormat(format) }, format)) + /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("option", { value: "", children: "Select an option" }), + Object.values(DateFormat2).map((format) => /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("option", { value: format, children: getDisplayNameForDateFormat(format) }, format)) ] } ) ] }), - /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(Stack, { spacing: "sm", children: [ - /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("label", { htmlFor: dateFormatSeparatorId, children: "Date format separator" }), - /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)( + /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(Stack, { spacing: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("label", { htmlFor: dateFormatSeparatorId, children: "Date format separator" }), + /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)( Select, { id: dateFormatSeparatorId, @@ -63344,17 +64944,17 @@ function FinalizeImport({ value || null ), children: [ - /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("option", { value: "", children: "Select an option" }), + /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("option", { value: "", children: "Select an option" }), Object.values(DateFormatSeparator).map( - (format) => /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("option", { value: format, children: format }, format) + (format) => /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("option", { value: format, children: format }, format) ) ] } ) ] }), - /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(Stack, { spacing: "sm", children: [ - /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("label", { htmlFor: includeTimeId, children: "Includes time" }), - /* @__PURE__ */ (0, import_jsx_runtime114.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(Stack, { spacing: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("label", { htmlFor: includeTimeId, children: "Includes time" }), + /* @__PURE__ */ (0, import_jsx_runtime115.jsx)( Switch, { id: includeTimeId, @@ -63363,9 +64963,9 @@ function FinalizeImport({ } ) ] }), - /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(Stack, { spacing: "sm", children: [ - /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("label", { children: "Expected date format" }), - /* @__PURE__ */ (0, import_jsx_runtime114.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(Stack, { spacing: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("label", { children: "Expected date format" }), + /* @__PURE__ */ (0, import_jsx_runtime115.jsx)( Text, { variant: "semibold", @@ -63374,7 +64974,7 @@ function FinalizeImport({ } ) ] }), - /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Padding, { pr: "md", children: /* @__PURE__ */ (0, import_jsx_runtime114.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(Padding, { pr: "md", children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)( Text, { shouldWrap: true, @@ -63385,21 +64985,21 @@ function FinalizeImport({ } // src/react/import-app/index.tsx -var import_jsx_runtime115 = __toESM(require_jsx_runtime()); +var import_jsx_runtime116 = __toESM(require_jsx_runtime()); function ImportApp({ state, onStateChange }) { const menuOperations = useMenuOperations(); - const [dataSource, setDataSource] = import_react47.default.useState("Select an option" /* UNSELECTED */); - const [dataType, setDataType] = import_react47.default.useState("Select an option" /* UNSELECTED */); - const [fileName, setFileName] = import_react47.default.useState(null); - const [rawData, setRawData] = import_react47.default.useState(""); - const [data, setData] = import_react47.default.useState([]); - const [errorText, setErrorText] = import_react47.default.useState(null); - const [hasHeadersRow, setHeadersRow] = import_react47.default.useState(true); - const [enabledColumnIndices, setEnabledColumnIndices] = import_react47.default.useState([]); - const [dateFormat, setDateFormat] = import_react47.default.useState(null); - const [dateFormatSeparator, setDateFormatSeparator] = import_react47.default.useState(null); - const [includeTime, setIncludeTime] = import_react47.default.useState(false); - const [columnMatches, setColumnMatches] = import_react47.default.useState([]); + const [dataSource, setDataSource] = import_react46.default.useState("Select an option" /* UNSELECTED */); + const [dataType, setDataType] = import_react46.default.useState("Select an option" /* UNSELECTED */); + const [fileName, setFileName] = import_react46.default.useState(null); + const [rawData, setRawData] = import_react46.default.useState(""); + const [data, setData] = import_react46.default.useState([]); + const [errorText, setErrorText] = import_react46.default.useState(null); + const [hasHeadersRow, setHeadersRow] = import_react46.default.useState(true); + const [enabledColumnIndices, setEnabledColumnIndices] = import_react46.default.useState([]); + const [dateFormat, setDateFormat] = import_react46.default.useState(null); + const [dateFormatSeparator, setDateFormatSeparator] = import_react46.default.useState(null); + const [includeTime, setIncludeTime] = import_react46.default.useState(false); + const [columnMatches, setColumnMatches] = import_react46.default.useState([]); function handleDataTypeChange(value) { setDataType(value); resetSubsequentSteps(0 /* DATA_TYPE */); @@ -63478,7 +65078,7 @@ function ImportApp({ state, onStateChange }) { const steps = [ { title: "Select data type", - content: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)( + content: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)( DataTypeSelect, { value: dataType, @@ -63489,7 +65089,7 @@ function ImportApp({ state, onStateChange }) { }, { title: "Select data source", - content: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)( + content: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)( DataSourceSelect, { value: dataSource, @@ -63500,7 +65100,7 @@ function ImportApp({ state, onStateChange }) { }, { title: "Upload data", - content: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)( + content: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)( UploadData, { hasHeadersRow, @@ -63548,7 +65148,7 @@ function ImportApp({ state, onStateChange }) { }, { title: "Match columns", - content: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)( + content: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)( MatchColumns, { data, @@ -63577,7 +65177,7 @@ function ImportApp({ state, onStateChange }) { }, { title: "Finalize import", - content: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)( + content: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)( FinalizeImport, { hasDateColumnMatch, @@ -63613,26 +65213,27 @@ function ImportApp({ state, onStateChange }) { ); onStateChange(newState); } - return /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("div", { className: "dataloom-import-app", onClick: handleModalClick, children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(Stepper, { steps, onFinishClick: handleFinishClick }) }); + return /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("div", { className: "dataloom-import-app", onClick: handleModalClick, children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Stepper, { steps, onFinishClick: handleFinishClick }) }); } // src/obsidian/modal/import-modal.tsx -var import_jsx_runtime116 = __toESM(require_jsx_runtime()); +var import_jsx_runtime117 = __toESM(require_jsx_runtime()); var ImportModal = class extends import_obsidian17.Modal { constructor(app, loomFile, loomState) { super(app); - this.handleStateChange = (state) => __async(this, null, function* () { + this.handleStateChange = async (state) => { const serialized = serializeState(state); - yield this.app.vault.modify(this.loomFile, serialized); + await this.app.vault.modify(this.loomFile, serialized); EventManager.getInstance().emit( - "app-refresh", + "app-refresh-by-state", this.loomFile.path, "", + //No app id. Target all views of this file state ); new import_obsidian17.Notice("Success! DataLoom import completed."); this.close(); - }); + }; this.loomFile = loomFile; this.loomState = loomState; } @@ -63644,22 +65245,20 @@ var ImportModal = class extends import_obsidian17.Modal { const appContainerEl = contentEl.createDiv(); this.renderApp(appContainerEl); } - renderApp(contentEl) { - return __async(this, null, function* () { - const modalEl = contentEl.closest(".modal"); - if (!modalEl) - throw new Error("Modal element not found."); - this.root = (0, import_client3.createRoot)(contentEl); - this.root.render( - /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(Provider_default, { store, children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(ModalMountProvider, { obsidianApp: this.app, modalEl, children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(MenuProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)( - ImportApp, - { - state: this.loomState, - onStateChange: this.handleStateChange - } - ) }) }) }) - ); - }); + async renderApp(contentEl) { + const modalEl = contentEl.closest(".modal"); + if (!modalEl) + throw new Error("Modal element not found."); + this.root = (0, import_client3.createRoot)(contentEl); + this.root.render( + /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Provider_default, { store, children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(ModalMountProvider, { obsidianApp: this.app, modalEl, children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(MenuProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)( + ImportApp, + { + state: this.loomState, + onStateChange: this.handleStateChange + } + ) }) }) }) + ); } onClose() { if (this.root) @@ -63668,7 +65267,7 @@ var ImportModal = class extends import_obsidian17.Modal { }; // src/react/loom-app/option-bar/more-menu/base-content.tsx -var import_jsx_runtime117 = __toESM(require_jsx_runtime()); +var import_jsx_runtime118 = __toESM(require_jsx_runtime()); function BaseContent({ onToggleColumnClick, onFilterClick, @@ -63679,8 +65278,8 @@ function BaseContent({ const { app, loomFile } = useAppMount(); const { loomState } = useLoomState(); const isSmallScreen = isSmallScreenSize(); - return /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(Padding, { p: "sm", children: [ - isSmallScreen && /* @__PURE__ */ (0, import_jsx_runtime117.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(Padding, { p: "sm", children: [ + isSmallScreen && /* @__PURE__ */ (0, import_jsx_runtime118.jsx)( MenuItem, { lucideId: "filter", @@ -63688,7 +65287,7 @@ function BaseContent({ onClick: onSourcesClick } ), - isSmallScreen && /* @__PURE__ */ (0, import_jsx_runtime117.jsx)( + isSmallScreen && /* @__PURE__ */ (0, import_jsx_runtime118.jsx)( MenuItem, { lucideId: "filter", @@ -63696,7 +65295,7 @@ function BaseContent({ onClick: onFilterClick } ), - /* @__PURE__ */ (0, import_jsx_runtime117.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime118.jsx)( MenuItem, { lucideId: "eye-off", @@ -63704,7 +65303,7 @@ function BaseContent({ onClick: onToggleColumnClick } ), - /* @__PURE__ */ (0, import_jsx_runtime117.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime118.jsx)( MenuItem, { lucideId: "import", @@ -63715,7 +65314,7 @@ function BaseContent({ } } ), - /* @__PURE__ */ (0, import_jsx_runtime117.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime118.jsx)( MenuItem, { lucideId: "download", @@ -63726,7 +65325,7 @@ function BaseContent({ } } ), - /* @__PURE__ */ (0, import_jsx_runtime117.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime118.jsx)( MenuItem, { lucideId: "wrench", @@ -63738,15 +65337,15 @@ function BaseContent({ } // src/react/loom-app/option-bar/more-menu/settings-submenu.tsx -var import_jsx_runtime118 = __toESM(require_jsx_runtime()); +var import_jsx_runtime119 = __toESM(require_jsx_runtime()); function SettingsSubmenu({ showCalculationRow, onCalculationRowToggle, onBackClick }) { - return /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(Submenu, { title: "Settings", onBackClick, children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(Padding, { px: "lg", py: "md", children: /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(Stack, { isHorizontal: true, spacing: "lg", children: [ - /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(Text, { value: "Calculation row" }), - /* @__PURE__ */ (0, import_jsx_runtime118.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(Submenu, { title: "Settings", onBackClick, children: /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(Padding, { px: "lg", py: "md", children: /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(Stack, { isHorizontal: true, spacing: "lg", children: [ + /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(Text, { value: "Calculation row" }), + /* @__PURE__ */ (0, import_jsx_runtime119.jsx)( Switch, { value: showCalculationRow, @@ -63757,22 +65356,22 @@ function SettingsSubmenu({ } // src/react/loom-app/option-bar/more-menu/toggle-column-submenu.tsx -var import_jsx_runtime119 = __toESM(require_jsx_runtime()); +var import_jsx_runtime120 = __toESM(require_jsx_runtime()); function ToggleColumnSubmenu({ columns, onColumnToggle, onBackClick }) { - return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(Submenu, { title: "Toggle", onBackClick, children: /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(Padding, { py: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(Stack, { spacing: "md", children: columns.map((column) => { + return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(Submenu, { title: "Toggle", onBackClick, children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(Padding, { py: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(Stack, { spacing: "md", children: columns.map((column) => { const { id: id2, content, isVisible } = column; - return /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)( + return /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)( Wrap, { justify: "space-between", spacingX: "4xl", children: [ - /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(Text, { value: content, maxWidth: "250px" }), - /* @__PURE__ */ (0, import_jsx_runtime119.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(Text, { value: content, maxWidth: "250px" }), + /* @__PURE__ */ (0, import_jsx_runtime120.jsx)( Switch, { value: isVisible, @@ -63787,7 +65386,7 @@ function ToggleColumnSubmenu({ } // src/react/loom-app/option-bar/more-menu/index.tsx -var import_jsx_runtime120 = __toESM(require_jsx_runtime()); +var import_jsx_runtime121 = __toESM(require_jsx_runtime()); function MoreMenu({ id: id2, isOpen, @@ -63800,12 +65399,12 @@ function MoreMenu({ onCalculationRowToggle, onColumnToggle }) { - const [submenu, setSubmenu] = import_react48.default.useState(null); - import_react48.default.useEffect(() => { + const [submenu, setSubmenu] = import_react47.default.useState(null); + import_react47.default.useEffect(() => { if (!isOpen) setSubmenu(null); }, [isOpen]); - return /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)( + return /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)( Menu, { id: id2, @@ -63813,7 +65412,7 @@ function MoreMenu({ isOpen, position, children: [ - submenu === null && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)( + submenu === null && /* @__PURE__ */ (0, import_jsx_runtime121.jsx)( BaseContent, { onToggleColumnClick: () => setSubmenu(1 /* TOGGLE_COLUMNS */), @@ -63823,7 +65422,7 @@ function MoreMenu({ onSettingsClick: () => setSubmenu(0 /* SETTINGS */) } ), - submenu === 0 /* SETTINGS */ && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)( + submenu === 0 /* SETTINGS */ && /* @__PURE__ */ (0, import_jsx_runtime121.jsx)( SettingsSubmenu, { showCalculationRow, @@ -63831,7 +65430,7 @@ function MoreMenu({ onCalculationRowToggle } ), - submenu === 1 /* TOGGLE_COLUMNS */ && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)( + submenu === 1 /* TOGGLE_COLUMNS */ && /* @__PURE__ */ (0, import_jsx_runtime121.jsx)( ToggleColumnSubmenu, { columns, @@ -63845,7 +65444,7 @@ function MoreMenu({ } // src/react/loom-app/option-bar/filter-menu/filter-column-select/index.tsx -var import_jsx_runtime121 = __toESM(require_jsx_runtime()); +var import_jsx_runtime122 = __toESM(require_jsx_runtime()); function FilterColumnSelect({ id: id2, columns, @@ -63857,7 +65456,7 @@ function FilterColumnSelect({ e.stopPropagation(); } } - return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)( Select, { className: "dataloom-filter-column-select", @@ -63866,14 +65465,14 @@ function FilterColumnSelect({ onChange: (newValue) => onChange(id2, newValue), children: columns.filter((column) => column.type !== "source" /* SOURCE */).map((column) => { const { id: id3, content } = column; - return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("option", { value: id3, children: content }, id3); + return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("option", { value: id3, children: content }, id3); }) } ); } // src/react/loom-app/option-bar/filter-menu/filter-condition-select.tsx -var import_jsx_runtime122 = __toESM(require_jsx_runtime()); +var import_jsx_runtime123 = __toESM(require_jsx_runtime()); function FilterConditionSelect({ id: id2, value, @@ -63885,40 +65484,41 @@ function FilterConditionSelect({ e.stopPropagation(); } } - return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)( Select, { value, onKeyDown: handleKeyDown, onChange: (newValue) => onChange(id2, newValue), - children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime122.jsx)("option", { value: option, children: getDisplayNameForFilterCondition(option) }, option)) + children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("option", { value: option, children: getDisplayNameForFilterCondition(option) }, option)) } ); } // src/react/loom-app/option-bar/filter-menu/filter-operator/index.tsx -var import_jsx_runtime123 = __toESM(require_jsx_runtime()); +var import_jsx_runtime124 = __toESM(require_jsx_runtime()); function FilterOperator({ id: id2, value, onChange }) { - return /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)( + return /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)( Select, { className: "dataloom-filter-operator", value, onChange: (newValue) => onChange(id2, newValue), children: [ - /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("option", { value: "or", children: "Or" }), - /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("option", { value: "and", children: "And" }) + /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("option", { value: "or", children: "Or" }), + /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("option", { value: "and", children: "And" }) ] } ); } // src/react/loom-app/option-bar/filter-menu/filter-row/index.tsx -var import_jsx_runtime124 = __toESM(require_jsx_runtime()); +var import_jsx_runtime125 = __toESM(require_jsx_runtime()); function FilterRow({ index, id: id2, columns, + useSpacer, isEnabled, selectedColumnId, selectedOperator, @@ -63931,16 +65531,17 @@ function FilterRow({ onConditionChange, onDeleteClick }) { - return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("div", { className: "dataloom-filter-row", children: /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(Wrap, { children: [ - index !== 0 ? /* @__PURE__ */ (0, import_jsx_runtime124.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)("div", { className: "dataloom-filter-row", children: /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(Wrap, { children: [ + index !== 0 && /* @__PURE__ */ (0, import_jsx_runtime125.jsx)( FilterOperator, { id: id2, value: selectedOperator, onChange: onOperatorChange } - ) : /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("div", { className: "dataloom-filter-row__spacer" }), - /* @__PURE__ */ (0, import_jsx_runtime124.jsx)( + ), + useSpacer && /* @__PURE__ */ (0, import_jsx_runtime125.jsx)("div", { className: "dataloom-filter-row__spacer" }), + /* @__PURE__ */ (0, import_jsx_runtime125.jsx)( FilterColumnSelect, { id: id2, @@ -63949,7 +65550,7 @@ function FilterRow({ onChange: onColumnChange } ), - /* @__PURE__ */ (0, import_jsx_runtime124.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime125.jsx)( FilterConditionSelect, { id: id2, @@ -63958,8 +65559,8 @@ function FilterRow({ onChange: onConditionChange } ), - selectedCondition !== "is-empty" /* IS_EMPTY */ && selectedCondition !== "is-not-empty" /* IS_NOT_EMPTY */ && /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("div", { className: "dataloom-filter-row__input", children: inputNode }), - /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)( + selectedCondition !== "is-empty" /* IS_EMPTY */ && selectedCondition !== "is-not-empty" /* IS_NOT_EMPTY */ && /* @__PURE__ */ (0, import_jsx_runtime125.jsx)("div", { className: "dataloom-filter-row__input", children: inputNode }), + /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)( Stack, { grow: true, @@ -63968,15 +65569,15 @@ function FilterRow({ spacing: "lg", isHorizontal: true, children: [ - /* @__PURE__ */ (0, import_jsx_runtime124.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime125.jsx)( Button, { - icon: /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(Icon, { lucideId: "trash-2" }), + icon: /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(Icon, { lucideId: "trash-2" }), ariaLabel: "Delete filter", onClick: () => onDeleteClick(id2) } ), - /* @__PURE__ */ (0, import_jsx_runtime124.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime125.jsx)( Switch, { value: isEnabled, @@ -63991,7 +65592,7 @@ function FilterRow({ } // src/react/shared/multi-select/multi-select-option.tsx -var import_jsx_runtime125 = __toESM(require_jsx_runtime()); +var import_jsx_runtime126 = __toESM(require_jsx_runtime()); function MultiSelectOption({ id: id2, isChecked, @@ -64004,15 +65605,15 @@ function MultiSelectOption({ handleOptionClick(id2); } } - return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)( "div", { className: "dataloom-multi-select__option dataloom-focusable dataloom-selectable", tabIndex: 0, onKeyDown: handleKeyDown, onClick: () => handleOptionClick(id2), - children: /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(Stack, { isHorizontal: true, width: "100%", children: [ - /* @__PURE__ */ (0, import_jsx_runtime125.jsx)( + children: /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(Stack, { isHorizontal: true, width: "100%", children: [ + /* @__PURE__ */ (0, import_jsx_runtime126.jsx)( "input", { className: "task-list-item-checkbox", @@ -64029,8 +65630,8 @@ function MultiSelectOption({ } // src/react/shared/multi-select/multi-select-menu.tsx -var import_react49 = __toESM(require_react()); -var import_jsx_runtime126 = __toESM(require_jsx_runtime()); +var import_react48 = __toESM(require_react()); +var import_jsx_runtime127 = __toESM(require_jsx_runtime()); function MultiSelectMenu({ id: id2, isOpen, @@ -64039,8 +65640,8 @@ function MultiSelectMenu({ selectedOptionIds, onChange }) { - const [inputValue, setInputValue] = import_react49.default.useState(""); - import_react49.default.useEffect(() => { + const [inputValue, setInputValue] = import_react48.default.useState(""); + import_react48.default.useEffect(() => { if (!isOpen) { setInputValue(""); } @@ -64059,8 +65660,8 @@ function MultiSelectMenu({ const filteredOptions = options.filter( (option) => option.name.toLowerCase().includes(inputValue.toLocaleLowerCase()) ); - return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Menu, { id: id2, isOpen, position, topOffset: 35, children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)("div", { className: "dataloom-multi-select-menu", children: /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(Stack, { spacing: "md", children: [ - /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Padding, { px: "md", pt: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Menu, { id: id2, isOpen, position, topOffset: 35, children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("div", { className: "dataloom-multi-select-menu", children: /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(Stack, { spacing: "md", children: [ + /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Padding, { px: "md", pt: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)( input_default, { value: inputValue, @@ -64068,11 +65669,11 @@ function MultiSelectMenu({ onChange: setInputValue } ) }), - /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)("div", { className: "dataloom-multi-select__options", children: [ + /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)("div", { className: "dataloom-multi-select__options", children: [ filteredOptions.map((option) => { const { id: id3, component } = option; const isChecked = selectedOptionIds.includes(id3); - return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)( MultiSelectOption, { id: id3, @@ -64083,13 +65684,13 @@ function MultiSelectMenu({ id3 ); }), - options.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Padding, { px: "md", pb: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Text, { value: "No options to select" }) }) + options.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Padding, { px: "md", pb: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Text, { value: "No options to select" }) }) ] }) ] }) }) }); } // src/react/shared/multi-select/index.tsx -var import_jsx_runtime127 = __toESM(require_jsx_runtime()); +var import_jsx_runtime128 = __toESM(require_jsx_runtime()); function MultiSelect({ id: id2, title, @@ -64102,8 +65703,8 @@ function MultiSelect({ function openMenu() { menu.onOpen(2 /* TWO */); } - return /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_jsx_runtime127.Fragment, { children: [ - /* @__PURE__ */ (0, import_jsx_runtime127.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(import_jsx_runtime128.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime128.jsx)( menu_trigger_default, { ref: menu.triggerRef, @@ -64112,7 +65713,7 @@ function MultiSelect({ level: 2 /* TWO */, isFocused: menu.isTriggerFocused, onOpen: () => openMenu(), - children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("div", { className: "dataloom-multi-select", children: /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)( + children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("div", { className: "dataloom-multi-select", children: /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)( Stack, { isHorizontal: true, @@ -64120,14 +65721,14 @@ function MultiSelect({ align: "center", height: "100%", children: [ - /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Text, { value: `${selectedOptionIds.length} ${title}` }), - /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Icon, { lucideId: "chevron-down" }) + /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(Text, { value: `${selectedOptionIds.length} ${title}` }), + /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(Icon, { lucideId: "chevron-down" }) ] } ) }) } ), - /* @__PURE__ */ (0, import_jsx_runtime127.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime128.jsx)( MultiSelectMenu, { id: menu.id, @@ -64142,20 +65743,20 @@ function MultiSelect({ } // src/react/shared/date-filter-select/index.tsx -var import_jsx_runtime128 = __toESM(require_jsx_runtime()); +var import_jsx_runtime129 = __toESM(require_jsx_runtime()); function DateFilterSelect({ value, onChange }) { - return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)( Select, { value, onChange: (value2) => onChange(value2), - children: Object.values(DateFilterOption).map((option) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("option", { value: option, children: getDisplayNameForDateFilterOption(option) }, option)) + children: Object.values(DateFilterOption).map((option) => /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("option", { value: option, children: getDisplayNameForDateFilterOption(option) }, option)) } ); } // src/react/shared/checkbox-filter-select/index.tsx -var import_jsx_runtime129 = __toESM(require_jsx_runtime()); +var import_jsx_runtime130 = __toESM(require_jsx_runtime()); function CheckboxFilterSelect({ value, onChange }) { function handleChange(value2) { if (value2 === "true") { @@ -64164,14 +65765,14 @@ function CheckboxFilterSelect({ value, onChange }) { } onChange(false); } - return /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(Select, { value: value ? "true" : "false", onChange: handleChange, children: [ - /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("option", { value: "false", children: "Unchecked" }), - /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("option", { value: "true", children: "Checked" }) + return /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(Select, { value: value ? "true" : "false", onChange: handleChange, children: [ + /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("option", { value: "false", children: "Unchecked" }), + /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("option", { value: "true", children: "Checked" }) ] }); } // src/react/loom-app/option-bar/filter-menu/index.tsx -var import_jsx_runtime130 = __toESM(require_jsx_runtime()); +var import_jsx_runtime131 = __toESM(require_jsx_runtime()); function FilterMenu({ id: id2, isOpen, @@ -64327,8 +65928,8 @@ function FilterMenu({ function onTextChange(id3, text) { onUpdate(id3, { text }); } - function onCheckboxChange(id3, text) { - onUpdate(id3, { text }); + function onCheckboxChange(id3, value) { + onUpdate(id3, { value }); } function onDateFilterOptionChange(id3, option) { onUpdate(id3, { option }); @@ -64345,7 +65946,7 @@ function FilterMenu({ throw new Error("Filter not found"); onUpdate(id3, { isEnabled: !filter3.isEnabled }); } - return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)( Menu, { id: id2, @@ -64353,14 +65954,14 @@ function FilterMenu({ position, openDirection: "bottom-left", maxHeight: 255, - children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)( + children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)( "div", { className: "dataloom-filter-menu", style: { width: isSmallScreenSize() ? "calc(100vw - 30px)" : void 0 }, - children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(Padding, { p: "md", children: /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(Stack, { spacing: "lg", children: [ + children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(Padding, { p: "md", children: /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(Stack, { spacing: "lg", children: [ filters.map((filter3, i2) => { const { id: id3, @@ -64381,7 +65982,7 @@ function FilterMenu({ switch (type) { case "text" /* TEXT */: { const { text } = filter3; - inputNode = /* @__PURE__ */ (0, import_jsx_runtime130.jsx)( + inputNode = /* @__PURE__ */ (0, import_jsx_runtime131.jsx)( input_default, { value: text, @@ -64402,7 +66003,7 @@ function FilterMenu({ } case "file" /* FILE */: { const { text } = filter3; - inputNode = /* @__PURE__ */ (0, import_jsx_runtime130.jsx)( + inputNode = /* @__PURE__ */ (0, import_jsx_runtime131.jsx)( input_default, { value: text, @@ -64423,7 +66024,7 @@ function FilterMenu({ } case "source-file" /* SOURCE_FILE */: { const { text } = filter3; - inputNode = /* @__PURE__ */ (0, import_jsx_runtime130.jsx)( + inputNode = /* @__PURE__ */ (0, import_jsx_runtime131.jsx)( input_default, { value: text, @@ -64444,14 +66045,11 @@ function FilterMenu({ } case "checkbox" /* CHECKBOX */: { const { value } = filter3; - inputNode = /* @__PURE__ */ (0, import_jsx_runtime130.jsx)( + inputNode = /* @__PURE__ */ (0, import_jsx_runtime131.jsx)( CheckboxFilterSelect, { value, - onChange: (newValue) => onCheckboxChange( - id3, - newValue.toString() - ) + onChange: (newValue) => onCheckboxChange(id3, newValue) } ); conditionOptions = [ @@ -64462,14 +66060,14 @@ function FilterMenu({ } case "tag" /* TAG */: { const { tagId } = filter3; - inputNode = /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)( + inputNode = /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)( Select, { value: tagId, onChange: (newValue) => onTagChange(id3, newValue), children: [ - /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("option", { value: "", children: "Select an option" }), - tags.map((tag) => /* @__PURE__ */ (0, import_jsx_runtime130.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("option", { value: "", children: "Select an option" }), + tags.map((tag) => /* @__PURE__ */ (0, import_jsx_runtime131.jsx)( "option", { value: tag.id, @@ -64490,7 +66088,7 @@ function FilterMenu({ } case "multi-tag" /* MULTI_TAG */: { const { tagIds } = filter3; - inputNode = /* @__PURE__ */ (0, import_jsx_runtime130.jsx)( + inputNode = /* @__PURE__ */ (0, import_jsx_runtime131.jsx)( MultiSelect, { id: id3, @@ -64498,7 +66096,7 @@ function FilterMenu({ options: tags.map((tag) => ({ id: tag.id, name: tag.content, - component: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)( + component: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)( Tag5, { content: tag.content, @@ -64527,7 +66125,7 @@ function FilterMenu({ } case "number" /* NUMBER */: { const { text } = filter3; - inputNode = /* @__PURE__ */ (0, import_jsx_runtime130.jsx)( + inputNode = /* @__PURE__ */ (0, import_jsx_runtime131.jsx)( input_default, { isNumeric: true, @@ -64549,7 +66147,7 @@ function FilterMenu({ } case "date" /* DATE */: { const { option } = filter3; - inputNode = /* @__PURE__ */ (0, import_jsx_runtime130.jsx)( + inputNode = /* @__PURE__ */ (0, import_jsx_runtime131.jsx)( DateFilterSelect, { value: option, @@ -64570,7 +66168,7 @@ function FilterMenu({ } case "creation-time" /* CREATION_TIME */: { const { option } = filter3; - inputNode = /* @__PURE__ */ (0, import_jsx_runtime130.jsx)( + inputNode = /* @__PURE__ */ (0, import_jsx_runtime131.jsx)( DateFilterSelect, { value: option, @@ -64589,7 +66187,7 @@ function FilterMenu({ } case "last-edited-time" /* LAST_EDITED_TIME */: { const { option } = filter3; - inputNode = /* @__PURE__ */ (0, import_jsx_runtime130.jsx)( + inputNode = /* @__PURE__ */ (0, import_jsx_runtime131.jsx)( DateFilterSelect, { value: option, @@ -64609,11 +66207,12 @@ function FilterMenu({ default: throw new Error("Column type not handled"); } - return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)( FilterRow, { index: i2, id: id3, + useSpacer: filters.length > 1 && i2 === 0, columns, selectedColumnId: columnId, selectedCondition: condition, @@ -64630,17 +66229,14 @@ function FilterMenu({ id3 ); }), - /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(Stack, { isHorizontal: true, children: [ - /* @__PURE__ */ (0, import_jsx_runtime130.jsx)( - Button, - { - icon: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(Icon, { lucideId: "plus" }), - ariaLabel: "Add filter", - onClick: () => onAddClick() - } - ), - filters.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(Text, { value: "No filters to display" }) - ] }) + /* @__PURE__ */ (0, import_jsx_runtime131.jsx)( + Button, + { + icon: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(Icon, { lucideId: "plus" }), + ariaLabel: "Add filter", + onClick: () => onAddClick() + } + ) ] }) }) } ) @@ -64649,32 +66245,32 @@ function FilterMenu({ } // src/react/loom-app/option-bar/sort-bubble/index.tsx -var import_jsx_runtime131 = __toESM(require_jsx_runtime()); +var import_jsx_runtime132 = __toESM(require_jsx_runtime()); function SortBubble({ sortDir, content, onRemoveClick }) { - return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { className: "dataloom-sort-bubble", children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("div", { className: "dataloom-sort-bubble", children: /* @__PURE__ */ (0, import_jsx_runtime132.jsx)( Bubble, { canRemove: true, value: content, - icon: sortDir === "asc" /* ASC */ ? /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(Icon, { lucideId: "arrow-up" }) : /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(Icon, { lucideId: "arrow-down" }), + icon: sortDir === "asc" /* ASC */ ? /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(Icon, { lucideId: "arrow-up" }) : /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(Icon, { lucideId: "arrow-down" }), onRemoveClick } ) }); } // src/react/loom-app/option-bar/sort-bubble-list.tsx -var import_jsx_runtime132 = __toESM(require_jsx_runtime()); +var import_jsx_runtime133 = __toESM(require_jsx_runtime()); function SortBubbleList({ sortedColumns, onRemoveClick }) { - return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(Stack, { spacing: "sm", isHorizontal: true, children: sortedColumns.map((column, i2) => { + return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(Stack, { spacing: "sm", isHorizontal: true, children: sortedColumns.map((column, i2) => { const { id: id2, sortDir, content } = column; - return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)( SortBubble, { sortDir, @@ -64687,13 +66283,13 @@ function SortBubbleList({ } // src/react/loom-app/option-bar/sources-menu/index.tsx -var import_react51 = __toESM(require_react()); - -// src/react/loom-app/option-bar/sources-menu/add-source-submenu/index.tsx var import_react50 = __toESM(require_react()); +// src/react/loom-app/option-bar/sources-menu/add-source-submenu/index.tsx +var import_react49 = __toESM(require_react()); + // src/react/loom-app/option-bar/sources-menu/add-source-submenu/folder-source-options.tsx -var import_jsx_runtime133 = __toESM(require_jsx_runtime()); +var import_jsx_runtime134 = __toESM(require_jsx_runtime()); function FolderSourceOptions({ pathInputId, includeSubfoldersInputId, @@ -64703,10 +66299,10 @@ function FolderSourceOptions({ onIncludeSubfoldersToggle, onPathChange }) { - return /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(import_jsx_runtime133.Fragment, { children: [ - /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(Stack, { spacing: "sm", children: [ - /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("label", { htmlFor: pathInputId, children: "Path" }), - /* @__PURE__ */ (0, import_jsx_runtime133.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(import_jsx_runtime134.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(Stack, { spacing: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("label", { htmlFor: pathInputId, children: "Path" }), + /* @__PURE__ */ (0, import_jsx_runtime134.jsx)( input_default, { id: pathInputId, @@ -64717,9 +66313,9 @@ function FolderSourceOptions({ } ) ] }), - /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(Stack, { spacing: "sm", children: [ - /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("label", { htmlFor: includeSubfoldersInputId, children: "Include subfolders" }), - /* @__PURE__ */ (0, import_jsx_runtime133.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(Stack, { spacing: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("label", { htmlFor: includeSubfoldersInputId, children: "Include subfolders" }), + /* @__PURE__ */ (0, import_jsx_runtime134.jsx)( Switch, { value: includeSubfolders, @@ -64734,7 +66330,7 @@ function FolderSourceOptions({ var import_obsidian18 = require("obsidian"); // src/react/loom-app/option-bar/sources-menu/add-source-submenu/frontmatter-source-options.tsx -var import_jsx_runtime134 = __toESM(require_jsx_runtime()); +var import_jsx_runtime135 = __toESM(require_jsx_runtime()); function FrontmatterSourceOptions({ propertyTypeSelectId, propertyKeySelectId, @@ -64749,10 +66345,10 @@ function FrontmatterSourceOptions({ selectedPropertyType ); } - return /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(import_jsx_runtime134.Fragment, { children: [ - /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(Stack, { spacing: "sm", children: [ - /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("label", { htmlFor: propertyTypeSelectId, children: "Property Type" }), - /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)( + return /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(import_jsx_runtime135.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(Stack, { spacing: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("label", { htmlFor: propertyTypeSelectId, children: "Property Type" }), + /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)( Select, { value: selectedPropertyType != null ? selectedPropertyType : "", @@ -64760,26 +66356,26 @@ function FrontmatterSourceOptions({ value || null ), children: [ - /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("option", { value: "", children: "Select an option" }), + /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("option", { value: "", children: "Select an option" }), Object.values(ObsidianPropertyType).map((type) => { - return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("option", { value: type, children: type }, type); + return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("option", { value: type, children: type }, type); }) ] } ) ] }), - /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(Stack, { spacing: "sm", children: [ - /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("label", { htmlFor: propertyKeySelectId, children: "Property Key" }), - /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)( + /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(Stack, { spacing: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("label", { htmlFor: propertyKeySelectId, children: "Property Key" }), + /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)( Select, { isDisabled: selectedPropertyType === null, value: selectedPropertyKey != null ? selectedPropertyKey : "", onChange: (value) => onPropertyKeyChange(value || null), children: [ - /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("option", { value: "", children: "Select an option" }), + /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("option", { value: "", children: "Select an option" }), Object.values(propertyTypes).map((type) => { - return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("option", { value: type, children: type }, type); + return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("option", { value: type, children: type }, type); }) ] } @@ -64789,23 +66385,23 @@ function FrontmatterSourceOptions({ } // src/react/loom-app/option-bar/sources-menu/add-source-submenu/index.tsx -var import_jsx_runtime135 = __toESM(require_jsx_runtime()); +var import_jsx_runtime136 = __toESM(require_jsx_runtime()); function AddSourceSubmenu({ sources, onAddSourceClick, onBackClick }) { - const [type, setType] = import_react50.default.useState(null); - const [path, setPath] = import_react50.default.useState(""); - const [includeSubfolders, setIncludeSubfolders] = import_react50.default.useState(true); - const [error, setError] = import_react50.default.useState(null); - const [propertyType, setPropertyType] = import_react50.default.useState(null); - const [propertyKey, setPropertyKey] = import_react50.default.useState(null); - const typeSelectId = import_react50.default.useId(); - const pathInputId = import_react50.default.useId(); - const includeSubfoldersInputId = import_react50.default.useId(); - const propertyKeySelectId = import_react50.default.useId(); - const propertyTypeSelectId = import_react50.default.useId(); + const [type, setType] = import_react49.default.useState(null); + const [path, setPath] = import_react49.default.useState(""); + const [includeSubfolders, setIncludeSubfolders] = import_react49.default.useState(true); + const [error, setError] = import_react49.default.useState(null); + const [propertyType, setPropertyType] = import_react49.default.useState(null); + const [propertyKey, setPropertyKey] = import_react49.default.useState(null); + const typeSelectId = import_react49.default.useId(); + const pathInputId = import_react49.default.useId(); + const includeSubfoldersInputId = import_react49.default.useId(); + const propertyKeySelectId = import_react49.default.useId(); + const propertyTypeSelectId = import_react49.default.useId(); function handleAddClick() { const formattedPath = (0, import_obsidian18.normalizePath)(path); if (type === null) { @@ -64875,16 +66471,16 @@ function AddSourceSubmenu({ } throw new Error("Source type not handled"); } - return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)( Submenu, { title: "Add source", showBackButton: sources.length > 0, onBackClick, - children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(Padding, { py: "md", children: /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(Stack, { spacing: "lg", children: [ - /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(Stack, { spacing: "sm", children: [ - /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("label", { htmlFor: "type", children: "Type" }), - /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)( + children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(Padding, { py: "md", children: /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(Stack, { spacing: "lg", children: [ + /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(Stack, { spacing: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("label", { htmlFor: "type", children: "Type" }), + /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)( Select, { id: "type", @@ -64892,15 +66488,15 @@ function AddSourceSubmenu({ hasError: (error == null ? void 0 : error.inputId) === typeSelectId, onChange: (value) => setType(value || null), children: [ - /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("option", { value: "", children: "Select an option" }), + /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("option", { value: "", children: "Select an option" }), Object.values(SourceType).map((type2) => { - return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("option", { value: type2, children: getDisplayNameForSource(type2) }, type2); + return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("option", { value: type2, children: getDisplayNameForSource(type2) }, type2); }) ] } ) ] }), - type === "folder" /* FOLDER */ && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)( + type === "folder" /* FOLDER */ && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)( FolderSourceOptions, { pathInputId, @@ -64912,7 +66508,7 @@ function AddSourceSubmenu({ onPathChange: (value) => setPath(value) } ), - type === "frontmatter" /* FRONTMATTER */ && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)( + type === "frontmatter" /* FRONTMATTER */ && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)( FrontmatterSourceOptions, { propertyKeySelectId, @@ -64924,40 +66520,40 @@ function AddSourceSubmenu({ onPropertyTypeChange: setPropertyType } ), - (error == null ? void 0 : error.message) && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(Text, { value: error.message, variant: "error" }), - /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(Button, { variant: "default", onClick: () => handleAddClick(), children: "Add" }) + (error == null ? void 0 : error.message) && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(Text, { value: error.message, variant: "error" }), + /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(Button, { variant: "default", onClick: () => handleAddClick(), children: "Add" }) ] }) }) } ); } // src/react/loom-app/option-bar/sources-menu/source-item/index.tsx -var import_jsx_runtime136 = __toESM(require_jsx_runtime()); +var import_jsx_runtime137 = __toESM(require_jsx_runtime()); function SourceItem({ children }) { - return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("div", { className: "dataloom-source-item", children }); + return /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("div", { className: "dataloom-source-item", children }); } // src/react/loom-app/option-bar/sources-menu/folder-source-item/index.tsx -var import_jsx_runtime137 = __toESM(require_jsx_runtime()); +var import_jsx_runtime138 = __toESM(require_jsx_runtime()); function FolderSourceItem({ id: id2, content, type, onDelete }) { - return /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(SourceItem, { children: /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)(Flex, { justify: "space-between", align: "center", height: "100%", children: [ - /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(Stack, { isHorizontal: true, spacing: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime137.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(SourceItem, { children: /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)(Flex, { justify: "space-between", align: "center", height: "100%", children: [ + /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(Stack, { isHorizontal: true, spacing: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime138.jsx)( Bubble, { - icon: /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(Icon, { lucideId: getIconIdForSourceType(type) }), + icon: /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(Icon, { lucideId: getIconIdForSourceType(type) }), variant: "no-fill", value: content } ) }), - /* @__PURE__ */ (0, import_jsx_runtime137.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime138.jsx)( Button, { - icon: /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(Icon, { lucideId: "trash" }), + icon: /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(Icon, { lucideId: "trash" }), ariaLabel: "Delete source", onClick: () => onDelete(id2) } @@ -64966,7 +66562,7 @@ function FolderSourceItem({ } // src/react/loom-app/option-bar/sources-menu/add-source-submenu/filter-input.tsx -var import_jsx_runtime138 = __toESM(require_jsx_runtime()); +var import_jsx_runtime139 = __toESM(require_jsx_runtime()); function FilterInput({ filterTextId, selectedPropertyType, @@ -64975,8 +66571,8 @@ function FilterInput({ }) { const showListInput = selectedPropertyType === "aliases" /* ALIASES */ || selectedPropertyType === "tags" /* TAGS */ || selectedPropertyType === "multitext" /* MULTITEXT */; const showDateInput = selectedPropertyType === "date" /* DATE */ || selectedPropertyType === "datetime" /* DATETIME */; - return /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)(import_jsx_runtime138.Fragment, { children: [ - selectedPropertyType === "text" /* TEXT */ && /* @__PURE__ */ (0, import_jsx_runtime138.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime139.jsxs)(import_jsx_runtime139.Fragment, { children: [ + selectedPropertyType === "text" /* TEXT */ && /* @__PURE__ */ (0, import_jsx_runtime139.jsx)( input_default, { id: filterTextId, @@ -64985,7 +66581,7 @@ function FilterInput({ onChange: (value) => onFilterTextChange(value) } ), - selectedPropertyType === "number" /* NUMBER */ && /* @__PURE__ */ (0, import_jsx_runtime138.jsx)( + selectedPropertyType === "number" /* NUMBER */ && /* @__PURE__ */ (0, import_jsx_runtime139.jsx)( input_default, { id: filterTextId, @@ -64995,21 +66591,21 @@ function FilterInput({ onChange: (value) => onFilterTextChange(value) } ), - showDateInput && /* @__PURE__ */ (0, import_jsx_runtime138.jsx)( + showDateInput && /* @__PURE__ */ (0, import_jsx_runtime139.jsx)( DateFilterSelect, { value: filterText, onChange: (value) => onFilterTextChange(value) } ), - selectedPropertyType === "checkbox" /* CHECKBOX */ && /* @__PURE__ */ (0, import_jsx_runtime138.jsx)( + selectedPropertyType === "checkbox" /* CHECKBOX */ && /* @__PURE__ */ (0, import_jsx_runtime139.jsx)( CheckboxFilterSelect, { value: filterText === "true", onChange: (value) => onFilterTextChange(value.toString()) } ), - showListInput && /* @__PURE__ */ (0, import_jsx_runtime138.jsx)( + showListInput && /* @__PURE__ */ (0, import_jsx_runtime139.jsx)( input_default, { id: filterTextId, @@ -65022,7 +66618,7 @@ function FilterInput({ } // src/react/loom-app/option-bar/sources-menu/frontmatter-source-item/index.tsx -var import_jsx_runtime139 = __toESM(require_jsx_runtime()); +var import_jsx_runtime140 = __toESM(require_jsx_runtime()); function FrontmatterSourceItem({ filterConditions, filterText, @@ -65036,11 +66632,11 @@ function FrontmatterSourceItem({ onFilterTextChange }) { const showFilterInput = selectedFilterCondition !== "is-empty" /* IS_EMPTY */ && selectedFilterCondition !== "is-not-empty" /* IS_NOT_EMPTY */ && selectedFilterCondition !== "is-empty" /* IS_EMPTY */ && selectedFilterCondition !== "is-not-empty" /* IS_NOT_EMPTY */ && selectedFilterCondition !== "is-not-empty" /* IS_NOT_EMPTY */ && selectedFilterCondition !== "is-empty" /* IS_EMPTY */; - return /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(SourceItem, { children: /* @__PURE__ */ (0, import_jsx_runtime139.jsx)("div", { className: "dataloom-frontmatter-source-item", children: /* @__PURE__ */ (0, import_jsx_runtime139.jsxs)(Wrap, { children: [ - /* @__PURE__ */ (0, import_jsx_runtime139.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(SourceItem, { children: /* @__PURE__ */ (0, import_jsx_runtime140.jsx)("div", { className: "dataloom-frontmatter-source-item", children: /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(Wrap, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime140.jsx)( Bubble, { - icon: /* @__PURE__ */ (0, import_jsx_runtime139.jsx)( + icon: /* @__PURE__ */ (0, import_jsx_runtime140.jsx)( Icon, { lucideId: getIconIdForSourceType(type, { @@ -65052,7 +66648,7 @@ function FrontmatterSourceItem({ value: title } ), - /* @__PURE__ */ (0, import_jsx_runtime139.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime140.jsx)( Select, { value: selectedFilterCondition != null ? selectedFilterCondition : "", @@ -65061,11 +66657,11 @@ function FrontmatterSourceItem({ value || null ), children: Object.values(filterConditions).map((type2) => { - return /* @__PURE__ */ (0, import_jsx_runtime139.jsx)("option", { value: type2, children: getDisplayNameForFilterCondition(type2) }, type2); + return /* @__PURE__ */ (0, import_jsx_runtime140.jsx)("option", { value: type2, children: getDisplayNameForFilterCondition(type2) }, type2); }) } ), - showFilterInput && /* @__PURE__ */ (0, import_jsx_runtime139.jsx)( + showFilterInput && /* @__PURE__ */ (0, import_jsx_runtime140.jsx)( FilterInput, { selectedPropertyType, @@ -65073,10 +66669,10 @@ function FrontmatterSourceItem({ onFilterTextChange: (value) => onFilterTextChange(id2, value) } ), - /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(Flex, { width: "fit-content", grow: true, justify: "flex-end", children: /* @__PURE__ */ (0, import_jsx_runtime139.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(Flex, { width: "fit-content", grow: true, justify: "flex-end", children: /* @__PURE__ */ (0, import_jsx_runtime140.jsx)( Button, { - icon: /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(Icon, { lucideId: "trash" }), + icon: /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(Icon, { lucideId: "trash" }), ariaLabel: "Delete source", onClick: () => onDelete(id2) } @@ -65085,7 +66681,7 @@ function FrontmatterSourceItem({ } // src/react/loom-app/option-bar/sources-menu/base-content/index.tsx -var import_jsx_runtime140 = __toESM(require_jsx_runtime()); +var import_jsx_runtime141 = __toESM(require_jsx_runtime()); function BaseContent2({ sources, onSourceAdd, @@ -65093,12 +66689,12 @@ function BaseContent2({ onSourceFilterConditionChange, onSourceFilterTextChange }) { - return /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(Stack, { spacing: "md", children: [ - /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(Stack, { spacing: "md", children: sources.map((source) => { + return /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(Stack, { spacing: "md", children: [ + /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(Stack, { spacing: "md", children: sources.map((source) => { const { id: id2, type } = source; if (type === "folder" /* FOLDER */) { const { path } = source; - return /* @__PURE__ */ (0, import_jsx_runtime140.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime141.jsx)( FolderSourceItem, { id: id2, @@ -65116,7 +66712,7 @@ function BaseContent2({ propertyKey } = source; const filterConditions = getFilterConditionsForPropertyType(propertyType); - return /* @__PURE__ */ (0, import_jsx_runtime140.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime141.jsx)( FrontmatterSourceItem, { id: id2, @@ -65136,10 +66732,10 @@ function BaseContent2({ throw new Error("Unhandled source type"); } }) }), - /* @__PURE__ */ (0, import_jsx_runtime140.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime141.jsx)( Button, { - icon: /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(Icon, { lucideId: "plus" }), + icon: /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(Icon, { lucideId: "plus" }), onClick: () => onSourceAdd(), ariaLabel: "Add source" } @@ -65148,7 +66744,7 @@ function BaseContent2({ } // src/react/loom-app/option-bar/sources-menu/index.tsx -var import_jsx_runtime141 = __toESM(require_jsx_runtime()); +var import_jsx_runtime142 = __toESM(require_jsx_runtime()); function SourcesMenu({ id: id2, isOpen, @@ -65159,10 +66755,10 @@ function SourcesMenu({ onSourceFilterConditionChange, onSourceFilterTextChange }) { - const [submenu, setSubmenu] = import_react51.default.useState( + const [submenu, setSubmenu] = import_react50.default.useState( sources.length === 0 ? 0 /* ADD */ : null ); - import_react51.default.useLayoutEffect(() => { + import_react50.default.useLayoutEffect(() => { if (sources.length === 0) { setSubmenu(0 /* ADD */); } @@ -65171,15 +66767,15 @@ function SourcesMenu({ onSourceAdd(source); setSubmenu(null); } - return /* @__PURE__ */ (0, import_jsx_runtime141.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime142.jsx)( Menu, { id: id2, openDirection: "bottom-left", isOpen, position, - children: /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(Padding, { px: "lg", py: "md", children: [ - submenu === null && /* @__PURE__ */ (0, import_jsx_runtime141.jsx)( + children: /* @__PURE__ */ (0, import_jsx_runtime142.jsxs)(Padding, { px: "lg", py: "md", children: [ + submenu === null && /* @__PURE__ */ (0, import_jsx_runtime142.jsx)( BaseContent2, { sources, @@ -65189,7 +66785,7 @@ function SourcesMenu({ onSourceFilterTextChange } ), - submenu === 0 /* ADD */ && /* @__PURE__ */ (0, import_jsx_runtime141.jsx)( + submenu === 0 /* ADD */ && /* @__PURE__ */ (0, import_jsx_runtime142.jsx)( AddSourceSubmenu, { sources, @@ -65203,7 +66799,7 @@ function SourcesMenu({ } // src/react/loom-app/option-bar/index.tsx -var import_jsx_runtime142 = __toESM(require_jsx_runtime()); +var import_jsx_runtime143 = __toESM(require_jsx_runtime()); function OptionBar({ columns, filters, @@ -65248,62 +66844,71 @@ function OptionBar({ } function handleFilterMenuOpen() { filterMenu.onOpen(1 /* ONE */); + if (filters.length === 0) { + onFilterAddClick(); + } } function handleMoreMenuOpen() { moreMenu.onOpen(1 /* ONE */); } + function handleFilterDelete(id2) { + onFilterDeleteClick(id2); + if (filters.length === 1) { + filterMenu.onClose(); + } + } const activeFilters = filters.filter((filter3) => filter3.isEnabled); const sortedColumns = columns.filter( (column) => column.sortDir !== "default" /* NONE */ ); const isSmallScreen = isSmallScreenSize(); - return /* @__PURE__ */ (0, import_jsx_runtime142.jsxs)(import_jsx_runtime142.Fragment, { children: [ - /* @__PURE__ */ (0, import_jsx_runtime142.jsx)("div", { className: "dataloom-option-bar", children: /* @__PURE__ */ (0, import_jsx_runtime142.jsx)(Padding, { py: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime142.jsxs)( + return /* @__PURE__ */ (0, import_jsx_runtime143.jsxs)(import_jsx_runtime143.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime143.jsx)("div", { className: "dataloom-option-bar", children: /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(Padding, { py: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime143.jsxs)( Stack, - __spreadProps(__spreadValues({ + { isHorizontal: !isSmallScreen, - spacing: "sm" - }, !isSmallScreen && { justify: "space-between" }), { + spacing: "sm", + ...!isSmallScreen && { justify: "space-between" }, children: [ - /* @__PURE__ */ (0, import_jsx_runtime142.jsxs)( + /* @__PURE__ */ (0, import_jsx_runtime143.jsxs)( Stack, - __spreadProps(__spreadValues({ + { isHorizontal: true, spacing: "md", - overflow: "auto" - }, isSmallScreen && { - width: "100%", - justify: "flex-end" - }), { + overflow: "auto", + ...isSmallScreen && { + width: "100%", + justify: "flex-end" + }, children: [ - /* @__PURE__ */ (0, import_jsx_runtime142.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime143.jsx)( SortBubbleList, { sortedColumns, onRemoveClick: handleRemoveClick } ), - /* @__PURE__ */ (0, import_jsx_runtime142.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime143.jsx)( ActiveFilterBubble, { numActive: activeFilters.length } ) ] - }) + } ), - /* @__PURE__ */ (0, import_jsx_runtime142.jsxs)( + /* @__PURE__ */ (0, import_jsx_runtime143.jsxs)( Stack, - __spreadProps(__spreadValues({ + { isHorizontal: true, spacing: "sm", - justify: "flex-end" - }, isSmallScreen && { - height: "40px", - width: "100%" - }), { + justify: "flex-end", + ...isSmallScreen && { + height: "40px", + width: "100%" + }, children: [ - isSmallScreen === false && /* @__PURE__ */ (0, import_jsx_runtime142.jsx)( + isSmallScreen === false && /* @__PURE__ */ (0, import_jsx_runtime143.jsx)( menu_button_default, { isFocused: sourcesMenu.isTriggerFocused, @@ -65314,7 +66919,7 @@ function OptionBar({ children: "Sources" } ), - isSmallScreen === false && /* @__PURE__ */ (0, import_jsx_runtime142.jsx)( + isSmallScreen === false && /* @__PURE__ */ (0, import_jsx_runtime143.jsx)( menu_button_default, { isFocused: filterMenu.isTriggerFocused, @@ -65325,25 +66930,25 @@ function OptionBar({ children: "Filter" } ), - /* @__PURE__ */ (0, import_jsx_runtime142.jsx)(SearchBar, {}), - /* @__PURE__ */ (0, import_jsx_runtime142.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(SearchBar, {}), + /* @__PURE__ */ (0, import_jsx_runtime143.jsx)( menu_button_default, { isFocused: moreMenu.isTriggerFocused, menuId: moreMenu.id, ref: moreMenu.triggerRef, level: 1 /* ONE */, - icon: /* @__PURE__ */ (0, import_jsx_runtime142.jsx)(Icon, { lucideId: "more-vertical" }), + icon: /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(Icon, { lucideId: "more-vertical" }), onOpen: handleMoreMenuOpen } ) ] - }) + } ) ] - }) + } ) }) }), - /* @__PURE__ */ (0, import_jsx_runtime142.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime143.jsx)( SourcesMenu, { id: sourcesMenu.id, @@ -65358,7 +66963,7 @@ function OptionBar({ onClose: sourcesMenu.onClose } ), - /* @__PURE__ */ (0, import_jsx_runtime142.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime143.jsx)( MoreMenu, { id: moreMenu.id, @@ -65373,7 +66978,7 @@ function OptionBar({ onSourcesClick: handleSourceMenuOpen } ), - /* @__PURE__ */ (0, import_jsx_runtime142.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime143.jsx)( FilterMenu, { id: filterMenu.id, @@ -65382,7 +66987,7 @@ function OptionBar({ columns, filters, onUpdate: onFilterUpdate, - onDeleteClick: onFilterDeleteClick, + onDeleteClick: handleFilterDelete, onAddClick: onFilterAddClick } ) @@ -65390,16 +66995,16 @@ function OptionBar({ } // src/react/loom-app/bottom-bar/index.tsx -var import_react52 = __toESM(require_react()); +var import_react51 = __toESM(require_react()); var import_lodash9 = __toESM(require_lodash()); // src/react/loom-app/new-row-button/index.tsx -var import_jsx_runtime143 = __toESM(require_jsx_runtime()); +var import_jsx_runtime144 = __toESM(require_jsx_runtime()); function NewRowButton({ onClick }) { - return /* @__PURE__ */ (0, import_jsx_runtime143.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime144.jsx)( Button, { - icon: /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(Icon, { lucideId: "plus" }), + icon: /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(Icon, { lucideId: "plus" }), ariaLabel: "New row", onClick: () => onClick(), children: "New" @@ -65408,7 +67013,7 @@ function NewRowButton({ onClick }) { } // src/react/loom-app/bottom-bar/index.tsx -var import_jsx_runtime144 = __toESM(require_jsx_runtime()); +var import_jsx_runtime145 = __toESM(require_jsx_runtime()); function BottomBar({ onRowAddClick, onScrollToTopClick, @@ -65416,10 +67021,10 @@ function BottomBar({ onUndoClick, onRedoClick }) { - const ref = import_react52.default.useRef(null); - const [bottomBarOffset, setBottomBarOffset] = import_react52.default.useState(0); + const ref = import_react51.default.useRef(null); + const [bottomBarOffset, setBottomBarOffset] = import_react51.default.useState(0); const isMobile = isOnMobile(); - import_react52.default.useEffect(() => { + import_react51.default.useEffect(() => { const el = ref.current; if (!el) return; @@ -65459,50 +67064,50 @@ function BottomBar({ if (isMobile) { className += " dataloom-bottom-bar--mobile"; } - return /* @__PURE__ */ (0, import_jsx_runtime144.jsx)("div", { ref, className, children: /* @__PURE__ */ (0, import_jsx_runtime144.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime145.jsx)("div", { ref, className, children: /* @__PURE__ */ (0, import_jsx_runtime145.jsx)( "div", { style: { top: numToPx(-bottomBarOffset) }, - children: /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(Padding, { pt: "md", width: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime144.jsxs)(Stack, { spacing: "sm", children: [ - /* @__PURE__ */ (0, import_jsx_runtime144.jsxs)(Flex, { justify: "space-between", children: [ - /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(NewRowButton, { onClick: onRowAddClick }), - /* @__PURE__ */ (0, import_jsx_runtime144.jsxs)(Stack, { isHorizontal: true, spacing: "sm", children: [ - /* @__PURE__ */ (0, import_jsx_runtime144.jsx)( + children: /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(Padding, { pt: "md", width: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime145.jsxs)(Stack, { spacing: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime145.jsxs)(Flex, { justify: "space-between", children: [ + /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(NewRowButton, { onClick: onRowAddClick }), + /* @__PURE__ */ (0, import_jsx_runtime145.jsxs)(Stack, { isHorizontal: true, spacing: "sm", children: [ + /* @__PURE__ */ (0, import_jsx_runtime145.jsx)( Button, { ariaLabel: "Scroll to top", - icon: /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(Icon, { lucideId: "chevron-up" }), + icon: /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(Icon, { lucideId: "chevron-up" }), onClick: onScrollToTopClick } ), - /* @__PURE__ */ (0, import_jsx_runtime144.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime145.jsx)( Button, { ariaLabel: "Scroll to bottom", onClick: onScrollToBottomClick, - icon: /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(Icon, { lucideId: "chevron-down" }) + icon: /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(Icon, { lucideId: "chevron-down" }) } ) ] }) ] }), - isMobile && /* @__PURE__ */ (0, import_jsx_runtime144.jsxs)(Flex, { justify: "space-between", children: [ - /* @__PURE__ */ (0, import_jsx_runtime144.jsx)( + isMobile && /* @__PURE__ */ (0, import_jsx_runtime145.jsxs)(Flex, { justify: "space-between", children: [ + /* @__PURE__ */ (0, import_jsx_runtime145.jsx)( Button, { ariaLabel: "Undo", size: "lg", - icon: /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(Icon, { lucideId: "undo" }), + icon: /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(Icon, { lucideId: "undo" }), onClick: onUndoClick } ), - /* @__PURE__ */ (0, import_jsx_runtime144.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime145.jsx)( Button, { ariaLabel: "Redo", size: "lg", - icon: /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(Icon, { lucideId: "redo" }), + icon: /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(Icon, { lucideId: "redo" }), onClick: onRedoClick } ) @@ -65533,36 +67138,36 @@ var evaluateWithPrecedence = (expressions) => { var getDateFromDateFilterOption = (option) => { switch (option) { case "today" /* TODAY */: { - const date = new Date(); + const date = /* @__PURE__ */ new Date(); return date; } case "tomorrow" /* TOMORROW */: { - const date = new Date(); + const date = /* @__PURE__ */ new Date(); date.setDate(date.getDate() + 1); return date; } case "yesterday" /* YESTERDAY */: { - const date = new Date(); + const date = /* @__PURE__ */ new Date(); date.setDate(date.getDate() - 1); return date; } case "one-week-ago" /* ONE_WEEK_AGO */: { - const date = new Date(); + const date = /* @__PURE__ */ new Date(); date.setDate(date.getDate() - 7); return date; } case "one-week-from-now" /* ONE_WEEK_FROM_NOW */: { - const date = new Date(); + const date = /* @__PURE__ */ new Date(); date.setDate(date.getDate() + 7); return date; } case "one-month-ago" /* ONE_MONTH_AGO */: { - const date = new Date(); + const date = /* @__PURE__ */ new Date(); date.setMonth(date.getMonth() - 1); return date; } case "one-month-from-now" /* ONE_MONTH_FROM_NOW */: { - const date = new Date(); + const date = /* @__PURE__ */ new Date(); date.setMonth(date.getMonth() + 1); return date; } @@ -65912,6 +67517,11 @@ var LoomStateCommand = class { this.shouldSortRows = shouldSortRows; this.shouldSaveFrontmatter = shouldSaveFrontmatter; } + /** + * Should be called after the command is executed + * @param prevState - The state before the command is executed + * @param nextState - The state after the command is executed + */ finishExecute(prevState, nextState) { this.hasExecuteBeenCalled = true; const patch = import_jsondiffpatch.default.diff(prevState, nextState); @@ -65954,16 +67564,18 @@ var FilterUpdateCommand = class extends loom_state_command_default { if (filter3.id === this.id) { let newFilter = this.data; if (this.isPartial) - newFilter = __spreadValues(__spreadValues({}, filter3), this.data); + newFilter = { ...filter3, ...this.data }; return newFilter; } return filter3; }); - const nextState = __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + const nextState = { + ...prevState, + model: { + ...prevState.model, filters: nextFilters - }) - }); + } + }; this.finishExecute(prevState, nextState); return nextState; } @@ -66008,11 +67620,13 @@ var FilterAddCommand = class extends loom_state_command_default { throw new Error("Unhandled cell type"); } const nextFilters = [...filters, newFilter]; - const nextState = __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + const nextState = { + ...prevState, + model: { + ...prevState.model, filters: nextFilters - }) - }); + } + }; this.finishExecute(prevState, nextState); return nextState; } @@ -66027,30 +67641,32 @@ var FilterDeleteCommand = class extends loom_state_command_default { execute(prevState) { const { filters } = prevState.model; const nextFilters = filters.filter((f3) => f3.id !== this.id); - const newState = __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + const newState = { + ...prevState, + model: { + ...prevState.model, filters: nextFilters - }) - }); + } + }; this.finishExecute(prevState, newState); return newState; } }; // src/react/loom-app/app/hooks/use-filter.ts +var import_js_logger12 = __toESM(require_logger()); var useFilter = () => { - const logger = useLogger(); const { doCommand } = useLoomState(); function handleFilterUpdate(id2, data, isPartial) { - logger("handleFilterUpdate", { id: id2, data }); + import_js_logger12.default.trace("handleFilterUpdate", { id: id2, data }); doCommand(new FilterUpdateCommand(id2, data, isPartial)); } function handleFilterAdd() { - logger("handleFilterAdd"); + import_js_logger12.default.trace("handleFilterAdd"); doCommand(new FilterAddCommand()); } function handleFilterDelete(id2) { - logger("handleFilterDelete", { id: id2 }); + import_js_logger12.default.trace("handleFilterDelete", { id: id2 }); doCommand(new FilterDeleteCommand(id2)); } return { @@ -66273,9 +67889,10 @@ var columnAddExecute = (prevColumns, prevRows, options) => { const { cells } = row; const newCell = createCellForType(newColumn.id, type); const nextCells = [...cells, newCell]; - return __spreadProps(__spreadValues({}, row), { + return { + ...row, cells: nextCells - }); + }; }); return { columns: nextColumns, @@ -66293,12 +67910,14 @@ var ColumnAddCommand = class extends loom_state_command_default { const { columns, rows } = prevState.model; const result = columnAddExecute(columns, rows, { type: this.type }); const { columns: nextColumns, rows: nextRows } = result; - const nextState = __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + const nextState = { + ...prevState, + model: { + ...prevState.model, columns: nextColumns, rows: nextRows - }) - }); + } + }; this.finishExecute(prevState, nextState); return nextState; } @@ -66334,9 +67953,10 @@ var columnDeleteExecute = (prevColumns, prevRows, prevFilters, id2) => { rowId: row.id }); const nextCells = cells.filter((cell2) => cell2.columnId !== id2); - return __spreadProps(__spreadValues({}, row), { + return { + ...row, cells: nextCells - }); + }; }); const nextFilters = prevFilters.filter((filter3) => filter3.columnId !== id2); return { @@ -66366,13 +67986,15 @@ var ColumnDeleteCommand = class extends loom_state_command_default { return prevState; } const { nextColumns, nextFilters, nextRows } = result; - const nextState = __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + const nextState = { + ...prevState, + model: { + ...prevState.model, columns: nextColumns, rows: nextRows, filters: nextFilters - }) - }); + } + }; this.finishExecute(prevState, nextState); return nextState; } @@ -66400,16 +68022,18 @@ var ColumnUpdateCommand = class extends loom_state_command_default { if (column2.id === this.columnId) { let newColumn = this.data; if (this.isPartial) - newColumn = __spreadValues(__spreadValues({}, column2), this.data); + newColumn = { ...column2, ...this.data }; return newColumn; } return column2; }); - const nextState = __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + const nextState = { + ...prevState, + model: { + ...prevState.model, columns: nextColumns - }) - }); + } + }; this.finishExecute(prevState, nextState); return nextState; } @@ -66507,29 +68131,33 @@ var ColumnTypeUpdateCommand = class extends loom_state_command_default { } return cell; }); - return __spreadProps(__spreadValues({}, row), { + return { + ...row, cells: nextCells - }); + }; }); const nextColumns = columnsCopy.map((column2) => { if (column2.id === this.targetColumnId) { - return __spreadProps(__spreadValues({}, column2), { + return { + ...column2, type: this.nextType, frontmatterKey: null - }); + }; } return column2; }); const nextFilters = filters.filter( (filter3) => filter3.columnId !== this.targetColumnId ); - const nextState = __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + const nextState = { + ...prevState, + model: { + ...prevState.model, columns: nextColumns, rows: nextRows, filters: nextFilters - }) - }); + } + }; this.finishExecute(prevState, nextState); return nextState; } @@ -66727,12 +68355,14 @@ var ColumnReorderCommand = class extends loom_state_command_default { prevState.model.rows, newColumns ); - const nextState = __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + const nextState = { + ...prevState, + model: { + ...prevState.model, columns: newColumns, rows: nextRows - }) - }); + } + }; this.finishExecute(prevState, nextState); return nextState; } @@ -66748,61 +68378,62 @@ var ColumnReorderCommand = class extends loom_state_command_default { ); return aIndex - bIndex; }); - return __spreadProps(__spreadValues({}, row), { + return { + ...row, cells: nextCells - }); + }; }); } }; // src/react/loom-app/app/hooks/use-column/index.ts -var import_react53 = __toESM(require_react()); +var import_react52 = __toESM(require_react()); +var import_js_logger13 = __toESM(require_logger()); var useColumn = () => { - const logger = useLogger(); const { doCommand } = useLoomState(); - const handleNewColumnClick = import_react53.default.useCallback(() => { - logger("handleNewColumnClick"); + const handleNewColumnClick = import_react52.default.useCallback(() => { + import_js_logger13.default.trace("handleNewColumnClick"); doCommand(new ColumnAddCommand()); - }, [doCommand, logger]); - const handleColumnTypeChange = import_react53.default.useCallback( + }, [doCommand]); + const handleColumnTypeChange = import_react52.default.useCallback( (columnId, type) => { - logger("handleColumnTypeChange", { + import_js_logger13.default.trace("handleColumnTypeChange", { columnId, type }); doCommand(new ColumnTypeUpdateCommand(columnId, type)); }, - [doCommand, logger] + [doCommand] ); - const handleColumnChange = import_react53.default.useCallback( + const handleColumnChange = import_react52.default.useCallback( (columnId, data, options) => { - logger("handleColumnChange", { + import_js_logger13.default.trace("handleColumnChange", { columnId, data, options }); doCommand(new ColumnUpdateCommand(columnId, data, options)); }, - [doCommand, logger] + [doCommand] ); - const handleColumnDeleteClick = import_react53.default.useCallback( + const handleColumnDeleteClick = import_react52.default.useCallback( (columnId) => { - logger("handleColumnDeleteClick", { + import_js_logger13.default.trace("handleColumnDeleteClick", { columnId }); doCommand(new ColumnDeleteCommand({ id: columnId })); }, - [doCommand, logger] + [doCommand] ); - const handleColumnReorder = import_react53.default.useCallback( + const handleColumnReorder = import_react52.default.useCallback( (dragId, targetId) => { - logger("handleColumnReorder", { + import_js_logger13.default.trace("handleColumnReorder", { dragId, targetId }); doCommand(new ColumnReorderCommand(dragId, targetId)); }, - [doCommand, logger] + [doCommand] ); return { onColumnAddClick: handleNewColumnClick, @@ -66825,11 +68456,13 @@ var RowAddCommand = class extends loom_state_command_default { return createCellForType(id2, type); }); this.addedRow = createRow(rows.length, { cells }); - const nextState = __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + const nextState = { + ...prevState, + model: { + ...prevState.model, rows: [...rows, this.addedRow] - }) - }); + } + }; this.finishExecute(prevState, nextState); return nextState; } @@ -66858,24 +68491,27 @@ var RowDeleteCommand = class extends loom_state_command_default { let newRows = rows.filter((row) => row.id !== id2); newRows = newRows.map((row) => { if (row.index > rows.indexOf(rowToDelete)) { - return __spreadProps(__spreadValues({}, row), { + return { + ...row, index: row.index - 1 - }); + }; } return row; }); - const nextState = __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + const nextState = { + ...prevState, + model: { + ...prevState.model, rows: newRows - }) - }); + } + }; this.finishExecute(prevState, nextState); return nextState; } }; // src/react/loom-app/app/hooks/use-row.ts -var import_react54 = __toESM(require_react()); +var import_react53 = __toESM(require_react()); // src/shared/loom-state/commands/row-insert-command.ts var RowInsertCommand = class extends loom_state_command_default { @@ -66899,18 +68535,23 @@ var RowInsertCommand = class extends loom_state_command_default { ...rows.slice(0, insertIndex), createdRow, ...rows.slice(insertIndex) - ].map((row, i2) => __spreadProps(__spreadValues({}, row), { index: i2 })); + //Set the current index of all the values to their current positions + //This will allow us to retain the order of sorted rows + ].map((row, i2) => ({ ...row, index: i2 })); const updatedColumns = columns.map((column) => { - return __spreadProps(__spreadValues({}, column), { + return { + ...column, sortDir: "default" /* NONE */ - }); + }; }); - const nextState = __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + const nextState = { + ...prevState, + model: { + ...prevState.model, columns: updatedColumns, rows: updatedRows - }) - }); + } + }; this.finishExecute(prevState, nextState); return nextState; } @@ -66932,74 +68573,78 @@ var RowReorderCommand = class extends loom_state_command_default { newRows.splice(dragIndex, 1); newRows.splice(targetIndex, 0, draggedEl); newRows = newRows.map((row, i2) => { - return __spreadProps(__spreadValues({}, row), { + return { + ...row, index: i2 - }); + }; }); const nextColumns = columns.map((column) => { - return __spreadProps(__spreadValues({}, column), { + return { + ...column, sortDir: "default" /* NONE */ - }); + }; }); - const nextState = __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + const nextState = { + ...prevState, + model: { + ...prevState.model, rows: newRows, columns: nextColumns - }) - }); + } + }; this.finishExecute(prevState, nextState); return nextState; } }; // src/react/loom-app/app/hooks/use-row.ts +var import_js_logger14 = __toESM(require_logger()); var useRow = () => { - const logger = useLogger(); const { doCommand, loomState } = useLoomState(); - const handleRowDeleteClick = import_react54.default.useCallback( + const handleRowDeleteClick = import_react53.default.useCallback( (rowId) => { - logger("handleRowDeleteClick", { + import_js_logger14.default.trace("handleRowDeleteClick", { rowId }); doCommand(new RowDeleteCommand({ id: rowId })); }, - [doCommand, logger] + [doCommand] ); - const handleNewRowClick = import_react54.default.useCallback(() => { - logger("handleNewRowClick"); + const handleNewRowClick = import_react53.default.useCallback(() => { + import_js_logger14.default.trace("handleNewRowClick"); doCommand(new RowAddCommand()); - }, [doCommand, logger]); - const handleRowInsertAboveClick = import_react54.default.useCallback( + }, [doCommand]); + const handleRowInsertAboveClick = import_react53.default.useCallback( (rowId) => { - logger("handleRowInsertAboveClick", { + import_js_logger14.default.trace("handleRowInsertAboveClick", { rowId }); if (confirmSortOrderChange(loomState)) { doCommand(new RowInsertCommand(rowId, "above")); } }, - [doCommand, logger, loomState] + [doCommand, loomState] ); - const handleRowInsertBelowClick = import_react54.default.useCallback( + const handleRowInsertBelowClick = import_react53.default.useCallback( (rowId) => { - logger("handleRowInsertBelowClick", { + import_js_logger14.default.trace("handleRowInsertBelowClick", { rowId }); if (confirmSortOrderChange(loomState)) { doCommand(new RowInsertCommand(rowId, "below")); } }, - [doCommand, logger, loomState] + [doCommand, loomState] ); - const handleRowReorder = import_react54.default.useCallback( + const handleRowReorder = import_react53.default.useCallback( (dragId, targetId) => { - logger("handleRowReorder", { + import_js_logger14.default.trace("handleRowReorder", { dragId, targetId }); doCommand(new RowReorderCommand(dragId, targetId)); }, - [doCommand, logger] + [doCommand] ); return { onRowAddClick: handleNewRowClick, @@ -67032,44 +68677,47 @@ var CellBodyUpdateCommand = class extends loom_state_command_default { if (cell.id === this.id) { let newCell = this.data; if (this.isPartial) - newCell = __spreadValues(__spreadValues({}, cell), this.data); + newCell = { ...cell, ...this.data }; return newCell; } return cell; }); if (row2.id === targetRowId) { - return __spreadProps(__spreadValues({}, row2), { + return { + ...row2, lastEditedDateTime: getCurrentDateTime(), cells: nextCells - }); + }; } return row2; }); - const nextState = __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + const nextState = { + ...prevState, + model: { + ...prevState.model, rows: nextRows - }) - }); + } + }; this.finishExecute(prevState, nextState); return nextState; } }; // src/react/loom-app/app/hooks/use-cell/index.ts -var import_react55 = __toESM(require_react()); +var import_react54 = __toESM(require_react()); +var import_js_logger15 = __toESM(require_logger()); var useCell = () => { - const logger = useLogger(); const { doCommand } = useLoomState(); - const handleCellChange = import_react55.default.useCallback( + const handleCellChange = import_react54.default.useCallback( (id2, value, isPartial = true) => { - logger("handleCellChange", { + import_js_logger15.default.trace("handleCellChange", { id: id2, value, isPartial }); doCommand(new CellBodyUpdateCommand(id2, value, isPartial)); }, - [doCommand, logger] + [doCommand] ); return { onCellChange: handleCellChange @@ -67093,9 +68741,10 @@ var TagDeleteCommand = class extends loom_state_command_default { const nextTags = column.tags.filter( (tag2) => tag2.id !== this.tagId ); - return __spreadProps(__spreadValues({}, column), { + return { + ...column, tags: nextTags - }); + }; } return column; }); @@ -67119,32 +68768,37 @@ var TagDeleteCommand = class extends loom_state_command_default { if (type === "tag" /* TAG */) { const { tagId } = cell; if (tagId === this.tagId) { - return __spreadProps(__spreadValues({}, cell), { + return { + ...cell, tagId: null - }); + }; } } else if (type === "multi-tag" /* MULTI_TAG */) { const { tagIds } = cell; if (tagIds.includes(this.tagId)) { - return __spreadProps(__spreadValues({}, cell), { + return { + ...cell, tagIds: tagIds.filter( (tagId) => tagId !== this.tagId ) - }); + }; } } return cell; }); - return __spreadProps(__spreadValues({}, row), { + return { + ...row, cells: nextCells - }); + }; }); - const nextState = __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + const nextState = { + ...prevState, + model: { + ...prevState.model, columns: nextColumns, rows: nextRows - }) - }); + } + }; this.finishExecute(prevState, nextState); return nextState; } @@ -67168,20 +68822,22 @@ var TagUpdateCommand = class extends loom_state_command_default { if (tag.id === this.tagId) { let newTag = this.data; if (this.isPartial) - newTag = __spreadValues(__spreadValues({}, tag), this.data); + newTag = { ...tag, ...this.data }; return newTag; } return tag; }); - return __spreadProps(__spreadValues({}, column), { tags: nextTags }); + return { ...column, tags: nextTags }; } return column; }); - const nextState = __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + const nextState = { + ...prevState, + model: { + ...prevState.model, columns: nextColumns - }) - }); + } + }; this.finishExecute(prevState, nextState); return nextState; } @@ -67209,9 +68865,10 @@ var TagAddCommand = class extends loom_state_command_default { }); const nextColumns = columns.map((column) => { if (column.id === this.columnId) { - return __spreadProps(__spreadValues({}, column), { + return { + ...column, tags: [...column.tags, newTag] - }); + }; } return column; }); @@ -67228,14 +68885,16 @@ var TagAddCommand = class extends loom_state_command_default { }); const { type } = column; if (type === "tag" /* TAG */) { - return __spreadProps(__spreadValues({}, cell), { + return { + ...cell, tagId: newTag.id - }); + }; } else if (type === "multi-tag" /* MULTI_TAG */) { const { tagIds } = cell; - return __spreadProps(__spreadValues({}, cell), { + return { + ...cell, tagIds: [...tagIds, newTag.id] - }); + }; } else { throw new Error("Cell type is not a tag or multi tag"); } @@ -67243,19 +68902,22 @@ var TagAddCommand = class extends loom_state_command_default { return cell; }); if (row2.id === targetRowId) { - return __spreadProps(__spreadValues({}, row2), { + return { + ...row2, lastEditedDateTime: getCurrentDateTime(), cells: nextCells - }); + }; } return row2; }); - const nextState = __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + const nextState = { + ...prevState, + model: { + ...prevState.model, columns: nextColumns, rows: nextRows - }) - }); + } + }; this.finishExecute(prevState, nextState); return nextState; } @@ -67289,17 +68951,19 @@ var TagCellRemoveCommand = class extends loom_state_command_default { }); const { type } = column; if (type === "tag" /* TAG */) { - return __spreadProps(__spreadValues({}, cell), { + return { + ...cell, tagId: null - }); + }; } else if (type === "multi-tag" /* MULTI_TAG */) { const { tagIds } = cell; const nextTagIds = tagIds.filter( (id3) => id3 !== this.tagId ); - return __spreadProps(__spreadValues({}, cell), { + return { + ...cell, tagIds: nextTagIds - }); + }; } else { throw new Error("Cell type is not a tag or multi tag"); } @@ -67307,18 +68971,21 @@ var TagCellRemoveCommand = class extends loom_state_command_default { return cell; }); if (row2.id === targetRowId) { - return __spreadProps(__spreadValues({}, row2), { + return { + ...row2, lastEditedDateTime: getCurrentDateTime(), cells: nextCells - }); + }; } return row2; }); - const nextState = __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + const nextState = { + ...prevState, + model: { + ...prevState.model, rows: nextRows - }) - }); + } + }; this.finishExecute(prevState, nextState); return nextState; } @@ -67352,14 +69019,16 @@ var TagCellAddCommand = class extends loom_state_command_default { }); const { type } = column; if (type === "tag" /* TAG */) { - return __spreadProps(__spreadValues({}, cell), { + return { + ...cell, tagId: this.tagId - }); + }; } else if (type === "multi-tag" /* MULTI_TAG */) { const { tagIds } = cell; - return __spreadProps(__spreadValues({}, cell), { + return { + ...cell, tagIds: [...tagIds, this.tagId] - }); + }; } else { throw new Error("Cell type is not a tag or multi tag"); } @@ -67367,18 +69036,21 @@ var TagCellAddCommand = class extends loom_state_command_default { return cell; }); if (row2.id === targetRowId) { - return __spreadProps(__spreadValues({}, row2), { + return { + ...row2, lastEditedDateTime: getCurrentDateTime(), cells: nextCells - }); + }; } return row2; }); - const newState = __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + const newState = { + ...prevState, + model: { + ...prevState.model, rows: nextRows - }) - }); + } + }; this.finishExecute(prevState, newState); return newState; } @@ -67416,9 +69088,10 @@ var TagCellMultipleRemoveCommand = class extends loom_state_command_default { const updatedTagIds = tagIds.filter( (id3) => !this.tagIds.includes(id3) ); - return __spreadProps(__spreadValues({}, cell), { + return { + ...cell, tagIds: updatedTagIds - }); + }; } else { throw new Error("Cell type is not multi tag."); } @@ -67426,31 +69099,34 @@ var TagCellMultipleRemoveCommand = class extends loom_state_command_default { return cell; }); if (row2.id === targetRowId) { - return __spreadProps(__spreadValues({}, row2), { + return { + ...row2, lastEditedDateTime: getCurrentDateTime(), cells: nextCells - }); + }; } return row2; }); - const newState = __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + const newState = { + ...prevState, + model: { + ...prevState.model, rows: nextRows - }) - }); + } + }; this.finishExecute(prevState, newState); return newState; } }; // src/react/loom-app/app/hooks/use-tag/index.ts -var import_react56 = __toESM(require_react()); +var import_react55 = __toESM(require_react()); +var import_js_logger16 = __toESM(require_logger()); var useTag = () => { const { doCommand } = useLoomState(); - const logger = useLogger(); - const handleTagAdd = import_react56.default.useCallback( + const handleTagAdd = import_react55.default.useCallback( (cellId, columnId, markdown, color) => { - logger("handleTagAdd", { + import_js_logger16.default.trace("handleTagAdd", { cellId, columnId, markdown, @@ -67458,58 +69134,58 @@ var useTag = () => { }); doCommand(new TagAddCommand(cellId, columnId, markdown, color)); }, - [doCommand, logger] + [doCommand] ); - const handleTagCellAdd = import_react56.default.useCallback( + const handleTagCellAdd = import_react55.default.useCallback( (cellId, tagId) => { - logger("handleTagCellAdd", { + import_js_logger16.default.trace("handleTagCellAdd", { cellId, tagId }); doCommand(new TagCellAddCommand(cellId, tagId)); }, - [doCommand, logger] + [doCommand] ); - const handleTagCellRemove = import_react56.default.useCallback( + const handleTagCellRemove = import_react55.default.useCallback( (cellId, tagId) => { - logger("handleTagCellRemove", { + import_js_logger16.default.trace("handleTagCellRemove", { cellId, tagId }); doCommand(new TagCellRemoveCommand(cellId, tagId)); }, - [doCommand, logger] + [doCommand] ); - const handleTagChange = import_react56.default.useCallback( + const handleTagChange = import_react55.default.useCallback( (columnId, tagId, data, isPartial = true) => { - logger("handleTagChange", { + import_js_logger16.default.trace("handleTagChange", { columnId, tagId, data }); doCommand(new TagUpdateCommand(columnId, tagId, data, isPartial)); }, - [doCommand, logger] + [doCommand] ); - const handleTagCellMultipleRemove = import_react56.default.useCallback( + const handleTagCellMultipleRemove = import_react55.default.useCallback( (cellId, tagIds) => { - logger("handleTagCellMultipleRemove", { + import_js_logger16.default.trace("handleTagCellMultipleRemove", { cellId, tagIds }); doCommand(new TagCellMultipleRemoveCommand(cellId, tagIds)); }, - [doCommand, logger] + [doCommand] ); - const handleTagDeleteClick = import_react56.default.useCallback( + const handleTagDeleteClick = import_react55.default.useCallback( (columnId, tagId) => { - logger("handleTagDeleteClick", { + import_js_logger16.default.trace("handleTagDeleteClick", { columnId, tagId }); doCommand(new TagDeleteCommand(columnId, tagId)); }, - [doCommand, logger] + [doCommand] ); return { onTagCellAdd: handleTagCellAdd, @@ -67522,7 +69198,7 @@ var useTag = () => { }; // src/react/loom-app/app/hooks/use-export-events.ts -var import_react57 = __toESM(require_react()); +var import_react56 = __toESM(require_react()); // src/shared/event/utils.ts var isEventForThisApp = (appId, allowOutsideEvents = false) => { @@ -67554,7 +69230,7 @@ var useExportEvents = (state) => { (state2) => state2.global.settings ); const filePath = loomFile.path; - import_react57.default.useEffect(() => { + import_react56.default.useEffect(() => { function handleDownloadCSV() { if (isEventForThisApp(reactAppId)) { setTimeout(() => { @@ -67601,11 +69277,11 @@ var useExportEvents = (state) => { }; // src/react/loom-app/app/hooks/use-row-events.ts -var import_react58 = __toESM(require_react()); +var import_react57 = __toESM(require_react()); var useRowEvents = () => { const { reactAppId, app } = useAppMount(); const { doCommand } = useLoomState(); - import_react58.default.useEffect(() => { + import_react57.default.useEffect(() => { function handleRowAddEvent() { if (isEventForThisApp(reactAppId)) doCommand(new RowAddCommand()); @@ -67624,21 +69300,21 @@ var useRowEvents = () => { }; // src/react/loom-app/app/hooks/use-column-events.ts -var import_react59 = __toESM(require_react()); +var import_react58 = __toESM(require_react()); +var import_js_logger17 = __toESM(require_logger()); var useColumnEvents = () => { const { reactAppId, app } = useAppMount(); const { doCommand } = useLoomState(); - const logger = useLogger(); - import_react59.default.useEffect(() => { + import_react58.default.useEffect(() => { function handleColumnAddEvent() { if (isEventForThisApp(reactAppId)) { - logger("handleColumnAddEvent"); + import_js_logger17.default.trace("handleColumnAddEvent"); doCommand(new ColumnAddCommand()); } } function handleColumnDeleteEvent() { if (isEventForThisApp(reactAppId)) { - logger("handleColumnDeleteEvent"); + import_js_logger17.default.trace("handleColumnDeleteEvent"); doCommand(new ColumnDeleteCommand({ last: true })); } } @@ -67651,7 +69327,7 @@ var useColumnEvents = () => { handleColumnDeleteEvent ); }; - }, [doCommand, logger, reactAppId, app]); + }, [doCommand, reactAppId, app]); }; // src/shared/loom-state/commands/table-settings-update-command.ts @@ -67663,34 +69339,37 @@ var TableSettingsUpdateCommand = class extends loom_state_command_default { } execute(prevState) { const { settings } = prevState.model; - const nextState = __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { - settings: __spreadProps(__spreadValues({}, settings), { + const nextState = { + ...prevState, + model: { + ...prevState.model, + settings: { + ...settings, [this.key]: this.value - }) - }) - }); + } + } + }; this.finishExecute(prevState, nextState); return nextState; } }; // src/react/loom-app/app/hooks/use-table-settings.ts -var import_react60 = __toESM(require_react()); +var import_react59 = __toESM(require_react()); +var import_js_logger18 = __toESM(require_logger()); var useTableSettings = () => { - const logger = useLogger(); const { doCommand } = useLoomState(); - const handleFrozenColumnsChange = import_react60.default.useCallback( + const handleFrozenColumnsChange = import_react59.default.useCallback( (numColumns) => { - logger("handleFrozenColumnsChange", { numColumns }); + import_js_logger18.default.trace("handleFrozenColumnsChange", { numColumns }); doCommand( new TableSettingsUpdateCommand("numFrozenColumns", numColumns) ); }, - [doCommand, logger] + [doCommand] ); function handleCalculationRowToggle(value) { - logger("handleCalculationRowToggle"); + import_js_logger18.default.trace("handleCalculationRowToggle"); doCommand(new TableSettingsUpdateCommand("showCalculationRow", value)); } return { @@ -67836,13 +69515,13 @@ var moveFocusDown = (focusableEls, numOptionBarFocusableEls, numBottomBarFocusab }; // src/react/loom-app/app/hooks/use-focus/index.tsx +var import_js_logger19 = __toESM(require_logger()); function useFocus() { - const logger = useLogger(); const { reactAppId } = useAppMount(); const { loomState } = useLoomState(); const { topMenu, onClearMenuTriggerFocus } = useMenuOperations(); function handleKeyDown(e) { - logger("useFocus handleKeyDown"); + import_js_logger19.default.trace("useFocus handleKeyDown"); if (e.key === "Tab") { onClearMenuTriggerFocus(); e.preventDefault(); @@ -67918,7 +69597,7 @@ function useFocus() { } // src/react/loom-app/app/hooks/use-source/index.ts -var import_react61 = __toESM(require_react()); +var import_react60 = __toESM(require_react()); // src/shared/loom-state/commands/source-add-command.ts var import_lodash12 = __toESM(require_lodash()); @@ -67958,13 +69637,15 @@ var SourceAddCommand = class extends loom_state_command_default { nextColumns = columns2; nextRows = rows2; } - const nextState = __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + const nextState = { + ...prevState, + model: { + ...prevState.model, columns: nextColumns, sources: nextSources, rows: nextRows - }) - }); + } + }; this.finishExecute(prevState, nextState); return nextState; } @@ -68041,14 +69722,16 @@ var SourceDeleteCommand = class extends loom_state_command_default { } return true; }); - const nextState = __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + const nextState = { + ...prevState, + model: { + ...prevState.model, sources: nextSources, rows: nextRows, columns: nextColumns, filters: nextFilters - }) - }); + } + }; this.finishExecute(prevState, nextState); return nextState; } @@ -68074,11 +69757,14 @@ var deserializeFrontmatterForCell = (app, column, path) => { switch (type) { case "text" /* TEXT */: { if (typeof frontmatterValue !== "string") - throw new Error( - "Failed to load content for CellType.TEXT. Frontmatter value is not a string" - ); + return { + newCell: createTextCell(id2, { + hasValidFrontmatter: false + }) + }; const newCell = createTextCell(id2, { - content: frontmatterValue + content: frontmatterValue, + hasValidFrontmatter: true }); return { newCell @@ -68086,9 +69772,11 @@ var deserializeFrontmatterForCell = (app, column, path) => { } case "embed" /* EMBED */: { if (typeof frontmatterValue !== "string") - throw new Error( - "Failed to load content for CellType.EMBED. Frontmatter value is not a string" - ); + return { + newCell: createEmbedCell(id2, { + hasValidFrontmatter: false + }) + }; const isExternal = isExternalLink(frontmatterValue); let pathOrUrl = ""; let pathAlias = null; @@ -68104,7 +69792,8 @@ var deserializeFrontmatterForCell = (app, column, path) => { const newCell = createEmbedCell(id2, { isExternal, pathOrUrl, - alias: pathAlias + alias: pathAlias, + hasValidFrontmatter: true }); return { newCell @@ -68112,13 +69801,16 @@ var deserializeFrontmatterForCell = (app, column, path) => { } case "file" /* FILE */: { if (typeof frontmatterValue !== "string") - throw new Error( - "Failed to load content for CellType.FILE. Frontmatter value is not a string" - ); + return { + newCell: createFileCell(id2, { + hasValidFrontmatter: false + }) + }; const { path: path2, alias } = extractWikiLinkComponents(frontmatterValue); const newCell = createFileCell(id2, { path: path2 != null ? path2 : "", - alias: alias != null ? alias : "" + alias: alias != null ? alias : "", + hasValidFrontmatter: true }); return { newCell @@ -68126,11 +69818,14 @@ var deserializeFrontmatterForCell = (app, column, path) => { } case "number" /* NUMBER */: { if (typeof frontmatterValue !== "number") - throw new Error( - "Failed to load content for CellType.NUMBER. Frontmatter value is not a number" - ); + return { + newCell: createNumberCell(id2, { + hasValidFrontmatter: false + }) + }; const newCell = createNumberCell(id2, { - value: frontmatterValue + value: frontmatterValue, + hasValidFrontmatter: true }); return { newCell @@ -68138,28 +69833,34 @@ var deserializeFrontmatterForCell = (app, column, path) => { } case "checkbox" /* CHECKBOX */: { if (typeof frontmatterValue !== "boolean") - throw new Error( - "Failed to load content for CellType.CHECKBOX. Frontmatter value is not a boolean" - ); + return { + newCell: createCheckboxCell(id2, { + hasValidFrontmatter: true + }) + }; const newCell = createCheckboxCell(id2, { - value: frontmatterValue + value: frontmatterValue, + hasValidFrontmatter: true }); return { newCell }; } case "date" /* DATE */: { - if (typeof frontmatterValue !== "string") - throw new Error( - "Failed to load content for CellType.DATE. Frontmatter value is not a string" - ); + if (typeof frontmatterValue !== "string" || parseDateTime(frontmatterValue) === null) + return { + newCell: createDateCell(id2, { + hasValidFrontmatter: false + }) + }; let dateString = frontmatterValue; const DATE_WITHOUT_TIME_REGEX = /^\d{4}-\d{2}-\d{2}$/; if (dateString.match(DATE_WITHOUT_TIME_REGEX)) { dateString += "T00:00:00"; } const newCell = createDateCell(id2, { - dateTime: new Date(dateString).toISOString() + dateTime: new Date(dateString).toISOString(), + hasValidFrontmatter: true }); const includeTime = assignedType === "datetime" /* DATETIME */; return { @@ -68169,9 +69870,11 @@ var deserializeFrontmatterForCell = (app, column, path) => { } case "tag" /* TAG */: { if (typeof frontmatterValue !== "string") - throw new Error( - "Failed to load content for CellType.TAG. Frontmatter value is not a string" - ); + return { + newCell: createTagCell(id2, { + hasValidFrontmatter: false + }) + }; let newTag = null; let cellTagId = null; if (frontmatterValue !== "") { @@ -68187,7 +69890,8 @@ var deserializeFrontmatterForCell = (app, column, path) => { } } const newCell = createTagCell(id2, { - tagId: cellTagId + tagId: cellTagId, + hasValidFrontmatter: true }); const nextTags = [...column.tags, ...newTag ? [newTag] : []]; return { @@ -68196,10 +69900,13 @@ var deserializeFrontmatterForCell = (app, column, path) => { }; } case "multi-tag" /* MULTI_TAG */: { - if (typeof frontmatterValue !== "object") - throw new Error( - "Failed to load content for CellType.MULTI_TAG. Frontmatter value is not an object" - ); + if (typeof frontmatterValue !== "object") { + return { + newCell: createMultiTagCell(id2, { + hasValidFrontmatter: false + }) + }; + } const newTags = []; const cellTagIds = []; frontmatterValue.forEach((tagContent) => { @@ -68217,7 +69924,8 @@ var deserializeFrontmatterForCell = (app, column, path) => { } }); const newCell = createMultiTagCell(id2, { - tagIds: cellTagIds + tagIds: cellTagIds, + hasValidFrontmatter: true }); const nextTags = [...column.tags, ...newTags]; return { @@ -68421,36 +70129,39 @@ var SourceUpdateCommand = class extends loom_state_command_default { if (source.id === this.id) { let newSource = this.data; if (this.isPartial) - newSource = __spreadValues(__spreadValues({}, source), this.data); + newSource = { ...source, ...this.data }; return newSource; } return source; }); - const nextState = __spreadProps(__spreadValues({}, prevState), { - model: __spreadProps(__spreadValues({}, prevState.model), { + const nextState = { + ...prevState, + model: { + ...prevState.model, sources: nextSources - }) - }); + } + }; this.finishExecute(prevState, nextState); return nextState; } }; // src/react/loom-app/app/hooks/use-source/index.ts +var import_js_logger20 = __toESM(require_logger()); +var HOOK_NAME = "useSource"; var useSource = () => { - const logger = useLogger(); const { app } = useAppMount(); const { doCommand, loomState, setLoomState } = useLoomState(); const { sources, columns } = loomState.model; - const frontmatterKeyHash = import_react61.default.useMemo(() => { - return JSON.stringify(columns.map((column) => column.frontmatterKey)); - }, [columns]); - const updateRowsFromSources = import_react61.default.useCallback( + const frontmatterKeyHash = JSON.stringify(columns.map((column) => column.frontmatterKey)); + const sourcesHash = JSON.stringify(sources); + const updateRowsFromSources = import_react60.default.useCallback( (fromObsidianEvent = true) => { - logger("updateRowsFromSources called"); + import_js_logger20.default.trace(HOOK_NAME, "updateRowsFromSources", "called"); setLoomState((prevState) => { if (fromObsidianEvent) { if (Date.now() - prevState.time < 1e3) { + import_js_logger20.default.trace(HOOK_NAME, "updateRowsFromSource", "event ignored because it was called in the last 1000ms."); return prevState; } } @@ -68467,24 +70178,26 @@ var useSource = () => { ); const nextRows = [...internalRows, ...newRows]; return { - state: __spreadProps(__spreadValues({}, prevState.state), { - model: __spreadProps(__spreadValues({}, prevState.state.model), { + state: { + ...prevState.state, + model: { + ...prevState.state.model, rows: nextRows, columns: nextColumns - }) - }), + } + }, shouldSaveToDisk: false, shouldSaveFrontmatter: true, time: Date.now() }; }); }, - [app, setLoomState, logger] + [app, setLoomState] ); - import_react61.default.useEffect(() => { + import_react60.default.useEffect(() => { updateRowsFromSources(false); - }, [sources, frontmatterKeyHash, updateRowsFromSources]); - import_react61.default.useEffect(() => { + }, [sourcesHash, frontmatterKeyHash, updateRowsFromSources]); + import_react60.default.useEffect(() => { EventManager.getInstance().on("file-create", updateRowsFromSources); EventManager.getInstance().on( "file-frontmatter-change", @@ -68530,15 +70243,15 @@ var useSource = () => { }; }, [updateRowsFromSources, app]); function handleSourceAdd(source) { - logger("handleSourceAdd"); + import_js_logger20.default.trace("handleSourceAdd"); doCommand(new SourceAddCommand(source)); } function handleSourceDelete(id2) { - logger("handleSourceDelete", { id: id2 }); + import_js_logger20.default.trace("handleSourceDelete", { id: id2 }); doCommand(new SourceDeleteCommand(id2)); } function handleSourceUpdate(id2, data) { - logger("handleSourceUpdate", { + import_js_logger20.default.trace("handleSourceUpdate", { id: id2, data }); @@ -68552,13 +70265,13 @@ var useSource = () => { }; // src/react/loom-app/app/hooks/use-app-events/index.tsx -var import_react62 = __toESM(require_react()); +var import_js_logger21 = __toESM(require_logger()); +var import_react61 = __toESM(require_react()); var useAppEvents = () => { const { topMenu, onRequestClose, onClearMenuTriggerFocus } = useMenuOperations(); - const logger = useLogger(); - const handleClick = import_react62.default.useCallback( + const handleClick = import_react61.default.useCallback( (e) => { - logger("App handleClick"); + import_js_logger21.default.trace("App handleClick"); e.stopPropagation(); if (!topMenu) { onClearMenuTriggerFocus(); @@ -68566,7 +70279,7 @@ var useAppEvents = () => { } onRequestClose(topMenu.id, "save-and-close"); }, - [topMenu, logger, onRequestClose, onClearMenuTriggerFocus] + [topMenu, onRequestClose, onClearMenuTriggerFocus] ); return { onClick: handleClick @@ -68574,8 +70287,9 @@ var useAppEvents = () => { }; // src/react/loom-app/app/hooks/use-menu-events.ts -var import_react63 = __toESM(require_react()); +var import_react62 = __toESM(require_react()); var import_lodash15 = __toESM(require_lodash()); +var import_js_logger22 = __toESM(require_logger()); var useMenuEvents = () => { useCloseOnOutsideClick(); useCloseOnObsidianModalOpen(); @@ -68585,9 +70299,8 @@ var useMenuEvents = () => { var useLockTableScroll = () => { const { reactAppId } = useAppMount(); const { topMenu } = useMenuOperations(); - const logger = useLogger(); - const hasLockRef = import_react63.default.useRef(false); - import_react63.default.useEffect(() => { + const hasLockRef = import_react62.default.useRef(false); + import_react62.default.useEffect(() => { const appEl = document.getElementById(reactAppId); if (!appEl) return; @@ -68603,21 +70316,21 @@ var useLockTableScroll = () => { const { parentComponentId } = topMenu; if (!(parentComponentId == null ? void 0 : parentComponentId.includes("cell"))) return; - logger("useLockTableScroll cell menu opened. locking table scroll"); + import_js_logger22.default.debug("useLockTableScroll cell menu opened. locking table scroll"); tableContainerEl.style.overflow = "hidden"; } else { hasLockRef.current = false; - logger( + import_js_logger22.default.debug( "useLockTableScroll cell menu closed. unlocking table scroll" ); tableContainerEl.style.overflow = "auto"; } - }, [topMenu, logger, reactAppId]); + }, [topMenu, reactAppId]); }; var useCloseOnMarkdownViewScroll = () => { const { reactAppId, isMarkdownView } = useAppMount(); const { onCloseAll } = useMenuOperations(); - import_react63.default.useEffect(() => { + import_react62.default.useEffect(() => { var _a2; let pageScrollerEl; const THROTTLE_TIME_MILLIS = 100; @@ -68647,25 +70360,23 @@ var useCloseOnMarkdownViewScroll = () => { var useCloseOnOutsideClick = () => { const { app } = useAppMount(); const { onCloseAll } = useMenuOperations(); - const logger = useLogger(); - import_react63.default.useEffect(() => { + import_react62.default.useEffect(() => { function handleGlobalClick() { - logger("handleGlobalClick"); + import_js_logger22.default.trace("handleGlobalClick"); onCloseAll(); } EventManager.getInstance().on("global-click", handleGlobalClick); return () => EventManager.getInstance().off("global-click", handleGlobalClick); - }, [app, logger, onCloseAll]); + }, [app, onCloseAll]); }; var useCloseOnObsidianModalOpen = () => { - const hasCloseLock = import_react63.default.useRef(false); + const hasCloseLock = import_react62.default.useRef(false); const { topMenu, onCloseAll } = useMenuOperations(); - const logger = useLogger(); - import_react63.default.useEffect(() => { + import_react62.default.useEffect(() => { if (!topMenu) hasCloseLock.current = false; }, [topMenu]); - import_react63.default.useEffect(() => { + import_react62.default.useEffect(() => { function hasOpenModal() { return document.querySelector("body > .modal-container") !== null; } @@ -68675,7 +70386,7 @@ var useCloseOnObsidianModalOpen = () => { for (const entry of entries) { if (entry.target === document.body) { if (hasOpenModal()) { - logger("obsidian modal opened. closing all menus"); + import_js_logger22.default.info("obsidian modal opened. closing all menus"); hasCloseLock.current = true; onCloseAll(); break; @@ -68685,17 +70396,17 @@ var useCloseOnObsidianModalOpen = () => { }); observer.observe(document.body, { childList: true }); return () => observer.disconnect(); - }, [logger, onCloseAll]); + }, [onCloseAll]); }; // src/react/loom-app/app/index.tsx -var import_jsx_runtime145 = __toESM(require_jsx_runtime()); +var import_js_logger23 = __toESM(require_logger()); +var import_jsx_runtime146 = __toESM(require_jsx_runtime()); function App10() { - const logger = useLogger(); const { reactAppId, isMarkdownView } = useAppMount(); const { loomState, resizingColumnId, searchText, onRedo, onUndo } = useLoomState(); - const tableRef = import_react64.default.useRef(null); - const appRef = import_react64.default.useRef(null); + const tableRef = import_react63.default.useRef(null); + const appRef = import_react63.default.useRef(null); useExportEvents(loomState); useRowEvents(); useColumnEvents(); @@ -68739,7 +70450,7 @@ function App10() { (_a2 = tableRef.current) == null ? void 0 : _a2.scrollToIndex(filteredRows.length - 1); } function handleKeyDown(e) { - logger("App handleKeyDown"); + import_js_logger23.default.trace("App handleKeyDown"); e.stopPropagation(); if (isWindowsRedoDown(e) || isMacRedoDown(e)) { e.preventDefault(); @@ -68761,7 +70472,7 @@ function App10() { let className = "dataloom-app"; if (isMarkdownView) className += " dataloom-app--markdown-view"; - return /* @__PURE__ */ (0, import_jsx_runtime145.jsxs)( + return /* @__PURE__ */ (0, import_jsx_runtime146.jsxs)( "div", { ref: appRef, @@ -68771,7 +70482,7 @@ function App10() { onKeyDown: handleKeyDown, onClick, children: [ - /* @__PURE__ */ (0, import_jsx_runtime145.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime146.jsx)( OptionBar, { columns, @@ -68788,7 +70499,7 @@ function App10() { onSourceUpdate } ), - /* @__PURE__ */ (0, import_jsx_runtime145.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime146.jsx)( table_default, { ref: tableRef, @@ -68817,7 +70528,7 @@ function App10() { onRowReorder } ), - /* @__PURE__ */ (0, import_jsx_runtime145.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime146.jsx)( BottomBar, { onRowAddClick, @@ -68833,9 +70544,9 @@ function App10() { } // src/react/shared/error-boundary/index.tsx -var import_react65 = __toESM(require_react()); -var import_jsx_runtime146 = __toESM(require_jsx_runtime()); -var ErrorBoundary = class extends import_react65.default.Component { +var import_react64 = __toESM(require_react()); +var import_jsx_runtime147 = __toESM(require_jsx_runtime()); +var ErrorBoundary = class extends import_react64.default.Component { constructor(props) { super(props); this.state = { hasError: false }; @@ -68853,7 +70564,7 @@ var ErrorBoundary = class extends import_react65.default.Component { if (this.state.hasError) { copyErrorMessage = `Error message: ${this.state.errorMessage} Error info: ${(_a2 = this.state.errorInfo) == null ? void 0 : _a2.componentStack}`; - return /* @__PURE__ */ (0, import_jsx_runtime146.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime147.jsx)( ErrorDisplay, { title: "DataLoom experienced an error", @@ -68870,7 +70581,7 @@ Error info: ${(_a2 = this.state.errorInfo) == null ? void 0 : _a2.componentStack var error_boundary_default = ErrorBoundary; // src/react/loom-app/index.tsx -var import_jsx_runtime147 = __toESM(require_jsx_runtime()); +var import_jsx_runtime148 = __toESM(require_jsx_runtime()); function LoomApp({ app, reactAppId, @@ -68881,7 +70592,7 @@ function LoomApp({ loomState, onSaveState }) { - return /* @__PURE__ */ (0, import_jsx_runtime147.jsx)(error_boundary_default, { children: /* @__PURE__ */ (0, import_jsx_runtime147.jsx)( + return /* @__PURE__ */ (0, import_jsx_runtime148.jsx)(error_boundary_default, { children: /* @__PURE__ */ (0, import_jsx_runtime148.jsx)( AppMountProvider, { app, @@ -68889,12 +70600,12 @@ function LoomApp({ reactAppId, isMarkdownView, loomFile, - children: /* @__PURE__ */ (0, import_jsx_runtime147.jsx)(Provider_default, { store: store2, children: /* @__PURE__ */ (0, import_jsx_runtime147.jsx)( + children: /* @__PURE__ */ (0, import_jsx_runtime148.jsx)(Provider_default, { store: store2, children: /* @__PURE__ */ (0, import_jsx_runtime148.jsx)( LoomStateProvider, { initialState: loomState, onSaveState, - children: /* @__PURE__ */ (0, import_jsx_runtime147.jsx)(DragProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime147.jsx)(MenuProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime147.jsx)(App10, {}) }) }) + children: /* @__PURE__ */ (0, import_jsx_runtime148.jsx)(DragProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime148.jsx)(MenuProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime148.jsx)(App10, {}) }) }) } ) }) } @@ -68902,7 +70613,7 @@ function LoomApp({ } // src/obsidian/embedded/embedded-app-manager.tsx -var import_jsx_runtime148 = __toESM(require_jsx_runtime()); +var import_jsx_runtime149 = __toESM(require_jsx_runtime()); var embeddedApps = []; var loadPreviewModeApps = (app, markdownLeaves, pluginVersion) => { for (let i2 = 0; i2 < markdownLeaves.length; i2++) { @@ -68933,7 +70644,7 @@ var purgeEmbeddedLoomApps = (leaves) => { ) ); }; -var processLinkEl = (app, pluginVersion, leaf, linkEl, mode) => __async(void 0, null, function* () { +var processLinkEl = async (app, pluginVersion, leaf, linkEl, mode) => { var _a2, _b; setLinkSize(linkEl); if (hasLoadedEmbeddedLoom(linkEl)) @@ -68944,7 +70655,7 @@ var processLinkEl = (app, pluginVersion, leaf, linkEl, mode) => __async(void 0, return; resetLinkStyles(linkEl); const containerEl = renderContainerEl(linkEl); - const data = yield app.vault.read(file); + const data = await app.vault.read(file); const appId = createAppId(); const embeddedApp = { id: appId, @@ -68963,12 +70674,12 @@ var processLinkEl = (app, pluginVersion, leaf, linkEl, mode) => __async(void 0, } catch (err) { renderErrorApp(root, err); } -}); +}; var renderApp = (app, reactAppId, leaf, file, root, state) => { const THROTTLE_TIME_MILLIS = 2e3; const throttleHandleSave = import_lodash16.default.throttle(handleSave, THROTTLE_TIME_MILLIS); root.render( - /* @__PURE__ */ (0, import_jsx_runtime148.jsx)( + /* @__PURE__ */ (0, import_jsx_runtime149.jsx)( LoomApp, { app, @@ -68990,16 +70701,22 @@ var renderApp = (app, reactAppId, leaf, file, root, state) => { ); }; var renderErrorApp = (root, error) => { - root.render(/* @__PURE__ */ (0, import_jsx_runtime148.jsx)(ErrorApp, { error, isEmbeddedApp: true })); + root.render(/* @__PURE__ */ (0, import_jsx_runtime149.jsx)(ErrorApp, { error, isEmbeddedApp: true })); }; -var handleSave = (app, file, appId, state, shouldSaveFrontmatter) => __async(void 0, null, function* () { +var handleSave = async (app, file, appId, state, shouldSaveFrontmatter) => { + LastSavedManager.getInstance().setLastSavedFile(file.path); if (shouldSaveFrontmatter) { - yield serializeFrontmatter(app, state); + await serializeFrontmatter(app, state); } const serialized = serializeState(state); - yield app.vault.modify(file, serialized); - EventManager.getInstance().emit("app-refresh", file.path, appId, state); -}); + await app.vault.modify(file, serialized); + EventManager.getInstance().emit( + "app-refresh-by-state", + file.path, + appId, + state + ); +}; var renderContainerEl = (linkEl) => { const containerEl = linkEl.createDiv({ cls: "dataloom-embedded-container" @@ -69030,10 +70747,18 @@ var setLinkSize = (linkEl) => { // src/obsidian/editing-view-plugin.tsx function EditingViewPlugin(app, pluginVersion) { return import_view.ViewPlugin.fromClass( + /** + * This plugin is responsible for rendering the loom app in live preview mode. + * It is instantiated for each open leaf + */ class EditingViewPlugin { + /** + * Called whenever the markdown of the current leaf is updated. + */ update(update) { const markdownLeaves = app.workspace.getLeavesOfType("markdown"); const activeLeaf = markdownLeaves.find( + //@ts-expect-error - private property (leaf) => leaf.view.editor.cm === update.view ); if (!activeLeaf) @@ -69048,24 +70773,24 @@ function EditingViewPlugin(app, pluginVersion) { var import_obsidian20 = require("obsidian"); // src/data/file-operations.ts -var createFolder = (app, folderPath) => __async(void 0, null, function* () { +var createFolder = async (app, folderPath) => { try { - yield app.vault.createFolder(folderPath); + await app.vault.createFolder(folderPath); } catch (err) { const error = err; if (error.message.includes("already exists")) return; throw err; } -}); -var createFile = (app, filePath, data, numExisting = 0) => __async(void 0, null, function* () { +}; +var createFile = async (app, filePath, data, numExisting = 0) => { try { const filePathExtension = splitFileExtension(filePath); if (filePathExtension == null) throw new SyntaxError("File must include an extension"); const numIterations = numExisting > 0 ? " " + numExisting : ""; const filePathWithIteration = filePathExtension[0] + numIterations + filePathExtension[1]; - const file = yield app.vault.create(filePathWithIteration, data); + const file = await app.vault.create(filePathWithIteration, data); return file; } catch (err) { const error = err; @@ -69074,7 +70799,7 @@ var createFile = (app, filePath, data, numExisting = 0) => __async(void 0, null, } throw err; } -}); +}; var splitFileExtension = (filePath) => { if (filePath.match(EXTENSION_REGEX)) { const periodIndex = filePath.lastIndexOf("."); @@ -69087,7 +70812,7 @@ var splitFileExtension = (filePath) => { }; // src/data/loom-file.ts -var createLoomFile = (app, pluginVersion, defaultFrozenColumnCount, folderOptions) => __async(void 0, null, function* () { +var createLoomFile = async (app, pluginVersion, defaultFrozenColumnCount, folderOptions) => { const { contextMenuFolderPath, createAtAttachmentsFolder, @@ -69095,12 +70820,12 @@ var createLoomFile = (app, pluginVersion, defaultFrozenColumnCount, folderOption } = folderOptions; try { const fileName = getFileName2(); - const folderPath = yield getFolderForNewLoomFile(app, { + const folderPath = await getFolderForNewLoomFile(app, { contextMenuFolderPath, createAtAttachmentsFolder, customFolderForNewFiles }); - yield createFolder(app, folderPath); + await createFolder(app, folderPath); const filePath = (0, import_obsidian20.normalizePath)(folderPath + "/" + fileName); const formattedPath = removeLeadingPeriod(filePath); const loomState = createLoomState(1, 1, { @@ -69108,14 +70833,14 @@ var createLoomFile = (app, pluginVersion, defaultFrozenColumnCount, folderOption frozenColumnCount: defaultFrozenColumnCount }); const serializedState = serializeState(loomState); - const file = yield createFile(app, formattedPath, serializedState); + const file = await createFile(app, formattedPath, serializedState); return file; } catch (err) { new import_obsidian20.Notice("Could not create loom file"); throw err; } -}); -var getFolderForNewLoomFile = (app, options) => __async(void 0, null, function* () { +}; +var getFolderForNewLoomFile = async (app, options) => { const { contextMenuFolderPath, createAtAttachmentsFolder, @@ -69126,7 +70851,7 @@ var getFolderForNewLoomFile = (app, options) => __async(void 0, null, function* folderPath = contextMenuFolderPath; } else if (createAtAttachmentsFolder) { const openFile = app.workspace.getActiveFile(); - folderPath = yield app.vault.getAvailablePathForAttachments( + folderPath = await app.vault.getAvailablePathForAttachments( "", "", openFile @@ -69136,7 +70861,7 @@ var getFolderForNewLoomFile = (app, options) => __async(void 0, null, function* } const normalized = (0, import_obsidian20.normalizePath)(folderPath); return normalized; -}); +}; var getFileName2 = () => { return `${DEFAULT_LOOM_NAME}.${LOOM_EXTENSION}`; }; @@ -69149,12 +70874,12 @@ var removeLeadingPeriod = (path) => { // src/data/main-utils.ts var import_obsidian21 = require("obsidian"); -var handleFileRename = (app, file, oldPath, currentAppVersion) => __async(void 0, null, function* () { +var handleFileRename = async (app, file, oldPath, currentAppVersion) => { const loomFiles = getAllVaultLoomFiles(app); let totalLinksUpdated = 0; let numFilesUpdated = 0; for (const loomFile of loomFiles) { - const { updatedState, didUpdate, numLinksUpdated } = yield updateLoomFileState( + const { updatedState, didUpdate, numLinksUpdated } = await updateLoomFileState( app, loomFile, oldPath, @@ -69164,11 +70889,12 @@ var handleFileRename = (app, file, oldPath, currentAppVersion) => __async(void 0 if (didUpdate) { totalLinksUpdated += numLinksUpdated; numFilesUpdated++; - yield file.vault.modify(loomFile, serializeState(updatedState)); + await file.vault.modify(loomFile, serializeState(updatedState)); EventManager.getInstance().emit( - "app-refresh", + "app-refresh-by-state", loomFile.path, -1, + //update all looms that match this path updatedState ); } @@ -69178,10 +70904,10 @@ var handleFileRename = (app, file, oldPath, currentAppVersion) => __async(void 0 `Updated ${totalLinksUpdated} link${totalLinksUpdated > 1 ? "s" : ""} in ${numFilesUpdated} loom file${numFilesUpdated > 1 ? "s" : ""}.` ); } -}); -var updateLoomFileState = (app, loomFile, oldPath, newPath, currentAppVersion) => __async(void 0, null, function* () { +}; +var updateLoomFileState = async (app, loomFile, oldPath, newPath, currentAppVersion) => { let numLinksUpdated = 0; - const data = yield app.vault.read(loomFile); + const data = await app.vault.read(loomFile); const state = deserializeState(data, currentAppVersion); if (isMarkdownFile(oldPath)) { oldPath = stripFileExtension(oldPath); @@ -69234,21 +70960,24 @@ var updateLoomFileState = (app, loomFile, oldPath, newPath, currentAppVersion) = return cell; } }); - return __spreadProps(__spreadValues({}, row), { + return { + ...row, cells: nextCells - }); + }; }); - const nextState = __spreadProps(__spreadValues({}, state), { - model: __spreadProps(__spreadValues({}, state.model), { + const nextState = { + ...state, + model: { + ...state.model, rows: nextRows - }) - }); + } + }; return { updatedState: nextState, didUpdate: JSON.stringify(state) !== JSON.stringify(nextState), numLinksUpdated }; -}); +}; var updateTextCell = (cell, oldPath, newPath) => { const { content } = cell; const { replacedString, replacementCount } = replaceWikiLinks( @@ -69261,9 +70990,10 @@ var updateTextCell = (cell, oldPath, newPath) => { } ); if (replacementCount > 0) { - const nextCell = __spreadProps(__spreadValues({}, cell), { + const nextCell = { + ...cell, content: replacedString - }); + }; return { nextCell, didUpdate: true }; } return { nextCell: cell, didUpdate: false }; @@ -69271,9 +71001,10 @@ var updateTextCell = (cell, oldPath, newPath) => { var updateEmbedCell = (cell, oldPath, newPath) => { const { pathOrUrl } = cell; if (pathOrUrl === oldPath) { - const nextCell = __spreadProps(__spreadValues({}, cell), { + const nextCell = { + ...cell, pathOrUrl: newPath - }); + }; return { nextCell, didUpdate: true }; } return { nextCell: cell, didUpdate: false }; @@ -69281,9 +71012,10 @@ var updateEmbedCell = (cell, oldPath, newPath) => { var updateFileCell = (cell, oldPath, newPath) => { const { path } = cell; if (path === oldPath) { - const nextCell = __spreadProps(__spreadValues({}, cell), { + const nextCell = { + ...cell, path: newPath - }); + }; return { nextCell, didUpdate: true }; } return { nextCell: cell, didUpdate: false }; @@ -69304,8 +71036,9 @@ var getAllVaultLoomFiles = (app) => { }; // src/main.ts +var import_js_logger24 = __toESM(require_logger()); var DEFAULT_SETTINGS = { - shouldDebug: false, + logLevel: LOG_LEVEL_OFF, createAtObsidianAttachmentFolder: false, customFolderForNewFiles: "", removeMarkdownOnExport: true, @@ -69317,49 +71050,65 @@ var DEFAULT_SETTINGS = { defaultFrozenColumnCount: 1, pluginVersion: "" }; +var FILE_NAME = "main.ts"; var DataLoomPlugin = class extends import_obsidian22.Plugin { - onload() { - return __async(this, null, function* () { - yield this.loadSettings(); - this.registerView( - DATA_LOOM_VIEW, - (leaf) => new DataLoomView(leaf, this.manifest.id, this.manifest.version) - ); - this.registerExtensions([LOOM_EXTENSION], DATA_LOOM_VIEW); - this.addRibbonIcon("table", "Create loom", () => __async(this, null, function* () { - yield this.newLoomFile(null); - })); - this.addSettingTab(new DataLoomSettingsTab(this.app, this)); - this.registerEditorExtension( - EditingViewPlugin(this.app, this.manifest.version) - ); - this.setModalDisplay(); - this.registerCommands(); - this.registerEvents(); - this.registerDOMEvents(); - this.app.workspace.onLayoutReady(() => __async(this, null, function* () { - const isDark = hasDarkTheme(); - store.dispatch(setDarkMode(isDark)); - yield this.migrateLoomFiles(); - FrontmatterCache.getInstance().loadProperties(this.app); - EventManager.getInstance().emit("file-frontmatter-change"); - this.registerEvent( - this.app.vault.on("create", (file) => { - if (file instanceof import_obsidian22.TFile) { - EventManager.getInstance().emit("file-create"); - } - }) - ); - })); - if (this.settings.showWelcomeModal) { - new WelcomeModal(this.app).open(); - this.settings.showWelcomeModal = false; - yield this.saveSettings(); + /** + * Called on plugin load. + * This can be when the plugin is enabled or Obsidian is first opened. + */ + async onload() { + await this.loadSettings(); + import_js_logger24.default.useDefaults(); + import_js_logger24.default.setHandler(function(messages) { + const { message, data } = formatMessageForLogger(...messages); + console.log(message); + if (data) { + console.log(data); } - this.settings.pluginVersion = this.manifest.version; - yield this.saveSettings(); - store.dispatch(setPluginVersion(this.manifest.version)); }); + const logLevel = stringToLogLevel(this.settings.logLevel); + import_js_logger24.default.setLevel(logLevel); + this.registerView( + DATA_LOOM_VIEW, + (leaf) => new DataLoomView(leaf, this.manifest.id, this.manifest.version) + ); + this.registerExtensions([LOOM_EXTENSION], DATA_LOOM_VIEW); + this.addRibbonIcon("table", "Create loom", async () => { + await this.newLoomFile(null); + }); + this.addSettingTab(new DataLoomSettingsTab(this.app, this)); + this.registerEditorExtension( + EditingViewPlugin(this.app, this.manifest.version) + ); + this.setModalDisplay(); + this.registerCommands(); + this.registerEvents(); + this.registerDOMEvents(); + this.app.workspace.onLayoutReady(async () => { + import_js_logger24.default.trace(FILE_NAME, "onLayoutReady", "called"); + import_js_logger24.default.debug(FILE_NAME, "onLayoutReady", "workspace layout is ready"); + const isDark = hasDarkTheme(); + store.dispatch(setDarkMode(isDark)); + await this.migrateLoomFiles(); + FrontmatterCache.getInstance().loadProperties(this.app); + EventManager.getInstance().emit("file-frontmatter-change"); + this.registerEvent( + this.app.vault.on("create", (file) => { + if (file instanceof import_obsidian22.TFile) { + import_js_logger24.default.trace(FILE_NAME, "registerEvent", "vault.create event called"); + EventManager.getInstance().emit("file-create"); + } + }) + ); + }); + if (this.settings.showWelcomeModal) { + new WelcomeModal(this.app).open(); + this.settings.showWelcomeModal = false; + await this.saveSettings(); + } + this.settings.pluginVersion = this.manifest.version; + await this.saveSettings(); + store.dispatch(setPluginVersion(this.manifest.version)); } setModalDisplay() { if (this.settings.pluginVersion !== this.manifest.version) { @@ -69370,73 +71119,73 @@ var DataLoomPlugin = class extends import_obsidian22.Plugin { } this.displayModalsOnLoomOpen = false; } - migrateLoomFiles() { - return __async(this, null, function* () { - if (!this.settings.hasMigratedTo800) { - const loomFiles = this.app.vault.getFiles().filter( - (file) => file.extension === "dashboard" || file.extension === "table" - ); - for (let i2 = 0; i2 < loomFiles.length; i2++) { - const file = loomFiles[i2]; - const data = yield this.app.vault.read(file); - const parsedState = JSON.parse(data); - if (!parsedState.model) - return; - const newFilePath = file.path.replace( - `.${file.extension}`, - `.${LOOM_EXTENSION}` - ); - try { - yield this.app.vault.rename(file, newFilePath); - } catch (err) { - new import_obsidian22.Notice( - `Failed renaming ${file.path} to ${newFilePath}` - ); - new import_obsidian22.Notice("Please rename this file manually"); - } - } - this.settings.hasMigratedTo800 = true; - yield this.saveSettings(); - } - }); - } - newLoomFile(contextMenuFolderPath, embedded) { - return __async(this, null, function* () { - const file = yield createLoomFile( - this.app, - this.manifest.version, - this.settings.defaultFrozenColumnCount, - { - contextMenuFolderPath, - createAtAttachmentsFolder: this.settings.createAtObsidianAttachmentFolder, - customFolderForNewFiles: this.settings.customFolderForNewFiles - } + //TODO remove this in future versions + async migrateLoomFiles() { + if (!this.settings.hasMigratedTo800) { + import_js_logger24.default.info(FILE_NAME, "migrateLoomFiles", "migrating to 8.0.0"); + const loomFiles = this.app.vault.getFiles().filter( + (file) => file.extension === "dashboard" || file.extension === "table" ); - if (embedded) - return file.path; - yield this.app.workspace.getLeaf(true).openFile(file); - }); + for (let i2 = 0; i2 < loomFiles.length; i2++) { + const file = loomFiles[i2]; + const data = await this.app.vault.read(file); + const parsedState = JSON.parse(data); + if (!parsedState.model) + return; + const newFilePath = file.path.replace( + `.${file.extension}`, + `.${LOOM_EXTENSION}` + ); + try { + await this.app.vault.rename(file, newFilePath); + } catch (err) { + new import_obsidian22.Notice( + `Failed renaming ${file.path} to ${newFilePath}` + ); + new import_obsidian22.Notice("Please rename this file manually"); + } + } + this.settings.hasMigratedTo800 = true; + await this.saveSettings(); + } + } + async newLoomFile(contextMenuFolderPath, embedded) { + const file = await createLoomFile( + this.app, + this.manifest.version, + this.settings.defaultFrozenColumnCount, + { + contextMenuFolderPath, + createAtAttachmentsFolder: this.settings.createAtObsidianAttachmentFolder, + customFolderForNewFiles: this.settings.customFolderForNewFiles + } + ); + if (embedded) + return file.path; + await this.app.workspace.getLeaf(true).openFile(file); } registerDOMEvents() { this.registerDomEvent(document, "click", () => { - log(this.settings.shouldDebug, "main handleClick"); + import_js_logger24.default.trace(FILE_NAME, "registerDomEvent", "click event called"); EventManager.getInstance().emit("clear-menu-trigger-focus"); EventManager.getInstance().emit("global-click"); }); this.registerDomEvent(document, "keydown", (e) => { - log(this.settings.shouldDebug, "main handleKeyDown"); + import_js_logger24.default.trace(FILE_NAME, "registerDomEvent", "keydown event called"); EventManager.getInstance().emit("global-keydown", e); }); } registerEvents() { this.registerEvent( this.app.workspace.on("css-change", () => { + import_js_logger24.default.trace(FILE_NAME, "registerEvent", "css-change event called"); const isDark = hasDarkTheme(); store.dispatch(setDarkMode(isDark)); }) ); this.registerEvent( this.app.workspace.on("layout-change", () => { + import_js_logger24.default.trace("main.ts", "registerEvent", "layout-change event called"); const leaves = this.app.workspace.getLeavesOfType("markdown"); purgeEmbeddedLoomApps(leaves); setTimeout(() => { @@ -69450,17 +71199,19 @@ var DataLoomPlugin = class extends import_obsidian22.Plugin { ); this.registerEvent( this.app.workspace.on("file-menu", (menu, file) => { + import_js_logger24.default.trace(FILE_NAME, "registerEvent", "file-menu event called"); if (file instanceof import_obsidian22.TFolder) { menu.addItem((item) => { - item.setTitle("New loom").setIcon("document").onClick(() => __async(this, null, function* () { - yield this.newLoomFile(file.path); - })); + item.setTitle("New loom").setIcon("document").onClick(async () => { + await this.newLoomFile(file.path); + }); }); } }) ); this.registerEvent( - this.app.workspace.on("file-open", (file) => __async(this, null, function* () { + this.app.workspace.on("file-open", async (file) => { + import_js_logger24.default.trace(FILE_NAME, "registerEvent", "file-open event called"); if (!file) return; if (!this.displayModalsOnLoomOpen) @@ -69469,7 +71220,7 @@ var DataLoomPlugin = class extends import_obsidian22.Plugin { if (file.extension === LOOM_EXTENSION) { shouldOpen = true; } else { - const data = yield this.app.vault.cachedRead(file); + const data = await this.app.vault.cachedRead(file); const loomEmbedRegex = new RegExp( /!\[\[[^\]]+\.loom(?:\|[0-9]+(?:x[0-9]+)?)?\]\]/ ); @@ -69483,12 +71234,13 @@ var DataLoomPlugin = class extends import_obsidian22.Plugin { new WhatsNewModal(this.app).open(); } } - })) + }) ); this.registerEvent( this.app.vault.on( "rename", - (file, oldPath) => __async(this, null, function* () { + async (file, oldPath) => { + import_js_logger24.default.trace(FILE_NAME, "registerEvent", "rename event called"); if (file instanceof import_obsidian22.TFile) { handleFileRename( this.app, @@ -69497,14 +71249,37 @@ var DataLoomPlugin = class extends import_obsidian22.Plugin { this.manifest.version ); } - }) + } ) ); + this.registerEvent( + this.app.vault.on("modify", async (file) => { + import_js_logger24.default.trace(FILE_NAME, "registerEvent", "vault.modify event called", file); + if (file instanceof import_obsidian22.TFile) { + if (file.extension === LOOM_EXTENSION) { + const lastSavedFile = LastSavedManager.getInstance().getLastSavedFile(); + if (lastSavedFile === file.path) { + const now = Date.now(); + const lastTime = LastSavedManager.getInstance().getLastSavedTime(); + if (now - lastTime < 5e3) { + import_js_logger24.default.debug(FILE_NAME, "registerEvent", "vault.modify event ignored because it file was saved less than 5 seconds ago"); + return; + } + } + EventManager.getInstance().emit("app-refresh-by-file", file, this.manifest.version); + } + } + }) + ); this.registerSourceEvents(); } + /** + * Register events that are needed for updating the rows created by sources + */ registerSourceEvents() { this.registerEvent( this.app.vault.on("rename", (file) => { + import_js_logger24.default.trace(FILE_NAME, "registerEvent", "vault.rename event called"); if (file instanceof import_obsidian22.TFile) { EventManager.getInstance().emit("file-rename"); } else { @@ -69514,6 +71289,7 @@ var DataLoomPlugin = class extends import_obsidian22.Plugin { ); this.registerEvent( this.app.vault.on("delete", (file) => { + import_js_logger24.default.trace(FILE_NAME, "registerEvent", "vault.delete event called"); if (file instanceof import_obsidian22.TFile) { EventManager.getInstance().emit("file-delete"); } else { @@ -69524,7 +71300,8 @@ var DataLoomPlugin = class extends import_obsidian22.Plugin { this.registerEvent( this.app.metadataTypeManager.on( "changed", - (propertyName) => __async(this, null, function* () { + async (propertyName) => { + import_js_logger24.default.trace(FILE_NAME, "registerEvent", "metadataTypeManager.changed event called"); const updatedType = getAssignedPropertyType( this.app, propertyName @@ -69534,15 +71311,16 @@ var DataLoomPlugin = class extends import_obsidian22.Plugin { updatedType ); EventManager.getInstance().emit("property-type-change"); - }) + } ) ); this.registerEvent( this.app.metadataCache.on( "changed", - (file) => __async(this, null, function* () { + async (file) => { if (file instanceof import_obsidian22.TFile) { - yield new Promise( + import_js_logger24.default.trace(FILE_NAME, "registerEvent", "metadataCache.changed event called"); + await new Promise( (resolve) => setTimeout(resolve, 100) ); FrontmatterCache.getInstance().loadProperties(this.app); @@ -69550,7 +71328,7 @@ var DataLoomPlugin = class extends import_obsidian22.Plugin { "file-frontmatter-change" ); } - }) + } ) ); } @@ -69559,16 +71337,16 @@ var DataLoomPlugin = class extends import_obsidian22.Plugin { id: "create", name: "Create loom", hotkeys: [{ modifiers: ["Mod", "Shift"], key: "=" }], - callback: () => __async(this, null, function* () { - yield this.newLoomFile(null); - }) + callback: async () => { + await this.newLoomFile(null); + } }); this.addCommand({ id: "create-and-embed", name: "Create loom and embed it into current file", hotkeys: [{ modifiers: ["Mod", "Shift"], key: "+" }], - editorCallback: (editor) => __async(this, null, function* () { - const filePath = yield this.newLoomFile(null, true); + editorCallback: async (editor) => { + const filePath = await this.newLoomFile(null, true); if (!filePath) return; const useMarkdownLinks = this.app.vault.getConfig( @@ -69580,7 +71358,7 @@ var DataLoomPlugin = class extends import_obsidian22.Plugin { editor.getCursor().line, editor.getCursor().ch + linkText.length ); - }) + } }); this.addCommand({ id: "add-column", @@ -69676,123 +71454,152 @@ var DataLoomPlugin = class extends import_obsidian22.Plugin { } }); } - loadSettings() { - return __async(this, null, function* () { - this.settings = Object.assign( - {}, - DEFAULT_SETTINGS, - yield this.loadData() - ); - store.dispatch(setSettings(__spreadValues({}, this.settings))); - }); + async loadSettings() { + import_js_logger24.default.trace(FILE_NAME, "loadSettings", "called"); + this.settings = Object.assign( + {}, + DEFAULT_SETTINGS, + await this.loadData() + ); + store.dispatch(setSettings({ ...this.settings })); } - saveSettings() { - return __async(this, null, function* () { - yield this.saveData(this.settings); - store.dispatch(setSettings(__spreadValues({}, this.settings))); - }); + async saveSettings() { + import_js_logger24.default.trace(FILE_NAME, "saveSettings", "called"); + await this.saveData(this.settings); + store.dispatch(setSettings({ ...this.settings })); } - onunload() { - return __async(this, null, function* () { - this.app.workspace.detachLeavesOfType(DATA_LOOM_VIEW); - }); + /** + * Called on plugin unload. + * This can be when the plugin is disabled or Obsidian is closed. + */ + async onunload() { + this.app.workspace.detachLeavesOfType(DATA_LOOM_VIEW); } }; -/* @license -Papa Parse -v5.4.1 -https://github.com/mholt/PapaParse -License: MIT +/*! Bundled license information: + +js-logger/src/logger.js: + (*! + * js-logger - http://github.com/jonnyreeves/js-logger + * Jonny Reeves, http://jonnyreeves.co.uk/ + * js-logger may be freely distributed under the MIT license. + *) + +react/cjs/react.development.js: + (** + * @license React + * react.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +scheduler/cjs/scheduler.development.js: + (** + * @license React + * scheduler.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +react-dom/cjs/react-dom.development.js: + (** + * @license React + * react-dom.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + (** + * Checks if an event is supported in the current execution environment. + * + * NOTE: This will not work correctly for non-generic events such as `change`, + * `reset`, `load`, `error`, and `select`. + * + * Borrows from Modernizr. + * + * @param {string} eventNameSuffix Event name, e.g. "click". + * @return {boolean} True if the event is supported. + * @internal + * @license Modernizr 3.0.0pre (Custom Build) | MIT + *) + +lodash/lodash.js: + (** + * @license + * Lodash <https://lodash.com/> + * Copyright OpenJS Foundation and other contributors <https://openjsf.org/> + * Released under MIT license <https://lodash.com/license> + * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE> + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + *) + +use-sync-external-store/cjs/use-sync-external-store-shim.development.js: + (** + * @license React + * use-sync-external-store-shim.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js: + (** + * @license React + * use-sync-external-store-shim/with-selector.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +react-is/cjs/react-is.development.js: + (** @license React v16.13.1 + * react-is.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +react-is/cjs/react-is.development.js: + (** + * @license React + * react-is.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +react/cjs/react-jsx-runtime.development.js: + (** + * @license React + * react-jsx-runtime.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +papaparse/papaparse.min.js: + (* @license + Papa Parse + v5.4.1 + https://github.com/mholt/PapaParse + License: MIT + *) */ -/** - * @license - * Lodash <https://lodash.com/> - * Copyright OpenJS Foundation and other contributors <https://openjsf.org/> - * Released under MIT license <https://lodash.com/license> - * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE> - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ -/** - * @license React - * react-dom.development.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -/** - * @license React - * react-is.development.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -/** - * @license React - * react-jsx-runtime.development.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -/** - * @license React - * react.development.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -/** - * @license React - * scheduler.development.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -/** - * @license React - * use-sync-external-store-shim.development.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -/** - * @license React - * use-sync-external-store-shim/with-selector.development.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -/** - * Checks if an event is supported in the current execution environment. - * - * NOTE: This will not work correctly for non-generic events such as `change`, - * `reset`, `load`, `error`, and `select`. - * - * Borrows from Modernizr. - * - * @param {string} eventNameSuffix Event name, e.g. "click". - * @return {boolean} True if the event is supported. - * @internal - * @license Modernizr 3.0.0pre (Custom Build) | MIT - */ -/** @license React v16.13.1 - * react-is.development.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ diff --git a/.obsidian/plugins/notion-like-tables/manifest.json b/.obsidian/plugins/notion-like-tables/manifest.json index 6e4578d..5df590a 100644 --- a/.obsidian/plugins/notion-like-tables/manifest.json +++ b/.obsidian/plugins/notion-like-tables/manifest.json @@ -9,5 +9,5 @@ "fundingUrl": { "Buymeacoffee": "https://www.buymeacoffee.com/treywallis" }, - "version": "8.15.4" + "version": "8.15.12" } diff --git a/.obsidian/plugins/notion-like-tables/styles.css b/.obsidian/plugins/notion-like-tables/styles.css index 78bd5fd..8a7fea9 100644 --- a/.obsidian/plugins/notion-like-tables/styles.css +++ b/.obsidian/plugins/notion-like-tables/styles.css @@ -584,12 +584,20 @@ svg.dataloom-svg--xl { cursor: pointer; color: var(--text-normal); } +.dataloom-cell--body__container--no-padding { + padding: 0; +} .dataloom-cell--uneditable { cursor: default; } -.dataloom-cell--disabled { - cursor: default; + +/* src/react/loom-app/disabled-cell/styles.css */ +.dataloom-disabled-cell { + width: 100%; + height: 100%; background-color: var(--background-secondary); + cursor: default; + padding: var(--dataloom-cell-spacing-x) var(--dataloom-cell-spacing-y); } /* src/react/loom-app/table/styles.css */ diff --git a/.obsidian/plugins/obsidian-excalidraw-plugin/data.json b/.obsidian/plugins/obsidian-excalidraw-plugin/data.json index 6504d6e..a67cd45 100644 --- a/.obsidian/plugins/obsidian-excalidraw-plugin/data.json +++ b/.obsidian/plugins/obsidian-excalidraw-plugin/data.json @@ -1,5 +1,7 @@ { "folder": "Excalidraw", + "cropFolder": "", + "annotateFolder": "", "embedUseExcalidrawFolder": false, "templateFilePath": "Excalidraw/Template.excalidraw", "scriptFolderPath": "Excalidraw/Scripts", @@ -13,12 +15,15 @@ "drawingFilnameEmbedPostfix": " ", "drawingFilenameDateTime": "YYYY-MM-DD HH.mm.ss", "useExcalidrawExtension": true, + "cropPrefix": "cropped_", + "annotatePrefix": "annotated_", "displaySVGInPreview": true, "previewImageType": "SVGIMG", "allowImageCache": true, "displayExportedImageIfAvailable": false, "previewMatchObsidianTheme": false, "width": "400", + "height": "", "dynamicStyling": "colorful", "isLeftHanded": false, "iframeMatchExcalidrawTheme": true, @@ -27,6 +32,7 @@ "matchThemeTrigger": false, "defaultMode": "normal", "defaultPenMode": "never", + "penModeCrosshairVisible": false, "allowPinchZoom": false, "allowWheelZoom": false, "zoomToFitOnOpen": true, @@ -40,6 +46,8 @@ "hoverPreviewWithoutCTRL": false, "linkOpacity": 1, "openInAdjacentPane": false, + "showSecondOrderLinks": true, + "focusOnFileTab": false, "openInMainWorkspace": true, "showLinkBrackets": true, "allowCtrlClick": true, @@ -85,7 +93,7 @@ "mdCSS": "", "scriptEngineSettings": {}, "defaultTrayMode": true, - "previousRelease": "2.0.4", + "previousRelease": "2.1.0", "showReleaseNotes": true, "showNewVersionNotification": true, "latexBoilerplate": "\\color{blue}", @@ -435,5 +443,298 @@ "openAIAPIToken": "", "openAIDefaultTextModel": "gpt-3.5-turbo-1106", "openAIDefaultVisionModel": "gpt-4-vision-preview", + "openAIDefaultImageGenerationModel": "dall-e-3", + "openAIURL": "https://api.openai.com/v1/chat/completions", + "openAIImageGenerationURL": "https://api.openai.com/v1/images/generations", + "openAIImageEditsURL": "https://api.openai.com/v1/images/edits", + "openAIImageVariationURL": "https://api.openai.com/v1/images/variations", + "modifierKeyConfig": { + "Mac": { + "LocalFileDragAction": { + "defaultAction": "image-import", + "rules": [ + { + "shift": false, + "ctrl_cmd": false, + "alt_opt": false, + "meta_ctrl": false, + "result": "image-import" + }, + { + "shift": true, + "ctrl_cmd": false, + "alt_opt": true, + "meta_ctrl": false, + "result": "link" + }, + { + "shift": true, + "ctrl_cmd": false, + "alt_opt": false, + "meta_ctrl": false, + "result": "image-url" + }, + { + "shift": false, + "ctrl_cmd": false, + "alt_opt": true, + "meta_ctrl": false, + "result": "embeddable" + } + ] + }, + "WebBrowserDragAction": { + "defaultAction": "image-url", + "rules": [ + { + "shift": false, + "ctrl_cmd": false, + "alt_opt": false, + "meta_ctrl": false, + "result": "image-url" + }, + { + "shift": true, + "ctrl_cmd": false, + "alt_opt": true, + "meta_ctrl": false, + "result": "link" + }, + { + "shift": false, + "ctrl_cmd": false, + "alt_opt": true, + "meta_ctrl": false, + "result": "embeddable" + }, + { + "shift": true, + "ctrl_cmd": false, + "alt_opt": false, + "meta_ctrl": false, + "result": "image-import" + } + ] + }, + "InternalDragAction": { + "defaultAction": "link", + "rules": [ + { + "shift": false, + "ctrl_cmd": false, + "alt_opt": false, + "meta_ctrl": false, + "result": "link" + }, + { + "shift": false, + "ctrl_cmd": false, + "alt_opt": false, + "meta_ctrl": true, + "result": "embeddable" + }, + { + "shift": true, + "ctrl_cmd": false, + "alt_opt": false, + "meta_ctrl": false, + "result": "image" + }, + { + "shift": true, + "ctrl_cmd": false, + "alt_opt": false, + "meta_ctrl": true, + "result": "image-fullsize" + } + ] + }, + "LinkClickAction": { + "defaultAction": "new-tab", + "rules": [ + { + "shift": false, + "ctrl_cmd": false, + "alt_opt": false, + "meta_ctrl": false, + "result": "active-pane" + }, + { + "shift": false, + "ctrl_cmd": true, + "alt_opt": false, + "meta_ctrl": false, + "result": "new-tab" + }, + { + "shift": false, + "ctrl_cmd": true, + "alt_opt": true, + "meta_ctrl": false, + "result": "new-pane" + }, + { + "shift": true, + "ctrl_cmd": true, + "alt_opt": true, + "meta_ctrl": false, + "result": "popout-window" + }, + { + "shift": false, + "ctrl_cmd": true, + "alt_opt": false, + "meta_ctrl": true, + "result": "md-properties" + } + ] + } + }, + "Win": { + "LocalFileDragAction": { + "defaultAction": "image-import", + "rules": [ + { + "shift": false, + "ctrl_cmd": false, + "alt_opt": false, + "meta_ctrl": false, + "result": "image-import" + }, + { + "shift": false, + "ctrl_cmd": true, + "alt_opt": false, + "meta_ctrl": false, + "result": "link" + }, + { + "shift": true, + "ctrl_cmd": false, + "alt_opt": false, + "meta_ctrl": false, + "result": "image-url" + }, + { + "shift": true, + "ctrl_cmd": true, + "alt_opt": false, + "meta_ctrl": false, + "result": "embeddable" + } + ] + }, + "WebBrowserDragAction": { + "defaultAction": "image-url", + "rules": [ + { + "shift": false, + "ctrl_cmd": false, + "alt_opt": false, + "meta_ctrl": false, + "result": "image-url" + }, + { + "shift": false, + "ctrl_cmd": true, + "alt_opt": false, + "meta_ctrl": false, + "result": "link" + }, + { + "shift": true, + "ctrl_cmd": true, + "alt_opt": false, + "meta_ctrl": false, + "result": "embeddable" + }, + { + "shift": true, + "ctrl_cmd": false, + "alt_opt": false, + "meta_ctrl": false, + "result": "image-import" + } + ] + }, + "InternalDragAction": { + "defaultAction": "link", + "rules": [ + { + "shift": false, + "ctrl_cmd": false, + "alt_opt": false, + "meta_ctrl": false, + "result": "link" + }, + { + "shift": true, + "ctrl_cmd": true, + "alt_opt": false, + "meta_ctrl": false, + "result": "embeddable" + }, + { + "shift": true, + "ctrl_cmd": false, + "alt_opt": false, + "meta_ctrl": false, + "result": "image" + }, + { + "shift": false, + "ctrl_cmd": true, + "alt_opt": true, + "meta_ctrl": false, + "result": "image-fullsize" + } + ] + }, + "LinkClickAction": { + "defaultAction": "new-tab", + "rules": [ + { + "shift": false, + "ctrl_cmd": false, + "alt_opt": false, + "meta_ctrl": false, + "result": "active-pane" + }, + { + "shift": false, + "ctrl_cmd": true, + "alt_opt": false, + "meta_ctrl": false, + "result": "new-tab" + }, + { + "shift": false, + "ctrl_cmd": true, + "alt_opt": true, + "meta_ctrl": false, + "result": "new-pane" + }, + { + "shift": true, + "ctrl_cmd": true, + "alt_opt": true, + "meta_ctrl": false, + "result": "popout-window" + }, + { + "shift": false, + "ctrl_cmd": true, + "alt_opt": false, + "meta_ctrl": true, + "result": "md-properties" + } + ] + } + } + }, + "slidingPanesSupport": false, + "areaZoomLimit": 1, + "longPressDesktop": 500, + "longPressMobile": 500, "mathjaxSourceURL": "https://cdn.jsdelivr.net/npm/mathjax@3.2.1/es5/tex-svg.js" } \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-excalidraw-plugin/main.js b/.obsidian/plugins/obsidian-excalidraw-plugin/main.js index 0268e16..e0e4ee7 100644 --- a/.obsidian/plugins/obsidian-excalidraw-plugin/main.js +++ b/.obsidian/plugins/obsidian-excalidraw-plugin/main.js @@ -1,26 +1,44 @@ -"use strict";var obsidian_module=require("obsidian");var LZString=function(){var r=String.fromCharCode,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",e={};function t(r,o){if(!e[r]){e[r]={};for(var n=0;n<r.length;n++)e[r][r.charAt(n)]=n}return e[r][o]}var i={compressToBase64:function(r){if(null==r)return"";var n=i._compress(r,6,function(r){return o.charAt(r)});switch(n.length%4){default:case 0:return n;case 1:return n+"===";case 2:return n+"==";case 3:return n+"="}},decompressFromBase64:function(r){return null==r?"":""==r?null:i._decompress(r.length,32,function(n){return t(o,r.charAt(n))})},compressToUTF16:function(o){return null==o?"":i._compress(o,15,function(o){return r(o+32)})+" "},decompressFromUTF16:function(r){return null==r?"":""==r?null:i._decompress(r.length,16384,function(o){return r.charCodeAt(o)-32})},compressToUint8Array:function(r){for(var o=i.compress(r),n=new Uint8Array(2*o.length),e=0,t=o.length;e<t;e++){var s=o.charCodeAt(e);n[2*e]=s>>>8,n[2*e+1]=s%256}return n},decompressFromUint8Array:function(o){if(null==o)return i.decompress(o);for(var n=new Array(o.length/2),e=0,t=n.length;e<t;e++)n[e]=256*o[2*e]+o[2*e+1];var s=[];return n.forEach(function(o){s.push(r(o))}),i.decompress(s.join(""))},compressToEncodedURIComponent:function(r){return null==r?"":i._compress(r,6,function(r){return n.charAt(r)})},decompressFromEncodedURIComponent:function(r){return null==r?"":""==r?null:(r=r.replace(/ /g,"+"),i._decompress(r.length,32,function(o){return t(n,r.charAt(o))}))},compress:function(o){return i._compress(o,16,function(o){return r(o)})},_compress:function(r,o,n){if(null==r)return"";var e,t,i,s={},u={},a="",p="",c="",l=2,f=3,h=2,d=[],m=0,v=0;for(i=0;i<r.length;i+=1)if(a=r.charAt(i),Object.prototype.hasOwnProperty.call(s,a)||(s[a]=f++,u[a]=!0),p=c+a,Object.prototype.hasOwnProperty.call(s,p))c=p;else{if(Object.prototype.hasOwnProperty.call(u,c)){if(c.charCodeAt(0)<256){for(e=0;e<h;e++)m<<=1,v==o-1?(v=0,d.push(n(m)),m=0):v++;for(t=c.charCodeAt(0),e=0;e<8;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}else{for(t=1,e=0;e<h;e++)m=m<<1|t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t=0;for(t=c.charCodeAt(0),e=0;e<16;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[c]}else for(t=s[c],e=0;e<h;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;0==--l&&(l=Math.pow(2,h),h++),s[p]=f++,c=String(a)}if(""!==c){if(Object.prototype.hasOwnProperty.call(u,c)){if(c.charCodeAt(0)<256){for(e=0;e<h;e++)m<<=1,v==o-1?(v=0,d.push(n(m)),m=0):v++;for(t=c.charCodeAt(0),e=0;e<8;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}else{for(t=1,e=0;e<h;e++)m=m<<1|t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t=0;for(t=c.charCodeAt(0),e=0;e<16;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[c]}else for(t=s[c],e=0;e<h;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;0==--l&&(l=Math.pow(2,h),h++)}for(t=2,e=0;e<h;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;for(;;){if(m<<=1,v==o-1){d.push(n(m));break}v++}return d.join("")},decompress:function(r){return null==r?"":""==r?null:i._decompress(r.length,32768,function(o){return r.charCodeAt(o)})},_decompress:function(o,n,e){var t,i,s,u,a,p,c,l=[],f=4,h=4,d=3,m="",v=[],g={val:e(0),position:n,index:1};for(t=0;t<3;t+=1)l[t]=t;for(s=0,a=Math.pow(2,2),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;switch(s){case 0:for(s=0,a=Math.pow(2,8),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;c=r(s);break;case 1:for(s=0,a=Math.pow(2,16),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;c=r(s);break;case 2:return""}for(l[3]=c,i=c,v.push(c);;){if(g.index>o)return"";for(s=0,a=Math.pow(2,d),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;switch(c=s){case 0:for(s=0,a=Math.pow(2,8),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;l[h++]=r(s),c=h-1,f--;break;case 1:for(s=0,a=Math.pow(2,16),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;l[h++]=r(s),c=h-1,f--;break;case 2:return v.join("")}if(0==f&&(f=Math.pow(2,d),d++),l[c])m=l[c];else{if(c!==h)return null;m=i+i.charAt(0)}v.push(m),l[h++]=i+m.charAt(0),i=m,0==--f&&(f=Math.pow(2,d),d++)}}};return i}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module?module.exports=LZString:"undefined"!=typeof angular&&null!=angular&&angular.module("LZString",[]).factory("LZString",function(){return LZString});const EXCALIDRAW_PACKAGES = "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AW5vAODzLP8l1QAFLzQCKm9RZr4uMy3VAqEBgS/eA8dCxJGsVDAD3gKH4sSTM6MabZgBFm4uQZRskS2ubxYsQW1+Ll4uCSwUA3NUJMZiejQCui3+294vIy7gA4bayAGeL+4u6m7+LBQCySxeb+4th/kxbZGC/i5s0ApuMy5eA7Fsvi1xbsgDtwBwAfFuem/bFsZtSS0Bil4vWS6xAhtV4S156bosMW+3AsSR/m7Exlos00EebDACAW1mbA4vaGOUbr4sxS/IAkFvTS4YAe2WwW5/gbouiW33qLJuvi+Bbi5BlS0qb2lvYW+RhU5uLkGTLb/Ea8vBbmAAzm+xAzzApG+gALDDxWzBbkgCWSyqbwVtp5T3Aa4Cvm1GbhltMsL+b7cAlm4ZbX5s/4PUAFoixJLa4jFs9W8NbBAAlm7IANVs9wPeL2bDjSz/gPVssADqbNMvqm4ybFotY4GuA9OT31sGbjJuf4HBAlMs5MZeLyaD5amBLRFuJS8uLSFvNAIeLr4uTS+pbj4tbS0eL2gAEy7JsJUu5Wy4Av4s/yadLBluiWxOIbpsAfJRSZGD6fJs0XZuXi+NLFkBeWxwAr4t6Ww0GWZvHm0wASktpS1abkqDfm3QIsSQvAC6bOhssMIPV/AAUy+jbxht2i8gAK5tui9IAOEsPS4Ubj4v05Px6DVstACKbsxsRSx5br4vUcPubbov3W5ie85sCm4+L/4uKmzWbMlvNAHJbqFtrgOlLDNtky/UA2FuoQKpLeEsOG0wA8CW7i9NL7EDYm5KLuktni8TLdxvx0AQA7cD+S6WUBStTW3LbyotPnXQwhYSxJPAAuNvKi3kAXnr8m2Rg0QivyZJLNRB8y3+2cEAMAEGLIpuKm3VAptgCW85brovc1cbbEotumzVbogDJoLEGjUvkcB5bztvnGIRQXnqpm8qL0pvJm7kQBAAgSDSbeZtv8dNLkNtuixoQPpsgW5FbtMtFm11LNRDbW5KLWpvhm6IA3VsXm4DwQluhS/hbApuLkBHbkos2QKIAwADJm9HQlpuoaAnb/MuZS26LHps424ybdUA+25eLBADaxLEkRl5+mz/gr4tFm0lLBABg+H7bFkDOW5eAbouXgNBL38nIy7qb+nz/lEFLnUs7mxub/4sVWwKbTpv8y9DLUeWBSyVLlVtl258bwtuB25oAuACni1zL8Evz21J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wivoiuj0sIivYivwis/PwY1TfCsnPzhLx3CvNfwY1QQis/CsF+Skith4IUiuDLytySHCs3Cv5Hy4itAitBCyplRwisfCuTEwY1TXCtkisYiuj0sF+REitQiubCuAiu8isgisqYDIiu+xwMiv/CvNfyXCvYiukiuwiuoiv3CvYiu0itsiu8iucitMitgivsitBCxzCvLC18EJVJRiivnCt2BxBCzyitCivOBwsitgivWYU2Cvg2bnNTFyBOkyj0t57CMtq2itvCtjCu2itsis/Cu2isDAK96z0isTYIOivQiv2iv7Cuctr2iuHCv9CuKiu2isGszOivQiulCvqziqtqBitRiuNCs+it2ituiuctrNCuxithis4iuqtol6z+isJitpivNfwl6xBiuj0vfwQW+M9VZYvrwiteiv2it5yC2itfsz2iueisnPz2isQisBis/Py2isPCvhit2Bx+iuxith0vZiswzx2+NA6Z24ISgL6iujsF/CuJJ4hiuKiutiviivOQR15OLVb+ktTyjtbDFAlRRQzhTNfxyCyy/xXjMHyTF7rHdOIzZ5To9isfwFuis/CvFCsciveivciuuis2iuTYIq2ZV5BjNQOHT9iT9kAiUJriKwOaiXrc9U7O1ivTjozoC3jozOpTjoxErRQGRjoDIzzjozdBLjoyV9XjoxZyT2s7WoBigD6rzmhgS8tQZhBotFivXez5RhVONF9MqDGNQUNWViivw7yhFSGithsuISsQisRst7ODSiv8STMxxb4IHYJkFxIQY74JhLycxzqzjISs8xxESvOByISu96wW0sESubCv8SRvCuqySHCuYStUSv7Cv8SSdEwoUs4StmhR4SthsvoStMStkSuqySoSs5iu8SukSu4SsYSstiscSumiusSsMSuiALbCsISt0SukSsPCuiStsisCSsHYIsSsnPxsSuISv0SsiSvwSs1iviSt8itMxyCSvsSuaStYSs4ivSSuaSt2D4/GXN9M/RZ9q11s7WyXi8vNEwq2VuMBWCsVAYzOVjCsl6yl17VbMzOVtEy9is6zyOoFYewnPzRIAAw4YMuKynW7y8pSlCREPmaSshHzlivGSvwisiALaStCStRSuXTyKSuRSuySuA7xSStJnzaSsxLzYSvESuaStcxwkStsSvoSt8St6hQZSs8SuaSu8xy6SuqSsJSt2BzoSs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totorZFe83vfBHvgAAA4Z2fvIj3ov74AAEDIwAAAS+Rj3xd77Ig8dlcD/eh/vo/38f73I95Ee/T/ejHvWn3swLwgMmdgDnveNPvc732f78o98l69tLPvPybv3wAAAYMXb34Z77Q9+H+9W/eFPvTv3137x7989+9PSW3EXqh58972u95Ee8X/er/vB/3zh74AAGUGb/7/J97Be9Ofe1PvgAAQAZAAAp3JhfeRHv1f37x74AAF2GSN78w9/U++AverPvRj3on7yw98Ee+jPfOHvgAAeQZT/vZz3l374AACAGW3r3Eg6E3Ov/f3/vl/34f7wf96c++sPegAfv/3//70797d+9SPe8AfPvX/lN56dnPe8iPfvHvgAAboYeXvWSb8H75O99Ge9hPeQ/vnj3xh71AD97e9ryvbXzg73wAAPMKIj3vgHwID+Ee/PQf3gAKH3ox70Q944e+AABd+UAAAa2kn1++4txPfMnvIT3nJ7y494yduAAA/50AAAU6iI94ne9jPesnvKgPp+V3ID4UB9mA+BVndIAKv7+gD7L6+eu2Vvv3BcER7zY98AADp+hnO8AACRqYAAA0GZz7znO+zCffveRHvc/3zvr1XTbZ++6PfAAAIwxu/eN3vjD3zx71t99Ge8bvfAAA3EY+A+VkHqcj7H7w3O7pACI/e/gv7wAbH78AAER+9GPe2AfHAPzfr3SAEAACHDIAAGmGQAAKcMHL3ihV4AABjteP71CF/eAAS/ej+vzsAQAAMKKWT3uIH4L96eTd0gBAAAIQy4PfWvvhz3vDV1zHkQB95A/eXvsMrp5B3SAEAAANptQ95d++AAALhMAADSOur95I++9/f9ZP+IXkV76M96iB/ePePPvlsnwAAAMM233hb7yE9+UVcSffmHvOwP1ODyAjYwACHA+sEncaV/SAgmlfakfopvAreYH3sXTjsD6Me8dA/FfviQPpFByu99YB+jPf45P7wAQAABG2gAAbuVyZrm/37uD+8ACV+9mfeXvvuD39770ce5n/PV/emBvgAAQATAAAh/LLrP23vgAAWKiOBv8oXgpG5gu/rk9CDf3gA3/3kR72+96ye+AAAIhkAADGDBw9/Pe+AAALRRF05W/fPgfQX32gHzgD9xB+AABYhgmB8bvepHvan3wAAPj/0qb8hR2Ks8cB9GyA5gfG73kF7w/943e/UPfMPveAPjVF7fB6tRdcfflvvgAAe+VAAAvwGUPe1fvpH37kH7yD/5B94oB3Pvuj3q37zK96ke+AAA5BloB8nyfmZ7zsAOD74AAE6lSh78YD9Ge9efeTPviv3+UHwKD7zC/ZJPT1LkP3wR7+y940+8iPfjPvZn3rJ74AAEZNQAAOqm1D3t37/yD8FB+Rq2blXf6lwAAF5eIj38974AAHsGSQH4ID+Ye9yg+vfvXoP5NN5Ih+dgAaA+Env2gPwR7+GD89+98g/zQfuQ3jRD/PubD++CPfo/vgAASv1AAA78qJg/kwfXoP8ob/gp8qG8Zg/Bnv7/3gJ71t95Ce/Bg/ifvoQPwR7yH9+J++AAB0sxzB80fe8QfhIPxQH4AAHdou/7+797oB81tJrQf7L31h74AABpvfl7zx98DB+lg+RHv7P3wAAJ3aRj3wAANGRjn37/76w96t++Jg+vQfJWV8Zd1cu+dgCAAA0TUmB+AABntSKe/Gg/AAAAQwUA/AAAR6bKA+Jnv1P3sIH1b9+xe8gvfAAA28aAAB4hlwe9Ug/AAAWb5+/f3QfjIPlkH6em4uG/OwB2Afrn3wAAOcMnn3wAADoKgAAI2tyAfQAPrb7zt99Ge+mA/lAfXYPxz71uD6t+9rvfSHvsr3x371SD8gADyadAAAyvp4g+6QfLv3hkH8yD/pSegQ/xnvW4Pox74oD8AACAxvyD5d++AAAWDUAAAQKoGD6AB9fg/fwfRj3wCH8W98AABaDFk9+k++AAAyhlje+DPfJPvRj3rwHxw98wB/YA+cAfXEX7RazP+Y/++kA+rPv//3/MH/yD/GU8pe2Z/zVn3jT78JD43++9PfxIfmH3ukbzP+e2U/ffeRHvW4PwAAEb6Rj30SHwp95fB/Ug+MIfWEPt8Hzcp5Mi+CjfAreWIPsQH1k98DB9Kg/SwfVv3wAANQqbv3537y798oe8u/fcQfgAAMQYGQfOAPkMH8I98AABCZlk96VB8iPegQfRn3ox78t991B9ZPf3Qf/IP5kH0zF/Ci8crmsQfwz3woH4I98je+Gg+NPvSoPox71mD8aB+KQ/s0PP6r94AIAAHBjB374798w++sIXkofHn3pAH7o99DB+KQ+cAfgAAWDlW3vlD3jSH+Q943e9offHPvwAPkKH5Q98lU+QAAbIf9kPxyHw/969B+6pXEAfPwPvSH6hD/Qh/0g/XwfE67/VT9SvcgABqQ+5IfMkPzT77095fB+RQ+sxvuezrmPE2D5o+/0PfBHvgYP5nQOi943e+UPfCHvjv3/575Q9/vB8Rg+VPvDj3sT74E96H+8/g/dHvgYPvUHzR967B9Ug/dovZb1on74M98Ee+AABZhh5e9ZPfAAApcYPg/rofEYP5K84AAEhNQAAC9mgYPlQHzQD69++AABAf4c1dUYfHovkP30MH12D+ch+Gg/aofHkPz6L8MxbEB9GPfAAA/MaAABTRXKh+AAAY/Q3e+AAAghlch+AAAAOURe+AAApBkAABmUdQ994h8u/fa1P9alw0HyqD5Be/qg+qQfgAARiixQfTv3xz7xU96le/Q/eYfvgYPkzD7GtZaiCQAB4YfJWrzjdzvebaDZxQ+EofKMP9GHzyD69+8Fg+2g2j337b71294Ce8XQ/Qof04PykH3QD7BzdUxfYJvBuL+CbyZk71B+UPe2g2fMPqzJ8ep6txfMPmjofJ0PwR72dD77B9vQ+Hwf5UPwAAFsMIsPwAALGKDoPoz75w96AB+4w+CYfJMPsmH1gD9wB9nqeKc3zsARAHw6D9NB8Sw/PQfjE352APo99T+/1g+QnvpYP/174I98Ye8QQ/yofgAAeVUEPvVv3lj74AAC8bah785D4oh9UQ/X3vgAAW0sjHvToPm8H85D7ch9ZPfcIfWT3w0HwRD+UB8YA/3YfkYPjSb97F9a3e+xf3gA573mmH+qD8c++YffFfvQAP4OH5499Dh/hw/I4f0cP8WH0mD89B9xw+E4fycP1OH5RD6AB+Zw/s4fucPlyH65D4Lh+CPewIfRcP7gHyXD7Lh98Q/zsnp27ykggLg8afPy4PEGbSuDtYGEPF7VwdvcBBjnkAAER7/b96t+/NQ/wg7rEP2N70Y993e+cPeXfvjn3tyH7rD7ni+Yg/HfveIP3B70AD53B8iPfgRn+P36f77Pjat++AAApjUd++OffJQfgAAcgMrfvaH3+8H8rD5tw90gAsQf9v3ox73qD57+9zg/WHvRj3wAAOz66APwAABXGgAAC009If8zD+378a98AABgGQi9aMe/f/fAAAhgyAveNPviIPuUHyAj6zw+Yg/94fdv3yBH6FD+Ah9vw+p/vIj3g171b98AAB38q296Bh+e/ecAfm97jd7wCHYH1eqvmszrz03l91m39/QB/AA/99CAM3+V80Ql+X1dz4eX3WWT3wAACoMgAADCjUYf5MP0hL8DN431f3aPn6L/6n6hL8LBbn+8PaOkYfaMP0/D3SAEAACX7hpD6Q0/OwBAAATgzUPfDEf4BD+qa4AAFVLQAAGGKB6tll75oTda+8fPf83zV73vza/j99PVsg/fLCbV73jGH9jD93e9i6cRHvtYPo0H0o9/5B9d/foEfHGn52AJbD90e87A/kDkgz33x77w98AABMaQBD7uKtBI/MPvmkPlgH6L96Me8KffgAAv0P0YH/QQ8+B/UPfAAALQzD/fyCPir3pf7wEj/AW9lh3Aofahrpgj8a95UACAABFhl0e/FA/dHv0b3gJH7wR+dgCAABdBhEe+AAA1uX8R+oA+U5vphL9TT++rfPe9vvemznlnxbz8ko96d+8pI+NIfWT3wAAH/aTn34ZH94a/eACaQ/q5vGhH/cO+e99Me9mPenPvlkPoAH4995Yh+MPfAAA2wzDPfUAfbv3zD74GD8Ye/Ww/GHvrf3wAAD1GKcPq374C95Ce9ifffHv0b3wAH0AD+Ne8BI+z4fO73l8H3PN7pABxPfPHv5APjR7yI98AABAGV8940++UPfHPvgAAJ7NFnvbf3wAANOaQAP+5H48j/IB+OI/+jXbMFn5H5w97hR/Rve9IfgAAI7SpHvrD3uP758j4mJeAAAlhkle94oAlHvbyP8+Hxw98AADfcoAAHhDER76RD8AAACRkY942B+SffRnvKKPjh7xT94U+9Off5wf2MPkhH+Uj+L3vasWKfv4H3zZH1RD8ZR/Mo+/Hvnj345H4GD/cfArQ+jHv1yPzUH0sR7GIfVfmVof4qPpUt2Cl8AXhSo/rkfHD38D7zH99j+94o+YUvGIQYEyxU94xh8iPeoAfRP35h70Y95+R/PI+Q/vjD3wAAI0M1H38VH+4+GlR+cPfcUfsqPhGJ6txcz/MOo/O/v3f34CH3i98Re9GPfAAAbEqAAAFNI5R8Lg/uUf6RbukAOzD6Me9/Q+xdOWT3t1H5cj+xR9Jfe8vvgAAFesjHvgAAL7U7fvJCPnAHyE+GlR/Yo+K3vGn38NH39D5DR9Spf0MbHP5ox74AAHdU65H+QD8AABXgYAAEZXLJ73mj9+h/po/krzOaPwF73Wj8FR8ffnS0f1yPnVH2RrcAAB7aoN96jR86HW1Uf2KP71H36j8DR8wI/FwfPIPtoH0Ee7VYtUx33UfXf34VH+aj8ah9AA+NSPGY8B1Hxw96+e+B/edUfmR7u/Rwp6AHR+sPe10ffT3xdHzwdY3e8wfftkfuyPtFHxu97qe9BHvpyX8+5gVH4597XR9KPfAAAEP8xo/gkfEQPjR70o98AACQ/0AD/cq+XQA1UfNyPwF7/Oj9Ye/jA+Xfva6PhT73ct8Ct4so+kYfOL355Hyyj7RR+cPfw0fxr3sx7xu9/t+86o+zSPFaP6r7yI98QB+Qg+oVvsFL+1H+qj7ZR+KfeBdvdrF6dH9cj4fB+EPeYEfG73tFH0Y98AACJRgBD+oe9AA/AAAj7Yu/elHvRj3v3792D6vS+W3PIAADqPkjH2Rj76e/Sw/PHvEyP9f780D9aB+fpfnS3LhALsy1iD8AAD6VhKD6oh/SreYMvelrlO5z/HelUAivexPv0b3ox712U4apvCUWsnv9v3oNHxu95Ch9ZPfQUf/8PwBH8Aj5wB8lkeN3vJ8PwR7xQj4jR+/Q/BUfn6PjMt+5a/IAvWw/I3vtn3uz7/PD49h85lv4TrlZ9gst8idd7ufkZe2YL/j3m974AAGWGcoH6d98TB+flO64fqoPjUH6Qj/3I8RreiyKhKP5h73igAqe/Yw/AAABgku/f1/vuMPwAAIg61D3wAAIvxgAAUwZCHvHD3oz7zxD/Lh95rf42L3p7/RaiH9/2+9W/fAAAXm6AAB8V3Ch8Cg/nYfiL3roHz0D8Kx98Q/u1v9bUBzH0Y97th/efenPvOAPxtb5BffvltdY+zPvVv31yH279/QB8u/e1Pvg8PqiH21j5wwBrI++of9/3qR731j/AoeUX3v/v98P3EH7g98zh9W/ec4fiEPqR7/da6oo+WYXAAAGtGAABSJUAAAK2hID/2+/RZfGk75TCK374AAEQjQAAKAMIj31z74w96v+8bve5PvgAAQ9iaAfAcP1LL6Da/vlvlY/BHvWT3wAAEWpTn3pUH4AAFGDQAAIwaRj32yH4r97zh8Tw/AAAeumAAAOPSye+AAA5Q0AACziZpj7t+91Y+cAf2MP6h7xh9+w+9Kg+rfv/j3iT7xHD7DB+TY+gAfgAAQc9MPveCPowH2K962++yw//HvRj3wAADiWgAAOCiXMf7CPzeq/o9+je+g4/AAAUiqma3wkLIj3rM61k97AB8iPewcflP3lx75w9/Ee8tY/XMf55dxW187AH8h+Tg+3jPOEFj4z3SAG6R+/ffA/vfiPnHHyI98He8lPfAAA20aAABQ/U4e/cfewPvQaPsdHzdD9hM+XX3nYAWIPmiH+dD9Dh+1g/Q4fS0Pu/74TD8fh9XvfJwfAMPzsH51D7oB+AABpBMAABtqn2D8Ee8affsYfzuPxWH11D45M9z2uQwLluP6FHwsD8LteFUPO2LYePuP7xHj4ho/iXXkGbBuPy3H4fD9Ch+UPfCQf3YPr0H1qZ4CefDvmwvvMiP7guEY94Nx8kQ/fvvWT3lb7y5j8AABY/w6Z5Dx/6LUY8fsf38gHzjj8DB9Uffh/vGn3yx74AAFrTGgH1I96t+8gQ+p4fsQPkeH1xj/nB/G4+6AfNePzh79jD+6R+FA+DHvlkPwAAI76gAAf/TAwflD39AH0AD8AACo+iC94fB8gvfgPvI8Pv3765D/7x/po+ptvNbSER70nj98e9nQ+snvNn3gAH8598HM8bbf3gAv2Pn2jyFrb9o90gBI/vUQPiCHwDW/uefWQ/MwfRj3jGHxp96J+9lQ+QXvjn3w0H1k968h/MPe9IfQdHrgH2M97Ce9WA/IXnDMFlb75KD+lB+i/fh8vs5n4z73Y98AABAOju99N++cPe/8f35nkMC8gT44e+oE+Y6PjIbivRpAAEAAD3DNt97OR+dw+UofKgPgAn7vl+4gtYE+46Ph+X+u71lxG/iS/4/+Afn+Ps0Hwzt/HstK0OK/v5D3yT7xt95Ux8Gfe9wfT+X94AD8j6sZd0gAGMfc/3vx1+8AECe+p/fGHvY/3oQn4o96AB+Ew/cQfgAAZwY0UfIj36jH9bW7ZgvHffJPv/IP+xH5XR7gcsQo/ddvYHFkJ7/Q99KB9j4+hgfXtb4d83Oj9FR9v1O0Ufr178P71H9+7o+27f0BHLu3/H77L97A++wNOxPv/r38Z7yBj+uafOwAKofgAAd0VyIfXOPwMH/gj8Be8FvPAAAGwyjPf/HvgAAb4ZHvvZQPrt7+8D7zofio/hCvdIAFl70Y98AAAKvuRD5Th8u/fBmXZSPvZ1+gI5Wh8JPefwfwj3nb7/kD8brfnOvNUfcf3lQAPj9+sJ+DPe69v7wAQDHwH94U+/lE+mHvzD3swr+8AFCJ/+PfAX7In3rRp3vJcn+9T/erfvgAAOeU3fvV8PieHzD95H++T7fO2LSj36f71k9+GJ9FI+59vk1nukAMkj7kh8Z/fgAAGf3rP7+EV/t1sdY+13vYX3rp7/vt/8afhI+RYf+b36t7109+yK/iv3BGPs2P34HyHe/Px8YY+q/vR1n94AMJD5ne81FeY37pH3nj73cT4BvcMsvPNbkAAQAAGcMgj32N788T/ZZfVNO4nrnxP74n5qy6s+/PE+hivVn3kR74AABqo+F7/188OTjQ/fjCfWB3g1+4TD5Q+/io+ASfgj3kEnwQ2+dgDq4/gSf0jHsEn1u95d+8pfejHvgAAMBcWPvTn3puHxCT6hJ/XNOE2r+IFwAAPMMxP30Z78oACpR9qAAcAfBMPgLH+UD5Ee9Nw+snvsIP5mHxQD8QB/gfeC0fyh3qXOy64REe8ok+p3vKgABknzgD/g5sbvf/HvG33hb72dD6c++AABstKye+ePeb3vkb3nl70595Vx+AABT90JB+Ew/0AfpJP7GHyI94ZB/9fO/vvIj3liH4AAHKGST77CT/FR/dI/YSfYT3tJH5499FJ+Uo+3Dvm+dhJt4AAFH9QAABAZgAAUAzAAAd279fPmofrCFox76jD8AADZSi5j5ybeItWwAfWT3yHH4598QB+AAAF40AABfii5j/mYfV/ewSf0AP2AH9498OevK4+rfvr73rcH1k963e9BffBif0CPpuHwaT4YfexMPGWLFT3wAALhKWT3xAH/Bj43e+AAB/IwRB9OffnSfE/3wzH1SD8AACE1kY98Jh/GffyYf8zDwAADUMwz3+5H0T94Reuwg+nPvBT3rJ70AD/xAtdvedvvLEPyV71b94bJ96Y/gEfnePt0nxu98DB9AI+g8fJTHsNy7GT6DR8Pw+gAfVn3q3782T5Ee9hfeN3v1f35mH/OD6ye9AffKUfL4PsvH/Mw/R5sSffWAfuj3xh708d9VfM7Pe3fvuD3wAAA1ROMPgNH3Pj5zJ+OffWHvLv3zfH6w98LJ+zsunErgAAEBUrPvXpPqiHyK94j++jPfBnvIv36N72yT8V+9ZPfAAAN04Vo+cPvBT3ox74RD52e8Nk+myfdAPwXH1Z9+Eh92Q+HIftAP4k79y25sB9Qo/BUfaWPufH6w9+xh9JQAdnv6GPqT7zJ969J9f/eJcfzJ32LG4AAAubSlH8Sj8Ue8TI+vSfIj3qNH1RD6ke8bvesnv1f34AAIAAFSjQAAPxedf3vV7/q96gh96k/MKfOAP48HzRT9U+8dA/RKfRj37JH0594oh8iPejPvQAPuSHzbD9Ep8s4/NHPRp3/CW4gD9hB91Y/8n3np2Mxz+UwjOe+e/egAfQCPq376w99ch9SI/AAAagwZ4/MSftFP7x74GD5ZJ/mY/2SfsZPj7HwKD8AABtToAAEGbDJH69j/TR+/6XAif/p3xir9JD5cp+5A/2AfxhP/p92XJfmJ8kA/tIfLlPjT71p994q/ZOf7fnSMPygn4j65LbfvkWT3vD3LvMy8s+7pABbA/PHvpwP+n1yR9aEgvWo/ekfGz7nD84AAE15QAAL5uulX61j7txfqc9rne+SL9BPqQH8YT67bemZPIAAbVP0MH9ed+w6uxg/snv/C8EXH6499PO9h/Otzvo3Fvc7xehYGp9aA+knvj535dtzU5/eABO4+Jwf1YPkJ7zbj8bB/Ng+rfvgAAXtN7cfj8P3sHzaD8Ee9W/fJwfM4PmBH4GD6XB/95uXYkEgPmsH3WD/Wp8tg/Acfjn3jgn9G95kR+AABouXuc+ovvnYA3qP55z9P98A7dfU/MAHnp2QAABtZcr3qXHzLj/WB+dselHvdf34Fz4FbxYe9D/fI3vG7zwAAM5RGb3wAAI6+gAACCiwcfh1X8iH0jT7v+fsvfI3vv4P8f11zHhZR+TPfsXPZO9wAAJRKO737kH85D6xp840+pX3TnlwAAKJ6LvLrQBzS58mks6Q+wXvxlP36r+8ABme9Gg/InvGOPqGrzK+Gmp/xg/uafel30194ny9Ux98kW4YfvNPzmnx6D8w+/v+uqQAn/r/g29Zd4q8uKvfZ4fpBPiWn1q5/dfeRwWZK73VPpWnxJD/Jq/nve7enc/3p3py3y/pY9oi2OMfZKPwAABrKeMPtf71P948e/iPeF0fyV5uSnxUT8j++DPesnv4j3m1zzoC7r6e+dvxA34tXpa7zfeQRe8scfAAAS3lVvu6QA9VPv1z+8AEAAAmsQdd6ce/QE/HgH93l6N70P97aJ/Ki31q77wAQn74AACqGG970UT+2ruAAAHBzne9NvvAAASulhufXPvXb33R79EC/eAC0PeI/vlVP4AZ/otUAACLvsZx8AAAjeWZx5Tp+6PeYafmQb52ABwT90e8w/f7OPqAzmny4m58aDfSPfV/vpYPwMHyfD8nh9gQ/AYf22PyMH5HV45AeAABjuTvB9ZPew8Lbf38dH3ND6GBfkLm/8fQAP+370AD+/e+zBvc6vlNdpenyvT46R+dI+y6vsv1jYH8M967e/RvexPvpAPwAAIQ+JtPrJ716D7zc9vI/5HvSYP8171Cj8V+9uQ/QYfidHlXi/kT+Ye+FE+2HvrRP4QVz925Lc+wfuy3PJ+FhLH7u96gh87fehnvw/3rOn5IK/AZ8g9u6QAE+P+er0z/sde+7A/8eHiIL2tzySG/du+NufPbvqgroSC2ID48e+UE+1ILWDPlAnwwT6EB/Q8fhQ3pPH/CW3fj88e8P4/8/HZDPihn0Qz+2Ge+xR9BXwX1+0NzPXYr0Y9U/CGfOBP35xN/EgIJ/8A/zkffkP4qH0rT+Vh/93e7hnNH70dzwzBaSh+AvfKwf9XV0Rn+Iz+7c98gu5GvPsF6X7xp96kZ8NG2aGf9gr8zuug94Ca/jG3MHvV4bvF+Le6EuIv0Rst3Pfs5tTx9XSBsIDJkXT4XezjVBwGSQx0Z96M/4mv6Ajtmu6j4OcIDQkW/DByZF+iNmGM/Eif8lBLiLgAAV8AgSLCJAQAACKAuFjFR7w7rZKa/5g2WBHWOAS4i04z7kCe3A2UXwy/EdZcLoz7ce/wdu0SLClDzfvU/AAtjvYTxIwA5jPwwAD+dZCABRM/UqL9Ebbvt5H895auQ/uyFL0zX+QS3T1Z5NvP9v2nvRCtmSBwAAGXImf8saLwRyJ540gcHxg+hP2A70ttxxS/0XNeCenTb9z3mEq9iK7iKu/gvSnPMLX7IT9C95IYtTBPxJnITPqqNasE/vbt7BPbB3DL361F0wGjGE+cQuKT5MfVzlr4Rray8+lC31hkfcSAoR8dmDpZeJDuFXvar3/UV0a96z4tdQPfhPzAASyFzCI768+FC38o7DQt4Yd9ai9kmt243sdrFzPx3qyG94QYuutfYxXwVFvWWxt54PjDeM+fCwXWpJQDylRbBoveM+83vi0z1Ed29G63EstveYWLUojnJi4W15LVsnWOdprI1Fg4oJJsAGovfefRoX5bn1L8jh9bh895cX3RPw7X1QT38Z7XqSty2ae7LHsKdr3SC957vatXYM5qaANYD9bGvhZ9Y0WX1z5LP8yAANRZZ8+dyBLiL3jPy4i0TRc58/9hOnBbTSnmOQ1fnfMhvAy3yPv/dFpmi6+18eovmM2aWffd0eQAJcReeotIgfcF8on38SFxjjw8IBkwB3GfVG1hVgDEz8tmclqvvdJ4zAGVn7EU3Z3yXEWuFwBYEPxnxxK5nEetpetpgADgRq7DCEVkmsCU377Z8FN7cTyqz8NZ+xRP7Gfb4tmQAPRG1d8+iivsMZOyNk1n1vdHJdvxzPkInoX39+WzHG8/lsxxXndb5sLgTr9n59y+9Y62oJHucDr2F4ArY7jc9feRvvfP1guFzd1btZ+UkBC6QWzPhcDz3ACxEf7lo1vvBHFltKPdy/Mk84K3f+v6AAaEizd1ei8A6rg9Gfe/nzCz3ZzYNZ9qs/AfvNBPoVuPTE6tZ80s+fJPy0NpI8CbbY2Z9VxJy+XPhYSUQM1dnojZhSeAD7DbP9Zn6Euo5Z+5w3IYAUSmg+F1/57J++/wvHpXwU73lq7FO+fmsvaRA2nkAAfNn11YEHZ+oBeifr6AX2GoEZ4BnZ8VS6vAAirPt+BzDDcuHsrs+A9Xxv3sqRzLRfog++/eO6L4Bi37QHmz4LZ9eCB6I224109nzaz7nZ+Fs+99rxgmiYAECRfCpcis/PGfTvsIHr8NI9lgtVXAwaLQiAeiNlPbe/Z+as/rCn8GADxn1CRftZ8bTu5jcYNFzxn/lY5/Z86s+iR7YsriDnx4z68Z/lEAf2fQHP19n6Bz9Gk9bSPxpPqitryD4oF8vltvzgIZ3fkHjRNwL19fku4TWpev+iLkxW+tJ7t6/qKWGAf2C7zpz85NdSRfdO3ZJr7TAUE5MFF4zqe4WMZAfz0ocxn3wQAQMGt6ND5X97luJn7oz5lrjgjWo546TPmpn1/dbBot2AABqL0MHtTx206sz0SYHX8tAcrP2eNDxz+cZ/59fOOfV+d7jn7Bz7BSs0yDN2f2MHsVZxnO7pGC6ABN2fECr7MJyx7Eam8EABfGfj8uf3fPPE8yVsJcW3gvarVyaaxkD5BC8bTXp3BnqzyxQ2lReuPOVM+L2fC7PoWT5W1fwYvNRf0QvZqVt/r9Qxc2aAw0Xgovl6Xgqn8J/CQKTeM/PGfO/ntza7Cm4bBttWroSLokj0Ab/pxZfndXA+D5HqzFrAb/x6BZrBQ1OcmfXytskbaj4PojaMJPqmfmTP2pn/yF/BB/Bq3h4PB8YGqLzkz6bSt/DNiAAoTPvci7Bz4iVeAKPyWLgg3sVF/Lxb0G8ypucYPrIP2pV+wnpnIdag+FF32zF15G5Io7iKuBsWfQfpqtjVF3y5468ebov4mfQnPx5UI6MAyZ+b+rxOfgnPlvm4VAHJNvXyA7iLA4Xq9axYh5Oa1WIexl3qWzhYb9ep62Q9Ce33Vbqar7iL8GreJG8TKfg1bVGb1NW8Ts6xUfhq3e/7FuL6KH3BN/OXu67PZWLgZ3kaH6mrY5XsCauss3IXV01e63s7fysxqfKMPEa97DJ+2rcsw/S63BqLA3P/mHxDz71Y+yFWIc39at2mL32Zf0MFzVEmWfa69pmL/rD+iw+ew+fN3YrL6VnxJE+hIvl7WBKbPyANbn61ndWu9jUXQt3p6lxib2rm7iKu6kFvc3y8PoXV4Lg/VYvTq39jnH6n67R0UVfu3e/4uVEfOm1nfD+n5Y3VsR5v2gATHPwg244z83Z/gsXAgAsbP6f8LJNeywEoNwVbbCBLjmbzCxdUJuaE32gATLPvci7/h7ZgtK8+aaL9EbYgl6ojaUMuWs/y2f+BrsJHx2NccMsZnOSufdMHId50wQ4XzcPJe71bSmnvwyypp74I835vU5vXgPGliy/m6cNfB0WbCH5d1mDa4+RfUI/VnOCkvh+lq4m0ij4Vav/Xvl1bKC3uIq5fu+l3ukmvfC3GB74jW9dnnkPdEMWBrn6ZL1a54Gl6bNcKVXPKrRpHj35wfp4q5/qKWsMfLWF5ZuVRJD8MFzc+IkAXjP7Yh5Lz7+hcjqAaWf/zPgjH0XR5IM8W3PhMfPK3r6qw5S+jU+5OFm8HRZbmK15+U71Pfd0XTE7Ba3y+576e/vluRnuIKHc63lXS19j8PW/oK2sz36bnlay2LS9o29ZgXfsvDDz4PH4lW4Zy/g623NvT575Bm+3a/SUuV4/Z+fIDrhdix7R8EY9Y4Bd0bHnTkGh19W8R1uXxuCKVCWD5Tn4/j8Do8gvPuIL2gAGvgIpz405+Wc+B8vMBP1Xd+vZazu/Ts+A5MrHPuggM1z/h29k62Gr3e+Xtjn5Zz64fsYWfJtrhjL2/L51km8Z9K2OGuf0wAZNAAyz94J/7XBN2fXO3yvnyIT5UJ+AcWHa3cDl3Qn7ZJZ/wAVqefgATgALKACl56N28DsXWWrr178oQI+z6Kdc9J87CfFf15p1/9e5zscFvOz6PQRASTYJ6NebscDP3BmXanjvcrUIgHfkcmOXS9vpHFpex9+1feofss/rHWFbN24G3az5gY9qtXZ6HFut/Bj7MT4CZ/TWfAHHzMtphj2a1c5df8MfzifD+3hA58Ix/fluYMO2LYHfTjdn40V4AYdvE/q+AMAX3Nn8Kz+hItqC/ASvb1npj5y5za0F+o+CdBfwHPmVQANRYFZdls+jWfcLP2tnzjZ/6+duohNqizUAYICHIx+wO84JOGWfaPP6gX6hC7zqbaC/dGf5gv/QX30V6T1vdvg09bpnFjd+2ox7CF8aMe89b7h3hJt/185DJ8TfOijvVdn5h9zXrdIc/vy2Ef7Ejnytq+o54b5+d6362rbxdkyn3obbV+eLuO2FXuvP/Hn1VRZVYNEkAzvAIvP/blzE57LcupU+AWr/FX7tQILz5Y59WVfdYV9rPzku/M+4VCvOqZUfXlbbwj6zr8vM58xc/kufpVPr/W+s+7C6fVOe52rLbb7Nh4FV7+5edOeUqvTrH659y6x9Gp9TC/zzv7XTq9y5NT/45+zc/BOfX8UBbn2+LbE5/RM/32fuVXtP5/SdcLY/DVeJ/nj9FvC7x7vkX+dAdv97b8ujz/W62x9TLirgZc5vLbd7LQBZz8k58Q0/OBf8xHmFz3f86sZ5XFfUXPS3PrJn2DRc+gTAc/S+faJF8vn4ux8kAc09Pz2PdNPqDhwzT7NvPFC/ZWf8rPtEi9lAARZ/3seK/rkvT8KawJz4SZ/Cc/FufOwv6qi1tz/5p+OS3v/XEDt3IGzfz8k58E1fmAXdIAdWn8SL/J58cAuP1bwgvy1z35d6MNvOV2CfrrtPrQ22IG8u8fOuemOPJb7zn6yybd6F8B0/CHwWp5OauyEz5pov+qQrvLgovzxn7mJ+Ou9H8uE6foov0Vn98BBXs8hufQg3W8LuUX4Lha0hcr2fYFwbxBM2r5QS5TCcJBu2EXNLP/1SK1w8ukUDUXOeL0ovz/8yBtYGov/Xfe33DnH3w241262DcW0Wx6fFf1vOryFF5aF946pfSB6bcqlx1vLdcTTr0/sBX1v1x0X7hY2dF+4WN7JHdENj+m+ZAFTQB70/Ndbebn57tyrxe/p/91e5bvqRt3bj+4R18Z+eTXL8LEXVsHtzkbZrc8U8PiQ3bt3htz3s+7h7cYM/ShbjQv0Za8lGGeKM+i/LOfWd3/MX2Yz6vzvNC/YOfDH7zQV/hLYvIwpDwL3tJYv7iC3WL+P59Vi+23Ptd3snt9n4+Qa9KM/6QXtwzkwV47x6Hu9xy38tAfaXl1n26QXz8eX8/5oJt9LkcX/RG2rF833fy8vq7P9JR8az6J58WCuDwHbH7qx5Goz+Xc9SgvNGfFfF+I+oAAFs8VAAIAAFg8Eh706xa/AfoCPdxfB4v8lgEHQDdAB6m3/+PG8tj0O4ZRfvc/vdWUqkc+4Nw8M4AEAADGQHvFjT0LOC/UBPDpes5z32gFfF9xy5ZVAPjjtEAK+L5YEd8BD6hbRAl1oAO+L+PNtKBOMHrUEvyAAO+L9Tsd+TnoEAm/V+Dz5hA53nOQS+/G4CEv49cEhL+ALvek3p23cgljCX6xICwl8/xx66RuEv8lgPuL+mS8FM+AbJ8Evw6lON59xbtqA3yHwF8AJEGxZbgQ09yCedPHjUAGiXwLr34JjvyO2PP1EvrCXxyAEWqCU/vI9ZfHngRc0N9cIl8OABXxf+P1kTz2eL/3F8SS+pJfoEzrsxUOAfojaAiuKlEiO1mIR9loDh05w6cofK0Ir4SispC4cCeW4POskKIgJ023VAFfF+iHg55rQtL2T6dqg9+a+Z9XNJfrKjwzzwENeyAA/AAJVx+4v1sF+C17JKegLWIVQLkv4NSBxM5WNcztBJRP3kbmF719gH3F8fK3KI7iELtp8LJABs2mRMIWAAFEvrLt9mbewicF37Vgn9Ok1fwqS98OY63mNPJrpLXztAfXSLeDugLXtbGlqoWwd4YOpwnN0teGproGo5kgDlA6Za8KqXjurllAbWW1lA5RM5lEBEAA+4vsqX5X1YIot/QaXxfvLXiLzwpN+yADYABVwA+fVmqN02hVi7iAS+jEX3Uv+tCDVRfFa/qvf5i4oBQQo1ECuZzOBdyAbCAEIIAJWzV5/2Z+Z9XZbBqAAV8X0iDcvJBCEuuoHaPjzZcLTjbxXP+JexFglkLx6gIAAGS8Q6X8CJ7TEtpNAEMXlMbksS64AprMlgV2rmfGWgb8oUntZ3F9awvHerdUAWyX+Fz5/Nvg+POBA2st6Aa2IB71ltFRT1hryJAZMa2UJ9Oje0PgRNhSULo0W+9L8GopFRTN0Xh4v+6NyiZ0fYCSbBs+rudOG0dUIS42mcQy/QgnT0v9JcDqE+WNuSbAPRBAMbsmAIdL7KdfUjuuBrrgClwAJJL/9UjvefOOyJycKKX9+gBr4BJZOoP3FgX/rIAqtYMl/kSAkWfJ+F6aX+qwDvgDjnBrdX8V3/8X05wBMrfEq0QJf6MbhUK8mQoQ0+RMJvAAfMvwCXyQ9eAl+nvfqwvBAASWX1FL+Wl9Cy/gx8ikluRO0c4GGl+Ys+5E7llAL5wB+97Bu/gMBcY7AYj+e19wAEAADaQPLGjgbtH6EBFypPn1mN9/g/Mhvay3oxPebQBXIIOIOiFsEPWftJ1jrFnz67L4LXC5s2kl0eH3smixzL9ml/ic27Q3EsD/cGwxkoXGBJzD0yAtgEK8G8JL+hQB4LFKAA/KOY9cFvqDPVj8s/DmOpsvrGAMzbabE9sQPuuIOTgWSX8+L9OSeSs+pqLKVSYiXxCMIwgAuS/+EbEHX1Q88JL90OsCxBT1OJcv7T72mxcSlgitPI+nHBX8gACXL4w6//yuf80CZX5uXx6wLDIsOs+N5HoNXxWX2JckwADxzP8AAUXywqX4H54YGsRS/rdX5Yin9gQH544NxhxuRLGkUvm4MQjQGjjfMdfKEbI8v5iX2hHaPICwy+gJPKI1+eX9bq+hQDhpwMLbq82NTr/eTYul/OsAHAAVGDwNn7gtgKM4ny/SKcVEkdTh/15ovgAZgeC4riufNaXw/L/YS/5wPQ4XAnXl+X5mF578CPmI6/PkUrsG78CAAnCcPy+UZbJnX+rh9e4DJi9fubiNYVnX3uX7Ik76AAWcBXxfa4L7uBxY+GCl9ps+IzCD0v7OX206tTQCyS+WZfXdNlBAIZL6sl+bgedIHmcv88XxuZ+wV+RMJhpfeCv5MvKxL4EnelC3BzRaojwh9Ju5+LZ+lefq5fSAX3MWE2hU6OvuSel7ITcvkuX5EwjPjfTSuvwPl+dnJwLN3EfMTiy+upf65AJ/z/Wz5FafNR4Opfg0viRX5/56a6+cCBAAApHgOAANWAMUvsIG/fA4KPDHGf1FfzEvxJXMwl/aie8nFIE3V7Vt7r3SAEAABJeIMHFgXArS+0Zqkv30dn08K9jADbABQRAliv18X9Yr9hlfbs+sZGiUsKxXxyXYJldEBeYXvPv3j6J56dnMV/R6eCFfWZtlBF9KWNWl94LEhbbBAAQ6X7OXYMl+WS/XdAH7PpP7zzda2luAABtPAGk+fXFKAASiv8hF95YBSV/uE30Yne07rbq8or9yV8Yc/0evbXDqQQK+L9BEBYc/XAngAAc8Aqlf/i1pITz7pXwV/KqB7EHhk0vv72fufERcGw2COf00nrf72jFTZ5/aoWHAvA0tyVQKVvi2Kdee2Q+CnMv4bwJbg7o89K9fVDzSPBMia8Mr+um8rS+AJfxfgJWX7kr9DCcQ2JvoA0Uv42cCM/z3VjhK+pE0ghj1hX86wGj0+VTeItXHmnsS5BSZ8Xl8gbWxcAlFIDILx3K5n/MzK//FrL4v+ZXwrL89ADLK/SjRqyv6YQBsr49EEVBetpPvvXrOR9CgGzzspmfj1wTyvoCXytL84B+RkWOBA2cv2mX7dd+EB/dO2rxfskvqMAFH7JkB/ZK+iHXF437mn7BL8wl8fi+cJfrPV7+i0ir6f2v3rhIVfVS1nxDI3E/z684q/oUA1jrMFK/f3vsB/FTWAbJjivu+AM4r+yl9fwAdxfO4v4MG2Mi8oLDRC3jOfNPdu5Xx2k/1l+3BebOfE3lmogKZL85ORPb4vwndnP0JGtwAEkl+YKuVlLc85gYLydL4yB/nS+/lfUHLggW0tJDFV+eTXBUrGpGFgAMrL4oVe4/LvtgHStwJX3bL56VvzFwAagJuvdVK2uwAqV99A+Tjb951/5X4qr6rl/Fy+gkb9/XiE87rDI1ACDXRClPQKZH8uyVE4mEDXuAguff01sHwI4m5sABvS+5FXEKbiqJ1rI5d68bdWKQvyKiWRJ2mXHojY4u3A1f2jtteR+cD69+eUu28VzYSvuWawRIFkSdnyOkUHAJMw9Nx8D7ILAHi/yZrwkvilNxAu5n/O6q+mBvRUUor24ym6oo/1C2Wuf7Kbtrn0Ujdo5/kPgK9NgR133QuCr9yV8IkAgVf0svlaX4tW+IABKK+SFf+4vhQb91z7FWd56eNWAuOAV8X7Yi/sV9hw2lpIdKvmMAConEZV98qv3Qv+g3z0LzOQ4HV/epDh1fsC4UdX4rL88V+Tq+GVfTKvrkwhVa7fF9ueStTCmMvwbn/6i4QFs2ABB1fy6vlgr1Qr/xV+GoBQoAr4vh+J0/J8HC8PpPm5fyav9VX02hUdYDWzhFqgoxiY9cKIr6QKR/yeI03f1Fk9X0ur9sRewq/xZfCyv/mX8Cr9Wl9NlwRDbU3P6MHwMr8lYDdYB0AAAqvziX9hL9Il/3a31EPvSTmV8Iur6HV9Y4vvtgG81wETLa4FP09lrX8FfXUvhUr7tz90ytLS/1Io9iDmaX+ZACgl/vCvyWAeGv4wYGWtZhs1Ig3fG4moAGwAPWr/sQe6ABTJfo1FmvAFe8mAS/dOvAjrOTgQetFA4A/bemBJXlfUen/2yjSk58Qy3coOI39gAV8X7BHcRoBfhONFPH4PxZRA3L+/duegBVpfjiURAAKtL9b/BpgRMTwZ8ANU71+E8yyTe82nIAzSvx7V+sbY41/1S+uNfP55ZkqkSAB7V86qulNfhD4JRX/tcHFl/Dq/g079gAbLAQ78ERXykLjylfvIAXNm+c6lGV82EAu1fgwtiZX2n5+/dvic2yTApSAjtX12r4wV85KefWA13n4dX9nL5iMI1K/zxfXmvwzX75r40ADha/EMXeZ6ozO4suCk8j4K+yJA5EES2cPeuG4AAuS/xhgAkPxLx4YOtCgD1GfzfHTq4YSQARvi7vBNK/C5fPCv/Pq1dz6kh9CbmKtfwjtqga/5r9eV/qcP6tfVL1nfz/sr+Uh8wcO2NfZAjlKpPQQE418xzNuW0LI3yDB4hr+tV+dy/AzjRmvir6usbc7V/dq+NV3rqT0nZ+mI6j9mXK+XiXXcgdAO44r7C3zFnhTZfRN1tMCF5F/7l/ZYDFq3UzgAggMiAGzl+MiA41XLDDiVT5nonYMLgq+NRvN6rpaXwPL+Iq+Va+ibryKwLrXxxL4iV8yda6ZfW2v8WX3QIAsJtmjfb4bsGvremxBACll87q/k1fXld7jX7uPGJVq8vbk/bUcwnheJpL7IeuCGOVpfHaT7ZXx+r6TGi7LCjtfRGvlVAPreeE1/7cRZVPgZ3wU2BZbi419K8jzxf714fZX6lr8AABEBBCICW19Ra+s5f/UXjdD+RK6PKcumNZJfyezwETL1r7ZbTGOBK5fRcvubX+NF7+5/ywvvwnUUvujX1/oWO1/dYAYjCmAAY2X4UamPQwGS+QsgFuhLh21ALBTl9wN3Q9Cgva72l7dD8d0sFS+Lmb35Q3AmydF+q9zJXn/ygmtAKP6A4k/21+cy+yWxXntpApNON+Rxdzjfrs7QrcLnX/loAI3wXNgatfd8ALfUFVr7XG+b7OMNfy6v+FX1QNb6ABA6+9VHxsvygAHCr5JVtqyIi+C+4vqTX8iAHKKWUEAIYv9alm/kI7r+wkAPS/lUAmMvuXF6Ir6TmGdDXTJbsv0iyu+Bg/tiRHY2LMPMmT9cb1w+H/V+Ya+LmbsRiQHX1H7I/UcT3SCAAskv3WE6Mr9219USAr1f6OvvlV/Dz6Cw8kPmkefqVXhvXzer5nV+oTeT/bbat9rX0fMe1kGFoF7nEPE1nutEJr6Fts22NlVXsWvlO6+SwGHV+O8FxGb0cvlTX3qgD1rsgWvTQvqAAQPX5Tr5D184/xyJA4ev8o12Hi5qw/DMXu+s3GvhGgGguGAMf0w2bVfMltyuHxPLfRbjCO29ihRDrw5X5EDdn1eEa+UQA3xXw5X6pL8oIC1q1OVbWm3oSQIdpynTREa/LNf5POfpABCr/j1/gGESbISPV76kKEE+Ck9/6/ltfGCvrHXz4AFToBKK/rfV2cvjiN0eQCygC06+6M7XsXpw589h7Hxd96/LFfAlNkvq/euHv1+5a/P0XT+vlMa/euFf1+2C3W1fyyv+Nl3Xr5388B7ybAAyev+8Rk/r7/1/7fJsAAgBvumX0iDaEdhha+wDfd4v27lDEYSgN9Zy+YDfUzgFgAPAb/ESCIG/AeryBvjwAKgb9lRsBTen8XZ27l9T4zz8u3ek6/XYnkWrljVwpmYLXDD6wkQbTSgE6X6TABcIulvSXxf2Uv6KX9gmj6IsPa+hHYamvq6mD5r53i8XogGUAezgE5OPYw5SvCHpvViA2cv98X07YAckRixeggAdC1oPX5Zr/D1+i5Z9xfr3r1IeFeL+VugLTeQ8H74vhvU2Dr+AMd2/xQoA+4vn+LyRz6/U9KI+l1bXPPqBi2oj955/CwXstACcvx+T7a+etIsl6+LCb4LFxKWLdDYTfOuALXxfySv8CmxYj/gZf9ebE5f2eb4qX7lL+D0/v0O4lfqvPyD6zLL4mJd1QB1Ffp6tvFkQNr/wNfNAAalf/i1h7AGOr+8ACpG/7EHk3cpW6iZAGNl+cSAlZfBvPsNXxhJDy19GFeBOksbQLIR41dl+UB3FXKwCBIIkhX0j1ewAATq+11rOkATjX11r76ts922nDL2avreXxLu+8S8XD3pd3oc3gRiWy2nSuu1w2TK3kQ4LMm/Ar/VV9s2FQkviVn6JL2nN/fVv7bL8YHwGvig34LL5GR+rbXnjfXzgcWX+sb+q1+Ua+tjfnV3N3n0vZHgADDq+dZfXvPvwl/uHb71CHb5W/wxZ4S43xZr7/F+LK+BZfwEv0wAIyr5RACQABklfhRv/RN0LbbGgDS1xgJfpLgbmX1A4DON/R35tgAmxboT80o+GZeuvK/NEAMRheaPdnL8xl/Aa+6pfXkv0rJ1hL//XCdEzspf9aEGo3/vN7GMt1+CkJA+lyfqa3HLgQl9jJeMlf3/4K2gNkAG2AAyQAt5fVEdzgYHCSG09juG/zxfe4Ad8X1Sb5PmuegBs5fOivtLRxvwH7IcZs3v/wwYLwJB5K+AsCfma/ZJfPWv94wN0b8/F9lG+DjfdJN68m8y9cGIIDS/G/Pwin8JXxXPD7QA5OBJXEn/5y8zUj1YgN8wm/Dpfz3tlU39Ml9D59SkXmXrkxDvE3z8S5WV+Km+YaJW0t67X4gAGiV+66NpLneqP9Um9yb6UADBG+PJf9UvgML/b4Kucb8y+VpfV7Ae03/yQXyVef/n/TfaZvh031mb6UAAum+gzflmv79AKGb8j58H2CCCAHhvmE312r7BM/r6/XxfovAM+X1GAEZV/foBxZfjpvvwwNdjbSLcqGPspaspvhLX9kAGrN8B6vrtffBAcJXxczabN9UmFsgArZvhsY+4Y8COuXQPCQ7eIEHoAMHr8fMSDFvj1wTZv88X3j+bjySTCgp2HNkXz7J63+BC0+GWOb5fiMvmPn7Y+G7N+Wa/u9K85vsLryI3DIoQaG+WAAI5vyJhFCQ9RN+zABVzfbpvwpT88gFPN+7m+16kt8v7PqwNc/LN+XD5SFfKV4Ps33pwGD1/vi/SKcyDqYc3zuL+bN86jgxybjU3ztwQkQFr0+qsWCY7dfg49gPGb6pju8m/7nElpvlSG0LS+1N+Y6/xd8NEv2iuGWS8LN+Um/LNfHpvs+IMHr+i+GeS/u5fvhjlpb+Sb/ppyZm+nTf3wEWVgEWb5hN8K6+WDfpF1zyX83Q8nMH1S+oDo/S33s7PRb7sN9a4uXqA+4v/jG6tL/5N9J7XHzfZATuE31vL8FIep8/8PrnKv7QFYmb+4t/ZABCLffFvlQAHeb+xIf4W+YTfWxv2k3xVaWSvN4m/lLf1FNkS3+8r+It+kW+haXTCxGa/mGRYP0+xm+5LfRiL9OcHCr/918CW/0zfYZFNx21hL9Ut9S6+uUnL5vwzX2EAHJYAkm+M+fHMj8M3xYr6p19n6/JDf9QtoUt3NVfgt8ya+0TfS3k1039Cb5iMLrK+vTfWXbkQn4AABs8PcXzhb5qOtOW/RTfoDtg036eV5ycBWGFkLflmv2OXzZr+PmsmO2EJfbGPkK3zmU5St9yK//mAskvq8X3ob8twcu6/4sQ2+vtda4yV+DheInugyPyJ7sw2+2R7zLeOrem+fDBn4Gq9gb7jyTQG/I+n6OnUnq1Fj7+S/yy/ETfYGv49cFajOVQApXhyNfAerxPX3Qb5YTRt8+5E7Upvk+xKvr8rN9S6+A95X8AWSXx2SB3F9DK+qrf9iDiVz8bL8DCaSZfLyPkNNxUGweL9+CcpXg3Hk+4vgPXx4b83qvnq+11fS+vrU3yIvE31/1S+qNIi2P2a1yRQ9i1+VM5EVHMQ4/uX+Ljf219p6Epzfbk1xSohq9bX1+yS/brfc+IKvX68b9Gt9tq/XxfA633CjwA88UN8Nq/Ydf6hvtLR4Ub/gN9RS/xDfrEgfvn1zHk7oyA2ArrfKyvtIAPDQBctwXY/pL7h6Nl3Xzfr9xV/vTXYjEEV0AawLDb+epfgVuSKHrQAeA32MXbpN/4W/Z9XN2v2TRxOE5BN+ga+LLI2WA1LX084g0ACQW+8bfFS1z638Dm9Qhd82+fNfAtvuQXCjr5rwCNFPDpfj/1bIALgk6xXBpa/uNwWm30A35AAC8N83W/UgLRJvyJhGor+jUYUK+kFAq3CKbL25NcGV/qq/1Io6JAPECOni+5t/KfxZWAFyvsnX+AYQwAAIa/RNfS0kdAAHuL9kl/jHfd4LWlD0jb8sbYgBAP6/ebfk1wU7L4ZQ4LPdVsWuzfFZvn839xr+8ADGy/MgA4ev2SXxpQD5NtYS//bfhVLb1J8Zr9pXAKrXSrfzqc00L8rhKb35T8+p6bB+vsdgQYAlawZIFJm5vLmvpAL25wHHOBEAAT1fd4y8XX4xr5ligw2avDCnGvsS5M1U9m6uy2D3xfPZvsYkRCqCIety2/wGACdNqrr8Pr8E197OA8TfYW+ZQ3xtm+k1+qK+RWnRAAV263b/DHZsHi+Tz3l1TkMC2+iFduuaa+ITwc/PkMC4AABI8PPCt/+BLt+2AR48f5VDrVa1vb4xt8HW+0ZqSINjqvbwb/yICUxPgwXFzN8mt1nj/LpdPjXgpfTivtGagDr+dt9x2/ZI7haNuLXxZr4Yt8my+OFfB4vzXL9HS8c1/IoA+gA+9v1v8Crb/c1+eCA+dfLqv5U/HILjxOgwm/tRAkmvns31Zr7adWkK/Mbfa0vndX3QzY4N9i9IuDf1gAUxXynWgMASsa+ydfQ9vp1cEor6Z0/WrW1HAV1MMPX3+teyt/aa/6kM0RLrjX8yTYQd+Km/P7fV48BS651L9G1g3q+B7fBbkVZ56A64Ll97xZ97fccdlXX5qpAtl/Ow2hqvANDwRj7jb+QABXW+r8fxtTm/H/MXFwN+Fa/yJfmnF0/n7OZ5JV8OsBiDfp2vym339r8Ti+XCAibr+sgWB31xr4+2SNrhKzfQev1NADCZ7e2/h8WlHfD2v9R33UzYP59LS/11fkTCTdX5Y76fTtgq/EHf46vo+3wA76WcDTu3Z8vOLEuU34cr5WN8uK+Gr3ZvDxPUfedZ3V8BW/Dw79GL2ph3HHeotGsSAua3X/PnvL+Cr6J2+i0OYNfH2vkuFE2r6wl+E3XSjRiKjs5aNfl5YJ9SZ3AAAKYCoABklfd1DugQAPb5BV/s63kXw8iv1WtyBA631D8O+G6gmVvlFb5n1cqd8aG/CoAmVvjQ3+0l923zGeBLNf0gAJniOeL5PItCW+WxrYBXtmCzT55Kl+Sp3ivAhRdzXb5x2TiV8rtORnfiBX2yS38M1S2H59WcBfpTvrdcGhb8et8aWfWWrPTv1692j4+iV8Ny3ynXYdb7lq7qr+//AMm+VUc+CvuJX2arARCCVG+XdvezvqvX9gmknECja/go7LbUpej53RncAD7i+9tf8s1n1T1dTHll+mq+A7rwjlwAADB4khMb7AG3L5IkC02+z6P9Rv2O646zYGfveWBHNfSJAKMALrr9HN9+LJBnfYZF6Qr6W9OvohJWeC5v9vgqSgfob7GvFlc/iifmVniB21x058t/R6fuwAR5ATZ3w0r4MN/jWEQGPcDlhY3zYACcl8yABMFfzUAULFwS76iV8xK/yJf2CaZonyIy4+E9WFeTUBiCv7oonYV4GC/iq+LLfh+jbOX99sB2t8/FfPgvdHFhGizy77C3yFy/UjfIgvxP747vRSV+OJ86Lfd8ALaW1n3Hjl/hy+KGPZt7lwG2Pt8sV8PW/hjf08vxR8TKd6kF9Y524TfWrvjMeNCgA3l9V6+Q2AB8vhazzkV/kF/2Xkm1fCJvnm3yMb7kF90S2e1AZSvxxX35b7m1/XE/XZfNMv4ZX9/t8jgteu+4471fTxmi4Ad45Zf+u+lpI5dv0fXxq69+J8vrnQ3feqAcN35EwhgO+lwXo3f1MvxuX60b5IbfZDX1YvKbvs/X17Z+X5gUXWaG30xXhVlwa/f9d9pm+dNfa6vuN3z5r5p190Z3NWXobv2bXyXL+Cd/SMfvL15BMTN33Nr+Cd8WW+U5faIAWO3xNLcVN89u3gHbXMvl+OIZr5wnNU2eqZfUG4Eyt91xDq3yRMJ7HrstvhEIMaUCjBZ1e3SrfMDvyUQHA79CADRK+eGwcKv0/X3Nr+FN/v8vO3B7bvwkINtzb1QBtm3whfLg35N32G77Hd81ABd37p2+NPQjO7/S18iW/0AAhFv5EgKR55c8cFuQWNX5jvhnFzX4//XCWHeM2rHiv1Y3wnb5zd8cCsLL5FbvwVT3ib+MZ/ni/XIAyJAC93wtb0dJ8stOtGPzsAP2X7oiJRZzKOOQsg25FVhC5KwE719xC+PeLJavvZX/5b/Ld90Z2LLfltv/BL3C+bkSWKPxDMbDJrpt3yXL8Oessm/vsAJDvgF31vr6k19x0uBNf5zj4w315r9Id8pABGyvwHr4sn95+RaN9n6/j1wSivmwgLUr4Yt+Ua+utguo1jy31P1YE99v6/J9fptvmfX44YSwl+vevubU77nqgu3IhdECzHm+3/8M9v9Y2x1XswV/1S+SeXm970q38yVSVUQiG++jfK11lK8Ipb9/l+OJuRTXzSv/kgvdtbxOhHkAZbfnEgQXtRRr85l/Vm/jE7SQv+qayBIAuZtKe+4HfXUSvK3/hb/dd+8K/VDfPRvjgQEOb9/0ud0ZOCASgAaFtzA55s99SezTJfipvr7X7xr5wd822N8FfR9vmB30ntZiML36RefeL8cNfz7p7B1copC+LiLr517nX8Br6a1/jM1GDf2mv6XX1T45OTiKqJj5r2Z4+MvOkYREt87m+ak4iTvzrX+qS8ZXCZ6JvsHwyvt536DF/61+ce+FMz/EuwinxW1bE98V2+zbfs+vvq23ILhKvBT9XWTfk6vxJn00r5I9/AF29LfegAVgAFvL63K+O6WThHy1mPFAKvZ4Ml/c6+tWAmxvnl24rb5sIC1W/DvrfnvuO1FdUJsIBKe/k/bP2klfkceb+fN8ue+fMbBtv1b31vyjzSCYQBAbfJ8vh6XxEb4w9/ru+8TfN3Ti7319b4QbuGneoKvdEtjj3+u7/jZcHe+QTbxKVgZ3yG2GS6gpLAK3frfNhlj77/Y6xd5e+W3ff3vqAW8fNfl8R1C3k/bX5v1a39kAE1t+kK/Dpf0VyFYOxZbjCp+qseehrz9ry1X7l79Td+xU+fRrFcvyq38K79s9/Pi/KPbbqNmt3zpp0u5dpU+T+bICLxkF0j6/fItdC+B2LhH1ks72VT+nav/uOGqf9Z3uNz7ax7XO/LC/PWPYgt3pz+057D+eC+/unPRHjqHl/Pi3X/vPnf0/nOGwdVX2Yb+Tt/nOpKw7Yuvqn39Hp7wxlom/a7faJvpgAJxr+F2WCa/spfXh+GaQFUr4zyBJe+rvEQNX+lyMzo9tXDt6BsLftGvqu3wxr819+Y1PtffmXXx6x0Wx7ep8T9W6zfeTv8ar+R5dot2tS+a2PBc3q73zNV+kqCmm+fnP9cv7LAWF9Zg9+i5Y8yLcHbpRX5SZI3eeHVeTJfSmTu/56RTvqFuP/OnU7lmv4CXzZr+uq/kduBpbmBZoQ32VjYO9Hnse9Jf22nZCu1gbY+q8z/mYPfls3xrX6m7595eHNfJJfzi6Wz34w78QV9Hu3URf2HVmD33BL8Ll+Yq/jX3Fwt/S7wjV/KYRda/4Nf6KvxCX8hr5Ql/mXfFXPll35Vz3LT99TeXq+utfFNvqtaw5d7JF9tcPKNfs/v9QLz6+8uov2u/Idf7xvwzt2SxiZl9fi+6RfbzLp1i0LV9o49u0/GrvYtX9kXxLV85F/kPgt9QV48Fjj7yL735dn9OG33hat+On7fRflF/ZduHDbPP1oun9qL+M49mcfnav+nVvt957V5zc/xl3BXfEuv1ONCFkH/d8/5pzdf/SAfh32g79AN+OUBoHbfWobM8Z3wBr5SgB+0DfkXH5jaMEbcI+Hxa+/9fE0v2SXyk77N+vmO/itfYxIvG72Rr/BV/CBIc3fJD4uvicItd70TyJL4Y7novwrjw746TUMHi/SA/gcX/w314YRqTiC9qB7fL1vw2R8jd7X1sc3eu8LdyvnW394ABpN+wLhBZfQH7iwAAlIDRd/cG+nzfRIAF4zvNx8cGcD1e/6fQ9Xyvy3GL8rc8ncfZBXFvF+QV+mL6h7f1ueYe3Kgrw+r+R+4Hc8aCuse3nbn7sX22L6H+sdi+x3P7f1pcB0O559DdtG2cP3BgrvD99hLcnc+4BXp3Prbn2dz4gQF5kRGUcnBXQAj08B+oz/cFfBNfnYAhmnavi7cpdvDe6N3jxf1jP7z8tb5fJMuf8Xu5LeGlwAANIgkAAczTkEH697cpqdAAAmyB5qcbNOM/F+vi4AAGKQLgSxTJaSFf1zmC6PKX7v9SywI8M04lqdgg/VQrkgS4AAEuQFUSzZp2yktuPetAneTPxhW1f29sCeFM/yervAnkpn4NA7KZ9MLnKf3cWlpIP6zT4GEtDCXOdOjYlzgSzZp174vVB/ag/eQfqZ7zGRYGD8Zqchg/HYljgS6MH8SD/lB/0gnKz3mEqzEI/aZ/vNfP2rennlyi/ZL8DotuS+emfHEzwZnwHz79/ZZ8Xszb4zPlKX/Lz7ahzeflShLgAARpAC1O5mnfNTpAABuD8qiWmjLsQf2wd70H/M07TM+wxLdwfh4P/CJYBlsrhX+RL9wfy7S7EH+QCucveyhLgAAepA1hL4clpZn6cS8KgfGad0g/otlyoPxmpzCkuf8WHNO8r30EG+8AHhD82adRbL/fFofi28H+K89jS/Fpf5vF0MS8ZpwzU6xB+hNL+If1rz+grfPNvECWbNONQfmER1CJb/EsiGWZZbgAAOpACRLB3lmgD+8AEAAAXIH0pfBD/sh+tvLDzPibz6KuaxE/pd3SRHI7lDbz0lC7ze99CW8xLgAAZJA59LmFtxkP/XxblD+ojuoRLWQf5UP/W95BZ/8ie7WLtULvt75R1djltCQWqvLwwltaS4Dp0pD+Is+l3vSgf4WX1jA9ll+Tc+VZfFofq8V9W5Zp7u8iW7NOBLP+j90Sz4t1vECXxg/Xllr5S1T55lfBASX6+LJofgtTrEH/JEubtfQuMLPnn2X+vLZ5Z/0fek5fe8V9OX+/Le1geSj2r5b4kX2uX2ZZft8/q0XNxHEat2GS6bRd1ovebnPWfPrPqmS4bC6iNtHy+a5nl8v8sDxArd4ididew2fUCt/+X4PFa5Yv4SO1Ork33o3ix5RbQV/aSf2/7tCvk+K1994IVuXxW4FPx8DjOi5Ir47ktDs/8mf98Dpn7x1E4nZ+5SfSIPi7PsbnytE81+9mLO+frJ3X2iD74r6PZ/+K/hFbybVvqT33RYGk/kIuC/vnvFhRW2NJ4b+8kKXsOfjMT3Dn+qx/w5++QeulfaiD8wL70r4VHtxQeq/rrMjpRS6zI42k8K0WaOfK8H91W00F86c+FmWrpP/7H5P580i8Dov59eglblKvlfn8PE8Ct5xaWc1OQ/FyYP+yr5pgdOh+uxLowf7IP7kH55V9zIOq6bIqv1IH8Rrd2UuBc+CgfwEgFIPyZp1qD+erPiNLYOnWIP1t5euPPnIOX4nSEftVjwFz6OY+5rOr+XOPrz1q/Fz4Y4u3FWzgfyM125W8IrYy59Nq2sBvHwP8ma/mr6zk+Z8/Hd84Kt0RiyEq+RB95I3F4PaIPqoL4Old65+WhfhI/riTstW44N/kXdHq/hufYs99VW2Nz7YQ88bOrF3KIv81F9Nz+7D9pg/5+X5KNvbn2Zs4O5+aKejufF6nxFJw0h8cMvIZvmUPl3PotVySN6TD+rKflIvAzFxzFyZD8e58963IsPL3P9WH29z9MzdK6XPuf4Z3tbFxxH7TVu/c+47zmuv2LG2DD9B58/5WEYfNelvoS1hJfCku2adIAAeAlyEP9EJchMuf8XwQ/n/FotThkH4Wkt5iXIxLHAl2IP9YAGIEtaSWMg/tQfufiwkH60MtRiXNBLYwf9IP1kH5s04madKYfMelw0P5AAEqD+8h/+Q/ael1ES5fxe7kspR+ZJLNwf8zTgS5d/4vhSW7NOWanHvy0iH9e0tfjeBYf1atzrV6rD561evc+lsH0Ob/dq8Nq7Qm/GbvB9Lu+viWL31H/n0spZP/ufl6n1XN84c5p58U4eZDf9PP6nD/Ib7fU9XbvWef0Rvm7R2Ql7NN/g8+EjfPPPyUOyGJ/KKvBR+tNLYUfpYP7oj4hYsDFW5efB6t24P0CH7+D+iGXajfpHFokyykH9s05beWlDLPeT0Y35erdPydw8+wSr+0fqpH6HN7uN+qaf7ef/SPmJL2kZY+N/0sWFkfyyP73n7XN/VYt+8/OTfYGtk9W5Lu/11t6R2+mf9hbsYhysR/w1v4kv9YbrJLg839MW/j5+Ua3yLft1zxYj5ej8kt+kx/0+fBav1jWxaR446sV8+zufDrFxExzXz4oM/6cW2rfDfPlQC86t+8x8t8/hDP4kfwCpweR8U1tXn3tDP0mXrPiw0BY01tHWuHTrPZj7G32me+0vvpZfL17Dxnow29Rt6krch2/2/rtbFv7L/RLYuqfRVvOGbK9v1wP4We8lM8SXXl+f0nVr2y+1W/n5/Lp2N+fYTNt4u8Zp3xMt78+TL3VjvrHW3eZ7BatNuXshLYnl/by1CH/SD8deWMo/M/Fh4P+BZbaEtRSXL7L/ofuUP4lH4kku4R+kAr/sfwAALIgF9lsDS9kH6DD/d5ed2Lhof/2PwS5fM07+h+zzP0IlpkP5ZpwLU52adC5LmZllhl/c8/kMtQGXq+L5mnQHTv7H/zU4aCWM1Ocofmfi2nH4zU4Zx+WVL70fztS2HH5l8tWad/Q/s+XvoS+nH/gEsdR/IAAtcf32P5dpaXy8g3WHY/GgltnTvEH8qD8YR+io/KKlmzTlkH6sdd4CWbg/n/F2IP7bZcn4tFR+6+LNmnLNThkH87Uvxx/I4/JUfmq99xBcAAC0IOHH7/EtxO/N9nxmnDCP3mpwXj+vqWLNOsQf+uP20JcJuvgh+ag/M/F9uPxHH8u0snKXYo/8Ufmfi8oJeYJ9PM2laHKanYqPwsH9Hj+OSWDTLVmneIP3nH8mD8q2OwpLf4lyYP7AL6dYvwC/i6Pmb5o/izhH6BD8CSWfg/+anUZ34mJeIktTx+Hg/ZcfoMP7EH8+D9TO/O2LhmnG4PxMpdPj9FyXfbHcTLukAIkH+dEuAJ+rNOwCf1lq215bqD/+0PvoLXIfnIP5PxcmD+h1uCCv4dbygr8w5ajrcWx+TtLmgln+P1kH6DD8LSXzdL8WlvMS1wJa4T/Bh/Pnfwv5t+P8PH9Hj9s6dYE/eiltBP00ZYaj/sCXcI/AifoMP2fR6h0ud+WEif3wfh6Pw1H5tEskSXBBLU8fn+P9lJf9j94CW8xLT6lr0P5MH+kK/Iu+YBLHYl2oyxZpzHUtICW0g/sql4YP2iH6xd8juUaE/jYluCS6MH5zU7gCWE4/t8f5QAJ/xbej+Lx+bNOUBl7xy7E5bJd9RoWgI/WQftoSwYn5Lj/AeXqg/kJl7xP74n7Z04LB+Ak/MTl9gS80T49D/f8WNxLFbNj0P5Qn8VvcatWU1O+anMkP5ZpxDj+UeXpZL0QlkYP6PH6LU5dR/UQ/JglgtTikH+f0sICXIAAfIfu9S+BZcmD+DWexRLOanHIP1GJdLj8NR+Gk/Wkl0hP9K7/eZcS+XKX76rvg13//LaOJ+4OObXftbV21q0R+9ZzuOtXMGH6gv5Vq1U09U4vok+ghfvrVqPW7EL/zd+OuvRGPaNniNq9XBb9atcHfM9bkjD9RjziV/b5/MtPLGHUHvqzi9u68zastc34hfrHvm5xzm1cfs+162YFoy0n+5C9e07nK+t63bebvkf9J9zkL9pY/bvX8hfKrH9X52wq9Yq81C+6ffdQvlku3qx6yp/tC+rQ/eVP40jyax8GF/1tuqqfjbbmpz0H85tY+rneHfX4vvy598L78m4sLC+weX0wv9dq8v/Zn/tzU+/WPwn1puP2In8AEtBh+bRLqAlvNTrEH8ET8VR+nBL7/F0YP9Epa34t5qcP+LkJl/NTuZpxBD/xB+GU/TKfwQS6XH5tstFCWUo/nifmfi14fiAEsXeWmU/HYl0YP3mJbiD9v8WVRLDwfinSx15cqD9eh+wdOCwfjv514fkSD9diXBBLaAloOP5VH/fUv2adIAAnKf5lP9ZpywktRiX4g/X8frNTuFH9M042iXAw/r1Pkar4FbxTU43B/KU/pnlmtj87AHXj9FJ+uDL+7D51P/R5frj8diWG/X1cl/xP7ZpwXj+3C+e4/EIl7Vi7yJbaT/XmWUo/rwvpSS1Yn9vj/lJ/SnLDif4FqzULdyT9Mp/Yg/MofykP+dxfuj8PB/cafVRlz0P5CZYvj8JR+LU/VKfxRP4i57BF9z+vU1ONwfjdS7An4SD95iWSTLNmnT/i2nH6ET/jC3DJLbOnBzTtJd80XteCOZg/cwf5US+Un5qD/pB/II/er7vEX5x9cn98yvhyo/y8fqMSylH9JF9gcf3gA6tPkdP12JdND/FB+t/fdIAaCP53H7398G0/QuMh/v1dP/a59ZF9OuegQXXtPpgsnTxZZNu3+/g6fB13ut90/75p4t2G3T+XSnVsNzx/7/SkvtvvBJsDot4X6zG56bp+/+/LRfXdP0G77aL4JAeo3ebOrAvjxUB6IM4Xp/y8XX0/5wLyMXy/T7s6sy3foP3nvjuD93aH9D8cqB/DbvlwPi274P5cUFd71fYJbB9X5tzxP45nc9dG2axfLgf8dz10bfbF8h8WUM/2sfqwP72L+o/f9i/hGf+gf1DPxoK9nF+4Z/MM/S4D4UF9M3S3+t+Nel3P1nhQJr1uL8P+uAAAU9EAADt6IAAET0QAAOnogAAJfRAAA4eiAAA29GYz+AABp9CPF/OwA2M/XGfvjP4Jn6Ez8CZ/AAAReiAAB49G4z+AAAE9GYz/sZ/AAASeiAAAM9G4z/qZ+5M//Gft/j+Jn54z8CZ/hM/OmfwAAFno/GfwAACHoXvb3jP9xn+Mz+AAA+9EAAD56LZn7sz+AABoAnYz/8Z/AAAY+hmZ+ZM/dmfkTP/kH+iCt2sXmM/gAAZPQlM/gAAIfR1M/qmf/jP3Jn8AADd6Oxn8AACj6IAAGz0GzP4AAAD0fjP8Zn6sz+OZ/HM/qAnwAAKno3GfuLP/xn+8z/sZ/AAAHejMZ/+M/gAAHPQWBHyWfuTPz5n4qD+AABQ9E0z9xZ+LM/Dfb52ALVn5yz9mZ/Ys/iWf7jPyZn7kz+aZ/mM/gAAAfQ5M/gAAQPRuM/rmf7zPwJn6cz+oS+hxnAgt5rP/Vn7az8dZ+Us/XWf7jP71n4Gz9DZ+8s/0mf/jP2Nn96a9TZ/Ws/MWf9rP51n+6z99Z/Bs/w2f1bP05n/kz9KZ+VM/RHnmV8AFn/cz+AABM9ESz+xZ+Es/5T3y7P25n5uz8zZ/jM/gAAEfQrs/zGfszP9xn68z9VZ+FmvdIAR7P89n/iz82Z/Ps/32f7zP10H48EsA5/bs/22f6zP+9n8p/dxZ/Is/zGfrwR5tn+Mz/VZ/Ls/zGfwAAAvo7GfrTPyJ5/0z+SZ/hM/KOftHP5jn+xz+gTPBs/JWf/jP9Vn9+z/fbnss/7GfwAAMPo/Wf8zP+1n7ez9XZ/derzGftzP4AADT0QAAIPogAASPQvBP7Gf9jP4AAE70MzP6Tn/Jz9VZ/TIHBOfwTP0Tn/Uz/GZ/mM/3mf4XPxTn86Z/OwAdM/AWf0XP8UI5lfCAAAo9BFz+AAB19Hd/d0gBqs/bmfwAAHHokWf6rP9rn/6Z8tA3xc/GOfrHP+pn8Cz/LZ/Ks/RwfukAJxn/4z9s5/qs/C2flbPyi9/mz/GZ/+c/6mfk7P8pn/Yz/iTPAAAQeihZ/Vgn6mfyLP3Jn/vbumZ+zM/6mfwAAD3ocWfvYJ+1n+Kz9xZ+2c/1mfwAAL3oPOfu4JySJb9z9aZ/+M/AWfr4P4nn+Mz8p5+xhP0uflLP5xC71z+G5/qs/fL3wK3gpn+Mz8FZ/Es/r2f/XP7y1/Yz9uZ/AAABejs5/Is/mmftnPzJn/az8OZ/8vPjOf1vP05n7Zz+t5/uM/7efzvP8Zn92Z/Qg3rc/imf0LPyVn8AACT6BFn6Ez+qZ+bM/6mfmfP4ln/qgdLm3xYHvziB4T8p3b9z+R5/jM/auf97P2rn5pz/9RuNM/WmfnTP6Z3cSz+R5+1c/lkLuTP5Hn7Lz+piXKQb7wAMLP9xn6uz/qZ++vPqmftzP1699fz+DZ/cs/HmfhET0rn6qz8RiuKJMc3n8LOztG62d+vM+lFa1uf1zP5Vn8AABh6Nxn4Cz+R5+5M/Juf0ru87ADsz8dZ+bM/DWfmru87ADVz/85/Q8/0I7ukAPTn7Mz/QF+Ss/HOftAv1lRcSz/65/uM/GufmPPytM89OwBZ+Ys/eBf5Avxrn7fz8ah/1c/rGfuTP+Pn8Dz9ah/NqryBfxTP4Jn4Uz83Z+R8/ZI7ukAHZn9Yz9xZ+Fs/gAACfREs//BfpqF9KJ7pAAyZ+YC/iWfv3P25n9gL+pZ+Cs/JWf6rP5QX77FeBW9AAAEehaZ/Xs/gAAcfQnM/gAAevREs/dmfovPyEB++guAABy9GYz8SF/9c/gAAWfQnM/aWf+zP33n/1z+AAAZ9DZl+V+XmM/1mfmzPwln+Kz9lZ/LQ/75F6nP3Tn4Zz8w5+Ps/pWf60P/mDbkz9uZ/As/QmfhQv0oX+dEfIF/jM/rmf4TP5rL7sz+JZ/NM/6mfh3P2zn91l/vAAHc/Jhfl0P0gX8bz/JZ/jM/Gefy7P9Tn/4z9xZ+hM/kH3mHi5tn7WA8Z5/1M/Wef7Qv+pn70L+thOGi/TRfpMTy+uZaL/6F/pc/3mf47P3IX/DD+RW2Qc/iWfmzP3Jn4Ez/qZ+k8/V2fgXz87AEKL8OF+HM/9mfgTPz3n+fz916mmaLrOf5jP8Fn8Sz/zF+pi/nhfmYv3Zn7mL/WZ/W8/0Yf2QvwFn+ML8FF/TC/4rPmV8CDn8bz/8Z+uc/jOfwAAIXo5OfyvP19n79z95y+6QAbBf9TP7Fn+Yz9kF/9c/ZRf9HP8zn6VZ/iRf4c/zGf6rP9zn7Zz9FZ+Pi/Xxfn4v7fLb1Z8crnEs/LefszP9Tn8iz+JZ/3i/3Gfz4v3Fn++L/Hrndhrxmf1Iv14X8RL/Il/vi/Ln3wK3tCX/7z9mZ+nM/cJfxLP05n7sz+AAAp9AKz8BZ/j1zmYf93P57n+Qid0l/1M/2WfgLP6sX7wL/3Z+3xPZqVxkv8yX9ZL9BF+3s/Cxf7WFwZFacz+Ml+nM/BBfogvwWH7pADCl/kC/Omfxgv4l95slekF/Zs/cWfpzP8xn65z/cZ/NC/khfnL71fL/eADyl+dM/ipf7LP2rn45z+JZ+n5fucD6rP6sX+qz/8Z+rs/epfg0v5WH5rmcml/Es/Zpfj7PyqX7VL/Vh+eRr7wASvP9cX+Ez9OZ/d8/V2f4kv+QX6tL8t+e0bbbpfj0v16X6VL+Ol/JC/0o1xfP+fn6VL9fZ+Li/qef0mUk1n9WL/GZ+3M/cWf1Yv2gr/OL+XF/LC/1hfmwv9MX8cz9s5+XC/cuf0XP0Qr7OL/Rl/0y/Vhf4zP7YX+zL/2Z/cy/zhfgIv3gX8Zz+w5+2w/zxfjjP8AAGYz9JZ+PC/xmf8LPwFn7Oz+ffflbv58V7Ev2CX9KL/lF/P8/Sef7PP6f57Lkt9l+US/4xf/hX4+B+uzzj5+rs/Def5vP/3n7bz8d5/uM/Xef5H72V18Ct4DF+bM/AWf+cvy3n6XL/D5+Bw/fs5+Iv+aX+9z9dl/PJ3X/ngzP1Jn5PL985+Ys/bZfmTP0kX9AC9iLOjFfxmfyLP25n6vL/tZ+As/kWfszP7eX+Ez+jF/wS/k7PyYv8Fn4iL/65+Ly/95f1hW2gF5Wiebl+5M/QFfkCv1Vn7wTc1TugK/+7Pi374ez66k8mK+tS/wWfuzP5pn7zz9xZ/wC/s+fnqT2aX7tL9Al/q8/KWfxLP+hX8wr9J5/sK/QWfiAvyJn4SV+sJums//GfxLP0Jn7sz+vZ+BpPu+f3Qv0xX/IRf4V/GK/r2f1zPx5n5+z+bh/WK/TFfniv55n7Bz/l/eZXwlefyPPyVn+Kz+dl+9C/i5fwfP9ln5ML/gl/rp3dIAdjP/CX8Lz8o5+m8/PWfr8v0ln9aV+UKWEw/x4f2aT7KPeI58tLOlpP9et9TP6xn+3L9Z5+hM/dRfgLP+Fn6iz8vF/2M/HOfqZXzP+YrL92Z/bK/kWfmgv94X9Kz9q5+F8/C2forP0Fn4nz/qZ+yc/NBfwrPwFn45z+6F/IAAgAAGvQ1c/bmf64v6gX/HL/fF/gS/gAAYPQcs/7mfszPyYX/Cz9ll/RC/tZfmHP+pn8AAAr6PgD6lndm3mXK/blfjyv8Dn68r8+V/mM/flfkLP4FX6zz8xZ+Qq/YVf8eV4wD8mL8G5/Ks/Phf2Kv2Zn5Kz+sZ/Yy/R0nx7P4CX65z8CZ+jC/JhfyQvx0F/+z/uZ/jM/kef5jPxkX76r+WKXnYAGJflcv/xn5Ur+kl+aC/agPjwS5tn5mz+7Z+Fs/+2f5bP2Dn6/D90gA5q/Jhfxav7Fn8Gr8pZ+AS/3Gf6rPwjn4Wz9BZ+Ry/zSD8JS+8AH2r8LV/4S/9hf3TP9YD/eAAtl/DS/Cc7vpFzdn6Ar9q5/gs/cWfmTP+Tn9tL+Jl/ky/CJfrPPxnO/Ez/N9e7q/9mfnIv89X6s58ZK24I/CXFxMv4ln+EL+Bl+hM/sWfuov3Jn9Yz/JZ/Oq/sZfkaa2zn6+z9V5/3q/KyDyaayDn7zz/8l+dkH0Jf/XP5Vn8KL941/rM/1ef9qv9jX6c5+L5/AAAXegfl/wS/FCrvPP9Vn9Mz/lF+OlbJFf85ByjX4Zr/tA/3gAqmf7jPyVn5sz9OZ+Ba/s87mf8xTX9ar+gl+Jy/9NfrqvyRH7Ez9fZ/Bi/rBfyiv8Jn8Uz9aZ+Cs/nqvyhapzn65z/HZ+DS/1mfszP1Vn5BmsRl+1c/ZmfszP1gX+UVem1+eM/cWfpmv0cD+dgARl+5M/q8jrOD/RH7RTeMR++q/wJfnMfGNn8dr+Nwfni/ehfz7P7BX6+VsYV/vs/EWf8ma2rn4Ir/dV/r5LZpH5jPzJX4Hz9s5/5K/5pfpgbxrn4Yr9kl+YC/Nmf5dZ8qX8kz8MV/eI/C09/iP4qF/RB8dc/nYAQVfwXP8HX/+r+sF/Ss/QlfqPP3Fn9yr+QAA5M/Ytfg4v6SX7bL/0V+1c/TmfiKv8dn8qz+9q+2Qf5fXsyvwFn/+r/VZ/IK/31f36v33X8Br9Jl/Vi/Ulfhyv/lX6FB8ehfANnM5Dnuv8dn/Jz9Rl/uM/KtfoUvwbn89L+/V/56/1WfpzP7aX6cz9A1/Vi/SpfrPP4AADX0SAABSX6pL9OZ/X8/fefv0v+aF9QQ+jnme6/fdfkkv8dX+Mz891/K8/nuf8Sv5JX6zz8T1+LQfsaL+fc4UX96r/R5/gS/i+fvLP5SX4Cz/qZ+Oc/Ulf5jP6Zn94z/fF/J6/3oPiIb/mDdvr/k5/eq/3Ofnwv3zn9Ab/v1+Oc/0DfqMH7Ap7pADwN/qs/a1f6HPxrn+Mz/zZ/Fs/B2flbP+PX/Qb+Aqur1rODfwAADHorGfjPP1Xn5Uz/mV+YC/AWf74v2Q3+gb9Fg/NI/lQ3wov+cX70L+v1+pK/1NflLP16X8KL8yZ/yS/5lfuhv0Vn+BL/nV+zM/auf8ov/3X6Ez+QABrK/zDfq7P9wX8gACV1+Z8/J9f4Bvxzn66L9yN+vD8EVfh3P37n4Kz+FZ/Kq/ODf/6vwFn8/z+e5+hq/rDf7SP/Zr8KL8kl+Yi/2+f7Kv8Zn5iz8BZ/Bc/vGfxQv0nn4wr8RZ/Ma//Gfn6v3Fn+sr9Hl/8c/MufoTPw3X5rr911+G6/1Wfo2v9bn7kz8OV/zhvBkfrUvydX8dL/CZ+MK/3xf5xv2lX+Mz92Z/NG/Amf5XPwln7sb875/fq/Ulf+6v4tX9Kr+JZ+Xy/iefq7P5Hn/Yz/o5/jM/Wjfhuv//X/cr8hN/66/chfpUv9Zn+br+t1/26/Qmfr1V22X6EL+dl+bM/YTfo2v/dX5yb8+N+im/JTfx/P+U38qb/VN+5C/kAAOhv5ZX7kz/BZ/xM/pRfjzP6kX60z+dV/VM/BWf58vxIX8Sz+5V+ytfmi9nBvy8X7cr9vF/Za/LDftBv5JD5sXsz/mcG//xftyvx7X5BL9Il+wS/ZDfwbX5NJeLr9fl//K/oWf8av+A3/Mz9tqvqvb+zf65vxOX/Gb+HF/6m/PRfw4v0039Mz+JZ+W6/bdf+TP+0351Q/ra/Zq/E1fjIv6FX90L8XF+GK/auf6/PyMX/Mr/WV/2M/jDfgLP4o3/Ub+fF/fy/E9f2uvz037kL9gN+ks/XDf5Wv4k36Ab80F/Oc/cWfxBv1zn+ib9RQ//V3xD5nBv/QX5Sz/qN/gS/D9fl5vzC37Cr+3N/v1X5Knuev33X6cz+/1/FS/6jfvvPwVn9YQs+N/96/AWfn0v3Jn/KL9OZ/AAAjeiP5+XM/6DfyAAGTn9Rb+YV+ja//WfyLP3Zn8ir891/UW/6LfxRv61D58b/P1/tM/1mfiSv9A391SsPN/S6/EWf5Bv6lX6rr9/N+G6/gLflpv6C347r9fc+hNzoTfglv803+Bb/cF/wm/Qmf/4vzOu4DvMXN/CK/8Vfucvxzn8F19x3mmK/wjfqkv2I3+Yz+v1+Zm/1lf2Ve3Jn6Tz/Ll+HM/Ndfwov3Zn+OL/GZ+By/Qmf3hv1nn/Ez8YN+vLU7Y39vW7UX6zz+FF+5M/MFfsNvzZX6Zr/65+WC/uVf5K8zY35Sr/eZ+PC/V+fqpv4E34br8pN+n6/Rrft+vwFn4Kb/wl+HK/1uvibN27pamzdtl/OM/HOf9jPw/X9bb/jV/22/fuf9zP1jn4SL/kN/SMnSG7nZvyqX+qz/R5+2W/juf1hv8fX8jz/qZ++8/j+f80v/xn43b+aZ+5M/RJf9jP31n75b8xZ+L6/ipfusv1dn603NPSWPVrO85h+v6/n85z8bN+VG/Tef18vxjX/Ab91F+fG/Mmfj8vyqX65z8RZ+/c/TNfrmH6A+egb8cbvYefDtf8yv33X8zr+Lt+4s/y7ftnP1g+dXb/IF/cs/y+f3WE/C36Ez+It/qs/yLfgLPwa39fr/QN/m9f1MXxyP8NH/61eUPm56/GHfttvxg3+718vr221bODfmCv2jX7Ub9AN+QG/Kbfmtv65n/KL+wd/12/JJfhvP2zn8qb/y1+uc/kAARvPzZn6uz+lN/t2/6mfvdv61n76z/QN+po/VE34Zizg35JL8Bt/LG/FPP95Gzg387b9Q5+AG/6jfkBv6u386b/mV+Wy/mdfi4vzQX5mb+RN+Va/1lfsbPw3X79z9J5/CG/wWf+Tv6y36bb9yF+hm/7OfkZvxU38bb/eZ+G6/XTfyAAN5X+6z8FZ+Oy//Gf7gv4UX7Mz8pZ+fm/qRftTv7Pn4Dr85t+HsPi0fzA3ykVbk7+d5+Hq/Cnf6jv1SX+U79oN/TAA8zfr8v6Vn6Q78od+BM/d7fg0vzXX4M79Gd+Zm/pnf4wv153/M7+HF/LO/pTf0Zv7Z36Cb9yF+HO/Tnf3yv653/c78pZ/PO/RXfhuvz3X+Kz+tV+ja/0Df2nn0vD/uYsM8/GnzDdfxLv0i3/or8wl+2y/wOf5pv95n8Wb+BV/WM/KzftZvxiX50z9e5+gG/qmf8tvywX87i84AARi/YxflJv4UX+lr9yN+XCL/DftJvzAX53b+YV+d2/++fq7PzPn7Mz/C1+zM/yufg7v8Zn9nxuZt/um/Gzfy7d2Tn7A79kF+dS/srfp/P4W35Or+RF/Vi/wIztyv1eX9nxs0F/3y/n5fnJv953+gb+24PnYAV2f1Av/rn+Cz8A5+9u/wefrrP+5n7u7/iZ+lu/LVfoTP7C37S79yF++6/H7fyLPyVn4Uz9QV+d2/8zD1xv5p36Er+wt+EXrZXfyqv1D3+Ir8w9+4e/V2j16v9Zn66b9vV+Tq/HGf6Hv5TX9h79hV+6u/Wef3jP+4394z+RZ+4s/xLf7jPzGX9e78KZ+fc/Dlftdv+pn+Tr8rd/u9X4L5/PB/3q/VyegGXSq/m97iKv6Zn5uz8pZ/bC/4vfghL6iHf+m+ME3wQ7WjfgHvxZn/Xw+xG+8Q7HBN//F4kb+Oj+dsWNi/6Wf+zP4QZfA79Lt/oW/jufq6P9Vn6iz9OZ+a8/+ufq3v8Fn6JL9GI+6QAnOftLP3Lz7xr+M5+2c/6df8o37nn/zz/Q6PXq/lFf3Cv/hp7A1tb5/JC/zxFq8v6erYDb895P7q/xmfjMv2WX5sL8+N+pK/LlfnCv8Jn+BL9B9+Oa/oxv6XPz1n+Yz/MZ+RG/1Wf5A5Lxn56z92Z+yc/Zmfrhv1Pn90L93FWXi/wAAYWv6LX9Or/nV+PC/1ufgLPxkX+gr945/GK/W3f/HPxNX/Dz9x9+Ge/mxfjLP79H+dgCQN/jM//xf4pHzyj5yJt6se8ib++fzQ6/4S6kIfAx+7efpujgQj++rZSL9pF+Mi/PhfyGP2kZfn79aZ+Mi/Wjf9vv3k38778G9+7M/mBT8PPzDH4hN/t628e/BWf7LP7ln/yz9FZ/Ss/vPfuzP8rX6pr9G1/5S/aufyLP8Zn4ir9TN/hM/51f6rP14Q4wgD9Z/9c/ohfilvwSX8/L8yZ/I8/GrfiKv713+j7+2F/98/v3flCPE1n6Nz/H9/IK/Jefo3P87n9sz8BZ/IAAAA/uzPzAP+Vr9DF+cK/lWf38v/7z91z9G5+nM/3Hf70vygP8gADJl+iS/FLfnev0nn85r9lF+qs/zxFv3P0Fn7iz/85/dC/R9fhuv4ln8AADz6GB36eb9e5+ue/Kmfr0v2/3+BL875/Du/22fugf3b3+xb9jF+vS/IA/0sv+WX677+G9+UY/vKP5Sq7wP9Wb9m1/Iq/b/fj5LzMQ+P78kV/g6/WFf0Pv3Kj54ufKD/JiHEVfpUt96l7lJswD+F2/wmfpbv6RX+Tz/qF/mFvyzgXAf2oX5sz9wD/cG/n5f89v0oP6Nz827Xvj1GY8Ywf2dX9Ar9iLeXPrDdfvuv9f36Xr+VZ+4dU5y4NQfzD3+Dz8yl+69rvg/8nP/4P8Sz+BD+dDraA/tzP9xn/6z+AAAm9D8b91F/0a/1mfyAAF/35/78c5+4s/cffjrP9vn53L/JXnoh/gQ/vH8zAP/yH8JF+n2/wJf7Uv2UX4PN+RD/+6/5Q/ncv1B369L/pN+q8/zQ/m/v3I36hIfFD+5G/pQ/iqv0Vn4aH+VD/q8/N3fmof1Et+dgB1D+uh/QQ/k221kP9/789d+vs/nVfuLP45396H+LN/jM/LBfsIf4TH6QL/tD+DB/BA/+Qf/wP+cH859+l0fVrANQf+YP6wr/2D/E+fcf55Qfz6ZeP7//F/7B/ygABAf1uX/uEgGKAwzLCw/5zv5tn9MAARV+UB/x/f0/vytn8Kz9TLe+j7+kdlyv/YP/1b9tt/1B/ZFf+Yf8oAHGH9xD/eh//w/zwvwFn/sH/3D/0AA+g/8Yf0Mda2H/QD/eh/Lxf+wfxrX/Uz8FZ/oG/B+nt/v8f3/579Qd/dh/BA/94f4sP5h7+ND/Am/TQ/vfPwfn6pj+TSWY6/uhf2Sv/HX/mr8fZ+Dm/Fpf5bP4OX5yz/Dl/vO/86X8jy7oP8eyIwD+OB/Wg/9dL3lBfGH9Ux3j+/Llf3bv+Zn7Sz8xZ/IAAAWf1jP2Zn7z78F9+Gc/KWflAf2xj8RH+f/m8R/axflLP8VX4iz+RZ/AR/Y7fqSv8HX4nb/lF+NB/UmfwovwP35EtfNW/OzLKJ7t6v8Hn/6z/Vd/YW/gjf0kf0bX8gy/lU2WynMq3pSlxGR+lUCxZ+1MfACd4Si8leY+H+1t+hM/9bfgof3f37SL/LN/Vm/qlfxLPx935gL+fl+2T3OLg3nvxB37az+WV/WO/lTfyyl5gnfVMfQN/WY/CKf9mP9OR5dW/Sa2dm/xZfq4vyln/Uz9eF+Ri/7lfqSv5+U58L991/UW/T7flLvxd3+5j98x+6QAtA/nLPwwP6Pr98d+rs/O7fz4f+f37cr8+N/oC/nnfj7P25n8yz8h5+7u/sWf3jPywX+KL+CZ+gs/GNf6rP/lX/atf5rehY/Ymfhnv0nn8z7/WZ/2M/uhf6Ev43n/Vb+/l+a6/dmf9dv22P/R7+b1WWO/7Of9jv6gX+xr/o02MG/Dhnsyy6p3/O78pZ+SS/HHfnBvwJX+ab83Z+m8/6rfshv1f3/or8iF/Ps/02P81v+XX5Kz+5V+3rfQ63p067C35Sb+Il/bu/j+f+rv4GP7v79Vd+Us/u2P5Iz+uP/Vb/zd+rs/cWfjnP/1n4NH9UD+SbfSdVs7v+N341z8Yt+gc/bZftjv0Fn9Uz8q9/UC/0Dfyoz2ZZdV7/WV+uG/uxfr8v9Zn6uz/o5+FM/pjflKvx5n8+L8Dd/ox/Rffosf2p34Xb9/1+6J/zhf6yv1o3/Ub/ed+7s/SWf58f3Zn5rr9Xj+Wy//E/3Lvz53+Ab9Z5/We/iQ/7/v0YX94z/bl+Oc/vPftnP6xn7NL9ll+Jx/HWfxMf8rn+mx+Dd+wx/WE/wtv8JP6In9mZ+/x/HNr3nv8b34Tz/cT/rK/Djf17P3z3/ez+bZ/pR/so/3HP4Zn6Ez9k5+Zs/H5fr8vyqX4uL9aN+5bXgHfkfn56dnRr9eN+fC/B9fwO3wE5+pAuK4/3gAdQ/mTPyqX94z82Z+uc/DdftXP7Tn7u790d/NR/O7fsYv8236Bz/qN/q+/F1fuvvxmP96o9m4+6QAxTfyIv0WP+4z+cZ/FW/Gefv3P7136Eb8iN+As/EbfiRv5+X+kb9CZ/ZG/jnf6/PzAX7Cr+yF+Ss/BWf99v3IX6D78pN+tO/wWfgav4ln8Un/bj/12/vlf6Nv5F340b/GT/WB/Lbf0Dv+Tn+LH9xZ/Eq/cU/jqf11P6Hr9yF+/+/+3fkWvzZn5+r/GZ+mu/O2tr6jyGBbNL/CZ/ss/ddfwKvxVP61j9iZ+Em/rk/s6f2lW/Zy/IM2Ss/FU/lKf2m39ZH9CZ/AAApejXF+JK/sLf9af9FX/1z82Z+MS/KWfvKf6jR+1M/DvmR6/wNfoCv7C34Qn8JT/Vp/hxfz1v49P4Qn8hT/ktvRsfkMC1w38un/3T/uM/tA/sKvyk3+On8i5+wm//rftWv3I3+Yz9T5/3K/HWf4LP8238Fz/9T/2B/HWf3rvz4X/y7/Wd+xm/kk/kaf+pn5Lz/uZ/uC/DzfurvyX37Zz9UD/Gp/Ddfqmf/136Ez/yV+iC/h7fqJvxzn7Gz8ED+2c/Sef+Qvxzn76n8xZ+Zm/FM/uTP49P4Sz8U1+TO/gTfsWfxLP8A7+p5ehILEHf0mv6jP79z+PT/02/4vftbb7CFTeLsUT/hJ/Ejv2Bl6Ze8Ct7yd/Ys/3Bf3fv/g6/uedUt+0W/V1fxRv3xP6Ab+DT+hq/3U/w4v33X/5b/kt+ch/57fjMf9uxfD4vyd/Pu/Zmfh+v0nH4lL8G5/32/ANfhMv6PX5Br/XV+hHX7wAKlvwJn6Ar9SV/o2/Xhft4f1nn4gH/1M21ILCc/iLPwbn67j8e8X5O/6jftrP0IP42n+i1/Ci/Vjrn7v2vH53YtUt+d4/gtbnBv/bP6lH+E3WyG/3s/ylv2FX+fj9yP2laHJjfjwv6z36Ez/GT/eCfb/fgQn3E39Sz9SD/ti/9Ff3Yv/yX5EJ8uV+di/z5f9TP45P7Mz+QAB5R/hffoRv4AP9cz9c5/Ox/qNfrWv+An9UJte9+ri/r2f4gvzAV+3n815+0C/mlnkMCyHP/wT93XuoB/m9fvgf56X6Pn+stXlR/VCfyYv6GP+G79Ul/WM/bOfgif7YT5yfuBvPgR/Fg/+wfwFn5pz+YD+5G/EVf7efy7t5eL+RV+v5/mg/rgf77n88J97V/Es/i0/rnPxp3/4z/v5x+e/yBfgLPx73+ET/OwAH6/rjfgLP2MX7Po8RV/VE/7GfxJv0vX9nz+FF/wm/QC/8uh6AP5sL9mJ+6QAp/fiSvxVn6Ez87Z+Us//c/lQr+c6/A7+mD/iK/Rw/8ivyoAD0n9Pz+ZR/r8/7jP6pn6vL/VE/zq/uhf/+f5wv8fn8rN+eF/BE/gRfxu88wX/YL/B6HzxfgsfwIL6Fr+bT/0h/O+f7jP4AAGj0LPP8lP/Uz8pN+9m/qVfn7P9A35aT+O9/8a/1efxMf0PP53799J+cEXwM/+iv1xX+AAACV/Xs/+vf+zP9339WJ/My215/hWf5Mf8Zn/ar8JZ/gAAQi/usv/yX6SK/m0XXF/Bjfo8fwkX5iz+il+zM/wAARlv2/n9GT/PWPvx/S/fp13/hLdpH/0j/w+/oDboOCx0X7Pr/aj/fXfWhfnQv7oX+bb8vz+35/9LLh1+x0X+5n+eF+wDvBgv6h60Uv9db+2Z/1DvPrr2A75HBY6L/JL+03f1Nfl+fy4X8uz8yZ/2c/VzfnEv+CX+QQt+5+Oc/jef9xf9DZ+NztaOOOi/3nfyKvxUv8OL88z/TM/O1fwIX+8AHqX/Mj/OR/ONnppf1WX9aX/tL+A2/Iy/lJv0j36/b8RZ+7u/trf/mf2Zn8Qn9CZ+qh/J1fzwv03X+8z9aN+yc/0Dfwd3zMv+yX/FL+ql/9j1gTP7xn8wr/2Z+NAAKHftqfzkv4R7/k5+wF/5FfqTv1nn+bn9IL+06/xo/1hf8Zn9Un8yj/eC/B7vrJf40X7eX/jL/jl/vM/6pfyoAHuX+PL+7M/zy/1qf7C39V7+YF+zM/3Bfhuv58X91H8SV/jp/5RfxnPxzn6ob8FZ+5M/zc/+Sv4nn5Kz8J1+rs/43f6pf/188o78xZ+el/fS/4Jf+m36HL8dt/JJ/kVf+lf+4v92X+Cz+4V//Gfh5f5sX4g9+nJ+5q7Z3f1zP68X5OL/IIWdx/NVfh0v2dX+jz+sIW16/cWfojv2O39Q98B8W/l/KC/1Zf5JP7xH/WL+LJ/Qc/+Zh8lX6/z9fl/mR/6VfmXv6IX4ResAr+hM/SQ/x/Pw3X92X9VT/WJ/33f5Wf+LP56X/QN+EhfoHrgNv1G35Jn8fl/1M/dE/r0v/vn9LH8BZ+um/DM/kxv/Mw8KL9A9/Hs/CL14PPwFn4pb/Kr+bM/Sbfo5f5Mv+sz/fF/XM/DFf9jP3KP80n+q1/ls/wmf2efzW37P7+Bj/yh/Abf4Vf65n+Mz/bL+5C/1lfv3P/rn4Cz/Ct/wkLBM/omf9G3/Mr9Cr+d2/ea/8Uf2Zn7kz+C5/jM/U+fwXPx/X9XJ8163xu/xmfq7P+IX4Eb/WL/kF/Nmf5Af3IX/2X+55/1M/3BfgNvyk37O7+JL+46/FK/3xf/Mw/+r9WZ/v2/GOfj4vzaIFx7+/V+FG/3xf+tf5/n+Fb+Yr/6K/bA/8nPxMv5Wz9k5+pK/Xpfgtv4cX6879YF+FM/bGfuTPw6v7r1vTtOSq/BWf38v5rn6jH8eT/nV/bbf6Nv/UX+yX9Mr/2R/AWf4/v6r377r/3F+j1/6c/yAAG5X5sn/aL/Bc/Z3f0mvxZP669+a83xV/Yo/vbv43n9ez/VZ/mJ/c+f7UfwG39/L/H9/Dp/fM/lAv2TX6ravvJ/29bTM/tzP0fX+7H+/V+zu/Llf38v3rn6wX/od+22/+o/zTP4aP6Ez9jr+s2/sdftvP82X5in+R5+O2/FA/rmv0Jn4IH/w9/Di/hnf4zv5nX94z9sb+3K/HHf35f79X8r7/A5/nc/Nffy6vzAX8X7/Mj+fG/fjf5pv2mv4ir/Iz++M/bG/mcf5976+T+CMfX1/eo/rPPxGv7yF+CF/12/Mmfoov5Fn/1z/oVfu3Hok/uZf5JP8nX+sb/gG/iWf4FfywX8fz8Mz/lB/v+l+qv7oX9x7+9D+DJ/Pq/pTP1nn5hb805/Ci/Ea/4nv+0+4Yq+4++pa/MPfgNvxx38BT8+jXzm/2o/jvvwFn/+H/+t/mR/WTnkFP83/f1Y/M+/3pbrPv+fW525aI+tgeOhhfpxLmn13Wd6RT9NU/+ffqKf0pBzML5ac/4p/Rffiwvh1j2FV9mF+tOeb9b0vv/pzyu2/T+c2r+7O/chfs7v8I39Eb+01/mM/9U/qRvzI37TX8vL/YW/infmjv5o38Cb9HzWZp/AWf2BfyrP7cn8zt/jZvXc/hiv4OP7sz8Kz+lR/NU/uqfwVn8kb+NT/JG/Wq/5F90D09W4urD/HU/dIANyv4B24ub/Qj+G/XizftnP1Mv5+c/qN+wvr8ff4efxGn8Hn8kl+N3nXBflgv6xn5NX/odvMvrLF3pAv8+X8Rz+Iufe+/ihfyyv3chcf+e4j/eh/1RfotP8F45LT+Kz+dm/xy/0Gv1TT5Hcp85/Bc/TmfyEX2AC9UPNgN+OB/nzfzpf14I/Nz+S5+zu/m2fnNv9Br9er9Z5+8G/7Wfghv0Q362r+HZ/cd/FaLijq1JX4cn/w1eyrI5TCGbP8Tv72z9LZ/Ds/AmftGrxQC4o4dY1fB0/6C/7Lv4Q3+o39Z5/5O/WHf0IB9q54XH8dt+wu/hTf6HPx5P9cu9ffXyavERfqIvzk37t6cOL+ti/UHH9bi713/DffCAunh/vlf5yf1Jn+S7/aj/o2/YxfyCq8AP44z+0r+g5/XC/8Rf3kv74X9Xl/5N/Wef/xv1Vn7XT9o8Xj/fegL0/39un6p+vvAANa/uWf+af8LX/hz+l9/afrLJt3MvzYX8Gz/qZ+Ys/vIvqsvzbP/MNtVl/Gc/jef/kv1d5arL/ZZ/ks/mhfyPP4TX6sNtVl/WO/qVf4rP1dn8E39hl+iuHwe/kWv4nX+f6eO9+XC/bZfzLPw1X4VF/OwAqy//WfnrP74X7U488/Xo9/Q2fmnPyA38Sr9F0+qy/Tmfsvf5JX5pz/7t/tRfVZf5jP63v7QL+tcOqy/cWfwAAP3oaBfzni0nv/5z9rF+jW/N+f6rtwAfeD39uZ/lh/WOf1TP+3T8G4fA3frRfbnVh2f0w37jX96L/Tl/rK/iDf6Lv/hL/Pr+Yx/wO+EZfxg37tF+K5+Gm/ALfz1vy5n4bn9m/Xxa/XVfyKv/I3+B79EB/Rq/bmfvqv5AABLz/R5/qs/Dm/p2v9DX+2Bffp/j33a3blXiz/X/cz9P7+X9/cWft/f6j39nn/P7/oR/gs/0MX32Zb7H/xF+OF/Ndf8Tf5AAFyr9jZ+1c/W7fxnP+j3+gb95ueXK/5C/38v2Af8w3/HT+F8/QffoD99Qv5Kz+0L/bxGY2fmRf8zn9kD8iCv5A/8t37z8tXv4Y79CZ/mV/eQ/2zP7cP87L8Dj+Q8/cYvqsvwdx/iL+NF/1C/z4twK3khP/6z9n5+1c/fEgVEN+oH5trtat+rd/1mf3g/yav6WX9hV+HK/O9Xj7j9oH6+4/Yfupk/hgrmcBwR+5IZ8YZ/LA/W4DqXj+YH4oz86H+7BX1gf1cB07x4sD8NdXdD/jH7qdz3R+8oz9GCvhQX6MqcRu6YYf8a8bi/GM/A3VrRn+8AEAACZvYAABvRwAAMSNgAABjrRM/dIAQAAD7jgAADB7IAAgAAWUXAAAJUOAAAOpcAAA6HZAAC8P9+H+3+PgAAChmoj/8R/nw//4f8ke90gBAAAIBOAAAWmcgACAAACQcAAC7C/4z6KP+QABAAAgGOAABb0cAAALo5AAEAAAps4AAAAawAABqrGR/yCB5dRcAAApc4AABCeiI/5AAEAAAu44AAE3mlgR4AAAzxwAAD7tgAAFoaWj/RAlwAAK89gAAGoG3HvgAAFwXAAAvZ2AAAXnsAAA7LXEf75Is9H/AAAH92AAABycgAAzH+Gg/dIARY/6sf7iP+6wmtj/ux//Y/0YE89OxHH+1j/4R/6I/3sf9mP95PeFhXgAAPVHAAAPONxH/6j/gAADgnAAAJGMtH/xBPzsAQAABedkAAQAACUtcR/pY/+Mf7Yl+enZAT/rx/94/98f9+P9seeQT/kAAME/y0f+cBuAABagcAAA4E14I4iP+AAABhcCP/3H/mj/Inn7E/7if4SP+/H/8yL+R/yAAIAAEmBwAAIMDqwf52AIAAAYewAAL015J/3Xq4AABEZwAAA1jJJ/+/tnSADJP+AABXWo5P9BCf3gA+R/hXP3SAEAAAnQ4Kf5ee9LCXAAAMMtin/Pnvf4LwAAAgT0p/v578H1cAAAAzYAAErZyAAIAAGg6lo/50DcAAARvYAABolwAAKFdgAAEeaUXvkR/1I/4AAFQJwAADQd4kz+o/4AAFLxwAAAnjgAAGs7VgngAABv7AAAjhONH/AAAMTX3t3AAApi2AAAAOq9P/N/u6QAgAAFTXAAALQOAABIWdsHeAAAx0cAAAy418H9DP+AAAdFbGE+AABJzqVP+cQvZT/5ef52AIAAB6BwAAIA1gAAVDXeWvvp/u0/5AAEAAA2Cy0f447u+n/AAALPWj5/3wri5t6K29q96agfCUWGj/RIf94AIAAATB30/4AAApR/qNyEf9M7uAAAVeZWP+WQvAAAieMBn/8pnzsAJY/4AAFbFvrz8Wf+HP+ch/AAAJ52sn+Sz/w5/x3q4AAAumpk/0KH48ouAABJ5cAACRq9Kf6lXPbH/AAAH7WAAAa8b3P+JvfnYAgAABVqkj/0p/mkR4AAHDR4c/6qDe5P/Dn/BqKgAAHzHAAAvVOLTP6j/gAAFrHAAADs2ojuvj/gAAD07Xz/TBf52AHOf8gAD3n/QWfgAAFxrAAAqbP1H/aoXgAACDHAAABEPQX+pRPNI794AIAABnOoM/4hf40L/OwAJT/uJ/no/4AABDO2d787ACpP8FH/Cj/Ex/utr5X5c6P8RH+qj/gAAHEHIAA0x/wAAJVjgAADBbAAAE6Oxn+/C/70tii/5AAAZP9hF/bRHHF/vc/w6f5aP/ajvAAAEB09H+vNO+o77z8n0f4HP9ZF/AAAHaOiX//RHf73umN8Kf8AAA7Q4AABAayAAIAAEQ1wAAKOjlRf7Vq5Mf4xP8xiOr1raJ/wAAJVdkAAGM/62E7wv/bte8L/kAAQAAKHjgAAUg6+i/XMzrV70euELEdZDW9z/gAAT47IAAgAAXYHAAAjIP0fe3L/kAAQAAC6rel/pWB/lbfeACAABXmr6P+QAABz/Gl/u0//x9/eAB8X+Vj/iJ/lo/2RK6E3PDH+ej/gAAGD7AAAN+0On+aj/TZ/34v5B1/eACpX/Mr/2V/mi/2if8AAAONcmH/vluFX+sr/kAAbU/xlf6+P+AAAUpsgACAABESe3E9VX+HT/kAAQAAHwzAl/sWF1GhaDP+AAAXLpqv91X/Gr/LV/5SV5af+QieUn+lz/kAAMa/xyX8zIqNH/Jr/01/gUv56dhfP9TX+rT/sX352AH+f+fP8rX+k/PQYHwAABhDgAAQcm3j/zV/wAAJqjW1/1OB7nA52v/rn/Dr/TV/k6/wtf9K+9Bs/3gAF1/w6/4AABDe2k/9aX4E6/7X/nr/r1/7r77ArcAAAxE6yf+CP9ZH+o2fzsASk/40f4Bv8wK/Rz/vh/yAAIAAAqu/s/wP59Cv+AAACcbQV+AAASccAAC/NWSf6Iv9FH/Ib/gAAF9Hfj/hZfuk//Sf4pP+Un/iL/2N/lo//As8AAAyi4AAAnOyAAFkf8AAAaa9JO7LkuAAAcGsAAAe45AADav8Vs/G5LQrcNm/6D9/XL/OwBAAAD8upH/pj/PR/wAABGTkAAQAACCTPR/lo/52z8Ct783/aL/wt/yAAIAABKF9k/weX/F3Omn/IAAT1/p0/3/5+dgCmn/AAAPp2QABAAAF3Nk3+ej/gAACEaaj/gAABprAAAlqvDh/DFfLP3nW//rf8Nv8m3/IAAgAAF6aBL/Y4f6484AAEHO4s/5AAB2v9mn/8T/E4fmV8B7f4D8uAAAQ8cAAAFPQlf+9v++3+34HzsAAO/yhf8AAAnLRMf8ak9R3/Pb/d4jEO/wlf9jv8CX/Lh7Ht/437wHf+Tv+h3+D2fid/3W/9sf59v+7H/AAAUqOAAANUcAACtQ4AAAmmwAACdNfiv2BF3vJbJP/h3+Wj/241sk/4AAA7lwAAIuTkN/wAAKETgAAGY6E/v/Sf7mV+8AEAAAF44AAAg6gaT6Pf4Cv9BX+OYbUN/wAAAotkAAUe/5uH9nv/z3+R7/k9/4pX6wi49P+KX/AAAFC2VK/h3zgt/lY/4AABQeyAAPDf+2P86V+9YbzsAQAACCrgl/wO/4AAA1x6G/4AAAOWyAAIAABSxwAADGDxF/7QL2om/ekcX3+r7/t9/qG/w/f5fv+QAB0T/NiV88P+8AAov/UX/Cb/kAAQAAAc1gAAF07/D/R/3pxKw0f8AAA4LZAAEAAAioz0f8AAA6iyZf9Yv+mK3ioPlmFji/4AABBxsB/6g/7Qf+AAARceIv+NH/PD/kAATw/74f5yv/1H/db/jR/0q/4AAAyG0wAMg/8AAAZ7bff9Cv90X/IAAgAAAAmbT/z9/sB/21f91v+AAASQcAAAac40f8AAAcg4/f+uV/3h/JpL+D/wh/+g/9If9FH/yH/lD/yG/w0f/Ef+SP/Gq/tavkB/10f8gACAAAIWd8P9Bn/QVf7wAbC/3Ef9GP9In+GOfHK5s4/5AAFMf/gn+skXdIAau/7+f96P+4X/Dr/PD/lav4lLeuP9xH+Lj/l8rukAIAABA1g8/5AAGwv81H+eH/T8r+x/44/+cf82n+glbON/v8P5UeYRv+QAB6j/gAAUqaXNOkAAAO/95f4zneAABrprhP+qrPswnMl/t+/3PE7hr86rPnYAgAADXnAAACouAAACOfKP8VH/Dr/ER/4s/4AABMOiO/yNNcAACqa6mf72TfOwAIL/z9/jIH40/+AACtP/dH/+j/pzn4AABUuwAAC5NnqzwAACJjfd/2oH97f/OQfCn/Nz/kAAQAABezbT/wWv9Xf8Uv+QABJn/zUXtq/5AAAdP+AABpQcVr90gBAAAlD2QAA07/2tf/Rarkf/6v+Wyfq7/nt/mG/8oq8AAC4PYAAAFx6G/7Df/UVfEnnAAABBO3P+Xa/+KL52ACE/5fv8x3+aj/lp/xS//Lf+bv8Jq/AreTz/mG/5AAF7v8R3+kUHsz/j4H9sf6Vv8jrPAH//IXkO/4AAEpWyAAIAAALF30/15b8swsb3+I7/w8HtE/4AABzZ5dZ/U/6Zv851+2U3m6zuY/4AAFrOpR/5Sf8AAAcawOf7ov98pvNH/v9/yK/xpf6sf90X+ej/3T/oM/4AAEoWmu/9YAEAAAjNYAAFjBxo/4pf8AAAFNVXf8AAAydZ3X765/DvmYn/8T/xJ/x7f91v/eX/AAABqte3+TL/Vd/6u//PJ77V+AIeY9LEr/hJ/0k/+LP8yv+vL/8r/na/4q/5rv94oB+r/zL/o2/4AABZuyAAIAAF8Fjl/4er7tTeBW94b/gAACrXGj/Jd/m5/9hf6sv/Wv+/BvloP95G1Rf46P8xH/AAAAb2AAAGRcGv+QAAvj/ux/wAAN1dgAACNWlX/P6vxSP87AEAAASfZAAAov+63/TH/gAAHoaFX/kZ/qN/96g9cVvuP+8T/Yb/yN/+6/+PdtqR/nYAn5/no//6/91v+TH/yX/QZ/p1/5AAAjf8Zv/K03xYP3mSxpf5iP8rH/Gr/Xd/ya/6pf8AAAqoxW/9BP/kv+GL/gAAAe64j/Xh+b1/5AAEAADwPZAACxP/TH/6j/kAAYp/yU/91v+AABfcdIf/6v/03/+b/lcH4dz9gi/OwBAAAHmO+v//H/gR/0h/7Vf+Df8DX/fD/gAAFwmp3/pT/yd/0qf5yP/sv/lX/kAAHl/5AAEAAAjk5uf9lf9Cv/H7/MTftcH3SAE0v+QAAxH/gAADUHSH/IL/ga/zEf8AAA3c9w/94f81H/AAAEeONX+9z/gAAHs7mX/77/r9/7ff8g/+HX/z3/l7/6wAPe/8aP+Cv/K7/Ir/+lJwB/6A/98P/IAAYH/yAAJB/9If/H3/Gj/gAAEg6Br/vj/yAAGlf+GP+sn+uH/kAAQAALcLpD/1J/8g/8AAA/ExI//JXe3KPulPk0loh/6Q/7av80P/IAAsr/xd/0q/+Ob+A7OeP/NF/rj/wA/7RP/8f+DX/td/iyP/qp4lyuQYOGb/P9/wAAImjzL/nj/3Uf/qP9If/r3/vL/gV/x5p2ff8Qt/uM3zsAZl/2cf8av/9X/IAAxb/0t/5AAEAAA3y4AAAtVxo/xA/9w//Ov/IAAgAAYJrIAAgAATBqo3/Vj/pY/6m/8AAAyrZAAH6v+kP/AAAFTO+v/Gj/hp/wAALodkAAQR/z7f8AAAWgww/90/9Pr30sXtr5yx/wE/5ov9+f+9j/gAAG1q9X/Jl/pi/4J/65b/vc/3gAaJ/0K/0g/+4LhgP+Uv/nx/hq/5+f6Wf+AAAKZbzf9Xv+mP/z9/yd/4Mf9Df8MX/GH/pgAB1/4k/77Q9mf/db/1n/2z//Z/8gADF3+bn/jn/3E//q/5A/+1v/Ja/Qm5wAAJ9NgAAA6Hb7/Aj/ll/5AAHNv8cv/NP/fL/tD/yK/6db+TSXd0nCn/lB//I/9Zv/pX+sr/YD/9E/0t/+Ff/Bt+z0nnb/oM/wrf8av/BH+Vj/iz/5nQIWf88P+AAAfUbm/8Lf+lL/ql/zS/8y/8AAAifYAAB01ry/2y//zf/1ZvAefsWNpm//6/8AADsjTUf8AAAPo6bf4Yv8eacev/xd/qN/8lecAAADPQTf+mP+AABbVZjv/Mv+eH/DF/ku/0q/57b/gw+wef2x/wAAAtjVb/4u/41f+wv+QABcz/gAAXaHrL/+b/4Aq5mp7OP+63/AAAvQNWX+Mv/S7/q9/ww/6av81H+Fn/kAARS/4af8gACNH/AAAt0OKX+vj/3oNmch9hf5Nf/mv+rX/V7/wAADqzSp/ks/74f8av/iZOKf/yr/vPX5jF8FrenH+dj/dP/qy/1W/5rf8Lf/dYTgAADm7AAAqT3Mv+HX/BP//r/65/5G//Yd+1YfdIAGn/7E/++P/1X/yv/wp/qr/yN/8QOd9mXDf/Dn/toNm6/4V/9xf/mYv8Gj99/96/5qP+AABECd5f82//Kv/1X/6wAIAAAzlno/9sf91v+AAAJgZiP8QP/AAAFnPdf/2f/nP//y/0sf9Y//Y8+99fNelmb/7Vf5Df/Vv/g//gcPukAGZ/+Dv89H/KL/QH/jX/8H/8gADa/+0T/k7/m9/wg/+rv99X/TAAUV/xl/6Q/8AADB4yXf9C/+QAAsP/PD/nD/zw//8v+QAAWP/6j/mTvxgb59i9j4uC//Rf/wJ/zaf9L//uf+KL/k7/s1/5AAEAAAOC5AAFKv8m/+Fv/Ff/qv/9y/8gAA1/+6//9L/xv/5AABb/+9f+2//Hf/4D/0B/57/99//pDfcWjtaP+du8Z5+AAAB2saP+AAANuqov+NX+XCLgAAVBqbL/iT/7Y/9r/8gABJH/Jr/EX/voi8y/8+/9Bn+kH/UuDoS9i63+9F/t1/6cv+E3/k5/5L/+7v/hrh4Gf+kAAL4f5xP+h1/kzf49/+QZ/j0f5RH+qx/rff4uEWqt/h8/4//+kAAC2f6Un+gAAAQtCr/sN/7Lv+E2ju8ABcP+gAADbrjV/v5f5jf+sAAXE/6kP+H3/l9/6NH+jV/o5/6kP+z//oAAAR65AACAAAMbU2n+kAACsf4LH+C3/vQAGnf+2z/rr/41H+Sp/v5f73/+8zDsy/4b3+vp/oc9akP+gAABwzED/v5f4n/+JPfihf6AAAvqO9H+4X/maf6kP+gAAAt10Z/lUf5c/+mAAc/f4o/+kAAIAAA0Y/vf5QP+Hp/pAADxn+il/uj/69f+9V/rX/6mAA5AAR5rZvl4NR/g9N6qvmPR/oAAARQ3wj663+xgAcR/5Mf+il/ow/7CI+Svfgr35iI+IiPnEf6AAAMqO+ABqf/ur34c8+IM3hCVYp3+T9/oYAE3P+qn/g0f6M/+Dv/ra+aqf+lj/vT/40ABNz/oAADnNZAAB4/+BAATBf5mn+bv/mTN5R5uNWFkUf6EGWmQAVZf5XR+0x/nmf4O9+7wANXf49H+yD/oAAA1XXc/7cGWWJ/rj/4Hq2CZ/poTbSn++b5nxf6k3+fs5qaf6nq2XN/pYTZFH+SD/oaf6pf+R9/tsf4R3+mW1oAAA5y7c/7IHI/r/sI/6QAA2z/iff6Tl2RR/ok/6Gn+uZ/iIAFiABWr/rrf4NH+wAABpf7Fv+UR/vQQ6Qv+DN/sUj6X3+gd/pAAATAB5SPoAACfY5AAAp3+mhLsJf40f+Fn/gD/7W8+LZ/ioAAVf+gAALtN1wAal/6tI+dj/g4/43ABDxvo7z50gAHF/hJf7L9+76tmMAHQ3+in/pAADggBCyPlDf6Kf+B/fsOc44fmib/pAACAAAdGO+H+pH/pAAAU3+rJ/t0f6AAABOs9H+DD/pAAARH+Yf/hEf773+ut/oAAAgTVA/52f+Kx/iw/57n+9D/kw/44ABvwAcAAF0X+Ed/lnu6eH+GV/pAACyn+pD/mD/4kf+A1/iS/62f+pgAHtf75H+pD/nxf5YgB+9/nEf60gB9IAan/6Ix+bMFiS/6QAAgAACNrPAAXSAFqP+1gACM/4MX+A1/oAADJjS8f4ygBRhNoAACAy3igClH+gAACxLcR/sg/7mv+gAAM81hIAZAACAAAKs2AAAKH2QAAJL/j3/623+KQAV7f5c/+RAAVAAE6vm8oAaO/5SgBSj/rcAGC3+qR/vEAH7P+fxrtqxZ2gBDoAcS/6QAAgAAAhtjV/j2qS63+gAADBNGV/jRf6q3+4z/toP44fmHbGESAE/EucYAQmAFe3+mgAcC/493+bIAeHz4sLe7wABTf7bH+SZ/vkAHcgBYYAQyAE27WkYAdGAGPZE8t/pmAGQAAIz/qqAGR8+Oh1nWAGQAAVIAX1f40X+gAADFrWR/o0f4DX+2Z/oaf663+aJ/i5pwZf+7oAbKp7XZ4LYAZSAFQP+HYAZAACAAADhM+3+A1/qWf633+r3/oAAAU48y/5DgBSH/u5V4ayIk4AdOAFzgBvYAcdf6kP+vh/oAAAAk4df6ln+ut/nOAHzf+UAARLp72XkHP5pmAE0X+dp/vDf6AAAth0WABp4AZAADw/+DIAdnp5bgBkAAPGAE0X+11/qQ/4QP+Pt/nZ/4vgBb4AS0f5ka2E4AW2AFTgBXYAT2AF9gBA4AZAABDgBI4ASN/45muq1zoAAC09YAADLk+WAHh3+WIAVTHatgBVIAXZ/6hgBJL/qQ/6VgB+w/uQACTgBuoAZuj6cx2hnoPLf5xH+qEAeWAFlX+74AZxb6DmuHj/mif7vgByoAXuf4BX+NF/v0f4/P+Lt/vyR5Xo+Mr4NRAEKP+hR/rsAHh3+AQAfDc4FsYt4AZQ/4ZX+DN/sRf41H2IT4JOAF2f+joATRf7R/+75/pAADUQBan/jMAErGOHK5vJAG9H+qv/pxf6iP+zX/hWAE0gBdIAbsAGC3+Qt/meAE+3+LR/maR6Tf+KF/tN/47f+Dp/rrf7ov+LR/kFb4u9OtYAWJAGq3+qj/sif5f5eDc5lhAFiQBgAAFJ1FgAYo/4QP+pgAD6AGt/+YX/hHf4UreusjjJAFfgBWYAft/5t/+hd/kg/4v3+ut/gxf6AAAM838X+TMfi1b7OzmzL/nAAE3P+EX/mA/4yY+wZbnJj4GWu9x1tKoCAAAMKt0gBut/iZa5xH+EX/ko/5//+8EAQt/5wJ2YD/pR/7Uf+kAACVAF7n+ut/hhAGb/+eGXoat7SqAYf/tsf5+/+vL/rqAGZj+qEbkQnatgB34AZAADvP+z9/oAAACY7ff6Wn+kAAKa/6KX++J/hFa6dW+ZGXjFa6bH+Dp/ksf6+H+ut/oAAA/PWm/7Zf+vMfjHpZT/+kAADP/5i/+4a3gprZ0gABoAZAACAAAAl3tX+eH/h8/6kP+gAAAETNoAbE/5Cv+PR/nEf5eH+iJ/lEAHjluUmXqVj7rX+gAABqdk7/oAAA4PR5f5l/+m9Vt1AGQAA0f/nH/5vW+abFmDAGx/+h1/v5f7g/+Jd/qQ/70n+rJ/qq9apAWHF/q9/7sn+/4/gA84N/+ox/nRf7N/+FgAZe/4wT+gtNl8f7fQB6E/qpZaTv+il/hEf5oP+YD/n9AGAAANTXMX+I3/qRP73y25AAcZ/4DX+Zp/ksf663+RMATUf5df+wUAZAADAX+TH/tff7df+o4AZAACAAAnGuLP+/V/jUf6AAAP92AAACDWJP+2MAcy/6Rn+tf/r0f7mgBNR/o2/4rH+ut/hA/7Ef+igAax/6b1WHR/qxAFRH+LD/oAAAnc6ZrasP+U1/mzAGb3uHgATUf4zH+I7/mkf5+H+x//rqAFyx+5C5iZ/7YwB8uPuFP4XZePj/n4/5iwBkAAOFf70v+dp/rrf46P+ogAepf4aX+NUAVAAHa0uXMeIAAASo4AAA3Q2o/6mAAX7/jc/6tv+kAAB2/4Vv+LIAY0f79v+kAAJN/633+UV/jc/6vf+oV/gzf5xH+x9/gxf6AAADl2QAA3r/jOAFJH+XP/ljAE4wBkAAGEAHbQB+b/tZt4CXWX7/hz/6SX+bljknS6dsW9cAU1f5Ln+j57pDR5ZgWT3/gHAEfv+n7/sy/73v+zV/m7/4hbe5PFl7AFRX+dp/lUf4WABzL/tK/6ewB8N/k2AEIz+jpniGBZfv+pD/m3AF7gBYP/jc/6AAAUg0eac2x/kSAFRX+pD/iJf6AAAEDWEAB7n/sy/4ZwBo0AQ4/5jwBE8AeUf6AAApaukP+mx/sI/4l3+Lx/oXAHZn+dp/uw/4RX+p8ATe/7H3+SH/jvj4uxIt9/t3AEwf+n7/jUf6yABTR/rA/6b8+5+PkTAGmz+ZeXgzBaAAAKK1VP+Y//go75gtWLP/mz/6LP+tV/sYAGEABbf/iZ/4df+Hn/oAACjDfm/4I1u3EFsY/5Af+oc/mFf7w3+sT/pq/7JP+Pl/lFe73POs7/pDf5ZH+nD/h7f4mP+Sx/jggFQABUO3txBb0IBHn/jY/5+O+iLVil/5pwBVjrg3/6hX+yl/mE/4XgBuO3kjdbIWeIYFtY/5/P+7Gdv/z7vAA2x/iPf43P+YeFgwgGpv+An/hy/6ZO+L8flJna2gBMR/qxAGzv+HmnGtAG8E+JL/gPP6+QBOT/oKP52sWlR/qQ/4GIB/kAYFAEqgB3MAaC/59O+zsAIAACHNWSf7dABWhPlGhb2IBKAvp2xaCP++p/lRf56Wew0FnhAHEv+b9TlKAGvXuVR/lAgH+v+78/j9e7oCOwoAbA04Jn+ykAWhAHZgBLu3kmAFmn+sDTsMf6AAAFT1qf+S9HhX/6wQBSx/hHf5cFe9R/j0f4JX+8gARHf416WUYAaon4Jn+k7/u4f4l3+FgARHf7SFeNwAdkT7efk8t/qsf6QAAS5/hBf7y3+bAvu8AAd3+DYAT3f4qAAqt/oEgH+v+1RPqLf773+gAABP1ygAJ0gFBIBzRPoaf6AAAA2OAAAC52Av2OiAZ0T6enYdL/i/f6Tv+Sx/j0f5t/+HT/q0/6jE+IYFqUf6VH+h1/isgFzP+KLrjK74Cn+hR/ok/6I/+hl/qQ/6j3+wAABPf6BX+arvv05YgwBoyAXtf4S3+kAAHg/7AAArD/sMn6enY1yAbcgGQ3+P1/sAACsn+VrvscT7n4+HF/pC/4gIB8N1M9Y6rP+9kAdcT5EP+jj/pkv7OwAXD/naf76n+cyfs7ACAAAwnWAAAE6tpX+tF/nRf52n+5l/mUv4Ov2UR/ng/6Bv+9F/migH4X+Wyfs7ACrP+6KAWm76rP+7iAf185+gBKAAQMv6aOOQcFpZf5RgBKKAdCgGasuPCAUSgH4oBabvtMf6AAAMe2fP+FgAW1f633+dF/jBAFhABkN/oAAC+QxYAHuIBmsAY/f57J+njcNa/a4oB+p/ioABFH+1FiNi/6JP+QJ/noAGQAA4cAdMf663+eD/rsAEzf+3t/vK/4+f+9F/pe/5gr+YDDk6/ZSoBMqAYUf7UWI8HNrrf5jn+uwAYAACya0sf7aoBsEAQOf4+wBkAABc/6sABkN/uqgEooBeqAQM07M3+kAABSgFRH+RIASE/4eacgAABit9R/rff4B3+ygALKgFUle8+5oAAAiqztf5I/+/Xzq1/6uzMpD/rZf5qP+iq/gP9ZMoBNkAYOAFYv+Sj/r/pbZwB23/kVf7Yf+hz1mA/4hP+7KATHf5wf+EH/jUf70X+I4AW3/5zwBkTHmx76EoBNkAY1f6AAAPF00f+O1/n0f6HX+gAAJ1DTN/hD/73f+QiAbBAEZoBNCAS4AFwvm2SASsf7DH+TN/jIAGQAAjaAZAABaIBKf/pI/6QAA19/tTAGkP+CN/pWAHw/+SP/qQ/5p3+9yAf5f5kn+4SFpy/5mn+zL/hGgGP3+Tr/ihf6mAAF3/os/67oBjR/re/69f+I3/rsd5huW2L/lZ/5vH+gAABbDpgAJN/5JABNkAZO/5NMeqV/vkf7dH+hz1o0f41H+tJ/hZ/6b3+xD/qYACAAAkZMoP+pr/kSAFon+agAZGf7Mv+5aAYQAG6ABsIAdff5CIBmXvu8ADZn+2Z/tZAFFX+jV/k9f7fQBFaAWF/4QP+8N/ok/54X+pD/p8f5doBC3/tXf7Rn+KGAdVf5HIBzL/tZ/6Xv+0G/kj/bi/+z9/ok/6NH+DD/qRgG2QBxF/qKgFMU+7etvIAGGgBhR/kg/5HIBt9/oEf6+v+jV/lsf49oBwAABvf50wBC3/ke/5MYBoGAVi/6AAAPN2kP+RwASgAGMABkAAIjAFVH+KF/j2gFNgBnyftb/aA0Oqz/ti/7b3+SFXpOn4Q++fLDoaACAAAG02QAAksAdMf7doBqaAUVf6Tv+KqAWqgE9/+2L/qJgFXv+A8AZSf6AAAlmvEP+v+llQ/5gP+eL/o0f7Cn+R8ARy/44++/yfoGd6rP+Gz/pFv7OwAGwAZAABHIB3H/jZAFgP+ZV/klv65tuoKfgZ/47H+7CAenf4iVelUVlxf5Qp+ylVqFgFHIBKF/ic/5nP+bQAYT64pf+zt/uT66ln+VTns7ACeH+gAAIw9PPvoVv4LtWJn/qzAGTv+1j/o1f58+uAT/kB/4Q/+vR/gqAE1H+SX/r5/59X+pD/pMf7pf+PmAVe/7E/+pZ/pO/6AAAuZP1H+8GAc1T5JVeB48AwgEcIBnVPm0GyTYBEx/ulV76KO2b/nyRb7H+WKfvs+64eOF53s055XneeKfgtgHLH+Nx/stgH7C+svvvSdaQf+scAW2/6QAAJ3/n2/4Dv+P8AUXAEdH+jV/oAAAQE0qf4mP+FcAVXAFKIBzCAZUeY1tIt9/nHAEJwBQZ/iIAGJP+6iAaxAEWf+0R/lan4nC+dIAP2AHPOeL9/oB25g4Bv1Ps7ACAAASY09H+twvsc/6dseRR/jpgGzi8f+tjw/78IBG7zoAACqzQqAEx3+pD/ng/6JP+Y5/py/6HVe5t/gTgE/b+dIAB0f6A3+iLnsV9YzH+fIAWGAFZ++NPTlQAGQAAZOASigE1X+8T/uex5G3+r3/ojv5l++KV/pFgFqf+9mAZif44n+9x/nq+7Zv+Mx/l3759mWNO/kxXa63+1x/jUf78LwHj/tMf7Vf+UtPvwkDZ8uHO/kBx50gAwv/k1gFZf++b/vP74Tp+6tPnEf5o/+6uAdJ/7Ui+FF/nb06hYBEOASZ2501e5C5kuf64n+L9/i9AE+H+ekAUe/63H+qR/l0gE1H+CR/i8f5YgBgV3qQ/4gABuoAbbv7Mv+3BcLff7wv+zL/gigGMX+Jd/hXf4Lf++IFjUf4eABut/oAAAVDYAAAVNexAGuzMzL/sgAFRH+Dp/tEf41H+gAAI8tB5/gQAFDf+bf/o/f6AAAtTNJoBM3liyL7u0+5P1vC/4kf+jV/h7f633+ZP/sy/4Nf+SD/s5/5uf+C3/rj/6AAAHz2y3+UR/lFgGhX+CmAUCubwv+5AFrbf57n+92AWkf6QAA3h/pD/59/+ntPs7v4Gn+LHHraAGAAAme28i+CeAa946CX+dz/ld5aAAAiqvFn+P3jnuf7CX+59/vW+7vAA+9/j0f7GABgAANgdJ/LsvgGw4Bxe/nSAC2gBgAABcdYbnopf6hwBRdPoAAAfS9qL57n+gAAA2dxnHoAAAIYzEf5fIB313nSABfH+gAADAdawARPv6BW8aV/oAAAGHULf7z7+BQLp3T79vu3dPnSAB0v+Zn/o1f4NQBXD/jUf6hwBPYARYAE8P+X8ATO+7Ddu7wAEqf7gAB8iAb0f59H+B3/uh/737+7wAOIgGmAAEX/qYAAyX+pN3qt26/p+zsALgQEaABpgACngEp4BUB/jvObKX+S5/p6f57P+zb/qNAEiX+e5/oAAAV7XXV4XAuzsABMAG63+5iAfh/4On+Ej/kB+4NIB8t/gH5ZjIBkyAVQf4/0+NB/qkba2n+kAAIAABznZBgF0X+SD/lSf4x3+cYvlSf4Hce5J/jOAGwM+iK+H2f7L1e3n5FBgFDf+jV/moQGTv+pl/sgz6Zi+Ogft9x52B+gVvGcf6zYB9XVpYQGJYBTIzoggGjQByCARlf6oIBmeAWF/4YIBJb/rrf42EBpj/kwgEf1eHbnuP5YwIBxZ/nAgH5+O/hAYEQHQ8e9hAez/4oIBaCAa4QEDX+mCAV4QHWv+tDPrcuh13eHN/oeNAo9uFejFYQE09u3CAVN/68IBDL/vwgGCIBcRAVR+7DuetgfnRLbtYBWf/g5AH4IBgR/mA/4lEBTIzthf67v+dV/gNf4uEW5H/gOf5eX+SD/pggGAAAds0eacgAAA8jeMATXf5b3exGAZAACAAArGOfv+zV/tz/4MP+3BAYUf5KP+UV/jJgGQAApWARpf49/+gAABotvWAdfd7WCucAVrV/4VEBdV/qUQE7sWet/qU/663+bRAe0QHuQBIN1pu/70v+kxAVn/51EBjDdg0QFNEBpn/u4QGQAAOxAV0QHV3+PRAdGf79EBgxAU1f7DEBoxAeMQEaX+kxAdMQFzEBCxASg954zwpDALmJoSN2XuhvRn5uCuQTXmu56pvmuGzqHOaAAAq2Bpzm4JAQEf4PPOVWzqHOaAAAc2Bm7m4JAQmM7Rzm4JAe7OZATOMc5tCQH6guH4bjVc55zmkJAeCQGHbOd8zsiQHqzON4vqLM5OjOY8zsaM6jLm4JAbhuZ9rOUQVg/xZ5QW6EzjHOYUkBP85oAABjYOSC7kkBc65lCQGqTO4HzoEz62iOpszv6pxskB5YzmnOaAAArWDwkBEJAdWM6AAAqWAFzOFQfv6pzgkBoanOCQF1HOmO5viQFuPe/C8LKQHykBipARCQFQkBrJAZhubgkBsB5uCQFgrm85zlyQEHH+pmTmqQEKkBH0zkqQFakBoanGyQElzmupATaQEGkBQy5kaQGXH+8e5nKQFmkB0a5pqQHgkB2pATaQF6kB9pAUiQEJjOYK5k+pxnjOfAntTM6jLmYpAR6QENjO8JAfKs7lPezOFvCQHBqcHpAV++ZQkBEJ/kzhYhkBEJAcpM4RkBypAW095MLm0ZAbGQETIWE65ulubOA296nFKQHukBXgjqaQEakB+JAUBM6mXmELzn4DagkBChzmWQG+nmFZAcKubpBOIZAcKQHmXOzTPu+RZ5zO9G5hCQESfOMQjg2M4SkBY8zumQE6S+SQNvmc6UkB8JAc2QFOjOTptieM537OTZAfjM5Cn+3MzqiQG7B+A6znRM4SkBykzouQE65+Yq5r6pzCkBWmFiIO7Dt2/qnPCQEh3OzYzp0DYSkBac5tdM4oveEpAfCQFxjOa85ksc7tjOaJAeJM47kBABzsSQEX4WfnnvruaPqcIdzve3Z0TO1JATuuZYkBCUbusuYKkB4JAUvs7pbmIoroFbwNbODEzvTM5FS+f5AWMJ5NkBnELnuebCkBGZ/usubwkBJoziyQFZLmn5AYVA7uzmcpAXepwEkBsu5iyQHULO6IfmVA5irm8JAX/uY+bO16nJhQG34WDUbu+FaMkB0c5t+M4ekBtZ/g5Q5OX+DZ/rV57Kd2qJAdmc5xjOEZAZyQH9Ruxi5m+uZ2rOWAHulM4skBcaFuebahqcdEzkeQF5TOJITljuZQkBntzu53a3bOdozv4eYRAuXr3oSuYskB3c5uJQGSUBdozgiJ6nAun5AcrLY0bm/FAeluZSrmnUzt1M4nn+WUzsGpwskBQy5jRuYlzmdEzht552kBk0zk5FYlzmLJARvOY4F+7wAG+QELTOcMvsR84QguntzlThQSkBm55sCz4yvgMlASgs6WUBoLPjaQHsXmIa5knM6iieqaFhCQEErm+pASYs7AxuUUVpdM4WUBhYztd3b3TOs1zjyC5mF+zsABKQH6kBKEzlSQHCkBvrzlEB4QzOxJAb284xrmWpAbKQH3qcCpAcYc4tnmLJAfu97vS27ZAczhbvkBEWzrKs5FUB5QHo6J62iOTFAY/c4VUBhVAc6I5sTO95AZrL4BzOaFAdyQFZF+sEzvTM44+eddrn7hY7rm+MzsyQHoTOFKFmnObaX+FutiWQHmkBRZAfpf7z7moanIiQHCUBhYzo/c6thOwlAdu17CUByJAb+QH2X+3PnpbuaDLm5MzpyQEekB8pARMX5tLmCXzsyQFCzOdlAamO5FkUx1Ae2M6HUBO1AdyQElPm6pAZ+QFYSuNG5mnOaXTOLVAdlDbkxWOszo2+ZXzOec5iqeafkByV/pNJZkUBCSzlaQF2zO8JAWp86fkBBvnmbebsXm1Wzu9uaykBgNAcDQEVX+JFDheJCuzOzJASbM5A0B5szp+QG7DWJozuCQEuUBPmzkjQEw0BJ4nj9ebw0Bd6nMyQGizOGc5vqQGrUBykruxeZvkBLizsOs6Kwu3m5uTQH6kB/1AWyQF5UBsZAQmQEzX+Dd5hTQH00BWLzkzQHfUB3rPrq+Zs0BaHzmyQG2UB4pfjzQF00BfNAZAAAuUB1Ezv6z5Bgee1AeIeY+bOK1ATGc4UUBJYfuArZ7UBbFAfepwskBq+zh+QFy0BcYzp+QF3X+mpfkrQFvrmqtAQ3M7ykBeEzp4c5a0BqnXjXM5S0BMa5j5s4uvO4JAUbQHy0B31/s3G4pUB6NAZjQG1kBytAarQFrzOdYftt+QO0BGNAXiQFQkB5ZAceQENh+nEzpZQFlnOBZzlIPYPUBhtAcaM7hkBY8zmgr6JUB+SzuCQGpUBHszlOQG0bm81AZ9QFzkB533u+RbR0Bt2zrHQE6zOKK5nGM5MPO1XzknQF77mKdAVmz6ZyW0c5oHQGi0Bj1AdVM7wUBiVAfTf4+jW2NASjQH/nO4JAU+pzs3+tdAXiQHGjOU5fj2H7jyWmtAXjM4LzOtZAShQGuzO6FAYRQFYUBeUTjzf50gADCztHObMkBvdAWhQHFbORFAcrf6enYqJAShQGa0BPK5hrs6a0BnNASOz5z0Bq1AT/ObykBZa5viQE/zmHpAXGM5EUBBJAUFQGrUBzNAX116Pl+LP3nPQE9zmHpAfxQF3qcdEzvCQE+0ByJAe0uaKLO8JAW+QFC/eqb5g3QHkzOHJAbIebOjOb9AQqQE2K+GCbptQFlrmzJAZvQE2kB6W5nBX43yWoYFt/QHpbmc4fh1J4Lh+KFfn9K4MUB79Acs84LzO7YzvCQESkBPUnqiQHBqc/FAcshZxkBb9AQNQEKkByDAagwE0V+g9/gPubNkBVNAVPbZ9kBx9ARzDbEMBzJAVSQE0kBm4fuQwHoUBQSzpSQHUkBR5AXkC6o9eysrqwi6hqcwpAf1QE7UBNpAcfQFKV+5t5hGQEWkB6FAbsuZJjOxozmreZ7UBFMzh+QFILOp9/torY0MBR5ATgeamvO95AWrQG+7mV9ARgwG30B69AWSQEezOttAfP96dK+5+5nIwF8Hmac5oowHckByjAcjc4AHON9AVyQEekB4NAT+QFAP+2/3nSADp0BZ5ARfQGM0BBVAQKQEL0BKVAaGpwh3OMZAdCQFwP+giliGQF3zOVDzppM4/zmEpAejQGPqcyJAed8783mEJAZIwFQkBTlfkJuZ3zODjAblQH5UB/JAWyQFuMBHjAdmQEA0Bxi5rWQE7kB2ZAWRQGSPOBJAeEc4jvOzdARCQEhMBCYzlDQF70B8izqaM53zORTAdvQEuvOxNAXzhahkBmJzh6QGJbOnNAVI/5Uc+Zt5rEwHFMBDdAQkwGVUBHB5rHQHuMBnjAdqQHpMBPtAT3OZ9MB2TAcbQFJjOe0HsqF6lzmlVAQvQFckBvp5j+QEpHOO5ARRQHH0BR0nlSQHpAuqJAezQEcgu0KvhyuZpzmoZAd0wGrMBu1AZrQEyA+7ZAUfQGo3mC9AVaQGuP+ipzhEC4E/Ozozh9M4RAuEILp6QERAuAUznaM72kBGTtkcwGa0BbgLsbQHakBURzl/QFU4Wb9AU/K6vMBkJAdtQFGzOjpAUiMxM4Wy9Af2QG6c+5fXkAwF4MB/0ztQhbW0BhALmeQFofO4JAfAwEujOoZARnO5RXmSxzhDX6aMB8YzkgwG17OtbzrBH75P+dIAI7QHYvO29AQDQErUBEpASyQF5TOI01rkC4JjOF5AUIwGIR+VF5v4ea0sBk1AYv14Qnmp5AQAwE4sB9P5lwC4cyeo6zigwHi0B3MnvruaQkBO65h0rbwMBNezpHQENA+hLAREC6Y0BtzAREC7akB4ZAYNM60kB6qVuJQFSsBElATKwEA0B7S5oZQFHkBzUXqeQHnkBSxzrWQEFMBd1AXar5mpWIdzkeQHBqcZ5Aavs7bMBX+FltQHG0BBz/veM5LkBe1AfseZa0BhH1iXQFg/OYnzvGM7KKuzrAcaM6HkBsa5lCs721+bS5qXQGErmYpAS8/4XA+BKLoxH7ykBCC5vCQG+MBmO5u2M7+sBgbAWVPZenmsdAVCQGP3Osh5v2QHBI2e55tswGU0BybAcfQGMJO4NAVTQGZyeZpHpwwHcMBmbAZ+QHDwecrAZrQE8/OwqziIk5UXmeczoCwHMsBlavnnX7tc+O0nu8ADpMBxNAd0wE0kBzjARSwENMBO65mKQHFQWxJAbwwHgkBPB5tHObCkBhYzkRM4lzmd6zl1z5d1+nrthCQGRbOMyzhAwGUkBO65mHQER0B3Czv/QG8bmFMzvCQG34Ws6vqq/4GDeM5DlOwHC3mM7AVvQHx0B87AXCwGLsBRszsuwHfjOprASXOZ4oARNASTQEL0BHlAaaM6QkBsZASEwE2v+zg3izM7TsBFBzmGpyrsB4RzlEc4aMB5e5peQGPsBHr/l/X4yvgD1AT8wEJLOUNAe2QF70BC9AYzQFvMB2VAfX+ZykBR5AdG/4cIe3n5BBea7sBa7Ae2wFf0Bpl5sKQG7MBfzznKQEfsBKQ3ve5ZIcBec5mFM4lkB70zsgs5rsBJLAdaQG2kB+pAYMuYUN+zEzhOua7sBUizkU87XUBeEzmewGkcBx9Aew36ka+cSzuOc7d0BpzAbvQHcUBiNASyQEVkBzozmyQF70BAnAcpM53qceFATtQE8HmzbAdbQGKfmNpAb6eYxkBgAACVg0LAYFs4lPmITAT5s73qc8JASEwFwnOtHAUls71/mH5AeSwGa0BpzAYBhZikB7pAYpr6xN+CNATiwHpsByJARGQEr7OPbAbGQFxjOxozuGwHBMBunAVCQH6cB3zAfAwE97O4JAR9M4scB4JAdYACokBvDAShwHqkBqJAWmhaZvOo7AXZr6xN+UJASeM4UoWltASvs5FLO69AZZwF1UBNnAXKwFHkBHnAfaQHecB2kzpYwEekBwlAWvObcUBVDzpnQHqLOUTAZAABsUB2yzoOwHDsBSYzl6q7pMB6NAfuc6/kBkJAShwHxcB1nATLQE7rm2XAZps7ZcBvYziOQFJjO+JAfUwHUfOAzAR6QF2kBct5qbM7Q3OQNAY7QEaMBXszuCQFQp2IqTsZH6TSWhTAd8c6BMB6NAWEwHWbOqkzqjeZCcBJc5sjQF4kBQn/iWq5TcBLlzjNwEZcB0NASjQE/zmBZAd5wF3N+Zt5lJwHvN+pqTlkubqMBygAPeQEaAAZFAT2wELcB2pAfqwGa0BkF5oVwFETOUizkOwFVTOZXAXp/6mRe1J5ilM5oUBhXAdSQFm7moZASEwEcHmATAe0uYVkByJARdQHE0BPmzstwEP0BhYziEwHWAARXAVIs4zTO+pAcaM5vkB96nPmc6yHmgmFrvQETrmTDAXswEP0BdEznleZDrODLAeCQF3rO9kfnS362vm+HASdM4ocBV7AREwG7UBjtAWKQGW7maXAbKQGPTOxEzh6QGWcBf7AWSp65f+5PAZTwGI8B1PATCwE/MBnhzojBYekBot5q7s5aPOkTAdYAAjvOduzj+wE2kBTuzt5+Yg8BAMzkCubGLmZ5AcSC4BqcRYzpyQHkAW+t5qis5bUBEWzvCQHQ8BSCzj5wHNRex3AfdwG/kBFF5l2wEVXmvbAfiQFw8Bz3AcVBavcBI7Aczr7x7Ok67na+aFkBtZAcns5FcBqezpdwEX0BO3AXiQGR3mP3Pplm5x3m+ezqVs6xkBRK5uIC6okBM1ARjwGyr2TYzqjeZrsBYZ5v1QGQbOYtAbwwHZcB7vAZdM5l7mH5Aepq5RqefZlk2QHGjOxi5l3s4KkBCJAajeYKkB8DAaJs6w8ByV5qaM4skBmNAfjM5FMB7d5rMwGPqc8nAbpwGrsBoc5lj/7+R+93lgguayUBxWzm887KTOd8zkr84wcBovAYFH7fQWG3ATZwGWcBDczmvOYYcB34ziY+Y5kBKtzlSQEikBvV5khQF5+2Mell+wE3sBslAXewH+HmBJAT5wG17OslARvc77IWqFAQ+wGi0BcFAeCQHhkB/u5kA+Y56+ZelvGtZAd++evpvs698BPmzqzwFYPmUV5kPwELcB1gAPnQHoUBCvAUMubycBDnAWrQHLsB7JAbGQEbqeCPPr1q4aw+OH5g/wGQAAT/AYvQG6cBy7AXrwEe/+mPPm2rac8BxB5g2M4EkBIlAaLM788BufAXJwHBqcinAcs84skB4NAa086qTOgPAexeaQCBiVAQvQEMsBfdASiubvsB29Ab7uY4CBP3AePwFD8BQXAcAIHmoO56nivOa5MBm3AfqwF4CBsAgXn/5UCBr7Ae7wHM4WmtAXvwHoUBLlASHc5IsBoezoeubHMBnhzuewFw8BnnAflQF1UB95ATvQE/MBwXAe1eaxrmIjzrfQE3TOHpAbPwFG8BUNAVlwE5cB3TAcKQHvTOFozotwG/cBgzASVwGUnOtHzgvQFPUB3JARjwH58BduzrkwHoG+SOrkP/4pFWO7AQRwGzLmUNASwIFIsBO1AZ6wG+qcnAgQ/QH/MB7zAcxwHhHOu/AeCQE30BWV5lMwEekBt7AejQGL8BP85pHwGpkBrJzrJwFyCB7vAYoIEP0BbjATrM7qCB3XAe2M7W8BIXAelwFgPOdnARXwGykBhggZiQFjMBi8PoFN6yG+wU3ozz5AYWTnzizwGDcBGNAcaM4NHOmVAaiQHJkBtHzr7ubasBTLAcaM5rw+jeNumQ7K4OW8Ph3jZmNedWjiaubEHmePAexeYE8BR5AeQIG3w+x3AekwGrsBG9AaRwEcHm+tActwE6TONnAS4RY1XO2DAeiQHl8Boc5rPjZQ0BdXAY/c73kBJc5u0uY7xeCvAS2wF7UBFtATAIFysBw7AR7M6ykBifAZeQG/cBWc5pUIG6sBN3AQfQHN4WbJASUwF3qcVQgT2wHfHOufAVnOa/6WKzAfIs7C3m4JAYc9YP0BoanOSwHpCBa03hVwH5UBOwgRcIF7CBzbAVvwE6sBSpATBwHtXmHpAaMub60BePAXGM70MB4dAfVwFpfODczimQFz0BuvAdyQGjAuaAgR6QGuABOGAMIIF8I+RTAcbQGc0BjjAflQE0bOEFzi6QGd0Bec5tLwHjzOLJASv84snOeVATiIG0nOQQAeC+ZEgue9AVThbEJeWIdtEAHe9gJRVj+p6nEu2vfkdH5AEutklvAwH50BYrAeUVZX8BzJAZZwFXR+7QgWmQH1AB6TAcKQEYLmgALim+Zenm8JAf6pya0B0jAeUb5gUBPvfhBQEB9+bMFglwGJfmfs5nPQEmnOy3ATjQGWE2bFARnOZ9MBWLAZEwEiCBbQgck84osBwpAVUwFFbO/3AREwH1cBoxvmdwG1LmsKzihQHmiBWc5gJ0j58BO5ATVc6i0BJu5h9M6o0BlR5n9QELzOffRmCuYIsBRbAWIwHSrOANAXaIHoUBhogSxQE99+6y5olQHpbm7hlnqIGJzOyPAWYwHqMBQ/foIQ7W8++fAcoADxiB6uzqJwEZsBoc5v8AFNsBmC5gmIFhMBFZzqDH4AFuq21m1QFJCBkPAZVQEQgBC4duWIFKMBcy5uowFXkBl5AY/c6RMBmBTmGIEdUB4JvsiAF9mWANASMeZcMBUXAQ1QECkBt/5nfs4i4WeVAQ9wELnOFV5mnOYmjOxNAUBM6QCBCUzik87ZkB3wgco84uUBaogaiQHEiBb8zpmIGwrO8DAevQHykBVHzsmQHeiBBBbhTM6ycBFFAdqQHwMBx7AT5s4U0B0jzuuQFnkBPB5i5QFVbOwggdqQGYiByogTMl6qiB0a5vswEs8BHogbeIFpkBPB5gtwEOMBvDAbE84SCBtHzvnwEO0BsZAX5tb4UBCXznigBUkB5e5uCQFy3mfnAS5c4ecBQc5mRQEUUBtHzntQEMsBYSzjaQEgcBIIgflQGDTOYpAXEwGCCBGHAXqIEuUBG4gW/QE8iBubAcvu6tae+H1gywHybmO1zhhc5HiBI7zryTZHiBarATgwEf0BltAdeQEpgBXYgeRwG1Lmj1ATiwEisBTEgevQGTEOI7ztia50SBmtAVjH7qk2u1zvEwE7XO/HAbMuZQUBHzAbRIFomWtEgY9kT0SB7EgYWwH8/mBKXpxM6/kBsEgcXwGIUBvp5gaQFU4W1UznKIFwCBLlARNQHGjO1KXqyS4wSBK+zsQeankBnAgddQEvPmJrAVphajMB+kgVIc5RsB2JDguIE4rOJfAVm87cXmG/AVwIEDYWeP5i5QGqCBu1AWyQGV0BbkgRPQHziBmXAerQFkCBB5vqZIGFjOcAgWxQHVXOgmzh5IEpPOrkgfZIGGSBw0dl5IHl/mPkgV6IHakBAUgT5s5BSB23AbLQFhSBIw/m0uZqSBZkgRpIEiCB1kgbuM66SBuTATvQEeiBSUgTodbOSBvp5mnOZO0BUJAXyubZLeq1zvxIHS/m/EgcQda+SBW1zniQEs3O0kgTFwHKTO+pAQgua7UBCJAZVIEfXO3n5jGl6FcBWfAQr+ZskB3EgRaM7MkBUFAc9QFBHuFFvqGBZnCBbnzp/QHG8B5ogddQE+mWLrzl6IF+/m0v5oOa4KSBF9AeqQETUBHXAWOIHakBIx5iKQEekBS4gfVwHWsBdxbjxAG5vml4gQmM7JMBfTAQxIEAMBTEgWKU43fmaUgakwFJMBPTASHc5/POZ4gSFQHwTOWNzgYoAjvOQx1p9IFviBu1zgdIG+iBa0gfNIE8LOGnAQtIEH6eEMgacwHTSBYJAQNwHU8BxIgT1IFHiBFQgURM7fjOaZAf0wE90BHkgXKIGVSB8DAcLwEIkBAkztSP5m3m+rARVQFVbORvAXtQEtcBP85lwwHUIWYLAcfQGOQB5C5gDQFQyBzEgUHOY4aI2jASIT5Ux2YMgdqQHJMBf0gYJs5HkBwpAc+BYA0Bp5ATrM7oSBHogWqIFsY+ANAUSwFRcBztAZCQEKMBtbzuhQFIyBvp5o7wFakBd/AWEs4/gWXVzp/+ZgyBqUAZaP5acWfwgRWQHykBye5gDIGA8BStAYIIGmsB9nASvwHYiBEUgeewHI3O+PAXwIEBcBl0gWeQGXCBbFAVwwHGjOuUATcdb5QBoZboVAHakBtJ7rLIGuSBPmzu7IFQrOffAQUIFLkBUNARoc4KkBhFAdCs7tLmPB5ozQEwiBGAgRjQHoUBHUAVmW7SqAFFAQRl65lubMft3c6Rq2o5DhWzbk8BprAamQH0bmWbzu9uYD3O3n5iqebnsBn5TokwEL0BspAY8IGA8BvggfewFykBkfAQtb6gSBTozuBIGQkBpAgXGQEmsBa/AUrIEiCBndAThIFbLOyJASrc7UsBxtAVEwHFY+GFTroZ6zHmR5AUbQEpUBS/AQmM4SCBYZ5h3IGT8B02PkQIGpMBBNATiwFJyBWAgT5wEQwBZllp8IH7nOR5AbgIHmcBRbAYkIE18B6wLt0wEikBX1AdNj5psBYpAZCIHtsBBzARjAFRnux3AcHwEDCBoIgWIwFIsBb9ATCIExCBCQgQHM5uAuHpAZLH7xsBG0gRlwHo0BGHAVjubqcBQVAcaM7sUeYkgb6eYyCBxNAYSIHjzOSLAUBha+qcmDAT5s4A0BkjAQet6SUegVvCsIE+CB8/Af4eaUnOLDAR8c4+CBK+zk6M5TCB4PAdewHyCBHTAd3OazyBC9ARCQFrzmB9ARjQFwcBv3AZVwHkguEPAatQFeCB1MgXFM668BSIgURM67UBhmztYIEIKBTTzsgoHG0B7pAf0wHwkBLbAZvVZYSBoc5uGQFASBTDAeaIFhVO79AYDwF/CBrcgRaM7dvO6FAY0wHb0Be9AYps6YyBzAgXCwHaTOaZAcYwFOABu8Fu0uZwkB8JASJW7EpWEdAYZQHoUBwlAcwoFkKBzsAetZYRT+EUgbR860KBzZASiub5LOgjAXZIHHiB3PARnwHwkBJ4zuoIEPUBorAdws6ykBwCgT7s6m4+7VTivOYH3OCpAe6M4ukBA7ATFwFKkBuggbxwE4sBwnAa+s4SMBEkgZps7biBWHAcmQFrsBNV5qrQEYSBGDAQiIGeHOEZAUhIE9cB2Mgb+QFXkB+ogTnwHm8BOpATWQHEHm6nAQgIE/kBcCgbpwGRbOAXAfhQEocBC9ARZQHiPOPezpLwE/yBY8gZHS6cmenbFieIGBiB0XAfNQEsvOkePrY876LUEXAaZeZ9iBsIgeWc4TQWKKdrrH7IM2aXzkUs5zsB5dAR7M6x8BkJAfHwEP8B8zAR6QFsUB255twoHDwBw75qHQHW0BzJAX8IFfrOQCgbHQHdMBO1zg3QEOMB2AgdVwHbMBsVzssoE5MBtHzoEoGx0BP9vpwzbjKB2Lzq7s5DKBPPATOIHQCBjygbhIGQAAxrAYvwHXKBDYzouQHYSB4RzvKQFcMBKe5tNIGFSBkUgaIIFBcBQIFhVs6h8Bl0zuhIHAKB1igWjIFhCBjXATlwGtPOQNAW5IFHiBC9AQbwFOjOlXAW/IFOMBmtAcT84RbOCf5ibuaZKBSJARoIHefmkbAVIs7QqB0wLvcoFCKBlIgUiQHzCBcogXnOYcO+4hFobQFbnOHzAVDQELKBjkgTRuazSBMfAZueZrKBZwgVsoGK8B6bznvwFHPOgjHqMuYRAuwpATKwFesBRxzhAgHoOuDMFs4IEnMB23AbSIHwIB3n5CswFYcBhNAUU86kKBPPAQDQFRHOVygV3IG5kBVwgepIE7kBSygXzwGISBwSgSY752POPAgVBwEfMBhqgYS85gE+nKgbOwEwsBC7AQMoH38+iHAX9IG+kBO9AfuwERbO+pATRuYxQARnAfLIHdKBFNbtxBbaqBwHASLQFQsBHJ5oo64g3WVPAevQFQ0BEigZS86ccBa0gYTdaRCB7/AZXP7h8WkagWswG5sB8O3lIgGM8Bl2zjaQHQ8B0KgWFM45qB+zAfbIEA0BYbSDIPJtz+stblJnaFUB6NAfUoFmzOlnAcfQEq2O5pAVrQEMWeeUFtyIEfUBOYgULIHQUBdMfs6QFWKBVpAdCs6rUBLwgR6QGuAuIpATIoG9MBsZAc+BbiyB2wgZdIFQrO10gdowGq7ebMFn+QHmsBfjAa2oEwFe6fAcIs6mXmx9AcfP76LUJdAfZwGZzmYpATaQFXzOE0FhBxb9jmKEge2oFv1OCqzjaIH3z+BUga9IGzSBP9AbZZ4fz+6AjjNIGHbO65AXWIFNkBY75oZs7aMBZAvrPQGMSBPDzmiQEfMBffRrKQFVbOopAQmM7XcB2jATnY7CCBRTAT3s4skB6EzviQH3QWpbAYcoFU0BXBXhIoGi0B8Ezhas73kBZIgW8wGfkBNelt286qJ+c6gbeIE5SBvCzhMoFSMBZazulubSFe64gQtIFv0e2UztGuZGiB+igV6QFoSBFizsKuZnOu2Lvr+IGcSBa0ge+oEJLOygADxoHQsBc9AdUT7syB+DAeawGIkBfGgYBoHxjOAmgWiQHNE+TnzgcBbNjOFbNlTwGKL+nLAVnOYHSBX8gU8oEYcB+jAb3IHckBLwgSaM6xrm4bAbfhaGL+7wAMpoGOqBUKgU2IF5zmjGgfTM4TWeeyAcQwHAAAt8gd2oHNiBV1AfTM5r7e+i1JvIFbiBPYgTswEA0BjNAfiQHAAAaigcfQH+L+NkVq5oGnMB7mgSmQEA0BtlAcAACx8B3yAWMn50S21cgZ2wHpsBWIgcqQHxL+4/lihoHlsBWNAdqIEo0B1xPsJQHOjOQTAd9QGYMOmWgTws6M0BsKAS4uaxUBaSgTys6hkBHszmg27RI0Ubvnh87FaBmVAbuIEezOCbvhIBLcfOsVAfqwHSMeEXAft84e8B4pAQM04YLmwpAZgIFUoBsxXk1oFckBOt5lVM5aHOeWgSVoF1aBmrLnloGG8BqMzhQd5taB/5zmloF4kBo4gQDQGyaBJSgTCIFOKB88gdaQHb8B0ygdooGXTOyZASvs7ioBeWgfY9bbKB4JAcpoEhUBeJAS587ZKBZqgUVIHvqBHWgVuIF6SBYDzsMIFFyBZbATdwGVqBbJAbvwFIKBR5AcywH8k+DlAV/QE7aBZWgTMc7tcBQd5kdoEnaBmVzhCQHnaB5sgaBIGQ0BvbAWrs7ITO1tAciQEBKBLsgU5wHsfOwDAeooEY3O6ggUxQGjMBhW5sghZfrO1Jzj1oGFCBxhzuwoGHbO/HAadIESKBZrAWg+YqAAQOgZnOanaBoOgeGgGIAuO65lCs47UB/XztwXCk6Br/AdqIH2kBXjAc4w6ItWU2gSiBbPSBbJAV/IFmzO57ASFIG+7mv+lqUwEAzOlMgeUwFL7Ohz1mkwF6sBDdATZwEq3OswgaGQFqiBSjAcws470BNeziiwFfzOipXnEw6G8BQQgTIIGzMBsZASkc7ISBb9Af1IF5UBGtAfwIGYbmyIgT/ObXqcCpAbhuaVSBIagUGIHzMOp5AUe873kBCL1nKwGPaBqGgbIebWAA4ZAcEIFRSB4JASHc76iB5Wgda/bPyB6ggd8oEAyBCSzr7uaV0B5mgZBs57yBDczpaIE7kBkjATVeax0B8KgT1wHGLOUIgcEIEF8B5AgZegE162e1AcloFjzOowLmyQGJUBf+5hDwGizOGPAU4wEFsBXGge6QFzaBK3AQaoE78BGnAfMw4ZzmLJAeaIHKPOrSFjweaHPW3HAdpM7NzO1JzljuYZ8BZZAbvQE5KBJKgQ4wERSBzsgQEIFaSBJrASroFF7OGSgbfhZNlefuFphIHDCBFegcDQE9sBIfAc5wFUyBJsgYToFMMBC+gVLoGDMBaN5shwHEHmcW5sAwFOyBj3AX8IEHrmJsgS3QEdaBx+gb5oEZcB2XAaiQFecBF7Afsx7ucuryfvrubm6B8pAXDM5I8B6XAcTQFakBmIga8IFOcBtAgViwEHSB/SgbyIFze+QPztioGFjO7cgRShYDyBLvAS2wERiBH5AddQHESBP4Fr6oFfyBcrAfl84MyBkTAVOwHeaBCJAVThackBxMzpUoFy3mnugTroFEkB11AavIFhkBEZAU9oHWqB29AecIHKPOAYgbfIGUyBYPAd0wESCBp0gdnoELzOEFXlo57n4+tAgcloFayB+m/na+YNTOc8FmZT7WAAXOgSwYFGiBsrAdrwHvaBsa5hUoEOKBufAV++btLmgigWqwGWUBt2gbkwG/6WmTAU8IF0VeQW/tG27+YBarHocIFCMBs+geloFuR+Jf9jmwFrSBYBgXGQGXUBkBgd5+YlMB82geKQG1C+sWAblxb98B5agTdIGpb+2VPiVQGHrmZVARJ86SVeLbdr1wEI8BHJAQYYETQWTrAaXQGusB2izoT64JqB3HATuIFlaB/ZAW9y7ZSBxWARrhYIUBdqzgVv6DC+svAfooG+GB23AV+wGYcBUagZAYHoUBfPrilQGX6BJHASSIEaCB4YgdzwGJqBcMgZaQG08BfbAXljbZSB4dARjQFOcB5agZEwFzcBN3ASY+YTC+v3Ltin7xsBezAR8wEzMB41PgILaWGBmMgaEwGrC+jjFkRwFeiBlpAQzQEJMBFHAf6QGuse42AetgE1b+03TltgEXoWKf5igC4RAuWjATcwEqsBdozvcwGdAuEFzk8wFHkBiUzgSn53PuNHjnMIELaByQgTxwECcBZHAdpM4pKB/5ztxQFayBu65laQGA8BNSgYgIF1iBCvAdCs4SqBZagWaQGyTOunAW8C7wTOxMzncVYNqBykzvpQHF6BQggfEoFrSBiSgYJwE7GBFZAe7wHnGBSvARYs6W7mkJAYDgHl+ugVvPBQGIUBzznjGuamvOgHbpCYGwKB9MzsLy7qkBypzoS+4HUBLCgUJIGdse9mgeZoGOaBF+FlZ44VbObszp+QE+wWeogdVM5skBqBgWswGWaBMLnv0c7yaBJ1XomwH0zOj/zhDIGiqBR0gW6QH9kBhNPpBXZUmB8CgT8wHZnOMPAZ+QHjC2Q5ARzgGMduv1AVVM5j0BMyzktwGV6Bd1AciL6WLm9ZAXsYEqTOnJAXq+7jUBEbztsYHMaBlHAfepwi4BHrziyQGKbOfBgWLgEEcOd3ATJs5WkB4zzqEwGj++GNXuP75K4BoQDtfs4ibODtAeos7jp+/XjgAoE+nOH5AdqQGr+++YNokwF29O6JgZTQFuGBSu/uR5ZqsBYJAQQIHIkBv1zqEwEwmBp0gbiQHCKBpLAbfQE9sBSvAU+oFWyBV5AUHOanMBH2gUwwGA8BgV3iVoFq6Bn5Abbv619OBeASf74MceZ/vjun4xpU7wAF6wEbjOOOFolQGinOFgLqjwHNjOc1dlbebk4WlR5pAIFTiB8QLofy76iBac5nuQFr4Bdegcs87rkBJ/LtlwFOiBBSgU2+54TOdYzip1atmBGfAYnBZ7aB2nHhn862CB8QLn9NZjLmElAUkC53p+hK5nnwFmcejUzjaQHjrmwpAc2M7mi+xV5phQHKnOQN3kAQH/++IBAebebMMBhAgQxwEbGBznAU1wFWiBQ3AQ9wFOCB9qgQCwEHGB5AgY0G4fp+Y8FjdM6o3mbwgeoIG43eabnp6dilGBC8zteIGuyBurAYiIG4sB6xgU+BZf7+R77gVx5Zue5C5neYGyHmD5gQCIERMBRIgVHuaMkB3R5tQQGgkBVUzkw86wmBGBgcrQHsqBBxgQ8YG8B+5C5uuIEOMBGagW+IHIsBregWqIFAfuKFAeRQFYCB3n5r9c53qcxNAe4C5iEB0YvmBn7/0+lflh5QE9yB6dAbtQHWmBY2gbRwGDaBdYztn5YUWBHVARH46WLmQNAXUoFwmBkXVniuZ70BMAgSGQHQrO2hARpM5aTO6nAeqQEOMBUugQcIFJUBu1AXnwGG6BHJgYof51uepIbh7d4dcWXt3v256kZ+Fh/uhn7WH+hh/vh+6kfu+h/iRn54Z+RgrsYf6D3exGfvYH4UfujgfpYf7OB+KlgeYf52CuwoLr44i0Z+/xAeAYYuCuDGfhoz6uH+FfFoAAB0gLiTZ+VifPLvoz7i7mTlgQJaLdusqmNkFU6prgKr0ucACAAAoICnwu/lgW/x4eWBfegF5YHnueWdbscbYnGcx/1ugQCAAA6IAn4us/eMFYG+Z+9JAeZTZ5HgsVgb7LZTvMgVgUngCc6u3pFruJgxacRQfpdRYJJiI8Xsn+C6AAgAAJiALAjmYADcY2+tEnzy6gm2+Bsi5YERguMEvmGC71WBkAAIAAD0gA4ABpC28AsHwAClWBEWts3A6tNeWYLnVYHhWBbVgYtjavS2XVgT1YGgTeaVXooI7GBOA1gWCMytWB7VgSNYHoAA3VgUxwpas+rxLklYHNB++T3kL56/reXhEM1E4jIO9EvtxA6wZy4rnlmTZtWBueNp6ABXOMLVgYmQGcdk3GNh++D/rgbVgdlYGGAAZ1gRmQGppurOOk0pqva2x1gd044pNuzgNpVYHNwANVgaKYFNWB4VgXs15CEuVZAXSAChWBzVgf9YH2RuhUrn3baNQuqkbqRlAKieZahANLbH/W1BTo0YCRWBCQjhDYHceO+Wrk6bYo2BYQAFDtZmee2wfrgvifWBiEgOgACxWB85AVEZyAAA1oCGAAyWnI9tZdNQq5AdloDcY2AfXluQGkQuBKshjS70FokVgZ0DZ1Y2WhNEeZCBaCCELoShxIQu4Wbv66JxUAkVgdmbZcr4i4Nh0y7STOhD4PnDZZSO97djUQDH/W+WUi8y5Yy+JELlNRbtGAh74LFYGifWowAMlpzE2BBNgbLYE1m22DFgC2rkFuXwflELIs1g8AAITYHxeeQkDuAKDk2BzvLncE6YUW1NgQHC4wUBewjoMGoUW6vLXmcDZUUW6J0MdoBveegITnSAAO2BxiwKTG6jS++ors20KUaYn23tGNalDucA1s3S5NQAyWnCqwa0Rsi5hjiDadsInjLkyF62l2B0vgQABS2BVLriCJ49+EgLAEdmB9eertIBILhiSe0stiWJYF9oMN1kvWTp2BCIno8z6atWYULjpQGR0WIMvqguDQ2BSULi/ChS0kBYEHm94UrAowALFYE/AAi0zoQNZliuCbXlsDYE2BDdgYBf6fPWYpjk9tbMwu0pBKTG6NiuQMDpRbbV2BAhfhtNZfM0VtgUhf5cDW2QirJU7E2BK/XlrC6Uy+EDtokm4YIAc2tp3wCRWB33npg+DZyw1pbskeApLAd5QG4X4oi+mMDu+RaiDIugAErYHUrgWsLmiz7OiO+h4PAi4VkykIXvaH7o22sUAlF+BZF+FKwJUwB5F+y2dpqoyxFMM6TnzYEC5uwJaiir6hieEYjtq1ZrAerYTtu16LkAxNgZgABRacjJABOuDrUBBH3qSg4PJOwWTqtt6nteWQ1v3HbhWBrnALlYHfYAq1gVeDaVWB1Yjgg4Elwom9gdwACrWBWEroCkonaAnhEF3YEiwurnXuTFZ62BNCniAaDSB+91gaeE59o2aVgYdYFquOhgAKtYGg0BwKtouDZYUu7s7IcjZ8PWcZNrDQH1rWuw1orwDkAAIdgVmTbsOBCPnj1f4iMe+YVnHCrHlwYIzMhE6iOB4VgfRICpac7dgQCNahYUkjgTNYFkeOCOnMEihR+eCjgUMS65RM9dgbObYaQ2T0Dv66LhWBhKNnwACaOB21/jZK6EDWUjgcxE5P4AwiTuhJ6ydeJjgTNYGS4E5jgUaX4YSeb1/kGB7Ol+IUNl3uDnzgWZNrY4FX2BYCvs2a5uOBEaLmY4FX2B0o1lIPZR16I8XnhK4U22MYftPrZF0BdClvvG5LS+gbTgTYF0OB2dTtc0gbwOHhAGxkCrBIAjgXWz79h+a5fmtK4yK2GUnprf66LO90NllJ6jh+afFtceblCAKefDNYHiOS65jKtYHlSekd/pA4GUaYje3vZDZMAAODgQnf4zh+GD1vEboIeIiFfrQlYwMBJAXqhX49Se/d/pYv6JK+cNgT/dIjxeA0np3IADOB6fXtn958/WtCLmvf4aJWO9/k7z4+BW3kHh/bZvSOkM7vHRZozui0nv0r6q8WN4fhRz53h+LTASrpaPh+EzAdVv5JxOjovoNYGqs0FTgRH14zV+mHVv107CJihzgcNYE98wXVgRk7ZPyulVgdcS7DxA3lgY67gvV+UT/uTxYEsgl63i04H1OBh6XsvYFVyuwiTmMi6S2BUpiHzy5gR+5ltpfChIOBqcNppnarWBQQPrZz6kyeIqkFTy6DOBzT/o4ZxmlC8LgSywEoR+3LAcI+DHlwnqzh0rYEC+wUAOI4HisBL34G5QBeWBhEfs1F51ZyBxLvw4GTK2DTgdIjb8KuPtgecV5kwAhYQIFYGDBqQRUJQ4FQouQ9DhnW5Nr6jV2Dz1Y/9ec1RN7q5f82U5Xsoq5nA2GHLty4EdQ2WsLji7aAAAeARw24gAADgElJAEK4EEu2DIXq/O5MMWlVgbgxysOBkAAGK4EYAAkrgdYjYREAcbAYJdbJacS/IjVYFfK2lVgccgDNXYDKLsw4H7EuJA3kT9b0De9HwOEUrNkWIjFrAxClIu31gSEq6wMQ9EgM5p6muBlp5iiD5LT2+dfoJH62K2U9fnOr7/h+5oXnQu5qv+lz7pEk5ODeiYXu2rYjc+PqbkONbyR+4abjG/5v0WbYXtH86pg+aGvhIrYaR+7HAWeraPhesTfmFwGvv+8xcH/ir8bWM1/LtXbsGA61juvbaLg2w6LgXxCmoAl7+C1YGzoOi/YuY4HtWBDzgUMABZWBlzAK3YEtWBPKDlqb7FbeI+OLbQBequ8LQF3TYyTWi2NlyTgU7CeR3ov2IgOBZZxnW4GaLe9wgPeuDUM23b4MPja8OB+tgUfYFbacrUlPQ4Fsf+GI3kJuZ1Y2yPKnujAtWBq5AK21qKneEcbm1YHsOBFTgaZH7Xc+k0lgu4H9QC9/1sa4HFWBryjhdTbsOBIfjvpi6WR+dULq1YEruB+QkCdwHTa+ItANPYH+WBwAALfHCzWBUlNlqg5uLWM7gYxlCNuBMN1s24EyAAq2vgKN62R+D4DngTagXWPKAH1qBbA2e2jhngCxQCR+1gHC57qwCsADz7zJAATijgai4YAAUWnA24HSAAKqAC1YG9VeSUbikOj8bWy7gTm4FTlewUXhNGAT+EZoMF7ADPa+vKjrtnaL2BY8mjKoDtoAzV2Clrb8bWF1NlsDb3LW3brDm4EzaOKxQDHdYg6+7SNou4EbpuKGiH9YHweBMsUIcjaM0AtrgVm4GfOB/G1hdQBCBsOsXk2nb35e2mTpnN5numAfXtXo7fNwk7CN2zoweBbjvs9i7uUAIDgX2h6sAAhb1sh4HNRePXBO1YEGuBzzKA7I6buBDbgR7E5NuBJqjr+4Grf+Zt5p9YEd42Prfp705hQAj7gbcMjtWBdDgQqwBHf+DmNiw4yEeBtIEBJTJ4kAbjvroADE2BWZNhdTbHoYMXBBQQCIAAyHgaigAeiC79gU84yf2B8VLrIZTJacA1XgWBAp8Be0Xgin5hr2M43k5q626+/2Nqj4IgVy61jjxETx6EKEGlWtZU/+BevnVjYUeBLVgU9b68FeEHgYGYzHlwEcTiPXDPQ2LD0BxgCoQAsVgZ4ABzOgMevntTa4Lgzc1JDa5koupftkwACn/WlmQIr45622bXgRGszCp2ztgZmF5UDWPUfsB37seB+7gaewA4eBOrgf+uC6wmi9gaUi5B5AkJNpGW5AeBttLn1qA16+vuvhVdbJagh4bpTF5wHOOHfsFh7f8BU2nit4Ez9ezgAIep7Nq2oAgcjm6+KAI3gck5x/4qYBUJtYGd22sL2Ko45/G2+DgbHE582B1thEl14eo2diXpM0CXvgQ1gVJw7oB2jRgFsTbYJoYVgRZgBBtO+2NHw0D+WBlE3p1lLk42J3gfl4GFeBDngSjw6Bd+lPPgP/6mCB1cPmPi4ZCBq0fq137rR+TzFptH6dTe+RVp+p67R+Gvfpvh4UJe7IgVQl5JG+MPFnsDZxWBCbPlrC4PaOTlgVdYGprgxXgTN4H0OBV0fr0QAI6cciSir5489WCBLiFbYF7W88rjwl6GAIhtgXAa562BitgZoTYQ2B7RLqga7gVyQ1NuIl55oAPhjkJuaSSOLvnmIF7PMAwUAAmuC1uB3Cnu1YFduB1HgYg4HJHgxAAIFYEtWBa/AHdYGjG+rLACHYG4k2rJDtK4HIHIn1ADdC7vc2iEgHTeDk5g+VgcbN460ATAAPFYH/rgg+btmDYh42KaLkr4EgGgfGjve4F6euZTgcwABbuBGZzjk5CFBes9gf9H7Lq2VvPkwR5T9+5LFrUTbgx+76tm6iC32BdOXvita8lm9gjs7z7JJe7/1tN4FQXe2yjg74Hdm2ye1rIADT2BBkThuHabdwKfgfokRIgBARrho55Rm+c1VpfCjwsAHViuH4EPJOe2jgjYHEvWzzKDTYG+GEWdQg5AC4eBPRjI3q53NemG+G/54agofegKtYFRaemD4Cepw8+OO/nnRSDIkuZ9tjSU4w3WcLSErYG8FetAylYaJ+bWktgQai774A2nsCtYE2IuXC4L6F5pKqr43kngCW+B/DgRPhQ9uu+K1hZQCoUWaoLkfYGucAhfga6wiCc2hr1r0YzQeBMVgdwAD12Br/gq1YHq+BsUvqRIEmFuxpHj6b64a2sKXhHz44x+SultHz5OLejelmRrZrD+yfPiSU4kx+6MfhJb5gluSz7iaR6Xr2ZpHlyP7WueA6gUbz4ImOvlNvrIE+3OKJ7u3c5ZyBWY/jnIHN8+wNVq3z71j+0WPvzH5oVOc4/l9AGEtWBmXiRQ698+DHHlurwlJ2e2PiQxYMwBGAQQra4ANWoU/uPz5Kx+EfFirH7T8+PSgVXj5W7WdfAFb4GkuAa5AKtYEObenbFgroBG0AjRgLfC6h6AmAAKtYE72+GVbmQEFo0eq/Pj7ZZTbeUqgefj75ECIznkqoHrWWUjvg5YHB2B1HgW1YED94nAQTZe5n8+tqgfotQSBBBbgbQ4E8REq1gQPl5kQu721t84FnfgvzgV6oGwtWfvFsBZ4TfOXD9t/z50EAhLgTHR5SIBz7FoAL5SZ2vBPlv4GGJOvLga/l5wC+HkAYUH520OVLVgJE44uBlGOHxYw8+BTiAZj570Fot+3p3wCNQu+6gRGzYMs2MIQJwPo0s2jdHsbt5r+BTmvjYEG6agkVgaky4bNafPLhZZ4EC+FPOHC9aGKuNu3q+oGkC+SdjuQL5K62hAsDDdZktibEAP5YHv5wNrgSl55cFeA+uk6tb9ROBRcEA4EgOBjrTl46w16WUJWrQL6F0O9AvuXQ5KBBvJelfYFv0emD4KYdhIleJzrtq4GbJexHFuc67BSwVhog+z4CJqyDgTsy7TJirJDghk77MuP6NtUT4W+BtAQbS4H8AAgVgXkrBiUA3VgfGzYU84D7PkkEE3myhhrnAFYZPgmmdt3t6dvu2SfmbraeFe2rVjrQD7hePngSyk4YIAh/gfFYH8bWiN4HvI4zE+eyAZcgH262TzALy4LFWBr3geMwBtWBS/IvnDYTCAwAAMXDY2yItAjhxxb31uyRXmaY7RUAv63j1YDPBBPVgeQACxWBozsqgACt2BYIQZFoHPWO+rgU1dgeTevJZuVYGJaBGwQXFQAQhBxVgZu4HXE+fWjpT4GCRQdgQW4L7f0OttACI7b+QAYDgQUv5MfOFWgUCiizsAhIQVl25VaBwtnk6/ZKqIUgABSEGi+BtS/jt67vuB1pbkvYGvfgDIQcEL5q52kytnY24qvS2rgVu65WHes1XmS2I5bWyxjiM04bJ+lLLjho6gOBG7htc4xkhBwJar777TL+kD0m+4ForWcZNliEHRUAOIQUMV7yhBkPgU847MOBvhhByEi0BBx/1rF+CxWBnwyF1YBP4ASGDn5YFZk2w9jlbmK+gulDgZcv76oB5yflYd406BVu1q09TC+eWsLsghYOWBwyrBlYHKeBUUAIFYGu+BXzgSJ4GjWAyaAZ/5aFBBQNNuKEGbuBC3gSTzZpKq8VgSA4FeeBh1gde4GUY4bVgb/paHPWIHgd8RZZk2eoQZwABH2B4YQcQAAgOB/WLrS4HqnwN1Tg7I79uBnfAKNYxLdwR3NjWgHCyefbgcym4OcAkytuk74e423ngbrZ4F8QBYQVbADE2BX2tozQCOuBLzAI+9bB2BMDblbmLyRQ1HgQ604aOByzbv9zbtr+9U1k0x5LSAAlwObY7FMeAFPk8n7VF2BzHiSd5vJ+ZP9h8n4ab+GmAYIx7i+B3w1mqNYSUybBga9L6IAAxNgWZv6MseHWLvp4GVhBMtcHmEF3e2ElMuxNan/WqfgQtk4EsgfVLnaKLVhBBbkP5YG/6W9PgX5gGFC+JOvnZYxeAA1HgeiEGaGBOnTk8wDauBJrgQuq65WBaJduzE68eBkPgTFgHTPucWAU04HK7maW/hr1YZb+BH1hCm4c++uW/lz77+/OWz7o1T51OexW/med7Vb+ZW/on85zC+PrHitgF7tWTTnkMYFoRBdW/oW57poOKxgen85HC+4/ziCYGnC+PBTi0CCGKuBF3i0CBEXen+thLE5DU2AfVn6w7ONOcetKC4HK+BqPTn/rZyhuy+kgPI4+wWPt1m126gPW/DwtT4FzVEh1Xnf86Zp+f7Vhby7gi+MO/oBNb96QdAXm9V6l++vJgdOjY0OBaHgXQ4E4OBP1gS4rb6KOzz4PCbYuWBikQVc4GdWBC1gUqYHAceNHDvPYEdXAlbgYr65dNQc/voLv6q0+79DslpxVuBsYQZLv4Qi21IvpVeCH2BkHHsun5wBuk3lkyL5jAOItXo656O7+CH7mmYEHZeSXEDTG7e7+4uthYC53++0xtAfy6P++/3jgnT4v++POFpen49mBn/vjbV73p+nXDj/74Wi+HdPj9XbLmB/6fogQEo3eqbntN26j8+ZN3pTXaoB+ubnrEbZOsW8RtvVv5Fuest3sRYGKB+Skfsiz5Ji+L7VimL68WBcGfhmL6WqWWYvg057yWBvf1opYEaH+7bnlof4mWBJH7thn5qH+DgfshLb5EBNgfov47aH+plgWpYEqoOVh/mYf68guAxttxHS+NeVlgZxGa6jOGD3vZYGH/WD9QPAACAAA1IDcAAgAAMiAgktj5d7WjOzxFktEGrRBG0QQygCAAAgIBheMJ7QAdEG8OBR0NtMmJeOsJ4vgXN6FQAe0QWKuBtDe+ONl727Cmi5kAMtEGNaUMjFP4z7gVyiN4D8mZCxOya1HfAA2guvJAd9LanRBlwQfCgDEAAB0QUQp7CJOc85imLzlHgWWnuEz4SAAG0QW497tva+0QULgDPKAGfNqhABrRBh0QeNn64RubitojEEfYAyMQVGACoxB6MQb014IxBrUtj3zDCLweMQWjEGGAAR0QTfC4nQ2YzXolLY2QAgMQZcwDizWn0QWCtbwAAB0QcUp4TEaIMQXpp5FM+dMQdDkpA/Iyn8Gb3R0LWB0QXujCaOArMQd0UR/Z+yOgPTEG8xB5LAGb3T0SAmAAGtEETmOwsQazL4PWBtMQRLEHizWNYjkzEFB02IsQSyPjcAAgsQZT+4li8a0QaojY1++jLFkTEFEG2ANgQc16MsWu0QetEGtS2PnTmDYGlC2qEAC9EG8GOuVGAdEHpSekQjrZzbkAATsQV5taw2BhD4NqIAI2By0QRyuDZdGA5AeS552xBO1bgdE7+xBpkDjS+j2xBmG+E4mYzkBYToMLPoz9eRNge12LnAAL0QRd1bLRB5EgI1C69M+Rnnt2ba37eKcQX3oB9BOAf7t9Lbwte7pNgdEHwk2LNgZXYhL6ItAAMtEFMAAy0QWZwCc2BJwftzYEkIuFcQR2tAHRB2rgYsE5VLmw++JCy4i2B9cvukuA59WGCAIAAA8gH3YEumYU1tjtAD9xBKy5iSJYqkiB0QUSEGZRuqhNmYUC0NsRtgd2oBBxBeUbiBRYFRuu4mBrYErLmeUDjIAB5XK09gS7YEdyWOfPiQi4HIo9VjPl57jqYYK1oZS7Vn+PCLvYTj/NeSgAECuaECwL0QfKYQLS+Vorsp3ZY6AHqNtMmJh2BoYlrNUQujyRzPu9v4Cy2w++OGXgwiOPfhHLEGXS+fS1gcigZ2BxYlhyuaAAA3IAzWBdN4Ar1acg2HgAOKK7Ky24cQS1MCA1YvAHvN54xiuWstitEGpxBd/XjiJ6ai2gAAOyAa0QXcIDW2A9sQYqfAbeeZwNmUdJhA2TkVh+Oqslaeb3k8wDWE2iEgItM49+ExNgaiO6UJB7qkGIk7qhOMr4IAABUgBggBbA2/+TuQkEcF+QMDvaDYIJBebXgzoCCxBQeQJhHZrpexMvqwNaT2B5nspvEFvxBo73lw+DmM2Yd1tcS4Ms2UPgQzL5tGcbsQdso4/RBmAAC9EEHRBk1cHqJ4n4WKYvAXtYL3WIMQUQp6EJObF/hr1bzugY14tSuA89WmlttWF6gxBh1nomE6qy++h4AdEGAAAYoAyQur1FgZ+i6AAy0QfpK69AenR5szwCtOBv73rj5440Or9gW4kEGGetbgSFk7nAAa0QaNQG2SWB0uoAgrwoAGkQbOE6o0W8MnimdZL8igWgq2E5JgAp0QR/EEs+egDgdso6oQAqSQVS64ss+68tlfEFzF2IIELA4FSwOO4APtEFqJBL0QTHdZXg2ncgNWI6lJBusKuokEq7eMIHsR7YrRB8UiJcwCyROGsztYhDjxBL0QVK4GAAAxIAyQu8YfpQS7d7I82cH6NZrRBXiXow4FSVOuOAA4kGSG2qaOKYtbDJBCPnqyB6Ql+79DoVADjxBaMQdMkHyyI24nuoDrmeynSQSskGCOB6Yfg2d6LJBTAAGjEGyxALAAPHM71AADcQXwABFxBEjgackHoAARcQQguCyAAyWnJM0BrRBuYfj4/CXJB1yQYmY4HRBqjgc8kFWauVCQazl5x+eJyQRj9hnJBnyQYwkFGOBpYfoQNb7RBmfngdEEBMuljgWJ14gpB9Wnm13jgpB78viGz4YSe4SOjpACdJBi2BHCkGOOBNkrkikErRBNmttJE5opBdtAQAr7Om48NADCkEw7YuKQR3G7pwuVkhjMtZgpBHZFtKNZKl27gQV/zarRB/QjiSy7lxBw8QGgr64AAHSQQFDYRxBjf4CokEbuGtSQRokEcrgLYfljA6spBlcQSZp6uxB7sQdCgA8pBIMQXykENl+4sQXcIDwAAa0QbSHaOxB2yjsQABrRBFnANXQGS22MO5lXEFHRBWyQezf4DhO4k1jMkFpOBGdFrsoLAQ2VyQcKkHxVO9SGDgkFeOsUt/g+A4QJB/yQcyuCyGUZqQVfDZxSeBTosikEKs2F0QSOz7gVyISQcQACdJBVMQd0ACZ+BV9gQYr7iLOD9QA2+B45g1yQd6kFTxwbyQSRB5FOBmtAF0kGIxB8kUGIk5zdek4fnsPaRJBNLSv9rYb8A04foz77Rm2GXDlAwEeGWxAXq915/Su5QgIgADRpBFy8NnEGSpBVwPpn1baiAqMQVqraoJBOcQXgY5jBBE8Nj04EMBessFlKdKyxBEcvuD16CXW/8AMtEFYxC5CLk2kGgpBb0QTEs7Q9ebaQeQAAdpB8KAM+6iTOBSitkBNYbRBAfVlIm6wMQkQADUkEVpBEU3qzEGJPiUKvkom6Hh+79/sz16f3+SzgUZX7eMBmDtgMkGwkuGAAO4kEEuMa0QfvJ7VQ2Z8QWSHRQVEqMjqtJ6TSWT0QQnYx0kAgYABnzbZAA1iQbKkFiWOc4LqewCAA2QZNiekFOsAoF1u3FA+NwAyQbzoyoheITyLXDYrJBJKLtrEEjpO2D/jNB4EA+l6QbUkEMxB+CTvVE4PpBa0QU+kERFwr6QdazTvpB/NIuMwENyegl1rBcDDoAXqQQ+kFMJBicTiH16Oi++0QRTEGqs0k8Nj+kQhO2+GQdb+BdyAh6QXV4Hbyu649m9uD9eaugANckGduC5zAbZLbYxBJMQSksBkxBGfXojQDuqQ1yQewkFzzAuOAHLEEs42SqhksF6cZBzJANckEUxB7sjhpAI4JBW1dt/K5irOYXQt54GKkWVcQQwADNxBmG+LGkEZzunP2nOkEQ1+B0uoekEMxB/v1scgAEgA+LAQsi5VJB32rlJUTfpButPIqI5JA+ioNm4LbGpBiEfoEABwpBVmQXTJ44JOGGQV4ABepBlmQZokEhQAXjrIKlaaZBof8p6s5K/iJJ0li4FRpBcMQXi4F1ZyOrgYRH6dyAxGQORkHyJBzcQQMU5sKuncgI5kGepBHiXrqkFkY23ybg/15JpBWDLmwaKja+/EgF46zMuBlBLqH/KOxB/U1sYjb0pBlsnp3RjcAAXQQXgY7H/WBWQQAN70qWupCCVkFSuB5WQfc/5Uu2WLbmVkH+xBaXPkYq7EnmTzAISkGryONWQSqkGauBoWQcGbb9rO5b1stEGDpBpcvrKeZu0AEyQYRbBsR+9A3pK9YBZBnEfmKF5GnKmEdtFADLrO6gOuXqBPwA5yQXKF58R+tcngJH4/K+motstEF8hQWMQDnEHcLwA2QctEHK2BiqQdhkEaM237gSrYz/JBor/paF5F4CGEAHLEF2pBEHgVgy4rNyCmQan67VFOG/ACq/4TsB86vjqm4VXW5AALdkEeJO92QdEkESAAT2QSet4hZOWZNoAADIBMli7C7euRjkMq5LpBDM9tfX5nye/kAD9kEHIoSyQS9TZKoAVcQZsk6CZB/7AbJH6o6ueyQbIVBpo2RcQYbK6OsAgnwEOAZZJBy31hG4GWLuCHAcijYQYAZGQRczZk2Brt1idkGZv+akQV9kE/ZBcKACs3IsZBlVjGxkHnpwYSQdRwEM428OQYzp7rQ2MmoPtEFsJOiKrom4EDouB5sLckF+JY48QbIVCVXgrdgUXEEQOOkAAJyjZrRBkWQamjhyZeiQAA3EGsGER6XqhV7cLguOAHtEGCc2F/ntoMbtPYJ5Fn0ACUAAyWnE7EG6+e/frqBQDPRB/2tvC2KmcB6bgYAAAAgN9kGgPWkyXp+J7Y5ByWLuGXggxBzgAPwABAOB3dgTKDaE5B/GQaZkHsC2OlLsxACHpB0OAJC77nZBxqQS+/5aKeiw3n/irvgOp0Qde4FKZB6CAKdEE/3SicQe7kGe5BJmgLdYHJacvuQVrkHrRBfsQaBdbQeBz1AFxkGEiAHuQQn4GnRB8AAKTYEHRBp2QVji46RBRcQa24EHpB3y4C3tZdlw+0QZnkFyxBbmQTrkFTcOdGQUXEHJ5BReQfyUCl5BQJ1tNF6nRBHCQa2k5qy2fJLsXkGk2BmncNAkEfpgWzfjotaM5BoD1mWcafRBw6QbTZBuZBdzjjMkFiJO27ga1r67uBU+QXakGjZBr0QSQYAZiOi+QWPYEZ/2Qq7ltkE7ZBIQQd+kGz5BnbjnJ/4dqujC4FcCC3xwGgAIXkEuqOcS1kvkHl5Bl9vsGkFnY0/I3jZH5TquC7VmcDaYJBDMQTrkHfhYh6QQTkGO5B4OQcKnb9oAj+QbBcC0AA/GQfwADXJBZITjLFAnr8kWQTrkGQnw+GQRAUEv5BYUXqTwGdHmpiQYOjY85BbG3in4ENlGv+QVV16yJBoGniZm4VYuFOQTdkGgPWKGiKUkE/MAqaOHC0hspBR0QSxjaQ56xfgAiQAyxQANnijkFKJAJXLnurAAFBTBQVP1ZqeBwBQc1F5nA222QWEnbH5BdYTibYH8bWgGQY/kEKwAz+QbbwHxjeM/5rQUHaiAm+QVZ4HHRBbmQXZjhGLwWyQZtxDZoe2Y3lyvaOY232QUpkFipBmjgHKkEw3WEBQVGEGyr2/ngT4eAW5uakULVt5WRBnCLuNrYBJB+6QZ34EXjKsqQdFAC8uerTFn9/7t62c8tt+kH2TWnwyC6vZ1Eu+hNnKkH1WMeWNhkkFU+O9SGM8wAOJB/9viDE6t5B+eQeZAD18BD0XmDz5ZdAXgAPLwCJxBsn1ngUF4bgpwuh7r6C1u12QfbkGyGU3eyOLNbcyAlGQWtjZrRBPSQZhHaNaUh6QYLEGlR+If1rIkGd+BNYjhAkHqY2EWnCzEHsouMqgH3EHGRACQADA744JBDBQf+36N+2iv/r5q4pFBCOQekUHwoAusJpkUGGlekAAJ/kHf5BEWtlg+Zeog2CQX7EGOsAvlALQ7ZVxBc/vjBN6DR+uHfkoVYjR+6Evg1pyTFB6PPiAIHjR+SObj2tbr5Bs8aLPkHGZBPKBAEkGKZBtgACbkHXeBNK1o2EEFtOtAAMXkFLJBhdIKdgg62MZ3VutEG5FBUGQajEGhmG2ogMD4ErZuGxQYjkH7JB8WQffkGJZBs0fgrF6uJBYxQQGDbCZB9GQXEUHQ2iB0QXxkG4YuurNsqkHpO+waQb4YR55BImQRcUE7IwSqhvGjbgpB8YEEdEGOxBZMQfBkFF6AjAANLkF8aOZBhEYF48ZehmNtqoAK5BorkCYIG3qe8PgSkVY/FB2v1rPGht5BgJQc6YDAlBcGQXLkFf5BBO+BkDYGJB+BAKUUGnRBgsQVDkHcje/xQZokFQZB4EANLN5GAAiJQRAUG45BqJQaHl5flGGJQf8kFEluhBtgQ4HfDWtKTgSUFq5EiPgWf/7I+BF//qj4HQAB76noHm6Y+B7PPsyIGh5uAMfn+p4ciBb27l9na1JBVM3t6I6dFB5GQUqkFLpBovPuBpyG0AkiQfUAFszelEQfZtaV5OB6ttPEEYjWdeTsWkH8+BYxlnBAC3RBwvgQgkFl5uHxQaLC79jm06Qd9kHZAQXfAoekEbRBUDZMtEG1w2YBQVA4AEOB+6QZL1YEEOkAgH7S7IoA+WQZ8Mhg5BDzco0UFIZBgbvs3EGpGOi1dj+kHrWc/mQeRkEdXAGiQfcw6+pBU3DqmkFRiBXD4HxkHJacZnADnEGD9+Mg/sP37ocWvhlg/EFd3W8pFsywAylB8ZQaGUF9M0RhrtTvZ9I+pYga9RY2ZBhiQfAyjC7AUZQdWIEW6OnmQRtEEm5BmzgH2UGBJBz0vh7o5YFOf+bn4a75JecMfiJ4pWwAFcQS9EG05BYMQZQH5eEQDZRljbbkBOKeAGckGaFBLBQXMyg4xBkLvu3C6IAADiQZ+kHx3e/hQUbS7zBOjL1qGUF1M2ZJvuBrbJacX+QXkUHwZBmAAILEFWpOt0QSVy5uxBUAXuGbYdoA8EgNswBiKgiyXjDdaN5BRUTsWkGZZBchTlyb5lnGvfXmd1a/lBDMQfjta6wqf64AyUGt/gGCABMYwY/YMfVjtEFAxA75TmcEjClBM+QefEHnRB9DRK/4hyDWg6QZZzbhNaRKto5wD/46wi8PeUE2pBCuQPqUFXlBiWQUHz4r7u+kdjVBgkVBvVSiksDkVBeRQSwUFY22EFQfYTjPrWK0Lg8AAnlB8GQVoOiFpBOFQQ/E7X+B7cthgi4mrERXCLuUHcVBx5QbBjYw3WPxLvBkETGM0UAPOtY5lBwkgRdp5kVBD5QVBkHC5OYBQfskEClBX5QQ4w48+84FQVBkHFeAl8hiwUGcVB+y1pJUG8VBmFQXHkibqqn0NipIHVwm3RhKI4BfwAHotqXKYOJBX+QWuUFcFG2fKBhkGFGoxkgddnjeHaZRrtckENFBqdAHhUHZAQ9lQV/za8TwTKXmhHKXyGrlQRuUFlnG5ATlCQ5fpBGEANtkGfR2wpQTHhTLlBHiTutEFGFe1VcH1NRRZBW+1p5y4YQ27aQez17JVBAZQWlUGgXWCsAG5UGblBLFjpn+ZmLesHgT6vDuVBlgTolUGDJeBVQX4UFFVBeBhEoY7CI2A1zm29j8ZBjWlLCrgmaAkfgY5UGOrgzlQRvN7Gi2UVQR5UFUHuzUgcL+aBe+UGQVTHa3+OqFFqRUHMVBalQQTvhfpB7FQRNUFlkuVZloMl78VBG0QVSU7dm2/LLsTH7h6eMy3vpUEsYIZZQey4EIkA6GiOZUGDJecKAJvkEbVBGfNr4YRg5Bg5LsKUEP42sMQZIM4sFBUFQQTviDJepxQTzEG3EAN5Qbqxbkx+LbdlekFQZBX5QaBdaDJeR12CxY7mgASzgNVUFlVBnlQRz+bwZBZSQSxY7txQH5QQWgCQVWX6QVVUFKAAt6Xo2bSqVBkEdv+UFw0uWZQf7i5NUks61vBHYA2B6kAVvC6o1Bj5QcKUFiI2vMQVUtYUZBJyADf4h6VBolQTKdZsg2f5QfBkGxZBKVQSDEGpVB5qQai/7QQ2k2Qf9rYTQCu+QZpTalx2LWFqWiia0AJqxBVdamVBR5QSdUHFkuyGQX6U6upBQAQbEG6CEwKZ1tFUEsWOdX5l+kERrokNQeKkH4rWnhoD3EEhQAR0QS0q79+B/sAJcwC1FB/sTrekHjoucVANzcCRZBbGPuNUGESQi+nsTUEMAA51QcbE6pKOGP2PrEG7lBaiQRt1ZNW+X6XgJrYonuFwNtAUHtoAvsQfVYyMkAWpvkFUHaFB0/0oagDOj+78duSe4+yBlJ7n7IHDFBArELs9anRBftQSxY7C5OtJ7guUENVB8eQV3kEZA24dQTdfLOAAdZDj+dqJ6iaMQanIHYJ2wlFpe+B8quA0AR5j50GeXmPkGxY+Y+RBQYHZBspByTnCFkBWRBGyQdnkGflORpymAUGp+uvhhEyUEiiAkOQeUUHHQBsidoGkGlIu9VjLcrQ5FBaNQaZkFlGQ3GQYuDZT9WIMQVUUFRuOGqTmOW4BBEXp7leR76LU/vBO+U5uo2hgAD3EGNhBItvr3UGsVBo2XmcUFvFBsGbnM6A7yBhmXhkYTr1BzZQawUHLAA48QQdEFJDwK9QVBkGb1WTrAANkHAxBJ2QQ/IErUufwzF9NapAAh2QSZkGSlBS6TvskG7lB/8gQMZyL1B7STvtjQEgAJMAUJw5BRem6KGxkEBc0KeQecojKpBZeQfTb5psWeQAPrEFSxBN5AL7EEHRBnEKsdw5a1BLSQbrUH+4uKeQVAUGtduB0QZwPqFGo2rgQKUEL1BjYQWXkGI6QOyNqg0Fw7W5lAAcnYy5BEX/McUGWw2x5Qb+kFWauWQAMlpyjo2n9QctzYp5Bm9Vrg0Ffa2nbgujpyOAAYSQaZrb1AAFDQUj0isVBexQixgZ0NB6DQZg0ERFwLOQaxbRndWByKHtEFiNBt+Qcdk4OJBfXgOrUFJqu1zoq+QBHRBE19oQEHEpWpiQcpkEKwA0j4ArH7B2+Mlbka/BdVBByKMTYG0h2nyEKjEGflBi4NrxkG3ZBApQbLEDH1BwpQQ+9Zh0GfGjpUmC3NevG3gC7ZzHYu1dn+UH7vWLljiQUHnlB8qAPLkGK5BRi8MrkErRBGP2GrkH8gAwi1jLkH2AA0jQY3kGjFBWeLrFAKkNBPb1rAxDSoAwDQfrkF7qw8OQTWkF8ZBmXNN/UHi9WGbNhg0H4c2mQamA0GUBBiVbu0AAvlBHjQSdDamp2zcAfPb5cJ2RTQR3AEJ4+WYFrPUHe82nRWGYUGBFAU3DpGUFOa+QVjsvmD6x+5PFkE4GsigaBbnLkEvZBWZNje9xEVBAr1uk0H3FBweQY00FQlaYIzAHb7zwBVAQY7vRR5BvqiNcuBx5BheQTKoCn5BRE1rsUHNxBTsQT5k63/WQDgYHkHas2ldAn14BwNBjJAPrEFQZBj8AEfUHW/gyqAOQUGTsIR0Qc4o5uxBazjOngA4JB1DQT/kFgeBuR3rpp7rRBoK4CFC6Hpe7iQcIkFGsuLE1voQBOJBmzQetS5nowuzQck0GzxoBDgWM0FTcOWSQYAUGifWARQBAUEcqB97NmLUH+/WdTQR6kEWFBTTQcWS7UgQqcUkdEEGz+3zVoXl6f1BI5niCn67beitTpSUFy8O4aQUdt5R1OVOQWg0GC5B/jcOgAC0lBe6MPcUFslByTQQZUGLqIG0QdHH6mO+nJQXCUHktBRCAe29oKZBu5QcDkEA7edsfumE4Z1OBGQZTEHdAq2eXs+UGI42wOQfd06qQWKN1lTkGEZBIrQXnP5HuuTLQeDkFHxBoLQYTdYEOBlwQbk0HRO+uzNmRkE1z+e61h+EG8ZBSTQcQUGi9WVOQcLk7MP2KiAe3P5y2OFuQfE0HbKOlFnrwT5Mk25FQTz1adqBtoNuKkE14AqtQerUG1O+NdbnmUHDAAjrQdrEGoVexZ4CZoApE2CrACPHZ7qwZZxrrUGU+BGzWsbUGbz+Qv1hFpxHhBjFQVJZ6C6200tnaKLJxBaCQa4gGu0O2lniDEEhBBXiAYbdbTVBTFQWTYFf5BFiQeFnZrLKVFtkHW6UI2taQXznbbO+jCfty1b5pBhaQSrkGpxBI7kjtAAXVBcULswn5ltB+0QVTEE3DwYtQZBRaJZBOdjk9GIY48omQQw0Hv5wkE4LI0ESUWKutrK77UNBZrQVT44kDYu2QRAUHWOs4VnlfYEJ7eU2nn6YAplBMtcAF9bfpBHqQctEHplBpdbmC1a4AAoZQTnt7TZ2bELsOgCp+BU3DodkE53Wjifg+A7yVBoy1iMADRpBiuQUsEFbHW15aEkEEHRB1RPq0ACCxB/IAEdEFPwAIwAIEUHDBBF7QZYvhXtBzRPl/OgNxB+6QYC/Y0pBL0QYov5GnKmGQdP+A3NBwUAC3kEmaAC9QdtADc82MjFGm25CEuhmgQB0FOZBQHQef+D/VBMN1m7EFCpBZNQR1cCuEkr9jqIL7dpBrGsNEUGDpBWMQjKoCutBRAjoMn4zs2KsQfCgB51BNyQalpx+By6UgGcF7+aB+UtqR0FXpo4VAKmuB0oouF8GajbUJB0S/m8Xb+8EB2QXKgDYZB9+3nRLbjpB7xQQ77LDJBFqQYoL7DguH8AHWY7yJB+8QfcT5aOOvOdgS4zZJBhWgRKgFvE+JvgUMACaJBWSQRh24YoBRgvnE9ZKdBEqQap0EfxBNudqNbYzJB6dbokkH+xBQxXvp0HQeB1Ank/EH9fOeQAJokHmQAl74MM05x62ooQeM05sIuKeQTp0GifWMN1lp0EqdBcnQQSgHWouKeQUoUEJJBcuWsZ0EUHepnQRu4YqvST8QaB0HwLoDcQVA0GUrgtzXrPGimhB96QTL4GCR2KJYm5kHioB4SFu50HjQC2SQVpzYCeusgAO3kFvNOuhQRs0Hw5BSMLjmUFc1B6CAGtEGB2uJuQbBcBzZBu5QReMobJBSmQa4SSgtOnULpp0EMxBynQWl0Hm9IXEEJl0HZdB8GQU80F7NBLFjvM0FlnGZEgHy0G1XeOeQa3+B62e/IAPs0Ef02QyQWGUFyqMHrQe+75acWKKTr2uBSxBMIRCnkEx0WCmQdKgDWdBtIQdJUGqY248QajtYXhOVxQa10E6+AWXQadKD2hBIQNhsuDt5B/XzlsYpkmALGCJkACo5BrszP6EERJB53zFrrIc1Bd+QYJ0G1w2SDQdtAA1dB8zDmaNQQ3gApQYBkH+Nw1JQXxkHY82gyXlF0ERFw+XQY1UGyoAbScDho7OAAETQTRS5AeuU3zsUd5qE2MN1lskEQ0u5YSK+QDu5BRcQS0kFYF2cKQXgYSwUImQ8DLkELZO3DQRj9igXW2ogOh0GESQizbhMAAdJB2eQX2EEvusumYG4UF3dBCUgJoUG1I2XtQTdYx18AfGQc4ACYJe+AgEh0E3VOjcQXxo6fNBtrgSD0HHlBovjthy7jxByKAF54HxdBflgUnEG+GEarAPQUHklBrySDWEH+tBA5trW4FzVEUZXjXrazZBlEgPMIJc1BtaNhs0FlnGuVGEnEHcdBuO1gpNbNlBN1TujpwOJBR0QZbABNMeHLjmIzaHPW0HgYdkHyNBcKAI3kE/5BPwAERUGHI28mNjdkEyxQXjQfFg50OuwVQR6LZ+xBjjQQhgFeSaij8L50FMxBR5AIxAB6FBcmQZOwiNu+YuRP50HBNBt1QYszb+lBZNQfGdY0tuHVQXLi43uBL3QXfF78NBPKAFsDYIWu3pQcrYEkGAkpjD8w4vJ+04QT4/A8NBBHQSXChoqecVNnIUG75BLyrtvkFPlBL5QZsk5j9ObGAYnt7XNBjAAHigB7gAp/1mlda7ICt0QfGBDRdBbyAB4TasGerCdnF9a3RBG3QW7E7IAAG0QdIS7uzsNPQf0EGatu+vQQLvgXBB8YEEz0HrVBMqgBTEE/2MPngWP0ETmmTHCgiQDS1woD1vcUH+/WgNQeL1aKZBCoQU90EsXW6mAam5aA0OQXQSZoAVkyCUgGad5V02X86KsHYHvW+mAYL84xcQvhQeX0Gn9Bc2QaakHqFOS7QY1di/oueXQfo0Hhl4uQTr7UFzZBgWghRV78gAv+lohkH3hB5zlrqlYxZBaa1pskHjdBAxTquk6aseZcliNkGTJBUNQRcEHz5BssgFMkHjdB1+bnqw7Jb+9vzue44ZnekKfuW275U+FEfis+7f625rHiEYEUfWG+tpVgGTuWSEQWL76lb+uKfj056Yp+lW/jUYEoRBNAwZL778fWyxgXlV70nWD/QZD0GwretDQfzkFXG+ELDp9NYBNB/qrhvF7wSAAgwQHUGS0OeuQcU9jPpBBOQSLJrodus0wvrEEd/OgxephyJTHWlsAD40GiuQSuQfwMGq5BcmXhvXar9IgmoG8kFftuq3FmngD9VBlEQeREG+fW/PLh59aC8uDfrqLkH0NEocQdkxbqNBV5duKkHNkWVnjlyvh45BZ1nj364MXeQUXmFACduCyqhp0VjWOsNQtu29oEtBevLpWUEU4BhvLoTUEDFBp1QfBeJgFBD8TkyYG3VewEkmHTbHpBmrAKn65we+wlFHQuDiueJujhz0700+iXjh9EHnxBB7nglkF+pBKkQW7QCiNBwQAtbEF6vu+QwbDEEO5BOMQaTEEc5BekQepRYFDBeHDngC7UOGbOQSjEHkxBR0QXyRbo1eH/ruzv6y0+yuATIkGwu+FJQaEUHmmBr31ky0GN/gR0QbaYG2iOzdQak17atWaiQfs15bRBQb7nNVa6JBoPQbCUGq7+HfLr0wiDJeEjQZbEFdc2R0QWlkG8BO+6TpTUEmaAK0QasME79BxuQafC55DWs/Xkb0Eu0+7kQfbv70ceIitotd7O7+hFAGXEFLlBphLgFEEmG28tXoz9Y1vujwwVYbZr4BkUQWfy7Ki+CrVvWH7l0+ftFq1w7f++j6fklEEL7+S5gfkG4rmBCmxAt0EZ3eHZ3p0VgcYAlJQd075heMSUbtI0GvVBJeQRTEHcB+aAfs0G7fuBR0Qcq0GbNBJBdsC0HzdB15gVlEFe/W+GQUpkHCBIEAwV70E3+IWoTiwmgrduP6fg6L68tBxIwaf0GYZBXvQZBUGHpBoFgdsG7MsAkmwGs4wI82yaQRr44xxBC/QVsDbsEBKvFp5kH+/Wg6QbXDaI/WGDQVdOi3RBQH7iwkFt9oPcQQbkFZ4uX7QVEzYgZ+/nVmVEGMSWygfkxYHJi+2RtrVEH1/W8Gfsof771eTbnuYQEtRBWlgW1EHKWB40QdIz56H+OGfppYE2H+Rh/gRn4FEBg0QZ1EGmjBRlgbuA4mjByjPtRn6WyI64vrZYF+B+IJAZZ+40/uIn7tl+4wkBaAHtEh6xfuF6Hv1x4uoeJunIsB6Voe0VHqdB7l/uV0QYFB7Wfuv4HoJ+7/0evowZkf44/uRunNYB6mQemX7tlB7+M+DIHumMGage5X7sbh4VQe5f7vkK5WQe9UHnEx6JjB/7ntgB5R/ue5HjAbagwew37oiB5kA2DbDkTh6YEeWCHoAADMkB5+5ZIeP7Hkt+6VjBaEvgR44NjByn7jv+4tjBVwHjN+4KIeHYwck96enYi+Httx46fuvYwf2MFtjBQ4webpznZ+VkHp5+5Z0ewvHouMH+fuG/7qIR4Uee/Y5glh5WwelaHrdB77Uew4wfU94Mt2bwHpkh7hjBC4wcp+4rjBa4we4JaJS2O4weJB5m6cu4wbOMHceetuHrZ+6ljBhsQd5+Qu/uaX7twh5nfua7HneMFTB+QvVu2MGKfuMfHrpR5vjBrYwVH+5fjBgv7op+4vgegTHnUB77cerZAe9LaFIecoHpl+5y/u6JHor+4gTBKnnnV+4vgev37reh60acTptqhMGQAAr4wdwh4zkBSv7jRpwvAe4p/holY2AeM8HjV+6kTB2wHjKf4tt2FunI5+7KfuNEwYGx502BzsAOH+4z/uTYwRcR6rjBduftYh7Wfu/LHi7+6DfuokHii95G6cgYwdwB7WgebyHuJM580eOlHqsE62fuIX7vx+5hAe9f7o3+5m6crGHqS14z/uxmHpJMFd0eaeftgxY3MeFunPD+6kacxwHiP+5fB+SkwWMJ6+/upQHtX+6cQu9EwW1h4zCeeGFp4B7r/uLJHry15F4ekv7sF+6n/u+XnrZMEuYefwHifEELm2eHaEkh4afuCvHqbx5D/uMAHll+4x8eBn7uQBacoezZ/hAB6iQeH6HrAB7Esef4wS9+5dQO0P7iV+4dseVIfm8B5lfuGn7p1+7m/uw37n1+46te235LLB4IQeJITjoB5kAefXnioB4W6cL37pyH6MYeuEHiF+4FTBCIngRMFETBH0vjpx5cAe2kHpxB7kwekQHlKubZfuThHpwx7r/uVYHsXYH+fuE37rYR5eweqEweX+40iOyJHk2MFJQu+8HnHB6DUU2UHuMB6LTOxAHghB5U4UlKHmNMEd2B7wAPvB6pjBQ0waCz5WAeecHp/+6QsezwHiRpx6Ueyf7rVC71we8kwbP+6iJBUUVl1MFuAeTyHgNx48Aec9gYxh4G/uXX7laB6lfulUwd9563ceWYwRN+6qTB6VAQN+5xAe1QHlkh58weJunBPx7FUBW4HvVB6wTBVsHghMFpTBa0LhUB7efk/+HmtB7OiO1gHjwB4dAechHmoB7ZhOOXHk/YFzTBVsHiGB41fudtHuEkGdsW1Ywb1+5rAe8f7hsB5d/u63HiX+76weBD1tdMHbteNgHkbpxXTB5DHhzM5Rju3Pnh5MF/jBJvHpIB4+TBEMHhFMEhgePLPiCB6HUet/7nHB5Xg2TMwWmMFTfu8P7r9+694etX7pWMEEbmqZcLcOLfM2pxfkxMFr/uaIHmbpwffupYwT9QFm3mZjHhNMHmMejmHrzMFKfeLKHpch6CIeg2Hhb+6AQenDgRyuZmMebvHrvB41fu/n7g0B7bieZjHnmx54l+j+Hu2x5PIe2swc0h66zB+swcpK6+geS+HnuMHU0BRZFFkh42zBtoHuX+6ZzOzsAFwh6M/uhoHs7MFR+eo0wb7B5m6cAyHlzMFOzBboHi7MHaOBzsANNMEuoeM/7v7MEXIeroHgrMES0BNkrsQB5b8eXsHrLMFFAern7j6B6ezBQcwQrQG8yW8cwS6h6yzBHUweMB7CTBtswV+MHa0BpYfrnMFGfuetHsWB4xzBFfnlArbJzBpcwUWB5ezBeKQTWH4HAenUwUZ+47/uuxHkHh5fjBXjgXSADVzBWCHq3MEVzB0o1jRR4tgeLpHip+7RgeqAHj2x7IK+MUweF+57EedswXJJ4cQeaEwXdMEszB58Hu1R7Bfuvv7hLMGiEeeN/kj+6xjBcEwf9MF4oAc8wemMELzBhyHsvMGljB8CzrhMGige+GHqqkF0gAmX7ml+4Xwe1MHnsR51Ye7N/pTMFeTBNMwbfMHc3+mTgXSABOTB6qHsF+6yweksHuX+6WpBr8wU+h7vzBZgHhbpxfzBM9AeBB7Xoeef7isx7cQepYwTWNYu/u+IHgyh7szBXMwciR6FAeNX7i+B7aoeD5fk9K4s/eAkwUGMGYQe2EHrhB6oAe4kHllB6qzBB8wUMB6FOBHdFgkR5dQeJHHpEB6VOB6AXqQsGNoe8AHquB57kejTgemkHMAequHtDMHeK+kCLqQm6wMBiw9thMHkLBPUnlwsEGfuPEHlDh41wehIHvWkHCQessFjcx57IeyJHpAAAW6c8MHuX+5T22YiwTp+4qzBUX7vxB5CLBYzgYeMG3IeciwRIsFSLBpYwXpB5uce6iwQosHGQeQiwaJX5WQeLGHgPB51zBcsNjks4bjBXP7s5B4aoeRQHi+B4TfuRn7posFrjBB4fqT14VLO+lfjoF4++B4Dtv/h4hQeYn7uV+6qzBO8wRmMFbpB8UHgMh49QeG/7vwB4j/uyLHhVB4T8eOkwTRpzRMBk0loD+7A/uWSHptB7bQe90wd5+4//uilHvmMFgoet/7uix4//uA0HpOh7OMeoX7n1B5OEeKSwe7MF3Ie40Hs7MHNMB4GQWbeYG/uaSwaSB4b/uLqHvJ+5W6ca0HgOMGqzBiSwXnB4czBZunKhkEYg+cSwcLx7yfuhj/omh6yzBSiwcF+4OLB5j/oFbygwe5THijx4djBMgPk6B5pLBuKHgEh5BzBTGQXSAB9jBrYwYOMGfjBohHt/RalUeGCHhWR5MYesswbF+7kseFcwc7I5EacLqHtdMH6EecX7rssF2zBYKVjYsEZjBH1fjjB7jzB6/7j4h4NLB1CwUNx6NEedswRUpb0oeeywePE6dHmOXHhzMF7LBHMHlXTZL8eVn7np+6BjBn0HgOMF6fuN4waNB6RsewsHhXMEjTW+UwZAh7g4eLzHuX+7EI2ssHjCsGqzB/cwRkD6IrBACwTCsEb/uH8HvTB52zBgqVvAB7ogenqzgTB4MzBtQPiRx6mLB5sHpbB7Wwe6cwYLX7CYeWSwR2MHKAAQ3WLXtZBOefbHpOh7CYeNn7pKx6UrBSWQe7B5vwet37mwR6N/uooHvEB42sBSP7i8R4VUe4X7nEsGWyemkHugB4uYeRX7l/+4AzBoavpSh4xseJSwVKx6+sB7wAErR4lfuKIHgqsGdfuQbAcSebboeWn7nwsE5fuyKwROx7l/uLWQfSpYqrBZGnGqsFsrB1X7qrMEDLBvtfu8ADJ/u1GnB8D4JMeyP7u3B6PjBhqwVHX4greoLHqYsHDweZTHkAsETwexP7oqh73keX4wXWwHrZB7rgZtkFI/u9UHgkx78fuFGnHcx7NIeq4wSbpwIUenn7qfx7q/uwv7p4B7u4e71HmJ+6XZB3sjuPMEXfuDTHtbR4uoeJMHk8h4PLBpX7mEsHhTBxqHv5+7w/ub2QWK/7PpWmawbV+7ZrBtSwV7B55rBM4HswsFRLBdMwSWsHw/usCHqbMFYIeGqHtCsEn/uDQHk+wHBuBsHHml+6YYesmHtrMHLUelv7u+MGFrBiIHner5XrWFCHi4h5EacqswTuMGZfuG/7iVR4kacTCHoSsG7QelYXtmi5/qWVX7pLR7lYe9UHjssFvEeGTHop+5CIeNcHtEsH05BF6Fl0sHTjBYP7uOsGQAAhKwSesFxuBKmzvPuYTfu3LHlGx4xUecFHif+5yQe46wXgp4cN+vMlon+7azBXsHipMEVjBsn7qrMGr/uf6wWb+7ATBrgHpCB6Xoe4yHiex62geqswTMsHfQeEYHnJB5kYeckHnrMFuYeUwHmbpz/LBEzHkV+5AgeBqHoQh73zB1MwbN+4ZIeVsHnYR72TBG/7spR4QgehOHqJ+5d/uAKwZgsHZfu/H7vsh48TBR6wSP+7lfu1uQRHkEe/uNcHu4B5q/uIMwcOsF/jBsyHrD+5EzBg8wfxsEMIeJGnJCx4bLBGCwUJMEQkef4wdYACprBW2HkTMG28e6v7rsh77IeDiweF+5WgeKGwRb+7h5Bukfjj+6HIexX7qGB7EsevGwZ0x7xrBg4HuSsEjQeI1HoLR7r/uxYHnUsGXIe23HpxB4gzBWmHmOMHAoeff7l1+7WAANgHlzMFJrBYcHt2sGKfuXqrrJsHU8ejaHgZsFgrBxX7i4x6cbBvfHkpsFWgewIHgnME5fuCFHrMh5P/umX7vd+47/uvEwZ5x7FAeeMHtSh4xAedKHtisHm6cs7gShm6WYWdWHpWh65jBtyHqSB70bB9cHu6R7HrBa3AeJF5ZbBPiwVF+45bBabHmbpzB/u+Wwbgh5RLBh3AZZhbvUe/GwRZsEogeNcHpWh7bKez4HsoACNQeJf7rYR5KgeoaHop+4ifuGgAKSB6SbBqkHsJx5sEegiHm5sEobBf7gW/kHoYOUaFvlh5LMe9bHop+45TB4VHiEsHHrBwqwe5x5yweoWwbMh5Wge6IHqNR5RLB1gAAMsEnLB+6wcsh5ebBGlHu2sGhjB5X7hFME6zBm2HiR4GxoeRiwR1+71se6v7rJh6qfugGwb6h7trB4FHibpxtoeV6wYSsHfzBBBQbmh6vIeYWwefB5OIe/n7ibpzOIewP7s9sEELB7awSuME1bBhWwSP+5ObBYX7r/+4i0eI37s+h4uQeTawapsEl/uBn7l1B7AbBlaHhfMGYYeeGwYrx5xfuvP7lF+5s8eH6wc1F5dLB4awZGsG7weMawXGsEJrBY2wcmsHubBamwWZ4GZbByswWVsGyFBFWwSoABdbBmSwb1sFIYeGgAGJ+7VbBTngQN+6QbBw8wd9+63oe96HnWhhOTBZX7oPMHAgei6wSf+4pMeF8Hu5sHWAAilHvZ+520eIGHsXh4PfuyGwQ0B6xeBZb1rBh6l4eiGHv1sHzUeaGHs9x4nsee2wcleb8bBMAHhMh6HbBauwSSB5m6cMawVEsHlfu4RQbON6PRewIHqbpxSrBNX7oxh7c/u/cHibpxJFBe61qMsGW/uSCwUyB7GoeToHoxsHRLBQ/7hV+7Bfu1KwUqB7vkeq/HhMsH1eBO85m7sHA/uxUwQAsEprBu0Hu/MHobBi37rdB5g7BJunNl+6mrBHn7nL/4obB3+zifwGC1u137jFAC3fuMUAPd+4+7BJ/7n7sFdfumX7tDsF7bB7mHsXsE0acpewQ3sGcUewOHlNR6XEei8wUCB71rBeewSrD4beB5v/q3r7beBO85vH+71rBRewSXsGbfuCObqsUEnqezD5rFh6KfuI37hNR43Ue71Hrnx7NIe/H7kHsHy7BmWHlF+6tAeNX7sOsHm6cymwRix7JAeH5Hh2MEm0eTxQbVh6XIerfHpEh73IeHfHk2sEjrBb6wXzMEnMWV6nuWMFhLBIOHndB76YeRxHv5+4KAeLqHsNh68/uS2wRbsFLfu+WwUHsH1EeKYwS6h7lfuaf7rl+7m6cpGnGFsGyfu1OwXYR6cMevmwcjh75Qet0HgusEaoeV6wfAB6DzBrmwbSB5LfutawTl+6W6cUBwVTx5YHBg8wXHsElLBJX7gFx6nLBQAHresHyxej2HtTz4yvgtOHu9h6qUe1DHqpB4BAeZunH9h41AeAOHpwB6rUewOHj1h5g4eg2HttR6Q4e0OHmNh63Yek2Htyh5RIeiOHsSh6S0e22Hu+h7o4eSn7kSR7EoeOOHpssHc/u52HoLR6E4e12HoRh53YeqyjiN+4xAelCHqUB7rbBUOHh/sFK0eJIHkQcE/7BUSwWCh4vTB6LHrl+4ffuO37vlMHq/um2wUgcFloekSHvwB5ObB8awZAcEjbBxMwYRR6wHBzwHjbsGIHBqewbTsFubBaBwbMh71LBWBwfYcF4HB/nHhTB6CIeLYwVkh57rBvMwbd+6n/+T6nlkIFybWjPPsCB6lzBZunLZ+5rIehCHidsFGfuUuDmWR5s4e70waJB6WzBlaHiuMHKUe4cwcjsEaoeguHhIB4nAeFMHsPMGnIepRHjUB6qAerdHnRMG1ges+NhAB5FweM8Hm4B65fu/ywZvx6B4eEQHpbsFczBXewZtH6NbBBmwS6h7/4eEuwS6h4G4ean7hVsFlfupX7kZ+6z42H37hbh5ugeP+wYIh47xeXmwWxx4n/uxMwS6h4TseqswSYcG6fuLuHoKh707BhCHu9R554ejRwXp+6oAeckHj0R7aUetX7p5+5U5OcL5u9R4toe0eHveT4vusqawbWB777BjQHmWh7izBmX7i1B4MbBa6wWtN5hLBOxwZOB62TBJeHoNh5hLBP5HnmsHmbBc2wcn+7r8eOswUP+5rUe3hwXix6LHBXsHuEhZZIeqIgfNh6zIefCPvl+4jfudpHrzMEZLBPWwer+7y9+4L5nTx6/0eM+HuIj5ME2wKwa1R5ybBWOHhAB6KI+MQAcoj5a9+qiPjqUGCnO90wYQZbl7BL+wa+B5sceV0frQh4X4eCBLtr+69/u/NHkF+7obBhqwdCxaaQe2UHgpMGZvm+kwT73610eW8rM7ABq/u5MHqYsHPEWExHkz+6nq2T8wZYTb3TBkSwa9B6HIeQTHoex6ErBhywaHsHKgejP7kOR5DLBWiXiMsEZwe/ywTgR7uEeqf7rQR5m6cTYwUQsHDvmcpwTxsEnweHJwT4cENrBXUHpyh4kMe5uwXbMGC6OGMHlN+6kEep0wT74HpnO3hltQR7Uoev9HowR6hzeIUwXCh4JYePowegcHGfuyn7mhh5oHBeYgZ2UGz9+C4dl0sEiEeg5Qd5+T3TBUhHv+B6xnBCyPg5MEdiBOfgVBh6GHBEAHgLB5eAeC6wXUsGYHBxhHu1+4xAeZhHqFMHRIexQHjYR6QHBwP7qgB7m6cCSHhjsFcQegeHrz+4o7Bvv7iN+6qzBDiwaqR6BEeG/HkyB5GfuYZwYex7vTBRCwbeUF9bB5v7oKR7DIeDSwVux6DMeqEwXcsHbUevlHmYR7l/uUWnqMR45HByfHibpwxkeHYwaYACErB51HvDB5ZLBsn7llB69TBfs5rZ+40acQn7nigDJHBXywQqcGFAeH6Hr3+5SLBYSwQkR4NAeqBwbsR7ZEeqswZKcFTEe+CwThMFbMeLqwRhrZ0VBLbdtih7MQeCn7jih6YHBDawVecGLfuN5wbzMEJIeaJwT/+5YQeS8wQIsG/JefbHixB44oefCwdl+7KbBRn7hYcEJAeZxHhp+66fuTZwYTB6c7BhMHlhB6m/uwP7rhx5H4eZX7lN+5I7BIX7ijsHXEeYFwTP+7KVBhYAUuB6Zfutn7hGsGLYeWxHi1B5tjBAFwR2MFAXBWSwUhcEXEebhHsRcEzge4Fwff4F0gAaf7i3MH2fuVZwUBsF2HB9+we+h56fuAiHqxB61fu0xwWCR7/gen8wQAsGSweJZwdiQ78XB5WwYJcHvMeRmHiJcEqYeMGwU+cGiQeIhjgYoA4ke0YHubpzg7B7JwRqh7SXBZhwdWsHeHBP5wXj+YKXBkiwdIsEHm+Oh1hZcEnbBen7tX+7UweFzHqeMH/gexlwdJcFLfuzxwc+cHYkehn7rpcEAbBqswc+B6uXBqgHiZcHwAe1pweZcGwrBWpwe8U4LLB90HuGB7YbBclwTxcG/getlwUpcGhfulcHqJcHqXBDGwX2cGwW+q1zkJ+6zfusGHp+cFiXBXhwcFcE/nBY5HlDh4tnB8MHiksFDEeIxHgxcHVnB6OwV1B5EQBNQHsjsEkXB6VwYpVYf+B8+5kOcGdbBvEHuhcGR4e/WwTzsFVbBuv7sGcHWnBeiHtwh5H/uGlHgIsGQVWVMdgRcEo7B2m+KDB7DnBNGnNiR4dXBkBHpPx7KgeVewX1cGYHBPw/nH+YkrBboHugcHWnBjUHvER77Ie90wer+7KAAA5wRzMGbXBP5wTZcFhXB0iwTUfbVXB6v7kMdYWXBrZwfOcFZfu4cHkPR5Uac+yHjUsGmXBI5wZVcFRjB+NQXdsE3Qe6v7posHHXBb1wcqR7m6cGSwbWcGqQeW2wZb+4EkeEyHstcH/XBk8wdWcHznBkBHkWcEVzBZpHocB4ubBfsweH+4ezBzKwcYsGDwedswSzIGenYYmwcF+4vXBBVwQ0sHsXBhCHqhcHOtB7wABjB7A/u90wcqB55nBI5wZhcHPoeAQHh1cFokeeFwRxcHNnBUX7g4sF4sepGwfosGuQein7vx+7S7BtGwbmcEHEeP5wRcx5sY+zpwZDcEefu4EwQoB4WnBDCHkksHq/u4EwaLcE5lOTZwSVcHZfuJtHmAEHfpeKJ7u9R4XzBaf7tPB7uAeXsgbyY4FQBCmPt3MFdfu8NwUCuY/Ue4X7uQBaOzB2iHuJcFRfuPEwaQB6IUeOZHijh5/jBVuwTqB4aXByewSWR6f7BLOHolsEG3B8NwRCR5/XBM1wamP4GreacgY2R4y/uzwHnjcHtLBkAQe5j4c/u3ZHr2R6fHBTtHvlcFcQehVwUQnYK3BrNwVZcELQBUVrpzH7A1W85HsSx5m/uvqHo8cF6HB46wZ+U5dLBqxwUQh6pjBxlwcCB4/7BIX7u3UH0nWu5wfucEzgeQkwf8sFs7BhX7llB5TYemX7k2MEn/uG/7ugcH/LBkewabB7PAeodwbOP4lY+09QS3+7tfud5HqZR7cIeQmHoph6d3BgFwZvVYHLB+WHiV+7zHB4FHpvsHtLB29QSRQ5EgebvHt7h4gnBZGnGCcHBXBGXHmPcHtfu4mHlHsHVnBm9VmTsFWweEawXcx5LfuUhHhrsE31BlF9ljsHd4erEwe0cFLHBJwHuhsH0geJFHuVR7NIeF0wQTAHTmOKlHjMh4m6ct0HuTB740eviHh/cHsUerVHtRcE77Bq4wWOsEefu/CHuKx4NMeDtwVdsHoKBMsfoFbysUeNGnORMEGbBp2wRZR63QeVyHoz+5wHBJGnJ8h6mwePtwQscH2HBhdwfJ+6ZfumGHhbMHl3BDhwf8sFdYeUX7sL+6BceYDwRvcHhbB6n7ukx64PB3mwUuMHGfud9wZnsGG/u01wcvh7yUe/owdNj4f3BXUwbnB7jQeZGnGFU6BUeXsHmkB62fuRGnPFh7/7BToHp/sE/se85wRGMGW3BY2wT1+7W8eNcHtV+7oPB60wUYx5pbB3tvibMEWUehjHuF+62KBpVDsgzaybBSqHmEsFNbBSqHgcR4kAeJjwehsHKoeXsHrah4YHBDSwYuR4jHBcyHlvx7mPBcIHg1R7E0etSwU48E/nBrVHovMGpXBz5wU40HljBTYwfd+7f7BQ/7mJ+4jUehyHiBsFifu+lwSDcFhPBYGwQqcHqfuguwSex7GoeGRwW5h5X3Bnn7jfcF2XBmP7hb+737BVWwSmh5rIelDwajcG/fux6wY5sEOHB9hwWJ+5PIe4EwTqB780eHRwf6cHvUegDwddR5EbBJkHhecGffutf7plh6zrBGlwXtsEz8+PtlvDR64oeLUHljcElNBiVbvDR7FfuAaHmGB5qIesygbdP5ZgWiuwS48Fw0eipwUyB77IenRwQ9rZAz+Lf7olcGxfusyHq3R6zIeHf7hM8HiXBSMHsfcHp/ukTwf0cHwAeazwRecGNrBNywdkR5m6cLygd9R5abBZX7mGB5hbBfGwUpcFGfu5NwZwx6WrBgiwcF+7wAeXX7ghR5VfuRjwYlcEBHBmWHuV+7BHBS8wabME5fuXwHsIcHuXBT5wUyB7WAAoUHjyx41furZwYQh5IHB6v7sz+4i0edjwRjsFh7BVX7quMFgYeLJHggcGrbB85wWsh5Y7BKzwSfB6v4eq/7q3+6OzBsNHrV+7bcerWwa3+6ObBU23njsHeTBWSHuM8HK7BINHpWh7Q/uTTwWicGCBB4yfu8AAqUeogQWOZ4MwWdPHnscE6HBXdwZqoFvAeD1wWzx4HbBjUHrJh7bLBRBwYMx5Y7B0hwdbx6oAe8aweth7E7BapwevsGt3BHlwaJB4MtBIYFsK8G4LBX+wV+MED5eRzwROcE2nBppwQ477mcenn7qNR5xHBUUHnth4xrB6v7g8sFkPB/3HhOMGc3Bllwdl+6z5eDywQkx5/fuMAHo88E2vBhqwR/z6ItWfqHk1sFXEef/7lTMH47BI/HlmB6HrBeJHiK8Fd3BwiAcLQ481uIYFgdsHhXBf/PtQT7vAAFLwTTMH9LBzrwZosGDUeq2wYHsG1qB+LVpTdY1PBqdHl1+7p0eVwHpycG8E+o5wQPP7k3BHMwaTcGsnBycHmq8GFvBlNwYxcHznBB2wfnB7B/uvNwehsFPjBNiAefMFl0eApwXbQ5V0eZdHqhMEJtB+i1GJ+7h/uVGnEJ+6eAeCEHvM74w8enn7n+cFKke6/7m/U41vBhqwdFnYkcej0wQwn4kC+IpwWBMED0ebf7o9cEtQe09HnlcEBrBGQQRPR6W6cU9HgGh6ikeQcwXPR7T7BC9HlucFL0ecJwYnMEkacJpwdwh6b0emLHrJR52zBXBXoA8HZzBsYwT28Gp/uYn7iFsFV/uCWHtmsHl/uNelpdcGqJ+SkwTUB4Gfut9HtGsFGfutP7iacGDMusHHgsh6UL+79Hl+x7jcef9HtWx4HtBaoHlBcHMQeckHsoAC43BuVwWRpzVE+91wZAAD5weLdwZyh4qAAyHwdO8HNE+4DHvrB4Vs20DHjMgGqLBCMHmzsE7bBpLwdhsFloepswfmB7PgedswYZoH3TB7zHjE8G2oetHwUmcFfjBVmgf0n4xYePIHvIsEs7BL+wSQx7OvB1JwXfW6UMe68wVF+5HgewAAMUsE4rB6Odgft5WQe5VHqNMFsMe00wYt+5aIeCswex0GA0Oh9wZl+7H3BynwTa27PWOZjHu6sHsrBb+3ufMHbQeJMwZVMEGv2EEHvvx70gepMwS8T4Ov2IjwWI8E5vBrQHgxR4lnBlUwVSEHOwAPlHp/+43Ee70wfZ8Ez3BlUwTbnZZbBRnwdIx4+fBJVHjZ+6vEe/XzibR5koeXP7jB8Hwk+mDDqbsHHAeabHh1cHufBNn7g58Gasugmwa4x6tIevnwTjZ5JfB/nwQOMEUacrxHv+R7rceyyHllsF4Ye1GnAvR7W7BwTHkp+6kvB4qAdZ8FxIeNSHhN+7A/uygABfME58e6/7tRYi//uQyHjp8HefuQAHouR55fBP5wV6sFq7BqpwSLR7vPB2BwQzx6B4eM9HsccEaXBvUwXV0GBW8LnwTT+7G0ewEwX68HRfBKgAHV8Fb8eE0HgNsERbB8AHtfcHKfuE3wW58F43Buv7iP+4AEepyHtacGb/u8xwUJx7GYea0wcpsH3HBDDwfMcHvAemP7k3+5HJ+Q7wZjsE9HBXsHhfMFXzByUwVcB7T7BE1HmF8FMXBSoHhpMFloeqSHlusFKfBygAE/+5bPBA2wWEcEi/uUQvk6T5nJ+7wAP5+6y7B5v7ihsHBfBA6wYDsExQAwOwaDsEzge2qHsEd62SWusHoYx4vrBctwel8HH7BU9wZycE1fuXXwYxcEOMesYwdFsEuMeGXwWecHWfuhz1rC8HBfu8LwcdsHLPBQDwb9+7WbBdXHmV+6yzB70wT7cEa6B0THsrMEdHBqAHoz+5WweRGnNYB5grBiTHuRsF6fuZ7wdLsEQ/B6aHlD8Ea7BdDwUFR7KgeJVHpycHzMOzewY+8GeIe5v7jlsHG4ein7gi9b4/BOawflh5GbB1OwXT8GxfuzdwdksH5QeNP7jZ8FJrBx2HrJ+4i/BkPwfTsHpPBef7qyx5x3BDSwTkcGDnBDpwRr8E2/BHn7vD+5IbBrzwfyB6jQebnHvH+49vB7uHub8FXrBszwRnoH1TW6vwXJcGHnBcIHuGh4cXBEswZkcGbHBaNwRscE4/B/ywcUsG6fBu8Hq/cG/6W4n7kbpzw/BzP7g4h48werDwaV+6Fle4L5ks8HQvBClHllB7goeNX7phsHf/um/7jRpxhLB7qHjfR5lfuaf7rBcG2fB2n7hpcHl3BCGAddB55AeyXwRAB5GfBpgABaB72fuRsHibB42PBvtwVLsGnjB5vwXnsHyPBGlHv9sEuoe26Hiu8EYPBRjHpLcFEIepLwdRgGZkUXTwUFcG9/BYKHvQ8Hf7BZGnGCh76Ye3sHh5+4tLBNjHpV+5gPBLMweX+7/6B7etlXcHXMeq2wfdMFQ/B4X7s8x7+fuXPwfx+49MeJiweV+5fMeV7wQhsFQPBKGwcxsGFgeImweVR7w/u4X7tSB6oHBXv7l1B7fMeiCHlIR4X/BumHmtMF60e2LHjPcFFPBYSwbFsFHEeiFHuHsE77BdjHhMsF6U+X3vvhLZmMe+PwX+MGVjBVdNsyx7wcecBHlwYGIoeAcwcfsEsrBC5HlncFO/BcX7uUx7fbBK+wSH8Eu7Bc2HtZ+41EeqkHuDsGiIev+lsz+5OEeqvwQoYF+L2AZ3mqx4tfBOEHpMR70Ye7KwcT77OwA5pwchsFAAhBeHqVsGqzBvOwcD8HAp+ZhgVgMG3cuOAwSz75pYBP/gTCn7jC+az7nlv7c++ERgeML5jYByEQWin61b+FW/jTVQC++1AwUL74ztuUvvnehZPneTW/vSdZRfB/+HoWh7q/u/6wRE8HivBlgIQ9B4TAeF6HrZ+5QbBI8wWfcGHrBy3wdBR7W0eIxwR5+5P/uf/7m+MGPAe3kwZuMG34e0gHrxsFlfuqkHsXB4QAemKwep+7X/BJAIa4cHHrBHfzviB5ZvBGdHvb+6/geXgIXcB4PAe+OwbLMFRPBVgIS6h42Ah4GwbE8EOAhpRwc4CGxgeegwSWx7WTB+2/jnB7NQegHbuP8EN+uJQHi6R63C+xHwaobSV/uLMwZ9MHrVeCUwRbpwLrBG7zglB7eHB+yHrgh4N/uzVHsSh7+fu5MHloh6HVe0wHnf84Q/Bb+Ht7R5BDBy7HjOMEtgeXMwfm8Gg7+N1Xo8R64vB+4HgbsEvceedwRJEGq/uGEwdbpwl++8XjnJEFM7Bk6HrLMH2YeFjHvT+5DjBDtwe+MHHzBer7ossHArBP7HjesFVDBemAYLT4GXezYwUssEqfuDewet+6N7BGPHn9+7A8eCiHjesHy4BMtPoJXbY1eCywZzx4L0euywdcCEq0+jl3ub07deWXLwRbsE3rBCldqKsHzp+5nHizMEumBc1Vo1B5vgeMcHnYR4b/uqswRRx783BxAIYFd69nBs1wcDcGrTBpAHqJsGCTBLmHrqsGkcelaHshx5aLB1HHra55H++SZgQ7v4pmBTu/nMA5J/u3EwY9MHeueYn7sB8GpcOIywWV+7B/uX4wXNXbw/uV3wVd5ZCce8P7iN+6iceEovuJx6Scea+AfvB4ZkebIIRl242rB4swWbpyPrBTb7gyB5SghX/TuD8E2QeiIHq2+6kacmewUYh5nvBBnHtQxYaghpYwa1w4TQezdwR+8Ei/WGn7i7+7gEegIwetx52cei5gSlEGgjBr6ful8FucebPHp68G+weFKHolsGf7Bnzwf1MGETBeNwacsFoAhM/wY38HpRBUXHt5+RY7BUWwfd+5zHBXMwYTdYhHBA8waeMHSbB2BAZDx54se6YwYIB75MeLMwb7cE5ceRBAdSMGU12sYITLsFVgeHMwe7h4c3BK4wSX+6w7BdN3i/y47zm0hHljsFzoeVWwYusGiseIX7pgR78jBXeFo1B5oAe7yHvv8Gt3B+4Hv/h5ggeh7Hgv8EdjBY3Hr/R62fuU3HvOcFwges3HuF+5Ri+pUQf8C6pG2/gIZWh7zTBRxHiz8EqweB4Hvfh6SCuO3HmqME2rBEf7sj+6EAeqgfrbh567BOhHpdx7iH+jLFjj8HTghFjwV7B5LghERHsex6nseSjwYUCGaB+u9XjqMGIZ+eowXRLaI8eVrweMsFfjBakFteCGNjBt4IcM8Eg3W5DwRocHWvBQrwQCCEQghoRwcucE7PBErwXscEpLBiFHrK8Ei0e8rwSuMGKvBPdwZof6p3ecAVpy8FBvBFcwWpBbQQharwd+CGFzBiLVq+CECvBzrwR+CFbLBCEIaK8GuAhf4IcQB4AQhYX7kBCGIvBuswRv+5gQhoNNmYH7mjBMvHlmB5q8e+OwY3d47sWRvHu+MEa8eEIIU+CHM8eX2Hk8h5Ogh2SwdjMHG8eDEIf8sEj8eVvHl+CGivBhDXgPd5CM+7RtgzBaqvBKSwfPcH1dWokIVF+7iQhNPbpJCF98e0/wVkh5rIeLhFul8EqrB3EIffcGSLBjIHhzcHifuSfwdPx4IjOcQUBACF5Qe/GwUZ+4gzBv/7mbpyoAetzwcbx4zge/2wTXME58eHMwSksFL8eIXHlmB4IPBw3wWlcGLEBZIzuP5aY0eETwdJCHSEWt0HnjB75fuKkIZth4R8eEJHs+CEe8WCkHpr+698e3GwQDsEKQh+uHow3bKQhoNwcjh4/XBGkIYkh7aQhjDdjPx56Qhh5wYZCEeAeeJHiZCFmQhw/wZZCH+TB/uHgt8G2Qha+wa8x4OQhXf7k5CFAvBLkId8QGr28yQNCzTLiguTh/u6MHAkBWD3s7ACAAAiAiAAANAiAAAHAgwkBb/Hl726AAAhAiAAAAAiAAA9AiAAAKAiAAAXAiAAA2AiAAAvAiAAAjAidQhyVgV+xaTQhM0IW1CHtQhgAAHgIgAAFAII0IYAADsCM1CGAAATAiAAAqAgDQhgAAGwIzUIetCEbQhqAnn1CEdQhgAAIAIgAANwIu0IeNCETQhgAAHwIU0IadCGzN2mHVs7AB9QhgAAAwIs0IWQJ71jBPUIUNCFTQhgAAGgIgAADwIgAACAIm0IR9CFfQhuTPiehaQAAv0IQDCEgwhYMIZ9CEjjB7Qfoi3ZMLmY0IY9CEbQhu0IYAAC0CANCHPQhu1gSybZ/QhrUIX1CEjQhgAAGAIh0Ie1CFLQh51ge8ACowhT0ISTCEHQhZMIR1CHg5+iUtvjCGEwhmMIdjCGU/u/0IVdCGEwhXgjvtCEHQhgAAKAIB0IeDCEiee3MIXzCHkwhoEzoAACYCFdCGAAAkAgjQhX0Id1LZMwhI0IRdCEHQhuvVkDCEnQhXgnuLCFSwh7UIT1CHNQh70IU6bZqwh0sIULCGKwhcQno71Y9Qhu0IYDCEqwhxEwUora6wh7UISbCGAAACAgjQhq5AZbCE8whnMIabn7B9Wy0IVNCHLQht0IaLCH3QhA0IRxMHNQhoMIajCEdQhnsId7CGZ/um1tjzCGtQhy0IR1CGrQh90IRjCHiTOPUITzCETQho0IV9CGzA27wAM1CFTQhrUIaDCEbQh10IfHCF2whFwfinCFpwhm0IYAAC4CFjCGgwhX0IaS16iwhgMIfdCGXQhU0IYAADUCMXCG2DugAABgIrUIeLCH3QhosIajCHRwhdwTrBRZlwhFcISXCHXA2CqlpxC6xwhTsIal56vA2vLXqHCGAAAOAikwhPUIZNCGAAAWAjZwh2zPhiH6jwhpMIfrCGuTBGr3kkQGQAAQMIenCH/Qho0IdbCGAAAdAgrQh60IYAADSCOQBahwh4cIWTCFmwhnUbmAB4jwhhMIWNCEzQh/UbtzCGewho0IaZ3aDQhgAAEgIM8IQmJY9QhrsIV9CEkhOPUISPCG2whfXnv1CGAwhO8IV694swhfUIf/CGJwhtYlsbCGmwhm0IQXYEOwhqcIbXCGAF+B+tp614juUgAAOAI50IX1CETQhA8ITSI67QhVcITLCFORWWsIXm951wh08IYtM5fwhBCIVQX7OwAq0Ia1CFuUBzsACzCG4Ih3CQc7ACAAA6AgYwhy0IQNCHnQhtULrtCEJwh10IVvCG6h+50IdbCFZwhX0IXPYEEX+dIABPCEwIhd0IdfCHmh+u9gU2uYR0W50Ie1CHXQht0IXLCEKwh3F/t5+TcwhRMIRNCHbQhkiIdIiEzwh2o7l/CEPQhjcIVdCH0whYl/s7ABjwht0IUTCFCIh10IYTCHiwhuiIaaO7mW2DcIeHCGOwh5iIT1QFdy29tFm6H62SWu0IRNCHmIh9svj1CGiwh60IS3CFRwhrYTu4iHrQh27XstCHpwhviITPCHCwO+H3qga5eH4a8IZtCEbwhI0IdvCG7whI0IXvCE8s+PUIQNCG3QhPMIQNCH/QhyiITjCFXg2iSIckiGpIhHMISNCHLQhGMIaLCHSwh0YfrtCGfQhu0IdXCHFwhmCIfnCGgwhy0Ie9CFmIhicIfjC6S0WfSQe8ACewhtsIdbCGFIh7UIdbCGgwhiswUJuYtIh0SIe0iGewhzUIQNCE/whurPmzC6dHmvSIW0iHSwhPUIR1CGQAAnSIXkiETQhxcIX9CFrQhI0IduJ6hwhwCISdCHWwhWMIYTCHcIhfsIRXCFpIhU0IZgiHGzBdIAGXCGgwhqCIcXCH/QhqcISNCGLIh60IfHM7XQhGMIaNCGRwhbcIfbMEtQhGMIbdCEPIhjyQT1CEXQhgMIVNCFvIhP4ns7AD4IhI0IT8iHby+NkVmQiGAoh1krqWH6Pwh5SISNCEjwhmyISNCFEIhAKId4iFnX+GEnl/CE6Ih7UIdCiFMIhsKISPCHTwhgKIUXMHgK2yKIR1CFoohA8ITRJ68yWucIaDCEEohM8IWxJ5A3+VPFoduZSCuTYfhPG6FSu/KQTICEROB07Vswr63geIY1j6Nb6pB48ln2H69h+Civk0H7ZOBJ9AWgsEDdehvPn9K6/0BFUnrk4E10WIEQYz76EyuHTgbmkHjh+paQd3Rarh++rVlPbYbh+faQWLK6jpBPTPlIm4yMB/0fhIi4f3+izgTorabpB6M7leH6GK2Dyzsr14cR+lHPhUsHbOB3yvk1X50gAqiITdCHjQh90IcXCEjwhsCIWbO7ZJuwywZ0555M++ijuDCGTwh2sIbtX4wweLSLnSAAmwhQiIStCEFIhRSIS84FXLBYqzk3CH5whU0IWNCGjQhkAAI6iGbQhF0IeNCFeohGc7pjCHDIh5wXjT3ZWIhrUITYiHtQhC0IVbCFVwh+mQQA1Y2oht0ISbCGbwhfiITC4HXQh20ITjCHEI210IYdCE4whOyDrfCH3Qho0IcWiEjQhIsIdywGiwhW8IUNCEIwhlybu8AAmwhO8IT2iEdK2JsIaDCFEwhXSIXi4FNohLaIeqlbNQht0IQYiEzwhiatsMD78KuHyIQnCHLQhPMISNCFpIhFaIQKsGQRBWW/soq5KrBmqwd3/ZGrBeK5ogiGgwhxyISNCGnIh0sIQMiFoIhM8IUig4sR+I6zuNkEgreTA3sus4Ev+6C7qiD7BrBVqIe8ACFoh0SIUuiEXQhA0IWPCG0whqMIQ6iEVIhVcIdbCGpwhG0IR4iFxIh0MIdbCHrQhJsIUkiFVwh8SIV64GbsBxU1hGiFRohMaIXGiEZwhI0IS3CFeohQ0IUXCF5IhM0IZgiHQYhvrgcKD7PpWh6IceiEawhY0Ie0iHAIhO8IYsiERIhG0IZAADwYh0aISNCGxoh6cIQmiGoYh70IehiEDQh1SIVhiFQYhvawYupYjwhyiIZ7CEdQhiyIanCH/QhGGIVMiHtQhMyIaDCGAAAsggtwh2GIZ/X6Y5BN4tsGm6ewhosIVOiFGIhecIcxiGsYhuaIThiHjc+sDfraI6vohmiIbbCFCYhgyIbbCFeoh4mIWNCGSYhUGvlg35OMW8Cnu8jYfIhuSIV/CGEwh5yIa1CEjQhBmIRJiHsYhdb/l+sFcx4syIctCHzIhkyISYiEYohpiISiiFCYhkAAENCH3QhS6IXXCGEwhccIQnCEbIhLGIVCiFXQhUcIdjCH5wh90ISFiFDQhS6IW/CELwhgMIQNCGiYhX6IZ8iGHQhccIa1CHNQhdyIdLCH5Ih7SIUtCGYIhy0IRRiFHzWRMIa1CG0IhrUIQFiHpwhRMISFiG3QhPUISuiEbQhscIetCHtQhdSIbtCGkohUWIQeiH/QhtsIajCHDQhGGIcZiGzpuq4PqxsF0gAF8IXaiEYwhV8Ie1CFKIh20IUtCHLQhTcIX5iEDohI0IbtCEtIh1SIR5iErQhqcIdzCFVYhm0IbHCEdQhOWIQNCG5ohwGIXvCGQAANWIVCiGEwhimIX7CFnohaKIUViEjwhHUIWpiFzZWninqdz7eq2FK7hdz4cR+LWvic343c+57gbJ/4mpO02vh+iGuwhrUIdzCHLQhgAAPAIgAAJwIgAADAIlWIbCiEBwh90Ia0iHtIhsyIZgiH7YhoGIeBiEpYh/WIcZF5arupkPlwxYk8BMaHsQ+aAAAJAjcwhFGIQRiErYhTaISPCGeIhY0IWhiF9YhTmIezwHOR+H3PsRH5vhB9vASoUELQ+vatnm34N8+CXgTbr6PRe3fAcBx7PpWrRQUhu7d7Bmm7pDm4K6Wy2Dqsxa96W4+wQbD6TR+Hatun/56seXxQbfsHzR+fatmQcFLR+MJVs136ZCB5//nIb5KlBt8Puj4Ek9+JJwRqUEPbuWpQZQl4/6uBPgdq1Y5oh10IcQiGcE2HRVi59Y8wh1sIQNCGAAAQAgGwh1m1jzCG5YhcvPj1CGFwhEWId3CGqE2ncIbYiFwOWlsIc9H7662zsAEfCEu4hPSIZDiF9IhIaIZYTZ64hV0IdPCHTYhqcIX1CFjYhGMIZPCEEwhWMIeHCFHYhjCIbTCHfR+xBHiWUFVlBmuIX74FAx+7ZQcYS4liBUZwRbo6vohCmIcYiG5IhcZwZQiGHQhAOISDiFg4hueIXnCFeYhmBTn9iFA4hoOIaNCF1Ih2fgfZp5h8+BBbu4iG+4hdSIddCG9Ih42IZNiE0YhfUISPCFLohAWIS8iELYhVcIYAABSCFRiGSwh0sIdbCFLohwCIYGiFgYhkyIdwiGEwhMyIZNCG2whk2If1iFRae3eIb3iFRwht0IaJiHz4hE0IYviHKIhmCIcPiE9ohqKIR1iFQohD0IbbCH9YhzxFr0iFeYhB2IXvCHAYhSyIRtCFh4hY0IRHiGtQhOaIdNiHrQhQMIUuiE8whU0IZAACr4hlyIYFiHywhuSIX3iEb4hXuISfCGbQhymIXkiGlohmuIcHz4wlWwlQfDH5qk2vhbnLCE0whGsIb0iFlIhVcIdEiEeYh3+IQASHywhcMIe1CHD4hkxDsoAD5Ih2MIRoADh/gGBIZ8iHFwh4WIRtCEUYhPUIQgSHLQhtsIaASGR8+RGtpZiFYwhGsIaHCHtQhfUIaNCEbQh1BIeNCExohnk2P5iH2ohm0IZAAC0IhgAAPgIWMIZ7CG3Ih9yIVHCE0YhOZTmQSFh4hw0IeviHNohvGIRhiFLIh+MfvlIFIN4X+IVjCEYEhS0ISQSHSwhJWISSiGbYhZKISPCH3QhJ0IaASGKEho1QfvpZumWzVwQaR7cQBX1Qcyi6fXBPcHiBS7Ux+PNQbTH5GIBlfPmFAFOsWTtQSJj6pU2Ydwd5a4dW+qdwSXUExWuQ0IaLCFMYhjcISbCHLQhoBIQciEIBBO85lpiFcYho0IaRiEsEhgaITESF/QhRhIfvCELW+F+IbkiFX4hkaISwSEuIhfGIa1CGQAAt8ISiiHD4hocIXUiFzYhwhIWoSE7whfUIXViFCIhk0IWjCFrIhm0IZJiG93BE8gYWt50gAtyIdjCGTwhK2IYHCFv4hC2IdXCHywhFaIcViFwwhlGIROiEoYh/MIYDCGMEhzBIdUSEbQhEhIZvVYFEh/+IRXCF+Yhb8IUuiEE4h60IcTiHvQh2GIYvcGdHmsxIQtiGAwho0IYTiEoYhixIaESFVwhfUIZAAD9EhosIYMSHDEhHUIaMSE0Yhm9VlpiHTIhP6IdLCFxohqmIRfcHNAWHeIcoiEv4hKGISiiGHYhpMIT1iG0whiRIbRiHv1BTRIRtCEtEhxcIYHCEcEhKRIXPiHsUeQmITzCEJYhsKIdsiHSwhnyIVGiEEwhoeIesSG9ohVcIT2iE4Yh+AQZ0ea/Eh/xISeiFewh4yIdDiEeYh0MIeNiExEhlmIYTCHWYhLxIR1CGVIhB6IViSGtwhH+ITRiGawhn0IdQSEvIhiOIVXCFLIhB2IaLCFkkhA+IfsSFHYhI2IadiF3Qhl8ITGiGb1W6JIa0SFewhQmITCSFjQhcJIQTCED4he8IaZrY9Qh8JIZgiGEkh3mISSSEawh0yIaSEFQkhoVdmV6AwwhFGIcrCGbQh7mIWciEXIhJsIWUiGqYhGjwUciFwwhhGITKSFeYhxJIVfiHEBBNG3qQEEjYhrcIXjiGkEhHmISUiFWwhkKIdmiEzQhneITGiEfIhgMIR1CE1IhhRIdMiECYhtsIcAiHyEhEWIUySE52+XMeAFiFBYhIWITwiHhYh7WIdFiEbQhsWIYTCHTYhFGIY8SHbQhM2IVFiF+YhZWIRViHIEhKGIfdCFtYhkWIbwSFnEhXsIaASHAYhosIQISFDIh4pIVRiHW4hu2IQ/iGFIhmCIRtiEbQhOGIbXAGcM2DpIcgSEAkhXsISbiHDohIygaU0H6LUjZIU6SGBwhlBIaTCEcEhlTQbvb50gA4WIZfCEwohXZITXCHSwhiZIYHCGtYhKWIVOiF/QhRWIUkSGi5e8zwXSACY4hSGIQmiFzYhpSIU6SGJkhaKIV6SEoohzUIQdCF6khLMIejCFQYhkAAAdiF8BBAl1mOSHNkhA0IUZiHRIhbBIZgiH7Eh9WIekiE9QhUJIS1iH3QhzUIWeiEXQhLiIe5iEBwhr+IYDCFLohP2IVCiHNYhVGIQUiEFIhRpIStiFQkhHJIZfCEukhyiIbsSFw4hD5IRWiFPkhK2IX1CFXQho0Ia3CF/QhF0Id0SGpwh7pIaSSFVwhVSIXkiG1IhKKIUsiFbEhwmIRBSELYhG5IeOSHOkhE2IdBSFTQhuxIdCiGFIhQGIQuSG/0u7tHmbH6A0O/JIcXCEV4hVsfr7R7mz+/tHnq8GAE+hOtlC1ZZx+8gQSwgER0ecagfQ+6qtBmEtlG8HE7eAAvknR5WBBJTvt+xart4TgQWAn7OBB/Otq28HIC+GCfnSC4XqBjwwZNBavXuISAb3R7pBBbqxjTxZK62lAvnnQ6qJ+gzLuB8HNIBwSfsq1bHcWJutiR8GCC+St7rSL67IBnHwbcEGSC+2xPtCy448WM1rs9Y68dBxgfvp8H60WsyfsSEHiMe6nQf5SHTL+0jHmsn6SfOMxXriEEPy2jIQXQxYhuuZDDuKgE2hBMjHkgEEEPuBetrEL4o/B8/Po6v5MPuA4QWoH6PJ+9etjfoHxeu+fQXX0EIp+2QvguEHn4+bBgfRV5KGBD4QVTiF6/Om7jkCn4YDBEgIQz77YDBYEQeThQQRBZTnqax4VOexAwfCn6jC+lH1rCn5qAhVAwSoLbop++gISwMH0DBq2Ae6x6oRBfVPjc+4Nb+RgIQtT6JkhIeIb9iGHQh3pIcJiGhkhI0IcFiEjQhoWIWPiEYYhI8IVFiFYwhMZIXFiFyEhK0ISViFeH4gAAPIIaZIdoiGkkhUZIQeiFwwh3CIU9CHEYhniIcWSGn4hZOIcVtbAmBeGFjoSE4whj7VoB24N+u7iIb0SG3C+tpIf7iFx60geIdPCHGEhyOAZ0eb4Eh+hIcYiEJwhG7zv1CGA4hF0ISKSGFEhs+IbCiGmkhI2IXXiEfb+dIACkiEpIhTZIf7iHncWIkQRdxZCvuJafuex79QhQeIXbCEtp+b3Fs+MHuohk3Fh+H6v3gFHVgSL4gghC/vgpXZORBpuAfSL5v62CZgfngG2cOyZgZcMH6G2zu/jf77sgh1b7v6561vuUdPqz9bH8uue/uen5v++Lb7jEG6xRBt6fvdXbxRBl69uaL4AEBuQbiCMEg3eBIDoWH703ep5gTeYFhG2xBAcKA55RBkutuGL5AZ+PnVoqMHq12PwbiRYEVRB8H7lVEHz1emowVJYEoM+jUQboH7IZ+FowapYGGWBxowQYf7DRBhlgd1EHGB+6h/pR+46WBQkIfqMEYS2rUQSNEHkZ+ltIXbSF9RBMvbkoEBujBQJAUxn6QCOhTNHbOAwkBIdIa7qASS2ZLYt4k6qI20YwdNLaJFmuYqPsbaJi+N4vrHtKT+2HwnpAJ5rA40OQP5LZK3MJ5FkejbMmAqAniZLb6KecwTtGy4sCOkwXlwuDwQOhvLuZrbwxBXQrvr1Z9WB2gTi5LasSAYlAJ4raBo2OdtvrFhD9uggNlNYHuK2+vVo3SE1oUzdIXA3ZmiAN8LnOMEzPgFGLm0UT4aMuMIcfbaD3Mau8vFLbY/uBdISZp7/OA4CNheMEBDWE9IQ0DaeTWzgNvoeBOrgM4Lu4rbtkW3grmbEHefk4dITO7Zb0h78jv3A58igq5Ft1LY+2SnJtq0z7bfkwHOBXrwJCO/yAHaKIs1gIi8Byi7XguBZFrsy4GQOONgQ2HYfvgwy6o2uBE2BK0tllDZUTBTZLk9E5f0hzsIcO3ayB68nUttLadA2TMEO6uDbS2UwTjvEF3S2xstji16nc24W1iwL7NCeKstg0uYXB+xZtnsE4/S25YSMGt62DuFgAEcbZFS+4MtrPEHtAAVL/LQiZgh+Cd1tSTLW2BZCQaAr71s+BMthEkCYy22MthfOAcd246mDObZLwhKETpnSH69WQK5so07by29MtrRQHNn+P+AKzLYDpiu+Wv5bbh2B6rXu/EGTS255tpOoB+22norv+4QQierZFv8Nach+NL6OZLatS2/w1o71ZvzI0ajEstawJBqstrBbZSrmoDMrj9BKRSYFthgkHKJBHKADs06qzexIniDL4ouAH1AElC4ouA2qvtZQFuogslUBZDaYW2JcxHZYzLm8VOFM7LYdO+FCIQJV7ZRO99IaCz4NQAvstnm0H8JB7KtobQCJCuUhfshf5Vy2McttCz441evG4L5QDm12C3Ht9Bam12L1ANswDpy22iQZX5ZZy2dFvrQAC5y2RdISF+BfTB5OFJRE7JkIMgTufSHyIhQITh604DteWzvkZbbNy26jgFkX5FDi5WnG+E6Gy+/iQX5banC6Z2tiHbaxau084I4iF0s2X52Fvm7S92l0VvAG5vB2UTIa2E5zy21S4Cz545kaYkNvPLZkzBaYnhA4EvsEZLABpQD7UBO1doAIDhS2ErjscgB6q+cVtlhMIzMhY7GLnSFAee/MwYakFOW20J8JsUaNlEsV/uOXgKoAIB3uvSEa+emi9hzvpmZeRmdnQ4HdIhk0ln8rbaq27DgRrMFzQOVgznQ4HbiedgMnwIBRIudqDpMrZcmuOyQXcyFFjGEdIe7A7KSuyZAtiV7JzOfzIVawBUv8bjgY8kGAshjBQVnbZR+eYLIXhuB2MhgtAVCyHyAAxDIUQNZgoh4Cto4yHtkW1T1sxE5oSettFgXFYoshcZFgKNYlSI9BANvb7+SuxfnrSNY+SueLIftL6Nfen8vkGB61xuKUruiyHOOB2X1rrDK4shKq4JDA7u0B9l5ClUiZ+eZLIRHJb0qW45eP9qCE22YvLsgr7cPgaCvnsyFqMhC8UNBPDMSA8+LkKyEMoh70toKyEWxACTIQmPD4SAeTIRGYYQ2+K0DkyiEFfWgZjNj9axdePZfovA6BjWGy4OcyGjl+U8LnSKiTK2HKIddnj1CAIT1js07GLAdDIQSMChSepXXi/MHvAApL/EDTY0MhdljFjLYWshn8bpor5PIgPKJgPSE5OBD8DkeU4e6QofVnZ7abSoSMrmOz75OBfs5n6t6vEupK4CcUz5XWd2ZnS5YRpBHdFvmkHQTwkUAN8z5gV+qPFjGyHgyuiM8tMACWp2EbgO3OTYBezs5lceBkGEpcpojPJppB2bIXSrZ/Awl7cLfCif4SGbIUd17TReaZ3iXbaVou00XiLXbpshodIUhX5Ay2FldnGyH0VuzC8PNkGLh+9d/vsm5dK2kc8LI4HbjWbFsJo4DXuA3bIawbhdK26FTPQF4iLBeCLuVpzpLgU9tvUAATshFH3OSF4bTu07Ib4kT7SuHMNguyGzshziRCLDZiJuW0juolawW2/DAYSQ71I209vhnxo1AA5WnJR9zLpBziwX8Dap0h2i8D5azUq2tIEMr7arpBu3ACz17faATkvuzvgXshrwdvu8BUDWbIwWA7bEc+KdIYIjC7u2x0jpwICZMhASwSi74WV23roJjo60h2+vVonYzlacMSwWbeZfshhskPrUE5y230TnIBSz0hkAAOkyEOtebG1hOaa1JOQJaNk7Y2xOtidheJ6TK22qtnybYX22Ocdp20isg4KPgNHHZKoA5SwYVX6eIu63Pu5rZd9B1rNMhyEetOvWtlkADIchngyJbOBochXW+B0sGF1+tb8FS/xgKe9HIXSQCnMhMgTvL1YXOM3vOgqyFCshaoTrhkGFIOo+XtpsaOTebptiNX5z5eGdTinWg8h2MgPso07JuuEIgHxz6aC2ndIZFLZMVBUj4FJTbE9e39FkpyF5K2gSDp6HbKEAT8rnpyF3RYQStgAACjpc0q84HDvmmgAOlrYW880/gM2yEZzu+CLnpp6ZP+NPdl+yHZA4VTIfmiHzIOr6ClhIANvg/HIf5Lau6ghStjC4ElK2FjIQi4GAQ2ZogIzDY7IOYytuMra/Z2ZybhfE7Oc+O/XlsU7HO2e8lkmyHdK2+DFr/vBEDW6qVuEUBYy2Q5Ns1F5RchqLITqyEcrBZqVgWyFOrg7mtoXS508IxjrFlkHfaAs2QJx4C3VwJIXjsra8omPhjlRH4fvww6LqGIBQDWoKDvjchCEuzWQf8/6Dde/bIfop7fW4njLnim5sWw/zOtRZ40ougQAFxyG/K2j7IU/I76HguctpuEppMhds4AHpJC/ErNQX4q48leTA3mVLb1shUoXstnZmo2cKtt4l6cDeO7Fkby4r6EuctqyDjw+ENL/k+H7xTWL2tpNrbEAAXHIfdFgZMh1XuKCQBce2cKwtroDprBfSLtKracq22GXup3CCGAtEXhWyHlrBEbts+lYvchNKtgZ0B0q2fNrimyGo62dnIZsjYGDowqtgTcyiq2MOQQmF6LqWf3IVyrb3XAvQAICJiJTy/OnkZyEY5Bo3PtpN50huDV2DRIAfYOBodiQ57hDeG6wZdRY0FSr3IaonCOi+O1Tl7Zi5V2GTIbhwGbw2HKtjSrbUm2ZgOBpyFN0h2nIUe7aoa+96wWIHY08hXKtmOF6Na2RGDpZk5scBA6LtmyEzU8HQdpHHb3oWWqtrfChzZe8PIT6XbE8OQ5drC9gQ3WIsrv/k4ukq1iTqz44rv+Okfmu/50gAZnIV6HaBbeiPkNMmK8h27MtshuCh9WjDDi9rYhagrHPhfzjJa2AXIQtKiwe2pL/L9ra4LghRqLnLZ0QARiLvvlDqbBKvIdK/AkxI93IdgkgZjwVL/PBTbwx210QKayHDKsm0XmhIAoiAEdmPQHZXpoF/4G69a8us/KdiCgD3chJKtmwtY/ZWABAM7yFfa2P2tlJsCMchEbIftKi+8hWKTseuCh8hRASESHaE+SHWnE6uC4kA3RSAiEB9aQQXNASrYT5BM/5nDyHYZeKHIZD8we42bzITkjYr5Br2IeJi7s8hcwXo+yF7zWbDzFvqB0OB20trdz5CbmGKtnKNZqDW5fIfr1bbKeU8cGg3i/8ArfIRKICiB4d3IUjXaR8hU2wSjiEAeBn41gcr5Z9wXKtk5wD69WVXni9rbttOJqxANYAxS2kkQpqpAGDoVLcN4iSIa2+QdvuaY37gpbIVjyEUYOD64K/z5usAyaTs9z4oFBR63uDyFTa2A1gMTyHPMhZIdI7OD75Q7uhFcl7zeu+0qCociZQ+5KnqXyE0Y2dIbhbw5NFEVyXrOyG9sIwhgM1i5cO2eiqkhraGPW32tpXcjRQAdmjrYnY37gMUtjSrbI8heidmNi4+OMk2LoysHT8hmKtriiZXchGfQbMNaKGe3EgLB7bh8hY/IUq77iFBxmDhzI6uNIshQbZjhcog1zIVXyH87BhjIRiBCFGEoBtltLal7WucttbNbHoY7Mtv5jb8uIvctpsyFIa21CdlN4TEV2ubfg1m6O6WuDIb8na1qOXcgHZkjc3AAnru7g7tXyRzTneMrLkOEq1pqowty2m0Xl3yG38hOvgACig0DW9uwUl4GPRe0eiDiACaqQl3IY/yHE8hXuwTveaf8hQRRIjyGYQw+0qLB7Z2QAwLIdUJ49GeBbkBkg4x7BETIe4M4iq2kxcLWrTNEuObSHGRbcyAp1II6yEd0gkP1rQVaTr2HOIZmp4GCh4xyEYKHt+2y/IWpk6f4AkV0BOm7EnWSqtvzp6AB2/Ufj3sEzFBW3gbziHzFBTikPAKGLeBh/thjz6C4h0WHgYKFulAgLKCQa4A62SFQcGt5rh8MZnh9QAbLg9mtvHziCIO0sdt4LbkAA5goXNyFlchh+wXxnb18hLi1kIG4GshsPgWIHaRa28PIWMw7HzW9qDkgKEz3AyftqHQLhAC3mtixq7K3AbE3q4mi6AA2XIV9rZT+AORDjnbaB8hB3Idmp6g7WVPtrfyEd4uSe1psyF48hpBwUF35mCB8+5gYKFjCh+nITqrbRQw7YvHfADwx2N3ITPyESuO/ktrnLaJa2GTpggYT+kAsHtuFrbDChKi1hf+ASzw3Wjov2KIchh3IRngL6oAswoTSrbzChyqAIsKHD8huqditH7ylBO+ltEcGNPmn1xIcKGt0hCj1v9TbDLq2udj0+YweBa9SCE9aTMhNQgUkHZKAA9QgS3Laz42XIxqiyFNBAHodh4q73a2t8Pp3yHTu2rp1o+k5IchnWACcUwuEWN8LhLk6GPWRmoLvD4vEu6fIe32jo+BJDQMiQCdZAp7OHByGG8h//OJzYg4AAtnIbvyGqiON/Ia7qDIihwMtkiXYP+eVL/K1nbUVeovrs3AAXEAJIodQXZmiA97sq+0Zce2RagCMKFLChN27qwjax8h7GAB4q6H8hkLIDRnaG0Ag+ODAnZcq27gAC6YwtV2oQAP9qC3coNEgDfC7AchpxaInYxFChSgAEeyH62OXeroCHaqvmSkUgicFzchqEAAhrZy2uUAoYdSgEy2NEgKXPBwchGJwaq+aW5OIiPmriEX9gGuITq+abLAn+Et+UYvshWIoTSrbNHekLvvkrZD8h9Idg2RZUv8klrvhIBMchBZpj6yE8h2yrvuw4ET4Ui2thqb5UgApQAYAS66lBo/rutz6T4OJXIRHSHL8hV0fvgAASUyy+LvUAGl5O41XraUGwGuYMtm6bZIGuY0tu7iHhy2HpQSjo6NChlhNl49iSkO12LqMS4LFyl3IXuuAzdWGvtsEBAEEOUHLq1yHIHIdEAIHahi3W0DAFjLYLEOlR5icyH+S2ffRgZ0BIfAr2ts/cytsh3KJopUT0EO45eCIvDmS2xSPqywDMlUtwgLuJjEMh5SPiILLJRgW7QOmyELEOviXqHN58Mh4hDhro6IJol5Au3eLEMheYgVYeBpDwG4oe2KGRnBAyPkgU6uCALctmMq5/shBeIdubaXi+6jgPWYjMmAN6QYr6p4wuQJvkdtZnp2O4drDH77h216+DbyEUYufNrjxyG8DOrhDnqgBNaA0tAON9a2J2cXbpQWKOaC0wEJRF5yZuQf4Jta6y8hPd6FhXb8MhutTJuKEh8EXyPuBrbAG20YofUMGKmOnUtnlrahHgFS3l7HYYShtididoAr6EEN1ojPJmDesjgVFp77cht8KCdoA/aoNaFKTAC2ihX2tnD7ZuHgZQnlsl7IwAXHtplraeDaMYoZsKE3wuJm3riKFi7WHqkBm0GXtwoooRJLYiHwqElMewBkN6QxmueKF4Sh20ttJHZQkuqbIUH+BTChAPITyrZvB2Tq4KASjzchfoobIP49EOZ0gh++BMk2yTnrYnYG4AgrvryTbMSAuctloOiTDe7rIRjH48XO95DtZKFomWmHIQJIGPZEtkoSxIDaS2aQ8PZKH3S2efgT4W6FgB+3IXNyFpnWke1qlHaYchVkoRxgCTEOmHIeH+BeSh+syD5KFM6OKkgSdHaJAAE7IXKNYMSh07rvYACMChC0qHurC0iAXlQbNK7lp2SfIWRtZDieJgoeJKG5y2kUoXmtZjk2I+6Fx7ZRUAT6ruayH9IAg/LmtXIcYAeP5l5KE1Shy4kO4KHPIAV+AMDtZTQKRpLi0W6dHmyUoa1KFuCh9DIU0US7jwpUoS4Q65ShENQZ8Q6SkOzUocRKEDShdUoYURBdShA6YiDHaU/myUofAACpShCEgIi7bre2LHDllKHJ8h7hjqUABce2MpADmHav+BhqTsonBeperEoaZKFGR2grvhFKGNShTqXkke6xShM0oUY9ZhSh2JXmRAHBpe10oXNyFr0h+innFKGN8hj0oQTvjPHuiR7kyU5eShvSWMUGz2ihp1QFQNZxSh4EoatcHQU2VHIaiF76x2dkof5p6HW2EpDsonA6HWXkoTKyFAhEfUhJBVaYchCpDp/+ai8hGkoV5KHBih/kthnxrfShDxFjYSGEShUwoTLWiljey/Ied0iYch5koZpKG0ShXkoZ1YA8+8l3IUNKH/ku2BdsEBAgreW7IWrN76KedWngVyHY3BLU1vfSHJHuuMoT3yFIre0ktpLUGhkOiR6DgQLtroUwocGuCx/gef4JpKEDihsZrqX1aHguhkti4SGekOMJDp/+ZeShVthvw7aXshE/4Ptp6IchupNiqcgq3BLtQVpxZ6KqUc8GEnZj/CY9Luo16nR2EwgBsuDO8hLIoUn66ZShhgoYHUHcmOsmPrKt7yY+RZDhV4xT+AZLAOwyFPHW6mPgCiagShBf4Oyq5dyAufIenV6krgovyMfNZ1kOeeFO7yF+3BK5Tp1AEFVompnl5a6inu3hIRzH6+EhwNVkTyE0q2TBLmhIDyAA/DIRGXiOa2ytjhxl71qWOTIQyp6Za2JwoaI3DIOo5woRXcGiGeAkoWYKE0SAYEoYeC6WaOtcoSnbZTvM63tr8oAKs221KAlg6bJ248gZ1a6X3OtTQL6dY+8IWnIfOW5Vyh02PukyFyQsoBKMSwC5y21QoSsSEcrmSJ6N9p6lChAvIUZhBqih9vtoIkSv7W5goZvVZlShGAofByHRsucNvmEZ4rUumIoZNrYJSh/ktjIF7jFBjTIW/cGWYWrUbjnbaTMhn5buZ7L4SA7FHqqg7wDe23NjaKFaq2+FDjA8EM2+XiQXzU5sg2/OnqAbbiJAeWtrnLY0q25DgSTZCp12SK4F3ujYrgDmttqKHKu+uPId0KGx8hK64GxQ7Da2Re1qBzZr+IP7tonyHaS2rWdgZ0DHzW98oUoACb1WBodsBYCY8hokgI/KGma22WgHlrYGdA1gMtqKHOa26SjsxIBbSh1FdnhIC0sOOrhhHSH/rgQudkpFJLp2/k/mew4H6IpvIZeXAWkhisfro0HJShetrp1t5QRw/ktl3ui5ioPfTonyHsChSFQdrKEQBOIuXpWxZwmeS9kCxyF5a2ouTlJdY8oAlHtlhKE1a2dVyBIb4Z8AkV0MLyGHoOmAADNyGf/mOFrl1rZ0QAYR1t+t5Da2l7cPQ04zUWxT2DAXa2ihiEXrNrZlaeygoSeQ55NBaNTo1eDu8h23nr08E2KhyCoQipyyKhA5IdwEFiiukqINCfANMhmzIZgAB2Kh12tt/KGsGElcXnM8HZ4+T2tmybYRHWU8nttS4QBOXHtpNraCKhwJtsDrZnkhHVbtA0hDR2JJ0q7yHg/WZsoVLk5HyOX2tm7r78Te5XIcyVQc2e4adplra28h/gobiKGNMhwioYRg53ChYiwBozbmS2s7Iddi6t0hc3IYvyGolmXKtpNrZpMh9EgJSYQPShTG3q4misShCgoYUqGuCh1s1oXqCrLgFBtqxICHchOQobEqFzchAuIOC0FFlSdZnuvz5CQWgOqHlrbhshDY3jEqGnC6vioXNyFotBz1jqfKFsvBOLQXcyE3ChqOtlXl5yBB95nqTyHIOoBg6EgKHs0OevIQmG5+euQ0dnNl6Aauv/ISGy4wXe5/PjuxYmch+vVqjyEuqBQkFtw+CfchebIZQgEj5e+yoRJLZwN2jooUwGiIGEhQnkWyFZ6umc/uK0FychEUtt3yFvKhnCASDdYmchvCoXFrYjShqTvt4qHgiA5AAOVpwI2O5BPmq0EgqhGrQfoKF1ChJ/ISvEabChhN1sxIDEMh3WQCSrZEO20tbt3U5y1uhw1oJqAWV298oZa0FQkuA8/qpLa4Lgef4KTcG0qhp1QDLKGu6g2mvqVpxQCAjM8JqVryyhobIfrKGhtBbMFi4bJIZBSlnkgL5RoW/KoYOyGdvBgQQaBxZmyhqbQd7W7nSh0koW/U4naA+AvnDKGFGEJMSFkaAvqBoSAd5+Qpchg7IU20HvzgVEoS7t4aqhYkoX30bNHeWdIR7E6HMhDBXjM+Bep4hQ8O1l78Te1CAFq5iCJ2IXIWgv4zPgPIocyzwIa2Ottsk+ggKhZ9Htk7aqJ+vmgIOKEVLex2us5izl0OSztneKHVIBRkLrNnZuFOEHgZ5NbsaBI7lCDkQ+She+1sOyEnUg57QUeMZwdIFlIUCE5sMhOm3haDBkSh8aoVtna2se0r8Pl9J42Q+9jrfY6tWeYL9maIBeShWOCKvbY+WsEqvuk5YI0W89DhpyHzMhFi/qQpYLshT50DOyHIKhSkoXnSFCfB6rvjPSGlChs7Ia6QSuLgtHQS5taHgupQoYty7QshRtMAZ7AIshC13u5SFvF2Y3IdxyEbCeSIQT7BbsyhBXId5SHs52PTIVJ0FBwWvmgG1l7nzYh6iAnLbydBQudvIqHDeAO3+FAyELJ+sLlju6zbqhG6oV50E4GuWAoceqFpu+fDsj8qENeg2PIQ2KHIIWO4oVx9h9aB4VIYMyHLy2D7ALYnZHqhi6odMv59MhfJLrnLaJihnwodIx6XqhtlYNeqFD8hlqTg8KGEIAOaoQUXbBBe9soXRADnAAP6oaCKHVLgly/hVoHykEcLTgnLadsuQxmlDbJdyA1FiEHkCVRegkoQagB+ShaQ8L+qGcShiGthi06iBYCPkPwqF38hxvMM1jo+vcX2gTXnbvqhO3+KhqGfSSx3pphqH8FOoznr44Fx2Y+Z1uz17o6cDDnqU46HW28GtkXtYE+IEOvnByHTdBcoLhWyEwqhbcXiVIgbLgAyrMD6IGEAr6oeQdbkGEHWblx9j0ahUfEruPD8r+abVjZABVMhv+QK4uDIIWv+8OGyFJChEIoY1za5iuKVITjQ7LAQuYoVXyEgahEktpxqHVAAAlQmMqHHzWv+lhboRoZORUoWiQASO22rIew4GHPW1BDg9KGwahW2TuJzZkihICoWz8FTW2pmoRVpwl/gAD4FEi4uVuorkGpZ4+ShCn6AWtbzMONpns8cjBUAkJnkEw7Zch7Ioe2ECMF2F3Ice06qWuQudvZzaiRuifIUKHZulepY3rfCgSih/DtrIKHqOAs2tgkADx8hja4EkPCTJ2hQ8LPyHIee6moengDtrWD9nsxy5uog9soaIFhGCh2XGi3W5k1BwGoboqFmjU+5psfyGCcureLmNDBXHBrdIV1QYw0S/yoWqwDSAACqgN/RQto2huDp5qFQbgIB3ionAX/gDyGo2MgIYBVzAlqrbsOB0qAIwKFivWnMoWSwAJy2P2qLZyGVahNLboNkDlwmWgAI6qHJa27DgSUXaPZEk2tkoKG/yhSqAAQ+C59BU4QURT7o22hQoXZrY2a2zJgBd0jiGQ+inqtqFeSh2WofEAABKh2stof8E4fmTWwOdSDr8hkvIc6C5DGafwdlrKFIa2LYoVIbZrshr1wNMw4hPIDkAI6TR2AAFwof9TbZchEbLs1qF2zgjcoY7YRjyhfaobxqFce2U4od8uayahRvIf/zgnahuHIZhyGu6gKy0DGVCIAhmm/ufj7i+Bds4CRqFsGBOsakCXa39BQ3LkNgAjShq2oRi046+A+iniRqHo6hzEgK9WoUahpSAnVg7JSh2cTu57YdoAmJdnK+bM0AIAwYE55sKueXITiyE3Mhb4QefFZXMh8zIWDqEBihLfITcyGmGBQEQRZ06fKheYoVICENUhbEDkJyHWp4EEQQbfJzihIpdhCm7bK2puyK1yHQRBAjEJnSHfMhLrfBWd4aVe/koSML49chGpdvBEG8++jCoZYvh+suPrIeLjYbCh23NnybbNC+wcNml04gykvZdsxqH/82IPtuJ55HNOOkoToKEt8hXidpb7ZoqerEgO7yFsbWmvISCqHCGAyhAHNKHsO+VRgW225Vb+EnIfXSGdtuRvrpnqGgqhbdIRin73uWBBtmuhb+S23dIdRHa90hw9tgNxbIRBjRgalV6jUhHglkXqFd0hmnIVtkDjpqytduNSHzU+wn1vTQCW8OH53kVqEKKh2HsEoqHAe2DWtjQKFXo2QeoUfNaCGEem3i96Z0Hi3WtjbjZjs2eznsgaBk6hDrXkOTYCPwIgoVjaii4AA+ofV14wNkQ1XiREF4YWtkjiIvDPOee7Dt59Z/22DBMMLy6uMhJVtoxEFMm20FNqDqF3b+SnIYZLauDBQa5tSTL4lmSk3odV4eeObLvidV4NJELioRMCG0p2OMocRKF08hAl3iB1ZCXeNsQLIqG38hDb4LzqFSCh2stghXavXAkhAATSGoEOiNAKxyGV8h77gW3yEqRBBBtljjagcAer7ogaEl6hjeoeXqE3AhiBoUmN53AhvfvmgaGM8hzeoWRdaMQAepgW0MGK4BHQwUaYG0cOygoZGAB9DBL65npyGschwwwd5+QZMhdvTs2qHay2+tPi5EEpMhCwwcgG5TChcM5ujqGt0hJXIRWyFYe219QKZXay8hLPsOjqHhsh4dLkTqFX52N8Ls+k4QwQ3Stild6o6uH1AAfyEvjwNEgIqKGSahYRTFBUzCq2NKti4KEj8hxXIdka4NKec3IeEhZeShLmDoxABFfgyy4BLdbBtAhktg1d60ghdoLojPJme2Vs8J4MikahWWttbYAwoAVWoaUqGG8hdEAH/kAlyh9eJKYKEVCh1cocUAC+3eM7tkCualshds4ECubcrgqWoZ1KE6Yu+0qCPKFD4BcwDp+3oUahcKwudLYsceNL6NpL4WAuPQofwjZRQOVL/K4uBXeWX3jpf073eWyTcLwq5ydWRVEq40gn8uDh4OVpyG1eq0oWG56Be+WMGkXT7m0A5WnC6iA/a28GodQxYOHg9RoR9d4M+erotgfwCyOB5ovj6LZ0aA1oIcT462ghctIc8Zz+p2Lobvj15cSkZgdt7qEqo4OfIRgJCojBQRtob9YW8hCfIVx7a5y2sgAGVKGh9W23DoXyHywA2BAbnqEsR2yooSZC5JK4qStlUyGpghP+/iQQECVeqobpsaEcih0E8LfCii8ALIwXITY7BuEf1uEUAwgAAKnk9b41ghccjlDKHYpBeEoZpKGhrgZUoeIp46YAEYvrH9Y8ZQYaoVkAB3iMs2Lu/OCDghoGfsOCEuDOuztkumjDLqfwdjkmhYGA1cNkKyH2S2wXVnEyGJi+MXVgh+LXC+KYvoTKqm3eMXBLxIBulA/MtrBn4hFwFldoKsagqhwBoRILgcqhAuvDfyEichJtISYQEqH+SGfm7SGychqobhJLZa6hzPDp8qGt0hDJoezw5MmhhyoZtIDHKhU9DqcqESS2X2thcqGqhuVyoVYKEOgkxDPpBCE+wW9yoaH1Z/1e0hFmKaH8LW0NDnnd5smhNHQEcqGW8OJyocKIA8mhBUoYaG4Cmh5PQAad7qWB5EIQwz5di+xgQXSG7+S2rd3vOy5tCh0KodsqH6KejAzo0yH6xYiKoQjY4CM+fYvsQ156WBnzIQ4aEt8hjyoe7w7SJwEdIU6aFum2thFmryEI8h2qtod9ah9Wk2ti4Rb68h7w3pzKH3sua6odKo7K6ycZ0Fvd6C6hkfIYZTKvMGuZdmnyFEKhvvIeFqE2a29sofIqEqXW4xQfMyHre2D64K5CGNhu4/lt8Mzc6hv7IeCqGjM2BzUPop7MKhhvITmPBMjO3wzIfyGvEu2vIV3qHMs8ofVgGaHFmhQZoYUPAhmhtldojyG7twkZoQVKEPchCPtsmQjf6h8ZoSiKGJmhWMtqQp7HsAHmoQYqG92urbIet7Yua2iXEJfx5XD8jgrnRn42WBgdIQtEGQCOdC4MFJ4wkBy5odCb611ozddtj9bCyhuQDr6M7I6AY3CowE4GOyprnqPuYL22CrbhuPCQ52D4vmGS7R6eektgPGhCUu/0wMU150CO2MDtkq6ZDak4AkYi7/G2FfNnjZC1WB1dIAAADX31tmB5510hNgjs4AC10hFYLpko5kwA2hcAmZ5BS2FJtoTEHOS2RZeIbPKck2imoBBaG11ojkoQUz6pVEJ1IKBaGQuu7V3H8f4NkW3qLtGNQK5AqodmpbYdSuV/bg095CQOgmADhaGQuu7tgAxIBCm2C9IfbA4kWhaFoTILimOIDBMM4DbB529GAsRnZADuYYLpko59fio4LiJ57LmhFH3GSS5pBO+ZFpOoBWAENJ/mYNb0Wh6K4J9LaKeeFc6tsaFeCeAloTzaLwgIxQTk/SHSWhsFCLDraGwhtYlnUIbMiAUzyPcz6q5+EjTkbTC0yAq5ATC0TUR2VzAIxMHNGcnuWJawAK68CZtqXnAn+aHq4CZaGXS2YUvno+D2bgO+QkrKGtxBBUCHqbaPkBIFUpJJL3t2WOgJ9LakteDTBtqqG5m2akwVGhbWriDELlsZiNm2fegP6pCsQu9Ing956LxBcMttFBTmTBhUdl4RB2NA8ttqqK6vEu6K4JQpj5eeRxNBDr5HVUWBjOCE7Qg23Nqn1qBArm3NdsYJpvdoNXniewBjRgAdge+KFrMAh5oa4uDNeeZJLsebYuiu7XnmNA7QD6YZFlIyEzQOvorvfYamteMstn82Kvm2piNF5C4CChAlNgFpwF2BrSSvbqE/S+S3niFRYgxa2G4Ep7aZfgY7tpdLYgy+CLtklC4xBaeb3uhbaLTOJcxA27ZU4Uj1toYq7MJBH8NsNUqNUW/dgQwNY/Ruw9gZn66RSAuofuDA7Sie0iQXw7LuuMgxBHLV7fee0A+sLU7atOBB8DvYESNOPd6GxkEUfcd9DsYkHk4UBhDnhaGiWhGltlGE5/qW2i6LYkGV+WnDISj56zbW7AACGr4mc+f7LnDMFMwOuyggWHYLFyKVAFbL5ujuOt1rdnhju2awHorwD48E0q6r0yFEqCADgREAD7lQaNoSMyGhIhYxlvlaGpR2Agrs5f5SwOVdgKWQBA00V4Nh4eCG0OxSQha8AqxurUlgbQ6h/yovAHhK4kOB9zIaV+BnxALkQE8X5G/W0eng3AD6oAFsXkI7by22oyQbM7auSGKa4BaIACdBjVtvLbaIdeOn3iRQ5y223vNoSnaPMhb/tqeDZyshFIdgXbZCOB41dieq7S2hykrtMioCWiw+dsnM4jSAMVDkLaEa2hhltjR165TWzIgOSwB2WhVm2jPL6bLg11tigJDG2hkSSKbaGC0Bq1oVbaF62hcoTkWH4Cde6c2LxIBN2B31tpCkH3X+oW2K7aEuSuEptoSyG/W2cG2Jr9bL0Uc8wNanam0Bztoc4ygh1e+cDixaFsSeXtoQwHbI22Okdh3MFQV2WOqJjbZlnGd4ykDTTSjWsLwrWY6l3gkpdgP55WfKqCthUuD5kWpmiCR05WAEcFoWFvg3WhSJoXP57vkWhdoXRaEQQAH1ob1aH7Y0VvjuGqEBROcHNlXEiA9W0ZeELaFnzBX+1uEAAzsAh6cJgKEi2hq5Fg3JY6pB7+dvLbbZdeHclmlaEzuuuttpQ3Zcoh48lmPaGbjwwZdgdKHliONY1vvHorNyC84KfC4js+7b2ivaFiShQlLrXa69de/qQUYr4v0BHBDoZ1KUKhIA7D/C6R22X8AIWHaQyuQtQPk8p+226AXmwPKYpOMStsAi6R22yQ8PRKEmoAV9oV4r6gIuiGdvcPYR22gbtpzaEsQAf8mJjK4WFoQtocq7a3ROXbtodSCXzWgbtk0EDBu2A1djKiHXHms36gsXKUkAd4yj1J5l22L2Xgs8xYrgWreIQwGWE27jEPNqGCGAA0nvvHpYOh0QthzDaYOhTDnmuyGTsh+Svtt+S4OhRDocnWgm6OG7ISUr5hm2kr1pNaHTOBRIjoBQKxa2T9Nr28ANu2JPXibK5aohHSvieH7uLB+qISs4GGoh6lFhjHYwLgo6KJzaHxMhVdgLG0CQchlmFiAejkHWZa1u4g61wOiLjGDaYiihbWtn5Lac2hQljr/aEWV24IAMXK7SOhYHOJ7nbe82QtodP1ZCLgRIdmb16CDOtijmRyEFV+WQXlzHhSOhoouIkg5QbgVV4E+0aaUEijoXHZjKOhA8aMpjZiOh/wtjs4FoZBPncLRPJNGudVDjYHaichMIAEnE4byu3TIUWgBSfWri4DJyFw+uSe1k0YhXMA0NodRkH9BevfNhlGCqch4U1vVLaJi+39FoEfCTgCMYALBaHVxQf64J20gkEUVyts7I6pOhQlLg5xBBK2Px+FZyEIHWn/0JMnYMq23KrvfaFjIu59gaHbYQ1+2WgJjbaOBIGFoT8sEJcW2StkVeA+6UsFobXzCL7KIqvmp+IIuuIrvoX/hzzm0yKn9nY9ShyEfpmRTz0ON18lXIryl2qEfocg7YMWwgQX/I4nO2zmqBcz4XO2LMQJxEDQCuiJAEaS74MW8GAsG7YVMuli+Hp9ZrOhzUXpLaEcYAfreNfaGGsB3cjpQABfmh4G1q4YgOJEEO2FDaHYKh348BObYSKuaN3nCEB6J2d9AIhV4EDBxyDojPLzHeRNtsoq6K2SpjiA1yFKrBGCTp1yGyuB6XPhypZIOhkicAig7Z2h58jtgN6nNOrLtjSi7TyKCLniAu4DC2AtoSxaEAq2E+QK/aHYAoMUAId9omqMZ4XraLZLch3JbiUAAYWhIjFg0kRqSApavqzNYRmEwyrEq7b3JeCKtmtkF7ch/BTixADBmGhTpAIN41q+p3IQUZxeI2eq4G1rbMlBmlBAVCjMWhO7AHB7YECuks8F4jbOxeT3ITjB5bt6oDodA7YVOhxNDt1gC2AAT9oeUa4bsB72QTPX5sq2RPIS9QDlOhdTtq9rbmk60roU30HHqu1Kto3q42esXVoVfX4w8ho55kTyFc0u/Onjk6FVAArFQeg3Zo8hYbgRzg78mhGpnno6EfYOhzgIT5LEV2pOQf/J6E8hsqTjAuCM4uxMDmDaYrYYO7AKesGF6hBdLlBkG0WhAlNhgQCihI8Jtj+aHM8hFijqzyGPS2h1IPEyF7ShrFQViEzeuhzmIUm4E0CAFUzMag4JAAX8ABB4EbLgUenkmdboXeq7DhHZiSFIG4noeaFwlBfHjipEgio2kydgl7aGZux6ajzjasVBwxLpR7bXteR7tkryH2a+/vktUACEp2CKAIj5AQ3W0qEFuaHR+qmkdrxIC7I2OToa/5QQlIi+yooTCEuMq3CBqnCh9WuyNr/0amm25pOg7yH3YhiZNFui7BmuLm3gJRbd1AYq4HNxSXe4Ya4KB7YXxafcSCra6TWhbuIGW4F/suFH3Jk0CHu2kfTsvXApUAvLoZWnZ8SAAroY9yH0pOKxtrsjbD9W+Azh26GSEOl9FI7E6L7Kf61v2yFSc22xJGDi7wMoOBwl5U4XieaT2EbQD58Qw8AOiN4ZbBtKdm4g7Du+UGQT/aGuOhmiAG0k692h/QAPLbYvYhgOzqnKGY1IrFQXo6FkquPNoVV4ERwo3LoQD776pOF7gUvLZshOt7gRfkFgWMtXtrqbxV2AajobdygrJeUHoUR+ADY2sLwqe6FPtG/WNp17bGQ+k/Ie/kFRoWvTIvqgCROhEJDpQqEHLAS7oXA3aW2uUxunxEDauhabobDa5MbWYTbrsjZY2ueKDuIKEf4qh6iE+0ZeuhllTuhnbYuh2UADdsFMYOltrplrasVBNY8FqwDM0AkDoS26FIehwBdix6E8fYJroa4uBseBOZtpABAnqurFQWqaE2uhHEdnu6EByYMVDixjaNuhCQAJwACale228Ek4CM0uoroWik6PB2iAodx6Fo6cxOvmqx7Yeh3boWR6GasAHGAOibbsO+J7oZZzZnuhLI+I9yGM7Bmcdmh6Ef4qkP1mND4WYOkS1ra6EoehVAoWyOQx3mNhNtck6xXghEkMwKGHmhEPQTvkKsChbcoZDaFrUO8v/FbaHSehiJABE7Y+R+7etgFaH66+iinjOk41YgHRhBigDrsiKZuMlebwtANfwIfaH9mhynoTGABQZBEgAPu6FMDAqgoZNm7JeBU9YAXGiAuAILtjyIA6ehYDgJiWCs4hl/vql6iseh1f4OB6F6q2rbWhWt6peockoJcUEgZutw8N46FFFBCrtu64xGewFrtuKIBrY2/E2Llq46uhlCmHSICDeBBewXutYiuhSroTqOCK4uTkykjkBYkOldcH/JgeaOE6nhxaFNOgRXCHtqGsVBd4ypEKER0u0QodziGI8+/ewYbaFPehjwdgd4EC4hPevvBo6KuhMC4LcIBE3M0roYVaF6BuzJAHpt4Ceh2y2pEqG6rexVbpH4F6COhskIt6HLxKNQoRHi6hXMKHoWOXZXpoDbtuLiGwB2JPLq16GfgAaToWvXZbChZV4JxN5LdwAqdjqta/YO6SoX3oAxUOvbofDHb4gA+P8EF6E6ehinthok54+hQlLmaICvzgpecEJY4oNOWeviZl60a+8XtpSHatihj64JFIBElB5BwZG6FkquWODjsKFlAArFQaOABpOhV4dvI6HLUWAloqlHbCGAyVoQqzbHZO+8VM/NApehIcTrmp6rehlntkz6FKqIvLZqwTAKtKmKJqijb0p28wzuSwA8+hhYduj6GD22GGQREcF84OCuIdkIFK4hvIAMzz5/d+qpQReH7r6ucRvkF+YCChYcmDHbbAchErLmSHZKehOh4H0ACuOhajoZxICQehZcrj56HhihIuruvxCN6SkhDnS6FzehXtmPhXB/2h54Lmd6FROhHQdlvaHeehwjnuCIAeJeaHtkNqFpihr27hTN7/1ABpQcyDZiOhrgAGN6EXehRpLrQZaPW28VoTLz6sze7docUb65TW3SLqFaHBWhSloXnm475CNYoYeaF1ih2Brgc6E95OdDRI4EjhaO8BpItiBom+rDod0yHaguQqtqMb6EEOfYoUGHZ+42FKVMqgCfmMezoZOXaR22YHoX/aF99GiR0ufaFYy4vUjpQU6emANlgOFo74ehEhrm77Dm8+FBHqWHZ8EOl9oYA6FniuRxvnkTYB+Bk21i+rYPihFujrD7D9+hiSXsYQ4GaeNhrsZkHnguQCdpv6EtJ22/oQsj5p9Wh6dmmcEN4hpFnv667pMcqjoc+aHvuhf61qw6HzSQPU4gcih77wjNABeHYUdOY/XuQVitta3/4GJ6FhAAf36n+tbggAb/BqnQAOJOT7RnupgIl2qQACwnbkhekA/kUS4L6hoUAEpN7TMOSOdljjY6XWgeobug4x+hHs1mPo4a2hOA/rAbZwN2jOLgeMAAoopNCHY2611ouyNmS2LBOhpPVrlp54oAbAYbUw5iShC/oVnr7s+hz3ttW9bmFAWQjo6MBQkuDnthd0Hr0OQPyEuej7R+u1Out6i6k2FNoawTAO+2hLTtHGhX2hVmOBSYSOR2ZEgfRUEiBhF0oXZvCyy6EGtlwuC8k2/dISGyE6egCzoZoGGisWYxDnkaEGBhKBjuCACBm+DjoSonAr+hqjoeet6sQASsdhKxZwpe/BTrY6GXFB+5QcQGF0kAaYgMMupPWhmxDrMADh/gxgYdWuBhoQkfPvV6HDEuh51pX6EqJwpZAIdvhvqKE6WGOTZaRAkJoUJY6D+hPUoddnhlPgPONg8AAIBhQXoXPaF20u2JDkkGFwBhZogLcICsOh/ZoaYGGpBhkFVqgGFn6iTZNkUGGiuQ6SDtP+DsLgymNqabbz2hjlYlroBSKuPyLtlUGx8+lP5hEGFl+eh5oTEGH7ae9wtjWryJBh1YQMkGHCGAqQYTUnADWAVrANe6GsO6VRvhlcHC/mGQYUSQ6HFuaVduVN66Bh7IAP4GFVXgtVwWaICrzWcbtgJHYr+hpw/saR5f+BjR7mnz7EyhuLodtI5LSAkwYfnHYWV2Irrj56EABBE3llYGFPWhOGiMYGHTJixVoU4GF/yYpNwWxj4GyhLpbhAEFuY+XhISncFJyhecgQ+U5E8hMfoSX6EW+hgqxvNRYKBwz6Vo26GaUECQAI9JoSC4BywEJY5K+h5cofON57le86yNHp7OguILto3KF9aQyZCJQuB4WhmEMLpLYcIuuXNHUSGdyhop1gdmZ0kActgG6hDpKOM3oZko5jWu9a3nDtZeOhy8SlfXavW+HNrt3z4kUOKxtszQDNuhSnoW2KGHluVIYakBZ2OhniDg5Q5X22m8oS5l7NAWnnod3yEIOejMQa4HaudBt9LgJRZwOh79QUm6HciAQhMEoADZmwv9QeUwjmLwojocyYAMmELJroeojH4Oc7DtTOTSx+z8oRyub24OgydryBBgqaO1tnonZmiAQnoS+q6ZZIqydlW7Yr8hL61s1DbOOhm0dld6Gk+hgXoQTa6/VBtXwFBNaWgAq7oaInaohhHSXvQ0QwWufcSE+0ZOcSy8AOo6GahhTK4FBt5iUO2xntBaFTDWAtrt7HYmOhMFoaAY4pVOppBKYoG6UOikrplkisOhujwYVU6YWe1/Idfi5ee2QtoUXoBY+2ZogAIK5CehHR1kJY4r+hvjweRbho12xvoYGZ48XWFrtuhDZn6iWbof+d6aJEjTFgynZT9WebobsjbOpyYM1Dr4CWKikdrqBjadkAHqLvf+AP+2OHoVW6Fep4ipFBjK5thhd7obqnZ7T+vSgTjQ55UOdzoedP5DUOOtDkc4CRJUIzwe5t7IM2SboUAy5XOhhYds8cg1hhmY8LQ04r4AeygbTaHnFOEroYVaGUSAbuIA77aGzyhAYYF6GX0UWWtjl6G5zM8SoVdU53YILBgC4U7nguIbbkuGGy022rNnat6xmhQgjhqZ7T9Wwpnq4mhkkuc2NtmGGM+hMZpqXnCOBhAgrkrtYvquZ0XsigBrNAlqTnxIDuHIx3odX+AW0ApJlF/dYDp2I+6M/aG802QNGtwuDlrg8ICExETUOGYLoR8rajhhxdoWaIBXOhpYYf0GE2AARuXh354J2MULQbtnb3R2HhDkJS5uuhAWNh0dZbhhtzoW+GFVXgKyoW8XYkhh6yoVI775OhvLZvkBAYoAMgoLy8GfjWBnofb4Lmehe0oZJ6HpOhZNxA64xcuMNScFz4L2W+5WDkBGHGehyrwfotQ8RhEkYZ3nZcuMRCAbnaGZ8hiGdgJSH3megToezvgNnIt3KCNS7DaI3iNlKg7hqBuzNv40zxhhyE8MfaFuvBLNDlV16auhg/DkxAC7I2XNDgsXJoBhhFsB1q5GBBPNjnqYjhKu+agdG8GGuhXC4Opvh07eYcrlBkHiRhpFoZszZGtBdagZTdY8j6/YYSYy5Uqh2Avra0GbVW2tDkbQ4I2hktQQgL7+K2DmdjiLYhWh8CflyvgBCuNAYWpSE31OWTriTLZnz++lnjoGHmShEptqy1a6k2x7IRZZ54Fef9TiW0H2WeKu5orrZR1ulWdozi6bxe+FcL1aDv5w7jEF7cgNu2xQQcGGHlJwTK4PD4R/rg3LPtnW4Ys4U7QQES6fSeCtzDH6FCh2/2dsAU4KEOpMVrnt6fUAnNoa+aHNIBkLtqaDDO3WF4nmYGE4m2eooX3Q7EwW4jTmlG7LxKEi4HeMrFWhxHoRtGHVmhW0YQzBYD0OajTomTRju2AiamNGB2FewXIU9aEdsu3voWsgH6LUPToYW9ZPWhd5obWqH6tWzmgQ+A6rrWxMnuFVKYOiFZ+s8gGzO2QiANsygw+h3h+Pjnb8gQhHGCp8GCMe08infQ7TqhXjNnQ6HychOjoWWk4idBKnsALECgWh1jrLDZ5EqCyC4Cg65+Uht1nm8T6VBhw8nudaE+DB+6odSEHMyuBMYX/qboxh7DbljGFXBhotoYF0Eu52lPochuAh+hNMYauRYQ2ek7rusn50NumDDvV6Hoxhdm8OTGE2xAlMYSeqFI2hRVNqR6Gh+htMYdFSEKu2xttuNAKMxhUoYSLGEQa21pXsx74pBh3h8NagCESQ5MYWxIBgQuAkduUeAL5M8GoaEL7zEeY3wQ5xYXJ+kdtrRaEiY2p8Vt3aEHLA0oYWS5bdbway+Gy2gqxQSOQCpqEF627jEDdC4OC+hIABCADr+hyqtojqh2ZuYMmBzoEg3WYHLv4QCGOh6zjquJi/c2cL5sWEG3J+eqgJU247W2DtoWOEEB/BgVvL1qH/CAnRWDn8H9hB44QdlSG3aht+gXlSHHMeeG/lkL5W/2R/QYuEFo+hWkQM4Y5sGBv+luBGCZAAEuoaVzZfeuKrDszGHBYBiLody6Eu+2PfoS0najoosXoUjGGARBaDrvUL71UhNhgeBEGyAhpMfvICF1tuigIbBEGbPuiKfl1SGUDBVW/hoCHlb+IvvtoCElb+vVIZoCG9Oe+2AcYCFFkU9XoR2GEJmhQNGg64zpuhcgAJm6FlVedWtk2GEogQXhhBwUFNQO47Du09gQ9BBEYdwuAzEuRXCKT+CSJw7YYQW6Ez6h3gtgCDaiRIQ7DlEnb6HWDdQGpQ6E6+IOWEUCFCQWrlobvqGoPWFwvn/bYbm2n+tv/RDRQA8CruRd7nsO9QIeRbhXOQDgFHdv75OhZQnvRd636hvQYZQGGueOj+oV01DHVejQtqdV6FRhi7Hm0LYeBhKOtjmXaIAAoboWBXZiRBJaflYzw2hhuantV6EmQAx5lGAaGyWhIsNmkMFQi+mvnoH6FiOhwfodo6FD2hAQzvx54H+uIVoev6HUm2DgFHq+54lAjCYaKEi0WhT7RoG6Fc5QNwIeqYHc3woUYZwmFBS2L1AKwmGcSAtdaMQaHS0+7Qwb8CGc7+y2dtJGFtehkfNrsHaDp+Qu/lH1btehFldhSbb0GhiM5JTV7CwW70Yc5EEtYW9mdmgGGM6hRtPiEGFCIAbpvrB9b0ShZUdt66Ao/WP2DvuaEbTkUuTotNZ9uhm0YXyzZKcObkQajxZWehADoaHbYtuhR4YS64h0iAgUYfZYxTsOoHoa46HaYu9qTqdfAG2O/E3jY6FcLgMIdn/6Gi3mKf4ClQ75gAwbQBz6Hx22iZgUzSFWGh8U1q9rZ4B2nETgEPowBhnvoYRXa5V2kvoWuHwSBhGvodEHY812nhoWDi6Uhhc7oUFw4ErWpxTMyzxMxhDEgEYw6rzUY3CinMypmBzu/sF24oy23rngen7mG2R6fjzSFBuefNIdKCGhueXwwRfy4RueWfFv8MEv4BnhtgAfZS0hCbnsAQFpRBAAforSEEjBytIWmCHiDOekYdq9YmFwwtTipdaEBhFWDmrSHKDOOwbsn7YUlAQHcLpqB1YOeNobzXYFRBYrLl3tZWEuOr1neIyJ+MhVobPGHmDO3xoeQuacEgLuNoZHb9mhKnodAZrAmhSowaCaHgZ++tIXaH6G0hK4IdW54aB+EIjPVEFU8OZtIWYQE9RBBlgW64E20h3tIV1EFkQhAKYQYH7aWB1owQNEFmCuQ0QSR+6jRBxlgU6MEri+ls5iHIjiucXgfnVCGAkBPH7kHSFygu1Hnq7qBdQh2JAd43Z70hCdISRThe9use0lR17+M+44oWByHHZYOdIccgD50hw9IfsKEl0hHEoeXSHLzmBBtlXSHqchDdIegaHach0r1kQaHtCuCHnsBaF56hpeoVpyHjpqXKYfnqHlguG+lkGQG9qhH0ocywCj0hmFoTxA72AAKy4J/+YyBOFMIe2qHyphKUtnLV6BBO5TPpfnblS2y9IQxaGcLm3agEUaGs0+ReoQry4PEWO9Ib/W48GhxcLofSHJyWt9ISfSHfbmZ9IRGYbmm2NfAK/SFdu0rZFnTE5sYAELIEiK7H0h7ZFjOQFhiu39Id8aCBCeTi5lsJYQteADIbnEG2eeA0tqn64n5I8Ztki14QMhCUgCsuDEieNloTAyH2jGDloWFG7PW2SDIQMI5Kl2U2rGgyF9S2XloR4AA1mIlStn5aFpNueDIclA6qE2BDIf8H4KqWswgKIfDyiuADIRQyHJ5epPVoVA7oy2ZrIf6QC5gu+XnnWmERJAHe5JlaE+TOyaoacyGQAAq/Vso05iKe3DIRYYh79Wd8QWAB7R5gK4QRYTZVWhg0bm155iMhY0DhIyGQ52IInpqZS7+hs0DrIyEz+umdgUet4nChSjIe/I7WQOoA1qiJ7oy2JjISKH7hQuBjIfrLaGy2O6YUCO7mMhSFtluJZT0i1jIelRa2MhVtbvZQElzEqLIaiO7Oy2F/4O4yGych2UThyuAXph2Mvj7Lbc5OPZtuCz6By22YNtOK6Qs+/m1k4IIKeeEMbkJBbxy2Sx2vwiEQO2LNoWjYIy3WZF/lNbbJBhc3IfSmEvWh1bIR6057laOASPrqHVUBXbXrvSGvihv1obvSElMhr1FmUyE3huFiId07b0AAHnIb4kG9UBDiIWGJ7k+ebTIZ5Nb2y+UdIuk6GTa4IYfqz579Mhz0Vog9ZLHaIq1ikJ4hIhZNFj2mF5a2hNoUWRRmZ21ydrnSH0fem7Ejpnb8ZhNKYRx94n4WGzIUhUFIFILAvp+14xduCQAKBE4SkubNoRSmGhihsuoQbA6A7OVzIcaUA/qhDYoWLaFpsWHDTg8yGph+U5dq3+C86hGU1gVyE9y+9ctkWMY/MhqoHmwi72jGyETlCyH69WT4YaCyG+jG+vVtxohm2hayKgZFa2ZhfpodbLZEDWcfnu5mG1JOVL/I+mGxzBpYftiyGs74bLIeaJ4e2hmpfkFmFYSAsTKKSyEfCeOKIbzJZFDipgdlFmGMsh6KQaWH7xZhvjgZ354fCebEnoygapauKxAHSraUohZSiBMwAcLgoBQLlmH+0BXLIc8cjm6hOdoWyr5oK2LLgd+yELxQFUuivoSxah5doRmz4R0WUrIZBmHzmepoKFIU75MhUqQW6iCqshsXPh3aFLwOfIME6F7vuB2qQfqyFDZhz8wYIr6eNwTkvlewD2shuBILmC4XdIi0AFPaHXZ4n7esg6jTZhDaYaUi6DShRA1o6kGusht8DtuaF8ohu9oSz9772hnStrGyEVshIqIVU4HjMhAKoWmkHlsh4KoVmkF53+/CtuQm6yoh241sIsHA9ew0nvq1YjSeKqIaPuZqohXTPhqiGXueczgTowHcOhc0nrYwE7R+liDvw6FrOBxqIbeH7Goh0j/qkxbuOhGIPix7D8ch+XIQhmHOohnQXiCqH+S2jyoTJyGnOBqkQbN05sphErjvgaHFU2GTtlKaH31BiIjsKIDGchxpocY6yAyeYaIeX15M5ekStjFqHHZhAEfh8y7OchnTttmE6kph7nIWkE7NOhOlNt5yG4omx2us0w769WAXIaKHYiq+wXIX06GTTWFStnjp4jOhzTgaVow4sh+yDnFyHCPg5/bBQq7Cby7StrUD4pch5yDulyHmbWAiNktmE5chZqvo4Zyi5hPkPA2KFuweWETlekZlchE9qEsrYPOhZqoaVow1chrzoVsrb1ch5WYfHB7EnmRythbmFYouptyIC6Fxq+O6Id1yHkPgspUgOyH9chbJFoNyFPIgpzjB8D4TqhE3IYdHblc+5MgbcY5w6htKblxH5rchuKYT6sG9EAZVwAdaGrZBudfkGsENsBJSNjvKEjdea8ofsKGEq2EfIQQKGiR+z3IfXyG7I2VFdkG5b2chX3IenmHdKuM5DqXyG7I24eofSrbSB+0ens2yFg8hUzTu1mHyy2EkfqfJ5bwumeYfUKEa8h5LALpqGPKhk6wY2E6Aauh/ITjyF5KwEvTk66G/q+S1Fq9yG7I2vuofw7ZIBeGfoevKE8ChMbgSTSEFv+8bgbbV5sih32wNe6FNr6XPIRGg4ka+fPIdx4B7U8rIqkhrar6h+5prfCiAZ2c+YVjNY5RAfWoMhyFY4Iu4NgwMjS8hek1pZKGvXAej8vw66K8h9SHum4HOOAs8oZLyHVmh03CKUi6SEOgZoS+k7BmhaZ1gTmHc5hETtleAC/a2k2YV9rY28hUoABguhTuh6WzsLJ5oShySod6S5ZAAdioaYzbnzgjooVx7Z8m2PkoX2BSjGhlBoRYE5OCC7lAEkzYp5h+AoRe6H/pusxoSFsj/5hRMdk+viKPwkzISoaHv5wZGALnLbBmu6YXmkPDpMhjJXvHqEmyhjV2OlsETcBMIvg3mETDeTfIUHwTbc2v6ocVsH5X+ReYVyIBfShwHISlLaaZhcBoefr6YehqXtjyraTa2eMob3yFTa+F+QUnzjkChsBoYqEFsZhuAoYhrZdmhoUXsjiEPc+DHoQgLY8q2OZSAyp4hPW1JMrsjbz8hofVutqHcLgQsQZvyE4cQ2/IfdyFpoy+innNyGu6gihoZP7YBg2MtJBpQAtFE+yoWgWFh52h64DnLZyeh6GNoMtbVuhMqtjVyHkahJeYdInAaZhoSoX2q5CGAyhAOvC7FMWH/IUwWE65eshUIYWHre2fhYXybZACh3QoRhW7IkAMdtsQyEQChSdzNAKGr8hVzAAPmEWu2Q0tggKFepIOPtpOF66pWCeYYb1ZfShDYxl/mEcYO/BYbIWHyFhqeYSF6HU4h+mNhzMhWeBnADv3cyIqhQ/IfF6Fcr4jWts8ch0ChgPyINKz6FhaXoU4IJ0ZOdTIYsOLDKh4kAMGa4sihPAoQ4UH3ru8Xgclg7M4hYPPhoKEuFOO+YV4WGYy2YiZnoKG1Chs+YXMWEzquM7thoWG3chA8oXIACWChMW1g6CQ2ChtHDo9k72ChEf1j6wBOChvEgFoaHLiQKOnmtmGIBuB/Ad4KEw8+B3oRiqHLFhQnoasWEnehIQoesWGOKeiuLtiaFwN21ydrpqFRChZv/rEKF97B8QoY2rbOlAWRYckKHOCgqQoX96HMPmXBYYqRYvRenJyAMWGLDi7T2Fw7buMQ0LIQNmG4iheOodFrbfMhwa1rfCj0AAlQoVjqGiB4af/tNH6Q8+WPoTD4HLChmk3qIHZXMWj6njb6EKlBiuIQptYqlBGPgS76F7R+f+LhScH4+BuvfiGBax7S2YoSWaFgc4gJnCwl7uEchYoQg6Gp5uextgXtZy8+Oodlnm5wGuxaYVWKFMShCLFmplocFA7foYtJ6nqhMlyJfzaywWrcdhxg7kEwkzIccgAvGhgaoZrN7d/2UYdvPqENvgk4oRMwDTihzbIf5LaqlhPqQWU66C6OS4oYVABHacuYdjerYaEuNZQT1taNUh6eIfcb6Z4hV/od5+T4ZhRllIwaFGEO+c3twd4o+ARllEaWE0chmBTljxaAShdhDumcGN4ht5QftyHFqhxqdoOyHkShettpRKHdm2wMoaH+B0Sh+V1mVHYNZhtAYSxKGnB2yJ1EHTb+wAcGtlxKHIbW+7wIlyF5EOAkobyaEGoATvVrSw4Ote7YYULKFDmh9soZJKFmSh4gYZ7p5yShZ8AEITBpAAqzISpKH5iCOSNhf4Fox+wldudKHUyhV0oXzKE2ShxEoXhqFbmhq0LtASEuShUUoW5KGy8hgZvnFKFegAe8oXhqFoFhZFwdYP4kyhIUoYEUCPShMmoSyIDXSh0UobLyF3ShCCoROWFYy2iUobEW4IC2BUoT5wjp1eaUoR0WGjShGEqDlKF5rWipsAWxitR2BUoX1/wEFhypYdWrzFShhvIWQqHlSh2JDnYWG2GhNUoTygSrZhkaXlrp7XSh00oYnyGzShH5YWBHaNFhIviH7bZXgBYMdliKF/lhFxYbPaSdShI0oWQqHXlhiPIRVKE9XakFVteWFNk2LUoQ9KEzZha2YX4WGEPoiyttMW4rSha0oWUZBktiw4bsOaH4Fh8FYTd+Yvlh+0ocDchMPWIengTHZ7BhK1Xq9KG5y270oaBqFfVK0UBI9KFAoAJR7rA06DmuAMoVRmGIFhmHITEQ7ESh/rALXKEQyhylVqSmG4Mci5YbDKEw0g7T1khWE37g2JDsjKFo2CpfVhdpwWWAQhobYnYSVhN/IUMdbYyhd+oQLKHMch+vVgTKFflBoGPjeS5qVhxEoWTKGHW2rxYbGWHUyhrEobOXbSVh7GLmhWEDVOoWoR8J4TZBQeYWZqFVW23MoTTH7keWQ5YXByE4aI6lYbGKFVjW25oSIT6Klh83IQke6n/m5lYde6EcrgK7obfChyyhD0oXxWE8qhVfPoiY4+VhklYUMdbqyhExPK6N5D9IVZocdlgE3MrjSIZLZuEhtfPljrb18+0AQZ5j7Vn2adwdJrapyhu+YfWQ5ciAW5YXupjZyhhktkNb6FMhCHIRDqEX7C0enpDyF3GhC1vtGxZPNIWJYb4aHhVhSuoTXm6s+hze1qJIB8FhDKAP5AATahxN3vop7oAA5ktuLg7jOC6BSItABHW+gsfqgEFEu2g1mKH1YGdApogHpw4DyhK8oeryF7shGRhDiWEhGeTIYV1S56VOZBNnuuCFzUa+YXPKFeFhxedjmHZLyhNEgItWGXchAdLsnmH3EhTp1gUWHlAAW5YfvKG33WNEgEfKHv1Bp8oRIGF6TwkWXlZQDKhhjJABcvDIGgWU1vhQ6jEuCGtj0nYSUesDwUPQ5Ia22zAO/KH4qhX8oRkWGWahKNkJdviHKhBCoXLGjLdWt6+FeyEGh2snPmgWEaM2JpBClrbnJe2hYS2yEcUOWIoV9rYTQC3k3riKGIKhnbSMgqH8leqQFhgqFMeua+oYxrIw6ov1Ybz+C4KhvaYbOyHWAyaBYcQqFqOApCoYRWG9mht8KNwaHUKhctriEkTEa+qjQbpQ7ymhJRYRmGERT+HCofJW6HW2Xo1nnqF7LWmB1sRKELKhSn1oQTAJSA5YYXgqFlmhci4Mb0Dfa2EbQcMuoGyOiioag6H96hqioQi8DNa2DYxjha6AZhc3oconB6Ao4NYd0t4cUO+ioYPmGGbeUgeGPqEa3gpioeFS78AAuctiNWFce2U/gP3NaR4++0/ovXa2KhebQYwEEzhhyCoXYqGuKhVdru4qHNR4n2aLCWE+Kh4UoXBXjHzW/OoQeGEoK2/hYUWyF01htXXrjWHZCh52ttJqEaUApzwa7Q6nxWSSoS7mFiJmkBYRG0EZKhFPTnVtaNFhJpQBKUDlahthoZlrawVhbRRODWElKheWtu7NaB8hGgbh5ZRa6ArIOHByH1KhnhYWO6EvDe5WnBuKFY3eYt1mLWH8TWpwdqjXaT6hegKGfbYkrWj0muHuAxphRwoVlrYV1hoyoT125VW2lEYbIqHURhO9bq3V4qUOZBYVuuB1OAgdYdLWFwch7EYYDQ5rKhHFIdfj5cUhnz1lsqHimhOyoeuxaPXWcpoU9ICcwuWdIYuN4xmmqpoZcqGkuAYy3kpGH1y2u9YYb1aVihMGdmNdb4EAsSng5yHvKheyoUjmGt0h3vIb8qEU7CJCLnnmGP8+wKoXSaH69Wr9YRCqFGmhNwoe7Nb69W5pofCqGXD4SKoXIWEhvBldTs3477Kh6KoUsWHUq2hVYUPmE4qhUtDuxeoYQ28KNuFGFpvBO85sCq4RQWFKoQhraxRhF6YSAn4IHW6NcDXgBBVh29vo4EF2sWjKoRQ2HiLwds4B7jaC0ussoZyqGaqM3KoZbta8qhEkboEY5um2gTLsKqHaZOoqoXlGHiqhKBXm/qEmE+24mB2WHUqh7rzr7Q5bO+CQQYqqEOWhNUYXO8GMOWDUYYU/bD7g+tjkGTZ9Chwe3raqEbm2/bQd9oCOqheG4DlEDki6XijpSqF50OHqoQXQ6KOWTrNkmsgd1hGzWhZQ7X6hT6tkGqEzZ2ei0HcIC/GhEc1s0gFRqh2XIVOWFxqhN8LqVWEA621RPkpmFTsOaaoWNLYvtByQONCfBeNhG7zjkUAvPcF0YZuXjqy2/e3mFyGMQAxaofbWFrshU7zH3t6iu+wsFlWqHsphomYQ5SG9OBAyfuIL7CfBYgvj8EHSfBblIYA9aA0OE6oWPmFemAcMYTBV52VhKmYfOqHvOAgGgDVRaYMOwD0jUE7rkAYkNvRmGWfBJIQdHnZYShM/nk02FOfBApPlyy5tNh05BCSa5l3u6jTu+4HVNh/6oZMrZbac2qAIZLZ3qh+koWEUyPqhmMYfXAjwShKdaGrWG9NhchYVTGGzNhcHIQRqE4Ch0jHq5/JjNhShocBqE4ChaWtjO7ZyDWYVYcVajEAAtoofIqFjmhIWoMl0GtNhCzYdU2H0ah6GodCpBB02ZRTrMKGZa2fZYWJNbXI2HYYbKoBcShp18HFQ6I6h6Oofr1Z41hkqJHFSE0ahVzYUsdo3NhjGoTtqEISACRQd8BAxUOHGoR9bZmo2g7ruSBC5y2QmoXNA4iahIPIWJqEzsAL/PhKS6yBGCl1mfmHkHWGeQMfMLUOGWKAMcgC3NhtsYW7Z5JqMtgEMghZX0hRmdjO7b/B2umoU4w6zsuLjDqHmFrFhpmobs2Fc5hiLtn/KFqUON7rtLHZ722a9SNk6GTK2kV0Pl9L2ahXR3nK+ZYah42oQ9KGZa2qZoYbyEvEuqBYfDWEye25NbmlSG9CO/moQsaGjI2USLtInDgWu+sJtIAARahiJYS5EDIlhh+YdNN5xHehz0jFqGdS2aIAPFqEKFh0v/K7qBIl2PwACjrZ6Fh/+TiI4BqO2XNYRlqFTCh2WoaBuC5ahGMdk5L5pWOdB4qyKoC68iSoWmja+UAeSodA7Z7ahmNYaOuAXiA0Y1GtOr2k0ivQfVNaNahuIoWjqER0h2XGjVyGSOAXHtpInAEah7zcF1qFaq2PWoRA542F2fWoaxi4DahZogENqEUlBVnAMCAAopePVYX3SGRQodZYViKHith+P8NYU6+UA82oaAvAu1hk+gW0Zz+QAwtoXFLZK3MAWoamtYQN2jwdtU2HsShDzYZIqFXbW++YQTWHC82GSDsyQ6YHWjqoX26Gnah3roPfl59DWV2oRJZQ5UhXLbhW1aathhoodHp65y2Usoa9qEHF272oSM2Hv3MAiocanb5Uh1TnoVSGZxh1OobhyGJahiOofTqF6oAKELoK75mU+MXEOL4FyFhRRcOzgDNyhIbLs4WER0h+vVkZmHgiAEdYbRHYl1hk4TqvoSY6hFFXvJ06FxhLAIRn/ZsAhdE1hzmGc2ImuYaNmGVUhAPrj6NYK6hr7YQ0WFlFhWAoSU2HiAh6uoZICHWGBEKfoyiGOGBT3Luz74tUhw/PsML75b+zuoeQMF8++KKfuoCG6AhEvvvNgF0DBI8Ybh2FjxhQ8YZin6TxhC1PpKWH/agCIQPIKGgChwHtg2+DL6hKioY1rZD6hnbYXmg4AKh7T2HwI4T6hLgALaKENKCtnIaK0Hk8WXgtj0XaGqhrPoXR2F96hbUiJvmHCQOzvvp+26u++1qfkPQ4MShL8YQxa5URBjkrkfqF+ZhJ+ob/GFn6hglYZOE6X6h/HNNfqFgJh5QtkRKEA2eNsjtAmH4shnwvv/qFyG051XnpWFZahCBtrTgFYJhpnYZR7azFhpZYcyYCSChrFhuex6IV2GBtpAaGd5O0Bof5yEFchRNIWxaHVw2CvLlmICoq+vnYaxyECphTeocVTaYGhRFdtgaGhYWifLg3qHY5h3F1pwbY2vuAQDmP758G2EiYZ0MEKkIBxYWMKGWZOmuARaYHjMhBJjmaICqJh/mFEUyGwghaTYawaGWkeDNIcT9bnDBotXnSCHeRBzu/rEaEZTW8Rodqg7NJhHNIc8MFc0hrwwRKL7vDB/NId0mGV7+QtIT8MEuG2cUQQCMFf4B3hts+n5jJh/RoW+n4K0hmUQYcaFMsWOUQV+n7+ghYYvvsmERdWBbnhUVbwwOv3boPV4qjBFbnvOCFG0hiDPmh+6nghSh/jJYFoM+clgbmL4GjBlowSNEFGB+sKYfaMEO0hp3Ycoz4u0hRGfsJCEgph9owfCmGOjBttIRNEHCguVjyB3oZzmhPgfs4f52WBkxtm4f6BCOf7jltEF3hu14bh1o7EAASW1qVxA93om0Qce57fgO8AjvdI7JNeLV2F726vsOu7jpOzYXmh1aeIC4CeDe6vXiCNZ86OqAnkvoDDbWuSALC27OLoSS1pU16f+CMt1jAbbIRujWfnhG6SCOzIGpqQjHGEXp1oj1YweOPKYV2MGk9hMPVuT2E5pu92rtT2EiphcgliR463bewLrufK5U9h1V4LN1bA9h23njTEGOCOxPDijLYyph3coXjq4MEwYsQfjQhJWuE3tmsK5KxBjgjp4RAyAAXp1pT+4wrWm64FwI7pkWpsjtiY5b0hykDmYJ6qQOkPYcq25RxBoEzvjwBpQEQlodYhBJbWkogA8K56QOS0hnDOak9WyNgUFAAzxu6QngU7ZP0hhkbtaNYIGODvYW/SFrQOeUtKkJ5LCWuIrpJJ77B+tgNns3q1kakZtnnEF1CO4podo65gacHEwbQ9goVBNloS8NZmQAT7AED2EmE2bIrgma6rBOisNpSlAfm+JiQbvBAAYcjUvjBlBGDW1VcGndaNOuGUbgBQF4tu/sDoWmFC/WtGQcsUBjCeLLXlMJ4LZAVaYaKJYrM+2SLtXNb5GuAITi8ubDUWJSiD89bLSuqcLm2mGP/uhS+g9KGr9WgAAPQEzHEih14RXWc81jW0g99hA6YWfCHMy2kvYWyk4Xgu4T1mq15Hm2OITtX1ZO9WJ/np/EHELgxaTufE5piWj1ABK0LkhOxrXg2k5evev9mnYHaITWG6YeGK6oierLAGgk5F2Bv0vmSI70ZOyYrg+9YbeeJ/cElC6bqcJIroNRS4DWLAAF6db4DWWVFk3YGoju2f1j+I6GAeFA1sxoCYAAePYTQiFtPgfyjlKK4tiu4LPoDG4BhOYVAdgq6o12E7zJKIDRUB/YroINbuauivYfFQEt9eOojtA656iOMGYU4pCSuOdu1q3wAyrWzi6CsQAIqcWTIVFA6m9huW4NA7aYXWjV2LoAB/9hgMwTVQHefkcEAE71aiqO1qru9rbExudVbljL6o+e621pTG4092/msG5tY1MhUPjsEoQ7dWr4rkAOEozBrtDuzG5TUBi9ITEALMKeBRvD/t7bteSYAE71ZxDWYErtjaFk0W/fYdoOjy7WPGYS/046FAQGrtdI70feS+gKBuCqDhetjtGH72DWhb5C9QEESug4rsKo5cSk2aYQB149DW0LgKDtbePWUorpp07cxW+V/sr2E+IYlrrg77JWDhtzIXi261mO3trql45WDh24no6vgnaOa5eF6HZ3OOVg4a7G7SSu7sbq4OEF+up9rmTADexuwVADH2FqSuY8vgeI4YtOojLozDauzBMQ4QbI5kDhWMvtzQHR9hccbnmZLP9hjfViHMGJDhxJAItACf9hSLIbzJaZxuvk6IHG4ZzBicDpyI6t2QTtFiUOHksh3sLrJ161xuWGbpUOEUjWRKIayNbqde9krs3ARVDhEbPrArbdxuFQ4WArbtDhCdoV0OGade7Q4elK4L9hlmjpWW4lwu2+1jpdbk6OdEjqE4HLxumLbuINYoDhE4ri72Fpy+lUVjMOF4Y4cw4SF17tSu4orvAs7bxuw3gCyIB9SutknhqyEHxu4k1lYOGLWOoXTifG5HDheJ0G3QEo/e8Y1nhvj0EA9fYeH+QLZh5XXqBxaqSOtZGm32HBwucUnkvoDHSuM+1grm589hXUtrVE6OUASljnH2HzfWd0rs2NZW3+L8LlGyF7yWC3XkpY4oJu1jrJQsErROPcjmI647DqF2YTVO6AJuZKvp/aFsLBOaQcrHZEIOkI4aGd618wv0Ts/NZDleBY1vCNYMJuuI4Y9mGfs+7YLsuIC1ka/MrrLBZljWFI4S9cDkIucPYULK6Ujhm4fnD2E6qAjI4XSOGGLBeLocBNa7h+oE1laRaNJuf21sdI7fLmn01mLtZenWGI1uw6GfTunDoUz153sh66QXqiHAP+xlfqs4EqSANeAPCNbHZYkKri+IABaO0LgDn7bXK+kSbrG47rBOTvXqLtbJWuyPYfqgDOJuBvXp91Y6jh071n6NbHDhKvVix5441BCk1qYABgacSVUFc45mOhPsTpI6GDGOpo4ZD8xMAA+o4Q9KHmTWaoLpCBDMkASS1uxyGNsB+AAJKdayyOw8bkpY6lMAvo4WtaFichzQXiLY6+mhGKAAgOEXSe08NgW27O/We3brY/7PyuL/OLXo7C3W8ywd4I5k9hFogMya6U9hRbQdMF4J9ekgjivK5enWrFjk/K67yuaY4fnG54MuQStvfo6eyOZOYZ67YDJuXENgzq401uf/oe0q6tAKGc7tYV7xCO7ywRyuY3DBqxANrNYHDWrIqp5yFV02fU1mYI6u1AQ01rzmHgv2JPVi1Z79OhhaoUj1ZbiuGQPriK7Y9hJCrgkNYS5hGAAFtNZdohQGIM9DY5I2b8LhId4K5hOA3ngq74MW+cjocm4oCh7hHEGOEnJuIY4ZYOEhbW2uYac6EH1un01g83JJbWA8jpVyEmagCq1lcYbWWuJIXsMOFPnWZTrqGr55AA744fEYRKrB344eKo6zkA26IZcD67ohpQtgSOEq9W3AAO+OGYDe/iNqd+BZzehKbgqpaJPg0ajOTNYLjhqRNq6sEvyOgeYf4ljB5hYoXmxG7LrOG0KCym54+Eu3IY+iFx5hg6VoAGJ+LWLrALCtYArWOPYeGOGjyO1lrtdm4ZZA1lrtLEEITWIwAF6daBxuPfYUK6FirORppjwOFPdePEINOt6OUALY4fw67+TW+eYYvJ5sq2HE4baSZGDedkYZaI47DqbSrvxOEvUAPfYWMq7OhuLCjtsSipHWwYrhEk7iq2QbgYupbbiOT7AFxOGrKusI1lGG4ljh9l0FJiHo8hVrocnNYg4UMagPRtZ1ZuveYVG4GxWu2k4Roo4/SOYY4ftcAIqc67Lst9bKR+eO/qIACpHWdyTmJOETXWjPYVz2Ft2ud6wa4xalQo4SQBXW7ZRe/mrvAE6Mg4sRTELkHThelQ3tHQCnle+OboHG74uO/a1g+Wifuqg/YU8q4BThsU4Qvta33W5Q1hEo76euMSjlx47HtuGn1oqOFeH4XvXuht7qVuXp1sctabFGUSjvsI7oIAC/YcmCDl6uAS1qpY6jjhUQofW6GxN+N/juKq7va2381l6da9YYysSGBpx0XWqEAFIOGAHW9U4akxyf+OFOrhbq7rBOf4AEMm7kAArE4Wm4FDYhrD4ItNaqDhV2tmbIBY9h3U4b1OEmHeAnwFaq6ee2rU4czm6fVhv7jlk4SkoAeh1vROG4jWZJgMxOHcEArE4cCN6bR2w04YIMGuyOPU4XENZrThKYwBBm6/RkcX1pBm6xThSVrjGq4XdBR6QTItaEMcYi1v2Naxze53PoJD4wcO0LgPA2RiThO0rkqOFsPMA4jucOHNbWPqtgRm7iReMK1jVQ5aTh+fEISOEdF2F44a247JMWF7gV32E5QAzI3ufkGw7OKAjkxm6XThX0DuaOHArWuE4bsgITThr+QfR6EzbBG8jhA3CgGui81vktaH6ujy1gXSjFLWRItm7o5rquEyrhUtZsWwe04dUtZJWuH0QLEYg8DhEEYYq9YBjWvVoBcvDwjWHS1jt1aEzhyBQRjiG2vmN01qAYCcThHk4ayG7czhiF1i7NZwDhsY4fHm5tjhOX/hTiGlquqOgBLOExDedkYara4rXWoI1lEw6Suu2qjrXEB6ywY7jpYnarEArmblz1buemdu1sBW5BVuHDXpCq60zhoU4eb1a+jeKkSDwETuehPQ1uUQCkThUH1j4hi2deS04cB9ZWDhtE4cvAB7ThxG4AdOGBThQs4aSvb28Bdg4X0NYpZunZQFxq4IzhQs4Z5H4+8BZ6TkJq6sJ2ImrlUChS2uwV1l4q4F0olY3umPBU9hNY3vs/g8DhsDrkAOGDWOfWGOytb2FBAPPmMWGoRuOfYZNq7QZOuPLr5g6Gau+fEHljaSDhtdjvUt42vW8q1rWpyVzh7Z3ot7adehfbfsl4HRsWlmjsWOFScOqx1rdq6EaOixYTXpYwwQnM4QstY2rW+03txOFT9BQVwD9q40OeoZEN+4G/aAy3oT/64hAAJY4csABKTh+EhmwADWneBPYR2p5WcIr5Tvsy6MY2N6jtcWHtYOPgoQXr7DzhYQRKPOHO/WWD5jDOGwUAhEdo1q6ELg+3gYDm6YpwF8XjwERTFBeuLpt4H/FheHfghN7bKuY+weCWFbYOOmrqJOHqzhE11hjm4PUOA/TlEAC+Nuy5bkRo70zevFbnatYGyOM84az46id+IPgUPOEAzhchrrWY7hOOuM4Y6E437Bi+lk0KHC+hD6ntXF5I+BvwoanjbUlhW0fs76GA5hjuTqScFu+h1pYVriHkzeBm1moOER5uS+bgrOFLLW4BrsaEaQGulmQNAa48JePZ8Ky17Rm2azAHzN6B22GUbt5taQDhdI4RMS6BAAfPYfWKGgzhPeTgdI4bZu9ebkla6pUuK11sltb+RhfC4RltZIpu744cEI58EuM/ACnkB1ThvebsHp6L9W5g4ZKAhD5uU9jlCOG8ThRk1jzo5O9WIF4Lu44C6OThlpIa6X5O8mnuQuGp4hCujgagDdgA+NgT6daJbWn04W4OGwkueaABGcHAgB0Rlpbo7zbWaU4bj2F3+hHpYWYNaNzhB4Js7o7GLhU+bgsj5Y8WJujkBKGH9+DmnngGFakOQigFbDZLyuOg1rPOHT2KkJbosl6ELg6wTjbN5udOdMrhO8y0Bhtv4PdOHGIucX1mkQ4EputC1k8q5KThxpXvy04NG+5wALJNZVGIsk4WRTZ7ThaIQKLp5i5aD0ofXdZ89h+xrg/o4bnWxUDj2m4VThhl1pIuH2LhE2rtoOHVlBjyXspVY5Lh6wTsm46pHWUAgNSq72E2DAzhCa66GweC3hId6qWOgI4RBcFVGcwLrusE5pNU3NUBQt6tnY8U6MuOj40I+s1twW7CqO+C3jt1YzlhfnjvdOHZ9e8vYfdq7KHWYVbjmOFXQIDAzvOuAm8Ot7blVNY7LhPCbhntbMAAe04Y3tZcQ2sbIVMtbCmu/5Lt4t7Be+PhsEot5PLh6wThvAjimO9mbiwY6JmuDBjpj67EAATvVnidBbmu/FwJ9WExqhJi3k6AiiGOD21ntOFbSuEK4WRF4jFud71k+N6s7Wb9LqMdYW9Wdprk/4ERRefy4Wb3QxTWGLTkftaBThKl1oz2FCrgiR6JBVaM9h6wTsEt4TtGtw4bo9beSuOK4fbLbTFuO+1s8uFVEgry4Qzq657W811iKa7+SOQq4FCuGSKgmZrqWBD7LhJhIddLboAAe04dSuFVLeRS3tgdaQLej+juMuGXLhkq4TiU6fGOQT1ldtaMLe2PYbnNYpAUpJvmYSE7VBLbdvhTyqLhoc4bedbf/gjpju8W6cHWHJDg8P6ULegy3lbyF6GEHSobJi73ThQy3hLICfThONbnXp53SBSA4Xttb2zWq81oqOHv6OsJbo2OHHvU8YEJ2a5Fl4vz1gsm4gHW6QACMY5iGOBdKNiW6DXgy/nlJ5AejhYt1rLm6oQA944cKEGuHWXErtklhxLhDRrkaNa5IAZ84a0ArmHWXGQLkuE2rhaS4cGa7AWus8aGhi69KhE6Xlfr6k9WtlYRhOHMQAns4fidCpHWwTTqYtZODhWfPutxa6rh8q4UquE3vWDS4TGuEgomPw4aTcFI1uGK3sRa4IyuNBDuttY6uheQXqonAqLhxK4ZkI6aaAI21ucL7m3OiJjkqDbirhFy4ZInC0reyqAHuOGxmOPJ1v9m5THWrjjnp9ByG06VYczH518+1Bnu1b6/BhOY/nlWEVs2N/IEsuGdtIl84YDOEo48dSXvBA55yhMellFOF2ThSS1pVOFKAAKW1iE9YrzhXC4IVa4LW+KxrpUuFP4A1S4aUAAz9Bwy4Qlg5WnWy64XW9ZQXeJFSBO8wCnWhIYZ3z6inWHdckLSSYAAbs1lmjhgCAZkAACp4zzh6wToWY5CKOzi4TSGFlmO61YWLH79Y+JFDpmY5gLhWoKAJcA5WOrnABq9az7giZ1qNa6pAW7o4UEkT62+HajqQOH0u27NroxZaX0OAE/jg+DCPgmC1nNt7oIAXp1l126K7e8vAPSgDv1BB1IF0uELLWy63kKuDsUeyv1skUw06uFY4Y2m6+EApMAEtOFqVOQPYTuY6D8+GCgc7AASneWaiDuK6ftyZL4DldYxeuFS3sKnYLLWsydo3OHVnW66rgS4xVrhEm4VL2GNnWmJAAZuGMzhb5ju+A66WOr2nsGGH3ThJFbkgtY6Je6c4H+Y4cgQkm4XENZTUu4fVkDtaTLW5yUEyQB0bhDVlpC7ZFLhQH6HRN6o2u15ju3tZ2jhDuMI9I6+DhFX1kKuDbjwGw1hd1YLLWIKdio0FS4+olbqHUDdzWmobtzOGyThrCoTo0ESXWrK4SNOFMiwN51qpY6ty4l7ANjOEEmOZm4aa243vWhs1h2SA1iOhl1oFCrlhhJmrod9YwFAVsNqL463De7YAEH470+OntrknOGRK2n91iCNaZThIGnH4tZOVuV9tl47aiO2xZpoRdaaTWm3oV3TZSbhuU4Y0NaZrggS1i3OEQeBN4oVWuHhNAO3VrPb4ax+07XoQQBdThwl1gOBZNwBiVbmmQAzTha24eXa4rhhi/PidraebeMl1pmo4uNk8phMtW7EkEbTQTwi4TDh904XpdbEF2kk4V0uHYpuNmblv1bmXWdE4dluFcbeaW4RM0Gbbhc9IcKo5eUOcG1huNCr2ubp1vh65+XWXs1pNuH9bho04RO8x7eOOmjpSOFo9hjM4cRuHyaOu1DvdOHlEAUy1i7OGdG+AO4U/a52Nuy7riE66Tbhzc4Ytt66PWiMDqs4xTbeYDrimMB7Thl1jldrbeYOWfXpvGEbsOoCAcy8HsPom9YZI77b1hBfXvIUDSmhU11rsqE15eItjkZEFsfQYU4VLOH9TW864KtdY9zhbj1gSuGPbes84XDi40G2tyoYy0HiTeiU1vAOE41uNsfgQm7kEw6ujnqYiTDhcc/gh46PhuBk1vouEaSOZNbtK9awUAaBPlhU7RjhJHToiOHYE+Sjrl0nbfbhZm4cLdaVrhUN1qAUjs1un/gro64oqhKFnnal5UE+klIUUg6XzhN91l/dZWOuK9oV4mGpvBFN1ng2G1Th6AAFJuFK2OvBPirW6kNhLq4Sw4AoiAoVSKTcEARuojtjMtYsTW6K4Cfp6DB2ObAC1uGOLhaa4RSNYrqBHC4btE6K3WUbQfbQ7cLh1U1tc4xiqh7tboyzbl2uGlIaI2EB2OEjYfM9Rxhe+bQd/U7/DWs7wWkEGP0WG7wY5Z6J0OTUYXsOG/U2anEKxOE2qhkgTrsgIFOIDTLlto7/UAe04d7uH1zhOdDlrC7R3WqifktIax7hbhrultaczhCWDpwuErtBzhrvYuED2Om7QUBiCFWMxzrnFQBxjhEaoYYg4r/G6a4cYujtgAWhXvqNaAjh1RPijOGVOhE7zF9Nb3jhre3nt4589hzRPoPdbbBBLLgVPW5RNh7y6JGuEJFB891l60HYmOjjfIre6VqhZ8TloOGKtuH0YeSOGgoAlI4W25rnihuJgMSuH9rhwq4c4v6lWO9q4WmuFrauq61nEOEfikW7QOQOE9qhmMTgtOHH7e8xTuL1aMXWRqAGy658iO0IQfrU6Uaw+tvneuGFFeZzlnx0E0puCM4dcT5yuuQM4RSNaw2eErrnCNZwNuuMYT/t6KjhzW4b8iaRu+JMYcq67ujhlB4WkPANaB72gLQeFOeujg4So9ZixhpDbsvxCj7huB4QM05Op2ZsYdM2GYMOdc4a666MQAujjhQeEYDh0A4QLGHEHhhW4V7OFsHhOyfqG67qPWYQRCZuGVUWda4QvN6Uu+SQXkpY75bhBGjom66zShKbrhgOH/7hCGoXc06HFgljbmW0i0vWI1bvUt4oLhoM4cUuEn6eoLjsquETtGndQJU05Z62Zrlkg9Y6ThYh4QweFxPWRh4c49bbLeCibkZdacpefZAHVmEzGuyGrq4oDqxeEm4Yi2EY1u5BMDzuGm7hgB1kYw4GFuLTjsT1bIAATvVu4Z4w3W7h4cS2EJNufT1vn1aUNu2g6KnK79TWgR3pM9aGahWFTqC47rBOUh4X4OEqHhT64UvK6aZAE11gKV4OQARi4RK9YKTWdTbnEtZWDh+zjlawA5ThyC4Ln9ZJWuQfjli2FX2OEy1gW5DYhGQcYc+y5VGcdlbjpOHQO2VS1v89bmHhdR4RZ74lrhsU4ZMd4JLhEf1r5uH3ThEcjr4OFtHeE7zJh65BgA2CaDh64h4OFXgWuq7AzURHriZq7RqM1y1tWAgljhRKrkldalXehfjsc27FSOWiphzo5TDWey4fNtbBaOXvnhOuD3bW8bjlTOGhWG1lrrFOGZdBXgAFUeFhthwX1oQaGeWOmXNEn2YI7hZXoO4OHWuOFU4Zq26YDht+3rEd6qvmitklxDacuOIXvnC+YdLhtKrrSY5S5O5AAEltaFGoDVblDY4dLhTPNk71Z8zhzW4V82EyrWsi4YCd7rbWIJ3q0MCOvWx2WMh6EWHhu+1qrN5ndWxmYfQAA1rh7K3iUeH7vAwvNka45j1BXsrlB6HHDhOJ3ph4Fhje2AKDmMY+AA724c8n53ahM7YdZuH/LhqpblMo57Shuo4cnOFFHhN71sn9ZdThm7YRg9bonhBAANUuF0HhrBjnB9bajh9Xrqq27bMooD1sruFAnhTgANq249vWvanGiiZ2VOnAAHUo5pQEBsjvKd6AbhtsrtCuEkHh7OjlnzaBioAx4dIeGzvWn/jj5W5OEuDaThYDYT1B27YVFoH4S2o1tsyeHlPgOAnsSlaHeu0a1kzqEneuyQ4D7uHKHhCk4dO45cphCU1idcg5RMCNAI7TZMAAe04WNW6SLhhLjBOuHThu+HvnO47fthCrDsoYFMVeqAAKeOHGCM5x4dweHAdh1Qvj6NbIThxp4TmuAgmOsn1iweFDAATg4WrqGNxhwEQYwsFFOerYfngMHQp+KHYbCn5dxh0dFsoCGYdhfcYTh2E9UhnVPrXqEYRBg1IVhEE4p+egIc6x4YRB5HYUYLZjbhdA4SmMBKnhxKrg7gAi3W4R4ULzZjWOPC1k164wDe0rjtRdbFWo+U4YAy4XBBF2nNjuGQquCQwXx2GL9WwmCEtK44kARZYZ3d7jnhqU4c/tbpTh054ZtF6By+LvvscL6kRB12dpX65nC+ChNvvqEP7hwvLorwCsOOSJgbbXbczhlF3tqOF3b+oJenmkAdrQzv1hu864qOt+oa/ABqguBOQWp0EncWQ/rth25wJhY/ru/qGHLhBq4RV9ZLph4Fdn/qHQV2kKrn2N7I+AiQwdpG629hZ6diQmFI7+5EruqOF9fW1p4V4I6GRuwgjmN9ZOThLk4QN06eJEcq4Uz2GZzh/afqLgE9++tO/ipd489hxeoa0MFiJhpBoSl2HkGhm3cPLOGibhtmrr/TbyJhFkQVfK5ibhx8Yfxtb5dhkfWOGOF29O6PYVomGOEhZXYZYaEXDBehttd4748WwXbhCeHMzWjXYU8MG+c+LwwaFEG80hEUQR12EH4Bzb7t8MGX8uN6fgMmHQDOCUQYCMEjJhHtXn0aH03eWHbuXq7Cp2TW1kqeG/Wu0bXot7Ym7hhW4TLq5vThDQbkfv4RmungAGkuE9WAiJ4UUa7njhqTvh9OFprhQs4XnV6zdurltPJeENbha51jMG5UjBBxof5eEA2OadXkFeGY7h+n1oWCHe1eL3DpWMZT9BjinhQiCBxujxoflLa5QAxO4Yj5AqqArbNt7+Arbh904Xy67va2GEAD32FAfus+4UaYwNnIqh4e19ba0hy3YQoH6rdhCH7lIK5Ifu0GfmoH4Q9u23YdJYGoM+2Yvil1aO0hvUQboK7tRBIpoY92FndhYKYZ1eGAphpfjv1EEmH+A4vvpYEQphRowV7SHjXhHtIdhLYDG22dPPsRYzRBEoLh92EejBTUIXSADjacgAAOJQgAABxQgAAPhQkAAIAACoUIAAAMUIAADSUDCQGbXhs2nIAABkUOteGQAA42nLNpyAAABFCQAAgAAKxQ02nEdeGAAAQFDXXhW14bteGHXhJ14fimHoCOgAAFhQs2nAdeG7XhG14TteH7Xhx14V725nXhB14VdeG/XhgAAIJQgAAMRQ314XSQFfsWgAAAhQgAAExQi2nIAAB0UIAAASUC9eG7XhgAABRQgAAEJQk2nJAAC/XhR14bDeGPXhgAAPxQgAAI5Qv14ZAADPXhgAADpQCN4YWMF0gAe14ZjeG43hD14ZteGQAAgAAJxQ5N4SjeGzacgAAMhQLAjnteGU3h214QjeFECWe14bNpzjaci2nKDeGi3hf5oc7AB7XhKN4VTeHjac82nEdeEHXhgAAIRQYOFoAAAkUFdeF8kWT14a9eH7XhEt4VLeFfXhxpAfLeGK3hyt4WreGa3hV14brCa63hb14eLeGS3h0t4YjCHM3hCt4ZTeFK3hKt4ereHNJwWt4ddeF3Xhj14c9eE23hBt4fbeGPH+TC5oAACgUJTeGAAA6FBXXhCt4YAABgUALeEH9uDEvu8ACbXhgAALRQkAABreF63h42nFTeGAAA2FBXXh8d4eteHPXhFMIQneFJ3het4cHeFh3hkAAJHeHR3hgkbkT+6p3hlN4RneGQAAWd4TneH3jBdIAOjeHk3h214fzeFeCOO14bNpyAAA4FAo3h+t4XbeFG3hnwrkN9at3hHd4e9eEg3hPd4aEI6Q3hgAAGhQs2nMb2HzacmN4XteEh3hB14bNpyAAAkFAvXhqt4br1bx3hB14bjeET3hDzXiO5Rj3hs2nJAADnXhUt4b9eGAAAMlB03hs2nIAAAQUE6bbb3hu94TveH93hKN4TOQG3XhR14ZteFE2Bqt4ZjeGAAAbFCPXhs2nGjeGrkB82nOTeGTace94RHeFvXhD14e/eHLacQDId5+Tzac614RreEHXhGt4YtpxLacHEwYHeE3XhB14edeEHXhz94RreEb3hq7dvotQK3ho94RreGQAAbd4XteEQ3hyD4eJM57Xh5N4eveGQ3hqwThreFU3ho94eteH3t2Id4UdeE33hgZ/u8ACQPhB14bveFXXhm14eTeHEPheaYXLeFHXhJ94ZAAC43hnN4YtpwvXhXwfvQ+FjCeqt4ZNpyq3hQD4aQyHvAAX94T/eGiPhMIfoFbykPhe14aTeG8tegAANRQB94TjeGQAAgd4eLeEHXh+Xnko+EqPh42nAdeHk3hAD4Ro+EEh++orkCuZeH4694Z3eHzacsN4e3eER3h5AFvTeEI3hpVoe8ACc3hlN4YAACkUOg+Ea3h/UbhHeHo3hpndnI+HL3h6Uwc7ABp3hR14U3eEwiO6N4ZTeGAAA5FAePhMjIXSAAPXhlN4areEoPhnIfvNpyc3h0N4Zg+GRPh0T4QiJ533hD94Wuf4yPhLD4WneGLacf94ZAACz3hVN4bzeF8PhcCIc7AAPXh394SHeExQAGt4XTeGlPhxdgXNpwf3hQI7uNpwa3htT4egX713h/j4aI+GDUUo94ZTeGgPhi0ziU+G/Xh6j4aiO6bXhlN4dNpwUPhs0wXE+EJPhkAAOjeEtPhoLPvHeEPXhuN4Vw+EsPh6N4bNpyw3h6j4VI+Giie8t4bNpy9Ph49gawNbqPh214fjeG43h5N4TteEwDhgVvAo+Gn3hnd4edeE73h694YU+ElRB30FgdeGTacId4cTeGk3h6z4U9MHM3hrN4ezeEW3hj14RA+Hk3hEd4fgOFy3hzz4RzeGnPhkAAFPeEz3hc94YveHePhFA4RhmHOwAqt4XPeFt3hNz4fteE/Phzojjo+HIPhFz4UZbbqPhAD4SfeF/3hWRfvHeGzacz94Sg+F2IhOMznSAC83hbd4Q9eGQAAm14dzeGAAA9FBHXhId4fwOH6LUqt4dDeHjacaN4XteHrXhu14eY+HN3hQg4c7ACgPhMUAMw+Fr3hs2nAA+EXPhBD1uc+HbteGt4dDeGc3hs2nNE+FcPhs2nBc+EcZh68tiY+Hv3h/z4RY+Ft3hnz4SOE7OwAJN4WTeF/Phs94dDeHO3hMr4cy+GnUBir4aTeGX3huT4QdeFqvh42nPneEM3h0YfsS+Hk3hZL4SHeGiPhbSQTU+FS3h514eTeHj3hpd4VLMGWYW+L4fNpyAAAslCQ3hB14VLeElPh1N4bTeFHXhxr4Xlf6qHmzr4W6+HrXhHr4WDhYk3hb14ZzeFN3hpd4dpmFmWWgb4e6+FS3hKN4UdeHq3he14YtpyQPhtN4TveEHXhPD4VzeGY3h24nrG+HBvh2T4W9eHzacQL4YAADaUP7eHTjugQ4c7ADnXhbr4eTeGv3hCb4Um+EpvhO94XNpyQAAuj4UK+FZvh8cztg+EQ3hyETvPeHO3hDD4e2+EA3hpb4QkOH2Ph614bdeFivhWD4Tg+F9vhw94Q+I50gA7T4aA+GjvhEN4f2+HZDhcd4QM+FXXhvb4Qw+HD3hBQ4VzHgo3hDL4Q9eHrXh/94eTeE9Ph474WDeGIohsnXqPeF03hLr4ZzeHbvhu74fu+Grvhh74UX54FxWJ74We+EXvhs74X2+EPXhwj4QjeFNDhzsAJu+HbXhj74Su+GPXhr74bSyHM8Wn74Y++E3Xhm14VdeG0vhIt4XlmH3vh574Tu+Ge3hIH4ddeEo3h4H4f7QGXXho94WTeEAPhvN4WM+GJvhUg9mdeEvXhgAALhQO94cPeHTzB7wABfeF/Ph1z4bc+FKvh6j4bveF2vhmr4f514KhWAL4bPeEL3hS94bq+Ekfhdz4Ys+F9vhtr4fa+F3fekcFo4+EY3h/z4edeEJvhHdobs+EDPh8b4e3eGuvhcb4ezf5I3hOD4fLeGLacEL4bNpyB3hxd4cJ+FBvhHr4YayEAH2Wj4bteF/Phaj4X2+GAAAGFCRvhDw4Yc+HKPhqn4TveHqfhDD4Q9eHBPhmr4XFJ43Xh914QTeFE3hkT4aPeGlvhNY1uZ+FcPhhN4fteGTac214eteG43hDD4aY+H/Phk2nLjeFnvhot4a5I7W3+gqIe8AD2fhln4U5+Eufhbn4RTeHevh2D4ZTeHDvhpb4f+X7M3hdN4VLeGbXhR14cE+EI3hsI4XsPZ7Xh8X4Rq+Gl3hoDAXXRbpfhrT4WiOEkJuGI4VsW5EIOU2nHteGpvhiX4cl+E9SeJX4WV+FJfhe14ZreF63h82nLNpyc3h7n4eTeHy3hJ14eg6F90WvN4bV+HD3hU9toHeG43hnX4TF+EbTued4f1+HdfhpDoc7AB53hvX4cN+Fg3hHI4YF+Fuvh4t4Ug+FZvhDDoXHeGn3hqt4Q1+Hufhjn4aPeFqvhKN4We+HpvhlN4aPeEI3hYo4VNJ4SjhlSzrowH/ZhPSvsQuGXh+UvXkK+GbvhSd4ZTeFdfhHD4cTeGLac02nD6+EZfh3D4bw+G5PhJ94RI6Fcx4bd4U4+FXXhEd4SfeHbXh6N4c9+EzPhKN4Zw+Hz3hm14cF+Es3hbN4RzeGAAAGAQe3hMN4fDeGmAAc2nOG+FDvhI74UreEK3htX4bo+E3XhRb4YtpzbXhIb4dD+Fhvhcn4W3eEifheb4US+GOPhEt4Zg+FfXh/GVmaiEUchX34T9+GQAAf34QD+FA/hxd4aD+Hg/hjn4ZD+EvPhsP4VDeFw3hR14VSx7GbUIawe8ADs/hHN4R6+GbXhmN4cLeGlvhR0nkc+En3hnd4V6+E03huz4QdeEkvhs2nBT+E3vhMnIRreGbXhD14YtpzNfh8v4Yr+HS3hMgPm3eEc3hMv4US+Fivh8d4UdeGZjhJt4c7eFm3hbt4UcAAe3htt4YbeE3vh0MHujeEH3h02nPjeF/Phkv4dL+FU3hNN4Vh+HG/hT8rnr+He3het4Z7+EI3hYKVnt+FbfhnN4QjeEQsBnrtlh+HYfhtv4TM+Gofh8b4d/eG1fhKN4Q9eGi3hYyLvNpw/3hpb4cC4GdHmGL4Vi+HE3h3P4YOOEJcWm14UE+Gz3hUt4e7eFXXhAD4eNpwc3hm14V9eGd3hw94SNNZFvh+N4YD+HGfhmr4cQja1/hgP4Vp+GavhOyDs3+FNvhi2nCL+Fi/hw94YKlbo3hrn4fjeGerOIf4bk+EfPhHStuV+EI3hFztoHeGLPh9b4aW+HqpW6N4dDeF03hMUAMPeG6pWub4SG+HC/hov4Z9eE3vhV44c7ABs3hI74XteHo3hc94Zl+Froh42nPjeEhvhFf4R6+G43hlsntE+EHXhtX4eM+Egvhoavvi+G7Xhd/4UqsFFvhov4TM+HP/htEfs4jau1+fsntcD7OwAr/4ZTeHv/hib4aG+H1fhjX4c1+Gtfh1qwQdeGU3h514aW+HBI2Z14Qo+GAAAPFCz/hd8jhG+GavhebASCt7jacs34Zi+FK/h+34SIxbTac6N4dt+Gg3hAD4Vl+FNpW42nNDeHP3h214bb+Epfh1cnkKi6x5hTLobs4Ft3hnN4Yb+GH/hgv4Yb+EKPhoN4Yw+HbvhId4bNpyzpWyb4UneHQ3hm14W9+Hjact34TveFQvh2H4aDeHr3hxN4Y1+HQ3hP94VdeEh/hbE4eX14R/hUf4W/eFo3hxd4XH+FcPhPD4QW+EWPhRL4fS+HiIeLSNtPX7apu9alooBHiARygEbH+GTactX4a9+GaARV94fS+F4oAlb4bo+Gv3hIz4Yk+FRPhO94ZzeGY3hHGIaOea43hc2nG3eElvhrv4cXeFAARFgEewBEV/hQz4V6m7+De7yNgC+FI3hAAEereHJ3hb14RHeEK/hSv4dH+Hu/hqj4ZteEKPhnd4Rm+HrXhrCHt+pYaYh3n5OPeEqARLAEcF+Fy/hsQEeoBFvfhh14doBGXXhugESu7Z47+Zv4S7eHm3hxf4V3eFS3h/gEcm+HIPhab4doBEfPhPVHuZiFXrW0T4U3eGQAAIj4YdeHk3h42nHjeEaARAQEToBHL5hViHsHeG0vhQAERy+HrXh5T4a9eHsvhLD4VdeEa3ht34Vg+G43hPQEeNpzP3hMz4R5+GbXh0N4ZABGj3h5N4YHeEU/hKb4VLeEh/hnD4S4BGI/hez4X8+Ho3hDT4fNpxYPhjAES4BH7Xh5N4UfNabXhB14Q9eEMPhuwEXMBGPfhUt4cE+EsPhjD4Z5+GXXhRL4QX+EhvhwX4eNpynvhjAEf4BEV/hpQEVY36xN+DX4U1+FS3h0n4VC+G3PhwX4bW+HiARO94QK+FCvhIj4WM+GO/hzv4VfeF/ARNr4VLeFk/hb14SjeGY3hxd4ZwBHcAR+14VLeECvhAgEW9eFzaca/4bt+FaAR/14fE+EyARXN4UdeHAFhXWzu8ABt3h02nLzeEc3hwX4cdeF7XhWgEaneFp3hKgEQm+Hy3hhv4S9eHx3h0IEZC+HQvhe94ZAAC4gRxd4QSBEJ/h614VwBGzpWQgEeLeFYPhk2nGIBGHXhEgEbSBHSARPwEXIBH0pOgz4XwBHkgR9P4eNpyw3h8b4UdeGCgRMIEdC+HBfhhb4YdeF9vhWwETSBFSAR9IEcP+EIvhVwEcYBESgR82nHNpyAAA8FD/PhlN4RzeER3hhoETveHbXhmN4ZcBEp/h0AEcUBG2vh894UTlYAehDBYU6+Hyfhcb4eF+Ee/hWIEYUBEUgRvr4doBFBARsHoSWq6r/hnr4e7+F+/h8YEf4BEoARyYEfVsFffhjAEciBHCvhQn4UT+EKfhGYEd6+HbKeEd4XteFVvhkD4coAB/3hGgAMF+H03hHAEXKBHEgRvAEWSBGCARwgEcqBGqgRnL4ZIBF0gRWoEYyBEfcBqOIXSAA+/hqv4er+FGfhCQEbYBHVvhur4XI+GcPh6v4V0BGzacnQEbjeFFvh7n4QMBER3hTb4eTeFCvhPAEaSBH8ARb34fkBHa/hh14T8BH5/h0H4ZOBGv3hwX4ejeFAgRWgEfn+GQARjj4SSBGNARAgEa4WGdHmI4EWr+Ea/hkAAD4BFRARu94VW+H2ARV34QmBG3gRDb4VYBGj/hSs4YQUF0gAtr4ZTeGpvhId4Zw+Gi3mzScAT+EngRDn4UTeExAR2v4fUBEMPhgQEbOlYMARab4W9eGOgRo94XPeGXARxwEWhBFYPh+v4QkBGeARJb4X2h4dARO94Vi+Ho3hnd4TmBGY3h/GVrqlaoQRRYEaiBHpgRsEEawBHsARl14USBFbgReoER2BFKgRogEYiBG9gRmoEbIBEDgR1RYTP+YMQRMv4XreHJ7Ov14YtpxFvhJAkEW+FivhGgAA3eFN3h894UaBE5PhnN4bjeHxehbd4UsBGY/hqwEfteHSAR02nFLeF2jOdozsehjB3hmEESO+ESgRIf4UaBG9gRi2nMZBFUQRhP4YS+Gmvh5r4d8BFZvh92HsXOGQYefZljOBHKgRuP4bjeEb/h+14e5BF7XhGkEZRBHJXmdEEfm+FJ3h82nHveFo3hOT4Z7+EBQR/gEXNpyw3hFr4X/eG8/hTOIb234arWYPPj4BESgRBD4fn+G6vhV4EY4+FrARAwEQ0BF/gRL14ac+EhFWQ3ge8AC/XhVN4eA+GQAAZEERRBEDARjb4RX+EfPhpgAA1+GB3h0AEQb+HnXh0N4at+F4fhR14c/eFTgRX14QvOHvAAPgEQ4BGQAARb4R8+F/PhST4QcBGWQRkT4cE+FTARL14TFAAjQR114W6+EAPhuN4Zg+GGfhzRQWZh4uARf9Vn2p6+auusJqOBEvgRZUET+BHFARyEEVg+bzPhN/4TFACjARXD4YRBHF3hod4euBEtvhS0EVziGbqePOIe/OEmZOusJh4BHt3hJb4RdBErFB384Xqx5wLhe61gxBEIgR9QEfsBFNARFf4aI+GElh1qtpguEy4hZJYTguE/ChK8PgQuEq4ha03p6KHd54nPPuScHc8+TJYZyIGdsWZH4QDeGEGW60EQw+GbQRy/4cqHYR3hbd4a4+F8lh9j4Rr+EoPh3BloHeHCPhaz4cjBHlG+Aj4T734o3hyb4QY+HCnBET4Y1+EI3hzxFuZ+Gnq26YET3k5mgRtz4e+BG1QR9UEfveFw3hfEER6BGbXhqf4cF+EPARs94YD+FbARR14fS5CZbW42nG/+Hofh6t4QJ0jbXh3r4ezBH/Xhi94X8+EuARP0frJp6Efh82nHTeHJ4hvvgYeKFn+h9pYSDH4z9+TpYd8+FQ/hu94QFBHIvhp94Wi+HulhLvPnSADw/hUt4VWBE1gR2IETk+GmwRqL4Rc+GKEe7wALbBG6PhkD4Wi+Hf+hfujlEuEEFu334bV+HvgRfUERHeF/PhEj4edeH43hOT4SD+H7XhTt4V1+E3/hV14c/eGbARYcEdgBGmAA2D4dzeEhvhlMES+BERwRGn4QIBEIfhT4gXLeFRwRoN4fS+GQAAmcETj+FHXhpgACf+GH/hJkEa8+Fp3hUT4RR+Hz3hfm1rjeH8AR494XigDtgRb14UjBFIQRqf4XPeFZQR5N4R7eFzgRK34SjeFL/hecEYdeEFwRc4EfZ+FNgRoIEXxBEpiBkBIc7ABBfhjn4eV+Fk3hEcEb3BH9wRVN4dHBGiwRSP4ZAABI3hON4Qw+HnXhDX4aXeHQEh5X4WM+HQ3he14ZNpzkQRxgERHBFI3hgQEYa+G7IgAVABoACrwR8gWDFABI/h6SMGRujrwRuP4UoSSG/mu94dvBEHLh9d4QfBFHwRVf4WveHM/h9P4ZhBFS3hIcEfjeGvPhZv4cvBG4QRev4fS+GGvhq8EU/BGbwR78EVxcF0PhO4EW9eE6HWW8EafeFNvhu34fteFXXhcj4RY+FvXhEP4QtpzAIR20EXteH9gRRGts3BGqPh5H4UFBEo3hh4Ef3+FIIRY5NighGcPhWwERghGqPh9cETdeGYPhuCEfNpz4IRSEEYQhF8QRpgAN0+Hkfh74EfNBHkIRc8EZw+F4/mKCEaXeEgVhBDFgNc4kIRGn4dDeHzPhisETzBHYkOtCEWghE2fhBcEVghEjvhrCEewhElAR48ESKuHka2l5NkGl6kx+BwYVml4Ux+xwYQHmFcx4PoEaZBEMQRGAETf+GYvhXcEbZ+FOVhc1ViPBG+vhwP4Zw+FI3hzn4bAhGavhilIcrKFtmW5BnmlAEsx+8coURl6JyhB64cnKHSa22H4ZTBE/gRbH4VYBGXXhn5Tli+Ft3hwYET8+H/Ph8T4Zg+GBwRA0EU4BH2QRC1vvXBGbXhjcEUS+GJ3h74EaHBFIQRjj4cVBFrwRaN4VjeE43hqiEY5+GOPhvr4QQBHTacG4EWc+HrXhdN4eHeEfPhDCEUh+E8/hHcoRBuFJsWLkEfn+FegR9SEZB+EHARHD4bOlab1WU2nBIBHz/hi/4bW+Gma2g8EVdeGNIRT+VheP73y2uoEYMhExQACIEWqBF4fhR8EaK+Gg3h614aYACOgRqEEaMhGMPhe34dNj4sARcAEdLeGH1WKFlgxuEAPOqEERDeELIRgP4SHeEAPhzYEVwBHHyhXMeJteH43hPT4e9WEx/hvwER0hFrgRZ14areFMPhez4Yz+E1ARuP4dPeG3gRUt4eBBFEvhi2nOJR56hhabFoHeH6gR6sEUw+FcvhJn4TM+ECARtwEbk+Eo3hqb4Qb+F0QRYyEZ+BHGwRab4Sx+Ehvhm0ERIBGHXhi2nG6BGzpWuoEXRBE73hMEEQJ+HaQRP4ETcBFrIRHN4TUBGvIRV14esBGTacOj4WAhEkoRm9VvNpynQR3yEYdeH7IRkIFpzeEo/hb14SBBGpvhkUEUs+GMQRNv4fnBFXXhId4VTeHbXhDj4ZcBHz/hUAESX+EJARwN4Zv+EFwR6MEcdeG03hgKEQaSHvAAMEERKBHtIRhf4YLWGuwBCCEfqBECgRJSEXBBGGgR1KEdK+EO/hTv4X8+EwQRlKEaS+HkvhJ8EZw+H9Phfz4TXeEaIRDIESjR7fEw4ioQo+Etfh7n4Xh+HHXhScEWyBGzac5f4bMBFjQRMwEZDeE3fhtX4apBHLARGkEU8BEa3hSsEZjeGmAAiX4T6+GaQRYgEXOBEkIRAD4X2BF8QRkAAPPeHAgRVN4SShGZvhGb4d/eERoRKEEU4+F63h8wEV1+F3ARVKEUS+GPARRn4XUBEVQRCz4doBFRQRmCEXcBEkIRvAEUy+FyvhKSEdYqECXWrIEeyBGlQR8cEbZ+EOKhLaEV6hFC/hJoEW++F7bhncAcL+b4vh1kERahG3PhraEd6hFc3hcN4cTeGU3hKQEVUhFNoRQSoTfb7DgRHN4QreFmARjEEamhHnPhor4Z3eER/h7qESvBEbgRG6ER5+EkIRNkEZahHzIRPEEfaBFHXhKdYfotTjoRHIEY5+FcgRWgEQShH7XhB/4YahEJvhOCEYr+FIgRSYESxBEtgRpcEQw+GHoRZP4UsBHXXhIT4Qw+E1ARRKEdK+GHwRgP4SehGUgRUt4fQhEV/h5L4WkBFOgRHwERHeEzPhUEEYohGiwRBD4U6BENfhvAEbqhE4IRjn4RYhEYvhJT4SwhFZQRkN4VchGmAALwESmhHXAR794SX+E2wRBqEUS+GTac5/4YhhFW/hTD4aOhHOgRmCEQtpyd3hJkEWHeGu0etV1paG4/hINQEbzeEn3hhL4VehG6vh3N4V6BE73h5j4W1+FU7hdEtiHeHwoRy2nLTuFmz+0u4areF7PhtX4Qb+H+/hgkYSqhEooRfz4SRBGvgRxz4bGBGzPhWv4dgBG03hVN4WUhHoQRiCEXhBEWgRMn4fVBEJAR8EEUr+H2oRIf4W2R7+z+IYFj4BFKYRRv4QH+GP1h4hFkYBFqgRJgEaoBFmARugQXSAAcvhbAEUh+GTARkUER5hEroRimET7eE6YRBQEZT+Fa7hH74WoBEG/he4EdgBHStBA/1qYhHIoRdgEV8BEdAR1KEY5+GE3WTwETg+HA3h2mEf7+H8ZWHkYTuxaxYR4v4T5GH27hPv4UeBFvXhGWEQkBGFYRiEEcmBHu7horzjvOavIRImESjeEH3htz4YCBE+fhvBPqAhEDz+bwYRw2ERPhpT4UiBEa/h8CfiU+E3Ph8b4VTBHZ7hAv4bNpwh3hUkETjBEiNhdIAAvBEdYRRe4e8ABFwR2cERZZ7lfhe14TpSGEFeelIUw5ZL0ebSEUE+HMPha4ESjeGU3hIoEe/nB4AR234TbeGPARmr4VwV6vIRAUEVwBEn3h0T4VyhFS3hN14SjeFaARw94TXpZI/hqifvQ+GegR2H4VoBFcgR9MEdUTbbPhND4bNGGbtByb4Rb+GlQRAN4dteFC3h214c0gGzwRO94fP+GgYRP8EaLBHKAA9n4SthHVE+bN4YIBFmARPKEb6+Hw4RiOETV+HNE+6N4edeHnXhgL9iBBGj3hii/hDeFXXhqN4RjeHY3hTd4VhhFE3hLqET3+G/wREcER3+HV/h+wQRbrZKvhgaEb1BF1/hpb4Rx8EZNhOTYYa1b262gMYfk2HX3Oz1jrkBEzwRs2nIAAB6UPbeGlNhQkFgxBEAgRmAEfN+HD3h3lIWJBElvhfz4Xy+FLqhL65pu+Gj3htX4UrhFivh8nQcKhHC3hYqEW8+FRAR5H4crhGvWe1D1l++EioRm8ETveFhoRr14eo+ExQARuETbnYMQRmuERc+FDFe9uERbhHBvhAD4f184PXhov4fNpxnXhbd4RDhHsxhMNnpgw73oRG6EavBGW4RL14dbhG24RSyfgghEogRJYEYW+FuvhNr4Wc+Fa4RONnv5BGE/hxP4SG+EDQRruEUiBEjvhz14b4BHi3hVOEXhBH53hk2nG9eF6/hEoESHhHGARm14Sn+HBPhUt4bjhHQARDd4VuhH0vhsVIQYL4JtWyVIcDz6Qe+c1dgm+HxfhuUESg+HIIWx0EaLear3hYmEXS2GItWIf4Qw+GYYRj14TOhH5oRgr4cWBHJ4RZYEYxBFhoRgiEVWhF54RIP4b/pbTacs0EfH+HRgRJP4RKBGY/hs2nNj+G4/hi2nAi9YG/hpiEdHhFT4R8qEQA+HyQRf8EcdhEtvhh14UQBE9HhsPQb/pa2vhm14fABFnPhLD4ZdeF34REcYV5xbMcuTTHvi+Ei/hL14ZteFxxh9qgAnGF7MeScYblSH3ahkp4RMn4MdO+lPuP5YMQRZ+EXv+FnYRZ94bpgHBPhXn4QA+HQARZlPoqhFhgRfAEVHhGT4RMYEQLBHo3hi2nNsBF7YRnD4XahHcoRO94cKhFrgRS0EexBFvXhYP4WqhF5IRqb4b/pbffhjj4eteEIvWSH4dZhFNIRihgWFP7WuWbCrgxBHr/htOEQjeG8AheL4avhEhvhwkES3BFw3hAUEYcBE5PhDP4fM+Hhvh2n4eWeF2/ODPvqjBFhYR+4ETe+Hgp+olXu+Ra8gRJoERrBFtxhLbdr5hHZ/hsN4TzBFX/hAN4bf+EYfhqHYRW+EooR54EW1hGNnhPmEfS+H/YRM7VhLBHyYRNz4RVgGtnhO+tlXqHYTwMWESw+HhYRyv4Ub65W3hlWEc4RFyERMt4QXqGOMWfJFhD+FO3h42nEdeGFvh6t4Zz+G1AR4uEd2eH2se1eoQR46dnhMr4CHeGgQRV14TUBECoRRt4awMEHC+RZFEnhGswRI74RMBF+oREwEazhHBoRmP4Z9eH7ARikERw+GKQRuN4UnBHLoRnD4V4fiHgRpaEaRhH7oRbP4T8BFzgR/gEUh+HVoRxWVq9gFepISmEb6hFRAR/qEXMBELARwaEVW+ErARdGER7eHzacTWEbc+F8wRN14edeHr3hD1IatxZYIRzznmThFFIRvuEaYMHvAAsxERThEN+u894f9eEwERQNPsBBGfgRYX1vD+FBARvbHj5hEi3hkN4dNpwbvOgIEWs+FhwReIEZw+FEwR6X4UEBE1C2e14Zt+F3/OfMEbRhEY0hSREXThGcPhoCEaW+FRDBgVvA8RHuYR894bS+HzacwT4aShGuARawIYVBFH3hp94TyYEKvuZt5kJBEEQRvr4QBBGsWhY2Ed3eEpvhTD4U3eEd3hf8HhUBEBERwOEYkRF+3h2UESiREU7+Jr7lF2H3Ah/hEabeGu3hrz4TreGhYRSRETP+GMXhCuAZjV5kGhNALjK+A+ARYUEe9+H8ZWWXYQQ9bq0+jmEcKBF/QRf6loL+F29OSr4QiCEMi+DiYbSLbeduG6foXgFbp+1XYXMA5wPhCD4XfhGiPh3rnuLeGNPhFgLkkBHwARmN4fjhHB0+vN4RYRGVHmId4dDeG83h0D4e0mF0gARMESHeGn/hoj4XJ1Zzac6N4UaBEn8uGwEQdeHo3h6xETzha43hi2nLzeFhueLqEcdeHaQRRdPhQBH/YR1otk1+EoPhrXDpLeE2kRgyYXzBHgPhkpET2+454RIH4SR+ET3hPRoY5x5e1eNovvehEnIR84EZ0BFIoR2eEWY+HFvh44Ed6+Ge/h9SESH+GNoRT0ERMmHjdhwoDrFhGrIRB14dpBFCvhL14aYACZ/hXL4WK+GmAAOm5h+YGZuev+/l3haZkRSd4dmRGLacuZEcRhEe3hg+EY9eGAIR8SEbGhFPSWK5gdE+FyvhId4W6+GzacYhEVuBEewRL14bOlYbAR2QEfm+Htcec3Yfm54vdunp2Fi+GA3h4OEUneFXXhVeEY8mE60hy3HoxJZ53h74EZNBFhoRV14YFhGofhmCETteHCwRNhEZIK4kfhB3Hs/eHrXht2EfPV4uAROD4fteH6ERbtdgkM4+/hTH4clBH3fhh5EereE/ERKN4X8REAkRFJoQ1EGmEBqh/oNeETXhx3YbiC7gphM14W64HndhdowZd2FQpho14faaGHdhVtIUCmFTXhClgYaMGUfuwoLrNHSophb3YZgE4YPeXqnPl/DfSIJRoCbLzNvwwRwIvACJqcfrWDLfBSjw8UiOFIh/7AYbAFKPC3wAVanJHLDF/ATanM2/BTWAQi6DVIhhXYKrrBwubdqc16iAFBxDqcdsAA2HTxfo40cGn7ASgAa6nB6/DR4wEoAAepzcURt+IOkzwHSINiEJHLBKjwH6nEJwAsURxfwMaUAAacXAsKySDrUmpFEf7IgIac3HABJRFFGWhunLhRFNzgcMiExpwy3wh6vBxpxcCwP6JDjIiiacxboAJRHSacNkAFwLBSjwTyLllVCijwqmnCzIgsURh6vN9sASyIzb8H2DRlacEsiDK/A8Q4rpQE5pzCURuiOPLIhHyIXAsJQrChacWb8OBjCl2QcWnNB/BB/0gdgGbIjKyOTUiBlpw4J4q78Eo4DvwAQNQIVpyGURV/CFiuB1acMt8AJREtac8VEUVPCfAA7uQH1pwpURUwEKpREhURq2nNnIjsURh6vLtpzCURPFEeXIg3ackcsLJRFPacacgMW6BVURv2nJpRFCBA9kHt3IgsUR2LQLj9DQ6cCVEXHJiTyIRVERXpbzyI3VEWc5B5URUo8LFAA7yIdsAO7gyqRQ3lEcW6DF/AtOnChRECURKunMrI4BUR/OnOFRECURv8iLRRGcsgrb8DLpzXqIbH7nnIjwURi14fVCELmhX3YRXxZb/66UgDCQGHURbhNj0zaDiCLNYIAABCgEko7bmhsdIXm0ACU2bhNqtnJloAMwNjeL5a5APmNl+XidgAaocucABvFO6dIQZHZ7gAeIYWJq6y02b1EV7cjEhO/0QVbtbACeLAACAL6/l4vu1ryWYDaaUYNnPObPbaqcQTDEHV0ghYQG497O1g+BsoWEA7w21m4BkDY9M2yMQRjEHMCe+MtujRFuE2Mgtqv3o7I2zANrjRG9NeaNEcjRFE0ROgtiTRGB82SFoQL2Fg0R0fqqgACAAA2oCdgAkgAIAAA+gEdREx3h3EDnZADA0RLNERzja0AA74tmLEG80RTNEazREr5uArEKA0IMwhtgNkFr6XMAYtEYgACc0R/AAJT+7RPWIIvj52HyBOGNEcNbyA2Bd1EYmY66+MtgnsnJZBDOrdkGOYj4gAV48ApeHfbm+tEWzRGggAF1EclnZWhO+i5n05qoAAltES3N660RTqYSD44UyyzNEYAADggNojaTOkxtEX6mGeRGrZFrkDbhKyOcLjOQGRUAltETMDaaWhyiQfjU5XjwIdEQSK5/gu2UYXRSCYwA2phIZaGtA2XGoeTzjdFEnQNiLRGAAAXoCMAArr0qaIBu0RKL3i4cI3dW1kAKIeD9lhn9Tq3EGC2BHYAKVYF/JBXcDsgyHZUC0dVhcH5a5ARgAOQAD+WBTqnIrRG0PhHh4AZC4Ay2pwTlEM7twhmb5v8gBREAF1EUAM6sQuehNujpycQuMdEf3RE7COeGFgcIA3dWBywP5YGQwOOXXoG8oiSOrxLplkGu2BBYNpPRFVEufojiRQG3jWCHiG4TZArmUi+E50grJIq7ADwyGDphzMtpQDKlWBeHqliDbCMhR5trhDbxTBfMtrHYFXURMIjoAABagK9cCKxBC6YWDHbs0R5/bJyH5zG4GP2BCk6v0R1rXnbRH+3Wystl5nZFPh/lFip+qphOoBfiO5S4s2lAAMzRG5aQQI7l56DTReCCYaqDYYaAOQ1hxdo+iuJtFjhYCOrgGrAM3RFXiWqDEczRHrmM+vns9G567WP7AhgxGFQu0yYmi26IMRrm3u+mHHIOhgABdRG8vqxELiAOFlkAYDgKfRG6h+hEIuwUCYwA5/bHPYEfWapHnsjEH0y+MTIVakG7RO0sTvnRF3WhA0tq/RGMO+dcNrQAAXURdwNphHZfPhHJFojA7Wk2ORgGdRaWJBl1FgvYTQ0RI8aK69LOiOe2oOcACyxomsvg44KyOBt4rmwi6lWBcCNqRmH2IhebQH4QA3dWF1ESwzbtEOMQAG626d22gwtq69Lom2c9gpS+Ff42c3gv6pD2y+8SQffjYsAAF1EV46wBW2g4gsz57MZhwtnsEig2rgiAAOVYGyDh68tjvRFIMRAlFlMyHYVA7FFg9RFdE2+0rkzRauQ26DgVExHzOIXCjvzMEC2wgtERdRHqsAsbPlKBb6DhuC+AWjYEAA7NETLl4ftggTEVQ4HBe2m9EVwvDsOBm5XsOI7iReytEZhDZlMRzg4YmTSuvSwIAMbRFQehz/4J4OGDC2svAP5YF/URdDgdgS5K2hdTEQkQANMRhdESlraUQ2ykrnnREF0RGDEcnM7DMRvlKlwvCUCeIhMCzQGJk00gAPnRETMREhbu4xFR+e4zEfGBBYxu86yKMxELvhKzEdTRHf026DEUCkHgK2zoxNgxGjI2GNET8gBhKOEjEUe+FideBzETgxHHMR8rAKhkKcQq9jgbJ16uQ2YjEXkxGGOCvojvAS4fy+sE7qWH6PMRN3Vs8xGPAA/lsv++FkOhlZcCWp7u0RJzEZXdKApwjcbvvM4sD2Xe+kCxGdgAPjcABhwAuu/A9tcrRvZg8XjNzjZSD2UQuucAClWBi3oRgxEEfhOTEc8xElqezSQaL07tOA+dEdojYB0RqdAe9LY4sR4hnvixEbouxGNsQABUMRHH4dvtaDC2F1Ef5YHvURrFBOdvgd2hS4QfidDnb4grPuzf7ssRlw4cPQHbfwfR4JcwCCAAhK4XPRGd0AsRQqkwIlde05fgAfbJrSpVgfkJDCsRVDvqKxE7dWskTnFJ6RZgjLEe9RFiShnZNmo16qteZ5fnIJYYaAqrEQsa4hshsQzv5I63Q2e2YQF+Fa5ArkhqsxFiShPyAJqxGDC2B2YZPUCs2ybhNnqxGsiu8aQeaDasBBGNEalzZ18AadETtYHoBeRReB2ACxs+ZvdI6xFppBY0wn6xHHzWYuREwABp0RnADvnw510WgAAIKATLEcTbinROqPFjvtbeagbrETtzYesRN2YTdk7yyIswQZHuBwIO7bIaQF6usRbhNuKzaFMR241uRSJhsRmENgZwoKHUkc8Ke2CkjhfTgc6zZ+42KNESqiGNM2jMQBmxHkIuu6cLWxEPURn1EWALabh+nmQq2xEfURIGqh2xHTfhy5Cjr4BXYCkmnNyOEsj2l24WUKi2vKb/+Hvza+xQwSTtMABjK+bdEQd+H9/e5+5q9RHtuQZvdH3dC9sR2rTlO8yMbg17ITOLzaoha6QbqiFVMRa7EfzEAbsR3roHvzbXshskTlhNZZrmzpmhLRFUsR748OggBiMR2YNnKOHA5hPXoTVXBqOAh1NhwUJfl4OAAOzRHUMRU+Nu84D50Rn34f0HaNuI3FOhDkYZGE97EZhHYC82P6jn+k7U0Re4AK7RERf8u8Fq4NKCTWGNEew4HdWBsSruRIDs0RwSTj+o6atuSnvj+o4aUQvTEbbQAhQA5HIeY6EAcRZ0jpEp76sYcMwNtvgIeI7tERBxHGRA4UgBo/7MuhebQG4JqSAAbtEQqTZxRm/64OGbIQkAGNEdLE7McRGqToY/4SchGNEaYDbCLwxGQZdB7Tw2BzgW4TYQE2MgPlzBIeyeq8NpmOGU0RN5spjREk0RGTthJxFmqeC4jpcwDs0RTLEeSugr/g75Tk/K6KcRZvdPfDYvV+IFsL6xFSuCJToQNLYlguGLEYjRE05hSwNqzDZ96AENflexFAcR/AAHoxFNg2uT/ism4JcWh1aDd1bu0Roqbpq5CUqy861soxExxKk/XrMpYOMRATEbKxGIR+ru6phHZCsRGQPlIvgELQGNERu7ABcR2aTggmHnJuYIXm5nZ7EAGrAHfE55sR5yDuqBJmcRVyDmDRHnb4QLEZf14RcRbhNkhxFbP+ej4OkxFSuC3C4LLGjuo2k9EWuiFB0RBfNmy4F2qQhH1jAxGkTKsV4A0xHKKudIwJRV4NcRrLESlz68yhc81pAN6+yevNEdUiCIAAjdEf0xHucRLSQdHo5Xs+TuYfRxEZLAnrEQsa6TAAjnAM7X7dZBsYAHWxH/zu9HEa69I50RI6zsrRFPyOItEXqxEpsRGP2EzREnBhA7EQJxFYsR1rgYMLaQMRVnET6sEHHCc3gs4QBp0R96ITXJ40uhqBYTR4BkcRL6+PwABMcRdVDpIeBYxAdnESdyG7OBbNNgC4BMbgrAADoWGy2CATEWIqA9sRR7EVrrKE42XHER4MFAxeCRAM+wBdsQhrEcCADiOSNhAK7RHyARnrtv+aQq+B1dIBdRFWwAjLESpQ5SuCaIjuT0Bx0Rj21t4fh3tu294OixGLehoh4Ly56KzW3rgQYBEWzWZftgwADs0R8f1uqwBgqakgAO7RFJsRXC8PjxHEAApnES3N5gVOgy1j8ABUSQVW1qwABfsRbgEcWzad22SQXhdRHAVu3VgUMAApfgCRAO7RGcMRUphF0Ta5GE/BThzxG+V2/sACdIRMAAgvEbLGjXYOZCHu8jaI8R/lgcjxGo8R7TEWRTZ2vK0NbjCADY8R55LgJxHwcBNjFnl9J2S2PyALLICScRsQAGLRHdvg4QALDxH4C2HebgQABucRSbQVTyHhTWz7EQLxFC8RU2YdGC6w8RcnETdKBblO4bofmm788Re4AILxF+fQwvEa6Or30ocdEW5xHamEGhdgm6EDouAjELLTaggAQBku7RFeegHLEZIUhwoAbtEbqgAmcRhPEeYG5nowdoov7i4zLWDKNt6kJlnGQdCnOq4JEAZIwI0xGsEwHQ3jDl4Wc2Gj4CuxHY6onNETcxHGmuugAIFYGpc2XwAIFYHLo20ejg3RFkU2RXCHeUB2VOATEd4fi3NeWRcI9aHmBu4a1pnxELM2afIUsg4Xi+0bYCzxHaieLGwRpsEG9iKrBuYG4GyA1kAKVYHLAAWHEVA2Q5wuu7Nm625I8R7s7CIzaCsRTLEW3xFNoUP9jG7RFg8RTv4MWjZyOe+AgO6r4R8RTIEeExYHHCGPETeQBXeB3Wml3TaSjCHsnpTQh/dKepNmIzZREAFFugRg70B25gbpMADLS+A2NmrDKWc2pqAKzREJ8RtNkK24Es0R4uNkhTZmqepaNhHxFXsAvrEfmxH4DOBfNn/xG1xOH5juszaWw29MNqnEGy02lDEegCLdWBb/EW0xEc2I4+QRGBEcf+Ni1oHxEEAAwfEasQDdWBZZjI7xF6NOynEe+4HL5B4M4Wyu75X+bvEUHxEe8R0svv5YHu0RQcTl8jaTK2EYLkIWE8Rehwtub1bbKesrEX2gBpMRRLEV5mB79q6UgJ0xG1I2c1cCAJEgFqXPtoOBFT8h/m1jSQCUmSY5drLTZncRKqAF+xGRVaFJAFnTZxw2tANkzREn8RnYAHqxGSAAF1EfzRGhsR/rcld4HJAAuRhKnMJutuWKoUek60t+Is4d07a4VuFPEbIABUMR4BNnmgDi8RGPEe0wA3dW04ADOLYacRtcNhATYWpBv2wVRjakCR5AkX3xGuDSJTNt7xEpDop7ER0jb2+CZCwItADbKOLGNshJp0kAK+buZ1DyxochbuZL655230hI/a6V0CcEVr5ozdCuuQkYb74oCO/3ES8VhaeBgVDgxxHM0RyWNjTxGzBBdDgaVYFSCRwAkYiWZzeCyaTsHOGqHm0T1ugADsCRpAoZ2UD50RGgAFwJF0CRzRYScgDvURaocmXxFE8RRNCDz7zYCR0HESHxGYQ23mNt3UJ/sRGqcMYxGmMRpk4XXDZCMRb7EVRJCyxoerEaRlCa7BjultmowjJejrEerdZm90/2Lu3DbJXmqf8vSjYZviBfNovxFmM2rQkfHxHI+eXxoSD8H3ReDuwZEUGXMAv5eO4xFK4yBGDjWAC+CRfKrjl4Gb7OzAkWQJEe8Rfd0H2gAXwA7tEf4JHTrW9AAKWp6RcRhOsEAZLkgQN3VmnREhcRnUEWpxocYAsvEVdOiWawwtJK/RGbehpdBp2wgF82YIgIOILK8Q4ZhiKxGf74+3oUr/4rZuwQkd8JF5oAfwkR7RGXFO9Wru6VJ4eqDiTrrCYKxo8AAO0xFh02Y5diq9IHrgSvEUIZ6vehV0EZ0eafCRIQkaVYGcAOvdEb1EjUCRAIkZlD584hwQRK+QYK8RTIkcsUF6w+aQoW2rbPsR+IAFTxHqzWhgke7REUCRmENqbQAzSAUG4H3dCpMRLDNluxG68RVjEQbIA2MRe1jPTr6o42uOAKHxHM0Rc3gq/RFyiR5IjN1YF6VBeLEbAJHnEAUXAMXlh4lhYnfjXpbq8RmvEboABo8RMLEauQC7ZBOAAFQxGqZAQwkTUxFNChGD1gSJHjCRn/EYQuDAsRxy4EVwh5CR2AdvC0BHcRXObjbIgqCRlnABrxF9cRFNNh3m5RauDiTj/xEHKUd3EeYG5squda4HKJHiCRJRNjGoDMiR/0EYP/4klBeG1n6JHyiRAYkXwQBBiRW2qoXt5R8R9KAH6ugyMRT7AHCJFc8RLAAEiJGDY2CYkb4JFmB2YHEamJH88RKe4IgACZiRwSKNmJHqFM1voVTh6KlBAHEfgJF0iRXBdvXxENiRnLEWap54CRNIkQQJGzd+mENh2ACrCRZ2+MYaFEiRDtEXXjaMN248XukRwbw+LCDg0IEjxeTQgYs+aTHOOJVPXxHh4OI4ACFkqeGgTvEVdOhUMR9/EcmG6LPm3roESxFUxBzU3oPoQb8R8wSnvXagI+238C/HA8vg/TEWyE6V2IUYkSsJGxsRTNEePxHUuOmQkZuNZrY2lPERwUJs0RBMNtQJF342jowGOuC0VecL5gLzbyoAOogE50iu0RURvuGJHi42P4kR+xHmBuqg6ABJENCR5Ebp3bYLfAJ0hO0Q6McRc3grrCrq3WN4kXgoivEuLDEX7iBXTozgkQwACs0RqIgb9g4InB+VNmqHIEE2BL1p3bYwYG0Y1BRbq+pO8YNmMUGBABmIdsEAHiS4RXCAyIEN4OTIgV6KEwwREJVrbUAyiATtjOEa7D8RJNgG3xFmM2TvESQ76lMR3AkeH6E4WAe4AF7REkiRogkXv0FylhT/EYbKIV0RnYALlRh3A2aAADn6EAaeyTYXLTZEAAfNEYQZYC2wvwkSSJFXR+qONgdvjT0RVpQWmpqClhbC4QerY90RZAkS757ubWnfAC6UFga2TDERgxFa8+uMdmL4GVhBPeTi2xHc42CTEWvwDak2UrguXRFFcIoxvveQ4NPWVQ1lQNZ+ron/EU50jLQc1NEbU4J/cRvojncVYqSR8YEJETaZ82GNEaDt6XdWssaIkxE/qOQgkWQJGf1OZi4SFABADO7hlmuKFADOOr5tFy5bcRi/EWV6GHRO3hlm7mIEAAkIkUmJHnnILDEdbz64AAMrEV3dY8ZQ+okbpJFF024NEV7RF5iB6dACfRESCRvUkZFJHF+++sEcH4ELh2PDgX1JG3BO7d+JbBH0cRiTEdGNQRSRFdEZgU6lo6wgkeVI5ewR+BTmqXYK1wb/EbLYJtCRojEeIxHzE2GPEavxHfbwbhNukz590RZoMDUp4Wgwu8FksiB2cROvEdYJFv8RHZIP1xGbjWgQdonDbjiRbhNuNJF/JBg+hDKxFNLet5QaKbaIAAzNEanEH4C2vJZl2JGPShr+1lqJF9cRvLrLdxGucqK0kYKxre8RBbEbQGGAyRwMkX3oBNHW1jEdDJGYCRCtcH/xER8RE+hCwABMcR2rTo0YCe8R3jPlnRH5UWzxFs1JE4JuvvEbcrQgSRZqniWp5giReTEVQJHu0RYkoUyTbxgQTLETXgCFiqMpAOYG6iNyLSQcvABzeCFmNhuLaW0AXoQaNCoTSRM4tqZJF2vKm41uUj6Ak2aMke9zZQyRjdESDJF3cR6jEbTxGu0RnADqYJF/iRD7oJfRGTwRRRLpgJGVlwKX2kMADmBubEkQ6W6oyRbhNtNcx3cRZbEbAJGOSh0BISjJGYCRkxDmxJEf7up/5ubxFEAAAj4I1+YmyRcMkQfjYMAAJMkWLxFqHWW0uoUxFWD+mfVgrXBuyRHskXTxFpo2CRAB2AD+WBH5jpwUCd22tFNmjJE/IAZjNvCUFflBDnAO0xGesRhskdbJH8LeVMTiAe7wIRuRAJzRFmqekm3gPxCeyR9DgXKgB38RrMkVA4B5ShT7jlnJH8xBObAJaJFhVBjkgN1YFnSRZe1m0JG5IgWooQExFUrg1pln90pnqwhckW4TaG6ee/Nqro7gyRjAAPKxFmLw1X+uXRFQbghzEQDDYHm+mckaBJFUO+0fqu7RG9yRGb4sg6hMbgDRgBhJHtyRbMkVCQ6tyRtckasxGJVBcMkftJGL9isAkVsIbwAAg8kYxADDyRGQNklJEZ820xbmPJHZyRY5iLfADKyRh3zAqgDzMRuQkS+TYYsRDJtqvJGZsRnYAB2SCoyRK/EVMACXEOiEAcL+Y9cRj8kQYP6qY2NxNmjJE6yRr6CkqoapjWu8FsnJFoyRREAQLzZmyR3vEV+UGcc221QbohEtt2VskWjJGtyRPX/BxgBoMQAvNmwJHi8R8EdkDF7WU2YyWOBxGE42CaXhHxHFqesskTDJF4KR+J0HzRHLcRZMft/4H6R2NnEcVxFflBEDbiXWJxw2NFQKdJHtyRBhjndxEFSRTUAMCxHoCuNR9mxJEryRLCkUMdZ/yRN3EQLzaMyRJXEcQGG7iYLFNkxratpe/8kbDJE1TMnEKuUJHgyREBNrBxGD6eUikejJHEKR8skXDJF1LWxIkT8ADYcR2IkQqgAn0RLDnjtxEYjYGbEQYJHjq6gVgflxENrh5HlrGNpGyR/WnkIpEUcRq9oZLUHfyRLCkbM3gC827CkdQJExyR/8AKVYF//ySVtr1eAG5BTggodJEYyRr0kUSN5TrhvlNg4pEJEAZe1mGQ4C82rckZ4JEdkgHAke84CRU2K7ESskgUNmv3ESfRFWhOXiEQbIHOzmeCoXwUF8RBIEkVbPDAsRC4kerNZv8RqcrsuJF/iRxRwP+uA63BsGXgjqJ+yBeq3t2U5cmE/skd3JHu0RJSkWQpEIRStIkUF4owsRdZDswACPe2nrEerJHdWB2dQR5a5GreBdQQnda9MRjikdL+a2yRAoAM4pFGCRsbEXTxGcAOyCkdDJGF0R/iEaRl65j+tpjhTxHSiRbNEYaJEMxBSAAOLxHMAA+AkWla7ghhM5DooxHSJQ3nEVEALZKRk7kO7RH1iRSIkQtb4UyR+dEY7zapK2wIkV9JEDm2hONjr4DGiR0Y1Kznra0Re5aKBuAr8RLBYetp7jVhKAQf3cGzMRAVgY6JFo8RgIkXixEY0RxFTkwACrKRqAAI8pFdKRgoYU2t4kUOKEkR2TagqRRokWrJHkiMMqNhkJE/SRVDEYLxE/aoQIkUNAbTY+GCkQDxFfURwPETWJGg8RF1YTg+BtZBTckRaxHF0KaOqPXxGfcRBIAO2GGQ7WDuAN1YG3wAxgkW4TaVCREgkWqJHXIRT41s6JEsqAZL4N4yCyVOYKmtgaHLmO5TCHZG7CCRb2TmLlo/2MEdETCxFjXioSkSrTYxyGHWrqiSFHre/rcnvjYYTwe/allYGTAAqfETRJHu0RtYQbG0yL8RmQkU1AAo8RGgkWdvgUkAajgLkJHqnwbgmkyxG5CRmEkfzo4WMR6BAN/TaxAANhAMYJHM0R5YtkeZBeDBlnNpzRHi42svEfzRGPpQ6a3pTQgV0R6ykeMJFz2C0Y1AODCSqRKzNrapEs0RCBNt9gAyiAL7ERAK6lcRHTABCBAaYAgwtmRuHZAWEqkeFJFzSRhe3lA2QiqRkDrF6JEXUR5dEX+xEQWO+iRGGpEujWYIgNsJGd22hmrmhxEGyAbhNtoJHgXeBSkZ7xFhKOjTEZZzZlqRQttrBcD9ogfNEbWpEwsR0XgILxExcRSNNtmm6Jxe8W4fbAEri2h/EQ3ABMcRBKkdPYqaoRE/PsL+Y9wAE0kaBJEeqR/TEUGpGO8RnADtsYD8xBA2LpMKKqY2HfEaijajNu1WQEpxGBUOswkWqJHlhhcfEZ/xHBdA5EgEnxHvc2nLEVgDbp8RMioe0Q6bqROYkQsJEPGMQAkay6GMo2A5tgtpiDae4fEeXxErxhWNqIid5+82tfEaYAD18ROgNiewBN8RIbEcDTawOe7fEbGz4fbwXfEbMi5mqe8okd5qAD8Rs7tqlHbD8R8GbgTxFj8RmEkRZzZlWBFdEf9xE08RGPEUhJHtPBAl1q5DZRmOwlqprJ7daahTEV7WHFK2aJ0B7JEyKhhTEVwEH+1h3WmmepGqiRF6kf1NaLCRxikajJH1I23Vgb3JFYaRpVgVQxGR1hej4JnxGYCRAMToG7ZJCO+gALDqgAaRkwAKyDZQCRq7EeepHEoqsPERehEfw2hGkehJEP8RDSgnpUH+Wy33EVZzaFqRMnjv0KJWc27qNnI0GBB22pNqiqiIaRRXCGap4OI2zgka2JGRyRF/ETDxHUCRLDNjUJFNiRN8ArkxEfqReEgMDTansRu4mIBpGsg2KokSYxHTqRdqkf6pG8SAiGkYFYGPSaV1ER9RGUaRImkY7xEz1hxyDhtxFuNu0mkZ5pEOaRVGkeoJFXqR+9EZTuHMUh0MYfzECxiRKPEU6JHtMRXEYfTuHacRdcNo0YDPg2KmEbxxFE0R1HYZEJHaA2AnERTTZm82sbPupxFSiRoEkShoiWiREIkVCJG8Uh0kNhxJHZaRmnEd9t7iEWkdthQ2bsaRrPEd5hG0mhd2nKdRHMA2Am4LphBzpOEzNvUxF8quQlIeHxbOjEoYuLlJEgIONkYR7xZJaRKQ6JQJGMtI4gkT+o5Q0RXPghPagTsR6nEVE775YRk/jiJxFINh9okceuBuE2pHAuRr7SSRyykbLGjNC+sAkaczYc2OODYR7uGM0R9TEasxGMSRkqkRa0GyUhUckckpHLhhnOtnlBbOmasbPjCxHhKyHikZ3bbViOUuYdQ2GbVW92kWYvDaI2z2ket6Fsuy+VvqGk5TqR/ikaUgKumOjbwdJDbcMSXcCjlY6PwAvdEUAM48NhICNoAgAeCRyBjuKzY0s2BUYYm0FBBBdkQI5IChBBj9TsO+Z8XS8AkSJz7/yR12kW/U7PSRmMkcdxGl7hMWdlqFpEC+wdDty1Z2sRt38o9KF+Nhp7YK6XDk6GfdEXGkH6UhXY1vaxGnwu7JBB0xFZcu2rTszxFL0e7pUvEQBOaRv2DgUEGHcRAlog0y5dUGvbEasxF0OuI7QY5IAp0R30FjBgaqJ+XMEklJGWUAD1EX1xFmCRWXNozpHy220hXrNJEiyR4HwejLZ3A2UwAGS2Lom2yq4ElxFML+2LvrizbuyR71EQZwrVyRG9juTpGnwu5OAEmqHHIOHTEfeQCMbgAgdmb3S13WNukVTEEftBJJNoC/amHgRgAIov42nK0XERSZ5wyRssaGCpGRJIwLEe2xHHsRsSkU9GGZcRDykVwvAOdeK7EdH6qvMuLfLqQpbBSRGbEaOzaNsRGNEXHpFmSR23Ea2qEzs2gwtuWgAgC+XSkTCxFTMRpVgRHYA14AJjEXzhEiqQ5CkQ7g7dWBUCcAy9qinevsUMp45X7egNDnxVoJEATHEUdJGlg2EuETSE6GKRiHEZMraFMR3lIewxHuFe09ihCgE6o2XjEbVd6+7eAudtq65Ngybk1q/RFgC2QBkhkDZl02LEkXszQ0HhI+kaR57jiRs+kQDpHUr+AsYVPpGdMR0jHhi8rZDBioQWMLYXJ+LwCMLt76aucdEfweGOdBhwkY64x98RBskdvpFr6RV2AgDpFUxho+kcypF5cR3AkbvpG8c2z+kZ0xERKR4IgF4JF2zgVqkQhJFSUClzAO7RHTjaDrQU/gBUMRZzEdcV7GuWA/gOmTpKAAubrv5poLMAZ2+LwaaeGgf0kRYxFD7WsV4GXJFeyR6ake7RFIcR8rAI0pGYAAYBkTTdZjw2DIkXVJEZ7eusYSvpHT6RZ6sPfpFBRej6UGh6Gjl2HbrnAZGb8GCLTkHpEq9BgBkaKRZTaRQNEUHJGtyRWaOEbRGiHgHakfBzZxsR13wXVpGnsAl+kaJxHA02gRQJrJ5IqRZXodXoD5sRu8FtzJG9AAFdEW4TYdPWsioZvwZXKUh3QfRxG2rgCIQNCT7HiRHrETsxFsQAIokfpqHXdBuR4c7ADxhBjhdjsY7Yzq8OdpgAClqeXC8KtnK08RMjENdyiPpQTG4G4zbICRZHNtHxHVoBwcYeyxEW8ROSkU8pFm8RstNs2+AOAU96kbopEUiRW2btYxG9MRqzEb/payxoGFQEp74v4RobljXrb/mkRgkUXJFUSRTPQdqJ4h8RFmkXE4GuCRnqkRR9xI0W2PESjzbzMOHLjqA9ZQnhcr5o+lD6SRYioDrkHs0RRMkYVpGYQ2V7tp7p7i6RWBkWODY5yRkZeKgADeM++J4RSsClGRFvjsdlhlMRwwkRIDCoAAuSkSYpHRjUg4gqVYEC82k7kCjxEBeucdEbxuC9i2u9UrLwDl0R5EgCskiCqRtgAELJGwaRmbER8pHdqqnTEXP8FW7WzEnjXpGOE27tERZza+UqArERIJHYi2qPYWUxEOcAWIkS2uQDaa7AkcARF6PgNhAJZQCGLwQ3EflpFziRUvET+xEYhARLERwEFvqRZkkSskg9M2HK4HkxHKmIg7EdjxGdvSHKAGAZFbZu/FDslnb80RVokWCJG4GRVDETEpEYhAGE8OSpGdgA+RAFYYSxtAHejvcXbrUiHPEXQ6678R6UgPvxHVCRLqLnPNatqRzEnnoJGU6hRVIcy8HssRMxkS4JH7SRYBka244JcWJYvAFxEKqRW4QZD76lPWkm+qkZGEmRuJZsAJ4kmRXANkQZHA0RItvjTJFm90kDEbNMLgyRwBkTIxB3421HEUXGGsERgZ3uFxHscRbhNuL4GFMR3BEXo+D56RbNEctJEnsR1TEa/pGSERMPrgz77paR1kkdrqEtxh5OFIEACC8REEQXfip7owLikf7dbv82U3Ebv0YEEAl9ES2261SRnSkckACFMRb3LhpV7UBO5H1qTHa/0RDtEbYREttutcShbw5782ZwkQfxFf8RUc8FH9iOi+2PEVapGcMROAtrrCb/5eCskYMtbuaRM4tnJJEVGRQPEWQpFZcRXgkWsJHUC2F8ADKxFqhyERcNPJEz7Wu2kYw74YcRRvEWnqHtXhjTnuJpGVaRPTNlERFLA22ZkcwDZtGBIwXvCbZ8cRNNEb7xFPC2o6FphEGRERk3Tped6FmR2HVjJxElmRj9Nr7xG+sehEQWuQ7iCRCqAI+JE8+8B/EbepG/AA4RrgMJHfIAhdERXxEybeW9NjX8An0R0Y1NenIwsRjKrqq07SCR34kS/16552s3kK69JMyR6nERZzYoaRIGqiSM6Tl2TWAn/wASeBwUADVXARGRpqkTVp6PqRQwkVfGHhaRF54ZvqGrcW94APZJGlAhe+oc+1biSRDfrv+aTwXiFCkT856tLoDwvvPubLsRWekeAZF7ERFvOLwAClWBrtEeC54HEuYDgCyk5B0AKO3s4QD8MRiNIe8AAxsRgRkXf869h2AI6hjSFSyR0ikXuuAm8usPEdZ2G7se42dgCOpjl27GkaheHkue+HCG6UA50R7nYaV7YIeIiwtjvpGs0+MnEdjxFALe50YIF2Eqy2XvEdaoA+8RPNYWpd50V2e6FsRZFXjwq63jReFMV21FkaTRGpdOCXYRSRE/AhbXjqxeGKcRVFkcjEHUGhnYTg7xFGLwPTNoJeHt6RssNjVhaZ6Rkmkd5d6t8W0wwXyr6v0RbhNkzV7OKRyztkAZFk0RwSKLmNCuvSEnDgYoBsSRN0oNrRGG5OKJkQsZEntOrAQc2ai26Rpwwajxa1SRTakZhJEM8RcIkQiDZ+64uEkQ0i4YiRMmkKBjbUSRIAkUyl4JEAVukeHDb47ghRqKXg5wyRjMkZwA7h5OACLmA4A1VwDlkTaoAUkAYbItPRHpM+f7PoKRHM0huU1pJJE2qAr2tuGtaYR284kQQAByKRpXEd5w7wB2QKkQ9RHKWRFy4IyxFciRfakWqpEs3GgpjtrazCUWFrTpMAB3gUr19A7g694O9SYXMA4i0RCEkVnRFt0R3rngPgJ/ag5/bNtd5kCRSENqjg4EHwdNur4DbSi23zER1JFakRebQHwABobgoIkW/RFFcOhRoUD8gaMR/NIVikrTMRr/vr6JFKaRW2nHdd5gJA1qgONZEai+sQbvjja9WRvwwUSI4wNwl9Ea1w6AAA3oAmMRbdEZzxau7qUXPkHQpLWRnRoQ3RFG6RQxNvV25Wi+TnHjaL4C2w67ERWJFzqubpkaEACcsRXp3ov2LmBuJzEa0xHTiRwlCENq7OXhk2gODxFcw2TqkfBpFn8Rf8NqWpEDqR2O3uwz7rGhInEYTd6OSAEdmHZxGcbiKKvqWREb0+4gzpDZFzduL4gLsjZP12f3EelICXGhJXls+EF8k2zEnsXxEdauebnjQpEEC2wskbpJGscRZkkZgJE4yRsPEaLd76SRVK4AbpEKBO3yAN9qHLG6ADhoRYFDghutIeVEH0m2/0QPqJFyKREgkeOJHCMR0sTlGDaBDOUK4HeLYJDOkWYKyY4IJh/B/oQDb2AAhqmH7vi4mhmwkTVXAE8R+qkfSgCpzCAS3oBZH/iR0sTmlpwtXhptIe+RHUmhdEtsqZE9M2EBNufV4Z1OGNEfrZFVs2QDXiJxGqCRTcmExxFZaRJtkcoJFvEWlPEZWCo0SRL0kZwA7FaRXtET4QEdRBPsFklpGDbWHKAIlkFqQWntkUP1be2RvYbiDdbKmRURAE4QD9qRcokRYJGB82uNEXbZHs0RDtkXIpH+WBztkeEJFE8RpEIaT27amhQP3pIRaG2RJgQdsxGGmhAfFqNpHmmRNVcJwA5d1AWike+jYLmKRhXjDREfsRP6jl6G42mhhGfnaaE3dhQkFvPxEk0umENpwxH1dW9dkRLpGvCRTIzi3ZH1SRvpkS4Rb86OHEkY84zAKRmbEQfxGh2RaqkVvd6nyRxNka4NQCsQn0CCuZFByR8JtshxFkeOtvEYFYGF2R6nEU4ZHyyIuqAEIxHxGR3xNhIJEocR8tEWqHLw52xU6l8r4OjBY4fj7BYt2RbhNsJU4gGgxTQTuxaK8ApcxJJxH4gAswQblZFD2RFCkbYRYd2RuednupEr8RZk0upxFd2RjDdj3ZEv8RG1FiFxFomRIdkZbZGu0RI9keyZFeGRE9kRK46i8R09kfgbKz2RrnAJjAAL2Rk2kevxGy2CK9keSwBr2RT8kRvZEn2R8rAKhxE72RStkXvZHTmhLJIC4nQB0hmKYYuaHOzmzR4L92Gt8W/3YY2I42du+3jtTL5numRo1gAADHb4bgnObeN2xDkV+G4/huXvbhrRA4ZQFzNpcg4/URF6IAITA0ZQ2MjqsNZOWAIGnHQ5GoCep9bh5d6wQODXxLbuEIQOgXjiT2FZjhwjbkkW6jjWlIrp3eCZAAR2nDAN4puOQFofT2FKaOcjkZ8NYKORc+IEo5EqORIgjr016myOoCjuUDZaOR2jroo5HkAAyjkZy44puOf8bmtYELCuykbpaa4wjWkfvsxG5FM+wkbqAo71mO8zXtj+52ORuRjj5W5Q2Ip2bo50626OVFoVAm4z7WoCjtjjY2tBMkDo+yoEZhqtEabI569h1yNlr2HSLmXwrjKRbL1umXjhpA6G9hD/jsb2HD7glyDjEI5P5AL4gCEAAL9eCQjpupzSfEd7bnb1YAte/J/h5G4NCOIGnMU5H+phVkDqGK7mRuFTkdEuZe9hnu4ET9K1ORfoVhC15PeAtZGrtI4cTOT+QD1/x0ORp6NuH1ZNCOSLXi0I7+RuwcIapXYRDhBHXrYW4cI2YUbgUeAi+BSfYWz0ExRuafYWKohOEQlyDl5aFWxAK8QZX1ajxB72tkkkFd0RMTrgnY7l9hZhUJX2EcteY9EVy16IAAH2nL+2619hpXnrYAA5w2k93mpoAHxB/IAOdTaRHe98biwyHcORrq4dTLbHduOPVvK16aQu5MTvdIYp4AgIjufREaUWV9EZNoDDRuPj4ZdtbGk040bmv2ErmuRrXm5nYmtelzPma16oJS8qAA4N7TDu3agDU5EF2BiYruvE7PM+QXOkjOBwQiyUjvumHIuRag3uDMpbvW6YrgNZG39hP/YddG4P9ht0bmx06xteEovCGOHv9hkogK9G6zTBMLkZFY5PNe30blm16gy+gDofs5G0MRJbXsEyFyiOraNi3JgexB+ofoQ26wNueSbrDG5OhO1DQB30612uwPbkkyHefksg1pRW4WBOA8jpD55Vch383tK5GRhOKo7pXLac1OwG1u9rYOQu7onlF15hThmjESBpwAAAr8DaE0921Mbn6I44vhT4rmrG7Nmogjkfx27zteUtbs0yEUZhcNoVauErteP+aAmI48xugErnzA4+MRPN1sLG7gOBqBri85HT8AUzIdLG5KxuRIAOa5HqDhCsbkI+h+uRs1FkI5FiZhWt3k2I4axuWTEVrG5TxuYiRGK17Qi+HVtv7ta8ORqw1l8m582hmKDqJEhMtu5DjiMiHdju3Y4cetY7iO9sbj61Y0Q2mdEVpm4zvWAQ4aeJ4uDhNw1ktSDEdelmYWkOEL9e6kriM5HKoAr41tCACPJBaQ4UlsASueYLblH56tuRVErvHG53RuQKIdHA64jh3Qbl1da4McMbXk7aFBgeJI1ueOGWde5zEfdf7juRWZ4bhI7txusWYc0OGoSOBcbkZ15Vxu7zEZX55LuRmnXnhI4RSuDcwfnPACBGFcblp17gsRncbrhO7ntwe7kZO5Ecsh2iXrcI7ureURAAG5FOdekybkyOF0ohDDPj2WhP2OIrkd7+BrxuZrNEaNYLxuFdoe9LaR/gOOvkF1529hb7kXyFACSOTdoUZ447xuvWYd2X6BD2hw4fm9bbB6nPgt3oxcK+jrbvtpFZdeAivnGNZzSuKkjjAm7yE2FzkVVG7wk2P8wVtbZ6SOaHkTeQAYeRH8bsAsGYxOyd1vZI7WORp0Nj/G6keRSAjiAm5/gAR2nPAF6oLB47PhN1aeSO0pbpn+DMO2NHkXR5GTdeQUjm3Y758OqX4TAg5MkAVkYWBbbIyucRVoXbYf2hrCwQV+HSohmI4ahX6UJuWS4TQm6plwUTDjSQ6udukc8Fg46jshT2YTD17TSOA0npNI7cJu5CLirq5s3IUYAEtI6jfhmMTvvW6VJg294B9mHLchtj1ot+GV5uiBbkT15wzACE1pqiEvrmbDkbw5FL1uDJ4fK26po4fPXreyFOAA97IQUNSARuUAgGm25OKOKp3l7N7dK+0B5mg+AWg6/grg0K5Ntej7EVL15ZdAKYwF3HaY1IZJgHttbHw2JSXv+xFIDhWRjtF5HDu+CrkcI25JuRIwNmZNaxiAo5rq4m7/9BHibt4m4tZAsbPr4m50yOsQAPLjYpXWriLps4HmohFjoT5YDJeRR0AAh6FpeRSmjhl5EALWWXkd716Wohmj/sSm5TpunroXvtaZiAY3bmE9xPr4a1uMH17ich0HjgK5Guoh3bbqwGwqchMTofH17i7hcgjpmOGGORhE1kRw5wskXj/gzuFfGOaejiz24RWOMqgGK5BCZB03kQT4juyO6fmF/K6irO5fXgMm7XJ2hT1oG7a12uJqbrWRoL9eFSllpYL8LhaaITTA72eRrO1n+uD+RBsNfk5xF/F250SCt5E+VuFhADcz6+cRqyDjh5EvxuS44YhH4oeRl3EP95H2ZBC01sKAB9DW4uYUwjbkKu2DFvbqYnIA7LbslxEp2ONcjj4ADl8a9cjgIjYh8A/XNq8m5qsexTgQWuGUZuJzoSONYz7W/yboNW5rohOc3nsjDMzWVbbp7G7QpuyirivI4Ipuf44eRI5dcRDuYcBOGjcRKKTqeDZm8whONhYq5YDeKVBDLdZsu26Sbngq6kpunnkdeiFoThbNQW/I5MDe2E4T6sG4ThKE4fhOGuuB3V4UROEKMWV5bvem4RZuX0jjCNZwVeFOrsgABHacO/nhV6606emY3rhiH6ARKs1t05G+tuAc8PnjbP7WfHkcw7ag7euV4YbNYXeR9O3oJOH+uBGD1rr5Exgu+vkdswBiAwM+1gY7aaDe53kXRDZaxQBGjs0tZQTWG/qrC5GQuR0PIWpOGjnmrQADb5HgXe/1AAb5EkDh481q/G6c9uDsjnDm6epubeYR146C7h5rkQ+W7+VuXzjvL4pd6+GQEQTyEqKO3TkTvzbB+R9vkTZOEGO2nLoaIN4u8RFc1oH5FOGEIfkVx25eORKKAMY5E+nWqmiLo5FVGI23PnhtZF+RdvkTX446zoyTXqm24LXWFablOF5RoOlQ3sdm7lDedabtPoQv847VjoxAAegY0PYS5G77Nu6s1nZEDdpufr1rCeF4nQdZbgOm7M+Rgw3nDECJpujrAN05EXzW3HIf4dZqaAX3kbPxGO8h6wSM8o4GO2Pc1pSLbSoQG6bq2Uyxcu26bqS26feRH/jkld4eaOqSggudZQLWoUXvPpYnc+IBYYQ+ACTWaW3l+ICqHWKC1nQ5HavWKvkVNeDbDeo1bqxtZdHh4yjvV17alIGEAF38IzKOMI3ge5HK+RqvkZjUjxYgGvkV6q4gjeltAKr5EydEfEQYgyGktuu/kSAFEV4uuA4GQH5J6hLLtsZNbfNwUrkYhm7F8h87gfX5GlzwJfkbF5HsORNiDlRK5fJuqYEeJF4B+RokbkH5Fo429vkTCsCvxuI0XsQ27t8hk0lisBaxCRPDkTxlDQqOEhYRjOHhLWkS1vw5F/dOyKjusbYD+RdARlEQAT8hKhYSTOF1COeKjjxK6OaO0QAOgADdORFhAA0K4seOhLoGonABrW5bAh/5ErreuONu1d7h9W3Tkf4o7KjerS1gpm4dLW5rkQ+BF8qOBAUVn5GvCeYy1kgtaadw55ThKo425uoBrjxK7v8huX/lQFE9+RDfkUZnaqqOlgUQaN5RV2aUBK7wiGzh7KjlFY73em5e3lKgCyBRGybgjjat+RzgAG8taAaOc8bsFm66pWV5bvL5FbVuoG3jO9ZgBRavkZAFFg5OhAoe5H7gqODPZmHOHJje5mDu0TRuiMwnToOI7xehi6bo92jPFGvc1tJY7x+RxY3hmPDpzhaajgGtaLpu3OXvH5EgJuOajgVW6ujWhU3nVm68ChjhQT7V4D+RuyAC8AByBR4PVr2N4ReOIfkXljY9qAmLDpIeC6uR0W+N05Gm0AowUQn16YAA7c4QlBE/5WtUbiZwAGZugQUQ7OCYaAM6bu8JHJFBJgUbQFF+Nw62bvHm48Sui1buF7ZOrWJIdmn64xauj3DolFa7KRa3kQ7I6e+RQtoWGt47ThBkjsemrxmOd2bnxPCbJuZ2briJFtFBawUSX5GbBRShUKoeB4S+SD5kq15nHW8fkZN4GEqOtFjpM44f8BLevvyJEJChUMIee3Cg5uz0EWR37I5uLwUfb5GVqOw61rO4jo5ui54dN1Y3WO/coURW6uJoyp1gztaE5uoB4aAtaMU276bsj6GdY2MIUceeFh+RVjNnhm55iRdfkdQFHF+R9vkbvd5TJBUXbhEa57uObjbon5FYVu4pQVaqHHOO5yiJKICw6orE3o4d4CuR8mjjoY6VVO6BSNiuHqaOS/kY+24s1uSubnY0BC+hQMEU8+CEhRMJYeLuGKFBtIUSRtYseOflbie26uJoDXkf8FHEnWXvkZcFGZmOzIUSXY45XWbIUWbIB46o5csC6NYR+RIAUbyFEB5O/IUX265legCwUcnIg+Vuj6bqKFFWbe3woZEcG2+hfwocJK5OaOqdrh/5F5qOLDDhbW4Ddu+EgAlN5tvWwjHPH5GpTewibsYIAjFAerkZi7Z5TeoQAM1N7Ypux8NogzYRWO+4kawFHRpuMguBEM67zW+viI/46LPmfWjjqtYT42oOTvHHYdEAHl1mq5Hp+uR+liqHaFvW02jv7q6vB2731ocdYljeBS1lpUTmuRCQURfNYPtuS8vi6NZfc2jHXjLOEuY4FpXtgtb42OyPkV27bhAAURvpmY53fWZYUThIAeFEMG1vH5ELBR3fXtfNY2nh2VAKUFGLGRwNjm524ceOrrjsqgCgSe//QaiIHC9+gvfqAZbDu+Yw3naKGFGu0/TiBuCz5OP64VIFErhRLmODxJHW5ObooYr368SR4L5lDBGoGW5CXmyIGMlh2uIcyWGL12+BADe5G/4Of43uN5H5ih8sAMc5H/aOkBrscdZwactfoXz1bClhEOjsgeE+9+0AkDwuHw6OSKkDd5Ft5OpebjP+ZNuOoi4YgFGmCADjkUoW7BZONXkfjo7jMAP51pEXCFXhDxFkim7wpuCIQJRjh+roRK3o0W5ixSvCrszo4ZeRBiBp3Qq6Lh1s3oRNb/9BvOjnBFFu6O9BDjfI6f9h7hluXW5X5uamjpg7y1tuCmnqf6G9bW3TkVsAAwRRPp1riYC4SABkAOf6E+WurC8OxFHhLhtO9gbBHkPgwwUR/m4eXeYhHqMj6Z9WIkUTeHZjlBDW1rqo7E226fgWEuH14h3sEeO27AFuokSAq5EBf8qlTsUZ6wFu2KblDxBSZusibkgW7XyA5TkbRIBHGuOpbqfjaFGuUPEIoW4q6O++btKgBhuRuqPnNVaDGu/Mjh8m4pq05QNuQW7oORVejpbW6rzUJEUeGtZ2duM3XtJ5E5wRM8DtRtYeRREdmOwW6AZuO4jiAY4YGu4u5jglDOdwQsiuAFF87WdxNpZqjEBRDnkUgI7Zrh383hoQDgtBnVnlBuDjtwDHrpN26F+OKKADd27KFuAjkbZFG0VBWgYS23YORRWSWAGfBHQ24YECoP6CXO0Jbq0dZjORCy4eMQ53Dece1i4W7RpeJDeEAY6Slu8WIBYFHEw2d4Ub7JGsLeUQrgEW5cLebkURVFG/KuWRjpsQ6rbeEpbgDV7kpu8CEaoFGq+RNYUQcw4EGOLo1i+FGYtuMG1hbW4lyRYZLh/5FzRR+BjtfNat7WUkUbxtb6GOOh1kj8Cg9BsK4QftaQVWrC1l2nYjFuURbhiuEOGAkxbv2xZ4rhhfoRtFHxFuGhjmYY7FAA+DAiSHZ7RRIgthNKEGKAZ0UcYY5vshT0Ue4t7EkAjK4VW5G3RREVwUb9YPRR6hjnYY78bWS0Udx44NpuO4jgdFEjEAR0UTeE5HShDf4FkY7+WuUq4eVFE2a0dZbucW7ONWcRjq7KABWu1MdhNFFhOOQ0UZquFNXB2q4f/SGZbeOR7p5FG/RRIBbtMAAcHW6QnkeVAlHuMpNj8W5UDW/B1gCW4ku2QJbqPSH6IR0y3mSU7kRRm4UUNFFQmOHRjt9FEcGOcTjuRFHORRYF4JEtY2M2Dabl2nZnLeP5rjoW6JRRrO1oojbqrhVwQb/4HV9W5Jrgi45H3WkgUcZbjfmuqsUfSW6UxRKY1gWuFArerpNqS27XBRxrNsYhGmeRPKBPwE5AiRSeAJbG7mKR+fgY54bUl2BMUXLFGdFun+jk4SGLDemkUV6l6LOO/rkUv5H61ucu3kkY7d5uHkUX/I5BKR/QXpLFGilu858DmU6gKOX3qPMW5xmO/2bt9I5v6ODPZpgAC2RRW64d4hHW9Wlr1seEjxhRIzbrVm6mqOWlRPoY7NMu8fkWUpEh1BcGXn7IEpuOiq3gFo5DeALfkdewBT2OzYjvGW5ZaOh81kYvDJluyZNCWY6rrWPSkZ5a4dkOfiEfuuHzKRh64Q+U6OBRmfkesFHdzetejplK7zJIw+bneFEVVhNqnpzU41hRUIoRcFHBiuQ2rteuEnQBGa+Fp7A4hR+qACOABhrWPTYPFFFsAAA5blHFHgacLVcBcoifLW4G4fOP69K2+V1iyt4UNm+vodM25Kg2zZjjRW41mOzyjg3FH74AUKkdhuHdO2O5bsSFGXxRuBNrr5ENmONGUGLk7eu2x5bjhF7/COSvkUSpHSqAcYUe1o6hOOSYtveW6UiuXG4aewDv1Bx2bmfU7euRnKkTY9ZRnW7FHr625rmOlFbgrW6pb4aZ1rJuG6hhaWXvqGE7TWBPiPd2htRuV2ZrBW5oduCwUXa44yaO1BhLMnZSRRcajs0tbafWmFblq5gACAbgUVSYQ2+RMCoXNrY4uOaIUYid6Uo8VF1o5uHrG0qW+EBY5kEwIFjmxjY0x4EFjgwlExeuSFbkeQBSRRz0NmC26IneIvVvoY4hWOPi3jaW64WO703gS9bJhhCXFpJoBfeRxtbmonDDqRpAQTNFHxhR151t9Y4MuRznjgSY78BOz51lETZqxRKlbkUGGwBR5YYY4FGVOOBlbuZnauXW3TkZJY6D+RbQ3sP5FhmObkUd+ADZpuVlbucuGbR2H/kbv5GRrhyn1vFiA6WOBFbps25QbgRNvgglGKhRE61hfNahOOCf4IVOG8gQH/kS0sCWZO9ZIZ2xZOWOM+1q/5F0iOXaEZwzazVEcVDv9QC2RRpGkRJdZetuT1ANoFEhWO3lqLUFE7g263ke6FF4aMOo1kj1ZOEQFAjqxpEVVu2aYXpm7O+R3h4Qx66aJROPVuCG5hJRqvkY1W4UluRVjveGEhgWVw3s/5HZxRrtrt05ExRRPPjs+jaRFwcIUS3W4fTW9VjutY49JRQSUZbOGnDey5YRUE57qYSyDr6FHNLWNW3uX8CCYIq1bnuFELBRc+4JtW7bVujFji3K7bduD7ABu4YlJeI1bl0FE2XWLHkROXjjKhmAACGFG+aRRkTh2UZpOO4a1nElFZpu9QUXtY45JR3TkUYvBr1hgjHhpwAJaR0u4R9t5h1hPVjrSo4MWhLO4Wkzaw2OwNbix45UJR/Mjo1g7chRroUbNFHriAQC1pZm4HBRw/jjfWFYeeEGAMYaGzjhMMbkQgG/bed7ka75H4OhOkYazuGw2OKbjib5F4GEygUbGC4IDws+Xgh47ceRw2kTK0Hi7hgKUc1db8BOFfkRbuHy+KVu4WJSHN+O+N1itpEEhRj2bpSFHQx2Itjq45Fi1u+tdl4mFWuR9Otozt6RRhsYcvgd57hR7O3kzdYYThA8/tQ0Dx+RWtjhNDayludrFq3oQ0EOYqUd7FFsm2ffXv4o4pXW/rbkB0jIKuKhTr0762Z2qhNn1YDa7ef3jrDpGjS2Dtjjrt4CNhOe4TCEB3hRg7wTLFHC0kJ3wv7W4clORAvgHQ7W7ecjYZXuHf1OI+bhO8z0i8aujvkNYYjW/6gbcm7MeR5W1vhFFJbADwAFnY7j6RhT9l8xwBPgVS1uG44gU2LIUfqza0eBF/ZCVaFaNhmUwuJ0GnmOTc1H3uGN2Ol0QXQL551ufsUX4OC0ORtwjhCQD+ROZdbvxFHgfB1savL4pF3WYpbg3W5L7hIJnJ1FHT2O+lFqxFHt1uW9jvbpGEPg3qUV9NZr2O1s1hvuFEBuC9jn8646PWM/rhPW5Dxu5x4Yov47Ju73kTn+BKpRXnkcvW4GeOh9jvfY50MIuj1oVFHQc2mHQXsgHaeRn9jkIm5rSOY6UU5SFuNOakUWfW6rrWjCjh5qBPxwHbkS5SFO3u0EbgDFGgOOUJjqS5G5Hq1LkRdy5YbhPyAcy8EdeRopbuKRad6RZsUQm25peO/ekdg242IOw+kYQ9ZEi2tV3vJ0EcNuODbqfDabOODngNQeECOOnRXsQd4+OOLkUbpG6MHhlDjtznYqoA4EUTjZ4iwopQUdbFHXfBvB4efpFEfOjTLmS26FGuLDbq+lF/pRRB3kBlGUJRxDbkMV5gZRS/kQFo6tpRx6OJolFysAhj1gLiDCHhBEgOJU6gbeA1bvwFFsduly/tJU7kvgi5jlwvCwGROTjkU26jJRYh3oTFFCNuaJIFGYxIFu9KbvzI4JOOtkUV9oEvpRIjjn+lFcLwdBkXRlGETWPabs8wCTCi/G1vUlHFjeIT1mpvhMmO/Cjpa6i3CABTjkYvAhHhSdtvzI4s1uRjDpolE+8I4gTmyq5dOOJ61kkeGqGReU1vlQBFeRPh3oM9aRpRkSvnu66TOON3QZ2xazPWqGUX644qlumBZqU27lNuUWoX7GEd8RGTjk0xGnowJXkYK2GPTe83kemJHfrWLmOKc44gbWBVdlmFF0eOQEUW35FythzhrgM25FGMvvTiM27/PWeBbgjtYHuRyTnFPHbTNuTFbl+Y5622PlbmBy5JOQIkUUC44MtuRQUfKd7VhR8LXiBta1WO//QStW4fpRhzbsLFHVXgJx4dTd7thRVHXgWABSRRl83li47SZRdx4aTAAZ+RDHjp+4ZEuOmL1pgAB/pR7x4Zn1aDuOVLjj0lEuMQ3dQPY24khRzLbja46D9BwJ4XPNagnhCZxP8IDHLW+RkeC+aFThGr1vHHaBaCFeLpP5H9ZRWUUarq61JRNYUUH47NeRC54Z0nZWvWIkUfieFKuO5zDpm5HrvWZQUeD9b83WN3Vo1RBwZRRTbpf5E0tuDZNm/r69ZuvZ1gy26h22H+bhE45jBRvrXrD5Fk8yKxkQz1a8turiaC+4C87ebuboQQBeuOdXkfdHaituaqbqFAASnhqcYbOEFOFBobjpW9aAp230jg9lGyRRFBjtla7dOR0cUdk9YiCOz2nsNlFgiA2rbjko7gLWH/kRYZFQnew71uxlGw5RICbiTE7njheXkXJI57purpNkhg7TXgKSUSud7OnhjbjqTlHWHhpJkRN5Z6ZRFIjjgCEDBRPrbjGC46NuwjbmaJ6mtMWOUWClG0iAxKKoMF4YtO3p3h2gARtuMEkUJJGsAh4VPsqw5g+RV6Ue4tYSmRnnkRouBahhIsUQClFZtuMHYRWeEWdOiY4XYFGqmRCHYWaI4DeRtZ4cKQ6S2OAa4a7wjw5RclXuT5H/9egwvhE16QzeoerlkLbmseiT4JpV7/uOmugFIFHrjg7PTp1SEmmR8DKErlGXbemQAOMFHr2BqSjkaFF+mRlD5vnNamA2QmUXV6AYdIQ53t6Y5Z7WQqji126AxR+BAHljZxhR2Xqi/G5ALW5Rbvh5G6RuPuUf7lErne9hEe226o9up7ALmZE5JuKbjrWZF5eO/bbthPBGOR8jkaY5E6OR5jkUq9b9GBDhEYMYGoRBueUW767KCOGjkZSlHaORXd4BY5EnjWg54Ze1aNMuOYUcemphAAcgUWLxjN+RigUfYlFJ6eY/kdTkTdOR0MUYn5HMhuCHthe27rFutwgHQ5Ed/O9M1uOFH3tu3rkdYlFSbebSriP5F95RjyUZhd4ovuMnYXSAAAAAQ4sW7ydh+F3veeHRuOFgwQF9bw9OeHXkxEHXk2iuUUUI5wduIF4A6E4L9eSX1sOgA0mOgF4aAo5QJhoFkU/qEmdhdwgLZFGP/ODkUcR26VfWWNIchZH8+2DyUdoFG9BR2zAOex7srmgX1rhZFm3mjzkVwY5kBRpIUSpEEeRuWXjlm456vu+XjnYm5UDW9eUcXlGN5RSr1twmHMWRGpgRV9YB5RE+bigVHts81fkddyiqOR2E8JxZHiJh3FkTSRG/RuoubpON4adu5kQaCCGwpRAwfNIbYjeOCldmJFEaJht4UbZFEldhZnbmUACBXemxjvZI4puOBjtj5FHYZuFpbij9a4Bu2i8PClFxXebnbjCETL02c71gJG4SXhUVkYkmEBduLrnjfeTBdu7cbt655P5Adhbi4G6n4o0XbrM7ZtOqJsUSFEEtUWYuROrV6nXeRXDtrV7Z2OZ6fixyqqNOPOFrl253XemaSDfo7M8WT13mLgCtZOlyDtaLZPXexnHmj44nYOZnHrAM4kpeiUQR9XZ1duf/viZeFFghOKDt9I7/JR3Hjp7lFwbW0k3nktb9du1cUZMXBq0hp5gaolFq0QdyTmX5Fg2R//iN/EhQbgmxrsqoDhAA6xoQFeGrl4TeUaL46PeR7IwWFeGfmB5ZEbL46RXhc3btkVHlXhafrpcaGHduA4ZrgxwnduNCIEcG6jkRQXkS8OGkRR7EUdTd6S2o0QABqo7IRRJV4bcOGSfWFV4V926IDh1V4bQf5A9u/drrQ9T++Oq1jhvFEWWQE8QaH45RQELYjsiaFe9WjV4dH47fUgKa1ixMovxwVnCJqMHSJqJ7ANW9aAFRVEboyW6mVur1jt8mFaB+u3YRmZHNRBY3kbn44fBRlPbnjY4nFRXEUUA14i2OQRUR/m6DLW3OjgilGUFRoKUWo26C7hDdnvtm6bqOwpoZOA5wBW7yUamjifJRQO1vV1bfFRDy1oCpBfJRVxUX8lGu5RmbbncVFeRRpwUaElEMZRB1bi8VG2iucNbsnZET12Glgff5aMM+nkYa0dagKO2dkYjt6Fjh7vkflTaoZReBUbaFF93eI14bpYG12RQQ4c8o585RI3kev455uRUw1kaFFMjOW/kfAI5cOODxUet5H3puLRzjHfBH+Rq/kRQIAKJRZOUSSKFwjOqUIThgCqJRY8UdiVGPpuyAUXFlGnZusD3iZlGLe2EgAIIlE31uK53vd2GH2Rw93sSFEMlRO1gVnd6bpuQPkRL25r+RlyDjGG5UlRfkdkFlFDhuLKgKE44slRKpUQZ7Ypzh3gAJyVFSFRX/juY168lR/JUQoq6ClRP/kWq5EJFhSJAM1uGwBOI/EdBGG0AAUpUeV5E4ORerAPg5EruehDkTf1Zis+blgUra48FRIgjpQ5G1FRb/Hkw5E2es34bt+uC/huo+5vd5FGeRnDkYj2E1pR7AUXwtbWJu/DkawVFEdBD5oSI5EdteL0IawI4SORRPYRII5uPec3kbgVFF5R+BUaXlGWOR2EbrT2ETZ+qEbpmm515RRZUVX5EllRhBUfo5H4S+ZEbj2lFqeORZUW6OTZFR1Ebs7FEFM+njkcplEilRbqbn45HlPeLjkfN5FJquDX1lyIA65RYsQd2VFspRPjkX2VH5BOUtEZ/I49pRITkZT+7hORhPYbQmHSRuM+1tE5Egluvd4YyxZhlR65UZLy75kWKTkesbRpOROuUZk5Gc6AGKALk5Eqee+TkeTmSFORvTkWkI6+COZTkU05FTCWmIjr4N6e9hQLXg05EN1u6cQbYDatORuUSAnRFL6AettrfW4BS+XMeAM5GV52UfYSM5EUVu9UUUX+7jy+UzkR3EHBQAYGnLM5Hk4UcUbos5Fy2BDPVpXW5sPhJM1lF5Fr0RxfYWrz5l9hs8QRX2Hm2BcMtukJ7V9hUMUW1L7oeRd8blc5HYUBvMlvmpi3ORo93mpoBYy+XtgdCDYQFRvDkS1G7VFRrzkQfRFj9hbjTqK5DL6AdhbmOmE1Wh1fVgC5FL9hTpNCC5F35+McnrbRDhPh7/Hla15tWhv/VhPFFwuRZkbk+VHKy2JmoMjEC2RRUq5plfDVGuGLkcXYHRDgTDjkWlEgy+J/cHSI7f9hDLkXm96P9hCcbi9A6ciOlLkSQiEFGcsxdkm16EW2W4lnS5EA7WLcrt4yHiiO/0bntaGf2MHA1v+mH4desHgatC5sMRt6USdm4tJu4GYcK5H/uRG3VuK5FOKQwRjupW6ZlRKLPh0L4iqI90TngVHIBRBTIXSAAtlRJjkUhFHHpqDA4cTRakxuqPniJFFZF+hrkRwOHyX+YHFsQ5H3JRFrkfUFH2MRYMdna5Esvhju9CjraOuRgIjnAd7bteDDbv127lPgHrkVTtZMVR3rkUoOH17ewbkU/Y53hRyErkG5EliOFQ1kPFENJBprkQmo7A9ubSQcvG4X/gtZGmzaH0VRrO1im5F4ZuabkUlW4ZuREGUdG+H3y2i6blqVHAqOLTEbhYBILWpbkYciEpGeW3SBfFHB5R4Q4biOF1uR0Q4fH1bg7hwTbpwd4zMRO1URi04gJuDR1kx17m2hUI1g25HduRe6UYLQFduRdwbgelEjuREEAGNuZFDh6Eju3G4al+wKQRKLzLuR4EjvO5F+2hucDnUOEfVRwqnl9VFruRanXhu5FnuRbEnie5GSauc7kdVG7MshHF1utEabuRfcbt355edOl7kR2lHXuRtkUQuB6d2uJg4dJmFudeT7jrXo5/uRq8bqPlFFORErIRr1bLxuONUQjG6j5RJ1UXSxEgeROw4WB5HvFEHYfvTnbMtuamUdyxFEtuiRUQR95jZhcY1vUICyfSeHkec5G6Ru5eoEZI6aSOGTgeNmEVdedUUSVE43BRXmYMP8YFjWvNUbj95f+e38bnZI6VJgnZUX8OEnrW+3jiAm7wteZZxgJG4msRcglpT1beywzHkR/ABnsASiXu3G6xfhxCDq0dYoJud4UTx5FEORRvkYbVG2RR2X4bjK6OUAPUUfl+EPq27CwZ04EUJuLUjiSOEyeRTPkfQpEKeRIzkVWxG0V+qnkT/Y7qeRM6Ud7VEqLBXtUTp5H24um4fhp5FrSOl9jiZ5Gcjhb5Udj16QRRlnkYKOGBIO+XTrZ5HmJWXDoQZX7+Qeso4QByFlpBmEXgsFF0QAU6dvhFHfSOFxAIflAyxQPHZIl5HaiOVujg/nb1eRiQ3o15HsBRG2UcTI7NxohRrmFADdORuXkeGtb5eR4SDoV5HVNuJXkWQsDSlRBHEU6OHVeR/LbqXVGpeR5dUYxG6V1RLXkfvZFWTWdHEaelEqoAEVUTqVHamuPXkcSQB9eRo5UfFG5HSeCHjqAo6upuyhjmE6Hq5R7cNnH14DeOjSbnqeCzeRVZUUOVFX6MPqIfX45GLwy9UYrN6beRzSLrdX71+Ocgjrt5G1jhIqzmK/6/yugybid5FB22cu4Q2+AZRuV3kXyI48S+LnIXd5EixRiybk95FQuBr3kfh+CNuRNQEF95Eiq+AtUacm7GOsxCNoD5Hg+RRcjkcm4/6EBa4RD5GNK20zoTJK7c6gdcborI5IJu6h1oj5EQ2+t1oYLX5o+RmDUaN/7LuOlyNrTm6khRuPkb8m74+Rz/XoT5GLA+eazk+OE0ORWlBF5VERc+K8jouNCm5RX44fCm4ktIiKbhoq44pu9IXvT5EhsB6M1rlExcLw/Z3lBOHbfkHPkXBOE1h23PkeTNZ8+R/uYexH6vyOwqUaKF5VyO9KbjhOGvQoeE4S64HUuhhE4XQBFoZBsvkaE47y+R60jjCNYT1Rv/kYtW6zJRepiCIFGW+RA8nlKFEO+Ry8UcRFH54yqKUcY76yuhFawVQo5GNRESUWOxgP1RWxNu2UbGDA12URInDB5RZ2buqFGTxRvPEeENY2NRWpUVLiBzZuAk1o9zbR+Ri6iKrxFXrWfqbsBoilBRASUYfNZ+GAvbwMbxGgo2jWUc4FHuoOy8UePVFFlRwpUdtN7E8RcGlipH6ShRFIUfE1GwXhsjkfiVGDjk2RUbX5EYDWRjUT3NZErW8xbr/Yht+RvPIVYh5d+RX7tnr5EHShjrTjMlEO+Rq+gEP5FL5RdiUfLk4YFu5U4YtlHwbWETUVaDBM1RqwSMOm7nsALvgUv5FxAAK/kRsm6oAA6/keCBHpuBmZjqtVHwCOO/kZPVH7+Rn/kavUiALW7JUSaVFn+Rh3jtYADY3A03VhMlHX8R+qro/5HLiAxSEFem7xxRepUSMo6H+RW6bi6NaBFuY64XaVHdeO85bqe57u+RejUfWAD0pOc0gIVOH8jWuirmc1GDRRyAUagFGHBuJIdr4IAwZuErQiq5EIZujl4fQWHECRlmFo4FF6+RhAUfb5GOxRDAUZjUgjVRbHbhQFFMCRRjUfQFEujWjAUXTm68CRQm5jHlHepRnAUejOE3XmPAURoAB8BRrGboIFG3NRUAUfIJGqFhEgUeN5HSBRsKAF0FGPZE5TUTqtblLWVQUc4IBSZumgUemlGKJRLKjnoFEdpuE0YIYFF2CRSKnmyJHwtR5gUbo9Y6Zu+tdsfVGGZupxUYBBFJruILUbb5FgtRGwUa4FGuNRWK4XJ5EeBR0UBDVI5OZu7oUTm0i3LWw0UUOFH4CAwQUVS1FtruXC8Nhq7hBRTs4ZiN5TWOcvkdz5Eqb4ZGUXA9Y6NRBLUckFGhehzZrjd76yFBFmDjkFEHZRww1vF6FmlAXcXlJY59oA44UZDQ5WsAFQUWeaFVBRzVbma5HdORdQUfklFRWOPYUXQlHrCRsWNmsVFm1Rp7AM8N76auiWNl8DbbMAeWNolLCUJRniREMFEhhRDWUX5W4hFRYRQX5H4RFBMwUaLVFuauqNbvctajBRBq1qjoDLBRvUfqatZGNRbwURrFGw6oUB3p3db7BRG8UdClF7Fh4KAJ5VH/w25wUW1G7uaOVwUcRVG3BRJ/gfcFHXqOT2bgfOF3qOtxYXiJFvZuJbUQ+FFltRFevsqeG/BRlD5gJm4g5u+hZECFGvzhIIUfh36HjwUfkTOm5jR+L0Edb5FZNR4rUYb1bo+Rhqboy1EgJugC4Q9W50tROObjOFHavWS0dhfW5rVRiDjsTm4VtRewUfpY62iR8C4YylFOBRq7Ua/NYnrWEGUWSFFFNRK7UaYFGqrgnGjnXDbEbWT61r3lECaOFCUVqFFj8uOoUZ4SR6hRpmjo0W4CtR0k3qAo4mVOkqIFQ67JtR7E1o0W42hRkO4WKFFU8+EoUcEERGNR3mjlJ5Cs5udIUV+1EyB25h1knRZUNR47UdtuHuNRzbUdzYQdHelubvW1HGhRimjnyFGtLW5oUeS1HozeMHUY+W5wdRdoUeSWEDiRVJYQ1vY0lhquIcJJHQwRsQAZQR7alB8MERmKFGahnsUax4HUzecebo+FFG4hQkFs9KCEVRuMEVAa57VOTkkd+FF22O2zkX+FFO1RNMEeTzTIRRSOjqBFEBSRbHbn3RYWeRlkUYFOH9rhuqjjKoBUDeCEUe3lE3eRmW1lT5HoRR8+TqhPDEreJ7ANa67M6ObZQJ5nwGIGQCULWlFhtRQKUZ955lzeMHbo7N7eGWVEUQBFFWlhnHUamIFMEeeQAKxFH5RR5LXoHo4T9e90TnBV5uLhjpYdNJFv5uxCUUk1GxVRkVURbBEx+BkkUUm1GLe2MkUd9lGWXhfpYaVl5KRRO0kSpFHA7Wi6UU3N53tRFoUTAW4JbWqakfnS4dqR+kUeKo4YIARkUYdFFG0uKhTqOa4WRRXZ1lp1H3RO3AALZFFZ7un+USQW4nJuLVdn+lGKxRvrQUFFGOdRKqAD5FH1pRDBbmMZYORROsUQHyHjtINWUeFFF+bWUUUQIW66AAwQUTWFEQtRDkjilFE47AaUUVE45d7WjEAMtlHgbW8hbt65GadRdEUSG258dRE8EW+cGo4OqsUVe+LpRR6aOFjFF3DeFgTqHFFXFujUTtqW5WSODUUcjFErJIZ3UZd1ZjRRyqPm4W7Tm+K+4UW44jAAPUUQWAGzlhDkUUYvDnNRfMURYW7YxRNgYeNFEZjwwTkTuPD96OLqPtgY6PRREMUZAABQxRKRbrwt4tdu9dbiNUGdm+slboCd4LRRFm4cwY5SRRfRbiHFGXdWHBjmbIDBrWFXUXCQ5XRRgxbstqDWzW93UaiuFFAA5wrl4k7VmOV0UQDFGyzhQMUbLZZ3RR2+1o9FHU9RL0UZmAjAZu21jhuuFu6OWPUcj1afRRuGwMT1G4lmzbFtAW7YS+l3VjUW6/RRzPUXT1HKGOZGtm0W7zRR181pDFGLFu+RbsVbaq8OCPUTj1ExyGKzjiZFET2oKxXpCU4ZkudsUQYP5HFuxy1jv5HQXmGMUYc44ndRKMUctUEExRyRjukJ7ExROiEUnz6oD4LnmNqTZC9RKqAD6ZYmlu1MUcauF0xRQQILSfagpeTMUWVp5Wrho5rowU46FuIBbgJWHNGOUSbvFFFQluSRjh0Y7TNRBObu0nbxkuwsUYGuG0o2YsUeiW7h9RZXoJxHbSxRqsUUpo7WdRKciPhG6LGOFvUTpWF9RRqT1mqm7qxRpLUZRvjaxRXXUSXo7T1RD6bo+W6ttRBsUaszhsyhT7rg044WxRJanlbFHENuPMoS33i29RyR7qn1GsvWf3kdY5EiE+B0jiT1H29RBg/uH1F27WHsUb8ACypRMwAOMODCBIAUcPrUCGhRHJTuSt6BxRwwrsetZlegI+jsEFFJ9RNDQQY257uRTnkXxo5I5RaHbsUGxI9WXguA+47mj+ztQZ8GEUmOWx1gyABipRKrRiQDZ602pRdunFHuVu1s4F8zT/COkpUd05F5xRLsoXrcFuyh+NjsXFEcRupcUfMW7lxRw8bpXFFcLwXoUWHWF1xREjbie1F6reAp7mnIGZyB4dwcRl5OreASEf8GHuUuXcUcylG9xRlY4f/0H9xRV7kemlHcGemjkQ4uE6lRY8UcAvCSVR/pjuESGyJ2E3UfPFFPOOLh4EF4jMO25PNtXxE+eRR3hprF6DQo28UR9AHHW+t59qgNbs5Ry90I9G7MO2y4gDsFGnxRkIFhiFH3tRS6UVfFETyhz5tsUZ4xThUHUfuW5ui+BZjtrb5+GhFW4agNFN5u2jUd/FGhV2GmbkPEH/xRdxNoAlHaOuwCUWypGCxu4CUVI9Yi02MlTtRlEwJRf5btoW4UiORi8KwlHAVu6lTk/KH7mOGCUaAGE3jwpRoJRJ4b2B1CUS9lFA+RRyUa125GjWCXUUoFHM1u2IEFhW6gbeuFbjQlFSp2hFbp9lGMJR8W3r89YsJRq4UewlG7ioUw1mza6MVuvCUUB+j8JRdg0fedbSlRIiUW2Y4DB8ZWbvoY5GLwbeiAZlFIFuwh1qmjjdqRDCoWzNYrNR4lTuUtbKJRujQW0W7qJRy/nj5lFoduD1blmojkpRgKUUTlHGJRowUeMK4iWOF1Dl0lHSPWyF3k01E2JRLTUavIhbSAbTURx44mkEiBjr1uHIRREa1qc76BVu7g0T4lHWleZ9jPylGIJRSIUc8VEhJR8G1hElGLbhbtYSqF7OWOcSUfOGFJaOKVboc1F+1h6SUTUNF3JRPrUTlVH+tRP6boUlFfUuOrAIh26saRaNUfRr4PROr2tt65GrdRT9xD5lF1JR6T1rvNb8jWRQ0WJpEcXWT/kdrBCdJR1yUfem5/bhXl1h5YhENug1bvVlFjJRJW3sSQCihRK3jjiVHzVutR3rtQ6NbeefTrm1FkLAnU1JFm7NNu3mUX6erU3e8owNCgC7JRQSUfslGlXWZiQefOD2DRJXjlNt5o1R5W4ZiG5XJRmSUbcI4PVuuSUZa5Gpo4TyUefj4vJRMmEZAgGfWOb7Ubj25vMR3LQZrI5lNR9IUYClH3FRJHUVwvCjf8Hw0ZClHVtRB2buVpGH1RBjtsfVFIpRgbtmb5HmNRTWkUruEiCOTvkad5ELxRuKUZ1nZk2O/9YeZGGw2OoCjkSlEiUhAfFvX45kpRLNbtDdZGRRQCUZ/4K9NRtBPlmoF0pRfNbmYEHRvBorUTQFEl+RNk4WylGE3W4tbljNalJRh2kXVhFAhOWp3noNFK2O9arsrW6SNR5Tvtzt4+WAw/UQ0dYSpRPOtoLt5D9RXsUSP1Gm5eJtjoqlGm1uZnUdFQC/KOW81vZNb+xRbHTqDpFapRGu3l4EF6pR2qUcjpHa3WWlnvS1YmpR+e4UvowVyu0F5palHiFO1qUcHW72JhFe4WqqEepRRMUVs45OpRmaUS7t7R2O+3jl6lGJlRPqUVEK6INOUdboGlGDOuUOUaGlEl2O3t1pGlFkxIIHbtGlEt7eWbgWMN4R3WyqhrHt5JpR9QQbL9bl2kfQ1mmlGz5ReY0eXQ60RRKBXrmlFdFRBaUaPY7GFu9dDvH3BERRmtAPH5GNpRVaUW3Q47RhCZUU85H/JuIzkYfuH3OuHe3lmqGn7hgL9t+17GVRuwQcsbZ1jWZfkY55FkDRFy4NAwD1C2hmgd2lHEkAc6UdcEGcfBHd4Ft0h2NOp/AKS9YvuAd4UV9GH0COJ/4DulErpR4a1kv6HleRFekY/W5vjRSRjnulGwNOaGSJ/W4yC+2jnl4Lip2O56UVp8GCuuOB4V8m43pRUMblRjj3pRL6UX+zaiq2Kd7g+lH6OOGA4SBY7SJRnmtuAd7fpRv+3p5eH++O+EgAplG9FeRrrtg26TVRFB3hhlHiVOXybpQ247pRq+bhF8GOdBozjlVtYs1uLDbgEFE/pRzW4WAm6fqhxE0VZlF4Zu6GUZdCjgZRHE0XTVFYZRah4ThlGbJReGURTE6qHWzW4eOFEDyOFGUcut7oTRm97kkeHIkuVA1ue6592eXj1sxlGXI2msXtktYhPWHOUSaW4kxIXGUaQZEoTRDngAJlEqNuF2USJlGTOkzgAPUlER5e1tNogNa3OuWbgY6tb4gA8fkXdaaKZRMu4WKlE2luoG3oANEBjWPmUeplHVJRqurs026xNufTjtcJECr+8+5kzlFOZRhmUVpxZ0TRbk1pgYR2ZuATUUB4794RQdkU4I619RQOUTZlExeuZTbq+Y4CleLdUc5lEuxuck1h29YU9BrjkV5lGIlmBQ0Unp4EZRLDDnBXgjgwQF1qdlFixRcVUZVxS+ah/Tbgs465ZRoeUaupF0JR7JbjoY6UzWLSbnu1HfOOhOrmW05wvm5ZkOllFrHhmWUWlY7ZZRAeQeFlEdNuDJUQudavmONHrsDlFlZRRxbgQfCVZR4fVkm1FnAAsPWHVlHA7hCwUQ825nKATzbgjd4zdwLkUZm06v4RInrp824jvWjCUeJLj9ZRQjbkNlFAnhA1bsEHZjZRgPNpNlGPHeMLbh01GCuOj6mHaGHGLhBsuGkiSybeoUUe044n/gmyUfGFHrZRSSSPHDYHMOO2UQhgF7ZRSLUUS278uOJLbo+m6WxRmzjiw25FNu+tdpdlH4SGsYgG1lGwhRRaocLzYvPWpKAPS25etBsOUXa1ESTWz2UQlNFvZRU7YWo+48tuuObl9lGWJuC84ER4HrG0vdUUHHZhZRwOUbNRa3yOmQvtO0GsneVb1rK27y5Rp5oXF5F69hiOUWcdbJuOKOUUzzYSJuZh2jE45wzRObjrjlEGtu+OUTx2RZpuprblmeEk5RzLblyVGFGuySNlTlEMGBYBEXAFaOtuOjbmwYFM5RlXjlad75aecQUXJI6+tuGk0QFo5c5RJPoW0W785RVS4ILlEfthiZ4RaIACmRuDUWbeZdEA704am5FVC+sAwRqw7O1E8xbrDlEZtuj2UQe44q5RUhEX21Y5JuaTcKiOHJYBmbPkh2HdC+UEQQYREciOX1LrzICTPWphERax5NdOZXUYh24OmROz7v3GEMDBCHjlBuBZ5R4c0Z8FExER5LFpXqFjU+1ZkRtgHV5RA54a3qGEp+l7VrdlHZhRZU0cEVGo/WRK1r3lFtNRYuAABOAD5RrQXm0NHrFuGObqPlFafW4+UaueHkAAU+UXcVYz5RWSUVaNF29RaIEH3NYn9RdkQPnNFtNR+I0WvlE7b+Ln1tvlEnORMQtrp45+++/7bvK26H5RCA8LcL6ZzYz5kYvSHqoAXBjndv4NQAQAUcrt5Idu3t3nflFOeOuCUQP66gXhrF3uBeEcXeNsQO/lH4duDxrmV6Bf5RcF4ZgmG/5Rp1Xv/lGE9u5xACH5HAFRo0APbk5bAhrvLgm5HeLWafUTCEAOeA0LUVm5GwkRsBUVx245eO5FkYgVG5NRNZUfk1HoFRVF4TvOY8JhAd5tgVFIFRmjUZ/NHLpMdZUYDNaZ5RHFkWzv7MXhZBUSBx441eObUUB1FLZuKrngomEuyO5TUfjY6CXhWjUWq5EiXhqZUTyRHkLmsg1pD9ZG0+3BUSt47MTWjEAPwVGRXeBigJRvgJORWtUZWlH7eOXJUaZZG5vuHkQX525VdhVwwTd44Cs4613r6UE41OvIvtmowveOwdPrF26n6e8XbuTxbZGhBhUSl24J0+xhURdd51DW7Dtm/04byOEPjj0mHhuethtm9d4o+Od6fq4VFldu+l4RV25r8AkNgT2+7eFRRl4Yvv7XWRbnViqYI7yOYJUZ3lEcaO6nbqko6MNukRUY4o4LVu0RUcEbYbNRkU1vdlEJFRxYtkrSHdtuadXqUVGLdu4vjnt24I2RXovjN27FFRrltKUVHU3eUTbi89ZxXhNovod27WAAx3btr44ojR8FgdwM5tOA1s1k0VFWRR8n1rleFOaO7RUeDuGdFRKo0eVeH/BBvRUZc+FPJhbNkbVeGTFRUbkVAz6hx4MCQexYFNXhaYvnsVFnghBxUU1EEHdh7tIdBRHW0hJ3YXAFaH1RhPbkbN6I1uZI0bUtFS9uWGfgNeEXdhPYvkQ14jueJJURW5HwCO0rUXxI5+NRbPbrNVHazhvS0Tm1FwphkFEWBRE+0hw14c92E9w8C7nr0AIYph3pUftRGH/Wk6gLpmDSWR+klGQ5EhFwptABVt5PhuTnLs0CCXRB4Qfh1LZLLREVgVH4E+BWeAjk9t6IHQ32nHNCFHdWaHTrIACfackPzFQI7IAAgAANhAsXEaDREM6AxkQBUt4facuOAGctFljBMbeIJt6XbmRAnvUK5cKOjVgRFNaHW2Jurl8N7BNOOTcMWabXLReJ0Go5GArRaQ8MCtFJaw13KGCtHbWIEK0cj1aNlR4u5n8tGQAAsK0cITDwrRRZpoitEXLgbpDlRL5qUgOAAMCtE7iuq6kWN9blPeOTkKz7CErRgImM3zBOxh5vYRL2EErR6K0fVQ7Uee5vYeqmF0RuRfhkCtHCLgXlbiTK6eEQlP7oAAAYQDXaEOy2sJEWitHtkWnkLt+MFDfWiy0b8ibCrRsj1ukE748AZTrqpG7jDgFMvp7EGh1aKhAI7REWLmH78J9pwPLRMqAKNeBXhO+Tyu6mE+dO0w3tqtGR84rA7rWJZZdAJurhw67iLwRNgX3bYsAAdy0SqtHRLmhIrvcACyFePkvgZJROxhnhjp9pwyAAKdEf05HR9W8JNmi16QR2o41uMDY6rR4FUQME70bgOt3gMI79Z8Vq0Rlw5Fm2/NImJVFfkBRr8G9pzvqSDgTkrtafacL1AF4AAfLRBfYWlG4r8KsYAF8H7tAAia0fbwAprRPcIWsI65rRkVob+J7FUABa0avEHFRudBTgenC8tew2/MIa7TCes8IThQGGaYBgjraNaweBDzkZctHXLRIrgbqADDxu6KADA4EWGIgAALgEzZ/pCug6rW72nF9pz9RuwIjpxQGJ5AB0vigAAfLRTVoQgmHud2mugHNG4yy2VRACc25eogk0toUDbBUAHy0RGK6AAAmECRAAHy0RrLYvM+CCIW1A6brR5AANctHGpAVIjvAAAfLRgbXs6YAPLRRA1qqDYAAAc8Z1jrrRya0Xm95NwAxzkfdVFbYOz3mMIjbPRuACANJY5PphQojibq7org960cQAC5rRP0bm0+D0DWDlUdBJYbPhnYrgP2E9iukMDsBmHhDWY0ALNm7rrRF8rqvYFWjWcajsmjY/LRjz4UVA7IxAyZNB1hi0AAby0R8tGyuR6TkUcS7oIAby0UYkGgvhNjFjZAC4bRGprk0oBxVRMfVtqO7Z4UTa0XoiFmDWDy0aBuBZF+hTNLoAAfLRxrkSMB5dVR4uDsCtEwHIeVUYjRZWrh+0rqjRbA8a2fQf5bYsPWY0ANu168YEzJQQBtHuZBuSQZFbbtrRHOjp2tFTMh/cdmfw4+WADy0TExHFDWJ2Yo1VEG5R9y0QgmFYSuWVUcddjEOBBg4YgAD3rR45rjIACnrRg1UUwACfac3TjiWeE/xwHy0WNVEptu/8oVQmHsPW7G0XMkGjIhR63pStFbdIyAANctEFuRz0loyxa4AAn2nM9ciXMA660Tp6BArW/eXt0xHrTeJurp5tHXLRXsbiR16UF2XmYdtVEvDWDWdr4QAtuRcW0aq04hCOk74TtVENZ2xzXs+tHXVRqW0RtN6frRacbqO5HGOB71UZVXbNwEeG0WFmFvVR5Q4XhIBO0WHy0Qu5E0jWqEjtVtGRSu1Q4eu5HydepW0Y3A71zBLpfv5tEyNEeo3qVtgfLRCdoV1tFWoA4uDvHpgfLR/cbpEqEOOew+bkQNYLgedQ4V3A752hyclseuEmbR2m0R306xdwF94PKq5lOu1H4VjA7zbRKm0eINbLbR4uDk6NE5aewHkclY4vLRarIR8tFROBtNUfm9aNPWHy0WcOH5vWvLEdayF5gQ660cEM7vLR+XXg12TEq0mHkU414SsR7dAddnh5AArq0agADBbRt6+N1egvbRzK4G9tFEeRXy0b1W4nLRd8DofC4c764uDv4YTb2hy1uPR5GBsh4u5retH0CoZQTqqYSmrRlFyON17seRetUWuNZuxhgz8AmyF9JO6h1tjtGQAACG0QytG+zexZpslI7xSO6g3td0GuK+CCDhTtGi3mRO0ZFtE0DeZQTvgm6di88bEd5bZ2ZudO0Wld6k7RabEc8+AHDRmaUb5XbprRBhkRwsFjROKdjsTQ4IJh241jZACurRAW0b8iaVpR4rNpNJEsJug9/s+NYbZhraQUTBD73W25YfBz4q7RJ7ABKQBvZh+i5srtE+HW8hDhKQDTfh9M1iIF57h+vpQQFtFkEwj20RuNBLgA3m0YRNZE9eHy0QuxFtK+idUZKOHueR0o4TYwFnfh50vpMN47bRjm0URtHZWY32nGnVFprRVb8ud1aWbRq+jkoACRbRn2nEXVEgHoVu4NctHCnhh51thtEUbR4i1ulUFhfgo1FlZtHw5eAhMLPGjDtBr/4IQACPbRmkkbZtG+8hLGUe6TY0rRjcrtP1ZQXeDo4StJ6SzuhHEUgOE5M4j20VHtFtKu5IELHtFvrRNgAAntF18ASe0YD1YCEw/o4SUjZ+t4jG3rhtE8cR+N1pvdbuAACG0QKtGr1RANjrYFG8gAiKvoWOGUrRO9UXGaEYrRpCcFitGhqIGEALbtHYq+o+0QytHdAAfe0a8uAE0IHu+M7I7vJRmVrtWOF9u2avAH/Q7SZBh3kboAAPLRUc8Nqo78Ou0BAObEgZzuiO0cGqiTbRXY4fMm7IaOxBdp/AC27RLOYeQuY1fAe3mJStFi5a2eXuguCH7RjMNtsm78luAq0eA1H+wArq0ZMt4g+RuyDuO06oFRuu0U5z7ouB8XEeVRbfXAL7ovD5EtpBaXIbGABobRDcjudADxYgSuYSXGGZpR+GoUCtZ4bRRDUY/17HaOkrAIetHCKufW0YbmFuPgsiroldZOmExuUQytGGTKldiLjHZNchMo1i6i5kSAIQjji7YIcAOY+EBOEbyOcvXlVN5JSRvlgIgN4LJBCG0Z7tFNcQzB0bNxEv7RHwPnytHPe2GXIXfI4ObRrIrggg7EvWT23vTtEW5RVfUQL5GXpRk0tiIxbkrRaRAFwo4hKuYvkRIdES+RijUSDRYeHWGC4MO0FZnoDy0Tit5vcRaGQUBiAFMk1y0RIABMbRw4biqgC/bRZ8QBQdEAIAgRjrhtFAxer0KFrdwwYhcroZUebc7R4G4GK44Y6+4TQGd1bH7RqOgKftH3M2BjUR9kH1qW7h0WLgBLzWXh0YVd5F9Odmbu0q7+HRgLSKwo76VuyHTlwo6BuBkkfra/441ey+0U7GErAwT4vmEdFOcA7gAMTtGurRXI4cEBGev++Q3vtdaxVR7NLuaZ5rNuCcjhCACbrRXF4epiFp+Rtoju4dGU0IhJAPnNZe7Rv7XgWnKh7RProY4xYhHRnh0ZrNYgBOk+0fiEFd+B4K0YU1HEe2LwdnQUFnCuVLjNyiZhoOO0KNRYDDARZmzojtF5HRn7gHlFEAg2CU4QptHXLRmQ8I01FPbe7M4fVDCfacpgACbq4nJw6AAB9pwDgw0W0ZbjaRO+XqSETtEQQADy0Y3t4YnWu/RkM16cAAn+0dzG4b+R07oe8ACzHREZjkXlEFuQb20UOG4IoADK0TgkAUnW04ALcdFOxhZOUfL7ZzCAwW0Tz7wQrRtXoM4dFAYuMEXg8dExMykogOJY6gbg0hLg7OCkreXhEHFVFOxhiDIZMo62quzAYQtW5qZeUsKCB14ByYACAF6q4QUAXm0cxABzzAV7ACsdGm7RNQmuso4EGAag1gvuB4yRWQAETtEO8EhRqJFtHBqowogLEMEao4ry4BSdbArRCsdjxBB4BR4w1nwE5TsOuONqZ57jHRje0UHtGL7Ryj1pdtE18hgOzhk068nRCn1hjr45HR9pbnFF5ObRuTpnhtHvYh5ErmgAAslA1y0UQAAWHRXfhontGr6OuHodwFHXkAn2nILHapeOLr1sRg4bQoYJ0coWGTqu4gUWYNamHRaBhPRUbd2Bl2+CCdHoAAh+0dctGsLgEEYRgACh7Rzp1t6W7B7RHO0WUE6PrepgdsCtHk5guhju6g5vbRRgUb+bakJRfJ0WMdHdAAYeUXu5BOnRGeQAGhRL7RfkttKo4h3ewrUWstZPmRIx0VkdHjHRHGiABtG+8hzWLk7GGxCqz2NNKnbHRO3QAPt14MZQZ7plsdGFnRdBQT8dFIrgrC4PbOFQJIOGrrq1EwcOKp0ecABmHRtAABqdEfHRsp0R/tE/MA3Mbr7yEinRjh0VidEpBRCWbjP+bCHRDwSO0JEs+28WtiKdEOtRKy4D6dalNRYm1rQIBXeBap0ZAoDXLRx6GHGo7Sau582I4dE2XWnw1jxtFhdIBw0XKM4gOQAG0cG1FOFBs0Trevj1qO5sSNctGcXWSGjpwMCwKuNajqA7bJsOGD2HhPCurRS43rBjYZo4Yk3lON7ptRtwkZm1E4nhve0R5q5UAAKPZlxeErBRP43oeN4mWOUp0dkdFrPWLUwETbZunR+AAJFtGZfg1y0VBd7EAAsa0QOpKdQRmLAGkdFsWO8R0ZfZTWTeyzZADtE5auKx0TuPCYAA1y0SUo5JjeXgoYfOG9tRvmrvj7DAjWLa1mGdHSnRwF0RKdZvcOZx1qtnq/qODk3v2DBTtRvewTO1Efzh9l0F/OFQhRPa1mRdFAXRP44B2tH2nRl2QADtHlXWxT2E7GE5VuLVbkeN6oAAkW0cJQgrHREC4YTtH/rgEF0eJdG+8hbMNviFEDNh+b1pkdH8nREZ0SHtERmOAG0QwIGdHRaZ0e2d7CnRhmNnSFHpLes7tvb5EhtuxT2AP7YEnR5PoQ7d7nKIpZ0aFdYznRxJ0ZON6XJOcZ0TdfJqDWJnLvb5GS5ude0RYE6wLgxHhjEAAnnR9J0Q8tHfpBM5Oj4p7NFgCHUcF354bWYK1qEdEqXR9k3rpdFc8RRGDpvdbkSARl0acq5AloqO0WwABvacByvo5o5eXRzR0Swo7IXRS60YZ4HgtGwJ0XZdHG5OH50Y5dHlDWsV0TRtavpubl0UJY4lwoMG1mldEpVIgWnL5dF2S2xuTtqNKBXRVcXo/i6gwRbXfjzdapXRBJ0bKYTGRwQJ0dr9YsnRTsYTlo7iBOzZ0VW/KfDWLhFkWJCYXRuh0V8zbLLeYhvoaIAzgAd50bRV5wjOChvrGdF9CRRhXqCE54vWYzjpd1ao7RN18iTaFXiRwz5sByGIwO/4AJPF7Gl2VgoTvF7XrRvl0T7q4WCAn2nDE2G3Vwtl0dudFUxA27Tg2dGZnR6B0f8ZG+XROWnGNlE6AA3V0RggAIbRyermVdGDr8tljhcvC7mqPWkdnq7Ee2BJ0TddGHHWPHXgGhSmB2EJAHedF0FBFQgHqdZ6cAF3yKONYf8e660bNdGNyhe10bZcD9JRjJ0TS04KW2h51nRJF9Chn2nFaKH+aOq61pLvqPwATp0UJW5vE+1xLp9N6Bfw248PuFEr6uoiPuJLiCSRJ4UWx1FnhR+0fn/ba3sAMh0bk3DGDeKVSMa9Y5HRgp0aMqyGnRXm0eH6G3rRBNCPsdE0F28iFMntZanRoyrIAaDAJewK0SKdFGSR6iPjDxYa0Qam0YAa4gXRDQgM+J6JnRXJYdn9YIxA+sAuwl6szejkkZ+FH3yOn4ACWtFq8+2a0Q+tFydR4BkbwuEFuQaG0SBFH+SRk0lqjo7sbRYE1hgACH7Rz13s4IAm1A083tPYqWjWpSgMILY7gAJN0RbdHx7eqEUYouAZCOhRqGDkGBacKvnsYuhqnRQoEG7iAFEutUDk3tEQiS/M0ZSrIE7Rce0SoG7BLhhWQCbdGqwR2YdoetGawRO75ojtEM7R4uDqvm53q2GEeG9WEhzeCujh9pzXLRKb4CQNje2ujZQQDrbrBBcc3nrBFB+BjxvjYa4WHRoGXlRtE4bR3u0W+KFrbWDd0ZRtFGFeZEUR7dEaXRoS4bJg7pdRgBbp6w5lXRkQ4BkYS4bRpgAI7dF4GEAW0cmtFChEiAAHctGnHWJD1piV7k3RQRUNvo4YIATG0antExa2XV0YFt5Jzebt0YvtGHkAJN0dKgDF3RBEoWRgAQrROh0VRtFqDeUyTjDdZl6gxAYb5YAMRereLhHtEd3RuONvVtbAVu9BaPgdGUF2tAYUfdEXLeNe0d7tFSXR7RrstUSPbRjWSISAC3Te7OUdhHAR3R7y0QntHIAAwt0d+4Gg9RkfYeLubwsiVj8NCAC+XRPN0ZstHf3RTAAMLdGsAAQ2QH/N50FOKG0S7dGyMRPWtg1taK3RKMfu/dFo7Wpx0QvoQJ3RBGjhEdE0iA0/VmzdGk7RUk4fRuDXLRyC3nt1Hoa+Tp0U24A07WCG4OTdFz2RR60WZFGWk2ZV0SbtY3rgDPntASGPsq2F0fQUGUY4kxDuTdF1fmoj0YquEFHW310R4W5hOObUjr1FFcPgx90WV9Ygbg1K0Q3Nb3AAa90ew9FCPRYRbhKTbk3RPkdtP46SPR410ZNFG5RO3g/nEW6+XR/SgMc5FnJ2B6cDStFPwAkAAI7dEI3RtAAJPdGZnRE4TqagATeBHZvnQY4MAAJj0cMXBmPRQK4ecdFXdoh+0RA9F2PRjmaBw9FbHWOh1n6dHtAgVKri6a5YlAnhoJBVbj3R4zAPY9GBPRlGOMEt76PRx0Ue4t6m2OmVQQeb4YaAp10X9FGuGOBgKFawC+PRVQADE9EBPRGj0X4t4GKA0T0f49FT3ROj0VIY5lXR4T0TlY7xa2qT0coSHpPRJw3o/ACePRYBUDFt5mbREdmLk9GcSApT0ZmdHlPRwT0UZb5cLg0QAAdKFAnRR0oYAABYQEiuD5PRZT0WZFFiPRrCdqf+ZE7Rlm0cLSToPRaO1mw9GucAcT0YgZ4wlhRFrrdKF6PRp90WAY6R7WnB0XqR7mEhlrUYI9HlPRjvUdw9FsHW2z0S8HaQVW0/AIPowPLRlfkXJCyTPRaz0ac6i8HWZV0Wr656GEa90c8a4Z7Rn2nMNoj33R/Q1i7TY5ORPGXpXdJXPRAfUTMt6OBId90fcK6qPRpD0U1uhbPRygACU9GxPRhT0RwY5lXROLQKcdZdmeRngDUfbk3RUL0QU9HlPRQx1jM9EKPRGxjmVdGIPRpz0bIVAEBOxMoYQ9En3R6VQTcxEz3RyBjpLdHr2O5N0bM9FEPRnPXr/dFjXRmz0ZmlHsluT20evwAA7RFL0ZWxGmxRnI4SsdFwneFMjh8tFN9RzpuOZADLPRrfUTi9GB7Rl4XgFlQiE+Iz0VHPBjPRXT0RM9HS/m4j0SpQ7cPR0B0f2uHeXWPp1nXwAfacHbCDgABE7RYL0ZOQ6fyezxroPUC/R+pBnhK9ELxR0L0ei9HGluOL0QgdEo3RmrTpKnCfPR1h0QiXYfBhomPiie4mHRqp0VSY4bjwnhJGZdHlKwgdTrzjaFqOHp0Vy9G7Ekyr0XN258AA1q0f+uAiuBCdzq6P7Oyh7o/t6fbdrRuK0SK4HeGA3a0a8daJPRHJ0Txl6rl4Ab0cyUEGo4bx0cCtHp1B2jiG89HobhKqACK4HADRcgALG9GeEhop7oa9ET3RjmaAYP5avRIN0QgZ5sHRyAzo3z4+EhUA0WzBb1HR8rADRvi97R/PUeNtG6LhbUjsPFHI6Aby0erNaEkAOR0fsDgoXRiIYUo+BtZeeKADJdFRAA0W0WqdH8luEr1oftG2iuUguLuQ5B8Eby4MyUFQXeJurmiSAAHRUx0TvFGTVh+NCDE9Ei6+GFbittHWAAiO0ZBdHTY+gj0ZQABiXRaEctm9GgUOR6Ue9b59ShRAANctFHvRlgAHMdGjjWKVSNaAAGHRTFCO8tHbHRt5ALJdH1Uu1y0Ta9G7PWXb0We9EXluUZ7iYdGMpo/10R8dEw3RoJ1ppo4R3RWaOFxKRvHRPG4YwADzHRVZAGoNFUZRVlAE7GHsUezujonw6vkAd50ZmdHsnR25jk7GGUXWfKrrKpEbyOhT1qRi7cAAAW0W476EbGxDZmGtHbjwiT0SlUjSUOlZ1ucdEN5u0NYa6dGL7RojgDCgCmXR0W0bhW4HnR363qWdGxIGh60aa9ZQXel90bYNG0fRwK0Zpl4Z9hE8Njut6+kAnz0aI4AyAADNNlOdYo2Q/H0W6gaWaORe0cjlE+gu+adh89FE7Rdy4Cb7YfPRIT0S40ZOxhcH0b9g573RHWGKkNEwp2E3lkLQC/HRnJyAYOiSmM2jQedl4jqRX+Nr5dEMbelWUeE25dAsZV0Q9W7I7erFjm0dEhKBqsftztHCGAv60evEHNmoHObkaVrr2ObR4XfdFTnRl50Wkq5WXR5wAEQp7E7RyV0QZ15aOuVgocbk74aOh60YOtEUk2g2tjidAp7RRH0Q+NFHHRUe3mHDbSVBYR0Z8NYZ02AY1lSq5udBu5qlxeFRJRIYFijoBty+LljqkG4bbhPtllCdFUXWfn0cuGHGUOcygVmBac5eAO0UJdHUPRG50Yavz612wK0Uf4jiDRLgAJ9pwHrRzH0RduH1bRrW0bWFFKAA2qjqfFbNko+EgHB9FtrezYjt1dGCPRx1bpck7XDRv6+NmtbHouessLCdGqOhKY1gMlHr2uQyUaWdE7HR1y0RB4HZfRchbrIq6L7RbSjogWHYbRwlwBBm5wfRDw1oRN6oAA490QSdE6AATr0eYdFDXRdBQQgZ4zWOdn0btW6pa2zgjuDdGyqujthD3ID3OIIJ0f/a5MrgnX0cem5U3RKzEHxdFRFRUyoRvI6nrRCsAO89Fe42LU3kFY6gbgKw0cjtFtfRDGUB1hgEjR1O4TB9HjuAxI0cqoF7beek3oiWaTXWaWkbVxBOnRanNj/yFMquwYbsvtG+8hba3vA9EV3eE0YNO9EwXRM5OvnUF2YRi9dgvtHArRBV0VLuHg0Ovh0STS6FqOfI0QT9G4rRot5mn6JZAAnX0RvwBCmh4o0TbuHcbRkR0TjtEGBBHvFpn15ZvR7s1uydEr3Rx5cLg9FLXRXa0ewz5wNhoiAdruGD7RDKUWnZEN3eqZ0SpdEynRHS1p6dHDfRsV4HLQ7EqhlgQZTdY5miP20Tp6CCag2H0dqNbMq+HO3n7W72BBiw3h7dHeOOqr0QJcDcW2IhPi+Iji4OfOUSg9Eu/RlK0TLt7ywAn70a3N4uRAvyJrq9GIshIY0cbdGZnRs5AGpxB4bRMBXsaHYE0Ikf0aNhG63W+D0dNhE3Z48z0Xb9Hm7eSeBE1q6uy2odjralHEC+9qUfrVGMbe9wAJZo7YXRSa0QBtGTiA+x0fmNH47RN64BG4rR3RqicIxd493RpqoV7EEUHRb2nCr54qQ29Q3gQHafac7+cModEw/RtIEBIPj2qhej4Gh9GUAAv20XwIBoqgSzgN4N5cfoRA1jXpbXEuqiftetEh3RqCUNctFqFMo41kX9HXfR7L0VrrYcXWW90cUE4mOWsVbtlZgaqR0modWdY6PRUP0c42HY24Wb0RQdafDWs40T867b7hLa0b9taQR2BB0auNFn/RLaUc+eHhNhJDQLATohjhN0YVE2HswYFP0Y59FQfWkhofzSL+qQhmgW/9HDXeeD0QgmGc4RpClgrtGSgIiTcOrtEvuAif0c+NExt4MtaIxt70ze0W0Wj0qJPiFekTQIAwAxGm4bQ9GnUgz60UgeHjxAl+3mOqGA0Og50ZMN7N3R7y0Z5SHQPWNKbi5lEfLR3lIXoqrcaSo41uzE7+rR4VIZJtG3sAOD1kDtFkHhiD1mNABLSuzW4R306fpRmDbgg24sAxaTjhgOEd9OAGUcFbbZ9Bo41so9bL/RXE0cvoDgfRwgMYfpFWHeGT4HwAB73RLq9tBlGyuu3AMWvdFDxwsAEFZtGoTRBvBCb1ifqhigMRIDFoYuwbrrIeFyOOl0KOIDGhbRcOLkwd6JPRZpjkzTgdHWp7YLZdEm6u1q0SvABXLRuE0XHdF15uc1cMzNaXL+dAMTwDHqAx7AMda/YOPWT70cYeGfPRnh0XRU7djW1bjuBAAQrRembj/YChAA0W0UhJ7OrAtF2oLZ46TRrgMWoDEdrR+EgB267eAxHh4WVdFNuI1rjkvogkTesmUfMdEdYY9k0Z39GHW2Xm0Sfo6SXRVZbuLbayAxkbUWw9EBfWGQAPho5eAxPk0c3hF+TR78rnt0HJNu8XNhcn6jOOPh0eFNEslensYR7xa5AxMUAL5dELOOUj0WBt7XLRgn0TC9aXI2ee0bg9HCAxg/QUKKFyIWwK0RnTaFXekrjsjdFxqOn2nKcK5LR2b30T79E9zWzJQe04AVTRZ20eu9YcdGndtqupGR/RTL0Yu9EzgAb2nAtk5m/Rg/0allGCEwd50USAAIvWJurr7Oaw3W8ClCOU6h+Blxrijt5iQAaTjjxY6b3uWr0dPwDHNu390eTBC6bgI43nedEcB2BJ0frXakNKAD0QytGCPRKVSGDNHOiA0p3iBtYdZRZDIYbkG3AxFMjqe2AavW3V0XzlHiS4aV0Xd9FbHW+Gjr29F3GOD10bvBZ3HeDt0cq9bnTRWwdsst7+XWkAEJRpivvRy1RH0eAQrRZh0ROxBIrgBxNj29G/LgbqNj19H4HR1nrucdH4nhg4qNMd5EnhHXAJgdH/5OEAgIyBBznRbG0VFzZwvWvJ0fdFgslA4X0ZFtGRfRgj0XSq5one5sSAnTZofR/saLy7CNyhXZ0ZyDFfmOOR0YSd6JigABEdO2Ga824e0X/dF+Nw4VAFO9FV7Ro50ZyDFavREF0bpnZ/ahfZlrPhwEAAam0b+UzMlBAIQZrKGvB2dHDsndFXo2tTDquuGZWu3QADyiaGyiwLbpu8zypGm64CT6ENQAXIMRSdaHvRbqEJuuC+XRwHIe0Dgw3W+aAAJcAxAAED0eaeH2XRZrNLcDFr3RWe0b8AA4XRZpUW0dGH9BLp4eP5a23R2xKF6DGKnRVdNiddGIvRdy0dxpKw6oOAIY624ofRBckZmDGpK2Ei4ONtFCeuWGjs9dH9/RDMofMdGfvWb3rsmeELuOoAwceOHt7RGB0WetZ2bRps0RGd5kpuMgMRa9FG0OhJAPqDHtgxDcYfbNEnuOg+0dadE+iubQvooRHa5RThEP6pBuzRzTgfH4GqbRpPkfIq72AApq0cSrT5HRLbblndGyHRKWtg/tGkfWp+GCdtH/uOmD4GptEY/RLZ4Y6ZFE/RhGDtJi60nh7Z3p59EJhuiF0b7lGHjwF6rmoU7cu2mF1qx9HNLW+GjqLdERnRgqjlGdG+8hv10W5V4GKANPANr3CD/R1XXgDtEs/Rbx0Req4BVe1RgUNSEF+OzoMZHNHd7RuK0UnNGndeCBtsXqG9HRoK0ditGz7R5eUfHNGV5RKwvtO279nh8EMRPtHbUuU+0TF17pXePu0S3lGb/2LSjgb4E6AxAAgCH66THRgW3kmND1QwD4MeF9EEnR0vIaNi7ntuoanvhIC5fRTvthwABBAxHfzpn65tOA97rguw6Eugkx0aONYbHROkANGdH3xhOeWI/GHpYOWt0bvlHnC+inYQhI7C8ut60Z9pzwAAGq0T/GGiiuyQALbtFn5R3d0bYJ73l2swgMst6/mRbgwdIzZ17RiDgaRlAPLRRnYbAmHrzRHjEBV9GIJhRPYcS9G4BuuZdkhZE4ueVjPByG4n3Q1c4R4AAfLRjvLuqtEi4AYJEbex6JuRTe0fr9EinRSl3j504JbeA3TroN4kXhm31khDHT7RhEMTcCGI9QG31vpQC1DBO31mFDEEQx4K0VNeCMLge90aImGUkRBpgdSREwLR5d1mT9F2XeAlkU5d6cA2wK0aJZFdvRmC0eqgD/PRYl4eR5YtZ2G90UmN74LRKQMZ4IA33WehbkgdbkCOYUALcU5p7RKn1qjtFATgYhUYrcxmlRtC0TK+Abgx6V3mDdH8NE/64KLeaggxkGNlhdFQXRktjqpl7+ThBhAM9dHsBudjoZ69YEB2VN0aVd7xvRs00eG04ivR8x0b9dEUnWot5sCtHBtAWV1mxtHxJh+b7pV2E/Q2RsgIs4ANzWArXqmNZi4A0l0V6dEZs2uAbpqoDSahcH0dJ4GBIOv20dJY6we2e70bJdGCPRdy4Ob9H/rgPB0U7GHBvRHm0dndHEAAkb0bmdEKbRND0dvt5L6IPu0fSCGyXhDgbt656YDW8XNkKLZpNA0SNHtd6brRB13q5DY/eObs3opUQYuBJ6fgEG6/0h21dtHthNvucMMcOdbG1edQ1qbV6tvuUQbrrUz8y2ThUcV25xRB54QVbXbKLRjPUT/YwZcQ1MQe9XZNM4mi0TLSFL7+NXHpLKh4vWp4MXFK4UQx/2ts5d52reuG4MCtGpvRuKJlZtFTGhTQbhyA7zughJ0duzZQXRppthdDFiA2P1cuUNb4jBE3YTb9bgk2Sb0Q6dEB8hP1cmIza0B+X5gU2LaD7RadXsm9Hf3RvH0TtABHBRAAfmsmEmsAQS0Z9pzDs4IS0QTZGjkRbu0fAt5l3RYM1OztGDSAPIMXFVGXJOQH7pv9HG5OHTANJqFE7RZgMUeUZVXhv9PgMVHYjWYFrq+l68AxhLoMmjYOBOjT1gptFJMRJ+FotRq20AM9XpMtrWrR89XonkCiH+KLOLiaHc7RJSjvbd4nnRPDkcX4C2AAdy0fS9HpVB910RCtGobRR4MUUtE7dhbV4aUtF6B+KJUaODF4nQFL0QHd4i/RuB0WODF1fRMz1tz9H6kAdHDmZ9G4rRLP0eT9GMbebj0VT9GM9W0F0bBdHHlwbtkb1eHY/RbE3rj9HPlo/xUQvtGuauw1aCCVEwgAhP0cMdFd7oJP0WddZk/RNT0Z3DE2fRwGiDT9F9wxB/QWaMG62RqJURKNHFHRi+0ZiVGf+WUv0XfdEy/RmqkHL9GCXRICkTFI6ElRV3YTXZE0mhTx0VN9GZAQxm0RfK5qQWt8MR79H3wxy+0UyM7Pwx8jkS0ETtQx7cMSOG6MN2Jurl8dEnDeJn0Qd45hQAoD3l3DEuXQmVNjDdamrRhwMav5FlnG0/VjUJqvzgap0UidGYlenV0dMXaROO1oMYPw4N3RS0rgp9ET1BspUWnxY+wWH8MQjWGJAAIA7E/DED0Wkd1oP9EVnRM1/E7GHcgQ78Mbe9HPHRnw1qQuLknRiPkNKhAfHRLhFv/DG4WAgCMR2dF/HRZpUaAjG+XRg6/PsDEwXRHZNkf66WaO8CMZAJCIIxPc1m8dEoIxPKJnAE4tBEGCMVW/KFDe070Q6OGddW//DiQEBelRm4vj6VHpqWXfFhA5ac6cMJAUz5Zr8WlQlpzpyQGWIclrEH5PCWsQfmfxaROWb/HrojEnGWBiMd2JY2+WXclpPH5e9uDIlrEH4XaWVmnAYjEX8WgAAIog/jPj55b6Ixbcfi6n6MCWDfFrEH66yW0/Fn3H5n8WjKfp5Jaw6WqAnpXxb7eW3/FogJYuIx+slnmJY4SWsEDo4jHYWWLiMXIE6RCWnqlikjHSORfQlkNZZ3CW3+lq4jELSWgOnFvxYdiWIclrKpbAeWqIlnjRGjcWWSMTu5bpIxeSMSBH6FIxyolsPxYlIxhiMb016VIxtAltUjGMCWtSMUUjENIxYulsjZaz8WgIloPSFV8WUSMYs5axIxDfFu+pbaCW5T3vipbmCW4wlmfxacSWW3lmLEH4qWoyMYMZbg6ciRloIJazlRK/FoMjExIxBiMWYJYdqWlP7vTpzXmW+iMW2n7ZIxbSMbEJZ78WmtEZYjFaIxmKlvI5agTOUIlqeZbvCWRblt1Lb1uWe4Lo5paOWWRblgkI78iWGanLxpaDyWMsllRpZOm27afiHJYTiWHAloSJbKWhLlFsKpZxCWnmlu4n5E2BuqlqsJbrCWGgltipbvlRYolgeJZPCW4KMcA+GCGWgwfn8jG3Ixe/Fp0DanCW6Wlg8JZPCW2NltojFDOR6alrEH5EyW5hloS5aROW9clq3EGgiWSKMRX+7vAAMIliEJaxB+4clu+RZZIx2Ulh9Jbs+W9KMXsE7UiW0DlrYO6nCW9ElkVL6iAAWjlkKJYgUWK4Vud5bNSWNUvh7pYCiWRbltI+FiiWcAljXZZ5iWnOnEhJanORr0lgKZa6p+6ols1JYcd2eBlt/xbZGWholiqjG3eWhj4dCDZeIxsSMav1bSh+KKloIJYD8WriljW0ij9hdj4WApYySWgOnICjGfCezPFtcjHGIxwSMaZ3ZxiWlkLkmJamIxMIjn0JbaCWUyMX154pqcsqMSqJaTiWXr3lCJabeWBiMWwJazB+/qMUapbwuRUIll1JZBqW7PllSjHKy29Qll8jGeqWsaMdipZ9iWA4lkOJbF2BkSMXAJZM6c7fllSjE0iO/Ilv1pbYqWqoNnFpYUCWMKMVKH4f8WqglotM5SyWIQlqiO7KOW2Slk+mFBox0/FgYjEECW9OllSjHkMR7wACBJZgSWAIlsCpa1QusElvBJaISWzBlvtMGenY6ElqEJaYSW2ElvRJZz2B+ElvoZbe6Wc+li9M6OIxlElgSpaMqWc+lmgOE2CWoGlrMH4macgOnOFJZGCWIwlvLJZguWOjlrK5H8SWcSMbujHdCWaLPjXxZxCWwkls6I7KSW1fFnvxZGW2j/FrEZY6SWIxljoxHbiWJmnLEH4biWHG0f+94JKWbOnKgJZTiW5/FmZpxRSWRtloVZbm+WlYTj/YEW629klvgpZoCWawHimpxkiWsQfr8pasoxEaMQQ9aTox27Xr+5buWWvyltVVFga2fQlrrJYmoxjAlvVVH9CWlUlkgJatIxuSMefxYBIxYPluv5aLF+xQ1m9JYJyWwyMURjGYiWJGMcFf5R92E8lvFZboCWu/FrFf418Wg0lmgJYGIxQAluApaTB+jr4VzHj6oxNSMVi5YEKWFzIWbea7IxHelrEjGKyWBblidJaQKWrm0Tm5GteWlUllmpbiYxAMltuJ4u+WBanHmpZCGWsSMQF5aQKW4W0SiJayYxFtliOpaxB+8czkkjET8W3wlhkjFPIh/slkSjGGYxdElgYjEJGWNslo7H5f8WkJllDZblB+A74QZjEYyWsSMQkZbjCWiElrZjGiaWDmMdzQFOYxRmMZZjED8W5aMWlZZ2YxzOnF5jHAG4THlmZjHOYxfmMYtpb0GWn/FkFjE5qc5Qfuu+HOwAVaMQLJZtIxVmMYHJYd6WpQ4YljH8yWLnlgRjEJGWOMluQZbGyWzAlvcxFideColn2pYZiWZplpFjF5YxrsluljHNbRUCtiVjGWyW5WMVCZZCyWtslkHJZ78WbEnpmjGqSW7AlgdJa5YxLslsrJbVYxpKQbFDbtYxSSll1jGmoxaWMYVjH+0B3LljHJaGROaMllbJYuIxRglmgr4sYxpmnGxjGEYx86MaX5ZjqWw/Fv8jG2ox620e+RYLYxh2lq4jFOIxjSlqtjFtCWfulg55ZSpB7WMbfpYGIxhclpMH6nbRYhloijH6GWAXlvXJZcK+zclkK5Znx+l/nkh5HLQ29OnLKpac6ceJlgYjFLyWOn4c7ACTyWVslpSZY/YxKqMcDtGJKW4AlrtjG9IxOEljWNbzKWtElhDjGROWvfFsZ5bSyWWklvQJZZJ+qtUX7OYJOWQyMRdjFnGWWGlsrJbI4xXqfuCOGenYlDlq45ZHIxgYfgSJb0J+zrEeRB6f7WRqMVwJaxIxIOnCCH4CYxVO0bgF6XD2fQlqTjFFuW12YQ2yG3ZhvU7q8pYxOW2WMYS5bsiWA0lnvxbbjWjiMdrZY+qWLKllQ5bAqWdUliEJYC4xHtUYPf4pqc7WlrzjHGYxU9tm9JZfx+J/FtUjHkIuKIlirjEK4xriMUAJabh+yuMfLjE5IxS2MRfxYJCW034SBZZXOWt/Fv6JaLfht6MRZpZLYxbAlubjGA6cOclhBpZqCWswfhwpZM6cJ8fgGjHfZhK6QfM4EL/ePDocA/4MiWJmnBZjH9KW3WliAJYLox4UlnVJaHoxXfFuF5HH/emxloUpbK2WMBllXZbTSWmIlqGpbnpBIyzpNJZzoxyplvtJZFqWEEltujHxIx5pllfxa4h+8QfscZbnIxFdltD5Y5yWXAlrGZZ6yWeeliajEQOWDAlgF5aQmWYmMUgJZXOWuKMTAZZn6W9wlpUJYKyW+hlm5jGs2WJe0WXDZVeRhKMRq5aMmWw/FmmpxZ4xyrljnjG/WWeeMcPxYF4xtZlrEjHF4xgAlqXjH2KWtHEbs4FBoxPolg6ZYGIxO6MXXxYN2WBanOcJa18W3iMatjHBKWRQlg9jGRjhuIltXxbCeWkylsMjGjeR7wAJvH51x+WuMT6pYUGWOanHP5YyA+0ofifjGkaWBiMcjZaZjhLSMdfjGuKWHSMfUjFD8WJSMRk7aP4xnJlsMjG9IxgSlksjEYBWZ9UW1JbH4xABMS/jGoiWQStqgpaUp+xmMWH+HFTWp6MYDpxA4xNjlqQn6i2WCRlnTjHsh+Gc7oApZwEx+KMbd5HmW2c6MQMpYGIx4OMS+jG5/hE3lgHJb06WgOnLNjGDWWgAlkbZYWaWf6MTFjEiq+AOMdPJb7IxoXIR9jGNox32MRkD59CWW+MZfxaxIxkYlgWpwvB+wEfk5z7XKWbOnOUH4UKuuYllE5aviWHdFjgJZkBWiuMfqr71CWnklq0Jb+CWgtfgoTGmp+IyMft5auCWuqVtwTF3CWzolupjEFcR1OMUtjHoqW9uMcZ5bWWWaAlpMH6Vchp6McEjFtx+UNllt5YgzW8hlqYTH6GWhcliIZb2yegVvH0JaMqWqAlo4TFf8WvYlhypZvKWXKlpAACP8WCPllt5aEu2MOMeDjGFKWucfpnjFrCWXcllwdGEox52MeKpZRSWiOMSOpbDOWYAltbJbjCWkYlnoZbWrBYClrITF4ExwSNkvjEbIx5M1sJjHlYx/PkYKF5m3mpuMfgpZq4xUjUZ6dhgKWcBlsZjEiJOaMljpJbzB+rBMTtyGS+R1avitPZ0cR68ftepaHOWBTlggJar4xOeMdYACOIxr6ljbJbT8WsQfvDxHFTWSGlnBJZRiWtfFuxjH3CWNOMQYjHD8WsilvBJZ18WOUlmzpzGExmBMQQpbfchYkfvWpanCWa6MfoZYseWxqMbTjGs4xvVlpAADj4xeIflCZYUYxnOnEYJZhqW51lgWpzMCW0llmlZYBx+X2MVSjG++RyR0c+wFvWWr6lteZaTExRSlrJjHeIx9AlvBJYN4xiAlpPH4hIx66lgZOGWuhbelm8TETExXOnBC5aX2W1+MWJjFD8WYcfiHH7xJ+8+MfjyHsIeNjFmPpa/8W18fpepYpYxeelpOJbh4xVmnAX5HfcWYxMe8TEQkxXzlvhjGG4x+SMXUjHFIxUMloMdGgkx4xMXEJYQkxzOnAITH0aWbSMeJ5b0oxn6wUm4FaYx2UlhMpZf8W9KMWz5Z9x+3GlrxpayKWFWlijZb3CWfcfgAJacp+SaMVMpaf8WimltepZyaWWSluFJZSkx0Plh2JY2yWR81pppbhSWnOnEs5adYxfcfnppYGmWVBMYtpaseWJmllMTHDB+XKltXxZd4xA2Iau/4PHR7JMVdpaFKW22lqmZbmGWLglm4jGQ2WRSlrKpbIYxk/FjnJayKW5YllujEseWhpMX+jHliWfRMfEH7yyWGZlrqTFkyWWWlpzpzbNR689rSjFV4xFtlggJaX8WyAlvt5b1aWYUlgU5ahSWtllgEjHAExcNlu1pZRiWcqMdD5YQExgglm4jGwYx1hlr6Jbj8WRanL6TEDEx+3ln3H7v5w9KToZJbXEx1sln6THJ2WfSltjZZWIx5/FomTFpkxswflYTF9aWA0lnL5au+WRSlkzpyTiWfSlq5ZaoCWAKMZCZYXaWV2lvPJZcnRT2lgwJY0kxHxMYXjHeIxg+MVnjGf4x/GMfQn5inRJargSTHgkxBiMTSTFTkxERMb/xYwkx/GMRapYotRk0limpxwSW4UlqNZaN8WieMTqdE3Xm+OllhJZ+IxoUlgOTFzkxzvlktpZVp++iMaIFHmnRP15u0TEtuWt+MXP5aB6WdBMVlpY8kxsQfqyJbp2WqUfkL5bxB+vZMXApZ6yWF/FsM5Ykox81lr+THn8WpqMWqpb6GW6JMfXxbBnRuIludZbkaWJJlgtJYnx+riMbXxYi6WE/FpiJbex+1jliHH798WMBliv5Z34xa/ltipZ6ehpwlhOJYTmWiElt85bnqWL/lgbjG04xI6lpCZbOiWOslnWTGJmWQSMQaZYD8WLGNqRTEWJ+piMXvjFeWWaAluXjESKWMQlh+TGVCWTWMX3H6siWfaHsyTHZCWdZ0ZNJbPkxg/Fp0TENkxKolleTEI6WgOnEWTF+iWJZMcMTEWtRdIAAUTHeIxyeztOTFrCWygABPxYaAAm5MQjpYlqc8XodUZZ5yWuqfoyTG/CW2elkGTHHKWLHlvtpYB4xYmMcehh1R+E4lj7pbWAAUaMeipZpmW7PlsaTFi4xxOMZZTEQ2WrVlp+pbFehOH5mApa+iWVmnCoJYboxG5MUjjH06W4UljFAAseWTWlvQJZWaWeWNr+5bxmWSplvFTFFWWNeMXBJY6kxLHlk/jFDExUwUVhk4/5WWKMe8JZekxqgllyTFmIxLAlkgFaIkxbGHpmp5LkxtJMdrjF6IxomMUrJaz+Wa/lrFpY18WJ5loDpw82WLEliZpzbqWnUEQ2jGw+W9xMeGjFIBWNUfhnpbdyWGZMbPJa4CWz6lkEjFcUxhelkUjFPBRSG7tVTEfExIFMfWTEEUxb5MfmtZvSWTLloUpa6wm/iMRiJbgCW3Ylr/xY/Exd6MdXjHNkxk4lgxdF/Fhc1MRCTFA2WyBMd4jFLUxTVMZv7YfehbelrfxZ5qcWaMegJZcUxP3oSDjZHeBzD5qdTF+YxAKMR05b6IxW6MVAZbCp+NslvRTET8W0SMcJJbN4xPOMQbjF6GWzvlrGTE2+WV2linZbLOWJanCAJZ14xUJlh85ahCWKplmQJYnx+axMZe1F7rWH1MZ8THZSWJklmpjFzkxDAgdjTFZUxkBMe0jGmackJluJTHWAAFZMSy5ZcOWpTluDpYT8WwKlpUJZGCWkdloDpwUUx+SMY2JamaWWZMc/jFIBW62lkHJYZkx8pMScTF4h+sSMSpTFwCWrKMZKTFHExEUlv4jGPqWQLlh2JbgCWrrlvJTFCWWjglkpTFBXRqwoW5JZjkxhJMVMTFP4x3iMZ/jFk0xX5MRJTGQAANfFvLJbbqW8pMTiTGWGWUSlrfxbT6WfqMUdTGQAAuilqzTHE0xp+MQYjHe6WPNMemTHj8W/NMcan6oUxxZMSLTEikxxtMZLTEmCW0tMYKZZy0xkJlkAFZK0xTV0QLq61xeToUf1JaG0xv1lpLTE+iWQNlpzpzrox/RloOTEI+WyollLg73WW/lMePxZn8WZAlmAJZaSWwIzkBJYAWWIOnOYZZCCWmuMTRTGzExoVMR/xbq2WMWll3jaXbu0lMTHZYXmWU/FogJYI4xQNlmlZZ3qWwIzjnH6eOW35MSHJZD4x1Dlg3xaz42XmlvmTF3qWO8XgfxbxB+wWltXxZ0SW7/FiNTFZoxaVlvepYboxX2luApbfUxsSMbhTGQmWj+lpOJZrEx/hMfmJZtx+eFMQGJYs0xsXluSH55iWXNMb/pa4UxPfFhTpa12Whz1lEb5U0x4Hlv5TFTKW69MdiTFL0xz+lvxTGzaW1RMRwpavkxTVMZDjFROW7dMTpTFROWvKfsajE82WC4UaBXgInBxVlqFJavaW4SFnGZawGWUSlkh5ZdyWjAlq6KG03R3dQPTdGAzeLW9vSWHxG+cbnpScE1YWjiMYEjHzWWw/FqgJbKqWEebmcjGXUxDVMav5Y0BWXJYbAJZbmWMqMc2THMGWCb5v9pxpWW5ylnrdHOp+fBlgerZ8oxHIls4TFRoWd8liMZb5vmwqMY0TFyGWChlqerZPYxhbliIZaywW/+MYIJYB4x/iMboZZWExTxloY5Y/8WphlnsJZfCW0GMVCZbXEx/7lix5aWUxI3lj4TGsqWAAlqMjFtCWAnSIxTE6SWzOnAKTGX0xPOnAS5bpExk5drxjHAAAw/FuipbeIxqxMeTTFr0xgjMXQJbp0xwSlnTpaUh+gujqeJZ42WzBlvsb5awR3hlvYzFJ0xMKMa+paDSWRblnkTZA6chSlsoAALIx3/FlozEHWWOeMUbpY8RR94oeF1HefkIFlvPJbJExOJMUGn7R+BD/oRbo6RMxzOnNEzEWMxJGltiTFnkxlKfpgU75GWBOlm8H7bSRA90X2ZY7eW+eMc2pZN8WBmlj0TG7oxpgAPuTH0ExYjlsZ5Yf8WLHlicpaxB+5jlsAzEnmW7/FpBTFdqWX/FvoZYLIx9fFqDpzyMxfFMffTGyox66MTzZYiMxfvlr/xZArmPjMTmpwog2We7uUJZ4CW6VlrnjGFMxGgllkpaxIxk/lu0Zbc6cnRlgeJZFqcu2lt75Y8aWV5lmvTHvCWVjMcMZatYxoFQWBraTMx0zMe5ZYQaWGzMV0zFkWWxFlk4JZ56W3JlnSZY2yWzyliWpyKeWfs5tKH6MqWx5lkTZYpMxnlMQAJaDMxsOlprZZUYxRFMUUzF34xDUfu0JZuIxBIlvtZaMCWsClmwJYACWwNMWPjGFMxk5MbEjHmIx/S4ZrJF2SWqgll9JbxB+siliCzGMmWk8fiqJac6cDuMcAzEaCWUzMYyZYmyRxxMfEH6BJ+1+MfCzFOShOH5kczEEsxaJlswJZsCWmJTsAzHjSBvJNhwJZr0xZmnHczF/MxJLMeDTEPoxn3UVUZY1GWYDMdIzEwmW2dMUGZbuWWiJlnfjHHMxKBjsAzHh/gRLMZ2TFFCWQOMZHz79ExMdlvtJaGmWXJlkLTGViWbxMR2Jbl0x+hlmtFGmYxyGlv0ZYGmWnJligTHpaWF6lskTHlMxRVMe4n7YkOjNlnkpZtMxPqlk6TF6GWo1MUqJYT8WkFVhUzHl0xPNlnj+aSsxisllkTG2sxRSMWJjGJExGplgz1GEox2rMX0pYFqcE4lmwJbRoxVrMdPxYB4xU1MZSn7GsxarMSSjGDWW4/FkAZaQmWUJDo6zEkoxPNlmPxZkCWBCluvtau0xobMb5jEesx9SMcJJa8ExY9MUIJbesx60lgNc5ysxeplrqzEUmW3iMTXZZkh+UbMZUzGmsxOh1uazHQUxXaljxpZEUxR0obsjHRsxVTMVTHaZGWyLMQ1H6/2WoLMbizEisxjJlrVcFMsx+hluyzHikxjhMaszHUVh+H1pSzF9KWPplsOzFgkx1GMeOzGIKW7jlqszE1H2Du1tpvj0sxX1znOzEcCWVzlhyzHK+WpzMVppabMx7+lmvTH+Mxk/FlozHYqWnMUb8P4tt2aeMSjTFF2WN/FmYzEjsxYNMWOzEqAASbMVUzH1sx+2Mczpw5qWXzlrMH6lqcrIll0ZZz8WNR9sAzEvsxedlkMdYxKWPLMUezH6GWheMQuzGmCWE/Fu3TF/sxG4lgfp5o6W6LMTMzET4xHrMRsjE34xjVMVZpY9MxeLMaKzExkxB7MbxpbIcxJxMZXjHGMx0+Mc3jFKoxeSlsgTHLEx5QfmaR6lEx+qlkcjETiWDuMSx5ZD8WKglkEjHGExteMTcGHkLm07MQwJbh/gW7MQnjF/MxZKMaTcFtsxtbMTzZZ1fmG7MfYABzsxGIlg5JYDSWrFMYRjGoMxEAlpmzHqMxeSlj4JYuYxZzMaWpy+UxbGPoJzFOsxsplpdACZsxNslssTHz0xLqfrEH6XMx3/Fpt5a8kxzalmvTE0kxLbMXv1HuEhXZlu0TFHYxuwlkVJb+sxKFMcMjH+UxNpMVmzFr+WhnlnMzF/MxW/FszZZtCWD/UeG9Guyh5AFi0Ja0nuBTMShzFusxa/lrEjHecxnklj3xaJ0x88lowJZ1kOLElhxjGw0x8FlpCZZNxRfSkb4hF7rhdCdn8GH3lO7lLkuTGbox+hlkGpYXaWeNMZZjHy+WOhMSpjF/B+Hb0Zx5Zi6WlZMbcTEW0xYaMe4n4DvRdYli8zFQmWrVMTzZab4xzAlkVzE+IxHqfsSzEAeWL+ls0hG7xRWclsKTGj8WqAloPxbRKWQ/FkBZYtUxXDlm1TEQWW2QFgsjFDiWuNMSYzFw0xCNMdfFH5AW98tmfTH7sxZIltDTFyYxOmlt1JZD0xfmlmlZYGmWqAlqlZYtcx03MZCBaseWaHMWvjG4kxkg0TnH6BKWprMUAFa3SW+5Mb/xZUExMtMS0Jbv1BUIlqNzEW2WkUluWpaDCWClllIJZ3CWAAluxR6OCWMjMeXTF5cxjAljpZbZ0x+llhnH6GDRZllo/xZr0xzClkrJY2KWL4lvXTEeWW/ulg5zGmoxADMWfxbp2W6glprZYucxjAltXxbvcxSlMZAABrcxrilpjzE5qWu1Md35YwGWt/Fu1ZZyWWYAls7TGsUxqVlhMpbkyW2klnVJaf6WU3MeI5YACWm9VjaJamp+QhllVZZyKWpmtjXxYM8xbVMV3xZy+WQwlghJaMmWyPMTxTFgCWDuMZ3jE22WhyMaoJauKW8ClnojGuKWk/Fm4jGmAArilkZw4GfRfNLhN5bSh+hpMXzjG6Yx2Q0RJdalsxJJlrVpYDiWGDMd4jGwKWWRlowJbHWWKxMXRTFmcxOxMUDTHt+W2JMUAFapR+wZIa8THMKWoGlrfxY/WWEJMX6ugNsxlrMUAJaN+W3sfqujFx0x4VMR6TFCkxUGll5TFikxvlMX0TEFqcKvMeLTGmoxQ9Md6Ja+iWyWlsRZYi6WIPMZTzE78W5aljTzHNkxUjMXfTEgR+7NMagTFLExA/FlwJZ86WYPMTFjH5SWIqfsHTGu1h04YfotTlCW8zMexjGT8WjflrMNEPKWHYlt9jH5SWDfMTdP6rhhWYFngZaN+WtBMQ3xbA0xVjMU7zG1eWgSlvV5YDfRcMljNjHdExV9MRjzGs4x2JMbUzFG4x6Vlq+pYMYx0oll3JYlqcC30U3zFPKW5hlq3zEc6cqvMQBTGmIx7NMe5ZbWOW5tMaOpaGcx0HMYAJbysxgZMXeTGxIxd3MbTjE2mWQzMXcTFNkxGZMdYADSUxvtMZhTEQCWB5MYGJbAR+itMc2pbMox7DllCZZrox6SMcAJZn8Wfq6EUJYxqW+mljqTFx2W5/MVMTG98x7flsYTFB0xsllqyJYD2WUylmfxbwSW6Dlj/xYVUxJsfkJBbzKWsVMd2JbP4xv1MeIzGDCWXwltPzH28xCVltPzFRkxDzMSMJao/RdEtm9zFHSWtIlpj9FiBB9O4XwzFc0xYnlo7ZYqYRl+MVCTHF0xX5MTEJa6YxjAlt7paxmW+/MUGpZ3CWMBllupZCCWPsftRTEpYx9wll1THlaR9AsVrTFIBWRCAdNjFmmW4/MasTHu4xAkFsvZYsCxYGloAJas4xBclrKjEzaWc7MXnjFEUxs+XioLF/iWjAlqYzHxYRn/lpILEBsxNvMWTpYAMxCtMfOJa1aW2NlnQJYGiWNKUYtpEhgW+gsVfZaSIB0bwdjTGwUxH+MVY65ieWJGllxTF5qWsOlrVhFGMuLvlor5Y82WOllh/ZYGmWvBPnizFsYxA8/tmJbkyWtuMV5TH+IxsnMeHJYiE+MQsZJzHSaWMnMcRjH4WWXclh7zGm+WCnMZozHP0xHTMXYJaqcxSvlqlGFMSWBplnpzGmsx7IlsIZbwJ+OAlmULFUExprMUg5ajYRaDlkMzE5qcmDloO8G4OWU4ltiTG/2Wb9TgULH4cxeBMRZZ5E4xPjlmthFIcWAwsesJZtIxlPMSAJbxB+wxlmDpzAAAlQse1pYu7eIwsaSzFnGWffRrCzEGIxa1MZMH452O5QliqJbU0x6DMbZjHv5wVRMZ8Jac6cOjllwV7KSWLglqzzHE2W8RMYMzHDeWfblnI5ZjYxILvhrrZ9mWSglvBJYaMxPGlktjHlSWsOMemzGzCxA0loMy76OWIRlrDpaUh+b9HrmJaCmW+clksZaoCWTfFtEpbNIBgCltKzHeIxo7Mb5THuOWChljBzFn8WgSfskn7VpRvGMdBzEN8WKxMVLjHpsxETlvCLH+IxiIsUkn6+OWG7zgk5bJ+WeBMRWzZKYxZXMYov6ZExeNloITEj8WxdMfJzGT0xxyMRCTFG4xnXMX8LFR6RGlMVPJZKsx1iMXHzGoMxn4lm/uHDvmGuMfrjHVIxwAAOq5YCixBGMQkLEZCx86UbiJZf6WzQllQTHsYxi3MZCZYN8W1mMcAABfCWislhXpHoYxTfFnpzGyixyXMefxYOiW6zlsxTGU+WwE0efj65ExK+MTiTFEAxcAVjRzGj8WbSMWxzEpL+L65uUJbF+Wl9Me/TFciWmDDpOjGmGWyNMd0JbITRzosbHTEU+W82lmvTEcAxHRXvBjG/KWP/MXHTF/8x5jMZvpHTL+tosbCLF6ExONniBZY+iWhLlpGLHXfBAclkPxYxUxWhlvIDFaOOSGMRC5b6GWwDMVFJbtMxfTMcGLHnsxEeEeGLGEuW5OltnTFxixQxXtGLG6Mxl9MUWLG3OWW5MVJpZ8CxXlMUn5bIUx5vMQWJZQmW2bMcrzFKExnnMfgzGXL+HosTmLEY2WPosZ4DH0CWw/FuDjHeixGZMdRYiSsxktMcpjEHcxPfFjCLE24xc5MXyzHAaWbiMRwpYOiWxTloJJY5IxHYlgzjGvWeCbVl2LG/8xPYsfoZauKWu79v2LFD8Wg4saC5bDixmbMZPH5SSWxcfiWpw1ixMBljlJZpWWxgljKLEXmWgZMU3xY6uW1slqGLHIIWLOMfTjGCWW5OltGpYmIxZ/FsAzHI2Wk4ljFAARSW1dluWJYY8xWhlioAD7ixh4sQWzHV8WyR4WD8HXIxEEsYdTH9fODIljxZZXmWuelv8TFcUxzWLp65YICW5mUSGBb7Cx9ZMeTpYKUxQrlvezEtWWHTln8zGuKWv+lprTHMCW3qlg3jFLSWJiMayJYBeW2PNpKzFASxl9MebzHkBWE4sb0zFbixS2Me/THxB+YmMZWLHyYxc/Fs+LGBsxV6MayJbWkxElMVfhFV2eXDMQ9JY56WK2llK5bu0x8clvUTEWaW5alrkpbZSWTwlvbjHO+WFGlozzFC8xupMXnjGMmWv+lhPTF2J+LQsQ8zEIvWCyMQ+paOCWi4sVbTEhSWyjMfvjGiKWjNMfoZbIEx4Ulu4zH1aWEJMaXg6SsxcxMWxjFboxKRMdvjH1Ux1rMfEZZE2W+4sdrZZ/oxiAlpHZYD8WuFMQGJYZ4xcEsffzGOe+gVvI4jFA2W3wlvlzFOCWnwlgQpZb8xtBMV5JYU6WyWlkSTGz8WYtMePjG8SxhSlrnzEHkxuelmUTG/CWdNMQ+pa/6WUZltPxYmSW2dMVNlGqvm8pMarzFQ2WVmnJDJbEWWMpMUlpZWacxtMTzpwosxZ/FjXTEx0x3YsUtjGtixcPMYPxaKsxm3luDpz4nh6Elq1LEd0xM5MVlLEY6WK2lscpY/OWtOMROJYCUxTHMfUTGeUxyGMXuzGSsxrmMR5jGCCxA/FniH5xCW1jMbMH5S4xuSMWGpYs8xrpMfaLHrkxxqfluTFs0xOpMYBTGbeWsQfu9lFvCWAvMUzzFb8x/eMX0pb+kxd2Mb/H5YCxI0sWsJbtIx/GMdCzEocxczMVELFg5RwbjrFjbzKWxnMTFpZ4oA9Alpy5ZyJ+e/MctjGWMx7dMYUn4ep+E/FlCZbGcxQxMYYjEs0x+0llRLG0cxvwlryTGGMxcUsUeTETUxsWlv0TFBkxmpMSxJbI0x+4lpjLHnIx0MsX8LHgGW37MVhZa+CWQ/FuipbUYxMalkPzFhUxrpMcWLEnSxwDMQWpxcCWSmlk7zHizRSAIeP5biSxdclguLGfCWWFMWwYFy4xnklu8JbeiWAAlg9ZY39B8s0b+5a/SWxLlihTHDcxJksfzLFi6Wy4sfEJZ5qcK9MYbzE6sxpdMaypYEYxXfFqQn4Fqcv+lk95Zc6c+s0VoTE8ExWUsXvxYSmRmlMZRjFCMx3JMZxLGi4xehMQqZHj2WuXFs4LHQkxuDMYRTH4MxChEZVFYPIxuuUfh9ZvIxyzMekLGYiW4/FkkLGEfW9hMe4zFOEx0EQbojF3CWJjMXRTHk+uR/FgITGnaWJAwcFTFoExwc0dR9aVcxUrlg9zG0Ex2VMW5pa3gx3NMbB5Y6cxBanAxzE28xa0sWzTEHkxE4liDpxHiWE/FjgzFX0xMBltOjEP8xEUlipTEsExv/FhGzHlUxYEMenqEMDBzgsYwJZZ5Rrcsa4pZwQxuIlrLzFLYxe7lmSTGdIxP+MVDJZoQxVW/lnlFdyxSklj3LGAExX+MRSTFueWxEMTR45JUx7AsUUpb8kxCMscWpxkUxIpMSoAD0tA/53hoAAR8xMWlqnpaDaWipMR2JbxB+KHlhaLFZqczllntzGZKW7dltjZY5SWCOMakTEd/O1ilj6JYhoxn9lpLpaACWofMePxaikxFlMZMpbPix22/g857kuWlYls857up+4SMf3NF0gA/8sT/xaUh+wvLo4jEseWzUlj857Jyx/wsdqxaEExKyMc0CFtiWnJlhRLHhyWPsFvspYTGWMnliIpaw8xjglpMpbm4xh1Xkz5bF4xd/zhQTFaeWUF4al5Za4xdkMWTvZEKxaVMfnzFICWJ2MWS54juUjQlqEJZueWl80ekMGaL2PnlseTGzkxilMQcjFVIxvwlvEH7HIxer7u/jHg0xpqMf3LHf4xJSMRgVE4GhtF4cSTG84xQglj0jEtDBkC0VSREsXh5BUZV5brqWacsXQJY5kxuUMUfjHpyxQisYJeEXcxdvTmKLHUYx4cluwVHkeWWAloHzH9MxfSlopZGx8xJxMQtTHnIx7wls0JavSxTUsclebAMxVisYcLGa2WgAlvTLE6SW9uMbxpZmIxOIsZNTH4ix3UMdSCEJJhUl4fIVEci+y13p6dgu+WOKMU6jEPDBzsADt5ZuIx9Olu6jFNdhpIlmSH4Roxc1dpSjF7iWcSsboVHXeWFPlmkrFWG23LlmWJbM6cXUlmkrFydW+RlnmJZl+WWSsWen54GWlKfhGjE84W4alt6jHSLRuYlrELGKCxrb7tXJZ5qcOclpkrERox1otkiJbv8WOZMWkrGtcOcWlsCzE/x+EaMZzxaMh+gglgT5ZpKx5ovqT5ZFCWrSsczDE2ghstIaZeH+yWdplqFJaZGWPgsQJTFP4x4AljnJahUx+hlnfzG8+WRYsdPpb8+WSdMSaTEnmBwRts7JYBkxCyMeBZZ2KWdi0VMmFAKxW8fk1LGtCW/OMbfTGmAAJBMdbZbvmBGbnojZHrduzgsZHZZ42WT+lsU5aZGWzKMcaTGXGhkQfrb5aTx+N5Ma75ZpXhfeMenjEGGWvwsWIzF2KWt5ln0pbYSW1SMUB+7Sh+xmlkr5ZMCWZjlg3ZZJ+W7QltojEs2RIJoRktHZ+WO3lnjZbfOWJisdPTHckxnoscGLHnExpanAwJaHYxcYvteJaLoxB3HmApZVCWtqMRLZF0gAbflglZYdqWCFliUn6VyWXFMb35aajB3KMdQrEiUxHClnSrGwyxc7McFLEwGWFKscYQFvkRVJoZeCH4S2jssWwLE9IxV1MfgzFqQWUqsWMLFlIxsqsTRjHVi+VS0agrGc0x3xMSIpZMCx+fjqYLGbIxWqsUf5b9XhKdkVvDG6mhG8flcrFYYx9obm0tGCQh13YTSaEWkxHXMWJjHTox9XVrarHlyxDqsXd2GjLRESll8TEuYx0PlqzjHz+WXV4TfrbUZ+wHdKojEuH+8y0ZAI6AAAobCAAAvbCAAAA7CAAAjbCAAAU7BRqxeKYTuaEGgugAAC2wMasUqh6AAA3bCAAAw7AxqxgAAHWwgAAPOwaasYAABdsF724ZqxgAAEuwBasWGrExqxYasYAAAdsP4z6AAAtbCAAAu7BpqxuasZAACAAAObCAAAC7BRqxgAAMuwVasYAADlsJAAAhqxgAAEGwLasQWrGQAAgAAImwgAAFmwtasYAAArsJAADjqxaasbGrHxqxBVgfmDbjqxHasTGrERqxGasSOrGAAABbBhqxUasSOrFzqxC6sSwI7jqxSasQerFECeSasSWrE9qxSasbWrExqxs6sfOrFxqxKpAdhPBhqxgAAJuwGasZAABnqxF6sVerE3qxJ6sWII5Ttuh48E+rEvqxb6sZerHXqx+6sXerFOkBYqYXWC6JS2gAAJGwgAAPWwJasWmrFlqxfasS2rGPqxX6sTKmFJqxGasVOrGoaxPasVWrGtqxSGsWWrFfqxYsQdBrGwax8GsVhrGIaxyGsWx56oax6GsRmrEIaxOGsQWrFfqxzgNlWrHjqxX6sarRH1M+oEzsb2G69WGwflG3Z7B+bvYVsH4ORu7vVquQEJ0RHEwSi97iTO5wfkS16TM+KFUZcH6MQuylIaxC6cQu1tgby175eeLDIc2f79Rupndicz635+U0Dn155eveEGsbWrHNqxEasSWrGAAAg7C5qxYasQiJ7aaxemsQZrHpPhzsAFWrGAAADbCpqxBasTWrGAMRe6YWKH6ytWIMvuOrGPqxPasTGrE9qxU6sUlC61qxUGsXm94RqxNmsVeJZVqxbasV5rEmVR7wAFBrHjqxU6sYAADVsE+mEaaxzasZ5rGgs+EasbmrFZqx06sRGrGAAAW7BQaxnasQWrG5qxtULuOrFhqxuasXOrHuax4G0Z6dgZqxbaseOrElqxYasbBrGAAAa7C5axBz4c7AAtqxgAADuwUasTOrFRqxuasVWrFFqxiA4e8ABJqxuasX2rENqxaaseOrEtax6G0ZIxHvAAK6sbGrHrqxr6sWhrGAAAbbAlqxvmsWiz6bqxJasVerHpqx46sbOrGrqx66sb1rHajuYasUlrEFqxaasZrL7jqxqasXBrHpax46sfmrHjqxvmsToxGAAA7bC5qxgAAEOwuasRGrEW++wwHu+jE0MWLTISLrb2y+rYTlGrG+axYYfkExGRW2kYfqRjGHy2tGMZx96xX+bNoYJjED8+EJfm5tHbJ+dsDmmH7AyWk7VpmH4es+B1UVH56C0BezEbzJYZYxwbPuWH73X+yWYeArb/MRtYfhCxG4Tu4N/o2H4bges20bvFYE1RdpYcqyE1cWLKIezf5KfhNMXpKxH6cWcUniOz6gjhe9oQTjFV7hXKZOBX4UQejOMUJ5HUQeLO0bbVGFfhMCLt1J4yeRMuMf1J71sRUitu9mFa7R49FmwwGWQeYtFl9mEnshHDoe0r6O7RnbVqeH4XsRC0nvYF7A5h5HPmtJ6VeRNP4bHNGdw2dHEYY/7n4xaOYeRZG3OBYBMfaraycWe+0Z67YZzuENfmQTFv62I01ohH6Oc+qEfpi4G1A+BEfoLX7+c+s6IavO5rohzVIZbmHd/2OLtiwdEMR+NEfpC6GXohCLodlv5M/WN6IRUTHqMWPEftHmGEv+tAEa0TG7OBgR0T64GWNRP3IdDz56uhfvkReFGhuBGC4TA361HRSkfhPmFbtWvk4USWGVNRWkfnMN5zpuGmwZNOGZ6xgXtpGBEkMWsLUYTSFKnRwatmadG6oeEatufyH2CRX/AU5H5AQRREfu21adgxqQUf9rExzhq67q7B4tBRJc4QlSHjZu2P/gFH6zt+manoL/48x+x/AX21F9R+vxYVup4Alhf2NmCWFsXRwuITutai4h16nnNH7K0xBYkbLiH2hRFJYXguGJaOl27hDBFkI+p4USyIHnhRCBzpeFGULhILFs9u7CdRPiETdH563RB6tpoTbu4hyMfjKWFfR+2pwTvJbABBg+lk4zEenBFO9njrHV3R0/frXdEggBNIvsttbxMxFf1i7BH93RPvPjASGWkeUWnifrHFRRl/gR787QEhH8EYNJ67iwL+tqGj5R8+mnZFSR5x8+WiEZOzF6IRhpHlQpHox+lMfuI1H/axfL0V1hGRVhoAQVZzEZVh3ZlllWHVOe2Y/u3FGBIR1lIbtAEH6208UbInZ9cxk1YcyGH1rWf70X3z7YBBvF9rgEFSx+qCUaLH49qR5LFhRY6WfRpAQS7zHlLRp57lnxb4aRmGfmmBajPBQrVtfb7FTWrSUVnxZoCx2HYcI77FUhNAsey8HicW1eXhX9Z4IBeXVnfz5v1hD/PmZGHiUhxKUWOA7W7hIuthJSHxO+NO9ib9EH62zLVnaNEOBBkqUZXz5J7hedFjAV6jYRUqoZpSF4C+96gchxaU6RdUYe6lHKMeidDkZSEVvO2nFsmlGzdhiVnrY2H662E40dWlFx++ci/pq1ZRNhrIsZbrZJ6Rn0YcR0G84RG6UfNZ5QxhYhsRBNHfJ+3lIfelHydBWE0QQ9aKMeabviFSE0TRRHznEbFDFe9eEeuLHZ6213waoZFN4RUU0aJSEhZRBbVvcn4IYBGM0ekL5nGRuJkTu2HMvBJVIcwRG/thJithKZFDgxipkQ7NHNxhWuUa3GGeyx7cYfWeEKAhFZ3iQMGJyxOW/umZENOeA6fh2eEjGBrH1hERGZmRw1IUwMEEdhBgIQREFsDBMbFsQR7iQxZEQYAEELERDfrrcL5hfWd2/p4bErzRUBtnAmEY0h5CsRQl7jC2nkMdfNGR/OH3FqTSEuseexsdDV6S62nQwZTSETp+1NIbCCHYLRB/vpSCHMi+ASsQdDHSXhhgLhf76n8u+6fvErHBRBzP1n1ZHtdhXSYZpeHRRBy1kSLSF6XhnPFolEFTKxvRoTMrH+FRIvFu+n7pkRuUQW4tF0B+f6fiN2EAZ+2bnkVEGFueS3YX7DGxi+a3YTktEbdhl5EUgz6a2RlJobqMHoM+5cMVBRFHdhlS0T+RGfkRf5Ed1eEAURiKYbP47AURxJUTSaHLi+bbnrgjFf1e5S0XibG+0hbH7qPIiBqxn3YdgE5uH+ghNqkDYwkB7Jse4Tbvo2oSNmUqLJE2AWVLdRFcmxyTXs9RFpNeOQtgQACpA2zEAIADYdsR5y0SADZ5Hg4psZADZGAAXC8FSTY3Xyn7njxMBIsR1sNlIE5GQ2ZygOgfCyTWHJsUQJ5bw2Tq1nqbHfQhtktl4DYSmxMgtscLbwmR4C0RNYEVlRJpsSQDZmmxDwtowDYFmRKK0QHLZaC2hpsZjREWmx3JsXitEM0RP/DrLYK6mxZzUfrOH682YkdhGpDlPeVb4OkAB+mx6IkeFqoUwhoZsZtNb2mxDfaOR54BOR4xDmGbESmxp7AHKJ5TuAgZsRo+CRmxdd4SEjauA2RpsarREGmx6EABKbH5w2j/1lnA6a0RXJsUWbFZwO6QTgXqpm2BUEzl/jaRA2CCYTEI4xA28QNl4J4Tbg8k1ofJGhA2+QNk/SFnA2xAAMWbHEsR5aAIHRHDI2RNgS2pxcdSg4NmsjarkBL7miObHaw2HEzl2bFtA2seNiME5IteOtADO0CAAAfIC8vqCrAEabFTBOykNv0xEmU2Aa0eCgAeo2sjgUnCHV0RW11ve3Z10RuVGB8DYrA2ewTmbpGEw2f4kV9TZ0UgxELprYFRoWbYNry+pJQOIFFrBRZnA2aanqPRGCoxCqlkObFIFInELi+5pVphcjQae9CbE2vLXm6iCLmxcZNhKbGbQ2Ls3kvRE2QA4INiwyEW+B8psXCDZLI2uUAIuK63xBrFUVNRa4825IECl9ZMY2w60deQB4g2zoroqL7/CeY0DqSDbkg23XnnyKBH6Y5INu53bAWxDINl697AWxrINhngAgWxHINiutF2i2VUwWoTayg2hLjKKLZSrmXnoEyMggMRe60QzoBeEQ4ENo1jaii2NIjkqDbHI2SULhNuDOmAootoNRQ4WAy5sTqlGYW2eoNkbTDQsOeDEYezZPph1Fsc7daLfaootm2jH/QO+oTrVC4+7yroNvlrFyS2GLRuFDb/DWbDEX6DZ+mAtpbkGDbgZhfBNnBt7C7AUYNsujEVSUIHNqVNbhw2cKNrW17iIhCoVnfzZ4B2GpsVFVEFg2+hNk/gBNE217NthmHlg2boml+zao+ebokVkX6Ng21TIRlVG2SWqDNh2DbMM23YNpki4nrmH4rpRmHIxBhpsWsB7xJBIwNl3wIeMRV+TmSHQSDhEYtn9lGoYxbMFnIjaIWxSINthjH22wz4NtXSBGmxV4NrtDZbA2EpsXZG7ng22ekV9rHiZh0Vsd+DZfA2cDNm0kFlQ2nhoBKbG5CyX/NolkHcYxDoQXuAD2mxZENidTbateqmYSWq6RI22XNogABVWx/VsZmNC1MRtudnqjYk9WkckeRIADWxaAAC0xHDHq171hKbHwQ2C1sYlKEfMh9JtjNbGEuM5gkeKp7xzOG5seAZHJzOG5sRKbGLs2y8vl/Lbhbmx1sf6pEyBhGW0ZdbFgiAUlsVkOGhYxmkNjJDZkwAsZsUmowvrRBkNgJ16XWxhgumHJgc42JFsXDrHSQ2wwNvKbF2Q2wwNnb1FyWxRWMfdf6uQ28DQUqoYSmxwNsVF8IqdegNUTXM6Q2xGGQeRIBVWxSUNijrE/8OoVNmNbGRQ29kNruqF5ZhH+QOFDZY2x31sTzG7SjWPhNtR57bU2UAtszNYLgerkgJcwDLmxRpsQR+GtWxWNscqbFfOOVlsbovC9mxuOsTK+AM2xMNsXADaWWxe0kRUt4ZmxF3yOTVE/8Otw8H6bGq02l0QSyiGx0qE1sYf14K22iTgT+EhrWxDTDsTrEfw2hBAJVbF4bgIFsaubHzQ2fojth5HZ+C5xtnDpzK2xtFsaBbHq2xYPXjtDY3g2WNsW+m5mCRHdbtzUFf+e4gyIZjYSmxl0Nr+F5lKiojgJCrZ+fh4izqz05IAANtsbEYRvQ2dkQDdDaWO+RCDiKzbJmxv8NjYr5unYBZsciza8eeDwAH7bHww2p2YflbFY2xcRNvlRbAIukdsRKbGiyRpvnlHbH+2xNU7olzZnaeNtUVmZHoaIYdsYDDYc4xgokVOZHV42UlNhgADP/W7XgfhyH+2xObEahX6+2xkAAPT4FXw2241lAzZRs2EpsbL6g7WxOAAFXbFDE2cu0ZYTZDs2HBQLqbE4Oh7MQB3bFGmxHMNu3bExmxkpsTBMIVJB+nkeiDbThSA9sS2zZ9sRAuseLDZrh8ptoerK6N/ew75ls25mQAEpsfoADiU2wnNmLzRDAAY2tqObEe4xp7IbgDZjmIMNsVKbGSA2uItpIDY0SA9ANtxba7sRUo4bqiEjWxQRNvvbEwTCnVNs1ZKYQ2p9sRMDbgO2YpsRKbH022GcNu5bG+7R0kNrRYCLmxkpNlMTZymxXsNsXbFdAsu/NkXVGTi2NcNu/bHNE2rNscAZEL+BA3EUsLaIAA61seIzaJw25PNjf9Zd82cDsQPxAZw2M9sd0TbgE2PmNojjZy2xv4NrO7bH/W6fQZ3VEeIumcdswsTVw2MvNuA7FJg2/PUc2pHQOx5gbnBDbzWxmY0K3tGDpWoiNoLuBgWxcxNl3tG0Y28psWPDbyTWdaQZswEMM+HDscmbG3Y27LnhvVEDK+PWNvabGZjh+ZsZw7EOmxobNtDB4JM2fVsW9J6h/yF8Ntw7FXw2zsjrI7HcmxRToWDDYyAARpsQgTHpKWn8NujpxZ2xxNkbbjY02xsykeZxHSQ2FhmqgAB02x1+0VAjZqUIEpsbAjYOcRz3kXcF6rJuBNsRKbEbzWGftidbHkC2NdNiKr460A9bNkabHEI2kWYAJqBjWxGQPsw7H6EAYFsSLIDdU24BkYKlaKw2FxNl2iFsI2+Sbtcea+2x5yDpUuDnG2RpseqlbTGwTq1s1F5BOxWNsXLbEqzaBXEXHbFfTWsk1p0ZEiM2q5sWuiGaI28eUVWza6I24Kbllv4f82UrgTYjYO6xGKbpjqiWI21TsdY6w4u2pNsdq7bsNRdEfq8/5kMh80AM1dirWx0GQcY6wgThH8NsbbESmx6rgfwdGQuhFVsQE7F9ZBF7NtbbERI20J8KNbFGmxAKtk/kDC2xVVsSHbG1WxZpHgsxoFJwKNsUwN7Ooyt1wuM7EbchFUlFkjYjAAczsdQBGRKu3EFlLJH6VuYCjrtkEa2RT6IZo/6BAA7KNnujgEuMoSNlOoA/bWxGQLCjYHU2061m9zYbUWQQ1iMTHYKOlyNmWF7dI29zsRo7FJ2xFDNnyb4XfIy5sZhHbrExcqDs+lZ1Y2CHiGZtHVFOiyNgC7H6OxdcNluiBGOxmEdmDyFu02ImNhJo4HI2KtscJbG15h2oPrMja/OxsLsZTjZ9oAJ1sbt4FHA2plsf8NYx+RyKNvUQAwuxha4cVpGN2x4BNnpt4p+RTrABNz4qKOndtkdTbX/WXsNkwLZB2xw9NiYTK1c2rzse0dGJOhrpsXS7Hmmxjwtjhr4/Ox6PjglY5tARRuNh0jbUuxG81r3JHBC28psTcz7xgQHWrqnrGVDeBrNkYwB52xBfES2uSdo2HLsZXxH2AA8rsQFTa2C229NtSXYqKeD/tt426dNBo64ARg5PSARgAAAtbH/W5xbjNbE2OxslNk6jYTNRU04Wq7HB5BQ4bhIJHVo2CtcGp/Lt6AP21najbl7WhcrkJjbFqeSrse87EyM2nqNgWbGhkx16LjaTbmBuhVALXK5bcRFqNj67Hz425xbh2kKHA2ApApUuFtTW1rsehHZ/C2m01vMzZvOx9SNhtRaP/WXqrn3qC6HWjDNpTQhKw28psXGLYpVI9GNrWjZ6k2vFRDnDbY36stNhYZrguBvcToaIAoNwsRTFpL6AtRT2ITYtZiuxMrsS5U69WxYDsVwvBZOxM4vPnrGjK23bsYkm4bzWL5NtfbH9ux+/NutbH5gR2UtLc7GwuxC/gRi1GfYhF+QSkTZivQ+UIEqbHh02F0kfQ7GcFQLeNHm7GPOxD5MSXrEuYumLXn1jaKmxNapEJjZgE2gDsTgACKuxFoYeKp6gY20CNn1S4S1uJ1NmrbGK8230AH6bED020IAFpL4NnIMGNvBTF4ux4rsYWuE4Y2LDsfMzaYQ2phuvnS63Y2DQNiwLZkuxV8Nnp6FQux+LsYWuGEux8psQPTaxKufyoTNfwSCRCQkQMqyCGgYmNl6UAkE2YIAOe7G7I2l7sez7ykWxrUPgxTbIChbCrjc7Fbo2iyNty7HLWMymNkPUGS2xVZALm7G6HWU6gAW7HqUx6INjuzZY2xyezszzZo9B07sZmNDxeh6hQU6takk2hgAIubGyTWbmNrLIAeY28psZMJFonQNwwJAACRWxgTNkFjZ4nQY7ob/jZiUA+DNoFTGQm2p+kUxTZJ4AOWNuYG7mBu17odG2ADmSV1NsZq4Ri2VqMicJElY2+TsVm7EQTWuVMbVjY/OxDWNpUDbNY2XDbq1jYjeh/2NtC7FjuxBLjAEDYCOx0KNuy55w6ohgABXtZvJ2hONv8m6FBAhgALXK4rJhxwUWyrYC8+Sh4IF6H0AA51Ns7jYgWxq2NvVg4bY2kTIblTaWi2WLsWrbEHY23bUUfwErQRSG7jB7F/uxG81gXTZY2xN2Nm57EDY2usJmK55hexSajCxlFi7WxCoRh7GrY2l0EZ/wFDR+cxQY2rbXZByWoF7DYvUxna1m9TG6g2o7sX87HJOc4l6pk7ELa21NBOJTYI42M2rsjjYVregdNgB7Gz7YI1Nruzb3OInnsQTjb8o20uUgpdG/uxPbsdGNT2uxtHsUlk7oLhp6liCLa0OxAmQcyQB+g2ntLv60GOex1GjkAlBHzGmLXhgTYgU2bqELSjb4aOTONu87G0o2t9Nko7Gy426EdnDJFtb44tbkYwDi42kaNvzdbBY2M6vhfr5w+BWk3rfDaoC2KakZ9g4bexcHsa17EnSRQPyBUjZ62xatsRqbFFexEXsVi7H4M2z80Cf9ZnexnzNrZ7E4gQGbsZK9EK1wt3sYm17KXej3sQozZ0excpQQ6FGUlhdvoUZDYEHwCCjtnjZIOxx4tvpW6tuxe4AG5jZS4OqW+J/xEzX8VeNpJTZn42nxNr5U6MN2YzDrQFE/B2fuNo1jaXMAldMZtH6OEOtcrsKja0AAtcrqIZHEux2QOMLjZi12EBNn+JEEihCbNh7zawE2yZwlA4a7w+DsjomLYXSR6aNoCqH5hRZGAAF7Fy02VnNpSABCexUq4CJkImW+8hDjnDbU+xgf0SLb6c+xaJNk06CH5uwTsYsjbgSRAVNvMw7dmxHHtqOjZjrgfpgCfTEk9+RbsRr7GAsAWvsVxJEF2xHd1ungCeTaqIQbqzbBBR5PsUL7Fm+x5ItrADae82cBNn6YAIE26ONjxMCb5u8NNkuFGZKQNxnhH/Ai9+OuTvlTZ0NBzEkZ5rZxMACDsfctYt827EkUENb5w2dvUSMDaHI2kDMe6KHUiBsDMcHm7q4hokkWrtZcwSwN4F7DZH2xyKkXnbHHU2ZfsXKbF9Wxg7sZfq6tFu/DNoVdYmHeRlNnS7F9Y2DQNgO7Hbux0QAJ/TZEi29DRLcPBQuOfKNnIzavMGjAALLdE64hwBLtzbEMEwD2jlybEnuxq5FuCxaMvCgAAFyAA1sVX6GyE2JYoVJ1HKE2B6tq+bHEs2sBDl+bE6E2CLFoPRGu2xynUdbdEwi+nfsT6UEL2xfIjqjbF5U2zhNtUY4EnQvdNvnjYF82M2bq8waXmxVaNoWDYJ6RmvgTy4FyDRVA1mDkEos2WNscapGJZBrVXjX7EUEOmMNgi7FISeL/Nk4TbZAA/kADv6Euze5+5r6DZnE2p9seUj58EOCcLDaWFaEu+RNhkDYegAV/sX14Cs2xD/YuqbHNE2eYgYAABwgO2La4SRaAcQ3YHuLhM21qOHZuiR1SNlkLb6aeEkUY0Tad22PrQTRIDSxB4/sX0TZAm+Rd8M0Ni5Mxn+sU/kBOkuWAcZQ7EhOO/tNnvTb41OxfDv3kFEgAicNhpQAbE23wNvKwCfuxkAAKkDaO0uT+AGppGIOxhxNsmTRFE21/sWrWEEShpzsXb1EF02f4kWhMTxYgYvsaeTZB+xGJ1nCJK4AodcNr0jab2xrLsXqTYsqRTJAELBCsMRBzMThHaoFhEjbpIHGNsynFDuhoiUE2d/nlCTa1WxXAYaqYTcAA+vseFTZpIk8dsUTRFss2/wNgSTZoZOi5sXiLbuE2gXoV3wIX+xZJNsUTaOU2qFgCjH4qBxKKALYHHxgQZzsZ/xGl+xndthlzYZ4A4hkRabHGShjJDnIHF4vWvgcWUU6CBxQC3g+Tb6U2j2RIvU7cSAseNkdDZzgAreTsQt5IHOusKkMzbUl2GKXnkHFPdRcpNvH9ZRuxndtg3bFE8RQBsTEHEeWR9PgQ3ACr2xp5Nsn7GnUgBQcbUHF772WHsTcuEZjwTQcc4HHgGRRj0Yz1HiBxMpALHjZ4SAhxchj9hR42K2wIa9ahk2tgAOjjaasxFUlOIHGGex5G4KgACq2xdGLjAJEF425LbrkW5FqRKwcWb7GSH2NZNicHHo42eP5oQQCtk2OwcfrbHk+xFckYS4zo42clsVlUEQGxjPUZ6TbCGAyvUbyBCLmx2bsYZ7Hpk2uwcXL4GJk250UeT1EbVO414ED7F0YunZNs8HEsrhDAANMHETk2/3EV8ADCBxiwcae9DcBxqwcd6TYdm+n8kRkW7zk2OMUXSfaQku1gcbH+D4aOq5NvN9Zbk2AwcQYP6HXOrNsXXMilBx2gcb9Z5wKR1vUXT4GBl2hnoN3TbfbwZtsaeTaFGoekAIQI6GwgyqPtpvgsqOiVsY3bEyBxBxNrRYDoHw8gcfz1Gy2CjvsQC9Ett244EoubGwU2dcNihTYs+xRogICHHYkOSEnqEHGRQAndthoHEIU2FJAA0YB+mA6WvvUHFyhx1FNjYU76Bx4cNv/bG4SRFItuBFh6ZBqDDv7Hb/yRZzsdxpKRSAFxAJ3bZt+xWV1gJjZRyRNgcW7U7HE2rNsb8HGWc2OcNmCHGuWBIK3ms7FI82jNsTR7GDuxFtsbLc681B1QcX8HZFBxvbsZubHHQ2pNwRZTaEJ2NR1t3Tbj+xitNiVbGjPR9QcVzDazTCVR1tCACpA2egcYCwCudRj25IiY5RhxUsUe1l7jCuusUH+JEcexujoeQADMo2WgcQyHGuA2Zt0ZxS5JxRtb8N7p6FrhfBQU49bDNuQ/VkAtYU+xfpsTr7F1k2fnMeGR5yrewlFlUpE+yhxanqijbjXg7YcRxDYOyOcCdkn7Eb2xbrAKRza1w2qXMRqY7GreUAQbyRahk20YcSOdis2xDvsZ0VjJOcXTseOJ5tBxbcUcXUF1vRM1kYF6FV+xQbNhATZY2xIwNvIADLmxKlDs0Tb+UucxNnuHHsuxeu1mD7F62x3mrkNb6yJ291NvRsBeexnvrkmbFPKRIzAgJqA0dA/AAOn0Fts26wtkgAAEOxkckbB56amhYNNjQNGYVO9Jtq/+AGBuP2Uhozbe2Rsk1tg0GsDR5VlkN7FY2xO7NvLIjLcxF70RyuZFuxQ3sYipEemxWdQiDp52ZEiyNs+HFwRxVa3pCBb9QCYSNqHbHkBx/CkJINFs023fsXILhLOxZJNjfjZA02iY0E97HRAA79QdDTZD6+F8od7p7YnQ18odhY6Z6RmU1jtjZK02xEYfzECZCuUPMffLYEyYPPvLrTY7Bx+tNozQBGo2AvNt0iSzBxztNprJ4AC2xWNgF4GK02XTsYtJA8RxvltpfTb2+xzDgfbTYmcuedsVw25e02gqNgHTbo42honv7TahuxcjNnS7Fx+xREceVZamPgcujuYG7zQAcANoxW4fc22rttSjZvk2HFbthbH/cR81sT+HFM2R9bAIqRZeA26t1i5U5IBh6t1kVlFvE+XtvrzWEJcWC9hNv55102+vMdRY4aPgEt1mOXahc2XANliTYSCR8jseVZFZM2uJZhPb7OhxnYNtCHEBdhbn0bpW7YbgzocbN5D9QCtDZvIACxuxVW1gT7G3WOursXLkHWC2PIcVvTaA+xB9saewByM20Y1OtzZR42QnoSaz4mlAb2Nl7pSso265ntfTZZ+xwF3jUEDWuxZPNpQAD2uxpgAI1HFtb4hgcbbQBIAAEw0VXzHiaRWkvs47HzQApUcefZHqx+oygfjDbQM2c0cSVHH49Biw0dRY40o24wrn//LWzWiHNh2DbzRxyFQaxpHU2xOwcfEHHY/WRtLtHbFIg23GkREAB0M2SQQZRviW82jjNj/TapA2C30bXbHMo25gketHHP82qCjvwzYoI2mENlDbGiM2f2yLzDZNOgZMAOxjZelAeXESTZA5i2tcrsgABgWx9dEWG7FA2xaPsU/xH202dq3v7jYjlOr7DqsTZ+mAkzAD+DY7c2w6AGsjYrFIDVscqxCbE2JlscEAJ2M2n9Nvk7HuBxUMcTJ7ErM2QdscLt6L42yLnhUzbCGxDoQR17HOOxA/NohzYSCRMbsX8kF1w25AsU2G4/ZSryUWz9EuexyWkfvWGUjRp/Nm6bHXuxLtNuKp5cA2SjsbkzZm82EwABB7HuBxtrsVbPB8+x/nsYXXYcOxb2NuVpGqOxXDsWZbE1aRQkFqnbGIuxILscY7FKCxgNbvrxFB2xzANpdHH1ux/U1jNbFguxkWEULHFGxxcYTsnbEgNhAfFqo7ED02MANjajY5w2hN1pTHGYOx2VgbgSB8qujgsWr9GGxx4psRr9EzexTnsSb7GkZQ9dsWkxwIeRyv0aaNFGMuT+QDNbGZRxHzNmw4HyZ2Ktjn8zadFYA8/hZbEtV2U2YS+DY3aRLo0XaxYpxx8YceeDaJhxAmNsmHHEGRlNCOmHHqD6mYcSULHgMRF7AGJjbXmxMOkTAV7lxxBLNpXbFcdSUY0dfU6CNhYUALObGmGx24mDkHEq22rLVpxywZhxSccRYbGB2xescRmNG6UhYCDrObGUhx9ccd2+BSs2b5seOjbV7h39TiPHHjA2XzLgaHE4AA+cNiENattBSutmSgCG1BDMoeS258421qoQazZh+xjdTgW85BtgO4ABazZkU2y5sUrTa/g29KANazZshxZ9HsMHHy6RYWNlEQAhOxK+gEAzb9MRVccdULbVE20AccUTYzbRfrNvkQIBs2TFNsYyGU5izSAa9HF/iRrQcerdY90Ou3jtUT5cmxmbNrHA4mqIubNi3Q6riYnukVIzaAWxXhsa1bG1WxdhXl47Hds28dsQrXDKRxL7sTNfxQTWE9sYfbERU2vhsagnGEI2bjsZEHGN2hljTlzhH92xupsaOzZj2xfpsSAHGaA2EosQz1a+mxzjsafwCcROcwgMuzb3mhuTYTsT4MJxb4cVEjYLM291sQezZvWxKB4ZAy4POxsFCKw7HXs2F6USdd5u4gXfkqtbGd+xwnQcSy4sc2JlsTLzZfs2mDDsI+CITRh3XkwDFFNOwZeCpzaE+xOwcQxzY5WxAVIX8T5Ov2FPNvuACLmxuicZlbECxhxlsajJ6d+xugMRyEFR62eHNo3+BWJx0JPichJoM2yEcXZ0FoMOHMYY50HGC2f2UX0HFGJx3gACYnEoc2eicZ+qEWJx8kcbR7HWJxKyfmQw52JxwScXX7GCc2/pACMja7c2VeNssbr6+xsPVv3DqcQqDrsdzza6xQmgNojjZIOxG/AF46z6HhbxPj4nE6Jx/icYiDbec2NukLpzYC82Etjig3CzaRWNsTGzbI8qOBkTQ2aV2xjuhBlrbH+x5LABg7GUs2HONlczbvU24BkdRqHgMOeeNtF8h+JxnvkUUnE4RxFXNv5zZ7rg4kccnoSikWmSccvxAYWxVVsRLzYrbA/N1nxN4sdAjWNk87Fjg29k0drHHhi2qWnAupHZuxKQcfk7HIRxwaUQJjbCJB5BMFxbYFc2JSccVza+TRqmoccnH9fO1XNmdHEKNB2bsfpqGFGotLYSHZ6f+W3ocV35LUex6ycf6HG8gQ8zDhg7FmiApNyjcw64OxDmADA54K1wHK4JS75Yxx5jNh5jah+x4F3iBzYw2xDgABSQAjA2cOnHTDHPiRrhkb0eEDGcTScSJ7HyxxXhkZAJBYF2OFsWIDaPc2lLNgN7G0+xyqNiENZXJxbqNl9zZGAAP3Nsnq6vXAzScZInEXEAm6Nh9vjgxx923prYxumxpIQUJ7E+rwwbThvZ4r8K+dNmPJoLW8uedqro5/bIthTtqoD5OxAa3noACaA2AMcdq4F8+hgXofKgDHk26EdoVzYqxxGVIQB563XCdZNlw27g82GuNjDzZNJx1EcQjzbrOxrScdC9YtIW7IgMOEHgfqoF1oc9aNRxAYNh6jY/nk/KNh0dY+02FSNoCnGyxxC9Nqf9YSmxdjQB2SDLBBVPNvCHEphx5+Nj70Fx2BduNjLzYEuMtHsV2Z7BOOR5AM47FJRxqkNiyUBew2f2UWUnEyle9zsSeHGxFMqQNtOtZq+xmAAKkDZSoAdfsfLzb5OxY14pLzaVLhArbj7DYq823J4cnGH3ahWuQOJTZYbRTkcb7TZ5U26ONvf5T682qDkTXDbWaRDicb9LFhcu/ujjXxEt82VykT16FJBBrvNrQnFaBxxYcUDTYmexfKNjXxG6o2qaNosk4tJxHUcRMqqTexnNQYbK7qpx5gboj7E5i2IrTiN4FB2x9bscN7FEyR2BEAiZFxy4GAviBuB8o2frsWm7ELexfQcdCADF2xvlAOcb5uTWXacTaJEpgxz1jkUIoLWxG6cZSnGUs2bBgXgHEZsRenANajbg++8s0bbTas82qDsbSY4UEA+6cQOnFALWHlkVw26QsgxeWCPzbSoAHgcYyBD2c2uJgIabF8mRhssceOEZOx0icdenFVkA5cYSx7GzOxeacSsDYlpxmENnX7E1Gx9ssbD64YC2rnscZbFZhOLs0QtC782xCCYbODGcdk3zcLQnFv82P/XsDJqf823/NoML4fyir7sXNHGYY25Prg1fJkVOJAwZALbPpxxCYc7lGE+u5+1n9RGixxBfNiTHEoC29CNk8tboC2yscRB7F8+usPsQFUG1Rx9GcT4JE6m2ZoMIknGTuQyZsf+nYCOxDzcjinHJXmZhQPXdYfJOtEcS4Tb0RxvtNrQLbqBxtwce2TaQexG8MW2eEZ6hcGcVwvDQQx/DsVwvBjyxbitqabHF6hwrsXILaVmRgxsY766Dxhm2AbQMG+uhkgtkHbEGZxegtrPLHp/Oxgtp67GWCRRiceXtbPqRywEPq7EpiRMrABUjZuM2eaDg/7ZWuxxyNoNHH4pxRLsWfGEujWV8Yfq7GhC2X8sW7756Pgp70M8552QAF7cIB24xZxobNsLy6pC28gXn6w7bI2YX1mKbF0JxCCse8ACFC2PWNq8wYbvOXZsW4MGhs2NQtpojZCh2r+UfNJHmdhEOUh0LaxmhxANt0LY/6hxafgfNEdRhOEkXnbEJZeALgI9p7L/R4wtq+bFkZxYBUcCrb/2xLGcSEnFeCOXZscWbHwWRgrsVHzbkWRlNEX5HG9Zx3ANnvDbhdhlmcf0xF/zREmTlI7GWmxxeoYaIB2e2Yh1hXtaggA5NgQGfaJdh+pgcl2HQLRBkQSF7H6uMMYthV7GILRPF4SI7H0I2z/1swDaiWR54cUV2EMBxFxsV/jZ2Wx6ONoFd6Ei2npsayDixyRTWNriLaKmxwwcd1jb+02qzUYWEDJpxlItreYiEuMEHsVubF8kRowDqjxYl+xfvhNj9Zlmwp7AENDHGBx8XsQoDbQRxGjsaiWYgp2C+kYn7GXsAK6cde9bOhxcvlHlTY0BxVVQtDnFGyAe0MQ654MLRnp2KnbHRJxEwAE8jb3OIZMAHnjZMx2IdsUeHGw5xTooVpL7HI2hLjEWqHYWx8yjqjjZPBx43scpjZ8xx4Krk0zbAuxyLsZcwDQ4WlxQBTsKU+xtuNgSdCZc29T1mLnHIRxOdblVZHsi2cVoaeHGMWx3rnkObHGeAHC0QcihvIuzsABKLaHpx9/vvkTYei26otn1ZG12iRONnxG6z6gOuceFEG30WmLAGqLZWi2Z6fpstI6i2XP1nqLaii2yoIRkgKpmxRuca2+7mi2yhnoxbHWi2cwhhrnGi0hEAzk6Lb6o2ZnHm6Lba5xOotuotFNM4cotsGRFXWRoZESGLYH2x5G4BGLbEextpbkxnGpo2FbsZtHbz42mwYWjHaeAAJPsWmLY/WRWYthILhBc0sMDhhkGvjWyzNgUnDRpxWrUUnV72LRVNdjKHEti2LvsdIHFMA2nG4lYYSawxhRUdrDG+xxbYkUOHGRTWkAACDHHwAAhDsf4tFudWPYtlIJHDi2WvjjCbHlx2LEABKHFTi2EQcaLJHZpxqcNoWDZjWxQH7l/HHDKsgbNlNmFri2S2nt5HGAWxmKsektGLkR2flqbxFHi2hLjOlIA/hxPPNn4shQTW9NtgLZEImhUJWsLZE212kWYPUo4lWh+S0eXI6mrg6TPpVaGbgh+cQSCiaBWeqV0GP04qCRXDbvLZEODmADsYE9Yp8OEE4ncRiiqxvyYdrZESqxlIblpnHGxxgjsSfSFolRbpsQAXF5exU8MUILYSmxIscfbTaLZx0/sblpF1pxhTNpz7H/U2kgAArHEBexj23swLYDwxnxUT7BaqOxg21tLw5VM2fMcTgXEymhKobr7HGQFxdGcdAXHixxQYNnAXH+kAMscYgXGopxfnsagXG0uxI2cfEQH0M+mv0WqNHWhu6mccwDb7wxtklg7HEAC2Y/Eed7EuxxZv1m7HEQexHsceLTYCQhgjPtarF0S2bENkS7H0uxnGcYtHEhgWkhcfKbEOaOMhcUyM7yFxpwkcpnHAjO3rsboDbWo2tqNq7Db+uxHZNkJjZb3ettNl1zbpo2y3Nu+nGNKeyDEm6bHfE2UqAAQLZwOxP4cYbK6QsgWgcVX7HRtgHgtjIz5jRB/A1sjTZSFxFrTpMzb1dWrrsQc7FvpxonEUJjbKFx7hcf0xHEN2svsV+NYAUOiz5hoXFWo253sQd46/ZxAbsTXTYGFxfoccYXFvpxg5NvFTbmFxQdsZYXEZw2nkcfzxEZ02OMcfSgCOFx5wAM4XEDG2FMiK92E7URsy0WojHBqxzs5jrQB/fqkwwaQ5GhB+DoQdUXF/5e2v1iubEdGExuvvQ5Hg9h6AjlUXHa1BjATkdF5e9uKYvDVF7MQAEAnvGVGZSR/1EU+wA0SA2ogEoeCfueqUtvBDbXJx2ANhDEHhmyp/1kjRFQ4AGDEXWMEVgu1FCorTZGLSE3Ng+DaNFxUK0b5LZrFxTooUHQCbFxaTttdjbOmxqxcasxH7FxecNlsXFoyKLRcY4m6jNe4qYQwnHg4u7EkQUnAhmxeUhNMXFOihkQNh0aHY/uh1ka8XE7c2DfaHubFseeGGgO1zZxw2ZMAAKQKU/ufRcTIABbA2G9IUsXFB02QswZrRGdFxlRLmHJjfOe+ZFs6jJg5OxvYaN+oukquvVpIfBEuMtTkXUJZEwQFvPOrNa06eNq0dOJhGWh58YQSXGB0Ry8AFkLah0RWhNlSAAtwi3tEc05FdBO7pXqKOEdORfpgLw4EDnWHEwU/kCOihrJcQSjEfZRUTIeclDXFxKKLtubEo6ogu4KsE4Hmxm5Xu9LYnFg5/4CxC6IVRfvVgTpyDWxqa0VEZwTaemzkeAV57Q2COnCFtasQuX86FLbGioxupkqy16ZmYuwjjk5BoyKoaTkBbEMC2fHroQuBnWeHHdnkaGn/W4cNiaXHxuRWVoe+FbDFx1MtuEjryjARi8Dc57/+IG+fmAB5Y6A4lNvGDav9OssNl1A4QoAiAAFpL5WAEsMbm1574hOBFsfGBDoHwq/YXfn5GkGR+mI1C7kWxGZNnvY7LphxwPgPjaxlx1rXuSXG2teAkVg7YH9ZAZmQexbEpLA8WXsXYFcr4qDsdBzZmMhAGLklC56E2sdEfNaHag29lAZGXG5ROVOFEvoCyw2RDEZVRZmo2pZcf/2G0PgvCQVpbESlABpcbpbFQdeJe4XPYFqUARGDnKWGRwx3DEWM76hexl4tk5bGA+es4ruzdHqbqug0QmDbmM22ykRWUjfbmaJcSJjavY2irkUDMGSRB5jNoTjbN7eusgNoxE7QudC4LBQiay+NAgBK0LRlx2YTgaIopeeb6MXTG7RDgghgI1jZjuhKWNjGFEw2hcwHiV9HMAAWJNg115CbRJOkmSHSEuMycMdG74uuRUQ1lby4Ri2HkMa9rFczODpcfkE6YQ2RVsbLLot9B4xcf8NZXg2rLAGdQIgc2HiThMXHhuR/MLnEAB/8qzVsQ0iGwuBVDNoqZ7GI2EINk0iF2lxlicYXSALWxjPXomH75X+V9sWKjaptOHBQNhXGTWx2bkUh15siRqPgqUgJsBhjHgIBnFlIot95rsNaE86n3QTgZHEVxgGcZKl6mZhOqNs7WH+Nh/B6LfeaZh+KOgDyXF/eOycznxXHT6CX0kQS4yBLAjyQUJXETMRg21rS17c0BElcasxFqQ2gtAbJXFE0R53zNgDaBgeNkrnPLbV0gHpcRzjZaDoT9Ea9VHgK25bAn1Y450qWlcWSRbwpBCOsZqX58VxQ4Bg97GECOSajLLDbvvh3JcRZXFP8R3MAn6XGyw2bEngXqrX02wNsVEyHRCOUNUYk249RxvlABpXGyw2KUNrqjbmc0mg4GMOFPa2rnXqE4GbS2cdgfaE67LCoaThGDbvs2pJcaSxEa9WEVcSBXHFFgowADFXGXi2fvNh/Z6C2x3lcS8S4auB1NUQcOExWRgqcazzYkVxUtsQ3JZEoExVcRcOGvYxpOsYrbH6KC2DQXJTYAg2X/EWdZ7YeRjG2sqjZnFxRpcUhkGfJWPKIeLuZuogLfQXnhStFxI7Pt1XGaROj1XmIdaL1OqD1mjjHi7moCNmjJG9VxNxcYrTbuxi+LEQdmHd9YmtAOzTYW46lcjrq0wJ9Oi1cWb5TLVxEG8JXcjLFxK0TkrgJYkAS1cTho5ppBe1cSb55TuAm1ccpg7bVx+Cbs1XEW46BTnlWyFf42GGcryXHnVxMDcIS4w9shtdtldXG8lxPlcc3SFHNOR7NtA6GcI2Wg6JXbGbguMnkVzBIOBOMZAPuXFN2xepiJzrF90WuLNkqHFd2xprPl0xH9pBUNcZ/J7uxinbEQA+BKhxAxceuyHbh+W0jmvHFhsCYeoYt+GMvClZNgzKEH8AlLQa6bbV8RpcxADXEi6x4o4dG77FFgytIGjXHygxTooeM4ISQu0Awcd+F/ZhfrvsUWDglxEaLmBZ4lhRdNcfRIAlpBUuscyI79Fxl4toy0jXJx31caRz5R4xDukQagBWs27bgaLp6kPEyeMTg/5jJBNUXm1WFgzUDlsdOXEcB2rBhBGpGz02sOqA3L5XyAq9SF3zblVxLKgDpxFRMhy0HFNmG1u2i2NlpL7oM2f1EUQ7HpquVNceiWZ85GU5cX4sigXWybTvBm6sLgJycIw7EKMWisNgVTa7PWdXNoY/4HS6ld0orTbOKOCiTufjHe1xxuTlhqFWuRKY4UkeBio2NwwAk6Fru2+BsnsXE/w2FxcZNLbYq+b20m5XHWthgMWgJkFylheQtsSr6J1xXOXqhba9IOkWYKX151jhHdrkM47yGeG1ceKEFRXRE5cbI4EVKWQNcWMMHtHmBrkVbXENI2lyTszmFtKW8NfrkdYvFx19NhL6GGY2IlcWjXFe8A33kanI7NVx/pcUFxF5SEjHgNg0EZA+btcYGjbgXeGeAFpL75Ju5ybiJE4zOhUJNsOxGLD2C1cYv2EXO2EFcdswBY8Q5TEfgxaKw2QpcWrmEVSUOvsapjY0VxOFcQVxHHVx+kvuwjZmfW0QjkQdGaI2GZsWHJi/a2T/EYTpyFZBRpkdfXFkW+NB0TS+jywANzNoFXHYu2HKlkRDaa5AbTsV/+EdOxsLgf4QCg1xIjEa9cASlADMrv7J5w6Rd03rcjaf1xYIYVgN7slxSAAAjpwfA+GGgKRHHlMRpKbgRXFP0R8zsXrZ5evWX3AvKMD5JuZpHljXFWuBXEfgCXGG5Sy6zs6jJuHgl3ETQBHXcR8ENtTnHnOxnA+ook7KNR0OYcaHFiBxoeNpMW796Q581nVzZcmED7seMK5J4AWkvuRIBfOxYRNqdXHFFwpdcUc07OC2xgodim7QxAWxcZZwBYkAql3mHrEbExe1Nrw3HKsA/DcRgACCNx5sSMI3HQhxr6+CkTYb8AleYS4zbjCusZNipOH5u2+roXDkFQZhu6oVZo4dhhs7tkI3GxXgIjcdqTb+Q2aUXkE1EhARE8tixAB0Ou5ckXCECq8uoL1gvOAxNRl1FoHXHf02SnvhRg7X02j0mtCHF4kxdeodHXH6KCmJALHXGHFxxjcb2oCrTeU+YRG6GfjWnKNqt54iY2CHiGALY0SA19NqE3HRaOKrsbzJaK8AnFcbsjY9uhiSblEQAylxsjQILXFRNxqi0TY6H1a2X1cAO7FfVwOuQUcdaBtOKtcUbTCL+xR81qKICRgAxeYZaV7IauD3DhOY7//W7Ncf0KI5RxppMcryEPHRqTcXmkD+NhrKEgE3GxwOzGdupERXWxhKQYkm6Ro2xdkSiWLKo2O4Nuh54DWRrDcf+uDFw2950M5pHqbqxWLhG7E/Q2o9cU/DakuAPboXgdZf8RzaroI0GGiA34cVd0I7uhvG4GsTT5Nx8Q0aEAD6AAMzcVnnEuKAMgAJw3G5o2/6bm2pzh428zcbS0qVk2HZ3j/xGjre+gAD79YP/W8EkaM27Jk0FuOivk62FOdwgK9ZHdAqHbsT9OHcnRnQIMY3GKNxpjcco3Fq1xEaLlhDa61xHBYQmN6gtx19NuC3HeNxWxceMXGv9OPngZZjblVxqh0UjOH6Y2avkfoABjRxiecTC3GAZx/AkSK04Ceul7cHFhaYtRf94Oc3GQY2MSwFc3GiHgB7sZC37+UWoC3irXHBZOwi8Cjt6d1xYBNh0jZxNxD6bskAALZO7Q6FnnHnyhoQccquDCHhyLceRr4YNxfk3oRg4/uxttdhOaGV8hxBjj80hbFxiEcei3FCWOwdcQY3F+1xBjsvYFHKzh7QAMk5wxi2htcc1i6ONxJjcci3Hp02ld0rfC6OXorGNuxJG6o2Ri8KS3GNY2WV1rwV7Iaus1cWATYr1xUTIVcF6ctx7fsWNi6SUxZt5lRHEHE2CDcQPjaLg2SwtrrXFUtx+lbhw3F0txzHsWCXGLY2a7gaUXZxYW1K9r/wAYtxtFcb0JEcrgbmNlVtZ5NxfTcaQnAEuM6HntQDb/rg4nsQ0DbTrW8FcReXGBNxiHNm+xHlJw/fAGY3Hwo2ynsTvOb/YuHlkfdXF+MuCMcRlkA8oAtc4RGLYTk4YCXshq7qhxdWGMc3FXCRNQMZMWE++2lnsUxA7NwOqrcfPrz2exs4sNpyH/1xWGoVW7YmNxvagOTYGohRz4NqplGE6whlcQHC6vX0RsMde35DHRcpYU0Z7avRrLcVLNbxgQ49caA9a4rCac8i+DFtVxgXoTNTGZqe/bceOmqDtxaZDlg+YJNxzGgDt7H+MC3dQoNg7+B25+oFcb61ZhBtccdTHOLehdcbeC5Cehx7cae3F4zRN1MUPrEmZOcNnvOZ4xUOjXsRtg7oTeWa5m9XE9y2gbYYv7FfJx0r1ueXHPVxw7cUi3FytxmJAMcZGrNxC2ThvXGGVxCzAFdjYXqQF8XqbPD4423zcZ3dbTextudmk3E61xtFcSE3FntxgrkUt7FsaOMrcUo3FbFxuhULjC7Qtxn4kX0DbBiRjVjhAK6SexdzcYRIBf82xRcG7o4PMCP6NjygA/aomdcRzDG3EAH6TogJHCTebLcXi3GolmkCom704C96WikR9tZFzhC0fiSWH3qegokfq3EwdxzbcZR3GK021HcbKFEOaOzrcToHFIuxpLgCrXELlxq5ccu3EgVyA/tjx3FCxBXHcUjHGb8G/Hcchq4cCKT5PFejZJRxERjvKMD9iRYdMfguEbV2IWoHXXEq1x+bUf7QCJnWQQrpxqExVxUuDha04Gtxk5cas3H6EAE5jvLg5ikEihQX7jbRNxFJNrvxFK2REE4uEACS+x810ez7FaoOAKKF8LJbY2CEkQjpyytxfiyJeXE4Y2zDgYx4DmnWiz5lNXFj5BvORoCo5RdxLurjRIAqY29KANgmhPueO8XrkQCaVx6nsfZDZaS+XabvdE67IAIrcd57H52xf0NungDTrWTzofDTZwvmmNSF1QZonQ0fsbBJERa20gNkAt7gXgfHYcYFBq5xT1DoW3HQhxfTcZQTa+dxAyrPKwCYw2yTnN02KgJOQ1cdhDYPSOmwwD/DZJ4A4fseaKE7QgPIQQE3EMSRYdNsrTaEE26y4E/xF3E2obcY4HE5+xR4UQeFHME2cDMdj4GsiBVvLoYI5htxKaLraZ5zCATTceqb5UCRSdcSxXE4Vx4foTvta5NwstNhGpFHtxDiTlhXFEtxyTnI2zI0U2kdgSP7HXhRfNceS7FpIuo9cfc2FvFO4LFvYhoXtweskdgL7M+BPXgQoTZlihhgCOwuFF9WMpcSo9ZRoWLanIom75vmUULgE3F+bWfDsn1XHYGuZVcaxXE95OVnSoRXGs1xVFkXU4G7I2+QduhG79NxQ2XqMb4f1xbcXglNZ6ze8vEamLY7mRx5cZUebDFx9IvNJBJOdIB1cQ7I5VbWqLcVT3FfGR9BDkeXBkZxe/oTubH0SA5SPnTWiHPSBLjJXch/eOd6tlxqhbacEWtp+JE4TmeRNvWUHxRm65jKFja8LeLcIqd2A8RRbqIG5jZ1OBVnEcQHHm6OYJFvZNYkpeX3caJjbP5ujhrnF1GfjW+5caLJHQVxYUkU616z2kmBTihKIu9xrAcXDH5a5AOvcX03GiY2dNYWGwLauxFrYSVeDIOxG6LuSo4SAwl1gft3EUSOXItrU24itOzncfKNDVbRzAALsjbzBOygceaHErqRVvNrpp54bgbmNt0HHYiAcvlBPNEUNxlxQJKwBsji/1cXYW7MShKfcRp7B+mAufccFFGJ2xvkdl4M6z1xXq0X7Ob8yAcgAMiGFDVxdKjvF3FUCRbydp6k6+pOF7cH4HEMoAk2YXvTaYQ21PcVBuCC9xKVcSvVE7vmMQcSAIDl9xrvCG2nbtNuqjcUwzZCGA9JZvL3HGFubZYehr5d9xuIcRH3GrdxjckW8nbbA2IwcUCWjm9WMZAGDK58lxPMbtASE60AhDjPoHHl6ge6MICl7i42nkdo9kRVbWB+Nmx3EPg2FhdiOdaeFRAUoWAe4qVBq/cZEDZXdCJ7ACsTZr9x25QRWTL6U2dQcQyq57uAKtcYqTaa7R4PUVKrZkdBnTsgGfChQAk9UiOC7xtO90Tp6TbJk0Z/cfwDY+PgYBsRBXGi8AhArhAPHU820A8VvTYmdx8A8Zv3Gx0REw/n3EiTMh9bcbn7oBNxRVNm1XELZOyTcMH3GIDx4SkZw25aHW+gcW2Tbbbwii4FoOgE6cLJLh0GHo22/wNnGmjxdxHzcYy0jnCuJKXm8nZonQKtcbgPF5K2+A8Z5Njy+2+NcXgPF7ow5tQQNW50DxyZNAwPH/Q2R+hJrQAsDx0xboBQYuLW8XceU+BYDxeKTirXEqlhVnLoH3FCDx3/4CIPHIDxk6PgTHaUDxyZNFTHbSfgK/ceQ3EvemRvgSf3GmDxpvURmPBVbWINceN3HQhxb4Ts0t57PRZDITYPESDxp7AGgpG1dxMzsWvwAIDxzg8Z8BQchxlvcfeXEw426eAGv3ET9xlK4Kn3HnCuuvcQDt5OrhVhIajq611x3nsV/3EODxj/cbsjZMKRmXEFQPFb9xBA8ay6HQVxbqbuPXGf9x1XIBH3F6Dx1A8fwpGoeelg8V93FUCR/9cWIjY9oOzg8dn1Hga2uAKCrXEJrecUccHXGBB2AikeUPHj9x/vcZEPEq1xjAAJpXE71xOlhGHqF1VxMdISCt44Nx0eNhOY6vdxE/EOxzHpXhG/AL/3HCDx5/cdf3GO1xM/Qf42HZdxA8jiIT4mDxng8QYP6/tecvANTE7jFxbqbiKrRs9xR4NmEPH+9xzKNo1C4eIRsLgcUPFZDxUg8WOS4I82P7ccmTTAch/E1v7zZi12ApZl6XFMSh1YcWkpFwc2bjkaO0Et9xlLQYJl6HPSkA8XK3HfNxjXcS0dZ+dxa5caPXHRAAnYcfPOEej+dcNrSe53NxczccmTT1tx0fqlmTZb8RcVAF37H/NxyhkRkDY0SAcCdqBdZOdI2Tcah3G4ZetmPuqY6gDR3lrmsPFYhx1/mCrXF1dx/w8Z4HF/1x+PcVuHG5Vh+BsQ+U5P5AYIgMFXFgtxiSbga3GzdxtNNsIk7TxRWo1l80ZhexdXNjp3E85OhBsbInaK8Al5AnA9EKsAGHcfpW7JDwBxgE8pEUEAonEYPWgTlxE4UQMqx702e6MDr4DH/WQnoeeDa+rhpBsT8pGwuB7XNvm3FSuRYwTv8ZETtxyZNKNl5Ttxk5cRY3EWux7VLvRuHnvRabFnc3FWiRSHcZRXF9NxO4buVyrgk2oo8fxUDwRxPa3tCHGeEkv63iw3GURxdDcXL5SJdxiSbmZ3GJw2ldyEoNG252wEXphDYXyhVlAIH3HsUeAw0QXxFEgAp/1g97FK02e63jqGF4fR5Odt0jZnaObvTkB0jLWMKtce+zbgQAxbIWa3HdlekgMDuDaHvgcbcaK3GLg2TrcbE3Ht+xugkZfF53NxkaNqxt7GNxbrboVXE3+ITBjjFwQmdx5BNlKbE622bmNrRdYAexdGLpZHGriR2QFrqTaOJuoaTpxE4YlBD4NjcMA5qR1WQDV3GGUaxY8UwzbqwSaNkdpuFeQq2A8Zp3FXBe8Jti/Vgiq0PQAJWbaBNx4SFtzALB2BATcbIlF/F2UzcTKN4NLo6W4SwbG6NBeoNqM3HJ1xWANjR4Fxdx9/1k6tZx9xO3NkwGhoCu2gcfKIAQdxVnttLEG0rg26kTyG47NO2VABzm6gPWsfcfOZ5VRx9VKn03EasRRTcR7bHXTRgmThRm6TNxEdmHAr57SAbY8fxNav/gII8YKnGbNu6pvngTYgdxMVcT8HbCNxKG1l+k5iM2TFcdI15UO+IBYh1q7FfRBGkdmnHrNx8SUdlQ5F2uAl1krgJxUAxE8ZtHGNfRgY0dJBJPVxcAzorTZ5txgXobqKGr2arGkZN4QNdxxdcQL3Fo1xvAALdHHfLmPxFrCPFXo22bccVi4vRxqzcWEPGpKCXfhr6ogTM2GAIjYV7Zk2wNNhHZgIWMRaANG2CqDxX1Tnx3ELNx1mGiK07nlxx9vvB4FT9BTHQWhPHMQAzygLpkHJaRpyTpZpFMBoYg8dVrZ3jxi0kE23ERo2NbsVePGEY2z48bewABg2D5cbSBAx2CKpcXTHHqz+9LEZlxBQVxqXEHHDZ0TxeOnAxPE0SATE8SEzb55ehs/oDQ6K8AwEXjzHES8OmdcfzHGEFxPyUcyI62NxWG0eWPE/8hvtcckJ7zlORFcfjqHrUutk8TcxGztxzScUa3Hw1uDP0eFA5+DxyU8fp3ENGO9TNjOqEyNxDvcYIYACNxXLQXq8FuNxVxcZxPEfTWZ2jlVtbzOILuuJbHFthOtjcY0XH1TxxgsbZJZh1xrdcfB4HxhxWJNgb1ZRfCfE3rgSAOCx8O3tPw6Ctx/scdcrQi52ug0aR3EQtxKLcYK3Hqm+x+YTjt4RxxStDk/kDy1xlrNr7uGXaRL+XrobE7vWWw8RkDY7Dxxwzu9pG7TxI8aPtPHD9xM4tsPq6rMRXy4CQUH8behogAcPGFdxRIAMcPFp7hVLVspRC1fAE5cWK44Y9xae4aTBYvTxSrAG9PFF9xjccZ7Y4GR2aOkVGoCBDBSf0cauB9eA19NuyzbzYRnQ8czpHvyWff0cOWrHIA7ZccW0HyNhcM8Z9k6wpxDcAFegr1A20zDhj3FOsRLOkTn76LVxyw8aewB99GlQ8c8ZFvFObbQZQTbtc2LxLlLYEsQABQQYpkGG5S8JNuHt6tdxlrNtR557qSfpcfULY1BBHZFiNGGtLet08b44H+tyImNsqXGDWx0hXhyiAJ9xs/nn6zaA6oJ1NoXSAyBRyKLrHRE7f4AhMM0gFQ1xxY8aMYjm9xaQ8SDXEreBaVcYP045c01RPnaXG7ZuDB+PjJRK6OKs8QjPFKjO6s8RCcAbvOSItnDpyAv2CDEWqzQoJxoTsXA7GnaRKbcfKPEEJx1s8VLYEd1xoFcX2zYTpRnHwQjXEjPCoyNqjXEuzx9CcbzzQSjxBNcatk7zewMgYVAeF+zxgCAK3XGn8AF4Lh6fw6qAnCRKEbHMvB8DcZ4SQzFxposT7BYjDx4w8d+uCeu+BsWC0CD3pRPZccTw7+kAjULshNHAc27N0eRIDcY2KqjkvpFfpRBicczK6x9xRc8VFU6QMOEeEdnPGpzxM4vEMV576RZENvwAAzuxPB4atLbNXWp/ACmLFBwWxgtjq4Yx9xhc8cNYElzxVbvu9S5Lg29c8aEnHrMYuU1rxzaJi2hLcetbEq1xTbcWx3EukqAKKCqPGmsAaLvjczYDDxsfcTHda5Jx8LjpXPEDzxNq4EaIBnuxGGcnCgA7kuzANq9tYYDxjg8anDZ71xE/EBidaaxRe6MBOY7QgAgJcRp6DVQ2gwcGqzRdJxhicf3PHFzxu88Rl0ECBqbI4kfPFzpOlV1jV3FulAXijoW9bqm+d03p42596Arc3hxgDwc2jULpQ27lTxBgcT63EWTxeS1u3PFALeadvuLjayy6kk4bt0EHzxI9bqcnEF62EKABgvEOC+hQQLIPH6NxWrAPcnFXJ+HvFgyPH+Q2muNmMPEXzx9MjsJ06Fjxd/cS+DHzMOWPEHktZktiIwAATpx4dxC1sYPoaOF2OyNtHl6nJO2eXvF3G/jxQJsjuDajDxVwXiV3GOzMoksaB64k9xe6cbFeBUDW8o0E/xEk2qEgkT0PEWtxPtbuqdbjdkzY8QigDREO/PUQyYSD1ooNcYd7EnjR5M8bq2EWihovAAw7GHPWXvcUKHYhtOda4BOY4rrgvA8f/XEzZuAqcfIZ6CdxdKcU4nEitOsjNk6V6ea2Lerrd6gRFw19NiBMrxi6Ox3htNFhuWlRDDhwhs2OsqkHwPEMp2ApZr63GsVxeRcIe3HMEunZNm0d7JAAFnNhVLGogwLObt62FgC28rAOU3H3ROE5jupmJeDOgkqn33H8LxTw8bUZFQDx+YADcMAIYBs4sJ/9Dpe2VC8ZlTbGWRb0Ljz7x+pxIuAIa7HiVOXijmy7FmNxNLbgXgBe4uRY8YeDafyeTbcYmnF6k2ccNldN6jzxV0sV73Gzi26fceMXG8CwmJADQ544yObDzKPPFnGR4IUhK56GLw/cTtTXFC9xeS3qkAASlAGG3s8ZFvRxjRcRUjZgIAkS8Z7PGD1ol8Xng7YZLxPnsc/14BLxV6NpM6S7+Bg/NkImiudxWngKaIA/AAjUcfXPED9ecKkX9RHU5RGcYamDFwBWEi8Q0w4/w2lHRmwYFmU+V4dscgAVLWl6cdPPGvLxGTcbtK4omIHqcX+t66gUB+NP42F7LxZYMduICudxfJkZ90G/pxbCriPXEPFxNy8cBnHINxjvcdR2HBgxRFcWUvEiw2iZ3vb86B1xPPvP8Db1Gxk4MUGE7vFxHQNkax7NGOJ63j7PERc+p7nj5XE31xns0Ua/DbVxNHgeT6691x5yUORnFjqOOBTmML6E+uO+1iGzaCIxKQ6Iw2Fjw2idcUc07Qtx5aQagLap1xkGTml061LxNC8ZePGsjxCrcfaE6kwALuuAcJE+jxU7gFpL6JlxHA8QGUEsQA9CNr2XEdhhTcsRmZF7oWuK8YrTZZ5Ruq8TRIA6ZxuxcasxF8kW5xcYcXHDyxDAwaPLFYQx6EQWIHb+Nx3PNkE3Gn/WrC8c2ZHjGxnnLkuDYldxZ9Nv+PGuZO7+cRW7aUyOo6NiU3HYDxaS8VcF6VNxoaTpJ2GmBIoaTsTzZoTxMANs3NRBZxGy8fho4vpBMmoNE3HiBOhTcfaSDFNxKa8UtPEnmRWF3meZFvjWPPLgp2H75R5gwZDgEbV2rdgWRd4qQxp+UcpVZglxc9cR+ZFh1xErnrpDG36hGQNlVtZ4SRJgcRVMzNmo+LEXszQwueztYLkNYYMR53FhBXEwNxUtseVnH6BxVW1suPH49xcwIdn74924Lk8bSY4+Vxeh1u9450Kxmott6RZO5R71XjsCGsjW+FkYIvFIrxRFkcIYRKm2fg8SgaH+Nx9JZg6vEm1xwUMTiRFRguumYFRZFmrxjq8ZcXHwoAsisZgVEdEseHDlxZGKduBkQQkOCLtx8ncWNLbqnWJxsdl2E9TxAw8TRICXZxq5cXb04UrxtNIfv74Yw2za8cmTTmKxQT1q09HrjxjRcTLyH6sYRfASK05J4A1RccpjYXLx4zcW5jb6zxaI8Qf3F+Kxo91vL3EWBOXijrq3FmuxM1/DNPE1Vw1bcRSo4KuMM/cTpDbbjx/jYSjnERf2izgE8rQtZAqfcSrgLVgIazcRhvEc428YurLuF6deAq8fyGaSXhtxseVzZg5O5PAN8RZZ5xE5jmK3GIoAAX/Mhq5742Q+voG3Ejmx76Nv8DaO02Bo8Z4HHQbx93tuXJHMQAC/cQ+PFtb4jKXsOWov1xv2QfaN5mjxk0kUwtEy5xSQjgGXEsce2PcRYTYuBuwVUe4G7IgAWkvkjDEZmxP3jh4eBbogsjgWdd48oAMDcQU04W5xYTLtNZFedOL/YUdXY5xB0Qbi+w54VOPmNtqL7u5xFhNq1w4XSEmU1r7nFr8AJ1NvAM6Mwx0NgYelGXWRL6fiN2Ez1i8+NuBd45jxyy8RR3GPrxPbgcZ3EzVx4dNh/TaojxtKnihHEWLRhv1qyAi/0OU1jkmNAqoAczcZnnHuIaqTPucrETdhgdcWXnF/Q2BDlJZzYcvKGsMfkVFlkRxW8YK3GlbxQI8clsD5DxFRUcaMYLZOBXUoGjbFtxYS0XzXHU1xA/cUxACzi219NoSuHI+eFrYUB+5izxNFcf+o7jpu+IAGbPGL5xC5ESt2Er5xjCsj80imoAOhYeOXGQmesVcZTQhJ5emt3lNbYpy2B3HsfnGwMRGhARfnE+JBaJsYyxbbbxvJel93E/i2CrSrO7apb43dNmnPLKeOrt3mKrFYmx+3YTibFxTxPtcVcXHB1x9XVrqvHPbx+K8TT264rxq81IlPEUYO728SBXLCBIy6NulPHpLxGA8YY4LZTx56cLlPEYFxwwzoqXZRTxBBcUAXHvbeMO8UkzaEFx093gtPHfbxOY8UlPHKGhKU8bAPFpTx0WtsDvFcDxNfEcOWo5Tx7pNsBHEtLRnYvuwz6vbxC08YrTacFxTAQVFPFYeB/U8egHEQdxeS3o0i6FJBOO3t6G4gURnS0RxXE9Y2HiToY3Fqtx+fjqk3Gc7xqbTj23ENwxAfFl03FUVx3YTtzvGXtwicNi4RYuKAhC4N63GCNBv5eHBvEQTxXdcVvd4ILKE5jiV3FfDx8YNnIvHc82f2oNG2Aso2/jcUzHa0SAEzNmbXE0VxeRcdeHF70usjXq4XHAPWJFSMlXH89xNcMSGBZDs28jcasxE32Riu8QS5E09uIu8X03G9Nx/jYe6vGDNxUu8TEsAy7xizNnLvGtlMwSKAanH7jxg2jjyVG6QhOGACrvGvNx6u8WinESCR/kAAOda67xh68frvGIg2EIcXxdLG7xsV4E+7Fm7xSiMYyqYOH+nuwmUXFBqxrJsRXxa7U6lVFqZb5CS2dRcWT06VUWQIoWe6YFgAt4Jm/x5F7xMS1osnYGIOSYwYyqFZXWA8jj9RELsuKaoVhIB6S2rO+Iobbay2TN4UlLaHguN91j/uhZlRpdIRK46LFxWrESsXG+dhyKLlhIAvfyHEoa3SE7Fx5mtlPvEN0hrQYdRHbBS2JxcZPvG6ewS+8Z4raxS21Y1t6bH97xRaLnoCjlac89IW0H5D0hA+8bMw5T0hVgloNA4z0h6bhIQS6OaCqyMSrLaduAD91oYACH7xlP7ngqFW/gkJcSp9aephm5UadzbBtAA23kQbYaQO0AkB0aE2pheuoWJaGexBFLYfzo5SWhnUtmxgD6B0HGsYHbay8RbpttZL6MhOCuvN0z4BDWfIoNfRDDS2UdEV0E7wR2aUthxM6rFS0OSpawC2AQx0thsnavkWkDIbGmFc2B10tnOACwMhiaYUbEGIMhqwTmmmFvS2GvVugyG0PhP0tltEIwVOODIQOOGKlxMXns2bZ5rRsjIeWmG4VR+UtvBHbV9hvjgBTL7HCOgJgIbQAXFhPwNkvRFTECy9cL/3Gf9stFUe+Fbt7xpzIaxIBArmSpdhyEjcZhLFUXY+HR5gn7hlfnGhiWI60X85HaUWgLkdJnaSMhs6YdIyHP0RsZFnIyHxlxh5FtUiCKGeNeYfC5HephpmsfjLbjyEwnPt9L5hQusNQEAujCIww1oXrLbbph7fkHTWFdUGn5dmYyFoZhTT4SV9aoW26ULjc7b/84jdgS5K4jDWTstooHbeRhAojuaDbEW2nU1LZVG+MhX6YawNagDhuofp9cQMxB7xgBZU5VaxtHDkM2GtaxmgAA6bYRiCqPthVLojlx9jkNn5anfg/iLuUfBwchGMDs5bFYwOsPsKiuCoZh5ctvIxFOiebdjiTA47QunDIY1RavUWZnIbi4AOm2/0tjoxGVMhYVsX4kGM/R52trvEEXNYN5cUu15LSAxY1j6H4feee7ANKbao2hTTYQMyEjShuR8WcB4QSuYzISofGt/gkzIdhjF8ZhwO1olWE+vclSQUsyHZagyHTtroDlVhnVUdNA59y2gB0cLMHCyeg+hIDFqZ+2imYecbYd7xZzIewWH+vhPEXqEvFaq2GmYfKdHOpyU1sU52LfWO7DgTLaHnG2RWYVlNYqZh7FcS+wSD1oy2YSaQTxzOYLIQ9bEoyW08YaJ06QAA0UnhAl6f9sBtodai4wnxD64PPi6QshMJ8RUfFhHxa1/kifH/84V7rNEfEtjWqlcZVtEcOulV1ulmEYsh+cVrnA5u2hpI1sdN6b0uMWYd9VEYSemgAN0HZBjxiWYdSfEEshCNsV/L4MnxnNTiFmFMsh27kS6X4DQuVQAEyfHZ22XJ8Ue5E9gevJ8T/7YknxGOsZuXjcshSltjMg58shwVUQR+Hjl46bhAUfHcYuxR8eUADdB2g7IS4AAFHx7NsSy4EKnxpnAEqfG7bRqp8fKyF3IE6p8aZwBZVxA0LjczpU1R12Mf1mEbLgDbYTB6FcK+g9oVgKEK2xL/Vr9raYeRaFYRcz7YeRxL/BkDY1/4q2YYs6GNdeF8LgQqEvHxCrNiYTY1jWdk6IEK6LcuC1DpnKEhXe/rIXk4HM/eAX4YQLDDchP8DmmaFYTCoR8dub6OlBrt/tGyGKqhF3VpVHY2K+KXIRmfFB22JyYX8fGzNeGCbmsfGJAAmZ8QzrEBDWEpBjmfEQIOVsAPmfFCrWR3XiWfGEBeGdtpVHYqoAeZ8YPWjVAAabEQIKFap2Qdtg6bZ/7WFccXXf5EIO2Z8fw2FyohhD4BnWFr2OrrYWJWGXbm7X4bLBYLshzAXjOyGACA5CLiuyGfdWm4fiuyGACA9NLuHVGnBh+LoWlLZSJufDIVhIA+KO6p8UZ4DUUW8JgP856iIOyibs3vGIze2dIfsyEEBe59sU7tG6ohr+8Taa7EuMEHYYIlBD5eAXkRog4DQuDzAuUAAFHxxrAKzLawxhBqIVL164Mh5Atr+KEb7xiNAOb1Y3O2auRDLXHEzuniLkUfE94u0GQVUfGxRwh31qqfGuChUp8ZeF6s74hvIdjHbUShSzjgEg4qfWJXIR9qGIqhfrYcKV4QOOaMngTvjH1h5RrtT+Fl7RRr8BBfElchNHIdBfEKBwsF8Sil4XLwdx8YhfFYSAyF8Q6bYu1xt9Fl0fFZ22SYLukxyxl2/joSH14byui+8YTmG8OxsjrvdNYRO2wjsRZbbAGO4nwOI7EL7xG+8aMYieK2GfXsE5Gs74OKdvfWGpTWxKvsCY4k5hvSDsS/wTMABTTrrrHFTWP+AJKi7kte/WaEpbYgDsFSlk3AA3O23znpY7Gj3WEF8UzmGG6xv4nkpbb/HxG+8TIE68XxMAoZVpy/0h6CrqY04bIOU/XlfuGj7xQB0axfFLVA7F8XA1ElyOUuYTM6HEG2fmQWOfHnIOZnIQm1iiyegytqqfHGOsuqVl5fH2m2czjFrmHYHRRZ8SVyF65hWFYeQ1HUMWb8yPRsAOm2mythPI7dB2qUdlKfEPiuNB0emUCcrgeV8f86FXUwxV8Z/+EZT23/4fkfGoSU8KAL6WFyuBxJ5p/gC5y2NKTqVfF3HxTlsVgN5DchXuYX1kHRYgwcLowk43nxOFtgCramnxphkboAD5nxKqoUgbGC+REx8QzNYh5h7BgEi74+rBdrAoQS5NhiJDccc7HXcR19ECqfE0XxYCjl1YBHs20vkeirY7Yu6dXtvACc1O0WSFw7bW+2ChYWcy60ehkjcRnmGcs+3rtujpzwleH3IbkgCVR24LsQXmEKuh8lAFpQRTZhCOXtdfEBQAlUdpsjZYwaXntl2fEuAAqp8TYfFPExdeYXeRaPXxH0QFfXZ3LWFSiGMnat5hVjcYUdHt5hqobhxA7YXxhPoUrdQmkEs7AGgfH32eNR0ciTF/qWqcod67ZeuhxprgP5EZsI/LsWu7ZA3xMbthJfE4shM+8dRHZUkxATIWGaHAk2kIoMLyH/pOrY3sk3Fcx4My4LW7bLWMJ1IMRqFnMuE54XlrbidhsN8Z+fEHR2kl8QdHbWAAubQSvyHEE2XZ8a4KHeZxCqdpDZJy8hImNj8NbA3xmWtlX7ZCrWOpto5fFSihN+YVNOFfHxkhDuMUEUe2U2YWjWFfahq18TbEC+IuSTNu9qGZiAkSSF4o4OXxEm1skOBIXxid0U4AA63xyzcTgk5KMhOMLi5t6Va2mt8d+Fgz5xVA3nCfGJmh3QdglIDlacGfAAc3FB8hT4BurfH/UA1gAIdfH3chx18VHyGxYWU8ofHWFzOMM7QI5fFJM25SodxdafXxP2qDLC62e2hE1qW0A4kA2qdh1IJpkOfWkLFfFCGAQLcYl44G3yFN8amNZ0XxvF8RRfEyFhUHYdXyEMCRZkfpwWEE3x/A8epEQi8hsHIW8fFD8hs7sagKEBtOKhvoXSF53xkl8X3yF7yk5AoTiyG7Nh7DgX7fFHXxVRYXR6FiBRP15iAKEoXxxgoXybYbihjdKBryHh3xxLjPBrbSHwPt8ZrcDGFhAwCvG2Ea+2TggNUABDXxDwwofyFbacIV8MfyGpA8HLUZqN6lC2n18dfyE53xSHIYyHZJguyKADXfGKihgl8WVcBum2enoQUuiAc4Q14MDfGuChhobmN7Fo1hp98aS7ZoVCK+btqp76ah/noY0Ib9mh1rTod9ba9W7nprGWHqKh83IeGfE0ShUnoZQU7Arg2RYT+Ej63meRYceOEYq2Dd8Untb6KeO18WZqFd3xkAAP7fFI12gd8X2dEJ7O2k1v6fGyFBFF8TXfG/qhzRYdrWHEECVh8aLzZrahY0cYRNZpehx6lll6ExKhDKnl2fH74Ai98Q7gB7nRie3jAnb6au21yIDFpWY44nwNc7Y3sA0goQYoAd6hKqAFNHajXe39QcyVSYFmwJNpzqF6ngkwUS+dFqChUxYcCuCaChp1IHWJ5MREmtgPZ7HZ3xvQAIFt7v2ew98UEtHdB2QUntUJ6fFhFlTvBdHpwYkAAN9fG/XxCVADF7HOCh4nwIfvFwN2Xp8fo/GeChpmHgRdEvZudxYUsWEH3x3CsF4o6BChmKAMEKGhChfJtiE9a8b4E/thK44PtxbFNuXfEKaAOl8effGh4ubevrlNZg3xeidn+3FGbuaxQVmubX3xJwKHnZ5KVuEmngA6EFbWrO+NQ/H8dGtwgMn7ZfHxz9LoIg68tmFJAD9fF3CAWMLlo/E76+IuIfiWH44ufj8SDfGTiOAQztD4Gnu2ysYVog533xoj8dym7w3xnQobsKF8ZO1Y0WoF4jVhS1QCc2GqnxSNdkvVF6PxkwoTk/EO3xhEgHJfH6Ke3nTt67Y5Pxzsbrs2FnHxug3hU/H5iR73sdPyE33xsT8SI/HOsAsl8XM4wyB2DT8Zm2FXPISqONO65kVOSYbqDKGGPxDgoZcKG/XxXT8RMKH4DO+sJnBfGDPxeh0R+nHpuEegnsZZFjPxgOtgo/Eh0xdPPlj7Hh0xMbeAcKHbs2Uj1kkqF0SAN0drN34laISd8X5lERKhwIzg3jawihcmdoEkCgyhLctj62GTAAD2ABbg7p3xCZoSyKE5LQl27rA/FYihH6ACp9bZreFV0dtdE2YAm2du84DNB2m0Xs3t5KqGHrYTvF5UihRKTi7g4FgApcoRnuDGlBXHtnQ/EeKuj+1tagC0PxhtAEmC5EKhXIoVfgA0UWoD1isHZ9hRpqADvD7UF2vT8fffHd1C5L8WybZRG+U8oWS/FTeECooaIy4m1ANL8XfGHCGAh+8dc7YXThjckSn6EsTxLMENfUCwnx6l8UFk5oKhEfsQ6bYZ8AVooccKG2ihpeDphyHe8hkl8c6KFzchJ3cSEAF5+x53cQX7EiSRHHUaWHYWAAK98Xbsp5GO4y8RfF6KmOed8bN3BYSAhd8X2XH3a2D2jk3ADKqe7L8U3fFJCekl8cvyGgqhEytgIWHjJxLGrm4U60xAL27sZJEw8WjKoYZLYozelCQF4o7ttOT4UTyWHRC2Cb5iv7F63RQpYZ+AB8JeD9Yck67VihKogVNRY0uRyBDiYTZelB9p8fga5bnxFunsgp5tihEbgHt7az7YRGrhmPCfuGUa0ZltYiPYe7AC1fH9ih3Qdt6qHGmu0WQHcVYKHxkl8QAHHx84FZ8StfHZqOoodowuCi9xl8UGZwBbM+lUkWQ3pFvxWZtju+Y9wA1Z8UxACuK4NEAJoS61h2j0TiVaG+GWjYdroS5zCASqocO/FXihtidreKGujEJvcdYa7X+h4i6GK/E9HxSdIXEzFUBxejQfNBKMLgu78coeCpdRk3cgGWG+EunYgTvOb0nxq18a1WHtEO/VSOs/Hwx2wD8UTQiwShqu8LLyEdIuKNyIpKC+OASOdqRWFOu2SC1phyGT+wU0dnSE7rvxX0pM/3EBy2zCxp2/GuChK+AOm4TmBOhMoV4YTbPxXGjp1LbJlhkH8WLfFsShQdNpMy76J2iGtl2fFR0heZYU80gFlhKJAEAujpMhzd8TiyH+GEu0QDN1anPxywYa7HaWcutZYVBsp5a2Pe8U2WGDNKLZYUF+agR2W0gLTKEnPxzrAOWfEqXWid8ZKkhJ2+5r8SNfGIsxDFQR6pDUfxS5Yf+Q5DXgNkoRx/Exqh618W6Q6DlhYL8cOWF7727koctUFyk2br8XeDbs5Q3QdlT1GxqhRxtnI9GsfxcHIVcMjfSh2LYcuWFWHxKBjjFKGeShkn8eAWGOlBSUoXuWEMZKSZ8etKEiLw46dsZmE9KhEd8XDqjnlhG+1nXtbJShdntk5/EKmu3CoeR/FI9W+insA/Hc9RRRbpYvi2Gh/D8e+WHiHxiFYfLfGIa2eP5iF/GY2B4h8fnZTOCA9QYZM6GFo+fUoQVKEhfxaO+E80LGsAI0oT5/EO3x/n8UU9EpjAjl8chWGSfxqX8S6fEfnx9tLol/Fka27n8dZ/FO0ueFYfZI5Zfxjn8cS4y7ShJ4Xl9rYHShgdbuiHFyV4+X8adKEGqRJUYZB/Fdlh/njrnLZepepIcSp/FSfxj9rjqqG7PRpMUTK+D3kOvX8T32CV3xxz8atfGAlOMakQLHapawmJTrGl6ifx40gdpviDfxsyWAWACxlh7H8Xe/EUYuMFvmRHjxDxqfVmRfGQluqUdq4KF4ahXd1i+/FIyhkn8bqfGoyhiyAApWF6CO+X8U9IA5lOYt8SJ/GDfxCF8bxfG+ZeI38crFG6Vhy18YN/FFCugT8fDHZUyhqH8QapGIfxfT8TLC7EuMh10TF/H8lAWZntZWE2Vh1fUQpNYqfWuzYVzKEqZhfL0RN/FbE2uctrFKGSfxb38ZJfGlHWR08awjbtfx0v5u5KHEHW638UFWG6nx/E1tk/GSfxOT8Q2/EO3x8qofq9EW3O+b8TmU6DfxZj8d5fHEuM/ooU+wCt0hXZ8cGuBLm2vT8Vb+CdaAI18YnFFvDx8U1ni2FhJ2kcHOFS6plMpMQSW/E2loDZRBR/GtS2x98UxADgjxc5wJCPHFHA0UXqzvi0nut78Q7fGpfxid8TLfHByhSv8cGYaxj+Lh4D5k6aPx04cZk/FxyhLcUXmW70/x8JTqOWFE/xkn8Xy/EhDgb58bvxHPwANI8T3c50jx7lLhjfGYq2G81pT/EAMkAA1uyTblVhnI8fjNZ6wuVeLoyQAXPxpcoWD9ECjxa5DoYAixrez/Xq4KH3vxhe0TMtbjpqdx8aAU7e+h9BhLCgCZXxQ20aNWHy1Oa70ZqPHaWY+sJn43CACAc1Yeo/G5PxnIzqkBaTMh8F8cnfHPbeaSJKPKHfaeogeNwNG5TWwrcYzfGSEOwN8QdWHbWIaXNBo/F5Pxj5Dk7S77Xx5o8QchHnvRjG4dKoBwvx9t8fBfGWL4kl8SM/Gcrgh8oTc/H3wA1BsbA84nyhOMQLMqHoUONQTlGPFpMhT4BgmuBqvxD8oTDqjCRxJFDlSKHe4AxD8TN/H1dhXijsX/HslhgW3lZqEI/xK64J9fEC2uUKNJddEZ3xpKAIeHaaqQe98cDfFdnxHFDmv4g3O2EmoTUABwnx/iLvDl4fShDL8W5NYFZh1oobaKFQbe0/gAv/HMfRpmtryfFP/xkNYX/KFhDRPBCEF/FS/xvn8SzS6iuO0wABSQC4k2xe8QXyFC525PofdraMGx+MtriGSr8hjl8dFHFha2e5YTo9YaewzB3t6/FyXRtg2gTmHr3xrC8JJ/HUPxsdYcuQ5sGxXXDhjU786eH0QAF/zYxRW/KBUfEprgHN8dnoRc3xkhoazvgHR2YLYXNrZce2NLLp+4aCPxjd8TN/FKChZtYfmY60SAon1tx2HcxeyYoa4KHVuha7LtwAlI12n18S7WEETxrZFvw6623xw+dlwbELhh8JXiVQ5pJRyDNtztFpMhixoUh/FsChwyoU4ABba2bE8Sq5GCvx+l8ZBqGcSh098aHfEwlhwx8b2mELfRg8gMTw7Dch823ue7ZCPxDt8cvaEDDWEIECjyFw3xiytoXWEd7WgkoZIAlAOedsLtx7YmIu4bTjc/F01hJACX+tbV1hCyUex2HU/xO2LsDfHNKhmcXouuG0ShUqLumi5dUGZP8aJl5+vxsrIVSADRqMfboVIAlBAJ5ACXSKGS/x+O4eD9FPa28VTmVdaXOhhgCW5wBXa2yyocFPHotB5+PnFMoRTxABtos/HSmhMvPgfWEGxxK8Ro/fH/UAiNDqzvi+mhZyoThqFa8OHQCSV/Ehsu/X0aLuE40OzQCXxfFPKhahYXpfF1nxiu4TxfFfKh1/8bV8CIGEg9aDrp63XxrU8TaG68Xx5gCV1PFMBBwJjp9fH1IuDF8Y/w64E+Zx8XAuCtje3scQJfGTTx0T8dU/FxPxECnnSG68XxhN1n7EjF+AAQsXLW7ap2zEACc2HkqhsUYdNfE7Txf1FiT/EaWeuP8ekZzfAJlLYXag4sFKnvIeT/EjZ2HEboM/Ev9hoOkT3AAUv8s2ntQU7wJ+UICbNp5JlhhqUYDPHRjRchtIO8FoPRwn8cwsZyqhGcTtFnbZnxmf0XalGZjRoPkV0rYjnxouAFqqFflB4SrtPHGHZhKn1v4YQGqhdF8ZJfEgxOJqoTnY5wrERgzpaqEEB27+cOaVKqhuzITlo2H0nxr58ffKEMbW+iFhJV7fQWxjYXcLEAwWt78VT/HUFOH3QAJ/HVE2AaoeqhwA4RYzLg1NZnZAXOUDwTLvPxBGYcWlF6phan8QGa6afxOzLgK9DVpRLb8TiyFICRrf4D3Q7NE+ORQKj7a5qh7aUQNZ6X7hpjToN/H8aR4a1p2S5MfUj+4ck2GmNOOLIT3vG8ix1g1hOyEbxkM58QVmHHIAW71lADFX7xmT8RVMyEsCKqvlJ8GcJxe+8cFk7BrWGJ8Vwa6bGeeTkLHPF0S2XV8YPvEFNw4icWufEyquc6oSjGGsoABc4mBmEq4RkcFjMuA1mIrTkhcQBjFBTTYfnPHR52QH8bd6hLHxnTYZyy71jG7z8cWAnpgJ0y/uL4GDEETTYSZ0EjNhGIzrV8AjXxrMYbYUC8fxXc8cFbaLHxwLYYB/EVgJnhEEsfGrFefR4HSKGs6hWmYXTGHe8hKt8coaFDgJ77gVB/F+fxeaLsY4LSoAwF8WMM53vxGj8cc2HWquyJAEwAkjXxuScW+XinrgTACe02E4m2hLYaC2G61hpz8fC/HpnxwGob5C5EahPKBFNfHfw2xpdjN/E+zW3v8VRqE6TRNedkWAm9gJwLYR6y5EthXACaxqF4bgUACdYTaDuuVJhF2fH8xOGe4Pzo5z4gqp8XNyH2TRC7LkHbYd3xIAgFqyEt7ePH8YSMDcnWtidlPfF8Bux8wruAk6QARLYbplH1Ax+Wrnm0FaahNrYWA/FePxxC8YK06S/RF4CbrfHWnxwBttb/Gsthm5TjLFActhvgYU5qEt7ev6ofKYRoyermoXBfEv2Bc4CakAmdJG5BhNuAnHzW5cUTPfFWKhCKcbD0Hnth0/4BOyGK+hoyNsBfGjFRTfQK97Y5PxGrYY//FY+2VftlFqFsZBDWYcN4AIvWLKobYaFbac19EJgWaMF2dnts7fElch6WoekJ5TgJspLvUw7rnxsACfSgB4yefD8YVqEnrWxEYbnLYOkW6OnPntYVahaaNnBC7yPxHWrpHGESNODn8ZzqEEQJ1mpoJAlxthlMTiu2G+vx/f8eYWF0OhvBjqm2FapxEsRMOEG+GEhz1vzfGykuD8oZ52GjahYxdvop75nWrdIfJKHfAQoQTj2AkpjWkIbrhqFWvW4SdlxAm1thejQZRC5QXxFWnG1vi0FuI0oVzKHXNhgD8a4KGG8h318X22HXOMvP4FoAAf/xgabrByFeQJCPkIf/HNZoV0sS+fFEC2RHQJBfGnahuD8ZJ/HZahshlIsaE+vcJoMaRZ6auQhi8LUaEcRuyhoZq06SxOXibvrUFasAXZ8deWiJuOI0CWfTZ3E2PkCSfFDc8GD+8Q+N57PxiUjhOuCcfxD+8VBfFY+2p4CVx7aACASHwNt4B63xqIAAbfFEQJon8e+siSou/2oJzLFU6h+JkXu2FX1x19EIIWEJcWlUkozqHyzRz6oWzqHngJD+8YSIC9PxXv8fBDb8p2yUoT9fF/jxl6APJ04Om2cK8YGd4xXxYP8T6/GKhBwGcb1fFrF200CVBfF4PxVfIdBnFPM2auURyAnD3xBK8ZVFa2phfUtmhnFFPgq0Ceiw7V7xxuoVlv7w127d4sWfFLLWLbbmO/Etnxx/8SaQTk+uVpkSQMFFF435spEyEDV27K8dR9aufyXQCYGy4BAJCz8UgUjkQJPuoTxfG0iA/uoSocgHgJa0CVfbZYihTP8enfEn3xcN8VHqEGKAqu4gIAmwnxO0ThzAnCiALp8VqvHdGx3AtnMAk4shmmcTcAmSXxRq8RJfFVsOrO+CTfFm4WRmcUoLYYQxE1PtavF4RB8gTlSAkawJy+8VrAm2Zx9J1rw/GcQJWQADh/HU3xBBYWwAn13WHACepz7o/xLsSMe25ILW/f8WM2GT+2nOoWxtYEUO87DrPqE1vxmdIdm2GEPxQwCdzfE4sh3N8aGvHPZYUxsTFS476hl5ka/GEyQxHu+EfqHQgJxINhkLafXxaWcQsU5adh5R4FRqG6dhe1Xr0/Fq8u3K0c/lHUTQv5di/qEfsOlkMcymGQfxg38XTyFxlx8F4TZ2FKEw40CcI/H6chzJgMZfEbLgLnYeAaFbGxmvnlnLixtA7QobDAkGphC+8Urtbmphm68XZLbQO+0+8SbAmQ1eBxsecLYx8u3cCZF2EZeW0XYcbAlb7xc+8RAtFyduO2cTevE2XeJBrnqeB1ahTJEXZ5ErwJLd8WTV7Ui+Ie+DVhbOgJZUMXNVblHxwH8YFd5lwJP+8ZR168GhnMoZhF5mJhd38ftjSnwJ/ZBHpK763x2rIf+ABnfxiu0XIaFW3xVZ8STAnoe2b98YUipxCRzgAAY/FSeQDptr1WHnXxm/cXGABmPxjinlx/FBJhBAdpgqFaq2+hoXdZ6SfxPnCA6bZsbeBXtt/AnqGhCEgJEkgi+BUF5rIVGBKxg6LjYaFce25r8UubbHQATPUGPfGochK18RUfFhFMhSYSF+D5/xmj8fAAn17xuGXuNd51V2RwAKEaHGXxRbYRvvF7qYO1QI5fEqTWYWLjRzLaqevH8XmXYikRG/TkQfHgtmjcCZErFKPg9bYbyL5OAir3jrgAB1iexm8Udd6H8uk6gAPI5nXecRrsUaGIqhZRoaUaHSLRlRoSEI6tvuNRoaObYNGhf01rX7b9Mhd6fiSbAzgxIv1m6LZLLWp1kUNFYh5xYW8bMrF0g44cXmI/FIFhTOTuv7bRdAyd8UL9FpkRzQbmCMjiihSxoVhIDbcO6d8WsaHF5x6wCSxHaQvxaBYV9lHEZh2IgDXnGKwxPF8f4gkgwJVHYa3ZAUkAFxoe3nE1cet78dNF5v+2pftoleG95xRoNmRfFRQJw78SLXbdB23RLltMBAfungRK//GWwAAJoTOAkmVAU28f0VGpG2f1AClLYhZAB+ro+AmA9WtPngjQBPr4BR8cHLbZ+W+R8WfEBIMhNtdjk0qeCAu28W4/GajBv58d9p6ta23r8Zw/FOqcXijr0/Fn3xb58cafFf5xafjuKrHYmxFtIRXDHKwJzJoZigBnFRgwCfMglnImRBcUsgnJAAWsXsJ2HD3xQwCfzfHF1h6NDojAk+3RmpocCmGKl24wCRKaFZ3eJyCVXl4K8O+yCesgm7IwOLIb0AnbIJGzWvkqF7IJcyCeAl7E7xRqseSM7bwxNu4UbAmeIJFqseRnY7AJHRrqGfG+8hcKoWqwDHAJkWNlXZE2jBMKYUo07PAJmQEHDfHOmh3EFguy64RhNd8Y8qFl8OXEgAA8Bw3xdyCfbfENmhIQCYRAkqJwB0CSgm5APxjl8R2aFYihCkLtroAxmh5cCb7yEp4AkhDmJAn1lhYGoSaAkP5hEmnvdWEJrAFccTlKFbDOTgfg92G1aRUKCZ1KGfnxmwCdaG53CAviLsSnakahE98U4DbT3eNb8TnKEP5hTCMdMICxwO2L8ZzF7JihmKCTrfFIPxD8CS3t5G3xBSABaVHh7xguoYHfGkoJEl8fFrYUoJHEDkuAmQAJDt8TUgmQXxh8oYygkxUOhF8Tg5FkxQngfghRFzRBvgfo1CFuH+gAAEnQgAAPnQgAALPQ9qCYAACD0DCQGAAAodCAAATdCAAAmdCOoJgAAKnQgAAH3QgAAA3QgAAHXQgAAP3QgAAJXQjqCYAACN0GGgmQAADqCc6gluoJP14d5+SAAArdBhoJgAAM3QfqCf6gmAAAVdCOoJ2aCfagm+oJfqCemgmAAAE9DxoJTqCa6gle9ugAAHHQnqCY6gmeoJAaCSGgmOoJkAAIAAAl0IAADj0EGgmOoJgAABXQjqCU2gmAAAY9AVoJMpsXaxaAAAkdDRoJLqCbmgnZoJxaCU2gmNoJvaCUGglhoJaaCTWgmQAAgAAFnQbaCY6gmoCefqCWGgmToJTaCQGgkRoJpaCR2gl+oJ7aCRuglJoJny0Smgl9oJiaCXIE67oJnqCX2gmHoJE+8e8ADnoJfqCRuglhoJ0aCf6gkuoJxeoYAABh0H6gmQAA56CZegnGkBt6CfegmPoJfqCc+gm6wmb6CR+gl+oJF6Cf2gmvfunp2D+gndoJD6CU+gmQAAg6CUGgnFoJgAAPXQAaCe+gmfoJYGCQUz4hoJLqCVGgkdoJgAANPQWaCWugmQAAfqCYAABT0IAADF0ImgkpoJAaCeU97ZoJkaCY6gkRoJLaCZAADuoJEaCaOgl5oJh6CWLEEYYJUaCbRgkEYJJGCWRgkUYJsvYc7ABUYJWGCbhgn+oJcaCQxglMYJ2aCYegnOA27qCYAAAt0GGgleCOtqCQhglhoJNaCUWgk7oJIGCV+glf7xzsAHJgkKYJ/qCSWglloJp6CaBM5+oJgAAAPQ0aCTWgnG9h/GCcxgmeoJDaCbr1YdoJYaCUGgljoJxmCZveHOwABmCUZgmNoJ7qCSBgkWYJmwfu8ACOYJ86CRpgl2YJRq0S5RZNoJYaCfagkhoJW6CUTYF+oJ2GCfagkBYJzqCauQFiYJ6aCY6gnpoJYaCfJgnloJCdEe6gkLoJ5aCS6gkboJEaCW5gn/lR6mCXFgliYJgaCWmgkIYJNaCWJgkovecGCcWgkLoJjaCQugn6YJoaCcWgljoJh6CdmbZpoJcWCQ2gm5YJMWCasE5+oJgAAEPQ7aCSGgnFoJ97dimgnloJmWCaS17uoJjWCWlgndoJnqCcWglFoJK6CWJrGAAA8dBNoJLqCeGgk1oJI2CV8H4DYJzGCWMJ75oJzqCV1gl8HxfGCS6gkxYJcWCdbYEYYJeGCdhgnEYJmWCYVA6VoJkmCUNgnTYJQaCc+gnuoJ6aCSmgmHoJHHdsdgmnYJLqCedgkEYJLqCa6gmNYJfWCXIfG+TOeHaJWglZoJgAAB3Q/qCS2gmeoJEWCUGgkBoJnGCaRgmuoJkAAC+gkRoJ02CSEaGAAACdBlYJi6CcugnNn+fqCYhgkBoJNaCTFAApoJ8GCV2glNoJ/UboAADh0AVglLYJnFAf+gmxoJCGCfpglgYJCYlgugkPoJ8WCTCI4doJrqCRugmhoJwWCSJVHZoJPaCTOgkIYJXr3uGgl+oJuaCZAACM4JzOCQiJ7+YJgWCfTglMWxIaCSNgl4YJLqCbGgl7YJYGCVKuahYJxGCTWglBYJUuCeNgkeHxSitITgkuoJwuCXegnXYJG3niGgk9oJc2CZTgk/M+7wACtgn2oJa2CelRbY4J9qCdNgmLTOnWCQhgmZYJVOFCmgmeoJxuCbNMFtYJNOCfOgm64J+uCW2jF+oJ5aCfagl4YJI2CYAAB50O2gm1QuIGCcWgme4JcuCYOjEOYJ/2CWGgllYJ5OCfeglBoJkAAIAADJ0Plgle4J0iQaFgk1YJHOCYzgkIYJMeCWktF0gAVmCdGgmToJzaCcuglpoJAjER5gnroJ3aCVugmaYJnOCQhglRoJ+aCadgljoJ5aCdbgkhVRWMDmugkboJW6CY2gmmYJEaCcRgkyYJ6GYTYxY14J+eCVGgmQAA6OCaNgkPoJleCdqO7uoJrqCcrgnNYJDG0e8AALoJPaCXjgljYJWRfiGgmEYJ0mCXDMEdoJbaCeFgkEYJrWCalgljoJTeCXxtHnoJyGCU+glrAeTaCSNgljoJj6CengmHoJBD1ongnJ4JLPnoOgmFoJMWCZzglj4JyeCRK+GRW2X2CY6gm/YJfqCUHglOoJQOCSDgmJoJ4OCZDgmHoJTNFq2gntoJmOCU2gmloJtqCVGgmxoJxGCfrglXg2X+CZ2gndoJv+CQngnWYJzeCXVbGV+WtuCYmgkr4J8WCZGgnJ4JbSQc7gnOoJv+CVmgkEYJAaCalgls2hHaCa1gmeoJd6CVBgnzoJS6CcngljVRuBCfgQn3oJAOCedgmY4Jz6CR2gn6YJwuCVNbFkEJBBCb/gmQAAE2CXvglK4JPeCS6gnbiejBCWfgmloJg6CXWgmq4JuNAdkxaBoJTqCeTgkIYJpaCawQkxoJ7BCfvgnxzOFWCVVgnIROIaCf9gl0YJshCZ1gmPJBBmCZJglKEJlWCSoQm/IhdIAIbgn+YJRBCZoQmO4JC74Zbgl6EJ5WCQYQkw6xXMeKPgmFoJp2CchgmQAApuCeXgn3YJ/1sWugl64JIaCb1gk2EJdhCXmgk04J3aCeJgm0nxsnXk4QnFoJLhCc6glBYJ76CWmglWYJCGCbhgnQEJtlcSPgk9oJVhCbXgnBEJYaCaEQnhEJ6NsbngnOEJrhCe+gliYJQaCdgQn+l+LA9pYQlPoJsRCZzgkPYJmRCee5GBW82aCcGgmOoJKaCaWgnZoJxeCY6gkYYJ0aCfrgkLge2aCWugnIEJVWYXSACeYJjaCWngmQAAlaCa6gljoJW6CaNgmNoJwhCbpglNwu325g3glN4JH6CQ+gkdEJXRCXmgk9EJGBCf0QlgYJ8Czk2gnYYJe+CRugk7oJCmCf4QkBoJbBCR3aFNoJEaCcLgnM4JH6CXgQl+oJmWCQ3Ja34J9+CY/gmOoJz+CYwQmZYJI9oRnRZ3YJB6CY9gmXYJ5RCdMQki4J+uCdh5HXEJXhCbcQlXYJpaCe6gn+YJe6CdAQlxSeJWCWIQmQEJQBCSmglpoJkmCXLgk1jWfxCb0QmcYJMWCSBgmMYJwuCQCQn64JY1cZ6djgkJ0xCYRglQkJnqCYxgnn4JC6CQ9gnPYJAxCXrVFNoJhGCRMQnjoJGeCf5gnnYJB6CSdmHoBeeJCQSQnVYJ9eCXrglIjhYDARSQmiYJh6CezjHtOByFfvbVGLD29JCWOgkToJU6CdZgkOEJMnkejglxoJxJCadgmIEJlBCS6gnUEJneCT2glxYJCGCS2gkjoJENcbLBbZoJS+CQMQlT22cpCeWgnAkJcuCRzDbVoJtaCfWgn14J8pCWBgm0Iu6pCXWgkNoJnOCdqQkqkJq58cegkSkJAWCeXgloEJh6CfwwENEJOaCR4QmrYJYhCUSQkPoJmOCXRgnlEJCdUS4sGf22zNcSnVEA5hbeCZugkRoJCmCdyQmikJaeCQaQmgEJmOCV+gmf2x2OCdNgld4JsGCedgnl4JYaCWNgnw4JQaCXhgnl4Jc6CbWgnFoJRdUT6QkF4JnqCZtgmxYJ0ZCaJgnhYJYhCZAADY4JVhCXDgnEEJ/qCf6gmZ4J3+Cd2gmXoJpgAF6gm1oJ02CQRgn6YJJ2CVtgmc4JhGCfWQlFoJ7uCY6gmiEJFBCQGQleEJuxCeQQndoJyxCSOgnXYJFtcTP+YZkJfpCVmQnNkJcGCXmQnxYJpaCUWQlPoJJZCcugl4YJFZCWAQm9oJrqCcxfGenYY5CR8Ql7oJQRCZvgmDeR2SbnHgnMYJwuCSwQlsEJIaCf5gmj4JCGCXLgkych+aCUsQnHkJkhCaeQnB4JY+CY6gkyA+EZCYXglLoJ4aCZmOGQYJ/mCX+gk0EJKmCaTgnf0WTaCY+gnZoJ2GCb/gkIYJBGCdhgk1YJwuCQuQnhoJT8rtjgmxkJ8OCdBQkvV+X5CUZxE64JjRCXhglL4J8WCc2gn4kJomCVSQkX4J0pCSY7EhoJS+CVaQmmXx7wAFPgnSYJDpCVOgnLoJoZCaTgmP7RiJCedgnloJcaCYOglbYJruCf6gkHoJwuCY6QnnYJg2CSKr5c4J66CRvgn/oJiEfuTgmxoJm6CfQQlAHRU5CSmgnvEJ9GCduQm8UJh6CYKlYCUJo6CfRQmerOGGCeFgk/4JtWCR3RYCkJpJCXi4HnkJNaCU2glpoJJBCQIjYhoJ+mCaDgkzYJnZCY+QnNRejBCTeQkuYJdOCcJQmFchmZFGJgn+YJoFCe6gm1EJBZCaJQlSUJa6IRhgknYJ7FCfrgkgzWe6CTNgkVEJVRCTUQn64JoavqaQnWYJK5CUXglRoJ/lCUqsGAAAOdA9oJHeCZUQlhUJjxCc7rFu1+HKllFQkxUJflCY8QkFkJc6CXxQmauBQaCQegnnkJ/uCV8rbTYJNJCSOs60EJVlCWgBHyHRdIAFRglBoJmJCTOglMDeC6CSGgntoJY6CdAQkiJOw6CWlgkPkJF5CQtfGtc+yKtjQ3Ecch7wABGQnPoJblCc+gmbkJCGCUZQnNoJz2Cb0Qn/oJDaCdYAC0EJZ+CY2gnNUJdlCQGgncNx5PFg0QnWYJaFCfmQmYUJlJCbmQnkYJS5CYpQnxYJKZCSNgl3XxQk4fWpZLUJiZCf6gnoUJoFCeyQl5oJvBCedgmbUJ5ZCdtQkIYJu1CcWgl4oA/RCeTgm2EJcZCWOglM4JPFCe+gmMUJsWCZXgn/XxuLsVEQlzYJAaCU2glgUJHJCbeQnRoJthCc9gk7UJmmCfNgkWuhrjFq2glMEJ/pCVQQm9kJ2OCdGgnC4J95Cc2gnYYJNaCWmgkuNx+YNoGgkA4JSGCRGgkEYJeeCb6QniEJJ5CWeQmPkJoFCbdQmA0JLqCb43GJS2n5CdBgn/oJwGCaBglK4JN1CRDQl3UJUNCWmQlc5BzsAE2glBoJ5RCbYQm1EJxVCSzQn5kJ91CayTEDou2aCf5gkpoJUpCTGgkGkJ2OCRxQmYYJpaCSGgmOUJyGCbXgn24JVNCYGglJkJdpCa6glbYJ02CaYACVoJEaCRLQkdEJP2CX9gkA4JT+CcDglLoJ5RCQhgn7EJw1CQRQkAEJmpCc2gk2YJeaCUgQnDUJX1CemgnMUJTBCaWgnkYJ5OCXhgmU0J02CfcdH3+RQVCTVgnRoJIeCUTQnWYJChCXvgnzoJMtCczQlroJYNCc7Qmu0JN5CYbgmFoJKJCbFglGUJ1gABSQnh4JOlCaJglBYJlt8XSAADYJ7aCbzQlp4J92CdvgmNoJbGCTRgntoJElCUEQmZ4JeGCRhQmDoJBpCaHglQYJ2VCQOQm2EJ/2CT2gnuUJydCR+gn6YJ01CbBgkjoJc1CV6q7V0JzmCe+gm10JxJCTeQn3EJ/qCRLQmGUJ6uCeOQmOoJpgAJiQkNoJQWCbBgn8EJ/JCQGgmW4J8tCYRQnvoJnxCd+Qli0JCmCchgmZ3xmi9lOQmxkJBZCWZQmEEJ5WCYuQnlkJuOCXWglwtxM/5rvQkeEJM5CX2Qnw0JwpCYGQl0EJJ9CQVgk8YJ++QQak4RkJEaCSjgmNoJ2ynj1gmzoJDaCcoABjYJGgAL3Qk30JFBCUfQkcUJT5CW3Qkd0Js1CfFgnzUJRLURadE9UJ5eCcAwmYEJIhCfyQk80Jz6CVNgnDUJEdCWOgnTYJQFCfOgnToJkNCXNglpkJoNCTNgl2UJ1GCUBQltkJWBCZ2QkMUJTqCRvQnb4Js5CRbQlCYJEaCZVgnQMJHv/g5H46EJ5eCXtgkNUJd9Cb2QlPUJcaCfpQnloJl6CerQn5oJ4NCfmQlU0J6rcVXrEpoJkmCYWgkWkJ9qCdGQl40JCNCSKQlcMJ5DCaIQmzkJKNCSPQnxYJdaCdYAC9UJzaCSmgnRoJW6CZ3gnhYJKaCQgwnO0J2tCfRgmLoJGuCXWQndoJS5CUcQlG0JgOCcDgn63m3NCcPQkv4J4WCfgwlutxlmFpowmn4JWmCW0QkuoJ/ZCb/glEkJo1CajQlgMJU1CR4wmd0JLVCUhgkYPx9vAcns6X0J+aCWGgl/0JMWCV5gDQ4JsGCQaQkH0JehCT2Qn1kJUmCXGQkj0JTDCQ2taqFBf3PgrQnI4JS5CWmgkLoJpaCcehh8kJQ1Cedgl4YJ5+CURgmg4J3JCXhgmj0JiaCRNQkfoJ8+CXGglwEJBJCSMQmKUJAjCRXgnU0JJbcc7ADY4JQBCaBQk9MJVJCWJgmFkJzjCclebV0J9ZCUFgl74JHdCW+QnpMJ7OCR4QkBoJ5nsVNm4voJ3NCdMwnl4JwOCQeQmDMJKaCUjgmDzh30FteQkDkJCeCUrgmnYJ+WCeowmc4JD6CQzQn6UJY9CUXQkuoJBWCddgkTUJtbUWswl9UJr1CXmgnvUJPtCfRgmMYJ95Ce0wnOoJ9GCV8QkrYJC6CfRglXYJz6CXu3EF6+laCb9glpoJEVCXGgk7MJEBCfXgn7MJG6CYcwkBoJ1gAECwllEJYaCaCwnyYJHeCUFgntoJWaCe6gkc4Jo+CQDQlNoJQlCc2gnvUJUdCT7QmVexwIUd+q4CiRWLCRqQlA0J4T8Z7/7MPmzTCaJglN4JC5CebQlMEJz2CR3gn9MJW1CazQnC0JnOCXhgk3kJ+lCemgmS0JsaCbYQkGUJdTCRcwlXMJydCZjTE73mSTCSTQkxoJQjCXgwmpkJDAgaZglsYJpaCfYwmnYJ6aCQgwlTMJrLCULQns0J1gAJ7Qn+oJimCefgm0EJ4WCcrQmT0JCTCfWQkS0JQuCdpgnY4JkmCXhgn1oJwpCZgwm8EJXdCa1QmOoJoFCaMwkDUJ4FCRdQmwYJW2CbfQlH0JbOCeWQm1MJL2CU+QnT6x0z8TrgnUYJ8rCXbQnXYJG6CcqwmH0J8FCdMwlSsJbNCfgwmmAAY5CUXQkPMJ3FCUJQlEkJ+LCRwQnWAATrCZ3gn/YJo2CWawkWsJ/qCVawnckJNrCcEwlk0JF5CY6wmnkJzrCSDQnO0JHrCZGwn5MJLaCecwk2dxQU3o8/FL6xL4kax1FAzepC4Zr37kLhePgVeFEIwRIYFrgwkCEJ5RVuCwk4UJuWCTyQlclho+CSmgllEJ+xCXLgkJvm5RCaGgmXkJ0LFrQQkxYJPWCYEQly4JsFFotglFYJPvfnyQnu4hXeCX5tYlYJp6tucQmqkJssFiGQndoJBGCVdQnX0JXeCZjgnHMJJeCcNQnlEJYeCYegmZbW2aCS2gnv0JyByE2gkEkJz6CfSQmF0JdxVqAQmrkJp2CXowmzoJv6CbkQlToJWFCRyQkLkJ7aCX30a2UJomCdAQmC6OaTCQ1QnFI+KWCc6gkTsJx7CS6gnZ4J/S4dYuG+GWSOCSoAAlEJudCcpglosJw1Cd5QlpoJeYgQrQmSsJuHCXGQnNYJm78TWc4W6O8bCaYwnj4JQ+CQtJG29x7wAIewlA0J39CSmgk10JY+CTqwly4JLsEYxwnTUJH+sXDH4ESh2aCZ6gn5EJW2CcRwmckJI1CRswnlkJC6CVhQnC4JpgALagl74J7tCTOglHkJVGCfqwlQYJJ2CbQGFicJA+CUJgnHMJCnCf5gknYJpgANtQkboJ02CQaQlpoJrqCUhwlGE202CcRgmR0JaWCWmgl4oAvbCQNQknsJjjCc+gmVoJhaCYvQn1kJEdCTFAAqcJkdCQxQnwYJYhCcBwllkJIGCZqQm7dRJUUfPubgkJ7FCd+wnOcJrnCUeQnuoJ1UUbgADxMJUmCcOwnQEhalCV4QkGMJ8tCRDQlLkJkxDuFwk/EuUXCe5QleEJQBsc7gmlYJYLCdmQlmkJRBCeJwkwYJ4XCdtQnJcJaJluFwnh/g0XCepQmgDxrRTj1drpcJgpCQ1QkacJzrCcRglD0JgFCSLgmnYJ+pCXLgl17WCtCS6gl3EJAWCUrgmIYJheCZn+Z1cJ96CQ1wlE0Jz6CWmgk14JtVCS1wnMYJXdCcNgmakJkFVqbgndkJiNCWMwkjoJvXCdIwkffmw3CVBgmjcJ1lwRz+bxMJtBCaDgkZcJ/mCQRgnloJbBCb8wnXMJaxCTGgkdcJC3CYhglLcJ8jCakwl/MJ4zCZKwkbcJbdCQdwn3YJfqCdMW6YkJkmCWwQlI4J8mCfOglDcJ9GCYdwlhoJo3CQeglgUJxGCTwQmd4JrXCbNwnb4JvnCdAbGjfx8CkfPubRYJsWCdEwn/0Je3CQ/QnvoJaDEJtwna0JyV5uvglLkJN1QeFwm7oJ+6CUewnycJwdCUpwm3SBB38XSABxcJQNCYjwkSkJQnCfRwmXoJ6HCZ6gnaMJMaCQqwltoJw0dpjwlA8JDtCeFgk1H24XCbZQkYUJ1PCYJwlecJS5CSE+Ds8JwPCV4QklkJhXCZlQlffx5VCUbgkN0Jw9CX6gni8JqnCf+gk1kJBGCf4QlpUJNhCXcQkXYJnWCUuQmhcJanCcTwn3oJpPCaNfHOwAgDCWJwnnsJ4rCZAQmVUJD2CdAQl8vR4JCYLwnlkJaOQJjwniYJvwCe8AAvoJIJCdQQlEkJbaCdcwn14JAWCSTwntcJtPCTpQnecJnvCUqW4i8JnPCRBwkz9RvGtgmQ41hxWBsbuuHZyBOVYU7/E7hxdIAMXQkRoJYWCUuwmIMJHzCafQn3UJn5ThRwls4Jb1CTOgm4sJEdCW7gmakJDXMSZwlmcJ2lCWGgmWcJ7WCRQQl5cJwTCRBQkloJHOCR2glM4JkdCeXQkE8J3aCd2gndEJ7aCV8pF93BJ1vnxglhoJkmCYhgmlYJ5WCZjglE0JjDCdYAAYYJwrCQaQmb1WNpCW7Qn8sJY9CbywlSEJPtCdX/EJ8JArCS9gm8sJ86CSawmlYJ5NCQZwnOoJH9CdpwmXMJj6Cc9Qmb1Wm5Cb4wl64JldCfvgmoRxPf8YWQnGsJWbCQWQnmsJeGCStQnDUJ79QdjgkRoJDnCU3gm/cJXvCb3wnvVh9nCUEwm44JMRCeGwkmEJzaCYFglE4JUjCYSwlybhgNYeVQk98JA3CfOgmAMJ3DCc2gl+oJS9CW6wmxYJrtCfmwllMJ5ZCR2gkBoJHdCWzgkdEJIeCbJwn+oJeTCYWQnLcJ2GCfUwlQCJijCfyQl+kJQAiezQkIYJ0VCZpgmmAApmCanQllEJAFCTBgnZoJM6CRVgkA4JNTCcNQmf8J8ZCRPwngCJ//Ce+Qmma2ahCVXwlNoJsAiSNgmM0Jl6CSDwkJoJC+CeEhZasJIGCdmQnwCJLtCawIkTUJyqEdAIkx0JXtCY6glYAJwv5r3QmKUJHeCTSwkIEJuVCRTQnlMJCrCYBQnAUJiGCanwmSCJF2Cb3wkNcJHXCeWGHo4Jd3CYDQmVYJhrCTnQllEJz6CRHQnBsJuTCRbQlLEJCeCVUQml4JrFCRwQmmAAQGCYEwnxkJXeCQYwl2cJkZCcNQmbEJHPCbrgl58JyAieNQlgMJ7AiRiQktoJDLCQawmL4J0jCX4Inn4JutCTRgmUcJ4BCYOwmlEJNTCWowlU0JU0cZM0HvAA9gidewlToJiHCVZQlqAJBQiXVQllEJg5CcOwlaAJWYFnPgkZEJYaCTFABaCJeaCSMQmFCJr7CQYIn1kJmlCQpgl5cJwAiQuhHFTWTQidmglN4J6RCRhQnp0Jg2CQaQmVoJVgia8wmNoJEZCd2gmAcJF1CQngmNEJ/qCQt9GFCJVQiRugmQCJM9CR8QmOUJcjCaKQkmcJzqCdMwlGUJPgie/QnzoJ3DCUNQn2oJHeCbQImikJAwiUDwmW8JpbCdUQko4JajCfsIll0JW9CRfwnPoJVGCWDQkhoJegiQngmA0J0zCYDQnRUJeaCegQl9EJIuCWGgnacJJ5Cc5gno4JWmCSjglgiJRaCaNQmgUJG9CRwwlTCJ7GCThwnakJtLCVcInM4JhzCSKwklAJdIAFYwkP4JxtCacQmL0JheCXUIkL4J/QiS0IkVCJKZCQmQkroJZ+Psy8FUYJvfCY0AniEWi7CU4wmesJERCbFPEtEJxAiUSQk80JO6Ce3QlBMJDeCaXQnI0JqNCUdwk6CJK1CRhQm2oJj2CWswn00JqDCaTQn2sJfqCTClEeYJLrCVRglEEJLaCQhQmTAJfGCahQknUJq1CedQlrsJ+scfc84e0J0zCTFAABEJvrCWtQmiYJNhCRIQkjoJ95CblQmz5eaoiWZwmEMJJoiSZQn67hIN1scIm8EJHeCViIknEJz+CZcIkJYJKrCfKIlhoJKv0fjt76LURoiUQwkQcJxWERobHTCJ3NCS6gnNcJEbCY6Ik4iJQOCd/EhHkJPoiVaIklsJ0bCcLQkrTxUmdpWgllsJneCTvgl5oJrWCbzQlaiJvBPjrwmS8JAe4c7wmu8JXhCe7wnJ4JIhPozgn0UJyLCdIIku8JK5CUNgnLkJwIiXeQle8JGnCT3wm+8JRJCf7wklCxYlCcWgnnsJq7CVegkwFerYieewkbsJSICS+gkpoJB2CbxQk+YJg7wSFwkS8J4mCay1Z68JinCSpQmwcWlPCRBwmpBBBICTy1ZNB+OdjpIIlC4JfRCaDgmMMJ7+cLVQn1UJDtCQW84xCJfRCYhgktoJA+CbXwle8JJeCd9wln0e7qCaon4diJxzCUAQk0MJTYicFQmDMuRHCRPgmuGxBTCQMwn4EJpaCYrgnC4J4jCcRwly4JqoCZTwlpYJQgidtQkqAAJWCc2gnckJ96CdUT688JoFCSUwn98JZIiUBInwYJIEiSSQlQYJzRPoOgml8JgL9hhwly4JdhXgxgmckJ02CSOgk18Jw1CdmgmEYJy3CUZQlRMJneCVAQnXUJkvCYZoFWcJR5CTpQmzoJLlCVeNFc4RdPCZSQkJ4JSIicAABKkJzqCcaQk56R9utgoQmeoJLaCcAABqEJdGCc3wnQsJRlCRXpG6EJLqCcAADGEJLwicoInAYJhPCdpQlCSJ0YCfhLaH8JxQiTSQkJgJZvCV7wkW8J1VCdaLGRwWkTCfmQnUYJF+CUngnLsJmDDi+gnk4JzOCaXQlH4JcuCQWAlvE+sVCfVQmX4JP4icvpHvAAhnCRFgn2oJJkicXglWSJekiZqy6MEJukicnglDFe7kiWmgl8kJNWCf185L0JYbCZlgmJGxMb9oAwmmSJJjCZZImPMJrkiSeqGAMJSTCTpImmSJ0jHjFIl7EJ96CR3gk+SJM6CTVgkX8JKVCSXgnkMJeuCbYQnlMJkLCTOgnUEJRGCVtgmhsJKaCRc2FvE+SOCaNwkqAAIwiQ7QmHCJjqCdRYiLMJdaCfOgnJCJbRCUlIkN0J95Cd0QkXkJaaCX+gk2EJW4iXmgkO0JgkiacIlckJCEiU2gm3UJQkiQ3hHGuW9kieWglOSJEaCS5Iml0JygANVIn8YJH9CfVInQ8J86CZNInOoJM6CfOgmJ8JD6CfdgmNYJwFCc+glIYJ6uCV3gl7MJfqCSCQkGMJvwidGgmxoJKaCQQIly4JyCFtXQnbEJwwiSNglhsJf7CQzQnhcJEtCdGgnREJQmCd+QlBYJBNCeaIlVSJ3JCY1gmRoJS0iaoZGtoJ5RCbmgkD4JHBCf185ksJVuCRYwnlkJcGCXjQm8EJAnCRWgmGGRdIAIlIneMJ0Eib1IkNUJMgia7QmIcJ9AiQzQm/6W+EifWQnuSJ7ZCRQwkIYJwDCYc9avCJuUiVpgmQiJcWCR3gkD0J1mCWfgmF4JsVCR4QmnYJ6wMTegl7EJBpCRhgnb4JheCUjgn+UJSGCe+gm2oJEFCf6gmJ0J6aCcmQm1sJgrCdYABaiJcgiY2gm/6WX4iTMQn/iJWmCf3wkIvWGMiQ7Qn+MJ4NCZewnWAAoWCfbQm64JH9CWtQn1UJSuCcLIl80JtYibYQkXcJ0aCZMwnk0JCTCXhgkESJz6CeEhZ+oJxGCUeQkgyJxaCQcIk6yJnxCQNQlVMJ3RCe+gkOyJeOCZ6glQgxI+CRUIkNUJmDCbVImmAAe7CRlInaSJ9uCdZgkLoJ2AiTMwmCMJEhCVHQm2CJHAiWm2FFAAcGCWGgkhoJDaCT/hFVUJjfCTYQnjCJHFCeugk4UJXeCQhgmbCJABCWCwkeCJnhCdDwnj0JT2CaLgmfSJPQielAnf0JeGCeWgkCiJpMichgnp0JS5CbagljsJKaCVbIk30J12CTGQlX0JqsiSbwlE8J1kiXgImR0JPrCa3QmmYJVgiYkwl7EJncidOQnxkJSgibaQml4JDaCVdLEvoJM7CVRgnNyJj2Ce5IlaSJM5CUhgmBCJy5CVRQmDyJY0iQoQDkzRW7YY8vHPWOwcicrIlLyJM8iR0wlsGBHaCYXIlUmRBmAemwnJiJwcie1ImTEJnUifTQk9SJfsiSrIlnyJlpCZNQkrEJ+9CRyInxkJz7CQrQk5CJDaCb/pZzkJD+CYDAlqse4rCRJQmWUJu5CTmeFmzRzsALFImcMJ9ZCQxInfsJa8iUpglt0J9BCXbLHwwJ9vzgOwmWiJ/mCdvgnIwJQxCdRgmN4J0BCejAn0cJzBCbqIm7yJIM1hHQnn4JTMieFQm0rxdoibBglUMJrZCdAQlvcuGvCaFgk+YJGHYb3GGqAhoc0RBDH8LwUYieKIm5UJpmcW0Gy8KJd5CcWwn+4JIxsQNSFEdh6EMQIon6wJ+KfmbAlFkUxvCcHQlBoJHdCU4Ily0JfNCXkwn+oJzHCSWwlSMJ5tCYDQmNSJjaCWGIk2MJaaCbTIlxCJiGCX6gkd0J7qCUzwm1EJ8aCTGQl7SJBpCWhImWsJHfzvookm0JpIicoonboJqiiXzInqKJRdCfpgm+kJKYiQMwmtYJhZCQPgldYJEcCdKIkHYJs7CeR5bNUJfkiYArHvAA4SiYeQnUcJwvLoOglJ4JmWCT857cMJYX1vRwmukJmWcVMwljoJE7CRu84KEJm6CRNwnpoJkdCbown88JqUiZxwmgWRU+CRugmZYJ53FrCIn44JxcCVzHioYJkdCYugljiJ6xsUJBZVKJgzCX4QnZCJ+DCeex4uYJ5mCeSInMKxpCYZovZwKJIDCd5wlACJV6CSpEHeYJQTCXUonvMJpwiXq+500J35CcIImK8JwyiWIrF4kRvfvjFAB7cJIGCfDQmzKJfJFr4Im/kJp2CVDgm2vuSXYQp24Ei+dzCdWwnvyJRuCZ0wnHZxtBUZOn7deWjQiTBgmqsJJyiT9Ql/qW8bCXb05WcJt2ceun6vwJ66fvQtEe0+0uccNXa2oJOWCVCwndoJYVCfrgneue3lCREolKXhppCbFgn64Jc1duTgkpoJIKiVd5bY4J6aCR2QlQqJIKiVYbbEkJijCfrglydWgAAFHQm6CSfy4LoJmpCbxwmgkJXP1rQQndKJYbniGgmv8JQZCT+IkxBu9qCfpgk+YJ1ottmgkh4J+uCa1w4hoJCKidRwmc8WC8iQioksYJPb7segmkYJrmCT0ol5Pc0tIdMrGswxZnVjN2HTGhHIDsXnHf7+BRURN2GrJhmIiQ1gm4CJR0iQWglBMJzlCXhgnD4WebnkRwnkUJW8iVWQlg4Jd4jF3glAfuH4iU+gmyyJ5+CXeIzISJ2eCaUgmImxYJoS0xYG0hyfjh8mGpi+XyYTdvHf5xUyCfdvEzIJuJseBRHdXhRyCY6onjLRybViTvGkmxjEtlfDEdLRlJsV2540M+rKCXKVG3dhzowauL4yyIzJsSteFuH+gAAORwgAAExwgAAOBwMJAdGokxqJgAAEJwgAAChwgAAERwgAACJwgAAIRwgAABJwmaiYAACscIAACAcFGomAAAxHCAAAEHCAAAjHDJqJxaiYAACccIAADYcIAACCcIAABYcI2olv8eCaifWomAAAOHCAAAmHCAAABHDVqJmaiYAAAscF726AAAAnCAAApHCAAA7HCAAAtHAFqJgAAOhw5aiYAACScDGomAAA1HCZqJyaif4z6oCeLAjoAACocJWolyBOgAACBwlaiSOolTqJbj3nuonJqJB6iTGonpqJtaiamonlqJMaiTuokjqJ/aibWomNqJE6icWomAAAMnDJqJQ6ibWomAAA4nCdqJ5SMQILbHqJp6ieeomXqJ16ibeon3qJj6iS+olvqJn6iaz2F+zmv6iROolnqJF6iVeok3qJd6iQ+onPqJr6iR+omdqJgAAEBwc6iROok7qJ0aiZmon9IxnaiYAADMcKhomAAAbHBzqJaGiXOomxqJjaiZ2onlPeqaiWRokZqJtaiehomxqJI6idmomxqJFMIfholEaJJGifRolLqJnaiWRol37x1GiVGom0aJHGiYuokjqJV6iZT+4jqJLaiazT5QaJBaiTWokNqJzaiSJ54JqJUmiU2oliaJoQjkOomAAAVHDsaJE6iYpondS2gAAHhwY6iSRomCaJwmiY8jF0gAQ6iRuon9qJmaicpol5qJXgnlxol4aJi6iZ2onlqJBaiSpolqaJimiaZA7yaJzaifZomUaJQKMbgviuaJ06iYRomOaJlJca5om1qJxaiYAAAMcKuQGlqJgAABxwq6icijF0gAWGiVGomZqJo6iROokBaJQ6idOolxaJHEwVFomZqJXmiY2on1qJymiXGolclx7wABWonJqJ6GiZhonYaJ4kzqhonqaJwmsYyiGktei6ieWokRqJI6idWokFqJgAABRwxaibYO5ZqJuaieZokcHxzsANVol1aJDWibPEH1qJgAAGhwimiaKjGhaJ4WiYPCG7COymidFolDqJgmiXmonZqJqaiThokKoxqGiZ2olRqJyaiVuokRqJE6ibZomAAAlHCdaJta0bzJYKaJi2ictokFqJa2iSwyFDqJmmif2om5qJI6iXxomWaJ1MtsponFqJZGiTGonJqJc6iRGompqJyFsXY+EnaJU2iZOon9RutaiQWonGaJpndomok7qJc6iYNokJiWo6ie+okFqJMIjgWoknaJWWiaYfGAAAwnCLqJgAALBw2aiV694Q6J0OiZmolRqJgOiV5C4F2Bu6YcXYEbeejaicxona4J1miVGol5vegAANBwNGiYtM7A6JmOicQNaoaJ0aiU+mHY6Jh2iUOom1aJK2iaCz61QutWif2okjqJtaif2oluaJHLkawNbZHx7wAIAABQcGOonZqJE6iemomAAA+HAjqJT6ieBmGjqJk6iQWolmaJ06iRNokFqJVmiZ2omvqJ0GiTngn9axHlsc6I6ay+RaicWomSaJAWidOol4aJWRft2olRqJK2iTjokGMRuL4bdrE2uRnbFhronKaJeGiUOolzaJawHk1on5qJXOiTzomthONuiROonbte9uicVonXqJIWiYAADIcLlbHs/WWQ1rlonA6JIWibmon0feqaiXZom3qJBaiSrone6JI6ib7onTaJMBCW/rFIVxGWicmokxqJrmiRuoklqJxOid1bGGaJh2ibmonnqJYOiZ2ok3qJ+miUNbHiRe+GiROolTqJpaiYjolZ6JoOiVNVEkUOUuiUJolJqJgmicmonF6JaJftRDaZG2QJ8eXolXqJiaiVXomAAAkHCI6JykrrlokbqJeGifWonWaJ2aiaDonJzOuWiRzon9qJyaiTdolRqJnaiRRomPJBg+icPomj6JnaiYxolJ6J3NAVPonJqJ+OiXxomC0Bi+iaTol66JspfqWH4FqJhGiX3olE6JMaifWomdqJEaiVuokLqJ/1sdvom76JIOiQfokRqJnaiROoks6JdW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U/3oAAAMSppimAAAXMqoCeJj3oAAAVSoO96AAAwHosCOgAAFZKlj3nIE6AAA70aAAAuLFuPegAALCavqPtJinF6hxmKQ5iniYpgAAP7mxpAd5im+YpusJv5ilBYpDbid5ikKYpEWKcFikB3hHglmu94mPeeMPoAABCOuU97YvegAAHFygAAKl6qWKfuMGGA2GWKYAABuGTlinYNJTC5mF95JYpRWKc4DaAAABErsfesJEe5imAAA7BbkPeInnhJin1YpGkDqa96AAAnfHG9huVPnpA6AAA1hqAAAoopeCebWKYAAC92si97uYJrWKYAABiFs1inuaJMr4IAAB52oAAD9fkTYGAAAWmFzYpLz3t896LYpCdETNimAAAhuaAAAcxmAAAPBYcTBCL3sNimoPhzsAApimAAAn9qAAACvniTOrWKUK95JwhgAAGg6gAAAip97doAABg6oAABltnsE6AAA9160veYmsYAAAHpl8H6AAAtd6AAALJpjCe62KT5T6cQuD2KR9ilDaJeGFoK97/YpvLXmi94i6cUr3kj94baJXMeDDiksMhBmKZAADiuBu73kfNaAAA2EqAAAX3qRvRZX3qy96H0R+i1Ma96AAAmYo2ve9r3pxQHj0+gAAIAe835ti4SDQO8mnIAAAM6kjikGHx8OKSSE46Ypph8Tj96ch+YL3jj96O9WU2KYAADD+gXYEbYpu6YYAADScmi94aQ+3P3ktiny4JI7lIAAAlcoAACTygLilAjugAAGN+SULoAADpPnm975veZ2KYtM6AAAojqs4pVOFNW97q4ps0wd694q4pTZcYAAAs5lP961QugAAF5BgAAPTmuofkO96AAAbdrs6JEunIAABvcs8T7feeNj3nO96AAAFmo54JdmKWu96AAAIW79axdmKZ1ilos+gAABt+vqPqDaZD7xtoft5+TKYpRWKS+97vvejLSYFbyAAAt9GfvecMwVNimAAAb6aAAA8sqvvefG0d5ilrAen2KYAADgFoAAAZGch965vebRfpHBaAAAFQbe4pgAAMuazxPtfglczO6OKV4fjY4pPLPoAABo/oAAAjfvR95sfezeKdGH7p4pfH3jd4l0gAgAAHxm+r3oAACK/rtinvfJM/5gZinGYpU/3oAAAK5oAADJetrikVMR+V/oAABzchPinT4pJj3tViml6JnR5q2976A+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Pe/jPkUynI4+8j3jY96WYpZj3oAADWro0SmwQODmKWF95yBOMH3m494gA+xeoQtSlGyp0T3s7AAmypusJmbKmwfeoGscUz7IwhHglo+ylrveeMPoAAAmOhej4yphJj3sZikVPemWKS7KkUwhnsqRU95rvevsqbxgl0gAj7KWF96uypF6Ps4DaAAAVErVYpqtETB96AAAxFYekpmtEYAADqmju94JypGkDoAABi3q9j6AAA8hmQM+3Utr1ik5ypuvVus95pypfDSe8ACZypgAADfanYqU/SGZypiz3oAAC5FjOQGAAAZ9q/PelJcYAADaYYs973o+gAAMDxQFKQUynLYpf4Lq3KkdypgAAPGu3cqaSK6wtepcqa9j4WveQ+KVlgl0gA+2KSi97ovegAALA6gAAFL54kzoAABRCXi97Fyp1KMYAADNSUK97vkWgAAMjqQr3qS14/YpgAACxqtg7nB96HypXwfna96nyps8QRV96AAAtBk1ypgAAANOnELtvKmAAAe3nW2BkOKUfKkKoxaL3oAADR6qWykcd2aL3vLpwsMhbPKYAAAwDLXilepI0H3jLKmAAAsAx44pzZ/sa96AAAVn5/yparXoAADfaYAABmgb/Kmmd2QBKWXKlwKpn8QVm94qaxmZFLYSkyy27OKQZ4nvAAgAAINKXOKbWJb1ypfOKfYfHvAA4b3qjom2eJzsADLinbYpgAACtyG3noAAA+esril5vegAAAbp+b3gvKmLTO2L3mLpxcKpQWsWwqnVvefCqa80kyvghCqYbimZtes3du8AAwKp48qbVC6AAAu6GAAAyhE24p0iqR2XHvAArlKba95KKpmF/nSACAAAKVaAAAEhZTvegAAIxe4GYfLomIZhzsADrKnrPeBcqS3gl/qWOsqc6I4yypQcqdfYFmPeVTKToxGAAAPBuAAA8PuQAAimnInin66JJrkYbonAYxtkltB96vvegAAPZKlfKR0yGxiO7wANESmAAAvipTve3uKa+96AAAgyr/2BxeKYFbyHUp+iqXN8nAKpP4SKAqk8s+WOKYAADTXoAACWTg7imAAAJf6AAAIr70feqhKTkqkFKp0YfjUSmAAAxAmLPe3uKYAAAqyv/ymxX+gAAPYZ+r3km94TypLrSWzykxKpgAANV6vrSXSACAAAefodKpYunMvilTWx6+KYAACQ8ajD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KROalMUpKbgem4HlGpm4PjLKlxypQeqZxSmtcp3uKe5an9kpE/3oAAA+foAAAxfjGqmwLWd/kcyBGAQ+lSqUHqkKUpgAANMhalKQU97N6p8mnOJj7p6p3uKSYamAAATAmIveNxKf2SmIg+TIPqso73o+xlKaFymAAAmq6eqpfFKelak5WpeVqZZqk9mpUyqW7inVfe8mqUMKlig+OAPkPKnjcBQLUVzHjuqpzeqRcSn5GpbPKV6T47DJk0lu6qlVo+vVqVkanL4pA1qRcMlCbmRFqWZqlB6pJ5MQHebffeMsqRpD5s8ph1KfkanaaplFqSlSlGWJh7sYFbwXEpMsqZoqli6c0RKQVSn1Gp+lqfJak6Kp3kPv2SnLfeh1qWs96ZGpQmqShjYX8hgVvMNakXEpOiqV2j5Zg+9RqbTSmBCR235MNal8SprCFrmqmow+r1qZKD49kpcpqdVj6AAADq5w4+9xKQdanrUpm1KX2h76WpzUXgRakkWpvT3mXimrWpBVqXb95GQ+IEKbkan5Gp0cqbIUHuk+KVKXZYlnoezsAChSmAAArsluk+DZqczoBovejQPjgD72GptSqTUSl/g+0NKROqnvAAgAAEk200qd7ilJvegAAPexlSqU6KnoAAgAAFHRv0Pu6qnp6pRNKW23HTqp7uluTSmAAAL8be4pOiqTc94fyp3tKQVBHuqpTNKQWak4A+gAANNR7NKRjD42w+xMPle34LqpzsADoqlmWpUr3jgD5ig+r0PkcKne4prMPoAABcOoAAAf2g2anIxJAd5rLSlpexmantLamK0pusJrLakXEpWD5joqnLfeccPnrSnTFBxD5u6qmAAATs42PestqUxdGaw+m1KW0GxSWpr1MebSlZrm7qqbial4kp1ViXZan20pctqY7SlyapStqcTD54w+zZPsJanAB2E+sbxakTkpIyqYeamvexMr4DzanKA+eJKWJan5GpOAPoAACnQRcSlxw+hEPuFamA2pNxKXLalB6pOiqenqlpWp4mPiAD7tveigPpkakVQ+ZmqYAABeCb3SmAwRXEyXRqklmpudqVkak3EpkoPt7imeqpgAAAdqDZqTrKnG2pmtqfLamV2p2iqdXanpWpddqQ3akZGpTdqa3akHcpc+sf3SmPPxmBKYAADusYAABh8iXilampsf3rOJENWpCXKWuJEZTe5p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";const {react, reactDOM, excalidrawLib} = window.eval.call(window, `(function() {${LZString.decompressFromBase64(EXCALIDRAW_PACKAGES)};return {react:React, reactDOM:ReactDOM, excalidrawLib: ExcalidrawLib};})();`);const PLUGIN_VERSION="2.0.4";function _interopNamespace(e){if(e&&e.__esModule)return e;var A=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var i=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(A,t,i.get?i:{enumerable:!0,get:function(){return e[t]}})}})),A.default=e,Object.freeze(A)}var obsidian_module__namespace=_interopNamespace(obsidian_module),React__namespace=_interopNamespace(React);let random$1=e=>crypto.getRandomValues(new Uint8Array(e)),customRandom=(e,A,t)=>{let i=(2<<Math.log(e.length-1)/Math.LN2)-1,n=-~(1.6*i*A/e.length);return(s=A)=>{let a="";for(;;){let A=t(n),o=n;for(;o--;)if(a+=e[A[o]&i]||"",a.length===s)return a}}},customAlphabet=(e,A=21)=>customRandom(e,A,random$1),nanoid$1=(e=21)=>crypto.getRandomValues(new Uint8Array(e)).reduce(((e,A)=>e+((A&=63)<36?A.toString(36):A<62?(A-26).toString(36).toUpperCase():A>62?"-":"_")),"");const ERROR_IFRAME_CONVERSION_CANCELED="iframe conversion canceled",LOCALE=obsidian_module.moment.locale(),obsidianToExcalidrawMap={en:"en-US",af:"af-ZA",am:"am-ET",ar:"ar-SA",eu:"eu-ES",be:"be-BY",bg:"bg-BG",bn:"bn-BD",ca:"ca-ES",cs:"cs-CZ",da:"da-DK",de:"de-DE",el:"el-GR",eo:"eo-EO",es:"es-ES",fa:"fa-IR","fi-fi":"fi-FI",fr:"fr-FR",gl:"gl-ES",he:"he-IL",hi:"hi-IN",hu:"hu-HU",id:"id-ID",it:"it-IT",ja:"ja-JP",ko:"ko-KR",lv:"lv-LV",ml:"ml-IN",ms:"ms-MY",nl:"nl-NL",no:"nb-NO",oc:"oc-FR",pl:"pl-PL",pt:"pt-PT","pt-BR":"pt-BR",ro:"ro-RO",ru:"ru-RU",sr:"sr-RS",se:"sv-SE",sk:"sk-SK",sq:"sq-AL",ta:"ta-IN",te:"te-IN",th:"th-TH",tr:"tr-TR",uk:"uk-UA",ur:"ur-PK",vi:"vi-VN",zh:"zh-CN","zh-TW":"zh-TW"},{sceneCoordsToViewportCoords:sceneCoordsToViewportCoords,viewportCoordsToSceneCoords:viewportCoordsToSceneCoords,determineFocusDistance:determineFocusDistance,intersectElementWithLine:intersectElementWithLine,getCommonBoundingBox:getCommonBoundingBox,getMaximumGroups:getMaximumGroups,measureText:measureText,getDefaultLineHeight:getDefaultLineHeight,wrapText:wrapText,getFontString:getFontString,getBoundTextMaxWidth:getBoundTextMaxWidth,exportToSvg:exportToSvg,exportToBlob:exportToBlob,mutateElement:mutateElement,restore:restore,mermaidToExcalidraw:mermaidToExcalidraw}=excalidrawLib;function JSON_parse(e){return JSON.parse(e.replaceAll("[","["))}/Mac|iPod|iPhone|iPad/.test(window.navigator.platform);const DEVICE={isDesktop:!document.body.hasClass("is-tablet")&&!document.body.hasClass("is-mobile"),isPhone:document.body.hasClass("is-phone"),isTablet:document.body.hasClass("is-tablet"),isMobile:document.body.hasClass("is-mobile"),isLinux:document.body.hasClass("mod-linux")&&!document.body.hasClass("is-android"),isMacOS:document.body.hasClass("mod-macos")&&!document.body.hasClass("is-ios"),isWindows:document.body.hasClass("mod-windows"),isIOS:document.body.hasClass("is-ios"),isAndroid:document.body.hasClass("is-android")},ROOTELEMENTSIZE=(()=>{const e=document.createElement("div");e.style.fontSize="1rem",e.style.display="none",document.body.appendChild(e);const A=getComputedStyle(e),t=parseFloat(A.fontSize);return document.body.removeChild(e),t})(),nanoid=customAlphabet("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",8),KEYCODE={ESC:27},ROUNDNESS={LEGACY:1,PROPORTIONAL_RADIUS:2,ADAPTIVE_RADIUS:3},THEME_FILTER="invert(100%) hue-rotate(180deg) saturate(1.25)",GITHUB_RELEASES="https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/",URLFETCHTIMEOUT=3e3,PLUGIN_ID="obsidian-excalidraw-plugin",SCRIPT_INSTALL_CODEBLOCK="excalidraw-script-install",SCRIPT_INSTALL_FOLDER="Downloaded",fileid=customAlphabet("1234567890abcdef",40),REG_LINKINDEX_INVALIDCHARS=/[<>:"\\|?*#]/g,REG_SECTION_REF_CLEAN=/([:#|^\\\r\n]|%%|\[\[|]])/g,REG_BLOCK_REF_CLEAN=/[!"#$%&()*+,.:;<=>?@^`{|}~\/\[\]\\\r\n]/g,IMAGE_TYPES=["jpeg","jpg","png","gif","svg","webp","bmp","ico"],EXPORT_TYPES=["svg","dark.svg","light.svg","png","dark.png","light.png"],MAX_IMAGE_SIZE=500,FRONTMATTER_KEY="excalidraw-plugin",FRONTMATTER_KEY_EXPORT_TRANSPARENT="excalidraw-export-transparent",FRONTMATTER_KEY_EXPORT_DARK="excalidraw-export-dark",FRONTMATTER_KEY_EXPORT_SVGPADDING="excalidraw-export-svgpadding",FRONTMATTER_KEY_EXPORT_PADDING="excalidraw-export-padding",FRONTMATTER_KEY_EXPORT_PNGSCALE="excalidraw-export-pngscale",FRONTMATTER_KEY_CUSTOM_PREFIX="excalidraw-link-prefix",FRONTMATTER_KEY_CUSTOM_URL_PREFIX="excalidraw-url-prefix",FRONTMATTER_KEY_CUSTOM_LINK_BRACKETS="excalidraw-link-brackets",FRONTMATTER_KEY_ONLOAD_SCRIPT="excalidraw-onload-script",FRONTMATTER_KEY_LINKBUTTON_OPACITY="excalidraw-linkbutton-opacity",FRONTMATTER_KEY_DEFAULT_MODE="excalidraw-default-mode",FRONTMATTER_KEY_FONT="excalidraw-font",FRONTMATTER_KEY_FONTCOLOR="excalidraw-font-color",FRONTMATTER_KEY_BORDERCOLOR="excalidraw-border-color",FRONTMATTER_KEY_MD_STYLE="excalidraw-css",FRONTMATTER_KEY_AUTOEXPORT="excalidraw-autoexport",FRONTMATTER_KEY_EMBEDDABLE_THEME="excalidraw-iframe-theme",EMBEDDABLE_THEME_FRONTMATTER_VALUES=["light","dark","auto","dafault"],VIEW_TYPE_EXCALIDRAW="excalidraw",ICON_NAME="excalidraw-icon",RERENDER_EVENT="excalidraw-embed-rerender",BLANK_DRAWING=`{"type":"excalidraw","version":2,"source":"${GITHUB_RELEASES+PLUGIN_VERSION}","elements":[],"appState":{"gridSize":null,"viewBackgroundColor":"#ffffff"}}`,DARK_BLANK_DRAWING=`{"type":"excalidraw","version":2,"source":"${GITHUB_RELEASES+PLUGIN_VERSION}","elements":[],"appState":{"theme":"dark","gridSize":null,"viewBackgroundColor":"#ffffff"}}`,FRONTMATTER=["---","",`${FRONTMATTER_KEY}: parsed`,"tags: [excalidraw]","","---","==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠==","",""].join("\n"),EMPTY_MESSAGE="Hit enter to create a new drawing",TEXT_DISPLAY_PARSED_ICON_NAME="quote-glyph",TEXT_DISPLAY_RAW_ICON_NAME="presentation",SCRIPTENGINE_ICON_NAME="ScriptEngine",KEYBOARD_EVENT_TYPES=["keydown","keyup","keypress"],EXTENDED_EVENT_TYPES=["copy","cut","paste"],COLOR_NAMES=new Map;COLOR_NAMES.set("aliceblue","#f0f8ff"),COLOR_NAMES.set("antiquewhite","#faebd7"),COLOR_NAMES.set("aqua","#00ffff"),COLOR_NAMES.set("aquamarine","#7fffd4"),COLOR_NAMES.set("azure","#f0ffff"),COLOR_NAMES.set("beige","#f5f5dc"),COLOR_NAMES.set("bisque","#ffe4c4"),COLOR_NAMES.set("black","#000000"),COLOR_NAMES.set("blanchedalmond","#ffebcd"),COLOR_NAMES.set("blue","#0000ff"),COLOR_NAMES.set("blueviolet","#8a2be2"),COLOR_NAMES.set("brown","#a52a2a"),COLOR_NAMES.set("burlywood","#deb887"),COLOR_NAMES.set("cadetblue","#5f9ea0"),COLOR_NAMES.set("chartreuse","#7fff00"),COLOR_NAMES.set("chocolate","#d2691e"),COLOR_NAMES.set("coral","#ff7f50"),COLOR_NAMES.set("cornflowerblue","#6495ed"),COLOR_NAMES.set("cornsilk","#fff8dc"),COLOR_NAMES.set("crimson","#dc143c"),COLOR_NAMES.set("cyan","#00ffff"),COLOR_NAMES.set("darkblue","#00008b"),COLOR_NAMES.set("darkcyan","#008b8b"),COLOR_NAMES.set("darkgoldenrod","#b8860b"),COLOR_NAMES.set("darkgray","#a9a9a9"),COLOR_NAMES.set("darkgreen","#006400"),COLOR_NAMES.set("darkkhaki","#bdb76b"),COLOR_NAMES.set("darkmagenta","#8b008b"),COLOR_NAMES.set("darkolivegreen","#556b2f"),COLOR_NAMES.set("darkorange","#ff8c00"),COLOR_NAMES.set("darkorchid","#9932cc"),COLOR_NAMES.set("darkred","#8b0000"),COLOR_NAMES.set("darksalmon","#e9967a"),COLOR_NAMES.set("darkseagreen","#8fbc8f"),COLOR_NAMES.set("darkslateblue","#483d8b"),COLOR_NAMES.set("darkslategray","#2f4f4f"),COLOR_NAMES.set("darkturquoise","#00ced1"),COLOR_NAMES.set("darkviolet","#9400d3"),COLOR_NAMES.set("deeppink","#ff1493"),COLOR_NAMES.set("deepskyblue","#00bfff"),COLOR_NAMES.set("dimgray","#696969"),COLOR_NAMES.set("dodgerblue","#1e90ff"),COLOR_NAMES.set("firebrick","#b22222"),COLOR_NAMES.set("floralwhite","#fffaf0"),COLOR_NAMES.set("forestgreen","#228b22"),COLOR_NAMES.set("fuchsia","#ff00ff"),COLOR_NAMES.set("gainsboro","#dcdcdc"),COLOR_NAMES.set("ghostwhite","#f8f8ff"),COLOR_NAMES.set("gold","#ffd700"),COLOR_NAMES.set("goldenrod","#daa520"),COLOR_NAMES.set("gray","#808080"),COLOR_NAMES.set("green","#008000"),COLOR_NAMES.set("greenyellow","#adff2f"),COLOR_NAMES.set("honeydew","#f0fff0"),COLOR_NAMES.set("hotpink","#ff69b4"),COLOR_NAMES.set("indianred","#cd5c5c"),COLOR_NAMES.set("indigo","#4b0082"),COLOR_NAMES.set("ivory","#fffff0"),COLOR_NAMES.set("khaki","#f0e68c"),COLOR_NAMES.set("lavender","#e6e6fa"),COLOR_NAMES.set("lavenderblush","#fff0f5"),COLOR_NAMES.set("lawngreen","#7cfc00"),COLOR_NAMES.set("lemonchiffon","#fffacd"),COLOR_NAMES.set("lightblue","#add8e6"),COLOR_NAMES.set("lightcoral","#f08080"),COLOR_NAMES.set("lightcyan","#e0ffff"),COLOR_NAMES.set("lightgoldenrodyellow","#fafad2"),COLOR_NAMES.set("lightgrey","#d3d3d3"),COLOR_NAMES.set("lightgreen","#90ee90"),COLOR_NAMES.set("lightpink","#ffb6c1"),COLOR_NAMES.set("lightsalmon","#ffa07a"),COLOR_NAMES.set("lightseagreen","#20b2aa"),COLOR_NAMES.set("lightskyblue","#87cefa"),COLOR_NAMES.set("lightslategray","#778899"),COLOR_NAMES.set("lightsteelblue","#b0c4de"),COLOR_NAMES.set("lightyellow","#ffffe0"),COLOR_NAMES.set("lime","#00ff00"),COLOR_NAMES.set("limegreen","#32cd32"),COLOR_NAMES.set("linen","#faf0e6"),COLOR_NAMES.set("magenta","#ff00ff"),COLOR_NAMES.set("maroon","#800000"),COLOR_NAMES.set("mediumaquamarine","#66cdaa"),COLOR_NAMES.set("mediumblue","#0000cd"),COLOR_NAMES.set("mediumorchid","#ba55d3"),COLOR_NAMES.set("mediumpurple","#9370d8"),COLOR_NAMES.set("mediumseagreen","#3cb371"),COLOR_NAMES.set("mediumslateblue","#7b68ee"),COLOR_NAMES.set("mediumspringgreen","#00fa9a"),COLOR_NAMES.set("mediumturquoise","#48d1cc"),COLOR_NAMES.set("mediumvioletred","#c71585"),COLOR_NAMES.set("midnightblue","#191970"),COLOR_NAMES.set("mintcream","#f5fffa"),COLOR_NAMES.set("mistyrose","#ffe4e1"),COLOR_NAMES.set("moccasin","#ffe4b5"),COLOR_NAMES.set("navajowhite","#ffdead"),COLOR_NAMES.set("navy","#000080"),COLOR_NAMES.set("oldlace","#fdf5e6"),COLOR_NAMES.set("olive","#808000"),COLOR_NAMES.set("olivedrab","#6b8e23"),COLOR_NAMES.set("orange","#ffa500"),COLOR_NAMES.set("orangered","#ff4500"),COLOR_NAMES.set("orchid","#da70d6"),COLOR_NAMES.set("palegoldenrod","#eee8aa"),COLOR_NAMES.set("palegreen","#98fb98"),COLOR_NAMES.set("paleturquoise","#afeeee"),COLOR_NAMES.set("palevioletred","#d87093"),COLOR_NAMES.set("papayawhip","#ffefd5"),COLOR_NAMES.set("peachpuff","#ffdab9"),COLOR_NAMES.set("peru","#cd853f"),COLOR_NAMES.set("pink","#ffc0cb"),COLOR_NAMES.set("plum","#dda0dd"),COLOR_NAMES.set("powderblue","#b0e0e6"),COLOR_NAMES.set("purple","#800080"),COLOR_NAMES.set("rebeccapurple","#663399"),COLOR_NAMES.set("red","#ff0000"),COLOR_NAMES.set("rosybrown","#bc8f8f"),COLOR_NAMES.set("royalblue","#4169e1"),COLOR_NAMES.set("saddlebrown","#8b4513"),COLOR_NAMES.set("salmon","#fa8072"),COLOR_NAMES.set("sandybrown","#f4a460"),COLOR_NAMES.set("seagreen","#2e8b57"),COLOR_NAMES.set("seashell","#fff5ee"),COLOR_NAMES.set("sienna","#a0522d"),COLOR_NAMES.set("silver","#c0c0c0"),COLOR_NAMES.set("skyblue","#87ceeb"),COLOR_NAMES.set("slateblue","#6a5acd"),COLOR_NAMES.set("slategray","#708090"),COLOR_NAMES.set("snow","#fffafa"),COLOR_NAMES.set("springgreen","#00ff7f"),COLOR_NAMES.set("steelblue","#4682b4"),COLOR_NAMES.set("tan","#d2b48c"),COLOR_NAMES.set("teal","#008080"),COLOR_NAMES.set("thistle","#d8bfd8"),COLOR_NAMES.set("tomato","#ff6347"),COLOR_NAMES.set("turquoise","#40e0d0"),COLOR_NAMES.set("violet","#ee82ee"),COLOR_NAMES.set("wheat","#f5deb3"),COLOR_NAMES.set("white","#ffffff"),COLOR_NAMES.set("whitesmoke","#f5f5f5"),COLOR_NAMES.set("yellow","#ffff00"),COLOR_NAMES.set("yellowgreen","#9acd32");const DEFAULT_MD_EMBED_CSS='.snw-reference{display: none;}.excalidraw-md-host{padding:0px 10px}.excalidraw-md-footer{height:5px}foreignObject{background-color:transparent}p{display:block;margin-block-start:1em;margin-block-end:1em;margin-inline-start:0px;margin-inline-end:0px;color:inherit}table,tr,th,td{color:inherit;border:1px solid;border-collapse:collapse;padding:3px}th{font-weight:bold;border-bottom:double;background-color:silver}.copy-code-button{display:none}code[class*=language-],pre[class*=language-]{color:#393a34;font-family:"Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;font-size:.9em;line-height:1.2em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre>code[class*=language-]{font-size:1em}pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection{background:#C1DEF1}pre[class*=language-]::selection,pre[class*=language-] ::selection,code[class*=language-]::selection,code[class*=language-] ::selection{background:#C1DEF1}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;background-color:#0000001a}:not(pre)>code[class*=language-]{padding:.2em;padding-top:1px;padding-bottom:1px;background:#f8f8f8;border:1px solid #dddddd}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:green;font-style:italic}.token.namespace{opacity:.7}.token.string{color:#a31515}.token.punctuation,.token.operator{color:#393a34}.token.url,.token.symbol,.token.number,.token.boolean,.token.variable,.token.constant,.token.inserted{color:#36acaa}.token.atrule,.token.keyword,.token.attr-value,.language-autohotkey .token.selector,.language-json .token.boolean,.language-json .token.number,code[class*=language-css]{color:#00f}.token.function{color:#393a34}.token.deleted,.language-autohotkey .token.tag{color:#9a050f}.token.selector,.language-autohotkey .token.keyword{color:#00009f}.token.important{color:#e90}.token.important,.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.class-name,.language-json .token.property{color:#2b91af}.token.tag,.token.selector{color:maroon}.token.attr-name,.token.property,.token.regex,.token.entity{color:red}.token.directive.tag .tag{background:#ffff00;color:#393a34}.line-numbers.line-numbers .line-numbers-rows{border-right-color:#a5a5a5}.line-numbers .line-numbers-rows>span:before{color:#2b91af}.line-highlight.line-highlight{background:rgba(193,222,241,.2);background:-webkit-linear-gradient(left,rgba(193,222,241,.2) 70%,rgba(221,222,241,0));background:linear-gradient(to right,rgba(193,222,241,.2) 70%,rgba(221,222,241,0))}blockquote{ font-style:italic;background-color:rgb(46,43,42,0.1);margin:0;margin-left:1em;border-radius:0 4px 4px 0;border:1px solid hsl(0,80%,32%);border-left-width:8px;border-top-width:0px;border-right-width:0px;border-bottom-width:0px;padding:10px 20px;margin-inline-start:30px;margin-inline-end:30px;}',SCRIPTENGINE_ICON='<g transform="translate(-8,-8)"><path d="M24.318 37.983c-1.234-1.232-8.433-3.903-7.401-7.387 1.057-3.484 9.893-12.443 13.669-13.517 3.776-1.074 6.142 6.523 9.012 7.073 2.87.55 6.797-1.572 8.207-3.694 1.384-2.148-3.147-7.413.15-9.168 3.298-1.755 16.389-2.646 19.611-1.284 3.247 1.363-1.611 7.335-.151 9.483 1.46 2.148 6.067 3.746 8.836 3.38 2.769-.368 4.154-6.733 7.728-5.633 3.575 1.1 12.36 8.828 13.67 12.233 1.308 3.406-5.186 5.423-5.79 8.2-.58 2.75-.026 6.705 2.265 8.355 2.266 1.65 9.642-1.78 11.404 1.598 1.762 3.38 1.007 15.35-.806 18.651-1.787 3.353-7.753-.367-9.969 1.31-2.215 1.65-3.901 5.92-3.373 8.67.504 2.777 7.754 4.48 6.445 7.885C96.49 87.543 87.15 95.454 83.5 96.685c-3.65 1.231-4.96-4.741-7.577-5.16-2.593-.393-6.57.707-8.03 2.75-1.436 2.017 2.668 7.806-.63 9.483-3.323 1.676-15.759 2.226-19.157.655-3.373-1.598.554-7.964-1.108-10.138-1.687-2.174-6.394-3.431-9.012-2.907-2.643.55-3.273 7.282-6.747 6.103-3.499-1.126-12.788-9.535-14.172-13.019-1.36-3.484 5.437-5.108 5.966-7.858.529-2.777-.68-7.073-2.744-8.697-2.064-1.624-7.93 2.41-9.642-1.126-1.737-3.537-2.441-16.765-.654-20.118 1.787-3.3 9.062 1.598 11.429.183 2.366-1.44 2.316-7.282 2.769-8.749m.126-.104c-1.234-1.232-8.433-3.903-7.401-7.387 1.057-3.484 9.893-12.443 13.669-13.517 3.776-1.074 6.142 6.523 9.012 7.073 2.87.55 6.797-1.572 8.207-3.694 1.384-2.148-3.147-7.413.15-9.168 3.298-1.755 16.389-2.646 19.611-1.284 3.247 1.363-1.611 7.335-.151 9.483 1.46 2.148 6.067 3.746 8.836 3.38 2.769-.368 4.154-6.733 7.728-5.633 3.575 1.1 12.36 8.828 13.67 12.233 1.308 3.406-5.186 5.423-5.79 8.2-.58 2.75-.026 6.705 2.265 8.355 2.266 1.65 9.642-1.78 11.404 1.598 1.762 3.38 1.007 15.35-.806 18.651-1.787 3.353-7.753-.367-9.969 1.31-2.215 1.65-3.901 5.92-3.373 8.67.504 2.777 7.754 4.48 6.445 7.885C96.49 87.543 87.15 95.454 83.5 96.685c-3.65 1.231-4.96-4.741-7.577-5.16-2.593-.393-6.57.707-8.03 2.75-1.436 2.017 2.668 7.806-.63 9.483-3.323 1.676-15.759 2.226-19.157.655-3.373-1.598.554-7.964-1.108-10.138-1.687-2.174-6.394-3.431-9.012-2.907-2.643.55-3.273 7.282-6.747 6.103-3.499-1.126-12.788-9.535-14.172-13.019-1.36-3.484 5.437-5.108 5.966-7.858.529-2.777-.68-7.073-2.744-8.697-2.064-1.624-7.93 2.41-9.642-1.126-1.737-3.537-2.441-16.765-.654-20.118 1.787-3.3 9.062 1.598 11.429.183 2.366-1.44 2.316-7.282 2.769-8.749" fill="none" stroke-width="2" stroke-linecap="round" stroke="currentColor"/><path d="M81.235 56.502a23.3 23.3 0 0 1-1.46 8.068 20.785 20.785 0 0 1-1.762 3.72 24.068 24.068 0 0 1-5.337 6.26 22.575 22.575 0 0 1-3.449 2.358 23.726 23.726 0 0 1-7.803 2.803 24.719 24.719 0 0 1-8.333 0 24.102 24.102 0 0 1-4.028-1.074 23.71 23.71 0 0 1-3.776-1.729 23.259 23.259 0 0 1-6.369-5.265 23.775 23.775 0 0 1-2.416-3.353 24.935 24.935 0 0 1-1.762-3.72 23.765 23.765 0 0 1-1.083-3.981 23.454 23.454 0 0 1 0-8.173c.252-1.336.604-2.698 1.083-3.956a24.935 24.935 0 0 1 1.762-3.72 22.587 22.587 0 0 1 2.416-3.378c.881-1.048 1.888-2.017 2.946-2.908a24.38 24.38 0 0 1 3.423-2.357 23.71 23.71 0 0 1 3.776-1.73 21.74 21.74 0 0 1 4.028-1.047 23.437 23.437 0 0 1 8.333 0 24.282 24.282 0 0 1 7.803 2.777 26.198 26.198 0 0 1 3.45 2.357 24.62 24.62 0 0 1 5.336 6.287 20.785 20.785 0 0 1 1.762 3.72 21.32 21.32 0 0 1 1.083 3.955c.251 1.336.302 3.405.377 4.086.05.681.05-.68 0 0" fill="none" stroke-width="4" stroke-linecap="round" stroke="currentColor"/><path d="M69.404 56.633c-6.596-3.3-13.216-6.6-19.51-9.744m19.51 9.744c-6.747-3.379-13.493-6.758-19.51-9.744m0 0v19.489m0-19.49v19.49m0 0c4.355-2.148 8.71-4.322 19.51-9.745m-19.51 9.745c3.978-1.965 7.93-3.956 19.51-9.745m0 0h0m0 0h0" fill="currentColor" stroke-linecap="round" stroke="currentColor" stroke-width="4"/></g>',DISK_ICON_NAME="save",EXPORT_IMG_ICON=' <g transform="scale(4.166)" strokeWidth="1.25" fill="none" stroke="currentColor"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M15 8h.01"></path><path d="M12 20h-5a3 3 0 0 1 -3 -3v-10a3 3 0 0 1 3 -3h10a3 3 0 0 1 3 3v5"></path><path d="M4 15l4 -4c.928 -.893 2.072 -.893 3 0l4 4"></path><path d="M14 14l1 -1c.617 -.593 1.328 -.793 2.009 -.598"></path><path d="M19 16v6"></path><path d="M22 19l-3 3l-3 -3"></path></g>',EXPORT_IMG_ICON_NAME="export-img",EXCALIDRAW_ICON='<path d="M24 17h121v121H24z" style="fill:none" transform="matrix(.8843 0 0 .83471 -21.223 -14.19)"/><path d="M119.81 105.98a.549.549 0 0 0-.53-.12c-4.19-6.19-9.52-12.06-14.68-17.73l-.85-.93c0-.11-.05-.21-.12-.3a.548.548 0 0 0-.34-.2l-.17-.18-.12-.09c-.15-.32-.53-.56-.95-.35-1.58.81-3 1.97-4.4 3.04-1.87 1.43-3.7 2.92-5.42 4.52-.7.65-1.39 1.33-1.97 2.09-.28.37-.07.72.27.87-1.22 1.2-2.45 2.45-3.68 3.74-.11.12-.17.28-.16.44.01.16.09.31.22.41l2.16 1.65s.01.03.03.04c3.09 3.05 8.51 7.28 14.25 11.76.85.67 1.71 1.34 2.57 2.01.39.47.76.94 1.12 1.4.19.25.55.3.8.11.13.1.26.21.39.31a.57.57 0 0 0 .8-.1c.07-.09.1-.2.11-.31.04 0 .07.03.1.03.15 0 .31-.06.42-.18l10.18-11.12a.56.56 0 0 0-.04-.8l.01-.01Zm-29.23-3.85c.07.09.14.17.21.25 1.16.98 2.4 2.04 3.66 3.12l-5.12-3.91s-.32-.22-.52-.36c-.11-.08-.21-.16-.31-.24l-.38-.32s.07-.07.1-.11l.35-.35c1.72-1.74 4.67-4.64 6.19-6.06-1.61 1.62-4.87 6.37-4.17 7.98h-.01Zm17.53 13.81-4.22-3.22c-1.65-1.71-3.43-3.4-5.24-5.03 2.28 1.76 4.23 3.25 4.52 3.51 2.21 1.97 2.11 1.61 3.63 2.91l1.83 1.33c-.18.16-.36.33-.53.49l.01.01Zm1.06.81-.08-.06c.16-.13.33-.25.49-.38l-.4.44h-.01Zm-66.93-65.3c.14.72.27 1.43.4 2.11.69 3.7 1.33 7.03 2.55 9.56l.48 1.92c.19.73.46 1.64.71 1.83 2.85 2.52 7.22 6.28 11.89 9.82.21.16.5.15.7-.01.01.02.03.03.04.04.11.1.24.15.38.15.16 0 .31-.06.42-.19 5.98-6.65 10.43-12.12 13.6-16.7.2-.25.3-.54.29-.84.2-.24.41-.48.6-.68a.558.558 0 0 0-.1-.86.578.578 0 0 0-.17-.36c-1.39-1.34-2.42-2.31-3.46-3.28-1.84-1.72-3.74-3.5-7.77-7.51-.02-.02-.05-.04-.07-.06a.555.555 0 0 0-.22-.14c-1.11-.39-3.39-.78-6.26-1.28-4.22-.72-10-1.72-15.2-3.27h-.04v-.01s-.02 0-.03.02h-.01l.04-.02s-.31.01-.37.04c-.08.04-.14.09-.19.15-.05.06-.09.12-.47.2-.38.08.08 0 .11 0h-.11v.03c.07.34.05.58.16.97-.02.1.21 1.02.24 1.11l1.83 7.26h.03Zm30.95 6.54s-.03.04-.04.05l-.64-.71c.22.21.44.42.68.66Zm-7.09 9.39s-.07.08-.1.12l-.02-.02c.04-.03.08-.07.13-.1h-.01Zm-7.07 8.47Zm3.02-28.57c.35.35 1.74 1.65 2.06 1.97-1.45-.66-5.06-2.34-6.74-2.88 1.65.29 3.93.66 4.68.91Zm-19.18-2.77c.84 1.44 1.5 6.49 2.16 11.4-.37-1.58-.69-3.12-.99-4.6-.52-2.56-1-4.85-1.67-6.88.14.01.31.03.49.05 0 .01 0 .02.02.03h-.01Zm-.29-1.21c-.23-.02-.44-.04-.62-.05-.02-.04-.03-.08-.04-.12l.66.18v-.01Zm-2.22.45v-.02.02Zm78.54-1.18c.04-.23-1.1-1.24-.74-1.26.85-.04.86-1.35 0-1.31-1.13.06-2.27.32-3.37.53-1.98.37-3.95.78-5.92 1.21-4.39.94-8.77 1.93-13.1 3.11-1.36.37-2.86.7-4.11 1.36-.42.22-.4.67-.17.95-.09.05-.18.08-.28.09-.37.07-.74.13-1.11.19a.566.566 0 0 0-.39.86c-2.32 3.1-4.96 6.44-7.82 9.95-2.81 3.21-5.73 6.63-8.72 10.14-9.41 11.06-20.08 23.6-31.9 34.64-.23.21-.24.57-.03.8.05.06.12.1.19.13-.16.15-.32.3-.48.44-.1.09-.14.2-.16.32-.08.08-.16.17-.23.25-.21.23-.2.59.03.8.23.21.59.2.8-.03.04-.04.08-.09.12-.13a.84.84 0 0 1 1.22 0c.69.74 1.34 1.44 1.95 2.09l-1.38-1.15a.57.57 0 0 0-.8.07c-.2.24-.17.6.07.8l14.82 12.43c.11.09.24.13.37.13.15 0 .29-.06.4-.17l.36-.36a.56.56 0 0 0 .63-.12c20.09-20.18 36.27-35.43 54.8-49.06.17-.12.25-.32.23-.51a.57.57 0 0 0 .48-.39c3.42-10.46 4.08-19.72 4.28-24.27 0-.03.01-.05.02-.07.02-.05.03-.1.04-.14.03-.11.05-.19.05-.19.26-.78.17-1.53-.15-2.15v.02ZM82.98 58.94c.9-1.03 1.79-2.04 2.67-3.02-5.76 7.58-15.3 19.26-28.81 33.14 9.2-10.18 18.47-20.73 26.14-30.12Zm-32.55 52.81-.03-.03c.11.02.19.04.2.04a.47.47 0 0 0-.17 0v-.01Zm6.9 6.42-.05-.04.03-.03c.02 0 .03.02.04.02 0 .02-.02.03-.03.05h.01Zm8.36-7.21 1.38-1.44c.01.01.02.03.03.05-.47.46-.94.93-1.42 1.39h.01Zm2.24-2.21c.26-.3.56-.65.87-1.02.01-.01.02-.03.04-.04 3.29-3.39 6.68-6.82 10.18-10.25.02-.02.05-.04.07-.06.86-.66 1.82-1.39 2.72-2.08-4.52 4.32-9.11 8.78-13.88 13.46v-.01Zm21.65-55.88c-1.86 2.42-3.9 5.56-5.63 8.07-5.46 7.91-23.04 27.28-23.43 27.65-2.71 2.62-10.88 10.46-16.09 15.37-.14.13-.25.24-.34.35a.794.794 0 0 1 .03-1.13c24.82-23.4 39.88-42.89 46-51.38-.13.33-.24.69-.55 1.09l.01-.02Zm16.51 7.1-.01.02c0-.02-.02-.07.01-.02Zm-.91-5.13Zm-5.89 9.45c-2.26-1.31-3.32-3.27-2.71-5.25l.19-.66c.08-.19.17-.38.28-.57.59-.98 1.49-1.85 2.52-2.36.05-.02.1-.03.15-.04a.795.795 0 0 1-.04-.43c.05-.31.25-.58.66-.58.67 0 2.75.62 3.54 1.3.24.19.47.4.68.63.3.35.74.92.96 1.33.13.06.23.62.38.91.14.46.2.93.18 1.4 0 .02 0 .02.01.03-.03.07 0 .37-.04.4-.1.72-.36 1.43-.75 2.05-.04.05-.07.11-.11.16 0 .01-.02.02-.03.04-.3.43-.65.83-1.08 1.13-1.26.89-2.73 1.16-4.2.79a6.33 6.33 0 0 1-.57-.25l-.02-.03Zm16.27-1.63c-.49 2.05-1.09 4.19-1.8 6.38-.03.08-.03.16-.03.23-.1.01-.19.05-.27.11-4.44 3.26-8.73 6.62-12.98 10.11 3.67-3.32 7.39-6.62 11.23-9.95a6.409 6.409 0 0 0 2.11-3.74l.56-3.37.03-.1c.25-.71 1.34-.4 1.17.33h-.02Z" style="fill:currentColor;fill-rule:nonzero" transform="translate(-26.41 -29.49)"/>',VIRGIL_DATAURL="data:application/font-woff;charset=utf-8;base64,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",VIRGIL_FONT=` @font-face {font-family: "Virgil";src: url("${VIRGIL_DATAURL}") format("woff2");}`,CASCADIA_FONT=' @font-face {font-family: "Cascadia";src: url("data:application/font-woff;charset=utf-8;base64,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XVtdpV2uXdBeAV4OXmBecl6GXpteyl74X1Vfsl/PX+xgDWAtYDVgPWBQYGNga2B9YIZgj2CcYKlgtmDLYOFg7GElYVthfmGgYa1hwmHdYgNiN2JVYoli0GL6Yzpjc2PbZINkrGUYZUBlTWVeZaNl8GX9Zi9mPGZNZrdm/mdPZ59nq2e4Z8hoAWhDaE9oW2hoaMto12jnaPNo/2mBaipqmGqlarFrRWtSa79sG2wnbFRskGzBbM5s32z7bQ5tF20fbR9tH20fbX9tzm4ebp9u+W9jb75wGnBgcKRw1HEucZRx1nIxcoly1HMHc1Nzm3P+dEJ0rXTvdR11YXWIdcl2LHZrdnN2e3aidqp2zHbwdwd3LHc/d213qHfGd/14JHhLeHt4rnjWeON5EnkpeUd5nHnBefJ5+noCeiV6T3pyenp6hXqcewR7kXu5e+R8Dnw3fHF8qnztfPp9B30UfSF9Ln07fUh9VX1ifW99fH2JfZZ9o32wfb19yn3YfeZ9834Bfg5+Hn4yfkJ+U35hfnd+h37Vf2iAj4CrgNeBDYEzgVmBgIGmgbmBzYH4gh2CUoKHgr2C84M1g/iEM4SIhK6Ey4T9hR6FQIVbhXaFiYWcha+FwoXSheuGAoYZhjCGR4Zoho+GnYazhsGGzobjhviHBYcah0yHaIgsiE6IcIi1iNuJA4lciWqJgImViaqJvYnRie6KDIosikyKbIqBio+KpIqyir+KzIrZiueK+4sPiySLOYtdi3GLhIuRi5+Ls4vIi9aL44vxi/+MFIwojD2MUoxfjGyMeYyFjJiMq4y/jNKM840NjSeNO41bjXSNjo2ijc6N7o4PjieOPY5TjmaOd46Njp6OtI7NjuGO8o8JjxqPMY9Lj2WPe4+Rj6aPvI/Kj96P75AAkA6QHJAukE6QdJCCkJ6QvJDKkN6Q75ECkRORIZE7kU+RY5F+kZSRqZHCkdiR7pIIkiSSQJJckniSlJK3ksiS2JLrkwCTDpMhkzKTQ5NQk12TcJOMk6+TvJPVk/GT/5QSlCSUNJRElFKUa5R+lJGUrJTClNiU8ZUHlR2VN5VTlWqVf5WUla2VwJXWleaV/JYNlieWOpZQlmCWdpaHlqCWtJbJluyXBZcflziXTJdgl3qXjpeil8WX3Zf1mGqYsZkFmTmZg5mvmcaZ5Zpamr6bHZtFm7icHZyAnN6dG52E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") format("woff2");}',ASSISTANT_FONT=' @font-face {font-family: "Assistant";src: url("data:application/font-woff;charset=utf-8;base64,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") format("woff2");}';class Random{constructor(e){this.seed=e}next(){return this.seed?(2**31-1&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}}var commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function getDefaultExportFromCjs(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var lzString={exports:{}};lzString.exports,function(e){var A=function(){var e=String.fromCharCode,A="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",i={};function n(e,A){if(!i[e]){i[e]={};for(var t=0;t<e.length;t++)i[e][e.charAt(t)]=t}return i[e][A]}var s={compressToBase64:function(e){if(null==e)return"";var t=s._compress(e,6,(function(e){return A.charAt(e)}));switch(t.length%4){default:case 0:return t;case 1:return t+"===";case 2:return t+"==";case 3:return t+"="}},decompressFromBase64:function(e){return null==e?"":""==e?null:s._decompress(e.length,32,(function(t){return n(A,e.charAt(t))}))},compressToUTF16:function(A){return null==A?"":s._compress(A,15,(function(A){return e(A+32)}))+" "},decompressFromUTF16:function(e){return null==e?"":""==e?null:s._decompress(e.length,16384,(function(A){return e.charCodeAt(A)-32}))},compressToUint8Array:function(e){for(var A=s.compress(e),t=new Uint8Array(2*A.length),i=0,n=A.length;i<n;i++){var a=A.charCodeAt(i);t[2*i]=a>>>8,t[2*i+1]=a%256}return t},decompressFromUint8Array:function(A){if(null==A)return s.decompress(A);for(var t=new Array(A.length/2),i=0,n=t.length;i<n;i++)t[i]=256*A[2*i]+A[2*i+1];var a=[];return t.forEach((function(A){a.push(e(A))})),s.decompress(a.join(""))},compressToEncodedURIComponent:function(e){return null==e?"":s._compress(e,6,(function(e){return t.charAt(e)}))},decompressFromEncodedURIComponent:function(e){return null==e?"":""==e?null:(e=e.replace(/ /g,"+"),s._decompress(e.length,32,(function(A){return n(t,e.charAt(A))})))},compress:function(A){return s._compress(A,16,(function(A){return e(A)}))},_compress:function(e,A,t){if(null==e)return"";var i,n,s,a={},o={},r="",l="",c="",g=2,d=3,u=2,h=[],m=0,p=0;for(s=0;s<e.length;s+=1)if(r=e.charAt(s),Object.prototype.hasOwnProperty.call(a,r)||(a[r]=d++,o[r]=!0),l=c+r,Object.prototype.hasOwnProperty.call(a,l))c=l;else{if(Object.prototype.hasOwnProperty.call(o,c)){if(c.charCodeAt(0)<256){for(i=0;i<u;i++)m<<=1,p==A-1?(p=0,h.push(t(m)),m=0):p++;for(n=c.charCodeAt(0),i=0;i<8;i++)m=m<<1|1&n,p==A-1?(p=0,h.push(t(m)),m=0):p++,n>>=1}else{for(n=1,i=0;i<u;i++)m=m<<1|n,p==A-1?(p=0,h.push(t(m)),m=0):p++,n=0;for(n=c.charCodeAt(0),i=0;i<16;i++)m=m<<1|1&n,p==A-1?(p=0,h.push(t(m)),m=0):p++,n>>=1}0==--g&&(g=Math.pow(2,u),u++),delete o[c]}else for(n=a[c],i=0;i<u;i++)m=m<<1|1&n,p==A-1?(p=0,h.push(t(m)),m=0):p++,n>>=1;0==--g&&(g=Math.pow(2,u),u++),a[l]=d++,c=String(r)}if(""!==c){if(Object.prototype.hasOwnProperty.call(o,c)){if(c.charCodeAt(0)<256){for(i=0;i<u;i++)m<<=1,p==A-1?(p=0,h.push(t(m)),m=0):p++;for(n=c.charCodeAt(0),i=0;i<8;i++)m=m<<1|1&n,p==A-1?(p=0,h.push(t(m)),m=0):p++,n>>=1}else{for(n=1,i=0;i<u;i++)m=m<<1|n,p==A-1?(p=0,h.push(t(m)),m=0):p++,n=0;for(n=c.charCodeAt(0),i=0;i<16;i++)m=m<<1|1&n,p==A-1?(p=0,h.push(t(m)),m=0):p++,n>>=1}0==--g&&(g=Math.pow(2,u),u++),delete o[c]}else for(n=a[c],i=0;i<u;i++)m=m<<1|1&n,p==A-1?(p=0,h.push(t(m)),m=0):p++,n>>=1;0==--g&&(g=Math.pow(2,u),u++)}for(n=2,i=0;i<u;i++)m=m<<1|1&n,p==A-1?(p=0,h.push(t(m)),m=0):p++,n>>=1;for(;;){if(m<<=1,p==A-1){h.push(t(m));break}p++}return h.join("")},decompress:function(e){return null==e?"":""==e?null:s._decompress(e.length,32768,(function(A){return e.charCodeAt(A)}))},_decompress:function(A,t,i){var n,s,a,o,r,l,c,g=[],d=4,u=4,h=3,m="",p=[],w={val:i(0),position:t,index:1};for(n=0;n<3;n+=1)g[n]=n;for(a=0,r=Math.pow(2,2),l=1;l!=r;)o=w.val&w.position,w.position>>=1,0==w.position&&(w.position=t,w.val=i(w.index++)),a|=(o>0?1:0)*l,l<<=1;switch(a){case 0:for(a=0,r=Math.pow(2,8),l=1;l!=r;)o=w.val&w.position,w.position>>=1,0==w.position&&(w.position=t,w.val=i(w.index++)),a|=(o>0?1:0)*l,l<<=1;c=e(a);break;case 1:for(a=0,r=Math.pow(2,16),l=1;l!=r;)o=w.val&w.position,w.position>>=1,0==w.position&&(w.position=t,w.val=i(w.index++)),a|=(o>0?1:0)*l,l<<=1;c=e(a);break;case 2:return""}for(g[3]=c,s=c,p.push(c);;){if(w.index>A)return"";for(a=0,r=Math.pow(2,h),l=1;l!=r;)o=w.val&w.position,w.position>>=1,0==w.position&&(w.position=t,w.val=i(w.index++)),a|=(o>0?1:0)*l,l<<=1;switch(c=a){case 0:for(a=0,r=Math.pow(2,8),l=1;l!=r;)o=w.val&w.position,w.position>>=1,0==w.position&&(w.position=t,w.val=i(w.index++)),a|=(o>0?1:0)*l,l<<=1;g[u++]=e(a),c=u-1,d--;break;case 1:for(a=0,r=Math.pow(2,16),l=1;l!=r;)o=w.val&w.position,w.position>>=1,0==w.position&&(w.position=t,w.val=i(w.index++)),a|=(o>0?1:0)*l,l<<=1;g[u++]=e(a),c=u-1,d--;break;case 2:return p.join("")}if(0==d&&(d=Math.pow(2,h),h++),g[c])m=g[c];else{if(c!==u)return null;m=s+s.charAt(0)}p.push(m),g[u++]=s+m.charAt(0),s=m,0==--d&&(d=Math.pow(2,h),h++)}}};return s}();null!=e?e.exports=A:"undefined"!=typeof angular&&null!=angular&&angular.module("LZString",[]).factory("LZString",(function(){return A}))}(lzString);var lzStringExports=lzString.exports;function splitFolderAndFilename(e){const A=e.lastIndexOf("/"),t=-1==A?e:e.substring(A+1);return{folderpath:obsidian_module.normalizePath(e.substring(0,A)),filename:t,basename:t.replace(/\.[^/.]+$/,"")}}const download=(e,A,t)=>{const i=document.createElement("a");i.setAttribute("href",(e?`${e},`:"")+A),i.setAttribute("download",t),i.style.display="none",document.body.appendChild(i),i.click(),document.body.removeChild(i)};function getIMGFilename(e,A){return`${e.substring(0,e.lastIndexOf("."))}.${A}`}function getNewUniqueFilepath(e,A,t){let i=obsidian_module.normalizePath(`${t}/${A}`),n=e.getAbstractFileByPath(i),s=0;const a=A.endsWith(".excalidraw.md")?".excalidraw.md":A.slice(A.lastIndexOf("."));for(;n;)i=obsidian_module.normalizePath(`${t}/${A.slice(0,A.lastIndexOf(a))}_${s}${a}`),s++,n=e.getAbstractFileByPath(i);return i}function getDrawingFilename(e){return e.drawingFilenamePrefix+(""!==e.drawingFilenameDateTime?window.moment().format(e.drawingFilenameDateTime):"")+(e.compatibilityMode?".excalidraw":e.useExcalidrawExtension?".excalidraw.md":".md")}function getEmbedFilename(e,A){return((A.drawingEmbedPrefixWithFilename?e:"")+A.drawingFilnameEmbedPostfix+(""!==A.drawingFilenameDateTime?window.moment().format(A.drawingFilenameDateTime):"")+(A.compatibilityMode?".excalidraw":A.useExcalidrawExtension?".excalidraw.md":".md")).trim()}async function checkAndCreateFolder(e){const A=app.vault;e=obsidian_module.normalizePath(e);const t=A.getAbstractFileByPathInsensitive(e);if(!(t&&t instanceof obsidian_module.TFolder))return t&&t instanceof obsidian_module.TFile&&new obsidian_module.Notice(`The folder cannot be created because it already exists as a file: ${e}.`),await A.createFolder(e)}const getURLImageExtension=e=>{const A=e.split("?")[0];return A.substring(A.lastIndexOf(".")+1)},getMimeType=e=>{switch(e){case"png":return"image/png";case"jpeg":case"jpg":return"image/jpeg";case"gif":return"image/gif";case"webp":return"image/webp";case"bmp":return"image/bmp";case"ico":return"image/x-icon";case"svg":case"md":return"image/svg+xml";default:return"application/octet-stream"}},getFileFromURL=async(e,A,t=3e3)=>{try{const A=await Promise.race([fetch(e),new Promise((e=>setTimeout((()=>e(null)),t)))]);if(!A)throw new obsidian_module.Notice(`URL did not load within the timeout period of ${t}ms.\n\nTry force-saving again in a few seconds.\n\n${e}`,8e3),new Error(`URL did not load within the timeout period of ${t}ms`);const i=await A.arrayBuffer();return{status:A.status,headers:Object.fromEntries(A.headers.entries()),arrayBuffer:i,json:null,text:null}}catch(A){return void errorlog({where:getFileFromURL,message:A.message,url:e})}},getFileFromURLFallback=async(e,A,t=3e3)=>{try{return await Promise.race([(async()=>new Promise((e=>setTimeout((()=>e(null)),t))))(),obsidian_module.requestUrl({url:e,method:"get",contentType:A,throw:!1})])}catch(A){return void errorlog({where:getFileFromURL,message:`URL did not load within timeout period of ${t}ms`,url:e})}},getDataURLFromURL=async(e,A,t=3e3)=>{let i=await getFileFromURL(e,A,t);return i&&200!==i.status&&(i=await getFileFromURLFallback(e,A,t)),i&&200===i.status?await getDataURL(i.arrayBuffer,A):e},blobToBase64=async e=>{const A=await e.arrayBuffer(),t=new Uint8Array(A);for(var i="",n=t.byteLength,s=0;s<n;s++)i+=String.fromCharCode(t[s]);return btoa(i)},getPDFDoc=async e=>(void 0===window.pdfjsLib&&await obsidian_module.loadPdfJs(),await window.pdfjsLib.getDocument(app.vault.getResourcePath(e)).promise),readLocalFileBinary=async e=>new Promise(((A,t)=>{const i=decodeURI(e);app.vault.adapter.fs.readFile(i,((e,i)=>{if(e)t(e);else{const e=i.buffer.slice(i.byteOffset,i.byteOffset+i.byteLength);A(e)}}))})),getPathWithoutExtension=e=>e?e.path.substring(0,e.path.lastIndexOf(".")):null,labelCTRL=()=>DEVICE.isIOS||DEVICE.isMacOS?"CMD":"CTRL",labelALT=()=>DEVICE.isIOS||DEVICE.isMacOS?"OPT":"ALT",labelMETA=()=>DEVICE.isIOS||DEVICE.isMacOS?"CTRL":DEVICE.isWindows?"WIN":"META",labelSHIFT=()=>"SHIFT",isCTRL=e=>DEVICE.isIOS||DEVICE.isMacOS?e.metaKey:e.ctrlKey,isALT=e=>e.altKey,isMETA=e=>DEVICE.isIOS||DEVICE.isMacOS?e.ctrlKey:e.metaKey,isSHIFT=e=>e.shiftKey,setCTRL=(e,A)=>(DEVICE.isIOS||DEVICE.isMacOS?e.metaKey=A:e.ctrlKey=A,e),setALT=(e,A)=>(e.altKey=A,e),setMETA=(e,A)=>(DEVICE.isIOS||DEVICE.isMacOS?e.ctrlKey=A:e.metaKey=A,e),setSHIFT=(e,A)=>(e.shiftKey=A,e),mdPropModifier=e=>!isSHIFT(e)&&isCTRL(e)&&!isALT(e)&&isMETA(e),scaleToFullsizeModifier=e=>isSHIFT(e)&&!isCTRL(e)&&!isALT(e)&&isMETA(e)||!isSHIFT(e)&&isCTRL(e)&&isALT(e)&&!isMETA(e),linkClickModifierType=e=>isCTRL(e)&&!isALT(e)&&isSHIFT(e)&&!isMETA(e)?"active-pane":!isCTRL(e)||isALT(e)||isSHIFT(e)||isMETA(e)?isCTRL(e)&&isALT(e)&&!isSHIFT(e)&&!isMETA(e)?"new-pane":DEVICE.isDesktop&&isCTRL(e)&&isALT(e)&&isSHIFT(e)&&!isMETA(e)?"popout-window":isCTRL(e)&&isALT(e)&&isSHIFT(e)&&!isMETA(e)?"new-tab":mdPropModifier(e)?"md-properties":"active-pane":"new-tab",externalDragModifierType=e=>DEVICE.isWindows&&isSHIFT(e)&&isCTRL(e)&&!isALT(e)&&!isMETA(e)?"embeddable":!DEVICE.isMacOS||isSHIFT(e)||isCTRL(e)||!isALT(e)||isMETA(e)?!DEVICE.isWindows||isSHIFT(e)||!isCTRL(e)||isALT(e)||isMETA(e)?DEVICE.isMacOS&&isSHIFT(e)&&!isCTRL(e)&&isALT(e)&&!isMETA(e)?"insert-link":isSHIFT(e)&&!isCTRL(e)&&!isALT(e)&&!isMETA(e)||DEVICE.isWindows&&!isSHIFT(e)&&!isCTRL(e)&&isALT(e)&&!isMETA(e)?"image-import":"image-url":"insert-link":"embeddable",localFileDragModifierType=e=>DEVICE.isWindows&&isSHIFT(e)&&isCTRL(e)&&!isALT(e)&&!isMETA(e)?"image-uri":!DEVICE.isMacOS||isSHIFT(e)||isCTRL(e)||!isALT(e)||isMETA(e)?!DEVICE.isWindows||isSHIFT(e)||!isCTRL(e)||isALT(e)||isMETA(e)?DEVICE.isMacOS&&isSHIFT(e)&&!isCTRL(e)&&isALT(e)&&!isMETA(e)?"insert-link":!isSHIFT(e)||isCTRL(e)||isALT(e)||isMETA(e)?(!DEVICE.isWindows||isSHIFT(e)||isCTRL(e)||!isALT(e)||isMETA(e),"image-import"):"image-import":"insert-link":"image-uri",internalDragModifierType=e=>(DEVICE.isIOS||DEVICE.isMacOS||!isSHIFT(e)||!isCTRL(e)||isALT(e)||isMETA(e))&&(!DEVICE.isIOS&&!DEVICE.isMacOS||isSHIFT(e)||isCTRL(e)||isALT(e)||!isMETA(e))?(!isSHIFT(e)||isCTRL(e)||isALT(e)||isMETA(e))&&(isSHIFT(e)||!isCTRL(e)||isALT(e)||isMETA(e))?scaleToFullsizeModifier(e)?"image-fullsize":"link":"image":"embeddable",emulateCTRLClickForLinks=e=>({shiftKey:e.shiftKey,ctrlKey:e.ctrlKey||!(DEVICE.isIOS||DEVICE.isMacOS),metaKey:e.metaKey||DEVICE.isIOS||DEVICE.isMacOS,altKey:e.altKey}),emulateKeysForLinkClick=e=>{const A={shiftKey:!1,ctrlKey:!1,metaKey:!1,altKey:!1};if(!e)return A;switch(e){case"active-pane":setCTRL(A,!0),setSHIFT(A,!0);break;case"new-pane":setCTRL(A,!0),setALT(A,!0);break;case"popout-window":setCTRL(A,!0),setALT(A,!0),setSHIFT(A,!0);break;case"new-tab":setCTRL(A,!0);break;case"md-properties":setCTRL(A,!0),setMETA(A,!0)}return A},anyModifierKeysPressed=e=>e.shiftKey||e.ctrlKey||e.metaKey||e.altKey,getParentOfClass=(e,A)=>{var t;let i=e.parentElement;for(;i&&!(i instanceof window.HTMLBodyElement)&&!i.classList.contains(A);)i=i.parentElement;return(null===(t=null==i?void 0:i.classList)||void 0===t?void 0:t.contains(A))?i:null},getLeaf=(e,A,t)=>{switch(linkClickModifierType(t)){case"active-pane":return A;case"new-tab":default:return(()=>{if(!e.settings.openInMainWorkspace)return app.workspace.getLeaf("tab");const[t,i]=getLeafLoc(A);return"main"===t?app.workspace.getLeaf("tab"):getNewOrAdjacentLeaf(e,A)})();case"new-pane":return getNewOrAdjacentLeaf(e,A);case"popout-window":return app.workspace.openPopoutLeaf()}},getLeafLoc=e=>{const A=e.id,t=app.workspace.getLayout(),i=e=>e.children.filter((e=>"leaf"!==e.type)).map((e=>i(e))).flat().concat(e.children.filter((e=>"leaf"===e.type)).map((e=>e.id))),n=i(t.main);return[t.main&&n.contains(A)?"main":t.floating&&i(t.floating).contains(A)?"popout":t.left&&i(t.left).contains(A)?"left":t.right&&i(t.right).contains(A)?"right":"hover",n]},getNewOrAdjacentLeaf=(e,A)=>{const[t,i]=getLeafLoc(A),n=e=>{var t;let n=app.workspace.getMostRecentLeaf();return n&&n!==A&&(null===(t=n.view)||void 0===t?void 0:t.containerEl.ownerDocument)===document||(n=null,i.forEach((t=>{var i;const s=app.workspace.getLeafById(t);n||!(null===(i=s.view)||void 0===i?void 0:i.navigation)||A===s||e&&(null==s?void 0:s.parent)===(null==A?void 0:A.parent)||(n=s)}))),n};if(e.settings.openInMainWorkspace||["main","left","right"].contains(t)){if(!e.settings.openInAdjacentPane){if("main"===t)return app.workspace.createLeafBySplit(A);const e=n();return e?"empty"===e.view.getViewType()?e:app.workspace.createLeafBySplit(e):app.workspace.getLeaf(!0)}const i=n(!0);return null!=i?i:app.workspace.createLeafBySplit(A)}if(!e.settings.openInAdjacentPane)return app.workspace.createLeafBySplit(A);if("hover"===t){const t=new Set;return app.workspace.iterateAllLeaves((e=>{e!==A&&A.containerEl.parentElement===e.containerEl.parentElement&&t.add(e)})),0===t.size?e.app.workspace.createLeafBySplit(A):Array.from(t)[0]}if("popout"===t){const e=new Set;return app.workspace.iterateAllLeaves((t=>{t!==A&&t.view.navigation&&t.view.containerEl.ownerDocument===A.view.containerEl.ownerDocument&&e.add(t)})),0===e.size?app.workspace.createLeafBySplit(A):Array.from(e)[0]}return e.app.workspace.createLeafBySplit(A)},getAttachmentsFolderAndFilePath=async(e,A,t)=>{let i=e.vault.getConfig("attachmentFolderPath");if(i&&i.startsWith("./")){const e=`${splitFolderAndFilename(A).folderpath}/`;i=obsidian_module.normalizePath(e+i.substring(2))}return i&&"/"!==i||(i=""),await checkAndCreateFolder(i),{folder:i,filepath:obsidian_module.normalizePath(""===i?t:`${i}/${t}`)}},isObsidianThemeDark=()=>document.body.classList.contains("theme-dark"),getContainerForDocument=e=>{if(e!==document&&app.workspace.floatingSplit)for(const A of app.workspace.floatingSplit.children)if(A.doc===e)return A;return app.workspace.rootSplit},cleanSectionHeading=e=>e?e.replace(REG_SECTION_REF_CLEAN,"").replace(/\s+/g," ").trim():e,cleanBlockRef=e=>e?e.replace(REG_BLOCK_REF_CLEAN,"").replace(/\s+/g," ").trim():e,getAllWindowDocuments=e=>{const A=new Set;return A.add(document),e.workspace.iterateAllLeaves((e=>{e.view.containerEl.ownerDocument!==document&&A.add(e.view.containerEl.ownerDocument)})),Array.from(A)},obsidianPDFQuoteWithRef=e=>{const A=/^> (.*)\n\n\[\[([^|\]]*)\|[^\]]*]]$/gm.exec(e);return A?{quote:A[1],link:A[2]}:null},extractSVGPNGFileName=e=>{const A=e.match(/\[\[([^\]|#^]+\.(?:svg|png))(?:[^\]]+)?\]\]|\[[^\]]+\]\(([^\)]+\.(?:svg|png))\)/);return A?A[1]||A[2]:null},getFileCSSClasses=e=>{if(e){const A=window.ExcalidrawAutomate.plugin.app.metadataCache.getFileCache(e);if(!(null==A?void 0:A.frontmatter))return[];const t=obsidian_module.parseFrontMatterEntry(A.frontmatter,"cssclasses");return Array.isArray(t)?t:"string"==typeof t?Array.from(new Set(t.split(/[, ]+/).filter(Boolean))):[]}return[]},useDefaultExcalidrawFrame=e=>!(e.link.startsWith("[")||e.link.startsWith("file:")||e.link.startsWith("data:")),patchMobileView=e=>{if(DEVICE.isDesktop)return;console.log("patching mobile view");const A=getParentOfClass(e.containerEl,"mod-top");A&&(A.hasClass("mod-visible")||A.addClass("mod-visible"))},processLinkText=(e,A)=>{let t=null;if(e.search("#")>-1){const i=getLinkParts(e,A.file);t=`#${i.isBlockRef?"^":""}${i.ref}`,e=i.path}return e.match(REG_LINKINDEX_INVALIDCHARS)?{subpath:t,file:null}:{subpath:t,file:app.metadataCache.getFirstLinkpathDest(e,A.file.path)}},generateEmbeddableLink=(e,A)=>e;let versionUpdateChecked=!1;const checkExcalidrawVersion=async e=>{if(!versionUpdateChecked){versionUpdateChecked=!0;try{const e=async()=>JSON.parse(await obsidian_module.request({url:"https://api.github.com/repos/zsviczian/obsidian-excalidraw-plugin/releases?per_page=5&page=1"})),A=(await e()).map((e=>({version:e.tag_name,published:new Date(e.published_at)}))).filter((e=>e.version.match(/^\d+\.\d+\.\d+$/))).sort(((e,A)=>A.published-e.published))[0].version;isVersionNewerThanOther(A,PLUGIN_VERSION)&&new obsidian_module.Notice(`A newer version of Excalidraw is available in Community Plugins.\n\nYou are using ${PLUGIN_VERSION}.\nThe latest is ${A}`)}catch(e){errorlog({where:"Utils/checkExcalidrawVersion",error:e})}setTimeout((()=>versionUpdateChecked=!1),288e5)}};function wrapTextAtCharLength(e,A,t=!1,i=0){if(!A)return e;let n="";if(t){for(const t of e.split("\n")){const e=t.match(new RegExp(`(.){1,${A}}`,"g"));n+=e?`${e.join("\n")}\n`:"\n"}return n.replace(/\n$/,"")}const s=new RegExp(`(.{1,${A}})(\\s+|$\\n?)|([^\\s]{1,${A+i}})(\\s+|$\\n?)?`,"gm"),a=e.matchAll(s);let o;for(;!(o=a.next()).done;){n+=o.value[1]?o.value[1].trimEnd():o.value[3].trimEnd();const e=(o.value[2]?o.value[2].split("\n").length-1:0)+(o.value[4]?o.value[4].split("\n").length-1:0);n+="\n".repeat(e),0===e&&(n+="\n")}return n.replace(/\n$/,"")}new Random(Date.now());const rotate$1=(e,A,t,i,n)=>[(e-t)*Math.cos(n)-(A-i)*Math.sin(n)+t,(e-t)*Math.sin(n)+(A-i)*Math.cos(n)+i],rotatedDimensions=e=>{if(0===e.angle)return[e.x,e.y,e.width,e.height];const A=e.x+e.width/2,t=e.y+e.height/2,[i,n]=rotate$1(e.x,e.y,A,t,e.angle),[s,a]=rotate$1(e.x+e.width,e.y+e.height,A,t,e.angle);return[i<s?i:s,n<a?n:a,Math.abs(i-s),Math.abs(n-a)]},getDataURL=async(e,A)=>new Promise(((t,i)=>{const n=new FileReader;n.onload=()=>{const e=n.result;t(e)},n.onerror=e=>i(e),n.readAsDataURL(new Blob([new Uint8Array(e)],{type:A}))})),getFontDataURL=async(e,A,t,i)=>{let n="",s="",a="";const o=e.metadataCache.getFirstLinkpathDest(A,t);if(o){const A=await e.vault.readBinary(o),t=o.extension.startsWith("woff")?"application/font-woff":"font/truetype";s=null!=i?i:o.basename,a=await getDataURL(A,t),n=` @font-face {font-family: "${s}";src: url("${a}")}`;const r=n.split(";base64,",2);n=`${r[0]};charset=utf-8;base64,${r[1]}`}return{fontDef:n,fontName:s,dataURL:a}},svgToBase64=e=>`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(e.replaceAll(" "," "))))}`,getBinaryFileFromDataURL=async e=>{if(!e)return null;if(e.match(/^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/i)){const A=e,t=getURLImageExtension(A),i=getMimeType(t);e=await getDataURLFromURL(A,i)}const A=e.matchAll(/base64,(.*)/g).next();if(!A.value)return null;const t=window.atob(A.value[1]),i=t.length,n=new Uint8Array(i);for(let e=0;e<i;e++)n[e]=t.charCodeAt(e);return n.buffer},getSVG=async(e,A,t,i)=>{var n;let s=e.elements;s.some((e=>"embeddable"===e.type))&&(s=JSON.parse(JSON.stringify(s)),s.filter((e=>"embeddable"===e.type)).forEach((A=>{var t,i;A.link=(i=A.link,null===(t=e.appState)||void 0===t||t.theme,i)})));try{const a=await exportToSvg({elements:i?updateElementLinksToObsidianLinks({elements:s,hostFile:i}):s,appState:Object.assign({exportBackground:A.withBackground,exportWithDarkMode:!!A.withTheme&&"light"!=(null===(n=e.appState)||void 0===n?void 0:n.theme)},e.appState),files:e.files,exportPadding:t,exportingFrame:null,renderEmbeddables:!0});return a&&(a.addClass("excalidraw-svg"),i instanceof obsidian_module.TFile)&&getFileCSSClasses(i).forEach((e=>a.addClass(e))),a}catch(e){return null}};function filterFiles(e){let A={};return Object.entries(e).forEach((([e,t])=>{t.dataURL.startsWith("http")||(A[e]=t)})),A}const getPNG=async(e,A,t,i=1)=>{var n;try{return await exportToBlob({elements:e.elements,appState:Object.assign({exportBackground:A.withBackground,exportWithDarkMode:!!A.withTheme&&"light"!=(null===(n=e.appState)||void 0===n?void 0:n.theme)},e.appState),files:filterFiles(e.files),exportPadding:t,mimeType:"image/png",getDimensions:(e,A)=>({width:e*i,height:A*i,scale:i})})}catch(e){return errorlog({where:"Utils.getPNG",error:e}),null}},getQuickImagePreview=async(e,A,t)=>{if(!e.settings.displayExportedImageIfAvailable)return null;const i=getIMGFilename(A,t),n=e.app.vault.getAbstractFileByPath(i);return n&&n instanceof obsidian_module.TFile?"png"===t?await e.app.vault.readBinary(n):await e.app.vault.read(n):null},embedFontsInSVG=(e,A,t=!1)=>{const i=!t&&null!=e.querySelector("text[font-family^='Virgil']"),n=!t&&null!=e.querySelector("text[font-family^='Cascadia']"),s=!t&&null!=e.querySelector("text[font-family^='Assistant']"),a=null!=e.querySelector("text[font-family^='LocalFont']"),o=e.querySelector("defs");return o&&(n||i||a||s)&&(o.innerHTML=`<style>${i?VIRGIL_FONT:""}${n?CASCADIA_FONT:""}${s?ASSISTANT_FONT:""}${a?A.fourthFontDef:""}</style>`),e},getImageSize=async e=>new Promise(((A,t)=>{const i=new Image;i.onload=()=>{A({height:i.naturalHeight,width:i.naturalWidth})},i.onerror=t,i.src=e})),addAppendUpdateCustomData=(e,A)=>{if(!A)return e;e.customData||(e.customData={});for(const t in A)void 0!==A[t]&&(e.customData[t]=A[t]);return e},scaleLoadedImage=(e,A)=>{let t=!1;if(!A||!e)return{dirty:t,scene:e};for(const i of A){const[A,n]=[i.size.width,i.size.height],s=i.size.width/i.size.height;e.elements.filter((e=>"image"===e.type&&e.fileId===i.id)).forEach((e=>{var a,o;const[r,l]=[e.width,e.height];if(((null===(a=e.customData)||void 0===a?void 0:a.isAnchored)&&i.shouldScale||!(null===(o=e.customData)||void 0===o?void 0:o.isAnchored)&&!i.shouldScale)&&(addAppendUpdateCustomData(e,i.shouldScale?{isAnchored:!1}:{isAnchored:!0}),t=!0),i.shouldScale){if(s!=r/l){t=!0;const i=Math.sqrt(r*l*n/A),s=Math.sqrt(r*l*A/n);e.height=i,e.width=s,e.y+=(l-i)/2,e.x+=(r-s)/2}}else r===A&&l===n||(t=!0,e.height=n,e.width=A,e.y+=(l-n)/2,e.x+=(r-A)/2)}))}return{dirty:t,scene:e}},setDocLeftHandedMode=(e,A)=>{const t=A.createElement("style");t.id="excalidraw-left-handed",t.textContent=".excalidraw .App-bottom-bar{justify-content:flex-end;}";const i=A.getElementById(t.id);i&&A.head.removeChild(i),e&&A.head.appendChild(t)},setLeftHandedMode=e=>{const A=new Set;app.workspace.iterateAllLeaves((t=>{const i=app.isMobile?document:t.view.containerEl.ownerDocument;i&&(A.has(i)||(A.add(i),setDocLeftHandedMode(e,i)))}))},getLinkParts=(e,A)=>{var t,i,n;const s=e.match(/(^[^#\|]*)#?(\^)?([^\|]*)?\|?(\d*)x?(\d*)/),a="^"===s[2];return{original:e,path:A&&""===s[1]?A.path:s[1],isBlockRef:a,ref:(null===(t=s[3])||void 0===t?void 0:t.match(/^page=\d*$/i))?s[3]:a?cleanBlockRef(s[3]):cleanSectionHeading(s[3]),width:s[4]?parseInt(s[4]):void 0,height:s[5]?parseInt(s[5]):void 0,page:parseInt(null===(n=null===(i=s[3])||void 0===i?void 0:i.match(/page=(\d*)/))||void 0===n?void 0:n[1])}},compress=e=>lzStringExports.compressToBase64(e).replace(/(.{64})/g,"$1\n\n"),decompress=e=>lzStringExports.decompressFromBase64(e.replaceAll("\n","").replaceAll("\r","")),hasExportTheme=(e,A)=>{if(A){const t=e.app.metadataCache.getFileCache(A);if((null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-export-dark"])return!0}return!1},getExportTheme=(e,A,t)=>{if(A){const t=e.app.metadataCache.getFileCache(A);if((null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-export-dark"])return t.frontmatter["excalidraw-export-dark"]?"dark":"light"}return e.settings.exportWithTheme?t:"light"},hasExportBackground=(e,A)=>{if(A){const t=e.app.metadataCache.getFileCache(A);if((null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-export-transparent"])return!0}return!1},getWithBackground=(e,A)=>{if(A){const t=e.app.metadataCache.getFileCache(A);if((null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-export-transparent"])return!t.frontmatter["excalidraw-export-transparent"]}return e.settings.exportWithBackground},getExportPadding=(e,A)=>{if(A){const t=e.app.metadataCache.getFileCache(A);if(!(null==t?void 0:t.frontmatter))return e.settings.exportPaddingSVG;if(null!=t.frontmatter["excalidraw-export-padding"]){const e=parseInt(t.frontmatter["excalidraw-export-padding"]);if(!isNaN(e))return e}if(null!=t.frontmatter["excalidraw-export-svgpadding"]){const e=parseInt(t.frontmatter["excalidraw-export-svgpadding"]);if(!isNaN(e))return e}}return e.settings.exportPaddingSVG},getPNGScale=(e,A)=>{if(A){const t=e.app.metadataCache.getFileCache(A);if((null==t?void 0:t.frontmatter)&&null!=t.frontmatter["excalidraw-export-pngscale"]){const e=parseFloat(t.frontmatter["excalidraw-export-pngscale"]);if(!isNaN(e)&&e>0)return e}}return e.settings.pngExportScale},isVersionNewerThanOther=(e,A)=>{const t=e.match(/(\d*)\.(\d*)\.(\d*)/),i=A.match(/(\d*)\.(\d*)\.(\d*)/);return Boolean(t&&4===t.length&&i&&4===i.length&&!(isNaN(parseInt(t[1]))||isNaN(parseInt(t[2]))||isNaN(parseInt(t[3])))&&!(isNaN(parseInt(i[1]))||isNaN(parseInt(i[2]))||isNaN(parseInt(i[3])))&&(parseInt(t[1])>parseInt(i[1])||parseInt(t[1])>=parseInt(i[1])&&parseInt(t[2])>parseInt(i[2])||parseInt(t[1])>=parseInt(i[1])&&parseInt(t[2])>=parseInt(i[2])&&parseInt(t[3])>parseInt(i[3])))},getEmbeddedFilenameParts=e=>{const A=null==e?void 0:e.match(/([^#\^]*)((#\^)(group=|area=|frame=|taskbone)?([^\|]*)|(#)(group=|area=|frame=|taskbone)?([^\^\|]*))(.*)/);return A?{filepath:A[1],hasBlockref:Boolean(A[3]),hasGroupref:"group="===A[4]||"group="===A[7],hasTaskbone:"taskbone"===A[4]||"taskbone"===A[7],hasArearef:"area="===A[4]||"area="===A[7],hasFrameref:"frame="===A[4]||"frame="===A[7],blockref:A[5],hasSectionref:Boolean(A[6]),sectionref:A[8],linkpartReference:A[2],linkpartAlias:A[9]}:{filepath:e,hasBlockref:!1,hasGroupref:!1,hasTaskbone:!1,hasArearef:!1,hasFrameref:!1,blockref:"",hasSectionref:!1,sectionref:"",linkpartReference:"",linkpartAlias:""}},fragWithHTML=e=>createFragment((A=>A.createDiv().innerHTML=e)),errorlog=e=>{console.error(Object.assign({plugin:"Excalidraw"},e))},sleep$1=async e=>new Promise((A=>setTimeout(A,e))),log=console.log.bind(window.console),debug=console.log.bind(window.console),getContainerElement=(e,A)=>{var t;return e&&e.containerId&&null!==(t=A.elements.filter((A=>A.id===e.containerId))[0])&&void 0!==t?t:null},updateFrontmatterInString=(e,A)=>{if(!e)return e;for(const t of A){const A=new RegExp(`${t[0]}:\\s.*\\n`,"g");e=e.match(A)?e.replaceAll(A,`${t[0]}: ${t[1]}\n`):e.replace(/^---\n/,`---\n${t[0]}: ${t[1]}\n`)}return e},isHyperLink=e=>e&&!e.includes("\n")&&!e.includes("\r")&&e.match(/^https?:(\d*)?\/\/[^\s]*$/),isContainer=e=>{var A;return"arrow"!==e.type&&(null===(A=e.boundElements)||void 0===A?void 0:A.map((e=>e.type)).includes("text"))},hyperlinkIsImage=e=>{isHyperLink(e);const A=e.split("?")[0];return IMAGE_TYPES.contains(A.substring(A.lastIndexOf(".")+1))},hyperlinkIsYouTubeLink=e=>isHyperLink(e)&&(e.startsWith("https://youtu.be")||e.startsWith("https://www.youtube.com")||e.startsWith("https://youtube.com")||e.startsWith("https//www.youtu.be"))&&null!==e.match(/(youtu.be\/|v=)([^?\/\&]*)/),getYouTubeThumbnailLink=async e=>{const A=e.match(/(youtu.be\/|v=)([^?\/\&]*)/);if(!A||!A[2])return null;const t=A[2];let i=`https://i.ytimg.com/vi/${t}/maxresdefault.jpg`,n=await obsidian_module.requestUrl({url:i,method:"get",contentType:"image/jpeg",throw:!1});return n&&200===n.status?i:(i=`https://i.ytimg.com/vi/${t}/hq720.jpg`,n=await obsidian_module.requestUrl({url:i,method:"get",contentType:"image/jpeg",throw:!1}),n&&200===n.status?i:(i=`https://i.ytimg.com/vi/${t}/mqdefault.jpg`,n=await obsidian_module.requestUrl({url:i,method:"get",contentType:"image/jpeg",throw:!1}),n&&200===n.status?i:`https://i.ytimg.com/vi/${t}/default.jpg`))},isCallerFromTemplaterPlugin=e=>{const A=e.split("\n");for(const e of A)if(e.trim().startsWith("at Templater."))return!0;return!1},convertSVGStringToElement=e=>{const A=document.createElement("div");A.innerHTML=e;const t=A.firstChild;if(t instanceof SVGSVGElement)return t},escapeRegExp=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),addIframe=(e,A,t,i="settings")=>{e.createDiv({cls:`excalidraw-videoWrapper ${i}`}).createEl("iframe",{attr:{allowfullscreen:!0,allow:"encrypted-media;picture-in-picture",frameborder:"0",title:"YouTube video player",src:"https://www.youtube.com/embed/"+A+(t?"?start="+t:""),sandbox:"allow-forms allow-presentation allow-same-origin allow-scripts allow-modals"}})};var ar={},cz={},da={},de={},en={PUBLISH_SVG_CHECK:"Obsidian Publish: Find SVG and PNG exports that are out of date",EMBEDDABLE_PROPERTIES:"Embeddable Properties",EMBEDDABLE_RELATIVE_ZOOM:"Scale selected embeddable elements to 100% relative to the current canvas zoom",OPEN_IMAGE_SOURCE:"Open Excalidraw drawing",INSTALL_SCRIPT:"Install the script",UPDATE_SCRIPT:"Update available - Click to install",CHECKING_SCRIPT:"Checking for newer version - Click to reinstall",UNABLETOCHECK_SCRIPT:"Update check failed - Click to reinstall",UPTODATE_SCRIPT:"Script is up to date - Click to reinstall",OPEN_AS_EXCALIDRAW:"Open as Excalidraw Drawing",TOGGLE_MODE:"Toggle between Excalidraw and Markdown mode",CONVERT_NOTE_TO_EXCALIDRAW:"Convert empty note to Excalidraw Drawing",CONVERT_EXCALIDRAW:"Convert *.excalidraw to *.md files",CREATE_NEW:"Create new drawing",CONVERT_FILE_KEEP_EXT:"*.excalidraw => *.excalidraw.md",CONVERT_FILE_REPLACE_EXT:"*.excalidraw => *.md (Logseq compatibility)",DOWNLOAD_LIBRARY:"Export stencil library as an *.excalidrawlib file",OPEN_EXISTING_NEW_PANE:"Open existing drawing - IN A NEW PANE",OPEN_EXISTING_ACTIVE_PANE:"Open existing drawing - IN THE CURRENT ACTIVE PANE",TRANSCLUDE:"Embed a drawing",TRANSCLUDE_MOST_RECENT:"Embed the most recently edited drawing",TOGGLE_LEFTHANDED_MODE:"Toggle left-handed mode",NEW_IN_NEW_PANE:"Create new drawing - IN AN ADJACENT WINDOW",NEW_IN_NEW_TAB:"Create new drawing - IN A NEW TAB",NEW_IN_ACTIVE_PANE:"Create new drawing - IN THE CURRENT ACTIVE WINDOW",NEW_IN_POPOUT_WINDOW:"Create new drawing - IN A POPOUT WINDOW",NEW_IN_NEW_PANE_EMBED:"Create new drawing - IN AN ADJACENT WINDOW - and embed into active document",NEW_IN_NEW_TAB_EMBED:"Create new drawing - IN A NEW TAB - and embed into active document",NEW_IN_ACTIVE_PANE_EMBED:"Create new drawing - IN THE CURRENT ACTIVE WINDOW - and embed into active document",NEW_IN_POPOUT_WINDOW_EMBED:"Create new drawing - IN A POPOUT WINDOW - and embed into active document",TOGGLE_LOCK:"Toggle Text Element between edit RAW and PREVIEW",DELETE_FILE:"Delete selected image or Markdown file from Obsidian Vault",INSERT_LINK_TO_ELEMENT:`Copy markdown link for selected element to clipboard. ${labelCTRL()}+CLICK to copy 'group=' link. SHIFT+CLICK to copy an 'area=' link. ${labelALT()}+CLICK to watch a help video.`,INSERT_LINK_TO_ELEMENT_GROUP:"Copy 'group=' markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_AREA:"Copy 'area=' markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_FRAME:"Copy 'frame=' markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_NORMAL:"Copy markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_ERROR:"Select a single element in the scene",INSERT_LINK_TO_ELEMENT_READY:"Link is READY and available on the clipboard",INSERT_LINK:"Insert link to file",INSERT_COMMAND:"Insert Obsidian Command as a link",INSERT_IMAGE:"Insert image or Excalidraw drawing from your vault",IMPORT_SVG:"Import an SVG file as Excalidraw strokes (limited SVG support, TEXT currently not supported)",INSERT_MD:"Insert markdown file from vault",INSERT_PDF:"Insert PDF file from vault",UNIVERSAL_ADD_FILE:"Insert ANY file",INSERT_LATEX:`Insert LaTeX formula (e.g. \\binom{n}{k} = \\frac{n!}{k!(n-k)!}). ${labelALT()}+CLICK to watch a help video.`,ENTER_LATEX:"Enter a valid LaTeX expression",READ_RELEASE_NOTES:"Read latest release notes",RUN_OCR:"OCR: Grab text from freedraw scribble and pictures to clipboard",TRAY_MODE:"Toggle property-panel tray-mode",SEARCH:"Search for text in drawing",RESET_IMG_TO_100:"Set selected image element size to 100% of original",TEMPORARY_DISABLE_AUTOSAVE:"Disable autosave until next time Obsidian starts (only set this if you know what you are doing)",TEMPORARY_ENABLE_AUTOSAVE:"Enable autosave",INSTALL_SCRIPT_BUTTON:"Install or update Excalidraw Scripts",OPEN_AS_MD:"Open as Markdown",EXPORT_IMAGE:"Export Image",OPEN_LINK:"Open selected text as link\n(SHIFT+CLICK to open in a new pane)",EXPORT_EXCALIDRAW:"Export to an .Excalidraw file",LINK_BUTTON_CLICK_NO_TEXT:"Select an ImageElement, or select a TextElement that contains an internal or external link.\n",FILENAME_INVALID_CHARS:'File name cannot contain any of the following characters: * " \\ < > : | ? #',FORCE_SAVE:"Save (will also update transclusions)",RAW:"Change to PREVIEW mode (only affects text-elements with links or transclusions)",PARSED:"Change to RAW mode (only affects text-elements with links or transclusions)",NOFILE:"Excalidraw (no file)",COMPATIBILITY_MODE:"*.excalidraw file opened in compatibility mode. Convert to new format for full plugin functionality.",CONVERT_FILE:"Convert to new format",BACKUP_AVAILABLE:"We encountered an error while loading your drawing. This might have occurred if Obsidian unexpectedly closed during a save operation. For example, if you accidentally closed Obsidian on your mobile device while saving.<br><br><b>GOOD NEWS:</b> Fortunately, a local backup is available. However, please note that if you last modified this drawing on a different device (e.g., tablet) and you are now on your desktop, that other device likely has a more recent backup.<br><br>I recommend trying to open the drawing on your other device first and restore the backup from its local storage.<br><br>Would you like to load the backup?",BACKUP_RESTORED:"Backup restored",CACHE_NOT_READY:"I apologize for the inconvenience, but an error occurred while loading your file.<br><br><mark>Having a little patience can save you a lot of time...</mark><br><br>The plugin has a backup cache, but it appears that you have just started Obsidian. Initializing the Backup Cache may take some time, usually up to a minute or more depending on your device's performance. You will receive a notification in the top right corner when the cache initialization is complete.<br><br>Please press OK to attempt loading the file again and check if the cache has finished initializing. If you see a completely empty file behind this message, I recommend waiting until the backup cache is ready before proceeding. Alternatively, you can choose Cancel to manually correct your file.<br>",OBSIDIAN_TOOLS_PANEL:"Obsidian Tools Panel",ERROR_SAVING_IMAGE:"Unknown error occured while fetching the image. It could be that for some reason the image is not available or rejected the fetch request from Obsidian",WARNING_PASTING_ELEMENT_AS_TEXT:"PASTING EXCALIDRAW ELEMENTS AS A TEXT ELEMENT IS NOT ALLOWED",USE_INSERT_FILE_MODAL:"Use 'Insert Any File' to embed a markdown note",CONVERT_TO_MARKDOWN:"Convert to file...",RELEASE_NOTES_NAME:"Display Release Notes after update",RELEASE_NOTES_DESC:"<b><u>Toggle ON:</u></b> Display release notes each time you update Excalidraw to a newer version.<br><b><u>Toggle OFF:</u></b> Silent mode. You can still read release notes on <a href='https://github.com/zsviczian/obsidian-excalidraw-plugin/releases'>GitHub</a>.",NEWVERSION_NOTIFICATION_NAME:"Plugin update notification",NEWVERSION_NOTIFICATION_DESC:"<b><u>Toggle ON:</u></b> Show a notification when a new version of the plugin is available.<br><b><u>Toggle OFF:</u></b> Silent mode. You need to check for plugin updates in Community Plugins.",BASIC_HEAD:"Basic",BASIC_DESC:'In the "Basic" settings, you can configure options such as displaying release notes after updates, receiving plugin update notifications, setting the default location for new drawings, specifying the Excalidraw folder for embedding drawings into active documents, defining an Excalidraw template file, and designating an Excalidraw Automate script folder for managing automation scripts.',FOLDER_NAME:"Excalidraw folder",FOLDER_DESC:"Default location for new drawings. If empty, drawings will be created in the Vault root.",FOLDER_EMBED_NAME:"Use Excalidraw folder when embedding a drawing into the active document",FOLDER_EMBED_DESC:"Define which folder to place the newly inserted drawing into when using the command palette action: 'Create a new drawing and embed into active document'.<br><b><u>Toggle ON:</u></b> Use Excalidraw folder<br><b><u>Toggle OFF:</u></b> Use the attachments folder defined in Obsidian settings.",TEMPLATE_NAME:"Excalidraw template file",TEMPLATE_DESC:"Full filepath to the Excalidraw template. E.g.: If your template is in the default Excalidraw folder and its name is Template.md, the setting would be: Excalidraw/Template.md (or just Excalidraw/Template - you may omit the .md file extension). If you are using Excalidraw in compatibility mode, then your template must be a legacy Excalidraw file as well such as Excalidraw/Template.excalidraw.",SCRIPT_FOLDER_NAME:"Excalidraw Automate script folder (CASE SeNSitiVE!)",SCRIPT_FOLDER_DESC:"The files you place in this folder will be treated as Excalidraw Automate scripts. You can access your scripts from Excalidraw via the Obsidian Command Palette. Assign hotkeys to your favorite scripts just like to any other Obsidian command. The folder may not be the root folder of your Vault. ",AI_HEAD:"AI Settings - Experimental",AI_DESC:'In the "AI" settings, you can configure options for using OpenAI\'s GPT API. While the OpenAI API is in beta, its use is strictly limited — as such we require you use your own API key. You can create an OpenAI account, add a small credit (5 USD minimum), and generate your own API key. Once API key is set, you can use the AI tools in Excalidraw.',AI_OPENAI_TOKEN_NAME:"OpenAI API key",AI_OPENAI_TOKEN_DESC:"You can get your OpenAI API key from your <a href='https://platform.openai.com/api-keys'>OpenAI account</a>.",AI_OPENAI_TOKEN_PLACEHOLDER:"Enter your OpenAI API key here",AI_OPENAI_DEFAULT_MODEL_NAME:"Default AI model",AI_OPENAI_DEFAULT_MODEL_DESC:"The default AI model to use when generating text. This is a freetext field, so you can enter any valid OpenAI model name. Find out more about the available models on the <a href='https://platform.openai.com/docs/models'>OpenAI website</a>.",AI_OPENAI_DEFAULT_MODEL_PLACEHOLDER:"Enter your default AI model here",AI_OPENAI_DEFAULT_VISION_MODEL_NAME:"Default AI vision model",AI_OPENAI_DEFAULT_VISION_MODEL_DESC:"The default AI vision model to use when generating text from images. This is a freetext field, so you can enter any valid OpenAI model name. Find out more about the available models on the <a href='https://platform.openai.com/docs/models'>OpenAI website</a>.",AI_OPENAI_DEFAULT_VISION_MODEL_PLACEHOLDER:"Enter your default AI vision model here",SAVING_HEAD:"Saving",SAVING_DESC:"In the 'Saving' section of Excalidraw Settings, you can configure how your drawings are saved. This includes options for compressing Excalidraw JSON in Markdown, setting autosave intervals for both desktop and mobile, defining filename formats, and choosing whether to use the .excalidraw.md or .md file extension. ",COMPRESS_NAME:"Compress Excalidraw JSON in Markdown",COMPRESS_DESC:"By enabling this feature Excalidraw will store the drawing JSON in a Base64 compressed format using the <a href='https://pieroxy.net/blog/pages/lz-string/index.html'>LZ-String</a> algorithm. This will reduce the chance of Excalidraw JSON cluttering your search results in Obsidian. As a side effect, this will also reduce the filesize of Excalidraw drawings. When you switch an Excalidraw drawing to Markdown view, using the options menu in Excalidraw, the file will be saved without compression, so that you can read and edit the JSON string. The drawing will be compressed again once you switch back to Excalidraw view. The setting only has effect 'point forward', meaning, existing drawings will not be affected by the setting until you open them and save them.<br><b><u>Toggle ON:</u></b> Compress drawing JSON<br><b><u>Toggle OFF:</u></b> Leave drawing JSON uncompressed",AUTOSAVE_INTERVAL_DESKTOP_NAME:"Interval for autosave on Desktop",AUTOSAVE_INTERVAL_DESKTOP_DESC:"The time interval between saves. Autosave will skip if there are no changes in the drawing. Excalidraw will also save the file when closing a workspace tab or navigating within Obsidian, but away from the active Excalidraw tab (i.e. clicking on the Obsidian ribbon or checking backlinks, etc.). Excalidraw will not be able to save your work when terminating Obsidian directly either by killing the Obsidian process, or clicking to close Obsidian altogether.",AUTOSAVE_INTERVAL_MOBILE_NAME:"Interval for autosave on Mobile",AUTOSAVE_INTERVAL_MOBILE_DESC:"I recommend a more frequent interval for Mobiles. Excalidraw will also save the file when closing a workspace tab or navigating within Obsidian, but away from the active Excalidraw tab (i.e. tapping on the Obsidian ribbon or checking backlinks, etc.). Excalidraw will not be able to save your work when terminating Obsidian directly (i.e. swiping it away). Also note, that when you switch apps on a Mobile device, sometimes Android and iOS closes Obsidian in the background to save system resources. In such a case Excalidraw will not be able to save the latest changes.",FILENAME_HEAD:"Filename",FILENAME_DESC:"<p>Click this link for the <a href='https://momentjs.com/docs/#/displaying/format/'>date and time format reference</a>.</p>",FILENAME_SAMPLE:"Filename for a new drawing is: ",FILENAME_EMBED_SAMPLE:"Filename for a new embedded drawing is: ",FILENAME_PREFIX_NAME:"Filename prefix",FILENAME_PREFIX_DESC:"The first part of the filename",FILENAME_PREFIX_EMBED_NAME:"Filename prefix when embedding a new drawing into a markdown note",FILENAME_PREFIX_EMBED_DESC:"Should the filename of the newly inserted drawing start with the name of the active markdown note when using the command palette action: <code>Create a new drawing and embed into active document</code>?<br><b><u>Toggle ON:</u></b> Yes, the filename of a new drawing should start with filename of the active document<br><b><u>Toggle OFF:</u></b> No, filename of a new drawing should not include the filename of the active document",FILENAME_POSTFIX_NAME:"Custom text after markdown Note's name when embedding",FILENAME_POSTFIX_DESC:"Affects filename only when embedding into a markdown document. This text will be inserted after the note's name, but before the date.",FILENAME_DATE_NAME:"Filename Date",FILENAME_DATE_DESC:"The last part of the filename. Leave empty if you do not want a date.",FILENAME_EXCALIDRAW_EXTENSION_NAME:".excalidraw.md or .md",FILENAME_EXCALIDRAW_EXTENSION_DESC:"This setting does not apply if you use Excalidraw in compatibility mode, i.e. you are not using Excalidraw markdown files.<br><b><u>Toggle ON:</u></b> filename ends with .excalidraw.md<br><b><u>Toggle OFF:</u></b> filename ends with .md",DISPLAY_HEAD:"Excalidraw appearance and behavior",DISPLAY_DESC:"In the 'appearance and behavior' section of Excalidraw Settings, you can fine-tune how Excalidraw appears and behaves. This includes options for dynamic styling, left-handed mode, matching Excalidraw and Obsidian themes, default modes, and more.",DYNAMICSTYLE_NAME:"Dynamic styling",DYNAMICSTYLE_DESC:"Change Excalidraw UI colors to match the canvas color",LEFTHANDED_MODE_NAME:"Left-handed mode",LEFTHANDED_MODE_DESC:"Currently only has effect in tray-mode. If turned on, the tray will be on the right side.<br><b><u>Toggle ON:</u></b> Left-handed mode.<br><b><u>Toggle OFF:</u></b> Right-handed moded",IFRAME_MATCH_THEME_NAME:"Markdown embeds to match Excalidraw theme",IFRAME_MATCH_THEME_DESC:"<b><u>Toggle ON:</u></b> Set this to true if for example you are using Obsidian in dark-mode but use excalidraw with a light background. With this setting the embedded Obsidian markdown document will match the Excalidraw theme (i.e. light colors if Excalidraw is in light mode).<br><b><u>Toggle OFF:</u></b> Set this to false if you want the embedded Obsidian markdown document to match the Obsidian theme (i.e. dark colors if Obsidian is in dark mode).",MATCH_THEME_NAME:"New drawing to match Obsidian theme",MATCH_THEME_DESC:"If theme is dark, new drawing will be created in dark mode. This does not apply when you use a template for new drawings. Also this will not affect when you open an existing drawing. Those will follow the theme of the template/drawing respectively.<br><b><u>Toggle ON:</u></b> Follow Obsidian Theme<br><b><u>Toggle OFF:</u></b> Follow theme defined in your template",MATCH_THEME_ALWAYS_NAME:"Existing drawings to match Obsidian theme",MATCH_THEME_ALWAYS_DESC:"If theme is dark, drawings will be opened in dark mode. If your theme is light, they will be opened in light mode. <br><b><u>Toggle ON:</u></b> Match Obsidian theme<br><b><u>Toggle OFF:</u></b> Open with the same theme as last saved",MATCH_THEME_TRIGGER_NAME:"Excalidraw to follow when Obsidian Theme changes",MATCH_THEME_TRIGGER_DESC:"If this option is enabled open Excalidraw pane will switch to light/dark mode when Obsidian theme changes. <br><b><u>Toggle ON:</u></b> Follow theme changes<br><b><u>Toggle OFF:</u></b> Drawings are not affected by Obsidian theme changes",DEFAULT_OPEN_MODE_NAME:"Default mode when opening Excalidraw",DEFAULT_OPEN_MODE_DESC:"Specifies the mode how Excalidraw opens: Normal, Zen, or View mode. You may also set this behavior on a file level by adding the excalidraw-default-mode frontmatter key with a value of: normal, view, or zen to your document.",DEFAULT_PEN_MODE_NAME:"Pen mode",DEFAULT_PEN_MODE_DESC:"Should pen mode be automatically enabled when opening Excalidraw?",THEME_HEAD:"Theme and styling",ZOOM_HEAD:"Zoom",DEFAULT_PINCHZOOM_NAME:"Allow pinch zoom in pen mode",DEFAULT_PINCHZOOM_DESC:"Pinch zoom in pen mode when using the freedraw tool is disabled by default to prevent unwanted accidental zooming with your palm.<br><b><u>Toggle ON:</u></b> Enable pinch zoom in pen mode<br><b><u>Toggle OFF:</u></b>Disable pinch zoom in pen mode",DEFAULT_WHEELZOOM_NAME:"Mouse wheel to zoom by default",DEFAULT_WHEELZOOM_DESC:`<b><u>Toggle ON:</u></b> Mouse wheel to zoom; ${labelCTRL()} + mouse wheel to scroll</br><b><u>Toggle OFF:</u></b>${labelCTRL()} + mouse wheel to zoom; Mouse wheel to scroll`,ZOOM_TO_FIT_NAME:"Zoom to fit on view resize",ZOOM_TO_FIT_DESC:"Zoom to fit drawing when the pane is resized<br><b><u>Toggle ON:</u></b> Zoom to fit<br><b><u>Toggle OFF:</u></b> Auto zoom disabled",ZOOM_TO_FIT_ONOPEN_NAME:"Zoom to fit on file open",ZOOM_TO_FIT_ONOPEN_DESC:"Zoom to fit drawing when the drawing is first opened<br><b><u>Toggle ON:</u></b> Zoom to fit<br><b><u>Toggle OFF:</u></b> Auto zoom disabled",ZOOM_TO_FIT_MAX_LEVEL_NAME:"Zoom to fit max ZOOM level",ZOOM_TO_FIT_MAX_LEVEL_DESC:"Set the maximum level to which zoom to fit will enlarge the drawing. Minimum is 0.5 (50%) and maximum is 10 (1000%).",LASER_HEAD:"Laser pointer",LASER_COLOR:"Laser pointer color",LASER_DECAY_TIME_NAME:"Laser pointer decay time",LASER_DECAY_TIME_DESC:"Laser pointer decay time in milliseconds. Default is 1000 (i.e. 1 second).",LASER_DECAY_LENGTH_NAME:"Laser pointer decay length.",LASER_DECAY_LENGTH_DESC:"Laser pointer decay length in line points. Default is 50.",LINKS_HEAD:"Links, transclusion and TODOs",LINKS_HEAD_DESC:"In the 'Links, transclusion and TODOs' section of Excalidraw Settings, you can configure how Excalidraw handles links, transclusions, and TODO items. This includes options for opening links, managing panes, displaying links with brackets, customizing link prefixes, handling TODO items, and more. ",LINKS_DESC:`${labelCTRL()}+CLICK on <code>[[Text Elements]]</code> to open them as links. If the selected text has more than one <code>[[valid Obsidian links]]</code>, only the first will be opened. If the text starts as a valid web link (i.e. <code>https://</code> or <code>http://</code>), then the plugin will open it in a browser. When Obsidian files change, the matching <code>[[link]]</code> in your drawings will also change. If you don't want text accidentally changing in your drawings use <code>[[links|with aliases]]</code>.`,ADJACENT_PANE_NAME:"Reuse adjacent pane",ADJACENT_PANE_DESC:`When ${labelCTRL()}+${labelALT()} clicking a link in Excalidraw, by default the plugin will open the link in a new pane. Turning this setting on, Excalidraw will first look for an existing pane, and try to open the link there. Excalidraw will look for the other workspace pane based on your focus/navigation history, i.e. the workpane that was active before you activated Excalidraw.`,MAINWORKSPACE_PANE_NAME:"Open in main workspace",MAINWORKSPACE_PANE_DESC:`When ${labelCTRL()}+${labelALT()} clicking a link in Excalidraw, by default the plugin will open the link in a new pane in the current active window. Turning this setting on, Excalidraw will open the link in an existing or new pane in the main workspace. `,LINK_BRACKETS_NAME:"Show <code>[[brackets]]</code> around links",LINK_BRACKETS_DESC:"In PREVIEW mode, when parsing Text Elements, place brackets around links. You can override this setting for a specific drawing by adding <code>excalidraw-link-brackets: true/false</code> to the file's frontmatter.",LINK_PREFIX_NAME:"Link prefix",LINK_PREFIX_DESC:'In PREVIEW mode, if the Text Element contains a link, precede the text with these characters. You can override this setting for a specific drawing by adding <code>excalidraw-link-prefix: "📍 "</code> to the file\'s frontmatter.',URL_PREFIX_NAME:"URL prefix",URL_PREFIX_DESC:'In PREVIEW mode, if the Text Element contains a URL link, precede the text with these characters. You can override this setting for a specific drawing by adding <code>excalidraw-url-prefix: "🌐 "</code> to the file\'s frontmatter.',PARSE_TODO_NAME:"Parse todo",PARSE_TODO_DESC:"Convert '- [ ] ' and '- [x] ' to checkbox and tick in the box.",TODO_NAME:"Open TODO icon",TODO_DESC:"Icon to use for open TODO items",DONE_NAME:"Completed TODO icon",DONE_DESC:"Icon to use for completed TODO items",HOVERPREVIEW_NAME:`Hover preview without pressing the ${labelCTRL()} key`,HOVERPREVIEW_DESC:`<b><u>Toggle ON:</u></b> In Exalidraw <u>view mode</u> the hover preview for [[wiki links]] will be shown immediately, without the need to hold the ${labelCTRL()} key. In Excalidraw <u>normal mode</u>, the preview will be shown immediately only when hovering the blue link icon in the top right of the element.<br> <b><u>Toggle OFF:</u></b> Hover preview is shown only when you hold the ${labelCTRL()} key while hovering the link.`,LINKOPACITY_NAME:"Opacity of link icon",LINKOPACITY_DESC:"Opacity of the link indicator icon in the top right corner of an element. 1 is opaque, 0 is transparent.",LINK_CTRL_CLICK_NAME:`${labelCTRL()}+CLICK on text with [[links]] or [](links) to open them`,LINK_CTRL_CLICK_DESC:"You can turn this feature off if it interferes with default Excalidraw features you want to use. If this is turned off, only the link button in the title bar of the drawing pane will open links.",TRANSCLUSION_WRAP_NAME:"Overflow wrap behavior of transcluded text",TRANSCLUSION_WRAP_DESC:"Number specifies the character count where the text should be wrapped. Set the text wrapping behavior of transcluded text. Turn this ON to force-wrap text (i.e. no overflow), or OFF to soft-wrap text (at the nearest whitespace).",TRANSCLUSION_DEFAULT_WRAP_NAME:"Transclusion word wrap default",TRANSCLUSION_DEFAULT_WRAP_DESC:"You can manually set/override word wrapping length using the `![[page#^block]]{NUMBER}` format. Normally you will not want to set a default, because if you transclude text inside a sticky note, then Excalidraw will automatically take care of word wrapping. Set this value to `0` if you do not want to set a default. ",PAGE_TRANSCLUSION_CHARCOUNT_NAME:"Page transclusion max char count",PAGE_TRANSCLUSION_CHARCOUNT_DESC:"The maximum number of characters to display from the page when transcluding an entire page with the ![[markdown page]] format.",QUOTE_TRANSCLUSION_REMOVE_NAME:"Quote translusion: remove leading '> ' from each line",QUOTE_TRANSCLUSION_REMOVE_DESC:"Remove the leading '> ' from each line of the transclusion. This will improve readability of quotes in text only transclusions<br><b><u>Toggle ON:</u></b> Remove leading '> '<br><b><u>Toggle OFF:</u></b> Do not remove leading '> ' (note it will still be removed from the first row due to Obsidian API functionality)",GET_URL_TITLE_NAME:"Use iframely to resolve page title",GET_URL_TITLE_DESC:"Use the <code>http://iframely.server.crestify.com/iframely?url=</code> to get title of page when dropping a link into Excalidraw",PDF_TO_IMAGE:"PDF to Image",PDF_TO_IMAGE_SCALE_NAME:"PDF to Image conversion scale",PDF_TO_IMAGE_SCALE_DESC:"Sets the resolution of the image that is generated from the PDF page. Higher resolution will result in bigger images in memory and consequently a higher load on your system (slower performance), but sharper imagee. Additionally, if you want to copy PDF pages (as images) to Excalidraw.com, the bigger image size may result in exceeding the 2MB limit on Excalidraw.com.",EMBED_TOEXCALIDRAW_HEAD:"Embed files into Excalidraw",EMBED_TOEXCALIDRAW_DESC:"In the Embed Files section of Excalidraw Settings, you can configure how various files are embedded into Excalidraw. This includes options for embedding interactive markdown files, PDFs, and markdown files as images.",MD_HEAD:"Embed markdown into Excalidraw as image",MD_EMBED_CUSTOMDATA_HEAD_NAME:"Interactive Markdown Files",MD_EMBED_CUSTOMDATA_HEAD_DESC:'These settings will only effect future embeds. Current embeds remain unchanged. The theme setting of embedded frames is under the "Excalidraw appearance and behavior" section.',MD_TRANSCLUDE_WIDTH_NAME:"Default width of a transcluded markdown document",MD_TRANSCLUDE_WIDTH_DESC:"The width of the markdown page. This affects the word wrapping when transcluding longer paragraphs, and the width of the image element. You can override the default width of an embedded file using the <code>[[filename#heading|WIDTHxMAXHEIGHT]]</code> syntax in markdown view mode under embedded files.",MD_TRANSCLUDE_HEIGHT_NAME:"Default maximum height of a transcluded markdown document",MD_TRANSCLUDE_HEIGHT_DESC:"The embedded image will be as high as the markdown text requires, but not higher than this value. You can override this value by editing the embedded image link in markdown view mode with the following syntax <code>[[filename#^blockref|WIDTHxMAXHEIGHT]]</code>.",MD_DEFAULT_FONT_NAME:"The default font typeface to use for embedded markdown files.",MD_DEFAULT_FONT_DESC:'Set this value to "Virgil" or "Cascadia" or the filename of a valid <code>.ttf</code>, <code>.woff</code>, or <code>.woff2</code> font e.g. <code>MyFont.woff2</code> You can override this setting by adding the following frontmatter-key to the embedded markdown file: <code>excalidraw-font: font_or_filename</code>',MD_DEFAULT_COLOR_NAME:"The default font color to use for embedded markdown files.",MD_DEFAULT_COLOR_DESC:'Set this to any valid css color name e.g. "steelblue" (<a href="https://www.w3schools.com/colors/colors_names.asp">color names</a>), or a valid hexadecimal color e.g. "#e67700", or any other valid css color string. You can override this setting by adding the following frontmatter-key to the embedded markdown file: <code>excalidraw-font-color: steelblue</code>',MD_DEFAULT_BORDER_COLOR_NAME:"The default border color to use for embedded markdown files.",MD_DEFAULT_BORDER_COLOR_DESC:'Set this to any valid css color name e.g. "steelblue" (<a href="https://www.w3schools.com/colors/colors_names.asp">color names</a>), or a valid hexadecimal color e.g. "#e67700", or any other valid css color string. You can override this setting by adding the following frontmatter-key to the embedded markdown file: <code>excalidraw-border-color: gray</code>. Leave empty if you don\'t want a border. ',MD_CSS_NAME:"CSS file",MD_CSS_DESC:`The filename of the CSS to apply to markdown embeds. Provide the filename with extension (e.g. 'md-embed.css'). The css file may also be a plain markdown file (e.g. 'md-embed-css.md'), just make sure the content is written using valid css syntax. If you need to look at the HTML code you are applying the CSS to, then open Obsidian Developer Console (${DEVICE.isIOS||DEVICE.isMacOS?"CMD+OPT+i":"CTRL+SHIFT+i"}) and type in the following command: "ExcalidrawAutomate.mostRecentMarkdownSVG". This will display the most recent SVG generated by Excalidraw. Setting the font-family in the css is has limitations. By default only your operating system's standard fonts are available (see README for details). You can add one custom font beyond that using the setting above. You can override this css setting by adding the following frontmatter-key to the embedded markdown file: "excalidraw-css: css_file_in_vault|css-snippet".`,EMBED_HEAD:"Embedding Excalidraw into your Notes and Exporting",EMBED_DESC:'In the "Embed & Export" settings, you can configure how images and Excalidraw drawings are embedded and exported within your documents. Key settings include choosing the image type for markdown preview (such as Native SVG or PNG), specifying the type of file to insert into the document (original Excalidraw, PNG, or SVG), and managing image caching for embedding in markdown. You can also control image sizing, whether to embed drawings using wiki links or markdown links, and adjust settings related to image themes, background colors, and Obsidian integration. \n Additionally, there are settings for auto-export, which automatically generates SVG and/or PNG files to match the title of your Excalidraw drawings, keeping them in sync with file renames and deletions.',EMBED_CANVAS:"Obsidian Canvas support",EMBED_CANVAS_NAME:"Immersive embedding",EMBED_CANVAS_DESC:"Hide canvas node border and background when embedding an Excalidraw drawing to Canvas. Note that for a full transparent background for your image, you will still need to configure Excalidraw to export images with transparent background.",EMBED_CACHING:"Image caching",EXPORT_SUBHEAD:"Export Settings",EMBED_SIZING:"Image sizing",EMBED_THEME_BACKGROUND:"Image theme and background color",EMBED_IMAGE_CACHE_NAME:"Cache images for embedding in markdown",EMBED_IMAGE_CACHE_DESC:"Cache images for embedding in markdown. This will speed up the embedding process, but in case you compose images of several sub-component drawings, the embedded image in Markdown won't update until you open the drawing and save it to trigger an update of the cache.",EMBED_IMAGE_CACHE_CLEAR:"Purge Cache",BACKUP_CACHE_CLEAR:"Purge Backups",BACKUP_CACHE_CLEAR_CONFIRMATION:"This action will delete all Excalidraw drawing backups. Backups are used as a safety measure in case your drawing file gets damaged. Each time you open Obsidian the plugin automatically deletes backups for files that no longer exist in your Vault. Are you sure you want to clear all backups?",EMBED_REUSE_EXPORTED_IMAGE_NAME:"If found, use the already exported image for preview",EMBED_REUSE_EXPORTED_IMAGE_DESC:"This setting works in conjunction with the Auto-export SVG/PNG setting. If an exported image that matches the file name of the drawing is available, use that image instead of generating a preview image on the fly. This will result in faster previews especially when you have many embedded objects in the drawing, however, it may happen that your latest changes are not displayed and that the image will not automatically match your Obsidian theme in case you have changed the Obsidian theme since the export was created. This setting only applies to embedding images into markdown documents. For a number of reasons, the same approach cannot be used to expedite the loading of drawings with many embedded objects. See demonstration <a href='https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.6.23' target='_blank'>here</a>.",EMBED_PREVIEW_IMAGETYPE_NAME:"Image type in markdown preview",EMBED_PREVIEW_IMAGETYPE_DESC:"<b><u>Native SVG</u></b>: High Image Quality. Embedded Websites, YouTube videos, Obsidian Links, and external images embedded via a URL will all work. Embedded Obsidian pages will not<br><b><u>SVG Image</u></b>: High Image Quality. Embedded elements and images embedded via URL only have placeholders, links don't work<br><b><u>PNG Image</u></b>: Lower Image Quality, but in some cases better performance with large drawings. Embedded elements and images embedded via URL only have placeholders, links don't work. Also some of the <a href='https://www.youtube.com/watch?v=yZQoJg2RCKI&t=633s' target='_blank'>image block referencing features</a> do not work with PNG embeds.",PREVIEW_MATCH_OBSIDIAN_NAME:"Excalidraw preview to match Obsidian theme",PREVIEW_MATCH_OBSIDIAN_DESC:"Image preview in documents should match the Obsidian theme. If enabled, when Obsidian is in dark mode, Excalidraw images will render in dark mode. When Obsidian is in light mode, Excalidraw will render light mode as well. You may want to switch 'Export image with background' off for a more Obsidian-integrated look and feel.",EMBED_WIDTH_NAME:"Default width of embedded (transcluded) image",EMBED_WIDTH_DESC:"The default width of an embedded drawing. This applies to live preview edit and reading mode, as well as to hover previews. You can specify a custom width when embedding an image using the <code>![[drawing.excalidraw|100]]</code> or <code>[[drawing.excalidraw|100x100]]</code> format.",EMBED_TYPE_NAME:"Type of file to insert into the document",EMBED_TYPE_DESC:"When you embed an image into a document using the command palette this setting will specify if Excalidraw should embed the original Excalidraw file or a PNG or an SVG copy. You need to enable auto-export PNG / SVG (see below under Export Settings) for those image types to be available in the dropdown. For drawings that do not have a a corresponding PNG or SVG readily available the command palette action will insert a broken link. You need to open the original drawing and initiate export manually. This option will not autogenerate PNG/SVG files, but will simply reference the already existing files.",EMBED_MARKDOWN_COMMENT_NAME:"Embed link to drawing as comment",EMBED_MARKDOWN_COMMENT_DESC:"Embed the link to the original Excalidraw file as a markdown link under the image, e.g.:<code>%%[[drawing.excalidraw]]%%</code>.<br>Instead of adding a markdown comment you may also select the embedded SVG or PNG line and use the command palette action: '<code>Excalidraw: Open Excalidraw drawing</code>' to open the drawing.",EMBED_WIKILINK_NAME:"Embed Drawing using Wiki link",EMBED_WIKILINK_DESC:"<b><u>Toggle ON:</u></b> Excalidraw will embed a [[wiki link]].<br><b><u>Toggle OFF:</u></b> Excalidraw will embed a [markdown](link).",EXPORT_PNG_SCALE_NAME:"PNG export image scale",EXPORT_PNG_SCALE_DESC:"The size-scale of the exported PNG image",EXPORT_BACKGROUND_NAME:"Export image with background",EXPORT_BACKGROUND_DESC:"If turned off, the exported image will be transparent.",EXPORT_PADDING_NAME:"Image Padding",EXPORT_PADDING_DESC:"The padding (in pixels) around the exported SVG or PNG image. If you have curved lines close to the edge of the image they might get cropped during image export. You can increase this value to avoid cropping. You can also override this setting at a file level by adding the <code>excalidraw-export-padding: 5<code> frontmatter key.",EXPORT_THEME_NAME:"Export image with theme",EXPORT_THEME_DESC:"Export the image matching the dark/light theme of your drawing. If turned off, drawings created in dark mode will appear as they would in light mode.",EXPORT_HEAD:"Auto-export Settings",EXPORT_SYNC_NAME:"Keep the .SVG and/or .PNG filenames in sync with the drawing file",EXPORT_SYNC_DESC:"When turned on, the plugin will automatically update the filename of the .SVG and/or .PNG files when the drawing in the same folder (and same name) is renamed. The plugin will also automatically delete the .SVG and/or .PNG files when the drawing in the same folder (and same name) is deleted. ",EXPORT_SVG_NAME:"Auto-export SVG",EXPORT_SVG_DESC:"Automatically create an SVG export of your drawing matching the title of your file. The plugin will save the *.SVG file in the same folder as the drawing. Embed the .svg file into your documents instead of Excalidraw making you embeds platform independent. While the auto-export switch is on, this file will get updated every time you edit the Excalidraw drawing with the matching name. You can override this setting on a file level by adding the <code>excalidraw-autoexport</code> frontmatter key. Valid values for this key are <code>none</code>,<code>both</code>,<code>svg</code>, and <code>png</code>.",EXPORT_PNG_NAME:"Auto-export PNG",EXPORT_PNG_DESC:"Same as the auto-export SVG, but for *.PNG",EXPORT_BOTH_DARK_AND_LIGHT_NAME:"Export both dark- and light-themed image",EXPORT_BOTH_DARK_AND_LIGHT_DESC:"When enabled, Excalidraw will export two files instead of one: filename.dark.png, filename.light.png and/or filename.dark.svg and filename.light.svg<br>Double files will be exported both if auto-export SVG or PNG (or both) are enabled, as well as when clicking export on a single image.",COMPATIBILITY_HEAD:"Compatibility features",COMPATIBILITY_DESC:"You should only enable these features if you have a strong reason for wanting to work with excalidraw.com files instead of markdown files. Many of the plugin features are not supported on legacy files. Typical usecase would be if you use set your vault up on top of a Visual Studio Code project folder and you have .excalidraw drawings you want to access from Visual Studio Code as well. Another usecase might be using Excalidraw in Logseq and Obsidian in parallel.",EXPORT_EXCALIDRAW_NAME:"Auto-export Excalidraw",EXPORT_EXCALIDRAW_DESC:"Same as the auto-export SVG, but for *.Excalidraw",SYNC_EXCALIDRAW_NAME:"Sync *.excalidraw with *.md version of the same drawing",SYNC_EXCALIDRAW_DESC:"If the modified date of the *.excalidraw file is more recent than the modified date of the *.md file then update the drawing in the .md file based on the .excalidraw file",COMPATIBILITY_MODE_NAME:"New drawings as legacy files",COMPATIBILITY_MODE_DESC:"⚠️ Enable this only if you know what you are doing. In 99.9% of the cases you DO NOT want this on. By enabling this feature drawings you create with the ribbon icon, the command palette actions, and the file explorer are going to be all legacy *.excalidraw files. This setting will also turn off the reminder message when you open a legacy file for editing.",MATHJAX_NAME:"MathJax (LaTeX) javascript library host",MATHJAX_DESC:"If you are using LaTeX equations in Excalidraw, then the plugin needs to load a javascript library for that. Some users are unable to access certain host servers. If you are experiencing issues, try changing the host here. You may need to restart Obsidian after closing settings, for this change to take effect.",LATEX_DEFAULT_NAME:"Default LaTeX formula for new equations",LATEX_DEFAULT_DESC:"Leave empty if you don't want a default formula. You can add default formatting here such as <code>\\color{white}</code>.",NONSTANDARD_HEAD:"Non-Excalidraw.com supported features",NONSTANDARD_DESC:'These settings in the "Non-Excalidraw.com Supported Features" section provide customization options beyond the default Excalidraw.com features. These features are not available on excalidraw.com. When exporting the drawing to Excalidraw.com these features will appear different.\n You can configure the number of custom pens displayed next to the Obsidian Menu on the canvas, allowing you to choose from a range of options. Additionally, you can enable a fourth font option, which adds a fourth font button to the properties panel for text elements. ',CUSTOM_PEN_HEAD:"Custom pens",CUSTOM_PEN_NAME:"Number of custom pens",CUSTOM_PEN_DESC:"You will see these pens next to the Obsidian Menu on the canvas. You can customize the pens on the canvas by long-pressing the pen button.",EXPERIMENTAL_HEAD:"Miscellaneous features",EXPERIMENTAL_DESC:"These miscellaneous features in Excalidraw include options for setting default LaTeX formulas for new equations, enabling a Field Suggester for autocompletion, displaying type indicators for Excalidraw files, enabling immersive image embedding in live preview editing mode, and experimenting with Taskbone Optical Character Recognition for text extraction from images and drawings. Users can also enter a Taskbone API key for extended usage of the OCR service.",EA_HEAD:"Excalidraw Automate",EA_DESC:"ExcalidrawAutomate is a scripting and automation API for Excalidraw. Unfortunately, the documentation of the API is sparse. I recommend reading the <a href='https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/docs/API/ExcalidrawAutomate.d.ts'>ExcalidrawAutomate.d.ts</a> file, visiting the <a href='https://zsviczian.github.io/obsidian-excalidraw-plugin/'>ExcalidrawAutomate How-to</a> page - though the information here has not been updated for a long while -, and finally to enable the field suggester below. The field suggester will show you the available functions, their parameters and short description as you type. The field suggester is the most up-to-date documentation of the API.",FIELD_SUGGESTER_NAME:"Enable Field Suggester",FIELD_SUGGESTER_DESC:"Field Suggester borrowed from Breadcrumbs and Templater plugins. The Field Suggester will show an autocomplete menu when you type <code>excalidraw-</code> or <code>ea.</code> with function description as hints on the individual items in the list.",STARTUP_SCRIPT_NAME:"Startup script",STARTUP_SCRIPT_DESC:"If set, excalidraw will execute the script at plugin startup. This is useful if you want to set any of the Excalidraw Automate hooks. The startup script is a markdown file that should contain the javascript code you want to execute when Excalidraw starts.",STARTUP_SCRIPT_BUTTON:"Create startup script",STARTUP_SCRIPT_EXISTS:"Startup script file already exists",FILETYPE_NAME:"Display type (✏️) for excalidraw.md files in File Explorer",FILETYPE_DESC:"Excalidraw files will receive an indicator using the emoji or text defined in the next setting.",FILETAG_NAME:"Set the type indicator for excalidraw.md files",FILETAG_DESC:"The text or emoji to display as type indicator.",INSERT_EMOJI:"Insert an emoji",LIVEPREVIEW_NAME:"Immersive image embedding in live preview editing mode",LIVEPREVIEW_DESC:"Turn this on to support image embedding styles such as ![[drawing|width|style]] in live preview editing mode. The setting will not affect the currently open documents. You need close the open documents and re-open them for the change to take effect.",CUSTOM_FONT_HEAD:"Fourth font",ENABLE_FOURTH_FONT_NAME:"Enable fourth font option",ENABLE_FOURTH_FONT_DESC:"By turning this on, you will see a fourth font button on the properties panel for text elements. Files that use this fourth font will (partly) lose their platform independence. Depending on the custom font set in settings, they will look differently when loaded in another vault, or at a later time. Also the 4th font will display as system default font on excalidraw.com, or other Excalidraw versions.",FOURTH_FONT_NAME:"Fourth font file",FOURTH_FONT_DESC:"Select a .ttf, .woff or .woff2 font file from your vault to use as the fourth font. If no file is selected, Excalidraw will use the Virgil font by default.",SCRIPT_SETTINGS_HEAD:"Settings for installed Scripts",SCRIPT_SETTINGS_DESC:"Some of the Excalidraw Automate Scripts include settings. Settings are organized by script. Settings will only become visible in this list after you have executed the newly downloaded script once.",TASKBONE_HEAD:"Taskbone Optical Character Recogntion",TASKBONE_DESC:"This is an experimental integration of optical character recognition into Excalidraw. Please note, that taskbone is an independent external service not provided by Excalidraw, nor the Excalidraw-Obsidian plugin project. The OCR service will grab legible text from freedraw lines and embedded pictures on your canvas and place the recognized text in the frontmatter of your drawing as well as onto clipboard. Having the text in the frontmatter will enable you to search in Obsidian for the text contents of these. Note, that the process of extracting the text from the image is not done locally, but via an online API. The taskbone service stores the image on its servers only as long as necessary for the text extraction. However, if this is a dealbreaker, then please don't use this feature.",TASKBONE_ENABLE_NAME:"Enable Taskbone",TASKBONE_ENABLE_DESC:"By enabling this service your agree to the Taskbone <a href='https://www.taskbone.com/legal/terms/' target='_blank'>Terms and Conditions</a> and the <a href='https://www.taskbone.com/legal/privacy/' target='_blank'>Privacy Policy</a>.",TASKBONE_APIKEY_NAME:"Taskbone API Key",TASKBONE_APIKEY_DESC:"Taskbone offers a free service with a reasonable number of scans per month. If you want to use this feature more frequently, or you want to supoprt the developer of Taskbone (as you can imagine, there is no such thing as 'free', providing this awesome OCR service costs some money to the developer of Taskbone), you can purchase a paid API key from <a href='https://www.taskbone.com/' target='_blank'>taskbone.com</a>. In case you have purchased a key, simply overwrite this auto generated free-tier API-key with your paid key.",SELECT_FILE:"Select a file then press enter.",SELECT_COMMAND:"Select a command then press enter.",SELECT_FILE_WITH_OPTION_TO_SCALE:`Select a file then press ENTER, or SHIFT+${labelMETA()}+ENTER to insert at 100% scale.`,NO_MATCH:"No file matches your query.",NO_MATCHING_COMMAND:"No command matches your query.",SELECT_FILE_TO_LINK:"Select the file you want to insert the link for.",SELECT_COMMAND_PLACEHOLDER:"Select the command you want to insert the link for.",SELECT_DRAWING:"Select the image or drawing you want to insert",TYPE_FILENAME:"Type name of drawing to select.",SELECT_FILE_OR_TYPE_NEW:"Select existing drawing or type name of a new drawing then press Enter.",SELECT_TO_EMBED:"Select the drawing to insert into active document.",SELECT_MD:"Select the markdown document you want to insert",SELECT_PDF:"Select the PDF document you want to insert",PDF_PAGES_HEADER:"Pages to load?",PDF_PAGES_DESC:"Format: 1, 3-5, 7, 9-11",INFINITE_LOOP_WARNING:"EXCALIDRAW WARNING\nAborted loading embedded images due to infinite loop in file:\n",SCRIPT_EXECUTION_ERROR:"Script execution error. Please find error message on the developer console.",LOAD_FROM_BACKUP:"Excalidraw file was corrupted. Loading from backup file.",GOTO_FULLSCREEN:"Goto fullscreen mode",EXIT_FULLSCREEN:"Exit fullscreen mode",TOGGLE_FULLSCREEN:"Toggle fullscreen mode",TOGGLE_DISABLEBINDING:"Toggle to invert default binding behavior",TOGGLE_FRAME_RENDERING:"Toggle frame rendering",TOGGLE_FRAME_CLIPPING:"Toggle frame clipping",OPEN_LINK_CLICK:"Open Link",OPEN_LINK_PROPS:"Open markdown-embed properties or open link in new window",NARROW_TO_HEADING:"Narrow to heading...",NARROW_TO_BLOCK:"Narrow to block...",SHOW_ENTIRE_FILE:"Show entire file",ZOOM_TO_FIT:"Zoom to fit",RELOAD:"Reload original link",OPEN_IN_BROWSER:"Open current link in browser",PROPERTIES:"Properties",COPYCODE:"Copy source to clipboard",ES_TITLE:"Embeddable Element Settings",ES_RENAME:"Rename File",ES_ZOOM:"Embedded Content Scaling",ES_YOUTUBE_START:"YouTube Start Time",ES_YOUTUBE_START_DESC:"ss, mm:ss, hh:mm:ss",ES_YOUTUBE_START_INVALID:"The YouTube Start Time is invalid. Please check the format and try again",ES_FILENAME_VISIBLE:"Filename Visible",ES_BACKGROUND_HEAD:"Embedded note background color",ES_BACKGROUND_MATCH_ELEMENT:"Match Element Background Color",ES_BACKGROUND_MATCH_CANVAS:"Match Canvas Background Color",ES_BACKGROUND_COLOR:"Background Color",ES_BORDER_HEAD:"Embedded note border color",ES_BORDER_COLOR:"Border Color",ES_BORDER_MATCH_ELEMENT:"Match Element Border Color",ES_BACKGROUND_OPACITY:"Background Opacity",ES_BORDER_OPACITY:"Border Opacity",ES_EMBEDDABLE_SETTINGS:"Embeddable Markdown Settings",ES_USE_OBSIDIAN_DEFAULTS:"Use Obsidian Defaults",ES_ZOOM_100_RELATIVE_DESC:"The button will adjust the element scale so it will show the content at 100% relative to the current zoom level of your canvas",ES_ZOOM_100:"Relative 100%",PROMPT_FILE_DOES_NOT_EXIST:"File does not exist. Do you want to create it?",PROMPT_ERROR_NO_FILENAME:"Error: Filename for new file may not be empty",PROMPT_ERROR_DRAWING_CLOSED:"Unknown error. It seems as if your drawing was closed or the drawing file is missing",PROMPT_TITLE_NEW_FILE:"New File",PROMPT_TITLE_CONFIRMATION:"Confirmation",PROMPT_BUTTON_CREATE_EXCALIDRAW:"Create EX",PROMPT_BUTTON_CREATE_EXCALIDRAW_ARIA:"Create Excalidraw drawing and open in new tab",PROMPT_BUTTON_CREATE_MARKDOWN:"Create MD",PROMPT_BUTTON_CREATE_MARKDOWN_ARIA:"Create markdown document and open in new tab",PROMPT_BUTTON_EMBED_MARKDOWN:"Embed MD",PROMPT_BUTTON_EMBED_MARKDOWN_ARIA:"Replace selected element with embedded markdown document",PROMPT_BUTTON_NEVERMIND:"Nevermind",PROMPT_BUTTON_OK:"OK",PROMPT_BUTTON_CANCEL:"Cancel",PROMPT_BUTTON_INSERT_LINE:"Insert new line",PROMPT_BUTTON_INSERT_SPACE:"Insert space",PROMPT_BUTTON_INSERT_LINK:"Insert markdown link to file",PROMPT_BUTTON_UPPERCASE:"Uppercase"},enGB={},es={},fr={},hi={},id={},it={},ja={},ko={},nl={},no={},pl={},pt={},ptBR={},ro={},ru={},tr={},zhCN={INSTALL_SCRIPT:"安装此脚本",UPDATE_SCRIPT:"有可用更新 - 点击安装",CHECKING_SCRIPT:"检查更新中 - 点击重新安装",UNABLETOCHECK_SCRIPT:"检查更新失败 - 点击重新安装",UPTODATE_SCRIPT:"脚本已是最新 - 点击重新安装",OPEN_AS_EXCALIDRAW:"打开为 Excalidraw 绘图",TOGGLE_MODE:"在 Excalidraw 和 Markdown 模式之间切换",CONVERT_NOTE_TO_EXCALIDRAW:"转换:空白 Markdown 文档 => Excalidraw 绘图文件",CONVERT_EXCALIDRAW:"转换: *.excalidraw => *.md",CREATE_NEW:"新建绘图文件",CONVERT_FILE_KEEP_EXT:"转换:*.excalidraw => *.excalidraw.md",CONVERT_FILE_REPLACE_EXT:"转换:*.excalidraw => *.md (兼容 Logseq)",DOWNLOAD_LIBRARY:"导出 stencil 库为 *.excalidrawlib 文件",OPEN_EXISTING_NEW_PANE:"打开已有的绘图 - 于新面板",OPEN_EXISTING_ACTIVE_PANE:"打开已有的绘图 - 于当前面板",TRANSCLUDE:"嵌入绘图(形如 ![[drawing]])到当前 Markdown 文档中",TRANSCLUDE_MOST_RECENT:"嵌入最近编辑过的绘图(形如 ![[drawing]])到当前 Markdown 文档中",TOGGLE_LEFTHANDED_MODE:"切换为左手模式",NEW_IN_NEW_PANE:"新建绘图 - 于新面板",NEW_IN_NEW_TAB:"新建绘图 - 于新页签",NEW_IN_ACTIVE_PANE:"新建绘图 - 于当前面板",NEW_IN_POPOUT_WINDOW:"新建绘图 - 于新窗口",NEW_IN_NEW_PANE_EMBED:"新建绘图 - 于新面板 - 并将其嵌入(形如 ![[drawing]])到当前 Markdown 文档中",NEW_IN_NEW_TAB_EMBED:"新建绘图 - 于新页签 - 并将其嵌入(形如 ![[drawing]])到当前 Markdown 文档中",NEW_IN_ACTIVE_PANE_EMBED:"新建绘图 - 于当前面板 - 并将其嵌入(形如 ![[drawing]])到当前 Markdown 文档中",NEW_IN_POPOUT_WINDOW_EMBED:"新建绘图 - 于新窗口 - 并将其嵌入(形如 ![[drawing]])到当前 Markdown 文档中",TOGGLE_LOCK:"文本元素:原文模式(RAW)⟺ 预览模式(PREVIEW)",DELETE_FILE:"从库中删除所选图像或 MD-Embed 的源文件",INSERT_LINK_TO_ELEMENT:`复制所选元素为内部链接(形如 [[file#^id]] )。\n按住 ${labelCTRL()} 可复制元素所在分组为内部链接(形如 [[file#^group=id]] )。\n按住 SHIFT 可复制所选元素所在区域为内部链接(形如 [[file#^area=id]] )。\n按住 ${labelALT()} 可观看视频演示。`,INSERT_LINK_TO_ELEMENT_GROUP:"复制所选元素所在分组为内部链接(形如 [[file#^group=id]] )",INSERT_LINK_TO_ELEMENT_AREA:"复制所选元素所在区域为内部链接(形如 [[file#^area=id]] )",INSERT_LINK_TO_ELEMENT_FRAME:"复制所选框架为内部链接(形如 [[file#^frame=id]] )",INSERT_LINK_TO_ELEMENT_NORMAL:"复制所选元素为内部链接(形如 [[file#^id]] )",INSERT_LINK_TO_ELEMENT_ERROR:"未选择画布里的单个元素",INSERT_LINK_TO_ELEMENT_READY:"链接已生成并复制到剪贴板",INSERT_LINK:"插入任意文件(以内部链接形式嵌入,形如 [[drawing]] )到当前绘图中",INSERT_IMAGE:"插入图像或 Excalidraw 绘图(以图像形式嵌入)到当前绘图中",IMPORT_SVG:"从 SVG 文件导入图形元素到当前绘图中(暂不支持文本元素)",INSERT_MD:"插入 Markdown 文档(以图像形式嵌入)到当前绘图中",INSERT_PDF:"插入 PDF 文档(以图像形式嵌入)到当前绘图中",UNIVERSAL_ADD_FILE:"插入任意文件(以 Embeddable 形式嵌入)到当前绘图中",INSERT_LATEX:`插入 LaTeX 公式到当前绘图。按住 ${labelALT()} 可观看视频演示。`,ENTER_LATEX:"输入 LaTeX 表达式",READ_RELEASE_NOTES:"阅读本插件的更新说明",RUN_OCR:"OCR:识别涂鸦和图片里的文本并复制到剪贴板",TRAY_MODE:"绘图工具属性页:面板模式 ⟺ 托盘模式",SEARCH:"搜索文本",RESET_IMG_TO_100:"重设图像元素的尺寸为 100%",TEMPORARY_DISABLE_AUTOSAVE:"临时禁用自动保存功能,直到本次 Obsidian 退出(小白慎用!)",TEMPORARY_ENABLE_AUTOSAVE:"启用自动保存功能",INSTALL_SCRIPT_BUTTON:"安装或更新 Excalidraw 脚本",OPEN_AS_MD:"打开为 Markdown 文档",EXPORT_IMAGE:"导出为图像",OPEN_LINK:"打开所选元素里的链接 \n(按住 SHIFT 在新面板打开)",EXPORT_EXCALIDRAW:"导出为 .excalidraw 文件(旧版绘图文件格式)",LINK_BUTTON_CLICK_NO_TEXT:"请选择一个含有链接的图形或文本元素。",FILENAME_INVALID_CHARS:'文件名不能含有以下符号: * " \\ < > : | ? #',FORCE_SAVE:"保存(同时更新嵌入了该绘图的 Markdown 文档)",RAW:"文本元素正以原文(RAW)模式显示链接。\n点击切换到预览(PREVIEW)模式",PARSED:"文本元素正以预览(PREVIEW)模式显示链接。\n点击切换到原文(RAW)模式",NOFILE:"Excalidraw(没有文件)",COMPATIBILITY_MODE:"*.excalidraw 是兼容旧版的绘图文件格式。需要转换为新格式才能解锁本插件的全部功能。",CONVERT_FILE:"转换为新格式",BACKUP_AVAILABLE:"加载绘图文件时出错,可能是由于 Obsidian 在上次保存时意外退出了(手机上更容易发生这种意外)。<br><br><b>好消息:</b>这台设备上存在备份。您是否想要恢复本设备上的备份?<br><br>(我建议您先尝试在最近使用过的其他设备上打开该绘图,以检查是否有更新的备份。)",BACKUP_RESTORED:"已恢复备份",CACHE_NOT_READY:"抱歉,加载绘图文件时出错。<br><br><mark>现在有耐心,将来更省心。</mark><br><br>该插件有备份机制,但您似乎刚刚打开 Obsidian,需要等待一分钟或更长的时间来读取缓存。缓存读取完毕时,您将会在右上角收到提示。<br><br>请点击 OK 并耐心等待缓存,或者选择点击取消后手动修复你的文件。<br>",OBSIDIAN_TOOLS_PANEL:"Obsidian 工具面板",ERROR_SAVING_IMAGE:"获取图像时发生未知错误",WARNING_PASTING_ELEMENT_AS_TEXT:"你不能将 Excalidraw 元素粘贴为文本元素!",USE_INSERT_FILE_MODAL:"使用“插入任意文件(以 iFrame 形式嵌入)”功能来嵌入 Markdown 文档",RELEASE_NOTES_NAME:"显示更新说明",RELEASE_NOTES_DESC:"<b>开启:</b>每次更新本插件后,显示最新发行版本的说明。<br><b>关闭:</b>您仍可以在 <a href='https://github.com/zsviczian/obsidian-excalidraw-plugin/releases'>GitHub</a> 上阅读更新说明。",NEWVERSION_NOTIFICATION_NAME:"通知插件更新",NEWVERSION_NOTIFICATION_DESC:"<b>开启:</b>当本插件存在可用更新时,显示通知。<br><b>关闭:</b>您需要手动检查本插件的更新(设置 - 第三方插件 - 检查更新)。",FOLDER_NAME:"Excalidraw 文件夹",FOLDER_DESC:"新绘图的默认存储路径。若为空,将在库的根目录中创建新绘图。",FOLDER_EMBED_NAME:"将 Excalidraw 文件夹用于“新建绘图”系列命令",FOLDER_EMBED_DESC:"在命令面板中执行“新建绘图”系列命令时,新建的绘图文件的存储路径。<br><b>开启:</b>使用 Excalidraw 文件夹。 <br><b>关闭:</b>使用 Obsidian 设置的新附件默认位置。",TEMPLATE_NAME:"Excalidraw 模板文件",TEMPLATE_DESC:"Excalidraw 模板文件的完整路径。<br>如果您的模板在默认的 Excalidraw 文件夹中且文件名是 Template.md,则此项应设为 Excalidraw/Template.md(也可省略 .md 扩展名,即 Excalidraw/Template)。<br>如果您在兼容模式下使用 Excalidraw,那么您的模板文件也必须是旧的 *.excalidraw 格式,例如 Excalidraw/Template.excalidraw。",SCRIPT_FOLDER_NAME:"Excalidraw 自动化脚本的文件夹(大小写敏感!)",SCRIPT_FOLDER_DESC:"此文件夹用于存放 Excalidraw 自动化脚本。您可以在 Obsidian 命令面板中执行这些脚本,还可以为喜欢的脚本分配快捷键,就像为其他 Obsidian 命令分配快捷键一样。<br>该项不能设为库的根目录。",SAVING_HEAD:"保存",COMPRESS_NAME:"压缩 Excalidraw JSON",COMPRESS_DESC:"Excalidraw 绘图文件默认将元素记录为 JSON 格式。开启此项,可将元素的 JSON 数据以 BASE64 编码(使用 <a href='https://pieroxy.net/blog/pages/lz-string/index.html'>LZ-String</a> 算法)。这样做的好处是:一方面可以避免原来的明文 JSON 数据干扰 Obsidian 的文本搜索结果,另一方面减小了绘图文件的体积。<br>当您通过功能区按钮或命令将绘图切换成 Markdown 模式时,数据将被解码回 JSON 格式以便阅读和编辑;而当您切换回 Excalidraw 模式时,数据就会被再次编码。<br>开启此项后,对于之前已存在但未压缩的绘图文件,需要重新打开并保存才能生效。",AUTOSAVE_INTERVAL_DESKTOP_NAME:"桌面端自动保存时间间隔",AUTOSAVE_INTERVAL_DESKTOP_DESC:"每隔多长时间自动保存一次(如果绘图文件没有发生改变,将不会保存)。当 Obsidian 应用内的焦点离开活动文档(如关闭工作空间、点击菜单栏、切换到其他页签或面板等)的时候,也会触发自动保存。直接退出 Obsidian 应用(不管是终结进程还是点关闭按钮)不会触发自动保存。",AUTOSAVE_INTERVAL_MOBILE_NAME:"移动端自动保存时间间隔",AUTOSAVE_INTERVAL_MOBILE_DESC:"建议在移动端设置更短的时间间隔。当 Obsidian 应用内的焦点离开活动文档(如关闭工作空间、点击菜单栏、切换到其他页签或面板等)的时候,也会触发自动保存。直接退出 Obsidian 应用(在应用切换器中划掉)不会触发自动保存。此外,当您切换到其他应用时,有时候系统会自动清理 Obsidian 后台以释放资源。这种情况下,自动保存会失效。",FILENAME_HEAD:"文件名",FILENAME_DESC:"<p>点击阅读<a href='https://momentjs.com/docs/#/displaying/format/'>日期和时间格式参考</a>。</p>",FILENAME_SAMPLE:"“新建绘图”系列命令创建的文件名形如:",FILENAME_EMBED_SAMPLE:"“新建绘图并嵌入到当前 Markdown 文档中”系列命令创建的文件名形如:",FILENAME_PREFIX_NAME:"“新建绘图”系列命令创建的文件名前缀",FILENAME_PREFIX_DESC:"执行“新建绘图”系列命令时,创建的绘图文件名的第一部分",FILENAME_PREFIX_EMBED_NAME:"“新建绘图并嵌入到当前 Markdown 文档中”系列命令创建的文件名前缀",FILENAME_PREFIX_EMBED_DESC:"执行“新建绘图并嵌入到当前 Markdown 文档中”系列命令时,创建的绘图文件名是否以当前文档名作为前缀?<br><b>开启:</b>是<br><b>关闭:</b>否",FILENAME_POSTFIX_NAME:"“新建绘图并嵌入到当前 Markdown 文档中”系列命令创建的文件名的中间部分",FILENAME_POSTFIX_DESC:"介于文件名前缀和日期时间之间的文本。仅对“新建绘图并嵌入到当前 Markdown 文档中”系列命令创建的绘图生效。",FILENAME_DATE_NAME:"文件名里的日期时间",FILENAME_DATE_DESC:"文件名的最后一部分。允许留空。",FILENAME_EXCALIDRAW_EXTENSION_NAME:"文件扩展名(.excalidraw.md 或 .md)",FILENAME_EXCALIDRAW_EXTENSION_DESC:"该选项在兼容模式(即非 Excalidraw 专用 Markdown 文件)下不会生效。<br><b>开启:</b>使用 .excalidraw.md 作为扩展名。<br><b>关闭:</b>使用 .md 作为扩展名。",DISPLAY_HEAD:"显示",DYNAMICSTYLE_NAME:"动态样式",DYNAMICSTYLE_DESC:"根据画布颜色调节 Excalidraw 界面颜色",LEFTHANDED_MODE_NAME:"左手模式",LEFTHANDED_MODE_DESC:"目前只在托盘模式下生效。若开启此项,则托盘(绘图工具属性页)将位于右侧。<br><b>开启:</b>左手模式。<br><b>关闭:</b>右手模式。",IFRAME_MATCH_THEME_NAME:"使 MD-Embed 匹配 Excalidraw 主题",IFRAME_MATCH_THEME_DESC:"<b>开启:</b>当你的 Obsidian 和 Excalidraw 一个使用黑暗主题、一个使用明亮主题时,开启此项,MD-Embed 将会匹配 Excalidraw 主题。<br><b>关闭:</b>如果你想要 MD-Embed 匹配 Obsidian 主题,请关闭此项。",MATCH_THEME_NAME:"使新建的绘图匹配 Obsidian 主题",MATCH_THEME_DESC:"如果 Obsidian 使用黑暗主题,新建的绘图文件也将使用黑暗主题。<br>但是若设置了模板,新建的绘图文件将跟随模板主题;另外,此功能不会作用于已有的绘图。<br><b>开启:</b>跟随 Obsidian 主题风格。<br><b>关闭:</b>跟随模板主题风格。",MATCH_THEME_ALWAYS_NAME:"使已有的绘图匹配 Obsidian 主题",MATCH_THEME_ALWAYS_DESC:"如果 Obsidian 使用黑暗主题,则绘图文件也将以黑暗主题打开;反之亦然。<br><b>开启:</b>匹配 Obsidian 主题风格。<br><b>关闭:</b>采用上次保存时的主题风格。",MATCH_THEME_TRIGGER_NAME:"Excalidraw 主题跟随 Obsidian 主题变化",MATCH_THEME_TRIGGER_DESC:"开启此项,则切换 Obsidian 的黑暗/明亮主题时,已打开的 Excalidraw 面板的主题会随之改变。<br><b>开启:</b>跟随主题变化。<br><b>关闭:</b>不跟随主题变化。",DEFAULT_OPEN_MODE_NAME:"Excalidraw 的默认运行模式",DEFAULT_OPEN_MODE_DESC:"设置 Excalidraw 的运行模式:普通模式(Normal)/禅模式(Zen)/阅读模式(View)。<br>您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 <code>excalidraw-default-mode: normal/zen/view</code> 的键值对。",DEFAULT_PEN_MODE_NAME:"触控笔模式(Pen mode)",DEFAULT_PEN_MODE_DESC:"打开绘图时,是否自动开启触控笔模式?",DEFAULT_PINCHZOOM_NAME:"允许在触控笔模式下进行双指缩放",DEFAULT_PINCHZOOM_DESC:"在触控笔模式下使用自由画笔工具时,双指缩放可能造成干扰。<br><b>开启: </b>允许在触控笔模式下进行双指缩放<br><b>关闭: </b>禁止在触控笔模式下进行双指缩放",DEFAULT_WHEELZOOM_NAME:"鼠标滚轮缩放页面",DEFAULT_WHEELZOOM_DESC:`<b>开启:</b>鼠标滚轮为缩放页面,${labelCTRL()}+鼠标滚轮为滚动页面</br><b>关闭:</b>鼠标滚轮为滚动页面,${labelCTRL()}+鼠标滚轮为缩放页面`,ZOOM_TO_FIT_NAME:"调节面板尺寸后自动缩放页面",ZOOM_TO_FIT_DESC:"调节面板尺寸后,自适应地缩放页面<br><b>开启:</b>自动缩放。<br><b>关闭:</b>禁用自动缩放。",ZOOM_TO_FIT_ONOPEN_NAME:"打开绘图时自动缩放页面",ZOOM_TO_FIT_ONOPEN_DESC:"打开绘图文件时,自适应地缩放页面<br><b>开启:</b>自动缩放。<br><b>关闭:</b>禁用自动缩放。",ZOOM_TO_FIT_MAX_LEVEL_NAME:"自动缩放的最高级别",ZOOM_TO_FIT_MAX_LEVEL_DESC:"自动缩放画布时,允许放大的最高级别。该值不能低于 0.5(50%)且不能超过 10(1000%)。",LINKS_HEAD:"链接(Links) & 以内部链接形式嵌入到绘图中的 Markdown 文档(Transclusion)",LINKS_DESC:`按住 ${labelCTRL()} 并点击包含 <code>[[链接]]</code> 的文本元素可以打开其中的链接。如果所选文本元素包含多个 <code>[[有效的内部链接]]</code> ,只会打开第一个链接;如果所选文本元素包含有效的 URL 链接 (如 <code>https://</code> 或 <code>http://</code>),插件会在浏览器中打开链接。<br>链接的源文件被重命名时,绘图中相应的 <code>[[内部链接]]</code> 也会同步更新。若您不愿绘图中的链接外观因此而变化,可使用 <code>[[内部链接|别名]]</code>。`,ADJACENT_PANE_NAME:"在相邻面板中打开",ADJACENT_PANE_DESC:`按住 ${labelCTRL()}+SHIFT 并点击绘图里的内部链接时,插件默认会在新面板中打开该链接。<br>若开启此项,Excalidraw 会先尝试寻找已有的相邻面板(按照右侧、左侧、上方、下方的顺序),并在其中打开该链接。如果找不到,再在新面板中打开。`,MAINWORKSPACE_PANE_NAME:"在主工作区中打开",MAINWORKSPACE_PANE_DESC:`按住 ${labelCTRL()}+SHIFT 并点击绘图里的内部链接时,插件默认会在当前窗口的新面板中打开该链接。<br>若开启此项,Excalidraw 会在主工作区的面板中打开该链接。`,LINK_BRACKETS_NAME:"在链接的两侧显示 <code>[[中括号]]</code>",LINK_BRACKETS_DESC:"文本元素处于预览(PREVIEW)模式时,在内部链接的两侧显示中括号。<br>您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 <code>excalidraw-link-brackets: true/false</code> 的键值对。",LINK_PREFIX_NAME:"内部链接的前缀",LINK_PREFIX_DESC:'文本元素处于预览(PREVIEW)模式时,如果其中包含链接,则添加此前缀。<br>您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 <code>excalidraw-link-prefix: "📍 "</code> 的键值对。',URL_PREFIX_NAME:"外部链接的前缀",URL_PREFIX_DESC:'文本元素处于预览(PREVIEW)模式时,如果其中包含外部链接,则添加此前缀。<br>您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 <code>excalidraw-url-prefix: "🌐 "</code> 的键值对。',PARSE_TODO_NAME:"待办任务(Todo)",PARSE_TODO_DESC:"将文本元素中的 <code>- [ ]</code> 和 <code>- [x]</code> 前缀显示为方框。",TODO_NAME:"未完成项目",TODO_DESC:"未完成的待办项目的符号",DONE_NAME:"已完成项目",DONE_DESC:"已完成的待办项目的符号",HOVERPREVIEW_NAME:"鼠标悬停预览内部链接",HOVERPREVIEW_DESC:`<b>开启:</b>在 Excalidraw <u>阅读模式(View)</u>下,鼠标悬停在 <code>[[内部链接]]</code> 上即可预览;而在<u>普通模式(Normal)</u>下, 鼠标悬停在内部链接右上角的蓝色标识上即可预览。<br> <b>关闭:</b>鼠标悬停在 <code>[[内部链接]]</code> 上,并且按住 ${labelCTRL()} 才能预览。`,LINKOPACITY_NAME:"链接标识的透明度",LINKOPACITY_DESC:"含有链接的元素,其右上角的链接标识的透明度。介于 0(全透明)到 1(不透明)之间。",LINK_CTRL_CLICK_NAME:`按住 ${labelCTRL()} 并点击含有 [[链接]] 或 [别名](链接) 的文本来打开链接`,LINK_CTRL_CLICK_DESC:"如果此功能影响到您使用某些原版 Excalidraw 功能,可将其关闭。关闭后,您只能通过绘图面板标题栏中的链接按钮来打开链接。",TRANSCLUSION_WRAP_NAME:"Transclusion 的折行方式",TRANSCLUSION_WRAP_DESC:"中的 number 表示嵌入的文本溢出时,在第几个字符处进行折行。<br>此开关控制具体的折行方式。若开启,则严格在 number 处折行,禁止溢出;若关闭,则允许在 number 位置后最近的空格处折行。",TRANSCLUSION_DEFAULT_WRAP_NAME:"Transclusion 的默认折行位置",TRANSCLUSION_DEFAULT_WRAP_DESC:"除了通过 <code>![[doc#^block]]{number}</code> 中的 number 来控制折行位置,您也可以在此设置 number 的默认值。<br>一般设为 0 即可,表示不设置固定的默认值,这样当您需要嵌入文档到便签中时,Excalidraw 能更好地帮您自动处理。",PAGE_TRANSCLUSION_CHARCOUNT_NAME:"Transclusion 的最大显示字符数",PAGE_TRANSCLUSION_CHARCOUNT_DESC:"以 <code>![[内部链接]]</code> 或 <code>![](内部链接)</code> 的形式将文档以文本形式嵌入到绘图中时,该文档在绘图中可显示的最大字符数量。",QUOTE_TRANSCLUSION_REMOVE_NAME:"隐藏 Transclusion 行首的引用符号",QUOTE_TRANSCLUSION_REMOVE_DESC:"不显示 Transclusion 中每一行行首的 > 符号,以提高纯文本 Transclusion 的可读性。<br><b>开启:</b>隐藏 > 符号<br><b>关闭:</b>不隐藏 > 符号(注意,由于 Obsidian API 的原因,首行行首的 > 符号不会被隐藏)",GET_URL_TITLE_NAME:"使用 iframly 获取页面标题",GET_URL_TITLE_DESC:"拖放链接到 Excalidraw 时,使用 <code>http://iframely.server.crestify.com/iframely?url=</code> 来获取页面的标题。",MD_HEAD:"以图像形式嵌入到绘图中的 Markdown 文档(MD-Embed)",MD_HEAD_DESC:`除了 Transclusion,您还可以将 Markdown 文档以图像形式嵌入到绘图中。方法是按住 ${labelCTRL()} 并从文件管理器中把文档拖入绘图,或者执行“以图像形式嵌入”系列命令。`,MD_TRANSCLUDE_WIDTH_NAME:"MD-Embed 的默认宽度",MD_TRANSCLUDE_WIDTH_DESC:"MD-Embed 的宽度。该选项会影响到折行,以及图像元素的宽度。<br>您可为绘图中的某个 MD-Embed 单独设置此项,方法是将绘图切换至 Markdown 模式,并修改相应的 <code>[[Embed文件名#标题|宽度x最大高度]]</code>。",MD_TRANSCLUDE_HEIGHT_NAME:"MD-Embed 的默认最大高度",MD_TRANSCLUDE_HEIGHT_DESC:"MD-Embed 的高度取决于 Markdown 文档内容的多少,但最大不会超过该值。<br>您可为绘图中的某个 MD-Embed 单独设置此项,方法是将绘图切换至 Markdown 模式,并修改相应的 <code>[[Embed文件名#^块引ID|宽度x最大高度]]</code>。",MD_DEFAULT_FONT_NAME:"MD-Embed 的默认字体",MD_DEFAULT_FONT_DESC:"可以设为 <code>Virgil</code>,<code>Casadia</code> 或其他有效的 .ttf/.woff/.woff2 字体文件(如 <code>我的字体.woff2</code>)。<br>您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 <code>excalidraw-font: 字体名或文件名</code> 的键值对。",MD_DEFAULT_COLOR_NAME:"MD-Embed 的默认文本颜色",MD_DEFAULT_COLOR_DESC:"可以填写 HTML 颜色名,如 steelblue(参考 <a href='https://www.w3schools.com/colors/colors_names.asp'>HTML Color Names</a>),或者有效的 16 进制颜色值,例如 #e67700,或者任何其他有效的 CSS 颜色。<br>您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 <code>excalidraw-font-color: steelblue</code> 的键值对。",MD_DEFAULT_BORDER_COLOR_NAME:"MD-Embed 的默认边框颜色",MD_DEFAULT_BORDER_COLOR_DESC:"可以填写 HTML 颜色名,如 steelblue(参考 <a href='https://www.w3schools.com/colors/colors_names.asp'>HTML Color Names</a>),或者有效的 16 进制颜色值,例如 #e67700,或者任何其他有效的 CSS 颜色。<br>您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 <code>excalidraw-border-color: gray</code> 的键值对。<br>如果您不想要边框,请留空。",MD_CSS_NAME:"MD-Embed 的默认 CSS 样式表",MD_CSS_DESC:"MD-Embed 图像所采用的 CSS 样式表文件名。需包含扩展名,例如 md-embed.css。允许使用 Markdown 文件(如 md-embed-css.md),但其内容应符合 CSS 语法。<br>如果您要查询 CSS 所作用的 HTML 节点,请在 Obsidian 开发者控制台(CTRL+SHIFT+i)中键入命令:<code>ExcalidrawAutomate.mostRecentMarkdownSVG</code> —— 这将显示 Excalidraw 最近生成的 SVG。<br>此外,在 CSS 中不能任意地设置字体,您一般只能使用系统默认的标准字体(详见 README),但可以通过上面的设置来额外添加一个自定义字体。<br>您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 <code>excalidraw-css: 库中的CSS文件或CSS片段</code> 的键值对。",EMBED_HEAD:"嵌入到 Markdown 文档中的绘图 & 导出",EMBED_CACHING:"启用预览图",EMBED_SIZING:"预览图的尺寸",EMBED_THEME_BACKGROUND:"预览图的主题和背景色",EMBED_IMAGE_CACHE_NAME:"为嵌入到 Markdown 文档中的绘图创建预览图",EMBED_IMAGE_CACHE_DESC:"为嵌入到文档中的绘图创建预览图。可提高下次嵌入的速度。但如果绘图中又嵌入了子绘图,当子绘图改变时,您需要打开子绘图并手动保存,才能够更新父绘图的预览图。",EMBED_IMAGE_CACHE_CLEAR:"清除预览图",BACKUP_CACHE_CLEAR:"清除备份",BACKUP_CACHE_CLEAR_CONFIRMATION:"该操作将删除所有绘图文件的备份。备份是绘图文件损坏时的一种补救手段。每次您打开 Obsidian 时,本插件会自动清理无用的备份。您确定要删除所有备份吗?",EMBED_REUSE_EXPORTED_IMAGE_NAME:"将之前已导出的图像作为预览图",EMBED_REUSE_EXPORTED_IMAGE_DESC:"该选项与“自动导出 SVG/PNG 副本”选项配合使用。如果嵌入到 Markdown 文档中的绘图文件存在同名的 SVG/PNG 副本,则将其作为预览图,而不再重新生成。<br>该选项能够提高 Markdown 文档的打开速度,尤其是当嵌入到 Markdown 文档中的绘图文件中含有大量图像或 MD-Embed 时。但是,该选项也可能导致预览图无法立即响应你对绘图文件或者 Obsidian 主题风格的修改。<br>该选项仅作用于嵌入到 Markdown 文档中的绘图。该选项无法提升绘图文件的打开速度。详见<a href='https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.6.23' target='_blank'>此说明</a>。",EMBED_PREVIEW_IMAGETYPE_NAME:"预览图的格式",EMBED_PREVIEW_IMAGETYPE_DESC:"<b>原始 SVG:</b>高品质、可交互。<br><b>SVG:</b>高品质、不可交互。<br><b>PNG:</b>高性能、<a href='https://www.youtube.com/watch?v=yZQoJg2RCKI&t=633s' target='_blank'>不可交互</a>。",PREVIEW_MATCH_OBSIDIAN_NAME:"预览图匹配 Obsidian 主题",PREVIEW_MATCH_OBSIDIAN_DESC:"开启此项,则当 Obsidian 处于黑暗模式时,嵌入到 Markdown 文档中的绘图的预览图也会以黑暗模式渲染;当 Obsidian 处于明亮模式时,预览图也会以明亮模式渲染。<br>您可能还需要关闭“导出的图像包含背景”开关,来获得与 Obsidian 更加协调的观感。",EMBED_WIDTH_NAME:"预览图的默认宽度",EMBED_WIDTH_DESC:"嵌入到 Markdown 文档中的绘图的预览图的默认宽度。该选项也适用于鼠标悬停时浮现的预览图。<br>您可为某个要嵌入到 Markdown 文档中的绘图文件单独设置此项,方法是修改相应的内部链接格式为形如 <code>![[drawing.excalidraw|100]]</code> 或 <code>[[drawing.excalidraw|100x100]]</code>。",EMBED_TYPE_NAME:"“嵌入绘图到当前 Markdown 文档中”系列命令的源文件类型",EMBED_TYPE_DESC:"在命令面板中执行“嵌入绘图到当前 Markdown 文档中”系列命令时,要嵌入绘图文件本身,还是嵌入其 PNG 或 SVG 副本。<br>如果您想选择 PNG 或 SVG 副本,需要先开启下方的“自动导出 PNG 副本”或“自动导出 SVG 副本”。<br>如果您选择了 PNG 或 SVG 副本,当副本不存在时,该命令将会插入一条损坏的链接,您需要打开绘图文件并手动导出副本才能修复 —— 也就是说,该选项不会自动帮您生成 PNG/SVG 副本,而只会引用已有的 PNG/SVG 副本。",EMBED_WIKILINK_NAME:"“嵌入绘图到当前 Markdown 文档中”系列命令产生的内部链接类型",EMBED_WIKILINK_DESC:"<b>开启:</b>将产生 <code>![[Wiki 链接]]</code>。<b>关闭:</b>将产生 <code>![](Markdown 链接)</code>。",EXPORT_PNG_SCALE_NAME:"导出的 PNG 图像的比例",EXPORT_PNG_SCALE_DESC:"导出的 PNG 图像的大小比例",EXPORT_BACKGROUND_NAME:"导出的图像包含背景",EXPORT_BACKGROUND_DESC:"如果关闭,将导出透明背景的图像。",EXPORT_PADDING_NAME:"导出的图像的空白边距",EXPORT_PADDING_DESC:"导出的 SVG/PNG 图像四周的空白边距(单位:像素)。<br>增加该值,可以避免在导出图像时,靠近图像边缘的图形被裁掉。<br>您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 <code>excalidraw-export-padding: 5<code> 的键值对。",EXPORT_THEME_NAME:"导出的图像匹配主题",EXPORT_THEME_DESC:"导出与绘图的黑暗/明亮主题匹配的图像。如果关闭,在黑暗主题下导出的图像将和明亮主题一样。",EXPORT_HEAD:"导出设置",EXPORT_SYNC_NAME:"保持 SVG/PNG 文件名与绘图文件同步",EXPORT_SYNC_DESC:"打开后,当绘图文件被重命名时,插件将同步更新同文件夹下的同名 .SVG 和 .PNG 文件。当绘图文件被删除时,插件将自动删除同文件夹下的同名 .SVG 和 .PNG 文件。",EXPORT_SVG_NAME:"自动导出 SVG 副本",EXPORT_SVG_DESC:"自动导出和绘图文件同名的 SVG 副本。插件会将副本保存到绘图文件所在的文件夹中。在文档中嵌入这个 SVG 文件,相比直接嵌入绘图文件,具有更强的跨平台能力。<br>此开关开启时,每次您编辑 Excalidraw 绘图,其 SVG 文件副本都会同步更新。<br>您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 <code>excalidraw-autoexport: none/both/svg/png</code>的键值对",EXPORT_PNG_NAME:"自动导出 PNG 副本",EXPORT_PNG_DESC:"和“自动导出 SVG 副本”类似,但是导出格式为 *.PNG。",EXPORT_BOTH_DARK_AND_LIGHT_NAME:"同时导出黑暗和明亮主题风格的图像",EXPORT_BOTH_DARK_AND_LIGHT_DESC:"若开启,Excalidraw 将导出两个文件:filename.dark.png(或 filename.dark.svg)和 filename.light.png(或 filename.light.svg)。<br>该选项可作用于“自动导出 SVG 副本”、“自动导出 PNG 副本”,以及其他的手动的导出命令。",COMPATIBILITY_HEAD:"兼容性设置",EXPORT_EXCALIDRAW_NAME:"自动导出 Excalidraw 旧格式副本",EXPORT_EXCALIDRAW_DESC:"和“自动导出 SVG 副本”类似,但是导出格式为 *.excalidraw。",SYNC_EXCALIDRAW_NAME:"新旧格式绘图文件的内容保持同步",SYNC_EXCALIDRAW_DESC:"如果旧格式(*.excalidraw)绘图文件的修改日期比新格式(*.md)更新,则根据旧格式文件的内容来更新新格式文件。",COMPATIBILITY_MODE_NAME:"以旧格式创建新绘图",COMPATIBILITY_MODE_DESC:"开启此功能后,您通过功能区按钮、命令面板、文件浏览器等创建的绘图都将是旧格式(*.excalidraw)。此外,您打开旧格式绘图文件时将不再收到警告消息。",MATHJAX_NAME:"MathJax (LaTeX) 的 javascript 库服务器",MATHJAX_DESC:"如果您在绘图中使用 LaTeX,插件需要从服务器获取并加载一个 javascript 库。如果您的网络无法访问某些库服务器,可以尝试通过此选项更换库服务器。更改此选项后,您可能需要重启 Obsidian 来使其生效。",LATEX_DEFAULT_NAME:"插入 LaTeX 时的默认表达式",LATEX_DEFAULT_DESC:"允许留空。允许使用类似 <code>\\color{white}</code> 的格式化表达式。",NONSTANDARD_HEAD:"非 Excalidraw.com 官方支持的特性",NONSTANDARD_DESC:"这些特性不受 Excalidraw.com 官方支持。当导出绘图到 Excalidraw.com 时,这些特性将会发生变化。",CUSTOM_PEN_NAME:"自定义画笔的数量",CUSTOM_PEN_DESC:"在画布上的 Obsidian 菜单旁边切换自定义画笔。长按画笔按钮可以修改其样式。",EXPERIMENTAL_HEAD:"实验性功能",EXPERIMENTAL_DESC:"以下部分设置不会立即生效,需要刷新文件资源管理器或者重启 Obsidian 才会生效。",FIELD_SUGGESTER_NAME:"开启字段建议",FIELD_SUGGESTER_DESC:"开启后,当您在编辑器中输入 <code>excalidraw-</code> 或者 <code>ea.</code> 时,会弹出一个带有函数说明的自动补全提示菜单。<br>该功能借鉴了 Breadcrumbs 和 Templater 插件。",FILETYPE_NAME:"在文件浏览器中为 excalidraw.md 文件添加类型标识符(如 ✏️)",FILETYPE_DESC:"可通过下一项设置来自定义类型标识符。",FILETAG_NAME:"excalidraw.md 文件的类型标识符",FILETAG_DESC:"要显示为类型标识符的 emoji 或文本。",INSERT_EMOJI:"插入 emoji",LIVEPREVIEW_NAME:"嵌入绘图到文档时,模拟嵌入图像的语法",LIVEPREVIEW_DESC:"开启此项,则可在 Obsidian 实时预览模式的编辑视图下,用形如 <code>![[绘图|宽度|样式]]</code> 的语法来嵌入绘图。<br>该选项不会在已打开的文档中立刻生效 —— 你需要重新打开此文档来使其生效。",ENABLE_FOURTH_FONT_NAME:"为文本元素启用本地字体",ENABLE_FOURTH_FONT_DESC:"开启此项后,文本元素的属性面板里会多出一个本地字体按钮。<br>使用了本地字体的绘图文件,将会失去一部分跨平台能力 —— 若将绘图文件移动到其他库中打开,显示效果可能会截然不同;若在 excalidraw.com 或者其他版本的 Excalidraw 中打开,使用本地字体的文本会变回系统默认字体。",FOURTH_FONT_NAME:"本地字体文件",FOURTH_FONT_DESC:"选择库文件夹中的一个 .ttf, .woff 或 .woff2 字体文件作为本地字体文件。若未选择文件,则使用默认的 Virgil 字体。",SCRIPT_SETTINGS_HEAD:"已安装脚本的设置",TASKBONE_HEAD:"Taskbone OCR(光学符号识别)",TASKBONE_DESC:"这是一个将 OCR 融入 Excalidraw 的实验性功能。请注意,Taskbone 是一项独立的外部服务,而不是由 Excalidraw 或 Obsidian-excalidraw-plugin 项目提供的。OCR 能够对画布上用自由画笔工具写下的涂鸦或者嵌入的图像进行文本识别,并将识别出来的文本写入绘图文件的 frontmatter,同时复制到剪贴板。之所以要写入 frontmatter 是为了便于您在 Obsidian 中能够搜索到这些文本。注意,识别的过程不是在本地进行的,而是通过在线 API,图像会被上传到 taskbone 的服务器(仅用于识别目的)。如果您介意,请不要使用这个功能。",TASKBONE_ENABLE_NAME:"启用 Taskbone",TASKBONE_ENABLE_DESC:"启用这个功能意味着你同意 Taskbone <a href='https://www.taskbone.com/legal/terms/' target='_blank'>条款及细则</a> 以及 <a href='https://www.taskbone.com/legal/privacy/' target='_blank'>隐私政策</a>.",TASKBONE_APIKEY_NAME:"Taskbone API Key",TASKBONE_APIKEY_DESC:"Taskbone 的免费 API key 提供了一定数量的每月识别次数。如果您非常频繁地使用此功能,或者想要支持 Taskbone 的开发者(您懂的,没有人能用爱发电,Taskbone 开发者也需要投入资金来维持这项 OCR 服务)您可以到 <a href='https://www.taskbone.com/' target='_blank'>taskbone.com</a> 购买一个商用 API key。购买后请将它填写到旁边这个文本框里,替换掉原本自动生成的免费 API key。",SELECT_FILE:"选择一个文件后按回车。",SELECT_FILE_WITH_OPTION_TO_SCALE:`选择一个文件后按回车,或者 SHIFT+${labelMETA()}+ENTER 以 100% 尺寸插入。`,NO_MATCH:"查询不到匹配的文件。",SELECT_FILE_TO_LINK:"选择要插入(以内部链接形式嵌入)到当前绘图中的文件。",SELECT_DRAWING:"选择要插入(以图像形式嵌入)到当前绘图中的图像或绘图文件。",TYPE_FILENAME:"键入要选择的绘图名称。",SELECT_FILE_OR_TYPE_NEW:"选择已有绘图,或者键入新绘图文件的名称,然后按回车。",SELECT_TO_EMBED:"选择要插入(嵌入)到当前 Markdown 文档中的绘图。",SELECT_MD:"选择要插入(以图像形式嵌入)到当前绘图中的 Markdown 文档。",SELECT_PDF:"选择要插入(以图像形式嵌入)到当前绘图中的 PDF 文档。",PDF_PAGES_HEADER:"页码范围",PDF_PAGES_DESC:"示例:1, 3-5, 7, 9-11",INFINITE_LOOP_WARNING:"EXCALIDRAW 警告\n停止加载嵌入的图像,因为此文件中存在死循环:\n",SCRIPT_EXECUTION_ERROR:"脚本运行错误。请在开发者控制台中查看错误信息。",LOAD_FROM_BACKUP:"Excalidraw 文件已损坏。尝试从备份文件中加载。",GOTO_FULLSCREEN:"进入全屏模式",EXIT_FULLSCREEN:"退出全屏模式",TOGGLE_FULLSCREEN:"切换全屏模式",TOGGLE_DISABLEBINDING:"开启或关闭绑定",TOGGLE_FRAME_RENDERING:"开启或关闭框架渲染",TOGGLE_FRAME_CLIPPING:"开启或关闭框架裁剪",OPEN_LINK_CLICK:"打开所选的图形或文本元素里的链接",OPEN_LINK_PROPS:"编辑所选 MD-Embed 的内部链接,或者打开所选的图形或文本元素里的链接",NARROW_TO_HEADING:"缩放至标题",NARROW_TO_BLOCK:"缩放至块",SHOW_ENTIRE_FILE:"显示全部",ZOOM_TO_FIT:"缩放至合适大小",RELOAD:"重载",OPEN_IN_BROWSER:"在浏览器中打开",PROMPT_FILE_DOES_NOT_EXIST:"文件不存在。要创建吗?",PROMPT_ERROR_NO_FILENAME:"错误:文件名不能为空",PROMPT_ERROR_DRAWING_CLOSED:"未知错误。绘图文件可能已关闭或丢失",PROMPT_TITLE_NEW_FILE:"新建文件",PROMPT_TITLE_CONFIRMATION:"确认",PROMPT_BUTTON_CREATE_EXCALIDRAW:"创建 Excalidraw 绘图",PROMPT_BUTTON_CREATE_MARKDOWN:"创建 Markdown 文档",PROMPT_BUTTON_NEVERMIND:"算了",PROMPT_BUTTON_OK:"OK",PROMPT_BUTTON_CANCEL:"取消",PROMPT_BUTTON_INSERT_LINE:"插入一行",PROMPT_BUTTON_INSERT_SPACE:"插入空格",PROMPT_BUTTON_INSERT_LINK:"插入内部链接",PROMPT_BUTTON_UPPERCASE:"大写"},zhTW={};const localeMap={ar:ar,cs:cz,da:da,de:de,en:en,"en-gb":enGB,es:es,fr:fr,hi:hi,id:id,it:it,ja:ja,ko:ko,nl:nl,nn:no,pl:pl,pt:pt,"pt-br":ptBR,ro:ro,ru:ru,tr:tr,"zh-cn":zhCN,"zh-tw":zhTW},locale=localeMap[LOCALE];function t$d(e){return locale&&locale[e]||en[e]}var html2canvas$1={exports:{}}; +"use strict";var obsidian_module=require("obsidian");var LZString=function(){var r=String.fromCharCode,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",e={};function t(r,o){if(!e[r]){e[r]={};for(var n=0;n<r.length;n++)e[r][r.charAt(n)]=n}return e[r][o]}var i={compressToBase64:function(r){if(null==r)return"";var n=i._compress(r,6,function(r){return o.charAt(r)});switch(n.length%4){default:case 0:return n;case 1:return n+"===";case 2:return n+"==";case 3:return n+"="}},decompressFromBase64:function(r){return null==r?"":""==r?null:i._decompress(r.length,32,function(n){return t(o,r.charAt(n))})},compressToUTF16:function(o){return null==o?"":i._compress(o,15,function(o){return r(o+32)})+" "},decompressFromUTF16:function(r){return null==r?"":""==r?null:i._decompress(r.length,16384,function(o){return r.charCodeAt(o)-32})},compressToUint8Array:function(r){for(var o=i.compress(r),n=new Uint8Array(2*o.length),e=0,t=o.length;e<t;e++){var s=o.charCodeAt(e);n[2*e]=s>>>8,n[2*e+1]=s%256}return n},decompressFromUint8Array:function(o){if(null==o)return i.decompress(o);for(var n=new Array(o.length/2),e=0,t=n.length;e<t;e++)n[e]=256*o[2*e]+o[2*e+1];var s=[];return n.forEach(function(o){s.push(r(o))}),i.decompress(s.join(""))},compressToEncodedURIComponent:function(r){return null==r?"":i._compress(r,6,function(r){return n.charAt(r)})},decompressFromEncodedURIComponent:function(r){return null==r?"":""==r?null:(r=r.replace(/ /g,"+"),i._decompress(r.length,32,function(o){return t(n,r.charAt(o))}))},compress:function(o){return i._compress(o,16,function(o){return r(o)})},_compress:function(r,o,n){if(null==r)return"";var e,t,i,s={},u={},a="",p="",c="",l=2,f=3,h=2,d=[],m=0,v=0;for(i=0;i<r.length;i+=1)if(a=r.charAt(i),Object.prototype.hasOwnProperty.call(s,a)||(s[a]=f++,u[a]=!0),p=c+a,Object.prototype.hasOwnProperty.call(s,p))c=p;else{if(Object.prototype.hasOwnProperty.call(u,c)){if(c.charCodeAt(0)<256){for(e=0;e<h;e++)m<<=1,v==o-1?(v=0,d.push(n(m)),m=0):v++;for(t=c.charCodeAt(0),e=0;e<8;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}else{for(t=1,e=0;e<h;e++)m=m<<1|t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t=0;for(t=c.charCodeAt(0),e=0;e<16;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[c]}else for(t=s[c],e=0;e<h;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;0==--l&&(l=Math.pow(2,h),h++),s[p]=f++,c=String(a)}if(""!==c){if(Object.prototype.hasOwnProperty.call(u,c)){if(c.charCodeAt(0)<256){for(e=0;e<h;e++)m<<=1,v==o-1?(v=0,d.push(n(m)),m=0):v++;for(t=c.charCodeAt(0),e=0;e<8;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}else{for(t=1,e=0;e<h;e++)m=m<<1|t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t=0;for(t=c.charCodeAt(0),e=0;e<16;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[c]}else for(t=s[c],e=0;e<h;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;0==--l&&(l=Math.pow(2,h),h++)}for(t=2,e=0;e<h;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;for(;;){if(m<<=1,v==o-1){d.push(n(m));break}v++}return d.join("")},decompress:function(r){return null==r?"":""==r?null:i._decompress(r.length,32768,function(o){return r.charCodeAt(o)})},_decompress:function(o,n,e){var t,i,s,u,a,p,c,l=[],f=4,h=4,d=3,m="",v=[],g={val:e(0),position:n,index:1};for(t=0;t<3;t+=1)l[t]=t;for(s=0,a=Math.pow(2,2),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;switch(s){case 0:for(s=0,a=Math.pow(2,8),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;c=r(s);break;case 1:for(s=0,a=Math.pow(2,16),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;c=r(s);break;case 2:return""}for(l[3]=c,i=c,v.push(c);;){if(g.index>o)return"";for(s=0,a=Math.pow(2,d),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;switch(c=s){case 0:for(s=0,a=Math.pow(2,8),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;l[h++]=r(s),c=h-1,f--;break;case 1:for(s=0,a=Math.pow(2,16),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;l[h++]=r(s),c=h-1,f--;break;case 2:return v.join("")}if(0==f&&(f=Math.pow(2,d),d++),l[c])m=l[c];else{if(c!==h)return null;m=i+i.charAt(0)}v.push(m),l[h++]=i+m.charAt(0),i=m,0==--f&&(f=Math.pow(2,d),d++)}}};return i}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module?module.exports=LZString:"undefined"!=typeof angular&&null!=angular&&angular.module("LZString",[]).factory("LZString",function(){return LZString}); +const EXCALIDRAW_PACKAGES = "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+po0AoohohJo4Wovho+MwpFIqvubxo85w3xovJo8eowJo/xI5ho3hojFQ/Jo45wzlwprQ85wnBompo+5osRo0+5CRo7eoxdwrpo22oyso8Uovpoo+ogZotool2okZooQo/pwr+ADRomGAqZo1uQmZov2oyGo2Qop+ooxo6Yo0Oo0so8xorFoqOohnQb+oleNOOoqwILZomOo5mo3Zomk5VQow5o9EWXrg5xo9GQ05o5qwrWQ1hQqKQrOomTQlpQl5ovRw25ojBollwkwIr5o4Fon5o8eozWogFomTwy5w75o02oheo7WQ5uoppo2po02otpo+gox6ooUo56omRonpoqTeeRo0pwxRon6o5Fo7oogdwhuKYzwpfI1+opZo9+oqaIxvw3Uo/gQqmol6wgqQsPgxlopOoo5olh8E5ovGoq2w9/w1fgv+o7Go1lo3GouXIsBowHwrpwjXwx1orfIhxo7rgl1o3fIkIo4wo8nRDxoreIkmo2hotnwpVo9Wo/hojQQnwI3ZwsVokpo9hoqeowFonhosVo7bwwnw8cQxVoymolpokFo9MmB9QzuolYo+NonxogVo+Wo9Bo2cQkaQ0Voseo8Vo5topBw1moyJojmojNog2owwQvoQxpot5ou5opHQ0Wouxw5uKU1oosom6owxoy1oklo0Goyxot9wmZwl5wtCQ+xojfI9Qo5lo3kAHGo8xQ1xo/gQyOqBuomZw/Zo1douLrdlolaIpbw2Awz9w+Mw/ZosNowt1IBo11otlo91o47grxo71I3Vwwpo9NoptozNo5pw8Jo9jQ9topHQ75ooWohCowRo5eowVoteovRw5sImlw7JohWo25oxWosWoomo6lwqEOD5ogzQopo6Jo35ojBoq2uI2o99o6potBo5Vo+pogzQ3tor9o0hospo7to4Domtovto1hotpo9sQiZokXg32ouwQ5/w6Zo8zwqGwk+ohaIpewpaIjGQhzwukAYfgrnBd4ARbxJNqe2w/do/CQ6hgzAQhng4BwlngnAQ72wxVHTngxVHf1hBao62w9DQt2woTo/ng3fuIMo/1o+WwyQInjoqTooyw2Lw8vuW6I86w87YZuI2iIpMOHgIoI+Dng6lIjMOClIkU9Dl3NCOIlI0zokzo3aOHmOJQI4lIqcojng7TonkI4/udLQn0IDcOFvQ6TVT8OBFQ3JIqeQ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nWLIAQRnQP2ImegXW0mevRhT7igD2cG4B5Same78KYeM3dcNpncX4G84amOvcoRmeh48aJuZwao3SU6evcoDme32e5mez3aHceZ823me4mtfme+GIQWe278QekHWxMWeyAKCWevnaKWe1Ie2WeiNiY09XPSTrBJWe13aGjwZWetWevoSCjAKRoGTC8FmJf8tUhF4YNJKkUgUQ+MtcpSARGy51cs3+OOneUAHDM0TqGqJB5OiT6HDEAcSVoAUceeD1ej6YI3NuevsWTQAGryS5fNKjCOS0vAdyyp2emMvaoMQOepDrVtuOU9adGK9eQXASOeqmtROesN6vcoSWe4L1ZWe9OemltD29bOe1IevOe13aNWe5I4qoawvaEoe13aGESdWeig8SoiSzwFFquFYS+emTYefOzVWbQetaO1nOgXKCywUwg3wAAg9Mi2AVmA2FFCg02FOP4VdAIp4JeWiVqj9NEB9KxDZ9qAcSKB+KMWCnnIdKaM0XaGXye98tY6e3P1L2ekLPcLQC6e/YMuHbHU+CBukWewFC41DJ2AeDPLwSZBehQgf4GUSg545IXmghe2waVzAzCpPHvTIQAztBONbs8KgAuFYEc8IEdd1sMivGBe8BOvke+Bej8tLrISewXcgJBe83tU89auxNtWdwSBONDoAyyymnvauxFhKTTtLBOURez0WZQ8VLPAcKlye4u6Therl/X/cVD4Jee3PSX5C9JcGoO1XULbcYOxAKU86MFegoBvfResRe0VcZ89NoafkDNheilHPkerNK9QHP0NQ6YAbqKKsDD3fHyK6eoRSHuAS0UJsMMT/djOU89Jo3TxezKrMxe8YPXxetowORe1JGQJeyhe7dAZHRWherBOQJe5ytWfqQJe5HvcfOCBWCBcYR3ebIUgqG6ez5YRChNJepDxMJAKKekc8CjAESkOqOujQHYe9SQM6smvvKBoYwOo0AxRe2u6ZReuHqf3qlRwQ4AQBXbBe4mtObRGpet6lX/Mt70J1SXaeytKKxe0MS6pex7g2pEWNKYL1Wae4L1D/4H5C4sQW25MDxdRevcoGKFcZekZe2FC6mtNnxRnxCJqxpeqmtBdqNFZbEaFfqVjXCJtQhe49qNFZUEaDZe66ynvqeFqrJe193SxethdJRew6evye1JcHOAIAKDqejgSrqe95wSfy4oSnLAKae22narlW0geaegVyV2yVyVQheuEaZUYW3Rcq1SZe9xAMq2WP9f5ei0enWxfZubbxDBkgFe5Ze3PSVZe9GZfJKaFenWxHZe+Fe+dtMFeuZezmesCCw5ehheydkLC1egnTpewJ0bpel8tC5ehBe66ws7AQi1QFelpe4IGJ4QnIQwLmh6sunFRFeuZe6OesIVJu8ocYYmezBIW2emJKOICkHCmMLB2e4q+JF6GmeitMaTdaees7uHdcPWgP2ez3FEj+Qhe4OevrqcVewvabmemLPGFevcoFeegltdee++Mzeejee+WeultXee5We/eenfaAueobBezK2/M1o2AkelbuhCxLlSqxoCfRTl2ClesiO7mSotw6ZOTJe+vZR7SBLKee+bWeloSpyMI2ukF6AsuCjAbTNO1+KKe7qjKs0AyECywT6e2yPeOmApe9SQNjK6fADC5KWyt4ma2e70e6POqxBMUq6dKfsSIONDcQZ2em8WPae6Fqqpe4lejyei1AWme6tMwhen2emVe0OeuVesDMqVe6bgzme/R+eVehpehOe0fqcWe+ZOlBCjeemWejVezOevcobVe3Oe1We+lenomAte0MLH4GFDeE5eypejhe7NeqYCetud0WWJyKWKjQyueLG0kC2y1nUwAgV2QOYuzSeqBy8aiHswaKO6fAT/ADsGbteys9OFe8HRDduBKOrhSb/AcdeoJDede62WNKOobWIRST/AYkAS0xPaUVhegdenpeodez8tJBe61e8T4EaMAyBM5qhmente9XugheilelLUS1OH5AmNch1erxlNFe09aCFewXKWKbXmYPpC8Fep9eivSZCja8GQhe79e4DOX9etRGLFegStT5YFpACjAF1ehQTOUAXWemeugFAaHiUKKQ2e5BUPjKkrIIjHX6u0lHOBOjWBJ7qOTylwJVCshPeK2O+Z06ny4wldxE3wAws+P5tfPZM5CkwfNbXeLg2k4Ey6PqK/Fe4dKQle22oaperDNCggPy5LI+O9sm1tG9eole5CKEle5y5McrRVeuUdUWSgwpbSrOTesWS5p8J2ARTeofZZTe86egqSapClPtI5eoScaG8HxQBKPOZgbYXXje2Beg6eqTej8tSJ8X5UYVe86ejjekbC7eIIp4O7OKu0xnpCKEQ322moA/TJfHMhER9eobwDSQV1SfG84VerdemysgOe7Zerzg68Uhc2ileite4MVbeIccuFuyzOQfccSTdGZOqlQaELLmWpiyqkrMXAAG8UdAFLemu9eDfQ/YNbseOeuZelee4G9cHRGiyvlCfoe4repiyxbaGltAltTrBSYJJAe2l/DRmUze9he29eize2BDe8ZGpU7FeruYVJvCle5Ve5Oez3aVOe9VetVezVezIoRWeveejtemr5C4e8ruaBeiTegTeu9e++ok6erZGeXpWhA22o2levXyjpe05e/ae85elrerKYpsPDnqf/u868ocutnO9kMwhewLejBOBFeiZezTe0LeiRemGO87enWxPKw2Veu93LZeile/QhYteh7erwSKKexZAaKJSVuwOe6pegKe8SQ4KewQso4M2l/NDexJsogTTDe8rOr5dXDepUYGGYMNe6ceinVASsiiALDes2uu5jKeuxHesYrF5jWrO6fAPkyvVqJLEbY/PLqSE/V88M+eGP23pe65eh+O7re2tepOe+te1Ve6We233ZteneeqfaUbe/Oezte19euZek7eqEuO3zPoSZne09aZFexoOH0ND4aT9e5Teu7eh5SbHOsbzWLXFXtYVe57em+yLy1EXe9aq/neiDe7HUQAGWXexlenteu3ScEvAbqFu2gnqJaKrGK9lfQEAGogZ6WJMW/7OslnThQRUOAcSZ0gVdcUuONcAA1CUzJM9yVHeyM1CT6OCAGryD3gM3eoRSXvfFSGSXe8HO8xuLBet9ezde8waO3SQ6ELhSBDqAnqUDyA9e7XeqsQZ6WLIgBsQdaHD6WY8AGryU/mRmtIRSTrqN2NAnqZcgG3e0bOvsWRcgGryPfgOPehxxKCEOKEN3e/gHUXe7eIT7e38VIRgSZEEFUrVeDmsoUejEIEUe8HncsMqMWTGOtbe6be1vUO9egbtPNel8q5Tewte5nuF7eh0kAZ22ZeoDe8tekOerme98UXve0We8ne1ee2VHVUCfreptewbelte4+eivaBneg+e+le9gzfN0EWOm0CcWOjX8BryqWO/wWNWOyPSxZqTWOmkyhyuGWO/mOvpMzZcTZ4DeSxXRVeSgWO0/e3eS9v+YgwMjpSpMi4bHfexfKCPtIiHTaAHGO+h0emOq4Kb+ZbuyQ/e3pMuqufeSnwwc/e2WOgWOtvQSbJbgiTCKdxsnHQVW2ikmD4Kh0eBre9bezNewderbe8y5eNgJ7UbJzT47FaC0ZervexoaKm2QhemKFXNzXHRIkpDA+uZezeeOlcNlFeIJEkenA+61e3ueSUdettR15EMlLre5Te4Dej9e7iChOek9cOVoA1RBg+t9eow0e2HU+1Fjcd6kGixPZAbSC2De9p1GLxIg+ydxPqDMmABFcE5cMrePM6D+ceDcHeDNy1PTe3KdQ0AYHerWekCvd1evWepBdF+yM4JQjmaHfV2Uz8uCjujiOgya6GwXuEnSJWbCjgtSzGTzmaKKEIqmY1fjy0tNNzisBO/jetPSIp2aBOiiurgCPl6S4gZ6zf2CkSje/ekxlcOBXQK3m0/5xYrEbXCRBVGMgA+U8MVRayZdyZxjUr7btUivWzxjLki0u9cOq9HRBdfeuYTIKsI+2qdbZADDHMdNRFqBiS31SX0W3nuWujUKNdd5Wg26abBHS1lWD6LIk8TQ+5HeTCRScqtTBCZaLYrGk+IaKLYrSaJLKvWYPborErUIxss+8ApQPIqnxxCQO1TZUe0w+2MayTQ+vltQDpFMPau0p6qChyks+PEONW06kxO3AMb9XjHA3qLt8pl6GQdVpyVWaDwhKBwFv0rsikW+A2MYB85HmUZUm+qdQAYOkajzamaelKDQhUOC99pD21fuTKwAAVyN3euckzQO3zAn2ePZ4T2CqOK1stDzA7ghHXzA8kug+x+S2GVNXzY8k24bR4qfeMpSij+DYJkfrOzhQbtiAwOp1jfaHAHO5yLIDJXXzduuBnW8pOOu05zehXOaz+D4+qE+g+oDPcLXzW4+9E+/XzRQAOjFCLuCEQTzzCCs2vvXzzQ4+5BKHasgKjPEOIk+54AM4XUk+pBKJsAOnMkfKb/u/hoekfKBofeKcdAMGtPW1WtgMZiesjJzeoDpcY+gnBf66ecdea0ts6C32QEpcHKHlqvF0K20lu0xmqI4qn20/lqv/zX9pAKug1OD4PLDyupjLM2nTW/7gPhKmF8qHiNrWxCu6lHTwWCIqJEVEdpL/Op/O330z/O3QNAaktkjRORE0+y/2D9gJv0sUySGkCLwbViH4IZTizQ+l2VKhILH4EiAdLSV7+AY+pXgCu03tpZE+vOWSAZeu0s5AYY+rW6GKIFyAbiIaRXV0cjMcv8oVQABsMYjAAjOXZYRnOXggf96Nb5DGUTADb8CagqK4EKlMDu+co+uzMpzHW/PQCsM5HIp4BzHcZiLX2gk0gBu7xC8x6H93CsNGKAlFBWbHHzHfuCpPeCsNK0+tzFDbASBqG2WNNIa2JeUTcx6VAQRhu56zco+ZxYRSuvhhfs+nB6E6WIc+mCqyADO8KDaqYeODzYC9lONBHSTZ8RGcxBU+n4WJbgNfREhRWbAE7RGcRNCYE7RfHWf30NXZNwushbS8rc48CedTOWEM+oM+uIASnFG9vZsk+PqTC/YcNef9ZuOVMei/uvxCxmrKwiGVIUWUHf9RMRUyulwZfsALMek1zPQgl3skP+DLOlJzA4RF7shN8FlqcxSbJHSnu6yOswEPYbV/WO8rNh/NKxSAZP1OJUuqbRVjbPYrMtcduMrERUx7ZB01u0g0KZDpPk+sY+xnpYyuxbRNc+t1OG409u01u4FxRQh01uWX1ZeGjLe2c20g1OYpyrcgdOIaqLACuH0+mLhP0+k54QX1UY+4DpX6oSlMcM+uNAU4VWJAH8+R4kqMYOnMUX0NHfXFOKmW2fUiSM2mW5/U3IYjHwHwvVTUu40yBUokIKos/reHYgHh08sSJcWag6cL8SO2I+ut5xL36PX0PwygIykAgZp4HOGNrHB7EFM+k7YQBECsgIneu9e0ewXyAWsKile8WJYsQQyOYggNy+5TezRe8PqPyewNMYVe7ufMZe7VgfR+fiWHVe2gigLe0WSsK+hSyyK+kLe/9yZHRfgAWK+0tIWEAHy+uXeutZF4uTYMLlXZkOjY5SVO8FOlsQANyfwe0TgJGcfwetdPcBygthH8+UlqAGfYMeM6zVAqwaqwSxQejIhK+ROpRAPb280GGVNHXO2BTKXOgHAIvOyvOgZS3yAVoAW8QBBgKbo2wshiCm2s1GAI4AKGCkGC7OyGYahI6zbu+ZOmqC3r/DGyPT5IegoZmMG9IberOexoOR4WZWe8Aepwe+2iPIe4o9U89Ba+07erGyZjmKk9dego6+qEuOXyU6+3y9KGCuA8bOyES9OA8e+oqaC1nwD1+PDCEawPakQnaO8Fcy04q0v2wYVucVCVKdBK0uoenfaJhSI4ACHaOLAB34D89UGC9KCns9Y7CI1q6UAAC9WAAMueaIAfM9Eg+jWefFAdOKxy9O89E7BclgJKUi6+ufeo4AdOKl2wf6oD0SGo9Rs9RG+3uedZwDy9LlcYxlTmefFAUOKp/ATG+5I9VB9HG+7WiPG+h0kPnGI4Aem+sj8Ym+i1AU49Mm+pG+9k9IE9VG+/BxQh8CeKyaMeY9Zm+sYo3Ss+neo4AF4+yeKjvqpGupm+Im+jJk3m+qE9K09PmCokAD89Nm+zIQMVqRPaP89CG+iHaKQgSAZauWGygaaqQllDNe1soTbeo6e7be2TezA+8LXDTenWxaZerBwKK+jzg5HRKivB2+uZe7nevnaLFWJTeuXeyxqQ2EADPJQ+ouUw6SKKsLs+v2wbisBZJMFqSc8emEDmBIBeka9dhW7vCa69HiSJEiioJY7VDCe2vvJWu8i1GM+MUC6giq7mUX0CNdBB1DZKRW+fVoF46JpmDeKLqW3z0rwaywdcs1caxM4XTO+xJy7O+wFctOM0agAu+yIaIu+jeKUu+psKIsKCu+reHH002Ougn0s0ADzYZ6zQc+2q+sP2aFgKCgLM8SSoDi+/5LeWACm8ErFTQOyKWpMeleRSakwM+/k+0i+wWUTIDCVqvKWo2usgKdaHV4WdaHKQOq4RG40gC+yJzDr9XAAZCBW7mbD3UcuM4XBJy5ajZnLNDGcC+iaGQNMDoKzPWqR1TwHP1SLwq45CUHiYe+/HmC5jLGu3WqAc+g3Ldy+LGu7+CBYqxwq02NbflX1VZaeGUjRE2nYAT5NbDi2N83HTI0xFWOEsexVC3SQdRSA/sjcQJZjY4YT7E07SW/EG3hMn2DQsWsakt9DC5WseptCplsvVCxVCnDYDYgHSpHVqa5TNtSa5TBqcRVC1yQLCoJDgyBqDgiNAg0z2JPMVVCmjwZseptC+DAVG0+FlS3OWyWN2UiCuJK2EgIQpEKDqhhgA6Upse8JWyK2IjugNKs2nHfPZS2bHTEUaeFWQZU90UHsAYFnU2JCcrfqgmFnJQwMXyf6EGcRDhO4s1BFne6VRaes1hDdMtLYDYpf2ZCseKYVVp7Sm8LmlX8IAGVLmKJIq71q03CpY+sWtKh8gLWZOyJTHF/PLgAHqg+AnR4HeWtVvHV7WJ0qb+SQJ+lAHEonOWtJoWL2hdOsq8SFsspUYSZwJDuOXmRmS1x+/zWfxgLG8tx+tqSBVgbjMv1SFty8x7N0rOO8f9LOg1MdWRmGB/dFS2BcxTzgQZimGyRtc9khIzvDR+5gWei2bryti2Zw9TyNZbMlsxTV+Hfs3AJGGAG3hJHES3Eh9g0XEkK2eh+61KuCAJDg87UdkUjh+yZgt+u9mMnqS6FlJNy8ju+NJeZJaYK/IqysqqM+FOu/Niof2BPeKGglMWQ+rO6q3uu5ASGgGOYqnhA65KrWSI9KjM2y/VSRShDK1pjF7K8qSdhKllK35yhrJcZfWZuVjBV+q6acz2g2iSctysqEb288bSByeyfoC4YWkaFV830cjYpL5+hmGdFc/s8hyyGoc4H1S+TRkSxBoNTbCD1c68t8EO8imELDG1TAjD0nN9KwMJLgASgcsiYRWZbkAK/lOBIcdyhH4N4IZnmV2EYcC+qXFhASRYYWBOo1Reu7OO5KigeIcyKvmuijfRTBJo0qxUuXCksqxNssYq2FfC/LGKgjGxS7WZpOhiKYseAeIGyqyHsmrbcE3XDc0r7ZWq1zoVWqwaxModV/IbWAO2q39GaZu2emekmHR1Jeq/NHFKBNZGGgqDJaWvTVgqxdDEvitonSV+2ekNdMqcSUkoJzW8B+mw1R2GZjBSuhXgOFOVDQWHJjfBC/JjHsRcRqkvWiyqhVAVoqmUsqy1ZKBevTfKkNOoO1rZYbf59PeSSbtHz6Xyq08CtjqM8WJQTDYtfwtItOLxsqpu+XTKa2MZeNCe8xq4psj/rLZ+v1zWt6AOnDLWAVlH81UVu9rNLS4PQzNvWm7ujHydsZE28YN+W59FcKUiuP1+zYbFvyem0yRAzkNPRWf/2F8AOmqgZBRNSCR+3k2n42/k2hawHEatxgBdWlCSCJWy5TdEyUrWSBqGjwFFHYJfRSTRSc8RWMPLfFnLeqEPWJ4HTZnIU8QJCqCcqagg6NavVGVNDDKOP9MGgS5rSFnV5nIp+4A2zp7NKAJSAJkhTp7UG7eTzOg1Nu1KTHfd+nfwYXlKTHI0YbCRWcrcfyQrmKvA2FglXqGaobsxDQ+fGSHVqB4jXWUoka/Y0rD4tXEn5LRUU302oA+KI0Uv8xDqxOSGkoCN0uO8Bd+Izy4AgIdWjlg4AgZFgpYYRMaoHidZ/OdgjGUHDDGZgtRNePk6LATudGTfNsQOdghXqBZWhOE3KNd/pRVgjN0iV4OBtf1gphxWVgojWfoRYrQR7E6G4fGSS7GQNCusalu1SwOJl0BmMpgABOfDNgBGMr1g2GZPzygPEh9gsfqJ+snk+LAgmYOHnEucxOIMiHEspWIvEnWrfNg9gs9C2x2lPnE6wgZNqtyMQU2pSGUP2Rtg14AZFglUWUUax1kanEvVqSVAK3E3HAatgzVgSVRKYRbQizRTO6guyemY1Gtq0orD+nBcYL68NbLDFgL0AHM4OeJO7QNFZM18OL8GA8PNRELXXLXbaqrRbauxf2xCjqdmoEL4Laq+2+6UmRoONZgMp8TkRLZAEL+9zXPLXIhBahe//KVIoH5gT0Bc9GXz+sL+225ICQfjc/edGyspf/P9xXL++ze7nzAZ6ctW6k8MsxRsxUsKuvQL+c3AM+8enE029LHCdVcdTpqmMoCGVeP/U7ELeKkaOoGDKSyOrtcobGZuQwnGrtUOMjbrG++XCdOr+2YACSydKgYb+jbrDheABACb+jr+3RwP3SVUYIlRQCGamKDr+/bbN9rSqfKLuBzgTEFPwUkb+zr+sdq3rtGkbXr+6rtMDaAb+2b+1xwIb+iF9Hb+3RwKb+wgAGb+ixHIGDfuYFsZLWSkvJWbM5tKzuoRHtfkjTCxXAKLCs7HnZGspOAKrStTBWkq2h4SdSQNnYSbCoa7oe3PAKjgd6qKjgPU0n3YvbzMBSmCslmJbwrd3aGoe9RDESjekGQt+z+fXVuBDivkgkxzOM8W5Qch4BbKlNDe7gd67ZZAMvCnLWgaAG6inrK7o+OsKK1LLFSWdDEoycQAtdvJtAN5Ub/gPomSSUz+XNgGTj01QAKWgoFAXNqgUyCfFFn+ltVeYgCPAMpgOYLNkdHn+jYOXymGt+hSM8XCKfYaV+8/NGj6CNMC0dKv/VctR9SRI4aEgFtVNMsjIZeabSdLakoQsA/wlSJQZrKhbK1Yq4aXZbKqYKgpAPZAK5AIfYdmyHrKxVivJSy+4NVqnXsuZO8b+PEYY9yBfurerITlYRUa/GCZzHMwUT+aT/cbgb/gcYEekuH54IfFVhW0X+nzqEP+nUYF44TosOpNVX+hn+0P+5xMpH20PWpD2vzyA72AO/cuKbTwPPYVRoD6coXGE0odMrHDOfP++cuHsrE6NJ8rW/SYvFSsrTIAasrMCceiwFIZRo8Em/Ko8NfBfvFL+A8c8YS6abKcQAgS/ew00dSRgySs0KffPbweOyTmMddIABpHwfYeHJquiRoWKtJnGKtAM4aQHAfQijCkENiZa6StcgUyTt8nUVDlbNw6KzXUywEkeDCEP7xU9lJ4AfIyD0eVsyKf+pZAFgQOf+hu+vCM8dNCuSQ1jE7mO6aLujDF88uAdntYDVctqO/+pJKADJIxAfx8mh6DRBd6AIj+LsWAaeRpA0UdJs7VX+xnM2FAE/+Z9ZGsQFBjY6lADJPFYFtJWoiSNMb3+xStHoqXqCMCc7e3F62jniSamJ3NeDi8nicF88RsgItLeOqs+YPclNSjrKvkKsBmAimZd+YPIAFIWau2qEDPW+HyO6VR5rDfW77WllSxWAbOXd3rM+jAeLNSBbOXHpXD7SarbdQywfZURMqk1dhoCRM7ojQMeEX7YZISkhEDi5gBmo2edlVw0NGtQbM9sBZM2MI2KyKjM7As7OURLrjTWXOcBDsBU2gCo3WIEc4yFURKmSkbM0vrXgBzTMmdha/CrIrUfQacSFGc9+QGMSXQAEJ8E/Ey78bFW14u/fEqV+KwBgO5C0SdUSH05XZEPdwIhCZYMBwBlq5P1SOAReyC/wSXQAPwRf05SikEVUgUAJwBsgSH05SwB/JK0mqA9ZfA05YSfwB0ihQIB0mqZZ+PoSfQK0WNLdzJOlWNLd6GDBbc48MtJP1nQB6EYNYsrAKNUcRd6NVYjUXCv6unu1VqulngfdVaQ+aAekDyoFtUviBwqxGHZn7NIbateCDhXMrHTvItTLZ9AoB15nIoB71TUZybUS5OyJSQNKAVKi7gwc5VaoBvRg4YBpQwZ5KHVy2GqJIGWf1WLaHdDabWQMyJf1UcwFf1H53FbXbhOFhmbhC9uSuTXO8FLCGQacAAAAZigAAADWAAANmKAAAAN4AAA+YoBAAAOoEAAABgGKAQAABNBAAAACBigEAAH/8QAAABoYoBAAAcb8AAD/fmKAQAAez/AABfv5igEAAH//4sQdWcTB+f7aQAARNAYoBAAB/8EAAFxvmKAQAAX9/AAAHP5igEAAB+/iEBvoSPIqqiELgyqQtTJq8cmF9mAVjTc8eAiwX07TPeG2MEzR5qibObZU9bU/6gvqZNgAvTu2Ki3cS6F09Fic3IGaZFzW168vzwB2CjhoAF1GlwQ9HFP+LFQfqAS8mTLRNzM8t+UnKA3tNQsDimDVCNGiXLSl9MraKu5KuSrC6VBHRJUcvoK8FwKs+JCPXFc5quxHLI4SgxEfkBiZTJnYaVigtcWVisUBuaZELO2skOgBkWmbdcsqVP+YLMLN4QI6OjvnZYAYAcLKO/4ASXUO0B+0ByTdR0B+iAWAeHtAuKoYtW2ayZCRCcXeLs9PM3O4TL+NgMo5jAEpNTAAmEKlu1owB/Uyj4XiAcBAFmEdvgQQirmbWsaUdqxTGLFQISMYWbNUwHI6PwEVloJOydvXLtbVQ6BVKZIGNwQWZxN0rR+KcodMhLUVcQkTUrtHseiQqHse0WKO5yXS/d0xdxaYT/bggIvwS+oJMq7+rbtSdsBhsoFDALMBzt2EJGHuix07NdXU4AZmLYAegmAKiyOJQSuqDUnHIMb6AdiwWik2GqfyJGUjKXRVuNScMgc8tlBCy+K05I5q+PaYggYMeSg+fYAVbsZU2mufVCq9r+u7+/VCUFKcA0u06BeIRBu66tDVKUGrHQBfKNfWcd/C7jjHzmG8BkxYMr+b36J8B0TjPzGd9db4vOfss4yHBWP7SPZSLHSYIKVWbTmqOtgG66IoHLZJRSc89QFW24Bqh8S2H7X8qMYa3qSTj7FeheySj8SnOAH9NZyS3BTVV24kMeOq+aA3szQes8aK21WPGUnUgx1LTsgdwgyNMFgwS4Ken/QypVbUxWAUSO4zaWGqONK+rib3LS/khCxOtAXY+ETUMluCi017ZfGhWSyP88CU08UezhsUnXAPSeXGIpFAhFIEoRc/QrIUwAerUKaDJVgA2SfZcAzi0wAdAmZSBj7oXzirpu9igbqVdEqnimRq1aC+BA2LxpWLsvCAEX22d0tpqARCxdSILKyyB5ZsNZ0JAB1bACKJTyabI+YysRXys/VSSrC5+xQpIF8p18qF0naKtpjGFOVRxPCgE8qFRwPeJOKKxaTUk81qssY4GyBnVzSW+A8q/PlOFpC9+eA29SSVRict+SdbB6aNDGHBCl0Alw/RfnMyAQ/DfNjF6MkbCsHaf/gC7iXiQGKAaRDY5Xay9HbxZMrJJkzKmVcqWmSZmUmaq/tacX2GMi10CuOs7pxQ1jCoWDGWFKB2qByOkGqBpq6JKB5UAO3yw1jNKBkbYZD+ecKTKBjskcdaHKB5LyK6i/KBwvaSBOXcA/NjUHqMqB+o9SqBgRk2fqGqBiCqOqBnpCq2KjcSiilB96K2bcQoOsSLYqP4cxUB1kBuSSaQGJsSBc0VsSE/+TtJaT2dexASg3sSSqs4zKRxCm/aIfy2Y1AYeUDwRYaiXTMGrHZU+3EKyyLIgatzST+bwqS6B+vWSEXbgOIiq7B0yEqr36Kkq0mANzMvKygpKZsSLJINqK8wvBkemayKdKWs0z2JHFSA9IWGAaQGGUgquoLaLXatXDzUyec6GRhvaDyK+C6FKB4BS8By/ben/UzBLc6Uesxk7SuaH9eHSaVhvf7iPC0+aQGoaltxCfyc3UtmWn0Qayyo9uuZSiZSklSUh8/7iOfy4sKKF6MqKMRQX3dOX2pus9pqiSLU3HDHoEvA2XdRb/Xi1ASdeWrPMxaglKWnG9q8noRWBxudbbmNPUDfBCQmTxInjjW68nPlM6wRCqOt3dM29BZJnKu3Kya0l8jbNU3DtM1y0KmJHQWQamw1R8y/9Cg3k3aKiYK2o5e2aazlC/WWDWCu0N8U2MFKZcMo0AbKc0CKgenhmX2B84ZMOBwOBuaB4OBv2B9joAOB8PaQnYeyclyyaDWUOBgOB4IO2MFZOBxbaAvmNOB/2B/JWLsyAp2o6SZy1X0APBgW0eQTkbLRY6SUQ1ZCGQu8ySoW8QC29NsSdd3VOBkOB/OBhMxKAexuB1p1GskPOBhOB9kpJAoJUK7hAWu5SSoCQmTOpS9GZPnDZ4AxQZ0CI01BMSKWOkNSa2yEF0rJKNaaa7KscqdxtTpqIPUE8GSt1ddMcniD9EIUseR2i5oWodX7gUJxVBhBTUmUM2ITckAKKcvNnJuK59cvk2nDu8ZgtAgzUAG0a0YRO0a7kaz9g4DcwEagjsgUa/1glieBovPmeRzoYdCvAfXVK0UajKMYsaq5k71CiGaUUay2ihOfbxHU1qE8a7+Bs8aoT+oqFI0axUaq/GWuhbTxIm0hLmTp0gt0sOUksuj/UxuSLOUst0ksWnK2YyJHvK8uSayWbvK+yWJ9cpyWGAcovvNwOP12FTfP1PRRU4GhVLBeWhGIZfiPDxSbjUlujdfKRp+sKNeDpG7tDgiZi+w+2NN/Bhist6MYZXa4SUA9F4YnLARecl+DKiDR2Mu0w+XfZaCi+nz8Rr6DHEQmNE9/GNBDBq7ZyGe+gRzUS4ERzUKNCL49Vvae+xAPR1OXoRHhB5RqIXbBRB9naDnKfhBwjnD/GW3s8JggbhfU+5rrHYKXoi9mZDoqIuHdISOfKFg0/YAb8MhwAcRRfPkuVOdISRGg58PVEQbxBmuHSiQIGxBQSjqciwyN0GR/AcuAI2KARuVqBgH9Tu0sGTYWAPeAfFaI0+r982n7ecFepnF7GIzFTmlRORUviUo+ZC+0yLOeaUl0aTKE59aQGMoSmaqLGyTJBxLWAQNK0+vJBjezCXUjntH69V32gL6LO3PHUjjEhySNzepCCnvlaC0wzEagU33KTrK1Q2aC0gu3TEmehQMaB0ZVZjmLgU4EAC0UrCQcQU3xB0RmLSslAetgnOfpcqxbpB0EAQWCwCktA09a4ffbVVxKCk8hAWFtPZBuWwEqebtSbSNOcKwxBuwAVDCSZB6sSecAi5B2eAMtaGIOwjXH6CwKqI5B6s06VQdZB1AAQWCyDACLTRc+sE2ViLGB0rZRFROHCM/kDBC01Fu/kg//AI2KVQ8McgXA0w4iCAyofQCaOIstBTfcMBmmEeXVO72ap5DlU2UMyOyZJy/aaOF/Q2GL60u6MmmsnR0hsDOXgUoCecKRuUKA02OU4hQINMkyrSbM39GE+0ge0+abVlq9s03OU2QAJh0oSUK8oY80mjyU80s0OXS+y8LbKrMr9IbHDi+5F0wWLRxCgrs+TJCxUqc0xhBuWhAH2UWqCo+gL/VH8ExBxmqMVq8wKre+vhByO0g1OQRBx3shTyERBhogMRBgCgCRBkGhO7EJWIKP+l98eJATeuDRB/C+pVBls+srygenYgWF0aHi+6CkdqWhVzVH5Qg8kdLCe0w7+wY7CemF2DD2IBrOI9wfSrQTUmEPVxwPrvTB0j1BwqQX1B0x0mFhaSmGn8tODDWKjms95C9riMrU8yU8G2bY0O2BCAPIbHacM2Lk9zSpYGTzS63hdOE1GAM6qucxZkamugmQi/C2hvKzG/BQixR+tZ3Vo2jUSgg25KXGiuWEhPUS2EhA0S7hoI0StaOk0S0lVM0S4jHD1hS0S46crtB71hW0SxaPS6cx0Sqf0m6c6dc10S2dc10SyA1NFkHt8D06Vc9ZUjNOhTZKMdc4S2PpQGPxOzxBEhRdB2EhZdB2D3Do1WbXH5K63S2iSEAOk4e5nysMWZzK8p1JOcCOCwvRA7er8KpQeNYepFWAfRGcuukchlMmlMsTAfscyzAQvRdiAV9BxzOkGye9B+lMxMzOrANdOCMBTu1M621+SjMkNdVYk+V7C7+SWoSyfu9jVXOyQbCwdBl1hDjkKf0wYgW6c/8KbScnHmZjJYeCDNcv9LH0Sl1cjlirNc5dCo6VRkBjyB5kBm2BzDfC3je9xfoGYymQEspEeJ4S5NRN4IYfchrW5abYuQUgHSQqpEeXCueaA8YvdUyfgq3UBVkyXV25NRXjB/ESxNRXjB1jB9rc9N+ACexxqg6ZYTQb+SHA6Q+nEpckpcvcSpazLF+xPrKrW5rAXBmU6zP1SGTB7FNTNNcpc5qSaTB5TB5rWoo82BmGFgRO/fWeHgcqDSUGxUDfTXQeGCvJAS/KMySDNC69re8mcbSL5+oxSjiqhotBLKa9VU9VHDVVTBm9VXI8qjVTN/SsquD0tKoacq/CB0CSqcVbtydbAXzMmmB0rqKz+AWEI0XWLBixyoLBgvs0tzGcK70WLMq6NM//0mOkQs+b3AR2BBGO8jMgzKjLBu3TXGucgaYvy0MzCmNBEud33bUzATsulskvspVMtQAArB+j6SFitTSgWBWfCmnhDyS/TaNL+QABGP2Bz2eYgRhlG4mHUGReFZywFFAYPAefoPDmfc9fVSoMAGBfOqQClAGuSNHiAUSbQSRYSNfE71ROGUdiAUxMrACraQULAK8C8oC0kAzqcI+ksTAYQVTWcQ1tNHidiAfLvc8mINRA7BnLATPnUeSPV082oYhQEcEDaAVAQeJQZdMWkge7BheSa7B9EgTsgOvU2vUtW+TsgaA2WkgJ7B8BAT7B+JkDYEH6+TJgJogBQgfDzYPzaVBEiAW9nTLXNIxSD1NVwJTWDOyqTaFcENlOEXMgwQKy20liv3dIaTMwEev022MkeyH80ChCjfkbEmWJmQJ0i8qYou61AcIaai8ziKoPwTnGTawc2EfiLFqaNZCKy25VwX9XUTM44IF51BHSvoKn6+RjoYlcN4IHGyd2EZ2QfqgIHwLXy7jcD2IBVBRUgyWzGk6BQoYcJBvS6V89zESSoGXB330YYmLWKbxUe9yGB6OtqVpMAUYI2yUx4SCAOYwPGgbuAdzGCm4O/AO7QCPRLcqBWaHl7M+QOJKVCBsa9KyoTM6NbU4TWJDgCXBmMtNoKLXBlBgT1KfnMX86N1AcXBj6g05YZ3B4iAZxU8YDRG22wSyulZ3B0b8syvWyB++Mn7YFaxcCvZUlM1hLLGK5HRRyd28BJsl+wPIck6IRwAFL1VpU4T8/fqcb+cu8JtPB8tceyVz8MI0wqAIKcQqu4UgiMCbFSRHneP0jksJDgQmBvw8vNTeaaSNnOGTPdKMkABAgPw8zowadnIqMSsqFi8+ywBUqZdsHemRPSR+kF7+/ycXVSwZAO3BxWAITewJ8f14aEvBa08GQLKvTV0wkmZzma3oXkrdZ4MMxfqSOjoHBeMyacorcA8VL4bfB1goQKcAsPKjzXeQWJU3k0XrCYfBsoUGnofsgPPYdfUXwB03aLPcXWoDUZevtNoikjS/EBiLBqG+T3sXqua0C2kATcYayC0quH9mD6WqUAMzVcmsS1LWFGXycOAUfycEnBgJvD/gUDWghAKPBxymaNyJLZXPBmPBuWLbkyOa+nPB/moPPBq+uhts7JoUiuFeARmqDSch9/RRySHKfPBhtsn6rGP4LNB2EmDsxHUGFgQHDxDCSLn2dNOerJA8SLrwMckb1QZc3VIGHlgFSZB6UdriE7mW1/Jgh173OTfIuSHtvD8uArnfLQu3OAMaTvA/YGPmMi6yGHBycMu5YYquqigBv00iOwbAd+mAvlOUQDr+vCCjLU9BAGRNHctda0ZWeIkAbZgfRgJaPHfmZYwdgoXuWcAsROgSJ0fj0Wa4GJkcIgei8HZgT2laKqRTyEc02V8dzQNPvcLaP0tL0gLLiIaKCwhsDcZIRVayD2oSwhvPC6RWfwhsDcPuWTw0PnkIIh1TIAIhiHLPwhyIhsDcFPxSy6bwhpwAedEauSWvbHqmEgLYBwRpq05mAaUexzaBlDFuRASFwMx+AH3AChUwe9V8gbMQXSKEreZZAKDEMD0vs0iT0klNXaJV8gIcSzRge2eWkyOjdNfiRIh3N6ON4WwhuoA03yeuYC3we5Ut/jU7+cfvYIqIM06HZYlyebpBB9BohgXyebpVsdS4AR4AXJClU+aF4O8BmQGEbmHiQSYAaz+F3QFbxS8kcUyFYhuYh4t5OkAcbBklAOPUjPUzIAY1SmaqTwmH9QG0AXJC5CBOc0hU0qZgC4h1YhvCsV4WHYhpCeSYAATO2ayEYh/kgemgS4h+pJeohziu4321q0gYhwCACXgS4ANvpeOqvfKivM0goH6gE1XWrWYSacr+QyiOzoHgAYBwUKKAl8EVgO+hJ+UnaADrUUyiP1oaaSmS1dF9BohoLbH4tRVEkwhvSy0FrFiIZrjasAH0AAYIAYIb4yW/BdigH8IVmSnhyJ8ScCETkdegaAFATYhxVSfYh1EgI4h3cmU4h2e9D2zQUHW3tc1UvE0u7K2ryIEod36UW4L0ES/NMohlYoSUh5khz2C8yQB5YcqjaUhjwAEreU5Kf2/ID4EOBS8kFhgAKINMiN+VNigKUhg9qFUh/UhjmwQg4FV+j4hgyEIaynWAC3wNdrG78WPISIimoIZg6PeARbgZUh5zpNigGtMXSEF0hr0EQPoGNjaWYL26U9wBDNJXNYqWBuAZoLH79IkIFGKy8kFbxIjoEcCezKNTgEA0HcmUcsf2/HcYCegEreCxYK8tRSxGMh5I8eMhxV6PO/JMh3sZNigVBQMl4UcsQ0h5zpPgAKHycJGIcscoh/MhmFtF1AN1QIPoRGWM0hlEAEcYeloCYhrv/Qc8ZshmRJX6GbIh0boaHwe2gL26VRHDKGb3gKoiT0h/Uh57cTwoUyiMQLDw6LJKOfedgocbKvRaTIUwmqW0hrcKV1WH1StEmQMhy3rRGWXRdKdAachxASFT+KRuj9AVbyQkYWRoN6gGchuytPIh4oSFn0s8h2A4XGbQyiSXHCIcDIh2LsUohzE8PO8fnFRsh+l4ds+L9AEcYVF4a1aEcYVlgeIklzlYTQIqMOpUtpM4Oi2uaW/iMIhvqZAChhHSofiKZuFfQEChzoTJoRZc3Pgh+9A0hgAsE+vAoQh/YGEQhzLyju4n43MQhvL/Ha4+yGSq48uSGHym9CzLXMqKT+7FQhtVFDr+vjtBTUz+7R5lByqMx4P02a5uE9oUwhw/MM57AIhst8Nxk/58Fwh/X6AfdRYuhZsPeyLwh8OoKIh/ic08Zdoh+Ih3N7dohzwxGIhzGAAIhvTRCIhmShsDcBIhoShsDcCKINqeVZAeShiJjHwhkShjShgIhlPxTyad74doh1g2doh9pAS4iHShnwh7gIQSh4IhpwAdKipmAhdANK2USh5Sh6kAJShqyh/cIK36VIhweJd1mDIhtk2xQcLshioiiqWGchgoh5YAIohn5AFobdfib7ESsh3waCusGBTB35EcYWohlshtohxyh+AtH28UzWJjgOjEe5U96AfLRXbbVQ5ID4DocfYwPs0lpfUgfeKhyuJVQ5GYh74hulyJYh1bQMqh+quZ4hoyky6MTTddkh7Yh2Yhl4hx4hkv4LkhqU0ru8U4huEjThme4h3Yh9FbSqhh4hoD4G4hlcmHqh5qhi9SzwhivIak2Ps0vqwL4hh4hoqhkah2qhk0AWFtfqccpiV5C/6PDKh+yQVjuiEh7cqn5AK4EN9M+3+OEhkVgBEhp8hpoGFEhxqANEh7ozS6AJF0LEhiJAHEh72M/8KPEh//SNchz5OM8hnZqXp9emtKxLJqh2qhkB4dQJRLsAaUQicikhwEAKkhmkh/d6DEGfqcITgJv6Uc2CRyfqcDQ9D/eBjgAlZDJM2b4NtPW3tFGKqMh9ygBqh8q7A4hpQAbkhjqh186XkrJGhsUhoUh47UkUh3fmMUh7vPZMh/N1bBGYshyUhkmh9KgF6oRUhqeUcKhmUht0h84vANBzkdH6gTUhybxDB83KPPMhyKh6KPCKhgcYeC+WayGKhzIoNHy6GhmjgWGh0c2E0AVQ2aGhi1RbJfMUWUJiOxAB9yvKhkcYaahz6hwohB8hv4h8EoHvlfqcE0ki3K5jgI96LeMcFwFKh8pib6hrKOpahz7cXZWHJiVZWOf6VMAc2hlahm0hrx0IFAX6hh0htsgQnAbmhvUhsSgd0h3ouKmh5mh5KhigaC2h4Jia2h/gGL2h+5QKmhvgAJoGc2h8GhwkPMiYc2h9oAS8AGUkwTgYVOynSVIwaPUWMtYMhuseeOKybxO7tH/mRMh92h0IvfMhszAPOhkreNz1A0KRzgFwAbWw6A8awqHMh0QOiUh/UhjjkYch3wae5cZRoUyqmvcMOkKuhscQLNZduh9KgfwcsZnUldRSxTH0tMh7SxDMhuMhrYhruhzuh2uhsSgXTRfjARmhlUhvgATy6BuhymEBnwU0AQshmehkshwymRuvaehheh7xgWOhy2huqAIOh6o4ZI2Dg2fqcVGhQOh5PHTQAlKhqOhyWhpZAI+hhHcCGh6BylV+4WhppJf4jGzNfAkk/zQBUydmLsh3DzG+hlahsGEWOh+Oh0LeCWhrvfMbDR2h42hrDqVehioh0chksM3yiCch+rVeQabch4oSKMqiHxaBhrx0Jch6Wh1Khlch5DrJ6h9pWYMhzch+9AeBh7oMil/KaMXBhmMuQ8h0zmS8h08hmchi8hgKhzNuxqAW8h6rse8h34hxEh58h3C3Ps0jYEHfOVuk+l4D/iZWhiJoP8ho6VSChwfiKgyLLiIAgCy2qyyZIQKKAcChkbGPEwzl3bNBvs3KDEUIUkMAPOAIahmvcAMQaemMIUyZAOc0r/wftgFRhoqcBRhyZAJcmftgMqKYtNXgQOeArCWjofEc8XuODqmWNEfUAKE21ka1s8LOHds8ULMQ3NZVwYivRtacdYRySwPQCAh0EAGJQTzgQOwaaSWFAewXXhemSmNs4ON80jWIj+NMAWmSNrBjNyAo2DICkeh8ZcPhh3KyJd0xdRR4NVOadMgZUyZ0wOM9EtBITCAeJYf7Mh4Pb8VuhrJQZhKz66J8u9Jh5RhhPWEph9MgbvtDEgsNUDJh0gB9sSUw1TkmB0iODygamKJBXSwEqmKvVFUmJZNe4qW6xdP8Gch1xafHUxou43oUYfbp0XDzTLRW0eXugbLRXEmei+JRq+iAE3+pRhwnMkuSYZhucctU08Zhin+quB77lVukOV8tkmA0KcyQGaiiD3K9qZqAPqwUHKObi25QJphnaaILWGkmNphm2aRZNb+CB+hI8hy8h1xaD3lOdKV6aSbVM4JUne04RFCcZYuuxgT9AHcmUfwOZh7Mgb5hy8kL/wZGgF5gTRhmvcNfiHcmf/wPnCYgAOcmMFh5DOLjVTU1H5h8Rs8FhwFh+PwCoUgFhlwASFhtFh1DOYJyL5lSFSHEAWPIT3hfLQpChxM2qRhkuSfpUkagUJQGEKx3iEP1KjwIiAca+G22UkjUagKlh/tUvXoR8KH3gQmh+c0zpqP00UB2LM4W5QE3++P2LUhv8uauSc3+pamcAILEKgaABVit6AeZBHgIYkADGQX2gglI4kAVQA+ZBDzwFg1MGEeZBXrQUNVX2gtAID/B7hIDgaA9u20eWKUdCMdvnFJh5qAaSEIZjaph0phu87A0oez8dl8Flhmlhx7Mk8EGOOzMhrYh4p1Fs4LVA46ixXYHeB3SmdeAdpAZlh80oZz8Lo+Y4fTjAExyHLw+XYSCmX82BuiDzOtGhsuhrcKfphm3CzkBs/W46oU5h1YoCpAa6mYKUQo4IAIR4MQdKN0Kg5jaSEDzAaQTV44Y4EuyhzNhlmmUx4IMxAdU8amPBkcFwAC0HwKsEOm6mMkISUNY/y8AIHsgw1oAf0urlUp2qlwVbsEyQZamNngUqAAC0UNVARgMkmID4AVhzmh10pBP0pSmYA8EsAVNhoyWT4IcJwDEopGmbNhu1h2k8XNhvR4fNh/8EZthr2wDNh+dhxymcthjymTTjKthivIGthv6utNh9uABthpYafI1Ddh1PWgf0jth0HRJFcw3YF8IJamFgINOzXSmT5yjC0CGmHDAEueVxiuGUf+kcmmAmmJlmfth2khF9h12AXrQd9hiNkO9h79hkfwd9h7mmbueL9hz5yk6mQWmBUAcDhzyAcGmFKmYI4JDhn9h0DhpGmXp49DhyDhlKmaDhiCqIDhyDhhDhl8yNfiMuhyMhzJNZB4T46b50jLlAo2L3gDYhmNhphaB0iZKaEdh7UhjLlPd6GqabaaYQ28bNK4KrSmCthkMxI9aWjhiMhl3QHEh37VC2EOX/Q8qUDS03+q8aQxK+J1VY+kEqAV0dPKYls1UmSamMo4FBhQ3YB6wMGMSY+emaT82dKANimL+kUNFRDWjpwFl2knweRwGYIZrJNeQYugb+QDZ4Hv0A8scnvexxEyQAV0I/AMkIduAU6mFq6bXYexKjFQOzhllbIgB2KUSugTWafthtTh79h0NGEiQfThs0eQLhzyAE9h4DQfDAbVyN6mbCAPThy9h7lgIHMFRYdJES38kiA5IQTeCdekow8aaS46oAficThpWaKSTW79btSMGwGhLK+JcSckfwQo4NAINzhwCQdeAJCYNg2jeh9fwfzzZ5KZdVT3u5dyG97eYgJkw5qUCghu4mf/Bv0QQAh4Q7WNEPKAWKUD8mI8ANWaOsmbmmHUIPGmav07aiPNYURQTmyac6GtRbZiXqubZiWEoB5YDYayfCinCn1VOXYTiaY/wMl4TfYM7AMPYfThyi48gAA7h0hkKHgqLigamFPxY/wJoRDu4lxWNtvHrhjribHMWjgROhuGh0S4fqcS72IUWRJiQBhwC2Y+h/+h57hyGhh2gMGhpbDP7h7YGcigMGh37cQkPThPHWhuJiM72MNgLCoYTxVfWd8DZkkZah4Q2G9AY+h3eh/eh77h12gWWhqjgJoAQ8yAHhi3KkHcDwktHh0+hjnKyxgfHh/Q9LwzUnh12MOHh3WhqnhhqgMWh0JUvIAbVRNjpXkOVHh288VGhLVRWWhzHh/jgDnhtetJnht7DB41XkOW/EfqcH02uQNOcyRnh5nhwXhgK2bzAMHhucyEjgDUksdAfqcG7qracFv6NAGI2iTjpLIefqcI2QZ1yUHhhHcY8ADUk90kRDOly2V8DAjgE+h+/kz/Abm8HWh37cVwktnh2QkzHhpT4e8AEHcWIuTXho3hu/eLC9a0Cx9c3ooIdQQppbl3MyaDACWNEXO4Dy8EEqbQUXaaCXEDs0f6aMJsbUW3eBvnUoMmEkANlQq8A343eOgXsmS7oFMmCcAK4K30eAtISAZPXApQ6MvnL66avVQTKBd0VAATqcaKIYaEZwuApAb7JXSwQ8ABCmJycqCmIvhtMABkhYWmTimciBWO6rDu6+BksSV4+Q36dChi4GRK2E12cAIRZ+8WQjK2KKWXCh2QhgiAROgPTvN987oxF8CEiAROgI8eNVwVkkL8gW/EepAKlwZkkDqAYfsVAgBQeK10EW0WQ1MdAMHAGJkb8CcigXfSJc4mlA2LKXbyNXAYQIbxOVYE5y8MS48xSazQvQtOigHdACsgcigIi8QdhwsoDS2phh0IS0Q1QxKL4kdNyckABthrzAckAT82YkAIdQcmgfqyA8mJjhzkB64ALf5UotXkmZC+PNEEmAF6Je/aPvCfZCqqkZfwPkAfmh9UBrehgrMJkua/efJh63+RMh/YBcwZMuhgey9sIEreeJc5MhguhqV4EreCK0ggRtPcNigeV2yaQeggKgRo7YNARpmhsSgKsjYgRmrEdgR496Km4Sy6Km4CBhry2maIbnyHNAZYAL35NgGSDUnLPbM8+hIJdAKkAet8om1JmIaQR6SgYCXdfiFfABAVKQRlfAC9aEE6ST5cgCrHudQRoaeMKhzSoBE8ndGPgRsuh8Y6Km4Q3YL/hySQNsq1viZ59IFwKT5JFQGwR9ygcwRv8maWYZbVBwRtPcEwRtwR8ToZDhwCmCwRkmAbJyD9AojmFnMo6cxKZWWIEMkscqW7aR+AdQR0L+bAoMIR1XISeKUfiL3carQFMNSIRwTIBJ+tyZUXAb/tHQRwTISvOgLpVlcANyXYIM+QaSh9nXSSK9PcejYJ4xa0yN/RFIRvhoM65DR4NyAILWYXlWJ879ieoRwaumIRwVqF/MO48dPcTysGSkVPYO5/KSTT+iHaoM1ATQAy06IwAAYRwvecSsUKQbo6HCyZ5KX/W+fAWLM55KNoM7IsWuqt8SpoRwr7UUAP0mX/WuoR2UMCfWndAM1wcSsb90NyAfqAREeXehdYR7kANYRrdVVehE4R2uqw4RjYRs4RpOAU4R64Ri4R4toe4R84R44Rp4Rq4Rl4R79iS4Rg4Rj4R74Ru4R94Ro4Rz4Rt4RgamPjoS+aFVwHfwFT8idKUfBJhSbGmDQqHCC6rQBQRlmETaySTsEdy0VYBCuxdyeYRxoRzYRvEhImAQshhqMA2SWcIX8mEt4SSAdFQVZSlEgUbNfoRojaQyuYYRiG8IjaMIoDvBohK/wcu1c0GBEoR1lccYRgmVSSK8OodIRhAVANgGkRs1ABAVKoR5NgrIRvhoCnvcxAdAa30quM9MOkP2yZ7DKURys7Q1sGiKElChQRzmyRzOgURw51RzOtQR7IRr8hj307LuZOSVkRxUhgssuvgb1RQkITgVIjaZC+cg20YIBcqCrKb90FFvGDtSBEcYRrVVX/IQ0R0Q1Y4OU0RinvLWKy0R3bhy/wKdh2FQdiUGBM8Bh5nqdlYCW4XKO1hADkR57DYeO5YAFfAevlCkRs1ASRYXEiuYwS50JVocoh5nqPy6b0KZ4zFY247ARMshMRmUhq1cX54HAR9MgMOkP2IfYwbuhpUsN+VPgACSYbZyZL9HRtOEwbd0OvgFQgAUApTSF88XmVE0Me2gJxASsRjpgG84GsRg8ASNAesRw9QRsR+684sR0IvPgAdpAXUJBgR0vpQcR354Q6cnWYEYRojaegRnkR0YRrDB03SN4IZnAbJAdeKFURhAVU3Se/tLAAXZYEMR1TIbHxGb0SvpWSU/YwfcRj3YbAM8bA4xYTSmAkGVwSR3SbUR0oRhLCQ8RhyAL0sIWoLcRh9+TcRqcKSkmNbIU8RiJIc8R8Ooe6yIpKq8Rk8RnIQrXXfbyf0QNkYG8RyAVE0RvcR3ZYY0Rs1ADz2F8R+GUCOs0WEPcRhyAQlQF1+WcR6cRxCRqkAUqAaFgfZAEDAGV4ScR3kRuvgUqAfVyP3GQohz0h5nqQNEW3iTqmBd0eXoakRucRwiRudAdJySXKKMRgiR/VyemMUVeSFxRG8vCRucRhkYBuUCoITiRojaRcRh8Rl8RvcdR8R18R68R0IKL8Rj2ocY6FUR38RvPma8RgCRu6SbAoKSR8MRwTIV0yALpHIQsCR6CRiCRwYaWXmA0RrSRyAVFUR9vCofMIURqkAMXAbWZXIR7CeetnBURrDBbJyc70KyRwH85nAUERnRXEQRgphdvi1cRhUR9QRuyRjJjHtUGiRojacotThU2IR76O/yRzDRfo/FJyIofBIgToRzdsGqKJiR/CchkzTyRvucjFQB5YYyR6kmDcR/cR4SRl8R48R98R8SRmUR5HxJKRmSRwyAOSRvDYOccxSRpKR1SR0CR/URsKIQ8RyCRh9B3SRyqR1ZpJKR790YkRhAVe0CgKRuCu5QRwTIDkKldMtqR6oRkKRpmgFqRlGu+ERiOVLSR7cRnKRrqRqkATgVESRtKRo8Rt8RodcD8R4gACSRncR3KRv8R98RnIQ17AA0KD3cMfIDIM3PIJ2CySRpKR2/A1CRvkRzlQXKRz8YDQnItIPtbF8kew1EiRn2hyehyDQF8ldKyU3SXKOlfATCRhRqpKRl1yK/Se+QU6Rq9QMI4C6RoKhheh57YTrSKy+e64JI5SmEe2yV/Fb6R0ohq6R4sKYZEXyYdI4N8ySiR+SEaiRviRs1AOiR+TgBiRvm6KcRpGRliR6HweOAdiRhAtHyRs1AbiR784KGO/aRuvgASRpGeCaR58RqaRsSR0VIeaRkaR6SRmH1JaRmaR+SR+0R9PAJSRpaoPhoUqR9SR8qRmCR/cRqCRmqRkSR/SR5SRyPHQCRlqRnqR+aAPqR44OCKRyB4ZqRjyRoKRqOVemRrAR1nja0yFqRykmBMDYvgSWRg2xNmRkyRqvdECRvIRyyR2WR/1EGyRnac3qR4KR0C2cfjGBMwxyAuAgaRqOVBDSDWRlQR9yR1IRwmUDQ7ZqRrDBemRmCLVoR+yR974Z2RitNZmR1CAFqRxcUB6R9qRvGRuvgQ5KmnddaRlyR7M81cR6g7JWR+0C4WR/bgbyRxGR4ORn2RlqRpQR92RjJjBgEB5YfqAJKR0g2wSR1KRimR3ZYDKRmaRrKRooR1mRiMR+mR2SR/8RwqRhSRh0RkqRkCRzmRnSRiqR/mR6qRhuR2CRgORyPHBqRrEAejaJWRowdOER3qR4shiOgXiRr2R/1EeWRo6R6wZD6R0GR6zu8GR/mh2skF8lNvtfyRvuR8bdeGxUOR5yR9X0raR7KRkPxJKR6mXZyAEGR49QEeRoOR5FYTlQMGR8Bh/Mh7GR0e4OeR2dqUqIKDeiMRhCRhOR/eR4AkM+Rw9qW66UBKJyRvCZcOR0nOgkGDeR9BmBUR+eR4TqB6Ue6RrOR+mRpOCpx0eWR+mMcnBbeRr6RieRo+RsSgP6R3nWBHRFkoIGRh2MM6RgXCoMRreh+agPdpNNyahilkJDoRrDBEy7VWRq3cTKyvX0koAEWRjabBMDLzIfN1Zxza0AQiAREoa7NQohgtuy9ADyhuwcGrEOwRgtu4wRy8kdIR+hR4cAEgRkchsFDEl4e8TGVxcZgdhR2fQKY4M1AAtumCh8vSIrsXTdSBodJzUQRm6h3gXN8AcyRmxIXhRgLpbKgDriRRRm8RgRRyJ0AtuyJ0NhR3hR7AoAtuojaAtuiaR3hRzKRgWnIxRmaR5RR7iISvbeDANRR0xRqxR0IKARR9URjgdXhRweRkpAARRmIR+0CgRR5qR7+RiSwEoh8gCpxR+ER3xRrhtdGRw2kHRR3/IEWRvxR/m2UhR/2ZCOVOITfm2NWR9xR3hRvQh4vB3hRt9qTGTTBR5gASWRgRRhIRjJR3hRwyRXXcK1UDUhrruFFhocPEN0AgoCYQCXgfJR9mhwpR6bxduAIcPIcPUpsanDLZdZzpCpRhcYDmhr/wWpRkW0bayZnYBHAUpRqJRq1UA1SCJLMpRw9cFYAfpRycAHEgD3cTVgWubQL5AKgAtulwgB4FAtusZRuZR1wisZR9/AgpRncmNpRjGySVmbhJQgAMsYFpRqpRtpRrfhny+bpRrZR5hu45R2gAMIRgRR9DaM5R1uKARRtEkAZ1SpRtZRmpRg5Rl8kI5RsRLVSQBgs06JJhRhJR1IvMuh1lcARRwGR35QG5Rz5RkEtUIvSKAARR/gc85RvxR9TiCxR/InexRt35GNh3hR7KgYwwRTIANEbuAO3ysUMZnKA2xLSgM90O/qNeh3lSHFRiBhhJoTaQeKZG0gKOAU3iPvCUTCHhRjgR2wRrhRxNKDpgHofWlR/hRpXyN7yuoAqJzBlRuMMTiES2sfJoWsR896PhRuMMDIeJQB6RRr33JHgYQRvCZErQHSaFUMJJsjTwNgmI3iO7QNFRw+hhmMNrJbtSEGtIoRthR6aul2wdIR1JgKYh+zLPIcsKRqPcdxRnUVc8QbZgGWZWJRvBR2/iDoR/VRmOqpohpKwaGIdJRjhoUqxQhRi1RycqI1RgCgQhRu1RnVRyJRkWRg1RxJRmpAd1RtQk27ilURweJTQRhERmx4G+RwNR+6RkNR5xRgZ1WT6EWR4BR++R3iKOwoENRwxRrxacUkB1hZEik3ysNAe8sCR4I7sbcizmMdFHHZmJ6CA1rPycuzAU2R70AKn7TmyCyGAamZ4kFnkHaEctMflYS8mTGmLGmYtRhBLRuvIPUAdQUKKO51Qpgz0eejM64AePoJAqJd0LuSI/OID4QMgU8cxEwaCBMKh4TWXlR5JsPZyIRRw2kXq4dVR8xRmgqDEbNhRocIJdR8xR8FmNSRvDYKpBrkRvqRE8RhdRoLWNX4SA9HURgWnFdR3dRsDccFmZaRzdRw9R7dR89RwuR0VIWkIXRCJKSd8R8xR38R9RQVguooR1ZRwVhrD1dVRhR3FEbWdR3ZRh5Rx9RwuRlyBcFmXRR+5RopRpdRn9R1ToUIvH5R49RskIILWYa28PEOwRthRg7RIkOaDRy8kVlcEDRkgRmNhsDR0dhxDRsuh9IR2l1FwgGNhpKACuKKDRuwRjDRvbgJhRl8c1DR8jRxZqKiKbZgDySdfiQxyPJS/+DCRRnsAR3yx9AHCgc1Uz6Oh1mYe6AIRxMAIbhnpoZ4srDR1hRvIR02RhSRkTRlwALkR00GBGR4mRs38s/EBGYd1SF4LaKR8QULGRsNAHGR5TRoJRv5UEdsUaRnotG+RtGR/CRm/MHUGOQRh7ABQR6soRPmCeRp9yONWFUR+jBjQ7OTR1uRkyR3J1ANR7JCbeR86RiBRrehm6RvbKNyRoNRlfABvdeRRjIRhBRi3vJBRrHuSBR+prVR0O+R8NRgmESvMMeR7liQ+R36Rz/eGBRrzu3zRkzRrQRlSRlyAVzRx6u0LRlYMP3qbjRt0kPkkROgd02YC0rdyROgHYEvkkQrR3LRqzxJVRJVRcrRpSiYAcTfuAfuZkkNpSIrR70aQvuKrRuy8b5IgjiFrRoYefvVfvVJrR7jR2IeZ1mABkNVRPrR2rRpVRfvVJc47V0DYgDrRqKDJPYPPuZI1H2CXoiNpSZbiD8h/cACT0iChsNAZMvWJKXBkXweJQsAo2D4h2oho+qZZO18hjxzNEqbcYb8h4PgNEqQUof2AG3gI7RqahgrdbKhmy2jNyTFR7wAXquamuH0MDpgVZ6AGPaiwKZufRRvROFhAPbR47R358jthIjmXeTKDYScq09OU/ke51SvNb5in/kXS8ejMriEGLgSUrK9QXkYPO/IZjWTIFy0FgR2ehybvOhRwEANGAGNbXqQfTWTlHd9SCGRyWyeugEERq+HGhR5LfNhbQVRhGAanRj3+ulHHHR+qAUdoXU1XlR7vtDsRtIhwfFDs8F8kTnRkpQuRAN3iBTfQRRykRkZCN3iXPAH7RyCM/8AVbsc9htzPGdRn9CMHIYBgMugKXRwXRyCMn9uVVhxXRsXRuvgMq6Mb0CsKaXRojaUWobggUaIFBKKCgN3iJCmHXR8XRkXAPnRydLJXRjXRiPMZ8mFwR30aTnR03R63RkXAfDAXamHS1I3Ry3R9XRlXoZ3RmtRA8MN3RznR2WYA8qbZgD/BsMNU3yeZBXXDJohrDRH8IC3RqVK39GT3R2GgLm7OPRn9uXHSRPR+SpWseTnRk3Rq3R0Sk1cgPDxB3RzPR19uJqABoWSGmHS1G4VOPR0/wI1oJGednR9OIcekAZzRPASTRpY+dsIV6VP1SURRiXsPeSOhR8yJCsQTnRsI4TvR6PRrvRlPWnvR6PRgPRw1RwqAYPRpjRn3KMPR2Xdb1RyPRzeBznRuyWMMNKJzDotIEdD5oG8QXPAJRRsDcFaOMkIUEIdPxBosY1SUfRmYqcfRwPRwqALDRB5CyfRwC0YugGvoA/RpbgTfwBmaPthrARkPRlfATjSSkIS4iChhAkIWgAGMxYigQH9McAGVIRnANOyQyRsx4FUR/iAb/R7KrdctFMmauSQAxobh/1zFQgSmi9ctArW1wsQfRl9AGW+FPR1cgFk4aiqKqkaXRwpwekA8Axx3RrPRgvRsGwB/lKm4X8pSTR9IR6dSPPRsvRg0EcPEQb8ivR6Ax3WSLlRw9QWvRxhRogRugx+XaKb6bbsqc6KGpBvRxgx9ygAgx+gx0TRv4tfZAdPRwCmLAx/PR8JhwRR4LikvR2eRabAcCYQQx0gx3HSKm4Cgx6vR2sR6gx9nR+vR7gxzxEcPEXLVKi2NAx5JgRBmRAxnAx279TQxlvRq+eIVzBhgRR0OfRkdABhgfeABhgMp1eAxq+HOPRmMAlAxzLEemhhp1El4DapQgxtTrUXRmXRzcQOXRmQx9sIOQxkQqBQx+Qx2gxvDRy8kZQxpgx9y+ZlZVgxjgxhF4SIx1guaIxpDR8lBPqKxwMKd0dDKZvRyEAXkK2wxrjdNBaDPR9IxrSYN0K/QxyEAE029rHDe85eh4lYVbAfjwKQxrwx39GWQxyqBPwxzsRgIx9SkIIx1Qxqm4dQx9SrH0ZYflFIx9GTUwx7dAdyWeV4D/R10Bo7sKawKwxjxDBAxjwxtXmWt7ewxmrENkRpwxmrEMp1FhRqTRtwx8ox8vR6Ix3wxmgxwcsOoxkIxwgR4Ix6Ix5ox8IxxwJcPEdYx22QFwxlQxgjRhIxlnwZIx8Qx1IxwQx0Yx0gQTIxgQxvPRq4xvpsf1hvdhvIxjGyAaAUS4TnRuZgMl4Uoxs7AEgxioxpYx6oxlYxqvRmox+ox2Yx/Yxv2/MIxvTRH7vXoxyLJHoxuhR7vEXwhIVzQEAeBvBYx8nBaIxqaAF9tWYx9IR6yyudScPEKaAUg2hoxzExlyAfgx4bhlYx6PRoEx23Rt3RoExqUmXox9pGdDGOhRjUdVbAaIxudAF6JPTRTHR10hyehgUhOBRj3+7zAH/SQtIew1MOhvUYA1XX7AYbAbASGTMOYiKNAGwAmLgXox3HRjHR0iR5WnX6gcUx00GEC0Vkxr0hqZ0GHhaKRiiMD94Tox7JbXHR7XoFnRlJRpWyUU+8Umb8AeXoTTRwzRx9UJTRrUBaKRwiytTRt1AC0sDZsOKRgZ1XDzZ+RjaRqjwVeR4uR3aRxiRrTRwlQEeR/hADLRlkxsKhjzRk+Ru6R0IQQeJd6RsBR4LRgMxknRhLRgGRuBR35QQLR8eR30RlBRqGR4USGo1HIeQYx03yA0xqfyVviOGR3eTSeKLqKWTR6KR37AbJ2xTR0xSwsxlVwVTRnNwbGRlTMPeRgmRqOGSNR2JAAzRucR0mRpKRqKlJd0D/+hzRyt1HyAVKAM4R9SSYNncE4Hsx9dyPtKd6AfqAWmSRc8Dsxs65PYRsl4IcxgcxvsxmqjEcxwcx7sx+cx2cx4cxiwKBcx/sxpcxymmRcx1cx5cxmcxzcx9cx7cxz27VPiB0xkiAf1yRDbZNrfWRpIRPeRr0sesx8RMrTRoMEY8xxcRokoZ0x1+R2iiC8x2KAeORuTRvyR+sxy+R9qR0WR5OSDhoY8xtV4NxtNaR5eRzaRt+R78Rj0xxsx3yRw6R3TR69h+Mx49QOLRiGR6eRiLRkMx7p0aLR8Mx/0xy6R/mh6BRmMx6QauMx9LRxBRzCxn6RpCx1BR3yYTEjD1gVBqq1RrAgOB+p8qnBALiAZtMYrCGyAYgxuhR7AWdLgQEAAbrKXwDGy8/B1IMdARrAVTkxzn+6t1E3oH0AHR2mPYRUMZ0xmRqR4ddtYQbykVR3tAOYQIjRjhIFPW2OcCrWF0yJsWXPAIjaJBRi5lLTRqMNQWRqkAKkxhxR3SxosGVCx98UZkxvkxqeRsowBh4GnRl8CH/SC6ScIwQC6UmyOlR9cyejsFnRqsR4XRlX8wCmIEx0kxlYx8kx3uEznRskxuzAV3Rnyxop1Lyxn3Ru3R6PRpCmS5zNehzyx24gUcRmamOzVP3RoKx6Kxtehl3R0Kx93RqtLRgR0shkKx4vRisQQAxvyx/yxpIldYgcAxjyxnYxm4VOEwA8vSdRlayOEwX/R6IxpeMoUwW7Rpsh2BoGk6GTWqes2D4MlRoojDxDIkMhbYP7HBhgP7HKawP7HHfEUElHfETTqHfEQQ9SVRrJhsr4ZWqwEAQJgJJs12MRAuf7RuqxiH+Sn4MqhkThwUc1Yc5kRw3NDFnHbrEGtbmEa42gUu28mclR1nR9Pczny/jYU4AFYYRFUq0x7ax7JASFBL0sSvRrWGFYx2JKJhACJtFrtAt8A4tb9RrbHBAtQiEBHAG7WQveAKUzWRksaRdMjhIYNRtOGIyxjR4HDR7Uhsj8AjRv1SCURheIds+IlQcGxjDRuGxxZqL51ZkRhGxhvUFMNfkxwoR8mhgvBf0C7uh5Ux/N1RzOzGx3iR23tEMgCagZ9oG+RxcRwHwXD4X6x/xqz8xpnANQcB5YbtPXORhmx/ORrSwTKR6mRkOKSSRkCmMuRwyAY/QZOSeSR60yKroPmwDdR+jYEaAObpWLM2qRnRaE0Rpmx1ZpNn7LtgD0Rl7AItVcgC4Zs+zR+WRkmx6jxaSRqDAaKR/6x+QR8gChWx1+oBmxhyADWxrTR3RkaKR9iIN8xiLgVORlxR+WR22JXuR8+R3iRgmxydi23tWB8xMRvKAMTxSdR6LAM8+c7R7wAI3oDIkt0oa2cEcYFQADsDTFwW+AVsDcBACQ3UDvNgIW7h7l3e7h7PhuM8TWQVm4XhRiPMARRwWkOWsbXNaFRvN9VcgAtun9uCFR93Kw6ddwyBitLW3AqCvOxgC7OXRm5R3ZALM4fjvBOwUaULrhlYGaOx5axm3CxkRxFynynAJS4rOypSwQyuuivX0f8YaMrRq4bT6TGxuQgwsRrNZEwWJPxWUxmwA5BTcgRrNZckfVmhrNZCoWM9W5UxguhmnC8ekfmhlmOBdC+7QVuKNeoFLyMXzU6AMkgXgYVyGF2wWW4V12IoRtuEp7KA9uCLgNdRhO8SKAYIa0A4KdQYIaxAyIcIRlIcxR53YV94W+x2m2++xjxjH4ySFpSamU2RihhBIygimMkIQ1sdpAG71dpAb+xuXYX+xm5AbtVcLyZlyT94fQMeFseXoT0KVPYLCsWzAargzmyXdmAisPXAEAx0KxjCYdER79h8AxhLCHk0DQJL/wbKvJmsYthg8MWKJS+gdLASoSbBxqRAaosPRCPCsDXAGYVECSshxF4oJGmW5sCREf+kIqYJhwCeQLyhg5U35QAsAAPVOTAU8DPdxGrsSQINhxj1QULhj8mEwAH5EGYIeuSTC4UqAOlyL+xtimEBxtpAMBx6wgIcRmPYMkIGhx3AyFfwEGANFQWNKbRED+xnGVIBxuGUBRx/+xxGAQBx+RxoCEUBx0rkFLgEFyY3XO+CaBxudAWBxt4IeBxvDARBx2NKbdtfBx+lyQwANBx4vRixJOdhghx/OEWbgbLmEgIMRxyhx0SYahx53Yb+mfGMTjADhxk5yA5U81228gfhxh+EYqk4RxhHe0RxltMYiAekAuSAK2gykYUxxn+x8xxgSAf+xhmaWRxnJx4Bx8xxxRxjHwH7iDGyY7AVRxmRx8Jx/F/HdGJ8h5n2mv8OJxpYAG/fFAk2+xNR8FhxoRx5/jVnwBxx1xx7RxkGAfcvelyD4uMfHS5sC71WG0XKQcbAVTsBXVBpx1vE2UCZpxjuHVpxotARipTpxnwMBAYS/+JnAUzAXfSLCARy6OdAekSTHVEGADWZHcsAs6WNKcSsSpfc5h9DqQkGOXYK0RsZx0RkBD1BVyWGEZ6MFgAGpx+TgPZxrPlC71H7iJ+y8nAUqAI5xpBx05xzBxi5x+kSOGUa5x3I6CiANucx2gb5xw4AY5xwUbP5x85xhpAS5xoFxj0R3I6b8CDpwe5x3xqMRTPZx4fBA5xiFx4tEX5xh5YM5xw3Yc1BQFx5OARFxm3cO5xgvcXxqFDABOihKADBx2FxnZfIlxsJgf5xlVweFxuUAfFx79hulxuXYawgTmyDegGKzVlxzyAdlxuGUawgEAgkJgRlx/lxuLs1nAZFxppwGFxw3YSpfelx3lx+qAZlxhlx2FxmVxjlx45x9ugMl4Klx/HYCzSRlx5VxgVxhOirRZOVxnVxuLsxGsxGsqcxq8mZOgkXWzmyK10K0BepjKC1A3MMkIZOc20gMkIYvIJQRgmx3J1Mex9PmbKrZ2xtQwTPCkiQECmeugYcOBNVc8xiGR2c4cqAZbgF5cHkICHQcviQ9+tqAUyAJSRX54S4/DriLHgFXOGAIPP8jzS2Rh+9A0lhy3OPvhr40r3huPvSux1K2HzQoAKU+KR6yPv0+KAUic8icryw4qkkB4VgIDrzeqgDC0MqKNxUnHNBBx33RmQFJPxZwRx5tP43cxAbLmC7RbToa/RjPxAXMcKx6/Ry/kYqka7NGrsBJR42UHIMjEbDpgC5R0a4S4AHIh4EaFOxggoa5R3hRs+8hOxnFRi5R4RR1wiktEFShxRR35RxRRnzRdRR+y4RRR8OoPRRuNxhFRndxmplXGTbXNQIi3hRn9uP5Rs40mZRq+xtPoVwiyKABdRnJRqdQN9xvX0+ZWXhRvdgJaAH9xxRhGdxhuKH9xrF4IpzRWaehNEdhtpRlth/kJPcDYdhvZRx5R+bwS9x/jkqZICnDKdQQyRWhRhEIexRi2kRRR8yAFFR9QEI3iDFRhPWFqxpVRp3rEcR3FRiKxiohlsqCFiKGOmZx+aOuEwa6x6AxoMmNlRpyvNPoLhh+64QNRnzRFYhwNRwkCFJyNugTUITpsUWx9S8I+x2CCEzKC9xhwueZWBwuNDxhU2qpR//wMMBBxIGBAAQcWm2yTx3Ue6TxrFNL8uyzOTcKGm26PAGmkRAuLdIDvBgjxvvCcaO4jxkzwF2wPdxtohg9xkNRrGAOS4GKeBiScIBGgqrah1TFFhUgzxszJXqnHZmMk6fUAEXlYCxpKAbMKPDAFyGW0eBAIRmMSRxtqeDvibUWiiMYtRjhAHXOc7AEI9SRrBaycxRv7HEXKDRRgpaSdRh/+bdxjriEoKOJqWzxwbAHUxXqgSNxGWBxzs/vobr4Nn7d9RoiARNQVxsxah3YsPvCJAK0NgH/SJlVduxmdaQbAGlc+TgSIMNUubJAMmS5TxiFhrFNXyUDgtKTx9rxlz8AmEaEeZoRfZAUcqa2cw3YUiOzMB0Vh7/wbvtSKAYbx79huIUAcBpamOs9Sbx0oAA2SQ3YA8sObxxgIQbx2OQabxzyAUbxk+JB61Tbx1yUrrwCWgN+Rh1EDnmEIhgdQCFeLotOqURbxrAAZbx79hh8ILsRuXKUoAI4UJVRJhSFnOk7xsagEIhlx+SuOc/AUcqeZWCDpWOQBdR2/EYcyeTxxDgLJ7Z+xlSh8NgTz0A/ilR4CNKv9ICqAi9JJR7DdyEzx2DRwflFLx31qyzxv6xi9JczxnomBLxtrxwVhi9JeIx3hAPnB5Hxg2QSDGLIaA5h18qkT8fMSUfKdexp/eknx3PIUflDHxqCCXUoXgYa3y8lBAkeP+zWnx0XAC9JCegWG0Ex4fp0FZeKGxk3aA+x6nxu3lXexz+S/I1NkKsnxoXxwKqKnxnLVSdLGiKHnxrF4HHxg9xgnxlyBCsQJXxucAKjWnHx+y4Dg2Lnx6tMpnxqoVLexjPAVHxtwxrHx3gYKjW98UX8IPzdH8h07RwpTbhhk7RiEgaAYGMtB3xzGCCEgK7Rw/S9hhmohvWQcsaMNAQkxeuSAo2R+hqd2xwAaAYEptIPxnEhgJSgMKBKeo7xkuGW10TKe1TpWRXY4YZGEeHAOvYCigCe+qNe6nCWDxn5hqAdIqk3OQAfuAYE1kkG9AIgeIvuKzxRH8qZ8SzxCNkEC48OCRzZNfuHrVDaxiHR/cAIZjf2/NHRoEoGUx/kxmkcMbrJHRo5GRJrG0wGrsRRwPoxCehwUaM+KHMh0JfBeh1RoCUh0sR/LEWTIKg82UxyDfITxg0PNdRsVySuODGUOaJAqAOxxnjQGFkBaICwKzDs1nRmgMPvxjhgKd0FDAdoAFPxE0xw2AQQTPZAAVyTlQSpxxKQWQ1QxxzCRiWgf+x1nwJGmMj8NsRgdYQEQqYYJJ4Nwwd4wanCRq6JCmf6ET/AVq6fcvbyxhqgL/xxpgGZAUswH1IcOCMI4dGTMFxlhxw8UKd0TTGFOxr6xiWwXXRp79S/AllTQWxt7yxAzdcxWEAWxmbUWyhxoAJjHwN/R+pxzhx88U4Ws7zRVQ5Z9gd4wARxtPoaVMZBUDlYLEAeyh1zM6Zxryh9goYBDH80o5wC8AQwhmgJxDgOgJ0iEUFxzmyROgRdEJzu+yhy5EFfwLIiIt4NHxwdANHxmQWwtIVoACgFKQJlgJmJxp5U+9uj2oK9gGoqJEEfFQQNQKzQa5RocIc5AgEx0AJjqAPecGrsR4MZp4BbQA8YGAJvLobCMeFsY/xr/wU/xwEAPCsZ/jPrYQlQa/xlrAEpxjzYPZx65URAJpq0f6EfL0HAJor0DEkd/hgwodgJrs0p6gEfKvPkngJ0UcZGBmhvR6mPmwI44EgJk5yNgJlq8cfvUlcNzwHYDSIJrQJqd0ZAJm0wXXRgngQgJ+O0R4MEEMN80X/xwCmf/xwAJ5wRxbVQwJlaGQwJyAJzC0Bze0zAWAJzQJp0IYQiI/x/RCewJnRxpwJy/x14AbS6NwJu/xjwJx/x7IJ1iwXIJg2UXvkQoJ4p4YoJgzAP/xn1IcoJ4AJ6YJ6aADDgLxx5bVAAJrYcBYJ5xxltxkAJ0swaoJiAJlbqROgdOyywJ+WsGrsEnIKGQVoJuwJktNRwJ4zoC/xlwJnoJ2/xk1ye/xzwJlL0IjaHIJyCM5Oxpq0KYJ5AJ+PR1YJ0rkMYJq5kCYJ7wRj8mMoJtK6IAJovR5bVKoJ8AJkfQWoJxvR/YJxJxsuc0KMEqAWUIOIJk2IbGEWwJibxjqsc4JtZx5wJq/x64J9wJh/x7tVFL0LDBKsHR4JoYJ5XR+Spc5R0YJlmmIoJzpfEoJ/4J6YJwEJioJkEJzYJsEJ8YwCEJvYJhoJrqUBr0UWxp4JjXRu9x4pIFhxjnIMoADGQOEJ3rQBEJzRkNrJZmiTUoHDAOlyfHAFpmMLpQYJwaeU6AXXRrOxyKAcD8Dhod4Jn9uBQwBUJ+SpHutF0GUWxoQxsIRkj+GXx1UJ+SpZiETUAGVIHuyvp45/x8YJo84b/xxkJ94wZiEGVIQ4If5ETmye0J9pAfFGCj2DdA2tVMSEc/x8hkK9xlhxg8sHEiIGYS/EYUJ1bhVEJr0J/HAIdEA4ARdEG/xpSAXHADlxwYJic7ZNEPth7+kTkJjU0SVgX1hm1hh3iO1hwaeTsQMl4Cc7XHAGpx/r0ckJy0J0EJq0Jzx4ZZIXrgc7YJ0JtpyjdAuvYc/xhr+DkJokJjXR78wHkJkeJRJx9/wUkiJ3oDOMAIJkMJpwJsMJ8SsSMJtwJmMJgVxuMJow0itNAC0ZMJvXR/91Oz8WDzW1hx4x6EgHuy790XMJ/MJ8voQsJn4JksJjqAG0J0sJuPxh0Jp+y50J6sJ+AWbpx+BsQkJ+xgXXR+4xrmMFhxuIUNBAIdQZcJi0J+IJiGoZEJ9oJtEJpp0S4JzEJshxm4JskIfoJ3EJhHen4IcAxwwJwIJmZxlIJuXR6xFeBpKHpFhxvgJvegfYJh4JwYRhsJ2XRi1oIr0PDADzVPecVAJsux5JCyvRqoJg4JtPoQcYJyUWdQVoJq7x7sJi4JjEJ7oJ18J7EJ+4JykxqoJsvAXvkKEJlhx1vsDVsBnCt2QZW4S4AKZrd1x+ssWex3waAr9Cfx01IT1xrMRvKASA7ITxjDgRdMlShjzYBKAUiJzYJ4wJjCJ+GQYtJd0AKYYdrYGvoNmEJwJxpUeRaFkoQ4AIEJ/4AOhgQOaCWgTmyVSJhc+zQJvAIFnwHCJh8Jr0JroJ1wJt8Ju4Jx/xnjQNjxoMmK4yctRjs8FyAZSJqCsCtUKiJrvscxMYkmIFAOAJm9AGSJpSJlfwd/Svt24RxqKMeq4NPoDqvRN0Y62UgJmv8ehIRNBxJxm1AZSJryJxyUKJUGugbJAZSJzSJ9SJlSJwOaURkNoJs4JgyJq4JoiJvoJnEJrwJ+D0cAxt4ARgJoEJr/wTqcIbhv8J4KJ2UCcw1ewAUKJuTAFJcUCJ6IJ5NEVJx/6ESiJzQJmJkdyJuSJtpsKiJvkJxQIAUJzYK1qvOdAXHACUJ+XAHRx210DOEwaJkN0fjAdpGJwJs52XARnrge20OPx6rkHcJqsJmVIY5xmVIUpsasJjBaDdA16ETQJzCJqJUCHQE4JgRgNKJzoJjKJqMJrKJ+4J7XCX9xvKAcvicxALfwXAJ6jhFfwBqgGH1e91dZAADxrzx4vvG6J14AO6JxKJjYJ1TUun4V6mf4J26J1PYROgB6J2UkACgSKAGtROQIADQRRhepjb27aJxuEk09gG8gYKMk1waVOeZxq9gfaZDIJsCJh4J1nx9CJxDgVhgPbQeFsAbgE3x9ZAQDcS7APSJg6J/CJwyJrEJk6JgYJzbx9MAAl8HzROXYTyAVSJxqJlfweFsrlx7icfGJozUOOweK4KbxmmJ9mJ+mJ50xRlIeZWRlIQyRXRkDAABdRtX4KKsD7xn64AHxsDcVlqKvR+WsKbxhNNW/EAWJ+JoeWsPcDKCgD0JrdoFShp1sNdR04MGGJ2Zx0HnQDcR1cOOQMIADOcWqJ7QJuiJ7xRqiJi8JwdQPGJi2JrSwc6Jqk8SiIc4AYmJrFQRXfFZJWOQQDcHOGapxu+xsDcZ3YA6mfBxxbVIi8cAxqDqPkqjqcH/AZtx7vlLIyUmJ9EJ8mJzKJ24Jj8JnKJ8esPSh5SJuJXTmyGjwRlIE6aC2Jw3YGyAI3CAc8n0AXnWetIWJyeOyhKAY/x3AAfSJw6Jl8J46J+OJ7KJ1nwFOJxKJ9iu1tAHzRBIJxpx2UCZRRo2JkpASkgA18JQGTQJ9GJojEamJ9mJhtNfHAVuAK6Jt6JyKJxKJ2NkfOUUuEQEAAuJ7JAIuJ2qmFKJsuJ6OJp8JgiJoyJ4iJx/xh6JmjwRdEI48NugcxAVSJsQJ1PYH2+96J1PYFmJtugLG0WeJ+nKJRDBeJ8uJsmJo6J3oJ6uJ+4JjeJ+oebeJrdQV6mPAIGyJlfwQ+J+KJxKJ7zWbXCOmJ/qJ9ZASKAR2JxRhZuJ/WJ8SANuJvhxmJYe3gNGJ3SJrFQQ1cAiYDOJ2mJi3x79hyjEBuUTQJmfoAMRuNnamJ7QUKlQPWJg5Uw2Jyy0+G7PrUKKgQ/Yb3IXbtcKJuqJ6WJjriW/ECWJ8xRu64UWJmWJwJ4ZjJEWJpD9eWsc6J5hJ4Ia1WJk7xvYyn2JjribWJs9R3WJoIJrhxqhQXhxk1wE2J7uJmrsdGJ7XCRRhBdRr/sWm2wWJxTxiYQVCqyWJ160cHxpwAWWJh7xjOJ1RISKAVRIRRhB1QJ9xwTYThJzrRbhJ1RJscAPhJzEIARJmZx2Jxw22pEgVZuM2JhAJgzwGrsQQeVqJ/CJzKUPyJxDgIXQJnQS/0OnMN4IW6mBOikhgbrwBXVJiJ0DpBeh20gOW4AcRjiJ3Gx7iJghOuNxqsHBdR0PpKNASIMG3xQfxiAuxMh0fxiGR8fx3uxqfxmSB64xdGxtWOefxtROtdRlhxxYR9OUi2kNQcQNQQyQb7urGS64AN2J8zAT2JpdiPRCHhJ8jyj9bZKxwOJ1JxkOJgXMMOJiOJ37AKOJvCJmOJ2+J4yJhOJl6+go4CNJbVyZFpetIFsQfJSagWlLMHOJmpJ5WJtCVCyALtx+pJocIPIAVn+Wpx886Aqmfyxu3RghGYOJ7dtFZJ1gCKQmLpJv5ALlIXpJ5eJ2OJquJ98JmuJ5SJpYYB6J29qSpJ5fNWuJj+J+uJxdMhvAdpAdOJgeJPnGb1MaQwRxJ9qUexJpPYVK+7+IUpJ0SJxDgbaJ+gJ90AIAIf5JpQJluJ0Hnbhx4THMB1RGJt+FOxJ5BUGRoJggCyh1hxbSJqIIFO0IGYZFJo5MKqAWYyn9uK+JpeJjjAZ8JwiJ85JkyJ3EJ5NEdpAJZJskIbFJh+x5SJ7FJxKJ+lJtckB7AdkmIQxlL0PLUVqvRJx9hgJnQSugFDAWZJuRJuIAL2JhpJkxJv2JoimAOJ5bVIOJibh2EAdpJ/ZJ8OJtYJyOJ45JqcIR8JolJleJimJ++Jx/xjUwEZJ/5Jlk4CZJmoiBXqaZJ6pJ6cId2JxRhT2JhZJgXMKlJ0qAFZJ6o4DXAPDAECYf2JgKxhqgCVJoJxqVJ3ZJ8xATpJuVJ7pJhVJqeUJVJuStM5Ju+Ji5J+4Jq5JxKJ25JgPAe5JhHex5Jx+JplJ1aJmjwcFJvRwXBJlQJumC4joBJxxFJ0iEOFLW1bQKWoQxq2g1K+zlJo4JtCOLFJoQxlk4PFJ+SpAlJk5J5VJ31JgZJmuJ1NJiEgSlJ72J/NJ7zAOlJoQxhlJhtJyNJllJn9uVBJosKCgFbjxpJ4ONJppx6xJwVUtpxiffchJ82JxxJmEJwXQc3QKeUB8gSaJnqJxGyjGUStJ+WAHDAdpGeGxMUJosKJGcWG0Mj8HzRKKyKZx7tJuZx3tJ1ffftJ5ZxnuJlnwf+J8XxucAThAQ1cTex2W4ByJenxldJ+9ec9Jk9cGVII9J6OYMUJ4rhqksIoR3mYAmscxSN6lWdJoWpVqvVxIEaJlyAN6g19USsJ9aJ/ckB5YWbgUpsb9hpdGNGAK5xj0RjotIt4TSrbSJ6tsbCMbqJhAtCdJ/CJsDJ+9hjrhAs6TlQOAJxIxt/UPAIPNJyqxu8J1KJktJn1JlwJykIUlJwZJmzoS1xtKx0vpOgR4v0LlwHFRwBxxzoejx2sRqoJor0TqBmoJ3nYdqAfIRpsANcJ58APX0N6lCQ2ZfxgTOgp4UkAWAq1zMlmwbZlSFJ3YoSFwCbBnv8EfQaBJwNQCCJuAJtsJ0ugfbQbXCOjxoMJ9UKHCJ6lxkjJ4lJ1eJymJz8J+Byn4IcWQiXAn0IAMaPmwRKx0qJ5QJ2TJklAPhxhTJwdJqd0ZTJ7SJ62JwXQIdQLXAXDJ5eJ+PsVTKdXAA/x9EJ1ega/wb6ALHVXh0ayx3KyIJJziJo0h1iJsJJyUh/Lx/kx1xx2Nx2I4WJJgSJkTJrnxoave/C3ixiREJO81iwfoEJamC44dmQNYUwdIdvixMhygRtigRzocM8qeRvJoQRxqwkUEICsQf1yHixriJsrJ+rJyLJ788/FRscRsHxxKxpgRgSlUjxpjJl/x8ZgXnAFjJg8ANjJ0TJjcJ5kURzoaLJgVWSIMXjJzjJsbJkrJtgRoTJwwnYlRyoIZ9Rk3CFkoWVhqPRnwKtBJ9MRkfwCsKTdhttEKC7bgIAvka8+7QUTeBhAtNfWfjADGeIPoUO7LXAXYsLXAEexvsML3x+qxj5h+qGevx8lR2kEWRaPvCb9SeCxZquE9xrH4CrxjdIQPxjhh7wAAqhh7RkzffTxv9IYi0acIBdhrux4zxyqxpeM48J4RR27ytAJzfSHTxh7Jhaxmah3qhkTh/TRdCtV8iZ7RkOQCg/faxzTJl8cPbJjnOQC6bssYnJ2opK/SUHiZhASTJ8YwAcmdNgQGeCljHgONPoEQeM44BJgDjxudx16iH5pG3x1bRyhIH2x69LPs0gOxwxxIOxlVAetO2gyf58HzQ4lh8/VWghtveGJkC2eaIeFXOKzxNX4bQeFzacvx9j8KOqAYE+q4g9Ur4EnUSBqgZ4eAB42/EHC4ivuUAeLdQKBkEQeSAkMJ8V/uTj8Jc4gcsr8abrRhrR/Aee3Ju3J1vuZ3JmwIF3J4weZ+Id3JhQeL3Jtj8eq49IeYYef3Jyi4wPJikSTi4yIeP84vt5LoYfq8yzxIfnEvxtXJ2AeBqgJdYTp4py4ovuAYEm64uOwA9Ux8ULAIG549j8fAIMEeDgebgIJRweUIEEE3w4GUkG0IPkSNWQlkkNPJyb3AAecAsV/udwIOQeD12+6kx3Jx3JgYEgvxj3JsJ8dvJwQeTvJ4PJqYEnvJ9hga84yf8gfJjgeIfJigeCgeWAeWAeAQeAQeeq4g3JrvuX82YHgLghvrh1PugF+6Qs5uxipS6Px78CTr1M9R3fSaJgFy8UzActEbeJjrZUzAY6gOM1UzAenCIi8bJSakoUTgP8k7rxopRiyGRdEa/J6pRzcBwJ4IiAKKsTaZLfJ64Ae1yZwudq2gaACyARhSTyATaZM30LqAQIAOLAEdUCpAH/Jx8aWuelSwcCYbJAfHADzYF9EMtEJ3ncosH/JjRSMtEYlQPtEdAgwaJnQtfjASLJdDwTdYQ3YdDUW0IQQecFyPAp2k0Vo2BdR7vYY6oNXAPeAOqAStIRApzCGGaAOqAP3IaAp0qAb7PFtPEwtMdAXfSPeAD/Jh6wL/J0dofgAFjsH7iaIy4koX/J6aZLaio7sfgAbmvY7nQg4SLJUQp46oLuetK6HSucCIe1ybgpipALue9q2tK6VQpoNRH/JhUy7JAAApkdUYApwIACpAByBlUmUuGFKYVemX9VTzgUuGINRb9h/DqZ62zhAFsQLXACrCUdAI3wF724W4Op0Wc4ZGEPt2x8ULXAF5SHuATwptX4DqAW8UAPC5JsLXACESiKIIKvbfJhQppiEDgQ8xSGVII/JtVwPj3acIZMsMkIdpGbzAdLle9MYimHgIS10n50XJSFesW9sgUICCYS7AVAgf1ySSWUUAUuGRzAThAQxqHlyc1BQyvLiEUoprYS+HEK10S5fHuAZFiywpnlyL0eT226op9k3CsQK10PAeEOVDnGIcIYop+oYFvsMkISpiB5YJSwWQ1cesPDAC4sVb1JUR9NoWNKMkIEDhjsABthlzh9nkX8IT4x2lQeJ1EiAAYpvBgfkdSwMa1x8CIEC0SnvfkdROgsdAGyAXS6WkAM/JxzoRRgBdAdFQLQpqlQIRsXKkUVYXfScApzop3+cxVwedJqB2z94ApKaWieiAfjAUMg46gDUdbnSpiEDqcIcILFaMERi4sfVVJSAMwAGgpiJlVgCTmyH/JqDJnhGNj8/ZAKDJ0WEPgpuR21toedEEYp+xTf+QXJSGtxrIpii6VK+nDAXIps7sYBAP2QN/oSBxjdAhYppmmNGAZYp5UAb3IMFgcZ4YTc6eJ+SANwJuRXcEp6kp6voXqIS7hht0z0kDriGVIGU2KN5Kux3zmDsxWux8HiO7Ub8BShcMqhhx8W9uVRcAv8QNW40XA1U2luHAAcA0EpwN2AWUp/kAVBxYsQAOwwlEmqxVUpuLwqLBjPUlAAbZKbCQfEAZ7ekpwNZ8T8eXcmLUp7GZYnumTJ+WoB4AGyDDy++JqtkQyXJ9CSTNxrdDG8csqKNAU+tIMyaTLRKAR7ABWkmANEEoYC6yG641VRfkefNwDzAE7ROnAYfseJABQeD5oTnVXbyLYphqgPvsNVwNX4L8gNVRepAIYeIwJtX4dfht7guWc0g8mjc9y8tfufrcA/ucOCS/uDs8Ssp+XJvLRkrRhXJm54rg8gsp/NckspssprAeSzxWsphqgZkkZkkNX4JXJvkkW/EMEeFXJoK4tfuQbRoQeIQeW9YRspwspicpospicpisp1VJWwy7rR1vJovxyIeEvxgfuFaQcvxzfuCsp9j8Z1mTfuB+4uUARIMGoM6Tht3VKaAZWfBwgulApbKg8pxKMFOXOOkF9EfcplqATrxqxab0dZtCLUJhMaW8UKxaDotGqAZg9G8p+PiKxaFIta5tdxcghGM8pj7S8nB+UxjBR9xJFAAcZR+NUeL9EkJhdR2cTLOxme4VMJYW9E7mOCrWJRqOVbTbQsgXtAFYAQkpqs+FqyfBtXJR/JRnBR0KR79xwfDKZRseAUCoCqKcbx3DEDSjcoy7QUNtxvDAcEYXK2moAIKKowRyTR0wR9sIPApnwRmLCZipzwRpwR4AJuqEHuKG8tJFR5LUHDANlQTPIfipsuhykIP0xfipwQ0NB0BqgVyK0Spy8kDXVOFRg6CIPUISp1QRt35QQ0QXKNSpxTIdkmOyUcPMxSpqvYasAY8RxFRqSpobhjSpgSptiABR29zoHuKEGR0fc5Lc1TBm3nGs+VdYYHRo6oemxxA4bToV4IVPYekoFjsa5xoPUL5/GwAFMmFtsHuKV4+WtUpNSzpqZ1BRSmeEfbeB/FQWCmCMAJGaAfgbnjfeBhth46oCDAzWaMTgE6ZafAV+MNFibwKtxxRbgW6aEW0Ij+RnAcnKGpARRgWKSTTwBiR5rxrkmLotMLsXSwTaAMpRxmOy8y6auv/J46oNItRqMaqp3JRoZR+qp5LcktFNItYh4OEeIm1cCpzKpv7xVau3JRuqp4vnXr8z5ykHyVSQc5RkCMMCp0FRomR2MxngFElCtiIOARk2ALM8upTTSpwSp0HRWSpz0kOwRqy+IypxTIKKlTwRuwRlipmrEQ3YOSpgcIM6p3iRvap5LUXDx2VUKWBtnfaauvCgOcPZnKO6adDANdyXlQIj+a3IHkyXjBhQSJjBwokdBR0li2p3fURmS6KCS30ARKplKpnSRs5RyKAZuQN8R7ZRsIR54MWm6S5R2iK3mRmS6Sdba90N5R9hUWjzOVUFaeCGpw1jNGpyqjLlIHGp4JMxGpydbDeAXhAFjsYHgRGp/SQALM8tyY9NDMWaz1Z0xP3Gf5R9PBvURw6pjwRzaAOwR1D1W4JzGmVmpy8kJ46DmpwxKqfirVVTipiKADmptnlfxCAyuevyVMx4XR5q+SCABBi2mSfOgq/SX/RqGWEPxODqSI0Td+TmyIGytdVVZyevyDOlRqOEWuZzwcvKduhNWp+h1N/oUdU49Kb90C3+iyx35Qfg0aWEa9mVFRpypuXVMGgXCplYAV41YhIYip4hIMCpq1UAMrYdAd2ptCp/LNNEGDus0IvB4FSQOYemEvh5qxS5R7OxiGp9PcHRKlbK8aQQwpyiSucPWL2HGpzORubpSGpjAARjAZgRvi4HIAOKQZhABqQTKpq0c+UcqOpyKAJamfZAJycnjHIGps4Roup9Op6zALDRCdi9dMcapvGpjCEIj+KGOgSwMIRwlQFTkD2p5AANup46BPKprYRpqp91RtPoGCkIGpsIR/DABMAJ3nVNS7DoRzyEryfvAFrgemxiupmbNVOp1q6HGpqup/IXOUAKephH81d+HGphepxGpzuRiOp1uKEaAaqRmS6Xep2Gp/epmgqMupoj+MuppOAVkhEW0bLUrOppuplhSRupuyQBvdW5RjCEOUybc6N5RwooR+pnKqYT1fOp2UMOEqG+pv+p8jjRGptK6amaSGlXUhIUwXCRiOp0GJ0UMCmp7ZRw0RqOp0+prep/zAEzfAZhtgBJ2pspRr2pqedEhRz4EbMWLwAd2p8FRr2puTWdtAX2p8yAdCp33sboKN2p4Op2Cps9R9eM4hpqhpqCpu+ANfMyhpivyHVRjhoO8YJNh1fwP1QKdhmkmV5IVTQBtgComTaZVn8r18uBphBplJyINReQpuccveplJyDgTWO83aaHBKIRpoRpszJSmplNRYQVVRp2G0QuoYJ4ZcYa5AIRphdi9wp7GmMesPqp9/AiPW0WEY6i5ER6FQDdyOFx6JS74SnRpzgVVupwBJ3j8zTjVZySwvTupsIR4TWpSwABp4QVPfNEm4I/Mh5YbJAYJ4aXMbbu5zpIxpp01CMAJCYQxpvIgFuhGCx5ZRiJpjQXINRLBkXhpoxp/2QQlQKCYV2Ab90TfS+J1YJ4abh2F0YlQUYfcJp/hpp01VbABd0YCSCuplFvX8mMesIRp+fWwMNAWtEFRjAAdpAbq+ipprYRiuKTKpydbBpptK6cwdZ9YGZxHu6bwWSdi6JpqyMZKoWmpocfA2mF8CXPqdpaRCCFSJszAQdhqqAfjASqBVoULAIMzAOyWN8mbmyOxGP+pkyp2VrFvdCeACpAH+zV41TKpxDGTzAOEtfqAczs0Nncbwf/AApAQUAPqpq1UZppuJp1G8BAGD0AQMNc5plYAS5pySS3hpi5prfhqwpr/BmZmH5i55ph5pkW0YaAajze5pjqp3lqYqphP09YgaZpzhAWZpkm0GGwBMi+shscAPAici0CsQMcANX4HCAWP4AQmQKpumpyCAIdXNG8pX+IDKRFpun4Y6oaZp2wSgGOeZp1d+b6QWvIaPhrcqKb6NSmNzACV8liaUbyV3uL5yJ3Wm2q6zyJmsU5p9KAZR4SWpwXKJpR4ZR9uR9XAdrlDrABkx0zkKpp9lp/5pxbW4lQI3Rh5AYVpxNIOiEanhxlmf2g2Y7aWp7sYCVpiigKVprAeJ2YevyQVcsZRvpRpVptCEXaOSIeDuhYFpvTRaFpovICFpnRAeY+GFpolp+Fp8ZppFpzHAIFSEYyqhvbl0ZhIaHxkGR1qAP/hyfCyXRrVnbJoRXyz66Vapi1qlyARCqnYx4wAAYIc70KaJvMR0r+EExteRnZc8PEQzrVip2VwQHSAKwT9AdaRkrQLcKasQSqwQ6VOM8PWtHjCp8pq8aZ1BKK4BDiklpqL86Ph7JAIGylehKKcN3NIcIEPxVBhczUBBi7XYBlHaAp5EtGgqLdDNZpk/x6Kp7JALEeEMKkkISSwIcIUxMitpipAcoyrKmGtp+RwVPYC8mUqAUcZCpAFtppGaTWaUqANX4BgTTtplcqc8mdl2tQAKip8AICwKQ3YMZNCqp+4tWW8in+2AR46oBgTV6kuqmBIyk92tK6VkkOKwD+1U1JKAprFQbvNd8mfZAfdph62zyAIHxxRgcnKF1JM9poZ0C9p5SWK9pzKp0H2hmJyjaUWEcnKdo8z8YNCyStNQIIN9pg9p7bxr9pk9pqwp46oeR0e30YT1MHUSSwMZsCpASpfYDp+91BDpraeTyAKwR00GdMsR/4XP0bRnXbyeCkEwtcaGJcYf6EBS2eJECsgfDpgCp1aCDzYES6JAgUkoUDyZJC5zpRZRhz+/azWqpr2psJSbeYYipoD4XwlGqp/2ZdqppRAevfPqp+jptZC+k8zlp33sEZHC6pqGOq6prZGFLOjhOeNpkQRiqJ8QRjqAWg1daRrerOTpvrhi7yvz+NBp1au71RhT2HkkdzRolRpNAkLRq04RbJ2NhtuxOn4TzwYAw3yWVbxtdpikmQqILLRUWEFKmQhkEqAYidTvC5xoYapl5p5LcsowEm4beYJjph5p1hgKNYP3GFzp75puLevzprzp+qpu/uSDQPcmCqpuqUW0eWfIbLReHMTzp3pR75ptzp7aGWqENRGNX24FQYip8XFdvi2ZRivyIAKRqx46oOfyuLpvJRl2ptLp4Op7BpqNCSfOwlRwZRr2p1jpkrpgip/tpVLp3hph4FXKuWhQicAN4IdCuew1DVphLpnZfG2czsA1Ap9KyOxp2ppvUtSN1KRAOqgB0IUN1YFqZ+Of3OGppwTKYeJuhgWzAcigIiEaaprupwBJmbpubp+QVWZKWKSEgqQKARt1TzgXqIINnbsSvsSFuOrhWBOgCeRi2R5cWeY+EGR2RWFN8N1pivcityMbJnZGCsQEGR+OgaVNa7puyWFM21HhbJAEGRsZwcviFXOSVph2EbzAX0aEGRhcqN0kBZhtcfZoMkGR4VpzKpnZfdSSOEtTs8TbRgrpkap65mF8kOHpzjp8pRl2p6bNHo0uXKd2p0rp0H2wlRrHp2rp5EAXbyS8R3mdTLp4Lp7M8tqpvpR9hle9KNu2qTpmSxgphQAhrQQHmp+wR9mpsuhtvdJmpv7xZSp4EJ20uhoxvmplnp2vdNnpv+ppCmPimWYx0kBDmp95UIGRv4JnWAOXKeap5KRkGh+Hp1zpq+ppSAK0ye0CnwAVaEb0xlHpkapnZpqtpoNRL/NdNoJ5p8nphLp7pR3Xp65AMXpgFR1r+b5R9DR7CeWqRGSxmRqLcKC7pivc+vyTYYRJJ4SyIFh5xocTppf4LapxFRsuhhSpoFRySp5FR3Op33pwSp7tVfDSYWpswR79h8Kx7apogRs6p1PYI9p7apwQ0TmycM2vn0tZ4hyUEUp7rhrPh5k21LsNmh0Dx9iJgRRuLJtdx9KxrdDDRlPO/AtupiJ3hR4NxvPp2jJ3mhmWQLyhouxp59GZRg4oQzp8LuDRdWsRmU2fdUlxWWuxjACOtYUQ071aE8SJA6CqAPQwJqSQYDAfph22w2GdU1HiIQdRr6074DJQAaYapriHAAZjmZ5KaRAft/UhxbitRDgX/6MjAV8DduU0HcG8DPDOu3uWGYQjAJqSYGkuggAU2CmgJqSC46dyQLPhiJOsfBmMAQDhzEsxwKu/GV4MLghkScrq6MdgJqSLPhp50GZsDYvUn+7kW71hugJAfp2qEbeacC08kSBWIUF0ttvYzRgg0UIk41q+foPcoYsMIOwVT+Neeo7WSoFGBYSP8m8RxL+uAZ9SgFvgQLIICp0sJRARldKGAkQQACs+IRDL9U2G0UzAH9U/AZqnnDD8cyABihXXyQAVVAwd6aDNDe3gYYug0APAZgkVdUxCgZ1bWCgZpWzSvpH9U3aLO4XbomTkgeaQY9yGr+FyafYYBk21lcU78GfkCyySP8uLmoVDNktNyKh9yRAZvVkuqAEKiJgjCQZvVkm8Rk88huAGY6SaQADKQqiFQZxI7EKicyyEH8uvXAwZ/deM5fN88rxaPa+DbicD3O/5feCtAZpQqThPWhAeAZvGDXQZ5AZ4t0fq2cAZ+WIBQeaAZkBiIXYuUAMugfSSJ82c2ANtvfcmBnpuxmUaUGtRYgIXquYgIQnobCSQVi9y+dKphux+KcorOr/QGKeEtFAUMK8mD7gK5IbJAPTvQUsGyMTIZhBEExyLS6AVxg0YXApgVxsFQfgdLy6Dr89qepUAZZAT0KLqAe5cbDoQ5AcxAL8gAoZ1UmdLctpALYce+MkhARnzNoZ9ey++MhVBboZibgQLATMADr88pAVCANoZ4YZ9LgNpAJmmd1wSaAFYJqikWd1NAIfDAXzxyaAeYJwMkDqocu0JYZyH8SaANK6QMkVwSDYZuzAZYZmkPGr+BYZjC0TYZqzAUpsA7RHpYX8IIg1NzAOG+e+MjAyOG+D4y6YZzTwDNqinu5zAW3Cxux32M10c0zAKpJ13oV7gdIZ8ToFk4bIZp2iXIZ+KwbJAM53EoZzF1FoZ0oZ0vYA7RCoZpZAKoZrCIWoZqSMYlQRoZvMKaEZnyAHoZjoZoulDqoMYZwYZ3oZoDKVwSPEZ5FQWUMe+M/S6AYZylQe+MvnwbHRQ/wNPh0psOYZ9zAfYZ4d1AZqUpsVYZ1yAE4ZuKAM4ZlkZv+p3YZjkZrkZoaAI2SevCpkZlyGVHEfgdK4Zw0AG4Z8p8zzAe4Z3lsGcPb3054ZiSu+fJyi4DLIMwQCWZdrRM3KFUZgrujpeDWeZPSo0AOUASugfwZ99AuJKNtvEdpBLGFjDTQAYosLHAHJiONOuNOpkWNRiImBKEAF0wQQKG0Zm0Zyw6HGOG0Z0deJ9UTaOPWKb0ZljDOqAeG0b0ZjFhtuwFwAWzOWSDAAHMjAOCATZhOKAHuARMQqPANcAAdQcRICkWG0Z2syOqAWzOBJiWQAS8AUdeY8AK1UrHALHAcjgHuAc+g1T4DHI78oTacYosDHIlQ+NcAOBuEI1VoAI+k1uARcgWNO8c2YA1AdQbVQIDuTW4bgAGZWOqAFozY30cDQ0Bk3hguCAWwkYVVcc2PIAAHmcNOi+g6nxAgAT/ASBcOCAT/AfjcVMZkVVEcZ1uAeL0vxaEI1TQAXJEGcZuqgEI1AAkRY2D+UZAAbgAJMAc3YOKAWBFG0Z+8AJvIo5WOcZnuAKlIrz3TsZtuwPvUMHweNOpT4EJiOqAEjgLHAdiAONO18Z5MJJ/mXMZtA4TCnHJiMwARIwdlOTouH/AXMZxcgZNAP8Zy8AMMUeh2ICZrHASGcXT9XXFWJIKsgTsZwuMVT4YtdK0Z0deWzONA4FoANCZuNO//8GogLCZjCZwwAPCZ//8eh2T/AJkWL/YAkkkD1SQAeOgBJiLpff/8C1Rcc2CIzNeGFoAKCZtA4emgFjDP8Z3i5K72DMKvMZlCoRv6ArFZ0oS0kt9ELpfFgATsZ+d0douONO3T9eQABJiChsZNAVHq3T9WJIZx5Hg2MZ+9jpHuAUCZjkWP9sX7bYAAOqAfXhsP8f1rP9sOKAHiYUQAeh2e8ATMKnuAOKABvMFhgGIkfT4Uc4WiBf8pN5mLvcC8Zn/Ac+OCOwTQAENOsdBURcOqAOqgUCZrHAeOgP9sC1RaCgLapV6pNJoBJiU7Mf/8fT4KCZplgeCZsjgce2P9sdiAUdeJls+DAUQATouCyALHAS8ABJiZqAMCnXT9AdQX3wJDOsGILHAEmwC1ROKZz/ABKZ4iZlUPZNAQyZ5oAGieJ8Z5MJYtdOkkLpfP9sYtdSLMB41T/AcyZ4x7OqAJyZjsAZ1Os2LZqZvMZkD1MvWe/eRQAByZvsioxUeOgOFUfT4YyZrHAcNkWJIdqZtqIdk0H/ATSZ50oCrtWQAc+OR8Z7qZzxbT/AdiADJrJl0UdeIxUUcg+ZRcjgXMZyaZpaZnuACOwGaZjSZuQNCAEKaZ072FjDXMZtaZjaZgm8H/ARcgM2LNA4HuARO5dTsWaZzSZ4UklqZ9oAHuAVYgdk0X8ZtqZhJiZoAL4ARyQcCZx8ZsUWFoIryZ9iAMP8DaZ/yZwoAXT9XAAIx2PMZxoAUTyYKZ1iAUGcEJifwB+okveh5MJEzUKKZ2J8UQAF4AeOgTsZnqZ+d0TkWTsZkD1fT4J8ZqqZvvUf6ZgkoHuAYUk3T9DJrTsZhLGJVqMVuGugQ0Z0U+40Z7l3U0Zu7k8QaJQqBEKVlE/eC7MZHCCQCeL35bvWRwahkCWEwCgZy6rCgZ3NAE7BOAZ6cATUZqWZ0WZme4IAIS0LHYa7daDByduHZWZyoFVWZpZ8BckhwZuwZhqgQ2Z57tHWZu2Aa5UOUAeugDmZrMx0TaEAZ54mOAZyWZ6VqP9iYduK7aRwaxWZ9uHAvaTUZ9QpZZ4N2ZrWZ3+Uz2Z9uHAIpb0pgayQGpmocasAJ4Z2kZ+imQbxpGaRbVWI6GkZ63xtPpxqxwPIKIAOccrGySeKOXydeKDQZ/2yK7wBuAADKfoWS/2UZMPnyATHZ2NYeOy/2S8AE8dciWVos1FHSFiosKUZMWl2ypqcuZqkZ4EUSKQYAMgjiYUhhMaKgSMWyFyGDaMHukA5CgZB0NVPFVAZBiAu/BYywLL8gTcsasVZjwdgQtQwTpkARCdmTfuMK80juZ+4gkAAf9oBTAGmEEwAR2eoXbMvc9isOs1IgUOaXDaqPH4JNxjWZ92Z/2ZrIeE2Z0OZJ2Z3aIO2AIXIOUADGQa2ZhrVLmZtoRUAZs+Z4rwL35E8yfCZa7ZV6k9Nq+9yREVEb2ocIU9Wv00HmZ63CuIZ0CgBIZkGBL4Z/lGKPxkwymPxnAXHkqyuOaKodYgNXAYZnI0YctEPxjPwhzSZ5y8CCK2pRp4M5nYD8pn5ANDYUFhhMaAJgI8pwCPOIpuPuL/pcphsWKJd4cjvapsfJAJoMq3++tIE3icpAR3NFwtfDVNW8mGcpg8teOypCkFuBdtacIYg7DFc7zAJeOoA26QpvXMXbyYKhicDXuyGFhhMaLocoD4fBZ9uAe7gbZyBsxinENVwf4Z5jAcToXsACpARRxr8gKTAcp8qcOAdAEAAUJgc1BSfYEYYNrgUzAQUsEYbGSwR14bnSu8sUQwIOxRGAUSIeiAYnkdeOxOAfDAOJpovcgZwOWOLqADWZK4y8osGS6XlqfZAbayY6RunMWO84PmbJAK10K4yvBgBOihGaLuiQuGGaAIuUJCYFJxjqoGgu0jtXbyIGy3vNb9h/6EVJZw3YDzYLFWJA8BEkfGy39gR14TJZ79hmS6Q/QdagPj05H6ChZqpEZRxzBGFYMX1h3mYIpZv/J9GAGdPQ3YLHShaaeYgDWZx2Zt+Z0nbDUCsVuCHQO+Zv58wIZ7mZtPpi5uL5wA+cxrzHlVN4IYsQ90eVj24ugGU2QNKAA25xabGAHrNbvNBei41UJ3nfsKlEeNHG9DUXooUXAVSJ7ToSamTqozzwHZZ88mUkpv0pqhc0K8yFNbI1Vt2i0Qw528UUR9WidSQuwDdHeZZrIecZZ+E20lQX7AeKAN6QeZBDZZ0lQHuiw5Zy4Y3ZZ90eVME7ZZvziE5Zw7IM5Zx4tVy2y5ZuKJW9WtI8qpmBFmdpZ0ZZ8igV5Z5Yu/Sy3zJr5Z8i0U4ITZZ4FZo5Z0FZvZZjmJ/5Z45Z8EYcFZypMf5tSFZvs8hlNZZsEg1WFZ9N2hpmZFWcX1W4WVmZuUAfbQfpZgayO2Zmush2Z02Zi+ZoPcMqKAZZ8UmJd0MOZ+pneUZyOZ9IZmARlehWOZtQweOZjewJHjBeZ852nJ6XcmUnOrk0v0YMSEWGYCsjdQkIE8ghmQk0yRZq8aDlh24hz4tdvVQ7CMuhru8GXhHDdWySHuKHYKM5qgHAIUyOBmQGppOYZZATWaTLRNKpurgGqBtPhogBpCme2ePTh/YtTnpomAQBZ9TKUlZgkOjwxZ2NW7aOXyUL+LOZpP7PFRgDKK7wV81QuZyaQYuZngNfOZr0oRuZvnyR+KbFHK3yypqOuZt/Rbu+4L1Ua+OEkVuZqKDduZq8aT98qgSFyGeZc3uZ6ZBzsESugQeZkl3DO6EeZk8LTA1V4YVx+hv2osYQktd6irv25IZqzAOccAacW/mC5yj51T3gYMaZVZscqTr1ftZ65zbeITKyiKiLtZlsWUpscD85eZvr1TtZiSx7aydlIYdZjE2sHAOaem4YJVZ65zACuTtZo4TM2pTJcXvkGQg2VZt6aUfIZeVM0pvlvY4hwHAPcptuZmcAbVZw9ZgfIY9ZptrI1Z5D6G8YLVZ5cmVeB+VZ41Z3bFVuIUJgSNAPsAaQy4YuTYYJhSEN0JnALPh/XoL2Z+BLLD3YDZ/JUUDZn9ZC/ddeZqp9abRuc069ZkH1B9Z1L+U8q59ZlcmcdZpLwLozZDZo4UKgSKi2LWNaUioIESRKawZycQLlZt+Zy+Z2klMVuIdQVlZnuKE0ZtPpoI2eQZq5RlIQgWZuAZhjZ5AZ19UWWZ/IKFjZ5wZnIQs2Z9jZ0WZ1B9LjZkH8m8RnWZr+NbAANWZ3qCDWZ1jZiso2zZBwZqTZvDYM2ZqaIJAdO687jZ+TZn9U0TZ/pk/WZ6iIuUABbQajZ0li9lZg36PcoWXgSIAI7WTgABgAVegoCpvlZ30ptFp3EhoVZ8OTS9Z4gAAhZq8adF81qoeMAbQMD/afFJXQKKraOzXaYxHOB46SA7RDqobj8TayDQAymmcwA9dKUdNGD+ejB0quWaNPQMcbwLfR44kRUZywZgSuYhKuC+/Gg06BAx4dtRx3NepepQpKGWZPYHC6PlZnyAwk0xzZlqASQVV4Ybfuls4YLAI01MDWQmUaLu++MoV0dPxIsYWzZpnSCrAYxZipAK+qXki9bgQVyJMcpJ8ogZwuoPx0LW04M0Mf7Vb1bBOy/EfDATJwD9hiBkA66Dtx4UXaaZKsKYeABthlSKuseUoxjyLaUZle8DB6A7RVrAbyALQKbHLBAIUbZ/NNVJANK6GGeWUMLbZkbZuzAUGk9yAdey46SDD1dWcKRgE7ZmD1MSGZlAIzZo01YLA1egqaIC2ZqZ8IAZ1yB24mFYGX1ZgIZuXVFgVQz6YDQavNRcUbLZi6JuOkXPqUcPb0AUYxUMpjoc1VRDoc0fh7s8zbaX11XjxyRYWl29CEY7AE7RE0caRgNVwT7gWKNbiAJmwepALdZ4bjHKcITZ02Y8pAbD1aYxIqXUu0pvumdpd59DlhxDZpzbXcmOVDezZxDZztZzDZ09ZxnZ1uIHCEFAgRHwLgh8ZM32RymIlqeXnZ3ZYa2wYwwOwJ6e2iSYYZuelycO1bbiKbIXIgOFAL/wQXZ7biUJFSIAOXZszZwUBJuxv2Mi32D5xnnZ7biBjZxXZw/ppji3QZxBOseO/3RQHARJMBeIOnZl9ZhMaVnZ/vgLDZs9Zo4Uc2p9pZsVuKAIXTZ22ZoZZ+fJwh8ScZy0Z60Zm0Zu0ZmEWR0ZzE8F0Z10Z9iAUyZj0Zp8ZoMZvWKCJjED1C03H0Z4MZqPZ9SZYMZwMZ30Z0deNR0JPZxPZ18Zy7PRcganxKPZrSZiJjFwAcc2FduOYyKPAam8CMZupCdCZrz3SMZngIGMZzCOXQAeMZxMZ3T9ONOvIAH/AX3wFT4MHwLHABJiNXqLMZnMZpGZ5Mrap5UQAMdBFwAe1gpgAU/wIXQFwAYA1TQAc3YQGcDJYGgHapENMZihwanxS8AXXWY+IRk2FwAOCATacM261oAf1OzZhMfZkMEuCAWdwONO2QAenxEI1YfZpgAY8AWBFPIAQIAXpcentE5AOCAPMZ0GcbgAWAA0/Zhw+UBk2QQi/Zy7PBJiecQad678ofgAZoAZcmOQNecUTZhKIgScZ6pEONOkiZwGcVfZm4RVCAEI1RLoF0wXAATAAW/Z3BU8A55bxC0Z3QADHI0/wZvZ7AADHIwwAeL0gAke1gxcgKPAGgHf6INMZqQaFZWX3wFv6TsZ1CAYVVK0Z+G0TouG++Z58c2PEiNUQAT/AbyDYAAXT9JJI290JoADkWIPZ33ZuqAHiYcSZ2QAY1g/gAf8IMGcWg53T9ClYa0ZxAAOqAeh2HCwUQAfQ2JkIXyZ2g5rg57g5y72Vg5uqAR5CWJIOmZxcyb/ieh2WQ5h4jaGIQwAPMZ7g5sjAIVaORZkD1CcZ/gAWJIdoAOKAF+DArFGaZ/T4S2QUCZsPmOhgS8AImZ2QAW1we/eMmZxcgH3ZoPZlhgT229KNe/eDgARAAV6peQ5xKZ0Q57GZvvUQw5oPZ4w5qBgsHwTxbb+MWJIe8Aaw58c2ZoARmZiiZ8c2IziFT4JQ5oPZlQ53T9HaoIzic/mKz2Fw5tA4dw5+w5sQ5/w5sCoEI50deFgAT/AG50vIAJ9UNniK1UxNO7Q5oziQZiPEkveh5NAMHwBQATFgRkWJZILkWFgAHrFD8Qdo5jCZuhgYTgEJiLHATouDJraCZsGIBQAQGZyikUQATMKgrFVjkARicSZlKZlv6BiZ0mZ8jgAAHR/SWQ5uyZvIADo5kIAOhgViAZv6djpBoMWJIKGZ9GZvKZyQ53Y5jo5wO0EY5jxSII5tGLZo5lpVVYgWIMZkWZ/VUPwfI5sJabQwTouH453MZ3AALyZqyQJ8Zx5if8pT/ACSZkGcHqZloAJDOiSZhJiBaZ+SZl4UJ0E//8FFU1Q5gkoGpWB64LSZracfjgMHwemgNoAXT9VlB5mZ7/iSQ5pv6ZgIsP8LQ555g+/eBvZ1CATsZ+8AeOgWJIeayBgAe8AUPwWJIZnQF+DFI5uqANiWJg5niYZY54mZ/45sCZ5MJLapAoAGw6BJiTE8RoACkWGKZ/6Z3AAcNsJf8t8Z2I5+h2AoAMTqoI5+NOkk52JIMjAeh2TZoSQ5h41EVVSk58Y5mk5zTbDgABk59KNIuyJI5uSZoDEZMJKyZ1iAPeh9jpLz0XT9HyZ5oAduAWJIV452JiAAHGmgHY59456GIWQ5vxab45i8Z/0Z3MZ+QAAE53qZi1REE53T9NiWPvUPg5345rHARcgXKZ2JIaU50QAFLyeY5zouRcgdlOO8ZjXkCSZ5ka6CZrHghU5078Fhgf05wigaPRU72JoAFgAd059jpCbeVjkeI5xU5plgF459uAXo5xU5qQ5oziVChC0QWJIW1wPwuqs5xs5skdA05rM5nuADaZ7NgM2LH/AKs5lgAORZxAAe+sSI5l0Z4w5rHANcAenIQc57g5l0Z7kLDR+HJiZMJZNAfLUTsZtE58e2JvIiE55oAB8ZzoubqZiU5v8Z5aZzoubQAGGZ2TYJDO+NOkJiS2JJAGTxbBU5tiWCcQXw5gD4SikG9eVv6Z/VLE5s2La41C8ZjgATouOU5hoMfI5uyZ/D2MTq36ZyVAFpVOgQWJIF4Abw5l0ZlhgPIuCw50TyIC5oPZmMZ5AABY53T9aQAUiZ+oAL8ZkU5+nIfj0CyZq72XQ5u8Z07MSQ5zouajgLY53T9ZaZzE8SSZyQ5v8Z6CZxcyLHAcc5/k56E59pVBKZ7C5xM5zbrDsAVCANSZ9jpEMZ6hk28ZkD1ZXwoPZ/1rV8Z+GZ3/Z1cQ9uAbyZ0soaMJ9s59i5m0ZsB1OhgQsIWJIHd6Sc5xvZrz0CQ5y/mAgAav6cc2QqWcmZrPtBwWkJiNQlXT9U2wJk5o05pMZ4JiSc53w5rM50QAZNAWIMQyZ8jgc05xcyPvUO0vLz0LI5l0ZlQ5jI53IgeS50cM5w51w52I51853T9DQgI45r45v9sdGZ1k5kmwRrDIc533Zkw5sHwfg2eI5wHgF+DQKZlE5yQ5xcgay5m0ZtDC2w5FpVZ/VQuMVDQIo52QAOmZpKZ3T9IRKXT9QC5qS5/S55MJCcZg05oy8EI54aMp8Z3T9YBwQigIK55NACyAI05wndEVVJmZ5T9A/Z+mZ8c2XQAPyZxY2EmwUmZ4i5yGcZ5gMmZumZ4Ukq2h3yZpDO55gV6pPC5xGZ8jgEy5zQAXAAF8Z4mZjCZ3iZuSZkD1Ii5pq5pDOlq57/ifT4dq59M5rq52a5gz4bGZyE52GZwKZpMAYa5ui54gAbstLHAVoAVQ5qM5uKAC+AG50rg598Zjw5h4jRY52QAPsiiqZ9qZlyZ2JIKM5yQ5yY52GZFqZ+ZRc/mXT9ZC5iqZzSZ/XhsPmPT0Crtcc2b/iBgmRaZ2Cofj0Yq54G5/jgc3Yb65kD1ZB8XQAH059iAKyAf6ZzQAIU5vg5ymZv45ryZ2I54tdaCgM2LcE5ka5jsAFgAQvZ8/mEMZtacXT9OmZ/1rSSZtk51Q5q3cLHAdCZnSZ22BdCZnrFe8AJMAEacfy520ZoxUfs5gHwyS5yc5+OgUC5zE5v9sduAHhcRc533wJoAMHwA+IEU550oNCdArFfD2dSZZgkS0k+iZrz3cY5tk5ma5v6Zt9EWQ58wQRAAVC52Q51qZ5C5/SZrU57FDeCZti5yQQVLwV6pTq5jNMb2wDJrTouArFZaZ6d20cMrpfUcMyQ5oTgC9EZkay7PQZkMvWSgsM9Oga5oCZrz3NZ+SCZlKZz22xU5xaZ/D2R8ZqCZ26ZmsyWTYKQNXMZtqIGw6KMAe05v9sRAAV8ZljDDR+ED1FSZ3MZ3hgiXIcSZg/Zra53cZ1iAZY51qZkgAONOn6ZlKZzsZwBACO5nlAONO625yi59AAECZo25jw51ChQw5pq50deEdeZx5MjAH/AS8AORZuNO5GZ5aZzC5iG5kjgDsAV8ZmM52J8J9uZ3Zg0Z4AZ33h54mFfqXlZ/pJYzLel4Ey7LxRlwMogAWRcD0cRonFkoDQQPyh9/RWMdDQQXhR2VVMrsG4OK4LRPAP83Je57hPEkrf2tJgcR8IVPDLxR3JjAtDK+5uMAmkxJxtC3gWL+rZGdJzQOgJ5pgkYX15BvB9rB9+5hMoO/GO4JZe59OzeEiJWIUyib+59DgJOZ9eJaszeEJf+59K+KXpt5XHCAE8Bn68Tctc+RlzSuShsYMre59ywTgcNB5x3Bn3ByG6E5DNbKBVMOu8ZyCQ+5wmqMc8LlCWn9AmEeB5iFLamQW2xrmQJB5+G6dW8dSh5UJ0r0xkQTtSjbmqA4WNu0wkP3qByB/4JJB54cS1B5yPMDQQKojE5DOb4fB5+/KYFdLgcbe5go2efJ3ymPUZt58D7ZgIZj4ACe5musyGgROZz1p3oVdKp30AJcQWgqey24M0Jz8mWKNg1JZlVyAHDAR3NPIkQRTITMQRZsy8WOiAzWb58t5NQTUKJADJAGZmFemUx525QRwxFHZ+ToBBgeToV2iVeO2hZJX8pX84rAUiQDXAAOcteEHy+P2DBIxRuKbx5+385382JgWhQnzC+38jSc4J56zsjB1PwxatpdJEVRyzGSbTZq2Z8e5x+Zye50XAB8IGIZ6NaREVKvIKgBh6VDFqaSgTBZ/7Sb8SUeaAp5p/K23ckXlGJB0p5h30g6Ksu7FR55Yu/phqejXLlPFRuNZrGyQ86SuZr8K2PyxDtANZr7AP+CYrwZp8oD2ttDQZ5wa2ZQ8NQqO06KIAcZ5qPS9QAUZ5uEkcZ5kaQZQ8R81SamH6+FAB/i0zD4EBDEAQYskhEgLCdBt8T/kyTWEGyFffG/fGuNbzgUZ0dLgSm1D1hto+LQZqDKMenBeMQmaElpouZ4h1ECmCWBU3iBcqe90QMCIkAZZ5pVAdp3EsaATWoiEECmXDBxZ5noAH55ur3IgZ555tWZMcWSF5xi2QWh4XlT55pZ5ow8GnfSqTCm88bwU4aEOyEF575515qF0ABvdXOZklyWwS5NZwMlRZATz1HPEyo3Sdc1ZoRzKGrnYKjVZoGw0R2NGl5yRwdIbBuAGw0RzKNJKtlaCvXIt8eXiEu+3CMOcQCufZFWGQEbu+8GAbdaCufc3VDmwaNZ0xgV81Gm8GrMXjJvl58fC2OAazs09zVqAOcQJQKuYoL7iazskx8S8obkpMNAQ+Z53Z2+ZzJ5vs3YIZ4xh01SycM81ShLZg3Zm7BFhdJOZq+MLOATGhoGDLbrbggU4h2KGG15kzmQvrfHiB15/0AG15gumB15yR57biYWzVQ8X3x9aQG159WxWAnU4hm1eCwZs15x9FXCQSwh1Ngf15ssAG15xJRKN58ZgEN5mnp3nZ+UOyoQP1Z8LaXDzboYMsSQcAdDAEcJ/enZKR964YIMluBPyoS/piFU1plCxC1RARO+GgMQ7KuTaCh0ihaUdHb/W45FDDyVzyRt5gc7PN8vNnU0Z0Xu3QANGActZylgW8GYSyIucwhMLOAaukP/1U7QebQO9QXrxJnQO9QBtdO2wVZcf58Tt5jskbt5z7UGEAGN5wxaamWjfUsYhJCgG6gVRh+hC7hFGAnF6gBN50/Sk+8v0p0mC3aO13wcNHSN5xwAWyqSGO80eW959RAVlcBbRFsgZ7tQLKeMxBkCGd2kl3CmDYOwDaPOKqKXBpPkPNysw8I88q7NXKuVzoRe6XlfMW6ehJXFh3nZvcDDP5APcTnQZDUl/xZd53Sxk5DQ70z1UvjRolwK2dVzfdnQZOmPhdfqZdS09xAcfeh0kNFB23RCNie1KDUARwkf92TMaB1EdM8GUC5FWPHiQipFpRP+AO+AJZ4DepQLPOGgAXK/dHdr0hJQISUJxCsWAUVgZjSjukCqqPJ52HiHd5n9NbH8eN5q958ZgM/U+S+6IMut50h5oD4Z15t5reMxSUNO2abfOv5QJP2rUqTIQOc29BkMT51Q8Q95zlHBNNCBXRCMzd55HBrPSa3dZndAKwbTkIR5uXdNTdQ8WKy+Mz5nGgR3vdDUnlVfviBg6Ftdb15g3Z0pgPGDbAAeD5nDxpOZgJlVuxUgoaEgZ1mGAMxBnNT5tt3OpgC95l6gRSxYL5lEJM78uDh2iSP785Dh8igLsSQ2c+YJqfuFL5vtAeFJEhgBqgDL5uo8un4HL5l78iLh5kkXL5rzchCINX4Er5zkebL5jk+sSgPt3IkIMTimiKRFqUigHlgT4+VsEWr54fXCzxaawbb8p4S9hgAe2RL5qmoIPoEr5zDfd8mXr5w2c5pjP4IKYYEr5382ahYGvoEr5zrVbxEKeJ94hw2cu/uOTRYgIEb5zL5zkeYeKcmgG22X0eMN5qUALt55DUrz5yOgJ1dB/gZD58MBnrNeRh0T5yL50YcCT5pfJ0lZrCbVQ8B+OwkOn2OKikuCkxj5sTZxOgYAAAdQfgAYdVdvZxAAXAAOpCWgAbCoONO1LDV8ZpZIF0Z7/iG50sSZvehl0ZhJiEVVV0ZggAONOjsZou5l0Z74oQVwRH5mH5l0Z50oIGZxvZjH5grFcSZ6w6aH5m0Z2H5iC5yC5hvZm0ZyI5mO5on5z75wQKOm5qmZrNWHJien5hJiWsyG50q0Zm50y8AK0azvZ33wf+hvKZpoAPALbQ9BJiRmuLHAFhgCyAXT/S8AVG59ouJ65iyAMjABoZXoDZlwacZuA5+ntbstGogFfWANkmt4FhgTMZkHoc3VAdQGn5gAHJDO6ZWGo51Y5nuAXJEOo5lCoLQLCuAGt4c35uxoCcZq35i35635y35+35u35x35235535m35135h352354AAFhgRmZgkoONOvMZzouAAHLg50Y5si5jkWLlyHJiG50335qS5yP5m0ZrlybstOQNTsZkn5qP5l0Zz75ndFJkWPIAWH5v8Z0TyF0ZzQAeO5CcQMP5r8Z9m5xP533Zz2wb/icm560Z6ZWMMUXP5qO5jkWAv5wv5xkWYv5grFMi5hJiQIACyZrlyYAAPP56v52v5yc5sjAev58m59jpVv6Fv5yv5ln5kSZzv5qI5nv5+P5qQNftgiv5tv5qO5vMZmv5wv57v5uKAEv58f5/v5gkERVOuNO2dGESZ6258g5335uaZ6f5i654f5kf5ov5xf5hv5tP5/v5hvMQf5hY5uf5xP5hf5pf5ikWJv5lhgc/5vf5/P5w/54c5sf5q0Z4H5h/51v5wz6wNUw2kJCgHT5y951ewSiSG95/S2bzC+9UqegNBO/iS/NyoZtccPFfOPKKN76f3pjdvcD518iSmPAo2ZxCvj5oR5xY/AT52z5p3Z7TZvpZvV5jsxH7ZtNp4zp1AZ31gKbPRXYLZcH22IzpjlZq04Pp6TEIT2dWMfdxCzl2KIAQ95ki6H3nLD5/OmFAu+ccpzO/7TVT5llHL4uRLOyXsj4mN9+RLOvOkCCPXJOtVKJLKZgFm75kPZT8qi1oa1hNr5z6OhQu2KjJd3EFYPcPKp1A8PP6xoo+SQFilpG75+d1EwqdxCw95j9oO2mZKaeo6GgF99U4YuyseanW57tMQZvvcfdeTSTe228fpxcmAJHIeh+U06Y8bWCTvRJzZlZeMNZ1W9W55gXKSThhT5zgF7wFzlaXwF6xlLIEXgF1cPfF6AQFwbJM52EQFqgydKgBQFiVysI4f/5g95m759hAMAFrJKez5vJOyWJ1NgAE6VRWxR0TIF2pHCB8ZpgA9OZDZjSSJVqBwZoOwNrPKaIZ3ZllZ0F0oKpkmgsqKQCGfAwCvNYBYR3NWRaLhoCkAOjHPAIehgNEVZLfDoFqEACgSTIGfoFnjAEcPYaxRg7I9Wr2cjpmDjW6aurH1AOJU9Nbtc93VAd3Ls8ra8xYFpCXUcPLFjd3VBRvVzAWvBMVyzeUwhwRDZ16cxaVRDGWjy7fwckLbTkeoRhpmU4F/PCjahvf4FO+tSnD4ZxIZ1j1CBZ9qAY6oWJAVpALWaNpAMEZhBERssUOdaoZqGWR8gsf22mSFZZRkea2AJT2ZtZoecepAeQ8qzAJo8tIZh6wQEZxhZ46SbSKawxZ5KXr86RgBSynBOuycS1oFZmAfgW9VZsVUrORRgQoZ46oeoZweAPjW/I1XU2vx0e7aQ0RpEFrA8yVszA1f5JMeZuTc2rEPBgLABV7gYlQT+DZEFz989r1dEF93VTEF5RobEF5JsDKpgYKAZqPNPcaHbXpx2gQlQYkF0fBWc4TTwTHc582Bv+fBaDlhorZmU0phmYKp8RZrwARDZm4c870LYaReZVq+CzVU1haR0eozZ0i/Lsn1ZtPps8+GR5kWMV3Z40ZpkWhpQC3gequefJ8jKSmEIUUUsgVSyIXplmaTsJbH8cUyDCxNjNAnWJawS6s01NCwiN8xDZDHYLW5DB5JGOqRE+gAh8jKTQdJ0FjP5MTgKDEFFgXHMN0Fn9AjAoOYuAqiID4eD6XyiewMiyrJ4amR5k3MS0FwZZrJ5jlZrCBvBNZaaQ+CuAZ+IhGKoJj5+OgIs02AZxwa8sFmwgQL5Q0RRL+6CsYBKkgZt/AMqKLAZnkoVQhu7+2KSBTU0sJWRaD3eE16bihj6td6hmsUWcTQLpN4ciHrQ6FVIvQYMg68fkJRGAkqicDBmfp7tiScFu9Z53gVwi935CgZnxzW9Z2MRDgpzVZ5nZq3ZnVZg9Z/VZyfNNOxM9ZmtUwojGrNQQATyTGrNH9U1q0o4ASoFylfBVQB1PfFAL9U6VOcgZwCeO+ggVOMVOTV9e2iZiYeaSzgZzcFrKMIKiUB50t51nZ1ric46bWfOhh2gFzw2H9UjgZnWZnwbVSRjjZntyIcAdMA92XSSKpCF0xdVCF8KIRl4embZV6XyiRNprd50FrKcF0IvGcF7j7HZYErQRLpFdUjeJbQh79WK8F71DG8F9gZkwzcMweCF2skNfUzpic/fe8F0gFx8F8du98FyqyEo05wALorXKDAkQEcgA2DbtaRD5/IgSRgsxzJcAANu4iFyiF5MCN/oE4/brgaFRHZYJcFldRfdHeK6FSF8CF62cu+hSbpmCFxiF7LuFiFjaANTZmpyTZ4DcFwCeXQ6GEoa2CmskxTUWdgD74L1QFuGPWZos0+xgNTZtJMJz5wdgFuGH9UxjNd2fTNeNyF1o0xGKaNrWSFmcFvCFv83J+Nd75os0ozJYQZwmqCN0CFaUbmQSmJXrI9ZtnZsiF3elW3Z1Bdd2OiwBtzgT+AWyFzDYSbyP+WixqanZ7AB38Pb+kQcbDDZlKF2RaG3Zk9Zt9ZjUgddZi5IExmAUslSFlKFjU+LsAQRZw5mbI1YisH1mZKFk9Z4KFqKFr0Efog+npv1wXitaKFr2oRRKMk7W9ZzyFsaoH9nMCFhcFg51cdZsaF5TcFKadKFmoknBxCbScCF3ZmUKFjTZpyF0myWWZ1yFoXwTtZ8wUUtyL66RTEE9Zrq4US4NnZhxdDqF6UQYPFb55i68S6Fqs++aF6yFzKFjMgOx8NwQXKFw4wCl0GZoBX8bxkHYAI+pIEhn9zXIAEKIAouhaFmyF8QfInZztZ2aF5HeTKEQMkaVGOpU4t2ZAnW9ZvaFh9cg9ikKFidZvmOxofcPYXLh5UAMGibTYHwK7gUdLe3TZHmZ5pgDWZ8sFxyFnc0u2ASi4hwZusFggABsFudCE/sKxwCLOHqWUmF9ugXwZ4ugPMFhR5gsF2E0702xMKmief02tMKgUWIM27MK3MKy8ALXIe02lEAR02g5YeAAF022gAN02qMAD02yQAYz+602ouSCcgRHiZp5+qGReB3wB/pcUWO/4AD4SJ2MPCSw8qMk0v5hlqAF8cxGmCdKav0wDKLkKhjdL7gMPYZ3oBGaQiEHwSw3YcnvTZJxbVW2F79h+2FuKx5bVJ2FiXphfkkNxvthhndaBqlPIWk8AZbQdRyqug7RImUbixgsud2F2c4FpJt2F2DhiOFznpl8qIDhpCmYBbVhgHMpIBmIDh+2F2hgLZJ8OF+2FpGmHS1cHg1oxlOFu2FnzxlKxuzsnMFvwZ/AFu4mOiuQgFsg063BsTMv9NUER6jKcvU6vAKyFjKFnBxP9NQKxVgMfWFsUAfw4gYEqOqTzwCg80g8sdAAfuNFHfrcdgh4eF14E6vxo4UePJvuFsdAHspkgeKZ8FcptfuKOqIYeOc2h5mQeFxzZJEScNmUp4frcNwIKAJrj8I4UTh+cNmV3C4D5tKF+6FpaF3hcPmKC+5yl4Y+F5uF2yFrRiRJKcN+YDZxRrMFsM1rewoTyM52LAt+plZ684uR5o0Z/MF9NxmuswiW/aZefoExhgDnQKB/kWp7A+9ClkgYOZx+kQYGGWJUnB+QgLCWUeU+FAW9uyPAKdu+lAZsAZaDHd5iGuWkgRaKHWSINEPW2Q/4LCWSE4HzgJukaA8S38SELWySyC2TK6MaMNZ8f7BjkWhfQCIDfr8lyyMaq6NFQsaFbK4OsrrK8UAG4ZWLKdMJxz8TMJhamccASeAWn4zwsG02mPgitMYVAiIDGM0QMGT46N3xIMVCz+Qe8qgh1EhZkgGPIEWFkIAMWFiWFqWFlACP5QDznGPs6RaEKIXiqTOcYWFlwAUWF502uFASWFnjGGhFmgACqoOtWHny2RFlvU+hJU15gAhi7NH4uygWI5h9J0TqmcGkAUAv8icCIO/NMpjX3IL4Fh0iZ70zRAVTBS2B/8QAJje9GMvAs3CVnixrAXs4XpKS5MLCkFs4Vv+p5xtl2woZiMAMKcDsjbSKHUqdF28KVKpAd6AcKVHBqr3BnAFyf8r+FzmZ8msdyB5iJB4eAn+0JxDycnrK0UeAfgDmBr0ge0FlzlNxFzsJCqoEq+IulNl26ZmG7MV2iaTWPHxOEqKywLghx81Y7nMbqEiwYYiGj0JCezU4ZIwTBZ/3W9AeGJ57pZbkxWL+isMkfnb3ATbAixRjhDcyQDpF6pwCpAc1BbpF0VSU0uLnAb0K5MQLriWRccB6aWgPVOdUKZ8QaRAUj57tIInaaHqZOAHC6SZF+38oYebrwJwtRDS3+wQLXaA8CyGGf+1pAJ7Kl8qZsVcUAVRAOhFY5Fn40LghtmUSAAZ9uuhFQLQIFSF0AUVAV0QEiwSAAYkAcoAWFFvFASeOzsgARQG7UfA8vgQIYWSf4JgyNaaJiARKQBuqtw0G+hCLNXJaQlFq2iGaARKQJOAQcwOScaSQV8aAysSoa5SAECmSRAJ6FJv4OBWnYITsaT46NAUtJAcUAGodRqSOvlYsQZ5KIBmU+hFNRWUAHeBZqVLv4TGSMucflFi4Ye05DbzcQA6eHbKkqOwNE8KeQI2QeVFqQEXHAOVF0aKCFSTE8WBHBPACSmUC0/PLamDZOxOj5gniO5iYwzEzKGFASDQeOsC5sO0iC3geJQflHarkYEC7IcKj5+iAXI6XqM7jhcBAaeHVxxxMtNJ50FYQpwAaCopFm2Zh+Z/V5ssSRS2moAYjSgEfXUaDNqnsEU1MHvpxqxBcYWBF4HneNJ26xaGDeVAATlP0gChcYiQPvBXtnGmKGcDar6IkgFNceVAcQUyQ8BCDJE6MXAGvcLTwOzleYDbzRXgYFFAW9NWQgPPcCYARoSDQAQwhtkgaVZ2ytQfBhGh9oyKaKTEKqDEaQh/P4XkrIwWLG4xNNMsAKewb+oa1SrQM2SuEamTQMxaJCbOJ2AJ/4RpYPqwTuwFcBtp8Y6aUyoVgC9TsZUAC4sH8QK5PTGmBXZzxCa/8twF9woDhAftgRAygBXcxu6bqSuwN8ybPA0LxjLlTmMdwVTACbH+z8pqnUneBjHYdNS4lso424UwJypvSLSBBDD58EAXncfdOW3cetFnkyXlQHMAPMAA+mIsABlBc7vMBJPCgIJqpvCVDxUJQFEIXkrFZAVIDYKyCegWL+p79bKjCSvGUwIWEBXJBqoMHeX0rAqwfUjIAgK7aLnYQ3AUagHWslnHLuUR7KS/GEjF9YmZhmSJhhVATTwfoGeTgVOXWskS9acoIN1oWkgOmF/ApWP6OUdPQAPcDU2iYggS6GWsFyBQYlPHIAKbPSZaYTF/JK6EAQJ8WD1STFu68ht8azOVkYOTF6D5pmOoFQOTF+3ubK5IlUMsFkTFg55pmOriKTyKfz5w3AC7553kiCxOAkhKgZ/E/6JKHwcAk6eqSAkpAk/rIPaQSRAV/inDdC9kPeAYzFpyS0zFjIMaqcyVxF64JgABjyIWgEgQSPcSHzZzsbnZon9YrUSbRlxiWmgLnBdRiegZmf7VA09JcH9U79U1UyjUCYrUJZvMPscqdNb5RofBxB7ZEyJCI0+/l+1EQJMBuQyg0ActZhck/BY9KRXQZxQZnl6BS2XQZuvXUS4BjZ0wZhGFKa4MHAFiicc8dxqMdAM30RXARtPXVhiPwI+tKEwMhAYuK+EkC+aUFrQ4dOlfd4jH74H9F2YAYg6Cm4UqcdVF0qcUtoQtoGbFyNMetoBbFzVFuH8o2QMas+34FiAGSAW1Fo2QXitRJxGlAaeHAoqdPAGdcbbFz6yeFulBofbFo2QeeabuAc9SiihhIADr+mkxhTUgDSv0tZJg95gJ+OOpU2RafGyST5OnzEcF79WCLFvmgSPcHJNSY5V0wWES3UVCr1RNqMbDb4JdroSLFtjXXQ6QgBN47cdZ+UOugZkBFNiIZsFgMF1gZzfSSlfRXAJ2wRxRGaFp1F3ToUaQAtusjYQ/GVIAL35GLFtiIZNu3elLiFuiCQ0ALa9fCFn3xrlCZpDbxjYiFz9HNdrZnF/inKemHRhn9NNr57RhyqcH9NG4hg9F1IAftgc8MJwFoTGFwF+zZngIwOAdwF+7gARkiJrFzaBN3N/Abb5tzFvRh3T5m755usFXFwAF+ch86aeEAcT5jXF0yiL38KMtSvUFrsN3cNBUgAF1NgeuUsSFoXrX7aKatESAOmC8qwUoCKDEWMtcwFstAWvPadioRDQ+pIgZjkBq7UByPe2HaWZp2AL9U+2HVUy9qF+5gToZEnFp3FgMUOcFzoRyCRcKwBcYNM0oGxsgZp2wRzFkShpXF62dRHxvNoJ1Fu/EzGAUX0PcoUtofjFy2JRlFkA6IMVCCAMiQPqtJEjMnFjEbK10BxQZ4mDD8M5R/R+DmBiHFwSwaJsNpu0GFvHFwVkWESuUyCxunZYFTF/HFimiH6gHPADNgWMtXe5owgJGaZvFrXQG2IQVkByxWGYO3lKwcSnFsTFvysMVR3yF+qGV5lMPFjgiLAgMvFx7SPKAZ9qSAXSBQXNAIXrevFz5OdLF1e2dIF5Yu2XcMvFrt5tqsoRDRd5yRAOxmRpMY3FnFufd5675jXFlBxBkCB2cX5HTb+iUQEcyK2AJ38F+iKaMbtPMgZy/Fj3Fyy6ZfFrt5kb8u/U4xaCSM49QXfSSAXWwAQ75nz5xVun7F38AA/F3SbPpSSCAITOfB2WwuX/F3NUhPFjhAdCup1FjGAdgF+bIWAlnfF1XrVgoaCMzdUzZVI/F+qGSzWeLJE6ALfF7t5zz5vVAPdASikEFgCgl7xxckfFjCvoAcdZkrQRUjBSF2fU7rgIvRQTWQ7CTaPXB5gKF2/CRUjYy2UyiQ6FTbFt3xgWnRofdeJDNSGfF//8RgceNpyPF2ukDi+0gljd5t66W9add+U/Fp2wM0Mp3UpsST66YfEzvFlvF4o2Y+5uMQXP1GQYCUM81naU3P33MD5z46PldEWGSpxNj5ygFjDyYcYX15ILVTaQQyiYTAfazHDiQ6h9qQHwl7DdcmiYfoANZgb5ODBV5wSqF3FVAwF1XFlD+e3+KIljXF/iaRJxAoFiNqN8M1kqMvFkWAYPF54NUnF5HFtBKAkYIu4FUC2WZovQKSQ6rYB8Fj7ceYgGzJWkAPLLF8IFSFqnF0N7GwF3QZqezBQl2ukdJHWnFpGFn9uEgAcZ55DiQphmyS0FrIAlp2wfrJ/UYS4ObVTXUaHZGNdrLrWflwSbQHhFA550RmAIFpINfnMr2x9XF2yqbQFnXF1NgCiMUpS5kcoQemM0IQl0t5+zKKQFjXFvKuC42kH1c15w6rMLRzQWV5wBsaZfMmHvHH9A659NM0L5vgFyIFj+cQQFhmQbdU/BYgQrV3ccYllpfb/8W9gEd5wqAGOLIMWlJMbQF84l1GU5wFokIXgyjYenFHbmcnLNct9W/F+UZT4l+hU03F8ZgSFBwIa+VFZECGfBSYASECbLFmZsWMtaadbVTK9BnjungF8iunfOsyU+4lsyAR4l08aQbwD+cPOkKaKWfQV4jS2YGE7NP8UhwUjxZty8QFtnKV5wZYl8ZgVYl0El3ElzZ6B1mLkluxusYlwFAZapa0eYo074l1iQHYoeGguQFoEl0XFokIHkljYllQFsEoNQFgZ1DQFqUmcQl3yiCwZWJ+HoATolz7ZyDJCJLFwUipWKPU0iDLLibfXEyAWEljc/S6AUpC4ElgLPUjhm75/skBuAQElyQup1KPkp1NgKtLF46BuAbi1ckMN4AaxCi0l2c01tUgXFjwFu4hylEKtLTQZvF5pvVMGMejKIziA65z/cBQFmF5xzO4Ml6xlOUlj/4bItTwljEgylEBV0Abhxb5/xDCFQUdNLqAfIXRMlw2coj+Lj5zL54iK2GFt4lgUlmElg5595QU28QEl+IFr0l3J1BuAF0ly48qtLWl5hAVOslxslhl55slhslvnyZl5tayDq29/qVslnRwBnzT7TVaQMVUcMlop4aslqUllwVZ0lqtLKjqTslyRwSO8Pnyeslmw0ZO8PnyaclyaQLslgccpl59l59W9D54Fol7qFg55sQZ+pqPqFnUGQ0gP31M4lg65nAkKIANklnorR1hiN5lIFjXF/AAVgyCeLEclhi4HDc6Ygeq6TQWIHFl5QEA6bXCGQYPQy79QSwlv33NG3TmrFp+l8PAQNIIFt+WPFff2yWMl82yFsqADKMV5sZO9m8Ef9RFWCV5/aNKFWWuZ/aNRFWbu+/pBj95rSActZ5E8B4l8klsyAFpgfdeCrF/XPMUtSP8kil+zgBjZmrF5i8fdeIwZurF188hrFmilyP8+rFpSRXGBkslhNFqQlia8YrwB8JYOwCe8dd59XVFglvZgLZsDIhHZYNolr55lxuTwU8oJQvFn950t5sD02/FsAnGdcLilplcGAZlZeSQloLO+oTYjKaSlpCMz46Qa6fAgahwIvB699R95IC6dxCtr58XCHZYDE5Dol7SxbS+EDVUs6N1QdQlx/U4z5jtgK5Ukclm4lxP2h8eUrFwbJAili31bxHVgcw6rFsB0kZJFsQ4lm8lh/F2yqfylmMAEylhYl/hR2VeX15+El0+/DogRkQIjF8kMHylqCPMKlmBfMnx/kl8F3Hc0ieU43rPd51bRyKlsNpZIFkKlyiSUiyLYl5YunYl5AAS8lwjlYmPbYhewlnyFwOQAs04hcRsARkSfW8T8F9t4MVOT9FMQAB2WaVOS8l38Foz5zQlhVwcfwMo00VeXSlwyljAAFEJXUl1oYImIEv7WElrASZjYaSQdKOPl+wHWAQNV5wWZ5gSC6CF7BhnoACl5q+NWNZyClnp5ot8SvQSNZyKQRF5nI8arYTF5iZ5pVAKgySRF0t5x2LICpn0pgNZy8lh8R4Klw95+8lxkQZSaC8l/KlvQFjPVd6l2Klg9MzwWDKltIORBDGal4ggCJCj2zQSl526P6lial7a5JKgHj+RmXRChFz5qchuDwTF8hXKeTJHclp2aPzpS2gJ6gXogTJoPrh6a6Ni+c+5mW+H8l0VeEX+o03AClpQhJZAYEOUIKUkoA/87kimzxHm8qUMHZ27HJxMEF7FpWIUhuRzKXN6PalugsrClu2gPhyDqaQhKO2gJBZvuZkl3KDMIUbcandal37FxAl0QMU1BIPFvclvD1eoTPRORhQH/isGlrQl/zqb2qSpByW7GIqZckHZYEcARBDLGlyaigVaFXKLSlxylmfBt1ASqBBHxqp1G9JccPMI4XiqFUlpGFhkCEhoAgAdBY+/FwwFuoF54mY8l1ylzadCIF0k8B4lzylwzwCklg4Hbb2W/F+pqHKlwqlvT58FuOYl7dHPT53D6B957aloIF4tTA2QPtqEIFzZ6N95vmluOgWglnt5lOlqPcNzQexgctZ8qEJWlgDdQalspgX8l6cUf8lx95DMcBjZiil4Q/GnSZkl/T5q2lz6l0w2x1h9il77QHQcWywKQgcal2/F2wFyP800l6dQGZse75O2WCWlszBHaliXyA6ltnO/El24lz2ljyloQFryl0QFoSuvJOraR2ul63Ftfk+QFr0lh1mSvQKzKROlnpNJnWyPF+IhMil1QZnIQ0csIQ5Vel/2yYelgV+nelvQZvIgcdAKilsbzC+l3QZlilrg4JY+Gr5r0l6LAcTih5SCIqJUljr8ioWSP+hul/6lqGllulrnHKds4B5xJLF2lmus8xzKEl8YlpP8TkTFI+3JhvsUGgNMLRClnMcaPEYXKgZRwC/oRBl4C4DOlkeONFBjHVfS2NFBsl/IwAv1SI0+oTHfjHScs52NGpBxubBWAHSADOBONWLcctQWRJ+496MpKeOANiFiIQN5C+NJ/2/dQJ3Y8FKMngNe+ywQs+dtb4xy+ltJmEHZ0+luvXUUMf0yIal9D3Aylqwl4flEulpaAYmlwqACUMvOl+yNJyxAylu8TDKXChaKnYRRl5G0XiqOOkSCADegfFabspI6l0F5rLh8x54H1NxgdQeVKi3hlzCpTiaVXHF5QBfFquFq+HQml8yxyRlhJbQSKU/Fxd5sSmDbYVlce2lx2lvKl2KlrYquP4bJ23JaBZUxql/001yDAfmMoAB6Ui0lmtxAc2DmDRkCChcdhVSv+p+Ae6xG4gTx0B1ge2skrOU5quDwdfQFfpqhDC8dH7cXBUs3Kg/hVmSGZsQFAMoSv1SOXyDBl/2ybBlzjHMWlvfeH40AJ+qZR8SlsF53jCyZBdGlnWlzrQRMKdts5jC5yCVGlkGaBkCK3UqgFhzrDsJaBli/dKGU2nTWT5kz52E+BQl7elhkCOolkH8qJmG2lwmqFjUhXy+R5txaBHSwCkgyklD5qE03+cARJSFHdFBr4AbvtBZl/qlrgaG1ebN+DkmZ9GNL4YjcOJ+OXgCnAejS85lnZl+al/Y3YrFir+VnAfH+3gFVjU3lHeNUwD2boCCNicBmTk6DhoWZhgtZ0pUVU2rkKh6SipASVhsx4N0KkXWwqrRE09F0n37ahaTpl0yifklj08Xb53rhwCsYjZ8sFkolhu/dHRaaPKTFiI2KaIbfffeC8sFjTFyPQRzZcmFnTF0DgBu/Y2Z/FlkTFwFgbXGeZlTFlusF9PFqaINX4WmFksF+2gcigHPFh1EU2ie2gVipfyVRmyxMzGRAX1FwgZo0xR58Q6LBpFz5hq04cSUQv1d/MFMlxeB7shnhAC38e7U7Mly22qiWr66F1ZvLbI4+qcJlKgGcJ9ymdXVeiyDJiXBxj7VTZ5mv8ZZWHjgZ/fPffefMjKACSAJ1U62qXffXywIcfVP88iKEbFyHuXkQdc0moCSncCyQDVlkKgLVli0oBaMiHgNC07uoFOyEkdMSGTMmfbQEVlxLZlzlUsqHZC3KuRPYEZGSYSH3UeWcWw8GXiTbB5gypd4WNlq1lxpfLacM7BiAy0SxE7uqcafJCvIhK1cbqOG1lkFcQ1AckCR1l/P8Y6AKR0z/AbIAF1lpihhBh/o5FgAaxFG5cTa/UCDdBcARqdnASsFnP8T/HPrUCwQWw5LIAXHAGtl0IJzgJkqaZkVJIRbtVM9unNl9dgI4AUUoMHtIqxPPYKQROkQGZOK1gcVFDglnAAN7Qotlq1geUO8taSt6SqJqYAVkQStlq9gOQ8CiQUyPe2iN1h3rrcHzCKJXbyPWF/5l1OfKbhm558yQb1hgvlEamJdhzymVah3ZUlbBqc9ddlu1l7taUsgfdbZ1lnA6Jq8MHtWalzey+9hoqwRlxzaZEoYLkKw3NehZnkoLZlZ9lsx82zU99l61ll64M1lkDRdBAMtl4AQPoAAdljnZPZF2FxrRACHgK42dc0y+k8olINlgeAiaOh9xxugtc0I7RwWJz/EExWWAIvrB+9Azn2FyGJ9AkMIWHVUVl+qGfHU/OfL8AJqprotUZhipACSK2kmGgFlUJ+dEEMiXLoXVZ5NS46oLPiIvIRFp1q6DAebnilSJpG0LL5uuQtyACNh9j8NyAChF+MxNyAO/uV2APAiXzc+WqNItXjl+KwEzAWLW96BMqxCCKbmcj5ocxZ0oNNHxN0K5t1Xjhvdh+hpOzlsamMOBjGMWcJ2k8GGwIXNRq6XUJH8R52FuTctyAVwSHzl7j8Pzlu2Fo987zl36y9c6ULl+KndxiiLl5iVOLh/zlzyADCEQLl6Ll+FJcrZya+WRp3ThuLluFxrwRmsoKK2wvaHAtGcuMx4Muh3JYZSCz4soLlnzlh4eUrlsLlxLljLl3PmWLl4LltT2GgwNG3MTlzpqZcSrCbK9Zg8F0pUCIlhuSS3Z+7gcMhxnZpQmcxwejlxM2qqUVjlsNl1FZv6iFYEa3IFyyQ1l2UCNVxPrUQqxcfve8ZalwYLNRMkabl0HnWbl0rUhbloowTCSYLNXBmVbl8SAdbl+bl6GvLbl8cuH0Cvbl+wAA7l4o0zblw7gT44BTcuNB+NJi7l29gcfvPFAS4oHiEJ38CgyT/FobAAR8D/q8iQU1cXZcdsIdBccWJBsxUPMYLNSC2O7lmv8B7lhTQL2fIaDV7li5cVgyD7l6jgGH1fR8X7lpFcf7lxWZveiIHlidEHL0KrcsHlmblufpDblo7l4Hl63ITkeHHltblvHlw7l+bpZ7l2NqZHwN7luHl1vkhHl77l5RCF8ClUpmrEAHl9Hlu/B8LaQboDy8b0AHbxszwS2p8yQRcULL5sTODlxzd3Y6SK5AbfYJep2EtAVxj9+UXluXYWHnZSC0N1SThjuF/jwSTloXlgVxhMkIWaMXluLh+YJ1Xln1AQXlyXl9FFgiAP1h7Vlzni8NNI3li0odXlqRAM3l5z8bniy3l7hF00oTMJgXipiFGPB1rJUuUox2GxCENkfi0t3lviQHuvQhJr9Ne8CzwGCFYem3B0A/0+m+DJrlhMaF7cGBJh0iOnAARgJ5xlrgZJF9jUDXl2Xl3pZRPlqXllbaGXl1Plg7Z/Xl6zWlPl9FF87XQtrCjMLYhzHMfTCWzUpWmMzRPC8RZB00wVCQFIJhzwf/gGORlCBDOtUrUhIAJAASovL/F4i9DECLgCPLZo8F6e4M9ZowWZzsYPlk54P2IJjyLW6HaFjmsiHlgv8Y9gQ0QeRQGMgNG+uFAcwAOf6b3llNcQi9Jws7oq3JhsPlq8aXn2GRZtrl4n+zrl5tU/cF7fl5DZxAgSI+Wo2tNxyghjNxiTvIkGUPcLd0i7QCdKC/l3riAL2GgpRL+oBFitFcmlh5iJ5iH7cZ/mN5iIHcEJUr5iC88aHca88OHcO88RHcc2mbaCGcAbHCC6yV/XbXmDcGNsgMvpDUAbsgcSSQ08NsFoHYAZplWadXgC7ijdIHrUWcqJiAa2qt94KJYKKLMGgRDrRgwbmXTCyY34fzoLQaEbZVhW3SAK0+JCaJmByGaCPmLUS1aSm6KX//UzwMiFdd6Qh6AdAHp4FcqNvYYfFsEfYfgUEEOmANY3O4qJsgU1aLsgXmVXmANxgYX4fdKdmgE0F4+Odwpz9AY6WFJgOQV+4uH8ka84nCMEG02uxyuSRhgcQimNkV73fcmUlipiyDLlWkaX1VVXClfNRwtLmKTeOpFNdYq8K2jtU1ULHgzfjWDcvLRaRq6Q5mB9W4XlP6u2PWtQAzNNQYqc9W8pAVwV8uKXTjO44HvpkNFiEAWCSnjBlq6HS2zFp1tFw01QhkQE8o7YSkSvFc+GSC12LLlQQq9lbUZB2gKXemdlbbY6ZMaMzAZScnYKO5bfmxKNAXh6A6TPqFk/NID0ooqvf6QajGaAL3yVTVMzWilMx78hfK9CVPaRjgA3YK4eB3luqIxeIV5+fDhqvPlTScKA+uu2iFQWA+7+XUQ1dzZwu84EMGiS7dscMClLSVLWMQ8uPmISaNOYdAgHfIrLta3uTDpSYV9FaI9ys9VOeQPauMEF9E5cGSOmaR5bSoyumaAVbAZZQEywKqOBXAqJWYVzWaf1lMiQSJGV2yMiQL5qU4Vtf7ChSaUvZp4PmyBnjXvKO4V9AgHjxlfON4V5p4An3OGyS3zc4VlJyL6K2Tyn4V+HqP4V1zM7g4RrvMLp+lKMsVUHVcgCU4VzVURXW8zlKVilzi4PmV3NQUBl6u3g1W0eRrvdE4ExyaePU4VupxmzpvnU39AG5KWwWSyhUH2k/+sgdA/Kc2xUAHcDeaUnQUK9KxBEdN0+VdeIEVhWZJDgd8UcGEfsS1I+bdeH2yGkNRkVr4Vq0yTkVzq+rt2OwZN4AN5Ndg8wUVxUWZd2IUV98UKLbLlgJgAdv0tV4CKEIKmaI+nUtaKwNl2/vNEJc9EOS/jatRBlyMGwLaIK9SXl2sUV8nid6AaePTkV9oVEWVEiy2hZJ5bXggPOcTgKvKTHZFqE0CK0pi+U/+2k+IUVvs+IUV6uAQ7RfkVzYV0EADGSVgSxMql0qW9S7KTLgzAjMq9gK5l2+8wfOgpmT7ZuKBQaun81SeTYiGK2aTEjNZCDkcQfOypc3rwJyponHN2QK2YnstMxALBcw9Gf/iK2YlDlQ6ZdP0un4bb1akRdKOzaO6F+lHVcnC1JBur2EckhAptrJTQ2l5F4rwQ3ejxHGwlOexPx7LkxSwxLZAIx5vZZqGWa1qlV8r/OelQFlCw0mY3EsRQectShNeAASwirZR9+cA8AUMMuMAFh9CNwI5yQIVuccfZuecVwOqTpi00AV+ZucVsZcxcVuEy3VuK9mD2NDdlD4WRtcanpdUJcgDJVAWKRI9pHBq5kQC8V7mtLxNDhq4Bu7f079ugC7fiQDUgMEQJtwGk4q48IdGGNilfKlQ8oQ8mfKoXWdIIIBwOOzcFbd2BqFZyPc+387YVSzWp38iCVrHyHKczJwZjNA9RQVObXKzUelcV7cV5nTVviJjWPMV5uY1LurRzEEfYsVwLO3yw7kBlG2ysVunKK9mN3kiTjfMV6zaekGcsV5NmVhcksVi1uSgALMV6DFpX+Ht87302ocnFSNq8p5mNiVsN22G7XyshQSZgVEwHJ4VLm1PwxZNi3igfni9YeQ42vOcD9isSVvc6N3umRnNWSw8V6B1Y8V2qOU8V8ZJa8Vi5RB1jc4Ui4JY5HZCVxIAF5ZVcVncVoiy4fdTcV4TNSYe9CVz908iVhiVjuQe4WLCVmMgLMVid1dVvafF1CVsyVprsjdRfvkOboXcUEbCvp6Te8jXKg9RFgAScV58V6cV/QM5yVhcV8yVzWGHCSSyVlLurMV0GdANuiHuSyATWbGSKa9mOKVlmIG8V3cVgiSHfjEbHKyVgsVi1y+abA7RAiVkGw5I8/s84mGULMXMVqLVBLuwsVupnUsVmRWDAAtQwYdVDwhfvbUoV2hGEkKp7acoCthZreOtKAGmkbDAMWydpCTISvkVJrhkEsnnizbWROgUf+7nqZSC88C5uhOPmE2O6KwcqIaLWgfgVJAJ1cs5NUZscNxpmK8BEOZF8uKbAXYXlKau55FtaVli2TOTKcV0sgei5eaQG1OBXxqnU2ABWEgBp6OZgJcKRSV54WZSVwjyV60dlMC4JNAczMF7QM4qhoKVwjlEKVtcVjZi89QfcVtPya6V52sUY/IxeGQHNI1Tj2S8VjvoJu1ITTJ9stKVxYOQHuFVoa/FjMV7CVlDlOxmPKVqqVuP7eGVmMgFDlJ4hodcTxKPXBQHuRGVg66WyVygAPGVlg1EsVmkHNGVwmV6zaLj5+DAFDlf2THSFwa8maySjBqF+qcc2jHI01TrCu9S4Yi+VmVDWzzgKmmSnSqpApMVdXwE6BLPiXCIN4slywIecfmVlyyGOsgDysYhe280EQVSVA+hE9VRW0ouBhgTY3oczUV0CpEVVmV30S2vBeqIVjVe5Z3uBL5yHWV7ZydXl+j88K28nAPWV42VvvhHCgLPiFEF9iVk2Vy9862VoLgd28z98s2V02VniV8nACoVs6VxHNFEbIKVnZAd8Vzj2T8V1ninki0WVugS0pc9ns3hAXyVhNcAKVz2V0sgd6V8T4AyVsKVzqUrKV8ZgJGVkmVg8HMmVnCVqH7durKZuRGgWGVg66eBrDOV6ZuTxKH+zCKVmW2QhqFLujGVrmV9gl7++GVuW6VwGV7xdOQAaZuC8Vs2ZVb2O1uKCbaTi99MzQxRN+w/A7r8l2xi3pMJ5rJZVick4qLMWJMVDKptxxZSC0mjN4sykFxK22t+a1/Ddyw/NQ9VWWV1qXLO8x/KqaV9Eeedp+vWZh1aFNSCAOSKUkV6FNWIV4/2zIQFaV8GgVsrd8c+nleXlxX8lI8gk8JCid28s+VzzCy/OFnleXl7FtdiV/l5928h+VniVpay9nlRni22V8+V9kZ0VmFyGE9HZ2Vm+V7+V01mUEIOdVUUVfaV18Vu8bX2V5+TFAS3gRfUi7I8yQxV6Vg6Vt8VweSXkAP2V828mBVg86IOV7KckOV0EKSCiippfYGKU2ri3ZZiBuiJfhmwkziELfsDUC9RSdzAjbAZkkbYGUFQQC2T/eE6yLIeccSCi/LIeYLmROgOKEQGJzhPcbzPHh0GALIeFSGRbRb7h29zD1CEK2wIVmdU3wRk2AcyO2UcyAcLcKbEVEKp9MgCCYD8wDeQfZAHuRwq0mQSdvaYgAEcgUWOwNRAaAfpq9/MAfneiACRCqEAXjQGGgIwdWeR/cCywSBH5x5VeQAH/ACxKEQ+MAfcdaVfAVCAJMAXHAbCGelCvL7CKJTyAboOFDwei4QxVjKMEwSVogQPIL0B1hlLYB4xV1BoOy0b9rVIddHiW1Re1RZMuoNRaniOMumMujhACYEH1RdYSBJVx9pv1RS3gWGcFJV2JVgaAZoSfpqn3lIpmE3ITxViylW5uJdqKQKh0kXxV4xV00AfgmD1UIJVypVkwSTUoXEeS1RuOQYpVxmASWIV0bXtgZzmQgdCx8KX5hVl8/+zoMlDALCvbwWbtIM/VD1h2vNTXWzGk7C9bdsIlwWo5eqzPMs6nJd4geSMVKs3qM2iIsOqZ8QM7ARRgQF6Udtf8Ad30pZVucAXmYUpUNGEJ/WiUMdvFj0ATZV6UMPZVgYVpEpVKsucwKDWmKwT0J2zU/BiGOLcflxRcQkuC1ATtUjThq8mZ5KVeV0nUg7yCxQKZgNGEDms8AM7taFVAFUwKuxGWKPlFgi0jciopV2C+ffOMP4eYefuENcqWzU6CgFRcGgpcFV7C+MRdJsgZkDCj8RokHN+rZhgZyKpASdbO4u0q9Z+F94AfF5DE8JrnUBKfGyA3db+q1XBm8jP6xmVrE8mGviiR2+pyJsgaLGJjyFsAdoyQGQV01BLcWo5PZ4b4YJsgO4um+DAVSCkhUTW/SQXPLX1VeMAfissUOBvCw5IWVVnOB82xQVV2o5YVV9kaVd+ffyb8AKiVQIRflVtOYQVVuG5CB8EVV5ayzJqKVV5GyCJE2VVyKi+VV+eyxVVmBVPVVpjyb36ONAKiVYfhbVVqZoQVV4fhYVV8ajC7x3mc6RV/mcmaAKiVOVKJPuu5QdjRazi03kucKWQSrkYauANHgJDGbR1AVVmBVV1ViB8IKZPzZ6RViHcy6sOjQcKZJ1V/1oQVV8KZN1V2EgUVVgmEIWcr1V5LlqiVTDef1VmuMTUvfIWRAAUNV4xQCNVrMGK1VwtWTNVuNVi7xmTc5/aAtVo2eujQA/hNNVq8oQVV/Jl/VV91V3Kub1Vu7Qd6AO/uDSOmVVmqjUUeNjWmXciPNCAV8h8IjlwUrW3i/KSPd8uTcz1VgFNe1V5GyVxCdtVydV94AM5W7tV7NVsfTGmlsGyc5wCbNY28mtVoSZadV+f+AU5KiVa5hNdVwVVpXqrdViKACB/XdVqiVHsoGjzGmlh5SaNVwtWa9V21Vpr2MGyQR8S9VmBVIq5G9VnNV+psDktGqjXCuOSVEiXPf6QNV9HyMtVitV8NVgwdBT6V9VpR8E9V+NVxtV3SyEDVltV9SQDAGCdVwVVyODf9VndV8WcmCgE6BKiVZAFM1VyAcC1Vl9VnVVmBVbDV21V1VVsGyeQRMnVGtoH9VwtWCwQ/VVndV1cGShRxMqg3BuOzOUcuVlplV3v0xSmQDKRNhnm+SdV8OYfLLC7KjzMi2MecVPlVwqypVVk9VuCWZay31VGGAOoS5jAB1VkvOeDVybQGTV5cGXPWBJKfWc87gFbcpZAdxppEhJSwVDVvGyLVVqTV61V9TVn6qOTV7qHdgkFdV54oeGwObaI9VslVmTV0WZZdVvGyC9VnTV+zV1TVm1Vij8CUFFzV7DMbtQKQelxjRTi98wYfhQyoQR8QSoWZqaVNbIVfp0Y/y/1eluqgXxgey8jVwtWWNV21V3UhDTV2FbOzVgzV57VeGwbj8HTVozV0cshLcDAGQF+ptNC7gdr8zVUR4uxpYLsyfQAyVZvlyn8smLV2wAmgqCc4QYWECmOSKbXO9N2tQqb3VbATdRQcigWGGFrV2UtNrVvuCDrVqocjegUzVpLVmTVx4F5PM9LV5Y2jocV+W/ZsAjehLcVNVorVs1i00ua6yb3VLZNLrVzN/b3VC3C9bV87XVbVobVqHAzbVwfO9N2pGJZ1VmNVmTV0qK6LWHImdLVtEGbKqdwpn+zZNV9SQNtVsItfvlakpTju84Ve28idKfTVmuSQzVpX+JSwbn8+GwUUeSRgLzc6sx8JGIEgBzV5LV7zVh7lfnlE0uOu8FZmMYaVNIQ2rcE+rHMIZst4YfnlXWTYhKz06OxaMHVxDVx+rJMS/DxMqsNJMhLcWjVkbVukAJjV21VzTV27VmnyUGoCyqSTANFNRkcnWV+cPepncK2i7UW9WqFFxnVr+VhamMAgJEi7HBwas3XAMCKF5SOFmEa81hcvr8QTbNYqVp0UzAb8EE04DqQFZpVj1RjAWzwdu3UJs89cjmwAzBat86Qu2mkOC2Q9W/Zi30xAaeiCVcGBT980/27NNZ9WsWyQPMTL8l7AYqXLRZTj8+5NUOGbZybNNNhh7FtCWBYehA3VosYCj885AXr8sr8o3VtCYU98qzAAwKI3V7oZvXV2JSjLwVAKNL802K0OGcItLOc5i3WNKE98wPMLu1YxQYS2a2ANZmCT8ixVbMKHm2yfhi86SFNcpVyQuMZwTOc1L+FuB9joRbYReOk86NPVsgKiJMgXMBcqLPVyA8KOBvPV/sAYcIb0KSIte1BEyQfRoOJ85NmOBcxGAdMyybS5NmOgu9Jx1IpbN1Khc4YenRgWzyblQTjSPt2qhc7g4ZwS6cxTC4IfV1dmLT1L8gFtcABzc4VfKEU7Z33MEwVrfSvf6NqLGIVhlHa1BZO80e9DzAT72pfVuMxU54bfVxfV01mZZZTp0QUycAEVNNdiVwBEJd0G8QF+VgBVhgstp4CzVD48Wsc6McY6qZAgROgz4chYDcwVpL88LycK2jCQz/VvrF5FaHiVwBEYb1Ky8S9yjlyFyGb8CYg1WCckAATTyun4dN278c/6EctECEVfHAeeQWLKEAAbyumKADe2pMc1SyFUmdoAL9/STsDA1kAAPabY6gSIOPtEX/xkAAToyjmyBBivlCFBi5Dh8g1rHyGg13pAPIkPwyhxSbdKPjoRiMFdpePxpKwPnaPjoFLSF3NKW8ikmSzl2W8wzWp1SKTAP2cwzisQ10WV1d+UQ15bxgaVweAGQ1mfKiBYPk8P2c9ey83c5bx6aASQ14HgPwxSzWnKcjYVjd3dd3S78o+soiSNXAbyvHvyagVR7RjpfVQrfUCFVodxSdl0UF0jiqKCSVogaHkroloSuenKP4HKvIQSfYpmVL+UcAD+SbTGH2VlBV5GAZw13gQKwR2E8gZCrq27HNJJUz62EngqBuYI1n3WzTwIpuNuVmw1Sgyx5sh2B7GmdUV0HhPg19LRW0eVKjfEV2MV2EgNsqw+hN1VQ+hPTcwu81TVEo1rBVu5qGQxhHNfI11KjQzi4CmAkswK22o1lfKhiKu4VKI15GABwKe/wSdyYMfOoVtEsyfKwo1pfWlTKZ0VVo1vpbNNKcI1kt5+JhrNiUYe69mZ3up4VddVYiPN8VYiPF9Wz9q9FmZIeFNLGJIUQc9O0LPc+DWsAtaHWtuMpfO2Y1cO9IkAfzuouuN/6QSq9VmDjWr6OEsVkckj1p5YunlSOfrDwh1vLGsOwmBofZbMlbq2QKke4gVIAOxGF8yErRfTYWMFX9ilo14MOKBuVj0AukAayOnKZSKqhc4PV0W6Xx57lyaCV+JyICcrKrTJwVSKyK2goaA6KzDpa4e4v+tJ0LeuPASdE1vIgN5Na3cmjidi6RSTA+VwlmOqyxpKO6VfXVXeV086NI8xEXbfwcbu29OdQZOymW5AZ68wZO1kKvuAS985k1siuM2QGsgDSMLOsoeyfh0QbADw1uUF2ETJtNOVULD2Tk1kaJUNOPKw87ZEGAMdAUU1jEIEAAcxEYstBU17cpkoyfqWcnCmmqHSPIQMEOxA411AAI419EWUGbVfu7teR0eTyAEU16qyMU17S+cvmSU10rZaU1ntuVP4PCgdU1pIEEaipEC0M6X9ivmWSOtTPiyrGNe8W9RTVPIY1zYqTTwRtyX9Wm/RViyFywSj8wbtcflfXVJquzFbfsy/uhPuAeL8kkqdGERk1+L8+PbH8+MsYNF4CCYdmzLqANQAChhIk1hrqRRx7M11pATpwGtRKhc70KAt8NvV5dmH6TbM132wNE17wATpgc+l2/2868oewH7iFtcOSKr8gLdyOAiJkRiOMPqRM92bU13U1mdcaaqVs1nnlR4FiwE/jwG4YI0VCqBOcYMQNMABRnAPIiLPlHWVs7PU4aW9Wt6TSQxKc1kmIZYaHWV991ec18K2tQKJSoEc1tOYJNyEP84VV07lJVqPc1978g811c19iVuc1gwKH/V7jPQY1gE15GAN/29OaL6V0ggS5ENNIGz2W4tQ9GLExC2eeWcwTV12fG+DHGyCkeQd5ujQPlVi2eZSCySoZn8olAf28/UBMGyLVVjYtbNqVPmeey8aVsO84OVidKcC1xC1yC15TVpPu/wxSSYIUcz01GC12EgW7pgUc72MhLWRSTMUc+7V04u54od2Vgqp+yczuBmzWj1VYi130HbJZPrCwzRIFbH010EKbuAG7s29Ke8V80quWnQFKvInPIczeodmIeNcZ9xe+MoR2cyQJ1AGtRaQwb4YJNyC26fVVpT2VDVQwRrW860cwwRgU5Hg1L0pgamb42Pjl82xY81ptVJzVtdyOS1syyOX8xS1z8SOeuCI12luDjyH01oE1ySQA3yrQQDaKogOFgxOuwFLuyS+ixADCEK1wSvS5uVn+AT0KgSAJpcGvAErRX1V3FuNa/FoA5y11WSQK1oD4H0YgWyOKV9y1ilFxZ0Ly13ah2fSqjK8GViK1oK1ry1oc02K1ujQZuVoBgkmVDy14K1qEhny1k9COj0K5ubCVm7UTK1ry1zhmEZ2hNAQK15TKFXAKLVWOV9cV2WyWoDRsVmsOgYueq1g8AUeYBxAG8B48LdOysL4B41jUgVDFzSoT7poi6KIVw3gEck9i6NzAEbswcPdP+5Z0SypyUmM/Eew1hh1LS8xypixs2tyaIVgBqbs1wrUbuuHxuSVWPzu1a16E8JZAfwRj4812h79RHqy9wqREXXa1hB1V2h3yps4awvaOZgfeILnV81ip9BXx5+vLGE1+8c1srEHVamll98lpAbASl3YJDgR9hg66YugY1QN8rcctGugNxI6zQrD2y8RsMQ/jY32+DohFJyfi18EQQS1/VoXF/d3Vd3VFfqUmjEhwRcQZT59DukFy54QQ52kW0dOAFuc9BAArlzGAdygVKi1uKaG1vo8J6gFVoKlpkXlOoOnyAtowL5wBf2yG1l4AEm12G1xxoXt2sm872wWYKPuABX+A+ZjpAV4YIlc14BYZQLjFPuABEjYmrAW1neTPH4KO4ahTJpqC6hREIbaGBCodMiyS1h3uaS1lLVmQ1KsKAosJDyLYAFW1rZAHgpVOYKZoKS1iO6fVVsxAdW12dQO5AIlcgF5xu4I210W1z6QEvRRGWbW1/1oJNyPXW6yc4VVj1c2thmg7VJAfvENpATI1dq+2a8lSAUkoJ21uSKCVNL21t21iAiuSKT21121k0yZW12dQVW1sXlM219mATW1rtLTS1h3ue21g78x21udlv6ul21xnzUkod21yLVrLWVJAY3B3217myJg7HO1jO1oO1im17O19O1/DWw212Aqq2acO1yu1hIpV/K1oMEE1+msmQWa78vqVqXsi7UdCVJSAVu1p9U3vWpMaPS17Gu9u1zu1wCQHg1MvWh1Z/Cfbu1u6aXu15bCce14QVAe1zP0zkB6C+Me16fWoNRTu1/NNWfWju1wD2INhmmqHsazU18iRrji3KyjhoRX+XpKepjFw1oJqmk164er7AVEQeNcRotW21hW1vW1lLV5uhPo1zEs5S17UtT6crLRaOQKLWiEqfoVrMkRq6a9VJ9VeC1tK6PDVZ687XyM0ck9VT987XyV4s6dVL/sd28wB1+Q1u9VdLczsx1SVRkeJycsWZGB1uvlaB1hQSLDVOB1lQ1iB1/NNMo1uJV0B1oo1jmyfB1wO5Czi38PeC1lYJ5dVEo1wo13B17fYeO1kiKGP8y1W/VV3PmKi1mfKpB1+yc9Q1nOB+FJeycrYcYS2/zLf+Cg4g10q2hGW2JBm17kxJm16SUSeTWEKJHkh21/VVlNNevyZQGd282R1/u/dagb+QDAO8R13W17MYfW1++12TcpfW3ZZWh12n8/b8hh1u+12Q1xfKvTc9Q1wo19h12Tc0x1ix1x+1jAxHLMPWaCi18aVVTVHo1xfKh+1uBV87KmGRixsoPbJZSK8hrIVz3lGO1K41/AwYAAYzxbf4MmVdFmHWV2UtX5VW9W2UtQe17UtU5h0s1+lmL0RmlKS7UUJ19iVwtVc/VniV07AGaAWchgFbecq4J12CWZJ1r+VsckNJ1gBV5HybJ1kJ1+ayHWViHwIp1ylZgcAeyQVVcgiAGM1hqgDqVsNmGdUEWVPuAIG1CAi9MOYa19iVy6nPnR9p1zzgTp16+VylZnp1kBAuJ1t5mU0wbA6j0xPBKT1hjHECkK00ytp1j8KCAix9yr+V7WpiSqoLQQZ12FNVz+Ho+LxJXJ1k2kHZ10UAeZ1/d+/J1kFNJFNG7ZnvVnt8lZ1vp1qp1jZ1051ufNc51p9UvZ1g51qRAYqSfQeLp1r+VqRgC51hZ1/p1hOwEPWniV951+51lmVR51jp13r2pZ1451zlAKRgO51o3Ry51gZ129W8F1p5mUVpGxEV+hUVSGwkG61mHVJZSDksNe14stRHnQiSAF1gyEAdAIF11510F11yAcJ11k1oqjL51n51gBV7Qc3zyD0xSCAUIwK/lBJ10BoPwxEl1vF1o51qK2pKKPnRxgBNZ129WjJ1qvIRsUPJ18p19iV1ZycouW9W+F1hIEEWVFl170gZqVoV18K2kV1mmqMfMQxiTSoW7pnjCzx19zBouhA9OYm1kR1sm1uG1iOS/qVKG1jV19rcLV1vZp+0mDKV3XAZScwiHSYGUzSHs1mSAVbsCi/BlyfLuqW19yIbUtQEqdmzDHEQRKAaALuiKf7eW1iwk1+YW1VkC18O84DbcbKiR1rXWmTV+XlhiAKsKeRACnKH/yKB16hAc21rPiD8KBIpAiAahASDRBWIQTKcN10FybH3Ne1tyANN19QRXR1xO1gx17zVsxAVN1/KSATWwt1nFcjN1oVyKS6ECmEt1tqAWfmRzCGC5S3+NVMaS2+lBfppwIV3x5qzcx61w+VvPnAMVd8clFp3e1ukxPby33gKcIH1NBNAUWBn8+ViScaVbrWwcPPdVLMVCNNbLc9VigbW2NNI2KGnBy68pBZ7eIOfynHAC32ARUWnVsS21DVNdi6J257WzdVWkhfYVGskcDWeipyAAQ7pv+lRq2NLyIHwFzlGtNYqSTVVIB11p1KuB9ey5Z4Zbx3CuLMWF8cpT2BcPRjVeskT98z01aSuD91rHyOcPOLik6BS98ySMP5tWCc1c6FsK1c6T8JKgSCGBbASiD1vc6KD1/YVtxxGKQQP2ySoBlpqGWIts0425yEJCiL5yTppnO84lC5bxxemK4VAMWHBKE9bS1Ba36GFNa3c9zyDGjE0AEAgyeTcXAc1kSmJSeTIB12BmQMSpd0HtuJS+O91+K2+Q1uLW4h1jFRV91ouhHHAAYmWZyKsQXvpwzaOnAHHAG1OdsSeJAHHAPIiY1XMT1r6TQ4isT16LWbC+SPyDxTDjkeoaMg8lyadT1xssC0MGhhPtBFNLQaTST8/UmN5MQAqzS80nOu1RzSoCz109slqBldKSkF0Q1DKp/CtQdioulJl2iZTOKjWR26bNX0mLTjVsyZMvFCGCQxFrpkoSYk+a6ydJEF98gdAd4g5QAGz1yrlGU15z3Cz11aUKztOys8zleMqh7892IWKSHGBtKQOAqGqkkAJ2ycqraZUFqehLrV5Ai1HYLjh+KwQ7pw2F40FwTSl1yl9qer5mtFFTKLb/CIyA8CeaMDUemwAAzTKdF+RleyNMRLNawIetFNgXV1ywxUR1rJQZy1aijROS2m1wC2Cbg4M/SuYmWkOn80VcEEWNFkKyczTyFeRc8QoEREgDas16Q8RfhyP7fK1m5ufZuBLujwkqyV6KVs44JzjSiVtNgbzAGGV4E8I71odcDGV7zAZuV6PXT6REG8Kh/S111AOTa1ovUNa10MOTKWdASLUZ4KrPtiD4WKxBLyHCdhWWIRFB3iHF+iXRU/71+f9KplwRLUYwLr1uccTA7SutYH1lfyfo0INi31s78BbOJP1rKG2DGACqKJxFpx2ct9Tr14hTXYmDH1n9AIetQ0ACXgLd1ioKZSe7AdLd5ez17UuWLbHH1naAPH15iYJGtahiznWCH12G7VnF+X8FPRKpfVNR4vhQcChru7HNen1iKiJGltycpX+L3fXZVfwtXqc8nigo+CEVFA1qDSeY1qDSRY1lumF9WuUMGu89kZOu86YV92ICjAQ1jUvKCRyYTSuVxeey0q1/uaakRZSgf+QJX1uRs9qF+X8KaKtr2QKwP1mObi7n10fIXn1zT+JZAS6QQAescAAU17LW4YKKLVZUVeX1g0KH4RW9KR31j8KbyVr8sKEnRVuBoog31w4mHvAQP1hHAMRi10107QKXNboJHns1dcPX10IlsVwfHNJJoOcceX8c1Mnn6NpQMXunoi2H7Ztmftmc7aQV+gn830emXu9TeKeSmn1y1+TBtIyV6fF44mO5qCKiZn114e4MOFdpM6R9xgb9WuZQeyUjx1yb08nisG7FH15zZzCIFCMFv1zkceAtZD+X7KtKAMDCILull1D316IVutWfjwXZ/C11ra19EWZpTJ9Bf01pV1/a1hGcsiBSVpOcVkngnZ1vGgf82kSsT1pkDjCnyh3B7s1AqIMM1vSPX4Vfsyz38mM12dEQwKVZyL3YM/1kjR8r6d1tDSc0F4FDAJ5xjM1/uhbM1kkF0Z1i0sOa8ws1uFmTceES6d/1k2cua89RQPaqJb1/2ADE1tynDvNDYEaKwGpsfvNC4YFWVFtcip1r3VPz8niVmp1qvIWANtEF9iVsYyNPlW9WgyAH/KlmVDJ+1JgcUqY9yLnVoi2HT1GP1oEANywXDiI31z/gaZwHDwYzeqycx818v1i8A/I+eM++I6TTGcT4DaAfZuWP1gh2P/imGwIf1og0H2iFgxMZeeMeLpCh71h4AALu/pU6ijLmAWGRSQSWGRKk8GVuL712GRAlkHfIgFSJu1qCVAypGOVn01uccNqM1LwBNe+JBJspQMSs7af559Zq0S1srgdzW2zUuqAPq8PASStFuEi5VgCVFZ8FzngckCdoBCQK24tAWxM9IS8oQaB1k6QaB9BmQaB3BmLCoct+NTB3Ds7KSO+Ce3+Rx16J1tEVl+1noV+0eDS14SaAHxemMRHLPhqzQBNUWjy8G8c39yjYtBCAAAlRWV8CIUbS+5V4/jD+12TGRKwPZFgzAPvW4/KxwSnCgFNNTL8+jAYB1jmybFtejAcB1kZcT9h4QVcoNlA1pfWpS6GoNpfW9RQRkeEXl/N2D9pnd16oNm+hE9VXoN0bSr8VdoN5rAboNhoNgYNzEsloNlA18x19oN8Xl8h1ioN2Q1+YNx+1z2siXMvQ1nLVn0C+jFk1+ptyAq8kMgeMxDjWyQNtuM/syjYtUP1kmp7X108JUgN68yuYKyGuygNsWlbMYeXsx4e+gNhn1z905RafEMz6R9Mg79QfZuH1S4f1tOKFgxBbZA4YFX1zHUpSoI4NjAzc18n6xmdcTgNjYtQEjUfILyPNCV+JWNZCF6rB4Nnn1xgNnktA8Ko9aKv1uBw1rNdfUJI11tXZPnL+bJ1AxISCgSegSTXiJf/PwSGRAL7iCLWFLcQdxDIKj4Ns1egw3IggFmwakNvyUvX1/xq84NiRYLIKacJfMtI9lxsIKKyXXNZODTgAFABpZAUF0unKKXAMkAcyO9NbGb88/NIJqmXWik6If1D3SLmvOn4MJqn8SXeKcmqssVPI2yUPcIpPQxlfW1LlQe1UHJSdViuQJlWASVtBc76yPlV3HtL8aaDB5IeZL1qC1m6FZIlPwxM0NxWVPzVx1VixQV52rF/NBaK18y1BEZEVyVZu1h+1+yQA/NIoN70VA9isV1/5Jdrc1+jFmVIXc6d89k3GjVq0NlL12CWX1170VX0KOyXZ1iO8xDoVz8yUEe2TGFS833gbcjZQTOgVMRCLPcySoFg1bCc6Q4HkN0yPQcVisQLzx/YNwWSuSKsZmb5+lFjUDQL4N2w1ETVUdoMF2gR1iemJJs4QNh+SO71mBKo7kssN6QHaQN9kHWQNz71pJ8b71xQN+W8EHLNyVUy1gP15GATQNr0M7QN8MS3QNyO2fD+P4NgyENioecN5GJRcN8PNWW1x0V8kV0NSFYtev1sboQENy8oIkpJP19ENtZCUcARvbY3jc9Qepu4BqlwxWs4UYKHmB7IAcQUet83L55z2N3ueOBrxlPcN5d3QGQe75ecVeHICSK9ISC/s/AwBGwSAAKSSMy2rPksGyXN1gIwdpAdISUQAICNgCN6CN9q6N7qf8N+kcwCN/8NrYcPCAJCNhTcw0ANCNlbcjCN9ISMGyEP8p9V9ISeoAaCNtT2TCN9q6LPk+jFrosROFOJ9fBiJjFqvleWAbtiLMyM+KByqMkzP+6YhTW4tQLBp0xYLC0dOE6s9SQfbg+iyduQ3LNUadGytX0YyyRfKOoxQ/KO0NKYJtM4kNis9QN3qyPiNx59byV08N4SN2Xg/XE+kRLztQDeKLVCiMX108Sso8V0Y/eiyXUDG6VqzUzSltlod2sjyMvfAJSVwyNjCVooeYTVcqVurh4QSFGVyn7EkaKz9T8ARSNywQ4TVTSNsSNuyRM4kfH1rQNgXOhnp9a6Bl6NPc59dSHoZxoRvU6cM70IE+sk/lu4mBEmXy2pmV78PCwxA0CbU2kAAKJsA0mUcSQ6UzkUnR/ChNA9RdnnVr1uyNSZDQKkIqwImEZJu941pf4EW0JKNohQ6Q7SZ+BswLhoF5M1O3Du47PTP1+KpOsqN6nZl5Fx66SIePyGe2E/FgkBszDUJr17KNzJNRaJGe5girfHiKCFkgAMHAIOjVw+wkls9uBpJWDxmmqEc8PyOtju/ccnAZxiNwSwMkzJWkTH1wJtNVV2DhA65yAZqpls64bSe34AXSeynyAyeh11xgVPz+asquSMbiNz8tZztZ81Mu9WHO8dq7NAVdcI/Yw7nfbnUSNqd7DHVcSNo+l23uoR1IdcK1etB1bau/KOu3u6Tu0ENsfulQ1fVoIVe8RcEGN21bf6Nr6N+DAKanOcFzmteUrZlHKOhFM+f2ugWyFcV2Hg74cMn1Za2GbVPyU4gSAkyDWcnw9KxBE0nMyVgmNpJ8V2KWHgo6OqxBftySVw2m9GsOxOQIEh+GNiqdJGNqxqlGN0i1quV3SN/SN/6V2egKOhbCcNmN0dOUliw9HMqVqDKHKV5+F96N13LDPVFmO/ZuAGNuFQTau8fuoIzBGvCGuwBEPyUqWNlVoL0scGNrGVwIipWN6GNjxSOTqdzumnMHGNvfBYaunJ1OGNp6tBGNygQDJyXaN1IAHSexBOQ6Nn6XeTBFGN/H1hmNzadcbma89WmNyRABXVQj1bXVIBupJ1a8NwxlW8N+aoB8NmgF3gOZ8NqOB3lsx8rHlYD8Nvp6L8N3AYCeQH11PdigWyMCNobu1AATw0d4HEFVPdiiCqIaih4eUMNgHcgWyPCNm6u44mOONvYatGN3qyd3rabVIcSGvuoCgMlgNeDGhNIqN3aIVJDasSIetOFumMJGYJNaNmA4Yv18P8pumS31xFyItvSGV09s2KVrLibomcWAAQeun1h67JuNjT5+yIK01PuNveyAeNs316dmC31keNruNw6V9uNk2q4slvyOhfkwRQdP1lHhTP10eNtk9IPjUYl/uNzuOkUZUv1+CtS6Jbd7I+NyeN49YLxae4N28Vg3NE+Nq+N2QZggofuNtaCvl1Fv132dNv+aSJHARp200DC6hKveNqeNxBfQRQOgN6+NrYVE+NyNcpgcleNx+Ny+N5BtMv1hpJdmoPBte+N36tC+N1mSZoVy7a9bcWoOtya/2wY6U5R4Z6VyNF2hjG2wKCF3aIaaN0vyOaN8UjM8cxaN3SFn0gFaN4ByMH1w+tDaN3uJG2weA+osg24BVRSKSxK2+1re0kKnaNvwcS2N/aN62N/Se22NjwhViQeHLDiNsiAQGQAnJb6yXiN2hW8ze3XaWHgxXeydxGvphSNiZtORs8ExznepFC12uIGN2wGDde1tuBdqUWN5bWJ2MJRNwFC4DehXe1RNqWNmoq9vews9WM9GvcE9xOfun/0l4uhYK1tVSxNmGN0GNqiTCle1M9as9VZuJdqKGNhWNlVoGSSVGNmSN/dV3C6FhN+9ez3euZem7uYnNQSN2NVU61C9S9RNxrnXteureXRNqOes0U0WS8Ze2JNqmtYDe/WNhPafGNuH4KxBAXaGENjJN0mN1/iMtemMOAUO95aSVw7xN8yNsluPSN+d9AyNrmNtp4Bp7UyqoO+kc8HxaXmNyjOfmNg0BwWNwNtYWN0BKLRN9ayft+uBew6e4de3ilqA6WDe2RNk8N+RNncGDhNt+8LhNj2gHhN745IkpemepXequuDmOuMANNxWZNi5q+JNjzghlFv4l7ze4hegyBTWNhWNkr+ExNys9Is9aLxBZN+WN8fuu4KxJYZ5fHZN8fulWNxV+pxN0xNtM9DOcNxNqLVZWN/xKNdqByESuNyJFauNtdrWuN1aN3H16hNmuN8MGFiNwSwEITZyNkZNpcVk+N4ZNo+NtuNrn1+eNng9TeVCeNn+NrsADn1o586FNr5ik+NoeNipg8+N8A6VYeueN1FN0eN7FN3uNhFN8A6HeNjP18CJYBNjeN/FOTFNlNLQ+NyBN4+N0eN6lN2BNnpNB+NqeN8XAO+NqBN2+NtCVzEKwlN8XAZ+NgM11+Nrx19+NtV1FF14PA/TaeBN+Pif+N35qQBNs7KYBNgBNuBNnl9cBNjrUGlNut7BeN+EN0BNiHB89SeVNiQmRB8IzFBl6dmhsyyeyknVNhcYH6VpfKDVcgoKKTx71p+H11YwOtSDlWZ04YeWBH1oOSOdItvp5WF4pFjK6Z4NzLRKcIOUxhd0TEluxmS68+x8gU82kZ4zADhWl6WaCXCwKcGAM7ASy01FtZRV1oMnBhK/+9Y+fjvO0IEG0/9q/QmXJh47AmgAEb8RL8lxFhnplSx0OQCKoObkbPct6QIdKpxoF/FT9KR+pI0AkW6F/l0qFapqv8aO5fFwUi8wJAV0eaZq2GN0a/Bj/MAL5s7KHhzTPKMqEWxFreJAZNLDAeRh+hQMn8ThQaIUhboCT6QdNs5e2u6TMxhrVC8SICgDNN/qZL1qBaGfPrJnyVuadOJdkqEQWAt2Q2gHLAFQ8wDS/qlxcUZKwJOYCvkbfkDg7Yn7QzK+dNqNrd2SDSJBxGLdN3gQXKgYJ0AHHQ2gCU2PKqCM6Q9N1mWIjoE9Nq6qD2SLvlVmSL0gJeCKVCKRMbYQQmBoCJL9N5mCH9NuYQBbZADNsBCIDN3HoemgjzwK+B9t+tUGRNNlJq8gIMfpvGllNNsdaO1SkNqf8hocyLNN5PdblgJcQUCK4Pc/NNwkpwtN/v81uqb9N1mCbYQctNtaGC6yWXvEgAa6yDu6KA+OO+QQQGtNy40T/ibfkgBgsGUvfkjOgA/klTpwwlnpsKvR9dUBXoSYuAIR/4qQsgKgwDy1eiwfikATN7pQdagKIBec4eGBC9NxgyR+kbje+TgXUqCNKkkIQ+MPAVvUYIHEU/9QjHMyaW2gmLgW4TLm4ZjSgzN9Zx+psH0EXOyeCbQgSaeZr2hBYrdXJAvqJ8W+7aHzAa8uAUS+liQmB2BrQDeHXEDAF023PlUMO1MZl8o6VyAUAgQ1V8zVQCQHC6K9mNBVx2gVg2gCkC9NzTN7gQLU8ZKwVZMhR6Y/+S+o3wmFfqV73dQVqyGX6Kjl3VNxmRh0UptPphn29LNhTYwblg36DWZ+jqqiENODBWIFTfWIeSUeTFlq3cDA1j3gUrN1j8VJQmp8Pt5BwZ0Tq5wUOrNlIILAeSrN5rNkiQF6ZuEQMg0fFJL/EDrNprN/eCvTq9ouXrNtqQerNzu4zrN4bN8DcLPtMbNvHqQjUQbNhiPfeCvcAX2250gOrN3ooep42QIJbNucQUXAT/YObNhWIdyGS/uKbNpcQLFcRk2fbNtFiGlwxrN7bN8MGOrNzgIBAIa7N8DcUbNurNxRwCweLbNzFljogfTq87NpaQkEE47N4oO4Tgc7N8yYxbNzFl9wADYy64sOrN5TYq7N4HNjpwMa5r7N6KUSHNhwZwbqp7Nvikg7N7bVN7NhwZ3IAKItXGAOrNxUGHRkNHN/eCzbq37cc7NwiE+PJ47NjFuGKAG7q87N/XZJESY7NrbAc/mc7N63weHN/eCgHq/30OrNjEoirNobN1ODLaQSHqr7N4mcI7NjnNiG8ZgZvrNk/o6nN/nN5kgGKAVHqp1scHN1X4RnNrOcvHq2rN5HN8oPI/omXNy3q8XNwBbBXNhfuH7N/nNpnq12QOrNzwsMvuY7NwwAXnqnXNhXN3oodnN7bNsXqucyc7NyBkZkkPHNsB1BXq6rSNrNzaOL4E47N7gAega0jEXXN7RkGXNkbPF5mJ/GVnN7+I23No3qkHcAHN45iGXN+3qt9pAHNrdO0PNj3qniPdXNrHQmXNwPqmHNurNu0IvnN7bNjBALbqr7N4AwmXN0sgFXSQyDenNgMaVPNrFcIVOr7NkO423Ngvq43NvrN53nFPNzFlyMDA8yL7NuQIGXN9vq/kWL7NlWOBvN4fqyZWbHNuQeW3N1YgcXqtbNhXNgciGXNxfq9oAXvNivN1hgG3N47No/qh41InN9OkgfN7fq4riW7NmP4GXNnmWQnN1nNsKUEnNjnN2KAZfWSnNiR+xfNjpwXZWZvNiIeW3N9/qmZWPPN4fsW3NwgapMAd3NhXNjC0DQIGXNqAa2ueL7N1e423NqAans5q3N4aOW/N9Aa7ZWP3NoYeLbNqTGEmAeQaQ6+Z2XGLAehl/ilut5gSdZKaW+aSfp7oAP1ccCFpjmc5FsyxNJl/9ASGXA8Cav6NfpnpVTVRLfpzwGOWeSsedUmG5bBTRO+hEGl7qhudNGi+esIPqln8vZmAN3iOOwVBQa8SmqoLjFUOXKcGXhgBTYpN2SwZ3ymcY8nQV4NFgy2hNAVt1uK298c5nSp61zt1rPNOk0GIZ3t1vNqr1Nd1NmmXRfyrWSINNOK2yd1zfjShxhK2zEZ+d1nHyCxVOymZ+tEkShRwcEx+O+HvDIGBAQRoXYQn1q2Ond17YVWt+UcPA91hBXY91v6pzDvJsu2ziyT6Ba6UPiI6VW91pSAe913j1muB591rj12qmY11mCclZZE9VID1/oNn915Zmb7JfCSb0AAD1xD15fcqoNkD15ZmY/kgtpCD1rwtli2aD1+skWD1lrgeD16iXQD1mIt5D1u+hMWyFJgZSmEoSAfgLD19ywHD1uuBz1KSriAj1+wt4j1p0NuseaFV3i+QjAKj1j5NXYZnqCD/Eg1yHP1MDeymJA/NVj12p1+3Ojj1hqgZwtnkip91xbaEWV/j1/mV4qSB4eGF0De8wzac7XF0qG1slfGSjAPEqDnGeiAThqM1slaGVT1olUeiAeEybC+IFSbqGRgtFskbT1hYAsUAVlMFHlYx835S68uGyOtyuM1ZjgtzAS/T5qs+O2pvVh/K+TLlLp4b8aNZhs+QZEtFA7KUMNz1jUNTUV+/NPeAYUB1wLcUB/KSR5AIPUBmwFmEL69UL1iPc0OGdQACL16Ti4K+UHidwJKNAQHCoO2hUARrvSKxA4YBYAzUtH/yB9QHCSImOGTi9uV3L1xHLAr1xIarACYr1+pe4Cc0cPLNlCr1hT2IdGI4UGr10NgKcSRiWTDOYNyuH85n2acSMuSAEuWjZ+fJlt+s36SOxtoRWuxl/FA4GNgtySQKCcIcCrCWNH1tYgBnMWkARjh5hF8CIMZhkvjfEV/qZTjWEkeejg8MAJ/lyMwVJF2gVuaZKpAHKqXNSs52Hs8XjwGg0lKN3DuvIRRAgT8Ay9A7Du9V2dY0xiWYjfQK/Tt/MWFEj+hDc33yAh8KaKtk9GHkzc8tksx1gJctZUZhyAbGANnobD0/Uly0e+HyDJNYjcIsybkGZmAN4+/e+2+StfY+KtT0tmcV7tNhVAGS1CMVsVl/kWPDOpSOzvVcLDNNeb0YPNASieQYk9jgc9O2Q5zKk6VVHfRd8Vvfg1YATMt0QAbMtvMttlOb65l0nTK6LN8/iqUiKoHxZy2uitaTDOJiWJycqBmsFFZycsjT34a41+qGVYAWcyd3UJg+x88XZWcpiEEk99enst/kWcR+GHcMjAZfWTHvVZN4MOf4koctvuUx0lIIuEVVcctg5NsxN6LxYUSZXkIiEIHxWHnZSZPLAj0cHjqXTeQv1l8Rf4e5nIHfRGganctgryNUu4eBeg5AyRO8bUjeb5AXct8MCfctzvRVcssTeQ47c8tsTeQcgK8tk8tgQKe8t88tyzZH4ehMOV42JBVl2gHct3Ii2lS9FMtcs9PRdGRV4Rd9y3bUmRSrOAb1cZl1Vr+GIWK3oGC+MkWfwuxUuAhIqyybb+mMSAsub9Aekp2uYUo8sYCvqcLACxkAlISYP+QaSLadLb9aWA9hq930qGKkXtGM8Fc2BPRWhwDmoHN8X1hMqVYP1f+MBw8cZgEHoHrs4HiBlYJk+QQqQ/dR8aeFTM3s5GUdzxDAcWJ8QgALsgBILJGaC4WI6XT3KMeTWMRCSt1w0btzS8Wc46AT+fn6BkVHXEM8SZSF/fmaRUDdNMNUDitpyYcIJLFBLymeizVNaUtyU3y4TMwTXGEM2LRd/yf0YffES8oItaZ0wDLxZOSO0WCYCptABcWVaSJu1jmoV/4BytsNUZyt9FgRw8Nyt/W2AmALxNqH7HseFPobPW8KIMeCtZgFqJGxORwK3CgI41Jit5d25dyZSwSodUqwUStqPgXpcrPSfSt9DcbRJKgBMr/DZ+6dREny/3k9nM/Z3IJWKaKsQzdNiphS2wKMkDVi9LjyuXySOOE7uLYNaOBPXgVyfAOCqxShXRaFeEGoUtMuAsncqYG+Q+SyT2MkVrBWlEN8oLFiqYqtgLc5ple0KjN2FlFkyOmPssk1RfoRIALcGWHcV4WCfRN9FozOt82zHvILu+qUSggE+hvst1v2KmBN9F7atwctvstkct5fWfat/UbI3YFMVCzBcctR05D0NemcugYHat3st4ctpkWWctjkWJCl9CPT7uIHufnraYAoOMWVudZ0yat6QGVRxT06Mk1clBust/Wh3N7FztN9FwWLaYA9AmWVuQbtZ5ssqtretJ/uooxSR2Kqt5hhUkDINKYClgENZalzaQxqtyqt/6CNqt7OC1FGaBqQWPX+e8QKUW1D2ABGehaIDcQRMtrkWccSNBAWK3Gv6ef6N7Eb/SMckhWBboOdugXGybnMVnmdMt7/YAst1Gk+vWP52hytgCt/aNwv1tytzHdLxNzveb++FP1yqtxhhBZyDsurryguCtCcnry0XyPKpoxQgb1t8HBpxXIePGtwjBFqtooZd1SAOCuNgFmtjIxFGtvvyDo2IgsqGuMG6I8sgYABNgYTgQst51yBcZG0gEbuorCt/UVnmUst2lOx2tg8CPrlFL0A4YAqMGCLTkV+FDFWujmxYvWw/lL7R0kumuSOTSttpMGVfPkVc266WPxgTVOFfAT1hQ47Gm8L99UI8FqGVUBSHAizlu++mbASYbJKwXabUiQGEVrfjNu9RFfOLhsLCe3ILi3C4WTgmKAVfH1oCNjUurkGKhM0pyU2tyHKV9LL21Lbg2NcDDzBOCq11mugHywmkRYB9SHuHw9aE8G8+r7uNlxVUBA8YQbSCXR2K5LS+/WtjiibOCsQzImAFY2ZAxboOCGkozyQfyscjKDu6zuyPHWJAwdM1Y7cmjSUu0qgKioKwEcgCi4WAy1CqwWV8L10WBoC4WdDTU+tu4fS8ofboMMjZQaMs6elKXE+V2ATzANulTVU61hEm19Mrb0lomh2NS0m2/vNc0AGYIHmmbPYQC0FsqRPYE0CXCMPthk9ygd3ZCsUXek0CNEuZsxYJLagIGhAbaQZ2bCXaCQKk38Mitl0t7VOOxuZplfhhBalusslzTYOM/7qzEHa3M2gspnWR9rUeFG9ONXdLzHXoyTSyOrOESSKeK1ltD5B462DJCz+QAhHf5OwwnaeHeYgW/yEoxBN8HtK1syMoxIExdaUvhoOO8U3+FfAJOuCSVAcs8Y6KKgOclqAVF46KKgJclqAVK46czjTGtmRt/kRwTIGHWLjyhRt9RtvhoKjqU0bXWN+C7MPu+UbdXu/0AMb14uM+yNk+KaQGUEqtjM7Fhx5eb2lHxqhs+XPWN8LJ2ss2YzHdZgAhhBgRto5PNGthvLRWtjpSzhsOXyYAxfN0Zzafw+wqjeBStGkkleKxtkz+Gxt3CWRCSX7RUEqpxtmGJcas9L2KRjKT0gcbOWeIsYXbUlgQO9Kg+SlF9SvGbMCC1UJNAymgW9XbSRPzibFkzfgl4WA7k64LGAkUqti3slmANrylhhXxtuqtikDBqtu62KetprzNxOcctf8AYJtvbzEkADpt3QKjqt68WS23ccteBS+tddGk56S2BR5rmcctMFcUxtpJk9VBUEq7Y6Ez+NHHMGS3ptkLu+kRFZtnoHYxtm6t96Sv/RXptmu8QEWNYxAckuGSSJto0+aJtmgWGNSOJtxZt3OYcfnSathuthHk40hROtuBhcRt9cs3FSiYELExaRtuwAWRth5ttIVRRt8Rt5IeUpqNRtimNTRtikDbRtimNPRtk8HdZtxExYGPVluECtmHeXptmFtjDaHticCtocHdZtoCHKExdeIRqt4AxcctMQaoJtvfBSnRZ71RetsGACGkpx0CmNKloJoNOwAY5tj0+U5t5r8uxtrYNBxtzaxCFeQg83VNrBtlxaEpu6RVnktQxUmkVKXUNIMhQdG6KB4YHqqjZ+hs7Kmt33OnwwJd0dDSMGyXGe9V8gD2EXVPGyUnVK/Vj2IRIu8lweBaE9oYBDCVOWutzlRfgmbJt0bujuBP0uQ2nGnoLusVFwNcA0uWcnLLUxDltlk+TeVbltw/LBjaS8odDSP3qU1tuocuh8C1tlWu99aESsNRGaW6SNfMWQPpYWWxd2IJjXSRmU5AW8gIDmewbd2V0lVSRGOqis/yX2Pf66SwgVyA8MoK22W8x5s4cKezcNwEuA4YG1tjGSGQzFWumdM+HpHLR+izGdM/DK04Nh9yO0WSLVfNtumVs/yB0rUUoULGDx2WxS182Micm8c+6c0xpqYKx4DQBC37suo1VU6HnV7tSG6nWRDUpwXrrG6nfRV5WSGx4X5Ei3lbE+LO+0/+6uF+w1ZfM2fyJos7cuTKKOqFHFHe5U9ISc7cfCQYWQI5hZwAQhJtCNyWtpE1xBocjjJGVaqc86ulpmRmVvFc2DB32yfJKJZAQ4StkcpQu2byrQAjTlhD1cmA8bwPZwS93ESMZaV3/1/hheZcrFrKaK0GEZkS0xgagxS3i+O8OiNfZuPAmJ43MRhymlggVLEpanAIlUGDCY4Kodtj5KjGs8WTVxU3uZ0dt3uZ5VSMdtxJ+sdtspKGdt+4BBdt0WQJdt1B7Fdtzytt7wfcvI2rYcc/F+znjcwA9WZT8K1EQJgSwMWDnMhUTQKAp6ssCyQ5kOgVEf7IiSel0DdlSmpSH6f20xxA8AcFqiGdMyEyKzSqIZPgWVKFzBttHl7BtlxWGLRSmqvqtum1Lltoat3n1d74PltmMPJI2IVtrSOoWVcAEeVt4rCxce/Ge6nyNxUsGyUnVBzQJTtlnUSZEFdgJVtzCA1VthXVdVtiSuhot+BqO1traeiZUeizK1tpNt8mrOGrUTtoxU23Ug48CTtnO+yRbamEBWjPN+uosqLdBzt1F2Ittpl6RC0mdM2oqUi3fqtsq6dLcR1tii1YluzQxOf+zpq3Stgo+Xycy3W44WX2PDdNHjqEacsgmHZVvyAlWu+/6UbHCZHe40r4gaM6UEJWkyDS+kWjArtzwl6M6DQQVIiI9s6QWDMN3I1+p2eVu6Z/SuV5jt5RvYwWOJpAOjdAcEG6L2s++tlnePgWd6cvZxancBiSCYSKnialC64AEISSniEwSatU/rtoZcMzqO3IYbt0bt3cdDfO+dxSJCRwvd6+/MSYQbVQK1o23FC4mtMWehLacctcxV2AaeoSMUAdvaDKAXAC4wAZgSfTXagAXAC9oSZq0vI+eP0ioKyoweabT0VKKikbBlMVdfchYyQIaOl5wIaN2NeYgb8CBIkxISQAAIG/NllNlkQhIYJBbAG/u3hu3QgGLBIAAA2gAAfZCEmrVM8XMD4Y8ootPEF9P24NEivWRCeQqca2bMVatPSEneQrmvy/eWdimPYANQFG4yfYFlEERoD8GBJ4N43LQjZ7Mm+kk8rZAQvW7aprS4Ak1OAapceXDHzKprO7WiblJN63uQbQ7Z7kBPZZhXx6arzihwoAIPRGXBXTcOOm7bez8TT51PFN4DnT1Zs9haWjH1r8Ui9AeVkjzUUdOUvsQl7aL1ds1zxDKs4p1V0X/v/jEb5zF7aV7YgwUl7bqFjL4GKClQirUtr57PIWkkntN4mzQBBUEFSvQqoNkj1VTX8Fnph9siAiWQSzhsiAiUHkxlI2udpNIWqre2sn9ZQMHKWkw0babAAy3NHZkEyDdjXdvMZXJkbbzqZ63O2EzsAGQc1D7fLZkbIc8dBHdl9NbwNuIQrkemJrPliX/4GX5eNArTAcMGv10blok4skwL15sSLHUGahQ8QR7YwpD5/tl2MPIAwc3e7cK8jJAAOtJgzh7gAtqlvbAaCk9FW1sTmXr53rekCpPGXzNTyhb7bmyTmXpfsoojC1wrdjI5Ggr7evIFSG2r7fxCnBHMP/v+sksp3Jsmsp0vZxUKE7FlsMxkYGB0tBfzHqGmasjjrtKsECgK3trXrwUxH7dfICr7dH6mUVioUmGQFclUqceLl22smY0v6aA5qCosjcrmcMtTHScVKxrSrfw1IEkAHu4tbBHtderQFDl1MrZCiE8foh+yBavdhjYgGWZh7slyRCD0RigFrrd2wG2kG9hkL1tdbDD2XF53IqGv7f/skp7a0mGeQrYGxFjbz7Zm1gpXts3CO3DJR0FMge4r7AdSjTXjh6cQb7ZcPDJCRMUyxrYMkyMth8wAOQsyn3Y3rcThRvQ4QF77ZWTcJ7liPioHeMH0L2VoQCaVnoHdp7dz0nAwlOxBYECW4G6AjG7Y2CpIQrP0oDS0dOQrVMOOkMo2jKwk0QrVLqHWlsWdnJGgFq7eQ9imrbH8purYk0UEHcPy3TUZEHeE/jEHfysgkHfdhSkHe00RkHaSsGlsR9nIUHYWMhqbfQJnbfEtt3a23ouCUHPvzMyhwTMEs3CNmizan/WwEch5+xxsCa6gUbxiFheFg8Ez8YyabIsXsuKlXXiyaFBvixZRYHZwAKqgH/7fSLbJVdAHYV1RXwBEJlrraioG7+EgHeliWJrNXXllrIz7Y/Xh99XAIAsMjygBV1YBUywwTmMD5Ci/boAoFubjsHdSrOWUsKLX8aqoaGdMAMrZB6DqlX8CQCgKZqCMreFYTh1OXrODXz4aFKcGVMgk0UysiMx3/dlOQuoHcL2UiHf+ACOADAHZOMEtomw7YE/2RnpqHfQ3HSHfhQEz7beJmR1bXjnr7cb7YMh2wyjIHbmKCMtkA+ZWIDYiDmMD4bF1wbraiKHdZWmRABtFifdJKHbcHf+gjsHZTmQqHYaLRMtaAHd20Tt7mmHc4rZHNR0rdcgIDrbtmR6PP3VtdAuMjzebOj9Y0bfv8iUbZZhAfNNP2aO2CBHe/ci1TWR1nNMh5hkNaHnHQZYS8bd8rUnb2gLLUGnHLUSfoF6LTZ3HLTvjNG4MHf3HLXdgRWOH/EnCaXHLWRlCNPi7CxM/lFvBy7eJHc4dL7QAKUAeoOc1tr/MurdzBGS/t8vr6EkggE9FRt1kdvtJQdq7TnTPzdFtICp9gJHfcsEd831c3rACibbNaxM/noaG6vkrSRt1iIHYl13PzqYNTNpZ8BZjDQEDQCKgytsdgq2slBeE6Slz51mAcJShGykfLK/pyA8QdxhfvvWmiCwkADyZFX9hEYvpPzxhVyStEZgGuwWWKRRrZrwRkFi2RgcviFXqNPiPGB9aZlyhiFhXIFsHdzwHvzLxbYGbbZEWGbbX8uKBwGsoeuBWHZDwgCKjBZhVHeVZktvSqQfJHM28oVHf1bZtIA0jCI3SHrqEyADSy4HaDnqfXvtroozFk5nacBFJkFlWWVu5708zrSNRK1yRkAHXPm0t2PLgtmUHYIQDQjxEbcREYBHa5inT3iyIB54nHLRObaR8adHZ/sm6vlhgF5HerTK2RkLTPpCoQ6i7XoOrdZHbmTfnxVH5X4BzpHegYAZHa93o0TdKWVH5WtohT0SaFgrICOEiUfGiYnP5hlKa4fEpXi9Iw7PCXHdaVQOVmHNiKuR+fGo4CuKV/2B3HY520dgEKfENom3HfSQ0dgD6fHXHeyX0vHcKRe7UGXHeyX3trSifEKfAPHawvUg/xeYn+fEuKZbEDHQFE4AdoBSzBjpWM8S1wAaoCirGZJFWMsToC2MoaoG/wE4/AKcg+nJcLgE0GXMjQQA48TQQHXEjQQHHMUwzS2rboGHprc5yFroHYljQQG2BnN8j77pdrZL3ujjE2raINB2+eOqs6CuvaRXYHKXHhQHDKAViQ/XiXjn4YUggH8iQbhD59Z57O8/gBPM6SjcTd5HfiHczgBkklOKlSfNR7fnTm+sg4yqvUhZHYYHaRQrYYKZHbHHaLMkkncBQuB4Ku4VknbWD1THfcQF4YL6EmmciurfkneJrSj4NKAjHAGYIpYqGVym4NCJHbNmVxQGFkkI1fEvLHAAF9ZpbenJ1MnbqxjBsnZ7q2tVS7JmitiuV6TMNyBJFmB0SGANO1GsODmMBMnf58o5KkmRCcnbzzVmMmXkDWuTcnbYaA8nYIrK8nee1B8nbraj8nch+kOTkD9flLyHgeJLysfsnrWtlvNrU1sAAzpZ/W4Ty73EQAD0DpO2Uq+vy1ykwfPdO6lTCHYP5ID0hWRjZKXRKqe/vsOhDhSPbLwHY0QSd4RplZAReczNC+1/4pksHwVv6rYk7cJHkI/Mc9aqQBZXPXpiQKUjkD4JxLlPFEAYnd7WiMwKdXzhCiyqHMamNKaqXC3koOfJjSl98oqIhk2CuXuRrcrrdrremiU12loAC5BgxbfouCWxgtHbwWKd4BNRbNrJonfeaH9TziAFmHan6ZxQBxWBUDZCdfwd0TABAIHSsUYPG7mCmis2ncCSe+kjRb3BED2ndabf+gkOnd5FDyEJOncEbBZlVkpxmsiEmjbS0fsgxCF+lHncpnHvRBkQHaQ/zJVaRXAyHcmne2F09FRUch+Qs8EiiIOQ7ZLlIunfonbHzOOeb/4C9AABnzHgBbIwEDV6dFsCniQHRne0naprXUnciMSckBSssGIEKXMnk3aTB17AdKzsOiWndkxjlVGmnI+nbdnx2nf4JgOyqsFSdUjlVBtTl5ncYt2+ne4AAFnfunaIiE73ghnbk+1OAH5zrJbG2oHW3k1Mk6beEncRnc49gmnaSyGtf2pndUnem3E8EhywF1nYpXsUnZ4WaNnd8vo9EkECSjQLDFkvHs9bJz/mmqmypwJhAZnYHNesgjs/g/yx+qB1UBTsnDbbnK0xCqdUjKnfEgZ6miqna53BqnfXCrqnfnTganfgHcDMjVVfKnfa1gD0mkuRandS5RrkiBrZ2YZSzK87c5bZ6ndbwP3fNENUPfJdkhdHl4YotmxCcFondlUDmHcYne2F3vdELBVmnYC7g7JAWnY5nZZeyvUmendWnbvlE1bcrKKrre2nZYMF+naiFjabYykiOnfcmzTSS5t0kImBPguncxcGunfNZbuncnkzXxBi/hAIFSdNenfWndoyrNmJbna+nbccnbna0YE7ndoMEBneOnd7ne+Mb8MX8kkKFeX/thnegsDVnfw2l/xxLlM1nZRne1ncIh09FWA5ExndJQcP+AtpbcihonfooW4XFpEAJnZJcjHUWJnZcLNsCgNGCGZlvnce2hIgAvnZpnY0XotnZAeHASERcsbLCjVbFcB+FDZnZOndKHK8TRFnZw8DFndbnYkAClnYY9efnzlVH55XgXYXnc8ciQXdn4rvMV3nfFARc3nCMARnYLnZPneLndRnd8XL/nb1neknZT5XIXeNnYNnY+aGoXfNnb6EhIgFQ/g+iqC4QHHvFkzMlBwARep1cNfbNa02FdnZ8dmjbeY8nDbeT0p0vMz1vSlfJ4j9nbY3vw3CF0iOAAawALnEAHfmIUmuRlAEFgrygBDYhGR1u2mMrmvY0bzzuIBl3v+LVrbtEXbrCk+OzygAE1wS1JFdtlIVEXYTs3YoDcThtMHQJndHb14FbK0SrMDLbFyB99RCnZFomVncVB00nDB1JbVmUnYnHbb7YNnc8Xe/cgknb1nZNneKaA+be8XcHHdPWjpnZCXdzoTCXf/namXotndalP24L/t2Uqq/XsImTTWgnZYMsSeVeZ7YwvNZ7YCVPZ7assTiz257bGLl57eJAH57Y0Rg0UCXawRdrl7dF7c+ZZE0T17ZV7ZViUmYzkWl87c17ZF7bi129QLF7f0XEvjhfGv0kYk0SJFTyJEl7bZhH6WT5Qkl7fnDwYteGUndlYPzkrSVdDbQarkbbgkoClN0bbdAuynPrHeOgUiovT3m/cj9dY5PoI5VTzVCsixbZiFmmqjYRdrHaUbYYdTmbW/chOXbiYClWHd3tu2j1nYbrlUTYx1UCXduTe93vbbgibWtokpSXyjvh1UsXbDNShbbm0U8XbJ3kqrKgFQZUoPTHhbfE1nHLSBXdWRBDTliuQxah4QzBks3tdiVHX0QgrfPHZNUUvHc4XLXHcPHdvHaU/XCwZEwEgre8zw3TKleEVneVWCmbemavDHV9bfeciA5knMBAQonoDxXZR8E6bbRoIxGSP+Fs1OJXficf80X/4Cd+icDarcZMFmvdXjMSjymQTkXHp7yjkbYhVWHynEbeUtX2nb14HIUrmZXO7C/ba8kRKbYE+BW3F7LO7ndcJXdbb8YhcbcyUHdbaA5izYxDTkFddn4qx3lMgf5LIf7ftgZ+cWaZlf7eeDcIHZcPF6lR+GWaZVYnf9ncjMT6XpqndPwa1VQjndz7dDndS9mH6AzUm6/PayixUXeneFXaTjVXnctVGAFgtYEHUzuYj1tQ9rNHqs1y3RQqd4FBQ3dnbY0WTgTq52RoCQOkyBh6cVmdlBQzOmEowB9srMXccaokXYGHc1ogDnb1jw/qq/SXtXevRl66z30wCIT9tpplZ0Gn8gKsfp/spAQudIjvlBaWmnj0t/XjPqHKB5Xcnrf+gnc/jlXaaWHMyDjQEnk3KJdDlcSCVxp1ottbMgtXckXczXe1olkXZWIGWZjybc4AAcfkCDa8/gX/qOknjHibnbWuTabdlfFbXfHXdBL0DXbzDy7ECztldoXTXdYHaHXdMH04XGhuVwr1PzXi7aCDddXZiXYoXb8XbPXZoXb6EjygHuXYYXcUk1vXcdvsAXYH4AMnaWfPXXo+raInf7HeQox9FLr4BLZNlyDKcgsbZ3QB1CsUHa1km3XfCHbfp3YHc4XB6uQbknmQpnVJ6oCPbMxlI7BlPXfCnYVKz3wUTAAF9ajnfMVbuEn9EgjgHoHY5TI80FclRnYpUhTmsjcbC2LQnSWA3bHAG6lXHLUtXdMHxiFgtqg0ndOdr/yksXeo3fYHcQrc1GUt/j0XccavkHepXeB1BQ3e41bnXY9Xb+ndgLJBnchrfW8WB2DqoD/Xdokj2bfE1xGZNKbdQXsjHbmMAjzRYbJpLNcgP/AG6zgEXYb+x7XaTvhX1twtYigBWXl9rb03Yftq7kvlXb9bfPWnDbbE8Qdbf0YAEXacGSgbhai08PEqxyMvK5ZQbolA8gdoCyIFHyQbohZgdj9IYnENDbQQDihEIne3nIcF3qlGC5j83eirPqlGUVk27pN7pq3iPF2IneqfP60k42jF3Uc7DBAjebMA8xOQSaKvd9OeDY7ldA6vs7bTneaXeZUBoVlG+kh+iFeiWQH4YXAwb/7ZW6GWZlK7eRWCkkhxsmSHY4kva8HSEmbEEundpECtrKQjfFgC1naYAGp7dgFtH6gpvG7pUP7adKi6o1+KknnYbnYWtHnXYuFl07ODq2FkhsZlFsgh8Qv7YEdQpHZnggLnBzfAtoMvKESjEdhkBasHXfY3UjMR7KSM0EHbYTbZ5UgfXd8Xb6Elt2C0naCXYNnZvXeO3YwHcAXeZHfO3eU3t0naI41cNdiGaarenJ0zjMZjW/wjkbam3cF7TgW0jrPBZhkbfe3bWXa+3dY0cK7crIAW3bEgOWDfdiHlL2HoTW3YzXdwAMO4XoHbGBFJwHahBLlPQJkfnZyRRIXe1ncdhmowpnXeU0RpXc5I2UjK0HaZejwbde7YDZd63ez6kn7dC/h0SxWHYusmEMljPMCMQ0F0d0o9Z3WHYkclH3QSaSJHbfBG5QZwLg7FivMknk3lL34XaLHS5nlKx3+gjs7N4jtZfoG4RwpfW3dHHU5FeojaOjC6FAC/g5rNM0UnqEyaBHnYkCoTnc0/grXJj7Js4vqcjYgGLoH4RxANQF5tkKGb/rmylXNNqjTS9bk1ns4tmmyJKUGjTgnYAtZwACkVjInba1HqlFMDkInd30Wi3aGTFt3eMfGK0Rg6GhVUKkA0eGLQS7HhfJBIgB93bz0ArtGCwGXvMrlw3FgpvGgA2D7YdWXD7f76Gj7eityjgE+bB64BbscnsJeFlBQNRbfRTI5ygPLZvhkjjhrmUinamvw9BTzV1JaG/vimish+hXYg2toacXnXbAFgXFm7YEvKFg+x98mF2kMAlSVmLoDcxW5JQb3dlVjLoEoUmoUmppLN9BiZEoKfu8fwkloPX3gCdM0ABiI7TjhDZMgK1cARxvSaBqHS91MkH4gBwAqZ0b0LQ7GBL9ColWDVjtgFUshvEHS9xdwFn3faQFCYGOoCgmCX3eRsnqABsQkn3bsSt33drnvagB2hGbrG33YFsiNkFX3e4gEOSt33YDclEgAIPmbrE5sm0rFytZEYDX3fv3ZxqFrnokJkgwGEMgcXPiRjxbbjQED9cvh0uRBTilL8rZ5FH3fnFUCAAn3f4rjsSoqwELqCgyfn3eOoEEybBshX3ZvSe9yA33cQPdf3aciVKbH33eM1aP3f4ri/3cEyfP3aChBcgAiMqZ0bBshv3YwPZP3b1wDP3eAvQmxF7zUoPfmLLgPY82BQPYDcl/3fxDIcXP+hAbf3WrgWZRAPfl5ivag5goS1g3fzEWmFgZoGyBVMf7bjsQNXagTv2ci/5SkiQDk0lDaV/jrzVbBA3ukGRCOaBDYjSDIeGHM7bC7cbvtmDIKvKearc4Fzek3ncfMmjbajDa6NPNbdH5TAAR5jtbkyDbaaHadXoCDh6cWmPCMPcbWhDYhewuMNNK+wKvKlcyvta8pCLHXMPcG0l9jysPYRzT/LP9DfdiEG0jMPYTqtbBFYciOckkNgs3bSSqaTL38iUNHftUY9l5j0IFjNymFHU6kWM8l3lyNHfS3dplcRXIuFhEPYEUqd+Uel24umjnZMH3SEigkCkknFgAmHbDLkx7aHnea3aqPYwjdPndgtA63fFAK63ellF63Y+D363Yc/KG3YPbniQBAICyZnenf+HWgBx9XaCVnjj09Xd9NbszGR1g/5jESjmskdKmyp1NMGT8jEwg3GE4jNN3csFgGWzdExnbaFyqunYaPdu4CaPdR3ZaPdGHWp6j6rsnbc4mm5ciXdAWPZ/5jvjNT1sREdbyguskDCrFzpdGlNGyPLZRMWfLaaMThXaHByJUpaGguFlwFk0QUtTLL3YRrb+PcXHs53f3DcEPdSPYseyJjrDXbtmTxySKgTS/tiSmFTfCpYOGEBqPdlcARED9aFKiM3eRwPHzl53dG+V6k2lRjiPcngy4IVC7eQcl/vJtgHaHZMkdE6KLAygkH5P3J2VSnSk7T7nk5nm9iloEBcoGn/FcQUyADUcABSCZIHBpDXIFVxn2g0xUH6cDwKl5YD12lLDpXjRAwCpPcCv2F5OpfWGdiQIUSmKgkGupjF0NFPepPfhedNrV+2kgkF/bxlPblPeZ0BlDqa4NlPaNyM1PYlEkVPccOUlPc5FaqzTjXCeoBTnho/knsOvoIEkL12n1PfFPZpPeVPbFFZNPd7XCYz3brctPe7IMPZhtPbFPdX6wlPaxcRVPdXXkCnumEGFbmS1EtPcOTfE8S6gFtPe9PftPaNPf9PcZoEDPbSNRDPaXLfE8Q3oAjPaF5KjPd9PcdPdjPc2EBuYkh7gTPe+PCLxQVPbtPaVPclPeDXBlPcc2KXWC1PcskRZZLLPYLPcjPaLPfTPeDXBx4FjajQ8KrPcc2JrPdTPbrPbFhThPTpPZpvorKT5FEc4GZPelQFZPecIBqEVo8EOMD45LPdV5PYZXGIKkFPZyeBTPcGux9Pc7PbcTm7Pb8wL7PcnfBZPfaz2HPbJgFHPZ0gHHPZ5PbdAEe8B8/BbPbbPfnPbTPcXPa1UCzCQ2oRvXFLPfLPbnPa2wFPPdQxStxbTYlf+RiFgPZdsAGMAC9PfbPcNPd9PdoAHh1yPPdvPbWvI7PYfPbcThvXHfPYNPYBvqVRlAvcLPa/Pc7PZ/PeFPfLPZplj/PY/PZPPcAvfJdKZqDPYBDICQvbvPZQvcNJbQvbZPUgvdrPegvaAvfxndJZnwvc/PYBvrQvceHtIveQvcIvdQvfonZeqxlPceYkeYi2nArPdl4J8kV2nDIwHdbBPPXqN09PbAvYdPbJPZd/JfPf/ACnrecGn1XC4hCUqmPPawvZovZwvfonaXPeeXmvFjmPX/PYXPaIvcQSArcAjoCHriEDRriAkvYAvakvb3sl+2iD3nwYmvPdbPcUvfvPdQvYl3ceXBgTfkAGbPbLPY3oC4vcRPHWYh4vagvfIvf4vZZJKsverPeCbUb0mMvewvd0vbFFaTtgBwVi6yHeQ4lM3TqCvff8DkvbDG1WPU8vZ0vZ+QB8vZfPezsj57kP0U7DkY+cBwQCve0kX2ZNSvYrDo1BBSveCva0vaUvdQvfQJnZNAsIqNRJplhMzuilgW1SVUX5uOu1U7DgEUEwve0vfIvfPPZ9+VivdLDrC8STyC5PTkKM0gCmEJsvYnLb8sIcvYIvdqvafPaXZcsIEMveyvZMvZwvbqvatYAgveqvZyvcNJZ/PYQvZFPYivYBvu7KD74Brf0FoLW7XRr3O8FCvYkajmPUt81oN29sD12jxQKFPYpvpXPZ0ZLXPcHPY3PfZPe3Pa5PawAD3PdY2GoPvWriQqUSvcPlwjMW9GhB6mP6lMAFvULwCFtyMrsc2jhP6j/gALVySgBPdWe7kgAFavc0gHLPbu7XHakwqXtoF2vZ+yAROj6JGWhENXFO8inubmvb4vZKXwH2VSVnU/GEvblaDEvYDKj5PZZXHWrgb11ScmIjtmvYmveGvd0vYakGx0AOABsFu9PeFvoB6iZPdyAHXPbp0TOvcKmguvYnPf3PcNAAPFPTX3epCOACJva8vY7AGXPcePsZPf7PdpvZOvfpvZHPcZvd3PaQAuuvf5PenPbqoCFPYJvZvPa5vcivZVPbBIGlPdLDo1PYSgERvaNPaVvaEvZVvd1Pbx1RAEJ1PYMZKGve5vb9PbtXHbrfjXHNPcQTjdPYMijuvfVvfTPeNPdNvbNPddPdsvdzYCHDm6vbIvYdPeNPczPaCyeu7lzPeHXDDPcNvYVvYzPdusSCyfjPecTbjPRyHn9vfIvY9vaDvfWFt30R9vbDvbVvflvfIvZLPbgvdbPZavesvYjvYdPYbPYPclcvaMvcTveVPb9sF5vYZPdXPYHPenn2Fva3PdFvdPdSuvexvdP2kzLWlvdnPbzvclPYdKzQ8MeveL+vuuMc2G+fHIoDroEuxpyyUwCBH8Ah6lClGCkLMX3oYE6CG+vdLDsYvbBnE0AAzvepfWFjodKwt5FK0CVRkSmKYMRYvYQxGWhBtvcXPYdK3StbQ8PeZKnvfrPfltk49nYgEtvfqN0PZmXvarPTDvcb0jTvblvd4veLPb3vd5ACSgEPvcHyOPvdDveLPQP7mXvY4lMJvavvd9PbkKMq3lTXByAEGvYvveTPYbvfTPYZXbQACA5kSmLgdTXvYfPagkGAfZIMGgYEGvYgffJdJUkXKNpr5PovZTvdfvcQvY/vcXPfmITRvdQfa5PQ8vcAfcXPbyvZcPGbvc0cD/Lmhjk+rE85N60E7vcpkOX2rCCFtcJYYH7vduptnRB9zA2PI7xMe4GIjvHveYvfgfZwvcsHdsuHwfaAvZ4fbnADnvYnAAXveCbSXvdwfdXvb4fdyvcg3d4fYwff4fekfcEfeigGEfaqXEXveJtXEfeROi4fe8vckRk49nvvetPZyeCfvZ+PBfva5PRbvdKePIfbYYEofdMAGoffwCFofb7vdMAEYfaHvZYfdHvdDDmMfbIfYicAoffb7i7vZgHh7vbofYYfcHveYfZHvaqvdkfdovZq2WbPbavfavfSvZ2YGldSG1RkYA0faivd5j1B5kkfekvZq2XU/CEfacAGUfdEfdUfZAELwfcCfZwvZXXYPvcavaYZIKfbQfes0J3vfXvfSxkdADvvfyfcJ7vhnr1veKfZifb0vbKfceADigBlPaqfeYZKKffTJhKfaAvYdK1S4XEfBWvaJYs52ASfe8va6fYokXEfFlrl6fY27XCfY4lI4fcnvbc5y55wsOBR71ClH71yxbxpgqNJfa+ZD2WeEDYfeEWk7wR4N3goFbgDD2jrvZAjln1zcvNQYOAAHk1R68AGfaivY3vZvICZ5eIfcjQFbvdMfY7vYsfe7vesfapcB8fe4cPsff8fYmfagkCmfY6fdQvcufYNQDwvfOfeufaMfZIfbufdcfbMffcfcsfa8fZsfYHvbefb8fYkCEcfYyve+fadvYhvfrveyfZJvfFEHJvf4nkpvYOvb5veLvcFvdLvduEAZvc5PbFvfPdRAwAPFMeIBrX31PE5vbRfZ5vapvf5veOvYJfbZPZFveJfcrvfFvervYFPbrvc+fffvccvfdvaVvYSVnVPZ1vZ+fZwvdVPa1veIjtVvbQffFfbqfcdPftvaYz1G7R0fZRfaFfe8vbtvY/XAdvZ7XHlfZdvdRfZ5fejPbtXE9vfFcue7jjveLPXDPcBfcDvfOTyrPVSAANfZ+PAAfZpfeNvdFwF1fezPfyIAtffzPalfeTvdlvdTvb1vfTvedfYz3A1IGzvf/ve5fZ6vfzvZtsELvd7PaOvZLvaHPaJfbHPdZfdJfanPdrvddveovfmvYd+EBvYxID7P2jmiaubsAEMvZFPd9fcvva1fd9PcH5EqhivPdLDuhsCCCA4vdfvcb0mjff7IFoYFjfckvYBvtzfccPHzfddfZLfeWhDLfZ8OErfZqveVPZrfc8PF+2gxIC8QLpPasZXNslPbjMMFLDrsjl9PTqffbfeKvAavfYfZaAAnvbQfcLfdmnHdbBHfb/SDzffEXBzvYzfc6vaztqlfdGLGXffLPeRfe4SFDDiyfezfcXPYxIDzffJ+HXIDAfdPtR+vdb1zEyj+vc1ff9fclPcPfdrfey8ErXEtmBlPauZJffbIYFeakvfZbfcmve8va7fd5jxCfbavfLPcavbcACifcVfaivZ/ffzj1FfY1BDEfcyfcbfZuvd2PArfevfbdvdvfceICTtl+2mb0DQ8PPvdXffvGAnfaYvcnvdZvQSvalfc5FZQ/eAvfHfcRfcnfeYvbw/ePvYI/dXXiI/aR3Yg/Yifb9fcQ/fTPaR3e7KBtfd8vZmvazfZvfaAfeQ/cEvYGvcHfcPuLZtabffg/ervd7fYPrKUkRA/d+2nonbZPT/SDKtPTfa3ffdferPalfZkvbogDepTDYlk/Y6ve1PY9feNfck/Yv4Ok/aioBlPZnfeLfa5PTgdW3fco/eNfeISa7fYm2lPfYUfRM/YfCEU/aunZI/YifaRfb1vYM/c4vdXfavffE/YovbQlYYvbI/cnvZavZc/ZPvfe4M/feJvZ+QCgfceIGTfdTmlTfaYADU/Y8/aTfe5fyF12BvHnAyDAG8/Zw/enffYvdc/ceXcHyKC/aNva/vAS/Y2oSovarfYdPfDKDY/bdTlPoP4/aNfetfb/SGTfdGvcS/ZoACwD0zgFBhE5faHsk5falfdi/ffFtHwQZIBq0jV4GbPf8/Za/bC/bi/Y6/cR9gQIW8AHq/bDYD12ia/ay/YDvda/f/hWq/cq/bi/eq/d+2ks/eCbXAfeNfam/eZYHi/azCVm/ba/fW/edXDEWAW/ckcGafdlpMO/Zi/b6/a2/fm/YkAJG/YAvlVfGO/dO0H6/ceIHQvc0xBQABG/ca/ahgGa/ZW/ZO/f/hQZIGzsk6/aVQEdff1oAeZiw/YyvYKZKB/fK/f3feUve8ABvuReoF+/bDYGu/fyIDi/d5j3QveafaA/br4DQfdCfbk/Yy/a6vbVUxTyhLACu/d6/Zu/a2/fh/Yc/Y4lNC8WA/ZavdR/fU/anHe4vcx/bW7CHshB/c4/YPffe/bW/fh/bo/aD4gbwBh/e1t3/hXh/aZqGK/Z8/CXvdx/dh/ba/dY/ZiFnh12JuDqfcLSkZ7AK7CvlL4aHy/dbfepfTF/dEVB6xTTfZTvZXfY0/erPe3fbZ/b7P3jjg3ogGveeXgHqmQqnZfdxvZlvYyvYY/bjfeVPdJvaGAExff5PzpfbxffGXzDfeZfYjfe5PbZfdZve9kUpPZpfaDfaeNhDffxfdt/fLvZZfYd/ajfdg/bEnk5fdQfYI/b5fenAAFfYNveD/dFYDVPe1vYNvZavclfbM/f9PZlffA3DlfeRfetvfj/ZNvZVfZdPbVfeRfY1fY8/ajvdNfe9vf0fb9vao/Z1fejvbNfai/cL/e9oFz/ZjPdL/b77qh/YTvYq/ZdfaN/dV/fk/dzvYb/a9fZkjAECk3fatfdB/fJdILvat/Y9/Zt/dOvbt/Z3PcjfcnPf9/ftoFe/Yq/YrfGBAAtqmS/anfb8/bS/Y8/c57cexzt21AKER/bC8VS/aLfbnfeNfeX/cGtkAuZciGafbAZKP/c3/dnfY8/fr3YVLQ5G2a5ln/eCbUevYwHlKPVevcuuo+vepcC+va/s1hPHAiPuvYIbgCvdv/eevb6Ggf/YskKf/b0MO+valffP/ZRfEv/esKECfVivYo/ds/eNfZAA6fZO0fczfe7/bp/aAven/didlRve1/bYPt1/fEvcE/bxva5fY4/cY/c7PagkCOVk0CxsOjrMgtoYiw2afdtpLp8V1mnFJ1lQDQfesveoA4mjBVsDV/dF/aIA/e4dIA7n+goA8q5PNGCsz1oA4QA4YA8wOgC/YMij3gDqfbN/YckgpvaF5P7/ZpvcH/bLvY5Pft/cuvcd/fdFMsoBnAGkoGpfZ7/ay4jd/epvYFvekA8JfeH/aZvarvabfZnPdwA8QA/wA+QA5D/c4ADD/flPYj/ZXEGZ/f1vflPdj/cFfeL/fulQz/aT/dTnnlfdT/an/YT/ecA6dPfVfY9PYQ/ZN/e1fdtfdL/YL/buTd9vZx/bT/cCA9NfZDvZCA7DveMA/8A9tver/ciA9jvYr/ftoA8/cb/fo/eb/ZV/db/bUA+8vazvc7/YQA/E/b7/ZxfaLvYH/bpvZ0A+9/bkA+ZvYlvZxvZjfb8A4K/evve9PccxNGcA0A/pfdDfaH/fKA5H/d9/bH/aTng1nge80t/aKA/r61z/dYyEsilF0hEcGfffPZM1YBi/c8dHQ/eWhAo/fr/eyA9A/c8dDyfdDDhMzov5F8zuu1Rhc1zCICffmA87fc8dCafcA/eYZLZtZa/c8dDHQBW/c8dFbgCs/fO8FmA8mA4ed1SViWA6b/diA7qA6Afc8dE1/a3lTgfdOA5uA7b3beA4q/dLJWMYFlVnOA6D/feA8LwFlVnRvYHqhXwGrvZ7PahgBEhet/ZZPZEhZkA/OvZJfa6A4JgvwqV6A/FPeFvq2A6QA9QvbKg3f0QewDQ8NuZMoAARJAo/ff8GEQVLXC+XWhgBqX0y0yCHY8/axA88DPzff6A/d/akA9KA6ZffaA70A7ZfYBA4q/bKg3oveRfdp/ZMA9QvYbgBEv0SmIw/aa4OJuBT/Ym/fIvYLAkMADcA48/fFA7RvZ1/dg6kxvcsEHBA/wqShA5KA8HPdhA7KA9kA46A/kA79/e6A6RKhYvz6A51A/RA55A5wvelA/IuxC0kDWhUfdZ/dlA9EvbBA6pveVA4ZA9VA/dFPVA/hA9H/f3PapvZRA+xfYNA6lA7w2HU/HAUnuaAtA4ewFdcAvXAxvaioC9A/o2Gyz2R6qJAHUvYsQZ+yFDA4CUHU0HAGDUveZpVOeBjA9LDs+MMgJH4A9R0BVsDmcBE/fZgDE/fXfe9A9NA42+nuaHDA8TA4TR00vdTA+JnHTA54A6zA97nhzA9PbljA59A7NA9FXBLA5ZICjA+FgHLA+IjrTA8wCAzA8niuE/bn9LzA+NfZNA7nABvQEHA4LA7nABOA4q/aHA9+l2l/a/faivanA/+A9DDmW/cnA7w2BHA+XA/o2AnA+2A/LUHo2AdoFHA/o2AXA4yvawYIf6huzD1vcjSJIZIbA8LA4EalXA83A6nA/AUj2A9DDl5/d3A7jA7nAHAUg3A4xA+NA7HA/2+gEan3A52YAfA4q/ZlRivA7fA8GfeiMlfA6NA6Ag6piB3A7/A+iMm/A44lI3OD6jjcAAlfasCDPA6lfY3lksIAAg9Ag4ufaXlksIBAg7iA9KfbFNksIAgg83A5Qg7nAGgg6YMR7A9oA6lfae/TQg5wg6Avae/Wwg8eA8XPae/QIg8Ag6ivae/XOA65PW3veCbTxA9kgEEA62MQ8/ae/XU/Cog/og5og92QHU/Dog5l/fTPf4g/wg5nA+C/d+2kkg+Ig/9A/o6GrA9/QClfZaWGIAEEg/Eg7PPZTwDEg9nA6txZTwCYg/Qg90g4Bl2bPbcAGd6NIjuWA/6MBT/aX/YCARTwHUg50g+GNnQWMcAG0g5kg/sg70g+kg+y/blYxTwDYg71vZMg+d6M+fdgg9LpJNkEsg4og92QAcg7Ug7cg4Dvae/VCg6cg+y/cig9cg+Nfdig6Mg5avZ8g/LDs4g9FXG3vcsg6TA80veJA7vXDJA4ZoHl3cRCGdfa6zhvcHF1HD2PC1XcCG59vJbVZ9TJoDQ1NSA6Kg5Eg94/eoPoabhR8xQAD4g5Cg5TwAEg/Cg/IvYSg8qm2ig4ig7ag6Glikg/ig/6g8qmxIg588TIg5VsGQg+sg4Gg+HA86g4dPY8g+mg4c2dmg8bvamg8qm30g+og9+fZWg/U/FGg4bwHGg+Ug8HA7QA7nABBA7lA71/ewA8N/fSA43oFtA680RVA8xPDVA6ZA41A5ZA+1A6RA8ePvdA4kA7pA8NA/Wg8NJdEA4t/dRA7pA80A4Zfa9/fug4RA5ZvfdFJ5QGjADZgFUA+Yg+aA+hA6FvadA4rvc6A9dA/H/cMA7ZA83A9VPf5fej/csA7M/c1vd4/bFfcFffsA/D/fCA6dPbNveT/dXffcA5Rg88A87cDNvcdvdXfZz/ccA4DPazPeCA8XLbzPbCA48A5L/ciA/Blah/YeA40g+QA4SA7jPaSA+iA+fvdSA/b/ei/fyA89fdHxY7/abPZFg8BfcKA51A7+g9aA7hA7hg61A8RA5rvYD/dFA4dPfQJg0A7tA60A5hA8dA7ug+dA/hg6qA/pPZ6A71A5+g89A/Y/c5g7sg8uiF/vZavdqfcBfaXff/vY8/ZUXi+A83A9o/exg/uA4dg6F/bNg48/fWcBlPYunF8Oe7xD8/fjsA8/fonezsiWg/TPe0/cL9dDg8XPeIvelZkjg+UvdpEEova0/aunZQfew/fn/ec/cX/e3fdVg8lPZkvfVg/WvbgpHCvcTg716ATA9bA8yg5jA+Qg8q3gMvaV/bwA4+g6VfdXXieVYsva7/Z4g4fvcn/c3A+cve81Abg/cvYkfZZg5RZGa5j8vc//YQveCvc3TsDA5I3Hkvfzg67g5Q/cgA7f/dM/Yq/fm/ZsA+N/aEg/JdIWva0P2WvcF2lWvf1RzYPpHg++PS2vatvZ2vZyeD2vdScl+g81g/+g9ug83PcBg5dA4Ng4hA519AjDn1A6eg7pXEkwklvbg/buvZoqW//d8zvB6j//fevfk30AA6hCF+vf+vdB5yBvbCfdBvZxzoVfbxOg60kb0jhvcZzQRvcfA5stJLXFsg+cg5+A8acEBgA8KTn/c4fcgQ4QQ96g/IvbgQ/t2hxAEzQHX/e/KH6fbXA7epQQQ7Wg/ng5wvYwQ6gQ9FwDvA41BEevbylBfg/7vbevbUfzPqU/g9jA7IQ+p4cBA4VXAQQ+gg8evY0BRoQ9evZhkKHKLj6N3DiAA5QQ6wQ8ToFYQ/gQ+EQ8SmM4Q737nv/dLDn//Y/g5f/aYQ4QQ4aoFEQ8wQ5LXDqoAkQ5Ifa+02kQ4U+KMlnHuPwCAEQ/eg+IQ+8vfFA+YQ+ZJGUQ5MQ/UQ8jQFZJC0Q8f/bkQ4HUEEQ/wQ+YQ7V+DMQ4QQ7oYAsQ868CsQ5evbneoz8N0Q6ACDoYHsQ+2A6+g/EA/nPckA61g5hg91g4Vg8qA7JfeSpGIAFqHZd/fmA6hg+ug4Bg71g8Vg4Rg/vg5Vg/xvbdg6sA9E1lD/fRg71Pcxg8j/ZsA/Ffbxg4xg67g8Jg7NPeJg/R/YVfdpg8T/e8A+z/d8A6r/dZg8DPYZg9bblDPeZg7Jg8aQ6zPaiA8Zg9CA/Dvdpg7tfdr/eSA7mA+Yg9+2jSA7fvYyA8rPc0/bb/bFg8bPf+oAbg7qfelg5vg+DfftA8ZfZPg+SQ8iQ4MA+bg+GQ710e8f2RlGNfaMNlIkGAcFjg9QvcHUidF3Vg9Sg9REG3vZpli4g4RJEug+hg5ug51g9WQ4iQ/0A9+g5eg+CQ7eg48/ZOQ/ozxiFjuA4ifeK5JNkBUg4IVgPveBfdufaV2M8Q4B0Pfg4YQ/kQ5v/ZBfdBQ9//c9yNkQ8hQ7sQ4MQ65g9Qvf2Q79XY6diBQ5AEMevenAukQ/kEJy8KR32ClCSgARfZ2YGxQ5//dfg6RuvxQ6YfYicH8Q62Q/QJh+Q/hgBhQ7JQ/7vfBQ/oQ8+vaRQ6X/bofExQ6a4JbvdhQ/JQ5ZQ4AA/kQ6lfc+Q42oQqffvA+JtQBQ84FjvveBQ/Clm4Q5zDm8Q/K+N8Q+JQ4ZQ8jQBxQ7BQ94Q58Q/0Q48/bRQ6THalQ5AEISNQEN2d5zaBeCbX1Q5H10NQ9NBilffQJlFQ8oQ5IfdVQ7hQ7nkIsSIVQ81Q7Lg++QF1Q+5Q5tQ6ZQ9MAHtQ74Q70Q78Q+RQ7sg+FQ/QJgoQ5/A/FQ72Q4IViafelQ7v/bBQ5sQ8RQ6VQ+fg+kQ/5Q9sQ5pQ4Mg+2Q7GcHRQ9FXHDQ71Q7GZCYkO5BLLPaVR2evYB0LfKyK110momfYSNWzQ+svZRUNNQ4LQ6LQ5RmL9Q+cg8DQ7cQ8jQ7tQ+jQ7ZQ6TQ+rg4ufbofAzQ7dQ8sQ49Q/hQ4hQ5bQ9rQ+y/YDQ5iFmgg86ZPgg4lQ9dMC8g67Q9bkh7Q4TQ5jQ42fZJQ5BffjMXjQ+bQ+f/fZQ/HQ+8fzTQ9REEnQ8skQSNSkeMLQ6K1xk1TcHmLxSLQ5k1SevmWA+8zqrQ+rQ8PQ7fCKvQ8h6ndg+a5g4Q8XQ5nQ5XQ8YQ+dQ8xgG3Q9l4JbvaXQ6jQ4RQ/7Q4+Q+FUi+Q+a5njoAUg61Q4IVmAw+lQ9/6llQ9nQ7/Q+hQ8jQEgw+XQ9/Q9XQ9bQ8MQ6ive1Q9YjWIAHAw8zQ7nvMvQ5PQ/n13nQ4akAvQ/PMNvQ931wHQ4DvfQJmAw9gw97xKgw5fQ8FQ53/bofEww6nQ/gw5/Q77Q6Qw9Iw/IvaHQ+a5jUQ/SfdZ/fXQ+cfhufbStmfQ8Qw8YQ8ow4TPWow6Ew9ow+ng4IVlnGnQw7UQ65PV3Q5ww4PQ5H1yPQ/3Q+nhW+dvPQ+ww6Iw9ww9H12Uw6vQ7Yw7Vg5iFi4w6cfZIfdEw4Qw5Yw9fQ7ow++QFkw6xQ+Mw579NMw9ZQ9Yw//Q9saA2oXbgBAw94w5cw+lQ/qpLsw4FQ/ZQ8ow88w+Yw/sw/Mw8kw84Fmkw8HU3cw6ww9Mzr3Q+rQ78zrPQ41BBNQ+GDE0w8Uw+V2PvQ8KgBcw98w48Dy8w8TQ70w8bvbofDCw6nQ78w6bQ/Ew7XQ+NfY4w8KgFcQ+4w4DA94w9cQ+lQ8Ew7Mw6hQ6Mw8jQBqw4Cw4kw83A7Qw8HUyqw/Cw/zQ4Sw58dXV2IUw+6w/ww7iw8iw+Iw8Gw5PQ6yw6Y/ZiFjKw/qw4iw4Kw9qw6Kw7/A7ofHaw6nQ8aw+8w+Qw5RQ5wvc+Q/lfb3gHyA8GQ9Aw+Cw7OQ/H/aE/YrA9MCGEA9DQ92w5iFlmwHOMDpPbwKgOw+Ijqavb2QCgA69A7ZUD2w7SQ+bfYyQ4ifaHfcOA9HA8ew7Ow7LaAsIrHvZ8/dfvZ5Q5B6nMcAYfZow9mw+vA8RoEVXEjA+Rg62Q/2Q7ajObPe+fb+w5S/d4w/tXCoAXhw/+w8Rw9Tg8qQ/Ng+cg9aw46djBOjFgDRw5S/Yxw+QQ7mw++QHlfaJA4DPTnntJvcVPQ7g/UfeNfe+OReA5lA4wA+Og6wA/2w5wA+hw4Mg8CQ6xfdeg5lg5aA89/baA9Pg/1g6iQ+rpH7IAhg/Qg4SQ+WQ6SQ6eQ9ZA8Rg8D/frfayQ+VvZxg/xg6n/axg8Og9yQ91ve1Pbj/dKQ5qQ4qQ4p/bsvczg/iA/T/Ypg9Vfc7cB8A82Q+TQ7z/aaQ/1feSA+5A7bQ5tfbpg+DvfZg+SA+xw+y/ctw86Q75g+6Q/jvcFg7Fg+Fg5b/bng9Ww5yA/b/ZmQ8OEklg+tfYWQ8Ng/pA9CQ5WQ/Dfc1A/WQ9lw4Nw8XPZFw689EL9bQ8Kg/cqQ7uvYo/YPLClfZFw6n/Br0Av4NTw4yffTw7Og6bAE7g83A5Fw8Zw/QA6DA8wA6xvY2Q+Lw6XvZCQ/+g4Fw7WQ6rvZa/aWkAlw6jw6lw59/ZSQ9Y2HrfcE/b711qA4Dw6ivZUXjrfcg/eJtQbw7lg9hg67w7jw+ew5sCATw4fPa5w+vg4jw9lg/5w/lg6nw5bw/dFLIkG48bTYDFw7bQ/bw8bw9Xw4qA+eQ+ew6Rg/lw/yQ4+XByQ6Vw5KQ5Rg9Vw4cknVw4lfYcA4Jg51w9cA5FA4Hw7sg+VfeNw8z/dNw7qQ/Nw7tw5Nfatw+DPZtw4aQ4iA7jPadw/5g8tfaAI4dw5jvZzPe2w9Fg+10F9w8yA/9w4tg6Dw59fb9w6rg5Qw67PfHw5Xw8nw8Pw5lw+Pw5/w/QI7FFfVfeuA61XAzXBDg7MQ4zXBeqyOQ5IQ88dHRUELZYv4KoI+/fZoI4oI7QlYYI4WA4xhgoI99YDcQ5ECFlQ6JMJmw5Ww7sg9IQ4zXBsA7+Q6Dg5/XCajmwQ6bfdpPQPPfZ2lHQ/+Q7MQ+NPewQ+lQ+4I+kQ94I6aw7Bw62Q+NPZfqdoI42w6zw/II5meN5AH4w9tQ/JQ+ourUI++vez/b4g8U0lYI9kg4WVQBfYq/aN62Z/bxA/A8oog4WVRsA/Jgg4EDkI++A5oI+tqjII88I4xhmtqkoI7MQ+tZfoI8CI/lYDMlasI/uID8I5/vcsvcow6MI/7veemodQ/4Q99Q+II4VXGtqmZ/d/A83A/DKBa4LyffH/akI5plnSI62Q9IQ+NPa5Q8skVJQ54I/VQ8dQ6SI9pg60I+KI4HXHe4IEYCOA8iI7tg+sw5BQ57Q/Jjh0Q4qI7MI+pg4sI5HMnCI6N61sI83A/sI9dg8gejSg/kVecI4/xdcI/cI/yZAaI61XG6jh8I83A9IQ+6jgCI98I5mI5iAGCI+WI4VXEWI5YI7MQ8WI84I8ow8bQ/JQ9UI+Ww9Gw4PfZoI+6jjSI5DQ4q/cyI6ajgqfZyI8RgryI4uI/mI5oI+NPddQ5KI5Iff2I7iI9Bw/4I+cg80I9pkGrPg2w+Ow/WI8acH0I7RAH4w68CFaI8+I+/wi6I7GI4mWnig5sI7WI4GI5cI6GI7BhBGI6cI9hI/GI6RI+0kUmI48I8eI4xhnbUTmI4KI5oI/bUSWI5xI61XHbUX6I4JI9xI9CI9ClfCI9IQ6JI92I8mw+6BZ4I4hI+SI8acHbUWEI+K5NEI+QQKajj2A9uI712gQvZEI+mI4VXGNPc7Q9eI9ufaCCCZI8Kw6+I9dw/9Pa0I5FI9qI4Minf8EFI9ZI6BfeaI/0X1lQ5MI6OI8bg+dve6I5hI7sI7hI4jg7RI/KsBHw+GI4uQ9GI8NI/wXGNI8CvaxI5ZI5IkGYjnxI+TQ9IQ+YjmJI4pI61XGYjnJI4dI5oI6dI62I8BI9tI6iI7cQ/yw4OI+ZI6VI99I/OI54w4Lg62TSjDn+A95I/m8jdTnyI49I4xhmNPY/Q9UlxIfYDI4+I8lI+OI+5g7tXC0I6TI6tPeh/eDI8OiKaI8Yw8EHmkQ41I8yw61I96Q/NI7dlkrI+PYHdI9/w8GI7Vw9DDkcI4RJGhI4tI4mI7cI5tI7hCPtI9/w9IQ/bDmdI/jI61XHbDlrI4II57I6pI8DqhpI5oI97I/pI+tQ8jQB0BQlI74I4zI9QvZHI9DI4qw/DI5a4Iow+jI+kI+FgDjI+7I6eI/9PYYw9FI7bgGH7BUI6DI4Jg60I/3I/lI94g/zI/bDkLI4PI5Mw88Q9LI7nQ/LI5dw4ig8sI+rI/sACHI8Hw+sI/RI4bI41BCbI51I9bI4xI7cI6mI7MQ8Yji7I+HI5oI8Yjj7I53I4xhkYjg/I4EI4go9HI9+xBAo79I8ow57Q8OI7LI/zI8YjmXI6AQDs/a5I6jDi4w43I/uI7DI59I4h/Zyef4w7Qo5PI9KQ60I6sw8qQ7wYEwo5VI8Yw/eI9sfeZI/MI5bI6rI71I4/xbgo+cg/rI9vw8bI5RI+bI7fI8tI8xI/bI/zI+zDjAo8/I4iI61XGzDigo/Ao4xhmzDi4o+y/dIQ+ko+9I5JI4VXGko6nI4XQ5nI4oo/TI47I+zDmwo85I4jI8acFSw8Io9jI4eI5dI6FI/9Pdyw4PI6PI88Q/Qo8fI6qI9+I8PtHlfax1VEo4Yo4PI5AePVI5Yo6hI7fI96I/1I/DAl8o+/I94o9/I/4o//I/ZAjbI/cI47I9gjnEo/go4xhlgjhko4ko9IQ52ePhI/Mo8acDio5Uo5So5IkDio40o+VQ7VI+PI50o/zI9gjn0o9wo8Mo8yo8uw+IKlyI9Mo+Io9Uo8acGNPYWw4PI5T+DnI9MI4XI+FfZlI8co7qo4vI8RPDnaYKo7co8/Q5BffFI5LI68o6xw9Co8+uEEo4Uo5fI8Co8SmL/I7Yo4o5kAo+tI/zI9Qjmio9gQ5oI9Qjnio5io61XFQjjGo/QQ+Wo8Qo/WIDMQ5Wo+yo84Q9sw9so8oo+qo5IkFQjiKo9XI6ajhYYDKo92PAqo55/bMo/7I4so7tXGuo4gw6Oo7hQ7so7/Q4co7eUZWjmco+DrPmo56o+TI5nI5so7hQ4fI7/Q9Yo58o9Go+So+TQ54o8mo5Co+mo5SvFmo5Eo7MQ4zDkWo8Uo5oI4zDlWo6Wo4xhgzDk2o4dPdIQ4xo/So8eo8acAxo4Oo+Mw6Yo7fDhOo4yo8ziIuo8uI7EI6jDgHUBuo/7IDuo/Z2m3I9ko61XGNPYZo4gw/Jo4+o4cw6+o9igE5o9XfenDg7I4zDhvI96o4aw88o50o/Bo44o91I4RI84o6ho7rI8RI5/I5NI7eZLNI+lo4Ao6Vo6tI6Ro5Io4gkNRo8m/dOI/8I99YHHI4xhggkNxo9vff1o52o6No5mI4No9/vcow48o7yo/nI47I4gkJpo4yI7po6BI+yI+ew+Zo63I4eo+go/Zo/9PdoYFBI+/Q/eo8po4tw9ao++o/9o+RfaDJUdo+tqlFo8Bo5bFolo4do6lo9lo5lo62Q76I/lo4II5ho/OQ5Vo9RI7Vo7Co8Ro4io/zI/Gnd1o62o4xhnGncxo7Ro5Lo+x0FWI4NI5Io9Lo68/dto95Q+ZQ+Do59o4VXHGnfZI43/alfaajiDjBb/KLfBkvROjDuPRMvWWPTmPUePSNrwUvfCA4FA9Lw62Q83w9TYBTnmQQPVg8aMFzio7LNv5m4IEtwPr0j1/atA/Z2j1/bhXEkPsz1ekPqzuDXo/Xg7Cve+PREA4xfaCQ62wEwI+0A/CQ7Xw4UA/6QZO0F9iSD0TiQ8hg/Po8ZA8eQ6vo8eg+Vg4n/eLw/Qfevw8j/bRg8vw7yQ5Vw4KQ4xI6KQ5PA4fw+1w68A91w46o90fYgI5qQ6pg6xw/qQ76Q6CA+tw7AI6L/YJg/6Q9AI89w+LPWfI8jvZ5g/dw+gI+QY6hgCGQ+TQ9GQ5bPeV/YmQ4U/eNfdyA4lg9QI6wY4Dfd+w9+g75w4vo5fo5wI7fo45fbnw/JdIXw5Ng8WQ8jw/3w+wI9jw/Xw6d+UpfaFPB3w5Qw73w4nw8vo+YY6Vg9YY9ew7GQ5oY41vZ/o4vw4yva1w+/o+sA6AY9xg5AY+Vw/aQ6cA4/w5cA4tPZfw+gY68A9gY71w+dvfgY9QY8QY4AI/wY7W7AQY7Zg5CLA5g4gI/6Q49w5aQ8TPYIY+9w7gI8rg/J/dYvcmQ83A8oY9mQ9Dw+2A/Dw4vg4YY+fo5jw4eg8kY6lvbYY8NJeIEALnDzfZsA/8/b4/fQ7AbfeROifo7CQ6YY74Y9wI+qA/LfcRgvnfejOmiY6Ng3vmR7ff7A4WDwMo/bBXCA+5/ZkI/ew9tw4II8I/ZfPeI/aS/eJw8nvYtQ54/Y1o9K/fiY8cA5o/ZfPYXvZoqS+ff+w5Ug4LnBeA/yY+f9uGRQMo/QvfCI/Dg/8o/DI4fYBjg/GY4Tg9po/jg+yo66Y5S/YX/a3/fLI/c/ecI/jfW6/fTg7c/fE/ciY87cFLA9D800vayY6iY9rfcJ/fmY8xw8rPZ6/cBfciY5WIEXfYMI8WY9P/eYA72Q6tDWqY7Q/bUfb2QC5A8+fe+ffuw56Y9DHWqY7OQ+IjtiY/2w8yY5gA5b3Z+gC2w82Y9pw7wQ4GI/Blc3vedw9ag8h7mhY4sY55jnE/ZUkVFmEpaBOw5s6jU/d2g7oA7LPcxY/uY+tfeRY7eAi8dHCI6GAklyrcY5xY+oY7JY8qQ4BI+2A7l/eutEl/eTYPig/F/futENwFJY6Ug6xY8c2IpY6MY7XfcBfZpY4l/dRY7sI8ZY5fEGZY9dfZXjQ5Y48Y+xY9ZY9xY+pY7kdOOAgwvan/fmNPMA7qY9FY/7IBIY6XWCVY9zI6pY+GQ+0kXlY8JY7M/e1Y6QQ80ACVY5kY5FY4lY82Y9F/Y3EU4TUic3pY7/A6YVVyZkdAH1Y8NY5VY7t8BNY8pY6RY/NY9tY6pmHCI7dY5cKHtY+dY7IY/ZY99Y8gY65Y7xY4toF+ZgkAD5Y+dg7VQBX0AkAB9Y5oA6YA/JY4DY+IaSEA6RY5DY7uXAkAEw7WNfZTY6jY9gvZTg62nAdY/oA4TY/VY6AI4J0FfIHPoEOEkE/ZWY4eY5WIArw8Og/Xo+6gNZw5nw/Zw9Pw+tfY4Y49A64Y+Xw8YY+CY6Bg/+Q/dFIjzHr0mEY8Hw9EY6wI/EY9SY5YY7CY+kY6/o40I7MA5+gDvw4Vw8KQ7UY81w9AY80Y7KQ9lfefw5Jg/CY5rg6Nw9NPc/w5xA+/w/XY6ivbdw69vaQY4wY5+PAqY4ko4PY/WFvQY8cY6Zg4rI9KQ/sY7wY+PY6dfYoY6Fg7cY7ZY8QI+cg+8Y5Dw+oY4KA8DfaSY+jw90A67Y/1/ZqA6AI6II/zI9II7H9D0I6iI8to4VXAzXFNo6eA/YI52I5to4ZI4bo9MAB5o8Cw9Oo9oI6Eo4FI8uo6jDgkI5Mo8PPaw45Io4UI5eI7Fo5GScao81I75o45UGI48TY/qN10I5Io4zXBjo5yo9iI+Yo8lo+8o4q/dIdX2sABo6J/Y5I/ho4Co6NI9g44Yg8Vo6Co+Vo8sZOzo6To/Vo6E481o/zo5CI6Lo7xo68I8g45CI/446AvdIQ+to+iI8mw6Y47fDnKI8SI6lI71o8iI+do62Q6uI6jDndo/SY93vj5I8qo5XI8I4/9PZqI9jo/U4/iI+9Q8VQ+ao43Y9/V0co6s4/VY/qI5CI4Y48Bw/VI80459Q86I6Go4tQ/R1Q444Y49Zo4ko68aV444tI8U49QvYzo74o9NI9E45To8E4+ffbmo+2I+GY6S47Lo5045WI4i4+oI+No5Qo8mw+5o6bo7Zo42I8tI+C47sg4M46BI8Zo5M45jI/uo6qo6po+eI/4w9y4/yo9PI8co6o4/VY41Y6Jo5Fpk445bvfU49Bo4cw8To9pQ4C4+xsE446K4+4o9fI5zo5rI7To5C4/i48zo5E44Eo5G44Ro6aY6Ao+xI6po7xI/A45Io7pI8swDMQ7JI7G47Wo4VXFW49U4+nI55JH6o+Oo/q45W48w4+44+w49ZI7K489o644/bo/kI/9PblI9jo8ZI/to6ao4gI9lI/Jw47I5CeJuY9VI4ao4Go5Y47844zY764+y1E449kI+Go9RgEho+ro7E49zo41o6mo8Eo/Co+Ao5Io7tI+W4/Q46dI8No7MQ7dI8246xo9dI+y47249TI5Q47y44So89I8K4+9o4II5K49tI4u47uI7M45wo5u47tXCTI5yo+x44po6O46XY+zI/lfegA7h4/a4+Mw+LI/vI8Go85Y9kY6Y/f+49LIAG48J4/G456I9B47GY5m48tI6h49F45h44W49a487I4R46po8nI7W45Io8HI7R4/Lo4HI8x480o8PI+0o4do6vI4J46q4+TQ+J47OOFJ49M48q4/M4/Q4+NPfPI9jo9nI8e4/I44a4++o/N49zI8IY+bo8acGvI4+48Yw7eo+MI8548DY+544Ifd5443ZZd48skUG45ig+G4/B49G47B47i44mo8m44i8WB46Eo/m447I9Ao9l4+l48go+R45Io9go+V47S44VXET48Q47248146e4/oo7047149do5IkAIo49o7J4+N44p44s47tXBoo4PI+z4+t46oo8co8r48DY7oo+Qo4847Jo/BI5+46544dg5944CgD949l4ID4/Go+To+ho78o5+NGh46RI/F4+D49m44k4+Eo6k45Io7Eo/j48d47gnPk4+n46ro5F4/Q4/Uo8z4/V4+Bo8DI/p46po70o6RI974/Ivf14+Mo+L46N45Zo4F46245qo8so/4w4347TI6145t49igCso4b47c48X4+b49ufcDo/d47b489447474dUC4+745IV1P46G46F49F44y4+8vai4+Co5i4+m47H4+j48S45Io6io9n4/y49So4X4/Q46So9D4+l46yo7X45yo6+48O45v4+gE5145N4/044L4/PJkN44q45P49147n49Io4IE+lQ4wE6Do6345Do6zI7ao+co9o48QE9Z47FI9b44To9Y4+dg874/545IE/To6D47D47449T466g4m4+i46zo/AE94E/E44S461o/Q44Wo9gE7x44xhn2o4V48kE6X46H45Io7kE924/V47vI6oE6wE4UE7z49/w/14+uo8kI5L4+IE9wE+l4+NPZeo9VI/UE83480E40I9Do9igFME9oo7+o72o6YE414/jo6e4564+TQ/Y4/646C47/48D44AE4gE6AE5Yg8EE9AE+EE6j48l4+Fo+S45Io5Jo/kE6po5xo/4E9k4+xo7V45yo6Yw40E5z4+Ro5wE7L45do7wo+Jo8IE83I5Z/aME9IE45o/4w8SE4sE+SE9r4++o4Fo7sE6946U4/Ro8cE5YE5cE7YE9646/448E5/45yE7SE9EE/Yo98E5iE8lPZAE+E48j4/ho8gE4kE6po51o+kE7P45FphU46g47do8UE6UQG2I5U464I9f4+v4+KE/Q46do93468E4Dvf14/9o/0E+P469o64E5kE99o7tXHDo9VI7to8wE/mE6sE9oE7Do5c4/YSkjo/zI4gkOf47jo++49YE9+47Y444E88E62E7sg9C4+F46UE4gE4cI7ho+H47m46gE/Q48Lo6GE/R45bo8ro9S4+Lo61XHGnbZPS4I+Q497Q6OE+l49bo4xI4I483A87o9qBG7o/Nsl7o4sKX7o4mr0Ho9WPWHo9rb1Hg80Y/Ho7pw6n/ZpiBKxMyAFTlhcWiIfgvtaeoHhplAGnE/ZbY55w7bY8CY+SY87Y7Pg7JfZIfKjmzxVSh3bBQBcvpUu2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hOZuRBjOcXIGROb/bAw6gSYiYcXF+axOa2qSJObxOfWOcJOetOaVOcYmfJObjTq1OepOdpOb1OcZOdkAGZOeSOaDOYvGZoma5Ocxud5OexOYFOb7IsUGdifD/GdiSDGnHFOclOcuU5lOYtOflOd0/Shmb8LuVOdVOfNOY1Oe7gU7GeKGNiSHbgFas4NOaj4JsOd0/SskFvOax0EkOblOatOeJOdtOftOckOcdOceYmcs4w0DKmbdOd+3BCOa9Oagmd9Ob/GaskD+mezYBSs66s5DOfkADis+AmcjOe/4iPOaHubjObZOfSs48OeduZB6FzGY6uYzOaazmzOeagG1ufzOcLOZ7gGLOfkAFLOahmfLOa2qUrOf8OcUs9/ObrOe8s8bObYs/8OZbOd6ObwC2Nua7Of89V7Of7OYnOaMOY7AFHOfHOYMOaj+enOYFubIwHnObWOaXOcwABXOaCubXObI4A3Ob+OdymZDU73OYWuZaAASYkHuZPOab+jPOa6s8vObhVBrvAHOf0+E2aBuOZVOfb+ktOZfOZms/fOZ2Od0/S/OaKmbD5nCs/qAH/OdkACyub0udAucyuYT+aLub2SEss7guafGbjU+NUTIudmue1uceYgb2e/4kwubBmeRuZtuaFOfgwAhufaudIufIuZrMkoubXABVU4v5iRmZjOYYubB8CYueiBCtVJOU47Oe3+bjTs4uYKxTw4F60CHXn4uc84FzATYuYjs9EufEudl4CNs7yABkuZAs7kuYUua5FnJub/bF2Wj9+fUubqgE0ufas+0ue4ueyubmnD/bCMudHDPodmjoEkOfMufOMEIoCsuf4s7qgDiub3oYrgBAkCSSOSuZcuYtOcf0nXUyCOc8ueUs8hud8udtgWYs8ws6CucrOe8s6mgDCubzs689DZOeiubjTtiuYyOejoEcOaSudcOdSubUOfSuf8Ob1s+4OZyuYgoG1iFiSAKue+OaKudZOdKuYR+ars8quZfg2quaItzzGbqudiOeWufmucEmdauaIuYhs9WufBme6ubWa02ub8mYGucCmaXM9oudGuYuU8muf//GmuahubmueaubqmY8OZWuc6uffs/WudU+C/s/rU8GubqgF2uf/s7qmkOueOuZmuZxjnOuYWOaPObEs5uuZmufuuccmYdU6euYNOdJmbeufZU4smc+ufBmZ+ucDU/+uf44FbTAwc9BudiSHBudeudVufhudhuehuYRueYJCRudwuZU+DRue+s4xuYSs4z+ZA9RxueagCtqBQc6JuaDs6+FA6ma9+bHU8puYSYgKs9yOdxwFp+bB8EZU8ZubjTuZudZufYgHQs85ufndG5uYT+b5udZyAFuf4NmFudv2lFuc6LlkAAlub/GaluZsOhluYcmflueLXUVuYAmZVuahubL1nVuf89WeYDhs91uZA9X1uc7GcNuaI8GNue/KAeNVLKCIuZZEIjU6ruYBmdO/ECzA5OcduZU+DVs9dudLuY9udS8CkDW9uYDub9ue9Od9uaDudiSBDucAmYzU/WmYjudoOejue/4jDWgEFrD/ATuaTuZnGd98BpU/TuesOf+s7ts5zuYa2Hzub2s/7KCkDXic/dufLuZ3RUfGYKxSpuZrua+U8BObCmYQubjTqbuafGc/wFbufbuc7ueNUQic97udeudwAAHuZCYhS8kCEQ/hfhLBsM51BinucD04crQt4CghYXueTbrMJdeuC3BYYeHXufvLXEeeE8ZgXRpzHa2FSxaKsFMoh2c6B0Yu72aQ2ZKasHCvudwwXuc6QebvuaokmuBz6rTUWzIk2Kc1fuevkZAeeuc7cWjcJZ/ueKhepkGQACgefhU0AeaWPgZNq+gz6ZeaQwgeeBc9Bc+q6BgeekIQbMAoef3CWec7ySRQedyDLQeZE6yOc6weeOMlwedn0BEefLwIhc+IeZoPFMcz0uBbrXAoDRwZyTQXuZoeYfkYMojoecQ/Ch4RI3DcIuYedcFlYecnQ3bQxRuk4ecvuZ4ecjGQwef4ebH+wlwaQBcPwKI8EULh3J35c7YoAkeaRZY64mkeed2dnU61JeeJmUefeM4DReSsuAWYkeHN1TRBjiEk9yx4nL0efUUAMeZswGMefa2lMeZMwEMZficlseaseYtWgBFbNc9jogOwtUAAceZMeb1hVi0VexGOk2WQG4AHcedSQEM5fEun/cthNfgoF8eaieYCeaxtpJBZfJBCefz1b1iqe6h8eYglf9c67PKj1qDc+iQASed8MRFlWSeaL8FSefNBYyeYVc5rrMHJenucqeZI3sKedk8tqeZKeep2enHICWFDk6qedctvYPPzc6U7oaedLCXsRd64casY+umRXL70/S1njWYH096efJnf6efcQtWpYNkBGedr3T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Ye6Rf1WfWRfJgBeReFof+Rf1WfoQeu6f7yfPwfdYeyqeiuqMIfh6eGRebQek4e7vFck8lk8ZwfNgeWOroUfmufnTAVAAHWfSuqeOqwWfEkfngfGQeWKexqfecfy6fLcfC4e+4eIQfPgeAQfghemiev0fVMeeofBk8ao8jYfCKeSRfmReoQffmewGfHRfnRfQefaafOOqQKfTEe4wfm8fgeeuseUMe7uetue/ReksfIUeeOqT6euOqoQfoxfv1SAU8hge9ke3+eRRfK6eheeo8fbkeaufvMea4fA+f7Re4xeYIew7HyENQ6eFCBl7meIeISfTgfKRehRfOhfKGeUQf1YfyieooMjZBhieGcfEUfeY9lr9nV9wEeoKeVoeFifi4f5uf3cftafqueAuea0eOSeBRfJUf0CenKeQDQRGCvKfLQe/ef1gfA+eZufOcfYYeTRe8IfGkfj8fk+fn16gcmLY8aAqrY9nYfJ8foUeEReDqeAIeMEeFGfcIe3SeqMfGQf8GfC8edxeT2gcMAL2fg8e4ofPKfdxe88fUceDGedgfzgftufpie84fuifBSeP4f9KfxkeaqeJ0TdABzQfHofpUeUQepkfk6eksffGfXCfT6ergeISfB6fJkeTeeTaeUIfRwfQYfPIePIetmfxxfQofW0eEU94uIAD61weoJf+weiEe7ge3Ye3xexgf5uetOf4RefRfK0ee4eoKfo2fuif/xfPHGCgAigBCMeSQeeOqRgfQJeAJfQ8eESfI8fXefLQeo8f3gemQfFge5UelBfoJe8IfTCea4fMEfYEf6JfU49fUfjCfXifXeePifhYfKUehxf+0fDqeiRfLCezEf/efExfTJedJfxkeiCf0Jex4f+OrrABIEf8SeAiegifpKeXxfGwevIf/2fjtxZVYFzU0QBDuJfkYLafvxeO4fqBfDifDqeAIeVJfo+foOe0ce56euMfkw9mMIZweZSe2Qe8UAGaegQeQOew2fNhfwQe1Yer2eyqfGifaaf6Iemie26fmJeVoemifecexgfUce3SfjJfNuf+weMEexwfGOfyWeAxeZofukfpKeCJfiOfDqee8fYEeFGeghf2pftufIRek49P09EENgReG+fkEedqfgheBRfFgIOue6IfYWfoQf+weUQCJReiYBW2eoKf/Yeppf2peFxefCfvOfGmejkfuofbKf7Gf5OeUuff0eWsfd2enc8sjcY4MXc9aCf50etMfTMfskelqeGsep3AH886C8HI93oevmfGCfcpeM6fyWeGmfHpfEUeTgVgReFuXR4ej0eRWeWkfTM5mUA6UBJE5rwfzEfbWhxHBMWfNheGkf1wfFmrGel/MfhWfWOrIIfRoeVKT1U5wEftaeSieZaVG45rwfwkfJgfktprweTSebQfUYfEUeCAD/kfsZeKIeMxegKf+ifB+eauf6kfK2XgAAYyee4et0e/yeoQfUmeeOqRaeU2fkiemOeX+eJ+fsSf0ABIEeXaeZWfsRf6kf2ZeZkfEOeG+fmUBlgUD+lgZeCoeOQfuQfeQfpHS90e6CAX+lBOzD0elZfJQeXSfPkLTgIpABeBl70eUwfhQfWOqJof6+Wq2Wn0fdceBOrEUeL+e5Zf6gUFZfkdA1ZfsVFNZfoyf9ZfZQejZfyBkTZfFQedcfxQeqYMiLTNVSE9BjSVcgD4IelKfbOf1ye7weJSeGmeHue7ueC4eY5eXRfGQfo8eSQeAIfcyfr71cSfCMeSueGieOse9Of+aeeIfmeeRYftJf5ceFKfLueCofo5fbufA8fy5fGkfmZ1qUfe94Y4N/Xy5geTGfHweDYL3gB+Cf3loBPJfwfjifDtwdQprwfSurTKe7ye2uehZU5gf7OethfsGeh5fe0f207yUUBYfL8f/hfIApy+f5+f6ceWwerUeI0ev0eTSfkIeZ5egehgWFw4ePYfYaePL6GYfE+eFYfxYlcf096f/QeckfSQfl5w+I1+yhz5HfweE+fIIeoQe2SfqieFYfw7c5gfJhfKZe+05xReHvss4ebpfXkfU6eoGe36fWOru8eXEecVgDZer5TNNoH0eLUeteeMwfF6flcfLrFjZeFQfaMfrZfoFe7TNQXFDnY5OfUweUQCmE5aWgFCerZfxQePIfdZeLZe38eryg7U5SnYXKBfDZjQAXoe/4JB05ZMeCSfn+fv0egyeSM5Rrga04m04AD76Ze6RfG05pok0YfoEEiYeP+fFKfMIefqfURfj0f28eTherqNx1pmA8dWfdBe5Re1Of/LkFCf5gfxgflgfDifYpetgfCmf0AA26ejgeaueBheakfepethfYSCWSB4SC2seXgfcZfoqe9ke2Sf9Sf0QeUBeCceASejhenOeCGemufaqe0JeWOqiJeyiegGfhCFU0eFhexyeqmfYsep4BJiDi595dtDAA8gctnBKMexafWOq0xfIABAifAYfJ+eESfngeFUeqYeYGfGwfiQfWBfcCeRReCyeqMe/Yf5aexSfM8fZFfnBf29ojgAe4fQleRIXYUfOmegWfSiekGegset0eEUfQ4fPlcY4Mpxc6QA7wfAIfTvEHQfOhelKethf2j1HQfeOrJEfofufQfpye/YpafuFoeOOq4Ef5fuAD71YfeOqYQLCvEseedMeyuqyRfTvvmoB4IfrQe+lfh/vHQewoeOOrsMeG9AavEKIfrQesCecafcjdOheFlfFgfzgeSQe/QfTvuemFHQe9leFYf3AfHQex4eFYfUge6QAixe1we/0eyrIlfEsefIUeVgfCEefkfzhbX483U6CBgw6fDBVm5cTQfVoetIf+if1yeP0fTgf1QfQKeLxeFKeiKf8Cff+f/+e5oe3ea6/l5aA02JnYBlieReftSe4wek4eOEeP4fmZ0lIACCfnJfece/KeYifAha069L+eQZfE8fTKew0fcIeI0fE8ffYeI0e0BfUy01rAOxf8VeKMe5gftZeoQfiVffyf4OfyVeVYftueFSeFxV3ebF2f68evofrcfi5frCe4ofUBfqJelCfRYfbIfW0fuhaCVesWfCMeiuej4fFGeOselOe+VegFfWCUghae5fChfSurXCfIuftRfjMf/ZfIdcBgfXlckXPZNgPld1RdrweLQfQYfxOfvof3Ee/+fCwelgeveejRezxfrQe/oeKle5gfzVfyiegIeqBdfweZkfuUfchf2Fd9QeQofwoeNqBLT8mlhphdDueWKeZieoQfvVfihfoqeTEefkfrohr4TQwVxRfK8A2kf6gVEiey+fYRee+eQZelgfgaep0eyDRM1eCofs1ebCfyeeio9FZeuZf++fo6fh5eh+fZif9GfACfCifucfq4fwlfZSeEOfqUeoQUH04BgeJpegKeD+frRek4f2+eL+ee0fCSfF+e84f5gfW+f2+fH+fS1e++fbgeK1f3Ceq1fs8ejpfa1eucfiie1EfG1fp+fq+fTa0V50OxeJpeMVe8efTm5x1f0VexKTi1f+E8n+fB+e3+eZofuFf6OfyULr71f+f1Ke0UVEUfZbc+gei7hbWUsm501fVgl2yfecfv0ft1eQlZnYel4e31el+ex1f1qeMxfm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1/eAAPd4bd6Pd7LZ9y9/s947d/o99U6vth7FhTLZ+ch7sAFch5y95U6s06tU6on6qe97rd6q94p96J997Xr8h8295I97Pd8U6rh98QN+dgCQ98s97LtzpAHnd6G94F9/VfxwN/x9/k987d/wN9yh8AAGQQTN32Tql93s938+X6aUAg394AWd31t3+Tqut3kv37P33P37FoAb35r3rP3zTq0j31P3963q2Y52AQAAUhB23e/+rZOrSPfm3fGvf6of3gBwffNOr5Oqyer5OrmofPZxeDfzfe83fM3fZ+rW3eYoBzPf73f13fO3ft3fIApF246QBOffpOrABrpOqE/fg9BpDf3gBAAB6EFU6vo98zd9n9+U6tzd8y95jCixN/eAEAAGwQR73+f3gMbOkAQAAMhBL3fgfeloeL3FzfeX3fd/er/eIO5dDei/fM3eS/fIAAX/e9/eD/ej/f9ofT7VzWfAAAEEGU6oS9806te9/29+qeksN7pACb94n6tI98zd+g9/597sN+eNgcN9894995rd4n6s896K9/cN/L5/A94vd869/Hd8U6tn6tk6t8N671LpAEg9+I94V96q98fd7zd5fd6gD6/YUhh7c95J6v/d6z95J6qe98698A9+A9/h95SN4IbmdgHS967d6q964D5A96v95yN9Fx8G9+4D7rd7J6sgAGwD+996k95KN9NV/x9+C9/bd47d7ph8b+TpAD3d/bd5196p6oLd7fd6+sw5h9yh8AAFQQEnq5t33mHto3yQWhO3veTKWHlYX833ifqht3gj3tD3lJHqY394ALb3k73xTq2H3/N3uf3kaMbWH/AP0L3/WHqkQdkX0n3xTqxX39t32t3yAATTqi9302HzY3jOgauXzb32T3u73uf3u93x3399OqWSlYKdP35TqifqrD34gPu93h939Tq593+gPxr3543/H3uT3qt3sd3zIPlb30IP333mr3+93093vIP193tX345XE6AxQP5r34b3jIP0j3nr3593343uOHwd3zN38Aa9gPqT3zr3s93mD3+n3gE3m6Xi33/N34z3693293pt3+wPzTq0z3nt34D3xr3mFYcuHwmnr93893xTqhL3p73kz3q93mYPgj3+YPun3063iE33KHyH3mD38j3573mr33YPuYP173xYP9eHoR36E32X3knq2H39t36D3s4P6T3i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/e7+AV+1B/4971B4fN7x1/BRhE9/eAEAAFDIWrv/Tvg7v3bv/zvvbv0zv4LvwAAMMhTO/zu/f8lFl1mUe0e+6u/Me+Qu/vO+Nu/ce/IABTO/vO/AAB9yGC78675K7+2XW9B/eAEy7/i79y77875x7/x78J75K75GXRs9+dgA579276m7+p7+C77p78Z78gAGZ75c94GfDpAD27+M7427787+897SeTpAEAAELIbzvlbvvzvpzvyHvs7vkrvgp5HJv9XvzXv7Xv0Lv5rvonvpRH94AQzvtTv77vvzvwAAIMhAAA2yGS974D9U7507+678AACHIPbv7zvrL3ukAQzvm3v43Xkr3y3v63v+3vsHvyAAILv6rvub3gA+gPv23vu3v4Pvw3vrXv/nvqh1U3XnUOFTv4zvkzv8Pv63XoHuVTvvzvg7v2zvpXvjXXx3Xhb37bv0zvrTvwAAMshjO/C++S+/jO+vlp1vetMg6QBuu+tO/Bu+i++Du/Pe/A9eZV66QBi+/AABhyDt75B77276674O79z7+j183h/eAHs7++78gABR78J77d74974+95yb/078AAGnIQAAYshc9eVgoDu+Fu+3O/AAB2yC074X79B9+uKHeAEAAHTIGfv2zvrfX7vn5fvy3v3bvu3vhbvhLv1fv3rvnfv9H34p9fTvqnv4zv2nv/vv6iHvH34/v4n33vXi3vq3vqPv9H35iH7/v2XuyX3wX3w3u8m3g7v+vv7zvt3vlbvgAf0SHtfXsX34bedc8tn3mAf1beYX39X3/15OkAYfv0zv8/v/bvrPv+vv/vv9SHlAfq3vtAf3bvzzvwzvwAAasgH9e9IeHV8zffKu/3O+Ou+/O+vu/Ve/6+/IABi++tO+Au/4u+cu+bO/DO/tO+Du/jO+Du+ks+3fe6QBPO+s+/8e/AABAyCq79gN82V+07+YH967+27/074j97pAFn79V79QN+a14275n75074Sh6T95778AAFzIeLv5vv1IFXKHgLvwAAHcg8/frJ5coex+/XO+Q++DB/K/f6DeO+/AABdyGch8b99r7/r7+M7+H7/77+797x7+EH8C77877cH6H9584xH97c7/YH8gAE875B77875i7/GAkX9/eABU76z75z76kN5lfGT79T75P9/14WYH7277xN7reX077U76L78YH8M78f9+afDV76G773R50N8395R76b75C75T78r7+qegOh/NZ+078B75U76b77Oh+V0DpADt7/y76075U74W75QD765Luh5i77+7/r76q74yH7DT/L56IH617/s79279M7+577ID/8N+975t75C7+p75L791744V74/RdV+oH567767+D75975mH+5N/mH967407+D75U75d7/d7+0H7ED/It4C75B74C7887/b7/+77WH7674UD+75577+AH8G77UD+qBVkH5AH/p7/774aN85h9679X76eH49FosD8MTw078G7++H+m7/CH/YH8aH8M77q79y7887/a75n75377+77874lh+GN+lh+TV/Z74777t74a74K79078mN7P27pADH7+57+aH61h6sR6GH8SH/8D8iAHZF7x75U76GH8GH+GH4hIWiD5yAFiD/eAEoH407+oH9oH/oH8YH+YH8G74B78AAAnIIEf843lYKYvv2zvyAAHfvwAAAsgXu/Zu+p4BvYf3gAuR+Q+/QB+1O/i+/ph+uye9G1u+eNO/QR/wR+sR+eEFY4edQ4d++QB/Ve+GB/P++Su/M4f+seNO+be/VR/DO/PO+me/wR+pR+lUfgTfpLfCafdR/9R/PO/IABAe/XO/gu+gu/du/oe+hHf5pQm4eWC/LR/6+/rR+Du+2R/pu/PO+Yu+tO+Nu+1O+oTecm/3R+DR+NR/vu/zu/YTfA7RGU+ER+Qe/WR+gR//B+/R+Ax+MQ/nYAVO+be+3O+m+/y+/Ou+NO+MQ+EQ/3gBAABIyBU75F77TH607+qH5/h8xD+vh/eADp7727607+O79TH/TH+0H5fh/Gh4SH5C7+LH9LH7EKTeF9V76675bH/rH6SH7JoRoUpFD7zH9s7+rH4C74M79SH5L75AH+4H/gR73cDwR/RH/H752H/q75SH7SH4nH7nZ6UYXJN9R77nH497/078kH/tH7+78M77n75NH4ND4JN8HH7s7+HH+3H7FH8x7/3H6dH9leW4lU2V7H7+M74n7+BH7x74C74S76O749D/VeTpAEHH+HH8gACfH5fH5K75DD5jH/a79z14APqv75NH9jD/nxWht5kodCd48K0sR4bN4cR6uc0LD8rD5NdIQn4bD5iR6bD9QH/QH6uH6wH4M75775K7/7D5+nkdeWdgHQn6e78wH+ZH+YH70H5yH6ngB7z4XD/lN/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5078CH6y7/6n+Hn9S78/n/OT9FYCoJ6BfmSb+dgFVn84H72n/yn8en/QX/EX+0H/eT8kt+AC3NH5ul+1X+M791X43n+tH6UX7FH6Xn5IX6iX8wX+0H5hT7zDJul/K772n+hX6x7+tX+C79RT6RhnRT4wjbx766H+UAB378cH+8740AEan9JX/JX9/n4+X4AX6AX5pT+Ut/pT9Ut/6d/K74c74e77+78Jn5n79M7+fn4An+D75CX/an7x74DH5D7+FX557/8H/IX6GH7On7eX8pX4sX8hX+en9y7727/IX4An8QX6C7/V7/GH6M75+X9pH6079X7727/ST95k5ZT+zjjZT85h5TX8gAEEX+5H9tX8bX+T79M75M76Mn8576sX6dX4st9bYWlT/ILm+H+fH92X/QX6oX7HX9uX/an9UX4NX+iX+874rX/dX59H/IX6kH5OH8mn+mn5y774X+Mn7aX8CH/pH5en7hn4B7+B7/an9x74c74un7Bj88zzun49X+JH9ZX+tX5C76BH/X766H8jX8rX5jX+87+pX4O79jj4VT62J5VZ/yn5tH7tH7U581T4wjYtX7tX5Kn+ZH8879eX+ZX7v76pX+xX9A3/nX6ZdFgb5st6QR5R74vX56n9M78Ln/yX5e74W77sX8LwRhJ5tT/Lr7fD/tT+E+fEhYZJ4Tg3RH9dn40X8qX5HX7sX4Hh1LT9oh627+m74076sn+877BX53X6dX+/n8LH/x76ZH8ln7U7/X7+y79174lh7jjkIX5HX+YX7L75D77YX+/n++H7+n/R79H78J78rn8ZX/+78DX857887+5H/zT+R7WK8CJgBfX/UVOjhy436u75u77u7/W75439y7/438E39nX78X+/n+u79u7/u7577/Ln6JH72n4I3/4X/275p799H/9H7U77M3+DJ8rT9DJ42t4jJ7rT+dqDpAFc35s34wH88362H+m7583+Mn5LX4C34DH7M39Pi6St9/lM7T7TJ9n79s7/lX6574S796X+D7/879tH/2n4jX6c36wX5C7/b7/X795H7878fn7Dn98X+QX5OX7E3857/mn6k3/pn+K7443/St7Qz7tJ6g3+3X4q3+dX6/wVIzgYt8aD/yt8ZYFDtjPJ4XT4vJ7St8uJ3Kt82RwQp6qt9kVU3T8joDqt83z45PP3T9Rp8PT8np+PT9Rp5Qz89R7Qz+6t7W3/Rz9EjvWt8Gt/Op8sABGt+mt+1tgkh9Iz/G3/Iz5jsTmt8pdhoz5AdLoz53r5GWlWt8Eyp2X8V74c77Yz/eAFPn/oH7435rH4E37U74d75nnfrl7x7/gX4O7/GX+uH/uBlgH5M75879fH+misirPzH5xn5OH5LH5Uz7pAFf78np+dgEj78Ot99p/076HH+ez9wH+t79Ot+jn49H+sz+dgFcH//X9E35+n5Gn6CH8qX4yX+5H47X6BH/IX8G7/DH7179vN57t6u792n//n9+n9Gn8qX8DX5OH5278gAFen63X+En+5n4jX5mn6JH4Jn9Nn+lt+dgE0H7YX5K7+iz+4yopqXIj6xt7NnpNN4Np6Sz8Ar6+t9Sz6XN5rfypH8et5s/W9hSKz5Bt6Lp5wVqC0XuH9fn7674M7+6X/a74J36eX4Ub+nDdBACht6+36176hX6DX5DX6+77UAEdH7t34d35U749V+zp7pAD038M7+DX9DX7bF8Lp4Rt5EAzqcDXz8np9Gz+i36q7403/L79L75FX+KH5m75+X9cX4XH+K79MAEq7/q7/rn8KX5F37an8gABc75p74J7/O74Oz/Rt5cX7s75tn+K756n4GX+L39SH9577M79MAE9X9t35W75FX8k35aX+C74DH7YX+C78ZX5K79mB+27+j7/X7/a77xQGZX+Gn7+n7Gn+L38cH+K37879K39B74M78zX+fn817/gX5378a387H4C79s75igEz35m77mX78795H9jH/K38Dn7338t774n/iz6xz9Hl6cH7rX8aH787+L76GH/T3+C74336335339S7/Tn6I390785776n4nX/xt+xz8XZ6v38WX/CH7v35y7+H34f356n9pH7U75U77f365X907/r7/37+AAH07+rH+Z74UX+Kn537+C79SX+y79lX7cX4jH4WNXxz/eABAP+T3/Vn46n8dn9179H77PX4739X79AP+u75SH8gP5mn/QP8/36wP5K7+X9l0Z8AAAzIPGfrrvvGfutfiOf5lf+ofogfxLv6rvy3vyAAAPvjNf/cfjTvhbvnvvxGfmtf4/fnmf0/fl3Pynf6NfkPfn9fgTf38f5qfrHv+tfhBfng/vg/gQ/oQ/zTf4zv8IfqHf0pfsQ/wLvyxfqQ//4f1If43P9AAeRf9If6Df7afhQ/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"; +const {react, reactDOM, excalidrawLib} = window.eval.call(window, `(function() {${LZString.decompressFromBase64(EXCALIDRAW_PACKAGES)};return {react:React, reactDOM:ReactDOM, excalidrawLib: ExcalidrawLib};})();`); +const PLUGIN_VERSION="2.1.0";function _interopNamespace(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var obsidian_module__namespace=_interopNamespace(obsidian_module),React__namespace=_interopNamespace(React);let random$1=e=>crypto.getRandomValues(new Uint8Array(e)),customRandom=(e,t,n)=>{let r=(2<<Math.log(e.length-1)/Math.LN2)-1,i=-~(1.6*r*t/e.length);return(o=t)=>{let a="";for(;;){let t=n(i),s=i;for(;s--;)if(a+=e[t[s]&r]||"",a.length===o)return a}}},customAlphabet=(e,t=21)=>customRandom(e,t,random$1),nanoid$1=(e=21)=>crypto.getRandomValues(new Uint8Array(e)).reduce(((e,t)=>e+((t&=63)<36?t.toString(36):t<62?(t-26).toString(36).toUpperCase():t>62?"-":"_")),"");const MD_TEXTELEMENTS="# Text Elements",MD_DRAWING="# Drawing",MD_ELEMENTLINKS="# Element Links",MD_EMBEDFILES="# Embed files",MD_EX_SECTIONS=[MD_TEXTELEMENTS,MD_DRAWING,MD_ELEMENTLINKS,MD_EMBEDFILES],ERROR_IFRAME_CONVERSION_CANCELED="iframe conversion canceled",LOCALE=obsidian_module.moment.locale(),obsidianToExcalidrawMap={en:"en-US",af:"af-ZA",am:"am-ET",ar:"ar-SA",eu:"eu-ES",be:"be-BY",bg:"bg-BG",bn:"bn-BD",ca:"ca-ES",cs:"cs-CZ",da:"da-DK",de:"de-DE",el:"el-GR",eo:"eo-EO",es:"es-ES",fa:"fa-IR","fi-fi":"fi-FI",fr:"fr-FR",gl:"gl-ES",he:"he-IL",hi:"hi-IN",hu:"hu-HU",id:"id-ID",it:"it-IT",ja:"ja-JP",ko:"ko-KR",lv:"lv-LV",ml:"ml-IN",ms:"ms-MY",nl:"nl-NL",no:"nb-NO",oc:"oc-FR",pl:"pl-PL",pt:"pt-PT","pt-BR":"pt-BR",ro:"ro-RO",ru:"ru-RU",sr:"sr-RS",se:"sv-SE",sk:"sk-SK",sq:"sq-AL",ta:"ta-IN",te:"te-IN",th:"th-TH",tr:"tr-TR",uk:"uk-UA",ur:"ur-PK",vi:"vi-VN",zh:"zh-CN","zh-TW":"zh-TW"},{sceneCoordsToViewportCoords:sceneCoordsToViewportCoords,viewportCoordsToSceneCoords:viewportCoordsToSceneCoords,determineFocusDistance:determineFocusDistance,intersectElementWithLine:intersectElementWithLine,getCommonBoundingBox:getCommonBoundingBox,getMaximumGroups:getMaximumGroups,measureText:measureText,getDefaultLineHeight:getDefaultLineHeight,wrapText:wrapText,getFontString:getFontString,getBoundTextMaxWidth:getBoundTextMaxWidth,exportToSvg:exportToSvg,exportToBlob:exportToBlob,mutateElement:mutateElement,restore:restore,mermaidToExcalidraw:mermaidToExcalidraw}=excalidrawLib;function JSON_parse(e){return JSON.parse(e.replaceAll("[","["))}/Mac|iPod|iPhone|iPad/.test(window.navigator.platform);const DEVICE={isDesktop:!document.body.hasClass("is-tablet")&&!document.body.hasClass("is-mobile"),isPhone:document.body.hasClass("is-phone"),isTablet:document.body.hasClass("is-tablet"),isMobile:document.body.hasClass("is-mobile"),isLinux:document.body.hasClass("mod-linux")&&!document.body.hasClass("is-android"),isMacOS:document.body.hasClass("mod-macos")&&!document.body.hasClass("is-ios"),isWindows:document.body.hasClass("mod-windows"),isIOS:document.body.hasClass("is-ios"),isAndroid:document.body.hasClass("is-android")},ROOTELEMENTSIZE=(()=>{const e=document.createElement("div");e.style.fontSize="1rem",e.style.display="none",document.body.appendChild(e);const t=getComputedStyle(e),n=parseFloat(t.fontSize);return document.body.removeChild(e),n})(),nanoid=customAlphabet("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",8),KEYCODE={ESC:27},ROUNDNESS={LEGACY:1,PROPORTIONAL_RADIUS:2,ADAPTIVE_RADIUS:3},THEME_FILTER="invert(100%) hue-rotate(180deg) saturate(1.25)",GITHUB_RELEASES="https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/",URLFETCHTIMEOUT=3e3,PLUGIN_ID="obsidian-excalidraw-plugin",SCRIPT_INSTALL_CODEBLOCK="excalidraw-script-install",SCRIPT_INSTALL_FOLDER="Downloaded",fileid=customAlphabet("1234567890abcdef",40),REG_LINKINDEX_INVALIDCHARS=/[<>:"\\|?*#]/g,REG_SECTION_REF_CLEAN=/([:#|^\\\r\n]|%%|\[\[|]])/g,REG_BLOCK_REF_CLEAN=/[!"#$%&()*+,.:;<=>?@^`{|}~\/\[\]\\\r\n]/g,IMAGE_TYPES=["jpeg","jpg","png","gif","svg","webp","bmp","ico","jtif","tif"],ANIMATED_IMAGE_TYPES=["gif","webp","apng","svg"],EXPORT_TYPES=["svg","dark.svg","light.svg","png","dark.png","light.png"],MAX_IMAGE_SIZE=500,FRONTMATTER_KEYS={plugin:{name:"excalidraw-plugin",type:"text"},"export-transparent":{name:"excalidraw-export-transparent",type:"checkbox"},mask:{name:"excalidraw-mask",type:"checkbox"},"export-dark":{name:"excalidraw-export-dark",type:"checkbox"},"export-svgpadding":{name:"excalidraw-export-svgpadding",type:"number",depricated:!0},"export-padding":{name:"excalidraw-export-padding",type:"number"},"export-pngscale":{name:"excalidraw-export-pngscale",type:"number"},"link-prefix":{name:"excalidraw-link-prefix",type:"text"},"url-prefix":{name:"excalidraw-url-prefix",type:"text"},"link-brackets":{name:"excalidraw-link-brackets",type:"checkbox"},"onload-script":{name:"excalidraw-onload-script",type:"text"},"linkbutton-opacity":{name:"excalidraw-linkbutton-opacity",type:"number"},"default-mode":{name:"excalidraw-default-mode",type:"text"},font:{name:"excalidraw-font",type:"text"},"font-color":{name:"excalidraw-font-color",type:"text"},"border-color":{name:"excalidraw-border-color",type:"text"},"md-css":{name:"excalidraw-css",type:"text"},autoexport:{name:"excalidraw-autoexport",type:"text"},"iframe-theme":{name:"excalidraw-iframe-theme",type:"text"},"open-as-markdown":{name:"excalidraw-open-md",type:"checkbox"}},EMBEDDABLE_THEME_FRONTMATTER_VALUES=["light","dark","auto","dafault"],VIEW_TYPE_EXCALIDRAW="excalidraw",ICON_NAME="excalidraw-icon",RERENDER_EVENT="excalidraw-embed-rerender",BLANK_DRAWING=`{"type":"excalidraw","version":2,"source":"${GITHUB_RELEASES+PLUGIN_VERSION}","elements":[],"appState":{"gridSize":null,"viewBackgroundColor":"#ffffff"}}`,DARK_BLANK_DRAWING=`{"type":"excalidraw","version":2,"source":"${GITHUB_RELEASES+PLUGIN_VERSION}","elements":[],"appState":{"theme":"dark","gridSize":null,"viewBackgroundColor":"#ffffff"}}`,FRONTMATTER=["---","",`${FRONTMATTER_KEYS.plugin.name}: parsed`,"tags: [excalidraw]","","---","==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠==","",""].join("\n"),EMPTY_MESSAGE="Hit enter to create a new drawing",TEXT_DISPLAY_PARSED_ICON_NAME="quote-glyph",TEXT_DISPLAY_RAW_ICON_NAME="presentation",SCRIPTENGINE_ICON_NAME="ScriptEngine",KEYBOARD_EVENT_TYPES=["keydown","keyup","keypress"],EXTENDED_EVENT_TYPES=["copy","cut","paste"],COLOR_NAMES=new Map;COLOR_NAMES.set("aliceblue","#f0f8ff"),COLOR_NAMES.set("antiquewhite","#faebd7"),COLOR_NAMES.set("aqua","#00ffff"),COLOR_NAMES.set("aquamarine","#7fffd4"),COLOR_NAMES.set("azure","#f0ffff"),COLOR_NAMES.set("beige","#f5f5dc"),COLOR_NAMES.set("bisque","#ffe4c4"),COLOR_NAMES.set("black","#000000"),COLOR_NAMES.set("blanchedalmond","#ffebcd"),COLOR_NAMES.set("blue","#0000ff"),COLOR_NAMES.set("blueviolet","#8a2be2"),COLOR_NAMES.set("brown","#a52a2a"),COLOR_NAMES.set("burlywood","#deb887"),COLOR_NAMES.set("cadetblue","#5f9ea0"),COLOR_NAMES.set("chartreuse","#7fff00"),COLOR_NAMES.set("chocolate","#d2691e"),COLOR_NAMES.set("coral","#ff7f50"),COLOR_NAMES.set("cornflowerblue","#6495ed"),COLOR_NAMES.set("cornsilk","#fff8dc"),COLOR_NAMES.set("crimson","#dc143c"),COLOR_NAMES.set("cyan","#00ffff"),COLOR_NAMES.set("darkblue","#00008b"),COLOR_NAMES.set("darkcyan","#008b8b"),COLOR_NAMES.set("darkgoldenrod","#b8860b"),COLOR_NAMES.set("darkgray","#a9a9a9"),COLOR_NAMES.set("darkgreen","#006400"),COLOR_NAMES.set("darkkhaki","#bdb76b"),COLOR_NAMES.set("darkmagenta","#8b008b"),COLOR_NAMES.set("darkolivegreen","#556b2f"),COLOR_NAMES.set("darkorange","#ff8c00"),COLOR_NAMES.set("darkorchid","#9932cc"),COLOR_NAMES.set("darkred","#8b0000"),COLOR_NAMES.set("darksalmon","#e9967a"),COLOR_NAMES.set("darkseagreen","#8fbc8f"),COLOR_NAMES.set("darkslateblue","#483d8b"),COLOR_NAMES.set("darkslategray","#2f4f4f"),COLOR_NAMES.set("darkturquoise","#00ced1"),COLOR_NAMES.set("darkviolet","#9400d3"),COLOR_NAMES.set("deeppink","#ff1493"),COLOR_NAMES.set("deepskyblue","#00bfff"),COLOR_NAMES.set("dimgray","#696969"),COLOR_NAMES.set("dodgerblue","#1e90ff"),COLOR_NAMES.set("firebrick","#b22222"),COLOR_NAMES.set("floralwhite","#fffaf0"),COLOR_NAMES.set("forestgreen","#228b22"),COLOR_NAMES.set("fuchsia","#ff00ff"),COLOR_NAMES.set("gainsboro","#dcdcdc"),COLOR_NAMES.set("ghostwhite","#f8f8ff"),COLOR_NAMES.set("gold","#ffd700"),COLOR_NAMES.set("goldenrod","#daa520"),COLOR_NAMES.set("gray","#808080"),COLOR_NAMES.set("green","#008000"),COLOR_NAMES.set("greenyellow","#adff2f"),COLOR_NAMES.set("honeydew","#f0fff0"),COLOR_NAMES.set("hotpink","#ff69b4"),COLOR_NAMES.set("indianred","#cd5c5c"),COLOR_NAMES.set("indigo","#4b0082"),COLOR_NAMES.set("ivory","#fffff0"),COLOR_NAMES.set("khaki","#f0e68c"),COLOR_NAMES.set("lavender","#e6e6fa"),COLOR_NAMES.set("lavenderblush","#fff0f5"),COLOR_NAMES.set("lawngreen","#7cfc00"),COLOR_NAMES.set("lemonchiffon","#fffacd"),COLOR_NAMES.set("lightblue","#add8e6"),COLOR_NAMES.set("lightcoral","#f08080"),COLOR_NAMES.set("lightcyan","#e0ffff"),COLOR_NAMES.set("lightgoldenrodyellow","#fafad2"),COLOR_NAMES.set("lightgrey","#d3d3d3"),COLOR_NAMES.set("lightgreen","#90ee90"),COLOR_NAMES.set("lightpink","#ffb6c1"),COLOR_NAMES.set("lightsalmon","#ffa07a"),COLOR_NAMES.set("lightseagreen","#20b2aa"),COLOR_NAMES.set("lightskyblue","#87cefa"),COLOR_NAMES.set("lightslategray","#778899"),COLOR_NAMES.set("lightsteelblue","#b0c4de"),COLOR_NAMES.set("lightyellow","#ffffe0"),COLOR_NAMES.set("lime","#00ff00"),COLOR_NAMES.set("limegreen","#32cd32"),COLOR_NAMES.set("linen","#faf0e6"),COLOR_NAMES.set("magenta","#ff00ff"),COLOR_NAMES.set("maroon","#800000"),COLOR_NAMES.set("mediumaquamarine","#66cdaa"),COLOR_NAMES.set("mediumblue","#0000cd"),COLOR_NAMES.set("mediumorchid","#ba55d3"),COLOR_NAMES.set("mediumpurple","#9370d8"),COLOR_NAMES.set("mediumseagreen","#3cb371"),COLOR_NAMES.set("mediumslateblue","#7b68ee"),COLOR_NAMES.set("mediumspringgreen","#00fa9a"),COLOR_NAMES.set("mediumturquoise","#48d1cc"),COLOR_NAMES.set("mediumvioletred","#c71585"),COLOR_NAMES.set("midnightblue","#191970"),COLOR_NAMES.set("mintcream","#f5fffa"),COLOR_NAMES.set("mistyrose","#ffe4e1"),COLOR_NAMES.set("moccasin","#ffe4b5"),COLOR_NAMES.set("navajowhite","#ffdead"),COLOR_NAMES.set("navy","#000080"),COLOR_NAMES.set("oldlace","#fdf5e6"),COLOR_NAMES.set("olive","#808000"),COLOR_NAMES.set("olivedrab","#6b8e23"),COLOR_NAMES.set("orange","#ffa500"),COLOR_NAMES.set("orangered","#ff4500"),COLOR_NAMES.set("orchid","#da70d6"),COLOR_NAMES.set("palegoldenrod","#eee8aa"),COLOR_NAMES.set("palegreen","#98fb98"),COLOR_NAMES.set("paleturquoise","#afeeee"),COLOR_NAMES.set("palevioletred","#d87093"),COLOR_NAMES.set("papayawhip","#ffefd5"),COLOR_NAMES.set("peachpuff","#ffdab9"),COLOR_NAMES.set("peru","#cd853f"),COLOR_NAMES.set("pink","#ffc0cb"),COLOR_NAMES.set("plum","#dda0dd"),COLOR_NAMES.set("powderblue","#b0e0e6"),COLOR_NAMES.set("purple","#800080"),COLOR_NAMES.set("rebeccapurple","#663399"),COLOR_NAMES.set("red","#ff0000"),COLOR_NAMES.set("rosybrown","#bc8f8f"),COLOR_NAMES.set("royalblue","#4169e1"),COLOR_NAMES.set("saddlebrown","#8b4513"),COLOR_NAMES.set("salmon","#fa8072"),COLOR_NAMES.set("sandybrown","#f4a460"),COLOR_NAMES.set("seagreen","#2e8b57"),COLOR_NAMES.set("seashell","#fff5ee"),COLOR_NAMES.set("sienna","#a0522d"),COLOR_NAMES.set("silver","#c0c0c0"),COLOR_NAMES.set("skyblue","#87ceeb"),COLOR_NAMES.set("slateblue","#6a5acd"),COLOR_NAMES.set("slategray","#708090"),COLOR_NAMES.set("snow","#fffafa"),COLOR_NAMES.set("springgreen","#00ff7f"),COLOR_NAMES.set("steelblue","#4682b4"),COLOR_NAMES.set("tan","#d2b48c"),COLOR_NAMES.set("teal","#008080"),COLOR_NAMES.set("thistle","#d8bfd8"),COLOR_NAMES.set("tomato","#ff6347"),COLOR_NAMES.set("turquoise","#40e0d0"),COLOR_NAMES.set("violet","#ee82ee"),COLOR_NAMES.set("wheat","#f5deb3"),COLOR_NAMES.set("white","#ffffff"),COLOR_NAMES.set("whitesmoke","#f5f5f5"),COLOR_NAMES.set("yellow","#ffff00"),COLOR_NAMES.set("yellowgreen","#9acd32");const DEFAULT_MD_EMBED_CSS='.snw-reference{display: none;}.excalidraw-md-host{padding:0px 10px}.excalidraw-md-footer{height:5px}foreignObject{background-color:transparent}p{display:block;margin-block-start:1em;margin-block-end:1em;margin-inline-start:0px;margin-inline-end:0px;color:inherit}table,tr,th,td{color:inherit;border:1px solid;border-collapse:collapse;padding:3px}th{font-weight:bold;border-bottom:double;background-color:silver}.copy-code-button{display:none}code[class*=language-],pre[class*=language-]{color:#393a34;font-family:"Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;font-size:.9em;line-height:1.2em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre>code[class*=language-]{font-size:1em}pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection{background:#C1DEF1}pre[class*=language-]::selection,pre[class*=language-] ::selection,code[class*=language-]::selection,code[class*=language-] ::selection{background:#C1DEF1}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;background-color:#0000001a}:not(pre)>code[class*=language-]{padding:.2em;padding-top:1px;padding-bottom:1px;background:#f8f8f8;border:1px solid #dddddd}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:green;font-style:italic}.token.namespace{opacity:.7}.token.string{color:#a31515}.token.punctuation,.token.operator{color:#393a34}.token.url,.token.symbol,.token.number,.token.boolean,.token.variable,.token.constant,.token.inserted{color:#36acaa}.token.atrule,.token.keyword,.token.attr-value,.language-autohotkey .token.selector,.language-json .token.boolean,.language-json .token.number,code[class*=language-css]{color:#00f}.token.function{color:#393a34}.token.deleted,.language-autohotkey .token.tag{color:#9a050f}.token.selector,.language-autohotkey .token.keyword{color:#00009f}.token.important{color:#e90}.token.important,.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.class-name,.language-json .token.property{color:#2b91af}.token.tag,.token.selector{color:maroon}.token.attr-name,.token.property,.token.regex,.token.entity{color:red}.token.directive.tag .tag{background:#ffff00;color:#393a34}.line-numbers.line-numbers .line-numbers-rows{border-right-color:#a5a5a5}.line-numbers .line-numbers-rows>span:before{color:#2b91af}.line-highlight.line-highlight{background:rgba(193,222,241,.2);background:-webkit-linear-gradient(left,rgba(193,222,241,.2) 70%,rgba(221,222,241,0));background:linear-gradient(to right,rgba(193,222,241,.2) 70%,rgba(221,222,241,0))}blockquote{ font-style:italic;background-color:rgb(46,43,42,0.1);margin:0;margin-left:1em;border-radius:0 4px 4px 0;border:1px solid hsl(0,80%,32%);border-left-width:8px;border-top-width:0px;border-right-width:0px;border-bottom-width:0px;padding:10px 20px;margin-inline-start:30px;margin-inline-end:30px;}',SCRIPTENGINE_ICON='<g transform="translate(-8,-8)"><path d="M24.318 37.983c-1.234-1.232-8.433-3.903-7.401-7.387 1.057-3.484 9.893-12.443 13.669-13.517 3.776-1.074 6.142 6.523 9.012 7.073 2.87.55 6.797-1.572 8.207-3.694 1.384-2.148-3.147-7.413.15-9.168 3.298-1.755 16.389-2.646 19.611-1.284 3.247 1.363-1.611 7.335-.151 9.483 1.46 2.148 6.067 3.746 8.836 3.38 2.769-.368 4.154-6.733 7.728-5.633 3.575 1.1 12.36 8.828 13.67 12.233 1.308 3.406-5.186 5.423-5.79 8.2-.58 2.75-.026 6.705 2.265 8.355 2.266 1.65 9.642-1.78 11.404 1.598 1.762 3.38 1.007 15.35-.806 18.651-1.787 3.353-7.753-.367-9.969 1.31-2.215 1.65-3.901 5.92-3.373 8.67.504 2.777 7.754 4.48 6.445 7.885C96.49 87.543 87.15 95.454 83.5 96.685c-3.65 1.231-4.96-4.741-7.577-5.16-2.593-.393-6.57.707-8.03 2.75-1.436 2.017 2.668 7.806-.63 9.483-3.323 1.676-15.759 2.226-19.157.655-3.373-1.598.554-7.964-1.108-10.138-1.687-2.174-6.394-3.431-9.012-2.907-2.643.55-3.273 7.282-6.747 6.103-3.499-1.126-12.788-9.535-14.172-13.019-1.36-3.484 5.437-5.108 5.966-7.858.529-2.777-.68-7.073-2.744-8.697-2.064-1.624-7.93 2.41-9.642-1.126-1.737-3.537-2.441-16.765-.654-20.118 1.787-3.3 9.062 1.598 11.429.183 2.366-1.44 2.316-7.282 2.769-8.749m.126-.104c-1.234-1.232-8.433-3.903-7.401-7.387 1.057-3.484 9.893-12.443 13.669-13.517 3.776-1.074 6.142 6.523 9.012 7.073 2.87.55 6.797-1.572 8.207-3.694 1.384-2.148-3.147-7.413.15-9.168 3.298-1.755 16.389-2.646 19.611-1.284 3.247 1.363-1.611 7.335-.151 9.483 1.46 2.148 6.067 3.746 8.836 3.38 2.769-.368 4.154-6.733 7.728-5.633 3.575 1.1 12.36 8.828 13.67 12.233 1.308 3.406-5.186 5.423-5.79 8.2-.58 2.75-.026 6.705 2.265 8.355 2.266 1.65 9.642-1.78 11.404 1.598 1.762 3.38 1.007 15.35-.806 18.651-1.787 3.353-7.753-.367-9.969 1.31-2.215 1.65-3.901 5.92-3.373 8.67.504 2.777 7.754 4.48 6.445 7.885C96.49 87.543 87.15 95.454 83.5 96.685c-3.65 1.231-4.96-4.741-7.577-5.16-2.593-.393-6.57.707-8.03 2.75-1.436 2.017 2.668 7.806-.63 9.483-3.323 1.676-15.759 2.226-19.157.655-3.373-1.598.554-7.964-1.108-10.138-1.687-2.174-6.394-3.431-9.012-2.907-2.643.55-3.273 7.282-6.747 6.103-3.499-1.126-12.788-9.535-14.172-13.019-1.36-3.484 5.437-5.108 5.966-7.858.529-2.777-.68-7.073-2.744-8.697-2.064-1.624-7.93 2.41-9.642-1.126-1.737-3.537-2.441-16.765-.654-20.118 1.787-3.3 9.062 1.598 11.429.183 2.366-1.44 2.316-7.282 2.769-8.749" fill="none" stroke-width="2" stroke-linecap="round" stroke="currentColor"/><path d="M81.235 56.502a23.3 23.3 0 0 1-1.46 8.068 20.785 20.785 0 0 1-1.762 3.72 24.068 24.068 0 0 1-5.337 6.26 22.575 22.575 0 0 1-3.449 2.358 23.726 23.726 0 0 1-7.803 2.803 24.719 24.719 0 0 1-8.333 0 24.102 24.102 0 0 1-4.028-1.074 23.71 23.71 0 0 1-3.776-1.729 23.259 23.259 0 0 1-6.369-5.265 23.775 23.775 0 0 1-2.416-3.353 24.935 24.935 0 0 1-1.762-3.72 23.765 23.765 0 0 1-1.083-3.981 23.454 23.454 0 0 1 0-8.173c.252-1.336.604-2.698 1.083-3.956a24.935 24.935 0 0 1 1.762-3.72 22.587 22.587 0 0 1 2.416-3.378c.881-1.048 1.888-2.017 2.946-2.908a24.38 24.38 0 0 1 3.423-2.357 23.71 23.71 0 0 1 3.776-1.73 21.74 21.74 0 0 1 4.028-1.047 23.437 23.437 0 0 1 8.333 0 24.282 24.282 0 0 1 7.803 2.777 26.198 26.198 0 0 1 3.45 2.357 24.62 24.62 0 0 1 5.336 6.287 20.785 20.785 0 0 1 1.762 3.72 21.32 21.32 0 0 1 1.083 3.955c.251 1.336.302 3.405.377 4.086.05.681.05-.68 0 0" fill="none" stroke-width="4" stroke-linecap="round" stroke="currentColor"/><path d="M69.404 56.633c-6.596-3.3-13.216-6.6-19.51-9.744m19.51 9.744c-6.747-3.379-13.493-6.758-19.51-9.744m0 0v19.489m0-19.49v19.49m0 0c4.355-2.148 8.71-4.322 19.51-9.745m-19.51 9.745c3.978-1.965 7.93-3.956 19.51-9.745m0 0h0m0 0h0" fill="currentColor" stroke-linecap="round" stroke="currentColor" stroke-width="4"/></g>',DISK_ICON_NAME="save",EXPORT_IMG_ICON=' <g transform="scale(4.166)" strokeWidth="1.25" fill="none" stroke="currentColor"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M15 8h.01"></path><path d="M12 20h-5a3 3 0 0 1 -3 -3v-10a3 3 0 0 1 3 -3h10a3 3 0 0 1 3 3v5"></path><path d="M4 15l4 -4c.928 -.893 2.072 -.893 3 0l4 4"></path><path d="M14 14l1 -1c.617 -.593 1.328 -.793 2.009 -.598"></path><path d="M19 16v6"></path><path d="M22 19l-3 3l-3 -3"></path></g>',EXPORT_IMG_ICON_NAME="export-img",EXCALIDRAW_ICON='<path d="M24 17h121v121H24z" style="fill:none" transform="matrix(.8843 0 0 .83471 -21.223 -14.19)"/><path d="M119.81 105.98a.549.549 0 0 0-.53-.12c-4.19-6.19-9.52-12.06-14.68-17.73l-.85-.93c0-.11-.05-.21-.12-.3a.548.548 0 0 0-.34-.2l-.17-.18-.12-.09c-.15-.32-.53-.56-.95-.35-1.58.81-3 1.97-4.4 3.04-1.87 1.43-3.7 2.92-5.42 4.52-.7.65-1.39 1.33-1.97 2.09-.28.37-.07.72.27.87-1.22 1.2-2.45 2.45-3.68 3.74-.11.12-.17.28-.16.44.01.16.09.31.22.41l2.16 1.65s.01.03.03.04c3.09 3.05 8.51 7.28 14.25 11.76.85.67 1.71 1.34 2.57 2.01.39.47.76.94 1.12 1.4.19.25.55.3.8.11.13.1.26.21.39.31a.57.57 0 0 0 .8-.1c.07-.09.1-.2.11-.31.04 0 .07.03.1.03.15 0 .31-.06.42-.18l10.18-11.12a.56.56 0 0 0-.04-.8l.01-.01Zm-29.23-3.85c.07.09.14.17.21.25 1.16.98 2.4 2.04 3.66 3.12l-5.12-3.91s-.32-.22-.52-.36c-.11-.08-.21-.16-.31-.24l-.38-.32s.07-.07.1-.11l.35-.35c1.72-1.74 4.67-4.64 6.19-6.06-1.61 1.62-4.87 6.37-4.17 7.98h-.01Zm17.53 13.81-4.22-3.22c-1.65-1.71-3.43-3.4-5.24-5.03 2.28 1.76 4.23 3.25 4.52 3.51 2.21 1.97 2.11 1.61 3.63 2.91l1.83 1.33c-.18.16-.36.33-.53.49l.01.01Zm1.06.81-.08-.06c.16-.13.33-.25.49-.38l-.4.44h-.01Zm-66.93-65.3c.14.72.27 1.43.4 2.11.69 3.7 1.33 7.03 2.55 9.56l.48 1.92c.19.73.46 1.64.71 1.83 2.85 2.52 7.22 6.28 11.89 9.82.21.16.5.15.7-.01.01.02.03.03.04.04.11.1.24.15.38.15.16 0 .31-.06.42-.19 5.98-6.65 10.43-12.12 13.6-16.7.2-.25.3-.54.29-.84.2-.24.41-.48.6-.68a.558.558 0 0 0-.1-.86.578.578 0 0 0-.17-.36c-1.39-1.34-2.42-2.31-3.46-3.28-1.84-1.72-3.74-3.5-7.77-7.51-.02-.02-.05-.04-.07-.06a.555.555 0 0 0-.22-.14c-1.11-.39-3.39-.78-6.26-1.28-4.22-.72-10-1.72-15.2-3.27h-.04v-.01s-.02 0-.03.02h-.01l.04-.02s-.31.01-.37.04c-.08.04-.14.09-.19.15-.05.06-.09.12-.47.2-.38.08.08 0 .11 0h-.11v.03c.07.34.05.58.16.97-.02.1.21 1.02.24 1.11l1.83 7.26h.03Zm30.95 6.54s-.03.04-.04.05l-.64-.71c.22.21.44.42.68.66Zm-7.09 9.39s-.07.08-.1.12l-.02-.02c.04-.03.08-.07.13-.1h-.01Zm-7.07 8.47Zm3.02-28.57c.35.35 1.74 1.65 2.06 1.97-1.45-.66-5.06-2.34-6.74-2.88 1.65.29 3.93.66 4.68.91Zm-19.18-2.77c.84 1.44 1.5 6.49 2.16 11.4-.37-1.58-.69-3.12-.99-4.6-.52-2.56-1-4.85-1.67-6.88.14.01.31.03.49.05 0 .01 0 .02.02.03h-.01Zm-.29-1.21c-.23-.02-.44-.04-.62-.05-.02-.04-.03-.08-.04-.12l.66.18v-.01Zm-2.22.45v-.02.02Zm78.54-1.18c.04-.23-1.1-1.24-.74-1.26.85-.04.86-1.35 0-1.31-1.13.06-2.27.32-3.37.53-1.98.37-3.95.78-5.92 1.21-4.39.94-8.77 1.93-13.1 3.11-1.36.37-2.86.7-4.11 1.36-.42.22-.4.67-.17.95-.09.05-.18.08-.28.09-.37.07-.74.13-1.11.19a.566.566 0 0 0-.39.86c-2.32 3.1-4.96 6.44-7.82 9.95-2.81 3.21-5.73 6.63-8.72 10.14-9.41 11.06-20.08 23.6-31.9 34.64-.23.21-.24.57-.03.8.05.06.12.1.19.13-.16.15-.32.3-.48.44-.1.09-.14.2-.16.32-.08.08-.16.17-.23.25-.21.23-.2.59.03.8.23.21.59.2.8-.03.04-.04.08-.09.12-.13a.84.84 0 0 1 1.22 0c.69.74 1.34 1.44 1.95 2.09l-1.38-1.15a.57.57 0 0 0-.8.07c-.2.24-.17.6.07.8l14.82 12.43c.11.09.24.13.37.13.15 0 .29-.06.4-.17l.36-.36a.56.56 0 0 0 .63-.12c20.09-20.18 36.27-35.43 54.8-49.06.17-.12.25-.32.23-.51a.57.57 0 0 0 .48-.39c3.42-10.46 4.08-19.72 4.28-24.27 0-.03.01-.05.02-.07.02-.05.03-.1.04-.14.03-.11.05-.19.05-.19.26-.78.17-1.53-.15-2.15v.02ZM82.98 58.94c.9-1.03 1.79-2.04 2.67-3.02-5.76 7.58-15.3 19.26-28.81 33.14 9.2-10.18 18.47-20.73 26.14-30.12Zm-32.55 52.81-.03-.03c.11.02.19.04.2.04a.47.47 0 0 0-.17 0v-.01Zm6.9 6.42-.05-.04.03-.03c.02 0 .03.02.04.02 0 .02-.02.03-.03.05h.01Zm8.36-7.21 1.38-1.44c.01.01.02.03.03.05-.47.46-.94.93-1.42 1.39h.01Zm2.24-2.21c.26-.3.56-.65.87-1.02.01-.01.02-.03.04-.04 3.29-3.39 6.68-6.82 10.18-10.25.02-.02.05-.04.07-.06.86-.66 1.82-1.39 2.72-2.08-4.52 4.32-9.11 8.78-13.88 13.46v-.01Zm21.65-55.88c-1.86 2.42-3.9 5.56-5.63 8.07-5.46 7.91-23.04 27.28-23.43 27.65-2.71 2.62-10.88 10.46-16.09 15.37-.14.13-.25.24-.34.35a.794.794 0 0 1 .03-1.13c24.82-23.4 39.88-42.89 46-51.38-.13.33-.24.69-.55 1.09l.01-.02Zm16.51 7.1-.01.02c0-.02-.02-.07.01-.02Zm-.91-5.13Zm-5.89 9.45c-2.26-1.31-3.32-3.27-2.71-5.25l.19-.66c.08-.19.17-.38.28-.57.59-.98 1.49-1.85 2.52-2.36.05-.02.1-.03.15-.04a.795.795 0 0 1-.04-.43c.05-.31.25-.58.66-.58.67 0 2.75.62 3.54 1.3.24.19.47.4.68.63.3.35.74.92.96 1.33.13.06.23.62.38.91.14.46.2.93.18 1.4 0 .02 0 .02.01.03-.03.07 0 .37-.04.4-.1.72-.36 1.43-.75 2.05-.04.05-.07.11-.11.16 0 .01-.02.02-.03.04-.3.43-.65.83-1.08 1.13-1.26.89-2.73 1.16-4.2.79a6.33 6.33 0 0 1-.57-.25l-.02-.03Zm16.27-1.63c-.49 2.05-1.09 4.19-1.8 6.38-.03.08-.03.16-.03.23-.1.01-.19.05-.27.11-4.44 3.26-8.73 6.62-12.98 10.11 3.67-3.32 7.39-6.62 11.23-9.95a6.409 6.409 0 0 0 2.11-3.74l.56-3.37.03-.1c.25-.71 1.34-.4 1.17.33h-.02Z" style="fill:currentColor;fill-rule:nonzero" transform="translate(-26.41 -29.49)"/>',FONTS_STYLE_ID="excalidraw-fonts",VIRGIL_DATAURL="data:application/font-woff;charset=utf-8;base64,d09GMk9UVE8AAO9AAAkAAAABO1AAAO73AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYTJHQZgAIluATYCJAOQWAQGBY9lByBbpzpxQ1QZOitEWvl1ExHg7NqqxsS6RlCwSkciyuhqMfv//89KOsZwUAeGmJXV32EeijNbRUcYuVUTmWNvG5FWRBfkAW4YWVueXU6tq9d0pZufMcACcUzc7AmXTyBwYmw0WojBScItqLq853lRPMu/i21F/1VrveHFeyj+LdHE3AfsFiWacmNotmSIhpJesVGSFIFWJDgsMxNmRIsQQzGF4rvOX33MPtY+LeOF490dgR0G/l0zmGbP8ku9beGBOf2+EcKFm8Md59ESM5GZKYtFok/F14jmMBPlbsKEWTmjIcDMVCgM0RQv1VD4IZddn+x6g2Ff91p6BriTOHYqRgBPP/Z8O3Pn/WXBXUTBKoZoSbZg6N3qwPP/937uvc+bD5huHSziTSgio5mQNpAsr235cGq9P8/r5vc1H/KatrSSHj8fGwzDhavuia24cMyBvutkjYQtKFtwTcS1wVWcODY7KMSFOM69OS/+4fm59f7vRf5FsY0aMXLQQgsGrRwggmTYYCJVEmVBm4V5Z0ThidFYPeyrtRKEoeme3dvtgT6iOeJnlC8MsAKKT0UoFD469oV+l7DD8pn6lvkVc++0kSEfkCM0Vauqh+RnHNszHtYIqREKELpb3S0eAhMvIXmB7+tkb9/wpNO+5fOjmT/aU+6YYwu6wVlib1xrbGxcwNgduqmiNNOESimjUWmogISEAOOOe086XjvNccGlpjQnb8gjOY3Gyr1sLlmavf8vKSIJwtUoBiEBfY1jpaqrq1ET/z2/7f+/4/hmD/yU4cZxDvyseBGJ7/W9rVwMSlAkJUsk6hzqQCsqJVbd9NbifX/4r6pJ4LDfsD5vl0a3Nl1TSqk09SUxpviFT9KCpj3jFmScMz4t9f8VWXkadd4bSR35QqxNH33Ai5BewBI5hQAbQsZFe2nQZ84A787uLKHXduwYMHUawjI9wuP+7R+jZdW/WpL3hdof92mkcoac8YBwj3gJB7CB3aayqzgrsSIikYrAZYK2u3l6AJfgdm+OybOvB8+JTFAi4hU026JOz7fHCxQujUCxVVutY8Wgje+dK4CA+afpvl+9Nyecky85rLBnngvwxHEpBa9ATSI+MxnxjMcbadI6LaWIPXHlOeusTrrDBkAFCAzMc6UTOFEFKTY1Nm4GuAPasdAah4+DcVmNg/pfU5Nao+e7QykouG0KYR4ewkKQVmtP1n91ike6Kvt60/WySWeBpeOKr7QCg0hoKAwgPPOvqrl+UPI78CqVirROp/RhKm2YMy0C6CJQdAHdBNBOBOmKyGuC5AZe6X1LKQUflBN+2M7DB2VHoBs/KOcRvCZQfn6i0lsdM5Ypw5otoyCn0UlftixbMiaTk2XKy5Q1Y17G2zJOB7nKUm0/PkgM7J3K/X5azIxlS8eShkmeIYrIIuvN47j+8Xk5xmbzq/fd0AYlB/aifvZu/3or31eH2eCosZNM23gKUvMyo25K7fx8x2ZRqLM4/xxLbOST4x/7aOuym35y8olHctP4b8V/TX/YCP2p/1mult99+Gj0u488j59Q7/DTaWN4EkPx7itzRBhgghZ7XPAiQJAIcTLMtFCJKku1WqHHWlvsst9xLnKDYR4xwicQZ7tG+knSE5NnLF69LLqrR0X89vtHVudoGtiw59gDkletTr9hov04IcNsWAhCFGnUMYNrWMA6cqigBQoCbHTgQRhxDOMAjuIkzuIyzuAybuEuHmMEbxC773VEWIigqlrWqT4NbHCjmtiM5nd+y1vXlq5ob9d1c/f3eC93qA/7pk6NEihFn0Rmmnk61thin7O8wilOc4krXGeGedbYJEaSKhN6GOUQD/IKz/ACr/IW7/ERn/Il3/ITf/B1//9y0DjoHH5x+M2hIRCCxhEpTKlFmUZcYipGDGMmFmBNbIBtYYfYXewxq9h9hvn6/vr3thQeZ+KUArHScmqorznNakXbKqkpSqIM+SLlVlB9GtJ+HdUZXdZZXdGQ7uuZ3uizfnlBkASHEFk57pwrbnvKU17wunOuGjNrxbYj2+1zj/u92yM+4fO+5gu+7jt+6Od+40+uMZH/QTH0f6P/F2WjGegMdD6aieagxWg5WoU2oG0oH5WhWgfrEB2GI+UoOOqOGcc5+Rat6/9k/8+mUCCeJiIC5sZapHx9QEX2IMLTPuIbQjZoyoY9XgDCc1CSUcEfzRVFJcPJ4YfarTTXnEEp9Fll4bmCyF6huXD0c2NkyBrUclqFDS0fCcldmnBxq5ZzUdjQ0hBhra3noZkdrY2QIXdtwDXbzuJpombNK3hcpdld/aaHaGW4yOQ0Uq2KuSpqqHgkIlXMSxG5hZWvipLO5Yja+dGe2Ec0Xl7hJVeLriry+vKRHMnapHSSWh3Na/r0xosnKF8vBiOnHHm02DmrmKh7JKa/6Kx4A1EGB5L5gPZja3EC36Px8gVmpEMfpVo7eKal3dCDQk3OQWrtEfywxsP7kXKdc+xllnS10CSorh6UNHRFJNThKpI3Uj12NefH5EBdrYWSRruZkfa+i7mL+aR7b+irdu+/Svdr602Xpz3AJtUl38juYpi/pk0HYWKZtRHy//WcNGHEROmgcepGC9vOyzGRY1+qfJxX8Ka4G2gxbNKvLqrqBjSlQRMYHTrDDGsYBjAs71XrIXW0LYetKxhHqGHoNTTSyi1NsvSW9pYPZAY4gkxWtrU0z9vbRMU08fOJQxc+Syy+gtk9G54gA+xj+zrZX5Y0rjZrdBmGy68X/sBnzCF5AdMtKp4mqPbyQez0lZGifaq47Tf7SIZExoiy9kkO2JjFGs8VnQMdK9nMR0/nKEUbGADCEcjocG6DUGjz+CoAhQFwBBIDEwuFxo4bN+++CUBhAAhHIDEwsVBobBxhCwAAwIcDAomBiYVCY+OISUAQBH0SBIEgCIIgCIKgcvQdCMIRSAy0MCC+M6Y5BcVI/gkYkMn8sRZzoj6jjymGesj9+I2a22/ocz8NNPA2C+fgZtOvbe7ZbLKKuW1NchzK6mJ1Pf/1IF9PGNzuWk+fWr5AJLsGbXx6WqXtz7Sw5sK/2TRigdQEnKWCSwHOJDBxwFWcy/MuPpBExwGTydS++B38ygHYhoswSGJKao0cwRU+cxa87AMKDql645JDKYO+5m4QVzcJ3y7stzuYTaZTHAbNHXHpPfKmuHugSHKiUk/ZPC/TXrC0xqt/dsGQ57sgXd3hs/6nDbLRY/DknG/yxVziZVz+ldwy0Iy6cNfv9o1UVPeO7SRI/Eej3M5tWU/0ydP7mv8W+vb7QPcr3ytNdXF9bro22Y7bj7Zf+/5e7C/73n67/xrB1Iy9URj6uDPOjzvj1fgeZsnDRCrKMR3LsR2VaAcbarhhDXcEIhLDcSROx6U4E5fjZgzHoxiJt3PJ9GZwpV151l4c+73B+fGXExniT6JM1AELXkAM6XgMP5YTZEIWvN+8x96yP86/HmkfeR30BDeCq6FruBPGwn1qRw26oBG6Ql8N9qqpBupSDaqaqtbOeqAPtE9H9a6ua4yag2bZtBiT0RqTSZtKYzeKbdmu2Fors26rtyFbtJX2mzudd3CO+7zBVdzBKraziKWsZzf7OcUPuIzfccG8beSYgWdMypiWsTBjeUZ2xraMHRl1GW0ZwgxVhjlDyrAzchn1jJlUWRX48WpiZWxuhR6qmw57kBDolGzsgvY89rhb7XvJzwQfY4+20SX4OtWreKpuSFaXlECpiOVamcv4JA4/x8nKhM2qKCxtMjn4oyulp5+2+DzPxYtYzPSoPf9Yvlvd4vcuYU3142xsRkmAfbwfK6ODt6039/4JpW8VEqlHIZIunBL+6JmzfHyE3o3mF33fTPtyd+kt8NrwT5yY3tXcECqX0RZRjsN416y3bBO8IjDJcPLMjeX3UFc4USotsEQLOQvWwDz+tuofrKKIxg39EBCg4K6oeW4pSCLqm7ih+kAy7/Fydux5Ldh5nZZU05IuqzLvripqXcA6pZ2RPKH/d7Vhy+50yl+yFh/UIyLAjn8fv/fx2Z7SNsWc2qzj/U7z+cFG30qoPh7Z5qC3Ze5YhCSBZYH04b4xhJmKKLbQSuzNojJnYgVKYcrTV4jLFCCbX7QrsD8wOFpEHcVC6m7/T4/rDbOCMYvv9JxgP8P+5bnnhxblt29k79MERhrZfpNruPWEn9zyaWm9D6Yhlysalgwi4BGLoGwXLltLytTuk/Fts6n1vh2+DbWgbnrIDLRawWQ8nikM/EuPyg9/viTjuTpg3B1Y+hDUoC9ieivGQlh0cicgzznLfcQVZ3dVKCuRSmjBAmXfyhNu9pTGGImlCL53o0K42CnEDXXqbCl182f/Bf89gv5vwu2e7vJ4iWYg3CGwkKTThtD0GoseIwAWO58TjMhWCDTwf4n/MWnupK2x/YCzIig48kILRHftWSKYgi+uRo3xYmrCurpHP+wg/v01/53uutoVJiUQVDulJgTOfnkrR0ZI1k1tENAMdR8iv1SLeO3Yf8I/i8/b9WdwvtwVMZlpeDIIzYdmpyAtzZMJSHtCcxcsWTFrteeNzqfiMmfScU8kIho1b78owsx+mq4uQutyR6w+9Yo3PmDBKfNIugWybM4TIVcd0CWURQ0Sc9kHMwiRyovyick6zb2ikU77TH+AKiu2Gf+Ahqq76ShpCk2KlUBjcPCK11f9dj+F7vSs8H0W2JSabHDxn24YNFev43yHqeq6XfE4R3rTOnZgFh8dEP9Q12qAHDk022XQ1pUSyjS/MSNipVuDYUYp0cM2GyEIDULG3HlLVE2Auyq87HOQvZquGjVgYq9KECHaIH0yk/2vr37SWfBV8B39wF8uFIxNfTsoDBvADTTNVVQ7OCrfY6L0G9yaU8aGZUKY7KcewrBtVffi6ub8GXxbdpI97b8hBoFQUgYJ00i0awM2XFgyVBGcFpXLAuR+2yS9JkI/gib26ZWf37eeNzxCOI7hrUwsKtpDVjRC3jQBB+N9CokJWXc0xw4tO43puOVMxB3S5XQnpNSwKH7otNIEjQiM4uWWjq3nF5hOi5K7xSdq3G9gYjUCzpPda9tRcOW32Y1gO7B4VKSrcYl2suSDeHI+STDgD5mdKorFl+SBLm5wuaWCyjmlZRMIsqBi5kErzkGOJ4nBBsasiHSBSPGEh2GWK1XRkbr0idAO/blDD3UvNXmqJJmxpciGbqkJFkRNIUlDf+tr0yuVBmbNePeTRpvLyLH+s3osJPvlgTLqh3bYTHbiV3M6AGRNwjDRIuSterpZLzTWgcuy62rHrJUFzGaxIq+ArjzfVthhOorC0AiCppSU1uIeWScjvuX2saqaGLe8Fh3SttzX2jZ4L/t29aumKWwl4SBuLsVe6wvvnzl7f2Fj60x2nQvYoDXgEEtrWEGMMhekBIg0R6qwt5tu7aJsxFY80wzcmiOQL9SbhS37pegG7yUM0NERxJnuG9BGqdPXDMtrch5+Nbp6qOhNVG7d8BXcqZcV5coyFjc48CSzVlnjgNh2I9tCF1i0cmNaz0tWcdOWmnZQokq6pKW7cjrIj6FvBr7l+gH1AYTeF4etWFaoxef12lP4cFlvw7p8amqeUgDZqPYsC1MlUuNK8Mrdazc29gBZsdmRjPBrIuC6r/YdOIIzHVFYFJYrS6tbwdJCTvZNziE5kR7IqdUadOyGS3ESUHqK7/9NM3cbbyjUVkSsAOtQcaUIuezfbaVYT2V/XL5KOV9TQ9fG3WezS8MLr2cJBkVOfn9tH754Wao4QR+eb7wYvd2+107VAeA12lEZIBOssvLIFFCpkDpjRTY7Ovv0+7XIpQne3FTbfpFkF4sx2A8e2b/y6YM3OW4SCexYtGl0iDncNe3uxpa942A1SXQP5Cf61mjfYINvow1RZVm/4BbL9Xyj+fTag1N1gDdXtRHSP7w5j1qrmZ5xB3ApbsCAIKQ4zRDLkDfbE3FVSPJxnsxGk+P9wytWacTijZsSdBKq2ytb/prJ+O2mCchsWw3g0mDn9m7b4DN2d5seOaA066UNdPbUzuH6nQfXAunVgqo2ekuBJiumUfT9cxcjX6hdfdEzvjRfml7aBmEgqFVDoUAjb8kGGy6WB4uKKOG8vup5eFWweTsT9ItV3gQCp1IF8dX6Ok5ox9gPGraY2+n1iq7ZkiVZ5Dm9YDs7FyRqz+xpVVUolMUgZ/h2DpOmplbsrFN3TFtxNEArmqxBPWcSCxlJGisugPhwyHi/GDsfHF06QQKjxAP8pKgompEleE9YZHz32WddH0hyGDqskcSu9dgEuaqpMCjrBRHiIZeQsMiKnimZr0syQ+0SvxE9AFhxhQTs/AE/sanpzViT/b1wMD7ZvX1rBxCO8WcNLUCqHPuaarv1pOIBIHGalH2hk4EPA4jG3RO5MbMxXOhX7kx99f2ds1Vs7czum7f7DmvB5YZGY71ArWtIxnOaBSRdxAprUkE9EkEqH4Y6kuSWwazEblObCGPKRPDEqNqV1ZqTdw0xlgornRgwgOezRgQpEMGwA4+rQo3NbYvbG1gBuLaPrA9GzVMv9HbRsnav4EhDT3mZOlKNK+/e+Fx1s1pz/M9+UXf4Ja1DUcdd6aYJ8L++VzqQssWypCkghOsGqraGxEuQ2mgxXrGzpnFHzPRhhCT4J3DIYv5KjPnM8J3hYgyJRUFRERCiihSmv6uN1bjpzcsbV/NL2xfqs00vXq6mMiCiD4gbnSqNoxUtBqPV1/g+LIxqtIXWiofbm1thsPl6Tpp+Np3aKwM27ZYdKGpYoyiRVXwlWj4WDsx7Sn4iIWHC0NlwyGTXXr6wn4uzjyhq6JJ29+I1ABL4ss3q49ZkuZsSPlHwQmoZbRecMh/egNGDZJQi3KCtimV30adH2/PUB1KNGxptAPUUU7ajIqzWOquk8wrlY3tfbHumeo8VEOyryY9PbkV+J1BKHY2KWtbXAMeel6CQTZtybf3V627dbiPd71q46Ddo1HO0RRCRHyo+zBQ6YTv23devSKVABnQx4MJ/5Tlb/kCNO2giJf1rDycrANLWTQHC9x/Z272Dh6XbUfmlokgarA96u5NbV5DMzZEIEqnHX51L1IoVK7ndbzlCfP0n1UX1AtgGWfbL81d6m/JpVqBUQQS48gdViQ3PSvZD+VA4KO8s3VKOzdv7/ejA1bbLR/zvRoPib+DjXfcMJQd2I+MnyDoe/DePZDoN1QCCWscaqmlTQKd1AtMAB7bbbXfVsTEmNmOQ5EIvYqiRay296XeXArEJZJYnNeiPqoaL4seQk549GuJ/GTLKLduXFx+/SCHfYgMfIXRFrLHzo25iixS8ZaBbAuc7Cett9j01p1gzBodStOCUNZCCwIubdyN/utMxWO14HRr2m54XGI7nOpR6FsVAzvk0gLiVrFY4QZKKQSnXCC1RAq4xJbwHvP8Nyy0kkV7GC9pOVkK5M6vCwqa0z74TqahlwTSNmZKWbEHNZ6K6hPrG5FaXGRswXApnlnYWSWn6diVOZ79nOvEtn+Ox0RQ6xrJqA1cxLbjQJHiEZXWqYnb54dX2zEoxAQcYyxtX5JSdZTobF3KdImDFfgmUvYKII2bqGld+gzJ1Sapw1KJKJmbE8qJDxZTF08osFb/EMhMWs+mPDlXMCwmssLjEqUIZM9Ut8a2YS5QME1arzFoJ5lck07VmWSrXpid4zLMi0ww0pN7udPnlN1/hvUYAl62L039i1+t4moKRhtpjPKdhhJMXOPL0MpLpz0T2r4vrH581ODlaJd/z5uxALVOmys4gc4g4tnkm0yt9Yk0AMSu0KvP62glaZpuc/2JzG9suZErr5XUgDRhB1PifHrq0pvMFWDgK+c4wj14B5Om3O0g/F3lco3RR/aQgWEeRUE/slB77cjCLjTzqvCmGSrPM1EwiJDTNyALmpLmIgGrQ2pXdTLbk7vLBQQvjmUcktrqu72KCXYVU0+t1lYKg/gArCHwpVrmaQL0yckjHi1APcQhyykKTXX9tS/qqYwCZr16RoNHrtq9ceWLl/S0rn7jmlkW/waImOdjpXOn4bKbQpUscuG9fGb+xzmZMxYR6klAHLRZ/qJA2mjDlf+3hX0OMsUSsPQVhOPHsYmjyqGpQD4YJCCSMPCQv2q5IGDmI31OLvrQ01dvWVIanBA+Njw15M/XUSGnW/6I+tzKLo9Fj1+xXGPPUprENKxNidYwuiSiZbFutTvZlMVs5l9sqMQaR8LGJZeJUV3OWPWBkUfftVXC87aB2G39YDFYflLVYi5pIQDDNFBxKBlE1ZOZrWzjmgpJnu0o0AaR6neXUqQkJ19loSiYKkfHMwYnKfhMEUXOx02VkOGu+xrm6x6OvNc+9DajfWqqbU5OzpSUNwPN1zKNjWoHzF6kuw+EcRTkak/k0VudILpcSJXaPdFg+zHgJuWznOoTERhyYB5y6SCPWjrpkd39NaLQajfWd/uHWHoASlSRGba2322QquVondGQV20ZoNwLfO7l751szicl4a26KyEdv7bSPATtgJwUb6GRJtSGKRl4JhcO8qCVFZmPBKUkck2FO76rN17PktdM99RuLxKbn5gs3J3FHSuk4aqAk1ZACcNFGkJFaYxvBhvVyQ90LPqguF7fHJZ1+zh76WuBJPmLUuJoaNjBbPhdW4Abx+f51GmgAZIOYVBBv8i7WgQIt4w0bU4yN8UMzmMxcimVAllVR70rk+mJb1x1wRcsWr6SuCegtXmcFbZXI4pazvJwVljqqZGiqagmkGOQkoc5QGbD5S1rE/m9oYZeVhKXYlyqQFwoul/d5Nrp6SiKVmlThv1KiIog52ffqXvnT3xxQlwGT9OGGu9bWtn0+Dyqyyk9G51mb7sw/akWV73//dJNdcvmSQDNd/m6qUZ9XHRhWK0kRVetydUlKiYgFYr/8kEnFR2xXNiI/QK9CACmZ/+YXnf3LiOjMsS8ZnEgG63G1TZsNvzeGc4oeqmGeBLxogCYm2XWeAfNvJLvNO5S/onTtM7bnt9NTY6Rds26C4bbw/urcKix4S9t5hWLznuKpgW+FhAY3TMCEqVDWsJqeaX7XIyBw19HqWn68/u5qx/PVytZMTO8CGZaKfXMnuNX8WinQ8dW260lAKBdV2DWmsePLDauxHGxbE4d0lFBYwuzTG/gjJBPBQ0io/Z12b2eodtoTARgDpdIxSo5+/4l7YUDGSCgX6ha4JVZg4upSBZBjXQOimGEU1DcuUqbPWXsd/MczAA48M4B+0gpp9TEqiOV2NFhVIct11HPA3pfGoCQu+SIU8A0mREVOuSKXZNJys9d6O5kBWbq07svP1xb5aq4qn/nEGlSDh+O2g28bS6CG2abuNYKw7PjKDbQPhnlDt3AYZMLk87dDwAMyto8/2B+x8bvNlNB3R4DT6MZHUtVtlAr3xh0mpQ7aKnJAJSshCpAgdz2uiiAG/rD99o/XUODaTWr5BKoOdiMZ1Y0vug2o1ShyFVF2MZQNMMf84E66z0huVdwVpZcJeHZLG3DV0RwtJ1H6bzdWnZ87BkUEktYTxVcdByuZp1u352nwaA64cpHGX1aA2Pm3jjxjy9gGCbqilSAW9cM8wslgTjApO7u5Dfenl6eYOWrGoMI2wYTCoLyj7iub/VcZdDk6C4sywsci7sbhk8hs18B+32UvzeL7EfPPThkDuoYxqaeNzWhT9pdGnXHObIsHEEhWEMWpZYT7RoYhiGVN4sKs3B466Q88G8K/PDkP9IkN7Iz1rzCAmf77F10WCEy+W1mHfweg8htltqr2EqKSSNuco1kxc6ksA19TpZGFKQrTCvpJwff+YqgZbvttM8tTT5c0rLFVibKgWXl9dQLDI5NSoWLG85xuYziabFhAzljEhIlcrewjQnPG2JIPdCPjGA09JQRnNgLtVExzqGGWC3q32rimghfAFmMmuxwCFtd6EhrP7n49Pikn+aZp86ouacvA1mn3IePGfB5gDn3vkOwjCdNwINloGRy2xsRY2mQHAoyRCV2DVxhW5eUmnJwyej6yx6xUC4AFeVUyJfzK1gSvclTCoA8QxHkuhm18w3WELQ26hn0kcLfuCMexDQkAqbLKQ0aa4sHhljGG4RerELEjFJ+H9wGSr0eBevkxnn9Yj+AAEBlFqaAH6TGe5BUJUrcxwkWEAT4uJRw6HLZjXYjFmShkWEliKEhru1wMFQCNOrbRFVcPSBt1Aqe/GuP0BfzzGz9cW3I+s3JH6d7zPNHtRqA9bJS4IkTpohqK7cI6qzTpkji3uiYyGhZTZXFVE3ukSre9cPlO7S0ip6Bh7JQaNYUOwXblfCEELP1CJYAPUlOVjV22Q3ttPSpzFb4McMBEtXLzVyjNsgKRczcssaTDEjBDutnTgaqiTweDrT8SZi+58DlOCJA4XNTg6pG3U/rroamj7WTT52noPBolRUWR0KhujBe20ZBi/F4jVCOhWJwwKeXeqiF7lu/lHJE1eS3Fgno3UW1k+1QXR85btD3d3fid4lJjHUo3/rYpFQj5gWawRvTge6osbDe2V7rAwld3NSiXRX4eSTWdOV7Ob2nz9QKO9coZJknLzPQ6e/Jt+VZ4Mt1paA0aQ+thM1FdlCP1gXeqa7C620j7KLPb3JG2iqcmK8GUhSfWUbuXEtFXMZXtSe1Z4xlrg/nFGcjYOAWV63RehdtXnTvwHDIGuUElACLra3wCP9kk8z6Kp+485PnsZb+/93UWFVKh32aqSlfTEFNvkIBF4hRgVPUdi4tcKSxQDROKmCafwvL+3tp9tB7gt9AuTstW7Sf33LtyyzO4hcy2GMQ4HlBH3PWx/GOYBBg6pAoCzzBh+wGv0xsrLcud0OmyRYgILA719aT4ChbQnzhreVORUK1hc2QgKVp5pL8dMgHUrY2l5sZyFTOYl0Ie3AKZEO/arV6ApISCJVZEp2ShrijMQSgQTlGz9Ugrm2pkBKqe0ibpmTOQh/rAHv43T2BXA3BtpQT20woXrkiKQLjapGZ7h4vfq1XxZVLDHWtO2+bnFdWc4i8PrmBwRK1beJqSkhdouYDTZVGSrLkdCcwjdqTN9Ne9LNbR39Pzd4rTalZ93HbVhLdXXCCRZVqCgaAr8Gj87tPL7j3n7G9njhWADt4REmjnqRoioDdkDTLdubxDL66vjczXBWQu5CDUuenOC8ThncfkIbtmnAze4Cknur452dvk7onBc28W1MBtfGGvALu64uQCktJsnRNQHztGC4oC8VS1egptGIEFYKWtUI0AhPxo1jBcxcFaEp+t5ZUtEbD9N1IWtncO9q4hTrnohxYZcT1vNB3L5gxTN9tEM7meAeUFsOfSEBcB1tYFzCW0oOLCSvJiuKrd7NS6xIm6O/wtfvYGmRkRmJ6hTbcPrV96dZKYc0uxRmqTod/YN1QnUYBQWZV30MiB71ndge0w0Xx02zV7k1tlVu8PnhVE2BQEaXppK1/ZeMwaq2H9yW2jO5kVAjeIOQT+/dMN+LKlBy5ITd6ND6GVkyUH1cn9l0p1t/C0VvcJqUhZXU5qo/0JIKKDVEucSEAUUmwEouWEXvoJNWkLHblbNbhmvkXKnKyVmaxl+irxlHkwL/5Ra5I9SgxJVTBQwMcrFwu1tfhmdkFyAQSgwNckiY0Rl64mycf2XBdaxDnwBMstw5oUfzL21uQzxDz3RzFe8C1Mzaaqzi4Zh7UjbSzv1cbSQZQhONLcDC/ev/rS5iHAw5nPly+VltPTfd2eU7+qmzN5wlkJo6boBQ0yCh8oXmKKtEACgJtluJp6ALTs2NRoia7QexrLVMRfjfgkEFUqJmHYye/+FBiF7+HvZiIxE+IYVmdEJUI2HdQDDFyz1g8Z3yjfb5NpU4wr89e8J0aYqZCzVD1CY204dedr+ZHwA3nr3NjNrgs3e42TyL+kKQnl7yaf1wD+jxs3TCvVV1rHrbdjPpCNr9wSoULmayuo1SpVxEr1WkYulKtpEAt0bw7Hu4mSZkGtVhIqiLGUikkCcBAAcijrypeONwGX9CUfWlmqmUhN1zXFvviwT8YbCvtLxD3UHczdsNP5nHTQVGI/JR2+t0U7JK0P5LTmTAONui5V9bSYqPqsW6fzUlGcxfUq4IQyFqaxDSNnZi9TJQNrFMQgLI3JJoR78LIpAFfQe8H8NgFSaHZPhjiWRkW09lBpfpXIt4Gx/BH8ouFFgpmqEdCqrzRly+h5gK5+fVQAX6JqVtWopemdzmFeg0jjeBvZice2UQGpMHlDy2mBM91p0soCroBx1/GyD4tOEsKoFHT7ndb0n3iHBclEgKorBFnGKUFWMEzGd9xpIFOV4sTu+q6vH108hVZa1xwrwxOfZBVqPOVBm28UF7/OGhEQq7OKAZhmjNNcE+hyQTGEZTdRdZT1hul0ZzWEX3bNlsk7GdfaTeiWevtnKtqfMOVk1tegShNkeVSCRADUxkJMZlILhLjULCWm7Xl5ycQdqVJylBWKGpQRQvWGHBQH0bA2BLh3lzx1iAGLGksqHCV0bDyP0tzXVOUs3izGtqJIkq1NU70al0hAq+uiATV/cRFplJfYqQkspiM7UPViNi3jWxLH3z/JBY9ZuzfnIJFlu4uzTHYuY9ulEtHp5wS9QlvNZykyhU3FUrzVSjCNuRKm4rDMre2zU93UGNwL6RmwiyHvdrRl+bFONeLAdUsNvRUnTtXp/6mdEZrhQk8ypNZtbJYfS+mJ7TmOLQTYE43poPYIKwi//Qino7vU69FW3xQKX6mieISp2kuwQ8hwKOuRoRcfYcbSFzpdnVdPiNe4JHOgdMFTsco7JUmeJr9GX4pwBzsT+VMH3cF7JZoApHN8GUTX8mlDdsXuUj/tTm9ctLy9XEoYrUnanfZ1OvSVh2GrhngG7h2b22A8MMjgOB7bvhyRiFOuALGSfH9Fd1+DySdEwIph4gg9j4yBh/gIzpdNp8S/QXy07fKAqQpu/dOuGm1hZdocSc5cThCbiapoAv6jjzFDot/8ocOukugMCyVJPDrJtAopaTE4eaC+igv68rTrlyDpI/UFnyK0oBbUpttnn9b/mMxvM5kUNSWAmYENQVUB0A5kArSLFgF+v1Iq0AuUARuBOiAbdB1YAxQDfUAnsBrYACwGHQCzgAqgA2gE5gHdwCpgAFgIbAU2BWwHtgDbgG+CHWCQ2XlgP7PnwEpwABxiDgYcZv4D1oOl4ARzNHASdDHtwHnmjOAiOAcuME3AJXCNuRy4FX49sA4YAsPMbcFd5g6gB7SCR8z9wGPQr/0E6Mbv1Ay6+wnqFd4CevABGsLbQG+/gCPm7wEd/gCngH71h9OAp0D/3n8oAqoVXhJQDlSZXAJUgnerTQdqAF+ABMxVeBZQCBSAOcw7wFv35gfkBN4ErADfPLAWfOcbRAcgUAhoMFjobQdeXB7mKJfzlL+39BHAl+uXXvl/so5N/2RJKH9Sj7U5/fmhxseQzubqP3GyV3+yNnYcHb818XdREE6URRU0WPiFd/AeFsudUi8d0iU9clrOeDmvwh/o5/j3I+uDlACCuSAn/MtJnGbQK5KQllx0mWyGALVe/0NHdV5P6S3mr2ab+WTKzRv7k31i7dbLI3zgMT0qi2XGJmM/4qcTH02OJJk8mxxv7pOxZi5nVO+uXE++5Fv+Yx5b48U9xfcOczlXcPvO4MKlT5b+tQ+tuuv31P/sfKK5o+ltzbT/2rZ2/tWxdnO9W72S/o/9N5O/Tm6fLE0+TSV+8sNbXT16oe9i+pq/1lSu2V0rvLzm8quXT1xJy36Q8+DUZC7kKtf+3wTt3+9u8Jn+3Y2/nf3vQ3mz6dxffR1zIOSnYSML3sXCxcriT27//tLS8v/Ie5LPW21f/bWCduFHC+8WLhedXv89qlOx70Z3YzzaWNKxZPPmNyX/714rdS/tVPpqx8mMNptWbsr+FKedkpVby/m5k3l2ZbvKPpXh+ZdVn6iaVRAKSSFYeJ1wi/OFmlY1FyqFlX+te6L6/1M718+snaSNq7fqUuOPmz7YdKn1VvOXrFNtmL0QE7C72H5sPKdJ6yLiibarbQvtR9v7tP9DZkmW9Mkf8ydSN6ljtID+GS7VVeYxeC15vXhDuC2O5Eyuw33H/wX/C4KHBFHwBYfwSsgV6/t90ZD8jPxnknsURvk36eelRWpDlbVPyWq0P5V/Ux7X/2ZRT0WvsW7cNd5R/F8JytnK5UqbmZhr1suWaF232tahdU9VUq2orhW9J//ZTd2+2cZKRJ1qsiurIt89p76Ke843onpSvvxW/hFv4V/zNaJGxERCpIkMkSV5sn04J5nLOXN/cN58M77FhFwvs/VRpThMfU28hHnkBZWKr54RT6h3tX8vLZNeN/8snzE+biwZP2h+2XzTes76Bf1LesLJGDONa+af3H+2Br2u98D+tX8nmA+3w990RuJ/m5qXWpDKia/Hf5w+mv6lx8n9X1ea6unfujvZd2XLLaXdbnfb/fawPW5POjc6XEfoSJ2d7i91Z3vfVXq6PFeBDctGh6O36k+vbU6+0Jzf3LP+S+uP1rsba6eg81dTxVsT7i+5X7j/5+nxaDxaD7WzsPslb937ZW/K96Ozl2aUfmHgSOB/ULBUH7pywo/8Yu2X80+iumggmr9Tv2uIfyauENNH7xEqkRJbxJ+RWEG+YFCwST5PJol/UVgvfEg8SFSTv02+k/rctavUakpIM9fv03/Oo6irWTH3H4s+5HZz+7n7+W/dXimyd36VXOX5yn+8/302NfeT6t99+Hn+9/N7Cx97Ip8WycyaeM32n5fm6OW6L8pJ77/t1m/ojXI4q7U/EMXqXibzWQOct33KO7p78qQWcK2sTGv+kkDXjNWp2M49I1Q6L/q2WHP2BWDFnVwzBqFVqTVW48phjWgW1QgAq2uyBhveX4cDCDiwzY8u4tMErObflbyTvAPyR09/8Vrtj228o58s7AB/nZZNdnyWpFfGOpHuAfL1l505dxgxrAWyDzLMOTeGYxpvdRXF6aVDVqrJGoBWyAWyvl7CNcAdbjReNhsNNjaI79ewimqdXvT1XIQQYG6A9LGwTo9MAmeLkxvgZkmGleW0z8L4QB4biCACM6Q6Nwwi7OqW2+6F7+lOABJYISyTmeKVOsaMDKH829PqIqiLLw7X2FLIcZsqmBjpU8aYsnaVU9rmU2b++BFIPTHEGGm6HegMNZ4tcybgY4uhCgmKaDXkzOC76dpWsK5sS4DmV3nIm/OcndbuBmHXfJJvsTD+sdRuKFZ2T222Pgk0olNlHwdc6GaACrecfCB0VwvmHD5TsaSkXlNAr3mngRIfgBxbDY9VVFEFpwHK7VYqVwELH0G33Wss5cPV1bCslXILKfg2kHP+5RrUnzUSh50HK+9mhw+RztN6hTnR/xx32e/84W71GRAWuNBih/zhvlsGCENv0CWHUFbKHqtMJRP0DHYmvU23MNgfPIPzSIB66UhwB4TY6wYiwMKof9r1UcqjlqO+UvNJebyXL9okq0QcOxkmOrHV0NzS7zgb3ckuv976+mx7Y3LTnPnCfrNBJCWLbgHtXWurUmpJdvGoMwoqk+sm+BEgOUqR8UW62ZzHXHreFSGOx14FDUX7mkCJV7Nn0dVPNN/mu3d7xD7XEzdse8+Wzfjc37VU5IZ4LMe7kiuCMRhfJ17Q5pJA4mriTy9/nV5OQLhf20HsYMeyAzf19y6ZmcJig9+S6m8UNlRAndgQN+DZ05p5gshG6UbPSKFmKoKGvl2rA/fIHzQtcaKNkkSgCpWwBEaRe4I9m0dz/naSkFW/pwPUTGHwvETmjRclZYYI5U3VYsUcT8Q9XNxziuUgIGikhWj8/AIafZRmBY0jM7GUnbmFLFBkP5r6QLWpAdb272zUNGoBTDNqR3eN4RaowxPBagWjUW1Rcch/v7zyUuNtMhs23/gIkMQfsdI4V+a80am/guRmhiA/+R1MghTO3rpSA4EMWng7xLo+Y0MGC68IMN/7WpLVtlIHgT7t98OjKDb2GhTI4MyGe0s91U8bi+EWAX2ShzuIgKc4roCd7Mz33B7K+3X3PWnvXZu1EDjwb7N8QIvLJtjNUItzFCpqGs5IBcCC9itFn9xmXf4/dIhriZBnqyUZ1pFzGkHh1yudZljbjoBWtUMkXOaEX7xdbErxhW9KFBMPjPEyJ7HziGbku9OpneY97bc2JDJDIapthguGa/1MpaP+4q+szFdH5Op3URYsmnPCFAns1NnkU3GkZ09orWn62jd3Lu72nlLxexunYJG1Ya8AuDOBmsAZlKb4/XkH5Xpla0DjDlGIHJYzgkgUrKTZ74x0Kd61xe7T0lZrdvkrD3U59jYXwxBxrFCQIKJg9OMIyYq8+ilkjKGQk6lgVrxzpGDX1Sha1RJdSeo6jiKtrTbBO9oz/FZp3VAju6YpQBpSqYoSuhJgX+8vamqDCxuq3Aa8TChmHDlW/Youh4ZKXDf1lZhMVid1UuHblWYO0EHxUEIfIzZGHMoGdK9ay//aOOlXV4sikKS6wvapZIvQAU9hCQ5I5NyQkSWnpIo0tlaMxK5ZFVdtk3bYIoC4fJFzmvdNv9gpmmwt+dG/EdyAIpAFWqNSks3wOXndgtrphouiZyv3FAuQx31ihYZwBAvZMDSRVFm17TQTH/P/WHSwKtenDHx1uxjtpw6rVmEZ6ZUpPz9TRfahB/1nKNgXb+5ijOxxmdQGTwFtqiLtw7QoiRoC9fzx5xkXvEwt3EY6bKk0J20cyD6NVWjQlzEbBqtIfp3gmBgtwwvvaHv2qzDjxPTH3ITZWDUBpKukCof8jlRCyaAuyiJx+Lys5+vxdq0EXOSEWfW68pSK9UefUzldBRweqbbr8wMxwoBsnE733ZEKZkBOWKuktOnFjh+pUS1Y9g2jotCE08QyTwDdhrM21PkrQwq6GzGrk5RQkMRXUxGAwkogvxpfw86oxs00akFFXmWXXMUfqHhMRO15Rr/TPzXHsDfA6bN+XMFHmvXa683j6P1xLxiLyb4os9qZ01fSVCpjTriaUQj1chJ8+gmzMxT8Dake7+S+C9EbQjILkBE/bDlakqLfbu2v7gABfwBPTy2Zaf83aFabWmtZmf4ddn6M79SPrpbdU1GqSYnovxh+/gRbAib0/300uO+LdzdhW6vvXEZWi6qiGYRRVhoB94lK9b90rkT99iZQHjZ2K3PW86SXaE7bG8cuMMdG+gAu7135ygfo+hZxZDprXeEzeeufat9iVH+48h2ZNdkXj9K5Ao/W7n+jnXz9f7CmxDivEBeENMmyWUkXMBvNOJILtTShNjKyTlsKARilp8Z7FwgJBwesZEEOMYW6TRjUoYW8KWFWoGs4YanKfPYmWrdl9UkKB5TYXunDiVO+ZSKIKaoMMbvKo6bxjAuoI37cXIKhmt5P6Q9qMWL6iyOoAawnxEN6nV06fP8mQKfuCwOYKGCSopywHvvJcBJSb+OxRA3427Z/+Lzp2kXNNRO7thsKgX707IBog2dnyO6M/8PfLged30mDZafp5iYwA1eHTejpTeIraIVX87JfEWS3DYKgSm5K3d2OomhGDMgL9mGtQazxO+u810A4e1eqzq9+qe4OXz8QevXVkSPmcoXE62UxX90GFjFqfrg0li9ve2NoZ2XBQn58TAj1+BARufLyUqCKgEBIBLFTjx17Sm+a+CP8wcC1mnI6IaaVWHd9cHwsvk7PPx+qHeZ3Xtrczo+pQLABWjPv2OK3TVk5kaP/sX576na9XV0v1SOVU6vWqmDskY6cGpmhU4fmAXQKihyg1qms+B4ChJwrDZrLX/M1maLaLYacT+p7w8rveoc1rzNPOYmHpdMLRbIqMxogW16Ka7B+5/71L6L92VKnqDGlPi/jwHUvh3NaW7PN/APqrOrYEmAZcGj5ch5qgD6eiyTW/fHLiiY1JQ2DibypqaxqOqnD0FOloD8BDbXjjFhJ7lGNgtTgYYyoyuqaEb/ypl5pUpLECwWPdLPrBM+p7Fwq8FMvfcG3spNUq5IC2B7egfTBC0kTdnX3hxcQaSzbjjsXf/+Gloz27t4e7eoxF67aDBFqyvKVKxN9bdUtK99p8tUR1xIey7oAoEJH15ne3/y4BvnZoTNW6finnjU7vVvRo0zoVv9ucpd8dSAK3pr03AdPdt1KK6X/RMa1PVu2sE5TfNPo+68rGiAr/sCE/7LYQby4OOHH0AVfjzOwLg8YaVxtzPlyLGBaEEoTTPe5tA7r64a7zyMNze6ZMIRJgb8MBPZ8AZLDFVUSl6fixvWZhMF0RwdcMZZimKmqaoruhl/Hv5v2K3Z1eOUw713+Sr3UpEvn0ltUS89vAb0HP7wKu1X1+X1O9drnwsBSugt3LDV+GBXImeTD0bJeQTm1oOB1UhbFWFmH3MWPELhx/wuz+btnP6uoW5fZhY3o3uzeY6ulYeA2PX2rAIWi2F9GrVLFbGdv/Fxxpr+7e2/Nf/vW5nBPPgpBPk8WEsSXoH1aIKiWJXzqcoUhuDMr8zIbISoDPrmA6+MZeRQNuuvakN8qPLaf/HuDq/K0RAX0lx+8uogs1MJJSgHRQu99uq3NOUD0ItbUPTcS1uX01BdzigMHVitX9XNYx41CgIXKutwetHzSEVtAwhs7DPterpkpywo9NZNN48AK1N0wMsKExpVg3gVyeK6LwSioPpcnMwlR6zekdvXki1JDBDyvKDw6Ro7xrKTI3BMyrBn2cHgo3tT5+3SoAjITSsnmPaPcNQ0SgqcIOdB+cM6vsXFPNc1zVfX0QJwURMdUo/wT+vdb+dZTnyOeelHft+pTaAZKQNiwdvXrMWILoRLAxdNuaxe1xnbXtGNwfVJqXo/EjRUvtjHNvP7Fbu5gR4bXwKlmWqEhBiTKOybd5Jal7FxeyRSK/KcX/oYBB0ZzMd4NraWkZ4WDsT8IHlUj+ps0AnlJUhEcKxK4xAz7fA9Mqy/323BF+srclLgurTazBKF1iy69k9ktv6qPxFvzlrv6xa2NdAVY6snzvaGbr+iIO5McTvoAJLEKU2q3NMcNza5KRBKUSq59Bau5JQ0QeTXv6UEGWDw3AWXhAXvCnmcM1Cl1e7akO7pGvp4Gp9h3MWh2VAaptFa93NcY7rA1WO4ntOTF9Pm9S7VV6cvD16/b/Oy+fdHVoywQdFlT2JYnSo7lN+OzF3Imtbp92BRA4Oz8VJj2uZVMtHwwdBv777xsWcialW07ua7gzzOyoOuLhTB9cXnDLOwDgu5v5Zz5DF8CE4nFoGOsyZi2NGXxjj3ALeCwOdOAFCkJNTTg95sYB3bSf4hOveq2qdFSnBgklFaYMmKu3rNs3fMdxRcHfPu6DcaAR2bnHYlE6S7RFOXjejSTfh39E3i5pETJNRHqKWndh5Ztsx8haUZJL8F6kSqhkUvfIAksaq3w/R2psvFN2+nsulEwABYMPm+fKDnAC0hhadW2mAMNbTBm06h2oypKYjNAgli9s/XCSWsasY/88S5JrN3RQDty4D3ZGjeM6+Hdl7UIMKYtWdDpMWIVGXEp4VoLb8+dKFg721ycae/rnII38MQkaunht94ECG2qbqr1/SZeA3SBi7K12RVDyq0+NWP5v+bMb2/ONfcyKubxPeVB+24nxUeskxZPufbbbZKoFfSf+RLfwidfXWhkfCUFpvMjbgRlgLhvqq65bkZOmn3KaERyPUTG7ik3QS8QpKJ0/9IG2vMcpchSjPJSUYD8ijBy2G47AurTP4wprJKeMUFAORXuz2u/IZthDXyQb9EJmpAtyrisf85FRLpk+PBxkBDqMmZH9MWzB4CA8x0JPYDPecUq4MJ8DH8LDuF2uMW4Fs7B7Kc/XGdmwqo4dB0xci1No7t7mvZnr4k1p/Q7ifxMcrqRCgPRq4TnLD1kiOl/8WMIPfF8DQ0DEJS0KkrB9MOTaJ8GdPLx0WH4Wh4pua4p4hOGX0sO9AY2QooRGGEBe4Bwr121diEct8KBF7mRhE0Ibc1VVasmA1EDBmO5jHHywdz0EEj6H70vx+zZ6tbVLtgc/ZObl2H9Dj/8ElpayMitIIpFNA+st60L6B2GfqYi2SgZM0xR5pxnn3V8RRFEXnx2boLlRUmWn7lYbnVmwR+IDz043+zTIA67coeX1+Am3vtp0ejsLo6qNiBwMR9l0h8xHmL3GjctLz+ZebzYllD87A9xt2B9SrXH6HVH2a2pMi01LF9x7dEiBop/cUeEBxrc6PNoE3uRm8cLwRW//VobKtzhUCmbMY+FhOxbt+3xJjBBqzOpPXYu06YP3NxliCEI6ymusPZElicujdA2syBrOTSTwe/94PpSAf1g5GDbqIqrpHq9hFs+d8NKQNkJZQszmdGl8mK85b/Ve5jcHg2dra/IrqIgMnYbMDNVqQpDqr27GAk2VdFZ5vAUb9Q1zERi2Vh2QNuFVMAz88F+39rd6a8lXacZ9GsAqpKE0RFx0hDqJbqpEx1AVE6+PNj1CErlXtZk1zOdb6p9xVQt0Ve6O8ACCNtqs4MteqrFyPqTAMjh76caeccfpvfuX9o2CxnIpYw30PGMXUBQDgs4Z01AmsM89OKOUkWVvT361G6SGif39qXOsNR1fmfF+k7gZv1OTAu1XXjqCAeCFgUPAnYq0ljrVNGwEOEqzuHTJ6WOqUx1o3warTj3lKiSoNvVlIYUFJbMDcW78kM+Qm/pk+xhbIjhaONP/evFxgaxVVgcv4DFjCB03I0Tl6/EyU8+8+XAQrZFmSBWIoq2dOZpa/fGJSavrtCABcHQjUreTqTrWs9XJkoXKDByBL8FvcaxDtXYKQUIylakwrXC9xNxV2++C3V+GkvdeQ9IWH5Hh56+KJlDK+jywkwIWLaOa2i3NgYYvi5BtiD+ehK7gli5BgM1x4xwzNdshJCjFrbfogdqHVVWJYfLKJwpWSTUvYiPQCN5YZ2EGlMkBmzb6/U5dJCfLzWM5zz3cvcf7zFVbdAaFzMukJf40bt47edOoDqUIm7ZnrsYDgFMYQwnh7THjrNz3Pq+FlN2b+w3G4vjM2CZo9nzlmgAnqJUQqfHm2WMCOV4AbMiabvp8rq9tbOes/TA8KyYWSBYO6Nsylv74AFl6k7wLpOf8x/uv7UZjv2wgNJgujR5whx3NxJ3JG4V2lhCCZH8yooflYoTvHg5n6afuTTTKuan8xdn8YvNK4Pzh7NHK9/NN/bbfDlZXSFr49/1kaAwrlaaqE7uGvQFrZKj1YoldILCCnD1RRY73+fFbPyR1X9m1FIC71PVSPfMnBLA3dj2/JF8y7gz9K9DW9+uHkm/Gw8pP4oCnvSNws9A1SJ15rJyqnurNtKGhjEEZf3mkII2Hr9YTkn/RvjtD5Vv6K+IXXjiWKrttggIAEmURBH5A3FPuA76h7TEZE0xqFsYpC1x3ItdiiorOgI6X0dsQOUpJ5NkFBe3poSZgMTJBtvP4ZYMm8uldjUJ1Ax4wPFoKmI8H0tAEhc5LhCxGBtSQHK0deSKe1YTHGwdsYYAUvNPoyMQk7wXtqJqkjsLLqcOUXUFo2rtqMdBt15z2D60skWACbwX9TSR5ao1sfP8VvZevT4RsyN2O+309tod/3Z4p/SGGCidIk1fn3fKoWC5vgGDoSjKoh6c5vRGGhYuJPGXz+FMOUNi9PNKvTi788JMa+K+/bw+BdRgU27Cs2dMYwfV9dH6RAbtN1+Ey6fcdXxEQ5KYzgf/Ickt7xmtJA1KrX4TWLlQjaFb4cUYLUaOVwf5NB+t3Mx6ZkUsewupOVLamm+qqmyUtUIkKbRIRDwwo42AFlR7dScUlpeIPiUCNl7ulOHuhlfeeBa5ft0UK2tyPp14fJL8xDwmneLmu76Lapw1GtsCaA0ND5ok3KvWohN54VucbbF7xRofQACjsOdJ58foyJrkG1ybhpkRMw0M5T50y9hwkbdCVM66tbPViscnoP7k2sBiTNeB4/k7O3vUX9lw3KyvE1EyyoodrU5wu5Oi60uKxy/RBUEr0so3Qu1cQTJZWmDbYSMHWDIrydDXP9jPov3IyT8YRq2zNJQtlfAFx6y69QuSDUTu5SdYxAKisPcTI6m7dl6Tr10APJzqVPS4Dqkx6Ux4tTEfz42X0nn6QVbDirHOcI06oRv6LoD1ZYMGpkA0BhpTfO/m7b4XSef2b2UCmjneNU1MbQtj2637FbfUwQRe8aTVciiAkX675rSunp8fceYtU8ROc17lX/Ue+kzYH2lN+bKpcTtzhDeUoqkAF/otmfz5B9fzKkrVKtj7gZOGrr/3aHqpShWSuXolbZNzvuAuoIp6uuoAA88PLBiLhV4ZBYJjInMNa9k4yUbT14hN7dJp0ajijLgaOHw5mM0/3/uN1S3jTkuw0Vs/mXx0HFjsSb1uiB0lj8MzNXV13zXPktUNOKq/OJz2Jf984eQLJ1U6F6/SdXcDlrtICH6IffTDx1+6SNWNOqTOt6X+ir8LHFBS436tbWx/cdQmNanO1dWytEWINZCE5AXXjrVN77Bt73bSwsiL9XGmRXFPfcPQSqns0NRteq6ndpaStkZjX8kpsjKShv1m9KGRwbBE7LnIVGiZDoSIDNpGW1ww18wFbSNfSNerFb3dzAs40MerlmyBUsTfvhuPha64LTQJ4EZO4eQjkHDSUcon63FqderCH1YC3uFVJjBaAZYPwKPN5R296Q0yrF+0ZQKcyOq+AYVSXbRRPac107KHd4b/9eI2YFPwl59t0I18dwou3bOAWVNlFdqB1NUQ8MuaYANiLfhl0ahf6zypwIxlOI5djuSuMpGbVibLGK8PascMxUdFa4P2rUe9rd2jJtNeJw7dCWlX0nIKChCW+IYUA+FjFwxepmkvyyH6VWFc8ks20CPZvgy7O7z4KqqjN6sFVazVqv51TpEMR/O11GjtAflsosO88vuyXVYVr4Bj7We4y/yV7MjKhdxa2myVwyQvBspl7tsTLRIjs1XnBnAtr3HwgmTXCjS1qRG3D6QkE1t6Q+X35eZLk/ZJY4OaUF1qQ+wLRW6PWqQbLMvjvMAIAPXpqkikotSOfGAmedtBi08c3Dk+iUgaxcq3jpEj2uPFyIUthB5xDq7Zn2zLxXh2ynrNh7ydLGvY7rb0Vx1bVmji4dz0ym/9ZPN/E8On5zuoYf5LtN+0C6CCOfRKqEKGkQQeRckSFxeUT/ttIuyKxL/x9f0MlzpXbv04Ryr8sSNpRTd1WhZ66Ywv0N6qDtnyhg1I1QlH7N+tYAn6hLgsN2F0Sv3f9/Ce0nyCF8qdslgCTCKvqCxvsx12RK6bHHR48Y57FiKuJudd6eCZT7Eb/iBPx7NsrokQe75t9VwcSF87Htv7JiYkKGVAdQomKGGkYkhCmC5LYoqos/f9QdjKYuqinOy3hPRmC3cI+zlnLXkmjRsT4U+EttZSvOP1/eKad+9hg+o4J5+1XRDXrpCAVaOW2Rh2ymTT8ZRUS8qx4Cx3QvOn35q6+NRRhxhbGWjQ5w/kHBrtLq8PClK5XCBV0KxMr0ABxgxFicXOdZWvFe9pDk+V3BKNATHwkpny049pZnNn5tgfOtBlLF181v4axl9ImuWmCdWODqK9pjZ6efqRo7UD42ZtrT23HXL3dFdqPg5oDI8te7jaamnT1I5DvWvvLLb8IK8YmDOjjFAmn+q03xRTQIaIcTNzXCYm8bS21dZ7ipcSe3XsW0CKl3fKsLdXNTB0d+yw+0Q6gUt5VVbBmcTuDiMJB5LPspXKmyIWL+fXON7AgVQr4YrYsMvA3qGFMU2WDaUpmHOKQ+FaxNhqI0lo0/O6diuZCLeNTaCCJLosyGBIQdeB663BvWRxq69Yh7je28Y5/VX4oBgOQpJe9nUYJ4yn9Gi7Ssslr2kBK6P9XkgANE2VotqzrfiZBAZkTcbwLyCpFmjMyv5OkKpNy2lGKSaqphmbx5lTMFXDxHFu3zdHgWoU+B2kblXXulum7mpxHIqpSmISSRHvP17t5Lb7u8Ixd3xzX2/IJkPBCC7xhkw22TreDnYzf4vECuV2VuM0siTZOwqnFQ2TlAVRCO+Wu2oMiAgdkR8Tw0DqSawYuNcRsXqgD0oT/wUglYrBbDU6/4a47qpgqbjdUVrXPaCRgL4YBnizDcJJS5q6pn3htSqFPPR62MCOqFpyYEQlb+to83XvAp+GqVY4jI1AagF1Yr4tOECq+9zeBlybYxXn0FLRVuP6PM6k6ycCUEQfiC2YiakkRSuB443DJmiXXHgqNhSkHftxLpenRAQLomQg6BYUig5uu3b1JXMH33LCNUBAI3z4sUtzcY6ONQv7uPjzuAHEliSDB4YD2T7rDaB26Tgmapm1VtiOxE7QVUBq0FVDhNA8I1p715TXm7RRC+TNqwKH/VJNkcLaBRxc/pzff7YMOKqm1GBA9syyDYafHoBJzoLwWWPzgJHMSG/qKZ4R5HtG2L+rzuiKYVqW3mnQAc+TicdMIr8cJbioXv1v0dv/elwmJ4Wm6fCaLmrZdGTvwtCfq5Sqy8rp3l7PrlOaOZOPO2oYNiXXb+Bx2KN71BBIgfgAxNX5POQyV5fOnPw92vK8Y8sZt0JUqlSYY5upmRnWHv88y508uMB/3KN7KuDyjZIPKzo1KEqUa2m5c/Fo50i/h6llp1cbE1k0U0mWgWuSfkJImbVOOJTdD6goYbHsSu2KKdl531VV6Wwm1cMqwAr9ehPmRawm/tGosz05vH/DU1hoYXLe6ziMizY0ioRkRXXKV16w15kStlArbC24Xkm0aN42vmrYjMdWPslQyvmxxIFTUlhc0YArL/Zh+K7xnLU7bDbC56/HldpPTe7QU5TXY13Z8Q3OJ55sGI7VTpvDdmfQ60y2A1UxCJW3b6yXdzhQjbf32jJIG57ZZGC+6tdczlrAFg1oTk/opx9NSFpdw+pbt0q67fmyhymWhV8WF+bW2lUtU24IQGIUCbIcrqODh6Wj9mZg5KMEA4GpahykOVkQUZQqlJMy2APT4SEeqbGcGp640qzKLCXbiiH4VkXMeTZwhSCPOWuyoPmCWlc0VOOmeE2tY1hRDkv9gWmGoeAJjed93QLO5l87mIEtckVo2AmuWgpt9YbeIDzuf3fJn8ZhGKkdhWTiY8VQcD5v3ZC9FjomOk1HY8NKw3G4UJIsnk2F2Ny0XrV95IH9WuyEg/jdZwVhtRglP/n8zPL5miW5PboIPAbdc9hM/CAa1gARc+X/i3H+rFG9JoGRuI6w/m0gwUhwz4aX1WyPUS/+tfa+GFGlSIhhqqxZCbLTui9EAAoqZoZKvMY5VTs7kbf8Lu63GsPbh73x4WA8frfX4zdWVcuMybVmTEE856aKL+68HNJtPXL7UXp48HuVuGN39sxR0NKDRq1ZcVcMXQP3q5/f+7B3c/HSDv1TVvO43qKIb3M1jrt50/UWa6KBabJD7O4Mqm0nY6qWbPON0oZLll+ZXcWLa8ClmqcHzxz5oqPUmfc+KPbyFcKJrYE6iIeG6YdDp2WNlbaWZiM7as8akLGwpL+3Iy7HGwlhoAQa8YSjDa8MeRuIvEAEOIa6SRWxQrWkxJWfM1cqVzvjmFMfaz9KpWMfd3rxiNM40HuE7OywYtbGNiwOc+oQ1VOtsNFZ73C3uPWlA+bAO5Rj3PDdN5RI7nYf8BmPd+tX13YasgYmzWpXTcvNUggS3sWUgniwl5ZRXK2YnKmM+mvOSDvi+rlb5L31bMaRUE6v6sDEsrsKRNHYLaGg75hsiqG1q3ve/uV+yd0i3ItEKFdNPi+6y9fKkXRNbN4q6DWQbzJLg5Ymq6IkcvFN0SFARZf78KlQqU6TCiLcyJfOy0QPpB/3sTP9c5Zg4a5svueCabLzqstW+lK3y9gadS5rSxkRiU70QGhtuLa90OxkNigzQcIp4T4TAWib1jxodlZq9qUEiS2GS0NLUBZkkFwZT2T/C2RXz9ufCVCx+/+0MbGP74od/O859pzCf9NDClLEe68zaUTOfsNUCv2TmToicctpAMmxWXfgo6ZFDfCYzzANJN/bP34nYjKdrUqR4ZqICen3MFcgLdJGZq/+ggnSZQmy7YNK0sBiogH14ANABw6v2ScEvLzTpqmwbaZVyCLzenewu8qyQFrEn/+YAw593NbBnmtAjWVADV5t6JVZXjEEDGsgNeOrFC0OjP1NS/0kXZA2a2Fmt/N33VyovqABLyJqhVFCgcTzhIcRQpQ4dJwTX4pI0Me/fHUAI9wx8ht29Pe7vnIPKR/cNyWt19ZL652ZBACqSilyhlVZ6yu9+UjxfJKvewoYuhmTBVS/Jjr+IgojSlVsS21gSbfkezvPM8zZmuAhOFTS4PzU6452MbQ19IfSBmWZ66zLQyUCMuQLuIsDUNLHXApno4fCtmrGmVLItQcJyEyFTRUBpWkywpCYrASWp3A6KehFp9bIpVl/u0avFuyo5uS1b2v7AJWo4grbR+PlVgHw4WIC0+BJUuVioVzK8JjcyzGugsf+YlvKMoOicsc80R3sEocACgJMMSTjF9wJLiwk8A+ghXSElxgO7k//AKawQtraGgKnbGMLURD0aqn+VswRfaiPABhbJzGsgnfytJpjX9sgTJJ1LtgIpMuawFNcY+kWdlQDNKopURYQLJCA+38WzYzJCkyIbWlb03HG0l1V0xw3IxlamzC8WfQo25LPwCYBiAlNZfiRKSmhqgwAj101MatYsa9nbFfll1JsJekhPlHGIgtwTR3HZmIaqlM5nB8LWMqTmz+5TZU/6TRADEpyIBU2CpOeX8R+ivLP1s0Tb8DuYLTrIxkhRw2hbPVPdzDG9KBYCGQJwEweYjX3OuwyKcUY9SLWBK/owhNjyRRJ13mZIfbXbikAsSRayPVGA+tLm4wlHap9gLUl5syr69HcKdHhPrlENYsLU/v1JST3f64FITEsRM9w8LJAKcPZq1uyCgziiuXAng534eNoZnvxyEbhgHtEgXLf0QfZcaAAUCEyY1lvfPNTbV3dihG3hbq5HUUW9Of2VO2CfqPY/TEm80E69vu1H9pAyLQjjeQLYUiQ6Zh5KhRCAVl/m8AIKKB26HftmgsFk0aW/tLsXIIuXzGnJ9lp4K+8WR1AO080F03DX79IJjtccXA9bFVBEOtFF6/fYGAsFukraLOXLOyVwB+2MvXJdTpy3AW7cV0HaDjYyUJWLLjROiAsSCm19eyMdYVDEMs9+LwF57C+OrJd+8Bdw3uyosgEZZgpQaR1hRkYuaMQmAJ62rFQDfK6FEu05E50P7Fprm2Ck6meFzOFAf2Ny6xyWdd7rubPSKa/YTBlX8SzBDgdKokYyhSoGkQu5aPT/uizSwSofZLk4H9i667CftfWg06+vdCBy+GGHwhABlXDjpwJSEPVM+xe/qkPdpfZlvLYSLoc7DGsKpkKBha0Jt202wVQTdYpLI8HE9MEVsnwbEblnCplveAAKnPlcmBlPG2lzSAAsQ0vMp1OXoCI7vgRZ6K/TduWapAQ38CvXZXRPd2av+ulvUVeL1qJUujc3Seo3312OERUF/0nAizQOuL5PjDohB5keU82LUzYkdl+ZR8j3uSA51UHf4Y2b9ItwNingP6kCMSDC45rlfaOCxaIvWeKEEEJK0sHH3hF1uAFUoOROO/zaJDmBYNtb9hNd19IbtTMFtUaAnU4l7wFp0Xe3IMvvcjyaY18XoAYcuN+JbFuwVMBRHh83fdZt2/U3WBkRtbb3P4PaRL5pu3WtndX2S6v4VMtQIDJAqntwUkCNwRtOcaCjtxf+RjJbpxo0RV0NpE6xQlHigD+jyf7qlGm8j4pBUvwEyTV6M/KZmBBMPXWTQzz8lQ1uxchHTaY8RpjwKT+FrTANQBzvEKRCbJm1G0w+UDjooXEgdDxvzQJeo2xCfYwYVahIWStBHoBFcs76C6Yuy3tsmN4KxRhA+glqVUcCqldtcKmw1OMadZ9aFuCQ7qH5HWJuCQx7TQagEMTtJ2wNZD+WJZA8t7Raa8Fp19ODpsIqBirqJKagqmhZqgmF9dP9lxFhSEItN3mzV9uolKMu/Eyfkni63UYApyP1eWnr3M47M5x13gHUoDctYO5jkEMEAeWmqgLam1h7NTxuSCor3+/9v0cQqsv8x1YGjfMNgKKQqBYbRoGeo1hqGkwKGmYi0Z0TEUr+ydlkBOc71AYri7CQYoRIuQ1GSIdKg0NNiJt4TQAEum/IkHApsgojjCoELEq//IeATu7QmMVs9KS1ygfzmCVBNRW2HfOiG6um50PdpquZrkd4tXeaF3dB61tt4OAlRF3AvtKD+g972w0I9WuXzwoQ7FMkMXvE/o+mo5cJHAMCa+RvRusSt5x8wzPTX6Nzzqs6qSrjI6TMxCF5dyEgoJ9Gu9cHmLBc/ws9ktTVr7m+BxlxFhcDC7HVuU0hp16iExN2zwOnKHyMGRNRktT5PAY/K3WEQ3abAej2bT9LOVh1lSunF4kBFxyUls19FbwOfAORkI4aLWdZONY+cELzkxrgoDL+DblQ8uf8LjZDdPQBYOQd3QepgrcvxzAJaewkzK+u9SNjhLMBZsBqrJCynppqAAWnMDf42TzCeGMZz0ZH4E7321Z1Z3pYVB84N3y9X2SztzWkgI/kzjnPTruSyi3JpPLY8XdTsHh9IcvQ+/WrSBFNdsbzMf8tY1tBm2odi/Ff34e7Utjv1qE3QTHY8Kj7tjP7A8iYjSK82MHv1FcOH++3lrYfe8mEFJ1MYT5RLhpoxWLVfc6G4SyG46dCeKb6fx756NLr7pB/AaDAdAfi3aynwE4TPXtCTxUH8nyu2ij3rZUhwC0/SQoMay8IpnsLpsxP1q7mITcZTkE7b0BT8W1w7kYngYJzdXVULolhJPbbyIooOtXfhM5RevEZMDsE+au5fdAc1f+jTqMRDwZDa/9XjZRseAZSeYl5uT2EUmyjI3AhZp+YW7rh35Y+GI58R6K1hrPe50hWTxw2DQonPxuToOAanmUdjoZoNoBxnfuZOzycGAxamZ8oJn7+7e/3bA+On/sQ5PHQavQibYMDRkAtPDKdQeDu+815nHy+fOqWtrs7wIOUIKvK8iBgN121eJgyNSCvxuPsn3GmA/EuHhuDuqCpFQwZbbJekisy451w0iutQDdAsnILENknnVK3Vcm6uouLbHdTkmEtgZTnnoolQ1z24ohJ2cUFeM6hro8BUHxD9StgU9kXCpsegzUqIspqENvecyMyb0s7BA6r1xHJb78s7UAjJFWUYIJUdeQAfXBqMHkyMEFF+kHfVHKrkBUX5m/AgXHa3s0q87wHkwDoOBooUxySpAprjOgNOsEgqQkIgLo1pIkhTJX7j7hGZb/PTt+igOrm4r+F2hp+NG0C+WzD9d58ID9j5RjZAT5TatjfuPNTgPLj52KkEz8RYHrFOpASSoYTmVVap+ANEyH1bsvQBxwwmotkQT52uU4vjF/5kGCAKmAm/keHObWYvS3yLz/UU6AjIMw69XEK4CBXO6SxLhzH4/2viJCeyC/5udpGqHpSzeSBDztVZ0FRo5OCbM7D3TPj1naVLj5l/sRX6TSBJL95j2MoWA2LW5JJqdGMCinBVG0ugXLwK0oKrzod2JkwWeeWs2+D72DCBJVdDY6M0UZFBUzDX7yjIX0gWi07eMMBjnjphGwboh49tMgDt2zgiKKCmxTjoowq04/UNuptuk/DyHrbBD1xazXPXH2zlNDxtsVA256IpMhWn4NiCaTra2MO9gdq85Xbx8bOXx46Fn9rmXNOON+rwlTOcuwRwAkMEEAtmIBZSJeEOnNURQaj69sWVZoZ5UxnitWOzDa2R9ICAhYJuxIZkwQZaLAiLrY7DIyrExoXbUBZBh8pX5e02O8aEYUZBuu3tZgADAYH0B3NQnFFw2sn7L9dJlN0ppUY8LouUhn49BsUaUgArS+zUlUwxhOhwFdLjVjMLuZGcMLYQOKqCP1x/FkGGemwlhBCyAvFHQeSyyZU/HFuCdiwT2RQjI3MklP0FA6FcCYd6Ry/05v6DGFxuna22LmrtHLFSismVIAp7V4DdVgK7e7T/UAM8YsHvgboNoP1JSqUw/bTQWp+s2bz0J/tF9eQm3uqsC2afRvV9losn6nYoOcXzqchwezOzeHckzhWgodhmarnrkjAlHbzpYlk+1Sj9Qp1EBhyOhBCdRAayM0xG+GGJLWcfERSjOvJ2jbVKspL7gxq4Ck1rQDRpf7tPh9rwcI4nmtD9sr1VLoX0c+cWYxNn8I8Gb8KEfNlp7qXx2UC9CgStSAgo5wcB5VVHR2cmhK97wo/9RCDkDzozuV5aFoRT29n6yL3cfaxDuOZ1re6sfOI0ZmPuChTiuLHDotTRSp/CuNEWd+yxXA+lrkbz+1ZYGYBtyzZbsCR193ldnXtff55VYg7uuLfZgPKGtrRZm9i568IrR8yCR1y4YEO9ppwRQjtD30vQ+GC0Kzx74f2EKys8+2zpzmTOhFqmLMmU601O61CMgUD3T0GsKkL2951hdOVRGzpb8go4vCaxKG3LQJLGCe5oQssggKd4lr1gZ+oZ7j5he+vPbuO9aTcSZKV8pFxnqJu0BIYMy+A9wcXNzdJzErIBb2XHussr5Ufhp61kExc+c1W/NtMMTOxuao7b9/izU7FRq/OT9CfQ/T6M7HBVxeWv7m7gMrgKY/W28yl+Z+D4PmEyL5YXgtnkH0q4VSaeYjH1HcgSLJkym3899Ce355DvFaU/UnKPGpbhsVYfT0r34ztoup35dCYHRFfWa/JUq2xgRaKnmIzdoy7O1UeAvl5WIJ6hMyZZMNbuCLjctXRoYDbACzB8tmnmNaN6+vgloCrwbHR76sHwSe9pRiObYuwD5p7B3cfa2+vOQHRJnt/Sxceaa+bjF7DrM3d7jnwZ+/EEJbPlE/TVvYFsFI/9bFngX8lZcrHXj7/qWwBwlqkhIVR+pmlrbF9iVSBt4eqtGGWQbTGnq8oH21HGLDls+bbV56mtT4RrOcZEGzfH+1DQtyHaN0xvLMbjBsTjoWkJM6NaCeqpVs9P0/lX2d7krm+6ZY8mnzJr8c38DeMbffwUblm90UYwBX1TANKT/DA9tcz/2X136bl9GAnvZ3fWn3DSNw/AbqsFzNl9nW3O+n0RNsp4fh8SmpCcNW2gmA3a7lk2XwWM9LItQj6cg3jkGz5h1VQXv++NlBtxuji2pTPW0yZkCibTC3Hp5PixpVk+GwFikRoBiziSY6PSd63BQVE9WDevhr1cA4aPsWpbiEyQnrfIKbAmlYTMUKWK/AGSKSx880ndMvq9SSs+89GwBHbkzGvQ39gdQDwK4hBKetCJWf9L98O4GAdfYSEi5i4Fq/EEmYqcxCOUtZPb8Nuf7XF+1IwiMOL8MIHxbKKAUhY8zRCLQ19lroe5LQERkspdTtCWOPJc4GBNoRUbKRnALaQ5VA7fmy+BhWz234u9edKeS51+OH/eKszKihl7mFTFSSiBXKngrtxx+k7NAp1XMuGhjYURyYAGrR72hIhrFqfXdVB9lAdpCFDYBtyYYwy10Sg+oXiAtB4qgTy+aneAW3MNPInKp2JCH32L63DfW0IluIMw1Fh46+YVS7IB29u8JeL9zku8nnaAGSVMcSCtZm5RdqF9IU+SJJdJ3pTznxCmuwxtU8dB3UsT8BJnljUkJURJbuRnN1SWaImZ3BE5dP+uLae32wtiD/n7UEHS663cd/D9KFB3Sn3Rt9OAuEUTfdQIIyiDCcBm2GHo5nZKgJxWYC4+BIK6IaXt7rP1r8ZWC7dpPg/oPjkO9vG8faZGLMN+LO0KRxufGXvQgl/HlTOGK0ZAeYguiV4JLUxSsXYjC27XoX3UYEPYlMuKY8yMUwMFMFD3M1JLLuto7kyeuJGGyZFxY3eiDitwbzyP25TiQOXWblmLQdsWsDJ8ZdCYxqt7IRPFv8zgTbhCvkl61V6P7Tat6Tzy+PwF80q1gW6k132/Os+/eucynPMQTHZwI8C5V6PH3wx7EtiAC7aTvdI2ALJTajlfXKbx8jzoMPghkJb3twW0L/ypTKdXYRgV2JWBr/4zakFOXAdnxt3h6BU8cfrEzg7LDYvtmXd2e/szIAgu0mga7+bwLkNjZiW6rHB38pPS8dLL/WNS74A08h8M+tOoRCdkGBpVRCFgx85exllrAbKRIPioaTa+4YWjmZ99Co0ckmiqSXrAz7vVKPtVDe8EriZWOCu3dKwU+4KdcfvRJ3qKGsq0CaITqH4uB5WiMF5uBw3Kixq/x3pmkyLVdyavF3wrvSHgH3lGTzouhczo/wPeyvAtejRZyPY5Ft+puesfuzxFWrW2iBqb4UIQUAz240GujF/cS8RCVkr6kTYKitcFjBl5Eo1iU4LI0Fw5wAh0J4wM8D5WoskR0hbpoU0mZOU5kvdhLQ/LEMMtQustuB1m/y7QjMvZcVTxA069hCLzl7QNKoU9iYbnMj92tJinK/iwHNyWpbxTY4tr/PYvAK14JZEGe3Y4SstOcz3xNErGxMdbE+Fkvg+BKTX72Nxg1Sd2CVc+8zavPhr6UcBn3RgIY2TbFJH5sIdLg/lpzYm4P93YKLPg7JI0s2AgqKBpcFJ/iN++SUJFFk4VNp8d7YA3cwzU9xPbYKRYWXKlV4Z6RPC1FGrGaEOM660sZFLQz5E8c9sWYEL738W6GEZ4SfkVihfvfUcYfpH0EW0rjE+5bRq7bjS9S/MaD+n/qt+D8IWCzbdhAMxRi35IHe00AffN7gcTr0f3L8Q9gUt4Dmvz7gIIqmmYIZifZyhwPWFsovnNxOiOQ/a0PvFU5gwmS4phDSpp94QaomtXA50sySQhHAAphEEiipKFNFyD813AF+4v0lE7NYcw5IaFAryoBrDYNODuTA4shv/fPxdSgFltk/fGpmBwhPGNrWjcD1fqLoP6JtIb5qzuauYXMGCBGJnUPNWTe9qQPb35eqEuDGdQoroM2eRWZ3Cdgy+1YYz9V693bf2jSwZv56CSx3/YgJCtU0aOd/voAO24LcfW982yHJ3eIjWBjx3Bg8GnePRRy3yH3/GqicvEma5UBj5mKqa8dEAsotmc59qBmai79hF24oagXt+frQ8t3WaVzwrzGZIW/0Kubgy4cSjEUCs4j23dtvwyvuPnCD57rddzs0gZzHMq5eG++EAYN1sdB6YxMT6H0THMhEKTvzA9fAjqXLoezft63rN7U/bUOm6S1pE66c0/xdhNDjR08ev7YHKiMIIW0WGlo15Bwcj8IQZYOTgUmBMBYRgvgieNL9GBftlVTOkwvBBBgQsknBjPi9uJ0r+tllTABGPBtrItwXTV1uHvDLl3RkbUBf4yHJXgTinxZmrxVQYjDATTgEj5VP6Vs+Gm6c++2zW//5lW27wbqH7+Pu63po4EHlzK4/Qt89fraoQXn8ZAt8DVzaxDM++NzaUeEP+0S3Fzdc4Nv1NjeGn3xXiMFaYnQCQomvDedpQczPVTUgWVhYSx7W03dSRb8ICg8L3G0v5xBGQaBfqZoEmcOiGthpf7UwVsCmLPhc226kneypiQGkdBdlBfiqh9pLVaIJQVcXFX2GDuA/O6A1XWwyMr9SBG9JgGMvmCOWqKopwAQ5rdnyGAUROZNrsWPRsd59jbXjA21pwrV1dv1Cpx5FtHK3MAYF6JAC1+gi3NlhclU07pNlHWYOeY6hXR8a+QuUVk9TwMsFEr8KGAh4rahAFk6T0Q01nek9fLzigx25BYnx+309hxzaancoptvAUqQO4FtvjI+zshJgGaqAHyxzJiK+MMz6VyefmvvDpJGPOpCJOAraPqfTvrJVfn+EHk8CPaGn0BpIRo6+4FeLclrxkm1pCc74rc3LhwyADDUIrJC+DOL3PeNZ0fgdFnFpS3Hg3wGW5XmUPX9n+qAIBSFfHqptUoKTapNDDyy8CMWjp5FFH3trqhDVxpdjAZbn374lopNNpFNsAqTSHst+CwyzjJ3/mihTgrziKpcK9EtODmDt/Q8jbTvahD0Yv8U3hk+UmRt2FjpNF9MfvnNs1H5rrKrHg5ofpkBBRzqrYkjNmYW2BozgF5mFGv6/oHAmWcBOaGaGuq8/XeTaI7+4J8sW+wmxEVKfvvZuGLSph/zbstHbWj7u7IEcbPrXGAuRtGVSgcMSm4rQhbd7ILI6Q1S6+kKuYcSK3Hwqj30g2oxj/EkmAlq+tiAjp5PikoID1/65T0z65/em0GPuCA2oZDXdQXoqjb1erzOTHZzidnBfMsomfGtjbPjBqHbYNvQ2yMNA3rYz+qZbt6pbIM1Zq00kEc0NdYg26G107yr7VuafOLLtOq979sxlFsEGqbCX+bTaq39q8D8iSReKOcATtZLjgnjWrwZQ1jHVkWsGnhZO9h8umI+ACvnKsk/U2LJILd9YzukjgGyDh/4bkzBeo3WDZ5vEBf8PxP6/YonaXADWFvzCDQ9zSG0dfhiMemz0PUZBvoYA9VQL/fXGAr7CZbEPg368ewE2NBhMG+WFKVs8dYoYYstsqSPDQ6z4PCpw9MlMUwhegEqSf6UgvK3OuD/2CTHREVunW8oW8MYFkYKaqklXYAGEiiIhXq7sKq5dBsADO2FQRacsTt8BzUiONMMZwtZ273T3YKvn8+dW8KliFWUdcyJHNIEDnjVrl6mY52w+DGYY1VD99J8/+DCMXt356LNvo16XHhRGMk5N9MySSMaJx0PI/IwlEBlDBb1X2Kzwj119zAYENV/02h2XI2Ua5LwjcSO+KE7K6ObzqzCDHI7CCYNWRlNXjZz94bTIUczxUbxsVeCp64IHm7OTtRJiapcTacSBpUsfe5zMu94hH0bxyVOaiJXGy2qSXjrBEwcn10/BPJxd80jMIH0v+lP5fbdffoMZBSqzGnXgAyA8NTd27g0Zha3TbRWqHFxUmVagN+wKNbQPCnoRJ+zq7imDPZUSLXjBGNzV+7zNNPXln520kZdzEFdJpATOHvPH28jUuodJD7SL7j5OPVdQvbWB5DSpR/At9QMqKmyb/+oyolrL3Dv2AiLoor6P5ipehR33ULaqaDVqL7zNrfk0LokNtjSyN+ncl8c108wjdgyRdz/T2HqVQVOg6kRmJLRf2ZoYzCbjq1uATS3uH/Wz+x0mmhL0sgqeQV87lBD1qL7adPWZUPCgn8nrujqlFBRVZTX915fE2qnV03+UTrpjB3GzrwSODIBYl1ivzhRUJ5KeLkTpswsXq3QI9oJosJmi3ZAZKKoOS8G+ruX5yAcop/X8lo4VgUVYdioaWzEkgVqOkaoxHvTAuWwvZnInG9uHFrBeC54/QkP+HVFUgcsq2OynH/AY6Ev2xBSqGXV9rqxkEnmtbmsmU/wnHl2vmvCN7ZHhj3xTw7auNUAWBrO2nVO33IZRWwcOb6ymiB3NDQyINZgEun+TfSP77x3gMZ3xcL4SkY5BmsT3QM4/Wei4wFt+WG3BK581ZlxIUOIQUxyow1VKSPh1RgOhfpYgYJbFlEfP5IxXax7Bw1xRJwT1ZdqUCKydVEGHfLfQhAFcsz0nZTpGw++kg5YBJFMnGtSTfNVCKEHVkA7yo+nneK3RY91Rya/oW/UGAUI2DDlxRadaMNzYNGo+GmIMq5mFEqoTy3PsHjjN3KUKQpNVuYeTDsJIzJdqTXh+Cm2lvVI5U7CigT+kF1vE/urX8bI+qasd98VwT2mbI3Of2xxwXXFME72XaAmxig3feMLa9Zvu1IaZSRhbTJQW7945VLzh3vjortfBLbWVd8JALlqm2DmMFGDKVqBZZKxs4GK5Rw3amwV5xp26XNzeLDINdwawfs2z0IhFgg/8MKSNUzIwlPPDhQFjaob5AOk+b7uzr2rEMxP1BzcZ+sCFfrNEe/qlIQ06xlaOkOy1fKJprgLBNrKE3RhpobkTpb+VBO2ChM44NkRu7bry1ko+XBV7vfUbhu1CG6sBdsuC76KHGp6fkW0E+2vlRRTOVHVQVvHmSHtKC7o/vX2i1rX6H77qh/fpvIOA9EA9NsTY7aoRMn97f5b/UkX0ddQMa+deNVgqw29eMIZxLR0abJCBeNs04h+eaxKZS4fMW7LAe71Pw5IdNsmi2XUjyA7NmIuCIlTB8f1H5MA6FG++Ihtg+5xN+g3oR+RXzo/zWeKbTdNNB7vZmcf8NTztPZjVqeGGrxF53b7FXHRKALJeseC7m+OuTa9u0DW01h0IFmdLX3erZuXfYdIYkpStDnQor9QxdMcG++bWP0c9dnRz4pr6/4s6NlT8Qk+FuKULNv6ngJ+2KD+e+Nrr/OJk/pxqFBx6jO/XWYUfv6KmW69k5KRCYSqp9tA0zApCZcD2nTuSv/wI2PF8R4MoiHWJAnrx11voSQ+XbXge2MaWj24ayjexJAQaNrBtvP01OX2PUgW3ZhU04AMRzKyTsVDBGsNfWrHABTvSls6ct3S/wV+B6B3WNnqe7Uhu3Ohmzp59+3wiMlxR03wjlb7Z5SHDyqKA+onii3K0/FJPes4AoZAiSJB5aTMcyYg7boagzamjEMFk2GyHFjeGJn/gNEWbp9aB1GRnx/okn5KDmrQqSbKjLxFbaviVf2LSZNpB7pGdTp2f8oXa3XYgAir061vBD68+aBtak3zQsb+i5ZyW2RwAxhBVwvAhwcynwI7lhgZUcnQCrdhk38j9GxRMUCEvAgvYJAMXHmj87+waq0ZexFL3vQ6CTweXti17SqR1Qt+JnDiK4u/+oZA10Rg90UbJtD1hQAixNj/xnb79Rta4eUq4+IBJ/4+4DjMqHZLNu3bDcWynZaWkIQQFXZAVvj3Ha06Y8kj+ejxxPChHDV02ygXD8Qp1o+GNixN5IiwaoqZrtqTiRxpgueesWRJt8Gk2L1WMiYj5vGwKFGa4KPB8omdqf5gH9vP7yADFg/5IFLnTcqLPj/ba1CTeNv6twXVjNRJnH6RjAILcSbs/QaXDv1PSPMAU6KCBpkRKnX0gXqlPswAHmKpokfbcwcS5osF3PwUbwLXBA3rjaw4Te5MrXa32mUflLnTzdDhElbO7Cisow0AnbjpfITV39PS4HkiqfhmfwHGlrVK2jW2GIbBgmu4KMVujtKOrEBNKr9wSgJ2gDeNtF6JCQbmFA9ewORf2/+PWZHJDN/3Tw5APfQ++8vYHPESXJ8I63LgiVrvokwPWH8VWNYAHvfn5qQbXkEPjc2cdO2HTM/Jcllfn1kJzeTTR4sklHkBX4T6OWV3+/bX4BrskLD1Z2TOfCwpMMOU47C3jHT8nfB/DD4G/BYKk1DWDqcGMEaQpm63KI6uzxN9mpGHN+rPVOyv7LFu4TN0RjZeKKVBUNpIXHefCTd3lJOD0boa06rWHWcR6lwBTeYfxHuil8jwJ6bgFSzpRS9mR1LUaXGRe0u8OA1Dfhh9uTrh2vfpBz9A7Wv6gZW/oK27FLIqSRKVZHIK8PLlq8Qbr5oakgPd7DNIEEG6sg07H35nt20ASf6Xag3fvt5wJBZCgpBFWSUDHWdoSm9cIDQS6CawJswwhNfTogPpa0cf6DZczmoL0Am7weL0Zl0Cbcj/f8f+zu9pp2zFbQa817JlAEpzo0EjxFRUc1HZQ00gH6ad4x/kWo6dywtmTAF0Hlk7PF/+kDXKbm8iNgj38HDzRqzRFNtrqWnXIIacUs44NpASndAiyUyVoSq7pngrI5KR2yQuMjGrKaw480aG0UNhFpSD6sQNzgXqNIqRzBIZJ8XgMEGUew9va9gog5TplDYZQ9eMYLSA6kV8vQpmdqXJFYMLO+RzERzblz5DvsmiM5kVIjrZyCQ2nuQpoNzv6RK2o7gduFaGNVL589mYna4jNUUxr9KpDnhIdUP162YTK47eGSMoaluGAT88au3fRrevJRd7VMTe9VR69+8BUqy6QYbiy1OIE0DvQ/dSnUA6TrLLzv1SbWLVz41tbnhyFHN/ocBkcttEtocWesZbDMUt6w7ctoiFukHsa4bCiFWggyhBPR3AEUIzviwgtQgbkx/IvoHEo7/vH65ocAOrVDiPy1DtbqVOKFwRgYmjbillD37qL4YSJKUu0ztFzRO5DvkYJR69JcAzoWttB7LO/SlUdoB/spVe5DuLF7s991Uhgxy0HdQycqnujZPBavN8wW8CCoZlzLwtIcOTJI/txntcxmfWuenAOdnnaL1zOh0VVMEEEuYwmpp51LsB6pHwjKBTNH05PqJl8HYrAhEwpU26P7Jfi1ZccxFtvz7y8CZrGf2D+GNYzmNio8eEmr7E7amRZzVWb9lTgWsT+6zd+TEn/iGoQ0vdbDjwZ+kpq90aTtidsYmASEpgsdP0g6HlhwShNucqqp0GGkQUBTQiKb5JiqHpF9GM1leNA1/ZW0kFhlOPLUJtJFIS69IWjGeX8my+924Xcs3ycyDHcvKRMTLGrLzkSSQLJ5MV/e+5y2rQkLwgBPTCR+DylWH2TzXRd2V0wxW6VUkTiin4HdgM6fImssz5RtzS29OCzNtq1caO5/kPOo1jcLGb9IGkOlylCKVdq5EVPmHFtn1PY1JeZDZ6gZt90GrjNXmPGLVBcsjAy+GHAszUSSkCyx5hux/oK3d28+b2gx2TkIkgQZ4ZJoxV+zvWvLEUnwPwW2Ej6+s5TeZN3GolBtKYFxi1lJYEPgFnLFQMeMATDagTd7kpyQ9wTXc/m3usnbIfZFoNtA6XlRaJcabYbmIy6/omHE40qqqScu5ezn515t9PFC3ABsJ9bKYdU/IgEQqto4dMHsFr4D6Pltr3imj3xPAVBFwMNdxmP2KBPH6q3ZPXNQfWx+5Oj+ov3Sn3UasyL/pf70CFeUZkX/vjWTVcmzp+98Cf9NNrcBoAmpOVViJiONz/yPWNUhDW2ZJhFM/Ag2disRfNvTAZPj8cvf5oe4xlekSH9MC1cRwRgKEmqof6QGxd5TnAibbMMpLU1LoDylrNPJzw6O3UL4sUf/ujvEB2j3+JK/JOTwbJ944MUdLLaQed+49uLxKqqIzUNIr7jB19bTq6hCmywRdMsGr773Go0A1egmsdP/jiUTOzyJ8g6GtxveG1tfJiMC3wizEQgw4pg396ltPVqCGWgvaMKYQNg1O6uYxNdqSWAHT3xwMps3bMIOkX8gojeUArgF1dunLahHqRXGm+lV8Vc/7WFIjmnoPs3eX3F0d1FASSNLvXT6U/s+zpgE2O20RSGZmTqYT2f5U3gfBV4zGgWmXu206Gu623fRONkJxMh2z4ZqFu/pDc+88oCK9CoqEqaeA5L5Kr5DqfsGGbbAKAT5vhNIlz59Zz/FX0A7mCgnstDV/8kMXTjS/nIKwY1NFWPzqKfGYgkTsg6RiLBmvV+vOJ2rw21h0h1MAF/3h9Aw+Lo7yfhcpHro0/Tjar51tLArSF49qhPuvNFZYzlvT9qn0j3mv6dML6nkPUOiI/B0uPj7iAK+Npx0F1rzwxG+d8N3O6KDb8ZSrmuz9s3HOzPtfsRacj0L7nmgwVvRn1jcSQskgwUtmycjqN5PuatpZloAIzvig0a91H3E/QC6LAS/5dvwQQwrhvo2V2x4HPfjOuKxDAYdGDSoOlfdS8Git78GZsExZKgbHxH4d/mzVXmrIQHhpnKUneKYneMPGkLGZp+I+M0PvhqdqiK/AYsia8So+4G1UMVHEh5n1SMvcy9hPXbFhs1mzh3QD9ZJjHbJnI32IPsr0AR5GZ9qlcIoqAoiRSAbwGMy7JkfGsD7ODTA0v9rj/o31vTzp+DOPLJ4Q7pzs/rfzuxpAmW2h1m3uKAtO01vKkkdruTQpPk8fb6hnBJiizJfoXApzEzdV3orejfGZ1BYaE8TOcNJQLR1UUMA2nK3fpDEBnOhkSmuOb3zkGMD/dRO2niw3IVEZzpTrQ90Nh3H6j8B7TZb1f6Cd6EkwH2hEqS3FjVUDLcTKotfCf3NV1USIW46AHICliEXp245KHCRq/KbQAdFNEy4xiARTsUggIKx/BlxvxX97qJGht3A1CYHR7q5PGz2baPuJcQJvRMEp6z6k5hTVgH7iu2U2o/EDlF4dFetxVkBXPMejFZQCRgaUnm0emwH5cFSTlGIZ+oKwrLcV88ezkLabXPuVAiHkXoaF6fAoZWJ7AYnH0xRkMjd5pQOGlKpsmsyV9TtRNle7WowpWNcrlU86/k4xLMJwLss3QncwC55J7NID5qh/roG499ld+15Pq3QQF/CQKaSo4d+WtiiiO5QVMqvZCZ9UVm4IOI+3ycRr5tl2lHdKsldISIdvyGHzXUlIsWI8XM1XECWBHLEPUnRufy4gF5/nNcCHFVAQdqYKEvxOSuWkC+eF1gQFuy8Ng/d2SrUYwtN6haGMPx+gfBNF+2yqD00i2ZvvdiLlp4YzIE6LUFD2YeYfi9BRUI8okA6XRXMRSktLVqIOtu6huqCNZ2xVYNtL7mrD3bzmjn3OR84XUX6uczQK3upbLDjgVv+M4BysMyWzZKJUt5n8vHK3AjELqFGHoBs6nkw8xKMZlDxA+eCBWX5q8Ua5udq+RGnAdloLysCGE5OGteHqbPHjkLXWhyc6LYAEqEtbeBTO38tgb9/RZwMJL+tw7X8eVgCjOp2Ll5IXfWgnqQiKyfSOfEXP/l5aLx9w+/IeCCci+A4kOS6EKMSocELWtOzIidI4FlsUikuQ8pw+45EaL53q/vJJ5h/VblrpnShqyzDqRpCoycWcZrRuEd9MtPb7Umbb+qwkH22B+cRBNtuqKx1xIIf04LwkTxCa9MfNbIjDXA4sUkMGRJwiwypirRGEh8qpUmY3Wsu2PLzFC2SiIHNWW7f5pYn33qxKWIfoIUOoUOOlpjwB4MQA34SRutuGmg88Uzd3eKaPvmmSTzYpH5AUSqBjUnMM8mYgyUWaRCV/KO2No8G+8JWuPmTKL3XxIhfvjcL+28IjO8frbAtdhd9OQfE5Jlk6UbKbRwhHljdTHKNfbQTlimfdy2oRmOng6WJO8IbegLadv9uL9FB9jU5RJ9U06IDV8ModzXCvcOR4E2CIeW3QuSL3s4fBJfjr/SQ3XqOA2tgkHmreWpaP4f/Oact3mJH43bs1IC1IoQMEUiOYRfX79ywoFCSK+kr5FeFnPjU7PFI+4dv83lggKyuySCZFGVATadHm8PHj2YhDHcEcITLampmm0v7186KyMiP+5AJj035t7PQsq/W6Ln+01csGo/Zt6xH0/vsNv2VRC35LPHv8J1x7DJvmxcwQIZq/iqoiG522v+YAm40prMf+6cjtGvjh6Gfq3P8a+T8QSPgO69S3asn94CcHATU9Y5OqWmhdBjZKHuVaFPNoiZs1VlQzPYcreFKRAS/UaRJdOu6EIjo+o2ElXXJxS0C+02zZ2itdJ/hEhrSH3x9kTwzjdjqOZUzUVmshn4zVFjJrfwekrBjwtTg/2AYdA3xDP5s5a5pi07ZaPQobNJNFwpF6J7kmf+HVut62v/3QG2qI2ms0Ic+KSz+t6Z4xTdkOz1Hz776Ywa+PoEnB5pN3f4BKpp3XCQnolTb9Ttz7hDUxCIetmEr2WFd399WDNsm1oPlGGw4DhPGxm/adcOQIa3cx0kFcsNzcqFoVJHDzwYL+WfIDJuU70XT7mdP55Zc+JyH70oTSJpGldHdfmk7ksJY2qZXMsltmCYeSNws4WOAZUiDWn03KxDJRuKya4FfBsfwWEgsorCocdpE1YMn/xIioAL+gXQfbE8XBHgOODJ7SjdE5mU37JRXMMGFz7HlkYIaSKerFd4ZtYV7y+tZFBHeQ0iwjHSJwii/JVJflLb1jYBGNlTDUhk1ui1UuNLJAzDPveEuVPYdJpNgOnXZVdK3oQUOKPKVWu1uUr8EvQArpuoSEL36VkxQHjCAQErxAlk94jJCmIAx0iSiEbDYVwVZPLEeuHGlSZnQREArUFDDV5/mAndr8ZoMCH6EcHZGzvBRLYWDcMwEQcp1ilb5WQlFWIfhKqvcm147au0J4AUQ9c0ojszIKdNrhNKZgqCBWRwwM9rrMHune415abSBDwcz7le3mXdlsOrgqwXDdvxKrWiYKxOBIM8m1CgQ3lUGMC5lJc2hh03GqkGoKFiDSqmyJuoLVN/eupqVsHX/J+o1YLCWmWzEmZjMfRBcPB+rQ0vfJLxeJCsu058x4o2nKOcLBQkqylM4DHNVuGMk04CGtD1hl1xvYqb90QXtxVNksyi6XhVjisJxspEJKTwKQs65fv5LgwVhVJkpxzLSERYC2Y5aMQqgLqGVSjrkmCg8qVQL+R6pLa1DsLVgnkwD+M43vzUcmxS6UgQGJlfWI3n4SrAd9QiOLJ8bl9DT1HHg8GHmLA4EEhJrO/jhZzbguZmU9rkmHC7Z4bQpo62wEa7na0OThMrujroHueCUuIp/Igx/4HsbQ22la8alTKu1a6W4gLcDSSxrkjIy3FMgnpHEEicEgEd0pIgJ6Yz24VkCdGAzYFIQ0PBIK7wso2RxvA/8qgjVWfVadKdgDPGwzUIzAEhMENpkm3fnxZz/RTMEnSIjKb+9lMq5Dvg98bfLLHb5Nu/+gRWVt6/8bU+Lvjj0V9IKAzEOy5d4mOFlwg5++kPPClinJFFIpGqWwmKJqjGlLdX4NYj40Rcr2yemwjxQjozH6GX1l8DSEFarnvKEi06VOsLuMOXMBSdBRrVZJTsGy3X/dTSievHTQ6wMtRO6aU+CttESmgW55URe20DwAWPL2bd61lIqaslP55bNZl9fH6yrERaUw0yTL/+FMGGBHHpArTd8EZWrBh0Mo7YiOg6PfxE1fyth+T113gvA00y2TkDgjElNkafcNan5YZ8RxetKkgiA/5XyDhfePg2aaz6bc4PmzC8LV1DoGlc+DCBR1YcOHxsBjBOQ7VXvQmytohT6POv8ILLjyBkBjFL5iF3sr9D9RHy5vFhl2ygIjNVA5nRLfsAKqbu+0w+1l1XEZ+aWAZTNTbIgF3JuKddWTDlFMOdaLTDbmpBHR9TuorC8GB/wQVhTaYySwEnx+RyBcfbSBMX3mQpCtfggeKrtZdiX82cKtsuRcHBCFdEN5w58Vj4AixCodCA+SCy/zaWTbjYYRVjSkkmNIGpkiQ7yFS+2Idnz+we9+bbDLJxx4048mfL4b+n2ZDgeg0voi7gXm22Lhy3VuqpomRN9Lw6ZtBlUoJ+SrgsegQEwpX+degNKFz1OnGAZof0PuplVHgfAarOccyAyAksG9/ojGLWzWlr0L0oRF5fgu7tpFlJaoho5xyorwUqkjGlIrl2nNjlcTj02/S4WnBAN62RuU9u7oIsMNNSq+rK5OJmquVTdcCIlhpd9CXQ/99pqZOzIMWLiI//zkaePvxK4r4ijIN0XysMOqPWTCEGHnUbeDtuS7su+47FuQs24S2oN9UtwW43cOaym5LsQIXyUoNECzZbN1b/Azp14uFoXAWw+G9UfwY4V9MekzDPH4tQoZTmfBQEvqL8+OwpE27KWXJ7hWbaSKsuxihPwiKuFqzmr1gX5HAAzUfHlRwyu9uNYLg2mCnGnRBU+WqrKPf1uXFTP9TDfD2mu6TPBwU7M2rg7OWoCFgCIitWamjeCmVkKfEZ76U97Tw/AF9rMsz5LFRvm2ez6gqhMigPhykZyFbiRcSXE0WVXIly+rxpa2Sntm9tA16vB1jvr9+Kt1tvLobCd2Z8yf1JEwXwqK5Bx2w71ZbVv94RTECDcVmqGsI3eu7dtrDpIF1mCyJrNzk2MBVZcux8fGdNjcNd/fBKc5wR8mJzlYQ4L9aH+5YLJuOI+avEs/7V/vq1Z7EtEaaSa3aahHrDBlbG6GuR7mWcbItGIYB6pKrBBfMo0IPwPfhRYh+k6tGO3rox0Lp6bOr3DoeTq+BydBN2ecueXI3OXd4hv2PRXLlE14yrFIORHgQYZsGxRKwAg1KtHOjopu69XA/scGGiob5Qx7Zbb16I7g261M24960MtsyYlqpis5u5qPd8BUAfe1dPjM4+e7g5t3kbz/r83W7U6TXcP/LAXqRe+CkOivQFcpDpTcZCPm9dU8xXTvePuLdR/VuJQJkFHOKBuRxvMxSLNd94w2S1H98qE9YsBhS2MiDUjahrhpKo2FmoXmP6t9o15HdQpyHQYm2jkXMXD8NbQ64VZUu5C/YA/ns44f3i+IyyxlHNVTZDd0Pan6bM8t4LFRTbuOZ3oO95Cuw5BWniCD14kLq9AC1y33swsSKksJzULMWIQtcoD/24olootnyYXVoFCUkQGT68yuyr/7e/rdcILXGutdbB2AjXS1gD1JW64g/ApjaLWgTbD7o58gbqgjJ8gmbOjIbJ3wSlfoL41NzhnvyypBJngDemQ+wwMYlYG8ypspJsgDvaUsipsZ3gINu4iLqAbExKkxn5YFY/7E68iaNlXhs+2Lq9aw9ngCx7WJf1jEnUcRXG4/Xda0hiZEVCMYGXLV0qTbx90eMkSc6Vkg7ggXHYGhpDnvYWOVKu/hdvlhSnIz/Bxv8mxtK2K9ZkucaXV1+e0NApb/pWzYd2zsAqQvTTvxTA0E5e90PMXI/vqglyRfOKDcXpLGh8uncMEV6FJbGi8k/2de2UXeqiyI8vDo0qRsY/soc/0ewonCIpFzn5Oq2kaSmXpKslSZN1FZqqvmFRKFzNRr1nJqWEIjM8O8UdpuBtZyIDSJJ4/AzFS8DFYq2SSWJT0ex1wYWpgk9V9C8386emSIL/tLT2ccilzklQ9AnhZsLKqFPt1U9zdIexZJDGl4AfTjeCNhoatKpesCO7aqDeYMvVk3tnfdvtNvDLucGF3paOVHEsz5eKUfdiLbhL030mj9M3WC+IshYeUDnaVxtoOCW6cOiXtZdkOox9ZTXjy+mCBzECsiDEYHNoC8++EIVHRESXsrVJwEjmDoLvbiCVCvsQ1H9eJd9aQgvKiB0mwAn63wenqz/a9pr9XgHBR15/1sDW902ehHtpDyQwxVIJgGvuT3wzpk4q4zo6CmEJ5PB4aERnpAEIbvJby6l1VEWaTKBArfBrK2iB2mPRryh4ML2MtlxdGx/ShBe2pLkt1Q3qXUtNhvquIoLtCXTbEycfoS+vztT4TM8jeMOvwLm+VI7h558k/dMogTiBRvnTt5eWP52e03f93X4ueMDaXV6EpJbKgGFhLm1p4lHkxK+0MYx71YVIHu9NzILfPA2+3rJ7pJDy49eibtQjVhY8kERJqDMUximGoQwyAjs1ljoqBLBkEC3Hraai1GoBASaraSfp9NdHu40tAORAqYmGWWvOQ5ZV5BoawhhMpKwp4BIJLPmQ+ZIkyzIL1Fqe001pRuWmwkm77EPJJJr+P6027VbQCNOo2d+aHDbW9WamYlSShV6RkzjkI5V5WbD1id5Wuso3wCU3et0EuR/5PT0A64hc3Xj1Ys6SV8F8q6GkXUGOYwIhMdWt9gaeA1Zbw3VErO68eiFn/fnY3ORSglXocI6pbeEbWLp9U1V6InM2G9hbn148a0rt2yv97FOnV5ab53509ua+bCO+OvpzmTDqS5iRcsXWaL2HvP/YZBdN1zGH+CP1dY0Uzg5CMaXZmAGaZEsWAHns6do4moGwj7lCKd1UzRV533S4HESr9Bsg7R33DlLjTKnWjo+AjnNWzQJvjPjcsTs1h52aDRCtYiPahWCkv7MXLqVqx9pnD+yT/ptcLkmZDrLl9JugCrl0Ra/IIAaeExWlWl4p5/LrwyVxYYu7N1QpzVpTsw1bN4EEhGJB6SH/+FvFMWxmsOqgTWfiXBLj33zEOU+An0ikFVQfqzSwMnh1LlNVKCZsaWyytgtz1I7IXS5r87YcglPe5Po8kvml3MPwyxhyVkkmVB0ANXMNiDZg4ts9KW9XV1Suy6RzbecaD1cC252sI/NRnSOKDMvxIbpQDLvn1Y0W0ZkNONYiD3p0o7b/iKA3v2/ESE7X1tDQTgMafGnlxklQqM70+FH6dauAljFBeRj6yk6LOa+5u0FtUeP+A3fHdi7ytu/AvVXjNbojjj9MQg8Rg0zLXn0yCJ+lQx2/+pNsO1H3F/HJ0Bh/xroOjk+HnSl9oQf9Ic0IUMjfTcL+Rm9mOPZPiCRP2YGvA+66AVP2DceG0QGDiDisd8+6rwa3fZtHQZ/RWuhHeoXCocyWjNSa6Ob++q3Zyeiaid+DDB0+/wiehK+uI2unG6DD4wd8St1D3b5WBOjnTs4+G5Z2XbHjo81wHRdWi1zQuRHBbJ6DMDUMTdBx6p/kHDR/Ioj2DLBBAWve0udYF9j2U31lVSi4TxqvOA/9L6V//tkx2qfvtnn/yr163PFDGRyLDMCWwWvK2+G1SXeKlZnxJ4LWbkmT4arzoN+Rm8vF433yY+X7tX173BHfEGUtcpkXiD8qIOXYa7oyNxKW3hDzofr0L6KnAf/M1G2fiPYgZmFsybb9cjAZm989i+7snft6UQDXeGbDMBbwvvvgE6bXiBFi/z5hP63oadAH0cdmkQLR7pLVedJXyqKDWC/1E+K1FkexgjJxAjOazCqcfW3Uqa+GuEZGFy3ahX9E1CH/gTWl9fHHFynN6TeW+8xoEuEQn8Ty+Pa74TdO/ytKBepKMJd1jyBTkX1cHNcJw/sK4ACaCbK2BMQ5N0jmO7kfqNPu5CKw28XG7mJPb7NR6UmPBC1l0qDmG7kQcBiF5bEAR2h+wUOVpXFRWASJhIAFVoxyhGsA+40qj0aINHXsgYVRqa3Hk/C+B1hZM7tSJ1OgioYJIxG3U0S7OYU/XzsT+42XpbWE5FED1clZrVesS03Aeq75IaRuH2PbCBPHGEIUOXTUb0cGHwszgJoCQh0Dc4BVhT0xJjOKPAUNTCx01d8zL+wGJnBK+22b9znjvFKZURRG9xJsuL1bYpY1pnZz+38vmfcn+hsGZR0FZTRxKG7/IHHscuBg9Z59sZ3J0WW9BNGonTpoP63X5kpX7Ak3ISmC75MsPmDDkinEo7/2R94uTGgpiCAt/W9vn2fLE6xUEWvCtYUJki1yqYi5DMOPNaa4IQd0RpZN8l5aiGfqxtfTI/+5kekRIR9OuPbM6ZlkVYpFMO7fnx05YHToteoAvv64HikXMQQdjYikuFsYL9OaWLuOqUDUgmF12KBPzDP3QEh5vdxL+VWPMeq88GLLZLGK5i2DZvvDfC93C5bx2a7VjLqdYT+53pRBDGj6u6TQIy/adrCeOMhLsV8Z3uZM1wbivkfVNkz2qGaILuw3D289EIbi9MAbX1ulmIhdo9T2DgbDE+0byfHJkP5GrY/3255gYLzyAmUIWLvRyeFuvgWLDCdtuWbL7zWGbSvJHujZfHzFRu0o2tHinj1z0lqpTwvVcgx2Uzk9PD2bhu2wg/tHuEEqDQHHS9V878ALGuOinJSfWINbk10kCQ1esA8p6GMYNsc7w3KE5CbSUpxx0dWI1zO+u3rRJNBgwMWgqUUCn9SSuJC8aLGR+PPREHSXEuc7oJu/g3N9sRzDzz5OBbxbmE6wUWYLqVsf/wfi9feuv3+cCx60dpcC0s3NJdGO8li37vn4mfq0Gk5jqHP/S/JZUMN1ERiGu97LjlME+Y3j3EyB6RYL0yPO9L5ELx3j/33VUMA/JcqodCi4ITDu2IhgMKtK2pENjGm36nvI7GgGynXHqdk4ev1GyZMH4kzGXvVXoFGvaJ/FfjmDsyRU+c3aWi0D7PolT3F4WbP/djOvIZtJmIPXbpQpIaDSDDN2FfVFWYKvq0oUtYxP6pN59sLqcbFcsUjeD7pTrmw8upC1ZDEDVkIxVrVKARmsZUBe2dJQd4qV7c8DVgg3sRTjVaogkkk8g3dl+z11pQPViLCjxDL1EaLOw+d1CEitgkgC5jfc99kWqoncsyUllbsB7c+Isz9T077xmv+7Y7z7QJHspsZODXfWNgbf8wwct3bw2ZHdkfbSsw/Zor8OBSxhn5fzs+UJZwBMp39fBEXbuBE/5aCdby6PW5GFrt62gWukPY9/U3UT9XBBFlnuKWtTut+5AgDZ75+UXxzgsQRQNK7A2nRvq7ELlIHk1gNPJDzABS7qapynr04x9ni2s6E3DMACdeKCDw39hQBWJPesiOZA7LAHXyMM2sPWTKK30Zux21214OORSee+TD/o6Xozgni5oOVblyregnuwETaRpNJht8Mg0OJhwNcXooSp5/sQeeMFrMUgustU4YLCdUGuS3fHe3rpm3FflRgHtYvYJL7iCgUHcwcjXZWoY7JkI4YWDALKsjIbnQY7BhMFQliIqUpsG88JWYN2fX/9QPhLv4zzqszI/hObgFykB4BiE7CyRBTaJ/XAxo2vZklfRwugpVZzKKgZet3dzdQfDPszibhrlC+JreqfcO+L9MOevZ4KhsglbAXW3Suhsq94HMRMVnYA6e0w8klqA9Zblbn+Fpr2p0U3HY3RM3mm0UvN9UkU2bN6YL6YRMPC0aijZ3aHhbqhRJ4O83iXEUNfdX33z+IrXyYdXC2PpgvmM/StXbFMJ+OjE4RPO1RGQDZN2jR/AAqtIIVAego/6o5hkHqvFyoz0Djrc+gbg6QUhLrXvmThUfRivwRujzRFrLaLu6N1KNpt443Y6t5PBw5mx7HdngXnGFcj8I4DdcHZRDI+41XcwLwpfMr4UwNYZfPhta3ge/T6ynC3Us7JpYqUKwUuwTB+5uNXqEJ73LnJ46d2DjYOAH7So+iKISuwfCUjDQoxOnJ/vDnLnUbmsTxIbWzYr1aMmqSPZHMX747Ga1V8Nr+wmF0D6IpbJhHBoCx6qGVSK4tnZEkRFNE6snsiB4BNKIXjEtCZ5i1EXPjkdOnMLOpUgOFua3JA3HUyhv0018Pmb1ryZ6Kdui8qIlPAmZI8DEKgv1TGRGD95mQ6G4C54M+RMZNcAyQosB2xjFsreJJ1ZdIBLQinAfQAFkq76IkanpqgkXIiXDRD9cnDGgxcjoSCcOpOn1VaJiE4wEfcMSfDOM8lh9rEuKU7gRV0EIclzMdADS4c/4O7ggtcprbdbQFwchPlvBL/lX4e1Wh+Gy3qMoIxTKz2Hs/n83lsDFbRhKsgw0qN0Glqi1vnswBENOzGYHXw87H5yVzCVyRKDfAcvKBcopyuoIUx4LP6q7/lG5XTQHZCf8Pc4RuXqjZulk7uPOmYbIdInuwumE5zoHuRPVdfinX4r5/bgiuxdjeuJlyETtxx1H0tVK9GwT5zRlboStDKGAXGDnv5G6fYdHZVam08b5vLobyxwnPCjap+/ZiW1MsjODwKOOZuNg819NsjpKALNqy0fTJ+YBLYiEqoiu76hsO3OfRXn6fqr+UyObduZZRS43PjabbSehkjxHF66cMIHG/+p3sZF3M7s8Ct0OU4buCBqHfttN4tNZyvCuv+ql6cMbVFw4YaNW9W0XCHWsMtdcadNVbAN2o0tIfZdeRcQHL8MIFKr9wRV7r0g4rURaVDYnt+BES+Qoqwbq3Ro1C+ab2wIR39jNOUFTvRb8ghG2hG2omYYtcIZ4VOefFo78ZybihWB7vebxr+38zv5LZokeQKrgx05U3bx5Cx4zX6Igvh0CvZyQMo3zRS+BdByrjgBKyAZ1d0jZwSlDqGkQL70nwOCPUC12BEIbkZsyfXCC8pMlEWEOKOZ8j7fTK0V3ZqRRm+yyb65rih8w0ByM2PPtJj0UNT/I+EyampWLt9Z+64PNv12H+J3aoP1n/Ux7159ghUJOmEJ/wx2s3CWgBe1Z57K1ahSyEN2ZXKyxffWtQywaJ6WVkENfrp1RLUZj+otKAzoBkTxNYtjXjhTQD6cAx8gZLq6DTIUKEtLRKa+YB9pJ5rTWkFGVVTUh04pg6tGkrxLdymwo3mZpIDLAjxoxjgDEIsBBQrT53QfSMT5EEls+UeX5LqBA1KezsKCgCLzcA4E1jFRtzbJd0JDrAR3p5Mb4OlbsywcfOKK8B6Hb8Qoj26zVwN4oUru321Tg2WjGmfKGOntwWLCbVVl5wFAMfxqeDRGoU0AfkpJTWQ3jNlLwX6fXtphNAJMpqmoFlQpYqcCgoLKEVpbdvP2gUA+tXGdx6YHPr3W7Fo5/kLH91f0/JqvP60kz7hmLm006Frda1lxFIzF/KPddW+tG6kUhcHFlQoA2VbKMqzMIP018GJssDNp1QFUPmqDTBHD/THCdtNxif/dJrYZev4tW2EQpYvnkTuhLs+S2HipwGtBMtR7hZnkLoliAz+bJEmaHSiRmqylydqPp/rap2y5a/FY+UNbbjdhmdOvPZsEgtPzOB8okWm8/BvXzCw6VKRFtYvweFr/EmMFGQ7wuh4Yc+ELCvLAvLFYoKnuXVlQ85oBtViG9DFRlmTy8sJ1lRkZ7SEa+KHTprLqOdNycR6t26VC2MuKkBHtcdKGK6bdy82g3HUO+WHnuCOlh+TTmarlhYjACIvD0mIxj2Wpn9LzC+3GuWmoLVz7e3aiIjeUh2NT/RNFjxJn43vZUI5K7LYQXAjYbZaZH95tlwMxQa6ztPgOuJHB/slJEOJUEKXWVVuEpOVq8rriszvN38/a+vtN71ev92ZqFs+kFIBiWBxUqg00EKsUU8K7enFq+6USD73TbxPRoi6JDE0vchXY3v5dNBxejSiPC2yrKRRy0imja2kwVuwwA3wkAB7NPZNJJ+9OWzj25PoIP0h9v/zqh9PU1Yx7bTJGlYTI5DinC+ceK/3h2I1QytTSrzYt4sGHdnWY0GTMTkv3yhGVeCisMQ/3RpzoOvOSbs9kW5Z8NOraO63ZxyWuyV2Rm5x3tsy03AXVStDfBOy0FmVOSGbXnTrFil25n5nf5Edp+wK53zNxWLfq5vKrpKdyMEcpqmvAjNrPHnXvddVKipSjNTkW7JMfWFzE+qbUWLkJee549q6caf++mRnD2qb0uiV4Er+iviSW6JcLcsYWHhRQzyNZzURpUYPJd8Kljiv8Z8AeBa0CYDacGjlhmvIqzlupw1YK4kqLIsA40wfIQ9cSjEoIAGmlgF1svijIy/J0gjUwv88Nf0fG1kkg86Nyw34CsN/ZlovmwgRZR9BiFauwNQHRND4MERV5HsKzClrFEvZO6q1IQITyI20rmAb6QCax7S9pZ2PA+caFiP/Jsqx8bsPXT/xWI6cUhWdmNCO8p6GkMFwxyjTZ0QuzZy7bjkfrQYe4I9RP0C1Pa5vBNidOefoIQ8I1Ju5MZwJmYMAcX00whGACaoyIDaVhGR0hKx96uWYyoY9jggsMNXrCgMMNSzAoEHbnbPkgbKz7EKGwyS2y5CfRE8VUhHWNXxZru8KtIb2Ia17a2sIsRBbjFkQVkE4YIdYXtiIQYRhiR/zXrQzDbggph9k+3Bi3OoYSCxzjZIzJB07ou+WGpNlPW7E4xFPu5hxV1IXqht3+2A2uZsg4Ux+42gXlD19mm1WWhdq4Te5208t9thNe/UnsaVKD7yAfR2/3DIkP8AT+C4CwOnk7Yv7ejCwrb12wbIs9GoiTN92R6tWuSMAHlSZ7qjNMNMk1PqghkbYZUMQI+QBfIGfU4BiEt1m6sGAYeu58FNaFUQpp3yNqSFkBTZpurLHpi1xSLK9TRjgaXbZcTDE5FMM9oacJkp7ct3ONbD9Nd2JbFK1mYgF3HduTla6RsdkvosW9G4fKbCqqI+f6GsgxTmU5jmpKgEin9cRwHSraJdE36319KcAbf/t6hGhbb3TR/1veiOSUJ9UPtpI72Uc39dmb9TZgCSEKSDk76uWSt0qVF/Xf6n90nZCTsu33nCKQhEgcrx+grdNN53PyhAOeBvVkbVKjulyrdz9Ue2UdlZmNUR+lymBOYzxe/W6F7H3FThYDuUWrHzOpatPpyxSUno1FF/kC25FGdmHQtsUyHG3WDN7tNF/WdCDgGe/MIKtgWYrRhFHTSdse77Wyk3xkGqVai9BrDVEHZPhpJAd9jTAvvK7csBeY5sUFiOSIGX8BULOP+sbVQOueYy8qfcX5+ClRnbhp6QfKsn6Eg9iI6CXFVZj2rrsAl7B4nRI04RyaKjdaKCyL1QbbijvULUCommHa8PEMxrXgK18st5fmmAIBZgR9kyvpTXagUk6t29n5o6dnPJK0rYrIJHI3ZfZkakpMJU4ttfycbM88p3TiZE2960LtNuJAUWx7ZnFFdltH0vD6TLj4PI5uSgQJqQ4WUDqBt1ULZDWOlYQRz07EA68h1/3IP+x+e1bFdYpvylZuClEDESVTakgEWkDcnDdiqgcrKkTQCzBvt/Aef//ji5GemouQxrRmZwxmUJqhMcLS3lqMC5sIXZoSjHCUIdXGKrDJZM/LsYEMlinyJ8XP+VVPe38SNdoumta88Sf9G/nHx0LgGnjNr6/Q89rMmwXyVcoYfWcek5V4GVyrYoHBHjOXBSJnQy6P6lhbzBT7R7NiqyxmFVBTxffRoUI/vOq1e5RbQlAOy1nIPqubwZsbnzzp1f0NedRef6W0r3nWpaNhMTfMR60p13drjDbYVsE3+1d6zy3U2+QaiJgl0S7pjUiKV6wXlEI9JOeLnYYPUBtv2EKJZ6Nv7Ss3ek/rNhVceglYtDogYb2/804onJFZ0AC3wSsitctB8TSTsmDJWeeSSavF6nJ4N4iWUzEse2tRiwnFRVG44kCm+PLALjTS0jkRb7xei3C72uEoLRLazYY4VJbgsINx37xVTDD0MU/g6rxWGTLStiRijgdWvs3k5oywsNtE/JOW4JtDvzAwh149UrOOEFnIhvbo03Q7lr+lOPoKfI6T9ohwyXCABN8vvHKtVVYpti9UUSsbN1vbRndSYJDIh6cNXir6mFfb6hKCCwuKBvswLRyQK8FNOMzRT5YAZH0GIMtdrbIlAb2JnU4Fq87UUujZV4a5ZQjAlyzpzcYWOaTnEudqG+1Qp6W0cbL14i1eArPE4XXYyw24GP5gUK8gr63n4/B4e7EH6Q8rrJt47G79BHwG5xqqMZW21aaOK5GOT92jH2vcTqmGQO14OU0/o1/2nkhPsgNlIergw10NiQ7E/rLrTAyNj8ClVVgPZPM9FzwxpbhtP4nPnHp+LefRWpJWTPYt+fuOD1swL+4zENhnBki/ABiGLUoXqM4gQHD/NTW3O/PX4CBBMNqgWwvoI8Z4+3mg+6zIAw+JurEsBasAeKjiMUa0hhacv/dF9NJho2C1cLak6FWKEmmCSEsTPzyJ26PHsnBKPglemnPOwNE+jnggX7ftqKnfLT+WN2NdMXSIhoiGw6lIXcO4uRErCXQIg6IEoHhMuTLx/0XEzi7a5VWH6KXyS4c2geSUzSXxEiW+2JrD/dC1ClALo1rnkivvgpH7/zttW024GC3sfTF6w6TIzlo8GEZOTVRplrv4juxnfG+BKLzvzQWCspyVAVRo801YKpHj2WU3zmmVcSpfeagDFfnCNw6WtBU2ZiDln5RVW5nkVRSmu8oosif/oagLDsFcd20S7DgNDrAhRzhm/+nHVV3kTYFq1T93RLafkh5FExg+uHj7i3IxloEFmf4iW4j6DGpBols83q147QljyXoBej/A+Yf/L4D8kY+HuXz8P6rNCA9Ixu8CyfHf8iAGmXnAXL2pLB5yG+DKeViA4NCka+U0bAmL2lLwlCH+5BEZ8t8xaOvFl9tbaksxIfWfdEOeclNdLEvtOZPkdTixwFLJ9O/0L6Y2TB4XcprMCBv4zowNr4PC5GRMq72W6EPeIAYNaeAvwdoTICaDcaT40H0lMB1C0itkwRVWFsULtA1aV7ZDK/JCadU5bkay++94OOD3TbBnF0iHPgPfTSEXU6tAa9T/zpFzmd/+WxvLorQrajjH+lbdd4rls3/5ILKgKUi5xv+Q8sJrsylLf+q95sIXZvSYaev2cRWXP1bZlOrUacXM20zKzMgbNQHdsfYbkGuHO0E6zgYqzZgRsyHPOCz36MUx0vSCZxxEZiCgW1D0aGIFGXWBxduLYHlZy/+GuiNbgDxjffZWsuyI0Juu8YmaLzzeRPvjGibD5xylj7uqJhqfxj5+aXt9XkWkaNiidMaH7Umx19RWk+YRBu+qfRBOKlD3LDf/sHvTgFypDmOFMWipMxtj4eAI+SsBY29o548OY1vyx7dHnkNdgEJXLWurboBfaGdgM/D0E8CTdgHFlRshyRiAeiJ6s5Gk+9fuOk4BQ71Dsm/RUqqp3RzQHAFR781fHHJAProluJ01L9GQjThFqjMRj0Gl8I5sriTNEEq5RoOdCNz52JUzbKepdc90c6CkDEKlZGdbv3QB6UxZwOB/pztGuCdy67SPGvO7+V2g2CW4GIgOEc6A8bgY4gOP0E69U/6dfTOL23BM/EHCwq09PPrkr28afKOjk9AkVmUWwUIBY5aQVlTTZCkf3j/9Mz1EFr4UAJY9w9QPlkiFlw3NTNPjfJ65M7babeTsOlQ0EghARXkqYAM5eN7MLdaaTQFp+h/1O8ikbwQpLaRy9T57/MucJPdsnSj2s/ZOMwX7j0sorNI7cPXZQtJp/669vJjdAq/ucdDjUaWK2ik9ejevU2hX0eLLgCPwczWmixb7chdrSRgb/HD4+cr2Ejuyxa18VuaYA1564Pzh1x0XVX+817aMSNt+bXs5fQp8o7X1R4Pv/ysqBawYk7FMoNlo2tWftYbPwCkeGllowlRkDmf33pi2xFqSeH2qId5LV5Yd7OqS1ruaEk8E/c4VQ+m3ZaloUn/r166+u38DTnu+34QEQDalqrD5Ri+AbuzVe7mEjtj5XLaFWgn1bSabGP3j/6bBfb8+cNbSc50PHRUKyzbqJWx71znB2oOyyQA4/Ab67mDrRYCg8oGuxJ4KwuyTnSC5JKu1KqthdFKOSIUSwTITEVmYDaP61RRhF6tujLowUp2CAoVuM4923Vt1s43jFQt2XL/Pn/JmlJFLMsxBTotd8oJNIO5VrXMPz69/SEDjWQW9KJm5XT9E5RamQIkupgfkbs3D9dCsbfXRPExf617BXtz8IEwgR99c/3xmy9vzGF3MSa3qUbSkHkBSAZATrbNkOUjqoEgJj8OoaPPPL1VmN1A8R9zA29dX0QXek6pa+nvhpPJSgE+b0Fv6Tb5t8gQ6RpQRyzoiAhrP2kDtvutvZksVg1VESoYBNzdVsoUbAMrZZcSj//5aCOuT5dsWA5Gna2bBvvE2B0GEafbru2/Pel8Yt3uw0KsdkVFTwqwlCHjP1T0Y5SFXMnzPVrwMllg+cG8k4v+Wf8rSlGA7LPhLWoNkZxThcFRa5MoKmVchS/IyNNO7xdedCSsGoIC2pLeUEpk46de5tXDc5cnWQNud8gWSC+OHJDPf2np3KLZK0pUP/IjiAAepl9HR7BToBZ1GtBU0PnAsD55/TU9fOt6nWHVjJYfSv1Bl3rxYPSd/J0eaFmheb8686qOXwi0rIf6Wlb36tIV7Wp81Qa/D42KCPkrrdNxMzuE3cscEWbHu9W1U/zMUXWGRUZgVNSCPke3Z1j2jsYttkYwfuzFtAkLfbEE/5xuYmeCF7Y8GtKHpzvVgyz0jV7n1Rjv634HmFT+ZmU+i+wOgYnohD6untiKE8RgwfPM3Rysr7MEAoWmPUlouQpKxoWam/0HWPPwUrO6k4ski2u2MgQ53BP/3nq4qtdO04x/2NKQc58fWelcigEuF0LgmXPzwcm8Hq9W+k4HluLF8wP0v0Bzsm4iS2fVwotK51J118StnXUbmHl5GrRFjcEP4G4Ps+4vZx6vzml1mbZk71gPGDcaSvhjNGm9FJBQrUnFKnpYMfMLdlvjJbmBXfb68eZc7O2Wpvz+7nPTV0pfX80FTshOT83H5/95TV8jZM7czg7VNVRiCBmMYT6+MezCVuAJWNA4L//ZrUVXAetTvjSjRmMFZQPFKZ39iCTj3K8GrMYfhwEceKmILNuxf/C3VlAhWSRPlHwjhIpXli1UOtxaW1906P89a1NxDqUYQ8Lsk12c4f3MlCv+waN9Zbb81RRlm7im3ACdZu/TNXj0kPojXYA75G5p+6BeuLmPwSLr88OTugvssrMcvZCHxB1/pKz2R+zxaaybGzk//tdomHXt+rdwmvv+P3+Vnb1aSdrYL+z5oWuP2cCrtlpNb5pk/OSp2IwHfFyHVlGxrR22aoAHWxF6lohgnXfrCasPu05K8298IKL4OfWIuwWy1KonQk88ICuoWVfaZnJA6P7y/gEbDJEYn/pd2VP08u8k25kNFpjlU0zgioUOC71dZbKPBpfrTyQX7ZGjebE+/bGvP4XM+WsjYrHI18k2zviWkPZtVcxU0y/nlUbPpH18gl3tVMWJxvBq0CmnFPca2oAqDTXk4pyP35LebIRcLSOSFVrx/m5SMXiU83mMw7Xy/VK7CmxH+rpz5oZxoqg+zmOwInwspBirGPdTbWjQhhaJccHlj603yWDFRVHFHAzEnCvnkofTFhfkG+W4Aq6zZ/MF3o4srH9xsw1t5AshS/mluN/Qh7rUxEklWfZqJ8Q7+bCtTUCqSjjoRX1VQIEnpkK2n90ojsrAblC5C1ndX/ozFFl5cuf03NiTBcu698dVpprhihgwesqXnsFGYWT89Toa1tyWD+6/WNFKdopwUaJVjAuNYnulA8YO+zsbzKS6Z/TYxcKGPtQ2tHW9ZY289RL5UVD2WyJGTgiVSqvMVLnabLn/ulJU7A+Lx5D06C8rxoafMpmQp9nIEGioV6wmujM4pqaJazHleMM85zLXEoQK8ZhiAEFScJ2J4Yt+9KtxOCNytILL5SekSw+3YyxhQNZmBAhS6xV/iBLiFFTrtPonF0aQ2B3xW5dRH7bxv5eMnPxnrL1uZYUCFrLY57kGNFSMKg0FskZNYmntbOJJifQNv81ehs1NsfcltJ+87MXznFO49MAHkUxTbEBngKgGWtTHxjoGXELGKTLPlQEbD7sS/SbuJm4bUfrZE02bC2unrTC2LMQJ4IhyPnRAvOhVosQQI2qhXG7o6PH7S8kpcyulmMzwtShfrZUwjhDWykH3uZfAtf+dBnIfPXvNjcgrTmv0z+svo/aCfgqv/mflVzLytHi0xcjZttqGhVGR81Atvqlv9UDTSrn9geOKzaEgy1akEoj2tH0cdnTt37yOcr4bQ1o03pF2R9JJLtnZC11h2nimjUXNHFm/RK+iSNkV40sKO9ymLLmz+F7qYB//YM+ASqmvKcS/fV4NqOJfBxO76T+6qSlXdjZMhr76PV/+QNC6jpIAEwqfVUD+uXULDvOGNdkdxLi3upkbVCVWVmp6bSTsJYe0MFssy+RWZEMDAFrxoYHHNXiKL1KHqMA7qo12XOzRXsP8jL3lVdZeQDgFWjwx1elLh4CoxRYiwgduhJ6KCaHCPwChQt3H79W3H3vttEuTn6iRB04Yowk1kMQ/whiufeWca8AuAcFk+APSJSh3ZklOVhc8G1y0dE9YotGEEdiieCaaCuUOLdiu3ViQcnkAe1cLyLGe0Q17Azq9shCiunZMhl/UC6JQYzRZ9PHCkZX5BtC6AFN/bKledOajOgSDBAfMer5s1/xaXE7NWPdt1RtPbm/0N4AC+cKKS/N8VV5VdIyiSYYB0MDOgPbQkRTD+q4fLorRHYHd3uSGzIzat0tcWH1cijVXU37RtTgfxdW5XVMprm02tlNdU03FBgJcPHVvynnn8OjB3ykIzO2XFIr0WBv/itvObahnSRcGHygbyhbIJR7sZpWR6f/2pUk8utNheU19MQdtRKyShBW2d6ffv3iuY2R2DjstVnIIy1PGgB2/AbGgeuVXmbf4uLmCVIEUUebtqfmjYv1ZnHOLuAurNUmH0ulwOVg8TZr+HkWwS1u92gF3XDE86kPszOmmNIKvvW6/9hKbu/au9a2YsUxeTkYYBsXV5Rp6ruqaeQ3e2TgYXkQC55hJVa1lKJGnTAltQBwSapXw9cGWoqUK6KFasr/XCJRDX+GV0web27g7XUjFG/EkxhjTLsVlUTxvgnxKG7BxsFaK0ZJ2VB4+6BTIN6rzvXmjsa5KVt3sGRdQHUN1mhdiNHa4osTzXQLM23TCa9ugvbHDUobBmJ53cCMdjK3QVCt4i7JVT1AFUBR+7X9fZzs/qpg41uGSS6uSyIpo11cyIcaaR6cZTTBFrd/veh1n7PfsUQKWp776Sh4b84QmRfZws794a/OqTGlUUF9Zaa1kb/xxMhRsWD1n01oDeXEx4eH+yGLGQnmU12s67mUObZ7dXNjaO2G4qMfozg7TELeeVpGH44vr2gYIKMe5LpwoRa0RCtslDkPQ3d+UqyzMQP7iU8uaVqcWy4Mz5uCUmXgMCAmMGZCaAhQKZuGRKVnWNaYwstZPg6+9dIxuLhf4hs0L9VUMxH0ucwHqHtb6SEPyb5mbej8T6OhbhTAg+tz8IbhWMpPqkbckOZx56ue/b08glmWyFYJolGUvP5gFmJFP4Mo5tni09XiWFGe/bh55ZVCXQbc4SvddgbCBWhdxpWF/qfNm8AeZmHXuCTTx7rpNOi/pSQv05IV0n02kIse113p7w9dNtC56ajV+/jkI8kjRC5KTRQ9+Yok1k7iOnifDlXmIdWsd55Nt7Mx3L+H2i+7O7IjHvRE7TNjVsJbQkToyJ/IYICLIQpEQN2oKBHkPe1dJ7K6psnPHroNrxxttU8vM+wo/Kjvlq1cumwwYCuevW7BaR9wI0SDnbsA9B2xMnuywP38HwkR5QSjU2uNC3xfmx1bQSe43zbWpGCFFlWJ9Wl0mUsYN2Qm2yfG2qwrhtPeZL5GgC+kY7hpB2w1cNh2Z4nKe6EE7qDdsBKLkABtmeHy7N/rhxyr1byNcDlylzfpVWoOzVG2welVFr0BEF1/6ZCPmOieAIOnev1wZvAEJfKiDTQlG5ETQe8J/xE7Z/Q8Wwm5j6Mp9kMFaDMulhOsibYq6Q14FuscUrcWUrEp6HnJs9A1UDE2BY1i8lqAMKctMHPY6MPezU36SZmp/Md+hMTZIGhjEMl41hW6/9859o4gte/kIyST8UdLcur9YrJcwYUpRTATkWMO69vWv3bP7eABKtXqCLxSgrqjUf8ttDFhkmAc55zngdPU1Ns0lBfObbxvN2iDXJTBgBSacZ2GDqlURYMQMnlbwnCI+k6pyRczJ1RsLL0DDfhCJsRTJwCIWiOVEykg8JtF6wLOsyKSQRXS0ORgSLX34rrwXskqXAg+DypZcp2roVnwGKrjbYchxfHUCk0+GxxsdxBquLXeXTw+5MEfkLX0jeMLr1HfPKy0gyy+5KsyxarygByDim094qFL2ekVU6xgTe64MWhBCFOg7IsZNMuuqWVUHMt+Hcx5cN3lb2ei4t795OABfTtHW+K68mc748oj09RSbfGHV1d2XrN7pF5fjiPDolJawXealsE4aKhOlg4/K2f/syLbOAL+dCD3xK2L7m/juw+5F5zdl2wu4eKLK06LeX6YoXiKDKsB7gftBZexTejoCdt+1Wn3CcqfxwS3GOH7stTfAxaLs5h42K92tzKbzyPk7652FwWnlajqAH2HaWCiryKDdodmr9kqyVF0B0G5kJlxMSldc8tb70BPlCUGqhezvTD3pSywUcjkA/JSFvUfUzQLJlGtYiMkLSfMT3mr2ArLtlIq5g8GneoiZtzv3wkUAArSmL5V1rj0ty1zYorv0P1Q9SzCTvU45PYgw380+euDRr7fwa/pMWgIdQXz3TqfTtlgw0guj4NG5Uklcc2r/W1aoAHpaGDYY8KmVNwtyUqeMMKiJ1wIJykWSHKNjleacvahOPwVTu3Wg6rPh9hqTzi0LOaoVGIzX4j/2FHCzyeIvms4Qv/YWo16pTQnXAP5j1WRx/cuQfXU6gsvXRfvvvhpvTP56berAAiTgVU/pwUPZ27lSHpAQTZOvAJbftlN+r2Rn3q+GRGsy/E2Cs/RYOErfzcdbxlcxu5i327BTETKNKCiF7GsN357iTir3VjEkSQam2fd2Sp85V6Z3sGnhnOHBxy3mzzhLsi3asvVLX58P5d1y0J2GnaTD0BfU9+SkFKCv8i6wJPGniB9b1mlwHTRY8GFLXK99mZ7OvYOt80y/08n6btB2fPfrRXNvpzfm/tnQUvs0sEBaBhZiQF2QyqOm+IRTiAD+Cu3NxsRHT959vkUn3c0FWP/i2X3MIco0nQAY45HShBWyL6y9gT3Y98pqG872626I7u5ZOTP9Q4wLUyP1ltdNv6M05TkY1u4ZFMa4HRQ59pjJIgVy2dRgufJzbSTKvMtBjpKpLhSW6gWVWDYoG2hxwYURo97WUcaUkCbL39HaessAyIVEHEsZE8FbL6qno4zfwIhlI5zBgJheJlhCX3lzC+Avah7pRJeQ/YVu0X+IMb70pMWkmAJj3dnaO197jw+M43hjkykoApog3ZbuBbkFJLawtpDfpMhD20CYqIw00S1kWyBBm/1eYQATQEIzlZPy9/eanv+qCuQ1zsH88FqmQZwlFEbAmFLKA36/1ELO2N3hXVKj4/YaEchNNtd3GPDqj6/nvhfQOWW3w3BfJNasuhTQd+0NoGZUy2TK/IEoIXtI69mAyI6Q2FcEQ6ZMwbGqSmlJBWSqHtimYth32fXb2HsI80rC6Zih3b5APidjVIzErw/ZcraQ7cwcoPVP1mCWoWoFWQ1CW13mn4mz6iHdZ+VEgDUWTpDJiJmBDlY9KED3x41nitnEwizO8rnAPdKtmDkhigzwTb07pXjr9i/di7fZzS0NTFbFLqyO2oeb6Lmh9yoNuPZy0XuMWvvCg+0bwIVHIsvoQsUKaKVx54rkLWPcB/DEFwwy9YnxMmKRqjQBZWnJF2AoqSzHAmjuWGmTsHFg/iczfWvkz37Hv59rsr7uYEWpAlQ/yHbgJfPuGGWeedHt7YNA5XdfiMJW2QzaqDHC/+/og/QjgA8HadYEv++vvpjJTlXPI5tnJ+v/ONuTdBQqgeNwJnF4o4cIHI956Av5qoQ+BO2oLaP41NE/bpMt1uLrwYz6m0iUOW53MzNprBzH8c9ufOUzszVZTCzdnchjJmnFp6BAKQkOekrN1ym4Uv6X1wfYpcHmaNQA1++JgFbqOi04je+ULmVsbW6NpoVsAG2bWLsICRCKndqPUNzUSZIWadaiA14yP+q6G9fQdfLsKaM9u7miWsyhJxHuSWXNKHk4g77SXmDuONv2AlYJJHtqn8YGw0/kGyZRCw5A05G1AE69l3pIagOBG8dNqNUrcgVVjsYb+wPwjT8pYY/ZsGIqY8/5pk5n/KLQk0WpNgMYVGSKVeqU2n/6RR07E7WGcvDgnrdPo8/9QTMzG69TmD48omvIuMmQ3fKnfqGRmx/5bSxZI+s9xP2tJ+b8W+zoKIHVmpeOMfeEmLsf/ROElQyy9GP6HfUR9vKu67ILa8f3O6jsWUw5qNcTojax25gywLBau5FDUiBaBUiS30X5seUhC+uq8ZqJOrqG+iQBlhGEDvy3XSTp4Z3EBTOrKY6AMHYWauCplufK8iF96EKKGIyrNyKR0hP2Akh0mfrPPeZKfx5WWVeXURYoi1z6PwHs1AclYFoOLr7qzuF/AJcyS8BSrN1aPnk57bYIG/2ILVzFLNQhXmeRyXHXstrWhRk3Tjrf9kXmRuB3HeA4P/LER/5hLkg73U5/pl/r+TEAIEdUwufgBmfpl8ja8rc7Q2uNSJu2wjrRpi83n3CiXouGZ6i9yrthJzgX+tZ3K/tK9INfwRVJbjuRQJYyCYgH2Yw0m1hsoAshASTOBxcjGH31B+2Z8jZ+hAHvCrC/+R+WUjsq6p3ffiA8QuKuUstWc3Fu7uLMyNCbm/890m8pc+i7u5cufXKd9YLcmqdXv7KGXyvZ/dQ3jrT/Zjr4Jzw69SoFqPw2wrVffRBXBF3Cgr3Sa0wIsEek9Q3GoEY4YsNBT3Kh4afERGeQ+OMXluk9oATrXvUY8IXVhIuY0teUq1rNKbCOztWuCiE8s2mkbpVGrkm+8in/3jP/aFlbOLegsSzubGobjfQwkXqg5Te5j0mXF6eD31gEv/ff/QHnoa9JrZsmV6wVH9DOY0ZuK5jST5e6NC/VgMuz0g2g+CAhy7GODuRfJl17olFbY4ADoUcDAI78QNiadb1+Ybn/dvhZ6TXI36M/BP+h73zjOUsRW+rBZz1M5SA4+t8GpfLXachaVDANamqE3Cq04Ti+pbDL2vLPibaCe8OY9z0AKlJ9lkYjs1wLy/+luOEYnGw+fB0Rs4Oi096XP7munwmq7juDtc7fAuPVB5HbPrVzsnN/LXDAfav3umNGgXKoWZqhb03WBsLtG99dOdwkglMtti2h9oEpi8qbFtxuOP951DmHXQxnYp066gKEjwAa7gIu5NzCHiiZrd4YuucELC2jwq5f3r4wBD57CzBD/jZugcXc3q37XUffpR9FK7kXvnff70LB3eMs6rIfCOnBD43LU8oXxUX0LKDXR7NyXmJ5RhH4jGqLG5gokzZh6o6U9Pv8cM9oFV47MIlvYnXkJ5TyAnSfNwhNsEKAwItYhEHUdhzECR+xgIkmDFQEnoo5jQGSpTg/QQY47++TnNigtmqHKhDUJzmjbBFDejIEb5nB8uIk6Bw1THM0mLHmxyv+e5okeKPcgq7JanoWXg8/KNaxL8ZutBkPGwkilCio0fugFGIyak96Li0W60jVQeHoJ3ckD61eVLHmYg8qLiYvT0mWRzWuiO6Tu/Lzpz9rfPA183vbuTB7pvH6Bqa13jr/s9jIfJYJYbpkTuGK7IROd+USN9A2/WFpX3wsqJWffTJc8F8dSzG+ZWrjVhzE7JuIpUIfTvcZl9rKtQ6UpOsD9XIRUnFavsZ+spNp5ytCTQAa3nBSb2gS+cIW0MDjrbflvdsgbXhppa+aDzvB0XS0WAHI5RUg0PYuN7A+RKduLm29hVFdgas/OTe/2kZUogNW4oHYf1AzYSo01kM0m5jcvQPJUSdvubr0qZFwfjGKjyn7ZbtHg9aIMUIcB1OFsm8ql20M9PGsDbpAwq3JvvN9UwP0rOWmjOzObkhV8LDp+WM7BrmjJmLpsaWPXn0aktGSpZx+QNaPQTvocIJDrf3K3R95A8GWC6zCSfWGRtvsTH9V2nrsRpu3DvY0Jk8mxM2Xsr56M0QAQn7Zddp5/gLMs52gey93Hc0WUzdEr3z+IHdDQ+S83s4nn8BDp/7TfGV7NWLyNLgXu9AxdxHVI0zM4ZoBIBa5RYOTaEw/lz3NfyXu7f0KKXE2EUjov7+1ENQqD64cWffaZeDAc30P9loq5Q76DULaROD0BERlfvetUg9euIXIa4fYYIe7MlCI310ODsCLpfsx+8ueiPDvRI+7WHl/Tt9DvLZQtQX/A/pyuo3xS1oaMzWxzb0ivViiRIyV/xtqphUBy0i93WM05O3U5XduN87CGZ8L4RKwRs3uSeT9gZdS/tnCN/kcxHU54P31HRPtqZO/osoIq1Qt/ZSos4adOfxZB5hgFPg8tkEoqA2fRmHkaagicYTrZyAxsQ7ht3I8KfV+RD1UjsGUjH/wcJ+cwpd3OUXyXC0HYKpWZYwFmT2i6f3CrideqREqBuS+W6UEru39QWUY3ZUBb8pZXu4ZvMsB38C78z6c7m+nO/M6o6HH/UzIBOc3LnTPFlGi3C192MnOuIafGnTeybfg6aGvTmrQ5lh6K3Y1+93arMZqYKdwpcIwbfH6zj7gDE1/RH5kJ9ARiM2/KQnVTsG8l23AjHMSBUbpSPpwBbNbdTxL7gjfpQ4Jpmqc3U/eY2t7om5rtZX2EAPYyRYz2uLJRzkpfhaWe+iXdZSznv7Gika0SXdSOgSWGpuXbdQChcEQybAlssh+53obzoWbMUa3EL+yd8Dsjb768i4Mzv0MkTtfxf5sXvoSxIL8UNHpPqzJXf6oFcg9f/F6BiY+xvfB2VzmgJfdeMtKhiw0bfUYGdBSLCTUYsjDyoHEz+XsmCshYoOWw8XL9lPxPYEhTVCW2mFAWnlQ6+sk9Wuod1Begtw/OO+kzAsQB8m/z4zCa02m6ciwyR7k8s9B+6FPvVPowC2VbtS6+Jb0dWm6F+wikjmIdsXvu3eBS7aTyCGH9y/xCQ683ITZZJpNS3UKGS6ee6Q2gyrGfydmR2VtNd9ozxV16pmgGxXjOqD20IWtL33YdLiO/8+sJv8kWqmMxGt2CJ7JOTjHM33RGzkxgfuxo/VjaIckLkBaXW41KSoeUhyFD5V/n4NmF4f5PFJbkmEtuYOrbjm7nwddnsMbW3DdP2gh+g4HQWv+HpgnHftj+ao4GwBzCkgG1Ft85Qamsi6ECpR0ahxKZusXlqZG5Nw5kG2yeXLBofm3Tjhba122sViC6ObbsOt4FM48p5aUi++9Hmvlv6UvW1i6KCUdnsgYtOffT81cAdGDdC4iba7nipcj6uNsIwRjlndCROxRmMQ4Tnz36ubP7/8u7HV8TmPjCkh5kyJ7/NwOvgoed2F2xoU+sklWEJE+HewIm3gbFJibgZzVYhsWkr+wrgy+LaoR7FdbHUaOLK8TAvhd33PPK1H+ilzIH7cZ6NCiq0KzzXb2zAPzCJGjXn/6J6tYzRq/9EJw7lkSIcc0h7xlNU+nFQ1vvJm+F8u+bF/Evjt4+uZX2fdI6hiFUIxTZhKXNchAFQpgHs/+FyhGX3KKeo6cxfc6/3hH4nyn1dlYX/IJVuVWVtJ7gBwlfWaDPBLnKzVunpMVN0UCTjF22sP/TnXkyufyK2PmQf8lI4spowOOLTL7n9OKIBfZRCZPaNWNghdLtl3ErJ/Cx4z3GLlyCbC2UNKu9OFG9tEQwNo/Aa2vf1dev4If6JU64WZuTo45q5lEbW4Pt2/vlIAlH5ZCWGO8mCg45R5MmzVv2h9Y8nXlUWlj4utqzFTVKTFHmzWElJgOXQX4z+2+dO4TkNw8U0QEjhYWJDAPP92yb+zsHD00ZcKzYavNShjlS3oXDr6NclqzFIWoVZ1QgRMkFTQ28sVESVnAho+SyQ7TtI+fYfFvK4aoyyj+un7hfNj5LOD7mD6C1I9b56B/ISQmeTmmYYTr/+jm3ZM2S4CptPnd65BL8a/nAn/Nt7QpSzn+o177Rf/nG1yi+fAxBUEx0n7ODH8ouVcaY1PXhKKRxryY02Lxg5ov+q0X4Gb9D22g2uFnH9jtz/75msL6NqbtbYsft0fGC9K37Ck9D2VV1KZJRKQjcnICTFUJDUZCPjt6BaGuw/pff/zRCF9CqAaDEJvKhaUR3opCQ4wXW/f+3pMRmla/+vid3fmb9dfc2v/aaVwnvRjeDGx8mWf6B4V1ZI3c1w/bgEl9pVavVhnyhuZF7UsvDlfGrVPak1PEfXf2vPnpPxN7gYWU1rnmDQ6wxlbWwYJKIEfuWXVq/e/5HyDwmJW9wP+tH4hntuG233wHRs1j7TaQC34vTZkZmVefC82SizCGqYEiQijDMvHgYAE5+R3+piYL5+6Yo49Nfu/+ToWF+2yhEZ37OmXIfePBMPy3SF1rH9jyRPiepHk1meL3Ec2i4Feavifkne9dYjJ6t24vfu2gopt22eVj+/dB+eoQWQgdArJi063ve6KrYk/06naIFo7cOXROADmzXzohWLyiThpxp7I5nSfKM5M0ZPFtedg8AfNm/dR/MFzO/Y54kvLtYUf2n5WVZ/SpONb4UPAAD89H/nmyDUXi0MqjlvNiXNkELf5Pn7qvS88hu6BRSMB9YhKrI0XdAaPlnS8F0+gVHIEB843gF3cO+fWVSqFam8F7J1xVJjxAhpKJbrCLp6aUM7j+yV/7Utkk1lvBO8igVAm5G1dLuzXWMgjYaGyz7/R+/S2AGj26D/Dzq/cTm75/ZWOphFIMXlw6pR+zHJ4+Pi6PpqDsl8uSzONftnnBRCjGT2Y1Q1kclMoggsbA7t7iREkBT9QJh5ru16t2mPTxuU8WVxdRVtb7r/U5L7ZxPU8JyVdybdjspqaBEHHYYiN03KIllk5l/q4fob2LKS2CffxYhFZjHSPxRJXkd9g3itNrJ8HjjGY5LtOP7N7tyFLRRXL6P+v5IF//xb4yqGM4TI66a2SdZWu/9NL0fJSCTiK8ciUzLSKsL3gb+6gPiH1AvX7jvTBzzLW5gWS46g9ADjA3OQ7+WBO+Z+oICNqbEkTGvP/rFch93we+h++d5sf+PNYaCGgTf3pbENX4RBi64RW3ILZqocwrrpFBUVtXhuyS4+2HtAh5seZ1vohDQqfbZ0XS1kSOLptnoBCQElGWFwwmQnpCx/UYkrHgR0AfrpYhFoklSkUfQYdxDzR8UmES3a7efM2lBKuH//3+SYo5GogQugatafm5Q1zE3RxufBhDhBAqyxdDpvUeeJcsu8ZPAhbBzxAH/cipEp/+i2J/Kpd5p6BuRJvPofhKkz15mXvezOXV00YTLy8z/NCFYwR6NKJ7LhfB7G5zuP9CLWigQDzYVvuA3KchfxYAaPPfyB3eQGLxw5qbglKG2wwC1L4tt2/5EJ1lxKNThZL1kWUw+3TtvYeIFP6l0L1BtphWpyS9vCBkEPAVr8I/lGvL8K8xlDqmD28DVBTLlsX1LSkPqHxrBkaxLkFi0deAZrbmOXuekCrQy+/Dkzp6aY+zzTWsHYGNhPPrDaYtX8vbzgl7vK+7/MoBDzpdH6yM4FLMHfKovV/D+Ai8C2clkpyFIBz14/dvyLP7qJ6gxcCpD+JHFlSFRJuTZU1BWioXttfgrOqfvzXKjgf8WgDvfrxaYDM4F8u1hX++BSrnGxHkUpM64q3LiOl8hRQTwIh1LKKSZ7LegEQTnVBevJZyEjD1HBArfDmJ66EsNld4QQDVdZOBr4brhw+WzMfdhupyQJVgUqNOVskmsCm1hcGMT5+5Ozgh1VMqbgxcDCOpxM40mswGps4ShyUr56Ttqyc9ULK8C/barhgqwg4UqAwcDu3vLdNrnOLnD0jY2e/bN1CZqRHex6VRK6Nh9IipOOAevpXKRSY8rMYBm7KTHTbBKN6lyhAB7eqfaLa4Balimb/zjAiOi1EhB21/WijZ8z87ysXvSlKcycrelsmUxXOkAjvaOofLCFMHesCAFzL7d/lIzC/W0YaykcpjMEtejBrQ7w3sZfT6bfHvsNfQrzkt8zBC63gVtQpRltCYPWj2d4CZprqJpE4Nt8l0+Q9Gls/dYepgsyvt1bfYT9GBMPiV57IzwJFnG+tUj00NlCEYqThF7nLw4SMwoKhptgV0WaPkwiKmkq4dTn21efBwaiYd5Ob/Y8NENiGrXF4iZbq1HXWvPQ06J0yrWwSgO635rF9dlTL1sgcWtnuKV4Av54O5x5d9eOd8ZHdc3NsS0QTn6hj78/9dWnLn8PEXKs+S3WwWklsbDZ5t+wODqu8Mk6c004U3C+dnYWnn8Pnm9+0gcD0d+WWrSjpIn3r1xVY2/kJ87vcLXMQe97/xCA/stWZu9lAWeSI28qnbuMNPG6y8WjyPLwCxmcoHSA8jyHHmPMRHO15iWZQlx0pqedmsjYutHBaI8vxEt7V10eu9wRM879fzm087XouoBbPY//ICZbfv60JcNAFjjLlvz6kBuKvrpBoRlv1o+uG32YQRwu4cx4rCU3L9QYQffMkiF+6OnBzkjfNiA6538FHbBpr/5oCDjY2ecRnVMUJ2hRoVPneMF1Sgljn6RagE89hUCfF0WPrwO3Pe/fRb16nyaK7zWVv56MFar8NOIuRouMyDyDTaGHjbcGgAjL0dTXd5RtSggdK7l0+x5KNyVwi/jHUurChydUV5Ckq/fLNJaBqea07SxXBAf6Gn8+/JMjSM5EXGtUY74oWvRJ2o9fedStGoTuT7jPMc/ttbp1qrO7BgOBp0t9z4Dag+VDy0vZ+MkhHC1bLqnbuMw8mcqbjVECv5lJjdn3b5qOfHZlj2ORdMGNHuwaiWYwmBB4GvwmjU0V71RhCO9y1C81De0gAKGZGPO+/CQB9P/l5bLfmFDQkVLk4TUlpFD3U4CdJXRB5f8UoSURWqTNMIKLwoCrwx2meTqz22h3PyXMpIc4hfgMaZ0nZmQiXGILW2pF/fo4mbWdrz1Xq0aNLK0Z3zYQIMOqgh2wnfbbs5AYn/KuO/me5v4BhalXgasNL7KwTWgD2peyoy8mvrhAEy9agGZBiZMJTPrQOextLFqnwRlqS6IqEgP8aLcl2BT11P8SJqz3KM+e86MM4J1So63rM1vkAip/ZVgk0W8R0dqbriovdNPXNnVp1ChaAHw4UjWHHkrG7t3Dz7sxqp/PRffqnM1B5ua6MwzrzKxzWkGriOVCMMiANEPpJU9rlH13eir4lBa2+0ZQdiWrCBSpdkF+4+1FqLZ9Zp7/LxyilLwvNA9+lYv9OiI2r21m6Nv5OPa2ozFRvAZqpaBY7FXC+PDm4085UiSAiiLLLx2JwiQy6wojWql1AkgmSIRSoD+X5tinJyIsWrVvY0GaULObDH/unIglJPXbpLAEk1BQx1kMn7DaTBgRel1cgKWuLaZz1kQsTK+ZVaiLRdjfNlpvFfdVKtNpYT1+UzdeAaI9XAFueh6OgL9k906t0OAylLwmwf8NH+tdImcI2sjVNOruXTigOw0OBbfhWw9sNNuea75lKcglbisSncOqVnH0MyOAHRzwvpvI0cBnykaOm8rC7+LradeGy72/epXj3tzbG04YguzI8HoYDAQD3gfFCE+tOtxcdMYAzsiPQbSxDe7pbkpizTlyG7WOMue6pPDXiB2ISsYDaWtQXnX3mq2SShXdKqO0sR2NTq2h7VWKl4i4wRGFCSrAogXVVrkOKr5V4Ne6sKzy4RvVy5VeU4g9LACsS4jMl2A/bgVSll7dDUamOAaFrZ/BEWhId+bPUQTpeoGaDm4GDHW0+Prh27h6Dlu/JeCTKMInMoJlx0DF2eWdSmrJI8fIPBlhPdbgStbVhBiNdtmC8rfar4FZqJhRor5ZswxHjaV9ig+cMLGuwWY19DNagqZSumoL8Kk+z5lgljEd8uTbdP/4nRuJpjagb58wc5RlGY+6BgOmxLrAwS+nA3YurQEbjeDXjpnS+zQ46TLIvl9usBTKecXn+pF4VI5FaoBwNk91nkGl9EDATj5xeM/8eBZh6Z/BI3lfjTBf1PU+LH/9iYrrbfmHlrL+nNW3UNu4BR8KmKfTj+/bujvOp/h5zgGb0m1riscpAxux16t19+Q0wxSct37a4Rxo2GGPEPjprLW5njc2bDfVC/Kb/0lJzQsc42X5giz8bWNm63tfuyNt8SLABJKAdtgpQqNbRnXzL7+Wo1XZfaSyAetmpTlRbuiPjwq5RjLdcsnnuKJ0hFL4OQeiS40MiqxESFJzePuiedrWSzu90cFPuD8fI6NhHGdF8aSJ8BFOsJ01UxTaJFIGOiYxUP1g43DlaAGgj5Bch/851LQl93sLDyYP2de93E/agJxpSBybGCpEl1JgPMIZsQZKiW35GqckWpKpWsoNQErqNkeBBmpnhRqSMGHGVtPpFqXIajFFxm/v2hKacSs6Hr1zMwv0+PqWJ7KBzN+WvzYyC5K15MnG2QeHzWidkBRYe7Oul1JGd0z3DB6uOz97mXfPeTYewpf7eziFRlc387vNOasSot2oLJoqwEqDpd61xrAhgt9GzoD8fxPGrFx1DwUNtDa/ac1yKVVzgw75wAKEHH4SclVzr9za65hxFhBrcFNtJvTgyQAULeCRKUKYpGcKTHqmNZQAYH0q99dhtOgdqpbyRlKF/s33UhlKey4j/fX0EP5u6uhLBeDmId0Z9zkdIHgB3L3b3BmPu7PdYL6sjpF0i0/VBPuqYDSRUMyixR7zES1iVXdRXieBKX0azforhLXpg/HejgcJECwaBtNSB7AB1Bqidr7SLAYcQYfCqEJ3KKkbSMrsE2Qu8OMO5kYX24EUq/7Z3YAW52EKBouryx4iwfXVq91gcTQl1W2JH9DqFx8SshIgF70C5zFRI6m8bQB9onM2NQlbepVAEEljjjamJj7rlrFHIj9c0uX1IpoI7cq9kwy3ALUeLDgildRTd5l1M5c23UkN48yJTOee9tYK06UPc7hzgdF3ZxCAnyafNO/iRuVbD+Faikd3VSYQFbBsgvKO77jhJdvZFIz6Dqc+cN2S5tbHXxLrq4WJl1el4nx6IUQgxLpUgArCqF9EkCO6Wdear/QHWEtKhePLJB8rVrqaquqX5ZaCFL06g0tZ2mfnS5MXXqN+okePFJpHyIv1RXYbWWmkM5y7kL+EuE07dmdC3VSDMmXU1cYsB1PAnGrPSlzKofe7KWz8mbg4n612uA7LCEp36WJtWns+kKYNVh3civQJLV022b/fiTRGFnt9pvrwiKo2toFBRmY0yQmvi2YYFFnr1KM14OLQ3dxYDho9geurtF0ubRlp7pHo4unQLkCw0Uiekw8wH9cnm74rOm2orSwQ7Xmz5aC253u7nejOocVmAYjs8Xwu655wF0sxeCoKJJqnrwFNweZ/9nxnnlfrO7NWPx2LIN176ajOooK4vkJdetVlmvoiJ4ZeHWVHe2oxiUX+34hbyiRmSZmdkDR9uT44dXqkDb+TqBsvqiYRLA8Een7vkY7kWxlsSZx224572LFzrcbwimLpOW+kqDLfOP9rJ2S+l/HFkQTVlhwnL9dXIJWgwpkYyzf+KX00fP/xLoGXFaCgsVipVIrYyrTpKUqXd6dSa0R8ltQq6imr3Bj82TJ7AZyIUh/347kBJ9vTE4TLUB0VInqftCIlPBlUhVu6laFEsLm8om4DQ50Jns8ZON9cHvXDs10mqtdzPmQNDMBuHgnMkLsZwZ5+Z+KnIVJXOso4FXaF7HSc4BHF2WKiilrIDeHbi+gWN7Xzm09slaxpZqjVXIYrVYRP6oS3GCeHnlyfhKUIc+xW1iO1PUJGDdActLkJGlAxKrfiaRb+l+oqqRrmLQbQd5IGhC+vB/gb7+T0zOBBfxn7V9PsKJOVYB5HsNfBCDCVMuzdCpyLCtOO3LgThZ2kwnlUfCApeURJlkuqknlODMeuH7uahBpPekYDr6Gu9f14rSxIPbeH8FCXGjJ6Hxwu4fxNVyJ9+3fF4zRG0O2ClalvpC4Yq+kp7ub/ZMZU/PzuQxWwiDpuAmDTps3Nc81OTpCvEAuSS2O6LWLrj0+6CECpz1wkOCVMPGreB2daPSr22qKwsO3CDbKz/9kErBi3YFKrmNsblubFN7zIGxu5+sx+PmHt4mt4w/Tu7nd4rR6NQ27HVMSNdsSQXj2Xm6yzS9X7i9DpsbXfUS+kj37pFBzmZtfnv5NgeYYxNxDKsT1BojoGp1Cqld0hS/Udq6+eILXhBBfteo00dEH6hUlVagP+o5RWSx8AGEw/3dVRTNc5POJv6b80cLUKF8EJCEQFJ+AYxzuyhPwGThl9avHNkKs+zqnyEDBOiNMGjU0LWDcHyq+XTB/WCH3NrgOyyPDIxWZ7ZYZ3ZmGxelM/L27FYT1CD2uOu51FMylx1iVScGcfFb3EEt0v4KT4FCMS4JAEBWVHCJAxxq71VR1DNVOvTlB1kolyVhDr1rXPLjhWmOf7+ft2uRKSE1qZRmeMYbO/Mb4RL21dOpe6rWV2d7gjFxJFDzjo7iwVYytgFU0kDpUFOTY3JOJv6HENPNY5/H71oHUIVzB5Qx/LQFKuHgrbz16g86I7XdjRSkm186qEClopMW0AZLYamBD5oZB3nHvcilFs78R2dH5p9trxJ7j6tflELcsFAEYtDvySjRc+kQg+Fw7K+g9fGlywdT3ouvNC3sKoinNfTHxZnj8QPsZ7PzWUlUJPZEe7uYjSgjVx9uO81u1LKBUAxpNFRQJzguCz4SpQ5e5hX4MoTz4yVgY8fZWA48QNS/Teamjqu4QbEPIemoYduuXrJ8T4z5jC1EZpzQXNj3xFOY/fPB1hvkxd67qwNEIwuqCg/VS5UM6otF/8Bt8wfSQiuLqOyfsrhkCUPPrgQesx7Bv85TopRjHWch25aa+6pa6gybgDhZjsbfT9ahRx3cbETeC9LX6AfUezCTTDBmebG22MuOxZkRz5q1Pphoa0F3xx2GE36v8JdTzsxXBZmriFz0zWh8cKdP29IdnD9WUDw8rtRqb3ZJTDrzetlcvKA5aVUu0TB1z60VKen0TB3/0OcIf9flj3fWGP/sx0cg0VrF4ABfjzc+iU+eCq5/X/U3uBVx5etTx211gFLA9nWOA22udo75ziMUfHTKOxkhZzbdvb/DUs14Z5blldgax3UO5Vesn1LQhJNW90D6N+KJYEM6JX2beuDrcXFMGgMaDKmUyuCdAR2oQ223daqdkqvb7kVeyG4mXf0nxTU5o+QBwwg1DmSsEOUBOVQ4GWyA6uReN2pe+PTZ9ojluqpaYyekdJmlpya/Ruz6t6+7c1Yx8JxWM3nAH8L1F6B2gQoI9mxs843K6xwlZr4+c9KgQ+QCjlH4y23wbbjB/P29BfjYEWtjgpyx5nCL+afK6BTbLzECLXTG8nX7Q7pnvQ+mLzoTB3jjcpoVr/GrMwJe7NhbQ3ZAIwmFd1LaUJv6sH0KdugVw71Z05frSdf4vFCVW0obMDwv1Bj0guyAKObXh12QmRr2kvb8C6t123IcQjmWkH0+hBUgq0qyft0BtSSGQxE+rd9VDmeKVLfeIIA1LcV9YRYVAhD3fa8LrmHs8IQiZY475Y/kd2C11PlGDMDm0+KpwMX7qVhRShHt/EiozS3cnxEz6oLyBL9NJunb+JNStTyih7ftT/6obxyQUXyq2UW5fwfYSxeQR8Twqc8D4gw0SIOcUBuS8bGB3hf9Dz2ioHnfdPQtdWS5lvP9kz/TmB0h4HybjbCnmuy0jKUn9tkp8vUJ1RbIwLyGYk2v8RwvwEGxIBM4CTNlBS+mDvKSVK8zfRvichXdGbjH8lNxCNmEN/GakcpjlZ5XmzJGn9AW/daJm8e8B7UkVU2UrwRtZ3jydrP0phUREyahzvJcw4swSTkv6CzhXdbkAAnb14iWEgIvwLrQmz9wAwlZqSuMHBAkIsLxmCzGKNNjYL7dwdrVgQHihberG7A+YyYFPPZG31G2lLEykHvynZunQUHvHsxO5lUTUiwlNsGZN2VnAxVgWagaVa5S42E/P0OqQjjMPI/wRlaUmNPE86nAi23j0GyV3d1Dsysd6uQ6pWWWPmFBu8GY0nNU86Dqo7rFE10PU7Vv/bP+f9eDESxA9OE/1ZS3kapRS/jouP241I963zy896dviI4VXVeFNzFI6lGYMmdqdI7FY+X5u+nPSOBFc1kxsaSre1873GdWjY+oKAtsdczwzql3niY5pveEXXld2piLCSzwIifUrq4+I+jaSF1lFXvLv0Ce68jlv56T823txp+bcOk4ykG/2hLkA9t1UaS9hs9BCh/V/wF92FVZoU9r+i0AT+3hPeiDoaxg8ZTT2Gs3RSwYiCkWqwXuZnZtAL4U4Ua4c1mZzho39TXZ0fY7VlzVWc4wHHi70bptfSHDMOSX7fMfh+qMlVqDHxu6Z7nci5AIwTkQTVpBXxBz8GnCqnxYbC7UjnzXlx4XkJ2xZQf//1/rK93mz7Wtgv/rT+8l8f+vPxub73/hxxXhoEjL2+C2sCuTZTnG6Hup0MlY5UGeHHUOF3pRpyCjD7Na0MaH9wiep69tr39fR85VxYkRr1t6/er33ggh9Kot93zc133RV33T9zziD/7uf0UkmxQVXZKlUGqlW2bKtbJQ1gpen6jTNWyV/Qt9si+O/8wkmAfHZ4GztsXJyWArZ2JmZ2N25+dQ8FurN3u8GfOm983uNye4037v/P2DBv9usLaB7/88a/CyAc3/wXnGeZJzT8qplFHnb/Rv6KfoW+vH6XfqSXwf/qH+pf4X7n+w4RDMwHZoBg2MgQXi8C+UQN0fowDjBkaxjB2cxm1YgS0oQj2OohS16EAfRjCDxfgCq/AdfoU/DVHZcGfkY5zsGoDMWUUPlnTapneCi81A69x5ay7SGgML8tOLzXaZWuXbAlFZibqXPgfmne2ALIPOhJYalhedfcXg6M98cO+SnxmfTwVqbkRpWmPSrWVqwMnHRlMFQKsTodidS1O12WsE4+gJfm2SYPRVMSDSnCXpgLado3Zva3ftex4Hbv0kor34hxe3eEcXsf6zWxtQqMI1ftgcjjUWTw1jHRFLTmOkT7Qtcofa1/Z200k6bO/SbfXI/cPMbnnbJNfD4j1Mm72i4RZgwUlKy4YUWM19u3cL7PcP9pdRbKA6eNQdbhxu3pYSeV10apukMNppg0bgxVsV2NnuyPPoTv/52XCWLNzeOqEBPWMgX705rZrrQMkS3cVPVzcKmaMXn/cDqVB1Ge4z2SNqCDSqQsvQ04TvFpEr3/mQM/XgaHWQ7zK+y0eruGws7UrEz8y3vUMFMdNMvIbcFoO07T3fcCtOzQK4zVDogfogyUojN2ad8SjL6vRqeH8MKVU6NgBTZf0rPag9MGeQdaSxe8g0LM0XrtoyFyIE0c+0Lnp7WJun27gfx0cA8VHT3yDwL6fQ8JOLPMBWNIVMFWlbmSx7pfN55bCuCTY9DMci4Mz3aAGkzx7Lx/D81RHxq/ete9uL7u+6wYWHndPcsN5m+z9+8mjzrbo782C6yj7CnpFhApRkN4dNUsIgzl5oFupGyGzRiNhg/GXagTqjysm8whk14/2XH7rGToH15sgksypbPo9/YnBMCizui1CpjL0Corn8NGSVlVrrho1rpYsy+W/mFt0p3pPPGx7OYhHrHOAZXEf8GyzYBb29eS7BJP3IZqkngM3lT81jc0AwN20DvqRPS8RwxH10WrpR+VYbDVnNl6Q8zRMgpmXHZQjc+unnxvU1Pmv0e04waf/LneTu+cnfbiR3x2TWsTyKuEXDwaDuwEZG7L933+dEXnpTo8K8KEn0bMhgSYugnpJF26g2r36ZTyt/rQ2JVU35JUBMd7qON/94onSudlKDliIOw3375YCL5fXCcNggA9louHE9EFNF5T2JVo2bpqW3u9h90gYGxtpP0XIzDutcifbePmM6frVh2b7bdXbSTCITx6vNeHQhZnGsZMZFLWd75x7admbVarpC1VutNM1QGnuBriQ313Hq7deP3QMyyQijw28/czpUztdiIZt3aI6vXeBHBhuXdVaWn6A3KC0TX7eaSaCnDjCz6oAmWvWba/nypIh7dFQgBq/4IlBK1s5q5rin0mJDjWzPjwI10QOzT9Sgu/16WbD3uZPp45X10qRwSLheTHwMFDWMqIaNeqwYxSHVETvb764UtgqANguDHSYNl565XExYNIO7UToEm9pgkZFEJZcvrFZLVEuub9JuUFFKpH5EPij66KNkfHVfgzStiDU0zOqX92XqUEGreuWHj0ktW+9juoyDelnhXr5AVIk6yymMTQDalxihAlSRyHWG8Dk1cvwoZ5E0ooH9pJqb1b8+M8Ep82z6JqfAs1e0VyZVhDh/YKf2tf0Z+5FjGx7u7N7uP+T7wPHGiWHI0Ws71YrhRQ4Asko4W4bM9Tyq48s4uw8GmUdUQbgF2HvKepTFeM2AbNFASNqiBRWDaCpSP/fQk3HuTdv5A7P4WndXs+PzkpxpaFUCGm/UVRnAkqrCkiGvCcnc2s6otp09Odr9tB4qmeF4as9DRou37VZdvk4mMpgHxGClHSST491Xzws91oa4beFijVFssb3UUlia0I2CBng0F+swGNq7Z5v3KUrlyHF7miTZWaZ6NqohtCt5iAytagGLi1PaCPwic7R9lrkJS2KiJtOQdYjzoNTykV6HHuhwkyzrRhfUMs90QgyXxZ2Y3k65ySfh4dYYTsuhn0RPzdZUT66xzIPqHxKrxZitc409VkxsbFpkdhouG5K6DotnhKYp06zAScq07/Z4KNPnWCAHPFUptiRb8m9xQS20r1qzrrMos16QNt+Ru/hdvpQomG684wxZ/0JlvbwSUdAtykq5vFDZzi8PWZnReCfUa3rVaNVnBFrZADPxjODJnpKEbTfc+Z0bWAFCqSjvIP/EO6UJbOaw6qKLzvRGAuPffMAxTVRsi7K0mis1WxXwxlymqnIBak2sjw9ggdoXq1cUmrNF+mQ/NRdYaIsnxwFiW9g6DU4D6u6St4osJm7NnamP66nYx4v4hbh9dhT3x7uTdeHnPB8TJ+WS/4/n085y/78RaReNMO/h0lyjXfSs+o8fM8OdqeS0QEi/Aa7/37dOiI4q6eMeQerrobOvvG56vHeLquSz3lpzLW13ZneCQHTqvtaLgnYw6LzfnM9UMfXE2iktPg+gMSExC0sUWwxINt4CfHfnxv3SAF+1L8S0kuE0pbTw5YDNnrbw0JoJRroRdf3S2unoUG3IR4Wv9eaDc6GaGKXIsqTUlGnOyQmktZFv2avsZfUyeRmIzEtyzI73HR1XLwCXtRynmJssksc1z2vlC2Ky04XadX86+8lG8ODZU4mJ+px/z4tCkVNB96UuGAa28wZbPtbWzQwM1peOMREfqAPhfnVlpcIeomPjUr87H3SISI1rMY3PeJMsueViVX3Pl4YS6NC+YSLyDj5pSTacLPf7KFY1A9IERbSHLTpGaAdRH6k7QjYUdRP9IPubjZGZrUdFqpaqFdPIMZ1WzGQxTwqQb8dtctW9LoqUksyr8Wa6kdnPHwvDoUmi9ePqwZAlGpwu8HoDTcOwkJidwUCIt81W+qAR3jhujLsPK1LzS2TL2vIxZ3HLBHnOln08spMobW09WE4200nL/b/jjxHSfwPwMSGqqre3M6JBNIyTce5uRWUl5bonlMtls9J86cz+azeu3t6aYMDQYN8ThkJD6SsBuJqWu4pJFaJxUcXONQxMy2bZvplmlxgpX1vBl0uraVq4lCSrC62yQYF5a51vG0TQuvLJyXkbnH/XH806ezGO5AiXsC1k7Hf6YApyuapRlUEc7Bd0pVXIWBU1u/sktXlWQfMzRq0GHMh6qrdixt8b/yli3XP7M/Df9dofo2myXGMiDRSmauLwnBHitBUZoXN2dMBR3/cdXkNN2bxZ0J6NrX3inrnZmJqKbYA0AZ91FRciqAaNz6RQ2tIk5BlZSiVNAhR8zmb2uKbOpi1rWP+itAfYWh4DwhPKvWVTUNaXQx+s+q2oysjS+ZKiAxrPhyYMR2zLw4cVhHdgnErbXvPQ04uyP8kLZ1tRP/kxhw4anFn9ljb09Ky51J8XN6Xxjo3/uXHHLM7DZmDMUzko9xyY/e8S/Th+GtEIfCU8o7QW5T8+2OBfnKA3/pGsivlOJyTXrEv8TLBgdaRL0oBh7w0hgovHTsei8tAkMa6namxlQ63vgzw4c3LQ7aPWgalnnMc/cZMdU0V/s0dG7Bx+NRkFzuhab8zIe19oERWwW/lUjRRtKNteXtaT3Qx1u1gCi5gebRIs6xODCp4u02swYPRArVYLfDl9ZzMNTtFMrTBrppoEtuwomeVFF5EXHZqKCnN77/iNRc9RUdulm7n6iaAxeSFJKBil5wKb2jTjab1ai8VKJcNoBAqq5INWr3KWKdJFJzV58mcfSHNLfSZ2QDxlCzZUvaqpI2e4McpOzHv+OEvoxqgRt+0ioF1M1mZ0s7aBd6T+wpYU+UMhph6tDbB7vb+wi6cg2fP8fhk2t4T2PFpZU685M4A5uEBkzO1/La/Sk2d2FlTvKMX4Qne4/mi9eSEEAl7ZqcCIVhYLaAuvjAlXAVATHzQRLVFSb9LcX496ZlBsyIfFdnllCbSrMRODZdLBfgHpXee2IhMQVcSBfYv7wYE0XLi917s9i6vvWzi1EhChg6cG0dvZ6sZ7Et+Q/MRaLgGU/TIm5xZSHb7b1DkKcpeiTdp/nx9E9Onodx4ZAntsm9d7KI38JjHKRNbBY52tXdaCRsGFdCSU2wzlazqyjcG8m8j5sVu9a2kKI1b/Y0OQOwZeleXthohhlZE64lKKZroHztCQ/mkwwzg1z2HZfp8Q2LjPy9YOrjhfmzqmhbN/3ZhVAPXhw8X8fX8NzOJnWmAuvBchdE57bpzl/fCjt5A9MDZ+nFARnEL1aDHZ5azQ7nARcePk7nATNPV2MGaB26JMxrt+w0Ba1AMXI2l1NYmE1RI2kG1bRD8GnMXnC1AodeR5YktX2g8FZj57/8ZNSyEfLS/nN/TKUE9HjbDaxc2KxbkF1VJW6jYGmp+Lz8NS8qrxospsHfe+UcKPP8cg+/d8ixw+5ilaOELT7ubxp0jkSGGeDpDDwovwPyLTZTcdsWmmVgiOQlGhW4GHDVMwoVGAhOq5ulYDivZRAK0wY9zfdb6m4G1KeqM23emKiHdDw9x7H7leTAAWMjY0CGIDl6HM8rxjjyFkLPJ0h0jvorxKjoVaEu8hmQquuLZN3yJ9iRlfmEyzGK9ZJtCmnWJN8PtdRUmfm04XEfWynpYeUubMZLtWTKWHLvECw9TD6U6yyRdYv7GrHJjT5GdSLbdwB6efZZFlYtpNw5UNidZMCS9SN7oZPyat8e0JPfHbQuRferR+iB9u2l7ba6pppqzwzeHedJsb+gAloo3k+QbNf5lMFy41BT+9EePOAITdab0NBeZePwc09WuKM31vP2ASbuEH0v7uLWZn044FxNPjKPvdfaCERad5I0MpyJwjYFqPKSGacMItIDhU3n7Qqn8XOL/jhK+ECFGa3sssuTrGPGMGXXEQ9Pnian+POTptoKlN7/S9wMKSczUSTJz/Jc+iNgN3UrLGcT+RJdAzTG9y8Bpesy6mzpbm6bPQgodPZIA2Pk0wAHxwMQAIkjo2AKCejh8AwGA7+O0ikH3wHQBM9CZyCpO0fIBvx5GC/yZsy1hJAQA4V/8oAD29XwBQgzFEtsPnQCqvKJohkPDoeTP0sX/eTzDM20YxAgoGDgEJDToMmLBgw4ELDz4UAoSIECNBigw5il9tGEExnCApmmE5XhAlWVE13TAt23E9PwijOEmzvCirumm7fhineVm3/XA8nS/X2/3xfL0/398fSI+qNYGafhKnzUar0+v2B6PheG19c2NrZ/tg//Do/gOAfFZJQfoEOuVq/k+cmgJl2gEwnViTNJGa1HAAQPsAyFJ4AAwYtEjyYve7INu8/ADAYsVawoRY0Pt8yJd8zafU2w2Af6MDoP9RYwdenpPP+RayRJUi1SrUqlOvRpNmADRaZrkO7/TLeHkZm4AEmpsJGRd/aGcAEMcHhgIAWBQZsNYmg3HpH0xF+QvLz+VO3/l0L1dmMlPZm+N5OH9CJhrGHIuscJdfcWRHuL7x/xmglqmVaiO1Rm2ndldvZsJQY4QTc/77t+N//58YxlHTZ431ttgbtwTn17mIsU/d7Za3GtXQ9g504wOhbDTimSZQTc/t5/nPYv1JLYwuxj8F5bVZt7pv3a6v6xDczd+1tbpW1tI+wnEOhd8nJHVsypGjYytG4dFrpB4+pkvn2+Uvyuh6J4ZvdFwnyhff+h7rFwVSVTqJAgUUKKJApc7sBQXG1c3dm8VHn1FQqJgRjmJQLDcnMwdOKrWG8/tWf0n7p9uKzJWrsmbz9RLWJn51K8qqbtputz8cr641noylfxqdwWSxOf/vH3+TUn9ESv//94jEkk/1aWhqaevo6ukbGBoZWzOxbsOmLdt27Nqz78ChI7ccO3H7Wemiu+6BEIygGE6QFM2wHC+Ikqyomm6xBnfsDqd5Bt3Pg2PD3KPyMI+Onyd5egyYCT3L84zkRV7mVV7nTd7mXRSwETAtn2Oh67fwiNieE/cjnNIMAQL4+Dhk889zj38AmRfi8neu9fzNePf5FPA37Z+NlqdQqxmG2RAgfT6UeyabsyZtz1LhFeEjCZgBfZVevMDL8WzGAEBOs51NrLvMP3SQkh50J+GGArKZ8gMBjasI5BubL3vXdnZyAIDvCb0NOBWjl82sddszGZN+i7skhnwCEwMD7+IhZVH7jMJr6GMq5ppwGppaGMEwAb9+4rz2+EJkZtQZEraApDTWReP2R/S9nFu3CGun6CiitaQloo/J7nWOXZiEXh2jopChgDsG++RbYne9+tkv2Kmxxn01Doq7VSh/EfsNOzdoxmQ+X61fsX1HyjCk42d2ZP9fECD45tN6nShLQt8SZ4TuVoFWYee04lyZxQC8kiCpI/AmDSwPwjz5W0/gB5yZgM9KHE9SDQvUH/p3SDqIvmm6rgbXf0lqx2g3drn4/YTaybMgLNdAzrWE4sDE9zupq6gM6I2blFThVoLRJUR3kGP7+ZA9WvXwYQGoJpnTNhk05gTxcLyHUQWxEMdgkkgkRyDXmGGCYQFet2jvGFo7XrZ7iAQzzcArDqepxGAFBVw3YzaHprhh7bDCvA+g53Mk5HbW4pSJUSd+BTDug+suxPBKg54u+RKaH4F/YBzE97HNMAEwv2OmcDNFDwJCjIQ8IWZCnK/8Kt0Ibo3i/OZs7w+M76vP7T2EAscLqWJfcCMSnv1LHG857uwv5DjN8Qors1X7bhuTz87wik2OQCpMdYNvxL5bquIwK+6TiVKPbBL3OH7h9Rb/3oqJagkQghHv0B7bLBjlHljo2I65fMtl7Dlvx0JotXkSr1/acoVwidDYcmaksjZSjgtwGWqQiM77iXGBPZuW3YzaXRHdGqZ2oqkE6ySn8sLG+yauHAeSeLqOAm6EBRWzmCiuxgFvbzht8SruT26xOwk3eCxb6v54fiHznH/yOhzYyaXxdScuTxcTpAcH467LwvxEK2M7+w/Ly8jYWDa5DMZrXwzelRoIUlfxb4CetniasVNW8J4pcrjWgEN7XGoUdhGZuoLrBBj+Cs8Lka7CPXChvy3H+zmI7Tc8d1KpmMUtqwkeU308ue8N4d3XYO4Aaf+62QPQKfQuE/oenB7O0BeYuzE9gmgDui24Lsb3P3WvT5FuIawKM2qnK0ZVSmrHyEsifbuPH2/0Gde/f69kOlu/AkVIuX9hOX4YMIrjhZbuDV/C3Y6b1gOKLDRcn8PSapQf9q0wVEYpPQE8ZBzpa+ojxc8DKyy2mSAABb/LhXGBNL1m3hHKydyX7hJFA3w/Eo529nz2LaXP9xHNB2SeZC/ajTXEqPXamyOmz7GiASgmwEKByENh5Omcx0Qg4u5HMA+VOgIJiqtns8d1B6F/sAcB5jXvwliy8CqRH4e2j0JLg/jZ0b8+Fwp7EeEZwDAkw+s85zrSAGQHcYi6lYFMxdFR/B63tdMod2Gu7ejTiO47ycPXKq+vQxlhEwTC4obFfvg/l1NnIs+2Bm/PhLVdMFUE3Vr4hgJW5+FxQiMfHnfcje0XXe0apeCGA1nWZHPo3Npf0fJi4jB4mnHKoGJ3InmPT/B8ddJ32xftb9UY4QHCwUcAoDT/N46ML7AvgmCVAhgMQShD0PKP5VgexcAwOCxlOAw6GYEj68pIhCDAoEU/MDq+wRgDmYEGM5rIWLRnwdZsZHEAArTRAAClZyEkdC66icGwO8kQou56DYpodBmGcrwlDtF4RpDZ2YzEcoYZDcsNY3RKH1vGwHHbIZkUfcZYWr6kD9m8svO/jVCv+dDs4tveUJ29kdsblexxWt/fbLTC/dG/XNZj8K/eadcz9tqJb4uUrT3t/yOpic9MnM3sAvRqUup243FfKT0MKOc+VMVHasvt2TUKIeqNECoWdF735WA8cqSRnZSgt74lse54Tu8shUjoPJmmQ81IjFGfIeZrjGFCidYcCQbl3RrJcRjhcYI1AYczHSLabJvWuq4PehMSXDI42U+xoLrGOgPh/ihbOMGFdQezf0tcfIqDAT5jmcBLvQAFFvT5VuZy7pIYaFzy7zqMUlT2QiIiTkhJf+BEUHOaNLchX9LGhTdILfMM8WGAjERslyaOObp19wMe3xvT5+e4L1yG94Vn1vtJ6E3BzqT0x/iQOGNgrggGEnmWJVLrza95BFYFdZr0pqn4xxnAz7ZPOrvxu9ln9GCHuHCq4qq2L77Vp8JuQPrgG8R7iwRQrDcvyLhL2T1n5FNGYDi1WhnLFfWeY4GC7lB0PGKUoMbrzuuEsy8uljTmTmNQAmvoaLLZQOmok1jKn+jxKpDVzuCgR3FYa2Y1qrBICINYO3L1m0h4Nbwz8Pagv0tjAAAA",VIRGIL_FONT=` @font-face {font-display: swap;font-family: "Virgil";src: url("${VIRGIL_DATAURL}") format("woff2");}`,CASCADIA_FONT=' @font-face {font-display: swap;font-family: "Cascadia";src: url("data:application/font-woff;charset=utf-8;base64,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XVtdpV2uXdBeAV4OXmBecl6GXpteyl74X1Vfsl/PX+xgDWAtYDVgPWBQYGNga2B9YIZgj2CcYKlgtmDLYOFg7GElYVthfmGgYa1hwmHdYgNiN2JVYoli0GL6Yzpjc2PbZINkrGUYZUBlTWVeZaNl8GX9Zi9mPGZNZrdm/mdPZ59nq2e4Z8hoAWhDaE9oW2hoaMto12jnaPNo/2mBaipqmGqlarFrRWtSa79sG2wnbFRskGzBbM5s32z7bQ5tF20fbR9tH20fbX9tzm4ebp9u+W9jb75wGnBgcKRw1HEucZRx1nIxcoly1HMHc1Nzm3P+dEJ0rXTvdR11YXWIdcl2LHZrdnN2e3aidqp2zHbwdwd3LHc/d213qHfGd/14JHhLeHt4rnjWeON5EnkpeUd5nHnBefJ5+noCeiV6T3pyenp6hXqcewR7kXu5e+R8Dnw3fHF8qnztfPp9B30UfSF9Ln07fUh9VX1ifW99fH2JfZZ9o32wfb19yn3YfeZ9834Bfg5+Hn4yfkJ+U35hfnd+h37Vf2iAj4CrgNeBDYEzgVmBgIGmgbmBzYH4gh2CUoKHgr2C84M1g/iEM4SIhK6Ey4T9hR6FQIVbhXaFiYWcha+FwoXSheuGAoYZhjCGR4Zoho+GnYazhsGGzobjhviHBYcah0yHaIgsiE6IcIi1iNuJA4lciWqJgImViaqJvYnRie6KDIosikyKbIqBio+KpIqyir+KzIrZiueK+4sPiySLOYtdi3GLhIuRi5+Ls4vIi9aL44vxi/+MFIwojD2MUoxfjGyMeYyFjJiMq4y/jNKM840NjSeNO41bjXSNjo2ijc6N7o4PjieOPY5TjmaOd46Njp6OtI7NjuGO8o8JjxqPMY9Lj2WPe4+Rj6aPvI/Kj96P75AAkA6QHJAukE6QdJCCkJ6QvJDKkN6Q75ECkRORIZE7kU+RY5F+kZSRqZHCkdiR7pIIkiSSQJJckniSlJK3ksiS2JLrkwCTDpMhkzKTQ5NQk12TcJOMk6+TvJPVk/GT/5QSlCSUNJRElFKUa5R+lJGUrJTClNiU8ZUHlR2VN5VTlWqVf5WUla2VwJXWleaV/JYNlieWOpZQlmCWdpaHlqCWtJbJluyXBZcflziXTJdgl3qXjpeil8WX3Zf1mGqYsZkFmTmZg5mvmcaZ5Zpamr6bHZtFm7icHZyAnN6dG52E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") format("woff2");}',ASSISTANT_FONT=' @font-face {font-display: swap;font-family: "Assistant";src: url("data:application/font-woff;charset=utf-8;base64,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") format("woff2");}';class Random{constructor(e){this.seed=e}next(){return this.seed?(2**31-1&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}}var ar={},cz={},da={},de={};const modifierKeyTooltipMessages=()=>({WebBrowserDragAction:{"image-import":"Import Image to Vault","image-url":"Insert Image or YouTube Thumbnail with URL",link:"Insert Link",embeddable:"Insert Interactive-Frame"},LocalFileDragAction:{"image-import":"Insert Image: import external or reuse existing if path in Vault","image-url":"Insert Image: with local URI or internal-link if from Vault",link:"Insert Link: local URI or internal-link if from Vault",embeddable:"Insert Interactive-Frame: local URI or internal-link if from Vault"},InternalDragAction:{image:"Insert Image","image-fullsize":"Insert Image @100%",link:"Insert Link",embeddable:"Insert Interactive-Frame"},LinkClickAction:{"active-pane":"Open in current active window","new-pane":"Open in a new adjacent window","popout-window":"Open in a popout window","new-tab":"Open in a new tab","md-properties":"Show the Markdown image-properties dialog (only relevant if you have embedded a markdown document as an image)"}}),processModifiers=(e,t)=>{const n=window.ExcalidrawAutomate.plugin.settings,r=(DEVICE.isMacOS||DEVICE.isIOS?n.modifierKeyConfig.Mac:n.modifierKeyConfig.Win)[t];for(const t of r.rules){const{shift:n,ctrl_cmd:r,alt_opt:i,meta_ctrl:o,result:a}=t;if(isSHIFT(e)===n&&isWinCTRLorMacCMD(e)===r&&isWinALTorMacOPT(e)===i&&isWinMETAorMacCTRL(e)===o)return a}return r.defaultAction},labelCTRL=()=>DEVICE.isIOS||DEVICE.isMacOS?"CMD":"CTRL",labelALT=()=>DEVICE.isIOS||DEVICE.isMacOS?"OPT":"ALT",labelMETA=()=>DEVICE.isIOS||DEVICE.isMacOS?"CTRL":DEVICE.isWindows?"WIN":"META",labelSHIFT=()=>"SHIFT",isWinCTRLorMacCMD=e=>DEVICE.isIOS||DEVICE.isMacOS?e.metaKey:e.ctrlKey,isWinALTorMacOPT=e=>e.altKey,isWinMETAorMacCTRL=e=>DEVICE.isIOS||DEVICE.isMacOS?e.ctrlKey:e.metaKey,isSHIFT=e=>e.shiftKey,setCTRL=(e,t)=>(DEVICE.isIOS||DEVICE.isMacOS?e.metaKey=t:e.ctrlKey=t,e),setALT=(e,t)=>(e.altKey=t,e),setMETA=(e,t)=>(DEVICE.isIOS||DEVICE.isMacOS?e.ctrlKey=t:e.metaKey=t,e),setSHIFT=(e,t)=>(e.shiftKey=t,e),scaleToFullsizeModifier=e=>{const t=window.ExcalidrawAutomate.plugin.settings,n=(DEVICE.isMacOS||DEVICE.isIOS?t.modifierKeyConfig.Mac:t.modifierKeyConfig.Win).InternalDragAction.rules.find((e=>"image-fullsize"===e.result));if(!n)return!1;const{shift:r,ctrl_cmd:i,alt_opt:o,meta_ctrl:a,result:s}=n;return isSHIFT(e)===r&&isWinCTRLorMacCMD(e)===i&&isWinALTorMacOPT(e)===o&&isWinMETAorMacCTRL(e)===a},linkClickModifierType=e=>{const t=processModifiers(e,"LinkClickAction");return DEVICE.isDesktop||"popout-window"!==t?t:"active-pane"},webbrowserDragModifierType=e=>processModifiers(e,"WebBrowserDragAction"),localFileDragModifierType=e=>processModifiers(e,"LocalFileDragAction"),internalDragModifierType=e=>processModifiers(e,"InternalDragAction"),emulateCTRLClickForLinks=e=>({shiftKey:e.shiftKey,ctrlKey:e.ctrlKey||!(DEVICE.isIOS||DEVICE.isMacOS),metaKey:e.metaKey||DEVICE.isIOS||DEVICE.isMacOS,altKey:e.altKey}),emulateKeysForLinkClick=e=>{var t;const n={shiftKey:!1,ctrlKey:!1,metaKey:!1,altKey:!1};if(!e)return n;const r=DEVICE.isMacOS||DEVICE.isIOS?"Mac":"Win",i=null===(t=window.ExcalidrawAutomate.plugin.settings.modifierKeyConfig[r])||void 0===t?void 0:t.LinkClickAction;if(i){const t=i.rules.find((t=>t.result===e));if(!t){const e=i.defaultAction;return emulateKeysForLinkClick(e)}setCTRL(n,t.ctrl_cmd),setALT(n,t.alt_opt),setMETA(n,t.meta_ctrl),setSHIFT(n,t.shift)}return n},anyModifierKeysPressed=e=>e.shiftKey||e.ctrlKey||e.metaKey||e.altKey;var en={CONVERT_URL_TO_FILE:"Save image from URL to local file",UNZIP_CURRENT_FILE:"Decompress current Excalidraw file",PUBLISH_SVG_CHECK:"Obsidian Publish: Find SVG and PNG exports that are out of date",EMBEDDABLE_PROPERTIES:"Embeddable Properties",EMBEDDABLE_RELATIVE_ZOOM:"Scale selected embeddable elements to 100% relative to the current canvas zoom",OPEN_IMAGE_SOURCE:"Open Excalidraw drawing",INSTALL_SCRIPT:"Install the script",UPDATE_SCRIPT:"Update available - Click to install",CHECKING_SCRIPT:"Checking for newer version - Click to reinstall",UNABLETOCHECK_SCRIPT:"Update check failed - Click to reinstall",UPTODATE_SCRIPT:"Script is up to date - Click to reinstall",OPEN_AS_EXCALIDRAW:"Open as Excalidraw Drawing",TOGGLE_MODE:"Toggle between Excalidraw and Markdown mode",CONVERT_NOTE_TO_EXCALIDRAW:"Convert markdown note to Excalidraw Drawing",CONVERT_EXCALIDRAW:"Convert *.excalidraw to *.md files",CREATE_NEW:"Create new drawing",CONVERT_FILE_KEEP_EXT:"*.excalidraw => *.excalidraw.md",CONVERT_FILE_REPLACE_EXT:"*.excalidraw => *.md (Logseq compatibility)",DOWNLOAD_LIBRARY:"Export stencil library as an *.excalidrawlib file",OPEN_EXISTING_NEW_PANE:"Open existing drawing - IN A NEW PANE",OPEN_EXISTING_ACTIVE_PANE:"Open existing drawing - IN THE CURRENT ACTIVE PANE",TRANSCLUDE:"Embed a drawing",TRANSCLUDE_MOST_RECENT:"Embed the most recently edited drawing",TOGGLE_LEFTHANDED_MODE:"Toggle left-handed mode",NEW_IN_NEW_PANE:"Create new drawing - IN AN ADJACENT WINDOW",NEW_IN_NEW_TAB:"Create new drawing - IN A NEW TAB",NEW_IN_ACTIVE_PANE:"Create new drawing - IN THE CURRENT ACTIVE WINDOW",NEW_IN_POPOUT_WINDOW:"Create new drawing - IN A POPOUT WINDOW",NEW_IN_NEW_PANE_EMBED:"Create new drawing - IN AN ADJACENT WINDOW - and embed into active document",NEW_IN_NEW_TAB_EMBED:"Create new drawing - IN A NEW TAB - and embed into active document",NEW_IN_ACTIVE_PANE_EMBED:"Create new drawing - IN THE CURRENT ACTIVE WINDOW - and embed into active document",NEW_IN_POPOUT_WINDOW_EMBED:"Create new drawing - IN A POPOUT WINDOW - and embed into active document",TOGGLE_LOCK:"Toggle Text Element between edit RAW and PREVIEW",DELETE_FILE:"Delete selected image or Markdown file from Obsidian Vault",INSERT_LINK_TO_ELEMENT:`Copy markdown link for selected element to clipboard. ${labelCTRL()}+CLICK to copy 'group=' link. SHIFT+CLICK to copy an 'area=' link. ${labelALT()}+CLICK to watch a help video.`,INSERT_LINK_TO_ELEMENT_GROUP:"Copy 'group=' markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_AREA:"Copy 'area=' markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_FRAME:"Copy 'frame=' markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_NORMAL:"Copy markdown link for selected element to clipboard.",INSERT_LINK_TO_ELEMENT_ERROR:"Select a single element in the scene",INSERT_LINK_TO_ELEMENT_READY:"Link is READY and available on the clipboard",INSERT_LINK:"Insert link to file",INSERT_COMMAND:"Insert Obsidian Command as a link",INSERT_IMAGE:"Insert image or Excalidraw drawing from your vault",IMPORT_SVG:"Import an SVG file as Excalidraw strokes (limited SVG support, TEXT currently not supported)",IMPORT_SVG_CONTEXTMENU:"Convert SVG to strokes - with limitations",INSERT_MD:"Insert markdown file from vault",INSERT_PDF:"Insert PDF file from vault",UNIVERSAL_ADD_FILE:"Insert ANY file",INSERT_CARD:"Add back-of-note card",INSERT_LATEX:`Insert LaTeX formula (e.g. \\binom{n}{k} = \\frac{n!}{k!(n-k)!}). ${labelALT()}+CLICK to watch a help video.`,ENTER_LATEX:"Enter a valid LaTeX expression",READ_RELEASE_NOTES:"Read latest release notes",RUN_OCR:"OCR: Grab text from freedraw scribble and pictures to clipboard",TRAY_MODE:"Toggle property-panel tray-mode",SEARCH:"Search for text in drawing",CROP_IMAGE:"Crop and mask image",ANNOTATE_IMAGE:"Annotate image in Excalidraw",INSERT_ACTIVE_PDF_PAGE_AS_IMAGE:"Insert active PDF page as image",RESET_IMG_TO_100:"Set selected image element size to 100% of original",TEMPORARY_DISABLE_AUTOSAVE:"Disable autosave until next time Obsidian starts (only set this if you know what you are doing)",TEMPORARY_ENABLE_AUTOSAVE:"Enable autosave",MASK_FILE_NOTICE:"This is a mask file. It is used to crop images and mask out parts of the image. Press and hold notice to open the help video.",INSTALL_SCRIPT_BUTTON:"Install or update Excalidraw Scripts",OPEN_AS_MD:"Open as Markdown",EXPORT_IMAGE:"Export Image",OPEN_LINK:"Open selected text as link\n(SHIFT+CLICK to open in a new pane)",EXPORT_EXCALIDRAW:"Export to an .Excalidraw file",LINK_BUTTON_CLICK_NO_TEXT:"Select an ImageElement, or select a TextElement that contains an internal or external link.\n",FILENAME_INVALID_CHARS:'File name cannot contain any of the following characters: * " \\ < > : | ? #',FORCE_SAVE:"Save (will also update transclusions)",RAW:"Change to PREVIEW mode (only affects text-elements with links or transclusions)",PARSED:"Change to RAW mode (only affects text-elements with links or transclusions)",NOFILE:"Excalidraw (no file)",COMPATIBILITY_MODE:"*.excalidraw file opened in compatibility mode. Convert to new format for full plugin functionality.",CONVERT_FILE:"Convert to new format",BACKUP_AVAILABLE:"We encountered an error while loading your drawing. This might have occurred if Obsidian unexpectedly closed during a save operation. For example, if you accidentally closed Obsidian on your mobile device while saving.<br><br><b>GOOD NEWS:</b> Fortunately, a local backup is available. However, please note that if you last modified this drawing on a different device (e.g., tablet) and you are now on your desktop, that other device likely has a more recent backup.<br><br>I recommend trying to open the drawing on your other device first and restore the backup from its local storage.<br><br>Would you like to load the backup?",BACKUP_RESTORED:"Backup restored",CACHE_NOT_READY:"I apologize for the inconvenience, but an error occurred while loading your file.<br><br><mark>Having a little patience can save you a lot of time...</mark><br><br>The plugin has a backup cache, but it appears that you have just started Obsidian. Initializing the Backup Cache may take some time, usually up to a minute or more depending on your device's performance. You will receive a notification in the top right corner when the cache initialization is complete.<br><br>Please press OK to attempt loading the file again and check if the cache has finished initializing. If you see a completely empty file behind this message, I recommend waiting until the backup cache is ready before proceeding. Alternatively, you can choose Cancel to manually correct your file.<br>",OBSIDIAN_TOOLS_PANEL:"Obsidian Tools Panel",ERROR_SAVING_IMAGE:"Unknown error occurred while fetching the image. It could be that for some reason the image is not available or rejected the fetch request from Obsidian",WARNING_PASTING_ELEMENT_AS_TEXT:"PASTING EXCALIDRAW ELEMENTS AS A TEXT ELEMENT IS NOT ALLOWED",USE_INSERT_FILE_MODAL:"Use 'Insert Any File' to embed a markdown note",CONVERT_TO_MARKDOWN:"Convert to file...",SELECT_TEXTELEMENT_ONLY:"Select text element only (not container)",REMOVE_LINK:"Remove text element link",LASER_ON:"Enable laser pointer",LASER_OFF:"Disable laser pointer",RELEASE_NOTES_NAME:"Display Release Notes after update",RELEASE_NOTES_DESC:"<b><u>Toggle ON:</u></b> Display release notes each time you update Excalidraw to a newer version.<br><b><u>Toggle OFF:</u></b> Silent mode. You can still read release notes on <a href='https://github.com/zsviczian/obsidian-excalidraw-plugin/releases'>GitHub</a>.",NEWVERSION_NOTIFICATION_NAME:"Plugin update notification",NEWVERSION_NOTIFICATION_DESC:"<b><u>Toggle ON:</u></b> Show a notification when a new version of the plugin is available.<br><b><u>Toggle OFF:</u></b> Silent mode. You need to check for plugin updates in Community Plugins.",BASIC_HEAD:"Basic",BASIC_DESC:'In the "Basic" settings, you can configure options such as displaying release notes after updates, receiving plugin update notifications, setting the default location for new drawings, specifying the Excalidraw folder for embedding drawings into active documents, defining an Excalidraw template file, and designating an Excalidraw Automate script folder for managing automation scripts.',FOLDER_NAME:"Excalidraw folder",FOLDER_DESC:"Default location for new drawings. If empty, drawings will be created in the Vault root.",CROP_PREFIX_NAME:"Crop file prefix",CROP_PREFIX_DESC:"The first part of the filename for new drawings created when cropping an image. If empty the default 'cropped_' will be used.",ANNOTATE_PREFIX_NAME:"Annotation file prefix",ANNOTATE_PREFIX_DESC:"The first part of the filename for new drawings created when annotating an image. If empty the default 'annotated_' will be used.",CROP_FOLDER_NAME:"Crop file folder",CROP_FOLDER_DESC:"Default location for new drawings created when cropping an image. If empty, drawings will be created following the Vault attachments settings.",ANNOTATE_FOLDER_NAME:"Image annotation file folder",ANNOTATE_FOLDER_DESC:"Default location for new drawings created when annotating an image. If empty, drawings will be created following the Vault attachments settings.",FOLDER_EMBED_NAME:"Use Excalidraw folder when embedding a drawing into the active document",FOLDER_EMBED_DESC:"Define which folder to place the newly inserted drawing into when using the command palette action: 'Create a new drawing and embed into active document'.<br><b><u>Toggle ON:</u></b> Use Excalidraw folder<br><b><u>Toggle OFF:</u></b> Use the attachments folder defined in Obsidian settings.",TEMPLATE_NAME:"Excalidraw template file or folder",TEMPLATE_DESC:"Full filepath or folderpath to the Excalidraw template.<br><b>Template File:</b>E.g.: If your template is in the default Excalidraw folder and its name is Template.md, the setting would be: Excalidraw/Template.md (or just Excalidraw/Template - you may omit the .md file extension). If you are using Excalidraw in compatibility mode, then your template must be a legacy Excalidraw file as well such as Excalidraw/Template.excalidraw. <br><b>Template Folder:</b> You can also set a folder as your template. In this case you will be prompted which tempalte to use when creating a new drawing.<br><b>Pro Tip:</b> If you are using the Obsidian Templater plugin, you can add Templater code to your different Excalidraw templates to automate configuration of your drawings.",SCRIPT_FOLDER_NAME:"Excalidraw Automate script folder (CASE SeNSitiVE!)",SCRIPT_FOLDER_DESC:"The files you place in this folder will be treated as Excalidraw Automate scripts. You can access your scripts from Excalidraw via the Obsidian Command Palette. Assign hotkeys to your favorite scripts just like to any other Obsidian command. The folder may not be the root folder of your Vault. ",AI_HEAD:"AI Settings - Experimental",AI_DESC:'In the "AI" settings, you can configure options for using OpenAI\'s GPT API. While the OpenAI API is in beta, its use is strictly limited — as such we require you use your own API key. You can create an OpenAI account, add a small credit (5 USD minimum), and generate your own API key. Once API key is set, you can use the AI tools in Excalidraw.',AI_OPENAI_TOKEN_NAME:"OpenAI API key",AI_OPENAI_TOKEN_DESC:"You can get your OpenAI API key from your <a href='https://platform.openai.com/api-keys'>OpenAI account</a>.",AI_OPENAI_TOKEN_PLACEHOLDER:"Enter your OpenAI API key here",AI_OPENAI_DEFAULT_MODEL_NAME:"Default AI model",AI_OPENAI_DEFAULT_MODEL_DESC:"The default AI model to use when generating text. This is a freetext field, so you can enter any valid OpenAI model name. Find out more about the available models on the <a href='https://platform.openai.com/docs/models'>OpenAI website</a>.",AI_OPENAI_DEFAULT_MODEL_PLACEHOLDER:"Enter your default AI model here. e.g.: gpt-3.5-turbo-1106",AI_OPENAI_DEFAULT_IMAGE_MODEL_NAME:"Default Image Generation AI model",AI_OPENAI_DEFAULT_IMAGE_MODEL_DESC:"The default AI model to use when generating images. Image editing and variations are only supported by dall-e-2 at this time by OpenAI, for this reason dall-e-2 will automatically be used in such cases regardless of this setting.<br>This is a freetext field, so you can enter any valid OpenAI model name. Find out more about the available models on the <a href='https://platform.openai.com/docs/models'>OpenAI website</a>.",AI_OPENAI_DEFAULT_IMAGE_MODEL_PLACEHOLDER:"Enter your default Image Generation AI model here e.g.: dall-e-3",AI_OPENAI_DEFAULT_VISION_MODEL_NAME:"Default AI vision model",AI_OPENAI_DEFAULT_VISION_MODEL_DESC:"The default AI vision model to use when generating text from images. This is a freetext field, so you can enter any valid OpenAI model name. Find out more about the available models on the <a href='https://platform.openai.com/docs/models'>OpenAI website</a>.",AI_OPENAI_DEFAULT_API_URL_NAME:"OpenAI API URL",AI_OPENAI_DEFAULT_API_URL_DESC:"The default OpenAI API URL. This is a freetext field, so you can enter any valid OpenAI API compatible URL. Excalidraw will use this URL when posting API requests to OpenAI. I am not doing any error handling on this field, so make sure you enter a valid URL and only change this if you know what you are doing. ",AI_OPENAI_DEFAULT_IMAGE_API_URL_NAME:"OpenAI Image Generation API URL",AI_OPENAI_DEFAULT_VISION_MODEL_PLACEHOLDER:"Enter your default AI vision model here. e.g.: gpt-4-vision-preview",SAVING_HEAD:"Saving",SAVING_DESC:"In the 'Saving' section of Excalidraw Settings, you can configure how your drawings are saved. This includes options for compressing Excalidraw JSON in Markdown, setting autosave intervals for both desktop and mobile, defining filename formats, and choosing whether to use the .excalidraw.md or .md file extension. ",COMPRESS_NAME:"Compress Excalidraw JSON in Markdown",COMPRESS_DESC:"By enabling this feature Excalidraw will store the drawing JSON in a Base64 compressed format using the <a href='https://pieroxy.net/blog/pages/lz-string/index.html'>LZ-String</a> algorithm. This will reduce the chance of Excalidraw JSON cluttering your search results in Obsidian. As a side effect, this will also reduce the filesize of Excalidraw drawings. When you switch an Excalidraw drawing to Markdown view, using the options menu in Excalidraw, the file will be saved without compression, so that you can read and edit the JSON string. The drawing will be compressed again once you switch back to Excalidraw view. The setting only has effect 'point forward', meaning, existing drawings will not be affected by the setting until you open them and save them.<br><b><u>Toggle ON:</u></b> Compress drawing JSON<br><b><u>Toggle OFF:</u></b> Leave drawing JSON uncompressed",AUTOSAVE_INTERVAL_DESKTOP_NAME:"Interval for autosave on Desktop",AUTOSAVE_INTERVAL_DESKTOP_DESC:"The time interval between saves. Autosave will skip if there are no changes in the drawing. Excalidraw will also save the file when closing a workspace tab or navigating within Obsidian, but away from the active Excalidraw tab (i.e. clicking on the Obsidian ribbon or checking backlinks, etc.). Excalidraw will not be able to save your work when terminating Obsidian directly either by killing the Obsidian process, or clicking to close Obsidian altogether.",AUTOSAVE_INTERVAL_MOBILE_NAME:"Interval for autosave on Mobile",AUTOSAVE_INTERVAL_MOBILE_DESC:"I recommend a more frequent interval for Mobiles. Excalidraw will also save the file when closing a workspace tab or navigating within Obsidian, but away from the active Excalidraw tab (i.e. tapping on the Obsidian ribbon or checking backlinks, etc.). Excalidraw will not be able to save your work when terminating Obsidian directly (i.e. swiping it away). Also note, that when you switch apps on a Mobile device, sometimes Android and iOS closes Obsidian in the background to save system resources. In such a case Excalidraw will not be able to save the latest changes.",FILENAME_HEAD:"Filename",FILENAME_DESC:"<p>Click this link for the <a href='https://momentjs.com/docs/#/displaying/format/'>date and time format reference</a>.</p>",FILENAME_SAMPLE:"Filename for a new drawing is: ",FILENAME_EMBED_SAMPLE:"Filename for a new embedded drawing is: ",FILENAME_PREFIX_NAME:"Filename prefix",FILENAME_PREFIX_DESC:"The first part of the filename",FILENAME_PREFIX_EMBED_NAME:"Filename prefix when embedding a new drawing into a markdown note",FILENAME_PREFIX_EMBED_DESC:"Should the filename of the newly inserted drawing start with the name of the active markdown note when using the command palette action: <code>Create a new drawing and embed into active document</code>?<br><b><u>Toggle ON:</u></b> Yes, the filename of a new drawing should start with filename of the active document<br><b><u>Toggle OFF:</u></b> No, filename of a new drawing should not include the filename of the active document",FILENAME_POSTFIX_NAME:"Custom text after markdown Note's name when embedding",FILENAME_POSTFIX_DESC:"Affects filename only when embedding into a markdown document. This text will be inserted after the note's name, but before the date.",FILENAME_DATE_NAME:"Filename Date",FILENAME_DATE_DESC:"The last part of the filename. Leave empty if you do not want a date.",FILENAME_EXCALIDRAW_EXTENSION_NAME:".excalidraw.md or .md",FILENAME_EXCALIDRAW_EXTENSION_DESC:"This setting does not apply if you use Excalidraw in compatibility mode, i.e. you are not using Excalidraw markdown files.<br><b><u>Toggle ON:</u></b> filename ends with .excalidraw.md<br><b><u>Toggle OFF:</u></b> filename ends with .md",DISPLAY_HEAD:"Excalidraw appearance and behavior",DISPLAY_DESC:"In the 'appearance and behavior' section of Excalidraw Settings, you can fine-tune how Excalidraw appears and behaves. This includes options for dynamic styling, left-handed mode, matching Excalidraw and Obsidian themes, default modes, and more.",DYNAMICSTYLE_NAME:"Dynamic styling",DYNAMICSTYLE_DESC:"Change Excalidraw UI colors to match the canvas color",LEFTHANDED_MODE_NAME:"Left-handed mode",LEFTHANDED_MODE_DESC:"Currently only has effect in tray-mode. If turned on, the tray will be on the right side.<br><b><u>Toggle ON:</u></b> Left-handed mode.<br><b><u>Toggle OFF:</u></b> Right-handed moded",IFRAME_MATCH_THEME_NAME:"Markdown embeds to match Excalidraw theme",IFRAME_MATCH_THEME_DESC:"<b><u>Toggle ON:</u></b> Set this to true if for example you are using Obsidian in dark-mode but use excalidraw with a light background. With this setting the embedded Obsidian markdown document will match the Excalidraw theme (i.e. light colors if Excalidraw is in light mode).<br><b><u>Toggle OFF:</u></b> Set this to false if you want the embedded Obsidian markdown document to match the Obsidian theme (i.e. dark colors if Obsidian is in dark mode).",MATCH_THEME_NAME:"New drawing to match Obsidian theme",MATCH_THEME_DESC:"If theme is dark, new drawing will be created in dark mode. This does not apply when you use a template for new drawings. Also this will not affect when you open an existing drawing. Those will follow the theme of the template/drawing respectively.<br><b><u>Toggle ON:</u></b> Follow Obsidian Theme<br><b><u>Toggle OFF:</u></b> Follow theme defined in your template",MATCH_THEME_ALWAYS_NAME:"Existing drawings to match Obsidian theme",MATCH_THEME_ALWAYS_DESC:"If theme is dark, drawings will be opened in dark mode. If your theme is light, they will be opened in light mode. <br><b><u>Toggle ON:</u></b> Match Obsidian theme<br><b><u>Toggle OFF:</u></b> Open with the same theme as last saved",MATCH_THEME_TRIGGER_NAME:"Excalidraw to follow when Obsidian Theme changes",MATCH_THEME_TRIGGER_DESC:"If this option is enabled open Excalidraw pane will switch to light/dark mode when Obsidian theme changes. <br><b><u>Toggle ON:</u></b> Follow theme changes<br><b><u>Toggle OFF:</u></b> Drawings are not affected by Obsidian theme changes",DEFAULT_OPEN_MODE_NAME:"Default mode when opening Excalidraw",DEFAULT_OPEN_MODE_DESC:"Specifies the mode how Excalidraw opens: Normal, Zen, or View mode. You may also set this behavior on a file level by adding the excalidraw-default-mode frontmatter key with a value of: normal, view, or zen to your document.",DEFAULT_PEN_MODE_NAME:"Pen mode",DEFAULT_PEN_MODE_DESC:"Should pen mode be automatically enabled when opening Excalidraw?",SHOW_PEN_MODE_FREEDRAW_CROSSHAIR_NAME:"Show (+) crosshair in pen mode",SHOW_PEN_MODE_FREEDRAW_CROSSHAIR_DESC:"Show crosshair in pen mode when using the freedraw tool. <b><u>Toggle ON:</u></b>SHOW <b><u>Toggle OFF:</u></b>HIDE",THEME_HEAD:"Theme and styling",ZOOM_HEAD:"Zoom",DEFAULT_PINCHZOOM_NAME:"Allow pinch zoom in pen mode",DEFAULT_PINCHZOOM_DESC:"Pinch zoom in pen mode when using the freedraw tool is disabled by default to prevent unwanted accidental zooming with your palm.<br><b><u>Toggle ON:</u></b> Enable pinch zoom in pen mode<br><b><u>Toggle OFF:</u></b>Disable pinch zoom in pen mode",DEFAULT_WHEELZOOM_NAME:"Mouse wheel to zoom by default",DEFAULT_WHEELZOOM_DESC:`<b><u>Toggle ON:</u></b> Mouse wheel to zoom; ${labelCTRL()} + mouse wheel to scroll</br><b><u>Toggle OFF:</u></b>${labelCTRL()} + mouse wheel to zoom; Mouse wheel to scroll`,ZOOM_TO_FIT_NAME:"Zoom to fit on view resize",ZOOM_TO_FIT_DESC:"Zoom to fit drawing when the pane is resized<br><b><u>Toggle ON:</u></b> Zoom to fit<br><b><u>Toggle OFF:</u></b> Auto zoom disabled",ZOOM_TO_FIT_ONOPEN_NAME:"Zoom to fit on file open",ZOOM_TO_FIT_ONOPEN_DESC:"Zoom to fit drawing when the drawing is first opened<br><b><u>Toggle ON:</u></b> Zoom to fit<br><b><u>Toggle OFF:</u></b> Auto zoom disabled",ZOOM_TO_FIT_MAX_LEVEL_NAME:"Zoom to fit max ZOOM level",ZOOM_TO_FIT_MAX_LEVEL_DESC:"Set the maximum level to which zoom to fit will enlarge the drawing. Minimum is 0.5 (50%) and maximum is 10 (1000%).",LASER_HEAD:"Laser pointer",LASER_COLOR:"Laser pointer color",LASER_DECAY_TIME_NAME:"Laser pointer decay time",LASER_DECAY_TIME_DESC:"Laser pointer decay time in milliseconds. Default is 1000 (i.e. 1 second).",LASER_DECAY_LENGTH_NAME:"Laser pointer decay length.",LASER_DECAY_LENGTH_DESC:"Laser pointer decay length in line points. Default is 50.",LINKS_HEAD:"Links, transclusion and TODOs",LINKS_HEAD_DESC:"In the 'Links, transclusion and TODOs' section of Excalidraw Settings, you can configure how Excalidraw handles links, transclusions, and TODO items. This includes options for opening links, managing panes, displaying links with brackets, customizing link prefixes, handling TODO items, and more. ",LINKS_DESC:`${labelCTRL()}+CLICK on <code>[[Text Elements]]</code> to open them as links. If the selected text has more than one <code>[[valid Obsidian links]]</code>, only the first will be opened. If the text starts as a valid web link (i.e. <code>https://</code> or <code>http://</code>), then the plugin will open it in a browser. When Obsidian files change, the matching <code>[[link]]</code> in your drawings will also change. If you don't want text accidentally changing in your drawings use <code>[[links|with aliases]]</code>.`,DRAG_MODIFIER_NAME:"Link Click and Drag&Drop Modifier Keys",DRAG_MODIFIER_DESC:"Modifier key behavior when clicking links and dragging and dropping elements. Excalidraw will not validate your configuration... pay attention to avoid conflicting settings. These settings are different for Apple and non-Apple. If you use Obsidian on multiple platforms, you'll need to make the settings separately. The toggles follow the order of "+(DEVICE.isIOS||DEVICE.isMacOS?"SHIFT, CMD, OPT, CONTROL.":"SHIFT, CTRL, ALT, META (Windows key)."),LONG_PRESS_DESKTOP_NAME:"Long press to open desktop",LONG_PRESS_DESKTOP_DESC:"Long press delay in milliseconds to open an Excalidraw Drawing embedded in a Markdown file. ",LONG_PRESS_MOBILE_NAME:"Long press to open mobile",LONG_PRESS_MOBILE_DESC:"Long press delay in milliseconds to open an Excalidraw Drawing embedded in a Markdown file. ",FOCUS_ON_EXISTING_TAB_NAME:"Focus on Existing Tab",FOCUS_ON_EXISTING_TAB_DESC:"When opening a link, Excalidraw will focus on the existing tab if the file is already open. Enabling this setting overrides 'Reuse Adjacent Pane' when the file is already open.",SECOND_ORDER_LINKS_NAME:"Show second-order links",SECOND_ORDER_LINKS_DESC:"Show links when clicking on a link in Excalidraw. Second-order link are backlinks pointing to the link being clicked. When using image icons to connect similar notes, second order links allow you to get to related notes in one click instead of two. See <a href='https://youtube.com/shorts/O_1ls9c6wBY?feature=share'>YT Short</a> to understand.",ADJACENT_PANE_NAME:"Reuse adjacent pane",ADJACENT_PANE_DESC:`When ${labelCTRL()}+${labelALT()} clicking a link in Excalidraw, by default the plugin will open the link in a new pane. Turning this setting on, Excalidraw will first look for an existing pane, and try to open the link there. Excalidraw will look for the other workspace pane based on your focus/navigation history, i.e. the workpane that was active before you activated Excalidraw.`,MAINWORKSPACE_PANE_NAME:"Open in main workspace",MAINWORKSPACE_PANE_DESC:`When ${labelCTRL()}+${labelALT()} clicking a link in Excalidraw, by default the plugin will open the link in a new pane in the current active window. Turning this setting on, Excalidraw will open the link in an existing or new pane in the main workspace. `,LINK_BRACKETS_NAME:"Show <code>[[brackets]]</code> around links",LINK_BRACKETS_DESC:`In PREVIEW mode, when parsing Text Elements, place brackets around links. You can override this setting for a specific drawing by adding <code>${FRONTMATTER_KEYS["link-brackets"].name}: true/false</code> to the file's frontmatter.`,LINK_PREFIX_NAME:"Link prefix",LINK_PREFIX_DESC:`In PREVIEW mode, if the Text Element contains a link, precede the text with these characters. You can override this setting for a specific drawing by adding <code>${FRONTMATTER_KEYS["link-prefix"].name}: "📍 "</code> to the file's frontmatter.`,URL_PREFIX_NAME:"URL prefix",URL_PREFIX_DESC:`In PREVIEW mode, if the Text Element contains a URL link, precede the text with these characters. You can override this setting for a specific drawing by adding <code>${FRONTMATTER_KEYS["url-prefix"].name}: "🌐 "</code> to the file's frontmatter.`,PARSE_TODO_NAME:"Parse todo",PARSE_TODO_DESC:"Convert '- [ ] ' and '- [x] ' to checkbox and tick in the box.",TODO_NAME:"Open TODO icon",TODO_DESC:"Icon to use for open TODO items",DONE_NAME:"Completed TODO icon",DONE_DESC:"Icon to use for completed TODO items",HOVERPREVIEW_NAME:`Hover preview without pressing the ${labelCTRL()} key`,HOVERPREVIEW_DESC:`<b><u>Toggle ON:</u></b> In Exalidraw <u>view mode</u> the hover preview for [[wiki links]] will be shown immediately, without the need to hold the ${labelCTRL()} key. In Excalidraw <u>normal mode</u>, the preview will be shown immediately only when hovering the blue link icon in the top right of the element.<br> <b><u>Toggle OFF:</u></b> Hover preview is shown only when you hold the ${labelCTRL()} key while hovering the link.`,LINKOPACITY_NAME:"Opacity of link icon",LINKOPACITY_DESC:"Opacity of the link indicator icon in the top right corner of an element. 1 is opaque, 0 is transparent.",LINK_CTRL_CLICK_NAME:`${labelCTRL()}+CLICK on text with [[links]] or [](links) to open them`,LINK_CTRL_CLICK_DESC:"You can turn this feature off if it interferes with default Excalidraw features you want to use. If this is turned off, only the link button in the title bar of the drawing pane will open links.",TRANSCLUSION_WRAP_NAME:"Overflow wrap behavior of transcluded text",TRANSCLUSION_WRAP_DESC:"Number specifies the character count where the text should be wrapped. Set the text wrapping behavior of transcluded text. Turn this ON to force-wrap text (i.e. no overflow), or OFF to soft-wrap text (at the nearest whitespace).",TRANSCLUSION_DEFAULT_WRAP_NAME:"Transclusion word wrap default",TRANSCLUSION_DEFAULT_WRAP_DESC:"You can manually set/override word wrapping length using the `![[page#^block]]{NUMBER}` format. Normally you will not want to set a default, because if you transclude text inside a sticky note, then Excalidraw will automatically take care of word wrapping. Set this value to `0` if you do not want to set a default. ",PAGE_TRANSCLUSION_CHARCOUNT_NAME:"Page transclusion max char count",PAGE_TRANSCLUSION_CHARCOUNT_DESC:"The maximum number of characters to display from the page when transcluding an entire page with the ![[markdown page]] format.",QUOTE_TRANSCLUSION_REMOVE_NAME:"Quote translusion: remove leading '> ' from each line",QUOTE_TRANSCLUSION_REMOVE_DESC:"Remove the leading '> ' from each line of the transclusion. This will improve readability of quotes in text only transclusions<br><b><u>Toggle ON:</u></b> Remove leading '> '<br><b><u>Toggle OFF:</u></b> Do not remove leading '> ' (note it will still be removed from the first row due to Obsidian API functionality)",GET_URL_TITLE_NAME:"Use iframely to resolve page title",GET_URL_TITLE_DESC:"Use the <code>http://iframely.server.crestify.com/iframely?url=</code> to get title of page when dropping a link into Excalidraw",PDF_TO_IMAGE:"PDF to Image",PDF_TO_IMAGE_SCALE_NAME:"PDF to Image conversion scale",PDF_TO_IMAGE_SCALE_DESC:"Sets the resolution of the image that is generated from the PDF page. Higher resolution will result in bigger images in memory and consequently a higher load on your system (slower performance), but sharper imagee. Additionally, if you want to copy PDF pages (as images) to Excalidraw.com, the bigger image size may result in exceeding the 2MB limit on Excalidraw.com.",EMBED_TOEXCALIDRAW_HEAD:"Embed files into Excalidraw",EMBED_TOEXCALIDRAW_DESC:"In the Embed Files section of Excalidraw Settings, you can configure how various files are embedded into Excalidraw. This includes options for embedding interactive markdown files, PDFs, and markdown files as images.",MD_HEAD:"Embed markdown into Excalidraw as image",MD_EMBED_CUSTOMDATA_HEAD_NAME:"Interactive Markdown Files",MD_EMBED_CUSTOMDATA_HEAD_DESC:'These settings will only effect future embeds. Current embeds remain unchanged. The theme setting of embedded frames is under the "Excalidraw appearance and behavior" section.',MD_TRANSCLUDE_WIDTH_NAME:"Default width of a transcluded markdown document",MD_TRANSCLUDE_WIDTH_DESC:"The width of the markdown page. This affects the word wrapping when transcluding longer paragraphs, and the width of the image element. You can override the default width of an embedded file using the <code>[[filename#heading|WIDTHxMAXHEIGHT]]</code> syntax in markdown view mode under embedded files.",MD_TRANSCLUDE_HEIGHT_NAME:"Default maximum height of a transcluded markdown document",MD_TRANSCLUDE_HEIGHT_DESC:"The embedded image will be as high as the markdown text requires, but not higher than this value. You can override this value by editing the embedded image link in markdown view mode with the following syntax <code>[[filename#^blockref|WIDTHxMAXHEIGHT]]</code>.",MD_DEFAULT_FONT_NAME:"The default font typeface to use for embedded markdown files.",MD_DEFAULT_FONT_DESC:'Set this value to "Virgil" or "Cascadia" or the filename of a valid <code>.ttf</code>, <code>.woff</code>, or <code>.woff2</code> font e.g. <code>MyFont.woff2</code> You can override this setting by adding the following frontmatter-key to the embedded markdown file: <code>excalidraw-font: font_or_filename</code>',MD_DEFAULT_COLOR_NAME:"The default font color to use for embedded markdown files.",MD_DEFAULT_COLOR_DESC:'Set this to any valid css color name e.g. "steelblue" (<a href="https://www.w3schools.com/colors/colors_names.asp">color names</a>), or a valid hexadecimal color e.g. "#e67700", or any other valid css color string. You can override this setting by adding the following frontmatter-key to the embedded markdown file: <code>excalidraw-font-color: steelblue</code>',MD_DEFAULT_BORDER_COLOR_NAME:"The default border color to use for embedded markdown files.",MD_DEFAULT_BORDER_COLOR_DESC:'Set this to any valid css color name e.g. "steelblue" (<a href="https://www.w3schools.com/colors/colors_names.asp">color names</a>), or a valid hexadecimal color e.g. "#e67700", or any other valid css color string. You can override this setting by adding the following frontmatter-key to the embedded markdown file: <code>excalidraw-border-color: gray</code>. Leave empty if you don\'t want a border. ',MD_CSS_NAME:"CSS file",MD_CSS_DESC:`The filename of the CSS to apply to markdown embeds. Provide the filename with extension (e.g. 'md-embed.css'). The css file may also be a plain markdown file (e.g. 'md-embed-css.md'), just make sure the content is written using valid css syntax. If you need to look at the HTML code you are applying the CSS to, then open Obsidian Developer Console (${DEVICE.isIOS||DEVICE.isMacOS?"CMD+OPT+i":"CTRL+SHIFT+i"}) and type in the following command: "ExcalidrawAutomate.mostRecentMarkdownSVG". This will display the most recent SVG generated by Excalidraw. Setting the font-family in the css is has limitations. By default only your operating system's standard fonts are available (see README for details). You can add one custom font beyond that using the setting above. You can override this css setting by adding the following frontmatter-key to the embedded markdown file: "excalidraw-css: css_file_in_vault|css-snippet".`,EMBED_HEAD:"Embedding Excalidraw into your Notes and Exporting",EMBED_DESC:'In the "Embed & Export" settings, you can configure how images and Excalidraw drawings are embedded and exported within your documents. Key settings include choosing the image type for markdown preview (such as Native SVG or PNG), specifying the type of file to insert into the document (original Excalidraw, PNG, or SVG), and managing image caching for embedding in markdown. You can also control image sizing, whether to embed drawings using wiki links or markdown links, and adjust settings related to image themes, background colors, and Obsidian integration. \n Additionally, there are settings for auto-export, which automatically generates SVG and/or PNG files to match the title of your Excalidraw drawings, keeping them in sync with file renames and deletions.',EMBED_CANVAS:"Obsidian Canvas support",EMBED_CANVAS_NAME:"Immersive embedding",EMBED_CANVAS_DESC:"Hide canvas node border and background when embedding an Excalidraw drawing to Canvas. Note that for a full transparent background for your image, you will still need to configure Excalidraw to export images with transparent background.",EMBED_CACHING:"Image caching",EXPORT_SUBHEAD:"Export Settings",EMBED_SIZING:"Image sizing",EMBED_THEME_BACKGROUND:"Image theme and background color",EMBED_IMAGE_CACHE_NAME:"Cache images for embedding in markdown",EMBED_IMAGE_CACHE_DESC:"Cache images for embedding in markdown. This will speed up the embedding process, but in case you compose images of several sub-component drawings, the embedded image in Markdown won't update until you open the drawing and save it to trigger an update of the cache.",EMBED_IMAGE_CACHE_CLEAR:"Purge Cache",BACKUP_CACHE_CLEAR:"Purge Backups",BACKUP_CACHE_CLEAR_CONFIRMATION:"This action will delete all Excalidraw drawing backups. Backups are used as a safety measure in case your drawing file gets damaged. Each time you open Obsidian the plugin automatically deletes backups for files that no longer exist in your Vault. Are you sure you want to clear all backups?",EMBED_REUSE_EXPORTED_IMAGE_NAME:"If found, use the already exported image for preview",EMBED_REUSE_EXPORTED_IMAGE_DESC:"This setting works in conjunction with the Auto-export SVG/PNG setting. If an exported image that matches the file name of the drawing is available, use that image instead of generating a preview image on the fly. This will result in faster previews especially when you have many embedded objects in the drawing, however, it may happen that your latest changes are not displayed and that the image will not automatically match your Obsidian theme in case you have changed the Obsidian theme since the export was created. This setting only applies to embedding images into markdown documents. For a number of reasons, the same approach cannot be used to expedite the loading of drawings with many embedded objects. See demonstration <a href='https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.6.23' target='_blank'>here</a>.",EMBED_PREVIEW_IMAGETYPE_NAME:"Image type in markdown preview",EMBED_PREVIEW_IMAGETYPE_DESC:"<b><u>Native SVG</u></b>: High Image Quality. Embedded Websites, YouTube videos, Obsidian Links, and external images embedded via a URL will all work. Embedded Obsidian pages will not<br><b><u>SVG Image</u></b>: High Image Quality. Embedded elements and images embedded via URL only have placeholders, links don't work<br><b><u>PNG Image</u></b>: Lower Image Quality, but in some cases better performance with large drawings. Embedded elements and images embedded via URL only have placeholders, links don't work. Also some of the <a href='https://www.youtube.com/watch?v=yZQoJg2RCKI&t=633s' target='_blank'>image block referencing features</a> do not work with PNG embeds.",PREVIEW_MATCH_OBSIDIAN_NAME:"Excalidraw preview to match Obsidian theme",PREVIEW_MATCH_OBSIDIAN_DESC:"Image preview in documents should match the Obsidian theme. If enabled, when Obsidian is in dark mode, Excalidraw images will render in dark mode. When Obsidian is in light mode, Excalidraw will render light mode as well. You may want to switch 'Export image with background' off for a more Obsidian-integrated look and feel.",EMBED_WIDTH_NAME:"Default width of embedded (transcluded) image",EMBED_WIDTH_DESC:"The default width of an embedded drawing. This applies to live preview edit and reading mode, as well as to hover previews. You can specify a custom width when embedding an image using the <code>![[drawing.excalidraw|100]]</code> or <code>[[drawing.excalidraw|100x100]]</code> format.",EMBED_HEIGHT_NAME:"Default height of embedded (transcluded) image",EMBED_HEIGHT_DESC:"The default height of an embedded drawing. This applies to live preview edit and reading mode, as well as to hover previews. You can specify a custom height when embedding an image using the <code>![[drawing.excalidraw|100]]</code> or <code>[[drawing.excalidraw|100x100]]</code> format.",EMBED_TYPE_NAME:"Type of file to insert into the document",EMBED_TYPE_DESC:"When you embed an image into a document using the command palette this setting will specify if Excalidraw should embed the original Excalidraw file or a PNG or an SVG copy. You need to enable auto-export PNG / SVG (see below under Export Settings) for those image types to be available in the dropdown. For drawings that do not have a a corresponding PNG or SVG readily available the command palette action will insert a broken link. You need to open the original drawing and initiate export manually. This option will not autogenerate PNG/SVG files, but will simply reference the already existing files.",EMBED_MARKDOWN_COMMENT_NAME:"Embed link to drawing as comment",EMBED_MARKDOWN_COMMENT_DESC:"Embed the link to the original Excalidraw file as a markdown link under the image, e.g.:<code>%%[[drawing.excalidraw]]%%</code>.<br>Instead of adding a markdown comment you may also select the embedded SVG or PNG line and use the command palette action: '<code>Excalidraw: Open Excalidraw drawing</code>' to open the drawing.",EMBED_WIKILINK_NAME:"Embed Drawing using Wiki link",EMBED_WIKILINK_DESC:"<b><u>Toggle ON:</u></b> Excalidraw will embed a [[wiki link]].<br><b><u>Toggle OFF:</u></b> Excalidraw will embed a [markdown](link).",EXPORT_PNG_SCALE_NAME:"PNG export image scale",EXPORT_PNG_SCALE_DESC:"The size-scale of the exported PNG image",EXPORT_BACKGROUND_NAME:"Export image with background",EXPORT_BACKGROUND_DESC:"If turned off, the exported image will be transparent.",EXPORT_PADDING_NAME:"Image Padding",EXPORT_PADDING_DESC:"The padding (in pixels) around the exported SVG or PNG image. If you have curved lines close to the edge of the image they might get cropped during image export. You can increase this value to avoid cropping. You can also override this setting at a file level by adding the <code>excalidraw-export-padding: 5<code> frontmatter key.",EXPORT_THEME_NAME:"Export image with theme",EXPORT_THEME_DESC:"Export the image matching the dark/light theme of your drawing. If turned off, drawings created in dark mode will appear as they would in light mode.",EXPORT_HEAD:"Auto-export Settings",EXPORT_SYNC_NAME:"Keep the .SVG and/or .PNG filenames in sync with the drawing file",EXPORT_SYNC_DESC:"When turned on, the plugin will automatically update the filename of the .SVG and/or .PNG files when the drawing in the same folder (and same name) is renamed. The plugin will also automatically delete the .SVG and/or .PNG files when the drawing in the same folder (and same name) is deleted. ",EXPORT_SVG_NAME:"Auto-export SVG",EXPORT_SVG_DESC:"Automatically create an SVG export of your drawing matching the title of your file. The plugin will save the *.SVG file in the same folder as the drawing. Embed the .svg file into your documents instead of Excalidraw making you embeds platform independent. While the auto-export switch is on, this file will get updated every time you edit the Excalidraw drawing with the matching name. You can override this setting on a file level by adding the <code>excalidraw-autoexport</code> frontmatter key. Valid values for this key are <code>none</code>,<code>both</code>,<code>svg</code>, and <code>png</code>.",EXPORT_PNG_NAME:"Auto-export PNG",EXPORT_PNG_DESC:"Same as the auto-export SVG, but for *.PNG",EXPORT_BOTH_DARK_AND_LIGHT_NAME:"Export both dark- and light-themed image",EXPORT_BOTH_DARK_AND_LIGHT_DESC:"When enabled, Excalidraw will export two files instead of one: filename.dark.png, filename.light.png and/or filename.dark.svg and filename.light.svg<br>Double files will be exported both if auto-export SVG or PNG (or both) are enabled, as well as when clicking export on a single image.",COMPATIBILITY_HEAD:"Compatibility features",COMPATIBILITY_DESC:"You should only enable these features if you have a strong reason for wanting to work with excalidraw.com files instead of markdown files. Many of the plugin features are not supported on legacy files. Typical usecase would be if you use set your vault up on top of a Visual Studio Code project folder and you have .excalidraw drawings you want to access from Visual Studio Code as well. Another usecase might be using Excalidraw in Logseq and Obsidian in parallel.",SLIDING_PANES_NAME:"Sliding panes plugin support",SLIDING_PANES_DESC:"Need to restart Obsidian for this change to take effect.<br>If you use the <a href='https://github.com/deathau/sliding-panes-obsidian' target='_blank'>Sliding Panes plugin</a> you can enable this setting to make Excalidraw drawings work with the Sliding Panes plugin.<br>Note, that Excalidraw Sliding Panes support causes compatibility issues with Obsidian Workspaces.<br>Note also, that the 'Stack Tabs' feature is now available in Obsidian, providing native support for most of the Sliding Panes functionality.",EXPORT_EXCALIDRAW_NAME:"Auto-export Excalidraw",EXPORT_EXCALIDRAW_DESC:"Same as the auto-export SVG, but for *.Excalidraw",SYNC_EXCALIDRAW_NAME:"Sync *.excalidraw with *.md version of the same drawing",SYNC_EXCALIDRAW_DESC:"If the modified date of the *.excalidraw file is more recent than the modified date of the *.md file then update the drawing in the .md file based on the .excalidraw file",COMPATIBILITY_MODE_NAME:"New drawings as legacy files",COMPATIBILITY_MODE_DESC:"⚠️ Enable this only if you know what you are doing. In 99.9% of the cases you DO NOT want this on. By enabling this feature drawings you create with the ribbon icon, the command palette actions, and the file explorer are going to be all legacy *.excalidraw files. This setting will also turn off the reminder message when you open a legacy file for editing.",MATHJAX_NAME:"MathJax (LaTeX) javascript library host",MATHJAX_DESC:"If you are using LaTeX equations in Excalidraw, then the plugin needs to load a javascript library for that. Some users are unable to access certain host servers. If you are experiencing issues, try changing the host here. You may need to restart Obsidian after closing settings, for this change to take effect.",LATEX_DEFAULT_NAME:"Default LaTeX formula for new equations",LATEX_DEFAULT_DESC:"Leave empty if you don't want a default formula. You can add default formatting here such as <code>\\color{white}</code>.",NONSTANDARD_HEAD:"Non-Excalidraw.com supported features",NONSTANDARD_DESC:'These settings in the "Non-Excalidraw.com Supported Features" section provide customization options beyond the default Excalidraw.com features. These features are not available on excalidraw.com. When exporting the drawing to Excalidraw.com these features will appear different.\n You can configure the number of custom pens displayed next to the Obsidian Menu on the canvas, allowing you to choose from a range of options. Additionally, you can enable a fourth font option, which adds a fourth font button to the properties panel for text elements. ',RENDER_TWEAK_HEAD:"Rendering tweaks",MAX_IMAGE_ZOOM_IN_NAME:"Maximum image zoom in resolution",MAX_IMAGE_ZOOM_IN_DESC:"To save on memory and because Apple Safari (Obsidian on iOS) has some hard-coded limitations, Excalidraw.com limits the max resolution of images and large objects when zooming in. You can override this limitation using a multiplicator. This means you are multiplying the limit set by default in Excalidraw, the larger the multiplier the better the image zoom in resolution will be, and the more memory it will consume. I recommend playing with multiple values for this setting. You know you've hit the wall, when zooming in to a larger PNG image suddenly the image disappears from view. The default value is 1. The setting has no effect on iOS.",CUSTOM_PEN_HEAD:"Custom pens",CUSTOM_PEN_NAME:"Number of custom pens",CUSTOM_PEN_DESC:"You will see these pens next to the Obsidian Menu on the canvas. You can customize the pens on the canvas by long-pressing the pen button.",EXPERIMENTAL_HEAD:"Miscellaneous features",EXPERIMENTAL_DESC:"These miscellaneous features in Excalidraw include options for setting default LaTeX formulas for new equations, enabling a Field Suggester for autocompletion, displaying type indicators for Excalidraw files, enabling immersive image embedding in live preview editing mode, and experimenting with Taskbone Optical Character Recognition for text extraction from images and drawings. Users can also enter a Taskbone API key for extended usage of the OCR service.",EA_HEAD:"Excalidraw Automate",EA_DESC:"ExcalidrawAutomate is a scripting and automation API for Excalidraw. Unfortunately, the documentation of the API is sparse. I recommend reading the <a href='https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/docs/API/ExcalidrawAutomate.d.ts'>ExcalidrawAutomate.d.ts</a> file, visiting the <a href='https://zsviczian.github.io/obsidian-excalidraw-plugin/'>ExcalidrawAutomate How-to</a> page - though the information here has not been updated for a long while -, and finally to enable the field suggester below. The field suggester will show you the available functions, their parameters and short description as you type. The field suggester is the most up-to-date documentation of the API.",FIELD_SUGGESTER_NAME:"Enable Field Suggester",FIELD_SUGGESTER_DESC:"Field Suggester borrowed from Breadcrumbs and Templater plugins. The Field Suggester will show an autocomplete menu when you type <code>excalidraw-</code> or <code>ea.</code> with function description as hints on the individual items in the list.",STARTUP_SCRIPT_NAME:"Startup script",STARTUP_SCRIPT_DESC:"If set, excalidraw will execute the script at plugin startup. This is useful if you want to set any of the Excalidraw Automate hooks. The startup script is a markdown file that should contain the javascript code you want to execute when Excalidraw starts.",STARTUP_SCRIPT_BUTTON_CREATE:"Create startup script",STARTUP_SCRIPT_BUTTON_OPEN:"Open startup script",STARTUP_SCRIPT_EXISTS:"Startup script file already exists",FILETYPE_NAME:"Display type (✏️) for excalidraw.md files in File Explorer",FILETYPE_DESC:"Excalidraw files will receive an indicator using the emoji or text defined in the next setting.",FILETAG_NAME:"Set the type indicator for excalidraw.md files",FILETAG_DESC:"The text or emoji to display as type indicator.",INSERT_EMOJI:"Insert an emoji",LIVEPREVIEW_NAME:"Immersive image embedding in live preview editing mode",LIVEPREVIEW_DESC:"Turn this on to support image embedding styles such as ![[drawing|width|style]] in live preview editing mode. The setting will not affect the currently open documents. You need close the open documents and re-open them for the change to take effect.",CUSTOM_FONT_HEAD:"Fourth font",ENABLE_FOURTH_FONT_NAME:"Enable fourth font option",ENABLE_FOURTH_FONT_DESC:"By turning this on, you will see a fourth font button on the properties panel for text elements. Files that use this fourth font will (partly) lose their platform independence. Depending on the custom font set in settings, they will look differently when loaded in another vault, or at a later time. Also the 4th font will display as system default font on excalidraw.com, or other Excalidraw versions.",FOURTH_FONT_NAME:"Fourth font file",FOURTH_FONT_DESC:"Select a .ttf, .woff or .woff2 font file from your vault to use as the fourth font. If no file is selected, Excalidraw will use the Virgil font by default.",SCRIPT_SETTINGS_HEAD:"Settings for installed Scripts",SCRIPT_SETTINGS_DESC:"Some of the Excalidraw Automate Scripts include settings. Settings are organized by script. Settings will only become visible in this list after you have executed the newly downloaded script once.",TASKBONE_HEAD:"Taskbone Optical Character Recogntion",TASKBONE_DESC:"This is an experimental integration of optical character recognition into Excalidraw. Please note, that taskbone is an independent external service not provided by Excalidraw, nor the Excalidraw-Obsidian plugin project. The OCR service will grab legible text from freedraw lines and embedded pictures on your canvas and place the recognized text in the frontmatter of your drawing as well as onto clipboard. Having the text in the frontmatter will enable you to search in Obsidian for the text contents of these. Note, that the process of extracting the text from the image is not done locally, but via an online API. The taskbone service stores the image on its servers only as long as necessary for the text extraction. However, if this is a dealbreaker, then please don't use this feature.",TASKBONE_ENABLE_NAME:"Enable Taskbone",TASKBONE_ENABLE_DESC:"By enabling this service your agree to the Taskbone <a href='https://www.taskbone.com/legal/terms/' target='_blank'>Terms and Conditions</a> and the <a href='https://www.taskbone.com/legal/privacy/' target='_blank'>Privacy Policy</a>.",TASKBONE_APIKEY_NAME:"Taskbone API Key",TASKBONE_APIKEY_DESC:"Taskbone offers a free service with a reasonable number of scans per month. If you want to use this feature more frequently, or you want to supoprt the developer of Taskbone (as you can imagine, there is no such thing as 'free', providing this awesome OCR service costs some money to the developer of Taskbone), you can purchase a paid API key from <a href='https://www.taskbone.com/' target='_blank'>taskbone.com</a>. In case you have purchased a key, simply overwrite this auto generated free-tier API-key with your paid key.",SELECT_FILE:"Select a file then press enter.",SELECT_COMMAND:"Select a command then press enter.",SELECT_FILE_WITH_OPTION_TO_SCALE:`Select a file then press ENTER, or SHIFT+${labelMETA()}+ENTER to insert at 100% scale.`,NO_MATCH:"No file matches your query.",NO_MATCHING_COMMAND:"No command matches your query.",SELECT_FILE_TO_LINK:"Select the file you want to insert the link for.",SELECT_COMMAND_PLACEHOLDER:"Select the command you want to insert the link for.",SELECT_DRAWING:"Select the image or drawing you want to insert",TYPE_FILENAME:"Type name of drawing to select.",SELECT_FILE_OR_TYPE_NEW:"Select existing drawing or type name of a new drawing then press Enter.",SELECT_TO_EMBED:"Select the drawing to insert into active document.",SELECT_MD:"Select the markdown document you want to insert",SELECT_PDF:"Select the PDF document you want to insert",PDF_PAGES_HEADER:"Pages to load?",PDF_PAGES_DESC:"Format: 1, 3-5, 7, 9-11",TYPE_SECTION:"Type section name to select.",SELECT_SECTION_OR_TYPE_NEW:"Select existing section or type name of a new section then press Enter.",INVALID_SECTION_NAME:"Invalid section name.",EMPTY_SECTION_MESSAGE:"Hit enter to create a new Section",INFINITE_LOOP_WARNING:"EXCALIDRAW WARNING\nAborted loading embedded images due to infinite loop in file:\n",SCRIPT_EXECUTION_ERROR:"Script execution error. Please find error message on the developer console.",LOAD_FROM_BACKUP:"Excalidraw file was corrupted. Loading from backup file.",GOTO_FULLSCREEN:"Goto fullscreen mode",EXIT_FULLSCREEN:"Exit fullscreen mode",TOGGLE_FULLSCREEN:"Toggle fullscreen mode",TOGGLE_DISABLEBINDING:"Toggle to invert default binding behavior",TOGGLE_FRAME_RENDERING:"Toggle frame rendering",TOGGLE_FRAME_CLIPPING:"Toggle frame clipping",OPEN_LINK_CLICK:"Open Link",OPEN_LINK_PROPS:"Open markdown-embed properties or open link in new window",NARROW_TO_HEADING:"Narrow to heading...",NARROW_TO_BLOCK:"Narrow to block...",SHOW_ENTIRE_FILE:"Show entire file",ZOOM_TO_FIT:"Zoom to fit",RELOAD:"Reload original link",OPEN_IN_BROWSER:"Open current link in browser",PROPERTIES:"Properties",COPYCODE:"Copy source to clipboard",ES_TITLE:"Embeddable Element Settings",ES_RENAME:"Rename File",ES_ZOOM:"Embedded Content Scaling",ES_YOUTUBE_START:"YouTube Start Time",ES_YOUTUBE_START_DESC:"ss, mm:ss, hh:mm:ss",ES_YOUTUBE_START_INVALID:"The YouTube Start Time is invalid. Please check the format and try again",ES_FILENAME_VISIBLE:"Filename Visible",ES_BACKGROUND_HEAD:"Embedded note background color",ES_BACKGROUND_MATCH_ELEMENT:"Match Element Background Color",ES_BACKGROUND_MATCH_CANVAS:"Match Canvas Background Color",ES_BACKGROUND_COLOR:"Background Color",ES_BORDER_HEAD:"Embedded note border color",ES_BORDER_COLOR:"Border Color",ES_BORDER_MATCH_ELEMENT:"Match Element Border Color",ES_BACKGROUND_OPACITY:"Background Opacity",ES_BORDER_OPACITY:"Border Opacity",ES_EMBEDDABLE_SETTINGS:"Embeddable Markdown Settings",ES_USE_OBSIDIAN_DEFAULTS:"Use Obsidian Defaults",ES_ZOOM_100_RELATIVE_DESC:"The button will adjust the element scale so it will show the content at 100% relative to the current zoom level of your canvas",ES_ZOOM_100:"Relative 100%",PROMPT_FILE_DOES_NOT_EXIST:"File does not exist. Do you want to create it?",PROMPT_ERROR_NO_FILENAME:"Error: Filename for new file may not be empty",PROMPT_ERROR_DRAWING_CLOSED:"Unknown error. It seems as if your drawing was closed or the drawing file is missing",PROMPT_TITLE_NEW_FILE:"New File",PROMPT_TITLE_CONFIRMATION:"Confirmation",PROMPT_BUTTON_CREATE_EXCALIDRAW:"Create EX",PROMPT_BUTTON_CREATE_EXCALIDRAW_ARIA:"Create Excalidraw drawing and open in new tab",PROMPT_BUTTON_CREATE_MARKDOWN:"Create MD",PROMPT_BUTTON_CREATE_MARKDOWN_ARIA:"Create markdown document and open in new tab",PROMPT_BUTTON_EMBED_MARKDOWN:"Embed MD",PROMPT_BUTTON_EMBED_MARKDOWN_ARIA:"Replace selected element with embedded markdown document",PROMPT_BUTTON_NEVERMIND:"Nevermind",PROMPT_BUTTON_OK:"OK",PROMPT_BUTTON_CANCEL:"Cancel",PROMPT_BUTTON_INSERT_LINE:"Insert new line",PROMPT_BUTTON_INSERT_SPACE:"Insert space",PROMPT_BUTTON_INSERT_LINK:"Insert markdown link to file",PROMPT_BUTTON_UPPERCASE:"Uppercase",PROMPT_SELECT_TEMPLATE:"Select a template",WEB_BROWSER_DRAG_ACTION:"Web Browser Drag Action",LOCAL_FILE_DRAG_ACTION:"OS Local File Drag Action",INTERNAL_DRAG_ACTION:"Obsidian Internal Drag Action",PANE_TARGET:"Link click behavior",DEFAULT_ACTION_DESC:"In case none of the combinations apply the default action for this group is: "},enGB={},es={},fr={},hi={},id={},it={},ja={},ko={},nl={},no={},pl={},pt={},ptBR={},ro={},ru={},tr={},zhCN={CONVERT_URL_TO_FILE:"从 URL 下载图像到本地",UNZIP_CURRENT_FILE:"解压当前 Excalidraw 文件",PUBLISH_SVG_CHECK:"Obsidian Publish: 搜索过期的 SVG 和 PNG 导出文件",EMBEDDABLE_PROPERTIES:"Embeddable 元素设置",EMBEDDABLE_RELATIVE_ZOOM:"使元素的缩放等级等于当前画布的缩放等级",OPEN_IMAGE_SOURCE:"打开 Excalidraw 绘图文件",INSTALL_SCRIPT:"安装此脚本",UPDATE_SCRIPT:"有可用更新 - 点击安装",CHECKING_SCRIPT:"检查更新中 - 点击重新安装",UNABLETOCHECK_SCRIPT:"检查更新失败 - 点击重新安装",UPTODATE_SCRIPT:"脚本已是最新 - 点击重新安装",OPEN_AS_EXCALIDRAW:"打开为 Excalidraw 绘图",TOGGLE_MODE:"在 Excalidraw 和 Markdown 模式之间切换",CONVERT_NOTE_TO_EXCALIDRAW:"转换:空白 Markdown 文档 => Excalidraw 绘图文件",CONVERT_EXCALIDRAW:"转换: *.excalidraw => *.md",CREATE_NEW:"新建绘图文件",CONVERT_FILE_KEEP_EXT:"转换:*.excalidraw => *.excalidraw.md",CONVERT_FILE_REPLACE_EXT:"转换:*.excalidraw => *.md (兼容 Logseq)",DOWNLOAD_LIBRARY:"导出 stencil 库为 *.excalidrawlib 文件",OPEN_EXISTING_NEW_PANE:"打开已有的绘图 - 于新面板",OPEN_EXISTING_ACTIVE_PANE:"打开已有的绘图 - 于当前面板",TRANSCLUDE:"嵌入绘图(形如 ![[drawing]])到当前 Markdown 文档中",TRANSCLUDE_MOST_RECENT:"嵌入最近编辑过的绘图(形如 ![[drawing]])到当前 Markdown 文档中",TOGGLE_LEFTHANDED_MODE:"切换为左手模式",NEW_IN_NEW_PANE:"新建绘图 - 于新面板",NEW_IN_NEW_TAB:"新建绘图 - 于新页签",NEW_IN_ACTIVE_PANE:"新建绘图 - 于当前面板",NEW_IN_POPOUT_WINDOW:"新建绘图 - 于新窗口",NEW_IN_NEW_PANE_EMBED:"新建绘图 - 于新面板 - 并将其嵌入(形如 ![[drawing]])到当前 Markdown 文档中",NEW_IN_NEW_TAB_EMBED:"新建绘图 - 于新页签 - 并将其嵌入(形如 ![[drawing]])到当前 Markdown 文档中",NEW_IN_ACTIVE_PANE_EMBED:"新建绘图 - 于当前面板 - 并将其嵌入(形如 ![[drawing]])到当前 Markdown 文档中",NEW_IN_POPOUT_WINDOW_EMBED:"新建绘图 - 于新窗口 - 并将其嵌入(形如 ![[drawing]])到当前 Markdown 文档中",TOGGLE_LOCK:"文本元素:原文模式(RAW)⟺ 预览模式(PREVIEW)",DELETE_FILE:"从库中删除所选图像(或以图像形式嵌入绘图中的 Markdown)的源文件",INSERT_LINK_TO_ELEMENT:`复制所选元素为内部链接(形如 [[file#^id]] )。\n按住 ${labelCTRL()} 可复制元素所在分组为内部链接(形如 [[file#^group=id]] )。\n按住 SHIFT 可复制所选元素所在区域为内部链接(形如 [[file#^area=id]] )。\n按住 ${labelALT()} 可观看视频演示。`,INSERT_LINK_TO_ELEMENT_GROUP:"复制所选元素所在分组为内部链接(形如 [[file#^group=id]] )",INSERT_LINK_TO_ELEMENT_AREA:"复制所选元素所在区域为内部链接(形如 [[file#^area=id]] )",INSERT_LINK_TO_ELEMENT_FRAME:"复制所选框架为内部链接(形如 [[file#^frame=id]] )",INSERT_LINK_TO_ELEMENT_NORMAL:"复制所选元素为内部链接(形如 [[file#^id]] )",INSERT_LINK_TO_ELEMENT_ERROR:"未选择画布里的单个元素",INSERT_LINK_TO_ELEMENT_READY:"链接已生成并复制到剪贴板",INSERT_LINK:"插入任意文件(以内部链接形式嵌入,形如 [[drawing]] )到当前绘图中",INSERT_COMMAND:"插入 Obsidian 命令(以内部链接形式嵌入)到当前绘图中",INSERT_IMAGE:"插入图像或 Excalidraw 绘图(以图像形式嵌入)到当前绘图中",IMPORT_SVG:"从 SVG 文件导入图形元素到当前绘图中(暂不支持文本元素)",INSERT_MD:"插入 Markdown 文档(以图像形式嵌入)到当前绘图中",INSERT_PDF:"插入 PDF 文档(以图像形式嵌入)到当前绘图中",UNIVERSAL_ADD_FILE:"插入任意文件(以交互形式嵌入,或者以图像形式嵌入)到当前绘图中",INSERT_LATEX:"插入 LaTeX 公式到当前绘图",ENTER_LATEX:"输入 LaTeX 表达式",READ_RELEASE_NOTES:"阅读本插件的更新说明",RUN_OCR:"OCR:识别涂鸦和图片里的文本并复制到剪贴板",TRAY_MODE:"绘图工具属性页:面板模式 ⟺ 托盘模式",SEARCH:"搜索文本",CROP_IMAGE:"裁剪与蒙版",RESET_IMG_TO_100:"重设图像元素的尺寸为 100%",TEMPORARY_DISABLE_AUTOSAVE:"临时禁用自动保存功能,直到本次 Obsidian 退出(小白慎用!)",TEMPORARY_ENABLE_AUTOSAVE:"启用自动保存功能",MASK_FILE_NOTICE:"这是一个蒙版图像。长按本提示来观看视频讲解。",INSTALL_SCRIPT_BUTTON:"安装或更新 Excalidraw 脚本",OPEN_AS_MD:"打开为 Markdown 文档",EXPORT_IMAGE:"导出为图像",OPEN_LINK:"打开所选元素里的链接 \n(按住 SHIFT 在新面板打开)",EXPORT_EXCALIDRAW:"导出为 .excalidraw 文件(旧版绘图文件格式)",LINK_BUTTON_CLICK_NO_TEXT:"请选择一个含有链接的图形或文本元素。",FILENAME_INVALID_CHARS:'文件名不能含有以下符号: * " \\ < > : | ? #',FORCE_SAVE:"保存(同时更新嵌入了该绘图的 Markdown 文档)",RAW:"文本元素正以原文(RAW)模式显示链接。\n点击切换到预览(PREVIEW)模式",PARSED:"文本元素正以预览(PREVIEW)模式显示链接。\n点击切换到原文(RAW)模式",NOFILE:"Excalidraw(没有文件)",COMPATIBILITY_MODE:"*.excalidraw 是兼容旧版的绘图文件格式。需要转换为新格式才能解锁本插件的全部功能。",CONVERT_FILE:"转换为新格式",BACKUP_AVAILABLE:"加载绘图文件时出错,可能是由于 Obsidian 在上次保存时意外退出了(手机上更容易发生这种意外)。<br><br><b>好消息:</b>这台设备上存在备份。您是否想要恢复本设备上的备份?<br><br>(我建议您先尝试在最近使用过的其他设备上打开该绘图,以检查是否有更新的备份。)",BACKUP_RESTORED:"已恢复备份",CACHE_NOT_READY:"抱歉,加载绘图文件时出错。<br><br><mark>现在有耐心,将来更省心。</mark><br><br>该插件有备份机制,但您似乎刚刚打开 Obsidian,需要等待一分钟或更长的时间来读取缓存。缓存读取完毕时,您将会在右上角收到提示。<br><br>请点击 OK 并耐心等待缓存,或者选择点击取消后手动修复你的文件。<br>",OBSIDIAN_TOOLS_PANEL:"Obsidian 工具面板",ERROR_SAVING_IMAGE:"获取图像时发生未知错误",WARNING_PASTING_ELEMENT_AS_TEXT:"你不能将 Excalidraw 元素粘贴为文本元素!",USE_INSERT_FILE_MODAL:"使用“插入任意文件”功能来嵌入 Markdown 文档",CONVERT_TO_MARKDOWN:"转存为 Markdown 文档(并嵌入为 MD-Embeddable)",RELEASE_NOTES_NAME:"显示更新说明",RELEASE_NOTES_DESC:"<b>开启:</b>每次更新本插件后,显示最新发行版本的说明。<br><b>关闭:</b>您仍可以在 <a href='https://github.com/zsviczian/obsidian-excalidraw-plugin/releases'>GitHub</a> 上阅读更新说明。",NEWVERSION_NOTIFICATION_NAME:"通知插件更新",NEWVERSION_NOTIFICATION_DESC:"<b>开启:</b>当本插件存在可用更新时,显示通知。<br><b>关闭:</b>您需要手动检查本插件的更新(设置 - 第三方插件 - 检查更新)。",BASIC_HEAD:"基本",BASIC_DESC:"包括:更新说明,更新提示,新绘图文件、模板文件、脚本文件的存储路径等的设置。",FOLDER_NAME:"Excalidraw 文件夹",FOLDER_DESC:"新绘图的默认存储路径。若为空,将在库的根目录中创建新绘图。",FOLDER_EMBED_NAME:"将 Excalidraw 文件夹用于“新建绘图”系列命令",FOLDER_EMBED_DESC:"在命令面板中执行“新建绘图”系列命令时,新建的绘图文件的存储路径。<br><b>开启:</b>使用上面的 Excalidraw 文件夹。 <br><b>关闭:</b>使用 Obsidian 设置的新附件默认位置。",TEMPLATE_NAME:"Excalidraw 模板文件",TEMPLATE_DESC:"Excalidraw 模板文件的存储路径。<br>如果您的模板在默认的 Excalidraw 文件夹中且文件名是 Template.md,则此项应设为 Excalidraw/Template.md(也可省略 .md 扩展名,即 Excalidraw/Template)。<br>如果您在兼容模式下使用 Excalidraw,那么您的模板文件也必须是旧的 *.excalidraw 格式,例如 Excalidraw/Template.excalidraw。",SCRIPT_FOLDER_NAME:"Excalidraw 自动化脚本的文件夹(大小写敏感!)",SCRIPT_FOLDER_DESC:"此文件夹用于存放 Excalidraw 自动化脚本。您可以在 Obsidian 命令面板中执行这些脚本,还可以为喜欢的脚本分配快捷键,就像为其他 Obsidian 命令分配快捷键一样。<br>该项不能设为库的根目录。",AI_HEAD:"AI(实验性)",AI_DESC:"OpenAI GPT API 的设置。 目前 OpenAI API 还处于测试中,您需要在自己的。OpenAI 账户中充值至少 5 美元后才能生成 API key,然后就可以在 Excalidraw 中配置并使用 AI。",AI_OPENAI_TOKEN_NAME:"OpenAI API key",AI_OPENAI_TOKEN_DESC:"您可以访问您的<a href='https://platform.openai.com/api-keys'> OpenAI 账户</a>来获取自己的 OpenAI API key。",AI_OPENAI_TOKEN_PLACEHOLDER:"OpenAI API key",AI_OPENAI_DEFAULT_MODEL_NAME:"默认的文本 AI 模型",AI_OPENAI_DEFAULT_MODEL_DESC:"使用哪个 AI 模型来生成文本。请填写有效的 OpenAI 模型名称。您可访问<a href='https://platform.openai.com/docs/models'> OpenAI 网站</a>了解更多模型信息。",AI_OPENAI_DEFAULT_MODEL_PLACEHOLDER:"gpt-3.5-turbo-1106",AI_OPENAI_DEFAULT_IMAGE_MODEL_NAME:"默认的图像 AI 模型",AI_OPENAI_DEFAULT_IMAGE_MODEL_DESC:"使用哪个 AI 模型来生成图像(在编辑和调整图像时会强制使用 dall-e-2 模型,因为目前只有该模型支持编辑和调整图像)。请填写有效的 OpenAI 模型名称。您可访问<a href='https://platform.openai.com/docs/models'>OpenAI 网站</a>了解更多模型信息。",AI_OPENAI_DEFAULT_IMAGE_MODEL_PLACEHOLDER:"dall-e-3",AI_OPENAI_DEFAULT_VISION_MODEL_NAME:"默认的 AI 视觉模型",AI_OPENAI_DEFAULT_VISION_MODEL_DESC:"根据文本生成图像时,使用哪个 AI 视觉模型。请填写有效的 OpenAI 模型名称。您可访问<a href='https://platform.openai.com/docs/models'> OpenAI 网站</a>了解更多模型信息。",AI_OPENAI_DEFAULT_API_URL_NAME:"OpenAI API URL",AI_OPENAI_DEFAULT_API_URL_DESC:"默认的 OpenAI API URL。请填写有效的 OpenAI API URL。Excalidraw 会通过该 URL 发送 API 请求给 OpenAI。我没有对此选项做任何错误处理,请谨慎修改。",AI_OPENAI_DEFAULT_IMAGE_API_URL_NAME:"OpenAI Image Generation API URL",AI_OPENAI_DEFAULT_VISION_MODEL_PLACEHOLDER:"gpt-4-vision-preview",SAVING_HEAD:"保存",SAVING_DESC:"包括:压缩,自动保存的时间间隔,文件的命名格式和扩展名等的设置。",COMPRESS_NAME:"压缩 Excalidraw JSON",COMPRESS_DESC:"Excalidraw 绘图文件默认将元素记录为 JSON 格式。开启此项,可将元素的 JSON 数据以 BASE64 编码(使用 <a href='https://pieroxy.net/blog/pages/lz-string/index.html'>LZ-String</a> 算法)。这样做的好处是:一方面可以避免原来的明文 JSON 数据干扰 Obsidian 的文本搜索结果,另一方面减小了绘图文件的体积。<br>当您通过功能区按钮或命令将绘图切换成 Markdown 模式时,数据将被解码回 JSON 格式以便阅读和编辑;而当您切换回 Excalidraw 模式时,数据就会被再次编码。<br>开启此项后,对于之前已存在但未压缩的绘图文件,需要重新打开并保存才能生效。",AUTOSAVE_INTERVAL_DESKTOP_NAME:"桌面端自动保存时间间隔",AUTOSAVE_INTERVAL_DESKTOP_DESC:"每隔多长时间自动保存一次(如果绘图文件没有发生改变,将不会保存)。当 Obsidian 应用内的焦点离开活动文档(如关闭工作空间、点击菜单栏、切换到其他页签或面板等)的时候,也会触发自动保存。直接退出 Obsidian 应用(不管是终结进程还是点关闭按钮)不会触发自动保存。",AUTOSAVE_INTERVAL_MOBILE_NAME:"移动端自动保存时间间隔",AUTOSAVE_INTERVAL_MOBILE_DESC:"建议在移动端设置更短的时间间隔。当 Obsidian 应用内的焦点离开活动文档(如关闭工作空间、点击菜单栏、切换到其他页签或面板等)的时候,也会触发自动保存。直接退出 Obsidian 应用(在应用切换器中划掉)不会触发自动保存。此外,当您切换到其他应用时,有时候系统会自动清理 Obsidian 后台以释放资源。这种情况下,自动保存会失效。",FILENAME_HEAD:"文件名",FILENAME_DESC:"<p>点击阅读<a href='https://momentjs.com/docs/#/displaying/format/'>日期和时间格式参考</a>。</p>",FILENAME_SAMPLE:"“新建绘图”系列命令创建的文件名形如:",FILENAME_EMBED_SAMPLE:"“新建绘图并嵌入到当前 Markdown 文档中”系列命令创建的文件名形如:",FILENAME_PREFIX_NAME:"“新建绘图”系列命令创建的文件名前缀",FILENAME_PREFIX_DESC:"执行“新建绘图”系列命令时,创建的绘图文件名的第一部分",FILENAME_PREFIX_EMBED_NAME:"“新建绘图并嵌入到当前 Markdown 文档中”系列命令创建的文件名前缀",FILENAME_PREFIX_EMBED_DESC:"执行“新建绘图并嵌入到当前 Markdown 文档中”系列命令时,创建的绘图文件名是否以当前文档名作为前缀?<br><b>开启:</b>是<br><b>关闭:</b>否",FILENAME_POSTFIX_NAME:"“新建绘图并嵌入到当前 Markdown 文档中”系列命令创建的文件名的中间部分",FILENAME_POSTFIX_DESC:"介于文件名前缀和日期时间之间的文本。仅对“新建绘图并嵌入到当前 Markdown 文档中”系列命令创建的绘图生效。",FILENAME_DATE_NAME:"文件名里的日期时间",FILENAME_DATE_DESC:"文件名的最后一部分。允许留空。",FILENAME_EXCALIDRAW_EXTENSION_NAME:"文件扩展名(.excalidraw.md 或 .md)",FILENAME_EXCALIDRAW_EXTENSION_DESC:"该选项在兼容模式(即非 Excalidraw 专用 Markdown 文件)下不会生效。<br><b>开启:</b>使用 .excalidraw.md 作为扩展名。<br><b>关闭:</b>使用 .md 作为扩展名。",DISPLAY_HEAD:"界面 & 行为",DISPLAY_DESC:"包括:左手模式,主题匹配,缩放,激光笔工具,修饰键等的设置。",DYNAMICSTYLE_NAME:"动态样式",DYNAMICSTYLE_DESC:"根据画布颜色自动调节 Excalidraw 界面颜色",LEFTHANDED_MODE_NAME:"左手模式",LEFTHANDED_MODE_DESC:"目前只在托盘模式下生效。若开启此项,则托盘(绘图工具属性页)将位于右侧。<br><b>开启:</b>左手模式。<br><b>关闭:</b>右手模式。",IFRAME_MATCH_THEME_NAME:"使 Embeddable 匹配 Excalidraw 主题",IFRAME_MATCH_THEME_DESC:"<b>开启:</b>当 Obsidian 和 Excalidraw 一个使用黑暗主题、一个使用明亮主题时,开启此项后,以交互形式嵌入到绘图中的元素(Embeddable) 将会匹配 Excalidraw 主题。<br><b>关闭:</b>如果您想要 Embeddable 匹配 Obsidian 主题,请关闭此项。",MATCH_THEME_NAME:"使新建的绘图匹配 Obsidian 主题",MATCH_THEME_DESC:"如果 Obsidian 使用黑暗主题,新建的绘图文件也将使用黑暗主题。<br>但是若设置了模板,新建的绘图文件将跟随模板主题;另外,此功能不会作用于已有的绘图。<br><b>开启:</b>跟随 Obsidian 主题风格。<br><b>关闭:</b>跟随模板主题风格。",MATCH_THEME_ALWAYS_NAME:"使已有的绘图匹配 Obsidian 主题",MATCH_THEME_ALWAYS_DESC:"如果 Obsidian 使用黑暗主题,则绘图文件也将以黑暗主题打开;反之亦然。<br><b>开启:</b>匹配 Obsidian 主题风格。<br><b>关闭:</b>采用上次保存时的主题风格。",MATCH_THEME_TRIGGER_NAME:"Excalidraw 主题跟随 Obsidian 主题变化",MATCH_THEME_TRIGGER_DESC:"开启此项,则切换 Obsidian 的黑暗/明亮主题时,已打开的 Excalidraw 面板的主题会随之改变。<br><b>开启:</b>跟随主题变化。<br><b>关闭:</b>不跟随主题变化。",DEFAULT_OPEN_MODE_NAME:"Excalidraw 的默认运行模式",DEFAULT_OPEN_MODE_DESC:"设置 Excalidraw 的运行模式:普通模式(Normal)/禅模式(Zen)/阅读模式(View)。<br>您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 <code>excalidraw-default-mode: normal/zen/view</code> 的键值对。",DEFAULT_PEN_MODE_NAME:"触控笔模式(Pen mode)",DEFAULT_PEN_MODE_DESC:"打开绘图时,是否自动开启触控笔模式?",THEME_HEAD:"主题和样式",ZOOM_HEAD:"缩放",DEFAULT_PINCHZOOM_NAME:"允许在触控笔模式下进行双指缩放",DEFAULT_PINCHZOOM_DESC:"在触控笔模式下使用自由画笔工具时,双指缩放可能造成干扰。<br><b>开启: </b>允许在触控笔模式下进行双指缩放<br><b>关闭: </b>禁止在触控笔模式下进行双指缩放",DEFAULT_WHEELZOOM_NAME:"鼠标滚轮缩放页面",DEFAULT_WHEELZOOM_DESC:`<b>开启:</b>鼠标滚轮为缩放页面,${labelCTRL()}+鼠标滚轮为滚动页面</br><b>关闭:</b>鼠标滚轮为滚动页面,${labelCTRL()}+鼠标滚轮为缩放页面`,ZOOM_TO_FIT_NAME:"调节面板尺寸后自动缩放页面",ZOOM_TO_FIT_DESC:"调节面板尺寸后,自适应地缩放页面<br><b>开启:</b>自动缩放。<br><b>关闭:</b>禁用自动缩放。",ZOOM_TO_FIT_ONOPEN_NAME:"打开绘图时自动缩放页面",ZOOM_TO_FIT_ONOPEN_DESC:"打开绘图文件时,自适应地缩放页面<br><b>开启:</b>自动缩放。<br><b>关闭:</b>禁用自动缩放。",ZOOM_TO_FIT_MAX_LEVEL_NAME:"自动缩放的最高级别",ZOOM_TO_FIT_MAX_LEVEL_DESC:"自动缩放画布时,允许放大的最高级别。该值不能低于 0.5(50%)且不能超过 10(1000%)。",LASER_HEAD:"激光笔工具(More Tools > Laser pointer)",LASER_COLOR:"激光笔颜色",LASER_DECAY_TIME_NAME:"激光笔消失时间",LASER_DECAY_TIME_DESC:"单位是毫秒,默认是 1000(即 1 秒)。",LASER_DECAY_LENGTH_NAME:"激光笔轨迹长度",LASER_DECAY_LENGTH_DESC:"默认是 50。",LINKS_HEAD:"链接 & 以内部链接形式嵌入到绘图中的 Markdown 文档(MD-Transclusion)& 待办任务(Todo)",LINKS_HEAD_DESC:"包括:链接的打开和显示,MD-Transclusion 的显示,Todo 的显示等设置。",LINKS_DESC:`按住 ${labelCTRL()} 并点击包含 <code>[[链接]]</code> 的文本元素可以打开其中的链接。如果所选文本元素包含多个 <code>[[有效的内部链接]]</code> ,只会打开第一个链接;如果所选文本元素包含有效的 URL 链接 (如 <code>https://</code> 或 <code>http://</code>),插件会在浏览器中打开链接。<br>链接的源文件被重命名时,绘图中相应的 <code>[[内部链接]]</code> 也会同步更新。若您不愿绘图中的链接外观因此而变化,可使用 <code>[[内部链接|别名]]</code>。`,DRAG_MODIFIER_NAME:"修饰键",DRAG_MODIFIER_DESC:"在您按住点击链接或拖放元素时,可以触发某些行为。您可以为这些行为添加修饰键。Excalidraw 不会检查您的设置是否合理,因此请谨慎设置,避免冲突。以下选项在苹果和非苹果设备上区别很大,如果您在多个硬件平台上使用 Obsidian,需要分别进行设置。选项里的 4 个开关依次代表 "+(DEVICE.isIOS||DEVICE.isMacOS?"SHIFT, CMD, OPT, CONTROL.":"SHIFT, CTRL, ALT, META (Win 键)。"),ADJACENT_PANE_NAME:"在相邻面板中打开",ADJACENT_PANE_DESC:`按住 ${labelCTRL()}+SHIFT 并点击绘图里的内部链接时,插件默认会在新面板中打开该链接。<br>若开启此项,Excalidraw 会先尝试寻找已有的相邻面板(按照右侧、左侧、上方、下方的顺序),并在其中打开该链接。如果找不到,再在新面板中打开。`,MAINWORKSPACE_PANE_NAME:"在主工作区中打开",MAINWORKSPACE_PANE_DESC:`按住 ${labelCTRL()}+SHIFT 并点击绘图里的内部链接时,插件默认会在当前窗口的新面板中打开该链接。<br>若开启此项,Excalidraw 会在主工作区的面板中打开该链接。`,LINK_BRACKETS_NAME:"在链接的两侧显示 <code>[[中括号]]</code>",LINK_BRACKETS_DESC:`文本元素处于预览(PREVIEW)模式时,在内部链接的两侧显示中括号。<br>您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 <code>${FRONTMATTER_KEYS["link-brackets"].name}: true/false</code> 的键值对。`,LINK_PREFIX_NAME:"内部链接的前缀",LINK_PREFIX_DESC:`文本元素处于预览(PREVIEW)模式时,如果其中包含链接,则添加此前缀。<br>您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 <code>${FRONTMATTER_KEYS["link-prefix"].name}: "📍 "</code> 的键值对。`,URL_PREFIX_NAME:"外部链接的前缀",URL_PREFIX_DESC:`文本元素处于预览(PREVIEW)模式时,如果其中包含外部链接,则添加此前缀。<br>您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 <code>${FRONTMATTER_KEYS["url-prefix"].name}: "🌐 "</code> 的键值对。`,PARSE_TODO_NAME:"待办任务(Todo)",PARSE_TODO_DESC:"将文本元素中的 <code>- [ ]</code> 和 <code>- [x]</code> 前缀显示为方框。",TODO_NAME:"未完成项目",TODO_DESC:"未完成的待办项目的符号",DONE_NAME:"已完成项目",DONE_DESC:"已完成的待办项目的符号",HOVERPREVIEW_NAME:"鼠标悬停预览内部链接",HOVERPREVIEW_DESC:`<b>开启:</b>在 Excalidraw <u>阅读模式(View)</u>下,鼠标悬停在 <code>[[内部链接]]</code> 上即可预览;而在<u>普通模式(Normal)</u>下, 鼠标悬停在内部链接右上角的蓝色标识上即可预览。<br> <b>关闭:</b>鼠标悬停在 <code>[[内部链接]]</code> 上,并且按住 ${labelCTRL()} 才能预览。`,LINKOPACITY_NAME:"链接标识的透明度",LINKOPACITY_DESC:"含有链接的元素,其右上角的链接标识的透明度。介于 0(全透明)到 1(不透明)之间。",LINK_CTRL_CLICK_NAME:`按住 ${labelCTRL()} 并点击含有 [[链接]] 或 [别名](链接) 的文本来打开链接`,LINK_CTRL_CLICK_DESC:"如果此功能影响到您使用某些原版 Excalidraw 功能,可将其关闭。关闭后,您只能通过绘图面板标题栏中的链接按钮来打开链接。",TRANSCLUSION_WRAP_NAME:"MD-Transclusion 的折行方式",TRANSCLUSION_WRAP_DESC:"中的 number 表示嵌入的文本溢出时,在第几个字符处进行折行。<br>此开关控制具体的折行方式。若开启,则严格在 number 处折行,禁止溢出;若关闭,则允许在 number 位置后最近的空格处折行。",TRANSCLUSION_DEFAULT_WRAP_NAME:"MD-Transclusion 的默认折行位置",TRANSCLUSION_DEFAULT_WRAP_DESC:"除了通过 <code>![[doc#^block]]{number}</code> 中的 number 来控制折行位置,您也可以在此设置 number 的默认值。<br>一般设为 0 即可,表示不设置固定的默认值,这样当您需要嵌入文档到便签中时,Excalidraw 能更好地帮您自动处理。",PAGE_TRANSCLUSION_CHARCOUNT_NAME:"MD-Transclusion 的最大显示字符数",PAGE_TRANSCLUSION_CHARCOUNT_DESC:"以 <code>![[内部链接]]</code> 或 <code>![](内部链接)</code> 的形式将文档以文本形式嵌入到绘图中时,该文档在绘图中可显示的最大字符数量。",QUOTE_TRANSCLUSION_REMOVE_NAME:"隐藏 MD-Transclusion 行首的引用符号",QUOTE_TRANSCLUSION_REMOVE_DESC:"不显示 MD-Transclusion 中每一行行首的 > 符号,以提高纯文本 MD-Transclusion 的可读性。<br><b>开启:</b>隐藏 > 符号<br><b>关闭:</b>不隐藏 > 符号(注意,由于 Obsidian API 的原因,首行行首的 > 符号不会被隐藏)",GET_URL_TITLE_NAME:"使用 iframly 获取页面标题",GET_URL_TITLE_DESC:"拖放链接到 Excalidraw 时,使用 <code>http://iframely.server.crestify.com/iframely?url=</code> 来获取页面的标题。",PDF_TO_IMAGE:"以图像形式嵌入到绘图中的 PDF 文档",PDF_TO_IMAGE_SCALE_NAME:"分辨率",PDF_TO_IMAGE_SCALE_DESC:"分辨率越高,图像越清晰,但内存占用也越大。此外,如果您想要复制这些图像到 Excalidraw.com,可能会超出其 2MB 大小的限制。",EMBED_TOEXCALIDRAW_HEAD:"嵌入到绘图中的文件",EMBED_TOEXCALIDRAW_DESC:"包括:以图像形式嵌入到绘图中的 PDF 文档、以交互形式嵌入到绘图中的 Markdown 文档(MD-Embeddable)、以图像形式嵌入的 Markdown 文档(MD-Embed)等。",MD_HEAD:"以图像形式嵌入到绘图中的 Markdown 文档(MD-Embed)",MD_EMBED_CUSTOMDATA_HEAD_NAME:"以交互形式嵌入到绘图中的 Markdown 文档(MD-Embeddable)",MD_EMBED_CUSTOMDATA_HEAD_DESC:"这些选项不会影响到已存在的 MD-Embeddable。MD-Embeddable 的主题风格在“显示 & 行为”小节设置。",MD_TRANSCLUDE_WIDTH_NAME:"MD-Embed 的默认宽度",MD_TRANSCLUDE_WIDTH_DESC:"MD-Embed 的宽度。该选项会影响到折行,以及图像元素的宽度。<br>您可为绘图中的某个 MD-Embed 单独设置此项,方法是将绘图切换至 Markdown 模式,并修改相应的 <code>[[Embed文件名#标题|宽度x最大高度]]</code>。",MD_TRANSCLUDE_HEIGHT_NAME:"MD-Embed 的默认最大高度",MD_TRANSCLUDE_HEIGHT_DESC:"MD-Embed 的高度取决于 Markdown 文档内容的多少,但最大不会超过该值。<br>您可为绘图中的某个 MD-Embed 单独设置此项,方法是将绘图切换至 Markdown 模式,并修改相应的 <code>[[Embed文件名#^块引ID|宽度x最大高度]]</code>。",MD_DEFAULT_FONT_NAME:"MD-Embed 的默认字体",MD_DEFAULT_FONT_DESC:"可以设为 <code>Virgil</code>,<code>Casadia</code> 或其他有效的 .ttf/.woff/.woff2 字体文件(如 <code>我的字体.woff2</code>)。<br>您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 <code>excalidraw-font: 字体名或文件名</code> 的键值对。",MD_DEFAULT_COLOR_NAME:"MD-Embed 的默认文本颜色",MD_DEFAULT_COLOR_DESC:"可以填写 HTML 颜色名,如 steelblue(参考 <a href='https://www.w3schools.com/colors/colors_names.asp'>HTML Color Names</a>),或者有效的 16 进制颜色值,例如 #e67700,或者任何其他有效的 CSS 颜色。<br>您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 <code>excalidraw-font-color: steelblue</code> 的键值对。",MD_DEFAULT_BORDER_COLOR_NAME:"MD-Embed 的默认边框颜色",MD_DEFAULT_BORDER_COLOR_DESC:"可以填写 HTML 颜色名,如 steelblue(参考 <a href='https://www.w3schools.com/colors/colors_names.asp'>HTML Color Names</a>),或者有效的 16 进制颜色值,例如 #e67700,或者任何其他有效的 CSS 颜色。<br>您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 <code>excalidraw-border-color: gray</code> 的键值对。<br>如果您不想要边框,请留空。",MD_CSS_NAME:"MD-Embed 的默认 CSS 样式表",MD_CSS_DESC:"MD-Embed 图像所采用的 CSS 样式表文件名。需包含扩展名,例如 md-embed.css。允许使用 Markdown 文件(如 md-embed-css.md),但其内容应符合 CSS 语法。<br>如果您要查询 CSS 所作用的 HTML 节点,请在 Obsidian 开发者控制台(CTRL+SHIFT+i)中键入命令:<code>ExcalidrawAutomate.mostRecentMarkdownSVG</code> —— 这将显示 Excalidraw 最近生成的 SVG。<br>此外,在 CSS 中不能任意地设置字体,您一般只能使用系统默认的标准字体(详见 README),但可以通过上面的设置来额外添加一个自定义字体。<br>您可为某个 MD-Embed 单独设置此项,方法是在其源文件的 frontmatter 中添加形如 <code>excalidraw-css: 库中的CSS文件或CSS片段</code> 的键值对。",EMBED_HEAD:"嵌入到 Markdown 文档中的绘图",EMBED_DESC:"包括:嵌入到 Markdown 文档中的绘图的预览图类型(SVG、PNG)、源文件类型(Excalidraw 绘图文件、SVG、PNG)、缓存、图像大小、图像主题,以及嵌入的语法等。\n 此外,还有自动导出 SVG 或 PNG 文件并保持与绘图文件状态同步的设置。",EMBED_CANVAS:"Obsidian 白板支持",EMBED_CANVAS_NAME:"沉浸式嵌入",EMBED_CANVAS_DESC:"当嵌入绘图到 Obsidian 白板中时,隐藏元素的边界和背景。注意:如果想要背景完全透明,您依然需要在 Excalidraw 中设置“导出的图像不包含背景”。",EMBED_CACHING:"预览图缓存",EXPORT_SUBHEAD:"导出",EMBED_SIZING:"图像尺寸",EMBED_THEME_BACKGROUND:"图像的主题和背景色",EMBED_IMAGE_CACHE_NAME:"为嵌入到 Markdown 文档中的绘图创建预览图缓存",EMBED_IMAGE_CACHE_DESC:"可提高下次嵌入的速度。但如果绘图中又嵌入了子绘图,当子绘图改变时,您需要打开子绘图并手动保存,才能够更新父绘图的预览图。",EMBED_IMAGE_CACHE_CLEAR:"清除缓存",BACKUP_CACHE_CLEAR:"清除备份",BACKUP_CACHE_CLEAR_CONFIRMATION:"该操作将删除所有绘图文件的备份。备份是绘图文件损坏时的一种补救手段。每次您打开 Obsidian 时,本插件会自动清理无用的备份。您确定要现在删除所有备份吗?",EMBED_REUSE_EXPORTED_IMAGE_NAME:"将之前已导出的图像作为预览图",EMBED_REUSE_EXPORTED_IMAGE_DESC:"该选项与“自动导出 SVG/PNG 副本”选项配合使用。如果嵌入到 Markdown 文档中的绘图文件存在同名的 SVG/PNG 副本,则将其作为预览图,而不再重新生成。<br>该选项能够提高 Markdown 文档的打开速度,尤其是当嵌入到 Markdown 文档中的绘图文件中含有大量图像或 MD-Embed 时。但是,该选项也可能导致预览图无法立即响应你对绘图文件或者 Obsidian 主题风格的修改。<br>该选项仅作用于嵌入到 Markdown 文档中的绘图。该选项无法提升绘图文件的打开速度。详见<a href='https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.6.23' target='_blank'>此说明</a>。",EMBED_PREVIEW_IMAGETYPE_NAME:"预览图的格式",EMBED_PREVIEW_IMAGETYPE_DESC:"<b>Native SVG:</b>高品质、可交互。<br><b>SVG:</b>高品质、不可交互。<br><b>PNG:</b>高性能、<a href='https://www.youtube.com/watch?v=yZQoJg2RCKI&t=633s' target='_blank'>不可交互</a>。",PREVIEW_MATCH_OBSIDIAN_NAME:"预览图匹配 Obsidian 主题",PREVIEW_MATCH_OBSIDIAN_DESC:"开启此项,则当 Obsidian 处于黑暗模式时,嵌入到 Markdown 文档中的绘图的预览图也会以黑暗模式渲染;当 Obsidian 处于明亮模式时,预览图也会以明亮模式渲染。<br>您可能还需要关闭“导出的图像包含背景”开关,来获得与 Obsidian 更加协调的观感。",EMBED_WIDTH_NAME:"预览图的默认宽度",EMBED_WIDTH_DESC:"嵌入到 Markdown 文档中的绘图的预览图的默认宽度。该选项也适用于鼠标悬停时浮现的预览图。<br>您可为某个要嵌入到 Markdown 文档中的绘图文件单独设置此项,方法是修改相应的内部链接格式为形如 <code>![[drawing.excalidraw|100]]</code> 或 <code>[[drawing.excalidraw|100x100]]</code>。",EMBED_TYPE_NAME:"“嵌入绘图到当前 Markdown 文档中”系列命令的源文件类型",EMBED_TYPE_DESC:"在命令面板中执行“嵌入绘图到当前 Markdown 文档中”系列命令时,要嵌入绘图文件本身,还是嵌入其 PNG 或 SVG 副本。<br>如果您想选择 PNG 或 SVG 副本,需要先开启下方的“自动导出 PNG 副本”或“自动导出 SVG 副本”。<br>如果您选择了 PNG 或 SVG 副本,当副本不存在时,该命令将会插入一条损坏的链接,您需要打开绘图文件并手动导出副本才能修复 —— 也就是说,该选项不会自动帮您生成 PNG/SVG 副本,而只会引用已有的 PNG/SVG 副本。",EMBED_MARKDOWN_COMMENT_NAME:"Embed link to drawing as comment",EMBED_MARKDOWN_COMMENT_DESC:"Embed the link to the original Excalidraw file as a markdown link under the image, e.g.:<code>%%[[drawing.excalidraw]]%%</code>.<br>Instead of adding a markdown comment you may also select the embedded SVG or PNG line and use the command palette action: '<code>Excalidraw: Open Excalidraw drawing</code>' to open the drawing.",EMBED_WIKILINK_NAME:"“嵌入绘图到当前 Markdown 文档中”系列命令产生的内部链接类型",EMBED_WIKILINK_DESC:"<b>开启:</b>将产生 <code>![[Wiki 链接]]</code>。<b>关闭:</b>将产生 <code>![](Markdown 链接)</code>。",EXPORT_PNG_SCALE_NAME:"导出的 PNG 图像的比例",EXPORT_PNG_SCALE_DESC:"导出的 PNG 图像的大小比例",EXPORT_BACKGROUND_NAME:"导出的图像包含背景",EXPORT_BACKGROUND_DESC:"如果关闭,将导出透明背景的图像。",EXPORT_PADDING_NAME:"导出的图像的空白边距",EXPORT_PADDING_DESC:"导出的 SVG/PNG 图像四周的空白边距(单位:像素)。<br>增加该值,可以避免在导出图像时,靠近图像边缘的图形被裁掉。<br>您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 <code>excalidraw-export-padding: 5<code> 的键值对。",EXPORT_THEME_NAME:"导出的图像匹配主题",EXPORT_THEME_DESC:"导出与绘图的黑暗/明亮主题匹配的图像。如果关闭,在黑暗主题下导出的图像将和明亮主题一样。",EXPORT_HEAD:"导出设置",EXPORT_SYNC_NAME:"保持 SVG/PNG 文件名与绘图文件同步",EXPORT_SYNC_DESC:"打开后,当绘图文件被重命名时,插件将同步更新同文件夹下的同名 .SVG 和 .PNG 文件。当绘图文件被删除时,插件将自动删除同文件夹下的同名 .SVG 和 .PNG 文件。",EXPORT_SVG_NAME:"自动导出 SVG 副本",EXPORT_SVG_DESC:"自动导出和绘图文件同名的 SVG 副本。插件会将副本保存到绘图文件所在的文件夹中。在文档中嵌入这个 SVG 文件,相比直接嵌入绘图文件,具有更强的跨平台能力。<br>此开关开启时,每次您编辑 Excalidraw 绘图,其 SVG 文件副本都会同步更新。<br>您可为某个绘图单独设置此项,方法是在其 frontmatter 中添加形如 <code>excalidraw-autoexport: none/both/svg/png</code>的键值对",EXPORT_PNG_NAME:"自动导出 PNG 副本",EXPORT_PNG_DESC:"和“自动导出 SVG 副本”类似,但是导出格式为 *.PNG。",EXPORT_BOTH_DARK_AND_LIGHT_NAME:"同时导出黑暗和明亮主题风格的图像",EXPORT_BOTH_DARK_AND_LIGHT_DESC:"若开启,Excalidraw 将导出两个文件:filename.dark.png(或 filename.dark.svg)和 filename.light.png(或 filename.light.svg)。<br>该选项可作用于“自动导出 SVG 副本”、“自动导出 PNG 副本”,以及其他的手动的导出命令。",COMPATIBILITY_HEAD:"兼容性设置",COMPATIBILITY_DESC:"如果没有特殊原因(例如您想同时在 VSCode / Logseq 和 Obsidian 中使用 Excalidraw),建议您使用 markdown 格式的绘图文件,而不是旧的 excalidraw.com 格式,因为本插件的很多功能在旧格式中无法使用。",SLIDING_PANES_NAME:"Sliding panes 插件支持",SLIDING_PANES_DESC:"设置此项后需要重启 Obsidian 才能生效。<br>如果您使用 <a href='https://github.com/deathau/sliding-panes-obsidian' target='_blank'>Sliding Panes 插件</a>,您可以开启此项来使 Excalidraw 绘图兼容此插件。<br>注意,开启后会产生一些与 Obsidian 工作空间的兼容性问题。<br>另外,Obsidian 现在已经原生支持 Stack Tabs(堆叠标签),基本实现了 Sliding Panes 插件的功能。",EXPORT_EXCALIDRAW_NAME:"自动导出 Excalidraw 旧格式副本",EXPORT_EXCALIDRAW_DESC:"和“自动导出 SVG 副本”类似,但是导出格式为 *.excalidraw。",SYNC_EXCALIDRAW_NAME:"新旧格式绘图文件的内容保持同步",SYNC_EXCALIDRAW_DESC:"如果旧格式(*.excalidraw)绘图文件的修改日期比新格式(*.md)更新,则根据旧格式文件的内容来更新新格式文件。",COMPATIBILITY_MODE_NAME:"以旧格式创建新绘图",COMPATIBILITY_MODE_DESC:"⚠️ 慎用!99.9% 的情况下您不需要开启此项。开启此功能后,您通过功能区按钮、命令面板、文件浏览器等创建的绘图都将是旧格式(*.excalidraw)。此外,您打开旧格式绘图文件时将不再收到警告消息。",MATHJAX_NAME:"MathJax (LaTeX) 的 javascript 库服务器",MATHJAX_DESC:"如果您在绘图中使用 LaTeX,插件需要从服务器获取并加载一个 javascript 库。如果您的网络无法访问某些库服务器,可以尝试通过此选项更换库服务器。更改此选项后,您可能需要重启 Obsidian 来使其生效。",LATEX_DEFAULT_NAME:"插入 LaTeX 时的默认表达式",LATEX_DEFAULT_DESC:"允许留空。允许使用类似 <code>\\color{white}</code> 的格式化表达式。",NONSTANDARD_HEAD:"非 Excalidraw.com 官方支持的特性",NONSTANDARD_DESC:"这些特性不受 Excalidraw.com 官方支持。如果以 Excalidraw.com 格式导出绘图,这些特性将会发生不可预知的变化。\n 包括:自定义画笔工具的数量,自定义字体等。",CUSTOM_PEN_HEAD:"自定义画笔",CUSTOM_PEN_NAME:"自定义画笔工具的数量",CUSTOM_PEN_DESC:"在画布上的 Obsidian 菜单按钮旁边切换自定义画笔。长按画笔按钮可以修改其样式。",EXPERIMENTAL_HEAD:"杂项",EXPERIMENTAL_DESC:"包括:默认的 LaTeX 公式,字段建议,绘图文件的类型标识符,OCR 等设置。",EA_HEAD:"Excalidraw 自动化",EA_DESC:"ExcalidrawAutomate 是用于 Excalidraw 自动化脚本的 API,但是目前说明文档还不够完善,建议阅读 <a href='https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/docs/API/ExcalidrawAutomate.d.ts'>ExcalidrawAutomate.d.ts</a> 文件源码,参考 <a href='https://zsviczian.github.io/obsidian-excalidraw-plugin/'>ExcalidrawAutomate How-to</a> 网页(不过该网页有一段时间未更新了),并开启下方的字段建议。字段建议功能能够在您键入时提示可用的函数及相应的参数,而且附带描述,相当于最新的“文档”。",FIELD_SUGGESTER_NAME:"开启字段建议",FIELD_SUGGESTER_DESC:"开启后,当您在编辑器中输入 <code>excalidraw-</code> 或者 <code>ea.</code> 时,会弹出一个带有函数说明的自动补全提示菜单。<br>该功能借鉴了 Breadcrumbs 和 Templater 插件。",STARTUP_SCRIPT_NAME:"起动脚本",STARTUP_SCRIPT_DESC:"插件启动时将自动执行该脚本。可用于为您的 Excalidraw 自动化脚本设置钩子。起动脚本请用 javascript 代码编写,并保存为 Markdown 格式。",STARTUP_SCRIPT_BUTTON_CREATE:"创建起动脚本",STARTUP_SCRIPT_BUTTON_OPEN:"打开起动脚本",STARTUP_SCRIPT_EXISTS:"起动脚本已存在",FILETYPE_NAME:"在文件浏览器中为 excalidraw.md 文件添加类型标识符(如 ✏️)",FILETYPE_DESC:"可通过下一项设置来自定义类型标识符。",FILETAG_NAME:"excalidraw.md 文件的类型标识符",FILETAG_DESC:"要显示为类型标识符的 emoji 或文本。",INSERT_EMOJI:"插入 emoji",LIVEPREVIEW_NAME:"嵌入绘图到文档时,模拟嵌入图像的语法",LIVEPREVIEW_DESC:"开启此项,则可在 Obsidian 实时预览模式的编辑视图下,用形如 <code>![[绘图|宽度|样式]]</code> 的语法来嵌入绘图。<br>该选项不会在已打开的文档中立刻生效 —— 你需要重新打开此文档来使其生效。",CUSTOM_FONT_HEAD:"自定义字体",ENABLE_FOURTH_FONT_NAME:"为文本元素启用本地字体",ENABLE_FOURTH_FONT_DESC:"开启此项后,文本元素的属性面板里会多出一个本地字体按钮。<br>使用了本地字体的绘图文件,将会失去一部分跨平台能力 —— 若将绘图文件移动到其他库中打开,显示效果可能会截然不同;若在 excalidraw.com 或者其他版本的 Excalidraw 中打开,使用本地字体的文本会变回系统默认字体。",FOURTH_FONT_NAME:"本地字体文件",FOURTH_FONT_DESC:"选择库文件夹中的一个 .ttf, .woff 或 .woff2 字体文件作为本地字体文件。若未选择文件,则使用默认的 Virgil 字体。",SCRIPT_SETTINGS_HEAD:"已安装脚本的设置",SCRIPT_SETTINGS_DESC:"有些 Excalidraw 自动化脚本包含设置项,当执行这些脚本时,它们会在该列表下添加设置项。",TASKBONE_HEAD:"Taskbone OCR(光学符号识别)",TASKBONE_DESC:"这是一个将 OCR 融入 Excalidraw 的实验性功能。请注意,Taskbone 是一项独立的外部服务,而不是由 Excalidraw 或 Obsidian-excalidraw-plugin 项目提供的。OCR 能够对画布上用自由画笔工具写下的涂鸦或者嵌入的图像进行文本识别,并将识别出来的文本写入绘图文件的 frontmatter,同时复制到剪贴板。之所以要写入 frontmatter 是为了便于您在 Obsidian 中能够搜索到这些文本。注意,识别的过程不是在本地进行的,而是通过在线 API,图像会被上传到 taskbone 的服务器(仅用于识别目的)。如果您介意,请不要使用这个功能。",TASKBONE_ENABLE_NAME:"启用 Taskbone",TASKBONE_ENABLE_DESC:"启用意味着您同意 Taskbone <a href='https://www.taskbone.com/legal/terms/' target='_blank'>条款及细则</a> 以及 <a href='https://www.taskbone.com/legal/privacy/' target='_blank'>隐私政策</a>.",TASKBONE_APIKEY_NAME:"Taskbone API Key",TASKBONE_APIKEY_DESC:"Taskbone 的免费 API key 提供了一定数量的每月识别次数。如果您非常频繁地使用此功能,或者想要支持 Taskbone 的开发者(您懂的,没有人能用爱发电,Taskbone 开发者也需要投入资金来维持这项 OCR 服务)您可以到 <a href='https://www.taskbone.com/' target='_blank'>taskbone.com</a> 购买一个商用 API key。购买后请将它填写到旁边这个文本框里,替换掉原本自动生成的免费 API key。",SELECT_FILE:"选择一个文件后按回车。",SELECT_COMMAND:"选择一个命令后按回车。",SELECT_FILE_WITH_OPTION_TO_SCALE:`选择一个文件后按回车,或者 SHIFT+${labelMETA()}+ENTER 以 100% 尺寸插入。`,NO_MATCH:"查询不到匹配的文件。",NO_MATCHING_COMMAND:"查询不到匹配的命令。",SELECT_FILE_TO_LINK:"选择要插入(以内部链接形式嵌入)到当前绘图中的文件。",SELECT_COMMAND_PLACEHOLDER:"选择要插入到当前绘图中的命令。",SELECT_DRAWING:"选择要插入(以图像形式嵌入)到当前绘图中的图像或绘图文件。",TYPE_FILENAME:"键入要选择的绘图名称。",SELECT_FILE_OR_TYPE_NEW:"选择已有绘图,或者键入新绘图文件的名称,然后按回车。",SELECT_TO_EMBED:"选择要插入(嵌入)到当前 Markdown 文档中的绘图。",SELECT_MD:"选择要插入(以图像形式嵌入)到当前绘图中的 Markdown 文档。",SELECT_PDF:"选择要插入(以图像形式嵌入)到当前绘图中的 PDF 文档。",PDF_PAGES_HEADER:"页码范围",PDF_PAGES_DESC:"示例:1, 3-5, 7, 9-11",INFINITE_LOOP_WARNING:"EXCALIDRAW 警告\n停止加载嵌入的图像,因为此文件中存在死循环:\n",SCRIPT_EXECUTION_ERROR:"脚本运行错误。请在开发者控制台中查看错误信息。",LOAD_FROM_BACKUP:"Excalidraw 文件已损坏。尝试从备份文件中加载。",GOTO_FULLSCREEN:"进入全屏模式",EXIT_FULLSCREEN:"退出全屏模式",TOGGLE_FULLSCREEN:"切换全屏模式",TOGGLE_DISABLEBINDING:"开启或关闭绑定",TOGGLE_FRAME_RENDERING:"开启或关闭框架渲染",TOGGLE_FRAME_CLIPPING:"开启或关闭框架裁剪",OPEN_LINK_CLICK:"打开所选的图形或文本元素里的链接",OPEN_LINK_PROPS:"编辑所选 MD-Embed 的内部链接,或者打开所选的图形或文本元素里的链接",NARROW_TO_HEADING:"缩放至标题",NARROW_TO_BLOCK:"缩放至块",SHOW_ENTIRE_FILE:"显示全部",ZOOM_TO_FIT:"缩放至合适大小",RELOAD:"重载链接",OPEN_IN_BROWSER:"在浏览器中打开",PROPERTIES:"属性",COPYCODE:"复制源文件",ES_TITLE:"Embeddable 元素设置",ES_RENAME:"重命名",ES_ZOOM:"缩放",ES_YOUTUBE_START:"YouTube 起始时间",ES_YOUTUBE_START_DESC:"ss, mm:ss, hh:mm:ss",ES_YOUTUBE_START_INVALID:"YouTube 起始时间无效。请检查格式并重试",ES_FILENAME_VISIBLE:"显示文件名",ES_BACKGROUND_HEAD:"背景色",ES_BACKGROUND_MATCH_ELEMENT:"匹配元素背景色",ES_BACKGROUND_MATCH_CANVAS:"匹配画布背景色",ES_BACKGROUND_COLOR:"背景色",ES_BORDER_HEAD:"边框颜色",ES_BORDER_COLOR:"边框颜色",ES_BORDER_MATCH_ELEMENT:"匹配元素边框颜色",ES_BACKGROUND_OPACITY:"背景透明度",ES_BORDER_OPACITY:"边框透明度",ES_EMBEDDABLE_SETTINGS:"MD-Embeddable 设置",ES_USE_OBSIDIAN_DEFAULTS:"使用 Obsidian 默认设置",ES_ZOOM_100_RELATIVE_DESC:"使元素的缩放等级等于当前画布的缩放等级",ES_ZOOM_100:"Relative 100%",PROMPT_FILE_DOES_NOT_EXIST:"文件不存在。要创建吗?",PROMPT_ERROR_NO_FILENAME:"错误:文件名不能为空",PROMPT_ERROR_DRAWING_CLOSED:"未知错误。绘图文件可能已关闭或丢失",PROMPT_TITLE_NEW_FILE:"新建文件",PROMPT_TITLE_CONFIRMATION:"确认",PROMPT_BUTTON_CREATE_EXCALIDRAW:"创建 Excalidraw 绘图",PROMPT_BUTTON_CREATE_EXCALIDRAW_ARIA:"创建 Excalidraw 绘图并在新页签中打开",PROMPT_BUTTON_CREATE_MARKDOWN:"创建 Markdown 文档",PROMPT_BUTTON_CREATE_MARKDOWN_ARIA:"创建 Markdown 文档并在新页签中打开",PROMPT_BUTTON_EMBED_MARKDOWN:"嵌入",PROMPT_BUTTON_EMBED_MARKDOWN_ARIA:"将所选元素替换为 MD-Embeddable",PROMPT_BUTTON_NEVERMIND:"算了",PROMPT_BUTTON_OK:"OK",PROMPT_BUTTON_CANCEL:"取消",PROMPT_BUTTON_INSERT_LINE:"插入一行",PROMPT_BUTTON_INSERT_SPACE:"插入空格",PROMPT_BUTTON_INSERT_LINK:"插入内部链接",PROMPT_BUTTON_UPPERCASE:"大写",WEB_BROWSER_DRAG_ACTION:"从浏览器拖进来时",LOCAL_FILE_DRAG_ACTION:"从本地文件系统拖进来时",INTERNAL_DRAG_ACTION:"在 Obsidian 内部拖放时",PANE_TARGET:"点击链接时",DEFAULT_ACTION_DESC:"无修饰键时的行为:"},zhTW={};const localeMap={ar:ar,cs:cz,da:da,de:de,en:en,"en-gb":enGB,es:es,fr:fr,hi:hi,id:id,it:it,ja:ja,ko:ko,nl:nl,nn:no,pl:pl,pt:pt,"pt-br":ptBR,ro:ro,ru:ru,tr:tr,"zh-cn":zhCN,"zh-tw":zhTW},locale=localeMap[LOCALE];function t$d(e){return locale&&locale[e]||en[e]}var commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function getDefaultExportFromCjs(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var mathjax={},version={};Object.defineProperty(version,"__esModule",{value:!0}),version.VERSION=void 0,version.VERSION="3.2.2";var HandlerList$1={},PrioritizedList$1={};Object.defineProperty(PrioritizedList$1,"__esModule",{value:!0}),PrioritizedList$1.PrioritizedList=void 0;var PrioritizedList=function(){function e(){this.items=[],this.items=[]}return e.prototype[Symbol.iterator]=function(){var e=0,t=this.items;return{next:function(){return{value:t[e++],done:e>t.length}}}},e.prototype.add=function(t,n){void 0===n&&(n=e.DEFAULTPRIORITY);var r=this.items.length;do{r--}while(r>=0&&n<this.items[r].priority);return this.items.splice(r+1,0,{item:t,priority:n}),t},e.prototype.remove=function(e){var t=this.items.length;do{t--}while(t>=0&&this.items[t].item!==e);t>=0&&this.items.splice(t,1)},e.DEFAULTPRIORITY=5,e}();PrioritizedList$1.PrioritizedList=PrioritizedList;var __extends$1r=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__values$F=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(HandlerList$1,"__esModule",{value:!0}),HandlerList$1.HandlerList=void 0;var PrioritizedList_js_1$1=PrioritizedList$1,HandlerList=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$1r(t,e),t.prototype.register=function(e){return this.add(e,e.priority)},t.prototype.unregister=function(e){this.remove(e)},t.prototype.handlesDocument=function(e){var t,n;try{for(var r=__values$F(this),i=r.next();!i.done;i=r.next()){var o=i.value.item;if(o.handlesDocument(e))return o}}catch(e){t={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}throw new Error("Can't find handler for document")},t.prototype.document=function(e,t){return void 0===t&&(t=null),this.handlesDocument(e).create(e,t)},t}(PrioritizedList_js_1$1.PrioritizedList);HandlerList$1.HandlerList=HandlerList;var Retries={};function handleRetriesFor(e){return new Promise((function t(n,r){try{n(e())}catch(e){e.retry&&e.retry instanceof Promise?e.retry.then((function(){return t(n,r)})).catch((function(e){return r(e)})):e.restart&&e.restart.isCallback?MathJax.Callback.After((function(){return t(n,r)}),e.restart):r(e)}}))}function retryAfter(e){var t=new Error("MathJax retry");throw t.retry=e,t}Object.defineProperty(Retries,"__esModule",{value:!0}),Retries.retryAfter=Retries.handleRetriesFor=void 0,Retries.handleRetriesFor=handleRetriesFor,Retries.retryAfter=retryAfter,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.mathjax=void 0;var t=version,n=HandlerList$1,r=Retries;e.mathjax={version:t.VERSION,handlers:new n.HandlerList,document:function(t,n){return e.mathjax.handlers.document(t,n)},handleRetriesFor:r.handleRetriesFor,retryAfter:r.retryAfter,asyncLoad:null}}(mathjax);var tex$2={},InputJax={},Options={};!function(e){var t=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},n=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},r=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))};Object.defineProperty(e,"__esModule",{value:!0}),e.lookup=e.separateOptions=e.selectOptionsFromKeys=e.selectOptions=e.userOptions=e.defaultOptions=e.insert=e.copy=e.keys=e.makeArray=e.expandable=e.Expandable=e.OPTIONS=e.REMOVE=e.APPEND=e.isObject=void 0;var i={}.constructor;function o(e){return"object"==typeof e&&null!==e&&(e.constructor===i||e.constructor===a)}e.isObject=o,e.APPEND="[+]",e.REMOVE="[-]",e.OPTIONS={invalidOption:"warn",optionError:function(t,n){if("fatal"===e.OPTIONS.invalidOption)throw new Error(t);console.warn("MathJax: "+t)}};var a=function(){};function s(e){return Object.assign(Object.create(a.prototype),e)}function l(e){return e?Object.keys(e).concat(Object.getOwnPropertySymbols(e)):[]}function c(e){var n,r,i={};try{for(var Q=t(l(e)),d=Q.next();!d.done;d=Q.next()){var u=d.value,p=Object.getOwnPropertyDescriptor(e,u),h=p.value;Array.isArray(h)?p.value=T([],h,!1):o(h)&&(p.value=c(h)),p.enumerable&&(i[u]=p)}}catch(e){n={error:e}}finally{try{d&&!d.done&&(r=Q.return)&&r.call(Q)}finally{if(n)throw n.error}}return Object.defineProperties(e.constructor===a?s({}):{},i)}function T(i,s,Q){var d,u;void 0===Q&&(Q=!0);var p=function(t){if(Q&&void 0===i[t]&&i.constructor!==a)return"symbol"==typeof t&&(t=t.toString()),e.OPTIONS.optionError('Invalid option "'.concat(t,'" (no default value).'),t),"continue";var d=s[t],u=i[t];if(!o(d)||null===u||"object"!=typeof u&&"function"!=typeof u)Array.isArray(d)?(i[t]=[],T(i[t],d,!1)):o(d)?i[t]=c(d):i[t]=d;else{var p=l(d);Array.isArray(u)&&(1===p.length&&(p[0]===e.APPEND||p[0]===e.REMOVE)&&Array.isArray(d[p[0]])||2===p.length&&p.sort().join(",")===e.APPEND+","+e.REMOVE&&Array.isArray(d[e.APPEND])&&Array.isArray(d[e.REMOVE]))?(d[e.REMOVE]&&(u=i[t]=u.filter((function(t){return d[e.REMOVE].indexOf(t)<0}))),d[e.APPEND]&&(i[t]=r(r([],n(u),!1),n(d[e.APPEND]),!1))):T(u,d,Q)}};try{for(var h=t(l(s)),m=h.next();!m.done;m=h.next())p(m.value)}catch(e){d={error:e}}finally{try{m&&!m.done&&(u=h.return)&&u.call(h)}finally{if(d)throw d.error}}return i}function Q(e){for(var n,r,i=[],o=1;o<arguments.length;o++)i[o-1]=arguments[o];var a={};try{for(var s=t(i),l=s.next();!l.done;l=s.next()){var c=l.value;e.hasOwnProperty(c)&&(a[c]=e[c])}}catch(e){n={error:e}}finally{try{l&&!l.done&&(r=s.return)&&r.call(s)}finally{if(n)throw n.error}}return a}e.Expandable=a,e.expandable=s,e.makeArray=function(e){return Array.isArray(e)?e:[e]},e.keys=l,e.copy=c,e.insert=T,e.defaultOptions=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return t.forEach((function(t){return T(e,t,!1)})),e},e.userOptions=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return t.forEach((function(t){return T(e,t,!0)})),e},e.selectOptions=Q,e.selectOptionsFromKeys=function(e,t){return Q.apply(void 0,r([e],n(Object.keys(t)),!1))},e.separateOptions=function(e){for(var n,r,i,o,a=[],s=1;s<arguments.length;s++)a[s-1]=arguments[s];var l=[];try{for(var c=t(a),T=c.next();!T.done;T=c.next()){var Q=T.value,d={},u={};try{for(var p=(i=void 0,t(Object.keys(e||{}))),h=p.next();!h.done;h=p.next()){var m=h.value;(void 0===Q[m]?u:d)[m]=e[m]}}catch(e){i={error:e}}finally{try{h&&!h.done&&(o=p.return)&&o.call(p)}finally{if(i)throw i.error}}l.push(d),e=u}}catch(e){n={error:e}}finally{try{T&&!T.done&&(r=c.return)&&r.call(c)}finally{if(n)throw n.error}}return l.unshift(e),l},e.lookup=function(e,t,n){return void 0===n&&(n=null),t.hasOwnProperty(e)?t[e]:n}}(Options);var FunctionList$1={},__extends$1q=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__values$E=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},__read$I=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$w=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))};Object.defineProperty(FunctionList$1,"__esModule",{value:!0}),FunctionList$1.FunctionList=void 0;var PrioritizedList_js_1=PrioritizedList$1,FunctionList=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$1q(t,e),t.prototype.execute=function(){for(var e,t,n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];try{for(var i=__values$E(this),o=i.next();!o.done;o=i.next()){var a=o.value;if(!1===a.item.apply(a,__spreadArray$w([],__read$I(n),!1)))return!1}}catch(t){e={error:t}}finally{try{o&&!o.done&&(t=i.return)&&t.call(i)}finally{if(e)throw e.error}}return!0},t.prototype.asyncExecute=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=-1,r=this.items;return new Promise((function(t,i){!function o(){for(var a;++n<r.length;){var s=(a=r[n]).item.apply(a,__spreadArray$w([],__read$I(e),!1));if(s instanceof Promise)return void s.then(o).catch((function(e){return i(e)}));if(!1===s)return void t(!1)}t(!0)}()}))},t}(PrioritizedList_js_1.PrioritizedList);FunctionList$1.FunctionList=FunctionList,Object.defineProperty(InputJax,"__esModule",{value:!0}),InputJax.AbstractInputJax=void 0;var Options_js_1$a=Options,FunctionList_js_1$1=FunctionList$1,AbstractInputJax=function(){function e(e){void 0===e&&(e={}),this.adaptor=null,this.mmlFactory=null;var t=this.constructor;this.options=(0,Options_js_1$a.userOptions)((0,Options_js_1$a.defaultOptions)({},t.OPTIONS),e),this.preFilters=new FunctionList_js_1$1.FunctionList,this.postFilters=new FunctionList_js_1$1.FunctionList}return Object.defineProperty(e.prototype,"name",{get:function(){return this.constructor.NAME},enumerable:!1,configurable:!0}),e.prototype.setAdaptor=function(e){this.adaptor=e},e.prototype.setMmlFactory=function(e){this.mmlFactory=e},e.prototype.initialize=function(){},e.prototype.reset=function(){},Object.defineProperty(e.prototype,"processStrings",{get:function(){return!0},enumerable:!1,configurable:!0}),e.prototype.findMath=function(e,t){return[]},e.prototype.executeFilters=function(e,t,n,r){var i={math:t,document:n,data:r};return e.execute(i),i.data},e.NAME="generic",e.OPTIONS={},e}();InputJax.AbstractInputJax=AbstractInputJax;var FindTeX$1={},FindMath={};Object.defineProperty(FindMath,"__esModule",{value:!0}),FindMath.AbstractFindMath=void 0;var Options_js_1$9=Options,AbstractFindMath=function(){function e(e){var t=this.constructor;this.options=(0,Options_js_1$9.userOptions)((0,Options_js_1$9.defaultOptions)({},t.OPTIONS),e)}return e.OPTIONS={},e}();FindMath.AbstractFindMath=AbstractFindMath;var string={},__read$H=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$v=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))};function sortLength(e,t){return e.length!==t.length?t.length-e.length:e===t?0:e<t?-1:1}function quotePattern(e){return e.replace(/([\^$(){}+*?\-|\[\]\:\\])/g,"\\$1")}function unicodeChars(e){return Array.from(e).map((function(e){return e.codePointAt(0)}))}function unicodeString(e){return String.fromCodePoint.apply(String,__spreadArray$v([],__read$H(e),!1))}function isPercent(e){return!!e.match(/%\s*$/)}function split(e){return e.trim().split(/\s+/)}Object.defineProperty(string,"__esModule",{value:!0}),string.split=string.isPercent=string.unicodeString=string.unicodeChars=string.quotePattern=string.sortLength=void 0,string.sortLength=sortLength,string.quotePattern=quotePattern,string.unicodeChars=unicodeChars,string.unicodeString=unicodeString,string.isPercent=isPercent,string.split=split;var MathItem={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.newState=e.STATE=e.AbstractMathItem=e.protoItem=void 0,e.protoItem=function(e,t,n,r,i,o,a){return void 0===a&&(a=null),{open:e,math:t,close:n,n:r,start:{n:i},end:{n:o},display:a}};var t=function(){function t(t,n,r,i,o){void 0===r&&(r=!0),void 0===i&&(i={i:0,n:0,delim:""}),void 0===o&&(o={i:0,n:0,delim:""}),this.root=null,this.typesetRoot=null,this.metrics={},this.inputData={},this.outputData={},this._state=e.STATE.UNPROCESSED,this.math=t,this.inputJax=n,this.display=r,this.start=i,this.end=o,this.root=null,this.typesetRoot=null,this.metrics={},this.inputData={},this.outputData={}}return Object.defineProperty(t.prototype,"isEscaped",{get:function(){return null===this.display},enumerable:!1,configurable:!0}),t.prototype.render=function(e){e.renderActions.renderMath(this,e)},t.prototype.rerender=function(t,n){void 0===n&&(n=e.STATE.RERENDER),this.state()>=n&&this.state(n-1),t.renderActions.renderMath(this,t,n)},t.prototype.convert=function(t,n){void 0===n&&(n=e.STATE.LAST),t.renderActions.renderConvert(this,t,n)},t.prototype.compile=function(t){this.state()<e.STATE.COMPILED&&(this.root=this.inputJax.compile(this,t),this.state(e.STATE.COMPILED))},t.prototype.typeset=function(t){this.state()<e.STATE.TYPESET&&(this.typesetRoot=t.outputJax[this.isEscaped?"escaped":"typeset"](this,t),this.state(e.STATE.TYPESET))},t.prototype.updateDocument=function(e){},t.prototype.removeFromDocument=function(e){},t.prototype.setMetrics=function(e,t,n,r,i){this.metrics={em:e,ex:t,containerWidth:n,lineWidth:r,scale:i}},t.prototype.state=function(t,n){return void 0===t&&(t=null),void 0===n&&(n=!1),null!=t&&(t<e.STATE.INSERTED&&this._state>=e.STATE.INSERTED&&this.removeFromDocument(n),t<e.STATE.TYPESET&&this._state>=e.STATE.TYPESET&&(this.outputData={}),t<e.STATE.COMPILED&&this._state>=e.STATE.COMPILED&&(this.inputData={}),this._state=t),this._state},t.prototype.reset=function(t){void 0===t&&(t=!1),this.state(e.STATE.UNPROCESSED,t)},t}();e.AbstractMathItem=t,e.STATE={UNPROCESSED:0,FINDMATH:10,COMPILED:20,CONVERT:100,METRICS:110,RERENDER:125,TYPESET:150,INSERTED:200,LAST:1e4},e.newState=function(t,n){if(t in e.STATE)throw Error("State "+t+" already exists");e.STATE[t]=n}}(MathItem);var __extends$1p=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__read$G=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(FindTeX$1,"__esModule",{value:!0}),FindTeX$1.FindTeX=void 0;var FindMath_js_1=FindMath,string_js_1$7=string,MathItem_js_1$3=MathItem,FindTeX=function(e){function t(t){var n=e.call(this,t)||this;return n.getPatterns(),n}return __extends$1p(t,e),t.prototype.getPatterns=function(){var e=this,t=this.options,n=[],r=[],i=[];this.end={},this.env=this.sub=0;var o=1;t.inlineMath.forEach((function(t){return e.addPattern(n,t,!1)})),t.displayMath.forEach((function(t){return e.addPattern(n,t,!0)})),n.length&&r.push(n.sort(string_js_1$7.sortLength).join("|")),t.processEnvironments&&(r.push("\\\\begin\\s*\\{([^}]*)\\}"),this.env=o,o++),t.processEscapes&&i.push("\\\\([\\\\$])"),t.processRefs&&i.push("(\\\\(?:eq)?ref\\s*\\{[^}]*\\})"),i.length&&(r.push("("+i.join("|")+")"),this.sub=o),this.start=new RegExp(r.join("|"),"g"),this.hasPatterns=r.length>0},t.prototype.addPattern=function(e,t,n){var r=__read$G(t,2),i=r[0],o=r[1];e.push((0,string_js_1$7.quotePattern)(i)),this.end[i]=[o,n,this.endPattern(o)]},t.prototype.endPattern=function(e,t){return new RegExp((t||(0,string_js_1$7.quotePattern)(e))+"|\\\\(?:[a-zA-Z]|.)|[{}]","g")},t.prototype.findEnd=function(e,t,n,r){for(var i,o=__read$G(r,3),a=o[0],s=o[1],l=o[2],c=l.lastIndex=n.index+n[0].length,T=0;i=l.exec(e);){if((i[1]||i[0])===a&&0===T)return(0,MathItem_js_1$3.protoItem)(n[0],e.substr(c,i.index-c),i[0],t,n.index,i.index+i[0].length,s);"{"===i[0]?T++:"}"===i[0]&&T&&T--}return null},t.prototype.findMathInString=function(e,t,n){var r,i;for(this.start.lastIndex=0;r=this.start.exec(n);){if(void 0!==r[this.env]&&this.env){var o="\\\\end\\s*(\\{"+(0,string_js_1$7.quotePattern)(r[this.env])+"\\})";(i=this.findEnd(n,t,r,["{"+r[this.env]+"}",!0,this.endPattern(null,o)]))&&(i.math=i.open+i.math+i.close,i.open=i.close="")}else if(void 0!==r[this.sub]&&this.sub){var a=r[this.sub];o=r.index+r[this.sub].length,i=2===a.length?(0,MathItem_js_1$3.protoItem)("",a.substr(1),"",t,r.index,o):(0,MathItem_js_1$3.protoItem)("",a,"",t,r.index,o,!1)}else i=this.findEnd(n,t,r,this.end[r[0]]);i&&(e.push(i),this.start.lastIndex=i.end.n)}},t.prototype.findMath=function(e){var t=[];if(this.hasPatterns)for(var n=0,r=e.length;n<r;n++)this.findMathInString(t,n,e[n]);return t},t.OPTIONS={inlineMath:[["\\(","\\)"]],displayMath:[["$$","$$"],["\\[","\\]"]],processEscapes:!0,processEnvironments:!0,processRefs:!0},t}(FindMath_js_1.AbstractFindMath);FindTeX$1.FindTeX=FindTeX;var FilterUtil$1={},MmlNode={},Attributes={};!function(e){var t=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.Attributes=e.INHERIT=void 0,e.INHERIT="_inherit_";var n=function(){function n(e,t){this.global=t,this.defaults=Object.create(t),this.inherited=Object.create(this.defaults),this.attributes=Object.create(this.inherited),Object.assign(this.defaults,e)}return n.prototype.set=function(e,t){this.attributes[e]=t},n.prototype.setList=function(e){Object.assign(this.attributes,e)},n.prototype.get=function(t){var n=this.attributes[t];return n===e.INHERIT&&(n=this.global[t]),n},n.prototype.getExplicit=function(e){if(this.attributes.hasOwnProperty(e))return this.attributes[e]},n.prototype.getList=function(){for(var e,n,r=[],i=0;i<arguments.length;i++)r[i]=arguments[i];var o={};try{for(var a=t(r),s=a.next();!s.done;s=a.next()){var l=s.value;o[l]=this.get(l)}}catch(t){e={error:t}}finally{try{s&&!s.done&&(n=a.return)&&n.call(a)}finally{if(e)throw e.error}}return o},n.prototype.setInherited=function(e,t){this.inherited[e]=t},n.prototype.getInherited=function(e){return this.inherited[e]},n.prototype.getDefault=function(e){return this.defaults[e]},n.prototype.isSet=function(e){return this.attributes.hasOwnProperty(e)||this.inherited.hasOwnProperty(e)},n.prototype.hasDefault=function(e){return e in this.defaults},n.prototype.getExplicitNames=function(){return Object.keys(this.attributes)},n.prototype.getInheritedNames=function(){return Object.keys(this.inherited)},n.prototype.getDefaultNames=function(){return Object.keys(this.defaults)},n.prototype.getGlobalNames=function(){return Object.keys(this.global)},n.prototype.getAllAttributes=function(){return this.attributes},n.prototype.getAllInherited=function(){return this.inherited},n.prototype.getAllDefaults=function(){return this.defaults},n.prototype.getAllGlobals=function(){return this.global},n}();e.Attributes=n}(Attributes);var Node={},__extends$1o=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$E=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$E=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$E.apply(this,arguments)},__values$D=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(Node,"__esModule",{value:!0}),Node.AbstractEmptyNode=Node.AbstractNode=void 0;var AbstractNode=function(){function e(e,t,n){var r,i;void 0===t&&(t={}),void 0===n&&(n=[]),this.factory=e,this.parent=null,this.properties={},this.childNodes=[];try{for(var o=__values$D(Object.keys(t)),a=o.next();!a.done;a=o.next()){var s=a.value;this.setProperty(s,t[s])}}catch(e){r={error:e}}finally{try{a&&!a.done&&(i=o.return)&&i.call(o)}finally{if(r)throw r.error}}n.length&&this.setChildren(n)}return Object.defineProperty(e.prototype,"kind",{get:function(){return"unknown"},enumerable:!1,configurable:!0}),e.prototype.setProperty=function(e,t){this.properties[e]=t},e.prototype.getProperty=function(e){return this.properties[e]},e.prototype.getPropertyNames=function(){return Object.keys(this.properties)},e.prototype.getAllProperties=function(){return this.properties},e.prototype.removeProperty=function(){for(var e,t,n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];try{for(var i=__values$D(n),o=i.next();!o.done;o=i.next()){var a=o.value;delete this.properties[a]}}catch(t){e={error:t}}finally{try{o&&!o.done&&(t=i.return)&&t.call(i)}finally{if(e)throw e.error}}},e.prototype.isKind=function(e){return this.factory.nodeIsKind(this,e)},e.prototype.setChildren=function(e){var t,n;this.childNodes=[];try{for(var r=__values$D(e),i=r.next();!i.done;i=r.next()){var o=i.value;this.appendChild(o)}}catch(e){t={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}},e.prototype.appendChild=function(e){return this.childNodes.push(e),e.parent=this,e},e.prototype.replaceChild=function(e,t){var n=this.childIndex(t);return null!==n&&(this.childNodes[n]=e,e.parent=this,t.parent=null),e},e.prototype.removeChild=function(e){var t=this.childIndex(e);return null!==t&&(this.childNodes.splice(t,1),e.parent=null),e},e.prototype.childIndex=function(e){var t=this.childNodes.indexOf(e);return-1===t?null:t},e.prototype.copy=function(){var e,t,n=this.factory.create(this.kind);n.properties=__assign$E({},this.properties);try{for(var r=__values$D(this.childNodes||[]),i=r.next();!i.done;i=r.next()){var o=i.value;o&&n.appendChild(o.copy())}}catch(t){e={error:t}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}return n},e.prototype.findNodes=function(e){var t=[];return this.walkTree((function(n){n.isKind(e)&&t.push(n)})),t},e.prototype.walkTree=function(e,t){var n,r;e(this,t);try{for(var i=__values$D(this.childNodes),o=i.next();!o.done;o=i.next()){var a=o.value;a&&a.walkTree(e,t)}}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}return t},e.prototype.toString=function(){return this.kind+"("+this.childNodes.join(",")+")"},e}();Node.AbstractNode=AbstractNode;var AbstractEmptyNode=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$1o(t,e),t.prototype.setChildren=function(e){},t.prototype.appendChild=function(e){return e},t.prototype.replaceChild=function(e,t){return t},t.prototype.childIndex=function(e){return null},t.prototype.walkTree=function(e,t){return e(this,t),t},t.prototype.toString=function(){return this.kind},t}(AbstractNode);Node.AbstractEmptyNode=AbstractEmptyNode,function(e){var t,n=commonjsGlobal&&commonjsGlobal.__extends||(t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},t(e,n)},function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),r=commonjsGlobal&&commonjsGlobal.__assign||function(){return r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},r.apply(this,arguments)},i=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},o=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(e,"__esModule",{value:!0}),e.XMLNode=e.TextNode=e.AbstractMmlEmptyNode=e.AbstractMmlBaseNode=e.AbstractMmlLayoutNode=e.AbstractMmlTokenNode=e.AbstractMmlNode=e.indentAttributes=e.TEXCLASSNAMES=e.TEXCLASS=void 0;var a=Attributes,s=Node;e.TEXCLASS={ORD:0,OP:1,BIN:2,REL:3,OPEN:4,CLOSE:5,PUNCT:6,INNER:7,VCENTER:8,NONE:-1},e.TEXCLASSNAMES=["ORD","OP","BIN","REL","OPEN","CLOSE","PUNCT","INNER","VCENTER"];var l=["","thinmathspace","mediummathspace","thickmathspace"],c=[[0,-1,2,3,0,0,0,1],[-1,-1,0,3,0,0,0,1],[2,2,0,0,2,0,0,2],[3,3,0,0,3,0,0,3],[0,0,0,0,0,0,0,0],[0,-1,2,3,0,0,0,1],[1,1,0,1,1,1,1,1],[1,-1,2,3,1,0,1,1]];e.indentAttributes=["indentalign","indentalignfirst","indentshift","indentshiftfirst"];var T=function(t){function s(e,n,r){void 0===n&&(n={}),void 0===r&&(r=[]);var i=t.call(this,e)||this;return i.prevClass=null,i.prevLevel=null,i.texclass=null,i.arity<0&&(i.childNodes=[e.create("inferredMrow")],i.childNodes[0].parent=i),i.setChildren(r),i.attributes=new a.Attributes(e.getNodeClass(i.kind).defaults,e.getNodeClass("math").defaults),i.attributes.setList(n),i}return n(s,t),s.prototype.copy=function(e){var t,n,o,a;void 0===e&&(e=!1);var s=this.factory.create(this.kind);if(s.properties=r({},this.properties),this.attributes){var l=this.attributes.getAllAttributes();try{for(var c=i(Object.keys(l)),T=c.next();!T.done;T=c.next()){var Q=T.value;("id"!==Q||e)&&s.attributes.set(Q,l[Q])}}catch(e){t={error:e}}finally{try{T&&!T.done&&(n=c.return)&&n.call(c)}finally{if(t)throw t.error}}}if(this.childNodes&&this.childNodes.length){var d=this.childNodes;1===d.length&&d[0].isInferred&&(d=d[0].childNodes);try{for(var u=i(d),p=u.next();!p.done;p=u.next()){var h=p.value;h?s.appendChild(h.copy()):s.childNodes.push(null)}}catch(e){o={error:e}}finally{try{p&&!p.done&&(a=u.return)&&a.call(u)}finally{if(o)throw o.error}}}return s},Object.defineProperty(s.prototype,"texClass",{get:function(){return this.texclass},set:function(e){this.texclass=e},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"isToken",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"isEmbellished",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"isSpacelike",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"linebreakContainer",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"hasNewLine",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"arity",{get:function(){return 1/0},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"isInferred",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"Parent",{get:function(){for(var e=this.parent;e&&e.notParent;)e=e.Parent;return e},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"notParent",{get:function(){return!1},enumerable:!1,configurable:!0}),s.prototype.setChildren=function(e){return this.arity<0?this.childNodes[0].setChildren(e):t.prototype.setChildren.call(this,e)},s.prototype.appendChild=function(e){var n,r,o=this;if(this.arity<0)return this.childNodes[0].appendChild(e),e;if(e.isInferred){if(this.arity===1/0)return e.childNodes.forEach((function(e){return t.prototype.appendChild.call(o,e)})),e;var a=e;(e=this.factory.create("mrow")).setChildren(a.childNodes),e.attributes=a.attributes;try{for(var s=i(a.getPropertyNames()),l=s.next();!l.done;l=s.next()){var c=l.value;e.setProperty(c,a.getProperty(c))}}catch(e){n={error:e}}finally{try{l&&!l.done&&(r=s.return)&&r.call(s)}finally{if(n)throw n.error}}}return t.prototype.appendChild.call(this,e)},s.prototype.replaceChild=function(e,n){return this.arity<0?(this.childNodes[0].replaceChild(e,n),e):t.prototype.replaceChild.call(this,e,n)},s.prototype.core=function(){return this},s.prototype.coreMO=function(){return this},s.prototype.coreIndex=function(){return 0},s.prototype.childPosition=function(){for(var e,t,n=this,r=n.parent;r&&r.notParent;)n=r,r=r.parent;if(r){var o=0;try{for(var a=i(r.childNodes),s=a.next();!s.done;s=a.next()){if(s.value===n)return o;o++}}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=a.return)&&t.call(a)}finally{if(e)throw e.error}}}return null},s.prototype.setTeXclass=function(e){return this.getPrevClass(e),null!=this.texClass?this:e},s.prototype.updateTeXclass=function(e){e&&(this.prevClass=e.prevClass,this.prevLevel=e.prevLevel,e.prevClass=e.prevLevel=null,this.texClass=e.texClass)},s.prototype.getPrevClass=function(e){e&&(this.prevClass=e.texClass,this.prevLevel=e.attributes.get("scriptlevel"))},s.prototype.texSpacing=function(){var t=null!=this.prevClass?this.prevClass:e.TEXCLASS.NONE,n=this.texClass||e.TEXCLASS.ORD;if(t===e.TEXCLASS.NONE||n===e.TEXCLASS.NONE)return"";t===e.TEXCLASS.VCENTER&&(t=e.TEXCLASS.ORD),n===e.TEXCLASS.VCENTER&&(n=e.TEXCLASS.ORD);var r=c[t][n];return(this.prevLevel>0||this.attributes.get("scriptlevel")>0)&&r>=0?"":l[Math.abs(r)]},s.prototype.hasSpacingAttributes=function(){return this.isEmbellished&&this.coreMO().hasSpacingAttributes()},s.prototype.setInheritedAttributes=function(e,t,n,r){var a,l;void 0===e&&(e={}),void 0===t&&(t=!1),void 0===n&&(n=0),void 0===r&&(r=!1);var c=this.attributes.getAllDefaults();try{for(var T=i(Object.keys(e)),Q=T.next();!Q.done;Q=T.next()){var d=Q.value;if(c.hasOwnProperty(d)||s.alwaysInherit.hasOwnProperty(d)){var u=o(e[d],2),p=u[0],h=u[1];((s.noInherit[p]||{})[this.kind]||{})[d]||this.attributes.setInherited(d,h)}}}catch(e){a={error:e}}finally{try{Q&&!Q.done&&(l=T.return)&&l.call(T)}finally{if(a)throw a.error}}void 0===this.attributes.getExplicit("displaystyle")&&this.attributes.setInherited("displaystyle",t),void 0===this.attributes.getExplicit("scriptlevel")&&this.attributes.setInherited("scriptlevel",n),r&&this.setProperty("texprimestyle",r);var m=this.arity;if(m>=0&&m!==1/0&&(1===m&&0===this.childNodes.length||1!==m&&this.childNodes.length!==m))if(m<this.childNodes.length)this.childNodes=this.childNodes.slice(0,m);else for(;this.childNodes.length<m;)this.appendChild(this.factory.create("mrow"));this.setChildInheritedAttributes(e,t,n,r)},s.prototype.setChildInheritedAttributes=function(e,t,n,r){var o,a;try{for(var s=i(this.childNodes),l=s.next();!l.done;l=s.next())l.value.setInheritedAttributes(e,t,n,r)}catch(e){o={error:e}}finally{try{l&&!l.done&&(a=s.return)&&a.call(s)}finally{if(o)throw o.error}}},s.prototype.addInheritedAttributes=function(e,t){var n,o,a=r({},e);try{for(var s=i(Object.keys(t)),l=s.next();!l.done;l=s.next()){var c=l.value;"displaystyle"!==c&&"scriptlevel"!==c&&"style"!==c&&(a[c]=[this.kind,t[c]])}}catch(e){n={error:e}}finally{try{l&&!l.done&&(o=s.return)&&o.call(s)}finally{if(n)throw n.error}}return a},s.prototype.inheritAttributesFrom=function(e){var t=e.attributes,n=t.get("displaystyle"),r=t.get("scriptlevel"),i=t.isSet("mathsize")?{mathsize:["math",t.get("mathsize")]}:{},o=e.getProperty("texprimestyle")||!1;this.setInheritedAttributes(i,n,r,o)},s.prototype.verifyTree=function(e){if(void 0===e&&(e=null),null!==e){this.verifyAttributes(e);var t=this.arity;e.checkArity&&t>=0&&t!==1/0&&(1===t&&0===this.childNodes.length||1!==t&&this.childNodes.length!==t)&&this.mError('Wrong number of children for "'+this.kind+'" node',e,!0),this.verifyChildren(e)}},s.prototype.verifyAttributes=function(e){var t,n;if(e.checkAttributes){var r=this.attributes,o=[];try{for(var a=i(r.getExplicitNames()),s=a.next();!s.done;s=a.next()){var l=s.value;"data-"===l.substr(0,5)||void 0!==r.getDefault(l)||l.match(/^(?:class|style|id|(?:xlink:)?href)$/)||o.push(l)}}catch(e){t={error:e}}finally{try{s&&!s.done&&(n=a.return)&&n.call(a)}finally{if(t)throw t.error}}o.length&&this.mError("Unknown attributes for "+this.kind+" node: "+o.join(", "),e)}},s.prototype.verifyChildren=function(e){var t,n;try{for(var r=i(this.childNodes),o=r.next();!o.done;o=r.next())o.value.verifyTree(e)}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}},s.prototype.mError=function(e,t,n){if(void 0===n&&(n=!1),this.parent&&this.parent.isKind("merror"))return null;var r=this.factory.create("merror");if(r.attributes.set("data-mjx-message",e),t.fullErrors||n){var i=this.factory.create("mtext"),o=this.factory.create("text");o.setText(t.fullErrors?e:this.kind),i.appendChild(o),r.appendChild(i),this.parent.replaceChild(r,this)}else this.parent.replaceChild(r,this),r.appendChild(this);return r},s.defaults={mathbackground:a.INHERIT,mathcolor:a.INHERIT,mathsize:a.INHERIT,dir:a.INHERIT},s.noInherit={mstyle:{mpadded:{width:!0,height:!0,depth:!0,lspace:!0,voffset:!0},mtable:{width:!0,height:!0,depth:!0,align:!0}},maligngroup:{mrow:{groupalign:!0},mtable:{groupalign:!0}}},s.alwaysInherit={scriptminsize:!0,scriptsizemultiplier:!0},s.verifyDefaults={checkArity:!0,checkAttributes:!1,fullErrors:!1,fixMmultiscripts:!0,fixMtables:!0},s}(s.AbstractNode);e.AbstractMmlNode=T;var Q=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),Object.defineProperty(t.prototype,"isToken",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.getText=function(){var e,t,n="";try{for(var r=i(this.childNodes),o=r.next();!o.done;o=r.next()){var a=o.value;a instanceof h&&(n+=a.getText())}}catch(t){e={error:t}}finally{try{o&&!o.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}return n},t.prototype.setChildInheritedAttributes=function(e,t,n,r){var o,a;try{for(var s=i(this.childNodes),l=s.next();!l.done;l=s.next()){var c=l.value;c instanceof T&&c.setInheritedAttributes(e,t,n,r)}}catch(e){o={error:e}}finally{try{l&&!l.done&&(a=s.return)&&a.call(s)}finally{if(o)throw o.error}}},t.prototype.walkTree=function(e,t){var n,r;e(this,t);try{for(var o=i(this.childNodes),a=o.next();!a.done;a=o.next()){var s=a.value;s instanceof T&&s.walkTree(e,t)}}catch(e){n={error:e}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return t},t.defaults=r(r({},T.defaults),{mathvariant:"normal",mathsize:a.INHERIT}),t}(T);e.AbstractMmlTokenNode=Q;var d=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),Object.defineProperty(t.prototype,"isSpacelike",{get:function(){return this.childNodes[0].isSpacelike},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isEmbellished",{get:function(){return this.childNodes[0].isEmbellished},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"arity",{get:function(){return-1},enumerable:!1,configurable:!0}),t.prototype.core=function(){return this.childNodes[0]},t.prototype.coreMO=function(){return this.childNodes[0].coreMO()},t.prototype.setTeXclass=function(e){return e=this.childNodes[0].setTeXclass(e),this.updateTeXclass(this.childNodes[0]),e},t.defaults=T.defaults,t}(T);e.AbstractMmlLayoutNode=d;var u=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return n(r,t),Object.defineProperty(r.prototype,"isEmbellished",{get:function(){return this.childNodes[0].isEmbellished},enumerable:!1,configurable:!0}),r.prototype.core=function(){return this.childNodes[0]},r.prototype.coreMO=function(){return this.childNodes[0].coreMO()},r.prototype.setTeXclass=function(t){var n,r;this.getPrevClass(t),this.texClass=e.TEXCLASS.ORD;var o=this.childNodes[0];o?this.isEmbellished||o.isKind("mi")?(t=o.setTeXclass(t),this.updateTeXclass(this.core())):(o.setTeXclass(null),t=this):t=this;try{for(var a=i(this.childNodes.slice(1)),s=a.next();!s.done;s=a.next()){var l=s.value;l&&l.setTeXclass(null)}}catch(e){n={error:e}}finally{try{s&&!s.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}return t},r.defaults=T.defaults,r}(T);e.AbstractMmlBaseNode=u;var p=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return n(r,t),Object.defineProperty(r.prototype,"isToken",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"isEmbellished",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"isSpacelike",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"linebreakContainer",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"hasNewLine",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"arity",{get:function(){return 0},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"isInferred",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"notParent",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"Parent",{get:function(){return this.parent},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"texClass",{get:function(){return e.TEXCLASS.NONE},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"prevClass",{get:function(){return e.TEXCLASS.NONE},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"prevLevel",{get:function(){return 0},enumerable:!1,configurable:!0}),r.prototype.hasSpacingAttributes=function(){return!1},Object.defineProperty(r.prototype,"attributes",{get:function(){return null},enumerable:!1,configurable:!0}),r.prototype.core=function(){return this},r.prototype.coreMO=function(){return this},r.prototype.coreIndex=function(){return 0},r.prototype.childPosition=function(){return 0},r.prototype.setTeXclass=function(e){return e},r.prototype.texSpacing=function(){return""},r.prototype.setInheritedAttributes=function(e,t,n,r){},r.prototype.inheritAttributesFrom=function(e){},r.prototype.verifyTree=function(e){},r.prototype.mError=function(e,t,n){return null},r}(s.AbstractEmptyNode);e.AbstractMmlEmptyNode=p;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.text="",t}return n(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"text"},enumerable:!1,configurable:!0}),t.prototype.getText=function(){return this.text},t.prototype.setText=function(e){return this.text=e,this},t.prototype.copy=function(){return this.factory.create(this.kind).setText(this.getText())},t.prototype.toString=function(){return this.text},t}(p);e.TextNode=h;var m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.xml=null,t.adaptor=null,t}return n(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"XML"},enumerable:!1,configurable:!0}),t.prototype.getXML=function(){return this.xml},t.prototype.setXML=function(e,t){return void 0===t&&(t=null),this.xml=e,this.adaptor=t,this},t.prototype.getSerializedXML=function(){return this.adaptor.serializeXML(this.xml)},t.prototype.copy=function(){return this.factory.create(this.kind).setXML(this.adaptor.clone(this.xml))},t.prototype.toString=function(){return"XML data"},t}(p);e.XMLNode=m}(MmlNode);var NodeUtil$1={},mo$2={},OperatorDictionary={};!function(e){var t=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.OPTABLE=e.MMLSPACING=e.getRange=e.RANGES=e.MO=e.OPDEF=void 0;var n=MmlNode;function r(e,t,r,i){return void 0===r&&(r=n.TEXCLASS.BIN),void 0===i&&(i=null),[e,t,r,i]}e.OPDEF=r,e.MO={ORD:r(0,0,n.TEXCLASS.ORD),ORD11:r(1,1,n.TEXCLASS.ORD),ORD21:r(2,1,n.TEXCLASS.ORD),ORD02:r(0,2,n.TEXCLASS.ORD),ORD55:r(5,5,n.TEXCLASS.ORD),NONE:r(0,0,n.TEXCLASS.NONE),OP:r(1,2,n.TEXCLASS.OP,{largeop:!0,movablelimits:!0,symmetric:!0}),OPFIXED:r(1,2,n.TEXCLASS.OP,{largeop:!0,movablelimits:!0}),INTEGRAL:r(0,1,n.TEXCLASS.OP,{largeop:!0,symmetric:!0}),INTEGRAL2:r(1,2,n.TEXCLASS.OP,{largeop:!0,symmetric:!0}),BIN3:r(3,3,n.TEXCLASS.BIN),BIN4:r(4,4,n.TEXCLASS.BIN),BIN01:r(0,1,n.TEXCLASS.BIN),BIN5:r(5,5,n.TEXCLASS.BIN),TALLBIN:r(4,4,n.TEXCLASS.BIN,{stretchy:!0}),BINOP:r(4,4,n.TEXCLASS.BIN,{largeop:!0,movablelimits:!0}),REL:r(5,5,n.TEXCLASS.REL),REL1:r(1,1,n.TEXCLASS.REL,{stretchy:!0}),REL4:r(4,4,n.TEXCLASS.REL),RELSTRETCH:r(5,5,n.TEXCLASS.REL,{stretchy:!0}),RELACCENT:r(5,5,n.TEXCLASS.REL,{accent:!0}),WIDEREL:r(5,5,n.TEXCLASS.REL,{accent:!0,stretchy:!0}),OPEN:r(0,0,n.TEXCLASS.OPEN,{fence:!0,stretchy:!0,symmetric:!0}),CLOSE:r(0,0,n.TEXCLASS.CLOSE,{fence:!0,stretchy:!0,symmetric:!0}),INNER:r(0,0,n.TEXCLASS.INNER),PUNCT:r(0,3,n.TEXCLASS.PUNCT),ACCENT:r(0,0,n.TEXCLASS.ORD,{accent:!0}),WIDEACCENT:r(0,0,n.TEXCLASS.ORD,{accent:!0,stretchy:!0})},e.RANGES=[[32,127,n.TEXCLASS.REL,"mo"],[160,191,n.TEXCLASS.ORD,"mo"],[192,591,n.TEXCLASS.ORD,"mi"],[688,879,n.TEXCLASS.ORD,"mo"],[880,6688,n.TEXCLASS.ORD,"mi"],[6832,6911,n.TEXCLASS.ORD,"mo"],[6912,7615,n.TEXCLASS.ORD,"mi"],[7616,7679,n.TEXCLASS.ORD,"mo"],[7680,8191,n.TEXCLASS.ORD,"mi"],[8192,8303,n.TEXCLASS.ORD,"mo"],[8304,8351,n.TEXCLASS.ORD,"mo"],[8448,8527,n.TEXCLASS.ORD,"mi"],[8528,8591,n.TEXCLASS.ORD,"mn"],[8592,8703,n.TEXCLASS.REL,"mo"],[8704,8959,n.TEXCLASS.BIN,"mo"],[8960,9215,n.TEXCLASS.ORD,"mo"],[9312,9471,n.TEXCLASS.ORD,"mn"],[9472,10223,n.TEXCLASS.ORD,"mo"],[10224,10239,n.TEXCLASS.REL,"mo"],[10240,10495,n.TEXCLASS.ORD,"mtext"],[10496,10623,n.TEXCLASS.REL,"mo"],[10624,10751,n.TEXCLASS.ORD,"mo"],[10752,11007,n.TEXCLASS.BIN,"mo"],[11008,11055,n.TEXCLASS.ORD,"mo"],[11056,11087,n.TEXCLASS.REL,"mo"],[11088,11263,n.TEXCLASS.ORD,"mo"],[11264,11744,n.TEXCLASS.ORD,"mi"],[11776,11903,n.TEXCLASS.ORD,"mo"],[11904,12255,n.TEXCLASS.ORD,"mi","normal"],[12272,12351,n.TEXCLASS.ORD,"mo"],[12352,42143,n.TEXCLASS.ORD,"mi","normal"],[42192,43055,n.TEXCLASS.ORD,"mi"],[43056,43071,n.TEXCLASS.ORD,"mn"],[43072,55295,n.TEXCLASS.ORD,"mi"],[63744,64255,n.TEXCLASS.ORD,"mi","normal"],[64256,65023,n.TEXCLASS.ORD,"mi"],[65024,65135,n.TEXCLASS.ORD,"mo"],[65136,65791,n.TEXCLASS.ORD,"mi"],[65792,65935,n.TEXCLASS.ORD,"mn"],[65936,74751,n.TEXCLASS.ORD,"mi","normal"],[74752,74879,n.TEXCLASS.ORD,"mn"],[74880,113823,n.TEXCLASS.ORD,"mi","normal"],[113824,119391,n.TEXCLASS.ORD,"mo"],[119648,119679,n.TEXCLASS.ORD,"mn"],[119808,120781,n.TEXCLASS.ORD,"mi"],[120782,120831,n.TEXCLASS.ORD,"mn"],[122624,129023,n.TEXCLASS.ORD,"mo"],[129024,129279,n.TEXCLASS.REL,"mo"],[129280,129535,n.TEXCLASS.ORD,"mo"],[131072,195103,n.TEXCLASS.ORD,"mi","normnal"]],e.getRange=function(n){var r,i,o=n.codePointAt(0);try{for(var a=t(e.RANGES),s=a.next();!s.done;s=a.next()){var l=s.value;if(o<=l[1]){if(o>=l[0])return l;break}}}catch(e){r={error:e}}finally{try{s&&!s.done&&(i=a.return)&&i.call(a)}finally{if(r)throw r.error}}return null},e.MMLSPACING=[[0,0],[1,2],[3,3],[4,4],[0,0],[0,0],[0,3]],e.OPTABLE={prefix:{"(":e.MO.OPEN,"+":e.MO.BIN01,"-":e.MO.BIN01,"[":e.MO.OPEN,"{":e.MO.OPEN,"|":e.MO.OPEN,"||":[0,0,n.TEXCLASS.BIN,{fence:!0,stretchy:!0,symmetric:!0}],"|||":[0,0,n.TEXCLASS.ORD,{fence:!0,stretchy:!0,symmetric:!0}],"¬":e.MO.ORD21,"±":e.MO.BIN01,"‖":[0,0,n.TEXCLASS.ORD,{fence:!0,stretchy:!0}],"‘":[0,0,n.TEXCLASS.OPEN,{fence:!0}],"“":[0,0,n.TEXCLASS.OPEN,{fence:!0}],"ⅅ":e.MO.ORD21,"ⅆ":r(2,0,n.TEXCLASS.ORD),"∀":e.MO.ORD21,"∂":e.MO.ORD21,"∃":e.MO.ORD21,"∄":e.MO.ORD21,"∇":e.MO.ORD21,"∏":e.MO.OP,"∐":e.MO.OP,"∑":e.MO.OP,"−":e.MO.BIN01,"∓":e.MO.BIN01,"√":[1,1,n.TEXCLASS.ORD,{stretchy:!0}],"∛":e.MO.ORD11,"∜":e.MO.ORD11,"∠":e.MO.ORD,"∡":e.MO.ORD,"∢":e.MO.ORD,"∫":e.MO.INTEGRAL,"∬":e.MO.INTEGRAL,"∭":e.MO.INTEGRAL,"∮":e.MO.INTEGRAL,"∯":e.MO.INTEGRAL,"∰":e.MO.INTEGRAL,"∱":e.MO.INTEGRAL,"∲":e.MO.INTEGRAL,"∳":e.MO.INTEGRAL,"⋀":e.MO.OP,"⋁":e.MO.OP,"⋂":e.MO.OP,"⋃":e.MO.OP,"⌈":e.MO.OPEN,"⌊":e.MO.OPEN,"〈":e.MO.OPEN,"❲":e.MO.OPEN,"⟦":e.MO.OPEN,"⟨":e.MO.OPEN,"⟪":e.MO.OPEN,"⟬":e.MO.OPEN,"⟮":e.MO.OPEN,"⦀":[0,0,n.TEXCLASS.ORD,{fence:!0,stretchy:!0}],"⦃":e.MO.OPEN,"⦅":e.MO.OPEN,"⦇":e.MO.OPEN,"⦉":e.MO.OPEN,"⦋":e.MO.OPEN,"⦍":e.MO.OPEN,"⦏":e.MO.OPEN,"⦑":e.MO.OPEN,"⦓":e.MO.OPEN,"⦕":e.MO.OPEN,"⦗":e.MO.OPEN,"⧼":e.MO.OPEN,"⨀":e.MO.OP,"⨁":e.MO.OP,"⨂":e.MO.OP,"⨃":e.MO.OP,"⨄":e.MO.OP,"⨅":e.MO.OP,"⨆":e.MO.OP,"⨇":e.MO.OP,"⨈":e.MO.OP,"⨉":e.MO.OP,"⨊":e.MO.OP,"⨋":e.MO.INTEGRAL2,"⨌":e.MO.INTEGRAL,"⨍":e.MO.INTEGRAL2,"⨎":e.MO.INTEGRAL2,"⨏":e.MO.INTEGRAL2,"⨐":e.MO.OP,"⨑":e.MO.OP,"⨒":e.MO.OP,"⨓":e.MO.OP,"⨔":e.MO.OP,"⨕":e.MO.INTEGRAL2,"⨖":e.MO.INTEGRAL2,"⨗":e.MO.INTEGRAL2,"⨘":e.MO.INTEGRAL2,"⨙":e.MO.INTEGRAL2,"⨚":e.MO.INTEGRAL2,"⨛":e.MO.INTEGRAL2,"⨜":e.MO.INTEGRAL2,"⫼":e.MO.OP,"⫿":e.MO.OP},postfix:{"!!":r(1,0),"!":[1,0,n.TEXCLASS.CLOSE,null],'"':e.MO.ACCENT,"&":e.MO.ORD,")":e.MO.CLOSE,"++":r(0,0),"--":r(0,0),"..":r(0,0),"...":e.MO.ORD,"'":e.MO.ACCENT,"]":e.MO.CLOSE,"^":e.MO.WIDEACCENT,_:e.MO.WIDEACCENT,"`":e.MO.ACCENT,"|":e.MO.CLOSE,"}":e.MO.CLOSE,"~":e.MO.WIDEACCENT,"||":[0,0,n.TEXCLASS.BIN,{fence:!0,stretchy:!0,symmetric:!0}],"|||":[0,0,n.TEXCLASS.ORD,{fence:!0,stretchy:!0,symmetric:!0}],"¨":e.MO.ACCENT,"ª":e.MO.ACCENT,"¯":e.MO.WIDEACCENT,"°":e.MO.ORD,"²":e.MO.ACCENT,"³":e.MO.ACCENT,"´":e.MO.ACCENT,"¸":e.MO.ACCENT,"¹":e.MO.ACCENT,"º":e.MO.ACCENT,"ˆ":e.MO.WIDEACCENT,"ˇ":e.MO.WIDEACCENT,"ˉ":e.MO.WIDEACCENT,"ˊ":e.MO.ACCENT,"ˋ":e.MO.ACCENT,"ˍ":e.MO.WIDEACCENT,"˘":e.MO.ACCENT,"˙":e.MO.ACCENT,"˚":e.MO.ACCENT,"˜":e.MO.WIDEACCENT,"˝":e.MO.ACCENT,"˷":e.MO.WIDEACCENT,"̂":e.MO.WIDEACCENT,"̑":e.MO.ACCENT,"϶":e.MO.REL,"‖":[0,0,n.TEXCLASS.ORD,{fence:!0,stretchy:!0}],"’":[0,0,n.TEXCLASS.CLOSE,{fence:!0}],"‚":e.MO.ACCENT,"‛":e.MO.ACCENT,"”":[0,0,n.TEXCLASS.CLOSE,{fence:!0}],"„":e.MO.ACCENT,"‟":e.MO.ACCENT,"′":e.MO.ORD,"″":e.MO.ACCENT,"‴":e.MO.ACCENT,"‵":e.MO.ACCENT,"‶":e.MO.ACCENT,"‷":e.MO.ACCENT,"‾":e.MO.WIDEACCENT,"⁗":e.MO.ACCENT,"⃛":e.MO.ACCENT,"⃜":e.MO.ACCENT,"⌉":e.MO.CLOSE,"⌋":e.MO.CLOSE,"〉":e.MO.CLOSE,"⎴":e.MO.WIDEACCENT,"⎵":e.MO.WIDEACCENT,"⏜":e.MO.WIDEACCENT,"⏝":e.MO.WIDEACCENT,"⏞":e.MO.WIDEACCENT,"⏟":e.MO.WIDEACCENT,"⏠":e.MO.WIDEACCENT,"⏡":e.MO.WIDEACCENT,"■":e.MO.BIN3,"□":e.MO.BIN3,"▪":e.MO.BIN3,"▫":e.MO.BIN3,"▭":e.MO.BIN3,"▮":e.MO.BIN3,"▯":e.MO.BIN3,"▰":e.MO.BIN3,"▱":e.MO.BIN3,"▲":e.MO.BIN4,"▴":e.MO.BIN4,"▶":e.MO.BIN4,"▷":e.MO.BIN4,"▸":e.MO.BIN4,"▼":e.MO.BIN4,"▾":e.MO.BIN4,"◀":e.MO.BIN4,"◁":e.MO.BIN4,"◂":e.MO.BIN4,"◄":e.MO.BIN4,"◅":e.MO.BIN4,"◆":e.MO.BIN4,"◇":e.MO.BIN4,"◈":e.MO.BIN4,"◉":e.MO.BIN4,"◌":e.MO.BIN4,"◍":e.MO.BIN4,"◎":e.MO.BIN4,"●":e.MO.BIN4,"◖":e.MO.BIN4,"◗":e.MO.BIN4,"◦":e.MO.BIN4,"♭":e.MO.ORD02,"♮":e.MO.ORD02,"♯":e.MO.ORD02,"❳":e.MO.CLOSE,"⟧":e.MO.CLOSE,"⟩":e.MO.CLOSE,"⟫":e.MO.CLOSE,"⟭":e.MO.CLOSE,"⟯":e.MO.CLOSE,"⦀":[0,0,n.TEXCLASS.ORD,{fence:!0,stretchy:!0}],"⦄":e.MO.CLOSE,"⦆":e.MO.CLOSE,"⦈":e.MO.CLOSE,"⦊":e.MO.CLOSE,"⦌":e.MO.CLOSE,"⦎":e.MO.CLOSE,"⦐":e.MO.CLOSE,"⦒":e.MO.CLOSE,"⦔":e.MO.CLOSE,"⦖":e.MO.CLOSE,"⦘":e.MO.CLOSE,"⧽":e.MO.CLOSE},infix:{"!=":e.MO.BIN4,"#":e.MO.ORD,$:e.MO.ORD,"%":[3,3,n.TEXCLASS.ORD,null],"&&":e.MO.BIN4,"":e.MO.ORD,"*":e.MO.BIN3,"**":r(1,1),"*=":e.MO.BIN4,"+":e.MO.BIN4,"+=":e.MO.BIN4,",":[0,3,n.TEXCLASS.PUNCT,{linebreakstyle:"after",separator:!0}],"-":e.MO.BIN4,"-=":e.MO.BIN4,"->":e.MO.BIN5,".":[0,3,n.TEXCLASS.PUNCT,{separator:!0}],"/":e.MO.ORD11,"//":r(1,1),"/=":e.MO.BIN4,":":[1,2,n.TEXCLASS.REL,null],":=":e.MO.BIN4,";":[0,3,n.TEXCLASS.PUNCT,{linebreakstyle:"after",separator:!0}],"<":e.MO.REL,"<=":e.MO.BIN5,"<>":r(1,1),"=":e.MO.REL,"==":e.MO.BIN4,">":e.MO.REL,">=":e.MO.BIN5,"?":[1,1,n.TEXCLASS.CLOSE,null],"@":e.MO.ORD11,"\\":e.MO.ORD,"^":e.MO.ORD11,_:e.MO.ORD11,"|":[2,2,n.TEXCLASS.ORD,{fence:!0,stretchy:!0,symmetric:!0}],"||":[2,2,n.TEXCLASS.BIN,{fence:!0,stretchy:!0,symmetric:!0}],"|||":[2,2,n.TEXCLASS.ORD,{fence:!0,stretchy:!0,symmetric:!0}],"±":e.MO.BIN4,"·":e.MO.BIN4,"×":e.MO.BIN4,"÷":e.MO.BIN4,"ʹ":e.MO.ORD,"̀":e.MO.ACCENT,"́":e.MO.ACCENT,"̃":e.MO.WIDEACCENT,"̄":e.MO.ACCENT,"̆":e.MO.ACCENT,"̇":e.MO.ACCENT,"̈":e.MO.ACCENT,"̌":e.MO.ACCENT,"̲":e.MO.WIDEACCENT,"̸":e.MO.REL4,"―":[0,0,n.TEXCLASS.ORD,{stretchy:!0}],"‗":[0,0,n.TEXCLASS.ORD,{stretchy:!0}],"†":e.MO.BIN3,"‡":e.MO.BIN3,"•":e.MO.BIN4,"…":e.MO.INNER,"⁃":e.MO.BIN4,"⁄":e.MO.TALLBIN,"⁡":e.MO.NONE,"⁢":e.MO.NONE,"⁣":[0,0,n.TEXCLASS.NONE,{linebreakstyle:"after",separator:!0}],"⁤":e.MO.NONE,"⃗":e.MO.ACCENT,"ℑ":e.MO.ORD,"ℓ":e.MO.ORD,"℘":e.MO.ORD,"ℜ":e.MO.ORD,"←":e.MO.WIDEREL,"↑":e.MO.RELSTRETCH,"→":e.MO.WIDEREL,"↓":e.MO.RELSTRETCH,"↔":e.MO.WIDEREL,"↕":e.MO.RELSTRETCH,"↖":e.MO.RELSTRETCH,"↗":e.MO.RELSTRETCH,"↘":e.MO.RELSTRETCH,"↙":e.MO.RELSTRETCH,"↚":e.MO.RELACCENT,"↛":e.MO.RELACCENT,"↜":e.MO.WIDEREL,"↝":e.MO.WIDEREL,"↞":e.MO.WIDEREL,"↟":e.MO.WIDEREL,"↠":e.MO.WIDEREL,"↡":e.MO.RELSTRETCH,"↢":e.MO.WIDEREL,"↣":e.MO.WIDEREL,"↤":e.MO.WIDEREL,"↥":e.MO.RELSTRETCH,"↦":e.MO.WIDEREL,"↧":e.MO.RELSTRETCH,"↨":e.MO.RELSTRETCH,"↩":e.MO.WIDEREL,"↪":e.MO.WIDEREL,"↫":e.MO.WIDEREL,"↬":e.MO.WIDEREL,"↭":e.MO.WIDEREL,"↮":e.MO.RELACCENT,"↯":e.MO.RELSTRETCH,"↰":e.MO.RELSTRETCH,"↱":e.MO.RELSTRETCH,"↲":e.MO.RELSTRETCH,"↳":e.MO.RELSTRETCH,"↴":e.MO.RELSTRETCH,"↵":e.MO.RELSTRETCH,"↶":e.MO.RELACCENT,"↷":e.MO.RELACCENT,"↸":e.MO.REL,"↹":e.MO.WIDEREL,"↺":e.MO.REL,"↻":e.MO.REL,"↼":e.MO.WIDEREL,"↽":e.MO.WIDEREL,"↾":e.MO.RELSTRETCH,"↿":e.MO.RELSTRETCH,"⇀":e.MO.WIDEREL,"⇁":e.MO.WIDEREL,"⇂":e.MO.RELSTRETCH,"⇃":e.MO.RELSTRETCH,"⇄":e.MO.WIDEREL,"⇅":e.MO.RELSTRETCH,"⇆":e.MO.WIDEREL,"⇇":e.MO.WIDEREL,"⇈":e.MO.RELSTRETCH,"⇉":e.MO.WIDEREL,"⇊":e.MO.RELSTRETCH,"⇋":e.MO.WIDEREL,"⇌":e.MO.WIDEREL,"⇍":e.MO.RELACCENT,"⇎":e.MO.RELACCENT,"⇏":e.MO.RELACCENT,"⇐":e.MO.WIDEREL,"⇑":e.MO.RELSTRETCH,"⇒":e.MO.WIDEREL,"⇓":e.MO.RELSTRETCH,"⇔":e.MO.WIDEREL,"⇕":e.MO.RELSTRETCH,"⇖":e.MO.RELSTRETCH,"⇗":e.MO.RELSTRETCH,"⇘":e.MO.RELSTRETCH,"⇙":e.MO.RELSTRETCH,"⇚":e.MO.WIDEREL,"⇛":e.MO.WIDEREL,"⇜":e.MO.WIDEREL,"⇝":e.MO.WIDEREL,"⇞":e.MO.REL,"⇟":e.MO.REL,"⇠":e.MO.WIDEREL,"⇡":e.MO.RELSTRETCH,"⇢":e.MO.WIDEREL,"⇣":e.MO.RELSTRETCH,"⇤":e.MO.WIDEREL,"⇥":e.MO.WIDEREL,"⇦":e.MO.WIDEREL,"⇧":e.MO.RELSTRETCH,"⇨":e.MO.WIDEREL,"⇩":e.MO.RELSTRETCH,"⇪":e.MO.RELSTRETCH,"⇫":e.MO.RELSTRETCH,"⇬":e.MO.RELSTRETCH,"⇭":e.MO.RELSTRETCH,"⇮":e.MO.RELSTRETCH,"⇯":e.MO.RELSTRETCH,"⇰":e.MO.WIDEREL,"⇱":e.MO.REL,"⇲":e.MO.REL,"⇳":e.MO.RELSTRETCH,"⇴":e.MO.RELACCENT,"⇵":e.MO.RELSTRETCH,"⇶":e.MO.WIDEREL,"⇷":e.MO.RELACCENT,"⇸":e.MO.RELACCENT,"⇹":e.MO.RELACCENT,"⇺":e.MO.RELACCENT,"⇻":e.MO.RELACCENT,"⇼":e.MO.RELACCENT,"⇽":e.MO.WIDEREL,"⇾":e.MO.WIDEREL,"⇿":e.MO.WIDEREL,"∁":r(1,2,n.TEXCLASS.ORD),"∅":e.MO.ORD,"∆":e.MO.BIN3,"∈":e.MO.REL,"∉":e.MO.REL,"∊":e.MO.REL,"∋":e.MO.REL,"∌":e.MO.REL,"∍":e.MO.REL,"∎":e.MO.BIN3,"−":e.MO.BIN4,"∓":e.MO.BIN4,"∔":e.MO.BIN4,"∕":e.MO.TALLBIN,"∖":e.MO.BIN4,"∗":e.MO.BIN4,"∘":e.MO.BIN4,"∙":e.MO.BIN4,"∝":e.MO.REL,"∞":e.MO.ORD,"∟":e.MO.REL,"∣":e.MO.REL,"∤":e.MO.REL,"∥":e.MO.REL,"∦":e.MO.REL,"∧":e.MO.BIN4,"∨":e.MO.BIN4,"∩":e.MO.BIN4,"∪":e.MO.BIN4,"∴":e.MO.REL,"∵":e.MO.REL,"∶":e.MO.REL,"∷":e.MO.REL,"∸":e.MO.BIN4,"∹":e.MO.REL,"∺":e.MO.BIN4,"∻":e.MO.REL,"∼":e.MO.REL,"∽":e.MO.REL,"∽̱":e.MO.BIN3,"∾":e.MO.REL,"∿":e.MO.BIN3,"≀":e.MO.BIN4,"≁":e.MO.REL,"≂":e.MO.REL,"≂̸":e.MO.REL,"≃":e.MO.REL,"≄":e.MO.REL,"≅":e.MO.REL,"≆":e.MO.REL,"≇":e.MO.REL,"≈":e.MO.REL,"≉":e.MO.REL,"≊":e.MO.REL,"≋":e.MO.REL,"≌":e.MO.REL,"≍":e.MO.REL,"≎":e.MO.REL,"≎̸":e.MO.REL,"≏":e.MO.REL,"≏̸":e.MO.REL,"≐":e.MO.REL,"≑":e.MO.REL,"≒":e.MO.REL,"≓":e.MO.REL,"≔":e.MO.REL,"≕":e.MO.REL,"≖":e.MO.REL,"≗":e.MO.REL,"≘":e.MO.REL,"≙":e.MO.REL,"≚":e.MO.REL,"≛":e.MO.REL,"≜":e.MO.REL,"≝":e.MO.REL,"≞":e.MO.REL,"≟":e.MO.REL,"≠":e.MO.REL,"≡":e.MO.REL,"≢":e.MO.REL,"≣":e.MO.REL,"≤":e.MO.REL,"≥":e.MO.REL,"≦":e.MO.REL,"≦̸":e.MO.REL,"≧":e.MO.REL,"≨":e.MO.REL,"≩":e.MO.REL,"≪":e.MO.REL,"≪̸":e.MO.REL,"≫":e.MO.REL,"≫̸":e.MO.REL,"≬":e.MO.REL,"≭":e.MO.REL,"≮":e.MO.REL,"≯":e.MO.REL,"≰":e.MO.REL,"≱":e.MO.REL,"≲":e.MO.REL,"≳":e.MO.REL,"≴":e.MO.REL,"≵":e.MO.REL,"≶":e.MO.REL,"≷":e.MO.REL,"≸":e.MO.REL,"≹":e.MO.REL,"≺":e.MO.REL,"≻":e.MO.REL,"≼":e.MO.REL,"≽":e.MO.REL,"≾":e.MO.REL,"≿":e.MO.REL,"≿̸":e.MO.REL,"⊀":e.MO.REL,"⊁":e.MO.REL,"⊂":e.MO.REL,"⊂⃒":e.MO.REL,"⊃":e.MO.REL,"⊃⃒":e.MO.REL,"⊄":e.MO.REL,"⊅":e.MO.REL,"⊆":e.MO.REL,"⊇":e.MO.REL,"⊈":e.MO.REL,"⊉":e.MO.REL,"⊊":e.MO.REL,"⊋":e.MO.REL,"⊌":e.MO.BIN4,"⊍":e.MO.BIN4,"⊎":e.MO.BIN4,"⊏":e.MO.REL,"⊏̸":e.MO.REL,"⊐":e.MO.REL,"⊐̸":e.MO.REL,"⊑":e.MO.REL,"⊒":e.MO.REL,"⊓":e.MO.BIN4,"⊔":e.MO.BIN4,"⊕":e.MO.BIN4,"⊖":e.MO.BIN4,"⊗":e.MO.BIN4,"⊘":e.MO.BIN4,"⊙":e.MO.BIN4,"⊚":e.MO.BIN4,"⊛":e.MO.BIN4,"⊜":e.MO.BIN4,"⊝":e.MO.BIN4,"⊞":e.MO.BIN4,"⊟":e.MO.BIN4,"⊠":e.MO.BIN4,"⊡":e.MO.BIN4,"⊢":e.MO.REL,"⊣":e.MO.REL,"⊤":e.MO.ORD55,"⊥":e.MO.REL,"⊦":e.MO.REL,"⊧":e.MO.REL,"⊨":e.MO.REL,"⊩":e.MO.REL,"⊪":e.MO.REL,"⊫":e.MO.REL,"⊬":e.MO.REL,"⊭":e.MO.REL,"⊮":e.MO.REL,"⊯":e.MO.REL,"⊰":e.MO.REL,"⊱":e.MO.REL,"⊲":e.MO.REL,"⊳":e.MO.REL,"⊴":e.MO.REL,"⊵":e.MO.REL,"⊶":e.MO.REL,"⊷":e.MO.REL,"⊸":e.MO.REL,"⊹":e.MO.REL,"⊺":e.MO.BIN4,"⊻":e.MO.BIN4,"⊼":e.MO.BIN4,"⊽":e.MO.BIN4,"⊾":e.MO.BIN3,"⊿":e.MO.BIN3,"⋄":e.MO.BIN4,"⋅":e.MO.BIN4,"⋆":e.MO.BIN4,"⋇":e.MO.BIN4,"⋈":e.MO.REL,"⋉":e.MO.BIN4,"⋊":e.MO.BIN4,"⋋":e.MO.BIN4,"⋌":e.MO.BIN4,"⋍":e.MO.REL,"⋎":e.MO.BIN4,"⋏":e.MO.BIN4,"⋐":e.MO.REL,"⋑":e.MO.REL,"⋒":e.MO.BIN4,"⋓":e.MO.BIN4,"⋔":e.MO.REL,"⋕":e.MO.REL,"⋖":e.MO.REL,"⋗":e.MO.REL,"⋘":e.MO.REL,"⋙":e.MO.REL,"⋚":e.MO.REL,"⋛":e.MO.REL,"⋜":e.MO.REL,"⋝":e.MO.REL,"⋞":e.MO.REL,"⋟":e.MO.REL,"⋠":e.MO.REL,"⋡":e.MO.REL,"⋢":e.MO.REL,"⋣":e.MO.REL,"⋤":e.MO.REL,"⋥":e.MO.REL,"⋦":e.MO.REL,"⋧":e.MO.REL,"⋨":e.MO.REL,"⋩":e.MO.REL,"⋪":e.MO.REL,"⋫":e.MO.REL,"⋬":e.MO.REL,"⋭":e.MO.REL,"⋮":e.MO.ORD55,"⋯":e.MO.INNER,"⋰":e.MO.REL,"⋱":[5,5,n.TEXCLASS.INNER,null],"⋲":e.MO.REL,"⋳":e.MO.REL,"⋴":e.MO.REL,"⋵":e.MO.REL,"⋶":e.MO.REL,"⋷":e.MO.REL,"⋸":e.MO.REL,"⋹":e.MO.REL,"⋺":e.MO.REL,"⋻":e.MO.REL,"⋼":e.MO.REL,"⋽":e.MO.REL,"⋾":e.MO.REL,"⋿":e.MO.REL,"⌅":e.MO.BIN3,"⌆":e.MO.BIN3,"⌢":e.MO.REL4,"⌣":e.MO.REL4,"〈":e.MO.OPEN,"〉":e.MO.CLOSE,"⎪":e.MO.ORD,"⎯":[0,0,n.TEXCLASS.ORD,{stretchy:!0}],"⎰":e.MO.OPEN,"⎱":e.MO.CLOSE,"─":e.MO.ORD,"△":e.MO.BIN4,"▵":e.MO.BIN4,"▹":e.MO.BIN4,"▽":e.MO.BIN4,"▿":e.MO.BIN4,"◃":e.MO.BIN4,"◯":e.MO.BIN3,"♠":e.MO.ORD,"♡":e.MO.ORD,"♢":e.MO.ORD,"♣":e.MO.ORD,"❘":e.MO.REL,"⟰":e.MO.RELSTRETCH,"⟱":e.MO.RELSTRETCH,"⟵":e.MO.WIDEREL,"⟶":e.MO.WIDEREL,"⟷":e.MO.WIDEREL,"⟸":e.MO.WIDEREL,"⟹":e.MO.WIDEREL,"⟺":e.MO.WIDEREL,"⟻":e.MO.WIDEREL,"⟼":e.MO.WIDEREL,"⟽":e.MO.WIDEREL,"⟾":e.MO.WIDEREL,"⟿":e.MO.WIDEREL,"⤀":e.MO.RELACCENT,"⤁":e.MO.RELACCENT,"⤂":e.MO.RELACCENT,"⤃":e.MO.RELACCENT,"⤄":e.MO.RELACCENT,"⤅":e.MO.RELACCENT,"⤆":e.MO.RELACCENT,"⤇":e.MO.RELACCENT,"⤈":e.MO.REL,"⤉":e.MO.REL,"⤊":e.MO.RELSTRETCH,"⤋":e.MO.RELSTRETCH,"⤌":e.MO.WIDEREL,"⤍":e.MO.WIDEREL,"⤎":e.MO.WIDEREL,"⤏":e.MO.WIDEREL,"⤐":e.MO.WIDEREL,"⤑":e.MO.RELACCENT,"⤒":e.MO.RELSTRETCH,"⤓":e.MO.RELSTRETCH,"⤔":e.MO.RELACCENT,"⤕":e.MO.RELACCENT,"⤖":e.MO.RELACCENT,"⤗":e.MO.RELACCENT,"⤘":e.MO.RELACCENT,"⤙":e.MO.RELACCENT,"⤚":e.MO.RELACCENT,"⤛":e.MO.RELACCENT,"⤜":e.MO.RELACCENT,"⤝":e.MO.RELACCENT,"⤞":e.MO.RELACCENT,"⤟":e.MO.RELACCENT,"⤠":e.MO.RELACCENT,"⤡":e.MO.RELSTRETCH,"⤢":e.MO.RELSTRETCH,"⤣":e.MO.REL,"⤤":e.MO.REL,"⤥":e.MO.REL,"⤦":e.MO.REL,"⤧":e.MO.REL,"⤨":e.MO.REL,"⤩":e.MO.REL,"⤪":e.MO.REL,"⤫":e.MO.REL,"⤬":e.MO.REL,"⤭":e.MO.REL,"⤮":e.MO.REL,"⤯":e.MO.REL,"⤰":e.MO.REL,"⤱":e.MO.REL,"⤲":e.MO.REL,"⤳":e.MO.RELACCENT,"⤴":e.MO.REL,"⤵":e.MO.REL,"⤶":e.MO.REL,"⤷":e.MO.REL,"⤸":e.MO.REL,"⤹":e.MO.REL,"⤺":e.MO.RELACCENT,"⤻":e.MO.RELACCENT,"⤼":e.MO.RELACCENT,"⤽":e.MO.RELACCENT,"⤾":e.MO.REL,"⤿":e.MO.REL,"⥀":e.MO.REL,"⥁":e.MO.REL,"⥂":e.MO.RELACCENT,"⥃":e.MO.RELACCENT,"⥄":e.MO.RELACCENT,"⥅":e.MO.RELACCENT,"⥆":e.MO.RELACCENT,"⥇":e.MO.RELACCENT,"⥈":e.MO.RELACCENT,"⥉":e.MO.REL,"⥊":e.MO.RELACCENT,"⥋":e.MO.RELACCENT,"⥌":e.MO.REL,"⥍":e.MO.REL,"⥎":e.MO.WIDEREL,"⥏":e.MO.RELSTRETCH,"⥐":e.MO.WIDEREL,"⥑":e.MO.RELSTRETCH,"⥒":e.MO.WIDEREL,"⥓":e.MO.WIDEREL,"⥔":e.MO.RELSTRETCH,"⥕":e.MO.RELSTRETCH,"⥖":e.MO.RELSTRETCH,"⥗":e.MO.RELSTRETCH,"⥘":e.MO.RELSTRETCH,"⥙":e.MO.RELSTRETCH,"⥚":e.MO.WIDEREL,"⥛":e.MO.WIDEREL,"⥜":e.MO.RELSTRETCH,"⥝":e.MO.RELSTRETCH,"⥞":e.MO.WIDEREL,"⥟":e.MO.WIDEREL,"⥠":e.MO.RELSTRETCH,"⥡":e.MO.RELSTRETCH,"⥢":e.MO.RELACCENT,"⥣":e.MO.REL,"⥤":e.MO.RELACCENT,"⥥":e.MO.REL,"⥦":e.MO.RELACCENT,"⥧":e.MO.RELACCENT,"⥨":e.MO.RELACCENT,"⥩":e.MO.RELACCENT,"⥪":e.MO.RELACCENT,"⥫":e.MO.RELACCENT,"⥬":e.MO.RELACCENT,"⥭":e.MO.RELACCENT,"⥮":e.MO.RELSTRETCH,"⥯":e.MO.RELSTRETCH,"⥰":e.MO.RELACCENT,"⥱":e.MO.RELACCENT,"⥲":e.MO.RELACCENT,"⥳":e.MO.RELACCENT,"⥴":e.MO.RELACCENT,"⥵":e.MO.RELACCENT,"⥶":e.MO.RELACCENT,"⥷":e.MO.RELACCENT,"⥸":e.MO.RELACCENT,"⥹":e.MO.RELACCENT,"⥺":e.MO.RELACCENT,"⥻":e.MO.RELACCENT,"⥼":e.MO.RELACCENT,"⥽":e.MO.RELACCENT,"⥾":e.MO.REL,"⥿":e.MO.REL,"⦁":e.MO.BIN3,"⦂":e.MO.BIN3,"⦙":e.MO.BIN3,"⦚":e.MO.BIN3,"⦛":e.MO.BIN3,"⦜":e.MO.BIN3,"⦝":e.MO.BIN3,"⦞":e.MO.BIN3,"⦟":e.MO.BIN3,"⦠":e.MO.BIN3,"⦡":e.MO.BIN3,"⦢":e.MO.BIN3,"⦣":e.MO.BIN3,"⦤":e.MO.BIN3,"⦥":e.MO.BIN3,"⦦":e.MO.BIN3,"⦧":e.MO.BIN3,"⦨":e.MO.BIN3,"⦩":e.MO.BIN3,"⦪":e.MO.BIN3,"⦫":e.MO.BIN3,"⦬":e.MO.BIN3,"⦭":e.MO.BIN3,"⦮":e.MO.BIN3,"⦯":e.MO.BIN3,"⦰":e.MO.BIN3,"⦱":e.MO.BIN3,"⦲":e.MO.BIN3,"⦳":e.MO.BIN3,"⦴":e.MO.BIN3,"⦵":e.MO.BIN3,"⦶":e.MO.BIN4,"⦷":e.MO.BIN4,"⦸":e.MO.BIN4,"⦹":e.MO.BIN4,"⦺":e.MO.BIN4,"⦻":e.MO.BIN4,"⦼":e.MO.BIN4,"⦽":e.MO.BIN4,"⦾":e.MO.BIN4,"⦿":e.MO.BIN4,"⧀":e.MO.REL,"⧁":e.MO.REL,"⧂":e.MO.BIN3,"⧃":e.MO.BIN3,"⧄":e.MO.BIN4,"⧅":e.MO.BIN4,"⧆":e.MO.BIN4,"⧇":e.MO.BIN4,"⧈":e.MO.BIN4,"⧉":e.MO.BIN3,"⧊":e.MO.BIN3,"⧋":e.MO.BIN3,"⧌":e.MO.BIN3,"⧍":e.MO.BIN3,"⧎":e.MO.REL,"⧏":e.MO.REL,"⧏̸":e.MO.REL,"⧐":e.MO.REL,"⧐̸":e.MO.REL,"⧑":e.MO.REL,"⧒":e.MO.REL,"⧓":e.MO.REL,"⧔":e.MO.REL,"⧕":e.MO.REL,"⧖":e.MO.BIN4,"⧗":e.MO.BIN4,"⧘":e.MO.BIN3,"⧙":e.MO.BIN3,"⧛":e.MO.BIN3,"⧜":e.MO.BIN3,"⧝":e.MO.BIN3,"⧞":e.MO.REL,"⧟":e.MO.BIN3,"⧠":e.MO.BIN3,"⧡":e.MO.REL,"⧢":e.MO.BIN4,"⧣":e.MO.REL,"⧤":e.MO.REL,"⧥":e.MO.REL,"⧦":e.MO.REL,"⧧":e.MO.BIN3,"⧨":e.MO.BIN3,"⧩":e.MO.BIN3,"⧪":e.MO.BIN3,"⧫":e.MO.BIN3,"⧬":e.MO.BIN3,"⧭":e.MO.BIN3,"⧮":e.MO.BIN3,"⧯":e.MO.BIN3,"⧰":e.MO.BIN3,"⧱":e.MO.BIN3,"⧲":e.MO.BIN3,"⧳":e.MO.BIN3,"⧴":e.MO.REL,"⧵":e.MO.BIN4,"⧶":e.MO.BIN4,"⧷":e.MO.BIN4,"⧸":e.MO.BIN3,"⧹":e.MO.BIN3,"⧺":e.MO.BIN3,"⧻":e.MO.BIN3,"⧾":e.MO.BIN4,"⧿":e.MO.BIN4,"⨝":e.MO.BIN3,"⨞":e.MO.BIN3,"⨟":e.MO.BIN3,"⨠":e.MO.BIN3,"⨡":e.MO.BIN3,"⨢":e.MO.BIN4,"⨣":e.MO.BIN4,"⨤":e.MO.BIN4,"⨥":e.MO.BIN4,"⨦":e.MO.BIN4,"⨧":e.MO.BIN4,"⨨":e.MO.BIN4,"⨩":e.MO.BIN4,"⨪":e.MO.BIN4,"⨫":e.MO.BIN4,"⨬":e.MO.BIN4,"⨭":e.MO.BIN4,"⨮":e.MO.BIN4,"⨯":e.MO.BIN4,"⨰":e.MO.BIN4,"⨱":e.MO.BIN4,"⨲":e.MO.BIN4,"⨳":e.MO.BIN4,"⨴":e.MO.BIN4,"⨵":e.MO.BIN4,"⨶":e.MO.BIN4,"⨷":e.MO.BIN4,"⨸":e.MO.BIN4,"⨹":e.MO.BIN4,"⨺":e.MO.BIN4,"⨻":e.MO.BIN4,"⨼":e.MO.BIN4,"⨽":e.MO.BIN4,"⨾":e.MO.BIN4,"⨿":e.MO.BIN4,"⩀":e.MO.BIN4,"⩁":e.MO.BIN4,"⩂":e.MO.BIN4,"⩃":e.MO.BIN4,"⩄":e.MO.BIN4,"⩅":e.MO.BIN4,"⩆":e.MO.BIN4,"⩇":e.MO.BIN4,"⩈":e.MO.BIN4,"⩉":e.MO.BIN4,"⩊":e.MO.BIN4,"⩋":e.MO.BIN4,"⩌":e.MO.BIN4,"⩍":e.MO.BIN4,"⩎":e.MO.BIN4,"⩏":e.MO.BIN4,"⩐":e.MO.BIN4,"⩑":e.MO.BIN4,"⩒":e.MO.BIN4,"⩓":e.MO.BIN4,"⩔":e.MO.BIN4,"⩕":e.MO.BIN4,"⩖":e.MO.BIN4,"⩗":e.MO.BIN4,"⩘":e.MO.BIN4,"⩙":e.MO.REL,"⩚":e.MO.BIN4,"⩛":e.MO.BIN4,"⩜":e.MO.BIN4,"⩝":e.MO.BIN4,"⩞":e.MO.BIN4,"⩟":e.MO.BIN4,"⩠":e.MO.BIN4,"⩡":e.MO.BIN4,"⩢":e.MO.BIN4,"⩣":e.MO.BIN4,"⩤":e.MO.BIN4,"⩥":e.MO.BIN4,"⩦":e.MO.REL,"⩧":e.MO.REL,"⩨":e.MO.REL,"⩩":e.MO.REL,"⩪":e.MO.REL,"⩫":e.MO.REL,"⩬":e.MO.REL,"⩭":e.MO.REL,"⩮":e.MO.REL,"⩯":e.MO.REL,"⩰":e.MO.REL,"⩱":e.MO.BIN4,"⩲":e.MO.BIN4,"⩳":e.MO.REL,"⩴":e.MO.REL,"⩵":e.MO.REL,"⩶":e.MO.REL,"⩷":e.MO.REL,"⩸":e.MO.REL,"⩹":e.MO.REL,"⩺":e.MO.REL,"⩻":e.MO.REL,"⩼":e.MO.REL,"⩽":e.MO.REL,"⩽̸":e.MO.REL,"⩾":e.MO.REL,"⩾̸":e.MO.REL,"⩿":e.MO.REL,"⪀":e.MO.REL,"⪁":e.MO.REL,"⪂":e.MO.REL,"⪃":e.MO.REL,"⪄":e.MO.REL,"⪅":e.MO.REL,"⪆":e.MO.REL,"⪇":e.MO.REL,"⪈":e.MO.REL,"⪉":e.MO.REL,"⪊":e.MO.REL,"⪋":e.MO.REL,"⪌":e.MO.REL,"⪍":e.MO.REL,"⪎":e.MO.REL,"⪏":e.MO.REL,"⪐":e.MO.REL,"⪑":e.MO.REL,"⪒":e.MO.REL,"⪓":e.MO.REL,"⪔":e.MO.REL,"⪕":e.MO.REL,"⪖":e.MO.REL,"⪗":e.MO.REL,"⪘":e.MO.REL,"⪙":e.MO.REL,"⪚":e.MO.REL,"⪛":e.MO.REL,"⪜":e.MO.REL,"⪝":e.MO.REL,"⪞":e.MO.REL,"⪟":e.MO.REL,"⪠":e.MO.REL,"⪡":e.MO.REL,"⪡̸":e.MO.REL,"⪢":e.MO.REL,"⪢̸":e.MO.REL,"⪣":e.MO.REL,"⪤":e.MO.REL,"⪥":e.MO.REL,"⪦":e.MO.REL,"⪧":e.MO.REL,"⪨":e.MO.REL,"⪩":e.MO.REL,"⪪":e.MO.REL,"⪫":e.MO.REL,"⪬":e.MO.REL,"⪭":e.MO.REL,"⪮":e.MO.REL,"⪯":e.MO.REL,"⪯̸":e.MO.REL,"⪰":e.MO.REL,"⪰̸":e.MO.REL,"⪱":e.MO.REL,"⪲":e.MO.REL,"⪳":e.MO.REL,"⪴":e.MO.REL,"⪵":e.MO.REL,"⪶":e.MO.REL,"⪷":e.MO.REL,"⪸":e.MO.REL,"⪹":e.MO.REL,"⪺":e.MO.REL,"⪻":e.MO.REL,"⪼":e.MO.REL,"⪽":e.MO.REL,"⪾":e.MO.REL,"⪿":e.MO.REL,"⫀":e.MO.REL,"⫁":e.MO.REL,"⫂":e.MO.REL,"⫃":e.MO.REL,"⫄":e.MO.REL,"⫅":e.MO.REL,"⫆":e.MO.REL,"⫇":e.MO.REL,"⫈":e.MO.REL,"⫉":e.MO.REL,"⫊":e.MO.REL,"⫋":e.MO.REL,"⫌":e.MO.REL,"⫍":e.MO.REL,"⫎":e.MO.REL,"⫏":e.MO.REL,"⫐":e.MO.REL,"⫑":e.MO.REL,"⫒":e.MO.REL,"⫓":e.MO.REL,"⫔":e.MO.REL,"⫕":e.MO.REL,"⫖":e.MO.REL,"⫗":e.MO.REL,"⫘":e.MO.REL,"⫙":e.MO.REL,"⫚":e.MO.REL,"⫛":e.MO.REL,"⫝":e.MO.REL,"⫝̸":e.MO.REL,"⫞":e.MO.REL,"⫟":e.MO.REL,"⫠":e.MO.REL,"⫡":e.MO.REL,"⫢":e.MO.REL,"⫣":e.MO.REL,"⫤":e.MO.REL,"⫥":e.MO.REL,"⫦":e.MO.REL,"⫧":e.MO.REL,"⫨":e.MO.REL,"⫩":e.MO.REL,"⫪":e.MO.REL,"⫫":e.MO.REL,"⫬":e.MO.REL,"⫭":e.MO.REL,"⫮":e.MO.REL,"⫯":e.MO.REL,"⫰":e.MO.REL,"⫱":e.MO.REL,"⫲":e.MO.REL,"⫳":e.MO.REL,"⫴":e.MO.BIN4,"⫵":e.MO.BIN4,"⫶":e.MO.BIN4,"⫷":e.MO.REL,"⫸":e.MO.REL,"⫹":e.MO.REL,"⫺":e.MO.REL,"⫻":e.MO.BIN4,"⫽":e.MO.BIN4,"⫾":e.MO.BIN3,"⭅":e.MO.RELSTRETCH,"⭆":e.MO.RELSTRETCH,"〈":e.MO.OPEN,"〉":e.MO.CLOSE,"︷":e.MO.WIDEACCENT,"︸":e.MO.WIDEACCENT}},e.OPTABLE.infix["^"]=e.MO.WIDEREL,e.OPTABLE.infix._=e.MO.WIDEREL,e.OPTABLE.infix["⫝̸"]=e.MO.REL}(OperatorDictionary);var __extends$1n=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$D=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$D=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$D.apply(this,arguments)},__read$F=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__values$C=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(mo$2,"__esModule",{value:!0}),mo$2.MmlMo=void 0;var MmlNode_js_1$J=MmlNode,OperatorDictionary_js_1$1=OperatorDictionary,string_js_1$6=string,MmlMo=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._texClass=null,t.lspace=5/18,t.rspace=5/18,t}return __extends$1n(t,e),Object.defineProperty(t.prototype,"texClass",{get:function(){if(null===this._texClass){var e=this.getText(),t=__read$F(this.handleExplicitForm(this.getForms()),3),n=t[0],r=t[1],i=t[2],o=this.constructor.OPTABLE,a=o[n][e]||o[r][e]||o[i][e];return a?a[2]:MmlNode_js_1$J.TEXCLASS.REL}return this._texClass},set:function(e){this._texClass=e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"kind",{get:function(){return"mo"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isEmbellished",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hasNewLine",{get:function(){return"newline"===this.attributes.get("linebreak")},enumerable:!1,configurable:!0}),t.prototype.coreParent=function(){for(var e=this,t=this,n=this.factory.getNodeClass("math");t&&t.isEmbellished&&t.coreMO()===this&&!(t instanceof n);)e=t,t=t.parent;return e},t.prototype.coreText=function(e){if(!e)return"";if(e.isEmbellished)return e.coreMO().getText();for(;((e.isKind("mrow")||e.isKind("TeXAtom")&&e.texClass!==MmlNode_js_1$J.TEXCLASS.VCENTER||e.isKind("mstyle")||e.isKind("mphantom"))&&1===e.childNodes.length||e.isKind("munderover"))&&e.childNodes[0];)e=e.childNodes[0];return e.isToken?e.getText():""},t.prototype.hasSpacingAttributes=function(){return this.attributes.isSet("lspace")||this.attributes.isSet("rspace")},Object.defineProperty(t.prototype,"isAccent",{get:function(){var e=!1,t=this.coreParent().parent;if(t){var n=t.isKind("mover")?t.childNodes[t.over].coreMO()?"accent":"":t.isKind("munder")?t.childNodes[t.under].coreMO()?"accentunder":"":t.isKind("munderover")?this===t.childNodes[t.over].coreMO()?"accent":this===t.childNodes[t.under].coreMO()?"accentunder":"":"";n&&(e=void 0!==t.attributes.getExplicit(n)?e:this.attributes.get("accent"))}return e},enumerable:!1,configurable:!0}),t.prototype.setTeXclass=function(e){var t=this.attributes.getList("form","fence"),n=t.form,r=t.fence;return void 0===this.getProperty("texClass")&&(this.attributes.isSet("lspace")||this.attributes.isSet("rspace"))?null:(r&&this.texClass===MmlNode_js_1$J.TEXCLASS.REL&&("prefix"===n&&(this.texClass=MmlNode_js_1$J.TEXCLASS.OPEN),"postfix"===n&&(this.texClass=MmlNode_js_1$J.TEXCLASS.CLOSE)),this.adjustTeXclass(e))},t.prototype.adjustTeXclass=function(e){var t=this.texClass,n=this.prevClass;if(t===MmlNode_js_1$J.TEXCLASS.NONE)return e;if(e?(!e.getProperty("autoOP")||t!==MmlNode_js_1$J.TEXCLASS.BIN&&t!==MmlNode_js_1$J.TEXCLASS.REL||(n=e.texClass=MmlNode_js_1$J.TEXCLASS.ORD),n=this.prevClass=e.texClass||MmlNode_js_1$J.TEXCLASS.ORD,this.prevLevel=this.attributes.getInherited("scriptlevel")):n=this.prevClass=MmlNode_js_1$J.TEXCLASS.NONE,t!==MmlNode_js_1$J.TEXCLASS.BIN||n!==MmlNode_js_1$J.TEXCLASS.NONE&&n!==MmlNode_js_1$J.TEXCLASS.BIN&&n!==MmlNode_js_1$J.TEXCLASS.OP&&n!==MmlNode_js_1$J.TEXCLASS.REL&&n!==MmlNode_js_1$J.TEXCLASS.OPEN&&n!==MmlNode_js_1$J.TEXCLASS.PUNCT)if(n!==MmlNode_js_1$J.TEXCLASS.BIN||t!==MmlNode_js_1$J.TEXCLASS.REL&&t!==MmlNode_js_1$J.TEXCLASS.CLOSE&&t!==MmlNode_js_1$J.TEXCLASS.PUNCT){if(t===MmlNode_js_1$J.TEXCLASS.BIN){for(var r=this,i=this.parent;i&&i.parent&&i.isEmbellished&&(1===i.childNodes.length||!i.isKind("mrow")&&i.core()===r);)r=i,i=i.parent;i.childNodes[i.childNodes.length-1]===r&&(this.texClass=MmlNode_js_1$J.TEXCLASS.ORD)}}else e.texClass=this.prevClass=MmlNode_js_1$J.TEXCLASS.ORD;else this.texClass=MmlNode_js_1$J.TEXCLASS.ORD;return this},t.prototype.setInheritedAttributes=function(t,n,r,i){void 0===t&&(t={}),void 0===n&&(n=!1),void 0===r&&(r=0),void 0===i&&(i=!1),e.prototype.setInheritedAttributes.call(this,t,n,r,i);var o=this.getText();this.checkOperatorTable(o),this.checkPseudoScripts(o),this.checkPrimes(o),this.checkMathAccent(o)},t.prototype.checkOperatorTable=function(e){var t,n,r=__read$F(this.handleExplicitForm(this.getForms()),3),i=r[0],o=r[1],a=r[2];this.attributes.setInherited("form",i);var s=this.constructor.OPTABLE,l=s[i][e]||s[o][e]||s[a][e];if(l){void 0===this.getProperty("texClass")&&(this.texClass=l[2]);try{for(var c=__values$C(Object.keys(l[3]||{})),T=c.next();!T.done;T=c.next()){var Q=T.value;this.attributes.setInherited(Q,l[3][Q])}}catch(e){t={error:e}}finally{try{T&&!T.done&&(n=c.return)&&n.call(c)}finally{if(t)throw t.error}}this.lspace=(l[0]+1)/18,this.rspace=(l[1]+1)/18}else{var d=(0,OperatorDictionary_js_1$1.getRange)(e);if(d){void 0===this.getProperty("texClass")&&(this.texClass=d[2]);var u=this.constructor.MMLSPACING[d[2]];this.lspace=(u[0]+1)/18,this.rspace=(u[1]+1)/18}}},t.prototype.getForms=function(){for(var e=this,t=this.parent,n=this.Parent;n&&n.isEmbellished;)e=t,t=n.parent,n=n.Parent;if(t&&t.isKind("mrow")&&1!==t.nonSpaceLength()){if(t.firstNonSpace()===e)return["prefix","infix","postfix"];if(t.lastNonSpace()===e)return["postfix","infix","prefix"]}return["infix","prefix","postfix"]},t.prototype.handleExplicitForm=function(e){if(this.attributes.isSet("form")){var t=this.attributes.get("form");e=[t].concat(e.filter((function(e){return e!==t})))}return e},t.prototype.checkPseudoScripts=function(e){var t=this.constructor.pseudoScripts;if(e.match(t)){var n=this.coreParent().Parent,r=!n||!(n.isKind("msubsup")&&!n.isKind("msub"));this.setProperty("pseudoscript",r),r&&(this.attributes.setInherited("lspace",0),this.attributes.setInherited("rspace",0))}},t.prototype.checkPrimes=function(e){var t=this.constructor.primes;if(e.match(t)){var n=this.constructor.remapPrimes,r=(0,string_js_1$6.unicodeString)((0,string_js_1$6.unicodeChars)(e).map((function(e){return n[e]})));this.setProperty("primes",r)}},t.prototype.checkMathAccent=function(e){var t=this.Parent;if(void 0===this.getProperty("mathaccent")&&t&&t.isKind("munderover")){var n=t.childNodes[0];if(!n.isEmbellished||n.coreMO()!==this){var r=this.constructor.mathaccents;e.match(r)&&this.setProperty("mathaccent",!0)}}},t.defaults=__assign$D(__assign$D({},MmlNode_js_1$J.AbstractMmlTokenNode.defaults),{form:"infix",fence:!1,separator:!1,lspace:"thickmathspace",rspace:"thickmathspace",stretchy:!1,symmetric:!1,maxsize:"infinity",minsize:"0em",largeop:!1,movablelimits:!1,accent:!1,linebreak:"auto",lineleading:"1ex",linebreakstyle:"before",indentalign:"auto",indentshift:"0",indenttarget:"",indentalignfirst:"indentalign",indentshiftfirst:"indentshift",indentalignlast:"indentalign",indentshiftlast:"indentshift"}),t.MMLSPACING=OperatorDictionary_js_1$1.MMLSPACING,t.OPTABLE=OperatorDictionary_js_1$1.OPTABLE,t.pseudoScripts=new RegExp(["^[\"'*`","ª","°","²-´","¹","º","‘-‟","′-‷⁗","⁰ⁱ","⁴-ⁿ","₀-₎","]+$"].join("")),t.primes=new RegExp(["^[\"'`","‘-‟","]+$"].join("")),t.remapPrimes={34:8243,39:8242,96:8245,8216:8245,8217:8242,8218:8242,8219:8245,8220:8246,8221:8243,8222:8243,8223:8246},t.mathaccents=new RegExp(["^[","´́ˊ","`̀ˋ","¨̈","~̃˜","¯̄ˉ","˘̆","ˇ̌","^̂ˆ","→⃗","˙̇","˚̊","⃛","⃜","]$"].join("")),t}(MmlNode_js_1$J.AbstractMmlTokenNode);mo$2.MmlMo=MmlMo;var __values$B=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},__read$E=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$u=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))};Object.defineProperty(NodeUtil$1,"__esModule",{value:!0});var NodeUtil,MmlNode_js_1$I=MmlNode,mo_js_1$2=mo$2;!function(e){var t=new Map([["autoOP",!0],["fnOP",!0],["movesupsub",!0],["subsupOK",!0],["texprimestyle",!0],["useHeight",!0],["variantForm",!0],["withDelims",!0],["mathaccent",!0],["open",!0],["close",!0]]);function n(e,n){var r,i;try{for(var o=__values$B(Object.keys(n)),a=o.next();!a.done;a=o.next()){var s=a.value,l=n[s];"texClass"===s?(e.texClass=l,e.setProperty(s,l)):"movablelimits"===s?(e.setProperty("movablelimits",l),(e.isKind("mo")||e.isKind("mstyle"))&&e.attributes.set("movablelimits",l)):"inferred"===s||(t.has(s)?e.setProperty(s,l):e.attributes.set(s,l))}}catch(e){r={error:e}}finally{try{a&&!a.done&&(i=o.return)&&i.call(o)}finally{if(r)throw r.error}}}function r(e,t,n){e.childNodes[t]=n,n&&(n.parent=e)}function i(e,t){return e.isKind(t)}e.createEntity=function(e){return String.fromCodePoint(parseInt(e,16))},e.getChildren=function(e){return e.childNodes},e.getText=function(e){return e.getText()},e.appendChildren=function(e,t){var n,r;try{for(var i=__values$B(t),o=i.next();!o.done;o=i.next()){var a=o.value;e.appendChild(a)}}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}},e.setAttribute=function(e,t,n){e.attributes.set(t,n)},e.setProperty=function(e,t,n){e.setProperty(t,n)},e.setProperties=n,e.getProperty=function(e,t){return e.getProperty(t)},e.getAttribute=function(e,t){return e.attributes.get(t)},e.removeProperties=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];e.removeProperty.apply(e,__spreadArray$u([],__read$E(t),!1))},e.getChildAt=function(e,t){return e.childNodes[t]},e.setChild=r,e.copyChildren=function(e,t){for(var n=e.childNodes,i=0;i<n.length;i++)r(t,i,n[i])},e.copyAttributes=function(e,t){t.attributes=e.attributes,n(t,e.getAllProperties())},e.isType=i,e.isEmbellished=function(e){return e.isEmbellished},e.getTexClass=function(e){return e.texClass},e.getCoreMO=function(e){return e.coreMO()},e.isNode=function(e){return e instanceof MmlNode_js_1$I.AbstractMmlNode||e instanceof MmlNode_js_1$I.AbstractMmlEmptyNode},e.isInferred=function(e){return e.isInferred},e.getForm=function(e){var t,n;if(!i(e,"mo"))return null;var r=e,o=r.getForms();try{for(var a=__values$B(o),s=a.next();!s.done;s=a.next()){var l=s.value,c=mo_js_1$2.MmlMo.OPTABLE[l][r.getText()];if(c)return c}}catch(e){t={error:e}}finally{try{s&&!s.done&&(n=a.return)&&n.call(a)}finally{if(t)throw t.error}}return null}}(NodeUtil||(NodeUtil={})),NodeUtil$1.default=NodeUtil;var __values$A=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},__importDefault$F=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(FilterUtil$1,"__esModule",{value:!0});var FilterUtil,MmlNode_js_1$H=MmlNode,NodeUtil_js_1$g=__importDefault$F(NodeUtil$1);!function(e){e.cleanStretchy=function(e){var t,n,r=e.data;try{for(var i=__values$A(r.getList("fixStretchy")),o=i.next();!o.done;o=i.next()){var a=o.value;if(NodeUtil_js_1$g.default.getProperty(a,"fixStretchy")){var s=NodeUtil_js_1$g.default.getForm(a);s&&s[3]&&s[3].stretchy&&NodeUtil_js_1$g.default.setAttribute(a,"stretchy",!1);var l=a.parent;if(!(NodeUtil_js_1$g.default.getTexClass(a)||s&&s[2])){var c=r.nodeFactory.create("node","TeXAtom",[a]);l.replaceChild(c,a),c.inheritAttributesFrom(a)}NodeUtil_js_1$g.default.removeProperties(a,"fixStretchy")}}}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}},e.cleanAttributes=function(e){e.data.root.walkTree((function(e,t){var n,r,i=e.attributes;if(i){var o=new Set((i.get("mjx-keep-attrs")||"").split(/ /));delete i.getAllAttributes()["mjx-keep-attrs"];try{for(var a=__values$A(i.getExplicitNames()),s=a.next();!s.done;s=a.next()){var l=s.value;o.has(l)||i.attributes[l]!==e.attributes.getInherited(l)||delete i.attributes[l]}}catch(e){n={error:e}}finally{try{s&&!s.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}}}),{})},e.combineRelations=function(e){var r,i,o,a,s=[];try{for(var l=__values$A(e.data.getList("mo")),c=l.next();!c.done;c=l.next()){var T=c.value;if(!T.getProperty("relationsCombined")&&T.parent&&(!T.parent||NodeUtil_js_1$g.default.isType(T.parent,"mrow"))&&NodeUtil_js_1$g.default.getTexClass(T)===MmlNode_js_1$H.TEXCLASS.REL){for(var Q=T.parent,d=void 0,u=Q.childNodes,p=u.indexOf(T)+1,h=NodeUtil_js_1$g.default.getProperty(T,"variantForm");p<u.length&&(d=u[p])&&NodeUtil_js_1$g.default.isType(d,"mo")&&NodeUtil_js_1$g.default.getTexClass(d)===MmlNode_js_1$H.TEXCLASS.REL;){if(h!==NodeUtil_js_1$g.default.getProperty(d,"variantForm")||!n(T,d)){null==T.attributes.getExplicit("rspace")&&NodeUtil_js_1$g.default.setAttribute(T,"rspace","0pt"),null==d.attributes.getExplicit("lspace")&&NodeUtil_js_1$g.default.setAttribute(d,"lspace","0pt");break}NodeUtil_js_1$g.default.appendChildren(T,NodeUtil_js_1$g.default.getChildren(d)),t(["stretchy","rspace"],T,d);try{for(var m=(o=void 0,__values$A(d.getPropertyNames())),f=m.next();!f.done;f=m.next()){var g=f.value;T.setProperty(g,d.getProperty(g))}}catch(e){o={error:e}}finally{try{f&&!f.done&&(a=m.return)&&a.call(m)}finally{if(o)throw o.error}}u.splice(p,1),s.push(d),d.parent=null,d.setProperty("relationsCombined",!0)}T.attributes.setInherited("form",T.getForms()[0])}}}catch(e){r={error:e}}finally{try{c&&!c.done&&(i=l.return)&&i.call(l)}finally{if(r)throw r.error}}e.data.removeFromList("mo",s)};var t=function(e,t,n){var r=t.attributes,i=n.attributes;e.forEach((function(e){var t=i.getExplicit(e);null!=t&&r.set(e,t)}))},n=function(e,t){var n,r,i=function(e,t){return e.getExplicitNames().filter((function(n){return n!==t&&("stretchy"!==n||e.getExplicit("stretchy"))}))},o=e.attributes,a=t.attributes,s=i(o,"lspace"),l=i(a,"rspace");if(s.length!==l.length)return!1;try{for(var c=__values$A(s),T=c.next();!T.done;T=c.next()){var Q=T.value;if(o.getExplicit(Q)!==a.getExplicit(Q))return!1}}catch(e){n={error:e}}finally{try{T&&!T.done&&(r=c.return)&&r.call(c)}finally{if(n)throw n.error}}return!0},r=function(e,t,n){var r,i,o=[];try{for(var a=__values$A(e.getList("m"+t+n)),s=a.next();!s.done;s=a.next()){var l=s.value,c=l.childNodes;if(!c[l[t]]||!c[l[n]]){var T=l.parent,Q=c[l[t]]?e.nodeFactory.create("node","m"+t,[c[l.base],c[l[t]]]):e.nodeFactory.create("node","m"+n,[c[l.base],c[l[n]]]);NodeUtil_js_1$g.default.copyAttributes(l,Q),T?T.replaceChild(Q,l):e.root=Q,o.push(l)}}}catch(e){r={error:e}}finally{try{s&&!s.done&&(i=a.return)&&i.call(a)}finally{if(r)throw r.error}}e.removeFromList("m"+t+n,o)};e.cleanSubSup=function(e){var t=e.data;t.error||(r(t,"sub","sup"),r(t,"under","over"))};var i=function(e,t,n){var r,i,o=[];try{for(var a=__values$A(e.getList(t)),s=a.next();!s.done;s=a.next()){var l=s.value;if(!l.attributes.get("displaystyle")){var c=l.childNodes[l.base],T=c.coreMO();if(c.getProperty("movablelimits")&&!T.attributes.getExplicit("movablelimits")){var Q=e.nodeFactory.create("node",n,l.childNodes);NodeUtil_js_1$g.default.copyAttributes(l,Q),l.parent?l.parent.replaceChild(Q,l):e.root=Q,o.push(l)}}}}catch(e){r={error:e}}finally{try{s&&!s.done&&(i=a.return)&&i.call(a)}finally{if(r)throw r.error}}e.removeFromList(t,o)};e.moveLimits=function(e){var t=e.data;i(t,"munderover","msubsup"),i(t,"munder","msub"),i(t,"mover","msup")},e.setInherited=function(e){e.data.root.setInheritedAttributes({},e.math.display,0,!1)}}(FilterUtil||(FilterUtil={})),FilterUtil$1.default=FilterUtil;var TexParser={},ParseUtil={},TexError$1={};Object.defineProperty(TexError$1,"__esModule",{value:!0});var TexError=function(){function e(t,n){for(var r=[],i=2;i<arguments.length;i++)r[i-2]=arguments[i];this.id=t,this.message=e.processString(n,r)}return e.processString=function(t,n){for(var r=t.split(e.pattern),i=1,o=r.length;i<o;i+=2){var a=r[i].charAt(0);a>="0"&&a<="9"?(r[i]=n[parseInt(r[i],10)-1],"number"==typeof r[i]&&(r[i]=r[i].toString())):"{"===a&&((a=r[i].substr(1))>="0"&&a<="9"?(r[i]=n[parseInt(r[i].substr(1,r[i].length-2),10)-1],"number"==typeof r[i]&&(r[i]=r[i].toString())):r[i].match(/^\{([a-z]+):%(\d+)\|(.*)\}$/)&&(r[i]="%"+r[i])),null==r[i]&&(r[i]="???")}return r.join("")},e.pattern=/%(\d+|\{\d+\}|\{[a-z]+:\%\d+(?:\|(?:%\{\d+\}|%.|[^\}])*)+\}|.)/g,e}();TexError$1.default=TexError;var Entities={},AsyncLoad={};Object.defineProperty(AsyncLoad,"__esModule",{value:!0}),AsyncLoad.asyncLoad=void 0;var hasRequiredParseUtil,mathjax_js_1$1=mathjax;function asyncLoad(e){return mathjax_js_1$1.mathjax.asyncLoad?new Promise((function(t,n){var r=mathjax_js_1$1.mathjax.asyncLoad(e);r instanceof Promise?r.then((function(e){return t(e)})).catch((function(e){return n(e)})):t(r)})):Promise.reject("Can't load '".concat(e,"': No asyncLoad method specified"))}function requireParseUtil(){if(hasRequiredParseUtil)return ParseUtil;hasRequiredParseUtil=1;var e=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},t=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},n=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ParseUtil,"__esModule",{value:!0});var r,i=MmlNode,o=n(NodeUtil$1),a=n(requireTexParser()),s=n(TexError$1),l=Entities;return function(n){var r=7.2,c={em:function(e){return e},ex:function(e){return.43*e},pt:function(e){return e/10},pc:function(e){return 1.2*e},px:function(e){return e*r/72},in:function(e){return e*r},cm:function(e){return e*r/2.54},mm:function(e){return e*r/25.4},mu:function(e){return e/18}},T="([-+]?([.,]\\d+|\\d+([.,]\\d*)?))",Q="(pt|em|ex|mu|px|mm|cm|in|pc)",d=RegExp("^\\s*"+T+"\\s*"+Q+"\\s*$"),u=RegExp("^\\s*"+T+"\\s*"+Q+" ?");function p(t,n){void 0===n&&(n=!1);var r=t.match(n?u:d);return r?function(t){var n=e(t,3),r=n[0],i=n[1],o=n[2];return"mu"!==i?[r,i,o]:[h(c[i](parseFloat(r||"1"))).slice(0,-2),"em",o]}([r[1].replace(/,/,"."),r[4],r[0].length]):[null,null,0]}function h(e){return Math.abs(e)<6e-4?"0em":e.toFixed(3).replace(/\.?0+$/,"")+"em"}function m(e,t,n){"{"!==t&&"}"!==t||(t="\\"+t);var r="{\\bigg"+n+" "+t+"}",i="{\\big"+n+" "+t+"}";return new a.default("\\mathchoice"+r+i+i+i,{},e).mml()}function f(e,t,n){t=t.replace(/^\s+/,l.entities.nbsp).replace(/\s+$/,l.entities.nbsp);var r=e.create("text",t);return e.create("node","mtext",[],n,r)}function g(e,t,n){if(n.match(/^[a-z]/i)&&t.match(/(^|[^\\])(\\\\)*\\[a-z]+$/i)&&(t+=" "),t.length+n.length>e.configuration.options.maxBuffer)throw new s.default("MaxBufferSize","MathJax internal buffer size exceeded; is there a recursive macro call?");return t+n}function b(e,t){for(;t>0;)e=e.trim().slice(1,-1),t--;return e.trim()}function y(e,t){for(var n=e.length,r=0,i="",o=0,a=0,l=!0,c=!1;o<n;){var T=e[o++];switch(T){case" ":break;case"{":l?a++:(c=!1,a>r&&(a=r)),r++;break;case"}":r&&r--,(l||c)&&(a--,c=!0),l=!1;break;default:if(!r&&-1!==t.indexOf(T))return[c?"true":b(i,a),T,e.slice(o)];l=!1,c=!1}i+=T}if(r)throw new s.default("ExtraOpenMissingClose","Extra open brace or missing close brace");return[c?"true":b(i,a),"",e.slice(o)]}n.matchDimen=p,n.dimen2em=function(t){var n=e(p(t),2),r=n[0],i=n[1],o=parseFloat(r||"1"),a=c[i];return a?a(o):0},n.Em=h,n.cols=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return e.map((function(e){return h(e)})).join(" ")},n.fenced=function(e,t,n,r,s,l){void 0===s&&(s=""),void 0===l&&(l="");var c,T=e.nodeFactory,Q=T.create("node","mrow",[],{open:t,close:r,texClass:i.TEXCLASS.INNER});if(s)c=new a.default("\\"+s+"l"+t,e.parser.stack.env,e).mml();else{var d=T.create("text",t);c=T.create("node","mo",[],{fence:!0,stretchy:!0,symmetric:!0,texClass:i.TEXCLASS.OPEN},d)}if(o.default.appendChildren(Q,[c,n]),s)c=new a.default("\\"+s+"r"+r,e.parser.stack.env,e).mml();else{var u=T.create("text",r);c=T.create("node","mo",[],{fence:!0,stretchy:!0,symmetric:!0,texClass:i.TEXCLASS.CLOSE},u)}return l&&c.attributes.set("mathcolor",l),o.default.appendChildren(Q,[c]),Q},n.fixedFence=function(e,t,n,r){var a=e.nodeFactory.create("node","mrow",[],{open:t,close:r,texClass:i.TEXCLASS.ORD});return t&&o.default.appendChildren(a,[m(e,t,"l")]),o.default.isType(n,"mrow")?o.default.appendChildren(a,o.default.getChildren(n)):o.default.appendChildren(a,[n]),r&&o.default.appendChildren(a,[m(e,r,"r")]),a},n.mathPalette=m,n.fixInitialMO=function(e,t){for(var n=0,r=t.length;n<r;n++){var a=t[n];if(a&&!o.default.isType(a,"mspace")&&(!o.default.isType(a,"TeXAtom")||o.default.getChildren(a)[0]&&o.default.getChildren(o.default.getChildren(a)[0]).length)){if(o.default.isEmbellished(a)||o.default.isType(a,"TeXAtom")&&o.default.getTexClass(a)===i.TEXCLASS.REL){var s=e.nodeFactory.create("node","mi");t.unshift(s)}break}}},n.internalMath=function(e,t,n,r){if(e.configuration.options.internalMath)return e.configuration.options.internalMath(e,t,n,r);var i,o,l=r||e.stack.env.font,c=l?{mathvariant:l}:{},T=[],Q=0,d=0,u="",p=0;if(t.match(/\\?[${}\\]|\\\(|\\(eq)?ref\s*\{/)){for(;Q<t.length;)if("$"===(i=t.charAt(Q++)))"$"===u&&0===p?(o=e.create("node","TeXAtom",[new a.default(t.slice(d,Q-1),{},e.configuration).mml()]),T.push(o),u="",d=Q):""===u&&(d<Q-1&&T.push(f(e,t.slice(d,Q-1),c)),u="$",d=Q);else if("{"===i&&""!==u)p++;else if("}"===i)if("}"===u&&0===p){var h=new a.default(t.slice(d,Q),{},e.configuration).mml();o=e.create("node","TeXAtom",[h],c),T.push(o),u="",d=Q}else""!==u&&p&&p--;else if("\\"===i)if(""===u&&t.substr(Q).match(/^(eq)?ref\s*\{/)){var m=RegExp["$&"].length;d<Q-1&&T.push(f(e,t.slice(d,Q-1),c)),u="}",d=Q-1,Q+=m}else"("===(i=t.charAt(Q++))&&""===u?(d<Q-2&&T.push(f(e,t.slice(d,Q-2),c)),u=")",d=Q):")"===i&&")"===u&&0===p?(o=e.create("node","TeXAtom",[new a.default(t.slice(d,Q-2),{},e.configuration).mml()]),T.push(o),u="",d=Q):i.match(/[${}\\]/)&&""===u&&(Q--,t=t.substr(0,Q-1)+t.substr(Q));if(""!==u)throw new s.default("MathNotTerminated","Math not terminated in text box")}return d<t.length&&T.push(f(e,t.slice(d),c)),null!=n?T=[e.create("node","mstyle",T,{displaystyle:!1,scriptlevel:n})]:T.length>1&&(T=[e.create("node","mrow",T)]),T},n.internalText=f,n.underOver=function(e,t,r,a,s){if(n.checkMovableLimits(t),o.default.isType(t,"munderover")&&o.default.isEmbellished(t)){o.default.setProperties(o.default.getCoreMO(t),{lspace:0,rspace:0});var l=e.create("node","mo",[],{rspace:0});t=e.create("node","mrow",[l,t])}var c=e.create("node","munderover",[t]);o.default.setChild(c,"over"===a?c.over:c.under,r);var T=c;return s&&(T=e.create("node","TeXAtom",[c],{texClass:i.TEXCLASS.OP,movesupsub:!0})),o.default.setProperty(T,"subsupOK",!0),T},n.checkMovableLimits=function(e){var t=o.default.isType(e,"mo")?o.default.getForm(e):null;(o.default.getProperty(e,"movablelimits")||t&&t[3]&&t[3].movablelimits)&&o.default.setProperties(e,{movablelimits:!1})},n.trimSpaces=function(e){if("string"!=typeof e)return e;var t=e.trim();return t.match(/\\$/)&&e.match(/ $/)&&(t+=" "),t},n.setArrayAlign=function(e,t){return"t"===(t=n.trimSpaces(t||""))?e.arraydef.align="baseline 1":"b"===t?e.arraydef.align="baseline -1":"c"===t?e.arraydef.align="axis":t&&(e.arraydef.align=t),e},n.substituteArgs=function(e,t,n){for(var r="",i="",o=0;o<n.length;){var a=n.charAt(o++);if("\\"===a)r+=a+n.charAt(o++);else if("#"===a)if("#"===(a=n.charAt(o++)))r+=a;else{if(!a.match(/[1-9]/)||parseInt(a,10)>t.length)throw new s.default("IllegalMacroParam","Illegal macro parameter reference");i=g(e,g(e,i,r),t[parseInt(a,10)-1]),r=""}else r+=a}return g(e,i,r)},n.addArgs=g,n.checkMaxMacros=function(e,t){if(void 0===t&&(t=!0),!(++e.macroCount<=e.configuration.options.maxMacros))throw t?new s.default("MaxMacroSub1","MathJax maximum macro substitution count exceeded; is here a recursive macro call?"):new s.default("MaxMacroSub2","MathJax maximum substitution count exceeded; is there a recursive latex environment?")},n.checkEqnEnv=function(e){if(e.stack.global.eqnenv)throw new s.default("ErroneousNestingEq","Erroneous nesting of equation structures");e.stack.global.eqnenv=!0},n.copyNode=function(e,n){var r=e.copy(),i=n.configuration;return r.walkTree((function(e){var n,r;i.addNode(e.kind,e);var o=(e.getProperty("in-lists")||"").split(/,/);try{for(var a=t(o),s=a.next();!s.done;s=a.next()){var l=s.value;l&&i.addNode(l,e)}}catch(e){n={error:e}}finally{try{s&&!s.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}})),r},n.MmlFilterAttribute=function(e,t,n){return n},n.getFontDef=function(e){var t=e.stack.env.font;return t?{mathvariant:t}:{}},n.keyvalOptions=function(n,r,i){var o,a;void 0===r&&(r=null),void 0===i&&(i=!1);var l=function(t){for(var n,r,i,o,a,s={},l=t;l;)o=(n=e(y(l,["=",","]),3))[0],i=n[1],l=n[2],"="===i?(a=(r=e(y(l,[","]),3))[0],i=r[1],l=r[2],a="false"===a||"true"===a?JSON.parse(a):a,s[o]=a):o&&(s[o]=!0);return s}(n);if(r)try{for(var c=t(Object.keys(l)),T=c.next();!T.done;T=c.next()){var Q=T.value;if(!r.hasOwnProperty(Q)){if(i)throw new s.default("InvalidOption","Invalid option: %1",Q);delete l[Q]}}}catch(e){o={error:e}}finally{try{T&&!T.done&&(a=c.return)&&a.call(c)}finally{if(o)throw o.error}}return l}}(r||(r={})),ParseUtil.default=r,ParseUtil}AsyncLoad.asyncLoad=asyncLoad,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.numeric=e.translate=e.remove=e.add=e.entities=e.options=void 0;var t=Retries,n=AsyncLoad;e.options={loadMissingEntities:!0},e.entities={ApplyFunction:"⁡",Backslash:"∖",Because:"∵",Breve:"˘",Cap:"⋒",CenterDot:"·",CircleDot:"⊙",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",Congruent:"≡",ContourIntegral:"∮",Coproduct:"∐",Cross:"⨯",Cup:"⋓",CupCap:"≍",Dagger:"‡",Del:"∇",Delta:"Δ",Diamond:"⋄",DifferentialD:"ⅆ",DotEqual:"≐",DoubleDot:"¨",DoubleRightTee:"⊨",DoubleVerticalBar:"∥",DownArrow:"↓",DownLeftVector:"↽",DownRightVector:"⇁",DownTee:"⊤",Downarrow:"⇓",Element:"∈",EqualTilde:"≂",Equilibrium:"⇌",Exists:"∃",ExponentialE:"ⅇ",FilledVerySmallSquare:"▪",ForAll:"∀",Gamma:"Γ",Gg:"⋙",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",Hacek:"ˇ",Hat:"^",HumpDownHump:"≎",HumpEqual:"≏",Im:"ℑ",ImaginaryI:"ⅈ",Integral:"∫",Intersection:"⋂",InvisibleComma:"⁣",InvisibleTimes:"⁢",Lambda:"Λ",Larr:"↞",LeftAngleBracket:"⟨",LeftArrow:"←",LeftArrowRightArrow:"⇆",LeftCeiling:"⌈",LeftDownVector:"⇃",LeftFloor:"⌊",LeftRightArrow:"↔",LeftTee:"⊣",LeftTriangle:"⊲",LeftTriangleEqual:"⊴",LeftUpVector:"↿",LeftVector:"↼",Leftarrow:"⇐",Leftrightarrow:"⇔",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",LessSlantEqual:"⩽",LessTilde:"≲",Ll:"⋘",Lleftarrow:"⇚",LongLeftArrow:"⟵",LongLeftRightArrow:"⟷",LongRightArrow:"⟶",Longleftarrow:"⟸",Longleftrightarrow:"⟺",Longrightarrow:"⟹",Lsh:"↰",MinusPlus:"∓",NestedGreaterGreater:"≫",NestedLessLess:"≪",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotLeftTriangle:"⋪",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotPrecedes:"⊀",NotPrecedesSlantEqual:"⋠",NotRightTriangle:"⋫",NotRightTriangleEqual:"⋭",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsSlantEqual:"⋡",NotSupersetEqual:"⊉",NotTilde:"≁",NotVerticalBar:"∤",Omega:"Ω",OverBar:"‾",OverBrace:"⏞",PartialD:"∂",Phi:"Φ",Pi:"Π",PlusMinus:"±",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",Product:"∏",Proportional:"∝",Psi:"Ψ",Rarr:"↠",Re:"ℜ",ReverseEquilibrium:"⇋",RightAngleBracket:"⟩",RightArrow:"→",RightArrowLeftArrow:"⇄",RightCeiling:"⌉",RightDownVector:"⇂",RightFloor:"⌋",RightTee:"⊢",RightTeeArrow:"↦",RightTriangle:"⊳",RightTriangleEqual:"⊵",RightUpVector:"↾",RightVector:"⇀",Rightarrow:"⇒",Rrightarrow:"⇛",Rsh:"↱",Sigma:"Σ",SmallCircle:"∘",Sqrt:"√",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",Star:"⋆",Subset:"⋐",SubsetEqual:"⊆",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",SuchThat:"∋",Sum:"∑",Superset:"⊃",SupersetEqual:"⊇",Supset:"⋑",Therefore:"∴",Theta:"Θ",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",UnderBar:"_",UnderBrace:"⏟",Union:"⋃",UnionPlus:"⊎",UpArrow:"↑",UpDownArrow:"↕",UpTee:"⊥",Uparrow:"⇑",Updownarrow:"⇕",Upsilon:"Υ",Vdash:"⊩",Vee:"⋁",VerticalBar:"∣",VerticalTilde:"≀",Vvdash:"⊪",Wedge:"⋀",Xi:"Ξ",amp:"&",acute:"´",aleph:"ℵ",alpha:"α",amalg:"⨿",and:"∧",ang:"∠",angmsd:"∡",angsph:"∢",ape:"≊",backprime:"‵",backsim:"∽",backsimeq:"⋍",beta:"β",beth:"ℶ",between:"≬",bigcirc:"◯",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",blacklozenge:"⧫",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",bowtie:"⋈",boxdl:"┐",boxdr:"┌",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxul:"┘",boxur:"└",bsol:"\\",bull:"•",cap:"∩",check:"✓",chi:"χ",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledR:"®",circledS:"Ⓢ",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",clubs:"♣",colon:":",comp:"∁",ctdot:"⋯",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cup:"∪",curarr:"↷",curlyvee:"⋎",curlywedge:"⋏",dagger:"†",daleth:"ℸ",ddarr:"⇊",deg:"°",delta:"δ",digamma:"ϝ",div:"÷",divideontimes:"⋇",dot:"˙",doteqdot:"≑",dotplus:"∔",dotsquare:"⊡",dtdot:"⋱",ecir:"≖",efDot:"≒",egs:"⪖",ell:"ℓ",els:"⪕",empty:"∅",epsi:"ε",epsiv:"ϵ",erDot:"≓",eta:"η",eth:"ð",flat:"♭",fork:"⋔",frown:"⌢",gEl:"⪌",gamma:"γ",gap:"⪆",gimel:"ℷ",gnE:"≩",gnap:"⪊",gne:"⪈",gnsim:"⋧",gt:">",gtdot:"⋗",harrw:"↭",hbar:"ℏ",hellip:"…",hookleftarrow:"↩",hookrightarrow:"↪",imath:"ı",infin:"∞",intcal:"⊺",iota:"ι",jmath:"ȷ",kappa:"κ",kappav:"ϰ",lEg:"⪋",lambda:"λ",lap:"⪅",larrlp:"↫",larrtl:"↢",lbrace:"{",lbrack:"[",le:"≤",leftleftarrows:"⇇",leftthreetimes:"⋋",lessdot:"⋖",lmoust:"⎰",lnE:"≨",lnap:"⪉",lne:"⪇",lnsim:"⋦",longmapsto:"⟼",looparrowright:"↬",lowast:"∗",loz:"◊",lt:"<",ltimes:"⋉",ltri:"◃",macr:"¯",malt:"✠",mho:"℧",mu:"μ",multimap:"⊸",nLeftarrow:"⇍",nLeftrightarrow:"⇎",nRightarrow:"⇏",nVDash:"⊯",nVdash:"⊮",natur:"♮",nearr:"↗",nharr:"↮",nlarr:"↚",not:"¬",nrarr:"↛",nu:"ν",nvDash:"⊭",nvdash:"⊬",nwarr:"↖",omega:"ω",omicron:"ο",or:"∨",osol:"⊘",period:".",phi:"φ",phiv:"ϕ",pi:"π",piv:"ϖ",prap:"⪷",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",prime:"′",psi:"ψ",quot:'"',rarrtl:"↣",rbrace:"}",rbrack:"]",rho:"ρ",rhov:"ϱ",rightrightarrows:"⇉",rightthreetimes:"⋌",ring:"˚",rmoust:"⎱",rtimes:"⋊",rtri:"▹",scap:"⪸",scnE:"⪶",scnap:"⪺",scnsim:"⋩",sdot:"⋅",searr:"↘",sect:"§",sharp:"♯",sigma:"σ",sigmav:"ς",simne:"≆",smile:"⌣",spades:"♠",sub:"⊂",subE:"⫅",subnE:"⫋",subne:"⊊",supE:"⫆",supnE:"⫌",supne:"⊋",swarr:"↙",tau:"τ",theta:"θ",thetav:"ϑ",tilde:"˜",times:"×",triangle:"▵",triangleq:"≜",upsi:"υ",upuparrows:"⇈",veebar:"⊻",vellip:"⋮",weierp:"℘",xi:"ξ",yen:"¥",zeta:"ζ",zigrarr:"⇝",nbsp:" ",rsquo:"’",lsquo:"‘"};var r={};function i(i,a){if("#"===a.charAt(0))return o(a.slice(1));if(e.entities[a])return e.entities[a];if(e.options.loadMissingEntities){var s=a.match(/^[a-zA-Z](fr|scr|opf)$/)?RegExp.$1:a.charAt(0).toLowerCase();r[s]||(r[s]=!0,(0,t.retryAfter)((0,n.asyncLoad)("./util/entities/"+s+".js")))}return i}function o(e){var t="x"===e.charAt(0)?parseInt(e.slice(1),16):parseInt(e);return String.fromCodePoint(t)}e.add=function(t,n){Object.assign(e.entities,t),r[n]=!0},e.remove=function(t){delete e.entities[t]},e.translate=function(e){return e.replace(/&([a-z][a-z0-9]*|#(?:[0-9]+|x[0-9a-f]+));/gi,i)},e.numeric=o}(Entities);var Stack$1={},__values$z=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},__read$D=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$t=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))},__importDefault$E=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Stack$1,"__esModule",{value:!0});var hasRequiredTexParser,NodeUtil_js_1$f=__importDefault$E(NodeUtil$1),Stack=function(){function e(e,t,n){this._factory=e,this._env=t,this.global={},this.stack=[],this.global={isInner:n},this.stack=[this._factory.create("start",this.global)],t&&(this.stack[0].env=t),this.env=this.stack[0].env}return Object.defineProperty(e.prototype,"env",{get:function(){return this._env},set:function(e){this._env=e},enumerable:!1,configurable:!0}),e.prototype.Push=function(){for(var e,t,n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];try{for(var i=__values$z(n),o=i.next();!o.done;o=i.next()){var a=o.value;if(a){var s=NodeUtil_js_1$f.default.isNode(a)?this._factory.create("mml",a):a;s.global=this.global;var l=__read$D(this.stack.length?this.Top().checkItem(s):[null,!0],2),c=l[0];l[1]&&(c?(this.Pop(),this.Push.apply(this,__spreadArray$t([],__read$D(c),!1))):(this.stack.push(s),s.env?(s.copyEnv&&Object.assign(s.env,this.env),this.env=s.env):s.env=this.env))}}}catch(t){e={error:t}}finally{try{o&&!o.done&&(t=i.return)&&t.call(i)}finally{if(e)throw e.error}}},e.prototype.Pop=function(){var e=this.stack.pop();return e.isOpen||delete e.env,this.env=this.stack.length?this.Top().env:{},e},e.prototype.Top=function(e){return void 0===e&&(e=1),this.stack.length<e?null:this.stack[this.stack.length-e]},e.prototype.Prev=function(e){var t=this.Top();return e?t.First:t.Pop()},e.prototype.toString=function(){return"stack[\n "+this.stack.join("\n ")+"\n]"},e}();function requireTexParser(){if(hasRequiredTexParser)return TexParser;hasRequiredTexParser=1;var e=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},t=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},n=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))},r=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(TexParser,"__esModule",{value:!0});var i=r(requireParseUtil()),o=r(Stack$1),a=r(TexError$1),s=MmlNode,l=function(){function r(t,n,r){var i,a;this._string=t,this.configuration=r,this.macroCount=0,this.i=0,this.currentCS="";var s,l=n.hasOwnProperty("isInner"),c=n.isInner;if(delete n.isInner,n){s={};try{for(var T=e(Object.keys(n)),Q=T.next();!Q.done;Q=T.next()){var d=Q.value;s[d]=n[d]}}catch(e){i={error:e}}finally{try{Q&&!Q.done&&(a=T.return)&&a.call(T)}finally{if(i)throw i.error}}}this.configuration.pushParser(this),this.stack=new o.default(this.itemFactory,s,!l||c),this.Parse(),this.Push(this.itemFactory.create("stop"))}return Object.defineProperty(r.prototype,"options",{get:function(){return this.configuration.options},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"itemFactory",{get:function(){return this.configuration.itemFactory},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"tags",{get:function(){return this.configuration.tags},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"string",{get:function(){return this._string},set:function(e){this._string=e},enumerable:!1,configurable:!0}),r.prototype.parse=function(e,t){return this.configuration.handlers.get(e).parse(t)},r.prototype.lookup=function(e,t){return this.configuration.handlers.get(e).lookup(t)},r.prototype.contains=function(e,t){return this.configuration.handlers.get(e).contains(t)},r.prototype.toString=function(){var t,n,r="";try{for(var i=e(Array.from(this.configuration.handlers.keys())),o=i.next();!o.done;o=i.next()){var a=o.value;r+=a+": "+this.configuration.handlers.get(a)+"\n"}}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}return r},r.prototype.Parse=function(){for(var e;this.i<this.string.length;)e=this.getCodePoint(),this.i+=e.length,this.parse("character",[this,e])},r.prototype.Push=function(e){e instanceof s.AbstractMmlNode&&e.isInferred?this.PushAll(e.childNodes):this.stack.Push(e)},r.prototype.PushAll=function(t){var n,r;try{for(var i=e(t),o=i.next();!o.done;o=i.next()){var a=o.value;this.stack.Push(a)}}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}},r.prototype.mml=function(){if(!this.stack.Top().isKind("mml"))return null;var e=this.stack.Top().First;return this.configuration.popParser(),e},r.prototype.convertDelimiter=function(e){var t=this.lookup("delimiter",e);return t?t.char:null},r.prototype.getCodePoint=function(){var e=this.string.codePointAt(this.i);return void 0===e?"":String.fromCodePoint(e)},r.prototype.nextIsSpace=function(){return!!this.string.charAt(this.i).match(/\s/)},r.prototype.GetNext=function(){for(;this.nextIsSpace();)this.i++;return this.getCodePoint()},r.prototype.GetCS=function(){var e=this.string.slice(this.i).match(/^(([a-z]+) ?|[\uD800-\uDBFF].|.)/i);return e?(this.i+=e[0].length,e[2]||e[1]):(this.i++," ")},r.prototype.GetArgument=function(e,t){switch(this.GetNext()){case"":if(!t)throw new a.default("MissingArgFor","Missing argument for %1",this.currentCS);return null;case"}":if(!t)throw new a.default("ExtraCloseMissingOpen","Extra close brace or missing open brace");return null;case"\\":return this.i++,"\\"+this.GetCS();case"{":for(var n=++this.i,r=1;this.i<this.string.length;)switch(this.string.charAt(this.i++)){case"\\":this.i++;break;case"{":r++;break;case"}":if(0==--r)return this.string.slice(n,this.i-1)}throw new a.default("MissingCloseBrace","Missing close brace")}var i=this.getCodePoint();return this.i+=i.length,i},r.prototype.GetBrackets=function(e,t){if("["!==this.GetNext())return t;for(var n=++this.i,r=0;this.i<this.string.length;)switch(this.string.charAt(this.i++)){case"{":r++;break;case"\\":this.i++;break;case"}":if(r--<=0)throw new a.default("ExtraCloseLooking","Extra close brace while looking for %1","']'");break;case"]":if(0===r)return this.string.slice(n,this.i-1)}throw new a.default("MissingCloseBracket","Could not find closing ']' for argument to %1",this.currentCS)},r.prototype.GetDelimiter=function(e,t){var n=this.GetNext();if(this.i+=n.length,this.i<=this.string.length&&("\\"===n?n+=this.GetCS():"{"===n&&t&&(this.i--,n=this.GetArgument(e).trim()),this.contains("delimiter",n)))return this.convertDelimiter(n);throw new a.default("MissingOrUnrecognizedDelim","Missing or unrecognized delimiter for %1",this.currentCS)},r.prototype.GetDimen=function(e){if("{"===this.GetNext()){var n=this.GetArgument(e),r=t(i.default.matchDimen(n),2),o=r[0],s=r[1];if(o)return o+s}else{n=this.string.slice(this.i);var l=t(i.default.matchDimen(n,!0),3),c=(o=l[0],s=l[1],l[2]);if(o)return this.i+=c,o+s}throw new a.default("MissingDimOrUnits","Missing dimension or its units for %1",this.currentCS)},r.prototype.GetUpTo=function(e,t){for(;this.nextIsSpace();)this.i++;for(var n=this.i,r=0;this.i<this.string.length;){var i=this.i,o=this.GetNext();switch(this.i+=o.length,o){case"\\":o+=this.GetCS();break;case"{":r++;break;case"}":if(0===r)throw new a.default("ExtraCloseLooking","Extra close brace while looking for %1",t);r--}if(0===r&&o===t)return this.string.slice(n,i)}throw new a.default("TokenNotFoundForCommand","Could not find %1 for %2",t,this.currentCS)},r.prototype.ParseArg=function(e){return new r(this.GetArgument(e),this.stack.env,this.configuration).mml()},r.prototype.ParseUpTo=function(e,t){return new r(this.GetUpTo(e,t),this.stack.env,this.configuration).mml()},r.prototype.GetDelimiterArg=function(e){var t=i.default.trimSpaces(this.GetArgument(e));if(""===t)return null;if(this.contains("delimiter",t))return t;throw new a.default("MissingOrUnrecognizedDelim","Missing or unrecognized delimiter for %1",this.currentCS)},r.prototype.GetStar=function(){var e="*"===this.GetNext();return e&&this.i++,e},r.prototype.create=function(e){for(var r,i=[],o=1;o<arguments.length;o++)i[o-1]=arguments[o];return(r=this.configuration.nodeFactory).create.apply(r,n([e],t(i),!1))},r}();return TexParser.default=l,TexParser}Stack$1.default=Stack;var ParseOptions$1={},StackItemFactory$1={},StackItem={},__extends$1m=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__read$C=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$s=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))},__values$y=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},__importDefault$D=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(StackItem,"__esModule",{value:!0}),StackItem.BaseItem=StackItem.MmlStack=void 0;var TexError_js_1$h=__importDefault$D(TexError$1),MmlStack=function(){function e(e){this._nodes=e}return Object.defineProperty(e.prototype,"nodes",{get:function(){return this._nodes},enumerable:!1,configurable:!0}),e.prototype.Push=function(){for(var e,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];(e=this._nodes).push.apply(e,__spreadArray$s([],__read$C(t),!1))},e.prototype.Pop=function(){return this._nodes.pop()},Object.defineProperty(e.prototype,"First",{get:function(){return this._nodes[this.Size()-1]},set:function(e){this._nodes[this.Size()-1]=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"Last",{get:function(){return this._nodes[0]},set:function(e){this._nodes[0]=e},enumerable:!1,configurable:!0}),e.prototype.Peek=function(e){return null==e&&(e=1),this._nodes.slice(this.Size()-e)},e.prototype.Size=function(){return this._nodes.length},e.prototype.Clear=function(){this._nodes=[]},e.prototype.toMml=function(e,t){return void 0===e&&(e=!0),1!==this._nodes.length||t?this.create("node",e?"inferredMrow":"mrow",this._nodes,{}):this.First},e.prototype.create=function(e){for(var t,n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];return(t=this.factory.configuration.nodeFactory).create.apply(t,__spreadArray$s([e],__read$C(n),!1))},e}();StackItem.MmlStack=MmlStack;var BaseItem=function(e){function t(t){for(var n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];var i=e.call(this,n)||this;return i.factory=t,i.global={},i._properties={},i.isOpen&&(i._env={}),i}return __extends$1m(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"base"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"env",{get:function(){return this._env},set:function(e){this._env=e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"copyEnv",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.getProperty=function(e){return this._properties[e]},t.prototype.setProperty=function(e,t){return this._properties[e]=t,this},Object.defineProperty(t.prototype,"isOpen",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isClose",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isFinal",{get:function(){return!1},enumerable:!1,configurable:!0}),t.prototype.isKind=function(e){return e===this.kind},t.prototype.checkItem=function(e){if(e.isKind("over")&&this.isOpen&&(e.setProperty("num",this.toMml(!1)),this.Clear()),e.isKind("cell")&&this.isOpen){if(e.getProperty("linebreak"))return t.fail;throw new TexError_js_1$h.default("Misplaced","Misplaced %1",e.getName())}if(e.isClose&&this.getErrors(e.kind)){var n=__read$C(this.getErrors(e.kind),2),r=n[0],i=n[1];throw new TexError_js_1$h.default(r,i,e.getName())}return e.isFinal?(this.Push(e.First),t.fail):t.success},t.prototype.clearEnv=function(){var e,t;try{for(var n=__values$y(Object.keys(this.env)),r=n.next();!r.done;r=n.next()){var i=r.value;delete this.env[i]}}catch(t){e={error:t}}finally{try{r&&!r.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}},t.prototype.setProperties=function(e){return Object.assign(this._properties,e),this},t.prototype.getName=function(){return this.getProperty("name")},t.prototype.toString=function(){return this.kind+"["+this.nodes.join("; ")+"]"},t.prototype.getErrors=function(e){return(this.constructor.errors||{})[e]||t.errors[e]},t.fail=[null,!1],t.success=[null,!0],t.errors={end:["MissingBeginExtraEnd","Missing \\begin{%1} or extra \\end{%1}"],close:["ExtraCloseMissingOpen","Extra close brace or missing open brace"],right:["MissingLeftExtraRight","Missing \\left or extra \\right"],middle:["ExtraMiddle","Extra \\middle"]},t}(MmlStack);StackItem.BaseItem=BaseItem;var Factory={},__values$x=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},__read$B=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$r=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))};Object.defineProperty(Factory,"__esModule",{value:!0}),Factory.AbstractFactory=void 0;var AbstractFactory=function(){function e(e){var t,n;void 0===e&&(e=null),this.defaultKind="unknown",this.nodeMap=new Map,this.node={},null===e&&(e=this.constructor.defaultNodes);try{for(var r=__values$x(Object.keys(e)),i=r.next();!i.done;i=r.next()){var o=i.value;this.setNodeClass(o,e[o])}}catch(e){t={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}}return e.prototype.create=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return(this.node[e]||this.node[this.defaultKind]).apply(void 0,__spreadArray$r([],__read$B(t),!1))},e.prototype.setNodeClass=function(e,t){this.nodeMap.set(e,t);var n=this,r=this.nodeMap.get(e);this.node[e]=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return new(r.bind.apply(r,__spreadArray$r([void 0,n],__read$B(e),!1)))}},e.prototype.getNodeClass=function(e){return this.nodeMap.get(e)},e.prototype.deleteNodeClass=function(e){this.nodeMap.delete(e),delete this.node[e]},e.prototype.nodeIsKind=function(e,t){return e instanceof this.getNodeClass(t)},e.prototype.getKinds=function(){return Array.from(this.nodeMap.keys())},e.defaultNodes={},e}();Factory.AbstractFactory=AbstractFactory;var _a$a,__extends$1l=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(StackItemFactory$1,"__esModule",{value:!0});var StackItem_js_1$5=StackItem,Factory_js_1$2=Factory,DummyItem=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$1l(t,e),t}(StackItem_js_1$5.BaseItem),StackItemFactory=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.defaultKind="dummy",t.configuration=null,t}return __extends$1l(t,e),t.DefaultStackItems=((_a$a={})[DummyItem.prototype.kind]=DummyItem,_a$a),t}(Factory_js_1$2.AbstractFactory);StackItemFactory$1.default=StackItemFactory;var NodeFactory$2={},__read$A=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$q=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))},__importDefault$C=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(NodeFactory$2,"__esModule",{value:!0}),NodeFactory$2.NodeFactory=void 0;var NodeUtil_js_1$e=__importDefault$C(NodeUtil$1),NodeFactory$1=function(){function e(){this.mmlFactory=null,this.factory={node:e.createNode,token:e.createToken,text:e.createText,error:e.createError}}return e.createNode=function(e,t,n,r,i){void 0===n&&(n=[]),void 0===r&&(r={});var o=e.mmlFactory.create(t);return o.setChildren(n),i&&o.appendChild(i),NodeUtil_js_1$e.default.setProperties(o,r),o},e.createToken=function(e,t,n,r){void 0===n&&(n={}),void 0===r&&(r="");var i=e.create("text",r);return e.create("node",t,[],n,i)},e.createText=function(e,t){return null==t?null:e.mmlFactory.create("text").setText(t)},e.createError=function(e,t){var n=e.create("text",t),r=e.create("node","mtext",[],{},n);return e.create("node","merror",[r],{"data-mjx-error":t})},e.prototype.setMmlFactory=function(e){this.mmlFactory=e},e.prototype.set=function(e,t){this.factory[e]=t},e.prototype.setCreators=function(e){for(var t in e)this.set(t,e[t])},e.prototype.create=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=(this.factory[e]||this.factory.node).apply(void 0,__spreadArray$q([this,t[0]],__read$A(t.slice(1)),!1));return"node"===e&&this.configuration.addNode(t[0],r),r},e.prototype.get=function(e){return this.factory[e]},e}();NodeFactory$2.NodeFactory=NodeFactory$1;var __read$z=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$p=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))},__values$w=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},__importDefault$B=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ParseOptions$1,"__esModule",{value:!0});var StackItemFactory_js_1=__importDefault$B(StackItemFactory$1),NodeFactory_js_1$2=NodeFactory$2,NodeUtil_js_1$d=__importDefault$B(NodeUtil$1),Options_js_1$8=Options,ParseOptions=function(){function e(e,t){void 0===t&&(t=[]),this.options={},this.packageData=new Map,this.parsers=[],this.root=null,this.nodeLists={},this.error=!1,this.handlers=e.handlers,this.nodeFactory=new NodeFactory_js_1$2.NodeFactory,this.nodeFactory.configuration=this,this.nodeFactory.setCreators(e.nodes),this.itemFactory=new StackItemFactory_js_1.default(e.items),this.itemFactory.configuration=this,Options_js_1$8.defaultOptions.apply(void 0,__spreadArray$p([this.options],__read$z(t),!1)),(0,Options_js_1$8.defaultOptions)(this.options,e.options)}return e.prototype.pushParser=function(e){this.parsers.unshift(e)},e.prototype.popParser=function(){this.parsers.shift()},Object.defineProperty(e.prototype,"parser",{get:function(){return this.parsers[0]},enumerable:!1,configurable:!0}),e.prototype.clear=function(){this.parsers=[],this.root=null,this.nodeLists={},this.error=!1,this.tags.resetTag()},e.prototype.addNode=function(e,t){var n=this.nodeLists[e];if(n||(n=this.nodeLists[e]=[]),n.push(t),t.kind!==e){var r=NodeUtil_js_1$d.default.getProperty(t,"in-lists")||"",i=(r?r.split(/,/):[]).concat(e).join(",");NodeUtil_js_1$d.default.setProperty(t,"in-lists",i)}},e.prototype.getList=function(e){var t,n,r=this.nodeLists[e]||[],i=[];try{for(var o=__values$w(r),a=o.next();!a.done;a=o.next()){var s=a.value;this.inTree(s)&&i.push(s)}}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}return this.nodeLists[e]=i,i},e.prototype.removeFromList=function(e,t){var n,r,i=this.nodeLists[e]||[];try{for(var o=__values$w(t),a=o.next();!a.done;a=o.next()){var s=a.value,l=i.indexOf(s);l>=0&&i.splice(l,1)}}catch(e){n={error:e}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}},e.prototype.inTree=function(e){for(;e&&e!==this.root;)e=e.parent;return!!e},e}();ParseOptions$1.default=ParseOptions;var Tags={};!function(e){var t,n=commonjsGlobal&&commonjsGlobal.__extends||(t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},t(e,n)},function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),r=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},i=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.TagsFactory=e.AllTags=e.NoTags=e.AbstractTags=e.TagInfo=e.Label=void 0;var o=i(requireTexParser()),a=function(e,t){void 0===e&&(e="???"),void 0===t&&(t=""),this.tag=e,this.id=t};e.Label=a;var s=function(e,t,n,r,i,o,a,s){void 0===e&&(e=""),void 0===t&&(t=!1),void 0===n&&(n=!1),void 0===r&&(r=null),void 0===i&&(i=""),void 0===o&&(o=""),void 0===a&&(a=!1),void 0===s&&(s=""),this.env=e,this.taggable=t,this.defaultTags=n,this.tag=r,this.tagId=i,this.tagFormat=o,this.noTag=a,this.labelId=s};e.TagInfo=s;var l=function(){function e(){this.counter=0,this.allCounter=0,this.configuration=null,this.ids={},this.allIds={},this.labels={},this.allLabels={},this.redo=!1,this.refUpdate=!1,this.currentTag=new s,this.history=[],this.stack=[],this.enTag=function(e,t){var n=this.configuration.nodeFactory,r=n.create("node","mtd",[e]),i=n.create("node","mlabeledtr",[t,r]);return n.create("node","mtable",[i],{side:this.configuration.options.tagSide,minlabelspacing:this.configuration.options.tagIndent,displaystyle:!0})}}return e.prototype.start=function(e,t,n){this.currentTag&&this.stack.push(this.currentTag),this.currentTag=new s(e,t,n)},Object.defineProperty(e.prototype,"env",{get:function(){return this.currentTag.env},enumerable:!1,configurable:!0}),e.prototype.end=function(){this.history.push(this.currentTag),this.currentTag=this.stack.pop()},e.prototype.tag=function(e,t){this.currentTag.tag=e,this.currentTag.tagFormat=t?e:this.formatTag(e),this.currentTag.noTag=!1},e.prototype.notag=function(){this.tag("",!0),this.currentTag.noTag=!0},Object.defineProperty(e.prototype,"noTag",{get:function(){return this.currentTag.noTag},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"label",{get:function(){return this.currentTag.labelId},set:function(e){this.currentTag.labelId=e},enumerable:!1,configurable:!0}),e.prototype.formatUrl=function(e,t){return t+"#"+encodeURIComponent(e)},e.prototype.formatTag=function(e){return"("+e+")"},e.prototype.formatId=function(e){return"mjx-eqn:"+e.replace(/\s/g,"_")},e.prototype.formatNumber=function(e){return e.toString()},e.prototype.autoTag=function(){null==this.currentTag.tag&&(this.counter++,this.tag(this.formatNumber(this.counter),!1))},e.prototype.clearTag=function(){this.label="",this.tag(null,!0),this.currentTag.tagId=""},e.prototype.getTag=function(e){if(void 0===e&&(e=!1),e)return this.autoTag(),this.makeTag();var t=this.currentTag;return t.taggable&&!t.noTag&&(t.defaultTags&&this.autoTag(),t.tag)?this.makeTag():null},e.prototype.resetTag=function(){this.history=[],this.redo=!1,this.refUpdate=!1,this.clearTag()},e.prototype.reset=function(e){void 0===e&&(e=0),this.resetTag(),this.counter=this.allCounter=e,this.allLabels={},this.allIds={}},e.prototype.startEquation=function(e){this.history=[],this.stack=[],this.clearTag(),this.currentTag=new s("",void 0,void 0),this.labels={},this.ids={},this.counter=this.allCounter,this.redo=!1;var t=e.inputData.recompile;t&&(this.refUpdate=!0,this.counter=t.counter)},e.prototype.finishEquation=function(e){this.redo&&(e.inputData.recompile={state:e.state(),counter:this.allCounter}),this.refUpdate||(this.allCounter=this.counter),Object.assign(this.allIds,this.ids),Object.assign(this.allLabels,this.labels)},e.prototype.finalize=function(e,t){if(!t.display||this.currentTag.env||null==this.currentTag.tag)return e;var n=this.makeTag();return this.enTag(e,n)},e.prototype.makeId=function(){this.currentTag.tagId=this.formatId(this.configuration.options.useLabelIds&&this.label||this.currentTag.tag)},e.prototype.makeTag=function(){this.makeId(),this.label&&(this.labels[this.label]=new a(this.currentTag.tag,this.currentTag.tagId));var e=new o.default("\\text{"+this.currentTag.tagFormat+"}",{},this.configuration).mml();return this.configuration.nodeFactory.create("node","mtd",[e],{id:this.currentTag.tagId})},e}();e.AbstractTags=l;var c=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.autoTag=function(){},t.prototype.getTag=function(){return this.currentTag.tag?e.prototype.getTag.call(this):null},t}(l);e.NoTags=c;var T,Q,d,u=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.finalize=function(e,t){if(!t.display||this.history.find((function(e){return e.taggable})))return e;var n=this.getTag(!0);return this.enTag(e,n)},t}(l);e.AllTags=u,T=e.TagsFactory||(e.TagsFactory={}),Q=new Map([["none",c],["all",u]]),d="none",T.OPTIONS={tags:d,tagSide:"right",tagIndent:"0.8em",useLabelIds:!0,ignoreDuplicateLabels:!1},T.add=function(e,t){Q.set(e,t)},T.addTags=function(e){var t,n;try{for(var i=r(Object.keys(e)),o=i.next();!o.done;o=i.next()){var a=o.value;T.add(a,e[a])}}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}},T.create=function(e){var t=Q.get(e)||Q.get(d);if(!t)throw Error("Unknown tags class");return new t},T.setDefault=function(e){d=e},T.getDefault=function(){return T.create(d)}}(Tags);var Configuration={},MapHandler={};!function(e){var t=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},n=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(e,"__esModule",{value:!0}),e.SubHandlers=e.SubHandler=e.MapHandler=void 0;var r,i=PrioritizedList$1,o=FunctionList$1;!function(e){var t=new Map;e.register=function(e){t.set(e.name,e)},e.getMap=function(e){return t.get(e)}}(r=e.MapHandler||(e.MapHandler={}));var a=function(){function e(){this._configuration=new i.PrioritizedList,this._fallback=new o.FunctionList}return e.prototype.add=function(e,n,o){var a,s;void 0===o&&(o=i.PrioritizedList.DEFAULTPRIORITY);try{for(var l=t(e.slice().reverse()),c=l.next();!c.done;c=l.next()){var T=c.value,Q=r.getMap(T);if(!Q)return void this.warn("Configuration "+T+" not found! Omitted.");this._configuration.add(Q,o)}}catch(e){a={error:e}}finally{try{c&&!c.done&&(s=l.return)&&s.call(l)}finally{if(a)throw a.error}}n&&this._fallback.add(n,o)},e.prototype.parse=function(e){var r,i;try{for(var o=t(this._configuration),a=o.next();!a.done;a=o.next()){var s=a.value.item.parse(e);if(s)return s}}catch(e){r={error:e}}finally{try{a&&!a.done&&(i=o.return)&&i.call(o)}finally{if(r)throw r.error}}var l=n(e,2),c=l[0],T=l[1];Array.from(this._fallback)[0].item(c,T)},e.prototype.lookup=function(e){var t=this.applicable(e);return t?t.lookup(e):null},e.prototype.contains=function(e){return!!this.applicable(e)},e.prototype.toString=function(){var e,n,r=[];try{for(var i=t(this._configuration),o=i.next();!o.done;o=i.next()){var a=o.value.item;r.push(a.name)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(e)throw e.error}}return r.join(", ")},e.prototype.applicable=function(e){var n,r;try{for(var i=t(this._configuration),o=i.next();!o.done;o=i.next()){var a=o.value.item;if(a.contains(e))return a}}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}return null},e.prototype.retrieve=function(e){var n,r;try{for(var i=t(this._configuration),o=i.next();!o.done;o=i.next()){var a=o.value.item;if(a.name===e)return a}}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}return null},e.prototype.warn=function(e){console.log("TexParser Warning: "+e)},e}();e.SubHandler=a;var s=function(){function e(){this.map=new Map}return e.prototype.add=function(e,n,r){var o,s;void 0===r&&(r=i.PrioritizedList.DEFAULTPRIORITY);try{for(var l=t(Object.keys(e)),c=l.next();!c.done;c=l.next()){var T=c.value,Q=this.get(T);Q||(Q=new a,this.set(T,Q)),Q.add(e[T],n[T],r)}}catch(e){o={error:e}}finally{try{c&&!c.done&&(s=l.return)&&s.call(l)}finally{if(o)throw o.error}}},e.prototype.set=function(e,t){this.map.set(e,t)},e.prototype.get=function(e){return this.map.get(e)},e.prototype.retrieve=function(e){var n,r;try{for(var i=t(this.map.values()),o=i.next();!o.done;o=i.next()){var a=o.value.retrieve(e);if(a)return a}}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}return null},e.prototype.keys=function(){return this.map.keys()},e}();e.SubHandlers=s}(MapHandler),function(e){var t=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},n=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(e,"__esModule",{value:!0}),e.ParserConfiguration=e.ConfigurationHandler=e.Configuration=void 0;var r,i=Options,o=MapHandler,a=FunctionList$1,s=PrioritizedList$1,l=Tags,c=function(){function e(e,t,n,r,i,o,a,s,l,c,T,Q,d){void 0===t&&(t={}),void 0===n&&(n={}),void 0===r&&(r={}),void 0===i&&(i={}),void 0===o&&(o={}),void 0===a&&(a={}),void 0===s&&(s=[]),void 0===l&&(l=[]),void 0===c&&(c=null),void 0===T&&(T=null),this.name=e,this.handler=t,this.fallback=n,this.items=r,this.tags=i,this.options=o,this.nodes=a,this.preprocessors=s,this.postprocessors=l,this.initMethod=c,this.configMethod=T,this.priority=Q,this.parser=d,this.handler=Object.assign({character:[],delimiter:[],macro:[],environment:[]},t)}return e.makeProcessor=function(e,t){return Array.isArray(e)?e:[e,t]},e._create=function(t,n){var r=this;void 0===n&&(n={});var i=n.priority||s.PrioritizedList.DEFAULTPRIORITY,o=n.init?this.makeProcessor(n.init,i):null,a=n.config?this.makeProcessor(n.config,i):null,l=(n.preprocessors||[]).map((function(e){return r.makeProcessor(e,i)})),c=(n.postprocessors||[]).map((function(e){return r.makeProcessor(e,i)})),T=n.parser||"tex";return new e(t,n.handler||{},n.fallback||{},n.items||{},n.tags||{},n.options||{},n.nodes||{},l,c,o,a,i,T)},e.create=function(t,n){void 0===n&&(n={});var i=e._create(t,n);return r.set(t,i),i},e.local=function(t){return void 0===t&&(t={}),e._create("",t)},Object.defineProperty(e.prototype,"init",{get:function(){return this.initMethod?this.initMethod[0]:null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"config",{get:function(){return this.configMethod?this.configMethod[0]:null},enumerable:!1,configurable:!0}),e}();e.Configuration=c,function(e){var t=new Map;e.set=function(e,n){t.set(e,n)},e.get=function(e){return t.get(e)},e.keys=function(){return t.keys()}}(r=e.ConfigurationHandler||(e.ConfigurationHandler={}));var T=function(){function e(e,n){var r,i,l,c;void 0===n&&(n=["tex"]),this.initMethod=new a.FunctionList,this.configMethod=new a.FunctionList,this.configurations=new s.PrioritizedList,this.parsers=[],this.handlers=new o.SubHandlers,this.items={},this.tags={},this.options={},this.nodes={},this.parsers=n;try{for(var T=t(e.slice().reverse()),Q=T.next();!Q.done;Q=T.next()){var d=Q.value;this.addPackage(d)}}catch(e){r={error:e}}finally{try{Q&&!Q.done&&(i=T.return)&&i.call(T)}finally{if(r)throw r.error}}try{for(var u=t(this.configurations),p=u.next();!p.done;p=u.next()){var h=p.value,m=h.item,f=h.priority;this.append(m,f)}}catch(e){l={error:e}}finally{try{p&&!p.done&&(c=u.return)&&c.call(u)}finally{if(l)throw l.error}}}return e.prototype.init=function(){this.initMethod.execute(this)},e.prototype.config=function(e){var n,r;this.configMethod.execute(this,e);try{for(var i=t(this.configurations),o=i.next();!o.done;o=i.next()){var a=o.value;this.addFilters(e,a.item)}}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}},e.prototype.addPackage=function(e){var t="string"==typeof e?e:e[0],n=this.getPackage(t);n&&this.configurations.add(n,"string"==typeof e?n.priority:e[1])},e.prototype.add=function(e,n,r){var o,a;void 0===r&&(r={});var s=this.getPackage(e);this.append(s),this.configurations.add(s,s.priority),this.init();var c=n.parseOptions;c.nodeFactory.setCreators(s.nodes);try{for(var T=t(Object.keys(s.items)),Q=T.next();!Q.done;Q=T.next()){var d=Q.value;c.itemFactory.setNodeClass(d,s.items[d])}}catch(e){o={error:e}}finally{try{Q&&!Q.done&&(a=T.return)&&a.call(T)}finally{if(o)throw o.error}}l.TagsFactory.addTags(s.tags),(0,i.defaultOptions)(c.options,s.options),(0,i.userOptions)(c.options,r),this.addFilters(n,s),s.config&&s.config(this,n)},e.prototype.getPackage=function(e){var t=r.get(e);if(t&&this.parsers.indexOf(t.parser)<0)throw Error("Package ".concat(e," doesn't target the proper parser"));return t},e.prototype.append=function(e,t){t=t||e.priority,e.initMethod&&this.initMethod.add(e.initMethod[0],e.initMethod[1]),e.configMethod&&this.configMethod.add(e.configMethod[0],e.configMethod[1]),this.handlers.add(e.handler,e.fallback,t),Object.assign(this.items,e.items),Object.assign(this.tags,e.tags),(0,i.defaultOptions)(this.options,e.options),Object.assign(this.nodes,e.nodes)},e.prototype.addFilters=function(e,r){var i,o,a,s;try{for(var l=t(r.preprocessors),c=l.next();!c.done;c=l.next()){var T=n(c.value,2),Q=T[0],d=T[1];e.preFilters.add(Q,d)}}catch(e){i={error:e}}finally{try{c&&!c.done&&(o=l.return)&&o.call(l)}finally{if(i)throw i.error}}try{for(var u=t(r.postprocessors),p=u.next();!p.done;p=u.next()){var h=n(p.value,2),m=h[0];d=h[1],e.postFilters.add(m,d)}}catch(e){a={error:e}}finally{try{p&&!p.done&&(s=u.return)&&s.call(u)}finally{if(a)throw a.error}}},e}();e.ParserConfiguration=T}(Configuration);var BaseConfiguration={},SymbolMap={},_Symbol={};Object.defineProperty(_Symbol,"__esModule",{value:!0}),_Symbol.Macro=_Symbol.Symbol=void 0;var Symbol$1=function(){function e(e,t,n){this._symbol=e,this._char=t,this._attributes=n}return Object.defineProperty(e.prototype,"symbol",{get:function(){return this._symbol},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"char",{get:function(){return this._char},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"attributes",{get:function(){return this._attributes},enumerable:!1,configurable:!0}),e}();_Symbol.Symbol=Symbol$1;var Macro=function(){function e(e,t,n){void 0===n&&(n=[]),this._symbol=e,this._func=t,this._args=n}return Object.defineProperty(e.prototype,"symbol",{get:function(){return this._symbol},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"func",{get:function(){return this._func},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"args",{get:function(){return this._args},enumerable:!1,configurable:!0}),e}();_Symbol.Macro=Macro;var __extends$1k=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__read$y=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__values$v=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},__spreadArray$o=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))};Object.defineProperty(SymbolMap,"__esModule",{value:!0}),SymbolMap.EnvironmentMap=SymbolMap.CommandMap=SymbolMap.MacroMap=SymbolMap.DelimiterMap=SymbolMap.CharacterMap=SymbolMap.AbstractParseMap=SymbolMap.RegExpMap=SymbolMap.AbstractSymbolMap=SymbolMap.parseResult=void 0;var Symbol_js_1$2=_Symbol,MapHandler_js_1$2=MapHandler;function parseResult(e){return void 0===e||e}SymbolMap.parseResult=parseResult;var AbstractSymbolMap=function(){function e(e,t){this._name=e,this._parser=t,MapHandler_js_1$2.MapHandler.register(this)}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),e.prototype.parserFor=function(e){return this.contains(e)?this.parser:null},e.prototype.parse=function(e){var t=__read$y(e,2),n=t[0],r=t[1],i=this.parserFor(r),o=this.lookup(r);return i&&o?parseResult(i(n,o)):null},Object.defineProperty(e.prototype,"parser",{get:function(){return this._parser},set:function(e){this._parser=e},enumerable:!1,configurable:!0}),e}();SymbolMap.AbstractSymbolMap=AbstractSymbolMap;var RegExpMap=function(e){function t(t,n,r){var i=e.call(this,t,n)||this;return i._regExp=r,i}return __extends$1k(t,e),t.prototype.contains=function(e){return this._regExp.test(e)},t.prototype.lookup=function(e){return this.contains(e)?e:null},t}(AbstractSymbolMap);SymbolMap.RegExpMap=RegExpMap;var AbstractParseMap=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.map=new Map,t}return __extends$1k(t,e),t.prototype.lookup=function(e){return this.map.get(e)},t.prototype.contains=function(e){return this.map.has(e)},t.prototype.add=function(e,t){this.map.set(e,t)},t.prototype.remove=function(e){this.map.delete(e)},t}(AbstractSymbolMap);SymbolMap.AbstractParseMap=AbstractParseMap;var CharacterMap=function(e){function t(t,n,r){var i,o,a=e.call(this,t,n)||this;try{for(var s=__values$v(Object.keys(r)),l=s.next();!l.done;l=s.next()){var c=l.value,T=r[c],Q=__read$y("string"==typeof T?[T,null]:T,2),d=Q[0],u=Q[1],p=new Symbol_js_1$2.Symbol(c,d,u);a.add(c,p)}}catch(e){i={error:e}}finally{try{l&&!l.done&&(o=s.return)&&o.call(s)}finally{if(i)throw i.error}}return a}return __extends$1k(t,e),t}(AbstractParseMap);SymbolMap.CharacterMap=CharacterMap;var DelimiterMap=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$1k(t,e),t.prototype.parse=function(t){var n=__read$y(t,2),r=n[0],i=n[1];return e.prototype.parse.call(this,[r,"\\"+i])},t}(CharacterMap);SymbolMap.DelimiterMap=DelimiterMap;var MacroMap=function(e){function t(t,n,r){var i,o,a=e.call(this,t,null)||this;try{for(var s=__values$v(Object.keys(n)),l=s.next();!l.done;l=s.next()){var c=l.value,T=n[c],Q=__read$y("string"==typeof T?[T]:T),d=Q[0],u=Q.slice(1),p=new Symbol_js_1$2.Macro(c,r[d],u);a.add(c,p)}}catch(e){i={error:e}}finally{try{l&&!l.done&&(o=s.return)&&o.call(s)}finally{if(i)throw i.error}}return a}return __extends$1k(t,e),t.prototype.parserFor=function(e){var t=this.lookup(e);return t?t.func:null},t.prototype.parse=function(e){var t=__read$y(e,2),n=t[0],r=t[1],i=this.lookup(r),o=this.parserFor(r);return i&&o?parseResult(o.apply(void 0,__spreadArray$o([n,i.symbol],__read$y(i.args),!1))):null},t}(AbstractParseMap);SymbolMap.MacroMap=MacroMap;var CommandMap=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$1k(t,e),t.prototype.parse=function(e){var t=__read$y(e,2),n=t[0],r=t[1],i=this.lookup(r),o=this.parserFor(r);if(!i||!o)return null;var a=n.currentCS;n.currentCS="\\"+r;var s=o.apply(void 0,__spreadArray$o([n,"\\"+i.symbol],__read$y(i.args),!1));return n.currentCS=a,parseResult(s)},t}(MacroMap);SymbolMap.CommandMap=CommandMap;var EnvironmentMap=function(e){function t(t,n,r,i){var o=e.call(this,t,r,i)||this;return o.parser=n,o}return __extends$1k(t,e),t.prototype.parse=function(e){var t=__read$y(e,2),n=t[0],r=t[1],i=this.lookup(r),o=this.parserFor(r);return i&&o?parseResult(this.parser(n,i.symbol,o,i.args)):null},t}(MacroMap);SymbolMap.EnvironmentMap=EnvironmentMap;var BaseItems={},__extends$1j=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__read$x=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$n=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))},__importDefault$A=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(BaseItems,"__esModule",{value:!0}),BaseItems.EquationItem=BaseItems.EqnArrayItem=BaseItems.ArrayItem=BaseItems.DotsItem=BaseItems.NonscriptItem=BaseItems.NotItem=BaseItems.FnItem=BaseItems.MmlItem=BaseItems.CellItem=BaseItems.PositionItem=BaseItems.StyleItem=BaseItems.EndItem=BaseItems.BeginItem=BaseItems.RightItem=BaseItems.Middle=BaseItems.LeftItem=BaseItems.OverItem=BaseItems.SubsupItem=BaseItems.PrimeItem=BaseItems.CloseItem=BaseItems.OpenItem=BaseItems.StopItem=BaseItems.StartItem=void 0;var MapHandler_js_1$1=MapHandler,Entities_js_1$1=Entities,MmlNode_js_1$G=MmlNode,TexError_js_1$g=__importDefault$A(TexError$1),ParseUtil_js_1$d=__importDefault$A(requireParseUtil()),NodeUtil_js_1$c=__importDefault$A(NodeUtil$1),StackItem_js_1$4=StackItem,StartItem=function(e){function t(t,n){var r=e.call(this,t)||this;return r.global=n,r}return __extends$1j(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"start"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isOpen",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(t){if(t.isKind("stop")){var n=this.toMml();return this.global.isInner||(n=this.factory.configuration.tags.finalize(n,this.env)),[[this.factory.create("mml",n)],!0]}return e.prototype.checkItem.call(this,t)},t}(StackItem_js_1$4.BaseItem);BaseItems.StartItem=StartItem;var StopItem=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$1j(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"stop"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isClose",{get:function(){return!0},enumerable:!1,configurable:!0}),t}(StackItem_js_1$4.BaseItem);BaseItems.StopItem=StopItem;var OpenItem=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$1j(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"open"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isOpen",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(t){if(t.isKind("close")){var n=this.toMml(),r=this.create("node","TeXAtom",[n]);return[[this.factory.create("mml",r)],!0]}return e.prototype.checkItem.call(this,t)},t.errors=Object.assign(Object.create(StackItem_js_1$4.BaseItem.errors),{stop:["ExtraOpenMissingClose","Extra open brace or missing close brace"]}),t}(StackItem_js_1$4.BaseItem);BaseItems.OpenItem=OpenItem;var CloseItem=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$1j(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"close"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isClose",{get:function(){return!0},enumerable:!1,configurable:!0}),t}(StackItem_js_1$4.BaseItem);BaseItems.CloseItem=CloseItem;var PrimeItem=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$1j(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"prime"},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(e){var t=__read$x(this.Peek(2),2),n=t[0],r=t[1];return!NodeUtil_js_1$c.default.isType(n,"msubsup")||NodeUtil_js_1$c.default.isType(n,"msup")?[[this.create("node","msup",[n,r]),e],!0]:(NodeUtil_js_1$c.default.setChild(n,n.sup,r),[[n,e],!0])},t}(StackItem_js_1$4.BaseItem);BaseItems.PrimeItem=PrimeItem;var SubsupItem=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$1j(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"subsup"},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(t){if(t.isKind("open")||t.isKind("left"))return StackItem_js_1$4.BaseItem.success;var n=this.First,r=this.getProperty("position");if(t.isKind("mml")){if(this.getProperty("primes"))if(2!==r)NodeUtil_js_1$c.default.setChild(n,2,this.getProperty("primes"));else{NodeUtil_js_1$c.default.setProperty(this.getProperty("primes"),"variantForm",!0);var i=this.create("node","mrow",[this.getProperty("primes"),t.First]);t.First=i}return NodeUtil_js_1$c.default.setChild(n,r,t.First),null!=this.getProperty("movesupsub")&&NodeUtil_js_1$c.default.setProperty(n,"movesupsub",this.getProperty("movesupsub")),[[this.factory.create("mml",n)],!0]}if(e.prototype.checkItem.call(this,t)[1]){var o=this.getErrors(["","sub","sup"][r]);throw new(TexError_js_1$g.default.bind.apply(TexError_js_1$g.default,__spreadArray$n([void 0,o[0],o[1]],__read$x(o.splice(2)),!1)))}return null},t.errors=Object.assign(Object.create(StackItem_js_1$4.BaseItem.errors),{stop:["MissingScript","Missing superscript or subscript argument"],sup:["MissingOpenForSup","Missing open brace for superscript"],sub:["MissingOpenForSub","Missing open brace for subscript"]}),t}(StackItem_js_1$4.BaseItem);BaseItems.SubsupItem=SubsupItem;var OverItem=function(e){function t(t){var n=e.call(this,t)||this;return n.setProperty("name","\\over"),n}return __extends$1j(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"over"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isClose",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(t){if(t.isKind("over"))throw new TexError_js_1$g.default("AmbiguousUseOf","Ambiguous use of %1",t.getName());if(t.isClose){var n=this.create("node","mfrac",[this.getProperty("num"),this.toMml(!1)]);return null!=this.getProperty("thickness")&&NodeUtil_js_1$c.default.setAttribute(n,"linethickness",this.getProperty("thickness")),(this.getProperty("open")||this.getProperty("close"))&&(NodeUtil_js_1$c.default.setProperty(n,"withDelims",!0),n=ParseUtil_js_1$d.default.fixedFence(this.factory.configuration,this.getProperty("open"),n,this.getProperty("close"))),[[this.factory.create("mml",n),t],!0]}return e.prototype.checkItem.call(this,t)},t.prototype.toString=function(){return"over["+this.getProperty("num")+" / "+this.nodes.join("; ")+"]"},t}(StackItem_js_1$4.BaseItem);BaseItems.OverItem=OverItem;var LeftItem=function(e){function t(t,n){var r=e.call(this,t)||this;return r.setProperty("delim",n),r}return __extends$1j(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"left"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isOpen",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(t){if(t.isKind("right"))return[[this.factory.create("mml",ParseUtil_js_1$d.default.fenced(this.factory.configuration,this.getProperty("delim"),this.toMml(),t.getProperty("delim"),"",t.getProperty("color")))],!0];if(t.isKind("middle")){var n={stretchy:!0};return t.getProperty("color")&&(n.mathcolor=t.getProperty("color")),this.Push(this.create("node","TeXAtom",[],{texClass:MmlNode_js_1$G.TEXCLASS.CLOSE}),this.create("token","mo",n,t.getProperty("delim")),this.create("node","TeXAtom",[],{texClass:MmlNode_js_1$G.TEXCLASS.OPEN})),this.env={},[[this],!0]}return e.prototype.checkItem.call(this,t)},t.errors=Object.assign(Object.create(StackItem_js_1$4.BaseItem.errors),{stop:["ExtraLeftMissingRight","Extra \\left or missing \\right"]}),t}(StackItem_js_1$4.BaseItem);BaseItems.LeftItem=LeftItem;var Middle=function(e){function t(t,n,r){var i=e.call(this,t)||this;return i.setProperty("delim",n),r&&i.setProperty("color",r),i}return __extends$1j(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"middle"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isClose",{get:function(){return!0},enumerable:!1,configurable:!0}),t}(StackItem_js_1$4.BaseItem);BaseItems.Middle=Middle;var RightItem=function(e){function t(t,n,r){var i=e.call(this,t)||this;return i.setProperty("delim",n),r&&i.setProperty("color",r),i}return __extends$1j(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"right"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isClose",{get:function(){return!0},enumerable:!1,configurable:!0}),t}(StackItem_js_1$4.BaseItem);BaseItems.RightItem=RightItem;var BeginItem=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$1j(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"begin"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isOpen",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(t){if(t.isKind("end")){if(t.getName()!==this.getName())throw new TexError_js_1$g.default("EnvBadEnd","\\begin{%1} ended with \\end{%2}",this.getName(),t.getName());return this.getProperty("end")?StackItem_js_1$4.BaseItem.fail:[[this.factory.create("mml",this.toMml())],!0]}if(t.isKind("stop"))throw new TexError_js_1$g.default("EnvMissingEnd","Missing \\end{%1}",this.getName());return e.prototype.checkItem.call(this,t)},t}(StackItem_js_1$4.BaseItem);BaseItems.BeginItem=BeginItem;var EndItem=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$1j(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"end"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isClose",{get:function(){return!0},enumerable:!1,configurable:!0}),t}(StackItem_js_1$4.BaseItem);BaseItems.EndItem=EndItem;var StyleItem=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$1j(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"style"},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(t){if(!t.isClose)return e.prototype.checkItem.call(this,t);var n=this.create("node","mstyle",this.nodes,this.getProperty("styles"));return[[this.factory.create("mml",n),t],!0]},t}(StackItem_js_1$4.BaseItem);BaseItems.StyleItem=StyleItem;var PositionItem=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$1j(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"position"},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(t){if(t.isClose)throw new TexError_js_1$g.default("MissingBoxFor","Missing box for %1",this.getName());if(t.isFinal){var n=t.toMml();switch(this.getProperty("move")){case"vertical":return n=this.create("node","mpadded",[n],{height:this.getProperty("dh"),depth:this.getProperty("dd"),voffset:this.getProperty("dh")}),[[this.factory.create("mml",n)],!0];case"horizontal":return[[this.factory.create("mml",this.getProperty("left")),t,this.factory.create("mml",this.getProperty("right"))],!0]}}return e.prototype.checkItem.call(this,t)},t}(StackItem_js_1$4.BaseItem);BaseItems.PositionItem=PositionItem;var CellItem=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$1j(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"cell"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isClose",{get:function(){return!0},enumerable:!1,configurable:!0}),t}(StackItem_js_1$4.BaseItem);BaseItems.CellItem=CellItem;var MmlItem=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$1j(t,e),Object.defineProperty(t.prototype,"isFinal",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"kind",{get:function(){return"mml"},enumerable:!1,configurable:!0}),t}(StackItem_js_1$4.BaseItem);BaseItems.MmlItem=MmlItem;var FnItem=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$1j(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"fn"},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(t){var n=this.First;if(n){if(t.isOpen)return StackItem_js_1$4.BaseItem.success;if(!t.isKind("fn")){var r=t.First;if(!t.isKind("mml")||!r)return[[n,t],!0];if(NodeUtil_js_1$c.default.isType(r,"mstyle")&&r.childNodes.length&&NodeUtil_js_1$c.default.isType(r.childNodes[0].childNodes[0],"mspace")||NodeUtil_js_1$c.default.isType(r,"mspace"))return[[n,t],!0];NodeUtil_js_1$c.default.isEmbellished(r)&&(r=NodeUtil_js_1$c.default.getCoreMO(r));var i=NodeUtil_js_1$c.default.getForm(r);if(null!=i&&[0,0,1,1,0,1,1,0,0,0][i[2]])return[[n,t],!0]}return[[n,this.create("token","mo",{texClass:MmlNode_js_1$G.TEXCLASS.NONE},Entities_js_1$1.entities.ApplyFunction),t],!0]}return e.prototype.checkItem.apply(this,arguments)},t}(StackItem_js_1$4.BaseItem);BaseItems.FnItem=FnItem;var NotItem=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.remap=MapHandler_js_1$1.MapHandler.getMap("not_remap"),t}return __extends$1j(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"not"},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(e){var t,n,r;if(e.isKind("open")||e.isKind("left"))return StackItem_js_1$4.BaseItem.success;if(e.isKind("mml")&&(NodeUtil_js_1$c.default.isType(e.First,"mo")||NodeUtil_js_1$c.default.isType(e.First,"mi")||NodeUtil_js_1$c.default.isType(e.First,"mtext"))&&(t=e.First,1===(n=NodeUtil_js_1$c.default.getText(t)).length&&!NodeUtil_js_1$c.default.getProperty(t,"movesupsub")&&1===NodeUtil_js_1$c.default.getChildren(t).length))return this.remap.contains(n)?(r=this.create("text",this.remap.lookup(n).char),NodeUtil_js_1$c.default.setChild(t,0,r)):(r=this.create("text","̸"),NodeUtil_js_1$c.default.appendChildren(t,[r])),[[e],!0];r=this.create("text","⧸");var i=this.create("node","mtext",[],{},r),o=this.create("node","mpadded",[i],{width:0});return[[t=this.create("node","TeXAtom",[o],{texClass:MmlNode_js_1$G.TEXCLASS.REL}),e],!0]},t}(StackItem_js_1$4.BaseItem);BaseItems.NotItem=NotItem;var NonscriptItem=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$1j(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"nonscript"},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(e){if(e.isKind("mml")&&1===e.Size()){var t=e.First;if(t.isKind("mstyle")&&t.notParent&&(t=NodeUtil_js_1$c.default.getChildren(NodeUtil_js_1$c.default.getChildren(t)[0])[0]),t.isKind("mspace")){if(t!==e.First){var n=this.create("node","mrow",[e.Pop()]);e.Push(n)}this.factory.configuration.addNode("nonscript",e.First)}}return[[e],!0]},t}(StackItem_js_1$4.BaseItem);BaseItems.NonscriptItem=NonscriptItem;var DotsItem=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$1j(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"dots"},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(e){if(e.isKind("open")||e.isKind("left"))return StackItem_js_1$4.BaseItem.success;var t=this.getProperty("ldots"),n=e.First;if(e.isKind("mml")&&NodeUtil_js_1$c.default.isEmbellished(n)){var r=NodeUtil_js_1$c.default.getTexClass(NodeUtil_js_1$c.default.getCoreMO(n));r!==MmlNode_js_1$G.TEXCLASS.BIN&&r!==MmlNode_js_1$G.TEXCLASS.REL||(t=this.getProperty("cdots"))}return[[t,e],!0]},t}(StackItem_js_1$4.BaseItem);BaseItems.DotsItem=DotsItem;var ArrayItem=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.table=[],t.row=[],t.frame=[],t.hfill=[],t.arraydef={},t.dashed=!1,t}return __extends$1j(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"array"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isOpen",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"copyEnv",{get:function(){return!1},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(t){if(t.isClose&&!t.isKind("over")){if(t.getProperty("isEntry"))return this.EndEntry(),this.clearEnv(),StackItem_js_1$4.BaseItem.fail;if(t.getProperty("isCR"))return this.EndEntry(),this.EndRow(),this.clearEnv(),StackItem_js_1$4.BaseItem.fail;this.EndTable(),this.clearEnv();var n=this.factory.create("mml",this.createMml());if(this.getProperty("requireClose")){if(t.isKind("close"))return[[n],!0];throw new TexError_js_1$g.default("MissingCloseBrace","Missing close brace")}return[[n,t],!0]}return e.prototype.checkItem.call(this,t)},t.prototype.createMml=function(){var e=this.arraydef.scriptlevel;delete this.arraydef.scriptlevel;var t=this.create("node","mtable",this.table,this.arraydef);return e&&t.setProperty("scriptlevel",e),4===this.frame.length?NodeUtil_js_1$c.default.setAttribute(t,"frame",this.dashed?"dashed":"solid"):this.frame.length&&(this.arraydef.rowlines&&(this.arraydef.rowlines=this.arraydef.rowlines.replace(/none( none)+$/,"none")),NodeUtil_js_1$c.default.setAttribute(t,"frame",""),t=this.create("node","menclose",[t],{notation:this.frame.join(" ")}),"none"===(this.arraydef.columnlines||"none")&&"none"===(this.arraydef.rowlines||"none")||NodeUtil_js_1$c.default.setAttribute(t,"data-padding",0)),(this.getProperty("open")||this.getProperty("close"))&&(t=ParseUtil_js_1$d.default.fenced(this.factory.configuration,this.getProperty("open"),t,this.getProperty("close"))),t},t.prototype.EndEntry=function(){var e=this.create("node","mtd",this.nodes);this.hfill.length&&(0===this.hfill[0]&&NodeUtil_js_1$c.default.setAttribute(e,"columnalign","right"),this.hfill[this.hfill.length-1]===this.Size()&&NodeUtil_js_1$c.default.setAttribute(e,"columnalign",NodeUtil_js_1$c.default.getAttribute(e,"columnalign")?"center":"left")),this.row.push(e),this.Clear(),this.hfill=[]},t.prototype.EndRow=function(){var e;this.getProperty("isNumbered")&&3===this.row.length?(this.row.unshift(this.row.pop()),e=this.create("node","mlabeledtr",this.row)):e=this.create("node","mtr",this.row),this.table.push(e),this.row=[]},t.prototype.EndTable=function(){(this.Size()||this.row.length)&&(this.EndEntry(),this.EndRow()),this.checkLines()},t.prototype.checkLines=function(){if(this.arraydef.rowlines){var e=this.arraydef.rowlines.split(/ /);e.length===this.table.length?(this.frame.push("bottom"),e.pop(),this.arraydef.rowlines=e.join(" ")):e.length<this.table.length-1&&(this.arraydef.rowlines+=" none")}if(this.getProperty("rowspacing")){for(var t=this.arraydef.rowspacing.split(/ /);t.length<this.table.length;)t.push(this.getProperty("rowspacing")+"em");this.arraydef.rowspacing=t.join(" ")}},t.prototype.addRowSpacing=function(e){if(this.arraydef.rowspacing){var t=this.arraydef.rowspacing.split(/ /);if(!this.getProperty("rowspacing")){var n=ParseUtil_js_1$d.default.dimen2em(t[0]);this.setProperty("rowspacing",n)}for(var r=this.getProperty("rowspacing");t.length<this.table.length;)t.push(ParseUtil_js_1$d.default.Em(r));t[this.table.length-1]=ParseUtil_js_1$d.default.Em(Math.max(0,r+ParseUtil_js_1$d.default.dimen2em(e))),this.arraydef.rowspacing=t.join(" ")}},t}(StackItem_js_1$4.BaseItem);BaseItems.ArrayItem=ArrayItem;var EqnArrayItem=function(e){function t(t){for(var n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];var i=e.call(this,t)||this;return i.maxrow=0,i.factory.configuration.tags.start(n[0],n[2],n[1]),i}return __extends$1j(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"eqnarray"},enumerable:!1,configurable:!0}),t.prototype.EndEntry=function(){this.row.length&&ParseUtil_js_1$d.default.fixInitialMO(this.factory.configuration,this.nodes);var e=this.create("node","mtd",this.nodes);this.row.push(e),this.Clear()},t.prototype.EndRow=function(){this.row.length>this.maxrow&&(this.maxrow=this.row.length);var e="mtr",t=this.factory.configuration.tags.getTag();t&&(this.row=[t].concat(this.row),e="mlabeledtr"),this.factory.configuration.tags.clearTag();var n=this.create("node",e,this.row);this.table.push(n),this.row=[]},t.prototype.EndTable=function(){e.prototype.EndTable.call(this),this.factory.configuration.tags.end(),this.extendArray("columnalign",this.maxrow),this.extendArray("columnwidth",this.maxrow),this.extendArray("columnspacing",this.maxrow-1)},t.prototype.extendArray=function(e,t){if(this.arraydef[e]){var n=this.arraydef[e].split(/ /),r=__spreadArray$n([],__read$x(n),!1);if(r.length>1){for(;r.length<t;)r.push.apply(r,__spreadArray$n([],__read$x(n),!1));this.arraydef[e]=r.slice(0,t).join(" ")}}},t}(ArrayItem);BaseItems.EqnArrayItem=EqnArrayItem;var EquationItem=function(e){function t(t){for(var n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];var i=e.call(this,t)||this;return i.factory.configuration.tags.start("equation",!0,n[0]),i}return __extends$1j(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"equation"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isOpen",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(t){if(t.isKind("end")){var n=this.toMml(),r=this.factory.configuration.tags.getTag();return this.factory.configuration.tags.end(),[[r?this.factory.configuration.tags.enTag(n,r):n,t],!0]}if(t.isKind("stop"))throw new TexError_js_1$g.default("EnvMissingEnd","Missing \\end{%1}",this.getName());return e.prototype.checkItem.call(this,t)},t}(StackItem_js_1$4.BaseItem);BaseItems.EquationItem=EquationItem;var TexConstants={};!function(e){var t;Object.defineProperty(e,"__esModule",{value:!0}),e.TexConstant=void 0,(t=e.TexConstant||(e.TexConstant={})).Variant={NORMAL:"normal",BOLD:"bold",ITALIC:"italic",BOLDITALIC:"bold-italic",DOUBLESTRUCK:"double-struck",FRAKTUR:"fraktur",BOLDFRAKTUR:"bold-fraktur",SCRIPT:"script",BOLDSCRIPT:"bold-script",SANSSERIF:"sans-serif",BOLDSANSSERIF:"bold-sans-serif",SANSSERIFITALIC:"sans-serif-italic",SANSSERIFBOLDITALIC:"sans-serif-bold-italic",MONOSPACE:"monospace",INITIAL:"inital",TAILED:"tailed",LOOPED:"looped",STRETCHED:"stretched",CALLIGRAPHIC:"-tex-calligraphic",BOLDCALLIGRAPHIC:"-tex-bold-calligraphic",OLDSTYLE:"-tex-oldstyle",BOLDOLDSTYLE:"-tex-bold-oldstyle",MATHITALIC:"-tex-mathit"},t.Form={PREFIX:"prefix",INFIX:"infix",POSTFIX:"postfix"},t.LineBreak={AUTO:"auto",NEWLINE:"newline",NOBREAK:"nobreak",GOODBREAK:"goodbreak",BADBREAK:"badbreak"},t.LineBreakStyle={BEFORE:"before",AFTER:"after",DUPLICATE:"duplicate",INFIXLINBREAKSTYLE:"infixlinebreakstyle"},t.IndentAlign={LEFT:"left",CENTER:"center",RIGHT:"right",AUTO:"auto",ID:"id",INDENTALIGN:"indentalign"},t.IndentShift={INDENTSHIFT:"indentshift"},t.LineThickness={THIN:"thin",MEDIUM:"medium",THICK:"thick"},t.Notation={LONGDIV:"longdiv",ACTUARIAL:"actuarial",PHASORANGLE:"phasorangle",RADICAL:"radical",BOX:"box",ROUNDEDBOX:"roundedbox",CIRCLE:"circle",LEFT:"left",RIGHT:"right",TOP:"top",BOTTOM:"bottom",UPDIAGONALSTRIKE:"updiagonalstrike",DOWNDIAGONALSTRIKE:"downdiagonalstrike",VERTICALSTRIKE:"verticalstrike",HORIZONTALSTRIKE:"horizontalstrike",NORTHEASTARROW:"northeastarrow",MADRUWB:"madruwb",UPDIAGONALARROW:"updiagonalarrow"},t.Align={TOP:"top",BOTTOM:"bottom",CENTER:"center",BASELINE:"baseline",AXIS:"axis",LEFT:"left",RIGHT:"right"},t.Lines={NONE:"none",SOLID:"solid",DASHED:"dashed"},t.Side={LEFT:"left",RIGHT:"right",LEFTOVERLAP:"leftoverlap",RIGHTOVERLAP:"rightoverlap"},t.Width={AUTO:"auto",FIT:"fit"},t.Actiontype={TOGGLE:"toggle",STATUSLINE:"statusline",TOOLTIP:"tooltip",INPUT:"input"},t.Overflow={LINBREAK:"linebreak",SCROLL:"scroll",ELIDE:"elide",TRUNCATE:"truncate",SCALE:"scale"},t.Unit={EM:"em",EX:"ex",PX:"px",IN:"in",CM:"cm",MM:"mm",PT:"pt",PC:"pc"}}(TexConstants);var BaseMethods$1={},lengths={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.px=e.emRounded=e.em=e.percent=e.length2em=e.MATHSPACE=e.RELUNITS=e.UNITS=e.BIGDIMEN=void 0,e.BIGDIMEN=1e6,e.UNITS={px:1,in:96,cm:96/2.54,mm:96/25.4},e.RELUNITS={em:1,ex:.431,pt:.1,pc:1.2,mu:1/18},e.MATHSPACE={veryverythinmathspace:1/18,verythinmathspace:2/18,thinmathspace:3/18,mediummathspace:4/18,thickmathspace:5/18,verythickmathspace:6/18,veryverythickmathspace:7/18,negativeveryverythinmathspace:-1/18,negativeverythinmathspace:-2/18,negativethinmathspace:-3/18,negativemediummathspace:-4/18,negativethickmathspace:-5/18,negativeverythickmathspace:-6/18,negativeveryverythickmathspace:-7/18,thin:.04,medium:.06,thick:.1,normal:1,big:2,small:1/Math.sqrt(2),infinity:e.BIGDIMEN},e.length2em=function(t,n,r,i){if(void 0===n&&(n=0),void 0===r&&(r=1),void 0===i&&(i=16),"string"!=typeof t&&(t=String(t)),""===t||null==t)return n;if(e.MATHSPACE[t])return e.MATHSPACE[t];var o=t.match(/^\s*([-+]?(?:\.\d+|\d+(?:\.\d*)?))?(pt|em|ex|mu|px|pc|in|mm|cm|%)?/);if(!o)return n;var a=parseFloat(o[1]||"1"),s=o[2];return e.UNITS.hasOwnProperty(s)?a*e.UNITS[s]/i/r:e.RELUNITS.hasOwnProperty(s)?a*e.RELUNITS[s]:"%"===s?a/100*n:a*n},e.percent=function(e){return(100*e).toFixed(1).replace(/\.?0+$/,"")+"%"},e.em=function(e){return Math.abs(e)<.001?"0":e.toFixed(3).replace(/\.?0+$/,"")+"em"},e.emRounded=function(e,t){return void 0===t&&(t=16),e=(Math.round(e*t)+.05)/t,Math.abs(e)<.001?"0em":e.toFixed(3).replace(/\.?0+$/,"")+"em"},e.px=function(t,n,r){return void 0===n&&(n=-e.BIGDIMEN),void 0===r&&(r=16),t*=r,n&&t<n&&(t=n),Math.abs(t)<.1?"0":t.toFixed(1).replace(/\.0$/,"")+"px"}}(lengths);var __assign$C=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$C=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$C.apply(this,arguments)},__createBinding$a=commonjsGlobal&&commonjsGlobal.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),__setModuleDefault$a=commonjsGlobal&&commonjsGlobal.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar$a=commonjsGlobal&&commonjsGlobal.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&__createBinding$a(t,e,n);return __setModuleDefault$a(t,e),t},__read$w=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__importDefault$z=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(BaseMethods$1,"__esModule",{value:!0});var sitem=__importStar$a(BaseItems),NodeUtil_js_1$b=__importDefault$z(NodeUtil$1),TexError_js_1$f=__importDefault$z(TexError$1),TexParser_js_1$8=__importDefault$z(requireTexParser()),TexConstants_js_1$a=TexConstants,ParseUtil_js_1$c=__importDefault$z(requireParseUtil()),MmlNode_js_1$F=MmlNode,Tags_js_1$6=Tags,lengths_js_1$5=lengths,Entities_js_1=Entities,Options_js_1$7=Options,BaseMethods={},P_HEIGHT=1.2/.85,MmlTokenAllow={fontfamily:1,fontsize:1,fontweight:1,fontstyle:1,color:1,background:1,id:1,class:1,href:1,style:1};function parseRoot(e,t){var n=e.stack.env,r=n.inRoot;n.inRoot=!0;var i=new TexParser_js_1$8.default(t,n,e.configuration),o=i.mml(),a=i.stack.global;if(a.leftRoot||a.upRoot){var s={};a.leftRoot&&(s.width=a.leftRoot),a.upRoot&&(s.voffset=a.upRoot,s.height=a.upRoot),o=e.create("node","mpadded",[o],s)}return n.inRoot=r,o}BaseMethods.Open=function(e,t){e.Push(e.itemFactory.create("open"))},BaseMethods.Close=function(e,t){e.Push(e.itemFactory.create("close"))},BaseMethods.Tilde=function(e,t){e.Push(e.create("token","mtext",{},Entities_js_1.entities.nbsp))},BaseMethods.Space=function(e,t){},BaseMethods.Superscript=function(e,t){var n,r,i;e.GetNext().match(/\d/)&&(e.string=e.string.substr(0,e.i+1)+" "+e.string.substr(e.i+1));var o=e.stack.Top();o.isKind("prime")?(i=(n=__read$w(o.Peek(2),2))[0],r=n[1],e.stack.Pop()):(i=e.stack.Prev())||(i=e.create("token","mi",{},""));var a=NodeUtil_js_1$b.default.getProperty(i,"movesupsub"),s=NodeUtil_js_1$b.default.isType(i,"msubsup")?i.sup:i.over;if(NodeUtil_js_1$b.default.isType(i,"msubsup")&&!NodeUtil_js_1$b.default.isType(i,"msup")&&NodeUtil_js_1$b.default.getChildAt(i,i.sup)||NodeUtil_js_1$b.default.isType(i,"munderover")&&!NodeUtil_js_1$b.default.isType(i,"mover")&&NodeUtil_js_1$b.default.getChildAt(i,i.over)&&!NodeUtil_js_1$b.default.getProperty(i,"subsupOK"))throw new TexError_js_1$f.default("DoubleExponent","Double exponent: use braces to clarify");NodeUtil_js_1$b.default.isType(i,"msubsup")&&!NodeUtil_js_1$b.default.isType(i,"msup")||(a?((!NodeUtil_js_1$b.default.isType(i,"munderover")||NodeUtil_js_1$b.default.isType(i,"mover")||NodeUtil_js_1$b.default.getChildAt(i,i.over))&&(i=e.create("node","munderover",[i],{movesupsub:!0})),s=i.over):s=(i=e.create("node","msubsup",[i])).sup),e.Push(e.itemFactory.create("subsup",i).setProperties({position:s,primes:r,movesupsub:a}))},BaseMethods.Subscript=function(e,t){var n,r,i;e.GetNext().match(/\d/)&&(e.string=e.string.substr(0,e.i+1)+" "+e.string.substr(e.i+1));var o=e.stack.Top();o.isKind("prime")?(i=(n=__read$w(o.Peek(2),2))[0],r=n[1],e.stack.Pop()):(i=e.stack.Prev())||(i=e.create("token","mi",{},""));var a=NodeUtil_js_1$b.default.getProperty(i,"movesupsub"),s=NodeUtil_js_1$b.default.isType(i,"msubsup")?i.sub:i.under;if(NodeUtil_js_1$b.default.isType(i,"msubsup")&&!NodeUtil_js_1$b.default.isType(i,"msup")&&NodeUtil_js_1$b.default.getChildAt(i,i.sub)||NodeUtil_js_1$b.default.isType(i,"munderover")&&!NodeUtil_js_1$b.default.isType(i,"mover")&&NodeUtil_js_1$b.default.getChildAt(i,i.under)&&!NodeUtil_js_1$b.default.getProperty(i,"subsupOK"))throw new TexError_js_1$f.default("DoubleSubscripts","Double subscripts: use braces to clarify");NodeUtil_js_1$b.default.isType(i,"msubsup")&&!NodeUtil_js_1$b.default.isType(i,"msup")||(a?((!NodeUtil_js_1$b.default.isType(i,"munderover")||NodeUtil_js_1$b.default.isType(i,"mover")||NodeUtil_js_1$b.default.getChildAt(i,i.under))&&(i=e.create("node","munderover",[i],{movesupsub:!0})),s=i.under):s=(i=e.create("node","msubsup",[i])).sub),e.Push(e.itemFactory.create("subsup",i).setProperties({position:s,primes:r,movesupsub:a}))},BaseMethods.Prime=function(e,t){var n=e.stack.Prev();if(n||(n=e.create("node","mi")),NodeUtil_js_1$b.default.isType(n,"msubsup")&&!NodeUtil_js_1$b.default.isType(n,"msup")&&NodeUtil_js_1$b.default.getChildAt(n,n.sup))throw new TexError_js_1$f.default("DoubleExponentPrime","Prime causes double exponent: use braces to clarify");var r="";e.i--;do{r+=Entities_js_1.entities.prime,e.i++,t=e.GetNext()}while("'"===t||t===Entities_js_1.entities.rsquo);r=["","′","″","‴","⁗"][r.length]||r;var i=e.create("token","mo",{variantForm:!0},r);e.Push(e.itemFactory.create("prime",n,i))},BaseMethods.Comment=function(e,t){for(;e.i<e.string.length&&"\n"!==e.string.charAt(e.i);)e.i++},BaseMethods.Hash=function(e,t){throw new TexError_js_1$f.default("CantUseHash1","You can't use 'macro parameter character #' in math mode")},BaseMethods.MathFont=function(e,t,n){var r=e.GetArgument(t),i=new TexParser_js_1$8.default(r,__assign$C(__assign$C({},e.stack.env),{font:n,multiLetterIdentifiers:/^[a-zA-Z]+/,noAutoOP:!0}),e.configuration).mml();e.Push(e.create("node","TeXAtom",[i]))},BaseMethods.SetFont=function(e,t,n){e.stack.env.font=n},BaseMethods.SetStyle=function(e,t,n,r,i){e.stack.env.style=n,e.stack.env.level=i,e.Push(e.itemFactory.create("style").setProperty("styles",{displaystyle:r,scriptlevel:i}))},BaseMethods.SetSize=function(e,t,n){e.stack.env.size=n,e.Push(e.itemFactory.create("style").setProperty("styles",{mathsize:(0,lengths_js_1$5.em)(n)}))},BaseMethods.Spacer=function(e,t,n){var r=e.create("node","mspace",[],{width:(0,lengths_js_1$5.em)(n)}),i=e.create("node","mstyle",[r],{scriptlevel:0});e.Push(i)},BaseMethods.LeftRight=function(e,t){var n=t.substr(1);e.Push(e.itemFactory.create(n,e.GetDelimiter(t),e.stack.env.color))},BaseMethods.NamedFn=function(e,t,n){n||(n=t.substr(1));var r=e.create("token","mi",{texClass:MmlNode_js_1$F.TEXCLASS.OP},n);e.Push(e.itemFactory.create("fn",r))},BaseMethods.NamedOp=function(e,t,n){n||(n=t.substr(1)),n=n.replace(/ /," ");var r=e.create("token","mo",{movablelimits:!0,movesupsub:!0,form:TexConstants_js_1$a.TexConstant.Form.PREFIX,texClass:MmlNode_js_1$F.TEXCLASS.OP},n);e.Push(r)},BaseMethods.Limits=function(e,t,n){var r=e.stack.Prev(!0);if(!r||NodeUtil_js_1$b.default.getTexClass(NodeUtil_js_1$b.default.getCoreMO(r))!==MmlNode_js_1$F.TEXCLASS.OP&&null==NodeUtil_js_1$b.default.getProperty(r,"movesupsub"))throw new TexError_js_1$f.default("MisplacedLimits","%1 is allowed only on operators",e.currentCS);var i,o=e.stack.Top();NodeUtil_js_1$b.default.isType(r,"munderover")&&!n?(i=e.create("node","msubsup"),NodeUtil_js_1$b.default.copyChildren(r,i),r=o.Last=i):NodeUtil_js_1$b.default.isType(r,"msubsup")&&n&&(i=e.create("node","munderover"),NodeUtil_js_1$b.default.copyChildren(r,i),r=o.Last=i),NodeUtil_js_1$b.default.setProperty(r,"movesupsub",!!n),NodeUtil_js_1$b.default.setProperties(NodeUtil_js_1$b.default.getCoreMO(r),{movablelimits:!1}),(NodeUtil_js_1$b.default.getAttribute(r,"movablelimits")||NodeUtil_js_1$b.default.getProperty(r,"movablelimits"))&&NodeUtil_js_1$b.default.setProperties(r,{movablelimits:!1})},BaseMethods.Over=function(e,t,n,r){var i=e.itemFactory.create("over").setProperty("name",e.currentCS);n||r?(i.setProperty("open",n),i.setProperty("close",r)):t.match(/withdelims$/)&&(i.setProperty("open",e.GetDelimiter(t)),i.setProperty("close",e.GetDelimiter(t))),t.match(/^\\above/)?i.setProperty("thickness",e.GetDimen(t)):(t.match(/^\\atop/)||n||r)&&i.setProperty("thickness",0),e.Push(i)},BaseMethods.Frac=function(e,t){var n=e.ParseArg(t),r=e.ParseArg(t),i=e.create("node","mfrac",[n,r]);e.Push(i)},BaseMethods.Sqrt=function(e,t){var n=e.GetBrackets(t),r=e.GetArgument(t);"\\frac"===r&&(r+="{"+e.GetArgument(r)+"}{"+e.GetArgument(r)+"}");var i=new TexParser_js_1$8.default(r,e.stack.env,e.configuration).mml();i=n?e.create("node","mroot",[i,parseRoot(e,n)]):e.create("node","msqrt",[i]),e.Push(i)},BaseMethods.Root=function(e,t){var n=e.GetUpTo(t,"\\of"),r=e.ParseArg(t),i=e.create("node","mroot",[r,parseRoot(e,n)]);e.Push(i)},BaseMethods.MoveRoot=function(e,t,n){if(!e.stack.env.inRoot)throw new TexError_js_1$f.default("MisplacedMoveRoot","%1 can appear only within a root",e.currentCS);if(e.stack.global[n])throw new TexError_js_1$f.default("MultipleMoveRoot","Multiple use of %1",e.currentCS);var r=e.GetArgument(t);if(!r.match(/-?[0-9]+/))throw new TexError_js_1$f.default("IntegerArg","The argument to %1 must be an integer",e.currentCS);"-"!==(r=parseInt(r,10)/15+"em").substr(0,1)&&(r="+"+r),e.stack.global[n]=r},BaseMethods.Accent=function(e,t,n,r){var i=e.ParseArg(t),o=__assign$C(__assign$C({},ParseUtil_js_1$c.default.getFontDef(e)),{accent:!0,mathaccent:!0}),a=NodeUtil_js_1$b.default.createEntity(n),s=e.create("token","mo",o,a);NodeUtil_js_1$b.default.setAttribute(s,"stretchy",!!r);var l=NodeUtil_js_1$b.default.isEmbellished(i)?NodeUtil_js_1$b.default.getCoreMO(i):i;(NodeUtil_js_1$b.default.isType(l,"mo")||NodeUtil_js_1$b.default.getProperty(l,"movablelimits"))&&NodeUtil_js_1$b.default.setProperties(l,{movablelimits:!1});var c=e.create("node","munderover");NodeUtil_js_1$b.default.setChild(c,0,i),NodeUtil_js_1$b.default.setChild(c,1,null),NodeUtil_js_1$b.default.setChild(c,2,s);var T=e.create("node","TeXAtom",[c]);e.Push(T)},BaseMethods.UnderOver=function(e,t,n,r){var i=NodeUtil_js_1$b.default.createEntity(n),o=e.create("token","mo",{stretchy:!0,accent:!0},i),a="o"===t.charAt(1)?"over":"under",s=e.ParseArg(t);e.Push(ParseUtil_js_1$c.default.underOver(e,s,o,a,r))},BaseMethods.Overset=function(e,t){var n=e.ParseArg(t),r=e.ParseArg(t);ParseUtil_js_1$c.default.checkMovableLimits(r),n.isKind("mo")&&NodeUtil_js_1$b.default.setAttribute(n,"accent",!1);var i=e.create("node","mover",[r,n]);e.Push(i)},BaseMethods.Underset=function(e,t){var n=e.ParseArg(t),r=e.ParseArg(t);ParseUtil_js_1$c.default.checkMovableLimits(r),n.isKind("mo")&&NodeUtil_js_1$b.default.setAttribute(n,"accent",!1);var i=e.create("node","munder",[r,n],{accentunder:!1});e.Push(i)},BaseMethods.Overunderset=function(e,t){var n=e.ParseArg(t),r=e.ParseArg(t),i=e.ParseArg(t);ParseUtil_js_1$c.default.checkMovableLimits(i),n.isKind("mo")&&NodeUtil_js_1$b.default.setAttribute(n,"accent",!1),r.isKind("mo")&&NodeUtil_js_1$b.default.setAttribute(r,"accent",!1);var o=e.create("node","munderover",[i,r,n],{accent:!1,accentunder:!1});e.Push(o)},BaseMethods.TeXAtom=function(e,t,n){var r,i,o,a={texClass:n};if(n===MmlNode_js_1$F.TEXCLASS.OP){a.movesupsub=a.movablelimits=!0;var s=e.GetArgument(t),l=s.match(/^\s*\\rm\s+([a-zA-Z0-9 ]+)$/);l?(a.mathvariant=TexConstants_js_1$a.TexConstant.Variant.NORMAL,i=e.create("token","mi",a,l[1])):(o=new TexParser_js_1$8.default(s,e.stack.env,e.configuration).mml(),i=e.create("node","TeXAtom",[o],a)),r=e.itemFactory.create("fn",i)}else o=e.ParseArg(t),r=e.create("node","TeXAtom",[o],a);e.Push(r)},BaseMethods.MmlToken=function(e,t){var n,r=e.GetArgument(t),i=e.GetBrackets(t,"").replace(/^\s+/,""),o=e.GetArgument(t),a={},s=[];try{n=e.create("node",r)}catch(e){n=null}if(!n||!n.isToken)throw new TexError_js_1$f.default("NotMathMLToken","%1 is not a token element",r);for(;""!==i;){var l=i.match(/^([a-z]+)\s*=\s*('[^']*'|"[^"]*"|[^ ,]*)\s*,?\s*/i);if(!l)throw new TexError_js_1$f.default("InvalidMathMLAttr","Invalid MathML attribute: %1",i);if(!n.attributes.hasDefault(l[1])&&!MmlTokenAllow[l[1]])throw new TexError_js_1$f.default("UnknownAttrForElement","%1 is not a recognized attribute for %2",l[1],r);var c=ParseUtil_js_1$c.default.MmlFilterAttribute(e,l[1],l[2].replace(/^(['"])(.*)\1$/,"$2"));c&&("true"===c.toLowerCase()?c=!0:"false"===c.toLowerCase()&&(c=!1),a[l[1]]=c,s.push(l[1])),i=i.substr(l[0].length)}s.length&&(a["mjx-keep-attrs"]=s.join(" "));var T=e.create("text",o);n.appendChild(T),NodeUtil_js_1$b.default.setProperties(n,a),e.Push(n)},BaseMethods.Strut=function(e,t){var n=e.create("node","mrow"),r=e.create("node","mpadded",[n],{height:"8.6pt",depth:"3pt",width:0});e.Push(r)},BaseMethods.Phantom=function(e,t,n,r){var i=e.create("node","mphantom",[e.ParseArg(t)]);(n||r)&&(i=e.create("node","mpadded",[i]),r&&(NodeUtil_js_1$b.default.setAttribute(i,"height",0),NodeUtil_js_1$b.default.setAttribute(i,"depth",0)),n&&NodeUtil_js_1$b.default.setAttribute(i,"width",0));var o=e.create("node","TeXAtom",[i]);e.Push(o)},BaseMethods.Smash=function(e,t){var n=ParseUtil_js_1$c.default.trimSpaces(e.GetBrackets(t,"")),r=e.create("node","mpadded",[e.ParseArg(t)]);switch(n){case"b":NodeUtil_js_1$b.default.setAttribute(r,"depth",0);break;case"t":NodeUtil_js_1$b.default.setAttribute(r,"height",0);break;default:NodeUtil_js_1$b.default.setAttribute(r,"height",0),NodeUtil_js_1$b.default.setAttribute(r,"depth",0)}var i=e.create("node","TeXAtom",[r]);e.Push(i)},BaseMethods.Lap=function(e,t){var n=e.create("node","mpadded",[e.ParseArg(t)],{width:0});"\\llap"===t&&NodeUtil_js_1$b.default.setAttribute(n,"lspace","-1width");var r=e.create("node","TeXAtom",[n]);e.Push(r)},BaseMethods.RaiseLower=function(e,t){var n=e.GetDimen(t),r=e.itemFactory.create("position").setProperties({name:e.currentCS,move:"vertical"});"-"===n.charAt(0)&&(n=n.slice(1),t="raise"===t.substr(1)?"\\lower":"\\raise"),"\\lower"===t?(r.setProperty("dh","-"+n),r.setProperty("dd","+"+n)):(r.setProperty("dh","+"+n),r.setProperty("dd","-"+n)),e.Push(r)},BaseMethods.MoveLeftRight=function(e,t){var n=e.GetDimen(t),r="-"===n.charAt(0)?n.slice(1):"-"+n;if("\\moveleft"===t){var i=n;n=r,r=i}e.Push(e.itemFactory.create("position").setProperties({name:e.currentCS,move:"horizontal",left:e.create("node","mspace",[],{width:n}),right:e.create("node","mspace",[],{width:r})}))},BaseMethods.Hskip=function(e,t){var n=e.create("node","mspace",[],{width:e.GetDimen(t)});e.Push(n)},BaseMethods.Nonscript=function(e,t){e.Push(e.itemFactory.create("nonscript"))},BaseMethods.Rule=function(e,t,n){var r={width:e.GetDimen(t),height:e.GetDimen(t),depth:e.GetDimen(t)};"blank"!==n&&(r.mathbackground=e.stack.env.color||"black");var i=e.create("node","mspace",[],r);e.Push(i)},BaseMethods.rule=function(e,t){var n=e.GetBrackets(t),r=e.GetDimen(t),i=e.GetDimen(t),o=e.create("node","mspace",[],{width:r,height:i,mathbackground:e.stack.env.color||"black"});n&&(o=e.create("node","mpadded",[o],{voffset:n}),n.match(/^\-/)?(NodeUtil_js_1$b.default.setAttribute(o,"height",n),NodeUtil_js_1$b.default.setAttribute(o,"depth","+"+n.substr(1))):NodeUtil_js_1$b.default.setAttribute(o,"height","+"+n)),e.Push(o)},BaseMethods.MakeBig=function(e,t,n,r){var i=String(r*=P_HEIGHT).replace(/(\.\d\d\d).+/,"$1")+"em",o=e.GetDelimiter(t,!0),a=e.create("token","mo",{minsize:i,maxsize:i,fence:!0,stretchy:!0,symmetric:!0},o),s=e.create("node","TeXAtom",[a],{texClass:n});e.Push(s)},BaseMethods.BuildRel=function(e,t){var n=e.ParseUpTo(t,"\\over"),r=e.ParseArg(t),i=e.create("node","munderover");NodeUtil_js_1$b.default.setChild(i,0,r),NodeUtil_js_1$b.default.setChild(i,1,null),NodeUtil_js_1$b.default.setChild(i,2,n);var o=e.create("node","TeXAtom",[i],{texClass:MmlNode_js_1$F.TEXCLASS.REL});e.Push(o)},BaseMethods.HBox=function(e,t,n,r){e.PushAll(ParseUtil_js_1$c.default.internalMath(e,e.GetArgument(t),n,r))},BaseMethods.FBox=function(e,t){var n=ParseUtil_js_1$c.default.internalMath(e,e.GetArgument(t)),r=e.create("node","menclose",n,{notation:"box"});e.Push(r)},BaseMethods.FrameBox=function(e,t){var n=e.GetBrackets(t),r=e.GetBrackets(t)||"c",i=ParseUtil_js_1$c.default.internalMath(e,e.GetArgument(t));n&&(i=[e.create("node","mpadded",i,{width:n,"data-align":(0,Options_js_1$7.lookup)(r,{l:"left",r:"right"},"center")})]);var o=e.create("node","TeXAtom",[e.create("node","menclose",i,{notation:"box"})],{texClass:MmlNode_js_1$F.TEXCLASS.ORD});e.Push(o)},BaseMethods.Not=function(e,t){e.Push(e.itemFactory.create("not"))},BaseMethods.Dots=function(e,t){var n=NodeUtil_js_1$b.default.createEntity("2026"),r=NodeUtil_js_1$b.default.createEntity("22EF"),i=e.create("token","mo",{stretchy:!1},n),o=e.create("token","mo",{stretchy:!1},r);e.Push(e.itemFactory.create("dots").setProperties({ldots:i,cdots:o}))},BaseMethods.Matrix=function(e,t,n,r,i,o,a,s,l,c){var T=e.GetNext();if(""===T)throw new TexError_js_1$f.default("MissingArgFor","Missing argument for %1",e.currentCS);"{"===T?e.i++:(e.string=T+"}"+e.string.slice(e.i+1),e.i=0);var Q=e.itemFactory.create("array").setProperty("requireClose",!0);Q.arraydef={rowspacing:a||"4pt",columnspacing:o||"1em"},l&&Q.setProperty("isCases",!0),c&&(Q.setProperty("isNumbered",!0),Q.arraydef.side=c),(n||r)&&(Q.setProperty("open",n),Q.setProperty("close",r)),"D"===s&&(Q.arraydef.displaystyle=!0),null!=i&&(Q.arraydef.columnalign=i),e.Push(Q)},BaseMethods.Entry=function(e,t){e.Push(e.itemFactory.create("cell").setProperties({isEntry:!0,name:t}));var n=e.stack.Top(),r=n.getProperty("casesEnv");if(n.getProperty("isCases")||r){for(var i=e.string,o=0,a=-1,s=e.i,l=i.length,c=r?new RegExp("^\\\\end\\s*\\{".concat(r.replace(/\*/,"\\*"),"\\}")):null;s<l;){var T=i.charAt(s);if("{"===T)o++,s++;else if("}"===T)0===o?l=0:(0==--o&&a<0&&(a=s-e.i),s++);else{if("&"===T&&0===o)throw new TexError_js_1$f.default("ExtraAlignTab","Extra alignment tab in \\cases text");if("\\"===T){var Q=i.substr(s);Q.match(/^((\\cr)[^a-zA-Z]|\\\\)/)||c&&Q.match(c)?l=0:s+=2}else s++}}var d=i.substr(e.i,s-e.i);if(!d.match(/^\s*\\text[^a-zA-Z]/)||a!==d.replace(/\s+$/,"").length-1){var u=ParseUtil_js_1$c.default.internalMath(e,ParseUtil_js_1$c.default.trimSpaces(d),0);e.PushAll(u),e.i=s}}},BaseMethods.Cr=function(e,t){e.Push(e.itemFactory.create("cell").setProperties({isCR:!0,name:t}))},BaseMethods.CrLaTeX=function(e,t,n){var r;if(void 0===n&&(n=!1),!n&&("*"===e.string.charAt(e.i)&&e.i++,"["===e.string.charAt(e.i))){var i=e.GetBrackets(t,""),o=__read$w(ParseUtil_js_1$c.default.matchDimen(i),2),a=o[0],s=o[1];if(i&&!a)throw new TexError_js_1$f.default("BracketMustBeDimension","Bracket argument to %1 must be a dimension",e.currentCS);r=a+s}e.Push(e.itemFactory.create("cell").setProperties({isCR:!0,name:t,linebreak:!0}));var l,c=e.stack.Top();c instanceof sitem.ArrayItem?r&&c.addRowSpacing(r):(r&&(l=e.create("node","mspace",[],{depth:r}),e.Push(l)),l=e.create("node","mspace",[],{linebreak:TexConstants_js_1$a.TexConstant.LineBreak.NEWLINE}),e.Push(l))},BaseMethods.HLine=function(e,t,n){null==n&&(n="solid");var r=e.stack.Top();if(!(r instanceof sitem.ArrayItem)||r.Size())throw new TexError_js_1$f.default("Misplaced","Misplaced %1",e.currentCS);if(r.table.length){for(var i=r.arraydef.rowlines?r.arraydef.rowlines.split(/ /):[];i.length<r.table.length;)i.push("none");i[r.table.length-1]=n,r.arraydef.rowlines=i.join(" ")}else r.frame.push("top")},BaseMethods.HFill=function(e,t){var n=e.stack.Top();if(!(n instanceof sitem.ArrayItem))throw new TexError_js_1$f.default("UnsupportedHFill","Unsupported use of %1",e.currentCS);n.hfill.push(n.Size())},BaseMethods.BeginEnd=function(e,t){var n=e.GetArgument(t);if(n.match(/\\/i))throw new TexError_js_1$f.default("InvalidEnv","Invalid environment name '%1'",n);var r=e.configuration.handlers.get("environment").lookup(n);if(r&&"\\end"===t){if(!r.args[0]){var i=e.itemFactory.create("end").setProperty("name",n);return void e.Push(i)}e.stack.env.closing=n}ParseUtil_js_1$c.default.checkMaxMacros(e,!1),e.parse("environment",[e,n])},BaseMethods.Array=function(e,t,n,r,i,o,a,s,l){i||(i=e.GetArgument("\\begin{"+t.getName()+"}"));var c=("c"+i).replace(/[^clr|:]/g,"").replace(/[^|:]([|:])+/g,"$1");i=(i=i.replace(/[^clr]/g,"").split("").join(" ")).replace(/l/g,"left").replace(/r/g,"right").replace(/c/g,"center");var T=e.itemFactory.create("array");return T.arraydef={columnalign:i,columnspacing:o||"1em",rowspacing:a||"4pt"},c.match(/[|:]/)&&(c.charAt(0).match(/[|:]/)&&(T.frame.push("left"),T.dashed=":"===c.charAt(0)),c.charAt(c.length-1).match(/[|:]/)&&T.frame.push("right"),c=c.substr(1,c.length-2),T.arraydef.columnlines=c.split("").join(" ").replace(/[^|: ]/g,"none").replace(/\|/g,"solid").replace(/:/g,"dashed")),n&&T.setProperty("open",e.convertDelimiter(n)),r&&T.setProperty("close",e.convertDelimiter(r)),"'"===(s||"").charAt(1)&&(T.arraydef["data-cramped"]=!0,s=s.charAt(0)),"D"===s?T.arraydef.displaystyle=!0:s&&(T.arraydef.displaystyle=!1),"S"===s&&(T.arraydef.scriptlevel=1),l&&(T.arraydef.useHeight=!1),e.Push(t),T},BaseMethods.AlignedArray=function(e,t){var n=e.GetBrackets("\\begin{"+t.getName()+"}"),r=BaseMethods.Array(e,t);return ParseUtil_js_1$c.default.setArrayAlign(r,n)},BaseMethods.Equation=function(e,t,n){return e.Push(t),ParseUtil_js_1$c.default.checkEqnEnv(e),e.itemFactory.create("equation",n).setProperty("name",t.getName())},BaseMethods.EqnArray=function(e,t,n,r,i,o){e.Push(t),r&&ParseUtil_js_1$c.default.checkEqnEnv(e),i=(i=i.replace(/[^clr]/g,"").split("").join(" ")).replace(/l/g,"left").replace(/r/g,"right").replace(/c/g,"center");var a=e.itemFactory.create("eqnarray",t.getName(),n,r,e.stack.global);return a.arraydef={displaystyle:!0,columnalign:i,columnspacing:o||"1em",rowspacing:"3pt",side:e.options.tagSide,minlabelspacing:e.options.tagIndent},a},BaseMethods.HandleNoTag=function(e,t){e.tags.notag()},BaseMethods.HandleLabel=function(e,t){var n=e.GetArgument(t);if(""!==n&&!e.tags.refUpdate){if(e.tags.label)throw new TexError_js_1$f.default("MultipleCommand","Multiple %1",e.currentCS);if(e.tags.label=n,(e.tags.allLabels[n]||e.tags.labels[n])&&!e.options.ignoreDuplicateLabels)throw new TexError_js_1$f.default("MultipleLabel","Label '%1' multiply defined",n);e.tags.labels[n]=new Tags_js_1$6.Label}},BaseMethods.HandleRef=function(e,t,n){var r=e.GetArgument(t),i=e.tags.allLabels[r]||e.tags.labels[r];i||(e.tags.refUpdate||(e.tags.redo=!0),i=new Tags_js_1$6.Label);var o=i.tag;n&&(o=e.tags.formatTag(o));var a=e.create("node","mrow",ParseUtil_js_1$c.default.internalMath(e,o),{href:e.tags.formatUrl(i.id,e.options.baseURL),class:"MathJax_ref"});e.Push(a)},BaseMethods.Macro=function(e,t,n,r,i){if(r){var o=[];if(null!=i){var a=e.GetBrackets(t);o.push(null==a?i:a)}for(var s=o.length;s<r;s++)o.push(e.GetArgument(t));n=ParseUtil_js_1$c.default.substituteArgs(e,o,n)}e.string=ParseUtil_js_1$c.default.addArgs(e,n,e.string.slice(e.i)),e.i=0,ParseUtil_js_1$c.default.checkMaxMacros(e)},BaseMethods.MathChoice=function(e,t){var n=e.ParseArg(t),r=e.ParseArg(t),i=e.ParseArg(t),o=e.ParseArg(t);e.Push(e.create("node","MathChoice",[n,r,i,o]))},BaseMethods$1.default=BaseMethods;var ParseMethods$1={},__read$v=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$m=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))},__importDefault$y=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ParseMethods$1,"__esModule",{value:!0});var ParseMethods,NodeUtil_js_1$a=__importDefault$y(NodeUtil$1),TexConstants_js_1$9=TexConstants,ParseUtil_js_1$b=__importDefault$y(requireParseUtil());!function(e){e.variable=function(e,t){var n=ParseUtil_js_1$b.default.getFontDef(e),r=e.stack.env;r.multiLetterIdentifiers&&""!==r.font&&(t=e.string.substr(e.i-1).match(r.multiLetterIdentifiers)[0],e.i+=t.length-1,n.mathvariant===TexConstants_js_1$9.TexConstant.Variant.NORMAL&&r.noAutoOP&&t.length>1&&(n.autoOP=!1));var i=e.create("token","mi",n,t);e.Push(i)},e.digit=function(e,t){var n,r=e.configuration.options.digits,i=e.string.slice(e.i-1).match(r),o=ParseUtil_js_1$b.default.getFontDef(e);i?(n=e.create("token","mn",o,i[0].replace(/[{}]/g,"")),e.i+=i[0].length-1):n=e.create("token","mo",o,t),e.Push(n)},e.controlSequence=function(e,t){var n=e.GetCS();e.parse("macro",[e,n])},e.mathchar0mi=function(e,t){var n=t.attributes||{mathvariant:TexConstants_js_1$9.TexConstant.Variant.ITALIC},r=e.create("token","mi",n,t.char);e.Push(r)},e.mathchar0mo=function(e,t){var n=t.attributes||{};n.stretchy=!1;var r=e.create("token","mo",n,t.char);NodeUtil_js_1$a.default.setProperty(r,"fixStretchy",!0),e.configuration.addNode("fixStretchy",r),e.Push(r)},e.mathchar7=function(e,t){var n=t.attributes||{mathvariant:TexConstants_js_1$9.TexConstant.Variant.NORMAL};e.stack.env.font&&(n.mathvariant=e.stack.env.font);var r=e.create("token","mi",n,t.char);e.Push(r)},e.delimiter=function(e,t){var n=t.attributes||{};n=Object.assign({fence:!1,stretchy:!1},n);var r=e.create("token","mo",n,t.char);e.Push(r)},e.environment=function(e,t,n,r){var i=r[0],o=e.itemFactory.create("begin").setProperties({name:t,end:i});o=n.apply(void 0,__spreadArray$m([e,o],__read$v(r.slice(1)),!1)),e.Push(o)}}(ParseMethods||(ParseMethods={})),ParseMethods$1.default=ParseMethods;var __createBinding$9=commonjsGlobal&&commonjsGlobal.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),__setModuleDefault$9=commonjsGlobal&&commonjsGlobal.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar$9=commonjsGlobal&&commonjsGlobal.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&__createBinding$9(t,e,n);return __setModuleDefault$9(t,e),t},__importDefault$x=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},sm$4=__importStar$9(SymbolMap),TexConstants_js_1$8=TexConstants,BaseMethods_js_1$6=__importDefault$x(BaseMethods$1),ParseMethods_js_1$6=__importDefault$x(ParseMethods$1),ParseUtil_js_1$a=__importDefault$x(requireParseUtil()),MmlNode_js_1$E=MmlNode,lengths_js_1$4=lengths;new sm$4.RegExpMap("letter",ParseMethods_js_1$6.default.variable,/[a-z]/i),new sm$4.RegExpMap("digit",ParseMethods_js_1$6.default.digit,/[0-9.,]/),new sm$4.RegExpMap("command",ParseMethods_js_1$6.default.controlSequence,/^\\/),new sm$4.MacroMap("special",{"{":"Open","}":"Close","~":"Tilde","^":"Superscript",_:"Subscript"," ":"Space","\t":"Space","\r":"Space","\n":"Space","'":"Prime","%":"Comment","&":"Entry","#":"Hash"," ":"Space","’":"Prime"},BaseMethods_js_1$6.default),new sm$4.CharacterMap("mathchar0mi",ParseMethods_js_1$6.default.mathchar0mi,{alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ϵ",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigma:"σ",tau:"τ",upsilon:"υ",phi:"ϕ",chi:"χ",psi:"ψ",omega:"ω",varepsilon:"ε",vartheta:"ϑ",varpi:"ϖ",varrho:"ϱ",varsigma:"ς",varphi:"φ",S:["§",{mathvariant:TexConstants_js_1$8.TexConstant.Variant.NORMAL}],aleph:["ℵ",{mathvariant:TexConstants_js_1$8.TexConstant.Variant.NORMAL}],hbar:["ℏ",{variantForm:!0}],imath:"ı",jmath:"ȷ",ell:"ℓ",wp:["℘",{mathvariant:TexConstants_js_1$8.TexConstant.Variant.NORMAL}],Re:["ℜ",{mathvariant:TexConstants_js_1$8.TexConstant.Variant.NORMAL}],Im:["ℑ",{mathvariant:TexConstants_js_1$8.TexConstant.Variant.NORMAL}],partial:["∂",{mathvariant:TexConstants_js_1$8.TexConstant.Variant.ITALIC}],infty:["∞",{mathvariant:TexConstants_js_1$8.TexConstant.Variant.NORMAL}],prime:["′",{variantForm:!0}],emptyset:["∅",{mathvariant:TexConstants_js_1$8.TexConstant.Variant.NORMAL}],nabla:["∇",{mathvariant:TexConstants_js_1$8.TexConstant.Variant.NORMAL}],top:["⊤",{mathvariant:TexConstants_js_1$8.TexConstant.Variant.NORMAL}],bot:["⊥",{mathvariant:TexConstants_js_1$8.TexConstant.Variant.NORMAL}],angle:["∠",{mathvariant:TexConstants_js_1$8.TexConstant.Variant.NORMAL}],triangle:["△",{mathvariant:TexConstants_js_1$8.TexConstant.Variant.NORMAL}],backslash:["∖",{mathvariant:TexConstants_js_1$8.TexConstant.Variant.NORMAL}],forall:["∀",{mathvariant:TexConstants_js_1$8.TexConstant.Variant.NORMAL}],exists:["∃",{mathvariant:TexConstants_js_1$8.TexConstant.Variant.NORMAL}],neg:["¬",{mathvariant:TexConstants_js_1$8.TexConstant.Variant.NORMAL}],lnot:["¬",{mathvariant:TexConstants_js_1$8.TexConstant.Variant.NORMAL}],flat:["♭",{mathvariant:TexConstants_js_1$8.TexConstant.Variant.NORMAL}],natural:["♮",{mathvariant:TexConstants_js_1$8.TexConstant.Variant.NORMAL}],sharp:["♯",{mathvariant:TexConstants_js_1$8.TexConstant.Variant.NORMAL}],clubsuit:["♣",{mathvariant:TexConstants_js_1$8.TexConstant.Variant.NORMAL}],diamondsuit:["♢",{mathvariant:TexConstants_js_1$8.TexConstant.Variant.NORMAL}],heartsuit:["♡",{mathvariant:TexConstants_js_1$8.TexConstant.Variant.NORMAL}],spadesuit:["♠",{mathvariant:TexConstants_js_1$8.TexConstant.Variant.NORMAL}]}),new sm$4.CharacterMap("mathchar0mo",ParseMethods_js_1$6.default.mathchar0mo,{surd:"√",coprod:["∐",{texClass:MmlNode_js_1$E.TEXCLASS.OP,movesupsub:!0}],bigvee:["⋁",{texClass:MmlNode_js_1$E.TEXCLASS.OP,movesupsub:!0}],bigwedge:["⋀",{texClass:MmlNode_js_1$E.TEXCLASS.OP,movesupsub:!0}],biguplus:["⨄",{texClass:MmlNode_js_1$E.TEXCLASS.OP,movesupsub:!0}],bigcap:["⋂",{texClass:MmlNode_js_1$E.TEXCLASS.OP,movesupsub:!0}],bigcup:["⋃",{texClass:MmlNode_js_1$E.TEXCLASS.OP,movesupsub:!0}],int:["∫",{texClass:MmlNode_js_1$E.TEXCLASS.OP}],intop:["∫",{texClass:MmlNode_js_1$E.TEXCLASS.OP,movesupsub:!0,movablelimits:!0}],iint:["∬",{texClass:MmlNode_js_1$E.TEXCLASS.OP}],iiint:["∭",{texClass:MmlNode_js_1$E.TEXCLASS.OP}],prod:["∏",{texClass:MmlNode_js_1$E.TEXCLASS.OP,movesupsub:!0}],sum:["∑",{texClass:MmlNode_js_1$E.TEXCLASS.OP,movesupsub:!0}],bigotimes:["⨂",{texClass:MmlNode_js_1$E.TEXCLASS.OP,movesupsub:!0}],bigoplus:["⨁",{texClass:MmlNode_js_1$E.TEXCLASS.OP,movesupsub:!0}],bigodot:["⨀",{texClass:MmlNode_js_1$E.TEXCLASS.OP,movesupsub:!0}],oint:["∮",{texClass:MmlNode_js_1$E.TEXCLASS.OP}],bigsqcup:["⨆",{texClass:MmlNode_js_1$E.TEXCLASS.OP,movesupsub:!0}],smallint:["∫",{largeop:!1}],triangleleft:"◃",triangleright:"▹",bigtriangleup:"△",bigtriangledown:"▽",wedge:"∧",land:"∧",vee:"∨",lor:"∨",cap:"∩",cup:"∪",ddagger:"‡",dagger:"†",sqcap:"⊓",sqcup:"⊔",uplus:"⊎",amalg:"⨿",diamond:"⋄",bullet:"∙",wr:"≀",div:"÷",divsymbol:"÷",odot:["⊙",{largeop:!1}],oslash:["⊘",{largeop:!1}],otimes:["⊗",{largeop:!1}],ominus:["⊖",{largeop:!1}],oplus:["⊕",{largeop:!1}],mp:"∓",pm:"±",circ:"∘",bigcirc:"◯",setminus:"∖",cdot:"⋅",ast:"∗",times:"×",star:"⋆",propto:"∝",sqsubseteq:"⊑",sqsupseteq:"⊒",parallel:"∥",mid:"∣",dashv:"⊣",vdash:"⊢",leq:"≤",le:"≤",geq:"≥",ge:"≥",lt:"<",gt:">",succ:"≻",prec:"≺",approx:"≈",succeq:"⪰",preceq:"⪯",supset:"⊃",subset:"⊂",supseteq:"⊇",subseteq:"⊆",in:"∈",ni:"∋",notin:"∉",owns:"∋",gg:"≫",ll:"≪",sim:"∼",simeq:"≃",perp:"⊥",equiv:"≡",asymp:"≍",smile:"⌣",frown:"⌢",ne:"≠",neq:"≠",cong:"≅",doteq:"≐",bowtie:"⋈",models:"⊨",notChar:"⧸",Leftrightarrow:"⇔",Leftarrow:"⇐",Rightarrow:"⇒",leftrightarrow:"↔",leftarrow:"←",gets:"←",rightarrow:"→",to:["→",{accent:!1}],mapsto:"↦",leftharpoonup:"↼",leftharpoondown:"↽",rightharpoonup:"⇀",rightharpoondown:"⇁",nearrow:"↗",searrow:"↘",nwarrow:"↖",swarrow:"↙",rightleftharpoons:"⇌",hookrightarrow:"↪",hookleftarrow:"↩",longleftarrow:"⟵",Longleftarrow:"⟸",longrightarrow:"⟶",Longrightarrow:"⟹",Longleftrightarrow:"⟺",longleftrightarrow:"⟷",longmapsto:"⟼",ldots:"…",cdots:"⋯",vdots:"⋮",ddots:"⋱",dotsc:"…",dotsb:"⋯",dotsm:"⋯",dotsi:"⋯",dotso:"…",ldotp:[".",{texClass:MmlNode_js_1$E.TEXCLASS.PUNCT}],cdotp:["⋅",{texClass:MmlNode_js_1$E.TEXCLASS.PUNCT}],colon:[":",{texClass:MmlNode_js_1$E.TEXCLASS.PUNCT}]}),new sm$4.CharacterMap("mathchar7",ParseMethods_js_1$6.default.mathchar7,{Gamma:"Γ",Delta:"Δ",Theta:"Θ",Lambda:"Λ",Xi:"Ξ",Pi:"Π",Sigma:"Σ",Upsilon:"Υ",Phi:"Φ",Psi:"Ψ",Omega:"Ω",_:"_","#":"#",$:"$","%":"%","&":"&",And:"&"}),new sm$4.DelimiterMap("delimiter",ParseMethods_js_1$6.default.delimiter,{"(":"(",")":")","[":"[","]":"]","<":"⟨",">":"⟩","\\lt":"⟨","\\gt":"⟩","/":"/","|":["|",{texClass:MmlNode_js_1$E.TEXCLASS.ORD}],".":"","\\\\":"\\","\\lmoustache":"⎰","\\rmoustache":"⎱","\\lgroup":"⟮","\\rgroup":"⟯","\\arrowvert":"⏐","\\Arrowvert":"‖","\\bracevert":"⎪","\\Vert":["‖",{texClass:MmlNode_js_1$E.TEXCLASS.ORD}],"\\|":["‖",{texClass:MmlNode_js_1$E.TEXCLASS.ORD}],"\\vert":["|",{texClass:MmlNode_js_1$E.TEXCLASS.ORD}],"\\uparrow":"↑","\\downarrow":"↓","\\updownarrow":"↕","\\Uparrow":"⇑","\\Downarrow":"⇓","\\Updownarrow":"⇕","\\backslash":"\\","\\rangle":"⟩","\\langle":"⟨","\\rbrace":"}","\\lbrace":"{","\\}":"}","\\{":"{","\\rceil":"⌉","\\lceil":"⌈","\\rfloor":"⌋","\\lfloor":"⌊","\\lbrack":"[","\\rbrack":"]"}),new sm$4.CommandMap("macros",{displaystyle:["SetStyle","D",!0,0],textstyle:["SetStyle","T",!1,0],scriptstyle:["SetStyle","S",!1,1],scriptscriptstyle:["SetStyle","SS",!1,2],rm:["SetFont",TexConstants_js_1$8.TexConstant.Variant.NORMAL],mit:["SetFont",TexConstants_js_1$8.TexConstant.Variant.ITALIC],oldstyle:["SetFont",TexConstants_js_1$8.TexConstant.Variant.OLDSTYLE],cal:["SetFont",TexConstants_js_1$8.TexConstant.Variant.CALLIGRAPHIC],it:["SetFont",TexConstants_js_1$8.TexConstant.Variant.MATHITALIC],bf:["SetFont",TexConstants_js_1$8.TexConstant.Variant.BOLD],bbFont:["SetFont",TexConstants_js_1$8.TexConstant.Variant.DOUBLESTRUCK],scr:["SetFont",TexConstants_js_1$8.TexConstant.Variant.SCRIPT],frak:["SetFont",TexConstants_js_1$8.TexConstant.Variant.FRAKTUR],sf:["SetFont",TexConstants_js_1$8.TexConstant.Variant.SANSSERIF],tt:["SetFont",TexConstants_js_1$8.TexConstant.Variant.MONOSPACE],mathrm:["MathFont",TexConstants_js_1$8.TexConstant.Variant.NORMAL],mathup:["MathFont",TexConstants_js_1$8.TexConstant.Variant.NORMAL],mathnormal:["MathFont",""],mathbf:["MathFont",TexConstants_js_1$8.TexConstant.Variant.BOLD],mathbfup:["MathFont",TexConstants_js_1$8.TexConstant.Variant.BOLD],mathit:["MathFont",TexConstants_js_1$8.TexConstant.Variant.MATHITALIC],mathbfit:["MathFont",TexConstants_js_1$8.TexConstant.Variant.BOLDITALIC],mathbb:["MathFont",TexConstants_js_1$8.TexConstant.Variant.DOUBLESTRUCK],Bbb:["MathFont",TexConstants_js_1$8.TexConstant.Variant.DOUBLESTRUCK],mathfrak:["MathFont",TexConstants_js_1$8.TexConstant.Variant.FRAKTUR],mathbffrak:["MathFont",TexConstants_js_1$8.TexConstant.Variant.BOLDFRAKTUR],mathscr:["MathFont",TexConstants_js_1$8.TexConstant.Variant.SCRIPT],mathbfscr:["MathFont",TexConstants_js_1$8.TexConstant.Variant.BOLDSCRIPT],mathsf:["MathFont",TexConstants_js_1$8.TexConstant.Variant.SANSSERIF],mathsfup:["MathFont",TexConstants_js_1$8.TexConstant.Variant.SANSSERIF],mathbfsf:["MathFont",TexConstants_js_1$8.TexConstant.Variant.BOLDSANSSERIF],mathbfsfup:["MathFont",TexConstants_js_1$8.TexConstant.Variant.BOLDSANSSERIF],mathsfit:["MathFont",TexConstants_js_1$8.TexConstant.Variant.SANSSERIFITALIC],mathbfsfit:["MathFont",TexConstants_js_1$8.TexConstant.Variant.SANSSERIFBOLDITALIC],mathtt:["MathFont",TexConstants_js_1$8.TexConstant.Variant.MONOSPACE],mathcal:["MathFont",TexConstants_js_1$8.TexConstant.Variant.CALLIGRAPHIC],mathbfcal:["MathFont",TexConstants_js_1$8.TexConstant.Variant.BOLDCALLIGRAPHIC],symrm:["MathFont",TexConstants_js_1$8.TexConstant.Variant.NORMAL],symup:["MathFont",TexConstants_js_1$8.TexConstant.Variant.NORMAL],symnormal:["MathFont",""],symbf:["MathFont",TexConstants_js_1$8.TexConstant.Variant.BOLD],symbfup:["MathFont",TexConstants_js_1$8.TexConstant.Variant.BOLD],symit:["MathFont",TexConstants_js_1$8.TexConstant.Variant.ITALIC],symbfit:["MathFont",TexConstants_js_1$8.TexConstant.Variant.BOLDITALIC],symbb:["MathFont",TexConstants_js_1$8.TexConstant.Variant.DOUBLESTRUCK],symfrak:["MathFont",TexConstants_js_1$8.TexConstant.Variant.FRAKTUR],symbffrak:["MathFont",TexConstants_js_1$8.TexConstant.Variant.BOLDFRAKTUR],symscr:["MathFont",TexConstants_js_1$8.TexConstant.Variant.SCRIPT],symbfscr:["MathFont",TexConstants_js_1$8.TexConstant.Variant.BOLDSCRIPT],symsf:["MathFont",TexConstants_js_1$8.TexConstant.Variant.SANSSERIF],symsfup:["MathFont",TexConstants_js_1$8.TexConstant.Variant.SANSSERIF],symbfsf:["MathFont",TexConstants_js_1$8.TexConstant.Variant.BOLDSANSSERIF],symbfsfup:["MathFont",TexConstants_js_1$8.TexConstant.Variant.BOLDSANSSERIF],symsfit:["MathFont",TexConstants_js_1$8.TexConstant.Variant.SANSSERIFITALIC],symbfsfit:["MathFont",TexConstants_js_1$8.TexConstant.Variant.SANSSERIFBOLDITALIC],symtt:["MathFont",TexConstants_js_1$8.TexConstant.Variant.MONOSPACE],symcal:["MathFont",TexConstants_js_1$8.TexConstant.Variant.CALLIGRAPHIC],symbfcal:["MathFont",TexConstants_js_1$8.TexConstant.Variant.BOLDCALLIGRAPHIC],textrm:["HBox",null,TexConstants_js_1$8.TexConstant.Variant.NORMAL],textup:["HBox",null,TexConstants_js_1$8.TexConstant.Variant.NORMAL],textnormal:["HBox"],textit:["HBox",null,TexConstants_js_1$8.TexConstant.Variant.ITALIC],textbf:["HBox",null,TexConstants_js_1$8.TexConstant.Variant.BOLD],textsf:["HBox",null,TexConstants_js_1$8.TexConstant.Variant.SANSSERIF],texttt:["HBox",null,TexConstants_js_1$8.TexConstant.Variant.MONOSPACE],tiny:["SetSize",.5],Tiny:["SetSize",.6],scriptsize:["SetSize",.7],small:["SetSize",.85],normalsize:["SetSize",1],large:["SetSize",1.2],Large:["SetSize",1.44],LARGE:["SetSize",1.73],huge:["SetSize",2.07],Huge:["SetSize",2.49],arcsin:"NamedFn",arccos:"NamedFn",arctan:"NamedFn",arg:"NamedFn",cos:"NamedFn",cosh:"NamedFn",cot:"NamedFn",coth:"NamedFn",csc:"NamedFn",deg:"NamedFn",det:"NamedOp",dim:"NamedFn",exp:"NamedFn",gcd:"NamedOp",hom:"NamedFn",inf:"NamedOp",ker:"NamedFn",lg:"NamedFn",lim:"NamedOp",liminf:["NamedOp","lim inf"],limsup:["NamedOp","lim sup"],ln:"NamedFn",log:"NamedFn",max:"NamedOp",min:"NamedOp",Pr:"NamedOp",sec:"NamedFn",sin:"NamedFn",sinh:"NamedFn",sup:"NamedOp",tan:"NamedFn",tanh:"NamedFn",limits:["Limits",1],nolimits:["Limits",0],overline:["UnderOver","2015"],underline:["UnderOver","2015"],overbrace:["UnderOver","23DE",1],underbrace:["UnderOver","23DF",1],overparen:["UnderOver","23DC"],underparen:["UnderOver","23DD"],overrightarrow:["UnderOver","2192"],underrightarrow:["UnderOver","2192"],overleftarrow:["UnderOver","2190"],underleftarrow:["UnderOver","2190"],overleftrightarrow:["UnderOver","2194"],underleftrightarrow:["UnderOver","2194"],overset:"Overset",underset:"Underset",overunderset:"Overunderset",stackrel:["Macro","\\mathrel{\\mathop{#2}\\limits^{#1}}",2],stackbin:["Macro","\\mathbin{\\mathop{#2}\\limits^{#1}}",2],over:"Over",overwithdelims:"Over",atop:"Over",atopwithdelims:"Over",above:"Over",abovewithdelims:"Over",brace:["Over","{","}"],brack:["Over","[","]"],choose:["Over","(",")"],frac:"Frac",sqrt:"Sqrt",root:"Root",uproot:["MoveRoot","upRoot"],leftroot:["MoveRoot","leftRoot"],left:"LeftRight",right:"LeftRight",middle:"LeftRight",llap:"Lap",rlap:"Lap",raise:"RaiseLower",lower:"RaiseLower",moveleft:"MoveLeftRight",moveright:"MoveLeftRight",",":["Spacer",lengths_js_1$4.MATHSPACE.thinmathspace],":":["Spacer",lengths_js_1$4.MATHSPACE.mediummathspace],">":["Spacer",lengths_js_1$4.MATHSPACE.mediummathspace],";":["Spacer",lengths_js_1$4.MATHSPACE.thickmathspace],"!":["Spacer",lengths_js_1$4.MATHSPACE.negativethinmathspace],enspace:["Spacer",.5],quad:["Spacer",1],qquad:["Spacer",2],thinspace:["Spacer",lengths_js_1$4.MATHSPACE.thinmathspace],negthinspace:["Spacer",lengths_js_1$4.MATHSPACE.negativethinmathspace],hskip:"Hskip",hspace:"Hskip",kern:"Hskip",mskip:"Hskip",mspace:"Hskip",mkern:"Hskip",rule:"rule",Rule:["Rule"],Space:["Rule","blank"],nonscript:"Nonscript",big:["MakeBig",MmlNode_js_1$E.TEXCLASS.ORD,.85],Big:["MakeBig",MmlNode_js_1$E.TEXCLASS.ORD,1.15],bigg:["MakeBig",MmlNode_js_1$E.TEXCLASS.ORD,1.45],Bigg:["MakeBig",MmlNode_js_1$E.TEXCLASS.ORD,1.75],bigl:["MakeBig",MmlNode_js_1$E.TEXCLASS.OPEN,.85],Bigl:["MakeBig",MmlNode_js_1$E.TEXCLASS.OPEN,1.15],biggl:["MakeBig",MmlNode_js_1$E.TEXCLASS.OPEN,1.45],Biggl:["MakeBig",MmlNode_js_1$E.TEXCLASS.OPEN,1.75],bigr:["MakeBig",MmlNode_js_1$E.TEXCLASS.CLOSE,.85],Bigr:["MakeBig",MmlNode_js_1$E.TEXCLASS.CLOSE,1.15],biggr:["MakeBig",MmlNode_js_1$E.TEXCLASS.CLOSE,1.45],Biggr:["MakeBig",MmlNode_js_1$E.TEXCLASS.CLOSE,1.75],bigm:["MakeBig",MmlNode_js_1$E.TEXCLASS.REL,.85],Bigm:["MakeBig",MmlNode_js_1$E.TEXCLASS.REL,1.15],biggm:["MakeBig",MmlNode_js_1$E.TEXCLASS.REL,1.45],Biggm:["MakeBig",MmlNode_js_1$E.TEXCLASS.REL,1.75],mathord:["TeXAtom",MmlNode_js_1$E.TEXCLASS.ORD],mathop:["TeXAtom",MmlNode_js_1$E.TEXCLASS.OP],mathopen:["TeXAtom",MmlNode_js_1$E.TEXCLASS.OPEN],mathclose:["TeXAtom",MmlNode_js_1$E.TEXCLASS.CLOSE],mathbin:["TeXAtom",MmlNode_js_1$E.TEXCLASS.BIN],mathrel:["TeXAtom",MmlNode_js_1$E.TEXCLASS.REL],mathpunct:["TeXAtom",MmlNode_js_1$E.TEXCLASS.PUNCT],mathinner:["TeXAtom",MmlNode_js_1$E.TEXCLASS.INNER],vcenter:["TeXAtom",MmlNode_js_1$E.TEXCLASS.VCENTER],buildrel:"BuildRel",hbox:["HBox",0],text:"HBox",mbox:["HBox",0],fbox:"FBox",boxed:["Macro","\\fbox{$\\displaystyle{#1}$}",1],framebox:"FrameBox",strut:"Strut",mathstrut:["Macro","\\vphantom{(}"],phantom:"Phantom",vphantom:["Phantom",1,0],hphantom:["Phantom",0,1],smash:"Smash",acute:["Accent","00B4"],grave:["Accent","0060"],ddot:["Accent","00A8"],tilde:["Accent","007E"],bar:["Accent","00AF"],breve:["Accent","02D8"],check:["Accent","02C7"],hat:["Accent","005E"],vec:["Accent","2192"],dot:["Accent","02D9"],widetilde:["Accent","007E",1],widehat:["Accent","005E",1],matrix:"Matrix",array:"Matrix",pmatrix:["Matrix","(",")"],cases:["Matrix","{","","left left",null,".1em",null,!0],eqalign:["Matrix",null,null,"right left",(0,lengths_js_1$4.em)(lengths_js_1$4.MATHSPACE.thickmathspace),".5em","D"],displaylines:["Matrix",null,null,"center",null,".5em","D"],cr:"Cr","\\":"CrLaTeX",newline:["CrLaTeX",!0],hline:["HLine","solid"],hdashline:["HLine","dashed"],eqalignno:["Matrix",null,null,"right left",(0,lengths_js_1$4.em)(lengths_js_1$4.MATHSPACE.thickmathspace),".5em","D",null,"right"],leqalignno:["Matrix",null,null,"right left",(0,lengths_js_1$4.em)(lengths_js_1$4.MATHSPACE.thickmathspace),".5em","D",null,"left"],hfill:"HFill",hfil:"HFill",hfilll:"HFill",bmod:["Macro",'\\mmlToken{mo}[lspace="thickmathspace" rspace="thickmathspace"]{mod}'],pmod:["Macro","\\pod{\\mmlToken{mi}{mod}\\kern 6mu #1}",1],mod:["Macro","\\mathchoice{\\kern18mu}{\\kern12mu}{\\kern12mu}{\\kern12mu}\\mmlToken{mi}{mod}\\,\\,#1",1],pod:["Macro","\\mathchoice{\\kern18mu}{\\kern8mu}{\\kern8mu}{\\kern8mu}(#1)",1],iff:["Macro","\\;\\Longleftrightarrow\\;"],skew:["Macro","{{#2{#3\\mkern#1mu}\\mkern-#1mu}{}}",3],pmb:["Macro","\\rlap{#1}\\kern1px{#1}",1],TeX:["Macro","T\\kern-.14em\\lower.5ex{E}\\kern-.115em X"],LaTeX:["Macro","L\\kern-.325em\\raise.21em{\\scriptstyle{A}}\\kern-.17em\\TeX"]," ":["Macro","\\text{ }"],not:"Not",dots:"Dots",space:"Tilde"," ":"Tilde",begin:"BeginEnd",end:"BeginEnd",label:"HandleLabel",ref:"HandleRef",nonumber:"HandleNoTag",mathchoice:"MathChoice",mmlToken:"MmlToken"},BaseMethods_js_1$6.default),new sm$4.EnvironmentMap("environment",ParseMethods_js_1$6.default.environment,{array:["AlignedArray"],equation:["Equation",null,!0],eqnarray:["EqnArray",null,!0,!0,"rcl",ParseUtil_js_1$a.default.cols(0,lengths_js_1$4.MATHSPACE.thickmathspace),".5em"]},BaseMethods_js_1$6.default),new sm$4.CharacterMap("not_remap",null,{"←":"↚","→":"↛","↔":"↮","⇐":"⇍","⇒":"⇏","⇔":"⇎","∈":"∉","∋":"∌","∣":"∤","∥":"∦","∼":"≁","~":"≁","≃":"≄","≅":"≇","≈":"≉","≍":"≭","=":"≠","≡":"≢","<":"≮",">":"≯","≤":"≰","≥":"≱","≲":"≴","≳":"≵","≶":"≸","≷":"≹","≺":"⊀","≻":"⊁","⊂":"⊄","⊃":"⊅","⊆":"⊈","⊇":"⊉","⊢":"⊬","⊨":"⊭","⊩":"⊮","⊫":"⊯","≼":"⋠","≽":"⋡","⊑":"⋢","⊒":"⋣","⊲":"⋪","⊳":"⋫","⊴":"⋬","⊵":"⋭","∃":"∄"});var _a$9,__extends$1i=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__createBinding$8=commonjsGlobal&&commonjsGlobal.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),__setModuleDefault$8=commonjsGlobal&&commonjsGlobal.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar$8=commonjsGlobal&&commonjsGlobal.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&__createBinding$8(t,e,n);return __setModuleDefault$8(t,e),t},__values$u=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},__importDefault$w=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(BaseConfiguration,"__esModule",{value:!0}),BaseConfiguration.BaseConfiguration=BaseConfiguration.BaseTags=BaseConfiguration.Other=void 0;var Configuration_js_1$k=Configuration,MapHandler_js_1=MapHandler,TexError_js_1$e=__importDefault$w(TexError$1),NodeUtil_js_1$9=__importDefault$w(NodeUtil$1),SymbolMap_js_1$f=SymbolMap,bitem=__importStar$8(BaseItems),Tags_js_1$5=Tags,OperatorDictionary_js_1=OperatorDictionary;function Other(e,t){var n=e.stack.env.font?{mathvariant:e.stack.env.font}:{},r=MapHandler_js_1.MapHandler.getMap("remap").lookup(t),i=(0,OperatorDictionary_js_1.getRange)(t),o=i?i[3]:"mo",a=e.create("token",o,n,r?r.char:t);i[4]&&a.attributes.set("mathvariant",i[4]),"mo"===o&&(NodeUtil_js_1$9.default.setProperty(a,"fixStretchy",!0),e.configuration.addNode("fixStretchy",a)),e.Push(a)}function csUndefined(e,t){throw new TexError_js_1$e.default("UndefinedControlSequence","Undefined control sequence %1","\\"+t)}function envUndefined(e,t){throw new TexError_js_1$e.default("UnknownEnv","Unknown environment '%1'",t)}function filterNonscript(e){var t,n,r=e.data;try{for(var i=__values$u(r.getList("nonscript")),o=i.next();!o.done;o=i.next()){var a=o.value;if(a.attributes.get("scriptlevel")>0){var s=a.parent;if(s.childNodes.splice(s.childIndex(a),1),r.removeFromList(a.kind,[a]),a.isKind("mrow")){var l=a.childNodes[0];r.removeFromList("mstyle",[l]),r.removeFromList("mspace",l.childNodes[0].childNodes)}}else a.isKind("mrow")&&(a.parent.replaceChild(a.childNodes[0],a),r.removeFromList("mrow",[a]))}}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}}new SymbolMap_js_1$f.CharacterMap("remap",null,{"-":"−","*":"∗","`":"‘"}),BaseConfiguration.Other=Other;var BaseTags=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$1i(t,e),t}(Tags_js_1$5.AbstractTags);BaseConfiguration.BaseTags=BaseTags,BaseConfiguration.BaseConfiguration=Configuration_js_1$k.Configuration.create("base",{handler:{character:["command","special","letter","digit"],delimiter:["delimiter"],macro:["delimiter","macros","mathchar0mi","mathchar0mo","mathchar7"],environment:["environment"]},fallback:{character:Other,macro:csUndefined,environment:envUndefined},items:(_a$9={},_a$9[bitem.StartItem.prototype.kind]=bitem.StartItem,_a$9[bitem.StopItem.prototype.kind]=bitem.StopItem,_a$9[bitem.OpenItem.prototype.kind]=bitem.OpenItem,_a$9[bitem.CloseItem.prototype.kind]=bitem.CloseItem,_a$9[bitem.PrimeItem.prototype.kind]=bitem.PrimeItem,_a$9[bitem.SubsupItem.prototype.kind]=bitem.SubsupItem,_a$9[bitem.OverItem.prototype.kind]=bitem.OverItem,_a$9[bitem.LeftItem.prototype.kind]=bitem.LeftItem,_a$9[bitem.Middle.prototype.kind]=bitem.Middle,_a$9[bitem.RightItem.prototype.kind]=bitem.RightItem,_a$9[bitem.BeginItem.prototype.kind]=bitem.BeginItem,_a$9[bitem.EndItem.prototype.kind]=bitem.EndItem,_a$9[bitem.StyleItem.prototype.kind]=bitem.StyleItem,_a$9[bitem.PositionItem.prototype.kind]=bitem.PositionItem,_a$9[bitem.CellItem.prototype.kind]=bitem.CellItem,_a$9[bitem.MmlItem.prototype.kind]=bitem.MmlItem,_a$9[bitem.FnItem.prototype.kind]=bitem.FnItem,_a$9[bitem.NotItem.prototype.kind]=bitem.NotItem,_a$9[bitem.NonscriptItem.prototype.kind]=bitem.NonscriptItem,_a$9[bitem.DotsItem.prototype.kind]=bitem.DotsItem,_a$9[bitem.ArrayItem.prototype.kind]=bitem.ArrayItem,_a$9[bitem.EqnArrayItem.prototype.kind]=bitem.EqnArrayItem,_a$9[bitem.EquationItem.prototype.kind]=bitem.EquationItem,_a$9),options:{maxMacros:1e3,baseURL:"undefined"==typeof document||0===document.getElementsByTagName("base").length?"":String(document.location).replace(/#.*$/,"")},tags:{base:BaseTags},postprocessors:[[filterNonscript,-4]]});var __extends$1h=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$B=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$B=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$B.apply(this,arguments)},__read$u=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__importDefault$v=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(tex$2,"__esModule",{value:!0});var TeX_1=tex$2.TeX=void 0,InputJax_js_1=InputJax,Options_js_1$6=Options,FindTeX_js_1=FindTeX$1,FilterUtil_js_1=__importDefault$v(FilterUtil$1),NodeUtil_js_1$8=__importDefault$v(NodeUtil$1),TexParser_js_1$7=__importDefault$v(requireTexParser()),TexError_js_1$d=__importDefault$v(TexError$1),ParseOptions_js_1$1=__importDefault$v(ParseOptions$1),Tags_js_1$4=Tags,Configuration_js_1$j=Configuration,TeX=function(e){function t(n){void 0===n&&(n={});var r=this,i=__read$u((0,Options_js_1$6.separateOptions)(n,t.OPTIONS,FindTeX_js_1.FindTeX.OPTIONS),3),o=i[0],a=i[1],s=i[2];(r=e.call(this,a)||this).findTeX=r.options.FindTeX||new FindTeX_js_1.FindTeX(s);var l=r.options.packages,c=r.configuration=t.configure(l),T=r._parseOptions=new ParseOptions_js_1$1.default(c,[r.options,Tags_js_1$4.TagsFactory.OPTIONS]);return(0,Options_js_1$6.userOptions)(T.options,o),c.config(r),t.tags(T,c),r.postFilters.add(FilterUtil_js_1.default.cleanSubSup,-6),r.postFilters.add(FilterUtil_js_1.default.setInherited,-5),r.postFilters.add(FilterUtil_js_1.default.moveLimits,-4),r.postFilters.add(FilterUtil_js_1.default.cleanStretchy,-3),r.postFilters.add(FilterUtil_js_1.default.cleanAttributes,-2),r.postFilters.add(FilterUtil_js_1.default.combineRelations,-1),r}return __extends$1h(t,e),t.configure=function(e){var t=new Configuration_js_1$j.ParserConfiguration(e,["tex"]);return t.init(),t},t.tags=function(e,t){Tags_js_1$4.TagsFactory.addTags(t.tags),Tags_js_1$4.TagsFactory.setDefault(e.options.tags),e.tags=Tags_js_1$4.TagsFactory.getDefault(),e.tags.configuration=e},t.prototype.setMmlFactory=function(t){e.prototype.setMmlFactory.call(this,t),this._parseOptions.nodeFactory.setMmlFactory(t)},Object.defineProperty(t.prototype,"parseOptions",{get:function(){return this._parseOptions},enumerable:!1,configurable:!0}),t.prototype.reset=function(e){void 0===e&&(e=0),this.parseOptions.tags.reset(e)},t.prototype.compile=function(e,t){this.parseOptions.clear(),this.executeFilters(this.preFilters,e,t,this.parseOptions);var n,r,i=e.display;this.latex=e.math,this.parseOptions.tags.startEquation(e);try{var o=new TexParser_js_1$7.default(this.latex,{display:i,isInner:!1},this.parseOptions);n=o.mml(),r=o.stack.global}catch(e){if(!(e instanceof TexError_js_1$d.default))throw e;this.parseOptions.error=!0,n=this.options.formatError(this,e)}return n=this.parseOptions.nodeFactory.create("node","math",[n]),(null==r?void 0:r.indentalign)&&NodeUtil_js_1$8.default.setAttribute(n,"indentalign",r.indentalign),i&&NodeUtil_js_1$8.default.setAttribute(n,"display","block"),this.parseOptions.tags.finishEquation(e),this.parseOptions.root=n,this.executeFilters(this.postFilters,e,t,this.parseOptions),this.mathNode=this.parseOptions.root,this.mathNode},t.prototype.findMath=function(e){return this.findTeX.findMath(e)},t.prototype.formatError=function(e){var t=e.message.replace(/\n.*/,"");return this.parseOptions.nodeFactory.create("error",t,e.id,this.latex)},t.NAME="TeX",t.OPTIONS=__assign$B(__assign$B({},InputJax_js_1.AbstractInputJax.OPTIONS),{FindTeX:null,packages:["base"],digits:/^(?:[0-9]+(?:\{,\}[0-9]{3})*(?:\.[0-9]*)?|\.[0-9]+)/,maxBuffer:5120,formatError:function(e,t){return e.formatError(t)}}),t}(InputJax_js_1.AbstractInputJax);TeX_1=tex$2.TeX=TeX;var svg={},OutputJax$1={},OutputJax={};Object.defineProperty(OutputJax,"__esModule",{value:!0}),OutputJax.AbstractOutputJax=void 0;var Options_js_1$5=Options,FunctionList_js_1=FunctionList$1,AbstractOutputJax=function(){function e(e){void 0===e&&(e={}),this.adaptor=null;var t=this.constructor;this.options=(0,Options_js_1$5.userOptions)((0,Options_js_1$5.defaultOptions)({},t.OPTIONS),e),this.postFilters=new FunctionList_js_1.FunctionList}return Object.defineProperty(e.prototype,"name",{get:function(){return this.constructor.NAME},enumerable:!1,configurable:!0}),e.prototype.setAdaptor=function(e){this.adaptor=e},e.prototype.initialize=function(){},e.prototype.reset=function(){},e.prototype.getMetrics=function(e){},e.prototype.styleSheet=function(e){return null},e.prototype.pageElements=function(e){return null},e.prototype.executeFilters=function(e,t,n,r){var i={math:t,document:n,data:r};return e.execute(i),i.data},e.NAME="generic",e.OPTIONS={},e}();OutputJax.AbstractOutputJax=AbstractOutputJax;var Styles$1={},__values$t=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},__read$t=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$l=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))};Object.defineProperty(Styles$1,"__esModule",{value:!0}),Styles$1.Styles=void 0;var TRBL=["top","right","bottom","left"],WSC=["width","style","color"];function splitSpaces(e){for(var t=e.split(/((?:'[^']*'|"[^"]*"|,[\s\n]|[^\s\n])*)/g),n=[];t.length>1;)t.shift(),n.push(t.shift());return n}function splitTRBL(e){var t,n,r=splitSpaces(this.styles[e]);0===r.length&&r.push(""),1===r.length&&r.push(r[0]),2===r.length&&r.push(r[0]),3===r.length&&r.push(r[1]);try{for(var i=__values$t(Styles.connect[e].children),o=i.next();!o.done;o=i.next()){var a=o.value;this.setStyle(this.childName(e,a),r.shift())}}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}}function combineTRBL(e){var t,n,r=Styles.connect[e].children,i=[];try{for(var o=__values$t(r),a=o.next();!a.done;a=o.next()){var s=a.value,l=this.styles[e+"-"+s];if(!l)return void delete this.styles[e];i.push(l)}}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}i[3]===i[1]&&(i.pop(),i[2]===i[0]&&(i.pop(),i[1]===i[0]&&i.pop())),this.styles[e]=i.join(" ")}function splitSame(e){var t,n;try{for(var r=__values$t(Styles.connect[e].children),i=r.next();!i.done;i=r.next()){var o=i.value;this.setStyle(this.childName(e,o),this.styles[e])}}catch(e){t={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}}function combineSame(e){var t,n,r=__spreadArray$l([],__read$t(Styles.connect[e].children),!1),i=this.styles[this.childName(e,r.shift())];try{for(var o=__values$t(r),a=o.next();!a.done;a=o.next()){var s=a.value;if(this.styles[this.childName(e,s)]!==i)return void delete this.styles[e]}}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}this.styles[e]=i}var BORDER={width:/^(?:[\d.]+(?:[a-z]+)|thin|medium|thick|inherit|initial|unset)$/,style:/^(?:none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset|inherit|initial|unset)$/};function splitWSC(e){var t,n,r,i,o={width:"",style:"",color:""};try{for(var a=__values$t(splitSpaces(this.styles[e])),s=a.next();!s.done;s=a.next()){var l=s.value;l.match(BORDER.width)&&""===o.width?o.width=l:l.match(BORDER.style)&&""===o.style?o.style=l:o.color=l}}catch(e){t={error:e}}finally{try{s&&!s.done&&(n=a.return)&&n.call(a)}finally{if(t)throw t.error}}try{for(var c=__values$t(Styles.connect[e].children),T=c.next();!T.done;T=c.next()){var Q=T.value;this.setStyle(this.childName(e,Q),o[Q])}}catch(e){r={error:e}}finally{try{T&&!T.done&&(i=c.return)&&i.call(c)}finally{if(r)throw r.error}}}function combineWSC(e){var t,n,r=[];try{for(var i=__values$t(Styles.connect[e].children),o=i.next();!o.done;o=i.next()){var a=o.value,s=this.styles[this.childName(e,a)];s&&r.push(s)}}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}r.length?this.styles[e]=r.join(" "):delete this.styles[e]}var FONT={style:/^(?:normal|italic|oblique|inherit|initial|unset)$/,variant:new RegExp("^(?:"+["normal|none","inherit|initial|unset","common-ligatures|no-common-ligatures","discretionary-ligatures|no-discretionary-ligatures","historical-ligatures|no-historical-ligatures","contextual|no-contextual","(?:stylistic|character-variant|swash|ornaments|annotation)\\([^)]*\\)","small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps","lining-nums|oldstyle-nums|proportional-nums|tabular-nums","diagonal-fractions|stacked-fractions","ordinal|slashed-zero","jis78|jis83|jis90|jis04|simplified|traditional","full-width|proportional-width","ruby"].join("|")+")$"),weight:/^(?:normal|bold|bolder|lighter|[1-9]00|inherit|initial|unset)$/,stretch:new RegExp("^(?:"+["normal","(?:(?:ultra|extra|semi)-)?condensed","(?:(?:semi|extra|ulta)-)?expanded","inherit|initial|unset"].join("|")+")$"),size:new RegExp("^(?:"+["xx-small|x-small|small|medium|large|x-large|xx-large|larger|smaller","[d.]+%|[d.]+[a-z]+","inherit|initial|unset"].join("|")+")(?:/(?:normal|[d.+](?:%|[a-z]+)?))?$")};function splitFont(e){var t,n,r,i,o=splitSpaces(this.styles[e]),a={style:"",variant:[],weight:"",stretch:"",size:"",family:"","line-height":""};try{for(var s=__values$t(o),l=s.next();!l.done;l=s.next()){var c=l.value;a.family=c;try{for(var T=(r=void 0,__values$t(Object.keys(FONT))),Q=T.next();!Q.done;Q=T.next()){var d=Q.value;if((Array.isArray(a[d])||""===a[d])&&c.match(FONT[d]))if("size"===d){var u=__read$t(c.split(/\//),2),p=u[0],h=u[1];a[d]=p,h&&(a["line-height"]=h)}else""===a.size&&(Array.isArray(a[d])?a[d].push(c):a[d]=c)}}catch(e){r={error:e}}finally{try{Q&&!Q.done&&(i=T.return)&&i.call(T)}finally{if(r)throw r.error}}}}catch(e){t={error:e}}finally{try{l&&!l.done&&(n=s.return)&&n.call(s)}finally{if(t)throw t.error}}saveFontParts(e,a),delete this.styles[e]}function saveFontParts(e,t){var n,r;try{for(var i=__values$t(Styles.connect[e].children),o=i.next();!o.done;o=i.next()){var a=o.value,s=this.childName(e,a);if(Array.isArray(t[a])){var l=t[a];l.length&&(this.styles[s]=l.join(" "))}else""!==t[a]&&(this.styles[s]=t[a])}}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}}function combineFont(e){}var Styles=function(){function e(e){void 0===e&&(e=""),this.parse(e)}return Object.defineProperty(e.prototype,"cssText",{get:function(){var e,t,n=[];try{for(var r=__values$t(Object.keys(this.styles)),i=r.next();!i.done;i=r.next()){var o=i.value,a=this.parentName(o);this.styles[a]||n.push(o+": "+this.styles[o]+";")}}catch(t){e={error:t}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}return n.join(" ")},enumerable:!1,configurable:!0}),e.prototype.set=function(t,n){for(t=this.normalizeName(t),this.setStyle(t,n),e.connect[t]&&!e.connect[t].combine&&(this.combineChildren(t),delete this.styles[t]);t.match(/-/)&&(t=this.parentName(t),e.connect[t]);)e.connect[t].combine.call(this,t)},e.prototype.get=function(e){return e=this.normalizeName(e),this.styles.hasOwnProperty(e)?this.styles[e]:""},e.prototype.setStyle=function(t,n){this.styles[t]=n,e.connect[t]&&e.connect[t].children&&e.connect[t].split.call(this,t),""===n&&delete this.styles[t]},e.prototype.combineChildren=function(t){var n,r,i=this.parentName(t);try{for(var o=__values$t(e.connect[t].children),a=o.next();!a.done;a=o.next()){var s=a.value,l=this.childName(i,s);e.connect[l].combine.call(this,l)}}catch(e){n={error:e}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}},e.prototype.parentName=function(e){var t=e.replace(/-[^-]*$/,"");return e===t?"":t},e.prototype.childName=function(t,n){return n.match(/-/)?n:(e.connect[t]&&!e.connect[t].combine&&(n+=t.replace(/.*-/,"-"),t=this.parentName(t)),t+"-"+n)},e.prototype.normalizeName=function(e){return e.replace(/[A-Z]/g,(function(e){return"-"+e.toLowerCase()}))},e.prototype.parse=function(e){void 0===e&&(e="");var t=this.constructor.pattern;this.styles={};for(var n=e.replace(t.comment,"").split(t.style);n.length>1;){var r=__read$t(n.splice(0,3),3),i=r[0],o=r[1],a=r[2];if(i.match(/[^\s\n]/))return;this.set(o,a)}},e.pattern={style:/([-a-z]+)[\s\n]*:[\s\n]*((?:'[^']*'|"[^"]*"|\n|.)*?)[\s\n]*(?:;|$)/g,comment:/\/\*[^]*?\*\//g},e.connect={padding:{children:TRBL,split:splitTRBL,combine:combineTRBL},border:{children:TRBL,split:splitSame,combine:combineSame},"border-top":{children:WSC,split:splitWSC,combine:combineWSC},"border-right":{children:WSC,split:splitWSC,combine:combineWSC},"border-bottom":{children:WSC,split:splitWSC,combine:combineWSC},"border-left":{children:WSC,split:splitWSC,combine:combineWSC},"border-width":{children:TRBL,split:splitTRBL,combine:null},"border-style":{children:TRBL,split:splitTRBL,combine:null},"border-color":{children:TRBL,split:splitTRBL,combine:null},font:{children:["style","variant","weight","stretch","line-height","size","family"],split:splitFont,combine:combineFont}},e}();Styles$1.Styles=Styles;var StyleList={},__values$s=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(StyleList,"__esModule",{value:!0}),StyleList.CssStyles=void 0;var CssStyles=function(){function e(e){void 0===e&&(e=null),this.styles={},this.addStyles(e)}return Object.defineProperty(e.prototype,"cssText",{get:function(){return this.getStyleString()},enumerable:!1,configurable:!0}),e.prototype.addStyles=function(e){var t,n;if(e)try{for(var r=__values$s(Object.keys(e)),i=r.next();!i.done;i=r.next()){var o=i.value;this.styles[o]||(this.styles[o]={}),Object.assign(this.styles[o],e[o])}}catch(e){t={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}},e.prototype.removeStyles=function(){for(var e,t,n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];try{for(var i=__values$s(n),o=i.next();!o.done;o=i.next()){var a=o.value;delete this.styles[a]}}catch(t){e={error:t}}finally{try{o&&!o.done&&(t=i.return)&&t.call(i)}finally{if(e)throw e.error}}},e.prototype.clear=function(){this.styles={}},e.prototype.getStyleString=function(){return this.getStyleRules().join("\n\n")},e.prototype.getStyleRules=function(){var e,t,n=Object.keys(this.styles),r=new Array(n.length),i=0;try{for(var o=__values$s(n),a=o.next();!a.done;a=o.next()){var s=a.value;r[i++]=s+" {\n"+this.getStyleDefString(this.styles[s])+"\n}"}}catch(t){e={error:t}}finally{try{a&&!a.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}return r},e.prototype.getStyleDefString=function(e){var t,n,r=Object.keys(e),i=new Array(r.length),o=0;try{for(var a=__values$s(r),s=a.next();!s.done;s=a.next()){var l=s.value;i[o++]=" "+l+": "+e[l]+";"}}catch(e){t={error:e}}finally{try{s&&!s.done&&(n=a.return)&&n.call(a)}finally{if(t)throw t.error}}return i.join("\n")},e}();StyleList.CssStyles=CssStyles;var __extends$1g=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$A=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$A=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$A.apply(this,arguments)},__read$s=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__values$r=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(OutputJax$1,"__esModule",{value:!0}),OutputJax$1.CommonOutputJax=void 0;var OutputJax_js_1=OutputJax,MathItem_js_1$2=MathItem,Options_js_1$4=Options,lengths_js_1$3=lengths,Styles_js_1$2=Styles$1,StyleList_js_1=StyleList,CommonOutputJax=function(e){function t(t,n,r){void 0===t&&(t=null),void 0===n&&(n=null),void 0===r&&(r=null);var i=this,o=__read$s((0,Options_js_1$4.separateOptions)(t,r.OPTIONS),2),a=o[0],s=o[1];return(i=e.call(this,a)||this).factory=i.options.wrapperFactory||new n,i.factory.jax=i,i.cssStyles=i.options.cssStyles||new StyleList_js_1.CssStyles,i.font=i.options.font||new r(s),i.unknownCache=new Map,i}return __extends$1g(t,e),t.prototype.typeset=function(e,t){this.setDocument(t);var n=this.createNode();return this.toDOM(e,n,t),n},t.prototype.createNode=function(){var e=this.constructor.NAME;return this.html("mjx-container",{class:"MathJax",jax:e})},t.prototype.setScale=function(e){var t=this.math.metrics.scale*this.options.scale;1!==t&&this.adaptor.setStyle(e,"fontSize",(0,lengths_js_1$3.percent)(t))},t.prototype.toDOM=function(e,t,n){void 0===n&&(n=null),this.setDocument(n),this.math=e,this.pxPerEm=e.metrics.ex/this.font.params.x_height,e.root.setTeXclass(null),this.setScale(t),this.nodeMap=new Map,this.container=t,this.processMath(e.root,t),this.nodeMap=null,this.executeFilters(this.postFilters,e,n,t)},t.prototype.getBBox=function(e,t){this.setDocument(t),this.math=e,e.root.setTeXclass(null),this.nodeMap=new Map;var n=this.factory.wrap(e.root).getOuterBBox();return this.nodeMap=null,n},t.prototype.getMetrics=function(e){var t,n;this.setDocument(e);var r=this.adaptor,i=this.getMetricMaps(e);try{for(var o=__values$r(e.math),a=o.next();!a.done;a=o.next()){var s=a.value,l=r.parent(s.start.node);if(s.state()<MathItem_js_1$2.STATE.METRICS&&l){var c=i[s.display?1:0].get(l),T=c.em,Q=c.ex,d=c.containerWidth,u=c.lineWidth,p=c.scale,h=c.family;s.setMetrics(T,Q,d,u,p),this.options.mtextInheritFont&&(s.outputData.mtextFamily=h),this.options.merrorInheritFont&&(s.outputData.merrorFamily=h),s.state(MathItem_js_1$2.STATE.METRICS)}}}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}},t.prototype.getMetricsFor=function(e,t){var n=this.options.mtextInheritFont||this.options.merrorInheritFont,r=this.getTestElement(e,t),i=this.measureMetrics(r,n);return this.adaptor.remove(r),i},t.prototype.getMetricMaps=function(e){var t,n,r,i,o,a,s,l,c,T,Q=this.adaptor,d=[new Map,new Map];try{for(var u=__values$r(e.math),p=u.next();!p.done;p=u.next()){var h=p.value;if((E=Q.parent(h.start.node))&&h.state()<MathItem_js_1$2.STATE.METRICS){var m=d[h.display?1:0];m.has(E)||m.set(E,this.getTestElement(E,h.display))}}}catch(e){t={error:e}}finally{try{p&&!p.done&&(n=u.return)&&n.call(u)}finally{if(t)throw t.error}}var f=this.options.mtextInheritFont||this.options.merrorInheritFont,g=[new Map,new Map];try{for(var b=__values$r(g.keys()),y=b.next();!y.done;y=b.next()){var L=y.value;try{for(var v=(o=void 0,__values$r(d[L].keys())),w=v.next();!w.done;w=v.next()){var E=w.value;g[L].set(E,this.measureMetrics(d[L].get(E),f))}}catch(e){o={error:e}}finally{try{w&&!w.done&&(a=v.return)&&a.call(v)}finally{if(o)throw o.error}}}}catch(e){r={error:e}}finally{try{y&&!y.done&&(i=b.return)&&i.call(b)}finally{if(r)throw r.error}}try{for(var _=__values$r(g.keys()),M=_.next();!M.done;M=_.next()){L=M.value;try{for(var x=(c=void 0,__values$r(d[L].values())),H=x.next();!H.done;H=x.next())E=H.value,Q.remove(E)}catch(e){c={error:e}}finally{try{H&&!H.done&&(T=x.return)&&T.call(x)}finally{if(c)throw c.error}}}}catch(e){s={error:e}}finally{try{M&&!M.done&&(l=_.return)&&l.call(_)}finally{if(s)throw s.error}}return g},t.prototype.getTestElement=function(e,t){var n=this.adaptor;if(!this.testInline){this.testInline=this.html("mjx-test",{style:{display:"inline-block",width:"100%","font-style":"normal","font-weight":"normal","font-size":"100%","font-size-adjust":"none","text-indent":0,"text-transform":"none","letter-spacing":"normal","word-spacing":"normal",overflow:"hidden",height:"1px","margin-right":"-1px"}},[this.html("mjx-left-box",{style:{display:"inline-block",width:0,float:"left"}}),this.html("mjx-ex-box",{style:{position:"absolute",overflow:"hidden",width:"1px",height:"60ex"}}),this.html("mjx-right-box",{style:{display:"inline-block",width:0,float:"right"}})]),this.testDisplay=n.clone(this.testInline),n.setStyle(this.testDisplay,"display","table"),n.setStyle(this.testDisplay,"margin-right",""),n.setStyle(n.firstChild(this.testDisplay),"display","none");var r=n.lastChild(this.testDisplay);n.setStyle(r,"display","table-cell"),n.setStyle(r,"width","10000em"),n.setStyle(r,"float","")}return n.append(e,n.clone(t?this.testDisplay:this.testInline))},t.prototype.measureMetrics=function(e,t){var n=this.adaptor,r=t?n.fontFamily(e):"",i=n.fontSize(e),o=__read$s(n.nodeSize(n.childNode(e,1)),2),a=o[0],s=o[1],l=a?s/60:i*this.options.exFactor;return{em:i,ex:l,containerWidth:a?"table"===n.getStyle(e,"display")?n.nodeSize(n.lastChild(e))[0]-1:n.nodeBBox(n.lastChild(e)).left-n.nodeBBox(n.firstChild(e)).left-2:1e6,lineWidth:1e6,scale:Math.max(this.options.minScale,this.options.matchFontHeight?l/this.font.params.x_height/i:1),family:r}},t.prototype.styleSheet=function(e){var t,n;if(this.setDocument(e),this.cssStyles.clear(),this.cssStyles.addStyles(this.constructor.commonStyles),"getStyles"in e)try{for(var r=__values$r(e.getStyles()),i=r.next();!i.done;i=r.next()){var o=i.value;this.cssStyles.addStyles(o)}}catch(e){t={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}return this.addWrapperStyles(this.cssStyles),this.addFontStyles(this.cssStyles),this.html("style",{id:"MJX-styles"},[this.text("\n"+this.cssStyles.cssText+"\n")])},t.prototype.addFontStyles=function(e){e.addStyles(this.font.styles)},t.prototype.addWrapperStyles=function(e){var t,n;try{for(var r=__values$r(this.factory.getKinds()),i=r.next();!i.done;i=r.next()){var o=i.value;this.addClassStyles(this.factory.getNodeClass(o),e)}}catch(e){t={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}},t.prototype.addClassStyles=function(e,t){t.addStyles(e.styles)},t.prototype.setDocument=function(e){e&&(this.document=e,this.adaptor.document=e.document)},t.prototype.html=function(e,t,n,r){return void 0===t&&(t={}),void 0===n&&(n=[]),this.adaptor.node(e,t,n,r)},t.prototype.text=function(e){return this.adaptor.text(e)},t.prototype.fixed=function(e,t){return void 0===t&&(t=3),Math.abs(e)<6e-4?"0":e.toFixed(t).replace(/\.?0+$/,"")},t.prototype.measureText=function(e,t,n){void 0===n&&(n=["",!1,!1]);var r=this.unknownText(e,t);if("-explicitFont"===t){var i=this.cssFontStyles(n);this.adaptor.setAttributes(r,{style:i})}return this.measureTextNodeWithCache(r,e,t,n)},t.prototype.measureTextNodeWithCache=function(e,t,n,r){void 0===r&&(r=["",!1,!1]),"-explicitFont"===n&&(n=[r[0],r[1]?"T":"F",r[2]?"T":"F",""].join("-")),this.unknownCache.has(n)||this.unknownCache.set(n,new Map);var i=this.unknownCache.get(n),o=i.get(t);if(o)return o;var a=this.measureTextNode(e);return i.set(t,a),a},t.prototype.measureXMLnode=function(e){var t=this.adaptor,n=this.html("mjx-xml-block",{style:{display:"inline-block"}},[t.clone(e)]),r=this.html("mjx-baseline",{style:{display:"inline-block",width:0,height:0}}),i=this.html("mjx-measure-xml",{style:{position:"absolute",display:"inline-block","font-family":"initial","line-height":"normal"}},[r,n]);t.append(t.parent(this.math.start.node),this.container),t.append(this.container,i);var o=this.math.metrics.em*this.math.metrics.scale,a=t.nodeBBox(n),s=a.left,l=a.right,c=a.bottom,T=a.top,Q=(l-s)/o,d=(t.nodeBBox(r).top-T)/o,u=(c-T)/o-d;return t.remove(this.container),t.remove(i),{w:Q,h:d,d:u}},t.prototype.cssFontStyles=function(e,t){void 0===t&&(t={});var n=__read$s(e,3),r=n[0],i=n[1],o=n[2];return t["font-family"]=this.font.getFamily(r),i&&(t["font-style"]="italic"),o&&(t["font-weight"]="bold"),t},t.prototype.getFontData=function(e){return e||(e=new Styles_js_1$2.Styles),[this.font.getFamily(e.get("font-family")),"italic"===e.get("font-style"),"bold"===e.get("font-weight")]},t.NAME="Common",t.OPTIONS=__assign$A(__assign$A({},OutputJax_js_1.AbstractOutputJax.OPTIONS),{scale:1,minScale:.5,mtextInheritFont:!1,merrorInheritFont:!1,mtextFont:"",merrorFont:"serif",mathmlSpacing:!1,skipAttributes:{},exFactor:.5,displayAlign:"center",displayIndent:"0",wrapperFactory:null,font:null,cssStyles:null}),t.commonStyles={},t}(OutputJax_js_1.AbstractOutputJax);OutputJax$1.CommonOutputJax=CommonOutputJax;var WrapperFactory$2={},WrapperFactory$1={},WrapperFactory={},__extends$1f=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__read$r=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$k=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))};Object.defineProperty(WrapperFactory,"__esModule",{value:!0}),WrapperFactory.AbstractWrapperFactory=void 0;var Factory_js_1$1=Factory,AbstractWrapperFactory=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$1f(t,e),t.prototype.wrap=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return this.create.apply(this,__spreadArray$k([e.kind,e],__read$r(t),!1))},t}(Factory_js_1$1.AbstractFactory);WrapperFactory.AbstractWrapperFactory=AbstractWrapperFactory;var __extends$1e=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(WrapperFactory$1,"__esModule",{value:!0}),WrapperFactory$1.CommonWrapperFactory=void 0;var WrapperFactory_js_1=WrapperFactory,CommonWrapperFactory=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.jax=null,t}return __extends$1e(t,e),Object.defineProperty(t.prototype,"Wrappers",{get:function(){return this.node},enumerable:!1,configurable:!0}),t.defaultNodes={},t}(WrapperFactory_js_1.AbstractWrapperFactory);WrapperFactory$1.CommonWrapperFactory=CommonWrapperFactory;var Wrappers={},Wrapper$2={},BBox$1={};Object.defineProperty(BBox$1,"__esModule",{value:!0}),BBox$1.BBox=void 0;var lengths_js_1$2=lengths,BBox=function(){function e(e){void 0===e&&(e={w:0,h:-lengths_js_1$2.BIGDIMEN,d:-lengths_js_1$2.BIGDIMEN}),this.w=e.w||0,this.h="h"in e?e.h:-lengths_js_1$2.BIGDIMEN,this.d="d"in e?e.d:-lengths_js_1$2.BIGDIMEN,this.L=this.R=this.ic=this.sk=this.dx=0,this.scale=this.rscale=1,this.pwidth=""}return e.zero=function(){return new e({h:0,d:0,w:0})},e.empty=function(){return new e},e.prototype.empty=function(){return this.w=0,this.h=this.d=-lengths_js_1$2.BIGDIMEN,this},e.prototype.clean=function(){this.w===-lengths_js_1$2.BIGDIMEN&&(this.w=0),this.h===-lengths_js_1$2.BIGDIMEN&&(this.h=0),this.d===-lengths_js_1$2.BIGDIMEN&&(this.d=0)},e.prototype.rescale=function(e){this.w*=e,this.h*=e,this.d*=e},e.prototype.combine=function(e,t,n){void 0===t&&(t=0),void 0===n&&(n=0);var r=e.rscale,i=t+r*(e.w+e.L+e.R),o=n+r*e.h,a=r*e.d-n;i>this.w&&(this.w=i),o>this.h&&(this.h=o),a>this.d&&(this.d=a)},e.prototype.append=function(e){var t=e.rscale;this.w+=t*(e.w+e.L+e.R),t*e.h>this.h&&(this.h=t*e.h),t*e.d>this.d&&(this.d=t*e.d)},e.prototype.updateFrom=function(e){this.h=e.h,this.d=e.d,this.w=e.w,e.pwidth&&(this.pwidth=e.pwidth)},e.fullWidth="100%",e.StyleAdjust=[["borderTopWidth","h"],["borderRightWidth","w"],["borderBottomWidth","d"],["borderLeftWidth","w",0],["paddingTop","h"],["paddingRight","w"],["paddingBottom","d"],["paddingLeft","w",0]],e}();BBox$1.BBox=BBox;var Wrapper$1={},Wrapper={};Object.defineProperty(Wrapper,"__esModule",{value:!0}),Wrapper.AbstractWrapper=void 0;var AbstractWrapper=function(){function e(e,t){this.factory=e,this.node=t}return Object.defineProperty(e.prototype,"kind",{get:function(){return this.node.kind},enumerable:!1,configurable:!0}),e.prototype.wrap=function(e){return this.factory.wrap(e)},e}();Wrapper.AbstractWrapper=AbstractWrapper;var FontData$2={},__assign$z=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$z=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$z.apply(this,arguments)},__read$q=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$j=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))},__values$q=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(FontData$2,"__esModule",{value:!0}),FontData$2.FontData=FontData$2.NOSTRETCH=FontData$2.H=FontData$2.V=void 0;var Options_js_1$3=Options;FontData$2.V=1,FontData$2.H=2,FontData$2.NOSTRETCH={dir:0};var FontData$1=function(){function e(e){var t,n,r,i;void 0===e&&(e=null),this.variant={},this.delimiters={},this.cssFontMap={},this.remapChars={},this.skewIcFactor=.75;var o=this.constructor;this.options=(0,Options_js_1$3.userOptions)((0,Options_js_1$3.defaultOptions)({},o.OPTIONS),e),this.params=__assign$z({},o.defaultParams),this.sizeVariants=__spreadArray$j([],__read$q(o.defaultSizeVariants),!1),this.stretchVariants=__spreadArray$j([],__read$q(o.defaultStretchVariants),!1),this.cssFontMap=__assign$z({},o.defaultCssFonts);try{for(var a=__values$q(Object.keys(this.cssFontMap)),s=a.next();!s.done;s=a.next()){var l=s.value;"unknown"===this.cssFontMap[l][0]&&(this.cssFontMap[l][0]=this.options.unknownFamily)}}catch(e){t={error:e}}finally{try{s&&!s.done&&(n=a.return)&&n.call(a)}finally{if(t)throw t.error}}this.cssFamilyPrefix=o.defaultCssFamilyPrefix,this.createVariants(o.defaultVariants),this.defineDelimiters(o.defaultDelimiters);try{for(var c=__values$q(Object.keys(o.defaultChars)),T=c.next();!T.done;T=c.next()){var Q=T.value;this.defineChars(Q,o.defaultChars[Q])}}catch(e){r={error:e}}finally{try{T&&!T.done&&(i=c.return)&&i.call(c)}finally{if(r)throw r.error}}this.defineRemap("accent",o.defaultAccentMap),this.defineRemap("mo",o.defaultMoMap),this.defineRemap("mn",o.defaultMnMap)}return e.charOptions=function(e,t){var n=e[t];return 3===n.length&&(n[3]={}),n[3]},Object.defineProperty(e.prototype,"styles",{get:function(){return this._styles},set:function(e){this._styles=e},enumerable:!1,configurable:!0}),e.prototype.createVariant=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var r={linked:[],chars:t?Object.create(this.variant[t].chars):{}};n&&this.variant[n]&&(Object.assign(r.chars,this.variant[n].chars),this.variant[n].linked.push(r.chars),r.chars=Object.create(r.chars)),this.remapSmpChars(r.chars,e),this.variant[e]=r},e.prototype.remapSmpChars=function(e,t){var n,r,i,o,a=this.constructor;if(a.VariantSmp[t]){var s=a.SmpRemap,l=[null,null,a.SmpRemapGreekU,a.SmpRemapGreekL];try{for(var c=__values$q(a.SmpRanges),T=c.next();!T.done;T=c.next()){var Q=__read$q(T.value,3),d=Q[0],u=Q[1],p=Q[2],h=a.VariantSmp[t][d];if(h){for(var m=u;m<=p;m++)if(930!==m){var f=h+m-u;e[m]=this.smpChar(s[f]||f)}if(l[d])try{for(var g=(i=void 0,__values$q(Object.keys(l[d]).map((function(e){return parseInt(e)})))),b=g.next();!b.done;b=g.next())e[m=b.value]=this.smpChar(h+l[d][m])}catch(e){i={error:e}}finally{try{b&&!b.done&&(o=g.return)&&o.call(g)}finally{if(i)throw i.error}}}}}catch(e){n={error:e}}finally{try{T&&!T.done&&(r=c.return)&&r.call(c)}finally{if(n)throw n.error}}}"bold"===t&&(e[988]=this.smpChar(120778),e[989]=this.smpChar(120779))},e.prototype.smpChar=function(e){return[,,,{smp:e}]},e.prototype.createVariants=function(e){var t,n;try{for(var r=__values$q(e),i=r.next();!i.done;i=r.next()){var o=i.value;this.createVariant(o[0],o[1],o[2])}}catch(e){t={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}},e.prototype.defineChars=function(e,t){var n,r,i=this.variant[e];Object.assign(i.chars,t);try{for(var o=__values$q(i.linked),a=o.next();!a.done;a=o.next()){var s=a.value;Object.assign(s,t)}}catch(e){n={error:e}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}},e.prototype.defineDelimiters=function(e){Object.assign(this.delimiters,e)},e.prototype.defineRemap=function(e,t){this.remapChars.hasOwnProperty(e)||(this.remapChars[e]={}),Object.assign(this.remapChars[e],t)},e.prototype.getDelimiter=function(e){return this.delimiters[e]},e.prototype.getSizeVariant=function(e,t){return this.delimiters[e].variants&&(t=this.delimiters[e].variants[t]),this.sizeVariants[t]},e.prototype.getStretchVariant=function(e,t){return this.stretchVariants[this.delimiters[e].stretchv?this.delimiters[e].stretchv[t]:0]},e.prototype.getChar=function(e,t){return this.variant[e].chars[t]},e.prototype.getVariant=function(e){return this.variant[e]},e.prototype.getCssFont=function(e){return this.cssFontMap[e]||["serif",!1,!1]},e.prototype.getFamily=function(e){return this.cssFamilyPrefix?this.cssFamilyPrefix+", "+e:e},e.prototype.getRemappedChar=function(e,t){return(this.remapChars[e]||{})[t]},e.OPTIONS={unknownFamily:"serif"},e.JAX="common",e.NAME="",e.defaultVariants=[["normal"],["bold","normal"],["italic","normal"],["bold-italic","italic","bold"],["double-struck","bold"],["fraktur","normal"],["bold-fraktur","bold","fraktur"],["script","italic"],["bold-script","bold-italic","script"],["sans-serif","normal"],["bold-sans-serif","bold","sans-serif"],["sans-serif-italic","italic","sans-serif"],["sans-serif-bold-italic","bold-italic","bold-sans-serif"],["monospace","normal"]],e.defaultCssFonts={normal:["unknown",!1,!1],bold:["unknown",!1,!0],italic:["unknown",!0,!1],"bold-italic":["unknown",!0,!0],"double-struck":["unknown",!1,!0],fraktur:["unknown",!1,!1],"bold-fraktur":["unknown",!1,!0],script:["cursive",!1,!1],"bold-script":["cursive",!1,!0],"sans-serif":["sans-serif",!1,!1],"bold-sans-serif":["sans-serif",!1,!0],"sans-serif-italic":["sans-serif",!0,!1],"sans-serif-bold-italic":["sans-serif",!0,!0],monospace:["monospace",!1,!1]},e.defaultCssFamilyPrefix="",e.VariantSmp={bold:[119808,119834,120488,120514,120782],italic:[119860,119886,120546,120572],"bold-italic":[119912,119938,120604,120630],script:[119964,119990],"bold-script":[120016,120042],fraktur:[120068,120094],"double-struck":[120120,120146,,,120792],"bold-fraktur":[120172,120198],"sans-serif":[120224,120250,,,120802],"bold-sans-serif":[120276,120302,120662,120688,120812],"sans-serif-italic":[120328,120354],"sans-serif-bold-italic":[120380,120406,120720,120746],monospace:[120432,120458,,,120822]},e.SmpRanges=[[0,65,90],[1,97,122],[2,913,937],[3,945,969],[4,48,57]],e.SmpRemap={119893:8462,119965:8492,119968:8496,119969:8497,119971:8459,119972:8464,119975:8466,119976:8499,119981:8475,119994:8495,119996:8458,120004:8500,120070:8493,120075:8460,120076:8465,120085:8476,120093:8488,120122:8450,120127:8461,120133:8469,120135:8473,120136:8474,120137:8477,120145:8484},e.SmpRemapGreekU={8711:25,1012:17},e.SmpRemapGreekL={977:27,981:29,982:31,1008:28,1009:30,1013:26,8706:25},e.defaultAccentMap={768:"ˋ",769:"ˊ",770:"ˆ",771:"˜",772:"ˉ",774:"˘",775:"˙",776:"¨",778:"˚",780:"ˇ",8594:"⃗",8242:"'",8243:"''",8244:"'''",8245:"`",8246:"``",8247:"```",8279:"''''",8400:"↼",8401:"⇀",8406:"←",8417:"↔",8432:"*",8411:"...",8412:"....",8428:"⇁",8429:"↽",8430:"←",8431:"→"},e.defaultMoMap={45:"−"},e.defaultMnMap={45:"−"},e.defaultParams={x_height:.442,quad:1,num1:.676,num2:.394,num3:.444,denom1:.686,denom2:.345,sup1:.413,sup2:.363,sup3:.289,sub1:.15,sub2:.247,sup_drop:.386,sub_drop:.05,delim1:2.39,delim2:1,axis_height:.25,rule_thickness:.06,big_op_spacing1:.111,big_op_spacing2:.167,big_op_spacing3:.2,big_op_spacing4:.6,big_op_spacing5:.1,surd_height:.075,scriptspace:.05,nulldelimiterspace:.12,delimiterfactor:901,delimitershortfall:.3,min_rule_thickness:1.25,separation_factor:1.75,extra_ic:.033},e.defaultDelimiters={},e.defaultChars={},e.defaultSizeVariants=[],e.defaultStretchVariants=[],e}();FontData$2.FontData=FontData$1;var __extends$1d=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__createBinding$7=commonjsGlobal&&commonjsGlobal.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),__setModuleDefault$7=commonjsGlobal&&commonjsGlobal.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar$7=commonjsGlobal&&commonjsGlobal.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&__createBinding$7(t,e,n);return __setModuleDefault$7(t,e),t},__values$p=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},__read$p=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$i=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))};Object.defineProperty(Wrapper$1,"__esModule",{value:!0}),Wrapper$1.CommonWrapper=void 0;var Wrapper_js_1=Wrapper,MmlNode_js_1$D=MmlNode,string_js_1$5=string,LENGTHS=__importStar$7(lengths),Styles_js_1$1=Styles$1,BBox_js_1$4=BBox$1,FontData_js_1$n=FontData$2,SMALLSIZE=2/18;function MathMLSpace(e,t){return e?t<SMALLSIZE?0:SMALLSIZE:t}var hasRequiredWrapper,CommonWrapper=function(e){function t(t,n,r){void 0===r&&(r=null);var i=e.call(this,t,n)||this;return i.parent=null,i.removedStyles=null,i.styles=null,i.variant="",i.bboxComputed=!1,i.stretch=FontData_js_1$n.NOSTRETCH,i.font=null,i.parent=r,i.font=t.jax.font,i.bbox=BBox_js_1$4.BBox.zero(),i.getStyles(),i.getVariant(),i.getScale(),i.getSpace(),i.childNodes=n.childNodes.map((function(e){var t=i.wrap(e);return t.bbox.pwidth&&(n.notParent||n.isKind("math"))&&(i.bbox.pwidth=BBox_js_1$4.BBox.fullWidth),t})),i}return __extends$1d(t,e),Object.defineProperty(t.prototype,"jax",{get:function(){return this.factory.jax},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"adaptor",{get:function(){return this.factory.jax.adaptor},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"metrics",{get:function(){return this.factory.jax.math.metrics},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"fixesPWidth",{get:function(){return!this.node.notParent&&!this.node.isToken},enumerable:!1,configurable:!0}),t.prototype.wrap=function(e,t){void 0===t&&(t=null);var n=this.factory.wrap(e,t||this);return t&&t.childNodes.push(n),this.jax.nodeMap.set(e,n),n},t.prototype.getBBox=function(e){if(void 0===e&&(e=!0),this.bboxComputed)return this.bbox;var t=e?this.bbox:BBox_js_1$4.BBox.zero();return this.computeBBox(t),this.bboxComputed=e,t},t.prototype.getOuterBBox=function(e){var t,n;void 0===e&&(e=!0);var r=this.getBBox(e);if(!this.styles)return r;var i=new BBox_js_1$4.BBox;Object.assign(i,r);try{for(var o=__values$p(BBox_js_1$4.BBox.StyleAdjust),a=o.next();!a.done;a=o.next()){var s=__read$p(a.value,2),l=s[0],c=s[1],T=this.styles.get(l);T&&(i[c]+=this.length2em(T,1,i.rscale))}}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}return i},t.prototype.computeBBox=function(e,t){var n,r;void 0===t&&(t=!1),e.empty();try{for(var i=__values$p(this.childNodes),o=i.next();!o.done;o=i.next()){var a=o.value;e.append(a.getOuterBBox())}}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}e.clean(),this.fixesPWidth&&this.setChildPWidths(t)&&this.computeBBox(e,!0)},t.prototype.setChildPWidths=function(e,t,n){var r,i;if(void 0===t&&(t=null),void 0===n&&(n=!0),e)return!1;n&&(this.bbox.pwidth="");var o=!1;try{for(var a=__values$p(this.childNodes),s=a.next();!s.done;s=a.next()){var l=s.value,c=l.getOuterBBox();c.pwidth&&l.setChildPWidths(e,null===t?c.w:t,n)&&(o=!0)}}catch(e){r={error:e}}finally{try{s&&!s.done&&(i=a.return)&&i.call(a)}finally{if(r)throw r.error}}return o},t.prototype.invalidateBBox=function(){this.bboxComputed&&(this.bboxComputed=!1,this.parent&&this.parent.invalidateBBox())},t.prototype.copySkewIC=function(e){var t=this.childNodes[0];(null==t?void 0:t.bbox.sk)&&(e.sk=t.bbox.sk),(null==t?void 0:t.bbox.dx)&&(e.dx=t.bbox.dx);var n=this.childNodes[this.childNodes.length-1];(null==n?void 0:n.bbox.ic)&&(e.ic=n.bbox.ic,e.w+=e.ic)},t.prototype.getStyles=function(){var e=this.node.attributes.getExplicit("style");if(e)for(var n=this.styles=new Styles_js_1$1.Styles(e),r=0,i=t.removeStyles.length;r<i;r++){var o=t.removeStyles[r];n.get(o)&&(this.removedStyles||(this.removedStyles={}),this.removedStyles[o]=n.get(o),n.set(o,""))}},t.prototype.getVariant=function(){if(this.node.isToken){var e=this.node.attributes,n=e.get("mathvariant");if(!e.getExplicit("mathvariant")){var r=e.getList("fontfamily","fontweight","fontstyle");if(this.removedStyles){var i=this.removedStyles;i.fontFamily&&(r.family=i.fontFamily),i.fontWeight&&(r.weight=i.fontWeight),i.fontStyle&&(r.style=i.fontStyle)}r.fontfamily&&(r.family=r.fontfamily),r.fontweight&&(r.weight=r.fontweight),r.fontstyle&&(r.style=r.fontstyle),r.weight&&r.weight.match(/^\d+$/)&&(r.weight=parseInt(r.weight)>600?"bold":"normal"),r.family?n=this.explicitVariant(r.family,r.weight,r.style):(this.node.getProperty("variantForm")&&(n="-tex-variant"),n=(t.BOLDVARIANTS[r.weight]||{})[n]||n,n=(t.ITALICVARIANTS[r.style]||{})[n]||n)}this.variant=n}},t.prototype.explicitVariant=function(e,t,n){var r=this.styles;return r||(r=this.styles=new Styles_js_1$1.Styles),r.set("fontFamily",e),t&&r.set("fontWeight",t),n&&r.set("fontStyle",n),"-explicitFont"},t.prototype.getScale=function(){var e=1,t=this.parent,n=t?t.bbox.scale:1,r=this.node.attributes,i=Math.min(r.get("scriptlevel"),2),o=r.get("fontsize"),a=this.node.isToken||this.node.isKind("mstyle")?r.get("mathsize"):r.getInherited("mathsize");if(0!==i){e=Math.pow(r.get("scriptsizemultiplier"),i);var s=this.length2em(r.get("scriptminsize"),.8,1);e<s&&(e=s)}this.removedStyles&&this.removedStyles.fontSize&&!o&&(o=this.removedStyles.fontSize),o&&!r.getExplicit("mathsize")&&(a=o),"1"!==a&&(e*=this.length2em(a,1,1)),this.bbox.scale=e,this.bbox.rscale=e/n},t.prototype.getSpace=function(){var e=this.isTopEmbellished(),t=this.node.hasSpacingAttributes();this.jax.options.mathmlSpacing||t?e&&this.getMathMLSpacing():this.getTeXSpacing(e,t)},t.prototype.getMathMLSpacing=function(){var e=this.node.coreMO(),t=e.coreParent(),n=t.parent;if(n&&n.isKind("mrow")&&1!==n.childNodes.length){var r=e.attributes,i=r.get("scriptlevel")>0;this.bbox.L=r.isSet("lspace")?Math.max(0,this.length2em(r.get("lspace"))):MathMLSpace(i,e.lspace),this.bbox.R=r.isSet("rspace")?Math.max(0,this.length2em(r.get("rspace"))):MathMLSpace(i,e.rspace);var o=n.childIndex(t);if(0!==o){var a=n.childNodes[o-1];if(a.isEmbellished){var s=this.jax.nodeMap.get(a).getBBox();s.R&&(this.bbox.L=Math.max(0,this.bbox.L-s.R))}}}},t.prototype.getTeXSpacing=function(e,t){if(!t){var n=this.node.texSpacing();n&&(this.bbox.L=this.length2em(n))}if(e||t){var r=this.node.coreMO().attributes;r.isSet("lspace")&&(this.bbox.L=Math.max(0,this.length2em(r.get("lspace")))),r.isSet("rspace")&&(this.bbox.R=Math.max(0,this.length2em(r.get("rspace"))))}},t.prototype.isTopEmbellished=function(){return this.node.isEmbellished&&!(this.node.parent&&this.node.parent.isEmbellished)},t.prototype.core=function(){return this.jax.nodeMap.get(this.node.core())},t.prototype.coreMO=function(){return this.jax.nodeMap.get(this.node.coreMO())},t.prototype.getText=function(){var e,t,n="";if(this.node.isToken)try{for(var r=__values$p(this.node.childNodes),i=r.next();!i.done;i=r.next()){var o=i.value;o instanceof MmlNode_js_1$D.TextNode&&(n+=o.getText())}}catch(t){e={error:t}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}return n},t.prototype.canStretch=function(e){if(this.stretch=FontData_js_1$n.NOSTRETCH,this.node.isEmbellished){var t=this.core();t&&t.node!==this.node&&t.canStretch(e)&&(this.stretch=t.stretch)}return 0!==this.stretch.dir},t.prototype.getAlignShift=function(){var e,t=(e=this.node.attributes).getList.apply(e,__spreadArray$i([],__read$p(MmlNode_js_1$D.indentAttributes),!1)),n=t.indentalign,r=t.indentshift,i=t.indentalignfirst,o=t.indentshiftfirst;return"indentalign"!==i&&(n=i),"auto"===n&&(n=this.jax.options.displayAlign),"indentshift"!==o&&(r=o),"auto"===r&&(r=this.jax.options.displayIndent,"right"!==n||r.match(/^\s*0[a-z]*\s*$/)||(r=("-"+r.trim()).replace(/^--/,""))),[n,this.length2em(r,this.metrics.containerWidth)]},t.prototype.getAlignX=function(e,t,n){return"right"===n?e-(t.w+t.R)*t.rscale:"left"===n?t.L*t.rscale:(e-t.w*t.rscale)/2},t.prototype.getAlignY=function(e,t,n,r,i){return"top"===i?e-n:"bottom"===i?r-t:"center"===i?(e-n-(t-r))/2:0},t.prototype.getWrapWidth=function(e){return this.childNodes[e].getBBox().w},t.prototype.getChildAlign=function(e){return"left"},t.prototype.percent=function(e){return LENGTHS.percent(e)},t.prototype.em=function(e){return LENGTHS.em(e)},t.prototype.px=function(e,t){return void 0===t&&(t=-LENGTHS.BIGDIMEN),LENGTHS.px(e,t,this.metrics.em)},t.prototype.length2em=function(e,t,n){return void 0===t&&(t=1),void 0===n&&(n=null),null===n&&(n=this.bbox.scale),LENGTHS.length2em(e,t,n,this.jax.pxPerEm)},t.prototype.unicodeChars=function(e,t){void 0===t&&(t=this.variant);var n=(0,string_js_1$5.unicodeChars)(e),r=this.font.getVariant(t);if(r&&r.chars){var i=r.chars;n=n.map((function(e){return((i[e]||[])[3]||{}).smp||e}))}return n},t.prototype.remapChars=function(e){return e},t.prototype.mmlText=function(e){return this.node.factory.create("text").setText(e)},t.prototype.mmlNode=function(e,t,n){return void 0===t&&(t={}),void 0===n&&(n=[]),this.node.factory.create(e,t,n)},t.prototype.createMo=function(e){var t=this.node.factory,n=t.create("text").setText(e),r=t.create("mo",{stretchy:!0},[n]);r.inheritAttributesFrom(this.node);var i=this.wrap(r);return i.parent=this,i},t.prototype.getVariantChar=function(e,t){var n=this.font.getChar(e,t)||[0,0,0,{unknown:!0}];return 3===n.length&&(n[3]={}),n},t.kind="unknown",t.styles={},t.removeStyles=["fontSize","fontFamily","fontWeight","fontStyle","fontVariant","font"],t.skipAttributes={fontfamily:!0,fontsize:!0,fontweight:!0,fontstyle:!0,color:!0,background:!0,class:!0,href:!0,style:!0,xmlns:!0},t.BOLDVARIANTS={bold:{normal:"bold",italic:"bold-italic",fraktur:"bold-fraktur",script:"bold-script","sans-serif":"bold-sans-serif","sans-serif-italic":"sans-serif-bold-italic"},normal:{bold:"normal","bold-italic":"italic","bold-fraktur":"fraktur","bold-script":"script","bold-sans-serif":"sans-serif","sans-serif-bold-italic":"sans-serif-italic"}},t.ITALICVARIANTS={italic:{normal:"italic",bold:"bold-italic","sans-serif":"sans-serif-italic","bold-sans-serif":"sans-serif-bold-italic"},normal:{italic:"normal","bold-italic":"bold","sans-serif-italic":"sans-serif","sans-serif-bold-italic":"bold-sans-serif"}},t}(Wrapper_js_1.AbstractWrapper);function requireWrapper(){if(hasRequiredWrapper)return Wrapper$2;hasRequiredWrapper=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),n=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},r=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(Wrapper$2,"__esModule",{value:!0}),Wrapper$2.SVGWrapper=void 0;var i=BBox$1,o=Wrapper$1,a=requireSvg(),s=function(e){function o(){var t=null!==e&&e.apply(this,arguments)||this;return t.element=null,t.dx=0,t}return t(o,e),o.prototype.toSVG=function(e){this.addChildren(this.standardSVGnode(e))},o.prototype.addChildren=function(e){var t,r,i=0;try{for(var o=n(this.childNodes),a=o.next();!a.done;a=o.next()){var s=a.value;s.toSVG(e);var l=s.getOuterBBox();s.element&&s.place(i+l.L*l.rscale,0),i+=(l.L+l.w+l.R)*l.rscale}}catch(e){t={error:e}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}},o.prototype.standardSVGnode=function(e){var t=this.createSVGnode(e);return this.handleStyles(),this.handleScale(),this.handleBorder(),this.handleColor(),this.handleAttributes(),t},o.prototype.createSVGnode=function(e){this.element=this.svg("g",{"data-mml-node":this.node.kind});var t=this.node.attributes.get("href");if(t){e=this.adaptor.append(e,this.svg("a",{href:t}));var n=this.getOuterBBox(),r=n.h,i=n.d,o=n.w;this.adaptor.append(this.element,this.svg("rect",{"data-hitbox":!0,fill:"none",stroke:"none","pointer-events":"all",width:this.fixed(o),height:this.fixed(r+i),y:this.fixed(-i)}))}return this.adaptor.append(e,this.element),this.element},o.prototype.handleStyles=function(){var e=this;if(this.styles){var t=this.styles.cssText;t&&this.adaptor.setAttribute(this.element,"style",t),i.BBox.StyleAdjust.forEach((function(t){var n=r(t,3),i=n[0];if(0===n[2]){var o=e.styles.get(i);o&&(e.dx+=e.length2em(o,1,e.bbox.rscale))}}))}},o.prototype.handleScale=function(){if(1!==this.bbox.rscale){var e="scale("+this.fixed(this.bbox.rscale/1e3,3)+")";this.adaptor.setAttribute(this.element,"transform",e)}},o.prototype.handleColor=function(){var e,t=this.adaptor,n=this.node.attributes,r=n.getExplicit("mathcolor"),i=n.getExplicit("color"),o=n.getExplicit("mathbackground"),a=n.getExplicit("background"),s=(null===(e=this.styles)||void 0===e?void 0:e.get("background-color"))||"";if((r||i)&&(t.setAttribute(this.element,"fill",r||i),t.setAttribute(this.element,"stroke",r||i)),o||a||s){var l=this.getOuterBBox(),c=l.h,T=l.d,Q=l.w,d=this.svg("rect",{fill:o||a||s,x:this.fixed(-this.dx),y:this.fixed(-T),width:this.fixed(Q),height:this.fixed(c+T),"data-bgcolor":!0}),u=t.firstChild(this.element);u?t.insert(d,u):t.append(this.element,d)}},o.prototype.handleBorder=function(){var e,t,i,a;if(this.styles){var s=Array(4).fill(0),l=Array(4),c=Array(4);try{for(var T=n([["Top",0],["Right",1],["Bottom",2],["Left",3]]),Q=T.next();!Q.done;Q=T.next()){var d=r(Q.value,2),u=d[0],p=d[1],h="border"+u,m=this.styles.get(h+"Width");m&&(s[p]=Math.max(0,this.length2em(m,1,this.bbox.rscale)),l[p]=this.styles.get(h+"Style")||"solid",c[p]=this.styles.get(h+"Color")||"currentColor")}}catch(t){e={error:t}}finally{try{Q&&!Q.done&&(t=T.return)&&t.call(T)}finally{if(e)throw e.error}}var f=o.borderFuzz,g=this.getOuterBBox(),b=r([g.h+f,g.d+f,g.w+f],3),y=b[0],L=b[1],v=b[2],w=[v,y],E=[-f,y],_=[v,-L],M=[-f,-L],x=[v-s[1],y-s[0]],H=[-f+s[3],y-s[0]],S=[v-s[1],-L+s[2]],A=[-f+s[3],-L+s[2]],C=[[E,w,x,H],[_,w,x,S],[M,_,S,A],[M,E,H,A]],O=this.adaptor.firstChild(this.element);try{for(var I=n([0,1,2,3]),V=I.next();!V.done;V=I.next())if(s[p=V.value]){var k=C[p];"dashed"===l[p]||"dotted"===l[p]?this.addBorderBroken(k,c[p],l[p],s[p],p):this.addBorderSolid(k,c[p],O)}}catch(e){i={error:e}}finally{try{V&&!V.done&&(a=I.return)&&a.call(I)}finally{if(i)throw i.error}}}},o.prototype.addBorderSolid=function(e,t,n){var i=this,o=this.svg("polygon",{points:e.map((function(e){var t=r(e,2),n=t[0],o=t[1];return"".concat(i.fixed(n-i.dx),",").concat(i.fixed(o))})).join(" "),stroke:"none",fill:t});n?this.adaptor.insert(o,n):this.adaptor.append(this.element,o)},o.prototype.addBorderBroken=function(e,t,n,i,o){var a="dotted"===n,s=i/2,l=r([[s,-s,-s,-s],[-s,s,-s,-s],[s,s,-s,s],[s,s,s,-s]][o],4),c=l[0],T=l[1],Q=l[2],d=l[3],u=r(e,2),p=u[0],h=u[1],m=p[0]+c-this.dx,f=p[1]+T,g=h[0]+Q-this.dx,b=h[1]+d,y=Math.abs(o%2?b-f:g-m),L=a?Math.ceil(y/(2*i)):Math.ceil((y-i)/(4*i)),v=y/(4*L+1),w=this.svg("line",{x1:this.fixed(m),y1:this.fixed(f),x2:this.fixed(g),y2:this.fixed(b),"stroke-width":this.fixed(i),stroke:t,"stroke-linecap":a?"round":"square","stroke-dasharray":a?[1,this.fixed(y/L-.002)].join(" "):[this.fixed(v),this.fixed(3*v)].join(" ")}),E=this.adaptor,_=E.firstChild(this.element);_?E.insert(w,_):E.append(this.element,w)},o.prototype.handleAttributes=function(){var e,t,r,i,a=this.node.attributes,s=a.getAllDefaults(),l=o.skipAttributes;try{for(var c=n(a.getExplicitNames()),T=c.next();!T.done;T=c.next()){var Q=T.value;!1!==l[Q]&&(Q in s||l[Q]||this.adaptor.hasAttribute(this.element,Q))||this.adaptor.setAttribute(this.element,Q,a.getExplicit(Q))}}catch(t){e={error:t}}finally{try{T&&!T.done&&(t=c.return)&&t.call(c)}finally{if(e)throw e.error}}if(a.get("class")){var d=a.get("class").trim().split(/ +/);try{for(var u=n(d),p=u.next();!p.done;p=u.next()){var h=p.value;this.adaptor.addClass(this.element,h)}}catch(e){r={error:e}}finally{try{p&&!p.done&&(i=u.return)&&i.call(u)}finally{if(r)throw r.error}}}},o.prototype.place=function(e,t,n){if(void 0===n&&(n=null),(e+=this.dx)||t){n||(n=this.element,t=this.handleId(t));var r="translate(".concat(this.fixed(e),",").concat(this.fixed(t),")"),i=this.adaptor.getAttribute(n,"transform")||"";this.adaptor.setAttribute(n,"transform",r+(i?" "+i:""))}},o.prototype.handleId=function(e){if(!this.node.attributes||!this.node.attributes.get("id"))return e;var t=this.adaptor,n=this.getBBox().h,r=t.childNodes(this.element);r.forEach((function(e){return t.remove(e)}));var i=this.svg("g",{"data-idbox":!0,transform:"translate(0,".concat(this.fixed(-n),")")},r);return t.append(this.element,this.svg("text",{"data-id-align":!0},[this.text("")])),t.append(this.element,i),e+n},o.prototype.firstChild=function(){var e=this.adaptor,t=e.firstChild(this.element);return t&&"text"===e.kind(t)&&e.getAttribute(t,"data-id-align")&&(t=e.firstChild(e.next(t))),t&&"rect"===e.kind(t)&&e.getAttribute(t,"data-hitbox")&&(t=e.next(t)),t},o.prototype.placeChar=function(e,t,i,o,a){var s,l;void 0===a&&(a=null),null===a&&(a=this.variant);var c=e.toString(16).toUpperCase(),T=r(this.getVariantChar(a,e),4),Q=T[2],d=T[3];if("p"in d){var u=d.p?"M"+d.p+"Z":"";this.place(t,i,this.adaptor.append(o,this.charNode(a,c,u)))}else if("c"in d){var p=this.adaptor.append(o,this.svg("g",{"data-c":c}));this.place(t,i,p),t=0;try{for(var h=n(this.unicodeChars(d.c,a)),m=h.next();!m.done;m=h.next()){var f=m.value;t+=this.placeChar(f,t,i,p,a)}}catch(e){s={error:e}}finally{try{m&&!m.done&&(l=h.return)&&l.call(h)}finally{if(s)throw s.error}}}else if(d.unknown){var g=String.fromCodePoint(e),b=this.adaptor.append(o,this.jax.unknownText(g,a));return this.place(t,i,b),this.jax.measureTextNodeWithCache(b,g,a).w}return Q},o.prototype.charNode=function(e,t,n){return"none"!==this.jax.options.fontCache?this.useNode(e,t,n):this.pathNode(t,n)},o.prototype.pathNode=function(e,t){return this.svg("path",{"data-c":e,d:t})},o.prototype.useNode=function(e,t,n){var r=this.svg("use",{"data-c":t}),i="#"+this.jax.fontCache.cachePath(e,t,n);return this.adaptor.setAttribute(r,"href",i,a.XLINKNS),r},o.prototype.drawBBox=function(){var e=this.getBBox(),t=e.w,n=e.h,r=e.d,i=this.svg("g",{style:{opacity:.25}},[this.svg("rect",{fill:"red",height:this.fixed(n),width:this.fixed(t)}),this.svg("rect",{fill:"green",height:this.fixed(r),width:this.fixed(t),y:this.fixed(-r)})]),o=this.element||this.parent.element;this.adaptor.append(o,i)},o.prototype.html=function(e,t,n){return void 0===t&&(t={}),void 0===n&&(n=[]),this.jax.html(e,t,n)},o.prototype.svg=function(e,t,n){return void 0===t&&(t={}),void 0===n&&(n=[]),this.jax.svg(e,t,n)},o.prototype.text=function(e){return this.jax.text(e)},o.prototype.fixed=function(e,t){return void 0===t&&(t=1),this.jax.fixed(1e3*e,t)},o.kind="unknown",o.borderFuzz=.005,o}(o.CommonWrapper);return Wrapper$2.SVGWrapper=s,Wrapper$2}Wrapper$1.CommonWrapper=CommonWrapper;var math$2={},math$1={},__extends$1c=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();function CommonMathMixin(e){return function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$1c(t,e),t.prototype.getWrapWidth=function(e){return this.parent?this.getBBox().w:this.metrics.containerWidth/this.jax.pxPerEm},t}(e)}Object.defineProperty(math$1,"__esModule",{value:!0}),math$1.CommonMathMixin=void 0,math$1.CommonMathMixin=CommonMathMixin;var math={},__extends$1b=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$y=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$y=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$y.apply(this,arguments)};Object.defineProperty(math,"__esModule",{value:!0}),math.MmlMath=void 0;var hasRequiredMath,MmlNode_js_1$C=MmlNode,MmlMath=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$1b(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"math"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"linebreakContainer",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.setChildInheritedAttributes=function(t,n,r,i){"display"===this.attributes.get("mode")&&this.attributes.setInherited("display","block"),t=this.addInheritedAttributes(t,this.attributes.getAllAttributes()),n=!!this.attributes.get("displaystyle")||!this.attributes.get("displaystyle")&&"block"===this.attributes.get("display"),this.attributes.setInherited("displaystyle",n),r=this.attributes.get("scriptlevel")||this.constructor.defaults.scriptlevel,e.prototype.setChildInheritedAttributes.call(this,t,n,r,i)},t.defaults=__assign$y(__assign$y({},MmlNode_js_1$C.AbstractMmlLayoutNode.defaults),{mathvariant:"normal",mathsize:"normal",mathcolor:"",mathbackground:"transparent",dir:"ltr",scriptlevel:0,displaystyle:!1,display:"inline",maxwidth:"",overflow:"linebreak",altimg:"","altimg-width":"","altimg-height":"","altimg-valign":"",alttext:"",cdgroup:"",scriptsizemultiplier:1/Math.sqrt(2),scriptminsize:"8px",infixlinebreakstyle:"before",lineleading:"1ex",linebreakmultchar:"⁢",indentshift:"auto",indentalign:"auto",indenttarget:"",indentalignfirst:"indentalign",indentshiftfirst:"indentshift",indentalignlast:"indentalign",indentshiftlast:"indentshift"}),t}(MmlNode_js_1$C.AbstractMmlLayoutNode);function requireMath(){if(hasRequiredMath)return math$2;hasRequiredMath=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),n=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},r=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(math$2,"__esModule",{value:!0}),math$2.SVGmath=void 0;var i=requireWrapper(),o=math,a=BBox$1,s=function(e){function i(){return null!==e&&e.apply(this,arguments)||this}return t(i,e),i.prototype.toSVG=function(t){e.prototype.toSVG.call(this,t);var n=this.adaptor;"block"===this.node.attributes.get("display")&&(n.setAttribute(this.jax.container,"display","true"),this.handleDisplay()),this.jax.document.options.internalSpeechTitles&&this.handleSpeech()},i.prototype.handleDisplay=function(){var e=n(this.getAlignShift(),2),t=e[0],r=e[1];if("center"!==t&&this.adaptor.setAttribute(this.jax.container,"justify",t),this.bbox.pwidth===a.BBox.fullWidth){if(this.adaptor.setAttribute(this.jax.container,"width","full"),this.jax.table){var i=this.jax.table.getOuterBBox(),o=i.L,s=i.w,l=i.R;"right"===t?l=Math.max(l||-r,-r):"left"===t?o=Math.max(o||r,r):"center"===t&&(s+=2*Math.abs(r)),this.jax.minwidth=Math.max(0,o+s+l)}}else this.jax.shift=r},i.prototype.handleSpeech=function(){var e,t,n=this.adaptor,i=this.node.attributes,o=i.get("aria-label")||i.get("data-semantic-speech");if(o){var a=this.getTitleID(),s=this.svg("title",{id:a},[this.text(o)]);n.insert(s,n.firstChild(this.element)),n.setAttribute(this.element,"aria-labeledby",a),n.removeAttribute(this.element,"aria-label");try{for(var l=r(this.childNodes[0].childNodes),c=l.next();!c.done;c=l.next()){var T=c.value;n.setAttribute(T.element,"aria-hidden","true")}}catch(t){e={error:t}}finally{try{c&&!c.done&&(t=l.return)&&t.call(l)}finally{if(e)throw e.error}}}},i.prototype.getTitleID=function(){return"mjx-svg-title-"+String(this.jax.options.titleID++)},i.prototype.setChildPWidths=function(t,n,r){return void 0===n&&(n=null),e.prototype.setChildPWidths.call(this,t,this.parent?n:this.metrics.containerWidth/this.jax.pxPerEm,!1)},i.kind=o.MmlMath.prototype.kind,i.styles={'mjx-container[jax="SVG"][display="true"]':{display:"block","text-align":"center",margin:"1em 0"},'mjx-container[jax="SVG"][display="true"][width="full"]':{display:"flex"},'mjx-container[jax="SVG"][justify="left"]':{"text-align":"left"},'mjx-container[jax="SVG"][justify="right"]':{"text-align":"right"}},i}((0,math$1.CommonMathMixin)(i.SVGWrapper));return math$2.SVGmath=s,math$2}math.MmlMath=MmlMath;var mrow$2={},mrow$1={},__extends$1a=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__read$o=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$h=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))},__values$o=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(mrow$1,"__esModule",{value:!0}),mrow$1.CommonInferredMrowMixin=mrow$1.CommonMrowMixin=void 0;var BBox_js_1$3=BBox$1;function CommonMrowMixin(e){return function(e){function t(){for(var t,n,r=[],i=0;i<arguments.length;i++)r[i]=arguments[i];var o=e.apply(this,__spreadArray$h([],__read$o(r),!1))||this;o.stretchChildren();try{for(var a=__values$o(o.childNodes),s=a.next();!s.done;s=a.next())if(s.value.bbox.pwidth){o.bbox.pwidth=BBox_js_1$3.BBox.fullWidth;break}}catch(e){t={error:e}}finally{try{s&&!s.done&&(n=a.return)&&n.call(a)}finally{if(t)throw t.error}}return o}return __extends$1a(t,e),Object.defineProperty(t.prototype,"fixesPWidth",{get:function(){return!1},enumerable:!1,configurable:!0}),t.prototype.stretchChildren=function(){var e,t,n,r,i,o,a=[];try{for(var s=__values$o(this.childNodes),l=s.next();!l.done;l=s.next())(w=l.value).canStretch(1)&&a.push(w)}catch(t){e={error:t}}finally{try{l&&!l.done&&(t=s.return)&&t.call(s)}finally{if(e)throw e.error}}var c=a.length,T=this.childNodes.length;if(c&&T>1){var Q=0,d=0,u=c>1&&c===T;try{for(var p=__values$o(this.childNodes),h=p.next();!h.done;h=p.next()){var m=0===(w=h.value).stretch.dir;if(u||m){var f=w.getOuterBBox(m),g=f.h,b=f.d,y=f.rscale;(g*=y)>Q&&(Q=g),(b*=y)>d&&(d=b)}}}catch(e){n={error:e}}finally{try{h&&!h.done&&(r=p.return)&&r.call(p)}finally{if(n)throw n.error}}try{for(var L=__values$o(a),v=L.next();!v.done;v=L.next()){var w;(w=v.value).coreMO().getStretchedVariant([Q,d])}}catch(e){i={error:e}}finally{try{v&&!v.done&&(o=L.return)&&o.call(L)}finally{if(i)throw i.error}}}},t}(e)}function CommonInferredMrowMixin(e){return function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$1a(t,e),t.prototype.getScale=function(){this.bbox.scale=this.parent.bbox.scale,this.bbox.rscale=1},t}(e)}mrow$1.CommonMrowMixin=CommonMrowMixin,mrow$1.CommonInferredMrowMixin=CommonInferredMrowMixin;var mrow={},__extends$19=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$x=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$x=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$x.apply(this,arguments)},__values$n=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(mrow,"__esModule",{value:!0}),mrow.MmlInferredMrow=mrow.MmlMrow=void 0;var MmlNode_js_1$B=MmlNode,MmlMrow=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._core=null,t}return __extends$19(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"mrow"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isSpacelike",{get:function(){var e,t;try{for(var n=__values$n(this.childNodes),r=n.next();!r.done;r=n.next())if(!r.value.isSpacelike)return!1}catch(t){e={error:t}}finally{try{r&&!r.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}return!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isEmbellished",{get:function(){var e,t,n=!1,r=0;try{for(var i=__values$n(this.childNodes),o=i.next();!o.done;o=i.next()){var a=o.value;if(a)if(a.isEmbellished){if(n)return!1;n=!0,this._core=r}else if(!a.isSpacelike)return!1;r++}}catch(t){e={error:t}}finally{try{o&&!o.done&&(t=i.return)&&t.call(i)}finally{if(e)throw e.error}}return n},enumerable:!1,configurable:!0}),t.prototype.core=function(){return this.isEmbellished&&null!=this._core?this.childNodes[this._core]:this},t.prototype.coreMO=function(){return this.isEmbellished&&null!=this._core?this.childNodes[this._core].coreMO():this},t.prototype.nonSpaceLength=function(){var e,t,n=0;try{for(var r=__values$n(this.childNodes),i=r.next();!i.done;i=r.next()){var o=i.value;o&&!o.isSpacelike&&n++}}catch(t){e={error:t}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}return n},t.prototype.firstNonSpace=function(){var e,t;try{for(var n=__values$n(this.childNodes),r=n.next();!r.done;r=n.next()){var i=r.value;if(i&&!i.isSpacelike)return i}}catch(t){e={error:t}}finally{try{r&&!r.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}return null},t.prototype.lastNonSpace=function(){for(var e=this.childNodes.length;--e>=0;){var t=this.childNodes[e];if(t&&!t.isSpacelike)return t}return null},t.prototype.setTeXclass=function(e){var t,n,r,i;if(null!=this.getProperty("open")||null!=this.getProperty("close")){this.getPrevClass(e),e=null;try{for(var o=__values$n(this.childNodes),a=o.next();!a.done;a=o.next())e=a.value.setTeXclass(e)}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}null==this.texClass&&(this.texClass=MmlNode_js_1$B.TEXCLASS.INNER)}else{try{for(var s=__values$n(this.childNodes),l=s.next();!l.done;l=s.next())e=l.value.setTeXclass(e)}catch(e){r={error:e}}finally{try{l&&!l.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}this.childNodes[0]&&this.updateTeXclass(this.childNodes[0])}return e},t.defaults=__assign$x({},MmlNode_js_1$B.AbstractMmlNode.defaults),t}(MmlNode_js_1$B.AbstractMmlNode);mrow.MmlMrow=MmlMrow;var hasRequiredMrow,MmlInferredMrow=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$19(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"inferredMrow"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isInferred",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"notParent",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.toString=function(){return"["+this.childNodes.join(",")+"]"},t.defaults=MmlMrow.defaults,t}(MmlMrow);function requireMrow(){if(hasRequiredMrow)return mrow$2;hasRequiredMrow=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)});Object.defineProperty(mrow$2,"__esModule",{value:!0}),mrow$2.SVGinferredMrow=mrow$2.SVGmrow=void 0;var n=requireWrapper(),r=mrow$1,i=mrow,o=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return t(n,e),n.prototype.toSVG=function(e){var t=this.node.isInferred?this.element=e:this.standardSVGnode(e);this.addChildren(t)},n.kind=i.MmlMrow.prototype.kind,n}((0,mrow$1.CommonMrowMixin)(n.SVGWrapper));mrow$2.SVGmrow=o;var a=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return t(n,e),n.kind=i.MmlInferredMrow.prototype.kind,n}((0,r.CommonInferredMrowMixin)(o));return mrow$2.SVGinferredMrow=a,mrow$2}mrow.MmlInferredMrow=MmlInferredMrow;var mi$2={},mi$1={},__extends$18=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();function CommonMiMixin(e){return function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$18(t,e),t.prototype.computeBBox=function(t,n){e.prototype.computeBBox.call(this,t),this.copySkewIC(t)},t}(e)}Object.defineProperty(mi$1,"__esModule",{value:!0}),mi$1.CommonMiMixin=void 0,mi$1.CommonMiMixin=CommonMiMixin;var mi={},__extends$17=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$w=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$w=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$w.apply(this,arguments)};Object.defineProperty(mi,"__esModule",{value:!0}),mi.MmlMi=void 0;var hasRequiredMi,MmlNode_js_1$A=MmlNode,MmlMi=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.texclass=MmlNode_js_1$A.TEXCLASS.ORD,t}return __extends$17(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"mi"},enumerable:!1,configurable:!0}),t.prototype.setInheritedAttributes=function(n,r,i,o){void 0===n&&(n={}),void 0===r&&(r=!1),void 0===i&&(i=0),void 0===o&&(o=!1),e.prototype.setInheritedAttributes.call(this,n,r,i,o),this.getText().match(t.singleCharacter)&&!n.mathvariant&&this.attributes.setInherited("mathvariant","italic")},t.prototype.setTeXclass=function(e){this.getPrevClass(e);var n=this.getText();return n.length>1&&n.match(t.operatorName)&&"normal"===this.attributes.get("mathvariant")&&void 0===this.getProperty("autoOP")&&void 0===this.getProperty("texClass")&&(this.texClass=MmlNode_js_1$A.TEXCLASS.OP,this.setProperty("autoOP",!0)),this},t.defaults=__assign$w({},MmlNode_js_1$A.AbstractMmlTokenNode.defaults),t.operatorName=/^[a-z][a-z0-9]*$/i,t.singleCharacter=/^[\uD800-\uDBFF]?.[\u0300-\u036F\u1AB0-\u1ABE\u1DC0-\u1DFF\u20D0-\u20EF]*$/,t}(MmlNode_js_1$A.AbstractMmlTokenNode);function requireMi(){if(hasRequiredMi)return mi$2;hasRequiredMi=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)});Object.defineProperty(mi$2,"__esModule",{value:!0}),mi$2.SVGmi=void 0;var n=requireWrapper(),r=mi,i=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return t(n,e),n.kind=r.MmlMi.prototype.kind,n}((0,mi$1.CommonMiMixin)(n.SVGWrapper));return mi$2.SVGmi=i,mi$2}mi.MmlMi=MmlMi;var _a$8,mo$1={},mo={},__extends$16=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$v=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$v=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$v.apply(this,arguments)},__read$n=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$g=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))},__values$m=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(mo,"__esModule",{value:!0}),mo.CommonMoMixin=mo.DirectionVH=void 0;var hasRequiredMo,BBox_js_1$2=BBox$1,string_js_1$4=string,FontData_js_1$m=FontData$2;function CommonMoMixin(e){return function(e){function t(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=e.apply(this,__spreadArray$g([],__read$n(t),!1))||this;return r.size=null,r.isAccent=r.node.isAccent,r}return __extends$16(t,e),t.prototype.computeBBox=function(e,t){if(this.protoBBox(e),this.node.attributes.get("symmetric")&&2!==this.stretch.dir){var n=this.getCenterOffset(e);e.h+=n,e.d-=n}this.node.getProperty("mathaccent")&&(0===this.stretch.dir||this.size>=0)&&(e.w=0)},t.prototype.protoBBox=function(t){var n=0!==this.stretch.dir;n&&null===this.size&&this.getStretchedVariant([0]),n&&this.size<0||(e.prototype.computeBBox.call(this,t),this.copySkewIC(t))},t.prototype.getAccentOffset=function(){var e=BBox_js_1$2.BBox.empty();return this.protoBBox(e),-e.w/2},t.prototype.getCenterOffset=function(t){return void 0===t&&(t=null),t||(t=BBox_js_1$2.BBox.empty(),e.prototype.computeBBox.call(this,t)),(t.h+t.d)/2+this.font.params.axis_height-t.h},t.prototype.getVariant=function(){this.node.attributes.get("largeop")?this.variant=this.node.attributes.get("displaystyle")?"-largeop":"-smallop":this.node.attributes.getExplicit("mathvariant")||!1!==this.node.getProperty("pseudoscript")?e.prototype.getVariant.call(this):this.variant="-tex-variant"},t.prototype.canStretch=function(e){if(0!==this.stretch.dir)return this.stretch.dir===e;if(!this.node.attributes.get("stretchy"))return!1;var t=this.getText();if(1!==Array.from(t).length)return!1;var n=this.font.getDelimiter(t.codePointAt(0));return this.stretch=n&&n.dir===e?n:FontData_js_1$m.NOSTRETCH,0!==this.stretch.dir},t.prototype.getStretchedVariant=function(e,t){var n,r;if(void 0===t&&(t=!1),0!==this.stretch.dir){var i=this.getWH(e),o=this.getSize("minsize",0),a=this.getSize("maxsize",1/0),s=this.node.getProperty("mathaccent");i=Math.max(o,Math.min(a,i));var l=this.font.params.delimiterfactor/1e3,c=this.font.params.delimitershortfall,T=o||t?i:s?Math.min(i/l,i+c):Math.max(i*l,i-c),Q=this.stretch,d=Q.c||this.getText().codePointAt(0),u=0;if(Q.sizes)try{for(var p=__values$m(Q.sizes),h=p.next();!h.done;h=p.next()){if(h.value>=T)return s&&u&&u--,this.variant=this.font.getSizeVariant(d,u),this.size=u,void(Q.schar&&Q.schar[u]&&(this.stretch=__assign$v(__assign$v({},this.stretch),{c:Q.schar[u]})));u++}}catch(e){n={error:e}}finally{try{h&&!h.done&&(r=p.return)&&r.call(p)}finally{if(n)throw n.error}}Q.stretch?(this.size=-1,this.invalidateBBox(),this.getStretchBBox(e,this.checkExtendedHeight(i,Q),Q)):(this.variant=this.font.getSizeVariant(d,u-1),this.size=u-1)}},t.prototype.getSize=function(e,t){var n=this.node.attributes;return n.isSet(e)&&(t=this.length2em(n.get(e),1,1)),t},t.prototype.getWH=function(e){if(0===e.length)return 0;if(1===e.length)return e[0];var t=__read$n(e,2),n=t[0],r=t[1],i=this.font.params.axis_height;return this.node.attributes.get("symmetric")?2*Math.max(n-i,r+i):n+r},t.prototype.getStretchBBox=function(e,t,n){var r;n.hasOwnProperty("min")&&n.min>t&&(t=n.min);var i=__read$n(n.HDW,3),o=i[0],a=i[1],s=i[2];1===this.stretch.dir?(o=(r=__read$n(this.getBaseline(e,t,n),2))[0],a=r[1]):s=t,this.bbox.h=o,this.bbox.d=a,this.bbox.w=s},t.prototype.getBaseline=function(e,t,n){var r=2===e.length&&e[0]+e[1]===t,i=this.node.attributes.get("symmetric"),o=__read$n(r?e:[t,0],2),a=o[0],s=o[1],l=__read$n([a+s,0],2),c=l[0],T=l[1];if(i){var Q=this.font.params.axis_height;r&&(c=2*Math.max(a-Q,s+Q)),T=c/2-Q}else if(r)T=s;else{var d=__read$n(n.HDW||[.75,.25],2),u=d[0],p=d[1];T=p*(c/(u+p))}return[c-T,T]},t.prototype.checkExtendedHeight=function(e,t){if(t.fullExt){var n=__read$n(t.fullExt,2),r=n[0],i=n[1];e=i+Math.ceil(Math.max(0,e-i)/r)*r}return e},t.prototype.remapChars=function(e){var t=this.node.getProperty("primes");if(t)return(0,string_js_1$4.unicodeChars)(t);if(1===e.length){var n=this.node.coreParent().parent,r=this.isAccent&&!n.isKind("mrow")?"accent":"mo",i=this.font.getRemappedChar(r,e[0]);i&&(e=this.unicodeChars(i,this.variant))}return e},t}(e)}function requireMo(){if(hasRequiredMo)return mo$1;hasRequiredMo=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),n=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},r=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(mo$1,"__esModule",{value:!0}),mo$1.SVGmo=void 0;var i=requireWrapper(),o=mo$2,a=function(e){function i(){return null!==e&&e.apply(this,arguments)||this}return t(i,e),i.prototype.toSVG=function(e){var t=this.node.attributes,n=t.get("symmetric")&&2!==this.stretch.dir,r=0!==this.stretch.dir;r&&null===this.size&&this.getStretchedVariant([]);var i=this.standardSVGnode(e);if(r&&this.size<0)this.stretchSVG();else{var o=n||t.get("largeop")?this.fixed(this.getCenterOffset()):"0",a=this.node.getProperty("mathaccent")?this.fixed(this.getAccentOffset()):"0";"0"===o&&"0"===a||this.adaptor.setAttribute(i,"transform","translate(".concat(a," ").concat(o,")")),this.addChildren(i)}},i.prototype.stretchSVG=function(){var e=this.stretch.stretch,t=this.getStretchVariants(),n=this.getBBox();1===this.stretch.dir?this.stretchVertical(e,t,n):this.stretchHorizontal(e,t,n)},i.prototype.getStretchVariants=function(){var e,t,r=this.stretch.c||this.getText().codePointAt(0),i=[];try{for(var o=n(this.stretch.stretch.keys()),a=o.next();!a.done;a=o.next()){var s=a.value;i[s]=this.font.getStretchVariant(r,s)}}catch(t){e={error:t}}finally{try{a&&!a.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}return i},i.prototype.stretchVertical=function(e,t,n){var i=n.h,o=n.d,a=n.w,s=this.addTop(e[0],t[0],i,a),l=this.addBot(e[2],t[2],o,a);if(4===e.length){var c=r(this.addMidV(e[3],t[3],a),2),T=c[0],Q=c[1];this.addExtV(e[1],t[1],i,0,s,T,a),this.addExtV(e[1],t[1],0,o,Q,l,a)}else this.addExtV(e[1],t[1],i,o,s,l,a)},i.prototype.stretchHorizontal=function(e,t,n){var i=n.w,o=this.addLeft(e[0],t[0]),a=this.addRight(e[2],t[2],i);if(4===e.length){var s=r(this.addMidH(e[3],t[3],i),2),l=s[0],c=s[1],T=i/2;this.addExtH(e[1],t[1],T,o,T-l),this.addExtH(e[1],t[1],T,c-T,a,T)}else this.addExtH(e[1],t[1],i,o,a)},i.prototype.getChar=function(e,t){var n=this.font.getChar(t,e)||[0,0,0,null];return[n[0],n[1],n[2],n[3]||{}]},i.prototype.addGlyph=function(e,t,n,r,i){return void 0===i&&(i=null),this.placeChar(e,n,r,i||this.element,t)},i.prototype.addTop=function(e,t,n,i){if(!e)return 0;var o=r(this.getChar(e,t),3),a=o[0],s=o[1],l=o[2];return this.addGlyph(e,t,(i-l)/2,n-a),a+s},i.prototype.addExtV=function(e,t,n,i,o,a,s){var l=this;if(e){o=Math.max(0,o-.1),a=Math.max(0,a-.1);var c=this.adaptor,T=r(this.getChar(e,t),3),Q=T[0],d=T[1],u=T[2],p=n+i-o-a,h=1.5*p/(Q+d),m=(h*(Q-d)-p)/2;if(!(p<=0)){var f=this.svg("svg",{width:this.fixed(u),height:this.fixed(p),y:this.fixed(a-i),x:this.fixed((s-u)/2),viewBox:[0,m,u,p].map((function(e){return l.fixed(e)})).join(" ")});this.addGlyph(e,t,0,0,f);var g=c.lastChild(f);c.setAttribute(g,"transform","scale(1,".concat(this.jax.fixed(h),")")),c.append(this.element,f)}}},i.prototype.addBot=function(e,t,n,i){if(!e)return 0;var o=r(this.getChar(e,t),3),a=o[0],s=o[1],l=o[2];return this.addGlyph(e,t,(i-l)/2,s-n),a+s},i.prototype.addMidV=function(e,t,n){if(!e)return[0,0];var i=r(this.getChar(e,t),3),o=i[0],a=i[1],s=i[2],l=(a-o)/2+this.font.params.axis_height;return this.addGlyph(e,t,(n-s)/2,l),[o+l,a-l]},i.prototype.addLeft=function(e,t){return e?this.addGlyph(e,t,0,0):0},i.prototype.addExtH=function(e,t,n,i,o,a){var s=this;if(void 0===a&&(a=0),e){o=Math.max(0,o-.1),i=Math.max(0,i-.1);var l=this.adaptor,c=r(this.getChar(e,t),3),T=c[0],Q=c[1],d=c[2],u=n-i-o,p=T+Q+.2,h=u/d*1.5,m=-(Q+.1);if(!(u<=0)){var f=this.svg("svg",{width:this.fixed(u),height:this.fixed(p),x:this.fixed(a+i),y:this.fixed(m),viewBox:[(h*d-u)/2,m,u,p].map((function(e){return s.fixed(e)})).join(" ")});this.addGlyph(e,t,0,0,f);var g=l.lastChild(f);l.setAttribute(g,"transform","scale("+this.jax.fixed(h)+",1)"),l.append(this.element,f)}}},i.prototype.addRight=function(e,t,n){if(!e)return 0;var r=this.getChar(e,t)[2];return this.addGlyph(e,t,n-r,0)},i.prototype.addMidH=function(e,t,n){if(!e)return[0,0];var r=this.getChar(e,t)[2];return this.addGlyph(e,t,(n-r)/2,0),[(n-r)/2,(n+r)/2]},i.kind=o.MmlMo.prototype.kind,i}((0,mo.CommonMoMixin)(i.SVGWrapper));return mo$1.SVGmo=a,mo$1}mo.DirectionVH=((_a$8={})[1]="v",_a$8[2]="h",_a$8),mo.CommonMoMixin=CommonMoMixin;var mn$2={},mn$1={},__extends$15=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();function CommonMnMixin(e){return function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$15(t,e),t.prototype.remapChars=function(e){if(e.length){var t=this.font.getRemappedChar("mn",e[0]);if(t){var n=this.unicodeChars(t,this.variant);1===n.length?e[0]=n[0]:e=n.concat(e.slice(1))}}return e},t}(e)}Object.defineProperty(mn$1,"__esModule",{value:!0}),mn$1.CommonMnMixin=void 0,mn$1.CommonMnMixin=CommonMnMixin;var mn={},__extends$14=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$u=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$u=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$u.apply(this,arguments)};Object.defineProperty(mn,"__esModule",{value:!0}),mn.MmlMn=void 0;var hasRequiredMn,MmlNode_js_1$z=MmlNode,MmlMn=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.texclass=MmlNode_js_1$z.TEXCLASS.ORD,t}return __extends$14(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"mn"},enumerable:!1,configurable:!0}),t.defaults=__assign$u({},MmlNode_js_1$z.AbstractMmlTokenNode.defaults),t}(MmlNode_js_1$z.AbstractMmlTokenNode);function requireMn(){if(hasRequiredMn)return mn$2;hasRequiredMn=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)});Object.defineProperty(mn$2,"__esModule",{value:!0}),mn$2.SVGmn=void 0;var n=requireWrapper(),r=mn,i=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return t(n,e),n.kind=r.MmlMn.prototype.kind,n}((0,mn$1.CommonMnMixin)(n.SVGWrapper));return mn$2.SVGmn=i,mn$2}mn.MmlMn=MmlMn;var ms$2={},ms$1={},__extends$13=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__read$m=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$f=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))};function CommonMsMixin(e){return function(e){function t(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=e.apply(this,__spreadArray$f([],__read$m(t),!1))||this,i=r.node.attributes,o=i.getList("lquote","rquote");return"monospace"!==r.variant&&(i.isSet("lquote")||'"'!==o.lquote||(o.lquote="“"),i.isSet("rquote")||'"'!==o.rquote||(o.rquote="”")),r.childNodes.unshift(r.createText(o.lquote)),r.childNodes.push(r.createText(o.rquote)),r}return __extends$13(t,e),t.prototype.createText=function(e){var t=this.wrap(this.mmlText(e));return t.parent=this,t},t}(e)}Object.defineProperty(ms$1,"__esModule",{value:!0}),ms$1.CommonMsMixin=void 0,ms$1.CommonMsMixin=CommonMsMixin;var ms={},__extends$12=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$t=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$t=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$t.apply(this,arguments)};Object.defineProperty(ms,"__esModule",{value:!0}),ms.MmlMs=void 0;var hasRequiredMs,MmlNode_js_1$y=MmlNode,MmlMs=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.texclass=MmlNode_js_1$y.TEXCLASS.ORD,t}return __extends$12(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"ms"},enumerable:!1,configurable:!0}),t.defaults=__assign$t(__assign$t({},MmlNode_js_1$y.AbstractMmlTokenNode.defaults),{lquote:'"',rquote:'"'}),t}(MmlNode_js_1$y.AbstractMmlTokenNode);function requireMs(){if(hasRequiredMs)return ms$2;hasRequiredMs=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)});Object.defineProperty(ms$2,"__esModule",{value:!0}),ms$2.SVGms=void 0;var n=requireWrapper(),r=ms,i=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return t(n,e),n.kind=r.MmlMs.prototype.kind,n}((0,ms$1.CommonMsMixin)(n.SVGWrapper));return ms$2.SVGms=i,ms$2}ms.MmlMs=MmlMs;var mtext$2={},mtext$1={},__extends$11=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();function CommonMtextMixin(e){var t;return t=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$11(t,e),t.prototype.getVariant=function(){var t=this.jax.options,n=this.jax.math.outputData,r=(!!n.merrorFamily||!!t.merrorFont)&&this.node.Parent.isKind("merror");if(n.mtextFamily||t.mtextFont||r){var i=this.node.attributes.get("mathvariant"),o=this.constructor.INHERITFONTS[i]||this.jax.font.getCssFont(i),a=o[0]||(r?n.merrorFamily||t.merrorFont:n.mtextFamily||t.mtextFont);this.variant=this.explicitVariant(a,o[2]?"bold":"",o[1]?"italic":"")}else e.prototype.getVariant.call(this)},t}(e),t.INHERITFONTS={normal:["",!1,!1],bold:["",!1,!0],italic:["",!0,!1],"bold-italic":["",!0,!0]},t}Object.defineProperty(mtext$1,"__esModule",{value:!0}),mtext$1.CommonMtextMixin=void 0,mtext$1.CommonMtextMixin=CommonMtextMixin;var mtext={},__extends$10=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$s=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$s=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$s.apply(this,arguments)};Object.defineProperty(mtext,"__esModule",{value:!0}),mtext.MmlMtext=void 0;var hasRequiredMtext,MmlNode_js_1$x=MmlNode,MmlMtext=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.texclass=MmlNode_js_1$x.TEXCLASS.ORD,t}return __extends$10(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"mtext"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isSpacelike",{get:function(){return!0},enumerable:!1,configurable:!0}),t.defaults=__assign$s({},MmlNode_js_1$x.AbstractMmlTokenNode.defaults),t}(MmlNode_js_1$x.AbstractMmlTokenNode);function requireMtext(){if(hasRequiredMtext)return mtext$2;hasRequiredMtext=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)});Object.defineProperty(mtext$2,"__esModule",{value:!0}),mtext$2.SVGmtext=void 0;var n=requireWrapper(),r=mtext,i=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return t(n,e),n.kind=r.MmlMtext.prototype.kind,n}((0,mtext$1.CommonMtextMixin)(n.SVGWrapper));return mtext$2.SVGmtext=i,mtext$2}mtext.MmlMtext=MmlMtext;var merror$1={},merror={},__extends$$=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$r=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$r.apply(this,arguments)};Object.defineProperty(merror,"__esModule",{value:!0}),merror.MmlMerror=void 0;var hasRequiredMerror,MmlNode_js_1$w=MmlNode,MmlMerror=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.texclass=MmlNode_js_1$w.TEXCLASS.ORD,t}return __extends$$(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"merror"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"arity",{get:function(){return-1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"linebreakContainer",{get:function(){return!0},enumerable:!1,configurable:!0}),t.defaults=__assign$r({},MmlNode_js_1$w.AbstractMmlNode.defaults),t}(MmlNode_js_1$w.AbstractMmlNode);function requireMerror(){if(hasRequiredMerror)return merror$1;hasRequiredMerror=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)});Object.defineProperty(merror$1,"__esModule",{value:!0}),merror$1.SVGmerror=void 0;var n=requireWrapper(),r=merror,i=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return t(n,e),n.prototype.toSVG=function(e){var t=this.standardSVGnode(e),n=this.getBBox(),r=n.h,i=n.d,o=n.w;this.adaptor.append(this.element,this.svg("rect",{"data-background":!0,width:this.fixed(o),height:this.fixed(r+i),y:this.fixed(-i)}));var a=this.node.attributes.get("title");a&&this.adaptor.append(this.element,this.svg("title",{},[this.adaptor.text(a)])),this.addChildren(t)},n.kind=r.MmlMerror.prototype.kind,n.styles={'g[data-mml-node="merror"] > g':{fill:"red",stroke:"red"},'g[data-mml-node="merror"] > rect[data-background]':{fill:"yellow",stroke:"none"}},n}(n.SVGWrapper);return merror$1.SVGmerror=i,merror$1}merror.MmlMerror=MmlMerror;var mspace$2={},mspace$1={},__extends$_=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();function CommonMspaceMixin(e){return function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$_(t,e),t.prototype.computeBBox=function(e,t){var n=this.node.attributes;e.w=this.length2em(n.get("width"),0),e.h=this.length2em(n.get("height"),0),e.d=this.length2em(n.get("depth"),0)},t.prototype.handleVariant=function(){},t}(e)}Object.defineProperty(mspace$1,"__esModule",{value:!0}),mspace$1.CommonMspaceMixin=void 0,mspace$1.CommonMspaceMixin=CommonMspaceMixin;var mspace={},__extends$Z=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$q=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$q=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$q.apply(this,arguments)};Object.defineProperty(mspace,"__esModule",{value:!0}),mspace.MmlMspace=void 0;var hasRequiredMspace,MmlNode_js_1$v=MmlNode,MmlMspace=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.texclass=MmlNode_js_1$v.TEXCLASS.NONE,t}return __extends$Z(t,e),t.prototype.setTeXclass=function(e){return e},Object.defineProperty(t.prototype,"kind",{get:function(){return"mspace"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"arity",{get:function(){return 0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isSpacelike",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hasNewline",{get:function(){var e=this.attributes;return null==e.getExplicit("width")&&null==e.getExplicit("height")&&null==e.getExplicit("depth")&&"newline"===e.get("linebreak")},enumerable:!1,configurable:!0}),t.defaults=__assign$q(__assign$q({},MmlNode_js_1$v.AbstractMmlTokenNode.defaults),{width:"0em",height:"0ex",depth:"0ex",linebreak:"auto"}),t}(MmlNode_js_1$v.AbstractMmlTokenNode);function requireMspace(){if(hasRequiredMspace)return mspace$2;hasRequiredMspace=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)});Object.defineProperty(mspace$2,"__esModule",{value:!0}),mspace$2.SVGmspace=void 0;var n=requireWrapper(),r=mspace,i=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return t(n,e),n.kind=r.MmlMspace.prototype.kind,n}((0,mspace$1.CommonMspaceMixin)(n.SVGWrapper));return mspace$2.SVGmspace=i,mspace$2}mspace.MmlMspace=MmlMspace;var mpadded$2={},mpadded$1={},__extends$Y=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__read$l=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a};function CommonMpaddedMixin(e){return function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$Y(t,e),t.prototype.getDimens=function(){var e=this.node.attributes.getList("width","height","depth","lspace","voffset"),t=this.childNodes[0].getBBox(),n=t.w,r=t.h,i=t.d,o=n,a=r,s=i,l=0,c=0,T=0;""!==e.width&&(n=this.dimen(e.width,t,"w",0)),""!==e.height&&(r=this.dimen(e.height,t,"h",0)),""!==e.depth&&(i=this.dimen(e.depth,t,"d",0)),""!==e.voffset&&(c=this.dimen(e.voffset,t)),""!==e.lspace&&(l=this.dimen(e.lspace,t));var Q=this.node.attributes.get("data-align");return Q&&(T=this.getAlignX(n,t,Q)),[a,s,o,r-a,i-s,n-o,l,c,T]},t.prototype.dimen=function(e,t,n,r){void 0===n&&(n=""),void 0===r&&(r=null);var i=(e=String(e)).match(/width|height|depth/),o=i?t[i[0].charAt(0)]:n?t[n]:0,a=this.length2em(e,o)||0;return e.match(/^[-+]/)&&n&&(a+=o),null!=r&&(a=Math.max(r,a)),a},t.prototype.computeBBox=function(e,t){void 0===t&&(t=!1);var n=__read$l(this.getDimens(),6),r=n[0],i=n[1],o=n[2],a=n[3],s=n[4],l=n[5];e.w=o+l,e.h=r+a,e.d=i+s,this.setChildPWidths(t,e.w)},t.prototype.getWrapWidth=function(e){return this.getBBox().w},t.prototype.getChildAlign=function(e){return this.node.attributes.get("data-align")||"left"},t}(e)}Object.defineProperty(mpadded$1,"__esModule",{value:!0}),mpadded$1.CommonMpaddedMixin=void 0,mpadded$1.CommonMpaddedMixin=CommonMpaddedMixin;var mpadded={},__extends$X=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$p=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$p=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$p.apply(this,arguments)};Object.defineProperty(mpadded,"__esModule",{value:!0}),mpadded.MmlMpadded=void 0;var hasRequiredMpadded,MmlNode_js_1$u=MmlNode,MmlMpadded=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$X(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"mpadded"},enumerable:!1,configurable:!0}),t.defaults=__assign$p(__assign$p({},MmlNode_js_1$u.AbstractMmlLayoutNode.defaults),{width:"",height:"",depth:"",lspace:0,voffset:0}),t}(MmlNode_js_1$u.AbstractMmlLayoutNode);function requireMpadded(){if(hasRequiredMpadded)return mpadded$2;hasRequiredMpadded=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),n=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(mpadded$2,"__esModule",{value:!0}),mpadded$2.SVGmpadded=void 0;var r=requireWrapper(),i=mpadded,o=function(e){function r(){return null!==e&&e.apply(this,arguments)||this}return t(r,e),r.prototype.toSVG=function(e){var t=this.standardSVGnode(e),r=n(this.getDimens(),9),i=r[5],o=r[6],a=r[7],s=r[8],l=this.node.attributes.get("data-align")||"left",c=o+s-(i<0&&"left"!==l?"center"===l?i/2:i:0);(c||a)&&(t=this.adaptor.append(t,this.svg("g")),this.place(c,a,t)),this.addChildren(t)},r.kind=i.MmlMpadded.prototype.kind,r}((0,mpadded$1.CommonMpaddedMixin)(r.SVGWrapper));return mpadded$2.SVGmpadded=o,mpadded$2}mpadded.MmlMpadded=MmlMpadded;var mphantom$1={},mphantom={},__extends$W=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$o=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$o.apply(this,arguments)};Object.defineProperty(mphantom,"__esModule",{value:!0}),mphantom.MmlMphantom=void 0;var hasRequiredMphantom,MmlNode_js_1$t=MmlNode,MmlMphantom=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.texclass=MmlNode_js_1$t.TEXCLASS.ORD,t}return __extends$W(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"mphantom"},enumerable:!1,configurable:!0}),t.defaults=__assign$o({},MmlNode_js_1$t.AbstractMmlLayoutNode.defaults),t}(MmlNode_js_1$t.AbstractMmlLayoutNode);function requireMphantom(){if(hasRequiredMphantom)return mphantom$1;hasRequiredMphantom=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)});Object.defineProperty(mphantom$1,"__esModule",{value:!0}),mphantom$1.SVGmphantom=void 0;var n=requireWrapper(),r=mphantom,i=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return t(n,e),n.prototype.toSVG=function(e){this.standardSVGnode(e)},n.kind=r.MmlMphantom.prototype.kind,n}(n.SVGWrapper);return mphantom$1.SVGmphantom=i,mphantom$1}mphantom.MmlMphantom=MmlMphantom;var mfrac$2={},mfrac$1={},__extends$V=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__read$k=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$e=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))};function CommonMfracMixin(e){return function(e){function t(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=e.apply(this,__spreadArray$e([],__read$k(t),!1))||this;if(r.bevel=null,r.pad=r.node.getProperty("withDelims")?0:r.font.params.nulldelimiterspace,r.node.attributes.get("bevelled")){var i=r.getBevelData(r.isDisplay()).H,o=r.bevel=r.createMo("/");o.node.attributes.set("symmetric",!0),o.canStretch(1),o.getStretchedVariant([i],!0)}return r}return __extends$V(t,e),t.prototype.computeBBox=function(e,t){void 0===t&&(t=!1),e.empty();var n=this.node.attributes.getList("linethickness","bevelled"),r=n.linethickness,i=n.bevelled,o=this.isDisplay(),a=null;if(i)this.getBevelledBBox(e,o);else{var s=this.length2em(String(r),.06);a=-2*this.pad,0===s?this.getAtopBBox(e,o):(this.getFractionBBox(e,o,s),a-=.2),a+=e.w}e.clean(),this.setChildPWidths(t,a)},t.prototype.getFractionBBox=function(e,t,n){var r=this.childNodes[0].getOuterBBox(),i=this.childNodes[1].getOuterBBox(),o=this.font.params.axis_height,a=this.getTUV(t,n),s=a.T,l=a.u,c=a.v;e.combine(r,0,o+s+Math.max(r.d*r.rscale,l)),e.combine(i,0,o-s-Math.max(i.h*i.rscale,c)),e.w+=2*this.pad+.2},t.prototype.getTUV=function(e,t){var n=this.font.params,r=n.axis_height,i=(e?3.5:1.5)*t;return{T:(e?3.5:1.5)*t,u:(e?n.num1:n.num2)-r-i,v:(e?n.denom1:n.denom2)+r-i}},t.prototype.getAtopBBox=function(e,t){var n=this.getUVQ(t),r=n.u,i=n.v,o=n.nbox,a=n.dbox;e.combine(o,0,r),e.combine(a,0,-i),e.w+=2*this.pad},t.prototype.getUVQ=function(e){var t=this.childNodes[0].getOuterBBox(),n=this.childNodes[1].getOuterBBox(),r=this.font.params,i=__read$k(e?[r.num1,r.denom1]:[r.num3,r.denom2],2),o=i[0],a=i[1],s=(e?7:3)*r.rule_thickness,l=o-t.d*t.scale-(n.h*n.scale-a);return l<s&&(o+=(s-l)/2,a+=(s-l)/2,l=s),{u:o,v:a,q:l,nbox:t,dbox:n}},t.prototype.getBevelledBBox=function(e,t){var n=this.getBevelData(t),r=n.u,i=n.v,o=n.delta,a=n.nbox,s=n.dbox,l=this.bevel.getOuterBBox();e.combine(a,0,r),e.combine(l,e.w-o/2,0),e.combine(s,e.w-o/2,i)},t.prototype.getBevelData=function(e){var t=this.childNodes[0].getOuterBBox(),n=this.childNodes[1].getOuterBBox(),r=e?.4:.15,i=Math.max(t.scale*(t.h+t.d),n.scale*(n.h+n.d))+2*r,o=this.font.params.axis_height;return{H:i,delta:r,u:t.scale*(t.d-t.h)/2+o+r,v:n.scale*(n.d-n.h)/2+o-r,nbox:t,dbox:n}},t.prototype.canStretch=function(e){return!1},t.prototype.isDisplay=function(){var e=this.node.attributes.getList("displaystyle","scriptlevel"),t=e.displaystyle,n=e.scriptlevel;return t&&0===n},t.prototype.getWrapWidth=function(e){var t=this.node.attributes;return t.get("bevelled")?this.childNodes[e].getOuterBBox().w:this.getBBox().w-(this.length2em(t.get("linethickness"))?.2:0)-2*this.pad},t.prototype.getChildAlign=function(e){var t=this.node.attributes;return t.get("bevelled")?"left":t.get(["numalign","denomalign"][e])},t}(e)}Object.defineProperty(mfrac$1,"__esModule",{value:!0}),mfrac$1.CommonMfracMixin=void 0,mfrac$1.CommonMfracMixin=CommonMfracMixin;var mfrac={},__extends$U=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$n=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$n=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$n.apply(this,arguments)},__values$l=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(mfrac,"__esModule",{value:!0}),mfrac.MmlMfrac=void 0;var hasRequiredMfrac,MmlNode_js_1$s=MmlNode,MmlMfrac=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$U(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"mfrac"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"arity",{get:function(){return 2},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"linebreakContainer",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.setTeXclass=function(e){var t,n;this.getPrevClass(e);try{for(var r=__values$l(this.childNodes),i=r.next();!i.done;i=r.next())i.value.setTeXclass(null)}catch(e){t={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}return this},t.prototype.setChildInheritedAttributes=function(e,t,n,r){(!t||n>0)&&n++,this.childNodes[0].setInheritedAttributes(e,!1,n,r),this.childNodes[1].setInheritedAttributes(e,!1,n,!0)},t.defaults=__assign$n(__assign$n({},MmlNode_js_1$s.AbstractMmlBaseNode.defaults),{linethickness:"medium",numalign:"center",denomalign:"center",bevelled:!1}),t}(MmlNode_js_1$s.AbstractMmlBaseNode);function requireMfrac(){if(hasRequiredMfrac)return mfrac$2;hasRequiredMfrac=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),n=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(mfrac$2,"__esModule",{value:!0}),mfrac$2.SVGmfrac=void 0;var r=requireWrapper(),i=mfrac,o=function(e){function r(){return null!==e&&e.apply(this,arguments)||this}return t(r,e),r.prototype.toSVG=function(e){this.standardSVGnode(e);var t=this.node.attributes.getList("linethickness","bevelled"),n=t.linethickness,r=t.bevelled,i=this.isDisplay();if(r)this.makeBevelled(i);else{var o=this.length2em(String(n),.06);0===o?this.makeAtop(i):this.makeFraction(i,o)}},r.prototype.makeFraction=function(e,t){var r=this.element,i=this.node.attributes.getList("numalign","denomalign"),o=i.numalign,a=i.denomalign,s=n(this.childNodes,2),l=s[0],c=s[1],T=l.getOuterBBox(),Q=c.getOuterBBox(),d=this.font.params,u=d.axis_height,p=this.node.getProperty("withDelims")?0:d.nulldelimiterspace,h=Math.max((T.L+T.w+T.R)*T.rscale,(Q.L+Q.w+Q.R)*Q.rscale),m=this.getAlignX(h,T,o)+.1+p,f=this.getAlignX(h,Q,a)+.1+p,g=this.getTUV(e,t),b=g.T,y=g.u,L=g.v;l.toSVG(r),l.place(m,u+b+Math.max(T.d*T.rscale,y)),c.toSVG(r),c.place(f,u-b-Math.max(Q.h*Q.rscale,L)),this.adaptor.append(r,this.svg("rect",{width:this.fixed(h+.2),height:this.fixed(t),x:this.fixed(p),y:this.fixed(u-t/2)}))},r.prototype.makeAtop=function(e){var t=this.element,r=this.node.attributes.getList("numalign","denomalign"),i=r.numalign,o=r.denomalign,a=n(this.childNodes,2),s=a[0],l=a[1],c=s.getOuterBBox(),T=l.getOuterBBox(),Q=this.font.params,d=this.node.getProperty("withDelims")?0:Q.nulldelimiterspace,u=Math.max((c.L+c.w+c.R)*c.rscale,(T.L+T.w+T.R)*T.rscale),p=this.getAlignX(u,c,i)+d,h=this.getAlignX(u,T,o)+d,m=this.getUVQ(e),f=m.u,g=m.v;s.toSVG(t),s.place(p,f),l.toSVG(t),l.place(h,-g)},r.prototype.makeBevelled=function(e){var t=this.element,r=n(this.childNodes,2),i=r[0],o=r[1],a=this.getBevelData(e),s=a.u,l=a.v,c=a.delta,T=a.nbox,Q=a.dbox,d=(T.L+T.w+T.R)*T.rscale;i.toSVG(t),this.bevel.toSVG(t),o.toSVG(t),i.place(T.L*T.rscale,s),this.bevel.place(d-c/2,0),o.place(d+this.bevel.getOuterBBox().w+Q.L*Q.rscale-c,l)},r.kind=i.MmlMfrac.prototype.kind,r}((0,mfrac$1.CommonMfracMixin)(r.SVGWrapper));return mfrac$2.SVGmfrac=o,mfrac$2}mfrac.MmlMfrac=MmlMfrac;var msqrt$2={},msqrt$1={},__extends$T=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__read$j=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$d=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))};Object.defineProperty(msqrt$1,"__esModule",{value:!0}),msqrt$1.CommonMsqrtMixin=void 0;var BBox_js_1$1=BBox$1;function CommonMsqrtMixin(e){return function(e){function t(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=e.apply(this,__spreadArray$d([],__read$j(t),!1))||this,i=r.createMo("√");i.canStretch(1);var o=r.childNodes[r.base].getOuterBBox(),a=o.h,s=o.d,l=r.font.params.rule_thickness,c=r.node.attributes.get("displaystyle")?r.font.params.x_height:l;return r.surdH=a+s+2*l+c/4,i.getStretchedVariant([r.surdH-s,s],!0),r}return __extends$T(t,e),Object.defineProperty(t.prototype,"base",{get:function(){return 0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"surd",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"root",{get:function(){return null},enumerable:!1,configurable:!0}),t.prototype.createMo=function(t){var n=e.prototype.createMo.call(this,t);return this.childNodes.push(n),n},t.prototype.computeBBox=function(e,t){void 0===t&&(t=!1);var n=this.childNodes[this.surd].getBBox(),r=new BBox_js_1$1.BBox(this.childNodes[this.base].getOuterBBox()),i=this.getPQ(n)[1],o=this.font.params.rule_thickness,a=r.h+i+o,s=__read$j(this.getRootDimens(n,a),1)[0];e.h=a+o,this.combineRootBBox(e,n,a),e.combine(n,s,a-n.h),e.combine(r,s+n.w,0),e.clean(),this.setChildPWidths(t)},t.prototype.combineRootBBox=function(e,t,n){},t.prototype.getPQ=function(e){var t=this.font.params.rule_thickness,n=this.node.attributes.get("displaystyle")?this.font.params.x_height:t;return[n,e.h+e.d>this.surdH?(e.h+e.d-(this.surdH-2*t-n/2))/2:t+n/4]},t.prototype.getRootDimens=function(e,t){return[0,0,0,0]},t}(e)}msqrt$1.CommonMsqrtMixin=CommonMsqrtMixin;var msqrt={},__extends$S=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$m=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$m=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$m.apply(this,arguments)};Object.defineProperty(msqrt,"__esModule",{value:!0}),msqrt.MmlMsqrt=void 0;var hasRequiredMsqrt,MmlNode_js_1$r=MmlNode,MmlMsqrt=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.texclass=MmlNode_js_1$r.TEXCLASS.ORD,t}return __extends$S(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"msqrt"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"arity",{get:function(){return-1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"linebreakContainer",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.setTeXclass=function(e){return this.getPrevClass(e),this.childNodes[0].setTeXclass(null),this},t.prototype.setChildInheritedAttributes=function(e,t,n,r){this.childNodes[0].setInheritedAttributes(e,t,n,!0)},t.defaults=__assign$m({},MmlNode_js_1$r.AbstractMmlNode.defaults),t}(MmlNode_js_1$r.AbstractMmlNode);function requireMsqrt(){if(hasRequiredMsqrt)return msqrt$2;hasRequiredMsqrt=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)});Object.defineProperty(msqrt$2,"__esModule",{value:!0}),msqrt$2.SVGmsqrt=void 0;var n=requireWrapper(),r=msqrt,i=function(e){function n(){var t=null!==e&&e.apply(this,arguments)||this;return t.dx=0,t}return t(n,e),n.prototype.toSVG=function(e){var t=this.childNodes[this.surd],n=this.childNodes[this.base],r=this.root?this.childNodes[this.root]:null,i=t.getBBox(),o=n.getOuterBBox(),a=this.getPQ(i)[1],s=this.font.params.rule_thickness*this.bbox.scale,l=o.h+a+s,c=this.standardSVGnode(e),T=this.adaptor.append(c,this.svg("g"));this.addRoot(c,r,i,l),t.toSVG(c),t.place(this.dx,l-i.h),n.toSVG(T),n.place(this.dx+i.w,0),this.adaptor.append(c,this.svg("rect",{width:this.fixed(o.w),height:this.fixed(s),x:this.fixed(this.dx+i.w),y:this.fixed(l-s)}))},n.prototype.addRoot=function(e,t,n,r){},n.kind=r.MmlMsqrt.prototype.kind,n}((0,msqrt$1.CommonMsqrtMixin)(n.SVGWrapper));return msqrt$2.SVGmsqrt=i,msqrt$2}msqrt.MmlMsqrt=MmlMsqrt;var mroot$2={},mroot$1={},__extends$R=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();function CommonMrootMixin(e){return function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$R(t,e),Object.defineProperty(t.prototype,"surd",{get:function(){return 2},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"root",{get:function(){return 1},enumerable:!1,configurable:!0}),t.prototype.combineRootBBox=function(e,t,n){var r=this.childNodes[this.root].getOuterBBox(),i=this.getRootDimens(t,n)[1];e.combine(r,0,i)},t.prototype.getRootDimens=function(e,t){var n=this.childNodes[this.surd],r=this.childNodes[this.root].getOuterBBox(),i=(n.size<0?.5:.6)*e.w,o=r.w,a=r.rscale,s=Math.max(o,i/a),l=Math.max(0,s-o);return[s*a-i,this.rootHeight(r,e,n.size,t),l]},t.prototype.rootHeight=function(e,t,n,r){var i=t.h+t.d;return(n<0?1.9:.55*i)-(i-r)+Math.max(0,e.d*e.rscale)},t}(e)}Object.defineProperty(mroot$1,"__esModule",{value:!0}),mroot$1.CommonMrootMixin=void 0,mroot$1.CommonMrootMixin=CommonMrootMixin;var mroot={},__extends$Q=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$l=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$l=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$l.apply(this,arguments)};Object.defineProperty(mroot,"__esModule",{value:!0}),mroot.MmlMroot=void 0;var hasRequiredMroot,MmlNode_js_1$q=MmlNode,MmlMroot=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.texclass=MmlNode_js_1$q.TEXCLASS.ORD,t}return __extends$Q(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"mroot"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"arity",{get:function(){return 2},enumerable:!1,configurable:!0}),t.prototype.setTeXclass=function(e){return this.getPrevClass(e),this.childNodes[0].setTeXclass(null),this.childNodes[1].setTeXclass(null),this},t.prototype.setChildInheritedAttributes=function(e,t,n,r){this.childNodes[0].setInheritedAttributes(e,t,n,!0),this.childNodes[1].setInheritedAttributes(e,!1,n+2,r)},t.defaults=__assign$l({},MmlNode_js_1$q.AbstractMmlNode.defaults),t}(MmlNode_js_1$q.AbstractMmlNode);function requireMroot(){if(hasRequiredMroot)return mroot$2;hasRequiredMroot=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),n=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(mroot$2,"__esModule",{value:!0}),mroot$2.SVGmroot=void 0;var r=requireMsqrt(),i=mroot,o=function(e){function r(){return null!==e&&e.apply(this,arguments)||this}return t(r,e),r.prototype.addRoot=function(e,t,r,i){t.toSVG(e);var o=n(this.getRootDimens(r,i),3),a=o[0],s=o[1],l=o[2],c=t.getOuterBBox();t.place(l*c.rscale,s),this.dx=a},r.kind=i.MmlMroot.prototype.kind,r}((0,mroot$1.CommonMrootMixin)(r.SVGmsqrt));return mroot$2.SVGmroot=o,mroot$2}mroot.MmlMroot=MmlMroot;var mfenced$2={},mfenced$1={},__extends$P=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__read$i=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$c=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))},__values$k=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};function CommonMfencedMixin(e){return function(e){function t(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=e.apply(this,__spreadArray$c([],__read$i(t),!1))||this;return r.mrow=null,r.createMrow(),r.addMrowChildren(),r}return __extends$P(t,e),t.prototype.createMrow=function(){var e=this.node.factory.create("inferredMrow");e.inheritAttributesFrom(this.node),this.mrow=this.wrap(e),this.mrow.parent=this},t.prototype.addMrowChildren=function(){var e,t,n=this.node,r=this.mrow;this.addMo(n.open),this.childNodes.length&&r.childNodes.push(this.childNodes[0]);var i=0;try{for(var o=__values$k(this.childNodes.slice(1)),a=o.next();!a.done;a=o.next()){var s=a.value;this.addMo(n.separators[i++]),r.childNodes.push(s)}}catch(t){e={error:t}}finally{try{a&&!a.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}this.addMo(n.close),r.stretchChildren()},t.prototype.addMo=function(e){if(e){var t=this.wrap(e);this.mrow.childNodes.push(t),t.parent=this.mrow}},t.prototype.computeBBox=function(e,t){void 0===t&&(t=!1),e.updateFrom(this.mrow.getOuterBBox()),this.setChildPWidths(t)},t}(e)}Object.defineProperty(mfenced$1,"__esModule",{value:!0}),mfenced$1.CommonMfencedMixin=void 0,mfenced$1.CommonMfencedMixin=CommonMfencedMixin;var mfenced={},__extends$O=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$k=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$k=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$k.apply(this,arguments)},__values$j=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(mfenced,"__esModule",{value:!0}),mfenced.MmlMfenced=void 0;var hasRequiredMfenced,MmlNode_js_1$p=MmlNode,MmlMfenced=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.texclass=MmlNode_js_1$p.TEXCLASS.INNER,t.separators=[],t.open=null,t.close=null,t}return __extends$O(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"mfenced"},enumerable:!1,configurable:!0}),t.prototype.setTeXclass=function(e){this.getPrevClass(e),this.open&&(e=this.open.setTeXclass(e)),this.childNodes[0]&&(e=this.childNodes[0].setTeXclass(e));for(var t=1,n=this.childNodes.length;t<n;t++)this.separators[t-1]&&(e=this.separators[t-1].setTeXclass(e)),this.childNodes[t]&&(e=this.childNodes[t].setTeXclass(e));return this.close&&(e=this.close.setTeXclass(e)),this.updateTeXclass(this.open),e},t.prototype.setChildInheritedAttributes=function(t,n,r,i){var o,a;this.addFakeNodes();try{for(var s=__values$j([this.open,this.close].concat(this.separators)),l=s.next();!l.done;l=s.next()){var c=l.value;c&&c.setInheritedAttributes(t,n,r,i)}}catch(e){o={error:e}}finally{try{l&&!l.done&&(a=s.return)&&a.call(s)}finally{if(o)throw o.error}}e.prototype.setChildInheritedAttributes.call(this,t,n,r,i)},t.prototype.addFakeNodes=function(){var e,t,n=this.attributes.getList("open","close","separators"),r=n.open,i=n.close,o=n.separators;if(r=r.replace(/[ \t\n\r]/g,""),i=i.replace(/[ \t\n\r]/g,""),o=o.replace(/[ \t\n\r]/g,""),r&&(this.open=this.fakeNode(r,{fence:!0,form:"prefix"},MmlNode_js_1$p.TEXCLASS.OPEN)),o){for(;o.length<this.childNodes.length-1;)o+=o.charAt(o.length-1);var a=0;try{for(var s=__values$j(this.childNodes.slice(1)),l=s.next();!l.done;l=s.next())l.value&&this.separators.push(this.fakeNode(o.charAt(a++)))}catch(t){e={error:t}}finally{try{l&&!l.done&&(t=s.return)&&t.call(s)}finally{if(e)throw e.error}}}i&&(this.close=this.fakeNode(i,{fence:!0,form:"postfix"},MmlNode_js_1$p.TEXCLASS.CLOSE))},t.prototype.fakeNode=function(e,t,n){void 0===t&&(t={}),void 0===n&&(n=null);var r=this.factory.create("text").setText(e),i=this.factory.create("mo",t,[r]);return i.texClass=n,i.parent=this,i},t.defaults=__assign$k(__assign$k({},MmlNode_js_1$p.AbstractMmlNode.defaults),{open:"(",close:")",separators:","}),t}(MmlNode_js_1$p.AbstractMmlNode);function requireMfenced(){if(hasRequiredMfenced)return mfenced$2;hasRequiredMfenced=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),n=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(mfenced$2,"__esModule",{value:!0}),mfenced$2.SVGmfenced=void 0;var r=requireWrapper(),i=mfenced,o=function(e){function r(){return null!==e&&e.apply(this,arguments)||this}return t(r,e),r.prototype.toSVG=function(e){var t=this.standardSVGnode(e);this.setChildrenParent(this.mrow),this.mrow.toSVG(t),this.setChildrenParent(this)},r.prototype.setChildrenParent=function(e){var t,r;try{for(var i=n(this.childNodes),o=i.next();!o.done;o=i.next())o.value.parent=e}catch(e){t={error:e}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(t)throw t.error}}},r.kind=i.MmlMfenced.prototype.kind,r}((0,mfenced$1.CommonMfencedMixin)(r.SVGWrapper));return mfenced$2.SVGmfenced=o,mfenced$2}mfenced.MmlMfenced=MmlMfenced;var msubsup$2={},scriptbase$1={},scriptbase={},__extends$N=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__read$h=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$b=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))},__values$i=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(scriptbase,"__esModule",{value:!0}),scriptbase.CommonScriptbaseMixin=void 0;var hasRequiredScriptbase,MmlNode_js_1$o=MmlNode;function CommonScriptbaseMixin(e){var t;return t=function(e){function t(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=e.apply(this,__spreadArray$b([],__read$h(t),!1))||this;r.baseScale=1,r.baseIc=0,r.baseRemoveIc=!1,r.baseIsChar=!1,r.baseHasAccentOver=null,r.baseHasAccentUnder=null,r.isLineAbove=!1,r.isLineBelow=!1,r.isMathAccent=!1;var i=r.baseCore=r.getBaseCore();return i?(r.setBaseAccentsFor(i),r.baseScale=r.getBaseScale(),r.baseIc=r.getBaseIc(),r.baseIsChar=r.isCharBase(),r.isMathAccent=r.baseIsChar&&r.scriptChild&&!!r.scriptChild.coreMO().node.getProperty("mathaccent"),r.checkLineAccents(),r.baseRemoveIc=!r.isLineAbove&&!r.isLineBelow&&(!r.constructor.useIC||r.isMathAccent),r):r}return __extends$N(t,e),Object.defineProperty(t.prototype,"baseChild",{get:function(){return this.childNodes[this.node.base]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"scriptChild",{get:function(){return this.childNodes[1]},enumerable:!1,configurable:!0}),t.prototype.getBaseCore=function(){for(var e=this.getSemanticBase()||this.childNodes[0];e&&(1===e.childNodes.length&&(e.node.isKind("mrow")||e.node.isKind("TeXAtom")&&e.node.texClass!==MmlNode_js_1$o.TEXCLASS.VCENTER||e.node.isKind("mstyle")||e.node.isKind("mpadded")||e.node.isKind("mphantom")||e.node.isKind("semantics"))||e.node.isKind("munderover")&&e.isMathAccent);)this.setBaseAccentsFor(e),e=e.childNodes[0];return e||(this.baseHasAccentOver=this.baseHasAccentUnder=!1),e||this.childNodes[0]},t.prototype.setBaseAccentsFor=function(e){e.node.isKind("munderover")&&(null===this.baseHasAccentOver&&(this.baseHasAccentOver=!!e.node.attributes.get("accent")),null===this.baseHasAccentUnder&&(this.baseHasAccentUnder=!!e.node.attributes.get("accentunder")))},t.prototype.getSemanticBase=function(){var e=this.node.attributes.getExplicit("data-semantic-fencepointer");return this.getBaseFence(this.baseChild,e)},t.prototype.getBaseFence=function(e,t){var n,r;if(!e||!e.node.attributes||!t)return null;if(e.node.attributes.getExplicit("data-semantic-id")===t)return e;try{for(var i=__values$i(e.childNodes),o=i.next();!o.done;o=i.next()){var a=o.value,s=this.getBaseFence(a,t);if(s)return s}}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}return null},t.prototype.getBaseScale=function(){for(var e=this.baseCore,t=1;e&&e!==this;)t*=e.getOuterBBox().rscale,e=e.parent;return t},t.prototype.getBaseIc=function(){return this.baseCore.getOuterBBox().ic*this.baseScale},t.prototype.getAdjustedIc=function(){var e=this.baseCore.getOuterBBox();return(e.ic?1.05*e.ic+.05:0)*this.baseScale},t.prototype.isCharBase=function(){var e=this.baseCore;return(e.node.isKind("mo")&&null===e.size||e.node.isKind("mi")||e.node.isKind("mn"))&&1===e.bbox.rscale&&1===Array.from(e.getText()).length},t.prototype.checkLineAccents=function(){this.node.isKind("munderover")&&(this.node.isKind("mover")?this.isLineAbove=this.isLineAccent(this.scriptChild):this.node.isKind("munder")?this.isLineBelow=this.isLineAccent(this.scriptChild):(this.isLineAbove=this.isLineAccent(this.overChild),this.isLineBelow=this.isLineAccent(this.underChild)))},t.prototype.isLineAccent=function(e){var t=e.coreMO().node;return t.isToken&&"―"===t.getText()},t.prototype.getBaseWidth=function(){var e=this.baseChild.getOuterBBox();return e.w*e.rscale-(this.baseRemoveIc?this.baseIc:0)+this.font.params.extra_ic},t.prototype.computeBBox=function(e,t){void 0===t&&(t=!1);var n=this.getBaseWidth(),r=__read$h(this.getOffset(),2),i=r[0],o=r[1];e.append(this.baseChild.getOuterBBox()),e.combine(this.scriptChild.getOuterBBox(),n+i,o),e.w+=this.font.params.scriptspace,e.clean(),this.setChildPWidths(t)},t.prototype.getOffset=function(){return[0,0]},t.prototype.baseCharZero=function(e){var t=!!this.baseCore.node.attributes.get("largeop"),n=this.baseScale;return this.baseIsChar&&!t&&1===n?0:e},t.prototype.getV=function(){var e=this.baseCore.getOuterBBox(),t=this.scriptChild.getOuterBBox(),n=this.font.params,r=this.length2em(this.node.attributes.get("subscriptshift"),n.sub1);return Math.max(this.baseCharZero(e.d*this.baseScale+n.sub_drop*t.rscale),r,t.h*t.rscale-.8*n.x_height)},t.prototype.getU=function(){var e=this.baseCore.getOuterBBox(),t=this.scriptChild.getOuterBBox(),n=this.font.params,r=this.node.attributes.getList("displaystyle","superscriptshift"),i=this.node.getProperty("texprimestyle")?n.sup3:r.displaystyle?n.sup1:n.sup2,o=this.length2em(r.superscriptshift,i);return Math.max(this.baseCharZero(e.h*this.baseScale-n.sup_drop*t.rscale),o,t.d*t.rscale+1/4*n.x_height)},t.prototype.hasMovableLimits=function(){var e=this.node.attributes.get("displaystyle"),t=this.baseChild.coreMO().node;return!e&&!!t.attributes.get("movablelimits")},t.prototype.getOverKU=function(e,t){var n=this.node.attributes.get("accent"),r=this.font.params,i=t.d*t.rscale,o=r.rule_thickness*r.separation_factor,a=this.baseHasAccentOver?o:0,s=this.isLineAbove?3*r.rule_thickness:o,l=(n?s:Math.max(r.big_op_spacing1,r.big_op_spacing3-Math.max(0,i)))-a;return[l,e.h*e.rscale+l+i]},t.prototype.getUnderKV=function(e,t){var n=this.node.attributes.get("accentunder"),r=this.font.params,i=t.h*t.rscale,o=r.rule_thickness*r.separation_factor,a=this.baseHasAccentUnder?o:0,s=this.isLineBelow?3*r.rule_thickness:o,l=(n?s:Math.max(r.big_op_spacing2,r.big_op_spacing4-i))-a;return[l,-(e.d*e.rscale+l+i)]},t.prototype.getDeltaW=function(e,t){var n,r,i,o;void 0===t&&(t=[0,0,0]);var a=this.node.attributes.get("align"),s=e.map((function(e){return e.w*e.rscale}));s[0]-=this.baseRemoveIc&&!this.baseCore.node.attributes.get("largeop")?this.baseIc:0;var l=Math.max.apply(Math,__spreadArray$b([],__read$h(s),!1)),c=[],T=0;try{for(var Q=__values$i(s.keys()),d=Q.next();!d.done;d=Q.next()){var u=d.value;c[u]=("center"===a?(l-s[u])/2:"right"===a?l-s[u]:0)+t[u],c[u]<T&&(T=-c[u])}}catch(e){n={error:e}}finally{try{d&&!d.done&&(r=Q.return)&&r.call(Q)}finally{if(n)throw n.error}}if(T)try{for(var p=__values$i(c.keys()),h=p.next();!h.done;h=p.next())u=h.value,c[u]+=T}catch(e){i={error:e}}finally{try{h&&!h.done&&(o=p.return)&&o.call(p)}finally{if(i)throw i.error}}return[1,2].map((function(t){return c[t]+=e[t]?e[t].dx*e[0].scale:0})),c},t.prototype.getDelta=function(e){void 0===e&&(e=!1);var t=this.node.attributes.get("accent"),n=this.baseCore.getOuterBBox(),r=n.sk,i=n.ic;return((t&&!e?r:0)+this.font.skewIcFactor*i)*this.baseScale},t.prototype.stretchChildren=function(){var e,t,n,r,i,o,a=[];try{for(var s=__values$i(this.childNodes),l=s.next();!l.done;l=s.next())(L=l.value).canStretch(2)&&a.push(L)}catch(t){e={error:t}}finally{try{l&&!l.done&&(t=s.return)&&t.call(s)}finally{if(e)throw e.error}}var c=a.length,T=this.childNodes.length;if(c&&T>1){var Q=0,d=c>1&&c===T;try{for(var u=__values$i(this.childNodes),p=u.next();!p.done;p=u.next()){var h=0===(L=p.value).stretch.dir;if(d||h){var m=L.getOuterBBox(h),f=m.w,g=m.rscale;f*g>Q&&(Q=f*g)}}}catch(e){n={error:e}}finally{try{p&&!p.done&&(r=u.return)&&r.call(u)}finally{if(n)throw n.error}}try{for(var b=__values$i(a),y=b.next();!y.done;y=b.next()){var L;(L=y.value).coreMO().getStretchedVariant([Q/L.bbox.rscale])}}catch(e){i={error:e}}finally{try{y&&!y.done&&(o=b.return)&&o.call(b)}finally{if(i)throw i.error}}}},t}(e),t.useIC=!0,t}function requireScriptbase(){if(hasRequiredScriptbase)return scriptbase$1;hasRequiredScriptbase=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),n=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(scriptbase$1,"__esModule",{value:!0}),scriptbase$1.SVGscriptbase=void 0;var r=requireWrapper(),i=function(e){function r(){return null!==e&&e.apply(this,arguments)||this}return t(r,e),r.prototype.toSVG=function(e){var t=this.standardSVGnode(e),r=this.getBaseWidth(),i=n(this.getOffset(),2),o=i[0],a=i[1];this.baseChild.toSVG(t),this.scriptChild.toSVG(t),this.scriptChild.place(r+o,a)},r.kind="scriptbase",r}((0,scriptbase.CommonScriptbaseMixin)(r.SVGWrapper));return scriptbase$1.SVGscriptbase=i,scriptbase$1}scriptbase.CommonScriptbaseMixin=CommonScriptbaseMixin;var msubsup$1={},__extends$M=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__read$g=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a};function CommonMsubMixin(e){var t;return t=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$M(t,e),Object.defineProperty(t.prototype,"scriptChild",{get:function(){return this.childNodes[this.node.sub]},enumerable:!1,configurable:!0}),t.prototype.getOffset=function(){return[0,-this.getV()]},t}(e),t.useIC=!1,t}function CommonMsupMixin(e){return function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$M(t,e),Object.defineProperty(t.prototype,"scriptChild",{get:function(){return this.childNodes[this.node.sup]},enumerable:!1,configurable:!0}),t.prototype.getOffset=function(){return[this.getAdjustedIc()-(this.baseRemoveIc?0:this.baseIc),this.getU()]},t}(e)}function CommonMsubsupMixin(e){var t;return t=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.UVQ=null,t}return __extends$M(t,e),Object.defineProperty(t.prototype,"subChild",{get:function(){return this.childNodes[this.node.sub]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"supChild",{get:function(){return this.childNodes[this.node.sup]},enumerable:!1,configurable:!0}),t.prototype.computeBBox=function(e,t){void 0===t&&(t=!1);var n=this.baseChild.getOuterBBox(),r=__read$g([this.subChild.getOuterBBox(),this.supChild.getOuterBBox()],2),i=r[0],o=r[1];e.empty(),e.append(n);var a=this.getBaseWidth(),s=this.getAdjustedIc(),l=__read$g(this.getUVQ(),2),c=l[0],T=l[1];e.combine(i,a,T),e.combine(o,a+s,c),e.w+=this.font.params.scriptspace,e.clean(),this.setChildPWidths(t)},t.prototype.getUVQ=function(e,t){void 0===e&&(e=this.subChild.getOuterBBox()),void 0===t&&(t=this.supChild.getOuterBBox());var n=this.baseCore.getOuterBBox();if(this.UVQ)return this.UVQ;var r=this.font.params,i=3*r.rule_thickness,o=this.length2em(this.node.attributes.get("subscriptshift"),r.sub2),a=this.baseCharZero(n.d*this.baseScale+r.sub_drop*e.rscale),s=__read$g([this.getU(),Math.max(a,o)],2),l=s[0],c=s[1],T=l-t.d*t.rscale-(e.h*e.rscale-c);if(T<i){c+=i-T;var Q=.8*r.x_height-(l-t.d*t.rscale);Q>0&&(l+=Q,c-=Q)}return l=Math.max(this.length2em(this.node.attributes.get("superscriptshift"),l),l),c=Math.max(this.length2em(this.node.attributes.get("subscriptshift"),c),c),T=l-t.d*t.rscale-(e.h*e.rscale-c),this.UVQ=[l,-c,T],this.UVQ},t}(e),t.useIC=!1,t}Object.defineProperty(msubsup$1,"__esModule",{value:!0}),msubsup$1.CommonMsubsupMixin=msubsup$1.CommonMsupMixin=msubsup$1.CommonMsubMixin=void 0,msubsup$1.CommonMsubMixin=CommonMsubMixin,msubsup$1.CommonMsupMixin=CommonMsupMixin,msubsup$1.CommonMsubsupMixin=CommonMsubsupMixin;var msubsup={},__extends$L=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$j=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$j=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$j.apply(this,arguments)};Object.defineProperty(msubsup,"__esModule",{value:!0}),msubsup.MmlMsup=msubsup.MmlMsub=msubsup.MmlMsubsup=void 0;var MmlNode_js_1$n=MmlNode,MmlMsubsup=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$L(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"msubsup"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"arity",{get:function(){return 3},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"base",{get:function(){return 0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"sub",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"sup",{get:function(){return 2},enumerable:!1,configurable:!0}),t.prototype.setChildInheritedAttributes=function(e,t,n,r){var i=this.childNodes;i[0].setInheritedAttributes(e,t,n,r),i[1].setInheritedAttributes(e,!1,n+1,r||1===this.sub),i[2]&&i[2].setInheritedAttributes(e,!1,n+1,r||2===this.sub)},t.defaults=__assign$j(__assign$j({},MmlNode_js_1$n.AbstractMmlBaseNode.defaults),{subscriptshift:"",superscriptshift:""}),t}(MmlNode_js_1$n.AbstractMmlBaseNode);msubsup.MmlMsubsup=MmlMsubsup;var MmlMsub=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$L(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"msub"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"arity",{get:function(){return 2},enumerable:!1,configurable:!0}),t.defaults=__assign$j({},MmlMsubsup.defaults),t}(MmlMsubsup);msubsup.MmlMsub=MmlMsub;var hasRequiredMsubsup,MmlMsup=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$L(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"msup"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"arity",{get:function(){return 2},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"sup",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"sub",{get:function(){return 2},enumerable:!1,configurable:!0}),t.defaults=__assign$j({},MmlMsubsup.defaults),t}(MmlMsubsup);function requireMsubsup(){if(hasRequiredMsubsup)return msubsup$2;hasRequiredMsubsup=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),n=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(msubsup$2,"__esModule",{value:!0}),msubsup$2.SVGmsubsup=msubsup$2.SVGmsup=msubsup$2.SVGmsub=void 0;var r=requireScriptbase(),i=msubsup$1,o=msubsup$1,a=msubsup,s=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return t(n,e),n.kind=a.MmlMsub.prototype.kind,n}((0,msubsup$1.CommonMsubMixin)(r.SVGscriptbase));msubsup$2.SVGmsub=s;var l=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return t(n,e),n.kind=a.MmlMsup.prototype.kind,n}((0,i.CommonMsupMixin)(r.SVGscriptbase));msubsup$2.SVGmsup=l;var c=function(e){function r(){return null!==e&&e.apply(this,arguments)||this}return t(r,e),r.prototype.toSVG=function(e){var t=this.standardSVGnode(e),r=n([this.baseChild,this.supChild,this.subChild],3),i=r[0],o=r[1],a=r[2],s=this.getBaseWidth(),l=this.getAdjustedIc(),c=n(this.getUVQ(),2),T=c[0],Q=c[1];i.toSVG(t),o.toSVG(t),a.toSVG(t),a.place(s,Q),o.place(s+l,T)},r.kind=a.MmlMsubsup.prototype.kind,r}((0,o.CommonMsubsupMixin)(r.SVGscriptbase));return msubsup$2.SVGmsubsup=c,msubsup$2}msubsup.MmlMsup=MmlMsup;var munderover$2={},munderover$1={},__extends$K=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__read$f=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$a=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))};function CommonMunderMixin(e){return function(e){function t(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=e.apply(this,__spreadArray$a([],__read$f(t),!1))||this;return r.stretchChildren(),r}return __extends$K(t,e),Object.defineProperty(t.prototype,"scriptChild",{get:function(){return this.childNodes[this.node.under]},enumerable:!1,configurable:!0}),t.prototype.computeBBox=function(t,n){if(void 0===n&&(n=!1),this.hasMovableLimits())e.prototype.computeBBox.call(this,t,n);else{t.empty();var r=this.baseChild.getOuterBBox(),i=this.scriptChild.getOuterBBox(),o=this.getUnderKV(r,i)[1],a=this.isLineBelow?0:this.getDelta(!0),s=__read$f(this.getDeltaW([r,i],[0,-a]),2),l=s[0],c=s[1];t.combine(r,l,0),t.combine(i,c,o),t.d+=this.font.params.big_op_spacing5,t.clean(),this.setChildPWidths(n)}},t}(e)}function CommonMoverMixin(e){return function(e){function t(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=e.apply(this,__spreadArray$a([],__read$f(t),!1))||this;return r.stretchChildren(),r}return __extends$K(t,e),Object.defineProperty(t.prototype,"scriptChild",{get:function(){return this.childNodes[this.node.over]},enumerable:!1,configurable:!0}),t.prototype.computeBBox=function(t){if(this.hasMovableLimits())e.prototype.computeBBox.call(this,t);else{t.empty();var n=this.baseChild.getOuterBBox(),r=this.scriptChild.getOuterBBox();this.node.attributes.get("accent")&&(n.h=Math.max(n.h,this.font.params.x_height*n.scale));var i=this.getOverKU(n,r)[1],o=this.isLineAbove?0:this.getDelta(),a=__read$f(this.getDeltaW([n,r],[0,o]),2),s=a[0],l=a[1];t.combine(n,s,0),t.combine(r,l,i),t.h+=this.font.params.big_op_spacing5,t.clean()}},t}(e)}function CommonMunderoverMixin(e){return function(e){function t(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=e.apply(this,__spreadArray$a([],__read$f(t),!1))||this;return r.stretchChildren(),r}return __extends$K(t,e),Object.defineProperty(t.prototype,"underChild",{get:function(){return this.childNodes[this.node.under]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"overChild",{get:function(){return this.childNodes[this.node.over]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"subChild",{get:function(){return this.underChild},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"supChild",{get:function(){return this.overChild},enumerable:!1,configurable:!0}),t.prototype.computeBBox=function(t){if(this.hasMovableLimits())e.prototype.computeBBox.call(this,t);else{t.empty();var n=this.overChild.getOuterBBox(),r=this.baseChild.getOuterBBox(),i=this.underChild.getOuterBBox();this.node.attributes.get("accent")&&(r.h=Math.max(r.h,this.font.params.x_height*r.scale));var o=this.getOverKU(r,n)[1],a=this.getUnderKV(r,i)[1],s=this.getDelta(),l=__read$f(this.getDeltaW([r,i,n],[0,this.isLineBelow?0:-s,this.isLineAbove?0:s]),3),c=l[0],T=l[1],Q=l[2];t.combine(r,c,0),t.combine(n,Q,o),t.combine(i,T,a);var d=this.font.params.big_op_spacing5;t.h+=d,t.d+=d,t.clean()}},t}(e)}Object.defineProperty(munderover$1,"__esModule",{value:!0}),munderover$1.CommonMunderoverMixin=munderover$1.CommonMoverMixin=munderover$1.CommonMunderMixin=void 0,munderover$1.CommonMunderMixin=CommonMunderMixin,munderover$1.CommonMoverMixin=CommonMoverMixin,munderover$1.CommonMunderoverMixin=CommonMunderoverMixin;var munderover={},__extends$J=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$i=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$i.apply(this,arguments)};Object.defineProperty(munderover,"__esModule",{value:!0}),munderover.MmlMover=munderover.MmlMunder=munderover.MmlMunderover=void 0;var MmlNode_js_1$m=MmlNode,MmlMunderover=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$J(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"munderover"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"arity",{get:function(){return 3},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"base",{get:function(){return 0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"under",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"over",{get:function(){return 2},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"linebreakContainer",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.setChildInheritedAttributes=function(e,t,n,r){var i=this.childNodes;i[0].setInheritedAttributes(e,t,n,r||!!i[this.over]);var o=!(t||!i[0].coreMO().attributes.get("movablelimits")),a=this.constructor.ACCENTS;i[1].setInheritedAttributes(e,!1,this.getScriptlevel(a[1],o,n),r||1===this.under),this.setInheritedAccent(1,a[1],t,n,r,o),i[2]&&(i[2].setInheritedAttributes(e,!1,this.getScriptlevel(a[2],o,n),r||2===this.under),this.setInheritedAccent(2,a[2],t,n,r,o))},t.prototype.getScriptlevel=function(e,t,n){return!t&&this.attributes.get(e)||n++,n},t.prototype.setInheritedAccent=function(e,t,n,r,i,o){var a=this.childNodes[e];if(null==this.attributes.getExplicit(t)&&a.isEmbellished){var s=a.coreMO().attributes.get("accent");this.attributes.setInherited(t,s),s!==this.attributes.getDefault(t)&&a.setInheritedAttributes({},n,this.getScriptlevel(t,o,r),i)}},t.defaults=__assign$i(__assign$i({},MmlNode_js_1$m.AbstractMmlBaseNode.defaults),{accent:!1,accentunder:!1,align:"center"}),t.ACCENTS=["","accentunder","accent"],t}(MmlNode_js_1$m.AbstractMmlBaseNode);munderover.MmlMunderover=MmlMunderover;var MmlMunder=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$J(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"munder"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"arity",{get:function(){return 2},enumerable:!1,configurable:!0}),t.defaults=__assign$i({},MmlMunderover.defaults),t}(MmlMunderover);munderover.MmlMunder=MmlMunder;var hasRequiredMunderover,MmlMover=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$J(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"mover"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"arity",{get:function(){return 2},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"over",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"under",{get:function(){return 2},enumerable:!1,configurable:!0}),t.defaults=__assign$i({},MmlMunderover.defaults),t.ACCENTS=["","accent","accentunder"],t}(MmlMunderover);function requireMunderover(){if(hasRequiredMunderover)return munderover$2;hasRequiredMunderover=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),n=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(munderover$2,"__esModule",{value:!0}),munderover$2.SVGmunderover=munderover$2.SVGmover=munderover$2.SVGmunder=void 0;var r=requireMsubsup(),i=munderover$1,o=munderover$1,a=munderover,s=function(e){function r(){return null!==e&&e.apply(this,arguments)||this}return t(r,e),r.prototype.toSVG=function(t){if(this.hasMovableLimits())e.prototype.toSVG.call(this,t);else{var r=this.standardSVGnode(t),i=n([this.baseChild,this.scriptChild],2),o=i[0],a=i[1],s=n([o.getOuterBBox(),a.getOuterBBox()],2),l=s[0],c=s[1];o.toSVG(r),a.toSVG(r);var T=this.isLineBelow?0:this.getDelta(!0),Q=this.getUnderKV(l,c)[1],d=n(this.getDeltaW([l,c],[0,-T]),2),u=d[0],p=d[1];o.place(u,0),a.place(p,Q)}},r.kind=a.MmlMunder.prototype.kind,r}((0,munderover$1.CommonMunderMixin)(r.SVGmsub));munderover$2.SVGmunder=s;var l=function(e){function r(){return null!==e&&e.apply(this,arguments)||this}return t(r,e),r.prototype.toSVG=function(t){if(this.hasMovableLimits())e.prototype.toSVG.call(this,t);else{var r=this.standardSVGnode(t),i=n([this.baseChild,this.scriptChild],2),o=i[0],a=i[1],s=n([o.getOuterBBox(),a.getOuterBBox()],2),l=s[0],c=s[1];o.toSVG(r),a.toSVG(r);var T=this.isLineAbove?0:this.getDelta(),Q=this.getOverKU(l,c)[1],d=n(this.getDeltaW([l,c],[0,T]),2),u=d[0],p=d[1];o.place(u,0),a.place(p,Q)}},r.kind=a.MmlMover.prototype.kind,r}((0,i.CommonMoverMixin)(r.SVGmsup));munderover$2.SVGmover=l;var c=function(e){function r(){return null!==e&&e.apply(this,arguments)||this}return t(r,e),r.prototype.toSVG=function(t){if(this.hasMovableLimits())e.prototype.toSVG.call(this,t);else{var r=this.standardSVGnode(t),i=n([this.baseChild,this.overChild,this.underChild],3),o=i[0],a=i[1],s=i[2],l=n([o.getOuterBBox(),a.getOuterBBox(),s.getOuterBBox()],3),c=l[0],T=l[1],Q=l[2];o.toSVG(r),s.toSVG(r),a.toSVG(r);var d=this.getDelta(),u=this.getOverKU(c,T)[1],p=this.getUnderKV(c,Q)[1],h=n(this.getDeltaW([c,Q,T],[0,this.isLineBelow?0:-d,this.isLineAbove?0:d]),3),m=h[0],f=h[1],g=h[2];o.place(m,0),s.place(f,p),a.place(g,u)}},r.kind=a.MmlMunderover.prototype.kind,r}((0,o.CommonMunderoverMixin)(r.SVGmsubsup));return munderover$2.SVGmunderover=c,munderover$2}munderover.MmlMover=MmlMover;var mmultiscripts$2={},mmultiscripts$1={};!function(e){var t,n=commonjsGlobal&&commonjsGlobal.__extends||(t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},t(e,n)},function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),r=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},i=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))},o=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.CommonMmultiscriptsMixin=e.ScriptNames=e.NextScript=void 0;var a=BBox$1;e.NextScript={base:"subList",subList:"supList",supList:"subList",psubList:"psupList",psupList:"psubList"},e.ScriptNames=["sup","sup","psup","psub"],e.CommonMmultiscriptsMixin=function(t){return function(t){function s(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];var o=t.apply(this,i([],r(e),!1))||this;return o.scriptData=null,o.firstPrescript=0,o.getScriptData(),o}return n(s,t),s.prototype.combinePrePost=function(e,t){var n=new a.BBox(e);return n.combine(t,0,0),n},s.prototype.computeBBox=function(e,t){void 0===t&&(t=!1);var n=this.font.params.scriptspace,i=this.scriptData,o=this.combinePrePost(i.sub,i.psub),a=this.combinePrePost(i.sup,i.psup),s=r(this.getUVQ(o,a),2),l=s[0],c=s[1];if(e.empty(),i.numPrescripts&&(e.combine(i.psup,n,l),e.combine(i.psub,n,c)),e.append(i.base),i.numScripts){var T=e.w;e.combine(i.sup,T,l),e.combine(i.sub,T,c),e.w+=n}e.clean(),this.setChildPWidths(t)},s.prototype.getScriptData=function(){var e=this.scriptData={base:null,sub:a.BBox.empty(),sup:a.BBox.empty(),psub:a.BBox.empty(),psup:a.BBox.empty(),numPrescripts:0,numScripts:0},t=this.getScriptBBoxLists();this.combineBBoxLists(e.sub,e.sup,t.subList,t.supList),this.combineBBoxLists(e.psub,e.psup,t.psubList,t.psupList),e.base=t.base[0],e.numPrescripts=t.psubList.length,e.numScripts=t.subList.length},s.prototype.getScriptBBoxLists=function(){var t,n,r={base:[],subList:[],supList:[],psubList:[],psupList:[]},i="base";try{for(var a=o(this.childNodes),s=a.next();!s.done;s=a.next()){var l=s.value;l.node.isKind("mprescripts")?i="psubList":(r[i].push(l.getOuterBBox()),i=e.NextScript[i])}}catch(e){t={error:e}}finally{try{s&&!s.done&&(n=a.return)&&n.call(a)}finally{if(t)throw t.error}}return this.firstPrescript=r.subList.length+r.supList.length+2,this.padLists(r.subList,r.supList),this.padLists(r.psubList,r.psupList),r},s.prototype.padLists=function(e,t){e.length>t.length&&t.push(a.BBox.empty())},s.prototype.combineBBoxLists=function(e,t,n,i){for(var o=0;o<n.length;o++){var a=r(this.getScaledWHD(n[o]),3),s=a[0],l=a[1],c=a[2],T=r(this.getScaledWHD(i[o]),3),Q=T[0],d=T[1],u=T[2],p=Math.max(s,Q);e.w+=p,t.w+=p,l>e.h&&(e.h=l),c>e.d&&(e.d=c),d>t.h&&(t.h=d),u>t.d&&(t.d=u)}},s.prototype.getScaledWHD=function(e){var t=e.w,n=e.h,r=e.d,i=e.rscale;return[t*i,n*i,r*i]},s.prototype.getUVQ=function(e,n){var i;if(!this.UVQ){var o=r([0,0,0],3),a=o[0],s=o[1],l=o[2];0===e.h&&0===e.d?a=this.getU():0===n.h&&0===n.d?a=-this.getV():(a=(i=r(t.prototype.getUVQ.call(this,e,n),3))[0],s=i[1],l=i[2]),this.UVQ=[a,s,l]}return this.UVQ},s}(t)}}(mmultiscripts$1);var mmultiscripts={},__extends$I=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$h=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$h=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$h.apply(this,arguments)};Object.defineProperty(mmultiscripts,"__esModule",{value:!0}),mmultiscripts.MmlNone=mmultiscripts.MmlMprescripts=mmultiscripts.MmlMmultiscripts=void 0;var MmlNode_js_1$l=MmlNode,msubsup_js_1$1=msubsup,MmlMmultiscripts=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$I(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"mmultiscripts"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"arity",{get:function(){return 1},enumerable:!1,configurable:!0}),t.prototype.setChildInheritedAttributes=function(e,t,n,r){this.childNodes[0].setInheritedAttributes(e,t,n,r);for(var i=!1,o=1,a=0;o<this.childNodes.length;o++){var s=this.childNodes[o];if(s.isKind("mprescripts")){if(!i&&(i=!0,o%2==0)){var l=this.factory.create("mrow");this.childNodes.splice(o,0,l),l.parent=this,o++}}else{var c=r||a%2==0;s.setInheritedAttributes(e,!1,n+1,c),a++}}this.childNodes.length%2==(i?1:0)&&(this.appendChild(this.factory.create("mrow")),this.childNodes[this.childNodes.length-1].setInheritedAttributes(e,!1,n+1,r))},t.prototype.verifyChildren=function(t){for(var n=!1,r=t.fixMmultiscripts,i=0;i<this.childNodes.length;i++){var o=this.childNodes[i];o.isKind("mprescripts")&&(n?o.mError(o.kind+" can only appear once in "+this.kind,t,!0):(n=!0,i%2!=0||r||this.mError("There must be an equal number of prescripts of each type",t)))}this.childNodes.length%2!=(n?1:0)||r||this.mError("There must be an equal number of scripts of each type",t),e.prototype.verifyChildren.call(this,t)},t.defaults=__assign$h({},msubsup_js_1$1.MmlMsubsup.defaults),t}(msubsup_js_1$1.MmlMsubsup);mmultiscripts.MmlMmultiscripts=MmlMmultiscripts;var MmlMprescripts=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$I(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"mprescripts"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"arity",{get:function(){return 0},enumerable:!1,configurable:!0}),t.prototype.verifyTree=function(t){e.prototype.verifyTree.call(this,t),this.parent&&!this.parent.isKind("mmultiscripts")&&this.mError(this.kind+" must be a child of mmultiscripts",t,!0)},t.defaults=__assign$h({},MmlNode_js_1$l.AbstractMmlNode.defaults),t}(MmlNode_js_1$l.AbstractMmlNode);mmultiscripts.MmlMprescripts=MmlMprescripts;var hasRequiredMmultiscripts,MmlNone=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$I(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"none"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"arity",{get:function(){return 0},enumerable:!1,configurable:!0}),t.prototype.verifyTree=function(t){e.prototype.verifyTree.call(this,t),this.parent&&!this.parent.isKind("mmultiscripts")&&this.mError(this.kind+" must be a child of mmultiscripts",t,!0)},t.defaults=__assign$h({},MmlNode_js_1$l.AbstractMmlNode.defaults),t}(MmlNode_js_1$l.AbstractMmlNode);function requireMmultiscripts(){if(hasRequiredMmultiscripts)return mmultiscripts$2;hasRequiredMmultiscripts=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),n=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(mmultiscripts$2,"__esModule",{value:!0}),mmultiscripts$2.SVGmmultiscripts=mmultiscripts$2.AlignX=void 0;var r=requireMsubsup(),i=mmultiscripts$1,o=mmultiscripts,a=string;function s(e){return{left:function(e,t){return 0},center:function(e,t){return(t-e)/2},right:function(e,t){return t-e}}[e]||function(e,t){return 0}}mmultiscripts$2.AlignX=s;var l=function(e){function r(){return null!==e&&e.apply(this,arguments)||this}return t(r,e),r.prototype.toSVG=function(e){var t=this.standardSVGnode(e),r=this.scriptData,i=this.node.getProperty("scriptalign")||"right left",o=n((0,a.split)(i+" "+i),2),s=o[0],l=o[1],c=this.combinePrePost(r.sub,r.psub),T=this.combinePrePost(r.sup,r.psup),Q=n(this.getUVQ(c,T),2),d=Q[0],u=Q[1],p=0;r.numPrescripts&&(p=this.addScripts(.05,d,u,this.firstPrescript,r.numPrescripts,s));var h=this.baseChild;h.toSVG(t),h.place(p,0),p+=h.getOuterBBox().w,r.numScripts&&this.addScripts(p,d,u,1,r.numScripts,l)},r.prototype.addScripts=function(e,t,r,i,o,a){var l=this.adaptor,c=s(a),T=l.append(this.element,this.svg("g")),Q=l.append(this.element,this.svg("g"));this.place(e,t,T),this.place(e,r,Q);for(var d=i+2*o,u=0;i<d;){var p=n([this.childNodes[i++],this.childNodes[i++]],2),h=p[0],m=p[1],f=n([h.getOuterBBox(),m.getOuterBBox()],2),g=f[0],b=f[1],y=n([g.rscale,b.rscale],2),L=y[0],v=y[1],w=Math.max(g.w*L,b.w*v);h.toSVG(Q),m.toSVG(T),h.place(u+c(g.w*L,w),0),m.place(u+c(b.w*v,w),0),u+=w}return e+u},r.kind=o.MmlMmultiscripts.prototype.kind,r}((0,i.CommonMmultiscriptsMixin)(r.SVGmsubsup));return mmultiscripts$2.SVGmmultiscripts=l,mmultiscripts$2}mmultiscripts.MmlNone=MmlNone;var mtable$2={},mtable$1={},numeric={};function sum(e){return e.reduce((function(e,t){return e+t}),0)}function max$1(e){return e.reduce((function(e,t){return Math.max(e,t)}),0)}Object.defineProperty(numeric,"__esModule",{value:!0}),numeric.max=numeric.sum=void 0,numeric.sum=sum,numeric.max=max$1;var __extends$H=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__read$e=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$9=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))},__values$h=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(mtable$1,"__esModule",{value:!0}),mtable$1.CommonMtableMixin=void 0;var BBox_js_1=BBox$1,string_js_1$3=string,numeric_js_1=numeric;function CommonMtableMixin(e){return function(e){function t(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=e.apply(this,__spreadArray$9([],__read$e(t),!1))||this;r.numCols=0,r.numRows=0,r.data=null,r.pwidthCells=[],r.pWidth=0,r.numCols=(0,numeric_js_1.max)(r.tableRows.map((function(e){return e.numCells}))),r.numRows=r.childNodes.length,r.hasLabels=r.childNodes.reduce((function(e,t){return e||t.node.isKind("mlabeledtr")}),!1),r.findContainer(),r.isTop=!r.container||r.container.node.isKind("math")&&!r.container.parent,r.isTop&&(r.jax.table=r),r.getPercentageWidth();var i=r.node.attributes;return r.frame="none"!==i.get("frame"),r.fLine=r.frame&&i.get("frame")?.07:0,r.fSpace=r.frame?r.convertLengths(r.getAttributeArray("framespacing")):[0,0],r.cSpace=r.convertLengths(r.getColumnAttributes("columnspacing")),r.rSpace=r.convertLengths(r.getRowAttributes("rowspacing")),r.cLines=r.getColumnAttributes("columnlines").map((function(e){return"none"===e?0:.07})),r.rLines=r.getRowAttributes("rowlines").map((function(e){return"none"===e?0:.07})),r.cWidths=r.getColumnWidths(),r.stretchRows(),r.stretchColumns(),r}return __extends$H(t,e),Object.defineProperty(t.prototype,"tableRows",{get:function(){return this.childNodes},enumerable:!1,configurable:!0}),t.prototype.findContainer=function(){for(var e=this,t=e.parent;t&&(t.node.notParent||t.node.isKind("mrow"));)e=t,t=t.parent;this.container=t,this.containerI=e.node.childPosition()},t.prototype.getPercentageWidth=function(){if(this.hasLabels)this.bbox.pwidth=BBox_js_1.BBox.fullWidth;else{var e=this.node.attributes.get("width");(0,string_js_1$3.isPercent)(e)&&(this.bbox.pwidth=e)}},t.prototype.stretchRows=function(){for(var e=this.node.attributes.get("equalrows"),t=e?this.getEqualRowHeight():0,n=e?this.getTableData():{H:[0],D:[0]},r=n.H,i=n.D,o=this.tableRows,a=0;a<this.numRows;a++){var s=e?[(t+r[a]-i[a])/2,(t-r[a]+i[a])/2]:null;o[a].stretchChildren(s)}},t.prototype.stretchColumns=function(){for(var e=0;e<this.numCols;e++){var t="number"==typeof this.cWidths[e]?this.cWidths[e]:null;this.stretchColumn(e,t)}},t.prototype.stretchColumn=function(e,t){var n,r,i,o,a,s,l=[];try{for(var c=__values$h(this.tableRows),T=c.next();!T.done;T=c.next())(m=T.value.getChild(e))&&0===(L=m.childNodes[0]).stretch.dir&&L.canStretch(2)&&l.push(L)}catch(e){n={error:e}}finally{try{T&&!T.done&&(r=c.return)&&r.call(c)}finally{if(n)throw n.error}}var Q=l.length,d=this.childNodes.length;if(Q&&d>1){if(null===t){t=0;var u=Q>1&&Q===d;try{for(var p=__values$h(this.tableRows),h=p.next();!h.done;h=p.next()){var m;if(m=h.value.getChild(e)){var f=0===(L=m.childNodes[0]).stretch.dir;if(u||f){var g=L.getBBox(f).w;g>t&&(t=g)}}}}catch(e){i={error:e}}finally{try{h&&!h.done&&(o=p.return)&&o.call(p)}finally{if(i)throw i.error}}}try{for(var b=__values$h(l),y=b.next();!y.done;y=b.next()){var L;(L=y.value).coreMO().getStretchedVariant([t])}}catch(e){a={error:e}}finally{try{y&&!y.done&&(s=b.return)&&s.call(b)}finally{if(a)throw a.error}}}},t.prototype.getTableData=function(){if(this.data)return this.data;for(var e=new Array(this.numRows).fill(0),t=new Array(this.numRows).fill(0),n=new Array(this.numCols).fill(0),r=new Array(this.numRows),i=new Array(this.numRows),o=[0],a=this.tableRows,s=0;s<a.length;s++){for(var l=0,c=a[s],T=c.node.attributes.get("rowalign"),Q=0;Q<c.numCells;Q++){var d=c.getChild(Q);l=this.updateHDW(d,Q,s,T,e,t,n,l),this.recordPWidthCell(d,Q)}r[s]=e[s],i[s]=t[s],c.labeled&&(l=this.updateHDW(c.childNodes[0],0,s,T,e,t,o,l)),this.extendHD(s,e,t,l),this.extendHD(s,r,i,l)}var u=o[0];return this.data={H:e,D:t,W:n,NH:r,ND:i,L:u},this.data},t.prototype.updateHDW=function(e,t,n,r,i,o,a,s){var l=e.getBBox(),c=l.h,T=l.d,Q=l.w,d=e.parent.bbox.rscale;1!==e.parent.bbox.rscale&&(c*=d,T*=d,Q*=d),this.node.getProperty("useHeight")&&(c<.75&&(c=.75),T<.25&&(T=.25));var u=0;return"baseline"!==(r=e.node.attributes.get("rowalign")||r)&&"axis"!==r&&(u=c+T,c=T=0),c>i[n]&&(i[n]=c),T>o[n]&&(o[n]=T),u>s&&(s=u),a&&Q>a[t]&&(a[t]=Q),s},t.prototype.extendHD=function(e,t,n,r){var i=(r-(t[e]+n[e]))/2;i<1e-5||(t[e]+=i,n[e]+=i)},t.prototype.recordPWidthCell=function(e,t){e.childNodes[0]&&e.childNodes[0].getBBox().pwidth&&this.pwidthCells.push([e,t])},t.prototype.computeBBox=function(e,t){var n,r,i=this.getTableData(),o=i.H,a=i.D;if(this.node.attributes.get("equalrows")){var s=this.getEqualRowHeight();n=(0,numeric_js_1.sum)([].concat(this.rLines,this.rSpace))+s*this.numRows}else n=(0,numeric_js_1.sum)(o.concat(a,this.rLines,this.rSpace));n+=2*(this.fLine+this.fSpace[1]);var l=this.getComputedWidths();r=(0,numeric_js_1.sum)(l.concat(this.cLines,this.cSpace))+2*(this.fLine+this.fSpace[0]);var c=this.node.attributes.get("width");"auto"!==c&&(r=Math.max(this.length2em(c,0)+2*this.fLine,r));var T=__read$e(this.getBBoxHD(n),2),Q=T[0],d=T[1];e.h=Q,e.d=d,e.w=r;var u=__read$e(this.getBBoxLR(),2),p=u[0],h=u[1];e.L=p,e.R=h,(0,string_js_1$3.isPercent)(c)||this.setColumnPWidths()},t.prototype.setChildPWidths=function(e,t,n){var r=this.node.attributes.get("width");if(!(0,string_js_1$3.isPercent)(r))return!1;this.hasLabels||(this.bbox.pwidth="",this.container.bbox.pwidth="");var i=this.bbox,o=i.w,a=i.L,s=i.R,l=this.node.attributes.get("data-width-includes-label"),c=Math.max(o,this.length2em(r,Math.max(t,a+o+s)))-(l?a+s:0),T=this.node.attributes.get("equalcolumns")?Array(this.numCols).fill(this.percent(1/Math.max(1,this.numCols))):this.getColumnAttributes("columnwidth",0);this.cWidths=this.getColumnWidthsFixed(T,c);var Q=this.getComputedWidths();return this.pWidth=(0,numeric_js_1.sum)(Q.concat(this.cLines,this.cSpace))+2*(this.fLine+this.fSpace[0]),this.isTop&&(this.bbox.w=this.pWidth),this.setColumnPWidths(),this.pWidth!==o&&this.parent.invalidateBBox(),this.pWidth!==o},t.prototype.setColumnPWidths=function(){var e,t,n=this.cWidths;try{for(var r=__values$h(this.pwidthCells),i=r.next();!i.done;i=r.next()){var o=__read$e(i.value,2),a=o[0],s=o[1];a.setChildPWidths(!1,n[s])&&(a.invalidateBBox(),a.getBBox())}}catch(t){e={error:t}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}},t.prototype.getBBoxHD=function(e){var t=__read$e(this.getAlignmentRow(),2),n=t[0],r=t[1];if(null===r){var i=this.font.params.axis_height,o=e/2;return{top:[0,e],center:[o,o],bottom:[e,0],baseline:[o,o],axis:[o+i,o-i]}[n]||[o,o]}var a=this.getVerticalPosition(r,n);return[a,e-a]},t.prototype.getBBoxLR=function(){if(this.hasLabels){var e=this.node.attributes,t=e.get("side"),n=__read$e(this.getPadAlignShift(t),2),r=n[0],i=n[1],o=this.hasLabels&&!!e.get("data-width-includes-label");return o&&this.frame&&this.fSpace[0]&&(r-=this.fSpace[0]),"center"!==i||o?"left"===t?[r,0]:[0,r]:[r,r]}return[0,0]},t.prototype.getPadAlignShift=function(e){var t=this.getTableData().L+this.length2em(this.node.attributes.get("minlabelspacing")),n=__read$e(null==this.styles?["",""]:[this.styles.get("padding-left"),this.styles.get("padding-right")],2),r=n[0],i=n[1];(r||i)&&(t=Math.max(t,this.length2em(r||"0"),this.length2em(i||"0")));var o=__read$e(this.getAlignShift(),2),a=o[0],s=o[1];return a===e&&(s="left"===e?Math.max(t,s)-t:Math.min(-t,s)+t),[t,a,s]},t.prototype.getAlignShift=function(){return this.isTop?e.prototype.getAlignShift.call(this):[this.container.getChildAlign(this.containerI),0]},t.prototype.getWidth=function(){return this.pWidth||this.getBBox().w},t.prototype.getEqualRowHeight=function(){var e=this.getTableData(),t=e.H,n=e.D,r=Array.from(t.keys()).map((function(e){return t[e]+n[e]}));return Math.max.apply(Math,r)},t.prototype.getComputedWidths=function(){var e=this,t=this.getTableData().W,n=Array.from(t.keys()).map((function(n){return"number"==typeof e.cWidths[n]?e.cWidths[n]:t[n]}));return this.node.attributes.get("equalcolumns")&&(n=Array(n.length).fill((0,numeric_js_1.max)(n))),n},t.prototype.getColumnWidths=function(){var e=this.node.attributes.get("width");if(this.node.attributes.get("equalcolumns"))return this.getEqualColumns(e);var t=this.getColumnAttributes("columnwidth",0);return"auto"===e?this.getColumnWidthsAuto(t):(0,string_js_1$3.isPercent)(e)?this.getColumnWidthsPercent(t):this.getColumnWidthsFixed(t,this.length2em(e))},t.prototype.getEqualColumns=function(e){var t,n=Math.max(1,this.numCols);if("auto"===e){var r=this.getTableData().W;t=(0,numeric_js_1.max)(r)}else if((0,string_js_1$3.isPercent)(e))t=this.percent(1/n);else{var i=(0,numeric_js_1.sum)([].concat(this.cLines,this.cSpace))+2*this.fSpace[0];t=Math.max(0,this.length2em(e)-i)/n}return Array(this.numCols).fill(t)},t.prototype.getColumnWidthsAuto=function(e){var t=this;return e.map((function(e){return"auto"===e||"fit"===e?null:(0,string_js_1$3.isPercent)(e)?e:t.length2em(e)}))},t.prototype.getColumnWidthsPercent=function(e){var t=this,n=e.indexOf("fit")>=0,r=(n?this.getTableData():{W:null}).W;return Array.from(e.keys()).map((function(i){var o=e[i];return"fit"===o?null:"auto"===o?n?r[i]:null:(0,string_js_1$3.isPercent)(o)?o:t.length2em(o)}))},t.prototype.getColumnWidthsFixed=function(e,t){var n=this,r=Array.from(e.keys()),i=r.filter((function(t){return"fit"===e[t]})),o=r.filter((function(t){return"auto"===e[t]})),a=i.length||o.length,s=(a?this.getTableData():{W:null}).W,l=t-(0,numeric_js_1.sum)([].concat(this.cLines,this.cSpace))-2*this.fSpace[0],c=l;r.forEach((function(t){var r=e[t];c-="fit"===r||"auto"===r?s[t]:n.length2em(r,l)}));var T=a&&c>0?c/a:0;return r.map((function(t){var r=e[t];return"fit"===r?s[t]+T:"auto"===r?s[t]+(0===i.length?T:0):n.length2em(r,l)}))},t.prototype.getVerticalPosition=function(e,t){for(var n=this.node.attributes.get("equalrows"),r=this.getTableData(),i=r.H,o=r.D,a=n?this.getEqualRowHeight():0,s=this.getRowHalfSpacing(),l=this.fLine,c=0;c<e;c++)l+=s[c]+(n?a:i[c]+o[c])+s[c+1]+this.rLines[c];var T=__read$e(n?[(a+i[e]-o[e])/2,(a-i[e]+o[e])/2]:[i[e],o[e]],2),Q=T[0],d=T[1];return l+({top:0,center:s[e]+(Q+d)/2,bottom:s[e]+Q+d+s[e+1],baseline:s[e]+Q,axis:s[e]+Q-.25}[t]||0)},t.prototype.getEmHalfSpacing=function(e,t,n){void 0===n&&(n=1);var r=this.em(e*n),i=this.addEm(t,2/n);return i.unshift(r),i.push(r),i},t.prototype.getRowHalfSpacing=function(){var e=this.rSpace.map((function(e){return e/2}));return e.unshift(this.fSpace[1]),e.push(this.fSpace[1]),e},t.prototype.getColumnHalfSpacing=function(){var e=this.cSpace.map((function(e){return e/2}));return e.unshift(this.fSpace[0]),e.push(this.fSpace[0]),e},t.prototype.getAlignmentRow=function(){var e=__read$e((0,string_js_1$3.split)(this.node.attributes.get("align")),2),t=e[0],n=e[1];if(null==n)return[t,null];var r=parseInt(n);return r<0&&(r+=this.numRows+1),[t,r<1||r>this.numRows?null:r-1]},t.prototype.getColumnAttributes=function(e,t){void 0===t&&(t=1);var n=this.numCols-t,r=this.getAttributeArray(e);if(0===r.length)return null;for(;r.length<n;)r.push(r[r.length-1]);return r.length>n&&r.splice(n),r},t.prototype.getRowAttributes=function(e,t){void 0===t&&(t=1);var n=this.numRows-t,r=this.getAttributeArray(e);if(0===r.length)return null;for(;r.length<n;)r.push(r[r.length-1]);return r.length>n&&r.splice(n),r},t.prototype.getAttributeArray=function(e){var t=this.node.attributes.get(e);return t?(0,string_js_1$3.split)(t):[this.node.attributes.getDefault(e)]},t.prototype.addEm=function(e,t){var n=this;return void 0===t&&(t=1),e?e.map((function(e){return n.em(e/t)})):null},t.prototype.convertLengths=function(e){var t=this;return e?e.map((function(e){return t.length2em(e)})):null},t}(e)}mtable$1.CommonMtableMixin=CommonMtableMixin;var mtable={},__extends$G=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$g=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$g=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$g.apply(this,arguments)},__values$g=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(mtable,"__esModule",{value:!0}),mtable.MmlMtable=void 0;var hasRequiredMtable,MmlNode_js_1$k=MmlNode,string_js_1$2=string,MmlMtable=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.properties={useHeight:!0},t.texclass=MmlNode_js_1$k.TEXCLASS.ORD,t}return __extends$G(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"mtable"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"linebreakContainer",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.setInheritedAttributes=function(t,n,r,i){var o,a;try{for(var s=__values$g(MmlNode_js_1$k.indentAttributes),l=s.next();!l.done;l=s.next()){var c=l.value;t[c]&&this.attributes.setInherited(c,t[c][1]),void 0!==this.attributes.getExplicit(c)&&delete this.attributes.getAllAttributes()[c]}}catch(e){o={error:e}}finally{try{l&&!l.done&&(a=s.return)&&a.call(s)}finally{if(o)throw o.error}}e.prototype.setInheritedAttributes.call(this,t,n,r,i)},t.prototype.setChildInheritedAttributes=function(e,t,n,r){var i,o,a,s;try{for(var l=__values$g(this.childNodes),c=l.next();!c.done;c=l.next())(p=c.value).isKind("mtr")||this.replaceChild(this.factory.create("mtr"),p).appendChild(p)}catch(e){i={error:e}}finally{try{c&&!c.done&&(o=l.return)&&o.call(l)}finally{if(i)throw i.error}}n=this.getProperty("scriptlevel")||n,t=!(!this.attributes.getExplicit("displaystyle")&&!this.attributes.getDefault("displaystyle")),e=this.addInheritedAttributes(e,{columnalign:this.attributes.get("columnalign"),rowalign:"center"});var T=this.attributes.getExplicit("data-cramped"),Q=(0,string_js_1$2.split)(this.attributes.get("rowalign"));try{for(var d=__values$g(this.childNodes),u=d.next();!u.done;u=d.next()){var p=u.value;e.rowalign[1]=Q.shift()||e.rowalign[1],p.setInheritedAttributes(e,t,n,!!T)}}catch(e){a={error:e}}finally{try{u&&!u.done&&(s=d.return)&&s.call(d)}finally{if(a)throw a.error}}},t.prototype.verifyChildren=function(t){for(var n=null,r=this.factory,i=0;i<this.childNodes.length;i++){var o=this.childNodes[i];if(o.isKind("mtr"))n=null;else{var a=o.isKind("mtd");if(n?(this.removeChild(o),i--):n=this.replaceChild(r.create("mtr"),o),n.appendChild(a?o:r.create("mtd",{},[o])),!t.fixMtables){o.parent.removeChild(o),o.parent=this,a&&n.appendChild(r.create("mtd"));var s=o.mError("Children of "+this.kind+" must be mtr or mlabeledtr",t,a);n.childNodes[n.childNodes.length-1].appendChild(s)}}}e.prototype.verifyChildren.call(this,t)},t.prototype.setTeXclass=function(e){var t,n;this.getPrevClass(e);try{for(var r=__values$g(this.childNodes),i=r.next();!i.done;i=r.next())i.value.setTeXclass(null)}catch(e){t={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}return this},t.defaults=__assign$g(__assign$g({},MmlNode_js_1$k.AbstractMmlNode.defaults),{align:"axis",rowalign:"baseline",columnalign:"center",groupalign:"{left}",alignmentscope:!0,columnwidth:"auto",width:"auto",rowspacing:"1ex",columnspacing:".8em",rowlines:"none",columnlines:"none",frame:"none",framespacing:"0.4em 0.5ex",equalrows:!1,equalcolumns:!1,displaystyle:!1,side:"right",minlabelspacing:"0.8em"}),t}(MmlNode_js_1$k.AbstractMmlNode);function requireMtable(){if(hasRequiredMtable)return mtable$2;hasRequiredMtable=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),n=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},r=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))};Object.defineProperty(mtable$2,"__esModule",{value:!0}),mtable$2.SVGmtable=void 0;var i=requireWrapper(),o=mtable,a=function(e){function i(t,n,r){void 0===r&&(r=null);var i=e.call(this,t,n,r)||this,o={"data-labels":!0};return i.isTop&&(o.transform="matrix(1 0 0 -1 0 0)"),i.labels=i.svg("g",o),i}return t(i,e),i.prototype.toSVG=function(e){var t=this.standardSVGnode(e);this.placeRows(t),this.handleColumnLines(t),this.handleRowLines(t),this.handleFrame(t);var n=this.handlePWidth(t);this.handleLabels(t,e,n)},i.prototype.placeRows=function(e){for(var t,i,o,a=this.node.attributes.get("equalrows"),s=this.getTableData(),l=s.H,c=s.D,T=this.getEqualRowHeight(),Q=this.getRowHalfSpacing(),d=r(r([this.fLine],n(this.rLines),!1),[this.fLine],!1),u=this.getBBox().h-d[0],p=0;p<this.numRows;p++){var h=this.childNodes[p];t=n(this.getRowHD(a,T,l[p],c[p]),2),h.H=t[0],h.D=t[1],i=n([Q[p],Q[p+1]],2),h.tSpace=i[0],h.bSpace=i[1],o=n([d[p],d[p+1]],2),h.tLine=o[0],h.bLine=o[1],h.toSVG(e),h.place(0,u-Q[p]-h.H),u-=Q[p]+h.H+h.D+Q[p+1]+d[p+1]}},i.prototype.getRowHD=function(e,t,n,r){return e?[(t+n-r)/2,(t-n+r)/2]:[n,r]},i.prototype.handleColor=function(){e.prototype.handleColor.call(this);var t=this.firstChild();t&&this.adaptor.setAttribute(t,"width",this.fixed(this.getWidth()))},i.prototype.handleColumnLines=function(e){if("none"!==this.node.attributes.get("columnlines")){var t=this.getColumnAttributes("columnlines");if(t)for(var n=this.getColumnHalfSpacing(),r=this.cLines,i=this.getComputedWidths(),o=this.fLine,a=0;a<t.length;a++)o+=n[a]+i[a]+n[a+1],"none"!==t[a]&&this.adaptor.append(e,this.makeVLine(o,t[a],r[a])),o+=r[a]}},i.prototype.handleRowLines=function(e){if("none"!==this.node.attributes.get("rowlines")){var t=this.getRowAttributes("rowlines");if(t)for(var r=this.node.attributes.get("equalrows"),i=this.getTableData(),o=i.H,a=i.D,s=this.getEqualRowHeight(),l=this.getRowHalfSpacing(),c=this.rLines,T=this.getBBox().h-this.fLine,Q=0;Q<t.length;Q++){var d=n(this.getRowHD(r,s,o[Q],a[Q]),2),u=d[0],p=d[1];T-=l[Q]+u+p+l[Q+1],"none"!==t[Q]&&this.adaptor.append(e,this.makeHLine(T,t[Q],c[Q])),T-=c[Q]}}},i.prototype.handleFrame=function(e){if(this.frame&&this.fLine){var t=this.getBBox(),n=t.h,r=t.d,i=t.w,o=this.node.attributes.get("frame");this.adaptor.append(e,this.makeFrame(i,n,r,o))}},i.prototype.handlePWidth=function(e){if(!this.pWidth)return 0;var t=this.getBBox(),n=t.w,r=t.L,i=t.R,o=r+this.pWidth+i,a=this.getAlignShift()[0],s=Math.max(this.isTop?o:0,this.container.getWrapWidth(this.containerI))-r-i,l=n-(this.pWidth>s?s:this.pWidth),c="left"===a?0:"right"===a?l:l/2;if(c){var T=this.svg("g",{},this.adaptor.childNodes(e));this.place(c,0,T),this.adaptor.append(e,T)}return c},i.prototype.lineClass=function(e){return"mjx-"+e},i.prototype.makeFrame=function(e,t,n,r){var i=this.fLine;return this.svg("rect",this.setLineThickness(i,r,{"data-frame":!0,class:this.lineClass(r),width:this.fixed(e-i),height:this.fixed(t+n-i),x:this.fixed(i/2),y:this.fixed(i/2-n)}))},i.prototype.makeVLine=function(e,t,n){var r=this.getBBox(),i=r.h,o=r.d,a="dotted"===t?n/2:0,s=this.fixed(e+n/2);return this.svg("line",this.setLineThickness(n,t,{"data-line":"v",class:this.lineClass(t),x1:s,y1:this.fixed(a-o),x2:s,y2:this.fixed(i-a)}))},i.prototype.makeHLine=function(e,t,n){var r=this.getBBox().w,i="dotted"===t?n/2:0,o=this.fixed(e-n/2);return this.svg("line",this.setLineThickness(n,t,{"data-line":"h",class:this.lineClass(t),x1:this.fixed(i),y1:o,x2:this.fixed(r-i),y2:o}))},i.prototype.setLineThickness=function(e,t,n){return.07!==e&&(n["stroke-thickness"]=this.fixed(e),"solid"!==t&&(n["stroke-dasharray"]=("dotted"===t?"0,":"")+this.fixed(2*e))),n},i.prototype.handleLabels=function(e,t,n){if(this.hasLabels){var r=this.labels,i=this.node.attributes.get("side");this.spaceLabels(),this.isTop?this.topTable(e,r,i):this.subTable(e,r,i,n)}},i.prototype.spaceLabels=function(){for(var e=this.adaptor,t=this.getBBox().h,n=this.getTableData().L,r=this.getRowHalfSpacing(),i=t-this.fLine,o=e.firstChild(this.labels),a=0;a<this.numRows;a++){var s=this.childNodes[a];if(s.node.isKind("mlabeledtr")){var l=s.childNodes[0];i-=r[a]+s.H,s.placeCell(l,{x:0,y:i,w:n,lSpace:0,rSpace:0,lLine:0,rLine:0}),i-=s.D+r[a+1]+this.rLines[a],o=e.next(o)}else i-=r[a]+s.H+s.D+r[a+1]+this.rLines[a]}},i.prototype.topTable=function(e,t,r){var i=this.adaptor,o=this.getBBox(),a=o.h,s=o.d,l=o.w,c=o.L,T=o.R,Q=c+(this.pWidth||l)+T,d=this.getTableData().L,u=n(this.getPadAlignShift(r),3),p=u[1],h=u[2]+("right"===p?-Q:"center"===p?-Q/2:0)+c,m="matrix(1 0 0 -1 0 0)",f="scale(".concat(this.jax.fixed(1e3*this.font.params.x_height/this.metrics.ex,2),")"),g="translate(0 ".concat(this.fixed(a),") ").concat(m," ").concat(f),b=this.svg("svg",{"data-table":!0,preserveAspectRatio:"left"===p?"xMinYMid":"right"===p?"xMaxYMid":"xMidYMid",viewBox:[this.fixed(-h),this.fixed(-a),1,this.fixed(a+s)].join(" ")},[this.svg("g",{transform:m},i.childNodes(e))]);t=this.svg("svg",{"data-labels":!0,preserveAspectRatio:"left"===r?"xMinYMid":"xMaxYMid",viewBox:["left"===r?0:this.fixed(d),this.fixed(-a),1,this.fixed(a+s)].join(" ")},[t]),i.append(e,this.svg("g",{transform:g},[b,t])),this.place(-c,0,e)},i.prototype.subTable=function(e,t,n,r){var i=this.adaptor,o=this.getBBox(),a=o.w,s=o.L,l=o.R,c=s+(this.pWidth||a)+l,T=this.getTableData().L,Q=this.getAlignShift()[0],d=Math.max(c,this.container.getWrapWidth(this.containerI));this.place("left"===n?("left"===Q?0:"right"===Q?c-d+r:(c-d)/2+r)-s:("left"===Q?d:"right"===Q?c+r:(d+c)/2+r)-s-T,0,t),i.append(e,t)},i.kind=o.MmlMtable.prototype.kind,i.styles={'g[data-mml-node="mtable"] > line[data-line], svg[data-table] > g > line[data-line]':{"stroke-width":"70px",fill:"none"},'g[data-mml-node="mtable"] > rect[data-frame], svg[data-table] > g > rect[data-frame]':{"stroke-width":"70px",fill:"none"},'g[data-mml-node="mtable"] > .mjx-dashed, svg[data-table] > g > .mjx-dashed':{"stroke-dasharray":"140"},'g[data-mml-node="mtable"] > .mjx-dotted, svg[data-table] > g > .mjx-dotted':{"stroke-linecap":"round","stroke-dasharray":"0,140"},'g[data-mml-node="mtable"] > g > svg':{overflow:"visible"}},i}((0,mtable$1.CommonMtableMixin)(i.SVGWrapper));return mtable$2.SVGmtable=a,mtable$2}mtable.MmlMtable=MmlMtable;var mtr$2={},mtr$1={},__extends$F=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__values$f=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};function CommonMtrMixin(e){return function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$F(t,e),Object.defineProperty(t.prototype,"fixesPWidth",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"numCells",{get:function(){return this.childNodes.length},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"labeled",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"tableCells",{get:function(){return this.childNodes},enumerable:!1,configurable:!0}),t.prototype.getChild=function(e){return this.childNodes[e]},t.prototype.getChildBBoxes=function(){return this.childNodes.map((function(e){return e.getBBox()}))},t.prototype.stretchChildren=function(e){var t,n,r,i,o,a;void 0===e&&(e=null);var s=[],l=this.labeled?this.childNodes.slice(1):this.childNodes;try{for(var c=__values$f(l),T=c.next();!T.done;T=c.next())(E=T.value.childNodes[0]).canStretch(1)&&s.push(E)}catch(e){t={error:e}}finally{try{T&&!T.done&&(n=c.return)&&n.call(c)}finally{if(t)throw t.error}}var Q=s.length,d=this.childNodes.length;if(Q&&d>1){if(null===e){var u=0,p=0,h=Q>1&&Q===d;try{for(var m=__values$f(l),f=m.next();!f.done;f=m.next()){var g=0===(E=f.value.childNodes[0]).stretch.dir;if(h||g){var b=E.getBBox(g),y=b.h,L=b.d;y>u&&(u=y),L>p&&(p=L)}}}catch(e){r={error:e}}finally{try{f&&!f.done&&(i=m.return)&&i.call(m)}finally{if(r)throw r.error}}e=[u,p]}try{for(var v=__values$f(s),w=v.next();!w.done;w=v.next()){var E;(E=w.value).coreMO().getStretchedVariant(e)}}catch(e){o={error:e}}finally{try{w&&!w.done&&(a=v.return)&&a.call(v)}finally{if(o)throw o.error}}}},t}(e)}function CommonMlabeledtrMixin(e){return function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$F(t,e),Object.defineProperty(t.prototype,"numCells",{get:function(){return Math.max(0,this.childNodes.length-1)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"labeled",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"tableCells",{get:function(){return this.childNodes.slice(1)},enumerable:!1,configurable:!0}),t.prototype.getChild=function(e){return this.childNodes[e+1]},t.prototype.getChildBBoxes=function(){return this.childNodes.slice(1).map((function(e){return e.getBBox()}))},t}(e)}Object.defineProperty(mtr$1,"__esModule",{value:!0}),mtr$1.CommonMlabeledtrMixin=mtr$1.CommonMtrMixin=void 0,mtr$1.CommonMtrMixin=CommonMtrMixin,mtr$1.CommonMlabeledtrMixin=CommonMlabeledtrMixin;var mtr={},__extends$E=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$f=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$f=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$f.apply(this,arguments)},__values$e=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(mtr,"__esModule",{value:!0}),mtr.MmlMlabeledtr=mtr.MmlMtr=void 0;var MmlNode_js_1$j=MmlNode,Attributes_js_1$3=Attributes,string_js_1$1=string,MmlMtr=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$E(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"mtr"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"linebreakContainer",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.setChildInheritedAttributes=function(e,t,n,r){var i,o,a,s;try{for(var l=__values$e(this.childNodes),c=l.next();!c.done;c=l.next())(u=c.value).isKind("mtd")||this.replaceChild(this.factory.create("mtd"),u).appendChild(u)}catch(e){i={error:e}}finally{try{c&&!c.done&&(o=l.return)&&o.call(l)}finally{if(i)throw i.error}}var T=(0,string_js_1$1.split)(this.attributes.get("columnalign"));1===this.arity&&T.unshift(this.parent.attributes.get("side")),e=this.addInheritedAttributes(e,{rowalign:this.attributes.get("rowalign"),columnalign:"center"});try{for(var Q=__values$e(this.childNodes),d=Q.next();!d.done;d=Q.next()){var u=d.value;e.columnalign[1]=T.shift()||e.columnalign[1],u.setInheritedAttributes(e,t,n,r)}}catch(e){a={error:e}}finally{try{d&&!d.done&&(s=Q.return)&&s.call(Q)}finally{if(a)throw a.error}}},t.prototype.verifyChildren=function(t){var n,r;if(!this.parent||this.parent.isKind("mtable")){try{for(var i=__values$e(this.childNodes),o=i.next();!o.done;o=i.next()){var a=o.value;a.isKind("mtd")||(this.replaceChild(this.factory.create("mtd"),a).appendChild(a),t.fixMtables||a.mError("Children of "+this.kind+" must be mtd",t))}}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}e.prototype.verifyChildren.call(this,t)}else this.mError(this.kind+" can only be a child of an mtable",t,!0)},t.prototype.setTeXclass=function(e){var t,n;this.getPrevClass(e);try{for(var r=__values$e(this.childNodes),i=r.next();!i.done;i=r.next())i.value.setTeXclass(null)}catch(e){t={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}return this},t.defaults=__assign$f(__assign$f({},MmlNode_js_1$j.AbstractMmlNode.defaults),{rowalign:Attributes_js_1$3.INHERIT,columnalign:Attributes_js_1$3.INHERIT,groupalign:Attributes_js_1$3.INHERIT}),t}(MmlNode_js_1$j.AbstractMmlNode);mtr.MmlMtr=MmlMtr;var hasRequiredMtr,MmlMlabeledtr=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$E(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"mlabeledtr"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"arity",{get:function(){return 1},enumerable:!1,configurable:!0}),t}(MmlMtr);function requireMtr(){if(hasRequiredMtr)return mtr$2;hasRequiredMtr=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),n=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},r=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))};Object.defineProperty(mtr$2,"__esModule",{value:!0}),mtr$2.SVGmlabeledtr=mtr$2.SVGmtr=void 0;var i=requireWrapper(),o=mtr$1,a=mtr,s=function(e){function i(){return null!==e&&e.apply(this,arguments)||this}return t(i,e),i.prototype.toSVG=function(e){var t=this.standardSVGnode(e);this.placeCells(t),this.placeColor()},i.prototype.placeCells=function(e){for(var t=this.parent.getColumnHalfSpacing(),i=r(r([this.parent.fLine],n(this.parent.cLines),!1),[this.parent.fLine],!1),o=this.parent.getComputedWidths(),a=1/this.getBBox().rscale,s=i[0],l=0;l<this.numCells;l++){var c=this.getChild(l);c.toSVG(e),s+=this.placeCell(c,{x:s,y:0,lSpace:t[l]*a,rSpace:t[l+1]*a,w:o[l]*a,lLine:i[l]*a,rLine:i[l+1]*a})}},i.prototype.placeCell=function(e,t){var r=t.x,i=t.y,o=t.lSpace,a=t.w,s=t.rSpace,l=t.lLine,c=t.rLine,T=1/this.getBBox().rscale,Q=n([this.H*T,this.D*T],2),d=Q[0],u=Q[1],p=n([this.tSpace*T,this.bSpace*T],2),h=p[0],m=p[1],f=n(e.placeCell(r+o,i,a,d,u),2),g=f[0],b=f[1],y=o+a+s;return e.placeColor(-(g+o+l/2),-(u+m+b),y+(l+c)/2,d+u+h+m),y+c},i.prototype.placeColor=function(){var e=1/this.getBBox().rscale,t=this.adaptor,r=this.firstChild();if(r&&"rect"===t.kind(r)&&t.getAttribute(r,"data-bgcolor")){var i=n([this.tLine/2*e,this.bLine/2*e],2),o=i[0],a=i[1],s=n([this.tSpace*e,this.bSpace*e],2),l=s[0],c=s[1],T=n([this.H*e,this.D*e],2),Q=T[0],d=T[1];t.setAttribute(r,"y",this.fixed(-(d+c+a))),t.setAttribute(r,"width",this.fixed(this.parent.getWidth()*e)),t.setAttribute(r,"height",this.fixed(o+l+Q+d+c+a))}},i.kind=a.MmlMtr.prototype.kind,i}((0,mtr$1.CommonMtrMixin)(i.SVGWrapper));mtr$2.SVGmtr=s;var l=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return t(n,e),n.prototype.toSVG=function(t){e.prototype.toSVG.call(this,t);var n=this.childNodes[0];n&&n.toSVG(this.parent.labels)},n.kind=a.MmlMlabeledtr.prototype.kind,n}((0,o.CommonMlabeledtrMixin)(s));return mtr$2.SVGmlabeledtr=l,mtr$2}mtr.MmlMlabeledtr=MmlMlabeledtr;var mtd$2={},mtd$1={},__extends$D=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();function CommonMtdMixin(e){return function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$D(t,e),Object.defineProperty(t.prototype,"fixesPWidth",{get:function(){return!1},enumerable:!1,configurable:!0}),t.prototype.invalidateBBox=function(){this.bboxComputed=!1},t.prototype.getWrapWidth=function(e){var t=this.parent.parent,n=this.parent,r=this.node.childPosition()-(n.labeled?1:0);return"number"==typeof t.cWidths[r]?t.cWidths[r]:t.getTableData().W[r]},t.prototype.getChildAlign=function(e){return this.node.attributes.get("columnalign")},t}(e)}Object.defineProperty(mtd$1,"__esModule",{value:!0}),mtd$1.CommonMtdMixin=void 0,mtd$1.CommonMtdMixin=CommonMtdMixin;var mtd={},__extends$C=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$e=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$e=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$e.apply(this,arguments)};Object.defineProperty(mtd,"__esModule",{value:!0}),mtd.MmlMtd=void 0;var hasRequiredMtd,MmlNode_js_1$i=MmlNode,Attributes_js_1$2=Attributes,MmlMtd=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$C(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"mtd"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"arity",{get:function(){return-1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"linebreakContainer",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.verifyChildren=function(t){!this.parent||this.parent.isKind("mtr")?e.prototype.verifyChildren.call(this,t):this.mError(this.kind+" can only be a child of an mtr or mlabeledtr",t,!0)},t.prototype.setTeXclass=function(e){return this.getPrevClass(e),this.childNodes[0].setTeXclass(null),this},t.defaults=__assign$e(__assign$e({},MmlNode_js_1$i.AbstractMmlBaseNode.defaults),{rowspan:1,columnspan:1,rowalign:Attributes_js_1$2.INHERIT,columnalign:Attributes_js_1$2.INHERIT,groupalign:Attributes_js_1$2.INHERIT}),t}(MmlNode_js_1$i.AbstractMmlBaseNode);function requireMtd(){if(hasRequiredMtd)return mtd$2;hasRequiredMtd=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)});Object.defineProperty(mtd$2,"__esModule",{value:!0}),mtd$2.SVGmtd=void 0;var n=requireWrapper(),r=mtd,i=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return t(n,e),n.prototype.placeCell=function(e,t,n,r,i){var o=this.getBBox(),a=Math.max(o.h,.75),s=Math.max(o.d,.25),l=this.node.attributes.get("columnalign"),c=this.node.attributes.get("rowalign"),T=this.getAlignX(n,o,l),Q=this.getAlignY(r,i,a,s,c);return this.place(e+T,t+Q),[T,Q]},n.prototype.placeColor=function(e,t,n,r){var i=this.adaptor,o=this.firstChild();o&&"rect"===i.kind(o)&&i.getAttribute(o,"data-bgcolor")&&(i.setAttribute(o,"x",this.fixed(e)),i.setAttribute(o,"y",this.fixed(t)),i.setAttribute(o,"width",this.fixed(n)),i.setAttribute(o,"height",this.fixed(r)))},n.kind=r.MmlMtd.prototype.kind,n}((0,mtd$1.CommonMtdMixin)(n.SVGWrapper));return mtd$2.SVGmtd=i,mtd$2}mtd.MmlMtd=MmlMtd;var maction$2={},maction$1={};!function(e){var t,n=commonjsGlobal&&commonjsGlobal.__extends||(t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},t(e,n)},function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),r=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},i=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))};Object.defineProperty(e,"__esModule",{value:!0}),e.CommonMactionMixin=e.TooltipData=void 0;var o=string;e.TooltipData={dx:".2em",dy:".1em",postDelay:600,clearDelay:100,hoverTimer:new Map,clearTimer:new Map,stopTimers:function(e,t){t.clearTimer.has(e)&&(clearTimeout(t.clearTimer.get(e)),t.clearTimer.delete(e)),t.hoverTimer.has(e)&&(clearTimeout(t.hoverTimer.get(e)),t.hoverTimer.delete(e))}},e.CommonMactionMixin=function(t){return function(t){function a(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];var o=t.apply(this,i([],r(e),!1))||this,a=o.constructor.actions,s=o.node.attributes.get("actiontype"),l=r(a.get(s)||[function(e,t){},{}],2),c=l[0],T=l[1];return o.action=c,o.data=T,o.getParameters(),o}return n(a,t),Object.defineProperty(a.prototype,"selected",{get:function(){var e=this.node.attributes.get("selection"),t=Math.max(1,Math.min(this.childNodes.length,e))-1;return this.childNodes[t]||this.wrap(this.node.selected)},enumerable:!1,configurable:!0}),a.prototype.getParameters=function(){var t=this.node.attributes.get("data-offsets"),n=r((0,o.split)(t||""),2),i=n[0],a=n[1];this.dx=this.length2em(i||e.TooltipData.dx),this.dy=this.length2em(a||e.TooltipData.dy)},a.prototype.computeBBox=function(e,t){void 0===t&&(t=!1),e.updateFrom(this.selected.getOuterBBox()),this.selected.setChildPWidths(t)},a}(t)}}(maction$1);var maction={},__extends$B=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$d=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$d=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$d.apply(this,arguments)};Object.defineProperty(maction,"__esModule",{value:!0}),maction.MmlMaction=void 0;var hasRequiredMaction,MmlNode_js_1$h=MmlNode,MmlMaction=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$B(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"maction"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"arity",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"selected",{get:function(){var e=this.attributes.get("selection"),t=Math.max(1,Math.min(this.childNodes.length,e))-1;return this.childNodes[t]||this.factory.create("mrow")},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isEmbellished",{get:function(){return this.selected.isEmbellished},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isSpacelike",{get:function(){return this.selected.isSpacelike},enumerable:!1,configurable:!0}),t.prototype.core=function(){return this.selected.core()},t.prototype.coreMO=function(){return this.selected.coreMO()},t.prototype.verifyAttributes=function(t){e.prototype.verifyAttributes.call(this,t),"toggle"!==this.attributes.get("actiontype")&&void 0!==this.attributes.getExplicit("selection")&&delete this.attributes.getAllAttributes().selection},t.prototype.setTeXclass=function(e){"tooltip"===this.attributes.get("actiontype")&&this.childNodes[1]&&this.childNodes[1].setTeXclass(null);var t=this.selected;return e=t.setTeXclass(e),this.updateTeXclass(t),e},t.prototype.nextToggleSelection=function(){var e=Math.max(1,this.attributes.get("selection")+1);e>this.childNodes.length&&(e=1),this.attributes.set("selection",e)},t.defaults=__assign$d(__assign$d({},MmlNode_js_1$h.AbstractMmlNode.defaults),{actiontype:"toggle",selection:1}),t}(MmlNode_js_1$h.AbstractMmlNode);function requireMaction(){if(hasRequiredMaction)return maction$2;hasRequiredMaction=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)});Object.defineProperty(maction$2,"__esModule",{value:!0}),maction$2.SVGmaction=void 0;var n=requireWrapper(),r=maction$1,i=maction,o=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return t(n,e),n.prototype.toSVG=function(e){var t=this.standardSVGnode(e),n=this.selected,r=n.getOuterBBox(),i=r.h,o=r.d,a=r.w;this.adaptor.append(this.element,this.svg("rect",{width:this.fixed(a),height:this.fixed(i+o),y:this.fixed(-o),fill:"none","pointer-events":"all"})),n.toSVG(t);var s=n.getOuterBBox();n.element&&n.place(s.L*s.rscale,0),this.action(this,this.data)},n.prototype.setEventHandler=function(e,t){this.element.addEventListener(e,t)},n.kind=i.MmlMaction.prototype.kind,n.styles={'[jax="SVG"] mjx-tool':{display:"inline-block",position:"relative",width:0,height:0},'[jax="SVG"] mjx-tool > mjx-tip':{position:"absolute",top:0,left:0},"mjx-tool > mjx-tip":{display:"inline-block",padding:".2em",border:"1px solid #888","font-size":"70%","background-color":"#F8F8F8",color:"black","box-shadow":"2px 2px 5px #AAAAAA"},'g[data-mml-node="maction"][data-toggle]':{cursor:"pointer"},"mjx-status":{display:"block",position:"fixed",left:"1em",bottom:"1em","min-width":"25%",padding:".2em .4em",border:"1px solid #888","font-size":"90%","background-color":"#F8F8F8",color:"black"}},n.actions=new Map([["toggle",[function(e,t){e.adaptor.setAttribute(e.element,"data-toggle",e.node.attributes.get("selection"));var n=e.factory.jax.math,r=e.factory.jax.document,i=e.node;e.setEventHandler("click",(function(e){n.end.node||(n.start.node=n.end.node=n.typesetRoot,n.start.n=n.end.n=0),i.nextToggleSelection(),n.rerender(r),e.stopPropagation()}))},{}]],["tooltip",[function(e,t){var n=e.childNodes[1];if(n){var r=e.firstChild();if(n.node.isKind("mtext")){var i=n.node.getText();e.adaptor.insert(e.svg("title",{},[e.text(i)]),r)}else{var o=e.adaptor,a=e.jax.container,s=e.node.factory.create("math",{},[e.childNodes[1].node]),l=e.html("mjx-tool",{},[e.html("mjx-tip")]),c=o.append(r,e.svg("foreignObject",{style:{display:"none"}},[l]));e.jax.processMath(s,o.firstChild(l)),e.childNodes[1].node.parent=e.node,e.setEventHandler("mouseover",(function(n){t.stopTimers(e,t),t.hoverTimer.set(e,setTimeout((function(){o.setStyle(l,"left","0"),o.setStyle(l,"top","0"),o.append(a,l);var t=o.nodeBBox(l),n=o.nodeBBox(e.element),r=(n.right-t.left)/e.metrics.em+e.dx,i=(n.bottom-t.bottom)/e.metrics.em+e.dy;o.setStyle(l,"left",e.px(r)),o.setStyle(l,"top",e.px(i))}),t.postDelay)),n.stopPropagation()})),e.setEventHandler("mouseout",(function(n){t.stopTimers(e,t);var r=setTimeout((function(){return o.append(c,l)}),t.clearDelay);t.clearTimer.set(e,r),n.stopPropagation()}))}}},r.TooltipData]],["statusline",[function(e,t){var n=e.childNodes[1];if(n&&n.node.isKind("mtext")){var r=e.adaptor,i=n.node.getText();r.setAttribute(e.element,"data-statusline",i),e.setEventHandler("mouseover",(function(n){if(null===t.status){var o=r.body(r.document);t.status=r.append(o,e.html("mjx-status",{},[e.text(i)]))}n.stopPropagation()})),e.setEventHandler("mouseout",(function(e){t.status&&(r.remove(t.status),t.status=null),e.stopPropagation()}))}},{status:null}]]]),n}((0,maction$1.CommonMactionMixin)(n.SVGWrapper));return maction$2.SVGmaction=o,maction$2}maction.MmlMaction=MmlMaction;var menclose$2={},menclose$1={},Notation$2={};!function(e){var t=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(e,"__esModule",{value:!0}),e.CommonArrow=e.CommonDiagonalArrow=e.CommonDiagonalStrike=e.CommonBorder2=e.CommonBorder=e.arrowBBox=e.diagonalArrowDef=e.arrowDef=e.arrowBBoxW=e.arrowBBoxHD=e.arrowHead=e.fullBorder=e.fullPadding=e.fullBBox=e.sideNames=e.sideIndex=e.SOLID=e.PADDING=e.THICKNESS=e.ARROWY=e.ARROWDX=e.ARROWX=void 0,e.ARROWX=4,e.ARROWDX=1,e.ARROWY=2,e.THICKNESS=.067,e.PADDING=.2,e.SOLID=e.THICKNESS+"em solid",e.sideIndex={top:0,right:1,bottom:2,left:3},e.sideNames=Object.keys(e.sideIndex),e.fullBBox=function(e){return new Array(4).fill(e.thickness+e.padding)},e.fullPadding=function(e){return new Array(4).fill(e.padding)},e.fullBorder=function(e){return new Array(4).fill(e.thickness)},e.arrowHead=function(e){return Math.max(e.padding,e.thickness*(e.arrowhead.x+e.arrowhead.dx+1))},e.arrowBBoxHD=function(e,t){if(e.childNodes[0]){var n=e.childNodes[0].getBBox(),r=n.h,i=n.d;t[0]=t[2]=Math.max(0,e.thickness*e.arrowhead.y-(r+i)/2)}return t},e.arrowBBoxW=function(e,t){if(e.childNodes[0]){var n=e.childNodes[0].getBBox().w;t[1]=t[3]=Math.max(0,e.thickness*e.arrowhead.y-n/2)}return t},e.arrowDef={up:[-Math.PI/2,!1,!0,"verticalstrike"],down:[Math.PI/2,!1,!0,"verticakstrike"],right:[0,!1,!1,"horizontalstrike"],left:[Math.PI,!1,!1,"horizontalstrike"],updown:[Math.PI/2,!0,!0,"verticalstrike uparrow downarrow"],leftright:[0,!0,!1,"horizontalstrike leftarrow rightarrow"]},e.diagonalArrowDef={updiagonal:[-1,0,!1,"updiagonalstrike northeastarrow"],northeast:[-1,0,!1,"updiagonalstrike updiagonalarrow"],southeast:[1,0,!1,"downdiagonalstrike"],northwest:[1,Math.PI,!1,"downdiagonalstrike"],southwest:[-1,Math.PI,!1,"updiagonalstrike"],northeastsouthwest:[-1,0,!0,"updiagonalstrike northeastarrow updiagonalarrow southwestarrow"],northwestsoutheast:[1,0,!0,"downdiagonalstrike northwestarrow southeastarrow"]},e.arrowBBox={up:function(t){return(0,e.arrowBBoxW)(t,[(0,e.arrowHead)(t),0,t.padding,0])},down:function(t){return(0,e.arrowBBoxW)(t,[t.padding,0,(0,e.arrowHead)(t),0])},right:function(t){return(0,e.arrowBBoxHD)(t,[0,(0,e.arrowHead)(t),0,t.padding])},left:function(t){return(0,e.arrowBBoxHD)(t,[0,t.padding,0,(0,e.arrowHead)(t)])},updown:function(t){return(0,e.arrowBBoxW)(t,[(0,e.arrowHead)(t),0,(0,e.arrowHead)(t),0])},leftright:function(t){return(0,e.arrowBBoxHD)(t,[0,(0,e.arrowHead)(t),0,(0,e.arrowHead)(t)])}},e.CommonBorder=function(t){return function(n){var r=e.sideIndex[n];return[n,{renderer:t,bbox:function(e){var t=[0,0,0,0];return t[r]=e.thickness+e.padding,t},border:function(e){var t=[0,0,0,0];return t[r]=e.thickness,t}}]}},e.CommonBorder2=function(t){return function(n,r,i){var o=e.sideIndex[r],a=e.sideIndex[i];return[n,{renderer:t,bbox:function(e){var t=e.thickness+e.padding,n=[0,0,0,0];return n[o]=n[a]=t,n},border:function(e){var t=[0,0,0,0];return t[o]=t[a]=e.thickness,t},remove:r+" "+i}]}},e.CommonDiagonalStrike=function(t){return function(n){var r="mjx-"+n.charAt(0)+"strike";return[n+"diagonalstrike",{renderer:t(r),bbox:e.fullBBox}]}},e.CommonDiagonalArrow=function(n){return function(r){var i=t(e.diagonalArrowDef[r],4),o=i[0],a=i[1],s=i[2];return[r+"arrow",{renderer:function(e,r){var i=t(e.arrowAW(),2),l=i[0],c=i[1],T=e.arrow(c,o*(l-a),s);n(e,T)},bbox:function(e){var n=e.arrowData(),r=n.a,i=n.x,o=n.y,a=t([e.arrowhead.x,e.arrowhead.y,e.arrowhead.dx],3),s=a[0],l=a[1],c=a[2],T=t(e.getArgMod(s+c,l),2),Q=T[0],d=T[1],u=o+(Q>r?e.thickness*d*Math.sin(Q-r):0),p=i+(Q>Math.PI/2-r?e.thickness*d*Math.sin(Q+r-Math.PI/2):0);return[u,p,u,p]},remove:i[3]}]}},e.CommonArrow=function(n){return function(r){var i=t(e.arrowDef[r],4),o=i[0],a=i[1],s=i[2],l=i[3];return[r+"arrow",{renderer:function(e,r){var i=e.getBBox(),l=i.w,c=i.h,T=i.d,Q=t(s?[c+T,"X"]:[l,"Y"],2),d=Q[0],u=Q[1],p=e.getOffset(u),h=e.arrow(d,o,a,u,p);n(e,h)},bbox:e.arrowBBox[r],remove:l}]}}}(Notation$2);var __extends$A=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__createBinding$6=commonjsGlobal&&commonjsGlobal.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),__setModuleDefault$6=commonjsGlobal&&commonjsGlobal.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar$6=commonjsGlobal&&commonjsGlobal.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&__createBinding$6(t,e,n);return __setModuleDefault$6(t,e),t},__read$d=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$8=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))},__values$d=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(menclose$1,"__esModule",{value:!0}),menclose$1.CommonMencloseMixin=void 0;var Notation$1=__importStar$6(Notation$2),string_js_1=string;function CommonMencloseMixin(e){return function(e){function t(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=e.apply(this,__spreadArray$8([],__read$d(t),!1))||this;return r.notations={},r.renderChild=null,r.msqrt=null,r.padding=Notation$1.PADDING,r.thickness=Notation$1.THICKNESS,r.arrowhead={x:Notation$1.ARROWX,y:Notation$1.ARROWY,dx:Notation$1.ARROWDX},r.TRBL=[0,0,0,0],r.getParameters(),r.getNotations(),r.removeRedundantNotations(),r.initializeNotations(),r.TRBL=r.getBBoxExtenders(),r}return __extends$A(t,e),t.prototype.getParameters=function(){var e=this.node.attributes,t=e.get("data-padding");void 0!==t&&(this.padding=this.length2em(t,Notation$1.PADDING));var n=e.get("data-thickness");void 0!==n&&(this.thickness=this.length2em(n,Notation$1.THICKNESS));var r=e.get("data-arrowhead");if(void 0!==r){var i=__read$d((0,string_js_1.split)(r),3),o=i[0],a=i[1],s=i[2];this.arrowhead={x:o?parseFloat(o):Notation$1.ARROWX,y:a?parseFloat(a):Notation$1.ARROWY,dx:s?parseFloat(s):Notation$1.ARROWDX}}},t.prototype.getNotations=function(){var e,t,n=this.constructor.notations;try{for(var r=__values$d((0,string_js_1.split)(this.node.attributes.get("notation"))),i=r.next();!i.done;i=r.next()){var o=i.value,a=n.get(o);a&&(this.notations[o]=a,a.renderChild&&(this.renderChild=a.renderer))}}catch(t){e={error:t}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}},t.prototype.removeRedundantNotations=function(){var e,t,n,r;try{for(var i=__values$d(Object.keys(this.notations)),o=i.next();!o.done;o=i.next()){var a=o.value;if(this.notations[a]){var s=this.notations[a].remove||"";try{for(var l=(n=void 0,__values$d(s.split(/ /))),c=l.next();!c.done;c=l.next()){var T=c.value;delete this.notations[T]}}catch(e){n={error:e}}finally{try{c&&!c.done&&(r=l.return)&&r.call(l)}finally{if(n)throw n.error}}}}}catch(t){e={error:t}}finally{try{o&&!o.done&&(t=i.return)&&t.call(i)}finally{if(e)throw e.error}}},t.prototype.initializeNotations=function(){var e,t;try{for(var n=__values$d(Object.keys(this.notations)),r=n.next();!r.done;r=n.next()){var i=r.value,o=this.notations[i].init;o&&o(this)}}catch(t){e={error:t}}finally{try{r&&!r.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}},t.prototype.computeBBox=function(e,t){void 0===t&&(t=!1);var n=__read$d(this.TRBL,4),r=n[0],i=n[1],o=n[2],a=n[3],s=this.childNodes[0].getBBox();e.combine(s,a,0),e.h+=r,e.d+=o,e.w+=i,this.setChildPWidths(t)},t.prototype.getBBoxExtenders=function(){var e,t,n=[0,0,0,0];try{for(var r=__values$d(Object.keys(this.notations)),i=r.next();!i.done;i=r.next()){var o=i.value;this.maximizeEntries(n,this.notations[o].bbox(this))}}catch(t){e={error:t}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}return n},t.prototype.getPadding=function(){var e,t,n=this,r=[0,0,0,0];try{for(var i=__values$d(Object.keys(this.notations)),o=i.next();!o.done;o=i.next()){var a=o.value,s=this.notations[a].border;s&&this.maximizeEntries(r,s(this))}}catch(t){e={error:t}}finally{try{o&&!o.done&&(t=i.return)&&t.call(i)}finally{if(e)throw e.error}}return[0,1,2,3].map((function(e){return n.TRBL[e]-r[e]}))},t.prototype.maximizeEntries=function(e,t){for(var n=0;n<e.length;n++)e[n]<t[n]&&(e[n]=t[n])},t.prototype.getOffset=function(e){var t=__read$d(this.TRBL,4),n=t[0],r=t[1],i=t[2],o=t[3],a=("X"===e?r-o:i-n)/2;return Math.abs(a)>.001?a:0},t.prototype.getArgMod=function(e,t){return[Math.atan2(t,e),Math.sqrt(e*e+t*t)]},t.prototype.arrow=function(e,t,n,r,i){return null},t.prototype.arrowData=function(){var e=__read$d([this.padding,this.thickness],2),t=e[0],n=e[1]*(this.arrowhead.x+Math.max(1,this.arrowhead.dx)),r=this.childNodes[0].getBBox(),i=r.h,o=r.d,a=r.w,s=i+o,l=Math.sqrt(s*s+a*a),c=Math.max(t,n*a/l),T=Math.max(t,n*s/l),Q=__read$d(this.getArgMod(a+2*c,s+2*T),2);return{a:Q[0],W:Q[1],x:c,y:T}},t.prototype.arrowAW=function(){var e=this.childNodes[0].getBBox(),t=e.h,n=e.d,r=e.w,i=__read$d(this.TRBL,4),o=i[0],a=i[1],s=i[2],l=i[3];return this.getArgMod(l+r+a,o+t+n+s)},t.prototype.createMsqrt=function(e){var t=this.node.factory.create("msqrt");t.inheritAttributesFrom(this.node),t.childNodes[0]=e.node;var n=this.wrap(t);return n.parent=this,n},t.prototype.sqrtTRBL=function(){var e=this.msqrt.getBBox(),t=this.msqrt.childNodes[0].getBBox();return[e.h-t.h,0,e.d-t.d,e.w-t.w]},t}(e)}menclose$1.CommonMencloseMixin=CommonMencloseMixin;var Notation={};!function(e){var t=commonjsGlobal&&commonjsGlobal.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),n=commonjsGlobal&&commonjsGlobal.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=commonjsGlobal&&commonjsGlobal.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var i in e)"default"!==i&&Object.prototype.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r},i=commonjsGlobal&&commonjsGlobal.__exportStar||function(e,n){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(n,r)||t(n,e,r)};Object.defineProperty(e,"__esModule",{value:!0}),e.Arrow=e.DiagonalArrow=e.DiagonalStrike=e.Border2=e.Border=e.RenderLine=e.lineOffset=e.lineData=e.computeLineData=void 0;var o=r(Notation$2);i(Notation$2,e),e.computeLineData={top:function(e,t,n,r){return[0,e-r,n,e-r]},right:function(e,t,n,r){return[n-r,-t,n-r,e]},bottom:function(e,t,n,r){return[0,r-t,n,r-t]},left:function(e,t,n,r){return[r,-t,r,e]},vertical:function(e,t,n,r){return[n/2,e,n/2,-t]},horizontal:function(e,t,n,r){return[0,(e-t)/2,n,(e-t)/2]},up:function(e,t,n,r){return[r,r-t,n-r,e-r]},down:function(e,t,n,r){return[r,e-r,n-r,r-t]}},e.lineData=function(t,n,r){void 0===r&&(r="");var i=t.getBBox(),o=i.h,a=i.d,s=i.w,l=t.thickness/2;return(0,e.lineOffset)(e.computeLineData[n](o,a,s,l),t,r)},e.lineOffset=function(e,t,n){if(n){var r=t.getOffset(n);r&&("X"===n?(e[0]-=r,e[2]-=r):(e[1]-=r,e[3]-=r))}return e},e.RenderLine=function(t,n){return void 0===n&&(n=""),function(r,i){var o=r.line((0,e.lineData)(r,t,n));r.adaptor.append(r.element,o)}},e.Border=function(t){return o.CommonBorder((function(n,r){n.adaptor.append(n.element,n.line((0,e.lineData)(n,t)))}))(t)},e.Border2=function(t,n,r){return o.CommonBorder2((function(t,i){t.adaptor.append(t.element,t.line((0,e.lineData)(t,n))),t.adaptor.append(t.element,t.line((0,e.lineData)(t,r)))}))(t,n,r)},e.DiagonalStrike=function(t){return o.CommonDiagonalStrike((function(n){return function(n,r){n.adaptor.append(n.element,n.line((0,e.lineData)(n,t)))}}))(t)},e.DiagonalArrow=function(e){return o.CommonDiagonalArrow((function(e,t){e.adaptor.append(e.element,t)}))(e)},e.Arrow=function(e){return o.CommonArrow((function(e,t){e.adaptor.append(e.element,t)}))(e)}}(Notation);var menclose={},__extends$z=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$c=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$c=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$c.apply(this,arguments)};Object.defineProperty(menclose,"__esModule",{value:!0}),menclose.MmlMenclose=void 0;var hasRequiredMenclose,MmlNode_js_1$g=MmlNode,MmlMenclose=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.texclass=MmlNode_js_1$g.TEXCLASS.ORD,t}return __extends$z(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"menclose"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"arity",{get:function(){return-1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"linebreakContininer",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.setTeXclass=function(e){return e=this.childNodes[0].setTeXclass(e),this.updateTeXclass(this.childNodes[0]),e},t.defaults=__assign$c(__assign$c({},MmlNode_js_1$g.AbstractMmlNode.defaults),{notation:"longdiv"}),t}(MmlNode_js_1$g.AbstractMmlNode);function requireMenclose(){if(hasRequiredMenclose)return menclose$2;hasRequiredMenclose=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),n=commonjsGlobal&&commonjsGlobal.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),r=commonjsGlobal&&commonjsGlobal.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=commonjsGlobal&&commonjsGlobal.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i in e)"default"!==i&&Object.prototype.hasOwnProperty.call(e,i)&&n(t,e,i);return r(t,e),t},o=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},a=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(menclose$2,"__esModule",{value:!0}),menclose$2.SVGmenclose=void 0;var s=requireWrapper(),l=menclose$1,c=i(Notation),T=menclose,Q=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return t(n,e),n.prototype.toSVG=function(e){var t,n,r=this.standardSVGnode(e),i=this.getBBoxExtenders()[3],a={};i>0&&(a.transform="translate("+this.fixed(i)+", 0)");var s=this.adaptor.append(r,this.svg("g",a));this.renderChild?this.renderChild(this,s):this.childNodes[0].toSVG(s);try{for(var l=o(Object.keys(this.notations)),c=l.next();!c.done;c=l.next()){var T=c.value,Q=this.notations[T];!Q.renderChild&&Q.renderer(this,r)}}catch(e){t={error:e}}finally{try{c&&!c.done&&(n=l.return)&&n.call(l)}finally{if(t)throw t.error}}},n.prototype.arrow=function(e,t,n,r,i){void 0===r&&(r=""),void 0===i&&(i=0);var o=this.getBBox(),s=o.w,l=(e-s)/2,c=(o.h-o.d)/2,T=this.thickness,Q=T/2,d=a([T*this.arrowhead.x,T*this.arrowhead.y,T*this.arrowhead.dx],3),u=d[0],p=d[1],h=d[2],m=n?this.fill("M",s+l,c,"l",-(u+h),p,"l",h,Q-p,"L",u-l,c+Q,"l",h,p-Q,"l",-(u+h),-p,"l",u+h,-p,"l",-h,p-Q,"L",s+l-u,c-Q,"l",-h,Q-p,"Z"):this.fill("M",s+l,c,"l",-(u+h),p,"l",h,Q-p,"L",-l,c+Q,"l",0,-T,"L",s+l-u,c-Q,"l",-h,Q-p,"Z"),f=[];if(i&&f.push("X"===r?"translate(".concat(this.fixed(-i)," 0)"):"translate(0 ".concat(this.fixed(i),")")),t){var g=this.jax.fixed(180*-t/Math.PI);f.push("rotate(".concat(g," ").concat(this.fixed(s/2)," ").concat(this.fixed(c),")"))}return f.length&&this.adaptor.setAttribute(m,"transform",f.join(" ")),m},n.prototype.line=function(e){var t=a(e,4),n=t[0],r=t[1],i=t[2],o=t[3];return this.svg("line",{x1:this.fixed(n),y1:this.fixed(r),x2:this.fixed(i),y2:this.fixed(o),"stroke-width":this.fixed(this.thickness)})},n.prototype.box=function(e,t,n,r){void 0===r&&(r=0);var i=this.thickness,o={x:this.fixed(i/2),y:this.fixed(i/2-n),width:this.fixed(e-i),height:this.fixed(t+n-i),fill:"none","stroke-width":this.fixed(i)};return r&&(o.rx=this.fixed(r)),this.svg("rect",o)},n.prototype.ellipse=function(e,t,n){var r=this.thickness;return this.svg("ellipse",{rx:this.fixed((e-r)/2),ry:this.fixed((t+n-r)/2),cx:this.fixed(e/2),cy:this.fixed((t-n)/2),fill:"none","stroke-width":this.fixed(r)})},n.prototype.path=function(e){for(var t=this,n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];return this.svg("path",{d:n.map((function(e){return"string"==typeof e?e:t.fixed(e)})).join(" "),style:{"stroke-width":this.fixed(this.thickness)},"stroke-linecap":"round","stroke-linejoin":e,fill:"none"})},n.prototype.fill=function(){for(var e=this,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return this.svg("path",{d:t.map((function(t){return"string"==typeof t?t:e.fixed(t)})).join(" ")})},n.kind=T.MmlMenclose.prototype.kind,n.notations=new Map([c.Border("top"),c.Border("right"),c.Border("bottom"),c.Border("left"),c.Border2("actuarial","top","right"),c.Border2("madruwb","bottom","right"),c.DiagonalStrike("up"),c.DiagonalStrike("down"),["horizontalstrike",{renderer:c.RenderLine("horizontal","Y"),bbox:function(e){return[0,e.padding,0,e.padding]}}],["verticalstrike",{renderer:c.RenderLine("vertical","X"),bbox:function(e){return[e.padding,0,e.padding,0]}}],["box",{renderer:function(e,t){var n=e.getBBox(),r=n.w,i=n.h,o=n.d;e.adaptor.append(e.element,e.box(r,i,o))},bbox:c.fullBBox,border:c.fullBorder,remove:"left right top bottom"}],["roundedbox",{renderer:function(e,t){var n=e.getBBox(),r=n.w,i=n.h,o=n.d,a=e.thickness+e.padding;e.adaptor.append(e.element,e.box(r,i,o,a))},bbox:c.fullBBox}],["circle",{renderer:function(e,t){var n=e.getBBox(),r=n.w,i=n.h,o=n.d;e.adaptor.append(e.element,e.ellipse(r,i,o))},bbox:c.fullBBox}],["phasorangle",{renderer:function(e,t){var n=e.getBBox(),r=n.w,i=n.h,o=n.d,a=e.getArgMod(1.75*e.padding,i+o)[0],s=e.thickness/2,l=i+o,c=Math.cos(a);e.adaptor.append(e.element,e.path("mitre","M",r,s-o,"L",s+c*s,s-o,"L",c*l+s,l-o-s))},bbox:function(e){var t=e.padding/2,n=e.thickness;return[2*t,t,t+n,3*t+n]},border:function(e){return[0,0,e.thickness,0]},remove:"bottom"}],c.Arrow("up"),c.Arrow("down"),c.Arrow("left"),c.Arrow("right"),c.Arrow("updown"),c.Arrow("leftright"),c.DiagonalArrow("updiagonal"),c.DiagonalArrow("northeast"),c.DiagonalArrow("southeast"),c.DiagonalArrow("northwest"),c.DiagonalArrow("southwest"),c.DiagonalArrow("northeastsouthwest"),c.DiagonalArrow("northwestsoutheast"),["longdiv",{renderer:function(e,t){var n=e.getBBox(),r=n.w,i=n.h,o=n.d,a=e.thickness/2,s=e.padding;e.adaptor.append(e.element,e.path("round","M",a,a-o,"a",s-a/2,(i+o)/2-4*a,0,"0,1",0,i+o-2*a,"L",r-a,i-a))},bbox:function(e){var t=e.padding,n=e.thickness;return[t+n,t,t,2*t+n/2]}}],["radical",{renderer:function(e,t){e.msqrt.toSVG(t);var n=e.sqrtTRBL()[3];e.place(-n,0,t)},init:function(e){e.msqrt=e.createMsqrt(e.childNodes[0])},bbox:function(e){return e.sqrtTRBL()},renderChild:!0}]]),n}((0,l.CommonMencloseMixin)(s.SVGWrapper));return menclose$2.SVGmenclose=Q,menclose$2}menclose.MmlMenclose=MmlMenclose;var semantics$2={},semantics$1={},__extends$y=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();function CommonSemanticsMixin(e){return function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$y(t,e),t.prototype.computeBBox=function(e,t){if(this.childNodes.length){var n=this.childNodes[0].getBBox(),r=n.w,i=n.h,o=n.d;e.w=r,e.h=i,e.d=o}},t}(e)}Object.defineProperty(semantics$1,"__esModule",{value:!0}),semantics$1.CommonSemanticsMixin=void 0,semantics$1.CommonSemanticsMixin=CommonSemanticsMixin;var semantics={},__extends$x=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$b=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$b=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$b.apply(this,arguments)};Object.defineProperty(semantics,"__esModule",{value:!0}),semantics.MmlAnnotation=semantics.MmlAnnotationXML=semantics.MmlSemantics=void 0;var MmlNode_js_1$f=MmlNode,MmlSemantics=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$x(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"semantics"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"arity",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"notParent",{get:function(){return!0},enumerable:!1,configurable:!0}),t.defaults=__assign$b(__assign$b({},MmlNode_js_1$f.AbstractMmlBaseNode.defaults),{definitionUrl:null,encoding:null}),t}(MmlNode_js_1$f.AbstractMmlBaseNode);semantics.MmlSemantics=MmlSemantics;var MmlAnnotationXML=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$x(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"annotation-xml"},enumerable:!1,configurable:!0}),t.prototype.setChildInheritedAttributes=function(){},t.defaults=__assign$b(__assign$b({},MmlNode_js_1$f.AbstractMmlNode.defaults),{definitionUrl:null,encoding:null,cd:"mathmlkeys",name:"",src:null}),t}(MmlNode_js_1$f.AbstractMmlNode);semantics.MmlAnnotationXML=MmlAnnotationXML;var hasRequiredSemantics,MmlAnnotation=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.properties={isChars:!0},t}return __extends$x(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"annotation"},enumerable:!1,configurable:!0}),t.defaults=__assign$b({},MmlAnnotationXML.defaults),t}(MmlAnnotationXML);function requireSemantics(){if(hasRequiredSemantics)return semantics$2;hasRequiredSemantics=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)});Object.defineProperty(semantics$2,"__esModule",{value:!0}),semantics$2.SVGxml=semantics$2.SVGannotationXML=semantics$2.SVGannotation=semantics$2.SVGsemantics=void 0;var n=requireWrapper(),r=semantics,i=MmlNode,o=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return t(n,e),n.prototype.toSVG=function(e){var t=this.standardSVGnode(e);this.childNodes.length&&this.childNodes[0].toSVG(t)},n.kind=r.MmlSemantics.prototype.kind,n}((0,semantics$1.CommonSemanticsMixin)(n.SVGWrapper));semantics$2.SVGsemantics=o;var a=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return t(n,e),n.prototype.toSVG=function(t){e.prototype.toSVG.call(this,t)},n.prototype.computeBBox=function(){return this.bbox},n.kind=r.MmlAnnotation.prototype.kind,n}(n.SVGWrapper);semantics$2.SVGannotation=a;var s=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return t(n,e),n.kind=r.MmlAnnotationXML.prototype.kind,n.styles={"foreignObject[data-mjx-xml]":{"font-family":"initial","line-height":"normal",overflow:"visible"}},n}(n.SVGWrapper);semantics$2.SVGannotationXML=s;var l=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return t(n,e),n.prototype.toSVG=function(e){var t=this.adaptor.clone(this.node.getXML()),n=this.jax.math.metrics.em*this.jax.math.metrics.scale,r=this.fixed(1/n),i=this.getBBox(),o=i.w,a=i.h,s=i.d;this.element=this.adaptor.append(e,this.svg("foreignObject",{"data-mjx-xml":!0,y:this.jax.fixed(-a*n)+"px",width:this.jax.fixed(o*n)+"px",height:this.jax.fixed((a+s)*n)+"px",transform:"scale(".concat(r,") matrix(1 0 0 -1 0 0)")},[t]))},n.prototype.computeBBox=function(e,t){var n=this.jax.measureXMLnode(this.node.getXML()),r=n.w,i=n.h,o=n.d;e.w=r,e.h=i,e.d=o},n.prototype.getStyles=function(){},n.prototype.getScale=function(){},n.prototype.getVariant=function(){},n.kind=i.XMLNode.prototype.kind,n.autoStyle=!1,n}(n.SVGWrapper);return semantics$2.SVGxml=l,semantics$2}semantics.MmlAnnotation=MmlAnnotation;var mglyph$2={},mglyph$1={},__extends$w=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__read$c=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$7=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))};function CommonMglyphMixin(e){return function(e){function t(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=e.apply(this,__spreadArray$7([],__read$c(t),!1))||this;return r.getParameters(),r}return __extends$w(t,e),t.prototype.getParameters=function(){var e=this.node.attributes.getList("width","height","valign","src","index"),t=e.width,n=e.height,r=e.valign,i=e.src,o=e.index;if(i)this.width="auto"===t?1:this.length2em(t),this.height="auto"===n?1:this.length2em(n),this.valign=this.length2em(r||"0");else{var a=String.fromCodePoint(parseInt(o)),s=this.node.factory;this.charWrapper=this.wrap(s.create("text").setText(a)),this.charWrapper.parent=this}},t.prototype.computeBBox=function(e,t){this.charWrapper?e.updateFrom(this.charWrapper.getBBox()):(e.w=this.width,e.h=this.height+this.valign,e.d=-this.valign)},t}(e)}Object.defineProperty(mglyph$1,"__esModule",{value:!0}),mglyph$1.CommonMglyphMixin=void 0,mglyph$1.CommonMglyphMixin=CommonMglyphMixin;var mglyph={},__extends$v=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$a=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$a=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$a.apply(this,arguments)};Object.defineProperty(mglyph,"__esModule",{value:!0}),mglyph.MmlMglyph=void 0;var hasRequiredMglyph,MmlNode_js_1$e=MmlNode,MmlMglyph=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.texclass=MmlNode_js_1$e.TEXCLASS.ORD,t}return __extends$v(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"mglyph"},enumerable:!1,configurable:!0}),t.prototype.verifyAttributes=function(t){var n=this.attributes.getList("src","fontfamily","index"),r=n.src,i=n.fontfamily,o=n.index;""!==r||""!==i&&""!==o?e.prototype.verifyAttributes.call(this,t):this.mError("mglyph must have either src or fontfamily and index attributes",t,!0)},t.defaults=__assign$a(__assign$a({},MmlNode_js_1$e.AbstractMmlTokenNode.defaults),{alt:"",src:"",index:"",width:"auto",height:"auto",valign:"0em"}),t}(MmlNode_js_1$e.AbstractMmlTokenNode);function requireMglyph(){if(hasRequiredMglyph)return mglyph$2;hasRequiredMglyph=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)});Object.defineProperty(mglyph$2,"__esModule",{value:!0}),mglyph$2.SVGmglyph=void 0;var n=requireWrapper(),r=mglyph,i=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return t(n,e),n.prototype.toSVG=function(e){var t=this.standardSVGnode(e);if(this.charWrapper)this.charWrapper.toSVG(t);else{var n=this.node.attributes.getList("src","alt"),r=n.src,i=n.alt,o=this.fixed(this.height),a={width:this.fixed(this.width),height:o,transform:"translate(0 "+this.fixed(this.height+(this.valign||0))+") matrix(1 0 0 -1 0 0)",preserveAspectRatio:"none","aria-label":i,href:r},s=this.svg("image",a);this.adaptor.append(t,s)}},n.kind=r.MmlMglyph.prototype.kind,n}((0,mglyph$1.CommonMglyphMixin)(n.SVGWrapper));return mglyph$2.SVGmglyph=i,mglyph$2}mglyph.MmlMglyph=MmlMglyph;var TeXAtom$3={},TeXAtom$2={},__extends$u=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(TeXAtom$2,"__esModule",{value:!0}),TeXAtom$2.CommonTeXAtomMixin=void 0;var MmlNode_js_1$d=MmlNode;function CommonTeXAtomMixin(e){return function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$u(t,e),t.prototype.computeBBox=function(t,n){if(void 0===n&&(n=!1),e.prototype.computeBBox.call(this,t,n),this.childNodes[0]&&this.childNodes[0].bbox.ic&&(t.ic=this.childNodes[0].bbox.ic),this.node.texClass===MmlNode_js_1$d.TEXCLASS.VCENTER){var r=t.h,i=(r+t.d)/2+this.font.params.axis_height-r;t.h+=i,t.d-=i}},t}(e)}TeXAtom$2.CommonTeXAtomMixin=CommonTeXAtomMixin;var TeXAtom$1={},__extends$t=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$9=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$9=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$9.apply(this,arguments)};Object.defineProperty(TeXAtom$1,"__esModule",{value:!0}),TeXAtom$1.TeXAtom=void 0;var hasRequiredTeXAtom,MmlNode_js_1$c=MmlNode,mo_js_1$1=mo$2,TeXAtom=function(e){function t(t,n,r){var i=e.call(this,t,n,r)||this;return i.texclass=MmlNode_js_1$c.TEXCLASS.ORD,i.setProperty("texClass",i.texClass),i}return __extends$t(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"TeXAtom"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"arity",{get:function(){return-1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"notParent",{get:function(){return this.childNodes[0]&&1===this.childNodes[0].childNodes.length},enumerable:!1,configurable:!0}),t.prototype.setTeXclass=function(e){return this.childNodes[0].setTeXclass(null),this.adjustTeXclass(e)},t.prototype.adjustTeXclass=function(e){return e},t.defaults=__assign$9({},MmlNode_js_1$c.AbstractMmlBaseNode.defaults),t}(MmlNode_js_1$c.AbstractMmlBaseNode);function requireTeXAtom(){if(hasRequiredTeXAtom)return TeXAtom$3;hasRequiredTeXAtom=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)});Object.defineProperty(TeXAtom$3,"__esModule",{value:!0}),TeXAtom$3.SVGTeXAtom=void 0;var n=requireWrapper(),r=TeXAtom$1,i=MmlNode,o=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return t(n,e),n.prototype.toSVG=function(t){if(e.prototype.toSVG.call(this,t),this.adaptor.setAttribute(this.element,"data-mjx-texclass",i.TEXCLASSNAMES[this.node.texClass]),this.node.texClass===i.TEXCLASS.VCENTER){var n=this.childNodes[0].getBBox(),r=n.h,o=(r+n.d)/2+this.font.params.axis_height-r,a="translate(0 "+this.fixed(o)+")";this.adaptor.setAttribute(this.element,"transform",a)}},n.kind=r.TeXAtom.prototype.kind,n}((0,TeXAtom$2.CommonTeXAtomMixin)(n.SVGWrapper));return TeXAtom$3.SVGTeXAtom=o,TeXAtom$3}TeXAtom$1.TeXAtom=TeXAtom,TeXAtom.prototype.adjustTeXclass=mo_js_1$1.MmlMo.prototype.adjustTeXclass;var hasRequiredTextNode,hasRequiredWrappers,hasRequiredWrapperFactory,TextNode$1={},TextNode={},__extends$s=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__values$c=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},__read$b=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a};function CommonTextNodeMixin(e){return function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$s(t,e),t.prototype.computeBBox=function(e,t){var n,r,i=this.parent.variant,o=this.node.getText();if("-explicitFont"===i){var a=this.jax.getFontData(this.parent.styles),s=this.jax.measureText(o,i,a),l=s.w,c=s.h,T=s.d;e.h=c,e.d=T,e.w=l}else{var Q=this.remappedText(o,i);e.empty();try{for(var d=__values$c(Q),u=d.next();!u.done;u=d.next()){var p=u.value,h=__read$b(this.getVariantChar(i,p),4),m=(c=h[0],T=h[1],l=h[2],h[3]);if(m.unknown){var f=this.jax.measureText(String.fromCodePoint(p),i);l=f.w,c=f.h,T=f.d}e.w+=l,c>e.h&&(e.h=c),T>e.d&&(e.d=T),e.ic=m.ic||0,e.sk=m.sk||0,e.dx=m.dx||0}}catch(e){n={error:e}}finally{try{u&&!u.done&&(r=d.return)&&r.call(d)}finally{if(n)throw n.error}}Q.length>1&&(e.sk=0),e.clean()}},t.prototype.remappedText=function(e,t){var n=this.parent.stretch.c;return n?[n]:this.parent.remapChars(this.unicodeChars(e,t))},t.prototype.getStyles=function(){},t.prototype.getVariant=function(){},t.prototype.getScale=function(){},t.prototype.getSpace=function(){},t}(e)}function requireTextNode(){if(hasRequiredTextNode)return TextNode$1;hasRequiredTextNode=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),n=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(TextNode$1,"__esModule",{value:!0}),TextNode$1.SVGTextNode=void 0;var r=MmlNode,i=requireWrapper(),o=function(e){function i(){return null!==e&&e.apply(this,arguments)||this}return t(i,e),i.prototype.toSVG=function(e){var t,r,i=this.node.getText(),o=this.parent.variant;if(0!==i.length)if("-explicitFont"===o)this.element=this.adaptor.append(e,this.jax.unknownText(i,o));else{var a=this.remappedText(i,o);this.parent.childNodes.length>1&&(e=this.element=this.adaptor.append(e,this.svg("g",{"data-mml-node":"text"})));var s=0;try{for(var l=n(a),c=l.next();!c.done;c=l.next()){var T=c.value;s+=this.placeChar(T,s,0,e,o)}}catch(e){t={error:e}}finally{try{c&&!c.done&&(r=l.return)&&r.call(l)}finally{if(t)throw t.error}}}},i.kind=r.TextNode.prototype.kind,i.styles={'mjx-container[jax="SVG"] path[data-c], mjx-container[jax="SVG"] use[data-c]':{"stroke-width":3}},i}((0,TextNode.CommonTextNodeMixin)(i.SVGWrapper));return TextNode$1.SVGTextNode=o,TextNode$1}function requireWrappers(){if(hasRequiredWrappers)return Wrappers;var e;hasRequiredWrappers=1,Object.defineProperty(Wrappers,"__esModule",{value:!0}),Wrappers.SVGWrappers=void 0;var t=requireWrapper(),n=requireMath(),r=requireMrow(),i=requireMi(),o=requireMo(),a=requireMn(),s=requireMs(),l=requireMtext(),c=requireMerror(),T=requireMspace(),Q=requireMpadded(),d=requireMphantom(),u=requireMfrac(),p=requireMsqrt(),h=requireMroot(),m=requireMfenced(),f=requireMsubsup(),g=requireMunderover(),b=requireMmultiscripts(),y=requireMtable(),L=requireMtr(),v=requireMtd(),w=requireMaction(),E=requireMenclose(),_=requireSemantics(),M=requireMglyph(),x=requireTeXAtom(),H=requireTextNode();return Wrappers.SVGWrappers=((e={})[n.SVGmath.kind]=n.SVGmath,e[r.SVGmrow.kind]=r.SVGmrow,e[r.SVGinferredMrow.kind]=r.SVGinferredMrow,e[i.SVGmi.kind]=i.SVGmi,e[o.SVGmo.kind]=o.SVGmo,e[a.SVGmn.kind]=a.SVGmn,e[s.SVGms.kind]=s.SVGms,e[l.SVGmtext.kind]=l.SVGmtext,e[c.SVGmerror.kind]=c.SVGmerror,e[T.SVGmspace.kind]=T.SVGmspace,e[Q.SVGmpadded.kind]=Q.SVGmpadded,e[d.SVGmphantom.kind]=d.SVGmphantom,e[u.SVGmfrac.kind]=u.SVGmfrac,e[p.SVGmsqrt.kind]=p.SVGmsqrt,e[h.SVGmroot.kind]=h.SVGmroot,e[m.SVGmfenced.kind]=m.SVGmfenced,e[f.SVGmsub.kind]=f.SVGmsub,e[f.SVGmsup.kind]=f.SVGmsup,e[f.SVGmsubsup.kind]=f.SVGmsubsup,e[g.SVGmunder.kind]=g.SVGmunder,e[g.SVGmover.kind]=g.SVGmover,e[g.SVGmunderover.kind]=g.SVGmunderover,e[b.SVGmmultiscripts.kind]=b.SVGmmultiscripts,e[y.SVGmtable.kind]=y.SVGmtable,e[L.SVGmtr.kind]=L.SVGmtr,e[L.SVGmlabeledtr.kind]=L.SVGmlabeledtr,e[v.SVGmtd.kind]=v.SVGmtd,e[w.SVGmaction.kind]=w.SVGmaction,e[E.SVGmenclose.kind]=E.SVGmenclose,e[_.SVGsemantics.kind]=_.SVGsemantics,e[_.SVGannotation.kind]=_.SVGannotation,e[_.SVGannotationXML.kind]=_.SVGannotationXML,e[_.SVGxml.kind]=_.SVGxml,e[M.SVGmglyph.kind]=M.SVGmglyph,e[x.SVGTeXAtom.kind]=x.SVGTeXAtom,e[H.SVGTextNode.kind]=H.SVGTextNode,e[t.SVGWrapper.kind]=t.SVGWrapper,e),Wrappers}function requireWrapperFactory(){if(hasRequiredWrapperFactory)return WrapperFactory$2;hasRequiredWrapperFactory=1;var e,t=commonjsGlobal&&commonjsGlobal.__extends||(e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)},function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)});Object.defineProperty(WrapperFactory$2,"__esModule",{value:!0}),WrapperFactory$2.SVGWrapperFactory=void 0;var n=WrapperFactory$1,r=requireWrappers(),i=function(e){function n(){var t=null!==e&&e.apply(this,arguments)||this;return t.jax=null,t}return t(n,e),n.defaultNodes=r.SVGWrappers,n}(n.CommonWrapperFactory);return WrapperFactory$2.SVGWrapperFactory=i,WrapperFactory$2}Object.defineProperty(TextNode,"__esModule",{value:!0}),TextNode.CommonTextNodeMixin=void 0,TextNode.CommonTextNodeMixin=CommonTextNodeMixin;var tex$1={},FontData={};!function(e){var t,n=commonjsGlobal&&commonjsGlobal.__extends||(t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},t(e,n)},function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),r=commonjsGlobal&&commonjsGlobal.__assign||function(){return r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},r.apply(this,arguments)},i=commonjsGlobal&&commonjsGlobal.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=commonjsGlobal&&commonjsGlobal.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)},a=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.AddPaths=e.SVGFontData=void 0;var s=FontData$2;o(FontData$2,e);var l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.charOptions=function(t,n){return e.charOptions.call(this,t,n)},t.OPTIONS=r(r({},s.FontData.OPTIONS),{dynamicPrefix:"./output/svg/fonts"}),t.JAX="SVG",t}(s.FontData);e.SVGFontData=l,e.AddPaths=function(e,t,n){var r,i,o,s;try{for(var c=a(Object.keys(t)),T=c.next();!T.done;T=c.next()){var Q=T.value,d=parseInt(Q);l.charOptions(e,d).p=t[d]}}catch(e){r={error:e}}finally{try{T&&!T.done&&(i=c.return)&&i.call(c)}finally{if(r)throw r.error}}try{for(var u=a(Object.keys(n)),p=u.next();!p.done;p=u.next())Q=p.value,d=parseInt(Q),l.charOptions(e,d).c=n[d]}catch(e){o={error:e}}finally{try{p&&!p.done&&(s=u.return)&&s.call(u)}finally{if(o)throw o.error}}return e}}(FontData);var tex={},__extends$r=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$8=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$8=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$8.apply(this,arguments)},__read$a=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$6=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))};function CommonTeXFontMixin(e){var t;return t=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$r(t,e),t.prototype.getDelimiterData=function(e){return this.getChar("-smallop",e)||this.getChar("-size4",e)},t}(e),t.NAME="TeX",t.defaultVariants=__spreadArray$6(__spreadArray$6([],__read$a(e.defaultVariants),!1),[["-smallop","normal"],["-largeop","normal"],["-size3","normal"],["-size4","normal"],["-tex-calligraphic","italic"],["-tex-bold-calligraphic","bold-italic"],["-tex-oldstyle","normal"],["-tex-bold-oldstyle","bold"],["-tex-mathit","italic"],["-tex-variant","normal"]],!1),t.defaultCssFonts=__assign$8(__assign$8({},e.defaultCssFonts),{"-smallop":["serif",!1,!1],"-largeop":["serif",!1,!1],"-size3":["serif",!1,!1],"-size4":["serif",!1,!1],"-tex-calligraphic":["cursive",!0,!1],"-tex-bold-calligraphic":["cursive",!0,!0],"-tex-oldstyle":["serif",!1,!1],"-tex-bold-oldstyle":["serif",!1,!0],"-tex-mathit":["serif",!0,!1]}),t.defaultSizeVariants=["normal","-smallop","-largeop","-size3","-size4","-tex-variant"],t.defaultStretchVariants=["-size4"],t}Object.defineProperty(tex,"__esModule",{value:!0}),tex.CommonTeXFontMixin=void 0,tex.CommonTeXFontMixin=CommonTeXFontMixin;var boldItalic$1={},boldItalic={};Object.defineProperty(boldItalic,"__esModule",{value:!0}),boldItalic.boldItalic=void 0,boldItalic.boldItalic={47:[.711,.21,.894],305:[.452,.008,.394,{sk:.0319}],567:[.451,.201,.439,{sk:.0958}],8260:[.711,.21,.894],8710:[.711,0,.958,{sk:.192}],10744:[.711,.21,.894]},Object.defineProperty(boldItalic$1,"__esModule",{value:!0}),boldItalic$1.boldItalic=void 0;var FontData_js_1$l=FontData,bold_italic_js_1$1=boldItalic;boldItalic$1.boldItalic=(0,FontData_js_1$l.AddPaths)(bold_italic_js_1$1.boldItalic,{47:"189 -210Q179 -210 170 -203T160 -179Q160 -171 162 -166Q164 -163 420 266T679 698Q686 711 704 711Q714 711 723 704T733 681Q733 672 730 667Q723 654 469 228T211 -201Q202 -210 189 -210",305:"24 296Q24 305 34 328T63 380T115 430T187 452Q205 452 223 448T262 435T295 406T308 360Q308 345 287 290T240 170T207 87Q202 67 202 57Q202 42 215 42Q235 42 257 64Q288 92 302 140Q307 156 310 159T330 162H336H347Q367 162 367 148Q367 140 357 117T329 65T276 14T201 -8Q158 -8 121 15T83 84Q83 104 133 229T184 358Q189 376 189 388Q189 402 177 402Q156 402 134 380Q103 352 89 304Q84 288 81 285T61 282H55H44Q24 282 24 296",567:"297 360T297 373T294 392T288 400T278 401H276Q237 398 200 363Q181 343 170 325T156 299T149 287T129 282H123H116Q102 282 97 284T92 298Q93 303 98 315T118 349T151 390T201 427T267 451H279Q357 451 388 422T420 354V339L370 138Q321 -60 317 -69Q287 -157 163 -194Q133 -201 99 -201Q39 -201 14 -178T-12 -125Q-12 -94 11 -69T68 -43Q93 -43 108 -57T123 -95Q123 -121 100 -151H104Q131 -151 155 -125T193 -60Q195 -54 244 141T294 345Q297 360 297 373",8260:"189 -210Q179 -210 170 -203T160 -179Q160 -171 162 -166Q164 -163 420 266T679 698Q686 711 704 711Q714 711 723 704T733 681Q733 672 730 667Q723 654 469 228T211 -201Q202 -210 189 -210",8710:"65 0Q59 6 59 9T61 16Q64 20 334 357T608 698Q616 706 629 710Q630 710 634 710T644 710T656 711Q686 711 694 703Q698 699 700 693Q706 674 805 345T904 14Q904 7 894 1L479 0H65ZM630 342L567 551L232 134L462 133H693Q693 137 630 342",10744:"189 -210Q179 -210 170 -203T160 -179Q160 -171 162 -166Q164 -163 420 266T679 698Q686 711 704 711Q714 711 723 704T733 681Q733 672 730 667Q723 654 469 228T211 -201Q202 -210 189 -210"},{});var bold$1={},bold={};Object.defineProperty(bold,"__esModule",{value:!0}),bold.bold=void 0,bold.bold={33:[.705,0,.35],34:[.694,-.329,.603],35:[.694,.193,.958],36:[.75,.056,.575],37:[.75,.056,.958],38:[.705,.011,.894],39:[.694,-.329,.319],40:[.75,.249,.447],41:[.75,.249,.447],42:[.75,-.306,.575],43:[.633,.131,.894],44:[.171,.194,.319],45:[.278,-.166,.383],46:[.171,0,.319],47:[.75,.25,.575],58:[.444,0,.319],59:[.444,.194,.319],60:[.587,.085,.894],61:[.393,-.109,.894],62:[.587,.085,.894],63:[.7,0,.543],64:[.699,.006,.894],91:[.75,.25,.319],92:[.75,.25,.575],93:[.75,.25,.319],94:[.694,-.52,.575],95:[-.01,.061,.575],96:[.706,-.503,.575],123:[.75,.25,.575],124:[.75,.249,.319],125:[.75,.25,.575],126:[.344,-.202,.575],168:[.695,-.535,.575],172:[.371,-.061,.767],175:[.607,-.54,.575],176:[.702,-.536,.575],177:[.728,.035,.894],180:[.706,-.503,.575],183:[.336,-.166,.319],215:[.53,.028,.894],247:[.597,.096,.894],305:[.442,0,.278,{sk:.0278}],567:[.442,.205,.306,{sk:.0833}],697:[.563,-.033,.344],710:[.694,-.52,.575],711:[.66,-.515,.575],713:[.607,-.54,.575],714:[.706,-.503,.575],715:[.706,-.503,.575],728:[.694,-.5,.575],729:[.695,-.525,.575],730:[.702,-.536,.575],732:[.694,-.552,.575],768:[.706,-.503,0],769:[.706,-.503,0],770:[.694,-.52,0],771:[.694,-.552,0],772:[.607,-.54,0],774:[.694,-.5,0],775:[.695,-.525,0],776:[.695,-.535,0],778:[.702,-.536,0],779:[.714,-.511,0],780:[.66,-.515,0],824:[.711,.21,0],8194:[0,0,.5],8195:[0,0,.999],8196:[0,0,.333],8197:[0,0,.25],8198:[0,0,.167],8201:[0,0,.167],8202:[0,0,.083],8211:[.3,-.249,.575],8212:[.3,-.249,1.15],8213:[.3,-.249,1.15],8214:[.75,.248,.575],8215:[-.01,.061,.575],8216:[.694,-.329,.319],8217:[.694,-.329,.319],8220:[.694,-.329,.603],8221:[.694,-.329,.603],8224:[.702,.211,.511],8225:[.702,.202,.511],8226:[.474,-.028,.575],8230:[.171,0,1.295],8242:[.563,-.033,.344],8243:[.563,0,.688],8244:[.563,0,1.032],8254:[.607,-.54,.575],8260:[.75,.25,.575],8279:[.563,0,1.376],8407:[.723,-.513,.575],8463:[.694,.008,.668,{sk:-.0319}],8467:[.702,.019,.474,{sk:.128}],8472:[.461,.21,.74],8501:[.694,0,.703],8592:[.518,.017,1.15],8593:[.694,.193,.575],8594:[.518,.017,1.15],8595:[.694,.194,.575],8596:[.518,.017,1.15],8597:[.767,.267,.575],8598:[.724,.194,1.15],8599:[.724,.193,1.15],8600:[.694,.224,1.15],8601:[.694,.224,1.15],8602:[.711,.21,1.15],8603:[.711,.21,1.15],8614:[.518,.017,1.15],8617:[.518,.017,1.282],8618:[.518,.017,1.282],8622:[.711,.21,1.15],8636:[.518,-.22,1.15],8637:[.281,.017,1.15],8640:[.518,-.22,1.15],8641:[.281,.017,1.15],8652:[.718,.017,1.15],8653:[.711,.21,1.15],8654:[.711,.21,1.15],8655:[.711,.21,1.15],8656:[.547,.046,1.15],8657:[.694,.193,.703],8658:[.547,.046,1.15],8659:[.694,.194,.703],8660:[.547,.046,1.15],8661:[.767,.267,.703],8704:[.694,.016,.639],8707:[.694,0,.639],8708:[.711,.21,.639],8709:[.767,.073,.575],8710:[.698,0,.958],8712:[.587,.086,.767],8713:[.711,.21,.767],8715:[.587,.086,.767],8716:[.711,.21,.767],8722:[.281,-.221,.894],8723:[.537,.227,.894],8725:[.75,.25,.575],8726:[.75,.25,.575],8727:[.472,-.028,.575],8728:[.474,-.028,.575],8729:[.474,-.028,.575],8730:[.82,.18,.958,{ic:.03}],8733:[.451,.008,.894],8734:[.452,.008,1.15],8736:[.714,0,.722],8739:[.75,.249,.319],8740:[.75,.249,.319],8741:[.75,.248,.575],8742:[.75,.248,.575],8743:[.604,.017,.767],8744:[.604,.016,.767],8745:[.603,.016,.767],8746:[.604,.016,.767],8747:[.711,.211,.569,{ic:.063}],8764:[.391,-.109,.894],8768:[.583,.082,.319],8769:[.711,.21,.894],8771:[.502,0,.894],8772:[.711,.21,.894],8773:[.638,.027,.894],8775:[.711,.21,.894],8776:[.524,-.032,.894],8777:[.711,.21,.894],8781:[.533,.032,.894],8784:[.721,-.109,.894],8800:[.711,.21,.894],8801:[.505,0,.894],8802:[.711,.21,.894],8804:[.697,.199,.894],8805:[.697,.199,.894],8810:[.617,.116,1.15],8811:[.618,.116,1.15],8813:[.711,.21,.894],8814:[.711,.21,.894],8815:[.711,.21,.894],8816:[.711,.21,.894],8817:[.711,.21,.894],8826:[.585,.086,.894],8827:[.586,.086,.894],8832:[.711,.21,.894],8833:[.711,.21,.894],8834:[.587,.085,.894],8835:[.587,.086,.894],8836:[.711,.21,.894],8837:[.711,.21,.894],8838:[.697,.199,.894],8839:[.697,.199,.894],8840:[.711,.21,.894],8841:[.711,.21,.894],8846:[.604,.016,.767],8849:[.697,.199,.894],8850:[.697,.199,.894],8851:[.604,0,.767],8852:[.604,0,.767],8853:[.632,.132,.894],8854:[.632,.132,.894],8855:[.632,.132,.894],8856:[.632,.132,.894],8857:[.632,.132,.894],8866:[.693,0,.703],8867:[.693,0,.703],8868:[.694,0,.894],8869:[.693,0,.894],8872:[.75,.249,.974],8876:[.711,.21,.703],8877:[.75,.249,.974],8900:[.523,.021,.575],8901:[.336,-.166,.319],8902:[.502,0,.575],8904:[.54,.039,1],8930:[.711,.21,.894],8931:[.711,.21,.894],8942:[.951,.029,.319],8943:[.336,-.166,1.295],8945:[.871,-.101,1.323],8968:[.75,.248,.511],8969:[.75,.248,.511],8970:[.749,.248,.511],8971:[.749,.248,.511],8994:[.405,-.108,1.15],8995:[.392,-.126,1.15],9001:[.75,.249,.447],9002:[.75,.249,.447],9651:[.711,0,1.022],9653:[.711,0,1.022],9657:[.54,.039,.575],9661:[.5,.21,1.022],9663:[.5,.21,1.022],9667:[.539,.038,.575],9711:[.711,.211,1.15],9824:[.719,.129,.894],9825:[.711,.024,.894],9826:[.719,.154,.894],9827:[.719,.129,.894],9837:[.75,.017,.447],9838:[.741,.223,.447],9839:[.724,.224,.447],10072:[.75,.249,.319],10216:[.75,.249,.447],10217:[.75,.249,.447],10229:[.518,.017,1.805],10230:[.518,.017,1.833],10231:[.518,.017,2.126],10232:[.547,.046,1.868],10233:[.547,.046,1.87],10234:[.547,.046,2.126],10236:[.518,.017,1.833],10744:[.711,.21,.894],10799:[.53,.028,.894],10815:[.686,0,.9],10927:[.696,.199,.894],10928:[.697,.199,.894],12296:[.75,.249,.447],12297:[.75,.249,.447]},Object.defineProperty(bold$1,"__esModule",{value:!0}),bold$1.bold=void 0;var FontData_js_1$k=FontData,bold_js_1$1=bold;bold$1.bold=(0,FontData_js_1$k.AddPaths)(bold_js_1$1.bold,{33:"89 629Q89 663 116 684T171 705Q215 705 237 681T260 634Q260 619 233 434T204 244Q201 237 175 237Q150 237 146 244Q144 248 117 433T89 629ZM90 86Q90 125 116 148T177 171Q211 169 235 146T259 86Q259 48 235 25T175 1Q138 1 114 24T90 86",34:"38 572T38 608T61 669T121 694Q167 694 196 657T225 559Q225 520 214 482T186 418T151 370T119 339T99 329T82 340T70 360Q70 365 74 369T92 385T122 414Q142 441 154 471T170 518L172 535L166 532Q160 530 148 527T122 523Q85 523 62 547ZM305 572T305 608T328 669T388 694Q434 694 463 657T492 559Q492 520 481 482T453 418T418 370T386 339T366 329T349 340T337 360Q337 365 341 369T359 385T389 414Q409 441 421 471T436 518L439 535L433 532Q427 530 415 527T389 523Q352 523 329 547",35:"64 362Q64 380 87 393H363L366 404Q379 443 390 480T409 542T424 590T435 628T443 655T451 674T458 686T467 692T478 694Q490 694 499 686T509 662Q505 643 427 395Q427 393 523 393H620L623 404Q630 426 652 498T691 624T711 681Q718 694 735 694Q748 694 757 685T766 662Q762 643 684 395Q684 393 777 393H871Q872 392 875 390T881 386T887 381T891 374T893 363Q893 345 871 333L767 332H664L660 319Q660 318 638 245T614 171Q614 169 742 169H871L877 165Q883 161 885 159T890 151T893 138Q893 120 871 109L732 108H594L590 95Q587 84 546 -46Q508 -175 505 -178Q498 -193 478 -193Q462 -193 455 -183T448 -164Q448 -156 530 106Q530 108 434 108H337L333 95Q330 84 289 -46Q251 -175 248 -178Q240 -193 222 -193Q206 -193 199 -183T191 -164Q191 -154 273 106Q273 108 180 108L87 109Q64 117 64 139Q64 156 87 169H293L321 262Q326 277 331 294T340 321L343 330Q343 332 215 332L87 333Q64 343 64 362ZM600 330Q600 332 504 332H407L403 319Q403 318 381 245T357 171Q357 169 453 169H550L578 262Q583 277 588 294T597 321L600 330",36:"64 494Q64 541 80 579T120 638T171 674T219 693T253 698H256V750H318V699H323Q355 694 380 686T433 663T480 620T506 556Q510 539 510 520Q510 480 488 463T440 445L422 447Q407 451 398 459Q370 478 370 515Q370 542 384 559T412 580L427 584Q424 589 418 596T386 617T324 636H318V434Q411 419 460 355T510 217Q510 196 507 175T492 122T461 67T404 23T318 -4V-56H256V-5H254Q252 -3 240 -3Q194 4 160 23T108 64T80 112T67 156T64 190Q64 218 81 240T134 262Q171 262 187 240T204 193T190 150T153 125Q146 125 144 123Q142 123 149 113T174 89T218 66Q247 58 255 58Q256 58 256 173V287L239 291Q160 308 112 365T64 494ZM255 636Q246 635 236 632T206 620T173 591T160 543Q160 472 256 448V542Q256 636 255 636ZM320 59Q324 59 333 61T356 70T384 89T406 120T415 167Q415 200 395 225T356 260T318 274V59H320",37:"65 549Q65 609 84 652T132 714T187 742T236 750Q265 750 296 734T355 697T431 661T541 644Q662 644 736 730Q751 749 767 749T790 739T797 719Q797 710 768 672T504 329Q212 -47 211 -48Q203 -55 191 -55Q161 -55 161 -25Q161 -17 163 -12L642 609Q608 595 542 595Q515 595 488 599T441 608T405 619T381 628L373 632Q373 630 375 619T380 589T383 548Q383 455 343 401T235 347Q217 347 198 351T154 368T110 403T78 462T65 549ZM320 549Q320 633 295 665T235 698H234Q214 698 196 674Q182 650 182 549Q182 509 183 486T190 441T207 409T238 399Q269 399 294 431T320 549ZM745 -56Q727 -56 708 -52T664 -35T620 0T588 59T575 146T588 232T620 291T663 325T708 343T747 347Q810 347 851 294T893 146Q893 89 879 48T841 -15T794 -46T745 -56ZM830 146Q830 230 805 262T745 295H744Q724 295 706 271Q692 247 692 146Q692 106 693 83T700 38T717 6T748 -4Q779 -4 804 28T830 146",38:"255 -11Q209 -11 164 4T84 56T48 146Q48 159 50 171Q57 197 72 218T99 249T152 292Q204 333 204 334L194 356Q185 379 176 421T166 511Q166 538 168 551Q182 613 226 654T332 704Q334 704 343 704T358 705Q412 702 444 661T476 565V559Q476 489 334 371L330 368L335 357Q382 272 485 165L496 154L506 163Q543 200 597 273L671 382H601V444H610L732 441Q821 441 830 444H836V382H741L709 335Q702 324 687 302T665 270T646 244T625 216T605 191T581 162T553 132L537 116Q544 109 557 98T605 69T673 51Q711 51 739 70T767 115V118H829V114Q829 70 786 30T668 -11Q570 -11 474 37L451 49L441 43Q352 -11 255 -11ZM415 564Q415 596 400 625T356 654Q329 654 310 634T285 588Q283 580 283 554Q283 475 309 417L325 431Q415 512 415 564ZM192 182Q192 126 213 89T279 51Q348 51 400 83L389 91Q362 112 338 137T295 186T264 229T240 265T227 286Q226 285 222 280T217 272T211 263T205 251T200 238T196 222T193 204T192 182",39:"74 572T74 608T97 669T157 694Q203 694 232 657T261 559Q261 520 250 482T222 418T187 370T155 339T135 329Q128 329 117 340T106 359Q106 365 117 375T144 399T176 440T203 505Q204 511 205 518T208 530V535L202 532Q196 530 184 527T158 523Q121 523 98 547",40:"103 166T103 251T121 412T165 541T225 639T287 708T341 750H356H361Q382 750 382 736Q382 732 365 714T323 661T274 576T232 439T214 250Q214 -62 381 -229Q382 -231 382 -234Q382 -249 360 -249H356H341Q314 -231 287 -207T226 -138T165 -41T121 89",41:"231 251Q231 354 214 439T173 575T123 661T81 714T64 735Q64 744 73 749H75Q77 749 79 749T84 750T90 750H105Q132 732 159 708T220 639T281 542T325 413T343 251T325 89T281 -40T221 -138T159 -207T105 -249H90Q80 -249 76 -249T68 -245T64 -234Q64 -230 81 -212T123 -160T172 -75T214 61T231 251",42:"235 706Q235 724 251 737T287 750Q306 750 322 738T339 706Q339 685 318 580V579Q429 663 436 666Q441 668 449 668Q471 668 486 650T501 612Q501 582 478 572Q476 570 414 549L354 528L414 507Q420 505 430 502T445 497T458 492T470 488T479 483T487 478T493 471T497 463T500 454T501 443Q501 423 486 406T449 388H446Q435 388 370 437Q339 461 318 477V476Q339 371 339 350Q339 332 323 319T287 306T251 319T235 350Q235 371 256 476V477Q145 393 138 390Q133 388 125 388Q103 388 88 406T73 444Q73 474 96 484Q98 486 160 507L220 528L160 549Q154 551 144 554T129 559T116 564T104 568T95 573T87 578T81 585T77 593T74 602T73 613Q73 633 88 650T125 668H128Q139 668 204 619Q235 595 256 579V580Q235 685 235 706",43:"64 232T64 250T87 281H416V444Q416 608 418 612Q426 633 446 633T475 613Q477 608 477 444V281H807Q808 280 811 278T817 274T823 269T827 262T829 251Q829 230 807 221L642 220H477V57Q477 -107 475 -112Q468 -131 446 -131Q425 -131 418 -112Q416 -107 416 57V220H251L87 221Q64 232 64 250",44:"74 85Q74 120 97 145T159 171Q200 171 226 138Q258 101 258 37Q258 -5 246 -44T218 -109T183 -155T152 -184T135 -194Q129 -194 118 -183T106 -164Q106 -157 115 -149Q121 -145 130 -137T161 -100T195 -35Q197 -28 200 -17T204 3T205 11T199 9T183 3T159 0Q120 0 97 26T74 85",45:"13 166V278H318V166H13",46:"74 85Q74 121 99 146T156 171Q200 171 222 143T245 85Q245 56 224 29T160 1Q118 1 96 27T74 85",47:"451 730Q460 750 479 750Q492 750 501 740T510 718Q508 708 318 244L122 -232Q112 -250 95 -250Q82 -250 73 -241T64 -218Q66 -205 258 261T451 730",58:"74 359Q74 394 98 419T158 444Q200 444 222 417T245 358Q245 329 224 302T160 274Q116 274 95 301T74 359ZM74 85Q74 121 99 146T156 171Q200 171 222 143T245 85Q245 56 224 29T160 1Q118 1 96 27T74 85",59:"74 359Q74 394 98 419T158 444Q200 444 222 417T245 358Q245 329 224 302T160 274Q116 274 95 301T74 359ZM74 50T74 86T97 146T158 171Q204 171 226 132T248 38Q248 -23 223 -80T171 -165T135 -194Q129 -194 118 -183T106 -164Q106 -163 106 -160L107 -158Q108 -155 121 -142T150 -107T177 -58Q189 -32 194 3Q195 6 193 6Q172 0 158 0Q121 0 98 25",60:"797 -56Q797 -68 790 -76T767 -85H759L434 70Q108 226 105 229Q96 238 96 250Q96 263 105 272Q109 276 271 354T595 508T757 585Q763 587 766 587Q780 587 788 578T797 556Q797 544 788 535Q784 531 490 391L197 251Q213 242 359 173T644 37T788 -34Q797 -43 797 -56",61:"87 333Q64 343 64 362Q64 383 84 391Q89 393 448 393H807Q808 392 811 390T817 386T823 381T827 374T829 363Q829 345 807 333H87ZM87 109Q64 118 64 139Q64 159 86 168Q89 169 448 169H807L812 166Q816 163 818 162T823 157T827 149T829 139Q829 118 807 109H87",62:"127 -85Q110 -85 103 -75T96 -55Q96 -41 106 -34Q119 -24 308 65Q361 90 411 114L696 250L427 379Q106 533 103 537Q96 545 96 557Q96 568 104 577T128 587Q137 586 460 431T788 272Q797 263 797 250Q797 238 788 229Q785 226 459 70L135 -85H127",63:"65 570Q65 628 119 664T259 700Q326 700 372 688T440 654T469 613T478 569Q478 505 412 465Q287 391 287 294V283Q287 250 284 244T263 237H256H249Q232 237 229 242T225 272V287Q227 364 253 418Q274 463 311 504Q335 530 335 575Q335 622 323 635T259 648Q231 648 209 644T179 636T170 630L172 628Q174 627 177 625T183 620T190 611T197 601T202 587T204 570Q204 539 185 519T134 499Q105 499 85 517T65 570ZM171 86Q171 125 197 148T258 171Q292 169 316 146T340 86Q340 48 316 25T256 1Q218 1 195 24T171 86",64:"64 347Q64 511 171 605T434 699Q487 699 500 698Q624 684 703 621T811 464Q828 414 828 344Q828 232 788 179T691 125Q673 125 657 127T628 132T606 140T588 148T576 156T568 162L566 164Q565 164 549 154T504 135T444 125Q349 125 284 183T218 347Q218 455 284 512T448 569Q554 569 610 479H638Q670 479 674 471Q676 468 676 340V258Q676 213 679 199T694 178Q701 174 713 177Q767 187 767 340Q767 489 678 569T446 649Q299 649 213 566T126 346Q126 307 134 269T166 189T225 116T320 65T455 45H463Q606 51 721 91L746 99H782H801Q829 99 829 85Q829 78 825 75T804 65Q800 63 797 62Q625 -6 451 -6Q271 -6 168 91T64 347ZM547 468Q526 493 504 505T444 517T377 476T346 347Q346 306 354 271T386 206T448 177Q505 177 547 226V468",91:"128 -250V750H293V689H189V-189H293V-250H128",92:"64 718Q63 731 72 740T94 750Q106 750 113 743Q118 741 122 732L318 256Q508 -208 510 -218Q511 -231 502 -240T480 -250Q460 -250 451 -230Q451 -229 259 238T64 718",93:"25 689V750H190V-250H25V-189H129V689H25",94:"207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632",95:"0 -61V-10H574V-61H0",96:"114 634Q114 663 136 684T183 706Q191 706 196 705T208 700T219 693T232 681T245 666T262 645T282 620Q332 558 337 553Q338 552 318 527L299 503L223 543Q215 547 202 553T183 563T167 571T153 580T141 587T131 595T124 603T118 612T115 622T114 634",123:"504 -207T504 -225T500 -246T476 -250H469Q257 -250 227 -145L225 -135L224 0Q224 15 224 30T224 59T224 84T224 106T223 122T223 133V137Q222 138 221 144T213 162T195 185Q171 206 141 215Q123 222 107 223T84 225T74 229T70 250T73 270T83 276T106 276T141 285Q171 294 195 315Q201 321 206 328T214 341T219 352T222 360L223 363V367Q223 371 223 378T223 394T224 415T224 441T224 470T224 501L225 636Q249 739 426 749Q428 749 443 749T466 750H473Q495 750 499 747T504 725T501 704T480 699Q381 693 357 645Q352 634 351 617T350 497V412Q350 350 338 329Q325 303 298 284T251 258T227 251Q226 251 226 250L227 249Q231 248 238 246T265 236T299 217T329 184T349 137Q350 131 350 3T352 -130Q358 -160 392 -178T480 -199Q497 -200 500 -203",124:"160 -249Q138 -249 129 -225V250Q129 725 131 729Q139 750 159 750T190 725V-225Q181 -249 160 -249",125:"70 726Q71 744 74 747T99 750H106Q323 750 349 636L350 501Q350 486 350 470T350 441T350 416T350 394T351 378T351 367V363Q352 362 353 356T361 338T379 315Q403 294 433 285Q451 278 467 277T490 275T500 271T504 250T501 230T491 224T468 224T433 215Q403 206 379 185Q373 179 368 172T360 159T355 148T352 140L351 137V133Q351 129 351 122T351 106T350 85T350 59T350 31T350 0L349 -135L347 -145Q317 -250 106 -250H99Q79 -250 75 -247T70 -226Q70 -208 73 -204T95 -199Q193 -193 217 -145Q222 -134 223 -117T224 3Q224 20 224 48T223 86Q223 145 237 175T301 232Q335 249 347 249Q348 249 348 250L347 251Q343 252 336 254T309 264T275 284T245 316T225 363Q224 369 224 497T222 631Q216 660 182 678T95 699Q77 700 74 704T70 726",126:"343 202Q320 202 278 225T215 249Q181 249 146 214L134 202L115 219Q111 222 106 226T98 234L96 236Q158 306 165 313Q199 344 230 344Q239 344 244 343Q262 339 300 318T359 297Q393 297 428 332L440 344L459 327Q463 324 468 320T476 312L478 310Q416 240 409 233Q375 202 343 202",168:"96 615Q96 650 120 672T178 695Q214 693 234 669T255 615Q255 583 232 559T176 535Q147 535 122 556T96 615ZM319 615Q319 651 343 673T399 695Q426 695 452 675T478 615Q478 578 454 557T395 535Q364 537 342 559T319 615",172:"680 371Q683 369 688 366T695 361T698 356T701 346T701 332T702 308V216Q702 196 702 168T703 130Q703 90 697 76T671 61Q650 61 643 81Q641 86 641 198V310H364L87 311Q64 319 64 341Q64 362 84 369Q89 371 385 371H680",175:"80 540V607H494V540H80",176:"160 618Q160 653 193 677T279 702H284Q381 702 407 647Q414 634 414 618Q414 607 410 596T395 570T355 546T287 536T220 545T181 568T165 594T160 618ZM352 618Q352 645 341 652T301 659H292Q286 659 278 659T268 660Q247 660 236 653T224 638T222 619Q222 591 234 585T287 578Q315 578 326 580T345 590T352 618",177:"64 328T64 346T87 377H416V542L417 707Q431 728 443 728Q467 728 475 709Q477 704 477 540V377H807Q808 376 811 374T817 370T823 365T827 358T829 347Q829 326 807 317L642 316H477V25H807Q808 24 811 22T817 18T823 13T827 6T829 -5Q829 -26 807 -35H87Q64 -24 64 -6T87 25H416V316H251L87 317Q64 328 64 346",180:"391 706Q419 706 439 683T460 634Q460 608 441 593T366 550Q356 545 351 543L275 503L256 527Q236 552 237 553Q242 558 292 620Q299 629 309 641T324 659T336 673T346 685T354 693T363 699T371 703T380 705T391 706",183:"74 251Q74 286 99 311T156 336Q200 336 222 308T245 250Q245 221 224 194T160 166T96 193T74 251",215:"168 500Q168 515 178 522T195 530H198Q207 530 218 521T282 458Q312 428 331 409L447 294L563 409Q674 520 682 525Q687 529 695 529Q711 529 718 520T726 499V498Q726 489 720 481T666 427Q631 392 606 367L490 251L606 135Q717 23 721 17T726 2Q726 -9 719 -18T695 -28H692Q685 -28 674 -18T608 47Q581 74 563 92L447 207L331 91Q217 -22 208 -27Q206 -28 203 -28H197Q168 -28 168 2Q168 13 178 24T288 135L404 250L288 366Q177 479 173 485T168 500",247:"344 495Q344 535 372 566T447 597Q490 597 519 566T548 495Q548 452 518 423T446 393Q404 393 374 423T344 495ZM87 221Q64 230 64 251T84 279Q89 281 448 281H806Q807 280 810 278T816 274T822 269T826 262T828 251Q828 230 806 221H87ZM344 -36T344 6T373 78T446 108Q487 108 517 79T548 6Q548 -35 519 -65T446 -96Q406 -96 375 -66",305:"247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247",567:"28 -163Q58 -168 64 -168Q124 -168 135 -77Q137 -65 137 141T136 353Q132 371 120 377T72 385H52V408Q52 431 54 431L58 432Q62 432 70 432T87 433T108 434T133 436Q151 437 171 438T202 441T214 442H218V184Q217 -36 217 -59T211 -98Q195 -145 153 -175T58 -205Q9 -205 -23 -179T-55 -117Q-55 -94 -40 -79T-2 -64T36 -79T52 -118Q52 -143 28 -163",697:"240 563Q278 563 304 539T331 480V473Q331 462 316 431T217 236Q199 200 174 151T136 78T123 50Q113 33 105 33Q101 33 72 45T38 60Q35 63 35 65Q35 77 101 293T171 517Q182 542 202 552T240 563",710:"207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632",711:"131 603Q130 604 136 618T150 646T158 659L223 635L287 611L351 635L416 659Q417 660 424 647T437 619T443 603Q440 601 364 558T287 515T210 558T131 603",713:"80 540V607H494V540H80",714:"391 706Q419 706 439 683T460 634Q460 608 441 593T366 550Q356 545 351 543L275 503L256 527Q236 552 237 553Q242 558 292 620Q299 629 309 641T324 659T336 673T346 685T354 693T363 699T371 703T380 705T391 706",715:"114 634Q114 663 136 684T183 706Q191 706 196 705T208 700T219 693T232 681T245 666T262 645T282 620Q332 558 337 553Q338 552 318 527L299 503L223 543Q215 547 202 553T183 563T167 571T153 580T141 587T131 595T124 603T118 612T115 622T114 634",728:"287 500Q208 500 155 558T102 689V694H153V685Q153 681 154 674T164 648T186 615T226 590T287 578Q347 578 382 611T421 685V694H472V689Q472 623 422 562T287 500",729:"202 610Q202 647 227 671T283 695Q324 695 348 669T372 610T350 551T287 525Q248 525 225 551T202 610",730:"160 618Q160 653 193 677T279 702H284Q381 702 407 647Q414 634 414 618Q414 607 410 596T395 570T355 546T287 536T220 545T181 568T165 594T160 618ZM352 618Q352 645 341 652T301 659H292Q286 659 278 659T268 660Q247 660 236 653T224 638T222 619Q222 591 234 585T287 578Q315 578 326 580T345 590T352 618",732:"343 552Q320 552 278 575T215 599Q181 599 146 564L134 552L115 569Q111 572 106 576T98 584L96 586Q158 656 165 663Q199 694 230 694Q239 694 244 693Q262 689 300 668T359 647Q393 647 428 682L440 694L459 677Q463 674 468 670T476 662L478 660Q416 590 409 583Q375 552 343 552",768:"-461 634Q-461 663 -439 684T-392 706Q-384 706 -379 705T-367 700T-356 693T-343 681T-330 666T-313 645T-293 620Q-243 558 -238 553Q-237 552 -257 527L-276 503L-352 543Q-360 547 -373 553T-392 563T-408 571T-422 580T-434 587T-444 595T-451 603T-457 612T-460 622T-461 634",769:"-184 706Q-156 706 -136 683T-115 634Q-115 608 -134 593T-209 550Q-219 545 -224 543L-300 503L-319 527Q-339 552 -338 553Q-333 558 -283 620Q-276 629 -266 641T-251 659T-239 673T-229 685T-221 693T-212 699T-204 703T-195 705T-184 706",770:"-368 632L-288 694Q-286 693 -207 632T-127 570T-144 545T-162 520Q-165 520 -225 559L-288 597L-351 559Q-411 520 -414 520Q-415 520 -432 544T-449 570T-368 632",771:"-232 552Q-255 552 -297 575T-360 599Q-394 599 -429 564L-441 552L-460 569Q-464 572 -469 576T-476 584L-479 586Q-417 656 -410 663Q-376 694 -345 694Q-336 694 -331 693Q-313 689 -275 668T-216 647Q-182 647 -147 682L-135 694L-116 677Q-112 674 -107 670T-100 662L-97 660Q-159 590 -166 583Q-200 552 -232 552",772:"-495 540V607H-81V540H-495",774:"-288 500Q-367 500 -420 558T-473 689V694H-422V685Q-422 681 -421 674T-411 648T-389 615T-349 590T-288 578Q-228 578 -193 611T-154 685V694H-103V689Q-103 623 -153 562T-288 500",775:"-373 610Q-373 647 -348 671T-292 695Q-251 695 -227 669T-203 610T-225 551T-288 525Q-327 525 -350 551T-373 610",776:"-479 615Q-479 650 -456 672T-397 695Q-361 693 -341 669T-320 615Q-320 583 -343 559T-399 535Q-428 535 -453 556T-479 615ZM-256 615Q-256 651 -232 673T-176 695Q-149 695 -123 675T-97 615Q-97 578 -121 557T-180 535Q-211 537 -233 559T-256 615",778:"-415 618Q-415 653 -382 677T-296 702H-291Q-194 702 -168 647Q-161 634 -161 618Q-161 607 -165 596T-180 570T-220 546T-288 536T-355 545T-394 568T-410 594T-415 618ZM-223 618Q-223 645 -234 652T-274 659H-283Q-289 659 -297 659T-307 660Q-328 660 -339 653T-351 638T-353 619Q-353 591 -341 585T-288 578Q-260 578 -249 580T-230 590T-223 618",779:"-389 511L-442 543Q-442 544 -424 606T-404 674Q-390 705 -361 713Q-360 713 -356 713T-349 714Q-340 714 -330 712Q-273 690 -273 644Q-273 621 -290 604L-342 554L-389 511ZM-198 511L-251 543Q-251 544 -233 606T-213 674Q-199 705 -170 713Q-169 713 -165 713T-158 714Q-127 714 -105 693T-82 647Q-82 638 -84 631T-89 618T-99 604T-112 590T-130 574T-151 554L-198 511",780:"-444 603Q-445 604 -439 618T-425 646T-417 659L-352 635L-288 611L-224 635L-159 659Q-158 660 -151 647T-138 619T-132 603Q-135 601 -211 558T-288 515T-365 558T-444 603",824:"-705 -210Q-715 -210 -724 -203T-734 -179Q-734 -171 -732 -166Q-730 -163 -474 266T-215 698Q-208 711 -190 711Q-180 711 -171 704T-161 681Q-161 672 -164 667Q-171 654 -425 228T-683 -201Q-692 -210 -705 -210",8194:"",8195:"",8196:"",8197:"",8198:"",8201:"",8202:"",8211:"0 249V300H574V249H0",8212:"0 249V300H1149V249H0",8213:"0 249V300H1149V249H0",8214:"205 -225Q201 -234 199 -237T191 -244T175 -248T161 -246Q151 -240 146 -229Q145 -224 145 251Q145 725 146 730Q156 750 176 750Q193 748 205 727V-225ZM369 727L372 732Q375 737 377 740T385 747T398 750Q406 750 413 747Q423 740 428 730Q430 720 430 251Q430 -219 428 -229Q423 -240 413 -246Q408 -248 400 -248Q393 -248 388 -247T379 -242T375 -236T371 -230L369 -225V727",8215:"0 -61V-10H574V-61H0",8216:"58 461Q58 503 70 542T99 607T134 654T165 684T184 694T201 683T213 664Q213 658 202 648T175 624T143 583T116 518Q115 512 114 505T112 493L111 488Q132 500 161 500Q198 500 221 475T245 414T222 354T161 329Q112 329 85 369T58 461",8217:"74 572T74 608T97 669T157 694Q203 694 232 657T261 559Q261 520 250 482T222 418T187 370T155 339T135 329Q128 329 117 340T106 359Q106 365 117 375T144 399T176 440T203 505Q204 511 205 518T208 530V535L202 532Q196 530 184 527T158 523Q121 523 98 547",8220:"110 461Q110 502 121 541T150 606T185 653T217 684T235 694Q242 694 254 682T266 664Q266 659 254 648T226 623T193 578T167 511Q164 500 164 494T164 487Q188 500 212 500Q251 500 274 475T297 414Q297 378 274 354T212 329Q167 329 139 367T110 461ZM377 461Q377 502 388 541T417 606T452 653T484 684T502 694Q509 694 521 682T533 664Q533 659 521 648T493 623T460 578T434 511Q431 500 431 494T431 487Q455 500 479 500Q518 500 541 475T564 414Q564 378 541 354T479 329Q434 329 406 367T377 461",8221:"38 572T38 608T61 669T121 694Q167 694 196 657T225 559Q225 520 214 482T186 418T151 370T119 339T99 329T82 340T70 360Q70 365 74 369T92 385T122 414Q142 441 154 471T170 518L172 535L166 532Q160 530 148 527T122 523Q85 523 62 547ZM305 572T305 608T328 669T388 694Q434 694 463 657T492 559Q492 520 481 482T453 418T418 370T386 339T366 329T349 340T337 360Q337 365 341 369T359 385T389 414Q409 441 421 471T436 518L439 535L433 532Q427 530 415 527T389 523Q352 523 329 547",8224:"231 470Q232 471 232 473Q232 477 213 540T193 636Q192 642 192 651T204 677T239 700Q249 702 255 702Q300 702 315 660Q317 653 317 636Q317 603 298 539T279 472V470Q280 470 318 488T383 506Q408 506 423 493T442 467T446 444T443 421T424 396T383 382Q355 382 318 400T279 418Q278 416 285 392T303 334T316 284Q318 268 318 234Q318 149 311 45T296 -127T284 -203Q279 -211 255 -211Q237 -211 233 -210T226 -203Q222 -195 214 -129T199 41T192 234V245Q192 286 212 349Q233 413 231 418Q229 418 192 400T128 382Q102 382 86 396T67 421T64 444T67 466T86 492T128 506Q155 506 192 488T231 470",8225:"193 637Q193 663 206 679T231 698T255 702T279 699T304 679T317 637Q317 605 299 557T280 504Q280 503 281 503T320 521T382 539Q410 539 428 521T446 476Q446 454 432 434T383 414H377Q358 414 320 431T281 449L280 448Q280 444 298 396T317 316Q318 310 318 301T306 275T271 252Q261 250 255 250Q210 250 195 292Q193 299 193 316Q193 347 211 395T230 448Q230 449 229 449Q227 449 196 434Q151 414 133 414H127Q102 414 87 427T68 452T64 477Q64 503 81 521T127 539Q143 539 164 532T204 515T226 504Q230 502 230 504Q230 508 212 556T193 637ZM193 184Q193 210 206 226T231 245T255 249T279 246T304 226T317 184Q317 153 299 106T280 53Q280 51 282 51T322 68T383 86Q411 86 428 69T445 24T428 -21T382 -39Q358 -39 322 -22T282 -4Q280 -3 280 -3T280 -6Q281 -13 299 -59T317 -136Q318 -142 318 -151T306 -177T271 -200Q261 -202 255 -202Q210 -202 195 -160Q193 -153 193 -136Q193 -106 211 -60T230 -6Q230 -4 228 -4T188 -21T128 -39Q100 -39 83 -22T65 24Q65 53 82 69T127 86Q150 86 187 69T228 51Q230 50 230 50T230 53Q229 58 211 105T193 184",8226:"64 251Q64 303 80 344T121 409T175 448T230 469T275 474Q277 474 283 474T292 473Q385 473 447 415T510 251Q510 149 449 89T287 28T126 88T64 251",8230:"74 85Q74 121 99 146T156 171Q200 171 222 143T245 85Q245 56 224 29T160 1Q118 1 96 27T74 85ZM562 85Q562 121 587 146T644 171Q688 171 710 143T733 85Q733 56 712 29T648 1Q606 1 584 27T562 85ZM1050 85Q1050 121 1075 146T1132 171Q1176 171 1198 143T1221 85Q1221 56 1200 29T1136 1Q1094 1 1072 27T1050 85",8242:"240 563Q278 563 304 539T331 480V473Q331 462 316 431T217 236Q199 200 174 151T136 78T123 50Q113 33 105 33Q101 33 72 45T38 60Q35 63 35 65Q35 77 101 293T171 517Q182 542 202 552T240 563",8254:"80 540V607H494V540H80",8260:"451 730Q460 750 479 750Q492 750 501 740T510 718Q508 708 318 244L122 -232Q112 -250 95 -250Q82 -250 73 -241T64 -218Q66 -205 258 261T451 730",8407:"406 694Q406 704 413 713T433 723Q448 723 454 719T467 701Q483 665 522 648Q542 637 542 619Q542 605 536 599T514 586Q468 569 431 532Q411 513 399 513Q386 513 378 522T369 543Q369 557 381 568Q385 572 387 574L400 588H228L56 589Q33 598 33 618Q33 636 56 649H426Q406 676 406 694",8463:"477 56Q477 48 479 46T490 43Q522 45 544 75T577 140Q582 156 585 159T605 162H611H622Q642 162 642 148Q642 138 632 114T602 62T550 13T478 -8Q429 -8 394 17T358 83Q358 95 395 199T433 350Q433 400 394 400H388H383Q335 400 291 363Q256 332 236 298Q233 293 202 170T169 40Q160 18 141 5T99 -8Q70 -8 58 9T45 39Q45 51 116 336L167 540H80V607H184L188 622H184Q183 622 179 622T169 623T157 624T146 624T136 624T131 625Q119 628 119 642Q119 647 123 661T129 679Q133 684 142 685T220 690Q293 694 307 694Q324 694 328 679Q328 673 311 607H494V540H294Q286 507 278 473T264 420L260 403Q260 400 269 408Q327 451 393 451H401H410Q425 451 439 450T476 442T515 424T544 391T556 337Q556 286 517 179T477 56",8467:"245 -19Q228 -19 212 -16T184 -6T162 9T143 27T129 46T118 66T111 84T106 99T102 111L101 116L69 89L36 62Q31 60 24 62Q-1 88 -1 98Q-1 101 1 105Q1 106 73 170L95 189V197Q95 242 112 317T159 476T241 624T353 701Q357 702 367 702Q428 702 444 641Q446 630 446 606Q446 454 241 246L215 220L212 203Q203 150 203 114Q203 113 203 106T204 95T205 82T209 67T214 54T223 43T236 35T253 32Q277 32 305 44T352 70T389 98T407 112Q409 113 412 113Q420 113 432 95Q445 77 443 70Q440 64 416 44T342 3T245 -19ZM387 615Q387 651 366 651Q342 651 321 604T276 470L241 331Q246 331 280 373T350 486T387 615",8472:"399 159Q410 159 421 151T433 126Q433 104 410 85Q408 84 410 78Q411 72 414 66T428 51T455 43Q483 43 506 55T543 83T568 125T584 166T594 206Q595 211 596 214Q610 273 610 301Q610 365 542 365H538Q483 365 429 344T337 292T269 229T225 175T210 150L255 99Q261 92 274 78T292 58T305 41T316 22T321 3T324 -23Q324 -87 283 -148T174 -210H171Q161 -210 152 -209T128 -201T101 -180T81 -141T72 -78Q72 -72 72 -60T73 -45Q79 4 102 65L108 81Q84 117 84 167Q84 273 140 367T269 461Q285 461 285 447Q285 440 282 431Q278 418 276 415T264 410Q228 404 201 336T174 219Q174 218 176 202L184 214Q252 303 348 360T549 417Q614 417 658 391T719 317Q726 292 726 260Q726 148 646 70T451 -8Q407 -8 377 17T346 92Q346 159 396 159H399ZM178 -160Q200 -160 216 -132T232 -75Q232 -63 228 -56T203 -26Q196 -18 192 -14Q185 -5 176 5T161 20T156 27L153 28Q151 28 146 8T137 -42T132 -89Q132 -160 178 -160",8501:"590 427Q581 427 579 433T575 450T568 470V468L532 288L541 281Q620 220 634 165L637 154V124Q637 74 628 46Q623 32 612 16T592 0Q580 0 578 19T569 69T538 121Q532 126 385 240T236 355Q234 355 231 338T225 291T222 237Q222 222 223 213T225 201T228 195T231 190Q238 179 261 160T300 119T316 73Q316 41 291 23T231 1Q226 0 149 0H98Q73 0 69 3T64 24Q64 43 67 47T85 51H89Q119 51 134 55T152 64T154 76Q154 95 125 141T96 220Q96 243 104 270T123 319T145 360T164 391T172 404T150 421T102 468T68 529L65 541V570Q65 620 74 648Q79 664 91 679T111 694Q122 694 123 675T132 625T164 573Q168 569 319 452T471 335Q471 337 486 409T502 488Q502 489 491 493T467 511T448 546V573Q448 602 452 624T462 659T474 680T486 691T493 694Q499 694 502 691T507 682T513 673Q517 667 534 651T557 630Q558 629 590 616T631 587Q638 577 638 543Q637 489 622 458T590 427",8592:"1063 281Q1084 268 1084 251Q1084 231 1063 221L649 220H235Q340 133 364 17Q368 1 368 -2Q368 -16 343 -17Q340 -17 338 -17H332Q317 -17 314 -14T305 6Q298 34 285 62T247 126T179 189T78 233Q64 237 64 251Q64 261 74 265T108 277T154 297Q212 328 251 379T305 495Q309 511 313 514T333 518H338Q363 517 367 510Q368 507 368 503Q368 500 364 484Q345 401 287 331Q254 295 235 282L649 281H1063",8593:"33 396Q14 396 14 423Q14 445 18 449T41 459Q72 466 99 478T147 505T185 537T215 571T238 604T254 635T264 661T270 678L272 685Q276 694 288 694Q298 692 300 689T307 672Q331 592 392 535T535 459Q553 454 557 450T561 423Q561 396 542 396Q531 396 501 405T418 443T329 517L319 529L318 179V-171Q307 -193 288 -193Q265 -193 258 -171L257 179V529L247 517Q209 473 158 444T76 405T33 396",8594:"65 251Q65 270 87 281H500L914 282Q881 304 842 357T785 482Q781 500 781 501Q781 512 792 517Q794 518 812 518H817Q832 518 835 515T844 495Q864 412 923 351T1065 270Q1085 263 1085 251Q1085 240 1077 236T1044 225T995 204Q937 173 898 122T844 6Q840 -10 836 -13T816 -17H811Q786 -16 782 -9Q781 -6 781 -2Q781 1 785 17Q813 138 914 220H500L87 221Q65 228 65 251",8595:"14 77Q14 104 33 104Q44 104 74 96T156 57T247 -17L257 -29V321Q257 669 259 675Q268 694 289 694Q295 693 300 691T307 686T313 679T318 672V321L319 -29L329 -17Q366 26 417 55T499 94T542 104Q561 104 561 77Q561 56 557 51T535 41Q481 28 438 0T370 -58T330 -119T308 -167T302 -187Q297 -194 288 -194Q278 -194 273 -186T265 -165T251 -127T220 -77Q151 15 41 41Q22 46 18 50T14 77",8596:"305 495Q309 511 313 514T333 518H338Q363 517 367 510Q368 507 368 503Q368 500 364 484Q345 401 287 331Q254 295 235 282L404 281H744L914 282Q880 305 839 362T785 484Q781 500 781 503Q781 517 806 518Q809 518 811 518H817Q832 518 835 515T844 495Q864 412 923 351T1065 270Q1085 263 1085 251Q1085 240 1077 236T1044 225T995 204Q937 173 898 122T844 6Q840 -10 836 -13T816 -17H811Q786 -16 782 -9Q781 -6 781 -2Q781 1 785 17Q813 138 914 220H235Q340 133 364 17Q368 1 368 -2Q368 -16 343 -17Q340 -17 338 -17H332Q317 -17 314 -14T305 6Q298 34 285 62T247 126T179 189T78 233Q64 237 64 251Q64 261 74 265T108 277T154 297Q212 328 251 379T305 495",8597:"33 469Q14 469 14 496Q14 518 18 522T41 532Q121 551 182 608T268 745Q275 767 288 767Q299 767 303 755T320 713T355 650Q424 558 535 532Q553 527 557 523T561 496Q561 469 542 469Q531 469 501 478T418 516T329 590L319 602L318 426V74L319 -102L329 -90Q366 -47 417 -18T499 21T542 31Q561 31 561 4Q561 -17 557 -22T535 -32Q454 -51 393 -108T307 -245Q300 -267 288 -267Q279 -267 274 -259T266 -238T250 -200T220 -150Q151 -58 41 -32Q22 -27 18 -23T14 4Q14 31 33 31Q44 31 74 23T156 -16T247 -90L257 -102V602L247 590Q209 546 158 517T76 478T33 469",8598:"429 724Q438 724 452 711T466 690Q466 681 452 671Q361 602 242 599H218L756 135Q832 69 913 -1T1036 -108L1077 -143Q1084 -151 1084 -163Q1084 -180 1074 -187T1054 -194H1052Q1043 -194 939 -105Q866 -42 812 5Q180 549 178 549V546Q179 542 179 539Q183 520 183 483Q183 435 172 390T149 323T130 296Q121 292 115 295Q85 312 85 328Q85 331 95 350T115 406T125 486Q125 540 110 583T79 648T64 675Q64 681 68 687T81 693Q87 693 94 690Q162 657 232 657Q296 657 349 681T420 722Q422 724 429 724",8599:"1069 693Q1076 693 1080 687T1085 675Q1085 671 1076 656T1055 621T1034 565T1024 486Q1024 442 1034 406T1054 351T1064 328Q1064 321 1057 313T1042 300L1034 295Q1030 293 1027 293Q1023 293 1020 295T1014 301T1009 308T1005 316T1001 324Q980 368 971 419Q966 442 966 484V492Q966 528 972 553Q971 553 757 368T328 -3T107 -191Q103 -193 94 -193Q78 -193 71 -184T64 -164Q64 -153 72 -143Q79 -136 382 124L934 599H909Q837 599 760 634T683 690Q683 697 696 710T722 724Q726 724 742 714T779 691T838 668T920 657Q959 657 991 666T1043 684T1069 693",8600:"65 663Q65 680 74 687T93 694H96Q104 694 118 683T204 610Q280 545 338 495Q969 -49 971 -49L970 -46Q970 -42 970 -39Q966 -20 966 18Q966 65 977 110T1001 177T1019 204Q1028 208 1034 205Q1064 188 1064 172Q1064 169 1054 150T1034 94T1024 14Q1024 -28 1033 -64T1054 -120T1075 -155T1085 -175Q1085 -181 1081 -187T1068 -193Q1062 -193 1055 -190Q987 -157 919 -157Q817 -157 739 -215Q727 -224 720 -224Q712 -224 697 -210Q683 -199 683 -190T697 -171Q788 -102 907 -99H931L393 365Q317 431 236 501T114 608L72 643Q65 651 65 663",8601:"80 -193Q73 -193 69 -187T64 -175Q64 -172 79 -150T109 -84T125 14Q125 58 115 94T95 149T85 172Q85 179 92 187T108 200L115 205Q119 207 122 207Q126 207 129 205T135 199T140 192T144 184T148 176Q169 132 178 81Q183 58 183 17Q183 -7 182 -24T178 -48L177 -53Q178 -53 389 129T816 498T1043 692Q1049 694 1054 694Q1070 694 1077 684T1085 664Q1085 653 1077 643Q1070 636 767 376L215 -98L240 -99Q312 -99 389 -134T466 -190Q466 -197 452 -210T429 -224Q422 -224 411 -215Q330 -157 229 -157Q190 -157 158 -166T106 -184T80 -193",8614:"65 426Q74 448 95 448Q112 448 125 426V281H500L914 282Q881 304 842 357T785 482Q781 500 781 501Q781 512 792 517Q794 518 812 518H817Q832 518 835 515T844 495Q864 412 923 351T1065 270Q1085 263 1085 251Q1085 240 1077 236T1044 225T995 204Q937 173 898 122T844 6Q840 -10 836 -13T816 -17H811Q786 -16 782 -9Q781 -6 781 -2Q781 1 785 17Q813 138 914 220H500L135 221Q134 221 133 221T130 220H125V76Q115 54 95 54Q73 54 65 76V426",8617:"1029 475Q1029 505 1068 505Q1129 501 1173 463T1218 363Q1218 296 1170 259T1066 221H1063L649 220H235Q340 133 364 17Q368 1 368 -2Q368 -16 343 -17Q340 -17 338 -17H332Q317 -17 314 -14T305 6Q298 34 285 62T247 126T179 189T78 233Q64 237 64 251Q64 261 74 265T108 277T154 297Q212 328 251 379T305 495Q309 511 313 514T333 518H338Q363 517 367 510Q368 507 368 503Q368 500 364 484Q345 401 287 331Q254 295 235 282L649 281H1063Q1105 284 1131 305T1158 361Q1158 385 1146 401Q1122 441 1063 444Q1029 446 1029 475",8618:"225 221H218Q159 221 112 260T65 363Q65 431 116 468T221 505Q254 503 254 474Q254 456 245 450T216 443T188 438Q152 427 137 401Q125 385 125 362Q125 334 147 310Q171 288 221 281H632L1046 282Q1013 304 974 357T917 482Q913 500 913 501Q913 512 924 517Q926 518 944 518H949Q964 518 967 515T976 495Q996 412 1055 351T1197 270Q1217 263 1217 251Q1217 240 1209 236T1176 225T1127 204Q1069 173 1030 122T976 6Q972 -10 968 -13T948 -17H943Q918 -16 914 -9Q913 -6 913 -2Q913 1 917 17Q945 138 1046 220H632L225 221",8636:"1063 281Q1084 268 1084 251Q1084 231 1063 221L572 220Q79 220 77 221Q64 225 64 244Q64 250 64 254T67 261T71 265T78 268T85 272Q142 302 189 345T258 421T296 484T315 516Q319 518 337 518Q358 518 363 512Q370 504 367 496Q360 469 319 404T219 290L209 282L636 281H1063",8637:"1063 281Q1084 268 1084 251Q1084 231 1063 221L636 220H209L219 212Q278 162 319 97T367 5Q370 -3 363 -11Q358 -17 337 -17H332Q318 -17 314 -14T302 7Q278 55 246 95T185 160T130 202T88 228L70 237Q64 243 64 257Q64 274 75 279Q78 281 571 281H1063",8640:"65 251Q65 270 87 281H513L940 282L930 290Q871 338 830 403T782 496Q779 510 791 517Q794 518 812 518H817Q831 518 835 515T847 494Q871 445 903 404T966 338T1022 298T1064 272T1083 259Q1085 255 1085 245Q1085 225 1072 221Q1070 220 578 220L87 221Q65 228 65 251",8641:"84 279Q89 281 580 281Q1070 281 1074 279Q1085 275 1085 256Q1085 245 1083 241T1066 230Q919 153 847 7Q839 -11 835 -14T817 -17H812Q791 -17 786 -11Q779 -3 782 5Q789 31 830 96T930 212L940 220H513L87 221Q64 229 64 250Q64 272 84 279",8652:"65 451Q65 470 87 481H513L940 482L930 490Q871 538 830 603T782 696Q779 710 791 717Q794 718 812 718H817Q831 718 835 715T847 694Q871 645 903 604T966 538T1022 498T1064 472T1083 459Q1085 455 1085 445Q1085 425 1072 421Q1070 420 578 420L87 421Q65 428 65 451ZM1063 281Q1084 268 1084 251Q1084 231 1063 221L636 220H209L219 212Q278 162 319 97T367 5Q370 -3 363 -11Q358 -17 337 -17H332Q318 -17 314 -14T302 7Q278 55 246 95T185 160T130 202T88 228L70 237Q64 243 64 257Q64 274 75 279Q78 281 571 281H1063",8656:"1063 169L1068 166Q1072 163 1074 162T1079 157T1083 149T1085 139Q1085 118 1063 109L733 108H404L412 99Q455 50 488 -10Q498 -27 493 -37Q487 -46 465 -46H460Q446 -46 439 -39T426 -18T399 25T344 89Q239 194 99 229Q96 230 92 231T85 232T79 234T73 235T69 237T66 240T65 244T64 250Q64 267 90 271Q197 295 286 361T430 525Q439 542 442 544T460 547H465Q487 547 492 539Q496 531 496 530Q496 521 471 482T414 405L404 394L733 393H1063Q1064 392 1069 389T1076 384T1082 375T1085 362Q1085 344 1063 333L700 332H338L324 321Q283 290 230 264L205 250Q266 224 323 180L338 170L700 169H1063",8657:"672 343Q672 326 670 320T657 313Q644 313 602 335Q577 349 557 361T527 381T509 395T499 403T495 406T494 118Q494 -166 492 -174Q484 -193 465 -193H463Q456 -193 453 -192T444 -186T433 -170V465L423 477Q407 495 394 514T367 554T351 579Q349 576 339 560T313 520T279 477L269 465V-22V-102Q269 -132 269 -145T268 -169T266 -180T260 -185T253 -191Q248 -193 239 -193H237Q218 -193 210 -174Q208 -166 208 118Q208 406 207 406L199 399Q191 392 165 374T100 335Q58 313 45 313Q35 313 33 319T30 343V349Q30 359 30 362T35 369T45 374T66 383T100 401Q267 499 333 680Q339 694 351 694Q361 694 365 687T380 652T407 597Q442 536 489 489T573 420T638 383T670 365Q672 361 672 343",8658:"64 362Q64 380 87 393H416L745 394L735 405Q708 436 681 477T654 531Q654 547 679 547H684H689Q703 547 710 540T723 519T750 475T806 411Q914 303 1059 271Q1060 271 1063 270T1068 269T1072 268T1076 266T1079 264T1082 260T1083 256T1084 250Q1084 242 1080 238T1063 231T1035 225T992 211T934 185Q797 112 719 -24Q710 -40 706 -43T689 -46H684Q653 -46 653 -31Q653 -24 661 -10Q694 50 737 99L745 108H416L87 109Q64 117 64 139Q64 156 87 169H449L812 170L826 180Q842 193 860 204T892 223T918 237T937 246L944 250L919 264Q866 290 825 321L811 332H449L87 333Q64 343 64 362",8659:"30 157Q30 174 32 180T46 187Q59 187 104 163Q154 136 198 101L207 94Q208 94 208 382Q208 666 210 674Q219 694 241 694Q254 692 262 683Q266 679 267 674Q269 658 269 522V35L279 23Q295 5 308 -14T335 -54T351 -79Q353 -76 363 -60T389 -20T423 23L433 35V671Q439 682 444 686T452 692T463 693H465Q484 693 492 674Q494 666 494 382Q494 94 495 94L504 101Q547 135 593 160T652 187Q665 191 671 177Q672 175 672 157Q672 137 669 134T636 116Q606 101 578 83T528 47T486 9T452 -30T424 -68T403 -103T387 -134T377 -159T370 -176L367 -184Q360 -194 351 -194Q345 -194 342 -192T334 -182T327 -166T315 -137T295 -97Q260 -36 213 11T129 80T63 117T32 136Q30 139 30 157",8660:"336 497Q358 541 363 544Q367 547 379 547H384Q401 547 405 545Q418 538 414 525T389 474T346 408L335 393H814L803 408Q781 436 760 474T735 525T744 545Q748 547 765 547Q771 547 774 547T780 546T786 544T790 541T794 535T799 527T805 514T813 497Q841 446 877 406T950 340T1014 301T1068 276L1096 265Q1102 259 1102 251Q1102 240 1085 232Q981 195 902 121Q835 56 798 -25Q791 -40 787 -43T765 -46T744 -44Q735 -40 735 -30Q735 -15 760 28T806 98L814 108H335L343 98Q361 75 378 46T404 -1T414 -24Q418 -37 405 -44Q401 -46 384 -46T363 -43T351 -25Q314 56 247 121Q216 150 182 173T125 206T79 226T53 237Q47 243 47 251Q47 254 47 256T49 261T52 264T57 267T61 268T66 270T71 272Q246 335 336 497ZM985 251Q932 280 882 323L871 332H278Q264 321 253 311T237 297T214 282T164 251L176 244Q221 218 278 169H871Q928 218 973 244L985 251",8661:"49 441Q30 441 30 464V471V480Q30 498 44 502Q237 573 331 750Q337 767 351 767Q360 767 368 753T400 702T460 629Q504 584 552 554T632 511T666 497Q672 493 672 471Q672 454 670 449Q664 441 653 441Q639 443 591 465T508 513L495 522L494 386V114L495 -22L508 -13Q543 12 591 34T653 59Q672 59 672 36V29V20Q672 2 658 -2Q465 -71 367 -257Q360 -267 351 -267Q343 -267 336 -257T320 -231T292 -187T242 -129Q198 -84 150 -54T70 -11T36 3Q30 7 30 29Q30 46 32 51Q38 59 49 59Q63 57 111 35T194 -13L208 -22V522L194 513Q159 488 111 466T49 441ZM422 584Q411 594 400 606T383 626T366 648T351 667Q349 665 339 652T314 620T280 584L269 573V-73L280 -84Q305 -108 351 -166Q353 -164 363 -151T389 -119T422 -84L433 -73V573L422 584",8704:"1 664Q-2 685 23 693H27Q46 693 54 680T102 578L148 475H492L533 570Q541 586 548 603T560 630T569 650T576 667T582 678T588 686T594 691T600 693T609 694Q622 694 631 684T639 662Q637 653 492 325T341 -8Q333 -16 320 -16Q306 -16 298 -8Q294 -4 147 326L1 656V664ZM464 414H319Q175 414 175 413L319 88L464 414",8707:"81 347Q81 359 84 363T104 378H513V633H300L87 634Q64 642 64 664Q64 685 84 692Q89 694 321 694H552Q571 681 574 669V25Q567 7 552 1H87Q64 12 64 30T87 61H513V317H308Q103 317 99 319Q81 328 81 347",8709:"285 711Q307 711 326 708T357 701T370 698Q371 698 375 710T383 735T389 750Q395 767 415 767Q431 767 438 757T446 738T436 701T426 670Q426 668 433 664Q468 633 489 588Q511 542 519 488T528 344Q528 286 524 243T508 150T466 63T394 6Q345 -17 287 -17Q265 -17 246 -14T216 -7T203 -4Q191 -47 183 -60T159 -73Q146 -73 137 -63T128 -44Q128 -38 138 -7L148 24L141 30Q134 35 120 49Q94 77 78 113T56 194T48 268T46 344Q46 388 47 416T56 494T78 577T122 644T194 694Q239 711 285 711ZM351 639Q350 639 346 642T337 648T325 654T306 658T283 660Q254 660 221 638T181 567Q171 513 171 375Q171 164 182 129L351 639ZM402 356Q402 516 395 555Q395 557 395 559T394 563T394 566L393 568L223 57Q252 34 286 34H288Q318 34 346 53T387 109Q402 152 402 329V356",8710:"901 12Q901 7 892 0H479Q65 0 62 2Q56 6 56 11Q56 14 242 347T433 685Q438 694 450 696Q454 698 480 698H506L523 687Q526 683 711 354T899 17Q901 13 901 12ZM653 137L427 538L202 137L315 136H540L653 137",8712:"97 251Q97 393 194 484T417 586Q418 586 436 586T482 586T538 587H648Q649 586 652 584T658 580T664 575T668 568T670 557Q670 536 648 527L534 526Q515 526 491 526T457 526T435 526T417 525T404 523T390 521T374 517Q298 498 243 447T167 324Q159 295 159 283Q159 281 403 281H648Q649 280 652 278T658 274T664 269T668 262T670 251Q670 230 648 221L403 220Q159 220 159 218Q159 206 166 182T190 122T247 50T341 -6Q380 -20 405 -22T534 -25H648Q649 -26 654 -29T661 -34T667 -43T670 -56Q670 -74 648 -85L541 -86Q419 -86 396 -82Q276 -65 187 24T97 251",8713:"126 -210Q116 -210 107 -203T97 -179Q97 -171 99 -166Q99 -165 111 -145T150 -80T203 8Q97 104 97 251Q97 393 194 484T417 586Q418 586 436 586T482 586T538 587H549Q565 614 582 643T608 685L616 698Q623 711 641 711Q651 711 660 704T670 681Q670 672 667 667Q666 666 661 657T644 627T620 587H648Q649 586 652 584T658 580T664 575T668 568T670 557Q670 536 648 527L584 526L437 281H648Q649 280 652 278T658 274T664 269T668 262T670 251Q670 230 648 221L403 220H401L283 23Q311 5 341 -6Q380 -20 405 -22T534 -25H648Q649 -26 654 -29T661 -34T667 -43T670 -56Q670 -74 648 -85L541 -86Q419 -86 396 -82Q320 -71 252 -29Q152 -197 148 -201Q139 -210 126 -210ZM235 62L330 220Q159 219 159 218Q159 196 176 150T235 62ZM366 281L513 526Q503 526 487 526T465 526T448 525T433 525T422 525T412 524T403 523T394 521T385 519T374 517Q298 498 243 447T167 324Q159 295 159 283Q159 281 366 281",8715:"96 251Q96 268 119 281H363Q607 281 607 283Q607 295 600 319T576 379T519 451T425 507Q386 521 361 523T233 526L119 527Q96 535 96 557Q96 578 116 585Q121 587 229 587Q238 587 257 587T288 588Q366 588 435 568T568 488Q670 388 670 251Q670 155 621 78T499 -39T345 -85Q336 -86 225 -86L119 -85Q96 -77 96 -55Q96 -38 119 -25H233Q356 -24 371 -21Q373 -21 393 -16Q468 3 523 55T599 177Q607 206 607 218Q607 220 363 220L119 221Q96 229 96 251",8722:"119 221Q96 230 96 251T116 279Q121 281 448 281H775Q776 280 779 278T785 274T791 269T795 262T797 251Q797 230 775 221H119",8723:"64 155Q64 172 87 185H416V476H251L87 477Q64 485 64 507Q64 528 84 535Q89 537 448 537H807Q808 536 811 534T817 530T823 525T827 518T829 507Q829 486 807 477L642 476H477V185H807Q808 184 811 182T817 178T823 173T827 166T829 155Q829 134 807 125L642 124H477V-39Q477 -203 475 -208Q466 -227 446 -227Q427 -227 417 -205L416 -41V124H251L87 125Q64 133 64 155",8725:"451 730Q460 750 479 750Q492 750 501 740T510 718Q508 708 318 244L122 -232Q112 -250 95 -250Q82 -250 73 -241T64 -218Q66 -205 258 261T451 730",8726:"64 718Q63 731 72 740T94 750Q106 750 113 743Q118 741 122 732L318 256Q508 -208 510 -218Q511 -231 502 -240T480 -250Q460 -250 451 -230Q451 -229 259 238T64 718",8727:"236 431Q237 447 251 459T287 472T323 459T338 431Q338 423 328 363L317 300Q318 300 340 317T392 356T435 387Q442 390 450 390Q470 390 485 374T501 335Q501 326 500 320T494 309T486 300T473 293T458 287T438 280T414 272L353 250L414 228Q422 225 436 221T457 214T472 208T485 201T493 192T499 181T501 166Q501 141 484 126T450 111Q447 111 445 111T441 111T437 112T433 114T428 117T422 121T414 127T404 135T391 145T374 158L317 200L328 137Q338 77 338 69Q336 52 321 40T287 28T253 40T236 69Q236 77 246 137L257 200Q256 200 234 183T182 144T139 113Q132 110 124 110Q104 110 89 126T73 165Q73 174 74 180T80 191T88 200T101 207T116 213T136 220T160 228L221 250L160 272Q152 275 138 279T117 286T102 292T89 299T81 308T75 319T73 334Q73 359 90 374T124 389Q127 389 129 389T133 389T137 388T141 386T146 383T152 379T160 373T170 365T183 355T200 342L257 300L246 363Q236 423 236 431",8728:"64 251Q64 303 80 344T121 409T175 448T230 469T275 474Q277 474 283 474T292 473Q385 473 447 415T510 251Q510 149 449 89T287 28T126 88T64 251ZM448 251Q448 325 405 369T286 413Q215 413 171 371T126 251Q126 177 168 133T287 89Q361 89 404 132T448 251",8729:"64 251Q64 303 80 344T121 409T175 448T230 469T275 474Q277 474 283 474T292 473Q385 473 447 415T510 251Q510 149 449 89T287 28T126 88T64 251",8730:"107 178Q100 178 89 188T78 207Q78 216 84 220Q85 221 124 248T207 304T260 338Q269 340 275 335Q276 334 370 156L463 -20L698 393Q928 800 935 811Q944 820 954 820Q972 820 980 811T988 789Q988 781 858 553Q776 409 718 306Q452 -166 447 -171Q439 -179 422 -180Q405 -180 400 -175Q399 -174 346 -73T241 128T187 229L151 205Q111 178 107 178",8733:"65 222Q65 282 88 329T144 401T208 438T261 451H273Q312 451 320 450Q456 431 526 330L537 316Q638 451 778 451Q813 451 830 445V388Q821 391 799 391Q758 391 721 377T660 342T618 301T592 266L584 251Q648 152 697 114Q748 74 804 74H806Q823 74 829 77Q830 77 830 38V-1L820 -3Q801 -7 786 -7H771Q699 -7 632 25T527 114L516 128Q414 -8 276 -8Q192 -8 129 56T65 222ZM256 53Q296 53 332 67T392 102T434 143T461 178L469 193Q405 292 356 330Q308 369 251 369H243Q196 369 156 328T116 221Q116 191 124 161T158 99T225 55Q234 53 256 53",8734:"65 219Q65 318 132 385T302 452Q473 452 573 331L589 312L596 320Q710 452 857 452Q948 452 1016 386T1084 225Q1084 125 1017 59T848 -8Q679 -8 576 113L560 132L553 124Q439 -8 292 -8Q200 -8 133 58T65 219ZM1033 224Q1033 291 987 340T875 389Q748 389 648 261Q641 253 642 251Q717 163 748 137Q813 81 880 81Q941 81 987 120T1033 224ZM275 56Q315 56 353 70T418 104T466 144T497 178L507 192Q507 193 474 230T441 269Q355 362 267 362Q210 362 163 324T116 221Q116 150 162 103T275 56",8736:"71 0L68 2Q65 3 63 5T58 11T55 20Q55 21 56 23V25Q55 27 55 30Q55 31 56 33V35Q55 37 55 40Q55 42 57 48Q67 63 346 381Q421 467 518 578Q607 680 623 697T647 714Q656 714 661 708T666 694V692Q676 687 676 674Q676 668 673 663Q672 662 637 622T534 503T400 350L147 61L386 60H653Q666 50 666 40V38Q676 31 676 20Q676 8 661 0H71",8739:"160 -249Q138 -249 129 -225V250Q129 725 131 729Q139 750 159 750T190 725V-225Q181 -249 160 -249",8741:"205 -225Q201 -234 199 -237T191 -244T175 -248T161 -246Q151 -240 146 -229Q145 -224 145 251Q145 725 146 730Q156 750 176 750Q193 748 205 727V-225ZM369 727L372 732Q375 737 377 740T385 747T398 750Q406 750 413 747Q423 740 428 730Q430 720 430 251Q430 -219 428 -229Q423 -240 413 -246Q408 -248 400 -248Q393 -248 388 -247T379 -242T375 -236T371 -230L369 -225V727",8743:"95 -16Q78 -16 71 -6T64 14Q64 20 65 22L212 308Q359 593 361 595Q370 604 385 604Q398 602 405 595Q407 593 554 308L701 22Q702 20 702 15Q702 1 693 -8T671 -17Q661 -17 651 -9Q647 -5 515 251L383 506L251 251Q119 -5 116 -8Q108 -16 95 -16",8744:"64 572Q64 585 72 594T94 604T116 595Q119 592 251 336L383 81L515 336Q647 592 651 596Q661 604 671 604Q684 604 693 595T702 572Q702 567 701 565L554 279Q407 -6 405 -8Q404 -9 401 -11T397 -14Q392 -16 383 -16H380Q369 -16 361 -8Q359 -6 212 279L65 565Q65 566 65 568T64 572",8745:"94 -16Q73 -16 64 8V209Q64 239 64 287Q65 418 69 432Q70 434 70 435Q84 487 125 523T216 575T299 597T354 603H372Q444 603 501 590T591 558T648 515T681 471T696 435Q696 434 697 432Q701 417 702 309Q702 303 702 287Q702 239 702 209V8Q693 -16 672 -16Q650 -16 643 3Q641 8 641 201Q641 397 640 403Q631 472 558 507T383 542Q339 542 298 535T219 511T156 468T126 403Q125 397 125 201Q125 8 123 3Q116 -16 94 -16",8746:"672 603Q693 603 702 579V378Q702 348 702 300Q701 169 697 155Q696 153 696 152Q676 78 593 31T383 -16Q265 -16 179 28T70 152Q70 153 69 155Q65 170 64 278Q64 285 64 300Q64 348 64 378Q64 579 65 583Q74 604 94 604T123 584Q125 579 125 386Q125 190 126 184Q135 115 210 80T383 44Q426 44 467 51T546 75T609 119T640 184Q641 190 641 386Q641 579 643 584Q650 603 672 603",8747:"204 -71Q204 -108 181 -124T137 -141Q132 -141 132 -142Q142 -161 154 -161Q164 -161 186 -152Q200 -145 210 -135T228 -107T241 -77T249 -38T254 -2T258 38T262 74Q282 265 334 489Q334 490 337 503T341 523T347 544T355 569T365 594T379 620T397 643T420 666T447 685T481 700Q511 711 539 711T587 696T616 656T628 612T632 573Q632 536 610 519T562 501Q534 501 513 519T492 571Q492 608 515 624T559 641Q564 641 564 642Q554 661 542 661Q532 661 510 652Q496 645 486 635T468 607T455 577T447 538T442 502T438 462T434 426Q414 235 362 11Q352 -35 347 -54T328 -101T291 -152Q235 -208 162 -211Q147 -211 136 -208T109 -196T83 -165T67 -108Q64 -94 64 -73Q64 -37 86 -19T134 -1Q162 -1 183 -19T204 -71",8764:"64 155Q64 210 84 262T150 353T257 391Q300 391 341 371T417 321T484 264T557 215T637 194Q702 194 745 244T788 367Q796 391 808 391Q815 391 821 381T828 353V342Q828 252 776 181T637 109Q594 109 552 129T476 179T409 236T336 285T256 306Q193 306 149 258T105 132Q98 109 86 109Q76 109 70 122T64 155",8768:"64 561Q64 570 76 576T108 583Q174 583 214 535T254 407Q254 368 238 324T202 248T166 173T149 92Q149 43 169 2T217 -39Q231 -40 242 -46T254 -60Q254 -69 241 -75T210 -82Q145 -82 105 -34T64 93Q64 133 80 177T116 253T152 328T169 408Q169 461 148 500T105 540Q92 540 78 545T64 561",8771:"64 295Q64 378 117 440T257 502Q298 502 339 485T416 443T486 394T560 352T637 335Q693 335 740 373T788 478Q796 502 808 502Q815 502 821 492T828 465V455Q828 365 771 308T640 250Q603 250 562 265T501 294T439 336L370 382Q308 417 256 417Q205 417 164 388T110 317Q110 316 109 304T107 286T103 270T97 255T86 250Q76 250 70 263T64 295ZM64 6T64 27T87 56H93Q99 56 110 56T137 56T173 56T217 56T267 57T323 57T383 57T448 57H807Q808 56 811 54T815 52T819 49T823 45T826 40T828 34T829 27Q829 7 807 -3H87Q64 6 64 27",8773:"64 402Q64 457 84 509T150 600T257 638Q300 638 341 618T417 569T484 511T557 462T637 441Q702 441 745 491T788 614Q796 638 808 638Q815 638 821 628T828 600V589Q828 499 776 428T637 356Q594 356 552 376T476 425T409 483T336 532T256 553Q193 553 149 505T105 379Q98 356 86 356Q76 356 70 369T64 402ZM87 197Q64 207 64 226Q64 247 84 255Q89 257 448 257H807Q808 256 811 254T817 250T823 245T827 238T829 227Q829 209 807 197H87ZM87 -27Q64 -18 64 3Q64 23 86 32Q89 33 448 33H807L812 30Q816 27 818 26T823 21T827 13T829 3Q829 -18 807 -27H87",8776:"64 345Q64 423 119 473T250 524Q301 524 356 503T451 455T542 407T636 385Q700 385 743 417T786 481Q786 493 791 508T807 524Q817 524 823 512T829 479Q829 404 776 352T638 300Q590 300 537 321T443 369T352 417T256 439Q207 439 166 417T110 359Q109 357 107 341T100 312T85 300Q77 300 71 313T64 345ZM64 77Q64 155 119 205T250 256Q302 256 357 235T451 187T541 139T636 117Q699 117 742 148T786 213Q786 231 792 243T808 256T823 242T829 208Q829 134 776 83T640 32Q591 32 537 53T443 101T352 149T256 171Q206 171 165 148T110 91Q109 89 107 73T100 44T85 32Q77 32 71 45T64 77",8781:"798 533Q812 533 820 524T829 502T819 480T769 440Q655 355 537 330Q492 322 447 322Q401 322 356 330Q289 344 219 381T118 443T73 481Q64 490 64 503Q64 517 72 525T94 533Q99 533 102 532Q107 531 138 507T209 456T314 405T446 382Q604 382 765 515Q788 533 798 533ZM95 -32Q81 -32 73 -23T64 -1Q64 10 74 21T124 61Q213 127 293 153T421 179L422 180Q424 180 426 180T432 180T441 180T452 179Q612 179 769 61Q811 29 820 19T829 -1Q829 -14 821 -23T798 -32Q788 -32 765 -14Q608 118 446 118Q287 118 128 -14Q105 -32 95 -32",8784:"87 333Q64 343 64 362Q64 383 84 391Q89 393 448 393H807Q808 392 811 390T817 386T823 381T827 374T829 363Q829 345 807 333H87ZM87 109Q64 118 64 139Q64 159 86 168Q89 169 448 169H807L812 166Q816 163 818 162T823 157T827 149T829 139Q829 118 807 109H87ZM362 635Q362 671 387 696T444 721Q488 721 510 693T533 635Q533 606 512 579T448 551Q406 551 384 577T362 635",8800:"189 -210Q179 -210 170 -203T160 -179Q160 -171 162 -166Q165 -163 327 109H87Q64 118 64 139Q64 159 86 168Q89 169 363 169L461 333H87Q64 343 64 362Q64 383 84 391Q89 393 448 393H496Q533 455 583 539T656 660T679 698Q686 711 704 711Q714 711 723 704T733 681Q733 672 730 667Q729 664 709 631T645 523T567 393H807Q808 392 811 390T817 386T823 381T827 374T829 363Q829 345 807 333H532L433 169H807L812 166Q816 163 818 162T823 157T827 149T829 139Q829 118 807 109H398Q217 -195 211 -201Q202 -210 189 -210",8801:"87 445Q64 454 64 475Q64 497 84 503Q89 505 448 505H807Q808 504 812 502T818 497T823 492T827 484T829 474Q829 456 807 445H87ZM87 221Q64 230 64 251T84 279Q89 281 448 281H807Q808 280 811 278T817 274T823 269T827 262T829 251Q829 230 807 221H87ZM64 6T64 27T87 56H93Q99 56 110 56T137 56T173 56T217 56T267 57T323 57T383 57T448 57H807Q808 56 811 54T815 52T819 49T823 45T826 40T828 34T829 27Q829 7 807 -3H87Q64 6 64 27",8804:"797 55Q797 45 790 35T767 25H759L434 180Q108 336 105 339Q96 348 96 360Q96 378 114 388Q126 394 439 544T757 695Q763 697 766 697Q780 697 788 688T797 666Q797 654 788 645Q784 641 507 509T197 361L466 232Q785 80 790 74Q797 66 797 55ZM119 -199Q96 -191 96 -169Q96 -160 102 -152T119 -140H124Q130 -140 140 -140T164 -140T197 -140T237 -140T283 -139T334 -139T389 -139T448 -139H775Q797 -153 797 -169Q797 -187 775 -199H119",8805:"127 25Q110 25 103 34T96 54Q96 66 105 75Q109 80 439 238L696 361Q113 637 105 645Q96 654 96 667Q96 679 104 688T128 697Q137 696 460 541T788 382Q797 373 797 360Q797 348 788 339Q785 336 459 180L135 25H127ZM119 -199Q96 -191 96 -169Q96 -160 102 -152T119 -140H124Q130 -140 140 -140T164 -140T197 -140T237 -140T283 -139T334 -139T389 -139T448 -139H775Q797 -153 797 -169Q797 -187 775 -199H119",8810:"734 -74T734 -86T727 -107T704 -116H702Q694 -116 584 -55Q473 7 380 58Q87 219 73 229Q64 238 64 250Q64 263 73 272Q87 282 380 443Q695 616 699 617H700Q718 617 726 607T734 588Q734 568 717 560Q705 554 435 404L157 250L439 94Q721 -61 726 -66Q734 -74 734 -86ZM1085 -74T1085 -86T1078 -107T1055 -116H1053Q1045 -116 935 -55Q824 7 731 58Q438 219 424 229Q415 238 415 250Q415 263 424 272Q438 282 731 443Q1046 616 1050 617H1051Q1069 617 1077 607T1085 588Q1085 568 1068 560Q1056 554 786 404L508 250L790 94Q1072 -61 1077 -66Q1085 -74 1085 -86",8811:"64 588Q64 600 72 609T94 618H95Q103 618 209 559Q322 496 419 443Q712 282 725 272Q734 263 734 250Q734 238 725 229Q714 220 415 55T110 -113Q103 -116 95 -116Q78 -116 71 -106T64 -86Q64 -74 72 -66Q77 -61 359 94L641 250L363 404Q277 452 173 509Q95 552 82 560T66 576V577Q64 585 64 588ZM415 588Q415 600 423 609T445 618H446Q454 618 560 559Q673 496 770 443Q1063 282 1076 272Q1085 263 1085 250Q1085 238 1076 229Q1065 220 766 55T461 -113Q454 -116 446 -116Q429 -116 422 -106T415 -86Q415 -74 423 -66Q428 -61 710 94L992 250L714 404Q628 452 524 509Q446 552 433 560T417 576V577Q415 585 415 588",8826:"797 -57Q797 -65 790 -75T766 -86Q748 -86 741 -74T733 -43T719 8T681 72Q647 112 588 141T475 185T343 207T230 216T136 219Q96 219 96 250Q96 280 132 280H136Q193 281 239 283T347 292T457 310T556 342T643 391T703 460T735 553Q741 585 763 585Q781 585 789 575T797 556Q797 540 792 513T758 434T682 345Q605 285 481 254L462 249Q483 246 526 233T633 185T733 104Q767 63 782 15T797 -57",8827:"96 556Q96 568 104 577T126 586Q152 586 158 553Q164 503 188 462T247 394T331 345T429 313T539 294T649 284T758 280H760Q797 280 797 250Q797 219 760 219H758Q627 217 529 204T347 160T216 77T158 -54Q152 -86 126 -86Q110 -86 103 -76T96 -57Q96 -41 101 -14T135 65T211 154Q288 214 412 245L431 250Q410 252 367 265T259 314T160 395Q127 435 112 483T96 556",8834:"96 251Q96 389 191 482T417 586Q418 586 428 586T456 586T496 586T546 587T601 587H775Q776 586 779 584T785 580T791 575T795 568T797 557Q797 536 775 527L597 526Q411 525 395 522Q390 521 370 516Q285 494 222 424T158 251Q158 131 246 53Q313 -9 408 -23Q417 -24 597 -25H775Q776 -26 781 -29T788 -34T794 -43T797 -56Q797 -74 775 -85H493Q407 -85 376 -79Q257 -55 177 35T96 251",8835:"96 -55Q96 -38 119 -25H296Q482 -24 498 -21Q503 -20 523 -15Q609 7 672 77T735 251T665 431T485 524Q476 525 296 526L119 527Q96 535 96 557Q96 578 116 585Q121 587 300 587Q451 586 476 585T522 579Q632 556 714 468T796 251Q796 112 695 13Q612 -65 497 -82Q473 -86 289 -86L119 -85Q96 -77 96 -55",8838:"96 361Q96 499 191 592T417 696Q418 696 428 696T456 696T496 696T546 697T601 697H775Q776 696 779 694T785 690T791 685T795 678T797 667Q797 646 775 637L597 636Q411 635 395 632Q390 631 370 626Q285 604 222 534T158 361Q158 241 246 163Q313 101 408 87Q417 86 597 85H775Q776 84 781 81T788 76T794 67T797 54Q797 36 775 25H493Q407 25 376 31Q257 55 177 145T96 361ZM149 -199Q127 -191 127 -169T149 -140H154Q160 -140 169 -140T192 -140T224 -140T262 -140T306 -139T354 -139T407 -139T463 -139H775Q776 -140 779 -142T785 -146T791 -151T795 -158T797 -169Q797 -190 775 -199H149",8839:"96 55Q96 72 119 85H296Q482 86 498 89Q503 90 523 95Q609 117 672 187T735 361T665 541T485 634Q476 635 296 636L119 637Q96 645 96 667Q96 688 116 695Q121 697 300 697Q451 696 476 695T522 689Q632 666 714 578T796 361Q796 222 695 123Q612 45 497 28Q473 24 289 24L119 25Q96 33 96 55ZM119 -199Q96 -190 96 -169T116 -141Q121 -139 433 -139H745Q766 -152 766 -170Q766 -190 745 -199H119",8846:"672 603Q693 603 702 579V378Q702 348 702 300Q701 169 697 155Q696 153 696 152Q676 78 593 31T383 -16Q265 -16 179 28T70 152Q70 153 69 155Q65 170 64 278Q64 285 64 300Q64 348 64 378Q64 579 65 583Q74 604 94 604T123 584Q125 579 125 386Q125 190 126 184Q135 115 210 80T383 44Q426 44 467 51T546 75T609 119T640 184Q641 190 641 386Q641 579 643 584Q650 603 672 603ZM353 412Q353 420 353 435T352 456Q352 483 358 495T385 507Q403 506 409 494T415 457Q415 451 415 436T414 411V341H558Q579 329 579 311Q579 289 558 281L486 280H414V136Q400 114 384 114Q363 114 354 136L353 208V280H281L209 281Q187 289 187 310Q187 328 209 341H353V412",8849:"127 25Q111 29 104 49V362L105 675Q114 693 127 696H132Q138 696 149 696T174 696T208 696T249 696T297 697T350 697T407 697T468 697H806Q828 683 828 666Q828 646 806 637L485 636H165V85H805Q806 84 809 82T813 80T817 77T821 73T824 68T826 62T827 55Q827 34 806 25H127ZM96 -190T96 -169T119 -140H125Q131 -140 141 -140T167 -140T201 -140T242 -140T290 -139T344 -139T402 -139T463 -139H805Q806 -140 809 -142T813 -144T817 -147T821 -151T824 -156T826 -162T827 -169Q827 -190 806 -199H119Q96 -190 96 -169",8850:"66 55Q66 74 89 85H728V636H408L88 637Q66 645 66 667T88 696H94Q99 696 110 696T135 696T169 696T210 696T258 697T311 697T368 697T429 697H767Q786 684 789 672V49Q782 31 767 25H88Q66 32 66 55ZM88 -199Q66 -191 66 -169Q66 -148 87 -140Q91 -139 433 -139H775Q776 -140 779 -142T783 -144T787 -147T791 -151T794 -156T796 -162T797 -169Q797 -189 775 -199H88",8851:"131 25Q121 1 100 1Q81 1 71 23L70 301Q70 579 72 583Q77 598 90 602Q95 604 385 604H674Q693 591 696 579V25Q686 1 665 1Q646 1 636 23L635 283V543H131V25",8852:"696 25Q689 7 674 1H93Q77 7 71 23L70 301Q70 579 72 583Q80 604 100 604T131 579V61H635V579Q644 603 666 603Q687 603 696 579V25",8853:"64 250Q64 350 98 426T189 546T307 610T434 632Q485 632 496 631Q572 621 635 592Q669 575 699 550T760 484T809 384T828 250Q828 77 725 -27T446 -132Q272 -132 168 -27T64 250ZM416 282V570H414Q341 564 285 535T202 475T156 397T134 332T128 287Q127 283 127 282H416ZM765 288Q760 344 743 389T700 462T647 512T589 543T538 560T499 568L483 570H478V282H766L765 288ZM416 -69V220H127Q130 195 131 189T138 155T150 115T168 76T196 35T234 0T286 -35Q337 -61 410 -69H416ZM483 -69Q554 -60 607 -33T687 21T733 93T756 156T764 209Q766 217 766 220H478V-69H483",8854:"64 250Q64 350 98 426T189 546T307 610T434 632Q485 632 496 631Q572 621 635 592Q669 575 699 550T760 484T809 384T828 250Q828 77 725 -27T446 -132Q272 -132 168 -27T64 250ZM765 288Q753 424 666 497T446 571T227 498T128 288L127 282H766L765 288ZM446 -70Q578 -70 666 4T765 213L766 220H127Q130 195 131 189T138 155T150 115T168 76T196 35T234 0T286 -35Q353 -70 446 -70",8855:"64 250Q64 350 98 426T189 546T307 610T434 632Q485 632 496 631Q572 621 635 592Q669 575 699 550T760 484T809 384T828 250Q828 77 725 -27T446 -132Q272 -132 168 -27T64 250ZM647 512Q567 571 447 571Q340 571 262 523Q237 507 237 505L342 399L447 295L657 505L647 512ZM298 356L192 461Q180 445 161 411Q126 341 126 251Q126 128 192 40L403 250L298 356ZM701 41Q704 41 719 63T750 138T767 250Q767 310 750 362T719 437T701 460L491 250L701 41ZM238 -5Q238 -8 261 -22T336 -53T447 -70Q567 -70 647 -11L657 -4L447 206L342 101Q238 -1 238 -5",8856:"64 250Q64 350 98 426T189 546T307 610T434 632Q485 632 496 631Q572 621 635 592Q669 575 699 550T760 484T809 384T828 250Q828 77 725 -27T446 -132Q272 -132 168 -27T64 250ZM657 505Q656 506 650 510T638 518T623 527T604 537T581 547T553 556T522 563T486 569T446 571Q305 571 216 487T126 251Q126 128 192 40L657 505ZM447 -70Q591 -70 679 16T767 250Q767 308 751 360T719 436T701 460L469 228Q238 -1 238 -5Q238 -8 261 -22T336 -53T447 -70",8857:"64 250Q64 350 98 426T189 546T307 610T434 632Q485 632 496 631Q572 621 635 592Q669 575 699 550T760 484T809 384T828 250Q828 77 725 -27T446 -132Q272 -132 168 -27T64 250ZM767 252Q767 395 681 483T446 571Q303 571 215 486T126 249Q126 107 212 19T446 -70Q596 -70 681 18T767 252ZM335 251Q335 297 368 329T441 361Q498 361 527 327T557 250Q557 202 525 171T446 140Q397 140 366 173T335 251",8866:"65 672Q76 693 91 693Q115 693 123 674Q125 669 125 523V378H615Q618 376 622 373T628 369T632 366T635 362T636 356T637 347Q637 328 619 319Q615 317 370 317H125V171Q125 25 123 20Q114 1 94 1Q73 1 65 23V672",8867:"64 327T64 347T89 378H577V525L578 672Q592 693 604 693Q629 693 638 669V25Q628 1 607 1Q588 1 578 23L577 170V317H88Q64 327 64 347",8868:"64 664Q64 675 71 683T87 693H93Q99 693 110 693T137 693T173 693T217 694T267 694T323 694T383 694T448 694H807Q808 693 811 691T817 687T823 682T827 675T829 664Q829 643 807 634L642 633H477V25Q467 1 446 1Q427 1 417 23L416 328V633H251L87 634Q64 643 64 664",8869:"65 31Q65 38 66 41T71 50T87 61H416V366L417 672Q431 693 443 693Q468 693 477 669V61H807Q808 60 811 58T817 54T823 49T827 42T829 31Q829 10 807 1H87Q65 10 65 31",8872:"160 -249Q138 -249 129 -225V250Q129 725 131 729Q139 750 159 750T190 725V392Q219 393 537 393H896Q897 392 900 390T906 386T912 381T916 374T918 363Q918 345 896 333H190V169H896L900 166Q905 163 907 162T912 157T916 149T918 139Q918 118 896 109H190V-225Q181 -249 160 -249",8900:"280 522Q281 523 285 523H289Q301 523 366 457Q404 420 431 393Q533 291 546 277T560 250Q560 239 548 226T431 108Q313 -10 304 -16Q297 -21 287 -21Q278 -21 275 -19Q270 -17 146 107T18 238Q15 242 15 251Q15 258 18 263Q20 268 145 392T274 519L280 522ZM388 350L288 449L188 350L89 250L288 52L487 250L388 350",8901:"74 251Q74 286 99 311T156 336Q200 336 222 308T245 250Q245 221 224 194T160 166T96 193T74 251",8902:"270 491Q274 502 287 502Q298 502 304 491Q304 486 323 396T342 303L438 314Q520 324 534 324Q540 324 545 320T550 307Q550 298 539 290T456 243Q377 198 377 197L416 111Q456 26 456 22Q457 21 457 18Q457 11 451 6T438 0H437Q432 0 415 16Q387 42 358 68L287 133L216 68Q193 47 167 23Q142 0 136 0Q129 0 123 5T117 18Q117 21 118 22Q118 26 158 111L197 197Q197 198 156 221T72 269T26 298Q24 304 24 307Q24 315 29 319T40 324Q53 324 136 314L232 303Q232 306 251 396T270 491",8904:"906 251Q906 456 905 456Q550 252 549 251Q549 250 726 148T905 45T906 251ZM967 -14Q958 -38 939 -38H937Q928 -38 923 -35Q919 -34 748 64T500 209L71 -38Q69 -39 63 -39Q42 -39 33 -16V518Q45 540 63 540H65Q72 540 174 481Q247 439 302 407L500 292Q578 339 750 438T929 539H933Q958 539 967 515V-14ZM449 251L94 456Q93 456 93 251Q93 45 94 45L106 52Q119 59 139 71T186 98T242 131T301 165T357 197T404 225T437 244L449 251",8942:"74 55Q74 91 99 116T156 141Q200 141 222 113T245 55Q245 26 224 -1T160 -29Q118 -29 96 -3T74 55ZM74 465Q74 501 99 526T156 551Q200 551 222 523T245 465Q245 436 224 409T160 381Q118 381 96 407T74 465ZM74 865Q74 901 99 926T156 951Q200 951 222 923T245 865Q245 836 224 809T160 781Q118 781 96 807T74 865",8943:"74 251Q74 286 99 311T156 336Q200 336 222 308T245 250Q245 221 224 194T160 166T96 193T74 251ZM562 251Q562 286 587 311T644 336Q688 336 710 308T733 250Q733 221 712 194T648 166T584 193T562 251ZM1050 251Q1050 286 1075 311T1132 336Q1176 336 1198 308T1221 250Q1221 221 1200 194T1136 166T1072 193T1050 251",8945:"129 785Q129 821 154 846T211 871Q255 871 277 843T300 785Q300 756 279 729T215 701Q173 701 151 727T129 785ZM576 485Q576 521 601 546T658 571Q702 571 724 543T747 485Q747 456 726 429T662 401Q620 401 598 427T576 485ZM1023 185Q1023 221 1048 246T1105 271Q1149 271 1171 243T1194 185Q1194 156 1173 129T1109 101Q1067 101 1045 127T1023 185",8968:"194 728Q199 743 216 749H220Q223 749 229 749T245 749T265 750T289 750T316 750T345 750H471Q472 749 477 746T484 741T490 732T493 719Q493 701 471 690L362 689H254V-224Q244 -248 223 -248T194 -226V728",8969:"317 -224Q307 -248 286 -248Q267 -248 257 -226L256 231V689H148L40 690Q17 698 17 720Q17 741 37 748Q42 750 169 750H295Q314 737 317 725V-224",8970:"194 728Q204 749 220 749Q245 749 254 725V-188H471Q472 -189 477 -192T484 -197T490 -206T493 -219Q493 -237 471 -248H216Q200 -242 194 -226V728",8971:"17 -219Q17 -201 40 -188H256V270L257 728Q271 749 283 749Q308 749 317 725V-224Q310 -242 295 -248H40L38 -247Q35 -246 34 -245T30 -243T25 -239T21 -234T18 -227T17 -219",8994:"95 108Q85 108 75 114T65 139Q65 159 129 227Q316 405 573 405Q654 405 729 387T854 344T950 286T1015 232T1053 191Q1078 160 1083 152Q1084 148 1084 139Q1084 121 1074 115T1054 108Q1040 108 1029 122T990 167T922 223Q819 291 680 309Q641 315 575 315Q508 315 469 309Q303 288 197 201Q168 179 148 155T118 119T95 108",8995:"1054 392Q1067 392 1076 384T1085 362Q1085 351 1079 342T1050 310Q983 243 901 200Q753 126 575 126Q494 126 420 141T298 176T205 225T140 272T100 310Q64 346 64 362Q64 370 67 374Q75 393 93 393Q107 393 124 375Q272 214 575 214Q877 214 1025 375Q1039 392 1054 392",9001:"127 243V259L223 491Q251 557 286 642Q318 719 324 732T340 748H341Q347 750 351 750Q365 750 373 740T382 723Q382 713 286 482L190 251Q190 249 286 20T382 -219Q382 -232 373 -240T352 -249Q332 -249 323 -229Q320 -220 223 10L127 243",9002:"64 720Q64 732 72 741T94 750Q106 750 113 743Q118 741 122 732L319 259V243L122 -231Q112 -249 95 -249Q83 -249 74 -240T64 -218Q64 -210 160 20L256 251L160 482Q64 715 64 720",9651:"91 1Q69 10 69 31Q69 39 81 59T168 197Q327 447 485 697Q493 711 510 711Q523 711 532 702Q536 697 743 371T951 41Q953 35 953 31Q953 12 931 1H91ZM690 340Q651 401 604 476T534 586L512 621Q511 622 507 616Q498 604 332 342L154 62L333 61H689L867 62L690 340",9653:"91 1Q69 10 69 31Q69 39 81 59T168 197Q327 447 485 697Q493 711 510 711Q523 711 532 702Q536 697 743 371T951 41Q953 35 953 31Q953 12 931 1H91ZM690 340Q651 401 604 476T534 586L512 621Q511 622 507 616Q498 604 332 342L154 62L333 61H689L867 62L690 340",9657:"33 518Q45 540 63 540H65Q72 540 174 481Q247 439 302 407Q529 276 533 272Q542 263 542 250Q542 238 533 229Q528 224 304 95T71 -38Q69 -39 63 -39Q42 -39 33 -16V518ZM449 251L94 456Q93 456 93 251Q93 45 94 45L106 52Q119 59 139 71T186 98T242 131T301 165T357 197T404 225T437 244L449 251",9661:"68 470Q68 481 75 489T91 499H93Q296 500 512 500H931Q932 499 937 496T945 490T950 482T953 469Q953 465 951 459Q950 455 743 129T532 -202Q524 -210 511 -210Q497 -210 489 -202Q486 -199 281 124T71 456Q68 462 68 470ZM154 439Q155 437 332 158T510 -122Q510 -123 533 -87T600 18T688 157Q866 437 866 438Q867 439 805 439T511 439H154",9663:"68 470Q68 481 75 489T91 499H93Q296 500 512 500H931Q932 499 937 496T945 490T950 482T953 469Q953 465 951 459Q950 455 743 129T532 -202Q524 -210 511 -210Q497 -210 489 -202Q486 -199 281 124T71 456Q68 462 68 470ZM154 439Q155 437 332 158T510 -122Q510 -123 533 -87T600 18T688 157Q866 437 866 438Q867 439 805 439T511 439H154",9667:"542 -14Q533 -38 514 -38H512Q503 -38 498 -35Q494 -34 270 95T42 229Q33 238 33 251Q33 259 35 264Q36 265 38 268T42 272Q48 278 271 407T504 539H508Q533 539 542 515V-14ZM481 251Q481 456 480 456Q125 252 124 251Q124 250 301 148T480 45T481 251",9711:"65 42T65 250T204 584T574 711Q795 711 935 594Q955 577 974 555T1022 490T1067 385T1084 250Q1084 42 945 -84T574 -211T204 -85ZM1024 250Q1024 431 903 540T578 650Q482 650 404 627T274 565T189 474T140 366T125 250Q125 123 186 31T347 -106T573 -150Q772 -150 898 -45T1024 250",9824:"675 -18Q536 -18 527 62V70H477V55Q479 14 487 -21T502 -75T509 -101Q509 -120 491 -127Q487 -129 447 -129Q446 -129 439 -129T427 -130Q384 -130 384 -101Q384 -95 391 -76T406 -21T416 55V70H366Q364 52 360 40T342 14T300 -8T230 -17H218Q110 -17 75 117Q64 163 64 209Q64 290 116 357T261 495Q363 574 414 690Q425 719 445 719Q467 719 478 693Q507 627 547 578T623 503T702 438T777 357Q829 285 829 202V197Q826 128 808 81T762 15T714 -11T675 -18",9825:"65 491Q65 602 121 656T246 710Q375 710 440 624L447 615Q519 711 638 711Q723 711 775 652T828 491Q828 390 770 313T581 129Q539 95 514 63T483 14T469 -13T446 -24Q434 -24 427 -17T416 0T400 32T371 74Q352 97 310 131T229 199T151 276T89 374T65 491ZM249 649Q188 649 157 603T125 489Q125 409 181 338T352 176Q408 131 437 87L446 73L456 87Q479 121 507 147T579 207T659 278Q768 387 768 489Q768 506 766 524T756 566T731 611T687 642Q668 649 638 649Q609 649 593 644Q547 633 516 604T478 534Q473 505 447 505H445Q420 505 416 534Q407 577 372 608T285 648Q277 649 249 649",9826:"409 686Q410 688 412 691T415 696T418 701T421 706T424 709T427 713T431 715T435 717T440 718T446 719Q455 719 460 717T472 704T488 679T516 633T563 567Q624 485 687 422T787 330T826 296T828 282Q828 270 825 265T801 245Q696 161 612 59T477 -133Q465 -154 447 -154Q439 -154 434 -152T425 -146T414 -130T399 -104T372 -62T330 -3Q270 78 207 142T107 234T70 265Q64 274 64 282Q64 296 90 317Q284 472 409 686ZM749 282Q745 286 721 307T681 343T635 388T581 446T525 516T465 601Q462 606 457 613T450 624L447 627V628Q446 628 436 611T402 561T348 489T266 396T155 292L145 282Q147 280 185 245T257 177T343 79T442 -57Q446 -64 447 -64V-63Q450 -59 475 -22T530 56T619 160T749 282",9827:"240 527Q240 611 301 665T446 719T590 665T652 527Q652 431 571 373Q578 363 584 352T593 335T597 329L604 335Q611 341 617 345T637 356T667 366Q672 366 680 367T694 368Q767 368 814 310T861 177Q861 109 819 57T713 -12Q690 -17 656 -17Q535 -13 527 62V70H477V55Q479 14 487 -21T502 -75T509 -101Q509 -120 491 -127Q487 -129 447 -129Q446 -129 439 -129T427 -130Q384 -130 384 -101Q384 -95 391 -76T406 -21T416 55V70H366V62Q356 -12 237 -17Q130 -17 71 60Q32 111 32 178Q32 251 78 309T198 368Q217 368 233 364T260 354T279 343T291 333T296 329L300 336Q304 343 310 354T322 373Q240 432 240 527",9837:"230 480Q293 480 337 440T381 330V322Q381 240 323 161Q258 71 123 -11L114 -16L97 -17Q70 -17 66 -7Q64 -3 64 366V641Q64 717 65 731T75 748Q78 750 95 750Q117 750 122 742T127 694Q127 685 127 653T126 595V454Q183 480 230 480ZM242 333Q242 405 212 405H207Q147 405 130 370L127 364L126 219Q126 77 128 77Q133 82 140 90T167 127T202 183T229 253T242 333",9838:"345 -223Q333 -223 330 -214T327 -178V-116Q327 -23 326 -23L203 -82Q90 -134 77 -140Q65 -142 59 -130Q57 -126 57 295V595Q57 643 57 667T58 704T60 719T63 724Q93 741 101 741Q113 741 116 732T119 680V597Q119 467 120 467Q121 468 180 495T301 552T369 584Q381 586 387 574Q389 570 389 187V-88Q389 -132 389 -154T388 -188T386 -202T383 -206Q353 -223 345 -223ZM327 271Q327 421 326 421L120 323L119 173V23Q120 23 223 72L327 121V271",9839:"140 628Q151 628 154 620T158 591V549V484L166 488Q175 492 192 500T223 516L288 548V622V674Q288 681 288 685T289 693T289 699T291 703T295 707T298 709T304 712T311 716Q326 724 332 724Q343 724 346 715T350 685V644V579Q358 583 364 583Q376 583 380 574Q382 570 382 514V481Q382 459 380 454T363 441L350 435V135Q358 139 364 139Q376 139 380 130Q382 126 382 70V37Q382 15 380 10T363 -3L350 -9V-76Q350 -102 348 -106T328 -119Q312 -128 306 -128Q288 -128 288 -99V-77V-40L280 -44Q271 -48 254 -56T223 -72L158 -104V-150V-180Q158 -198 155 -202T135 -216Q119 -224 114 -224Q96 -224 96 -192V-172V-135Q86 -140 81 -140Q70 -140 66 -129Q64 -126 64 -70V-54Q64 -18 66 -12T83 3L96 9V309Q86 304 81 304Q70 304 66 315Q64 318 64 374V407Q64 429 66 434T83 447L96 453V602Q99 609 100 610T118 619Q134 628 140 628ZM288 254Q288 404 287 404L158 340V40L166 44Q175 48 192 56T223 72L288 104V254",10072:"160 -249Q138 -249 129 -225V250Q129 725 131 729Q139 750 159 750T190 725V-225Q181 -249 160 -249",10216:"127 243V259L223 491Q251 557 286 642Q318 719 324 732T340 748H341Q347 750 351 750Q365 750 373 740T382 723Q382 713 286 482L190 251Q190 249 286 20T382 -219Q382 -232 373 -240T352 -249Q332 -249 323 -229Q320 -220 223 10L127 243",10217:"64 720Q64 732 72 741T94 750Q106 750 113 743Q118 741 122 732L319 259V243L122 -231Q112 -249 95 -249Q83 -249 74 -240T64 -218Q64 -210 160 20L256 251L160 482Q64 715 64 720",10229:"1063 221L649 220H235Q340 133 364 17Q368 1 368 -2Q368 -16 343 -17Q340 -17 338 -17H332Q317 -17 314 -14T305 6Q298 34 285 62T247 126T179 189T78 233Q64 237 64 251Q64 261 74 265T108 277T154 297Q212 328 251 379T305 495Q309 511 313 514T333 518H338Q363 517 367 510Q368 507 368 503Q368 500 364 484Q345 401 287 331Q254 295 235 282L649 281H1063L1065 280Q1079 281 1392 281H1719Q1720 280 1723 278T1729 274T1735 269T1739 262T1741 251Q1741 230 1719 221H1063",10230:"119 221Q96 230 96 251T116 279Q121 281 448 281H1188L1602 282Q1569 304 1530 357T1473 482Q1469 500 1469 501Q1469 512 1480 517Q1482 518 1500 518H1505Q1520 518 1523 515T1532 495Q1552 412 1611 351T1753 270Q1773 263 1773 251Q1773 240 1765 236T1732 225T1683 204Q1625 173 1586 122T1532 6Q1528 -10 1524 -13T1504 -17H1499Q1474 -16 1470 -9Q1469 -6 1469 -2Q1469 1 1473 17Q1501 138 1602 220H1188L775 221H119",10231:"1063 221L649 220H235Q340 133 364 17Q368 1 368 -2Q368 -16 343 -17Q340 -17 338 -17H332Q317 -17 314 -14T305 6Q298 34 285 62T247 126T179 189T78 233Q64 237 64 251Q64 261 74 265T108 277T154 297Q212 328 251 379T305 495Q309 511 313 514T333 518H338Q363 517 367 510Q368 507 368 503Q368 500 364 484Q345 401 287 331Q254 295 235 282L649 281H1476L1890 282Q1857 304 1818 357T1761 482Q1757 500 1757 501Q1757 512 1768 517Q1770 518 1788 518H1793Q1808 518 1811 515T1820 495Q1840 412 1899 351T2041 270Q2061 263 2061 251Q2061 240 2053 236T2020 225T1971 204Q1913 173 1874 122T1820 6Q1816 -10 1812 -13T1792 -17H1787Q1762 -16 1758 -9Q1757 -6 1757 -2Q1757 1 1761 17Q1789 138 1890 220H1476L1063 221",10232:"1063 333L700 332H338L324 321Q283 290 230 264L205 250Q266 224 323 180L338 170L700 169H1063L1064 168Q1080 169 1423 169H1782L1786 166Q1791 163 1793 162T1798 157T1802 149T1804 139Q1804 118 1782 109H1063L733 108H404L412 99Q455 50 488 -10Q498 -27 493 -37Q487 -46 465 -46H460Q446 -46 439 -39T426 -18T399 25T344 89Q239 194 99 229Q96 230 92 231T85 232T79 234T73 235T69 237T66 240T65 244T64 250Q64 267 90 271Q197 295 286 361T430 525Q439 542 442 544T460 547H465Q487 547 492 539Q496 531 496 530Q496 521 471 482T414 405L404 394L733 393H1063Q1064 392 1065 392Q1081 393 1423 393H1782Q1783 392 1786 390T1792 386T1798 381T1802 374T1804 363Q1804 345 1782 333H1063",10233:"87 109Q64 118 64 139Q64 159 86 168Q89 169 448 169H1169L1532 170L1546 180Q1562 193 1580 204T1612 223T1638 237T1657 246L1664 250L1639 264Q1586 290 1545 321L1531 332H1169L807 333H87Q64 343 64 362Q64 383 84 391Q89 393 448 393H1136L1465 394L1455 405Q1428 436 1401 477T1374 531Q1374 547 1399 547H1404H1409Q1423 547 1430 540T1443 519T1470 475T1526 411Q1634 303 1779 271Q1780 271 1783 270T1788 269T1792 268T1796 266T1799 264T1802 260T1803 256T1804 250Q1804 242 1800 238T1783 231T1755 225T1712 211T1654 185Q1517 112 1439 -24Q1430 -40 1426 -43T1409 -46H1404Q1373 -46 1373 -31Q1373 -24 1381 -10Q1414 50 1457 99L1465 108H1136L807 109H87",10234:"1063 333L700 332H338L324 321Q283 290 230 264L205 250Q266 224 323 180L338 170L700 169H1425L1788 170L1802 180Q1818 193 1836 204T1868 223T1894 237T1913 246L1920 250L1895 264Q1842 290 1801 321L1787 332H1425L1063 333ZM733 393H1392L1721 394L1711 405Q1684 436 1657 477T1630 531Q1630 547 1655 547H1660H1665Q1679 547 1686 540T1699 519T1726 475T1782 411Q1890 303 2035 271Q2036 271 2039 270T2044 269T2048 268T2052 266T2055 264T2058 260T2059 256T2060 250Q2060 242 2056 238T2039 231T2011 225T1968 211T1910 185Q1773 112 1695 -24Q1686 -40 1682 -43T1665 -46H1660Q1629 -46 1629 -31Q1629 -24 1637 -10Q1670 50 1713 99L1721 108H1392L1063 109L733 108H404L412 99Q455 50 488 -10Q498 -27 493 -37Q487 -46 465 -46H460Q446 -46 439 -39T426 -18T399 25T344 89Q239 194 99 229Q96 230 92 231T85 232T79 234T73 235T69 237T66 240T65 244T64 250Q64 267 90 271Q197 295 286 361T430 525Q439 542 442 544T460 547H465Q487 547 492 539Q496 531 496 530Q496 521 471 482T414 405L404 394L733 393",10236:"65 426Q74 448 95 448Q112 448 125 426V281H130L132 280H134Q162 281 448 281H1188L1602 282Q1569 304 1530 357T1473 482Q1469 500 1469 501Q1469 512 1480 517Q1482 518 1500 518H1505Q1520 518 1523 515T1532 495Q1552 412 1611 351T1753 270Q1773 263 1773 251Q1773 240 1765 236T1732 225T1683 204Q1625 173 1586 122T1532 6Q1528 -10 1524 -13T1504 -17H1499Q1474 -16 1470 -9Q1469 -6 1469 -2Q1469 1 1473 17Q1501 138 1602 220H1188L775 221H135Q133 220 130 220H125V76Q115 54 95 54Q73 54 65 76V426",10744:"189 -210Q179 -210 170 -203T160 -179Q160 -171 162 -166Q164 -163 420 266T679 698Q686 711 704 711Q714 711 723 704T733 681Q733 672 730 667Q723 654 469 228T211 -201Q202 -210 189 -210",10799:"168 500Q168 515 178 522T195 530H198Q207 530 218 521T282 458Q312 428 331 409L447 294L563 409Q674 520 682 525Q687 529 695 529Q711 529 718 520T726 499V498Q726 489 720 481T666 427Q631 392 606 367L490 251L606 135Q717 23 721 17T726 2Q726 -9 719 -18T695 -28H692Q685 -28 674 -18T608 47Q581 74 563 92L447 207L331 91Q217 -22 208 -27Q206 -28 203 -28H197Q168 -28 168 2Q168 13 178 24T288 135L404 250L288 366Q177 479 173 485T168 500",10815:"39 655Q39 675 43 680T69 686Q110 684 225 684Q267 684 303 684T360 685T385 686Q401 686 405 680T409 651Q409 632 403 628T367 624H348H301V62H598V624H551H532Q502 624 496 628T490 651Q490 673 494 679T514 686Q518 686 558 685T675 684T792 685T836 686Q852 686 856 680T860 651Q860 632 854 628T818 624H799H752V62H799H809Q846 62 853 59T860 36V31V21Q860 6 850 2Q846 0 450 0H156Q75 0 60 1T40 11V18Q39 26 39 31Q39 54 44 58T82 63Q84 63 90 63T100 62H147V624H100H90Q53 624 46 627T39 650V655",10927:"796 54Q796 40 788 32T767 24Q741 24 735 57Q729 107 705 148T646 216T563 264T465 297T356 316T245 326T136 330H134Q96 330 96 360Q96 391 134 391H136Q193 392 239 394T347 403T457 421T556 453T643 502T703 571T735 664Q741 696 763 696Q781 696 789 686T797 667Q797 651 792 624T758 545T682 456Q605 396 481 365L462 360Q483 357 526 344T633 296T733 215Q767 173 781 128T796 54ZM119 -199Q96 -190 96 -169T116 -141Q121 -139 448 -139H775Q776 -140 779 -142T785 -146T791 -151T795 -158T797 -169Q797 -190 775 -199H119",10928:"127 24Q115 24 106 32T97 55Q97 95 124 156T211 265Q288 325 412 356L431 361Q410 363 367 376T259 425T160 506Q127 546 112 594T96 667Q96 679 104 688T126 697Q152 697 158 664Q164 614 188 573T247 505T331 456T429 424T539 405T649 395T758 391Q797 391 797 360Q797 330 761 330H758Q701 329 655 327T547 318T437 300T337 268T251 219T190 150T158 57Q151 24 127 24ZM119 -199Q96 -190 96 -169T116 -141Q121 -139 448 -139H775Q776 -140 779 -142T785 -146T791 -151T795 -158T797 -169Q797 -190 775 -199H119",12296:"127 243V259L223 491Q251 557 286 642Q318 719 324 732T340 748H341Q347 750 351 750Q365 750 373 740T382 723Q382 713 286 482L190 251Q190 249 286 20T382 -219Q382 -232 373 -240T352 -249Q332 -249 323 -229Q320 -220 223 10L127 243",12297:"64 720Q64 732 72 741T94 750Q106 750 113 743Q118 741 122 732L319 259V243L122 -231Q112 -249 95 -249Q83 -249 74 -240T64 -218Q64 -210 160 20L256 251L160 482Q64 715 64 720"},{8243:"′′",8244:"′′′",8279:"′′′′",8602:"↚",8603:"↛",8622:"↮",8653:"⇍",8654:"⇎",8655:"⇏",8708:"∄",8716:"∌",8740:"∤",8742:"∦",8769:"≁",8772:"≄",8775:"≇",8777:"≉",8802:"≢",8813:"≭",8814:"≮",8815:"≯",8816:"≰",8817:"≱",8832:"⊀",8833:"⊁",8836:"⊄",8837:"⊅",8840:"⊈",8841:"⊉",8876:"⊬",8877:"⊭",8930:"⋢",8931:"⋣"});var doubleStruck$1={},doubleStruck={};Object.defineProperty(doubleStruck,"__esModule",{value:!0}),doubleStruck.doubleStruck=void 0,doubleStruck.doubleStruck={},function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.doubleStruck=void 0;var t=doubleStruck;Object.defineProperty(e,"doubleStruck",{enumerable:!0,get:function(){return t.doubleStruck}})}(doubleStruck$1);var frakturBold$1={},frakturBold={};Object.defineProperty(frakturBold,"__esModule",{value:!0}),frakturBold.frakturBold=void 0,frakturBold.frakturBold={33:[.689,.012,.349],34:[.695,-.432,.254],38:[.696,.016,.871],39:[.695,-.436,.25],40:[.737,.186,.459],41:[.735,.187,.459],42:[.692,-.449,.328],43:[.598,.082,.893],44:[.107,.191,.328],45:[.275,-.236,.893],46:[.102,.015,.328],47:[.721,.182,.593],48:[.501,.012,.593],49:[.489,0,.593],50:[.491,0,.593],51:[.487,.193,.593],52:[.495,.196,.593],53:[.481,.19,.593],54:[.704,.012,.593],55:[.479,.197,.593],56:[.714,.005,.593],57:[.487,.195,.593],58:[.457,.012,.255],59:[.458,.19,.255],61:[.343,-.168,.582],63:[.697,.014,.428],91:[.74,.13,.257],93:[.738,.132,.257],94:[.734,-.452,.59],8216:[.708,-.411,.254],8217:[.692,-.394,.254],8260:[.721,.182,.593],58113:[.63,.027,.587],58114:[.693,.212,.394,{ic:.014}],58115:[.681,.219,.387],58116:[.473,.212,.593],58117:[.684,.027,.393],58120:[.679,.22,.981],58121:[.717,.137,.727]},Object.defineProperty(frakturBold$1,"__esModule",{value:!0}),frakturBold$1.frakturBold=void 0;var FontData_js_1$j=FontData,fraktur_bold_js_1$1=frakturBold;frakturBold$1.frakturBold=(0,FontData_js_1$j.AddPaths)(fraktur_bold_js_1$1.frakturBold,{33:"121 621Q121 657 132 673T177 689Q223 689 223 644V635Q223 604 222 595Q221 590 210 490T187 292T175 190V186L166 185L156 184Q156 185 139 393T121 621ZM107 47Q107 70 127 87T174 104Q201 104 221 89T241 48Q241 24 222 6T174 -12Q147 -12 127 6T107 47",34:"53 695Q74 695 90 679V622L65 433L52 432H39L27 516Q10 626 10 655Q10 680 26 688Q33 693 39 693Q49 695 53 695ZM151 668Q151 691 191 691Q217 691 224 685T231 661V652Q230 634 219 531L207 433L195 432Q183 432 183 433L168 541Q151 664 151 668",38:"290 -14Q186 -14 115 41T44 185Q44 222 54 249T88 300T131 336T189 371Q216 387 216 388Q185 459 185 510Q185 563 206 601T263 659T334 687T405 696Q476 696 503 668T531 603Q531 565 513 536T450 476Q423 459 370 432L334 413L354 384Q474 212 560 139L563 137Q611 185 611 250Q611 295 577 329Q549 356 496 357Q439 357 433 354Q432 354 432 379V403L437 402Q443 402 479 401T557 400Q653 400 735 403T831 407H836Q833 352 833 351L821 352Q809 352 792 352T756 352T720 353T696 354Q680 354 680 353L681 346Q682 339 683 327T685 306Q685 283 681 260T669 218T653 182T635 152T619 129T606 114L602 109Q604 107 618 99T659 81T707 71Q742 71 767 99T804 155L815 183Q815 184 821 183T833 180T839 177Q837 169 834 156T816 110T782 52T727 5T648 -16Q569 -16 499 35H498Q496 35 466 23T387 -1T290 -14ZM418 592Q418 617 398 639T352 661T302 642T278 574Q278 545 288 514T306 465T319 444Q342 456 353 463T382 488T409 529T418 584V592ZM159 239Q159 158 222 98T364 38Q386 38 447 57L469 63L434 98Q349 185 286 275Q258 316 238 345Q233 353 232 353Q159 316 159 239",39:"80 645T80 662T93 687T123 695Q158 695 158 659Q158 649 157 643L123 437Q123 436 114 436H104Q104 442 92 538Q80 645 80 662",40:"347 719Q325 708 311 698T272 656T233 580T207 455T195 267Q195 30 247 -79Q261 -110 291 -136Q320 -163 347 -172V-179Q347 -186 344 -186Q338 -186 328 -184T287 -165T230 -123Q134 -25 134 271Q134 417 158 514T226 662T335 734L346 737Q347 737 347 728V719",41:"264 262Q264 366 253 446T226 572T186 649T145 692T105 714V725Q105 735 107 735Q108 734 121 731T154 719T196 692T242 641T284 560T314 437T326 268Q326 112 299 7Q279 -78 239 -124T116 -185L105 -187V-179L106 -171L109 -169Q130 -161 138 -158T165 -146T190 -127T210 -101T229 -64T243 -12T255 58T261 148T264 262",42:"40 516L62 529Q85 542 110 556T140 574L126 582Q112 591 104 595T80 607T40 629Q53 642 57 645L65 652L78 642Q106 620 132 603L152 589V595Q152 630 149 681V692H179V689Q178 681 174 638T171 593Q173 593 240 639L258 652Q260 652 267 643L276 633L260 625Q190 587 175 576Q173 575 180 570Q183 569 186 567Q213 549 256 527L277 515L256 495Q246 501 228 515T194 539T170 554V543Q170 486 178 449H148V456Q152 492 152 550L151 562Q150 562 102 528L53 495Q40 514 40 516",43:"422 584L471 598Q472 598 472 440V282H837Q833 273 829 263L821 244L647 243H472V-63L448 -73L423 -82Q422 -82 422 81V243H239Q56 243 56 244Q60 253 65 263L73 282H422V584",44:"118 61Q118 80 135 93T169 107Q190 107 221 65T253 -23Q253 -39 251 -49T237 -80T198 -133Q148 -191 144 -191Q142 -191 137 -182T132 -172Q143 -161 160 -131T183 -83Q185 -77 185 -62Q185 -54 184 -48T182 -38T177 -28T171 -19T162 -8T150 6Q130 28 124 38T118 61",45:"54 236L73 275H453Q833 275 833 274Q830 265 825 255L818 236H54",46:"103 23T103 44T120 83T170 102Q200 102 218 84T237 44Q237 20 216 3T168 -15Q138 -15 121 4",47:"272 270Q503 721 506 721L509 720Q512 720 518 719T529 717L550 713L91 -181L66 -182Q41 -182 41 -181L272 270",48:"238 -12Q162 -12 102 42T42 185Q42 303 130 393Q163 425 208 452T284 490L313 501Q323 499 339 495T395 472T464 426Q533 357 533 273Q533 201 483 133T364 27T238 -12ZM428 208Q428 255 402 297T342 365T280 404T241 419Q214 419 178 374T142 259Q142 206 168 164T225 99Q259 74 310 74Q326 74 337 75T366 82T396 103T417 141Q428 171 428 208",49:"95 481Q102 481 217 485T383 489Q384 489 384 485Q367 397 367 165Q367 58 369 54Q374 46 380 44T410 42H466H546V40Q547 38 547 19L548 0H54V23Q54 29 54 34T54 44L55 47Q79 47 134 46T202 45Q226 45 234 52Q240 57 241 64T245 105Q254 236 254 320V347Q254 369 252 382T240 409T211 431L97 450L96 465Q95 480 95 481",50:"307 335Q307 374 283 397T224 421Q187 421 112 387Q105 384 100 382T95 381Q90 387 86 394L77 407L86 413Q219 491 298 491Q370 491 399 460T428 388Q428 373 424 358T409 326T391 297T363 264T335 235T301 202T269 171L199 104Q194 99 205 97Q209 96 214 96Q527 105 544 105Q553 107 563 102Q563 100 557 79T545 34T537 2H377Q338 2 247 2T130 4H44V26L104 77Q185 145 212 172T267 235Q307 291 307 335",51:"102 402L108 408Q115 413 122 418T141 431T165 447T194 461T227 474T263 483T302 487H307Q413 487 452 420Q465 400 465 371Q465 334 445 303T396 253T347 225T317 213Q314 213 314 211Q316 209 316 205Q317 201 320 201Q337 201 359 198T411 184T465 156T506 109T523 39Q523 -62 436 -127T229 -193Q179 -193 130 -178T56 -150T31 -133Q31 -132 41 -122L52 -112L63 -117Q128 -148 201 -148Q282 -148 331 -104T381 20Q381 71 363 100T304 145Q243 166 149 166H137V204H146Q179 204 211 210T275 229T326 268T346 329Q346 372 314 401Q292 423 245 423Q188 423 125 383L102 402",52:"346 -196Q344 -196 335 -187L336 -148Q337 -127 337 -55V0H13V29L187 253Q362 477 362 479L368 480Q375 481 387 483T411 487T434 491T452 494L459 495Q460 495 470 482V453Q470 389 466 230T461 62Q461 61 513 61T565 60L555 29L546 -1H461V-15Q461 -48 463 -100T465 -154L457 -157Q449 -160 434 -165T405 -175Q347 -196 346 -196ZM339 265V341Q339 362 335 362Q327 362 219 217T110 65V61H337V117Q338 133 338 187T339 265",53:"232 192Q176 192 122 152L95 162V481H306Q516 481 516 479Q514 477 501 433L486 389L319 388H152V386V382Q152 379 152 374T151 365Q147 329 146 260V218H149Q211 242 284 242Q353 242 402 224T474 176T508 117T518 55Q518 -62 432 -126T220 -190Q184 -190 151 -185T96 -172T57 -157T31 -145T20 -139T19 -138Q19 -136 27 -125L35 -112L51 -120Q114 -152 174 -152Q257 -152 314 -100T371 46Q371 107 340 149T232 192",54:"48 251Q48 330 76 403T150 529T253 623T370 683T485 704Q494 704 520 701T547 695Q547 692 542 659T536 625Q531 624 524 624L512 623L502 628Q489 635 468 640Q452 645 423 645Q403 645 379 640T320 617T255 568T201 481T171 348Q170 341 170 330V325L183 333Q275 385 357 385H361Q464 385 514 312Q546 267 546 217Q546 127 457 58T262 -12Q225 -12 189 3T120 49T68 132T48 251ZM448 165Q448 228 406 274T289 320Q264 320 236 312T190 295T173 284Q173 266 176 241T189 178T214 112T259 61T326 39Q372 39 410 75T448 165",55:"57 376L87 479H591V455L584 446Q544 399 491 328T349 117T185 -169L171 -196H159Q152 -197 102 -197Q58 -197 58 -196T56 -185L54 -175L299 158L443 359Q446 367 444 370H254L71 365L57 376",56:"88 533Q88 573 120 610T194 668T268 701T307 714Q324 714 352 711T422 695T486 659Q518 625 518 585Q518 536 479 489T384 406L371 398L385 390Q387 389 400 382T420 370T442 356T466 339T489 319T510 295T526 269T538 238T542 204Q542 125 463 60T256 -5Q145 -5 92 52Q45 97 45 165Q45 204 64 237T109 290T163 324T209 345T228 353L214 364Q199 375 179 392T138 431T103 480T88 533ZM405 557Q405 568 402 581T387 612T350 644T286 663Q283 663 280 663T274 664H272Q256 664 228 636T199 572Q199 547 238 507Q268 475 320 437L334 427Q345 433 358 443T388 483T405 549V557ZM304 42Q366 42 398 76T431 155Q431 178 420 200T396 238T359 270T321 296T283 318L263 328Q262 328 230 312Q190 290 175 266T160 198Q160 132 202 87T304 42",57:"549 220Q549 23 429 -82T105 -195H84V-189Q84 -179 85 -174V-164H93Q184 -156 238 -132T334 -56Q361 -23 376 16T394 78L397 100L363 88Q329 75 291 61T244 45Q237 44 218 44Q154 44 94 97Q29 152 29 240Q29 350 108 404Q145 429 257 480Q270 487 279 487Q403 487 470 421Q549 347 549 220ZM408 217Q408 276 390 320T346 385T297 415T259 424Q218 424 185 393T151 286Q151 216 213 154Q252 115 321 115Q368 115 388 134T408 217",58:"57 398Q57 419 72 438T117 457Q154 457 174 439T194 398Q194 379 176 361T119 343Q85 343 71 362T57 398ZM62 19T62 43T77 85T115 104Q153 104 175 86T197 42Q197 14 171 1T119 -12Q96 -12 79 3",59:"56 399Q56 424 73 440T104 456Q114 458 120 458Q149 458 170 440T192 399Q192 380 174 362T120 344Q85 344 71 362T56 399ZM78 53Q78 67 84 76T90 86Q90 88 98 92T116 98Q117 98 121 98T128 99Q152 97 181 58T211 -24Q211 -77 128 -165Q124 -170 121 -173T116 -178T113 -181T110 -185T106 -190L97 -184L88 -177L95 -168Q143 -104 143 -65Q143 -51 137 -40T113 -7T81 35Q78 41 78 53",61:"559 342L549 304H22L27 319Q29 328 30 333T33 343H296Q559 343 559 342ZM559 206L549 168H22L27 183Q29 192 30 197T33 207H296Q559 207 559 206",63:"121 590Q121 575 128 562T144 542T152 533T115 512L78 491Q55 499 47 516Q40 530 40 553Q40 601 77 632Q155 697 257 697H268Q316 697 355 679Q422 646 422 576Q422 518 388 476Q383 468 376 461T358 444T340 428T316 410T290 390L230 344Q180 307 180 275Q180 261 187 248T202 227L209 219Q209 215 176 193L142 170Q114 177 100 194T84 226V239Q84 259 93 276T113 302T150 331T192 362Q203 370 219 382T247 403T267 422Q312 471 312 546Q312 593 282 623T207 653Q170 653 146 636T121 590ZM95 23T95 49T117 94T173 113Q204 113 223 96T242 54Q242 27 221 7T167 -14Q136 -14 116 4",91:"226 711T225 711T86 699V-93H89Q94 -93 157 -96T223 -100H226V-119H223Q134 -119 42 -130H36V740H42Q61 738 156 736H226V723Q226 711 225 711",93:"69 732Q116 733 146 734T184 736T197 737T206 738H208V-132Q190 -129 160 -127T99 -125T66 -124H14V-103H19Q20 -103 84 -98T152 -92H158V699H151Q148 700 85 703T18 708H14V732H69",94:"1 463T1 464T148 599T296 734Q584 486 584 485L561 472Q538 459 537 461Q296 672 293 672L161 563Q133 539 97 509T44 466L28 452Q27 452 14 457",8216:"187 456Q187 437 169 424T138 411Q114 411 84 454T53 538Q53 565 75 597Q109 648 155 697L166 708L181 694L173 681Q124 610 124 577Q124 549 155 511T187 456",8217:"125 524Q125 545 92 588T58 651Q58 661 61 667Q65 674 80 683T107 692Q131 692 162 645T193 564Q193 540 176 509T144 460T87 394L78 400L68 406L79 421Q125 489 125 524",8260:"272 270Q503 721 506 721L509 720Q512 720 518 719T529 717L550 713L91 -181L66 -182Q41 -182 41 -181L272 270",58113:"388 427Q320 485 242 524T128 563H116Q95 563 87 561L77 559Q72 563 69 566T65 570T65 572L75 576Q106 592 154 611T212 630Q230 630 262 622T358 581T492 498L508 486Q512 463 512 396Q512 246 469 112L465 102Q453 94 341 25Q252 -27 247 -27Q243 -27 174 24T97 84Q90 100 90 214Q90 285 98 345Q100 360 102 363T118 377Q175 422 262 465Q264 463 270 460L277 456Q277 455 267 447T244 428T228 414Q206 382 206 269Q206 187 214 164T259 110Q286 89 342 58Q391 131 391 313Q391 355 388 412V427",58114:"39 362L37 366L38 368L82 405H133V474Q135 563 143 589T198 658Q210 669 224 676T247 687L255 690H253Q241 690 253 692Q254 692 256 692T260 693Q263 693 262 691L261 690Q300 690 361 662L373 656L388 666Q404 675 405 675L406 674Q406 672 406 670T406 664L408 655L301 555Q300 555 287 564T254 584T221 597Q190 597 176 583T161 550Q161 525 184 495T232 440T261 405H387V399Q377 389 364 379L340 359H258V315Q258 52 228 -18L172 -120L121 -211H109Q102 -212 96 -212L109 -174Q131 -108 135 -80T139 53V76V157V362H39",58115:"41 352Q40 354 39 355T37 358L36 360H37Q48 370 61 380L84 400H108Q131 400 131 402Q121 424 104 501L100 519Q109 560 134 602T196 664Q230 681 271 681Q291 681 316 669T358 644L373 631Q373 630 304 553Q299 548 294 547Q292 547 290 546H287Q286 546 274 562T243 593T205 609Q180 609 165 596T150 562Q150 526 191 488L217 462Q248 431 253 405V400H381L384 394L349 352H251V332Q249 271 231 17L227 -37L120 -217L109 -218Q103 -219 97 -219Q97 -218 101 -206T110 -177T118 -151Q126 -129 128 -120T136 -46T141 127Q141 250 136 340V352H41",58116:"107 370Q127 384 172 409T255 454T294 473L306 468Q356 446 425 431L435 429L524 468Q528 465 531 461Q499 395 499 271V263Q499 146 509 71T519 -8Q519 -28 512 -45Q510 -50 435 -123T355 -197Q296 -212 257 -212Q209 -212 164 -196T98 -167T67 -143L133 -44H144Q167 -88 216 -111T320 -134Q371 -134 390 -118T410 -69Q410 -52 404 -12T392 60T385 92L193 -29L158 5Q124 39 110 51L96 63V71Q94 79 94 121Q94 130 94 148T93 174Q93 230 96 275T103 344T107 370ZM221 397Q200 334 200 254Q200 170 210 140Q216 126 234 109T268 81L283 71L383 119V127Q384 132 384 241L385 347L368 349Q325 357 290 369T240 389T221 397",58117:"103 453Q103 631 95 661Q95 663 102 667T110 672L114 664Q117 655 123 641T131 621L140 597L154 606Q208 641 275 673L297 684Q300 683 302 682T307 679T310 678L314 676Q283 658 256 625Q238 601 231 579T223 515L224 512L282 548Q339 583 341 583T365 548T386 509Q326 443 318 443L316 446Q314 448 311 452T304 460T294 470T283 480T272 488T260 494T248 497Q231 497 223 474Q220 468 218 440T215 407V401H345L309 360H218V314Q218 181 221 139V129L253 108Q306 73 310 73Q315 73 343 83L373 92L374 87Q375 82 375 79T375 74T360 65T308 36T229 -13L208 -27L192 -13Q149 24 90 61Q89 61 89 62L90 68Q91 73 93 87T97 125T100 191T103 291V360H33V366L34 371L85 405H94L103 404V453",58120:"602 575Q505 508 505 489Q505 488 505 482T506 463T507 432Q507 314 456 237L449 226L434 216Q420 208 325 143L316 137Q453 82 488 82Q527 82 585 127L596 136Q597 136 599 126L602 115Q578 85 511 27T428 -31Q400 -31 308 10T170 51Q143 51 123 43T92 24T54 -15L34 6L41 14Q65 41 170 129L188 144L204 145Q254 147 293 164T350 208Q378 249 378 344Q378 422 362 478T320 563T268 605T213 618Q177 618 156 600T134 561Q134 539 162 508T217 446T245 394Q245 368 213 337T85 250L62 262Q73 269 86 279T116 308T133 338T108 378T57 439T32 499Q32 556 117 617T291 679Q350 679 393 658Q415 647 433 631T462 600T480 572T490 550T494 541T499 544T516 556T547 578T603 613T689 662L720 679L730 670Q742 659 756 649T785 629T810 615T836 601T855 590Q855 587 860 536T870 419T875 312Q875 114 800 -25Q794 -35 781 -47Q584 -220 398 -220Q322 -220 278 -190Q253 -173 239 -155L244 -150Q248 -145 255 -138T271 -120T290 -100T310 -80T328 -63T341 -51T349 -46Q350 -46 351 -46T354 -47Q357 -47 357 -52Q359 -68 364 -83T383 -118T424 -151T491 -166Q559 -166 613 -129Q629 -118 641 -108T674 -68T710 1T735 107T746 260Q746 433 727 507Q727 512 685 535T615 570L602 575",58121:"351 571Q317 571 247 563T171 555Q153 555 133 563T107 584Q94 605 98 609Q101 615 138 658T190 717H207Q204 710 204 699Q204 673 231 666Q235 665 264 665Q296 665 345 667T426 669Q474 669 501 660T545 626Q553 612 553 594Q553 531 498 474T379 384Q371 379 371 378Q371 376 390 376H411H434Q520 376 602 318Q621 303 627 288T633 234Q633 59 540 -34Q465 -109 348 -130Q308 -137 235 -137Q159 -136 143 -129Q132 -125 132 -118V-53Q118 -24 90 -24Q69 -24 37 -39L27 -44L25 -42Q23 -39 21 -35T17 -30Q17 -28 40 -14T103 19T177 44Q183 45 205 45Q219 45 227 44T245 37T259 20T264 -12Q264 -33 262 -48T259 -80Q259 -93 260 -95Q271 -110 305 -110Q343 -110 383 -86T443 -33Q491 34 491 154Q491 223 467 249Q428 288 334 288H322Q288 288 237 276L222 273L206 286L262 367Q279 369 303 377T358 403T410 452T431 524Q431 531 431 533T427 545T416 558T392 566T351 571"},{});var fraktur$1={},fraktur={};Object.defineProperty(fraktur,"__esModule",{value:!0}),fraktur.fraktur=void 0,fraktur.fraktur={33:[.689,.012,.296],34:[.695,-.432,.215],38:[.698,.011,.738],39:[.695,-.436,.212],40:[.737,.186,.389],41:[.735,.187,.389],42:[.692,-.449,.278],43:[.598,.082,.756],44:[.107,.191,.278],45:[.275,-.236,.756],46:[.102,.015,.278],47:[.721,.182,.502],48:[.492,.013,.502],49:[.468,0,.502],50:[.474,0,.502],51:[.473,.182,.502],52:[.476,.191,.502],53:[.458,.184,.502],54:[.7,.013,.502],55:[.468,.181,.502],56:[.705,.01,.502],57:[.469,.182,.502],58:[.457,.012,.216],59:[.458,.189,.216],61:[.368,-.132,.756],63:[.693,.011,.362],91:[.74,.13,.278],93:[.738,.131,.278],94:[.734,-.452,.5],8216:[.708,-.41,.215],8217:[.692,-.395,.215],8260:[.721,.182,.502],58112:[.683,.032,.497],58113:[.616,.03,.498],58114:[.68,.215,.333],58115:[.679,.224,.329],58116:[.471,.214,.503],58117:[.686,.02,.333],58118:[.577,.021,.334,{ic:.013}],58119:[.475,.022,.501,{ic:.013}]},Object.defineProperty(fraktur$1,"__esModule",{value:!0}),fraktur$1.fraktur=void 0;var FontData_js_1$i=FontData,fraktur_js_1$1=fraktur;fraktur$1.fraktur=(0,FontData_js_1$i.AddPaths)(fraktur_js_1$1.fraktur,{33:"102 582T102 620T112 673T152 689Q190 689 190 638Q190 605 167 373L148 187L133 184Q102 582 102 620ZM91 24T91 48T107 88T148 104Q171 104 187 87T204 48Q204 22 188 5T149 -12Q124 -12 108 6",34:"33 436Q8 603 8 648Q8 663 9 671T19 687T43 695Q63 695 74 681Q76 678 76 650V623L66 532Q57 443 55 436V432H33V436ZM128 666Q128 691 162 691T196 668Q196 634 186 531Q176 441 176 432H166Q155 432 155 434L142 545Q135 603 130 647Q128 664 128 666",38:"181 520Q181 604 231 650T328 697L330 698Q333 698 335 698Q336 698 340 698T346 697Q390 697 418 670T446 604Q446 554 414 511Q384 467 300 417L283 406Q281 405 296 374T347 286T425 182Q466 135 469 135Q470 135 473 140T480 152T486 165Q509 210 509 263Q509 282 507 292Q498 317 488 332T465 352T443 359T418 361Q388 361 357 358L346 356L347 374Q347 394 348 396V399H355Q366 396 535 396Q663 396 689 398L703 399Q703 398 702 375T700 351L688 353Q655 356 601 357Q553 357 553 355Q562 332 562 294Q562 280 561 267T555 241T548 218T539 195T529 175T518 156T508 141T497 126L489 115L496 107Q549 54 596 54Q623 54 644 67T677 101T697 140T708 174L710 187Q710 188 710 188L711 190Q714 190 723 187T733 183Q733 179 732 172T726 145T714 107T694 66T665 27T623 0T569 -11Q500 -11 443 41L434 49L425 42Q348 -9 275 -9Q251 -9 233 -6Q187 -1 152 18T98 60T67 111T52 159T49 195Q49 231 60 261T96 315T141 354T197 390L208 397Q181 459 181 520ZM374 577Q374 607 356 629T311 651Q289 651 271 636Q242 614 242 559Q242 533 249 502T262 453T270 435T279 440T298 453T314 464Q374 503 374 577ZM127 217Q127 145 173 89T291 32Q318 32 347 42T393 63T409 75Q384 100 325 184T227 351Q223 366 220 366Q215 366 178 338Q127 298 127 217",39:"69 666Q69 680 79 687T104 695Q112 695 117 694T128 684T134 659L104 438Q104 436 96 436T88 438Q88 447 79 540T69 655V666",40:"293 737V719Q291 718 285 714T276 708T268 702T258 695T250 686T241 674Q164 570 164 282Q164 -37 230 -119Q273 -171 292 -171Q293 -171 293 -179V-186H289Q270 -180 259 -175Q175 -132 145 -23T114 275Q114 491 157 598T293 737",41:"223 259Q223 386 212 474T178 609T136 677T89 714V735Q121 726 139 713Q276 622 276 273Q276 98 246 -23Q225 -106 189 -139T89 -187V-170L101 -165Q148 -146 172 -110T210 13T223 259",42:"118 573Q118 575 76 602L34 629L50 647L55 652L66 642Q76 633 91 620T117 598L128 590Q128 663 125 687V692H151V689V687Q151 685 151 683T150 678T150 672Q145 628 144 605V592L219 652L232 634Q232 632 220 624Q195 610 155 582L146 575L158 567Q178 552 197 540T225 523T233 516Q233 515 226 506T217 495L152 549L143 555V530Q144 509 145 492T148 466T149 454Q149 449 142 449H125V462Q128 522 128 549V562L115 552Q88 531 59 506L45 495Q44 495 39 505T34 516L118 573",43:"357 584L399 598V282H709L702 263L696 243H399V-64L379 -73L358 -82Q357 -82 357 81V243H47L51 253Q52 256 54 263T58 272L62 282H357V584",44:"99 62Q99 82 114 94T144 107Q159 107 178 77T205 26Q213 5 213 -23Q213 -49 207 -65T181 -113Q128 -189 122 -191Q121 -191 116 -184T111 -174Q111 -173 122 -155T145 -111T156 -62Q156 -44 152 -34T127 4L104 37Q99 49 99 62",45:"46 236L62 274Q62 275 384 275H706L699 255L693 236H46",46:"87 43Q87 69 104 85T142 102Q164 102 182 86T200 44Q200 20 183 3T141 -15Q118 -15 103 2T87 43",47:"230 270Q426 721 428 721Q437 719 447 717L466 713L448 672Q78 -180 77 -181Q77 -182 55 -182L34 -181L230 270",48:"212 -13Q184 -13 156 -2T101 32T59 97T42 195Q42 311 132 396Q170 433 211 462T262 492Q272 492 301 477T366 434T429 360T456 258Q456 161 378 74T212 -13ZM381 209Q381 257 365 295T328 355T282 390T243 408T223 413Q220 413 204 403T167 376T137 341Q119 305 119 250Q119 168 159 114T263 59Q308 59 344 93T381 209",49:"123 459Q145 459 170 460T217 462T256 464T284 466L295 467Q296 467 296 467T297 468Q299 468 302 466T307 462L309 459Q307 454 304 424T299 341T297 235Q297 139 298 101T302 55T313 44Q316 43 367 43L460 46Q460 35 459 22V-1H450Q402 2 281 6Q222 6 171 4T91 1T56 -1L47 -2V43H121H170Q195 43 201 45T209 56Q212 69 212 214Q212 333 209 365T194 409Q183 417 161 423T121 430L104 432Q103 432 103 446V459H123",50:"104 384Q115 394 133 409T199 449T281 474Q321 474 351 447T385 378Q385 328 333 255T228 127T176 72Q176 67 183 65Q184 65 203 65T260 67T331 69L475 73L484 67Q484 64 472 33L460 1H60V17L107 61Q210 159 249 208Q309 283 309 331Q309 363 285 389T228 415Q212 415 184 403T134 379L114 367L104 384",51:"305 328Q305 372 279 396T214 421H211Q172 421 128 384L107 398L116 405Q151 437 191 455T251 473H260Q314 473 341 455T382 394Q384 386 384 367T382 338Q362 263 271 217L256 210L257 206L259 202Q260 202 272 201T296 198T324 192T355 179T384 157T410 123T427 75Q429 64 429 41Q429 -59 353 -120T183 -182L88 -164Q81 -162 69 -157T48 -147T39 -141Q39 -139 46 -127L53 -114L69 -122Q129 -149 171 -149Q218 -149 253 -131T305 -83T330 -26T338 29Q338 41 336 55T328 89T308 127T273 153Q228 171 162 171Q158 171 152 171T142 170H127V204H134Q232 214 275 257Q305 292 305 328",52:"299 -179Q306 -156 306 -48V0H11V7Q10 10 10 18Q10 23 154 236L298 449Q298 450 339 463L379 476Q385 473 384 470V466Q384 463 384 457T384 444T383 427T383 408Q381 328 381 248Q381 46 384 40H387Q422 40 460 44Q465 44 470 44T478 44L481 45Q481 43 478 24T473 1Q473 -1 464 -1Q462 -1 451 -1T430 0H387V-76L389 -156V-161L311 -191Q299 -181 299 -179ZM299 364H287L277 352Q234 297 186 224T112 104T79 43Q79 42 192 42H306V115Q306 300 299 359V364",53:"334 25Q334 99 296 134T207 169Q154 169 107 123L98 114L89 120L80 125V458H420Q420 456 409 418L397 379Q397 378 264 378H131Q130 377 128 376T125 374T124 371T122 368T122 363T121 356T121 345V279V190L130 186L140 190Q196 214 260 214Q311 214 348 197T404 153T431 99T440 42T433 -16T406 -76T356 -130T276 -169T163 -184H156Q110 -184 57 -163L47 -159L53 -147L58 -134Q61 -134 74 -139T110 -148T156 -153Q206 -153 243 -135T299 -87T326 -30T334 25",54:"45 240Q45 328 73 406T143 536T235 626T327 681T399 699Q400 699 404 699T411 700Q424 700 441 696T459 689Q459 671 451 637Q451 633 447 632L444 629L434 633Q413 640 384 640H377Q299 640 222 565Q182 531 156 463T129 315V306H136L149 315Q229 376 316 376H318Q393 376 432 326T471 213Q471 129 402 58T237 -13T93 59T45 240ZM391 172Q391 231 354 272T258 314Q230 314 200 302T154 279T133 262L134 249Q154 32 266 32Q315 32 353 64T391 172",55:"395 377L391 382H225Q59 382 59 383L74 423Q89 464 89 465Q90 468 94 468Q146 460 350 458H498V442L473 406Q241 75 125 -156L113 -181H40L37 -168L57 -140Q115 -58 199 70T339 287T395 377",56:"220 -10Q168 -10 131 6T75 50T48 103T40 157Q40 223 77 266Q103 295 156 328T225 375Q247 393 247 394L206 361Q205 361 193 368T164 391T131 426T102 474T90 531Q90 580 114 615Q146 660 238 698L254 705L262 704Q288 704 332 693T402 656Q434 620 434 568Q434 518 401 475T321 402L305 391L336 368Q339 366 353 356T372 343T389 330T406 316T420 301T434 283T445 265T454 244T458 222T461 195Q461 106 389 48T220 -10ZM350 545Q350 578 337 601T304 634T266 649T234 653L224 654L204 639Q196 634 191 629T182 621T176 614T173 609T170 603T168 597Q165 585 165 567Q165 497 261 424L273 415Q350 467 350 545ZM261 405L263 407Q262 407 261 405ZM258 403Q257 403 255 401L254 399L256 400Q258 402 258 403ZM252 398Q251 398 249 396L248 394L250 395Q252 397 252 398ZM245 36Q276 36 300 45T338 69T360 102T371 136T374 168Q374 211 341 255Q324 275 305 289T235 332Q231 330 215 321T193 307T173 292T153 271T138 247T127 216T123 177Q123 146 132 117T170 62T245 36",57:"353 93T352 93T320 79T251 49T201 34Q127 37 87 79Q28 138 28 234Q28 273 37 304T60 355T101 396T152 429T218 462L234 469H243Q348 461 395 417Q466 348 466 201Q466 72 397 -29T211 -163Q155 -179 91 -182H72V-154H80Q144 -154 202 -131T297 -60Q318 -31 333 7T352 68L357 92Q353 93 352 93ZM369 208Q369 240 362 272T339 339T290 394T214 415Q171 415 144 372T116 266Q116 193 154 144T238 95H249Q369 95 369 208",58:"50 377T50 400T64 440T99 457Q128 457 146 440T165 399Q165 375 146 359T102 342T64 359ZM53 19T53 43T66 86T103 105Q129 105 148 87T168 41Q168 17 147 3T102 -12Q80 -12 67 3",59:"47 399Q47 424 62 441T101 458T143 442T162 400T144 359T101 343Q78 343 63 360T47 399ZM76 86Q76 88 80 91T91 96T106 99Q119 99 131 86Q179 35 179 -25Q179 -64 146 -115T89 -189Q86 -187 83 -185T79 -182T76 -180T75 -177T77 -173T80 -168Q121 -108 121 -64Q121 -44 94 -5T66 52Q66 66 71 75T76 86",61:"725 366Q724 365 721 349T716 331V329H385Q54 329 54 331Q55 332 59 349T63 368H394Q725 368 725 366ZM725 169Q724 168 721 152T716 134V132H385Q54 132 54 134Q55 135 59 152T63 171H394Q725 171 725 169",63:"46 557Q46 613 103 653T227 693Q287 693 322 659T357 564Q357 517 326 469T259 390T191 326T160 272Q160 240 187 221Q193 217 193 216Q182 209 170 200L147 184Q127 192 113 209T98 250Q98 290 193 376Q287 454 287 542Q287 581 262 616T188 652Q143 652 126 631T108 588Q108 559 140 527L79 490Q46 515 46 557ZM108 47Q108 68 123 85T160 103Q179 103 198 90T217 46Q215 24 201 7T164 -11Q142 -11 125 6T108 47",91:"262 -119Q224 -120 191 -123T141 -128T118 -130Q117 -130 117 305V740H122Q141 737 219 736H278V723Q278 711 277 711L159 699V-93H162Q167 -93 220 -96T276 -100Q278 -100 278 -109V-119H262",93:"64 733Q89 733 110 734T143 737T158 738H160V-131H154Q101 -125 40 -124H-4V-103H1Q3 -102 57 -98T113 -92H118V700L64 703Q7 707 3 708H-4V732H21Q34 733 64 733",94:"0 464L250 734L262 722Q274 712 384 598L495 486Q483 478 467 467L456 459L248 672L154 580L23 452Q17 454 10 458T0 464",8216:"117 410Q97 410 71 455T45 539Q45 588 129 694L140 708Q142 708 153 694L147 682Q106 609 106 582V577V571Q106 548 132 511T158 455Q158 434 143 422T117 410",8217:"105 529Q105 546 77 588T49 651Q49 658 51 666Q53 672 67 682T92 692Q111 692 137 644T163 563Q163 534 143 497T99 428T74 395Q72 395 65 400T58 407Q105 476 105 523V529",8260:"230 270Q426 721 428 721Q437 719 447 717L466 713L448 672Q78 -180 77 -181Q77 -182 55 -182L34 -181L230 270",58112:"427 436Q427 434 427 425T429 398T430 362Q430 222 396 109L393 99L305 33Q218 -32 216 -32Q208 -29 142 22L91 68L78 81L77 94Q75 130 75 173Q75 245 87 347L135 385Q178 418 184 424L177 428Q174 429 170 431Q116 454 96 473T75 534Q79 608 154 683Q164 677 164 673Q164 670 157 662T144 637T137 598Q137 552 182 518T280 470T380 447T427 436ZM342 371L275 394L208 417Q203 417 192 399T168 334T156 229Q153 187 153 157Q153 141 156 135Q158 125 208 88T280 51Q306 51 326 120T346 297Q346 339 344 354T342 371",58113:"39 551L35 569L52 577Q72 586 98 595T140 610T158 616Q174 612 200 604T293 560T412 477Q414 475 417 472Q428 462 430 450T432 376Q432 223 401 124Q395 106 393 103T382 92Q351 68 281 20T206 -29Q201 -31 137 26L100 60L78 83L77 112Q76 132 76 170Q76 259 86 342L88 360L101 371Q116 386 163 422T215 459Q216 459 224 455T233 450L229 446Q225 442 218 434T203 419Q179 394 175 389T168 372Q156 334 156 262Q156 167 164 137Q168 125 196 102T252 62L278 45Q279 45 285 52T302 78T322 126T339 205T346 316Q346 367 344 389L343 406L326 423Q228 520 113 559L100 564L70 557L39 551",58114:"123 386L120 431Q116 476 116 511V520Q116 593 174 649Q207 680 236 680Q258 680 284 664T312 648Q318 648 327 656Q328 657 330 659Q337 664 337 661Q337 660 338 657Q338 652 339 648L268 566L260 574Q234 600 206 600Q182 600 164 585T145 541Q145 492 211 386L267 385H324L299 354H214V312Q214 86 193 -58L192 -69L116 -215H108Q92 -215 92 -212Q93 -211 100 -189T116 -135T128 -80Q134 -41 134 22Q134 54 130 185T125 349V354H29L59 385H91Q123 385 123 386",58115:"91 530Q91 564 116 600T164 656T194 678Q195 678 200 678T209 679Q268 679 316 639L293 593Q267 547 263 546H262Q260 546 256 553Q222 613 180 613Q160 613 146 599T132 564T170 474T210 388H318L296 356H206V322Q204 284 204 255Q202 221 202 161V99Q202 28 194 -22T160 -124Q148 -146 116 -199L101 -224L91 -220Q85 -218 84 -217T83 -215L101 -161Q116 -114 119 -73T122 108Q119 334 117 352V356H72L28 357L66 388H92Q118 388 118 389L109 433Q91 514 91 530",58116:"254 -150Q293 -150 328 -126T363 -54Q363 -38 352 29T339 98L250 34Q160 -30 159 -30L77 64V71Q74 95 74 174Q74 212 75 243T79 294T83 328T87 352T90 366L117 384Q206 446 238 464L250 471Q277 455 306 443T350 427L365 423Q367 423 405 443T443 465L449 455Q431 414 426 362T418 201Q418 135 420 121Q438 -4 438 -19Q438 -26 438 -31T434 -42T429 -51T420 -63T408 -77T391 -95T370 -119T346 -147T325 -170T309 -187T291 -200T274 -207T252 -213T225 -214Q175 -214 132 -196T70 -160L52 -143Q52 -138 90 -48Q90 -47 95 -47H101Q108 -81 146 -115T254 -150ZM341 136Q341 157 344 242T347 348V355L334 356Q299 359 262 367T203 383T179 391Q177 391 173 377T163 323T158 227Q158 164 161 128V121L174 106Q203 75 223 59L341 127V136",58117:"92 446Q92 603 82 664Q94 670 95 670L96 666Q98 661 101 651T108 633Q121 598 121 597L141 612Q247 686 250 686Q251 686 266 679Q261 674 243 659T213 632T190 597T173 546Q172 541 171 530T170 511T170 502Q171 502 222 542L273 582Q308 522 315 504L279 449L269 462Q231 506 215 506Q202 506 190 490Q164 458 164 395V390H279L266 373L254 355H167V306Q169 252 169 217Q170 195 170 147V117L200 92Q234 64 237 64Q243 64 277 81L311 99V75Q310 75 242 27L174 -20L156 -3Q88 60 81 60L79 62Q80 60 82 62Q87 67 87 290V355H57L26 356L73 390H92V446",58118:"117 531Q117 533 137 544T178 566L198 577Q200 577 204 575T208 572V570Q208 568 208 566T207 560Q197 496 197 397V392H321L295 353H199V260Q199 157 200 145V122L269 68Q271 67 274 67Q282 67 310 83T342 100Q343 100 345 92T346 83L211 -21L172 12Q117 59 117 63Q117 65 117 87T119 150T120 238V353H75L29 354L65 391H118V460Q117 498 117 531",58119:"337 91V78L324 71Q288 53 256 29T206 -8T180 -22Q174 -22 158 -9Q82 46 60 46H59L63 51Q67 56 73 68T85 96Q101 158 101 254Q101 300 95 330T83 370T66 394L53 388Q48 385 41 382T24 374Q22 376 20 378T16 381T13 383T10 385V386L119 475Q150 439 160 430L171 422V409Q173 377 173 300Q173 228 166 183T152 122T145 102Q207 81 242 58L337 104V111Q340 146 340 227Q340 320 339 351T338 408V423L422 469Q425 465 429 462L426 438Q413 354 413 251Q413 152 423 119Q426 110 435 96T452 82Q454 82 509 103Q514 98 514 89Q514 87 507 81T472 51T409 -7L395 -20Q393 -18 390 -17Q386 -14 382 -6Q380 -2 379 1Q369 24 361 40T348 62T341 73T338 84L337 91"},{});var italic$1={},italic={};Object.defineProperty(italic,"__esModule",{value:!0}),italic.italic=void 0,italic.italic={33:[.716,0,.307,{ic:.073}],34:[.694,-.379,.514,{ic:.024}],35:[.694,.194,.818,{ic:.01}],37:[.75,.056,.818,{ic:.029}],38:[.716,.022,.767,{ic:.035}],39:[.694,-.379,.307,{ic:.07}],40:[.75,.25,.409,{ic:.108}],41:[.75,.25,.409],42:[.75,-.32,.511,{ic:.073}],43:[.557,.057,.767],44:[.121,.194,.307],45:[.251,-.18,.358],46:[.121,0,.307],47:[.716,.215,.778],48:[.665,.021,.511,{ic:.051}],49:[.666,0,.511],50:[.666,.022,.511,{ic:.04}],51:[.666,.022,.511,{ic:.051}],52:[.666,.194,.511],53:[.666,.022,.511,{ic:.056}],54:[.665,.022,.511,{ic:.054}],55:[.666,.022,.511,{ic:.123}],56:[.666,.021,.511,{ic:.042}],57:[.666,.022,.511,{ic:.042}],58:[.431,0,.307],59:[.431,.194,.307],61:[.367,-.133,.767],63:[.716,0,.511,{ic:.04}],64:[.705,.011,.767,{ic:.022}],91:[.75,.25,.307,{ic:.139}],93:[.75,.25,.307,{ic:.052}],94:[.694,-.527,.511,{ic:.017}],95:[-.025,.062,.511,{ic:.043}],126:[.318,-.208,.511,{ic:.06}],305:[.441,.01,.307,{ic:.033}],567:[.442,.204,.332],768:[.697,-.5,0],769:[.697,-.5,0,{ic:.039}],770:[.694,-.527,0,{ic:.017}],771:[.668,-.558,0,{ic:.06}],772:[.589,-.544,0,{ic:.054}],774:[.694,-.515,0,{ic:.062}],775:[.669,-.548,0],776:[.669,-.554,0,{ic:.045}],778:[.716,-.542,0],779:[.697,-.503,0,{ic:.065}],780:[.638,-.502,0,{ic:.029}],989:[.605,.085,.778],8211:[.285,-.248,.511,{ic:.043}],8212:[.285,-.248,1.022,{ic:.016}],8213:[.285,-.248,1.022,{ic:.016}],8215:[-.025,.062,.511,{ic:.043}],8216:[.694,-.379,.307,{ic:.055}],8217:[.694,-.379,.307,{ic:.07}],8220:[.694,-.379,.514,{ic:.092}],8221:[.694,-.379,.514,{ic:.024}],8260:[.716,.215,.778],8463:[.695,.013,.54,{ic:.022}],8710:[.716,0,.833,{sk:.167}],10744:[.716,.215,.778]},Object.defineProperty(italic$1,"__esModule",{value:!0}),italic$1.italic=void 0;var FontData_js_1$h=FontData,italic_js_1$1=italic;italic$1.italic=(0,FontData_js_1$h.AddPaths)(italic_js_1$1.italic,{33:"330 716Q351 716 365 703T380 670V659L304 433Q230 207 227 204Q225 198 205 198Q184 198 184 207T220 439T260 669Q270 694 297 708Q300 709 304 710T311 713T316 714Q324 716 330 716ZM107 51Q110 83 133 102T179 121Q207 121 219 105T231 72Q231 45 209 23T156 0Q138 0 123 11T107 51",34:"214 620Q214 647 236 670T289 694Q312 694 326 677T341 633V624Q341 588 327 550T294 482T253 428T216 392T196 379Q191 379 184 388T176 401Q176 404 195 421T243 472T287 547Q299 576 299 582L295 580Q291 578 282 576T264 573Q241 573 228 585T214 620ZM411 620Q411 647 433 670T486 694Q509 694 523 677T538 633V624Q538 588 524 550T491 482T450 428T413 392T393 379Q388 379 381 388T373 401Q373 404 392 421T440 472T484 547Q496 576 496 582L492 580Q488 578 479 576T461 573Q438 573 425 585T411 620",35:"281 327H228Q186 327 175 330T164 347Q164 359 176 365Q179 367 292 367H404L563 688Q569 694 578 694T593 686T597 670Q597 667 531 535L448 367H614L773 688Q779 694 787 694Q796 694 802 688T808 674V672L807 670Q807 667 732 517L658 368L736 367H814Q828 357 828 347Q828 336 812 327H637L599 250Q561 174 561 173H662H724Q760 173 769 170T779 153T770 136T729 132Q721 132 696 132T651 133H540L380 -188Q374 -194 366 -194Q357 -194 351 -188T345 -174L346 -172V-170Q346 -167 412 -35L495 133H330L170 -188Q164 -194 156 -194Q147 -194 141 -188T135 -174L136 -172V-170Q136 -167 211 -17L285 133H207L130 134Q115 140 115 153Q115 164 131 173H306L344 250Q382 326 382 327H281ZM592 327H427L389 250Q351 174 351 173H516L554 250Q592 326 592 327",37:"301 348Q257 348 231 383T205 480Q205 553 244 629T346 736Q370 750 394 750Q416 750 429 742T458 714Q512 644 606 644Q722 644 802 732Q817 750 827 750Q835 750 841 744T847 730Q847 725 827 700T689 540Q586 421 512 335Q180 -50 176 -52Q172 -56 165 -56Q157 -56 151 -50T145 -35Q145 -29 162 -9T330 186Q392 258 430 302Q711 627 711 628L701 624Q652 607 604 607Q551 607 494 634L479 642V624Q479 544 439 467Q414 416 377 382T301 348ZM270 443Q270 385 303 385H306H308Q326 385 348 407Q384 441 409 504T434 627Q434 713 390 713Q358 713 328 663Q307 631 289 556T270 451V443ZM608 -56Q573 -56 543 -23T513 76Q513 129 536 190T604 296L627 318Q670 347 704 347Q747 347 767 310T788 222Q788 126 732 35T608 -56ZM742 222Q742 310 699 310Q677 310 655 285T620 227Q608 197 593 138T578 42V36Q578 -18 613 -18Q657 -18 699 64T742 222",38:"209 444Q209 546 278 631T424 716Q473 716 501 683T530 601Q530 554 511 535T467 515Q446 515 437 527T427 553Q427 578 446 594T481 610H483V617Q480 641 464 660T419 679Q367 679 328 603Q316 578 305 538T288 470L282 443L295 449Q308 455 330 462T371 469Q397 469 413 450T430 404Q430 363 400 329T331 295Q291 295 256 322Q255 322 246 293T227 223T217 158Q217 117 232 88T273 43T327 22T387 15Q457 15 512 37T599 93T652 169T680 248T688 317T678 380T659 423T647 437Q643 435 637 431T613 416T581 392T554 364T538 332Q540 310 541 310Q554 335 587 335Q601 335 613 327T626 300Q626 290 622 279T603 255T563 242Q532 245 512 263T491 320Q494 351 511 377T547 418T600 456T652 494Q676 512 697 539T728 582T738 601Q738 602 736 602Q732 602 726 604T714 616T707 638Q707 661 724 677T764 694Q799 694 802 660Q802 625 767 562T688 467L694 458Q700 449 702 444T711 428T720 408T727 385T733 358T735 327Q735 281 724 235T685 141T617 59T515 1T375 -22Q270 -22 199 34T127 181Q127 216 147 270T207 374L216 386Q209 421 209 444ZM386 412Q386 432 366 432Q345 432 325 418T294 390T284 375Q284 371 289 362T306 343T335 332Q355 332 367 350T383 384T386 412",39:"250 620Q250 647 272 670T325 694Q348 694 362 677T377 633V624Q377 566 343 506T275 412T231 379Q226 379 220 388T213 401T232 421T279 472T323 547Q335 573 335 582L331 580Q327 578 318 576T300 573Q277 573 264 585T250 620",40:"241 -250Q203 -212 174 -140T144 39Q144 158 180 288T296 544T481 746L487 750H499Q517 750 517 740Q517 736 495 716Q399 630 331 491T236 228T208 3Q208 -73 224 -130T255 -214T271 -244Q271 -250 252 -250H241",41:"326 497Q326 546 320 588T304 655T285 699T269 728T262 740Q262 746 267 749L272 750Q276 750 281 750H293Q331 712 360 640T390 461Q390 332 339 171T188 -116Q161 -150 121 -188T47 -250H35Q17 -250 17 -240Q17 -236 39 -216Q135 -130 203 9T298 272T326 497",42:"560 658Q569 658 576 649T584 631Q584 625 583 620T577 611T569 603T556 595T540 587T519 578T494 566L428 536Q427 535 433 531T479 502Q525 475 532 469T539 450Q538 435 525 424T497 412Q489 412 482 418T442 456Q400 497 400 494L387 420Q376 353 373 343T352 323Q345 320 336 320H331Q322 320 316 327T309 343Q309 347 334 420L359 496Q358 496 297 456T234 414Q228 411 221 411Q212 411 204 417T195 439Q198 458 209 465T283 502L353 534L300 566Q255 593 247 599T239 616Q239 631 252 644T282 658Q290 658 295 654T335 615L378 573L391 647Q393 657 395 671T398 691T400 706T404 720T408 730T414 739T423 744T434 749Q435 749 439 749T445 750Q467 748 469 728Q469 723 457 685T432 610L420 573L481 613Q548 658 560 658",43:"139 237T139 250T151 266T198 270H293H431L465 407Q469 424 476 452Q494 528 500 542T519 557Q526 557 532 552T538 538Q538 536 507 409T472 272Q472 270 604 270Q737 270 741 268Q753 261 753 250Q753 237 742 233T696 229Q687 229 655 229T599 230H462L461 226Q461 224 427 91T392 -47Q387 -57 374 -57Q367 -57 361 -51T355 -37Q355 -31 388 99L421 230H288Q267 230 238 230T199 229Q163 229 151 233",44:"106 46Q106 68 121 90T167 120Q168 120 173 120T180 121Q232 121 232 59V54Q232 18 219 -20T186 -88T145 -143T109 -181T88 -194Q84 -194 77 -185T69 -171Q69 -168 70 -166T76 -161T85 -154T101 -139T124 -114Q146 -88 162 -58T183 -12T188 7Q187 7 183 5T172 2T156 0Q129 0 118 14T106 46",45:"205 180H131Q102 180 93 181T84 190Q90 238 103 251H334Q341 244 341 241Q341 236 336 214T327 186Q325 181 312 181T205 180",46:"107 50Q107 76 129 98T181 121Q203 121 217 108T231 72Q231 47 210 24T156 0Q135 0 121 13T107 50",47:"166 -215T159 -215T147 -212T141 -204T139 -197Q139 -190 144 -183Q157 -157 378 274T602 707Q605 716 618 716Q625 716 630 712T636 703T638 696Q638 691 406 241T170 -212Q166 -215 159 -215",48:"414 665Q562 665 562 490Q562 426 534 318Q451 -21 251 -21Q222 -21 202 -15Q155 2 134 40T110 144Q110 201 127 286T187 470T287 614Q348 665 414 665ZM187 98Q187 59 208 37T260 15Q320 15 365 83Q394 128 440 312T487 547Q487 580 471 600T433 627Q428 628 408 628Q381 628 353 609T311 569Q279 526 239 364T190 143Q187 120 187 98",49:"248 491Q228 491 228 502Q228 516 236 532Q237 536 246 537T275 541T314 552Q350 567 382 595T430 644L446 664Q450 666 454 666Q468 666 468 658Q468 647 395 359Q321 63 321 59Q321 52 334 50T388 46H422Q428 37 428 35Q428 19 421 5Q416 0 405 0Q400 0 361 1T263 2Q215 2 185 2T142 1T127 0Q110 0 110 11Q110 13 113 25T118 40Q120 46 146 46Q196 46 212 49T235 61Q238 66 295 295L353 526L340 519Q328 512 302 503T248 491",50:"159 404Q159 433 176 476T222 562T297 635T395 666Q466 666 508 617T551 497Q551 473 545 446Q534 388 482 333Q441 292 355 240T264 184Q216 151 179 101L171 91Q171 90 177 90Q206 90 269 77T366 64Q385 64 390 65Q418 73 441 98T475 156Q479 168 481 170T495 173H518Q524 167 524 166T521 152Q502 86 459 32T353 -22Q315 -22 259 15T172 53Q156 53 143 36T126 1L121 -16Q119 -22 98 -22H82Q76 -16 76 -13T80 5T98 50T132 111T189 178T274 242Q327 273 364 305T420 370T447 427T460 483Q466 514 466 538Q466 586 443 607T389 629Q338 629 293 584T226 487T204 399Q204 390 204 386T209 378T222 373Q258 376 282 422T307 493Q307 506 302 517T297 531Q297 537 308 546T327 551Q329 550 333 543T340 523T344 497Q344 450 306 393T216 336Q186 336 173 355T159 396V404",51:"296 531Q296 536 307 544T322 553Q330 553 338 534T346 501Q346 468 319 440T258 412Q232 412 216 430T200 478Q200 552 281 618Q345 666 416 666Q489 666 525 625T562 530Q562 473 525 419T430 335L416 329Q479 288 479 206Q479 142 440 89T344 7T229 -22Q173 -22 135 12T96 106Q96 192 157 192Q192 192 197 157Q197 134 184 117T142 96Q153 47 180 29Q201 15 232 15Q249 15 275 22Q307 34 331 57Q363 90 379 153T396 246Q396 261 393 272T384 290T371 301T355 308T341 311T326 312H316H307Q287 312 282 313T276 320Q276 323 279 337T283 352Q284 356 290 357T325 358Q364 359 368 360Q386 365 400 372T433 397T464 448T485 527Q487 535 487 556Q487 629 414 629Q350 629 298 580T245 476Q245 450 263 450H264Q280 450 294 463T308 496Q308 508 302 518T296 531",52:"448 34Q453 34 463 22T473 5Q473 -2 457 -7Q417 -22 383 -23H366L350 -91Q348 -98 345 -111T340 -130T335 -146T330 -161T325 -172T318 -182T310 -188T299 -193T286 -194Q256 -194 253 -165Q253 -159 271 -83T292 -5Q231 29 169 29Q114 29 91 14Q72 -2 65 1Q46 20 46 28Q46 35 55 43T77 60T96 74Q306 257 396 623Q410 666 444 666Q459 666 468 657T478 634Q478 627 470 595T440 504T387 381T303 239T187 99L164 75H178Q217 75 260 59L304 43Q304 48 325 127Q342 195 346 207T358 228Q372 242 391 242Q403 242 413 235T423 214Q423 205 402 116T378 25Q378 23 387 23Q405 23 418 25T439 31T448 34",53:"196 304Q189 309 189 314Q189 317 231 487T275 660Q278 666 283 666Q287 666 302 658T346 643T413 635Q447 635 481 642T537 658T559 666Q561 666 564 663T567 658Q565 637 557 629Q528 600 474 573T359 545Q342 545 327 546T304 550T294 552L291 540Q288 529 283 507T273 465L251 379Q307 420 364 420Q415 420 456 382T497 261Q497 165 429 82T262 -20Q256 -20 247 -21T233 -22Q176 -22 141 15T106 112Q106 208 173 208Q192 208 203 197T214 169Q214 143 195 125T156 107H153V100Q155 73 174 47T239 21Q245 21 259 23Q355 46 392 200Q393 205 394 207Q412 276 412 312Q412 352 396 367T358 383Q288 383 233 314Q226 306 224 305T209 304H196",54:"377 434Q425 434 457 404T499 341T509 278Q509 243 496 194T456 105T383 27Q322 -22 256 -22Q142 -22 122 114Q120 130 120 159Q120 221 135 292T195 452T310 599Q390 665 465 665Q565 665 565 583V574Q565 543 546 524Q528 506 504 506Q491 506 478 514T465 543Q465 585 515 602Q505 626 466 626Q419 626 372 587Q334 557 305 503T266 409L255 370Q287 410 339 429Q361 434 377 434ZM424 333Q424 359 411 378T365 397Q318 397 282 356T230 257T205 157T197 94Q197 67 211 45T260 22Q313 22 341 57T386 151Q424 283 424 333",55:"466 519Q448 519 435 528T416 550T400 571T376 581Q324 581 271 540T186 437Q185 435 183 432T181 428T179 426T177 424T174 423T171 422T165 422H159Q141 422 141 423Q136 423 136 431Q136 433 190 548T247 665Q249 666 266 666H282Q288 660 288 657Q288 655 284 646T276 628L273 620Q337 666 390 666Q413 666 425 652T438 620T444 584T457 559Q460 557 470 557Q497 557 524 582T571 635T594 665Q595 666 612 666H628Q634 660 634 657Q634 653 618 629T572 556T510 441T437 269T367 43Q356 -22 304 -22Q291 -22 278 -14T263 14Q263 36 281 95T354 269T486 507Q497 524 495 524Q482 519 466 519",56:"209 449Q209 545 278 605T416 666Q482 666 517 631T553 546Q553 513 539 482T504 430T463 394T426 370L410 360L430 343Q471 309 483 278T495 211Q495 141 441 75Q363 -21 253 -21Q182 -21 141 18T99 117Q99 161 119 201T170 268T222 308T259 331L272 338L259 349Q212 389 209 449ZM492 542Q492 586 469 605T415 625Q360 625 320 587T279 505Q279 495 281 487T286 474T295 460T306 449T321 436T337 422Q379 386 380 386Q389 386 420 412T472 471Q492 513 492 542ZM163 118Q163 76 189 49T258 21Q316 21 368 64T420 170Q420 193 412 208T395 233T350 271L302 312Q298 312 284 303T249 276T209 235T177 181T163 118",57:"297 211Q258 211 230 228T189 273T169 323T163 367Q163 411 183 472T254 585Q327 656 401 665Q403 665 412 665T427 666Q458 664 481 652T518 622T539 580T550 535T553 491Q553 448 544 395T515 277T454 148T358 37Q282 -22 213 -22Q166 -22 137 -1T107 55V64Q107 88 114 104T134 127T154 136T169 138Q185 138 196 128T207 101Q207 82 196 68T172 48L161 43Q161 40 167 36T187 26T219 21Q286 21 344 99Q364 126 382 169T408 241T417 275L412 269Q406 263 395 253T370 234T337 218T297 211ZM476 552Q476 626 417 626Q368 626 330 584Q312 563 300 533T270 433Q248 341 248 312Q248 286 262 267T310 248Q353 248 387 287T440 380T467 480T476 552",58:"184 358Q184 385 206 408T258 431Q279 431 293 418T308 383Q308 354 284 332T233 310Q212 310 198 324T184 358ZM107 50Q107 76 129 98T181 121Q203 121 217 108T231 72Q231 47 210 24T156 0Q135 0 121 13T107 50",59:"184 358Q184 385 206 408T258 431Q279 431 293 418T308 383Q308 354 284 332T233 310Q212 310 198 324T184 358ZM107 47Q107 77 130 99T180 121Q226 121 226 61Q226 25 214 -14T182 -84T144 -140T109 -180T88 -194T77 -185T70 -172Q70 -169 84 -155T121 -112T161 -48Q180 -10 180 3Q180 4 174 2Q172 2 166 1T156 0Q135 0 121 13T107 47",61:"776 357T776 347T761 327H470Q180 327 176 329Q164 334 164 347Q164 359 176 365Q179 367 470 367H761Q776 357 776 347ZM116 143T116 153T131 173H422Q713 173 717 171Q728 166 728 153T717 135Q713 133 422 133H131Q116 143 116 153",63:"235 431Q217 431 206 442T195 468Q195 490 215 537T280 638T380 707Q403 716 423 716Q425 716 429 716T436 715Q485 715 518 681T551 590Q551 543 530 503T482 439Q471 428 400 375T318 310Q300 287 300 259Q300 236 315 236Q333 236 352 251T384 300Q386 306 407 306H423Q429 300 429 297Q429 272 393 235T308 198Q287 198 269 215T251 270Q251 330 293 374L374 436Q377 438 401 456T432 480T457 503T481 531T494 561T501 598Q501 614 499 626Q482 678 430 678H426Q392 678 362 660T311 615T280 571T264 540L259 528Q259 527 266 526T283 516T294 492Q294 466 276 449T235 431ZM209 51Q212 83 235 102T281 121Q309 121 321 105T333 72Q333 45 311 23T258 0Q240 0 225 11T209 51",64:"198 250Q198 155 248 91T394 26Q514 26 640 80L650 84H675H683Q709 84 709 76Q709 73 708 71Q706 64 660 45T534 8T383 -11T260 24T181 115Q152 168 152 248Q152 410 268 552Q303 590 324 608Q439 705 551 705Q611 705 658 683T733 623T775 543T789 454Q789 380 766 304T720 192Q677 125 617 125Q591 125 573 137T548 160T541 176Q541 178 540 178L534 173Q527 168 515 160T488 144T454 131T417 125Q361 125 320 166T279 284Q279 393 356 481T523 569Q570 569 603 537Q623 515 632 490L637 480L657 479Q684 479 684 470Q684 465 650 333L617 199V185Q616 162 628 162Q677 162 712 278Q743 381 743 442Q743 555 687 611T553 668Q467 668 385 608T250 450T198 250ZM598 445Q598 453 594 470T569 510T518 532Q463 532 410 448T356 271Q356 220 374 191T423 162Q482 162 552 255L575 348Q598 440 598 445",91:"205 -221Q205 -239 194 -250H137H106Q73 -250 73 -242Q73 -232 194 255T321 747L324 750H381H417Q435 750 440 748T446 739Q446 730 443 723T437 712L434 710H350L349 706Q349 704 235 249T120 -208Q120 -210 159 -210Q166 -210 175 -210T187 -209Q205 -209 205 -221",93:"227 721Q227 739 238 750H295H326Q359 750 359 742Q359 732 238 245T111 -247L108 -250H51H15Q-3 -250 -8 -248T-14 -239Q-14 -230 -11 -223T-5 -212L-2 -210H82L83 -206Q83 -204 197 251T312 708Q312 710 273 710Q266 710 257 710T245 709Q227 709 227 721",94:"528 555Q528 549 514 538T496 527Q491 527 470 554Q458 569 449 580L414 625L353 578Q339 567 323 555T298 536L290 529Q286 527 285 527Q279 527 273 533T264 546L260 553Q260 559 263 562Q265 564 342 628T421 693T425 694Q430 694 433 691Q528 563 528 555",95:"98 -62Q91 -58 91 -51Q91 -31 100 -26Q102 -25 324 -25H442H500Q536 -25 545 -27T554 -36Q554 -50 548 -56Q546 -60 538 -61Q520 -62 319 -62H98",126:"266 208Q262 208 255 215T247 228Q247 233 250 236T274 259Q335 318 369 318Q394 318 420 292T464 265Q485 265 516 291T550 318Q554 318 562 311T571 297Q570 293 551 273T502 231T451 209H447Q421 209 396 235T355 261Q334 261 301 235T266 208",305:"75 287Q75 292 82 313T103 362T142 413T196 441H214Q248 441 270 419T293 357Q292 338 289 330T245 208Q193 72 193 46Q193 26 209 26Q228 26 247 43Q273 71 292 136Q295 148 297 150T311 153H317Q327 153 330 153T337 150T340 143Q340 133 330 105T292 41T228 -8Q220 -10 204 -10Q160 -10 141 15T122 71Q122 98 171 227T221 384Q221 396 218 400T203 405Q175 403 156 374T128 312T116 279Q115 278 97 278H81Q75 284 75 287",567:"75 284T75 287T81 305T101 343T133 389T180 426T240 442Q273 440 300 420T327 350V332L278 134Q267 92 253 37T233 -45T225 -73Q208 -123 162 -163T54 -204Q8 -204 -15 -181Q-32 -164 -32 -140Q-32 -112 -14 -96T27 -79Q48 -79 57 -91T67 -114Q67 -146 39 -166L44 -167H59H60Q112 -167 145 -74Q148 -65 198 134T251 347Q252 353 252 370Q252 382 251 388T245 399T230 405Q204 405 175 378Q157 360 145 337T126 298T117 280T98 278H81Q75 284 75 287",768:"-222 651Q-222 668 -206 682T-174 697Q-155 697 -145 680Q-140 671 -107 599T-74 526Q-74 522 -88 511T-107 500Q-109 500 -113 502T-167 568T-219 637Q-222 643 -222 651",769:"-148 500Q-154 500 -163 511T-173 528Q-173 529 -172 530V532Q-170 534 -97 610T-21 688Q-8 697 4 697Q19 697 29 688T39 663T30 638Q26 631 -50 573L-135 507Q-144 500 -148 500",770:"17 555Q17 549 3 538T-15 527Q-20 527 -41 554Q-53 569 -62 580L-97 625L-158 578Q-172 567 -188 555T-212 536L-221 529Q-225 527 -226 527Q-232 527 -238 533T-248 546L-251 553Q-251 559 -248 562Q-246 564 -169 628T-90 693T-86 694Q-81 694 -78 691Q17 563 17 555",771:"-245 558Q-249 558 -256 565T-264 578Q-264 583 -261 586T-237 609Q-176 668 -142 668Q-117 668 -91 642T-47 615Q-26 615 5 641T39 668Q43 668 51 661T60 647Q59 643 40 623T-9 581T-60 559H-64Q-90 559 -115 585T-156 611Q-177 611 -210 585T-245 558",772:"-275 544Q-282 548 -282 554Q-282 561 -279 573T-271 588Q-269 589 -111 589H-27H12Q38 589 46 587T54 578Q54 574 51 563T47 550Q45 546 32 545Q15 544 -118 544H-275",774:"-237 641Q-237 694 -218 694H-213Q-195 694 -195 684Q-195 683 -195 679T-197 667T-198 650Q-198 611 -176 589T-117 566Q-74 566 -34 597T23 678Q27 689 30 691T43 694Q62 694 62 684Q62 671 49 645T14 589T-46 537T-123 515Q-175 515 -206 550T-237 641",775:"-165 599Q-162 631 -139 650T-93 669Q-65 669 -53 653T-41 620Q-41 593 -63 571T-116 548Q-134 548 -149 559T-165 599",776:"-251 601Q-251 626 -230 647T-180 669Q-139 669 -133 625Q-133 595 -155 575T-203 554Q-223 554 -237 567T-251 601ZM-72 599Q-72 632 -48 650T-2 669Q18 669 31 657T45 623Q45 592 22 573T-25 554Q-68 554 -72 599",778:"-199 610Q-199 654 -161 685T-79 716Q-39 716 -16 693Q3 674 3 647Q3 607 -34 575T-118 542Q-199 542 -199 610ZM-41 631T-41 655T-83 679H-89Q-129 679 -142 656Q-146 650 -151 632T-156 604Q-156 578 -113 578H-108Q-94 578 -86 579T-69 586T-52 605Q-41 631 -41 655",779:"-217 503Q-221 503 -234 510T-248 523Q-248 528 -205 602Q-200 610 -192 623T-180 644T-170 661T-159 676T-151 686T-142 694T-134 696Q-132 697 -121 697Q-88 694 -88 664Q-88 652 -97 640T-152 574Q-214 504 -217 503ZM-64 503Q-68 503 -81 510T-95 523Q-95 528 -52 602Q-47 610 -39 623T-27 644T-17 661T-6 676T2 686T11 694T19 696Q21 697 32 697Q65 694 65 664Q65 652 56 640T1 574Q-61 504 -64 503",780:"11 637Q16 637 22 624T29 607Q29 606 27 602Q26 600 -47 552T-125 502H-127Q-133 502 -184 553Q-236 602 -236 608Q-236 612 -224 625T-206 638L-202 637L-196 632Q-190 628 -179 620T-158 603L-116 570Q-109 572 -52 604T11 637",989:"477 261Q477 257 473 256T455 253T417 251T348 250H235L155 -77L146 -82Q137 -85 109 -85Q55 -85 55 -77L139 261Q224 596 226 598Q229 603 239 603Q240 603 254 603T290 603T341 604T405 605T477 605Q656 603 687 602T719 596Q719 589 692 588T513 585H319L282 427L242 272Q242 270 351 270Q388 270 410 270T444 269T460 267T469 265T477 261",8211:"98 248Q91 252 91 259Q91 279 100 284Q102 285 324 285H442H500Q536 285 545 283T554 274Q554 260 548 254Q546 250 538 249Q520 248 319 248H98",8212:"124 248Q117 252 117 259Q117 279 126 284Q128 285 579 285T1033 284Q1037 280 1037 278Q1038 276 1038 274Q1038 253 1029 250Q1026 248 575 248H124",8213:"124 248Q117 252 117 259Q117 279 126 284Q128 285 579 285T1033 284Q1037 280 1037 278Q1038 276 1038 274Q1038 253 1029 250Q1026 248 575 248H124",8215:"98 -62Q91 -58 91 -51Q91 -31 100 -26Q102 -25 324 -25H442H500Q536 -25 545 -27T554 -36Q554 -50 548 -56Q546 -60 538 -61Q520 -62 319 -62H98",8216:"249 379Q228 379 213 396T197 448Q197 533 271 627L278 635Q286 643 295 652T314 671T332 687T344 694Q349 694 355 685T362 671Q362 668 345 654T301 608T256 537Q238 493 240 491Q241 491 245 493T258 498T275 500Q296 500 311 488T326 454Q326 426 304 403T249 379",8217:"250 620Q250 647 272 670T325 694Q348 694 362 677T377 633V624Q377 566 343 506T275 412T231 379Q226 379 220 388T213 401T232 421T279 472T323 547Q335 573 335 582L331 580Q327 578 318 576T300 573Q277 573 264 585T250 620",8220:"295 379Q274 379 259 396T243 448Q243 533 317 627Q326 638 354 666T391 694Q395 694 402 686T409 673Q409 668 392 654T348 608T302 537Q284 493 286 491Q287 491 291 493T304 498T321 500Q342 500 357 488T372 454Q372 426 350 403T295 379ZM492 379Q471 379 456 396T440 448Q440 533 514 627Q523 638 551 666T588 694Q592 694 599 685T606 672T589 654T544 608T499 537Q481 493 483 491Q484 491 488 493T501 498T518 500Q539 500 554 488T569 454Q569 426 547 403T492 379",8221:"214 620Q214 647 236 670T289 694Q312 694 326 677T341 633V624Q341 588 327 550T294 482T253 428T216 392T196 379Q191 379 184 388T176 401Q176 404 195 421T243 472T287 547Q299 576 299 582L295 580Q291 578 282 576T264 573Q241 573 228 585T214 620ZM411 620Q411 647 433 670T486 694Q509 694 523 677T538 633V624Q538 588 524 550T491 482T450 428T413 392T393 379Q388 379 381 388T373 401Q373 404 392 421T440 472T484 547Q496 576 496 582L492 580Q488 578 479 576T461 573Q438 573 425 585T411 620",8260:"166 -215T159 -215T147 -212T141 -204T139 -197Q139 -190 144 -183Q157 -157 378 274T602 707Q605 716 618 716Q625 716 630 712T636 703T638 696Q638 691 406 241T170 -212Q166 -215 159 -215",8463:"150 475Q147 475 118 466T82 457Q73 457 64 467T54 487Q54 490 55 492Q63 506 64 506Q67 512 118 526Q162 541 169 546Q173 559 175 575Q181 596 181 604Q181 613 166 617Q164 617 153 618T135 619Q119 619 114 621T109 630Q109 636 114 656T122 681Q125 685 202 688Q272 695 286 695Q304 695 304 684Q304 682 291 628L278 577L386 612Q466 635 476 635T492 627T499 607Q499 593 489 586Q485 583 373 546L262 512Q262 511 248 455T233 397T236 397T244 404Q295 441 357 441Q405 441 445 417T485 333Q485 284 449 178T412 58T426 44Q447 44 466 68Q485 87 500 130L509 152H531H543Q562 152 562 144Q562 128 546 93T494 23T415 -13Q385 -13 359 3T322 44Q318 52 318 77Q318 99 352 196T386 337Q386 386 346 386Q318 386 286 370Q267 361 245 338T211 292Q207 287 193 235T162 113T138 21Q128 7 122 4Q105 -12 83 -12Q66 -12 54 -2T42 26Q42 45 98 257L151 475H150",8710:"574 715L582 716Q589 716 595 716Q612 716 616 714Q621 712 621 709Q622 707 705 359T788 8Q786 5 785 3L781 0H416Q52 0 50 2T48 6Q48 9 305 358T567 711Q572 712 574 715ZM599 346L538 602L442 474Q347 345 252 217T157 87T409 86T661 88L654 120Q646 151 629 220T599 346",10744:"166 -215T159 -215T147 -212T141 -204T139 -197Q139 -190 144 -183Q157 -157 378 274T602 707Q605 716 618 716Q625 716 630 712T636 703T638 696Q638 691 406 241T170 -212Q166 -215 159 -215"},{});var largeop$1={},largeop={};Object.defineProperty(largeop,"__esModule",{value:!0}),largeop.largeop=void 0,largeop.largeop={40:[1.15,.649,.597],41:[1.15,.649,.597],47:[1.15,.649,.811],91:[1.15,.649,.472],92:[1.15,.649,.811],93:[1.15,.649,.472],123:[1.15,.649,.667],125:[1.15,.649,.667],710:[.772,-.565,1],732:[.75,-.611,1],770:[.772,-.565,0],771:[.75,-.611,0],8214:[.602,0,.778],8260:[1.15,.649,.811],8593:[.6,0,.667],8595:[.6,0,.667],8657:[.599,0,.778],8659:[.6,0,.778],8719:[.95,.45,1.278],8720:[.95,.45,1.278],8721:[.95,.45,1.444],8730:[1.15,.65,1,{ic:.02}],8739:[.627,.015,.333],8741:[.627,.015,.556],8747:[1.36,.862,.556,{ic:.388}],8748:[1.36,.862,1.084,{ic:.388}],8749:[1.36,.862,1.592,{ic:.388}],8750:[1.36,.862,.556,{ic:.388}],8896:[.95,.45,1.111],8897:[.95,.45,1.111],8898:[.949,.45,1.111],8899:[.95,.449,1.111],8968:[1.15,.649,.528],8969:[1.15,.649,.528],8970:[1.15,.649,.528],8971:[1.15,.649,.528],9001:[1.15,.649,.611],9002:[1.15,.649,.611],9168:[.602,0,.667],10072:[.627,.015,.333],10216:[1.15,.649,.611],10217:[1.15,.649,.611],10752:[.949,.449,1.511],10753:[.949,.449,1.511],10754:[.949,.449,1.511],10756:[.95,.449,1.111],10758:[.95,.45,1.111],10764:[1.36,.862,2.168,{ic:.388}],12296:[1.15,.649,.611],12297:[1.15,.649,.611]},Object.defineProperty(largeop$1,"__esModule",{value:!0}),largeop$1.largeop=void 0;var FontData_js_1$g=FontData,largeop_js_1$1=largeop;largeop$1.largeop=(0,FontData_js_1$g.AddPaths)(largeop_js_1$1.largeop,{40:"180 96T180 250T205 541T266 770T353 944T444 1069T527 1150H555Q561 1144 561 1141Q561 1137 545 1120T504 1072T447 995T386 878T330 721T288 513T272 251Q272 133 280 56Q293 -87 326 -209T399 -405T475 -531T536 -609T561 -640Q561 -643 555 -649H527Q483 -612 443 -568T353 -443T266 -270T205 -41",41:"35 1138Q35 1150 51 1150H56H69Q113 1113 153 1069T243 944T330 771T391 541T416 250T391 -40T330 -270T243 -443T152 -568T69 -649H56Q43 -649 39 -647T35 -637Q65 -607 110 -548Q283 -316 316 56Q324 133 324 251Q324 368 316 445Q278 877 48 1123Q36 1137 35 1138",47:"78 -649Q56 -646 56 -625Q56 -614 382 261T712 1140Q716 1150 732 1150Q754 1147 754 1126Q754 1116 428 240T98 -639Q94 -649 78 -649",91:"224 -649V1150H455V1099H275V-598H455V-649H224",92:"754 -625Q754 -649 731 -649Q715 -649 712 -639Q709 -635 383 242T55 1124Q54 1135 61 1142T80 1150Q92 1150 98 1140Q101 1137 427 262T754 -625",93:"16 1099V1150H247V-649H16V-598H196V1099H16",123:"547 -643L541 -649H528Q515 -649 503 -645Q324 -582 293 -466Q289 -449 289 -428T287 -200L286 42L284 53Q274 98 248 135T196 190T146 222L121 235Q119 239 119 250Q119 262 121 266T133 273Q262 336 284 449L286 460L287 701Q287 737 287 794Q288 949 292 963Q293 966 293 967Q325 1080 508 1148Q516 1150 527 1150H541L547 1144V1130Q547 1117 546 1115T536 1109Q480 1086 437 1046T381 950L379 940L378 699Q378 657 378 594Q377 452 374 438Q373 437 373 436Q350 348 243 282Q192 257 186 254L176 251L188 245Q211 236 234 223T287 189T340 135T373 65Q373 64 374 63Q377 49 378 -93Q378 -156 378 -198L379 -438L381 -449Q393 -504 436 -544T536 -608Q544 -611 545 -613T547 -629V-643",125:"119 1130Q119 1144 121 1147T135 1150H139Q151 1150 182 1138T252 1105T326 1046T373 964Q378 942 378 702Q378 469 379 462Q386 394 439 339Q482 296 535 272Q544 268 545 266T547 251Q547 241 547 238T542 231T531 227T510 217T477 194Q390 129 379 39Q378 32 378 -201Q378 -441 373 -463Q342 -580 165 -644Q152 -649 139 -649Q125 -649 122 -646T119 -629Q119 -622 119 -619T121 -614T124 -610T132 -607T143 -602Q195 -579 235 -539T285 -447Q286 -435 287 -199T289 51Q294 74 300 91T329 138T390 197Q412 213 436 226T475 244L489 250L472 258Q455 265 430 279T377 313T327 366T293 434Q289 451 289 472T287 699Q286 941 285 948Q279 978 262 1005T227 1048T184 1080T151 1100T129 1109L127 1110Q119 1113 119 1130",710:"1004 603Q1004 600 999 583T991 565L960 574Q929 582 866 599T745 631L500 698Q497 698 254 631Q197 616 134 599T39 574L8 565Q5 565 0 582T-5 603L26 614Q58 624 124 646T248 687L499 772Q999 604 1004 603",732:"296 691Q258 691 216 683T140 663T79 639T34 619T16 611Q13 619 8 628L0 644L36 662Q206 749 321 749Q410 749 517 710T703 670Q741 670 783 678T859 698T920 722T965 742T983 750Q986 742 991 733L999 717L963 699Q787 611 664 611Q594 611 484 651T296 691",770:"4 603Q4 600 -1 583T-9 565L-40 574Q-71 582 -134 599T-255 631L-500 698Q-503 698 -746 631Q-803 616 -866 599T-961 574L-992 565Q-995 565 -1000 582T-1005 603L-974 614Q-942 624 -876 646T-752 687L-501 772Q-1 604 4 603",771:"-704 691Q-742 691 -784 683T-860 663T-921 639T-966 619T-984 611Q-987 619 -992 628L-1000 644L-964 662Q-794 749 -679 749Q-590 749 -483 710T-297 670Q-259 670 -217 678T-141 698T-80 722T-35 742T-17 750Q-14 742 -9 733L-1 717L-37 699Q-213 611 -336 611Q-405 611 -515 651T-704 691",8214:"257 0V602H300V0H257ZM478 0V602H521V0H478",8260:"78 -649Q56 -646 56 -625Q56 -614 382 261T712 1140Q716 1150 732 1150Q754 1147 754 1126Q754 1116 428 240T98 -639Q94 -649 78 -649",8593:"112 421L120 424Q127 427 136 430T161 441T191 458T224 481T260 510T295 546T328 591L333 600L340 589Q380 527 431 489T555 421V377L543 381Q445 418 368 492L355 504V0H312V504L299 492Q222 418 124 381L112 377V421",8595:"312 96V600H355V96L368 108Q445 182 543 219L555 223V179L546 176Q538 173 529 169T505 158T475 141T442 119T407 90T372 53T339 9L334 0L327 11Q287 73 236 111T112 179V223L124 219Q222 182 299 108L312 96",8657:"142 329Q300 419 389 599Q389 598 399 579T420 541T452 494T497 438T558 383T636 329T708 294L721 289V246Q718 246 694 256T623 293T532 356L522 364L521 182V0H478V405L466 417Q436 450 389 516Q388 515 378 500T352 463T312 417L300 405V0H257V364L247 356Q202 320 155 293T82 256L57 246V289L70 294Q101 305 142 329",8659:"257 236V600H300V195L312 183Q342 150 389 84Q390 85 400 100T426 137T466 183L478 195V600H521V418L522 236L532 244Q576 280 623 307T696 344L721 354V311L708 306Q677 295 636 271Q478 181 389 1Q389 2 379 21T358 59T326 106T281 162T220 217T142 271T70 306L57 311V354Q60 354 83 345T154 308T247 244L257 236",8719:"220 812Q220 813 218 819T214 829T208 840T199 853T185 866T166 878T140 887T107 893T66 896H56V950H1221V896H1211Q1080 896 1058 812V-311Q1076 -396 1211 -396H1221V-450H725V-396H735Q864 -396 888 -314Q889 -312 889 -311V896H388V292L389 -311Q405 -396 542 -396H552V-450H56V-396H66Q195 -396 219 -314Q220 -312 220 -311V812",8720:"220 812Q220 813 218 819T214 829T208 840T199 853T185 866T166 878T140 887T107 893T66 896H56V950H552V896H542Q411 896 389 812L388 208V-396H889V812Q889 813 887 819T883 829T877 840T868 853T854 866T835 878T809 887T776 893T735 896H725V950H1221V896H1211Q1080 896 1058 812V-311Q1076 -396 1211 -396H1221V-450H56V-396H66Q195 -396 219 -314Q220 -312 220 -311V812",8721:"60 948Q63 950 665 950H1267L1325 815Q1384 677 1388 669H1348L1341 683Q1320 724 1285 761Q1235 809 1174 838T1033 881T882 898T699 902H574H543H251L259 891Q722 258 724 252Q725 250 724 246Q721 243 460 -56L196 -356Q196 -357 407 -357Q459 -357 548 -357T676 -358Q812 -358 896 -353T1063 -332T1204 -283T1307 -196Q1328 -170 1348 -124H1388Q1388 -125 1381 -145T1356 -210T1325 -294L1267 -449L666 -450Q64 -450 61 -448Q55 -446 55 -439Q55 -437 57 -433L590 177Q590 178 557 222T452 366T322 544L56 909L55 924Q55 945 60 948",8730:"1001 1150Q1017 1150 1020 1132Q1020 1127 741 244L460 -643Q453 -650 436 -650H424Q423 -647 423 -645T421 -640T419 -631T415 -617T408 -594T399 -560T385 -512T367 -448T343 -364T312 -259L203 119L138 41L111 67L212 188L264 248L472 -474L983 1140Q988 1150 1001 1150",8739:"146 612Q151 627 166 627Q182 627 187 612Q188 610 188 306T187 0Q184 -15 166 -15Q149 -15 146 0V10Q146 19 146 35T146 73T146 122T145 179T145 241T145 306T145 370T145 433T145 489T146 538T146 576T146 602V612",8741:"146 612Q151 627 166 627Q182 627 187 612Q188 610 188 306T187 0Q184 -15 166 -15Q149 -15 146 0V10Q146 19 146 35T146 73T146 122T145 179T145 241T145 306T145 370T145 433T145 489T146 538T146 576T146 602V612ZM368 612Q373 627 388 627Q404 627 409 612Q410 610 410 306T409 0Q406 -15 389 -15Q371 -15 368 0V10Q368 19 368 35T368 73T368 122T367 179T367 241T367 306T367 370T367 433T367 489T368 538T368 576T368 602V612",8747:"114 -798Q132 -824 165 -824H167Q195 -824 223 -764T275 -600T320 -391T362 -164Q365 -143 367 -133Q439 292 523 655T645 1127Q651 1145 655 1157T672 1201T699 1257T733 1306T777 1346T828 1360Q884 1360 912 1325T944 1245Q944 1220 932 1205T909 1186T887 1183Q866 1183 849 1198T832 1239Q832 1287 885 1296L882 1300Q879 1303 874 1307T866 1313Q851 1323 833 1323Q819 1323 807 1311T775 1255T736 1139T689 936T633 628Q574 293 510 -5T410 -437T355 -629Q278 -862 165 -862Q125 -862 92 -831T55 -746Q55 -711 74 -698T112 -685Q133 -685 150 -700T167 -741Q167 -789 114 -798",8748:"114 -798Q132 -824 165 -824H167Q195 -824 223 -764T275 -600T320 -391T362 -164Q365 -143 367 -133Q439 292 523 655T645 1127Q651 1145 655 1157T672 1201T699 1257T733 1306T777 1346T828 1360Q884 1360 912 1325T944 1245Q944 1220 932 1205T909 1186T887 1183Q866 1183 849 1198T832 1239Q832 1287 885 1296L882 1300Q879 1303 874 1307T866 1313Q851 1323 833 1323Q819 1323 807 1311T775 1255T736 1139T689 936T633 628Q574 293 510 -5T410 -437T355 -629Q278 -862 165 -862Q125 -862 92 -831T55 -746Q55 -711 74 -698T112 -685Q133 -685 150 -700T167 -741Q167 -789 114 -798ZM642 -798Q660 -824 693 -824H695Q723 -824 751 -764T803 -600T848 -391T890 -164Q893 -143 895 -133Q967 292 1051 655T1173 1127Q1179 1145 1183 1157T1200 1201T1227 1257T1261 1306T1305 1346T1356 1360Q1412 1360 1440 1325T1472 1245Q1472 1220 1460 1205T1437 1186T1415 1183Q1394 1183 1377 1198T1360 1239Q1360 1287 1413 1296L1410 1300Q1407 1303 1402 1307T1394 1313Q1379 1323 1361 1323Q1347 1323 1335 1311T1303 1255T1264 1139T1217 936T1161 628Q1102 293 1038 -5T938 -437T883 -629Q806 -862 693 -862Q653 -862 620 -831T583 -746Q583 -711 602 -698T640 -685Q661 -685 678 -700T695 -741Q695 -789 642 -798",8749:"114 -798Q132 -824 165 -824H167Q195 -824 223 -764T275 -600T320 -391T362 -164Q365 -143 367 -133Q439 292 523 655T645 1127Q651 1145 655 1157T672 1201T699 1257T733 1306T777 1346T828 1360Q884 1360 912 1325T944 1245Q944 1220 932 1205T909 1186T887 1183Q866 1183 849 1198T832 1239Q832 1287 885 1296L882 1300Q879 1303 874 1307T866 1313Q851 1323 833 1323Q819 1323 807 1311T775 1255T736 1139T689 936T633 628Q574 293 510 -5T410 -437T355 -629Q278 -862 165 -862Q125 -862 92 -831T55 -746Q55 -711 74 -698T112 -685Q133 -685 150 -700T167 -741Q167 -789 114 -798ZM642 -798Q660 -824 693 -824H695Q723 -824 751 -764T803 -600T848 -391T890 -164Q893 -143 895 -133Q967 292 1051 655T1173 1127Q1179 1145 1183 1157T1200 1201T1227 1257T1261 1306T1305 1346T1356 1360Q1412 1360 1440 1325T1472 1245Q1472 1220 1460 1205T1437 1186T1415 1183Q1394 1183 1377 1198T1360 1239Q1360 1287 1413 1296L1410 1300Q1407 1303 1402 1307T1394 1313Q1379 1323 1361 1323Q1347 1323 1335 1311T1303 1255T1264 1139T1217 936T1161 628Q1102 293 1038 -5T938 -437T883 -629Q806 -862 693 -862Q653 -862 620 -831T583 -746Q583 -711 602 -698T640 -685Q661 -685 678 -700T695 -741Q695 -789 642 -798ZM1150 -798Q1168 -824 1201 -824H1203Q1231 -824 1259 -764T1311 -600T1356 -391T1398 -164Q1401 -143 1403 -133Q1475 292 1559 655T1681 1127Q1687 1145 1691 1157T1708 1201T1735 1257T1769 1306T1813 1346T1864 1360Q1920 1360 1948 1325T1980 1245Q1980 1220 1968 1205T1945 1186T1923 1183Q1902 1183 1885 1198T1868 1239Q1868 1287 1921 1296L1918 1300Q1915 1303 1910 1307T1902 1313Q1887 1323 1869 1323Q1855 1323 1843 1311T1811 1255T1772 1139T1725 936T1669 628Q1610 293 1546 -5T1446 -437T1391 -629Q1314 -862 1201 -862Q1161 -862 1128 -831T1091 -746Q1091 -711 1110 -698T1148 -685Q1169 -685 1186 -700T1203 -741Q1203 -789 1150 -798",8750:"114 -798Q132 -824 165 -824H167Q195 -824 223 -764T275 -600T320 -391T362 -164Q365 -143 367 -133Q382 -52 390 2Q314 40 276 99Q230 167 230 249Q230 363 305 436T484 519H494L503 563Q587 939 632 1087T727 1298Q774 1360 828 1360Q884 1360 912 1325T944 1245Q944 1220 932 1205T909 1186T887 1183Q866 1183 849 1198T832 1239Q832 1287 885 1296L882 1300Q879 1303 874 1307T866 1313Q851 1323 833 1323Q766 1323 688 929Q662 811 610 496Q770 416 770 249Q770 147 701 68T516 -21H506L497 -65Q407 -464 357 -623T237 -837Q203 -862 165 -862Q125 -862 92 -831T55 -746Q55 -711 74 -698T112 -685Q133 -685 150 -700T167 -741Q167 -789 114 -798ZM480 478Q460 478 435 470T380 444T327 401T287 335T271 249Q271 124 375 56L397 43L431 223L485 478H480ZM519 20Q545 20 578 33T647 72T706 144T730 249Q730 383 603 455Q603 454 597 421T582 343T569 276Q516 22 515 20H519",8896:"1055 -401Q1055 -419 1042 -434T1007 -450Q977 -450 963 -423Q959 -417 757 167L555 750L353 167Q151 -417 147 -423Q134 -450 104 -450Q84 -450 70 -436T55 -401Q55 -394 56 -390Q59 -381 284 270T512 925Q525 950 555 950Q583 950 597 926Q599 923 825 270T1054 -391Q1055 -394 1055 -401",8897:"55 900Q55 919 69 934T103 950Q134 950 147 924Q152 913 353 333L555 -250L757 333Q958 913 963 924Q978 950 1007 950Q1028 950 1041 935T1055 901Q1055 894 1054 891Q1052 884 826 231T597 -426Q583 -450 556 -450Q527 -450 512 -424Q510 -421 285 229T56 890Q55 893 55 900",8898:"57 516Q68 602 104 675T190 797T301 882T423 933T542 949Q594 949 606 948Q780 928 901 815T1048 545Q1053 516 1053 475T1055 49Q1055 -406 1054 -410Q1051 -427 1037 -438T1006 -450T976 -439T958 -411Q957 -407 957 37Q957 484 956 494Q945 643 831 747T554 852Q481 852 411 826Q301 786 232 696T154 494Q153 484 153 37Q153 -407 152 -411Q148 -428 135 -439T104 -450T73 -439T56 -410Q55 -406 55 49Q56 505 57 516",8899:"56 911Q58 926 71 938T103 950Q120 950 134 939T152 911Q153 907 153 463Q153 16 154 6Q165 -143 279 -247T556 -352Q716 -352 830 -248T956 6Q957 16 957 463Q957 907 958 911Q962 928 975 939T1006 950T1037 939T1054 911Q1055 906 1055 451Q1054 -5 1053 -16Q1029 -207 889 -328T555 -449Q363 -449 226 -331T62 -45Q57 -16 57 25T55 451Q55 906 56 911",8968:"224 -649V1150H511V1099H275V-649H224",8969:"16 1099V1150H303V-649H252V1099H16",8970:"224 -649V1150H275V-598H511V-649H224",8971:"252 -598V1150H303V-649H16V-598H252",9001:"112 244V258L473 1130Q482 1150 498 1150Q511 1150 517 1142T523 1125V1118L344 685Q304 587 257 473T187 305L165 251L344 -184L523 -616V-623Q524 -634 517 -641T499 -649Q484 -649 473 -629L112 244",9002:"112 -649Q103 -649 95 -642T87 -623V-616L266 -184L445 251Q445 252 356 466T178 898T86 1123Q85 1134 93 1142T110 1150Q126 1150 133 1137Q134 1136 317 695L498 258V244L317 -194Q134 -635 133 -636Q126 -649 112 -649",9168:"312 0V602H355V0H312",10072:"146 612Q151 627 166 627Q182 627 187 612Q188 610 188 306T187 0Q184 -15 166 -15Q149 -15 146 0V10Q146 19 146 35T146 73T146 122T145 179T145 241T145 306T145 370T145 433T145 489T146 538T146 576T146 602V612",10216:"112 244V258L473 1130Q482 1150 498 1150Q511 1150 517 1142T523 1125V1118L344 685Q304 587 257 473T187 305L165 251L344 -184L523 -616V-623Q524 -634 517 -641T499 -649Q484 -649 473 -629L112 244",10217:"112 -649Q103 -649 95 -642T87 -623V-616L266 -184L445 251Q445 252 356 466T178 898T86 1123Q85 1134 93 1142T110 1150Q126 1150 133 1137Q134 1136 317 695L498 258V244L317 -194Q134 -635 133 -636Q126 -649 112 -649",10752:"668 944Q697 949 744 949Q803 949 814 948Q916 937 1006 902T1154 826T1262 730T1336 638T1380 563Q1454 415 1454 250Q1454 113 1402 -14T1258 -238T1036 -391T755 -449Q608 -449 477 -392T255 -240T110 -16T56 250Q56 387 105 510T239 723T434 871T668 944ZM755 -352Q922 -352 1061 -269T1278 -48T1356 250Q1356 479 1202 652T809 850Q798 851 747 851Q634 851 527 806T337 682T204 491T154 251Q154 128 201 17T329 -176T521 -304T755 -352ZM665 250Q665 290 692 315T758 341Q792 339 818 315T845 250Q845 211 819 186T755 160Q716 160 691 186T665 250",10753:"668 944Q697 949 744 949Q803 949 814 948Q916 937 1006 902T1154 826T1262 730T1336 638T1380 563Q1454 415 1454 250Q1454 113 1402 -14T1258 -238T1036 -391T755 -449Q608 -449 477 -392T255 -240T110 -16T56 250Q56 387 105 510T239 723T434 871T668 944ZM706 299V850H704Q519 832 386 725T198 476Q181 433 169 379T156 300Q156 299 431 299H706ZM1116 732Q1054 778 982 807T871 842T810 849L804 850V299H1079Q1354 299 1354 300Q1354 311 1352 329T1336 402T1299 506T1228 620T1116 732ZM706 -350V201H431Q156 201 156 200Q156 189 158 171T174 98T211 -6T282 -120T395 -232Q428 -257 464 -277T527 -308T587 -328T636 -339T678 -346T706 -350ZM1354 200Q1354 201 1079 201H804V-350Q808 -349 838 -345T887 -338T940 -323T1010 -295Q1038 -282 1067 -265T1144 -208T1229 -121T1301 0T1349 158Q1354 188 1354 200",10754:"668 944Q697 949 744 949Q803 949 814 948Q916 937 1006 902T1154 826T1262 730T1336 638T1380 563Q1454 415 1454 250Q1454 113 1402 -14T1258 -238T1036 -391T755 -449Q608 -449 477 -392T255 -240T110 -16T56 250Q56 387 105 510T239 723T434 871T668 944ZM1143 709Q1138 714 1129 722T1086 752T1017 791T925 826T809 850Q798 851 747 851H728Q659 851 571 823T408 741Q367 713 367 709L755 320L1143 709ZM297 639Q296 639 282 622T247 570T205 491T169 382T154 250T168 118T204 9T247 -70T282 -122L297 -139L685 250L297 639ZM1213 -139Q1214 -139 1228 -122T1263 -70T1305 9T1341 118T1356 250T1342 382T1306 491T1263 570T1228 622L1213 639L825 250L1213 -139ZM367 -209Q373 -215 384 -224T434 -258T514 -302T622 -336T755 -352T887 -338T996 -302T1075 -259T1126 -224L1143 -209L755 180Q754 180 561 -14T367 -209",10756:"56 911Q58 926 71 938T103 950Q120 950 134 939T152 911Q153 907 153 463Q153 16 154 6Q165 -143 279 -247T556 -352Q716 -352 830 -248T956 6Q957 16 957 463Q957 907 958 911Q962 928 975 939T1006 950T1037 939T1054 911Q1055 906 1055 451Q1054 -5 1053 -16Q1029 -207 889 -328T555 -449Q363 -449 226 -331T62 -45Q57 -16 57 25T55 451Q55 906 56 911ZM507 554Q511 570 523 581T554 593Q571 593 585 582T603 554Q604 551 604 443V338H709Q817 338 820 337Q835 334 847 321T859 290Q859 254 819 241Q816 240 709 240H604V134Q604 48 604 34T598 11Q583 -15 555 -15Q526 -15 512 11Q507 20 507 34T506 134V240H401H344Q292 240 278 246Q251 259 251 290Q251 309 264 321T290 337Q293 338 401 338H506V443Q506 551 507 554",10758:"56 911Q60 927 72 938T103 950Q120 950 134 939T152 911Q153 907 153 277V-352H957V277Q957 907 958 911Q962 928 975 939T1006 950T1036 939T1054 911V891Q1054 871 1054 836T1054 754T1054 647T1055 525T1055 390T1055 250T1055 111T1055 -24T1055 -147T1054 -253T1054 -335T1054 -391V-411Q1047 -442 1016 -449Q1011 -450 552 -450L94 -449Q63 -439 56 -411V-391Q56 -371 56 -336T56 -254T56 -147T55 -25T55 110T55 250T55 389T55 524T55 647T56 753T56 835T56 891V911",12296:"112 244V258L473 1130Q482 1150 498 1150Q511 1150 517 1142T523 1125V1118L344 685Q304 587 257 473T187 305L165 251L344 -184L523 -616V-623Q524 -634 517 -641T499 -649Q484 -649 473 -629L112 244",12297:"112 -649Q103 -649 95 -642T87 -623V-616L266 -184L445 251Q445 252 356 466T178 898T86 1123Q85 1134 93 1142T110 1150Q126 1150 133 1137Q134 1136 317 695L498 258V244L317 -194Q134 -635 133 -636Q126 -649 112 -649"},{10764:"∬∬"});var monospace$1={},monospace={};Object.defineProperty(monospace,"__esModule",{value:!0}),monospace.monospace=void 0,monospace.monospace={32:[0,0,.525],33:[.622,0,.525],34:[.623,-.333,.525],35:[.611,0,.525],36:[.694,.082,.525],37:[.694,.083,.525],38:[.622,.011,.525],39:[.611,-.287,.525],40:[.694,.082,.525],41:[.694,.082,.525],42:[.52,-.09,.525],43:[.531,-.081,.525],44:[.14,.139,.525],45:[.341,-.271,.525],46:[.14,0,.525],47:[.694,.083,.525],58:[.431,0,.525],59:[.431,.139,.525],60:[.557,-.055,.525],61:[.417,-.195,.525],62:[.557,-.055,.525],63:[.617,0,.525],64:[.617,.006,.525],91:[.694,.082,.525],92:[.694,.083,.525],93:[.694,.082,.525],94:[.611,-.46,.525],95:[-.025,.095,.525],96:[.681,-.357,.525],123:[.694,.083,.525],124:[.694,.082,.525],125:[.694,.083,.525],126:[.611,-.466,.525],127:[.612,-.519,.525],160:[0,0,.525],305:[.431,0,.525],567:[.431,.228,.525],697:[.623,-.334,.525],768:[.611,-.485,0],769:[.611,-.485,0],770:[.611,-.46,0],771:[.611,-.466,0],772:[.577,-.5,0],774:[.611,-.504,0],776:[.612,-.519,0],778:[.619,-.499,0],780:[.577,-.449,0],913:[.623,0,.525],914:[.611,0,.525],915:[.611,0,.525],916:[.623,0,.525],917:[.611,0,.525],918:[.611,0,.525],919:[.611,0,.525],920:[.621,.01,.525],921:[.611,0,.525],922:[.611,0,.525],923:[.623,0,.525],924:[.611,0,.525],925:[.611,0,.525],926:[.611,0,.525],927:[.621,.01,.525],928:[.611,0,.525],929:[.611,0,.525],931:[.611,0,.525],932:[.611,0,.525],933:[.622,0,.525],934:[.611,0,.525],935:[.611,0,.525],936:[.611,0,.525],937:[.622,0,.525],8215:[-.025,.095,.525],8242:[.623,-.334,.525],8243:[.623,0,1.05],8244:[.623,0,1.575],8260:[.694,.083,.525],8279:[.623,0,2.1],8710:[.623,0,.525]},Object.defineProperty(monospace$1,"__esModule",{value:!0}),monospace$1.monospace=void 0;var FontData_js_1$f=FontData,monospace_js_1$1=monospace;monospace$1.monospace=(0,FontData_js_1$f.AddPaths)(monospace_js_1$1.monospace,{32:"",33:"206 565Q206 590 222 606T265 622Q287 621 303 606T319 565T314 392L308 216Q299 194 273 194H262Q247 194 241 195T228 200T217 216L211 392Q206 539 206 565ZM206 56Q206 83 223 99T265 115Q288 113 304 99T320 58Q320 33 303 17T262 0Q237 0 222 17T206 56",34:"122 575Q122 593 137 608T173 623Q196 623 210 608T225 575Q225 562 218 464Q212 373 211 361T201 341Q193 333 173 333Q154 333 146 341Q138 348 137 360T129 464Q122 561 122 575ZM299 575Q299 593 314 608T350 623Q373 623 387 608T402 575Q402 562 395 464Q389 373 388 361T378 341Q370 333 350 333Q331 333 323 341Q315 348 314 360T306 464Q299 561 299 575",35:"93 163Q74 163 65 164T46 173T36 198Q36 210 40 215T61 233H131V236Q132 239 140 307T149 377Q149 379 105 379L61 380Q36 392 36 414Q36 450 86 450Q91 450 99 450T112 449H159Q163 480 167 517Q168 524 170 545T174 573T180 591T191 607T210 611Q223 611 232 604T243 588L245 580Q245 565 238 511T230 451Q230 449 282 449H333Q337 480 341 517Q342 524 343 537T345 556T348 573T352 589T359 600T370 608T384 611Q395 611 406 602T419 580Q419 565 412 511T404 451Q404 449 431 449H442Q477 449 485 429Q489 421 489 414Q489 392 463 380L428 379H394V376Q393 373 385 305T376 235Q376 233 419 233H463L468 230Q472 227 473 227T477 223T482 218T486 213T488 206T489 198Q489 162 436 162Q430 162 422 162T412 163H366V161Q364 159 357 92Q356 85 355 73T353 54T350 37T346 22T339 11T328 3T314 0Q303 0 292 9T279 31Q279 37 287 96T295 162Q295 163 244 163H192V161Q190 159 183 92Q182 85 181 73T179 54T176 37T172 22T165 11T154 3T140 0Q129 0 118 9T105 31Q105 37 113 96T121 162Q121 163 93 163ZM323 377Q323 379 272 379H220V376Q219 373 211 305T202 235Q202 233 253 233H305V236Q306 239 314 307T323 377",36:"415 397Q392 397 377 411T362 448Q362 464 376 485Q369 498 362 506T346 520T332 528T315 533T300 538V445L301 353L311 350Q382 334 424 284T466 174Q466 115 425 65T303 -2L300 -3V-30Q300 -64 291 -74Q283 -82 262 -82H255Q234 -82 225 -60L224 -32V-4L213 -2Q152 6 106 51T59 170V180Q59 197 74 213Q89 227 110 227T146 213T162 174Q162 156 147 137Q153 123 161 112T176 95T191 85T205 79T216 76T224 74V283L213 285Q147 298 103 343T58 449Q58 516 108 560T224 614V643V654Q224 666 226 673T237 687T264 694Q289 693 294 683T300 642V615H303Q355 607 390 587T440 540T460 493T466 453Q466 425 451 411T415 397ZM137 452Q137 425 158 404T198 376T223 369Q224 369 224 453T223 537Q198 532 168 509T137 452ZM301 75Q307 75 325 83T365 116T387 171Q387 238 300 267V171Q300 75 301 75",37:"35 560Q35 607 54 645T110 693Q111 693 116 693T125 694Q165 692 187 651T210 560Q210 506 186 467T123 428Q84 428 60 466T35 560ZM139 560Q139 574 136 587T130 608T124 615Q122 617 120 614Q106 595 106 561Q106 516 121 506Q123 504 125 507Q139 526 139 560ZM123 -83Q107 -83 98 -73T88 -48Q88 -43 89 -41Q90 -37 229 316T370 675Q381 694 400 694Q416 694 426 684T436 659Q436 654 435 652Q434 647 295 294T153 -65Q144 -83 123 -83ZM314 50Q314 104 338 143T400 183Q439 183 464 144T489 50T465 -43T402 -82Q358 -82 336 -41T314 50ZM417 50Q417 71 413 85T405 102L401 106Q386 95 386 50Q386 29 390 15T398 -2L402 -6Q417 5 417 50",38:"96 462Q96 546 132 584T211 622Q255 622 284 583T314 474Q314 395 224 305L208 288Q213 275 226 251L265 185L269 179Q273 184 299 246L332 333L342 363Q342 364 341 365Q334 365 334 393Q334 406 334 410T340 420T356 431H412H440Q467 431 478 424T490 393Q490 376 484 367T470 357T448 355H441H415L399 312Q349 176 322 127L315 115L323 106Q360 65 393 65Q405 65 410 80T416 109Q416 140 452 140Q487 140 487 105Q487 56 460 23T391 -11L286 41L273 53L262 42Q212 -11 151 -11Q97 -11 63 33T28 143Q28 161 30 176T38 205T47 227T60 247T72 261T84 274T94 283L122 311L119 323Q96 392 96 462ZM243 474Q243 533 218 545L215 546Q212 546 210 546Q182 546 169 501Q167 492 167 466Q167 419 179 368L188 377Q234 425 242 461Q243 465 243 474ZM217 129Q185 174 154 235Q121 214 115 176Q113 168 113 143Q113 83 139 67Q141 66 152 66Q191 66 228 112L217 129",39:"205 554Q205 577 221 594T263 611Q302 611 325 577T349 490Q349 409 298 347Q285 330 258 309T214 287Q203 289 189 302T175 327Q175 341 185 349T213 369T245 402Q269 437 273 483V497Q264 496 263 496Q240 496 223 513T205 554",40:"437 -53Q437 -82 399 -82H394Q377 -82 342 -55Q259 7 213 102T166 306Q166 412 211 507T342 667Q377 694 393 694H399Q437 694 437 665Q437 654 426 643T397 620T356 584T311 525Q301 511 290 488T264 412T250 306Q250 191 300 105T422 -27Q437 -37 437 -53",41:"87 664Q87 694 126 694Q138 694 147 690T183 667Q266 605 312 510T358 306Q358 193 307 93T161 -70Q142 -82 126 -82Q105 -82 96 -73T87 -53Q87 -47 88 -44Q92 -36 116 -19T173 34T230 119Q273 206 273 306Q273 408 231 494T109 635Q87 649 87 664",42:"222 487Q224 501 235 510T262 520Q279 520 289 510T302 487Q302 458 301 429Q301 421 301 413T301 398T300 386T300 377V374Q300 373 301 373Q304 373 353 403T416 434Q432 434 444 423T456 393Q456 389 456 386T454 379T451 373T448 368T442 363T436 358T427 353T417 348T405 342T391 334Q345 309 339 305L388 279Q400 273 412 266T432 255T441 250Q456 238 456 218Q456 200 445 189T417 177Q403 177 354 207T301 238Q300 238 300 237V234Q300 231 300 226T300 214T301 199T301 182Q302 153 302 124Q300 109 289 100T262 90T235 100T222 124Q222 153 223 182Q223 190 223 198T223 213T224 225T224 234V237Q224 238 223 238Q220 238 171 208T108 177Q92 177 80 188T68 218Q68 237 79 246T134 277Q180 303 185 306L136 332Q124 338 112 345T92 356T83 361Q68 373 68 393Q68 411 79 422T107 434Q121 434 170 404T223 373Q224 373 224 374V377Q224 380 224 385T224 397T223 412T223 429Q222 458 222 487",43:"147 271Q138 271 122 271T98 270Q68 270 53 277T38 306T53 335T98 342Q105 342 121 342T147 341H227V423L228 505Q241 531 262 531Q268 531 273 530T282 525T287 519T293 511L297 505V341H377H430Q457 341 467 338T483 321Q487 313 487 306Q487 295 480 286T463 273Q457 271 377 271H297V107Q281 81 262 81Q250 81 242 87T230 100L228 107L227 189V271H147",44:"193 37T193 70T213 121T260 140Q302 140 327 108T353 36Q353 -7 336 -43T294 -98T249 -128T215 -139Q204 -139 189 -125Q177 -111 174 -101Q172 -84 183 -77T217 -61T253 -33Q261 -24 272 1L265 0Q234 0 214 18",45:"57 306Q57 333 86 341H438Q468 332 468 306T438 271H86Q57 280 57 306",46:"193 70Q193 105 214 122T258 140Q291 140 311 120T332 70Q332 44 314 23T262 1Q234 1 214 18T193 70",47:"94 -83Q78 -83 68 -73T58 -48Q58 -44 60 -36Q62 -31 227 314T399 673Q410 694 431 694Q445 694 455 684T466 659Q466 656 464 648Q463 643 298 298T125 -62Q114 -83 94 -83",58:"193 361Q193 396 214 413T258 431Q291 431 311 411T332 361Q332 335 314 314T262 292Q234 292 214 309T193 361ZM193 70Q193 105 214 122T258 140Q291 140 311 120T332 70Q332 44 314 23T262 1Q234 1 214 18T193 70",59:"193 361Q193 396 214 413T258 431Q291 431 311 411T332 361Q332 335 314 314T262 292Q234 292 214 309T193 361ZM193 70Q193 105 214 122T259 140Q301 140 319 108T337 33Q337 -38 291 -88T214 -139Q203 -139 189 -126T175 -97Q175 -85 182 -78T200 -66T225 -50T249 -17Q256 -3 256 0Q252 1 248 1Q242 2 235 5T218 15T200 36T193 70",60:"468 90Q468 76 458 66T433 55Q426 55 419 58Q413 61 243 168T68 280Q57 291 57 306T68 332Q72 335 241 442T416 553Q424 557 432 557Q447 557 457 547T468 522T456 496Q454 494 305 399L158 306L305 213Q341 190 390 159Q443 125 452 119T464 106V105Q468 97 468 90",61:"38 382Q38 409 67 417H457Q487 408 487 382Q487 358 461 348H64Q51 352 45 360T38 376V382ZM67 195Q38 204 38 230Q38 255 62 264Q66 265 264 265H461L464 264Q467 262 469 261T475 256T481 249T485 240T487 230Q487 204 457 195H67",62:"57 522Q57 539 67 548T90 557Q98 557 105 554Q111 551 281 444T456 332Q468 320 468 306T456 280Q452 276 282 169T105 58Q98 55 91 55Q79 55 68 63T57 90Q57 105 68 116Q70 118 219 213L366 306L219 399Q75 491 71 494Q57 507 57 522",63:"62 493Q62 540 107 578T253 617Q366 617 414 578T462 490Q462 459 445 434T411 400L394 390Q315 347 296 287Q294 278 293 247V217Q285 201 278 198T246 194T216 197T201 215V245V253Q201 379 351 456Q366 464 375 477Q377 482 377 490Q377 517 339 528T251 540Q182 540 159 517Q166 503 166 490Q166 468 151 453T114 438Q96 438 79 451T62 493ZM190 58Q190 85 208 100T249 115Q272 113 288 99T304 58Q304 33 287 17T246 0T206 16T190 58",64:"44 306Q44 445 125 531T302 617Q332 617 358 607T411 574T456 502T479 387Q481 361 481 321Q481 203 421 143Q381 103 332 103Q266 103 225 165T183 307Q183 390 227 449T332 508Q358 508 378 498Q350 541 304 541Q229 541 172 473T115 305Q115 208 171 140T306 71H310Q358 71 397 105Q409 115 436 115Q458 115 462 113Q481 106 481 86Q481 73 468 61Q401 -6 305 -6Q262 -6 217 14T133 71T69 170T44 306ZM410 306Q410 361 386 396T333 431Q300 431 277 394T254 305Q254 256 276 218T332 180Q364 180 387 217T410 306",91:"237 -82Q221 -78 214 -58V305Q214 669 216 673Q220 687 231 690T278 694H350H461Q462 693 467 690T474 685T478 679T482 670T483 656Q483 632 471 625T428 617Q422 617 406 617T379 618H298V-7H379H420Q459 -7 471 -13T483 -45Q483 -55 483 -59T477 -70T461 -82H237",92:"58 659Q58 673 68 683T93 694Q114 694 125 673Q132 659 297 314T464 -36Q466 -44 466 -48Q466 -66 454 -74T431 -83Q410 -83 399 -62Q391 -47 226 298T60 648Q58 656 58 659",93:"41 656Q41 681 53 688T99 695Q107 695 133 695T177 694H288Q307 681 310 669V-58Q303 -76 288 -82H64Q41 -73 41 -45Q41 -21 53 -14T96 -6Q102 -6 118 -6T145 -7H226V618H145H100Q67 618 54 625T41 656",94:"138 460Q121 460 109 479T96 512Q96 527 106 534Q109 536 178 571T253 609Q256 611 264 611Q272 610 343 574Q357 567 369 561T389 550T402 543T411 538T416 535T420 532T422 529T425 525Q428 518 428 512Q428 498 416 479T386 460H384Q377 460 316 496L262 526L208 496Q147 460 138 460",95:"57 -60Q57 -33 86 -25H438Q468 -34 468 -60T438 -95H86Q57 -86 57 -60",96:"176 479Q176 563 227 622T310 681Q324 680 337 667T350 641Q350 627 340 619T312 599T280 566Q256 531 252 485V471Q261 472 262 472Q285 472 302 455T320 414Q320 389 303 373T261 357Q223 357 200 391T176 479",123:"430 -7H436Q449 -7 456 -8T469 -19T475 -45Q475 -69 466 -76T434 -83H419Q386 -82 363 -80T308 -69T253 -41T223 7L221 17L220 118V220L218 224Q215 229 214 230T210 235T204 241T195 246T184 252T170 257T151 262T127 265Q118 267 100 267T69 270T52 283Q50 288 50 306V314Q50 335 67 341Q68 342 102 343T172 355T217 386L220 392V493L221 595Q225 611 230 621T251 650T304 679T395 693L406 694Q418 694 426 694Q458 694 466 685Q475 676 475 656T466 627Q458 618 430 618Q319 618 305 587L304 486Q304 476 304 458T305 431Q305 385 295 358T251 311L243 306Q243 305 254 298T281 274T302 231Q304 223 304 125L305 25Q309 16 316 10T352 -1T430 -7",124:"228 668Q241 694 262 694Q268 694 273 693T282 688T287 682T293 674L297 668V-57Q282 -82 262 -82Q239 -82 228 -57V668",125:"49 655Q49 674 56 682T73 692T106 694Q141 693 167 690T224 677T275 647T303 595L305 392Q313 367 347 356T417 344T457 341Q475 335 475 306Q475 292 473 285T464 273T451 269T430 267Q352 262 327 246Q311 236 305 220L303 17L301 7Q294 -16 277 -33T242 -60T196 -74T150 -80T106 -83Q78 -83 72 -82T58 -74Q49 -65 49 -44Q49 -24 58 -16Q66 -7 94 -7Q143 -7 171 -1T207 10T220 25V125Q220 223 222 231Q228 257 243 274T270 299L281 306Q234 329 222 381Q220 387 220 486V587Q212 597 207 601T173 612T94 618Q66 618 58 627Q49 635 49 655",126:"125 467Q113 467 100 480T87 509Q88 520 111 543Q172 602 209 609Q219 611 224 611Q246 611 263 596T290 566T304 551Q319 551 367 594Q383 610 396 610H400Q411 610 424 597T437 568Q436 557 413 534Q348 469 305 466Q278 466 260 481T234 511T220 526Q205 526 157 483Q141 467 129 467H125",127:"104 565Q104 590 120 600T155 611Q175 611 180 610Q217 599 217 565Q217 545 202 532T166 519H159H155Q120 519 107 547Q104 553 104 565ZM307 565Q307 580 317 593T346 610Q348 610 350 610T354 611Q355 612 367 612Q395 611 408 597T421 565T409 534T365 519H358Q336 519 322 532T307 565",160:"",305:"411 76Q441 76 451 69T462 38Q462 29 462 26T460 18T453 9T440 1H94Q72 8 72 33V38Q72 46 72 49T74 58T81 68T94 76H233V355H167L102 356Q80 363 80 393Q80 418 91 425T138 432Q145 432 165 432T200 431H295Q297 429 303 425T310 420T314 415T317 404T317 389T318 363Q318 354 318 314T317 241V76H378H411",567:"75 -91T100 -91T138 -107T152 -144V-150L160 -151H193H203Q241 -151 267 -121Q284 -97 288 -73T292 23V151V355H218L145 356Q123 365 123 387V393Q123 422 145 430H148Q151 430 156 430T169 430T185 430T205 431T227 431T251 431H354Q356 430 360 427T365 424T369 420T372 416T373 410T375 402T376 391T377 376T377 356Q377 345 377 286T376 176Q376 -67 371 -88Q362 -123 342 -151T299 -194Q254 -228 180 -228Q84 -226 56 -177Q49 -162 48 -148Q48 -122 61 -107",697:"211 572Q211 593 226 608T262 623Q281 623 297 610T313 573Q313 561 307 465Q301 370 299 357T284 336Q279 334 262 334Q240 334 231 343Q226 350 225 362T217 465Q211 549 211 572",768:"-409 569Q-409 586 -399 596T-377 610Q-376 610 -372 610T-365 611Q-355 610 -284 588T-210 563Q-195 556 -195 537Q-195 533 -197 522T-208 498T-229 485Q-238 485 -312 508T-388 533Q-400 538 -405 552Q-409 559 -409 569",769:"-297 485Q-315 485 -323 505T-331 537Q-331 556 -316 563Q-307 569 -170 610Q-169 610 -165 610T-157 611Q-141 609 -131 600T-119 584T-117 569Q-117 555 -124 545T-138 533Q-140 531 -214 508T-297 485",770:"-387 460Q-404 460 -416 479T-429 512Q-429 527 -419 534Q-416 536 -347 571T-272 609Q-269 611 -261 611Q-254 610 -182 574Q-168 567 -156 561T-136 550T-123 543T-114 538T-109 535T-105 532T-103 529T-100 525Q-97 518 -97 512Q-97 498 -109 479T-139 460H-141Q-148 460 -209 496L-263 526L-317 496Q-378 460 -387 460",771:"-400 467Q-412 467 -425 480T-438 509Q-437 520 -414 543Q-353 602 -316 609Q-306 611 -301 611Q-279 611 -262 596T-235 566T-221 551Q-206 551 -158 594Q-142 610 -129 610H-125Q-114 610 -101 597T-88 568Q-89 557 -112 534Q-177 469 -220 466Q-247 466 -265 481T-291 511T-305 526Q-320 526 -368 483Q-384 467 -396 467H-400",772:"-429 500Q-440 504 -445 511T-450 522T-452 536Q-452 552 -451 556Q-445 571 -434 574T-379 578Q-369 578 -330 578T-261 577H-96Q-94 575 -90 573T-85 569T-81 564T-77 558T-75 550T-74 538Q-74 522 -78 515T-96 500H-429",774:"-446 579Q-446 611 -412 611H-407Q-383 609 -378 599T-358 587Q-340 583 -263 583H-235Q-159 583 -152 593Q-145 611 -120 611H-117H-115Q-79 611 -79 577Q-80 552 -95 536T-140 514T-191 506T-251 504H-263H-274Q-311 504 -334 505T-386 513T-431 536T-446 579",776:"-421 565Q-421 590 -405 600T-370 611Q-350 611 -345 610Q-308 599 -308 565Q-308 545 -323 532T-359 519H-366H-370Q-405 519 -418 547Q-421 553 -421 565ZM-218 565Q-218 580 -208 593T-179 610Q-177 610 -175 610T-171 611Q-170 612 -158 612Q-130 611 -117 597T-104 565T-116 534T-160 519H-167Q-189 519 -203 532T-218 565",778:"-344 558Q-344 583 -321 601T-262 619Q-225 619 -204 600T-182 560Q-182 536 -205 518T-264 499Q-301 499 -322 519T-344 558ZM-223 559Q-223 570 -234 579T-261 588T-289 580T-303 559Q-303 549 -293 540T-263 530T-234 539T-223 559",780:"-427 525Q-427 542 -417 559T-392 577Q-385 577 -323 553L-263 530L-203 553Q-143 576 -136 576Q-118 576 -109 559T-99 525Q-99 508 -107 502T-161 481Q-177 475 -186 472Q-256 449 -263 449Q-272 449 -339 472T-412 498Q-420 501 -423 508T-427 520V525",913:"191 76Q212 75 220 68T229 38Q229 10 208 1H129H80Q48 1 38 7T28 38Q28 51 29 57T40 69T70 76Q89 76 89 78Q90 79 117 205T173 461T205 599Q212 623 250 623H262H273Q312 623 319 599Q322 591 350 461T406 205T435 78Q435 76 454 76H458Q484 76 493 59Q496 53 496 38Q496 11 478 3Q474 1 395 1H317Q295 8 295 38Q295 65 311 73Q316 75 333 76L348 77V78Q348 80 341 112L334 143H190L183 112Q176 80 176 78Q175 76 178 76Q180 76 191 76ZM318 221Q313 238 288 366T263 519Q263 526 262 527Q261 527 261 520Q261 493 236 365T206 221Q206 219 262 219T318 221",914:"39 1Q17 10 17 32V38V46Q17 65 34 73Q40 76 61 76H84V535H61H54Q27 535 19 553Q17 557 17 573Q17 583 17 587T23 599T39 610Q40 611 179 611Q320 610 332 607Q332 607 339 605Q394 591 427 547T461 454Q461 413 436 378T369 325L358 320Q405 311 443 270T482 169Q482 112 445 64T345 3L334 1H39ZM309 533Q302 535 234 535H168V356H230Q284 357 296 358T323 368Q346 380 361 402T377 452Q377 482 358 505T309 533ZM398 176Q396 218 371 246T315 279Q310 280 237 280H168V76H239Q316 77 327 81Q329 82 334 84Q398 107 398 176",915:"466 611Q468 609 473 606T479 602T483 598T486 593T487 586T488 576T488 562V526V488Q488 452 470 444Q466 442 446 442Q421 442 413 450Q406 457 405 463T404 501V535H185V76H222H239Q260 76 270 69T281 38Q281 12 270 6T209 0H155H104Q48 0 37 5T25 38Q25 59 35 69Q44 76 76 76H101V535H76H64Q36 535 27 552Q25 557 25 573T27 594Q33 606 43 608T106 611H258H466",916:"232 622H237Q242 622 249 622T264 623H293Q295 622 300 619T308 613T314 608T319 601Q322 597 405 316T489 19Q489 9 473 1Q471 0 262 0T51 1Q35 9 35 19Q35 34 118 315T205 601Q214 616 232 622ZM267 501Q266 504 265 510T263 521T261 526V523Q261 508 211 332Q142 91 138 82H386Q385 84 345 224Q281 439 267 501",917:"374 271Q374 241 367 232T332 223Q307 223 299 231Q290 240 290 263V279H173V76H418V118V144Q418 167 426 176T460 186Q491 186 500 166Q502 161 502 93V52Q502 25 499 17T480 1H41Q19 9 19 32V38Q19 63 36 73Q42 76 65 76H89V535H65H55Q44 535 38 537T25 548T19 573Q19 602 41 610H47Q53 610 63 610T88 610T121 610T160 611T204 611T251 611H458Q460 609 465 606T471 602T475 598T478 593T479 586T480 576T480 562V526V488Q480 452 462 444Q458 442 438 442Q413 442 405 450Q398 457 397 463T396 501V535H173V355H290V371Q290 394 299 403T332 412Q363 412 372 392Q374 387 374 317V271",918:"71 1Q60 5 55 11T49 23T48 39V46Q48 56 58 73T131 183Q171 242 197 282L366 535H144V501Q144 470 143 464T135 450Q127 442 102 442H94Q71 442 62 461Q60 466 60 527L61 589Q70 607 83 610H88Q93 610 102 610T124 610T154 610T188 611T227 611T270 611H454Q456 609 461 606T467 601T471 597T474 591T475 584T476 572V565Q476 555 466 538T393 428Q353 369 327 329L158 76H397V120V146Q397 169 405 179T439 189Q470 189 479 169Q481 164 481 95V48Q481 24 478 16T459 1H71",919:"16 571Q16 597 27 604T74 611H125H208Q223 602 226 596T230 573Q230 559 227 551T217 540T204 536T186 535H165V356H359V535H338H333Q306 535 297 552Q295 556 295 573Q295 586 295 590T301 600T317 611H486Q501 602 504 596T508 573Q508 559 505 551T495 540T482 536T464 535H443V76H464H470Q482 76 489 75T502 64T508 38Q508 10 486 1H317Q306 5 301 11T296 21T295 38V44Q295 66 311 73Q318 76 338 76H359V280H165V76H186H192Q204 76 211 75T224 64T230 38Q230 10 208 1H39Q28 5 23 11T18 21T17 38V44Q17 66 33 73Q40 76 60 76H81V535H60Q45 535 38 536T24 545T16 571",920:"102 588Q140 621 240 621Q323 621 335 620Q393 613 422 588Q450 560 459 493T468 306Q468 185 460 118T422 23Q382 -10 289 -10H262H235Q142 -10 102 23Q74 50 65 118T56 306Q56 427 64 494T102 588ZM262 66Q285 66 300 67T329 74T351 86T366 108T376 138T381 181T383 235T384 306Q384 452 371 492T304 544Q296 545 251 545Q230 545 215 543T188 534T169 520T155 497T147 466T143 423T141 371T140 306Q140 247 141 215T146 151T158 107T179 82T212 69T262 66ZM179 356Q187 378 219 378H223Q240 377 249 372T260 360L261 355Q261 353 262 353T263 355Q263 362 272 369Q280 377 304 377H310Q325 377 331 374T346 356V256Q338 241 331 238T309 234H304Q280 234 272 242Q263 249 263 256Q263 258 262 258T261 256Q261 249 252 242Q244 234 220 234H216Q186 234 179 256V356",921:"400 76Q431 76 441 69T452 38Q452 29 452 26T450 18T443 9T430 1H95Q84 6 79 12T73 23T72 38Q72 65 90 73Q96 76 157 76H220V535H157H124Q93 535 83 542T72 573Q72 603 93 610Q97 611 264 611H430Q432 609 436 607T444 602T449 594Q452 588 452 573Q452 546 434 538Q428 535 367 535H304V76H367H400",922:"18 549T18 573T29 604T70 611H118H193Q207 603 210 596T214 573Q214 549 198 538Q191 535 172 535H152V421Q152 344 152 326T153 309L242 422L329 534Q327 535 322 536T314 538T308 542T303 548T300 558T298 573Q298 600 316 608Q322 611 392 611H463Q477 602 481 595T485 573Q485 535 446 535H441H420L281 357L436 77L454 76Q473 75 478 73Q495 62 495 38Q495 10 473 1H345Q334 5 329 11T324 21T323 38Q323 51 324 56T332 68T355 77L233 296L152 192V76H172Q191 76 198 73Q214 63 214 38Q214 9 193 1H41Q18 8 18 38Q18 61 35 73Q42 76 61 76H81V535H61Q42 535 35 538Q18 549 18 573",923:"30 38Q30 57 38 66T70 76Q88 76 88 78Q89 79 117 207T173 466T205 602Q213 617 231 622H236Q241 622 249 622T264 623H294Q315 609 319 602Q321 598 350 468T407 208T435 78Q436 76 454 76Q470 76 478 73Q495 62 495 38Q495 10 473 1H313Q290 10 290 38Q290 56 297 65T310 74T331 76Q350 76 350 78Q349 80 328 176T285 383T263 520Q263 526 262 527Q261 527 261 521Q261 497 240 388T198 181T174 78Q174 76 193 76Q220 75 227 65Q234 56 234 38Q234 28 234 24T228 13T212 1H52Q30 9 30 32V38",924:"50 535Q37 536 31 537T18 547T12 573Q12 598 22 604T62 611H91H121Q147 611 158 607T178 587Q183 579 222 446T261 293Q261 289 262 288Q263 288 263 292Q263 311 298 434T346 588Q353 603 365 607T402 611H435H450Q488 611 500 605T512 573Q512 556 506 547T493 537T474 535H459V76H474Q487 75 493 74T505 64T512 38Q512 11 494 3Q490 1 424 1H386Q355 1 345 7T335 38Q335 55 341 64T354 74T373 76H388V302Q388 512 387 519Q382 482 346 359T304 228Q292 204 262 204T220 228Q215 237 179 359T137 519Q136 512 136 302V76H151Q164 75 170 74T182 64T189 38Q189 11 171 3Q167 1 101 1H63Q32 1 22 7T12 38Q12 55 18 64T31 74T50 76H65V535H50",925:"20 571Q20 598 30 604T73 611H105H136Q152 611 160 611T177 607T189 601T198 587T206 568T217 537T231 497Q354 142 365 95L368 84V535H347H342Q314 535 306 552Q304 556 304 573Q304 586 304 590T310 600T326 611H482Q497 602 500 596T504 573Q504 559 501 551T491 540T478 536T460 535H439V25Q432 7 424 4T389 0H374Q334 0 322 31L293 115Q171 468 159 517L156 528V76H177H183Q195 76 202 75T215 64T221 38Q221 10 199 1H43Q32 5 27 11T22 21T21 38V44Q21 66 37 73Q44 76 64 76H85V535H64Q49 535 42 536T28 545T20 571",926:"37 555V569Q37 605 60 610H66Q71 610 81 610T105 610T137 610T175 611T217 611T264 611H465Q467 609 471 606T477 602T481 599T484 594T485 588T487 580T487 570T487 554Q487 526 486 520T478 506Q470 498 445 498T412 506Q403 515 403 531V539H121V531Q121 498 86 498H79H71Q48 498 39 517Q37 522 37 555ZM109 318V346Q109 366 113 374T132 389H170Q193 379 193 359V354H331V359Q331 379 354 389H392Q407 381 411 373T415 342V318V290Q415 270 411 262T392 247H354Q331 257 331 277V282H193V277Q193 257 170 247H132Q117 255 113 263T109 294V318ZM56 1Q41 7 37 15T33 42V58V80Q33 101 41 110T77 119Q87 118 91 118T103 114T114 103T117 83V72H407V83Q407 101 416 110T449 119T482 110Q489 103 490 97T491 59V41Q491 24 487 16T469 1H56",927:"102 588Q140 621 240 621Q323 621 335 620Q393 613 422 588Q450 560 459 493T468 306Q468 185 460 118T422 23Q382 -10 289 -10H262H235Q142 -10 102 23Q74 50 65 118T56 306Q56 427 64 494T102 588ZM363 513Q357 523 347 530T324 540T302 544T280 546H268Q192 546 167 521Q150 501 145 452T140 300Q140 235 142 197T151 130T172 89T207 71T262 65Q317 65 341 81T374 144T384 300Q384 474 363 513",928:"60 535Q45 535 38 536T24 545T16 571Q16 603 36 609Q41 611 264 611H486Q501 602 504 596T508 573Q508 559 505 551T495 540T482 536T464 535H443V76H464H470Q482 76 489 75T502 64T508 38Q508 10 486 1H317Q306 5 301 11T296 21T295 38V44Q295 66 311 73Q318 76 338 76H359V535H165V76H186H192Q204 76 211 75T224 64T230 38Q230 10 208 1H39Q28 5 23 11T18 21T17 38V44Q17 66 33 73Q40 76 60 76H81V535H60",929:"41 1Q19 9 19 32V38Q19 63 36 73Q42 76 65 76H89V535H65H55Q38 535 29 543T19 576Q19 603 41 610H49Q57 610 70 610T100 610T136 611T175 611Q190 611 216 611T255 612Q321 612 363 598T441 537Q480 486 480 427V421Q480 354 447 311T378 251Q339 230 275 230H239H173V76H197Q220 76 227 73Q244 62 244 38Q244 10 222 1H41ZM396 421Q396 461 369 491T300 533Q294 534 233 535H173V306H233Q294 307 300 308Q345 319 370 352T396 421",931:"40 575Q40 576 40 579T41 583T41 588T43 593T46 597T50 602T55 606T63 610H68Q74 610 84 610T108 610T139 610T176 611T219 611T264 611H462Q464 609 469 606T475 602T479 598T482 593T483 586T484 576T484 562V526V488Q484 452 466 444Q462 442 442 442Q417 442 409 450Q402 457 401 463T400 501V535H153Q153 533 218 430Q233 405 250 378T276 336T286 319Q290 311 290 307Q290 296 239 211Q229 194 223 184L161 78H400V112Q400 142 401 149T409 163Q418 172 442 172Q473 172 482 152Q484 147 484 86V49Q484 25 481 17T462 1H63Q41 10 41 31Q41 39 43 44Q43 45 81 109T157 238L195 303Q195 307 119 430T41 557T40 575",932:"129 38Q129 51 129 55T135 65T151 76H220V535H110V501Q110 470 109 464T101 450Q93 442 68 442H60Q37 442 28 461Q26 466 26 527L27 589Q36 607 49 610H55Q61 610 72 610T97 610T131 610T170 611T215 611T264 611H476Q478 609 483 606T489 602T493 598T496 593T497 586T498 576T498 562V526V488Q498 452 480 444Q476 442 456 442Q431 442 423 450Q416 457 415 463T414 501V535H304V76H374Q389 67 392 61T396 38Q396 10 374 1H151Q140 5 135 11T130 21T129 38",933:"38 494Q38 549 74 585T152 621Q168 621 179 619T209 606T241 566T262 492Q262 494 265 507T270 526T276 547T285 569T298 589T315 606T337 617T365 622Q416 622 451 584T486 494Q486 470 469 461Q464 459 445 459H437Q416 459 406 476Q404 479 403 502T393 541T365 558Q350 558 340 548T323 519T312 475T307 419T305 354T304 282Q304 254 304 239V76H358Q372 67 376 60T380 38Q380 10 358 1H167Q145 9 145 32V38Q145 54 148 60T167 76H220V239Q220 256 220 289T220 338T219 383T217 426T214 463T209 497T201 522T189 543T174 555Q168 558 159 558Q139 558 131 541T121 502T118 476Q108 459 84 459H79H71Q38 459 38 494",934:"139 573V578Q139 603 161 610H166Q172 610 182 610T204 610T232 611T264 611H364Q379 602 382 595T385 573Q385 544 364 536L334 535H304V441H306Q313 440 325 438T367 426T421 403T464 364T483 306Q483 251 430 216T317 172Q315 172 313 172T308 170H306H304V76H364Q379 67 382 60T385 38Q385 28 385 24T379 12T364 1H161Q139 8 139 33V38Q139 46 139 49T141 58T148 68T161 76H220V170H218Q211 171 199 173T157 185T103 208T60 248T41 306Q41 361 94 396T208 439Q210 439 212 439T216 440L218 441H220V535H190L161 536Q139 543 139 573ZM124 306Q124 286 147 271T194 252L218 247Q220 247 220 306V364H218Q212 364 192 359T148 340T124 306ZM400 305Q400 325 377 340T330 360L306 364Q304 364 304 306Q304 247 306 247Q312 247 332 252T376 271T400 305",935:"39 571Q39 597 49 604T93 611H141H218Q233 602 236 595T239 573Q239 538 210 535Q202 535 202 534T215 507T243 454L257 428L307 535H298Q266 538 266 573Q266 584 267 588T273 598T289 611H366H401Q442 611 454 605T466 573Q466 546 448 538Q442 535 421 535H398L299 327Q299 323 362 201L426 77L449 76Q467 76 475 75T489 65T495 38Q495 11 477 3Q473 1 395 1H317Q295 8 295 38Q295 73 325 76L334 77Q333 78 314 117T276 196L257 235L239 196Q221 157 204 118T186 77Q190 76 196 76Q211 74 218 67T227 55T228 38Q228 28 227 24T221 13T206 1H50Q28 9 28 32V38Q28 63 45 73Q51 76 73 76H96L214 324Q215 327 162 431L108 535H85H79Q67 535 60 536T46 546T39 571",936:"37 439Q38 451 40 457T52 469T77 475H79Q96 475 107 473T132 456T152 411Q152 409 153 396T154 372V365Q154 291 198 261Q215 251 219 251Q220 251 220 393V535H193L167 536Q145 545 145 567V573Q145 602 167 610Q168 611 264 611H358Q372 602 376 595T380 573Q380 545 358 536L331 535H304V393Q304 251 305 251Q307 251 310 252T323 259T339 272T355 295T367 331Q368 337 370 372Q370 382 371 395T372 411Q376 434 384 448T404 467T425 474T447 475Q461 474 467 473T480 463T487 437Q487 419 481 412Q476 403 459 398Q457 390 453 344T431 263Q415 228 383 205T332 177T306 172H304V76H358Q372 67 376 60T380 38Q380 10 358 1H167Q145 9 145 32V38Q145 54 148 60T167 76H220V172H218Q211 172 192 177T141 205T93 263Q74 298 71 343T67 391L66 398Q47 403 42 411T37 433V439",937:"40 404Q40 498 106 560T258 622Q357 622 420 558T484 406Q484 359 469 311T428 205T392 117Q382 84 382 78Q382 76 402 76H421V87Q421 110 431 116T457 123Q474 123 483 114Q490 107 491 100T492 61V42Q492 11 474 3Q470 1 397 1H324Q302 9 302 32V39Q302 104 351 225T400 405Q400 462 361 504T262 546Q200 546 162 504T124 405Q124 346 171 230T223 42V36Q223 11 205 3Q201 1 128 1H55Q39 7 33 23L32 60V80Q32 94 34 102T44 116T68 123Q103 123 103 87V76H123Q142 76 142 78Q142 100 117 156T66 282T40 404",8215:"57 -60Q57 -33 86 -25H438Q468 -34 468 -60T438 -95H86Q57 -86 57 -60",8242:"211 572Q211 593 226 608T262 623Q281 623 297 610T313 573Q313 561 307 465Q301 370 299 357T284 336Q279 334 262 334Q240 334 231 343Q226 350 225 362T217 465Q211 549 211 572",8260:"94 -83Q78 -83 68 -73T58 -48Q58 -44 60 -36Q62 -31 227 314T399 673Q410 694 431 694Q445 694 455 684T466 659Q466 656 464 648Q463 643 298 298T125 -62Q114 -83 94 -83",8710:"232 622H237Q242 622 249 622T264 623H293Q295 622 300 619T308 613T314 608T319 601Q322 597 405 316T489 19Q489 9 473 1Q471 0 262 0T51 1Q35 9 35 19Q35 34 118 315T205 601Q214 616 232 622ZM267 501Q266 504 265 510T263 521T261 526V523Q261 508 211 332Q142 91 138 82H386Q385 84 345 224Q281 439 267 501"},{8243:"′′",8244:"′′′",8279:"′′′′"});var normal$1={},normal={};Object.defineProperty(normal,"__esModule",{value:!0}),normal.normal=void 0,normal.normal={32:[0,0,.25],33:[.716,0,.278],34:[.694,-.379,.5],35:[.694,.194,.833],36:[.75,.056,.5],37:[.75,.056,.833],38:[.716,.022,.778],39:[.694,-.379,.278],40:[.75,.25,.389],41:[.75,.25,.389],42:[.75,-.32,.5],43:[.583,.082,.778],44:[.121,.194,.278],45:[.252,-.179,.333],46:[.12,0,.278],47:[.75,.25,.5],48:[.666,.022,.5],49:[.666,0,.5],50:[.666,0,.5],51:[.665,.022,.5],52:[.677,0,.5],53:[.666,.022,.5],54:[.666,.022,.5],55:[.676,.022,.5],56:[.666,.022,.5],57:[.666,.022,.5],58:[.43,0,.278],59:[.43,.194,.278],60:[.54,.04,.778],61:[.583,.082,.778],62:[.54,.04,.778],63:[.705,0,.472],64:[.705,.011,.778],65:[.716,0,.75],66:[.683,0,.708],67:[.705,.021,.722],68:[.683,0,.764],69:[.68,0,.681],70:[.68,0,.653],71:[.705,.022,.785],72:[.683,0,.75],73:[.683,0,.361],74:[.683,.022,.514],75:[.683,0,.778],76:[.683,0,.625],77:[.683,0,.917],78:[.683,0,.75],79:[.705,.022,.778],80:[.683,0,.681],81:[.705,.193,.778],82:[.683,.022,.736],83:[.705,.022,.556],84:[.677,0,.722],85:[.683,.022,.75],86:[.683,.022,.75],87:[.683,.022,1.028],88:[.683,0,.75],89:[.683,0,.75],90:[.683,0,.611],91:[.75,.25,.278],92:[.75,.25,.5],93:[.75,.25,.278],94:[.694,-.531,.5],95:[-.025,.062,.5],96:[.699,-.505,.5],97:[.448,.011,.5],98:[.694,.011,.556],99:[.448,.011,.444],100:[.694,.011,.556],101:[.448,.011,.444],102:[.705,0,.306,{ic:.066}],103:[.453,.206,.5],104:[.694,0,.556],105:[.669,0,.278],106:[.669,.205,.306],107:[.694,0,.528],108:[.694,0,.278],109:[.442,0,.833],110:[.442,0,.556],111:[.448,.01,.5],112:[.442,.194,.556],113:[.442,.194,.528],114:[.442,0,.392],115:[.448,.011,.394],116:[.615,.01,.389],117:[.442,.011,.556],118:[.431,.011,.528],119:[.431,.011,.722],120:[.431,0,.528],121:[.431,.204,.528],122:[.431,0,.444],123:[.75,.25,.5],124:[.75,.249,.278],125:[.75,.25,.5],126:[.318,-.215,.5],160:[0,0,.25],163:[.714,.011,.769],165:[.683,0,.75],168:[.669,-.554,.5],172:[.356,-.089,.667],174:[.709,.175,.947],175:[.59,-.544,.5],176:[.715,-.542,.5],177:[.666,0,.778],180:[.699,-.505,.5],183:[.31,-.19,.278],215:[.491,-.009,.778],240:[.749,.021,.556],247:[.537,.036,.778],305:[.442,0,.278,{sk:.0278}],567:[.442,.205,.306,{sk:.0833}],697:[.56,-.043,.275],710:[.694,-.531,.5],711:[.644,-.513,.5],713:[.59,-.544,.5],714:[.699,-.505,.5],715:[.699,-.505,.5],728:[.694,-.515,.5],729:[.669,-.549,.5],730:[.715,-.542,.5],732:[.668,-.565,.5],768:[.699,-.505,0],769:[.699,-.505,0],770:[.694,-.531,0],771:[.668,-.565,0],772:[.59,-.544,0],774:[.694,-.515,0],775:[.669,-.549,0],776:[.669,-.554,0],778:[.715,-.542,0],779:[.701,-.51,0],780:[.644,-.513,0],824:[.716,.215,0],913:[.716,0,.75],914:[.683,0,.708],915:[.68,0,.625],916:[.716,0,.833],917:[.68,0,.681],918:[.683,0,.611],919:[.683,0,.75],920:[.705,.022,.778],921:[.683,0,.361],922:[.683,0,.778],923:[.716,0,.694],924:[.683,0,.917],925:[.683,0,.75],926:[.677,0,.667],927:[.705,.022,.778],928:[.68,0,.75],929:[.683,0,.681],931:[.683,0,.722],932:[.677,0,.722],933:[.705,0,.778],934:[.683,0,.722],935:[.683,0,.75],936:[.683,0,.778],937:[.704,0,.722],8192:[0,0,.5],8193:[0,0,1],8194:[0,0,.5],8195:[0,0,1],8196:[0,0,.333],8197:[0,0,.25],8198:[0,0,.167],8201:[0,0,.167],8202:[0,0,.1],8203:[0,0,0],8204:[0,0,0],8211:[.285,-.248,.5],8212:[.285,-.248,1],8213:[.285,-.248,1],8214:[.75,.25,.5],8215:[-.025,.062,.5],8216:[.694,-.379,.278],8217:[.694,-.379,.278],8220:[.694,-.379,.5],8221:[.694,-.379,.5],8224:[.705,.216,.444],8225:[.705,.205,.444],8226:[.444,-.055,.5],8230:[.12,0,1.172],8242:[.56,-.043,.275],8243:[.56,0,.55],8244:[.56,0,.825],8245:[.56,-.043,.275],8246:[.56,0,.55],8247:[.56,0,.825],8254:[.59,-.544,.5],8260:[.75,.25,.5],8279:[.56,0,1.1],8288:[0,0,0],8289:[0,0,0],8290:[0,0,0],8291:[0,0,0],8292:[0,0,0],8407:[.714,-.516,.5],8450:[.702,.019,.722],8459:[.717,.036,.969,{ic:.272,sk:.333}],8460:[.666,.133,.72],8461:[.683,0,.778],8462:[.694,.011,.576,{sk:-.0278}],8463:[.695,.013,.54,{ic:.022}],8464:[.717,.017,.809,{ic:.137,sk:.333}],8465:[.686,.026,.554],8466:[.717,.017,.874,{ic:.161,sk:.306}],8467:[.705,.02,.417,{sk:.111}],8469:[.683,.02,.722],8472:[.453,.216,.636,{sk:.111}],8473:[.683,0,.611],8474:[.701,.181,.778],8475:[.717,.017,.85,{ic:.037,sk:.194}],8476:[.686,.026,.828],8477:[.683,0,.722],8484:[.683,0,.667],8486:[.704,0,.722],8487:[.684,.022,.722],8488:[.729,.139,.602],8492:[.708,.028,.908,{ic:.02,sk:.194}],8493:[.685,.024,.613],8496:[.707,.008,.562,{ic:.156,sk:.139}],8497:[.735,.036,.895,{ic:.095,sk:.222}],8498:[.695,0,.556],8499:[.721,.05,1.08,{ic:.136,sk:.444}],8501:[.694,0,.611],8502:[.763,.021,.667,{ic:.02}],8503:[.764,.043,.444],8504:[.764,.043,.667],8513:[.705,.023,.639],8592:[.511,.011,1],8593:[.694,.193,.5],8594:[.511,.011,1],8595:[.694,.194,.5],8596:[.511,.011,1],8597:[.772,.272,.5],8598:[.72,.195,1],8599:[.72,.195,1],8600:[.695,.22,1],8601:[.695,.22,1],8602:[.437,-.06,1],8603:[.437,-.06,1],8606:[.417,-.083,1],8608:[.417,-.083,1],8610:[.417,-.083,1.111],8611:[.417,-.083,1.111],8614:[.511,.011,1],8617:[.511,.011,1.126],8618:[.511,.011,1.126],8619:[.575,.041,1],8620:[.575,.041,1],8621:[.417,-.083,1.389],8622:[.437,-.06,1],8624:[.722,0,.5],8625:[.722,0,.5],8630:[.461,0,1],8631:[.46,0,1],8634:[.65,.083,.778],8635:[.65,.083,.778],8636:[.511,-.23,1],8637:[.27,.011,1],8638:[.694,.194,.417],8639:[.694,.194,.417],8640:[.511,-.23,1],8641:[.27,.011,1],8642:[.694,.194,.417],8643:[.694,.194,.417],8644:[.667,0,1],8646:[.667,0,1],8647:[.583,.083,1],8648:[.694,.193,.833],8649:[.583,.083,1],8650:[.694,.194,.833],8651:[.514,.014,1],8652:[.671,.011,1],8653:[.534,.035,1],8654:[.534,.037,1],8655:[.534,.035,1],8656:[.525,.024,1],8657:[.694,.194,.611],8658:[.525,.024,1],8659:[.694,.194,.611],8660:[.526,.025,1],8661:[.772,.272,.611],8666:[.611,.111,1],8667:[.611,.111,1],8669:[.417,-.083,1],8672:[.437,-.064,1.334],8674:[.437,-.064,1.334],8704:[.694,.022,.556],8705:[.846,.021,.5],8706:[.715,.022,.531,{ic:.035,sk:.0833}],8707:[.694,0,.556],8708:[.716,.215,.556],8709:[.772,.078,.5],8710:[.716,0,.833],8711:[.683,.033,.833],8712:[.54,.04,.667],8713:[.716,.215,.667],8715:[.54,.04,.667],8716:[.716,.215,.667],8717:[.44,0,.429,{ic:.027}],8719:[.75,.25,.944],8720:[.75,.25,.944],8721:[.75,.25,1.056],8722:[.583,.082,.778],8723:[.5,.166,.778],8724:[.766,.093,.778],8725:[.75,.25,.5],8726:[.75,.25,.5],8727:[.465,-.035,.5],8728:[.444,-.055,.5],8729:[.444,-.055,.5],8730:[.8,.2,.833,{ic:.02}],8733:[.442,.011,.778],8734:[.442,.011,1],8736:[.694,0,.722],8737:[.714,.02,.722],8738:[.551,.051,.722],8739:[.75,.249,.278],8740:[.75,.252,.278,{ic:.019}],8741:[.75,.25,.5],8742:[.75,.25,.5,{ic:.018}],8743:[.598,.022,.667],8744:[.598,.022,.667],8745:[.598,.022,.667],8746:[.598,.022,.667],8747:[.716,.216,.417,{ic:.055}],8748:[.805,.306,.819,{ic:.138}],8749:[.805,.306,1.166,{ic:.138}],8750:[.805,.306,.472,{ic:.138}],8756:[.471,.082,.667],8757:[.471,.082,.667],8764:[.367,-.133,.778],8765:[.367,-.133,.778],8768:[.583,.083,.278],8769:[.467,-.032,.778],8770:[.463,-.034,.778],8771:[.464,-.036,.778],8772:[.716,.215,.778],8773:[.589,-.022,.778],8775:[.652,.155,.778],8776:[.483,-.055,.778],8777:[.716,.215,.778],8778:[.579,.039,.778],8781:[.484,-.016,.778],8782:[.492,-.008,.778],8783:[.492,-.133,.778],8784:[.67,-.133,.778],8785:[.609,.108,.778],8786:[.601,.101,.778],8787:[.601,.102,.778],8790:[.367,-.133,.778],8791:[.721,-.133,.778],8796:[.859,-.133,.778],8800:[.716,.215,.778],8801:[.464,-.036,.778],8802:[.716,.215,.778],8804:[.636,.138,.778],8805:[.636,.138,.778],8806:[.753,.175,.778],8807:[.753,.175,.778],8808:[.752,.286,.778],8809:[.752,.286,.778],8810:[.568,.067,1],8811:[.567,.067,1],8812:[.75,.25,.5],8813:[.716,.215,.778],8814:[.708,.209,.778],8815:[.708,.209,.778],8816:[.801,.303,.778],8817:[.801,.303,.778],8818:[.732,.228,.778],8819:[.732,.228,.778],8820:[.732,.228,.778],8821:[.732,.228,.778],8822:[.681,.253,.778],8823:[.681,.253,.778],8824:[.716,.253,.778],8825:[.716,.253,.778],8826:[.539,.041,.778],8827:[.539,.041,.778],8828:[.58,.153,.778],8829:[.58,.154,.778],8830:[.732,.228,.778],8831:[.732,.228,.778],8832:[.705,.208,.778],8833:[.705,.208,.778],8834:[.54,.04,.778],8835:[.54,.04,.778],8836:[.716,.215,.778],8837:[.716,.215,.778],8838:[.636,.138,.778],8839:[.636,.138,.778],8840:[.801,.303,.778],8841:[.801,.303,.778],8842:[.635,.241,.778],8843:[.635,.241,.778],8846:[.598,.022,.667],8847:[.539,.041,.778],8848:[.539,.041,.778],8849:[.636,.138,.778],8850:[.636,.138,.778],8851:[.598,0,.667],8852:[.598,0,.667],8853:[.583,.083,.778],8854:[.583,.083,.778],8855:[.583,.083,.778],8856:[.583,.083,.778],8857:[.583,.083,.778],8858:[.582,.082,.778],8859:[.582,.082,.778],8861:[.582,.082,.778],8862:[.689,0,.778],8863:[.689,0,.778],8864:[.689,0,.778],8865:[.689,0,.778],8866:[.694,0,.611],8867:[.694,0,.611],8868:[.668,0,.778],8869:[.668,0,.778],8872:[.75,.249,.867],8873:[.694,0,.722],8874:[.694,0,.889],8876:[.695,0,.611],8877:[.695,0,.611],8878:[.695,0,.722],8879:[.695,0,.722],8882:[.539,.041,.778],8883:[.539,.041,.778],8884:[.636,.138,.778],8885:[.636,.138,.778],8888:[.408,-.092,1.111],8890:[.431,.212,.556],8891:[.716,0,.611],8892:[.716,0,.611],8896:[.75,.249,.833],8897:[.75,.249,.833],8898:[.75,.249,.833],8899:[.75,.249,.833],8900:[.488,-.012,.5],8901:[.31,-.19,.278],8902:[.486,-.016,.5],8903:[.545,.044,.778],8904:[.505,.005,.9],8905:[.492,-.008,.778],8906:[.492,-.008,.778],8907:[.694,.022,.778],8908:[.694,.022,.778],8909:[.464,-.036,.778],8910:[.578,.021,.76],8911:[.578,.022,.76],8912:[.54,.04,.778],8913:[.54,.04,.778],8914:[.598,.022,.667],8915:[.598,.022,.667],8916:[.736,.022,.667],8918:[.541,.041,.778],8919:[.541,.041,.778],8920:[.568,.067,1.333],8921:[.568,.067,1.333],8922:[.886,.386,.778],8923:[.886,.386,.778],8926:[.734,0,.778],8927:[.734,0,.778],8928:[.801,.303,.778],8929:[.801,.303,.778],8930:[.716,.215,.778],8931:[.716,.215,.778],8934:[.73,.359,.778],8935:[.73,.359,.778],8936:[.73,.359,.778],8937:[.73,.359,.778],8938:[.706,.208,.778],8939:[.706,.208,.778],8940:[.802,.303,.778],8941:[.801,.303,.778],8942:[1.3,.03,.278],8943:[.31,-.19,1.172],8945:[1.52,-.1,1.282],8965:[.716,0,.611],8966:[.813,.097,.611],8968:[.75,.25,.444],8969:[.75,.25,.444],8970:[.75,.25,.444],8971:[.75,.25,.444],8988:[.694,-.306,.5],8989:[.694,-.306,.5],8990:[.366,.022,.5],8991:[.366,.022,.5],8994:[.388,-.122,1],8995:[.378,-.134,1],9001:[.75,.25,.389],9002:[.75,.25,.389],9136:[.744,.244,.412],9137:[.744,.244,.412],9168:[.602,0,.667],9416:[.709,.175,.902],9484:[.694,-.306,.5],9488:[.694,-.306,.5],9492:[.366,.022,.5],9496:[.366,.022,.5],9585:[.694,.195,.889],9586:[.694,.195,.889],9632:[.689,0,.778],9633:[.689,0,.778],9642:[.689,0,.778],9650:[.575,.02,.722],9651:[.716,0,.889],9652:[.575,.02,.722],9653:[.716,0,.889],9654:[.539,.041,.778],9656:[.539,.041,.778],9657:[.505,.005,.5],9660:[.576,.019,.722],9661:[.5,.215,.889],9662:[.576,.019,.722],9663:[.5,.215,.889],9664:[.539,.041,.778],9666:[.539,.041,.778],9667:[.505,.005,.5],9674:[.716,.132,.667],9711:[.715,.215,1],9723:[.689,0,.778],9724:[.689,0,.778],9733:[.694,.111,.944],9824:[.727,.13,.778],9825:[.716,.033,.778],9826:[.727,.162,.778],9827:[.726,.13,.778],9837:[.75,.022,.389],9838:[.734,.223,.389],9839:[.723,.223,.389],10003:[.706,.034,.833],10016:[.716,.022,.833],10072:[.75,.249,.278],10216:[.75,.25,.389],10217:[.75,.25,.389],10222:[.744,.244,.412],10223:[.744,.244,.412],10229:[.511,.011,1.609],10230:[.511,.011,1.638],10231:[.511,.011,1.859],10232:[.525,.024,1.609],10233:[.525,.024,1.638],10234:[.525,.024,1.858],10236:[.511,.011,1.638],10731:[.716,.132,.667],10744:[.716,.215,.778],10752:[.75,.25,1.111],10753:[.75,.25,1.111],10754:[.75,.25,1.111],10756:[.75,.249,.833],10758:[.75,.249,.833],10764:[.805,.306,1.638,{ic:.138}],10799:[.491,-.009,.778],10815:[.683,0,.75],10846:[.813,.097,.611],10877:[.636,.138,.778],10878:[.636,.138,.778],10885:[.762,.29,.778],10886:[.762,.29,.778],10887:[.635,.241,.778],10888:[.635,.241,.778],10889:[.761,.387,.778],10890:[.761,.387,.778],10891:[1.003,.463,.778],10892:[1.003,.463,.778],10901:[.636,.138,.778],10902:[.636,.138,.778],10927:[.636,.138,.778],10928:[.636,.138,.778],10933:[.752,.286,.778],10934:[.752,.286,.778],10935:[.761,.294,.778],10936:[.761,.294,.778],10937:[.761,.337,.778],10938:[.761,.337,.778],10949:[.753,.215,.778],10950:[.753,.215,.778],10955:[.783,.385,.778],10956:[.783,.385,.778],12296:[.75,.25,.389],12297:[.75,.25,.389],57350:[.43,.023,.222,{ic:.018}],57351:[.431,.024,.389,{ic:.018}],57352:[.605,.085,.778],57353:[.434,.006,.667,{ic:.067}],57356:[.752,.284,.778],57357:[.752,.284,.778],57358:[.919,.421,.778],57359:[.801,.303,.778],57360:[.801,.303,.778],57361:[.919,.421,.778],57366:[.828,.33,.778],57367:[.752,.332,.778],57368:[.828,.33,.778],57369:[.752,.333,.778],57370:[.634,.255,.778],57371:[.634,.254,.778],119808:[.698,0,.869],119809:[.686,0,.818],119810:[.697,.011,.831],119811:[.686,0,.882],119812:[.68,0,.756],119813:[.68,0,.724],119814:[.697,.01,.904],119815:[.686,0,.9],119816:[.686,0,.436],119817:[.686,.011,.594],119818:[.686,0,.901],119819:[.686,0,.692],119820:[.686,0,1.092],119821:[.686,0,.9],119822:[.696,.01,.864],119823:[.686,0,.786],119824:[.696,.193,.864],119825:[.686,.011,.862],119826:[.697,.011,.639],119827:[.675,0,.8],119828:[.686,.011,.885],119829:[.686,.007,.869],119830:[.686,.007,1.189],119831:[.686,0,.869],119832:[.686,0,.869],119833:[.686,0,.703],119834:[.453,.006,.559],119835:[.694,.006,.639],119836:[.453,.006,.511],119837:[.694,.006,.639],119838:[.452,.006,.527],119839:[.7,0,.351,{ic:.101}],119840:[.455,.201,.575],119841:[.694,0,.639],119842:[.695,0,.319],119843:[.695,.2,.351],119844:[.694,0,.607],119845:[.694,0,.319],119846:[.45,0,.958],119847:[.45,0,.639],119848:[.452,.005,.575],119849:[.45,.194,.639],119850:[.45,.194,.607],119851:[.45,0,.474],119852:[.453,.006,.454],119853:[.635,.005,.447],119854:[.45,.006,.639],119855:[.444,0,.607],119856:[.444,0,.831],119857:[.444,0,.607],119858:[.444,.2,.607],119859:[.444,0,.511],119860:[.716,0,.75,{sk:.139}],119861:[.683,0,.759,{sk:.0833}],119862:[.705,.022,.715,{ic:.045,sk:.0833}],119863:[.683,0,.828,{sk:.0556}],119864:[.68,0,.738,{ic:.026,sk:.0833}],119865:[.68,0,.643,{ic:.106,sk:.0833}],119866:[.705,.022,.786,{sk:.0833}],119867:[.683,0,.831,{ic:.057,sk:.0556}],119868:[.683,0,.44,{ic:.064,sk:.111}],119869:[.683,.022,.555,{ic:.078,sk:.167}],119870:[.683,0,.849,{ic:.04,sk:.0556}],119871:[.683,0,.681,{sk:.0278}],119872:[.683,0,.97,{ic:.081,sk:.0833}],119873:[.683,0,.803,{ic:.085,sk:.0833}],119874:[.704,.022,.763,{sk:.0833}],119875:[.683,0,.642,{ic:.109,sk:.0833}],119876:[.704,.194,.791,{sk:.0833}],119877:[.683,.021,.759,{sk:.0833}],119878:[.705,.022,.613,{ic:.032,sk:.0833}],119879:[.677,0,.584,{ic:.12,sk:.0833}],119880:[.683,.022,.683,{ic:.084,sk:.0278}],119881:[.683,.022,.583,{ic:.186}],119882:[.683,.022,.944,{ic:.104}],119883:[.683,0,.828,{ic:.024,sk:.0833}],119884:[.683,0,.581,{ic:.182}],119885:[.683,0,.683,{ic:.04,sk:.0833}],119886:[.441,.01,.529],119887:[.694,.011,.429],119888:[.442,.011,.433,{sk:.0556}],119889:[.694,.01,.52,{sk:.167}],119890:[.442,.011,.466,{sk:.0556}],119891:[.705,.205,.49,{ic:.06,sk:.167}],119892:[.442,.205,.477,{sk:.0278}],119894:[.661,.011,.345],119895:[.661,.204,.412],119896:[.694,.011,.521],119897:[.694,.011,.298,{sk:.0833}],119898:[.442,.011,.878],119899:[.442,.011,.6],119900:[.441,.011,.485,{sk:.0556}],119901:[.442,.194,.503,{sk:.0833}],119902:[.442,.194,.446,{ic:.014,sk:.0833}],119903:[.442,.011,.451,{sk:.0556}],119904:[.442,.01,.469,{sk:.0556}],119905:[.626,.011,.361,{sk:.0833}],119906:[.442,.011,.572,{sk:.0278}],119907:[.443,.011,.485,{sk:.0278}],119908:[.443,.011,.716,{sk:.0833}],119909:[.442,.011,.572,{sk:.0278}],119910:[.442,.205,.49,{sk:.0556}],119911:[.442,.011,.465,{sk:.0556}],119912:[.711,0,.869,{sk:.16}],119913:[.686,0,.866,{sk:.0958}],119914:[.703,.017,.817,{ic:.038,sk:.0958}],119915:[.686,0,.938,{sk:.0639}],119916:[.68,0,.81,{ic:.015,sk:.0958}],119917:[.68,0,.689,{ic:.12,sk:.0958}],119918:[.703,.016,.887,{sk:.0958}],119919:[.686,0,.982,{ic:.045,sk:.0639}],119920:[.686,0,.511,{ic:.062,sk:.128}],119921:[.686,.017,.631,{ic:.063,sk:.192}],119922:[.686,0,.971,{ic:.032,sk:.0639}],119923:[.686,0,.756,{sk:.0319}],119924:[.686,0,1.142,{ic:.077,sk:.0958}],119925:[.686,0,.95,{ic:.077,sk:.0958}],119926:[.703,.017,.837,{sk:.0958}],119927:[.686,0,.723,{ic:.124,sk:.0958}],119928:[.703,.194,.869,{sk:.0958}],119929:[.686,.017,.872,{sk:.0958}],119930:[.703,.017,.693,{ic:.021,sk:.0958}],119931:[.675,0,.637,{ic:.135,sk:.0958}],119932:[.686,.016,.8,{ic:.077,sk:.0319}],119933:[.686,.016,.678,{ic:.208}],119934:[.686,.017,1.093,{ic:.114}],119935:[.686,0,.947,{sk:.0958}],119936:[.686,0,.675,{ic:.201}],119937:[.686,0,.773,{ic:.032,sk:.0958}],119938:[.452,.008,.633],119939:[.694,.008,.521],119940:[.451,.008,.513,{sk:.0639}],119941:[.694,.008,.61,{sk:.192}],119942:[.452,.008,.554,{sk:.0639}],119943:[.701,.201,.568,{ic:.056,sk:.192}],119944:[.452,.202,.545,{sk:.0319}],119945:[.694,.008,.668,{sk:-.0319}],119946:[.694,.008,.405],119947:[.694,.202,.471],119948:[.694,.008,.604],119949:[.694,.008,.348,{sk:.0958}],119950:[.452,.008,1.032],119951:[.452,.008,.713],119952:[.452,.008,.585,{sk:.0639}],119953:[.452,.194,.601,{sk:.0958}],119954:[.452,.194,.542,{sk:.0958}],119955:[.452,.008,.529,{sk:.0639}],119956:[.451,.008,.531,{sk:.0639}],119957:[.643,.007,.415,{sk:.0958}],119958:[.452,.008,.681,{sk:.0319}],119959:[.453,.008,.567,{sk:.0319}],119960:[.453,.008,.831,{sk:.0958}],119961:[.452,.008,.659,{sk:.0319}],119962:[.452,.202,.59,{sk:.0639}],119963:[.452,.008,.555,{sk:.0639}],119964:[.717,.008,.803,{ic:.213,sk:.389}],119966:[.728,.026,.666,{ic:.153,sk:.278}],119967:[.708,.031,.774,{ic:.081,sk:.111}],119970:[.717,.037,.61,{ic:.128,sk:.25}],119973:[.717,.314,1.052,{ic:.081,sk:.417}],119974:[.717,.037,.914,{ic:.29,sk:.361}],119977:[.726,.036,.902,{ic:.306,sk:.389}],119978:[.707,.008,.738,{ic:.067,sk:.167}],119979:[.716,.037,1.013,{ic:.018,sk:.222}],119980:[.717,.017,.883,{sk:.278}],119982:[.708,.036,.868,{ic:.148,sk:.333}],119983:[.735,.037,.747,{ic:.249,sk:.222}],119984:[.717,.017,.8,{ic:.16,sk:.25}],119985:[.717,.017,.622,{ic:.228,sk:.222}],119986:[.717,.017,.805,{ic:.221,sk:.25}],119987:[.717,.017,.944,{ic:.187,sk:.278}],119988:[.716,.017,.71,{ic:.249,sk:.194}],119989:[.717,.016,.821,{ic:.211,sk:.306}],120068:[.696,.026,.718],120069:[.691,.027,.884],120071:[.685,.027,.832],120072:[.685,.024,.663],120073:[.686,.153,.611],120074:[.69,.026,.785],120077:[.686,.139,.552],120078:[.68,.027,.668,{ic:.014}],120079:[.686,.026,.666],120080:[.692,.027,1.05],120081:[.686,.025,.832],120082:[.729,.027,.827],120083:[.692,.218,.828],120084:[.729,.069,.827],120086:[.692,.027,.829],120087:[.701,.027,.669],120088:[.697,.027,.646,{ic:.019}],120089:[.686,.026,.831],120090:[.686,.027,1.046],120091:[.688,.027,.719],120092:[.686,.218,.833],120094:[.47,.035,.5],120095:[.685,.031,.513],120096:[.466,.029,.389],120097:[.609,.033,.499],120098:[.467,.03,.401],120099:[.681,.221,.326],120100:[.47,.209,.504],120101:[.688,.205,.521],120102:[.673,.02,.279],120103:[.672,.208,.281],120104:[.689,.025,.389],120105:[.685,.02,.28],120106:[.475,.026,.767],120107:[.475,.022,.527],120108:[.48,.028,.489],120109:[.541,.212,.5],120110:[.479,.219,.489],120111:[.474,.021,.389],120112:[.478,.029,.443],120113:[.64,.02,.333,{ic:.015}],120114:[.474,.023,.517],120115:[.53,.028,.512],120116:[.532,.028,.774],120117:[.472,.188,.389],120118:[.528,.218,.499],120119:[.471,.214,.391],120120:[.701,0,.722],120121:[.683,0,.667],120123:[.683,0,.722],120124:[.683,0,.667],120125:[.683,0,.611],120126:[.702,.019,.778],120128:[.683,0,.389],120129:[.683,.077,.5],120130:[.683,0,.778],120131:[.683,0,.667],120132:[.683,0,.944],120134:[.701,.019,.778],120138:[.702,.012,.556],120139:[.683,0,.667],120140:[.683,.019,.722],120141:[.683,.02,.722],120142:[.683,.019,1],120143:[.683,0,.722],120144:[.683,0,.722],120172:[.686,.031,.847],120173:[.684,.031,1.044],120174:[.676,.032,.723],120175:[.683,.029,.982],120176:[.686,.029,.783],120177:[.684,.146,.722],120178:[.687,.029,.927],120179:[.683,.126,.851],120180:[.681,.025,.655],120181:[.68,.141,.652],120182:[.681,.026,.789,{ic:.017}],120183:[.683,.028,.786],120184:[.683,.032,1.239],120185:[.679,.03,.983],120186:[.726,.03,.976],120187:[.688,.223,.977],120188:[.726,.083,.976],120189:[.688,.028,.978],120190:[.685,.031,.978],120191:[.686,.03,.79,{ic:.012}],120192:[.688,.039,.851,{ic:.02}],120193:[.685,.029,.982],120194:[.683,.03,1.235],120195:[.681,.035,.849],120196:[.688,.214,.984],120197:[.677,.148,.711],120198:[.472,.032,.603],120199:[.69,.032,.59],120200:[.473,.026,.464],120201:[.632,.028,.589],120202:[.471,.027,.472],120203:[.687,.222,.388],120204:[.472,.208,.595],120205:[.687,.207,.615],120206:[.686,.025,.331],120207:[.682,.203,.332],120208:[.682,.025,.464],120209:[.681,.024,.337],120210:[.476,.031,.921],120211:[.473,.028,.654],120212:[.482,.034,.609],120213:[.557,.207,.604],120214:[.485,.211,.596],120215:[.472,.026,.46],120216:[.479,.034,.523],120217:[.648,.027,.393,{ic:.014}],120218:[.472,.032,.589,{ic:.014}],120219:[.546,.027,.604],120220:[.549,.032,.918],120221:[.471,.188,.459],120222:[.557,.221,.589],120223:[.471,.214,.461],120224:[.694,0,.667],120225:[.694,0,.667],120226:[.705,.011,.639],120227:[.694,0,.722],120228:[.691,0,.597],120229:[.691,0,.569],120230:[.704,.011,.667],120231:[.694,0,.708],120232:[.694,0,.278],120233:[.694,.022,.472],120234:[.694,0,.694],120235:[.694,0,.542],120236:[.694,0,.875],120237:[.694,0,.708],120238:[.715,.022,.736],120239:[.694,0,.639],120240:[.715,.125,.736],120241:[.694,0,.646],120242:[.716,.022,.556],120243:[.688,0,.681],120244:[.694,.022,.688],120245:[.694,0,.667],120246:[.694,0,.944],120247:[.694,0,.667],120248:[.694,0,.667],120249:[.694,0,.611],120250:[.46,.01,.481],120251:[.694,.011,.517],120252:[.46,.01,.444],120253:[.694,.01,.517],120254:[.461,.01,.444],120255:[.705,0,.306,{ic:.041}],120256:[.455,.206,.5],120257:[.694,0,.517],120258:[.68,0,.239],120259:[.68,.205,.267],120260:[.694,0,.489],120261:[.694,0,.239],120262:[.455,0,.794],120263:[.455,0,.517],120264:[.46,.01,.5],120265:[.455,.194,.517],120266:[.455,.194,.517],120267:[.455,0,.342],120268:[.46,.01,.383],120269:[.571,.01,.361],120270:[.444,.01,.517],120271:[.444,0,.461],120272:[.444,0,.683],120273:[.444,0,.461],120274:[.444,.204,.461],120275:[.444,0,.435],120276:[.694,0,.733],120277:[.694,0,.733],120278:[.704,.011,.703],120279:[.694,0,.794],120280:[.691,0,.642],120281:[.691,0,.611],120282:[.705,.011,.733],120283:[.694,0,.794],120284:[.694,0,.331],120285:[.694,.022,.519],120286:[.694,0,.764],120287:[.694,0,.581],120288:[.694,0,.978],120289:[.694,0,.794],120290:[.716,.022,.794],120291:[.694,0,.703],120292:[.716,.106,.794],120293:[.694,0,.703],120294:[.716,.022,.611],120295:[.688,0,.733],120296:[.694,.022,.764],120297:[.694,0,.733],120298:[.694,0,1.039],120299:[.694,0,.733],120300:[.694,0,.733],120301:[.694,0,.672],120302:[.475,.011,.525],120303:[.694,.01,.561],120304:[.475,.011,.489],120305:[.694,.011,.561],120306:[.474,.01,.511],120307:[.705,0,.336,{ic:.045}],120308:[.469,.206,.55],120309:[.694,0,.561],120310:[.695,0,.256],120311:[.695,.205,.286],120312:[.694,0,.531],120313:[.694,0,.256],120314:[.469,0,.867],120315:[.468,0,.561],120316:[.474,.011,.55],120317:[.469,.194,.561],120318:[.469,.194,.561],120319:[.469,0,.372],120320:[.474,.01,.422],120321:[.589,.01,.404],120322:[.458,.011,.561],120323:[.458,0,.5],120324:[.458,0,.744],120325:[.458,0,.5],120326:[.458,.205,.5],120327:[.458,0,.476],120328:[.694,0,.667],120329:[.694,0,.667,{ic:.029}],120330:[.705,.01,.639,{ic:.08}],120331:[.694,0,.722,{ic:.025}],120332:[.691,0,.597,{ic:.091}],120333:[.691,0,.569,{ic:.104}],120334:[.705,.011,.667,{ic:.063}],120335:[.694,0,.708,{ic:.06}],120336:[.694,0,.278,{ic:.06}],120337:[.694,.022,.472,{ic:.063}],120338:[.694,0,.694,{ic:.091}],120339:[.694,0,.542],120340:[.694,0,.875,{ic:.054}],120341:[.694,0,.708,{ic:.058}],120342:[.716,.022,.736,{ic:.027}],120343:[.694,0,.639,{ic:.051}],120344:[.716,.125,.736,{ic:.027}],120345:[.694,0,.646,{ic:.052}],120346:[.716,.022,.556,{ic:.053}],120347:[.688,0,.681,{ic:.109}],120348:[.694,.022,.688,{ic:.059}],120349:[.694,0,.667,{ic:.132}],120350:[.694,0,.944,{ic:.132}],120351:[.694,0,.667,{ic:.091}],120352:[.694,0,.667,{ic:.143}],120353:[.694,0,.611,{ic:.091}],120354:[.461,.01,.481],120355:[.694,.011,.517,{ic:.022}],120356:[.46,.011,.444,{ic:.055}],120357:[.694,.01,.517,{ic:.071}],120358:[.46,.011,.444,{ic:.028}],120359:[.705,0,.306,{ic:.188}],120360:[.455,.206,.5,{ic:.068}],120361:[.694,0,.517],120362:[.68,0,.239,{ic:.076}],120363:[.68,.204,.267,{ic:.069}],120364:[.694,0,.489,{ic:.054}],120365:[.694,0,.239,{ic:.072}],120366:[.455,0,.794],120367:[.454,0,.517],120368:[.461,.011,.5,{ic:.023}],120369:[.455,.194,.517,{ic:.021}],120370:[.455,.194,.517,{ic:.021}],120371:[.455,0,.342,{ic:.082}],120372:[.461,.011,.383,{ic:.053}],120373:[.571,.011,.361,{ic:.049}],120374:[.444,.01,.517,{ic:.02}],120375:[.444,0,.461,{ic:.079}],120376:[.444,0,.683,{ic:.079}],120377:[.444,0,.461,{ic:.076}],120378:[.444,.205,.461,{ic:.079}],120379:[.444,0,.435,{ic:.059}],120432:[.623,0,.525],120433:[.611,0,.525],120434:[.622,.011,.525],120435:[.611,0,.525],120436:[.611,0,.525],120437:[.611,0,.525],120438:[.622,.011,.525],120439:[.611,0,.525],120440:[.611,0,.525],120441:[.611,.011,.525],120442:[.611,0,.525],120443:[.611,0,.525],120444:[.611,0,.525],120445:[.611,0,.525],120446:[.621,.01,.525],120447:[.611,0,.525],120448:[.621,.138,.525],120449:[.611,.011,.525],120450:[.622,.011,.525],120451:[.611,0,.525],120452:[.611,.011,.525],120453:[.611,.007,.525],120454:[.611,.007,.525],120455:[.611,0,.525],120456:[.611,0,.525],120457:[.611,0,.525],120458:[.439,.006,.525],120459:[.611,.006,.525],120460:[.44,.006,.525],120461:[.611,.006,.525],120462:[.44,.006,.525],120463:[.617,0,.525],120464:[.442,.229,.525],120465:[.611,0,.525],120466:[.612,0,.525],120467:[.612,.228,.525],120468:[.611,0,.525],120469:[.611,0,.525],120470:[.436,0,.525,{ic:.011}],120471:[.436,0,.525],120472:[.44,.006,.525],120473:[.437,.221,.525],120474:[.437,.221,.525,{ic:.02}],120475:[.437,0,.525],120476:[.44,.006,.525],120477:[.554,.006,.525],120478:[.431,.005,.525],120479:[.431,0,.525],120480:[.431,0,.525],120481:[.431,0,.525],120482:[.431,.228,.525],120483:[.431,0,.525],120488:[.698,0,.869],120489:[.686,0,.818],120490:[.68,0,.692],120491:[.698,0,.958],120492:[.68,0,.756],120493:[.686,0,.703],120494:[.686,0,.9],120495:[.696,.01,.894],120496:[.686,0,.436],120497:[.686,0,.901],120498:[.698,0,.806],120499:[.686,0,1.092],120500:[.686,0,.9],120501:[.675,0,.767],120502:[.696,.01,.864],120503:[.68,0,.9],120504:[.686,0,.786],120506:[.686,0,.831],120507:[.675,0,.8],120508:[.697,0,.894],120509:[.686,0,.831],120510:[.686,0,.869],120511:[.686,0,.894],120512:[.696,0,.831],120513:[.686,.024,.958],120546:[.716,0,.75,{sk:.139}],120547:[.683,0,.759,{sk:.0833}],120548:[.68,0,.615,{ic:.106,sk:.0833}],120549:[.716,0,.833,{sk:.167}],120550:[.68,0,.738,{ic:.026,sk:.0833}],120551:[.683,0,.683,{ic:.04,sk:.0833}],120552:[.683,0,.831,{ic:.057,sk:.0556}],120553:[.704,.022,.763,{sk:.0833}],120554:[.683,0,.44,{ic:.064,sk:.111}],120555:[.683,0,.849,{ic:.04,sk:.0556}],120556:[.716,0,.694,{sk:.167}],120557:[.683,0,.97,{ic:.081,sk:.0833}],120558:[.683,0,.803,{ic:.085,sk:.0833}],120559:[.677,0,.742,{ic:.035,sk:.0833}],120560:[.704,.022,.763,{sk:.0833}],120561:[.68,0,.831,{ic:.056,sk:.0556}],120562:[.683,0,.642,{ic:.109,sk:.0833}],120564:[.683,0,.78,{ic:.026,sk:.0833}],120565:[.677,0,.584,{ic:.12,sk:.0833}],120566:[.705,0,.583,{ic:.117,sk:.0556}],120567:[.683,0,.667,{sk:.0833}],120568:[.683,0,.828,{ic:.024,sk:.0833}],120569:[.683,0,.612,{ic:.08,sk:.0556}],120570:[.704,0,.772,{ic:.014,sk:.0833}],120572:[.442,.011,.64,{sk:.0278}],120573:[.705,.194,.566,{sk:.0833}],120574:[.441,.216,.518,{ic:.025}],120575:[.717,.01,.444,{sk:.0556}],120576:[.452,.022,.466,{sk:.0833}],120577:[.704,.204,.438,{ic:.033,sk:.0833}],120578:[.442,.216,.497,{sk:.0556}],120579:[.705,.01,.469,{sk:.0833}],120580:[.442,.01,.354,{sk:.0556}],120581:[.442,.011,.576],120582:[.694,.012,.583],120583:[.442,.216,.603,{sk:.0278}],120584:[.442,0,.494,{ic:.036,sk:.0278}],120585:[.704,.205,.438,{sk:.111}],120586:[.441,.011,.485,{sk:.0556}],120587:[.431,.011,.57],120588:[.442,.216,.517,{sk:.0833}],120589:[.442,.107,.363,{ic:.042,sk:.0833}],120590:[.431,.011,.571],120591:[.431,.013,.437,{ic:.08,sk:.0278}],120592:[.443,.01,.54,{sk:.0278}],120593:[.442,.218,.654,{sk:.0833}],120594:[.442,.204,.626,{sk:.0556}],120595:[.694,.205,.651,{sk:.111}],120596:[.443,.011,.622],120597:[.715,.022,.531,{ic:.035,sk:.0833}],120598:[.431,.011,.406,{sk:.0556}],120599:[.705,.011,.591,{sk:.0833}],120600:[.434,.006,.667,{ic:.067}],120601:[.694,.205,.596,{sk:.0833}],120602:[.442,.194,.517,{sk:.0833}],120603:[.431,.01,.828],120604:[.711,0,.869,{sk:.16}],120605:[.686,0,.866,{sk:.0958}],120606:[.68,0,.657,{ic:.12,sk:.0958}],120607:[.711,0,.958,{sk:.192}],120608:[.68,0,.81,{ic:.015,sk:.0958}],120609:[.686,0,.773,{ic:.032,sk:.0958}],120610:[.686,0,.982,{ic:.045,sk:.0639}],120611:[.702,.017,.867,{sk:.0958}],120612:[.686,0,.511,{ic:.062,sk:.128}],120613:[.686,0,.971,{ic:.032,sk:.0639}],120614:[.711,0,.806,{sk:.192}],120615:[.686,0,1.142,{ic:.077,sk:.0958}],120616:[.686,0,.95,{ic:.077,sk:.0958}],120617:[.675,0,.841,{ic:.026,sk:.0958}],120618:[.703,.017,.837,{sk:.0958}],120619:[.68,0,.982,{ic:.044,sk:.0639}],120620:[.686,0,.723,{ic:.124,sk:.0958}],120622:[.686,0,.885,{ic:.017,sk:.0958}],120623:[.675,0,.637,{ic:.135,sk:.0958}],120624:[.703,0,.671,{ic:.131,sk:.0639}],120625:[.686,0,.767,{sk:.0958}],120626:[.686,0,.947,{sk:.0958}],120627:[.686,0,.714,{ic:.076,sk:.0639}],120628:[.703,0,.879,{sk:.0958}],120630:[.452,.008,.761,{sk:.0319}],120631:[.701,.194,.66,{sk:.0958}],120632:[.451,.211,.59,{ic:.027}],120633:[.725,.008,.522,{sk:.0639}],120634:[.461,.017,.529,{sk:.0958}],120635:[.711,.202,.508,{ic:.013,sk:.0958}],120636:[.452,.211,.6,{sk:.0639}],120637:[.702,.008,.562,{sk:.0958}],120638:[.452,.008,.412,{sk:.0639}],120639:[.452,.008,.668],120640:[.694,.013,.671],120641:[.452,.211,.708,{sk:.0319}],120642:[.452,0,.577,{ic:.031,sk:.0319}],120643:[.711,.201,.508,{sk:.128}],120644:[.452,.008,.585,{sk:.0639}],120645:[.444,.008,.682],120646:[.451,.211,.612,{sk:.0958}],120647:[.451,.105,.424,{ic:.033,sk:.0958}],120648:[.444,.008,.686],120649:[.444,.013,.521,{ic:.089,sk:.0319}],120650:[.453,.008,.631,{sk:.0319}],120651:[.452,.216,.747,{sk:.0958}],120652:[.452,.201,.718,{sk:.0639}],120653:[.694,.202,.758,{sk:.128}],120654:[.453,.008,.718],120655:[.71,.017,.628,{ic:.029,sk:.0958}],120656:[.444,.007,.483,{sk:.0639}],120657:[.701,.008,.692,{sk:.0958}],120658:[.434,.006,.667,{ic:.067}],120659:[.694,.202,.712,{sk:.0958}],120660:[.451,.194,.612,{sk:.0958}],120661:[.444,.008,.975],120662:[.694,0,.733],120663:[.694,0,.733],120664:[.691,0,.581],120665:[.694,0,.917],120666:[.691,0,.642],120667:[.694,0,.672],120668:[.694,0,.794],120669:[.716,.022,.856],120670:[.694,0,.331],120671:[.694,0,.764],120672:[.694,0,.672],120673:[.694,0,.978],120674:[.694,0,.794],120675:[.688,0,.733],120676:[.716,.022,.794],120677:[.691,0,.794],120678:[.694,0,.703],120680:[.694,0,.794],120681:[.688,0,.733],120682:[.715,0,.856],120683:[.694,0,.794],120684:[.694,0,.733],120685:[.694,0,.856],120686:[.716,0,.794],120782:[.654,.01,.575],120783:[.655,0,.575],120784:[.654,0,.575],120785:[.655,.011,.575],120786:[.656,0,.575],120787:[.655,.011,.575],120788:[.655,.011,.575],120789:[.676,.011,.575],120790:[.654,.011,.575],120791:[.654,.011,.575],120802:[.678,.022,.5],120803:[.678,0,.5],120804:[.677,0,.5],120805:[.678,.022,.5],120806:[.656,0,.5],120807:[.656,.021,.5],120808:[.677,.022,.5],120809:[.656,.011,.5],120810:[.678,.022,.5],120811:[.677,.022,.5],120812:[.715,.022,.55],120813:[.716,0,.55],120814:[.716,0,.55],120815:[.716,.022,.55],120816:[.694,0,.55],120817:[.694,.022,.55],120818:[.716,.022,.55],120819:[.695,.011,.55],120820:[.715,.022,.55],120821:[.716,.022,.55],120822:[.621,.01,.525],120823:[.622,0,.525],120824:[.622,0,.525],120825:[.622,.011,.525],120826:[.624,0,.525],120827:[.611,.01,.525],120828:[.622,.011,.525],120829:[.627,.01,.525],120830:[.621,.01,.525],120831:[.622,.011,.525]},Object.defineProperty(normal$1,"__esModule",{value:!0}),normal$1.normal=void 0;var FontData_js_1$e=FontData,normal_js_1$1=normal;normal$1.normal=(0,FontData_js_1$e.AddPaths)(normal_js_1$1.normal,{32:"",33:"78 661Q78 682 96 699T138 716T180 700T199 661Q199 654 179 432T158 206Q156 198 139 198Q121 198 119 206Q118 209 98 431T78 661ZM79 61Q79 89 97 105T141 121Q164 119 181 104T198 61Q198 31 181 16T139 1Q114 1 97 16T79 61",34:"34 634Q34 659 50 676T93 694Q121 694 144 668T168 579Q168 525 146 476T101 403T73 379Q69 379 60 388T50 401Q50 404 62 417T88 448T116 500T131 572Q131 584 130 584T125 581T112 576T94 573Q69 573 52 590T34 634ZM238 634Q238 659 254 676T297 694Q325 694 348 668T372 579Q372 525 350 476T305 403T277 379Q273 379 264 388T254 401Q254 404 266 417T292 448T320 500T335 572Q335 584 334 584T329 581T316 576T298 573Q273 573 256 590T238 634",35:"56 347Q56 360 70 367H313L355 524Q394 676 401 686Q406 694 416 694Q434 694 436 676Q436 672 396 522Q355 374 355 369L354 367H543L585 524Q626 679 630 685Q636 694 646 694Q653 694 659 689T665 678Q665 668 626 522Q585 374 585 369L584 367H762Q777 359 777 347Q777 334 767 331T722 327H667H572L552 251L531 174Q531 173 647 173H720Q756 173 766 170T777 153T762 133H519L477 -24Q436 -179 432 -185Q426 -194 416 -194Q409 -194 403 -189T397 -177Q397 -167 436 -21Q477 125 477 131L478 133H289L247 -24Q206 -179 202 -185Q196 -194 186 -194Q179 -194 173 -189T167 -177Q167 -167 206 -21Q247 125 247 131L248 133H70Q56 140 56 153Q56 168 72 173H260L280 249L301 326Q301 327 186 327H72Q56 332 56 347ZM531 326Q531 327 437 327H342L322 251L301 174Q301 173 395 173H490L510 249L531 326",36:"162 187Q162 164 146 149T109 133H103V130Q108 115 115 105Q122 92 131 82T150 64T170 52T190 44T206 40T220 37L227 36V313Q190 320 162 335Q116 358 86 404T55 508Q55 567 85 614T165 685Q186 696 225 704H227V750H273V704L286 703Q369 690 413 631Q441 588 444 531Q444 514 443 509Q439 490 425 479T391 468Q368 468 353 483T337 522Q337 546 353 560T390 575L394 576V578Q386 599 372 614T342 637T314 649T288 656L273 658V408L288 405Q329 394 355 376Q396 348 420 300T444 199Q444 130 408 76T313 1Q286 -9 276 -9H273V-56H227V-10H221Q202 -6 193 -4T155 11T108 41T74 94T55 176V182Q55 227 95 238Q103 240 108 240Q129 240 145 226T162 187ZM225 657Q219 657 204 651T169 632T135 594T121 538Q121 512 131 491T156 457T187 435T213 423T227 420V539Q227 657 225 657ZM378 169Q378 230 339 265T274 301Q273 301 273 169V37Q324 50 351 87T378 169",37:"465 605Q428 605 394 614T340 632T319 641Q332 608 332 548Q332 458 293 403T202 347Q145 347 101 402T56 548Q56 637 101 693T202 750Q241 750 272 719Q359 642 464 642Q580 642 650 732Q662 748 668 749Q670 750 673 750Q682 750 688 743T693 726Q178 -47 170 -52Q166 -56 160 -56Q147 -56 142 -45Q137 -36 142 -27Q143 -24 363 304Q469 462 525 546T581 630Q528 605 465 605ZM207 385Q235 385 263 427T292 548Q292 617 267 664T200 712Q193 712 186 709T167 698T147 668T134 615Q132 595 132 548V527Q132 436 165 403Q183 385 203 385H207ZM500 146Q500 234 544 290T647 347Q699 347 737 292T776 146T737 0T646 -56Q590 -56 545 0T500 146ZM651 -18Q679 -18 707 24T736 146Q736 215 711 262T644 309Q637 309 630 306T611 295T591 265T578 212Q577 200 577 146V124Q577 -18 647 -18H651",38:"156 540Q156 620 201 668T302 716Q354 716 377 671T401 578Q401 505 287 386L274 373Q309 285 416 148L429 132L437 142Q474 191 543 309L562 341V349Q562 368 541 376T498 385H493V431H502L626 428Q709 428 721 431H727V385H712Q688 384 669 379T639 369T618 354T603 337T591 316T578 295Q537 223 506 176T464 117T454 104Q454 102 471 85T497 62Q543 24 585 24Q618 24 648 48T682 113V121H722V112Q721 94 714 75T692 32T646 -7T574 -22Q491 -19 414 42L402 51L391 42Q312 -22 224 -22Q144 -22 93 25T42 135Q42 153 46 169T55 197T74 225T96 249T125 278T156 308L195 347L190 360Q185 372 182 382T174 411T165 448T159 491T156 540ZM361 576Q361 613 348 646T305 679Q272 679 252 649T232 572Q232 497 255 426L259 411L267 420Q361 519 361 576ZM140 164Q140 103 167 64T240 24Q271 24 304 36T356 61T374 77Q295 156 235 262L220 292L210 310L193 293Q177 277 169 268T151 229T140 164",39:"78 634Q78 659 95 676T138 694Q166 694 189 668T212 579Q212 525 190 476T146 403T118 379Q114 379 105 388T95 401Q95 404 107 417T133 448T161 500T176 572Q176 584 175 584T170 581T157 576T139 573Q114 573 96 590T78 634",40:"94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250",41:"60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749",42:"215 721Q216 732 225 741T248 750Q263 750 273 742T284 721L270 571L327 613Q383 654 388 657T399 660Q412 660 423 650T435 624T424 600T376 575Q363 569 355 566L289 534L355 504L424 470Q435 462 435 447Q435 431 424 420T399 409Q393 409 388 412T327 456L270 498L277 423L284 348Q280 320 250 320T215 348L229 498L172 456Q116 415 111 412T100 409Q87 409 76 420T64 447Q64 461 75 470L144 504L210 534L144 566Q136 570 122 576Q83 593 74 600T64 624Q64 639 75 649T100 660Q106 660 111 657T172 613L229 571Q229 578 222 643T215 721",43:"56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250",44:"78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17",45:"11 179V252H277V179H11",46:"78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60",47:"423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750",48:"96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597",49:"213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578",50:"109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429",51:"127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463",52:"462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293",53:"164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157",54:"42 313Q42 476 123 571T303 666Q372 666 402 630T432 550Q432 525 418 510T379 495Q356 495 341 509T326 548Q326 592 373 601Q351 623 311 626Q240 626 194 566Q147 500 147 364L148 360Q153 366 156 373Q197 433 263 433H267Q313 433 348 414Q372 400 396 374T435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM257 397Q227 397 205 380T171 335T154 278T148 216Q148 133 160 97T198 39Q222 21 251 21Q302 21 329 59Q342 77 347 104T352 209Q352 289 347 316T329 361Q302 397 257 397",55:"55 458Q56 460 72 567L88 674Q88 676 108 676H128V672Q128 662 143 655T195 646T364 644H485V605L417 512Q408 500 387 472T360 435T339 403T319 367T305 330T292 284T284 230T278 162T275 80Q275 66 275 52T274 28V19Q270 2 255 -10T221 -22Q210 -22 200 -19T179 0T168 40Q168 198 265 368Q285 400 349 489L395 552H302Q128 552 119 546Q113 543 108 522T98 479L95 458V455H55V458",56:"70 417T70 494T124 618T248 666Q319 666 374 624T429 515Q429 485 418 459T392 417T361 389T335 371T324 363L338 354Q352 344 366 334T382 323Q457 264 457 174Q457 95 399 37T249 -22Q159 -22 101 29T43 155Q43 263 172 335L154 348Q133 361 127 368Q70 417 70 494ZM286 386L292 390Q298 394 301 396T311 403T323 413T334 425T345 438T355 454T364 471T369 491T371 513Q371 556 342 586T275 624Q268 625 242 625Q201 625 165 599T128 534Q128 511 141 492T167 463T217 431Q224 426 228 424L286 386ZM250 21Q308 21 350 55T392 137Q392 154 387 169T375 194T353 216T330 234T301 253T274 270Q260 279 244 289T218 306L210 311Q204 311 181 294T133 239T107 157Q107 98 150 60T250 21",57:"352 287Q304 211 232 211Q154 211 104 270T44 396Q42 412 42 436V444Q42 537 111 606Q171 666 243 666Q245 666 249 666T257 665H261Q273 665 286 663T323 651T370 619T413 560Q456 472 456 334Q456 194 396 97Q361 41 312 10T208 -22Q147 -22 108 7T68 93T121 149Q143 149 158 135T173 96Q173 78 164 65T148 49T135 44L131 43Q131 41 138 37T164 27T206 22H212Q272 22 313 86Q352 142 352 280V287ZM244 248Q292 248 321 297T351 430Q351 508 343 542Q341 552 337 562T323 588T293 615T246 625Q208 625 181 598Q160 576 154 546T147 441Q147 358 152 329T172 282Q197 248 244 248",58:"78 370Q78 394 95 412T138 430Q162 430 180 414T199 371Q199 346 182 328T139 310T96 327T78 370ZM78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60",59:"78 370Q78 394 95 412T138 430Q162 430 180 414T199 371Q199 346 182 328T139 310T96 327T78 370ZM78 60Q78 85 94 103T137 121Q202 121 202 8Q202 -44 183 -94T144 -169T118 -194Q115 -194 106 -186T95 -174Q94 -171 107 -155T137 -107T160 -38Q161 -32 162 -22T165 -4T165 4Q165 5 161 4T142 0Q110 0 94 18T78 60",60:"694 -11T694 -19T688 -33T678 -40Q671 -40 524 29T234 166L90 235Q83 240 83 250Q83 261 91 266Q664 540 678 540Q681 540 687 534T694 519T687 505Q686 504 417 376L151 250L417 124Q686 -4 687 -5Q694 -11 694 -19",61:"56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153",62:"84 520Q84 528 88 533T96 539L99 540Q106 540 253 471T544 334L687 265Q694 260 694 250T687 235Q685 233 395 96L107 -40H101Q83 -38 83 -20Q83 -19 83 -17Q82 -10 98 -1Q117 9 248 71Q326 108 378 132L626 250L378 368Q90 504 86 509Q84 513 84 520",63:"226 668Q190 668 162 656T124 632L114 621Q116 621 119 620T130 616T145 607T157 591T162 567Q162 544 147 529T109 514T71 528T55 566Q55 625 100 661T199 704Q201 704 210 704T224 705H228Q281 705 320 692T378 656T407 612T416 567Q416 503 361 462Q267 395 247 303Q242 279 242 241V224Q242 205 239 202T222 198T205 201T202 218V249Q204 320 220 371T255 445T292 491T315 537Q317 546 317 574V587Q317 604 315 615T304 640T277 661T226 668ZM162 61Q162 89 180 105T224 121Q247 119 264 104T281 61Q281 31 264 16T222 1Q197 1 180 16T162 61",64:"56 347Q56 429 86 498T164 612T270 680T386 705Q522 705 622 603T722 349Q722 126 608 126Q541 126 513 176Q512 177 512 179T510 182L509 183Q508 183 503 177T487 163T464 146T429 132T385 126Q311 126 251 186T190 347Q190 448 251 508T385 568Q426 568 460 548T509 511T531 479H555Q580 479 582 478Q586 477 587 468Q588 454 588 338V260Q588 200 593 182T619 163Q641 163 655 178T674 223T680 273T682 325V330Q682 426 647 500Q611 569 544 618T388 668Q271 668 184 577T96 347Q96 216 180 121T396 26Q421 26 446 28T493 34T535 43T573 52T605 63T629 72T647 80T657 84H716Q722 78 722 74Q722 65 675 45T547 7T392 -11Q255 -11 156 90T56 347ZM274 347Q274 266 308 214T390 162Q420 162 449 182T498 235L504 245V449L498 459Q453 532 387 532Q347 532 311 483T274 347",65:"255 0Q240 3 140 3Q48 3 39 0H32V46H47Q119 49 139 88Q140 91 192 245T295 553T348 708Q351 716 366 716H376Q396 715 400 709Q402 707 508 390L617 67Q624 54 636 51T687 46H717V0H708Q699 3 581 3Q458 3 437 0H427V46H440Q510 46 510 64Q510 66 486 138L462 209H229L209 150Q189 91 189 85Q189 72 209 59T259 46H264V0H255ZM447 255L345 557L244 256Q244 255 345 255H447",66:"131 622Q124 629 120 631T104 634T61 637H28V683H229H267H346Q423 683 459 678T531 651Q574 627 599 590T624 512Q624 461 583 419T476 360L466 357Q539 348 595 302T651 187Q651 119 600 67T469 3Q456 1 242 0H28V46H61Q103 47 112 49T131 61V622ZM511 513Q511 560 485 594T416 636Q415 636 403 636T371 636T333 637Q266 637 251 636T232 628Q229 624 229 499V374H312L396 375L406 377Q410 378 417 380T442 393T474 417T499 456T511 513ZM537 188Q537 239 509 282T430 336L329 337H229V200V116Q229 57 234 52Q240 47 334 47H383Q425 47 443 53Q486 67 511 104T537 188",67:"56 342Q56 428 89 500T174 615T283 681T391 705Q394 705 400 705T408 704Q499 704 569 636L582 624L612 663Q639 700 643 704Q644 704 647 704T653 705H657Q660 705 666 699V419L660 413H626Q620 419 619 430Q610 512 571 572T476 651Q457 658 426 658Q322 658 252 588Q173 509 173 342Q173 221 211 151Q232 111 263 84T328 45T384 29T428 24Q517 24 571 93T626 244Q626 251 632 257H660L666 251V236Q661 133 590 56T403 -21Q262 -21 159 83T56 342",68:"130 622Q123 629 119 631T103 634T60 637H27V683H228Q399 682 419 682T461 676Q504 667 546 641T626 573T685 470T708 336Q708 210 634 116T442 3Q429 1 228 0H27V46H60Q102 47 111 49T130 61V622ZM593 338Q593 439 571 501T493 602Q439 637 355 637H322H294Q238 637 234 628Q231 624 231 344Q231 62 232 59Q233 49 248 48T339 46H350Q456 46 515 95Q561 133 577 191T593 338",69:"128 619Q121 626 117 628T101 631T58 634H25V680H597V676Q599 670 611 560T625 444V440H585V444Q584 447 582 465Q578 500 570 526T553 571T528 601T498 619T457 629T411 633T353 634Q266 634 251 633T233 622Q233 622 233 621Q232 619 232 497V376H286Q359 378 377 385Q413 401 416 469Q416 471 416 473V493H456V213H416V233Q415 268 408 288T383 317T349 328T297 330Q290 330 286 330H232V196V114Q232 57 237 52Q243 47 289 47H340H391Q428 47 452 50T505 62T552 92T584 146Q594 172 599 200T607 247T612 270V273H652V270Q651 267 632 137T610 3V0H25V46H58Q100 47 109 49T128 61V619",70:"128 619Q121 626 117 628T101 631T58 634H25V680H582V676Q584 670 596 560T610 444V440H570V444Q563 493 561 501Q555 538 543 563T516 601T477 622T431 631T374 633H334H286Q252 633 244 631T233 621Q232 619 232 490V363H284Q287 363 303 363T327 364T349 367T372 373T389 385Q407 403 410 459V480H450V200H410V221Q407 276 389 296Q381 303 371 307T348 313T327 316T303 317T284 317H232V189L233 61Q240 54 245 52T270 48T333 46H360V0H348Q324 3 182 3Q51 3 36 0H25V46H58Q100 47 109 49T128 61V619",71:"56 342Q56 428 89 500T174 615T283 681T391 705Q394 705 400 705T408 704Q499 704 569 636L582 624L612 663Q639 700 643 704Q644 704 647 704T653 705H657Q660 705 666 699V419L660 413H626Q620 419 619 430Q610 512 571 572T476 651Q457 658 426 658Q401 658 376 654T316 633T254 592T205 519T177 411Q173 369 173 335Q173 259 192 201T238 111T302 58T370 31T431 24Q478 24 513 45T559 100Q562 110 562 160V212Q561 213 557 216T551 220T542 223T526 225T502 226T463 227H437V273H449L609 270Q715 270 727 273H735V227H721Q674 227 668 215Q666 211 666 108V6Q660 0 657 0Q653 0 639 10Q617 25 600 42L587 54Q571 27 524 3T406 -22Q317 -22 238 22T108 151T56 342",72:"128 622Q121 629 117 631T101 634T58 637H25V683H36Q57 680 180 680Q315 680 324 683H335V637H302Q262 636 251 634T233 622L232 500V378H517V622Q510 629 506 631T490 634T447 637H414V683H425Q446 680 569 680Q704 680 713 683H724V637H691Q651 636 640 634T622 622V61Q628 51 639 49T691 46H724V0H713Q692 3 569 3Q434 3 425 0H414V46H447Q489 47 498 49T517 61V332H232V197L233 61Q239 51 250 49T302 46H335V0H324Q303 3 180 3Q45 3 36 0H25V46H58Q100 47 109 49T128 61V622",73:"328 0Q307 3 180 3T32 0H21V46H43Q92 46 106 49T126 60Q128 63 128 342Q128 620 126 623Q122 628 118 630T96 635T43 637H21V683H32Q53 680 180 680T328 683H339V637H317Q268 637 254 634T234 623Q232 620 232 342Q232 63 234 60Q238 55 242 53T264 48T317 46H339V0H328",74:"89 177Q115 177 133 160T152 112Q152 88 137 72T102 52Q99 51 101 49Q106 43 129 29Q159 15 190 15Q232 15 256 48T286 126Q286 127 286 142T286 183T286 238T287 306T287 378Q287 403 287 429T287 479T287 524T286 563T286 593T286 614V621Q281 630 263 633T182 637H154V683H166Q187 680 332 680Q439 680 457 683H465V637H449Q422 637 401 634Q393 631 389 623Q388 621 388 376T387 123Q377 61 322 20T194 -22Q188 -22 177 -21T160 -20Q96 -9 61 29T25 110Q25 144 44 160T89 177",75:"128 622Q121 629 117 631T101 634T58 637H25V683H36Q57 680 180 680Q315 680 324 683H335V637H313Q235 637 233 620Q232 618 232 462L233 307L379 449Q425 494 479 546Q518 584 524 591T531 607V608Q531 630 503 636Q501 636 498 636T493 637H489V683H499Q517 680 630 680Q704 680 716 683H722V637H708Q633 633 589 597Q584 592 495 506T406 419T515 254T631 80Q644 60 662 54T715 46H736V0H728Q719 3 615 3Q493 3 472 0H461V46H469Q515 46 515 72Q515 78 512 84L336 351Q332 348 278 296L232 251V156Q232 62 235 58Q243 47 302 46H335V0H324Q303 3 180 3Q45 3 36 0H25V46H58Q100 47 109 49T128 61V622",76:"128 622Q121 629 117 631T101 634T58 637H25V683H36Q48 680 182 680Q324 680 348 683H360V637H333Q273 637 258 635T233 622L232 342V129Q232 57 237 52Q243 47 313 47Q384 47 410 53Q470 70 498 110T536 221Q536 226 537 238T540 261T542 272T562 273H582V268Q580 265 568 137T554 5V0H25V46H58Q100 47 109 49T128 61V622",77:"132 622Q125 629 121 631T105 634T62 637H29V683H135Q221 683 232 682T249 675Q250 674 354 398L458 124L562 398Q666 674 668 675Q671 681 683 682T781 683H887V637H854Q814 636 803 634T785 622V61Q791 51 802 49T854 46H887V0H876Q855 3 736 3Q605 3 596 0H585V46H618Q660 47 669 49T688 61V347Q688 424 688 461T688 546T688 613L687 632Q454 14 450 7Q446 1 430 1T410 7Q409 9 292 316L176 624V606Q175 588 175 543T175 463T175 356L176 86Q187 50 261 46H278V0H269Q254 3 154 3Q52 3 37 0H29V46H46Q78 48 98 56T122 69T132 86V622",78:"42 46Q74 48 94 56T118 69T128 86V634H124Q114 637 52 637H25V683H232L235 680Q237 679 322 554T493 303L578 178V598Q572 608 568 613T544 627T492 637H475V683H483Q498 680 600 680Q706 680 715 683H724V637H707Q634 633 622 598L621 302V6L614 0H600Q585 0 582 3T481 150T282 443T171 605V345L172 86Q183 50 257 46H274V0H265Q250 3 150 3Q48 3 33 0H25V46H42",79:"56 340Q56 423 86 494T164 610T270 680T388 705Q521 705 621 601T722 341Q722 260 693 191T617 75T510 4T388 -22T267 3T160 74T85 189T56 340ZM467 647Q426 665 388 665Q360 665 331 654T269 620T213 549T179 439Q174 411 174 354Q174 144 277 61Q327 20 385 20H389H391Q474 20 537 99Q603 188 603 354Q603 411 598 439Q577 592 467 647",80:"130 622Q123 629 119 631T103 634T60 637H27V683H214Q237 683 276 683T331 684Q419 684 471 671T567 616Q624 563 624 489Q624 421 573 372T451 307Q429 302 328 301H234V181Q234 62 237 58Q245 47 304 46H337V0H326Q305 3 182 3Q47 3 38 0H27V46H60Q102 47 111 49T130 61V622ZM507 488Q507 514 506 528T500 564T483 597T450 620T397 635Q385 637 307 637H286Q237 637 234 628Q231 624 231 483V342H302H339Q390 342 423 349T481 382Q507 411 507 488",81:"56 341Q56 499 157 602T388 705Q521 705 621 601T722 341Q722 275 703 218T660 127T603 63T555 25T525 9Q524 8 524 8H523Q524 5 526 -1T537 -21T555 -47T581 -67T615 -76Q653 -76 678 -56T706 -3Q707 10 716 10Q721 10 728 5L727 -13Q727 -88 697 -140T606 -193Q563 -193 538 -166T498 -83Q483 -23 483 -8L471 -11Q459 -14 435 -18T388 -22Q254 -22 155 81T56 341ZM607 339Q607 429 586 496T531 598T461 649T390 665T318 649T248 598T192 496T170 339Q170 143 277 57Q301 39 305 39L304 42Q304 44 304 46Q301 53 301 68Q301 101 325 128T391 155Q454 155 495 70L501 58Q549 91 578 164Q607 234 607 339ZM385 18Q404 18 425 23T459 33T472 40Q471 47 468 57T449 88T412 115Q398 117 386 117Q367 117 353 102T338 67Q338 48 351 33T385 18",82:"130 622Q123 629 119 631T103 634T60 637H27V683H202H236H300Q376 683 417 677T500 648Q595 600 609 517Q610 512 610 501Q610 468 594 439T556 392T511 361T472 343L456 338Q459 335 467 332Q497 316 516 298T545 254T559 211T568 155T578 94Q588 46 602 31T640 16H645Q660 16 674 32T692 87Q692 98 696 101T712 105T728 103T732 90Q732 59 716 27T672 -16Q656 -22 630 -22Q481 -16 458 90Q456 101 456 163T449 246Q430 304 373 320L363 322L297 323H231V192L232 61Q238 51 249 49T301 46H334V0H323Q302 3 181 3Q59 3 38 0H27V46H60Q102 47 111 49T130 61V622ZM491 499V509Q491 527 490 539T481 570T462 601T424 623T362 636Q360 636 340 636T304 637H283Q238 637 234 628Q231 624 231 492V360H289Q390 360 434 378T489 456Q491 467 491 499",83:"55 507Q55 590 112 647T243 704H257Q342 704 405 641L426 672Q431 679 436 687T446 700L449 704Q450 704 453 704T459 705H463Q466 705 472 699V462L466 456H448Q437 456 435 459T430 479Q413 605 329 646Q292 662 254 662Q201 662 168 626T135 542Q135 508 152 480T200 435Q210 431 286 412T370 389Q427 367 463 314T500 191Q500 110 448 45T301 -21Q245 -21 201 -4T140 27L122 41Q118 36 107 21T87 -7T78 -21Q76 -22 68 -22H64Q61 -22 55 -16V101Q55 220 56 222Q58 227 76 227H89Q95 221 95 214Q95 182 105 151T139 90T205 42T305 24Q352 24 386 62T420 155Q420 198 398 233T340 281Q284 295 266 300Q261 301 239 306T206 314T174 325T141 343T112 367T85 402Q55 451 55 507",84:"36 443Q37 448 46 558T55 671V677H666V671Q667 666 676 556T685 443V437H645V443Q645 445 642 478T631 544T610 593Q593 614 555 625Q534 630 478 630H451H443Q417 630 414 618Q413 616 413 339V63Q420 53 439 50T528 46H558V0H545L361 3Q186 1 177 0H164V46H194Q264 46 283 49T309 63V339V550Q309 620 304 625T271 630H244H224Q154 630 119 601Q101 585 93 554T81 486T76 443V437H36V443",85:"128 622Q121 629 117 631T101 634T58 637H25V683H36Q57 680 180 680Q315 680 324 683H335V637H302Q262 636 251 634T233 622L232 418V291Q232 189 240 145T280 67Q325 24 389 24Q454 24 506 64T571 183Q575 206 575 410V598Q569 608 565 613T541 627T489 637H472V683H481Q496 680 598 680T715 683H724V637H707Q634 633 622 598L621 399Q620 194 617 180Q617 179 615 171Q595 83 531 31T389 -22Q304 -22 226 33T130 192Q129 201 128 412V622",86:"114 620Q113 621 110 624T107 627T103 630T98 632T91 634T80 635T67 636T48 637H19V683H28Q46 680 152 680Q273 680 294 683H305V637H284Q223 634 223 620Q223 618 313 372T404 126L490 358Q575 588 575 597Q575 616 554 626T508 637H503V683H512Q527 680 627 680Q718 680 724 683H730V637H723Q648 637 627 596Q627 595 515 291T401 -14Q396 -22 382 -22H374H367Q353 -22 348 -14Q346 -12 231 303Q114 617 114 620",87:"792 683Q810 680 914 680Q991 680 1003 683H1009V637H996Q931 633 915 598Q912 591 863 438T766 135T716 -17Q711 -22 694 -22Q676 -22 673 -15Q671 -13 593 231L514 477L435 234Q416 174 391 92T358 -6T341 -22H331Q314 -21 310 -15Q309 -14 208 302T104 622Q98 632 87 633Q73 637 35 637H18V683H27Q69 681 154 681Q164 681 181 681T216 681T249 682T276 683H287H298V637H285Q213 637 213 620Q213 616 289 381L364 144L427 339Q490 535 492 546Q487 560 482 578T475 602T468 618T461 628T449 633T433 636T408 637H380V683H388Q397 680 508 680Q629 680 650 683H660V637H647Q576 637 576 619L727 146Q869 580 869 600Q869 605 863 612T839 627T794 637H783V683H792",88:"270 0Q252 3 141 3Q46 3 31 0H23V46H40Q129 50 161 88Q165 94 244 216T324 339Q324 341 235 480T143 622Q133 631 119 634T57 637H37V683H46Q64 680 172 680Q297 680 318 683H329V637H324Q307 637 286 632T263 621Q263 618 322 525T384 431Q385 431 437 511T489 593Q490 595 490 599Q490 611 477 622T436 637H428V683H437Q455 680 566 680Q661 680 676 683H684V637H667Q585 634 551 599Q548 596 478 491Q412 388 412 387Q412 385 514 225T620 62Q628 53 642 50T695 46H726V0H717Q699 3 591 3Q466 3 445 0H434V46H440Q454 46 476 51T499 64Q499 67 463 124T390 238L353 295L350 292Q348 290 343 283T331 265T312 236T286 195Q219 88 218 84Q218 70 234 59T272 46H280V0H270",89:"518 0Q497 3 374 3Q253 3 232 0H221V46H254Q313 47 321 58Q324 62 324 167V273L221 446Q117 620 114 623Q106 631 91 634T31 637H11V683H20Q29 680 148 680Q273 680 294 683H305V637H287Q239 636 236 621Q236 619 321 475L407 332L483 460Q502 492 527 534Q563 594 563 604Q563 632 517 637H508V683H517H525Q533 683 545 683T571 682T600 681T626 681Q695 681 731 683H738V637H723Q640 633 613 588Q612 587 517 427L425 273V169V95Q425 66 428 59T444 49Q459 46 506 46H528V0H518",90:"69 443Q69 452 74 554T80 683H549Q555 677 555 664Q555 649 554 648Q552 645 366 348T179 50T192 49T263 49H275H302Q333 49 353 50T401 59T447 78T482 115T507 173Q513 200 520 273V282H560V274Q560 272 552 143T543 8V0H302L61 1L58 3Q55 8 55 21V35Q59 43 153 193T340 489T432 637H343Q259 637 214 625T141 573Q109 523 109 445Q109 443 89 443H69",91:"118 -250V750H255V710H158V-210H255V-250H118",92:"56 731Q56 740 62 745T75 750Q85 750 92 740Q96 733 270 255T444 -231Q444 -239 438 -244T424 -250Q414 -250 407 -240Q404 -236 230 242T56 731",93:"22 710V750H159V-250H22V-210H119V710H22",94:"112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560",95:"0 -62V-25H499V-62H0",96:"106 655Q106 671 119 685T150 699Q166 699 177 688Q190 671 222 629T275 561T295 533T282 519L267 505L196 563Q119 626 113 634Q106 643 106 655",97:"137 305T115 305T78 320T63 359Q63 394 97 421T218 448Q291 448 336 416T396 340Q401 326 401 309T402 194V124Q402 76 407 58T428 40Q443 40 448 56T453 109V145H493V106Q492 66 490 59Q481 29 455 12T400 -6T353 12T329 54V58L327 55Q325 52 322 49T314 40T302 29T287 17T269 6T247 -2T221 -8T190 -11Q130 -11 82 20T34 107Q34 128 41 147T68 188T116 225T194 253T304 268H318V290Q318 324 312 340Q290 411 215 411Q197 411 181 410T156 406T148 403Q170 388 170 359Q170 334 154 320ZM126 106Q126 75 150 51T209 26Q247 26 276 49T315 109Q317 116 318 175Q318 233 317 233Q309 233 296 232T251 223T193 203T147 166T126 106",98:"307 -11Q234 -11 168 55L158 37Q156 34 153 28T147 17T143 10L138 1L118 0H98V298Q98 599 97 603Q94 622 83 628T38 637H20V660Q20 683 22 683L32 684Q42 685 61 686T98 688Q115 689 135 690T165 693T176 694H179V543Q179 391 180 391L183 394Q186 397 192 401T207 411T228 421T254 431T286 439T323 442Q401 442 461 379T522 216Q522 115 458 52T307 -11ZM182 98Q182 97 187 90T196 79T206 67T218 55T233 44T250 35T271 29T295 26Q330 26 363 46T412 113Q424 148 424 212Q424 287 412 323Q385 405 300 405Q270 405 239 390T188 347L182 339V98",99:"370 305T349 305T313 320T297 358Q297 381 312 396Q317 401 317 402T307 404Q281 408 258 408Q209 408 178 376Q131 329 131 219Q131 137 162 90Q203 29 272 29Q313 29 338 55T374 117Q376 125 379 127T395 129H409Q415 123 415 120Q415 116 411 104T395 71T366 33T318 2T249 -11Q163 -11 99 53T34 214Q34 318 99 383T250 448T370 421T404 357Q404 334 387 320",100:"376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342",101:"28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275",102:"273 0Q255 3 146 3Q43 3 34 0H26V46H42Q70 46 91 49Q99 52 103 60Q104 62 104 224V385H33V431H104V497L105 564L107 574Q126 639 171 668T266 704Q267 704 275 704T289 705Q330 702 351 679T372 627Q372 604 358 590T321 576T284 590T270 627Q270 647 288 667H284Q280 668 273 668Q245 668 223 647T189 592Q183 572 182 497V431H293V385H185V225Q185 63 186 61T189 57T194 54T199 51T206 49T213 48T222 47T231 47T241 46T251 46H282V0H273",103:"329 409Q373 453 429 453Q459 453 472 434T485 396Q485 382 476 371T449 360Q416 360 412 390Q410 404 415 411Q415 412 416 414V415Q388 412 363 393Q355 388 355 386Q355 385 359 381T368 369T379 351T388 325T392 292Q392 230 343 187T222 143Q172 143 123 171Q112 153 112 133Q112 98 138 81Q147 75 155 75T227 73Q311 72 335 67Q396 58 431 26Q470 -13 470 -72Q470 -139 392 -175Q332 -206 250 -206Q167 -206 107 -175Q29 -140 29 -75Q29 -39 50 -15T92 18L103 24Q67 55 67 108Q67 155 96 193Q52 237 52 292Q52 355 102 398T223 442Q274 442 318 416L329 409ZM299 343Q294 371 273 387T221 404Q192 404 171 388T145 343Q142 326 142 292Q142 248 149 227T179 192Q196 182 222 182Q244 182 260 189T283 207T294 227T299 242Q302 258 302 292T299 343ZM403 -75Q403 -50 389 -34T348 -11T299 -2T245 0H218Q151 0 138 -6Q118 -15 107 -34T95 -74Q95 -84 101 -97T122 -127T170 -155T250 -167Q319 -167 361 -139T403 -75",104:"41 46H55Q94 46 102 60V68Q102 77 102 91T102 124T102 167T103 217T103 272T103 329Q103 366 103 407T103 482T102 542T102 586T102 603Q99 622 88 628T43 637H25V660Q25 683 27 683L37 684Q47 685 66 686T103 688Q120 689 140 690T170 693T181 694H184V367Q244 442 328 442Q451 442 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41",105:"69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247",106:"98 609Q98 637 116 653T160 669Q183 667 200 652T217 609Q217 579 200 564T158 549Q133 549 116 564T98 609ZM28 -163Q58 -168 64 -168Q124 -168 135 -77Q137 -65 137 141T136 353Q132 371 120 377T72 385H52V408Q52 431 54 431L58 432Q62 432 70 432T87 433T108 434T133 436Q151 437 171 438T202 441T214 442H218V184Q217 -36 217 -59T211 -98Q195 -145 153 -175T58 -205Q9 -205 -23 -179T-55 -117Q-55 -94 -40 -79T-2 -64T36 -79T52 -118Q52 -143 28 -163",107:"36 46H50Q89 46 97 60V68Q97 77 97 91T97 124T98 167T98 217T98 272T98 329Q98 366 98 407T98 482T98 542T97 586T97 603Q94 622 83 628T38 637H20V660Q20 683 22 683L32 684Q42 685 61 686T98 688Q115 689 135 690T165 693T176 694H179V463L180 233L240 287Q300 341 304 347Q310 356 310 364Q310 383 289 385H284V431H293Q308 428 412 428Q475 428 484 431H489V385H476Q407 380 360 341Q286 278 286 274Q286 273 349 181T420 79Q434 60 451 53T500 46H511V0H505Q496 3 418 3Q322 3 307 0H299V46H306Q330 48 330 65Q330 72 326 79Q323 84 276 153T228 222L176 176V120V84Q176 65 178 59T189 49Q210 46 238 46H254V0H246Q231 3 137 3T28 0H20V46H36",108:"42 46H56Q95 46 103 60V68Q103 77 103 91T103 124T104 167T104 217T104 272T104 329Q104 366 104 407T104 482T104 542T103 586T103 603Q100 622 89 628T44 637H26V660Q26 683 28 683L38 684Q48 685 67 686T104 688Q121 689 141 690T171 693T182 694H185V379Q185 62 186 60Q190 52 198 49Q219 46 247 46H263V0H255L232 1Q209 2 183 2T145 3T107 3T57 1L34 0H26V46H42",109:"41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q351 442 364 440T387 434T406 426T421 417T432 406T441 395T448 384T452 374T455 366L457 361L460 365Q463 369 466 373T475 384T488 397T503 410T523 422T546 432T572 439T603 442Q729 442 740 329Q741 322 741 190V104Q741 66 743 59T754 49Q775 46 803 46H819V0H811L788 1Q764 2 737 2T699 3Q596 3 587 0H579V46H595Q656 46 656 62Q657 64 657 200Q656 335 655 343Q649 371 635 385T611 402T585 404Q540 404 506 370Q479 343 472 315T464 232V168V108Q464 78 465 68T468 55T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41",110:"41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41",111:"28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30",112:"36 -148H50Q89 -148 97 -134V-126Q97 -119 97 -107T97 -77T98 -38T98 6T98 55T98 106Q98 140 98 177T98 243T98 296T97 335T97 351Q94 370 83 376T38 385H20V408Q20 431 22 431L32 432Q42 433 61 434T98 436Q115 437 135 438T165 441T176 442H179V416L180 390L188 397Q247 441 326 441Q407 441 464 377T522 216Q522 115 457 52T310 -11Q242 -11 190 33L182 40V-45V-101Q182 -128 184 -134T195 -145Q216 -148 244 -148H260V-194H252L228 -193Q205 -192 178 -192T140 -191Q37 -191 28 -194H20V-148H36ZM424 218Q424 292 390 347T305 402Q234 402 182 337V98Q222 26 294 26Q345 26 384 80T424 218",113:"33 218Q33 308 95 374T236 441H246Q330 441 381 372L387 364Q388 364 404 403L420 442H457V156Q457 -132 458 -134Q462 -142 470 -145Q491 -148 519 -148H535V-194H527L504 -193Q480 -192 453 -192T415 -191Q312 -191 303 -194H295V-148H311Q339 -148 360 -145Q369 -141 371 -135T373 -106V-41V49Q313 -11 236 -11Q154 -11 94 53T33 218ZM376 300Q346 389 278 401Q275 401 269 401T261 402Q211 400 171 350T131 214Q131 137 165 82T253 27Q296 27 328 54T376 118V300",114:"36 46H50Q89 46 97 60V68Q97 77 97 91T98 122T98 161T98 203Q98 234 98 269T98 328L97 351Q94 370 83 376T38 385H20V408Q20 431 22 431L32 432Q42 433 60 434T96 436Q112 437 131 438T160 441T171 442H174V373Q213 441 271 441H277Q322 441 343 419T364 373Q364 352 351 337T313 322Q288 322 276 338T263 372Q263 381 265 388T270 400T273 405Q271 407 250 401Q234 393 226 386Q179 341 179 207V154Q179 141 179 127T179 101T180 81T180 66V61Q181 59 183 57T188 54T193 51T200 49T207 48T216 47T225 47T235 46T245 46H276V0H267Q249 3 140 3Q37 3 28 0H20V46H36",115:"295 316Q295 356 268 385T190 414Q154 414 128 401Q98 382 98 349Q97 344 98 336T114 312T157 287Q175 282 201 278T245 269T277 256Q294 248 310 236T342 195T359 133Q359 71 321 31T198 -10H190Q138 -10 94 26L86 19L77 10Q71 4 65 -1L54 -11H46H42Q39 -11 33 -5V74V132Q33 153 35 157T45 162H54Q66 162 70 158T75 146T82 119T101 77Q136 26 198 26Q295 26 295 104Q295 133 277 151Q257 175 194 187T111 210Q75 227 54 256T33 318Q33 357 50 384T93 424T143 442T187 447H198Q238 447 268 432L283 424L292 431Q302 440 314 448H322H326Q329 448 335 442V310L329 304H301Q295 310 295 316",116:"27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27",117:"383 58Q327 -10 256 -10H249Q124 -10 105 89Q104 96 103 226Q102 335 102 348T96 369Q86 385 36 385H25V408Q25 431 27 431L38 432Q48 433 67 434T105 436Q122 437 142 438T172 441T184 442H187V261Q188 77 190 64Q193 49 204 40Q224 26 264 26Q290 26 311 35T343 58T363 90T375 120T379 144Q379 145 379 161T380 201T380 248V315Q380 361 370 372T320 385H302V431Q304 431 378 436T457 442H464V264Q464 84 465 81Q468 61 479 55T524 46H542V0Q540 0 467 -5T390 -11H383V58",118:"338 431Q344 429 422 429Q479 429 503 431H508V385H497Q439 381 423 345Q421 341 356 172T288 -2Q283 -11 263 -11Q244 -11 239 -2Q99 359 98 364Q93 378 82 381T43 385H19V431H25L33 430Q41 430 53 430T79 430T104 429T122 428Q217 428 232 431H240V385H226Q187 384 184 370Q184 366 235 234L286 102L377 341V349Q377 363 367 372T349 383T335 385H331V431H338",119:"90 368Q84 378 76 380T40 385H18V431H24L43 430Q62 430 84 429T116 428Q206 428 221 431H229V385H215Q177 383 177 368Q177 367 221 239L265 113L339 328L333 345Q323 374 316 379Q308 384 278 385H258V431H264Q270 428 348 428Q439 428 454 431H461V385H452Q404 385 404 369Q404 366 418 324T449 234T481 143L496 100L537 219Q579 341 579 347Q579 363 564 373T530 385H522V431H529Q541 428 624 428Q692 428 698 431H703V385H697Q696 385 691 385T682 384Q635 377 619 334L559 161Q546 124 528 71Q508 12 503 1T487 -11H479Q460 -11 456 -4Q455 -3 407 133L361 267Q359 263 266 -4Q261 -11 243 -11H238Q225 -11 220 -3L90 368",120:"201 0Q189 3 102 3Q26 3 17 0H11V46H25Q48 47 67 52T96 61T121 78T139 96T160 122T180 150L226 210L168 288Q159 301 149 315T133 336T122 351T113 363T107 370T100 376T94 379T88 381T80 383Q74 383 44 385H16V431H23Q59 429 126 429Q219 429 229 431H237V385Q201 381 201 369Q201 367 211 353T239 315T268 274L272 270L297 304Q329 345 329 358Q329 364 327 369T322 376T317 380T310 384L307 385H302V431H309Q324 428 408 428Q487 428 493 431H499V385H492Q443 385 411 368Q394 360 377 341T312 257L296 236L358 151Q424 61 429 57T446 50Q464 46 499 46H516V0H510H502Q494 1 482 1T457 2T432 2T414 3Q403 3 377 3T327 1L304 0H295V46H298Q309 46 320 51T331 63Q331 65 291 120L250 175Q249 174 219 133T185 88Q181 83 181 74Q181 63 188 55T206 46Q208 46 208 23V0H201",121:"69 -66Q91 -66 104 -80T118 -116Q118 -134 109 -145T91 -160Q84 -163 97 -166Q104 -168 111 -168Q131 -168 148 -159T175 -138T197 -106T213 -75T225 -43L242 0L170 183Q150 233 125 297Q101 358 96 368T80 381Q79 382 78 382Q66 385 34 385H19V431H26L46 430Q65 430 88 429T122 428Q129 428 142 428T171 429T200 430T224 430L233 431H241V385H232Q183 385 185 366L286 112Q286 113 332 227L376 341V350Q376 365 366 373T348 383T334 385H331V431H337H344Q351 431 361 431T382 430T405 429T422 429Q477 429 503 431H508V385H497Q441 380 422 345Q420 343 378 235T289 9T227 -131Q180 -204 113 -204Q69 -204 44 -177T19 -116Q19 -89 35 -78T69 -66",122:"42 263Q44 270 48 345T53 423V431H393Q399 425 399 415Q399 403 398 402L381 378Q364 355 331 309T265 220L134 41L182 40H206Q254 40 283 46T331 77Q352 105 359 185L361 201Q361 202 381 202H401V196Q401 195 393 103T384 6V0H209L34 1L31 3Q28 8 28 17Q28 30 29 31T160 210T294 394H236Q169 393 152 388Q127 382 113 367Q89 344 82 264V255H42V263",123:"434 -231Q434 -244 428 -250H410Q281 -250 230 -184Q225 -177 222 -172T217 -161T213 -148T211 -133T210 -111T209 -84T209 -47T209 0Q209 21 209 53Q208 142 204 153Q203 154 203 155Q189 191 153 211T82 231Q71 231 68 234T65 250T68 266T82 269Q116 269 152 289T203 345Q208 356 208 377T209 529V579Q209 634 215 656T244 698Q270 724 324 740Q361 748 377 749Q379 749 390 749T408 750H428Q434 744 434 732Q434 719 431 716Q429 713 415 713Q362 710 332 689T296 647Q291 634 291 499V417Q291 370 288 353T271 314Q240 271 184 255L170 250L184 245Q202 239 220 230T262 196T290 137Q291 131 291 1Q291 -134 296 -147Q306 -174 339 -192T415 -213Q429 -213 431 -216Q434 -219 434 -231",124:"139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139",125:"65 731Q65 745 68 747T88 750Q171 750 216 725T279 670Q288 649 289 635T291 501Q292 362 293 357Q306 312 345 291T417 269Q428 269 431 266T434 250T431 234T417 231Q380 231 345 210T298 157Q293 143 292 121T291 -28V-79Q291 -134 285 -156T256 -198Q202 -250 89 -250Q71 -250 68 -247T65 -230Q65 -224 65 -223T66 -218T69 -214T77 -213Q91 -213 108 -210T146 -200T183 -177T207 -139Q208 -134 209 3L210 139Q223 196 280 230Q315 247 330 250Q305 257 280 270Q225 304 212 352L210 362L209 498Q208 635 207 640Q195 680 154 696T77 713Q68 713 67 716T65 731",126:"179 251Q164 251 151 245T131 234T111 215L97 227L83 238Q83 239 95 253T121 283T142 304Q165 318 187 318T253 300T320 282Q335 282 348 288T368 299T388 318L402 306L416 295Q375 236 344 222Q330 215 313 215Q292 215 248 233T179 251",160:"",163:"699 578Q699 473 635 473Q597 473 595 508Q595 559 654 569V576Q654 619 637 648T581 677Q545 677 513 647T463 561Q460 554 437 464T414 371Q414 370 458 370H502Q508 364 508 362Q505 334 495 324H402L382 241Q377 224 373 206T366 180T361 163T358 151T354 142T350 133T344 120Q340 112 338 107T336 101L354 90Q398 63 422 54T476 44Q515 44 539 73T574 133Q578 144 580 146T598 148Q622 148 622 139Q622 138 620 130Q602 74 555 32T447 -11Q395 -11 317 38L294 51Q271 28 233 9T155 -10Q117 -10 103 5T88 39Q88 73 126 106T224 139Q236 139 247 138T266 134L273 132Q275 132 302 239L323 324H259Q253 330 253 332Q253 350 265 370H300L334 371L355 453Q356 457 360 477T366 501T372 522T379 545T387 565T397 587T409 606T425 627Q453 664 497 689T583 714Q640 714 669 676T699 578ZM245 76Q211 85 195 85Q173 85 158 71T142 42Q142 26 160 26H163Q211 30 245 76",165:"515 0Q494 3 374 3Q256 3 235 0H224V46H257Q316 47 324 58Q327 62 327 137V213H133Q121 213 113 213T97 213T86 213T78 213T73 214T70 215T69 216T68 218T67 220Q64 225 66 231T73 240Q76 242 202 242H327V273L247 407H115Q81 407 75 408T67 414Q64 419 66 425T73 434Q76 436 153 436Q228 436 228 437Q227 440 173 530T115 623Q101 637 31 637H11V683H20Q66 681 153 681Q169 681 202 681T262 682L288 683H298V637H280Q230 636 230 621Q230 619 250 584Q255 576 264 561T286 526T305 494L340 437L403 436H467L513 514Q564 596 564 605Q564 608 560 616Q550 634 517 637H508V683H516Q531 680 633 680Q722 680 731 683H738V637H723Q644 632 617 595Q614 591 568 515T521 437T597 436T676 434Q681 432 683 426T682 414T671 409T589 407H503L422 273V242H547Q673 242 676 240Q681 238 683 232T682 220Q682 219 682 218T681 217T679 216T677 215T672 214T664 213T652 213T637 213T616 213H422V139V87Q422 64 425 58T441 49Q456 46 503 46H525V0H515ZM449 406Q449 407 403 407Q358 407 358 406L370 387Q381 368 392 350L404 331Q447 404 449 406",168:"95 612Q95 633 112 651T153 669T193 652T210 612Q210 588 194 571T152 554L127 560Q95 577 95 612ZM289 611Q289 634 304 649T335 668Q336 668 340 668T346 669Q369 669 386 652T404 612T387 572T346 554Q323 554 306 570T289 611",172:"56 323T56 336T70 356H596Q603 353 611 343V102Q598 89 591 89Q587 89 584 90T579 94T575 98T572 102L571 209V316H70Q56 323 56 336",174:"915 266Q915 140 852 38T689 -120T474 -175Q312 -175 188 -71T38 190Q32 220 32 266V287Q32 345 57 416T129 545Q192 624 282 666T464 709Q513 709 522 708Q599 698 665 666T776 590T853 493T900 387T915 287V266ZM875 285Q875 339 853 399T789 517T676 616T519 668Q510 669 465 669Q380 669 299 630T155 514T77 336Q72 312 72 285V266V256Q72 123 163 11Q290 -135 474 -135Q614 -135 727 -46Q875 81 875 266V285ZM276 457Q275 458 274 460T272 463T270 465T267 467T264 469T258 471T252 472T243 473T232 474T218 474H204V514H335Q477 514 499 510Q560 502 610 467T661 375Q661 362 658 350T648 327T635 308T618 292T601 280T583 269T568 262T554 256L547 253Q548 252 556 247T570 237T586 223T602 202T614 174Q616 169 626 123T638 72Q652 23 683 23Q715 23 720 68Q721 78 724 81T740 84T756 82T760 70Q760 47 747 25T715 -7Q700 -14 673 -14Q672 -14 662 -14T643 -12T619 -7T593 2T568 16T547 37T534 67Q531 80 531 97Q531 103 531 116T532 136Q532 218 472 236Q466 238 413 239H360V148L361 58Q366 47 375 44T418 40H432V0H424Q409 3 318 3T212 0H204V40H218Q242 40 253 42T268 47T276 58V457ZM376 473Q365 471 363 464T360 430V366V276H416Q421 276 434 276T453 276T469 277T486 279T501 282T517 287T529 294T542 305Q561 324 561 375Q561 424 545 444T482 472Q478 473 427 474Q415 474 403 474T384 474L376 473",175:"69 544V590H430V544H69",176:"147 628Q147 669 179 692T244 715Q298 715 325 689T352 629Q352 592 323 567T249 542Q202 542 175 567T147 628ZM313 628Q313 660 300 669T259 678H253Q248 678 242 678T234 679Q217 679 207 674T192 659T188 644T187 629Q187 600 198 590Q210 579 250 579H265Q279 579 288 581T305 595T313 628",177:"56 320T56 333T70 353H369V502Q369 651 371 655Q376 666 388 666Q402 666 405 654T409 596V500V353H707Q722 345 722 333Q722 320 707 313H409V40H707Q722 32 722 20T707 0H70Q56 7 56 20T70 40H369V313H70Q56 320 56 333",180:"349 699Q367 699 380 686T393 656Q393 651 392 647T387 637T380 627T367 616T351 602T330 585T303 563L232 505L217 519Q203 533 204 533Q204 534 229 567T282 636T313 678L316 681Q318 684 321 686T328 692T337 697T349 699",183:"78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250",215:"630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29",240:"75 566V604Q75 624 79 629T102 635Q124 635 127 629T131 588L133 550L191 588L249 628L231 635Q176 654 124 657Q116 657 106 658L95 659Q94 661 94 687T95 715Q99 717 113 717Q195 717 282 679L309 668L331 681Q351 697 391 721Q428 748 435 748Q437 749 446 749Q470 749 473 746Q478 744 478 681V621Q466 615 456 615Q435 615 424 624L422 661V699L382 675L344 648Q353 639 366 630Q480 538 504 413Q509 393 509 333V313Q509 284 507 257T495 184T466 102T413 33T329 -16Q311 -21 275 -21Q226 -21 195 -10Q150 7 110 50T53 141Q42 179 42 227Q42 332 101 403T245 474Q282 474 314 461T359 436T380 415Q386 405 389 408Q389 426 378 475Q368 505 355 529T329 567T306 590T288 603L282 606L120 501Q116 500 102 500Q84 500 75 506V566ZM388 225Q388 376 309 410Q299 416 273 419Q216 419 191 390Q174 371 168 342T162 218Q162 112 184 79Q212 39 273 39Q312 39 342 62T380 121Q388 159 388 225",247:"318 466Q318 500 339 518T386 537Q418 537 438 517T458 466Q458 438 440 417T388 396Q355 396 337 417T318 466ZM56 237T56 250T70 270H706Q721 262 721 250T706 230H70Q56 237 56 250ZM318 34Q318 68 339 86T386 105Q418 105 438 85T458 34Q458 6 440 -15T388 -36Q355 -36 337 -15T318 34",305:"247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247",567:"28 -163Q58 -168 64 -168Q124 -168 135 -77Q137 -65 137 141T136 353Q132 371 120 377T72 385H52V408Q52 431 54 431L58 432Q62 432 70 432T87 433T108 434T133 436Q151 437 171 438T202 441T214 442H218V184Q217 -36 217 -59T211 -98Q195 -145 153 -175T58 -205Q9 -205 -23 -179T-55 -117Q-55 -94 -40 -79T-2 -64T36 -79T52 -118Q52 -143 28 -163",697:"79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43",710:"112 560L249 694L257 686Q387 562 387 560L361 531Q359 532 303 581L250 627L195 580Q182 569 169 557T148 538L140 532Q138 530 125 546L112 560",711:"114 611L127 630L136 644Q138 644 193 612Q248 581 250 581L306 612Q361 644 363 644L385 611L318 562L249 513L114 611",713:"69 544V590H430V544H69",714:"349 699Q367 699 380 686T393 656Q393 651 392 647T387 637T380 627T367 616T351 602T330 585T303 563L232 505L217 519Q203 533 204 533Q204 534 229 567T282 636T313 678L316 681Q318 684 321 686T328 692T337 697T349 699",715:"106 655Q106 671 119 685T150 699Q166 699 177 688Q190 671 222 629T275 561T295 533T282 519L267 505L196 563Q119 626 113 634Q106 643 106 655",728:"250 515Q179 515 138 565T92 683V694H129V689Q129 688 129 683T130 675Q137 631 169 599T248 567Q304 567 337 608T370 689V694H407V683Q403 617 361 566T250 515",729:"190 609Q190 637 208 653T252 669Q275 667 292 652T309 609Q309 579 292 564T250 549Q225 549 208 564T190 609",730:"147 628Q147 669 179 692T244 715Q298 715 325 689T352 629Q352 592 323 567T249 542Q202 542 175 567T147 628ZM313 628Q313 660 300 669T259 678H253Q248 678 242 678T234 679Q217 679 207 674T192 659T188 644T187 629Q187 600 198 590Q210 579 250 579H265Q279 579 288 581T305 595T313 628",732:"179 601Q164 601 151 595T131 584T111 565L97 577L83 588Q83 589 95 603T121 633T142 654Q165 668 187 668T253 650T320 632Q335 632 348 638T368 649T388 668L402 656L416 645Q375 586 344 572Q330 565 313 565Q292 565 248 583T179 601",768:"-394 655Q-394 671 -381 685T-350 699Q-334 699 -323 688Q-310 671 -278 629T-225 561T-205 533T-218 519L-233 505L-304 563Q-381 626 -387 634Q-394 643 -394 655",769:"-151 699Q-133 699 -120 686T-107 656Q-107 651 -108 647T-113 637T-120 627T-133 616T-149 602T-170 585T-197 563L-268 505L-283 519Q-297 533 -296 533Q-296 534 -271 567T-218 636T-187 678L-184 681Q-182 684 -179 686T-172 692T-163 697T-151 699",770:"-388 560L-251 694L-243 686Q-113 562 -113 560L-139 531Q-141 532 -197 581L-250 627L-305 580Q-318 569 -331 557T-352 538L-360 532Q-362 530 -375 546L-388 560",771:"-321 601Q-336 601 -349 595T-369 584T-389 565L-403 577L-417 588Q-417 589 -405 603T-379 633T-358 654Q-335 668 -313 668T-247 650T-180 632Q-165 632 -152 638T-132 649T-112 668L-98 656L-84 645Q-125 586 -156 572Q-170 565 -187 565Q-208 565 -252 583T-321 601",772:"-431 544V590H-70V544H-431",774:"-250 515Q-321 515 -362 565T-408 683V694H-371V689Q-371 688 -371 683T-370 675Q-363 631 -331 599T-252 567Q-196 567 -163 608T-130 689V694H-93V683Q-97 617 -139 566T-250 515",775:"-310 609Q-310 637 -292 653T-248 669Q-225 667 -208 652T-191 609Q-191 579 -208 564T-250 549Q-275 549 -292 564T-310 609",776:"-405 612Q-405 633 -388 651T-347 669T-307 652T-290 612Q-290 588 -306 571T-348 554L-373 560Q-405 577 -405 612ZM-211 611Q-211 634 -196 649T-165 668Q-164 668 -160 668T-154 669Q-131 669 -114 652T-96 612T-113 572T-154 554Q-177 554 -194 570T-211 611",778:"-353 628Q-353 669 -321 692T-256 715Q-202 715 -175 689T-148 629Q-148 592 -177 567T-251 542Q-298 542 -325 567T-353 628ZM-187 628Q-187 660 -200 669T-241 678H-247Q-252 678 -258 678T-266 679Q-283 679 -293 674T-308 659T-312 644T-313 629Q-313 600 -302 590Q-290 579 -250 579H-235Q-221 579 -212 581T-195 595T-187 628",779:"-292 701Q-278 701 -262 690T-246 658Q-246 649 -250 641Q-252 637 -297 574T-344 510L-378 528Q-378 530 -355 598T-327 676Q-316 701 -292 701ZM-126 701Q-112 701 -96 690T-80 658Q-80 649 -84 641Q-86 637 -131 574T-178 510L-212 528Q-212 530 -189 598T-161 676Q-150 701 -126 701",780:"-386 611L-373 630L-364 644Q-362 644 -307 612Q-252 581 -250 581L-194 612Q-139 644 -137 644L-115 611L-182 562L-251 513L-386 611",824:"-612 -215T-619 -215T-631 -212T-637 -204T-639 -197Q-639 -190 -634 -183Q-621 -157 -400 274T-176 707Q-173 716 -160 716Q-153 716 -148 712T-142 703T-140 696Q-140 691 -372 241T-608 -212Q-612 -215 -619 -215",913:"255 0Q240 3 140 3Q48 3 39 0H32V46H47Q119 49 139 88Q140 91 192 245T295 553T348 708Q351 716 366 716H376Q396 715 400 709Q402 707 508 390L617 67Q624 54 636 51T687 46H717V0H708Q699 3 581 3Q458 3 437 0H427V46H440Q510 46 510 64Q510 66 486 138L462 209H229L209 150Q189 91 189 85Q189 72 209 59T259 46H264V0H255ZM447 255L345 557L244 256Q244 255 345 255H447",914:"131 622Q124 629 120 631T104 634T61 637H28V683H229H267H346Q423 683 459 678T531 651Q574 627 599 590T624 512Q624 461 583 419T476 360L466 357Q539 348 595 302T651 187Q651 119 600 67T469 3Q456 1 242 0H28V46H61Q103 47 112 49T131 61V622ZM511 513Q511 560 485 594T416 636Q415 636 403 636T371 636T333 637Q266 637 251 636T232 628Q229 624 229 499V374H312L396 375L406 377Q410 378 417 380T442 393T474 417T499 456T511 513ZM537 188Q537 239 509 282T430 336L329 337H229V200V116Q229 57 234 52Q240 47 334 47H383Q425 47 443 53Q486 67 511 104T537 188",915:"128 619Q121 626 117 628T101 631T58 634H25V680H554V676Q556 670 568 560T582 444V440H542V444Q542 445 538 478T523 545T492 598Q454 634 349 634H334Q264 634 249 633T233 621Q232 618 232 339L233 61Q240 54 245 52T270 48T333 46H360V0H348Q324 3 182 3Q51 3 36 0H25V46H58Q100 47 109 49T128 61V619",916:"51 0Q46 4 46 7Q46 9 215 357T388 709Q391 716 416 716Q439 716 444 709Q447 705 616 357T786 7Q786 4 781 0H51ZM507 344L384 596L137 92L383 91H630Q630 93 507 344",917:"128 619Q121 626 117 628T101 631T58 634H25V680H597V676Q599 670 611 560T625 444V440H585V444Q584 447 582 465Q578 500 570 526T553 571T528 601T498 619T457 629T411 633T353 634Q266 634 251 633T233 622Q233 622 233 621Q232 619 232 497V376H286Q359 378 377 385Q413 401 416 469Q416 471 416 473V493H456V213H416V233Q415 268 408 288T383 317T349 328T297 330Q290 330 286 330H232V196V114Q232 57 237 52Q243 47 289 47H340H391Q428 47 452 50T505 62T552 92T584 146Q594 172 599 200T607 247T612 270V273H652V270Q651 267 632 137T610 3V0H25V46H58Q100 47 109 49T128 61V619",918:"69 443Q69 452 74 554T80 683H549Q555 677 555 664Q555 649 554 648Q552 645 366 348T179 50T192 49T263 49H275H302Q333 49 353 50T401 59T447 78T482 115T507 173Q513 200 520 273V282H560V274Q560 272 552 143T543 8V0H302L61 1L58 3Q55 8 55 21V35Q59 43 153 193T340 489T432 637H343Q259 637 214 625T141 573Q109 523 109 445Q109 443 89 443H69",919:"128 622Q121 629 117 631T101 634T58 637H25V683H36Q57 680 180 680Q315 680 324 683H335V637H302Q262 636 251 634T233 622L232 500V378H517V622Q510 629 506 631T490 634T447 637H414V683H425Q446 680 569 680Q704 680 713 683H724V637H691Q651 636 640 634T622 622V61Q628 51 639 49T691 46H724V0H713Q692 3 569 3Q434 3 425 0H414V46H447Q489 47 498 49T517 61V332H232V197L233 61Q239 51 250 49T302 46H335V0H324Q303 3 180 3Q45 3 36 0H25V46H58Q100 47 109 49T128 61V622",920:"56 340Q56 423 86 494T164 610T270 680T388 705Q521 705 621 601T722 341Q722 260 693 191T617 75T510 4T388 -22T267 3T160 74T85 189T56 340ZM610 339Q610 428 590 495T535 598T463 651T384 668Q332 668 289 638T221 566Q168 485 168 339Q168 274 176 235Q189 158 228 105T324 28Q356 16 388 16Q415 16 442 24T501 54T555 111T594 205T610 339ZM223 263V422H263V388H514V422H554V263H514V297H263V263H223",921:"328 0Q307 3 180 3T32 0H21V46H43Q92 46 106 49T126 60Q128 63 128 342Q128 620 126 623Q122 628 118 630T96 635T43 637H21V683H32Q53 680 180 680T328 683H339V637H317Q268 637 254 634T234 623Q232 620 232 342Q232 63 234 60Q238 55 242 53T264 48T317 46H339V0H328",922:"128 622Q121 629 117 631T101 634T58 637H25V683H36Q57 680 180 680Q315 680 324 683H335V637H313Q235 637 233 620Q232 618 232 462L233 307L379 449Q425 494 479 546Q518 584 524 591T531 607V608Q531 630 503 636Q501 636 498 636T493 637H489V683H499Q517 680 630 680Q704 680 716 683H722V637H708Q633 633 589 597Q584 592 495 506T406 419T515 254T631 80Q644 60 662 54T715 46H736V0H728Q719 3 615 3Q493 3 472 0H461V46H469Q515 46 515 72Q515 78 512 84L336 351Q332 348 278 296L232 251V156Q232 62 235 58Q243 47 302 46H335V0H324Q303 3 180 3Q45 3 36 0H25V46H58Q100 47 109 49T128 61V622",923:"320 708Q326 716 340 716H348H355Q367 716 372 708Q374 706 423 547T523 226T575 62Q581 52 591 50T634 46H661V0H653Q644 3 532 3Q411 3 390 0H379V46H392Q464 46 464 65Q463 70 390 305T316 539L246 316Q177 95 177 84Q177 72 198 59T248 46H253V0H245Q230 3 130 3Q47 3 38 0H32V46H45Q112 51 127 91Q128 92 224 399T320 708",924:"132 622Q125 629 121 631T105 634T62 637H29V683H135Q221 683 232 682T249 675Q250 674 354 398L458 124L562 398Q666 674 668 675Q671 681 683 682T781 683H887V637H854Q814 636 803 634T785 622V61Q791 51 802 49T854 46H887V0H876Q855 3 736 3Q605 3 596 0H585V46H618Q660 47 669 49T688 61V347Q688 424 688 461T688 546T688 613L687 632Q454 14 450 7Q446 1 430 1T410 7Q409 9 292 316L176 624V606Q175 588 175 543T175 463T175 356L176 86Q187 50 261 46H278V0H269Q254 3 154 3Q52 3 37 0H29V46H46Q78 48 98 56T122 69T132 86V622",925:"42 46Q74 48 94 56T118 69T128 86V634H124Q114 637 52 637H25V683H232L235 680Q237 679 322 554T493 303L578 178V598Q572 608 568 613T544 627T492 637H475V683H483Q498 680 600 680Q706 680 715 683H724V637H707Q634 633 622 598L621 302V6L614 0H600Q585 0 582 3T481 150T282 443T171 605V345L172 86Q183 50 257 46H274V0H265Q250 3 150 3Q48 3 33 0H25V46H42",926:"47 509L55 676Q55 677 333 677T611 676L619 509Q619 508 599 508T579 510Q579 529 575 557T564 589Q550 594 333 594T102 589Q95 586 91 558T87 510Q87 508 67 508T47 509ZM139 260V445H179V394H487V445H527V260H487V311H179V260H139ZM50 0L42 180H62Q82 180 82 178Q82 133 89 105Q92 93 95 90T108 86Q137 83 333 83Q530 83 558 86Q568 87 571 90T577 105Q584 133 584 178Q584 180 604 180H624L616 0H50",927:"56 340Q56 423 86 494T164 610T270 680T388 705Q521 705 621 601T722 341Q722 260 693 191T617 75T510 4T388 -22T267 3T160 74T85 189T56 340ZM467 647Q426 665 388 665Q360 665 331 654T269 620T213 549T179 439Q174 411 174 354Q174 144 277 61Q327 20 385 20H389H391Q474 20 537 99Q603 188 603 354Q603 411 598 439Q577 592 467 647",928:"128 619Q121 626 117 628T101 631T58 634H25V680H724V634H691Q651 633 640 631T622 619V61Q628 51 639 49T691 46H724V0H713Q692 3 569 3Q434 3 425 0H414V46H447Q489 47 498 49T517 61V634H232V348L233 61Q239 51 250 49T302 46H335V0H324Q303 3 180 3Q45 3 36 0H25V46H58Q100 47 109 49T128 61V619",929:"130 622Q123 629 119 631T103 634T60 637H27V683H214Q237 683 276 683T331 684Q419 684 471 671T567 616Q624 563 624 489Q624 421 573 372T451 307Q429 302 328 301H234V181Q234 62 237 58Q245 47 304 46H337V0H326Q305 3 182 3Q47 3 38 0H27V46H60Q102 47 111 49T130 61V622ZM507 488Q507 514 506 528T500 564T483 597T450 620T397 635Q385 637 307 637H286Q237 637 234 628Q231 624 231 483V342H302H339Q390 342 423 349T481 382Q507 411 507 488",931:"666 247Q664 244 652 126T638 4V0H351Q131 0 95 0T57 5V6Q54 12 57 17L73 36Q89 54 121 90T182 159L305 299L56 644L55 658Q55 677 60 681Q63 683 351 683H638V679Q640 674 652 564T666 447V443H626V447Q618 505 604 543T559 605Q529 626 478 631T333 637H294H189L293 494Q314 465 345 422Q400 346 400 340Q400 338 399 337L154 57Q407 57 428 58Q476 60 508 68T551 83T575 103Q595 125 608 162T624 225L626 251H666V247",932:"36 443Q37 448 46 558T55 671V677H666V671Q667 666 676 556T685 443V437H645V443Q645 445 642 478T631 544T610 593Q593 614 555 625Q534 630 478 630H451H443Q417 630 414 618Q413 616 413 339V63Q420 53 439 50T528 46H558V0H545L361 3Q186 1 177 0H164V46H194Q264 46 283 49T309 63V339V550Q309 620 304 625T271 630H244H224Q154 630 119 601Q101 585 93 554T81 486T76 443V437H36V443",933:"55 551Q55 604 91 654T194 705Q240 705 277 681T334 624T367 556T385 498L389 474L392 488Q394 501 400 521T414 566T438 615T473 659T521 692T584 705Q620 705 648 689T691 647T714 597T722 551Q722 540 719 538T699 536Q680 536 677 541Q677 542 677 544T676 548Q676 576 650 596T588 616H582Q538 616 505 582Q466 543 454 477T441 318Q441 301 441 269T442 222V61Q448 55 452 53T478 48T542 46H569V0H557Q533 3 389 3T221 0H209V46H236Q256 46 270 46T295 47T311 48T322 51T328 54T332 57T337 61V209Q337 383 333 415Q313 616 189 616Q154 616 128 597T101 548Q101 540 97 538T78 536Q63 536 59 538T55 551",934:"312 622Q310 623 307 625T303 629T297 631T286 634T270 635T246 636T211 637H184V683H196Q220 680 361 680T526 683H538V637H511Q468 637 447 635T422 631T411 622V533L425 531Q525 519 595 466T665 342Q665 301 642 267T583 209T506 172T425 152L411 150V61Q417 55 421 53T447 48T511 46H538V0H526Q502 3 361 3T196 0H184V46H211Q231 46 245 46T270 47T286 48T297 51T303 54T307 57T312 61V150H310Q309 151 289 153T232 166T160 195Q149 201 136 210T103 238T69 284T56 342Q56 414 128 467T294 530Q309 532 310 533H312V622ZM170 342Q170 207 307 188H312V495H309Q301 495 282 491T231 469T186 423Q170 389 170 342ZM415 188Q487 199 519 236T551 342Q551 384 539 414T507 459T470 481T434 491T415 495H410V188H415",935:"270 0Q252 3 141 3Q46 3 31 0H23V46H40Q129 50 161 88Q165 94 244 216T324 339Q324 341 235 480T143 622Q133 631 119 634T57 637H37V683H46Q64 680 172 680Q297 680 318 683H329V637H324Q307 637 286 632T263 621Q263 618 322 525T384 431Q385 431 437 511T489 593Q490 595 490 599Q490 611 477 622T436 637H428V683H437Q455 680 566 680Q661 680 676 683H684V637H667Q585 634 551 599Q548 596 478 491Q412 388 412 387Q412 385 514 225T620 62Q628 53 642 50T695 46H726V0H717Q699 3 591 3Q466 3 445 0H434V46H440Q454 46 476 51T499 64Q499 67 463 124T390 238L353 295L350 292Q348 290 343 283T331 265T312 236T286 195Q219 88 218 84Q218 70 234 59T272 46H280V0H270",936:"340 622Q338 623 335 625T331 629T325 631T314 634T298 635T274 636T239 637H212V683H224Q248 680 389 680T554 683H566V637H539Q479 637 464 635T439 622L438 407Q438 192 439 192Q443 193 449 195T474 207T507 232T536 276T557 344Q560 365 562 417T573 493Q587 536 620 544Q627 546 671 546H715L722 540V515Q714 509 708 509Q680 505 671 476T658 392T644 307Q599 177 451 153L438 151V106L439 61Q446 54 451 52T476 48T539 46H566V0H554Q530 3 389 3T224 0H212V46H239Q259 46 273 46T298 47T314 48T325 51T331 54T335 57T340 61V151Q126 178 117 406Q115 503 69 509Q55 509 55 526Q55 541 59 543T86 546H107H120Q150 546 161 543T184 528Q198 514 204 493Q212 472 213 420T226 316T272 230Q287 216 303 207T330 194L339 192Q340 192 340 407V622",937:"55 454Q55 503 75 546T127 617T197 665T272 695T337 704H352Q396 704 404 703Q527 687 596 615T666 454Q666 392 635 330T559 200T499 83V80H543Q589 81 600 83T617 93Q622 102 629 135T636 172L637 177H677V175L660 89Q645 3 644 2V0H552H488Q461 0 456 3T451 20Q451 89 499 235T548 455Q548 512 530 555T483 622T424 656T361 668Q332 668 303 658T243 626T193 560T174 456Q174 380 222 233T270 20Q270 7 263 0H77V2Q76 3 61 89L44 175V177H84L85 172Q85 171 88 155T96 119T104 93Q109 86 120 84T178 80H222V83Q206 132 162 199T87 329T55 454",8192:"",8193:"",8194:"",8195:"",8196:"",8197:"",8198:"",8201:"",8202:"",8203:"",8204:"",8211:"0 248V285H499V248H0",8212:"0 248V285H999V248H0",8213:"0 248V285H999V248H0",8214:"133 736Q138 750 153 750Q164 750 170 739Q172 735 172 250T170 -239Q164 -250 152 -250Q144 -250 138 -244L137 -243Q133 -241 133 -179T132 250Q132 731 133 736ZM329 739Q334 750 346 750Q353 750 361 744L362 743Q366 741 366 679T367 250T367 -178T362 -243L361 -244Q355 -250 347 -250Q335 -250 329 -239Q327 -235 327 250T329 739",8215:"0 -62V-25H499V-62H0",8216:"64 494Q64 548 86 597T131 670T160 694Q163 694 172 685T182 672Q182 669 170 656T144 625T116 573T101 501Q101 489 102 489T107 491T120 497T138 500Q163 500 180 483T198 440T181 397T139 379Q110 379 87 405T64 494",8217:"78 634Q78 659 95 676T138 694Q166 694 189 668T212 579Q212 525 190 476T146 403T118 379Q114 379 105 388T95 401Q95 404 107 417T133 448T161 500T176 572Q176 584 175 584T170 581T157 576T139 573Q114 573 96 590T78 634",8220:"128 494Q128 528 137 560T158 616T185 658T209 685T223 694T236 685T245 670Q244 668 231 654T204 622T178 571T164 501Q164 489 165 489T170 491T183 497T201 500Q226 500 244 483T262 440T245 397T202 379Q173 379 151 405T128 494ZM332 494Q332 528 341 560T362 616T389 658T413 685T427 694T439 685T449 672Q449 669 437 656T411 625T383 573T368 501Q368 489 369 489T374 491T387 497T405 500Q430 500 448 483T466 440T449 397T406 379Q377 379 355 405T332 494",8221:"34 634Q34 659 50 676T93 694Q121 694 144 668T168 579Q168 525 146 476T101 403T73 379Q69 379 60 388T50 401Q50 404 62 417T88 448T116 500T131 572Q131 584 130 584T125 581T112 576T94 573Q69 573 52 590T34 634ZM238 634Q238 659 254 676T297 694Q325 694 348 668T372 579Q372 525 350 476T305 403T277 379Q273 379 264 388T254 401Q254 404 266 417T292 448T320 500T335 572Q335 584 334 584T329 581T316 576T298 573Q273 573 256 590T238 634",8224:"182 675Q195 705 222 705Q234 705 243 700T253 691T263 675L262 655Q262 620 252 549T240 454V449Q250 451 288 461T346 472T377 461T389 431Q389 417 379 404T346 390Q327 390 288 401T243 412H240V405Q245 367 250 339T258 301T261 274T263 225Q263 124 255 -41T239 -213Q236 -216 222 -216H217Q206 -216 204 -212T200 -186Q199 -175 199 -168Q181 38 181 225Q181 265 182 280T191 327T204 405V412H201Q196 412 157 401T98 390Q76 390 66 403T55 431T65 458T98 472Q116 472 155 462T205 449Q204 452 204 460T201 490T193 547Q182 619 182 655V675",8225:"181 658Q181 705 222 705T263 658Q263 633 252 572T240 497Q240 496 241 496Q243 496 285 507T345 519Q365 519 376 508T388 478Q388 466 384 458T375 447T361 438H344Q318 438 282 448T241 459Q240 458 240 456Q240 449 251 384T263 297Q263 278 255 267T238 253T222 250T206 252T190 266T181 297Q181 323 192 383T204 458Q204 459 203 459Q198 459 162 449T101 438H84Q74 443 70 446T61 457T56 478Q56 497 67 508T99 519Q117 519 159 508T203 496Q204 496 204 499Q204 507 193 572T181 658ZM181 202Q181 249 222 249T263 202Q263 185 259 161T249 103T240 48V41H243Q248 41 287 52T346 63T377 52T389 22Q389 8 379 -5T346 -19Q327 -19 288 -8T243 3H240V-4Q243 -24 249 -58T259 -117T263 -158Q263 -177 255 -188T238 -202T222 -205T206 -203T190 -189T181 -158Q181 -141 185 -117T195 -59T204 -4V3H201Q196 3 157 -8T98 -19Q76 -19 66 -6T55 22T65 49T98 63Q117 63 156 52T201 41H204V48Q201 68 195 102T185 161T181 202",8226:"55 251Q55 328 112 386T249 444T386 388T444 249Q444 171 388 113T250 55Q170 55 113 112T55 251",8230:"78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60ZM525 60Q525 84 542 102T585 120Q609 120 627 104T646 61Q646 36 629 18T586 0T543 17T525 60ZM972 60Q972 84 989 102T1032 120Q1056 120 1074 104T1093 61Q1093 36 1076 18T1033 0T990 17T972 60",8242:"79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43",8245:"12 501Q12 527 31 542T63 558Q73 560 77 560Q114 560 128 528Q133 518 188 293T244 61Q244 56 223 50T195 43Q192 43 190 45T102 263T14 486Q12 496 12 501",8254:"69 544V590H430V544H69",8260:"423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750",8288:"",8289:"",8290:"",8291:"",8292:"",8407:"377 694Q377 702 382 708T397 714Q404 714 409 709Q414 705 419 690Q429 653 460 633Q471 626 471 615Q471 606 468 603T454 594Q411 572 379 531Q377 529 374 525T369 519T364 517T357 516Q350 516 344 521T337 536Q337 555 384 595H213L42 596Q29 605 29 615Q29 622 42 635H401Q377 673 377 694",8450:"684 131Q684 125 672 109T633 71T573 29T489 -5T386 -19Q330 -19 276 -3T174 46T91 134T44 261Q39 283 39 341T44 421Q66 538 143 611T341 699Q344 699 364 700T395 701Q449 698 503 677T585 655Q603 655 611 662T620 678T625 694T639 702Q650 702 657 690V481L653 474Q640 467 628 472Q624 476 618 496T595 541Q562 587 507 625T390 663H381Q337 663 299 625Q212 547 212 336Q212 249 233 179Q274 30 405 30Q533 30 641 130Q658 147 666 147Q671 147 677 143T684 131ZM250 625Q264 643 261 643Q238 635 214 620T161 579T110 510T79 414Q74 384 74 341T79 268Q89 213 113 169T164 101T217 61T260 39L277 34Q270 41 264 48Q199 111 181 254Q178 281 178 344T181 434Q200 559 250 625ZM621 565V625Q617 623 613 623Q603 619 590 619H575L588 605Q608 583 610 579L621 565",8459:"331 505Q331 519 382 574T472 629H480Q512 629 529 614T547 576Q547 555 534 532T520 504Q520 493 549 493Q590 493 623 506T668 533L681 546Q731 600 772 641T832 700T852 717Q857 717 860 711T865 697L866 690Q866 688 813 617T708 475T656 403Q682 403 714 404H771L780 416Q1004 707 1167 707Q1209 707 1225 689T1241 646Q1241 604 1209 547T1118 447Q1081 422 1034 405T952 382T888 374T857 370H852L826 334Q733 204 708 144Q691 104 691 76Q691 29 748 29Q768 31 791 48T831 83T862 122T881 146Q883 148 900 148H917Q921 143 921 140T914 127Q810 -8 723 -8Q611 -4 611 100Q611 142 631 191T676 275T721 337T742 367Q716 367 685 366H628L620 355Q618 352 558 268Q486 168 461 141Q405 79 339 34T215 -28Q188 -36 153 -36Q86 -36 58 -11T29 46Q29 82 55 120T123 158Q144 158 154 146T164 119Q164 102 143 89T100 75Q92 75 86 76T77 80T72 82Q67 82 67 60Q67 28 99 14T170 0Q214 0 272 47T419 224L505 340L518 357Q513 357 504 356T467 347T415 330T360 300T308 253Q296 238 295 237H278H274Q256 237 256 243Q256 248 263 256Q291 294 330 321T407 362T476 382T530 393T552 398Q556 402 573 423T600 454Q602 457 604 460T608 465L610 467Q565 455 532 455Q465 455 449 483Q447 487 447 498Q447 513 463 538T479 579Q479 593 463 593Q436 593 385 519Q374 504 371 502T360 499H353H349Q331 499 331 505ZM1195 634Q1195 643 1195 648T1185 662T1157 671Q1130 671 1092 644T1019 579T952 502T901 436L882 409L891 410Q900 411 913 412T934 415Q1081 439 1144 520Q1195 590 1195 634",8460:"11 -16L1 0Q7 6 25 27T57 62T91 88T128 101Q159 99 195 66L203 59L211 67Q239 95 239 133Q239 158 210 213T152 330T123 430Q123 477 173 536T269 630T320 666Q376 610 440 606H443Q457 606 466 611T519 647L542 664Q543 664 543 654V643L522 622Q434 537 403 537Q388 537 366 543T329 555T293 570T270 580L261 585L253 574Q206 517 206 475Q206 452 218 416T242 356L255 331Q256 331 270 345T324 391T421 459L437 468H453Q545 463 608 421L618 415L623 392Q644 307 644 233Q644 97 612 9Q604 -10 601 -15T581 -35Q505 -104 467 -124Q446 -133 431 -133Q414 -132 399 -126T376 -115T368 -107Q368 -106 392 -75L415 -43Q432 -67 444 -73T472 -79H474Q479 -79 484 -78T501 -69T521 -50T538 -13T551 46Q558 97 558 180Q558 232 557 245Q553 277 547 300T528 349T488 389T424 404Q344 404 276 295Q272 288 273 285Q300 216 300 168Q300 161 300 156T298 145T297 137T293 129T289 123T283 116T277 107Q212 23 178 -13L166 -26L149 -9Q108 32 81 32Q63 32 21 -7L11 -16",8461:"14 666Q14 675 26 683H344L351 679Q361 665 351 655Q344 648 317 648Q287 645 282 641Q270 637 269 623T266 497V370H511V497Q511 519 510 553Q509 615 507 626T496 641H495Q489 645 459 648Q420 648 420 665Q420 672 426 679L433 683H751Q762 676 762 666Q762 648 724 648Q684 645 677 632Q675 626 675 341Q675 57 677 52Q684 38 724 35Q762 35 762 16Q762 6 751 -1H433L426 3Q420 10 420 17Q420 35 459 35Q501 38 506 52Q511 64 511 190V323H266V190Q266 60 271 52Q276 38 317 35Q342 35 351 28Q360 17 351 3L344 -1H26Q14 5 14 16Q14 35 53 35Q94 38 99 52Q104 60 104 341T99 632Q93 645 53 648Q14 648 14 666ZM233 341V553Q233 635 239 648H131Q134 641 135 638T137 603T139 517T139 341Q139 131 138 89T132 37Q131 36 131 35H239Q233 47 233 129V341ZM639 341V489Q639 548 639 576T640 620T642 639T646 648H537L542 639Q546 625 546 341Q546 130 545 88T538 37Q537 36 537 35H646Q643 41 643 42T641 55T639 84T639 140V341",8462:"137 683Q138 683 209 688T282 694Q294 694 294 685Q294 674 258 534Q220 386 220 383Q220 381 227 388Q288 442 357 442Q411 442 444 415T478 336Q478 285 440 178T402 50Q403 36 407 31T422 26Q450 26 474 56T513 138Q516 149 519 151T535 153Q555 153 555 145Q555 144 551 130Q535 71 500 33Q466 -10 419 -10H414Q367 -10 346 17T325 74Q325 90 361 192T398 345Q398 404 354 404H349Q266 404 205 306L198 293L164 158Q132 28 127 16Q114 -11 83 -11Q69 -11 59 -2T48 16Q48 30 121 320L195 616Q195 629 188 632T149 637H128Q122 643 122 645T124 664Q129 683 137 683",8463:"150 475Q147 475 118 466T82 457Q73 457 64 467T54 487Q54 490 55 492Q63 506 64 506Q67 512 118 526Q162 541 169 546Q173 559 175 575Q181 596 181 604Q181 613 166 617Q164 617 153 618T135 619Q119 619 114 621T109 630Q109 636 114 656T122 681Q125 685 202 688Q272 695 286 695Q304 695 304 684Q304 682 291 628L278 577L386 612Q466 635 476 635T492 627T499 607Q499 593 489 586Q485 583 373 546L262 512Q262 511 248 455T233 397T236 397T244 404Q295 441 357 441Q405 441 445 417T485 333Q485 284 449 178T412 58T426 44Q447 44 466 68Q485 87 500 130L509 152H531H543Q562 152 562 144Q562 128 546 93T494 23T415 -13Q385 -13 359 3T322 44Q318 52 318 77Q318 99 352 196T386 337Q386 386 346 386Q318 386 286 370Q267 361 245 338T211 292Q207 287 193 235T162 113T138 21Q128 7 122 4Q105 -12 83 -12Q66 -12 54 -2T42 26Q42 45 98 257L151 475H150",8464:"487 225Q398 255 398 342Q398 410 455 492Q491 545 552 582T669 636T800 673T918 712Q930 717 933 717Q939 717 942 706T946 689Q946 686 915 664T830 591T729 480Q691 429 657 351T615 260Q628 260 663 279T733 339T769 426Q769 442 767 459T764 479Q764 484 766 486Q769 488 781 493T797 498Q802 498 803 494T808 472Q813 442 813 425Q813 369 761 315Q692 246 605 224L592 220L584 209Q547 155 487 106T358 25Q270 -17 191 -17Q143 -17 101 1T59 59Q59 96 85 127T148 158Q169 158 179 146T189 119Q189 102 167 89T125 75Q116 75 109 77T101 81T97 80Q96 77 96 72Q96 50 123 36T204 21H216Q249 21 302 49T411 134Q439 161 459 187Q487 220 487 225ZM460 334Q460 308 472 290T498 268L510 263Q515 263 545 313T626 438T723 561Q751 589 775 609T808 636T817 644H816Q813 644 732 618Q681 601 645 584T585 548T549 514T518 476Q460 390 460 334",8465:"190 601Q161 601 137 587T97 553T71 512T55 477T48 463Q44 465 39 468L30 473L35 488Q73 594 106 636T199 685Q200 686 211 686Q250 686 326 652T417 617Q435 617 455 626T497 652T522 670Q532 660 532 654Q469 591 390 550L378 543L343 556Q223 601 190 601ZM378 208Q378 249 369 318T360 424Q360 430 360 439T361 451L362 462Q416 526 482 571L495 580L503 577L511 575L499 562Q442 502 442 465Q442 436 452 368T462 246Q462 169 442 128T385 56Q292 -26 195 -26Q150 -26 104 14L96 21L43 -16Q43 -15 43 -14T41 -10T38 0L48 13Q76 50 123 97L150 125Q154 131 159 131Q166 131 171 116T182 81T193 53Q199 43 216 33T261 22Q307 22 344 68Q378 113 378 208",8466:"572 704Q607 704 607 693Q607 681 590 664H588Q586 664 584 664T578 663Q504 658 434 592T363 457Q363 426 386 401Q417 371 481 361Q490 360 527 360H562Q565 363 595 404T666 494T755 596T854 682T945 717Q986 717 1010 696T1035 637Q1035 593 996 531T873 414Q809 378 753 360T674 338T651 333Q650 333 633 308T588 245T544 185Q498 126 426 78L413 68H414Q498 47 575 47Q626 47 676 74T755 139L762 148H779H783Q802 148 802 142Q802 137 795 129Q760 81 691 33T544 -16Q470 -16 366 20L341 29L331 24Q239 -17 155 -17H141Q90 -17 61 -12T23 1T14 22Q14 44 39 65T103 95Q126 101 180 101Q224 101 258 98T309 90T330 86Q332 86 353 103T389 135Q401 146 412 158T431 179T450 203T466 225T485 252T505 280L535 322H509Q391 322 340 362T289 452Q289 495 321 547T396 630Q438 665 486 684T572 704ZM978 635Q978 644 977 650T973 661T968 668T961 673T954 676T946 678T938 680Q929 680 925 677Q893 659 795 531T682 377Q683 377 711 385T755 401T801 421T856 453T906 495Q927 516 952 557T978 635ZM274 50Q274 51 258 54T216 61T166 65Q160 65 151 65T140 64Q115 58 102 48T88 31Q88 20 159 20Q191 20 219 27T261 42L274 50",8467:"345 104T349 104T361 95T369 80T352 59Q268 -20 206 -20Q170 -20 146 3T113 53T99 104L94 129Q94 130 79 116T48 86T28 70Q22 70 15 79T7 94Q7 98 12 103T58 147L91 179V185Q91 186 91 191T92 200Q92 282 128 400T223 612T336 705Q397 705 397 636V627Q397 453 194 233Q185 223 180 218T174 211T171 208T165 201L163 186Q159 142 159 123Q159 17 208 17Q228 17 253 30T293 56T335 94Q345 104 349 104ZM360 634Q360 655 354 661T336 668Q328 668 322 666T302 645T272 592Q252 547 229 467T192 330L179 273Q179 272 186 280T204 300T221 322Q327 453 355 590Q360 612 360 634",8469:"20 664Q20 666 31 683H142Q256 683 258 681Q259 680 279 653T342 572T422 468L582 259V425Q582 451 582 490T583 541Q583 611 573 628T522 648Q500 648 493 654Q484 665 493 679L500 683H691Q702 676 702 666Q702 657 698 652Q688 648 680 648Q633 648 627 612Q624 601 624 294V-8Q616 -20 607 -20Q601 -20 596 -15Q593 -13 371 270L156 548L153 319Q153 284 153 234T152 167Q152 103 156 78T172 44T213 34Q236 34 242 28Q253 17 242 3L236 -1H36Q24 6 24 16Q24 34 56 34Q58 35 69 36T86 40T100 50T109 72Q111 83 111 345V603L96 619Q72 643 44 648Q20 648 20 664ZM413 419L240 648H120L136 628Q137 626 361 341T587 54L589 68Q589 78 589 121V192L413 419",8472:"300 74Q300 133 338 133Q350 133 356 126T363 109Q363 88 340 76Q340 71 342 62T358 39T393 26Q435 26 474 67T532 182T551 290Q551 325 535 349T484 373Q430 373 378 348T291 289T228 218T187 157T174 130Q254 30 265 10Q276 -15 276 -41Q276 -101 235 -158T142 -216Q112 -216 90 -195T67 -118Q67 -40 104 64L110 81Q81 118 81 174Q81 268 134 360T247 453Q252 453 255 451T258 447L259 445Q259 432 253 420Q251 416 242 416Q209 411 176 341T142 203Q142 193 143 184T146 170T149 165L158 180Q215 280 303 345T485 410Q548 410 586 368T625 255Q625 157 553 74T389 -10H383Q349 -10 325 14Q302 37 300 74ZM105 -123Q105 -134 106 -141T110 -158T122 -173T145 -178Q155 -178 160 -176Q184 -163 199 -132T214 -73Q214 -69 214 -66T213 -59T212 -53T209 -47T205 -41T199 -33T193 -25T184 -14T174 -1L165 10Q156 22 148 32L139 43Q138 43 130 15T113 -54T105 -123",8473:"16 666Q16 675 28 683H195Q334 683 370 682T437 672Q511 657 554 611T597 495Q597 343 404 309Q402 308 401 308Q381 303 319 303H261V181Q261 157 262 120Q262 60 267 50T304 36Q310 35 313 35Q352 35 352 17Q352 10 346 3L339 -1H28Q16 5 16 16Q16 35 53 35Q68 36 75 37T87 42T95 52Q98 61 98 341T95 630Q91 640 83 643T53 648Q16 648 16 666ZM235 35Q228 46 227 84Q226 129 226 337V621L230 635L237 648H128Q128 647 133 632Q136 620 136 341Q136 64 133 50L128 35H235ZM301 341H313Q339 341 354 344T389 362T417 410T426 498Q426 586 401 616T322 647Q301 647 293 643Q271 637 264 621Q261 617 261 479V341H301ZM429 350Q431 350 443 353T476 367T515 391T548 432T562 490Q562 550 524 592Q507 607 484 619Q481 621 448 635L433 639L439 621Q462 578 462 506Q462 448 454 413T437 366T428 350H429",8474:"480 -10Q480 -13 486 -24T507 -50T541 -80T588 -104T648 -114Q666 -114 688 -110T714 -106Q724 -106 728 -114T729 -130Q723 -145 663 -163T548 -181Q503 -181 463 -169T395 -139T343 -97T307 -56T284 -19L280 -3L262 1Q188 24 131 81Q57 155 37 275Q34 292 34 342T37 410Q58 528 131 601Q179 652 248 676T388 701Q485 701 562 661Q698 595 731 448Q742 410 742 341T731 235Q707 141 646 81Q616 50 575 27T493 -5L480 -10ZM568 342Q568 613 437 659L395 666Q329 666 286 626Q232 570 213 439Q210 408 210 342T213 246Q231 113 286 57Q309 37 342 23Q357 19 389 19Q420 19 437 23Q469 38 491 57Q568 134 568 342ZM174 341V354Q174 393 175 419T183 484T205 561T246 635L249 639Q246 639 224 627T193 608Q189 606 183 601T169 589T155 577Q69 491 69 344Q69 133 231 52Q247 42 247 46Q247 46 246 48Q231 69 222 85T200 141T177 239Q174 269 174 341ZM708 341Q708 410 689 467T640 556T588 606T546 630Q532 638 531 638Q530 638 531 635Q563 590 577 543Q602 472 602 341V316Q602 264 599 230T580 144T531 48Q529 44 532 45T546 52Q575 68 596 84T642 128T683 200T706 299Q708 327 708 341ZM391 -17H333Q329 -15 326 -15Q324 -15 324 -17Q324 -21 362 -68Q424 -130 506 -143Q518 -144 544 -144Q569 -144 577 -143L589 -141L575 -139Q544 -127 509 -101T453 -37L442 -19L391 -17",8475:"224 266Q185 266 156 286T127 354Q127 419 176 487T282 594Q346 642 433 679T615 717Q732 717 802 680L815 673Q824 680 840 690T860 700Q864 700 867 693T872 680L873 673Q873 668 858 659L845 651L853 642Q887 605 887 561Q887 500 840 439Q790 379 681 336Q693 312 693 292Q692 276 689 263T672 229T653 198T620 152L575 87Q557 57 557 33Q557 24 560 17T566 8L569 5Q546 5 508 25T470 76Q470 83 473 92T545 198T616 310Q616 317 615 318T612 319Q603 319 575 315H560L545 291Q492 201 429 135T277 23Q202 -17 142 -17H130Q50 -17 16 17Q-2 35 -2 57Q-2 95 24 126T88 158Q106 158 116 147T127 121Q127 110 122 102Q116 93 99 84T63 75Q58 75 53 76T47 77T45 75T44 67Q45 52 57 42T88 27T120 21T144 19Q174 19 208 36T267 76T324 134T369 189T406 239Q462 319 504 374T616 503T755 631L770 644Q767 647 753 654T697 670T602 680Q493 680 399 631T247 516Q218 485 193 440T168 359Q168 328 188 316T234 303Q255 303 273 315T304 340T343 389T390 448Q428 490 441 510T456 548Q456 557 458 559Q459 560 476 567T496 575Q505 575 505 558Q505 511 434 412Q429 406 427 403Q397 360 378 343Q342 308 300 287T224 266ZM819 564Q819 595 800 619L784 606Q729 557 692 512T605 387L591 365L610 364Q622 364 631 363T641 361Q643 361 651 363Q725 388 772 449T819 564ZM794 141Q794 123 725 63T612 3Q609 3 612 5Q612 5 615 7Q639 19 678 57T742 131L755 148H772H780Q794 148 794 141ZM588 -3Q590 0 593 0H594L593 -1Q592 -1 590 -2L588 -3",8476:"27 496Q31 569 102 627T234 685Q236 685 241 685T251 686Q287 686 318 672T367 638T399 598T418 564L423 550Q424 554 434 567T463 601T505 639T561 671T626 685Q672 685 688 659T710 572Q713 533 721 523T766 513Q781 513 787 514T794 516Q796 512 798 509T801 504T802 501T787 493Q702 461 624 401L607 389Q655 383 688 358L697 352V342Q699 330 699 297Q704 209 710 173T734 103Q751 69 765 69Q769 69 806 83L824 90V74Q823 73 759 24T693 -26Q692 -26 660 32L628 90L629 111Q631 159 631 177Q631 278 614 300Q584 340 523 340Q500 340 467 333T431 325Q429 325 429 322Q428 321 426 308T420 275T410 230T392 178T366 125L358 112L342 99Q306 70 269 38T213 -10T193 -26Q192 -26 163 0T116 26Q82 26 50 -8L42 -16L35 -8L27 0L35 10Q43 21 58 38T104 80T158 106Q179 106 218 65L235 48Q238 48 255 60T295 99T329 158Q352 231 352 359Q352 555 242 614Q210 628 187 628Q140 628 116 600T91 548Q91 522 138 464T185 382V376Q185 345 158 313T103 263L76 246Q74 244 64 253L54 260L65 267Q91 285 100 302Q111 318 111 337Q111 355 69 410T27 496ZM562 628Q504 628 443 507L435 491L436 479Q437 471 437 446Q437 396 432 351L529 389L602 426Q673 462 673 463H672Q644 470 637 483T622 553Q608 628 562 628",8477:"17 665Q17 672 28 683H221Q415 681 439 677Q461 673 481 667T516 654T544 639T566 623T584 607T597 592T607 578T614 565T618 554L621 548Q626 530 626 497Q626 447 613 419Q578 348 473 326L455 321Q462 310 473 292T517 226T578 141T637 72T686 35Q705 30 705 16Q705 7 693 -1H510Q503 6 404 159L306 310H268V183Q270 67 271 59Q274 42 291 38Q295 37 319 35Q344 35 353 28Q362 17 353 3L346 -1H28Q16 5 16 16Q16 35 55 35Q96 38 101 52Q106 60 106 341T101 632Q95 645 55 648Q17 648 17 665ZM241 35Q238 42 237 45T235 78T233 163T233 337V621L237 635L244 648H133Q136 641 137 638T139 603T141 517T141 341Q141 131 140 89T134 37Q133 36 133 35H241ZM457 496Q457 540 449 570T425 615T400 634T377 643Q374 643 339 648Q300 648 281 635Q271 628 270 610T268 481V346H284Q327 346 375 352Q421 364 439 392T457 496ZM492 537T492 496T488 427T478 389T469 371T464 361Q464 360 465 360Q469 360 497 370Q593 400 593 495Q593 592 477 630L457 637L461 626Q474 611 488 561Q492 537 492 496ZM464 243Q411 317 410 317Q404 317 401 315Q384 315 370 312H346L526 35H619L606 50Q553 109 464 243",8484:"39 -1Q29 9 29 12Q29 23 60 77T219 337L410 648H364Q261 648 210 628Q168 612 142 588T109 545T97 509T88 490Q85 489 80 489Q72 489 61 503L70 588Q72 607 75 628T79 662T81 675Q84 677 88 681Q90 683 341 683H592Q604 673 604 666Q604 662 412 348L221 37Q221 35 301 35Q406 35 446 48Q504 68 543 111T597 212Q602 239 617 239Q624 239 629 234T635 223Q635 215 621 113T604 8L597 1Q595 -1 317 -1H39ZM148 637L166 648H112V632Q111 629 110 622T108 612Q108 608 110 608T116 612T129 623T148 637ZM552 646Q552 648 504 648Q452 648 450 643Q448 639 266 343T77 37Q77 35 128 35H179L366 339L552 646ZM572 35Q581 89 581 97L561 77Q542 59 526 48L508 37L539 35H572",8486:"55 454Q55 503 75 546T127 617T197 665T272 695T337 704H352Q396 704 404 703Q527 687 596 615T666 454Q666 392 635 330T559 200T499 83V80H543Q589 81 600 83T617 93Q622 102 629 135T636 172L637 177H677V175L660 89Q645 3 644 2V0H552H488Q461 0 456 3T451 20Q451 89 499 235T548 455Q548 512 530 555T483 622T424 656T361 668Q332 668 303 658T243 626T193 560T174 456Q174 380 222 233T270 20Q270 7 263 0H77V2Q76 3 61 89L44 175V177H84L85 172Q85 171 88 155T96 119T104 93Q109 86 120 84T178 80H222V83Q206 132 162 199T87 329T55 454",8487:"126 584Q119 584 110 539T97 493Q95 490 73 490Q44 490 44 501Q44 515 62 590Q75 672 82 679Q84 684 177 684Q193 684 214 684T241 685Q265 685 271 682T277 664V648Q271 572 229 434T186 231Q186 173 203 132T247 70T302 42T360 33Q391 33 419 42T474 72T517 133T533 231Q533 297 491 437T442 648Q442 675 446 679Q448 684 542 684Q635 684 637 681Q640 678 657 594T675 501Q675 490 646 490Q624 490 622 493Q620 493 609 538T593 584Q591 585 585 585T569 586T551 588H513Q514 586 518 573T538 531T582 453Q647 340 660 277Q663 259 663 232Q663 194 657 177Q652 151 629 112T560 39Q495 -5 424 -19Q403 -22 360 -22Q318 -22 297 -19Q239 -8 193 18T120 74T80 131T62 177Q56 194 56 229Q56 281 74 328T137 453Q160 491 174 518T193 555T201 575T206 588H168Q160 587 150 587T134 586T126 584",8488:"148 590Q95 592 91 627V633L160 729H176Q169 713 169 705Q169 670 244 670Q269 670 305 672T357 675Q405 675 432 661T468 609Q469 605 469 596Q469 572 460 540Q433 463 301 372Q325 378 359 378Q431 378 472 350T519 297Q532 249 532 198Q532 115 500 40T442 -57Q335 -139 202 -139Q165 -139 125 -131L112 -129V-100Q112 -49 106 -33T75 -17Q55 -17 31 -35L22 -42L11 -26L22 -18Q94 36 151 36H160Q171 36 178 33T188 27T194 13T196 -5T197 -32Q198 -79 206 -90Q217 -107 251 -107Q336 -107 389 -33T442 155Q442 240 407 274Q362 319 285 319Q236 319 192 298Q188 298 181 309L224 372Q227 373 234 374T246 376T257 379T271 384T285 391T302 402T321 417Q384 471 384 540Q384 562 366 581T306 600Q292 600 233 595T148 590",8492:"256 262Q161 262 161 351Q161 408 203 471T289 570Q380 645 475 676T617 707L627 708Q637 708 644 708Q759 708 831 675L844 669L857 677Q892 700 896 700Q902 700 907 685Q907 683 907 681T908 678T909 676T909 673Q909 671 909 670T906 667T903 664T897 660T889 655L878 647L889 636Q928 598 928 548Q928 529 923 510T907 474T886 442T861 412T837 388T815 368T800 355Q847 323 847 270V263Q847 205 806 145Q766 82 695 37T564 -8Q527 -8 506 10T484 58Q484 85 501 117T543 172Q607 226 685 228Q695 228 698 226Q703 220 692 206Q684 194 682 193T665 191Q625 189 595 172T550 133T529 93T522 66Q522 29 576 29Q642 29 705 109Q785 211 785 270Q785 287 779 300T769 316T755 327L740 319Q682 290 634 290Q611 290 592 294H588L565 261Q559 252 544 231T522 201T504 178T481 151T455 123Q394 63 314 18T159 -28Q103 -28 67 -6T31 54Q31 88 57 123T123 158Q144 158 154 146T164 119Q164 102 142 89T100 75Q94 75 87 77T76 80L72 81Q69 78 69 65Q69 35 102 22T175 9Q184 9 198 11Q248 23 300 70T403 187T508 331T636 489T789 629L801 639Q796 642 786 647T732 661T633 670Q592 670 558 665Q481 651 409 613T286 520Q274 507 258 485T222 424T202 354Q202 299 269 299Q282 299 295 301T318 307T339 317T358 329T376 345T391 362T406 380T420 398T433 417T445 435Q496 512 496 547Q496 559 497 560T516 569Q526 574 530 574Q538 574 538 540Q538 414 427 325Q342 262 256 262ZM689 382Q708 382 753 375L765 387Q860 482 860 555Q860 594 839 610L822 592Q794 563 752 511T680 420T651 380Q655 381 660 381Q664 382 689 382ZM697 344Q692 345 681 345H675Q671 345 665 345T655 344T650 344L648 342Q646 339 645 338Q643 333 639 327H653Q670 329 676 330Q706 342 706 343Q702 344 697 344",8493:"299 585Q333 609 384 634T470 672L505 685Q506 685 513 662T531 613T548 580Q553 576 563 576Q575 576 605 585Q607 585 607 575V564Q537 532 496 527Q475 542 456 567T427 610T415 627Q410 627 398 618T382 603Q373 588 373 558T386 475T400 399Q400 337 366 303Q343 281 309 266T254 247T226 242L214 257Q214 258 223 260T251 272T287 299Q304 316 304 360Q304 396 289 451T274 532Q274 553 277 561V564H269Q205 558 172 501T139 358Q139 207 226 127T443 46Q448 46 457 46T470 47L485 48L601 106Q602 106 602 93V80Q551 48 517 25T474 -4T460 -13T443 -19Q409 -24 367 -24Q360 -24 351 -24T335 -23T326 -22Q190 -2 125 87T59 319V328Q62 412 96 487L101 500L118 512Q189 563 245 591L266 601L299 585",8496:"280 398L279 400Q278 402 277 405T275 413T272 426T271 443Q271 494 302 544T379 629T472 685T553 707H565H573Q630 707 664 689Q718 661 718 604Q718 548 662 492T553 436Q525 436 508 451T490 492Q490 534 531 579T619 630Q632 630 632 623Q632 619 624 606Q614 593 602 592T578 580Q566 568 549 541T532 497Q532 474 565 474Q577 474 587 476Q600 481 611 489Q630 503 651 535T672 596Q672 660 553 660H548Q494 660 450 616Q421 587 384 531T343 439Q341 420 344 415H345Q346 415 352 415T369 417T391 418Q421 418 440 412T466 398T473 382Q473 367 452 353T398 339Q370 339 348 345T315 359L304 366Q297 365 284 360T234 321T163 234Q120 160 120 117Q120 83 149 57T252 30Q311 30 357 60Q386 79 414 114T452 179Q454 186 454 200Q454 230 415 242Q401 246 373 246Q353 246 347 244Q328 236 313 219T288 184T274 149T265 121T261 109Q260 107 247 102T230 97Q223 97 223 105Q223 148 271 216T386 284Q446 284 483 260T520 195Q520 121 427 57T239 -8Q192 -8 152 2T79 46T46 133Q46 212 107 285T269 394L280 398ZM427 376Q427 377 402 380Q386 380 386 379L425 375L427 376",8497:"258 428Q258 489 322 562T482 685T661 735Q726 735 824 693T977 651Q990 651 990 644Q990 639 971 612T948 581Q947 580 938 580Q878 580 784 621T617 663Q544 663 480 635T379 568T320 492T299 431Q299 387 362 387Q404 387 438 402T493 438T527 486T546 531T551 563Q551 569 550 575T549 584T549 590Q551 593 563 602T579 611Q584 611 592 605T608 584T616 548Q616 513 595 477T554 423Q518 392 464 372T349 351Q258 351 258 428ZM324 187T305 187T286 196Q286 202 301 217Q327 242 383 262T484 290L527 297L567 356Q624 441 643 467T688 521Q715 550 752 581T795 613T804 603T808 587T778 547T702 444T626 300H637Q663 302 685 306L697 308L703 317Q745 376 792 400Q806 406 818 406Q849 406 849 375Q847 355 831 338T797 312T763 296L747 290Q744 289 735 266T724 241Q722 240 702 232T664 217T645 210Q638 210 638 218Q638 224 653 246T669 270Q669 271 668 271Q663 270 624 264L607 263Q570 199 529 152Q513 133 484 106T409 45T305 -13T193 -36Q109 -36 74 -10T39 50Q39 86 64 121T128 158Q171 158 171 121Q171 97 141 83Q125 75 107 75Q93 75 80 83Q76 71 76 62Q76 29 117 15T207 0Q324 0 494 248L501 258H495Q368 239 330 195Q324 187 305 187ZM775 335Q806 358 806 368Q805 369 804 369Q800 369 791 360Q774 336 775 335",8498:"457 681Q471 695 477 695Q485 695 497 681V12L484 -1H68Q55 14 55 19T68 39H457V328H215L211 335Q198 346 211 359L217 368H457V681",8499:"112 -7Q86 -7 58 6T30 48T54 103T113 130Q129 130 141 121T153 94Q153 71 132 59T90 47H80Q95 30 133 30Q180 30 228 63T311 137T402 249T500 361Q566 425 703 529T910 693Q942 721 945 721T958 716T970 709Q974 704 964 691Q961 688 905 622T847 554L595 181Q553 121 527 77T496 19L492 5Q497 5 531 46Q579 98 685 224T850 409L972 524Q994 543 1004 556Q1012 567 1097 643T1186 720Q1194 720 1206 715T1215 703Q1215 701 1191 671T1133 599T1080 530Q1036 461 983 357T862 152Q802 64 799 17Q799 7 800 5T811 2Q836 2 882 37T969 126Q972 130 974 134T978 138T983 139T996 140H1012Q1018 134 1018 132Q1018 122 981 83T889 4T795 -35Q761 -35 745 -12T728 48Q728 122 781 190Q833 269 890 370L927 434L914 422Q848 360 752 245Q643 117 582 51T498 -33T461 -50Q424 -48 424 -4Q424 84 481 172L714 495Q591 406 523 333Q507 316 430 226T313 95Q263 48 221 24T162 -4T120 -7H112",8501:"55 613Q55 643 61 663T74 688T85 694Q94 694 94 681Q98 632 134 588L412 285Q416 311 430 397T447 509V519L438 526Q407 554 398 571T388 617T394 664T407 688T418 694Q425 694 427 684Q429 675 454 635T488 586Q490 584 496 579T513 563T537 540Q555 516 555 487Q555 460 549 441T537 416T528 409Q519 409 517 415T513 435T503 463Q492 481 490 481Q454 264 454 246Q454 237 479 212T529 152T555 79Q555 32 538 9Q531 1 524 1Q516 1 516 13Q512 62 476 106Q468 115 337 258T195 412L193 406Q191 401 189 394T183 377T176 352T171 322T167 284T165 240Q165 224 166 220Q171 199 211 152T252 70Q252 45 235 29T203 8T175 1Q170 0 115 0H79Q60 0 58 3T55 20Q55 31 58 34Q60 37 76 37Q112 39 126 46T140 70Q140 96 112 148T83 236Q83 281 102 334T140 419T159 452Q55 556 55 613",8502:"56 706V726Q56 763 76 763Q83 763 87 759T98 741Q108 726 116 721L127 717L340 715Q547 712 564 709Q575 705 587 692Q599 680 605 663L609 650V137H676Q687 124 687 115Q687 110 678 100T622 43L558 -21H-9Q-22 -6 -22 -1T-13 14T42 72L107 137H569V339Q569 541 567 546Q558 555 554 557L545 563H329Q118 566 101 569Q90 573 78 586Q54 610 54 661Q54 670 56 706",8503:"56 750Q68 764 76 764Q88 764 97 743T125 717Q131 715 240 715T358 713Q421 691 421 640Q421 608 399 588T358 566Q353 566 352 565T351 557L356 526Q356 488 379 346T402 97Q400 21 385 -12Q366 -43 351 -43Q335 -43 329 -10Q316 40 316 64Q316 67 315 67Q313 67 269 26L222 -21H-9Q-22 -7 -22 -1Q-22 4 -14 14T42 73L107 137H311V564H211H164Q115 564 93 573T60 615Q56 630 56 690V750",8504:"62 757Q69 764 75 764Q87 764 97 741Q102 731 105 728T117 721L129 715H349Q569 715 580 710Q618 701 635 670Q640 661 640 639Q640 609 622 590Q617 583 604 575T580 566H573V553Q575 547 576 531T582 469T600 353Q624 205 624 104Q624 46 617 17T591 -32Q581 -43 573 -43Q550 -43 540 44Q535 73 533 319V564H322Q117 566 100 570Q90 573 77 586Q54 609 54 663Q54 689 55 706Q55 738 56 745T62 757",8513:"239 665Q194 665 154 653T90 629T66 617Q59 617 53 623T46 637Q46 652 66 659Q129 695 197 701Q218 705 248 705Q293 705 335 693Q371 684 435 644Q543 562 573 417Q577 393 577 341Q577 290 573 266Q531 83 384 10Q346 -9 315 -16T234 -23H206Q202 -23 183 -23T152 -21T120 -18T88 -10T63 3T44 24L37 35V297L50 310H235Q248 297 248 290Q248 285 235 270H77V103Q77 88 77 80T77 63T78 50T80 43T82 38T85 35T89 32T95 30Q126 20 206 17Q289 17 330 30Q407 55 460 120T533 275Q538 305 538 342Q538 486 452 575T239 665",8592:"944 261T944 250T929 230H165Q167 228 182 216T211 189T244 152T277 96T303 25Q308 7 308 0Q308 -11 288 -11Q281 -11 278 -11T272 -7T267 2T263 21Q245 94 195 151T73 236Q58 242 55 247Q55 254 59 257T73 264Q121 283 158 314T215 375T247 434T264 480L267 497Q269 503 270 505T275 509T288 511Q308 511 308 500Q308 493 303 475Q293 438 278 406T246 352T215 315T185 287T165 270H929Q944 261 944 250",8593:"27 414Q17 414 17 433Q17 437 17 439T17 444T19 447T20 450T22 452T26 453T30 454T36 456Q80 467 120 494T180 549Q227 607 238 678Q240 694 251 694Q259 694 261 684Q261 677 265 659T284 608T320 549Q340 525 363 507T405 479T440 463T467 455T479 451Q483 447 483 433Q483 413 472 413Q467 413 458 416Q342 448 277 545L270 555V-179Q262 -193 252 -193H250H248Q236 -193 230 -179V555L223 545Q192 499 146 467T70 424T27 414",8594:"56 237T56 250T70 270H835Q719 357 692 493Q692 494 692 496T691 499Q691 511 708 511H711Q720 511 723 510T729 506T732 497T735 481T743 456Q765 389 816 336T935 261Q944 258 944 250Q944 244 939 241T915 231T877 212Q836 186 806 152T761 85T740 35T732 4Q730 -6 727 -8T711 -11Q691 -11 691 0Q691 7 696 25Q728 151 835 230H70Q56 237 56 250",8595:"473 86Q483 86 483 67Q483 63 483 61T483 56T481 53T480 50T478 48T474 47T470 46T464 44Q428 35 391 14T316 -55T264 -168Q264 -170 263 -173T262 -180T261 -184Q259 -194 251 -194Q242 -194 238 -176T221 -121T180 -49Q169 -34 155 -21T125 2T95 20T67 33T44 42T27 47L21 49Q17 53 17 67Q17 87 28 87Q33 87 42 84Q158 52 223 -45L230 -55V312Q230 391 230 482T229 591Q229 662 231 676T243 693Q244 694 251 694Q264 692 270 679V-55L277 -45Q307 1 353 33T430 76T473 86",8596:"263 479Q267 501 271 506T288 511Q308 511 308 500Q308 493 303 475Q293 438 278 406T246 352T215 315T185 287T165 270H835Q729 349 696 475Q691 493 691 500Q691 511 711 511Q720 511 723 510T729 506T732 497T735 481T743 456Q765 389 816 336T935 261Q944 258 944 250Q944 244 939 241T915 231T877 212Q836 186 806 152T761 85T740 35T732 4Q730 -6 727 -8T711 -11Q691 -11 691 0Q691 7 696 25Q728 151 835 230H165Q167 228 182 216T211 189T244 152T277 96T303 25Q308 7 308 0Q308 -11 288 -11Q281 -11 278 -11T272 -7T267 2T263 21Q245 94 195 151T73 236Q58 242 55 247Q55 254 59 257T73 264Q144 292 194 349T263 479",8597:"27 492Q17 492 17 511Q17 515 17 517T17 522T19 525T20 528T22 530T26 531T30 532T36 534Q80 545 120 572T180 627Q210 664 223 701T238 755T250 772T261 762Q261 757 264 741T282 691T319 628Q352 589 390 566T454 536L479 529Q483 525 483 511Q483 491 472 491Q467 491 458 494Q342 526 277 623L270 633V-133L277 -123Q307 -77 353 -45T430 -2T473 8Q483 8 483 -11Q483 -15 483 -17T483 -22T481 -25T480 -28T478 -30T474 -31T470 -32T464 -34Q407 -49 364 -84T300 -157T270 -223T261 -262Q259 -272 250 -272Q242 -272 239 -255T223 -201T180 -127Q169 -112 155 -99T125 -76T95 -58T67 -45T44 -36T27 -31L21 -29Q17 -25 17 -11Q17 9 28 9Q33 9 42 6Q158 -26 223 -123L230 -133V633L223 623Q192 577 146 545T70 502T27 492",8598:"204 662Q257 662 301 676T369 705T394 720Q398 720 407 711T417 697Q417 688 389 671T310 639T212 623Q176 623 153 628Q151 628 221 557T546 232Q942 -164 943 -168Q944 -170 944 -174Q944 -182 938 -188T924 -195Q922 -195 916 -193Q912 -191 517 204Q440 281 326 394T166 553L121 598Q126 589 126 541Q126 438 70 349Q59 332 52 332Q48 332 39 341T29 355Q29 358 38 372T57 407T77 464T86 545Q86 583 78 614T63 663T55 683Q55 693 65 693Q73 693 82 688Q136 662 204 662",8599:"582 697Q582 701 591 710T605 720Q607 720 630 706T697 677T795 662Q830 662 863 670T914 686T934 694Q942 694 944 685Q944 680 936 663T921 615T913 545Q913 490 927 446T956 379T970 355Q970 351 961 342T947 332Q940 332 929 349Q874 436 874 541Q874 590 878 598L832 553Q787 508 673 395T482 204Q87 -191 83 -193Q77 -195 75 -195Q67 -195 61 -189T55 -174Q55 -170 56 -168Q58 -164 453 232Q707 487 777 557T847 628Q824 623 787 623Q689 623 599 679Q582 690 582 697",8600:"55 675Q55 683 60 689T75 695Q77 695 83 693Q87 691 482 296Q532 246 605 174T717 62T799 -20T859 -80T878 -97Q874 -93 874 -41Q874 64 929 151Q940 168 947 168Q951 168 960 159T970 145Q970 143 956 121T928 54T913 -45Q913 -83 920 -114T936 -163T944 -185Q942 -194 934 -194Q932 -194 914 -186T864 -170T795 -162Q743 -162 698 -176T630 -205T605 -220Q601 -220 592 -211T582 -197Q582 -187 611 -170T691 -138T787 -123Q824 -123 847 -128Q848 -128 778 -57T453 268Q58 664 56 668Q55 670 55 675",8601:"126 -41Q126 -92 121 -97Q121 -98 139 -80T200 -20T281 61T394 173T517 296Q909 690 916 693Q922 695 924 695Q932 695 938 689T944 674Q944 670 943 668Q942 664 546 268Q292 13 222 -57T153 -128Q176 -123 212 -123Q310 -123 400 -179Q417 -190 417 -197Q417 -201 408 -210T394 -220Q392 -220 369 -206T302 -177T204 -162Q131 -162 67 -194Q63 -195 59 -192T55 -183Q55 -180 62 -163T78 -115T86 -45Q86 10 72 54T44 120T29 145Q29 149 38 158T52 168Q59 168 70 151Q126 62 126 -41",8602:"942 250Q942 244 928 230H511L457 148Q440 124 420 93Q404 68 400 64T389 60Q381 60 375 66T368 81Q368 88 415 159L462 230H175L188 214Q210 188 235 145T264 85Q264 75 260 74T231 72L206 74L191 103Q169 142 164 150Q130 195 64 239Q56 244 56 250T64 261Q115 294 142 323T191 397L206 428H231Q255 428 259 426T264 414Q260 397 235 355T188 288L175 272L331 270Q488 270 491 272Q491 275 542 352T597 432Q602 437 609 437Q617 437 622 432T628 417T582 341L537 272L735 270H931Q942 257 942 250",8603:"54 250Q54 258 66 270H277L488 272L542 350Q596 431 602 435Q604 437 609 437Q617 437 622 432T628 417T582 341L537 272L608 270H751L822 272L808 288Q786 313 761 355T733 414Q733 424 737 426T766 428H793L806 397Q829 354 864 314Q896 284 928 263Q942 257 942 250T928 237Q887 208 864 185Q829 147 806 103L793 74L766 72Q742 72 738 73T733 85Q735 102 756 137T797 198L817 225L822 230H511L457 148Q440 124 420 93Q404 68 400 64T389 60Q381 60 375 66T368 81Q368 88 415 159L462 230H264L66 232Q54 239 54 250",8606:"56 250Q103 277 142 322T199 417H221Q244 417 244 416Q244 414 237 397T208 344T158 278L151 270H276L285 277Q322 306 349 345T388 417H434Q434 413 424 392T393 338T349 279L340 270H634Q933 270 937 266L938 265Q944 259 944 250T938 235L937 234Q933 230 634 230H340L349 221Q372 196 393 163T424 108T434 83H388Q377 116 350 155T285 223L276 230H151L158 222Q186 191 207 156T236 104T244 84Q244 83 221 83H199Q181 133 142 178T56 250",8608:"943 250Q895 221 856 177T801 83H778Q755 83 755 84Q755 86 762 103T791 156T841 222L848 230H723L714 223Q677 194 650 155T611 83H565Q565 87 575 108T606 162T650 221L659 230H365Q66 230 62 234L61 235Q55 241 55 250T61 265L62 266Q66 270 365 270H659L650 279Q627 304 606 337T575 392T565 417H611Q622 384 649 345T714 277L723 270H848L841 278Q813 309 792 344T763 396T755 416Q755 417 778 417H801Q817 367 856 323T943 250",8610:"56 250Q103 277 142 322T199 417H221Q244 417 244 416Q244 414 237 397T208 344T158 278L151 270H873L882 277Q919 306 946 345T985 417H1031Q1031 413 1021 392T990 338T946 279L937 270V230L946 221Q969 196 990 163T1021 108T1031 83H985Q974 116 947 155T882 223L873 230H151L158 222Q186 191 207 156T236 104T244 84Q244 83 221 83H199Q181 133 142 178T56 250",8611:"1054 250Q1006 221 967 177T912 83H889Q866 83 866 84Q866 86 873 103T902 156T952 222L959 230H237L228 223Q191 194 164 155T125 83H79Q79 87 89 108T120 162T164 221L173 230V270L164 279Q141 304 120 337T89 392T79 417H125Q136 384 163 345T228 277L237 270H959L952 278Q924 309 903 344T874 396T866 416Q866 417 889 417H912Q928 367 967 323T1054 250",8614:"95 155V109Q95 83 92 73T75 63Q61 63 58 74T54 130Q54 140 54 180T55 250Q55 421 57 425Q61 437 75 437Q88 437 91 428T95 393V345V270H835Q719 357 692 493Q692 494 692 496T691 499Q691 511 708 511H711Q720 511 723 510T729 506T732 497T735 481T743 456Q765 389 816 336T935 261Q944 258 944 250Q944 244 939 241T915 231T877 212Q836 186 806 152T761 85T740 35T732 4Q730 -6 727 -8T711 -11Q691 -11 691 0Q691 7 696 25Q728 151 835 230H95V155",8617:"903 424T903 444T929 464Q976 464 1023 434T1070 347Q1070 316 1055 292T1016 256T971 237T929 230H165Q167 228 182 216T211 189T244 152T277 96T303 25Q308 7 308 0Q308 -11 288 -11Q281 -11 278 -11T272 -7T267 2T263 21Q245 94 195 151T73 236Q58 242 55 247Q55 254 59 257T73 264Q121 283 158 314T215 375T247 434T264 480L267 497Q269 503 270 505T275 509T288 511Q308 511 308 500Q308 493 303 475Q293 438 278 406T246 352T215 315T185 287T165 270H926Q929 270 941 271T960 275T978 280T998 290T1015 307Q1030 325 1030 347Q1030 355 1027 364T1014 387T983 411T929 424H928Q903 424 903 444",8618:"55 347Q55 380 72 404T113 441T159 458T197 464Q222 464 222 444Q222 429 204 426T157 417T110 387Q95 369 95 347Q95 339 98 330T111 307T142 283T196 270H961Q845 357 818 493Q818 494 818 496T817 499Q817 511 834 511H837Q846 511 849 510T855 506T858 497T861 481T869 456Q891 389 942 336T1061 261Q1070 258 1070 250Q1070 244 1065 241T1041 231T1003 212Q962 186 932 152T887 85T866 35T858 4Q856 -6 853 -8T837 -11Q817 -11 817 0Q817 7 822 25Q854 151 961 230H196Q149 230 102 260T55 347",8619:"56 250Q103 277 142 322T199 417H221Q244 417 244 416Q244 414 237 397T208 344T158 278L151 270H622V305Q622 356 624 388T635 460T661 521T709 559T785 575Q813 575 833 573T880 561T923 534T952 483T964 405Q964 374 959 350T942 307T918 276T884 255T847 242T804 235T760 231T713 230H662V-27Q654 -41 644 -41H642H640Q628 -41 622 -27V230H151L158 222Q186 191 207 156T236 104T244 84Q244 83 221 83H199Q181 133 142 178T56 250ZM924 403Q924 474 894 505T794 536Q758 536 734 526T696 500T675 453T665 395T662 319V270H699Q826 270 875 295T924 403",8620:"35 405Q35 454 48 489T86 542T137 567T195 575Q229 575 251 571T301 554T345 510T370 429Q377 384 377 305V270H848L841 278Q813 309 792 344T763 396T755 416Q755 417 778 417H801Q817 367 856 323T943 250Q896 221 857 177T801 83H778Q755 83 755 84Q755 86 762 103T791 156T841 222L848 230H377V-27Q369 -41 359 -41H357Q342 -41 337 -25V230H286Q247 231 225 232T169 238T115 255T75 284T45 333T35 405ZM75 406Q75 322 123 296T300 270H337V319Q335 432 317 477T240 534Q232 535 197 535Q140 535 108 507T75 406",8621:"57 250Q159 311 200 417H246L242 407Q215 340 159 278L152 270H276L315 310Q354 349 358 351Q366 356 376 351Q378 350 455 273L530 196L606 273Q683 350 686 351Q694 354 703 351Q705 350 782 273L858 196L933 273Q1010 350 1012 351Q1022 356 1030 351Q1034 349 1073 310L1112 270H1236L1229 278Q1173 340 1146 407L1142 417H1188Q1233 306 1331 250Q1231 192 1188 83H1142L1146 93Q1173 160 1229 222L1236 230H1168Q1155 230 1139 230T1119 229Q1112 229 1108 229T1099 231T1092 233T1085 238T1078 245T1068 256T1056 269L1021 304L984 267Q948 230 910 191T867 149Q857 144 848 150Q844 151 770 227T694 304T618 228T540 150Q531 144 521 149Q517 152 479 191T404 267L367 304L332 269Q328 264 320 256T310 246T303 239T296 234T289 231T280 229T269 229Q265 229 249 229T220 230H152L159 222Q215 160 242 93L246 83H223L200 84L195 96Q152 190 57 250",8622:"491 272Q491 275 542 352T597 432Q602 437 609 437Q617 437 622 432T628 417T582 341L537 272L608 270H751L822 272L808 288Q786 313 761 355T733 414Q733 424 737 426T766 428H793L806 397Q829 354 864 314Q896 284 928 263Q942 257 942 250T928 237Q887 208 864 185Q829 147 806 103L793 74L766 72Q742 72 738 73T733 85Q735 102 756 137T797 198L817 225L822 230H511L457 148Q440 124 420 93Q404 68 400 64T389 60Q381 60 375 66T368 81Q368 88 415 159L462 230H175L188 214Q210 188 235 145T264 85Q264 75 260 74T231 72L206 74L191 103Q169 142 164 150Q130 195 64 239Q56 244 56 250T64 261Q115 294 142 323T191 397L206 428H231Q255 428 259 426T264 414Q260 397 235 355T188 288L175 272L331 270Q488 270 491 272",8624:"56 555Q74 567 79 570T107 592T141 625T170 667T198 722H221Q244 722 244 721Q244 718 236 699T207 647T161 587L151 576L291 575H292H293H294H296H297H298H299H300H301H302H304H305H306H307H308H309H310H311H312H314H315H316H317H318H319H320H321H322H323H324H325H327H328H329H330H331H332H333H334H335H336H337H338H339H340H341H342H343H345Q435 574 438 570L439 569L440 568Q444 564 444 287Q444 15 442 12Q436 0 424 0T406 12Q404 15 404 275V535H151L162 523Q187 495 207 462T236 410T244 389H198L193 402Q171 457 131 497T56 555",8625:"301 722Q339 618 443 555L437 551Q431 547 422 541T401 526T377 504T352 477T327 443T306 402L301 389H255Q255 392 263 410T291 461T337 523L348 535H95V275Q95 15 93 12Q87 0 75 0T57 12Q55 15 55 287Q55 564 59 568L60 569Q64 573 76 573T208 575L348 576L338 587Q314 613 294 646T264 698T255 721Q255 722 278 722H301",8630:"361 210Q373 210 373 182V177Q373 155 370 151T348 139Q303 118 267 84T216 28T201 1Q197 -1 196 -1Q189 -1 184 8Q166 39 143 64T99 104T61 129T32 144T19 150Q17 152 17 179Q17 203 21 208Q28 210 39 206Q106 178 157 135L175 119V126Q179 130 179 155Q182 173 193 201Q228 305 312 374T510 459Q532 461 551 461H567Q678 461 784 386Q835 344 861 301Q902 245 926 173T950 32Q950 15 944 8Q930 -6 917 8Q910 12 910 43Q901 208 801 314T561 421Q453 421 359 359Q300 319 263 258T217 126L216 125Q216 124 216 123T217 122Q219 122 229 131T260 156T301 181Q314 189 336 199T361 210",8631:"972 209Q980 209 981 204T982 179Q982 155 979 151T957 139Q915 121 878 86T815 8Q808 -1 803 -1Q801 -1 797 1Q797 6 783 28T732 84T650 139L628 150Q626 152 626 177Q626 201 630 206Q636 210 637 210Q650 210 697 181Q727 166 764 137L784 119L782 132Q767 239 689 318T499 417Q474 421 442 421Q343 421 261 369T130 219Q86 121 86 28Q86 15 79 8Q73 1 66 1T53 8Q46 15 46 30Q46 102 77 192T186 361Q274 443 386 459Q396 460 426 460Q515 460 588 431T703 361T773 271T812 187T822 132Q822 123 825 123Q936 209 972 209",8634:"369 543T369 563T397 583Q408 583 440 579L454 577L464 581Q492 592 516 609T552 638T565 650Q604 638 607 637Q606 636 598 628T585 614T570 601T548 584T523 568L510 560L516 558Q522 555 527 553T541 546T559 536T580 523T603 506T626 485Q722 384 722 250Q722 106 622 12T387 -83Q253 -83 155 12T56 250Q56 357 110 433T235 545Q244 550 252 550Q270 550 270 531Q270 522 261 515T238 501T202 477T159 433Q95 352 95 250Q95 131 178 45T388 -42Q511 -42 596 43T682 250Q682 340 636 408T522 511Q495 526 488 526Q488 525 488 525T487 522T485 515L490 506Q505 481 516 451T531 404T535 384L532 385Q529 386 524 387T513 390L491 397L488 408Q472 483 413 542L399 543Q369 543 369 563",8635:"170 637L213 650Q270 597 313 581L323 577L337 579Q369 583 380 583Q408 583 408 563T380 543H378L364 542Q305 483 289 408L286 397L264 390Q259 389 254 388T245 385L242 384Q242 387 246 403T261 450T287 506L292 515Q291 519 291 521T290 524T289 526Q284 526 265 517T216 486T160 434T114 354T95 249Q95 132 178 45T388 -42Q513 -42 597 44T682 250Q682 337 638 404T532 506Q529 508 525 510T519 514T515 516T511 519T509 522T508 526T507 531Q507 550 525 550Q533 550 542 545Q569 532 596 511T653 454T702 366T721 250Q721 151 672 74T547 -43T388 -83Q254 -83 155 12T56 250Q56 385 151 485Q164 498 179 509T205 528T228 542T247 551T260 558L267 560L254 568Q215 590 170 637",8636:"62 230Q56 236 55 244Q55 252 57 255T69 265Q114 292 151 326T208 391T243 448T265 491T273 509Q276 511 288 511Q304 511 306 505Q309 501 303 484Q293 456 279 430T251 383T223 344T196 313T173 291T156 276L148 270H929Q944 261 944 250T929 230H62",8637:"55 256Q56 264 62 270H929Q944 261 944 250T929 230H148Q149 229 165 215T196 185T231 145T270 87T303 16Q309 -1 306 -5Q304 -11 288 -11Q279 -11 276 -10T269 -4T264 10T253 36T231 75Q172 173 69 235Q59 242 57 245T55 256",8638:"188 258V694H208L215 682Q246 628 293 594T375 551V528Q375 505 374 505Q369 505 351 510T299 534T237 578L228 587V205Q228 -178 226 -182Q221 -194 208 -194T190 -182Q188 -178 188 258",8639:"41 551Q76 559 123 592T201 682L208 694H228V258Q228 -178 226 -182Q221 -194 208 -194T190 -182Q188 -178 188 205V587L179 578Q151 552 117 534T65 511T42 505Q41 505 41 528V551",8640:"691 500Q691 511 711 511Q720 511 723 510T730 504T735 490T746 464T768 425Q796 378 835 339T897 285T933 263Q941 258 942 256T944 245T937 230H70Q56 237 56 250T70 270H852Q802 308 762 364T707 455T691 500",8641:"56 237T56 250T70 270H937Q944 263 944 256Q944 251 944 250T943 246T940 242T933 238Q794 153 734 7Q729 -7 726 -9T711 -11Q695 -11 693 -5Q690 -1 696 16Q721 84 763 139T852 230H70Q56 237 56 250",8642:"190 682Q195 694 208 694T226 683Q228 679 228 296V-87L237 -78Q265 -52 299 -34T351 -11T374 -5Q375 -5 375 -28V-51Q340 -60 293 -92T215 -182L208 -194H188V242Q188 678 190 682",8643:"188 295V573Q188 657 189 672T200 692Q206 694 208 694Q221 694 226 683Q228 679 228 242V-194H208L201 -182Q170 -128 123 -94T41 -51V-28Q41 -5 42 -5Q47 -5 65 -10T117 -34T179 -78L188 -87V295",8644:"943 500Q895 471 856 427T801 333H778Q755 333 755 334Q755 336 762 353T791 406T841 472L848 480H459Q70 480 67 482Q55 488 55 500T67 518Q70 520 459 520H848L841 528Q813 559 792 594T763 646T755 666Q755 667 778 667H801Q817 617 856 573T943 500ZM56 167Q102 194 141 238T198 333H221Q244 333 244 332Q221 265 161 198L151 187H539Q928 187 930 186Q944 182 944 167Q944 155 934 149Q930 147 541 147H151L160 137Q185 110 205 77T235 24T244 1Q244 0 221 0H199Q158 106 56 167",8646:"56 500Q103 527 142 572T199 667H221Q244 667 244 666Q244 664 237 647T208 594T158 528L151 520H539Q928 520 932 518Q944 513 944 500T932 482Q928 480 539 480H151L158 472Q186 441 207 406T236 354T244 334Q244 333 221 333H199Q181 383 142 428T56 500ZM943 167Q835 101 801 0H778Q755 0 755 1T758 9T765 25T771 39Q800 94 839 137L848 147H458Q68 147 66 149Q55 154 55 167Q55 182 69 186Q71 187 460 187H848L838 198Q811 228 791 261T762 314L755 332Q755 333 778 333H801Q841 227 943 167",8647:"930 437Q944 426 944 416T934 399Q930 397 540 397H150L159 387Q185 360 205 328T234 277T243 252Q243 237 217 191T159 113L150 103H540Q930 103 934 101Q944 94 944 84Q944 71 930 64L540 63H151Q180 34 203 -2T236 -61L244 -83H198Q178 -31 142 11T66 77L55 83L65 89Q157 145 197 246Q199 250 190 269Q150 359 65 411L55 417L66 423Q106 447 142 489T198 583H244Q202 488 151 437H930",8648:"83 551Q190 590 250 694Q251 689 263 671T307 621T380 567Q409 551 416 551Q422 551 447 563T511 608T577 684L582 694Q642 591 749 551V528Q749 505 748 505Q745 505 724 515T669 546T612 590L602 599V-181Q595 -193 585 -193H582H581Q568 -193 565 -183L563 -179L562 209V598L552 589Q517 556 473 531T414 506H412Q411 506 393 514T361 530T324 553T280 589L270 598V-179Q255 -192 250 -193H247Q237 -193 230 -181V599L220 590Q197 567 164 546T110 515T84 505Q83 505 83 528V551",8649:"55 416Q55 427 70 437H848Q819 466 796 502T764 561L755 583H801Q821 531 857 489T933 423L944 417L934 411Q843 355 802 254Q800 250 809 231Q849 141 934 89L944 83L933 77Q893 53 857 11T801 -83H755Q797 12 848 63H459L70 64Q55 70 55 84Q55 94 65 101Q69 103 459 103H849L840 113Q806 148 779 196T756 254Q756 255 760 264T770 286T786 315T809 351T840 387L849 397H459Q69 397 65 399Q55 406 55 416",8650:"230 681Q240 694 251 694Q260 693 270 680V-98L280 -89Q297 -73 314 -60T348 -38T374 -24T397 -13T412 -6H414Q428 -6 473 -32T552 -89L562 -98V291L563 680Q570 693 582 693Q593 694 602 681V-99L612 -90Q635 -68 668 -47T723 -15T748 -5Q749 -5 749 -28V-51Q642 -91 582 -194L577 -184Q551 -141 512 -108T447 -63T416 -51T385 -63T321 -108T255 -184L250 -194Q189 -89 83 -51V-28Q83 -5 84 -5Q88 -5 109 -15T164 -46T220 -90L230 -99V681",8651:"195 504L198 514H221Q244 514 244 512Q244 508 239 490T215 437T171 376L162 367H545Q928 367 932 365Q944 360 944 347T932 329Q928 327 492 327H55V347L67 354Q113 379 146 420T195 504ZM67 171Q70 173 507 173H944V153L932 146Q839 95 804 -4L801 -14H778Q755 -14 755 -12Q768 59 828 124L837 133H454Q71 133 67 135Q55 140 55 153Q55 165 67 171",8652:"691 660Q691 671 711 671Q720 671 723 670T730 664T735 650T746 624T768 585Q797 538 836 499T897 445T933 423Q941 418 942 416T944 405T937 390H70Q56 397 56 410T70 430H852Q802 468 762 524T707 615T691 660ZM55 256Q56 264 62 270H929Q944 261 944 250T929 230H148Q149 229 165 215T196 185T231 145T270 87T303 16Q309 -1 306 -5Q304 -11 288 -11Q279 -11 276 -10T269 -4T264 10T253 36T231 75Q172 173 69 235Q59 242 57 245T55 256",8653:"397 525Q410 525 414 524T418 516Q418 506 394 467T331 381L319 367H473L624 369L657 445Q674 487 684 507T699 531T709 534Q717 534 722 528T728 516Q728 510 695 434Q689 418 683 402T672 377T668 367H928Q942 355 942 347Q942 341 928 327H791Q651 327 651 325Q649 324 620 251T586 174Q586 172 757 172H928Q942 158 942 152Q942 143 928 132H568L537 54Q510 -9 503 -22T486 -35Q479 -35 473 -29T466 -17T495 61L526 132H319L331 118Q364 81 391 37T418 -17Q418 -23 415 -24T401 -26Q398 -26 397 -26L384 -24L377 -13Q344 49 301 97T218 170T143 210T84 233T55 245Q54 253 59 256T86 267Q281 327 377 512L384 525H397ZM606 325Q606 327 439 327H275Q258 312 179 265L148 249Q228 206 262 181L275 172H544L575 247L606 325",8654:"395 -24T395 -19T417 57T440 132H255L266 116Q308 64 340 -6Q342 -17 337 -21Q335 -26 320 -26T302 -19Q302 -15 294 4T265 54T217 117T145 182T49 236Q30 243 33 254Q40 261 49 263Q98 283 142 315T214 379T263 442T293 493T302 519Q305 525 320 525T337 521Q342 516 340 505Q308 435 266 383L255 370L384 367H515Q561 522 569 530Q574 534 580 534Q587 534 594 528T602 516Q602 512 580 441T557 367H651L742 370L731 383Q689 435 657 505Q655 516 660 521Q662 525 677 525T695 519Q695 515 703 496T732 446T780 383T853 317T949 263Q967 258 964 245Q959 240 949 236Q897 215 852 182T779 116T731 52T703 3T695 -19Q692 -26 677 -26T660 -21Q655 -17 657 -6Q670 21 682 42T702 77T717 99T728 114T735 122T739 126T740 130T613 132H482L460 54Q440 -9 433 -23T415 -37Q408 -37 402 -31ZM502 325Q502 327 360 327H217L195 310Q173 291 120 256L111 250Q114 248 143 229T195 190L217 172H335L453 174L502 325ZM886 250Q885 251 865 263T831 286T802 310L780 327H544L535 299Q531 283 511 223L495 174L637 172H780L802 190Q843 225 877 243L886 250",8655:"346 174Q348 176 378 249T411 325Q411 327 239 327H68Q55 342 55 347Q55 354 68 367H428L459 445Q487 509 494 521T510 534Q517 534 524 527T531 516Q531 515 502 438L471 367H677L666 381Q631 421 605 463T578 516Q578 522 582 523T599 525H615L619 512Q659 437 714 383T812 309T896 272T942 254Q943 246 938 243T911 232Q718 172 619 -13L615 -24L599 -26Q578 -26 578 -17Q578 -11 587 6T617 53T666 118L677 132H373L339 54Q323 12 313 -8T298 -32T288 -35Q280 -35 275 -29T269 -17Q269 -14 298 57T328 132H68Q55 145 55 152Q55 156 56 158T62 165T68 172H206Q346 172 346 174ZM848 249Q763 297 735 318L722 327H455L422 252L391 174Q391 172 557 172H722L735 181Q773 210 819 234L848 249",8656:"944 153Q944 140 929 133H318L328 123Q379 69 414 0Q419 -13 419 -17Q419 -24 399 -24Q388 -24 385 -23T377 -12Q332 77 253 144T72 237Q62 240 59 242T56 250T59 257T70 262T89 268T119 278T160 296Q303 366 377 512Q382 522 385 523T401 525Q419 524 419 515Q419 510 414 500Q379 431 328 377L318 367H929Q944 359 944 347Q944 336 930 328L602 327H274L264 319Q225 289 147 250Q148 249 165 241T210 217T264 181L274 173H930Q931 172 933 171T936 169T938 167T941 164T942 162T943 158T944 153",8657:"228 -179Q227 -180 226 -182T223 -186T221 -189T218 -192T214 -193T208 -194Q196 -194 189 -181L188 125V430L176 419Q122 369 59 338Q46 330 40 330Q38 330 31 337V350Q31 362 33 365T46 374Q60 381 77 390T128 426T190 484T247 567T292 677Q295 688 298 692Q302 694 305 694Q313 694 318 677Q334 619 363 568T420 485T481 427T532 391T564 374Q575 368 577 365T579 350V337Q572 330 570 330Q564 330 551 338Q487 370 435 419L423 430L422 125V-181Q409 -194 401 -194Q397 -194 394 -193T388 -189T385 -184T382 -180V-177V475L373 487Q331 541 305 602Q304 601 300 591T290 571T278 548T260 519T238 488L229 476L228 148V-179",8658:"580 514Q580 525 596 525Q601 525 604 525T609 525T613 524T615 523T617 520T619 517T622 512Q659 438 720 381T831 300T927 263Q944 258 944 250T935 239T898 228T840 204Q696 134 622 -12Q618 -21 615 -22T600 -24Q580 -24 580 -17Q580 -13 585 0Q620 69 671 123L681 133H70Q56 140 56 153Q56 168 72 173H725L735 181Q774 211 852 250Q851 251 834 259T789 283T735 319L725 327H72Q56 332 56 347Q56 360 70 367H681L671 377Q638 412 609 458T580 514",8659:"401 694Q412 694 422 681V375L423 70L435 81Q487 130 551 162Q564 170 570 170Q572 170 579 163V150Q579 138 577 135T564 126Q541 114 518 99T453 48T374 -46T318 -177Q313 -194 305 -194T293 -178T272 -119T225 -31Q158 70 46 126Q35 132 33 135T31 150V163Q38 170 40 170Q46 170 59 162Q122 131 176 81L188 70V375L189 681Q199 694 208 694Q219 694 228 680V352L229 25L238 12Q279 -42 305 -102Q344 -23 373 13L382 25V678Q387 692 401 694",8660:"308 524Q318 526 323 526Q340 526 340 514Q340 507 336 499Q326 476 314 454T292 417T274 391T260 374L255 368Q255 367 500 367Q744 367 744 368L739 374Q734 379 726 390T707 416T685 453T663 499Q658 511 658 515Q658 525 680 525Q687 524 690 523T695 519T701 507Q766 359 902 287Q921 276 939 269T961 259T966 250Q966 246 965 244T960 240T949 236T930 228T902 213Q763 137 701 -7Q697 -16 695 -19T690 -23T680 -25Q658 -25 658 -15Q658 -11 663 1Q673 24 685 46T707 83T725 109T739 126L744 132Q744 133 500 133Q255 133 255 132L260 126Q265 121 273 110T292 84T314 47T336 1Q341 -11 341 -15Q341 -25 319 -25Q312 -24 309 -23T304 -19T298 -7Q233 141 97 213Q83 221 70 227T51 235T41 239T35 243T34 250T35 256T40 261T51 265T70 273T97 287Q235 363 299 509Q305 522 308 524ZM792 319L783 327H216Q183 294 120 256L110 250L120 244Q173 212 207 181L216 173H783L792 181Q826 212 879 244L889 250L879 256Q826 288 792 319",8661:"290 755Q298 772 305 772T318 757T343 706T393 633Q431 588 473 558T545 515T579 497V484Q579 464 570 464Q564 464 550 470Q485 497 423 550L422 400V100L423 -50Q485 3 550 30Q565 36 570 36Q579 36 579 16V3Q575 -1 549 -12T480 -53T393 -132Q361 -172 342 -208T318 -258T305 -272T293 -258T268 -208T217 -132Q170 -80 128 -51T61 -12T31 3V16Q31 36 40 36Q46 36 61 30Q86 19 109 6T146 -18T173 -38T188 -50V550Q186 549 173 539T147 519T110 495T61 470Q46 464 40 464Q31 464 31 484V497Q34 500 63 513T135 557T217 633Q267 692 290 755ZM374 598Q363 610 351 625T332 651T316 676T305 695L294 676Q282 657 267 636T236 598L228 589V-89L236 -98Q247 -110 259 -125T278 -151T294 -176T305 -195L316 -176Q328 -157 343 -136T374 -98L382 -89V589L374 598",8666:"944 54Q942 44 929 36H372Q372 34 377 26T395 -4T422 -58Q442 -109 442 -110T408 -111H374L370 -100Q282 124 87 243L76 250L87 257Q284 377 370 600L374 611H408Q442 611 442 610Q423 550 381 480Q380 478 379 475T376 471T374 468T372 465V464H929Q942 456 944 446Q944 442 943 439T941 434T938 430T935 428T931 426T928 424H344L336 414Q277 336 200 277L191 270H560Q929 270 933 268Q944 262 944 250Q944 237 933 232Q929 230 560 230H191L200 223Q279 162 336 86L344 76H928Q929 76 931 75T934 73T938 70T941 66T943 61T944 54",8667:"56 250Q56 260 68 270H808L799 277Q720 338 663 414L655 424H363Q71 424 68 426Q55 432 55 444T68 462Q71 464 349 464H627Q627 466 622 474T604 504T577 558Q557 609 557 610T591 611H626L629 600Q717 376 912 257L923 250L912 243Q715 123 629 -100L626 -111H591Q557 -111 557 -110Q576 -50 618 20Q619 22 620 25T623 29T625 32T626 35L627 36H349Q71 36 68 38Q55 44 55 56T68 74Q71 76 363 76H655L663 86Q722 164 799 223L808 230H438L68 231Q56 236 56 250",8669:"76 230Q68 230 62 237T56 250Q56 257 63 264T91 291Q102 300 108 306L159 351Q168 356 177 351L218 316L303 239L353 195Q376 214 403 239L488 316L529 351Q538 356 546 351Q548 350 594 310L638 270H848L841 278Q813 309 792 344T763 396T755 416Q755 417 778 417H801Q817 367 856 323T943 250Q895 221 856 177T801 83H778Q755 83 755 84Q755 86 762 103T791 156T841 222L848 230H737Q625 230 622 232Q620 233 599 251T558 288L537 306Q537 305 451 228T362 149Q353 146 345 149Q341 150 255 227T169 306Q167 306 129 270Q123 265 115 257T102 245T93 237T84 232T76 230",8672:"292 419Q292 400 261 347T211 275H306H364Q400 275 411 271T422 250T411 230T366 225H306H211Q214 222 232 197T271 136T292 82Q292 71 285 68T262 64H250H241Q221 64 216 67T205 83Q186 127 153 167T78 230Q64 238 64 250Q64 258 69 263T82 272T106 288T139 318Q162 342 177 365T198 402T209 425T223 436Q224 437 252 437H258Q292 437 292 419ZM501 237T501 250T515 270H819Q834 262 834 250T819 230H515Q501 237 501 250ZM918 237T918 250T932 270H1236Q1251 262 1251 250T1236 230H932Q918 237 918 250",8674:"84 237T84 250T98 270H402Q417 262 417 250T402 230H98Q84 237 84 250ZM501 237T501 250T515 270H819Q834 262 834 250T819 230H515Q501 237 501 250ZM1022 417Q1022 437 1055 437H1067Q1090 437 1097 434T1109 417Q1128 373 1161 333T1236 270Q1251 261 1251 250Q1251 241 1244 236T1216 217T1175 182Q1149 155 1133 128T1109 85T1097 66Q1093 64 1065 64H1053Q1031 64 1025 72T1027 100Q1036 124 1049 147T1073 185T1091 210T1101 223L1103 225H1008H950Q914 225 903 229T892 250T903 270T948 275H1008H1103L1101 277Q1100 280 1091 291T1067 325T1039 374Q1022 408 1022 417",8704:"0 673Q0 684 7 689T20 694Q32 694 38 680T82 567L126 451H430L473 566Q483 593 494 622T512 668T519 685Q524 694 538 694Q556 692 556 674Q556 670 426 329T293 -15Q288 -22 278 -22T263 -15Q260 -11 131 328T0 673ZM414 410Q414 411 278 411T142 410L278 55L414 410",8705:"404 269Q412 269 418 267T428 261T435 253T441 245L444 240V172Q444 103 443 96Q440 81 431 65T403 27T344 -7T250 -21T156 -8T97 27T69 65T58 96Q56 103 56 413Q56 722 58 729Q74 822 215 845Q221 846 229 846H243Q282 846 290 845Q422 826 443 729Q444 722 444 653V586L442 583Q441 580 440 578T436 573T430 567T423 562T415 558T404 556Q377 556 367 583Q364 590 364 654V719Q363 721 360 726T355 733Q326 766 250 766H249Q235 766 219 765T174 752T137 719V107Q145 83 178 71T251 58H254Q340 58 364 107V172Q364 176 364 187T363 204Q363 269 404 269",8706:"202 508Q179 508 169 520T158 547Q158 557 164 577T185 624T230 675T301 710L333 715H345Q378 715 384 714Q447 703 489 661T549 568T566 457Q566 362 519 240T402 53Q321 -22 223 -22Q123 -22 73 56Q42 102 42 148V159Q42 276 129 370T322 465Q383 465 414 434T455 367L458 378Q478 461 478 515Q478 603 437 639T344 676Q266 676 223 612Q264 606 264 572Q264 547 246 528T202 508ZM430 306Q430 372 401 400T333 428Q270 428 222 382Q197 354 183 323T150 221Q132 149 132 116Q132 21 232 21Q244 21 250 22Q327 35 374 112Q389 137 409 196T430 306",8707:"56 661T56 674T70 694H487Q497 686 500 679V15Q497 10 487 1L279 0H70Q56 7 56 20T70 40H460V327H84Q70 334 70 347T84 367H460V654H70Q56 661 56 674",8709:"331 696Q335 708 339 722T345 744T350 759T357 769T367 772Q374 772 381 767T388 754Q388 746 377 712L366 673L378 661Q460 575 460 344Q460 281 456 234T432 126T373 27Q319 -22 250 -22Q214 -22 180 -7Q168 -3 168 -4L159 -33Q148 -71 142 -75Q138 -78 132 -78Q124 -78 118 -72T111 -60Q111 -52 122 -18L133 21L125 29Q39 111 39 344Q39 596 137 675Q187 716 251 716Q265 716 278 714T296 710T315 703T331 696ZM276 676Q264 679 246 679Q196 679 159 631Q134 597 128 536T121 356Q121 234 127 174T151 80L234 366Q253 430 275 506T308 618L318 654Q318 656 294 669L276 676ZM181 42Q207 16 250 16Q291 16 324 47Q354 78 366 136T378 356Q378 470 372 528T349 616L348 613Q348 611 264 326L181 42",8710:"51 0Q46 4 46 7Q46 9 215 357T388 709Q391 716 416 716Q439 716 444 709Q447 705 616 357T786 7Q786 4 781 0H51ZM507 344L384 596L137 92L383 91H630Q630 93 507 344",8711:"46 676Q46 679 51 683H781Q786 679 786 676Q786 674 617 326T444 -26Q439 -33 416 -33T388 -26Q385 -22 216 326T46 676ZM697 596Q697 597 445 597T193 596Q195 591 319 336T445 80L697 596",8712:"84 250Q84 372 166 450T360 539Q361 539 377 539T419 540T469 540H568Q583 532 583 520Q583 511 570 501L466 500Q355 499 329 494Q280 482 242 458T183 409T147 354T129 306T124 272V270H568Q583 262 583 250T568 230H124V228Q124 207 134 177T167 112T231 48T328 7Q355 1 466 0H570Q583 -10 583 -20Q583 -32 568 -40H471Q464 -40 446 -40T417 -41Q262 -41 172 45Q84 127 84 250",8713:"196 25Q84 109 84 250Q84 372 166 450T360 539Q361 539 375 539T413 540T460 540L547 707Q550 716 563 716Q570 716 575 712T581 703T583 696T505 540H568Q583 532 583 520Q583 511 570 501L484 500L366 270H568Q583 262 583 250T568 230H346L247 38Q284 16 328 7Q355 1 466 0H570Q583 -10 583 -20Q583 -32 568 -40H471Q464 -40 447 -40T419 -41Q304 -41 228 3Q117 -211 115 -212Q111 -215 104 -215T92 -212T86 -204T84 -197Q84 -190 89 -183L196 25ZM214 61L301 230H124V228Q124 196 147 147T214 61ZM321 270L440 500Q353 499 329 494Q280 482 242 458T183 409T147 354T129 306T124 272V270H321",8715:"83 520Q83 532 98 540H195Q202 540 220 540T249 541Q404 541 494 455Q582 374 582 250Q582 165 539 99T434 0T304 -39Q297 -40 195 -40H98Q83 -32 83 -20Q83 -10 96 0H200Q311 1 337 6Q369 14 401 28Q422 39 445 55Q484 85 508 127T537 191T542 228V230H98Q84 237 84 250T98 270H542V272Q542 280 539 295T527 336T497 391T445 445Q422 461 401 472Q386 479 374 483T347 491T325 495T298 498T273 499T239 500T200 500L96 501Q83 511 83 520",8717:"154 -1Q122 -1 112 3T102 26Q102 63 158 63H178Q192 64 206 65T228 66T240 68Q301 85 324 146L329 157H244Q158 157 153 161Q149 162 145 169T140 183Q140 201 158 215L167 221H256L344 223L349 237Q352 262 352 287Q352 308 351 315Q341 352 315 368T256 385Q231 385 206 376T166 356T149 346Q143 346 138 364T132 388Q132 396 147 406Q198 440 252 440Q291 440 318 435Q421 404 451 301Q456 288 456 248V234Q456 151 391 86Q330 25 240 3Q212 -1 154 -1",8719:"158 656Q147 684 131 694Q110 707 69 710H55V750H888V710H874Q840 708 820 698T795 678T786 656V-155Q798 -206 874 -210H888V-250H570V-210H584Q618 -208 638 -197T663 -178T673 -155V710H270V277L271 -155Q283 -206 359 -210H373V-250H55V-210H69Q103 -208 123 -197T148 -178T158 -155V656",8720:"158 656Q147 684 131 694Q110 707 69 710H55V750H373V710H359Q325 708 305 698T280 678T271 656L270 223V-210H673V656Q666 672 663 679T639 697T584 710H570V750H888V710H874Q840 708 820 698T795 678T786 656V-155Q798 -206 874 -210H888V-250H55V-210H69Q103 -208 123 -197T148 -178T158 -155V656",8721:"61 748Q64 750 489 750H913L954 640Q965 609 976 579T993 533T999 516H979L959 517Q936 579 886 621T777 682Q724 700 655 705T436 710H319Q183 710 183 709Q186 706 348 484T511 259Q517 250 513 244L490 216Q466 188 420 134T330 27L149 -187Q149 -188 362 -188Q388 -188 436 -188T506 -189Q679 -189 778 -162T936 -43Q946 -27 959 6H999L913 -249L489 -250Q65 -250 62 -248Q56 -246 56 -239Q56 -234 118 -161Q186 -81 245 -11L428 206Q428 207 242 462L57 717L56 728Q56 744 61 748",8722:"84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250",8723:"56 467T56 480T70 500H707Q722 492 722 480T707 460H409V187H707Q722 179 722 167Q722 154 707 147H409V0V-93Q409 -144 406 -155T389 -166Q376 -166 372 -155T368 -105Q368 -96 368 -62T369 -2V147H70Q56 154 56 167T70 187H369V460H70Q56 467 56 480",8724:"339 717Q339 739 354 752T388 766Q410 766 424 751T439 716T424 681T390 666Q369 666 354 681T339 717ZM57 237T57 250T71 270H369V425L370 581Q380 594 389 594Q402 594 409 579V270H707Q722 262 722 250T707 230H409V-79Q401 -93 391 -93H389H387Q375 -93 369 -79V230H71Q57 237 57 250",8725:"423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750",8726:"56 731Q56 740 62 745T75 750Q85 750 92 740Q96 733 270 255T444 -231Q444 -239 438 -244T424 -250Q414 -250 407 -240Q404 -236 230 242T56 731",8727:"229 286Q216 420 216 436Q216 454 240 464Q241 464 245 464T251 465Q263 464 273 456T283 436Q283 419 277 356T270 286L328 328Q384 369 389 372T399 375Q412 375 423 365T435 338Q435 325 425 315Q420 312 357 282T289 250L355 219L425 184Q434 175 434 161Q434 146 425 136T401 125Q393 125 383 131T328 171L270 213Q283 79 283 63Q283 53 276 44T250 35Q231 35 224 44T216 63Q216 80 222 143T229 213L171 171Q115 130 110 127Q106 124 100 124Q87 124 76 134T64 161Q64 166 64 169T67 175T72 181T81 188T94 195T113 204T138 215T170 230T210 250L74 315Q65 324 65 338Q65 353 74 363T98 374Q106 374 116 368T171 328L229 286",8728:"55 251Q55 328 112 386T249 444T386 388T444 249Q444 171 388 113T250 55Q170 55 113 112T55 251ZM245 403Q188 403 142 361T96 250Q96 183 141 140T250 96Q284 96 313 109T354 135T375 160Q403 197 403 250Q403 313 360 358T245 403",8729:"55 251Q55 328 112 386T249 444T386 388T444 249Q444 171 388 113T250 55Q170 55 113 112T55 251",8730:"95 178Q89 178 81 186T72 200T103 230T169 280T207 309Q209 311 212 311H213Q219 311 227 294T281 177Q300 134 312 108L397 -77Q398 -77 501 136T707 565T814 786Q820 800 834 800Q841 800 846 794T853 782V776L620 293L385 -193Q381 -200 366 -200Q357 -200 354 -197Q352 -195 256 15L160 225L144 214Q129 202 113 190T95 178",8733:"56 124T56 216T107 375T238 442Q260 442 280 438T319 425T352 407T382 385T406 361T427 336T442 315T455 297T462 285L469 297Q555 442 679 442Q687 442 722 437V398H718Q710 400 694 400Q657 400 623 383T567 343T527 294T503 253T495 235Q495 231 520 192T554 143Q625 44 696 44Q717 44 719 46H722V-5Q695 -11 678 -11Q552 -11 457 141Q455 145 454 146L447 134Q362 -11 235 -11Q157 -11 107 56ZM93 213Q93 143 126 87T220 31Q258 31 292 48T349 88T389 137T413 178T421 196Q421 200 396 239T362 288Q322 345 288 366T213 387Q163 387 128 337T93 213",8734:"55 217Q55 305 111 373T254 442Q342 442 419 381Q457 350 493 303L507 284L514 294Q618 442 747 442Q833 442 888 374T944 214Q944 128 889 59T743 -11Q657 -11 580 50Q542 81 506 128L492 147L485 137Q381 -11 252 -11Q166 -11 111 57T55 217ZM907 217Q907 285 869 341T761 397Q740 397 720 392T682 378T648 359T619 335T594 310T574 285T559 263T548 246L543 238L574 198Q605 158 622 138T664 94T714 61T765 51Q827 51 867 100T907 217ZM92 214Q92 145 131 89T239 33Q357 33 456 193L425 233Q364 312 334 337Q285 380 233 380Q171 380 132 331T92 214",8736:"71 0L68 2Q65 3 63 5T58 11T55 20Q55 22 57 28Q67 43 346 361Q397 420 474 508Q595 648 616 671T647 694T661 688T666 674Q666 668 663 663Q662 662 627 622T524 503T390 350L120 41L386 40H653Q666 30 666 20Q666 8 651 0H71",8737:"71 0L68 2Q65 3 63 5T58 11T55 20Q55 22 57 28Q64 38 348 373T638 712Q644 714 646 714Q653 714 659 709T666 694V693Q666 687 633 647Q619 631 576 580Q528 524 495 485Q336 296 329 289Q328 288 348 264T395 182T433 54L434 40H651Q666 32 666 20T651 0H436Q431 -20 416 -20Q400 -20 396 -4V0H71ZM394 40Q394 51 389 76T366 149T319 234L302 256L119 41L256 40H394",8738:"666 -32Q666 -51 646 -51Q639 -51 365 85L75 228Q55 238 55 250Q55 257 59 262T68 268L72 270L611 536Q642 551 647 551T659 547T666 532Q666 521 657 515L525 449Q525 448 535 424T556 352T566 250T556 148T536 77T525 51L657 -15Q666 -21 666 -32ZM526 250Q526 297 517 342T499 409T488 431Q487 431 304 341T121 250T304 159T488 69Q526 143 526 250",8739:"139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139",8740:"118 737Q131 750 138 750L151 746L158 739V579L160 421L213 470Q269 519 276 519Q284 519 290 513T296 499V498Q296 493 291 488T244 445Q225 428 213 417L158 368V-239Q143 -252 136 -252L124 -248L120 -241L118 44V328L62 279Q4 231 0 230Q-8 230 -14 236T-20 250Q-20 257 -11 265T62 332L118 384V737",8741:"133 736Q138 750 153 750Q164 750 170 739Q172 735 172 250T170 -239Q164 -250 152 -250Q144 -250 138 -244L137 -243Q133 -241 133 -179T132 250Q132 731 133 736ZM329 739Q334 750 346 750Q353 750 361 744L362 743Q366 741 366 679T367 250T367 -178T362 -243L361 -244Q355 -250 347 -250Q335 -250 329 -239Q327 -235 327 250T329 739",8742:"131 737Q134 739 138 743T144 748T151 750T171 737V199L327 357V737Q340 750 347 750Q351 750 353 749T360 743T367 737V397L429 457Q493 518 498 519Q506 519 512 512T518 500Q518 489 442 417L367 339V-237Q352 -250 346 -250L333 -243L327 -237V301L171 143V-237Q156 -250 151 -250T131 -237V101L69 41Q24 -3 15 -12T0 -21Q-8 -21 -14 -14T-20 -2Q-20 5 -7 19T56 81L131 159V737",8743:"318 591Q325 598 333 598Q344 598 348 591Q349 590 414 445T545 151T611 -4Q609 -22 591 -22Q588 -22 586 -21T581 -20T577 -17T575 -13T572 -9T570 -4L333 528L96 -4Q87 -20 80 -21Q78 -22 75 -22Q57 -22 55 -4Q55 2 120 150T251 444T318 591",8744:"55 580Q56 587 61 592T75 598Q86 598 96 580L333 48L570 580Q579 596 586 597Q588 598 591 598Q609 598 611 580Q611 574 546 426T415 132T348 -15Q343 -22 333 -22T318 -15Q317 -14 252 131T121 425T55 580",8745:"88 -21T75 -21T55 -7V200Q55 231 55 280Q56 414 60 428Q61 430 61 431Q77 500 152 549T332 598Q443 598 522 544T610 405Q611 399 611 194V-7Q604 -22 591 -22Q582 -22 572 -9L570 405Q563 433 556 449T529 485Q498 519 445 538T334 558Q251 558 179 518T96 401Q95 396 95 193V-7Q88 -21 75 -21",8746:"591 598H592Q604 598 611 583V376Q611 345 611 296Q610 162 606 148Q605 146 605 145Q586 68 507 23T333 -22Q268 -22 209 -1T106 66T56 173Q55 180 55 384L56 585Q66 598 75 598Q85 598 95 585V378L96 172L98 162Q112 95 181 57T332 18Q415 18 487 58T570 175Q571 180 571 383V583Q579 598 591 598",8747:"151 -112Q151 -150 106 -161Q106 -165 114 -172T134 -179Q155 -179 170 -146Q181 -120 188 -64T206 101T232 310Q256 472 277 567Q308 716 392 716Q434 716 453 681T472 613Q472 590 458 577T424 564Q404 564 390 578T376 612Q376 650 421 661Q421 663 418 667T407 675T393 679Q387 679 380 675Q360 665 350 619T326 438Q302 190 253 -57Q235 -147 201 -186Q174 -213 138 -216Q93 -216 74 -181T55 -113Q55 -91 69 -78T103 -64Q123 -64 137 -78T151 -112",8748:"113 -244Q113 -246 119 -251T139 -263T167 -269Q186 -269 199 -260Q220 -247 232 -218T251 -133T262 -15T276 155T297 367Q300 390 305 438T314 512T325 580T340 647T361 703T390 751T428 784T479 804Q481 804 488 804T501 805Q552 802 581 769T610 695Q610 669 594 657T561 645Q542 645 527 658T512 694Q512 705 516 714T526 729T538 737T548 742L552 743Q552 745 545 751T525 762T498 768Q475 768 460 756T434 716T418 652T407 559T398 444T387 300T369 133Q349 -38 337 -102T303 -207Q256 -306 169 -306Q119 -306 87 -272T55 -196Q55 -170 71 -158T104 -146Q123 -146 138 -159T153 -195Q153 -206 149 -215T139 -230T127 -238T117 -242L113 -244ZM460 -244Q460 -246 466 -251T486 -263T514 -269Q532 -269 546 -260Q567 -247 579 -218T598 -133T609 -15T623 155T644 367Q647 390 652 438T661 512T672 580T687 647T708 703T737 751T775 784T826 804Q828 804 835 804T848 805Q899 802 928 769T957 695Q957 669 941 657T908 645Q889 645 874 658T859 694Q859 705 863 714T873 729T885 737T895 742L899 743Q899 745 892 751T872 762T845 768Q822 768 807 756T781 716T765 652T754 559T745 444T734 300T716 133Q696 -38 684 -102T650 -207Q603 -306 516 -306Q466 -306 434 -272T402 -196Q402 -170 418 -158T451 -146Q470 -146 485 -159T500 -195Q500 -206 496 -215T486 -230T474 -238T464 -242L460 -244",8749:"113 -244Q113 -246 119 -251T139 -263T167 -269Q186 -269 199 -260Q220 -247 232 -218T251 -133T262 -15T276 155T297 367Q300 390 305 438T314 512T325 580T340 647T361 703T390 751T428 784T479 804Q481 804 488 804T501 805Q552 802 581 769T610 695Q610 669 594 657T561 645Q542 645 527 658T512 694Q512 705 516 714T526 729T538 737T548 742L552 743Q552 745 545 751T525 762T498 768Q475 768 460 756T434 716T418 652T407 559T398 444T387 300T369 133Q349 -38 337 -102T303 -207Q256 -306 169 -306Q119 -306 87 -272T55 -196Q55 -170 71 -158T104 -146Q123 -146 138 -159T153 -195Q153 -206 149 -215T139 -230T127 -238T117 -242L113 -244ZM460 -244Q460 -246 466 -251T486 -263T514 -269Q532 -269 546 -260Q567 -247 579 -218T598 -133T609 -15T623 155T644 367Q647 390 652 438T661 512T672 580T687 647T708 703T737 751T775 784T826 804Q828 804 835 804T848 805Q899 802 928 769T957 695Q957 669 941 657T908 645Q889 645 874 658T859 694Q859 705 863 714T873 729T885 737T895 742L899 743Q899 745 892 751T872 762T845 768Q822 768 807 756T781 716T765 652T754 559T745 444T734 300T716 133Q696 -38 684 -102T650 -207Q603 -306 516 -306Q466 -306 434 -272T402 -196Q402 -170 418 -158T451 -146Q470 -146 485 -159T500 -195Q500 -206 496 -215T486 -230T474 -238T464 -242L460 -244ZM807 -244Q807 -246 813 -251T833 -263T861 -269Q880 -269 893 -260Q914 -247 926 -218T945 -133T956 -15T970 155T991 367Q994 390 999 438T1008 512T1019 580T1034 647T1055 703T1084 751T1122 784T1173 804Q1175 804 1182 804T1195 805Q1246 802 1275 769T1304 695Q1304 669 1288 657T1255 645Q1236 645 1221 658T1206 694Q1206 705 1210 714T1220 729T1232 737T1242 742L1246 743Q1246 745 1239 751T1219 762T1192 768Q1169 768 1154 756T1128 716T1112 652T1101 559T1092 444T1081 300T1063 133Q1043 -38 1031 -102T997 -207Q950 -306 863 -306Q813 -306 781 -272T749 -196Q749 -170 765 -158T798 -146Q817 -146 832 -159T847 -195Q847 -206 843 -215T833 -230T821 -238T811 -242L807 -244",8750:"269 74L256 80Q244 85 227 97T191 128T161 179T148 250Q148 332 199 379T302 433L306 434L307 444Q309 456 313 495T321 553T331 607T345 664T365 712T393 756T431 785T479 804Q481 804 488 804T501 805Q552 802 581 769T610 695Q610 669 594 657T561 645Q542 645 527 658T512 694Q512 705 516 714T526 729T538 737T548 742L552 743Q552 745 545 751T525 762T498 768Q471 768 454 752T427 693T414 626T406 536Q405 530 405 527L397 425L404 422Q410 419 421 413T445 399T470 376T494 345T511 303T518 250Q518 205 502 169T460 112T410 80T364 66L360 65L359 55Q357 38 353 4T346 -43T340 -81T333 -118T326 -148T316 -179T303 -207Q256 -306 169 -306Q119 -306 87 -272T55 -196Q55 -170 71 -158T104 -146Q123 -146 138 -159T153 -195Q153 -206 149 -215T139 -230T127 -238T117 -242L113 -244Q113 -246 119 -251T139 -263T167 -269Q186 -269 199 -260Q231 -241 242 -183T266 33L269 74ZM272 122Q272 156 300 391Q300 392 299 392Q287 392 263 379T213 331T187 249Q187 211 205 180T239 137T272 116V122ZM366 107Q378 107 402 119T453 167T479 249Q479 340 394 383V377Q394 375 394 374T393 371T393 366T392 357T391 342T389 321T386 291T382 251T377 199T369 133Q366 112 366 107",8756:"273 411Q273 437 291 454T334 471Q358 471 375 454T393 411T376 368T333 351Q307 351 290 368T273 411ZM84 38Q110 38 126 21T143 -22Q143 -46 127 -64T83 -82Q57 -82 41 -65T24 -22Q24 4 41 21T84 38ZM524 -22Q524 4 541 21T584 38Q608 38 625 21T643 -22Q643 -45 627 -63T583 -82Q557 -82 541 -65T524 -22",8757:"23 411Q23 437 41 454T84 471Q108 471 125 454T143 411T126 368T83 351Q57 351 40 368T23 411ZM523 411Q523 437 541 454T584 471Q608 471 625 454T643 411T626 368T583 351Q557 351 540 368T523 411ZM274 -22Q274 4 291 21T334 38Q356 38 374 22T392 -22T375 -65T333 -82Q307 -82 291 -65T274 -22",8764:"55 166Q55 241 101 304T222 367Q260 367 296 349T362 304T421 252T484 208T554 189Q616 189 655 236T694 338Q694 350 698 358T708 367Q722 367 722 334Q722 260 677 197T562 134H554Q517 134 481 152T414 196T355 248T292 293T223 311Q179 311 145 286Q109 257 96 218T80 156T69 133Q55 133 55 166",8765:"222 133Q147 133 102 197T56 335Q56 362 66 365Q71 369 77 364Q83 356 84 335T90 298Q102 254 137 222T223 189Q258 189 292 206T355 250T413 301T477 346T550 367Q628 367 673 309T722 171Q722 133 708 133Q703 133 699 141T694 162Q694 220 655 265T555 311Q519 311 485 293T421 248T363 196T298 152T222 133",8768:"55 569Q55 583 83 583Q122 583 151 565T194 519T215 464T222 411Q222 360 194 304T139 193T111 89Q111 38 134 -7T195 -55Q222 -57 222 -69Q222 -83 189 -83Q130 -83 93 -33T55 90Q55 130 72 174T110 252T148 328T166 411Q166 462 144 507T83 555Q55 556 55 569",8769:"220 366Q258 366 297 347T361 308T391 288Q394 288 464 370Q494 407 510 425T535 454T546 465T552 467H553Q560 467 566 461T573 448Q573 439 499 350Q424 266 424 261Q424 259 442 247T492 222T554 209Q607 209 646 243Q671 268 680 295T690 341T702 366Q719 366 719 314Q716 265 695 226Q682 199 664 179Q614 132 555 132Q517 132 477 151T412 190T383 210T347 172T278 89T233 37Q228 32 220 32Q210 32 206 38T201 48Q201 57 266 137Q272 144 275 148Q351 231 351 237Q351 239 333 251T283 276T221 289Q159 289 123 248T86 166Q86 156 82 145T73 132Q55 132 55 172Q55 220 79 272Q95 301 111 319Q161 366 220 366",8770:"55 439T55 443T56 449T62 456T68 463H706Q720 449 720 443T706 423H68Q55 439 55 443ZM56 72Q56 112 73 152T130 225T224 257Q259 257 294 240T360 199T419 149T484 107T553 90Q603 90 643 125T691 223Q693 257 704 257Q717 257 717 221Q717 147 671 91T554 34Q517 34 481 51T414 93T355 142T291 184T222 201Q172 201 131 167T84 67Q81 34 71 34Q56 37 56 72",8771:"55 283Q55 356 103 409T217 463Q262 463 297 447T395 382Q431 355 446 344T493 320T554 307H558Q613 307 652 344T694 433Q694 464 708 464T722 432Q722 356 673 304T564 251H554Q510 251 465 275T387 329T310 382T223 407H219Q164 407 122 367Q91 333 85 295T76 253T69 250Q55 250 55 283ZM56 56Q56 71 72 76H706Q722 70 722 56Q722 44 707 36H70Q56 43 56 56",8773:"55 388Q55 463 101 526T222 589Q260 589 296 571T362 526T421 474T484 430T554 411Q616 411 655 458T694 560Q694 572 698 580T708 589Q722 589 722 556Q722 482 677 419T562 356H554Q517 356 481 374T414 418T355 471T292 515T223 533Q179 533 145 508Q109 479 96 440T80 378T69 355Q55 355 55 388ZM56 236Q56 249 70 256H707Q722 248 722 236Q722 225 708 217L390 216H72Q56 221 56 236ZM56 42Q56 57 72 62H708Q722 52 722 42Q722 30 707 22H70Q56 29 56 42",8775:"55 417Q55 479 101 528T222 578Q259 578 294 564T393 507Q413 493 434 480T469 460T484 454L537 549Q587 639 595 647Q600 652 607 652Q615 652 621 647T628 634Q628 625 575 536Q524 446 524 443Q527 440 555 440Q603 440 644 469T691 547Q694 578 706 578T718 556Q718 555 718 551T717 545Q717 488 684 445T595 387Q582 384 558 384Q530 384 508 389L493 394L404 238L557 236H708Q720 224 720 217T706 196H379L291 43L499 41H708Q720 29 720 21T706 1H268L226 -71Q186 -143 179 -148Q173 -155 165 -155T152 -150T146 -137Q146 -133 184 -64L222 1H144L66 3L59 7Q54 14 54 20Q54 29 66 41H246L333 194Q333 196 202 196H68Q55 211 55 218T66 236H213L357 238L457 409L437 421Q432 423 393 450T307 500T222 523Q171 523 129 491T84 414Q82 383 70 383Q55 383 55 417",8776:"55 319Q55 360 72 393T114 444T163 472T205 482Q207 482 213 482T223 483Q262 483 296 468T393 413L443 381Q502 346 553 346Q609 346 649 375T694 454Q694 465 698 474T708 483Q722 483 722 452Q722 386 675 338T555 289Q514 289 468 310T388 357T308 404T224 426Q164 426 125 393T83 318Q81 289 69 289Q55 289 55 319ZM55 85Q55 126 72 159T114 210T163 238T205 248Q207 248 213 248T223 249Q262 249 296 234T393 179L443 147Q502 112 553 112Q609 112 649 141T694 220Q694 249 708 249T722 217Q722 153 675 104T555 55Q514 55 468 76T388 123T308 170T224 192Q164 192 125 159T83 84Q80 55 69 55Q55 55 55 85",8778:"220 523Q163 523 124 486T84 412Q81 383 69 383Q56 383 56 413Q56 441 67 470Q78 508 111 537T187 575Q203 579 219 579Q248 579 271 572Q304 565 393 508Q498 439 551 439Q620 439 662 486Q688 512 693 557Q693 565 697 572T707 579Q719 579 719 548Q719 483 673 434T550 384Q512 384 467 405T386 453T305 501T220 523ZM222 288Q164 288 124 251T84 177Q81 148 69 148Q56 148 56 178Q56 206 67 235Q78 274 111 302T187 339Q198 343 220 343Q244 343 259 341T308 322T393 272Q496 203 553 203Q612 203 651 241T691 312Q693 343 705 343Q719 343 719 313Q719 245 673 199Q626 148 552 148Q513 148 467 170T385 218T304 266T222 288ZM51 -19Q51 -6 62 -1H387Q713 -1 715 -3Q725 -10 725 -20Q725 -27 718 -34Q714 -38 672 -38T387 -39H62Q51 -25 51 -19",8781:"55 464Q55 471 60 477T74 484Q80 484 108 464T172 420T268 376T389 356Q436 356 483 368T566 399T630 436T675 467T695 482Q701 484 703 484Q711 484 716 478T722 464Q722 454 707 442Q550 316 389 316Q338 316 286 329T195 362T124 402T76 437T57 456Q55 462 55 464ZM57 45Q66 58 109 88T230 151T381 183Q438 183 494 168T587 135T658 94T703 61T720 45Q722 39 722 36Q722 28 717 22T703 16Q697 16 669 36T606 80T510 124T389 144Q341 144 294 132T211 101T147 64T102 33T82 18Q76 16 74 16Q66 16 61 22T55 36Q55 39 57 45",8782:"245 367Q251 415 288 453T392 492Q445 492 485 456T532 367H707Q722 359 722 347Q722 334 711 331T665 327H608H509Q500 332 498 336Q496 338 493 363T472 411Q443 451 389 451H387Q335 451 305 411Q290 392 287 374T282 344T268 327H72Q56 332 56 347Q56 360 70 367H245ZM56 153Q56 168 72 173H268Q277 168 279 164Q281 162 284 137T305 89Q334 49 389 49H391Q442 49 472 89Q487 108 490 126T495 156T509 173H608H666Q701 173 711 170T722 153T707 133H532Q526 81 486 45T389 8Q331 8 291 45T245 133H70Q56 140 56 153",8783:"245 367Q251 415 288 453T392 492Q445 492 485 456T532 367H707Q722 359 722 347Q722 334 711 331T665 327H608H509Q500 332 498 336Q496 338 493 363T472 411Q443 451 389 451H387Q335 451 305 411Q290 392 287 374T282 344T268 327H72Q56 332 56 347Q56 360 70 367H245ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153",8784:"56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153ZM329 610Q329 634 346 652T389 670Q413 670 431 654T450 611Q450 586 433 568T390 550T347 567T329 610",8785:"421 474T389 474T339 493T321 541Q321 566 337 587T391 609Q456 602 456 541Q456 512 439 493ZM56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153ZM421 -108T389 -108T339 -89T321 -41Q321 -16 337 5T391 27Q456 20 456 -41Q456 -70 439 -89",8786:"15 541Q15 569 33 585T75 601T117 585T135 541Q135 514 118 498T75 481T32 498T15 541ZM56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153ZM642 -41Q642 -17 658 0T702 18Q726 18 744 3T762 -41Q762 -67 745 -84T702 -101Q676 -101 659 -85T642 -41",8787:"642 541Q642 569 660 585T702 601T744 585T762 541Q762 515 745 498T702 481Q676 481 659 497T642 541ZM56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153ZM14 -41Q14 -15 31 1T74 18Q101 18 118 0T135 -41Q135 -64 118 -83T75 -102Q51 -102 33 -85T14 -41",8790:"56 347Q56 360 70 367H707Q722 359 722 347Q722 334 711 331T658 327H586H465L472 318Q496 288 496 250T472 182L465 173H586H663Q700 173 711 170T722 153T707 133H70Q56 140 56 153Q56 168 72 173H312L305 182Q281 212 281 250T305 318L312 327H72Q56 332 56 347ZM473 250Q473 265 472 273T460 297T428 327H349Q328 313 318 298T306 273T304 250Q304 235 305 227T317 203T349 173H428Q449 187 459 202T471 227T473 250",8791:"279 612Q279 656 310 688T388 721Q433 721 465 689T498 612Q498 573 470 538T389 503Q336 503 308 538T279 612ZM458 614Q458 637 452 651T433 672T411 679T383 680T352 675T333 664T324 647T321 629T320 611Q320 593 321 584T332 562T359 545Q366 543 389 543H391Q406 543 414 544T435 552T452 573T458 614ZM56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153",8796:"192 482H190Q187 483 185 484T181 488T177 493T175 501Q175 506 178 512Q184 523 278 687T375 853Q379 857 383 857Q385 857 387 858T390 859Q397 859 403 853Q405 851 499 687T600 512Q603 506 603 501Q603 488 587 482H192ZM548 523L389 798Q388 798 309 661T230 523T389 522T548 523ZM56 347Q56 360 70 367H708Q723 359 723 347Q723 336 709 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H709Q723 163 723 153Q723 140 708 133H70Q56 140 56 153",8800:"166 -215T159 -215T147 -212T141 -204T139 -197Q139 -190 144 -183L306 133H70Q56 140 56 153Q56 168 72 173H327L406 327H72Q56 332 56 347Q56 360 70 367H426Q597 702 602 707Q605 716 618 716Q625 716 630 712T636 703T638 696Q638 692 471 367H707Q722 359 722 347Q722 336 708 328L451 327L371 173H708Q722 163 722 153Q722 140 707 133H351Q175 -210 170 -212Q166 -215 159 -215",8801:"56 444Q56 457 70 464H707Q722 456 722 444Q722 430 706 424H72Q56 429 56 444ZM56 237T56 250T70 270H707Q722 262 722 250T707 230H70Q56 237 56 250ZM56 56Q56 71 72 76H706Q722 70 722 56Q722 44 707 36H70Q56 43 56 56",8804:"674 636Q682 636 688 630T694 615T687 601Q686 600 417 472L151 346L399 228Q687 92 691 87Q694 81 694 76Q694 58 676 56H670L382 192Q92 329 90 331Q83 336 83 348Q84 359 96 365Q104 369 382 500T665 634Q669 636 674 636ZM84 -118Q84 -108 99 -98H678Q694 -104 694 -118Q694 -130 679 -138H98Q84 -131 84 -118",8805:"83 616Q83 624 89 630T99 636Q107 636 253 568T543 431T687 361Q694 356 694 346T687 331Q685 329 395 192L107 56H101Q83 58 83 76Q83 77 83 79Q82 86 98 95Q117 105 248 167Q326 204 378 228L626 346L360 472Q291 505 200 548Q112 589 98 597T83 616ZM84 -118Q84 -108 99 -98H678Q694 -104 694 -118Q694 -130 679 -138H98Q84 -131 84 -118",8806:"674 753Q682 753 688 747T694 732T687 718Q686 717 417 589L151 463L399 345Q687 209 691 204Q694 198 694 193Q694 175 676 173H670L382 309Q92 446 90 448Q83 453 83 465Q84 476 96 482Q104 486 382 617T665 751Q669 753 674 753ZM84 39Q84 49 99 59H678Q694 53 694 39Q694 26 679 19H98Q84 26 84 39ZM83 -157Q83 -153 84 -150T86 -145T89 -141T92 -139T96 -137T99 -135H678Q694 -146 694 -155Q694 -168 679 -175H98Q84 -168 83 -157",8807:"83 733Q83 741 89 747T99 753Q107 753 253 685T543 548T687 478Q694 473 694 463T687 448Q685 446 395 309L107 173H101Q83 175 83 193Q83 194 83 196Q82 203 98 212Q117 222 248 284Q326 321 378 345L626 463L360 589Q291 622 200 665Q112 706 98 714T83 733ZM84 39Q84 49 99 59H678Q694 53 694 39Q694 26 679 19H98Q84 26 84 39ZM83 -157Q83 -153 84 -150T86 -145T89 -141T92 -139T96 -137T99 -135H678Q694 -146 694 -155Q694 -168 679 -175H98Q84 -168 83 -157",8808:"86 472Q93 477 381 614T673 752Q680 752 686 746T693 732T689 721Q686 715 418 590L151 461L418 332Q684 207 689 201Q693 195 693 190Q693 183 687 177T675 170Q668 170 380 307T86 450Q82 454 82 461Q82 467 86 472ZM82 33Q82 37 83 40T89 47T95 54H473L520 105Q569 156 571 156Q573 157 578 157Q586 157 592 151T598 136Q598 130 562 92L526 56L604 54H682Q693 43 693 35Q693 31 692 28T686 21T680 14H489L342 -139L513 -142H682Q693 -148 693 -160Q693 -167 680 -182H304L258 -230Q248 -240 237 -251T221 -268T211 -278T203 -284T197 -286Q189 -286 184 -280T178 -264Q178 -257 213 -219L249 -182H171L93 -179L86 -175Q82 -170 82 -163Q82 -155 95 -142H289L360 -64L433 14H262L93 16Q82 23 82 33",8809:"89 745Q95 752 100 752Q106 752 394 615T689 472Q693 468 693 461T689 450Q684 445 396 308T100 170Q95 170 89 176T82 190Q82 195 86 201Q91 208 358 332L624 461L358 590Q90 715 86 721Q82 725 82 731Q82 739 89 745ZM82 33Q82 37 83 40T89 47T95 54H473L520 105Q569 156 571 156Q573 157 578 157Q586 157 592 151T598 136Q598 130 562 92L526 56L604 54H682Q693 43 693 35Q693 31 692 28T686 21T680 14H489L342 -139L513 -142H682Q693 -148 693 -160Q693 -167 680 -182H304L258 -230Q248 -240 237 -251T221 -268T211 -278T203 -284T197 -286Q189 -286 184 -280T178 -264Q178 -257 213 -219L249 -182H171L93 -179L86 -175Q82 -170 82 -163Q82 -155 95 -142H289L360 -64L433 14H262L93 16Q82 23 82 33",8810:"639 -48Q639 -54 634 -60T619 -67H618Q612 -67 536 -26Q430 33 329 88Q61 235 59 239Q56 243 56 250T59 261Q62 266 336 415T615 567L619 568Q622 567 625 567Q639 562 639 548Q639 540 633 534Q632 532 374 391L117 250L374 109Q632 -32 633 -34Q639 -40 639 -48ZM944 -48Q944 -54 939 -60T924 -67H923Q917 -67 841 -26Q735 33 634 88Q366 235 364 239Q361 243 361 250T364 261Q367 266 641 415T920 567L924 568Q927 567 930 567Q944 562 944 548Q944 540 938 534Q937 532 679 391L422 250L679 109Q937 -32 938 -34Q944 -40 944 -48",8811:"55 539T55 547T60 561T74 567Q81 567 207 498Q297 449 365 412Q633 265 636 261Q639 255 639 250Q639 241 626 232Q614 224 365 88Q83 -65 79 -66Q76 -67 73 -67Q65 -67 60 -61T55 -47Q55 -39 61 -33Q62 -33 95 -15T193 39T320 109L321 110H322L323 111H324L325 112L326 113H327L329 114H330L331 115H332L333 116L334 117H335L336 118H337L338 119H339L340 120L341 121H342L343 122H344L345 123H346L347 124L348 125H349L351 126H352L353 127H354L355 128L356 129H357L358 130H359L360 131H361L362 132L363 133H364L365 134H366L367 135H368L369 136H370L371 137L372 138H373L374 139H375L376 140L378 141L576 251Q63 530 62 533Q55 539 55 547ZM360 539T360 547T365 561T379 567Q386 567 512 498Q602 449 670 412Q938 265 941 261Q944 255 944 250Q944 241 931 232Q919 224 670 88Q388 -65 384 -66Q381 -67 378 -67Q370 -67 365 -61T360 -47Q360 -39 366 -33Q367 -33 400 -15T498 39T625 109L626 110H627L628 111H629L630 112L631 113H632L634 114H635L636 115H637L638 116L639 117H640L641 118H642L643 119H644L645 120L646 121H647L648 122H649L650 123H651L652 124L653 125H654L656 126H657L658 127H659L660 128L661 129H662L663 130H664L665 131H666L667 132L668 133H669L670 134H671L672 135H673L674 136H675L676 137L677 138H678L679 139H680L681 140L683 141L881 251Q368 530 367 533Q360 539 360 547",8812:"104 730Q104 749 123 749Q130 749 138 745Q186 717 237 671L250 659L261 670Q297 703 332 726T375 750T389 744T395 730Q395 721 390 717T364 699T322 668Q290 641 283 632Q280 628 281 627T293 612Q425 454 425 250Q425 144 388 51T293 -112Q282 -125 281 -126T283 -132Q306 -162 379 -209Q395 -219 395 -230Q395 -238 389 -244T375 -250T335 -228T262 -171L250 -159L238 -170Q202 -203 167 -226T124 -250T110 -244T104 -230Q104 -219 121 -209Q199 -156 216 -132Q219 -128 218 -127T206 -112Q74 46 74 250T206 612Q217 625 218 626T216 632Q199 656 121 709Q104 719 104 730ZM249 -94Q364 61 364 250Q364 430 265 574Q253 590 249 594L242 583Q134 439 134 250Q134 114 192 -1Q212 -44 242 -83L249 -94",8814:"693 -14T693 -20T687 -33T675 -41Q667 -41 506 37L344 112Q342 112 262 -46Q184 -196 176 -205Q172 -209 168 -209T162 -208Q155 -208 151 -203T146 -190Q146 -178 171 -137Q193 -91 251 21L306 132L198 183Q142 208 118 220T88 238T82 249Q82 253 86 261Q92 267 278 357L464 443L529 572Q561 637 577 667T597 703T607 708Q615 708 622 702T629 688Q629 680 575 579L524 474Q524 473 545 482T598 508Q666 541 673 541T686 535T693 521Q693 512 679 504T589 459L493 414L360 150Q366 148 378 142T431 116T529 70Q686 -8 689 -10Q693 -14 693 -20ZM380 277L433 383Q432 385 292 319T151 250T237 209T324 170L380 277",8815:"82 514T82 520T89 533T100 541Q106 541 271 463Q434 386 435 386L515 543Q593 699 600 706Q604 708 607 708Q615 708 622 702T629 688T549 526Q509 445 491 407T473 368Q522 343 580 317Q636 291 660 278T688 261T693 250V249Q693 241 681 234T580 184Q533 161 502 146Q317 59 315 59Q312 56 246 -74Q197 -170 186 -189T168 -209Q164 -209 162 -208Q155 -208 151 -203T146 -190Q146 -187 200 -79L253 28L218 11Q182 -6 144 -23T100 -41Q95 -41 89 -35T82 -21Q82 -12 96 -4T186 41L284 88L349 217Q377 273 395 311T413 350Q413 351 253 428Q101 498 86 510Q82 514 82 520ZM624 250Q461 330 455 330Q454 331 453 329T448 321T441 308T430 287T416 259T398 223L342 114L624 250",8816:"82 -124Q82 -120 83 -117T89 -110T95 -103H220L284 50Q346 204 344 206L218 268Q153 297 123 313T87 333T82 344T86 355Q104 369 291 455Q491 552 491 553L542 673Q581 767 590 784T609 801Q616 801 622 795T629 781Q629 773 586 677Q546 581 546 577L609 606Q669 635 673 635Q680 635 686 629T693 615Q693 610 692 608T670 593T604 561L524 521L400 226L542 157Q617 123 649 107T687 85T694 72Q694 66 690 60T679 54Q664 54 526 121Q513 127 495 136T464 150T438 162T416 173T399 180T388 185L384 186Q383 186 322 41L262 -103H680Q682 -105 684 -108T688 -113T691 -118T693 -124Q693 -134 682 -141L464 -143H246L213 -219Q182 -292 178 -299Q172 -303 166 -303T153 -297T146 -283Q146 -282 174 -213T202 -143H146L93 -141Q82 -134 82 -124ZM418 370L466 495Q464 495 308 420T151 344T204 317T311 267T364 244Q364 247 418 370",8817:"97 54Q82 54 82 72Q82 79 86 84Q95 91 222 153L351 215L398 324L442 433L258 519Q95 597 87 604Q82 608 82 615T88 628T102 635Q107 635 424 484L458 468L524 630Q593 789 597 795Q601 801 609 801Q616 801 622 795T629 781L562 615L493 450L589 406Q665 371 679 362T694 344Q694 339 693 337T677 326T631 302T538 257Q504 241 465 223T406 195T386 186Q384 185 322 39L262 -103H680Q682 -105 684 -108T688 -113T691 -118T693 -124Q693 -134 682 -141L464 -143H246L213 -219Q182 -292 178 -299Q172 -303 166 -303T153 -297T146 -283Q146 -282 174 -213T202 -143H146L93 -141Q82 -134 82 -124Q82 -120 83 -117T89 -110T95 -103H220L273 26Q326 156 326 157L218 106Q109 54 97 54ZM553 379Q480 412 480 415Q479 415 460 372T423 285T406 241Q408 240 516 291T624 344L553 379",8818:"674 732Q682 732 688 726T694 711T687 697Q686 696 417 568L151 442L399 324Q687 188 691 183Q694 177 694 172Q694 154 676 152H670L382 288Q92 425 90 427Q83 432 83 444Q84 455 96 461Q104 465 382 596T665 730Q669 732 674 732ZM56 -194Q56 -107 106 -51T222 6Q260 6 296 -12T362 -56T420 -108T483 -153T554 -171Q616 -171 654 -128T694 -29Q696 6 708 6Q722 6 722 -26Q722 -102 676 -164T557 -227Q518 -227 481 -209T415 -165T358 -113T294 -69T223 -51Q163 -51 125 -93T83 -196Q81 -228 69 -228Q56 -228 56 -202V-194",8819:"90 697Q83 704 83 712T88 726T99 732Q107 732 253 664T543 527T687 457Q694 452 694 442T687 427Q685 425 395 288L107 152H101Q83 154 83 172Q83 173 83 175Q82 182 98 191Q117 201 248 263Q326 300 378 324L626 442L360 568Q91 696 90 697ZM56 -194Q56 -107 106 -51T222 6Q260 6 296 -12T362 -56T420 -108T483 -153T554 -171Q616 -171 654 -128T694 -29Q696 6 708 6Q722 6 722 -26Q722 -102 676 -164T557 -227Q518 -227 481 -209T415 -165T358 -113T294 -69T223 -51Q163 -51 125 -93T83 -196Q81 -228 69 -228Q56 -228 56 -202V-194",8822:"734 181Q734 173 728 167T714 161Q711 161 386 280T54 404Q44 408 44 421Q44 432 52 437Q66 443 388 562T714 681Q721 681 727 675T734 661Q734 651 722 645Q711 639 462 546Q441 539 420 531L122 421L420 311L723 198Q734 192 734 181ZM44 247Q44 255 50 261T63 267Q66 267 391 148T723 24Q734 18 734 7T723 -10Q716 -14 391 -133T63 -253Q56 -253 50 -247T44 -233Q44 -223 55 -217Q67 -210 317 -118Q337 -110 357 -103L655 7L357 117L54 230Q44 236 44 247",8823:"83 661Q83 668 88 674T104 681Q111 679 396 560Q686 437 687 436Q694 431 694 421T687 406Q686 405 543 344T253 222T101 161Q83 163 83 180Q83 194 95 199Q96 199 130 213T232 257T361 311L621 421L357 532Q307 553 233 584Q121 631 102 640T83 661ZM673 267Q694 267 694 248Q694 237 687 232Q684 229 420 118L156 7L416 -103L683 -215Q694 -222 694 -233Q694 -251 676 -253Q670 -253 524 -192T235 -70T90 -8Q83 -1 83 7Q83 19 94 24Q97 25 378 144T667 266Q669 267 673 267",8826:"84 249Q84 262 91 266T117 270Q120 270 126 270T137 269Q388 273 512 333T653 512Q657 539 676 539Q685 538 689 532T694 520V515Q689 469 672 431T626 366T569 320T500 286T435 265T373 249Q379 248 404 242T440 233T477 221T533 199Q681 124 694 -17Q694 -41 674 -41Q658 -41 653 -17Q646 41 613 84T533 154T418 197T284 220T137 229H114Q104 229 98 230T88 235T84 249",8827:"84 517Q84 539 102 539Q115 539 119 529T125 503T137 459T171 404Q277 275 640 269H661Q694 269 694 249T661 229H640Q526 227 439 214T283 173T173 98T124 -17Q118 -41 103 -41Q83 -41 83 -17Q88 29 105 67T151 132T208 178T277 212T342 233T404 249Q401 250 380 254T345 263T302 276T245 299Q125 358 92 468Q84 502 84 517",8828:"112 270Q83 270 83 290Q83 301 94 307Q98 310 118 310Q516 310 620 464Q635 486 642 510T651 548T657 571T675 580Q693 577 693 559V552Q684 472 628 410T465 314Q436 303 372 290Q373 290 388 287T425 278T465 266Q674 199 693 28L694 17Q688 5 683 3Q677 0 673 0Q656 0 653 24Q623 270 118 270H112ZM110 116Q83 116 83 136T110 156H113Q134 156 160 155T231 146T318 128T407 95T489 44T550 -30T583 -131Q583 -153 563 -153Q556 -153 553 -152T547 -145T542 -127Q531 -54 478 0Q425 53 333 83T123 116H110",8829:"668 310Q694 310 694 290Q694 285 691 279Q684 271 664 270Q550 268 464 257T301 220T179 146T124 27Q119 0 103 0T83 16Q83 21 83 31T92 68T113 121T157 177T229 231Q295 268 405 290Q404 290 389 293T352 302T312 314Q138 371 96 500Q83 541 83 562Q83 568 89 574T103 580Q115 580 120 570T126 542T138 497T173 442Q289 310 659 310H668ZM194 -131Q201 -60 241 -6T343 82T477 133T628 155Q632 155 644 155T661 156Q685 155 690 147Q694 143 694 136Q694 132 693 129T689 124T685 120T681 117L656 116Q596 114 543 106T436 79T342 35T272 -33T235 -127Q231 -154 212 -154Q203 -153 199 -147T194 -136V-131",8830:"84 442Q84 455 91 459T117 463Q120 463 126 463T137 462Q388 466 512 526T653 705Q657 732 676 732Q685 731 689 725T694 714V708Q689 662 672 624T626 559T569 513T500 479T435 458T373 442Q379 441 404 435T440 426T477 414T533 392Q592 362 630 319T681 241T694 174Q694 153 674 153Q662 153 657 163T652 188T640 231T606 287Q500 416 137 422H114Q104 422 98 423T88 428T84 442ZM56 -194Q56 -107 106 -51T222 6Q260 6 296 -12T362 -56T420 -108T483 -153T554 -171Q616 -171 654 -128T694 -29Q696 6 708 6Q722 6 722 -26Q722 -102 676 -164T557 -227Q518 -227 481 -209T415 -165T358 -113T294 -69T223 -51Q163 -51 125 -93T83 -196Q81 -228 69 -228Q56 -228 56 -202V-194",8831:"84 710Q84 732 102 732Q115 732 119 722T125 696T137 652T171 597Q277 468 640 462H661Q694 462 694 442T661 422H640Q578 421 526 417T415 403T309 376T222 333T156 268T124 179Q122 162 118 158T103 153Q100 153 98 153T95 154T93 155T90 158T85 163Q83 167 83 176Q88 222 105 260T151 325T208 371T277 405T342 426T404 442Q401 443 380 447T345 456T302 469T245 492Q125 551 92 661Q84 695 84 710ZM56 -194Q56 -107 106 -51T222 6Q260 6 296 -12T362 -56T420 -108T483 -153T554 -171Q616 -171 654 -128T694 -29Q696 6 708 6Q722 6 722 -26Q722 -102 676 -164T557 -227Q518 -227 481 -209T415 -165T358 -113T294 -69T223 -51Q163 -51 125 -93T83 -196Q81 -228 69 -228Q56 -228 56 -202V-194",8832:"386 292Q388 292 439 393T543 598T598 703Q599 703 603 704T609 705Q616 705 622 699T629 685T533 494Q440 308 440 305Q451 310 462 312Q547 342 592 388T651 505Q654 525 658 532T673 539Q680 539 686 533T693 519Q693 495 678 450Q638 341 500 283Q433 259 418 259Q416 259 411 251T406 241T415 239Q482 224 544 190Q674 121 691 -10Q693 -28 691 -32Q684 -43 672 -43Q664 -43 658 -37Q656 -33 650 -6T634 47T589 109T500 168Q473 179 436 190T388 201H386L284 -1Q261 -45 232 -101T191 -181T178 -206Q176 -206 172 -207T166 -208Q160 -208 153 -202T146 -188Q146 -185 246 12Q344 206 344 210Q344 213 305 217T213 225T124 228H95Q82 241 82 248Q82 253 95 268H124Q172 268 236 273T343 283T386 292",8833:"103 -43Q96 -43 89 -39T82 -26L84 -10Q105 141 275 212Q342 236 355 236Q360 236 364 245L369 256H360Q284 280 275 283Q115 351 86 490Q82 507 82 517Q82 526 88 532T103 538Q110 538 115 534Q119 531 122 517T128 486T143 444T174 397T231 351T320 310Q371 292 389 292L491 496Q595 701 598 703Q599 703 603 704T609 705Q616 705 622 699T629 685Q629 684 531 485Q431 296 431 288Q431 278 520 273T651 268H680Q693 253 693 248Q693 241 680 228H651Q591 228 491 218T386 201L284 -1Q261 -45 232 -101T191 -181T178 -206Q176 -206 172 -207T166 -208Q160 -208 153 -202T146 -188Q146 -182 302 125L335 190L324 185Q313 185 289 172Q241 153 208 128T159 78T135 31T124 -11T118 -37Q112 -43 103 -43",8834:"84 250Q84 372 166 450T360 539Q361 539 370 539T395 539T430 540T475 540T524 540H679Q694 532 694 520Q694 511 681 501L522 500H470H441Q366 500 338 496T266 472Q244 461 224 446T179 404T139 337T124 250V245Q124 157 185 89Q244 25 328 7Q348 2 366 2T522 0H681Q694 -10 694 -20Q694 -32 679 -40H526Q510 -40 480 -40T434 -41Q350 -41 289 -25T172 45Q84 127 84 250",8835:"83 520Q83 532 98 540H251Q267 540 297 540T343 541Q427 541 488 525T605 455Q693 374 693 250Q693 165 650 99T545 0T415 -39Q407 -40 251 -40H98Q83 -32 83 -20Q83 -10 96 0H255H308H337Q412 0 439 4T512 28Q533 39 553 54T599 96T639 163T654 250Q654 341 592 411Q557 449 512 472Q468 491 439 495T335 500H306H255L96 501Q83 511 83 520",8838:"84 346Q84 468 166 546T360 635Q361 635 370 635T395 635T430 636T475 636T524 636H679Q694 628 694 616Q694 607 681 597L522 596H470H441Q366 596 338 592T266 568Q244 557 224 542T179 500T139 433T124 346V341Q124 253 185 185Q244 121 328 103Q348 98 366 98T522 96H681Q694 86 694 76Q694 64 679 56H526Q510 56 480 56T434 55Q350 55 289 71T172 141Q84 223 84 346ZM104 -131T104 -118T118 -98H679Q694 -106 694 -118T679 -138H118Q104 -131 104 -118",8839:"83 616Q83 628 98 636H251Q267 636 297 636T343 637Q427 637 488 621T605 551Q693 470 693 346Q693 261 650 195T545 96T415 57Q407 56 251 56H98Q83 64 83 76Q83 86 96 96H255H308H337Q412 96 439 100T512 124Q533 135 553 150T599 192T639 259T654 346Q654 437 592 507Q557 545 512 568Q468 587 439 591T335 596H306H255L96 597Q83 607 83 616ZM84 -131T84 -118T98 -98H659Q674 -106 674 -118T659 -138H98Q84 -131 84 -118",8840:"146 -283Q146 -282 174 -213T202 -143H115Q102 -127 102 -123T115 -103H220L291 68L278 73Q203 101 153 157T86 288Q83 309 83 344Q83 380 86 399Q107 480 160 539Q222 601 298 621Q328 630 345 631T435 635L526 637L560 715Q587 778 593 789T609 801Q616 801 622 795T629 781Q629 780 625 771T614 742T600 706L571 637Q571 635 626 635H680Q693 620 693 613T689 601L682 597L618 595H553L449 346Q425 288 399 223T359 127T346 95H356Q365 95 381 95T417 94T463 93T515 93H682Q693 82 693 74T680 53H511Q420 55 335 55L329 57L262 -103H680Q682 -105 684 -108T688 -113T691 -118T693 -124Q693 -134 682 -141L464 -143H246L213 -219Q182 -292 178 -299Q172 -303 166 -303T153 -297T146 -283ZM509 590Q509 595 438 595Q354 595 318 586Q246 567 195 516T126 395Q123 378 123 344T126 293Q141 229 184 181T291 110L306 104L406 346L509 590",8841:"82 606T82 613T95 635H251H348Q408 635 435 632T502 615L515 608L520 617Q520 619 558 708Q584 774 591 787T609 801Q616 801 622 795T629 781Q629 775 562 615L551 590L569 577Q646 527 678 437Q691 398 691 344T678 250Q653 182 597 132T469 64Q427 53 366 53H326L295 -25L262 -103H660Q673 -118 673 -124Q673 -129 669 -136L662 -141L453 -143H246L213 -219Q182 -292 178 -299Q172 -303 166 -303T153 -297T146 -283Q146 -282 174 -213T202 -143H95Q82 -128 82 -123T95 -103H220L251 -25L284 53H189L93 55L86 59Q82 64 82 71T95 93H302L400 333Q498 569 498 573L444 590Q431 593 260 595L93 597L86 601Q82 606 82 613ZM652 344V354Q652 451 575 521Q571 526 557 538T537 551Q534 551 533 548Q533 543 438 319L344 95L371 93H386Q487 93 557 150T649 293Q652 309 652 344",8842:"693 72Q693 68 692 66T686 59T680 52H524Q398 52 367 53T309 63Q236 82 180 132T98 250Q84 288 84 343Q84 397 98 437Q126 515 193 568T346 632Q347 632 373 633T440 634T520 635H680Q693 620 693 615Q693 608 680 595H526Q364 595 353 592Q279 582 221 539T138 430Q124 392 124 343Q124 296 138 257Q163 192 221 149T353 95Q364 92 526 92H680Q693 79 693 72ZM102 -132T102 -125T115 -103H382L420 -68Q429 -60 438 -52T452 -39T463 -28T472 -20T478 -14T483 -10T487 -7T490 -6T493 -5T496 -5Q502 -5 508 -12T515 -28Q515 -34 513 -37Q512 -38 507 -42T492 -55T475 -70L440 -101L562 -103H682Q693 -114 693 -122T680 -143H395L355 -179Q289 -241 280 -241Q273 -241 267 -235T260 -221T265 -208T300 -174L335 -143H224L113 -141L106 -137Q102 -132 102 -125",8843:"82 615Q82 620 95 635H251Q378 635 409 634T469 623Q540 605 596 555T678 437Q691 397 691 343T678 250Q649 172 581 119T426 55Q415 52 251 52H95Q93 55 89 59T84 65T82 72Q82 79 95 92H249Q411 92 422 95Q496 105 554 148T638 257Q651 296 651 343Q651 391 638 430Q613 495 555 538T422 592Q411 595 249 595H95Q82 608 82 615ZM82 -132T82 -125T95 -103H380L420 -57Q452 -21 460 -14T474 -6Q482 -6 488 -12T495 -25T451 -81L433 -101L549 -103H662Q673 -114 673 -122T660 -143H395L355 -190Q311 -239 309 -239Q305 -241 302 -241Q294 -241 287 -235T280 -221T324 -163L342 -143H218L93 -141L86 -137Q82 -132 82 -125",8846:"591 598H592Q604 598 611 583V376Q611 345 611 296Q610 162 606 148Q605 146 605 145Q586 68 507 23T333 -22Q268 -22 209 -1T106 66T56 173Q55 180 55 384L56 585Q66 598 75 598Q85 598 95 585V378L96 172L98 162Q112 95 181 57T332 18Q415 18 487 58T570 175Q571 180 571 383V583Q579 598 591 598ZM313 406Q313 417 313 435T312 459Q312 483 316 493T333 503T349 494T353 461V406V325H515Q516 325 519 323T527 316T531 305T527 294T520 287T515 285H353V204V152Q353 127 350 117T333 107T316 117T312 152Q312 158 312 175T313 204V285H151Q150 285 147 287T139 294T135 305T139 316T146 323T151 325H313V406",8847:"83 523Q87 535 99 539H679Q694 531 694 519Q694 506 679 499H123V-1H678Q694 -7 694 -21Q694 -34 679 -41H98Q93 -38 84 -28L83 247V523",8848:"64 506T64 519T78 539H699Q706 536 714 526V-28Q706 -38 699 -41H78Q64 -34 64 -21Q64 -6 80 -1H674V499H78Q64 506 64 519",8849:"94 620Q98 632 110 636H699Q714 628 714 616T699 596H134V96H698Q714 90 714 76Q714 64 699 56H109Q104 59 95 69L94 344V620ZM84 -118Q84 -103 100 -98H698Q714 -104 714 -118Q714 -130 699 -138H98Q84 -131 84 -118",8850:"64 603T64 616T78 636H668Q675 633 683 623V69Q675 59 668 56H78Q64 63 64 76Q64 91 80 96H643V596H78Q64 603 64 616ZM64 -118Q64 -108 79 -98H678Q694 -104 694 -118Q694 -130 679 -138H78Q64 -131 64 -118",8851:"83 0Q79 0 76 1T71 3T67 6T65 9T63 13T61 16V301L62 585Q70 595 76 598H592Q602 590 605 583V15Q598 2 587 0Q583 0 580 1T575 3T571 6T569 9T567 13T565 16V558H101V15Q94 2 83 0",8852:"77 0Q65 4 61 16V301L62 585Q72 598 81 598Q94 598 101 583V40H565V583Q573 598 585 598Q598 598 605 583V15Q602 10 592 1L335 0H77",8853:"56 250Q56 394 156 488T384 583Q530 583 626 485T722 250Q722 110 625 14T390 -83Q249 -83 153 14T56 250ZM364 542Q308 539 251 509T148 418T96 278V270H369V542H364ZM681 278Q675 338 650 386T592 462T522 509T458 535T412 542H409V270H681V278ZM96 222Q104 150 139 95T219 12T302 -29T366 -42H369V230H96V222ZM681 222V230H409V-42H412Q429 -42 456 -36T521 -10T590 37T649 113T681 222",8854:"56 250Q56 394 156 488T384 583Q530 583 626 485T722 250Q722 110 625 14T390 -83Q249 -83 153 14T56 250ZM681 278Q669 385 591 463T381 542Q283 542 196 471T96 278V270H681V278ZM275 -42T388 -42T585 32T681 222V230H96V222Q108 107 191 33",8855:"56 250Q56 394 156 488T384 583Q530 583 626 485T722 250Q722 110 625 14T390 -83Q249 -83 153 14T56 250ZM582 471Q531 510 496 523Q446 542 381 542Q324 542 272 519T196 471L389 278L485 375L582 471ZM167 442Q95 362 95 250Q95 137 167 58L359 250L167 442ZM610 58Q682 138 682 250Q682 363 610 442L418 250L610 58ZM196 29Q209 16 230 2T295 -27T388 -42Q409 -42 429 -40T465 -33T496 -23T522 -11T544 1T561 13T574 22T582 29L388 222L196 29",8856:"56 250Q56 394 156 488T384 583Q530 583 626 485T722 250Q722 110 625 14T390 -83Q249 -83 153 14T56 250ZM582 471Q581 472 571 480T556 491T539 502T517 514T491 525T460 534T424 539T381 542Q272 542 184 460T95 251Q95 198 113 150T149 80L167 58L582 471ZM388 -42Q513 -42 597 44T682 250Q682 363 610 442L196 29Q209 16 229 2T295 -27T388 -42",8857:"56 250Q56 394 156 488T384 583Q530 583 626 485T722 250Q722 110 625 14T390 -83Q249 -83 153 14T56 250ZM682 250Q682 322 649 387T546 497T381 542Q272 542 184 459T95 250Q95 132 178 45T389 -42Q515 -42 598 45T682 250ZM311 250Q311 285 332 304T375 328Q376 328 382 328T392 329Q424 326 445 305T466 250Q466 217 445 195T389 172Q354 172 333 195T311 250",8858:"57 250Q57 327 87 392T166 497T270 560T382 582H394Q512 582 610 500Q721 401 721 250Q721 112 626 15T389 -82Q251 -82 154 13T57 250ZM682 129T682 250T596 457T390 543Q269 543 183 457T96 250Q96 132 180 45T389 -43Q511 -43 596 43ZM250 250Q250 316 295 352T384 388Q451 388 489 347T528 250Q528 192 487 152T389 112Q331 112 291 152T250 250ZM488 250Q488 290 460 319T389 349Q348 349 319 320T290 250Q290 208 320 180T389 151Q431 151 459 181T488 250",8859:"57 250Q57 327 87 392T166 497T270 560T382 582H394Q512 582 610 500Q721 401 721 250Q721 112 626 15T389 -82Q251 -82 154 13T57 250ZM682 129T682 250T596 457T390 543Q269 543 183 457T96 250Q96 132 180 45T389 -43Q511 -43 596 43ZM204 339Q204 357 215 366T238 375Q247 375 283 348Q300 336 311 328L368 286Q369 286 366 323T359 398T355 437Q357 456 379 465Q380 465 384 465T391 466Q403 465 412 457T423 437Q423 436 420 398T413 323T410 286L467 328Q476 334 486 341T501 353T513 361T523 368T529 372T535 374T541 375Q554 375 564 365T575 339Q575 325 566 318T519 292Q504 285 496 281L430 250L496 219Q552 192 559 188T572 175Q575 168 575 161Q575 148 566 137T541 126H538Q530 126 499 149Q480 163 467 172L410 214Q409 214 412 177T419 102T423 63Q423 59 421 54T411 43T389 36T368 42T357 54T355 63Q355 64 358 102T365 177T368 214L311 172Q302 165 293 159T279 148T268 140T260 134T254 131T250 128T246 127T242 126T238 126Q223 126 214 135T204 161T213 183T282 219L348 250L282 281Q226 308 219 312T206 325Q204 330 204 339",8861:"57 250Q57 327 87 392T166 497T270 560T382 582H394Q512 582 610 500Q721 401 721 250Q721 112 626 15T389 -82Q251 -82 154 13T57 250ZM682 129T682 250T596 457T390 543Q269 543 183 457T96 250Q96 132 180 45T389 -43Q511 -43 596 43ZM223 250Q223 263 233 267T280 271Q289 271 325 271T389 270H490Q535 270 545 267T555 250Q555 241 549 235Q544 231 527 231T389 230Q239 230 235 232Q223 236 223 250",8862:"71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71ZM369 365V649H95V365H369ZM682 365V649H409V365H682ZM369 40V325H95V40H369ZM682 40V325H409V40H682",8863:"71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71ZM682 365V649H95V365H682ZM682 40V325H95V40H682",8864:"71 0Q59 4 55 16V346L56 676Q64 686 70 689H707Q714 686 722 676V13Q714 3 707 0H71ZM123 649Q147 625 214 555T335 430T389 374L654 649H123ZM95 70Q99 74 229 209T360 345L95 619V70ZM682 70V619L418 346Q417 344 549 207L682 70ZM654 41L400 304L388 315L123 41L256 40H522L654 41",8865:"71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71ZM682 40V649H95V40H682ZM330 345Q330 371 347 388T390 405Q412 405 430 389T448 345Q448 317 430 301T389 285T348 301T330 345",8866:"55 678Q55 679 56 681T58 684T61 688T65 691T70 693T77 694Q88 692 95 679V367H540Q555 359 555 347Q555 334 540 327H95V15Q88 2 77 0Q73 0 70 1T65 3T61 6T59 9T57 13T55 16V678",8867:"515 678Q515 679 516 681T518 684T521 688T525 691T530 693T537 694Q548 692 555 679V15Q548 2 537 0Q533 0 530 1T525 3T521 6T519 9T517 13T515 16V327H71Q70 327 67 329T59 336T55 347T59 358T66 365T71 367H515V678",8868:"55 642T55 648T59 659T66 666T71 668H708Q723 660 723 648T708 628H409V15Q402 2 391 0Q387 0 384 1T379 3T375 6T373 9T371 13T369 16V628H71Q70 628 67 630T59 637",8869:"369 652Q369 653 370 655T372 658T375 662T379 665T384 667T391 668Q402 666 409 653V40H708Q723 32 723 20T708 0H71Q70 0 67 2T59 9T55 20T59 31T66 38T71 40H369V652",8872:"139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V367H796Q811 359 811 347Q811 336 797 328L479 327H161L159 328V172L161 173H797Q798 172 800 171T803 169T805 167T808 164T809 162T810 158T811 153Q811 140 796 133H159V-235Q151 -249 141 -249H139",8873:"55 678Q55 679 56 681T58 684T61 688T65 691T70 693T77 694Q88 692 95 679V15Q88 2 77 0Q73 0 70 1T65 3T61 6T59 9T57 13T55 16V678ZM249 678Q249 679 250 681T252 684T255 688T259 691T264 693T271 694Q282 692 289 679V367H651Q666 359 666 347Q666 334 651 327H289V15Q282 2 271 0Q267 0 264 1T259 3T255 6T253 9T251 13T249 16V678",8874:"55 678Q55 679 56 681T58 684T61 688T65 691T70 693T77 694Q88 692 95 679V15Q88 2 77 0Q73 0 70 1T65 3T61 6T59 9T57 13T55 16V678ZM237 678Q237 679 238 681T240 684T243 688T247 691T252 693T259 694Q270 692 277 679V15Q270 2 259 0Q255 0 252 1T247 3T243 6T241 9T239 13T237 16V678ZM419 678Q419 679 420 681T422 684T425 688T429 691T434 693T441 694Q452 692 459 679V367H818Q833 359 833 347Q833 334 818 327H459V15Q452 2 441 0Q437 0 434 1T429 3T425 6T423 9T421 13T419 16V678",8876:"56 681Q70 695 76 695T96 681V368H243L381 530Q521 692 525 692Q537 700 547 688Q554 682 554 674Q554 671 553 669T548 661T539 649T522 631T499 604T465 565T421 512Q296 373 296 368H416H476Q525 368 539 365T554 348Q554 334 543 328H261L96 141V12Q81 -1 75 -1Q65 -1 58 10L56 50V92L18 48Q7 37 -1 28T-13 14T-19 6T-23 1T-27 0T-33 -1Q-42 -1 -48 4T-55 19Q-55 24 -47 34T12 103L56 155V681ZM205 326Q205 328 152 328H96V263Q96 203 98 203Q99 203 123 231T174 290T205 326",8877:"56 681Q70 695 76 695T96 681V466H327L425 579Q522 692 527 692Q529 693 534 693Q542 693 547 688T553 674Q553 668 549 663Q549 662 538 650T504 611T463 563L381 468L461 466H543Q554 453 554 446T541 426H345L209 272L376 270H543Q554 257 554 251T541 230H174L96 141V12Q81 -1 75 -1Q65 -1 58 10L56 50V92L18 48Q7 37 -1 28T-13 14T-19 6T-23 1T-27 0T-33 -1Q-42 -1 -48 4T-55 19Q-55 24 -47 34T12 103L56 155V681ZM267 399L292 426H96V270H158L201 321Q256 382 267 399ZM118 228L119 229Q119 230 109 230H96V201L107 212Q118 227 118 228",8878:"56 681Q70 695 77 695T96 683V428L98 175L252 323V681Q264 695 272 695Q278 695 292 681V526Q292 368 296 368Q298 368 447 510Q638 695 642 695H645Q651 695 658 688T665 673Q665 666 661 661Q659 660 639 641T578 582T505 512L356 370L505 368H654Q665 357 665 349Q665 343 652 328H314L303 317L292 308V12Q289 10 285 6T279 1T272 -1Q265 -1 252 12V139Q252 266 249 266L96 119V12Q80 -1 76 -1T70 0T63 6T56 12V79L29 55Q-26 -1 -35 -1Q-42 -1 -48 5T-55 19Q-55 25 -51 30T-15 66Q5 86 18 99L56 135V681",8879:"56 681Q70 695 77 695T96 683V428L98 175L252 323V681Q264 695 272 695Q278 695 292 681V466H401L503 563L621 679Q637 695 645 695Q652 695 658 688T665 673Q665 670 663 666Q663 665 651 652T611 612T561 563L458 468L556 466H654Q665 455 665 447T652 426H416L294 308L292 288V270H652Q665 255 665 250T652 230H292V12Q289 10 285 6T279 1T272 -1Q265 -1 252 12V139Q252 266 249 266L96 119V12Q80 -1 76 -1T70 0T63 6T56 12V79L29 55Q-26 -1 -35 -1Q-42 -1 -48 5T-55 19Q-55 25 -51 30T-15 66Q5 86 18 99L56 135V681ZM358 426H292V361L325 392L358 426",8882:"694 -26Q686 -40 676 -41H670L382 95Q92 232 90 234Q83 239 83 249Q83 262 96 267Q101 270 379 401T665 537Q671 539 674 539Q686 539 694 524V-26ZM654 11T654 249T653 487T402 369T151 249L275 190Q399 131 524 72T652 11Q654 11 654 249",8883:"83 523Q83 524 85 527T92 535T103 539Q107 539 389 406T680 268Q694 260 694 249Q694 239 687 234Q685 232 395 95L107 -41H101Q90 -40 83 -26V523ZM376 368Q323 393 254 425T155 472L125 487Q123 487 123 249T125 11Q127 12 252 71T502 190L626 249L376 368",8884:"694 71Q686 58 676 56H670L382 192Q92 329 90 331Q83 336 83 346Q83 359 96 364Q101 367 379 498T665 634Q671 636 674 636Q686 636 694 621V71ZM654 108T654 346T653 584T402 466T151 346L275 287Q399 228 524 169T652 108Q654 108 654 346ZM83 -120Q83 -116 84 -113T86 -108T89 -104T92 -102T96 -100T99 -98H678Q679 -98 681 -99T684 -101T688 -104T691 -108T693 -113T694 -120Q692 -130 679 -138H98Q84 -130 83 -120",8885:"83 620Q83 621 85 624T92 632T103 636Q107 636 389 503T680 365Q694 357 694 346Q694 336 687 331Q685 329 395 192L107 56H101Q90 58 83 71V620ZM376 465Q323 490 254 522T155 570L125 584Q123 584 123 346T125 108Q127 109 252 168T502 287L626 346L376 465ZM83 -120Q83 -116 84 -113T86 -108T89 -104T92 -102T96 -100T99 -98H678Q679 -98 681 -99T684 -101T688 -104T691 -108T693 -113T694 -120Q692 -130 679 -138H98Q84 -130 83 -120",8888:"1055 250Q1055 190 1012 141T896 92Q858 92 828 106T781 140T755 180T741 214L738 228V230H405Q71 230 68 232Q55 238 55 250T68 268Q71 270 405 270H738V272L740 280Q742 287 745 297T754 321T771 348T796 374T832 396T881 408H891Q969 408 1012 360T1055 250ZM896 132Q948 132 981 166T1014 250Q1014 301 985 330T920 367Q914 368 891 368Q853 368 816 338T778 250Q778 198 812 165T896 132",8890:"318 -182Q302 -212 280 -212H278H275Q249 -212 239 -182L238 84V351H162L87 352Q57 362 57 391T84 429Q89 431 280 431H470L474 429Q477 427 479 426T484 423T490 417T495 410T499 402T500 391Q500 365 470 352L394 351H318V-182",8891:"56 697Q56 706 62 711T75 716Q86 716 90 709Q91 708 104 680T147 592T199 483L305 261L411 483Q443 548 481 629Q512 694 518 705T535 716Q543 716 549 710T555 700Q555 693 501 577T388 340T325 210Q316 194 305 194Q292 194 285 210Q282 219 224 339T111 574T56 697ZM55 14T55 20T59 31T66 38T71 40H540Q555 32 555 20T540 0H71Q70 0 67 2T59 9",8892:"55 698Q56 708 70 716H540Q554 708 555 698Q555 694 554 691T552 686T549 682T546 680T542 678T539 676H71Q70 676 68 677T65 679T61 682T58 686T56 691T55 698ZM555 18Q554 12 549 6T536 0H535Q525 0 515 17T459 132Q430 194 410 235L305 455L199 233Q176 185 147 125T105 36T90 7Q85 0 75 0Q63 0 58 11Q55 15 55 21Q58 31 170 266T285 507Q295 522 305 522T320 515Q322 513 439 268L555 24V18",8896:"119 -249T97 -249T65 -235T55 -207Q55 -201 56 -198Q58 -190 218 268T380 729Q392 750 416 750Q438 750 451 732Q453 728 534 498T695 36L775 -194Q777 -204 777 -208Q777 -222 767 -235T735 -249Q713 -249 700 -231Q696 -225 557 177L416 579L276 177Q136 -226 132 -231Q119 -249 97 -249",8897:"55 708Q55 729 68 739T96 750Q119 750 132 731Q136 726 276 323L416 -79L557 323Q696 725 700 731Q713 749 735 749Q756 749 766 736T777 708Q777 700 696 466T533 1T451 -232Q436 -249 416 -249Q402 -249 391 -241Q384 -236 380 -226Q368 -198 219 230Q55 697 55 708",8898:"139 -217Q127 -241 114 -246Q106 -249 97 -249Q67 -249 57 -220Q55 -214 55 102Q55 152 55 221T54 312Q54 422 60 464T91 554Q120 612 165 654T257 714T337 741T392 749Q393 750 402 750Q414 750 422 749Q557 749 660 659T776 430Q777 422 777 102Q777 -214 775 -220Q765 -249 735 -249Q716 -249 708 -241T694 -217L692 428L690 441Q674 540 597 603T416 666H409Q388 666 364 662T294 638T212 581Q156 523 142 441L140 428L139 105V-217",8899:"96 750Q103 750 109 748T120 744T127 737T133 730T137 723T139 718V395L140 73L142 60Q159 -43 237 -104T416 -166Q521 -166 597 -103T690 60L692 73L694 718Q708 749 735 749Q765 749 775 720Q777 714 777 398Q777 78 776 71Q766 -51 680 -140Q571 -249 416 -249H411Q261 -249 152 -140Q66 -51 56 71Q55 78 55 398Q55 714 57 720Q60 734 70 740Q80 750 96 750",8900:"242 486Q245 488 250 488Q256 488 258 486Q262 484 373 373T486 258T488 250T486 242T373 127T258 14Q256 12 250 12Q245 12 242 14Q237 16 127 126T14 242Q12 245 12 250T14 258Q16 263 126 373T242 486ZM439 250L250 439L61 250L250 61L439 250",8901:"78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250",8902:"210 282Q210 284 225 381T241 480Q241 484 245 484Q249 486 251 486Q258 486 260 477T272 406Q275 390 276 380Q290 286 290 282L388 299Q484 314 487 314H488Q497 314 497 302Q497 297 434 266Q416 257 404 251L315 206L361 118Q372 98 383 75T401 40L407 28Q407 16 395 16Q394 16 392 16L390 17L250 159L110 17L108 16Q106 16 105 16Q93 16 93 28L99 40Q105 52 116 75T139 118L185 206L96 251Q6 296 4 300Q3 301 3 302Q3 314 12 314H13Q16 314 112 299L210 282",8903:"366 543Q374 545 382 545Q405 545 419 538Q429 534 443 521T462 496Q466 478 466 467Q466 438 444 412Q422 390 388 390Q352 390 331 412Q311 434 311 467Q311 499 331 518Q345 533 366 543ZM146 472Q146 479 153 485T166 492Q171 492 187 476T279 385L386 278L495 385Q600 492 608 492Q615 492 621 486T628 472Q628 467 614 452T531 367L435 270H706Q720 256 720 250Q720 241 706 230H435L531 132Q600 63 614 48T628 27Q628 20 622 14T608 7Q600 7 495 114L386 221L279 114Q204 39 188 23T166 7Q159 7 153 13T146 27Q146 32 160 47T244 132L339 230H68Q55 243 55 250Q55 255 68 270H339L244 367Q175 436 161 451T146 472ZM466 34Q466 4 447 -20T388 -44Q353 -44 331 -22Q311 1 311 34Q311 66 331 85Q347 101 366 110Q374 112 382 112Q405 112 419 105Q429 100 443 87T462 63Q466 45 466 34",8904:"833 50T833 250T832 450T659 351T487 250T658 150T832 50Q833 50 833 250ZM873 10Q866 -5 854 -5Q851 -5 845 -3L449 226L260 115Q51 -5 43 -5Q39 -5 35 -1T28 7L26 11V489Q33 505 43 505Q51 505 260 385L449 274L845 503Q851 505 853 505Q866 505 873 490V10ZM412 250L67 450Q66 450 66 250T67 50Q69 51 240 150T412 250",8905:"146 479Q159 492 166 492Q171 492 189 475T279 386L386 279L495 386Q598 492 608 492Q615 492 621 486T628 472Q628 464 522 357L415 250L522 144Q628 37 628 28Q628 21 622 15T608 8Q599 8 495 115L386 221L279 115Q204 40 188 24T166 8Q162 8 160 9T153 15T146 21V479ZM186 77L359 250L186 424V77",8906:"146 472Q146 479 152 485T166 492Q171 492 189 475T279 386L386 279L495 386Q598 492 608 492Q615 492 628 479V21Q615 8 608 8Q599 8 495 115L386 221L279 115Q204 40 188 24T166 8Q159 8 153 14T146 28Q146 37 253 144L359 250L253 357Q146 464 146 472ZM588 77V424L499 337L415 250L588 77",8907:"55 674Q55 682 62 688T76 694H77Q83 694 100 677T208 561Q320 440 410 342Q462 286 541 201Q677 55 699 30T722 -2Q722 -9 716 -15T701 -22T688 -17Q687 -15 542 141T394 301L388 306L240 146Q119 15 101 -3T75 -22T61 -16T55 -2Q55 4 67 19T158 117Q190 151 209 172L361 336L209 500Q62 657 57 667Q55 671 55 674",8908:"84 -22T76 -22T62 -16T55 -2Q55 4 78 30T249 215Q321 293 367 342Q672 672 683 682Q695 694 702 694Q710 694 716 688T722 674Q722 668 710 653T619 555Q587 521 568 500L416 336L568 172Q715 15 720 5Q722 1 722 -2Q722 -9 716 -15T702 -22H700Q693 -22 671 1T537 146L389 306Q387 304 340 253T237 143T135 33L89 -17Q84 -22 76 -22",8909:"56 433Q56 464 71 464Q74 464 77 461Q82 454 82 438T91 397T123 347Q166 307 222 307Q264 307 308 331T386 385T465 438T556 463Q631 463 676 408T722 283Q722 250 708 250Q704 250 699 257Q695 265 693 286T682 330Q670 350 655 367Q612 407 556 407Q514 407 470 383T393 329T314 276T222 251Q148 251 102 306T56 433ZM57 56Q57 71 73 76H706Q722 70 722 56Q722 44 707 36H71Q57 43 57 56",8910:"83 558Q83 566 89 572T104 578Q108 578 116 577T146 570T190 555T239 526T286 480Q308 453 325 420T351 358T367 304T376 265T380 251T381 253Q381 262 395 312Q428 434 492 499T642 576Q654 578 655 578Q664 578 670 572T676 558Q676 543 657 540T599 524T525 476Q406 362 400 29V8Q400 -21 380 -21Q369 -21 362 -11Q360 -7 360 12Q360 115 348 200T308 360T231 480T111 537Q83 540 83 558",8911:"104 -22Q95 -22 89 -16T83 -2Q83 11 98 16T135 23T192 46T256 103Q360 233 360 549Q360 554 360 557T361 563T362 567T364 569T367 572T371 576Q377 578 380 578Q401 578 401 547Q401 543 401 537T400 527Q409 53 648 19Q676 16 676 -2Q676 -10 670 -16T655 -22Q654 -22 642 -20Q556 -9 492 56T395 244Q381 294 381 303Q381 305 380 305T374 275T352 201T310 110T234 27T117 -20Q105 -22 104 -22",8912:"84 250Q84 372 166 450T360 539Q361 539 370 539T395 539T430 540T475 540T524 540H679Q694 532 694 520Q694 511 681 501L522 500H470H441Q366 500 338 496T266 472Q244 461 224 446T179 404T139 337T124 250V245Q124 157 185 89Q244 25 328 7Q348 2 366 2T522 0H681Q694 -10 694 -20Q694 -32 679 -40H526Q510 -40 480 -40T434 -41Q350 -41 289 -25T172 45Q84 127 84 250ZM694 134Q694 123 679 114H425H384Q350 114 326 121T277 154Q238 193 238 251Q238 322 295 361Q318 378 339 382T412 387Q423 387 459 387T520 386H679Q694 377 694 366Q694 354 679 346H519Q493 346 458 346T411 347Q360 347 341 342T303 315Q278 287 278 250Q278 210 301 187T351 156Q358 154 519 154H679Q694 146 694 134",8913:"83 520Q83 532 98 540H251Q267 540 297 540T343 541Q427 541 488 525T605 455Q693 374 693 250Q693 165 650 99T545 0T415 -39Q407 -40 251 -40H98Q83 -32 83 -20Q83 -10 96 0H255H308H337Q412 0 439 4T512 28Q533 39 553 54T599 96T639 163T654 250Q654 341 592 411Q557 449 512 472Q468 491 439 495T335 500H306H255L96 501Q83 511 83 520ZM83 366Q83 376 96 386H244Q280 386 317 386T378 386L402 387Q456 387 498 348T540 250Q540 203 512 168T446 120Q427 114 353 114H99Q84 120 84 134Q84 147 98 154H258Q284 154 319 154T366 153Q416 153 436 158T474 185Q500 214 500 250Q500 290 477 313T426 344Q419 346 258 346H98Q83 354 83 366",8914:"88 -21T75 -21T55 -7V200Q55 231 55 280Q56 414 60 428Q61 430 61 431Q77 500 152 549T332 598Q443 598 522 544T610 405Q611 399 611 194V-7Q604 -22 591 -22Q582 -22 572 -9L570 405Q563 433 556 449T529 485Q498 519 445 538T334 558Q251 558 179 518T96 401Q95 396 95 193V-7Q88 -21 75 -21ZM229 -21H227Q215 -21 209 -7V166Q209 304 209 327T215 363Q226 398 259 421T333 444Q380 444 414 416T455 347Q457 339 457 166V-7Q449 -21 439 -21H437H435Q423 -21 417 -7V164Q417 303 417 325T411 358Q387 403 333 403T255 358Q250 347 250 325T249 164V-7Q241 -21 231 -21H229",8915:"591 598H592Q604 598 611 583V376Q611 345 611 296Q610 162 606 148Q605 146 605 145Q586 68 507 23T333 -22Q268 -22 209 -1T106 66T56 173Q55 180 55 384L56 585Q66 598 75 598Q85 598 95 585V378L96 172L98 162Q112 95 181 57T332 18Q415 18 487 58T570 175Q571 180 571 383V583Q579 598 591 598ZM437 598Q450 598 457 583V410Q457 237 455 229Q448 189 414 161T333 132Q291 132 255 157T211 230Q209 237 209 412L210 585Q220 598 229 598Q242 598 249 583V412Q249 273 249 251T255 218Q279 173 333 173T411 218Q416 229 416 251T417 412V583Q425 598 437 598",8916:"76 -22Q64 -22 56 -7V176L57 360L59 370Q66 401 83 426T123 468T171 495T221 513T265 522T298 527L311 528H314V625L315 723Q325 736 334 736Q346 736 354 721V528H356L368 527Q380 526 399 523T441 515T490 498T537 472T578 433T606 379Q611 359 611 171V-7Q604 -21 591 -21T571 -7V170Q571 313 571 337T565 375Q555 408 526 432T461 467T402 482T365 487H354V-7Q347 -21 334 -21T314 -7V487H303Q251 484 207 467Q121 438 99 367L97 357L96 174V-9Q86 -22 76 -22",8918:"86 261Q92 267 381 404T673 541Q680 541 686 535T693 521T689 510Q684 504 418 379L151 250L418 121Q686 -4 689 -10Q693 -14 693 -21T687 -34T675 -41Q668 -41 380 96T86 239Q82 244 82 250Q82 257 86 261ZM610 250Q610 224 592 198T531 172Q498 172 475 195Q453 214 453 250Q453 308 513 328Q515 330 535 330Q569 328 589 304T610 250",8919:"82 521Q82 529 89 535T100 541Q107 541 395 404T689 261Q693 257 693 250T689 239Q684 234 396 97T100 -41Q95 -41 89 -35T82 -21Q82 -12 96 -4Q118 9 358 121L624 250L358 379Q91 503 86 510Q82 514 82 521ZM165 250Q165 282 188 306T239 330Q262 330 275 323Q303 312 318 283Q322 272 322 250Q322 213 300 195Q277 172 246 172Q224 172 213 177Q165 200 165 250",8920:"639 -48Q639 -54 634 -60T619 -67H618Q612 -67 536 -26Q430 33 329 88Q61 235 59 239Q56 243 56 250T59 261Q62 266 336 415T615 567L619 568Q622 567 625 567Q639 562 639 548Q639 540 633 534Q632 532 374 391L117 250L374 109Q632 -32 633 -34Q639 -40 639 -48ZM958 -48Q958 -54 953 -60T938 -67H937Q931 -67 855 -26Q749 33 648 88Q380 235 378 239Q375 243 375 250T378 261Q381 266 655 415T934 567L938 568Q941 567 944 567Q958 562 958 548Q958 540 952 534Q951 532 693 391L436 250L693 109Q951 -32 952 -34Q958 -40 958 -48ZM1277 -48Q1277 -54 1272 -60T1257 -67H1256Q1250 -67 1174 -26Q1068 33 967 88Q699 235 697 239Q694 243 694 250T697 261Q700 266 974 415T1253 567L1257 568Q1260 567 1263 567Q1277 562 1277 548Q1277 540 1271 534Q1270 532 1012 391L755 250L1012 109Q1270 -32 1271 -34Q1277 -40 1277 -48",8921:"75 -67Q65 -67 60 -61T55 -48Q55 -40 61 -34Q62 -32 329 109L595 250L329 391Q62 532 61 534Q55 540 55 548Q55 562 69 567H77Q81 567 222 493T506 342T653 264Q667 250 653 236Q649 234 504 157T220 7T77 -67H75ZM364 547Q364 563 381 567L384 568Q387 568 518 499T795 353T955 269Q967 261 967 250T955 231Q925 216 780 139T513 -3T383 -67Q373 -67 369 -60T364 -47Q364 -40 370 -34Q373 -31 639 109L904 250L639 391Q373 531 370 534Q364 540 364 547ZM674 538T674 548T681 562T693 567Q699 567 816 505Q915 453 993 412Q1050 382 1132 339Q1241 282 1259 271T1277 250Q1277 241 1263 232Q1246 221 985 84Q698 -67 692 -67Q674 -67 674 -47Q674 -38 680 -33Q683 -30 947 109L1213 250L947 391Q683 530 680 533Q674 538 674 548",8922:"674 445Q674 438 669 432T655 425T369 531T90 640Q83 645 83 655Q83 668 95 673Q644 886 654 886Q662 886 668 880T674 866Q674 856 663 850Q649 843 411 751L160 655L407 560Q474 534 561 501Q646 469 660 462T674 445ZM84 250Q84 260 99 270H658Q674 264 674 250Q674 238 659 230H98Q84 237 84 250ZM83 55Q83 68 94 73Q98 76 104 76Q108 75 383 -30T664 -138Q674 -144 674 -155Q674 -165 667 -170Q664 -173 385 -279T104 -386Q85 -386 83 -368Q83 -354 92 -349Q93 -349 347 -251L597 -155L346 -59Q296 -40 223 -12Q118 28 101 36T83 55",8923:"111 425T102 425T88 431T83 445V446Q83 455 96 461Q111 469 203 504Q287 536 350 560L597 655L346 751Q94 848 92 850Q83 856 83 866Q83 873 88 879T104 886Q109 885 386 779T667 670Q674 665 674 655T667 640Q665 638 388 532ZM84 250Q84 260 99 270H658Q674 264 674 250Q674 238 659 230H98Q84 237 84 250ZM653 76Q656 76 660 75T669 68T674 56Q674 46 665 40Q663 38 411 -59L160 -155L410 -251Q664 -349 665 -349Q674 -354 674 -368Q672 -386 654 -386Q650 -386 371 -279T90 -170Q83 -165 83 -155Q83 -144 93 -138Q645 76 653 76",8926:"113 424Q83 424 83 444Q83 453 96 464H121Q181 466 234 474T341 501T435 545T505 613T542 707Q545 734 564 734Q583 731 583 714Q583 658 560 613T500 538T414 486T321 453T229 434T156 426T113 424ZM112 270Q83 270 83 290Q83 301 94 307Q98 310 118 310Q624 310 653 556Q657 580 675 580Q693 577 693 559V552Q684 472 628 410T465 314Q436 303 372 290Q373 290 388 287T425 278T465 266Q674 199 693 28L694 17L692 14Q691 11 689 8T683 3T673 0Q657 0 653 24Q623 270 118 270H112",8927:"195 713Q195 725 201 729T214 734Q227 734 231 722T238 691T255 641T299 580Q405 474 656 464H681Q694 451 694 443Q694 424 670 424H664Q535 424 415 465T235 595Q195 657 195 713ZM668 310Q694 310 694 290Q694 285 691 279Q684 271 664 270Q550 268 464 257T301 220T179 146T124 27Q119 0 103 0T83 16Q83 21 83 31T92 68T113 121T157 177T229 231Q295 268 405 290Q404 290 389 293T352 302T312 314Q138 371 96 500Q83 541 83 562Q83 568 89 574T103 580Q115 580 120 570T126 542T138 497T173 442Q289 310 659 310H668",8928:"82 344Q82 349 95 364H124Q266 364 398 390L429 397L509 595Q519 619 536 659Q581 766 590 783T609 801Q616 801 622 795T629 781Q629 776 553 595Q533 548 516 506T489 439T480 415Q482 415 505 426T538 444Q632 498 651 601Q654 621 658 628T673 635Q680 635 686 629T693 615Q693 591 678 546Q636 433 484 375L458 364L451 348Q443 332 443 329T455 324Q480 316 503 307T560 277T619 233T664 170T691 86Q693 68 691 64Q684 53 672 53Q664 53 658 59Q657 60 650 97T617 174T538 244Q515 257 476 273T428 289Q425 289 412 256Q381 179 344 90L262 -103H680Q682 -105 684 -108T688 -113T691 -118T693 -124Q693 -134 682 -141L464 -143H246L213 -219Q182 -292 178 -299Q172 -303 166 -303T153 -297T146 -283Q146 -282 174 -213T202 -143H95Q82 -128 82 -123T95 -103H220L302 97Q384 288 384 299Q384 302 341 308T235 319T124 324H95Q82 337 82 344ZM399 338Q403 338 406 346L409 353L375 344Q375 343 384 341T399 338",8929:"146 -283Q146 -282 174 -213T202 -143H95Q82 -127 82 -123T95 -103H220L300 93Q343 196 374 270Q385 294 386 299L373 295Q331 287 289 268Q241 249 208 224T159 174T135 127T124 85T118 59Q112 53 103 53Q91 53 84 64Q82 68 84 86Q96 185 174 248T375 337L400 344Q399 344 381 348T351 355T316 364T276 379T235 398T193 424T155 456T122 497T98 546Q82 587 82 615Q82 622 88 628T102 635Q112 635 116 628T124 601Q128 579 134 562T159 515T207 463T290 418T415 384L422 381L506 586Q571 744 584 772T609 801Q616 801 622 795T629 781T544 577Q525 529 504 478T473 402T462 375Q480 373 500 373Q579 364 651 364H680Q682 361 686 357T691 351T693 344Q693 337 680 324H651Q553 324 451 310L433 308L349 104L262 -101L473 -103H682Q694 -115 694 -123Q694 -133 682 -141L464 -143H246L213 -219Q182 -292 178 -299Q172 -303 166 -303T153 -297T146 -283",8934:"86 450Q93 455 380 592T673 730Q680 730 686 724T693 710Q693 702 688 699Q686 693 417 568L151 439L417 310Q685 185 688 179Q693 176 693 168Q693 161 687 155T675 148Q668 148 380 285T86 428Q74 438 86 450ZM55 -205Q55 -175 64 -142T92 -76T145 -22T222 -1Q288 -1 362 -66Q369 -72 372 -75T378 -79T382 -81T384 -79Q389 -74 439 21Q483 100 490 111T504 122Q510 122 518 118T526 103Q526 101 510 69T467 -12T419 -99L413 -112L433 -128Q498 -180 553 -180Q605 -180 646 -139Q672 -112 681 -77T693 -21T706 -1Q719 -1 719 -33Q719 -39 717 -57Q708 -141 655 -190Q625 -224 586 -232Q568 -237 551 -237Q487 -237 413 -172L391 -155Q391 -157 335 -255Q297 -325 286 -342T268 -359Q260 -359 254 -353T248 -339T304 -230L359 -126Q359 -124 337 -107T302 -81Q262 -57 221 -57Q170 -57 130 -93T84 -201Q82 -236 70 -236Q55 -236 55 -205",8935:"88 723Q95 730 99 730Q106 730 394 593T688 450Q693 447 693 439T688 428Q683 423 395 286T99 148Q94 148 88 155T82 168Q82 175 86 179Q89 184 357 310L624 439L357 568Q88 694 86 699Q81 703 81 711T88 723ZM55 -205Q55 -175 64 -142T92 -76T145 -22T222 -1Q288 -1 362 -66Q369 -72 372 -75T378 -79T382 -81T384 -79Q389 -74 439 21Q483 100 490 111T504 122Q510 122 518 118T526 103Q526 101 510 69T467 -12T419 -99L413 -112L433 -128Q498 -180 553 -180Q605 -180 646 -139Q672 -112 681 -77T693 -21T706 -1Q719 -1 719 -33Q719 -39 717 -57Q708 -141 655 -190Q625 -224 586 -232Q568 -237 551 -237Q487 -237 413 -172L391 -155Q391 -157 335 -255Q297 -325 286 -342T268 -359Q260 -359 254 -353T248 -339T304 -230L359 -126Q359 -124 337 -107T302 -81Q262 -57 221 -57Q170 -57 130 -93T84 -201Q82 -236 70 -236Q55 -236 55 -205",8936:"95 419Q81 433 81 439T95 459H124Q318 459 455 501Q515 521 556 550T615 607T641 659T652 702T659 725Q667 730 673 730Q680 730 686 724T693 710Q693 682 677 641Q668 616 654 594T622 554T586 522T545 497T504 477T464 462T428 452T397 444T375 439Q379 437 410 430T476 411T551 379T625 321T677 237Q693 196 693 168Q693 161 687 155T673 148Q662 148 658 154T651 181Q638 253 591 300T455 377Q318 419 124 419H95ZM55 -205Q55 -175 64 -142T92 -76T145 -22T222 -1Q288 -1 362 -66Q369 -72 372 -75T378 -79T382 -81T384 -79Q389 -74 439 21Q483 100 490 111T504 122Q510 122 518 118T526 103Q526 101 510 69T467 -12T419 -99L413 -112L433 -128Q498 -180 553 -180Q605 -180 646 -139Q672 -112 681 -77T693 -21T706 -1Q719 -1 719 -33Q719 -39 717 -57Q708 -141 655 -190Q625 -224 586 -232Q568 -237 551 -237Q487 -237 413 -172L391 -155Q391 -157 335 -255Q297 -325 286 -342T268 -359Q260 -359 254 -353T248 -339T304 -230L359 -126Q359 -124 337 -107T302 -81Q262 -57 221 -57Q170 -57 130 -93T84 -201Q82 -236 70 -236Q55 -236 55 -205",8937:"679 459Q693 445 693 439Q693 430 679 419H651Q455 419 319 377Q231 347 184 300T124 181Q120 161 116 155T102 148Q95 148 89 154T82 168Q82 192 97 237Q111 275 137 306T188 355T249 391T307 414T361 429T399 439Q397 440 364 447T298 467T224 499T149 557T97 641Q82 686 82 710Q82 717 88 723T102 730L115 725Q118 722 124 697Q137 625 184 578T319 501Q456 459 651 459H679ZM55 -205Q55 -175 64 -142T92 -76T145 -22T222 -1Q288 -1 362 -66Q369 -72 372 -75T378 -79T382 -81T384 -79Q389 -74 439 21Q483 100 490 111T504 122Q510 122 518 118T526 103Q526 101 510 69T467 -12T419 -99L413 -112L433 -128Q498 -180 553 -180Q605 -180 646 -139Q672 -112 681 -77T693 -21T706 -1Q719 -1 719 -33Q719 -39 717 -57Q708 -141 655 -190Q625 -224 586 -232Q568 -237 551 -237Q487 -237 413 -172L391 -155Q391 -157 335 -255Q297 -325 286 -342T268 -359Q260 -359 254 -353T248 -339T304 -230L359 -126Q359 -124 337 -107T302 -81Q262 -57 221 -57Q170 -57 130 -93T84 -201Q82 -236 70 -236Q55 -236 55 -205",8938:"693 -30Q686 -41 673 -41Q661 -41 506 34L346 110L280 -44Q228 -162 216 -185T193 -208Q177 -208 173 -192Q173 -186 242 -30T311 128Q271 145 184 186T86 236Q82 240 82 246Q82 251 86 259Q96 267 271 350L449 434L506 565Q537 635 551 664T571 700T582 706Q587 706 593 701T600 690Q600 679 553 572Q504 463 504 461L586 501Q672 539 673 539Q679 539 693 525V-30ZM653 10V488L566 445L480 405L422 276Q415 260 405 236T388 199T376 171T368 151T366 145Q368 143 510 77T653 10ZM422 374Q422 376 420 376T285 313T151 248Q315 168 326 163Q415 356 422 374",8939:"82 525Q96 539 102 539Q103 539 122 530T186 501T266 463L426 388Q428 388 495 541Q564 694 569 699Q573 706 581 706Q587 706 593 702T600 691Q600 676 533 528Q515 486 506 465T485 418T470 381T466 370Q466 369 575 316Q676 269 689 259Q693 253 693 248Q693 242 689 236Q688 235 506 145Q328 63 324 59Q324 50 266 -70Q224 -169 214 -188T193 -208Q177 -208 173 -192Q173 -183 222 -77Q244 -29 257 2T269 34L186 -6Q108 -43 99 -43Q93 -43 82 -30V525ZM271 416Q129 485 126 485H125Q122 485 122 250Q122 10 124 10L211 50L295 92L411 350Q411 351 271 416ZM624 248L449 332L440 319Q434 297 393 214Q353 121 353 119Q355 119 489 182T624 248",8940:"82 -123Q82 -114 93 -103H166L238 -101L293 50Q349 200 349 204L220 266Q166 291 140 304T100 325T84 336T82 344Q82 353 94 360Q112 372 282 453L473 541L482 568Q487 578 529 693Q559 785 569 795Q573 802 581 802Q587 802 593 797T599 786Q599 775 564 675L526 570Q526 568 561 584T633 617T673 635Q679 635 693 621V66Q686 54 679 54Q665 54 526 119Q491 137 458 153T405 177T386 184Q385 182 334 42T282 -101T482 -103H680Q682 -105 684 -108T688 -113T691 -118T693 -124Q693 -134 682 -141L473 -143H266L238 -219Q217 -278 210 -290T193 -303Q178 -303 173 -287Q173 -279 198 -214L222 -145Q222 -143 158 -143L93 -141L86 -136Q82 -131 82 -123ZM653 106V584L506 513L453 370Q442 339 428 300T407 243T400 224Q403 222 527 164T653 106ZM453 486Q453 488 451 488T300 417T151 344L224 308Q247 298 285 279T331 257L364 241L453 486",8941:"82 621Q96 635 102 635T249 568L420 486L449 473L469 533Q563 789 569 797Q573 801 581 801Q598 801 600 786Q602 781 544 617L484 455Q531 435 584 408Q677 364 689 355Q693 351 693 344Q693 339 692 337T676 325T631 302T538 257Q504 241 465 223T406 195T386 186Q384 184 333 44T282 -101Q282 -103 482 -103H680Q682 -105 684 -108T688 -113T691 -118T693 -124Q693 -134 682 -141L473 -143H266L238 -219Q217 -278 210 -290T193 -303Q178 -303 173 -287Q173 -279 198 -214L222 -145Q222 -143 158 -143L93 -141L86 -136Q82 -131 82 -123Q82 -114 93 -103H166L238 -101L333 159Q326 159 220 106Q110 54 97 54Q89 54 82 66V621ZM298 501Q155 567 142 575L122 584V344Q122 106 124 106Q125 106 180 132T291 185T351 213Q355 217 393 326L433 435Q433 436 298 501ZM549 381Q472 417 471 417L406 241Q408 240 516 291T624 344L549 381",8942:"78 30Q78 54 95 72T138 90Q162 90 180 74T199 31Q199 6 182 -12T139 -30T96 -13T78 30ZM78 440Q78 464 95 482T138 500Q162 500 180 484T199 441Q199 416 182 398T139 380T96 397T78 440ZM78 840Q78 864 95 882T138 900Q162 900 180 884T199 841Q199 816 182 798T139 780T96 797T78 840",8943:"78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250ZM525 250Q525 274 542 292T585 310Q609 310 627 294T646 251Q646 226 629 208T586 190T543 207T525 250ZM972 250Q972 274 989 292T1032 310Q1056 310 1074 294T1093 251Q1093 226 1076 208T1033 190T990 207T972 250",8945:"133 760Q133 784 150 802T193 820Q217 820 235 804T254 761Q254 736 237 718T194 700T151 717T133 760ZM580 460Q580 484 597 502T640 520Q664 520 682 504T701 461Q701 436 684 418T641 400T598 417T580 460ZM1027 160Q1027 184 1044 202T1087 220Q1111 220 1129 204T1148 161Q1148 136 1131 118T1088 100T1045 117T1027 160",8965:"55 698Q56 708 70 716H540Q554 708 555 698Q555 694 554 691T552 686T549 682T546 680T542 678T539 676H71Q70 676 68 677T65 679T61 682T58 686T56 691T55 698ZM555 18Q554 12 549 6T536 0H535Q525 0 515 17T459 132Q430 194 410 235L305 455L199 233Q176 185 147 125T105 36T90 7Q85 0 75 0Q63 0 58 11Q55 15 55 21Q58 31 170 266T285 507Q295 522 305 522T320 515Q322 513 439 268L555 24V18",8966:"55 795Q56 806 70 813H540Q554 806 555 795Q555 791 554 788T552 783T549 779T546 777T542 775T539 773H71Q70 773 68 774T65 776T61 779T58 783T56 788T55 795ZM55 601Q56 612 70 619H540Q554 612 555 601Q555 597 554 594T552 589T549 585T546 583T542 581T539 579H71Q70 579 68 580T65 582T61 585T58 589T56 594T55 601ZM75 -97Q67 -97 61 -91T55 -81Q55 -71 169 166T285 410Q295 425 305 425Q311 425 316 422T323 414L325 410Q327 404 441 167T555 -81Q555 -85 549 -91T535 -97T520 -90Q519 -89 506 -61T463 27T411 136L305 358L199 136Q167 71 129 -10Q98 -75 92 -86T75 -97",8968:"174 734Q178 746 190 750H298H369Q400 750 411 747T422 730T411 713T372 709Q365 709 345 709T310 710H214V-235Q206 -248 196 -250Q192 -250 189 -249T184 -247T180 -244T178 -241T176 -237T174 -234V734",8969:"21 717T21 730T32 746T75 750H147H256Q266 742 269 735V-235Q262 -248 251 -250Q247 -250 244 -249T239 -247T235 -244T233 -241T231 -237T229 -234V710H133Q119 710 99 710T71 709Q43 709 32 713",8970:"174 734Q174 735 175 737T177 740T180 744T184 747T189 749T196 750Q206 748 214 735V-210H310H373Q401 -210 411 -213T422 -230T411 -247T369 -251Q362 -251 338 -251T298 -250H190Q178 -246 174 -234V734",8971:"229 734Q229 735 230 737T232 740T235 744T239 747T244 749T251 750Q262 748 269 735V-235Q266 -240 256 -249L147 -250H77Q43 -250 32 -247T21 -230T32 -213T72 -209Q79 -209 99 -209T133 -210H229V734",8988:"76 306Q62 306 59 319T55 386V500V596Q55 664 57 676T68 692Q71 694 250 694Q428 694 432 692Q444 685 444 674Q444 665 432 656Q428 654 261 654H95V487Q95 355 95 336T90 312Q84 306 76 306",8989:"424 306Q418 306 413 310T406 318L404 321V654H238Q71 654 68 656Q55 662 55 674T68 692Q71 694 250 694H379Q432 694 438 688Q443 683 443 662T444 500T444 338T438 312Q432 306 424 306",8990:"55 172V287Q55 341 58 353T76 366Q88 366 95 351V18H261Q428 18 432 16Q444 9 444 -2Q444 -11 432 -20Q428 -22 250 -22H120Q67 -22 61 -16Q56 -11 56 10T55 172",8991:"404 351Q410 366 424 366Q437 366 440 353T444 288V172V72Q444 8 443 -4T432 -20Q428 -22 250 -22Q71 -22 68 -20Q55 -14 55 -2T68 16Q71 18 238 18H404V351",8994:"55 141Q55 149 72 174T125 234T209 303T329 360T478 388H526Q649 383 765 319Q814 291 858 250T923 179T944 141Q944 133 938 128T924 122Q914 124 912 125T902 139Q766 328 500 328Q415 328 342 308T225 258T150 199T102 148T84 124Q81 122 75 122Q55 127 55 141",8995:"923 378Q944 378 944 358Q944 345 912 311T859 259Q710 134 500 134Q288 134 140 259Q55 336 55 358Q55 366 61 372T75 378Q78 378 84 376Q86 376 101 356T147 310T221 257T339 212T500 193Q628 193 734 236Q841 282 903 363Q914 378 923 378",9001:"333 -232Q332 -239 327 -244T313 -250Q303 -250 296 -240Q293 -233 202 6T110 250T201 494T296 740Q299 745 306 749L309 750Q312 750 313 750Q331 750 333 732Q333 727 243 489Q152 252 152 250T243 11Q333 -227 333 -232",9002:"55 732Q56 739 61 744T75 750Q85 750 92 740Q95 733 186 494T278 250T187 6T92 -240Q85 -250 75 -250Q67 -250 62 -245T55 -232Q55 -227 145 11Q236 248 236 250T145 489Q55 727 55 732",9136:"357 741V726Q357 720 349 715Q261 655 242 539Q240 526 240 454T239 315T239 247Q240 235 240 124V40Q240 -17 233 -53T201 -130Q155 -206 78 -244H69H64Q58 -244 57 -243T56 -234Q56 -232 56 -231V-225Q56 -218 63 -215Q153 -153 170 -39Q172 -25 173 119V219Q173 245 174 249Q173 258 173 376V460Q173 515 178 545T201 611Q244 695 327 741L334 744H354L357 741",9137:"78 744Q153 706 196 640T239 492V376Q239 341 239 314T238 271T238 253Q239 251 239 223V119V49Q239 -39 254 -85Q263 -111 275 -134T301 -172T326 -197T346 -213T356 -221T357 -232V-241L354 -244H334Q264 -209 222 -146T174 -12Q173 -6 173 95Q173 134 173 191T174 250Q173 258 173 382V451Q173 542 159 585Q145 626 120 658T75 706T56 723V731Q56 741 57 742T66 744H78",9168:"312 0V602H355V0H312",9416:"451 -175Q328 -175 226 -115T66 47T8 267Q8 303 15 342T39 431T94 531T186 622Q239 663 307 686T424 709H440Q604 709 716 622Q757 592 788 555T838 482T869 414T886 350T892 301T894 267Q894 147 835 45T674 -116T451 -175ZM854 268Q854 375 802 467T657 614T450 670Q283 670 166 552T49 267Q49 99 167 -18T453 -136Q617 -136 735 -18T854 268ZM273 378Q273 430 309 474T409 527Q411 527 417 527T428 528Q498 528 549 484L567 505Q583 528 590 528H594Q600 528 606 522V350L600 344H586Q577 344 574 344T569 347T566 357Q542 491 432 491Q389 491 365 465T340 407Q340 391 344 378T358 356T377 340T400 328T421 321T443 316T459 313Q499 305 517 300T559 279T601 238Q629 195 629 148Q629 80 583 33T471 -14Q392 -14 330 30Q312 6 293 -13Q292 -14 285 -14Q279 -14 273 -8V77V138Q273 160 275 165T286 170H294H307Q313 164 313 158Q313 108 350 67T471 26Q512 26 537 54T562 119Q562 137 558 151T544 176T527 193T504 205T483 212T459 218T441 222Q391 232 368 241T318 273Q273 316 273 378",9484:"76 306Q62 306 59 319T55 386V500V596Q55 664 57 676T68 692Q71 694 250 694Q428 694 432 692Q444 685 444 674Q444 665 432 656Q428 654 261 654H95V487Q95 355 95 336T90 312Q84 306 76 306",9488:"424 306Q418 306 413 310T406 318L404 321V654H238Q71 654 68 656Q55 662 55 674T68 692Q71 694 250 694H379Q432 694 438 688Q443 683 443 662T444 500T444 338T438 312Q432 306 424 306",9492:"55 172V287Q55 341 58 353T76 366Q88 366 95 351V18H261Q428 18 432 16Q444 9 444 -2Q444 -11 432 -20Q428 -22 250 -22H120Q67 -22 61 -16Q56 -11 56 10T55 172",9496:"404 351Q410 366 424 366Q437 366 440 353T444 288V172V72Q444 8 443 -4T432 -20Q428 -22 250 -22Q71 -22 68 -20Q55 -14 55 -2T68 16Q71 18 238 18H404V351",9585:"19 -195Q13 -195 7 -188T0 -176Q0 -169 18 -151L822 683Q835 694 840 694T852 688T860 674Q860 667 810 614T460 252Q57 -167 44 -179Q27 -195 19 -195",9586:"0 675Q0 681 6 687T19 694Q27 694 44 678L460 247Q759 -62 809 -115T860 -175Q860 -183 852 -189T840 -195Q835 -195 822 -184L18 649Q0 667 0 675",9632:"71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71",9633:"71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71ZM682 40V649H95V40H682",9642:"71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71",9650:"99 -20Q84 -11 84 0Q84 5 148 145T278 424L342 563Q347 575 360 575Q368 575 375 570Q376 569 441 430T571 148T637 0Q637 -11 622 -20H99",9651:"75 0L72 2Q69 3 67 5T62 11T59 20Q59 24 62 30Q65 37 245 370T428 707Q428 708 430 710T436 714T444 716Q451 716 455 712Q459 710 644 368L828 27V20Q828 7 814 0H75ZM610 347L444 653Q443 653 278 347T113 40H775Q775 42 610 347",9652:"99 -20Q84 -11 84 0Q84 5 148 145T278 424L342 563Q347 575 360 575Q368 575 375 570Q376 569 441 430T571 148T637 0Q637 -11 622 -20H99",9653:"75 0L72 2Q69 3 67 5T62 11T59 20Q59 24 62 30Q65 37 245 370T428 707Q428 708 430 710T436 714T444 716Q451 716 455 712Q459 710 644 368L828 27V20Q828 7 814 0H75ZM610 347L444 653Q443 653 278 347T113 40H775Q775 42 610 347",9654:"83 523Q83 524 85 527T92 535T103 539Q107 539 389 406T680 268Q694 260 694 249Q694 239 687 234Q685 232 395 95L107 -41H101Q90 -40 83 -26V523",9656:"83 523Q83 524 85 527T92 535T103 539Q107 539 389 406T680 268Q694 260 694 249Q694 239 687 234Q685 232 395 95L107 -41H101Q90 -40 83 -26V523",9657:"26 489Q33 505 43 505Q51 505 260 385Q464 266 471 259Q473 257 473 250Q473 242 469 239Q459 231 260 115Q51 -5 43 -5Q39 -5 35 -1T28 7L26 11V489ZM412 250L67 450Q66 450 66 250T67 50Q69 51 240 150T412 250",9660:"84 556Q84 567 99 576H622Q637 567 637 556Q637 551 572 409T441 127T375 -14Q368 -19 360 -19H358Q349 -19 342 -7T296 92Q249 193 211 275Q84 550 84 556",9661:"59 480Q59 485 61 489T66 495T72 498L75 500H814Q828 493 828 480V474L644 132Q458 -210 455 -212Q451 -215 444 -215T433 -212Q429 -210 342 -49T164 282T64 466Q59 478 59 480ZM775 460H113Q113 459 278 153T444 -153T610 153T775 460",9662:"84 556Q84 567 99 576H622Q637 567 637 556Q637 551 572 409T441 127T375 -14Q368 -19 360 -19H358Q349 -19 342 -7T296 92Q249 193 211 275Q84 550 84 556",9663:"59 480Q59 485 61 489T66 495T72 498L75 500H814Q828 493 828 480V474L644 132Q458 -210 455 -212Q451 -215 444 -215T433 -212Q429 -210 342 -49T164 282T64 466Q59 478 59 480ZM775 460H113Q113 459 278 153T444 -153T610 153T775 460",9664:"694 -26Q686 -40 676 -41H670L382 95Q92 232 90 234Q83 239 83 249Q83 262 96 267Q101 270 379 401T665 537Q671 539 674 539Q686 539 694 524V-26",9666:"694 -26Q686 -40 676 -41H670L382 95Q92 232 90 234Q83 239 83 249Q83 262 96 267Q101 270 379 401T665 537Q671 539 674 539Q686 539 694 524V-26",9667:"473 10Q466 -5 454 -5Q451 -5 445 -3Q444 -3 343 56T140 173T35 234Q26 239 26 250T35 266Q40 269 240 384T445 503Q451 505 453 505Q466 505 473 490V10ZM433 50T433 250T432 450T259 351T87 250T258 150T432 50Q433 50 433 250",9674:"318 709Q325 716 332 716Q340 716 344 713T474 511Q611 298 611 292Q611 285 526 152Q494 103 474 72Q347 -128 344 -130Q340 -132 333 -132T322 -130Q319 -128 257 -31T131 169T60 278Q56 285 56 292Q56 298 60 305Q73 326 194 516T318 709ZM567 290T567 291T451 475T333 658L100 293Q100 288 215 108L333 -74Q334 -74 450 108",9711:"56 250Q56 353 95 442T196 589T335 681T491 715Q573 715 635 693Q694 673 747 635T846 543T917 412T944 250Q944 58 815 -78T500 -215Q457 -215 429 -210Q274 -183 165 -56T56 250ZM500 -176Q664 -176 784 -54T904 250Q904 418 799 536T543 674Q534 675 493 675Q425 675 357 647T229 567T133 432T96 250Q96 160 129 80T217 -56T346 -144T500 -176",9723:"71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71ZM682 40V649H95V40H682",9724:"71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71",9733:"367 395Q374 416 398 492T442 627T463 688Q463 692 467 692Q471 694 472 694Q478 694 484 680T523 562Q553 469 576 400L577 395H731H819Q872 395 883 394T895 384Q895 380 891 376T832 333Q794 305 767 285Q643 195 643 194L690 47Q737 -96 737 -103Q737 -111 727 -111Q721 -111 594 -18L472 71L350 -18Q223 -111 217 -111Q207 -111 207 -103Q207 -96 254 47L301 194Q301 195 241 239T118 328T51 378Q49 382 49 384Q49 392 58 393T110 395H213H367",9824:"181 -21Q134 -21 96 27T55 193Q55 224 58 247T82 317T143 410Q172 443 234 498Q282 543 314 598T360 687T380 725Q386 727 389 727Q395 727 398 725T406 716T413 702T423 677T439 641Q481 556 544 498Q633 420 678 353T723 204Q723 142 711 94T669 12T590 -21Q520 -21 490 8T459 66V70H409V62Q409 22 416 -17T430 -82T437 -112Q437 -131 407 -131Q403 -131 397 -131T389 -130T382 -130T372 -131Q341 -131 341 -111Q341 -107 348 -82T362 -18T369 62V70H319V66Q319 57 314 44T297 16T257 -10T191 -21H181",9825:"55 490Q55 557 71 604T114 674T167 706T222 716Q279 716 322 684T389 605Q391 610 395 617T414 643T447 677T494 704T555 716Q642 716 682 652T723 490Q723 455 718 426T684 342T602 227Q573 196 537 161T485 110T449 63T412 -8Q408 -22 404 -27T389 -33Q382 -33 379 -31T372 -23T366 -8T355 18T335 54Q319 81 298 104T239 163T176 227Q102 310 79 371T55 490ZM198 674Q143 664 119 613T95 491Q95 415 137 346Q174 282 265 194T384 48L389 39Q391 42 397 54T406 71T415 86T427 104T442 122T464 146T491 172Q571 249 613 303Q683 396 683 487Q683 581 649 631Q613 676 556 676Q495 676 457 634T410 538Q407 514 390 514Q386 514 380 517Q372 520 369 536T355 581T319 635Q277 675 223 675H217H208L204 674Q200 674 198 674",9826:"370 714Q370 717 375 722T388 727Q398 727 403 721T417 697Q420 692 421 689Q536 465 709 304Q723 291 723 282T709 260Q529 93 406 -153Q402 -162 390 -162H389Q379 -162 376 -158T357 -125Q247 89 89 241L64 265Q55 272 55 282Q55 287 57 290T64 300T77 312T98 331T127 361Q197 435 258 523T344 663L370 714ZM655 299Q568 384 508 470T389 662L376 638Q362 613 341 577T289 497T215 399T123 299L105 282L123 265Q210 180 270 94T389 -98L402 -74Q416 -49 437 -13T489 67T563 165T655 265L673 282L655 299",9827:"213 532Q213 615 265 670T389 726Q461 726 513 671T565 532Q565 511 562 492T553 458T541 432T526 409T512 393T498 379L490 371L511 326Q512 326 516 330T528 341T546 353T572 363T606 368Q664 368 707 315T750 174Q750 87 699 33T579 -22Q567 -22 553 -20T517 -10T479 16T459 63V70H409V62Q409 22 416 -17T430 -82T437 -112Q437 -131 407 -131Q403 -131 397 -131T389 -130T382 -130T372 -131Q341 -131 341 -111Q341 -107 348 -82T362 -18T369 62V70H319V63Q315 25 281 2T197 -22Q132 -22 80 32T28 174Q28 255 69 311T175 368Q192 368 207 364T232 353T250 341T262 331T267 326L288 371L280 378Q272 385 267 391T253 407T238 430T226 457T217 492T213 532",9837:"200 467Q254 467 293 428T332 321Q332 147 104 -11L88 -22H75Q62 -22 56 -16L55 362V647Q55 743 60 748Q63 750 76 750H83Q87 750 95 744V434L104 440Q144 467 200 467ZM237 322Q237 360 225 388T183 417Q158 417 134 407T101 378Q96 370 96 349T95 197V34Q152 91 194 167T237 322",9838:"65 721Q78 734 94 734Q100 734 104 727V444L116 449Q129 454 157 465T208 486Q313 527 314 527Q318 527 324 521V-210Q306 -223 294 -223Q289 -223 284 -216V-13L270 -18Q257 -24 231 -34T180 -54Q77 -96 74 -96T65 -90V721ZM104 13Q282 84 283 85Q284 85 284 252Q284 418 283 418L230 396L140 360L104 346V13",9839:"101 -223Q94 -223 93 -217T91 -188V-151Q91 -88 90 -88Q87 -88 80 -92T68 -96Q62 -96 56 -90L55 -50V-22Q55 -8 58 -4T78 5L91 10V177Q91 343 90 343Q87 343 80 339T68 335Q62 335 56 341L55 381V409Q55 423 58 427T78 436L91 441V543V616Q91 643 93 648T106 656Q119 662 126 659Q130 657 130 645T131 554V456L257 503V607L258 710L260 712Q261 715 272 719T286 723Q293 723 295 715T297 671V617Q297 519 298 519Q301 519 307 522T319 526Q327 526 333 521V437L330 435Q328 432 312 427L297 421V254Q297 88 298 88Q301 88 307 91T319 95Q327 95 333 90V6L330 4Q328 1 312 -4L297 -10V-78V-122Q297 -145 295 -149T282 -156Q274 -160 268 -160Q257 -160 257 -130V-89V-25L131 -72V-210Q123 -215 116 -218T104 -222L101 -223ZM257 72V406L131 359V25L257 72",10003:"84 231Q84 244 114 264T170 285Q176 285 183 274T224 205Q267 129 268 129Q271 141 279 163T318 250T389 378T502 523T662 673Q702 706 732 706H734Q749 706 749 695Q749 682 730 666T660 607T559 505Q387 299 328 29Q324 0 295 -17T245 -34H241Q234 -34 225 -21T185 46Q166 79 154 101Q84 223 84 231",10016:"195 702T195 706T201 716H632Q638 710 638 706T636 700T621 690Q436 581 427 374V357H430Q554 357 645 421Q682 447 711 483T755 542T770 567Q775 572 786 563V131Q777 125 774 125T762 139Q709 228 642 274T482 333Q452 337 430 337H427V320Q430 279 437 247T462 170T521 82T621 4Q630 -2 633 -4T637 -7T638 -12Q638 -16 632 -22H201Q195 -16 195 -12T197 -6T212 4Q397 113 406 320V337H403Q279 337 188 273Q151 247 122 211T78 152T63 127Q58 122 48 131V563Q54 569 59 569Q62 569 71 555Q124 466 191 420T351 361Q381 357 403 357H406V374Q403 415 396 447T371 525T312 613T212 690Q199 697 197 699",10072:"139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139",10216:"333 -232Q332 -239 327 -244T313 -250Q303 -250 296 -240Q293 -233 202 6T110 250T201 494T296 740Q299 745 306 749L309 750Q312 750 313 750Q331 750 333 732Q333 727 243 489Q152 252 152 250T243 11Q333 -227 333 -232",10217:"55 732Q56 739 61 744T75 750Q85 750 92 740Q95 733 186 494T278 250T187 6T92 -240Q85 -250 75 -250Q67 -250 62 -245T55 -232Q55 -227 145 11Q236 248 236 250T145 489Q55 727 55 732",10222:"357 741V726Q357 720 349 715Q261 655 242 539Q240 526 240 394V331Q240 259 239 250Q240 242 240 119V49Q240 -42 254 -85Q263 -111 275 -134T301 -172T326 -197T346 -213T356 -221T357 -232V-241L354 -244H334Q264 -209 222 -146T174 -12Q173 -6 173 95Q173 134 173 191T174 250Q173 260 173 376V460Q173 515 178 545T201 611Q244 695 327 741L334 744H354L357 741",10223:"78 744Q153 706 196 640T239 492V376Q239 339 239 311T238 269T238 252Q240 236 240 124V40Q240 -18 233 -53T202 -130Q156 -206 79 -244H70H65Q58 -244 57 -242T56 -231T57 -220T64 -215Q153 -154 170 -39Q173 -18 174 119V247Q173 249 173 382V451Q173 542 159 585Q145 626 120 658T75 706T56 723V731Q56 741 57 742T66 744H78",10229:"165 270H1510Q1525 262 1525 250T1510 230H165Q167 228 182 216T211 189T244 152T277 96T303 25Q308 7 308 0Q308 -11 288 -11Q281 -11 278 -11T272 -7T267 2T263 21Q245 94 195 151T73 236Q58 242 55 247Q55 254 59 257T73 264Q121 283 158 314T215 375T247 434T264 480L267 497Q269 503 270 505T275 509T288 511Q308 511 308 500Q308 493 303 475Q293 438 278 406T246 352T215 315T185 287T165 270",10230:"84 237T84 250T98 270H1444Q1328 357 1301 493Q1301 494 1301 496T1300 499Q1300 511 1317 511H1320Q1329 511 1332 510T1338 506T1341 497T1344 481T1352 456Q1374 389 1425 336T1544 261Q1553 258 1553 250Q1553 244 1548 241T1524 231T1486 212Q1445 186 1415 152T1370 85T1349 35T1341 4Q1339 -6 1336 -8T1320 -11Q1300 -11 1300 0Q1300 7 1305 25Q1337 151 1444 230H98Q84 237 84 250",10231:"165 270H1694Q1578 357 1551 493Q1551 494 1551 496T1550 499Q1550 511 1567 511H1570Q1579 511 1582 510T1588 506T1591 497T1594 481T1602 456Q1624 389 1675 336T1794 261Q1803 258 1803 250Q1803 244 1798 241T1774 231T1736 212Q1695 186 1665 152T1620 85T1599 35T1591 4Q1589 -6 1586 -8T1570 -11Q1550 -11 1550 0Q1550 7 1555 25Q1587 151 1694 230H165Q167 228 182 216T211 189T244 152T277 96T303 25Q308 7 308 0Q308 -11 288 -11Q281 -11 278 -11T272 -7T267 2T263 21Q245 94 195 151T73 236Q58 242 55 247Q55 254 59 257T73 264Q121 283 158 314T215 375T247 434T264 480L267 497Q269 503 270 505T275 509T288 511Q308 511 308 500Q308 493 303 475Q293 438 278 406T246 352T215 315T185 287T165 270",10232:"274 173H1539Q1540 172 1542 171T1545 169T1547 167T1550 164T1551 162T1552 158T1553 153Q1553 140 1538 133H318L328 123Q379 69 414 0Q419 -13 419 -17Q419 -24 399 -24Q388 -24 385 -23T377 -12Q332 77 253 144T72 237Q62 240 59 242T56 250T59 257T70 262T89 268T119 278T160 296Q303 366 377 512Q382 522 385 523T401 525Q419 524 419 515Q419 510 414 500Q379 431 328 377L318 367H1538Q1553 359 1553 347Q1553 336 1539 328L1221 327H903L900 328L602 327H274L264 319Q225 289 147 250Q148 249 165 241T210 217T264 181L274 173",10233:"1218 514Q1218 525 1234 525Q1239 525 1242 525T1247 525T1251 524T1253 523T1255 520T1257 517T1260 512Q1297 438 1358 381T1469 300T1565 263Q1582 258 1582 250T1573 239T1536 228T1478 204Q1334 134 1260 -12Q1256 -21 1253 -22T1238 -24Q1218 -24 1218 -17Q1218 -13 1223 0Q1258 69 1309 123L1319 133H70Q56 140 56 153Q56 168 72 173H1363L1373 181Q1412 211 1490 250Q1489 251 1472 259T1427 283T1373 319L1363 327H710L707 328L390 327H72Q56 332 56 347Q56 360 70 367H1319L1309 377Q1276 412 1247 458T1218 514",10234:"1438 514Q1438 525 1454 525Q1459 525 1462 525T1467 525T1471 524T1473 523T1475 520T1477 517T1480 512Q1517 438 1578 381T1689 300T1785 263Q1802 258 1802 250T1793 239T1756 228T1698 204Q1554 134 1480 -12Q1476 -21 1473 -22T1458 -24Q1438 -24 1438 -17Q1438 -13 1443 0Q1478 69 1529 123L1539 133H318L328 123Q379 69 414 0Q419 -13 419 -17Q419 -24 399 -24Q388 -24 385 -23T377 -12Q332 77 253 144T72 237Q62 240 59 242T56 250T59 257T70 262T89 268T119 278T160 296Q303 366 377 512Q382 522 385 523T401 525Q419 524 419 515Q419 510 414 500Q379 431 328 377L318 367H1539L1529 377Q1496 412 1467 458T1438 514ZM274 173H1583L1593 181Q1632 211 1710 250Q1709 251 1692 259T1647 283T1593 319L1583 327H930L927 328L602 327H274L264 319Q225 289 147 250Q148 249 165 241T210 217T264 181L274 173",10236:"95 155V109Q95 83 92 73T75 63Q61 63 58 74T54 130Q54 140 54 180T55 250Q55 421 57 425Q61 437 75 437Q88 437 91 428T95 393V345V270H1444Q1328 357 1301 493Q1301 494 1301 496T1300 499Q1300 511 1317 511H1320Q1329 511 1332 510T1338 506T1341 497T1344 481T1352 456Q1374 389 1425 336T1544 261Q1553 258 1553 250Q1553 244 1548 241T1524 231T1486 212Q1445 186 1415 152T1370 85T1349 35T1341 4Q1339 -6 1336 -8T1320 -11Q1300 -11 1300 0Q1300 7 1305 25Q1337 151 1444 230H95V155",10731:"318 709Q325 716 332 716Q340 716 344 713T474 511Q611 298 611 292Q611 285 526 152Q494 103 474 72Q347 -128 344 -130Q340 -132 333 -132T322 -130Q319 -128 257 -31T131 169T60 278Q56 285 56 292Q56 298 60 305Q73 326 194 516T318 709",10744:"166 -215T159 -215T147 -212T141 -204T139 -197Q139 -190 144 -183Q157 -157 378 274T602 707Q605 716 618 716Q625 716 630 712T636 703T638 696Q638 691 406 241T170 -212Q166 -215 159 -215",10752:"555 -250Q420 -250 306 -185T124 -4T56 250Q56 453 193 595T526 749Q528 750 539 750Q554 750 562 749Q688 749 800 687T983 508T1054 250Q1054 112 987 -3T806 -184T555 -250ZM555 -165Q672 -165 767 -108T916 44T970 250Q970 418 861 532T600 664Q591 665 548 665Q446 665 353 614T200 466T140 250V243Q140 88 248 -30Q262 -46 280 -62T338 -105T434 -148T555 -165ZM478 250Q478 288 503 307T551 326Q586 326 609 305T632 250Q632 217 610 196T555 174T500 196T478 250",10753:"555 -250Q420 -250 306 -185T124 -4T56 250Q56 453 193 595T526 749Q528 750 539 750Q554 750 562 749Q688 749 800 687T983 508T1054 250Q1054 112 987 -3T806 -184T555 -250ZM513 478Q513 664 512 664Q504 664 481 660T406 637T313 588Q281 564 255 537T211 483T181 431T161 382T150 342T144 310T141 292H513V478ZM798 588Q758 616 711 634T639 658T602 663L597 664V292H969Q969 293 967 309T960 341T949 381T930 430T900 482T856 537T798 588ZM513 -164V208H141Q142 205 144 189T149 160T158 125T173 83T196 39T229 -9Q249 -34 273 -55T318 -92T363 -119T405 -138T444 -150T475 -158T499 -162T513 -164ZM775 -103Q801 -87 823 -68T863 -30T894 10T919 49T937 88T950 123T959 154T964 180T968 198L969 208H597V-164Q599 -163 616 -161T647 -155T683 -145T728 -128T775 -103",10754:"555 -250Q420 -250 306 -185T124 -4T56 250Q56 453 193 595T526 749Q528 750 539 750Q554 750 562 749Q688 749 800 687T983 508T1054 250Q1054 112 987 -3T806 -184T555 -250ZM600 664Q591 665 548 665Q414 665 306 583L292 573L423 441L555 310L687 441L818 573L804 583Q714 650 600 664ZM364 118L495 250L364 382L232 513L223 500Q140 391 140 250Q140 107 223 0L232 -13L364 118ZM970 250Q970 389 887 501L878 512Q878 513 861 496T812 447T746 381L615 250L746 118L878 -13L887 0Q970 109 970 250ZM687 59L555 190L423 59L292 -73L306 -83Q416 -166 555 -166T804 -83L818 -73L687 59",10756:"96 750Q103 750 109 748T120 744T127 737T133 730T137 723T139 718V395L140 73L142 60Q159 -43 237 -104T416 -166Q521 -166 597 -103T690 60L692 73L694 718Q708 749 735 749Q765 749 775 720Q777 714 777 398Q777 78 776 71Q766 -51 680 -140Q571 -249 416 -249H411Q261 -249 152 -140Q66 -51 56 71Q55 78 55 398Q55 714 57 720Q60 734 70 740Q80 750 96 750ZM223 276Q223 282 224 287T227 296T232 302T238 308T243 313T250 316L254 319H374V376V406Q374 438 382 454T418 470Q443 467 450 453T458 410V376V319H579Q580 319 583 317T589 313T594 308T600 302T604 295T608 287T609 276Q609 253 587 241Q577 235 513 235H458V178Q458 176 458 166T459 148Q459 84 415 84Q401 84 390 93T375 117Q374 120 374 178V235H319Q317 235 307 235T290 234Q223 234 223 276",10758:"777 -217Q766 -244 745 -249H88Q64 -242 57 -220Q55 -214 55 250T57 720Q60 734 70 740Q80 750 96 750Q127 750 137 720Q139 714 139 274V-166H693V274Q693 714 695 720Q705 749 735 749Q766 749 775 719Q777 713 777 248V-217",10799:"630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29",10815:"28 660Q28 676 31 679T46 683H50Q87 681 182 681Q217 681 247 681T294 682T315 682Q321 682 323 682T328 679T331 673T332 660Q332 643 328 640T304 637Q239 637 231 626Q229 620 229 334V46H520V334Q520 620 518 626Q510 637 445 637Q426 637 422 640T417 660Q417 675 420 678T432 682H435Q437 682 467 682T569 681T671 681T703 682Q714 682 717 679T721 660Q721 643 717 640T693 637Q628 637 620 626Q619 623 619 342Q619 60 620 57Q628 46 693 46Q714 46 717 43T721 23Q721 5 715 1Q713 0 374 0Q36 0 34 1Q28 5 28 23Q28 40 31 43T56 46Q121 46 129 57Q131 63 131 342Q131 620 129 626Q121 637 56 637Q35 637 32 640T28 660",10846:"55 795Q56 806 70 813H540Q554 806 555 795Q555 791 554 788T552 783T549 779T546 777T542 775T539 773H71Q70 773 68 774T65 776T61 779T58 783T56 788T55 795ZM55 601Q56 612 70 619H540Q554 612 555 601Q555 597 554 594T552 589T549 585T546 583T542 581T539 579H71Q70 579 68 580T65 582T61 585T58 589T56 594T55 601ZM75 -97Q67 -97 61 -91T55 -81Q55 -71 169 166T285 410Q295 425 305 425Q311 425 316 422T323 414L325 410Q327 404 441 167T555 -81Q555 -85 549 -91T535 -97T520 -90Q519 -89 506 -61T463 27T411 136L305 358L199 136Q167 71 129 -10Q98 -75 92 -86T75 -97",10877:"674 636Q682 636 688 630T694 615T687 601Q686 600 417 472L151 346L399 228Q687 92 691 87Q694 81 694 76Q694 58 676 56H670L382 192Q92 329 90 331Q83 336 83 348Q84 359 96 365Q104 369 382 500T665 634Q669 636 674 636ZM94 170Q102 172 104 172Q110 171 254 103T535 -30T678 -98Q694 -106 694 -118Q694 -136 676 -138H670L382 -2Q92 135 90 137Q83 142 83 154Q84 164 94 170",10878:"83 616Q83 624 89 630T99 636Q107 636 253 568T543 431T687 361Q694 356 694 346T687 331Q685 329 395 192L107 56H101Q83 58 83 76Q83 77 83 79Q82 86 98 95Q117 105 248 167Q326 204 378 228L626 346L360 472Q291 505 200 548Q112 589 98 597T83 616ZM674 172Q692 172 694 154Q694 142 687 137Q685 135 395 -2L107 -138H101Q83 -136 83 -118Q83 -106 96 -100Q100 -98 380 35T665 170T674 172",10885:"667 761Q669 762 673 762Q682 762 688 756T694 741Q694 731 687 727Q684 724 420 613L156 502L416 392Q476 367 544 338T647 295T682 280Q694 274 694 262Q694 244 676 242Q670 242 524 303T235 425T90 487Q83 493 83 501Q83 514 94 519Q97 520 378 639T667 761ZM55 -23Q55 43 103 90T223 138Q265 138 316 114Q342 100 393 68L443 36Q502 0 554 0Q609 0 650 32T694 109Q694 138 708 138Q710 138 713 136T719 127T722 108Q722 37 673 -9T557 -56Q514 -56 468 -35T387 13T308 60T223 82Q167 82 127 50T83 -27Q81 -56 69 -56Q55 -56 55 -23ZM55 -257Q55 -191 103 -144T223 -96Q265 -96 316 -120Q342 -134 393 -166L443 -198Q502 -234 554 -234Q609 -234 650 -202T694 -125Q694 -96 708 -96Q710 -96 713 -98T719 -107T722 -126Q722 -197 673 -243T557 -290Q514 -290 468 -269T387 -221T308 -174T223 -152Q167 -152 127 -184T83 -261Q80 -290 69 -290Q55 -290 55 -257",10886:"90 727Q83 734 83 743Q83 751 89 756T104 762Q111 760 396 641Q686 518 687 517Q694 512 694 502T687 487Q686 486 543 425T253 303T101 242Q83 244 83 262Q83 274 95 280Q96 280 130 294T232 338T361 392L621 502L357 613Q93 724 90 727ZM55 -23Q55 43 103 90T223 138Q265 138 316 114Q342 100 393 68L443 36Q502 0 554 0Q609 0 650 32T694 109Q694 138 708 138Q710 138 713 136T719 127T722 108Q722 37 673 -9T557 -56Q514 -56 468 -35T387 13T308 60T223 82Q167 82 127 50T83 -27Q81 -56 69 -56Q55 -56 55 -23ZM55 -257Q55 -191 103 -144T223 -96Q265 -96 316 -120Q342 -134 393 -166L443 -198Q502 -234 554 -234Q609 -234 650 -202T694 -125Q694 -96 708 -96Q710 -96 713 -98T719 -107T722 -126Q722 -197 673 -243T557 -290Q514 -290 468 -269T387 -221T308 -174T223 -152Q167 -152 127 -184T83 -261Q80 -290 69 -290Q55 -290 55 -257",10887:"380 497Q445 528 522 564T636 618T673 635Q680 635 686 628T693 615T689 603Q686 599 418 472L151 343L418 215Q686 88 689 83Q693 79 693 72T687 59T675 52Q669 52 381 189T86 332Q82 337 82 344Q82 350 86 355Q91 359 380 497ZM82 -130T82 -124T95 -103H380L431 -54Q476 -6 486 -6Q491 -6 498 -12T505 -27Q505 -28 505 -29T504 -32Q503 -33 498 -38T485 -53T469 -70L438 -103H680Q682 -106 686 -110T691 -116T693 -123Q693 -130 680 -143H398L346 -192Q300 -241 291 -241Q271 -241 271 -221Q271 -209 306 -179L340 -143H95Q82 -130 82 -124",10888:"82 614Q82 620 86 625T94 632T100 635Q106 635 394 498T689 355Q693 349 693 343Q693 338 689 332Q683 327 395 190T100 52Q95 52 89 58T82 72Q82 80 95 88Q114 99 358 215L624 343L358 472Q89 599 86 603Q82 607 82 614ZM82 -130T82 -124T95 -103H380L431 -54Q476 -6 486 -6Q491 -6 498 -12T505 -27Q505 -28 505 -29T504 -32Q503 -33 498 -38T485 -53T469 -70L438 -103H680Q682 -106 686 -110T691 -116T693 -123Q693 -130 680 -143H398L346 -192Q300 -241 291 -241Q271 -241 271 -221Q271 -209 306 -179L340 -143H95Q82 -130 82 -124",10889:"86 512Q93 518 381 639T673 761Q680 761 686 755T693 741Q693 733 688 730Q685 723 419 612L155 501L419 390Q685 277 688 272Q693 269 693 261Q693 254 687 248T675 241Q669 241 381 362T86 490Q74 500 86 512ZM70 -59Q57 -59 57 -24Q57 40 104 87Q116 102 146 118Q186 136 231 136Q232 136 242 135T258 133T276 128T302 118T334 101T377 74Q386 69 396 63T411 53T417 50Q435 87 453 134Q491 223 495 227Q498 230 505 230Q513 230 519 225T526 212Q526 203 491 118T453 30Q453 22 489 10T553 -3Q589 -3 622 14Q653 28 669 50T688 90T694 122T706 136Q718 136 718 114Q718 113 718 109T717 103Q717 31 668 -14T554 -60Q529 -60 499 -50T451 -32T433 -24Q431 -24 404 -90T375 -157Q375 -159 402 -178T473 -218T553 -239Q599 -239 641 -211T691 -130Q694 -99 706 -99T718 -122Q718 -123 718 -127T717 -133Q717 -204 668 -249T559 -295Q512 -295 470 -275T355 -206L322 -290Q313 -310 304 -332T289 -367T282 -382Q277 -387 270 -387Q262 -387 255 -382T248 -368Q248 -361 322 -186Q311 -177 280 -166T222 -155Q189 -155 153 -173Q122 -186 106 -208T87 -248T82 -280T71 -294Q57 -294 57 -259Q57 -195 104 -148Q122 -126 155 -113T220 -99Q245 -99 276 -109T324 -127T342 -135Q397 -2 397 1Q386 10 367 23T302 58T222 80Q175 80 132 52T84 -28Q82 -59 70 -59",10890:"86 730Q81 734 81 740Q81 747 88 754T99 761Q103 761 392 640T688 512Q693 509 693 501T688 490Q682 484 394 363T99 241Q94 241 88 248T82 261Q82 268 86 272Q89 277 355 390L619 501L355 612Q89 723 86 730ZM70 -59Q57 -59 57 -24Q57 40 104 87Q116 102 146 118Q186 136 231 136Q232 136 242 135T258 133T276 128T302 118T334 101T377 74Q386 69 396 63T411 53T417 50Q435 87 453 134Q491 223 495 227Q498 230 505 230Q513 230 519 225T526 212Q526 203 491 118T453 30Q453 22 489 10T553 -3Q589 -3 622 14Q653 28 669 50T688 90T694 122T706 136Q718 136 718 114Q718 113 718 109T717 103Q717 31 668 -14T554 -60Q529 -60 499 -50T451 -32T433 -24Q431 -24 404 -90T375 -157Q375 -159 402 -178T473 -218T553 -239Q599 -239 641 -211T691 -130Q694 -99 706 -99T718 -122Q718 -123 718 -127T717 -133Q717 -204 668 -249T559 -295Q512 -295 470 -275T355 -206L322 -290Q313 -310 304 -332T289 -367T282 -382Q277 -387 270 -387Q262 -387 255 -382T248 -368Q248 -361 322 -186Q311 -177 280 -166T222 -155Q189 -155 153 -173Q122 -186 106 -208T87 -248T82 -280T71 -294Q57 -294 57 -259Q57 -195 104 -148Q122 -126 155 -113T220 -99Q245 -99 276 -109T324 -127T342 -135Q397 -2 397 1Q386 10 367 23T302 58T222 80Q175 80 132 52T84 -28Q82 -59 70 -59",10891:"674 1003Q681 1003 687 999T694 983Q694 973 683 967Q669 959 420 868L162 772L422 676Q683 579 685 577Q694 571 694 560Q694 550 687 546T673 541Q669 542 384 647T93 755Q83 760 83 772Q83 783 91 788Q98 791 383 897T674 1003ZM84 354T84 367T98 387H679Q694 379 694 367Q694 354 679 347H98Q84 354 84 367ZM84 160T84 173T98 193H679Q694 185 694 173Q694 160 679 153H98Q84 160 84 173ZM94 -3Q102 -1 104 -1Q107 -2 392 -107T684 -215Q694 -219 694 -232Q694 -241 687 -247Q686 -248 395 -357Q106 -463 101 -463Q83 -461 83 -443Q83 -431 94 -426Q97 -423 357 -328L615 -232L355 -136Q94 -39 92 -37Q83 -31 83 -21Q83 -9 94 -3",10892:"104 541Q98 541 91 545T83 560Q83 571 92 577Q94 579 355 676L615 772L357 868Q108 959 94 967Q83 973 83 983Q83 989 87 996T104 1003Q109 1002 396 896T687 787Q694 781 694 772Q694 759 684 755Q678 752 393 647T104 541ZM84 367Q84 380 98 387H679Q694 379 694 367Q694 356 680 348L390 347H100Q84 352 84 367ZM84 173Q84 188 100 193H680Q694 183 694 173Q694 160 679 153H98Q84 160 84 173ZM674 -1Q682 -1 688 -6T694 -20Q694 -31 685 -37Q683 -39 422 -136L162 -232L420 -328Q680 -423 683 -426Q694 -431 694 -443Q694 -461 676 -463Q671 -463 382 -357Q91 -248 90 -247Q83 -242 83 -232Q83 -220 93 -215Q667 -1 674 -1",10901:"674 636Q682 636 688 631T694 616Q694 605 687 601Q685 599 395 462L107 326H101Q83 328 83 345Q83 358 96 365Q102 367 382 500T665 634Q671 636 674 636ZM674 442Q692 442 694 424Q694 412 687 407Q686 406 417 278L151 152L399 34Q687 -102 691 -107Q694 -113 694 -118Q694 -136 676 -138H670L382 -2Q92 135 90 137Q83 142 83 154Q84 165 96 171Q104 175 382 306T665 440Q669 442 674 442",10902:"83 616Q83 624 89 630T99 636Q107 636 253 568T543 431T687 361Q694 354 694 346Q694 328 676 326H670L382 462Q317 493 226 535Q119 585 101 595T83 616ZM94 440Q102 442 104 442Q110 441 254 373T535 240T678 172Q679 172 680 171Q694 164 694 153T687 137Q685 135 395 -2L107 -138H101Q83 -136 83 -118Q83 -106 93 -101L128 -84Q163 -68 230 -36T361 26L626 152L360 278Q91 406 90 407Q83 412 83 424Q84 434 94 440",10927:"84 346Q84 359 91 363T117 367Q120 367 126 367T137 366Q388 370 512 430T653 609Q657 636 676 636Q685 635 689 629T694 618V612Q689 566 672 528T626 463T569 417T500 383T435 362T373 346Q379 345 404 339T440 330T477 318T533 296Q592 266 630 223T681 145T694 78Q694 57 674 57Q662 57 657 67T652 92T640 135T606 191Q500 320 137 326H114Q104 326 98 327T88 332T84 346ZM84 -131T84 -118T98 -98H679Q694 -106 694 -118T679 -138H98Q84 -131 84 -118",10928:"84 614Q84 636 102 636Q115 636 119 626T125 600T137 556T171 501Q277 372 640 366H661Q694 366 694 346T661 326H640Q578 325 526 321T415 307T309 280T222 237T156 172T124 83Q122 66 118 62T103 57Q100 57 98 57T95 58T93 59T90 62T85 67Q83 71 83 80Q88 126 105 164T151 229T208 275T277 309T342 330T404 346Q401 347 380 351T345 360T302 373T245 396Q125 455 92 565Q84 599 84 614ZM84 -131T84 -118T98 -98H679Q694 -106 694 -118T679 -138H98Q84 -131 84 -118",10933:"653 734Q653 738 660 745T673 752T686 745T693 723Q672 555 466 485Q390 463 378 463Q373 463 373 461Q373 458 378 458Q390 458 466 436Q562 404 620 350Q682 283 693 198Q693 183 686 176Q681 170 674 170T660 176T653 187Q653 192 652 200T646 228T631 265T602 307T555 350Q435 431 151 441H95Q82 454 82 460T95 481H151Q165 482 197 483T238 485Q427 500 528 554T649 707Q653 729 653 734ZM82 33Q82 37 83 40T89 47T95 54H473L520 105Q569 156 571 156Q573 157 578 157Q586 157 592 151T598 136Q598 130 562 92L526 56L604 54H682Q693 43 693 35Q693 31 692 28T686 21T680 14H489L342 -139L513 -142H682Q693 -148 693 -160Q693 -167 680 -182H304L258 -230Q248 -240 237 -251T221 -268T211 -278T203 -284T197 -286Q189 -286 184 -280T178 -264Q178 -257 213 -219L249 -182H171L93 -179L86 -175Q82 -170 82 -163Q82 -155 95 -142H289L360 -64L433 14H262L93 16Q82 23 82 33",10934:"693 466T693 460T680 441H624Q608 439 577 438T538 436Q349 421 248 367T126 214Q122 192 122 187Q122 183 116 177T102 170Q95 170 89 176Q82 183 82 198Q93 283 155 350Q213 404 309 436Q385 458 398 458Q402 458 402 461Q402 463 398 463Q385 463 309 485Q103 555 82 723Q82 738 89 745T102 752T115 745T122 734Q122 721 126 701T155 640T220 572Q340 490 624 481H680Q693 466 693 460ZM82 33Q82 37 83 40T89 47T95 54H473L520 105Q569 156 571 156Q573 157 578 157Q586 157 592 151T598 136Q598 130 562 92L526 56L604 54H682Q693 43 693 35Q693 31 692 28T686 21T680 14H489L342 -139L513 -142H682Q693 -148 693 -160Q693 -167 680 -182H304L258 -230Q248 -240 237 -251T221 -268T211 -278T203 -284T197 -286Q189 -286 184 -280T178 -264Q178 -257 213 -219L249 -182H171L93 -179L86 -175Q82 -170 82 -163Q82 -155 95 -142H289L360 -64L433 14H262L93 16Q82 23 82 33",10935:"82 494T82 501T95 521H171Q405 527 511 569Q630 618 651 732Q652 734 653 740T655 748T658 754T663 759T672 761L686 754Q693 747 693 734Q684 668 648 623Q627 591 573 557T442 507L417 501Q428 496 442 494Q520 478 573 444T648 378Q684 333 693 267Q693 254 686 247Q673 234 659 245Q657 247 651 269Q630 383 511 432Q406 474 171 481H95Q82 494 82 501ZM70 -59Q57 -59 57 -26Q57 30 90 73T177 132Q191 136 226 136Q228 136 239 136T253 135T267 132T287 125T311 113T346 95T391 67Q462 20 502 5Q519 1 553 1Q586 1 602 5Q641 18 664 45T691 107Q694 136 704 136Q717 136 717 115V105Q717 39 671 -9T554 -58Q518 -58 481 -43T382 14Q302 63 273 74Q255 78 222 78Q188 78 173 74Q90 46 84 -28Q82 -59 70 -59ZM71 -294Q57 -294 57 -262Q57 -205 90 -162T177 -104Q191 -99 226 -99Q266 -103 277 -106Q310 -119 391 -168Q455 -212 502 -231Q519 -235 553 -235Q586 -235 602 -231Q640 -218 661 -195T686 -151T693 -115T704 -99Q717 -99 717 -121V-131Q717 -198 671 -246T556 -294Q519 -294 482 -279T382 -222Q307 -175 273 -162Q255 -157 222 -157Q188 -157 173 -162Q133 -175 110 -201T84 -264Q82 -294 71 -294",10936:"693 501Q693 493 679 481H604Q369 474 264 432Q143 382 124 269Q116 246 115 245Q101 234 88 247Q82 254 82 267Q89 329 126 378Q147 410 201 444T333 494L357 501Q354 502 340 505T318 510T295 516T269 525T243 535T215 548T188 565Q142 599 126 623Q89 672 82 734Q82 761 102 761L115 756Q116 755 124 732Q143 619 264 569Q371 527 604 521H679Q693 507 693 501ZM70 -59Q57 -59 57 -26Q57 30 90 73T177 132Q191 136 226 136Q228 136 239 136T253 135T267 132T287 125T311 113T346 95T391 67Q462 20 502 5Q519 1 553 1Q586 1 602 5Q641 18 664 45T691 107Q694 136 704 136Q717 136 717 115V105Q717 39 671 -9T554 -58Q518 -58 481 -43T382 14Q302 63 273 74Q255 78 222 78Q188 78 173 74Q90 46 84 -28Q82 -59 70 -59ZM71 -294Q57 -294 57 -262Q57 -205 90 -162T177 -104Q191 -99 226 -99Q266 -103 277 -106Q310 -119 391 -168Q455 -212 502 -231Q519 -235 553 -235Q586 -235 602 -231Q640 -218 661 -195T686 -151T693 -115T704 -99Q717 -99 717 -121V-131Q717 -198 671 -246T556 -294Q519 -294 482 -279T382 -222Q307 -175 273 -162Q255 -157 222 -157Q188 -157 173 -162Q133 -175 110 -201T84 -264Q82 -294 71 -294",10937:"82 494T82 501T95 521H171Q256 523 317 528T441 548T543 584T613 644T651 732Q652 734 653 740T655 748T658 754T663 759T672 761L686 754Q693 747 693 734Q686 686 664 647T615 586T548 545T482 518T417 501Q419 500 451 493T517 471T590 434T657 367T693 267Q693 241 673 241Q664 241 659 245Q656 249 650 273T635 323T593 380T511 432Q406 474 171 481H95Q82 494 82 501ZM57 -26Q57 39 101 87T219 136Q254 136 277 130Q320 114 382 72Q419 50 424 45Q426 45 459 110Q496 178 497 179Q500 180 504 180Q509 180 517 175T526 161Q526 158 495 90L462 25Q462 21 502 5Q519 1 553 1Q586 1 602 5Q641 18 664 45T691 107Q694 136 706 136T718 115Q718 114 718 111T717 105Q717 39 671 -9T554 -58L459 -33Q450 -29 444 -27T437 -26L371 -155L391 -168Q485 -235 538 -235H553Q586 -235 602 -230Q683 -204 691 -128Q694 -99 706 -99T718 -120Q718 -121 718 -124T717 -130Q717 -199 670 -246T557 -294T393 -228Q353 -205 351 -201Q348 -201 315 -266Q294 -310 285 -323T268 -337Q259 -337 254 -331T248 -317Q248 -305 282 -246L313 -181Q313 -177 273 -161Q255 -157 222 -157Q188 -157 173 -161Q134 -174 113 -198T88 -242T82 -278T71 -294Q57 -294 57 -261Q57 -204 91 -161T179 -104Q195 -99 228 -99Q274 -102 315 -124Q337 -132 337 -130L404 -1L384 12Q319 58 273 74Q255 79 222 79Q188 79 173 74Q133 61 112 37T88 -7T82 -43T70 -59Q57 -59 57 -26",10938:"693 501Q693 493 679 481H604Q548 479 509 477T418 469T331 454T257 429T194 392T150 340T124 270Q117 247 115 245Q101 236 88 247Q82 254 82 267Q89 330 126 379Q147 411 202 444T333 494L357 501Q239 531 188 565Q142 599 126 623Q89 672 82 734Q82 761 102 761L115 756Q116 755 124 732Q133 678 166 640T241 579T349 544T470 527T604 521H679Q693 507 693 501ZM57 -26Q57 39 101 87T219 136Q254 136 277 130Q320 114 382 72Q419 50 424 45Q426 45 459 110Q496 178 497 179Q500 180 504 180Q509 180 517 175T526 161Q526 158 495 90L462 25Q462 21 502 5Q519 1 553 1Q586 1 602 5Q641 18 664 45T691 107Q694 136 706 136T718 115Q718 114 718 111T717 105Q717 39 671 -9T554 -58L459 -33Q450 -29 444 -27T437 -26L371 -155L391 -168Q485 -235 538 -235H553Q586 -235 602 -230Q683 -204 691 -128Q694 -99 706 -99T718 -120Q718 -121 718 -124T717 -130Q717 -199 670 -246T557 -294T393 -228Q353 -205 351 -201Q348 -201 315 -266Q294 -310 285 -323T268 -337Q259 -337 254 -331T248 -317Q248 -305 282 -246L313 -181Q313 -177 273 -161Q255 -157 222 -157Q188 -157 173 -161Q134 -174 113 -198T88 -242T82 -278T71 -294Q57 -294 57 -261Q57 -204 91 -161T179 -104Q195 -99 228 -99Q274 -102 315 -124Q337 -132 337 -130L404 -1L384 12Q319 58 273 74Q255 79 222 79Q188 79 173 74Q133 61 112 37T88 -7T82 -43T70 -59Q57 -59 57 -26",10949:"84 463Q84 585 166 663T360 752Q361 752 370 752T395 752T430 752T475 753T524 753H679Q694 746 694 733Q694 724 681 714L522 713H470H441Q366 713 338 709T266 685Q244 674 224 659T179 617T139 550T124 463V458Q124 370 185 302Q244 238 328 220Q348 215 366 215T522 213H681Q694 203 694 193Q694 180 679 173H526Q510 173 480 173T434 172Q350 172 289 188T172 258Q84 340 84 463ZM84 -14T84 -1T98 19H679Q694 11 694 -1Q694 -14 679 -21H98Q84 -14 84 -1ZM84 -208T84 -195T98 -175H679Q694 -183 694 -195Q694 -208 679 -215H98Q84 -208 84 -195",10950:"83 733Q83 746 98 753H251Q267 753 297 753T343 754Q427 754 488 738T605 668Q693 587 693 463Q693 378 650 312T545 213T415 174Q407 173 251 173H98Q83 180 83 193Q83 203 96 213H255H308H337Q412 213 439 217T512 241Q533 252 553 267T599 309T639 376T654 463Q654 554 592 624Q557 662 512 685Q468 704 439 708T335 713H306H255L96 714Q83 724 83 733ZM84 -14T84 -1T98 19H679Q694 11 694 -1Q694 -14 679 -21H98Q84 -14 84 -1ZM84 -208T84 -195T98 -175H679Q694 -183 694 -195Q694 -208 679 -215H98Q84 -208 84 -195",10955:"693 221Q693 214 680 201H524Q398 201 367 202T309 212Q236 230 180 280T98 398Q84 438 84 492T98 585Q126 663 193 716T346 781Q347 781 373 781T440 782T520 783H680Q682 780 686 776T691 770T693 763T680 743H526Q364 743 353 741Q279 730 221 687T138 578Q124 540 124 492T138 405Q163 340 221 297T353 243Q364 241 526 241H680Q682 238 686 234T691 228T693 221ZM82 -48T82 -41T95 -19H462L513 41L569 105Q574 110 582 110T596 104T602 90Q602 87 600 83Q600 77 555 30L515 -17L600 -19H682Q693 -30 693 -38T680 -59H480L415 -137L349 -213L515 -215H682Q693 -226 693 -233T680 -255H313L260 -317Q224 -360 212 -372T192 -385Q184 -385 179 -377T173 -362Q174 -361 218 -306L260 -255H178L93 -253L86 -248Q82 -243 82 -235Q82 -226 93 -215H195L295 -213L362 -137L426 -59H260L93 -57L86 -53Q82 -48 82 -41",10956:"82 759T82 763T83 769T89 776T95 783H251Q378 783 409 782T469 772Q540 753 596 703T678 585Q691 546 691 492T678 398Q649 320 581 267T426 203Q415 201 251 201H95Q82 214 82 221Q82 225 83 227T89 234T95 241H249Q411 241 422 243Q496 253 554 296T638 405Q651 444 651 492Q651 539 638 578Q613 643 555 686T422 741Q411 743 249 743H95Q82 759 82 763ZM82 -48T82 -41T95 -19H462L513 41L569 105Q574 110 582 110T596 104T602 90Q602 87 600 83Q600 77 555 30L515 -17L600 -19H682Q693 -30 693 -38T680 -59H480L415 -137L349 -213L515 -215H682Q693 -226 693 -233T680 -255H313L260 -317Q224 -360 212 -372T192 -385Q184 -385 179 -377T173 -362Q174 -361 218 -306L260 -255H178L93 -253L86 -248Q82 -243 82 -235Q82 -226 93 -215H195L295 -213L362 -137L426 -59H260L93 -57L86 -53Q82 -48 82 -41",12296:"333 -232Q332 -239 327 -244T313 -250Q303 -250 296 -240Q293 -233 202 6T110 250T201 494T296 740Q299 745 306 749L309 750Q312 750 313 750Q331 750 333 732Q333 727 243 489Q152 252 152 250T243 11Q333 -227 333 -232",12297:"55 732Q56 739 61 744T75 750Q85 750 92 740Q95 733 186 494T278 250T187 6T92 -240Q85 -250 75 -250Q67 -250 62 -245T55 -232Q55 -227 145 11Q236 248 236 250T145 489Q55 727 55 732",57350:"91 417Q104 430 111 430T131 417V301L171 341Q201 373 207 378T220 384Q227 384 233 377T240 366Q240 357 187 299L131 244V-10Q116 -23 111 -23T91 -10V201L49 157Q20 127 14 121T0 115Q-8 115 -14 121T-20 132Q-20 139 17 178Q29 191 36 199L91 257V417",57351:"56 417Q68 431 76 431L89 426L96 419V317L98 215L193 273L291 330V375L293 419Q301 431 311 431Q331 431 331 388L333 355L356 370Q381 384 388 384Q394 384 400 377T407 363Q407 354 367 328L331 308V-10Q316 -23 310 -23Q300 -23 293 -12L291 135V284L98 168L96 77V-12Q84 -24 76 -24L62 -19L58 -12L56 66V144L31 128Q5 114 -2 114Q-8 114 -14 121T-20 136Q-20 142 -14 147T20 170L56 190V417",57352:"477 261Q477 257 473 256T455 253T417 251T348 250H235L155 -77L146 -82Q137 -85 109 -85Q55 -85 55 -77L139 261Q224 596 226 598Q229 603 239 603Q240 603 254 603T290 603T341 604T405 605T477 605Q656 603 687 602T719 596Q719 589 692 588T513 585H319L282 427L242 272Q242 270 351 270Q388 270 410 270T444 269T460 267T469 265T477 261",57353:"228 325Q170 322 156 316T127 309Q108 309 104 314Q99 319 99 322T108 341Q125 376 171 400T268 425H271Q302 425 319 396Q328 377 328 358Q328 332 324 314Q311 270 286 221Q274 194 274 192H275Q339 234 484 325T639 421Q669 434 691 434T723 425T734 406Q734 394 719 381Q715 376 644 330L575 287L566 267Q543 233 526 176Q520 160 515 143T508 115T506 105Q506 103 533 103Q585 103 607 110T641 118Q670 118 670 107Q670 100 661 85Q643 50 598 27T504 3Q465 3 450 36Q441 51 441 73Q441 84 444 96Q452 146 484 205L497 236L324 125Q143 12 135 10Q103 -6 77 -6Q61 -6 49 2T37 21Q37 36 49 46T124 96L195 141L204 156Q219 179 243 248T264 323Q264 325 228 325",57356:"86 472Q93 477 381 614T673 752Q680 752 686 746T693 732T689 721Q686 715 418 590L151 461L418 332Q684 207 689 201Q693 195 693 190Q693 183 687 177T675 170Q668 170 380 307T86 450Q82 454 82 461Q82 467 86 472ZM369 101V126Q369 156 382 156H384Q385 157 386 157Q409 157 409 115V98V54H680Q693 39 693 34T680 14H409V-142H680Q693 -155 693 -162Q693 -167 680 -182H409V-273Q396 -284 388 -284Q382 -284 369 -275V-182H95Q82 -167 82 -162Q82 -155 95 -142H369V14H95Q93 17 89 21T84 27T82 34T83 40T89 47T95 54H369V101",57357:"89 745Q95 752 100 752Q106 752 394 615T689 472Q693 468 693 461T689 450Q684 445 396 308T100 170Q95 170 89 176T82 190Q82 195 86 201Q91 208 358 332L624 461L358 590Q90 715 86 721Q82 725 82 731Q82 739 89 745ZM369 101V126Q369 156 382 156H384Q385 157 386 157Q409 157 409 115V98V54H680Q693 39 693 34T680 14H409V-142H680Q693 -155 693 -162Q693 -167 680 -182H409V-273Q396 -284 388 -284Q382 -284 369 -275V-182H95Q82 -167 82 -162Q82 -155 95 -142H369V14H95Q93 17 89 21T84 27T82 34T83 40T89 47T95 54H369V101",57358:"97 172Q82 172 82 190Q82 197 86 201Q94 209 173 246T327 319T402 357Q405 360 434 448T462 539L278 628Q96 713 86 721Q82 725 82 732T88 745T102 752Q103 752 125 742T198 709T293 666Q342 642 385 622T453 590T478 579Q479 579 506 659T562 824T598 915Q602 919 609 919T622 913T629 901Q629 898 571 728Q546 656 531 608T518 559Q555 539 602 519Q664 488 679 479T694 461Q694 457 689 450Q680 443 616 413T494 356T435 326L389 190L342 57L513 55H682Q694 43 694 34Q694 28 689 21L682 17L506 15H329L322 -8Q320 -13 310 -41T295 -85L275 -141H680Q682 -143 684 -146T688 -151T691 -156T693 -162Q693 -172 682 -179L473 -181H262L220 -303Q192 -388 185 -404T166 -421Q160 -421 153 -415T146 -403Q146 -400 179 -302T220 -185Q220 -181 158 -181L93 -179L86 -174Q82 -169 82 -161Q82 -152 93 -141H164L233 -139L260 -63L286 15H189L93 17L86 21Q82 26 82 34Q82 44 93 55H198L300 57L342 179Q350 204 361 238T378 286T382 301L246 237Q111 172 97 172ZM624 461Q621 464 560 492Q512 518 503 518Q500 518 500 517Q499 513 488 479T465 413T453 379L624 461",57359:"97 54Q82 54 82 72Q82 79 86 84Q95 91 222 153L351 215L398 324L442 433L258 519Q95 597 87 604Q82 608 82 615T88 628T102 635Q107 635 424 484L458 468L524 630Q593 789 597 795Q601 801 609 801Q616 801 622 795T629 781L562 615L493 450L589 406Q665 371 679 362T694 344Q694 339 693 337T677 326T631 302T538 257Q504 241 465 223T406 195T386 186Q383 185 344 92T306 -3L486 81Q662 168 673 168Q680 168 686 162T693 148T689 137Q688 136 482 35L280 -59L233 -176Q184 -291 178 -299Q172 -303 166 -303T153 -297T146 -283Q146 -279 185 -186T224 -90Q225 -88 223 -88Q219 -88 193 -101Q109 -143 98 -143Q82 -138 82 -122Q82 -116 85 -113T108 -98T171 -67L249 -30L289 61Q297 81 307 107T321 144T326 157L218 106Q109 54 97 54ZM553 379Q480 412 480 415Q479 415 460 372T423 285T406 241Q408 240 516 291T624 344L553 379",57360:"102 168Q103 168 151 146T247 102T295 81Q299 85 322 144T344 206L218 268Q153 297 123 313T87 333T82 344T86 355Q104 369 291 455Q491 552 491 553L542 673Q581 767 590 784T609 801Q616 801 622 795T629 781Q629 773 586 677Q546 581 546 577L609 606Q669 635 673 635Q680 635 686 629T693 615Q693 610 692 608T670 593T604 561L524 521L400 226L542 157Q617 123 649 107T687 85T694 72Q694 66 690 60T679 54Q665 54 526 119Q394 186 386 186Q385 186 342 88L331 61L509 -23Q680 -105 688 -111Q693 -115 693 -122T688 -135T675 -141H673Q664 -141 491 -59Q320 21 316 21H315L249 -136Q183 -293 178 -299Q172 -303 166 -303T153 -297T146 -283Q146 -282 154 -261T181 -197T213 -119L280 41Q280 46 186 86Q157 101 121 119Q92 133 87 136T82 148Q82 155 88 161T102 168ZM418 370L466 495Q464 495 308 420T151 344T204 317T311 267T364 244Q364 247 418 370",57361:"82 34Q82 44 93 55H198L300 57L342 179Q351 207 362 238T378 286T384 303T238 377Q109 435 86 450Q82 454 82 460T86 472Q90 476 302 579L511 679Q512 679 553 795Q569 842 577 866T592 903T600 917T608 919Q615 919 622 912T629 901Q629 899 595 799Q589 777 581 753T569 717T564 703L618 728Q666 752 673 752T686 746T693 732Q693 723 683 717T615 683L546 650L491 488Q464 410 450 368T438 326Q493 297 562 266Q660 219 677 209T694 190Q694 183 690 177T678 171Q664 171 546 228L424 286Q422 286 382 172L342 57L513 55H682Q694 43 694 34Q694 28 689 21L682 17L506 15H329L322 -8Q320 -13 310 -41T295 -85L275 -141H680Q682 -143 684 -146T688 -151T691 -156T693 -162Q693 -172 682 -179L473 -181H262L220 -303Q192 -388 185 -404T166 -421Q160 -421 153 -415T146 -403Q146 -400 179 -302T220 -185Q220 -181 158 -181L93 -179L86 -174Q82 -169 82 -161Q82 -152 93 -141H164L233 -139L260 -63L286 15H189L93 17L86 21Q82 26 82 34ZM495 623Q495 626 493 626T321 544T151 461L398 343Q399 343 405 360T423 415T446 483Q457 513 469 551T488 606T495 623",57366:"82 -6Q82 1 95 14H262L295 94Q331 171 331 174Q324 175 312 178T267 194T206 227T146 283T98 368Q84 406 84 461T98 554Q126 632 194 685T349 750Q360 752 480 752H591L604 783Q620 819 624 821Q631 828 640 828Q653 825 658 810Q658 808 646 781L635 754Q635 752 658 752Q680 752 686 746Q693 739 693 732Q693 728 692 726T686 719T680 712H615L506 466Q479 407 451 344T408 248T393 214Q393 210 535 210H680Q693 194 693 190T680 170H373L340 92L304 14H680Q693 1 693 -6Q693 -11 680 -26H286L253 -103L218 -179L451 -181H682Q694 -193 694 -201Q694 -212 682 -219L440 -221H200L178 -270Q160 -309 154 -319T139 -330Q122 -330 118 -312L155 -223Q155 -221 126 -221H95Q82 -206 82 -201T95 -181H175L206 -108Q237 -35 242 -30Q242 -26 169 -26H95Q82 -11 82 -6ZM571 710Q571 712 469 712Q443 712 416 712T371 711T351 710Q279 700 221 656T138 548Q124 508 124 461T138 374Q186 245 351 212L460 459Q571 709 571 710",57367:"82 -14T82 -7T95 15H431L529 170H435Q341 170 333 175Q149 218 98 368Q84 406 84 461Q84 515 98 555Q126 633 193 686T346 750Q347 750 373 750T440 751T520 752H680Q693 739 693 732Q693 727 680 712H526Q364 712 353 710Q268 700 207 646T126 512Q123 496 123 461T126 410Q141 350 180 304T280 232Q312 217 344 214T464 210H555L589 261Q613 301 620 311T635 321Q644 321 650 315T657 301Q657 296 651 286T630 252T604 212Q604 210 642 210H680Q693 197 693 190Q693 186 692 184T686 177T680 170H578L526 92L478 17L580 15H682Q693 4 693 -4T680 -25H451L353 -179L518 -181H682Q694 -193 694 -201Q694 -211 682 -219L504 -221H326L293 -272Q257 -332 246 -332Q238 -332 232 -326T225 -313Q225 -310 226 -308Q226 -305 251 -265T278 -223Q278 -221 186 -221H95Q93 -218 89 -214T84 -208T82 -201T95 -181H306L404 -25H249L93 -23L86 -19Q82 -14 82 -7",57368:"82 732Q82 739 95 752H251H348Q420 752 460 744T551 708Q566 697 566 701Q618 815 624 821Q631 828 640 828Q653 825 658 810L600 677Q600 671 615 656T653 605T689 517Q692 496 692 461T689 406Q668 325 615 266Q572 221 513 196T391 170H373L340 92L304 14H680Q693 1 693 -6Q693 -11 680 -26H286L253 -103L218 -179L451 -181H682Q694 -193 694 -201Q694 -212 682 -219L440 -221H200L178 -270Q160 -309 154 -319T139 -330Q122 -330 118 -312L155 -223Q155 -221 126 -221H95Q82 -206 82 -201T95 -181H175L206 -108Q237 -35 242 -30Q242 -26 169 -26H95Q82 -11 82 -6Q82 1 95 14H262L295 92L331 170H95Q93 172 91 175T87 180T84 185T82 191Q82 199 93 210H220L349 212L549 659Q507 692 462 702T338 712H249H95Q82 727 82 732ZM652 473Q652 513 636 552T603 611T582 632Q581 632 487 422T393 210Q424 210 460 220T535 253T605 316T649 410Q652 427 652 461V473",57369:"82 732Q82 739 95 752H251Q415 752 426 750Q539 736 615 657Q667 599 689 517Q692 496 692 461T689 406Q668 325 615 266Q522 170 382 170H355L326 95Q319 80 311 59T298 28T293 17Q293 15 486 15H680Q693 0 693 -6T680 -25H275L213 -179L449 -181H682Q693 -192 693 -199T680 -221H198L178 -270Q153 -333 139 -333Q132 -333 126 -327T119 -314T135 -266T153 -223Q153 -221 124 -221H95Q82 -207 82 -201T95 -181H171L233 -25H162L93 -23L86 -19Q82 -14 82 -7T95 15H251L313 170H202L93 172L86 177Q82 182 82 190Q82 199 93 210H211L329 212L349 261Q366 301 372 311T386 321Q392 321 399 315T407 302Q407 295 390 254T373 210Q374 209 377 209Q412 209 444 217Q512 231 564 273T638 377Q651 414 651 461Q651 509 638 548Q613 613 555 656T422 710Q411 712 249 712H95Q82 727 82 732",57370:"693 -115T693 -122T680 -144H315L269 -199Q221 -255 213 -255H212Q203 -255 197 -248T193 -231Q195 -225 229 -184L262 -144H186L113 -142L106 -137Q102 -130 102 -125Q102 -119 115 -104H298L426 52H386Q342 54 309 63Q236 79 180 129T98 249Q84 289 84 343Q84 398 98 436Q126 514 193 567T346 632Q347 632 373 632T440 633T520 634H680Q682 631 686 627T691 621T693 614T680 594H526Q364 594 353 592Q268 581 207 528T126 394Q123 378 123 343T126 292Q141 231 181 185T280 114Q329 92 415 92H462L506 147Q554 203 562 203H563Q572 203 578 196T582 178Q579 173 546 132L513 94L598 92H682Q693 81 693 73T680 52H480L349 -102L515 -104H682Q693 -115 693 -122",57371:"82 610T82 614T83 620T89 627T95 634H251Q378 634 409 633T469 623Q540 604 596 554T678 436Q691 397 691 343T678 249Q653 181 597 131T469 63Q427 52 362 52H315L213 -102L438 -104H662Q673 -115 673 -123Q673 -129 660 -144H186L151 -197Q114 -250 109 -253Q106 -254 104 -254Q100 -254 98 -253Q91 -253 87 -248T82 -235Q82 -230 109 -186L138 -144H115Q82 -144 82 -125Q82 -119 95 -104H166L266 49Q266 52 182 52H95Q82 65 82 72Q82 76 83 78T89 85T95 92H295L329 143Q365 195 369 198Q372 203 380 203Q385 203 391 197T398 185Q398 184 398 184L399 182Q399 175 369 129L344 94Q344 92 376 92Q402 92 422 94Q496 104 554 147T638 256Q651 295 651 343Q651 390 638 429Q613 494 555 537T422 592Q411 594 249 594H95Q82 610 82 614",119808:"296 0Q278 3 164 3Q58 3 49 0H40V62H92Q144 62 144 64Q388 682 397 689Q403 698 434 698Q463 698 471 689Q475 686 538 530T663 218L724 64Q724 62 776 62H828V0H817Q796 3 658 3Q509 3 485 0H472V62H517Q561 62 561 63L517 175H262L240 120Q218 65 217 64Q217 62 261 62H306V0H296ZM390 237L492 238L440 365Q390 491 388 491Q287 239 287 237H390",119809:"720 510Q720 476 704 448T665 404T619 377T580 362L564 359L583 356Q602 353 632 342T690 312Q712 292 725 276Q752 235 752 189V183Q752 160 741 125Q698 18 547 2Q543 1 288 0H39V62H147V624H39V686H264H409Q502 686 542 681T624 655Q720 607 720 510ZM563 513Q563 553 548 578T518 611T486 622Q479 624 385 624H293V382H375Q458 383 467 385Q563 405 563 513ZM590 192Q590 307 505 329Q504 330 503 330L398 331H293V62H391H400H444Q496 62 528 75T580 131Q590 155 590 192",119810:"64 343Q64 502 174 599T468 697Q502 697 533 691T586 674T623 655T647 639T657 632L694 663Q703 670 711 677T723 687T730 692T735 695T740 696T746 697Q759 697 762 692T766 668V627V489V449Q766 428 762 424T742 419H732H720Q699 419 697 436Q690 498 657 545Q611 618 532 632Q522 634 496 634Q356 634 286 553Q232 488 232 343T286 133Q355 52 497 52Q597 52 650 112T704 237Q704 248 709 251T729 254H735Q750 254 755 253T763 248T766 234Q766 136 680 63T469 -11Q285 -11 175 86T64 343",119811:"39 624V686H270H310H408Q500 686 545 680T638 649Q768 584 805 438Q817 388 817 338Q817 171 702 75Q628 17 515 2Q504 1 270 0H39V62H147V624H39ZM655 337Q655 370 655 390T650 442T639 494T616 540T580 580T526 607T451 623Q443 624 368 624H298V62H377H387H407Q445 62 472 65T540 83T606 129Q629 156 640 195T653 262T655 337",119812:"723 286Q721 284 700 145T677 3V0H39V62H147V618H39V680H660V676Q662 670 675 552T691 428V424H629V428Q629 429 627 448T618 494T601 541Q574 593 527 605T382 618H374H304V384H336Q338 384 347 384T361 384T376 386T392 390T407 397T421 407T432 423Q442 444 443 482V501H505V205H443V224Q442 258 435 278T411 307T380 318T336 322H304V62H375H394Q429 62 449 62T497 66T541 76T577 95T609 126T632 170T651 232Q661 287 661 289H723V286",119813:"425 0L228 3Q63 3 51 0H39V62H147V618H39V680H644V676Q647 670 659 552T675 428V424H613Q613 433 605 477Q599 511 589 535T562 574T530 599T488 612T441 617T387 618H368H304V371H333Q389 373 411 390T437 468V488H499V192H437V212Q436 244 430 263T408 292T378 305T333 309H304V62H439V0H425",119814:"465 -10Q281 -10 173 88T64 343Q64 413 85 471T143 568T217 631T298 670Q371 697 449 697Q452 697 459 697T470 696Q502 696 531 690T582 675T618 658T644 641T656 632L732 695Q734 697 745 697Q758 697 761 692T765 668V627V489V449Q765 428 761 424T741 419H731H724Q705 419 702 422T695 444Q683 520 631 577T495 635Q364 635 295 563Q261 528 247 477T232 343Q232 296 236 260T256 185T296 120T366 76T472 52Q481 51 498 51Q544 51 573 67T607 108Q608 111 608 164V214H464V276H479Q506 273 680 273Q816 273 834 276H845V214H765V113V51Q765 16 763 8T750 0Q742 2 709 16T658 40L648 46Q592 -10 465 -10",119815:"400 0Q376 3 226 3Q75 3 51 0H39V62H147V624H39V686H51Q75 683 226 683Q376 683 400 686H412V624H304V388H595V624H487V686H499Q523 683 673 683Q824 683 848 686H860V624H752V62H860V0H848Q824 3 674 3Q523 3 499 0H487V62H595V326H304V62H412V0H400",119816:"397 0Q370 3 218 3Q65 3 38 0H25V62H139V624H25V686H38Q65 683 218 683Q370 683 397 686H410V624H296V62H410V0H397",119817:"174 114Q174 96 169 82T159 63T144 47L155 45Q183 40 203 40Q271 40 290 104Q294 118 294 150T295 380V624H154V686H169Q196 683 365 683Q499 683 517 686H527V624H446V379Q446 183 446 153T441 108Q413 32 315 2Q266 -11 208 -11Q160 -11 118 -2T42 37T8 114V122Q8 150 30 174T91 198T152 174T174 122V114",119818:"400 0Q376 3 226 3Q75 3 51 0H39V62H147V624H39V686H51Q75 683 226 683Q376 683 400 686H412V624H304V338L472 483L634 624H565V686H576Q597 683 728 683Q814 683 829 686H836V624H730L614 524Q507 432 497 422Q496 422 498 418T514 395T553 342T627 241L759 63L805 62H852V0H842Q830 3 701 3Q550 3 526 0H513V62H549Q584 62 584 63Q583 65 486 196T388 328L304 256V62H412V0H400",119819:"643 285Q641 280 629 148T612 4V0H39V62H147V624H39V686H51Q75 683 228 683Q415 685 425 686H439V624H304V62H352H378Q492 62 539 138Q551 156 558 178T569 214T576 255T581 289H643V285",119820:"314 0Q296 3 181 3T48 0H39V62H147V624H39V686H305Q316 679 323 667Q330 653 434 414L546 157L658 414Q766 662 773 674Q778 681 788 686H1052V624H944V62H1052V0H1040Q1016 3 874 3T708 0H696V62H804V341L803 618L786 580Q770 543 735 462T671 315Q540 13 536 9Q528 1 507 1Q485 1 477 9Q472 14 408 162T281 457T217 603Q215 603 215 334V62H323V0H314",119821:"314 0Q296 3 181 3T48 0H39V62H147V624H39V686H171H265Q288 686 297 686T309 684T315 679Q317 676 500 455T684 233V624H576V686H585Q603 683 718 683T851 686H860V624H752V319Q752 15 750 11Q747 4 742 2T718 0H712Q708 0 706 0T700 0T696 1T693 2T690 4T687 7T684 11T679 16T674 23Q671 27 437 311L215 579V62H323V0H314",119822:"64 339Q64 431 96 502T182 614T295 675T420 696Q469 696 481 695Q620 680 709 589T798 339Q798 173 697 82T432 -10Q262 -10 163 85T64 339ZM625 454Q618 502 600 538T562 593T515 624T469 639T431 642Q331 642 276 563Q232 493 232 353Q232 315 234 285T244 216T267 148T308 94T372 56Q405 46 432 46Q517 46 567 106T627 267Q631 299 631 353Q631 418 625 454",119823:"400 0Q376 3 226 3Q75 3 51 0H39V62H147V624H39V686H253Q435 686 470 685T536 678Q585 668 621 648T675 605T705 557T718 514T721 483T718 451T704 409T673 362T616 322T530 293Q500 288 399 287H304V62H412V0H400ZM553 475Q553 554 537 582T459 622Q451 623 373 624H298V343H372Q457 344 480 350Q527 362 540 390T553 475",119824:"64 339Q64 431 96 502T182 614T295 675T420 696Q469 696 481 695Q620 680 709 589T798 339Q798 255 768 184Q720 77 611 26L600 21Q635 -26 682 -26H696Q769 -26 769 0Q769 7 774 12T787 18Q805 18 805 -7V-13Q803 -64 785 -106T737 -171Q720 -183 697 -191Q687 -193 668 -193Q636 -193 613 -182T575 -144T552 -94T532 -27Q531 -23 530 -16T528 -6T526 -3L512 -5Q499 -7 477 -8T431 -10Q393 -10 382 -9Q238 8 151 97T64 339ZM326 80Q326 113 356 138T430 163Q492 163 542 100L553 86Q554 85 561 91T578 108Q637 179 637 330Q637 430 619 498T548 604Q500 641 425 641Q408 641 390 637T347 623T299 590T259 535Q226 469 226 338Q226 244 246 180T318 79L325 74Q326 74 326 80ZM506 58Q480 112 433 112Q412 112 395 104T378 77Q378 44 431 44Q480 44 506 58",119825:"394 0Q370 3 222 3Q75 3 51 0H39V62H147V624H39V686H234Q256 686 299 686T362 687Q479 687 554 669T681 593Q716 550 716 497Q716 390 568 338Q569 337 572 336T577 332Q605 317 623 300T650 258T662 218T668 172Q678 98 689 76Q707 40 748 40Q770 40 780 54T795 88T801 111Q805 117 827 117H831Q846 117 852 113T858 92Q857 78 852 63T834 30T797 1T739 -11Q630 -11 580 12T511 87Q506 104 506 168Q506 170 506 178T507 194Q507 289 438 313Q424 318 356 318H298V62H406V0H394ZM366 369Q459 370 490 381Q548 402 548 476V498V517Q548 578 513 600Q479 624 392 624H358H298V369H366",119826:"64 493Q64 582 120 636T264 696H272Q280 697 285 697Q380 697 454 645L480 669Q484 672 488 676T495 683T500 688T504 691T508 693T511 695T514 696T517 697T522 697Q536 697 539 691T542 652V577Q542 557 542 532T543 500Q543 472 540 465T524 458H511H505Q489 458 485 461T479 478Q472 529 449 564T393 614T336 634T287 639Q228 639 203 610T177 544Q177 517 195 493T247 457Q253 454 343 436T475 391Q574 326 574 207V200Q574 163 559 120Q517 12 389 -9Q380 -10 346 -10Q308 -10 275 -5T221 7T184 22T160 35T151 40L126 17Q122 14 118 10T111 3T106 -2T102 -5T98 -7T95 -9T92 -10T89 -11T84 -11Q70 -11 67 -4T64 35V108Q64 128 64 153T63 185Q63 203 63 211T69 223T77 227T94 228H100Q118 228 122 225T126 205Q130 125 193 88T345 51Q408 51 434 82T460 157Q460 196 439 221T388 257Q384 259 305 276T221 295Q155 313 110 366T64 493",119827:"41 425Q41 426 51 545T62 669V675H737V669Q738 665 748 546T758 425V419H696V425Q687 517 669 555T595 607Q578 612 522 613H478V62H631V0H615Q585 3 399 3Q214 3 184 0H168V62H321V613H277H263Q164 613 134 561Q113 527 103 425V419H41V425",119828:"570 686Q588 683 703 683T836 686H845V624H737V420Q737 390 737 345T738 284Q738 205 729 164T689 83Q614 -11 465 -11Q321 -11 240 51T148 207Q147 214 147 421V624H39V686H51Q75 683 226 683Q376 683 400 686H412V624H304V405V370V268Q304 181 311 146T346 87Q387 52 466 52Q642 52 667 195Q668 204 669 415V624H561V686H570",119829:"592 686H604Q615 685 631 685T666 684T700 684T724 683Q829 683 835 686H843V624H744L611 315Q584 254 546 165Q492 40 482 19T461 -6L460 -7H409Q398 -4 391 9Q385 20 257 315L124 624H25V686H36Q57 683 190 683Q340 683 364 686H377V624H289L384 403L480 185L492 212Q504 240 529 298T575 405L670 624H582V686H592",119830:"915 686L1052 683Q1142 683 1157 686H1164V624H1073L957 320Q930 249 900 170T855 52T839 10Q834 0 826 -5Q821 -7 799 -7H792Q777 -7 772 -5T759 10Q759 11 748 39T716 122T676 228L594 442L512 228Q486 159 455 78Q433 19 428 9T416 -5Q411 -7 389 -7H379Q356 -7 349 10Q349 12 334 51T288 170T231 320L116 624H24V686H35Q44 683 183 683Q331 683 355 686H368V624H323Q278 624 278 623L437 207L499 369L561 531L526 624H434V686H445Q454 683 593 683Q741 683 765 686H778V624H733Q688 624 688 623L847 207Q848 207 927 415T1006 624H905V686H915",119831:"327 0Q306 3 174 3Q52 3 43 0H33V62H98L162 63L360 333L157 624H48V686H59Q80 683 217 683Q368 683 395 686H408V624H335L393 540L452 458L573 623Q573 624 528 624H483V686H494Q515 683 646 683Q769 683 778 686H787V624H658L575 511Q493 398 493 397L508 376Q522 356 553 312T611 229L727 62H835V0H824Q803 3 667 3Q516 3 489 0H476V62H513L549 63L401 274L247 63Q247 62 292 62H338V0H327",119832:"605 0Q581 3 434 3Q286 3 262 0H250V62H358V275L126 624H19V686H30Q54 683 189 683Q361 685 370 686H383V624H308L319 608Q330 591 353 556T396 491L484 359L660 623Q660 624 623 624H585V686H595Q613 683 728 683Q832 683 841 686H849V624H742L509 274V62H618V0H605",119833:"80 430L92 686H358Q624 686 628 684Q638 679 638 656Q638 640 637 639Q637 638 445 353Q401 288 351 214T277 103L253 67L256 66Q258 66 265 66T279 66T298 66H343Q380 66 406 68T464 81T518 110T557 164T579 250Q583 278 583 298Q583 299 614 299H645V291Q643 281 636 150T627 8V0H353Q79 0 75 2Q64 7 64 31Q64 48 66 52L259 340L451 623Q451 624 384 624Q294 623 259 612Q155 581 143 446Q142 440 142 432V430H80",119834:"64 349Q64 399 107 426T255 453Q346 453 402 423T473 341Q478 327 478 310T479 196V77Q493 63 529 62Q549 62 553 57T558 31Q558 9 552 5T514 0H497H481Q375 0 367 56L356 46Q300 -6 210 -6Q130 -6 81 30T32 121Q32 188 111 226T332 272H350V292Q350 313 348 327T337 361T306 391T248 402T194 399H189Q204 376 204 354Q204 327 187 306T134 284Q97 284 81 305T64 349ZM164 121Q164 89 186 67T238 45Q274 45 307 63T346 108L350 117V226H347Q248 218 206 189T164 121",119835:"32 686L123 690Q214 694 215 694H221V409Q289 450 378 450Q479 450 539 387T600 221Q600 122 535 58T358 -6H355Q272 -6 203 53L160 1L129 0H98V301Q98 362 98 435T99 525Q99 591 97 604T83 620Q69 624 42 624H29V686H32ZM227 105L232 99Q237 93 242 87T258 73T280 59T306 49T339 45Q380 45 411 66T451 131Q457 160 457 230Q457 264 456 284T448 329T430 367T396 389T343 398Q282 398 235 355L227 348V105",119836:"447 131H458Q478 131 478 117Q478 112 471 95T439 51T377 9Q330 -6 286 -6Q196 -6 135 35Q39 96 39 222Q39 324 101 384Q169 453 286 453Q359 453 411 431T464 353Q464 319 445 302T395 284Q360 284 343 305T325 353Q325 380 338 396H333Q317 398 295 398H292Q280 398 271 397T245 390T218 373T197 338T183 283Q182 275 182 231Q182 199 184 180T193 132T220 85T270 57Q289 50 317 50H326Q385 50 414 115Q419 127 423 129T447 131",119837:"351 686L442 690Q533 694 534 694H540V389Q540 327 540 253T539 163Q539 97 541 83T555 66Q569 62 596 62H609V31Q609 0 608 0Q588 0 510 -3T412 -6Q411 -6 411 16V38L401 31Q337 -6 265 -6Q159 -6 99 58T38 224Q38 265 51 303T92 375T165 429T272 449Q359 449 417 412V507V555Q417 597 415 607T402 620Q388 624 361 624H348V686H351ZM411 350Q362 399 291 399Q278 399 256 392T218 371Q195 351 189 320T182 238V221Q182 179 183 159T191 115T212 74Q241 46 288 46Q358 46 404 100L411 109V350",119838:"32 225Q32 332 102 392T272 452H283Q382 452 436 401Q494 343 494 243Q494 226 486 222T440 217Q431 217 394 217T327 218H175V209Q175 177 179 154T196 107T236 69T306 50Q312 49 323 49Q376 49 410 85Q421 99 427 111T434 127T442 133T463 135H468Q494 135 494 117Q494 110 489 97T468 66T431 32T373 5T292 -6Q181 -6 107 55T32 225ZM383 276Q377 346 348 374T280 402Q253 402 230 390T195 357Q179 331 176 279V266H383V276",119839:"308 0Q290 3 172 3Q58 3 49 0H40V62H109V382H42V444H109V503L110 562L112 572Q127 625 178 658T316 699Q318 699 330 699T348 700Q381 698 404 687T436 658T449 629T452 606Q452 576 432 557T383 537Q355 537 335 555T314 605Q314 635 328 649H325Q311 649 293 644T253 618T227 560Q226 555 226 498V444H340V382H232V62H318V0H308",119840:"50 300Q50 368 105 409T255 450Q328 450 376 426L388 420Q435 455 489 455Q517 455 533 441T554 414T558 389Q558 367 544 353T508 339Q484 339 471 354T458 387Q458 397 462 400Q464 401 461 400Q459 400 454 399Q429 392 427 390Q454 353 459 328Q461 315 461 300Q461 240 419 202Q364 149 248 149Q185 149 136 172Q129 158 129 148Q129 105 170 93Q176 91 263 91Q273 91 298 91T334 91T366 89T400 85T432 77T466 64Q544 22 544 -69Q544 -114 506 -145Q438 -201 287 -201Q149 -201 90 -161T30 -70Q30 -58 33 -47T42 -27T54 -13T69 -1T82 6T94 12T101 15Q66 57 66 106Q66 151 90 187L97 197L89 204Q50 243 50 300ZM485 403H492Q491 404 488 404L485 403V403ZM255 200Q279 200 295 206T319 219T331 242T335 268T336 300Q336 337 333 352T317 380Q298 399 255 399Q228 399 211 392T187 371T178 345T176 312V300V289Q176 235 194 219Q215 200 255 200ZM287 -150Q357 -150 400 -128T443 -71Q443 -65 442 -61T436 -50T420 -37T389 -27T339 -21L308 -20Q276 -20 253 -20Q190 -20 180 -20T156 -26Q130 -38 130 -69Q130 -105 173 -127T287 -150",119841:"40 686L131 690Q222 694 223 694H229V533L230 372L238 381Q248 394 264 407T317 435T398 450Q428 450 448 447T491 434T529 402T551 346Q553 335 554 198V62H623V0H614Q596 3 489 3Q374 3 365 0H356V62H425V194V275Q425 348 416 373T371 399Q326 399 288 370T238 290Q236 281 235 171V62H304V0H295Q277 3 171 3Q64 3 46 0H37V62H106V332Q106 387 106 453T107 534Q107 593 105 605T91 620Q77 624 50 624H37V686H40",119842:"72 610Q72 649 98 672T159 695Q193 693 217 670T241 610Q241 572 217 549T157 525Q120 525 96 548T72 610ZM46 442L136 446L226 450H232V62H294V0H286Q271 3 171 3Q67 3 49 0H40V62H109V209Q109 358 108 362Q103 380 55 380H43V442H46",119843:"104 610Q104 649 130 672T191 695Q225 693 249 670T273 610Q273 572 249 549T189 525Q152 525 128 548T104 610ZM78 442L173 446L268 450H274V196Q274 -5 274 -37T269 -83Q256 -132 201 -166T71 -200Q10 -200 -30 -173T-71 -102Q-71 -70 -51 -51T-1 -31Q27 -31 48 -49T69 -100Q69 -121 53 -147H56Q66 -149 77 -149H80Q90 -149 100 -146T127 -125T149 -73Q151 -55 151 149V362Q150 364 148 366T145 370T142 373T138 375T133 377T124 378T113 379T97 380H75V442H78",119844:"32 686L123 690Q214 694 215 694H221V255L377 382H346V444H355Q370 441 476 441Q544 441 556 444H562V382H476L347 277L515 62H587V0H579Q564 3 476 3Q370 3 352 0H343V62H358L373 63L260 206L237 189L216 172V62H285V0H277Q259 3 157 3Q46 3 37 0H29V62H98V332Q98 387 98 453T99 534Q99 593 97 605T83 620Q69 624 42 624H29V686H32",119845:"43 686L134 690Q225 694 226 694H232V62H301V0H292Q274 3 170 3Q67 3 49 0H40V62H109V332Q109 387 109 453T110 534Q110 593 108 605T94 620Q80 624 53 624H40V686H43",119846:"40 442Q217 450 218 450H224V365Q226 367 235 378T254 397T278 416T314 435T362 448Q376 450 400 450H406Q503 450 534 393Q545 376 545 370Q545 368 555 379Q611 450 716 450Q774 450 809 434Q850 414 861 379T873 276V213V198V62H942V0H933Q915 3 809 3Q702 3 684 0H675V62H744V194V275Q744 348 735 373T690 399Q645 399 607 370T557 290Q555 281 554 171V62H623V0H614Q596 3 489 3Q374 3 365 0H356V62H425V194V275Q425 348 416 373T371 399Q326 399 288 370T238 290Q236 281 235 171V62H304V0H295Q277 3 171 3Q64 3 46 0H37V62H106V210V303Q106 353 104 363T91 376Q77 380 50 380H37V442H40",119847:"40 442Q217 450 218 450H224V407L225 365Q233 378 245 391T289 422T362 448Q374 450 398 450Q428 450 448 447T491 434T529 402T551 346Q553 335 554 198V62H623V0H614Q596 3 489 3Q374 3 365 0H356V62H425V194V275Q425 348 416 373T371 399Q326 399 288 370T238 290Q236 281 235 171V62H304V0H295Q277 3 171 3Q64 3 46 0H37V62H106V210V303Q106 353 104 363T91 376Q77 380 50 380H37V442H40",119848:"287 -5Q228 -5 182 10T109 48T63 102T39 161T32 219Q32 272 50 314T94 382T154 423T214 446T265 452H279Q319 452 326 451Q428 439 485 376T542 221Q542 156 514 108T442 33Q384 -5 287 -5ZM399 230V250Q399 280 398 298T391 338T372 372T338 392T282 401Q241 401 212 380Q190 363 183 334T175 230Q175 202 175 189T177 153T183 118T195 91T215 68T245 56T287 50Q348 50 374 84Q388 101 393 132T399 230",119849:"32 442L123 446Q214 450 215 450H221V409Q222 409 229 413T251 423T284 436T328 446T382 450Q480 450 540 388T600 223Q600 128 539 61T361 -6H354Q292 -6 236 28L227 34V-132H296V-194H287Q269 -191 163 -191Q56 -191 38 -194H29V-132H98V113V284Q98 330 97 348T93 370T83 376Q69 380 42 380H29V442H32ZM457 224Q457 303 427 349T350 395Q282 395 235 352L227 345V104L233 97Q274 45 337 45Q383 45 420 86T457 224",119850:"38 220Q38 273 54 314T95 380T152 421T211 443T264 449Q368 449 429 386L438 377L484 450H540V-132H609V-194H600Q582 -191 475 -191Q360 -191 351 -194H342V-132H411V42Q409 41 399 34T383 25T367 16T347 7T324 1T296 -4T264 -6Q162 -6 100 56T38 220ZM287 46Q368 46 417 127V301L412 312Q398 347 369 371T302 395Q282 395 263 388T225 362T194 308T182 221Q182 126 214 86T287 46",119851:"405 293T374 293T324 312T305 361Q305 378 312 394Q315 397 315 399Q305 399 294 394T266 375T238 329T222 249Q221 241 221 149V62H308V0H298Q280 3 161 3Q47 3 38 0H29V62H98V210V303Q98 353 96 363T83 376Q69 380 42 380H29V442H32L118 446Q204 450 205 450H210V414L211 378Q247 449 315 449H321Q384 449 413 422T442 360Q442 332 424 313",119852:"38 315Q38 339 45 360T70 404T127 440T223 453Q273 453 320 436L338 445L357 453H366Q380 453 383 447T386 403V387V355Q386 331 383 326T365 321H355H349Q333 321 329 324T324 341Q317 406 224 406H216Q123 406 123 353Q123 334 143 321T188 304T244 294T285 286Q305 281 325 273T373 237T412 172Q414 162 414 142Q414 -6 230 -6Q154 -6 117 22L68 -6H58Q44 -6 41 0T38 42V73Q38 85 38 101T37 122Q37 144 42 148T68 153H75Q87 153 91 151T97 147T103 132Q131 46 220 46H230Q257 46 265 47Q330 58 330 108Q330 127 316 142Q300 156 284 162Q271 168 212 178T122 202Q38 243 38 315",119853:"272 49Q320 49 320 136V145V177H382V143Q382 106 380 99Q374 62 349 36T285 -2L272 -5H247Q173 -5 134 27Q109 46 102 74T94 160Q94 171 94 199T95 245V382H21V433H25Q58 433 90 456Q121 479 140 523T162 621V635H224V444H363V382H224V239V207V149Q224 98 228 81T249 55Q261 49 272 49",119854:"40 442L134 446Q228 450 229 450H235V273V165Q235 90 238 74T254 52Q268 46 304 46H319Q352 46 380 67T419 121L420 123Q424 135 425 199Q425 201 425 207Q425 233 425 249V316Q425 354 423 363T410 376Q396 380 369 380H356V442L554 450V267Q554 84 556 79Q561 62 610 62H623V31Q623 0 622 0Q603 0 527 -3T432 -6Q431 -6 431 25V56L420 45Q373 6 332 -1Q313 -6 281 -6Q208 -6 165 14T109 87L107 98L106 230Q106 358 104 366Q96 380 50 380H37V442H40",119855:"401 444Q413 441 495 441Q568 441 574 444H580V382H510L409 156Q348 18 339 6Q331 -4 320 -4Q318 -4 313 -4T303 -3H288Q273 -3 264 12T221 102Q206 135 197 156L96 382H26V444H34Q49 441 145 441Q252 441 270 444H279V382H231L284 264Q335 149 338 149Q338 150 389 264T442 381Q442 382 418 382H394V444H401",119856:"624 444Q636 441 722 441Q797 441 800 444H805V382H741L593 11Q592 10 590 8T586 4T584 2T581 0T579 -2T575 -3T571 -3T567 -4T561 -4T553 -4H542Q525 -4 518 6T490 70Q474 110 463 137L415 257L367 137Q357 111 341 72Q320 17 313 7T289 -4H277Q259 -4 253 -2T238 11L90 382H25V444H32Q47 441 140 441Q243 441 261 444H270V382H222L310 164L382 342L366 382H303V444H310Q322 441 407 441Q508 441 523 444H531V382H506Q481 382 481 380Q482 376 529 259T577 142L674 382H617V444H624",119857:"227 0Q212 3 121 3Q40 3 28 0H21V62H117L245 213L109 382H26V444H34Q49 441 143 441Q247 441 265 444H274V382H246L281 339Q315 297 316 297Q320 297 354 341L389 382H352V444H360Q375 441 466 441Q547 441 559 444H566V382H471L355 246L504 63L545 62H586V0H578Q563 3 469 3Q365 3 347 0H338V62H366Q366 63 326 112T285 163L198 63L217 62H235V0H227",119858:"84 -102Q84 -110 87 -119T102 -138T133 -149Q148 -148 162 -143T186 -131T206 -114T222 -95T234 -76T243 -59T249 -45T252 -37L269 0L96 382H26V444H34Q49 441 146 441Q252 441 270 444H279V382H255Q232 382 232 380L337 151L442 382H394V444H401Q413 441 495 441Q568 441 574 444H580V382H510L406 152Q298 -84 297 -87Q269 -139 225 -169T131 -200Q85 -200 54 -172T23 -100Q23 -64 44 -50T87 -35Q111 -35 130 -50T152 -92V-100H84V-102",119859:"48 262Q48 264 54 349T60 436V444H252Q289 444 336 444T394 445Q441 445 450 441T459 418Q459 406 458 404Q456 399 327 229T194 55H237Q260 56 268 56T297 58T325 65T348 77T370 98T384 128T395 170Q400 197 400 216Q400 217 431 217H462V211Q461 208 453 108T444 6V0H245Q46 0 43 2Q32 7 32 28V33Q32 41 40 52T84 112Q129 170 164 217L298 393H256Q189 392 165 380Q124 360 115 303Q110 280 110 256Q110 254 79 254H48V262",119860:"208 74Q208 50 254 46Q272 46 272 35Q272 34 270 22Q267 8 264 4T251 0Q249 0 239 0T205 1T141 2Q70 2 50 0H42Q35 7 35 11Q37 38 48 46H62Q132 49 164 96Q170 102 345 401T523 704Q530 716 547 716H555H572Q578 707 578 706L606 383Q634 60 636 57Q641 46 701 46Q726 46 726 36Q726 34 723 22Q720 7 718 4T704 0Q701 0 690 0T651 1T578 2Q484 2 455 0H443Q437 6 437 9T439 27Q443 40 445 43L449 46H469Q523 49 533 63L521 213H283L249 155Q208 86 208 74ZM516 260Q516 271 504 416T490 562L463 519Q447 492 400 412L310 260L413 259Q516 259 516 260",119861:"231 637Q204 637 199 638T194 649Q194 676 205 682Q206 683 335 683Q594 683 608 681Q671 671 713 636T756 544Q756 480 698 429T565 360L555 357Q619 348 660 311T702 219Q702 146 630 78T453 1Q446 0 242 0Q42 0 39 2Q35 5 35 10Q35 17 37 24Q42 43 47 45Q51 46 62 46H68Q95 46 128 49Q142 52 147 61Q150 65 219 339T288 628Q288 635 231 637ZM649 544Q649 574 634 600T585 634Q578 636 493 637Q473 637 451 637T416 636H403Q388 635 384 626Q382 622 352 506Q352 503 351 500L320 374H401Q482 374 494 376Q554 386 601 434T649 544ZM595 229Q595 273 572 302T512 336Q506 337 429 337Q311 337 310 336Q310 334 293 263T258 122L240 52Q240 48 252 48T333 46Q422 46 429 47Q491 54 543 105T595 229",119862:"50 252Q50 367 117 473T286 641T490 704Q580 704 633 653Q642 643 648 636T656 626L657 623Q660 623 684 649Q691 655 699 663T715 679T725 690L740 705H746Q760 705 760 698Q760 694 728 561Q692 422 692 421Q690 416 687 415T669 413H653Q647 419 647 422Q647 423 648 429T650 449T651 481Q651 552 619 605T510 659Q484 659 454 652T382 628T299 572T226 479Q194 422 175 346T156 222Q156 108 232 58Q280 24 350 24Q441 24 512 92T606 240Q610 253 612 255T628 257Q648 257 648 248Q648 243 647 239Q618 132 523 55T319 -22Q206 -22 128 53T50 252",119863:"287 628Q287 635 230 637Q207 637 200 638T193 647Q193 655 197 667T204 682Q206 683 403 683Q570 682 590 682T630 676Q702 659 752 597T803 431Q803 275 696 151T444 3L430 1L236 0H125H72Q48 0 41 2T33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM703 469Q703 507 692 537T666 584T629 613T590 629T555 636Q553 636 541 636T512 636T479 637H436Q392 637 386 627Q384 623 313 339T242 52Q242 48 253 48T330 47Q335 47 349 47T373 46Q499 46 581 128Q617 164 640 212T683 339T703 469",119864:"492 213Q472 213 472 226Q472 230 477 250T482 285Q482 316 461 323T364 330H312Q311 328 277 192T243 52Q243 48 254 48T334 46Q428 46 458 48T518 61Q567 77 599 117T670 248Q680 270 683 272Q690 274 698 274Q718 274 718 261Q613 7 608 2Q605 0 322 0H133Q31 0 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H757Q764 676 764 669Q764 664 751 557T737 447Q735 440 717 440H705Q698 445 698 453L701 476Q704 500 704 528Q704 558 697 578T678 609T643 625T596 632T532 634H485Q397 633 392 631Q388 629 386 622Q385 619 355 499T324 377Q347 376 372 376H398Q464 376 489 391T534 472Q538 488 540 490T557 493Q562 493 565 493T570 492T572 491T574 487T577 483L544 351Q511 218 508 216Q505 213 492 213",119865:"48 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H742Q749 676 749 669Q749 664 736 557T722 447Q720 440 702 440H690Q683 445 683 453Q683 454 686 477T689 530Q689 560 682 579T663 610T626 626T575 633T503 634H480Q398 633 393 631Q388 629 386 623Q385 622 352 492L320 363H375Q378 363 398 363T426 364T448 367T472 374T489 386Q502 398 511 419T524 457T529 475Q532 480 548 480H560Q567 475 567 470Q567 467 536 339T502 207Q500 200 482 200H470Q463 206 463 212Q463 215 468 234T473 274Q473 303 453 310T364 317H309L277 190Q245 66 245 60Q245 46 334 46H359Q365 40 365 39T363 19Q359 6 353 0H336Q295 2 185 2Q120 2 86 2T48 1",119866:"50 252Q50 367 117 473T286 641T490 704Q580 704 633 653Q642 643 648 636T656 626L657 623Q660 623 684 649Q691 655 699 663T715 679T725 690L740 705H746Q760 705 760 698Q760 694 728 561Q692 422 692 421Q690 416 687 415T669 413H653Q647 419 647 422Q647 423 648 429T650 449T651 481Q651 552 619 605T510 659Q492 659 471 656T418 643T357 615T294 567T236 496T189 394T158 260Q156 242 156 221Q156 173 170 136T206 79T256 45T308 28T353 24Q407 24 452 47T514 106Q517 114 529 161T541 214Q541 222 528 224T468 227H431Q425 233 425 235T427 254Q431 267 437 273H454Q494 271 594 271Q634 271 659 271T695 272T707 272Q721 272 721 263Q721 261 719 249Q714 230 709 228Q706 227 694 227Q674 227 653 224Q646 221 643 215T629 164Q620 131 614 108Q589 6 586 3Q584 1 581 1Q571 1 553 21T530 52Q530 53 528 52T522 47Q448 -22 322 -22Q201 -22 126 55T50 252",119867:"228 637Q194 637 192 641Q191 643 191 649Q191 673 202 682Q204 683 219 683Q260 681 355 681Q389 681 418 681T463 682T483 682Q499 682 499 672Q499 670 497 658Q492 641 487 638H485Q483 638 480 638T473 638T464 637T455 637Q416 636 405 634T387 623Q384 619 355 500Q348 474 340 442T328 395L324 380Q324 378 469 378H614L615 381Q615 384 646 504Q674 619 674 627T617 637Q594 637 587 639T580 648Q580 650 582 660Q586 677 588 679T604 682Q609 682 646 681T740 680Q802 680 835 681T871 682Q888 682 888 672Q888 645 876 638H874Q872 638 869 638T862 638T853 637T844 637Q805 636 794 634T776 623Q773 618 704 340T634 58Q634 51 638 51Q646 48 692 46H723Q729 38 729 37T726 19Q722 6 716 0H701Q664 2 567 2Q533 2 504 2T458 2T437 1Q420 1 420 10Q420 15 423 24Q428 43 433 45Q437 46 448 46H454Q481 46 514 49Q520 50 522 50T528 55T534 64T540 82T547 110T558 153Q565 181 569 198Q602 330 602 331T457 332H312L279 197Q245 63 245 58Q245 51 253 49T303 46H334Q340 38 340 37T337 19Q333 6 327 0H312Q275 2 178 2Q144 2 115 2T69 2T48 1Q31 1 31 10Q31 12 34 24Q39 43 44 45Q48 46 59 46H65Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Q285 635 228 637",119868:"43 1Q26 1 26 10Q26 12 29 24Q34 43 39 45Q42 46 54 46H60Q120 46 136 53Q137 53 138 54Q143 56 149 77T198 273Q210 318 216 344Q286 624 286 626Q284 630 284 631Q274 637 213 637H193Q184 643 189 662Q193 677 195 680T209 683H213Q285 681 359 681Q481 681 487 683H497Q504 676 504 672T501 655T494 639Q491 637 471 637Q440 637 407 634Q393 631 388 623Q381 609 337 432Q326 385 315 341Q245 65 245 59Q245 52 255 50T307 46H339Q345 38 345 37T342 19Q338 6 332 0H316Q279 2 179 2Q143 2 113 2T65 2T43 1",119869:"447 625Q447 637 354 637H329Q323 642 323 645T325 664Q329 677 335 683H352Q393 681 498 681Q541 681 568 681T605 682T619 682Q633 682 633 672Q633 670 630 658Q626 642 623 640T604 637Q552 637 545 623Q541 610 483 376Q420 128 419 127Q397 64 333 21T195 -22Q137 -22 97 8T57 88Q57 130 80 152T132 174Q177 174 182 130Q182 98 164 80T123 56Q115 54 115 53T122 44Q148 15 197 15Q235 15 271 47T324 130Q328 142 387 380T447 625",119870:"285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628",119871:"228 637Q194 637 192 641Q191 643 191 649Q191 673 202 682Q204 683 217 683Q271 680 344 680Q485 680 506 683H518Q524 677 524 674T522 656Q517 641 513 637H475Q406 636 394 628Q387 624 380 600T313 336Q297 271 279 198T252 88L243 52Q243 48 252 48T311 46H328Q360 46 379 47T428 54T478 72T522 106T564 161Q580 191 594 228T611 270Q616 273 628 273H641Q647 264 647 262T627 203T583 83T557 9Q555 4 553 3T537 0T494 -1Q483 -1 418 -1T294 0H116Q32 0 32 10Q32 17 34 24Q39 43 44 45Q48 46 59 46H65Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Q285 635 228 637",119872:"289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629",119873:"234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637",119874:"740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476",119875:"287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554",119876:"399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18",119877:"230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554",119878:"308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24",119879:"40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40",119880:"107 637Q73 637 71 641Q70 643 70 649Q70 673 81 682Q83 683 98 683Q139 681 234 681Q268 681 297 681T342 682T362 682Q378 682 378 672Q378 670 376 658Q371 641 366 638H364Q362 638 359 638T352 638T343 637T334 637Q295 636 284 634T266 623Q265 621 238 518T184 302T154 169Q152 155 152 140Q152 86 183 55T269 24Q336 24 403 69T501 205L552 406Q599 598 599 606Q599 633 535 637Q511 637 511 648Q511 650 513 660Q517 676 519 679T529 683Q532 683 561 682T645 680Q696 680 723 681T752 682Q767 682 767 672Q767 650 759 642Q756 637 737 637Q666 633 648 597Q646 592 598 404Q557 235 548 205Q515 105 433 42T263 -22Q171 -22 116 34T60 167V183Q60 201 115 421Q164 622 164 628Q164 635 107 637",119881:"52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648",119882:"436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683",119883:"42 0H40Q26 0 26 11Q26 15 29 27Q33 41 36 43T55 46Q141 49 190 98Q200 108 306 224T411 342Q302 620 297 625Q288 636 234 637H206Q200 643 200 645T202 664Q206 677 212 683H226Q260 681 347 681Q380 681 408 681T453 682T473 682Q490 682 490 671Q490 670 488 658Q484 643 481 640T465 637Q434 634 411 620L488 426L541 485Q646 598 646 610Q646 628 622 635Q617 635 609 637Q594 637 594 648Q594 650 596 664Q600 677 606 683H618Q619 683 643 683T697 681T738 680Q828 680 837 683H845Q852 676 852 672Q850 647 840 637H824Q790 636 763 628T722 611T698 593L687 584Q687 585 592 480L505 384Q505 383 536 304T601 142T638 56Q648 47 699 46Q734 46 734 37Q734 35 732 23Q728 7 725 4T711 1Q708 1 678 1T589 2Q528 2 496 2T461 1Q444 1 444 10Q444 11 446 25Q448 35 450 39T455 44T464 46T480 47T506 54Q523 62 523 64Q522 64 476 181L429 299Q241 95 236 84Q232 76 232 72Q232 53 261 47Q262 47 267 47T273 46Q276 46 277 46T280 45T283 42T284 35Q284 26 282 19Q279 6 276 4T261 1Q258 1 243 1T201 2T142 2Q64 2 42 0",119884:"66 637Q54 637 49 637T39 638T32 641T30 647T33 664T42 682Q44 683 56 683Q104 680 165 680Q288 680 306 683H316Q322 677 322 674T320 656Q316 643 310 637H298Q242 637 242 624Q242 619 292 477T343 333L346 336Q350 340 358 349T379 373T411 410T454 461Q546 568 561 587T577 618Q577 634 545 637Q528 637 528 647Q528 649 530 661Q533 676 535 679T549 683Q551 683 578 682T657 680Q684 680 713 681T746 682Q763 682 763 673Q763 669 760 657T755 643Q753 637 734 637Q662 632 617 587Q608 578 477 424L348 273L322 169Q295 62 295 57Q295 46 363 46Q379 46 384 45T390 35Q390 33 388 23Q384 6 382 4T366 1Q361 1 324 1T232 2Q170 2 138 2T102 1Q84 1 84 9Q84 14 87 24Q88 27 89 30T90 35T91 39T93 42T96 44T101 45T107 45T116 46T129 46Q168 47 180 50T198 63Q201 68 227 171L252 274L129 623Q128 624 127 625T125 627T122 629T118 631T113 633T105 634T96 635T83 636T66 637",119885:"58 8Q58 23 64 35Q64 36 329 334T596 635L586 637Q575 637 512 637H500H476Q442 637 420 635T365 624T311 598T266 548T228 469Q227 466 226 463T224 458T223 453T222 450L221 448Q218 443 202 443Q185 443 182 453L214 561Q228 606 241 651Q249 679 253 681Q256 683 487 683H718Q723 678 723 675Q723 673 717 649Q189 54 188 52L185 49H274Q369 50 377 51Q452 60 500 100T579 247Q587 272 590 277T603 282H607Q628 282 628 271Q547 5 541 2Q538 0 300 0H124Q58 0 58 8",119886:"33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328",119887:"73 647Q73 657 77 670T89 683Q90 683 161 688T234 694Q246 694 246 685T212 542Q204 508 195 472T180 418L176 399Q176 396 182 402Q231 442 283 442Q345 442 383 396T422 280Q422 169 343 79T173 -11Q123 -11 82 27T40 150V159Q40 180 48 217T97 414Q147 611 147 623T109 637Q104 637 101 637H96Q86 637 83 637T76 640T73 647ZM336 325V331Q336 405 275 405Q258 405 240 397T207 376T181 352T163 330L157 322L136 236Q114 150 114 114Q114 66 138 42Q154 26 178 26Q211 26 245 58Q270 81 285 114T318 219Q336 291 336 325",119888:"34 159Q34 268 120 355T306 442Q362 442 394 418T427 355Q427 326 408 306T360 285Q341 285 330 295T319 325T330 359T352 380T366 386H367Q367 388 361 392T340 400T306 404Q276 404 249 390Q228 381 206 359Q162 315 142 235T121 119Q121 73 147 50Q169 26 205 26H209Q321 26 394 111Q403 121 406 121Q410 121 419 112T429 98T420 83T391 55T346 25T282 0T202 -11Q127 -11 81 37T34 159",119889:"366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326",119890:"39 168Q39 225 58 272T107 350T174 402T244 433T307 442H310Q355 442 388 420T421 355Q421 265 310 237Q261 224 176 223Q139 223 138 221Q138 219 132 186T125 128Q125 81 146 54T209 26T302 45T394 111Q403 121 406 121Q410 121 419 112T429 98T420 82T390 55T344 24T281 -1T205 -11Q126 -11 83 42T39 168ZM373 353Q367 405 305 405Q272 405 244 391T199 357T170 316T154 280T149 261Q149 260 169 260Q282 260 327 284T373 353",119891:"118 -162Q120 -162 124 -164T135 -167T147 -168Q160 -168 171 -155T187 -126Q197 -99 221 27T267 267T289 382V385H242Q195 385 192 387Q188 390 188 397L195 425Q197 430 203 430T250 431Q298 431 298 432Q298 434 307 482T319 540Q356 705 465 705Q502 703 526 683T550 630Q550 594 529 578T487 561Q443 561 443 603Q443 622 454 636T478 657L487 662Q471 668 457 668Q445 668 434 658T419 630Q412 601 403 552T387 469T380 433Q380 431 435 431Q480 431 487 430T498 424Q499 420 496 407T491 391Q489 386 482 386T428 385H372L349 263Q301 15 282 -47Q255 -132 212 -173Q175 -205 139 -205Q107 -205 81 -186T55 -132Q55 -95 76 -78T118 -61Q162 -61 162 -103Q162 -122 151 -136T127 -157L118 -162",119892:"311 43Q296 30 267 15T206 0Q143 0 105 45T66 160Q66 265 143 353T314 442Q361 442 401 394L404 398Q406 401 409 404T418 412T431 419T447 422Q461 422 470 413T480 394Q480 379 423 152T363 -80Q345 -134 286 -169T151 -205Q10 -205 10 -137Q10 -111 28 -91T74 -71Q89 -71 102 -80T116 -111Q116 -121 114 -130T107 -144T99 -154T92 -162L90 -164H91Q101 -167 151 -167Q189 -167 211 -155Q234 -144 254 -122T282 -75Q288 -56 298 -13Q311 35 311 43ZM384 328L380 339Q377 350 375 354T369 368T359 382T346 393T328 402T306 405Q262 405 221 352Q191 313 171 233T151 117Q151 38 213 38Q269 38 323 108L331 118L384 328",119894:"184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287",119895:"297 596Q297 627 318 644T361 661Q378 661 389 651T403 623Q403 595 384 576T340 557Q322 557 310 567T297 596ZM288 376Q288 405 262 405Q240 405 220 393T185 362T161 325T144 293L137 279Q135 278 121 278H107Q101 284 101 286T105 299Q126 348 164 391T252 441Q253 441 260 441T272 442Q296 441 316 432Q341 418 354 401T367 348V332L318 133Q267 -67 264 -75Q246 -125 194 -164T75 -204Q25 -204 7 -183T-12 -137Q-12 -110 7 -91T53 -71Q70 -71 82 -81T95 -112Q95 -148 63 -167Q69 -168 77 -168Q111 -168 139 -140T182 -74L193 -32Q204 11 219 72T251 197T278 308T289 365Q289 372 288 376",119896:"121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647",119897:"117 59Q117 26 142 26Q179 26 205 131Q211 151 215 152Q217 153 225 153H229Q238 153 241 153T246 151T248 144Q247 138 245 128T234 90T214 43T183 6T137 -11Q101 -11 70 11T38 85Q38 97 39 102L104 360Q167 615 167 623Q167 626 166 628T162 632T157 634T149 635T141 636T132 637T122 637Q112 637 109 637T101 638T95 641T94 647Q94 649 96 661Q101 680 107 682T179 688Q194 689 213 690T243 693T254 694Q266 694 266 686Q266 675 193 386T118 83Q118 81 118 75T117 65V59",119898:"21 287Q22 293 24 303T36 341T56 388T88 425T132 442T175 435T205 417T221 395T229 376L231 369Q231 367 232 367L243 378Q303 442 384 442Q401 442 415 440T441 433T460 423T475 411T485 398T493 385T497 373T500 364T502 357L510 367Q573 442 659 442Q713 442 746 415T780 336Q780 285 742 178T704 50Q705 36 709 31T724 26Q752 26 776 56T815 138Q818 149 821 151T837 153Q857 153 857 145Q857 144 853 130Q845 101 831 73T785 17T716 -10Q669 -10 648 17T627 73Q627 92 663 193T700 345Q700 404 656 404H651Q565 404 506 303L499 291L466 157Q433 26 428 16Q415 -11 385 -11Q372 -11 364 -4T353 8T350 18Q350 29 384 161L420 307Q423 322 423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 181Q151 335 151 342Q154 357 154 369Q154 405 129 405Q107 405 92 377T69 316T57 280Q55 278 41 278H27Q21 284 21 287",119899:"21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287",119900:"201 -11Q126 -11 80 38T34 156Q34 221 64 279T146 380Q222 441 301 441Q333 441 341 440Q354 437 367 433T402 417T438 387T464 338T476 268Q476 161 390 75T201 -11ZM121 120Q121 70 147 48T206 26Q250 26 289 58T351 142Q360 163 374 216T388 308Q388 352 370 375Q346 405 306 405Q243 405 195 347Q158 303 140 230T121 120",119901:"23 287Q24 290 25 295T30 317T40 348T55 381T75 411T101 433T134 442Q209 442 230 378L240 387Q302 442 358 442Q423 442 460 395T497 281Q497 173 421 82T249 -10Q227 -10 210 -4Q199 1 187 11T168 28L161 36Q160 35 139 -51T118 -138Q118 -144 126 -145T163 -148H188Q194 -155 194 -157T191 -175Q188 -187 185 -190T172 -194Q170 -194 161 -194T127 -193T65 -192Q-5 -192 -24 -194H-32Q-39 -187 -39 -183Q-37 -156 -26 -148H-6Q28 -147 33 -136Q36 -130 94 103T155 350Q156 355 156 364Q156 405 131 405Q109 405 94 377T71 316T59 280Q57 278 43 278H29Q23 284 23 287ZM178 102Q200 26 252 26Q282 26 310 49T356 107Q374 141 392 215T411 325V331Q411 405 350 405Q339 405 328 402T306 393T286 380T269 365T254 350T243 336T235 326L232 322Q232 321 229 308T218 264T204 212Q178 106 178 102",119902:"33 157Q33 258 109 349T280 441Q340 441 372 389Q373 390 377 395T388 406T404 418Q438 442 450 442Q454 442 457 439T460 434Q460 425 391 149Q320 -135 320 -139Q320 -147 365 -148H390Q396 -156 396 -157T393 -175Q389 -188 383 -194H370Q339 -192 262 -192Q234 -192 211 -192T174 -192T157 -193Q143 -193 143 -185Q143 -182 145 -170Q149 -154 152 -151T172 -148Q220 -148 230 -141Q238 -136 258 -53T279 32Q279 33 272 29Q224 -10 172 -10Q117 -10 75 30T33 157ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326",119903:"21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287",119904:"131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289",119905:"26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26",119906:"21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287",119907:"173 380Q173 405 154 405Q130 405 104 376T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Q21 294 29 316T53 368T97 419T160 441Q202 441 225 417T249 361Q249 344 246 335Q246 329 231 291T200 202T182 113Q182 86 187 69Q200 26 250 26Q287 26 319 60T369 139T398 222T409 277Q409 300 401 317T383 343T365 361T357 383Q357 405 376 424T417 443Q436 443 451 425T467 367Q467 340 455 284T418 159T347 40T241 -11Q177 -11 139 22Q102 54 102 117Q102 148 110 181T151 298Q173 362 173 380",119908:"580 385Q580 406 599 424T641 443Q659 443 674 425T690 368Q690 339 671 253Q656 197 644 161T609 80T554 12T482 -11Q438 -11 404 5T355 48Q354 47 352 44Q311 -11 252 -11Q226 -11 202 -5T155 14T118 53T104 116Q104 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 293 29 315T52 366T96 418T161 441Q204 441 227 416T250 358Q250 340 217 250T184 111Q184 65 205 46T258 26Q301 26 334 87L339 96V119Q339 122 339 128T340 136T341 143T342 152T345 165T348 182T354 206T362 238T373 281Q402 395 406 404Q419 431 449 431Q468 431 475 421T483 402Q483 389 454 274T422 142Q420 131 420 107V100Q420 85 423 71T442 42T487 26Q558 26 600 148Q609 171 620 213T632 273Q632 306 619 325T593 357T580 385",119909:"52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289",119910:"21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287",119911:"347 338Q337 338 294 349T231 360Q211 360 197 356T174 346T162 335T155 324L153 320Q150 317 138 317Q117 317 117 325Q117 330 120 339Q133 378 163 406T229 440Q241 442 246 442Q271 442 291 425T329 392T367 375Q389 375 411 408T434 441Q435 442 449 442H462Q468 436 468 434Q468 430 463 420T449 399T432 377T418 358L411 349Q368 298 275 214T160 106L148 94L163 93Q185 93 227 82T290 71Q328 71 360 90T402 140Q406 149 409 151T424 153Q443 153 443 143Q443 138 442 134Q425 72 376 31T278 -11Q252 -11 232 6T193 40T155 57Q111 57 76 -3Q70 -11 59 -11H54H41Q35 -5 35 -2Q35 13 93 84Q132 129 225 214T340 322Q352 338 347 338",119912:"65 0Q45 0 45 18Q48 52 61 60Q65 62 81 62Q155 62 165 74Q166 74 265 228T465 539T569 699Q576 707 583 709T611 711T637 710T649 700Q650 697 695 380L741 63L784 62H827Q839 50 839 45L835 29Q831 9 827 5T806 0Q803 0 790 0T743 1T657 2Q585 2 547 1T504 0Q481 0 481 17Q484 54 497 60Q501 62 541 62Q580 62 580 63Q580 68 573 121T564 179V181H308L271 124Q236 69 236 67T283 62H287Q316 62 316 46Q316 26 307 8Q302 3 295 0L262 1Q242 2 168 2Q119 2 93 1T65 0ZM537 372Q533 402 528 435T521 486T518 504V505Q517 505 433 375L348 244L451 243Q555 243 555 244L537 372",119913:"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 449 686H477H586Q684 686 733 677T817 634Q853 598 853 547Q853 499 826 460T761 401T695 371T654 360H653L662 358Q670 357 683 354T712 344T744 327T774 303T795 269T804 224Q804 148 732 79T533 1Q524 0 288 0H58Q47 5 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624ZM703 550Q703 571 695 586T675 609T656 619T643 623L545 624H447L417 504Q386 384 386 383T470 382Q554 383 565 385Q632 397 667 447T703 550ZM651 240Q651 265 645 282T626 309T608 322T592 329Q587 330 479 331H373L340 198Q307 65 306 64Q306 62 406 62L507 63L519 65Q565 76 596 107T639 171T651 240",119914:"380 -17Q335 -17 293 -10T207 16T130 65T76 144T55 256Q55 306 70 361T122 476T211 582T345 663T525 702H545Q673 702 731 634L777 668Q783 672 789 677T800 685T808 691T814 695T818 698T822 700T825 702T828 703T830 703T833 703Q855 703 855 690Q855 686 823 558T789 426Q786 421 782 420T756 419Q734 420 729 421T724 432Q724 434 725 447T726 472Q726 552 678 604Q640 640 586 640H574Q533 640 494 632T409 604T324 541T260 437Q243 397 227 333T210 219Q210 152 237 117Q255 90 299 68T420 46H429Q506 46 580 100T678 234Q683 249 687 251T712 254H723Q743 254 743 240Q743 232 736 213T710 162T663 100T586 40T477 -5Q433 -17 380 -17",119915:"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 437 686Q659 686 668 685Q727 680 772 662T842 621T883 568T905 517T913 475Q914 466 914 434Q914 373 892 307T828 179T712 69T548 7Q517 2 494 2T279 0H58Q47 5 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624ZM768 475Q768 515 753 544T718 588T666 611T613 622T563 624H538H532H452L382 344Q311 64 311 63T363 62H405Q490 62 545 76T656 142Q696 185 724 265T760 399T768 475",119916:"257 618H231Q198 618 198 636Q202 672 214 678L219 680H811Q817 677 820 673T824 666L825 664Q825 659 814 549T799 433Q793 424 771 424Q752 424 746 427T740 441Q740 445 742 466T744 505Q744 561 722 585T646 616Q639 617 545 618H456Q456 617 427 502T398 385Q398 384 435 384Q461 385 471 385T499 391T526 405T545 433T562 478Q566 494 571 497T595 501H604Q622 501 626 486Q626 482 593 349T557 213Q552 205 530 205Q499 205 499 219Q499 222 503 242T508 281Q508 308 491 314T429 322Q425 322 423 322H382L317 64Q317 62 390 62Q460 62 493 64T569 80T640 124Q665 149 686 187T719 253T733 283Q739 289 760 289Q791 289 791 274Q791 267 763 201T706 71L678 8Q676 4 667 0H58Q47 5 43 15Q47 54 60 60Q64 62 113 62H162L163 66Q163 67 231 341T301 616Q301 618 257 618",119917:"257 618H231Q198 618 198 636Q202 672 214 678L219 680H795Q801 677 804 673T808 666L809 664Q809 659 798 549T783 433Q777 424 755 424Q736 424 730 427T724 444Q724 448 725 468T727 507V524Q727 541 724 554T713 577T698 594T676 605T653 612T625 616T597 617T566 618T538 618H456L455 614Q455 611 424 491L394 371H429Q454 372 463 372T491 378T517 392T536 419T552 464Q556 481 561 484T586 488Q603 488 607 486Q616 482 616 473Q616 467 584 337T549 201Q542 192 521 192Q503 192 497 195T490 209Q490 212 492 224Q499 251 499 269Q499 288 489 296T465 306T417 308L379 309L348 188Q341 161 334 129T322 80L318 65L317 62H375H409Q430 62 438 59T447 45Q444 8 431 2L426 0L377 1Q347 2 231 2Q152 2 111 1T65 0Q48 0 43 15Q47 54 60 60Q64 62 113 62H162L163 66Q163 67 231 341T301 616Q301 618 257 618",119918:"379 -16Q233 -16 145 52T56 255Q56 310 73 368T127 483T216 586T347 663T518 702H540Q562 702 582 700T616 696T644 689T667 681T686 670T702 659T717 647T731 635L776 668Q782 672 788 677T799 685T807 691T813 695T817 698T821 700T824 702T827 703T829 703T832 703Q854 703 854 690Q854 686 822 558T788 426Q785 421 781 420T755 419Q734 420 729 422T723 432Q723 434 724 446T725 469Q725 531 702 571T642 628Q616 640 575 640Q468 640 390 593T272 464Q247 415 229 340T210 214Q210 166 228 132T277 79T343 54T419 46Q445 46 465 50T500 59T526 76T544 96T557 123T566 150T574 182T581 214H519Q511 214 498 214T479 213Q443 213 443 230Q443 250 452 268Q457 273 464 276L514 275Q546 274 657 274Q735 274 768 275T803 276Q826 276 826 258Q823 224 810 216Q806 214 771 214H736Q736 211 710 109T683 5Q678 0 671 0Q666 0 637 14T597 36Q593 38 590 40T585 44T582 44T576 40Q511 -16 379 -16",119919:"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 239 686Q290 684 403 684Q475 684 512 685T553 686Q576 686 576 668Q572 632 560 626Q555 624 506 624H457L399 389Q399 388 547 388H695L753 623Q753 624 709 624H686Q665 624 660 626T650 639Q653 678 668 684Q672 686 681 686Q685 686 726 685T847 684Q902 684 937 684T986 685T1004 686Q1027 686 1027 668Q1023 632 1011 626Q1006 624 957 624H908L839 344Q768 64 768 63T812 62H839Q871 62 871 44Q867 6 854 2L850 0L808 1Q782 2 675 2Q600 2 560 1T516 0Q499 0 494 15Q498 54 511 60Q515 62 564 62H613L614 66L679 324Q679 326 531 326H383L382 322L317 64Q317 62 361 62H388Q420 62 420 44Q416 6 403 2L399 0L357 1Q331 2 224 2Q149 2 109 1T65 0Q48 0 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624",119920:"247 624Q242 624 233 624T220 623Q186 623 186 640Q186 647 190 664T202 684Q206 686 226 686Q277 684 393 684Q435 684 471 684T528 685T553 686Q573 686 573 670Q573 650 564 632Q556 624 537 624H501H449L380 344Q309 64 309 63T356 62Q361 62 370 62T384 63Q417 63 417 46Q417 26 408 8Q403 3 396 0L352 1Q325 2 216 2T82 1L45 0Q30 7 30 16Q33 51 46 60Q51 62 102 62H154L294 623Q294 624 247 624",119921:"205 131Q205 105 192 84T165 54L152 45Q152 44 160 42T182 37T213 35H216Q255 35 289 65Q314 90 329 129Q331 136 392 378T453 623Q453 624 393 624H332Q318 631 318 640Q318 647 322 664T334 684Q338 686 359 686Q413 684 533 684Q566 684 605 685T652 686Q677 686 685 683T694 669Q694 664 691 652Q686 631 681 628T647 624H602L542 380Q531 336 518 285T500 212T487 161T475 122T463 97T448 74T429 55Q351 -17 213 -17Q142 -17 99 7T43 70Q42 75 42 93Q42 143 73 168T139 194Q168 194 186 177T205 131",119922:"536 0Q522 6 522 18Q522 35 533 57Q539 62 557 62Q595 62 601 65L472 330L365 255L342 160Q318 65 317 64Q317 62 361 62H388Q420 62 420 44Q416 6 403 2L399 0L357 1Q331 2 224 2Q149 2 109 1T65 0Q48 0 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 239 686Q290 684 403 684Q475 684 512 685T553 686Q576 686 576 668Q572 632 560 626Q555 624 506 624H457L422 481Q386 339 386 337L785 621Q779 624 749 624Q726 624 726 641Q726 645 730 659Q734 675 736 679T747 686L786 685Q812 684 888 684Q908 684 934 685T968 686Q1003 686 1003 669Q1003 646 991 629Q985 624 967 624Q918 624 888 617Q884 617 874 613L865 609Q864 608 732 515T599 420Q599 418 686 242T775 65Q784 62 829 62Q847 62 850 61T860 54Q862 52 862 43Q862 10 845 1Q844 1 842 1T836 0T797 1T694 2Q599 2 573 1L536 0",119923:"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 239 686Q290 684 409 684Q454 684 492 684T552 685T579 686Q603 686 603 668Q599 632 587 626Q583 624 520 624H457L388 344Q317 64 317 63T353 62H390Q418 62 440 64T493 78T548 110T598 169T643 261Q651 282 655 285T680 289Q696 289 700 288T709 279Q711 274 711 269Q710 265 663 138T613 8Q611 4 602 0H58Q47 5 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624",119924:"258 624H231Q214 624 208 626T199 639Q203 678 216 684Q220 686 347 686H473Q474 685 478 682T484 677Q487 673 535 413L584 153L608 187Q631 221 672 281T761 410Q935 663 943 671Q949 678 962 686H1082H1166Q1201 686 1210 683T1219 668Q1215 632 1203 626Q1199 624 1149 624H1100L1031 344Q960 64 960 63T1004 62H1031Q1063 62 1063 44Q1060 7 1046 2Q1042 0 1034 0Q1030 0 990 1T875 2Q804 2 767 1T725 0H723Q707 0 703 15Q707 54 720 60Q724 62 773 62H822Q961 618 961 619L754 318Q546 15 543 12Q531 0 510 0Q500 0 495 0T484 5T477 19Q477 20 421 315L367 604L299 335Q234 72 234 68Q234 62 302 62Q334 62 334 46Q332 8 317 2Q313 0 306 0Q301 0 267 1T181 2Q125 2 96 1T63 0Q48 0 43 15Q43 19 47 35Q52 55 57 58T94 62Q147 64 164 69L233 345Q302 619 302 622Q302 624 258 624",119925:"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 344 686H434Q464 686 477 680Q480 677 607 454Q738 227 739 227Q742 227 789 418T836 618Q836 620 835 620L821 622Q811 622 779 624Q755 624 749 625T740 632Q737 635 737 644Q737 656 742 669T754 685Q755 685 757 685T763 686Q768 686 803 685T890 684Q925 684 951 684T990 685T1006 686Q1014 686 1016 684Q1027 679 1027 668Q1023 632 1011 626Q1007 624 978 624Q912 622 907 617Q907 616 831 314T753 8Q749 0 723 0H712Q699 0 692 7Q692 8 671 44T607 155T526 296L361 580L296 323Q234 74 234 68T302 62H307Q334 62 334 44Q330 6 317 2L313 0L280 1Q260 2 181 2Q125 2 96 1T63 0Q48 0 43 15Q43 19 47 35Q52 55 57 58T94 62Q147 64 164 69L233 345Q302 619 302 622Q302 624 258 624",119926:"53 245Q53 297 70 356T125 478T216 590T349 671T523 703Q656 703 735 637T815 445Q815 378 791 307Q727 104 527 17Q437 -17 344 -17Q289 -17 242 -5T150 35T79 116T53 245ZM664 489Q664 575 618 611T511 648Q463 648 416 627T334 570Q297 531 270 472T230 355T213 261T208 206Q208 177 215 151T237 98T284 56T358 40Q440 40 510 98T618 270Q664 400 664 489",119927:"162 62L302 623Q302 624 258 624H234Q214 624 209 626T200 638Q200 677 217 684Q220 686 439 686Q667 685 684 682Q686 681 693 680Q713 677 733 671T782 649T829 602T847 528Q847 450 784 382T604 293Q571 288 469 287H373L346 176Q340 151 333 122T321 78L317 64Q317 62 361 62H387Q420 62 420 44Q417 10 404 2L399 0L357 1Q331 2 224 2Q149 2 109 1T65 0Q43 0 43 17Q43 21 47 33Q52 54 57 58T89 62H113H162ZM692 558Q692 611 617 622Q610 623 529 624H452L381 343H458H492Q604 343 641 389Q662 414 677 471T692 558",119928:"53 245Q53 297 70 356T125 478T216 590T349 671T523 703Q656 703 735 637T815 445Q815 410 808 370T781 277T729 178T643 87T519 14L525 4Q540 -19 553 -25T592 -32Q632 -32 654 -24T680 -7T689 10T704 18Q713 18 717 12T722 0Q722 -8 711 -36T681 -101T624 -166T541 -194Q513 -194 494 -183T465 -157T450 -118T444 -79T443 -41V-7L433 -9Q391 -17 344 -17Q301 -17 263 -10T185 15T118 62T71 138T53 245ZM666 482Q666 529 652 563T614 615T565 640T512 648Q412 648 335 573Q268 506 235 389T201 202Q201 164 210 136T230 95T259 66L262 76Q269 109 302 135T382 162Q401 162 415 159T449 140T484 92L491 78L496 82Q502 86 505 88T515 97T528 107T541 120T555 137T570 156T585 179T599 205T612 235Q629 278 647 351T666 482ZM439 56Q439 58 439 62T435 75T426 92T410 106T383 112Q353 112 332 96T311 63Q311 38 355 38H366Q391 39 415 45T439 56",119929:"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 422 686H446H525Q634 686 698 674T806 620Q843 583 843 535Q843 505 833 478T805 432T768 396T728 370T690 352T662 342L651 338L654 336Q658 334 667 327T688 310Q719 278 719 237Q719 222 710 165T701 94Q701 35 748 35Q775 35 793 57T819 101Q822 112 826 114T843 117H849Q881 117 881 99Q881 78 852 39T781 -11Q765 -17 728 -17Q537 -13 537 94Q537 110 552 169T567 243Q567 292 529 309Q517 316 508 316T441 318H375L374 314Q374 312 343 189T311 64Q311 62 355 62H382Q414 62 414 44Q410 6 397 2L393 0L351 1Q325 2 221 2Q147 2 108 1T65 0Q48 0 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624ZM687 555Q687 617 589 623Q581 624 513 624H451L420 498Q413 468 405 436T392 388L388 371Q388 369 458 369Q464 369 485 369T515 369T541 372T570 377T596 386T624 400Q649 417 664 457T683 522T687 555",119930:"354 45Q429 45 467 91T506 184Q506 225 477 250Q461 262 384 279T294 300Q238 318 210 362T182 452Q182 493 202 540T257 623Q338 702 449 702Q491 702 501 701Q571 690 610 654Q614 649 617 650Q618 650 650 675T683 702Q685 703 692 703Q714 703 714 690Q714 686 687 578T658 466Q653 458 629 458Q606 458 602 463Q600 465 599 466Q599 467 599 469T598 473Q598 475 599 487T600 511Q600 584 557 614T454 645Q386 645 347 606T308 520Q308 506 311 496T323 477T338 464T360 454T384 446T413 439T441 433Q523 416 549 401Q581 384 602 352Q631 309 631 254Q631 214 615 170T567 83T478 12T347 -16Q322 -16 300 -14T261 -8T230 0T205 10T187 20T172 30L162 37L130 11Q124 7 119 3T110 -4T104 -9T100 -13T96 -15T93 -16T91 -17T88 -17H82Q76 -17 73 -16T69 -14T66 -10T63 -5L90 107Q97 133 106 170Q116 211 120 219T136 228H148Q167 228 173 227T179 218Q179 216 176 200T173 168Q173 102 227 74T354 45",119931:"498 62Q511 58 511 43Q511 10 494 1L490 0Q487 0 482 0T424 1T271 2Q201 2 157 2T94 1T72 0H70Q46 0 46 17Q49 54 62 60L66 62H137Q208 62 209 63L218 98Q227 134 244 203T278 339L347 613H300Q262 612 246 611T198 599T146 564Q128 545 114 512T91 454T79 425Q73 419 52 419Q22 419 22 434Q22 440 41 498T80 611L100 666Q105 673 111 675H434Q758 675 762 673Q772 668 772 657Q772 655 756 549T738 434Q735 419 711 419H707Q690 419 686 421Q677 425 677 434Q676 436 678 449T683 485T686 529Q686 553 679 569T662 594T631 607T593 612T544 613H502L433 340Q418 279 400 207T374 100L365 65L364 62H498",119932:"856 686Q877 686 877 668Q877 663 873 649T867 631Q861 624 828 624Q762 622 757 617Q757 613 705 409T651 200Q620 112 540 48T328 -16Q251 -16 196 2T113 51T75 112T63 176Q63 202 70 232T117 422Q129 469 141 520T160 598L167 623Q167 624 123 624H96Q79 624 73 626T64 639Q68 678 81 684Q85 686 104 686Q155 684 268 684Q340 684 377 685T418 686Q441 686 441 668Q437 632 425 626Q421 624 371 624H322L270 415Q224 232 217 198T209 141Q209 45 336 45Q372 45 406 52T475 77T540 128T585 211L590 229Q594 247 601 274T617 336T636 409T654 482T670 547T681 595T686 618Q686 620 685 620H683Q681 621 678 621T671 622Q660 622 630 624Q616 624 610 624T598 626T589 630T587 640Q587 647 590 659Q594 677 598 681T613 686Q618 686 653 685T740 684Q775 684 801 684T840 685T856 686",119933:"401 686Q415 680 415 668Q415 651 404 629Q398 624 356 624Q318 624 318 623Q318 620 337 508T377 284L397 174L472 285Q548 396 623 507T699 620Q698 621 652 624Q634 624 627 627T619 641Q619 648 622 658Q627 677 631 681T650 686Q654 686 686 685T766 684Q794 684 823 684T858 685Q874 685 878 683T886 671Q886 667 882 651Q877 632 873 628T850 624Q800 624 779 617Q774 617 770 613Q767 610 560 304T350 -5Q346 -9 332 -16H306H291Q270 -16 267 -2Q267 -1 260 37T238 161T210 313L156 624H116H94Q62 624 62 642Q66 678 78 684Q82 686 99 686Q144 684 246 684Q330 684 368 685L401 686",119934:"111 624Q109 624 102 624T91 623Q61 623 61 640Q61 660 70 678Q78 686 98 686Q140 684 239 684Q277 684 309 684T360 685T383 686H385Q407 686 407 668Q404 634 391 626Q387 624 348 624Q307 624 307 622Q307 618 332 409Q359 198 359 195L570 532L564 576L558 622V624H522H504Q472 624 472 641Q475 678 488 684L493 686L529 685Q551 684 645 684Q716 684 753 685T795 686Q818 686 818 669Q815 632 802 626Q798 624 759 624Q718 624 718 622Q718 615 743 410Q770 199 770 196Q770 195 806 253T903 406Q1035 618 1035 619Q1025 624 968 624Q943 624 943 641Q943 648 946 659Q950 675 952 679T963 686L998 685Q1020 684 1093 684Q1113 684 1139 685T1173 686Q1207 686 1207 669Q1207 664 1204 652Q1199 631 1194 628T1164 624Q1113 622 1101 615Q1098 612 905 305Q715 -1 709 -7Q699 -17 673 -17Q645 -17 639 -8L581 441Q581 444 442 221Q331 44 314 18T288 -14Q279 -17 263 -17H254Q229 -17 227 -5Q225 2 186 311L147 620V624H111",119935:"931 686Q953 686 953 670Q953 650 944 632Q936 624 924 624H914Q823 624 803 611Q800 609 696 503T591 396Q591 394 667 229L743 62H787H814Q846 62 846 44Q843 7 829 2Q825 0 817 0Q813 0 775 1T664 2Q590 2 551 1T508 0H507Q484 0 484 18Q484 19 488 37Q492 56 497 58T534 62L566 63Q567 64 520 169T471 274Q469 274 369 172T268 67L315 62Q320 62 328 62L335 61Q347 58 347 44Q344 10 331 2L326 0L287 1Q263 2 177 2Q95 2 78 1L53 0Q38 6 38 17Q38 40 50 57Q56 62 78 62Q169 62 188 75Q194 77 435 324L444 334L439 347Q437 351 373 492L313 624H268H246Q220 624 212 632Q210 636 210 642Q210 655 215 669T227 684Q230 686 247 686Q295 684 398 684Q438 684 472 684T527 685T551 686Q567 686 572 671Q572 667 568 651Q563 631 558 628T523 624T492 623H488L526 540Q563 457 564 457Q564 456 574 466T604 496T645 537L724 619Q716 622 677 624H673Q645 624 645 640Q645 660 654 678Q659 683 666 686L704 685Q728 684 813 684Q847 684 873 684T913 685T931 686",119936:"97 624H73Q40 624 40 640Q40 660 49 678Q57 686 77 686Q122 684 228 684Q269 684 304 684T360 685T385 686Q406 686 406 668Q406 662 403 653Q398 631 393 628T361 624H353Q321 624 321 623T376 491T432 360L448 377Q465 394 493 424T553 490L673 620Q662 624 630 624Q606 624 606 640Q608 678 623 684Q627 686 634 686Q638 686 671 685T755 684Q777 684 805 685T841 686Q861 686 868 683T876 669Q876 664 873 652Q868 631 863 628T829 624Q764 622 747 611Q727 590 590 441L437 275L411 170Q385 65 384 64Q384 62 429 62H453Q473 62 478 60T487 48Q488 44 484 29Q479 6 473 3Q468 0 454 0Q450 0 436 0T386 1T294 2Q220 2 181 1T138 0Q121 0 116 15Q120 54 133 60Q137 62 187 62H236L289 275L142 624H97",119937:"223 430Q192 430 192 448Q192 450 225 561T261 677Q265 683 270 684Q273 686 534 686Q796 686 797 685Q805 682 805 673Q805 668 804 661T800 648T798 641Q796 637 531 352L266 67L329 66H364Q412 66 446 70T523 96T596 157Q617 186 630 220T649 273T663 297Q667 299 684 299H688Q715 299 715 281Q715 278 673 145T628 8Q626 4 617 0H348Q289 0 221 0T139 -1Q112 -1 99 -1T78 1T69 5T68 12Q68 16 71 31T77 49L84 57Q91 65 104 79T133 110T170 151T213 196L610 624H540Q533 624 514 624T488 624T467 623T443 620T422 616T398 609T373 600Q292 560 255 449Q251 436 246 433T223 430",119938:"222 -8Q140 -8 89 34T38 158Q38 191 48 227Q72 329 151 390T327 452Q361 452 385 443T421 425T433 416H434L441 421Q448 426 460 430T486 435Q509 435 523 422T538 386Q538 380 522 315T488 179T467 93Q466 87 466 72Q466 42 483 42Q505 42 521 75Q531 94 541 134Q546 155 550 158T571 162H576H587Q607 162 607 148Q606 142 604 132T590 94T566 47T528 9T474 -8Q396 -8 358 40Q295 -8 222 -8ZM404 351Q383 401 324 401Q300 401 270 385T221 330Q206 296 186 220Q166 136 166 106Q166 72 184 58T228 43Q256 43 284 57T328 84T343 103Q343 106 374 228L404 351",119939:"220 -8Q142 -8 94 35T45 155V167Q45 187 52 218T104 426L153 622H149Q148 622 144 622T134 623T122 624T111 624T101 624T96 625Q84 628 84 642Q84 647 88 661T94 679Q98 684 109 685T185 690Q258 694 272 694Q289 694 293 679Q293 676 263 553L232 429L244 434Q256 440 281 446T331 452Q417 452 465 407T513 285Q513 235 494 184T439 90T346 20T220 -8ZM385 337Q385 400 318 400Q269 400 226 360Q214 349 211 341T191 268Q162 149 162 113Q162 44 226 44Q269 44 299 76T339 135T362 215Q364 222 365 226Q385 303 385 337",119940:"362 325Q362 344 371 361T390 386L399 394Q390 401 355 401Q276 401 231 338Q207 301 189 230T170 122Q170 43 264 43Q392 43 457 105Q472 120 480 117Q486 114 497 102T509 83Q509 79 502 70T477 47T432 21T360 1T259 -8Q194 -8 148 9T80 54T49 109T40 167Q40 280 129 365T352 451Q390 451 396 450Q448 442 473 416T499 358T477 302T421 274H417Q393 274 378 288T362 325",119941:"222 -8Q140 -8 89 34T38 158Q38 220 68 285T151 391Q230 452 329 452Q382 452 416 428L422 424Q423 424 447 523L472 622H468Q467 622 463 622T453 623T441 624T430 624T420 624T415 625Q403 628 403 642Q403 647 407 661T413 679Q417 684 428 685T504 690Q577 694 591 694Q608 694 612 679L467 91Q466 87 466 72Q466 43 483 43Q518 43 541 134Q546 155 550 158T571 162H576H587Q607 162 607 148Q606 142 604 132T590 94T566 47T528 9T474 -8Q396 -8 358 40Q295 -8 222 -8ZM404 351Q383 401 324 401Q300 401 270 385T221 330Q206 296 186 220Q166 136 166 106Q166 72 184 58T228 43Q256 43 284 57T328 84T343 103Q343 106 374 228L404 351",119942:"260 -8Q196 -8 151 9T83 54T52 111T42 169Q42 188 44 210Q50 240 58 266Q127 434 335 451L338 452Q342 452 345 452Q347 452 353 452T363 451Q426 451 464 424T502 352Q502 289 442 250Q381 211 222 211H184Q184 210 181 196T175 162T171 126Q171 43 264 43Q391 43 457 105Q472 120 480 117Q486 114 497 102T509 83Q509 79 502 70T477 47T432 21T360 1T260 -8ZM237 262Q427 266 427 349Q427 368 409 384T354 401Q316 401 287 388T242 354T216 314T202 278L197 263Q197 262 237 262",119943:"584 444Q597 439 597 426Q597 409 586 387Q580 382 505 382H434V380Q432 378 421 314T395 162T368 30Q324 -164 203 -199Q194 -201 175 -201Q123 -201 94 -177T64 -117T88 -58T145 -33Q169 -33 184 -47T200 -84Q200 -122 166 -150L174 -151H185Q202 -148 217 -112Q222 -94 240 9Q246 40 262 132T293 303T307 382H247H210Q190 382 182 385T173 400Q177 436 189 442Q193 444 256 444H318L319 446Q337 565 355 602Q373 640 404 664T458 694T503 701Q569 701 596 676T624 617Q624 581 599 557T544 533Q520 533 504 547T488 585Q488 596 491 606T499 624T508 637T516 646L520 650Q515 650 509 651Q459 651 459 561V554L458 518L452 484Q446 448 445 447V444H584",119944:"227 0Q142 0 93 43T43 166Q43 207 58 252T104 341T188 414T310 451L313 452Q316 452 319 452Q321 452 326 452T335 451Q367 451 390 443T425 425L436 416L443 421Q450 426 462 430T488 435Q511 435 525 422T540 386Q540 378 483 151T424 -82Q401 -139 335 -170T167 -202Q72 -202 36 -183T0 -125Q0 -90 24 -67T81 -43Q103 -43 119 -56T136 -99Q133 -124 114 -149L123 -150H183Q222 -150 254 -127T299 -74Q300 -71 306 -47T318 -1T324 23Q323 23 310 18T274 6T227 0ZM407 353Q406 354 404 358T400 365T395 371T388 379T381 385T371 391T360 396T346 400T329 401Q300 401 277 389T240 355T219 317T205 280Q171 148 171 109Q171 77 190 64T235 51T296 67Q322 82 337 98L345 106L407 353",119945:"477 56Q477 48 479 46T490 43Q522 45 544 75T577 140Q582 156 585 159T605 162H611H622Q642 162 642 148Q642 138 632 114T602 62T550 13T478 -8Q429 -8 394 17T358 83Q358 95 395 199T433 350Q433 400 394 400H388H383Q335 400 291 363Q256 332 236 298Q233 293 202 170T169 40Q160 18 141 5T99 -8Q70 -8 58 9T45 39Q45 51 116 336L188 622H184Q183 622 179 622T169 623T157 624T146 624T136 624T131 625Q119 628 119 642Q119 647 123 661T129 679Q133 684 144 685T220 690Q293 694 307 694Q324 694 328 679Q328 672 294 540Q286 507 278 473T264 420L260 403Q260 400 269 408Q327 451 393 451H401H410Q425 451 439 450T476 442T515 424T544 391T556 337Q556 286 517 179T477 56",119946:"205 615Q205 646 229 670T283 694Q310 694 324 679T339 641Q339 610 315 586T258 562Q235 562 220 577T205 615ZM24 296Q24 305 34 328T63 380T115 430T187 452Q205 452 223 448T262 435T295 406T308 360Q308 345 287 290T240 170T207 87Q202 67 202 57Q202 42 215 42Q235 42 257 64Q288 92 302 140Q307 156 310 159T330 162H336H347Q367 162 367 148Q367 140 357 117T329 65T276 14T201 -8Q158 -8 121 15T83 84Q83 104 133 229T184 358Q189 376 189 388Q189 402 177 402Q156 402 134 380Q103 352 89 304Q84 288 81 285T61 282H55H44Q24 282 24 296",119947:"321 616Q321 648 346 671T400 694Q425 694 440 680T456 640Q456 609 431 586T376 562Q353 562 337 577T321 616ZM297 360T297 373T294 392T288 400T278 401H276Q241 399 210 372T158 303Q151 287 148 285T129 282H123H116Q102 282 97 284T92 298Q96 331 153 391T279 451Q357 451 388 422T420 354V339L371 142Q363 111 353 71T339 13T329 -30T318 -64T308 -88T296 -109T283 -125T264 -142Q190 -202 88 -202Q44 -202 16 -181T-12 -125Q-12 -93 11 -68T68 -43Q92 -43 108 -58T124 -93Q124 -121 106 -144Q101 -150 103 -150Q120 -150 147 -128T191 -64Q194 -57 242 136T294 345Q297 360 297 373",119948:"99 -8Q71 -8 58 9T45 39Q45 51 116 336L188 622H184Q183 622 179 622T169 623T157 624T146 624T136 624T131 625Q119 628 119 642Q119 647 123 661T129 679Q133 684 144 685T220 690Q293 694 307 694Q324 694 328 679Q328 674 280 482Q231 290 231 287Q231 285 234 286Q259 302 294 334T356 390T420 433T493 452Q528 452 546 427T564 364Q564 308 538 282T480 256Q456 256 441 269T425 308Q425 339 444 359T483 384L502 389Q502 395 496 398Q493 400 483 400Q465 400 449 395T409 374T373 347T323 305T268 257Q274 256 282 256Q312 251 329 247T371 232T411 202Q431 181 431 146Q431 132 427 110T422 73Q422 44 440 44H442Q462 44 478 64T502 102T514 141Q518 157 522 159T547 162H558Q578 162 578 148Q578 118 537 56T440 -7H432Q374 -7 337 21T299 94Q299 103 301 116T304 139Q304 164 281 181T235 202L212 206H211Q176 47 160 24Q137 -8 99 -8",119949:"157 -8Q138 -8 118 -4T77 11T41 42T27 91V106L156 622H152Q151 622 147 622T137 623T125 624T114 624T104 624T99 625Q87 628 87 642Q87 647 91 661T97 679Q101 684 112 685T188 690Q261 694 275 694Q292 694 296 679L151 91Q150 85 150 71Q150 42 167 42Q186 42 205 75Q216 96 225 134Q230 155 234 158T255 162H260H271Q291 162 291 148Q290 145 289 140T283 118T271 87T254 54T229 23T197 1T157 -8",119950:"24 296Q25 302 27 312T41 350T65 397T104 435T159 452Q203 452 234 435Q268 419 285 384L295 392Q305 401 317 410T349 429T389 445Q411 451 446 451Q560 451 592 383Q593 380 594 379L595 375L604 384Q675 452 762 452Q893 452 916 367Q918 356 918 334Q918 285 881 183T841 66Q838 43 849 43Q876 43 901 69T940 138Q945 156 949 159T969 162H975H986Q1006 162 1006 148Q1006 138 996 115T966 63T914 13T841 -8Q794 -8 758 16T721 82Q721 96 758 199T796 351Q796 401 753 401Q702 401 662 369T599 298Q597 294 567 172T533 40Q525 22 506 7T462 -8Q435 -8 422 8T409 39Q409 48 425 114T458 248T476 320Q478 330 478 348T474 377T462 393T449 399T433 400H428Q380 400 336 363Q301 332 281 298Q278 293 247 170T214 40Q206 22 187 7T143 -8T104 7T90 39Q90 47 108 124T146 274L164 347Q166 355 166 372Q166 401 149 401Q129 401 115 379T89 306Q84 288 80 285T55 282H44Q24 282 24 296",119951:"24 296Q25 302 27 312T41 350T65 397T104 435T159 452Q203 452 234 435Q268 419 285 384L293 391Q363 452 454 452Q575 446 597 367Q599 356 599 334Q599 285 562 183T522 66Q519 43 530 43Q557 43 582 69T621 138Q626 156 630 159T650 162H656H667Q687 162 687 148Q687 138 677 115T647 63T595 13T522 -8Q475 -8 439 16T402 82Q402 96 439 199T477 351Q477 401 434 401Q421 401 409 398Q341 388 285 305L278 295L247 170Q216 46 214 40Q206 22 187 7T143 -8T104 7T90 39Q90 47 108 124T146 274L164 347Q166 355 166 372Q166 401 149 401Q129 401 115 379T89 306Q84 288 80 285T55 282H44Q24 282 24 296",119952:"254 -8Q191 -8 146 9T80 54T49 111T39 169Q39 206 53 247T96 329T176 402T292 446Q317 451 336 451L344 452Q353 452 359 452Q457 452 516 408T576 279Q576 169 488 81T254 -8ZM349 400Q321 400 287 385T231 338Q206 301 188 228T170 126Q170 99 178 83Q198 44 260 44Q367 44 409 157Q419 185 432 238T445 317Q445 336 443 348Q435 372 416 384T384 398T349 400",119953:"24 296Q25 302 27 312T41 350T65 397T103 435T157 452Q235 452 273 404Q336 452 409 452Q434 452 458 448T507 432T550 402T581 354T593 285Q593 221 564 159T480 53Q401 -8 302 -8Q290 -8 279 -7T259 -3T242 3T228 9T218 14T212 18L209 20Q208 19 190 -55T171 -131T198 -132H213Q240 -132 240 -150Q237 -187 223 -192Q219 -194 212 -194Q208 -194 176 -193T95 -192Q48 -192 24 -193T-3 -194Q-11 -194 -16 -190T-22 -182T-23 -176Q-20 -142 -7 -134Q-3 -132 20 -132H44L164 354Q165 357 165 372Q165 401 148 401Q113 401 90 310Q85 289 82 286T60 282H55H44Q24 282 24 296ZM465 339Q465 373 447 387T403 401Q375 401 347 387T303 360T288 341Q288 338 257 216L227 93Q248 43 306 43Q332 43 361 59T410 115Q425 147 445 224Q465 309 465 339",119954:"38 159Q38 209 58 260T113 355T205 425T327 452Q338 452 348 451T366 449T382 444T394 440T405 434T414 429T422 423T429 418Q440 429 481 440T533 452Q540 452 545 447T550 437Q550 432 481 152Q410 -130 410 -131T437 -132H452Q479 -132 479 -150Q476 -187 462 -192Q458 -194 451 -194Q447 -194 414 -193T330 -192Q277 -192 249 -193T217 -194Q202 -194 197 -179Q197 -175 201 -159Q206 -139 211 -136T243 -132H283L319 15L307 10Q295 4 270 -2T220 -8Q134 -8 86 37T38 159ZM402 353Q402 358 395 368T369 390T324 401Q301 401 282 394T249 369T226 338T208 297T196 258T186 218Q166 141 166 107Q166 44 229 44Q265 44 294 61T337 95Q341 100 371 222T402 353",119955:"24 296Q24 298 28 313T42 352T67 398T104 436T154 452Q198 452 230 437T273 404L282 411Q334 452 393 452Q441 452 470 423T500 350Q500 301 473 279T418 256Q395 256 379 270T363 308Q363 366 424 386Q424 388 420 391T405 398T385 401Q363 401 343 390Q321 380 289 341L252 192Q214 42 212 39Q190 -8 142 -8Q117 -8 103 7T89 39Q89 52 127 202T165 369Q165 402 148 402Q139 402 128 393T110 369Q100 348 90 310Q85 289 82 286T60 282H55H44Q24 282 24 296",119956:"140 290Q140 311 148 336T176 388T235 433T326 451H336Q355 451 373 449T418 439T460 412T476 363Q476 333 456 311T406 289Q384 289 371 302T357 335Q357 351 364 364T379 384L386 391Q386 392 381 394T362 398T330 400Q299 400 278 393T247 373T235 352T232 335Q232 322 242 312Q258 299 315 290T403 260Q457 224 457 167Q457 152 453 134T435 90T397 43T330 7T229 -8Q133 -8 95 22T57 91Q57 127 81 152T139 177Q161 177 177 164T194 121Q189 80 153 56Q179 43 236 43Q275 43 303 52T343 75T361 101T366 124Q366 148 338 161T272 180T232 186Q187 198 164 227T140 290",119957:"82 382H55Q21 382 21 399Q21 422 33 439Q39 444 93 444H144L162 517Q163 522 167 541T174 567T181 589T192 611T206 627T226 639T253 643Q276 643 291 630T306 594Q306 586 288 514Q284 499 280 481T273 454L271 445Q271 444 317 444Q322 444 331 444T345 445Q377 445 377 428Q377 408 368 390Q360 382 341 382H306H255Q182 86 182 75Q182 43 201 43H204Q242 46 279 81Q298 101 309 119T323 145T330 157T350 162H356H363Q377 162 382 160T387 146Q385 136 372 114T337 64T275 14T192 -7Q131 -7 95 19T59 90V105L128 381Q128 382 82 382",119958:"189 389Q189 397 187 399T176 401Q150 399 126 372T89 304Q84 288 81 285T61 282H55H44Q24 282 24 296Q24 307 35 331T65 383T117 431T187 452Q237 452 272 427T308 362Q308 347 273 254T238 111Q238 43 291 43Q319 43 344 58T380 86T391 103T426 247T464 396Q472 414 491 429T535 444T574 429T588 397Q588 390 570 315T534 168L516 97Q514 89 514 72Q514 42 531 42Q544 42 556 56Q574 76 589 134Q594 155 598 158T619 162H624H635Q655 162 655 148Q654 142 652 132T638 94T614 47T575 9T520 -8Q509 -8 498 -7T478 -3T461 2T446 8T434 16T424 23T416 29T410 35T406 39L405 41L397 34Q347 -7 288 -7H281Q148 -7 122 78Q116 95 116 125V136Q116 174 152 273T189 389",119959:"380 367Q380 397 406 425T465 453Q493 453 516 430T540 357Q540 314 524 250T467 115T373 13Q338 -8 292 -8Q218 -8 167 23T116 129Q116 178 152 275T189 388Q189 396 187 398T176 401Q148 398 125 372T89 304Q84 288 81 285T61 282H55H44Q24 282 24 296Q24 306 34 330T64 382T116 431T189 452Q231 452 269 429T308 362Q308 346 273 255T238 114Q238 43 306 43Q336 43 363 65T407 118T437 182T456 239T462 268Q462 290 417 315Q380 335 380 367",119960:"636 367Q636 400 664 426T719 453Q748 453 772 431T796 357Q796 321 782 256T727 112T633 6Q604 -8 567 -8Q466 -8 415 43Q414 42 410 38T403 31T396 25T388 18T378 11T367 5T355 0T340 -4T324 -7T306 -8Q249 -8 209 5T151 40T125 84T117 129Q117 176 153 274T190 388Q190 408 158 396Q112 376 90 306Q85 288 81 285T61 282H55H44Q24 282 24 296Q24 305 34 328T63 380T114 430T187 452Q240 452 274 427T309 362Q309 346 275 255T240 117Q240 43 317 43Q325 43 333 45T347 50T359 57T369 66T377 75T383 83T388 90L390 95Q390 99 389 110T387 129Q387 139 391 167Q393 177 419 282T448 396Q456 414 475 429T519 444Q546 444 559 428T572 397Q572 384 542 265T511 114Q511 43 579 43Q608 43 633 66T673 122T699 188T714 244L718 267Q718 291 673 315Q636 335 636 367",119961:"74 282H63Q43 282 43 296Q43 298 45 307T56 332T76 365T110 401T159 433Q200 451 233 451H236Q273 451 282 450Q358 437 382 400L392 410Q434 452 483 452Q538 452 568 421T599 346Q599 303 573 280T517 256Q494 256 478 270T462 308Q462 343 488 367Q501 377 520 385Q520 386 516 389T502 396T480 400T462 398Q429 383 415 341Q354 116 354 80T405 44Q449 44 485 74T535 142Q539 156 542 159T562 162H568H579Q599 162 599 148Q599 135 586 111T550 60T485 12T397 -8Q313 -8 266 35L258 44Q215 -7 161 -7H156Q99 -7 71 25T43 95Q43 143 70 165T125 188Q148 188 164 174T180 136Q180 101 154 77Q141 67 122 59Q124 54 136 49T161 43Q183 43 200 61T226 103Q287 328 287 364T236 400Q200 400 164 377T107 302Q103 288 100 285T80 282H74",119962:"206 -150Q240 -150 268 -134T314 -95T344 -48T362 -7T367 14Q339 -7 280 -7Q230 -7 195 5T144 39T122 79T115 122Q115 175 152 274T189 388Q189 396 187 398T176 401Q148 398 125 372T89 304Q84 288 81 285T61 282H55H44Q24 282 24 296Q24 306 34 329T64 381T116 431T188 452Q239 452 273 427T308 361Q308 347 273 253T237 109Q237 43 291 43T388 98Q388 99 425 246T463 396Q471 414 490 429T534 444T573 430T587 399Q587 386 537 186T483 -25Q461 -84 410 -126T296 -188Q248 -202 204 -202Q127 -202 96 -175T64 -114Q64 -82 86 -57T144 -31Q169 -31 184 -45T199 -83Q199 -89 198 -94T196 -104T193 -113T189 -120T184 -128T179 -134T173 -141T168 -147Q189 -150 206 -150",119963:"66 -8H60Q34 -8 34 5Q34 9 42 22T70 59T115 110Q162 156 255 229T381 332L389 339H381Q348 332 298 329T212 325T172 321Q168 318 151 318H146Q116 318 116 332Q116 334 118 342Q128 374 154 402Q205 452 265 452Q304 452 352 422T426 392Q441 392 462 421T485 451T508 452H518Q539 452 539 438Q539 431 516 401T458 334Q412 289 312 210Q229 146 191 111L183 103H195Q203 103 213 104T240 107T268 110Q301 114 337 116T391 119T428 123T455 134T469 157Q473 166 495 166Q521 166 525 161Q532 156 528 141Q510 81 456 37T337 -7Q297 -7 251 22T177 52Q154 52 134 38T100 8L88 -7Q86 -8 66 -8",119964:"76 60Q83 29 135 29Q190 29 264 81Q280 93 280 95T277 99T265 106T248 118Q189 166 189 237Q189 307 245 388Q267 421 299 436Q336 455 386 455Q488 455 550 403L559 395L571 405Q727 544 944 679L957 687L966 701Q968 704 970 707T973 712T975 714T978 716T982 717T989 717H995Q1004 717 1007 717T1013 714T1016 708Q1016 705 829 403L636 92L630 83Q659 93 685 110T728 143L745 158Q758 158 752 138L748 127L740 119Q676 58 605 42L593 22Q590 17 587 12T583 6T579 2T573 0T564 0H530H484Q480 3 480 8Q480 15 489 26T498 39T497 40Q477 40 423 49T327 74L316 78L302 68Q200 -8 121 -8Q85 -8 60 7T35 53T60 113T123 144Q144 144 153 132T162 106Q162 89 143 75T99 61Q90 61 76 65V60ZM904 614L905 615Q901 615 840 573T700 469T581 369L587 359Q600 340 608 315T618 273T622 238T624 216L764 414Q904 612 904 614ZM525 363Q493 405 379 418H375Q342 418 309 378Q251 300 251 234Q251 174 306 137Q318 128 322 131Q323 132 329 139Q351 161 362 180Q430 273 509 348L525 363ZM579 205Q579 245 571 278T556 323T546 337L521 311Q461 248 422 196T362 121L353 111Q427 85 499 79Q517 77 520 77L525 76L549 111Q551 114 556 121T563 131T568 138T573 147T575 157T577 169T578 185T579 205",119966:"367 89Q367 84 353 77T334 70Q325 70 312 83T298 120Q298 169 364 233T496 298Q538 298 563 275T588 220V213Q588 132 501 53T306 -26Q251 -26 211 6T170 114Q171 148 181 184T205 248T232 298T255 334T265 349T246 350Q127 350 77 390T26 480Q26 533 71 581T178 656T295 683Q312 683 312 676Q312 674 311 672L302 660Q294 648 292 647L286 646Q280 646 276 646Q197 641 145 583T93 476Q93 387 265 387Q271 387 277 387T287 388T292 388T313 414T373 483T451 562Q618 712 732 727Q733 727 740 727T753 728Q790 727 804 708T819 665Q819 643 810 617T773 553T699 481T572 414T385 361Q381 361 367 341Q247 172 247 86Q247 11 325 11Q404 11 465 95Q518 165 528 208Q529 212 529 220Q529 237 518 249T480 261Q431 261 387 209T343 126Q343 111 355 101T367 89ZM777 658Q777 691 738 691Q704 691 658 662T570 590T491 504T432 432T410 400H411Q416 400 440 405T505 423T589 455T675 506T743 576Q777 627 777 658",119967:"251 272Q199 272 168 298T136 374Q136 432 175 496T267 603Q321 645 395 676T552 708Q610 708 655 694T724 659T763 618T784 584L790 569Q792 569 800 572T819 576T840 578Q855 578 855 571Q855 566 846 554T829 541Q824 541 817 539T804 533T799 529Q802 517 802 483Q802 376 742 256T585 53T392 -31Q353 -31 300 -7L289 -2L277 -6Q242 -17 192 -17Q141 -17 113 -13T77 -3T68 14Q68 20 73 28T93 45T131 58Q152 62 197 62Q241 62 272 48L282 44Q308 65 334 93Q380 145 467 266T622 454Q644 476 664 493T694 517T720 534T740 547Q699 671 540 671Q461 671 385 625T276 534Q265 520 251 499T219 438T202 368Q202 309 267 309Q325 309 396 383T491 545Q492 548 493 552Q494 558 496 559T511 564Q513 565 514 565Q523 568 527 568Q534 568 534 560Q534 554 529 537Q507 442 420 357T251 272ZM332 20Q332 19 341 15T368 6T400 2Q425 2 457 13T531 49T614 125T690 248Q750 376 750 476V490L738 479Q698 436 646 366T554 239T455 121T332 20ZM226 20Q226 25 186 25Q181 25 174 24H166Q161 24 158 23H152Q170 21 197 21Q205 21 213 21T223 20H226",119970:"206 318L249 320Q249 327 259 352T282 399Q312 447 366 510T465 610Q588 717 661 717Q695 717 716 701T738 653T704 577Q663 522 610 474T512 397T424 346T359 315T333 306Q331 304 327 290T323 267Q323 229 368 229Q402 229 439 254T505 312T571 382T638 435Q642 437 644 437Q658 437 658 409Q655 403 647 399T624 379T595 326Q583 296 564 267T523 179Q504 126 483 91T423 27Q335 -37 231 -37Q191 -37 157 -30T95 -2T67 53Q67 89 94 123T159 158Q180 158 190 146T200 119Q200 102 178 89T136 75Q128 75 120 78T110 81Q105 81 105 62Q105 38 129 24T180 5T238 1H244Q282 1 319 32Q349 55 371 85T436 190L465 239Q413 192 354 192Q300 192 274 217T245 276Q245 284 242 284Q220 280 187 280Q106 280 59 315T12 409Q12 457 43 508T118 597T210 659T295 683Q308 683 308 675Q308 670 299 658T282 646Q266 646 240 633Q182 606 118 511Q76 448 76 400Q76 368 105 343T206 318ZM677 660Q677 680 646 680Q616 680 565 629Q537 601 514 571Q493 544 455 492T389 398T360 355Q366 357 386 367Q463 406 534 473T641 591T677 660",119973:"829 148Q845 148 845 143T841 130T823 109T788 83T730 54T644 22Q637 20 634 19T627 16T622 13T618 10T612 3T604 -6Q510 -112 396 -203T201 -312Q190 -314 171 -314H166Q156 -314 147 -312T123 -304T101 -283T92 -245Q92 -203 117 -160T175 -93Q214 -65 280 -41T390 -6T509 22L532 27L547 47Q673 219 673 225L665 228Q657 231 648 235T627 249T606 270T591 300T584 341Q584 389 614 447T686 544Q735 588 799 615T959 667T1108 713Q1118 717 1119 717Q1125 717 1129 705T1133 689Q1133 686 1115 673Q1051 627 1001 579T918 481T867 403T828 328T805 277Q802 271 801 267T798 261T798 259Q849 270 900 317Q956 371 956 421Q956 438 953 457T950 480Q950 481 950 482L951 484Q953 487 966 492T985 498Q989 498 994 473Q1000 441 1000 423Q1000 362 934 302T790 223L775 220L767 207Q757 191 731 158T685 98T662 63Q662 61 690 70T755 99T811 142L816 148H829ZM646 332Q646 308 659 291T685 268L698 263L735 320Q828 465 865 511Q923 582 1003 643L1005 645Q1004 645 924 620Q775 572 716 492Q646 401 646 332ZM184 -278Q233 -278 311 -212T444 -80L498 -15H496Q468 -20 424 -30T293 -70T174 -133Q167 -140 158 -153T138 -190T127 -232Q127 -278 184 -278",119974:"521 506Q521 493 549 493Q608 493 660 527Q667 531 690 555L736 604Q750 619 777 646T825 694T848 716T852 717Q857 717 860 711T865 697L866 690Q866 687 812 615Q654 404 654 401Q655 401 656 401T659 402T665 403T680 404Q718 404 734 374Q735 370 743 376Q745 377 752 382Q806 416 852 466T933 563T982 623Q1028 666 1075 686T1155 706Q1165 706 1173 705T1186 703T1194 699T1199 695T1201 692T1202 688V687L1204 677Q1204 667 1191 670Q1189 670 1183 670T1174 671Q1137 671 1086 643T1001 564Q970 517 899 449T749 339L739 333L736 322Q730 295 703 253T652 165T628 77Q628 21 681 21Q692 21 698 23Q751 46 817 134L827 148H844Q861 148 864 146Q869 140 859 127Q818 75 761 29T665 -17Q649 -17 633 -12T598 4T569 40T558 100Q558 128 563 152T585 205T609 245T643 294Q647 300 645 300Q633 297 615 297Q607 297 600 298T589 300T584 301Q581 301 569 284T536 236T488 171T418 97T331 28Q233 -37 155 -37Q104 -37 68 -17T29 44Q29 82 55 120T123 158Q144 158 154 146T164 119Q164 102 143 89T100 75Q92 75 86 76T77 80T72 82Q68 82 68 59Q68 37 85 23T123 5T167 0Q203 0 238 21T311 85T382 174T468 288T563 410Q576 426 588 440T607 462T615 472L605 468Q568 456 533 456H527Q490 456 463 483Q451 496 451 508T468 545T486 581Q486 593 465 593Q448 593 425 568T384 518T364 493Q364 492 347 492Q326 492 326 499T351 537T414 599T477 630Q509 630 528 615T547 576Q547 556 534 533T521 506ZM675 357Q675 368 665 368Q656 368 644 363Q631 355 616 333H628Q640 334 672 341Q675 354 675 357",119977:"764 513Q764 482 772 423T780 330Q780 304 778 285T775 256T773 245Q778 252 826 328T932 484T1042 617Q1077 652 1114 678T1173 715T1200 726Q1208 726 1208 717Q1208 711 1206 695L1203 679L1199 675Q1197 675 1187 670T1161 657T1133 639Q1050 583 959 456Q906 381 858 307T779 179T725 83T691 18T679 -6Q677 -8 660 -8H656Q639 -8 639 -1Q639 4 646 17Q685 93 685 173V196Q685 233 681 288T676 380Q676 438 687 487L664 454Q505 230 454 170Q366 64 290 14T163 -36H152Q87 -36 58 -11T29 46Q29 82 55 120T123 158Q144 158 154 146T164 119Q164 102 143 89T100 75Q92 75 86 76T77 80T72 82Q67 82 67 59Q67 37 89 19T167 1Q187 1 197 3Q221 9 246 22T292 52T336 91T375 132T411 174T440 212T463 245T478 266Q779 695 784 698Q786 700 802 700H818Q824 694 824 692T809 668T779 604T764 513",119978:"259 -8Q230 -7 205 0T153 24T112 74T96 153Q96 254 174 379T374 599T607 707H621Q732 707 778 661Q805 634 805 598Q805 558 775 517T696 452L684 447V441Q684 378 626 273T484 97Q379 7 288 -7Q279 -8 259 -8ZM760 594Q760 670 608 670Q562 670 493 622T347 472Q174 240 174 131Q174 76 205 53T279 29Q294 29 306 32Q405 60 507 205Q592 325 616 401Q625 426 625 435Q625 436 621 436T603 440T569 449Q524 466 515 475Q513 477 513 481T525 496T541 508L548 504Q555 501 565 497T587 488T609 480T625 476Q627 476 626 481Q626 486 623 494T613 513T589 533T548 541Q495 541 413 454T286 281Q265 241 254 201T240 141T235 120Q234 118 217 111T197 104Q195 104 192 107T189 112Q190 125 193 147T220 231T280 348Q335 428 407 493T539 576Q548 578 563 578Q594 578 617 568T653 546T672 518T681 494T683 482Q683 481 684 481Q690 481 707 495T742 538T760 594",119979:"571 345Q571 384 612 418T687 452Q698 452 698 445Q698 436 679 417Q677 415 670 415Q650 412 633 389T615 350Q615 340 621 331T634 319T643 315L663 342Q751 462 817 536Q873 595 896 614L907 625Q843 680 701 680Q594 680 499 632T344 516Q317 486 296 449T267 384Q262 366 262 354Q262 332 276 316T326 299H327Q374 299 426 338Q481 376 537 456T597 598Q597 616 599 617Q601 619 614 624T630 630Q639 630 639 604V587V581Q639 519 597 456Q544 377 462 320T318 262Q278 262 250 282T222 350Q222 418 285 504Q360 597 480 656T702 716Q773 716 825 707T898 688T951 660Q962 670 985 685T1012 700Q1018 700 1022 690T1026 673Q1026 670 1019 664Q988 633 988 631Q988 630 999 618T1020 580T1031 522Q1031 471 1003 419T928 330Q854 275 765 264Q757 262 733 262H714L701 245Q615 121 473 42T218 -37Q159 -37 125 -15T90 46Q90 82 116 120T185 158Q203 158 213 147T224 121Q224 110 219 102Q198 75 159 75Q154 75 149 76T143 77T140 77Q137 72 137 53Q138 37 149 26T177 9T205 2T228 0Q313 0 419 74T602 257L620 281L614 285Q607 289 601 294T587 306T576 323T571 345ZM950 529Q950 576 943 576Q940 576 840 439T741 299H751Q804 300 845 334T924 438Q949 490 950 529",119980:"330 387Q330 331 402 331Q463 331 514 371T589 459T613 542Q613 559 608 570T598 588T593 596Q593 601 617 610Q632 617 636 616Q675 585 675 527Q675 464 629 409T516 324T387 294Q271 294 271 394V402Q271 438 292 478Q344 582 457 649T672 717Q765 717 825 675T885 548Q885 433 771 298T498 76Q493 73 491 72T486 69T484 67T485 66Q539 41 607 41Q655 41 703 71T780 139L787 148H804Q806 148 809 148Q826 149 826 140Q826 128 786 91T687 19T589 -16H576Q503 -16 414 20L396 27Q279 -17 192 -17Q130 -17 92 2T54 53Q54 92 107 123T222 155Q303 155 401 106L431 91L441 97Q476 118 527 157Q622 236 711 361T801 573Q801 591 795 607T775 641T732 668T660 679Q592 679 528 644T422 560T355 464T330 387ZM201 20Q232 20 267 27T322 40T342 49Q342 52 315 60T243 77T160 86Q150 88 144 88Q130 88 122 79T112 62L111 53Q111 20 201 20",119982:"346 463Q346 419 406 386T576 352H588L613 384L681 476Q767 594 842 651T973 708Q1016 708 1016 661Q1016 621 987 562T894 449Q802 375 696 338L682 334L665 312Q638 279 605 233T547 158T482 97Q418 46 332 5T158 -36Q87 -36 58 -11T29 48Q29 82 55 120T123 158Q144 158 154 146T164 119Q164 102 143 89T100 75Q92 75 86 76T77 80T72 82Q67 82 67 59Q67 28 98 14T166 0Q232 0 320 55T491 226Q530 279 551 305L558 314Q558 315 543 315Q417 321 353 365T289 460Q289 566 488 632Q578 662 660 665H679Q685 660 685 657T676 642Q670 633 666 629L664 628Q663 628 661 628T655 628Q606 628 546 615T426 568T350 486Q346 475 346 463ZM976 653Q976 671 959 671Q938 671 919 661T883 629T858 593T835 554Q832 548 830 545Q802 495 775 455T734 400T721 382L736 388Q876 449 946 568Q948 572 949 573Q976 622 976 653",119983:"354 350Q264 350 264 426Q264 442 265 448Q279 514 347 582T503 692T662 735Q719 735 774 714T882 672T983 651Q996 651 996 644Q996 639 977 612T954 581Q953 580 938 580Q909 582 884 587L869 591L870 587Q870 583 849 557T796 491T748 422Q729 391 692 313T620 188Q555 105 454 34T253 -37Q214 -37 181 -30T120 -2T92 53Q92 89 119 123T184 158Q205 158 215 146T225 119Q225 102 203 89T161 75Q153 75 145 78T135 81Q130 81 130 62Q130 39 153 24T204 5T267 0Q311 0 358 29T454 117T539 226T629 358T710 476Q726 496 744 516T778 551T807 577T828 595L836 601L785 623Q743 642 713 651T668 661T626 663Q564 663 509 644T418 596T356 535T317 475T305 431Q305 416 312 408Q323 388 369 388Q429 388 465 411T530 480Q557 526 557 565Q557 573 556 579T555 587T555 590Q555 591 568 600T584 611Q588 612 600 603Q622 581 622 549Q622 516 600 475T536 405Q454 350 354 350",119984:"55 377Q55 443 122 523T290 660T478 717Q533 717 575 689T618 594Q618 565 611 538T585 477T552 422T506 355T458 288L357 146Q307 68 307 31Q307 20 318 20Q326 20 331 21Q367 27 411 57T490 128L767 500L861 617H908H939Q953 617 956 616T960 609Q960 605 928 566T816 423T648 198Q587 113 571 86Q540 34 540 21Q540 20 545 20Q580 25 623 55T696 124Q702 132 704 133T722 134H739Q744 130 744 127T735 113Q713 80 655 38T548 -14Q527 -17 524 -17Q475 -17 473 47V63L462 55Q364 -17 302 -17Q235 -17 235 69Q235 88 239 105T248 135T268 171T292 205T328 251T369 304Q376 313 395 338T423 374T450 408T476 445T499 479T519 514T534 546T545 579T548 608Q548 647 522 663T460 680Q355 680 243 591T99 406Q97 399 97 383V377Q97 339 153 339Q169 339 175 340Q215 350 241 373T298 444Q333 496 349 535T367 588T374 603Q402 616 408 616Q416 616 416 608Q416 563 393 492T320 378Q233 302 140 302H132Q75 302 57 353Q55 361 55 377",119985:"540 717Q542 717 545 717Q562 717 562 710Q562 708 557 702T541 678T517 632T485 544T448 407Q447 405 443 388T438 366T433 345T427 321T420 299T411 274T400 250T387 223T372 197Q363 181 364 181L388 203Q476 284 527 354T620 490T718 612Q754 647 790 673T835 700Q839 700 842 691T848 672L850 662Q850 657 842 653Q803 630 768 600T699 527T653 467T610 405Q554 322 518 282T368 138Q307 84 273 51T231 9T218 -5L207 -17H175Q169 -11 169 -9Q169 -4 183 10Q227 56 258 120T302 234T330 350T356 445Q357 450 360 458L362 464Q317 434 276 434Q221 437 221 479Q221 498 240 521T259 552Q259 565 235 565Q209 565 174 546T105 482Q103 480 102 478T99 474T97 472T95 470T93 468T90 467T86 467T81 467H75Q56 467 56 475Q56 482 82 511T156 570T253 601Q289 601 311 590T334 557Q334 543 312 517T289 478Q289 471 297 471Q327 471 378 514Q384 519 390 531T412 571T451 632Q482 675 524 717H540",119986:"232 504Q232 492 263 492Q304 492 356 515L367 520L379 537Q443 632 515 705L527 717H543H552Q564 717 564 709Q564 705 562 703T554 694T540 677T518 643T488 589T448 504T398 385Q368 309 353 281L349 270L523 472L669 634Q726 695 737 706T757 717H765Q786 717 786 710Q786 704 776 691T738 627T675 497Q630 394 609 354T541 244Q456 120 449 111L447 107L448 108Q630 240 700 327Q734 368 788 463Q821 520 841 550T898 619T980 683Q1010 700 1018 700Q1020 700 1023 697T1026 692Q1026 688 1024 671T1020 652Q1018 650 1007 645T988 635Q940 609 902 565T842 477T781 374T699 272Q653 226 535 133Q423 47 373 -2L358 -17H342Q320 -17 320 -11Q320 -7 328 5T354 46T390 112Q416 161 439 217T488 326T564 453L589 490Q587 490 523 414T352 217T166 14Q138 -16 137 -16Q136 -17 120 -17Q106 -17 103 -16T99 -9Q99 -5 100 -3T106 3T116 14T132 35T154 72T184 129T222 212T270 327Q310 426 337 471L326 467Q278 455 243 455Q209 455 188 462T161 478T155 496Q155 508 176 533T198 576Q198 579 198 581T192 588T178 593Q151 593 100 519Q89 504 86 502T75 499H68Q46 499 46 506Q46 510 63 534T112 587T170 627Q178 629 195 629Q235 629 252 613T270 577Q270 556 251 532T232 504",119987:"351 351Q308 351 290 373T272 426Q272 487 329 566T478 688Q538 717 584 717Q635 717 681 696T745 620Q752 598 752 564T745 498L741 485Q742 486 769 516T825 573T889 634T962 689T1027 716Q1035 717 1060 717Q1083 716 1096 714T1120 705T1131 686Q1131 668 1109 647T1055 626Q1035 626 1026 638T1016 663Q1016 667 1020 679H1015Q971 671 886 589T728 413L688 360Q688 359 725 359H750Q762 359 766 357T770 348Q769 345 761 335T750 322Q748 321 704 321H660Q651 311 632 282T589 199T565 107Q565 25 653 20Q684 20 720 44T779 95T826 152T850 183L856 184Q861 184 865 184Q888 184 888 173Q883 163 845 117Q770 37 723 10T638 -17Q584 -14 554 17T523 101Q523 147 534 167L532 166Q530 164 526 160T518 153Q378 15 256 -15Q250 -16 226 -16Q161 -16 132 7T103 59Q103 93 129 125T194 158Q232 158 232 121Q233 118 233 113T221 96T188 77Q182 75 168 75T150 78V70Q150 43 178 32T241 20Q340 20 527 286L552 321H524Q489 321 489 330Q489 333 497 344T509 358Q511 359 545 359H579Q580 362 597 389T631 445T661 514T675 586Q675 637 645 658T572 680Q506 680 444 632T348 527T314 434Q314 388 361 388H364H366Q380 388 389 390T416 408T457 454Q487 497 505 536T526 594L529 613Q531 615 545 622T560 630Q568 630 573 613T578 577Q578 518 532 455Q504 413 453 382T351 351",119988:"155 280Q116 280 87 300T57 368Q57 409 87 466T192 589Q269 653 345 684T472 716Q572 716 613 675Q644 644 644 599Q644 585 643 574T637 550T629 529T616 505T600 481T578 450T554 416Q494 330 493 328L480 306Q466 278 466 256Q466 227 492 227H496Q514 227 534 234Q541 237 544 241T571 279L762 559Q777 579 792 595Q818 620 856 646T919 686T946 700Q951 700 955 692T959 677Q959 673 947 665T911 639T866 595Q816 538 749 408T640 225Q574 138 464 61T248 -17Q190 -17 144 1T98 62Q98 81 109 102T131 135Q156 156 183 158Q226 158 226 121Q226 111 224 107Q215 93 196 84T162 74Q154 74 147 77H144V70Q146 41 185 31T263 20Q363 20 493 175L507 192H504Q500 191 498 191Q484 189 476 189Q430 189 405 219T379 287Q379 294 379 299T382 311T385 322T391 335T398 347T408 363T420 379T434 399T450 422Q455 429 469 449T488 475T504 499T520 523T533 543T544 565T552 583T557 603T559 620Q559 680 467 680Q402 680 333 646T213 563T131 462T98 373Q98 343 119 330T169 317Q187 317 212 333Q242 354 291 423T352 555Q354 562 355 588Q355 612 356 612Q357 614 371 622T387 630Q391 630 397 623T409 597T415 556Q415 507 380 448T294 344Q216 280 155 280",119989:"221 428Q221 487 280 555T425 670T583 717H587Q641 717 665 695T689 646Q689 625 674 600T658 564Q658 550 671 541T695 530T710 528L718 539Q779 613 821 646Q894 707 964 707H970Q1010 707 1025 675Q1032 661 1032 645Q1032 626 1022 607Q1008 579 980 560T897 522Q867 512 836 505T788 496L771 493Q768 493 760 477T736 429T702 370Q700 367 698 363Q696 360 696 359H805Q809 355 809 350Q809 340 791 322Q789 321 728 321H668Q562 179 433 88L419 78L434 73Q505 54 554 54Q609 54 654 82T720 140H752Q758 134 758 132Q758 128 747 113Q711 67 657 32T552 -14Q540 -16 517 -16T480 -15T439 -3T375 27L354 38L338 30Q257 -8 191 -8H184Q154 -8 133 -5T103 1T88 10T83 19T83 29Q83 35 86 44T100 65T127 88T173 105T241 112Q286 112 342 99L360 95L372 105Q434 157 523 270L560 320Q560 321 533 321L507 322Q502 325 502 330Q502 339 521 358Q523 359 556 359H588L669 474L682 491Q676 492 665 494T647 498T632 503T614 510T596 521Q556 547 556 570Q556 585 579 618T603 663Q603 679 568 679Q510 679 452 650T354 581T288 500T262 431Q262 407 280 397T321 387Q331 387 341 390T360 398T376 409T390 423T400 435T409 447L414 454Q457 514 460 562Q460 575 461 576Q461 577 475 586T492 595Q496 595 503 588T514 572Q520 559 520 539Q520 473 452 412T308 351Q269 351 245 370T221 428ZM989 642Q989 667 953 671Q905 671 871 644Q853 632 832 604T799 554T787 531H788Q801 531 842 539T916 561Q989 592 989 642ZM198 29Q230 29 257 36T295 52L306 59Q306 63 259 73Q251 74 209 74Q177 74 158 66T134 48L130 40Q130 29 198 29",120068:"22 505Q22 563 94 624T271 685H280Q416 685 443 560Q447 535 447 504Q444 414 405 330L399 319L229 155Q233 154 241 153T253 150T265 145T281 135T301 119T328 93L357 64L402 92Q438 116 473 137L500 154V339Q500 528 495 593V601L559 649Q621 696 624 696L638 686L629 677Q599 650 593 638Q582 614 581 504Q580 490 580 443Q580 314 584 238Q584 235 584 224T584 210T585 199T586 187T588 176T591 164T595 152T601 137T609 121Q630 77 640 77Q661 77 703 101Q704 95 706 90L707 86V84L636 29Q618 15 601 2T574 -19T564 -25L500 121Q499 121 399 48L299 -26Q298 -26 291 -15T272 11T245 42T209 69T165 80Q120 80 58 43L48 37L40 42L32 48L122 117Q196 173 241 211Q319 280 343 327T368 447Q368 535 317 582Q264 633 199 633Q155 633 122 605T86 542Q86 518 133 467T181 387Q181 348 140 309Q113 281 73 260L64 255L50 265L59 273Q112 307 112 345Q112 363 90 387T45 441T22 505",120069:"48 506Q48 568 120 629T268 691Q362 691 425 594L431 585L441 594Q478 628 528 657T629 686Q665 686 687 670Q703 658 718 584T753 506Q756 505 763 505Q778 505 804 512L815 516L820 496Q820 494 808 490T774 476T732 454Q720 445 708 437L675 415L640 394L625 383Q626 382 635 382Q652 382 670 379T712 364T754 336T784 289T797 220Q797 172 776 122Q769 106 766 102T745 84Q654 11 619 -8T538 -27Q483 -27 387 10T249 47Q218 47 186 34T133 8T112 -5T104 7T97 21L196 82Q259 120 284 140Q333 181 351 214Q368 251 368 353Q368 588 228 620Q222 621 205 621Q160 621 139 596Q117 569 117 548Q117 526 162 470T208 387Q208 352 179 320T104 264Q88 256 86 256Q83 256 70 266L82 274Q134 309 134 343Q134 352 130 359Q118 377 100 401T72 439T56 470T48 506ZM453 528Q457 496 457 419L458 357L488 367Q554 390 622 425Q673 449 673 453L671 454Q669 456 665 460T657 473T648 498T639 541Q629 597 616 613Q599 633 567 633Q534 633 493 599Q471 577 457 540L453 528ZM713 176Q713 252 661 295T528 339Q512 339 494 336T466 330T455 325Q454 325 452 311T444 270T425 217L420 207L304 118L319 116Q381 111 475 74T602 37Q655 37 684 79T713 176",120071:"346 611Q300 611 261 604T194 584T144 555T107 519T82 481T65 443T55 410T50 383T48 367L37 372L27 378V393Q33 524 115 603Q160 648 230 666T365 685Q423 685 434 684Q745 653 745 405Q745 281 694 151L687 133L657 103Q524 -27 470 -27Q456 -27 331 18T157 64Q122 64 84 28Q67 9 57 -6L50 -16L43 -8L35 0Q35 3 46 22T83 74T141 133H154Q208 136 253 161T299 230Q299 259 277 290T232 348T209 392Q209 434 254 479T358 556L368 561L382 550Q382 549 381 548T377 545T371 541Q353 527 326 496T298 444Q298 430 343 365T389 277Q389 240 353 202T267 136L252 127Q304 118 400 83T513 47Q548 47 582 79T635 145Q671 208 671 323Q671 390 651 441T599 524T523 576T436 603T346 611",120072:"301 564Q240 564 203 507T165 361Q165 280 190 218T260 119T358 64T474 46Q491 46 499 47L511 48L628 106V80L499 -5Q498 -6 497 -7T494 -10T490 -12T485 -15T478 -17T468 -19T456 -21T439 -22T418 -23T392 -24Q252 -20 169 67T86 315Q86 409 124 491Q128 500 139 508Q211 560 272 591L293 601L325 585L338 594Q374 617 422 639T502 674L532 685Q533 685 540 663T557 614T574 581Q580 575 591 575Q600 575 616 580T634 585V564L623 559Q572 535 532 529L522 527Q491 547 442 627Q442 628 440 627T435 624T428 620Q410 610 405 597T399 559V553Q399 534 409 487Q419 431 427 369L476 400Q526 431 526 432Q531 426 537 420Q565 382 602 359Q611 353 610 352Q609 351 575 332T537 312Q536 312 505 335T463 358Q451 358 439 352T425 337Q394 243 263 223L251 221L243 229L235 236L245 239Q274 247 303 266Q320 277 325 290T330 336Q330 394 315 451T300 531Q300 549 303 561Q303 564 301 564",120073:"198 617Q177 617 159 609T128 587T106 557T91 524T82 494T76 472L75 463Q74 463 67 468T59 474Q59 488 63 510T80 564T114 622T170 667T253 686Q272 686 295 680Q330 672 384 645T468 598Q498 580 524 580Q549 580 595 626L612 643V616L599 599Q522 500 482 500Q466 500 435 514L420 521Q388 516 349 486T309 415Q309 396 323 366T352 315T367 294Q367 293 375 301T398 322T429 352L490 410Q537 355 542 332Q542 330 531 315T510 286L499 273Q479 313 449 313Q437 313 419 303T390 282L378 271L394 250Q444 183 470 129Q484 96 484 71Q484 -19 402 -86T223 -153H220Q175 -153 137 -120Q103 -89 103 -8Q103 12 106 40T109 96Q109 132 103 146T72 161Q46 161 16 143L14 154L11 165Q88 219 143 219Q163 219 177 197T192 127Q192 102 186 65T179 4Q179 -60 210 -88T272 -117Q319 -117 362 -75T405 33Q405 72 363 139T278 271T235 368Q235 385 243 404T264 439T292 472T324 500T353 522T374 538L382 543Q382 544 351 562T274 598T198 617",120074:"373 560Q373 543 378 509T388 448T394 421Q396 421 416 433T474 474T548 537L538 543Q481 570 452 628L487 659Q521 690 522 690L526 684Q529 677 535 667T551 646T575 625T607 608Q617 606 621 606Q644 606 660 622L664 600L497 455Q495 453 527 453H546Q628 453 665 407L666 406Q710 357 710 297Q710 196 631 109L621 98L577 69Q471 -7 452 -15Q413 -26 370 -26Q239 -26 155 59Q66 148 66 319Q66 442 113 505L191 552Q269 600 270 600H271Q273 600 280 596T293 589T299 586Q300 586 357 623Q413 659 415 659L426 649Q373 604 373 560ZM219 228Q305 262 305 329V343Q305 384 294 434T282 519Q282 562 287 567Q287 569 286 569Q222 556 191 520Q144 464 144 362Q144 213 228 128T420 42Q514 42 568 103T622 255V260Q622 320 578 357Q526 400 453 400Q434 400 410 396L399 394L400 378V372Q400 330 388 301T348 254T305 232T252 217Q245 215 242 214L234 213L226 220L219 228",120077:"194 601Q175 601 155 590T121 564T95 533T76 506L69 495Q55 503 55 507Q55 509 60 521Q87 586 132 636T222 686Q251 686 289 660T363 607T422 580Q442 580 466 588T506 604L522 612V591L487 574Q371 517 359 517H357Q332 522 280 561T194 601ZM383 39Q383 96 356 203T329 361Q329 364 329 370T330 378L331 388L339 399Q362 429 394 462T446 513T469 531Q470 531 477 527T484 521L474 509Q411 434 411 379Q411 341 434 223T458 82Q458 1 390 -69T239 -139Q191 -139 162 -123T123 -83T108 -30T101 23T88 64T52 80Q27 80 -4 64L-10 80Q-5 85 13 98T63 128T118 144Q149 144 163 129T179 93T182 38T187 -19Q199 -96 278 -96Q294 -96 309 -91T343 -73T372 -31T383 39",120078:"154 37Q219 41 219 142Q219 203 190 302T160 434Q160 445 172 472T209 534T269 602T354 657T460 680H472Q576 680 618 617V599Q618 578 615 555T608 517T602 501Q596 495 587 495Q586 495 586 499Q586 500 586 505T585 513Q567 628 415 628Q384 628 356 621T302 596T260 546T244 466Q244 416 258 377L261 367L276 382Q294 401 317 422T386 471T468 500Q500 500 518 477T544 422T554 386Q555 382 560 376T576 364T601 357Q612 357 623 361Q623 360 621 351T617 340L541 305L465 272Q469 271 476 270T488 266T502 260L512 255L519 242Q533 211 546 157T564 93Q584 53 617 53Q649 53 682 74V54L675 46Q646 17 612 -5T554 -27Q546 -27 538 -23T517 -9T494 28T478 91Q465 172 448 200T378 228Q337 228 289 207L288 196Q288 160 284 138Q283 125 262 98Q185 1 112 -24L102 -27L91 -25Q47 -13 17 31Q17 33 49 69L80 106Q111 37 154 37ZM421 434Q411 436 405 436Q370 436 336 407T275 337L267 325L271 313Q288 257 288 234Q289 234 395 276T502 319Q501 320 499 323T493 330T485 345T475 371Q473 378 468 388T449 416T421 434",120079:"251 231Q251 254 206 341T160 468Q160 529 238 605Q313 677 425 685L432 686Q440 686 445 686Q520 686 545 657T571 576Q571 548 568 517T564 480Q564 466 572 460T608 452H623V431L619 430Q618 430 611 428T591 423T566 417L516 404Q497 415 491 419T480 433T475 461Q475 470 477 498T480 546Q480 561 480 569T474 592T459 615T429 631T379 638Q322 638 283 606T239 526Q237 480 280 394Q319 310 320 268V250Q308 235 244 169L203 128H210Q215 128 256 112T357 80T466 64Q526 64 564 88T625 186L629 196Q643 187 644 186Q618 70 604 41Q577 -15 513 -24Q496 -26 476 -26Q418 -26 344 -3T211 45T133 69Q115 69 97 50T65 7T49 -20L45 -16Q41 -11 37 -6T33 0Q33 8 66 69T111 134Q251 156 251 231",120080:"687 578Q690 586 719 612T794 665T877 692Q909 692 926 670T953 614T973 570Q983 561 1000 560Q1023 560 1048 569V553L1034 546Q1003 528 972 504T933 466Q905 403 905 264Q905 205 909 172T920 126T940 91Q951 74 959 74T997 87L1027 100V79L956 27Q940 15 922 2T894 -19L885 -26Q883 -26 854 27L825 80V192Q826 314 830 341Q831 345 833 356Q840 398 844 404Q871 444 920 489L917 491Q914 493 911 495T903 501T898 508Q893 516 877 562T852 616Q840 628 818 628Q751 628 702 541L697 532L700 515Q708 467 708 419Q706 348 690 276T662 169T643 126L634 116Q626 105 611 87T581 51L522 -22L514 -15Q470 21 452 21Q431 21 394 -16L384 5L386 9L426 60Q449 87 460 95T486 104Q487 104 491 104T497 103Q514 99 541 81L559 69Q595 96 606 169T618 350Q618 486 598 543T517 601Q484 601 458 570T432 523Q432 516 434 492T436 443Q436 250 369 133L363 122L280 50Q207 -16 192 -27L182 -18Q136 26 106 26Q83 26 62 9T37 -16L27 0L33 10Q41 22 54 39T94 81T143 106Q178 106 225 62L235 53Q283 82 307 117Q352 190 352 359Q352 408 345 451T320 534T267 597T183 621Q159 621 147 617T120 598Q97 574 96 556Q96 528 143 469T191 377T161 311T102 262T70 245Q69 245 59 252T49 260L56 264Q63 268 73 275T94 291T111 312T118 338Q118 355 95 384T50 446T27 506Q31 567 101 626T255 686Q297 686 330 671T382 632T409 595T421 572V571L430 580Q454 610 496 634T588 659H590Q655 659 683 585L687 578",120081:"112 334Q112 356 70 410T27 497Q27 553 94 619T229 685Q230 685 236 685T246 686Q303 686 349 654Q373 636 392 607T419 558L426 538L454 576Q474 604 486 618T520 651T569 678T633 686Q668 684 687 673T713 651T730 609Q730 608 732 600T736 588T741 578T747 568T754 561T765 555T779 553Q789 553 817 562Q819 557 819 555V547L790 526Q743 492 730 479T712 447Q697 369 697 281Q697 166 726 108Q741 76 755 68Q759 66 767 66Q789 66 825 93V82Q825 71 822 70Q821 69 763 27T701 -18L692 -25L668 15Q662 25 650 45T635 70L627 85V107Q627 122 626 162T624 285Q624 381 632 398Q638 409 651 425T675 454T696 477T707 489H696Q683 490 679 492T669 507T653 551Q642 588 627 608T584 628Q572 628 560 625T538 616T519 602T502 586T486 568T473 549T463 532T454 517T448 504L445 497Q437 480 437 474Q437 472 439 461T444 421T446 348Q446 205 405 124Q396 105 392 100T368 78Q312 32 278 9T235 -18T214 -22Q191 -22 170 -10T139 12T129 25T160 66T192 105Q193 102 194 98T200 83T213 64T233 49T261 42Q303 42 339 90Q373 134 373 268Q373 397 339 493T235 618Q215 628 191 628Q155 628 126 604T97 548Q97 524 120 493T168 431T192 381Q192 346 164 318T86 260L70 250L54 266L63 272Q112 300 112 334",120082:"428 596Q412 596 386 595T350 593Q289 593 270 625Q267 632 267 640Q267 656 280 672T312 705T336 729H343Q351 729 351 728Q342 710 342 703Q342 683 382 676T493 662T604 643Q648 627 677 599T720 535T739 466T744 392Q744 317 732 260T696 166T659 116T621 83Q617 80 615 78Q485 -27 377 -27Q320 -25 272 -9T187 21T122 36H116Q65 36 29 -13L27 -15L12 0Q12 1 32 26T76 78T109 109Q145 123 166 150T187 207Q187 244 134 318T80 412Q80 454 112 498T176 566T213 590Q216 590 224 585L234 580L225 573Q216 566 207 557T188 536T172 511T165 484Q165 448 213 368T261 259Q261 241 252 219T228 179T200 146T176 122L167 112Q170 111 174 111Q188 110 233 91T339 55T453 37Q508 37 556 68T626 152Q655 219 655 328Q655 543 532 582Q484 596 428 596",120083:"112 339Q112 354 91 380T49 438T28 497Q28 565 95 628T242 692Q261 692 277 689T307 682T331 670T351 655T367 637T379 619T388 600T395 582T401 565T405 550Q409 554 422 570T453 603T500 641Q573 692 637 692Q656 692 670 686T692 672T705 647T713 618T718 584Q720 568 721 562T728 546T742 534T768 530Q776 531 782 532T791 535T796 536Q799 536 804 521Q801 519 789 513T764 499T738 480Q697 447 680 414Q677 407 677 396Q677 370 713 312T750 210Q750 125 686 57T560 -11Q540 -11 475 13L410 37V31Q410 -9 412 -50T417 -118T420 -150Q419 -150 373 -184T326 -218L305 -208Q305 -207 307 -196T314 -165T322 -116T328 -46T331 43V63L318 66Q270 80 250 80Q233 80 213 70Q183 57 138 -3L128 -16L118 5L125 20Q193 154 282 154Q309 154 331 146V287Q331 444 327 469Q321 522 301 560Q284 590 251 611T184 633Q146 633 119 607T92 550Q92 539 94 534Q100 516 143 460T186 386Q186 366 170 336T119 281Q102 264 70 250L49 260L56 266Q64 271 72 278T90 296T106 317T112 339ZM602 345Q602 357 608 371T622 397T642 421T661 441T678 456L686 462Q663 473 652 486T639 512T634 553Q631 594 624 608T593 631Q587 632 567 632Q539 632 497 600T416 497L410 484V122L467 103Q481 99 502 92T533 82T557 75T578 69T594 66T610 64Q647 64 672 87T697 144Q697 180 650 250T602 345",120084:"428 596Q412 596 386 595T350 593Q313 593 291 605T268 638Q268 644 269 648T274 658T284 669T301 689T326 718L336 729H343Q351 729 351 728Q342 710 342 703Q342 683 382 676T493 662T604 643Q744 592 744 398Q744 299 708 213T646 104L603 68L614 55Q670 -5 710 -5Q726 -5 744 1T772 14L781 20Q782 20 782 7V-6L771 -13Q673 -69 665 -69L647 -63Q552 -30 514 8H512Q509 8 500 3T471 -9T428 -23Q405 -27 377 -27Q305 -24 228 6T124 36Q69 36 27 -16Q23 -13 19 -8L11 0L27 20Q93 102 109 109Q145 123 166 150T187 207Q187 244 134 318T80 412Q80 454 112 498T176 566T213 590Q216 590 224 585L234 580L225 573Q216 566 207 557T188 536T172 511T165 484Q165 448 213 368T261 259Q261 241 252 219T228 179T200 146T176 122L167 112Q170 111 174 111Q188 110 233 91T339 55T453 37Q508 37 556 68T626 152Q655 219 655 328Q655 543 532 582Q484 596 428 596",120086:"750 276Q750 141 645 57T378 -27Q224 -27 146 67Q66 163 66 307Q66 361 80 412T127 515T217 609T356 676L388 684L420 692L442 681Q545 625 586 608T654 591Q688 591 710 609T737 646L742 665Q742 665 756 654L752 642Q736 594 706 566T621 515L607 510Q580 513 528 542T421 599T335 627Q272 627 214 569Q139 500 139 373Q139 308 159 247T217 136T316 56T455 26Q520 26 566 43T634 90T666 148T676 207Q676 264 649 297T580 338Q574 339 552 339Q516 339 442 325T327 310H324Q303 310 290 312T259 328T232 369Q230 375 230 390Q230 426 259 461Q286 488 338 507Q351 498 351 495L346 492Q342 490 339 488T330 482T320 473T312 462T305 447T303 428Q303 368 366 368Q393 368 487 388T613 409Q656 409 696 385T748 306Q750 294 750 276",120087:"289 686Q338 686 439 668T565 649Q606 649 641 672Q656 683 664 690T674 700L675 701Q676 698 676 692V681L641 636Q608 591 602 588Q577 575 528 575Q490 575 438 583L426 585L416 578Q335 520 335 465Q335 437 393 366T452 259Q452 226 406 171Q387 146 351 115L341 106L358 97Q438 58 475 58Q525 58 598 124L608 133Q617 119 617 118Q617 114 606 103Q513 0 448 -27L438 -25Q401 -19 337 14T234 48Q186 48 122 -3L112 -11L106 -3L101 5L110 15Q160 63 209 105L224 117H310Q384 163 384 210Q384 238 329 303T263 398Q262 400 262 404Q262 427 290 476T368 580Q383 596 381 596Q315 622 228 622Q159 622 118 593T76 516Q76 482 96 461T139 431L107 399L75 367Q34 403 34 472Q34 525 64 572T148 652Q207 686 289 686",120088:"160 247Q160 291 110 382T59 505Q59 542 106 597T207 690L218 697L229 682Q229 680 216 669T187 644T158 604T144 552Q144 526 165 482T207 387T228 291Q228 277 228 267T224 247T219 232T210 217T199 202T184 184T166 163L118 107Q124 105 132 105T160 98T220 77Q298 47 317 47Q354 47 409 105Q444 142 451 161T458 244V277Q458 339 455 457T447 596L575 686L591 676L583 668Q550 632 541 587T532 449V372V298Q532 198 550 147Q572 79 605 79Q617 79 631 84T656 95L665 100V79L595 27Q578 15 560 2T532 -19L523 -26Q522 -26 490 42L458 111L397 50Q389 42 374 27T355 8T340 -5T325 -16T311 -22T294 -26T274 -27Q232 -25 152 6T35 37Q28 36 19 30T4 18T-8 4T-16 -5Q-25 10 -25 11T-20 18Q-5 34 15 57L54 101Q70 103 86 116Q94 121 113 140T137 166Q160 201 160 247",120089:"54 266Q118 307 118 339Q118 360 74 413T27 493Q26 530 59 578T133 651Q187 686 256 686Q299 686 332 673T382 640T409 600T424 567T429 553Q431 553 463 586T542 653T624 686Q663 686 715 652T798 617Q812 617 825 622V606L815 599Q785 576 762 546Q724 495 724 432Q724 397 737 317T750 217Q750 148 711 96Q697 75 639 34T578 -10Q563 -21 555 -23T522 -26Q458 -26 363 29Q253 89 211 89Q192 89 173 83T139 67T114 49T96 34L90 27L80 43L95 59Q121 87 148 110T191 143T213 154Q261 154 300 195Q328 222 340 267T352 406Q352 562 255 611Q222 627 187 627H182Q143 627 115 598Q96 579 96 559Q96 528 144 470T192 381Q192 348 156 314T80 256L70 250L54 266ZM727 548Q701 550 650 583T567 617Q560 617 554 615Q532 610 501 580T445 501L437 485V465Q432 326 378 223L294 150Q321 143 421 87T560 31Q608 31 634 64Q660 102 660 198Q660 226 655 292T650 387Q650 418 658 452L660 462L735 548H727ZM264 150Q265 151 263 151H261Q261 150 264 150ZM280 150H276V149Q280 149 280 150",120090:"32 501Q35 564 103 625T264 686Q326 686 365 652Q402 618 420 564L441 585Q486 630 539 670L559 686L572 672Q637 606 665 559L682 576Q787 686 845 686Q877 686 929 656T992 623Q999 621 1016 621Q1041 621 1054 628L1051 617L1047 606Q1042 602 1037 597Q983 557 969 522T954 434Q954 394 961 336T968 221Q968 201 966 184T963 155T956 131T948 113T936 96T923 82T906 66T887 50L816 -2Q815 -3 810 -6T801 -11T791 -16T777 -20T759 -23T735 -25Q691 -25 619 4T505 37H496L463 21Q420 0 389 -20L378 -27H362Q316 -27 275 -9T202 28T150 46H146Q114 46 59 -5L48 -16L41 -6Q40 -4 38 -2T34 2L33 4Q33 8 77 54Q111 87 142 112L154 122H166Q239 127 288 182Q346 244 346 406Q346 489 326 537T259 610Q227 628 195 628Q155 628 128 606T101 549Q101 517 146 465T192 382Q192 348 156 310T85 254L75 250L64 258L55 266Q56 267 74 276T105 301T118 339Q118 362 75 413T32 501ZM952 547Q927 555 877 586T796 617Q744 617 682 525L676 516L677 498Q678 486 678 425Q678 301 652 206Q649 195 613 151T577 102Q577 100 582 100Q618 100 720 51Q761 32 790 32H794Q843 32 869 83Q884 110 884 189Q884 233 879 294T873 400Q874 433 879 451T889 478T915 507T952 547ZM241 105Q249 98 263 88T317 60T393 42Q478 42 547 109Q607 171 607 358Q607 371 607 380T604 417T595 467T577 517T546 566T500 601L479 580Q449 550 433 526L426 516V503Q426 311 357 200L352 191L296 149Q241 107 241 105",120091:"96 511L78 527L149 603Q207 666 227 686L237 685Q278 680 306 667T351 631T376 588T395 533L400 516L406 527Q439 600 523 653Q538 664 587 688Q589 688 596 672T613 635T629 606Q643 588 665 588Q677 588 693 596L709 603V585L607 526Q583 536 554 564T512 614Q461 571 435 507T405 381V367H581L563 347Q561 344 558 341T553 335T549 330T546 326L545 325H541Q537 325 488 329T411 334H405V325Q405 198 454 123Q497 54 568 54Q594 54 619 64T660 84L676 95V74L565 -16L553 -20Q528 -27 512 -27Q492 -27 475 -21T444 -5T418 19T398 47T382 77T371 105T363 128T358 145L357 151Q354 151 339 136T294 91T232 37Q152 -22 113 -22Q90 -22 69 -9T38 17T28 32Q28 33 58 68L86 101Q94 81 115 64T165 47Q206 47 249 84Q302 128 325 222Q334 263 336 312V334H312Q198 334 163 324H161Q162 326 182 348L198 367H336V398Q333 508 308 550Q295 570 274 585T227 601Q204 601 181 589T145 565T115 533T96 511",120092:"123 345Q123 358 75 415T27 496Q27 533 63 578T121 639Q181 685 256 685Q305 685 332 676T384 635Q419 588 425 542Q468 585 526 628T618 686Q632 667 658 645T704 609T724 594Q740 512 740 385V375V361Q740 128 682 -3Q656 -64 554 -141T361 -218Q319 -218 287 -203T243 -173T230 -150Q230 -148 267 -109L304 -69Q311 -115 341 -142T411 -170Q474 -170 534 -119T624 11Q660 111 660 312Q660 447 633 528L612 549Q578 583 552 596L543 601L528 592Q501 574 483 558Q454 528 436 494L431 484V473Q431 330 376 230Q366 213 359 206T306 159L250 112Q278 105 327 82T399 58Q421 58 440 69T471 92T484 104H485L493 90L480 73Q453 39 429 13Q393 -22 372 -22Q342 -22 260 15T153 53Q97 53 48 -16L38 5Q46 22 74 54T128 108L143 122H155Q226 127 275 168Q352 236 352 399Q352 501 309 564T197 628Q156 628 129 607T102 553Q102 517 147 463T192 383Q192 323 75 250L59 266Q123 314 123 345",120094:"86 363Q86 365 128 391T212 444L255 470Q256 470 263 465T283 453T308 442Q338 431 346 431Q350 431 358 436L414 465L421 459L418 434Q404 339 404 262Q404 147 408 119L425 97Q443 74 444 74L467 86L491 97Q492 97 497 83L436 28Q377 -26 374 -26L331 46L329 91L155 -35Q152 -35 114 10T68 65L67 86Q66 100 66 156Q66 177 66 198T68 236T71 268T74 296T77 320T80 338T83 351T86 360V363ZM314 365Q285 367 255 374T206 386L187 392Q181 392 172 376T154 311T145 197Q145 124 151 118Q156 110 187 78L208 56H214Q221 57 253 76L308 109L329 123V136Q328 143 328 257V365H314",120095:"177 427Q177 364 181 364Q184 364 192 370T223 395T271 433Q317 469 323 469Q325 469 338 462T377 440T432 413L440 409L441 396Q441 394 441 372T442 334Q442 203 425 108L423 97L400 83Q347 49 296 21T222 -19T196 -31Q192 -29 149 12T87 71L89 89Q100 155 100 319Q100 500 94 627Q94 632 94 638T94 648T94 656T93 662V664Q93 668 97 669T106 670H110Q114 653 118 633L127 596Q127 595 132 597Q136 599 195 642L255 685L272 673Q269 670 256 659T233 637T211 609T190 565T179 508Q177 494 177 427ZM295 377L274 385Q273 385 264 381T242 370T223 361Q213 355 188 340L178 333V123L198 103Q259 42 285 42Q299 42 314 55T339 85Q363 132 363 232Q363 310 358 343V349L345 355Q330 363 295 377",120096:"72 208Q72 323 84 361Q84 363 167 414Q248 466 250 466Q255 465 260 465Q283 460 307 450T344 430L357 422L306 343L301 342L296 340Q267 362 247 372T216 384T177 390Q154 349 154 238Q154 220 156 158V145L168 132Q179 121 208 93T244 59Q245 58 246 58Q255 58 302 83T350 108L352 104Q355 100 356 96L358 92Q358 91 274 32T187 -29L177 -20Q160 -6 120 36T77 84Q77 87 75 118T72 208",120097:"13 542Q13 544 77 576T147 609Q154 609 185 598T283 551T414 464L427 454V440Q427 436 427 412T428 372Q428 315 426 270T418 197T409 152T400 121T394 103L304 35Q285 21 261 2T225 -25L214 -33Q149 7 97 59L76 80L75 91V171Q75 221 76 254T79 299T80 313Q80 315 78 321Q78 323 78 326L77 330Q79 336 132 384T211 447L219 445Q221 445 224 444L228 443Q229 443 228 441T221 432T206 415L191 395Q175 378 162 339Q152 306 152 250Q152 217 159 140V134L171 121Q194 99 235 74T284 48Q296 48 310 75T337 156T349 267Q349 346 336 400L315 420Q246 489 176 525Q127 545 94 545H73L27 527L13 542",120098:"353 103Q353 97 358 87L337 71Q293 38 247 6Q191 -30 189 -30Q188 -30 173 -16T130 26T76 85L74 99Q70 139 70 190Q70 228 73 271T79 338T84 365L94 372Q105 378 126 392T166 417L246 467Q283 417 349 369L364 358L355 349Q249 249 169 180L151 166L152 152V139L165 126Q186 105 215 84T260 62Q267 62 309 82L353 103ZM267 323Q246 337 230 350T204 371T189 385T179 394T174 397Q149 381 149 219V211Q151 211 171 223T220 258T268 299L282 313L267 323",120099:"128 387Q128 391 112 456T92 546V555L101 568Q133 617 183 670L193 681L204 673Q238 648 262 648Q276 648 292 656L302 661L308 653Q308 652 278 618L249 585H234Q194 587 159 595Q158 595 156 596H153L150 597Q151 593 152 581T154 564T157 547T164 524T176 494Q199 436 203 400V392H207L323 386Q323 384 309 368L296 351H203V176Q201 -9 198 -32Q194 -61 166 -114Q158 -129 153 -138Q114 -214 110 -221Q105 -221 98 -220L87 -219V-216Q88 -215 106 -150T124 -82Q128 -73 129 155V351H30L64 386H96Q128 386 128 387",120100:"27 -144L17 -131L82 -75L146 -20L126 6Q99 37 92 48L78 65L77 79Q75 103 75 158Q75 217 78 268T86 343T91 368Q92 370 109 382T157 413T222 452Q240 465 249 469L251 470Q296 443 350 428L365 424L437 465L442 459Q442 456 441 453T437 444T432 424T427 385T423 317T421 215V133L423 119Q423 111 455 -17Q455 -21 380 -108T290 -201Q290 -202 284 -204T269 -207T252 -209Q172 -209 75 -135L62 -126Q60 -126 44 -135L27 -144ZM349 351Q267 359 178 389Q177 387 173 376T166 358T161 337T157 303T155 259Q155 195 159 135L160 124L170 112Q180 101 204 77T230 53Q231 53 286 88L340 123V141Q340 235 348 329Q348 334 348 339T348 348L349 351ZM364 -59Q364 -37 358 -1T347 64T341 93Q336 93 252 28T149 -57Q226 -134 293 -134Q325 -134 344 -118T364 -69V-59",120101:"88 427Q88 486 87 545T84 634T81 667Q81 673 82 673T89 676H94L117 600L200 661Q208 667 218 674T233 684L238 688L254 678Q222 646 216 637Q164 572 164 483V442V371Q187 390 244 431T312 478Q344 446 411 423L428 417L429 396Q434 297 434 218Q430 8 406 -34Q346 -111 262 -195L251 -205L249 -203Q248 -203 244 -199T236 -193Q226 -183 227 -182Q228 -182 244 -169T278 -140T301 -121Q330 -89 340 -22Q355 60 355 171Q355 200 353 244T348 321T344 354Q333 363 307 376T260 390Q241 390 179 350L164 341V121Q180 96 201 66L213 50Q210 46 172 11T131 -24Q130 -24 123 -11T102 25T77 65V78Q80 104 84 227T88 427",120102:"72 617Q72 618 102 645T133 673H134Q134 668 175 627L187 615L130 555L116 568Q72 615 72 617ZM27 369Q21 376 14 382L26 392Q83 440 119 474Q158 435 169 427L179 420L176 395Q166 302 166 227Q166 171 174 139Q178 119 186 103T202 81L208 75Q255 100 261 100Q262 100 264 92T267 83Q267 80 208 30T145 -20Q143 -20 118 17L91 55Q98 117 98 193Q98 339 88 369Q71 390 68 390Q63 390 39 376L27 369",120103:"101 644L132 672L145 657Q155 642 169 628L182 614L169 600Q148 579 140 570L125 555L112 568Q109 570 91 592T72 615Q72 617 101 644ZM19 -208Q-9 -185 -9 -183Q57 -134 80 -106Q103 -81 110 -19T118 179Q118 294 113 329T86 383Q78 389 76 389Q73 389 57 379L39 367Q26 380 26 381L33 387Q40 393 53 405T79 428L130 474Q147 457 186 428L195 422L196 376Q196 130 192 58T174 -35Q172 -39 104 -114T19 -208",120104:"93 348Q93 379 90 503T87 658V670Q87 671 94 671L100 672L112 636Q124 603 124 600L144 616Q196 659 234 682L246 689Q252 686 256 685T268 680L254 667Q225 641 211 626T184 579T168 505V497L178 504Q203 523 237 544L300 584L310 573Q359 522 359 481Q359 476 359 472T358 464T355 456T351 448T346 440T340 433T332 424T323 414T312 402T299 389L255 343L300 342H346L320 309H177V128L193 113Q214 92 244 68L254 60L303 84Q351 108 352 108L362 96Q355 85 277 30T194 -25L170 -4Q146 18 120 41T89 68Q94 85 94 168Q94 184 94 218T93 268V309H58L24 310L51 342H93V348ZM172 342Q217 342 252 374T287 445Q287 472 255 504Q242 517 241 517Q202 498 187 468T168 365V342H172",120105:"221 76L267 99Q268 98 269 96T271 88T270 82L262 76Q255 69 241 57T214 34L148 -20L98 56L99 89Q107 247 107 373Q107 494 101 621Q101 653 99 659V665L106 668L113 672L118 655Q122 642 131 617L138 597Q140 597 157 611L240 670L264 685Q265 685 270 680T276 674T269 667T247 647T219 617Q197 587 186 551T173 493T171 438Q171 376 175 282T179 147V117Q184 109 201 93T221 76",120106:"20 367L8 379Q9 380 63 425T118 471Q130 460 143 446L168 421V398L169 376L295 475Q362 433 415 418V399Q415 380 416 380T437 394T484 428T529 462L544 474L556 467Q590 449 614 438T646 424L653 421L665 417L664 412Q664 411 664 407T664 397T663 384Q660 342 660 335Q658 303 658 245Q658 186 660 152L661 126L669 115Q680 96 697 79L707 83Q716 87 723 90T735 96T741 100T746 102L747 103V102L750 95Q753 88 753 87L631 -18Q630 -17 622 -3T589 43L576 60L579 72Q592 146 592 218Q592 265 584 321Q581 345 578 350T560 363Q535 376 496 386L481 390Q475 387 425 358L415 351V238V157Q415 142 415 135T417 120T421 110T430 98T441 81L465 47Q462 44 458 41T443 28T420 8L380 -26L333 47L336 62Q339 77 342 109T345 184Q345 223 341 285T333 348Q322 364 258 382L240 388L169 347L168 240Q168 118 171 110L174 106Q178 101 183 93T195 78L217 48Q217 47 196 30T154 -5T133 -21L130 -16Q127 -10 122 0T111 19Q89 56 89 60Q95 76 95 153Q95 239 88 337V365L62 391L20 367",120107:"31 368Q20 379 20 380T72 427L121 470L129 463Q137 455 155 441T176 425V367L320 475L329 469Q351 454 385 437T434 417L432 402Q429 362 429 231V128L439 111Q442 107 445 102T449 95T453 90T456 86T459 84T463 82T467 82Q468 82 489 93T511 105T514 95V88L395 -18L340 65L341 77Q347 111 348 178Q348 343 343 353V358L332 363Q298 377 264 382Q260 382 254 382L249 383Q247 383 211 362L176 341V229V147Q176 134 176 127T177 115T179 106T183 99T189 91T197 81Q201 76 206 69T214 57L217 53Q217 52 175 15T132 -22Q132 -20 114 5T88 41Q84 45 84 50Q94 116 94 203Q94 227 93 263T92 324L90 364L67 388L50 378Q32 368 31 368",120108:"67 121Q70 265 84 359V364L97 371Q137 394 177 421T238 464T260 480L278 468Q295 457 327 442T394 418L406 414Q412 388 412 300Q412 263 410 228T405 170T399 130T393 103T391 92L381 86Q274 19 165 -28L161 -24Q157 -21 151 -15T136 -2T118 14T101 30T86 46T74 60L67 68V121ZM335 278Q335 286 335 303T334 335L333 349V356H326Q288 360 208 388L183 397Q178 393 172 383T154 333T142 239Q142 192 151 134Q152 124 155 120T175 99Q197 77 219 64T251 47T267 44T281 52T302 80T320 124Q335 182 335 278",120109:"23 25Q15 33 12 38L35 59Q82 102 87 105V351L68 378Q42 414 42 422Q42 437 67 472T114 530L125 541Q126 541 132 537T138 532Q121 507 121 488Q121 453 160 413L167 405L166 390L165 372Q169 372 233 421T305 478Q307 479 315 472Q395 421 423 415Q424 415 424 415T425 414L426 410Q426 407 426 401T426 388Q430 335 430 272Q430 139 408 80Q407 78 340 22L273 -33Q200 23 165 23Q164 23 164 -32Q165 -89 168 -155V-170L93 -212L78 -203Q85 -48 87 16V47H79Q53 44 23 25ZM319 41Q346 94 349 212Q349 278 343 343V351L330 357Q318 363 270 381L255 387L245 383Q212 370 178 345L166 336V287Q165 260 165 166V94H175Q219 90 299 51L319 41ZM132 57L129 60Q130 58 132 57ZM158 29Q159 29 155 34T145 45T138 50Q155 29 158 29",120110:"399 19Q399 -123 407 -174V-179L332 -219L322 -210L312 -202L314 -185Q320 -83 323 54V95L311 85Q255 40 162 -19Q146 -29 145 -27Q140 -22 103 20L63 65V73Q61 83 61 115Q61 122 61 135T60 154Q60 263 79 353L83 368L94 375Q123 391 147 405T186 429T212 446T229 458T238 466T243 470T247 471L260 464Q274 457 295 448T330 434L341 432L410 479L412 478Q414 476 416 475T419 473L417 461Q399 358 399 19ZM316 367Q287 370 252 377T196 391L176 397H175Q173 397 166 382T149 314T139 187V158Q139 138 141 132T155 114Q158 111 160 109Q210 58 211 58L218 62Q226 67 240 75T266 91L319 124V196Q319 334 325 361V367H316",120111:"357 398Q364 398 375 403L386 408Q386 404 387 400V393L369 377Q361 370 350 360T336 347T327 340T316 336T303 335Q270 335 234 371L224 379Q220 375 214 370T198 355L182 340V243Q182 164 183 152T189 129Q195 117 211 100T239 72T254 60T298 81Q342 101 343 101Q344 100 345 92T346 82L200 -21Q174 -5 117 55L97 75L99 92Q106 147 106 196Q106 216 104 282T97 355Q95 359 95 361Q95 364 77 378L65 387L48 380Q30 372 29 372Q28 371 23 375T17 380Q17 384 50 415T107 467L115 474L128 461Q171 421 182 414V382L235 425Q247 435 261 446T283 462L290 468L295 460Q335 398 357 398",120112:"272 33Q284 33 290 70T296 138Q296 181 290 198T262 230Q257 232 246 232Q231 232 218 227T156 194L108 167L101 176Q90 192 75 219L69 230V284Q69 346 70 357V377L146 427Q181 450 202 464T223 477L225 476Q227 475 229 474Q231 472 242 466T270 450T296 431Q309 418 326 418Q342 418 361 429T392 450T403 459Q406 445 406 442Q406 440 384 421T338 382L316 363Q315 362 310 362Q292 362 251 371T173 396Q156 403 155 403Q143 386 143 342Q143 305 150 278T168 244Q171 242 181 242L190 243L315 300Q330 295 357 274Q358 273 362 270T366 266T369 261T372 253T373 239T374 217T374 185Q374 157 372 133T368 98T363 71T358 50L336 40Q288 20 255 2T211 -22T198 -29L190 -22Q181 -14 168 -3T138 19T104 38T70 46Q50 46 32 37T3 20T-9 11L-18 23L-1 41Q46 89 62 99T112 110Q141 110 157 103T225 62Q268 33 272 33",120113:"228 640L242 627L227 613Q213 599 211 593T203 553Q197 500 196 435V389H301L272 353H195V274Q195 178 196 159L197 123Q249 71 273 68H280L312 83Q344 99 345 99Q348 99 348 78Q348 76 314 52T246 4L212 -20Q211 -20 164 19T112 62Q112 122 113 196Q113 228 113 262T114 318T114 341V353H27L62 389H116L117 431V558L228 640",120114:"171 315Q171 252 165 199T153 124L147 103Q147 102 196 80L244 57L335 107V116Q339 161 339 268Q339 315 338 351T337 412V424L420 468Q424 465 427 461L424 435Q412 331 412 226Q412 170 415 145T434 96Q442 84 452 83Q461 83 492 96L506 102Q507 102 510 96T513 88L493 71Q445 32 401 -9Q392 -18 388 -17L384 -16Q358 39 355 44Q336 77 333 77Q261 45 203 -9Q186 -23 181 -23Q177 -23 162 -11T121 18T69 44L57 48L61 54Q65 60 71 73T82 102Q100 156 100 262Q100 305 93 335T80 373T62 396L23 376Q18 377 9 386L119 474Q149 437 171 421V339V315",120115:"55 418Q55 443 100 503Q121 530 123 530Q125 528 127 528T131 528T134 528T135 524T131 516Q123 499 123 486Q123 457 159 416L169 405L170 388L171 372Q171 371 244 424L317 477L334 466Q394 428 432 416L433 402Q433 400 433 377T434 336V305Q434 195 420 131Q413 94 406 87Q403 84 298 29L192 -28L172 -8Q139 25 106 52L92 64V70Q95 97 95 198Q95 293 94 318L92 355L84 367Q55 406 55 418ZM174 306Q174 297 173 255T171 184Q171 153 175 136T198 100Q207 94 224 80T255 57T282 49Q304 49 328 80Q359 129 359 243Q359 284 352 345Q351 358 348 360Q333 373 304 384T265 396L251 390Q215 372 186 351L175 344V337Q175 319 174 306",120116:"45 425Q45 439 82 485T126 532Q127 532 128 532T131 531T137 529L132 519Q121 499 121 483Q121 473 131 454T156 419L167 408L169 376L185 388Q237 425 291 473L301 466Q337 443 394 416L419 405L418 387V369Q419 369 487 418T560 471L581 459Q597 450 621 437T664 415T684 406Q688 406 688 323Q688 254 679 193T662 103T648 71Q647 70 554 20L464 -28L443 -15Q416 1 386 17T343 40T331 49Q331 52 333 73T337 133T339 216Q339 309 334 339Q333 341 316 353T277 377T246 389Q235 389 201 369T166 346Q166 345 164 247Q164 232 164 210T163 179Q163 139 170 116T205 57L212 48L136 -27Q115 16 87 44L78 53L80 67Q88 124 88 211Q88 282 87 315T83 356T74 371Q45 410 45 425ZM591 352Q580 359 565 365T540 374T517 381T504 385L418 342L417 318V220Q417 212 417 194T417 170T418 152T420 134T424 120T431 106T440 95T454 83Q508 44 544 44Q566 44 583 77Q603 120 605 235Q605 289 600 322Q598 343 597 345T591 352",120117:"14 377Q63 428 117 472Q130 462 144 449L193 408V392V376L247 420Q300 464 301 464L310 451Q331 417 363 390L333 365Q303 340 301 340Q293 343 277 364T250 386Q241 386 215 361L195 341Q194 333 193 327T191 318T190 304T188 269Q188 220 192 148Q193 122 195 118T210 101Q255 60 271 60Q276 60 278 61L318 82Q327 86 336 91T351 98L356 101Q359 82 356 79Q354 77 283 27T210 -24L192 -7Q160 23 137 40L126 49L116 40Q66 -13 66 -54Q66 -117 167 -140L179 -142V-147L180 -152L123 -188L112 -185Q58 -170 31 -145Q10 -122 10 -96Q10 -80 22 -53Q44 -10 95 49Q97 51 100 54T104 59T107 64T109 71T111 81T112 97T113 119T114 149T114 188Q114 284 108 347V354L96 365Q76 385 67 385Q62 385 45 377L27 368L14 377",120118:"74 58Q89 124 89 241Q89 265 89 278T89 305T88 324T87 336T84 346T81 352T77 359T71 368Q57 388 52 398L45 409Q62 454 98 507L113 528Q128 528 128 524Q128 523 125 518T120 503T117 483V471Q123 456 130 445Q135 438 140 432T148 422T153 415T157 409T160 405T162 402T163 399T163 395V384V365Q165 365 237 419L311 473Q383 430 420 416Q426 414 426 411V404Q426 398 426 388T427 367Q431 233 431 201Q431 -3 391 -52Q387 -58 305 -138T221 -218L218 -217Q216 -216 211 -214T202 -210L184 -202L199 -194Q259 -162 288 -127T334 -19T350 184Q350 257 342 328L340 356Q282 390 262 390Q248 390 178 346L163 336V111L216 45L131 -26L124 -15Q114 3 85 44L74 58",120119:"47 335L36 347L52 362Q112 421 167 461L181 471L192 465Q236 444 260 417T284 369Q284 355 276 343T233 291Q195 246 195 245T205 242T241 228T300 198L302 187Q314 138 314 74Q314 -24 291 -95Q290 -100 222 -157L154 -214H145Q102 -214 53 -189T-7 -117Q41 -21 183 122L207 147Q205 149 186 157T140 172T100 180H97V192L140 231Q192 280 199 293Q205 303 205 315Q205 339 185 363T137 388Q119 388 63 347L47 335ZM179 -153Q212 -153 226 -113T240 14Q240 67 233 98T223 132T211 143L222 130Q216 125 206 116T170 82T124 33T88 -20T72 -70Q72 -99 105 -126T179 -153",120120:"130 -1H63Q34 -1 26 2T17 17Q17 24 22 29T35 35Q49 35 64 44T88 66Q101 93 210 383Q331 693 335 697T346 701T357 697Q358 696 493 399Q621 104 633 83Q656 35 686 35Q693 35 698 30T703 17Q703 5 693 2T643 -1H541Q388 -1 386 1Q378 6 378 16Q378 24 383 29T397 35Q412 35 434 45T456 65Q456 93 428 170L419 197H197L195 179Q184 134 184 97Q184 82 186 71T190 55T198 45T205 39T214 36L219 35Q241 31 241 17Q241 5 233 2T196 -1H130ZM493 68Q493 51 481 35H619Q604 56 515 256Q486 321 468 361L348 637Q347 637 330 592T313 543Q313 538 358 436T448 219T493 68ZM404 235Q404 239 355 355T295 488L275 430Q241 348 208 232H306Q404 232 404 235ZM155 48Q151 55 148 88V117L135 86Q118 47 117 46L110 37L135 35H159Q157 41 155 48",120121:"11 665Q11 672 22 683H213Q407 681 431 677Q582 649 582 515Q582 488 573 468Q554 413 484 372L474 366H475Q620 317 620 178Q620 115 568 69T420 6Q393 1 207 -1H22Q11 10 11 18Q11 35 51 35Q79 37 88 39T102 52Q107 70 107 341T102 630Q97 640 88 643T51 648H46Q11 648 11 665ZM142 341Q142 129 141 88T134 37Q133 36 133 35H240L233 48L229 61V623L233 635L240 648H133L138 639Q142 621 142 341ZM284 370Q365 378 391 411T417 508Q417 551 406 581T378 624T347 643T320 648Q298 648 278 635Q267 628 266 611T264 492V370H284ZM546 515Q546 551 531 577T494 617T454 635T422 641L411 643L420 630Q439 604 445 579T452 510V504Q452 481 451 467T441 430T415 383Q420 383 439 391T483 413T527 455T546 515ZM585 185Q585 221 570 249T534 294T490 320T453 334T436 337L435 336L440 330Q445 325 452 315T467 288T479 246T484 188Q484 145 474 110T454 62T442 48Q442 47 444 47Q450 47 470 54T517 75T564 119T585 185ZM449 184Q449 316 358 332Q355 332 335 333T302 335H264V199Q266 68 270 57Q275 50 289 43Q300 37 324 37Q449 37 449 184",120123:"16 666Q16 675 28 683H193Q329 683 364 682T430 672Q534 650 600 585T686 423Q688 406 688 352Q688 274 673 226Q641 130 565 72T381 1Q368 -1 195 -1H28Q16 5 16 16Q16 35 53 35Q68 36 75 37T87 42T95 52Q98 61 98 341T95 630Q91 640 83 643T53 648Q16 648 16 666ZM237 646Q237 648 184 648H128Q128 647 133 632Q136 620 136 341Q136 64 133 50L128 35H237L230 48L226 61V343Q228 620 231 633Q232 636 237 646ZM264 61Q278 40 310 35Q363 35 401 55T461 112T496 193T513 295Q515 333 515 349Q515 411 504 459Q481 598 373 641Q351 648 321 648Q304 648 292 643T277 635T264 621V61ZM461 628Q462 627 471 616T489 594T509 559T529 509T544 441T550 352Q550 165 479 75L468 59Q474 61 484 65T522 87T573 128T618 195T650 290Q654 322 654 354Q654 418 638 464T581 552Q559 576 529 595T480 621L461 628",120124:"12 666Q12 675 24 683H582Q590 680 593 672V588Q593 514 591 502T575 490Q567 490 563 495T555 517Q552 556 517 590Q486 623 445 634T340 648H282Q266 636 264 620T260 492V370H277Q329 375 358 391T404 439Q420 480 420 506Q420 529 436 529Q445 529 451 521Q455 517 455 361Q455 333 455 298T456 253Q456 217 453 207T437 197Q420 196 420 217Q420 240 406 270Q377 328 284 335H260V201Q261 174 261 134Q262 73 264 61T278 38Q281 36 282 35H331Q400 35 449 50Q571 93 602 179Q605 203 622 203Q629 203 634 197T640 183Q638 181 624 95T604 3L600 -1H24Q12 5 12 16Q12 35 51 35Q92 38 97 52Q102 60 102 341T97 632Q91 645 51 648Q12 648 12 666ZM137 341Q137 131 136 89T130 37Q129 36 129 35H235Q233 41 231 48L226 61V623L231 635L235 648H129Q132 641 133 638T135 603T137 517T137 341ZM557 603V648H504Q504 646 515 639Q527 634 542 619L557 603ZM420 317V397L406 383Q394 370 380 363L366 355Q373 350 382 346Q400 333 409 328L420 317ZM582 61L586 88Q585 88 582 83Q557 61 526 46L511 37L542 35H577Q577 36 578 39T580 49T582 61",120125:"584 499Q569 490 566 490Q558 490 552 497T546 515Q546 535 533 559Q526 574 506 593T469 621Q415 648 326 648Q293 648 287 647T275 641Q264 630 263 617Q262 609 260 492V370L275 372Q323 376 350 392T393 441Q409 473 409 506Q409 529 427 529Q437 529 442 519Q444 511 444 362Q444 212 442 206Q436 197 426 197Q409 197 409 217Q409 265 375 299Q346 328 280 335H260V206Q260 70 262 63Q265 46 276 41T326 35Q362 35 366 28Q377 17 366 3L360 -1H24Q12 5 12 16Q12 35 51 35Q92 38 97 52Q102 60 102 341T97 632Q91 645 51 648Q12 648 12 666Q12 675 24 683H573Q576 678 584 670V499ZM137 341Q137 131 136 89T130 37Q129 36 129 35H182Q233 35 233 39Q226 54 225 92T224 346L226 623L231 635L235 648H129Q132 641 133 638T135 603T137 517T137 341ZM549 603V648H495L506 641Q531 621 533 619L549 603ZM409 317V395L400 386Q390 376 375 366L357 355L373 346Q394 331 397 328L409 317",120126:"737 285Q749 277 749 268Q749 260 744 255T730 250Q695 250 677 217Q666 195 666 119Q666 52 664 50Q656 36 555 3Q483 -16 415 -19Q364 -19 348 -17Q226 -3 146 70T44 261Q39 283 39 341T44 421Q66 538 143 611T341 699Q344 699 364 700T395 701Q449 698 503 677T585 655Q603 655 611 662T620 678T625 694T639 702Q650 702 657 690V481L653 474Q640 467 628 472Q624 476 618 496T595 541Q562 587 507 625T390 663H381Q337 663 299 625Q213 547 213 337Q213 75 341 23Q357 19 397 19Q440 19 462 22T492 30T513 45V119Q513 184 506 203Q491 237 435 250Q421 250 415 257Q404 267 415 281L421 285H737ZM250 43Q250 45 243 55T225 87T203 139T185 224T177 343V361Q184 533 250 625Q264 643 261 643Q238 635 214 620T161 579T110 510T79 414Q74 384 74 341T79 268Q106 117 230 52L250 43ZM621 565V625Q617 623 613 623Q603 619 590 619H575L588 605Q608 583 610 579L621 565ZM655 250H517L524 241Q548 213 548 149V114V39Q549 39 562 44T592 55T615 63L630 70V134Q632 190 634 204T648 237Q655 245 655 250",120128:"20 666Q20 676 31 683H358Q369 676 369 666Q369 648 331 648Q288 645 282 632Q278 626 278 341Q278 57 282 50Q286 42 295 40T331 35Q369 35 369 16Q369 6 358 -1H31Q20 4 20 16Q20 35 58 35Q84 37 93 39T107 50Q113 60 113 341Q113 623 107 632Q101 645 58 648Q20 648 20 666ZM249 35Q246 40 246 41T244 54T242 83T242 139V341Q242 632 244 639L249 648H140Q146 634 147 596T149 341Q149 124 148 86T140 35H249",120129:"79 103Q108 103 129 83T151 38Q151 9 130 -15Q116 -34 130 -37Q133 -39 157 -39Q208 -39 219 -8L226 3V305Q226 612 224 621Q220 636 211 641T166 647Q137 647 128 654Q119 665 128 679L135 683H466Q478 677 478 666Q478 647 439 647Q399 644 393 632Q388 620 388 347Q386 69 384 59Q364 -6 316 -39T184 -77H172Q102 -77 56 -48T6 30Q6 62 26 82T79 103ZM353 354Q353 556 354 596T361 645Q362 646 362 647H253Q257 639 258 628T261 547T262 312V-4L255 -17Q248 -29 250 -29Q253 -29 258 -28T277 -20T302 -5T327 22T348 65Q350 74 353 354ZM115 36Q115 47 105 57T79 67Q73 67 67 66T52 56T44 34Q44 9 62 -8Q66 -11 71 -15T81 -22T86 -24L90 -13Q100 3 102 5Q115 22 115 36",120130:"22 666Q22 676 33 683H351L358 679Q368 665 358 655Q351 648 324 648Q288 645 280 637Q275 631 274 605T273 477L275 343L382 446Q473 530 492 553T512 599Q512 617 502 631T475 648Q455 651 455 666Q455 677 465 680T510 683H593H720Q732 676 732 666Q732 659 727 654T713 648Q670 648 589 581Q567 562 490 489T413 415Q413 413 554 245T711 61Q737 35 751 35Q758 35 763 29T768 15Q768 6 758 -1H624Q491 -1 486 3Q480 10 480 17Q480 25 487 30T506 35Q518 36 520 38T520 48L400 195L302 310L286 297L273 283V170Q275 65 277 57Q280 41 300 38Q302 37 324 35Q349 35 358 28Q367 17 358 3L351 -1H33Q22 4 22 16Q22 35 60 35Q101 38 106 52Q111 60 111 341T106 632Q100 645 60 648Q22 648 22 666ZM240 341V553Q240 635 246 648H138Q141 641 142 638T144 603T146 517T146 341Q146 131 145 89T139 37Q138 36 138 35H246Q240 47 240 129V341ZM595 632L615 648H535L542 637Q542 636 544 625T549 610V595L562 606Q565 608 577 618T595 632ZM524 226L386 388Q386 389 378 382T358 361Q330 338 330 333Q330 332 330 332L331 330L533 90Q558 55 558 41V35H684L671 50Q667 54 524 226",120131:"12 666Q12 675 24 683H333L340 679Q350 665 340 655Q333 648 309 648Q287 646 279 643T266 630Q264 623 264 346Q264 68 266 57Q274 40 284 35H340Q413 37 460 55Q514 78 553 117T602 197Q605 221 622 221Q629 221 634 215T640 201Q638 194 625 105T611 12Q611 6 600 -1H24Q12 5 12 16Q12 35 51 35Q92 38 97 52Q102 60 102 341T97 632Q91 645 51 648Q12 648 12 666ZM137 341Q137 131 136 89T130 37Q129 36 129 35H237Q235 41 233 48L229 61L226 339Q226 621 229 628Q230 630 231 636T233 643V648H129Q132 641 133 638T135 603T137 517T137 341ZM580 48Q580 59 583 74T586 97Q586 98 585 97T579 92T571 86Q549 64 513 43L500 35H577L580 48",120132:"18 666Q18 677 27 680T73 683H146Q261 683 266 679L465 215Q469 215 566 443Q663 676 668 681Q673 683 790 683H908L915 679Q924 664 915 655Q912 648 897 648Q851 639 835 606L833 346Q833 86 835 79Q838 69 849 58T873 41Q877 40 887 38T901 35Q926 35 926 16Q926 6 915 -1H604L597 3Q588 19 597 28Q600 35 615 35Q660 42 673 68L679 79V339Q679 409 679 443T679 520T679 580T677 597Q646 521 584 375T473 117T424 3Q416 -1 410 -1T401 1Q399 3 273 301L148 599L146 343Q146 86 148 79Q152 69 163 58T186 41Q190 40 200 38T215 35Q226 35 235 28Q244 17 235 3L228 -1H28Q17 4 17 17Q17 35 39 35Q84 42 97 68L104 79V639L88 641Q72 644 53 648Q34 648 26 651T18 666ZM457 166Q451 169 449 171T435 198T404 268T344 412L244 648H157L166 637Q169 633 293 346L413 66Q424 88 435 117L457 166ZM817 646Q817 648 766 648H715V72L708 57Q701 45 697 41L695 37Q695 35 757 35H819L813 46Q802 61 800 76Q797 105 797 346L799 612L804 626Q812 638 815 641L817 646ZM124 42Q119 42 119 38Q119 35 128 35Q132 35 132 36Q125 42 124 42",120134:"131 601Q180 652 249 676T387 701Q485 701 562 661Q628 629 671 575T731 448Q742 410 742 341T731 234Q707 140 646 81Q549 -19 389 -19Q228 -19 131 81Q57 155 37 274Q34 292 34 341Q34 392 37 410Q58 528 131 601ZM568 341Q568 613 437 659Q406 664 395 665Q329 665 286 625Q232 571 213 439Q210 408 210 341Q210 275 213 245Q232 111 286 57Q309 37 342 23Q357 19 389 19Q420 19 437 23Q469 38 491 57Q568 132 568 341ZM174 341Q174 403 177 441T197 535T249 639Q246 639 224 627T193 608Q189 606 183 601T169 589T155 577Q69 488 69 344Q69 133 231 52Q244 45 246 45Q248 45 246 48Q231 69 222 85T200 141T177 239Q174 269 174 341ZM708 341Q708 415 684 475T635 563T582 610Q578 612 565 619T546 630Q533 637 531 637Q530 637 530 636V635L531 634Q562 591 577 543Q602 471 602 341V316Q602 264 599 230T580 144T531 48L530 47V46Q530 45 531 45Q533 45 547 52T583 75T622 105Q708 195 708 341",120138:"54 238Q72 238 72 212Q72 174 106 121Q113 110 132 90T166 59Q221 23 264 23Q315 23 348 41Q368 50 384 79Q393 102 393 129Q393 181 356 219T221 299Q120 343 74 390T28 501Q28 561 55 610Q98 682 212 699Q214 699 231 700T261 701Q309 698 340 687T408 675Q431 678 445 690T465 702Q474 702 481 690V497L477 490Q464 481 450 490Q446 500 446 501Q446 546 386 606T260 666Q215 666 182 639T148 565Q148 528 186 496T319 428Q352 414 370 405T418 379T468 338T506 284Q528 239 528 191Q528 102 456 46T266 -10Q211 -10 176 2T110 15Q86 9 73 -1T53 -12Q44 -12 37 -1V112V182Q37 214 40 226T54 238ZM446 619Q446 648 444 648Q439 646 435 644Q425 644 415 639H404L417 624Q435 606 439 601L446 592V619ZM124 619L128 635Q126 635 108 617Q64 576 64 502Q64 489 65 479T76 449T102 414T150 376T228 335Q335 291 381 245T427 128Q427 94 419 75L415 61Q421 61 448 88Q490 127 490 190Q490 233 475 264Q456 299 430 321Q402 349 369 367T287 404T204 441Q138 481 119 526Q113 544 113 565Q113 596 124 619ZM75 43Q76 43 90 46T110 50H119L106 64L74 101Q72 101 72 72T75 43",120139:"33 672Q36 680 44 683H624Q632 680 635 672V490L631 483Q621 479 617 479Q611 479 606 485T600 499Q600 525 584 552Q577 567 558 588T524 617Q479 642 426 646L415 648V355Q415 62 422 52Q425 42 434 40T473 35Q500 35 509 28Q518 17 509 3L502 -1H166L160 3Q149 17 160 28Q167 35 195 35Q224 37 234 39T249 52Q253 66 253 355V648L242 646Q192 642 144 617Q129 609 110 588T84 552Q69 527 69 499Q69 490 64 484T50 478Q39 478 33 490V672ZM113 639L126 648H69V597L84 612Q93 623 113 639ZM389 35Q382 46 381 86Q380 134 380 350V648H289V350Q289 199 288 131T286 53T280 35H389ZM600 597V648H542L555 639Q575 623 584 612L600 597",120140:"16 666Q16 677 28 683H341L348 679Q359 665 348 654Q342 648 315 648Q270 644 266 632Q262 627 262 598T261 399Q261 372 261 325T260 260Q260 149 274 99T339 30Q355 25 393 25Q430 25 457 33T494 49T519 72Q562 115 575 205Q576 219 576 379Q576 538 575 550Q568 597 550 622T506 648Q498 648 493 654T487 667T499 683H697Q709 675 709 667T704 654T690 648Q653 648 633 597Q624 573 622 546T619 377Q617 193 613 174Q596 95 544 41Q477 -19 355 -19H344Q275 -16 226 5T153 57T120 110T106 154Q101 172 99 399Q99 618 95 632Q88 644 53 648Q16 648 16 666ZM228 639L233 648H128Q128 647 133 632Q135 621 135 412Q135 197 137 185Q148 115 181 79Q209 51 235 41Q242 36 258 31T277 25Q276 27 268 38T254 59T241 92T228 145Q226 161 226 399Q226 632 228 639ZM604 621Q606 626 619 648H577L586 634Q587 632 591 625T595 614L597 608L604 621",120141:"316 683Q327 676 327 666Q327 648 302 648Q272 642 258 628Q249 621 249 608Q252 589 263 556T289 485T322 406T357 325T388 256T411 205L420 185Q423 185 473 317Q547 497 547 590Q547 621 541 632T516 648Q501 648 498 654Q488 664 498 679L504 683H607H660Q695 683 707 680T719 667Q719 660 714 654T700 648Q678 648 658 628L642 614L513 301Q484 231 449 148T397 25T380 -15Q373 -20 368 -20Q361 -20 358 -15Q354 -13 287 135T149 438T67 610Q45 648 18 648Q11 648 6 653T0 666Q0 677 9 680T59 683H164H316ZM216 614Q216 620 216 622T216 628T216 633T217 635T218 638T219 640T221 644T224 648H84L96 632Q118 592 236 330L367 43L387 88L404 132L380 185Q250 468 222 568Q216 590 216 614ZM576 645Q584 628 584 597L587 568L598 597Q609 624 618 637L624 648H600Q576 648 576 645",120142:"785 664Q785 670 795 683H982Q994 675 994 665Q994 650 975 648Q953 643 939 619Q931 593 823 292T710 -15Q706 -19 699 -19T688 -15Q682 -6 639 107T555 328T513 437Q513 438 500 409T462 325T413 212Q315 -14 310 -17Q308 -19 302 -19T288 -15L57 619Q45 643 24 648Q5 650 5 665Q5 677 17 683H146H200Q256 683 270 681T285 666Q285 659 280 654T268 648Q253 648 239 634Q230 630 230 619Q230 598 264 481L362 192Q363 193 428 341T493 492Q493 496 473 546T446 608Q426 648 399 648Q392 648 387 653T382 667Q382 678 393 683H679Q690 670 690 665Q690 662 685 655T673 648Q653 648 633 632L622 625V610Q626 576 657 479T719 300T751 218Q754 218 779 294Q847 492 847 581Q847 648 802 648Q796 648 791 652T785 664ZM194 623Q194 630 199 648H82L90 632Q99 616 199 332L302 50Q303 50 322 94T342 141Q342 142 305 245T231 467T194 623ZM585 620Q585 634 593 648H530Q466 648 466 645Q479 632 595 323L699 54Q701 56 718 103T735 154L702 245Q585 562 585 620ZM884 572L890 587Q896 602 903 620T915 645Q915 648 893 648H868L875 634Q883 598 883 576Q883 572 884 572",120143:"22 666Q22 677 31 680T80 683H184H335Q346 675 346 667Q346 660 341 655Q335 648 315 648Q280 644 273 637Q273 630 300 583T356 492T386 448Q430 504 450 535T474 577T478 601Q478 620 469 634T444 648Q428 648 428 666Q428 678 436 680T488 683H559H630Q673 683 681 681T690 666Q690 648 673 648Q652 648 619 637Q571 615 517 550Q490 517 450 464T410 408Q415 399 501 273T617 106Q648 61 661 48T688 35Q705 35 705 16Q705 5 695 -1H539Q384 -1 379 3Q373 10 373 17Q373 27 380 31T408 35Q459 40 459 49Q459 59 418 129T335 259Q334 260 332 260Q328 260 273 197Q210 127 208 117Q199 104 199 82Q199 57 213 46T239 35Q247 35 252 29T257 15Q257 10 256 7T253 3T248 0L246 -1H28Q16 7 16 15T21 29T35 35Q61 35 117 88Q289 279 304 297Q307 303 255 377Q117 586 79 626Q60 648 39 648Q32 648 27 653T22 666ZM237 639V648H173Q113 647 113 646Q113 642 137 612Q186 546 302 373T453 139Q497 63 497 43Q497 39 495 35H559Q622 35 622 37Q622 38 583 94T486 233T373 399T277 552T237 639ZM553 637L566 648H504L508 637Q510 630 515 615V603L528 615Q529 616 539 625T553 637ZM170 46Q169 49 167 58T164 70V83L137 59L113 35H175Q175 38 170 46",120144:"16 659T16 667T28 683H295Q306 676 306 666Q306 648 284 648Q258 648 255 641Q255 634 265 615T339 479Q418 339 421 339L455 394Q489 448 523 502L557 557Q560 566 560 582Q560 637 504 648Q489 648 486 655Q475 664 486 679L493 683H693Q704 675 704 667Q704 650 684 648Q672 645 653 623Q633 604 614 576T517 426L439 301V183Q442 62 444 59Q449 35 504 35Q521 35 528 30Q538 16 528 3L521 -1H195L188 3Q178 16 188 30Q195 35 213 35Q266 35 273 59Q274 61 277 163V261L75 621Q64 638 58 643T37 648Q28 648 22 653ZM219 637V648H101Q110 634 215 446L313 270V166Q310 59 306 48L301 35H415L410 48Q404 65 404 175V290L317 443Q230 601 226 612Q219 625 219 637ZM608 630L624 648H575Q584 632 588 623L595 610L608 630",120172:"821 97Q822 97 824 88T827 77L793 53Q676 -25 670 -28Q669 -29 656 -27L583 123Q583 124 467 46L352 -31L341 -20Q305 18 264 47T192 77Q161 77 60 32L49 40Q37 47 38 49Q39 49 93 83T212 160T297 219Q411 312 411 452Q411 519 360 571T233 624Q180 624 157 601T133 548Q133 524 160 496T214 441T241 393Q241 356 199 321T100 256L86 249L77 256Q68 263 67 263L84 274Q101 286 118 304T135 339T109 384T56 446T29 504Q29 566 118 624Q207 686 309 686Q349 686 360 685Q405 678 439 661T491 625T520 583T534 543T537 511Q537 436 491 344L478 318L455 299Q420 272 308 179L284 160L294 158Q348 154 426 89L437 79Q513 110 579 153V175Q579 183 579 227T580 330T581 446T582 542L583 582L664 630Q681 640 703 653T734 673L744 679Q750 678 756 676L767 674L716 623V585Q716 568 712 463T708 289V250Q708 237 709 218T710 195L711 180L739 130Q768 79 771 79Q775 79 796 88T821 97",120173:"160 345Q160 357 144 376T109 413T73 458T57 509Q57 544 95 584Q142 631 205 657T331 684Q382 684 427 658T500 585L505 577L521 588Q537 599 562 614T616 646T679 673T738 684Q790 684 807 666T840 587Q850 552 863 532T888 508Q894 505 906 505Q917 505 930 507T953 512T963 514L964 504Q965 495 965 494T914 467T808 413T745 384H751Q782 380 802 377T854 362T904 334T937 287T951 217Q951 178 937 143T908 91Q903 86 820 34L734 -21L718 -24Q679 -31 639 -31Q561 -31 451 4T271 40Q190 40 119 -2L99 -13L91 1L84 15L86 16Q88 18 132 42T233 100T315 152Q377 199 386 233Q388 240 393 297T399 363Q399 487 353 551Q337 573 306 597T238 622Q201 622 179 602T157 557T214 476T272 396Q272 371 229 334T143 272T96 246Q95 246 85 252T74 259T95 273T138 306T160 345ZM529 443Q529 409 528 385T526 353L525 346Q526 346 649 390T773 435Q749 451 742 464T727 518Q727 519 725 532T721 548T717 562T712 577T706 589T698 601T688 608T675 614T658 616Q626 616 576 582T525 528Q525 527 526 518T528 489T529 443ZM772 57Q774 57 778 58T792 64T808 77T821 103T827 144Q827 222 784 266T660 322Q652 323 611 323H596Q577 323 535 316L523 314Q520 291 505 255L500 241L356 138L366 137Q443 131 518 110T650 72T748 54Q763 54 772 57",120174:"460 -32Q373 -32 305 -11T193 45T122 124T83 214T72 303Q72 395 114 476L119 486L313 592L338 568L359 580Q418 615 479 638T568 668T606 675Q607 675 608 676H610Q612 676 615 661T630 621T660 578Q673 568 694 568Q717 568 721 570H726Q724 565 722 559L717 549L706 545Q608 513 583 513Q568 517 559 522T533 546T493 603L490 609Q452 599 452 558Q452 537 469 481T486 393Q486 353 474 331T422 285T296 231L272 223L262 230L253 237Q279 246 314 274T351 338Q351 376 334 442T316 532Q316 546 319 552Q319 554 316 554Q304 554 288 547T250 523T214 466T199 371Q199 218 299 133T541 47Q571 47 585 51T652 81L712 108Q716 104 716 81L706 74Q695 68 673 54T633 29L550 -22L540 -24Q492 -32 460 -32",120175:"380 596Q307 596 250 582T158 546T100 493T67 433T56 373V361Q55 361 43 366L31 372V384Q31 455 69 523T173 627Q213 650 284 666T444 683H452Q629 683 735 629Q896 548 896 369Q896 263 839 163Q835 155 818 140Q746 82 662 27T563 -29Q525 -29 386 16T183 62Q147 62 127 52T63 1L48 -14L40 -4L31 5Q83 73 172 149L186 161H199Q291 161 329 181Q357 199 357 231Q357 258 301 316T245 396Q245 423 282 458T349 512T403 543L413 548L425 545L438 541Q373 491 373 462Q373 446 399 415T453 349T480 288Q480 251 433 212Q394 180 348 156L334 148L353 145Q408 134 513 105T654 76Q711 76 745 132T780 277Q780 434 676 517Q637 549 562 572T380 596",120176:"527 55Q574 55 619 69T691 97L717 111V85L562 -18Q520 -29 443 -29Q379 -29 325 -15T235 21T180 61T146 98Q74 186 74 307Q74 395 109 472Q113 482 123 489T190 533Q251 568 295 591L308 598L350 580L361 586Q403 612 464 636T564 673T609 686Q610 686 610 685Q612 683 616 670T627 636T646 601Q666 572 686 572H692Q713 572 726 576H728L725 565L723 554L692 544Q660 535 629 526T595 516Q585 514 574 519Q563 527 543 552T507 597T490 617Q467 604 456 579V564Q456 535 473 471T492 393L494 381L613 460L622 446Q630 433 650 411T696 371L703 365L614 312H596L580 322Q568 329 553 340T528 355T510 360Q496 358 491 354T484 345T471 326T435 297Q408 278 370 261T307 235T277 227Q273 227 266 234L256 240L267 245Q280 251 294 258T330 288T353 336Q353 373 335 444T316 530V537Q316 549 322 567Q270 554 233 499T196 370Q196 253 287 157Q392 55 527 55",120177:"424 522Q265 596 208 596Q193 596 180 593T150 579T116 542T89 474Q86 465 86 463L59 481L63 494Q87 578 137 627Q191 684 285 684Q334 684 406 658T538 607T621 581Q644 581 706 629L721 640Q722 640 725 630L727 620Q701 592 654 548T582 486L569 487Q533 490 485 504L468 508Q449 503 429 495T387 466T365 422Q365 373 439 299L453 310Q473 325 528 370L588 418Q614 398 642 368T668 331Q667 331 628 296L590 262L582 274Q557 311 526 311Q511 311 487 297T462 278Q462 277 492 244T551 166T581 88Q581 54 570 25T536 -27T505 -56T478 -76Q376 -146 274 -146H270Q199 -146 162 -118T124 -15Q124 12 128 30T132 96V107Q132 144 117 157Q102 169 85 169Q74 169 59 165T32 156T20 151Q20 152 19 158T17 167Q17 168 17 168T17 169T19 170T22 172T27 175T35 179Q131 230 195 230Q231 230 259 202Q270 190 270 171Q269 150 253 87T236 -16Q236 -67 261 -87T322 -107Q380 -107 428 -68Q467 -35 467 30Q467 60 447 91T383 171T316 251Q290 286 278 308T263 339T261 359Q261 384 284 418Q322 469 424 522",120178:"742 611Q784 611 812 631V611Q807 607 783 591T718 544T629 476L606 458Q608 458 628 457T667 453T713 443T762 423T804 388T836 335Q844 313 844 289Q844 231 814 182T746 103Q720 82 655 48T546 -18L520 -21Q456 -29 432 -29Q313 -29 223 33Q204 45 183 65T135 119T91 207T74 320Q74 428 109 480Q116 491 127 497T215 546L308 595L343 583L355 591Q387 613 433 636T488 660H489L491 659Q493 658 495 657T500 655L509 650L500 645Q479 635 460 612T441 552Q441 535 447 498T459 433T466 405L625 513L643 526Q620 530 585 546T535 586Q535 587 532 592T527 602T525 610Q525 613 577 649L630 687Q632 687 638 675T653 649T686 623T742 611ZM349 313Q349 328 327 413T305 510V516Q305 531 308 542T314 559T317 566T315 567Q297 567 270 548Q233 524 212 490T191 392Q191 337 206 288T244 207T284 156T316 128Q410 51 535 51Q632 51 675 102T718 217Q718 269 690 314T599 375Q574 381 535 381Q501 381 477 377L466 376Q469 364 469 349Q469 314 457 295T408 258Q366 236 308 219L288 213L279 220L270 227Q284 232 294 236T309 243T320 252T326 260T331 270T336 281Q349 310 349 313",120179:"288 139Q288 172 255 224T189 335T156 442Q156 495 242 579Q289 625 361 668Q364 671 368 673T376 678T380 681L384 683L392 676Q401 670 414 661T443 642T477 626T509 619Q543 619 618 668Q625 672 628 674T631 675Q632 673 633 663T633 651L564 595Q556 589 545 580T528 566T516 556T505 548T497 543T488 539T481 537T472 535T463 534T451 534H442Q385 534 304 581L291 589Q290 588 285 583T277 575T269 566T262 555T257 543T255 529V522Q255 507 260 487T276 446T293 409T311 376L321 359Q321 358 322 358T324 359T327 361T333 366Q386 409 481 460L503 472L543 471Q586 471 599 470Q692 459 714 430Q725 416 738 360T752 245Q752 184 742 127T725 51T703 -8Q700 -13 619 -64T518 -123Q508 -126 493 -126Q438 -126 398 -86L427 -52Q456 -17 457 -17Q460 -17 465 -16H473Q474 -21 481 -32T504 -56T539 -69Q572 -69 599 -34Q625 4 625 158Q625 264 609 311T532 378Q508 386 484 386Q455 386 419 372T360 345T337 330L346 313Q375 263 386 227Q389 215 389 202Q389 192 388 184T384 168T376 152T365 138T350 121T331 103T307 81T278 54L194 -24Q130 30 99 30Q85 30 64 20T31 1T16 -10Q15 -11 13 -7Q12 -6 11 -3Q8 4 6 8L32 35Q88 88 117 107T169 126Q177 126 182 125Q218 118 252 84L263 73Q288 113 288 139",120180:"500 615Q523 615 550 628T595 655T614 668L623 654L607 642Q512 569 440 534L427 527L413 529Q384 535 340 547T265 565T209 572Q173 572 145 556T101 522T60 465Q58 460 54 460T41 468L32 477L37 487Q96 599 139 640Q187 681 247 681Q275 681 283 680Q313 674 398 645T500 615ZM418 170Q418 186 410 260T401 382Q403 418 403 424L405 433L415 444Q482 515 571 571L582 578Q591 573 607 568L597 560Q522 504 522 450Q522 427 533 357T545 241V228Q545 190 536 159T508 106T478 73T446 48Q343 -25 238 -25Q179 -25 118 15L107 22L79 5Q51 -12 51 -12L38 2L55 18Q106 67 175 122L192 136Q202 130 206 123Q223 91 252 61Q263 50 266 48T278 39T297 32T320 30Q357 30 389 68Q415 102 418 170",120181:"65 510Q68 517 74 528T101 569T144 620T202 661T274 680Q308 680 389 628T503 576Q530 576 596 600Q615 607 616 607Q616 602 615 596V585Q605 581 576 568T531 548T485 531T418 509L400 503L358 522Q347 527 327 537T299 550T277 560T257 568T239 573T220 577T201 578H196Q181 578 169 575T135 554T88 502L83 496Q82 496 74 502T65 510ZM424 4Q424 50 395 151T365 313V320Q365 352 369 361T405 403Q431 432 465 462T521 508T547 525L549 524Q551 524 554 523T560 521L571 517L552 498Q515 461 499 430Q485 399 485 366Q485 326 512 231T539 84Q539 -14 460 -77T273 -141Q248 -141 234 -140T198 -131T160 -106T134 -59Q128 -40 124 -16T117 22T108 49T91 69T59 75T15 65L1 59Q-8 76 -7 77Q4 85 22 97T88 129T170 149Q218 149 234 125Q242 112 242 43V21Q242 -17 248 -41T274 -85T322 -105H325H330Q363 -105 396 -75Q424 -47 424 4",120182:"234 109Q234 144 194 245T153 404Q153 445 180 490Q232 572 325 626T517 681H524Q612 681 661 658Q683 647 699 632T717 604Q717 600 708 545L699 490L690 489Q681 488 679 488Q675 488 669 504T640 546T577 592Q520 620 446 620Q415 620 386 614T327 594T280 553T262 487Q262 468 265 447T271 413T279 384T285 362L295 371Q320 396 352 421T439 474T538 502Q577 502 596 484T627 428Q642 386 651 373T677 360H682Q698 360 727 369L724 357Q724 354 724 351T722 346V344Q559 289 539 283Q582 272 589 271L615 265L637 189Q662 109 663 108Q668 97 682 84Q698 68 722 68H730H738Q762 68 799 91L803 80L806 70Q795 59 770 40T703 -3T631 -26Q598 -26 578 -8Q548 24 536 92Q524 154 509 183T477 218T428 224Q409 224 385 220T346 212L331 207Q330 205 330 201T331 189T332 178Q332 158 325 116L305 96Q269 60 240 38Q171 -21 123 -21Q72 -21 33 18L20 32L62 74Q96 107 102 112T116 118Q120 118 122 113T131 95T150 69Q171 48 190 48Q198 48 206 51T224 69T234 109ZM519 367Q497 432 450 432Q379 432 313 333L300 314L304 299Q306 294 309 280T315 260L321 235L542 313Q530 325 519 367",120183:"277 226Q277 248 253 286T203 369T178 449Q178 490 212 533T284 607Q380 683 532 683Q610 683 639 660T668 583Q668 568 666 546T663 509Q663 478 683 460Q691 452 719 452L738 450Q732 437 729 437Q728 437 652 416T573 394Q554 394 541 409T527 444Q527 449 532 487T538 542Q536 584 501 606T418 628Q389 628 364 620T317 587T295 523Q295 478 333 401T372 276Q372 269 371 267Q371 264 318 206L264 149Q284 141 317 130T433 101T577 82Q619 82 652 95T701 127T728 164T742 196L744 209Q744 210 749 208T759 203T764 199T760 185T751 154T744 129Q714 42 680 13Q628 -28 566 -28Q490 -28 403 -5T249 42T153 66T106 53T70 15T47 -16Q46 -17 30 -5L39 13Q85 100 138 148L147 156L161 157Q218 165 246 179T277 226",120184:"134 338Q134 357 81 417T27 504Q27 516 34 530Q55 568 110 615Q190 683 305 683H314Q445 683 495 580L501 569L512 577Q608 646 681 646Q759 646 801 585L808 576L816 583Q860 619 921 650T1041 682Q1063 682 1077 675T1096 660T1112 631T1132 596Q1160 555 1188 555Q1204 555 1228 564Q1230 565 1231 562Q1231 560 1232 554V547L1215 538Q1179 521 1114 475Q1112 474 1106 470T1099 464T1093 459T1088 452T1085 441T1082 425T1081 404T1079 376T1079 339Q1079 282 1084 236T1098 160T1117 112T1138 85T1159 77Q1166 77 1180 81T1207 90L1219 94Q1220 94 1221 86T1222 76L1045 -32Q1044 -32 1004 15L964 64V167Q965 334 970 372V378L994 402Q1032 440 1057 460Q1061 463 1066 467Q1070 469 1070 470T1068 471T1060 474T1050 481Q1040 488 1021 531T996 583Q979 609 947 609Q922 609 887 592T820 537L821 524Q825 484 825 448Q825 268 768 155L759 137L589 -28L579 -20Q533 17 507 17Q475 17 449 -7L436 -18L424 2L441 20Q446 25 456 36T471 52T484 65T497 79T509 90T522 99T534 106T548 112T561 115T576 117Q602 117 639 86Q648 81 648 81Q650 82 657 94T668 112Q711 202 711 373Q711 484 677 533T600 583Q592 583 583 581T569 577T554 568T542 560T528 549T516 539L519 523Q527 485 527 461Q527 444 522 407Q506 266 447 150L437 130L217 -25L208 -15Q165 28 126 28Q89 28 62 1Q47 -14 43 -14Q42 -14 36 -8L28 0L44 17Q96 73 120 92T166 117Q182 123 204 123Q239 123 284 78L295 67Q307 72 337 102Q400 178 400 346Q400 508 325 571Q270 618 208 618Q180 618 168 614T140 594Q124 578 124 564Q124 540 182 480T240 396Q240 359 197 321Q154 285 94 252L80 245L76 248L67 257L61 262L71 268Q82 275 94 284T120 309T134 338",120185:"522 492Q521 492 517 502T512 513Q542 444 542 333Q542 226 503 137L498 125L396 53Q308 -8 292 -17T260 -27Q226 -27 191 -9T136 29L145 39Q162 56 192 89L230 129L235 128H241Q276 57 332 57Q358 57 391 80Q403 89 409 100T422 143T428 227Q428 329 406 408T347 530T272 594T196 615Q152 615 135 596T118 558Q118 535 146 502T203 438T232 385Q232 357 195 322T122 265T83 243Q82 242 72 249T61 258L66 262Q72 265 82 273T103 292Q125 314 125 333Q125 351 101 376T51 432T26 492Q26 549 108 614T290 679Q326 679 335 678Q353 675 370 670T400 658T425 642T445 625T463 606T477 588T487 571T495 556T500 543L504 535L523 553Q553 581 569 595T619 632T686 667T757 678Q778 678 793 675T819 664T833 651T844 633T852 617Q884 548 910 548H916Q938 548 962 556L967 542Q967 540 947 531Q909 509 883 492T847 467T838 458Q825 419 825 328Q825 234 833 191T858 121Q875 94 892 77Q898 71 907 71Q912 71 928 76T957 87T971 91L972 88Q972 84 972 81L973 73L957 63Q891 21 806 -23L794 -30L783 -14Q766 13 728 60L713 79V372L724 384Q743 406 765 427T800 460L813 471Q809 472 806 472Q783 479 766 503T741 551T715 594T672 614Q644 614 622 595Q597 576 572 550T534 508L522 492",120186:"254 595Q269 583 269 581L262 577Q256 573 247 566T228 549T212 527T205 502Q205 480 266 386T328 277Q328 234 239 150L221 134L231 133Q264 131 376 99T516 62Q567 50 604 50Q614 50 626 52Q643 57 662 71T703 115T739 198T753 323Q753 454 692 517Q652 555 584 565T382 577Q365 577 357 577H308L300 591L292 606Q292 608 342 665L392 724L403 725Q406 725 411 726H416L417 725L412 715Q408 705 408 698Q408 684 423 679Q431 677 516 672T663 655Q757 634 806 593T873 463Q881 421 881 380Q881 340 874 306Q859 223 809 147Q801 134 789 124Q595 -30 456 -30Q395 -30 289 3T147 36Q134 36 121 33T98 26T76 15T59 4T44 -8T32 -17L22 -7L12 4L56 59L100 114L116 118Q217 142 217 199Q217 230 185 276T120 365T87 430Q87 435 109 464T172 534T254 595",120187:"247 398Q247 372 206 334T126 272T83 247Q82 247 72 253T61 261Q60 261 61 262T66 265Q127 306 127 343Q127 364 63 430Q42 451 38 458T33 480V490V497Q33 526 63 567Q112 632 170 660T282 688Q341 688 384 667Q454 633 482 566Q483 565 484 566T496 574Q562 623 630 653Q699 681 751 681Q778 681 797 673Q818 662 830 609Q835 580 843 564Q863 524 895 524H901Q917 524 932 528Q936 522 938 518T942 513T942 511Q873 480 836 454Q789 423 789 395Q789 362 834 298T880 200Q880 170 867 145T820 81Q733 -20 647 -20Q581 -20 499 21V9Q499 -16 502 -53T509 -116L512 -141L370 -223L357 -216Q344 -209 344 -208L348 -196Q370 -113 370 33V52L355 58Q307 76 284 76Q258 76 228 60T183 29T141 -11Q137 -7 133 -2L126 7L134 18Q181 89 210 121T278 170Q304 179 328 179Q336 179 358 177L370 175Q368 268 367 359Q367 416 363 434Q362 438 362 441Q348 527 302 574T203 621Q169 621 148 599T127 557Q127 535 187 476T247 398ZM673 315Q673 357 786 442Q786 443 776 444T750 449T727 462Q719 471 716 484V496Q715 507 715 515Q715 571 698 588Q680 611 643 611Q592 611 547 571Q534 558 511 522L499 505V139L543 123Q702 64 744 64Q770 64 781 79T793 112Q793 143 733 217T673 315",120188:"254 595Q269 583 269 581L262 577Q256 573 247 566T228 549T212 527T205 502Q205 480 266 386T328 277Q328 234 239 150L221 134L231 133Q264 131 376 99T516 62Q567 50 604 50Q614 50 626 52Q643 57 662 71T703 115T739 198T753 323Q753 454 692 517Q652 555 584 565T382 577Q365 577 357 577H308L300 591L292 606Q292 608 342 665L392 724L403 725Q406 725 411 726H416L417 725L412 715Q408 705 408 698Q408 684 423 679Q431 677 516 672T663 655Q757 634 806 593T873 463Q881 421 881 380Q881 340 874 306Q864 250 838 196T791 126Q748 93 733 82L715 69Q714 68 723 60T748 40T774 23Q806 2 832 2Q849 2 870 6T904 14L917 17Q917 12 918 6V-3L882 -22Q806 -60 778 -73L755 -83Q640 -36 596 -7L586 0L576 -4Q513 -30 457 -30Q394 -30 289 2T149 35Q119 35 93 22T52 -4T36 -17T24 -7T12 4L56 59L100 114L116 118Q217 142 217 199Q217 230 185 276T120 365T87 430Q87 435 109 464T172 534T254 595",120189:"31 498Q34 541 76 586T176 659T279 688H290Q377 688 429 653T506 569L511 558L526 572Q620 663 707 682Q722 685 737 685Q781 685 804 665T830 619T838 565T854 525Q866 511 897 511Q917 511 925 513L937 515Q938 515 941 509T944 501T925 493T870 470T803 438Q735 406 735 401Q735 400 741 399T767 390T814 374L828 367L829 307Q829 233 833 202T852 144Q873 109 896 90Q906 82 928 82T976 95V92Q976 88 978 72L807 -28Q768 39 733 87L718 108V149Q718 230 714 257T693 298Q654 333 580 333Q524 333 520 329Q520 300 489 224T443 133Q441 131 333 53T223 -27Q221 -26 204 -11T169 16T136 28Q110 28 66 -8L56 -16Q52 -13 40 -1L48 7Q165 124 211 124Q232 124 287 77L298 67Q309 73 337 97Q397 150 397 347Q397 419 379 474T330 560T269 604T207 619Q177 619 152 601T126 563Q126 540 185 479T244 387Q240 336 160 289Q144 278 98 255L80 246L62 261L79 272Q96 283 113 301T130 337Q130 353 115 373T81 410T47 451T31 498ZM524 358Q537 358 657 405T777 457Q777 459 768 459Q749 462 738 474T723 499T714 539Q706 585 697 599Q681 618 657 618Q632 618 597 595T532 515L525 502L524 441Q524 375 523 369Q523 358 524 358",120190:"457 -31Q356 -31 272 6T135 120T82 304Q82 372 106 430T170 527T241 588T305 626Q341 643 386 657T460 678T495 685T554 660T674 609T778 584Q800 584 818 591T848 610T866 633T878 651T883 659L893 649L901 639Q879 574 803 532T666 490Q661 490 657 490T650 491T641 492T633 495T622 500T610 505T595 513T577 522T554 533T527 547Q436 594 415 602Q393 608 374 608Q303 608 253 545T202 386Q202 229 307 135T568 41Q674 41 748 85T822 198Q822 244 779 283T639 322Q595 322 499 303T383 283Q358 283 335 290T291 318T270 374Q270 418 313 460T424 510H431L435 505L440 500Q425 496 403 475T380 427Q380 382 431 373Q437 372 475 372Q543 372 626 388T742 404Q831 404 868 362T905 260Q905 182 831 108Q692 -31 457 -31",120191:"666 641Q737 641 794 686L802 662Q790 648 734 596L677 541L664 538Q630 528 583 528Q540 528 482 537L461 541Q402 512 402 456Q402 427 439 387T512 311T549 253Q549 220 455 139L440 126Q541 75 586 75Q600 75 619 80T654 94T685 110T709 124T719 130Q722 125 725 119L730 108Q700 72 568 -18Q551 -30 542 -30Q495 -30 404 6T270 42H263Q213 42 142 -11L131 -19L129 -8Q126 1 126 4Q218 84 301 126L316 134H406L413 142Q436 165 436 189Q436 202 421 221T364 281Q336 307 318 328T296 356T283 381L290 394Q338 478 410 540Q419 549 417 549Q415 550 369 558T268 575T195 584Q153 584 127 567T100 523Q100 499 116 479T151 447T170 433Q170 429 171 428Q171 427 131 394T88 359Q82 363 73 370T47 403T31 457Q31 513 79 565T197 648T332 679Q369 679 490 660T666 641",120192:"273 244Q273 281 244 331T186 428T155 502Q155 524 165 536Q239 634 333 688Q338 684 345 680L356 672L344 664Q310 642 295 624T280 582Q280 550 303 505T348 407T371 300Q371 270 362 248L247 123L358 92Q452 64 484 64Q507 64 523 72Q553 87 573 109Q583 121 586 146T593 283Q594 303 594 344Q594 401 591 461T584 558L581 595Q598 600 623 611T672 634T719 659T754 678L768 686Q770 686 784 673L782 670Q781 668 777 664T768 655Q747 635 738 616T721 535T714 359Q714 205 723 176Q727 164 744 133T771 89Q780 75 804 75Q814 75 853 87L867 92L871 73L671 -39L654 -10Q636 20 619 50T600 83Q600 84 589 75T539 34Q478 -16 475 -19Q469 -22 449 -28T414 -34Q410 -34 394 -32Q356 -28 282 -2L237 15Q169 38 126 38Q106 38 85 27T51 4T37 -8T27 -1T18 8Q18 10 70 63T124 116Q154 123 176 131T223 154T260 191T273 244",120193:"133 343Q133 360 79 416T25 496Q25 523 58 563T118 624Q197 685 293 685Q331 685 339 684Q453 665 489 558L493 546Q521 570 553 596T640 653T725 684Q753 684 783 672T844 641T889 618Q895 616 912 616Q924 616 936 617T956 620T965 622T966 612V604L952 595Q924 576 895 549Q864 517 856 496T847 448V434Q847 395 848 388L859 323Q874 241 874 212Q874 142 830 96Q796 62 724 14Q661 -29 603 -29Q555 -29 421 28T242 86Q182 86 110 31Q105 28 102 26T99 25Q88 36 88 42Q95 54 222 142Q252 163 262 165Q319 183 344 218Q378 266 378 377Q378 444 362 494T319 571T266 610T212 623Q181 623 156 603T131 562Q131 539 154 512T206 458T243 416Q246 409 246 399Q246 387 242 377T225 351T178 311T94 259L79 251Q72 256 68 261T62 268L61 270L70 277Q131 318 133 343ZM822 526Q778 531 719 564T628 597Q611 597 579 574Q543 543 513 506L505 495L506 473Q506 469 506 461T507 449Q507 348 467 271L462 261L404 218L348 174Q349 173 356 173Q384 169 450 144L546 105Q665 56 708 56Q737 56 746 72T756 118Q756 129 755 135L741 219Q725 314 725 334V344Q725 416 736 431Q748 450 815 510L832 526H822",120194:"133 317T133 338T80 413T26 496Q26 532 83 591Q100 608 111 616T151 644T219 672T304 682Q381 682 434 646T506 564L510 557Q513 557 534 573L677 665L707 683L790 561L803 572Q933 682 1001 682Q1037 682 1098 650T1193 616Q1208 616 1222 619L1235 622Q1239 622 1239 616Q1239 611 1240 609Q1240 608 1206 577T1138 503T1104 430Q1104 409 1123 330T1142 208Q1142 183 1136 147Q1127 118 1117 106Q1114 103 1031 48T935 -14Q930 -18 908 -22T862 -27Q826 -27 759 -6T647 26Q597 38 578 38Q573 38 561 33T533 20T505 4T480 -10L469 -16L452 -26L439 -28Q423 -30 411 -30Q358 -30 279 7T169 45Q125 45 58 -5L47 -14L41 -4L35 8Q35 11 56 29T113 75T181 125L200 139H217Q279 143 320 180T377 270T394 393Q394 453 378 498T334 568T277 605T213 617Q177 617 155 607Q140 600 130 587T119 560Q119 545 137 522T177 479T217 434T236 393Q236 324 98 251L89 246L76 253L63 261Q91 275 112 296ZM1088 526Q1066 526 1004 556T909 586Q863 586 816 539L802 526L804 514Q814 461 814 411Q814 319 781 238Q772 214 760 198T730 165T702 136L715 133Q759 122 848 90T973 57Q1003 57 1017 80Q1022 93 1022 116Q1022 152 1003 241T983 377V391Q983 405 985 409T1002 429Q1019 450 1045 475T1090 514L1107 528Q1104 527 1102 527T1096 527T1088 526ZM699 358Q699 391 696 419T688 467T675 503T660 530T642 550T626 563T608 574T593 582Q581 575 559 554T524 512Q523 510 523 477Q523 315 444 218L435 207L368 169Q301 132 301 131Q307 128 315 125L377 99Q476 57 515 57Q534 57 608 94L627 102L636 111Q699 187 699 358",120195:"273 679Q354 674 408 633T477 525L484 533Q496 548 524 574T571 615Q594 633 625 649T675 673T699 681Q724 632 747 607Q754 601 756 599T765 594T777 591T794 590Q818 590 834 594V585L835 577L704 513L693 518Q657 534 631 560T597 599Q596 601 581 584Q495 490 489 379V366H562L681 369Q682 369 679 366T668 355T651 341L620 314H485V295Q490 190 543 125T686 60Q720 60 789 88L801 93V89Q798 83 798 66Q781 59 685 -10L665 -25L634 -30Q596 -35 594 -35Q570 -35 536 -23T477 19Q461 37 445 67T418 118L409 138Q401 131 388 120T340 79T273 28T206 -12T151 -31Q129 -31 90 -12T32 22L113 101Q114 101 120 96T136 84T160 69T189 56T221 51Q256 51 305 90Q376 149 376 301V315H293Q276 315 251 315T210 314T190 313L168 312Q168 313 200 340L231 368L238 367Q275 367 311 366H378V387Q376 470 355 512T291 572Q274 579 252 579Q223 579 197 568T156 544T131 519T117 508Q112 512 108 518L99 527L117 545Q177 604 255 665L273 679",120196:"34 496Q34 518 53 549T107 610T195 661T310 682Q357 682 398 663T460 611Q467 600 475 583T489 554T495 542Q495 544 531 570T617 629T700 676L724 688Q742 670 756 657T784 635T806 621T830 606T856 592Q878 416 878 340Q878 154 805 -3L798 -20L779 -40Q706 -113 613 -163T421 -214Q359 -214 317 -196T256 -160L306 -63L313 -64L320 -66L326 -79Q337 -104 349 -120T392 -151T470 -166Q576 -166 644 -101Q750 7 750 292Q750 426 721 495T617 565H611Q563 565 513 509L506 501L508 493Q508 490 509 475T510 445Q510 319 458 236L451 225L436 216Q406 198 365 169T318 134L332 127Q336 126 397 103T489 80H493Q527 80 593 129L604 137L607 127Q610 119 610 116Q610 114 592 95T543 46T484 -4Q450 -27 446 -27Q441 -27 402 -18Q365 -9 290 20T188 50Q135 50 64 -7L52 -17L43 -7L34 2L51 19Q118 87 177 132L192 143H215Q259 145 289 155T335 184T355 214T366 245Q382 306 382 388Q382 426 381 436Q368 520 318 570T214 621Q184 621 165 608T142 583T137 562Q137 541 163 508L201 469Q245 425 251 408Q253 403 253 398Q253 383 240 366T212 335T161 295Q128 271 99 253L89 247L77 256L65 266L76 273Q125 301 134 329Q136 334 136 342Q136 357 124 372T88 410T49 455Q34 479 34 496",120197:"278 601Q242 601 212 591T167 570T121 533Q114 528 111 525L93 550Q223 661 244 667Q299 677 356 677Q415 677 456 666T515 634T541 596T549 555Q549 513 529 478T480 421T424 388T377 372Q365 370 365 367Q365 365 389 365T450 358T523 337T588 282T623 183Q624 177 624 161Q624 20 524 -60Q415 -148 285 -148Q242 -148 213 -139Q181 -131 159 -109Q136 -87 127 -56T114 6T104 49Q94 69 57 69Q38 69 13 58L1 53Q1 55 0 59T-3 68T-4 76Q78 130 138 142Q150 144 162 144Q213 144 227 120T242 31Q242 -30 263 -66T345 -102Q397 -102 444 -52T491 107Q491 172 471 211T428 265Q392 288 306 288Q269 288 233 284L218 282Q208 289 208 291L229 324L251 359Q250 360 248 360Q239 360 248 371L256 381H273Q344 385 378 409T413 495Q413 537 384 569T278 601",120198:"80 129V151Q80 241 99 363Q99 367 111 372T172 401T285 465L297 472Q340 455 405 443L423 440L455 453Q486 467 489 467L497 461L494 451Q480 390 480 292V283Q480 207 483 155L484 143L535 80L558 90L582 99Q586 95 586 83Q586 81 513 25L443 -29Q410 16 386 40L371 55V61Q371 63 371 67T370 74V80L278 25Q186 -29 184 -31Q182 -32 160 -12T112 35T80 75V129ZM359 366Q334 366 300 371T243 382L221 388Q218 388 212 375T200 323T194 228Q194 191 197 152L198 139L217 120Q245 92 269 74L279 66L304 78Q338 95 349 100L369 110V152Q368 164 368 210T367 275Q367 358 366 361V366H359",120199:"99 398Q99 610 86 662Q86 665 95 669T106 674L108 669Q109 664 112 654T119 635Q122 626 125 616T130 601L131 596Q214 649 273 678Q295 690 298 690Q299 690 304 688T313 682L317 679Q275 653 240 612Q210 569 210 469V459Q210 450 210 432T211 406L212 378L285 425Q301 435 321 447T350 466L360 472Q360 473 361 473T368 471T401 456T465 429L501 414V408Q504 386 504 309Q504 255 500 203T491 125T485 97Q485 95 445 74T343 23T237 -24L214 -32Q197 -22 165 3T109 49T87 73Q99 169 99 398ZM386 251Q386 320 380 347V350L305 374L282 382L214 348L213 274Q213 184 214 165V131L230 119Q288 76 349 54Q386 137 386 251",120200:"227 393Q215 393 210 351T205 269Q205 161 213 153Q220 145 244 125T290 88L312 72L365 92Q414 113 418 113V93L365 60Q255 -9 221 -26L211 -18Q158 21 91 88L90 107Q87 167 87 225Q87 267 90 302T96 351T100 366L295 473L311 470Q340 464 368 454T410 437T424 429L347 334L342 333H337L325 342Q299 363 271 378T228 393H227",120201:"88 117Q88 177 91 231T97 310T102 341Q102 343 118 357T168 397T239 447L257 459L268 454L278 449Q242 416 238 412L219 394Q219 391 216 378T211 349T206 307T203 249Q203 211 206 166L208 148Q224 132 261 108T333 70Q341 66 342 67T350 79Q393 157 393 302Q393 368 388 406V411L371 424Q199 558 101 558Q69 558 28 545L18 542L8 549L-1 557L24 569Q61 587 147 621L177 632Q179 631 194 627T216 621T240 613T269 602T302 589T340 571T382 549T431 522T484 488Q504 475 504 472Q511 449 511 365Q511 248 474 129L468 108L451 96Q427 77 347 28T254 -28Q235 -20 174 21T89 86L88 117",120202:"309 69Q391 98 416 108Q418 106 422 100T425 92Q419 86 326 30T229 -27Q228 -27 207 -13T154 27T97 76L85 87L84 106Q81 152 81 194Q81 295 93 359L95 369L286 471L313 449Q376 397 414 372L428 362Q428 360 375 318L188 181V170Q188 156 189 153V148L203 138Q228 119 266 94T309 69ZM209 389Q208 388 204 366T194 307T187 244Q187 225 188 225T201 233L245 261Q283 284 291 291Q324 313 324 316L296 334Q280 343 259 357T224 380L210 390Q209 390 209 389",120203:"128 400Q127 401 121 422T108 478T99 540V555L111 569Q135 597 165 626T214 671T235 687L249 678Q263 668 282 659T315 650Q335 650 362 666L372 654L286 569H271Q205 576 173 586V583Q173 558 208 492T252 401Q253 399 310 399T367 398L332 355H254V311Q251 160 235 16Q230 -28 226 -36Q225 -38 221 -45Q171 -140 121 -211L113 -222H104Q94 -222 94 -220Q94 -215 105 -187L121 -145Q139 -80 139 35V93Q139 222 135 314L134 354Q134 355 84 355H35L84 399H106Q128 399 128 400",120204:"92 71Q92 74 91 88T88 128T86 183Q86 230 91 275T102 342T109 366Q115 372 207 422T305 472Q407 426 431 426Q435 426 476 445L519 465L525 463L532 461Q497 392 497 268Q496 255 496 233Q496 179 516 92T539 -10L541 -22L526 -38Q441 -126 355 -194L339 -206L327 -207Q324 -207 319 -207T310 -208Q242 -208 171 -179T73 -131L56 -141Q40 -150 38 -150Q17 -140 17 -137Q17 -136 18 -136T98 -79L176 -23Q174 -21 134 24T92 71ZM226 393Q224 393 221 372T214 312T210 235Q210 182 214 144L215 132L230 118Q281 70 301 66Q304 66 331 80T373 105L384 112L383 165Q383 224 387 309Q387 314 387 319T387 329T388 336T388 341V343Q388 344 381 344T339 354T249 384Q246 385 243 386T236 389T231 391T228 392L226 393ZM414 -80Q414 -64 411 -43T403 -1T394 37T386 66T382 79Q381 79 286 15T189 -52Q312 -125 365 -125Q397 -125 405 -115T414 -80",120205:"95 661Q95 662 103 667T113 672L126 634L137 596L147 602Q235 656 275 677L292 687L303 680Q305 679 307 677T312 674L313 672L310 670Q307 669 301 667T289 660T274 649T259 634Q250 622 244 611T233 585T226 560T222 528T221 497T220 456T219 413V377L232 384Q244 391 271 409T339 455L362 471L383 461Q425 440 491 415L504 410V406Q507 399 507 269Q507 76 486 -21Q485 -30 483 -33T461 -57Q382 -139 299 -207L281 -197L263 -186L266 -185Q268 -184 280 -177T312 -155Q344 -130 353 -116Q394 -59 394 117Q394 162 391 216T386 301T382 335Q382 338 365 346T323 364T281 376L250 362Q220 347 219 347Q213 336 213 232Q213 177 217 144L218 128L224 119Q244 92 263 71L272 60Q206 21 157 -24Q156 -24 151 -16T132 11T98 52L89 62L91 103Q104 289 104 436Q104 471 103 506T101 568T99 616T96 649L95 661",120206:"73 613L164 686L184 666Q200 650 214 637T235 620T242 614T203 577T162 540Q158 540 122 570T73 613ZM92 58Q92 63 94 83T98 142T101 234Q101 318 97 358V366L59 387L40 379L21 371Q20 371 12 376T3 382L38 406Q78 431 125 466L138 477Q149 468 186 444L219 422V389Q215 324 215 247Q215 136 222 123Q226 113 238 98T258 83Q263 83 292 94L322 104Q322 103 324 97T327 89Q327 88 317 82T272 52T190 -7Q166 -25 164 -25L112 35Q92 55 92 58",120207:"74 611L155 682Q172 666 186 655T208 636L235 614Q227 606 191 574L154 540L135 556Q101 582 84 601L74 611ZM10 377L144 477Q145 476 184 453T229 428L233 425V416Q238 346 238 252Q238 93 215 -16L213 -30L185 -57Q29 -203 19 -203Q17 -203 -19 -189L-9 -183Q52 -146 78 -116T114 -37Q120 31 120 192V237Q120 327 113 351T72 380L53 372Q34 362 32 364L10 377",120208:"106 72Q110 105 111 193T114 294V308H74L34 309L83 346H115V430Q114 591 106 652Q105 662 107 665T114 668T123 672Q125 672 139 635L152 597L154 598Q156 600 160 602T167 607Q193 625 226 644T279 672T302 682L312 676L321 670L312 665Q281 649 263 626T241 587T233 547Q232 541 231 530T230 510T230 501Q231 501 265 522T334 564T369 583L380 570Q428 509 428 481Q428 475 427 470T423 459T416 448T404 434T389 418T369 397T344 371L321 347L365 346H409L372 308H227V294Q227 272 230 208T234 138Q234 136 256 119T302 84L324 68L372 88Q421 108 422 108T432 90L421 83Q373 53 270 -5L234 -25L204 -1Q172 25 124 60L106 72ZM336 434Q336 452 327 472T308 503T297 514Q296 514 290 510T275 499T264 490Q230 458 230 358V346H247Q268 346 276 350T302 372Q328 398 335 423Q335 424 335 428T336 434",120209:"111 275Q111 406 108 518T104 650V657Q105 657 109 660T117 665T122 666L133 629L144 594L161 606Q218 642 272 670L294 681Q295 681 300 677T306 672L302 669Q298 666 292 662T278 651T263 637T251 621Q232 587 227 530T222 343Q222 226 230 125L231 112L244 98L258 83Q271 87 285 92L312 102V84Q297 72 231 24T163 -23L100 55Q110 141 111 275",120210:"115 203Q115 257 114 291T112 338T111 355Q111 357 93 370L75 384L54 375Q32 366 31 365Q27 365 16 378Q25 383 89 430L152 476Q175 453 228 420Q229 420 229 418T229 410T227 394L225 369Q279 400 315 425T363 461T376 471Q480 424 514 416V412Q514 411 514 404T513 392L511 376L520 382Q529 387 548 399T584 422Q599 432 618 444T648 463L657 469H658Q661 469 681 461T735 440T796 420Q803 418 803 416Q801 414 798 390T791 325T788 247Q788 220 790 172T794 123Q799 115 814 97T835 78H838Q841 78 867 89L895 101Q896 101 896 100T897 92T900 78L873 62Q810 23 761 -12L736 -30Q735 -30 729 -22T707 7T671 48L661 59Q674 93 674 207V219Q674 341 670 344Q655 353 591 372L576 376L544 364Q511 351 510 351Q507 349 507 224V132L535 95Q541 87 548 78T560 63L563 58Q563 57 504 15T444 -28L385 53L387 67Q396 114 396 206Q396 289 393 334Q393 346 390 348Q369 358 306 373Q301 373 265 361L228 349V335Q227 322 227 284Q227 206 231 157Q231 151 231 144T232 133V129Q232 125 259 90Q286 56 286 53Q287 53 284 51T273 43T258 31L173 -31L166 -20Q160 -11 145 7T119 38T108 59Q108 62 110 81T113 133T115 203",120211:"608 88Q572 65 535 37T477 -8T455 -25Q432 7 389 53L375 68L378 82Q386 160 386 195V221Q386 284 385 307L384 344Q352 359 306 373L286 379L213 353V273Q214 229 214 161V129L275 62L163 -28L150 -14Q136 0 121 16T91 44Q86 48 86 50Q95 83 96 148Q96 224 89 340L88 366L79 374Q69 384 67 385L64 388L55 383Q52 382 44 378T33 373L21 367L13 374Q5 379 5 381Q5 384 69 428L133 473Q135 473 147 464T179 443T215 424L214 400V376Q271 404 342 457L363 472Q363 473 364 473Q366 473 375 469T418 449T502 414L512 411V407Q502 330 502 217V197V132L523 109Q527 104 533 97T543 87T547 83L550 80L578 92Q603 103 604 103Q606 103 608 88",120212:"107 102Q107 178 112 242T123 334T129 362Q129 363 140 368T199 400T315 469L336 482L346 476Q409 439 498 414L514 410L515 389Q515 208 502 141Q494 101 491 94Q490 89 478 81Q430 51 375 23T288 -20T254 -34Q250 -34 200 -1T119 56L108 65L107 76V102ZM389 355Q367 358 346 363T309 372T282 381T264 388L257 390H256Q254 390 249 381T238 348T227 293Q226 280 226 237Q226 183 231 146L232 131L244 122Q285 91 323 74T374 57H377L380 68Q405 154 405 267Q405 315 401 349V354L389 355",120213:"66 435Q66 445 117 501T173 557Q174 557 183 555T193 551Q174 526 174 509Q174 496 190 472T233 428V386L377 482L399 471Q450 445 509 425Q519 421 519 420L518 419Q518 418 518 416T517 410Q517 405 518 381T519 335Q519 222 501 137Q492 84 489 84L473 75Q457 66 423 44T354 -6L338 -19L329 -13Q320 -8 313 -4T297 4T284 10T270 14T258 17T245 20T233 22V12L241 -161L214 -172Q187 -184 160 -195T131 -207Q127 -207 112 -202L113 -188Q113 -182 115 -77T118 31Q118 32 109 32Q63 27 23 0L10 -9Q5 -4 -1 8Q1 13 52 57T114 101H115L117 123Q117 141 117 230V359L110 367Q85 394 71 421Q66 433 66 435ZM384 83Q386 83 389 110T396 180T400 254Q400 294 395 339L394 349L379 355Q308 383 294 383Q290 383 263 372L234 360L233 245V130Q270 125 305 113T361 92T384 83",120214:"362 -196Q375 -92 375 47V78L282 24Q189 -29 188 -30Q187 -30 139 21T90 75Q87 84 87 158Q88 206 94 259T107 342L113 372L308 478L322 473Q374 452 421 444L433 442L503 485Q515 479 515 477Q485 378 485 56Q485 -100 494 -164V-171L381 -211L371 -207L362 -202V-196ZM280 72Q301 77 323 86T358 101T372 110Q372 268 377 346L378 358H374Q368 360 358 360T323 365T257 380L234 386Q231 386 229 379Q215 353 211 310T207 180Q207 152 208 150Q210 142 235 114T280 72",120215:"23 367Q21 370 18 374T14 380L13 382L151 472L236 411L238 381L290 426Q298 432 307 439T322 452T333 461T342 467L344 469Q382 410 404 399Q410 397 416 397Q423 397 432 399T446 403L451 405Q453 405 453 399V393Q430 374 404 356T364 328T350 318L349 317Q321 320 276 356Q257 371 256 371Q253 374 249 366T242 351Q232 321 232 236Q232 214 232 205T232 182T233 162T235 148T238 137T242 129T249 120T257 114T268 105T281 95Q313 70 314 70L358 85Q377 92 389 96T402 100V90L403 80L229 -26L221 -18Q195 6 166 29T121 63T105 76T106 82T110 97T114 121T117 158T119 208Q119 269 114 329L113 341L103 350Q90 362 67 380L45 374L23 367",120216:"189 331Q190 304 196 282T207 252T214 244Q239 244 348 292L371 302L382 297Q398 290 415 279T433 265Q442 238 442 166Q442 103 423 45Q416 42 380 29T310 3T244 -26L227 -34Q139 40 73 40Q61 40 48 37T24 30T6 22T-8 14L-13 11Q-14 11 -18 18T-23 26T38 75T102 125Q107 128 146 131H153Q192 131 296 56Q318 40 318 43Q323 48 323 114Q323 157 321 177L319 194Q308 208 291 216T261 225Q239 225 160 185L123 167Q85 205 79 227Q78 230 78 304V377L171 428Q264 479 265 478Q268 478 287 465T334 440T384 427Q423 427 475 463L478 453Q481 446 481 442Q481 439 410 391L339 342H331Q309 345 277 361T222 391T198 406T195 399T191 372T189 331",120217:"328 69Q401 102 403 102Q404 102 405 94T406 84Q406 83 318 28L230 -27Q223 -21 206 -5T171 25T132 54L124 60V71Q129 154 129 297V359H43L44 363Q44 365 44 367L45 369L48 372Q51 374 57 378T68 387L90 405H129V553L285 648Q304 641 306 640L260 598V592Q259 589 255 505T249 413V405H353V402Q353 399 328 379L303 360H245V319Q245 150 253 125Q257 115 276 101T311 78T328 69",120218:"444 -31Q444 -29 384 66Q382 66 364 58T309 30T231 -17Q214 -29 212 -29L197 -20Q172 -4 140 11T88 34L68 42Q68 43 73 49T85 67T100 98T113 149T118 221Q118 272 105 332L100 356L58 383L23 365L9 379L76 425Q141 472 144 472Q144 471 183 443L221 414V404Q224 365 224 275V253Q224 159 196 113Q191 104 193 104Q203 104 285 72L308 62L374 89L375 106Q375 266 373 340Q373 364 371 396V424L430 445L491 467Q493 467 499 463T505 457Q505 456 503 442Q488 335 488 187V158L529 81L534 80Q541 80 568 90L598 101Q605 94 602 87L524 27Q445 -32 444 -31",120219:"95 67Q104 80 104 193Q104 261 100 321L98 355L91 363Q56 402 56 421Q56 441 82 472T132 524T159 546Q174 542 175 542Q159 520 159 501Q159 481 205 432L221 415L220 401Q219 394 219 387L288 429Q309 441 325 451T347 465T358 472T365 476L504 415V409Q504 408 505 374T507 318Q507 155 474 91L469 80L343 26Q314 14 281 0T232 -20L216 -27L202 -15Q192 -5 152 28Q141 35 126 45T103 60T95 67ZM386 349Q302 389 287 389Q271 383 253 375L220 361V136Q226 120 256 100T312 68T342 56Q355 56 360 68Q389 134 389 258Q389 310 386 341V349",120220:"90 58T90 59T92 64T97 78T102 105T107 150T109 218Q109 290 103 350V356L83 377Q55 407 55 425Q55 445 138 528Q158 549 162 549L164 548Q165 548 167 548T170 547L175 546L172 540Q168 533 165 523T161 502Q161 479 216 430L229 419V382Q232 382 366 471Q407 445 500 408L511 404V387L512 370L595 420Q678 469 679 469L693 462Q756 431 795 417L815 409L814 380Q812 187 782 96Q774 71 766 62T744 48T684 25T577 -23L557 -32L546 -26Q536 -19 519 -10T481 10T436 31T393 47Q384 50 380 50Q380 52 381 58T384 77T387 104Q391 174 391 256V292L390 333L377 340Q350 357 304 373L294 376L227 355V348Q224 322 224 243Q228 117 232 112L235 108Q238 103 245 95T257 80L281 50Q281 49 227 10T172 -29L159 -13Q133 19 116 36T94 56ZM652 64Q658 64 667 84T685 162T697 303V336L686 341Q653 356 619 367L591 376Q590 376 553 361T514 344T512 324T510 275T508 221Q508 167 510 152T521 126Q537 112 590 88T652 64",120221:"8 -90Q8 -68 13 -63Q13 -56 53 -8T120 63L128 71L129 85Q133 120 134 182Q134 308 131 331T106 365Q100 367 97 369L75 381L35 365L20 377Q20 378 47 397T110 440T161 471L253 413V396Q253 378 254 378L309 422Q364 466 365 466Q365 467 366 466T370 461T376 454Q403 419 426 396L441 380L438 377Q438 376 433 372T420 359T404 344L372 314Q351 320 338 327T310 344T277 364Q261 364 252 316Q251 306 251 235Q251 136 255 129Q257 127 258 124T268 113T298 92Q334 68 335 68Q340 70 349 73T377 84T408 95T421 99Q422 99 422 90L423 82L334 26Q246 -28 243 -28L200 8Q156 43 148 43Q144 43 130 36T99 9T83 -36Q83 -67 121 -89T198 -118L237 -124V-129L238 -133L193 -160Q183 -166 171 -173T152 -184L146 -188Q140 -187 131 -185T98 -173T56 -154T23 -127T8 -90",120222:"280 53Q272 47 246 27T199 -10T176 -27L167 -18Q137 17 107 44L90 60L93 71Q108 130 109 290V331Q109 339 109 344T108 353T107 359T105 364T102 369T97 374T91 381Q60 412 60 432Q60 448 86 479T138 534L164 557Q168 553 180 553Q163 532 163 511Q165 491 186 468Q206 443 231 423V404L232 385L371 477L389 468Q439 441 498 418L512 412V386Q512 360 507 190T500 14Q488 -26 445 -67Q401 -111 355 -148T282 -203T249 -221Q247 -220 230 -210T213 -199T229 -191T269 -172T306 -151Q361 -120 379 14Q391 92 391 182Q391 218 386 305Q384 339 380 341Q363 353 330 366T288 379Q282 379 258 368L230 356V181V141Q230 127 232 120T236 108T251 89T275 59L280 53",120223:"153 371Q141 371 126 365T100 354T78 340L65 331L57 338L50 346L62 356Q133 419 222 471Q274 453 306 422T338 366Q338 356 329 346T283 301L243 264L262 257Q298 246 361 214Q378 154 378 73Q378 33 371 -9T356 -74T345 -104Q340 -106 267 -160L191 -214H177Q60 -214 13 -150Q-7 -122 -7 -115Q-7 -112 19 -77T106 25T241 149Q241 152 227 158T181 173T109 185V190L108 194L158 229Q212 267 223 278T234 306Q234 329 208 350T153 371ZM258 1Q258 42 257 68T254 105T252 118Q235 105 210 85T144 22T102 -45Q102 -79 146 -106T234 -133H238Q248 -128 254 -80Q258 -58 258 1",120224:"183 181Q183 179 152 91T118 0H28L154 346L280 693Q281 694 333 694H385L511 349Q636 4 638 2Q638 0 584 0H530L464 183H184L183 181ZM324 606Q319 578 292 492T238 332T210 256Q210 254 324 254T438 255L429 281L419 308Q409 336 395 378T365 465T339 551T324 611V606",120225:"425 363Q438 363 465 353T526 324T585 270T610 192Q610 132 561 78T426 7Q404 2 387 2T240 0H90V694H227Q373 693 396 689Q484 673 533 623T583 517Q583 494 574 473T551 437T520 409T487 388T456 374T433 366L425 363ZM490 516Q490 527 485 539T467 568T423 599T347 621Q340 622 262 623H188V399H261H286Q432 399 478 475Q490 496 490 516ZM514 190Q514 245 462 280T343 322Q336 323 259 323H188V71H274Q365 72 388 77Q445 88 479 121T514 190",120226:"59 347Q59 440 100 521T218 654T392 705Q473 705 550 680Q577 670 577 667Q576 666 572 642T564 595T559 571Q515 601 479 613T392 626Q300 626 232 549T164 347Q164 231 229 150T397 68Q453 68 489 80T568 120L581 129L582 110Q584 91 585 71T587 46Q580 40 566 31T502 5T396 -11Q296 -11 218 41T99 174T59 347",120227:"88 0V694H237H258H316Q383 694 425 686T511 648Q578 604 622 525T666 343Q666 190 564 86Q494 18 400 3Q387 1 237 0H88ZM565 341Q565 409 546 463T495 550T429 600T359 621Q348 623 267 623H189V71H267Q272 71 286 71T310 70Q461 70 527 184Q565 251 565 341",120228:"86 0V691H541V611H366L190 612V397H513V321H190V85H372L554 86V0H86",120229:"86 0V691H526V611H358L190 612V384H485V308H190V0H86",120230:"59 346Q59 499 157 601T384 704Q436 704 466 700T541 679Q551 674 560 670T575 664T583 660T588 658T590 656Q590 652 582 605T573 557L564 564Q489 626 392 626Q301 626 233 549T164 347T233 145T392 68Q441 68 506 84V223H388V299H599V38L588 33Q494 -11 393 -11Q296 -11 219 40T100 172T59 346",120231:"86 0V694H190V399H517V694H621V0H517V323H190V0H86",120232:"87 0V694H191V0H87",120233:"181 53Q200 53 215 56T241 66T259 79T272 95T280 109T285 122L287 129V694H388V415V229Q388 135 385 112T369 63Q364 51 355 39T328 12T280 -12T212 -22Q172 -22 130 -12T66 8T43 20L46 42Q50 65 54 88L58 110Q58 111 65 104Q107 53 181 53",120234:"88 0V694H188V519L189 343L525 694H638L375 419L651 0H541L309 351L188 225V0H88",120235:"87 0V694H191V79L297 80H451L499 81V0H87",120236:"92 0V694H228L233 680Q236 675 284 547T382 275T436 106Q446 149 497 292T594 558L640 680L645 694H782V0H689V305L688 606Q688 577 500 78L479 23H392L364 96Q364 97 342 156T296 280T246 418T203 544T186 609V588Q185 568 185 517T185 427T185 305V0H92",120237:"88 0V694H235L252 659Q261 639 364 428T526 84V694H619V0H472L455 35Q453 39 330 294T185 601L181 611V0H88",120238:"55 345Q55 504 149 609T361 715Q386 715 406 713Q521 696 600 592T680 344Q680 193 590 86T368 -22Q239 -22 147 84T55 345ZM276 59T368 59T518 146T576 360Q576 473 525 545T401 634Q371 637 362 637Q284 637 222 562T159 360T217 147",120239:"88 0V694H230Q347 693 370 692T410 686Q487 667 535 611T583 485Q583 409 527 348T379 276Q369 274 279 274H192V0H88ZM486 485Q486 523 471 551T432 593T391 612T357 621Q350 622 268 623H189V347H268Q350 348 357 349Q370 351 383 354T416 368T450 391T475 429T486 485",120240:"55 345Q55 504 149 609T361 715Q386 715 406 713Q521 696 600 592T680 344Q680 284 665 231T629 143T587 85T551 48L536 35L648 -120L652 -125H531L452 -8L440 -12Q407 -22 369 -22Q239 -22 147 85T55 345ZM579 345Q579 473 517 555T369 637Q279 637 218 554T156 345Q156 223 215 141T368 58Q376 58 382 58T392 58T397 59T401 60T403 61H404Q404 63 360 128T315 194H421L453 150Q485 105 486 105Q490 108 496 113T517 138T545 182T567 247T579 334V345",120241:"88 0V694H227H259H302Q365 694 399 689T474 663Q528 637 558 595T589 504Q589 482 584 462T569 426T547 396T522 372T495 353T470 338T449 328T434 322L429 320L440 300Q452 280 477 238T523 160L617 1L565 0Q513 0 512 1Q512 2 424 156L337 309H189V0H88ZM492 504Q492 600 367 620Q354 622 271 623H189V385H271Q363 386 388 392Q432 402 462 430T492 504",120242:"55 514Q55 589 115 652T283 716Q315 716 345 711T396 699T432 685T457 672T467 667Q467 666 459 618T449 568Q383 634 282 634Q214 634 182 600T150 525Q150 507 155 492T172 465T194 446T222 432T247 423T272 416T289 412Q353 396 378 384Q432 358 466 307T500 194Q500 110 438 44T272 -22Q215 -22 159 -5T73 28T44 50Q45 51 49 75T57 122T62 146L65 143Q68 140 74 136T88 125T107 111T131 98T160 85T194 74T232 66T274 63H286Q327 63 366 96T406 182Q406 245 352 280Q329 296 265 310T173 339Q124 363 90 409T55 514",120243:"36 608V688H644V608H518L392 609V0H288V609L162 608H36",120244:"87 450V694H191V449Q192 203 193 194Q200 148 220 117T266 72T311 54T347 49Q404 49 446 84T501 178Q505 195 505 218T507 449V694H600V450Q600 414 600 356Q599 198 595 181Q594 178 594 177Q575 89 505 34T345 -22Q258 -22 184 34T89 196Q88 205 87 450",120245:"14 692Q14 694 68 694H122L146 633Q325 165 339 90Q340 87 341 87Q341 124 530 619L558 694H605Q652 694 652 692Q650 690 523 354T390 10L387 0H279L276 10Q271 18 144 354T14 692",120246:"115 694Q115 693 156 550T233 266T270 90L271 85Q272 86 272 92Q272 153 405 616L427 694H524L553 590Q672 174 681 95L682 84L684 95Q689 138 728 287T803 563T841 692Q841 694 885 694T929 693Q929 691 829 346L730 0H679L628 1L606 75Q478 524 470 600L469 611L467 600Q458 518 338 101L310 0H213L114 346Q14 691 14 693Q14 694 64 694H115",120247:"14 0Q16 5 144 184T275 367L153 528Q121 571 88 615T42 674T28 694H150L228 584Q315 463 316 461L326 448L497 694H610L609 692Q606 689 492 528Q440 454 409 410T378 366Q378 365 515 182L652 0H531L326 292Q326 293 299 254T226 146L128 0H14",120248:"4 693L64 694H125L174 621Q335 378 340 364L341 362Q361 398 395 450L558 694H663L383 277V0H282V278L143 485Q112 531 75 586T21 668L4 693",120249:"69 617V694H555V643L373 362Q190 81 190 79H234Q244 79 272 79T344 80T419 81H560V0H55V53L237 334Q420 615 420 617Q413 618 387 618Q380 618 334 618T245 617H69",120250:"236 387Q209 387 184 382T141 370T111 355T91 342T83 337L82 355Q80 373 79 393T77 417Q77 419 81 421Q86 423 91 426Q155 460 227 460H238Q319 460 368 400Q393 371 400 341T408 252Q408 240 408 207T407 152V0H317V39L306 32Q244 -10 159 -10H152Q109 -10 77 22Q38 61 38 126Q38 142 39 146Q55 199 130 223T295 252H314V277Q314 305 313 310Q308 342 287 364T236 387ZM303 186Q124 180 124 126Q124 105 144 86T208 66Q284 66 309 124Q314 137 314 166V186H303",120251:"303 -11Q280 -11 259 -6T222 6T194 21T176 33T168 38V0H75V694H165V550L166 405Q247 455 336 455Q397 455 439 389T482 226Q482 115 428 52T303 -11ZM390 221Q390 283 361 331T265 379Q214 379 177 342L168 334V118Q203 66 258 66Q316 66 353 106T390 221",120252:"34 223Q34 327 99 393T245 460Q290 460 301 459Q328 455 354 445T395 427T410 415L396 338L386 344Q377 349 362 357T335 370Q305 381 258 381H252Q182 381 146 315Q126 275 126 224Q126 158 159 113T255 68Q329 68 394 106L408 114L410 93Q411 72 412 52L414 32Q407 27 394 20T338 2T252 -10Q156 -10 95 58T34 223",120253:"33 224Q33 321 81 388T197 455Q277 455 342 414L351 408V694H441V0H348V44L338 37Q278 -10 198 -10Q177 -10 168 -8Q99 11 62 90Q33 148 33 224ZM348 337Q307 378 263 378Q260 378 256 378T251 379Q239 379 223 374T182 355T142 305T126 220Q126 90 225 67Q231 66 250 66H255Q306 66 342 115L348 124V337",120254:"28 226Q28 329 91 395T235 461Q258 461 279 456T325 436T368 397T399 332T415 238V219H113V215Q113 163 151 114T248 65Q273 65 298 70T341 82T373 96T396 108L403 113Q403 106 406 76T409 38Q409 34 408 33T393 24Q325 -10 252 -10Q155 -10 92 59T28 226ZM340 289L338 297Q335 305 333 310T327 326T317 343T304 358T286 372T263 381T233 385Q212 385 193 376T162 353T140 325T127 301T123 289H340",120255:"262 705H267Q300 705 347 694V612L336 616Q303 628 274 628H266Q224 628 199 605Q187 590 184 579T181 541V507V444H287V371H184V0H94V371H27V444H94V492Q94 544 95 550Q102 617 151 661T262 705",120256:"55 286Q55 357 105 406T224 455Q280 455 323 421L322 423L318 427Q318 428 339 434T396 448T465 455H471L478 416L485 377Q484 377 474 379T445 383T401 385Q397 385 391 385T381 384L362 383L357 387Q358 386 364 375T375 354T384 325T389 287Q389 217 340 168T221 119Q178 119 138 142Q133 145 131 143Q125 131 125 117Q125 82 155 72L227 71Q230 71 251 71T280 71T310 69T343 65T373 57T403 46T428 30T449 7Q471 -26 471 -62V-71Q471 -136 384 -178Q326 -206 250 -206Q159 -206 102 -172T30 -92Q28 -84 28 -68T31 -37T40 -12T52 7T64 21T75 31T82 38Q60 68 60 106Q60 145 80 180L86 189L80 199Q55 240 55 286ZM304 233T304 287T279 362T220 383Q189 383 165 361T140 287Q140 243 161 217T220 191Q253 191 278 212ZM250 -134Q298 -134 331 -122T375 -96T387 -69Q387 -21 306 -7Q288 -5 216 -5Q161 -5 153 -7Q146 -9 139 -13T122 -31T113 -66Q113 -75 113 -80T127 -97T166 -121Q203 -134 250 -134",120257:"163 395Q223 455 307 455Q417 455 438 354Q442 331 443 164V0H350V157Q349 315 348 320Q334 378 259 378H253Q224 378 204 358Q180 334 173 301T165 209Q165 198 165 172T166 129V0H73V694H163V395",120258:"67 576V680H171V576H67ZM74 0V444H164V0H74",120259:"88 576V680H192V576H88ZM31 -126Q40 -126 48 -125T62 -122T73 -117T82 -111T89 -105T94 -99T98 -92L102 -86V444H192V180Q191 -45 191 -70T184 -113Q171 -152 140 -178T63 -205Q34 -205 4 -197T-43 -181T-59 -171T-51 -133T-41 -96L-38 -99Q-34 -102 -28 -106T-13 -115T7 -123T31 -126",120260:"76 0V694H163V257L340 444H449L286 272L292 263Q296 259 378 138T463 12L471 0H372L309 92Q294 114 277 139T250 179T237 198L228 211L160 139V0H76",120261:"74 0V694H164V0H74",120262:"160 392Q223 455 304 455Q359 455 386 436T430 383L437 391Q495 455 584 455Q694 455 715 354Q719 331 720 164V0H627V157Q626 315 625 320Q611 378 536 378H530Q501 378 481 358Q457 334 450 301T442 209Q442 198 442 172T443 129V0H350V157Q349 315 348 320Q334 378 259 378H253Q224 378 204 358Q180 334 173 301T165 209Q165 198 165 172T166 129V0H73V450H160V392",120263:"160 392Q214 446 283 454Q285 454 292 454T303 455H306Q417 455 438 354Q442 331 443 164V0H350V157Q349 315 348 320Q334 378 259 378H253Q224 378 204 358Q180 334 173 301T165 209Q165 198 165 172T166 129V0H73V450H160V392",120264:"28 222Q28 323 95 391T244 460Q275 460 281 459Q364 445 417 377T471 219Q471 124 408 57T250 -10Q158 -10 93 57T28 222ZM377 230Q377 277 364 310T328 358T287 379T248 385Q233 385 219 382T186 369T155 342T132 297T122 230Q122 146 159 108T250 69H253Q263 69 274 70T305 81T339 106T365 154T377 230",120265:"166 404Q194 424 241 439T337 455H341Q410 455 451 370Q483 307 483 222Q483 128 433 59T306 -10Q282 -10 260 -5T222 7T194 21T176 33T168 38V-194H75V444H165V424L166 404ZM390 222Q390 287 354 331T266 376T177 340L168 332V118Q200 66 257 66Q313 66 351 112T390 222",120266:"33 220Q33 325 87 389T206 454Q286 454 341 406L351 398V455H441V-194H348V41L338 35Q276 -8 198 -11Q171 -11 154 -5Q102 12 68 74T33 220ZM126 220Q126 160 161 113T251 65Q305 65 351 123V298L350 301Q349 304 347 308T342 319T336 331T327 343T315 355T300 365T283 373Q273 375 256 375Q208 375 167 332T126 220",120267:"171 389Q237 455 320 455H327V373H317Q262 369 220 336T167 248Q165 239 164 119V0H74V450H159V377L171 389",120268:"33 326Q33 376 60 408T117 450T175 460H190Q245 460 272 454T345 429Q345 428 338 388L331 349Q278 386 188 386H183Q119 386 119 336Q119 307 142 295T210 276T278 256Q360 213 360 130Q360 108 354 88T332 43T281 5T195 -10Q152 -10 111 1T49 22T28 35Q29 36 32 56T39 95T43 115T51 110T72 99T102 85T143 73T193 68Q274 68 274 123Q274 152 248 167Q234 178 187 186T115 207Q66 229 46 273Q33 298 33 326",120269:"333 27Q333 24 314 16T257 -1T184 -10H172Q146 -10 128 14T105 58T99 91Q95 113 95 251V371H18V444H98V571H182V444H316V371H182V253Q183 128 189 104Q199 68 234 68Q277 72 314 98Q315 93 323 61T333 27",120270:"353 39Q352 38 344 34T331 27T315 19T295 11T270 3T241 -3T207 -8T168 -10H162Q148 -10 137 -8T111 2T87 30T74 81Q73 89 73 268V444H166V268L167 92Q171 79 174 74T192 64T238 59Q317 59 344 116Q349 128 349 148T350 291V444H443V0H353V39",120271:"178 0Q15 441 14 442Q14 444 60 444Q107 444 107 442Q108 441 136 364T196 194T232 67Q233 98 280 234T356 442Q356 444 401 444T446 442L282 0H178",120272:"14 444H105L108 434Q192 160 200 74V65L201 75Q206 144 282 399L296 444H381L399 381Q480 112 480 69L481 70Q481 113 562 386L580 444H668L534 1L483 0H432L429 10Q343 294 338 367L337 377Q336 375 336 370Q336 340 313 250T269 88T245 11L242 0H195L148 1L14 444",120273:"187 229L6 444H107L227 294L344 444H393L442 443Q439 437 299 268L267 229L460 0H359L294 88Q280 107 262 131T236 166L227 177L100 0H0Q1 1 47 58T140 171T187 229",120274:"113 -204Q83 -204 63 -200L43 -197Q43 -196 40 -157T36 -117L48 -121Q79 -133 114 -133Q124 -133 130 -132T145 -121T163 -94Q169 -82 184 -42T200 1L188 29Q176 57 152 115T107 223T62 330T26 416L14 443Q14 444 61 444H109L122 411Q230 155 236 75L237 65V74Q245 161 348 424L356 444H401Q446 444 446 443L396 313Q345 183 293 49T236 -93Q191 -204 123 -204H113",120275:"42 370V444H400V395L156 76L279 77H402V0H28V51L273 371L157 370H42",120276:"110 0H86Q42 0 42 27Q42 37 148 350T258 667Q269 687 291 692Q295 694 366 694H399Q432 694 448 689T474 667Q477 663 583 350T690 27Q690 0 642 0H617H592Q582 0 575 1T561 2T549 6T541 11T533 18T527 26T522 37T517 49T512 64T506 81L490 130H225Q225 128 208 79T189 27Q185 19 180 14T170 7T156 3T143 1T127 0T110 0ZM439 279Q359 524 359 547L357 555L355 543Q347 503 270 263L259 231H357Q455 231 455 232L439 279",120277:"119 1Q98 5 92 28V667Q98 686 118 693Q121 694 272 694H289H346Q439 694 500 681T600 625Q640 580 640 513Q640 451 601 414T504 364L518 361Q568 351 602 329T649 280T666 235T671 197Q671 172 665 147T642 91T586 37T488 5Q456 1 282 1H119ZM489 509Q489 532 479 548T450 573T421 585T394 591Q387 592 315 593H247V404H298H325Q432 404 466 444Q489 470 489 509ZM517 194Q517 235 502 261T458 299T407 313T353 317H329H322H247V101H319H357Q387 101 407 103T452 111T492 133T514 171Q516 176 517 194",120278:"423 -11Q339 -11 275 9T171 62T106 143T71 240T61 347Q61 450 93 527Q157 664 313 694Q357 704 416 704Q479 704 517 699T608 676Q634 667 635 660Q635 653 624 592L612 528L609 524Q604 521 601 521Q595 521 583 531T555 555T505 578T428 589H424Q298 589 250 494Q224 438 224 347Q224 292 233 251T265 175T329 122T432 104Q488 104 524 115T604 158Q607 160 610 162T615 165T619 168L621 170Q625 172 630 170T637 163Q638 160 642 109T647 54Q646 49 625 37T568 11T499 -7Q463 -11 423 -11",120279:"119 1Q98 5 92 28V667Q98 686 118 693H124Q131 693 142 693T168 694T200 694T237 694H296Q416 694 450 692T525 677Q732 617 732 342Q732 169 644 81Q593 32 528 16T372 0Q356 0 324 0T276 1H119ZM573 349Q573 387 571 413T559 473T532 527T482 567T403 591Q395 592 320 593H250V101H321Q418 102 456 114Q553 144 569 263Q573 303 573 349",120280:"277 122Q280 122 380 123T544 125Q552 125 557 125T565 124T569 124Q595 115 595 75V62V47Q595 9 569 2Q564 0 341 0L119 1Q99 7 92 28V664Q98 683 118 690Q121 691 335 691T554 689Q580 682 580 644V632V618Q580 582 554 573Q553 573 551 573T542 572T527 572Q464 572 364 573T260 575H253V412H385H459Q524 412 536 404T549 357Q549 341 549 334T542 318T523 305Q518 303 385 303H253V122H277",120281:"512 572Q451 572 356 573T258 575H253V400H370H431Q494 400 506 392T518 345Q518 307 507 299T437 291H370H253V161Q253 141 253 113T254 75Q254 23 245 12T195 0H170L119 1Q99 7 92 28V664Q98 683 118 690Q121 691 327 691T538 689Q564 682 564 644V632V618Q564 582 538 573Q537 573 535 573T526 572T512 572",120282:"61 347Q61 405 70 454T105 550T171 631T276 685T426 705Q483 705 537 693T620 668T650 646Q650 645 649 637T645 612T639 578L627 514L624 510Q620 507 615 507T597 520T566 548T512 577T430 590Q223 590 223 347T431 104Q478 104 506 112Q508 112 508 164V215H471L434 216L428 222L427 268Q427 315 429 318Q432 323 444 323T544 324H652Q655 320 659 317V45L656 43Q654 39 624 27T536 2T424 -11Q366 -11 317 -2T219 33T137 97T82 200T61 347",120283:"92 667Q101 694 143 694H172H198Q244 694 251 669Q253 663 253 539V415H540V539Q540 558 540 585T539 621Q539 673 550 683T611 694H621H646Q671 694 683 690T700 669Q702 663 702 347T700 25Q696 9 684 5T646 0H621H606Q560 0 550 11T539 76Q539 85 539 116T540 169V306H253V169Q253 147 253 116T254 75Q254 23 245 12T194 0H170L119 1Q99 7 92 28V667",120284:"85 667Q94 694 136 694H165H191Q237 694 244 669Q246 663 246 347T244 25Q235 0 192 0H163L112 1Q92 7 85 28V667",120285:"236 -22Q190 -22 144 -11T72 12T46 29Q63 147 69 153Q80 164 92 146Q124 91 191 91Q222 91 242 102T267 134Q268 139 268 402Q268 663 270 669Q275 687 294 692Q298 694 347 694H367Q393 694 406 690T425 669Q427 663 427 399Q427 132 426 125Q421 87 404 58T366 15T318 -9T273 -20T236 -22",120286:"92 667Q101 694 139 694H163H186Q225 694 234 671Q236 663 236 529L237 392L533 682Q550 694 590 694H623H681Q695 680 695 672Q695 670 693 664Q688 657 561 533L431 405L698 33Q701 28 701 23Q701 7 683 0H626H604Q571 0 564 2T545 13Q544 14 530 33T489 90T437 162L332 307Q331 307 284 260L236 214V122V65Q236 32 231 19T210 2Q205 0 161 0L119 1Q99 7 92 28V667",120287:"92 667Q98 684 109 689T142 694H172H198Q244 694 251 669Q253 663 253 389V116L278 117Q410 119 490 119H495Q511 119 517 115T534 93V63V48Q534 9 508 2Q503 0 310 0L119 1Q99 7 92 28V667",120288:"92 667Q98 684 109 689T146 695Q152 695 167 695T192 694Q200 694 214 694T234 695Q291 695 305 664Q313 651 400 419T487 165Q487 162 488 162T489 165Q489 187 574 413T671 664Q679 680 695 688Q708 694 785 694H828Q855 694 867 689T884 669Q886 663 886 347T884 25Q876 0 832 0H817H802Q758 0 750 25Q748 31 748 293V555L746 544Q737 509 692 386T606 160T564 52Q548 22 502 22H487H472Q423 22 410 52Q407 59 367 160T283 385T231 546L230 548Q229 548 229 293Q229 31 227 25Q222 9 211 5T176 0H158L119 1Q99 7 92 28V667",120289:"92 667Q98 684 109 689T146 694H185Q273 694 279 692Q301 689 315 669Q322 660 419 453L554 163L562 143Q564 143 564 401Q564 663 566 669Q574 694 618 694H633H648Q692 694 700 669Q702 663 702 347T700 25Q696 10 683 5T642 0H596H551Q520 0 505 4T478 25Q471 34 374 241L239 532Q231 550 231 552L229 479Q229 440 229 293Q229 31 227 25Q222 9 211 5T176 0H158L119 1Q99 7 92 28V667",120290:"362 715Q364 715 376 715T394 716H400Q542 716 626 643T727 426Q731 395 731 342Q731 271 722 225Q674 -22 396 -22Q320 -22 259 -3T148 68T77 201Q62 257 62 342Q62 447 86 522T173 649Q245 707 362 715ZM568 433Q551 623 396 623Q383 623 370 622T333 612T292 591T257 550T233 485Q223 442 223 350Q223 276 232 227T267 137Q309 74 397 74Q433 74 461 85T507 113T537 156T556 205T566 260T569 310T570 357Q570 409 568 433",120291:"641 470Q641 426 630 391T603 334T561 295T513 271T459 259T408 254T361 253H350H337H253V142Q253 125 253 100T254 67Q254 32 249 19T227 2Q222 0 170 0L119 1Q99 7 92 28V667Q98 686 118 693Q121 694 271 694Q428 693 462 688Q641 656 641 470ZM487 467Q487 495 485 510T474 546T442 578T382 592Q375 593 310 593H250V347H309H339Q364 347 380 348T418 354T451 368T474 395T486 438Q487 444 487 467",120292:"450 -20Q444 -20 429 -21T396 -22Q320 -22 259 -3T148 68T77 201Q62 257 62 342Q62 447 86 522T173 649Q245 707 362 715Q364 715 376 715T394 716Q732 716 732 340Q732 268 719 210T686 120T647 68T615 39T601 29T638 -22T676 -73Q679 -78 679 -83Q679 -98 661 -106H593Q526 -106 521 -104Q514 -103 507 -97T496 -84T477 -55L454 -19L450 -20ZM554 509Q516 622 391 622Q294 622 250 535Q220 475 220 345Q220 299 222 266T234 198T258 140T299 99T363 74Q378 71 393 71H395L381 92Q367 114 353 136T338 161Q336 165 336 170Q336 186 352 193L361 194Q370 194 384 194T412 194H452Q457 194 460 194T466 194T471 192T476 191T480 188T483 185T487 180T492 174T497 167T504 158L526 129Q532 127 552 175Q573 231 573 348Q573 455 554 509",120293:"654 24Q654 9 644 5T612 0H577L521 1Q509 5 503 13Q498 20 421 160L343 304H250V168Q250 147 250 118T251 78Q251 24 242 12T192 0H168L119 1Q99 7 92 28V667Q98 686 118 693H124Q131 693 141 693T165 694T195 694T229 694T280 694T332 695Q389 695 428 691T510 675T582 637T627 569Q641 532 641 493Q641 377 537 331L497 317L493 316L571 177Q653 28 654 24ZM487 472T487 492T485 525T476 553T450 577T404 591Q398 592 322 593H250V391H321Q327 391 353 391T385 392T412 395T438 401T457 412T474 430T483 456",120294:"61 503Q61 547 72 583T110 650T186 698T305 716Q405 716 496 671Q513 664 514 657Q514 656 513 648T509 623T503 589L491 525L488 521Q484 518 479 518H475L461 532Q430 565 395 581T305 598Q201 598 201 523Q201 480 240 462T345 431T443 394Q549 324 549 204Q549 160 538 123T502 51T427 -2T308 -22Q180 -22 69 41Q50 52 49 57Q49 58 50 66T54 91T60 125L72 189L75 193Q80 196 84 196Q87 196 104 182T145 149T212 117T304 102Q408 102 408 188Q408 215 396 234T362 263T319 278T267 290T219 302Q149 324 105 380T61 503",120295:"67 687Q70 688 366 688Q661 688 666 686Q692 680 692 641V629V615Q692 579 666 570H660Q655 569 648 569Q645 569 624 569T581 570Q505 570 475 572H447V302Q447 31 445 25Q436 0 393 0H364L313 1Q293 7 286 28L285 300V572H257Q227 570 151 570Q130 570 109 570T84 569Q77 569 72 570H66Q48 577 44 588T40 631L41 661Q47 680 67 687",120296:"92 667Q101 694 143 694H172H200Q242 694 251 671Q253 663 253 430Q254 189 255 185Q262 134 288 107T384 79Q498 79 516 168Q520 191 521 431Q521 663 523 671Q532 694 572 694H596H618Q639 694 648 692T665 679Q671 672 671 653Q672 632 672 555V432Q671 200 670 190Q652 79 581 29T383 -22Q137 -22 98 166Q92 195 92 303V667",120297:"27 667Q27 683 39 688T75 694H101Q155 694 159 692Q182 687 194 665Q202 652 283 419T374 142Q376 165 473 445Q552 664 553 666Q568 694 618 694H639H658Q681 694 693 689T705 667Q705 660 592 347Q481 32 477 28Q466 7 441 1H292Q266 7 255 28Q251 32 140 347Q27 660 27 667",120298:"994 694Q1012 683 1014 668Q1014 661 977 519T896 217T845 26Q831 0 783 0H747H711Q685 0 672 5T649 26Q644 36 583 272T517 548Q516 552 516 551Q503 479 437 227Q389 37 383 26Q367 0 323 0H288H254Q207 0 193 26Q191 32 108 346T24 665Q24 685 44 693Q47 694 98 694H115Q152 694 168 668Q174 657 235 417T297 144Q297 134 300 153Q307 204 362 421T427 668Q441 694 488 694H523Q586 694 597 688Q612 683 620 661T651 549Q664 496 673 462Q744 194 750 146V140Q767 223 800 354T857 576T883 668Q897 694 938 694H958H994",120299:"52 1Q37 11 37 23Q37 26 39 32Q39 34 158 202L275 369Q275 370 221 441T112 586T55 663Q53 669 53 672Q53 687 68 693H72Q77 693 84 693T99 694T118 694T139 694H176Q203 694 212 692T230 682Q231 681 239 669T265 634T296 591L358 504L418 591Q481 682 486 686Q491 691 499 692Q505 694 569 694H632Q650 685 650 672Q650 667 646 660Q643 654 592 582T491 440T441 369T566 201T693 29Q694 27 694 23Q694 11 677 0H607L537 1Q523 6 519 10T437 131Q422 153 411 170T390 200T375 222T365 237T359 245L357 247L348 232Q339 218 319 188T283 131Q222 37 211 22T186 1H52",120300:"635 694H668Q688 694 698 690T708 670Q708 664 704 658L446 278L445 152V27Q442 20 440 17T433 9T419 1L368 0H339Q316 0 305 5T288 26Q286 31 286 154V278L157 468Q135 500 101 550Q43 635 34 650T24 671Q24 686 39 693Q42 694 105 694H122H132Q163 694 180 689T214 666Q225 654 336 485Q373 425 373 420L374 418Q375 419 375 421Q378 432 418 493T496 609T536 667Q543 676 551 681T572 689T591 693T615 694T635 694",120301:"411 584Q243 581 131 581Q122 581 116 581T106 582T102 582Q84 589 80 600T76 640L77 667Q83 686 103 693Q106 694 343 694Q579 694 584 692Q592 691 599 684T609 668Q610 665 610 646Q610 614 608 608Q605 603 434 361L261 116Q340 117 402 118T490 119T533 120T560 120H572Q605 120 614 95Q616 89 616 60V46Q616 9 590 2Q585 0 339 0Q92 0 87 2Q79 3 72 10T62 26Q61 29 61 49Q61 84 63 90Q65 94 152 217T325 461T411 584",120302:"255 394Q218 394 186 383T138 358T109 333T94 321H91Q88 321 86 322T83 325T80 331T79 339T78 349T77 362T75 377Q72 410 72 420Q72 423 72 425T73 429T74 431T77 433T80 435T85 437Q166 475 262 475Q360 475 413 440Q462 406 471 341Q472 332 472 181Q472 155 472 119T473 73Q473 20 462 10T398 0H380Q349 0 337 8T324 48V65Q298 30 257 10T172 -11Q109 -11 70 37T31 145Q31 276 307 289H321V309Q321 337 318 352T300 381T255 394ZM176 146Q176 116 190 97T231 77Q251 77 266 85Q322 110 322 185Q322 189 322 192T322 198L321 201V234L308 232Q176 220 176 146",120303:"54 667Q63 694 102 694H127H151Q190 694 199 671Q201 663 201 544L202 422L211 428Q270 468 355 468Q523 468 523 231Q523 -10 321 -10Q286 -10 261 -2T204 33Q197 11 187 6T142 0H126L81 1Q61 7 54 28V667ZM372 230Q372 317 355 349T280 382Q251 382 204 356V107Q235 76 274 76Q301 76 320 84T349 105T364 139T371 180T372 230",120304:"188 233Q188 199 190 177T200 131T225 95T271 83H281Q356 83 421 130Q433 138 434 139Q446 141 448 131Q449 128 453 84T457 36Q455 30 432 20T364 -1T273 -11Q37 -11 37 232Q37 456 244 474Q246 474 257 474T276 475Q349 475 400 455Q443 436 448 431L451 425Q451 419 443 377Q442 372 441 366T439 356T438 348T436 340T435 334T433 330T431 327T429 325T426 324Q420 324 406 336Q376 362 350 372T281 382Q254 382 236 373T208 352T194 317T189 278T188 233",120305:"225 -11Q192 -11 164 -3T104 29T55 102T37 227Q37 321 63 376Q111 469 223 469Q292 469 349 433L359 426V546Q359 564 359 589T358 623Q358 675 369 684T433 694H451Q497 694 505 669Q507 663 507 347T505 25Q500 9 487 5T450 0H432H413Q356 0 356 36V40Q298 -11 225 -11ZM356 359Q326 382 286 382Q239 382 215 358Q189 330 189 256V229V203V195Q189 102 231 86Q251 76 274 76Q318 76 356 114V359",120306:"30 231Q30 301 51 351T107 426T181 463T262 474H268Q293 474 312 472T366 459T422 427T462 363T480 260Q480 230 466 222T405 213Q395 213 364 213T311 214H173V211Q173 183 183 148T216 96Q244 76 287 76Q319 76 350 85T399 104T433 125T451 136Q463 138 465 128Q466 125 469 84T473 39Q471 29 423 13T330 -9Q321 -10 286 -10Q213 -10 161 11T81 68T42 144T30 231ZM353 292Q350 324 342 344T320 373T294 384T264 387Q191 387 175 286V282H353V292",120307:"67 458H78V502V509Q78 538 79 556T90 604T117 651T169 685T253 704Q254 704 258 704T265 705T275 705T287 704Q364 704 381 687V638V607Q381 591 378 585T366 579Q362 581 351 591T323 610T282 618Q238 618 226 587Q224 581 223 519V458H253Q288 458 298 453Q315 441 315 415Q315 399 312 390T299 377T282 372T259 371H255H226V201Q226 31 224 25Q215 0 174 0H150L106 1Q86 7 79 28L78 199V371H69Q29 371 29 412Q29 425 30 431T40 447T67 458",120308:"63 108Q63 142 83 176L76 184Q35 227 35 300Q35 469 243 469Q330 469 385 437L397 443Q451 469 508 469Q515 468 517 466T522 456T528 425Q534 392 534 386Q532 379 523 377Q520 377 509 381T477 390T431 398L425 399Q453 362 453 297Q453 268 445 242T417 189T351 146T242 130Q169 130 119 153Q117 141 117 136Q117 95 155 83Q161 81 252 81Q354 80 362 79Q437 71 475 48T526 -24Q532 -42 532 -65Q532 -116 489 -156T341 -204Q323 -206 274 -206H256Q39 -206 18 -84Q17 -79 17 -68Q17 15 82 42L76 53Q63 79 63 108ZM310 300Q310 359 298 377T238 396Q217 396 204 390T186 368T179 339T178 300Q178 245 189 224T244 203T299 224T310 300ZM414 -66Q414 -55 411 -47T401 -32T387 -21T368 -14T346 -10T322 -7T297 -6T271 -6T246 -6H193Q163 -6 154 -10T140 -30Q135 -45 135 -62Q135 -134 274 -134Q414 -134 414 -66",120309:"53 667Q62 694 101 694H126H148Q191 694 198 669Q200 663 200 526V390Q263 469 361 469Q390 469 412 465T456 449T491 413T507 351Q508 342 508 185Q508 31 506 25Q498 0 450 0H432H413Q368 0 359 23Q357 31 357 186Q356 345 355 350Q349 369 336 376Q324 381 301 381H298Q269 381 242 362Q217 342 210 316T202 239Q202 229 202 202T203 157V82Q203 24 195 12T146 0H125L80 1Q60 7 53 28V667",120310:"72 574Q55 583 51 591T46 619V636L47 670L48 673Q50 676 52 678T56 684T63 690T73 694H81Q89 694 102 694T129 695H181Q193 687 196 685T203 676T207 661T208 634Q208 603 204 593T181 574H72ZM54 431Q63 458 102 458H127H149Q192 458 199 433Q201 427 201 229T199 25Q190 0 149 0H125L81 1Q61 7 54 28V431",120311:"70 634V648Q70 686 96 693Q100 695 151 695H176Q201 695 213 691T230 670Q232 665 232 634V620Q232 582 206 575Q202 573 151 573H126Q101 573 89 577T72 598Q70 603 70 634ZM-41 -84Q-1 -105 28 -105Q67 -105 78 -85Q83 -77 83 -48T84 180Q84 427 86 433Q93 458 136 458H158H180Q201 458 209 456T225 443Q230 436 231 418Q232 397 232 313V183V124V40Q232 -55 228 -87T203 -147Q166 -205 78 -205Q31 -205 -20 -189T-71 -159Q-71 -156 -62 -124T-52 -89Q-49 -84 -41 -84",120312:"496 23Q496 9 487 5T457 0H427H398Q367 0 354 11Q352 12 288 99L226 183L191 150V90V54Q191 30 186 18T165 2Q160 0 124 0L90 1Q70 7 63 28V667Q72 694 108 694H128H146Q183 694 192 671Q194 663 194 496L195 325L254 383Q266 394 281 409T301 429T316 441T329 450T341 455T357 458T376 458H409H436Q461 458 470 454T480 437Q480 430 477 427T445 395Q417 368 396 347L319 271Q319 270 358 217T442 103T494 32Q496 30 496 23",120313:"54 667Q63 694 102 694H127H149Q192 694 199 669Q201 663 201 347T199 25Q190 0 149 0H125L81 1Q61 7 54 28V667",120314:"197 386Q256 468 366 468Q404 468 430 461T471 438T491 413T503 385Q563 469 666 469Q731 469 769 446T814 350Q815 343 815 185Q815 31 813 25Q808 9 796 5T758 0H737L692 1Q672 7 665 28L664 186V206V290Q664 349 655 365T610 381Q581 381 560 370T529 341T515 311T510 291Q509 286 509 157V82Q509 24 501 12T452 0H431L386 1Q366 7 359 28L358 186V206V290Q358 349 349 365T304 381Q275 381 254 370T223 341T209 311T204 291Q203 286 203 157V82Q203 24 195 12T146 0H125L80 1Q60 7 53 28V437Q58 453 80 464H122H142Q167 464 178 460T195 439Q197 434 197 409V386",120315:"197 386Q264 468 350 468Q375 468 390 467T429 460T466 443T492 408T507 351Q508 342 508 185Q508 31 506 25Q498 0 450 0H432H413Q368 0 359 23Q357 31 357 186Q356 345 355 350Q349 369 336 376Q324 381 301 381H298Q269 381 242 362Q217 342 210 316T202 239Q202 229 202 202T203 157V82Q203 24 195 12T146 0H125L80 1Q60 7 53 28V437Q58 453 80 464H122H142Q167 464 178 460T195 439Q197 434 197 409V386",120316:"274 -11Q32 -11 32 225Q32 346 85 406T249 474H266H271Q302 474 325 471T385 458T451 419T498 346Q518 300 518 225Q518 -11 274 -11ZM367 233Q367 322 350 354T270 387Q240 387 222 377T195 344T184 298T182 233Q182 151 198 117T275 83H282Q318 83 339 104Q355 119 361 146T367 233",120317:"125 458H139Q174 458 185 452T202 420L211 426Q245 448 288 458T354 469Q356 469 361 469T369 468Q443 468 481 412Q523 355 523 223Q523 164 509 120T473 51T423 12T371 -7T323 -11Q260 -11 204 33V-65Q204 -80 204 -102T205 -131Q205 -162 200 -175T178 -192Q173 -194 126 -194L81 -193Q61 -187 54 -166V431Q58 447 81 458H125ZM372 230Q372 376 282 376Q247 376 204 352V107L208 103Q213 99 218 95T232 87T251 79T274 76Q323 76 349 116Q372 153 372 230",120318:"226 -11Q37 -11 37 236Q37 294 51 338T86 407T135 445T186 464T233 469H235Q300 469 349 422L359 413V425Q359 452 376 464Q384 469 433 469H455Q498 469 505 444Q507 438 507 137Q507 -163 505 -169Q500 -185 487 -189T450 -194H432H413Q367 -194 358 -171Q356 -163 356 -63V40L348 33Q296 -11 231 -11H226ZM281 375Q188 375 188 228Q188 77 275 77Q322 77 359 120V328Q338 357 324 366T281 375",120319:"54 437Q58 453 81 464H122H147Q186 464 194 439Q196 434 196 405V377L203 387Q245 456 324 468Q325 468 331 468T340 469Q347 469 356 462V360Q350 355 346 354T339 353T326 353T300 347Q260 337 234 311T202 252Q201 247 201 138Q201 122 201 98T202 66Q202 33 197 20T175 2Q170 0 125 0L81 1Q61 7 54 28V437",120320:"37 328Q37 392 75 433T203 474Q254 474 265 473Q319 465 370 442Q378 439 380 432Q380 426 372 384Q364 336 359 333Q358 331 355 331Q348 331 337 341Q282 388 216 388H208Q190 388 180 387T161 377T151 351Q151 333 164 323T224 306L267 297Q314 285 355 246T396 144Q396 17 282 -5Q260 -10 218 -10Q170 -10 124 2T55 26T30 44Q30 48 39 99T49 153Q52 159 60 159Q66 159 70 153Q100 120 133 101T218 82Q231 82 238 83T258 87T277 101T283 126Q283 149 260 160T200 176T153 186Q109 201 73 236T37 328",120321:"225 267Q225 202 226 169T232 115T244 88T265 82Q295 84 318 100T345 116Q352 116 354 110T364 77Q373 46 373 43Q373 28 312 9T190 -10Q160 -10 139 1T107 29T89 77T82 136T80 210V258V371H66H59Q39 371 27 386Q20 394 20 417Q21 432 23 437Q35 458 60 458H65H83V510L84 562Q93 589 131 589H154H174Q216 589 223 564Q225 558 225 508V458H274Q330 458 338 453Q355 441 355 415Q355 388 338 376Q330 371 274 371H225V267",120322:"53 431Q62 459 100 459Q105 459 114 459T127 458H152Q192 458 201 435Q203 427 203 262Q204 86 208 77Q209 74 216 71Q227 66 258 66H264Q334 66 354 140L356 150L357 290Q357 427 359 435Q365 449 377 453T412 458H432H450Q498 458 506 433Q508 427 508 229T506 25Q498 0 451 0H434H418Q386 0 374 7T360 43V58L352 49Q298 -11 199 -11Q135 -9 101 11T56 80Q52 100 52 273L53 431",120323:"26 429T26 435T32 448T44 456Q48 458 85 458H99Q145 458 161 431Q162 429 207 285L251 145L294 284Q333 410 341 430Q351 451 374 456Q379 458 420 458H430Q450 458 457 456T471 443Q473 437 473 435Q473 426 443 325T381 126L350 28Q339 7 316 2Q312 0 250 0Q187 0 183 2Q160 7 149 28L136 68Q124 109 106 166T70 283T39 385",120324:"699 458Q717 447 719 432Q719 426 666 230T610 27Q602 10 588 5T548 0H512H482Q431 0 420 17T384 135Q356 241 352 298V308L351 295Q348 251 322 145T290 28Q279 0 233 0H212H191Q146 0 133 27Q130 33 77 229T24 430Q24 449 44 457Q47 458 79 458Q122 458 126 456Q154 450 163 419L233 153Q241 187 272 304T307 431Q318 458 368 458Q394 458 398 456Q421 451 430 431Q434 423 509 147L547 286Q582 416 588 429Q600 454 624 457Q632 458 647 458H663H699",120325:"92 0Q87 0 77 0T62 -1Q24 -1 24 22Q24 29 33 41T106 136Q185 237 184 238Q184 239 147 284T73 376T33 427Q31 430 31 436Q31 451 45 457Q48 458 96 458H122Q152 458 163 450T208 394L247 345L282 394Q288 403 297 416T309 434T319 444T328 452T338 455T352 458T372 458H393H440Q457 449 457 435Q457 428 450 419T379 328Q308 239 308 237L389 137Q409 112 436 79Q475 31 475 23Q475 -1 436 -1Q432 -1 422 -1T407 0Q360 0 352 3Q343 6 336 16T291 83L247 151L245 148Q243 145 239 139T229 124T218 106T204 84Q167 24 160 15T141 1L92 0",120326:"454 458Q473 446 473 430Q473 426 394 184L311 -68Q291 -119 245 -162T123 -205Q51 -205 46 -190Q44 -187 40 -142T36 -92Q36 -90 36 -88L37 -87Q41 -80 46 -80Q48 -80 73 -92T126 -105Q146 -105 161 -98T185 -76T197 -53T206 -28L215 0L122 212Q29 427 29 435Q29 448 46 457Q49 458 91 458Q93 458 106 458T125 457T140 454T157 446T170 431Q183 410 224 305T266 158Q266 152 266 151Q267 151 268 163Q271 206 302 310T342 432Q354 458 398 458H418H454",120327:"268 376Q250 376 180 375T92 374Q69 374 63 380Q46 390 46 419Q46 428 49 437Q57 451 73 457Q76 458 242 458T413 456Q420 455 427 448Q439 438 439 413Q439 392 433 385Q432 383 318 236T204 88Q235 88 306 89T395 90H399Q408 90 414 89T427 84T438 70T442 45Q442 9 416 2Q411 0 236 0H136Q73 0 62 1T41 12Q31 23 31 47Q31 68 36 77Q37 78 51 97T96 155T153 228L268 376",120328:"28 0L429 694H533L585 350Q596 275 610 182T632 46L638 3V0H530L528 18Q527 25 515 103T503 183H223L135 29L118 1L73 0H28ZM492 254Q492 256 473 398T454 589V610Q433 552 290 301L264 255L378 254H492",120329:"501 363Q557 355 605 316T653 222Q653 148 586 85T403 2Q394 1 240 0Q90 0 90 1L100 46Q109 90 128 177T164 348L238 694H375Q518 693 546 688Q614 674 655 635T696 544Q696 490 648 441T516 368L501 363ZM601 530Q601 568 566 590T479 621Q472 622 394 623H320L297 513Q292 489 286 459T276 415L273 401V399H339H372Q504 399 571 466Q601 498 601 530ZM257 322Q256 320 230 197T203 73Q203 71 289 71Q379 72 387 73Q459 84 507 122T556 210Q556 255 519 283T428 320Q415 322 336 323Q257 323 257 322",120330:"124 266Q124 372 179 473T333 639T544 705Q592 705 635 697T698 679L718 670Q719 669 701 621T681 572L676 576Q670 580 661 586T641 598T614 611T583 620Q558 625 526 625Q406 625 318 516T230 276Q230 238 236 212Q251 148 294 108T412 68Q469 68 508 80T598 123Q608 129 608 128Q606 109 603 87L598 45L573 33Q521 7 486 -1T394 -10Q358 -10 346 -8Q260 5 202 62Q124 145 124 266",120331:"162 348L236 694H385Q535 693 543 692Q600 682 641 654T705 586T737 506T747 425Q747 296 672 187Q625 114 548 62T384 1Q376 0 262 0Q88 0 88 1L98 46Q107 90 126 177T162 348ZM622 533Q575 624 443 624Q434 624 419 624T399 623H321L263 348Q249 283 234 213T212 107L204 72Q204 71 289 71Q374 72 386 74Q501 94 573 193T646 422Q646 487 622 533",120332:"86 2Q88 4 160 346T233 689Q233 691 461 691Q688 691 688 689Q685 686 671 611H495L320 612L319 609Q319 607 297 501L274 397H436Q597 397 597 396L596 391Q595 386 593 376T589 358L581 322L420 321Q258 321 258 320Q209 89 208 87Q208 85 390 85Q417 85 460 85T518 86L572 85Q556 8 554 2V0H86V2",120333:"86 2Q88 4 160 346T233 689Q233 691 453 691T673 689Q670 686 656 611H488L320 612Q314 579 302 523T281 427T272 385Q272 384 419 384H567L551 308H255L223 156Q216 124 207 82T194 20L190 2Q190 0 138 0H86V2",120334:"125 267Q125 375 182 476T337 641T544 705Q598 705 644 693T710 669T730 655L712 609L693 560L692 557L681 567Q618 626 526 626Q447 626 378 573T269 440T229 277Q229 185 276 127T406 68Q422 68 451 71T502 78T524 84L526 93Q528 102 532 119T539 153L553 222Q553 223 495 223Q436 223 436 224Q436 230 444 262L452 299H662V296Q661 290 635 166T607 40Q606 37 576 25T492 1T391 -11Q272 -11 199 66T125 267",120335:"517 2Q518 3 551 161T585 322Q586 323 557 323T422 323H259L190 0H138Q86 0 86 1L96 46Q105 90 124 177T160 348L234 694H337V691Q336 690 306 545T275 399H602L603 403Q603 407 634 551L665 694H768V691Q768 690 695 348T621 2V0H517V2",120336:"161 348L235 694H338V691Q338 690 265 348T191 2V0H139Q87 0 87 1L96 46Q106 90 125 177T161 348",120337:"377 424L435 694H535V691Q534 685 476 412T416 135Q401 74 350 26T210 -22Q165 -22 124 -11T65 9T46 21L54 41Q62 61 70 83T81 109Q82 111 85 106Q86 105 87 103Q93 94 103 84T135 64T185 53Q238 53 272 76T317 142Q317 145 325 182T348 289T377 424",120338:"236 223Q235 222 213 113T188 2V0H138Q88 0 88 1L98 46Q107 90 126 177T162 348L236 694H285Q335 694 335 693L330 671Q326 649 316 603T298 518Q289 477 280 433T266 366L261 343L672 694H729L784 693L465 420L651 0H596L541 1L384 350Q383 351 310 288T236 223",120339:"161 348L235 694H338V691Q338 690 273 385T208 79Q278 80 362 80H516Q502 11 499 2V0H293Q87 0 87 1L96 46Q106 90 125 177T161 348",120340:"375 691Q456 215 459 124V106Q488 177 762 641L793 694H929V691Q929 690 856 348T782 2V0H689V2Q691 4 753 304Q817 604 818 606Q819 611 817 608Q817 607 815 603Q798 559 540 117L484 22H440L397 23L393 42Q393 47 373 169T334 422T315 594V609L250 306Q186 3 185 2Q185 0 138 0Q92 0 92 1L102 46Q111 90 130 177T166 348L240 694H375V691",120341:"311 609Q310 608 246 306T181 2V0H134Q88 0 88 1L98 46Q107 90 126 177T162 348L236 694H382L383 691Q383 688 418 561T493 286T541 97L544 84L545 89Q545 90 553 128T578 246T610 394L674 694H766V691Q766 690 693 348T619 2V0H472L469 13Q468 17 393 293T312 605L311 609",120342:"118 254Q118 366 174 473T324 648T517 716Q627 716 695 638T763 435Q763 321 706 215T555 43T362 -22Q256 -22 187 56T118 254ZM380 58Q452 58 518 116T622 263T661 442Q661 496 646 535T608 594T567 622T534 634Q516 636 496 636Q400 636 313 528T225 264Q225 172 267 115T380 58",120343:"162 348L236 694H378Q522 693 530 692Q604 680 647 635T690 524Q690 474 665 430T612 359Q550 299 465 280Q443 275 343 274H250V271Q250 269 235 201T206 68T192 2V0H140Q88 0 88 1L98 46Q107 90 126 177T162 348ZM594 513Q594 560 562 588T477 622Q470 623 394 623H321L293 487L263 349V347H342H347H375Q530 347 578 449Q594 483 594 513",120344:"118 254Q118 366 174 473T324 648T517 716Q627 716 695 638T763 435Q763 305 693 194T543 36Q547 29 586 -47T625 -125H504L450 -8Q406 -22 363 -22Q256 -22 187 56T118 254ZM661 437Q661 532 616 584T506 636Q428 636 361 578T257 433T220 258Q220 167 264 113T380 58Q390 58 397 58T408 59T413 60T417 61Q417 63 387 127T356 193Q356 194 409 194H462L485 150L508 105Q509 103 532 125T567 161Q661 278 661 437",120345:"162 348L236 694H375H414H445Q507 694 538 690T606 668Q698 623 698 534V528Q698 447 608 377Q582 358 555 345T512 326L497 321L617 0H565L513 1L402 309H255L189 0H138Q88 0 88 1L98 46Q107 90 126 177T162 348ZM603 525Q603 603 499 620Q486 622 403 623H321L297 506Q292 482 285 449T274 402L271 387V385H346Q350 385 363 385T386 384Q548 384 592 479Q603 503 603 525",120346:"161 478Q161 568 242 642T435 716Q527 716 599 673L609 667Q595 633 589 615L571 568Q570 568 564 575T546 592T518 611T475 628T417 635Q351 635 305 596T259 507Q259 465 290 444T372 411T432 396Q473 385 509 343T545 236Q545 140 464 59T270 -22Q155 -22 54 48L92 146Q93 146 101 138T124 117T161 92T216 72T288 63Q360 63 403 109T447 204Q447 220 444 233T435 256T421 273T404 285T385 295T366 301T347 306T331 310T315 314T292 321T265 331T235 346T207 367T183 395T168 431T161 478",120347:"165 608L182 687Q182 688 486 688H790L789 685L781 645L773 609H521L457 306Q393 3 392 2Q392 0 340 0H288V2Q289 5 353 304T417 605V609L291 608H165",120348:"340 -22Q251 -22 191 33T131 177V187Q131 192 131 195T132 205T133 215T136 231T141 253T147 285T156 328T168 384T184 457L235 694H338V691Q338 690 288 451T236 210Q234 194 234 177Q234 138 247 111T280 72T319 54T357 49Q408 49 449 74T510 128Q516 136 521 143T530 158T538 175T545 194T553 220T560 250T569 289T579 336T591 395T606 464L655 694H747V691Q651 243 645 213Q623 149 587 102Q482 -22 340 -22",120349:"220 348L161 694H216Q270 694 270 693L283 613Q334 313 346 215Q359 102 359 96Q359 87 358 84Q388 162 684 657L706 694H753Q799 694 799 693L387 0H333Q279 0 279 1L272 45Q264 89 249 177T220 348",120350:"596 540Q596 562 597 585T599 609Q599 588 436 255Q402 185 362 104L310 0H213V3Q213 6 188 347T161 694H263L265 664Q290 327 293 184Q293 112 289 85Q290 85 290 87Q290 95 301 123T332 194T373 282T419 380T463 469T498 541T517 579L574 694H671V689L674 646Q678 603 682 538T691 401T699 263T703 160Q703 102 700 87Q719 154 930 576L989 694H1076Q1076 693 903 347L730 0H628V4L626 26Q624 48 622 85T616 168T609 267T603 369T598 464T596 540",120351:"14 0Q17 3 184 184T352 367L265 529Q244 567 222 609T188 672L176 692Q176 694 236 694H297L338 612Q387 515 400 489L421 448L645 694H758L708 640Q481 393 456 368Q455 366 500 281T596 104T652 0H531L388 293L128 0H14",120352:"151 692Q151 694 212 694H272L418 362L696 683L705 694H758L809 693Q809 692 630 490T444 280Q442 275 413 139L383 1L333 0Q282 0 282 2Q283 3 312 141L341 278L246 484L151 692",120353:"67 54Q551 615 551 617Q543 618 517 618Q510 618 463 618T376 617Q200 617 200 618T209 657L216 694H459Q702 694 702 692Q702 689 697 667L692 643L207 80H392Q493 81 577 81Q577 70 560 2V0H55V2L67 54",120354:"313 386Q286 386 260 381T217 369T186 355T164 342T155 337Q154 338 159 377T165 418Q251 461 320 461Q322 461 328 461T337 460Q397 460 435 424T473 329Q473 325 473 318T472 308Q432 110 407 2V0H317V2L325 38Q295 21 269 10Q215 -10 156 -10H149Q76 -10 62 69Q61 75 61 90Q61 127 73 150T116 194Q146 215 207 231T348 252H368L373 277Q378 302 378 318Q378 367 339 384Q332 386 313 386ZM150 116Q150 93 171 79T223 65Q259 65 293 85T341 135Q343 140 348 160T353 184Q353 186 342 186Q298 186 231 174T153 134Q150 127 150 116",120355:"302 -11Q266 -11 235 1T190 26L176 38Q170 8 168 2V0H121Q75 0 75 1L84 46Q94 90 113 177T149 348L223 694H267Q312 694 312 693T282 551T251 407Q251 406 256 408T271 415Q347 454 430 454H438Q501 454 528 374Q539 339 539 299Q539 179 466 84T302 -11ZM443 275Q443 317 421 348T346 379Q318 379 296 369Q269 359 238 332L193 118L198 109Q220 65 269 65Q350 65 396 130T443 275",120356:"75 164Q75 226 100 282T165 377T252 437T342 460H347Q447 460 499 417L483 378Q468 339 468 338Q466 338 455 347T424 366T385 378Q355 382 334 382Q262 382 215 318T168 177Q168 120 196 95T259 69H269Q345 69 420 108Q432 114 432 113T427 72L422 32L402 22Q382 12 344 2T259 -11Q214 -11 180 2T126 36T95 81T79 126T75 164",120357:"73 156Q73 224 102 293T184 408T294 455Q375 455 432 413Q438 407 438 410T469 553L499 694H588V691Q588 690 515 348T441 2V0H348V2Q357 29 357 43L352 41Q332 24 288 7T196 -10H190Q178 -10 166 -7T134 8T98 46T75 113Q73 129 73 156ZM419 335Q419 339 412 348T386 368T342 379Q284 379 243 343T184 261T167 168Q167 122 191 94T263 66Q321 66 367 116L374 124L397 229Q419 333 419 335",120358:"248 -11Q170 -11 121 41T71 173Q71 265 133 349T285 454Q305 460 318 460H328Q368 460 399 448Q472 414 472 309Q472 274 464 234L462 219H159Q156 198 156 185Q156 137 179 107T237 68Q246 66 268 66Q345 66 427 113V109Q426 108 422 73T417 37Q417 34 409 29Q329 -11 248 -11ZM401 299Q399 337 376 361T316 385Q291 385 266 371Q220 350 184 289H401V299",120359:"381 443Q381 440 374 407T366 371H315Q263 371 263 369Q262 368 224 186Q215 145 205 97T189 25L184 2V0H94V2L99 25Q104 48 114 96T134 186Q172 368 173 369Q173 371 139 371H106V373L114 410L121 444H155L188 445L191 455L212 551Q232 612 288 658T415 705Q438 705 464 701T494 694Q478 614 477 614L467 618Q457 621 440 624T406 629H400Q333 629 306 579Q301 568 289 507L275 444H328Q381 444 381 443",120360:"113 252Q113 334 177 394T311 454Q332 454 350 451T379 442T398 432T410 424L413 421Q412 423 411 424L409 426Q409 429 434 436T496 449T560 455H568V451Q568 447 567 429T566 394L565 377L553 379Q522 385 479 385Q463 385 456 384L443 383L436 392Q454 357 454 324Q454 243 390 182T249 120Q233 120 219 122T195 128T178 136T167 142L163 145Q149 131 149 105Q149 78 171 72L242 71Q246 71 269 71T303 71T336 68T372 62T403 51T432 32Q461 8 461 -40Q461 -112 383 -159T211 -206Q123 -206 68 -172T12 -86Q12 -55 31 -23T82 32Q90 38 89 39Q89 40 87 44T82 59T80 82Q80 134 126 189Q113 228 113 252ZM369 319Q369 354 350 368T304 383Q274 383 252 369T218 333T202 291T197 255Q197 221 217 206T263 191Q317 191 343 233T369 319ZM373 -59Q373 -41 362 -30T330 -13T291 -7T247 -5H216Q167 -5 158 -6T139 -12Q123 -20 110 -38T97 -76Q97 -102 133 -118T221 -134Q242 -134 267 -130T316 -118T357 -94T373 -59",120361:"416 321Q416 379 336 379Q276 379 237 302Q226 276 209 202T180 66T166 2V0H119Q73 0 73 1L82 46Q92 90 111 177T147 348L221 694H265Q310 694 310 693T279 544L247 395Q325 455 403 455Q513 455 513 358Q513 334 508 309Q507 304 476 156T443 2V0H350V2L357 34Q364 65 373 110T392 200T409 281T416 321",120362:"189 578Q190 579 199 627T211 678V680H315V678Q313 675 304 627T293 578V576H189V578ZM168 442T168 443T213 444T258 443T212 225T164 2V0H74V2Q75 7 121 224",120363:"211 577L233 680H284Q336 680 336 679L315 576H263Q211 576 211 577ZM19 -204Q-12 -204 -40 -196T-82 -179T-96 -170Q-96 -168 -78 -132L-61 -95L-54 -103Q-32 -126 3 -126Q26 -126 50 -116Q76 -101 83 -85Q84 -79 140 180T196 443Q196 444 241 444T286 443Q286 441 232 186T175 -75Q163 -120 122 -162T19 -204",120364:"150 348L224 694H310V691Q218 259 218 258L232 270Q245 281 274 306T327 351L435 444H489L542 443Q542 442 443 357L344 272L471 1L422 0H372L366 14Q359 27 347 54T323 105L273 210Q271 210 231 174L190 139L160 0H118Q76 0 76 1L86 46Q95 90 114 177T150 348",120365:"148 348L222 694H311V691Q311 690 238 348T164 2V0H119Q74 0 74 1L84 46Q93 90 112 177T148 348",120366:"416 321Q416 379 336 379Q276 379 237 302Q226 276 209 202T180 66T166 2V0H119Q73 0 73 2L121 226L169 449Q169 450 213 450H256L249 421Q248 417 247 412T246 404T245 398T244 394T244 392Q250 398 261 407T307 433T379 454H392H400Q451 454 472 439Q482 434 489 427T500 412T506 399T510 388L511 384Q511 384 517 388Q563 431 620 446Q648 455 680 455Q790 455 790 358Q790 334 785 309Q784 304 753 156T720 2V0H627V2L634 34Q641 65 650 110T669 200T686 281T693 321Q693 379 613 379Q553 379 514 302Q503 276 486 202T457 66T443 2V0H350V2L357 34Q364 65 373 110T392 200T409 281T416 321",120367:"416 321Q416 379 336 379Q276 379 237 302Q226 276 209 202T180 66T166 2V0H119Q73 0 73 2L121 226L169 449Q169 450 213 450H256L249 421Q248 417 247 412T246 404T245 398T244 394T244 392Q250 398 261 407T307 433T379 454H392Q416 454 433 452T470 440T502 411T513 358Q513 334 508 309Q507 304 476 156T443 2V0H350V2L357 34Q364 65 373 110T392 200T409 281T416 321",120368:"69 169Q69 238 107 306T211 417T348 461Q419 461 471 412T523 271Q523 161 438 75T247 -11Q170 -11 120 39T69 169ZM432 279Q432 338 401 361T333 385Q280 385 240 352T182 273T164 178Q164 119 195 94T265 68Q306 68 344 94Q380 115 406 169T432 279",120369:"259 443Q251 405 251 404L260 409Q269 414 286 421T324 436T375 449T434 455Q482 455 510 417T538 303Q538 169 463 79T302 -11Q226 -11 176 39V36Q175 35 151 -80L127 -193Q127 -194 80 -194H34V-191L102 127L169 443Q169 444 214 444T259 443ZM269 65Q332 65 386 124T441 262Q441 304 422 334T370 373Q356 375 339 375Q293 375 238 331L193 118Q200 103 206 94T229 75T269 65",120370:"72 149Q72 272 146 363T304 455Q340 455 371 442T409 423T436 398Q438 411 442 427L448 455H538L400 -193Q400 -194 354 -194Q307 -194 307 -193L356 37V41Q355 41 350 38T332 27T302 13Q247 -10 191 -10H179Q138 -10 105 32T72 149ZM414 298Q402 376 341 376Q277 376 223 317T169 182Q169 121 198 93T265 65Q319 65 365 111L377 123L414 298",120371:"240 377L244 380Q248 384 255 390T272 404T296 419T325 434T361 446T401 454Q403 454 408 454T416 455H424L421 442Q419 435 413 405T406 373Q351 373 294 336T216 237Q213 231 201 173T178 60T164 2V0H119Q74 0 74 2L122 226L170 449Q170 450 213 450H255L247 414Q246 409 245 403T243 393T241 385T240 379T240 377",120372:"99 299Q99 318 106 341T133 393T195 441T298 461Q336 461 370 453T420 437L436 429Q436 428 421 389T405 350Q356 386 273 386H265Q248 386 237 384T211 371T191 337Q189 329 189 326Q189 320 190 315T194 306T200 299T209 293T218 289T228 285T239 283T251 281T263 278L270 276Q278 275 283 274T298 270T316 264T333 255T351 243T367 228T380 209T388 186T391 157Q391 96 341 43T193 -11Q171 -11 150 -8T114 -1T84 9T61 19T45 28T35 33Q35 36 67 116L76 109Q132 67 211 67Q258 67 279 88T301 135Q301 159 280 170T224 187T180 197Q141 212 120 239T99 299",120373:"245 68Q267 68 289 75T322 90L334 98Q338 94 338 28V24L324 19Q268 -4 218 -8Q198 -11 177 -11Q118 -11 118 75Q118 98 123 127Q125 137 149 251T174 369Q174 371 135 371H97V373L105 410L112 444H152L192 445L200 478Q208 512 213 541L219 571H261Q303 571 303 570T290 506L276 444H343Q410 444 410 443Q410 440 403 407T395 371H328Q261 371 261 369Q211 152 211 118Q211 68 245 68",120374:"166 -10H160Q146 -10 137 -8T115 0T97 22T90 63Q90 79 130 268L167 443Q167 444 214 444Q260 444 260 443L224 273Q187 97 187 86Q187 70 202 65T250 59Q303 59 336 83T379 139Q380 143 412 292T444 443Q444 444 491 444Q537 444 537 443T491 225T443 2V0H353V2L361 38L352 34Q344 29 326 22T286 7T232 -5T166 -10",120375:"177 6L108 442V444H201V442Q202 441 213 371T235 213T246 90V65Q259 117 429 406L450 444H495Q540 444 540 443Q539 442 411 221L282 1L230 0H178L177 6",120376:"148 5Q147 8 128 222T109 440L108 444H199V442Q200 441 204 385T214 253T219 140Q219 108 215 76Q215 72 214 67V65L215 66Q219 95 278 221L390 444H475V437Q497 203 497 121Q497 90 494 70Q494 67 494 67L496 73Q520 143 654 405L674 444H718Q762 444 762 443L534 1L483 0H432V5Q429 28 422 126T413 283Q413 343 416 370L417 378Q416 377 416 376Q401 303 248 12L242 0H148V5",120377:"317 229Q453 9 460 0H409L359 1L312 88Q266 176 265 176Q265 177 254 165T223 132T182 88L100 0H1L15 14Q29 28 61 59T118 115L236 229L226 244Q108 433 100 444H201L290 294L438 444H537L528 435Q526 432 512 418T468 376T418 327L317 229",120378:"11 -117L20 -120Q28 -124 46 -128T84 -132H100Q124 -122 149 -85Q200 -6 200 1Q200 17 155 204T109 442Q109 444 156 444H203Q203 443 208 419T221 357T235 277T248 190T254 114Q254 81 250 67V65Q251 65 251 67Q256 94 297 177Q339 259 422 397L450 444H540Q540 443 386 186T219 -90Q179 -153 145 -179T73 -205Q52 -205 34 -202Q29 -202 21 -201T7 -198L1 -197Q1 -196 6 -157T11 -117",120379:"129 408L136 444H315Q494 444 494 443Q494 441 489 419L484 396L164 76L291 77Q418 77 418 76T411 41T402 2V0H215Q28 0 28 2L34 27L38 50L360 371L240 370Q121 370 121 371Q124 388 129 408",120432:"191 76Q212 75 220 68T229 38Q229 10 208 1H129H80Q48 1 38 7T28 38Q28 51 29 57T40 69T70 76Q89 76 89 78Q90 79 117 205T173 461T205 599Q212 623 250 623H262H273Q312 623 319 599Q322 591 350 461T406 205T435 78Q435 76 454 76H458Q484 76 493 59Q496 53 496 38Q496 11 478 3Q474 1 395 1H317Q295 8 295 38Q295 65 311 73Q316 75 333 76L348 77V78Q348 80 341 112L334 143H190L183 112Q176 80 176 78Q175 76 178 76Q180 76 191 76ZM318 221Q313 238 288 366T263 519Q263 526 262 527Q261 527 261 520Q261 493 236 365T206 221Q206 219 262 219T318 221",120433:"39 1Q17 10 17 32V38V46Q17 65 34 73Q40 76 61 76H84V535H61H54Q27 535 19 553Q17 557 17 573Q17 583 17 587T23 599T39 610Q40 611 179 611Q320 610 332 607Q332 607 339 605Q394 591 427 547T461 454Q461 413 436 378T369 325L358 320Q405 311 443 270T482 169Q482 112 445 64T345 3L334 1H39ZM309 533Q302 535 234 535H168V356H230Q284 357 296 358T323 368Q346 380 361 402T377 452Q377 482 358 505T309 533ZM398 176Q396 218 371 246T315 279Q310 280 237 280H168V76H239Q316 77 327 81Q329 82 334 84Q398 107 398 176",120434:"40 305Q40 437 110 529T281 622Q315 622 343 611T387 589T404 578Q409 585 415 596T425 611T435 618T452 622Q472 622 478 609T485 566Q485 559 485 540T484 508V460Q484 413 478 403T442 393Q417 393 409 402Q400 409 400 420Q400 428 395 445T380 487T347 528T295 546Q235 546 180 483T124 306Q124 245 141 197T186 121T241 80T296 66Q346 66 373 103T400 178Q400 209 435 209H442H450Q484 209 484 172Q480 96 421 43T281 -11Q177 -11 109 84T40 305",120435:"38 1Q16 8 16 38Q16 62 32 73Q39 76 58 76H78V535H58Q40 535 32 538Q16 548 16 573Q16 587 17 591Q23 604 34 607T83 611H166H176Q188 611 209 611T239 612Q299 612 337 597T415 530Q485 438 485 300Q485 180 431 100T301 3L291 1H38ZM400 301Q400 363 385 410T346 482T303 519T267 534Q261 535 210 535H162V76H214L267 77Q323 89 361 148T400 301",120436:"374 271Q374 241 367 232T332 223Q307 223 299 231Q290 240 290 263V279H173V76H418V118V144Q418 167 426 176T460 186Q491 186 500 166Q502 161 502 93V52Q502 25 499 17T480 1H41Q19 9 19 32V38Q19 63 36 73Q42 76 65 76H89V535H65H55Q44 535 38 537T25 548T19 573Q19 602 41 610H47Q53 610 63 610T88 610T121 610T160 611T204 611T251 611H458Q460 609 465 606T471 602T475 598T478 593T479 586T480 576T480 562V526V488Q480 452 462 444Q458 442 438 442Q413 442 405 450Q398 457 397 463T396 501V535H173V355H290V371Q290 394 299 403T332 412Q363 412 372 392Q374 387 374 317V271",120437:"384 260Q384 230 377 221T342 212Q317 212 309 220Q300 229 300 252V268H179V76H249Q264 67 267 61T271 38Q271 10 249 1H44Q22 9 22 32V38Q22 63 39 73Q45 76 69 76H95V535H69H59Q42 535 32 542T22 573Q22 602 44 610H50Q56 610 66 610T91 610T125 610T164 611T208 611T257 611H468Q470 609 475 606T481 602T485 598T488 593T489 586T490 576T490 562V526V488Q490 452 472 444Q468 442 448 442Q423 442 415 450Q408 457 407 463T406 501V535H179V344H300V360Q300 383 309 392T342 401Q373 401 382 381Q384 376 384 306V260",120438:"38 306Q38 447 105 534T261 622Q280 622 298 618T329 608T350 596T366 585L371 581Q373 581 377 591T390 612T417 622Q437 622 443 609T450 566Q450 559 450 540T449 508V460Q449 413 443 403T407 393Q392 393 386 394T373 402T364 426Q360 472 335 509T271 546Q214 546 168 477T121 308Q121 210 164 138T271 65Q293 65 310 78T337 109T352 147T360 180T362 195Q362 196 333 196L304 197Q282 204 282 227V234Q282 247 282 251T288 261T304 272H474Q488 263 492 256T496 234Q496 211 479 199Q475 197 461 196H449V21Q441 6 434 3T412 -1H407H402Q385 -1 379 3T364 28Q350 14 322 2T260 -11Q173 -11 106 76T38 306",120439:"16 571Q16 597 27 604T74 611H125H208Q223 602 226 596T230 573Q230 559 227 551T217 540T204 536T186 535H165V356H359V535H338H333Q306 535 297 552Q295 556 295 573Q295 586 295 590T301 600T317 611H486Q501 602 504 596T508 573Q508 559 505 551T495 540T482 536T464 535H443V76H464H470Q482 76 489 75T502 64T508 38Q508 10 486 1H317Q306 5 301 11T296 21T295 38V44Q295 66 311 73Q318 76 338 76H359V280H165V76H186H192Q204 76 211 75T224 64T230 38Q230 10 208 1H39Q28 5 23 11T18 21T17 38V44Q17 66 33 73Q40 76 60 76H81V535H60Q45 535 38 536T24 545T16 571",120440:"400 76Q431 76 441 69T452 38Q452 29 452 26T450 18T443 9T430 1H95Q84 6 79 12T73 23T72 38Q72 65 90 73Q96 76 157 76H220V535H157H124Q93 535 83 542T72 573Q72 603 93 610Q97 611 264 611H430Q432 609 436 607T444 602T449 594Q452 588 452 573Q452 546 434 538Q428 535 367 535H304V76H367H400",120441:"202 543T202 573T224 610H228Q231 610 237 610T251 610T269 610T291 611T315 611T342 611H457Q471 602 475 595T479 573Q479 549 462 538Q454 535 432 535H408V328Q408 159 408 133T402 93Q386 48 340 19T229 -11Q158 -11 108 16T57 100Q57 129 73 141T108 154Q128 154 143 140T159 102Q159 93 155 79Q188 65 228 65H230Q290 65 318 106Q323 115 323 139T324 329V535H274L224 536Q202 543 202 573",120442:"18 549T18 573T29 604T70 611H118H193Q207 603 210 596T214 573Q214 549 198 538Q191 535 172 535H152V421Q152 344 152 326T153 309L242 422L329 534Q327 535 322 536T314 538T308 542T303 548T300 558T298 573Q298 600 316 608Q322 611 392 611H463Q477 602 481 595T485 573Q485 535 446 535H441H420L281 357L436 77L454 76Q473 75 478 73Q495 62 495 38Q495 10 473 1H345Q334 5 329 11T324 21T323 38Q323 51 324 56T332 68T355 77L233 296L152 192V76H172Q191 76 198 73Q214 63 214 38Q214 9 193 1H41Q18 8 18 38Q18 61 35 73Q42 76 61 76H81V535H61Q42 535 35 538Q18 549 18 573",120443:"27 594Q34 605 43 608T84 611H154H213Q258 611 269 605T281 573Q281 546 263 538Q257 535 222 535H185V76H404V118V145Q404 168 411 177T446 186H453Q478 186 486 167Q488 161 488 93V50Q488 24 485 17T466 1L258 0H147H99Q47 0 36 6T25 38Q25 59 35 69Q44 76 76 76H101V535H76H64Q36 535 27 552Q25 557 25 573T27 594",120444:"50 535Q37 536 31 537T18 547T12 573Q12 598 22 604T62 611H91H121Q147 611 158 607T178 587Q183 579 222 446T261 293Q261 289 262 288Q263 288 263 292Q263 311 298 434T346 588Q353 603 365 607T402 611H435H450Q488 611 500 605T512 573Q512 556 506 547T493 537T474 535H459V76H474Q487 75 493 74T505 64T512 38Q512 11 494 3Q490 1 424 1H386Q355 1 345 7T335 38Q335 55 341 64T354 74T373 76H388V302Q388 512 387 519Q382 482 346 359T304 228Q292 204 262 204T220 228Q215 237 179 359T137 519Q136 512 136 302V76H151Q164 75 170 74T182 64T189 38Q189 11 171 3Q167 1 101 1H63Q32 1 22 7T12 38Q12 55 18 64T31 74T50 76H65V535H50",120445:"20 571Q20 598 30 604T73 611H105H136Q152 611 160 611T177 607T189 601T198 587T206 568T217 537T231 497Q354 142 365 95L368 84V535H347H342Q314 535 306 552Q304 556 304 573Q304 586 304 590T310 600T326 611H482Q497 602 500 596T504 573Q504 559 501 551T491 540T478 536T460 535H439V25Q432 7 424 4T389 0H374Q334 0 322 31L293 115Q171 468 159 517L156 528V76H177H183Q195 76 202 75T215 64T221 38Q221 10 199 1H43Q32 5 27 11T22 21T21 38V44Q21 66 37 73Q44 76 64 76H85V535H64Q49 535 42 536T28 545T20 571",120446:"102 588Q140 621 240 621Q323 621 335 620Q393 613 422 588Q450 560 459 493T468 306Q468 185 460 118T422 23Q382 -10 289 -10H262H235Q142 -10 102 23Q74 50 65 118T56 306Q56 427 64 494T102 588ZM363 513Q357 523 347 530T324 540T302 544T280 546H268Q192 546 167 521Q150 501 145 452T140 300Q140 235 142 197T151 130T172 89T207 71T262 65Q317 65 341 81T374 144T384 300Q384 474 363 513",120447:"41 1Q19 9 19 32V38Q19 63 36 73Q42 76 65 76H89V535H65H55Q38 535 29 543T19 576Q19 603 41 610H49Q57 610 70 610T100 610T136 611T175 611Q190 611 216 611T255 612Q321 612 363 598T441 537Q480 486 480 427V421Q480 354 447 311T378 251Q339 230 275 230H239H173V76H197Q220 76 227 73Q244 62 244 38Q244 10 222 1H41ZM396 421Q396 461 369 491T300 533Q294 534 233 535H173V306H233Q294 307 300 308Q345 319 370 352T396 421",120448:"56 306Q56 380 58 426T68 510T87 568T120 600T170 617T240 621Q323 621 335 620Q393 613 422 588Q450 560 459 493T468 306Q468 124 447 66Q433 23 394 6L424 -53Q454 -112 454 -118Q454 -128 441 -138H377Q367 -135 363 -129T333 -69L304 -11H254Q205 -10 180 -8T128 6T91 36T70 92T58 178T56 306ZM227 151Q227 171 262 171H276H281Q292 171 296 171T305 170T313 165T317 158T323 145T332 127L353 88Q356 88 361 95T372 131T382 202Q384 228 384 306Q384 452 371 492T304 544Q296 545 251 545Q230 545 215 543T188 534T169 520T155 497T147 466T143 423T141 371T140 306Q140 248 141 217T146 154T157 109T178 83T212 68T262 65H266L264 70Q261 75 256 85T247 105Q227 145 227 151",120449:"16 571Q16 598 27 605T76 612Q84 612 108 612T148 611Q268 611 294 605Q346 592 389 550T432 440Q432 394 410 359Q393 329 366 310L358 303Q387 273 399 239Q405 219 405 178T408 106T421 68Q426 65 428 65Q433 65 435 74T438 96T441 112Q450 130 480 130H485Q519 130 522 100Q522 79 516 56T488 11T434 -11Q421 -11 408 -8T377 5T344 37T324 93Q322 101 322 154L321 209Q304 257 257 267Q252 268 207 268H165V76H186H192Q204 76 211 75T224 64T230 38Q230 10 208 1H39Q28 5 23 11T18 21T17 38V44Q17 66 33 73Q40 76 60 76H81V535H60Q45 535 38 536T24 545T16 571ZM348 440Q348 478 321 502T260 532Q252 534 208 535H165V344H208Q212 344 223 344T239 345T252 346T266 348T278 351T293 358Q348 387 348 440",120450:"52 454Q52 524 107 572T229 621Q266 621 274 620Q326 610 360 588L371 581Q377 594 379 598T386 610T397 619T412 622Q433 622 439 610T446 570Q446 563 446 545T445 515V479Q445 441 444 432T436 417Q428 408 403 408T370 417Q361 424 361 434Q361 439 360 448T351 476T331 509T295 535T238 546Q194 546 163 522T132 458Q132 435 148 412Q155 401 166 393T192 380T218 371T247 364T270 359Q341 342 349 339Q389 325 418 296T461 229Q472 201 472 164Q469 92 417 41T287 -11Q240 -11 200 -1T143 19L126 29Q117 6 109 -2Q100 -11 84 -11Q64 -11 58 1T51 42Q51 49 51 66T52 95V135Q52 173 53 180T61 194Q70 203 95 203Q119 203 127 194Q136 186 136 168Q143 66 284 66H290Q325 66 350 85Q391 115 391 165Q391 204 369 228T322 260Q320 260 255 275T185 293Q123 309 88 355T52 454",120451:"129 38Q129 51 129 55T135 65T151 76H220V535H110V501Q110 470 109 464T101 450Q93 442 68 442H60Q37 442 28 461Q26 466 26 527L27 589Q36 607 49 610H55Q61 610 72 610T97 610T131 610T170 611T215 611T264 611H476Q478 609 483 606T489 602T493 598T496 593T497 586T498 576T498 562V526V488Q498 452 480 444Q476 442 456 442Q431 442 423 450Q416 457 415 463T414 501V535H304V76H374Q389 67 392 61T396 38Q396 10 374 1H151Q140 5 135 11T130 21T129 38",120452:"-3 573Q-3 597 8 604T50 612Q57 612 77 612T111 611H200Q214 602 218 595T222 573Q222 549 205 538Q198 535 175 535H151V359Q151 333 151 291Q152 177 156 162Q157 160 157 159Q165 123 193 95T262 66Q303 66 330 94T367 159Q371 175 371 191T373 359V535H349H339Q328 535 322 537T309 548T303 573T306 595T325 611H506Q520 602 524 595T528 573Q528 549 511 538Q504 535 481 535H457V364Q457 189 456 182Q448 101 394 45T262 -11Q189 -11 132 43T68 182Q67 189 67 364V535H43H33Q22 535 16 537T3 548T-3 573",120453:"19 578Q19 585 20 590T23 598T29 604T38 608T48 610T62 611T78 612T97 611T119 611H195Q210 602 213 596T217 573Q217 561 216 555T206 542T179 535H164Q166 529 188 435T235 231T261 94L262 84V88Q263 91 263 94Q265 121 289 231T336 438L360 535H345Q308 535 308 566V573Q308 586 308 590T314 600T330 611H484Q499 602 502 595T505 573Q505 560 504 554T493 541T465 535H447L384 278Q321 19 319 14Q309 -7 278 -7H262H246Q215 -7 205 14Q203 19 140 278L78 535H59Q45 535 38 536T25 547T19 573V578",120454:"459 611Q491 611 501 605T512 573Q512 538 482 535H474L439 276Q406 26 402 11Q398 2 389 -3Q387 -3 386 -4L380 -7H359H349Q324 -7 313 13Q307 29 285 139T263 275Q263 283 262 283Q261 282 261 274Q261 248 239 137T211 13Q200 -7 175 -7H165H144Q136 -3 127 3Q121 10 117 36T85 276L50 535H42Q26 536 19 545T12 564V573Q12 603 33 610Q37 611 101 611H134Q165 611 175 604T186 573Q186 563 186 559T182 547T169 538T143 535H122V531Q124 517 133 446T155 266T172 96V84L173 102Q176 157 192 243T215 346Q227 367 259 367H262H265Q297 367 309 346Q316 329 332 243T351 102L352 84V96Q356 161 368 266T390 444T402 531V535H381Q366 535 359 536T345 547T338 573Q338 600 356 608Q362 611 425 611H459",120455:"39 571Q39 597 49 604T93 611H141H218Q233 602 236 595T239 573Q239 538 210 535Q202 535 202 534T215 507T243 454L257 428L307 535H298Q266 538 266 573Q266 584 267 588T273 598T289 611H366H401Q442 611 454 605T466 573Q466 546 448 538Q442 535 421 535H398L299 327Q299 323 362 201L426 77L449 76Q467 76 475 75T489 65T495 38Q495 11 477 3Q473 1 395 1H317Q295 8 295 38Q295 73 325 76L334 77Q333 78 314 117T276 196L257 235L239 196Q221 157 204 118T186 77Q190 76 196 76Q211 74 218 67T227 55T228 38Q228 28 227 24T221 13T206 1H50Q28 9 28 32V38Q28 63 45 73Q51 76 73 76H96L214 324Q215 327 162 431L108 535H85H79Q67 535 60 536T46 546T39 571",120456:"20 573Q20 597 30 604T72 611H121H198Q212 602 216 595T220 573Q220 568 219 563T217 555T214 549T211 544T207 541T203 538T198 537T194 536T190 536L188 535Q179 535 179 534L188 516Q196 497 208 470T232 415T252 363T261 332Q261 329 262 329T263 332Q263 354 333 508L345 534Q345 535 336 535Q305 538 305 567V573Q305 589 308 595T327 611H483Q505 598 505 573Q505 549 488 538Q481 535 460 535H438L304 245V76H325H331Q343 76 350 75T363 64T369 38Q369 10 347 1H178Q167 5 162 11T157 21T156 38V44Q156 66 172 73Q180 76 199 76H220V245L86 535H64Q44 535 36 538Q20 548 20 573",120457:"71 1Q60 5 55 11T49 23T48 39V46Q48 56 58 73T131 183Q171 242 197 282L366 535H144V501Q144 470 143 464T135 450Q127 442 102 442H94Q71 442 62 461Q60 466 60 527L61 589Q70 607 83 610H88Q93 610 102 610T124 610T154 610T188 611T227 611T270 611H454Q456 609 461 606T467 601T471 597T474 591T475 584T476 572V565Q476 555 466 538T393 428Q353 369 327 329L158 76H397V120V146Q397 169 405 179T439 189Q470 189 479 169Q481 164 481 95V48Q481 24 478 16T459 1H71",120458:"126 306Q105 306 90 321T74 359Q74 439 211 439Q268 439 276 438Q343 426 383 390T430 306Q431 301 431 190V81Q446 79 465 78T492 76T509 72T521 60T524 38Q524 11 506 3Q502 1 466 1Q426 1 406 5T379 14T355 36L345 30Q284 -6 205 -6Q135 -6 92 39T48 141Q48 182 79 212T158 256T252 278T342 285H347V290Q347 315 325 335T267 362Q258 363 224 363Q189 363 185 362H179L178 358Q178 353 178 352T176 345T174 337T170 330T165 322T158 316T150 311T139 308T126 306ZM132 140Q132 115 157 93T224 70Q269 70 302 87T344 133Q346 139 347 175V211H339Q256 209 194 190T132 140",120459:"4 573Q4 596 15 603T52 611H90H124Q146 611 155 608T171 591Q173 586 173 491V396L182 402Q217 424 256 431Q280 437 309 437Q376 437 434 379T492 217Q492 162 473 118T422 47T358 8T293 -6Q229 -6 174 38Q171 13 163 7T135 1H131H122Q99 1 90 23L89 279V535H58L27 536Q4 543 4 573ZM409 215Q409 269 377 315T283 361Q255 361 224 344T177 297L173 290V167Q189 124 213 97T278 70Q330 70 369 111T409 215",120460:"291 -6Q196 -6 131 60T66 216Q66 296 119 361Q154 403 200 421T273 439Q275 440 293 440H313Q400 440 433 409Q454 388 454 359Q454 335 439 321T402 306Q380 306 365 321T350 357V362L340 363Q339 363 326 363T303 364Q280 364 266 362Q217 352 184 313T151 215Q151 153 199 112T313 70Q341 70 357 85T381 118T394 140Q402 146 424 146Q443 146 447 144Q466 137 466 117Q466 106 457 88T429 47T374 10T291 -6",120461:"266 573Q266 596 277 603T314 611H352H385Q411 611 419 607T435 586V76H498Q512 67 516 60T520 38Q520 9 498 1H436Q429 1 417 1T398 0Q375 0 363 7T351 34V43L342 36Q288 -6 223 -6Q143 -6 87 58T31 216Q31 307 88 372T230 437Q292 437 342 405L351 399V535H320L289 536Q266 543 266 573ZM351 290Q347 302 337 316T302 346T244 361Q193 361 154 319T115 215Q115 152 152 111T235 70Q314 70 351 170V290",120462:"48 217Q48 295 100 361T248 439L258 440Q268 440 274 440Q329 438 369 416T428 359T456 292T464 228Q464 215 461 208T454 198T442 190L288 189H135L138 179Q153 132 199 102T303 71Q336 71 353 86T380 120T398 143Q404 146 422 146Q453 146 462 126Q464 120 464 116Q464 84 416 39T285 -6Q187 -6 118 59T48 217ZM377 264Q371 291 365 306T341 338T294 362Q288 363 264 363Q225 363 190 336T139 264H377",120463:"43 395Q44 405 44 408T47 416T53 423T66 431H176V461Q176 500 182 518Q201 570 252 593T353 617Q399 614 418 593T437 548Q437 528 424 514T387 499Q365 499 353 511T338 537V541H328Q275 536 261 494Q260 490 260 460V431H327Q334 431 346 431T364 432Q392 432 404 425T416 393T405 362T365 355H327H260V76H319Q375 76 388 71T401 38Q401 27 400 23T395 12T379 1H58Q47 6 42 12T36 23T35 38Q35 65 53 73Q59 76 117 76H176V355H121H93Q64 355 54 362T43 395",120464:"60 274Q60 337 107 386T233 436Q278 436 316 417L329 410L338 416Q384 442 427 442T489 423T509 381T494 345T460 332Q449 332 440 338Q432 341 427 348T419 360T415 365Q414 364 410 364L383 355Q406 320 406 274Q406 211 358 162T233 112Q189 112 155 128L146 133Q142 125 142 115Q142 99 150 85T175 71Q182 72 187 70Q188 70 195 70T218 70T254 69Q259 69 275 69T297 69T318 68T340 66T361 62T384 57T405 49T428 38Q495 -1 495 -76Q495 -143 427 -186T262 -229Q161 -229 94 -185T29 -73Q30 -60 33 -48T39 -26T47 -8T57 8T67 20T77 30T86 38L91 43Q91 44 86 53T75 80T70 117Q70 142 89 183L83 194Q60 232 60 274ZM321 274Q321 312 296 337T230 362Q197 362 171 338T145 274Q145 235 170 211T233 187Q273 187 297 212T321 274ZM422 -78Q422 -54 408 -38T366 -15T315 -6T255 -4H200Q198 -4 193 -4T183 -3Q148 -3 125 -26T102 -78Q102 -110 151 -132T261 -154Q321 -154 371 -132T422 -78",120465:"4 573Q4 596 15 603T52 611H90H124Q146 611 155 608T171 591Q173 586 173 489Q173 394 175 394L186 402Q197 410 219 420T269 434Q278 436 306 436Q343 436 371 423Q411 402 423 365T436 265Q436 257 436 239T435 211V198V76H498Q512 67 516 60T520 38Q520 9 498 1H308Q286 10 286 32V38V46Q286 65 303 73Q309 76 329 76H351V188Q351 204 351 230T352 266Q352 321 341 341T288 361Q253 361 222 341T176 274L174 264L173 170V76H236Q250 67 254 60T258 38Q258 9 236 1H27Q4 8 4 38Q4 53 8 60T27 76H89V535H58L27 536Q4 543 4 573",120466:"202 538T202 559T218 596T260 612Q283 612 300 597T317 560Q317 538 300 523T260 507Q235 507 219 522ZM411 76Q441 76 451 69T462 38Q462 29 462 26T460 18T453 9T440 1H94Q72 8 72 33V38Q72 46 72 49T74 58T81 68T94 76H233V355H167L102 356Q80 363 80 393Q80 418 91 425T138 432Q145 432 165 432T200 431H295Q297 429 303 425T310 420T314 415T317 404T317 389T318 363Q318 354 318 314T317 241V76H378H411",120467:"261 559Q261 580 277 596T319 612Q342 612 359 597T376 560T360 523T320 507Q296 507 279 523T261 559ZM75 -91T100 -91T138 -107T152 -144V-150L160 -151H193H203Q241 -151 267 -121Q284 -97 288 -73T292 23V151V355H218L145 356Q123 365 123 387V393Q123 422 145 430H148Q151 430 156 430T169 430T185 430T205 431T227 431T251 431H354Q356 430 360 427T365 424T369 420T372 416T373 410T375 402T376 391T377 376T377 356Q377 345 377 286T376 176Q376 -67 371 -88Q362 -123 342 -151T299 -194Q254 -228 180 -228Q84 -226 56 -177Q49 -162 48 -148Q48 -122 61 -107",120468:"13 42Q13 63 23 69T69 76H102V535H69H54Q34 535 24 542T13 573Q13 588 15 593Q22 605 29 608T56 611H95Q113 611 122 611T140 610T152 609T159 607T163 603T167 597T173 589V413L174 237L295 355H275Q260 355 253 356T239 367T232 393Q232 419 243 425T304 431H359H464Q479 422 482 415T485 393Q485 364 464 356L431 355H398L293 254L427 76H486Q501 67 504 60T507 38Q507 28 507 24T501 12T486 1H314Q292 8 292 38Q292 62 308 73Q312 75 326 76L338 77L290 140Q279 154 267 171T248 196L242 204L207 171L173 139V76H206H221Q241 76 251 69T262 38Q262 11 244 3Q240 1 138 1Q123 1 100 1T70 0Q32 0 23 7T13 42",120469:"51 573Q51 602 73 610H76Q79 610 84 610T97 610T113 610T133 611T155 611T179 611H282Q301 598 304 586V76H452Q466 67 470 60T474 38Q474 10 452 1H73Q51 9 51 32V38Q51 54 54 60T73 76H220V535H146L73 536Q51 545 51 567V573",120470:"133 76Q156 74 164 67T172 38Q172 9 151 1H11Q-12 8 -12 38Q-12 61 5 73Q10 75 28 76H45V355H28Q10 356 5 358Q-12 370 -12 393Q-12 419 11 431H52H70Q91 431 100 427T116 405Q163 436 200 436Q255 436 281 390L285 394Q289 398 292 400T301 407T314 415T329 423T346 429T366 434T389 436H392Q425 436 448 411Q469 390 474 360T480 268V232V203V76H497Q520 74 528 67T536 38Q536 9 515 1H396Q374 9 374 32V38Q374 73 402 76H409V191V242Q409 317 404 339T375 361Q343 361 323 332T299 264Q298 258 298 165V76H315Q338 74 346 67T354 38Q354 9 333 1H214Q192 9 192 32V38Q192 73 220 76H227V191V242Q227 317 222 339T193 361Q161 361 141 332T117 264Q116 258 116 165V76H133",120471:"89 431Q94 431 105 431T122 432Q173 432 173 399Q173 394 175 394Q176 394 190 404T233 425T298 436Q343 436 371 423Q411 402 423 365T436 265Q436 257 436 239T435 211V198V76H498Q512 67 516 60T520 38Q520 9 498 1H308Q286 9 286 32V38V45Q286 65 303 73Q309 76 329 76H351V188Q351 204 351 230T352 266Q352 321 341 341T288 361Q253 361 222 341T176 274L174 264L173 170V76H236Q250 67 254 60T258 38Q258 9 236 1H27Q4 8 4 38Q4 53 8 60T27 76H89V355H58L27 356Q4 363 4 393Q4 408 8 415T27 431H89",120472:"52 216Q52 318 118 379T261 440Q343 440 407 378T472 216Q472 121 410 58T262 -6Q176 -6 114 58T52 216ZM388 225Q388 281 351 322T261 364Q213 364 175 325T136 225Q136 158 174 114T262 70T350 114T388 225",120473:"89 431Q93 431 104 431T121 432Q173 432 173 401V396L182 402Q237 437 305 437Q376 437 434 378T492 217Q492 146 459 93T382 17T291 -6Q261 -6 232 5T188 26L174 37Q173 37 173 -54V-146H236Q250 -155 254 -162T258 -184Q258 -213 236 -221H27Q4 -214 4 -184Q4 -169 8 -162T27 -146H89V355H58L27 356Q4 363 4 393Q4 408 8 415T27 431H89ZM409 215Q409 269 377 315T283 361Q255 361 224 344T177 297L173 290V167Q189 124 213 97T278 70Q330 70 369 111T409 215",120474:"34 215Q34 309 91 368T222 436Q224 436 231 436T242 437Q309 437 372 390V401Q372 419 381 428T414 437Q426 437 432 436T444 430T456 412V-146H489H504Q524 -146 534 -153T545 -184Q545 -211 527 -219Q523 -221 414 -221Q398 -221 374 -221T342 -222Q304 -222 294 -216T283 -184Q283 -157 301 -149Q307 -146 339 -146H372V-51Q372 43 371 43L364 38Q357 33 345 26T318 12T280 -1T236 -6Q155 -6 95 55T34 215ZM117 215Q117 152 157 111T250 70Q289 70 318 92T363 146Q372 163 372 192V215L371 263Q339 360 254 360Q206 360 162 321T117 215",120475:"327 76Q359 76 369 70T380 38Q380 10 359 1H47Q24 8 24 38Q24 54 28 61T47 76H145V355H96L47 356Q24 363 24 393Q24 409 28 416T47 431H207Q223 419 226 414T229 393V387V369Q297 437 394 437Q436 437 461 417T487 368Q487 347 473 332T438 317Q428 317 420 320T407 327T398 337T393 347T390 356L388 361Q348 356 324 345Q228 299 228 170Q228 161 228 151T229 138V76H293H327",120476:"72 317Q72 361 108 396T229 439Q231 439 245 439T268 440Q303 439 324 435T353 427T363 423L372 432Q380 440 397 440Q430 440 430 395Q430 390 430 380T429 366V335Q429 311 422 302T387 293Q364 293 355 300T346 316T343 336T325 353Q306 364 257 364Q209 364 178 351T147 317Q147 284 231 272Q327 256 357 247Q458 210 458 129V121Q458 74 413 34T271 -6Q246 -6 224 -3T189 5T165 14T150 22T144 26Q142 23 139 18T135 11T132 6T128 1T124 -2T119 -4T113 -5T104 -6Q84 -6 78 6T71 43Q71 48 71 60T72 79Q72 132 73 141T81 157Q90 166 115 166Q135 166 142 162T157 140Q168 108 191 90T260 70Q297 70 323 76T361 91T379 110T384 129Q384 157 346 171T247 195T165 212Q119 228 96 256T72 317",120477:"25 395Q26 405 26 408T29 416T35 423T48 431H145V481L146 532Q154 547 161 550T184 554H189Q218 554 227 534Q229 529 229 480V431H405Q406 430 411 427T418 422T422 416T426 407T427 393Q427 387 427 382T424 374T421 368T417 363T413 360T408 358L405 356L317 355H229V249Q229 237 229 214T228 179Q228 126 241 98T295 70Q354 70 365 149Q366 167 375 174Q383 182 407 182H415Q438 182 446 166Q448 161 448 148Q448 84 398 39T282 -6Q226 -6 189 29T146 128Q145 134 145 247V355H96H72Q45 355 35 362T25 395",120478:"4 393Q4 416 15 423T52 431H90Q141 431 151 429T168 417Q171 412 173 409V254L174 100Q182 70 244 70Q320 70 344 119Q349 130 350 144T351 248V355H320L289 356Q266 363 266 393Q266 408 270 415T289 431H351H386Q409 431 418 428T433 411Q435 406 435 241V76H498Q512 67 516 60T520 38Q520 9 498 1H436H394Q372 1 364 5T351 26L342 21Q293 -5 227 -5Q118 -5 96 67Q91 82 90 101T89 227V355H58L27 356Q4 363 4 393",120479:"24 392Q24 417 36 424T79 432Q85 432 103 432T132 431H215Q229 422 233 415T237 393Q237 355 198 355H193H172L262 77L352 355H331H323Q288 355 288 393Q288 409 291 415T310 431H478Q491 423 495 416T500 393Q500 364 478 356L452 355H426L374 190Q320 24 318 20Q307 -4 273 -4H262H251Q217 -4 206 20Q204 24 150 190L98 355H72L47 356Q24 363 24 392",120480:"54 355Q16 355 16 388V393Q16 423 37 430Q41 431 125 431H162Q206 431 218 425T230 393Q230 366 212 358Q206 355 174 355Q141 355 141 354L150 296Q181 110 181 89V84Q182 85 183 96Q185 118 199 173T218 237Q223 247 245 259H264H268Q294 259 309 240Q315 229 329 174T343 92Q343 84 344 84V86Q344 88 344 91T345 97Q347 125 356 187T374 301T383 354Q383 355 350 355H333Q314 355 304 362T294 393Q294 420 312 428Q318 431 401 431H440Q485 431 496 425T508 393Q508 382 508 377T498 363T470 355L455 354Q455 353 441 271T413 104T396 16Q384 -4 355 -4H351Q315 -4 305 9T280 79Q278 90 276 96Q265 149 265 169Q265 176 264 169Q263 166 263 162Q261 130 248 79T230 18Q220 -4 183 -4H175L151 -3Q134 5 127 17L112 102Q97 188 83 270T69 354Q62 355 54 355",120481:"35 393Q35 417 46 424T89 432Q95 432 112 432T141 431H223Q238 422 241 415T244 393Q244 389 244 383T237 367T216 355Q209 355 209 354L234 319Q259 286 260 286L308 354Q308 355 301 355Q285 356 278 365T270 384L271 393Q271 420 289 428Q295 431 376 431H459Q460 430 465 427T472 422T476 416T480 407T481 393Q481 368 470 362T434 355H425H392L344 290Q295 225 295 223Q294 223 309 203T350 149L405 77L439 76H453Q474 76 484 69T495 38Q495 10 473 1H303Q281 9 281 32V38Q281 49 282 54T290 67T313 76Q324 76 324 77L259 173L197 77Q202 76 209 76Q225 75 233 68T241 55T242 38Q242 28 242 24T236 12T221 1H51Q29 9 29 32V38Q29 48 29 51T31 59T38 67T51 76H117L171 149Q224 222 224 223L124 355H90H78Q54 355 45 361T35 393",120482:"26 393Q26 417 37 424T80 431H134H217Q232 422 235 416T239 393Q239 379 236 371T226 360T214 356T197 355L179 354V353L188 330Q197 306 209 272T235 201T259 133T271 89V84L274 95Q279 122 298 185T335 300T352 354Q352 355 331 355Q312 355 304 358Q288 368 288 393Q288 408 291 415T310 431H478Q479 430 484 427T491 422T495 416T499 407T500 393Q500 376 493 367T479 357T458 355H452Q426 355 425 353Q420 337 351 124T280 -94Q240 -195 168 -220Q147 -228 125 -228Q89 -228 66 -201T42 -139Q42 -116 56 -102T93 -87Q117 -87 130 -102T144 -135V-138H126Q121 -148 121 -150T130 -152Q182 -147 207 -87Q211 -78 223 -40T236 1Q230 10 102 355H75L49 356Q26 363 26 393",120483:"56 1Q40 7 37 14T34 41Q34 59 36 64Q39 67 43 73Q65 95 191 213T341 355H133V334Q133 306 124 297Q116 289 91 289H83Q60 289 51 308Q49 313 49 361L50 409Q59 427 72 430H78Q83 430 92 430T115 430T144 430T179 431T219 431T262 431H450Q452 430 455 428T459 424T463 422T466 419T468 416T469 413T470 409T471 404T472 398T472 391Q472 374 469 368L462 358Q453 349 315 218Q210 122 164 76H391V103Q391 136 400 146Q409 155 433 155Q464 155 473 135Q475 130 475 78V46Q475 24 472 16T453 1H56",120488:"296 0Q278 3 164 3Q58 3 49 0H40V62H92Q144 62 144 64Q388 682 397 689Q403 698 434 698Q463 698 471 689Q475 686 538 530T663 218L724 64Q724 62 776 62H828V0H817Q796 3 658 3Q509 3 485 0H472V62H517Q561 62 561 63L517 175H262L240 120Q218 65 217 64Q217 62 261 62H306V0H296ZM390 237L492 238L440 365Q390 491 388 491Q287 239 287 237H390",120489:"720 510Q720 476 704 448T665 404T619 377T580 362L564 359L583 356Q602 353 632 342T690 312Q712 292 725 276Q752 235 752 189V183Q752 160 741 125Q698 18 547 2Q543 1 288 0H39V62H147V624H39V686H264H409Q502 686 542 681T624 655Q720 607 720 510ZM563 513Q563 553 548 578T518 611T486 622Q479 624 385 624H293V382H375Q458 383 467 385Q563 405 563 513ZM590 192Q590 307 505 329Q504 330 503 330L398 331H293V62H391H400H444Q496 62 528 75T580 131Q590 155 590 192",120490:"425 0L228 3Q63 3 51 0H39V62H147V618H39V680H612V676Q614 670 627 552T643 428V424H581V428Q580 430 576 461T562 524T532 576Q512 596 481 605T426 616T357 618H304V62H439V0H425",120491:"901 12Q901 7 892 0H479Q65 0 62 2Q56 6 56 11Q56 14 242 347T433 685Q438 694 450 696Q454 698 480 698H506L523 687Q526 683 711 354T899 17Q901 13 901 12ZM653 137L427 538L202 137L315 136H540L653 137",120492:"723 286Q721 284 700 145T677 3V0H39V62H147V618H39V680H660V676Q662 670 675 552T691 428V424H629V428Q629 429 627 448T618 494T601 541Q574 593 527 605T382 618H374H304V384H336Q338 384 347 384T361 384T376 386T392 390T407 397T421 407T432 423Q442 444 443 482V501H505V205H443V224Q442 258 435 278T411 307T380 318T336 322H304V62H375H394Q429 62 449 62T497 66T541 76T577 95T609 126T632 170T651 232Q661 287 661 289H723V286",120493:"80 430L92 686H358Q624 686 628 684Q638 679 638 656Q638 640 637 639Q637 638 445 353Q401 288 351 214T277 103L253 67L256 66Q258 66 265 66T279 66T298 66H343Q380 66 406 68T464 81T518 110T557 164T579 250Q583 278 583 298Q583 299 614 299H645V291Q643 281 636 150T627 8V0H353Q79 0 75 2Q64 7 64 31Q64 48 66 52L259 340L451 623Q451 624 384 624Q294 623 259 612Q155 581 143 446Q142 440 142 432V430H80",120494:"400 0Q376 3 226 3Q75 3 51 0H39V62H147V624H39V686H51Q75 683 226 683Q376 683 400 686H412V624H304V388H595V624H487V686H499Q523 683 673 683Q824 683 848 686H860V624H752V62H860V0H848Q824 3 674 3Q523 3 499 0H487V62H595V326H304V62H412V0H400",120495:"629 -10T446 -10T164 89T64 340Q64 380 71 420T102 510T163 596T266 662T418 696H438Q488 696 499 695Q582 686 644 655T741 584T796 495T823 409T829 338Q829 188 729 89ZM439 645Q416 645 390 638T333 615T275 564T236 480Q221 423 221 341Q221 272 230 228Q247 144 301 94T447 43T592 93T663 228Q672 272 672 341Q672 645 439 645ZM286 242V446H348V412H545V446H607V242H545V276H348V242H286",120496:"397 0Q370 3 218 3Q65 3 38 0H25V62H139V624H25V686H38Q65 683 218 683Q370 683 397 686H410V624H296V62H410V0H397",120497:"400 0Q376 3 226 3Q75 3 51 0H39V62H147V624H39V686H51Q75 683 226 683Q376 683 400 686H412V624H304V338L472 483L634 624H565V686H576Q597 683 728 683Q814 683 829 686H836V624H730L614 524Q507 432 497 422Q496 422 498 418T514 395T553 342T627 241L759 63L805 62H852V0H842Q830 3 701 3Q550 3 526 0H513V62H549Q584 62 584 63Q583 65 486 196T388 328L304 256V62H412V0H400",120498:"285 0Q267 3 154 3Q56 3 47 0H40V62H131Q131 63 167 160T244 369T321 578T359 678Q366 698 393 698H404H413Q437 698 446 678Q448 672 560 369T674 62H765V0H754Q733 3 604 3Q453 3 429 0H416V62H461L507 63L355 470Q353 468 279 265L203 63L249 62H294V0H285",120499:"314 0Q296 3 181 3T48 0H39V62H147V624H39V686H305Q316 679 323 667Q330 653 434 414L546 157L658 414Q766 662 773 674Q778 681 788 686H1052V624H944V62H1052V0H1040Q1016 3 874 3T708 0H696V62H804V341L803 618L786 580Q770 543 735 462T671 315Q540 13 536 9Q528 1 507 1Q485 1 477 9Q472 14 408 162T281 457T217 603Q215 603 215 334V62H323V0H314",120500:"314 0Q296 3 181 3T48 0H39V62H147V624H39V686H171H265Q288 686 297 686T309 684T315 679Q317 676 500 455T684 233V624H576V686H585Q603 683 718 683T851 686H860V624H752V319Q752 15 750 11Q747 4 742 2T718 0H712Q708 0 706 0T700 0T696 1T693 2T690 4T687 7T684 11T679 16T674 23Q671 27 437 311L215 579V62H323V0H314",120501:"54 465L63 674Q63 675 383 675T703 674L712 465Q712 464 681 464H650V467Q650 490 646 516T632 545Q612 550 383 550H283Q169 550 149 548T124 531Q123 530 123 529Q116 506 116 467V464H85Q54 464 54 465ZM160 256V447H222V414H544V447H606V256H544V289H222V256H160ZM57 0L48 222H110V219Q110 147 125 133Q127 130 130 129T160 127T235 126T383 126Q482 126 530 126T604 127T635 129T641 133Q656 146 656 219V222H718L709 0H57",120502:"64 339Q64 431 96 502T182 614T295 675T420 696Q469 696 481 695Q620 680 709 589T798 339Q798 173 697 82T432 -10Q262 -10 163 85T64 339ZM625 454Q618 502 600 538T562 593T515 624T469 639T431 642Q331 642 276 563Q232 493 232 353Q232 315 234 285T244 216T267 148T308 94T372 56Q405 46 432 46Q517 46 567 106T627 267Q631 299 631 353Q631 418 625 454",120503:"400 0Q376 3 226 3Q75 3 51 0H39V62H147V618H39V680H860V618H752V62H860V0H848Q824 3 674 3Q523 3 499 0H487V62H595V618H304V62H412V0H400",120504:"400 0Q376 3 226 3Q75 3 51 0H39V62H147V624H39V686H253Q435 686 470 685T536 678Q585 668 621 648T675 605T705 557T718 514T721 483T718 451T704 409T673 362T616 322T530 293Q500 288 399 287H304V62H412V0H400ZM553 475Q553 554 537 582T459 622Q451 623 373 624H298V343H372Q457 344 480 350Q527 362 540 390T553 475",120506:"766 271Q764 266 750 137T735 4V0H407Q74 0 71 4L70 5Q64 9 64 18Q64 24 82 41T213 158L359 288Q360 288 320 336T214 460Q67 633 66 635Q64 638 64 655Q64 679 75 684Q78 686 407 686H735V682Q738 676 751 558T766 434V430H735Q704 430 704 431Q704 434 703 444T696 477T681 520T654 563T613 598Q578 615 527 619T371 624H281L396 489Q506 358 513 351Q517 342 512 334Q503 325 371 208Q338 179 303 147T249 99L231 83L243 81Q258 81 364 81Q382 81 418 81T470 82T513 83T554 88T587 96T619 109T645 129Q689 173 702 260L704 274Q704 275 735 275H766V271",120507:"41 425Q41 426 51 545T62 669V675H737V669Q738 665 748 546T758 425V419H696V425Q687 517 669 555T595 607Q578 612 522 613H478V62H631V0H615Q585 3 399 3Q214 3 184 0H168V62H321V613H277H263Q164 613 134 561Q113 527 103 425V419H41V425",120508:"64 556Q69 619 114 658T224 697Q271 697 310 677T375 622T417 554T444 484L447 477V479Q456 516 473 551T516 620T582 676T670 697Q735 697 780 656T829 556Q829 539 818 532H772Q761 539 761 548Q761 571 681 571Q664 571 653 570T623 562T587 537T555 490Q536 448 531 410T525 300V210V62H660V0H646L447 3Q257 1 247 0H233V62H368V210V301Q368 373 363 410T338 490Q324 518 307 536T270 561T240 569T212 571Q132 571 132 548Q132 539 121 532H75Q64 538 64 556",120509:"609 0Q582 3 415 3T221 0H207V62H342V168L328 169Q193 180 117 241Q64 286 64 343T117 445Q193 506 328 517L342 518V624H207V686H221Q248 683 415 683T609 686H623V624H488V518L502 517Q637 506 713 445Q766 400 766 343T713 241Q637 180 502 169L488 168V62H623V0H609ZM342 219T342 343T340 467Q328 467 304 459Q277 451 261 439T237 409T228 378T226 343Q226 314 229 296T250 259T301 228Q331 219 341 219Q342 219 342 343ZM604 343Q604 365 602 379T591 413T560 446T503 464L489 467Q488 467 488 343T489 219Q499 219 529 228Q554 236 570 248T593 277T602 308T604 343",120510:"327 0Q306 3 174 3Q52 3 43 0H33V62H98L162 63L360 333L157 624H48V686H59Q80 683 217 683Q368 683 395 686H408V624H335L393 540L452 458L573 623Q573 624 528 624H483V686H494Q515 683 646 683Q769 683 778 686H787V624H658L575 511Q493 398 493 397L508 376Q522 356 553 312T611 229L727 62H835V0H824Q803 3 667 3Q516 3 489 0H476V62H513L549 63L401 274L247 63Q247 62 292 62H338V0H327",120511:"64 515Q64 532 71 536T104 540H139Q200 540 207 538Q225 533 236 521T253 489T260 454T264 414Q264 340 287 296T347 237Q369 226 373 226Q374 226 374 425V624H239V686H253Q280 683 447 683T641 686H655V624H520V226L522 227Q525 228 531 229T552 240T580 261T606 298T624 354Q627 368 628 394T631 440T637 482T654 518T686 538Q693 540 754 540H794Q817 540 823 536T829 515Q829 500 824 495T811 489T796 483T782 461T775 408Q767 212 568 175Q526 168 521 168Q520 168 520 115V62H655V0H641Q614 3 447 3T253 0H239V62H374V168L364 169Q290 178 243 203Q126 261 118 409Q117 443 111 461T98 484T83 489T70 495T64 515",120512:"598 645T415 645T232 458Q232 385 275 239T318 26Q318 8 311 4T272 -1Q265 -1 240 -1T196 0H88V3Q86 5 70 108Q52 211 51 212V215H113V212Q123 149 132 133Q136 124 149 122T202 118Q241 118 241 119Q241 132 132 277Q64 378 64 457Q64 564 158 630T403 696Q487 696 543 685T661 638Q722 599 744 549T766 458Q766 434 761 410T749 368T729 327T709 293T684 258T663 229Q632 187 614 160T592 126L589 119Q589 118 628 118Q667 119 680 121T698 133Q702 140 706 160T714 196L717 212V215H779V212Q778 211 760 108Q744 5 742 3V0H634H562Q528 0 520 4T512 26Q512 92 555 238T598 458Q598 645 415 645",120513:"56 673Q56 679 65 686H892Q901 679 901 673Q901 668 714 331T521 -15Q518 -18 506 -24H452Q440 -19 436 -15Q431 -8 337 162T150 501L57 669Q57 670 56 672V673ZM528 136L758 553H297Q298 551 414 341L528 136",120546:"208 74Q208 50 254 46Q272 46 272 35Q272 34 270 22Q267 8 264 4T251 0Q249 0 239 0T205 1T141 2Q70 2 50 0H42Q35 7 35 11Q37 38 48 46H62Q132 49 164 96Q170 102 345 401T523 704Q530 716 547 716H555H572Q578 707 578 706L606 383Q634 60 636 57Q641 46 701 46Q726 46 726 36Q726 34 723 22Q720 7 718 4T704 0Q701 0 690 0T651 1T578 2Q484 2 455 0H443Q437 6 437 9T439 27Q443 40 445 43L449 46H469Q523 49 533 63L521 213H283L249 155Q208 86 208 74ZM516 260Q516 271 504 416T490 562L463 519Q447 492 400 412L310 260L413 259Q516 259 516 260",120547:"231 637Q204 637 199 638T194 649Q194 676 205 682Q206 683 335 683Q594 683 608 681Q671 671 713 636T756 544Q756 480 698 429T565 360L555 357Q619 348 660 311T702 219Q702 146 630 78T453 1Q446 0 242 0Q42 0 39 2Q35 5 35 10Q35 17 37 24Q42 43 47 45Q51 46 62 46H68Q95 46 128 49Q142 52 147 61Q150 65 219 339T288 628Q288 635 231 637ZM649 544Q649 574 634 600T585 634Q578 636 493 637Q473 637 451 637T416 636H403Q388 635 384 626Q382 622 352 506Q352 503 351 500L320 374H401Q482 374 494 376Q554 386 601 434T649 544ZM595 229Q595 273 572 302T512 336Q506 337 429 337Q311 337 310 336Q310 334 293 263T258 122L240 52Q240 48 252 48T333 46Q422 46 429 47Q491 54 543 105T595 229",120548:"49 1Q31 1 31 10Q31 12 34 24Q39 43 44 45Q48 46 59 46H65Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 661Q197 674 203 680H714Q721 676 721 669Q721 664 708 557T694 447Q692 440 674 440H662Q655 445 655 454Q655 455 658 480T661 534Q661 572 652 592Q638 619 603 626T501 634H471Q398 633 393 630Q389 628 386 622Q385 619 315 341T245 60Q245 46 333 46H345Q366 46 366 35Q366 33 363 21T358 6Q356 1 339 1Q334 1 292 1T187 2Q122 2 88 2T49 1",120549:"574 715L582 716Q589 716 595 716Q612 716 616 714Q621 712 621 709Q622 707 705 359T788 8Q786 5 785 3L781 0H416Q52 0 50 2T48 6Q48 9 305 358T567 711Q572 712 574 715ZM599 346L538 602L442 474Q347 345 252 217T157 87T409 86T661 88L654 120Q646 151 629 220T599 346",120550:"492 213Q472 213 472 226Q472 230 477 250T482 285Q482 316 461 323T364 330H312Q311 328 277 192T243 52Q243 48 254 48T334 46Q428 46 458 48T518 61Q567 77 599 117T670 248Q680 270 683 272Q690 274 698 274Q718 274 718 261Q613 7 608 2Q605 0 322 0H133Q31 0 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H757Q764 676 764 669Q764 664 751 557T737 447Q735 440 717 440H705Q698 445 698 453L701 476Q704 500 704 528Q704 558 697 578T678 609T643 625T596 632T532 634H485Q397 633 392 631Q388 629 386 622Q385 619 355 499T324 377Q347 376 372 376H398Q464 376 489 391T534 472Q538 488 540 490T557 493Q562 493 565 493T570 492T572 491T574 487T577 483L544 351Q511 218 508 216Q505 213 492 213",120551:"58 8Q58 23 64 35Q64 36 329 334T596 635L586 637Q575 637 512 637H500H476Q442 637 420 635T365 624T311 598T266 548T228 469Q227 466 226 463T224 458T223 453T222 450L221 448Q218 443 202 443Q185 443 182 453L214 561Q228 606 241 651Q249 679 253 681Q256 683 487 683H718Q723 678 723 675Q723 673 717 649Q189 54 188 52L185 49H274Q369 50 377 51Q452 60 500 100T579 247Q587 272 590 277T603 282H607Q628 282 628 271Q547 5 541 2Q538 0 300 0H124Q58 0 58 8",120552:"228 637Q194 637 192 641Q191 643 191 649Q191 673 202 682Q204 683 219 683Q260 681 355 681Q389 681 418 681T463 682T483 682Q499 682 499 672Q499 670 497 658Q492 641 487 638H485Q483 638 480 638T473 638T464 637T455 637Q416 636 405 634T387 623Q384 619 355 500Q348 474 340 442T328 395L324 380Q324 378 469 378H614L615 381Q615 384 646 504Q674 619 674 627T617 637Q594 637 587 639T580 648Q580 650 582 660Q586 677 588 679T604 682Q609 682 646 681T740 680Q802 680 835 681T871 682Q888 682 888 672Q888 645 876 638H874Q872 638 869 638T862 638T853 637T844 637Q805 636 794 634T776 623Q773 618 704 340T634 58Q634 51 638 51Q646 48 692 46H723Q729 38 729 37T726 19Q722 6 716 0H701Q664 2 567 2Q533 2 504 2T458 2T437 1Q420 1 420 10Q420 15 423 24Q428 43 433 45Q437 46 448 46H454Q481 46 514 49Q520 50 522 50T528 55T534 64T540 82T547 110T558 153Q565 181 569 198Q602 330 602 331T457 332H312L279 197Q245 63 245 58Q245 51 253 49T303 46H334Q340 38 340 37T337 19Q333 6 327 0H312Q275 2 178 2Q144 2 115 2T69 2T48 1Q31 1 31 10Q31 12 34 24Q39 43 44 45Q48 46 59 46H65Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Q285 635 228 637",120553:"740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM640 466Q640 523 625 565T583 628T532 658T479 668Q370 668 273 559T151 255Q150 245 150 213Q150 156 165 116T207 55T259 26T313 17Q385 17 451 63T561 184Q590 234 615 312T640 466ZM510 276Q510 278 512 288L515 298Q515 299 384 299H253L250 285Q246 271 244 268T231 265H227Q216 265 214 266T207 274Q207 278 223 345T244 416Q247 419 260 419H263Q280 419 280 408Q280 406 278 396L275 386Q275 385 406 385H537L540 399Q544 413 546 416T559 419H563Q574 419 576 418T583 410Q583 403 566 339Q549 271 544 267Q542 265 538 265H530H527Q510 265 510 276",120554:"43 1Q26 1 26 10Q26 12 29 24Q34 43 39 45Q42 46 54 46H60Q120 46 136 53Q137 53 138 54Q143 56 149 77T198 273Q210 318 216 344Q286 624 286 626Q284 630 284 631Q274 637 213 637H193Q184 643 189 662Q193 677 195 680T209 683H213Q285 681 359 681Q481 681 487 683H497Q504 676 504 672T501 655T494 639Q491 637 471 637Q440 637 407 634Q393 631 388 623Q381 609 337 432Q326 385 315 341Q245 65 245 59Q245 52 255 50T307 46H339Q345 38 345 37T342 19Q338 6 332 0H316Q279 2 179 2Q143 2 113 2T65 2T43 1",120555:"285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628",120556:"135 2Q114 2 90 2T60 1Q35 1 35 11Q35 28 42 40Q45 46 55 46Q119 46 151 94Q153 97 325 402T498 709Q505 716 526 716Q543 716 549 710Q550 709 560 548T580 224T591 57Q594 52 595 52Q603 47 638 46H663Q670 39 670 35Q669 12 657 0H644Q613 2 530 2Q497 2 469 2T424 2T405 1Q388 1 388 10Q388 15 391 24Q392 27 393 32T395 38T397 41T401 44T406 45T415 46Q473 46 487 64L472 306Q468 365 465 426T459 518L457 550Q456 550 328 322T198 88Q196 80 196 77Q196 49 243 46Q261 46 261 35Q261 34 259 22Q256 7 254 4T240 0Q237 0 211 1T135 2",120557:"289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629",120558:"234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637",120559:"222 668Q222 670 229 677H654Q677 677 705 677T740 678Q764 678 770 676T777 667Q777 662 764 594Q761 579 757 559T751 528L749 519Q747 512 729 512H717Q710 519 710 525Q712 532 715 559T719 591Q718 595 711 595Q682 598 486 598Q252 598 246 592Q239 587 228 552L216 517Q214 512 197 512H185Q178 517 178 522Q178 524 198 591T222 668ZM227 262Q218 262 215 262T209 266L207 270L227 356Q247 435 250 439Q253 443 260 443H267H280Q287 438 287 433Q287 430 285 420T280 402L278 393Q278 392 431 392H585L590 415Q595 436 598 439T612 443H628Q635 438 635 433Q635 431 615 351T594 268Q592 262 575 262H572Q556 262 556 272Q556 280 560 293L565 313H258L252 292Q248 271 245 267T230 262H227ZM60 0Q53 4 53 11Q53 14 68 89T84 169Q88 176 98 176H104H116Q123 169 123 163Q122 160 117 127T112 88Q112 80 243 80H351H454Q554 80 574 81T597 88V89Q603 100 610 121T622 157T630 174Q633 176 646 176H658Q665 171 665 166Q665 164 643 89T618 7Q616 2 607 1T548 0H335H60",120560:"740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476",120561:"48 1Q31 1 31 10Q31 12 34 24Q39 43 44 45Q48 46 59 46H65Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 661Q197 674 203 680H541Q621 680 709 680T812 681Q841 681 855 681T877 679T886 676T887 670Q887 663 885 656Q880 637 875 635Q871 634 860 634H854Q827 634 794 631Q780 628 775 619Q773 614 704 338T634 58Q634 51 638 51Q646 48 692 46H723Q729 38 729 37T726 19Q722 6 716 0H701Q664 2 567 2Q533 2 504 2T458 2T437 1Q420 1 420 10Q420 15 423 24Q428 43 433 45Q437 46 448 46H454Q481 46 514 49Q528 52 533 61Q536 67 572 209T642 491T678 632Q678 634 533 634H388Q387 631 316 347T245 59Q245 55 246 54T253 50T270 48T303 46H334Q340 38 340 37T337 19Q333 6 327 0H312Q275 2 178 2Q144 2 115 2T69 2T48 1",120562:"287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554",120564:"65 0Q58 4 58 11Q58 16 114 67Q173 119 222 164L377 304Q378 305 340 386T261 552T218 644Q217 648 219 660Q224 678 228 681Q231 683 515 683H799Q804 678 806 674Q806 667 793 559T778 448Q774 443 759 443Q747 443 743 445T739 456Q739 458 741 477T743 516Q743 552 734 574T710 609T663 627T596 635T502 637Q480 637 469 637H339Q344 627 411 486T478 341V339Q477 337 477 336L457 318Q437 300 398 265T322 196L168 57Q167 56 188 56T258 56H359Q426 56 463 58T537 69T596 97T639 146T680 225Q686 243 689 246T702 250H705Q726 250 726 239Q726 238 683 123T639 5Q637 1 610 1Q577 0 348 0H65",120565:"40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40",120566:"45 535Q34 535 31 536T28 544Q28 554 39 578T70 631T126 683T206 705Q230 705 251 698T295 671T330 612T344 514Q344 477 342 473V472Q343 472 347 480T361 509T380 547Q471 704 596 704Q615 704 625 702Q659 692 679 663T700 595Q700 565 696 552T687 537T670 535Q656 535 653 536T649 543Q649 544 649 550T650 562Q650 589 629 605T575 621Q502 621 448 547T365 361Q290 70 290 60Q290 46 379 46H404Q410 40 410 39T408 19Q404 6 398 0H381Q340 2 225 2Q184 2 149 2T94 2T69 1Q61 1 58 1T53 4T51 10Q51 11 53 23Q54 25 55 30T56 36T58 40T60 43T62 44T67 46T73 46T82 46H89Q144 46 163 49T190 62L198 93Q206 124 217 169T241 262T262 350T274 404Q281 445 281 486V494Q281 621 185 621Q147 621 116 601T74 550Q71 539 66 537T45 535",120567:"356 624Q356 637 267 637H243Q237 642 237 645T239 664Q243 677 249 683H264Q342 681 429 681Q565 681 571 683H583Q589 677 589 674T587 656Q582 641 578 637H540Q516 637 504 637T479 633T463 630T454 623T448 613T443 597T438 576Q436 566 434 556T430 539L428 533Q442 533 472 526T543 502T613 451T642 373Q642 301 567 241T386 158L336 150Q332 150 331 146Q310 66 310 60Q310 46 399 46H424Q430 40 430 39T428 19Q424 6 418 0H401Q360 2 247 2Q207 2 173 2T119 2T95 1Q87 1 84 1T79 4T77 10Q77 11 79 23Q80 25 81 30T82 36T84 40T86 43T88 44T93 46T99 46T108 46H115Q170 46 189 49T216 62Q220 74 228 107L239 150L223 152Q139 164 82 205T24 311Q24 396 125 462Q207 517 335 533L346 578Q356 619 356 624ZM130 291Q130 203 241 188H249Q249 190 287 342L325 495H324Q313 495 291 491T229 466T168 414Q130 357 130 291ZM536 393Q536 440 507 463T418 496L341 187L351 189Q443 201 487 255Q536 314 536 393",120568:"42 0H40Q26 0 26 11Q26 15 29 27Q33 41 36 43T55 46Q141 49 190 98Q200 108 306 224T411 342Q302 620 297 625Q288 636 234 637H206Q200 643 200 645T202 664Q206 677 212 683H226Q260 681 347 681Q380 681 408 681T453 682T473 682Q490 682 490 671Q490 670 488 658Q484 643 481 640T465 637Q434 634 411 620L488 426L541 485Q646 598 646 610Q646 628 622 635Q617 635 609 637Q594 637 594 648Q594 650 596 664Q600 677 606 683H618Q619 683 643 683T697 681T738 680Q828 680 837 683H845Q852 676 852 672Q850 647 840 637H824Q790 636 763 628T722 611T698 593L687 584Q687 585 592 480L505 384Q505 383 536 304T601 142T638 56Q648 47 699 46Q734 46 734 37Q734 35 732 23Q728 7 725 4T711 1Q708 1 678 1T589 2Q528 2 496 2T461 1Q444 1 444 10Q444 11 446 25Q448 35 450 39T455 44T464 46T480 47T506 54Q523 62 523 64Q522 64 476 181L429 299Q241 95 236 84Q232 76 232 72Q232 53 261 47Q262 47 267 47T273 46Q276 46 277 46T280 45T283 42T284 35Q284 26 282 19Q279 6 276 4T261 1Q258 1 243 1T201 2T142 2Q64 2 42 0",120569:"216 151Q48 174 48 329Q48 361 56 403T65 458Q65 482 58 494T43 507T28 510T21 520Q21 528 23 534T29 544L32 546H72H94Q110 546 119 544T139 536T154 514T159 476V465Q159 445 149 399T138 314Q142 229 197 201Q223 187 226 190L233 218Q240 246 253 300T280 407Q333 619 333 625Q333 637 244 637H220Q214 642 214 645T216 664Q220 677 226 683H241Q321 681 405 681Q543 681 549 683H560Q566 677 566 674T564 656Q559 641 555 637H517Q448 636 436 628Q429 623 423 600T373 404L320 192Q370 201 419 248Q451 281 469 317T500 400T518 457Q529 486 542 505T569 532T594 543T621 546H644H669Q692 546 692 536Q691 509 676 509Q623 509 593 399Q587 377 579 355T552 301T509 244T446 195T359 159Q324 151 314 151Q311 151 310 150T298 106T287 60Q287 46 376 46H401Q407 40 407 39T405 19Q401 6 395 0H378Q337 2 224 2Q184 2 150 2T96 2T72 1Q64 1 61 1T56 4T54 10Q54 11 56 23Q57 25 58 30T59 36T61 40T63 43T65 44T70 46T76 46T85 46H92Q147 46 166 49T193 62L204 106Q216 149 216 151",120570:"125 84Q127 78 194 76H243V78Q243 122 208 215T165 350Q164 359 162 389Q162 522 272 610Q328 656 396 680T525 704Q628 704 698 661Q734 637 755 601T781 544T786 504Q786 439 747 374T635 226T537 109Q518 81 518 77Q537 76 557 76Q608 76 620 78T640 92Q646 100 656 119T673 155T683 172Q690 173 698 173Q718 173 718 162Q718 161 681 82T642 2Q639 0 550 0H461Q455 5 455 9T458 28Q472 78 510 149T584 276T648 402T677 525Q677 594 636 631T530 668Q476 668 423 641T335 568Q284 499 271 400Q270 388 270 348Q270 298 277 228T285 115Q285 82 280 49T271 6Q269 1 258 1T175 0H87Q83 3 80 7V18Q80 22 82 98Q84 156 85 163T91 172Q94 173 104 173T119 172Q124 169 124 126Q125 104 125 84",120572:"34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26",120573:"29 -194Q23 -188 23 -186Q23 -183 102 134T186 465Q208 533 243 584T309 658Q365 705 429 705H431Q493 705 533 667T573 570Q573 465 469 396L482 383Q533 332 533 252Q533 139 448 65T257 -10Q227 -10 203 -2T165 17T143 40T131 59T126 65L62 -188Q60 -194 42 -194H29ZM353 431Q392 431 427 419L432 422Q436 426 439 429T449 439T461 453T472 471T484 495T493 524T501 560Q503 569 503 593Q503 611 502 616Q487 667 426 667Q384 667 347 643T286 582T247 514T224 455Q219 439 186 308T152 168Q151 163 151 147Q151 99 173 68Q204 26 260 26Q302 26 349 51T425 137Q441 171 449 214T457 279Q457 337 422 372Q380 358 347 358H337Q258 358 258 389Q258 396 261 403Q275 431 353 431",120574:"31 249Q11 249 11 258Q11 275 26 304T66 365T129 418T206 441Q233 441 239 440Q287 429 318 386T371 255Q385 195 385 170Q385 166 386 166L398 193Q418 244 443 300T486 391T508 430Q510 431 524 431H537Q543 425 543 422Q543 418 522 378T463 251T391 71Q385 55 378 6T357 -100Q341 -165 330 -190T303 -216Q286 -216 286 -188Q286 -138 340 32L346 51L347 69Q348 79 348 100Q348 257 291 317Q251 355 196 355Q148 355 108 329T51 260Q49 251 47 251Q45 249 31 249",120575:"195 609Q195 656 227 686T302 717Q319 716 351 709T407 697T433 690Q451 682 451 662Q451 644 438 628T403 612Q382 612 348 641T288 671T249 657T235 628Q235 584 334 463Q401 379 401 292Q401 169 340 80T205 -10H198Q127 -10 83 36T36 153Q36 286 151 382Q191 413 252 434Q252 435 245 449T230 481T214 521T201 566T195 609ZM112 130Q112 83 136 55T204 27Q233 27 256 51T291 111T309 178T316 232Q316 267 309 298T295 344T269 400L259 396Q215 381 183 342T137 256T118 179T112 130",120576:"190 -22Q124 -22 76 11T27 107Q27 174 97 232L107 239L99 248Q76 273 76 304Q76 364 144 408T290 452H302Q360 452 405 421Q428 405 428 392Q428 381 417 369T391 356Q382 356 371 365T338 383T283 392Q217 392 167 368T116 308Q116 289 133 272Q142 263 145 262T157 264Q188 278 238 278H243Q308 278 308 247Q308 206 223 206Q177 206 142 219L132 212Q68 169 68 112Q68 39 201 39Q253 39 286 49T328 72T345 94T362 105Q376 103 376 88Q376 79 365 62T334 26T275 -8T190 -22",120577:"296 643Q298 704 324 704Q342 704 342 687Q342 682 339 664T336 633Q336 623 337 618T338 611Q339 612 341 612Q343 614 354 616T374 618L384 619H394Q471 619 471 586Q467 548 386 546H372Q338 546 320 564L311 558Q235 506 175 398T114 190Q114 171 116 155T125 127T137 104T153 86T171 72T192 61T213 53T235 46T256 39L322 16Q389 -10 389 -80Q389 -119 364 -154T300 -202Q292 -204 274 -204Q247 -204 225 -196Q210 -192 193 -182T172 -167Q167 -159 173 -148Q180 -139 191 -139Q195 -139 221 -153T283 -168Q298 -166 310 -152T322 -117Q322 -91 302 -75T250 -51T183 -29T116 4T65 62T44 160Q44 287 121 410T293 590L302 595Q296 613 296 643",120578:"21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q156 442 175 435T205 417T221 395T229 376L231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336V326Q503 302 439 53Q381 -182 377 -189Q364 -216 332 -216Q319 -216 310 -208T299 -186Q299 -177 358 57L420 307Q423 322 423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287",120579:"35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132",120580:"139 -10Q111 -10 92 0T64 25T52 52T48 74Q48 89 55 109T85 199T135 375L137 384Q139 394 140 397T145 409T151 422T160 431T173 439T190 442Q202 442 213 435T225 410Q225 404 214 358T181 238T137 107Q126 74 126 54Q126 43 126 39T130 31T142 27H147Q206 27 255 78Q272 98 281 114T290 138T295 149T313 153Q321 153 324 153T329 152T332 149T332 143Q332 106 276 48T145 -10H139",120581:"83 -11Q70 -11 62 -4T51 8T49 17Q49 30 96 217T147 414Q160 442 193 442Q205 441 213 435T223 422T225 412Q225 401 208 337L192 270Q193 269 208 277T235 292Q252 304 306 349T396 412T467 431Q489 431 500 420T512 391Q512 366 494 347T449 327Q430 327 418 338T405 368Q405 370 407 380L397 375Q368 360 315 315L253 266L240 257H245Q262 257 300 251T366 230Q422 203 422 150Q422 140 417 114T411 67Q411 26 437 26Q484 26 513 137Q516 149 519 151T535 153Q554 153 554 144Q554 121 527 64T457 -7Q447 -10 431 -10Q386 -10 360 17T333 90Q333 108 336 122T339 146Q339 170 320 186T271 209T222 218T185 221H180L155 122Q129 22 126 16Q113 -11 83 -11",120582:"166 673Q166 685 183 694H202Q292 691 316 644Q322 629 373 486T474 207T524 67Q531 47 537 34T546 15T551 6T555 2T556 -2T550 -11H482Q457 3 450 18T399 152L354 277L340 262Q327 246 293 207T236 141Q211 112 174 69Q123 9 111 -1T83 -12Q47 -12 47 20Q47 37 61 52T199 187Q229 216 266 252T321 306L338 322Q338 323 288 462T234 612Q214 657 183 657Q166 657 166 673",120583:"58 -216Q44 -216 34 -208T23 -186Q23 -176 96 116T173 414Q186 442 219 442Q231 441 239 435T249 423T251 413Q251 401 220 279T187 142Q185 131 185 107V99Q185 26 252 26Q261 26 270 27T287 31T302 38T315 45T327 55T338 65T348 77T356 88T365 100L372 110L408 253Q444 395 448 404Q461 431 491 431Q504 431 512 424T523 412T525 402L449 84Q448 79 448 68Q448 43 455 35T476 26Q485 27 496 35Q517 55 537 131Q543 151 547 152Q549 153 557 153H561Q580 153 580 144Q580 138 575 117T555 63T523 13Q510 0 491 -8Q483 -10 467 -10Q446 -10 429 -4T402 11T385 29T376 44T374 51L368 45Q362 39 350 30T324 12T288 -4T246 -11Q199 -11 153 12L129 -85Q108 -167 104 -180T92 -202Q76 -216 58 -216",120584:"74 431Q75 431 146 436T219 442Q231 442 231 434Q231 428 185 241L137 51H140L150 55Q161 59 177 67T214 86T261 119T312 165Q410 264 445 394Q458 442 496 442Q509 442 519 434T530 411Q530 390 516 352T469 262T388 162T267 70T106 5Q81 -2 71 -2Q66 -2 59 -1T51 1Q45 5 45 11Q45 13 88 188L132 364Q133 377 125 380T86 385H65Q59 391 59 393T61 412Q65 431 74 431",120585:"268 632Q268 704 296 704Q314 704 314 687Q314 682 311 664T308 635T309 620V616H315Q342 619 360 619Q443 619 443 586Q439 548 358 546H344Q326 546 317 549T290 566Q257 550 226 505T195 405Q195 381 201 364T211 342T218 337Q266 347 298 347Q375 347 375 314Q374 297 359 288T327 277T280 275Q234 275 208 283L195 286Q149 260 119 214T88 130Q88 116 90 108Q101 79 129 63T229 20Q238 17 243 15Q337 -21 354 -33Q383 -53 383 -94Q383 -137 351 -171T273 -205Q240 -205 202 -190T158 -167Q156 -163 156 -159Q156 -151 161 -146T176 -140Q182 -140 189 -143Q232 -168 274 -168Q286 -168 292 -165Q313 -151 313 -129Q313 -112 301 -104T232 -75Q214 -68 204 -64Q198 -62 171 -52T136 -38T107 -24T78 -8T56 12T36 37T26 66T21 103Q21 149 55 206T145 301L154 307L148 313Q141 319 136 323T124 338T111 358T103 382T99 413Q99 471 143 524T259 602L271 607Q268 618 268 632",120586:"201 -11Q126 -11 80 38T34 156Q34 221 64 279T146 380Q222 441 301 441Q333 441 341 440Q354 437 367 433T402 417T438 387T464 338T476 268Q476 161 390 75T201 -11ZM121 120Q121 70 147 48T206 26Q250 26 289 58T351 142Q360 163 374 216T388 308Q388 352 370 375Q346 405 306 405Q243 405 195 347Q158 303 140 230T121 120",120587:"132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11",120588:"58 -216Q25 -216 23 -186Q23 -176 73 26T127 234Q143 289 182 341Q252 427 341 441Q343 441 349 441T359 442Q432 442 471 394T510 276Q510 219 486 165T425 74T345 13T266 -10H255H248Q197 -10 165 35L160 41L133 -71Q108 -168 104 -181T92 -202Q76 -216 58 -216ZM424 322Q424 359 407 382T357 405Q322 405 287 376T231 300Q217 269 193 170L176 102Q193 26 260 26Q298 26 334 62Q367 92 389 158T418 266T424 322",120589:"31 207Q31 306 115 374T302 442Q341 442 373 430T405 400Q405 392 399 383T379 374Q373 375 348 390T296 405Q222 405 160 357T98 249Q98 232 103 218T112 195T132 175T154 159T186 141T219 122Q234 114 255 102T286 85T299 78L302 74Q306 71 308 69T315 61T322 51T328 40T332 25T334 8Q334 -31 305 -69T224 -107Q194 -107 163 -92Q156 -88 156 -80Q156 -73 162 -67T178 -61Q186 -61 190 -63Q209 -71 224 -71Q244 -71 253 -59T263 -30Q263 -25 263 -21T260 -12T255 -4T248 3T239 9T227 17T213 25T195 34T174 46Q170 48 150 58T122 74T97 90T70 112T51 137T36 169T31 207",120590:"184 -11Q116 -11 74 34T31 147Q31 247 104 333T274 430Q275 431 414 431H552Q553 430 555 429T559 427T562 425T565 422T567 420T569 416T570 412T571 407T572 401Q572 357 507 357Q500 357 490 357T476 358H416L421 348Q439 310 439 263Q439 153 359 71T184 -11ZM361 278Q361 358 276 358Q152 358 115 184Q114 180 114 178Q106 141 106 117Q106 67 131 47T188 26Q242 26 287 73Q316 103 334 153T356 233T361 278",120591:"39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284",120592:"413 384Q413 406 432 424T473 443Q492 443 507 425T523 367Q523 334 508 270T468 153Q424 63 373 27T282 -10H268Q220 -10 186 2T135 36T111 78T104 121Q104 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 299 34 333T82 404T161 441Q200 441 225 419T250 355Q248 336 247 334Q247 331 232 291T201 199T185 118Q185 68 211 47T275 26Q317 26 355 57T416 132T452 216T465 277Q465 301 457 318T439 343T421 361T413 384",120593:"92 210Q92 176 106 149T142 108T185 85T220 72L235 70L237 71L250 112Q268 170 283 211T322 299T370 375T429 423T502 442Q547 442 582 410T618 302Q618 224 575 152T457 35T299 -10Q273 -10 273 -12L266 -48Q260 -83 252 -125T241 -179Q236 -203 215 -212Q204 -218 190 -218Q159 -215 159 -185Q159 -175 214 -2L209 0Q204 2 195 5T173 14T147 28T120 46T94 71T71 103T56 142T50 190Q50 238 76 311T149 431H162Q183 431 183 423Q183 417 175 409Q134 361 114 300T92 210ZM574 278Q574 320 550 344T486 369Q437 369 394 329T323 218Q309 184 295 109L286 64Q304 62 306 62Q423 62 498 131T574 278",120594:"576 -125Q576 -147 547 -175T487 -204H476Q394 -204 363 -157Q334 -114 293 26L284 59Q283 58 248 19T170 -66T92 -151T53 -191Q49 -194 43 -194Q36 -194 31 -189T25 -177T38 -154T151 -30L272 102L265 131Q189 405 135 405Q104 405 87 358Q86 351 68 351Q48 351 48 361Q48 369 56 386T89 423T148 442Q224 442 258 400Q276 375 297 320T330 222L341 180Q344 180 455 303T573 429Q579 431 582 431Q600 431 600 414Q600 407 587 392T477 270Q356 138 353 134L362 102Q392 -10 428 -89T490 -168Q504 -168 517 -156T536 -126Q539 -116 543 -115T557 -114T571 -115Q576 -118 576 -125",120595:"161 441Q202 441 226 417T250 358Q250 338 218 252T187 127Q190 85 214 61Q235 43 257 37Q275 29 288 29H289L371 360Q455 691 456 692Q459 694 472 694Q492 694 492 687Q492 678 411 356Q329 28 329 27T335 26Q421 26 498 114T576 278Q576 302 568 319T550 343T532 361T524 384Q524 405 541 424T583 443Q602 443 618 425T634 366Q634 337 623 288T605 220Q573 125 492 57T329 -11H319L296 -104Q272 -198 272 -199Q270 -205 252 -205H239Q233 -199 233 -197Q233 -192 256 -102T279 -9Q272 -8 265 -8Q106 14 106 139Q106 174 139 264T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 299 34 333T82 404T161 441",120596:"495 384Q495 406 514 424T555 443Q574 443 589 425T604 364Q604 334 592 278T555 155T483 38T377 -11Q297 -11 267 66Q266 68 260 61Q201 -11 125 -11Q15 -11 15 139Q15 230 56 325T123 434Q135 441 147 436Q160 429 160 418Q160 406 140 379T94 306T62 208Q61 202 61 187Q61 124 85 100T143 76Q201 76 245 129L253 137V156Q258 297 317 297Q348 297 348 261Q348 243 338 213T318 158L308 135Q309 133 310 129T318 115T334 97T358 83T393 76Q456 76 501 148T546 274Q546 305 533 325T508 357T495 384",120597:"202 508Q179 508 169 520T158 547Q158 557 164 577T185 624T230 675T301 710L333 715H345Q378 715 384 714Q447 703 489 661T549 568T566 457Q566 362 519 240T402 53Q321 -22 223 -22Q123 -22 73 56Q42 102 42 148V159Q42 276 129 370T322 465Q383 465 414 434T455 367L458 378Q478 461 478 515Q478 603 437 639T344 676Q266 676 223 612Q264 606 264 572Q264 547 246 528T202 508ZM430 306Q430 372 401 400T333 428Q270 428 222 382Q197 354 183 323T150 221Q132 149 132 116Q132 21 232 21Q244 21 250 22Q327 35 374 112Q389 137 409 196T430 306",120598:"227 -11Q149 -11 95 41T40 174Q40 262 87 322Q121 367 173 396T287 430Q289 431 329 431H367Q382 426 382 411Q382 385 341 385H325H312Q191 385 154 277L150 265H327Q340 256 340 246Q340 228 320 219H138V217Q128 187 128 143Q128 77 160 52T231 26Q258 26 284 36T326 57T343 68Q350 68 354 58T358 39Q358 36 357 35Q354 31 337 21T289 0T227 -11",120599:"537 500Q537 474 533 439T524 383L521 362Q558 355 561 351Q563 349 563 345Q563 321 552 318Q542 318 521 323L510 326Q496 261 459 187T362 51T241 -11Q100 -11 100 105Q100 139 127 242T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Q21 291 27 313T47 368T79 418Q103 442 134 442Q169 442 201 419T233 344Q232 330 206 228T180 98Q180 26 247 26Q292 26 332 90T404 260L427 349Q422 349 398 359T339 392T289 440Q265 476 265 520Q265 590 312 647T417 705Q463 705 491 670T528 592T537 500ZM464 564Q464 668 413 668Q373 668 339 622T304 522Q304 494 317 470T349 431T388 406T421 391T435 387H436L443 415Q450 443 457 485T464 564",120600:"228 325Q170 322 156 316T127 309Q108 309 104 314Q99 319 99 322T108 341Q125 376 171 400T268 425H271Q302 425 319 396Q328 377 328 358Q328 332 324 314Q311 270 286 221Q274 194 274 192H275Q339 234 484 325T639 421Q669 434 691 434T723 425T734 406Q734 394 719 381Q715 376 644 330L575 287L566 267Q543 233 526 176Q520 160 515 143T508 115T506 105Q506 103 533 103Q585 103 607 110T641 118Q670 118 670 107Q670 100 661 85Q643 50 598 27T504 3Q465 3 450 36Q441 51 441 73Q441 84 444 96Q452 146 484 205L497 236L324 125Q143 12 135 10Q103 -6 77 -6Q61 -6 49 2T37 21Q37 36 49 46T124 96L195 141L204 156Q219 179 243 248T264 323Q264 325 228 325",120601:"409 688Q413 694 421 694H429H442Q448 688 448 686Q448 679 418 563Q411 535 404 504T392 458L388 442Q388 441 397 441T429 435T477 418Q521 397 550 357T579 260T548 151T471 65T374 11T279 -10H275L251 -105Q245 -128 238 -160Q230 -192 227 -198T215 -205H209Q189 -205 189 -198Q189 -193 211 -103L234 -11Q234 -10 226 -10Q221 -10 206 -8T161 6T107 36T62 89T43 171Q43 231 76 284T157 370T254 422T342 441Q347 441 348 445L378 567Q409 686 409 688ZM122 150Q122 116 134 91T167 53T203 35T237 27H244L337 404Q333 404 326 403T297 395T255 379T211 350T170 304Q152 276 137 237Q122 191 122 150ZM500 282Q500 320 484 347T444 385T405 400T381 404H378L332 217L284 29Q284 27 285 27Q293 27 317 33T357 47Q400 66 431 100T475 170T494 234T500 282",120602:"205 -174Q136 -174 102 -153T67 -76Q67 -25 91 85T127 234Q143 289 182 341Q252 427 341 441Q343 441 349 441T359 442Q432 442 471 394T510 276Q510 169 431 80T253 -10Q226 -10 204 -2T169 19T146 44T132 64L128 73Q128 72 124 53T116 5T112 -44Q112 -68 117 -78T150 -95T236 -102Q327 -102 356 -111T386 -154Q386 -166 384 -178Q381 -190 378 -192T361 -194H348Q342 -188 342 -179Q342 -169 315 -169Q294 -169 264 -171T205 -174ZM424 322Q424 359 407 382T357 405Q322 405 287 376T231 300Q221 276 204 217Q188 152 188 116Q188 68 210 47T259 26Q297 26 334 62Q367 92 389 158T418 266T424 322",120603:"206 -10Q158 -10 136 24T114 110Q114 233 199 349L205 358H184Q144 358 121 347Q108 340 95 330T75 312T61 295T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 532 431Q799 431 803 430Q823 423 823 402Q823 377 801 364Q790 358 766 358Q748 358 748 357Q748 355 749 348T752 327T754 297Q754 258 738 207T693 107T618 24T520 -10Q488 -10 466 2T432 36T416 77T411 120Q411 128 410 128T404 122Q373 71 323 31T206 -10ZM714 296Q714 316 707 358H251Q250 357 244 348T230 328T212 301T193 267T176 229T164 187T159 144Q159 62 222 62Q290 62 349 127T432 285Q433 286 434 288T435 291T437 293T440 294T444 294T452 294H466Q472 288 472 286Q472 285 464 244T456 170Q456 62 534 62Q604 62 659 139T714 296",120604:"65 0Q45 0 45 18Q48 52 61 60Q65 62 81 62Q155 62 165 74Q166 74 265 228T465 539T569 699Q576 707 583 709T611 711T637 710T649 700Q650 697 695 380L741 63L784 62H827Q839 50 839 45L835 29Q831 9 827 5T806 0Q803 0 790 0T743 1T657 2Q585 2 547 1T504 0Q481 0 481 17Q484 54 497 60Q501 62 541 62Q580 62 580 63Q580 68 573 121T564 179V181H308L271 124Q236 69 236 67T283 62H287Q316 62 316 46Q316 26 307 8Q302 3 295 0L262 1Q242 2 168 2Q119 2 93 1T65 0ZM537 372Q533 402 528 435T521 486T518 504V505Q517 505 433 375L348 244L451 243Q555 243 555 244L537 372",120605:"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 449 686H477H586Q684 686 733 677T817 634Q853 598 853 547Q853 499 826 460T761 401T695 371T654 360H653L662 358Q670 357 683 354T712 344T744 327T774 303T795 269T804 224Q804 148 732 79T533 1Q524 0 288 0H58Q47 5 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624ZM703 550Q703 571 695 586T675 609T656 619T643 623L545 624H447L417 504Q386 384 386 383T470 382Q554 383 565 385Q632 397 667 447T703 550ZM651 240Q651 265 645 282T626 309T608 322T592 329Q587 330 479 331H373L340 198Q307 65 306 64Q306 62 406 62L507 63L519 65Q565 76 596 107T639 171T651 240",120606:"257 618H231Q198 618 198 636Q202 672 214 678L219 680H763Q769 677 772 673T776 666L777 664Q777 659 766 549T751 433Q745 424 723 424Q704 424 699 427T693 441Q693 444 695 467T697 513Q697 543 689 563T670 594T636 610T592 617T534 618H516H456L455 614Q455 613 387 339T317 64Q317 62 375 62H411Q430 62 438 59T447 44Q444 7 430 2Q426 0 416 0Q409 0 359 1T231 2Q152 2 111 1T65 0Q48 0 43 15Q47 54 60 60Q64 62 113 62H162L163 66Q163 67 231 341T301 616Q301 618 257 618",120607:"65 0Q59 6 59 9T61 16Q64 20 334 357T608 698Q616 706 629 710Q630 710 634 710T644 710T656 711Q686 711 694 703Q698 699 700 693Q706 674 805 345T904 14Q904 7 894 1L479 0H65ZM630 342L567 551L232 134L462 133H693Q693 137 630 342",120608:"257 618H231Q198 618 198 636Q202 672 214 678L219 680H811Q817 677 820 673T824 666L825 664Q825 659 814 549T799 433Q793 424 771 424Q752 424 746 427T740 441Q740 445 742 466T744 505Q744 561 722 585T646 616Q639 617 545 618H456Q456 617 427 502T398 385Q398 384 435 384Q461 385 471 385T499 391T526 405T545 433T562 478Q566 494 571 497T595 501H604Q622 501 626 486Q626 482 593 349T557 213Q552 205 530 205Q499 205 499 219Q499 222 503 242T508 281Q508 308 491 314T429 322Q425 322 423 322H382L317 64Q317 62 390 62Q460 62 493 64T569 80T640 124Q665 149 686 187T719 253T733 283Q739 289 760 289Q791 289 791 274Q791 267 763 201T706 71L678 8Q676 4 667 0H58Q47 5 43 15Q47 54 60 60Q64 62 113 62H162L163 66Q163 67 231 341T301 616Q301 618 257 618",120609:"223 430Q192 430 192 448Q192 450 225 561T261 677Q265 683 270 684Q273 686 534 686Q796 686 797 685Q805 682 805 673Q805 668 804 661T800 648T798 641Q796 637 531 352L266 67L329 66H364Q412 66 446 70T523 96T596 157Q617 186 630 220T649 273T663 297Q667 299 684 299H688Q715 299 715 281Q715 278 673 145T628 8Q626 4 617 0H348Q289 0 221 0T139 -1Q112 -1 99 -1T78 1T69 5T68 12Q68 16 71 31T77 49L84 57Q91 65 104 79T133 110T170 151T213 196L610 624H540Q533 624 514 624T488 624T467 623T443 620T422 616T398 609T373 600Q292 560 255 449Q251 436 246 433T223 430",120610:"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 239 686Q290 684 403 684Q475 684 512 685T553 686Q576 686 576 668Q572 632 560 626Q555 624 506 624H457L399 389Q399 388 547 388H695L753 623Q753 624 709 624H686Q665 624 660 626T650 639Q653 678 668 684Q672 686 681 686Q685 686 726 685T847 684Q902 684 937 684T986 685T1004 686Q1027 686 1027 668Q1023 632 1011 626Q1006 624 957 624H908L839 344Q768 64 768 63T812 62H839Q871 62 871 44Q867 6 854 2L850 0L808 1Q782 2 675 2Q600 2 560 1T516 0Q499 0 494 15Q498 54 511 60Q515 62 564 62H613L614 66L679 324Q679 326 531 326H383L382 322L317 64Q317 62 361 62H388Q420 62 420 44Q416 6 403 2L399 0L357 1Q331 2 224 2Q149 2 109 1T65 0Q48 0 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624",120611:"358 -17Q218 -17 136 49T54 243Q54 298 70 356T123 474T211 582T338 663T504 702H527Q578 702 590 701Q709 688 776 622T844 441Q844 379 825 315T765 192T668 86T532 11T358 -17ZM700 474Q700 525 685 561T642 616T587 643T528 652Q390 652 301 534Q252 472 225 373T198 210Q198 160 214 125T256 71T311 44T372 36Q484 36 571 119Q639 189 669 299T700 474ZM366 428Q366 425 364 419T362 411H466L570 412L573 422Q576 437 581 441T604 445Q620 445 623 444Q636 440 636 429Q636 423 616 340T593 253Q586 243 572 243H566Q545 243 539 249Q536 251 535 253T534 258T534 263T535 270T537 277H329L326 266Q323 251 318 247T295 243Q279 243 276 244Q263 248 263 259Q263 265 283 346Q288 366 295 394Q304 431 308 438T326 445H334H338Q366 445 366 428",120612:"247 624Q242 624 233 624T220 623Q186 623 186 640Q186 647 190 664T202 684Q206 686 226 686Q277 684 393 684Q435 684 471 684T528 685T553 686Q573 686 573 670Q573 650 564 632Q556 624 537 624H501H449L380 344Q309 64 309 63T356 62Q361 62 370 62T384 63Q417 63 417 46Q417 26 408 8Q403 3 396 0L352 1Q325 2 216 2T82 1L45 0Q30 7 30 16Q33 51 46 60Q51 62 102 62H154L294 623Q294 624 247 624",120613:"536 0Q522 6 522 18Q522 35 533 57Q539 62 557 62Q595 62 601 65L472 330L365 255L342 160Q318 65 317 64Q317 62 361 62H388Q420 62 420 44Q416 6 403 2L399 0L357 1Q331 2 224 2Q149 2 109 1T65 0Q48 0 43 15Q47 54 60 60Q64 62 113 62H162L302 623Q302 624 258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 239 686Q290 684 403 684Q475 684 512 685T553 686Q576 686 576 668Q572 632 560 626Q555 624 506 624H457L422 481Q386 339 386 337L785 621Q779 624 749 624Q726 624 726 641Q726 645 730 659Q734 675 736 679T747 686L786 685Q812 684 888 684Q908 684 934 685T968 686Q1003 686 1003 669Q1003 646 991 629Q985 624 967 624Q918 624 888 617Q884 617 874 613L865 609Q864 608 732 515T599 420Q599 418 686 242T775 65Q784 62 829 62Q847 62 850 61T860 54Q862 52 862 43Q862 10 845 1Q844 1 842 1T836 0T797 1T694 2Q599 2 573 1L536 0",120614:"439 0Q425 6 425 18Q425 35 436 57Q442 62 485 62Q525 62 525 64L478 483Q478 484 465 463T422 394T350 277Q222 69 222 68Q223 67 224 67Q229 64 271 62Q290 62 297 59T305 45Q305 38 302 28Q297 9 293 5T274 0Q270 0 238 1T159 2Q133 2 105 2T72 1Q56 1 52 3T44 15Q44 19 48 35Q53 55 58 58T89 62Q142 64 151 73Q154 76 345 387T538 699Q550 711 570 711H580H592Q613 711 618 695Q619 692 654 379T690 63Q690 62 726 62H746Q776 62 776 44Q773 7 759 2Q755 0 747 0Q743 0 707 1T600 2Q502 2 476 1L439 0",120615:"258 624H231Q214 624 208 626T199 639Q203 678 216 684Q220 686 347 686H473Q474 685 478 682T484 677Q487 673 535 413L584 153L608 187Q631 221 672 281T761 410Q935 663 943 671Q949 678 962 686H1082H1166Q1201 686 1210 683T1219 668Q1215 632 1203 626Q1199 624 1149 624H1100L1031 344Q960 64 960 63T1004 62H1031Q1063 62 1063 44Q1060 7 1046 2Q1042 0 1034 0Q1030 0 990 1T875 2Q804 2 767 1T725 0H723Q707 0 703 15Q707 54 720 60Q724 62 773 62H822Q961 618 961 619L754 318Q546 15 543 12Q531 0 510 0Q500 0 495 0T484 5T477 19Q477 20 421 315L367 604L299 335Q234 72 234 68Q234 62 302 62Q334 62 334 46Q332 8 317 2Q313 0 306 0Q301 0 267 1T181 2Q125 2 96 1T63 0Q48 0 43 15Q43 19 47 35Q52 55 57 58T94 62Q147 64 164 69L233 345Q302 619 302 622Q302 624 258 624",120616:"258 624H235Q214 624 209 626T199 639Q203 678 216 684Q220 686 344 686H434Q464 686 477 680Q480 677 607 454Q738 227 739 227Q742 227 789 418T836 618Q836 620 835 620L821 622Q811 622 779 624Q755 624 749 625T740 632Q737 635 737 644Q737 656 742 669T754 685Q755 685 757 685T763 686Q768 686 803 685T890 684Q925 684 951 684T990 685T1006 686Q1014 686 1016 684Q1027 679 1027 668Q1023 632 1011 626Q1007 624 978 624Q912 622 907 617Q907 616 831 314T753 8Q749 0 723 0H712Q699 0 692 7Q692 8 671 44T607 155T526 296L361 580L296 323Q234 74 234 68T302 62H307Q334 62 334 44Q330 6 317 2L313 0L280 1Q260 2 181 2Q125 2 96 1T63 0Q48 0 43 15Q43 19 47 35Q52 55 57 58T94 62Q147 64 164 69L233 345Q302 619 302 622Q302 624 258 624",120617:"206 466Q175 466 175 484Q175 487 201 574T230 666Q235 673 241 675H547Q853 675 857 673Q867 668 867 657Q867 655 850 569T832 478Q827 466 808 466H802H795Q773 466 771 481Q771 486 775 508T779 541V549H774Q755 552 505 552Q281 551 267 548Q262 548 255 533T242 496T233 472Q228 466 206 466ZM259 255H252Q231 255 228 270Q228 275 248 355T270 439Q277 448 288 448H298Q321 448 326 440Q331 434 326 414Q326 413 486 413H647L650 424Q654 441 658 444T678 448H683H693Q702 448 705 446T714 432L694 348Q674 267 669 261Q664 255 652 255H643Q622 255 617 261Q613 265 613 272T613 283T616 289Q616 290 456 290H295L294 285Q293 280 292 275T288 265T281 257Q278 255 259 255ZM150 131Q150 124 281 123Q346 123 390 123Q640 123 664 126Q668 127 675 127Q686 131 704 198Q708 213 713 216T733 220H738Q755 220 759 218Q768 213 768 203Q768 198 741 105T710 8Q708 4 699 0H388Q77 0 73 2Q62 7 62 18Q62 27 81 115Q99 206 102 212Q106 220 120 220H129Q140 220 145 220T155 215T160 202Q160 196 159 192Q150 145 150 131",120618:"53 245Q53 297 70 356T125 478T216 590T349 671T523 703Q656 703 735 637T815 445Q815 378 791 307Q727 104 527 17Q437 -17 344 -17Q289 -17 242 -5T150 35T79 116T53 245ZM664 489Q664 575 618 611T511 648Q463 648 416 627T334 570Q297 531 270 472T230 355T213 261T208 206Q208 177 215 151T237 98T284 56T358 40Q440 40 510 98T618 270Q664 400 664 489",120619:"257 618H231Q198 618 198 636Q202 672 214 678L219 680H1011Q1022 675 1026 665Q1022 626 1009 620Q1005 618 956 618H907L906 614Q906 613 838 339T768 64Q768 62 812 62H839Q871 62 871 44Q867 6 854 2L850 0L808 1Q782 2 675 2Q600 2 560 1T516 0Q499 0 494 15Q498 54 511 60Q515 62 564 62H613L614 66Q614 67 682 341T752 616Q752 618 604 618H456L455 614Q455 613 387 339T317 64Q317 62 361 62H388Q420 62 420 44Q416 6 403 2L399 0L357 1Q331 2 224 2Q149 2 109 1T65 0Q48 0 43 15Q47 54 60 60Q64 62 113 62H162L163 66Q163 67 231 341T301 616Q301 618 257 618",120620:"162 62L302 623Q302 624 258 624H234Q214 624 209 626T200 638Q200 677 217 684Q220 686 439 686Q667 685 684 682Q686 681 693 680Q713 677 733 671T782 649T829 602T847 528Q847 450 784 382T604 293Q571 288 469 287H373L346 176Q340 151 333 122T321 78L317 64Q317 62 361 62H387Q420 62 420 44Q417 10 404 2L399 0L357 1Q331 2 224 2Q149 2 109 1T65 0Q43 0 43 17Q43 21 47 33Q52 54 57 58T89 62H113H162ZM692 558Q692 611 617 622Q610 623 529 624H452L381 343H458H492Q604 343 641 389Q662 414 677 471T692 558",120622:"847 430Q828 430 823 434T817 450Q817 454 817 466T818 487Q818 526 809 551T784 591T737 613T675 622T590 624H528H430L513 487Q594 351 596 345Q596 335 590 330Q583 323 418 204L250 81L363 80Q533 80 591 89T694 142Q739 185 765 252Q772 268 776 271T799 274Q816 274 820 272Q832 266 830 254Q829 250 784 130T736 7Q732 3 725 0H405Q84 0 80 2Q69 7 69 18Q69 26 75 32Q76 32 98 48T168 100T255 164L432 293Q429 300 329 465T225 637Q223 675 245 686H888Q900 680 902 671Q902 667 890 556T876 441Q871 430 847 430",120623:"498 62Q511 58 511 43Q511 10 494 1L490 0Q487 0 482 0T424 1T271 2Q201 2 157 2T94 1T72 0H70Q46 0 46 17Q49 54 62 60L66 62H137Q208 62 209 63L218 98Q227 134 244 203T278 339L347 613H300Q262 612 246 611T198 599T146 564Q128 545 114 512T91 454T79 425Q73 419 52 419Q22 419 22 434Q22 440 41 498T80 611L100 666Q105 673 111 675H434Q758 675 762 673Q772 668 772 657Q772 655 756 549T738 434Q735 419 711 419H707Q690 419 686 421Q677 425 677 434Q676 436 678 449T683 485T686 529Q686 553 679 569T662 594T631 607T593 612T544 613H502L433 340Q418 279 400 207T374 100L365 65L364 62H498",120624:"32 544Q32 586 91 644T229 703Q277 703 311 683T363 628T389 560T397 491V478L404 491Q455 589 526 646T677 703Q730 703 766 671T802 584Q802 551 793 541T766 531H757L736 532L732 535L729 539V549Q731 569 715 575T658 581H650Q545 581 477 443Q453 392 443 351Q441 345 424 273T389 133T371 64Q371 62 428 62H461Q483 62 492 59T501 44Q498 10 485 2L480 0L431 1Q401 2 278 2T127 1L85 0Q71 5 71 17Q71 24 74 33Q77 46 78 49T84 57T95 61T118 62H154H216Q232 126 249 193T273 287T287 345T296 388T299 416T300 452Q294 581 198 581Q154 581 132 575T106 562T99 546T86 533Q82 531 60 531L39 532Q32 537 32 544",120625:"323 624H293Q267 624 261 626T251 639Q255 678 268 684Q272 686 293 686Q348 684 475 684Q557 684 600 685T647 686H648Q671 686 671 668Q667 632 655 626Q650 624 588 624H525L500 520Q500 519 520 518T579 507T656 480Q737 440 737 372Q737 294 648 237Q562 180 426 169L412 168L399 118Q386 66 386 65L385 62H443H479Q498 62 506 59T515 44Q511 8 499 2L494 0L447 1Q417 2 298 2Q212 2 167 1T118 0Q100 0 95 15Q99 54 112 60Q116 62 179 62H241Q242 64 254 114T266 167Q266 168 262 168Q256 168 237 170T180 181T110 205T54 249T29 316Q29 391 112 446T327 516Q345 518 349 518Q351 518 353 518L355 519Q356 520 368 570T381 623Q381 624 323 624ZM342 466Q341 467 339 467Q320 467 283 455T225 420Q181 361 181 296Q181 273 193 257T222 233T254 222T277 219L280 220Q281 220 311 342T342 466ZM583 389Q583 409 576 423T557 444T533 456T509 463T492 467H486L455 343Q444 300 437 271T428 231T426 219Q430 219 445 222T483 232T521 250Q551 269 567 310T583 389",120626:"931 686Q953 686 953 670Q953 650 944 632Q936 624 924 624H914Q823 624 803 611Q800 609 696 503T591 396Q591 394 667 229L743 62H787H814Q846 62 846 44Q843 7 829 2Q825 0 817 0Q813 0 775 1T664 2Q590 2 551 1T508 0H507Q484 0 484 18Q484 19 488 37Q492 56 497 58T534 62L566 63Q567 64 520 169T471 274Q469 274 369 172T268 67L315 62Q320 62 328 62L335 61Q347 58 347 44Q344 10 331 2L326 0L287 1Q263 2 177 2Q95 2 78 1L53 0Q38 6 38 17Q38 40 50 57Q56 62 78 62Q169 62 188 75Q194 77 435 324L444 334L439 347Q437 351 373 492L313 624H268H246Q220 624 212 632Q210 636 210 642Q210 655 215 669T227 684Q230 686 247 686Q295 684 398 684Q438 684 472 684T527 685T551 686Q567 686 572 671Q572 667 568 651Q563 631 558 628T523 624T492 623H488L526 540Q563 457 564 457Q564 456 574 466T604 496T645 537L724 619Q716 622 677 624H673Q645 624 645 640Q645 660 654 678Q659 683 666 686L704 685Q728 684 813 684Q847 684 873 684T913 685T931 686",120627:"205 471Q205 445 196 403T186 333Q186 303 194 281T218 248T240 233T262 224L361 623Q361 624 303 624Q296 624 284 624T266 623Q232 623 232 641Q232 648 235 657Q240 678 244 682T268 686H273Q329 684 457 684Q502 684 540 684T599 685T626 686H628Q651 686 651 668Q649 633 631 624H505L407 227Q410 228 416 229T439 239T472 259T507 294T539 345Q549 365 563 416T597 498T649 538Q657 540 717 540Q725 540 737 540T755 541Q790 541 790 524Q790 512 784 497Q780 491 767 490T742 477Q736 471 731 463T722 449T715 433T710 419T705 403T701 389Q686 340 658 302T599 240T530 201T463 179T404 169L391 168L379 116Q365 67 365 63Q365 62 422 62H455Q477 62 486 59T495 44Q492 10 479 2L474 0L427 1Q397 2 278 2T131 1L90 0Q76 5 76 17Q76 24 79 33Q82 46 83 49T89 57T100 61T123 62H159H221Q247 162 247 168H244Q241 169 239 169Q202 176 178 182T123 207T74 252Q46 291 46 351Q46 375 52 404T59 454Q59 489 40 489Q32 489 27 494T22 507Q22 535 37 538Q40 540 99 540H128Q168 540 186 528T205 471",120628:"162 119Q181 115 235 115L273 116Q273 133 231 222T180 345Q173 368 173 391V406V414Q173 477 214 540Q255 600 315 635Q353 661 423 682T585 703Q656 703 711 690T799 656T851 608T879 555T886 503Q886 449 860 401Q840 359 810 322T725 230T643 146Q619 117 619 116T650 115Q707 115 722 120Q730 123 750 165T775 210Q779 212 796 212Q828 212 828 196Q828 191 807 144T764 52L743 7Q740 4 740 4T733 2T717 0T686 0H632H573Q535 0 526 3T517 17Q517 44 544 103T617 243T671 341Q729 454 729 535Q729 599 686 625T583 652Q549 652 517 645T450 616T388 561T344 470T327 340Q327 304 331 237T336 135Q336 93 330 50T313 2Q308 0 208 0H142Q107 0 100 4T93 25Q93 28 93 41T95 77T96 118L100 199Q105 208 109 210T131 212Q147 212 151 210T161 199V160Q161 131 162 125V119",120630:"39 166Q39 213 59 261T117 353T219 424T362 452Q420 452 466 433T536 384T573 325T586 269V265Q593 272 609 308T636 381Q640 397 644 399T669 402H680Q700 402 700 388Q700 379 691 351T659 276T604 188L593 173L595 153Q600 79 612 43H618Q634 45 642 51T653 64T658 71Q661 73 684 73Q712 73 712 59Q712 39 685 16T603 -7Q588 -7 575 -5T551 2T532 12T516 24T503 37T494 49T487 60T481 69L469 61Q362 -8 251 -8Q159 -8 99 36T39 166ZM260 43Q310 43 361 63T438 101T465 124Q458 240 453 277Q435 401 354 401Q291 401 245 355Q230 337 217 313Q201 279 186 216T170 126Q170 72 208 54Q230 43 260 43",120631:"59 -194H49Q31 -194 28 -182Q28 -178 107 139T192 473Q212 533 248 580T324 652T395 689T450 701H461Q514 701 551 688T605 652T630 607T637 561Q637 546 634 526T611 465T556 393Q572 382 590 347T608 262Q608 146 522 69T299 -8Q279 -8 261 -6T228 2T204 13T183 26T169 37T157 48L150 56L120 -64Q113 -90 104 -128Q93 -175 89 -184T73 -194H59ZM531 592Q531 651 463 651Q399 651 341 600T253 466Q250 458 217 327T182 185Q180 176 180 159Q180 108 212 76T301 44Q330 44 354 51T393 65T423 91T444 118T459 151T468 179T475 206Q490 264 491 296Q491 313 489 326T484 345L482 350Q481 350 477 348T464 344T444 340T413 335T372 333T334 334T301 340T274 355T265 380Q265 444 397 444Q425 444 445 441T476 436L485 433Q489 433 499 458Q509 482 520 527T531 592ZM424 390Q424 393 389 393Q383 393 374 393T362 392Q348 392 333 388Q345 384 379 384Q424 384 424 390",120632:"5 269Q5 285 19 312T57 368T124 421T215 451H241Q274 451 303 439T353 406T389 361T416 311T432 266T442 232L444 220L446 216L450 226Q473 278 513 357T561 441Q566 444 584 444H594Q617 444 617 430Q617 426 596 389T536 273T462 110L452 84L451 70Q447 12 427 -76T388 -192Q375 -211 355 -211Q339 -211 332 -198T325 -171Q325 -114 386 64L393 84V98Q393 181 371 241Q360 280 319 303T210 327Q158 327 126 317T84 296T68 272T59 258Q55 256 36 256Q23 256 18 256T9 260T5 269",120633:"216 610Q216 640 229 664T262 700T299 719T327 725Q330 725 406 709T487 690Q513 681 513 651Q513 627 494 607T450 587Q417 587 378 631Q346 663 314 663Q286 663 272 639Q271 637 271 634Q271 609 344 536L397 484Q438 448 458 410T478 313Q478 234 443 147T338 18Q298 -8 249 -8Q214 -8 180 0T113 26T60 81T39 168Q39 200 50 237T87 316T160 391T272 442L260 465Q216 553 216 610ZM348 235Q348 274 336 313T310 372L298 392Q295 391 290 390T269 380T241 359T212 323T185 267Q157 168 157 130Q157 83 186 63T255 43Q280 43 300 67Q317 89 332 138T348 235",120634:"224 -17Q126 -17 81 22T36 112Q36 178 84 226L93 236L88 246Q79 264 79 289Q79 341 124 388Q201 461 333 461Q402 461 455 425Q480 409 481 390Q481 365 464 350T428 334Q415 334 387 352T313 370Q141 370 141 293Q141 275 146 270Q147 270 148 270T155 272Q202 291 263 291H270Q349 291 349 244Q349 195 281 183Q274 182 239 182Q201 182 184 185T137 200Q123 188 112 168T100 129T112 98T148 81T189 75T237 74H243H251Q288 74 310 75T359 86T398 112Q405 124 417 124Q426 124 432 117T439 100Q439 88 427 70T390 32T322 -3T224 -17ZM286 238Q286 240 253 240Q245 240 234 239T216 237T209 235Q209 232 250 232Q286 232 286 238",120635:"361 711Q373 711 381 703T389 683Q389 681 388 676T383 656T376 618V612H379Q385 618 429 618Q521 618 521 572Q521 551 506 534Q483 510 415 507Q385 507 371 511T336 536L326 528Q254 472 204 381T154 209Q154 190 157 177Q159 165 162 154T170 135T182 119T195 106T212 95T229 86T249 78T269 72T290 66T311 60Q385 37 388 36Q437 14 454 -36Q456 -46 456 -64Q456 -83 455 -90Q445 -132 413 -167T333 -202Q300 -202 257 -191T206 -169Q203 -164 203 -158Q203 -148 210 -140T231 -130Q239 -130 263 -139T326 -151H329Q337 -151 342 -150T352 -143T357 -123Q356 -117 355 -113T350 -104T344 -96T335 -90T324 -85T310 -80T294 -74T275 -68T254 -62Q253 -62 231 -56T205 -48T179 -39T150 -26T125 -10T100 11T80 37T62 70T53 109T48 157Q48 281 123 396T317 586V612Q319 638 320 649T325 678T338 703T361 711ZM454 564Q445 567 424 567Q407 567 398 565T387 563Q387 558 411 558Q434 558 450 562L454 564",120636:"24 296Q25 302 27 312T41 350T65 397T103 435T157 452Q202 452 233 435Q267 419 284 384L294 392Q304 401 316 410T348 429T388 445Q410 451 445 451H453Q468 451 482 450T519 443T558 425T587 391T600 337V327Q600 311 538 64Q484 -158 478 -168Q457 -211 409 -211Q386 -211 372 -197T357 -161Q357 -158 415 80Q476 330 477 348Q477 366 473 377T461 393T448 399T432 400H427Q379 400 335 363Q300 332 280 298Q277 293 246 170T213 40Q205 22 186 7T142 -8T103 7T89 39Q89 49 106 117T142 260T164 351Q166 363 166 372Q166 402 148 402Q126 402 110 369Q100 350 90 310Q85 289 82 286T60 282H55H44Q24 282 24 296",120637:"213 -8Q130 -8 85 50T40 200V207Q40 303 83 428Q122 535 189 608Q279 702 381 702Q410 702 437 693T492 661T537 593T554 486Q554 428 539 362T495 230T425 111T330 25T213 -8ZM433 562Q433 600 419 625T377 651Q363 651 348 644T311 619T268 557T229 453Q225 441 217 411T208 378H401Q433 500 433 562ZM161 140Q161 43 217 43Q249 43 280 74Q310 103 332 150T378 287Q385 313 385 315Q385 316 289 316H192Q191 308 183 275T169 205T161 140",120638:"161 -8Q111 -8 75 16T38 85Q38 95 48 121T80 214T123 368L124 374Q126 381 127 386T132 399T139 414T149 428T162 440T180 448T203 452Q226 452 241 439T257 404Q257 386 230 290T171 111Q157 73 157 57Q157 43 166 43Q209 43 258 69T322 144Q326 157 330 159T348 162H355H366Q386 162 386 148Q386 143 383 132T367 100T335 61Q301 27 253 10T161 -8",120639:"258 405Q258 394 251 364T237 308T230 281T238 284T270 306T330 349Q365 377 389 394T450 427T519 444Q545 444 559 430T574 391Q574 360 551 336T491 312Q469 312 454 326T439 364Q439 372 438 372Q433 372 395 344T320 289T283 260H285Q287 260 290 260T297 259Q495 248 495 146Q495 132 491 110T486 74Q486 43 505 43Q520 43 531 53Q559 72 578 141Q582 157 586 159T611 162H622Q642 162 642 148T627 100T578 29T504 -7H495Q435 -7 399 22T363 96Q363 111 366 122T369 142Q369 155 364 165T347 182T326 193T298 200T269 204T238 207T212 210L211 206L190 123L169 40Q161 22 142 7T98 -8T59 7T45 39Q45 48 67 139T112 317L134 404Q142 424 161 438T204 452Q226 452 242 440T258 405",120640:"95 -13Q70 -13 55 4T40 41Q40 65 61 88Q65 92 210 207T357 322L235 602Q217 640 185 643Q182 643 178 644T173 645Q161 651 161 666Q161 677 167 684T181 692Q189 694 212 694Q335 694 358 660Q362 653 500 340T647 18Q652 10 652 6Q652 -8 622 -8H589H538L526 -5Q506 1 500 8Q494 16 444 128Q442 133 440 138L387 259L265 134Q156 20 137 4T95 -13",120641:"294 -8Q265 -8 244 -5T213 1T201 4Q200 4 192 -32T172 -111T155 -168Q134 -211 86 -211Q62 -211 48 -196T34 -158Q37 -144 103 123T174 404Q182 424 201 438T244 452Q271 452 284 436T298 404Q298 392 267 269T235 114Q235 43 305 43Q342 43 375 68T418 110Q420 112 455 253T492 397Q514 444 562 444Q587 444 601 429T615 397Q615 387 599 320T563 178T542 93Q540 81 540 72Q540 42 558 42Q580 42 596 75Q606 94 616 134Q621 155 624 158T646 162H651H662Q682 162 682 148Q681 142 679 132T665 94T641 47T602 9T548 -8Q523 -8 502 -3T468 11T446 27T432 40L429 46Q367 -8 294 -8",120642:"88 382Q70 382 65 385T59 402T64 427T78 443Q79 444 157 448T247 452Q256 452 261 448T266 440L267 437Q267 432 223 252L177 71L192 77Q293 117 371 199T480 388Q489 424 511 438T556 452Q579 452 593 438T608 402Q608 378 593 340T540 251T446 152T299 62T96 -1Q91 -2 78 -2Q38 -2 38 15Q38 22 82 198L127 379Q124 382 88 382",120643:"287 648Q291 671 293 680T305 700T329 711Q339 711 347 705T356 687Q356 680 351 653T345 619Q345 615 346 615Q358 618 398 618Q490 618 490 572Q490 553 476 536T434 512Q411 508 378 508H366Q332 508 306 534L298 525Q271 496 254 456T237 375Q237 336 244 336Q272 346 319 346H325Q354 346 372 344T406 331T422 300Q422 252 350 238Q332 236 303 236Q286 236 269 238T240 242T218 247T202 252L196 254Q191 254 174 237T141 191T124 139Q124 108 151 92T267 46Q285 40 295 37Q308 33 332 25T366 13T392 3T415 -8T432 -20T445 -36T451 -55T454 -80Q454 -118 427 -153T358 -199Q349 -201 327 -201Q313 -201 298 -200T271 -196T246 -191T226 -185T210 -180T200 -176L196 -174Q187 -170 187 -158T196 -138T216 -130Q217 -130 254 -140T329 -151Q349 -151 349 -135Q349 -127 340 -122T293 -104Q260 -93 238 -85Q130 -48 115 -41Q71 -19 47 15T23 88Q23 126 48 179T130 277L144 288L136 297Q99 336 99 390Q99 456 148 514T285 602V619Q285 624 286 635T287 648ZM355 563Q362 560 376 558Q424 558 423 564Q405 567 390 567Q369 567 355 563ZM279 292Q297 287 315 287Q355 287 355 293Q355 296 321 296Q316 296 308 296L301 295Q295 295 289 294L279 292",120644:"254 -8Q191 -8 146 9T80 54T49 111T39 169Q39 206 53 247T96 329T176 402T292 446Q317 451 336 451L344 452Q353 452 359 452Q457 452 516 408T576 279Q576 169 488 81T254 -8ZM349 400Q321 400 287 385T231 338Q206 301 188 228T170 126Q170 99 178 83Q198 44 260 44Q367 44 409 157Q419 185 432 238T445 317Q445 336 443 348Q435 372 416 384T384 398T349 400",120645:"55 289H43Q23 289 23 303Q23 308 33 322Q116 434 199 443Q200 444 418 444Q591 444 617 444T652 439Q674 426 674 400Q674 378 661 360T625 335Q621 334 549 333H479L477 321Q476 312 476 279Q476 219 491 174T521 104T536 65Q536 38 511 15T457 -8Q403 -8 386 94Q384 110 384 139Q384 181 391 229T406 304L413 331Q413 333 365 333H316L315 329Q315 328 312 314T301 272T288 220Q274 167 258 103Q244 49 240 38T228 18Q225 16 224 14Q200 -8 172 -8Q146 -8 132 7T118 44Q118 54 121 61Q122 65 142 102T190 195T235 293Q250 329 250 333Q177 333 166 332Q115 328 88 301L77 290L55 289",120646:"307 -8Q277 -8 251 0T215 14L205 20Q203 18 193 -25T171 -114T155 -168Q134 -211 87 -211Q64 -211 49 -198T34 -162Q34 -158 137 254Q153 299 179 334T232 390T277 419T311 434Q357 451 403 451Q435 451 455 449T506 435T560 400Q603 357 603 285Q603 172 520 82T307 -8ZM474 343Q474 364 458 382T409 400H406Q339 400 299 341Q281 313 264 257Q261 248 242 170T222 89Q222 84 230 74T260 54T308 43Q334 43 365 57T417 110Q437 145 456 228Q474 298 474 332V343",120647:"33 209Q33 277 80 334T195 421T330 451H344Q410 451 439 429Q457 417 457 402Q457 386 445 375T420 363Q415 363 406 368T383 383T354 398Q347 400 330 400Q256 400 196 361T135 265V257Q135 242 147 225T174 199L358 107Q400 77 400 28T362 -63T271 -105Q254 -105 229 -99T195 -86Q188 -82 188 -71Q188 -56 197 -50T216 -44Q225 -44 237 -48T270 -53H282Q293 -44 293 -31Q293 -19 283 -10Q278 -4 200 33T115 76Q77 98 55 133T33 209",120648:"35 151Q35 190 51 236T99 327T184 404T306 443Q307 443 316 443T342 443T378 444T425 444T476 444Q606 444 626 444T655 439Q677 426 677 400Q677 358 639 340Q625 333 563 333Q510 333 510 331Q518 319 518 272Q518 155 437 74T226 -8Q123 -8 79 41T35 151ZM396 278Q396 314 375 323T305 332Q249 332 222 310T180 243Q171 219 162 178T153 116V110Q153 43 234 43Q347 43 382 199Q383 203 383 204Q396 255 396 278",120649:"55 289H43Q23 289 23 303Q23 308 33 322Q116 434 199 443Q200 444 386 444Q571 444 577 442Q588 441 599 432T610 402Q610 359 572 340Q561 335 547 334T452 333H353V331Q352 330 342 261T320 119T306 40Q300 18 281 3Q257 -13 233 -13Q210 -13 196 0T181 35Q181 44 182 48Q183 53 229 187T279 331Q279 333 228 333H209Q163 333 136 328T88 301L77 290L55 289",120650:"189 388Q189 396 187 398T176 401Q144 399 122 369T89 304Q84 288 81 285T61 282H55H44Q24 282 24 296Q24 306 34 330T64 382T116 431T188 452Q232 452 270 430T308 361Q308 345 275 258T241 123Q241 44 336 44H344Q380 44 415 73T474 140T511 214T526 267Q526 280 513 292Q505 301 486 311T456 333T444 367Q444 400 471 426T529 453Q555 453 579 431T604 358Q604 327 592 271T557 172Q550 157 541 142T510 97T464 47T404 9T328 -8Q264 -8 219 5T154 41T125 85T117 131Q117 182 153 277T189 388",120651:"238 4Q230 5 218 8T174 26T118 58T73 112T53 190Q53 219 60 246Q77 313 103 362T143 426T163 443Q165 444 186 444Q217 444 217 432Q217 425 188 392Q157 351 137 291T116 206Q116 127 263 109L276 107L288 139Q347 304 414 378T566 452Q621 449 662 412T703 286Q698 167 598 82T357 -8H332V-11Q332 -12 327 -46T317 -116T310 -157Q306 -180 286 -198T234 -216Q211 -216 197 -203T183 -168Q183 -160 184 -155Q184 -152 198 -112T225 -34T238 4ZM637 260Q637 303 607 322T541 341Q502 341 466 319T405 264Q368 218 356 159Q348 111 348 104Q348 103 361 103Q502 103 569 152T637 260",120652:"58 -194Q32 -194 32 -164Q32 -153 46 -139L175 -13Q296 104 296 106Q271 232 226 308Q165 401 141 401Q128 401 117 390T100 365Q94 350 91 349T69 346H45Q35 348 35 359Q35 380 62 411T133 450Q143 452 165 452Q286 452 329 402Q347 379 366 333T394 254T404 215Q404 213 405 213Q405 212 420 227T463 268T520 324Q637 437 640 438Q647 444 661 444Q667 444 676 438T685 419Q685 405 670 389T549 271L420 145Q433 85 444 53Q466 -25 509 -88T575 -151Q590 -151 600 -140T617 -114T626 -98Q629 -96 650 -96H655Q681 -96 681 -108Q681 -114 679 -119Q670 -148 646 -169T591 -199Q581 -201 550 -201Q422 -201 381 -143Q345 -88 316 20L311 39L230 -40Q144 -126 114 -153Q85 -182 77 -188T58 -194",120653:"244 141Q244 117 254 98T277 70T305 55T329 48T342 47L344 48L424 366Q501 678 505 686Q508 691 512 692T533 694T555 693T562 688T565 683Q565 678 486 362T406 45Q406 43 415 43Q467 49 514 78T590 143T636 213T653 266Q653 282 641 293T613 311T585 332T572 367Q572 397 598 425T657 453Q684 453 708 430T732 358Q732 330 723 287T706 225Q671 124 578 58T401 -8H393L370 -101Q346 -196 345 -197Q340 -202 316 -202H306Q286 -202 286 -188Q286 -187 296 -144T318 -57T331 -8Q331 -6 328 -6Q290 -6 233 11T148 62Q119 97 119 146Q119 181 154 275T190 388Q190 401 181 401Q154 401 129 375T90 306Q85 288 81 285T61 282H55H44Q24 282 24 296Q24 306 34 329T64 381T116 431T189 452Q237 452 273 428T309 362Q309 343 277 260T244 141",120654:"532 367Q532 399 559 426T618 453Q645 453 668 430T691 357Q691 319 677 261T649 171Q640 149 626 125T586 68T521 14T438 -7Q401 -7 372 7T333 30T311 57Q246 -8 165 -8Q119 -8 82 19T30 102Q24 126 24 163V178Q24 210 37 255Q61 346 118 424Q141 451 161 451Q174 451 184 443T194 419Q194 402 179 387Q91 273 91 206Q91 159 122 138T189 117T281 145V173Q283 223 294 253Q304 276 323 289T364 303Q386 303 400 287T415 250Q415 219 385 157L378 144Q378 142 388 136T419 124T462 117Q522 117 566 165T610 255Q610 288 561 320Q532 337 532 367",120655:"230 475Q202 475 189 492T175 526T186 570T221 631T288 687T389 710Q430 710 438 709Q495 701 537 679T601 629T637 568T653 509T657 459Q657 409 640 341Q617 248 581 180T507 75T424 16T348 -11T282 -17Q171 -17 113 37Q60 88 60 159Q60 192 71 231Q96 336 184 402Q264 462 366 462Q407 462 439 448T497 389L502 380Q503 381 508 403T519 463T525 531Q523 580 499 610T447 648T387 657Q324 657 283 616Q271 604 276 604Q279 604 286 600T302 583T311 555Q311 523 287 499T230 475ZM196 110Q196 41 287 41Q351 41 398 88Q422 111 437 151Q473 243 473 298Q473 386 409 409Q408 409 383 411Q316 411 278 373Q265 360 259 351T241 311T217 226Q196 143 196 110",120656:"415 89Q423 89 429 74T436 46Q436 43 434 39Q432 36 420 29T380 11T322 -5Q311 -7 281 -7Q216 -7 168 10T94 54T56 110T44 167V181Q44 262 94 329Q104 343 119 357T162 391T234 425T327 443Q328 443 348 443T383 444Q434 444 442 438Q450 430 450 416Q446 392 424 383L376 382Q306 381 278 369Q230 349 208 294Q199 274 199 268Q199 267 291 267Q305 267 325 267T353 268Q383 268 394 263T406 241Q406 214 380 206Q375 205 279 205T183 203Q174 176 174 140Q174 87 208 65T292 43Q295 43 300 43T307 44Q337 49 372 69T415 89",120657:"114 132Q114 153 140 253T166 372Q166 402 148 402Q126 402 110 369Q100 350 90 310Q85 289 82 286T60 282H55H44Q24 282 24 296Q25 302 27 312T41 350T65 397T104 435T158 452Q184 452 211 445T263 414T288 354V339L265 245Q237 134 237 118V107V102Q237 87 239 77T257 56T300 43Q395 43 455 254Q479 346 479 347L460 354Q294 408 294 528Q294 606 350 653T464 701Q536 701 579 659Q634 601 634 491Q634 468 630 438T623 388L620 370Q624 370 631 369T647 364T656 352Q656 347 653 335Q647 317 642 316Q640 315 637 315Q635 315 619 317Q606 319 605 316Q605 315 603 308Q587 248 550 177T457 57Q379 -8 293 -8Q192 -8 153 23T114 116V132ZM519 566Q519 600 507 625T464 651Q425 651 391 617T356 529Q356 501 370 478T404 441T443 417T477 404L491 400Q493 400 499 428T512 497T519 566",120658:"228 325Q170 322 156 316T127 309Q108 309 104 314Q99 319 99 322T108 341Q125 376 171 400T268 425H271Q302 425 319 396Q328 377 328 358Q328 332 324 314Q311 270 286 221Q274 194 274 192H275Q339 234 484 325T639 421Q669 434 691 434T723 425T734 406Q734 394 719 381Q715 376 644 330L575 287L566 267Q543 233 526 176Q520 160 515 143T508 115T506 105Q506 103 533 103Q585 103 607 110T641 118Q670 118 670 107Q670 100 661 85Q643 50 598 27T504 3Q465 3 450 36Q441 51 441 73Q441 84 444 96Q452 146 484 205L497 236L324 125Q143 12 135 10Q103 -6 77 -6Q61 -6 49 2T37 21Q37 36 49 46T124 96L195 141L204 156Q219 179 243 248T264 323Q264 325 228 325",120659:"274 -7Q232 -4 195 7T125 38T71 94T51 176V190Q51 213 60 242T95 307T156 373T255 425T393 451L397 452L427 568Q434 597 443 636Q452 677 456 685T472 694H486H495Q517 694 517 680L514 665Q510 650 503 621T489 564L460 451H469Q527 447 574 430T657 370T693 266Q693 163 599 82T350 -7H346L322 -100Q301 -190 295 -197Q291 -202 283 -202H269H258Q238 -202 238 -188Q238 -186 260 -96L283 -7H274ZM449 400Q448 400 404 225T359 47T366 45Q464 55 516 119Q542 149 558 199T575 295Q575 387 462 398L449 400ZM384 398Q384 399 381 399Q350 399 298 378T214 308Q168 236 168 149Q168 68 259 49Q282 44 294 44H295L384 398",120660:"371 -168Q357 -168 323 -171T245 -175Q143 -175 109 -150T75 -66Q75 -5 100 108T137 254Q153 299 179 334T232 390T277 419T311 434Q357 451 403 451Q435 451 455 449T506 435T560 400Q603 357 603 282Q603 213 569 148T465 38T304 -8Q273 -8 247 -2T204 14T176 31T159 46T152 53Q152 52 148 27T144 -16Q144 -36 150 -44T189 -58T293 -64Q405 -65 432 -75Q466 -88 466 -127Q466 -140 459 -172Q455 -188 451 -191T426 -194H420Q405 -194 400 -191T395 -176Q396 -170 394 -169T378 -168Q373 -168 371 -168ZM236 116Q236 77 258 60T311 43Q369 43 407 94Q429 123 451 206T474 331Q474 400 409 400H406Q339 400 299 341Q276 305 256 227T236 116",120661:"55 289H43Q23 289 23 303Q23 308 33 322Q116 434 199 443Q200 444 562 444Q922 444 928 442Q961 434 961 400Q961 376 944 355T886 333H870Q872 322 872 295V279Q872 230 842 165T751 46T618 -8Q581 -8 554 6T513 45T494 84T484 119Q484 121 478 114Q477 113 476 111Q384 -7 268 -7H265Q251 -7 237 -4T199 11T162 54T147 132Q147 149 149 166T155 198T165 229T176 256T189 281T200 301T211 319T220 333H199Q120 333 88 301L77 290L55 289ZM639 103Q674 103 712 122T780 188T811 295Q811 318 808 330V333H289Q274 318 244 263T214 169Q214 133 236 118T288 103Q351 103 412 153T494 278Q497 290 502 292T529 295Q546 295 551 293T556 283Q556 281 553 260T550 218Q550 153 576 128T639 103",120662:"110 0H86Q42 0 42 27Q42 37 148 350T258 667Q269 687 291 692Q295 694 366 694H399Q432 694 448 689T474 667Q477 663 583 350T690 27Q690 0 642 0H617H592Q582 0 575 1T561 2T549 6T541 11T533 18T527 26T522 37T517 49T512 64T506 81L490 130H225Q225 128 208 79T189 27Q185 19 180 14T170 7T156 3T143 1T127 0T110 0ZM439 279Q359 524 359 547L357 555L355 543Q347 503 270 263L259 231H357Q455 231 455 232L439 279",120663:"119 1Q98 5 92 28V667Q98 686 118 693Q121 694 272 694H289H346Q439 694 500 681T600 625Q640 580 640 513Q640 451 601 414T504 364L518 361Q568 351 602 329T649 280T666 235T671 197Q671 172 665 147T642 91T586 37T488 5Q456 1 282 1H119ZM489 509Q489 532 479 548T450 573T421 585T394 591Q387 592 315 593H247V404H298H325Q432 404 466 444Q489 470 489 509ZM517 194Q517 235 502 261T458 299T407 313T353 317H329H322H247V101H319H357Q387 101 407 103T452 111T492 133T514 171Q516 176 517 194",120664:"92 664Q98 683 118 690Q121 691 312 691T508 689Q534 682 534 644V632V618Q534 582 508 573L502 572Q496 572 489 572Q486 572 463 572T416 573Q333 573 291 575H253V303Q253 31 251 25Q242 0 199 0H170L119 1Q99 7 92 28V664",120665:"381 692Q386 694 458 694Q516 694 527 693T549 687Q564 680 575 663Q576 658 715 349T856 27Q856 6 838 1H826Q815 1 795 1T747 1T686 1T616 0T539 0T458 0T378 0T300 0T230 0T169 1T122 1T90 1H78Q60 6 60 27Q62 38 201 349T341 663Q356 687 381 692ZM627 148Q626 149 581 250T492 453L447 554Q447 553 446 552Q444 546 326 278L268 148Q268 147 448 147Q627 147 627 148",120666:"277 122Q280 122 380 123T544 125Q552 125 557 125T565 124T569 124Q595 115 595 75V62V47Q595 9 569 2Q564 0 341 0L119 1Q99 7 92 28V664Q98 683 118 690Q121 691 335 691T554 689Q580 682 580 644V632V618Q580 582 554 573Q553 573 551 573T542 572T527 572Q464 572 364 573T260 575H253V412H385H459Q524 412 536 404T549 357Q549 341 549 334T542 318T523 305Q518 303 385 303H253V122H277",120667:"411 584Q243 581 131 581Q122 581 116 581T106 582T102 582Q84 589 80 600T76 640L77 667Q83 686 103 693Q106 694 343 694Q579 694 584 692Q592 691 599 684T609 668Q610 665 610 646Q610 614 608 608Q605 603 434 361L261 116Q340 117 402 118T490 119T533 120T560 120H572Q605 120 614 95Q616 89 616 60V46Q616 9 590 2Q585 0 339 0Q92 0 87 2Q79 3 72 10T62 26Q61 29 61 49Q61 84 63 90Q65 94 152 217T325 461T411 584",120668:"92 667Q101 694 143 694H172H198Q244 694 251 669Q253 663 253 539V415H540V539Q540 558 540 585T539 621Q539 673 550 683T611 694H621H646Q671 694 683 690T700 669Q702 663 702 347T700 25Q696 9 684 5T646 0H621H606Q560 0 550 11T539 76Q539 85 539 116T540 169V306H253V169Q253 147 253 116T254 75Q254 23 245 12T194 0H170L119 1Q99 7 92 28V667",120669:"62 340Q62 716 425 716Q511 716 576 696T681 642T747 559T783 458T793 341Q793 264 777 203T721 89T608 7T428 -22Q62 -22 62 340ZM638 333Q638 365 637 387T632 441T621 495T600 542T567 583T518 611T451 628Q443 629 427 629Q402 629 378 624T327 608T276 571T240 511Q217 453 217 345Q217 254 231 204T279 120Q333 69 428 69Q522 69 576 120Q638 183 638 333ZM279 349V373Q279 413 305 420Q309 422 427 422H487Q550 422 563 414T576 369V349Q576 345 576 337T577 324Q577 284 550 277Q545 275 428 275H369Q306 275 293 283T279 329V349",120670:"85 667Q94 694 136 694H165H191Q237 694 244 669Q246 663 246 347T244 25Q235 0 192 0H163L112 1Q92 7 85 28V667",120671:"92 667Q101 694 139 694H163H186Q225 694 234 671Q236 663 236 529L237 392L533 682Q550 694 590 694H623H681Q695 680 695 672Q695 670 693 664Q688 657 561 533L431 405L698 33Q701 28 701 23Q701 7 683 0H626H604Q571 0 564 2T545 13Q544 14 530 33T489 90T437 162L332 307Q331 307 284 260L236 214V122V65Q236 32 231 19T210 2Q205 0 161 0L119 1Q99 7 92 28V667",120672:"106 0H83Q41 0 41 28Q41 39 133 349T229 667Q242 694 296 694H335H375Q403 694 418 689T442 667Q445 660 537 350T630 28Q630 11 619 6T584 0H555H526Q478 0 465 27Q462 32 431 136T366 372T325 555V546Q320 503 287 376T222 141T186 27Q184 22 177 15T165 6Q154 0 106 0",120673:"92 667Q98 684 109 689T146 695Q152 695 167 695T192 694Q200 694 214 694T234 695Q291 695 305 664Q313 651 400 419T487 165Q487 162 488 162T489 165Q489 187 574 413T671 664Q679 680 695 688Q708 694 785 694H828Q855 694 867 689T884 669Q886 663 886 347T884 25Q876 0 832 0H817H802Q758 0 750 25Q748 31 748 293V555L746 544Q737 509 692 386T606 160T564 52Q548 22 502 22H487H472Q423 22 410 52Q407 59 367 160T283 385T231 546L230 548Q229 548 229 293Q229 31 227 25Q222 9 211 5T176 0H158L119 1Q99 7 92 28V667",120674:"92 667Q98 684 109 689T146 694H185Q273 694 279 692Q301 689 315 669Q322 660 419 453L554 163L562 143Q564 143 564 401Q564 663 566 669Q574 694 618 694H633H648Q692 694 700 669Q702 663 702 347T700 25Q696 10 683 5T642 0H596H551Q520 0 505 4T478 25Q471 34 374 241L239 532Q231 550 231 552L229 479Q229 440 229 293Q229 31 227 25Q222 9 211 5T176 0H158L119 1Q99 7 92 28V667",120675:"627 553Q609 553 512 554T366 555Q316 555 220 554T105 553Q96 553 90 553T82 554T78 554Q61 560 57 571T52 605V623L53 661Q59 680 79 687Q82 688 366 688Q649 688 654 686Q680 679 680 639V621V603Q680 563 654 554Q653 554 651 554T642 554T627 553ZM149 423Q152 424 366 424Q579 424 584 422Q610 415 610 376V358V340Q610 300 584 293Q579 291 366 291H232Q162 291 150 293T129 306Q122 315 122 360L123 397Q129 416 149 423ZM108 135Q143 135 226 134T363 133Q407 133 507 134T632 135H645Q675 135 684 110Q686 104 686 68V49Q686 9 660 2Q655 0 364 0L74 1Q57 7 49 21L47 28L46 65V83Q46 126 72 133Q80 135 108 135",120676:"362 715Q364 715 376 715T394 716H400Q542 716 626 643T727 426Q731 395 731 342Q731 271 722 225Q674 -22 396 -22Q320 -22 259 -3T148 68T77 201Q62 257 62 342Q62 447 86 522T173 649Q245 707 362 715ZM568 433Q551 623 396 623Q383 623 370 622T333 612T292 591T257 550T233 485Q223 442 223 350Q223 276 232 227T267 137Q309 74 397 74Q433 74 461 85T507 113T537 156T556 205T566 260T569 310T570 357Q570 409 568 433",120677:"92 664Q98 683 118 690Q121 691 396 691T676 689Q695 684 700 666Q702 660 702 345Q702 31 700 25Q696 9 684 5T646 0H621H596Q571 0 559 4T542 25Q540 31 540 307V582H253V307Q253 31 251 25Q242 0 199 0H170L119 1Q99 7 92 28V664",120678:"641 470Q641 426 630 391T603 334T561 295T513 271T459 259T408 254T361 253H350H337H253V142Q253 125 253 100T254 67Q254 32 249 19T227 2Q222 0 170 0L119 1Q99 7 92 28V667Q98 686 118 693Q121 694 271 694Q428 693 462 688Q641 656 641 470ZM487 467Q487 495 485 510T474 546T442 578T382 592Q375 593 310 593H250V347H309H339Q364 347 380 348T418 354T451 368T474 395T486 438Q487 444 487 467",120680:"322 124Q326 124 457 125T672 127H689Q721 127 730 102Q732 96 732 64V48Q732 9 706 2Q701 0 394 0L89 1Q76 5 69 13T62 29V36Q62 37 62 38Q62 47 70 58T126 126Q161 167 185 196Q302 335 302 336L187 463Q74 584 68 594Q61 603 61 639L62 667Q68 686 88 693Q91 694 396 694T706 692Q732 686 732 647V635V621Q732 585 706 576Q705 576 702 576T691 576T670 575L302 578Q302 577 394 475T490 371Q498 362 498 347Q498 336 488 323T408 226L322 124",120681:"67 687Q70 688 366 688Q661 688 666 686Q692 680 692 641V629V615Q692 579 666 570H660Q655 569 648 569Q645 569 624 569T581 570Q505 570 475 572H447V302Q447 31 445 25Q436 0 393 0H364L313 1Q293 7 286 28L285 300V572H257Q227 570 151 570Q130 570 109 570T84 569Q77 569 72 570H66Q48 577 44 588T40 631L41 661Q47 680 67 687",120682:"62 560Q62 607 94 644T169 698T253 715Q273 715 286 713T322 704T363 677T398 625Q413 597 423 556L428 540Q429 541 436 566T454 620T494 677T561 713Q570 715 593 715Q682 715 737 668T793 560Q793 549 793 545T786 533T767 520H670Q646 532 644 551T632 579Q618 594 591 594Q539 594 524 530T509 321V216Q509 31 507 25Q498 0 455 0H426L375 1Q355 7 348 28L347 232Q346 344 346 441Q346 442 343 468T335 521T312 571T266 594Q252 594 247 593Q228 586 220 576T212 557T209 539T191 523L185 520H88Q75 527 69 534T63 545T62 560",120683:"62 292T62 347T80 445T124 511T183 552T243 574T292 584L315 587H319V627L320 667Q329 694 370 694H397H422Q466 694 473 669Q475 663 475 625V587H478Q479 587 500 584T548 575T608 553T668 513T713 446T732 347Q732 253 674 187Q655 167 628 152T576 128T530 116T493 109L478 107H475V69V50Q475 9 449 2Q444 0 395 0L347 1Q327 7 320 28L319 67V107H315L292 110Q269 114 243 119T184 142T124 182T80 249ZM319 197T319 347T318 497Q316 497 307 494T284 485T262 471Q220 438 220 347Q220 285 239 249Q248 234 261 223T286 208T308 200L317 197Q319 197 319 347ZM572 347V357Q572 387 569 407T548 452T496 491Q495 491 494 491T487 493T475 497V197Q518 210 541 232T571 303Q572 312 572 347",120684:"52 1Q37 11 37 23Q37 26 39 32Q39 34 158 202L275 369Q275 370 221 441T112 586T55 663Q53 669 53 672Q53 687 68 693H72Q77 693 84 693T99 694T118 694T139 694H176Q203 694 212 692T230 682Q231 681 239 669T265 634T296 591L358 504L418 591Q481 682 486 686Q491 691 499 692Q505 694 569 694H632Q650 685 650 672Q650 667 646 660Q643 654 592 582T491 440T441 369T566 201T693 29Q694 27 694 23Q694 11 677 0H607L537 1Q523 6 519 10T437 131Q422 153 411 170T390 200T375 222T365 237T359 245L357 247L348 232Q339 218 319 188T283 131Q222 37 211 22T186 1H52",120685:"61 585Q62 594 62 597T64 606T73 616T89 626H138Q196 626 208 620Q243 602 253 546T261 431T271 309T325 219Q342 205 349 205Q350 205 350 436L351 667Q360 694 401 694H428H454Q495 694 504 671Q506 663 506 436L507 205Q542 222 561 251T586 318T593 392T595 472T602 546Q614 614 661 625Q665 626 708 626H730Q766 626 780 618T794 582Q794 548 768 540Q755 538 754 501T750 410T736 298T680 191T560 120Q550 116 512 109H506V70V50Q506 9 480 2Q475 0 426 0L378 1Q358 7 351 28L350 68V109L335 111Q298 117 267 129T214 156T175 191T146 229T127 272T115 314T109 357T106 395T105 429Q104 537 87 540Q66 548 63 565Q61 570 61 585",120686:"241 122Q225 154 191 199T131 278T83 363T61 464Q61 497 68 527T94 591T145 650T228 693T349 715Q354 715 370 715T396 716Q539 716 622 668Q658 647 682 617T715 556T728 505T732 465Q732 415 711 365T663 280T602 200T552 122H632Q649 122 669 122T693 123H697Q736 123 742 98Q744 92 744 62V47Q744 9 718 2Q713 0 591 0L471 1Q454 7 446 21Q444 27 444 45Q444 96 463 154T506 257T549 360T569 469Q569 504 563 530T538 580T485 616T396 629Q313 629 268 594T223 468Q223 419 243 361T286 258T330 152T350 41Q350 14 335 7T276 -1Q267 -1 241 -1T197 0L77 1Q57 7 50 28L49 59V74Q49 114 75 121Q81 123 100 123Q104 123 124 123T161 122H241",120782:"266 654H280H282Q500 654 524 418Q529 370 529 320Q529 125 456 52Q397 -10 287 -10Q110 -10 63 154Q45 212 45 316Q45 504 113 585Q140 618 185 636T266 654ZM374 548Q347 604 286 604Q247 604 218 575Q197 552 193 511T188 311Q188 159 196 116Q202 87 225 64T287 41Q339 41 367 87Q379 107 382 152T386 329Q386 518 374 548",120783:"481 0L294 3Q136 3 109 0H96V62H227V304Q227 546 225 546Q169 529 97 529H80V591H97Q231 591 308 647L319 655H333Q355 655 359 644Q361 640 361 351V62H494V0H481",120784:"175 580Q175 578 185 572T205 551T215 510Q215 467 191 449T137 430Q107 430 83 448T58 511Q58 558 91 592T168 640T259 654Q328 654 383 637Q451 610 484 563T517 459Q517 401 482 360T368 262Q340 243 265 184L210 140H274Q416 140 429 145Q439 148 447 186T455 237H517V233Q516 230 501 119Q489 9 486 4V0H57V25Q57 51 58 54Q60 57 109 106T215 214T288 291Q364 377 364 458Q364 515 328 553T231 592Q214 592 201 589T181 584T175 580",120785:"80 503Q80 565 133 610T274 655Q366 655 421 623T491 538Q493 528 493 510Q493 446 453 407T361 348L376 344Q452 324 489 281T526 184Q526 152 514 121T474 58T392 8T265 -11Q175 -11 111 34T48 152Q50 187 72 209T132 232Q171 232 193 208T216 147Q216 136 214 126T207 108T197 94T187 84T178 77T170 72L168 71Q168 70 179 65T215 54T266 48H270Q331 48 350 105Q358 128 358 185Q358 239 348 268T309 313Q292 321 242 322Q205 322 198 324T191 341V348Q191 366 196 369T232 375Q239 375 247 376T260 377T268 378Q284 383 297 393T326 436T341 517Q341 536 339 547T331 573T308 593T266 600Q248 600 241 599Q214 593 183 576Q234 556 234 503Q234 462 210 444T157 426Q126 426 103 446T80 503",120786:"531 0Q510 3 381 3Q238 3 214 0H201V62H313V155H32V217L205 434Q342 606 362 630T387 655L391 656Q395 656 401 656T414 656H427Q447 656 451 645Q453 641 453 429V217H542V155H453V62H542V0H531ZM324 217V494L103 218L213 217H324",120787:"100 565V605Q100 637 102 646T113 655Q116 655 139 647T202 631T286 623Q332 623 372 631T434 647T459 655Q466 655 469 651T472 643T472 629Q472 613 463 601Q370 487 219 487Q195 487 183 488T169 490T168 433V376Q169 376 174 379T188 387T211 397T244 405T288 409Q390 409 453 352T517 201Q517 106 445 48T253 -11Q169 -11 113 37T57 154Q57 187 79 208T131 229T183 209T206 154Q206 99 155 83Q152 82 157 78Q196 47 253 47Q347 47 358 135Q358 137 358 138Q360 158 360 209Q360 277 355 301T337 338Q315 358 282 358Q202 358 160 303Q153 294 149 292T130 290Q107 290 102 301Q100 304 100 474V565",120788:"48 318Q48 395 68 456T120 553T193 613T273 646T350 655Q425 655 461 616T497 524Q497 485 475 468T428 451Q399 451 378 470T357 521Q357 565 403 588Q375 601 351 601Q313 601 282 584Q242 565 222 526Q199 473 199 367Q201 369 210 380T227 396T246 410T275 422T312 426Q438 426 494 332Q526 285 526 208V199Q526 112 465 53Q428 17 388 3T285 -11Q236 -11 195 7T135 43T104 80Q48 165 48 318ZM375 231V244V268Q375 295 373 310T364 342T341 366T299 374H297Q231 374 208 287Q200 257 200 196Q201 120 209 100Q231 47 288 47Q351 47 368 90Q375 112 375 231",120789:"256 -11Q231 -11 208 5T185 65Q185 105 193 146T212 220T241 289T275 349T312 402T346 445T377 479T397 502L400 504H301Q156 503 150 497Q142 491 134 456T126 407H64V411Q65 414 82 544T99 675T130 676H161V673Q161 669 162 666T167 661T173 657T181 654T190 652T200 651T210 650T220 649T229 648Q237 648 254 647T276 646Q277 646 426 644H558V620V607Q558 596 551 586T509 537Q489 515 476 500Q390 401 384 393Q349 339 337 259T324 113T322 38Q307 -11 256 -11",120790:"80 474Q80 561 139 607T278 654Q357 654 411 632Q490 593 494 509Q494 424 416 376L407 371L418 364Q432 356 447 345T481 312T513 260T526 192Q526 100 461 45T285 -11Q184 -11 116 32T48 164Q48 181 50 196T58 225T69 249T84 270T100 286T117 300T134 311T149 321T162 329L152 336Q120 360 100 397T80 474ZM347 404Q404 446 404 503Q404 579 317 599Q309 600 276 600Q178 600 170 538Q170 532 171 527T173 518T178 509T184 501T194 492T205 484T219 476T235 467T254 456T275 445L347 404ZM289 47Q323 47 351 54T402 82T425 137Q425 147 421 161Q411 183 391 197T303 249Q224 293 223 293Q220 291 215 288T197 273T175 248T157 213T149 167Q149 109 188 78T289 47",120791:"178 59Q206 48 238 48Q311 48 345 102Q370 138 375 259V278Q374 278 369 271T350 252T322 232Q297 220 258 220Q172 220 110 275T48 438V446Q54 561 146 618Q199 654 278 654Q321 654 329 653Q526 621 526 330Q526 252 507 190T457 92T388 31T312 -2T240 -11Q165 -11 121 25T77 120Q77 159 99 176T147 193T194 177T217 122Q217 113 216 106T211 92T205 82T198 73T191 67T184 62T178 59ZM374 446V465Q374 523 364 552T315 598Q309 600 293 601Q227 601 210 562Q199 539 199 433Q199 343 204 319T235 279Q250 272 274 271H282Q293 271 303 274T327 288T353 323T371 385Q374 403 374 446",120802:"117 621Q174 678 247 678Q305 678 351 647Q396 617 424 557Q460 472 460 328Q460 271 455 224Q448 154 427 104T376 27T314 -10T249 -22Q201 -22 160 1T91 67Q39 154 39 316Q39 541 117 621ZM250 55Q274 55 293 66T324 93T344 136T357 185T364 240T366 291T367 340Q367 373 367 393T363 449T352 507T332 553T299 589T250 601Q217 601 194 584T159 542T141 479T133 411T132 340V331Q132 299 133 277T137 219T147 157T167 107T201 68T250 55",120803:"94 612Q172 616 211 632T284 678H307V73H430V0H88V73H213V317Q213 560 212 560Q210 558 197 554T155 546T96 540L83 539V612H94",120804:"222 599Q190 599 166 585T128 550T108 509T97 474T93 459L67 492L42 526L47 539Q72 608 120 642T225 677Q304 677 355 644Q449 579 449 454Q449 373 361 290Q351 280 315 250T199 144Q156 103 137 85L293 86H449V0H50V79L216 242Q284 302 317 349T351 456Q351 517 315 558T222 599",120805:"333 521Q333 554 313 579T243 604Q154 604 99 514L78 546Q56 577 56 579Q56 580 62 589T82 611T114 637T162 662T222 677Q224 677 231 677T242 678H245Q318 678 374 634T430 520Q430 483 417 452T382 398T351 369T329 354L328 353Q369 333 373 330Q408 306 432 268T457 184Q457 103 397 41T242 -22Q131 -22 51 58L42 68L49 105L55 142L58 138Q62 134 66 130T77 120T91 108T108 96T129 83T152 72T179 63T209 57T242 54Q285 54 319 86T353 184Q353 231 331 267T260 315L213 316H166V354Q166 392 167 392Q233 395 257 405Q290 418 311 450T333 521",120806:"271 654L272 656H380V235H471V159H380V0H286V159H28V235L149 443Q269 652 271 654ZM292 235V607Q292 604 290 591T286 571T280 548T269 517T252 476T226 422T189 354T140 267Q136 260 132 253T126 240L123 236Q123 235 207 235H292",120807:"257 350Q236 350 218 342T189 323T171 301T160 281L157 273Q157 272 116 272H75V656H416V577H162V486Q162 396 163 396T174 403T207 418T258 426Q339 426 394 360T449 203Q449 113 386 46T226 -21H223Q188 -21 156 -11T102 13T64 42T41 66T33 77Q34 78 44 95T64 128L73 144Q93 112 117 93Q165 54 223 54Q270 54 306 86T345 197Q345 350 257 350",120808:"42 318Q42 396 61 460T109 564T173 629T237 666T289 677H301H317Q359 677 408 658V621Q408 585 407 585H406Q359 605 308 605Q246 605 203 556T146 421Q143 403 144 403Q145 402 152 409Q216 469 299 469Q333 469 357 457T407 405Q457 330 457 226Q457 126 402 57Q340 -22 251 -22Q216 -22 183 -7T116 43T63 149T42 318ZM260 393Q216 393 188 365T150 306T141 243Q141 153 172 104Q192 68 230 56Q238 54 251 54Q311 54 342 116Q360 152 360 226Q360 297 344 332Q320 382 277 392Q275 392 270 392T260 393",120809:"42 570V656H457V577L447 564Q345 439 295 289T244 0V-11H145V12Q160 330 356 550Q360 556 365 561T374 571L208 570H42",120810:"55 500Q55 568 109 623T250 678Q327 678 385 627T444 501Q444 445 410 410T336 357L329 353H330Q378 335 417 293T456 184Q456 93 393 36T249 -22T106 35T43 184Q43 251 82 293T169 353Q171 354 166 356Q165 356 163 357Q113 378 84 416T55 500ZM358 496Q358 557 325 581T250 605Q206 605 174 580T141 496Q141 446 171 420T250 393Q298 393 328 419T358 496ZM245 316Q205 316 172 285T139 185V179Q139 79 222 57Q231 55 250 55H254Q295 55 327 84Q360 120 360 188Q360 254 326 285Q295 316 245 316",120811:"44 476Q57 561 116 619T245 677H255Q308 677 349 647Q392 619 424 545T457 334Q457 178 382 78T205 -22Q168 -22 135 -10T86 14L72 25Q73 25 91 58L110 91Q127 78 136 72T163 60T203 54Q238 54 265 71T308 110T335 164T350 214T357 253V257L347 248Q284 187 200 187Q165 187 140 201T87 258Q42 332 42 430Q42 458 44 476ZM269 604Q265 605 254 605Q222 605 199 591T164 554T148 517T141 487Q140 478 140 430T141 373Q146 335 164 307T207 269Q223 263 247 263Q299 266 328 308T358 417Q358 435 356 456T346 511T318 570T269 604",120812:"274 -22Q227 -22 190 -9T128 24T87 76T62 135T49 204T44 271T43 336V343V362Q43 407 45 440T56 524T86 613T141 677Q197 715 264 715Q314 715 353 702T418 669T460 616T487 555T500 483T505 413T506 343Q506 310 506 293T503 241T498 185T486 133T467 83T437 42T397 8T343 -13T274 -22ZM355 355V401Q355 448 354 476T349 537T336 587T311 617T272 629Q270 629 266 629T261 628Q219 618 207 568T194 419V355Q194 203 200 156T231 85Q250 66 275 66Q299 66 318 85Q342 109 348 156T355 355",120813:"118 560H116Q107 560 100 561T85 572T76 600Q76 612 77 618T83 632T99 644Q102 645 135 646T207 660T275 700Q292 716 310 716Q353 716 360 691Q362 685 362 386V87H446Q464 76 468 69T473 44Q473 12 446 1H118Q105 7 100 13T94 25T93 44V62Q100 79 119 87H210V329Q210 571 208 571Q182 560 118 560",120814:"339 477Q339 505 332 531T301 579T242 601Q165 601 136 503Q133 493 130 490T121 486Q116 486 94 514Q86 523 82 528Q46 572 46 577Q46 591 77 632T147 691Q192 716 257 716Q305 716 351 700Q416 674 455 615T494 481Q494 421 463 376T356 266Q326 240 287 205T224 146T199 122H331Q359 122 392 122T431 123H445Q485 123 492 98Q494 92 494 62V47Q494 9 468 2Q463 0 272 0L83 1Q63 7 56 28L55 57V89Q59 97 215 261Q255 303 275 327T317 394T339 477",120815:"61 624Q62 630 83 650T153 693T262 716Q328 716 373 698T438 650T465 593T473 536Q473 438 375 376L387 371Q450 350 476 305T503 208Q503 164 492 126T456 53T380 -2T261 -22Q224 -22 189 -15T130 2T86 24T57 43T46 53Q46 56 53 99T62 145Q65 152 71 152Q76 152 90 143T123 121T175 99T248 87Q302 87 321 113T341 202Q341 264 329 292T279 329L232 331L190 332L184 338V411Q190 417 192 417Q193 418 205 419T232 421T252 424Q280 430 299 461T318 539V551Q318 599 283 609Q276 611 257 611Q225 611 199 601T159 577T136 554T120 543T102 560T76 597T62 618T61 624",120816:"278 693H282Q285 693 291 693T305 694T322 694T342 694H377Q402 694 411 691T430 677Q434 670 434 646T435 456V249H461H472Q509 249 516 224Q518 219 518 194Q518 178 518 171T511 155T492 142Q488 140 461 140H435V86V53Q435 9 409 2Q405 0 366 0H351Q306 0 298 25Q296 31 296 86V140H179H123Q99 140 80 129T50 106T37 95Q31 95 31 163V208Q31 246 33 251Q251 673 262 684Q268 691 278 693ZM302 249V416L301 576Q301 536 165 276L151 250L226 249H302",120817:"109 282Q87 290 83 310V666Q83 667 84 670T87 676T91 682T98 688T108 693Q112 694 269 694T431 692Q457 686 457 648V637V624Q457 588 431 581Q426 579 326 579H227V510Q227 442 229 442Q243 450 288 450Q377 450 435 399T494 222Q494 -22 241 -22Q202 -22 167 -11T109 16T69 49T45 79T37 94T69 151Q91 185 97 185Q105 185 112 170Q127 135 160 111T240 87Q266 87 284 94T311 111T325 142T331 179T332 226Q332 307 324 335T281 363Q228 363 197 306Q189 289 172 282H109",120818:"414 589Q410 589 389 600T334 612Q275 612 243 575Q209 538 202 433V422L209 431Q243 487 317 487Q392 487 440 442Q478 402 490 357T503 236Q503 113 454 54Q421 13 381 -4T279 -22Q263 -22 250 -21T214 -15T173 1T133 30T96 77T68 146T50 242Q46 278 46 336Q46 406 52 447Q84 698 312 715L315 716Q318 716 321 716Q323 716 328 716T337 715Q398 715 425 688V596Q419 591 414 589ZM282 87Q324 89 336 117T348 231Q348 310 343 343T324 388T277 399Q249 399 231 373T208 317T202 253Q202 201 207 168T224 117T249 93T282 87",120819:"135 38Q135 190 198 335T353 572H215Q185 572 151 572T110 571H96Q55 571 48 596Q46 602 46 633V648Q46 686 72 693Q76 695 124 695Q134 695 183 695T274 694Q472 694 477 692Q503 686 503 648V637Q503 612 502 605T491 588Q300 349 292 46V36Q292 -4 266 -9Q262 -11 214 -11H192Q160 -11 148 -3T135 38",120820:"61 518Q61 574 79 614T128 676T192 706T263 715H270Q298 715 318 714T373 701T430 671T470 612T488 517Q488 459 458 423T390 376Q388 375 393 373Q395 372 398 371Q503 330 503 204Q503 -22 275 -22Q209 -22 163 -3T92 49T57 120T46 204Q46 230 50 252T61 289T77 318T96 339T116 353T134 363T148 369T158 373T160 376Q118 389 90 424T61 518ZM344 538Q344 563 340 578T326 600T307 609T279 612Q232 612 218 594T204 518Q204 459 216 439T275 418Q328 418 338 450Q344 464 344 515V538ZM248 88T274 88T315 94T338 117T346 149T349 197Q349 269 342 290Q338 309 320 320T274 331Q246 331 229 320T207 290Q200 269 200 197Q201 163 202 149T210 118T232 94",120821:"347 272Q346 272 342 266T330 250T309 230T276 214T230 207Q185 207 150 223Q116 240 90 276T54 357Q46 393 46 468Q46 469 46 484T47 502T48 520T51 540T55 559T61 579T69 599T81 620T96 640T115 661Q174 716 276 716Q299 716 317 714T369 698T426 658T471 580T499 456Q503 402 503 342Q503 115 392 29Q322 -22 231 -22Q163 -22 115 7L82 31Q76 38 81 46Q116 112 127 123Q130 126 134 126T148 116T179 97T226 87Q287 87 318 132Q323 139 326 146T332 165T337 182T340 204T342 225T345 249T347 272ZM201 547T201 454T211 329T262 294Q276 294 285 296T310 312T335 355Q347 391 347 447Q347 520 340 550T317 595Q300 612 277 612Q226 612 214 580",120822:"42 305Q42 450 111 535T257 621Q335 621 390 562Q482 468 482 306Q482 174 418 82T262 -10T106 82T42 305ZM257 545Q209 545 168 481T126 320Q126 220 162 147Q204 65 262 65Q318 65 358 139T398 320V328Q395 411 364 470T284 543Q270 545 257 545",120823:"99 461Q99 470 99 474T104 487T120 498T151 502Q213 517 251 596Q264 622 283 622Q308 622 319 597V76H373H401Q428 76 439 69T450 38Q450 11 428 1H127Q104 10 104 38Q104 62 115 69T153 76H181H235V269Q235 461 234 461Q184 426 137 424H133Q124 424 119 425T109 431T99 447V461",120824:"52 462Q52 528 110 575T247 622H250Q343 622 407 565T472 421Q472 371 446 324T390 248T308 178Q307 177 275 151T214 101L185 77Q185 76 286 76H388V87Q388 105 397 114T430 123T463 114Q470 107 471 100T472 61V42Q472 24 468 16T450 1H75Q53 10 53 32V38V48Q53 57 63 67T127 122Q153 144 169 157L289 256Q388 345 388 419Q388 473 346 509T231 545H224Q176 545 146 499L144 494Q155 476 155 459Q154 459 155 455T154 444T148 430T136 417T114 408Q113 408 110 408T104 407Q80 407 66 422T52 462",120825:"260 546Q233 546 211 541T180 531T171 524L174 514Q177 505 177 497Q177 476 162 461T125 446Q106 446 90 459T73 504Q76 540 98 565T150 601T203 616T239 621Q241 622 265 622Q322 620 362 602T420 558T444 513T451 478Q451 386 369 329L375 326Q381 323 386 320T401 311T419 298T436 283T452 263T466 240T475 212T479 180Q479 99 416 44T259 -11T105 28T44 130Q44 154 59 168T95 183Q117 183 132 169T148 131Q148 119 139 101Q175 65 260 65Q316 65 355 97T395 179Q395 211 375 240Q336 292 253 292H234H215Q194 292 185 299T175 330Q175 350 184 359Q192 368 238 370T309 384Q336 398 351 423T367 474Q367 496 350 513Q321 546 260 546",120826:"235 1Q213 10 213 32V38V46Q213 65 230 73Q236 76 274 76H314V168H183L52 169Q37 175 33 182T29 205V218L30 244Q53 283 155 443T264 613Q276 623 298 623H323H363Q378 616 385 601V244H429H450Q474 244 484 237T495 206Q495 179 477 171Q471 168 429 168H385V76H425H442Q466 76 476 69T487 38Q487 10 465 1H235ZM314 244V554L117 245L215 244H314",120827:"387 189Q387 244 354 278T273 313Q230 313 205 301T163 271T138 249H120Q102 249 97 251Q85 258 83 266T80 311Q80 320 80 359T81 430Q81 587 82 591Q88 605 103 610H108Q112 610 120 610T138 610T163 610T192 611T225 611T260 611H415Q416 610 421 607T428 602T432 596T436 587T437 573Q437 567 437 562T434 554T431 548T427 543T423 540T418 538L415 536L289 535H164V363L170 366Q175 368 184 372T207 380T238 386T276 389Q357 389 414 331T472 187Q472 116 412 53T245 -10Q218 -10 209 -9Q126 5 89 48T52 137Q52 164 68 177T104 191Q130 191 143 175T156 141Q156 132 154 125T149 113T146 107Q146 104 155 95T188 76T245 65Q298 65 342 98T387 189",120828:"357 536Q357 546 318 546Q258 546 205 497T133 357V353L144 361Q210 402 285 402Q362 402 414 350Q479 285 479 193Q479 111 418 50T263 -11Q234 -11 207 -3T149 26T97 81T60 171T45 301Q45 444 129 533T319 622Q388 622 421 589T454 510Q454 491 442 475T402 458Q373 458 362 475T350 510Q350 520 354 528L357 536ZM319 326T269 326T179 298T136 223Q136 202 143 174T176 112T237 68Q246 66 265 66Q319 66 360 107Q395 146 395 197Q395 250 356 289Q319 326 269 326",120829:"204 -10Q162 -10 162 40Q162 146 198 261T310 477Q311 478 321 491T342 517T358 535H128V524Q128 506 119 497Q111 489 86 489H78Q55 489 46 508Q44 513 44 557V580Q44 605 52 616T88 627H93Q114 627 125 611H458Q474 598 477 593T480 573Q480 559 478 553T469 543T446 521T408 477Q252 290 246 49Q246 43 246 37T246 27T245 22Q243 11 233 1T204 -10",120830:"58 460Q58 523 117 572T254 621Q290 621 298 620Q376 607 421 560T466 460Q466 441 460 424T443 393T421 370T397 352T374 340T357 332L350 330L356 328Q363 325 371 321T392 310T415 295T439 274T459 249T473 217T479 179Q479 102 418 46T262 -10T106 46T45 179Q45 202 52 222T70 257T96 284T123 305T148 319T167 328L174 330L170 332Q166 333 159 336T145 343Q104 362 81 393T58 460ZM382 458Q382 491 349 518T263 546Q215 546 179 521T142 458Q142 421 178 395T262 368Q315 368 348 396T382 458ZM396 178Q396 223 358 257T263 292Q206 292 167 258T128 178Q128 137 163 102T262 66Q324 66 360 101T396 178",120831:"392 259Q333 210 236 210H233Q163 210 109 262Q46 325 46 411T99 550Q164 622 264 622Q293 622 319 615T376 587T428 532T464 440T479 304Q479 167 400 78T217 -11Q140 -11 105 22T70 101Q70 124 84 138T122 153Q150 153 162 137T174 101Q174 91 168 76Q179 65 216 65Q267 65 300 93Q322 109 339 130T366 173T380 210T388 242T392 259ZM388 389Q388 438 357 492T268 546T185 520Q129 479 129 415Q129 384 138 363Q145 349 156 334T195 302T255 285Q305 285 345 313T388 389"},{8243:"′′",8244:"′′′",8246:"‵‵",8247:"‵‵‵",8279:"′′′′",8708:"∄",8716:"∌",8772:"≄",8777:"≉",8802:"≢",8813:"≭",8820:"≴",8821:"≵",8824:"≸",8825:"≹",8836:"⊄",8837:"⊅",8930:"⋢",8931:"⋣",10764:"∬∬"});var sansSerifBoldItalic$1={},sansSerifBoldItalic={};Object.defineProperty(sansSerifBoldItalic,"__esModule",{value:!0}),sansSerifBoldItalic.sansSerifBoldItalic=void 0,sansSerifBoldItalic.sansSerifBoldItalic={305:[.458,0,.256],567:[.458,.205,.286]},Object.defineProperty(sansSerifBoldItalic$1,"__esModule",{value:!0}),sansSerifBoldItalic$1.sansSerifBoldItalic=void 0;var FontData_js_1$d=FontData,sans_serif_bold_italic_js_1$1=sansSerifBoldItalic;sansSerifBoldItalic$1.sansSerifBoldItalic=(0,FontData_js_1$d.AddPaths)(sans_serif_bold_italic_js_1$1.sansSerifBoldItalic,{305:"54 431Q63 458 102 458H127H149Q192 458 199 433Q201 427 201 229T199 25Q190 0 149 0H125L81 1Q61 7 54 28V431",567:"-38 -84Q-36 -84 -14 -95T33 -106H38Q70 -103 78 -86Q83 -78 83 -49T84 180Q84 427 86 433Q93 458 136 458H158H180Q201 458 209 456T225 443Q230 436 231 418Q232 397 232 313V183V124V40Q232 -55 228 -87T203 -147Q166 -205 78 -205Q31 -205 -20 -189T-71 -159Q-71 -156 -59 -123Q-50 -96 -47 -91T-38 -84"},{});var sansSerifBold$1={},sansSerifBold={};Object.defineProperty(sansSerifBold,"__esModule",{value:!0}),sansSerifBold.sansSerifBold=void 0,sansSerifBold.sansSerifBold={33:[.694,0,.367],34:[.694,-.442,.558],35:[.694,.193,.917],36:[.75,.056,.55],37:[.75,.056,1.029],38:[.716,.022,.831],39:[.694,-.442,.306],40:[.75,.249,.428],41:[.75,.25,.428],42:[.75,-.293,.55],43:[.617,.116,.856],44:[.146,.106,.306],45:[.273,-.186,.367],46:[.146,0,.306],47:[.75,.249,.55],58:[.458,0,.306],59:[.458,.106,.306],61:[.407,-.094,.856],63:[.705,0,.519],64:[.704,.011,.733],91:[.75,.25,.343],93:[.75,.25,.343],94:[.694,-.537,.55],95:[-.023,.11,.55],126:[.344,-.198,.55],305:[.458,0,.256],567:[.458,.205,.286],768:[.694,-.537,0],769:[.694,-.537,0],770:[.694,-.537,0],771:[.694,-.548,0],772:[.66,-.56,0],774:[.694,-.552,0],775:[.695,-.596,0],776:[.695,-.595,0],778:[.694,-.538,0],779:[.694,-.537,0],780:[.657,-.5,0],8211:[.327,-.24,.55],8212:[.327,-.24,1.1],8213:[.327,-.24,1.1],8215:[-.023,.11,.55],8216:[.694,-.443,.306],8217:[.694,-.442,.306],8220:[.694,-.443,.558],8221:[.694,-.442,.558],8260:[.75,.249,.55],8710:[.694,0,.917]},Object.defineProperty(sansSerifBold$1,"__esModule",{value:!0}),sansSerifBold$1.sansSerifBold=void 0;var FontData_js_1$c=FontData,sans_serif_bold_js_1$1=sansSerifBold;sansSerifBold$1.sansSerifBold=(0,FontData_js_1$c.AddPaths)(sans_serif_bold_js_1$1.sansSerifBold,{33:"111 669Q111 680 111 682T113 689T121 693T137 694H184H249Q255 686 256 681Q244 220 239 213Q236 208 229 208T183 207T137 207T127 213T118 431T111 669ZM110 71V95Q110 137 136 144Q140 146 183 146H200Q246 146 254 121Q256 115 256 73V51Q256 9 230 2Q225 0 181 0L138 1Q121 7 113 21L111 28L110 71",34:"38 687Q42 693 45 693Q46 694 111 694H176Q179 690 183 687V556L144 501Q139 494 134 486T126 474T120 465T114 457T110 451T106 447T102 445T98 443T94 443T89 442H73H62Q37 442 37 453Q37 458 55 501T74 546Q74 548 59 548L44 549L38 555V687ZM275 687Q279 693 282 693Q283 694 348 694H413Q416 690 420 687V556L381 501Q376 494 371 486T363 474T357 465T351 457T347 451T343 447T339 445T335 443T331 443T326 442H310H299Q274 442 274 453Q274 458 292 501T311 546Q311 548 296 548L281 549L275 555V687",35:"61 365Q61 370 62 375T65 383T69 390T74 395T80 399T85 403T90 406L94 407H344L381 536Q418 668 426 680Q431 687 445 692Q451 694 457 694Q477 694 488 682T500 651Q500 645 466 528T431 409Q431 407 504 407H577L609 521Q651 668 656 675Q669 693 691 693Q710 693 721 680T733 651Q733 645 699 528T664 409Q664 407 743 407H823L827 405Q831 403 834 402T841 397T848 389T853 379T855 365Q855 337 823 324L731 323H639L619 253Q599 181 598 180V177H823L827 175Q831 173 834 172T841 167T848 159T853 149T855 135Q855 107 823 94L698 93H573L540 -21Q498 -168 493 -175Q480 -193 458 -193Q439 -193 428 -180T416 -151Q416 -144 450 -27T485 91Q485 93 412 93H340L307 -21Q265 -168 260 -175Q247 -193 225 -193Q206 -193 195 -180T183 -151Q183 -144 217 -27T252 91Q252 93 173 93L94 94Q61 105 61 135Q61 140 62 145T65 153T69 160T74 165T80 169T85 173T90 176L94 177H185L277 178L297 248L318 320V323H206L94 324Q61 335 61 365ZM551 320V323H479Q406 323 405 322Q404 319 385 249T365 178T438 177L510 178L530 248L551 320",36:"231 712L232 716Q232 719 232 722T234 729T239 736T246 743T256 748T271 750Q318 750 318 711V703Q393 692 451 656Q469 645 470 640Q470 635 461 587L453 537Q445 529 442 529Q438 529 424 540T384 565T330 585Q328 585 325 585T320 586L318 587V434Q322 433 333 429T350 424T365 418T382 409T399 397T419 380Q488 313 488 213Q488 24 334 -5L318 -8V-17Q318 -56 279 -56H272Q253 -56 243 -46T232 -30T231 -18V-8H224Q170 2 127 20T68 50T49 67Q49 71 58 122T68 176Q71 182 79 182Q83 182 98 169T145 138T216 110Q228 108 229 108H231V288Q167 299 114 356T61 496Q61 537 70 570T94 624T126 661T162 684T195 696T219 701L228 702H231V712ZM231 521Q231 583 230 583Q226 582 220 579T204 561T193 521Q193 491 212 472Q226 458 230 458Q231 458 231 521ZM318 112Q356 131 356 187Q356 237 318 263V112",37:"61 549Q61 733 218 749Q220 749 228 749T241 750Q286 750 321 735T369 708T389 683Q422 634 422 548V538Q422 519 420 501T408 453T381 401T328 364T243 347Q61 347 61 549ZM292 549Q292 663 242 663Q221 663 211 648T198 615T196 566V548Q196 471 206 454Q218 434 242 434Q292 434 292 549ZM243 -55Q223 -55 212 -42T201 -13Q201 -2 207 7Q209 11 480 371T758 738Q770 750 788 750Q805 750 817 738T830 709Q830 694 820 681L544 315Q273 -43 269 -47Q258 -55 243 -55ZM606 146Q606 330 763 346Q764 346 773 346T786 347Q831 347 866 332T914 305T934 280Q966 233 966 146V135Q966 115 964 97T952 49T925 -2T872 -40T788 -56Q606 -56 606 146ZM742 146V132Q742 107 743 93T748 62T762 39T787 31Q819 31 832 79Q837 97 837 146Q837 260 787 260Q767 260 757 246T744 214T742 169V146",38:"757 117Q762 117 769 110V3Q759 -7 718 -14T641 -22T571 -15T518 1T477 19T453 31L437 23Q350 -19 257 -22Q158 -22 103 30T47 155Q47 188 57 216T87 263T119 292T151 313L182 333L187 336L181 349Q150 431 150 506Q150 605 211 660T347 716Q417 716 471 668T526 543Q526 517 518 495T471 432T360 343L342 330Q342 327 358 306T402 250T458 189L467 181Q518 225 556 289T607 395L620 437Q622 443 630 443Q631 443 679 430Q718 420 725 418T733 409Q733 402 722 365T670 255T573 123Q562 111 563 111Q589 94 644 94Q678 94 703 100T740 111T757 117ZM397 544Q397 573 384 601T346 629Q320 629 299 607T277 538Q277 484 295 429Q301 413 301 412Q302 409 309 415Q397 476 397 544ZM227 258Q197 228 197 177Q197 150 207 126T234 95Q242 93 251 93Q288 93 337 107L349 110L328 131Q266 196 234 248L227 258",39:"81 687Q85 693 88 693Q89 694 154 694H219Q222 690 226 687V556L187 501Q182 494 177 486T169 474T163 465T157 457T153 451T149 447T145 445T141 443T137 443T132 442H116H105Q80 442 80 453Q80 458 98 501T117 546Q117 548 102 548L87 549L81 555V687",40:"79 250Q79 352 100 441T152 585T213 678T266 733L287 749Q288 750 324 750H359Q366 741 366 738Q366 734 356 721T329 682T296 623T262 531T238 407Q230 346 230 250Q230 142 244 55T278 -82T318 -165T352 -215T366 -238Q366 -242 359 -249H286L277 -242Q79 -74 79 250",41:"61 737Q61 750 85 750H106H141L150 742Q348 574 348 250T150 -242L141 -249L106 -250H87Q61 -250 61 -238Q61 -233 74 -216Q157 -113 183 51Q197 130 197 250T183 449Q174 505 158 554T126 634T95 687T71 722T61 737",42:"241 579Q241 582 228 639T215 702Q215 722 233 736T271 750Q296 750 315 736T334 702V697Q334 693 328 664T314 607L308 579L352 620Q389 654 397 660T417 668Q447 668 464 647T482 602Q482 591 479 583T472 569T459 559T443 552T421 546T397 538L342 521L397 504Q405 501 420 497T442 490T458 483T472 473T479 460T482 440Q482 416 465 395T417 374Q406 375 398 381T352 422L308 463L314 435Q321 407 327 378T334 345Q336 333 327 319T296 295Q288 293 275 293Q241 293 227 311T215 345Q215 349 221 378T234 435L241 463L197 422Q160 388 152 382T132 374Q102 374 85 395T67 440Q67 451 70 459T77 473T90 483T106 490T128 496T152 504L207 521L152 538Q144 541 129 545T107 552T91 559T77 569T70 582T67 602Q67 626 84 647T132 668Q143 667 151 661T197 620L241 579",43:"61 250Q61 276 94 292H386V436V535Q386 577 388 589T401 607Q411 617 427 617Q458 617 468 587Q470 581 470 436V292H762L766 290Q770 288 773 287T780 282T787 274T792 264T794 250Q794 222 762 209L616 208H470V64Q470 -81 468 -87Q458 -116 428 -116T388 -87Q386 -81 386 64V208H240L94 209Q61 220 61 250",44:"81 139Q85 145 88 145Q89 146 154 146H219Q222 142 226 139V8L187 -47Q182 -54 177 -62T169 -74T163 -83T157 -91T153 -97T149 -101T145 -103T141 -105T137 -105T132 -106H116H105Q80 -106 80 -95Q80 -90 98 -47T117 -2Q117 0 102 0L87 1L81 7V139",45:"12 230Q12 257 26 265T80 274Q88 274 114 274T158 273T201 273T235 274Q276 274 290 266T305 230T291 194T235 185Q226 185 201 185T159 186Q143 186 119 186T85 185Q43 185 28 193T12 230",46:"219 146Q222 142 226 139V7L222 4L219 1L154 0Q102 0 94 0T82 6Q80 9 80 74L81 139Q85 145 88 145Q89 146 154 146H219",47:"103 -249Q81 -249 71 -235T61 -207Q61 -201 62 -198Q64 -192 235 265T409 727Q418 750 445 750Q464 750 476 737T488 707Q488 701 313 234Q143 -225 137 -232Q126 -249 103 -249",58:"226 319L219 313H87L81 319L80 384Q80 437 80 445T86 456Q89 458 154 458H219Q222 454 226 451V319ZM219 146Q222 142 226 139V7L222 4L219 1L154 0Q102 0 94 0T82 6Q80 9 80 74L81 139Q85 145 88 145Q89 146 154 146H219",59:"226 319L219 313H87L81 319L80 384Q80 437 80 445T86 456Q89 458 154 458H219Q222 454 226 451V319ZM81 139Q85 145 88 145Q89 146 154 146H219Q222 142 226 139V8L187 -47Q182 -54 177 -62T169 -74T163 -83T157 -91T153 -97T149 -101T145 -103T141 -105T137 -105T132 -106H116H105Q80 -106 80 -95Q80 -90 98 -47T117 -2Q117 0 102 0L87 1L81 7V139",61:"94 324Q61 335 61 366Q61 396 91 405Q96 407 429 407H762Q763 406 767 404T774 400T781 395T787 387T792 378T794 365Q794 338 762 324H94ZM94 94Q61 105 61 135Q61 149 69 160T92 175Q97 177 430 177H762L766 175Q770 173 773 172T780 167T787 159T792 149T794 135Q794 107 762 94H94",63:"61 644Q61 652 87 666T157 693T244 705Q344 705 400 671T457 551Q457 516 446 490T422 451T387 421T356 391Q330 361 318 332T305 292T303 252Q303 218 300 213T290 208T244 207H220Q194 207 188 213Q187 214 186 215V255Q187 282 188 296T198 345T229 417T288 496Q306 515 306 559Q306 596 296 607T253 618Q214 618 185 607T143 583T120 558T103 547Q99 547 95 551Q93 553 77 597T61 644ZM171 71V95Q171 137 197 144Q201 146 244 146H261Q307 146 315 121Q317 115 317 73V51Q317 9 291 2Q286 0 242 0L199 1Q182 7 174 21L172 28L171 71",64:"61 264T61 347T82 494T136 596T217 660T311 694T410 704Q460 704 471 703Q534 694 577 666Q633 623 651 552T670 370V342Q670 249 633 195Q583 116 454 116Q238 116 238 347Q238 443 276 499Q328 578 456 578Q488 578 494 577L504 575Q475 617 430 617H421Q196 617 196 347Q196 215 253 143Q310 76 427 76Q499 76 561 102L575 107H664Q671 97 671 94V89L663 81Q566 -11 422 -11Q365 -11 316 -2T219 33T137 97T82 200ZM469 490Q459 492 453 492Q429 492 405 472Q374 439 374 347Q374 233 423 210Q436 202 454 202L486 210Q536 228 536 347Q536 461 486 484Q476 490 469 490",91:"318 -206Q318 -235 305 -243T255 -251Q248 -251 229 -251T198 -250H143Q112 -250 99 -246T81 -225Q79 -219 79 250T81 725Q85 741 98 745T143 750H198Q210 750 229 750T255 751Q291 751 304 743T318 707Q318 680 301 668Q293 663 255 663H224V-163H255Q293 -163 301 -168Q318 -180 318 -206",93:"24 706Q24 734 39 742T90 751Q97 751 114 751T143 750H198Q230 750 243 746T261 725Q263 719 263 250T261 -225Q257 -241 244 -245T198 -250H143Q131 -250 112 -250T86 -251Q50 -251 37 -243T24 -207Q24 -180 41 -168Q49 -163 87 -163H118V663H87H71Q24 663 24 706",94:"108 550Q108 554 135 589T190 658T219 692Q221 694 275 694Q328 694 330 693Q331 692 381 629T438 557Q441 553 441 549T434 538L399 537Q363 537 362 538Q361 538 318 575L275 611Q274 611 231 575Q188 538 187 538Q186 537 150 537L115 538Q108 545 108 550",95:"0 -66Q0 -32 26 -25Q30 -23 274 -23Q469 -23 497 -23T532 -28Q549 -40 549 -67Q549 -93 532 -105Q525 -109 498 -109T275 -110Q31 -110 26 -108Q0 -101 0 -66",126:"92 215Q92 259 122 301T204 344Q238 344 264 329T310 300T343 285Q356 285 361 295T369 322T377 344H450Q457 334 457 330Q457 281 427 240T344 198Q312 198 285 213T239 242T206 257Q188 257 182 230T172 199L137 198H120Q102 198 97 200T92 215",305:"54 431Q63 458 102 458H127H149Q192 458 199 433Q201 427 201 229T199 25Q190 0 149 0H125L81 1Q61 7 54 28V431",567:"-38 -84Q-36 -84 -14 -95T33 -106H38Q70 -103 78 -86Q83 -78 83 -49T84 180Q84 427 86 433Q93 458 136 458H158H180Q201 458 209 456T225 443Q230 436 231 418Q232 397 232 313V183V124V40Q232 -55 228 -87T203 -147Q166 -205 78 -205Q31 -205 -20 -189T-71 -159Q-71 -156 -59 -123Q-50 -96 -47 -91T-38 -84",768:"-458 682Q-458 690 -452 692T-426 694H-381H-314L-312 691Q-311 691 -305 682T-287 655T-263 622L-218 555V549Q-218 544 -224 538L-259 537Q-295 537 -296 538Q-298 539 -376 606T-456 676Q-458 680 -458 682",769:"-290 537H-310Q-334 537 -334 549Q-334 553 -311 588T-264 656L-241 690Q-240 690 -239 691T-236 693Q-235 694 -167 694H-100Q-93 684 -93 681T-94 677Q-95 675 -173 607T-255 538Q-256 537 -290 537",770:"-442 550Q-442 554 -415 589T-360 658T-331 692Q-329 694 -275 694Q-222 694 -220 693Q-219 692 -169 629T-112 557Q-109 552 -109 549Q-109 545 -116 538L-151 537Q-187 537 -188 538Q-189 538 -232 575L-275 611Q-276 611 -319 575Q-362 538 -363 538Q-364 537 -400 537L-435 538Q-442 545 -442 550",771:"-458 565Q-458 609 -428 651T-346 694Q-312 694 -286 679T-240 650T-207 635Q-194 635 -189 645T-181 672T-173 694H-100Q-93 684 -93 680Q-93 631 -123 590T-206 548Q-238 548 -265 563T-311 592T-344 607Q-362 607 -368 580T-378 549L-413 548H-430Q-448 548 -453 550T-458 565",772:"-84 660Q-81 656 -77 653V567L-81 564L-84 561L-274 560H-383Q-469 560 -471 565L-472 566Q-474 569 -474 611L-473 653Q-469 659 -466 659Q-465 660 -274 660H-84",774:"-123 694Q-80 694 -80 657Q-80 626 -99 601T-161 563Q-199 552 -275 552Q-352 552 -389 563Q-470 586 -470 655Q-470 667 -468 673Q-457 694 -435 694H-431Q-408 694 -396 685Q-387 676 -387 671Q-384 661 -275 661Q-167 661 -164 671Q-164 674 -163 677T-151 687T-123 694",775:"-329 596Q-346 602 -351 611T-356 638V646Q-356 653 -356 654T-356 661T-355 668T-353 673T-351 679T-347 684T-341 689T-332 693T-274 695H-221Q-202 683 -198 676T-194 645Q-194 632 -195 625T-202 610T-221 596H-329",776:"-331 695Q-312 683 -308 676T-304 645Q-304 632 -304 626T-311 610T-331 596L-380 595H-408Q-448 595 -457 617Q-459 621 -459 645T-457 673Q-448 696 -409 696Q-405 696 -396 696T-380 695H-331ZM-247 644Q-247 658 -246 665T-239 680T-221 694Q-217 695 -169 695H-143Q-102 695 -93 672Q-91 664 -91 645V635Q-91 613 -106 602Q-113 597 -121 596T-171 595L-219 596Q-232 600 -238 608T-246 622T-247 644",778:"-365 616Q-365 658 -331 676T-256 694Q-253 694 -247 694T-236 693Q-166 693 -139 666Q-119 644 -119 616T-139 565Q-166 538 -237 538H-242Q-365 538 -365 616ZM-181 616Q-181 641 -195 647T-242 654Q-258 654 -266 654T-284 650T-298 638T-303 616Q-303 592 -289 585T-242 577Q-209 577 -195 584T-181 616",779:"-426 686Q-424 694 -394 694H-350H-283Q-277 686 -277 682Q-277 673 -317 608T-361 538L-396 537H-420Q-432 537 -436 539T-440 548Q-440 560 -434 616Q-432 633 -430 650T-427 677L-426 686ZM-243 686Q-241 694 -211 694H-167H-100Q-94 686 -94 682Q-94 673 -134 608T-178 538L-213 537H-237Q-249 537 -253 539T-257 548Q-257 560 -251 616Q-249 633 -247 650T-244 677L-243 686",780:"-442 645Q-442 657 -418 657H-398Q-393 657 -388 657T-379 657T-371 656T-365 656H-363L-319 620L-276 583Q-275 583 -232 619Q-189 656 -188 656Q-187 657 -151 657H-116Q-109 649 -109 645Q-109 642 -112 637Q-118 629 -168 566T-220 501Q-222 500 -275 500Q-329 500 -331 501Q-442 634 -442 645",8211:"0 284Q0 318 26 325Q30 327 274 327Q469 327 497 327T532 322Q549 310 549 283Q549 257 532 245Q525 241 498 241T275 240Q31 240 26 242Q0 249 0 284",8212:"0 284Q0 318 26 325Q30 327 549 327T1073 325Q1099 318 1099 284Q1099 249 1073 242Q1068 240 549 240Q31 240 26 242Q0 249 0 284",8213:"0 284Q0 318 26 325Q30 327 549 327T1073 325Q1099 318 1099 284Q1099 249 1073 242Q1068 240 549 240Q31 240 26 242Q0 249 0 284",8215:"0 -66Q0 -32 26 -25Q30 -23 274 -23Q469 -23 497 -23T532 -28Q549 -40 549 -67Q549 -93 532 -105Q525 -109 498 -109T275 -110Q31 -110 26 -108Q0 -101 0 -66",8216:"87 443L81 449V581L119 636Q125 644 131 653T141 667T148 677T154 685T158 689T163 692T167 693T173 694H190H201Q226 694 226 683Q226 678 208 635T189 590Q189 588 204 588H219Q222 584 226 581V449L219 443H87",8217:"81 687Q85 693 88 693Q89 694 154 694H219Q222 690 226 687V556L187 501Q182 494 177 486T169 474T163 465T157 457T153 451T149 447T145 445T141 443T137 443T132 442H116H105Q80 442 80 453Q80 458 98 501T117 546Q117 548 102 548L87 549L81 555V687",8220:"144 443L138 449V581L176 636Q182 644 188 653T198 667T205 677T211 685T215 689T220 692T224 693T230 694H247H258Q283 694 283 683Q283 678 265 635T246 590Q246 588 261 588H276Q279 584 283 581V449L276 443H144ZM381 443L375 449V581L413 636Q419 644 425 653T435 667T442 677T448 685T452 689T457 692T461 693T467 694H484H495Q520 694 520 683Q520 678 502 635T483 590Q483 588 498 588H513Q516 584 520 581V449L513 443H381",8221:"38 687Q42 693 45 693Q46 694 111 694H176Q179 690 183 687V556L144 501Q139 494 134 486T126 474T120 465T114 457T110 451T106 447T102 445T98 443T94 443T89 442H73H62Q37 442 37 453Q37 458 55 501T74 546Q74 548 59 548L44 549L38 555V687ZM275 687Q279 693 282 693Q283 694 348 694H413Q416 690 420 687V556L381 501Q376 494 371 486T363 474T357 465T351 457T347 451T343 447T339 445T335 443T331 443T326 442H310H299Q274 442 274 453Q274 458 292 501T311 546Q311 548 296 548L281 549L275 555V687",8260:"103 -249Q81 -249 71 -235T61 -207Q61 -201 62 -198Q64 -192 235 265T409 727Q418 750 445 750Q464 750 476 737T488 707Q488 701 313 234Q143 -225 137 -232Q126 -249 103 -249",8710:"381 692Q386 694 458 694Q516 694 527 693T549 687Q564 680 575 663Q576 658 715 349T856 27Q856 6 838 1H826Q815 1 795 1T747 1T686 1T616 0T539 0T458 0T378 0T300 0T230 0T169 1T122 1T90 1H78Q60 6 60 27Q62 38 201 349T341 663Q356 687 381 692ZM627 148Q626 149 581 250T492 453L447 554Q447 553 446 552Q444 546 326 278L268 148Q268 147 448 147Q627 147 627 148"},{});var sansSerifItalic$1={},sansSerifItalic={};Object.defineProperty(sansSerifItalic,"__esModule",{value:!0}),sansSerifItalic.sansSerifItalic=void 0,sansSerifItalic.sansSerifItalic={33:[.694,0,.319,{ic:.036}],34:[.694,-.471,.5],35:[.694,.194,.833,{ic:.018}],36:[.75,.056,.5,{ic:.065}],37:[.75,.056,.833],38:[.716,.022,.758],39:[.694,-.471,.278,{ic:.057}],40:[.75,.25,.389,{ic:.102}],41:[.75,.25,.389],42:[.75,-.306,.5,{ic:.068}],43:[.583,.083,.778],44:[.098,.125,.278],45:[.259,-.186,.333],46:[.098,0,.278],47:[.75,.25,.5,{ic:.1}],48:[.678,.022,.5,{ic:.049}],49:[.678,0,.5],50:[.678,0,.5,{ic:.051}],51:[.678,.022,.5,{ic:.044}],52:[.656,0,.5,{ic:.021}],53:[.656,.022,.5,{ic:.055}],54:[.678,.022,.5,{ic:.048}],55:[.656,.011,.5,{ic:.096}],56:[.678,.022,.5,{ic:.054}],57:[.677,.022,.5,{ic:.045}],58:[.444,0,.278],59:[.444,.125,.278],61:[.37,-.13,.778,{ic:.018}],63:[.704,0,.472,{ic:.064}],64:[.705,.01,.667,{ic:.04}],91:[.75,.25,.289,{ic:.136}],93:[.75,.25,.289,{ic:.064}],94:[.694,-.527,.5,{ic:.033}],95:[-.038,.114,.5,{ic:.065}],126:[.327,-.193,.5,{ic:.06}],305:[.444,0,.239,{ic:.019}],567:[.444,.204,.267,{ic:.019}],768:[.694,-.527,0],769:[.694,-.527,0,{ic:.063}],770:[.694,-.527,0,{ic:.033}],771:[.677,-.543,0,{ic:.06}],772:[.631,-.552,0,{ic:.064}],774:[.694,-.508,0,{ic:.073}],775:[.68,-.576,0],776:[.68,-.582,0,{ic:.04}],778:[.693,-.527,0],779:[.694,-.527,0,{ic:.063}],780:[.654,-.487,0,{ic:.06}],913:[.694,0,.667],914:[.694,0,.667,{ic:.029}],915:[.691,0,.542,{ic:.104}],916:[.694,0,.833],917:[.691,0,.597,{ic:.091}],918:[.694,0,.611,{ic:.091}],919:[.694,0,.708,{ic:.06}],920:[.715,.022,.778,{ic:.026}],921:[.694,0,.278,{ic:.06}],922:[.694,0,.694,{ic:.091}],923:[.694,0,.611],924:[.694,0,.875,{ic:.054}],925:[.694,0,.708,{ic:.058}],926:[.688,0,.667,{ic:.098}],927:[.716,.022,.736,{ic:.027}],928:[.691,0,.708,{ic:.06}],929:[.694,0,.639,{ic:.051}],931:[.694,0,.722,{ic:.091}],932:[.688,0,.681,{ic:.109}],933:[.716,0,.778,{ic:.065}],934:[.694,0,.722,{ic:.021}],935:[.694,0,.667,{ic:.091}],936:[.694,0,.778,{ic:.076}],937:[.716,0,.722,{ic:.047}],8211:[.312,-.236,.5,{ic:.065}],8212:[.312,-.236,1,{ic:.065}],8213:[.312,-.236,1,{ic:.065}],8215:[-.038,.114,.5,{ic:.065}],8216:[.694,-.471,.278,{ic:.058}],8217:[.694,-.471,.278,{ic:.057}],8220:[.694,-.471,.5,{ic:.114}],8221:[.694,-.471,.5],8260:[.75,.25,.5,{ic:.1}],8710:[.694,0,.833]},Object.defineProperty(sansSerifItalic$1,"__esModule",{value:!0}),sansSerifItalic$1.sansSerifItalic=void 0;var FontData_js_1$b=FontData,sans_serif_italic_js_1$1=sansSerifItalic;sansSerifItalic$1.sansSerifItalic=(0,FontData_js_1$b.AddPaths)(sans_serif_italic_js_1$1.sansSerifItalic,{33:"160 187L257 694H306Q355 694 355 693L238 186H199Q160 186 160 187ZM110 2Q111 3 120 49T131 96Q131 98 180 98T229 96L219 50Q209 3 208 2V0H110V2",34:"171 647L180 694H229Q278 694 278 693L276 686Q275 680 273 668T268 644L258 597L182 471H157Q133 471 133 472L189 595Q189 596 174 596H160V598Q160 601 171 647ZM365 647L374 694H423Q472 694 472 693L470 686Q469 680 467 668T462 644L452 597L376 471H351Q327 471 327 472L383 595Q383 596 368 596H354V598Q354 601 365 647",35:"793 170Q809 162 809 149Q809 145 807 141T802 135T796 132L793 130H547L472 -27Q397 -184 394 -187Q389 -194 379 -194Q367 -194 362 -183Q359 -179 359 -173Q360 -168 431 -20L503 129Q503 130 410 130H317L242 -27Q167 -184 164 -187Q159 -194 149 -194Q137 -194 132 -183Q129 -179 129 -173Q130 -168 201 -19L273 130H187L100 131Q87 141 87 150Q87 162 102 170H294L331 248Q339 265 349 286T365 318L370 328Q370 330 258 330Q145 330 142 332Q129 338 129 351Q129 362 140 368Q146 370 267 370L391 371L467 527Q542 684 544 686Q544 688 549 691T560 694H562Q565 693 567 692T571 690T575 686T578 681T579 672Q577 665 507 520T436 373L435 370H528L621 371L692 518Q767 675 769 677Q775 694 789 694Q798 694 804 688T809 672Q806 664 737 519L665 371L751 370Q835 370 841 368Q851 362 851 350Q851 337 841 334T799 330H765H741H645L606 250L568 170H793ZM600 328Q600 330 508 330H415Q412 326 338 171Q338 170 431 170H524L561 248Q569 265 579 286T595 318L600 328",36:"228 70Q233 92 246 155T270 266T280 316Q271 318 265 320T237 333T200 360T172 403T159 468Q159 537 205 600T325 691Q352 701 360 701Q361 701 361 701T362 703T364 711T368 727L372 750H409Q445 750 445 749L436 705Q436 703 450 702T494 691T554 657L565 649Q562 642 548 604L534 568Q511 591 484 605T440 621L424 623L419 624L372 405Q399 400 424 384Q490 338 490 247V240Q490 156 430 85Q374 13 294 -5L284 -7L280 -30Q279 -35 278 -41T275 -52L274 -55Q274 -56 237 -56Q201 -56 201 -54Q202 -53 205 -34T211 -11Q211 -9 206 -9Q154 -2 115 19Q80 35 56 59L88 141L99 131Q109 121 119 113T141 99T160 89T180 82T197 77T214 73T228 70ZM303 426Q304 427 313 471T332 564T345 620L335 616Q287 596 263 549Q252 525 252 499Q252 470 267 451T298 426Q303 424 303 426ZM302 75Q305 75 315 80T340 98T367 125T390 164T399 214Q399 247 384 268T349 297Q338 247 326 186L302 75",37:"268 347Q224 347 195 386T165 488Q165 517 173 552Q191 637 246 693T349 749Q389 749 414 725T448 673T456 614Q456 506 396 427T268 347ZM372 604Q372 674 339 674Q311 674 290 633T261 549T253 482V474Q253 438 272 426Q277 424 286 424Q319 424 345 485T372 604ZM189 -56Q179 -56 173 -49T167 -37Q167 -30 347 198Q425 296 475 360Q780 745 785 747Q790 750 796 750Q814 748 814 730Q814 725 811 719L204 -49Q198 -56 189 -56ZM523 87Q523 184 583 265T713 347Q758 347 786 308T815 207Q815 110 757 28T629 -55Q576 -55 550 -12T523 87ZM729 200Q729 271 696 271Q675 271 658 247T631 189T616 125T611 76Q611 21 644 21H647Q672 21 700 77T729 200",38:"219 -22Q158 -22 117 13T71 111Q71 131 74 150T84 185T98 215T118 241T137 262T159 281T179 295T199 308L214 318L258 348L256 362Q254 373 254 413V435Q254 483 271 537T325 641T411 708Q427 715 441 715Q446 716 455 716Q504 716 534 681T565 590Q565 522 519 468T377 347L358 334Q359 333 363 320T374 290T387 262Q404 227 428 187T460 139Q521 183 574 251T651 362T674 409L710 398Q746 388 747 388Q747 381 720 333T635 213T517 94L510 87Q542 57 598 57Q649 57 708 72Q716 75 718 75L709 34L701 -7Q636 -22 578 -22Q531 -22 498 -8T428 34L408 25Q314 -22 219 -22ZM480 579Q480 640 436 640Q410 640 385 615T351 554Q340 513 340 457Q340 413 343 410Q343 406 360 419Q431 471 455 505T480 579ZM245 57Q279 59 311 67T359 81T375 89T358 113T318 178T281 260L274 277L245 257Q167 205 167 135Q167 110 174 93T194 69T217 60T237 57H245",39:"228 647L237 694H286Q335 694 335 693L334 686Q332 680 330 668T325 644L315 597L239 471H214Q190 471 190 472L246 595Q246 596 231 596H217V598Q217 601 228 647",40:"195 37Q195 -7 200 -47T213 -113T231 -166T250 -204T268 -232T280 -250H204L194 -238Q104 -124 104 55Q104 238 181 432T405 740L417 750H454Q491 750 491 749L468 729Q446 709 411 667T337 565T262 405T208 188Q195 110 195 37",41:"300 463Q300 634 222 740L214 750H290L299 740Q300 738 309 726T323 707T337 682T353 651T367 613T379 566T387 510T390 444Q390 314 344 156T203 -125Q179 -155 145 -191Q111 -224 89 -241L78 -250H2Q4 -248 27 -227T65 -189T107 -140T155 -71T200 16T244 129T278 266Q300 372 300 463",42:"193 608Q193 628 210 644T246 660Q250 660 252 660T257 658T264 654T272 648T284 638T302 623Q340 590 340 593Q341 594 345 623T354 682T360 715Q365 729 378 739T407 750Q424 750 433 740T443 720Q443 712 427 652L410 591L462 623Q505 650 514 655T534 660Q549 660 558 650T568 625Q568 617 567 611T560 599T551 590T536 580T519 571T496 561T470 548L429 528L474 500Q482 495 492 489T506 481T516 475T523 469T527 464T529 458T530 450Q530 430 514 414T479 397H475Q468 397 460 402T423 433Q414 440 404 448T388 461L383 465L365 344Q348 306 314 306Q302 306 292 313T281 338Q281 347 297 404L313 464L260 433Q201 397 195 397H189Q173 397 165 407T156 432Q156 438 157 443T161 452T166 460T175 468T185 475T198 482T212 489T230 497T250 506L295 528L250 556Q203 582 202 585Q193 591 193 608",43:"108 244T108 250T112 261T119 268T124 270H426V272Q428 274 457 419Q489 565 492 573Q497 583 508 583Q516 583 522 577T528 565Q528 553 498 417Q491 384 483 346T471 288L467 270H760Q775 262 775 250T760 230H458Q456 221 426 77T394 -71Q389 -83 375 -83Q367 -83 362 -78T356 -64Q356 -58 387 84Q394 118 401 155T413 210L417 229Q417 230 271 230H124Q123 230 120 232T112 239",44:"90 2Q91 3 100 49T111 96Q111 98 160 98T209 96L199 50Q189 3 188 2Q188 0 149 -63L112 -125H63L120 0H105Q90 0 90 2",45:"66 257V259H332V257L324 220L317 186H184Q51 186 51 187T58 220T66 257",46:"90 2Q91 3 100 49T111 96Q111 98 160 98T209 96L199 50Q189 3 188 2V0H90V2",47:"564 744L568 747Q573 750 579 750Q588 750 594 744T599 729Q597 721 321 241T41 -243Q37 -250 27 -250Q6 -250 6 -230Q6 -228 8 -222Q9 -219 285 261T564 744",48:"245 -22Q209 -22 181 -11T135 20T107 65T92 116T88 171Q88 235 114 354T194 557Q226 606 269 635T340 671T392 678H395Q422 678 446 670T495 643T534 582T549 481Q549 430 534 350T499 213Q459 89 379 25Q315 -22 247 -22H245ZM430 582Q408 601 378 601Q313 601 269 534Q234 475 205 341Q181 232 181 174Q181 104 209 76Q231 54 260 54T318 73T368 125Q410 194 447 375Q460 445 460 487Q460 555 430 582",49:"234 613Q277 613 331 628T428 678H439Q451 678 451 676Q450 671 387 373T323 74T384 73H445L430 0H259L88 1L104 73H229L332 560Q278 541 198 539Q198 540 198 541T199 546T200 554T202 564T205 576L213 612H219Q221 612 226 612T234 613",50:"190 460Q189 460 181 475T164 507T155 527Q155 535 182 571Q259 678 380 678Q462 678 506 630T551 513V507Q551 418 487 349Q469 329 441 305T391 265T344 232T316 212Q158 87 158 86T188 85Q194 85 234 85T311 86Q467 86 467 85Q451 9 449 2V0H50Q54 18 58 40L67 79L133 133Q246 226 269 243Q369 318 410 373T452 492Q452 535 433 560T393 592T350 599Q311 599 279 578T231 532T203 484T190 460",51:"446 542Q446 576 424 590T372 605Q330 605 288 583T216 524Q209 515 208 516Q207 517 192 549L178 580L187 589Q224 627 276 652T386 678Q456 678 500 642T544 550Q544 515 530 482T495 427T453 387T418 362L403 353L413 348Q440 335 462 313Q500 271 500 217Q500 135 423 57T236 -22T63 59L56 68L85 141Q106 112 125 98Q177 54 254 54Q315 54 355 105T396 218Q396 242 393 254Q380 301 335 313Q327 315 280 316Q233 316 233 318L249 392Q298 392 322 399Q373 408 409 453T446 542",52:"78 235L411 656H465Q519 656 519 655T475 447T430 237V235H521V233L505 160Q505 159 459 159H414L380 0H286L320 159H62L63 164Q64 169 66 179T70 198L78 235ZM342 235L421 607Q420 607 419 604Q409 535 197 267Q173 236 173 235H342",53:"330 350Q263 350 214 272H133V275Q134 276 174 467L214 655Q214 656 385 656H555V653Q555 652 554 647T550 631T546 613L539 577H284L265 486Q261 464 256 441T248 406L246 395L250 398Q255 401 264 406T286 415T315 423T350 427Q412 427 455 381T498 256Q498 150 415 64T222 -22Q186 -22 155 -12T105 12T74 41T55 65T50 77L51 79Q61 89 78 112L104 145L107 138Q110 130 114 123T125 106T142 88T165 72T196 60T236 55Q282 55 316 79T366 140T389 208T396 267Q396 310 378 330T337 350H330",54:"437 605Q397 605 361 585T301 536T261 477T236 426T228 401L236 408Q244 414 260 424T296 445T345 462T402 469H404Q422 469 434 467T465 446T498 394Q515 351 515 307Q515 254 497 193T439 85Q352 -22 246 -22Q220 -22 196 -14T148 15T109 78T94 179Q94 272 123 373Q163 505 257 591T450 678Q474 678 498 674T535 664T548 656L540 621L532 586L520 590Q509 594 485 599T437 605ZM339 392Q281 392 233 334T185 163V158Q185 87 230 61Q244 54 262 54Q325 54 371 122Q395 158 407 217T419 298Q419 337 401 364T339 392",55:"173 614L181 656H389Q596 656 596 655L595 650Q594 645 592 635T588 616L580 578L554 551Q313 307 245 4L242 -11H192Q143 -11 143 -10Q144 0 148 17T169 89T212 198T285 327T393 470Q423 504 472 550Q479 555 485 561T496 571L329 570Q163 570 163 571L164 577Q166 583 168 593T173 614",56:"159 470Q159 547 229 612T394 678Q467 678 510 636T554 533Q554 512 549 493T535 458T515 429T492 405T467 386T443 372T423 362T409 356L404 354Q404 353 405 353Q411 353 432 341T476 295T500 218Q500 134 424 56T246 -22Q175 -22 126 22T77 143Q77 204 110 251T188 327L202 334Q216 340 229 346T243 353T235 358T214 372T189 393T168 426T159 470ZM467 527Q467 605 375 605Q317 605 281 566T244 472Q244 429 271 411T334 392Q392 392 429 430T467 527ZM405 228Q405 262 384 289T315 316Q257 316 216 266T174 144Q174 95 199 75T262 54Q329 54 367 109T405 228",57:"220 594Q303 677 389 677Q545 677 545 479Q545 413 526 327Q493 175 398 77T202 -22Q124 -22 77 25L130 91L137 83Q169 54 218 54Q255 54 290 76T347 129Q364 151 380 182T403 232T411 256Q410 255 390 241T353 217T303 197T236 187Q195 187 173 209Q155 226 140 263T124 352Q124 392 135 435Q154 527 220 594ZM455 497Q455 605 383 605Q340 605 305 577T246 492Q220 411 220 360Q220 278 279 264Q280 264 287 264T299 263Q347 263 387 302Q455 375 455 497",58:"174 396L184 444H233Q282 444 282 443Q277 421 272 394L262 346H213Q164 346 164 347Q169 369 174 396ZM90 2Q91 3 100 49T111 96Q111 98 160 98T209 96L199 50Q189 3 188 2V0H90V2",59:"174 396L184 444H233Q282 444 282 443Q277 421 272 394L262 346H213Q164 346 164 347Q169 369 174 396ZM90 2Q91 3 100 49T111 96Q111 98 160 98T209 96L199 50Q189 3 188 2Q188 0 149 -63L112 -125H63L120 0H105Q90 0 90 2",61:"142 368Q145 370 463 370Q780 370 784 368Q796 364 796 350T784 332Q780 330 463 330Q145 330 142 332Q129 338 129 351Q129 362 142 368ZM88 137T88 150T102 170H738Q739 170 742 168T750 161T754 150T750 139T743 132T738 130H102Q88 137 88 150",63:"194 652Q194 654 218 666T284 691T362 704Q444 704 490 678T536 583Q536 541 516 500T459 433Q415 400 387 371T343 313T321 266T307 216L301 186H262Q223 186 223 187Q224 199 228 218T250 288T294 377Q317 413 344 440T391 481T414 499Q442 527 442 574Q442 584 441 590T433 607T409 623T362 629Q335 629 310 624T267 610T235 595T214 582T205 576L200 614Q194 651 194 652ZM173 2Q174 3 183 49T194 96Q194 98 243 98T292 96L282 50Q272 3 271 2V0H173V2",64:"120 267Q120 377 179 478T336 642T538 705Q610 705 658 662T707 513Q707 425 681 331Q658 241 590 179T447 117Q386 117 343 163T300 288Q300 397 374 486T544 576Q575 576 608 562Q590 628 517 628Q406 628 309 522T212 278Q212 179 267 122T404 65T550 91H631Q513 -10 390 -10Q265 -10 193 70T120 267ZM600 397Q600 441 581 471T530 501Q476 501 433 436T390 298Q390 254 409 224T462 193Q512 193 556 257T600 397",91:"148 252L253 750H339Q425 750 425 749L424 744Q423 739 421 729T417 711L409 675L367 674H325L235 252Q145 -167 145 -172Q145 -174 187 -174H229V-176Q213 -240 213 -250H127Q41 -250 41 -248Q41 -245 148 252",93:"353 749Q353 746 303 512T200 27T141 -250H-31Q-31 -240 -15 -176V-174H70L250 674H208L165 675L181 750H267Q353 750 353 749",94:"190 527L360 694H434L484 611Q533 528 533 527H457L390 632L385 639L266 527H190",95:"59 -75L66 -38H316Q565 -38 565 -39T558 -75T549 -112Q549 -114 299 -114Q50 -114 50 -113L52 -108Q53 -103 55 -93T59 -75",126:"330 327Q356 326 388 298T446 269Q470 269 484 327H522Q560 327 560 325L557 316Q554 306 549 292T535 263T512 232T480 208Q453 193 429 193T370 222T315 251Q285 251 275 193H199V197Q214 257 251 292T330 327",305:"168 442T168 443T213 444T258 443T212 225T164 2V0H74V2Q75 7 121 224",567:"-54 -96L-48 -104Q-41 -111 -27 -118T7 -126Q60 -126 82 -87Q85 -81 140 181L196 443Q196 444 241 444T286 443Q286 441 232 186T175 -75Q163 -120 122 -162T19 -204Q-13 -204 -41 -196T-83 -180T-96 -170Q-55 -96 -54 -96",768:"-262 681L-270 694H-177L-132 612Q-89 530 -87 528Q-87 527 -125 527H-163L-208 598Q-254 670 -262 681",769:"-96 625L-29 694H63Q42 673 -31 605L-114 527H-190L-176 541Q-160 559 -96 625",770:"-310 527L-140 694H-66L-16 611Q33 528 33 527H-43L-110 632L-115 639L-234 527H-310",771:"-170 677Q-144 676 -112 648T-54 619Q-30 619 -16 677H22Q60 677 60 675L57 666Q54 656 49 642T35 613T12 582T-20 558Q-47 543 -71 543T-130 572T-185 601Q-215 601 -225 543H-301V547Q-286 607 -249 642T-170 677",772:"-314 553L-297 631H-116Q64 631 64 630Q60 612 56 591L47 553L-133 552Q-314 552 -314 553",774:"-142 508Q-205 508 -244 548T-284 652Q-284 666 -281 683L-280 694H-204Q-205 689 -205 677Q-205 650 -196 631T-173 604T-147 593T-125 590Q-85 590 -50 618T-5 686L-2 694H73V690Q53 610 -10 559T-142 508",775:"-180 578Q-179 579 -170 627T-158 678V680H-54V678Q-56 675 -65 627T-76 578V576H-180V578",776:"-273 584Q-272 585 -262 632L-252 678V680H-154V678L-164 632Q-174 585 -175 584Q-175 582 -224 582T-273 584ZM-78 586Q-78 587 -69 632T-58 678V680H40L39 677Q39 676 38 670T34 651T29 628L19 583L-30 582H-79L-78 586",778:"-227 597Q-227 639 -186 666T-102 693H-97Q-29 693 -8 649Q-2 637 -2 623Q-2 582 -43 555T-132 527Q-171 527 -199 546T-227 597ZM-59 619Q-59 635 -68 643T-104 652Q-142 652 -156 636T-171 602Q-171 569 -123 569Q-119 569 -111 570T-99 571Q-59 582 -59 619",779:"-236 619L-195 694H-149Q-103 694 -103 693L-211 527H-287L-282 536Q-281 539 -236 619ZM-70 619L-29 694H17Q63 694 63 693L-45 527H-121L-116 536Q-115 539 -70 619",780:"-283 654H-207L-140 549L-135 542L-16 654H60L-109 487H-147L-184 488L-234 570Q-283 653 -283 654",913:"28 0L429 694H533L585 350Q596 275 610 182T632 46L638 3V0H530L528 18Q527 25 515 103T503 183H223L135 29L118 1L73 0H28ZM492 254Q492 256 473 398T454 589V610Q433 552 290 301L264 255L378 254H492",914:"501 363Q557 355 605 316T653 222Q653 148 586 85T403 2Q394 1 240 0Q90 0 90 1L100 46Q109 90 128 177T164 348L238 694H375Q518 693 546 688Q614 674 655 635T696 544Q696 490 648 441T516 368L501 363ZM601 530Q601 568 566 590T479 621Q472 622 394 623H320L297 513Q292 489 286 459T276 415L273 401V399H339H372Q504 399 571 466Q601 498 601 530ZM257 322Q256 320 230 197T203 73Q203 71 289 71Q379 72 387 73Q459 84 507 122T556 210Q556 255 519 283T428 320Q415 322 336 323Q257 323 257 322",915:"87 2Q88 4 160 346T234 689Q234 691 440 691T646 689Q643 686 629 611H475L321 612Q193 4 191 2V0H87V2",916:"273 343L510 694H617Q790 2 790 0H416L42 1L273 343ZM539 576Q536 597 536 600Q536 602 535 605Q534 607 534 607Q527 580 222 130L201 98H651L648 110Q645 123 639 149T627 198Q554 489 539 576",917:"86 2Q88 4 160 346T233 689Q233 691 461 691Q688 691 688 689Q685 686 671 611H495L320 612L319 609Q319 607 297 501L274 397H436Q597 397 597 396L596 391Q595 386 593 376T589 358L581 322L420 321Q258 321 258 320Q209 89 208 87Q208 85 390 85Q417 85 460 85T518 86L572 85Q556 8 554 2V0H86V2",918:"67 54Q551 615 551 617Q543 618 517 618Q510 618 463 618T376 617Q200 617 200 618T209 657L216 694H459Q702 694 702 692Q702 689 697 667L692 643L207 80H392Q493 81 577 81Q577 70 560 2V0H55V2L67 54",919:"517 2Q518 3 551 161T585 322Q586 323 557 323T422 323H259L190 0H138Q86 0 86 1L96 46Q105 90 124 177T160 348L234 694H337V691Q336 690 306 545T275 399H602L603 403Q603 407 634 551L665 694H768V691Q768 690 695 348T621 2V0H517V2",920:"119 260Q119 348 157 433T254 579T387 677T533 715Q701 715 772 574Q804 511 804 431Q804 315 744 209T586 41T384 -22Q262 -22 191 59T119 260ZM706 426Q706 524 655 582T525 640Q454 640 395 600T293 502Q256 447 237 383T218 266Q218 168 269 112T401 55Q518 55 612 166T706 426ZM283 349L293 397H473Q652 397 652 396Q647 374 642 347L632 299H452Q273 299 273 300Q278 322 283 349",921:"161 348L235 694H338V691Q338 690 265 348T191 2V0H139Q87 0 87 1L96 46Q106 90 125 177T161 348",922:"236 223Q235 222 213 113T188 2V0H138Q88 0 88 1L98 46Q107 90 126 177T162 348L236 694H285Q335 694 335 693L330 671Q326 649 316 603T298 518Q289 477 280 433T266 366L261 343L672 694H729L784 693L465 420L651 0H596L541 1L384 350Q383 351 310 288T236 223",923:"28 0L401 694H504V690Q505 686 543 345T582 1Q582 0 528 0H473V3Q472 6 460 113T435 359T422 558Q422 593 424 603L425 610L424 608Q414 572 343 431Q287 316 143 49L117 1L73 0H28",924:"375 691Q456 215 459 124V106Q488 177 762 641L793 694H929V691Q929 690 856 348T782 2V0H689V2Q691 4 753 304Q817 604 818 606Q819 611 817 608Q817 607 815 603Q798 559 540 117L484 22H440L397 23L393 42Q393 47 373 169T334 422T315 594V609L250 306Q186 3 185 2Q185 0 138 0Q92 0 92 1L102 46Q111 90 130 177T166 348L240 694H375V691",925:"311 609Q310 608 246 306T181 2V0H134Q88 0 88 1L98 46Q107 90 126 177T162 348L236 694H382L383 691Q383 688 418 561T493 286T541 97L544 84L545 89Q545 90 553 128T578 246T610 394L674 694H766V691Q766 690 693 348T619 2V0H472L469 13Q468 17 393 293T312 605L311 609",926:"193 687Q193 688 479 688H765V686Q764 685 755 642L747 600H461L175 601Q175 602 184 645L193 687ZM196 400Q196 401 418 401T640 400L622 315Q622 314 400 314T178 315L196 400ZM42 2Q43 3 51 44T60 87H64Q68 87 75 87T93 87T119 87T151 88T190 88T237 88T291 88T352 88H643Q638 66 634 44T627 13T624 2V0H42V2",927:"118 254Q118 366 174 473T324 648T517 716Q627 716 695 638T763 435Q763 321 706 215T555 43T362 -22Q256 -22 187 56T118 254ZM380 58Q452 58 518 116T622 263T661 442Q661 496 646 535T608 594T567 622T534 634Q516 636 496 636Q400 636 313 528T225 264Q225 172 267 115T380 58",928:"86 2Q88 4 160 346T233 689Q233 691 501 691Q768 691 768 689Q766 688 694 346T621 2V0H517V2Q518 3 582 304T646 609L648 615H321L190 0H86V2",929:"162 348L236 694H378Q522 693 530 692Q604 680 647 635T690 524Q690 474 665 430T612 359Q550 299 465 280Q443 275 343 274H250V271Q250 269 235 201T206 68T192 2V0H140Q88 0 88 1L98 46Q107 90 126 177T162 348ZM594 513Q594 560 562 588T477 622Q470 623 394 623H321L293 487L263 349V347H342H347H375Q530 347 578 449Q594 483 594 513",931:"194 655L202 694H508Q813 694 813 693Q809 675 805 653L797 614H559L321 615Q327 606 405 478L485 347Q449 311 348 203T247 86Q247 84 294 84Q303 84 359 84T465 85H684Q684 84 675 42L666 0H360L55 1L195 154Q346 319 347 320L359 333L273 473Q187 614 186 614L187 620Q188 625 190 635T194 655",932:"165 608L182 687Q182 688 486 688H790L789 685L781 645L773 609H521L457 306Q393 3 392 2Q392 0 340 0H288V2Q289 5 353 304T417 605V609L291 608H165",933:"357 637Q320 637 297 612T266 555H173Q178 576 188 598Q214 651 265 683T373 716Q497 716 497 542V509L504 526Q579 715 711 715Q773 715 808 677T843 589Q843 576 840 555H747L748 557Q748 559 748 563T749 574V580Q749 604 731 622Q715 638 693 638Q591 638 543 465Q531 425 506 309T462 98T441 2V0H337V2Q425 401 436 486Q438 504 438 526Q438 637 364 637H357",934:"124 308Q124 399 208 481T433 587Q437 587 437 589Q438 590 449 643L459 694H508Q557 694 557 693Q557 691 546 641T535 587Q543 587 562 583T614 565T674 531T722 472T743 387Q743 288 656 209T449 110L433 106Q411 3 410 2Q410 0 361 0H312L313 3Q313 5 324 56L335 107H331L321 108Q311 110 297 114T266 124T228 141T190 168Q124 225 124 308ZM227 315Q227 282 239 257T270 218T306 197T338 186L350 184H351L386 346Q420 507 420 509H419Q411 509 393 505T342 485T284 444Q227 387 227 315ZM642 381Q642 413 629 437T599 475T563 496T533 507T519 510Q518 510 484 348T450 184Q544 201 593 258T642 381",935:"14 0Q17 3 184 184T352 367L265 529Q244 567 222 609T188 672L176 692Q176 694 236 694H297L338 612Q387 515 400 489L421 448L645 694H758L708 640Q481 393 456 368Q455 366 500 281T596 104T652 0H531L388 293L128 0H14",936:"325 556Q325 524 310 447T294 330Q294 289 304 260Q314 234 333 216T364 192T380 187L488 694H585V691Q584 689 531 438L478 188H479Q485 188 503 195T555 231T613 305Q637 352 654 435Q662 470 669 496T681 538T690 562T698 578T704 587Q719 609 733 615T772 621H802H854V619L838 546Q838 545 832 545Q775 539 749 418Q716 274 638 196Q616 173 590 156T543 131T503 117T473 110T460 106Q460 105 450 54T438 2V0H340V2Q341 3 351 54T362 106Q363 107 358 108T344 111T322 117T295 128T267 145T239 171T216 207T200 256T194 319Q194 356 203 408T213 483Q213 517 203 530T182 544T171 546Q184 609 187 619V621H239Q286 621 294 620T309 612Q325 596 325 556",937:"148 407Q148 475 182 534T269 633T386 694T511 716Q622 716 695 658T769 507Q769 461 747 409T699 321T628 225T562 136Q533 90 533 86Q542 85 557 85Q564 85 583 85T614 86Q695 86 695 85Q679 9 677 2V0H425Q426 3 433 30T447 72T480 131T549 241L554 248Q558 254 563 261T576 281T592 306T609 335T625 366T640 400T653 434T661 466T664 498Q664 562 618 601T497 640Q416 640 351 596T262 482Q250 441 250 392T276 237T302 70V56Q302 28 296 2V0H44V2L62 85Q62 86 143 86L225 85V88Q224 89 224 89T224 91T224 95T223 101T222 110T220 123T216 140T209 163T200 191T188 227Q148 344 148 407",8211:"59 275L66 312H316Q565 312 565 311T558 275T549 238Q549 236 299 236Q50 236 50 237L52 242Q53 247 55 257T59 275",8212:"59 275L66 312H566Q1065 312 1065 311T1058 275T1049 238Q1049 236 549 236Q50 236 50 237L52 242Q53 247 55 257T59 275",8213:"59 275L66 312H566Q1065 312 1065 311T1058 275T1049 238Q1049 236 549 236Q50 236 50 237L52 242Q53 247 55 257T59 275",8215:"59 -75L66 -38H316Q565 -38 565 -39T558 -75T549 -112Q549 -114 299 -114Q50 -114 50 -113L52 -108Q53 -103 55 -93T59 -75",8216:"309 567L299 520Q289 474 288 473Q288 471 239 471T190 473L192 480Q193 486 196 499T201 522L211 569L287 694H312L335 693L332 685Q328 677 321 661T307 630L279 570L294 569Q309 569 309 567",8217:"228 647L237 694H286Q335 694 335 693L334 686Q332 680 330 668T325 644L315 597L239 471H214Q190 471 190 472L246 595Q246 596 231 596H217V598Q217 601 228 647",8220:"393 567L383 520Q373 474 372 473Q372 471 323 471T274 473L276 480Q277 486 280 499T285 522L295 569L371 694H396L419 693L416 685Q412 677 405 661T391 630L363 570L378 569Q393 569 393 567ZM587 567L577 520Q567 474 566 473Q566 471 517 471T468 473L470 480Q471 486 474 499T479 522L489 569L565 694H590L613 693L610 685Q606 677 599 661T585 630L557 570L572 569Q587 569 587 567",8221:"171 647L180 694H229Q278 694 278 693L276 686Q275 680 273 668T268 644L258 597L182 471H157Q133 471 133 472L189 595Q189 596 174 596H160V598Q160 601 171 647ZM365 647L374 694H423Q472 694 472 693L470 686Q469 680 467 668T462 644L452 597L376 471H351Q327 471 327 472L383 595Q383 596 368 596H354V598Q354 601 365 647",8260:"564 744L568 747Q573 750 579 750Q588 750 594 744T599 729Q597 721 321 241T41 -243Q37 -250 27 -250Q6 -250 6 -230Q6 -228 8 -222Q9 -219 285 261T564 744",8710:"273 343L510 694H617Q790 2 790 0H416L42 1L273 343ZM539 576Q536 597 536 600Q536 602 535 605Q534 607 534 607Q527 580 222 130L201 98H651L648 110Q645 123 639 149T627 198Q554 489 539 576"},{});var sansSerif$1={},sansSerif={};Object.defineProperty(sansSerif,"__esModule",{value:!0}),sansSerif.sansSerif=void 0,sansSerif.sansSerif={33:[.694,0,.319],34:[.694,-.471,.5],35:[.694,.194,.833],36:[.75,.056,.5],37:[.75,.056,.833],38:[.716,.022,.758],39:[.694,-.471,.278],40:[.75,.25,.389],41:[.75,.25,.389],42:[.75,-.306,.5],43:[.583,.082,.778],44:[.098,.125,.278],45:[.259,-.186,.333],46:[.098,0,.278],47:[.75,.25,.5],58:[.444,0,.278],59:[.444,.125,.278],61:[.37,-.13,.778],63:[.704,0,.472],64:[.704,.011,.667],91:[.75,.25,.289],93:[.75,.25,.289],94:[.694,-.527,.5],95:[-.038,.114,.5],126:[.327,-.193,.5],305:[.444,0,.239],567:[.444,.205,.267],768:[.694,-.527,0],769:[.694,-.527,0],770:[.694,-.527,0],771:[.677,-.543,0],772:[.631,-.552,0],774:[.694,-.508,0],775:[.68,-.576,0],776:[.68,-.582,0],778:[.694,-.527,0],779:[.694,-.527,0],780:[.654,-.487,0],913:[.694,0,.667],914:[.694,0,.667],915:[.691,0,.542],916:[.694,0,.833],917:[.691,0,.597],918:[.694,0,.611],919:[.694,0,.708],920:[.716,.021,.778],921:[.694,0,.278],922:[.694,0,.694],923:[.694,0,.611],924:[.694,0,.875],925:[.694,0,.708],926:[.688,0,.667],927:[.715,.022,.736],928:[.691,0,.708],929:[.694,0,.639],931:[.694,0,.722],932:[.688,0,.681],933:[.716,0,.778],934:[.694,0,.722],935:[.694,0,.667],936:[.694,0,.778],937:[.716,0,.722],8211:[.312,-.236,.5],8212:[.312,-.236,1],8213:[.312,-.236,1],8215:[-.038,.114,.5],8216:[.694,-.471,.278],8217:[.694,-.471,.278],8220:[.694,-.471,.5],8221:[.694,-.471,.5],8260:[.75,.25,.5],8710:[.694,0,.833]},Object.defineProperty(sansSerif$1,"__esModule",{value:!0}),sansSerif$1.sansSerif=void 0;var FontData_js_1$a=FontData,sans_serif_js_1$1=sansSerif;sansSerif$1.sansSerif=(0,FontData_js_1$a.AddPaths)(sans_serif_js_1$1.sansSerif,{33:"120 187Q120 225 115 440T110 693Q110 694 159 694T208 693Q208 655 203 440T198 187Q198 186 159 186T120 187ZM110 0V98H208V0H110",34:"33 596V694H131V597L82 471H32L47 532Q62 593 63 594Q63 596 48 596H33ZM227 596V694H325V597L276 471H226L241 532Q256 593 257 594Q257 596 242 596H227",35:"56 350Q56 363 70 370H192Q314 370 314 371L356 526Q396 676 401 685Q406 694 416 694Q423 694 429 689T436 677Q436 673 396 523T355 371Q355 370 449 370Q544 370 544 371L586 526Q628 682 630 685Q636 694 646 694Q653 694 659 689T665 678Q665 670 645 593T605 444L585 371Q585 370 673 370H762Q777 362 777 350Q777 337 767 334T723 330H668H573L567 305Q560 282 545 226L530 171L646 170H721Q756 170 766 167T777 150Q777 138 762 130H640Q518 130 518 129L476 -26Q434 -182 432 -185Q426 -194 416 -194Q409 -194 403 -189T397 -178Q397 -170 417 -93T457 56L477 129Q477 130 383 130Q288 130 288 129L246 -26Q204 -182 202 -185Q196 -194 186 -194Q179 -194 173 -189T167 -178Q167 -170 187 -94T227 56L247 129Q247 130 159 130H70Q56 137 56 150Q56 165 72 170H259L265 195Q273 222 287 275L302 330H186L70 331Q63 334 58 339Q56 343 56 350ZM489 170L532 330H343L337 305Q330 282 315 226L300 171L394 170H489",36:"55 509Q55 585 103 638T213 701V750H286V703H289Q312 703 354 689Q372 682 399 666T427 646L413 569Q413 568 403 575Q352 615 291 624H286V405Q357 389 400 331T444 199Q444 128 402 69T286 -7V-56H213V-9Q167 -3 125 14T63 44T44 60Q44 61 52 101L59 140L69 132Q78 125 87 119T107 107T124 97T141 90T157 84T173 80T187 76T201 73T213 70V317L202 319Q141 335 98 386T55 509ZM213 424V620L203 615Q143 587 143 522Q143 455 213 424ZM356 187Q356 208 350 227T334 258T315 280T298 293T287 297Q286 297 286 186V75Q356 110 356 187",37:"56 549Q56 639 98 694T195 750Q248 750 290 694T332 548Q332 455 290 401T195 347Q141 347 99 403T56 549ZM248 549Q248 602 234 638T195 674Q145 674 145 549Q145 423 195 423Q219 423 233 459T248 549ZM197 -56Q187 -56 182 -49T176 -35Q176 -33 178 -27Q179 -25 399 356T623 741Q626 750 639 750Q648 750 654 744T659 729Q657 721 435 336T207 -52Q203 -56 197 -56ZM500 146Q500 235 542 291T639 347Q692 347 734 293T776 146Q776 53 733 -1T639 -56Q587 -56 544 -2T500 146ZM692 146Q692 199 678 235T639 271Q589 271 589 146Q589 20 639 20Q663 20 677 56T692 146",38:"156 502Q156 600 198 658T302 716Q367 716 405 665T444 549Q444 531 442 523Q426 446 304 348L287 334Q305 297 340 249T402 170T430 139T443 149T472 181T509 231T549 303T583 394Q584 398 586 404Q587 408 587 409Q588 409 626 399T665 388Q663 381 660 369T644 322T614 253T567 176T502 98L491 87Q534 57 584 57Q653 57 700 75Q702 75 702 34T700 -7Q652 -22 586 -22H580Q505 -22 434 26L421 34Q419 33 405 25T374 11T336 -4T285 -17T226 -22Q143 -22 93 31T42 152Q42 184 51 211T81 260T111 291T144 317L184 348L178 365Q156 430 156 502ZM359 552Q359 588 345 614T302 640Q292 640 282 636T260 622T241 590T233 535Q236 474 253 417L257 407L271 419Q312 454 330 479Q359 514 359 552ZM345 102Q262 190 216 277Q215 277 204 267T180 247T165 236Q135 208 135 159Q135 123 152 97T198 61Q207 58 227 58Q286 58 357 89L345 102",39:"90 596V694H188V597L139 471H89L104 532Q119 593 120 594Q120 596 105 596H90",40:"74 250Q74 564 240 733L257 750H333L323 739Q167 573 167 250T323 -239L333 -250H257L240 -233Q74 -63 74 250",41:"221 -73T221 250T65 739L55 750H131L148 733Q314 567 314 250T148 -233L131 -250H55L65 -239Q221 -73 221 250",42:"208 717Q211 731 222 740T250 750Q265 750 277 741T291 717Q291 706 290 675T286 617L285 591L329 622Q369 651 376 655T393 659Q411 659 423 647T436 616Q436 609 434 603T429 594T419 585T407 577T389 567T368 556L316 528L368 500Q421 472 429 464Q436 455 436 440Q436 422 423 409T393 396Q390 396 388 396T384 397T380 398T375 401T367 406T358 413T346 422T329 434L285 465Q284 465 285 438T289 381T291 347Q291 327 278 317T250 306Q234 306 222 315T208 339Q208 350 209 381T212 439L214 465L170 434Q130 405 123 401T106 397Q88 397 76 409T63 440Q63 447 65 453T70 462T80 471T92 479T110 489T131 500L183 528L131 556Q78 584 70 592Q63 601 63 616Q63 634 76 647T106 660Q109 660 111 660T115 659T119 658T124 655T132 650T141 643T153 634T170 622L214 591L212 617Q211 643 210 674T208 717",43:"56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250",44:"90 0V98H188V1L139 -125H89L104 -64Q119 -3 120 -2Q120 0 105 0H90",45:"11 186V259H277V186H11",46:"90 0V98H188V0H90",47:"423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750",58:"90 346V444H188V346H90ZM90 0V98H188V0H90",59:"90 346V444H188V346H90ZM90 0V98H188V1L139 -125H89L104 -64Q119 -3 120 -2Q120 0 105 0H90",61:"56 350Q56 363 70 370H707Q722 362 722 350Q722 339 708 331L390 330H72Q56 335 56 350ZM56 150Q56 165 72 170H708Q722 160 722 150Q722 138 707 130H70Q56 137 56 150",63:"55 652Q63 658 77 666T132 689T214 704T265 703Q303 698 332 684T376 653T401 615T413 578T416 546Q416 475 360 426Q325 396 303 365T273 303T263 256T261 216V186H183V225Q184 281 194 322Q206 368 232 409T276 469T306 495Q323 517 323 550Q323 596 297 612T223 629Q187 629 157 618Q122 607 91 583L83 576L55 652ZM173 0V98H271V0H173",64:"422 576Q440 576 456 573T480 566L488 563Q488 565 484 571T472 588T452 607T424 622T387 629Q294 629 220 550T146 347Q146 233 210 155T365 66Q376 65 400 65Q465 68 517 86L532 91H612L598 76Q511 -11 388 -11Q250 -11 153 93T56 347Q56 454 107 538T231 663T378 704Q446 704 492 680T564 608T599 506T611 376Q611 320 607 299Q595 227 546 173T422 118Q343 118 288 185T232 347Q232 444 287 510T422 576ZM520 347Q520 429 487 465T421 501Q385 501 354 461T323 347Q323 270 355 232T422 193Q454 193 487 229T520 347",91:"94 -250V750H266V674H181V-174H266V-250H94",93:"22 674V750H194V-250H22V-174H107V674H22",94:"146 612L212 694H287L353 612Q417 532 420 529Q421 528 418 527Q414 527 383 527H345L250 639Q244 633 199 580L154 527H116Q79 528 79 529Q82 532 146 612",95:"0 -114V-38H499V-114H0",126:"83 204Q86 254 113 290T186 327Q211 327 251 299T312 270Q337 270 340 315V327H416V316Q413 258 382 226T315 193Q289 193 249 221T187 250Q162 250 159 205V193H83V204",305:"74 0V444H164V0H74",567:"-35 -95Q-4 -126 34 -126Q58 -126 76 -116T100 -88Q102 -82 102 181V444H192V180Q191 -45 191 -70T184 -113Q171 -152 140 -178T63 -205Q34 -205 4 -197T-43 -181T-59 -171L-47 -133L-35 -95",768:"-415 692L-417 694H-324L-262 612Q-249 594 -233 572T-208 539L-200 528L-237 527H-275L-344 608Q-359 625 -378 647T-406 680T-415 692",769:"-239 612L-177 694H-84L-86 692Q-86 691 -95 681T-123 648T-157 608L-226 527H-264L-301 528L-293 539Q-285 550 -269 572T-239 612",770:"-354 612L-288 694H-213L-147 612Q-83 532 -80 529Q-79 528 -82 527Q-86 527 -117 527H-155L-250 639Q-256 633 -301 580L-346 527H-384Q-421 528 -421 529Q-418 532 -354 612",771:"-417 554Q-414 604 -387 640T-314 677Q-289 677 -249 649T-188 620Q-163 620 -160 665V677H-84V666Q-87 608 -118 576T-185 543Q-211 543 -251 571T-313 600Q-338 600 -341 555V543H-417V554",772:"-431 552V631H-70V552H-431",774:"-250 508Q-331 508 -379 567T-427 689V694H-351V685Q-348 649 -321 620T-250 591Q-206 591 -180 619T-150 685V694H-74V689Q-74 624 -122 566T-250 508",775:"-302 576V680H-198V576H-302",776:"-397 582V680H-299V582H-397ZM-202 582V680H-104V582H-202",778:"-319 611Q-319 649 -285 671T-211 694Q-164 694 -132 671T-99 611Q-99 572 -133 550T-209 527T-285 549T-319 611ZM-155 610Q-155 635 -171 643T-215 651Q-263 651 -263 610Q-263 570 -211 570H-209H-207Q-155 570 -155 610",779:"-250 693Q-317 544 -323 527H-399L-343 694H-296Q-250 694 -250 693ZM-84 693Q-151 544 -157 527H-233L-177 694H-130Q-84 694 -84 693",780:"-421 652Q-422 653 -419 654Q-415 654 -384 654H-346L-301 601Q-287 585 -275 571T-258 551T-250 542L-155 654H-117Q-80 653 -80 652Q-83 649 -147 569L-213 487H-288L-354 569Q-418 649 -421 652",913:"183 181Q183 179 152 91T118 0H28L154 346L280 693Q281 694 333 694H385L511 349Q636 4 638 2Q638 0 584 0H530L464 183H184L183 181ZM324 606Q319 578 292 492T238 332T210 256Q210 254 324 254T438 255L429 281L419 308Q409 336 395 378T365 465T339 551T324 611V606",914:"425 363Q438 363 465 353T526 324T585 270T610 192Q610 132 561 78T426 7Q404 2 387 2T240 0H90V694H227Q373 693 396 689Q484 673 533 623T583 517Q583 494 574 473T551 437T520 409T487 388T456 374T433 366L425 363ZM490 516Q490 527 485 539T467 568T423 599T347 621Q340 622 262 623H188V399H261H286Q432 399 478 475Q490 496 490 516ZM514 190Q514 245 462 280T343 322Q336 323 259 323H188V71H274Q365 72 388 77Q445 88 479 121T514 190",915:"87 0V691H499V611H345L191 612V0H87",916:"203 348L362 694H470L629 348Q789 2 790 1Q790 0 416 0T42 1Q43 2 203 348ZM630 98Q630 100 584 198T481 422T407 603L405 610L403 600Q388 544 191 122L180 99L405 98H630",917:"86 0V691H541V611H366L190 612V397H513V321H190V85H372L554 86V0H86",918:"69 617V694H555V643L373 362Q190 81 190 79H234Q244 79 272 79T344 80T419 81H560V0H55V53L237 334Q420 615 420 617Q413 618 387 618Q380 618 334 618T245 617H69",919:"86 0V694H190V399H517V694H621V0H517V323H190V0H86",920:"56 344Q56 430 86 502T164 619T271 690T388 716Q448 716 506 691T613 619T692 501T722 344Q722 188 624 84T389 -21Q252 -21 154 83T56 344ZM624 345Q624 423 597 488T513 596T380 639Q343 639 305 621T232 568T175 475T153 344Q153 216 222 136T388 56Q487 56 555 138T624 345ZM209 299V397H568V299H209",921:"87 0V694H191V0H87",922:"88 0V694H188V519L189 343L525 694H638L375 419L651 0H541L309 351L188 225V0H88",923:"294 606Q294 574 252 430T163 144T117 0H72Q28 0 28 1T141 348L254 694H357L469 348Q582 2 582 1T527 0L473 1L469 11Q469 13 427 141T343 411T296 599L294 610V606",924:"92 0V694H228L233 680Q236 675 284 547T382 275T436 106Q446 149 497 292T594 558L640 680L645 694H782V0H689V305L688 606Q688 577 500 78L479 23H392L364 96Q364 97 342 156T296 280T246 418T203 544T186 609V588Q185 568 185 517T185 427T185 305V0H92",925:"88 0V694H235L252 659Q261 639 364 428T526 84V694H619V0H472L455 35Q453 39 330 294T185 601L181 611V0H88",926:"47 600V688H619V600H47ZM111 314V401H555V314H111ZM42 0V88H624V0H42",927:"55 345Q55 504 149 609T361 715Q386 715 406 713Q521 696 600 592T680 344Q680 193 590 86T368 -22Q239 -22 147 84T55 345ZM276 59T368 59T518 146T576 360Q576 473 525 545T401 634Q371 637 362 637Q284 637 222 562T159 360T217 147",928:"86 0V691H621V0H517V615H190V0H86",929:"88 0V694H230Q347 693 370 692T410 686Q487 667 535 611T583 485Q583 409 527 348T379 276Q369 274 279 274H192V0H88ZM486 485Q486 523 471 551T432 593T391 612T357 621Q350 622 268 623H189V347H268Q350 348 357 349Q370 351 383 354T416 368T450 391T475 429T486 485",931:"55 0Q56 3 171 167T288 332Q288 334 172 474L55 615V694H666V614H428L190 615L412 347L322 218Q236 97 228 84L447 85H666V0H55",932:"36 608V688H644V608H518L392 609V0H288V609L162 608H36",933:"55 565Q59 625 105 670T219 716H222Q310 716 353 627Q376 583 386 524L389 510L393 532Q397 555 407 584T433 644T482 695T557 716Q621 716 669 673T722 565V555H629V563Q627 592 607 615T557 638Q530 638 511 629T479 598T459 553T447 488T442 411T441 319V202V0H337V202Q337 453 331 497Q313 634 226 638Q185 638 167 612T148 563V555H55V565",934:"666 347Q666 326 661 302T638 247T594 190T520 140T413 107H410V0H312V54Q312 107 311 107Q286 107 229 128T125 192Q55 260 55 347Q55 396 77 438T131 507T200 552T265 579T311 587Q312 587 312 641V694H410V587H413Q476 576 524 552T598 502T640 444T661 390T666 347ZM310 510Q305 510 291 507T252 492T208 464T172 416T157 347T171 279T204 233T247 205T286 190T310 184H312V347Q312 510 310 510ZM564 347Q564 385 549 416T514 463T470 491T433 505T414 509L410 510V184Q413 184 426 187T464 200T510 227T548 275T564 347",935:"14 0Q16 5 144 184T275 367L153 528Q121 571 88 615T42 674T28 694H150L228 584Q315 463 316 461L326 448L497 694H610L609 692Q606 689 492 528Q440 454 409 410T378 366Q378 365 515 182L652 0H531L326 292Q326 293 299 254T226 146L128 0H14",936:"340 187V694H438V187Q481 206 495 219Q518 239 533 267T553 332T560 386T562 435Q562 576 593 608Q608 621 637 621H670H722V545H719Q718 545 715 545T710 544Q679 536 666 487Q664 474 662 429T654 344T633 259T580 175T486 119Q450 109 438 108V0H340V108L326 110Q122 149 117 415Q116 460 111 487Q98 536 67 544Q65 544 62 544T58 545H55V621H107Q160 621 163 620Q191 613 202 573Q213 536 213 473T220 351T256 249Q262 239 270 230T285 216T301 205T316 197T329 192T340 187",937:"55 462Q55 561 141 638T359 716Q492 716 579 640T666 462Q666 407 642 347T579 222T529 126Q515 91 515 86Q517 85 528 85Q530 85 552 85T596 86H677V0H425V14Q429 79 465 168L492 228Q494 232 504 254T516 283T527 310T539 340T548 368T556 399T560 428T562 460Q562 531 510 585T361 639Q263 639 211 585T159 460Q159 422 170 378T192 309T229 228L256 168Q292 79 296 14V0H44V86H125Q146 86 168 86T193 85L206 86Q206 103 183 148T131 241T79 352T55 462",8211:"0 236V312H499V236H0",8212:"0 236V312H999V236H0",8213:"0 236V312H999V236H0",8215:"0 -114V-38H499V-114H0",8216:"90 568L140 694H189L174 633Q159 572 158 571Q158 569 173 569H188V471H90V568",8217:"90 596V694H188V597L139 471H89L104 532Q119 593 120 594Q120 596 105 596H90",8220:"174 568L224 694H273L258 633Q243 572 242 571Q242 569 257 569H272V471H174V568ZM368 568L418 694H467L452 633Q437 572 436 571Q436 569 451 569H466V471H368V568",8221:"33 596V694H131V597L82 471H32L47 532Q62 593 63 594Q63 596 48 596H33ZM227 596V694H325V597L276 471H226L241 532Q256 593 257 594Q257 596 242 596H227",8260:"423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750",8710:"203 348L362 694H470L629 348Q789 2 790 1Q790 0 416 0T42 1Q43 2 203 348ZM630 98Q630 100 584 198T481 422T407 603L405 610L403 600Q388 544 191 122L180 99L405 98H630"},{});var scriptBold$1={},scriptBold={};Object.defineProperty(scriptBold,"__esModule",{value:!0}),scriptBold.scriptBold=void 0,scriptBold.scriptBold={},function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.scriptBold=void 0;var t=scriptBold;Object.defineProperty(e,"scriptBold",{enumerable:!0,get:function(){return t.scriptBold}})}(scriptBold$1);var script$1={},script={};Object.defineProperty(script,"__esModule",{value:!0}),script.script=void 0,script.script={},function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.script=void 0;var t=script;Object.defineProperty(e,"script",{enumerable:!0,get:function(){return t.script}})}(script$1);var smallop$1={},smallop={};Object.defineProperty(smallop,"__esModule",{value:!0}),smallop.smallop=void 0,smallop.smallop={40:[.85,.349,.458],41:[.85,.349,.458],47:[.85,.349,.578],91:[.85,.349,.417],92:[.85,.349,.578],93:[.85,.349,.417],123:[.85,.349,.583],125:[.85,.349,.583],710:[.744,-.551,.556],732:[.722,-.597,.556],770:[.744,-.551,0],771:[.722,-.597,0],8214:[.602,0,.778],8260:[.85,.349,.578],8593:[.6,0,.667],8595:[.6,0,.667],8657:[.599,0,.778],8659:[.6,0,.778],8719:[.75,.25,.944],8720:[.75,.25,.944],8721:[.75,.25,1.056],8730:[.85,.35,1,{ic:.02}],8739:[.627,.015,.333],8741:[.627,.015,.556],8747:[.805,.306,.472,{ic:.138}],8748:[.805,.306,.819,{ic:.138}],8749:[.805,.306,1.166,{ic:.138}],8750:[.805,.306,.472,{ic:.138}],8896:[.75,.249,.833],8897:[.75,.249,.833],8898:[.75,.249,.833],8899:[.75,.249,.833],8968:[.85,.349,.472],8969:[.85,.349,.472],8970:[.85,.349,.472],8971:[.85,.349,.472],9001:[.85,.35,.472],9002:[.85,.35,.472],9168:[.602,0,.667],10072:[.627,.015,.333],10216:[.85,.35,.472],10217:[.85,.35,.472],10752:[.75,.25,1.111],10753:[.75,.25,1.111],10754:[.75,.25,1.111],10756:[.75,.249,.833],10758:[.75,.249,.833],10764:[.805,.306,1.638,{ic:.138}],12296:[.85,.35,.472],12297:[.85,.35,.472]},Object.defineProperty(smallop$1,"__esModule",{value:!0}),smallop$1.smallop=void 0;var FontData_js_1$9=FontData,smallop_js_1$1=smallop;smallop$1.smallop=(0,FontData_js_1$9.AddPaths)(smallop_js_1$1.smallop,{40:"152 251Q152 646 388 850H416Q422 844 422 841Q422 837 403 816T357 753T302 649T255 482T236 250Q236 124 255 19T301 -147T356 -251T403 -315T422 -340Q422 -343 416 -349H388Q359 -325 332 -296T271 -213T212 -97T170 56T152 251",41:"305 251Q305 -145 69 -349H56Q43 -349 39 -347T35 -338Q37 -333 60 -307T108 -239T160 -136T204 27T221 250T204 473T160 636T108 740T60 807T35 839Q35 850 50 850H56H69Q197 743 256 566Q305 425 305 251",47:"481 838Q489 850 500 850Q508 850 515 844T522 827Q521 824 311 248T96 -337Q90 -349 77 -349Q68 -349 62 -343T55 -326Q56 -323 266 253T481 838",91:"202 -349V850H394V810H242V-309H394V-349H202",92:"522 -326Q522 -337 515 -343T500 -349Q487 -349 481 -337Q477 -328 267 248T55 827Q54 835 60 842T76 850Q89 850 96 838Q100 829 310 253T522 -326",93:"22 810V850H214V-349H22V-309H174V810H22",123:"477 -343L471 -349H458Q432 -349 367 -325T273 -263Q258 -245 250 -212L249 -51Q249 -27 249 12Q248 118 244 128Q243 129 243 130Q220 189 121 228Q109 232 107 235T105 250Q105 256 105 257T105 261T107 265T111 268T118 272T128 276T142 283T162 291Q224 324 243 371Q243 372 244 373Q248 384 249 469Q249 475 249 489Q249 528 249 552L250 714Q253 728 256 736T271 761T299 789T347 816T422 843Q440 849 441 849H443Q445 849 447 849T452 850T457 850H471L477 844V830Q477 820 476 817T470 811T459 807T437 801T404 785Q353 760 338 724Q333 710 333 550Q333 526 333 492T334 447Q334 393 327 368T295 318Q257 280 181 255L169 251L184 245Q318 198 332 112Q333 106 333 -49Q333 -209 338 -223Q351 -255 391 -277T469 -309Q477 -311 477 -329V-343",125:"110 849L115 850Q120 850 125 850Q151 850 215 826T309 764Q324 747 332 714L333 552Q333 528 333 489Q334 383 338 373Q339 372 339 371Q353 336 391 310T469 271Q477 268 477 251Q477 241 476 237T472 232T456 225T428 214Q357 179 339 130Q339 129 338 128Q334 117 333 32Q333 26 333 12Q333 -27 333 -51L332 -212Q328 -228 323 -240T302 -271T255 -307T175 -338Q139 -349 125 -349T108 -346T105 -329Q105 -314 107 -312T130 -304Q233 -271 248 -209Q249 -203 249 -49V57Q249 106 253 125T273 167Q307 213 398 245L413 251L401 255Q265 300 250 389Q249 395 249 550Q249 710 244 724Q224 774 112 811Q105 813 105 830Q105 845 110 849",710:"279 669Q273 669 142 610T9 551L0 569Q-8 585 -8 587Q-8 588 -7 588L12 598Q30 608 66 628T136 666L277 744L564 587L555 569Q549 556 547 554T544 552Q539 555 410 612T279 669",732:"374 597Q337 597 269 627T160 658Q101 658 34 606L24 597L12 611Q1 624 1 626Q1 627 27 648T55 671Q120 722 182 722Q219 722 286 692T395 661Q454 661 521 713L531 722L543 708Q554 695 554 693Q554 692 528 671T500 648Q434 597 374 597",770:"-277 669Q-283 669 -414 610T-547 551L-556 569Q-564 585 -564 587Q-564 588 -563 588L-544 598Q-526 608 -490 628T-420 666L-279 744L8 587L-1 569Q-7 556 -9 554T-12 552Q-17 555 -146 612T-277 669",771:"-182 597Q-219 597 -287 627T-396 658Q-455 658 -522 606L-532 597L-544 611Q-555 624 -555 626Q-555 627 -529 648T-501 671Q-436 722 -374 722Q-337 722 -270 692T-161 661Q-102 661 -35 713L-25 722L-13 708Q-2 695 -2 693Q-2 692 -28 671T-56 648Q-122 597 -182 597",8214:"257 0V602H300V0H257ZM478 0V602H521V0H478",8260:"481 838Q489 850 500 850Q508 850 515 844T522 827Q521 824 311 248T96 -337Q90 -349 77 -349Q68 -349 62 -343T55 -326Q56 -323 266 253T481 838",8593:"112 421L120 424Q127 427 136 430T161 441T191 458T224 481T260 510T295 546T328 591L333 600L340 589Q380 527 431 489T555 421V377L543 381Q445 418 368 492L355 504V0H312V504L299 492Q222 418 124 381L112 377V421",8595:"312 96V600H355V96L368 108Q445 182 543 219L555 223V179L546 176Q538 173 529 169T505 158T475 141T442 119T407 90T372 53T339 9L334 0L327 11Q287 73 236 111T112 179V223L124 219Q222 182 299 108L312 96",8657:"142 329Q300 419 389 599Q389 598 399 579T420 541T452 494T497 438T558 383T636 329T708 294L721 289V246Q718 246 694 256T623 293T532 356L522 364L521 182V0H478V405L466 417Q436 450 389 516Q388 515 378 500T352 463T312 417L300 405V0H257V364L247 356Q202 320 155 293T82 256L57 246V289L70 294Q101 305 142 329",8659:"257 236V600H300V195L312 183Q342 150 389 84Q390 85 400 100T426 137T466 183L478 195V600H521V418L522 236L532 244Q576 280 623 307T696 344L721 354V311L708 306Q677 295 636 271Q478 181 389 1Q389 2 379 21T358 59T326 106T281 162T220 217T142 271T70 306L57 311V354Q60 354 83 345T154 308T247 244L257 236",8719:"158 656Q147 684 131 694Q110 707 69 710H55V750H888V710H874Q840 708 820 698T795 678T786 656V-155Q798 -206 874 -210H888V-250H570V-210H584Q618 -208 638 -197T663 -178T673 -155V710H270V277L271 -155Q283 -206 359 -210H373V-250H55V-210H69Q103 -208 123 -197T148 -178T158 -155V656",8720:"158 656Q147 684 131 694Q110 707 69 710H55V750H373V710H359Q325 708 305 698T280 678T271 656L270 223V-210H673V656Q666 672 663 679T639 697T584 710H570V750H888V710H874Q840 708 820 698T795 678T786 656V-155Q798 -206 874 -210H888V-250H55V-210H69Q103 -208 123 -197T148 -178T158 -155V656",8721:"61 748Q64 750 489 750H913L954 640Q965 609 976 579T993 533T999 516H979L959 517Q936 579 886 621T777 682Q724 700 655 705T436 710H319Q183 710 183 709Q186 706 348 484T511 259Q517 250 513 244L490 216Q466 188 420 134T330 27L149 -187Q149 -188 362 -188Q388 -188 436 -188T506 -189Q679 -189 778 -162T936 -43Q946 -27 959 6H999L913 -249L489 -250Q65 -250 62 -248Q56 -246 56 -239Q56 -234 118 -161Q186 -81 245 -11L428 206Q428 207 242 462L57 717L56 728Q56 744 61 748",8730:"263 249Q264 249 315 130T417 -108T470 -228L725 302Q981 837 982 839Q989 850 1001 850Q1008 850 1013 844T1020 832V826L741 243Q645 43 540 -176Q479 -303 469 -324T453 -348Q449 -350 436 -350L424 -349L315 -96Q206 156 205 156L171 130Q138 104 137 104L111 130L263 249",8739:"146 612Q151 627 166 627Q182 627 187 612Q188 610 188 306T187 0Q184 -15 166 -15Q149 -15 146 0V10Q146 19 146 35T146 73T146 122T145 179T145 241T145 306T145 370T145 433T145 489T146 538T146 576T146 602V612",8741:"146 612Q151 627 166 627Q182 627 187 612Q188 610 188 306T187 0Q184 -15 166 -15Q149 -15 146 0V10Q146 19 146 35T146 73T146 122T145 179T145 241T145 306T145 370T145 433T145 489T146 538T146 576T146 602V612ZM368 612Q373 627 388 627Q404 627 409 612Q410 610 410 306T409 0Q406 -15 389 -15Q371 -15 368 0V10Q368 19 368 35T368 73T368 122T367 179T367 241T367 306T367 370T367 433T367 489T368 538T368 576T368 602V612",8747:"113 -244Q113 -246 119 -251T139 -263T167 -269Q186 -269 199 -260Q220 -247 232 -218T251 -133T262 -15T276 155T297 367Q300 390 305 438T314 512T325 580T340 647T361 703T390 751T428 784T479 804Q481 804 488 804T501 805Q552 802 581 769T610 695Q610 669 594 657T561 645Q542 645 527 658T512 694Q512 705 516 714T526 729T538 737T548 742L552 743Q552 745 545 751T525 762T498 768Q475 768 460 756T434 716T418 652T407 559T398 444T387 300T369 133Q349 -38 337 -102T303 -207Q256 -306 169 -306Q119 -306 87 -272T55 -196Q55 -170 71 -158T104 -146Q123 -146 138 -159T153 -195Q153 -206 149 -215T139 -230T127 -238T117 -242L113 -244",8748:"113 -244Q113 -246 119 -251T139 -263T167 -269Q186 -269 199 -260Q220 -247 232 -218T251 -133T262 -15T276 155T297 367Q300 390 305 438T314 512T325 580T340 647T361 703T390 751T428 784T479 804Q481 804 488 804T501 805Q552 802 581 769T610 695Q610 669 594 657T561 645Q542 645 527 658T512 694Q512 705 516 714T526 729T538 737T548 742L552 743Q552 745 545 751T525 762T498 768Q475 768 460 756T434 716T418 652T407 559T398 444T387 300T369 133Q349 -38 337 -102T303 -207Q256 -306 169 -306Q119 -306 87 -272T55 -196Q55 -170 71 -158T104 -146Q123 -146 138 -159T153 -195Q153 -206 149 -215T139 -230T127 -238T117 -242L113 -244ZM460 -244Q460 -246 466 -251T486 -263T514 -269Q532 -269 546 -260Q567 -247 579 -218T598 -133T609 -15T623 155T644 367Q647 390 652 438T661 512T672 580T687 647T708 703T737 751T775 784T826 804Q828 804 835 804T848 805Q899 802 928 769T957 695Q957 669 941 657T908 645Q889 645 874 658T859 694Q859 705 863 714T873 729T885 737T895 742L899 743Q899 745 892 751T872 762T845 768Q822 768 807 756T781 716T765 652T754 559T745 444T734 300T716 133Q696 -38 684 -102T650 -207Q603 -306 516 -306Q466 -306 434 -272T402 -196Q402 -170 418 -158T451 -146Q470 -146 485 -159T500 -195Q500 -206 496 -215T486 -230T474 -238T464 -242L460 -244",8749:"113 -244Q113 -246 119 -251T139 -263T167 -269Q186 -269 199 -260Q220 -247 232 -218T251 -133T262 -15T276 155T297 367Q300 390 305 438T314 512T325 580T340 647T361 703T390 751T428 784T479 804Q481 804 488 804T501 805Q552 802 581 769T610 695Q610 669 594 657T561 645Q542 645 527 658T512 694Q512 705 516 714T526 729T538 737T548 742L552 743Q552 745 545 751T525 762T498 768Q475 768 460 756T434 716T418 652T407 559T398 444T387 300T369 133Q349 -38 337 -102T303 -207Q256 -306 169 -306Q119 -306 87 -272T55 -196Q55 -170 71 -158T104 -146Q123 -146 138 -159T153 -195Q153 -206 149 -215T139 -230T127 -238T117 -242L113 -244ZM460 -244Q460 -246 466 -251T486 -263T514 -269Q532 -269 546 -260Q567 -247 579 -218T598 -133T609 -15T623 155T644 367Q647 390 652 438T661 512T672 580T687 647T708 703T737 751T775 784T826 804Q828 804 835 804T848 805Q899 802 928 769T957 695Q957 669 941 657T908 645Q889 645 874 658T859 694Q859 705 863 714T873 729T885 737T895 742L899 743Q899 745 892 751T872 762T845 768Q822 768 807 756T781 716T765 652T754 559T745 444T734 300T716 133Q696 -38 684 -102T650 -207Q603 -306 516 -306Q466 -306 434 -272T402 -196Q402 -170 418 -158T451 -146Q470 -146 485 -159T500 -195Q500 -206 496 -215T486 -230T474 -238T464 -242L460 -244ZM807 -244Q807 -246 813 -251T833 -263T861 -269Q880 -269 893 -260Q914 -247 926 -218T945 -133T956 -15T970 155T991 367Q994 390 999 438T1008 512T1019 580T1034 647T1055 703T1084 751T1122 784T1173 804Q1175 804 1182 804T1195 805Q1246 802 1275 769T1304 695Q1304 669 1288 657T1255 645Q1236 645 1221 658T1206 694Q1206 705 1210 714T1220 729T1232 737T1242 742L1246 743Q1246 745 1239 751T1219 762T1192 768Q1169 768 1154 756T1128 716T1112 652T1101 559T1092 444T1081 300T1063 133Q1043 -38 1031 -102T997 -207Q950 -306 863 -306Q813 -306 781 -272T749 -196Q749 -170 765 -158T798 -146Q817 -146 832 -159T847 -195Q847 -206 843 -215T833 -230T821 -238T811 -242L807 -244",8750:"269 74L256 80Q244 85 227 97T191 128T161 179T148 250Q148 332 199 379T302 433L306 434L307 444Q309 456 313 495T321 553T331 607T345 664T365 712T393 756T431 785T479 804Q481 804 488 804T501 805Q552 802 581 769T610 695Q610 669 594 657T561 645Q542 645 527 658T512 694Q512 705 516 714T526 729T538 737T548 742L552 743Q552 745 545 751T525 762T498 768Q471 768 454 752T427 693T414 626T406 536Q405 530 405 527L397 425L404 422Q410 419 421 413T445 399T470 376T494 345T511 303T518 250Q518 205 502 169T460 112T410 80T364 66L360 65L359 55Q357 38 353 4T346 -43T340 -81T333 -118T326 -148T316 -179T303 -207Q256 -306 169 -306Q119 -306 87 -272T55 -196Q55 -170 71 -158T104 -146Q123 -146 138 -159T153 -195Q153 -206 149 -215T139 -230T127 -238T117 -242L113 -244Q113 -246 119 -251T139 -263T167 -269Q186 -269 199 -260Q231 -241 242 -183T266 33L269 74ZM272 122Q272 156 300 391Q300 392 299 392Q287 392 263 379T213 331T187 249Q187 211 205 180T239 137T272 116V122ZM366 107Q378 107 402 119T453 167T479 249Q479 340 394 383V377Q394 375 394 374T393 371T393 366T392 357T391 342T389 321T386 291T382 251T377 199T369 133Q366 112 366 107",8896:"119 -249T97 -249T65 -235T55 -207Q55 -201 56 -198Q58 -190 218 268T380 729Q392 750 416 750Q438 750 451 732Q453 728 534 498T695 36L775 -194Q777 -204 777 -208Q777 -222 767 -235T735 -249Q713 -249 700 -231Q696 -225 557 177L416 579L276 177Q136 -226 132 -231Q119 -249 97 -249",8897:"55 708Q55 729 68 739T96 750Q119 750 132 731Q136 726 276 323L416 -79L557 323Q696 725 700 731Q713 749 735 749Q756 749 766 736T777 708Q777 700 696 466T533 1T451 -232Q436 -249 416 -249Q402 -249 391 -241Q384 -236 380 -226Q368 -198 219 230Q55 697 55 708",8898:"139 -217Q127 -241 114 -246Q106 -249 97 -249Q67 -249 57 -220Q55 -214 55 102Q55 152 55 221T54 312Q54 422 60 464T91 554Q120 612 165 654T257 714T337 741T392 749Q393 750 402 750Q414 750 422 749Q557 749 660 659T776 430Q777 422 777 102Q777 -214 775 -220Q765 -249 735 -249Q716 -249 708 -241T694 -217L692 428L690 441Q674 540 597 603T416 666H409Q388 666 364 662T294 638T212 581Q156 523 142 441L140 428L139 105V-217",8899:"96 750Q103 750 109 748T120 744T127 737T133 730T137 723T139 718V395L140 73L142 60Q159 -43 237 -104T416 -166Q521 -166 597 -103T690 60L692 73L694 718Q708 749 735 749Q765 749 775 720Q777 714 777 398Q777 78 776 71Q766 -51 680 -140Q571 -249 416 -249H411Q261 -249 152 -140Q66 -51 56 71Q55 78 55 398Q55 714 57 720Q60 734 70 740Q80 750 96 750",8968:"202 -349V850H449V810H242V-349H202",8969:"22 810V850H269V-349H229V810H22",8970:"202 -349V850H242V-309H449V-349H202",8971:"229 -309V850H269V-349H22V-309H229",9001:"373 850Q392 850 394 832Q394 825 267 538L139 250L267 -38Q394 -325 394 -332Q392 -350 375 -350Q361 -350 356 -338Q354 -331 289 -186T161 103T97 250T160 397T289 685T356 838Q362 850 373 850",9002:"77 832Q77 837 82 843T98 850Q110 849 115 838Q117 831 182 686T310 397T374 250T311 103T182 -185T115 -338Q110 -350 96 -350Q79 -350 77 -332Q77 -325 204 -38L332 250L204 538Q77 825 77 832",9168:"312 0V602H355V0H312",10072:"146 612Q151 627 166 627Q182 627 187 612Q188 610 188 306T187 0Q184 -15 166 -15Q149 -15 146 0V10Q146 19 146 35T146 73T146 122T145 179T145 241T145 306T145 370T145 433T145 489T146 538T146 576T146 602V612",10216:"373 850Q392 850 394 832Q394 825 267 538L139 250L267 -38Q394 -325 394 -332Q392 -350 375 -350Q361 -350 356 -338Q354 -331 289 -186T161 103T97 250T160 397T289 685T356 838Q362 850 373 850",10217:"77 832Q77 837 82 843T98 850Q110 849 115 838Q117 831 182 686T310 397T374 250T311 103T182 -185T115 -338Q110 -350 96 -350Q79 -350 77 -332Q77 -325 204 -38L332 250L204 538Q77 825 77 832",10752:"555 -250Q420 -250 306 -185T124 -4T56 250Q56 453 193 595T526 749Q528 750 539 750Q554 750 562 749Q688 749 800 687T983 508T1054 250Q1054 112 987 -3T806 -184T555 -250ZM555 -165Q672 -165 767 -108T916 44T970 250Q970 418 861 532T600 664Q591 665 548 665Q446 665 353 614T200 466T140 250V243Q140 88 248 -30Q262 -46 280 -62T338 -105T434 -148T555 -165ZM478 250Q478 288 503 307T551 326Q586 326 609 305T632 250Q632 217 610 196T555 174T500 196T478 250",10753:"555 -250Q420 -250 306 -185T124 -4T56 250Q56 453 193 595T526 749Q528 750 539 750Q554 750 562 749Q688 749 800 687T983 508T1054 250Q1054 112 987 -3T806 -184T555 -250ZM513 478Q513 664 512 664Q504 664 481 660T406 637T313 588Q281 564 255 537T211 483T181 431T161 382T150 342T144 310T141 292H513V478ZM798 588Q758 616 711 634T639 658T602 663L597 664V292H969Q969 293 967 309T960 341T949 381T930 430T900 482T856 537T798 588ZM513 -164V208H141Q142 205 144 189T149 160T158 125T173 83T196 39T229 -9Q249 -34 273 -55T318 -92T363 -119T405 -138T444 -150T475 -158T499 -162T513 -164ZM775 -103Q801 -87 823 -68T863 -30T894 10T919 49T937 88T950 123T959 154T964 180T968 198L969 208H597V-164Q599 -163 616 -161T647 -155T683 -145T728 -128T775 -103",10754:"555 -250Q420 -250 306 -185T124 -4T56 250Q56 453 193 595T526 749Q528 750 539 750Q554 750 562 749Q688 749 800 687T983 508T1054 250Q1054 112 987 -3T806 -184T555 -250ZM600 664Q591 665 548 665Q414 665 306 583L292 573L423 441L555 310L687 441L818 573L804 583Q714 650 600 664ZM364 118L495 250L364 382L232 513L223 500Q140 391 140 250Q140 107 223 0L232 -13L364 118ZM970 250Q970 389 887 501L878 512Q878 513 861 496T812 447T746 381L615 250L746 118L878 -13L887 0Q970 109 970 250ZM687 59L555 190L423 59L292 -73L306 -83Q416 -166 555 -166T804 -83L818 -73L687 59",10756:"96 750Q103 750 109 748T120 744T127 737T133 730T137 723T139 718V395L140 73L142 60Q159 -43 237 -104T416 -166Q521 -166 597 -103T690 60L692 73L694 718Q708 749 735 749Q765 749 775 720Q777 714 777 398Q777 78 776 71Q766 -51 680 -140Q571 -249 416 -249H411Q261 -249 152 -140Q66 -51 56 71Q55 78 55 398Q55 714 57 720Q60 734 70 740Q80 750 96 750ZM223 276Q223 282 224 287T227 296T232 302T238 308T243 313T250 316L254 319H374V376V406Q374 438 382 454T418 470Q443 467 450 453T458 410V376V319H579Q580 319 583 317T589 313T594 308T600 302T604 295T608 287T609 276Q609 253 587 241Q577 235 513 235H458V178Q458 176 458 166T459 148Q459 84 415 84Q401 84 390 93T375 117Q374 120 374 178V235H319Q317 235 307 235T290 234Q223 234 223 276",10758:"777 -217Q766 -244 745 -249H88Q64 -242 57 -220Q55 -214 55 250T57 720Q60 734 70 740Q80 750 96 750Q127 750 137 720Q139 714 139 274V-166H693V274Q693 714 695 720Q705 749 735 749Q766 749 775 719Q777 713 777 248V-217",12296:"373 850Q392 850 394 832Q394 825 267 538L139 250L267 -38Q394 -325 394 -332Q392 -350 375 -350Q361 -350 356 -338Q354 -331 289 -186T161 103T97 250T160 397T289 685T356 838Q362 850 373 850",12297:"77 832Q77 837 82 843T98 850Q110 849 115 838Q117 831 182 686T310 397T374 250T311 103T182 -185T115 -338Q110 -350 96 -350Q79 -350 77 -332Q77 -325 204 -38L332 250L204 538Q77 825 77 832"},{10764:"∬∬"});var texCalligraphicBold$1={},texCalligraphicBold={};Object.defineProperty(texCalligraphicBold,"__esModule",{value:!0}),texCalligraphicBold.texCalligraphicBold=void 0,texCalligraphicBold.texCalligraphicBold={65:[.751,.049,.921,{ic:.068,sk:.224}],66:[.705,.017,.748,{sk:.16}],67:[.703,.02,.613,{sk:.16}],68:[.686,0,.892,{sk:.0958}],69:[.703,.016,.607,{ic:.02,sk:.128}],70:[.686,.03,.814,{ic:.116,sk:.128}],71:[.703,.113,.682,{sk:.128}],72:[.686,.048,.987,{sk:.128}],73:[.686,0,.642,{ic:.104,sk:.0319}],74:[.686,.114,.779,{ic:.158,sk:.192}],75:[.703,.017,.871,{sk:.0639}],76:[.703,.017,.788,{sk:.16}],77:[.703,.049,1.378,{sk:.16}],78:[.84,.049,.937,{ic:.168,sk:.0958}],79:[.703,.017,.906,{sk:.128}],80:[.686,.067,.81,{ic:.036,sk:.0958}],81:[.703,.146,.939,{sk:.128}],82:[.686,.017,.99,{sk:.0958}],83:[.703,.016,.696,{ic:.025,sk:.16}],84:[.72,.069,.644,{ic:.303,sk:.0319}],85:[.686,.024,.715,{ic:.056,sk:.0958}],86:[.686,.077,.737,{ic:.037,sk:.0319}],87:[.686,.077,1.169,{ic:.037,sk:.0958}],88:[.686,0,.817,{ic:.089,sk:.16}],89:[.686,.164,.759,{ic:.038,sk:.0958}],90:[.686,0,.818,{ic:.035,sk:.16}],305:[.452,.008,.394,{sk:.0319}],567:[.451,.201,.439,{sk:.0958}]},Object.defineProperty(texCalligraphicBold$1,"__esModule",{value:!0}),texCalligraphicBold$1.texCalligraphicBold=void 0;var FontData_js_1$8=FontData,tex_calligraphic_bold_js_1$1=texCalligraphicBold;texCalligraphicBold$1.texCalligraphicBold=(0,FontData_js_1$8.AddPaths)(tex_calligraphic_bold_js_1$1.texCalligraphicBold,{65:"761 751Q784 751 784 728V711Q784 570 795 417T820 191Q844 76 865 76Q868 76 902 93T962 112H973Q989 104 989 94Q989 92 987 86Q978 47 846 -11Q812 -25 779 -26Q722 -26 708 9Q688 47 669 161H524L379 162L359 136Q286 43 234 -3T142 -49T71 -19T39 55Q39 92 60 131T103 174Q113 174 117 167T124 149T136 128T166 110Q183 105 190 105Q230 105 341 246Q401 322 453 397T531 514T582 601T611 651H640V663Q640 692 676 718T745 750Q747 750 752 750T761 751ZM658 266Q653 312 649 377T644 489T641 541V556L557 415Q500 325 448 253Q467 261 524 261H568H658V266",66:"441 83Q571 83 571 195Q571 246 538 279T466 322T386 333Q378 333 357 330T329 327Q307 327 307 345Q307 354 313 365T347 396T419 430Q546 472 581 498Q594 508 594 535Q594 574 567 589T508 604Q469 604 442 583Q390 546 342 457T265 256Q237 148 186 60Q167 29 144 13Q105 -15 68 -17H65Q40 -17 40 1Q40 7 53 29T87 100T124 210Q162 373 190 575Q188 575 174 567T138 550T98 542Q75 542 75 560Q75 588 123 618Q135 625 203 659T281 696Q299 703 316 703Q339 703 339 685Q339 656 328 583L333 588Q338 592 346 599T367 615T394 634T428 654T467 674T511 690T559 701T611 705Q651 704 681 689Q739 659 739 598Q739 507 595 427L584 421Q585 420 595 416T610 410T626 402T644 392T660 380T677 365T691 347T703 325T710 299T715 268Q717 193 665 130Q622 73 531 28T348 -17Q275 -17 225 10Q206 19 200 24T193 36Q193 57 231 86T311 119H322Q386 83 441 83",67:"243 -20Q135 -20 78 48T20 218Q20 280 39 344T98 470T193 580T324 661T488 702H490Q491 702 493 702T498 703T507 703T518 702H526Q599 702 599 631Q599 597 577 550T541 486Q523 463 490 447T431 430Q423 430 419 433Q409 437 409 450Q410 456 432 499T454 567Q454 586 446 594T415 603Q316 603 254 532Q216 487 190 421T164 284Q164 228 181 186T226 122T282 90T340 80Q377 80 405 96T449 131T492 167T553 187H555Q580 187 580 168Q580 153 551 123T476 60T367 4T243 -20",68:"107 0Q92 5 92 18Q92 33 113 53T160 86Q170 91 182 94T197 100L206 120Q248 226 273 337T304 501T309 585Q278 585 234 577T179 557Q172 550 166 532T156 509Q140 484 105 466T44 447Q20 447 20 465Q20 482 34 510T76 565Q122 608 173 632Q281 686 447 686H480H517Q692 686 784 631Q885 571 885 450Q885 339 805 239T586 75T286 1Q276 0 187 0H107ZM741 391Q741 424 731 452T694 510T613 558T481 584Q476 584 468 584T457 585L449 586V579Q441 501 425 424T391 292T357 193T330 125T319 100H324Q511 100 628 175Q688 215 714 275T741 391",69:"495 516Q485 516 478 520T470 532Q470 537 476 550T482 570Q482 589 465 596T401 603Q344 603 319 582Q295 558 295 519Q295 493 312 474T355 445T407 432T455 427Q477 427 477 409Q477 395 453 371T389 333Q380 330 345 327T279 312T223 272Q181 223 181 176Q181 131 225 107T324 83Q366 83 395 98T448 136T487 167Q517 185 547 187H551Q574 187 574 170Q574 151 535 113T421 36T271 -15Q260 -16 226 -16Q181 -16 152 -9Q104 4 71 33T37 111Q37 140 50 176T106 263T216 356Q215 357 207 362T190 374T172 392T156 419T150 456Q150 521 208 580T341 670T474 702Q475 703 499 703Q528 703 547 701T586 693T615 673T627 637Q627 584 581 550T495 516",70:"812 567Q804 567 795 570T786 579Q786 586 647 586H559L558 582Q558 575 539 510T506 407L498 384H775Q788 378 790 368Q790 328 746 298T665 268Q646 268 642 284H457L447 261Q396 150 360 94Q329 46 270 8T149 -30Q123 -30 100 -24T63 -10T37 9T22 26T17 36Q17 59 56 88T135 119Q145 119 149 117T165 104Q187 78 227 72Q232 72 234 76Q245 93 273 145T350 323T424 570L428 586H276Q265 575 239 563T190 551Q180 551 174 556T167 569Q167 580 179 597T213 634T278 668T371 685Q374 686 624 686Q863 685 888 682Q917 678 927 663Q930 658 930 650Q930 624 888 596T812 567",71:"50 279Q50 361 88 438T190 570T335 661T503 702H514Q524 703 532 703Q671 703 671 626Q671 580 614 514T495 447Q472 447 472 465Q472 477 499 511T527 562Q527 582 507 592T433 602Q351 602 302 569Q252 535 223 469T194 344Q194 266 237 217T352 168Q401 168 442 205T505 316Q515 345 551 368T622 393H625Q649 393 649 376Q649 371 635 318T612 237Q580 129 540 62T442 -49Q353 -114 264 -114Q259 -114 252 -114L246 -113Q190 -113 142 -107T81 -96Q71 -90 71 -81Q71 -57 110 -30T187 2Q196 2 236 -4T338 -14Q371 -14 377 -9Q410 24 446 113L451 127Q353 68 253 68Q157 68 104 129T50 279",72:"42 447Q20 447 20 465Q20 481 47 515T119 589T239 657T392 686Q443 686 463 664T484 616Q484 570 473 506T452 401L441 360Q441 359 550 359H660L663 370Q684 435 716 522T758 624Q771 646 806 666T870 686Q894 686 894 668Q894 667 867 597T804 416T752 218Q737 135 737 93Q737 77 746 65T778 53Q799 53 803 54T814 63Q831 86 864 103T924 120Q946 120 946 100Q945 85 931 63T888 16T806 -27T684 -48H681Q625 -48 603 -10Q593 4 593 29Q593 71 603 131T624 230L634 269Q632 269 624 266Q610 261 600 261T507 259H411L399 222Q344 62 322 21Q301 -7 268 -24T209 -41H207Q187 -41 185 -25Q185 -17 192 2T220 71T261 184Q284 256 284 258Q284 259 227 259H170Q169 259 166 261T162 264T158 266T156 271T155 277Q155 296 184 320T250 356Q259 358 286 359Q312 359 312 360Q314 372 318 385Q332 450 339 526Q339 530 339 535T340 543Q340 586 296 586Q255 586 227 576T188 553T165 523T146 497Q127 476 97 462T42 447",73:"56 499Q32 499 32 516Q32 540 64 580T165 649Q241 682 365 685Q366 685 376 685T405 685T445 686T496 686T553 686H732Q746 677 746 668Q746 646 711 620T642 587L572 586H503Q479 546 458 479T424 352T383 224T318 111L309 101L412 100H514L523 109Q567 150 618 153Q644 153 644 135Q644 132 642 124Q629 86 581 52T476 6Q454 2 433 2T216 0Q-11 0 -15 2Q-27 6 -27 18Q-27 37 2 61T59 93Q77 100 142 100H198Q255 177 299 369Q337 513 382 574L391 586H348Q261 586 176 576Q163 543 124 521T56 499",74:"286 390Q263 390 263 407Q263 432 293 481T367 566Q511 687 724 687Q738 687 761 687T793 686H923Q937 677 937 668Q937 648 905 623T842 589Q829 587 817 586T802 585T795 583T788 578Q709 506 632 189Q622 153 615 134T588 81T537 17Q482 -39 404 -76T247 -114Q192 -114 158 -100Q53 -61 53 32Q53 59 58 73T79 102Q126 147 177 147Q200 147 200 128Q200 123 198 112T196 96Q196 47 238 17T345 -13Q362 -13 377 -9T404 0T426 16T444 34T459 55T470 76T478 97T483 116T488 132L490 141Q511 222 520 257T554 364T608 486T675 576L685 586H634H612Q532 586 484 564Q453 549 436 526T409 478T395 447Q378 424 345 407T286 390",75:"98 542Q75 542 75 560Q75 588 123 618Q132 624 199 657T275 694Q291 703 315 703Q327 703 332 699T338 690T339 670Q339 596 323 505T283 337T237 194T198 90L181 53Q170 31 136 8T68 -17H65Q40 -17 40 0L76 92Q112 185 150 322T194 564V578L168 565Q125 542 98 542ZM834 142Q834 125 819 100T774 48T692 3T576 -16H560Q540 -16 508 6Q469 33 422 108T342 267T309 398Q309 411 310 417T320 442T347 482Q401 542 517 615T710 702Q712 702 721 702T735 703Q772 703 791 690Q819 674 819 646T792 597T733 574H722Q704 584 704 599Q706 607 700 610T672 617L660 613Q609 595 524 538T423 450V440Q423 376 488 247T604 83Q621 70 640 70Q677 70 701 82Q713 87 718 101T737 132T783 160Q792 163 807 163Q834 163 834 142",76:"63 -17Q41 -17 41 0Q41 22 85 54Q101 68 113 92T133 141T154 219T182 315Q230 462 306 553Q345 599 391 632T478 678T543 697T582 703Q584 703 589 703T598 702Q643 702 666 676T689 613Q689 588 683 575Q674 551 632 524T552 496Q530 496 530 512Q530 517 531 525T533 538Q533 559 522 577T480 596H476Q462 596 451 588T415 544Q350 447 310 281Q284 181 261 136L255 124H285Q342 123 441 107T583 90L596 89Q603 116 647 144T729 173Q751 173 751 157Q751 118 685 60T523 -15Q514 -16 479 -16Q421 -16 320 0T171 18H155L142 10Q98 -17 63 -17",77:"38 20Q38 59 60 99T104 139Q106 139 126 125T176 106H181Q200 106 221 139T286 281Q322 370 342 451T368 581T376 634Q384 657 420 680T487 703Q502 703 507 696T522 649Q538 589 554 537Q579 453 609 372T660 248T686 202Q687 201 739 244T830 322L1166 642Q1225 700 1230 701Q1230 701 1237 703Q1258 703 1258 667L1253 637Q1248 607 1241 558T1227 451T1214 326T1209 202Q1209 77 1232 77Q1237 77 1269 94T1326 112H1329Q1353 112 1353 94Q1353 81 1334 60Q1311 37 1248 7T1150 -24H1141H1135Q1085 -24 1074 26Q1064 75 1064 134Q1064 239 1086 426Q1087 430 1087 434L1061 410Q871 227 783 149L694 76Q653 44 647 40T631 34Q620 34 616 37T594 63Q546 125 514 198Q467 307 423 449L418 466L412 444Q376 310 306 153Q278 88 251 45T201 -18T163 -43T131 -49Q102 -48 70 -31T38 20",78:"47 139Q81 105 122 105Q137 105 147 117Q159 134 182 199T234 381T274 610Q275 634 284 647Q297 666 327 684T389 703Q403 703 408 695T428 645Q480 490 567 298Q628 163 673 103Q674 102 674 102T675 106Q732 331 803 551Q842 674 875 725Q908 775 966 807T1081 840H1084Q1105 840 1105 803Q1105 768 1088 733T1051 689Q1045 686 1032 686Q986 683 948 663T901 624Q881 579 837 430T760 154L726 28Q725 28 725 28T723 25Q716 0 682 -24T611 -48Q600 -48 595 -45T576 -23Q522 44 480 124Q417 243 332 463L328 473L325 457Q291 293 227 124Q159 -49 72 -49Q38 -49 5 -28Q-24 -8 -24 21Q-24 58 -3 98T41 139H47",79:"433 703Q456 703 456 685Q456 672 441 655T407 627Q402 623 378 611T328 579T276 524Q207 434 207 324Q207 222 270 153T441 84Q566 84 651 177T737 400V405Q737 496 693 549T576 603Q542 603 510 560Q490 537 472 502T442 454Q397 412 346 409Q320 409 320 427Q320 430 322 436Q331 465 360 507T433 594T542 671T677 703Q776 703 829 636T882 468Q882 369 831 277T702 122T528 21T343 -17Q214 -17 139 61T63 257Q63 336 94 409T173 534T272 625T367 684T432 703H433",80:"170 -67Q147 -67 147 -49Q147 -42 162 -8T204 99T253 254Q274 332 288 415T305 542L308 585Q277 585 234 577T179 557Q172 550 166 532T156 509Q140 484 105 466T44 447Q20 447 20 465Q20 482 34 510T76 565Q122 608 173 632Q279 686 448 686H495H537Q622 686 678 677T784 637Q846 598 846 533Q846 452 776 375T597 252T378 206H366L358 181Q341 130 316 68T282 -7Q262 -33 230 -50T170 -67ZM701 468Q701 512 661 540T570 577T461 586H448V582Q446 576 443 545T428 447T395 301L389 280Q390 280 398 284T419 295T441 303Q443 304 484 306T572 321T651 359Q701 402 701 468",81:"874 453Q874 372 836 298T750 177T638 89T543 33T486 8L483 7Q485 5 523 -7T622 -32T726 -46Q741 -46 746 -45T755 -41T762 -27Q770 -1 806 23T878 50H890Q905 42 905 33Q905 -8 838 -68T670 -145Q662 -146 628 -146Q538 -146 389 -100T164 -50Q132 -50 132 -32T162 11T227 47Q231 48 286 51T394 62T518 100T641 180Q730 271 730 387Q730 478 673 540T520 602Q410 602 337 525T264 355Q264 284 310 244T420 203Q476 203 568 222Q594 222 594 204Q594 184 565 161T508 128Q433 103 316 103Q227 103 174 157T120 290Q120 382 182 471T343 620T548 697Q578 703 601 703Q604 703 611 703T623 702Q663 702 687 696Q760 679 817 618T874 453",82:"159 0Q159 5 172 34T205 114T245 229T284 386T309 575V585H304Q303 585 295 585T282 584Q233 579 207 570T175 553T165 531T156 509Q140 484 105 466T44 447Q20 447 20 465Q20 482 34 510T76 565Q122 608 173 632Q279 686 448 686H505H582Q683 686 745 672T834 611Q842 594 842 565Q842 523 824 484T780 419T722 370T669 336T632 318L619 312L626 302Q640 279 667 227T696 172Q717 133 735 112T762 88T784 84Q824 84 872 118T957 153Q981 153 981 136Q981 114 937 78T820 13T684 -17Q646 -17 616 8T569 66T526 151T477 234Q461 256 446 265Q437 272 421 274Q400 274 400 291Q400 311 430 336T495 371Q496 371 543 374T627 392T681 436Q699 467 699 503Q699 550 644 568T471 586H449V582Q449 581 447 559T438 499T422 413T393 298T348 165Q313 73 296 45Q282 24 249 4T185 -17Q159 -17 159 0",83:"204 476Q204 525 248 577T372 666T539 703T674 683T721 612Q721 588 714 569Q704 547 669 524T601 499Q573 499 573 516Q573 521 575 527T577 543Q577 563 568 574T548 588L539 590Q490 603 444 603Q418 603 394 597T364 583Q348 567 348 533Q348 493 382 466T459 425T555 387T633 330Q662 292 662 249Q662 153 544 69T257 -16Q218 -16 208 -15Q118 1 64 46Q25 76 25 126Q25 185 82 235T203 290H207Q229 290 231 274Q231 243 180 213Q173 209 172 206T170 189T171 170T183 150T216 121Q273 83 356 83Q412 83 459 100Q493 111 507 141Q518 165 518 185Q518 208 506 228T478 262T437 288T398 306T360 320Q316 335 285 352T239 384T215 416T205 443T204 467V476",84:"61 462H59Q38 462 38 479Q38 528 109 594T289 683L304 685L837 687L846 693Q889 720 923 720Q947 720 947 702Q945 671 892 631T776 583Q774 583 772 583T769 582T766 582L764 581H758Q753 581 744 581T722 580T693 580T662 580H563L514 385Q507 355 493 299T475 225T460 172T443 119T426 76T402 24Q386 -11 355 -33T304 -61T266 -69Q242 -69 242 -50Q243 -45 253 -25T278 32T307 115L364 340Q405 511 413 538T436 580H207Q202 572 200 568T197 561T195 552T190 537Q176 511 135 487T61 462",85:"124 586Q107 586 74 569T15 552H13Q-10 552 -10 570Q-10 605 70 645T222 686Q283 686 283 631Q283 590 246 504T172 326T135 181Q135 130 157 107T205 83Q221 83 259 106Q347 165 453 301T604 548Q607 557 612 569T619 587T624 600T628 612T632 621T637 628T641 634T647 640T654 645T662 652Q706 686 748 686Q771 686 771 669Q771 656 754 614T700 467T630 229Q615 168 610 105Q610 88 617 78L641 90Q681 111 706 112Q733 112 733 95Q733 82 714 60Q694 40 633 10Q567 -23 532 -24Q507 -24 495 -17Q466 -4 466 32Q466 96 500 225Q277 -17 102 -17Q56 -17 23 17T-10 118Q-10 164 13 234T64 363T115 481T139 567Q139 586 124 586",86:"25 608Q25 628 60 657T148 686Q184 683 213 671T273 625T327 538T363 394T380 184L381 134L399 148Q503 226 574 302T667 415T689 467Q688 474 684 482T672 502T645 521T600 532Q576 532 576 567Q576 604 597 644T641 685H649Q701 685 737 648T774 545Q774 457 703 333T461 66Q397 13 332 -32T255 -77Q237 -77 237 -30V-23Q241 20 241 109Q241 483 115 569Q91 586 50 589Q25 589 25 608",87:"25 607Q25 629 62 657T142 686Q205 686 248 647T312 541T339 411T347 275Q347 249 345 203V189Q375 219 449 316T587 516Q629 584 629 587Q629 589 626 597T622 607Q622 629 658 656T732 686H744Q755 680 757 678Q757 677 769 649T799 577T835 475T874 339T904 183Q908 157 910 151L925 169Q997 252 1059 343T1121 474Q1120 498 1103 513T1059 532Q1036 532 1036 568Q1036 600 1053 636T1090 683L1097 686H1109Q1147 684 1176 652T1206 551Q1206 460 1131 320T897 7Q859 -33 840 -52T816 -74T804 -77Q788 -77 784 -32Q783 -28 783 -26Q774 108 744 239T691 436T665 501Q664 501 649 475T602 400T528 289T420 146T280 -15Q243 -56 231 -66T210 -77Q191 -77 191 -40Q191 -38 195 -4T204 91T209 217Q209 290 202 351T177 469T126 557T45 589Q25 589 25 607",88:"762 562Q762 579 737 584T711 604Q711 630 753 658T834 686Q864 686 885 669T906 627Q906 580 834 522T614 379L584 362V357Q585 354 589 315T597 233T603 183Q610 132 627 116T671 100Q678 100 704 113T754 126T778 107Q776 79 733 45T626 2Q615 1 578 1Q542 1 535 3Q521 7 510 15T491 31T477 54T467 78T460 108T456 137T452 170T449 201Q447 220 445 240T442 270L441 281Q435 281 357 233Q240 165 206 135Q200 128 200 124Q200 113 208 108T226 101T244 96T252 82Q252 61 214 31T129 1H120Q97 1 77 16T56 60Q56 105 133 168T414 345Q428 352 431 354T433 359Q422 493 414 522Q407 551 395 566T373 583T350 586H341L332 580Q290 560 265 560Q243 560 243 577Q243 585 248 596T269 624T306 653T365 676T447 686H456Q472 686 484 683T514 671T543 637T562 576Q565 557 570 501L577 437Q577 436 613 457T694 506T756 551Q762 558 762 562",89:"73 555Q49 555 49 573Q49 602 110 644T239 686Q319 686 376 624Q416 584 444 511T483 361T499 240T503 173Q503 165 504 165Q506 165 524 184T556 218Q631 297 674 377T718 485Q718 505 699 526Q673 552 628 552Q619 552 613 562T607 590Q607 617 621 645T658 685Q661 686 671 686Q718 686 757 652T797 545Q797 476 749 369T602 146Q500 29 371 -67T176 -164Q112 -164 74 -120T36 -29Q36 5 55 36T95 67Q104 67 108 59T115 39T128 12T154 -12Q183 -30 216 -30Q239 -30 305 7L361 44L367 49V54Q367 95 364 143T351 273T312 429T243 546Q206 581 156 588L146 581Q108 555 73 555",90:"622 574Q522 579 420 579H396Q373 579 364 574T351 550Q339 516 297 490T218 462Q195 462 195 479Q195 487 197 492Q218 565 313 625T509 685Q564 685 650 683T755 680Q787 680 807 683T831 686Q853 686 853 669Q853 657 826 626Q742 532 641 437L619 415L622 414Q626 414 631 414T642 414Q697 411 697 388Q697 367 670 345T607 323Q605 323 592 325T546 329H522L490 302Q457 274 400 226T289 136L260 113L318 112Q345 111 452 109T587 106H627Q650 143 656 170Q666 197 710 225T788 253Q811 253 811 237Q811 211 781 160T710 77Q619 0 515 0Q507 0 497 0T484 1Q434 1 319 3T177 6Q123 6 95 2Q83 2 71 0H68Q46 0 46 17Q46 28 58 44Q68 56 100 80T210 165T383 307L408 329H361L314 330Q297 338 297 350Q297 368 320 388T368 413Q375 415 441 415H506L647 555L664 574H622",305:"24 296Q24 305 34 328T63 380T115 430T187 452Q205 452 223 448T262 435T295 406T308 360Q308 345 287 290T240 170T207 87Q202 67 202 57Q202 42 215 42Q235 42 257 64Q288 92 302 140Q307 156 310 159T330 162H336H347Q367 162 367 148Q367 140 357 117T329 65T276 14T201 -8Q158 -8 121 15T83 84Q83 104 133 229T184 358Q189 376 189 388Q189 402 177 402Q156 402 134 380Q103 352 89 304Q84 288 81 285T61 282H55H44Q24 282 24 296",567:"297 360T297 373T294 392T288 400T278 401H276Q237 398 200 363Q181 343 170 325T156 299T149 287T129 282H123H116Q102 282 97 284T92 298Q93 303 98 315T118 349T151 390T201 427T267 451H279Q357 451 388 422T420 354V339L370 138Q321 -60 317 -69Q287 -157 163 -194Q133 -201 99 -201Q39 -201 14 -178T-12 -125Q-12 -94 11 -69T68 -43Q93 -43 108 -57T123 -95Q123 -121 100 -151H104Q131 -151 155 -125T193 -60Q195 -54 244 141T294 345Q297 360 297 373"},{});var texCalligraphic$1={},texCalligraphic={};Object.defineProperty(texCalligraphic,"__esModule",{value:!0}),texCalligraphic.texCalligraphic=void 0,texCalligraphic.texCalligraphic={65:[.728,.05,.798,{ic:.021,sk:.194}],66:[.705,.022,.657,{sk:.139}],67:[.705,.025,.527,{sk:.139}],68:[.683,0,.771,{sk:.0833}],69:[.705,.022,.528,{ic:.036,sk:.111}],70:[.683,.032,.719,{ic:.11,sk:.111}],71:[.704,.119,.595,{sk:.111}],72:[.683,.048,.845,{sk:.111}],73:[.683,0,.545,{ic:.097,sk:.0278}],74:[.683,.119,.678,{ic:.161,sk:.167}],75:[.705,.022,.762,{sk:.0556}],76:[.705,.022,.69,{sk:.139}],77:[.705,.05,1.201,{sk:.139}],78:[.789,.05,.82,{ic:.159,sk:.0833}],79:[.705,.022,.796,{sk:.111}],80:[.683,.057,.696,{ic:.037,sk:.0833}],81:[.705,.131,.817,{sk:.111}],82:[.682,.022,.848,{sk:.0833}],83:[.705,.022,.606,{ic:.036,sk:.139}],84:[.717,.068,.545,{ic:.288,sk:.0278}],85:[.683,.028,.626,{ic:.061,sk:.0833}],86:[.683,.052,.613,{ic:.045,sk:.0278}],87:[.683,.053,.988,{ic:.046,sk:.0833}],88:[.683,0,.713,{ic:.094,sk:.139}],89:[.683,.143,.668,{ic:.046,sk:.0833}],90:[.683,0,.725,{ic:.042,sk:.139}]},Object.defineProperty(texCalligraphic$1,"__esModule",{value:!0}),texCalligraphic$1.texCalligraphic=void 0;var FontData_js_1$7=FontData,tex_calligraphic_js_1$1=texCalligraphic;texCalligraphic$1.texCalligraphic=(0,FontData_js_1$7.AddPaths)(tex_calligraphic_js_1$1.texCalligraphic,{65:"576 668Q576 688 606 708T660 728Q676 728 675 712V571Q675 409 688 252Q696 122 720 57Q722 53 723 50T728 46T732 43T737 41T743 39L754 45Q788 61 803 61Q819 61 819 47Q818 43 814 35Q799 15 755 -7T675 -30Q659 -30 648 -25T630 -8T621 11T614 34Q603 77 599 106T594 146T591 160V163H460L329 164L316 145Q241 35 196 -7T119 -50T59 -24T30 43Q30 75 46 100T74 125Q81 125 83 120T88 104T96 84Q118 57 151 57Q189 57 277 182Q432 400 542 625L559 659H567Q574 659 575 660T576 668ZM584 249Q579 333 577 386T575 473T574 520V581L563 560Q497 426 412 290L372 228L370 224H371L383 228L393 232H586L584 249",66:"304 342Q292 342 292 353Q292 372 323 391Q331 396 417 428T533 487Q563 512 563 555V562Q563 575 557 589T530 618T475 636Q429 636 396 613T330 539Q263 446 210 238Q196 183 173 120Q135 31 121 16Q108 1 85 -10T47 -22T32 -10Q32 -5 44 18T77 93T112 206Q135 296 154 395T182 550T191 615Q191 616 190 616Q188 616 179 611T157 601T131 594Q113 594 113 605Q113 623 144 644Q154 650 205 676T267 703Q277 705 279 705Q295 705 295 693Q295 686 288 635T278 575Q278 572 287 582Q336 635 402 669T540 704Q603 704 633 673T664 599Q664 559 638 523T580 462Q553 440 504 413L491 407L504 402Q566 381 596 338T627 244Q627 172 575 110T444 13T284 -22Q208 -22 158 28Q144 42 146 50Q150 67 178 85T230 103Q236 103 246 95T267 75T302 56T357 47Q436 47 486 93Q526 136 526 198V210Q526 228 518 249T491 292T436 330T350 345Q335 345 321 344T304 342",67:"201 -25Q167 -25 136 -14T75 23T29 94T12 202Q12 290 50 394T161 574Q227 642 303 673T433 704Q435 705 457 705Q533 701 533 640Q533 606 507 548T464 474Q431 444 396 444Q381 444 381 453Q381 459 388 473T407 513T428 563Q433 580 433 594Q433 636 381 636Q314 636 260 594T175 489T128 363T112 247Q112 157 153 101T273 44Q347 44 398 121Q413 144 437 157T481 171Q496 171 496 160Q496 150 476 123Q426 56 350 16T201 -25",68:"37 475Q19 475 19 487Q19 536 103 604T327 682H356Q386 683 408 683H419Q475 683 506 681T582 668T667 633Q766 571 766 450Q766 365 723 287T611 152T455 57T279 6Q248 1 160 0Q148 0 131 0T108 -1Q72 -1 72 11Q72 24 90 40T133 64L144 68L152 88Q247 328 272 587Q275 613 272 613Q272 613 269 613Q225 610 195 602T149 579T129 556T119 532Q118 530 116 525T113 518Q102 502 80 490T37 475ZM665 407Q665 596 412 613Q403 614 383 614Q370 614 370 612Q370 598 363 542T323 357T242 103L228 69H265Q391 73 481 119Q536 148 575 188T633 268T658 338T665 392V407",69:"144 470Q144 556 240 630T451 705Q564 705 564 637Q564 611 540 573Q529 559 505 547T464 534Q448 534 448 545Q448 552 455 562Q463 577 463 591Q463 600 462 604T456 616T436 627T400 635Q396 635 390 635T380 636Q291 636 258 568Q245 544 245 516Q245 463 290 438T391 410Q415 410 415 398Q415 392 407 380T376 356T326 341Q288 340 260 327Q218 311 187 276T143 208T130 151Q130 113 156 88T211 55T268 47Q349 47 403 125Q415 144 439 157T483 171Q499 171 499 160Q499 148 475 120T413 59T315 3T197 -22Q124 -22 77 14T30 105Q30 126 39 154T66 216T122 288T209 354L223 362Q144 400 144 470",70:"199 579Q181 579 181 590Q181 598 188 611T212 639T260 666T335 682Q336 682 349 682T383 682T431 682T493 683T561 683Q776 682 784 681Q826 673 829 647Q829 620 797 600T744 580Q728 580 728 595Q729 607 713 610Q698 613 598 614H500L499 610Q499 598 467 486T428 367Q428 365 551 365H674Q683 360 684 355Q687 346 677 329Q666 312 642 299T598 285Q586 285 582 296H402L394 277Q386 258 373 229T346 167T315 102T286 51Q265 22 225 -5T133 -32Q108 -32 87 -25T54 -7T33 15T21 35T18 47Q18 60 44 80T98 103Q108 103 111 101T119 88Q130 66 150 54T179 39T195 37Q199 37 203 43Q217 67 245 125T318 300T391 532Q393 543 398 564T406 598T409 613T339 614H269Q229 579 199 579",71:"216 68Q155 68 115 100T59 177T44 273Q44 299 50 333T73 421T133 533T239 632Q346 704 466 704Q508 704 515 703Q555 696 577 681T599 635Q599 605 570 560T523 496Q490 466 455 466Q440 466 440 475T469 526T499 589Q499 605 489 617Q460 636 403 636Q343 636 295 611T220 548T174 464T150 382T144 318Q144 241 180 189T287 137Q325 137 359 160Q428 205 466 322Q472 342 501 359T551 376Q557 376 560 373T564 368L565 365Q560 341 551 302T512 173T451 31Q359 -119 204 -119Q163 -118 127 -109T74 -91T53 -77Q52 -75 52 -71Q52 -54 79 -35T132 -14H140L151 -19Q210 -49 281 -49H289Q312 -49 329 -31Q351 -7 372 36T405 109T416 142L408 136Q401 131 392 125T369 111T338 96T303 82T261 72T216 68",72:"18 487Q18 496 29 517T67 566T127 621T216 665T330 683Q359 683 376 669T397 643T400 622Q400 584 382 488T348 343Q348 342 467 342H587L594 366Q615 440 648 534T690 641Q701 656 723 669T764 683Q783 683 783 672L750 578Q716 485 677 346T625 101Q624 92 623 82T622 65T621 56Q621 20 658 20Q666 20 701 25Q709 52 736 69T785 87Q803 87 803 75T791 44T754 3T685 -33T588 -48Q568 -48 562 -46Q522 -31 522 13V23Q531 129 562 250L569 281L565 280Q561 278 556 277T549 274L438 273H328L321 249Q307 202 275 107T232 0Q219 -16 196 -28T155 -41Q149 -41 145 -39T140 -34T139 -29Q139 -24 148 -3T181 86T233 247Q240 270 240 272Q240 273 194 273H169Q139 273 139 285Q139 295 153 308T187 332Q206 341 236 342L260 343L264 359Q278 414 289 482T300 578Q300 613 260 613H254Q198 613 169 592Q148 578 127 544T104 508Q72 478 37 475Q18 475 18 487",73:"174 0H31Q-13 0 -21 2T-30 12Q-30 23 -17 36Q9 60 42 68L155 70Q187 102 214 179T257 333T302 491T366 610L369 614H305Q221 611 188 607T145 596T128 569Q119 543 94 529T47 512Q28 512 28 524Q28 527 32 539Q56 614 159 654Q218 678 312 682Q314 682 339 682T404 682T481 683H632Q642 678 642 671Q642 657 621 641T577 617Q570 615 507 614H444Q427 592 406 542Q382 478 355 366T310 209Q280 123 238 78L230 69H330Q442 70 442 74Q443 74 443 77T447 87T460 105Q490 134 527 137Q545 137 545 125Q545 120 542 112Q531 78 491 49T399 7Q379 2 360 2T174 0",74:"148 78Q148 16 189 -17T286 -50Q319 -50 348 -33T396 10T426 59T444 101L471 204Q498 306 521 372Q575 532 649 605L659 614H591Q517 613 494 607Q433 591 400 550T360 477Q353 454 325 437T275 419Q256 419 260 435Q280 523 376 597T583 681Q603 683 713 683H830Q839 674 839 671Q839 654 810 634T754 614Q735 614 721 601Q688 571 654 495T600 351T561 209T541 132Q507 29 412 -45T213 -119Q141 -119 94 -77T47 33Q47 55 50 69T58 90T71 103Q105 131 135 131Q152 131 152 120Q152 119 151 114T149 99T148 78",75:"194 618Q193 618 182 613T156 601T131 594Q113 594 113 605Q113 623 144 644Q154 650 205 676T267 703Q277 705 279 705Q295 705 295 691Q295 569 250 397Q225 306 197 217T151 81T128 25Q120 8 94 -7T47 -22Q32 -22 32 -10L64 76Q95 163 133 295T185 530Q198 611 194 618ZM331 429Q331 383 364 290T449 117T542 36Q574 36 607 51T652 103Q660 124 677 133T709 143Q727 143 727 128Q727 119 723 111Q704 56 639 17T497 -22H493Q463 -22 425 16Q401 40 382 71Q335 138 296 243T256 399Q256 434 288 473Q342 540 471 622T670 705Q691 704 703 696Q732 678 732 644Q732 613 714 600T677 586Q671 586 667 587T660 592T657 604V619Q657 647 629 647Q623 647 620 646Q576 635 495 583T365 482Q331 448 331 429",76:"62 -22T47 -22T32 -11Q32 -1 56 24T83 55Q113 96 138 172T180 320T234 473T323 609Q364 649 419 677T531 705Q559 705 578 696T604 671T615 645T618 623V611Q618 582 615 571T598 548Q581 531 558 520T518 509Q503 509 503 520Q503 523 505 536T507 560Q507 590 494 610T452 630Q423 630 410 617Q367 578 333 492T271 301T233 170Q211 123 204 112L198 103L224 102Q281 102 369 79T509 52H523Q535 64 544 87T579 128Q616 152 641 152Q656 152 656 142Q656 101 588 40T433 -22Q381 -22 289 1T156 28L141 29L131 20Q111 0 87 -11",77:"28 9Q28 37 43 63T73 90Q77 90 83 84T103 70T141 57H146Q162 57 178 79T222 167Q266 279 295 371T334 513T349 598T358 651T371 677Q397 705 432 705Q442 705 445 699T452 666Q453 661 453 659Q475 538 509 405T568 207L574 192Q581 178 587 164T594 150Q596 150 635 189T693 248Q765 324 863 438T1024 626T1089 701Q1093 705 1100 705Q1111 705 1111 682Q1111 675 1108 660T1099 611T1086 540Q1041 277 1041 144Q1041 98 1044 75T1050 48T1059 42Q1064 41 1075 46Q1102 61 1121 61Q1137 61 1137 50Q1137 28 1087 0T1000 -29Q983 -29 972 -23T955 -9T945 16T942 45T941 83V96Q941 158 952 256T974 422L985 489Q984 489 939 436T821 300T698 164Q665 128 620 85T568 37Q564 34 558 34Q550 34 546 37T535 54Q512 91 496 127T450 259T389 498L384 518Q349 367 294 223T198 15Q155 -50 117 -50Q87 -50 61 -35T30 -6Q28 2 28 9",78:"343 705Q358 705 358 698Q360 696 370 658T411 524T484 319Q536 174 590 82L595 73L615 152Q646 274 683 407Q729 571 752 637T799 727Q852 780 937 788Q939 788 947 788T958 789H962Q979 789 979 765Q979 722 951 692Q942 683 924 683Q888 681 859 672T818 654T803 639Q784 608 708 322T631 15Q631 14 630 15Q630 17 629 15Q628 14 628 12Q621 -4 601 -17T560 -31Q550 -31 546 -28T530 -7Q484 67 458 123T398 272Q352 392 314 514L306 535V534Q306 533 296 488T272 379T234 239T185 100T127 -7T61 -50Q34 -50 4 -34T-27 8Q-27 33 -12 61T18 90Q21 90 36 77T87 57H92Q109 57 123 78T162 173Q206 299 232 417T265 599T276 667Q284 681 304 693T343 705",79:"308 428Q289 428 289 438Q289 457 318 508T378 593Q417 638 475 671T599 705Q688 705 732 643T777 483Q777 380 733 285T620 123T464 18T293 -22Q188 -22 123 51T58 245Q58 327 87 403T159 533T249 626T333 685T388 705Q404 705 404 693Q404 674 363 649Q333 632 304 606T239 537T181 429T158 290Q158 179 214 114T364 48Q489 48 583 165T677 438Q677 473 670 505T648 568T601 617T528 636Q518 636 513 635Q486 629 460 600T419 544T392 490Q383 470 372 459Q341 430 308 428",80:"37 475Q19 475 19 487Q19 536 103 604T327 682Q329 682 344 682T380 682T421 683H463Q625 683 695 615Q718 591 726 564Q733 547 733 525Q733 412 607 312T321 205H312Q293 205 293 217Q293 224 302 236T333 260T385 274Q558 287 614 407Q633 445 633 477Q633 515 612 543T556 585T481 607T399 614H370L368 603Q352 463 312 312T242 82T202 -13Q190 -33 164 -45T121 -57Q108 -57 108 -45Q108 -40 120 -10T151 73T192 190T233 349T266 539Q267 546 269 565T272 598T274 613H270Q209 613 163 588Q131 572 113 518Q102 502 80 490T37 475",81:"114 286Q114 358 151 433T249 569T392 667T558 705Q653 705 713 641T774 460Q774 389 750 322T687 206T600 114T504 46T412 4L399 -2Q542 -62 636 -62Q660 -62 670 -54T686 -27T700 0Q734 34 770 34Q787 34 787 23Q787 -18 720 -74T563 -131Q485 -131 350 -83T145 -34Q127 -34 127 -22Q127 -12 144 5T190 31L200 34L237 35Q386 38 467 79Q550 120 612 210T675 416Q675 510 625 573T484 636Q410 636 346 587T248 469T214 333Q214 306 221 281T243 229T288 188T360 172Q403 172 441 188T490 205Q510 205 510 192Q505 162 432 132T287 102Q206 102 160 155T114 286",82:"37 475Q19 475 19 487Q19 503 35 530T83 589T180 647T327 682H374Q387 682 417 682T464 683Q519 683 559 679T642 663T708 625T731 557Q731 481 668 411T504 300Q506 296 512 286T528 257T553 202Q594 105 611 82Q635 47 665 47Q708 47 742 93Q758 113 786 128Q804 136 819 137Q837 137 837 125Q837 115 818 92T767 43T687 -2T589 -22Q549 -22 517 22T467 120T422 221T362 273Q346 273 346 287Q348 301 373 320T436 342Q437 342 446 343T462 345T481 348T504 353T527 362T553 375T577 393Q598 412 614 443T630 511Q630 545 613 566T541 600T393 614Q370 614 370 613L366 584Q349 446 311 307T243 96L213 25Q205 8 179 -7T132 -22Q125 -22 120 -18T117 -8Q117 -5 130 26T163 113T205 239T246 408T274 606V614Q273 614 259 613T231 609T198 602T163 588Q131 572 113 518Q102 502 80 490T37 475",83:"554 512Q536 512 536 522Q536 525 539 539T542 564Q542 588 528 604Q515 616 482 625T410 635Q374 635 349 624T312 594T295 561T290 532Q290 505 303 482T342 442T378 419T409 404Q435 391 451 383T494 357T535 323T562 282T574 231Q574 133 464 56T220 -22Q138 -22 78 21T18 123Q18 184 61 227T156 274Q178 274 178 263Q178 260 177 258Q172 247 164 239T151 227T136 218L127 213L124 202Q118 186 118 163Q120 124 165 86T292 48Q374 48 423 86T473 186V193Q473 267 347 327Q268 364 239 389Q191 431 191 486Q191 547 242 600T356 679T470 705Q472 705 478 705T489 704Q551 704 596 682T642 610Q642 566 621 545Q592 516 554 512",84:"49 475Q34 475 34 490Q34 552 106 611T261 681Q272 683 507 683H742Q790 717 816 717Q833 717 833 708Q833 682 795 653T714 615Q691 610 588 609Q490 609 490 607L483 580Q476 554 462 496T435 392Q410 289 395 231T363 116T335 34T309 -15T279 -47T242 -64Q231 -68 218 -68Q203 -68 203 -57Q203 -52 211 -38Q224 -7 234 20T251 66T268 123T283 179T304 261T328 360Q342 415 360 488Q380 567 384 582T397 605Q400 607 401 609H302H244Q200 609 188 607T167 596Q145 572 145 541Q145 520 109 498T49 475",85:"8 592Q8 616 70 649T193 683Q246 683 246 631Q246 587 205 492T124 297T83 143Q83 101 100 75T154 48Q202 48 287 135T450 342T560 553Q589 635 593 640Q603 656 626 668T669 683H670Q687 683 687 672T670 616T617 463T547 220Q525 137 521 68Q521 54 522 50T533 42L543 47Q573 61 588 61Q604 61 604 47Q599 16 506 -22Q486 -28 468 -28T436 -18T421 18Q421 92 468 258Q468 259 467 257T459 248Q426 206 391 167T303 81T194 6T83 -22Q66 -22 58 -20Q25 -11 4 19T-17 99Q-17 146 8 220T64 358T120 488T146 586Q146 604 141 608T123 613H120Q99 613 72 597T25 580Q8 580 8 592",86:"25 633Q25 647 47 665T100 683Q291 683 291 306Q291 264 288 213T282 132L279 102Q281 102 308 126T378 191T464 279T545 381T596 479Q600 490 600 502Q600 527 581 550T523 577Q505 577 505 601Q505 622 516 647T542 681Q546 683 558 683Q605 679 631 645T658 559Q658 423 487 215Q409 126 308 37T190 -52Q177 -52 177 -28Q177 -26 183 15T196 127T203 270Q203 356 192 421T165 523T126 583T83 613T41 620Q25 620 25 633",87:"25 633Q25 647 46 665T103 683Q168 683 207 632Q228 608 243 568Q269 485 269 374Q269 324 265 271T256 184L251 150L252 152Q254 153 257 157T264 167T274 180T286 197Q359 293 424 398T519 558T549 616Q549 618 547 624T545 638Q550 654 572 668T615 683Q626 683 632 672T657 595Q726 370 741 128L742 110Q752 122 767 142T823 217T894 321T950 424T976 511Q976 544 958 560T918 577Q906 577 906 602Q906 629 918 651T942 681Q948 683 954 683Q983 683 1008 658T1034 569T999 421T915 257T813 109T724 -3T681 -49Q666 -59 660 -45Q659 -41 657 35T639 233T591 477Q573 551 570 551Q569 551 554 523T507 439T433 315T323 155T182 -25Q160 -52 151 -53Q137 -53 137 -30Q137 -29 148 25T170 168T181 338Q181 424 168 483T131 571T87 609T40 620Q25 620 25 633",88:"324 614Q291 576 250 573Q231 573 231 584Q231 589 232 592Q235 601 244 614T271 643T324 671T400 683H403Q462 683 481 610Q485 594 490 545T498 454L501 413Q504 413 551 442T648 509T705 561Q707 565 707 578Q707 610 682 614Q667 614 667 626Q667 641 695 662T755 683Q765 683 775 680T796 662T807 623Q807 596 792 572T713 499T530 376L505 361V356Q508 346 511 278T524 148T557 75Q569 69 580 69Q585 69 593 77Q624 108 660 110Q667 110 670 110T676 106T678 94Q668 59 624 30T510 0Q487 0 471 9T445 32T430 71T422 117T417 173Q416 183 416 188Q413 214 411 244T407 286T405 299Q403 299 344 263T223 182T154 122Q152 118 152 105Q152 69 180 69Q183 69 187 66T191 60L192 58V56Q192 41 163 21T105 0Q94 0 84 3T63 21T52 60Q52 77 56 90T85 131T155 191Q197 223 259 263T362 327T402 352L391 489Q391 492 390 505T387 526T384 547T379 568T372 586T361 602T348 611Q346 612 341 613T333 614H324",89:"65 599Q65 618 107 650T204 683Q267 683 312 643T380 533T414 385T424 217Q424 186 423 160T422 123Q426 123 468 170T567 304T650 469Q661 503 661 519Q661 546 639 570Q615 591 583 591Q569 591 569 616Q569 640 582 661T613 683Q624 683 638 679T671 664T702 625T714 558Q714 472 639 329T426 45Q361 -21 282 -82T154 -143Q97 -143 64 -104T31 -20Q31 4 44 25T70 46Q78 46 81 39T87 16T97 -9Q127 -51 182 -51Q184 -51 187 -50H190Q233 -41 314 25Q330 36 330 40Q336 79 336 178Q336 508 223 594Q199 614 158 619L148 620L139 611Q111 586 83 586Q65 586 65 599",90:"694 220Q708 220 708 210Q708 195 695 167T658 105T593 42T502 3Q492 1 458 1Q400 1 293 11T150 22Q116 22 92 11T51 0Q37 0 37 10Q37 21 63 44T179 146T367 319L391 343H343L296 344Q285 350 285 358Q285 365 289 372T300 383T313 392T324 398L329 400H450L561 518Q597 558 607 571L621 587H596Q553 589 484 599T383 609Q342 609 326 596T301 555Q294 533 263 514T208 492Q189 492 189 503Q189 510 197 528T215 559Q249 607 318 645T466 683Q504 683 573 673T669 662L690 661Q734 682 748 683Q767 683 767 673Q767 666 746 640Q655 531 555 428L529 400Q529 399 543 399Q604 397 604 366Q604 350 587 337T551 322Q541 322 539 323Q529 328 529 334Q529 339 487 342L470 343L446 320Q272 153 200 96L235 95Q297 95 392 86T533 74H554Q586 116 597 159Q604 179 635 199T694 220"},{});var texMathit$1={},texMathit={};Object.defineProperty(texMathit,"__esModule",{value:!0}),texMathit.texMathit=void 0,texMathit.texMathit={65:[.716,0,.743],66:[.683,0,.704],67:[.705,.021,.716],68:[.683,0,.755],69:[.68,0,.678],70:[.68,0,.653],71:[.705,.022,.774],72:[.683,0,.743],73:[.683,0,.386],74:[.683,.021,.525],75:[.683,0,.769],76:[.683,0,.627],77:[.683,0,.897],78:[.683,0,.743],79:[.704,.022,.767],80:[.683,0,.678],81:[.704,.194,.767],82:[.683,.022,.729],83:[.705,.022,.562],84:[.677,0,.716],85:[.683,.022,.743],86:[.683,.022,.743],87:[.683,.022,.999],88:[.683,0,.743],89:[.683,0,.743],90:[.683,0,.613],97:[.442,.011,.511],98:[.694,.011,.46],99:[.441,.01,.46],100:[.694,.011,.511],101:[.442,.01,.46],102:[.705,.204,.307],103:[.442,.205,.46],104:[.694,.011,.511],105:[.656,.01,.307],106:[.656,.204,.307],107:[.694,.011,.46],108:[.694,.011,.256],109:[.442,.011,.818],110:[.442,.011,.562],111:[.442,.011,.511],112:[.442,.194,.511],113:[.442,.194,.46],114:[.442,.011,.422],115:[.442,.011,.409],116:[.626,.011,.332],117:[.441,.011,.537],118:[.443,.01,.46],119:[.443,.011,.664],120:[.442,.011,.464],121:[.441,.205,.486],122:[.442,.011,.409]},Object.defineProperty(texMathit$1,"__esModule",{value:!0}),texMathit$1.texMathit=void 0;var FontData_js_1$6=FontData,tex_mathit_js_1$1=texMathit;texMathit$1.texMathit=(0,FontData_js_1$6.AddPaths)(tex_mathit_js_1$1.texMathit,{65:"85 46Q112 48 132 56T161 73T176 92T185 104Q185 106 353 407T524 709Q527 716 551 716Q568 716 572 712Q573 711 574 710Q576 708 594 384Q613 54 617 52H618Q626 46 672 46H689Q696 41 696 36Q696 13 683 0H670Q639 2 557 2Q526 2 500 2T459 2T441 1Q425 1 425 10Q425 12 427 24Q428 27 429 31T430 36T432 40T434 43T437 45T443 46T450 46Q514 46 514 69Q514 74 511 136L506 209H292L260 152Q222 84 222 74Q222 48 264 46Q280 46 280 35Q280 33 278 21Q275 7 272 4T259 0Q256 0 232 1T159 2Q135 2 109 1T78 0Q58 0 58 10Q58 14 61 26T66 40Q68 46 85 46ZM504 260Q503 263 496 407T486 553L466 520Q446 486 402 406L318 256Q318 255 411 255H504V260",66:"57 11Q57 38 69 45L74 46Q78 46 85 46T99 46Q134 47 145 50T162 62Q164 66 233 344T303 626Q303 627 302 629V631Q296 637 241 637H223Q217 642 217 645T219 664Q223 677 229 683H411L593 682L605 680Q616 678 628 675T660 662T694 639T720 601T732 547Q732 519 726 503Q710 452 662 414T556 360L545 357L556 355Q604 346 641 312T678 221Q678 155 622 92T482 8Q459 2 439 2T256 0H154H105Q74 0 66 2T57 11ZM629 549Q628 550 629 557T627 576T619 600T601 622T570 636Q564 637 490 637Q472 637 454 637T424 636T411 636Q399 635 395 622T364 500Q333 377 332 376Q332 374 408 374L485 375L495 377Q547 390 588 437T629 549ZM504 336Q500 337 410 337Q323 337 322 336Q322 334 305 263T270 122T252 51Q252 47 337 46Q346 46 361 46T384 45Q425 45 455 55T515 95Q574 156 574 235Q574 276 555 304T504 336",67:"395 -21Q279 -21 215 56T150 244Q150 402 265 543Q339 630 421 667T562 704Q596 704 604 703Q627 698 647 689T679 669T699 649T711 633T716 627L753 665Q790 704 792 704Q793 705 798 705Q812 705 812 698Q812 694 780 561Q744 422 744 421Q742 416 739 415T721 413H705Q699 419 699 426Q701 432 701 444Q705 464 705 493Q705 524 700 551T681 604T643 644T583 659Q480 659 387 570Q321 502 287 397T252 213Q252 123 297 74Q347 24 421 24Q500 24 564 89T653 240Q656 253 659 255T677 257Q700 257 700 248Q700 242 694 222Q681 183 656 143T593 65T504 3T395 -21",68:"56 11Q56 38 68 45L72 46Q77 46 84 46T98 46Q133 47 144 50T161 62Q163 66 232 344T302 626Q302 627 302 629L301 631Q295 637 240 637H222Q216 642 216 645T218 664Q222 677 228 683H403Q582 683 589 682Q672 674 723 608T775 440Q775 312 709 209T562 54Q502 14 432 2Q423 1 243 0H148H102Q72 0 64 2T56 11ZM254 51Q254 46 348 46Q395 46 422 50T484 71Q585 121 633 255Q679 396 679 477Q679 522 665 554T629 603T587 626T548 636Q547 636 536 636T510 636T480 637Q420 637 411 636T398 627Q396 623 325 339T254 51",69:"248 634Q216 634 214 638Q213 641 213 646Q213 674 224 678Q226 680 481 680H736Q743 676 743 669Q743 665 729 557T713 447Q711 440 690 440H675Q667 445 667 454Q667 455 671 481T675 536Q675 583 658 604T592 632Q574 634 475 634Q439 634 424 633T405 631T399 625Q397 622 367 501T336 377Q336 376 367 376H388Q451 376 477 389Q493 399 503 419T520 462T528 489Q531 493 549 493Q557 493 561 492T566 491T569 488T572 483L539 351Q507 221 503 216Q503 216 500 213H484Q468 213 465 216Q461 219 461 225Q461 228 466 250T472 290Q472 317 452 323T368 330H324Q323 326 289 191T255 51T331 46H360Q413 46 444 49T511 67T570 113Q589 137 608 175T638 242T652 272Q656 274 670 274Q693 274 693 262L648 148Q590 4 588 2Q585 0 323 0H61Q54 4 54 11Q54 27 61 41Q65 46 95 46Q131 47 142 50T159 62L194 200Q229 337 264 477T299 623Q299 630 292 631T248 634",70:"299 623Q299 630 292 631T247 634H219Q213 640 213 642T215 661Q218 673 225 680H724Q731 676 731 669Q731 665 717 557T701 447Q699 440 678 440H663Q656 444 656 452Q656 457 659 485T663 538Q663 586 644 607T566 633Q564 633 535 633T486 634H458Q404 634 399 625Q396 620 364 492L332 363H380Q446 365 464 373Q496 389 514 458Q518 477 523 479Q527 480 541 480H556Q563 475 563 470Q563 467 532 339T498 207Q496 200 475 200H460Q453 207 453 212Q454 213 456 225T461 254T464 278Q464 304 445 310T369 317H321L289 190Q257 66 257 59Q257 54 261 52T283 48T337 46Q348 46 352 46T360 45T366 42T368 37Q368 32 365 23Q360 4 355 2Q352 1 342 1Q336 1 297 1T199 2Q138 2 106 2T71 1H68Q54 1 54 11Q54 38 66 45L70 46Q75 46 82 46T96 46Q131 47 142 50T159 62L194 200Q229 337 264 477T299 623",71:"632 -1Q629 -1 622 5T604 25T583 53Q508 -22 394 -22Q287 -22 219 52T150 244Q150 402 265 543Q339 630 421 667T562 704Q596 704 604 703Q627 698 647 689T679 669T699 649T711 633T716 627L753 665Q790 704 792 704Q793 705 798 705Q812 705 812 698Q812 694 780 561Q744 422 744 421Q742 416 739 415T721 413H705Q699 419 699 426Q701 432 701 444Q705 464 705 493Q705 524 700 551T681 604T643 644T583 659Q480 659 387 570Q319 501 286 394T252 208Q252 156 269 118T314 61T369 33T425 24Q470 24 509 46T566 104Q571 116 583 162T595 214Q595 222 583 223Q561 227 517 227H495Q488 230 488 238Q488 254 495 268Q500 273 511 273Q515 273 532 273T581 272T649 271Q731 271 752 273H761Q767 267 767 264T765 246Q761 233 755 227H742Q698 227 693 213L639 4Q636 -1 632 -1",72:"61 0Q54 7 54 11Q54 27 61 41Q65 46 95 46Q131 47 142 50T159 62Q161 66 230 344T300 626Q300 627 300 629L299 631Q293 637 238 637H220Q214 642 214 645T216 664Q220 677 226 683H239Q307 681 372 681Q480 681 486 683H496Q502 677 502 674T500 656Q496 643 490 637H472Q418 637 406 630Q400 627 396 612T367 500Q360 474 352 442T340 395L336 380Q336 378 466 378H596Q657 622 657 626Q657 627 656 629V631Q650 637 595 637H577Q571 642 571 645T573 664Q577 677 583 683H596Q664 681 729 681Q837 681 843 683H853Q860 676 860 672Q858 647 848 637H819Q783 636 772 634T756 623Q753 618 684 340T614 57Q614 50 621 49T666 46Q697 46 699 40Q701 37 698 21Q693 3 689 1Q686 0 677 0Q673 0 657 0T611 1T546 2Q453 2 428 0H418Q411 7 411 11Q411 27 418 41Q422 46 452 46Q488 47 499 50T516 62Q517 64 550 196T584 331Q584 332 454 332H324L291 197Q257 64 257 56Q257 50 265 49T309 46Q340 46 342 40Q344 37 341 21Q336 3 332 1Q329 0 320 0Q316 0 300 0T254 1T189 2Q96 2 71 0H61",73:"235 637Q217 637 213 638T209 649Q209 673 220 682Q222 683 237 683Q278 681 369 681Q404 681 441 682T483 683Q499 683 503 681T508 672Q508 670 505 658T500 643Q498 637 464 637Q425 635 415 633T398 621Q396 618 327 340T257 58T260 52T278 48T322 46Q349 46 349 36Q349 31 346 22Q342 4 337 1Q336 1 334 1T329 0Q325 0 307 0T258 1T190 2Q95 2 67 0H56Q49 7 49 11Q51 38 62 46H91Q129 47 141 50T159 62Q161 66 230 344T300 625Q300 637 235 637",74:"361 637Q333 637 331 641Q330 644 330 649Q330 673 341 682Q343 683 360 683Q405 681 500 681Q551 681 577 681T607 682Q622 682 622 673Q622 665 616 647Q614 640 610 639T587 637Q547 636 541 624Q538 618 477 374T413 124Q391 64 333 22T207 -21T109 12T78 86Q78 130 101 150T149 170Q193 170 196 129Q196 100 178 80T137 58L132 57Q134 52 138 46T160 28T205 16Q242 16 273 48T319 122Q322 129 383 371T444 627Q444 637 361 637",75:"668 621Q668 635 645 637Q629 637 629 648Q629 650 632 662T637 677Q640 682 653 682Q657 682 688 681T764 680Q786 680 810 681T839 682Q859 682 859 672Q859 655 852 643Q849 637 839 637Q804 637 768 621T717 595T697 578Q696 578 600 497L505 417L508 408Q543 311 574 227T618 106T632 69Q645 47 688 46H707Q713 38 713 37T710 19Q706 6 700 0H688Q659 2 587 2Q557 2 532 2T492 2T474 1Q458 1 458 10Q458 13 460 23Q464 39 466 42T480 46Q526 46 526 72Q526 75 476 213L427 350Q426 350 396 325T334 272T302 242Q302 241 299 230T290 194T279 150Q257 61 257 55Q257 50 265 49T309 46H337Q343 40 343 38T341 19Q337 6 331 0H316Q280 2 190 2Q158 2 131 2T89 2T70 1Q54 1 54 11Q54 38 66 45L70 46Q75 46 82 46T96 46Q131 47 142 50T159 62Q161 66 230 344T300 626Q300 627 300 629L299 631Q293 637 238 637H220Q214 642 214 645T216 664Q220 677 226 683H239Q307 681 372 681Q386 681 414 681T464 682L487 683H496Q502 677 502 674T500 656Q495 641 491 637H462Q426 636 415 634T399 623Q396 618 358 467L320 314Q321 314 484 452Q510 474 552 509Q625 570 646 590T668 621",76:"61 0Q54 4 54 11Q54 27 61 41Q65 46 95 46Q131 47 142 50T159 62Q161 66 230 344T300 626Q300 627 300 629L299 631Q293 637 238 637H220Q214 642 214 645T216 664Q220 677 226 683H240Q275 681 371 681Q407 681 438 681T487 682T509 682Q527 682 527 674Q527 670 524 659Q523 657 523 654T522 649T520 645T519 642T517 640T515 639T512 638T507 637T502 637T494 637H478Q433 636 417 633T396 617Q395 614 325 334T255 51Q255 47 319 47Q387 47 410 52Q459 65 494 98T543 163T570 229T589 273H622Q628 264 628 262Q628 259 584 133T539 5Q537 1 511 1Q482 0 296 0H61",77:"72 1Q58 1 58 11Q58 33 66 41Q68 46 87 46Q150 50 168 84Q172 91 238 356T304 626Q304 627 304 629L303 631Q297 637 242 637H224Q218 642 218 645T220 664Q224 677 230 683H326H394Q417 683 422 682T429 676L480 127L502 163Q523 199 560 262T642 400Q801 668 805 676L817 683H1003Q1010 678 1010 672Q1010 650 997 637H979Q915 637 906 623Q903 618 834 340T764 57Q764 50 771 49T817 46H845Q851 38 851 37T848 19Q845 7 838 0H824Q789 2 701 2Q670 2 644 2T603 2T584 1Q569 1 569 11Q569 13 571 25Q576 42 581 45L586 46Q590 46 597 46T611 46Q646 47 657 50T674 62L813 616L634 313Q453 7 452 7Q446 0 428 0Q409 0 407 6Q405 10 379 304T351 604L285 348Q220 83 220 82Q220 65 233 57T279 46H295Q301 38 301 37T298 19Q295 7 288 0H275Q244 2 171 2Q145 2 123 2T88 2T72 1",78:"633 637Q624 637 621 639T617 650Q617 670 630 683H641Q682 680 736 680Q836 680 845 683H853Q860 676 860 672Q858 647 848 637H832Q764 633 750 598Q746 590 673 300Q656 230 638 156T610 44L600 7Q598 0 576 0H559Q553 6 448 297L342 588Q341 588 279 336T216 81Q216 49 274 46Q293 46 295 40Q297 37 294 21Q293 19 292 16T291 11T290 7T289 4T287 2T284 1T280 1T275 0T263 0T229 1T167 2Q91 2 70 0H61Q54 7 54 11T57 27Q61 41 64 43T83 46Q146 50 164 84Q167 90 235 362L303 634Q300 635 253 637H220Q214 643 214 645T216 664Q220 677 226 683H314Q386 683 397 683T410 677Q412 675 501 428L591 179Q591 178 592 180T595 189T600 209T610 246T624 303T645 385Q698 595 698 606Q698 618 683 627T633 637",79:"149 237Q149 326 186 413T282 563T412 665T552 704Q619 704 667 678T741 611T777 528T788 444Q788 328 728 219T572 44T377 -22Q275 -22 212 50T149 237ZM688 487Q688 570 650 617T548 665Q467 665 398 592T291 413T253 203Q253 119 290 70T387 20Q440 20 489 52T573 135T635 249T675 373T688 487",80:"62 0Q55 7 55 11Q55 27 62 41Q66 46 96 46Q132 47 143 50T160 62Q162 66 231 344T301 626Q301 627 300 629V631Q294 637 239 637H221Q215 642 215 645T217 664Q221 677 227 683H404H431H502Q578 683 615 675T684 636Q729 595 729 531Q729 462 671 396T524 308Q499 302 404 301H318L288 182Q258 63 258 55T310 46Q341 46 343 40Q345 37 342 21Q337 3 333 1Q330 0 321 0Q317 0 301 0T255 1T190 2Q97 2 72 0H62ZM626 555V562Q626 620 552 635Q546 636 481 637Q466 637 450 637T423 636T412 636Q401 635 398 627Q396 622 361 484Q353 452 344 416T330 362L325 344Q325 342 390 342H427Q523 342 567 386Q596 415 611 473T626 555",81:"460 -107Q460 -72 464 -42T468 -7L457 -10Q446 -14 424 -18T379 -22Q276 -22 213 50T149 237Q149 326 186 413T282 563T412 665T552 704Q664 704 726 631T788 442Q788 305 703 180Q627 64 517 13L506 8Q506 7 508 -12T513 -38T522 -59T538 -79T565 -85Q604 -85 634 -59T672 0Q676 11 684 11Q693 11 695 2Q695 -1 690 -20T673 -69T644 -126T599 -174T538 -194Q464 -194 460 -110Q460 -108 460 -107ZM689 481Q689 578 646 621T551 665Q468 665 391 586Q321 512 285 399T249 202Q249 106 295 58Q310 41 314 41Q315 41 315 46Q315 83 344 118T420 154Q450 154 473 135Q493 114 500 69L502 58L512 65Q571 110 613 192T672 348T689 481ZM472 49Q472 118 415 118Q393 118 373 98T353 51Q353 18 386 18H387Q424 18 472 40V49",82:"62 0Q55 7 55 11Q55 27 62 41Q66 46 96 46Q132 47 143 50T160 62Q162 66 231 344T301 626Q301 627 300 629V631Q294 637 239 637H221Q215 642 215 645T217 664Q221 677 227 683H386Q554 682 569 679Q571 678 580 676Q643 662 680 623T717 533Q717 473 667 420T528 337L538 330Q563 314 578 286T594 228Q594 212 588 147T581 65Q581 36 589 26T616 16H618Q637 16 652 37Q668 57 677 94Q679 105 701 105T723 95Q723 89 717 72T698 33T662 -5T610 -22Q555 -22 513 3T471 88Q471 107 486 168T502 244Q502 303 452 320Q445 322 382 323H320L288 192Q255 63 255 55T307 46Q338 46 340 40Q342 37 339 21Q335 3 330 1Q326 0 320 0Q317 0 306 0T265 1T190 2Q99 2 73 0H62ZM612 558Q612 566 612 568T610 581T603 597T590 611T567 625T532 635Q526 636 470 637Q458 637 445 637T422 636T412 636Q402 635 397 627L390 598Q383 570 373 532T354 455T337 389T330 361Q356 360 384 360H415Q483 360 527 382Q557 399 574 424T604 498Q612 533 612 558",83:"198 460Q198 551 269 628T432 705Q516 705 557 644L583 673Q589 679 593 684T600 693T605 698T609 702T611 704T614 705T618 705H620Q633 705 633 698T605 577T573 459L570 456H554Q546 456 543 456T536 457T532 460T531 466Q531 469 533 489T536 532Q536 573 525 600T496 640T462 657T427 662Q369 662 325 612T281 503Q281 475 290 458T318 430T356 415T407 401T463 383Q506 360 522 323T538 258V244Q538 141 465 60T300 -22Q198 -22 152 41L143 31Q137 25 126 12T106 -10T95 -21L92 -22Q88 -22 86 -22Q81 -22 78 -20T74 -16V-14Q74 -11 132 221Q134 227 155 227H171Q177 221 177 215Q177 212 175 205T171 182T169 147Q171 99 195 70T246 33T306 25Q358 25 400 70T453 169Q455 180 455 203V210Q455 263 414 285Q409 288 347 305Q271 328 254 339Q239 350 224 371Q198 409 198 460",84:"178 437Q173 442 171 446Q171 451 238 654Q243 670 250 677H681H762Q792 677 799 676T806 667Q806 661 788 553T768 444Q768 437 746 437Q727 437 723 445Q723 450 729 492T736 562Q736 589 728 602T693 624Q675 630 622 630H595Q575 630 571 629T564 623Q562 621 492 342T422 59Q422 48 502 46H542Q548 38 548 37T545 19Q541 6 535 0H517Q475 2 357 2Q315 2 279 2T223 2T198 1Q179 1 179 9Q179 14 182 24Q187 42 190 44Q194 46 206 46H232Q289 47 301 49T326 65L395 344Q465 619 465 626Q465 629 462 629Q456 631 411 631Q364 631 336 625T288 597T255 549T224 467Q215 442 210 437H178",85:"636 637Q627 637 624 639T620 650Q620 670 633 683H644Q702 681 753 681Q760 681 772 681T796 681T820 682T838 683H845H853Q860 676 860 672Q858 647 848 637H832Q764 633 750 598Q745 588 698 400T648 204Q627 140 584 86Q484 -22 378 -22Q300 -22 247 31T194 167Q194 176 194 182T196 198T200 218T207 248T217 288T231 346T250 422Q300 618 300 626Q300 627 300 629L299 631Q293 637 238 637H220Q214 642 214 645T216 664Q220 677 226 683H239Q307 681 372 681Q480 681 486 683H496Q502 677 502 674T500 656Q496 643 490 637H472Q418 637 406 630Q400 627 394 603T344 410Q299 232 292 198T284 135Q284 102 294 78T322 44T355 29T387 24Q455 24 515 74T604 211Q605 215 653 404T701 607Q701 618 686 627T636 637",86:"667 637Q657 637 654 639T650 650Q650 670 663 683H675Q704 681 772 681Q793 681 818 682T847 683Q868 683 868 672Q868 670 865 658T860 643Q857 637 848 637Q785 637 749 587L394 -15Q387 -22 366 -22Q346 -22 342 -16Q341 -13 313 303Q285 622 285 623Q283 631 273 634T229 637Q205 637 205 648Q205 654 208 666T217 682Q219 683 230 683Q276 680 329 680Q444 680 456 683H466Q472 677 472 674T470 656Q466 643 460 637H448Q384 637 384 615Q385 612 406 371T427 126Q427 125 495 240T632 473T704 596Q707 604 707 609Q707 633 667 637",87:"234 637H226Q205 637 205 648Q205 673 216 682Q218 683 231 683Q265 681 340 681Q371 681 404 682T443 683Q458 683 462 681T467 672Q467 670 464 658T459 643Q457 637 434 637Q407 636 394 632T378 623T376 613Q376 589 385 377T394 149L511 361Q542 419 596 519L613 551L612 585Q610 621 610 624Q608 637 559 637H555Q537 637 537 647Q537 654 540 664Q544 677 550 683H561Q600 680 656 680Q771 680 783 683H792Q798 677 798 675T796 658Q792 643 790 640T778 637H774Q721 637 708 620L717 385Q726 150 727 149Q727 148 752 193T812 303T882 433T942 546T969 596Q970 600 970 606Q970 610 969 613T966 620T961 625T955 628T949 631T941 633T934 634T927 636T920 637Q903 637 903 648Q903 650 905 664Q909 677 915 683H928Q960 681 1031 681Q1050 681 1073 681T1101 682Q1124 682 1124 672Q1124 655 1117 643Q1114 637 1104 637Q1085 637 1069 632T1043 618T1026 603T1014 588L1009 580L687 -16Q681 -22 660 -22Q643 -22 637 -16Q635 -14 627 223Q617 441 617 464L602 441Q578 397 487 228Q456 171 423 110T372 17T355 -15Q348 -22 328 -22Q312 -22 308 -20T303 -9Q303 -5 291 310T277 627Q273 636 234 637",88:"684 0Q670 0 634 1T569 2Q512 2 482 2T449 1Q433 1 433 10Q433 11 435 25Q437 34 438 37T442 43T448 45T459 46T476 49Q506 58 506 64Q506 65 467 179T426 295L382 244Q339 194 295 142T249 86Q245 79 245 72Q245 48 279 46Q293 46 293 32Q293 13 280 0H268Q206 2 151 2Q70 2 64 0Q50 0 50 11Q50 15 53 27Q57 41 60 43T78 46Q154 49 205 100Q207 103 312 225L411 341L407 353Q404 360 381 428T336 560T310 627Q301 636 255 637H229Q223 643 223 645T225 664Q229 677 235 683H246Q288 680 346 680Q462 680 477 683H487Q493 677 493 674T491 656Q488 644 485 641T471 637Q461 635 454 635Q419 626 421 619Q421 617 453 524T486 430T554 509T624 593Q631 604 631 611Q631 622 621 629T598 637Q583 637 583 648Q583 650 585 660Q589 676 591 679T602 683Q606 683 637 682T715 680Q742 680 771 681T804 682Q825 682 825 672Q825 650 817 642Q814 637 797 637Q739 634 700 608Q684 597 659 569T505 389L501 384L557 222Q612 61 616 57Q625 47 671 46Q691 46 697 45T704 36Q704 35 702 23Q701 19 700 14T699 7T696 3T692 1T684 0",89:"232 637Q198 637 198 647Q198 651 201 664T210 682Q212 683 223 683Q269 680 325 680Q443 680 455 683H465Q472 676 472 672Q472 656 465 642Q460 637 441 637Q395 634 395 623Q395 621 438 478T482 334T583 460T688 591Q688 593 694 601T700 617Q700 637 668 637H666Q655 637 655 648Q655 654 658 664Q660 672 660 673T663 678T668 682T677 683Q680 683 704 682T776 680Q801 680 828 681T858 682Q875 682 875 673Q875 669 872 657T867 643Q865 637 848 637Q788 634 749 597Q733 581 608 424L487 273L461 170Q454 145 448 118T438 76T434 60Q434 54 436 52T452 48T496 46H514Q520 41 520 38T518 19Q514 6 508 0H495Q427 2 364 2Q350 2 323 2T272 0H250H241Q234 7 234 11Q234 27 241 41Q245 46 275 46Q312 47 323 50T340 64Q340 65 344 79T355 120T368 171L393 274L341 448Q288 622 286 626Q278 636 232 637",90:"203 452Q203 455 236 565T270 677Q270 681 274 681Q276 683 488 683H699Q704 678 704 675Q704 663 697 649Q697 647 449 348L201 50L266 49H301Q442 49 495 116Q525 155 556 251Q563 274 565 278T579 282H585Q609 285 609 271Q609 270 570 142T528 8T518 1T466 0H303Q253 0 197 0T131 -1Q112 -1 102 -1T87 1T81 3T80 8Q80 30 89 39Q90 41 204 178T446 470T575 626L584 637H512H504H475Q446 637 426 635T378 624T330 597T289 546T254 467Q247 446 243 444Q239 442 226 442Q203 442 203 452",97:"418 53Q418 26 438 26Q466 26 494 131Q500 151 504 152Q507 153 516 153H521Q531 153 534 153T540 150T543 144Q543 141 540 126T529 88T509 43T477 5T434 -11Q404 -11 383 3T354 30T347 48H346Q345 47 342 45T337 40Q282 -11 228 -11Q172 -11 137 34T101 146Q101 260 177 351T333 442Q343 442 352 441T369 437T382 431T393 425T402 417T409 410T414 402T419 396Q423 406 436 414T461 422Q475 422 484 413T494 395Q494 384 459 244T420 88Q418 80 418 58V53ZM397 323Q397 344 382 374T333 405Q302 405 271 372Q249 349 235 316T203 215Q184 135 184 108V100V94Q184 54 207 35Q218 26 235 26Q279 26 330 91Q343 109 346 118T372 217Q397 317 397 323",98:"158 683Q163 683 223 688T300 694Q312 694 312 685T279 544Q243 405 243 403L256 412Q268 422 292 432T338 442Q395 442 431 398T467 284Q467 175 393 82T229 -11Q175 -11 142 32T108 142Q108 176 115 207T166 412Q177 458 190 510T209 588T216 616Q216 629 209 632T170 637H149Q143 643 143 645T145 664Q150 683 158 683ZM178 109Q178 27 234 27Q247 27 254 29Q295 44 323 94Q343 129 363 208T384 332Q384 354 382 361Q369 405 332 405Q282 405 228 326L222 317L205 250Q178 142 178 109",99:"257 -10Q183 -10 143 37T103 155Q103 257 173 341T337 440Q341 441 348 441H358Q421 441 445 415T469 356Q469 320 450 305T410 289Q392 289 381 299T370 325Q370 362 404 378L414 383Q392 402 365 405Q322 405 285 375T227 294Q217 271 202 213T187 119Q187 27 263 27Q299 27 330 40Q361 51 386 71T424 106T440 121Q444 121 455 110T466 96Q466 92 458 81T432 54T390 24T331 0T257 -10",100:"418 54Q418 26 438 26Q466 26 494 131Q500 151 504 152Q507 153 516 153H521H526Q543 153 543 144Q543 143 541 129Q531 91 521 65T487 14T434 -11T383 3T354 30T347 48H346Q345 47 342 45T337 40Q282 -11 228 -11Q172 -11 137 34T101 146Q101 255 174 348T337 441Q354 441 368 437T390 427T404 414T413 404T417 400L471 616Q471 629 464 632T425 637H404Q398 643 398 645T400 664Q405 683 413 683Q418 683 478 688T555 694Q567 694 567 686Q567 676 495 389L419 86Q418 80 418 61V54ZM397 323Q397 329 394 340T385 367T365 394T333 405Q302 405 271 372Q249 349 235 316T203 215Q184 135 184 108V100Q184 71 191 56Q204 26 235 26Q267 26 300 57T344 112Q347 117 372 217T397 323",101:"107 166Q107 230 131 283T193 369T270 420T345 441Q346 441 352 441T361 442H364Q409 442 439 418T470 355Q470 270 366 239Q308 223 218 223H205Q189 164 189 125Q189 83 206 55T261 27Q309 27 353 50T426 109Q436 121 440 121T453 111T466 97Q469 92 455 77Q424 41 372 16T258 -10Q184 -10 146 41T107 166ZM416 333T416 354T401 390T360 405Q322 405 292 384T246 336T223 288T215 261Q215 260 240 260Q262 261 276 262T314 266T353 275T384 291T408 317",102:"351 608Q351 642 389 661Q368 668 365 668Q358 668 352 664Q349 663 347 661T342 654T337 647T333 637T330 627T327 614T324 601T321 587T318 571L291 432Q291 431 343 431H394Q400 426 400 423T398 404Q394 390 389 386L335 385H282L255 246Q212 20 189 -51Q136 -199 58 -204Q22 -204 0 -185T-23 -134Q-23 -100 -3 -85T37 -69Q54 -69 65 -80T76 -108Q76 -115 75 -119Q70 -134 61 -144T46 -158L39 -161Q39 -162 42 -163T50 -166T61 -168Q77 -168 91 -145Q98 -128 105 -95L125 -1Q145 90 146 98Q149 109 163 180T189 317T202 384T158 385H114Q108 390 108 393T110 412Q113 424 120 431H165Q211 431 211 433Q213 435 219 473T237 561T266 639Q282 667 310 686T367 705Q402 705 426 686T450 635Q450 600 430 585T390 569Q373 569 362 580T351 608",103:"103 163Q106 263 173 347T320 441Q322 441 329 441T341 442Q387 439 419 398Q420 399 420 400Q421 402 425 406T440 416T464 422Q476 421 485 413T494 396Q494 386 465 268T407 38T377 -77Q365 -123 310 -164T179 -205Q46 -205 46 -139Q46 -114 64 -97T106 -79Q127 -79 136 -91T146 -115Q146 -127 141 -138T130 -155T124 -162T125 -163Q133 -166 170 -168Q200 -168 217 -162Q242 -153 264 -130T297 -78Q298 -74 305 -46T320 10T327 38Q326 38 317 31T291 15T256 2Q249 1 231 1Q182 1 143 38T103 163ZM398 324Q398 330 395 346T375 383T332 405Q330 405 326 405T320 404Q291 396 263 365Q230 324 208 239T185 115Q185 38 238 38Q258 38 279 50T312 77T336 106L348 122Q349 125 373 223T398 324",104:"398 44Q398 26 414 26Q431 26 451 43Q477 71 496 136Q499 148 501 150T515 153H521Q531 153 534 153T541 150T544 143Q544 133 534 105T496 41T432 -8Q424 -10 408 -10Q370 -10 348 12T326 72Q326 93 342 135Q397 288 397 349Q397 367 396 372Q386 405 357 405Q283 405 228 310Q217 290 212 274T180 152Q153 42 148 26T135 3Q121 -11 102 -11Q89 -11 80 -3T69 19L216 616Q216 629 209 632T170 637H149Q143 643 143 645T145 664Q150 683 158 683Q163 683 223 688T300 694Q312 694 312 685Q312 674 277 539Q241 395 241 393Q242 394 249 399T259 407T271 415T285 424T300 431T318 437T338 440T362 442Q423 442 449 410T475 338Q475 290 437 178T398 44",105:"234 599Q234 620 251 638T292 656Q306 656 319 647T332 617Q332 594 313 577T273 560Q260 560 247 569T234 599ZM75 287Q75 292 82 313T103 362T142 413T196 441H214Q248 441 270 419T293 357Q292 338 289 330T245 208Q193 72 193 46Q193 26 209 26Q228 26 247 43Q273 71 292 136Q295 148 297 150T311 153H317Q327 153 330 153T337 150T340 143Q340 133 330 105T292 41T228 -8Q220 -10 204 -10Q160 -10 141 15T122 71Q122 98 171 227T221 384Q221 396 218 400T203 405Q175 403 156 374T128 312T116 279Q115 278 97 278H81Q75 284 75 287",106:"266 600Q266 622 283 639T322 656Q340 656 352 645T364 616Q364 596 347 578T305 560Q291 560 279 569T266 600ZM75 287Q75 293 86 316T117 369T168 420T236 442Q282 442 304 415T327 358V332L278 134Q269 98 260 60T246 3T236 -36T227 -66T220 -85T213 -101T204 -114Q181 -150 139 -177T46 -204Q8 -204 -12 -186T-32 -140Q-32 -112 -14 -96T27 -79Q48 -79 57 -91T67 -114Q67 -146 38 -166Q42 -168 49 -168Q75 -168 98 -147T130 -108T146 -71Q150 -59 199 138T250 346Q253 359 253 373Q253 405 230 405Q206 405 184 386T149 345T126 301L117 280Q115 278 98 278H81Q75 284 75 287",107:"158 683Q163 683 223 688T300 694Q312 694 312 686Q312 679 262 478L211 273Q212 272 219 276T248 299T296 349Q317 371 328 382T360 410T399 434T439 442Q462 442 480 427T498 373Q498 329 479 313T437 296Q420 296 409 305T398 331Q398 357 413 372T445 391Q454 392 448 399Q445 405 431 405Q408 405 377 385Q351 368 314 327T250 261Q243 257 243 254Q249 254 279 243T328 220Q366 192 366 146Q366 131 361 109T355 62V54Q355 26 376 26Q379 26 387 28Q420 36 443 130Q449 151 454 152Q457 153 465 153H470Q484 153 488 152T492 144Q492 141 489 126T476 88T454 42T420 5T372 -11Q331 -11 306 17T280 88Q280 100 283 119T287 146Q287 172 265 190T221 215T198 220Q197 220 173 121Q152 37 148 24T135 3Q121 -11 102 -11Q89 -11 80 -3T69 19L216 616Q216 629 209 632T170 637H149Q143 643 143 645T145 664Q150 683 158 683",108:"162 61Q162 26 183 26Q211 26 239 131Q245 151 249 152Q252 153 261 153H266H271Q288 153 288 144Q288 143 286 129Q276 91 266 65T232 14T179 -11Q144 -11 116 12T87 81Q87 96 88 102L216 616Q216 629 209 632T170 637H149Q143 643 143 645T145 664Q150 683 158 683Q163 683 223 688T300 694Q312 694 312 686Q312 676 240 389L164 86Q162 74 162 61",109:"81 278Q75 284 75 289Q77 299 89 338Q101 373 114 396T142 428T166 439T186 442H189Q225 440 251 417Q266 401 271 384L275 374L286 386Q342 442 414 442Q428 442 440 440T461 435T479 427T493 418T503 407T511 397T516 387T520 378T523 370L524 366Q546 395 583 418T667 442Q729 442 755 411T782 338Q782 290 743 178T704 45Q704 26 720 26Q773 26 802 136Q805 148 807 150T822 153H828Q838 153 841 153T848 150T851 143Q851 137 843 115T821 63T778 12T715 -10Q671 -10 652 16T632 71Q632 88 668 191T704 349Q704 367 703 372Q693 405 664 405Q637 405 613 393T571 360T547 329T534 309Q523 290 518 274T487 151Q455 24 452 16Q438 -11 408 -11T376 18Q376 26 411 167T447 314Q449 325 449 346Q449 372 444 384Q431 405 408 405Q334 405 276 305Q266 289 262 273T231 151Q199 24 196 16Q182 -11 152 -11T120 18Q120 26 159 182T200 347Q202 361 202 372Q202 405 181 405Q168 405 159 391Q145 374 132 328T117 280T98 278H81",110:"449 44Q449 26 465 26Q482 26 502 43Q528 71 547 136Q550 148 552 150T566 153H572Q582 153 585 153T592 150T595 143Q595 133 585 105T547 41T483 -8Q475 -10 459 -10Q421 -10 399 12T377 72Q377 93 393 135Q448 288 448 349Q448 367 447 372Q437 405 408 405Q381 405 357 393T315 360T291 329T278 309Q267 290 262 274T231 151Q199 24 196 16Q182 -11 152 -11T120 18Q120 23 159 181Q199 343 199 346Q202 360 202 372Q202 406 183 406Q163 406 148 374Q142 360 135 338T124 299T117 280T98 278H81Q75 284 75 287Q76 293 78 303T90 341T110 388T141 425T184 442Q195 442 204 441T221 436T235 429T247 421T256 412T262 403T267 394T271 387T273 381L274 378V374L287 387Q342 442 414 442Q474 442 500 410T526 338Q526 290 488 178T449 44",111:"103 155Q103 266 185 354T366 442Q435 442 476 394T517 275Q517 169 436 79T255 -11Q194 -11 149 32T103 155ZM187 119Q187 67 209 47T260 26Q290 26 321 47Q354 68 380 113T426 260Q432 291 432 315Q432 361 408 385Q388 405 358 405Q319 405 283 374T227 294Q217 271 202 213T187 119",112:"81 278Q75 284 75 287Q93 379 131 417Q154 442 189 442Q222 440 243 423T272 382L280 390Q335 442 389 442Q446 442 482 398T518 284Q518 212 480 137T375 19Q321 -10 291 -10H282H278Q237 -10 204 28L202 32L181 -51Q160 -135 160 -139Q160 -147 205 -148H230Q236 -155 236 -157T233 -175Q230 -187 227 -190T214 -194Q211 -194 202 -194T169 -193T108 -192Q40 -192 21 -194H13Q6 -187 6 -183T9 -167Q13 -153 16 -151T39 -148Q73 -147 78 -136Q82 -128 139 104Q199 337 199 347Q202 362 202 372Q202 406 182 406Q169 406 159 391Q145 374 132 328T117 280T98 278H81ZM221 111Q234 26 286 26Q307 26 336 47T385 116Q398 147 416 217T435 332Q435 354 433 361Q420 405 383 405Q333 405 279 326L273 317L221 111",113:"228 -11Q172 -11 137 33T101 147Q101 205 125 266T201 377T318 441Q322 442 333 442Q388 442 420 394L429 403Q439 413 455 423T481 437T494 442Q498 442 501 439T504 434Q504 425 435 149Q364 -135 364 -139Q364 -147 409 -148H434Q440 -155 440 -157T437 -175Q433 -191 429 -193Q425 -194 418 -194Q416 -194 406 -194T372 -193T309 -192Q259 -192 233 -192T204 -193Q190 -193 190 -184Q190 -181 192 -169Q196 -153 199 -151T219 -148Q266 -148 277 -141Q283 -137 305 -51L325 29L316 22Q270 -11 228 -11ZM397 323Q397 329 394 340T385 367T365 394T333 405Q302 405 271 372Q249 349 235 316T203 215Q184 135 184 108V100Q184 71 191 56Q204 26 235 26Q267 26 300 57T344 112Q347 117 372 217T397 323",114:"81 278Q75 284 75 289Q77 301 89 339Q122 442 183 442Q219 442 241 425T271 384L283 396Q327 442 384 442Q424 442 454 421T484 362Q484 327 464 312T424 296Q407 296 396 305T385 331Q385 352 394 365T414 384T424 390Q409 405 378 405Q322 405 276 315L268 300L234 161Q200 25 196 16Q182 -11 152 -11T120 18Q120 23 159 181Q199 343 199 346Q202 360 202 372Q202 405 182 405Q164 405 150 377T128 316T117 280Q115 278 98 278H81",115:"153 285Q153 349 197 395T311 442Q355 442 386 420T418 356Q418 321 401 308T365 294Q336 294 331 326Q331 336 334 345T343 359T353 368T362 374L366 376Q365 379 362 383T344 396T308 404Q265 404 246 377T226 325T244 289T287 275T339 258T383 212Q395 188 395 163Q395 132 379 95T333 32Q279 -11 207 -11Q154 -11 115 13T76 86Q76 108 83 123T102 145T121 153T135 156Q154 156 164 145T175 117Q175 82 142 66L132 62Q131 62 131 61Q131 57 139 49T166 34T210 26Q250 26 277 44T312 83T321 123Q321 153 301 166T248 185T204 198Q176 211 162 241Q153 258 153 285",116:"94 385Q87 392 87 395Q87 399 90 411T95 425Q97 430 103 430T149 431H196L215 511Q218 521 222 539T228 565T234 585T242 603T251 615T264 623T281 626Q311 626 315 597Q315 591 296 513T275 433Q275 431 320 431H366Q373 424 373 420Q373 398 360 385H263L189 86Q188 80 188 61V54Q188 29 201 27Q213 23 229 30Q253 37 276 66T316 138Q321 149 324 151T342 153H347Q364 153 364 146T360 130Q331 63 290 26T202 -11Q158 -11 135 18T111 81Q111 93 129 168T166 314L184 383Q184 385 139 385H94",117:"75 287Q75 299 89 333T135 404T205 441Q246 441 269 420T293 357Q292 338 259 245T225 95Q225 26 274 26Q301 26 324 43T358 77T369 99Q369 102 406 249T446 404Q460 431 490 431T522 402Q522 394 485 245T446 89Q443 74 443 56Q443 28 461 26Q487 26 507 86Q524 130 524 146Q524 147 530 153H547Q570 153 570 144Q570 138 561 109T544 62Q530 29 512 12Q492 -11 454 -11Q429 -9 410 2T385 23T376 41L363 28Q350 16 325 3T269 -10Q204 -10 176 25T148 108Q148 161 184 262T221 383Q221 405 206 405Q178 405 158 375T128 313T116 279Q115 278 97 278H81Q75 284 75 287",118:"387 386Q387 407 406 425T445 443Q466 443 479 423T492 371Q492 330 473 253Q411 18 307 -8Q298 -10 279 -10Q208 -10 179 26T149 114Q149 162 185 261T221 384Q221 405 206 405Q177 405 157 375T128 313T116 279Q115 278 97 278H81Q75 284 75 287T79 304T93 342T119 388T158 425T210 441H218Q243 441 268 421T293 357Q292 337 259 245T226 102Q226 26 285 26Q328 26 360 72T422 237Q429 265 429 290Q428 324 408 349T387 386",119:"591 386Q591 407 610 425T649 443Q670 443 683 423T696 371Q696 327 672 232T621 85Q575 -11 493 -11Q469 -11 449 -6T418 8T398 24T386 38L382 43Q347 -10 293 -10H286Q221 -10 186 21T150 115Q150 164 185 262T221 384Q221 405 206 405Q177 405 157 375T128 313T116 279Q115 278 97 278H81Q75 284 75 287T79 304T93 342T119 388T158 425T210 441H218Q243 441 268 421T293 357Q292 336 260 246T227 108Q227 26 292 26H295Q332 26 361 93L366 103V119Q366 122 367 133T369 150Q372 167 401 282T433 404Q446 431 477 431Q507 431 509 402Q509 396 500 358T474 254T446 140Q444 126 444 104V92Q444 66 459 46T502 26H505Q527 28 545 43T577 88T602 149T623 226Q633 265 633 290Q632 324 612 349T591 386",120:"275 356Q275 383 262 394T233 405Q196 405 166 371T121 289Q119 280 116 279T98 278H81Q77 282 76 283T75 288T78 300Q88 332 109 363T153 411Q195 442 235 442Q306 442 333 386Q373 442 427 442Q461 442 487 421T513 364T494 312T453 296Q436 296 425 305T414 331Q414 352 424 366T446 386L456 390Q448 404 421 404H418Q382 404 358 341Q355 332 328 227T298 105Q295 90 295 75Q295 26 339 26Q365 26 388 43T424 82T444 123T451 146L457 153H474Q490 153 493 152T496 144Q496 133 486 110T456 58T404 10T333 -11Q276 -11 237 45Q197 -11 146 -11Q108 -11 83 10T58 67Q58 99 76 117T119 135Q136 135 147 124T158 96Q158 89 157 85Q149 57 125 45L115 41Q125 26 151 26Q171 26 187 45T214 93Q217 102 244 210T273 330Q275 339 275 356",121:"75 287Q75 299 89 333T135 404T205 441Q246 441 269 420T293 357Q292 338 259 245T225 95Q225 26 274 26Q325 26 367 93L405 245Q442 393 446 404Q460 431 490 431T522 402Q522 400 416 -24Q389 -102 327 -153T196 -205Q152 -205 122 -181T91 -119Q91 -84 110 -67T152 -49Q170 -49 180 -60T191 -87Q191 -108 174 -128Q167 -134 157 -138T146 -144Q155 -153 159 -156T173 -163T199 -167Q229 -167 255 -149T297 -105T325 -52T342 -6T347 15Q315 -10 269 -10Q204 -10 176 25T148 108Q148 161 184 262T221 383Q221 405 206 405Q178 405 158 375T128 313T116 279Q115 278 97 278H81Q75 284 75 287",122:"160 317Q158 317 155 317Q136 317 136 324Q136 351 171 396T260 442Q292 442 321 410T365 375H369Q384 375 404 408L425 441Q427 442 444 442H460Q466 436 466 434Q466 419 426 367Q387 314 294 222T178 105L170 95L181 94Q198 93 236 81T295 68Q328 68 356 89T395 141Q398 150 401 151T419 153Q441 153 441 144Q441 110 394 50T282 -11Q251 -11 221 23T171 57Q157 57 143 47T121 26T104 3T95 -10Q93 -11 76 -11H60Q54 -5 54 -2Q54 3 61 14Q103 88 233 215Q349 329 349 338L302 351Q269 362 247 362Q227 362 212 356T192 342T183 327T178 320Q175 317 160 317"},{});var texOldstyleBold$1={},texOldstyleBold={};Object.defineProperty(texOldstyleBold,"__esModule",{value:!0}),texOldstyleBold.texOldstyleBold=void 0,texOldstyleBold.texOldstyleBold={48:[.46,.017,.575],49:[.461,0,.575],50:[.46,0,.575],51:[.461,.211,.575],52:[.469,.194,.575],53:[.461,.211,.575],54:[.66,.017,.575],55:[.476,.211,.575],56:[.661,.017,.575],57:[.461,.21,.575],65:[.751,.049,.921,{ic:.068,sk:.224}],66:[.705,.017,.748,{sk:.16}],67:[.703,.02,.613,{sk:.16}],68:[.686,0,.892,{sk:.0958}],69:[.703,.016,.607,{ic:.02,sk:.128}],70:[.686,.03,.814,{ic:.116,sk:.128}],71:[.703,.113,.682,{sk:.128}],72:[.686,.048,.987,{sk:.128}],73:[.686,0,.642,{ic:.104,sk:.0319}],74:[.686,.114,.779,{ic:.158,sk:.192}],75:[.703,.017,.871,{sk:.0639}],76:[.703,.017,.788,{sk:.16}],77:[.703,.049,1.378,{sk:.16}],78:[.84,.049,.937,{ic:.168,sk:.0958}],79:[.703,.017,.906,{sk:.128}],80:[.686,.067,.81,{ic:.036,sk:.0958}],81:[.703,.146,.939,{sk:.128}],82:[.686,.017,.99,{sk:.0958}],83:[.703,.016,.696,{ic:.025,sk:.16}],84:[.72,.069,.644,{ic:.303,sk:.0319}],85:[.686,.024,.715,{ic:.056,sk:.0958}],86:[.686,.077,.737,{ic:.037,sk:.0319}],87:[.686,.077,1.169,{ic:.037,sk:.0958}],88:[.686,0,.817,{ic:.089,sk:.16}],89:[.686,.164,.759,{ic:.038,sk:.0958}],90:[.686,0,.818,{ic:.035,sk:.16}]},Object.defineProperty(texOldstyleBold$1,"__esModule",{value:!0}),texOldstyleBold$1.texOldstyleBold=void 0;var FontData_js_1$5=FontData,tex_oldstyle_bold_js_1$1=texOldstyleBold;texOldstyleBold$1.texOldstyleBold=(0,FontData_js_1$5.AddPaths)(tex_oldstyle_bold_js_1$1.texOldstyleBold,{48:"259 460H279Q352 460 403 444T491 378Q528 320 528 219Q528 100 475 45Q417 -17 287 -17Q152 -17 99 44T46 219Q46 246 47 265T57 318T82 376T131 422T210 454Q234 460 259 460ZM389 229V271Q389 351 371 380T280 409Q232 409 208 385Q194 371 190 345T185 229V210Q185 108 194 83Q208 35 287 35Q317 35 336 42Q372 55 380 85T389 204V229",49:"119 417Q191 417 240 428T310 450T338 461Q353 461 357 452T361 400Q361 389 361 342T360 254V62H420H456Q483 62 488 58T494 35V29Q494 13 491 7T473 0Q468 0 424 1T295 2T167 1T117 0Q114 0 111 0T107 1Q96 8 96 27V35Q96 54 102 58T140 62H170H229V213Q229 363 228 363Q220 360 196 358T150 356L130 355H93Q84 360 82 365T80 386Q80 404 81 407T95 417H119",50:"214 399Q202 399 191 398T175 395T170 392L171 390Q172 389 174 386T178 379T181 369T182 355Q182 328 165 312T123 296Q99 296 82 312T64 356Q64 397 105 428T253 460Q301 460 337 456T411 441T476 403T514 338Q516 328 516 310V304Q516 257 470 227Q456 217 427 205T376 184L354 176Q350 174 325 162T277 139L254 128Q414 129 428 130H439Q450 148 453 166T460 188T486 193H493Q515 193 517 178Q517 171 502 94T484 11Q481 3 472 2T410 0H269Q65 0 62 2Q55 5 53 10T51 32Q51 54 56 58Q60 62 173 131Q296 207 318 224Q368 264 368 308Q368 342 342 363T283 392T214 399",51:"80 309Q80 367 131 414T276 461Q388 461 441 417T494 313Q494 265 463 223T373 155L361 151L376 147Q436 132 480 92T525 -15T487 -127T393 -192T274 -211Q179 -211 114 -167T48 -53Q48 -18 69 5T128 29Q168 29 188 5T208 -50Q208 -59 207 -67T203 -81T197 -92T190 -101T183 -109T177 -114T170 -118L167 -121Q160 -125 164 -127Q167 -129 176 -133Q215 -152 268 -152H273Q337 -152 356 -92Q364 -69 364 -14Q364 45 352 74T303 120Q287 125 240 125H230Q201 125 196 127T191 146V152Q192 170 196 173T233 178Q234 178 241 178T252 179T262 181T274 183T285 188T297 195T308 205T319 218T328 235T337 257Q345 280 345 320V330Q345 345 343 355T335 379T312 399T270 407Q226 407 177 377Q226 356 226 310Q226 270 204 253T153 235Q123 235 102 253T80 309",52:"180 0Q155 0 124 0T84 -1Q48 -1 40 3T32 27V37Q32 59 34 63T204 265T377 465Q380 468 383 468H387Q391 468 398 468T411 469Q432 469 438 468T449 459Q451 455 451 258V62H489H498Q531 62 536 58T542 31Q542 9 537 5T504 0H489H451V-132H489H498Q530 -132 536 -136T542 -163Q542 -181 538 -187T522 -194Q518 -194 483 -193T378 -192Q281 -192 256 -193L217 -194Q203 -189 203 -169V-163V-158Q203 -140 209 -136T246 -132H265H314V0H180ZM325 62V320L105 63L215 62H325",53:"131 29Q159 26 175 12T194 -13T197 -35V-41Q197 -58 195 -66Q191 -76 185 -84T173 -97T161 -105T152 -109L148 -110Q148 -112 158 -121T195 -141T252 -152Q274 -152 280 -151Q335 -137 349 -104T363 9Q363 85 356 114T322 157Q305 166 286 166Q251 166 223 154T182 131T162 109Q154 98 150 96T130 93Q107 93 102 104Q100 107 100 279V371V424Q100 461 110 461Q114 461 123 458T149 450T183 441Q234 429 286 429Q313 429 340 432T387 440T422 449T447 457T458 461Q472 461 472 435Q472 420 470 418Q464 405 438 379T352 325T226 297Q189 297 171 301H168V182Q169 182 174 185T190 194T213 205T248 213T292 217Q391 217 454 159T517 5Q517 -92 444 -151T255 -211Q167 -211 112 -160T57 -44Q57 -12 76 8T131 29",54:"48 316Q48 398 70 462T124 562T198 621T274 652T339 660Q377 660 384 659Q497 632 497 532Q497 507 482 487T431 466Q397 466 381 486T365 530Q365 569 405 593Q382 603 381 603Q361 607 350 607Q316 607 279 589T221 533Q199 489 196 385L195 370Q196 371 203 379T217 395T237 410T263 424Q283 431 313 431Q409 431 468 368Q526 310 526 208Q526 131 492 81T405 5Q359 -17 289 -17Q256 -17 227 -11T163 17T105 73T65 170T48 316ZM293 380Q244 380 220 331T196 212Q196 104 216 80Q240 41 292 41Q295 41 301 41T309 42Q338 46 355 62Q372 81 375 108T379 230Q378 314 372 333Q358 375 299 380H293",55:"95 210H88Q66 210 64 225Q64 229 82 345T102 465Q106 476 125 476H131Q162 476 162 458Q162 451 213 448Q221 448 238 447T260 446Q261 446 410 444Q436 444 468 444T509 445Q544 445 551 440T558 413V404Q558 395 547 380T478 301L392 202Q354 150 339 81T321 -104V-132Q321 -187 286 -203Q273 -211 255 -211Q236 -211 217 -199T190 -160Q189 -153 189 -130Q194 17 282 156Q309 200 370 270Q404 307 400 307H293Q151 306 146 303Q140 300 132 259T120 215Q115 210 95 210",56:"48 164Q48 199 59 228T92 277T128 307T163 329Q159 332 155 336Q135 346 110 382Q80 427 80 477Q80 564 147 620Q202 660 264 660Q266 660 275 660T290 661Q384 661 439 619T494 506Q494 486 489 468T477 437T459 413T440 395T421 380T406 370L410 368Q414 365 421 361T437 351T456 335T476 316T495 291T511 262T522 228T526 189Q526 93 460 38T282 -17Q242 -17 205 -9T130 19T71 75T48 164ZM406 506Q406 545 379 576T283 607Q218 606 193 585T168 536Q168 522 172 513T195 490T224 471T275 443L346 403Q406 446 406 506ZM291 42Q365 42 395 70T425 134V141Q425 170 401 190T319 242Q308 248 302 251Q286 260 266 271T235 288L225 294Q222 292 217 289T198 274T175 249T157 212T148 163Q148 116 179 79T291 42",57:"175 -140Q198 -152 236 -152Q294 -152 332 -116Q356 -91 366 -54T379 62V78L376 74Q372 70 366 64T352 50T333 35T308 23Q289 17 262 17Q168 17 108 77T48 235Q48 273 59 317Q81 381 141 421T276 461Q279 461 285 461T295 460Q326 460 354 454T415 426T471 371T510 277T526 136Q526 42 501 -28T432 -136T341 -192T240 -210Q199 -210 169 -201T121 -178T94 -146T80 -112T77 -82Q77 -51 95 -33T143 -15Q170 -15 189 -33T209 -81Q209 -116 175 -140ZM377 244V274Q377 300 376 316T368 352T348 384T312 405Q307 406 283 406Q257 406 238 396T213 376T205 361Q196 341 196 259V233V181Q196 122 211 96T278 69H298Q330 82 345 104Q367 134 376 190Q377 200 377 244",65:"761 751Q784 751 784 728V711Q784 570 795 417T820 191Q844 76 865 76Q868 76 902 93T962 112H973Q989 104 989 94Q989 92 987 86Q978 47 846 -11Q812 -25 779 -26Q722 -26 708 9Q688 47 669 161H524L379 162L359 136Q286 43 234 -3T142 -49T71 -19T39 55Q39 92 60 131T103 174Q113 174 117 167T124 149T136 128T166 110Q183 105 190 105Q230 105 341 246Q401 322 453 397T531 514T582 601T611 651H640V663Q640 692 676 718T745 750Q747 750 752 750T761 751ZM658 266Q653 312 649 377T644 489T641 541V556L557 415Q500 325 448 253Q467 261 524 261H568H658V266",66:"441 83Q571 83 571 195Q571 246 538 279T466 322T386 333Q378 333 357 330T329 327Q307 327 307 345Q307 354 313 365T347 396T419 430Q546 472 581 498Q594 508 594 535Q594 574 567 589T508 604Q469 604 442 583Q390 546 342 457T265 256Q237 148 186 60Q167 29 144 13Q105 -15 68 -17H65Q40 -17 40 1Q40 7 53 29T87 100T124 210Q162 373 190 575Q188 575 174 567T138 550T98 542Q75 542 75 560Q75 588 123 618Q135 625 203 659T281 696Q299 703 316 703Q339 703 339 685Q339 656 328 583L333 588Q338 592 346 599T367 615T394 634T428 654T467 674T511 690T559 701T611 705Q651 704 681 689Q739 659 739 598Q739 507 595 427L584 421Q585 420 595 416T610 410T626 402T644 392T660 380T677 365T691 347T703 325T710 299T715 268Q717 193 665 130Q622 73 531 28T348 -17Q275 -17 225 10Q206 19 200 24T193 36Q193 57 231 86T311 119H322Q386 83 441 83",67:"243 -20Q135 -20 78 48T20 218Q20 280 39 344T98 470T193 580T324 661T488 702H490Q491 702 493 702T498 703T507 703T518 702H526Q599 702 599 631Q599 597 577 550T541 486Q523 463 490 447T431 430Q423 430 419 433Q409 437 409 450Q410 456 432 499T454 567Q454 586 446 594T415 603Q316 603 254 532Q216 487 190 421T164 284Q164 228 181 186T226 122T282 90T340 80Q377 80 405 96T449 131T492 167T553 187H555Q580 187 580 168Q580 153 551 123T476 60T367 4T243 -20",68:"107 0Q92 5 92 18Q92 33 113 53T160 86Q170 91 182 94T197 100L206 120Q248 226 273 337T304 501T309 585Q278 585 234 577T179 557Q172 550 166 532T156 509Q140 484 105 466T44 447Q20 447 20 465Q20 482 34 510T76 565Q122 608 173 632Q281 686 447 686H480H517Q692 686 784 631Q885 571 885 450Q885 339 805 239T586 75T286 1Q276 0 187 0H107ZM741 391Q741 424 731 452T694 510T613 558T481 584Q476 584 468 584T457 585L449 586V579Q441 501 425 424T391 292T357 193T330 125T319 100H324Q511 100 628 175Q688 215 714 275T741 391",69:"495 516Q485 516 478 520T470 532Q470 537 476 550T482 570Q482 589 465 596T401 603Q344 603 319 582Q295 558 295 519Q295 493 312 474T355 445T407 432T455 427Q477 427 477 409Q477 395 453 371T389 333Q380 330 345 327T279 312T223 272Q181 223 181 176Q181 131 225 107T324 83Q366 83 395 98T448 136T487 167Q517 185 547 187H551Q574 187 574 170Q574 151 535 113T421 36T271 -15Q260 -16 226 -16Q181 -16 152 -9Q104 4 71 33T37 111Q37 140 50 176T106 263T216 356Q215 357 207 362T190 374T172 392T156 419T150 456Q150 521 208 580T341 670T474 702Q475 703 499 703Q528 703 547 701T586 693T615 673T627 637Q627 584 581 550T495 516",70:"812 567Q804 567 795 570T786 579Q786 586 647 586H559L558 582Q558 575 539 510T506 407L498 384H775Q788 378 790 368Q790 328 746 298T665 268Q646 268 642 284H457L447 261Q396 150 360 94Q329 46 270 8T149 -30Q123 -30 100 -24T63 -10T37 9T22 26T17 36Q17 59 56 88T135 119Q145 119 149 117T165 104Q187 78 227 72Q232 72 234 76Q245 93 273 145T350 323T424 570L428 586H276Q265 575 239 563T190 551Q180 551 174 556T167 569Q167 580 179 597T213 634T278 668T371 685Q374 686 624 686Q863 685 888 682Q917 678 927 663Q930 658 930 650Q930 624 888 596T812 567",71:"50 279Q50 361 88 438T190 570T335 661T503 702H514Q524 703 532 703Q671 703 671 626Q671 580 614 514T495 447Q472 447 472 465Q472 477 499 511T527 562Q527 582 507 592T433 602Q351 602 302 569Q252 535 223 469T194 344Q194 266 237 217T352 168Q401 168 442 205T505 316Q515 345 551 368T622 393H625Q649 393 649 376Q649 371 635 318T612 237Q580 129 540 62T442 -49Q353 -114 264 -114Q259 -114 252 -114L246 -113Q190 -113 142 -107T81 -96Q71 -90 71 -81Q71 -57 110 -30T187 2Q196 2 236 -4T338 -14Q371 -14 377 -9Q410 24 446 113L451 127Q353 68 253 68Q157 68 104 129T50 279",72:"42 447Q20 447 20 465Q20 481 47 515T119 589T239 657T392 686Q443 686 463 664T484 616Q484 570 473 506T452 401L441 360Q441 359 550 359H660L663 370Q684 435 716 522T758 624Q771 646 806 666T870 686Q894 686 894 668Q894 667 867 597T804 416T752 218Q737 135 737 93Q737 77 746 65T778 53Q799 53 803 54T814 63Q831 86 864 103T924 120Q946 120 946 100Q945 85 931 63T888 16T806 -27T684 -48H681Q625 -48 603 -10Q593 4 593 29Q593 71 603 131T624 230L634 269Q632 269 624 266Q610 261 600 261T507 259H411L399 222Q344 62 322 21Q301 -7 268 -24T209 -41H207Q187 -41 185 -25Q185 -17 192 2T220 71T261 184Q284 256 284 258Q284 259 227 259H170Q169 259 166 261T162 264T158 266T156 271T155 277Q155 296 184 320T250 356Q259 358 286 359Q312 359 312 360Q314 372 318 385Q332 450 339 526Q339 530 339 535T340 543Q340 586 296 586Q255 586 227 576T188 553T165 523T146 497Q127 476 97 462T42 447",73:"56 499Q32 499 32 516Q32 540 64 580T165 649Q241 682 365 685Q366 685 376 685T405 685T445 686T496 686T553 686H732Q746 677 746 668Q746 646 711 620T642 587L572 586H503Q479 546 458 479T424 352T383 224T318 111L309 101L412 100H514L523 109Q567 150 618 153Q644 153 644 135Q644 132 642 124Q629 86 581 52T476 6Q454 2 433 2T216 0Q-11 0 -15 2Q-27 6 -27 18Q-27 37 2 61T59 93Q77 100 142 100H198Q255 177 299 369Q337 513 382 574L391 586H348Q261 586 176 576Q163 543 124 521T56 499",74:"286 390Q263 390 263 407Q263 432 293 481T367 566Q511 687 724 687Q738 687 761 687T793 686H923Q937 677 937 668Q937 648 905 623T842 589Q829 587 817 586T802 585T795 583T788 578Q709 506 632 189Q622 153 615 134T588 81T537 17Q482 -39 404 -76T247 -114Q192 -114 158 -100Q53 -61 53 32Q53 59 58 73T79 102Q126 147 177 147Q200 147 200 128Q200 123 198 112T196 96Q196 47 238 17T345 -13Q362 -13 377 -9T404 0T426 16T444 34T459 55T470 76T478 97T483 116T488 132L490 141Q511 222 520 257T554 364T608 486T675 576L685 586H634H612Q532 586 484 564Q453 549 436 526T409 478T395 447Q378 424 345 407T286 390",75:"98 542Q75 542 75 560Q75 588 123 618Q132 624 199 657T275 694Q291 703 315 703Q327 703 332 699T338 690T339 670Q339 596 323 505T283 337T237 194T198 90L181 53Q170 31 136 8T68 -17H65Q40 -17 40 0L76 92Q112 185 150 322T194 564V578L168 565Q125 542 98 542ZM834 142Q834 125 819 100T774 48T692 3T576 -16H560Q540 -16 508 6Q469 33 422 108T342 267T309 398Q309 411 310 417T320 442T347 482Q401 542 517 615T710 702Q712 702 721 702T735 703Q772 703 791 690Q819 674 819 646T792 597T733 574H722Q704 584 704 599Q706 607 700 610T672 617L660 613Q609 595 524 538T423 450V440Q423 376 488 247T604 83Q621 70 640 70Q677 70 701 82Q713 87 718 101T737 132T783 160Q792 163 807 163Q834 163 834 142",76:"63 -17Q41 -17 41 0Q41 22 85 54Q101 68 113 92T133 141T154 219T182 315Q230 462 306 553Q345 599 391 632T478 678T543 697T582 703Q584 703 589 703T598 702Q643 702 666 676T689 613Q689 588 683 575Q674 551 632 524T552 496Q530 496 530 512Q530 517 531 525T533 538Q533 559 522 577T480 596H476Q462 596 451 588T415 544Q350 447 310 281Q284 181 261 136L255 124H285Q342 123 441 107T583 90L596 89Q603 116 647 144T729 173Q751 173 751 157Q751 118 685 60T523 -15Q514 -16 479 -16Q421 -16 320 0T171 18H155L142 10Q98 -17 63 -17",77:"38 20Q38 59 60 99T104 139Q106 139 126 125T176 106H181Q200 106 221 139T286 281Q322 370 342 451T368 581T376 634Q384 657 420 680T487 703Q502 703 507 696T522 649Q538 589 554 537Q579 453 609 372T660 248T686 202Q687 201 739 244T830 322L1166 642Q1225 700 1230 701Q1230 701 1237 703Q1258 703 1258 667L1253 637Q1248 607 1241 558T1227 451T1214 326T1209 202Q1209 77 1232 77Q1237 77 1269 94T1326 112H1329Q1353 112 1353 94Q1353 81 1334 60Q1311 37 1248 7T1150 -24H1141H1135Q1085 -24 1074 26Q1064 75 1064 134Q1064 239 1086 426Q1087 430 1087 434L1061 410Q871 227 783 149L694 76Q653 44 647 40T631 34Q620 34 616 37T594 63Q546 125 514 198Q467 307 423 449L418 466L412 444Q376 310 306 153Q278 88 251 45T201 -18T163 -43T131 -49Q102 -48 70 -31T38 20",78:"47 139Q81 105 122 105Q137 105 147 117Q159 134 182 199T234 381T274 610Q275 634 284 647Q297 666 327 684T389 703Q403 703 408 695T428 645Q480 490 567 298Q628 163 673 103Q674 102 674 102T675 106Q732 331 803 551Q842 674 875 725Q908 775 966 807T1081 840H1084Q1105 840 1105 803Q1105 768 1088 733T1051 689Q1045 686 1032 686Q986 683 948 663T901 624Q881 579 837 430T760 154L726 28Q725 28 725 28T723 25Q716 0 682 -24T611 -48Q600 -48 595 -45T576 -23Q522 44 480 124Q417 243 332 463L328 473L325 457Q291 293 227 124Q159 -49 72 -49Q38 -49 5 -28Q-24 -8 -24 21Q-24 58 -3 98T41 139H47",79:"433 703Q456 703 456 685Q456 672 441 655T407 627Q402 623 378 611T328 579T276 524Q207 434 207 324Q207 222 270 153T441 84Q566 84 651 177T737 400V405Q737 496 693 549T576 603Q542 603 510 560Q490 537 472 502T442 454Q397 412 346 409Q320 409 320 427Q320 430 322 436Q331 465 360 507T433 594T542 671T677 703Q776 703 829 636T882 468Q882 369 831 277T702 122T528 21T343 -17Q214 -17 139 61T63 257Q63 336 94 409T173 534T272 625T367 684T432 703H433",80:"170 -67Q147 -67 147 -49Q147 -42 162 -8T204 99T253 254Q274 332 288 415T305 542L308 585Q277 585 234 577T179 557Q172 550 166 532T156 509Q140 484 105 466T44 447Q20 447 20 465Q20 482 34 510T76 565Q122 608 173 632Q279 686 448 686H495H537Q622 686 678 677T784 637Q846 598 846 533Q846 452 776 375T597 252T378 206H366L358 181Q341 130 316 68T282 -7Q262 -33 230 -50T170 -67ZM701 468Q701 512 661 540T570 577T461 586H448V582Q446 576 443 545T428 447T395 301L389 280Q390 280 398 284T419 295T441 303Q443 304 484 306T572 321T651 359Q701 402 701 468",81:"874 453Q874 372 836 298T750 177T638 89T543 33T486 8L483 7Q485 5 523 -7T622 -32T726 -46Q741 -46 746 -45T755 -41T762 -27Q770 -1 806 23T878 50H890Q905 42 905 33Q905 -8 838 -68T670 -145Q662 -146 628 -146Q538 -146 389 -100T164 -50Q132 -50 132 -32T162 11T227 47Q231 48 286 51T394 62T518 100T641 180Q730 271 730 387Q730 478 673 540T520 602Q410 602 337 525T264 355Q264 284 310 244T420 203Q476 203 568 222Q594 222 594 204Q594 184 565 161T508 128Q433 103 316 103Q227 103 174 157T120 290Q120 382 182 471T343 620T548 697Q578 703 601 703Q604 703 611 703T623 702Q663 702 687 696Q760 679 817 618T874 453",82:"159 0Q159 5 172 34T205 114T245 229T284 386T309 575V585H304Q303 585 295 585T282 584Q233 579 207 570T175 553T165 531T156 509Q140 484 105 466T44 447Q20 447 20 465Q20 482 34 510T76 565Q122 608 173 632Q279 686 448 686H505H582Q683 686 745 672T834 611Q842 594 842 565Q842 523 824 484T780 419T722 370T669 336T632 318L619 312L626 302Q640 279 667 227T696 172Q717 133 735 112T762 88T784 84Q824 84 872 118T957 153Q981 153 981 136Q981 114 937 78T820 13T684 -17Q646 -17 616 8T569 66T526 151T477 234Q461 256 446 265Q437 272 421 274Q400 274 400 291Q400 311 430 336T495 371Q496 371 543 374T627 392T681 436Q699 467 699 503Q699 550 644 568T471 586H449V582Q449 581 447 559T438 499T422 413T393 298T348 165Q313 73 296 45Q282 24 249 4T185 -17Q159 -17 159 0",83:"204 476Q204 525 248 577T372 666T539 703T674 683T721 612Q721 588 714 569Q704 547 669 524T601 499Q573 499 573 516Q573 521 575 527T577 543Q577 563 568 574T548 588L539 590Q490 603 444 603Q418 603 394 597T364 583Q348 567 348 533Q348 493 382 466T459 425T555 387T633 330Q662 292 662 249Q662 153 544 69T257 -16Q218 -16 208 -15Q118 1 64 46Q25 76 25 126Q25 185 82 235T203 290H207Q229 290 231 274Q231 243 180 213Q173 209 172 206T170 189T171 170T183 150T216 121Q273 83 356 83Q412 83 459 100Q493 111 507 141Q518 165 518 185Q518 208 506 228T478 262T437 288T398 306T360 320Q316 335 285 352T239 384T215 416T205 443T204 467V476",84:"61 462H59Q38 462 38 479Q38 528 109 594T289 683L304 685L837 687L846 693Q889 720 923 720Q947 720 947 702Q945 671 892 631T776 583Q774 583 772 583T769 582T766 582L764 581H758Q753 581 744 581T722 580T693 580T662 580H563L514 385Q507 355 493 299T475 225T460 172T443 119T426 76T402 24Q386 -11 355 -33T304 -61T266 -69Q242 -69 242 -50Q243 -45 253 -25T278 32T307 115L364 340Q405 511 413 538T436 580H207Q202 572 200 568T197 561T195 552T190 537Q176 511 135 487T61 462",85:"124 586Q107 586 74 569T15 552H13Q-10 552 -10 570Q-10 605 70 645T222 686Q283 686 283 631Q283 590 246 504T172 326T135 181Q135 130 157 107T205 83Q221 83 259 106Q347 165 453 301T604 548Q607 557 612 569T619 587T624 600T628 612T632 621T637 628T641 634T647 640T654 645T662 652Q706 686 748 686Q771 686 771 669Q771 656 754 614T700 467T630 229Q615 168 610 105Q610 88 617 78L641 90Q681 111 706 112Q733 112 733 95Q733 82 714 60Q694 40 633 10Q567 -23 532 -24Q507 -24 495 -17Q466 -4 466 32Q466 96 500 225Q277 -17 102 -17Q56 -17 23 17T-10 118Q-10 164 13 234T64 363T115 481T139 567Q139 586 124 586",86:"25 608Q25 628 60 657T148 686Q184 683 213 671T273 625T327 538T363 394T380 184L381 134L399 148Q503 226 574 302T667 415T689 467Q688 474 684 482T672 502T645 521T600 532Q576 532 576 567Q576 604 597 644T641 685H649Q701 685 737 648T774 545Q774 457 703 333T461 66Q397 13 332 -32T255 -77Q237 -77 237 -30V-23Q241 20 241 109Q241 483 115 569Q91 586 50 589Q25 589 25 608",87:"25 607Q25 629 62 657T142 686Q205 686 248 647T312 541T339 411T347 275Q347 249 345 203V189Q375 219 449 316T587 516Q629 584 629 587Q629 589 626 597T622 607Q622 629 658 656T732 686H744Q755 680 757 678Q757 677 769 649T799 577T835 475T874 339T904 183Q908 157 910 151L925 169Q997 252 1059 343T1121 474Q1120 498 1103 513T1059 532Q1036 532 1036 568Q1036 600 1053 636T1090 683L1097 686H1109Q1147 684 1176 652T1206 551Q1206 460 1131 320T897 7Q859 -33 840 -52T816 -74T804 -77Q788 -77 784 -32Q783 -28 783 -26Q774 108 744 239T691 436T665 501Q664 501 649 475T602 400T528 289T420 146T280 -15Q243 -56 231 -66T210 -77Q191 -77 191 -40Q191 -38 195 -4T204 91T209 217Q209 290 202 351T177 469T126 557T45 589Q25 589 25 607",88:"762 562Q762 579 737 584T711 604Q711 630 753 658T834 686Q864 686 885 669T906 627Q906 580 834 522T614 379L584 362V357Q585 354 589 315T597 233T603 183Q610 132 627 116T671 100Q678 100 704 113T754 126T778 107Q776 79 733 45T626 2Q615 1 578 1Q542 1 535 3Q521 7 510 15T491 31T477 54T467 78T460 108T456 137T452 170T449 201Q447 220 445 240T442 270L441 281Q435 281 357 233Q240 165 206 135Q200 128 200 124Q200 113 208 108T226 101T244 96T252 82Q252 61 214 31T129 1H120Q97 1 77 16T56 60Q56 105 133 168T414 345Q428 352 431 354T433 359Q422 493 414 522Q407 551 395 566T373 583T350 586H341L332 580Q290 560 265 560Q243 560 243 577Q243 585 248 596T269 624T306 653T365 676T447 686H456Q472 686 484 683T514 671T543 637T562 576Q565 557 570 501L577 437Q577 436 613 457T694 506T756 551Q762 558 762 562",89:"73 555Q49 555 49 573Q49 602 110 644T239 686Q319 686 376 624Q416 584 444 511T483 361T499 240T503 173Q503 165 504 165Q506 165 524 184T556 218Q631 297 674 377T718 485Q718 505 699 526Q673 552 628 552Q619 552 613 562T607 590Q607 617 621 645T658 685Q661 686 671 686Q718 686 757 652T797 545Q797 476 749 369T602 146Q500 29 371 -67T176 -164Q112 -164 74 -120T36 -29Q36 5 55 36T95 67Q104 67 108 59T115 39T128 12T154 -12Q183 -30 216 -30Q239 -30 305 7L361 44L367 49V54Q367 95 364 143T351 273T312 429T243 546Q206 581 156 588L146 581Q108 555 73 555",90:"622 574Q522 579 420 579H396Q373 579 364 574T351 550Q339 516 297 490T218 462Q195 462 195 479Q195 487 197 492Q218 565 313 625T509 685Q564 685 650 683T755 680Q787 680 807 683T831 686Q853 686 853 669Q853 657 826 626Q742 532 641 437L619 415L622 414Q626 414 631 414T642 414Q697 411 697 388Q697 367 670 345T607 323Q605 323 592 325T546 329H522L490 302Q457 274 400 226T289 136L260 113L318 112Q345 111 452 109T587 106H627Q650 143 656 170Q666 197 710 225T788 253Q811 253 811 237Q811 211 781 160T710 77Q619 0 515 0Q507 0 497 0T484 1Q434 1 319 3T177 6Q123 6 95 2Q83 2 71 0H68Q46 0 46 17Q46 28 58 44Q68 56 100 80T210 165T383 307L408 329H361L314 330Q297 338 297 350Q297 368 320 388T368 413Q375 415 441 415H506L647 555L664 574H622"},{});var texOldstyle$1={},texOldstyle={};Object.defineProperty(texOldstyle,"__esModule",{value:!0}),texOldstyle.texOldstyle=void 0,texOldstyle.texOldstyle={48:[.452,.022,.5],49:[.453,0,.5],50:[.453,0,.5],51:[.452,.216,.5],52:[.464,.194,.5],53:[.453,.216,.5],54:[.665,.022,.5],55:[.463,.216,.5],56:[.666,.021,.5],57:[.453,.216,.5],65:[.728,.05,.798,{ic:.021,sk:.194}],66:[.705,.022,.657,{sk:.139}],67:[.705,.025,.527,{sk:.139}],68:[.683,0,.771,{sk:.0833}],69:[.705,.022,.528,{ic:.036,sk:.111}],70:[.683,.032,.719,{ic:.11,sk:.111}],71:[.704,.119,.595,{sk:.111}],72:[.683,.048,.845,{sk:.111}],73:[.683,0,.545,{ic:.097,sk:.0278}],74:[.683,.119,.678,{ic:.161,sk:.167}],75:[.705,.022,.762,{sk:.0556}],76:[.705,.022,.69,{sk:.139}],77:[.705,.05,1.201,{sk:.139}],78:[.789,.05,.82,{ic:.159,sk:.0833}],79:[.705,.022,.796,{sk:.111}],80:[.683,.057,.696,{ic:.037,sk:.0833}],81:[.705,.131,.817,{sk:.111}],82:[.682,.022,.848,{sk:.0833}],83:[.705,.022,.606,{ic:.036,sk:.139}],84:[.717,.068,.545,{ic:.288,sk:.0278}],85:[.683,.028,.626,{ic:.061,sk:.0833}],86:[.683,.052,.613,{ic:.045,sk:.0278}],87:[.683,.053,.988,{ic:.046,sk:.0833}],88:[.683,0,.713,{ic:.094,sk:.139}],89:[.683,.143,.668,{ic:.046,sk:.0833}],90:[.683,0,.725,{ic:.042,sk:.139}]},Object.defineProperty(texOldstyle$1,"__esModule",{value:!0}),texOldstyle$1.texOldstyle=void 0;var FontData_js_1$4=FontData,tex_oldstyle_js_1$1=texOldstyle;texOldstyle$1.texOldstyle=(0,FontData_js_1$4.AddPaths)(tex_oldstyle_js_1$1.texOldstyle,{48:"39 213Q39 274 53 319T89 389T139 429T192 448T242 452Q347 452 400 400Q460 335 460 213Q460 -22 250 -22Q39 -22 39 213ZM364 242Q364 279 363 301T355 348T338 385T306 406T254 415Q250 415 245 415T238 416Q217 416 190 404T150 368Q136 339 136 221Q136 114 146 78T200 23Q219 16 250 16Q280 16 299 23Q341 41 352 77T364 221V242",49:"116 410Q176 412 215 423T269 443T288 453H291Q293 453 301 447V254Q301 62 303 60Q307 52 322 49T394 46Q418 46 422 43T426 23Q426 8 424 4T411 0Q407 0 369 1T258 2T148 1T106 0Q96 0 94 4T91 23Q91 40 95 43T123 46Q180 46 195 49T215 61Q216 63 216 220V376Q192 367 119 364H93L86 371V403L92 410H116",50:"55 334Q55 386 105 419T236 453Q333 453 390 413T448 307Q448 278 437 256T406 218T365 193T318 172T277 151L248 134Q219 118 191 102T163 84T267 83L382 85H391Q399 99 406 126Q410 143 413 145T429 148Q440 148 442 147T449 139Q449 137 435 73T420 7Q420 6 414 0H233Q94 0 71 0T46 5Q46 5 46 6Q44 8 44 24Q44 39 46 41Q47 44 98 78T212 155T294 212Q347 257 347 304Q347 354 306 380T203 407Q150 407 120 377Q118 375 123 373Q146 362 146 332Q146 315 133 302T101 288Q85 288 70 298T55 334",51:"69 312Q69 377 122 414T233 452Q333 452 381 409T430 313Q430 268 402 223T311 149L301 144Q307 143 317 140T355 123T402 92T439 44T456 -25Q456 -101 396 -158T241 -216Q154 -216 98 -173T42 -68Q42 -58 44 -50T50 -35T57 -25T66 -17T75 -13T82 -10L87 -8Q92 -7 102 -7Q132 -7 147 -25T162 -66Q162 -112 118 -125L113 -126Q113 -129 127 -140T173 -162T239 -173Q268 -173 292 -158Q345 -124 345 -24Q345 33 329 67Q298 125 229 125H210H172Q166 131 166 142Q166 159 172 161Q178 161 208 164T244 169Q251 169 263 176T291 199T316 245T327 314Q327 413 238 413Q182 413 130 369Q177 350 181 312Q181 289 166 273T125 257Q102 257 86 272T69 312",52:"163 0Q139 0 109 0T71 -1Q43 -1 36 2T28 15V27V46L190 270Q325 457 330 462Q333 464 352 464H371L377 458V46H464L471 40V6L464 0H377V-65V-108Q377 -131 379 -137T391 -144Q409 -148 446 -148H464Q468 -151 471 -155V-187L464 -194H453Q395 -192 325 -192Q222 -192 210 -194H199L193 -188V-154L199 -148H228Q241 -148 250 -148T265 -146T275 -145T281 -143T284 -141T286 -138T289 -134V0H163ZM295 46V350L75 46H295",53:"159 -44Q159 -66 145 -80T109 -96H102L107 -105Q148 -173 228 -173Q255 -173 280 -162Q351 -128 351 -6V8Q351 67 344 98T316 151Q288 176 255 176Q175 176 136 109Q129 100 114 100Q97 100 95 106Q93 110 93 277V403Q93 451 98 451Q100 452 103 452Q105 452 124 445T177 431T251 423Q294 423 328 430T380 445T401 453Q410 453 410 435V422Q332 331 203 331Q152 331 140 339Q139 339 139 254V168Q194 214 256 214Q332 214 390 154T448 0Q448 -95 381 -155T229 -216Q153 -216 104 -166T50 -49Q50 -15 66 -1T105 13Q128 13 143 -3T159 -44",54:"42 313Q42 401 68 472T133 583T215 644T296 665H304Q317 665 329 664T360 657T393 640T418 608T432 557Q432 533 422 519T401 502T380 498Q358 498 343 512T328 550Q328 591 367 601L372 602Q372 604 365 609T341 620T307 626Q260 626 226 600T174 537Q147 483 143 376V356Q192 434 266 434Q317 434 357 409Q406 375 435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM251 396Q211 396 178 354T145 217Q145 159 152 122T166 73T187 47Q216 21 252 21Q294 21 321 47Q342 68 349 99T356 203V232Q356 264 354 285T345 331T322 373T280 395Q274 396 251 396",55:"75 246Q64 246 62 247T55 255Q55 259 72 357T90 458L94 462H99Q104 463 109 463H121Q128 460 128 452Q128 445 134 441T165 435T233 432T356 431H478L485 425V392L414 298Q408 290 385 260T358 223T337 191T317 154T302 116T289 68T282 14T275 -55T274 -137Q274 -173 272 -177Q262 -216 223 -216Q170 -216 170 -157V-148Q172 -78 189 -12T237 109T288 196T338 266Q345 275 348 279Q395 340 395 342Q396 343 376 343T274 343Q122 342 117 339T103 294T90 248Q88 246 75 246",56:"69 496Q69 570 124 618T247 666Q321 666 375 624T429 515Q429 468 405 433T320 361L346 344Q385 320 403 301T439 250Q456 212 456 181V172V160Q456 141 449 119T426 71T386 26T326 -8T246 -21Q160 -21 102 30T43 155Q43 265 167 332L176 337L161 347Q105 384 87 423Q69 458 69 496ZM371 513Q371 567 334 596T249 626Q198 626 163 598T127 532Q127 521 129 511T138 492T150 476T167 460T185 447T207 433T228 420L284 384L294 391Q346 424 363 469Q371 486 371 513ZM190 21T250 21T351 56T393 140Q393 180 362 213Q354 221 317 246T246 292L212 313Q210 313 200 307T173 287T142 256T117 212T106 157Q106 100 148 61",57:"171 -101Q171 -118 163 -130T146 -146T134 -151Q132 -151 132 -152Q132 -154 140 -159T167 -168T206 -173Q274 -173 317 -108Q356 -50 356 79V86L350 77Q308 9 231 9Q150 9 92 81Q42 141 42 228Q42 289 64 333Q93 390 142 421T235 452Q237 452 244 452T255 453Q289 453 321 439T386 391T437 290T457 128Q457 -29 381 -122T206 -216Q148 -216 108 -187T67 -104Q67 -75 84 -62T119 -49Q141 -49 156 -63T171 -101ZM242 46Q293 46 324 94T355 223Q355 323 337 356Q316 401 275 410Q267 412 248 412Q206 412 179 386Q155 360 149 328T143 224Q143 120 163 88Q192 46 242 46",65:"576 668Q576 688 606 708T660 728Q676 728 675 712V571Q675 409 688 252Q696 122 720 57Q722 53 723 50T728 46T732 43T737 41T743 39L754 45Q788 61 803 61Q819 61 819 47Q818 43 814 35Q799 15 755 -7T675 -30Q659 -30 648 -25T630 -8T621 11T614 34Q603 77 599 106T594 146T591 160V163H460L329 164L316 145Q241 35 196 -7T119 -50T59 -24T30 43Q30 75 46 100T74 125Q81 125 83 120T88 104T96 84Q118 57 151 57Q189 57 277 182Q432 400 542 625L559 659H567Q574 659 575 660T576 668ZM584 249Q579 333 577 386T575 473T574 520V581L563 560Q497 426 412 290L372 228L370 224H371L383 228L393 232H586L584 249",66:"304 342Q292 342 292 353Q292 372 323 391Q331 396 417 428T533 487Q563 512 563 555V562Q563 575 557 589T530 618T475 636Q429 636 396 613T330 539Q263 446 210 238Q196 183 173 120Q135 31 121 16Q108 1 85 -10T47 -22T32 -10Q32 -5 44 18T77 93T112 206Q135 296 154 395T182 550T191 615Q191 616 190 616Q188 616 179 611T157 601T131 594Q113 594 113 605Q113 623 144 644Q154 650 205 676T267 703Q277 705 279 705Q295 705 295 693Q295 686 288 635T278 575Q278 572 287 582Q336 635 402 669T540 704Q603 704 633 673T664 599Q664 559 638 523T580 462Q553 440 504 413L491 407L504 402Q566 381 596 338T627 244Q627 172 575 110T444 13T284 -22Q208 -22 158 28Q144 42 146 50Q150 67 178 85T230 103Q236 103 246 95T267 75T302 56T357 47Q436 47 486 93Q526 136 526 198V210Q526 228 518 249T491 292T436 330T350 345Q335 345 321 344T304 342",67:"201 -25Q167 -25 136 -14T75 23T29 94T12 202Q12 290 50 394T161 574Q227 642 303 673T433 704Q435 705 457 705Q533 701 533 640Q533 606 507 548T464 474Q431 444 396 444Q381 444 381 453Q381 459 388 473T407 513T428 563Q433 580 433 594Q433 636 381 636Q314 636 260 594T175 489T128 363T112 247Q112 157 153 101T273 44Q347 44 398 121Q413 144 437 157T481 171Q496 171 496 160Q496 150 476 123Q426 56 350 16T201 -25",68:"37 475Q19 475 19 487Q19 536 103 604T327 682H356Q386 683 408 683H419Q475 683 506 681T582 668T667 633Q766 571 766 450Q766 365 723 287T611 152T455 57T279 6Q248 1 160 0Q148 0 131 0T108 -1Q72 -1 72 11Q72 24 90 40T133 64L144 68L152 88Q247 328 272 587Q275 613 272 613Q272 613 269 613Q225 610 195 602T149 579T129 556T119 532Q118 530 116 525T113 518Q102 502 80 490T37 475ZM665 407Q665 596 412 613Q403 614 383 614Q370 614 370 612Q370 598 363 542T323 357T242 103L228 69H265Q391 73 481 119Q536 148 575 188T633 268T658 338T665 392V407",69:"144 470Q144 556 240 630T451 705Q564 705 564 637Q564 611 540 573Q529 559 505 547T464 534Q448 534 448 545Q448 552 455 562Q463 577 463 591Q463 600 462 604T456 616T436 627T400 635Q396 635 390 635T380 636Q291 636 258 568Q245 544 245 516Q245 463 290 438T391 410Q415 410 415 398Q415 392 407 380T376 356T326 341Q288 340 260 327Q218 311 187 276T143 208T130 151Q130 113 156 88T211 55T268 47Q349 47 403 125Q415 144 439 157T483 171Q499 171 499 160Q499 148 475 120T413 59T315 3T197 -22Q124 -22 77 14T30 105Q30 126 39 154T66 216T122 288T209 354L223 362Q144 400 144 470",70:"199 579Q181 579 181 590Q181 598 188 611T212 639T260 666T335 682Q336 682 349 682T383 682T431 682T493 683T561 683Q776 682 784 681Q826 673 829 647Q829 620 797 600T744 580Q728 580 728 595Q729 607 713 610Q698 613 598 614H500L499 610Q499 598 467 486T428 367Q428 365 551 365H674Q683 360 684 355Q687 346 677 329Q666 312 642 299T598 285Q586 285 582 296H402L394 277Q386 258 373 229T346 167T315 102T286 51Q265 22 225 -5T133 -32Q108 -32 87 -25T54 -7T33 15T21 35T18 47Q18 60 44 80T98 103Q108 103 111 101T119 88Q130 66 150 54T179 39T195 37Q199 37 203 43Q217 67 245 125T318 300T391 532Q393 543 398 564T406 598T409 613T339 614H269Q229 579 199 579",71:"216 68Q155 68 115 100T59 177T44 273Q44 299 50 333T73 421T133 533T239 632Q346 704 466 704Q508 704 515 703Q555 696 577 681T599 635Q599 605 570 560T523 496Q490 466 455 466Q440 466 440 475T469 526T499 589Q499 605 489 617Q460 636 403 636Q343 636 295 611T220 548T174 464T150 382T144 318Q144 241 180 189T287 137Q325 137 359 160Q428 205 466 322Q472 342 501 359T551 376Q557 376 560 373T564 368L565 365Q560 341 551 302T512 173T451 31Q359 -119 204 -119Q163 -118 127 -109T74 -91T53 -77Q52 -75 52 -71Q52 -54 79 -35T132 -14H140L151 -19Q210 -49 281 -49H289Q312 -49 329 -31Q351 -7 372 36T405 109T416 142L408 136Q401 131 392 125T369 111T338 96T303 82T261 72T216 68",72:"18 487Q18 496 29 517T67 566T127 621T216 665T330 683Q359 683 376 669T397 643T400 622Q400 584 382 488T348 343Q348 342 467 342H587L594 366Q615 440 648 534T690 641Q701 656 723 669T764 683Q783 683 783 672L750 578Q716 485 677 346T625 101Q624 92 623 82T622 65T621 56Q621 20 658 20Q666 20 701 25Q709 52 736 69T785 87Q803 87 803 75T791 44T754 3T685 -33T588 -48Q568 -48 562 -46Q522 -31 522 13V23Q531 129 562 250L569 281L565 280Q561 278 556 277T549 274L438 273H328L321 249Q307 202 275 107T232 0Q219 -16 196 -28T155 -41Q149 -41 145 -39T140 -34T139 -29Q139 -24 148 -3T181 86T233 247Q240 270 240 272Q240 273 194 273H169Q139 273 139 285Q139 295 153 308T187 332Q206 341 236 342L260 343L264 359Q278 414 289 482T300 578Q300 613 260 613H254Q198 613 169 592Q148 578 127 544T104 508Q72 478 37 475Q18 475 18 487",73:"174 0H31Q-13 0 -21 2T-30 12Q-30 23 -17 36Q9 60 42 68L155 70Q187 102 214 179T257 333T302 491T366 610L369 614H305Q221 611 188 607T145 596T128 569Q119 543 94 529T47 512Q28 512 28 524Q28 527 32 539Q56 614 159 654Q218 678 312 682Q314 682 339 682T404 682T481 683H632Q642 678 642 671Q642 657 621 641T577 617Q570 615 507 614H444Q427 592 406 542Q382 478 355 366T310 209Q280 123 238 78L230 69H330Q442 70 442 74Q443 74 443 77T447 87T460 105Q490 134 527 137Q545 137 545 125Q545 120 542 112Q531 78 491 49T399 7Q379 2 360 2T174 0",74:"148 78Q148 16 189 -17T286 -50Q319 -50 348 -33T396 10T426 59T444 101L471 204Q498 306 521 372Q575 532 649 605L659 614H591Q517 613 494 607Q433 591 400 550T360 477Q353 454 325 437T275 419Q256 419 260 435Q280 523 376 597T583 681Q603 683 713 683H830Q839 674 839 671Q839 654 810 634T754 614Q735 614 721 601Q688 571 654 495T600 351T561 209T541 132Q507 29 412 -45T213 -119Q141 -119 94 -77T47 33Q47 55 50 69T58 90T71 103Q105 131 135 131Q152 131 152 120Q152 119 151 114T149 99T148 78",75:"194 618Q193 618 182 613T156 601T131 594Q113 594 113 605Q113 623 144 644Q154 650 205 676T267 703Q277 705 279 705Q295 705 295 691Q295 569 250 397Q225 306 197 217T151 81T128 25Q120 8 94 -7T47 -22Q32 -22 32 -10L64 76Q95 163 133 295T185 530Q198 611 194 618ZM331 429Q331 383 364 290T449 117T542 36Q574 36 607 51T652 103Q660 124 677 133T709 143Q727 143 727 128Q727 119 723 111Q704 56 639 17T497 -22H493Q463 -22 425 16Q401 40 382 71Q335 138 296 243T256 399Q256 434 288 473Q342 540 471 622T670 705Q691 704 703 696Q732 678 732 644Q732 613 714 600T677 586Q671 586 667 587T660 592T657 604V619Q657 647 629 647Q623 647 620 646Q576 635 495 583T365 482Q331 448 331 429",76:"62 -22T47 -22T32 -11Q32 -1 56 24T83 55Q113 96 138 172T180 320T234 473T323 609Q364 649 419 677T531 705Q559 705 578 696T604 671T615 645T618 623V611Q618 582 615 571T598 548Q581 531 558 520T518 509Q503 509 503 520Q503 523 505 536T507 560Q507 590 494 610T452 630Q423 630 410 617Q367 578 333 492T271 301T233 170Q211 123 204 112L198 103L224 102Q281 102 369 79T509 52H523Q535 64 544 87T579 128Q616 152 641 152Q656 152 656 142Q656 101 588 40T433 -22Q381 -22 289 1T156 28L141 29L131 20Q111 0 87 -11",77:"28 9Q28 37 43 63T73 90Q77 90 83 84T103 70T141 57H146Q162 57 178 79T222 167Q266 279 295 371T334 513T349 598T358 651T371 677Q397 705 432 705Q442 705 445 699T452 666Q453 661 453 659Q475 538 509 405T568 207L574 192Q581 178 587 164T594 150Q596 150 635 189T693 248Q765 324 863 438T1024 626T1089 701Q1093 705 1100 705Q1111 705 1111 682Q1111 675 1108 660T1099 611T1086 540Q1041 277 1041 144Q1041 98 1044 75T1050 48T1059 42Q1064 41 1075 46Q1102 61 1121 61Q1137 61 1137 50Q1137 28 1087 0T1000 -29Q983 -29 972 -23T955 -9T945 16T942 45T941 83V96Q941 158 952 256T974 422L985 489Q984 489 939 436T821 300T698 164Q665 128 620 85T568 37Q564 34 558 34Q550 34 546 37T535 54Q512 91 496 127T450 259T389 498L384 518Q349 367 294 223T198 15Q155 -50 117 -50Q87 -50 61 -35T30 -6Q28 2 28 9",78:"343 705Q358 705 358 698Q360 696 370 658T411 524T484 319Q536 174 590 82L595 73L615 152Q646 274 683 407Q729 571 752 637T799 727Q852 780 937 788Q939 788 947 788T958 789H962Q979 789 979 765Q979 722 951 692Q942 683 924 683Q888 681 859 672T818 654T803 639Q784 608 708 322T631 15Q631 14 630 15Q630 17 629 15Q628 14 628 12Q621 -4 601 -17T560 -31Q550 -31 546 -28T530 -7Q484 67 458 123T398 272Q352 392 314 514L306 535V534Q306 533 296 488T272 379T234 239T185 100T127 -7T61 -50Q34 -50 4 -34T-27 8Q-27 33 -12 61T18 90Q21 90 36 77T87 57H92Q109 57 123 78T162 173Q206 299 232 417T265 599T276 667Q284 681 304 693T343 705",79:"308 428Q289 428 289 438Q289 457 318 508T378 593Q417 638 475 671T599 705Q688 705 732 643T777 483Q777 380 733 285T620 123T464 18T293 -22Q188 -22 123 51T58 245Q58 327 87 403T159 533T249 626T333 685T388 705Q404 705 404 693Q404 674 363 649Q333 632 304 606T239 537T181 429T158 290Q158 179 214 114T364 48Q489 48 583 165T677 438Q677 473 670 505T648 568T601 617T528 636Q518 636 513 635Q486 629 460 600T419 544T392 490Q383 470 372 459Q341 430 308 428",80:"37 475Q19 475 19 487Q19 536 103 604T327 682Q329 682 344 682T380 682T421 683H463Q625 683 695 615Q718 591 726 564Q733 547 733 525Q733 412 607 312T321 205H312Q293 205 293 217Q293 224 302 236T333 260T385 274Q558 287 614 407Q633 445 633 477Q633 515 612 543T556 585T481 607T399 614H370L368 603Q352 463 312 312T242 82T202 -13Q190 -33 164 -45T121 -57Q108 -57 108 -45Q108 -40 120 -10T151 73T192 190T233 349T266 539Q267 546 269 565T272 598T274 613H270Q209 613 163 588Q131 572 113 518Q102 502 80 490T37 475",81:"114 286Q114 358 151 433T249 569T392 667T558 705Q653 705 713 641T774 460Q774 389 750 322T687 206T600 114T504 46T412 4L399 -2Q542 -62 636 -62Q660 -62 670 -54T686 -27T700 0Q734 34 770 34Q787 34 787 23Q787 -18 720 -74T563 -131Q485 -131 350 -83T145 -34Q127 -34 127 -22Q127 -12 144 5T190 31L200 34L237 35Q386 38 467 79Q550 120 612 210T675 416Q675 510 625 573T484 636Q410 636 346 587T248 469T214 333Q214 306 221 281T243 229T288 188T360 172Q403 172 441 188T490 205Q510 205 510 192Q505 162 432 132T287 102Q206 102 160 155T114 286",82:"37 475Q19 475 19 487Q19 503 35 530T83 589T180 647T327 682H374Q387 682 417 682T464 683Q519 683 559 679T642 663T708 625T731 557Q731 481 668 411T504 300Q506 296 512 286T528 257T553 202Q594 105 611 82Q635 47 665 47Q708 47 742 93Q758 113 786 128Q804 136 819 137Q837 137 837 125Q837 115 818 92T767 43T687 -2T589 -22Q549 -22 517 22T467 120T422 221T362 273Q346 273 346 287Q348 301 373 320T436 342Q437 342 446 343T462 345T481 348T504 353T527 362T553 375T577 393Q598 412 614 443T630 511Q630 545 613 566T541 600T393 614Q370 614 370 613L366 584Q349 446 311 307T243 96L213 25Q205 8 179 -7T132 -22Q125 -22 120 -18T117 -8Q117 -5 130 26T163 113T205 239T246 408T274 606V614Q273 614 259 613T231 609T198 602T163 588Q131 572 113 518Q102 502 80 490T37 475",83:"554 512Q536 512 536 522Q536 525 539 539T542 564Q542 588 528 604Q515 616 482 625T410 635Q374 635 349 624T312 594T295 561T290 532Q290 505 303 482T342 442T378 419T409 404Q435 391 451 383T494 357T535 323T562 282T574 231Q574 133 464 56T220 -22Q138 -22 78 21T18 123Q18 184 61 227T156 274Q178 274 178 263Q178 260 177 258Q172 247 164 239T151 227T136 218L127 213L124 202Q118 186 118 163Q120 124 165 86T292 48Q374 48 423 86T473 186V193Q473 267 347 327Q268 364 239 389Q191 431 191 486Q191 547 242 600T356 679T470 705Q472 705 478 705T489 704Q551 704 596 682T642 610Q642 566 621 545Q592 516 554 512",84:"49 475Q34 475 34 490Q34 552 106 611T261 681Q272 683 507 683H742Q790 717 816 717Q833 717 833 708Q833 682 795 653T714 615Q691 610 588 609Q490 609 490 607L483 580Q476 554 462 496T435 392Q410 289 395 231T363 116T335 34T309 -15T279 -47T242 -64Q231 -68 218 -68Q203 -68 203 -57Q203 -52 211 -38Q224 -7 234 20T251 66T268 123T283 179T304 261T328 360Q342 415 360 488Q380 567 384 582T397 605Q400 607 401 609H302H244Q200 609 188 607T167 596Q145 572 145 541Q145 520 109 498T49 475",85:"8 592Q8 616 70 649T193 683Q246 683 246 631Q246 587 205 492T124 297T83 143Q83 101 100 75T154 48Q202 48 287 135T450 342T560 553Q589 635 593 640Q603 656 626 668T669 683H670Q687 683 687 672T670 616T617 463T547 220Q525 137 521 68Q521 54 522 50T533 42L543 47Q573 61 588 61Q604 61 604 47Q599 16 506 -22Q486 -28 468 -28T436 -18T421 18Q421 92 468 258Q468 259 467 257T459 248Q426 206 391 167T303 81T194 6T83 -22Q66 -22 58 -20Q25 -11 4 19T-17 99Q-17 146 8 220T64 358T120 488T146 586Q146 604 141 608T123 613H120Q99 613 72 597T25 580Q8 580 8 592",86:"25 633Q25 647 47 665T100 683Q291 683 291 306Q291 264 288 213T282 132L279 102Q281 102 308 126T378 191T464 279T545 381T596 479Q600 490 600 502Q600 527 581 550T523 577Q505 577 505 601Q505 622 516 647T542 681Q546 683 558 683Q605 679 631 645T658 559Q658 423 487 215Q409 126 308 37T190 -52Q177 -52 177 -28Q177 -26 183 15T196 127T203 270Q203 356 192 421T165 523T126 583T83 613T41 620Q25 620 25 633",87:"25 633Q25 647 46 665T103 683Q168 683 207 632Q228 608 243 568Q269 485 269 374Q269 324 265 271T256 184L251 150L252 152Q254 153 257 157T264 167T274 180T286 197Q359 293 424 398T519 558T549 616Q549 618 547 624T545 638Q550 654 572 668T615 683Q626 683 632 672T657 595Q726 370 741 128L742 110Q752 122 767 142T823 217T894 321T950 424T976 511Q976 544 958 560T918 577Q906 577 906 602Q906 629 918 651T942 681Q948 683 954 683Q983 683 1008 658T1034 569T999 421T915 257T813 109T724 -3T681 -49Q666 -59 660 -45Q659 -41 657 35T639 233T591 477Q573 551 570 551Q569 551 554 523T507 439T433 315T323 155T182 -25Q160 -52 151 -53Q137 -53 137 -30Q137 -29 148 25T170 168T181 338Q181 424 168 483T131 571T87 609T40 620Q25 620 25 633",88:"324 614Q291 576 250 573Q231 573 231 584Q231 589 232 592Q235 601 244 614T271 643T324 671T400 683H403Q462 683 481 610Q485 594 490 545T498 454L501 413Q504 413 551 442T648 509T705 561Q707 565 707 578Q707 610 682 614Q667 614 667 626Q667 641 695 662T755 683Q765 683 775 680T796 662T807 623Q807 596 792 572T713 499T530 376L505 361V356Q508 346 511 278T524 148T557 75Q569 69 580 69Q585 69 593 77Q624 108 660 110Q667 110 670 110T676 106T678 94Q668 59 624 30T510 0Q487 0 471 9T445 32T430 71T422 117T417 173Q416 183 416 188Q413 214 411 244T407 286T405 299Q403 299 344 263T223 182T154 122Q152 118 152 105Q152 69 180 69Q183 69 187 66T191 60L192 58V56Q192 41 163 21T105 0Q94 0 84 3T63 21T52 60Q52 77 56 90T85 131T155 191Q197 223 259 263T362 327T402 352L391 489Q391 492 390 505T387 526T384 547T379 568T372 586T361 602T348 611Q346 612 341 613T333 614H324",89:"65 599Q65 618 107 650T204 683Q267 683 312 643T380 533T414 385T424 217Q424 186 423 160T422 123Q426 123 468 170T567 304T650 469Q661 503 661 519Q661 546 639 570Q615 591 583 591Q569 591 569 616Q569 640 582 661T613 683Q624 683 638 679T671 664T702 625T714 558Q714 472 639 329T426 45Q361 -21 282 -82T154 -143Q97 -143 64 -104T31 -20Q31 4 44 25T70 46Q78 46 81 39T87 16T97 -9Q127 -51 182 -51Q184 -51 187 -50H190Q233 -41 314 25Q330 36 330 40Q336 79 336 178Q336 508 223 594Q199 614 158 619L148 620L139 611Q111 586 83 586Q65 586 65 599",90:"694 220Q708 220 708 210Q708 195 695 167T658 105T593 42T502 3Q492 1 458 1Q400 1 293 11T150 22Q116 22 92 11T51 0Q37 0 37 10Q37 21 63 44T179 146T367 319L391 343H343L296 344Q285 350 285 358Q285 365 289 372T300 383T313 392T324 398L329 400H450L561 518Q597 558 607 571L621 587H596Q553 589 484 599T383 609Q342 609 326 596T301 555Q294 533 263 514T208 492Q189 492 189 503Q189 510 197 528T215 559Q249 607 318 645T466 683Q504 683 573 673T669 662L690 661Q734 682 748 683Q767 683 767 673Q767 666 746 640Q655 531 555 428L529 400Q529 399 543 399Q604 397 604 366Q604 350 587 337T551 322Q541 322 539 323Q529 328 529 334Q529 339 487 342L470 343L446 320Q272 153 200 96L235 95Q297 95 392 86T533 74H554Q586 116 597 159Q604 179 635 199T694 220"},{});var texSize3$1={},texSize3={};Object.defineProperty(texSize3,"__esModule",{value:!0}),texSize3.texSize3=void 0,texSize3.texSize3={40:[1.45,.949,.736],41:[1.45,.949,.736],47:[1.45,.949,1.044],91:[1.45,.949,.528],92:[1.45,.949,1.044],93:[1.45,.949,.528],123:[1.45,.949,.75],125:[1.45,.949,.75],710:[.772,-.564,1.444],732:[.749,-.61,1.444],770:[.772,-.564,0],771:[.749,-.61,0],8260:[1.45,.949,1.044],8730:[1.45,.95,1,{ic:.02}],8968:[1.45,.949,.583],8969:[1.45,.949,.583],8970:[1.45,.949,.583],8971:[1.45,.949,.583],9001:[1.45,.95,.75],9002:[1.45,.949,.75],10216:[1.45,.95,.75],10217:[1.45,.949,.75],12296:[1.45,.95,.75],12297:[1.45,.949,.75]},Object.defineProperty(texSize3$1,"__esModule",{value:!0}),texSize3$1.texSize3=void 0;var FontData_js_1$3=FontData,tex_size3_js_1$1=texSize3;texSize3$1.texSize3=(0,FontData_js_1$3.AddPaths)(tex_size3_js_1$1.texSize3,{40:"701 -940Q701 -943 695 -949H664Q662 -947 636 -922T591 -879T537 -818T475 -737T412 -636T350 -511T295 -362T250 -186T221 17T209 251Q209 962 573 1361Q596 1386 616 1405T649 1437T664 1450H695Q701 1444 701 1441Q701 1436 681 1415T629 1356T557 1261T476 1118T400 927T340 675T308 359Q306 321 306 250Q306 -139 400 -430T690 -924Q701 -936 701 -940",41:"34 1438Q34 1446 37 1448T50 1450H56H71Q73 1448 99 1423T144 1380T198 1319T260 1238T323 1137T385 1013T440 864T485 688T514 485T526 251Q526 134 519 53Q472 -519 162 -860Q139 -885 119 -904T86 -936T71 -949H56Q43 -949 39 -947T34 -937Q88 -883 140 -813Q428 -430 428 251Q428 453 402 628T338 922T245 1146T145 1309T46 1425Q44 1427 42 1429T39 1433T36 1436L34 1438",47:"81 -949Q71 -949 63 -941T55 -921Q55 -917 56 -915Q59 -906 498 264T939 1438Q945 1450 960 1450Q972 1450 980 1441T988 1421Q982 1403 839 1020L398 -155Q107 -934 103 -938Q96 -949 81 -949",91:"247 -949V1450H516V1388H309V-887H516V-949H247",92:"988 -922Q988 -933 980 -941T962 -949Q947 -949 940 -938Q936 -934 645 -155L204 1020Q56 1416 56 1424Q56 1433 62 1441T84 1450Q97 1448 103 1439Q107 1435 398 656L839 -519Q988 -918 988 -922",93:"11 1388V1450H280V-949H11V-887H218V1388H11",123:"618 -943L612 -949H582L568 -943Q472 -903 411 -841T332 -703Q327 -682 327 -653T325 -350Q324 -28 323 -18Q317 24 301 61T264 124T221 171T179 205T147 225T132 234Q130 238 130 250Q130 255 130 258T131 264T132 267T134 269T139 272T144 275Q207 308 256 367Q310 436 323 519Q324 529 325 851Q326 1124 326 1154T332 1205Q369 1358 566 1443L582 1450H612L618 1444V1429Q618 1413 616 1411L608 1406Q599 1402 585 1393T552 1372T515 1343T479 1305T449 1257T429 1200Q425 1180 425 1152T423 851Q422 579 422 549T416 498Q407 459 388 424T346 364T297 318T250 284T214 264T197 254L188 251L205 242Q290 200 345 138T416 3Q421 -18 421 -48T423 -349Q423 -397 423 -472Q424 -677 428 -694Q429 -697 429 -699Q434 -722 443 -743T465 -782T491 -816T519 -845T548 -868T574 -886T595 -899T610 -908L616 -910Q618 -912 618 -928V-943",125:"131 1414T131 1429T133 1447T148 1450H153H167L182 1444Q276 1404 336 1343T415 1207Q421 1184 421 1154T423 851L424 531L426 517Q434 462 460 415T518 339T571 296T608 274Q615 270 616 267T618 251Q618 241 618 238T615 232T608 227Q542 194 491 132T426 -15L424 -29L423 -350Q422 -622 422 -652T415 -706Q397 -780 337 -841T182 -943L167 -949H153Q137 -949 134 -946T131 -928Q131 -914 132 -911T144 -904Q146 -903 148 -902Q299 -820 323 -680Q324 -663 325 -349T327 -19Q355 145 541 241L561 250L541 260Q356 355 327 520Q326 537 325 850T323 1181Q315 1227 293 1267T244 1332T193 1374T151 1401T132 1413Q131 1414 131 1429",710:"1439 564Q1434 564 1080 631T722 698Q719 698 362 631Q7 564 4 564L0 583Q-4 602 -4 603L720 772L1083 688Q1446 603 1447 603Q1447 602 1443 583L1439 564",732:"1 643Q1 646 76 671T271 722T476 749Q555 749 626 736T742 706T856 676T999 662Q1088 662 1192 684T1363 727T1432 749Q1432 745 1437 731T1442 716Q1442 714 1381 693T1212 645T1012 611Q1000 610 955 610Q851 610 701 653T444 697Q355 697 251 676T80 632T11 610Q11 614 6 628T1 643",770:"-5 564Q-9 564 -363 631T-722 698Q-725 698 -1082 631Q-1437 564 -1440 564L-1444 583Q-1448 602 -1448 603L-724 772L-361 688Q2 603 3 603Q3 602 -1 583L-5 564",771:"-1443 643Q-1443 646 -1368 671T-1173 722T-968 749Q-889 749 -818 736T-702 706T-588 676T-445 662Q-356 662 -252 684T-81 727T-12 749Q-12 745 -7 731T-2 716Q-2 714 -63 693T-232 645T-432 611Q-444 610 -489 610Q-593 610 -743 653T-1000 697Q-1089 697 -1193 676T-1364 632T-1433 610Q-1433 614 -1438 628T-1443 643",8260:"81 -949Q71 -949 63 -941T55 -921Q55 -917 56 -915Q59 -906 498 264T939 1438Q945 1450 960 1450Q972 1450 980 1441T988 1421Q982 1403 839 1020L398 -155Q107 -934 103 -938Q96 -949 81 -949",8730:"424 -948Q422 -947 313 -434T202 80L170 31Q165 24 157 10Q137 -21 137 -21Q131 -16 124 -8L111 5L264 248L473 -720Q473 -717 727 359T983 1440Q989 1450 1001 1450Q1007 1450 1013 1445T1020 1433Q1020 1425 742 244T460 -941Q458 -950 439 -950H436Q424 -950 424 -948",8968:"246 -949V1450H571V1388H308V-949H246",8969:"11 1388V1450H336V-949H274V1388H11",8970:"246 -949V1450H308V-887H571V-949H246",8971:"274 -887V1450H336V-949H11V-887H274",9001:"126 242V259L361 845Q595 1431 597 1435Q610 1450 624 1450Q634 1450 644 1443T654 1419V1411L422 831Q190 253 190 250T422 -331L654 -910V-919Q654 -936 644 -943T624 -950Q612 -950 597 -935Q595 -931 361 -345L126 242",9002:"94 1424Q94 1426 97 1432T107 1444T124 1450Q141 1450 152 1435Q154 1431 388 845L623 259V242L388 -345Q153 -933 152 -934Q142 -949 127 -949H125Q95 -949 95 -919V-910L327 -331Q559 247 559 250T327 831Q94 1411 94 1424",10216:"126 242V259L361 845Q595 1431 597 1435Q610 1450 624 1450Q634 1450 644 1443T654 1419V1411L422 831Q190 253 190 250T422 -331L654 -910V-919Q654 -936 644 -943T624 -950Q612 -950 597 -935Q595 -931 361 -345L126 242",10217:"94 1424Q94 1426 97 1432T107 1444T124 1450Q141 1450 152 1435Q154 1431 388 845L623 259V242L388 -345Q153 -933 152 -934Q142 -949 127 -949H125Q95 -949 95 -919V-910L327 -331Q559 247 559 250T327 831Q94 1411 94 1424",12296:"126 242V259L361 845Q595 1431 597 1435Q610 1450 624 1450Q634 1450 644 1443T654 1419V1411L422 831Q190 253 190 250T422 -331L654 -910V-919Q654 -936 644 -943T624 -950Q612 -950 597 -935Q595 -931 361 -345L126 242",12297:"94 1424Q94 1426 97 1432T107 1444T124 1450Q141 1450 152 1435Q154 1431 388 845L623 259V242L388 -345Q153 -933 152 -934Q142 -949 127 -949H125Q95 -949 95 -919V-910L327 -331Q559 247 559 250T327 831Q94 1411 94 1424"},{});var texSize4$1={},texSize4={};Object.defineProperty(texSize4,"__esModule",{value:!0}),texSize4.texSize4=void 0,texSize4.texSize4={40:[1.75,1.249,.792],41:[1.75,1.249,.792],47:[1.75,1.249,1.278],91:[1.75,1.249,.583],92:[1.75,1.249,1.278],93:[1.75,1.249,.583],123:[1.75,1.249,.806],125:[1.75,1.249,.806],710:[.845,-.561,1.889,{ic:.013}],732:[.823,-.583,1.889],770:[.845,-.561,0,{ic:.013}],771:[.823,-.583,0],8260:[1.75,1.249,1.278],8730:[1.75,1.25,1,{ic:.02}],8968:[1.75,1.249,.639],8969:[1.75,1.249,.639],8970:[1.75,1.249,.639],8971:[1.75,1.249,.639],9001:[1.75,1.248,.806],9002:[1.75,1.248,.806],9115:[1.154,.655,.875],9116:[.61,.01,.875],9117:[1.165,.644,.875],9118:[1.154,.655,.875],9119:[.61,.01,.875],9120:[1.165,.644,.875],9121:[1.154,.645,.667],9122:[.602,0,.667],9123:[1.155,.644,.667],9124:[1.154,.645,.667],9125:[.602,0,.667],9126:[1.155,.644,.667],9127:[.899,.01,.889],9128:[1.16,.66,.889],9129:[.01,.899,.889],9130:[.29,.015,.889],9131:[.899,.01,.889],9132:[1.16,.66,.889],9133:[.01,.899,.889],9143:[.935,.885,1.056],10216:[1.75,1.248,.806],10217:[1.75,1.248,.806],12296:[1.75,1.248,.806],12297:[1.75,1.248,.806],57344:[.625,.014,1.056],57345:[.605,.014,1.056,{ic:.02}],57680:[.12,.213,.45,{ic:.01}],57681:[.12,.213,.45,{ic:.024}],57682:[.333,0,.45,{ic:.01}],57683:[.333,0,.45,{ic:.024}],57684:[.32,.2,.4,{ic:.01}],57685:[.333,0,.9,{ic:.01}],57686:[.12,.213,.9,{ic:.01}]},Object.defineProperty(texSize4$1,"__esModule",{value:!0}),texSize4$1.texSize4=void 0;var FontData_js_1$2=FontData,tex_size4_js_1$1=texSize4;texSize4$1.texSize4=(0,FontData_js_1$2.AddPaths)(tex_size4_js_1$1.texSize4,{40:"758 -1237T758 -1240T752 -1249H736Q718 -1249 717 -1248Q711 -1245 672 -1199Q237 -706 237 251T672 1700Q697 1730 716 1749Q718 1750 735 1750H752Q758 1744 758 1741Q758 1737 740 1713T689 1644T619 1537T540 1380T463 1176Q348 802 348 251Q348 -242 441 -599T744 -1218Q758 -1237 758 -1240",41:"33 1741Q33 1750 51 1750H60H65Q73 1750 81 1743T119 1700Q554 1207 554 251Q554 -707 119 -1199Q76 -1250 66 -1250Q65 -1250 62 -1250T56 -1249Q55 -1249 53 -1249T49 -1250Q33 -1250 33 -1239Q33 -1236 50 -1214T98 -1150T163 -1052T238 -910T311 -727Q443 -335 443 251Q443 402 436 532T405 831T339 1142T224 1438T50 1716Q33 1737 33 1741",47:"1166 1738Q1176 1750 1189 1750T1211 1742T1221 1721Q1221 1720 1221 1718T1220 1715Q1219 1708 666 238T111 -1237Q102 -1249 86 -1249Q74 -1249 65 -1240T56 -1220Q56 -1219 56 -1217T57 -1214Q58 -1207 611 263T1166 1738",91:"269 -1249V1750H577V1677H342V-1176H577V-1249H269",92:"56 1720Q56 1732 64 1741T85 1750Q104 1750 111 1738Q113 1734 666 264T1220 -1214Q1220 -1215 1220 -1217T1221 -1220Q1221 -1231 1212 -1240T1191 -1249Q1175 -1249 1166 -1237Q1164 -1233 611 237T57 1715Q57 1716 56 1718V1720",93:"5 1677V1750H313V-1249H5V-1176H240V1677H5",123:"661 -1243L655 -1249H622L604 -1240Q503 -1190 434 -1107T348 -909Q346 -897 346 -499L345 -98L343 -82Q335 3 287 87T157 223Q146 232 145 236Q144 240 144 250Q144 265 145 268T157 278Q242 333 288 417T343 583L345 600L346 1001Q346 1398 348 1410Q379 1622 600 1739L622 1750H655L661 1744V1727V1721Q661 1712 661 1710T657 1705T648 1700T630 1690T602 1668Q589 1659 574 1643T531 1593T484 1508T459 1398Q458 1389 458 1001Q458 614 457 605Q441 435 301 316Q254 277 202 251L250 222Q260 216 301 185Q443 66 457 -104Q458 -113 458 -501Q458 -888 459 -897Q463 -944 478 -988T509 -1060T548 -1114T580 -1149T602 -1167Q620 -1183 634 -1192T653 -1202T659 -1207T661 -1220V-1226V-1243",125:"144 1727Q144 1743 146 1746T162 1750H167H183L203 1740Q274 1705 325 1658T403 1562T440 1478T456 1410Q458 1398 458 1001Q459 661 459 624T465 558Q470 526 480 496T502 441T529 395T559 356T588 325T615 301T637 284T654 273L660 269V266Q660 263 660 259T661 250V239Q661 236 661 234T660 232T656 229T649 224Q577 179 528 105T465 -57Q460 -86 460 -123T458 -499V-661Q458 -857 457 -893T447 -955Q425 -1048 359 -1120T203 -1239L183 -1249H168Q150 -1249 147 -1246T144 -1226Q144 -1213 145 -1210T153 -1202Q169 -1193 186 -1181T232 -1140T282 -1081T322 -1000T345 -897Q346 -888 346 -501Q346 -113 347 -104Q359 58 503 184Q554 226 603 250Q504 299 430 393T347 605Q346 614 346 1002Q346 1389 345 1398Q338 1493 288 1573T153 1703Q146 1707 145 1710T144 1727",710:"5 561Q-4 561 -9 582T-14 618Q-14 623 -13 625Q-11 628 461 736T943 845Q945 845 1417 738T1896 628Q1902 628 1902 618Q1902 607 1897 584T1883 561Q1881 561 1412 654L945 750L476 654Q6 561 5 561",732:"1212 583Q1124 583 1048 603T923 647T799 691T635 711Q524 711 375 679T120 615L16 583Q14 584 12 587T9 592Q-2 650 2 659Q2 669 38 687Q54 696 146 723T309 767Q527 823 666 823Q759 823 837 803T964 759T1088 715T1252 695Q1363 695 1512 727T1764 791T1871 823Q1872 822 1874 819T1878 814Q1885 783 1885 753Q1885 748 1884 747Q1884 738 1849 719Q1836 712 1740 682T1484 617T1212 583",770:"-1884 561Q-1893 561 -1898 582T-1903 618Q-1903 623 -1902 625Q-1900 628 -1428 736T-946 845Q-944 845 -472 738T7 628Q13 628 13 618Q13 607 8 584T-6 561Q-8 561 -477 654L-944 750L-1413 654Q-1883 561 -1884 561",771:"-677 583Q-765 583 -841 603T-966 647T-1090 691T-1254 711Q-1365 711 -1514 679T-1768 615L-1873 583Q-1875 584 -1877 587T-1880 592Q-1891 650 -1887 659Q-1887 669 -1851 687Q-1835 696 -1743 723T-1580 767Q-1362 823 -1223 823Q-1130 823 -1052 803T-925 759T-801 715T-637 695Q-526 695 -377 727T-125 791T-18 823Q-17 822 -15 819T-11 814Q-4 782 -4 753Q-4 748 -5 747Q-5 738 -40 719Q-53 712 -149 682T-405 617T-677 583",8260:"1166 1738Q1176 1750 1189 1750T1211 1742T1221 1721Q1221 1720 1221 1718T1220 1715Q1219 1708 666 238T111 -1237Q102 -1249 86 -1249Q74 -1249 65 -1240T56 -1220Q56 -1219 56 -1217T57 -1214Q58 -1207 611 263T1166 1738",8730:"983 1739Q988 1750 1001 1750Q1008 1750 1013 1745T1020 1733Q1020 1726 742 244T460 -1241Q458 -1250 439 -1250H436Q424 -1250 424 -1248L410 -1166Q395 -1083 367 -920T312 -601L201 44L137 -83L111 -57L187 96L264 247Q265 246 369 -357Q470 -958 473 -963L727 384Q979 1729 983 1739",8968:"269 -1249V1750H633V1677H342V-1249H269",8969:"5 1677V1750H369V-1249H296V1677H5",8970:"269 -1249V1750H342V-1176H633V-1249H269",8971:"296 -1176V1750H369V-1249H5V-1176H296",9001:"140 242V260L386 994Q633 1729 635 1732Q643 1745 657 1749Q658 1749 662 1749T668 1750Q682 1749 692 1740T702 1714V1705L214 251L703 -1204L702 -1213Q702 -1230 692 -1239T667 -1248H664Q647 -1248 635 -1231Q633 -1228 386 -493L140 242",9002:"103 1714Q103 1732 114 1741T137 1750Q157 1750 170 1732Q172 1729 419 994L665 260V242L419 -493Q172 -1228 170 -1231Q158 -1248 141 -1248H138Q123 -1248 113 -1239T103 -1213V-1204L591 251L103 1705V1714",9115:"837 1154Q843 1148 843 1145Q843 1141 818 1106T753 1002T667 841T574 604T494 299Q417 -84 417 -609Q417 -641 416 -647T411 -654Q409 -655 366 -655Q299 -655 297 -654Q292 -652 292 -643T291 -583Q293 -400 304 -242T347 110T432 470T574 813T785 1136Q787 1139 790 1142T794 1147T796 1150T799 1152T802 1153T807 1154T813 1154H819H837",9116:"413 -9Q412 -9 407 -9T388 -10T354 -10Q300 -10 297 -9Q294 -8 293 -5Q291 5 291 127V300Q291 602 292 605L296 609Q298 610 366 610Q382 610 392 610T407 610T412 609Q416 609 416 592T417 473V127Q417 -9 413 -9",9117:"843 -635Q843 -638 837 -644H820Q801 -644 800 -643Q792 -635 785 -626Q684 -503 605 -363T473 -75T385 216T330 518T302 809T291 1093Q291 1144 291 1153T296 1164Q298 1165 366 1165Q409 1165 411 1164Q415 1163 416 1157T417 1119Q417 529 517 109T833 -617Q843 -631 843 -635",9118:"31 1143Q31 1154 49 1154H59Q72 1154 75 1152T89 1136Q190 1013 269 873T401 585T489 294T544 -8T572 -299T583 -583Q583 -634 583 -643T577 -654Q575 -655 508 -655Q465 -655 463 -654Q459 -653 458 -647T457 -609Q457 -58 371 340T100 1037Q87 1059 61 1098T31 1143",9119:"579 -9Q578 -9 573 -9T554 -10T520 -10Q466 -10 463 -9Q460 -8 459 -5Q457 5 457 127V300Q457 602 458 605L462 609Q464 610 532 610Q548 610 558 610T573 610T578 609Q582 609 582 592T583 473V127Q583 -9 579 -9",9120:"56 -644H50Q31 -644 31 -635Q31 -632 37 -622Q69 -579 100 -527Q286 -228 371 170T457 1119Q457 1161 462 1164Q464 1165 520 1165Q575 1165 577 1164Q582 1162 582 1153T583 1093Q581 910 570 752T527 400T442 40T300 -303T89 -626Q78 -640 75 -642T61 -644H56",9121:"319 -645V1154H666V1070H403V-645H319",9122:"319 0V602H403V0H319",9123:"319 -644V1155H403V-560H666V-644H319",9124:"0 1070V1154H347V-645H263V1070H0",9125:"263 0V602H347V0H263",9126:"263 -560V1155H347V-644H0V-560H263",9127:"712 899L718 893V876V865Q718 854 704 846Q627 793 577 710T510 525Q510 524 509 521Q505 493 504 349Q504 345 504 334Q504 277 504 240Q504 -2 503 -4Q502 -8 494 -9T444 -10Q392 -10 390 -9Q387 -8 386 -5Q384 5 384 230Q384 262 384 312T383 382Q383 481 392 535T434 656Q510 806 664 892L677 899H712",9128:"389 1159Q391 1160 455 1160Q496 1160 498 1159Q501 1158 502 1155Q504 1145 504 924Q504 691 503 682Q494 549 425 439T243 259L229 250L243 241Q349 175 421 66T503 -182Q504 -191 504 -424Q504 -600 504 -629T499 -659H498Q496 -660 444 -660T390 -659Q387 -658 386 -655Q384 -645 384 -425V-282Q384 -176 377 -116T342 10Q325 54 301 92T255 155T214 196T183 222T171 232Q170 233 170 250T171 268Q171 269 191 284T240 331T300 407T354 524T383 679Q384 691 384 925Q384 1152 385 1155L389 1159",9129:"718 -893L712 -899H677L666 -893Q542 -825 468 -714T385 -476Q384 -466 384 -282Q384 3 385 5L389 9Q392 10 444 10Q486 10 494 9T503 4Q504 2 504 -239V-310V-366Q504 -470 508 -513T530 -609Q546 -657 569 -698T617 -767T661 -812T699 -843T717 -856T718 -876V-893",9130:"384 150V266Q384 304 389 309Q391 310 455 310Q496 310 498 309Q502 308 503 298Q504 283 504 150Q504 32 504 12T499 -9H498Q496 -10 444 -10T390 -9Q386 -8 385 2Q384 17 384 150",9131:"170 875Q170 892 172 895T189 899H194H211L222 893Q345 826 420 715T503 476Q504 467 504 230Q504 51 504 21T499 -9H498Q496 -10 444 -10Q402 -10 394 -9T385 -4Q384 -2 384 240V311V366Q384 469 380 513T358 609Q342 657 319 698T271 767T227 812T189 843T171 856T170 875",9132:"389 1159Q391 1160 455 1160Q496 1160 498 1159Q501 1158 502 1155Q504 1145 504 925V782Q504 676 511 616T546 490Q563 446 587 408T633 345T674 304T705 278T717 268Q718 267 718 250T717 232Q717 231 697 216T648 169T588 93T534 -24T505 -179Q504 -191 504 -425Q504 -600 504 -629T499 -659H498Q496 -660 444 -660T390 -659Q387 -658 386 -655Q384 -645 384 -424Q384 -191 385 -182Q394 -49 463 61T645 241L659 250L645 259Q539 325 467 434T385 682Q384 692 384 873Q384 1153 385 1155L389 1159",9133:"384 -239V-57Q384 4 389 9Q391 10 455 10Q496 10 498 9Q501 8 502 5Q504 -5 504 -230Q504 -261 504 -311T505 -381Q505 -486 492 -551T435 -691Q357 -820 222 -893L211 -899H195Q176 -899 173 -896T170 -874Q170 -858 171 -855T184 -846Q262 -793 312 -709T378 -525Q378 -524 379 -522Q383 -493 384 -351Q384 -345 384 -334Q384 -276 384 -239",9143:"742 -871Q740 -873 737 -876T733 -880T730 -882T724 -884T714 -885H702L222 569L180 484Q138 399 137 399Q131 404 124 412L111 425L265 736L702 -586V168L703 922Q713 935 722 935Q734 935 742 920V-871",10216:"140 242V260L386 994Q633 1729 635 1732Q643 1745 657 1749Q658 1749 662 1749T668 1750Q682 1749 692 1740T702 1714V1705L214 251L703 -1204L702 -1213Q702 -1230 692 -1239T667 -1248H664Q647 -1248 635 -1231Q633 -1228 386 -493L140 242",10217:"103 1714Q103 1732 114 1741T137 1750Q157 1750 170 1732Q172 1729 419 994L665 260V242L419 -493Q172 -1228 170 -1231Q158 -1248 141 -1248H138Q123 -1248 113 -1239T103 -1213V-1204L591 251L103 1705V1714",12296:"140 242V260L386 994Q633 1729 635 1732Q643 1745 657 1749Q658 1749 662 1749T668 1750Q682 1749 692 1740T702 1714V1705L214 251L703 -1204L702 -1213Q702 -1230 692 -1239T667 -1248H664Q647 -1248 635 -1231Q633 -1228 386 -493L140 242",12297:"103 1714Q103 1732 114 1741T137 1750Q157 1750 170 1732Q172 1729 419 994L665 260V242L419 -493Q172 -1228 170 -1231Q158 -1248 141 -1248H138Q123 -1248 113 -1239T103 -1213V-1204L591 251L103 1705V1714",57344:"722 -14H720Q708 -14 702 0V306L703 612Q713 625 722 625Q734 625 742 610V0Q734 -14 724 -14H722",57345:"702 589Q706 601 718 605H1061Q1076 597 1076 585Q1076 572 1061 565H742V0Q734 -14 724 -14H722H720Q708 -14 702 0V589",57680:"-18 -213L-24 -207V-172L-16 -158Q75 2 260 84Q334 113 415 119Q418 119 427 119T440 120Q454 120 457 117T460 98V60V25Q460 7 457 4T441 0Q308 0 193 -55T25 -205Q21 -211 18 -212T-1 -213H-18",57681:"-10 60Q-10 104 -10 111T-5 118Q-1 120 10 120Q96 120 190 84Q375 2 466 -158L474 -172V-207L468 -213H451H447Q437 -213 434 -213T428 -209T423 -202T414 -187T396 -163Q331 -82 224 -41T9 0Q-4 0 -7 3T-10 25V60",57682:"-24 327L-18 333H-1Q11 333 15 333T22 329T27 322T35 308T54 284Q115 203 225 162T441 120Q454 120 457 117T460 95V60V28Q460 8 457 4T442 0Q355 0 260 36Q75 118 -16 278L-24 292V327",57683:"-10 60V95Q-10 113 -7 116T9 120Q151 120 250 171T396 284Q404 293 412 305T424 324T431 331Q433 333 451 333H468L474 327V292L466 278Q375 118 190 36Q95 0 8 0Q-5 0 -7 3T-10 24V60",57684:"-10 0V120H410V0H-10"},{57685:"",57686:""});var texVariant$1={},texVariant={};Object.defineProperty(texVariant,"__esModule",{value:!0}),texVariant.texVariant=void 0,texVariant.texVariant={710:[.845,-.561,2.333,{ic:.013}],732:[.899,-.628,2.333],770:[.845,-.561,0,{ic:.013}],771:[.899,-.628,0],1008:[.434,.006,.667,{ic:.067}],8463:[.695,.013,.54,{ic:.022}],8592:[.437,-.064,.5],8594:[.437,-.064,.5],8652:[.514,.014,1],8708:[.86,.166,.556],8709:[.587,0,.778],8722:[.27,-.23,.5],8726:[.43,.023,.778],8733:[.472,-.028,.778],8739:[.43,.023,.222],8740:[.43,.023,.222,{ic:.018}],8741:[.431,.023,.389],8742:[.431,.024,.389,{ic:.018}],8764:[.365,-.132,.778],8776:[.481,-.05,.778],8808:[.752,.284,.778],8809:[.752,.284,.778],8816:[.919,.421,.778],8817:[.919,.421,.778],8840:[.828,.33,.778],8841:[.828,.33,.778],8842:[.634,.255,.778],8843:[.634,.254,.778],8872:[.694,0,.611],8901:[.189,0,.278],8994:[.378,-.122,.778],8995:[.378,-.143,.778],9651:[.575,.02,.722],9661:[.576,.019,.722],10887:[.801,.303,.778],10888:[.801,.303,.778],10955:[.752,.332,.778],10956:[.752,.333,.778]},Object.defineProperty(texVariant$1,"__esModule",{value:!0}),texVariant$1.texVariant=void 0;var FontData_js_1$1=FontData,tex_variant_js_1$1=texVariant;texVariant$1.texVariant=(0,FontData_js_1$1.AddPaths)(tex_variant_js_1$1.texVariant,{710:"1 561Q-3 563 -6 577T-12 604L-14 618Q-14 625 -7 628T23 635Q31 636 36 637Q63 641 621 745Q1148 845 1165 845Q1167 845 1752 739L2338 630Q2346 630 2346 618Q2340 565 2332 561Q2329 561 1749 654Q1617 675 1466 699T1241 736T1167 748Q1165 748 1093 737T867 700T583 654Q3 561 1 561",732:"804 788Q717 788 606 772T397 732T213 685T75 645T18 628Q11 628 11 632Q8 637 4 668T2 704Q2 713 36 732Q55 739 242 795Q622 898 826 898Q893 898 947 895Q1009 887 1056 872T1187 819Q1286 776 1356 758T1527 739Q1614 739 1725 755T1934 795T2118 842T2256 882T2313 899Q2320 899 2320 895Q2323 890 2327 860T2329 824Q2329 818 2296 795Q2273 787 2089 732Q1810 657 1598 632Q1562 629 1492 629Q1389 629 1320 644T1144 708Q1048 751 977 769T804 788",770:"-2332 561Q-2336 563 -2340 577T-2346 604L-2347 618Q-2347 625 -2340 628T-2310 635Q-2302 636 -2297 637Q-2270 641 -1712 745Q-1185 845 -1168 845Q-1166 845 -581 739L5 630Q13 630 13 618Q7 565 -1 561Q-4 561 -584 654Q-716 675 -867 699T-1092 736T-1166 748Q-1168 748 -1240 737T-1466 700T-1750 654Q-2330 561 -2332 561",771:"-1529 788Q-1616 788 -1727 772T-1936 732T-2120 685T-2258 645T-2315 628Q-2322 628 -2322 632Q-2325 637 -2329 668T-2331 704Q-2331 713 -2297 732Q-2278 739 -2091 795Q-1711 898 -1507 898Q-1440 898 -1386 895Q-1324 887 -1277 872T-1146 819Q-1047 776 -977 758T-806 739Q-719 739 -608 755T-399 795T-215 842T-77 882T-20 899Q-13 899 -13 895Q-10 890 -6 860T-4 824Q-4 818 -37 795Q-60 787 -244 732Q-523 657 -735 632Q-771 629 -841 629Q-944 629 -1013 644T-1189 708Q-1285 751 -1356 769T-1529 788",1008:"228 325Q170 322 156 316T127 309Q108 309 104 314Q99 319 99 322T108 341Q125 376 171 400T268 425H271Q302 425 319 396Q328 377 328 358Q328 332 324 314Q311 270 286 221Q274 194 274 192H275Q339 234 484 325T639 421Q669 434 691 434T723 425T734 406Q734 394 719 381Q715 376 644 330L575 287L566 267Q543 233 526 176Q520 160 515 143T508 115T506 105Q506 103 533 103Q585 103 607 110T641 118Q670 118 670 107Q670 100 661 85Q643 50 598 27T504 3Q465 3 450 36Q441 51 441 73Q441 84 444 96Q452 146 484 205L497 236L324 125Q143 12 135 10Q103 -6 77 -6Q61 -6 49 2T37 21Q37 36 49 46T124 96L195 141L204 156Q219 179 243 248T264 323Q264 325 228 325",8463:"182 599Q182 611 174 615T133 619Q118 619 114 621T109 630Q109 636 114 656T122 681Q125 685 202 688Q272 695 286 695Q304 695 304 684Q304 682 295 644T282 597Q282 592 360 592H399Q430 592 445 587T460 563Q460 552 451 541L442 535H266L251 468Q247 453 243 436T236 409T233 399Q233 395 244 404Q295 441 357 441Q405 441 445 417T485 333Q485 284 449 178T412 58T426 44Q447 44 466 68Q485 87 500 130L509 152H531H543Q562 152 562 144Q562 128 546 93T494 23T415 -13Q385 -13 359 3T322 44Q318 52 318 77Q318 99 352 196T386 337Q386 386 346 386Q318 386 286 370Q267 361 245 338T211 292Q207 287 193 235T162 113T138 21Q128 7 122 4Q105 -12 83 -12Q66 -12 54 -2T42 26L166 530Q166 534 161 534T129 535Q127 535 122 535T112 534Q74 534 74 562Q74 570 77 576T84 585T96 589T109 591T124 592T138 592L182 595V599",8592:"292 419Q292 400 261 347T211 275H306Q319 275 338 275T364 276Q399 276 410 271T422 250T411 230T366 225H306H211Q214 222 232 197T271 136T292 82Q292 71 285 68T262 64H250H241Q221 64 216 67T205 83Q186 127 153 167T78 230Q64 238 64 250Q64 258 69 263T82 272T106 288T139 318Q162 342 177 365T198 402T209 425T223 436Q224 437 252 437H258Q292 437 292 419",8594:"188 417Q188 437 221 437H233Q256 437 263 434T275 417Q294 373 327 333T402 270Q417 261 417 250Q417 241 410 236T382 217T341 182Q315 155 299 128T275 85T263 66Q259 64 231 64H219Q197 64 191 72T193 100Q202 124 215 147T239 185T257 210T267 223L269 225H174H116Q80 225 69 229T58 250T70 271T114 276Q121 276 140 276T174 275H269L267 277Q266 280 257 291T233 325T205 374Q188 408 188 417",8652:"755 512Q755 514 778 514H801L804 503Q805 501 812 486T824 462T839 437T862 408T892 381T932 354L944 347V327H507Q70 327 67 329Q55 335 55 347T67 365Q70 367 454 367H837L828 376Q803 403 785 437T761 489T755 512ZM55 153V173H492Q928 173 932 171Q944 166 944 153T932 135Q928 133 545 133H162L171 124Q198 95 216 61T239 8L244 -12Q244 -14 221 -14H198L195 -4Q160 95 67 146L55 153",8708:"55 676Q55 688 66 694H199L333 696L351 772Q364 827 370 843T386 860Q393 860 399 854T406 841Q406 836 391 765L375 696Q375 694 431 694H484Q491 688 497 681V12L493 5L486 1L353 -1H219L202 -79Q184 -153 180 -159Q175 -166 165 -166Q146 -166 146 -148Q146 -141 161 -76T177 -4Q177 -1 122 -1H68Q55 12 55 20T66 39H126L186 41L219 181Q226 215 234 251T246 305T251 325Q251 328 166 328H79Q68 345 68 347Q68 352 75 359L82 368H262L291 505Q298 539 306 575T319 630T324 650V654H68Q55 669 55 676ZM457 368V654H411Q366 654 366 652Q365 651 361 634T349 580T333 514Q303 373 302 372V368H457ZM457 39V328H375Q293 328 293 325Q292 322 260 183T228 41T344 39H457",8709:"624 470Q624 468 639 446T668 382T683 291Q683 181 612 99T437 -1Q425 -2 387 -2T337 -1Q245 18 193 70L179 81L131 39Q96 8 89 3T75 -3Q55 -3 55 17Q55 24 61 30T111 73Q154 113 151 113Q151 114 140 130T115 177T95 241Q94 253 94 291T95 341Q112 431 173 495Q265 587 385 587Q410 587 437 581Q522 571 582 513L595 501L642 541Q689 586 695 586Q696 586 697 586T699 587Q706 587 713 583T720 568Q720 560 711 551T664 510Q651 499 642 490T628 475T624 470ZM564 477Q517 522 448 539Q428 546 375 546Q290 546 229 492T144 370Q133 332 133 279Q136 228 151 195Q157 179 168 160T184 141Q186 141 375 307T564 477ZM642 290Q642 318 637 343T625 386T611 416T598 436T593 444Q590 444 402 277T213 108Q213 104 231 89T293 55T392 37Q495 37 568 111T642 290",8722:"84 237T84 250T98 270H402Q417 262 417 250T402 230H98Q84 237 84 250",8726:"91 404T91 410T97 423T111 430Q117 430 395 224Q676 13 678 10Q685 3 685 -3T678 -16T664 -23Q658 -23 380 184T98 397Q91 404 91 410",8733:"56 250Q56 346 122 409T276 472Q349 472 407 430T486 326L489 316Q490 317 493 326T501 345T514 367T531 393Q557 425 602 448T698 472Q722 472 722 452Q722 437 702 435T642 421T571 377Q520 323 520 250Q520 179 568 126T693 68Q722 66 722 48Q722 28 698 28Q636 28 576 67T493 174L490 184Q489 181 483 167T475 150T468 136T458 120T447 107T432 90T412 73Q350 28 277 28Q188 28 122 91T56 250ZM199 68T278 68T408 122T459 250Q459 322 414 370T308 430Q302 431 273 431Q204 431 150 380T96 250Q96 176 147 122",8739:"91 417Q104 430 111 430T131 417V-10Q116 -23 111 -23T91 -10V417",8740:"91 417Q104 430 111 430T131 417V301L171 341Q201 373 207 378T220 384Q227 384 233 377T240 366Q240 357 187 299L131 244V-10Q116 -23 111 -23T91 -10V201L49 157Q20 127 14 121T0 115Q-8 115 -14 121T-20 132Q-20 139 17 178Q29 191 36 199L91 257V417",8741:"55 417Q69 431 76 431T95 419V-12Q84 -23 76 -23Q72 -23 69 -22T62 -16T55 -10V417ZM293 419Q300 431 310 431L324 424L331 417V-10Q316 -23 309 -23L297 -19L293 -12V419",8742:"56 417Q68 431 76 431L89 426L96 419V317L98 215L193 273L291 330V375L293 419Q301 431 311 431Q331 431 331 388L333 355L356 370Q381 384 388 384Q394 384 400 377T407 363Q407 354 367 328L331 308V-10Q316 -23 310 -23Q300 -23 293 -12L291 135V284L98 168L96 77V-12Q84 -24 76 -24L62 -19L58 -12L56 66V144L31 128Q5 114 -2 114Q-8 114 -14 121T-20 136Q-20 142 -14 147T20 170L56 190V417",8764:"73 132Q55 132 55 172Q55 220 79 272Q95 301 111 319Q148 353 195 363Q199 364 212 364Q262 364 294 350T408 272Q472 222 522 212Q537 208 555 208Q606 208 646 243Q671 268 680 296T691 342T702 365Q713 365 716 354T719 314Q714 236 664 179L660 176Q657 173 654 170T644 163T631 154T615 146T596 139T574 134T549 132Q510 132 465 156T386 211T307 265T223 290Q162 290 124 249T86 165Q86 155 82 144T73 132",8776:"55 326Q55 394 101 437T226 481Q268 479 313 460T392 419T469 379T555 361Q622 361 662 401Q686 423 688 450Q693 479 702 479H705Q719 479 719 442Q719 367 670 327T554 286Q512 286 466 304T386 345T307 385T220 404Q184 404 157 394T120 374L111 363Q86 339 86 317Q86 288 71 288Q55 288 55 326ZM55 90Q55 164 105 205T226 246Q269 243 314 224T392 183T470 144T558 126Q622 126 662 166Q686 187 688 214Q693 244 704 244Q716 244 719 210Q719 165 702 132T658 82T605 58T552 50T498 58T447 77T384 110Q322 146 302 152Q263 168 220 168Q179 168 144 152Q128 147 107 125T86 81Q86 52 71 52Q55 52 55 90",8808:"86 472Q93 477 381 614T673 752Q680 752 686 746T693 732T689 721Q686 715 418 590L151 461L418 332Q684 207 689 201Q693 195 693 190Q693 183 687 177T675 170Q668 170 380 307T86 450Q82 454 82 461Q82 467 86 472ZM369 101V126Q369 156 382 156H384Q385 157 386 157Q409 157 409 115V98V54H680Q693 39 693 34T680 14H409V-142H680Q693 -155 693 -162Q693 -167 680 -182H409V-273Q396 -284 388 -284Q382 -284 369 -275V-182H95Q82 -167 82 -162Q82 -155 95 -142H369V14H95Q93 17 89 21T84 27T82 34T83 40T89 47T95 54H369V101",8809:"89 745Q95 752 100 752Q106 752 394 615T689 472Q693 468 693 461T689 450Q684 445 396 308T100 170Q95 170 89 176T82 190Q82 195 86 201Q91 208 358 332L624 461L358 590Q90 715 86 721Q82 725 82 731Q82 739 89 745ZM369 101V126Q369 156 382 156H384Q385 157 386 157Q409 157 409 115V98V54H680Q693 39 693 34T680 14H409V-142H680Q693 -155 693 -162Q693 -167 680 -182H409V-273Q396 -284 388 -284Q382 -284 369 -275V-182H95Q82 -167 82 -162Q82 -155 95 -142H369V14H95Q93 17 89 21T84 27T82 34T83 40T89 47T95 54H369V101",8816:"82 34Q82 44 93 55H198L300 57L342 179Q351 207 362 238T378 286T384 303T238 377Q109 435 86 450Q82 454 82 460T86 472Q90 476 302 579L511 679Q512 679 553 795Q569 842 577 866T592 903T600 917T608 919Q615 919 622 912T629 901Q629 899 595 799Q589 777 581 753T569 717T564 703L618 728Q666 752 673 752T686 746T693 732Q693 723 683 717T615 683L546 650L491 488Q464 410 450 368T438 326Q493 297 562 266Q660 219 677 209T694 190Q694 183 690 177T678 171Q664 171 546 228L424 286Q422 286 382 172L342 57L513 55H682Q694 43 694 34Q694 28 689 21L682 17L506 15H329L322 -8Q320 -13 310 -41T295 -85L275 -141H680Q682 -143 684 -146T688 -151T691 -156T693 -162Q693 -172 682 -179L473 -181H262L220 -303Q192 -388 185 -404T166 -421Q160 -421 153 -415T146 -403Q146 -400 179 -302T220 -185Q220 -181 158 -181L93 -179L86 -174Q82 -169 82 -161Q82 -152 93 -141H164L233 -139L260 -63L286 15H189L93 17L86 21Q82 26 82 34ZM495 623Q495 626 493 626T321 544T151 461L398 343Q399 343 405 360T423 415T446 483Q457 513 469 551T488 606T495 623",8817:"97 172Q82 172 82 190Q82 197 86 201Q94 209 173 246T327 319T402 357Q405 360 434 448T462 539L278 628Q96 713 86 721Q82 725 82 732T88 745T102 752Q103 752 125 742T198 709T293 666Q342 642 385 622T453 590T478 579Q479 579 506 659T562 824T598 915Q602 919 609 919T622 913T629 901Q629 898 571 728Q546 656 531 608T518 559Q555 539 602 519Q664 488 679 479T694 461Q694 457 689 450Q680 443 616 413T494 356T435 326L389 190L342 57L513 55H682Q694 43 694 34Q694 28 689 21L682 17L506 15H329L322 -8Q320 -13 310 -41T295 -85L275 -141H680Q682 -143 684 -146T688 -151T691 -156T693 -162Q693 -172 682 -179L473 -181H262L220 -303Q192 -388 185 -404T166 -421Q160 -421 153 -415T146 -403Q146 -400 179 -302T220 -185Q220 -181 158 -181L93 -179L86 -174Q82 -169 82 -161Q82 -152 93 -141H164L233 -139L260 -63L286 15H189L93 17L86 21Q82 26 82 34Q82 44 93 55H198L300 57L342 179Q350 204 361 238T378 286T382 301L246 237Q111 172 97 172ZM624 461Q621 464 560 492Q512 518 503 518Q500 518 500 517Q499 513 488 479T465 413T453 379L624 461",8840:"82 -6Q82 1 95 14H262L295 94Q331 171 331 174Q324 175 312 178T267 194T206 227T146 283T98 368Q84 406 84 461T98 554Q126 632 194 685T349 750Q360 752 480 752H591L604 783Q620 819 624 821Q631 828 640 828Q653 825 658 810Q658 808 646 781L635 754Q635 752 658 752Q680 752 686 746Q693 739 693 732Q693 728 692 726T686 719T680 712H615L506 466Q479 407 451 344T408 248T393 214Q393 210 535 210H680Q693 194 693 190T680 170H373L340 92L304 14H680Q693 1 693 -6Q693 -11 680 -26H286L253 -103L218 -179L451 -181H682Q694 -193 694 -201Q694 -212 682 -219L440 -221H200L178 -270Q160 -309 154 -319T139 -330Q122 -330 118 -312L155 -223Q155 -221 126 -221H95Q82 -206 82 -201T95 -181H175L206 -108Q237 -35 242 -30Q242 -26 169 -26H95Q82 -11 82 -6ZM571 710Q571 712 469 712Q443 712 416 712T371 711T351 710Q279 700 221 656T138 548Q124 508 124 461T138 374Q186 245 351 212L460 459Q571 709 571 710",8841:"82 732Q82 739 95 752H251H348Q420 752 460 744T551 708Q566 697 566 701Q618 815 624 821Q631 828 640 828Q653 825 658 810L600 677Q600 671 615 656T653 605T689 517Q692 496 692 461T689 406Q668 325 615 266Q572 221 513 196T391 170H373L340 92L304 14H680Q693 1 693 -6Q693 -11 680 -26H286L253 -103L218 -179L451 -181H682Q694 -193 694 -201Q694 -212 682 -219L440 -221H200L178 -270Q160 -309 154 -319T139 -330Q122 -330 118 -312L155 -223Q155 -221 126 -221H95Q82 -206 82 -201T95 -181H175L206 -108Q237 -35 242 -30Q242 -26 169 -26H95Q82 -11 82 -6Q82 1 95 14H262L295 92L331 170H95Q93 172 91 175T87 180T84 185T82 191Q82 199 93 210H220L349 212L549 659Q507 692 462 702T338 712H249H95Q82 727 82 732ZM652 473Q652 513 636 552T603 611T582 632Q581 632 487 422T393 210Q424 210 460 220T535 253T605 316T649 410Q652 427 652 461V473",8842:"693 -115T693 -122T680 -144H315L269 -199Q221 -255 213 -255H212Q203 -255 197 -248T193 -231Q195 -225 229 -184L262 -144H186L113 -142L106 -137Q102 -130 102 -125Q102 -119 115 -104H298L426 52H386Q342 54 309 63Q236 79 180 129T98 249Q84 289 84 343Q84 398 98 436Q126 514 193 567T346 632Q347 632 373 632T440 633T520 634H680Q682 631 686 627T691 621T693 614T680 594H526Q364 594 353 592Q268 581 207 528T126 394Q123 378 123 343T126 292Q141 231 181 185T280 114Q329 92 415 92H462L506 147Q554 203 562 203H563Q572 203 578 196T582 178Q579 173 546 132L513 94L598 92H682Q693 81 693 73T680 52H480L349 -102L515 -104H682Q693 -115 693 -122",8843:"82 610T82 614T83 620T89 627T95 634H251Q378 634 409 633T469 623Q540 604 596 554T678 436Q691 397 691 343T678 249Q653 181 597 131T469 63Q427 52 362 52H315L213 -102L438 -104H662Q673 -115 673 -123Q673 -129 660 -144H186L151 -197Q114 -250 109 -253Q106 -254 104 -254Q100 -254 98 -253Q91 -253 87 -248T82 -235Q82 -230 109 -186L138 -144H115Q82 -144 82 -125Q82 -119 95 -104H166L266 49Q266 52 182 52H95Q82 65 82 72Q82 76 83 78T89 85T95 92H295L329 143Q365 195 369 198Q372 203 380 203Q385 203 391 197T398 185Q398 184 398 184L399 182Q399 175 369 129L344 94Q344 92 376 92Q402 92 422 94Q496 104 554 147T638 256Q651 295 651 343Q651 390 638 429Q613 494 555 537T422 592Q411 594 249 594H95Q82 610 82 614",8872:"55 678Q55 679 56 681T58 684T61 688T65 691T70 693T77 694Q88 692 95 679V464H540Q554 456 555 446Q555 442 554 439T552 434T549 430T546 428T542 426T539 424H95V270H539Q540 270 542 269T545 267T549 264T552 260T554 255T555 248Q554 238 540 230H95V15Q88 2 77 0Q73 0 70 1T65 3T61 6T59 9T57 13T55 16V678",8901:"71 0Q59 4 55 16V96L56 176Q59 180 66 187L70 189H209Q219 181 222 174V15Q219 10 209 1L140 0H71",8994:"77 122Q68 122 63 126T57 135T55 142Q55 151 68 176T111 235T177 302T271 356T388 378Q451 378 508 355T602 300T668 233T709 174T722 142Q722 124 704 122Q692 122 685 134T658 179T606 243Q511 338 390 338Q354 338 320 329Q251 312 193 263T97 141Q87 123 77 122",8995:"389 143Q324 143 266 164T171 215T107 277T67 330T55 358T60 371T77 378Q85 377 92 367T116 331T158 280Q256 182 389 182Q475 182 552 227T675 351Q688 378 704 378Q722 376 722 358Q722 352 710 330T670 276T605 215T511 164T389 143",9651:"99 -20Q84 -11 84 0Q84 5 148 145T278 424L342 563Q347 575 360 575Q368 575 375 570Q376 569 441 430T571 148T637 0Q637 -11 622 -20H99ZM476 260L360 509L248 266Q137 24 135 22Q135 20 360 20Q586 20 586 21L476 260",9661:"84 556Q84 567 99 576H622Q637 567 637 556Q637 551 572 409T441 127T375 -14Q368 -19 360 -19H358Q349 -19 342 -7T296 92Q249 193 211 275Q84 550 84 556ZM586 534Q586 536 361 536Q135 536 135 535L358 52L361 47L473 290Q584 532 586 534",10887:"102 168Q103 168 151 146T247 102T295 81Q299 85 322 144T344 206L218 268Q153 297 123 313T87 333T82 344T86 355Q104 369 291 455Q491 552 491 553L542 673Q581 767 590 784T609 801Q616 801 622 795T629 781Q629 773 586 677Q546 581 546 577L609 606Q669 635 673 635Q680 635 686 629T693 615Q693 610 692 608T670 593T604 561L524 521L400 226L542 157Q617 123 649 107T687 85T694 72Q694 66 690 60T679 54Q665 54 526 119Q394 186 386 186Q385 186 342 88L331 61L509 -23Q680 -105 688 -111Q693 -115 693 -122T688 -135T675 -141H673Q664 -141 491 -59Q320 21 316 21H315L249 -136Q183 -293 178 -299Q172 -303 166 -303T153 -297T146 -283Q146 -282 154 -261T181 -197T213 -119L280 41Q280 46 186 86Q157 101 121 119Q92 133 87 136T82 148Q82 155 88 161T102 168ZM418 370L466 495Q464 495 308 420T151 344T204 317T311 267T364 244Q364 247 418 370",10888:"97 54Q82 54 82 72Q82 79 86 84Q95 91 222 153L351 215L398 324L442 433L258 519Q95 597 87 604Q82 608 82 615T88 628T102 635Q107 635 424 484L458 468L524 630Q593 789 597 795Q601 801 609 801Q616 801 622 795T629 781L562 615L493 450L589 406Q665 371 679 362T694 344Q694 339 693 337T677 326T631 302T538 257Q504 241 465 223T406 195T386 186Q383 185 344 92T306 -3L486 81Q662 168 673 168Q680 168 686 162T693 148T689 137Q688 136 482 35L280 -59L233 -176Q184 -291 178 -299Q172 -303 166 -303T153 -297T146 -283Q146 -279 185 -186T224 -90Q225 -88 223 -88Q219 -88 193 -101Q109 -143 98 -143Q82 -138 82 -122Q82 -116 85 -113T108 -98T171 -67L249 -30L289 61Q297 81 307 107T321 144T326 157L218 106Q109 54 97 54ZM553 379Q480 412 480 415Q479 415 460 372T423 285T406 241Q408 240 516 291T624 344L553 379",10955:"82 -14T82 -7T95 15H431L529 170H435Q341 170 333 175Q149 218 98 368Q84 406 84 461Q84 515 98 555Q126 633 193 686T346 750Q347 750 373 750T440 751T520 752H680Q693 739 693 732Q693 727 680 712H526Q364 712 353 710Q268 700 207 646T126 512Q123 496 123 461T126 410Q141 350 180 304T280 232Q312 217 344 214T464 210H555L589 261Q613 301 620 311T635 321Q644 321 650 315T657 301Q657 296 651 286T630 252T604 212Q604 210 642 210H680Q693 197 693 190Q693 186 692 184T686 177T680 170H578L526 92L478 17L580 15H682Q693 4 693 -4T680 -25H451L353 -179L518 -181H682Q694 -193 694 -201Q694 -211 682 -219L504 -221H326L293 -272Q257 -332 246 -332Q238 -332 232 -326T225 -313Q225 -310 226 -308Q226 -305 251 -265T278 -223Q278 -221 186 -221H95Q93 -218 89 -214T84 -208T82 -201T95 -181H306L404 -25H249L93 -23L86 -19Q82 -14 82 -7",10956:"82 732Q82 739 95 752H251Q415 752 426 750Q539 736 615 657Q667 599 689 517Q692 496 692 461T689 406Q668 325 615 266Q522 170 382 170H355L326 95Q319 80 311 59T298 28T293 17Q293 15 486 15H680Q693 0 693 -6T680 -25H275L213 -179L449 -181H682Q693 -192 693 -199T680 -221H198L178 -270Q153 -333 139 -333Q132 -333 126 -327T119 -314T135 -266T153 -223Q153 -221 124 -221H95Q82 -207 82 -201T95 -181H171L233 -25H162L93 -23L86 -19Q82 -14 82 -7T95 15H251L313 170H202L93 172L86 177Q82 182 82 190Q82 199 93 210H211L329 212L349 261Q366 301 372 311T386 321Q392 321 399 315T407 302Q407 295 390 254T373 210Q374 209 377 209Q412 209 444 217Q512 231 564 273T638 377Q651 414 651 461Q651 509 638 548Q613 613 555 656T422 710Q411 712 249 712H95Q82 727 82 732"},{});var delimiters={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.delimiters=e.VSIZES=e.HDW3=e.HDW2=e.HDW1=void 0;var t=FontData$2;e.HDW1=[.75,.25,.875],e.HDW2=[.85,.349,.667],e.HDW3=[.583,.082,.5],e.VSIZES=[1,1.2,1.8,2.4,3];var n={c:47,dir:t.V,sizes:e.VSIZES},r={c:175,dir:t.H,sizes:[.5],stretch:[0,175],HDW:[.59,-.544,.5]},i={c:710,dir:t.H,sizes:[.5,.556,1,1.444,1.889]},o={c:732,dir:t.H,sizes:[.5,.556,1,1.444,1.889]},a={c:8211,dir:t.H,sizes:[.5],stretch:[0,8211],HDW:[.285,-.248,.5]},s={c:8592,dir:t.H,sizes:[1],stretch:[8592,8722],HDW:e.HDW3},l={c:8594,dir:t.H,sizes:[1],stretch:[0,8722,8594],HDW:e.HDW3},c={c:8596,dir:t.H,sizes:[1],stretch:[8592,8722,8594],HDW:e.HDW3},T={c:8612,dir:t.H,stretch:[8592,8722,8739],HDW:e.HDW3,min:1.278},Q={c:8614,dir:t.H,sizes:[1],stretch:[8739,8722,8594],HDW:e.HDW3},d={c:8656,dir:t.H,sizes:[1],stretch:[8656,61],HDW:e.HDW3},u={c:8658,dir:t.H,sizes:[1],stretch:[0,61,8658],HDW:e.HDW3},p={c:8660,dir:t.H,sizes:[1],stretch:[8656,61,8658],HDW:e.HDW3},h={c:8722,dir:t.H,sizes:[.778],stretch:[0,8722],HDW:e.HDW3},m={c:8739,dir:t.V,sizes:[1],stretch:[0,8739],HDW:[.627,.015,.333]},f={c:9180,dir:t.H,sizes:[.778,1],schar:[8994,8994],variants:[5,0],stretch:[57680,57684,57681],HDW:[.32,.2,.5]},g={c:9181,dir:t.H,sizes:[.778,1],schar:[8995,8995],variants:[5,0],stretch:[57682,57684,57683],HDW:[.32,.2,.5]},b={c:9182,dir:t.H,stretch:[57680,57684,57681,57685],HDW:[.32,.2,.5],min:1.8},y={c:9183,dir:t.H,stretch:[57682,57684,57683,57686],HDW:[.32,.2,.5],min:1.8},L={c:10216,dir:t.V,sizes:e.VSIZES},v={c:10217,dir:t.V,sizes:e.VSIZES},w={c:10502,dir:t.H,stretch:[8656,61,8739],HDW:e.HDW3,min:1.278},E={c:10503,dir:t.H,stretch:[8872,61,8658],HDW:e.HDW3,min:1.278};e.delimiters={40:{dir:t.V,sizes:e.VSIZES,stretch:[9115,9116,9117],HDW:[.85,.349,.875]},41:{dir:t.V,sizes:e.VSIZES,stretch:[9118,9119,9120],HDW:[.85,.349,.875]},45:h,47:n,61:{dir:t.H,sizes:[.778],stretch:[0,61],HDW:e.HDW3},91:{dir:t.V,sizes:e.VSIZES,stretch:[9121,9122,9123],HDW:e.HDW2},92:{dir:t.V,sizes:e.VSIZES},93:{dir:t.V,sizes:e.VSIZES,stretch:[9124,9125,9126],HDW:e.HDW2},94:i,95:a,123:{dir:t.V,sizes:e.VSIZES,stretch:[9127,9130,9129,9128],HDW:[.85,.349,.889]},124:{dir:t.V,sizes:[1],stretch:[0,8739],HDW:[.75,.25,.333]},125:{dir:t.V,sizes:e.VSIZES,stretch:[9131,9130,9133,9132],HDW:[.85,.349,.889]},126:o,175:r,710:i,713:r,732:o,770:i,771:o,818:a,8211:a,8212:a,8213:a,8214:{dir:t.V,sizes:[.602,1],schar:[0,8741],variants:[1,0],stretch:[0,8741],HDW:[.602,0,.556]},8215:a,8254:r,8407:l,8592:s,8593:{dir:t.V,sizes:[.888],stretch:[8593,9168],HDW:[.6,0,.667]},8594:l,8595:{dir:t.V,sizes:[.888],stretch:[0,9168,8595],HDW:[.6,0,.667]},8596:c,8597:{dir:t.V,sizes:[1.044],stretch:[8593,9168,8595],HDW:e.HDW1},8606:{dir:t.H,sizes:[1],stretch:[8606,8722],HDW:e.HDW3},8608:{dir:t.H,sizes:[1],stretch:[0,8722,8608],HDW:e.HDW3},8612:T,8613:{dir:t.V,stretch:[8593,9168,8869],HDW:e.HDW1,min:1.555},8614:Q,8615:{dir:t.V,stretch:[8868,9168,8595],HDW:e.HDW1,min:1.555},8624:{dir:t.V,sizes:[.722],stretch:[8624,9168],HDW:e.HDW1},8625:{dir:t.V,sizes:[.722],stretch:[8625,9168],HDW:e.HDW1},8636:{dir:t.H,sizes:[1],stretch:[8636,8722],HDW:e.HDW3},8637:{dir:t.H,sizes:[1],stretch:[8637,8722],HDW:e.HDW3},8638:{dir:t.V,sizes:[.888],stretch:[8638,9168],HDW:e.HDW1},8639:{dir:t.V,sizes:[.888],stretch:[8639,9168],HDW:e.HDW1},8640:{dir:t.H,sizes:[1],stretch:[0,8722,8640],HDW:e.HDW3},8641:{dir:t.H,sizes:[1],stretch:[0,8722,8641],HDW:e.HDW3},8642:{dir:t.V,sizes:[.888],stretch:[0,9168,8642],HDW:e.HDW1},8643:{dir:t.V,sizes:[.888],stretch:[0,9168,8643],HDW:e.HDW1},8656:d,8657:{dir:t.V,sizes:[.888],stretch:[8657,8214],HDW:[.599,0,.778]},8658:u,8659:{dir:t.V,sizes:[.888],stretch:[0,8214,8659],HDW:[.6,0,.778]},8660:p,8661:{dir:t.V,sizes:[1.044],stretch:[8657,8214,8659],HDW:[.75,.25,.778]},8666:{dir:t.H,sizes:[1],stretch:[8666,8801],HDW:[.464,-.036,.5]},8667:{dir:t.H,sizes:[1],stretch:[0,8801,8667],HDW:[.464,-.036,.5]},8722:h,8725:n,8730:{dir:t.V,sizes:e.VSIZES,stretch:[57345,57344,9143],fullExt:[.65,2.3],HDW:[.85,.35,1.056]},8739:m,8741:{dir:t.V,sizes:[1],stretch:[0,8741],HDW:[.627,.015,.556]},8968:{dir:t.V,sizes:e.VSIZES,stretch:[9121,9122],HDW:e.HDW2},8969:{dir:t.V,sizes:e.VSIZES,stretch:[9124,9125],HDW:e.HDW2},8970:{dir:t.V,sizes:e.VSIZES,stretch:[0,9122,9123],HDW:e.HDW2},8971:{dir:t.V,sizes:e.VSIZES,stretch:[0,9125,9126],HDW:e.HDW2},8978:f,8994:f,8995:g,9001:L,9002:v,9130:{dir:t.V,sizes:[.32],stretch:[9130,9130,9130],HDW:[.29,.015,.889]},9135:a,9136:{dir:t.V,sizes:[.989],stretch:[9127,9130,9133],HDW:[.75,.25,.889]},9137:{dir:t.V,sizes:[.989],stretch:[9131,9130,9129],HDW:[.75,.25,.889]},9140:{dir:t.H,stretch:[9484,8722,9488],HDW:e.HDW3,min:1},9141:{dir:t.H,stretch:[9492,8722,9496],HDW:e.HDW3,min:1},9168:{dir:t.V,sizes:[.602,1],schar:[0,8739],variants:[1,0],stretch:[0,8739],HDW:[.602,0,.333]},9180:f,9181:g,9182:b,9183:y,9184:{dir:t.H,stretch:[714,713,715],HDW:[.59,-.544,.5],min:1},9185:{dir:t.H,stretch:[715,713,714],HDW:[.59,-.544,.5],min:1},9472:a,10072:m,10216:L,10217:v,10222:{dir:t.V,sizes:[.989],stretch:[9127,9130,9129],HDW:[.75,.25,.889]},10223:{dir:t.V,sizes:[.989],stretch:[9131,9130,9133],HDW:[.75,.25,.889]},10229:s,10230:l,10231:c,10232:d,10233:u,10234:p,10235:T,10236:Q,10237:w,10238:E,10502:w,10503:E,10574:{dir:t.H,stretch:[8636,8722,8640],HDW:e.HDW3,min:2},10575:{dir:t.V,stretch:[8638,9168,8642],HDW:e.HDW1,min:1.776},10576:{dir:t.H,stretch:[8637,8722,8641],HDW:e.HDW3,min:2},10577:{dir:t.V,stretch:[8639,9168,8643],HDW:e.HDW1,min:.5},10586:{dir:t.H,stretch:[8636,8722,8739],HDW:e.HDW3,min:1.278},10587:{dir:t.H,stretch:[8739,8722,8640],HDW:e.HDW3,min:1.278},10588:{dir:t.V,stretch:[8638,9168,8869],HDW:e.HDW1,min:1.556},10589:{dir:t.V,stretch:[8868,9168,8642],HDW:e.HDW1,min:1.556},10590:{dir:t.H,stretch:[8637,8722,8739],HDW:e.HDW3,min:1.278},10591:{dir:t.H,stretch:[8739,8722,8641],HDW:e.HDW3,min:1.278},10592:{dir:t.V,stretch:[8639,9168,8869],HDW:e.HDW1,min:1.776},10593:{dir:t.V,stretch:[8868,9168,8643],HDW:e.HDW1,min:1.776},12296:L,12297:v,65079:b,65080:y}}(delimiters);var __extends$q=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__values$b=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(tex$1,"__esModule",{value:!0}),tex$1.TeXFont=void 0;var FontData_js_1=FontData,tex_js_1=tex,bold_italic_js_1=boldItalic$1,bold_js_1=bold$1,double_struck_js_1=doubleStruck$1,fraktur_bold_js_1=frakturBold$1,fraktur_js_1=fraktur$1,italic_js_1=italic$1,largeop_js_1=largeop$1,monospace_js_1=monospace$1,normal_js_1=normal$1,sans_serif_bold_italic_js_1=sansSerifBoldItalic$1,sans_serif_bold_js_1=sansSerifBold$1,sans_serif_italic_js_1=sansSerifItalic$1,sans_serif_js_1=sansSerif$1,script_bold_js_1=scriptBold$1,script_js_1=script$1,smallop_js_1=smallop$1,tex_calligraphic_bold_js_1=texCalligraphicBold$1,tex_calligraphic_js_1=texCalligraphic$1,tex_mathit_js_1=texMathit$1,tex_oldstyle_bold_js_1=texOldstyleBold$1,tex_oldstyle_js_1=texOldstyle$1,tex_size3_js_1=texSize3$1,tex_size4_js_1=texSize4$1,tex_variant_js_1=texVariant$1,delimiters_js_1=delimiters,TeXFont=function(e){function t(t){var n,r;void 0===t&&(t=null);var i=e.call(this,t)||this,o=i.constructor;try{for(var a=__values$b(Object.keys(o.variantCacheIds)),s=a.next();!s.done;s=a.next()){var l=s.value;i.variant[l].cacheID="TEX-"+o.variantCacheIds[l]}}catch(e){n={error:e}}finally{try{s&&!s.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}return i}return __extends$q(t,e),t.defaultDelimiters=delimiters_js_1.delimiters,t.defaultChars={normal:normal_js_1.normal,bold:bold_js_1.bold,italic:italic_js_1.italic,"bold-italic":bold_italic_js_1.boldItalic,"double-struck":double_struck_js_1.doubleStruck,fraktur:fraktur_js_1.fraktur,"bold-fraktur":fraktur_bold_js_1.frakturBold,script:script_js_1.script,"bold-script":script_bold_js_1.scriptBold,"sans-serif":sans_serif_js_1.sansSerif,"bold-sans-serif":sans_serif_bold_js_1.sansSerifBold,"sans-serif-italic":sans_serif_italic_js_1.sansSerifItalic,"sans-serif-bold-italic":sans_serif_bold_italic_js_1.sansSerifBoldItalic,monospace:monospace_js_1.monospace,"-smallop":smallop_js_1.smallop,"-largeop":largeop_js_1.largeop,"-size3":tex_size3_js_1.texSize3,"-size4":tex_size4_js_1.texSize4,"-tex-calligraphic":tex_calligraphic_js_1.texCalligraphic,"-tex-bold-calligraphic":tex_calligraphic_bold_js_1.texCalligraphicBold,"-tex-mathit":tex_mathit_js_1.texMathit,"-tex-oldstyle":tex_oldstyle_js_1.texOldstyle,"-tex-bold-oldstyle":tex_oldstyle_bold_js_1.texOldstyleBold,"-tex-variant":tex_variant_js_1.texVariant},t.variantCacheIds={normal:"N",bold:"B",italic:"I","bold-italic":"BI","double-struck":"D",fraktur:"F","bold-fraktur":"BF",script:"S","bold-script":"BS","sans-serif":"SS","bold-sans-serif":"BSS","sans-serif-italic":"SSI","sans-serif-bold-italic":"SSBI",monospace:"M","-smallop":"SO","-largeop":"LO","-size3":"S3","-size4":"S4","-tex-calligraphic":"C","-tex-bold-calligraphic":"BC","-tex-mathit":"MI","-tex-oldstyle":"OS","-tex-bold-oldstyle":"BOS","-tex-variant":"V"},t}((0,tex_js_1.CommonTeXFontMixin)(FontData_js_1.SVGFontData));tex$1.TeXFont=TeXFont;var FontCache$1={};Object.defineProperty(FontCache$1,"__esModule",{value:!0}),FontCache$1.FontCache=void 0;var hasRequiredSvg,FontCache=function(){function e(e){this.cache=new Map,this.defs=null,this.localID="",this.nextID=0,this.jax=e}return e.prototype.cachePath=function(e,t,n){var r="MJX-"+this.localID+(this.jax.font.getVariant(e).cacheID||"")+"-"+t;return this.cache.has(r)||(this.cache.set(r,n),this.jax.adaptor.append(this.defs,this.jax.svg("path",{id:r,d:n}))),r},e.prototype.clearLocalID=function(){this.localID=""},e.prototype.useLocalID=function(e){void 0===e&&(e=null),this.localID=(null==e?++this.nextID:e)+(""===e?"":"-")},e.prototype.clearCache=function(){this.cache=new Map,this.defs=this.jax.svg("defs")},e.prototype.getCache=function(){return this.defs},e}();function requireSvg(){return hasRequiredSvg||(hasRequiredSvg=1,function(e){var t,n=commonjsGlobal&&commonjsGlobal.__extends||(t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},t(e,n)},function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),r=commonjsGlobal&&commonjsGlobal.__assign||function(){return r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},r.apply(this,arguments)},i=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(e,"__esModule",{value:!0}),e.SVG=e.XLINKNS=e.SVGNS=void 0;var o=OutputJax$1,a=requireWrapperFactory(),s=tex$1,l=FontCache$1,c=string,T=lengths;e.SVGNS="http://www.w3.org/2000/svg",e.XLINKNS="http://www.w3.org/1999/xlink";var Q=function(t){function Q(e){void 0===e&&(e=null);var n=t.call(this,e,a.SVGWrapperFactory,s.TeXFont)||this;return n.minwidth=0,n.shift=0,n.container=null,n.svgStyles=null,n.fontCache=new l.FontCache(n),n}return n(Q,t),Q.prototype.initialize=function(){"global"===this.options.fontCache&&this.fontCache.clearCache()},Q.prototype.clearFontCache=function(){this.fontCache.clearCache()},Q.prototype.reset=function(){this.clearFontCache()},Q.prototype.setScale=function(e){1!==this.options.scale&&this.adaptor.setStyle(e,"fontSize",(0,T.percent)(this.options.scale))},Q.prototype.escaped=function(e,t){return this.setDocument(t),this.html("span",{},[this.text(e.math)])},Q.prototype.styleSheet=function(e){if(this.svgStyles)return this.svgStyles;var n=this.svgStyles=t.prototype.styleSheet.call(this,e);return this.adaptor.setAttribute(n,"id",Q.STYLESHEETID),n},Q.prototype.pageElements=function(e){return"global"!==this.options.fontCache||this.findCache(e)?null:this.svg("svg",{id:Q.FONTCACHEID,style:{display:"none"}},[this.fontCache.getCache()])},Q.prototype.findCache=function(e){for(var t=this.adaptor,n=t.tags(t.body(e.document),"svg"),r=n.length-1;r>=0;r--)if(this.adaptor.getAttribute(n[r],"id")===Q.FONTCACHEID)return!0;return!1},Q.prototype.processMath=function(e,t){var n=this.container;this.container=t;var r=this.factory.wrap(e),o=i(this.createRoot(r),2),a=o[0],s=o[1];this.typesetSVG(r,a,s),this.container=n},Q.prototype.createRoot=function(t){var n=t.getOuterBBox(),r=n.w,i=n.h,o=n.d,a=n.pwidth,s=t.metrics.em/1e3,l=Math.max(r,s),c=Math.max(i+o,s),T=this.svg("g",{stroke:"currentColor",fill:"currentColor","stroke-width":0,transform:"scale(1,-1)"}),Q=this.adaptor,d=Q.append(this.container,this.svg("svg",{xmlns:e.SVGNS,width:this.ex(l),height:this.ex(c),role:"img",focusable:!1,style:{"vertical-align":this.ex(-o)},viewBox:[0,this.fixed(1e3*-i,1),this.fixed(1e3*l,1),this.fixed(1e3*c,1)].join(" ")},[T]));if(.001===l&&(Q.setAttribute(d,"preserveAspectRatio","xMidYMid slice"),r<0&&Q.setStyle(this.container,"margin-right",this.ex(r))),a){Q.setStyle(d,"min-width",this.ex(l)),Q.setAttribute(d,"width",a),Q.removeAttribute(d,"viewBox");var u=this.fixed(t.metrics.ex/(1e3*this.font.params.x_height),6);Q.setAttribute(T,"transform","scale(".concat(u,",-").concat(u,") translate(0, ").concat(this.fixed(1e3*-i,1),")"))}return"none"!==this.options.fontCache&&Q.setAttribute(d,"xmlns:xlink",e.XLINKNS),[d,T]},Q.prototype.typesetSVG=function(e,t,n){var r=this.adaptor;if(this.minwidth=this.shift=0,"local"===this.options.fontCache&&(this.fontCache.clearCache(),this.fontCache.useLocalID(this.options.localID),r.insert(this.fontCache.getCache(),n)),e.toSVG(n),this.fontCache.clearLocalID(),this.minwidth)r.setStyle(t,"minWidth",this.ex(this.minwidth)),r.setStyle(this.container,"minWidth",this.ex(this.minwidth));else if(this.shift){var i=r.getAttribute(this.container,"justify")||"center";this.setIndent(t,i,this.shift)}},Q.prototype.setIndent=function(e,t,n){"center"!==t&&"left"!==t||this.adaptor.setStyle(e,"margin-left",this.ex(n)),"center"!==t&&"right"!==t||this.adaptor.setStyle(e,"margin-right",this.ex(-n))},Q.prototype.ex=function(e){return e/=this.font.params.x_height,Math.abs(e)<.001?"0":e.toFixed(3).replace(/\.?0+$/,"")+"ex"},Q.prototype.svg=function(t,n,r){return void 0===n&&(n={}),void 0===r&&(r=[]),this.html(t,n,r,e.SVGNS)},Q.prototype.unknownText=function(e,t){var n=this.math.metrics,r=this.font.params.x_height/n.ex*n.em*1e3,o=this.svg("text",{"data-variant":t,transform:"scale(1,-1)","font-size":this.fixed(r,1)+"px"},[this.text(e)]),a=this.adaptor;if("-explicitFont"!==t){var s=(0,c.unicodeChars)(e);if(1!==s.length||s[0]<119808||s[0]>120831){var l=i(this.font.getCssFont(t),3),T=l[0],Q=l[1],d=l[2];a.setAttribute(o,"font-family",T),Q&&a.setAttribute(o,"font-style","italic"),d&&a.setAttribute(o,"font-weight","bold")}}return o},Q.prototype.measureTextNode=function(e){var t=this.adaptor;e=t.clone(e),t.removeAttribute(e,"transform");var n=this.fixed(1e3*this.font.params.x_height,1),r=this.svg("svg",{position:"absolute",visibility:"hidden",width:"1ex",height:"1ex",viewBox:[0,0,n,n].join(" ")},[e]);t.append(t.body(t.document),r);var i=t.nodeSize(e,1e3,!0)[0];return t.remove(r),{w:i,h:.75,d:.2}},Q.NAME="SVG",Q.OPTIONS=r(r({},o.CommonOutputJax.OPTIONS),{internalSpeechTitles:!0,titleID:0,fontCache:"local",localID:null}),Q.commonStyles={'mjx-container[jax="SVG"]':{direction:"ltr"},'mjx-container[jax="SVG"] > svg':{overflow:"visible","min-height":"1px","min-width":"1px"},'mjx-container[jax="SVG"] > svg a':{fill:"blue",stroke:"blue"}},Q.FONTCACHEID="MJX-SVG-global-cache",Q.STYLESHEETID="MJX-SVG-styles",Q}(o.CommonOutputJax);e.SVG=Q}(svg)),svg}FontCache$1.FontCache=FontCache;var svgExports=requireSvg(),liteAdaptor$1={},DOMAdaptor={},__values$a=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(DOMAdaptor,"__esModule",{value:!0}),DOMAdaptor.AbstractDOMAdaptor=void 0;var AbstractDOMAdaptor=function(){function e(e){void 0===e&&(e=null),this.document=e}return e.prototype.node=function(e,t,n,r){var i,o;void 0===t&&(t={}),void 0===n&&(n=[]);var a=this.create(e,r);this.setAttributes(a,t);try{for(var s=__values$a(n),l=s.next();!l.done;l=s.next()){var c=l.value;this.append(a,c)}}catch(e){i={error:e}}finally{try{l&&!l.done&&(o=s.return)&&o.call(s)}finally{if(i)throw i.error}}return a},e.prototype.setAttributes=function(e,t){var n,r,i,o,a,s;if(t.style&&"string"!=typeof t.style)try{for(var l=__values$a(Object.keys(t.style)),c=l.next();!c.done;c=l.next()){var T=c.value;this.setStyle(e,T.replace(/-([a-z])/g,(function(e,t){return t.toUpperCase()})),t.style[T])}}catch(e){n={error:e}}finally{try{c&&!c.done&&(r=l.return)&&r.call(l)}finally{if(n)throw n.error}}if(t.properties)try{for(var Q=__values$a(Object.keys(t.properties)),d=Q.next();!d.done;d=Q.next())e[T=d.value]=t.properties[T]}catch(e){i={error:e}}finally{try{d&&!d.done&&(o=Q.return)&&o.call(Q)}finally{if(i)throw i.error}}try{for(var u=__values$a(Object.keys(t)),p=u.next();!p.done;p=u.next())"style"===(T=p.value)&&"string"!=typeof t.style||"properties"===T||this.setAttribute(e,T,t[T])}catch(e){a={error:e}}finally{try{p&&!p.done&&(s=u.return)&&s.call(u)}finally{if(a)throw a.error}}},e.prototype.replace=function(e,t){return this.insert(e,t),this.remove(t),t},e.prototype.childNode=function(e,t){return this.childNodes(e)[t]},e.prototype.allClasses=function(e){var t=this.getAttribute(e,"class");return t?t.replace(/ +/g," ").replace(/^ /,"").replace(/ $/,"").split(/ /):[]},e}();DOMAdaptor.AbstractDOMAdaptor=AbstractDOMAdaptor;var NodeMixin={};!function(e){var t,n=commonjsGlobal&&commonjsGlobal.__extends||(t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},t(e,n)},function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),r=commonjsGlobal&&commonjsGlobal.__assign||function(){return r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},r.apply(this,arguments)};Object.defineProperty(e,"__esModule",{value:!0}),e.NodeMixin=e.NodeMixinOptions=void 0;var i=Options;e.NodeMixinOptions={badCSS:!0,badSizes:!0},e.NodeMixin=function(t,o){var a;return void 0===o&&(o={}),o=(0,i.userOptions)((0,i.defaultOptions)({},e.NodeMixinOptions),o),a=function(e){function t(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=e.call(this,t[0])||this,o=r.constructor;return r.options=(0,i.userOptions)((0,i.defaultOptions)({},o.OPTIONS),t[1]),r}return n(t,e),t.prototype.fontSize=function(t){return o.badCSS?this.options.fontSize:e.prototype.fontSize.call(this,t)},t.prototype.fontFamily=function(t){return o.badCSS?this.options.fontFamily:e.prototype.fontFamily.call(this,t)},t.prototype.nodeSize=function(n,r,i){if(void 0===r&&(r=1),void 0===i&&(i=null),!o.badSizes)return e.prototype.nodeSize.call(this,n,r,i);var a=this.textContent(n),s=Array.from(a.replace(t.cjkPattern,"")).length;return[(Array.from(a).length-s)*this.options.cjkCharWidth+s*this.options.unknownCharWidth,this.options.unknownCharHeight]},t.prototype.nodeBBox=function(t){return o.badSizes?{left:0,right:0,top:0,bottom:0}:e.prototype.nodeBBox.call(this,t)},t}(t),a.OPTIONS=r(r({},o.badCSS?{fontSize:16,fontFamily:"Times"}:{}),o.badSizes?{cjkCharWidth:1,unknownCharWidth:.6,unknownCharHeight:.8}:{}),a.cjkPattern=new RegExp(["[","ᄀ-ᅟ","〈〉","⺀-〾","぀-㉇","㉐-䶿","一-꓆","ꥠ-ꥼ","가-힣","豈-﫿","︐-︙","︰-﹫","!-⦆¢-₩","𛀀-𛀁","🈀-🉑","𠀀-𿿽","]"].join(""),"gu"),a}}(NodeMixin);var Document={},Element$1={},__assign$7=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$7=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$7.apply(this,arguments)},__read$9=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$5=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))},__values$9=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(Element$1,"__esModule",{value:!0}),Element$1.LiteElement=void 0;var LiteElement=function(e,t,n){var r,i;void 0===t&&(t={}),void 0===n&&(n=[]),this.kind=e,this.attributes=__assign$7({},t),this.children=__spreadArray$5([],__read$9(n),!1);try{for(var o=__values$9(this.children),a=o.next();!a.done;a=o.next())a.value.parent=this}catch(e){r={error:e}}finally{try{a&&!a.done&&(i=o.return)&&i.call(o)}finally{if(r)throw r.error}}this.styles=null};Element$1.LiteElement=LiteElement,Object.defineProperty(Document,"__esModule",{value:!0}),Document.LiteDocument=void 0;var Element_js_1$2=Element$1,LiteDocument=function(){function e(){this.root=new Element_js_1$2.LiteElement("html",{},[this.head=new Element_js_1$2.LiteElement("head"),this.body=new Element_js_1$2.LiteElement("body")]),this.type=""}return Object.defineProperty(e.prototype,"kind",{get:function(){return"#document"},enumerable:!1,configurable:!0}),e}();Document.LiteDocument=LiteDocument;var Text={},__extends$p=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(Text,"__esModule",{value:!0}),Text.LiteComment=Text.LiteText=void 0;var LiteText=function(){function e(e){void 0===e&&(e=""),this.value=e}return Object.defineProperty(e.prototype,"kind",{get:function(){return"#text"},enumerable:!1,configurable:!0}),e}();Text.LiteText=LiteText;var LiteComment=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$p(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"#comment"},enumerable:!1,configurable:!0}),t}(LiteText);Text.LiteComment=LiteComment;var Window={},List={},__read$8=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$4=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))};Object.defineProperty(List,"__esModule",{value:!0}),List.LiteList=void 0;var LiteList=function(){function e(e){this.nodes=[],this.nodes=__spreadArray$4([],__read$8(e),!1)}return e.prototype.append=function(e){this.nodes.push(e)},e.prototype[Symbol.iterator]=function(){var e=0;return{next:function(){return e===this.nodes.length?{value:null,done:!0}:{value:this.nodes[e++],done:!1}}}},e}();List.LiteList=LiteList;var Parser={};!function(e){var t=commonjsGlobal&&commonjsGlobal.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),n=commonjsGlobal&&commonjsGlobal.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=commonjsGlobal&&commonjsGlobal.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var i in e)"default"!==i&&Object.prototype.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r},i=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},o=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.LiteParser=e.PATTERNS=void 0;var a,s=r(Entities),l=Element$1,c=Text;!function(e){e.TAGNAME="[a-z][^\\s\\n>]*",e.ATTNAME="[a-z][^\\s\\n>=]*",e.VALUE="(?:'[^']*'|\"[^\"]*\"|[^\\s\\n]+)",e.VALUESPLIT="(?:'([^']*)'|\"([^\"]*)\"|([^\\s\\n]+))",e.SPACE="(?:\\s|\\n)+",e.OPTIONALSPACE="(?:\\s|\\n)*",e.ATTRIBUTE=e.ATTNAME+"(?:"+e.OPTIONALSPACE+"="+e.OPTIONALSPACE+e.VALUE+")?",e.ATTRIBUTESPLIT="("+e.ATTNAME+")(?:"+e.OPTIONALSPACE+"="+e.OPTIONALSPACE+e.VALUESPLIT+")?",e.TAG="(<(?:"+e.TAGNAME+"(?:"+e.SPACE+e.ATTRIBUTE+")*"+e.OPTIONALSPACE+"/?|/"+e.TAGNAME+"|!--[^]*?--|![^]*?)(?:>|$))",e.tag=new RegExp(e.TAG,"i"),e.attr=new RegExp(e.ATTRIBUTE,"i"),e.attrsplit=new RegExp(e.ATTRIBUTESPLIT,"i")}(a=e.PATTERNS||(e.PATTERNS={}));var T=function(){function e(){}return e.prototype.parseFromString=function(e,t,n){void 0===n&&(n=null);for(var r=n.createDocument(),i=n.body(r),o=e.replace(/<\?.*?\?>/g,"").split(a.tag);o.length;){var s=o.shift(),l=o.shift();s&&this.addText(n,i,s),l&&">"===l.charAt(l.length-1)&&("!"===l.charAt(1)?this.addComment(n,i,l):i="/"===l.charAt(1)?this.closeTag(n,i,l):this.openTag(n,i,l,o))}return this.checkDocument(n,r),r},e.prototype.addText=function(e,t,n){return n=s.translate(n),e.append(t,e.text(n))},e.prototype.addComment=function(e,t,n){return e.append(t,new c.LiteComment(n))},e.prototype.closeTag=function(e,t,n){for(var r=n.slice(2,n.length-1).toLowerCase();e.parent(t)&&e.kind(t)!==r;)t=e.parent(t);return e.parent(t)},e.prototype.openTag=function(e,t,n,r){var i=this.constructor.PCDATA,o=this.constructor.SELF_CLOSING,s=n.match(/<(.*?)[\s\n>\/]/)[1].toLowerCase(),l=e.node(s),c=n.replace(/^<.*?[\s\n>]/,"").split(a.attrsplit);return(c.pop().match(/>$/)||c.length<5)&&(this.addAttributes(e,l,c),e.append(t,l),o[s]||n.match(/\/>$/)||(i[s]?this.handlePCDATA(e,l,s,r):t=l)),t},e.prototype.addAttributes=function(e,t,n){for(var r=this.constructor.CDATA_ATTR;n.length;){var o=i(n.splice(0,5),5),a=o[1],l=o[2],c=o[3],T=o[4],Q=l||c||T||"";r[a]||(Q=s.translate(Q)),e.setAttribute(t,a,Q)}},e.prototype.handlePCDATA=function(e,t,n,r){for(var i=[],o="</"+n+">",a="";r.length&&a!==o;)i.push(a),i.push(r.shift()),a=r.shift();e.append(t,e.text(i.join("")))},e.prototype.checkDocument=function(e,t){var n,r,i,a,s=this.getOnlyChild(e,e.body(t));if(s){try{for(var l=o(e.childNodes(e.body(t))),T=l.next();!T.done&&(u=T.value)!==s;T=l.next())u instanceof c.LiteComment&&u.value.match(/^<!DOCTYPE/)&&(t.type=u.value)}catch(e){n={error:e}}finally{try{T&&!T.done&&(r=l.return)&&r.call(l)}finally{if(n)throw n.error}}switch(e.kind(s)){case"html":try{for(var Q=o(s.children),d=Q.next();!d.done;d=Q.next()){var u=d.value;switch(e.kind(u)){case"head":t.head=u;break;case"body":t.body=u}}}catch(e){i={error:e}}finally{try{d&&!d.done&&(a=Q.return)&&a.call(Q)}finally{if(i)throw i.error}}t.root=s,e.remove(s),e.parent(t.body)!==s&&e.append(s,t.body),e.parent(t.head)!==s&&e.insert(t.head,t.body);break;case"head":t.head=e.replace(s,t.head);break;case"body":t.body=e.replace(s,t.body)}}},e.prototype.getOnlyChild=function(e,t){var n,r,i=null;try{for(var a=o(e.childNodes(t)),s=a.next();!s.done;s=a.next()){var c=s.value;if(c instanceof l.LiteElement){if(i)return null;i=c}}}catch(e){n={error:e}}finally{try{s&&!s.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}return i},e.prototype.serialize=function(e,t,n){var r=this;void 0===n&&(n=!1);var i=this.constructor.SELF_CLOSING,o=this.constructor.CDATA_ATTR,a=e.kind(t),s=e.allAttributes(t).map((function(e){return e.name+'="'+(o[e.name]?e.value:r.protectAttribute(e.value))+'"'})).join(" "),l=this.serializeInner(e,t,n);return"<"+a+(s?" "+s:"")+(n&&!l||i[a]?n?"/>":">":">".concat(l,"</").concat(a,">"))},e.prototype.serializeInner=function(e,t,n){var r=this;return void 0===n&&(n=!1),this.constructor.PCDATA.hasOwnProperty(t.kind)?e.childNodes(t).map((function(t){return e.value(t)})).join(""):e.childNodes(t).map((function(t){var i=e.kind(t);return"#text"===i?r.protectHTML(e.value(t)):"#comment"===i?t.value:r.serialize(e,t,n)})).join("")},e.prototype.protectAttribute=function(e){return"string"!=typeof e&&(e=String(e)),e.replace(/"/g,""")},e.prototype.protectHTML=function(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")},e.SELF_CLOSING={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,menuitem:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},e.PCDATA={option:!0,textarea:!0,fieldset:!0,title:!0,style:!0,script:!0},e.CDATA_ATTR={style:!0,datafld:!0,datasrc:!0,href:!0,src:!0,longdesc:!0,usemap:!0,cite:!0,datetime:!0,action:!0,axis:!0,profile:!0,content:!0,scheme:!0},e}();e.LiteParser=T}(Parser),Object.defineProperty(Window,"__esModule",{value:!0}),Window.LiteWindow=void 0;var Element_js_1$1=Element$1,Document_js_1$1=Document,List_js_1=List,Parser_js_1$1=Parser,LiteWindow=function(){this.DOMParser=Parser_js_1$1.LiteParser,this.NodeList=List_js_1.LiteList,this.HTMLCollection=List_js_1.LiteList,this.HTMLElement=Element_js_1$1.LiteElement,this.DocumentFragment=List_js_1.LiteList,this.Document=Document_js_1$1.LiteDocument,this.document=new Document_js_1$1.LiteDocument};Window.LiteWindow=LiteWindow;var __extends$o=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$6=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$6=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$6.apply(this,arguments)},__values$8=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},__read$7=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$3=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))};Object.defineProperty(liteAdaptor$1,"__esModule",{value:!0});var liteAdaptor_2=liteAdaptor$1.liteAdaptor=liteAdaptor$1.LiteAdaptor=liteAdaptor$1.LiteBase=void 0,DOMAdaptor_js_1=DOMAdaptor,NodeMixin_js_1=NodeMixin,Document_js_1=Document,Element_js_1=Element$1,Text_js_1=Text,Window_js_1=Window,Parser_js_1=Parser,Styles_js_1=Styles$1,LiteBase=function(e){function t(){var t=e.call(this)||this;return t.parser=new Parser_js_1.LiteParser,t.window=new Window_js_1.LiteWindow,t}return __extends$o(t,e),t.prototype.parse=function(e,t){return this.parser.parseFromString(e,t,this)},t.prototype.create=function(e,t){return new Element_js_1.LiteElement(e)},t.prototype.text=function(e){return new Text_js_1.LiteText(e)},t.prototype.comment=function(e){return new Text_js_1.LiteComment(e)},t.prototype.createDocument=function(){return new Document_js_1.LiteDocument},t.prototype.head=function(e){return e.head},t.prototype.body=function(e){return e.body},t.prototype.root=function(e){return e.root},t.prototype.doctype=function(e){return e.type},t.prototype.tags=function(e,t,n){void 0===n&&(n=null);var r=[],i=[];if(n)return i;for(var o=e;o;){var a=o.kind;"#text"!==a&&"#comment"!==a&&(a===t&&i.push(o),o.children.length&&(r=o.children.concat(r))),o=r.shift()}return i},t.prototype.elementById=function(e,t){for(var n=[],r=e;r;){if("#text"!==r.kind&&"#comment"!==r.kind){if(r.attributes.id===t)return r;r.children.length&&(n=r.children.concat(n))}r=n.shift()}return null},t.prototype.elementsByClass=function(e,t){for(var n=[],r=[],i=e;i;)"#text"!==i.kind&&"#comment"!==i.kind&&((i.attributes.class||"").trim().split(/ +/).includes(t)&&r.push(i),i.children.length&&(n=i.children.concat(n))),i=n.shift();return r},t.prototype.getElements=function(e,t){var n,r,i=[],o=this.body(t);try{for(var a=__values$8(e),s=a.next();!s.done;s=a.next()){var l=s.value;if("string"==typeof l)if("#"===l.charAt(0)){var c=this.elementById(o,l.slice(1));c&&i.push(c)}else"."===l.charAt(0)?i=i.concat(this.elementsByClass(o,l.slice(1))):l.match(/^[-a-z][-a-z0-9]*$/i)&&(i=i.concat(this.tags(o,l)));else Array.isArray(l)?i=i.concat(l):l instanceof this.window.NodeList||l instanceof this.window.HTMLCollection?i=i.concat(l.nodes):i.push(l)}}catch(e){n={error:e}}finally{try{s&&!s.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}return i},t.prototype.contains=function(e,t){for(;t&&t!==e;)t=this.parent(t);return!!t},t.prototype.parent=function(e){return e.parent},t.prototype.childIndex=function(e){return e.parent?e.parent.children.findIndex((function(t){return t===e})):-1},t.prototype.append=function(e,t){return t.parent&&this.remove(t),e.children.push(t),t.parent=e,t},t.prototype.insert=function(e,t){if(e.parent&&this.remove(e),t&&t.parent){var n=this.childIndex(t);t.parent.children.splice(n,0,e),e.parent=t.parent}},t.prototype.remove=function(e){var t=this.childIndex(e);return t>=0&&e.parent.children.splice(t,1),e.parent=null,e},t.prototype.replace=function(e,t){var n=this.childIndex(t);return n>=0&&(t.parent.children[n]=e,e.parent=t.parent,t.parent=null),t},t.prototype.clone=function(e){var t=this,n=new Element_js_1.LiteElement(e.kind);return n.attributes=__assign$6({},e.attributes),n.children=e.children.map((function(e){if("#text"===e.kind)return new Text_js_1.LiteText(e.value);if("#comment"===e.kind)return new Text_js_1.LiteComment(e.value);var r=t.clone(e);return r.parent=n,r})),n},t.prototype.split=function(e,t){var n=new Text_js_1.LiteText(e.value.slice(t));return e.value=e.value.slice(0,t),e.parent.children.splice(this.childIndex(e)+1,0,n),n.parent=e.parent,n},t.prototype.next=function(e){var t=e.parent;if(!t)return null;var n=this.childIndex(e)+1;return n>=0&&n<t.children.length?t.children[n]:null},t.prototype.previous=function(e){var t=e.parent;if(!t)return null;var n=this.childIndex(e)-1;return n>=0?t.children[n]:null},t.prototype.firstChild=function(e){return e.children[0]},t.prototype.lastChild=function(e){return e.children[e.children.length-1]},t.prototype.childNodes=function(e){return __spreadArray$3([],__read$7(e.children),!1)},t.prototype.childNode=function(e,t){return e.children[t]},t.prototype.kind=function(e){return e.kind},t.prototype.value=function(e){return"#text"===e.kind?e.value:"#comment"===e.kind?e.value.replace(/^<!(--)?((?:.|\n)*)\1>$/,"$2"):""},t.prototype.textContent=function(e){var t=this;return e.children.reduce((function(e,n){return e+("#text"===n.kind?n.value:"#comment"===n.kind?"":t.textContent(n))}),"")},t.prototype.innerHTML=function(e){return this.parser.serializeInner(this,e)},t.prototype.outerHTML=function(e){return this.parser.serialize(this,e)},t.prototype.serializeXML=function(e){return this.parser.serialize(this,e,!0)},t.prototype.setAttribute=function(e,t,n,r){void 0===r&&(r=null),"string"!=typeof n&&(n=String(n)),r&&(t=r.replace(/.*\//,"")+":"+t.replace(/^.*:/,"")),e.attributes[t]=n,"style"===t&&(e.styles=null)},t.prototype.getAttribute=function(e,t){return e.attributes[t]},t.prototype.removeAttribute=function(e,t){delete e.attributes[t]},t.prototype.hasAttribute=function(e,t){return e.attributes.hasOwnProperty(t)},t.prototype.allAttributes=function(e){var t,n,r=e.attributes,i=[];try{for(var o=__values$8(Object.keys(r)),a=o.next();!a.done;a=o.next()){var s=a.value;i.push({name:s,value:r[s]})}}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}return i},t.prototype.addClass=function(e,t){var n=(e.attributes.class||"").split(/ /);n.find((function(e){return e===t}))||(n.push(t),e.attributes.class=n.join(" "))},t.prototype.removeClass=function(e,t){var n=(e.attributes.class||"").split(/ /),r=n.findIndex((function(e){return e===t}));r>=0&&(n.splice(r,1),e.attributes.class=n.join(" "))},t.prototype.hasClass=function(e,t){return!!(e.attributes.class||"").split(/ /).find((function(e){return e===t}))},t.prototype.setStyle=function(e,t,n){e.styles||(e.styles=new Styles_js_1.Styles(this.getAttribute(e,"style"))),e.styles.set(t,n),e.attributes.style=e.styles.cssText},t.prototype.getStyle=function(e,t){if(!e.styles){var n=this.getAttribute(e,"style");if(!n)return"";e.styles=new Styles_js_1.Styles(n)}return e.styles.get(t)},t.prototype.allStyles=function(e){return this.getAttribute(e,"style")},t.prototype.insertRules=function(e,t){e.children=[this.text(t.join("\n\n")+"\n\n"+this.textContent(e))]},t.prototype.fontSize=function(e){return 0},t.prototype.fontFamily=function(e){return""},t.prototype.nodeSize=function(e,t,n){return[0,0]},t.prototype.nodeBBox=function(e){return{left:0,right:0,top:0,bottom:0}},t}(DOMAdaptor_js_1.AbstractDOMAdaptor);liteAdaptor$1.LiteBase=LiteBase;var LiteAdaptor=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$o(t,e),t}((0,NodeMixin_js_1.NodeMixin)(LiteBase));function liteAdaptor(e){return void 0===e&&(e=null),new LiteAdaptor(null,e)}liteAdaptor$1.LiteAdaptor=LiteAdaptor,liteAdaptor_2=liteAdaptor$1.liteAdaptor=liteAdaptor;var html$1={},HTMLHandler$1={},Handler={},MathDocument={},MathList={},LinkedList$2={};!function(e){var t=commonjsGlobal&&commonjsGlobal.__generator||function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!((i=(i=a.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){a.label=o[1];break}if(6===o[0]&&a.label<i[1]){a.label=i[1],i=o;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(o);break}i[2]&&a.ops.pop(),a.trys.pop();continue}o=t.call(e,a)}catch(e){o=[6,e],r=0}finally{n=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,s])}}},n=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},r=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))},i=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.LinkedList=e.ListItem=e.END=void 0,e.END=Symbol();var o=function(e){void 0===e&&(e=null),this.next=null,this.prev=null,this.data=e};e.ListItem=o;var a=function(){function a(){for(var t=[],i=0;i<arguments.length;i++)t[i]=arguments[i];this.list=new o(e.END),this.list.next=this.list.prev=this.list,this.push.apply(this,r([],n(t),!1))}return a.prototype.isBefore=function(e,t){return e<t},a.prototype.push=function(){for(var e,t,n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];try{for(var a=i(n),s=a.next();!s.done;s=a.next()){var l=s.value,c=new o(l);c.next=this.list,c.prev=this.list.prev,this.list.prev=c,c.prev.next=c}}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=a.return)&&t.call(a)}finally{if(e)throw e.error}}return this},a.prototype.pop=function(){var t=this.list.prev;return t.data===e.END?null:(this.list.prev=t.prev,t.prev.next=this.list,t.next=t.prev=null,t.data)},a.prototype.unshift=function(){for(var e,t,n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];try{for(var a=i(n.slice(0).reverse()),s=a.next();!s.done;s=a.next()){var l=s.value,c=new o(l);c.next=this.list.next,c.prev=this.list,this.list.next=c,c.next.prev=c}}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=a.return)&&t.call(a)}finally{if(e)throw e.error}}return this},a.prototype.shift=function(){var t=this.list.next;return t.data===e.END?null:(this.list.next=t.next,t.next.prev=this.list,t.next=t.prev=null,t.data)},a.prototype.remove=function(){for(var t,n,r=[],o=0;o<arguments.length;o++)r[o]=arguments[o];var a=new Map;try{for(var s=i(r),l=s.next();!l.done;l=s.next()){var c=l.value;a.set(c,!0)}}catch(e){t={error:e}}finally{try{l&&!l.done&&(n=s.return)&&n.call(s)}finally{if(t)throw t.error}}for(var T=this.list.next;T.data!==e.END;){var Q=T.next;a.has(T.data)&&(T.prev.next=T.next,T.next.prev=T.prev,T.next=T.prev=null),T=Q}},a.prototype.clear=function(){return this.list.next.prev=this.list.prev.next=null,this.list.next=this.list.prev=this.list,this},a.prototype[Symbol.iterator]=function(){var n;return t(this,(function(t){switch(t.label){case 0:n=this.list.next,t.label=1;case 1:return n.data===e.END?[3,3]:[4,n.data];case 2:return t.sent(),n=n.next,[3,1];case 3:return[2]}}))},a.prototype.reversed=function(){var n;return t(this,(function(t){switch(t.label){case 0:n=this.list.prev,t.label=1;case 1:return n.data===e.END?[3,3]:[4,n.data];case 2:return t.sent(),n=n.prev,[3,1];case 3:return[2]}}))},a.prototype.insert=function(t,n){void 0===n&&(n=null),null===n&&(n=this.isBefore.bind(this));for(var r=new o(t),i=this.list.next;i.data!==e.END&&n(i.data,r.data);)i=i.next;return r.prev=i.prev,r.next=i,i.prev.next=i.prev=r,this},a.prototype.sort=function(e){var t,n;void 0===e&&(e=null),null===e&&(e=this.isBefore.bind(this));var r=[];try{for(var o=i(this),s=o.next();!s.done;s=o.next()){var l=s.value;r.push(new a(l))}}catch(e){t={error:e}}finally{try{s&&!s.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}for(this.list.next=this.list.prev=this.list;r.length>1;){var c=r.shift(),T=r.shift();c.merge(T,e),r.push(c)}return r.length&&(this.list=r[0].list),this},a.prototype.merge=function(t,r){var i,o,a,s,l;void 0===r&&(r=null),null===r&&(r=this.isBefore.bind(this));for(var c=this.list.next,T=t.list.next;c.data!==e.END&&T.data!==e.END;)r(T.data,c.data)?(i=n([c,T],2),T.prev.next=i[0],c.prev.next=i[1],o=n([c.prev,T.prev],2),T.prev=o[0],c.prev=o[1],a=n([t.list,this.list],2),this.list.prev.next=a[0],t.list.prev.next=a[1],s=n([t.list.prev,this.list.prev],2),this.list.prev=s[0],t.list.prev=s[1],c=(l=n([T.next,c],2))[0],T=l[1]):c=c.next;return T.data!==e.END&&(this.list.prev.next=t.list.next,t.list.next.prev=this.list.prev,t.list.prev.next=this.list,this.list.prev=t.list.prev,t.list.next=t.list.prev=t.list),this},a}();e.LinkedList=a}(LinkedList$2);var __extends$n=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(MathList,"__esModule",{value:!0}),MathList.AbstractMathList=void 0;var LinkedList_js_1=LinkedList$2,AbstractMathList=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$n(t,e),t.prototype.isBefore=function(e,t){return e.start.i<t.start.i||e.start.i===t.start.i&&e.start.n<t.start.n},t}(LinkedList_js_1.LinkedList);MathList.AbstractMathList=AbstractMathList;var MmlFactory$1={},NodeFactory={},__extends$m=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(NodeFactory,"__esModule",{value:!0}),NodeFactory.AbstractNodeFactory=void 0;var Factory_js_1=Factory,AbstractNodeFactory=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$m(t,e),t.prototype.create=function(e,t,n){return void 0===t&&(t={}),void 0===n&&(n=[]),this.node[e](t,n)},t}(Factory_js_1.AbstractFactory);NodeFactory.AbstractNodeFactory=AbstractNodeFactory;var MML={},mstyle={},__extends$l=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$5=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$5=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$5.apply(this,arguments)};Object.defineProperty(mstyle,"__esModule",{value:!0}),mstyle.MmlMstyle=void 0;var MmlNode_js_1$b=MmlNode,Attributes_js_1$1=Attributes,MmlMstyle=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$l(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"mstyle"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"notParent",{get:function(){return this.childNodes[0]&&1===this.childNodes[0].childNodes.length},enumerable:!1,configurable:!0}),t.prototype.setChildInheritedAttributes=function(e,t,n,r){var i=this.attributes.getExplicit("scriptlevel");null!=i&&((i=i.toString()).match(/^\s*[-+]/)?n+=parseInt(i):n=parseInt(i),r=!1);var o=this.attributes.getExplicit("displaystyle");null!=o&&(t=!0===o,r=!1);var a=this.attributes.getExplicit("data-cramped");null!=a&&(r=a),e=this.addInheritedAttributes(e,this.attributes.getAllAttributes()),this.childNodes[0].setInheritedAttributes(e,t,n,r)},t.defaults=__assign$5(__assign$5({},MmlNode_js_1$b.AbstractMmlLayoutNode.defaults),{scriptlevel:Attributes_js_1$1.INHERIT,displaystyle:Attributes_js_1$1.INHERIT,scriptsizemultiplier:1/Math.sqrt(2),scriptminsize:"8px",mathbackground:Attributes_js_1$1.INHERIT,mathcolor:Attributes_js_1$1.INHERIT,dir:Attributes_js_1$1.INHERIT,infixlinebreakstyle:"before"}),t}(MmlNode_js_1$b.AbstractMmlLayoutNode);mstyle.MmlMstyle=MmlMstyle;var maligngroup={},__extends$k=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$4=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$4=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$4.apply(this,arguments)};Object.defineProperty(maligngroup,"__esModule",{value:!0}),maligngroup.MmlMaligngroup=void 0;var MmlNode_js_1$a=MmlNode,Attributes_js_1=Attributes,MmlMaligngroup=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$k(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"maligngroup"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isSpacelike",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.setChildInheritedAttributes=function(t,n,r,i){t=this.addInheritedAttributes(t,this.attributes.getAllAttributes()),e.prototype.setChildInheritedAttributes.call(this,t,n,r,i)},t.defaults=__assign$4(__assign$4({},MmlNode_js_1$a.AbstractMmlLayoutNode.defaults),{groupalign:Attributes_js_1.INHERIT}),t}(MmlNode_js_1$a.AbstractMmlLayoutNode);maligngroup.MmlMaligngroup=MmlMaligngroup;var malignmark={},__extends$j=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$3=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$3=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$3.apply(this,arguments)};Object.defineProperty(malignmark,"__esModule",{value:!0}),malignmark.MmlMalignmark=void 0;var MmlNode_js_1$9=MmlNode,MmlMalignmark=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$j(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"malignmark"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"arity",{get:function(){return 0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isSpacelike",{get:function(){return!0},enumerable:!1,configurable:!0}),t.defaults=__assign$3(__assign$3({},MmlNode_js_1$9.AbstractMmlNode.defaults),{edge:"left"}),t}(MmlNode_js_1$9.AbstractMmlNode);malignmark.MmlMalignmark=MmlMalignmark;var mathchoice={},__extends$i=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$2=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$2=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$2.apply(this,arguments)};Object.defineProperty(mathchoice,"__esModule",{value:!0}),mathchoice.MathChoice=void 0;var _a$7,MmlNode_js_1$8=MmlNode,MathChoice=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$i(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"MathChoice"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"arity",{get:function(){return 4},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"notParent",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.setInheritedAttributes=function(e,t,n,r){var i=t?0:Math.max(0,Math.min(n,2))+1,o=this.childNodes[i]||this.factory.create("mrow");this.parent.replaceChild(o,this),o.setInheritedAttributes(e,t,n,r)},t.defaults=__assign$2({},MmlNode_js_1$8.AbstractMmlBaseNode.defaults),t}(MmlNode_js_1$8.AbstractMmlBaseNode);mathchoice.MathChoice=MathChoice,Object.defineProperty(MML,"__esModule",{value:!0}),MML.MML=void 0;var MmlNode_js_1$7=MmlNode,math_js_1=math,mi_js_1=mi,mn_js_1=mn,mo_js_1=mo$2,mtext_js_1=mtext,mspace_js_1=mspace,ms_js_1=ms,mrow_js_1=mrow,mfrac_js_1=mfrac,msqrt_js_1=msqrt,mroot_js_1=mroot,mstyle_js_1=mstyle,merror_js_1=merror,mpadded_js_1=mpadded,mphantom_js_1=mphantom,mfenced_js_1=mfenced,menclose_js_1=menclose,maction_js_1=maction,msubsup_js_1=msubsup,munderover_js_1=munderover,mmultiscripts_js_1=mmultiscripts,mtable_js_1=mtable,mtr_js_1=mtr,mtd_js_1=mtd,maligngroup_js_1=maligngroup,malignmark_js_1=malignmark,mglyph_js_1=mglyph,semantics_js_1=semantics,TeXAtom_js_1=TeXAtom$1,mathchoice_js_1=mathchoice;MML.MML=((_a$7={})[math_js_1.MmlMath.prototype.kind]=math_js_1.MmlMath,_a$7[mi_js_1.MmlMi.prototype.kind]=mi_js_1.MmlMi,_a$7[mn_js_1.MmlMn.prototype.kind]=mn_js_1.MmlMn,_a$7[mo_js_1.MmlMo.prototype.kind]=mo_js_1.MmlMo,_a$7[mtext_js_1.MmlMtext.prototype.kind]=mtext_js_1.MmlMtext,_a$7[mspace_js_1.MmlMspace.prototype.kind]=mspace_js_1.MmlMspace,_a$7[ms_js_1.MmlMs.prototype.kind]=ms_js_1.MmlMs,_a$7[mrow_js_1.MmlMrow.prototype.kind]=mrow_js_1.MmlMrow,_a$7[mrow_js_1.MmlInferredMrow.prototype.kind]=mrow_js_1.MmlInferredMrow,_a$7[mfrac_js_1.MmlMfrac.prototype.kind]=mfrac_js_1.MmlMfrac,_a$7[msqrt_js_1.MmlMsqrt.prototype.kind]=msqrt_js_1.MmlMsqrt,_a$7[mroot_js_1.MmlMroot.prototype.kind]=mroot_js_1.MmlMroot,_a$7[mstyle_js_1.MmlMstyle.prototype.kind]=mstyle_js_1.MmlMstyle,_a$7[merror_js_1.MmlMerror.prototype.kind]=merror_js_1.MmlMerror,_a$7[mpadded_js_1.MmlMpadded.prototype.kind]=mpadded_js_1.MmlMpadded,_a$7[mphantom_js_1.MmlMphantom.prototype.kind]=mphantom_js_1.MmlMphantom,_a$7[mfenced_js_1.MmlMfenced.prototype.kind]=mfenced_js_1.MmlMfenced,_a$7[menclose_js_1.MmlMenclose.prototype.kind]=menclose_js_1.MmlMenclose,_a$7[maction_js_1.MmlMaction.prototype.kind]=maction_js_1.MmlMaction,_a$7[msubsup_js_1.MmlMsub.prototype.kind]=msubsup_js_1.MmlMsub,_a$7[msubsup_js_1.MmlMsup.prototype.kind]=msubsup_js_1.MmlMsup,_a$7[msubsup_js_1.MmlMsubsup.prototype.kind]=msubsup_js_1.MmlMsubsup,_a$7[munderover_js_1.MmlMunder.prototype.kind]=munderover_js_1.MmlMunder,_a$7[munderover_js_1.MmlMover.prototype.kind]=munderover_js_1.MmlMover,_a$7[munderover_js_1.MmlMunderover.prototype.kind]=munderover_js_1.MmlMunderover,_a$7[mmultiscripts_js_1.MmlMmultiscripts.prototype.kind]=mmultiscripts_js_1.MmlMmultiscripts,_a$7[mmultiscripts_js_1.MmlMprescripts.prototype.kind]=mmultiscripts_js_1.MmlMprescripts,_a$7[mmultiscripts_js_1.MmlNone.prototype.kind]=mmultiscripts_js_1.MmlNone,_a$7[mtable_js_1.MmlMtable.prototype.kind]=mtable_js_1.MmlMtable,_a$7[mtr_js_1.MmlMlabeledtr.prototype.kind]=mtr_js_1.MmlMlabeledtr,_a$7[mtr_js_1.MmlMtr.prototype.kind]=mtr_js_1.MmlMtr,_a$7[mtd_js_1.MmlMtd.prototype.kind]=mtd_js_1.MmlMtd,_a$7[maligngroup_js_1.MmlMaligngroup.prototype.kind]=maligngroup_js_1.MmlMaligngroup,_a$7[malignmark_js_1.MmlMalignmark.prototype.kind]=malignmark_js_1.MmlMalignmark,_a$7[mglyph_js_1.MmlMglyph.prototype.kind]=mglyph_js_1.MmlMglyph,_a$7[semantics_js_1.MmlSemantics.prototype.kind]=semantics_js_1.MmlSemantics,_a$7[semantics_js_1.MmlAnnotation.prototype.kind]=semantics_js_1.MmlAnnotation,_a$7[semantics_js_1.MmlAnnotationXML.prototype.kind]=semantics_js_1.MmlAnnotationXML,_a$7[TeXAtom_js_1.TeXAtom.prototype.kind]=TeXAtom_js_1.TeXAtom,_a$7[mathchoice_js_1.MathChoice.prototype.kind]=mathchoice_js_1.MathChoice,_a$7[MmlNode_js_1$7.TextNode.prototype.kind]=MmlNode_js_1$7.TextNode,_a$7[MmlNode_js_1$7.XMLNode.prototype.kind]=MmlNode_js_1$7.XMLNode,_a$7);var __extends$h=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(MmlFactory$1,"__esModule",{value:!0}),MmlFactory$1.MmlFactory=void 0;var NodeFactory_js_1$1=NodeFactory,MML_js_1=MML,MmlFactory=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$h(t,e),Object.defineProperty(t.prototype,"MML",{get:function(){return this.node},enumerable:!1,configurable:!0}),t.defaultNodes=MML_js_1.MML,t}(NodeFactory_js_1$1.AbstractNodeFactory);MmlFactory$1.MmlFactory=MmlFactory;var BitField$1={},__extends$g=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__values$7=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},__read$6=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$2=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))};Object.defineProperty(BitField$1,"__esModule",{value:!0}),BitField$1.BitFieldClass=BitField$1.BitField=void 0;var BitField=function(){function e(){this.bits=0}return e.allocate=function(){for(var t,n,r=[],i=0;i<arguments.length;i++)r[i]=arguments[i];try{for(var o=__values$7(r),a=o.next();!a.done;a=o.next()){var s=a.value;if(this.has(s))throw new Error("Bit already allocated for "+s);if(this.next===e.MAXBIT)throw new Error("Maximum number of bits already allocated");this.names.set(s,this.next),this.next<<=1}}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}},e.has=function(e){return this.names.has(e)},e.prototype.set=function(e){this.bits|=this.getBit(e)},e.prototype.clear=function(e){this.bits&=~this.getBit(e)},e.prototype.isSet=function(e){return!!(this.bits&this.getBit(e))},e.prototype.reset=function(){this.bits=0},e.prototype.getBit=function(e){var t=this.constructor.names.get(e);if(!t)throw new Error("Unknown bit-field name: "+e);return t},e.MAXBIT=1<<31,e.next=1,e.names=new Map,e}();function BitFieldClass(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$g(t,e),t}(BitField);return n.allocate.apply(n,__spreadArray$2([],__read$6(e),!1)),n}BitField$1.BitField=BitField,BitField$1.BitFieldClass=BitFieldClass,function(e){var t,n=commonjsGlobal&&commonjsGlobal.__extends||(t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},t(e,n)},function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),r=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},i=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},o=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))};Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractMathDocument=e.resetAllOptions=e.resetOptions=e.RenderList=void 0;var a=Options,s=InputJax,l=OutputJax,c=MathList,T=MathItem,Q=MmlFactory$1,d=BitField$1,u=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.create=function(e){var t,n,o=new this;try{for(var a=r(Object.keys(e)),s=a.next();!s.done;s=a.next()){var l=s.value,c=i(this.action(l,e[l]),2),T=c[0],Q=c[1];Q&&o.add(T,Q)}}catch(e){t={error:e}}finally{try{s&&!s.done&&(n=a.return)&&n.call(a)}finally{if(t)throw t.error}}return o},t.action=function(e,t){var n,r,o,a,s,l,c=!0,T=t[0];if(1===t.length||"boolean"==typeof t[1])2===t.length&&(c=t[1]),s=(n=i(this.methodActions(e),2))[0],l=n[1];else if("string"==typeof t[1])if("string"==typeof t[2]){4===t.length&&(c=t[3]);var Q=i(t.slice(1),2),d=Q[0],u=Q[1];s=(r=i(this.methodActions(d,u),2))[0],l=r[1]}else 3===t.length&&(c=t[2]),s=(o=i(this.methodActions(t[1]),2))[0],l=o[1];else 4===t.length&&(c=t[3]),s=(a=i(t.slice(1),2))[0],l=a[1];return[{id:e,renderDoc:s,renderMath:l,convert:c},T]},t.methodActions=function(e,t){return void 0===t&&(t=e),[function(t){return e&&t[e](),!1},function(e,n){return t&&e[t](n),!1}]},t.prototype.renderDoc=function(e,t){var n,i;void 0===t&&(t=T.STATE.UNPROCESSED);try{for(var o=r(this.items),a=o.next();!a.done;a=o.next()){var s=a.value;if(s.priority>=t&&s.item.renderDoc(e))return}}catch(e){n={error:e}}finally{try{a&&!a.done&&(i=o.return)&&i.call(o)}finally{if(n)throw n.error}}},t.prototype.renderMath=function(e,t,n){var i,o;void 0===n&&(n=T.STATE.UNPROCESSED);try{for(var a=r(this.items),s=a.next();!s.done;s=a.next()){var l=s.value;if(l.priority>=n&&l.item.renderMath(e,t))return}}catch(e){i={error:e}}finally{try{s&&!s.done&&(o=a.return)&&o.call(a)}finally{if(i)throw i.error}}},t.prototype.renderConvert=function(e,t,n){var i,o;void 0===n&&(n=T.STATE.LAST);try{for(var a=r(this.items),s=a.next();!s.done;s=a.next()){var l=s.value;if(l.priority>n)return;if(l.item.convert&&l.item.renderMath(e,t))return}}catch(e){i={error:e}}finally{try{s&&!s.done&&(o=a.return)&&o.call(a)}finally{if(i)throw i.error}}},t.prototype.findID=function(e){var t,n;try{for(var i=r(this.items),o=i.next();!o.done;o=i.next()){var a=o.value;if(a.item.id===e)return a.item}}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}return null},t}(PrioritizedList$1.PrioritizedList);e.RenderList=u,e.resetOptions={all:!1,processed:!1,inputJax:null,outputJax:null},e.resetAllOptions={all:!0,processed:!0,inputJax:[],outputJax:[]};var p=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.compile=function(e){return null},t}(s.AbstractInputJax),h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.typeset=function(e,t){return null},t.prototype.escaped=function(e,t){return null},t}(l.AbstractOutputJax),m=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t}(c.AbstractMathList),f=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t}(T.AbstractMathItem),g=function(){function t(e,n,r){var i=this,o=this.constructor;this.document=e,this.options=(0,a.userOptions)((0,a.defaultOptions)({},o.OPTIONS),r),this.math=new(this.options.MathList||m),this.renderActions=u.create(this.options.renderActions),this.processed=new t.ProcessBits,this.outputJax=this.options.OutputJax||new h;var s=this.options.InputJax||[new p];Array.isArray(s)||(s=[s]),this.inputJax=s,this.adaptor=n,this.outputJax.setAdaptor(n),this.inputJax.map((function(e){return e.setAdaptor(n)})),this.mmlFactory=this.options.MmlFactory||new Q.MmlFactory,this.inputJax.map((function(e){return e.setMmlFactory(i.mmlFactory)})),this.outputJax.initialize(),this.inputJax.map((function(e){return e.initialize()}))}return Object.defineProperty(t.prototype,"kind",{get:function(){return this.constructor.KIND},enumerable:!1,configurable:!0}),t.prototype.addRenderAction=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=i(u.action(e,t),2),o=r[0],a=r[1];this.renderActions.add(o,a)},t.prototype.removeRenderAction=function(e){var t=this.renderActions.findID(e);t&&this.renderActions.remove(t)},t.prototype.render=function(){return this.renderActions.renderDoc(this),this},t.prototype.rerender=function(e){return void 0===e&&(e=T.STATE.RERENDER),this.state(e-1),this.render(),this},t.prototype.convert=function(e,t){void 0===t&&(t={});var n=(0,a.userOptions)({format:this.inputJax[0].name,display:!0,end:T.STATE.LAST,em:16,ex:8,containerWidth:null,lineWidth:1e6,scale:1,family:""},t),r=n.format,i=n.display,o=n.end,s=n.ex,l=n.em,c=n.containerWidth,Q=n.lineWidth,d=n.scale,u=n.family;null===c&&(c=80*s);var p=this.inputJax.reduce((function(e,t){return t.name===r?t:e}),null),h=new this.options.MathItem(e,p,i);return h.start.node=this.adaptor.body(this.document),h.setMetrics(l,s,c,Q,d),this.outputJax.options.mtextInheritFont&&(h.outputData.mtextFamily=u),this.outputJax.options.merrorInheritFont&&(h.outputData.merrorFamily=u),h.convert(this,o),h.typesetRoot||h.root},t.prototype.findMath=function(e){return this.processed.set("findMath"),this},t.prototype.compile=function(){var e,t,n,i;if(!this.processed.isSet("compile")){var o=[];try{for(var a=r(this.math),s=a.next();!s.done;s=a.next()){var l=s.value;this.compileMath(l),void 0!==l.inputData.recompile&&o.push(l)}}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=a.return)&&t.call(a)}finally{if(e)throw e.error}}try{for(var c=r(o),T=c.next();!T.done;T=c.next()){var Q=(l=T.value).inputData.recompile;l.state(Q.state),l.inputData.recompile=Q,this.compileMath(l)}}catch(e){n={error:e}}finally{try{T&&!T.done&&(i=c.return)&&i.call(c)}finally{if(n)throw n.error}}this.processed.set("compile")}return this},t.prototype.compileMath=function(e){try{e.compile(this)}catch(t){if(t.retry||t.restart)throw t;this.options.compileError(this,e,t),e.inputData.error=t}},t.prototype.compileError=function(e,t){e.root=this.mmlFactory.create("math",null,[this.mmlFactory.create("merror",{"data-mjx-error":t.message,title:t.message},[this.mmlFactory.create("mtext",null,[this.mmlFactory.create("text").setText("Math input error")])])]),e.display&&e.root.attributes.set("display","block"),e.inputData.error=t.message},t.prototype.typeset=function(){var e,t;if(!this.processed.isSet("typeset")){try{for(var n=r(this.math),i=n.next();!i.done;i=n.next()){var o=i.value;try{o.typeset(this)}catch(e){if(e.retry||e.restart)throw e;this.options.typesetError(this,o,e),o.outputData.error=e}}}catch(t){e={error:t}}finally{try{i&&!i.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}this.processed.set("typeset")}return this},t.prototype.typesetError=function(e,t){e.typesetRoot=this.adaptor.node("mjx-container",{class:"MathJax mjx-output-error",jax:this.outputJax.name},[this.adaptor.node("span",{"data-mjx-error":t.message,title:t.message,style:{color:"red","background-color":"yellow","line-height":"normal"}},[this.adaptor.text("Math output error")])]),e.display&&this.adaptor.setAttributes(e.typesetRoot,{style:{display:"block",margin:"1em 0","text-align":"center"}}),e.outputData.error=t.message},t.prototype.getMetrics=function(){return this.processed.isSet("getMetrics")||(this.outputJax.getMetrics(this),this.processed.set("getMetrics")),this},t.prototype.updateDocument=function(){var e,t;if(!this.processed.isSet("updateDocument")){try{for(var n=r(this.math.reversed()),i=n.next();!i.done;i=n.next())i.value.updateDocument(this)}catch(t){e={error:t}}finally{try{i&&!i.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}this.processed.set("updateDocument")}return this},t.prototype.removeFromDocument=function(e){return this},t.prototype.state=function(e,t){var n,i;void 0===t&&(t=!1);try{for(var o=r(this.math),a=o.next();!a.done;a=o.next())a.value.state(e,t)}catch(e){n={error:e}}finally{try{a&&!a.done&&(i=o.return)&&i.call(o)}finally{if(n)throw n.error}}return e<T.STATE.INSERTED&&this.processed.clear("updateDocument"),e<T.STATE.TYPESET&&(this.processed.clear("typeset"),this.processed.clear("getMetrics")),e<T.STATE.COMPILED&&this.processed.clear("compile"),this},t.prototype.reset=function(t){var n;return void 0===t&&(t={processed:!0}),(t=(0,a.userOptions)(Object.assign({},e.resetOptions),t)).all&&Object.assign(t,e.resetAllOptions),t.processed&&this.processed.reset(),t.inputJax&&this.inputJax.forEach((function(e){return e.reset.apply(e,o([],i(t.inputJax),!1))})),t.outputJax&&(n=this.outputJax).reset.apply(n,o([],i(t.outputJax),!1)),this},t.prototype.clear=function(){return this.reset(),this.math.clear(),this},t.prototype.concat=function(e){return this.math.merge(e),this},t.prototype.clearMathItemsWithin=function(e){var t,n=this.getMathItemsWithin(e);return(t=this.math).remove.apply(t,o([],i(n),!1)),n},t.prototype.getMathItemsWithin=function(e){var t,n,i,o;Array.isArray(e)||(e=[e]);var a=this.adaptor,s=[],l=a.getElements(e,this.document);try{e:for(var c=r(this.math),T=c.next();!T.done;T=c.next()){var Q=T.value;try{for(var d=(i=void 0,r(l)),u=d.next();!u.done;u=d.next()){var p=u.value;if(Q.start.node&&a.contains(p,Q.start.node)){s.push(Q);continue e}}}catch(e){i={error:e}}finally{try{u&&!u.done&&(o=d.return)&&o.call(d)}finally{if(i)throw i.error}}}}catch(e){t={error:e}}finally{try{T&&!T.done&&(n=c.return)&&n.call(c)}finally{if(t)throw t.error}}return s},t.KIND="MathDocument",t.OPTIONS={OutputJax:null,InputJax:null,MmlFactory:null,MathList:m,MathItem:f,compileError:function(e,t,n){e.compileError(t,n)},typesetError:function(e,t,n){e.typesetError(t,n)},renderActions:(0,a.expandable)({find:[T.STATE.FINDMATH,"findMath","",!1],compile:[T.STATE.COMPILED],metrics:[T.STATE.METRICS,"getMetrics","",!1],typeset:[T.STATE.TYPESET],update:[T.STATE.INSERTED,"updateDocument",!1]})},t.ProcessBits=(0,d.BitFieldClass)("findMath","compile","getMetrics","typeset","updateDocument"),t}();e.AbstractMathDocument=g}(MathDocument);var __extends$f=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(Handler,"__esModule",{value:!0}),Handler.AbstractHandler=void 0;var MathDocument_js_1$1=MathDocument,DefaultMathDocument=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$f(t,e),t}(MathDocument_js_1$1.AbstractMathDocument),AbstractHandler=function(){function e(e,t){void 0===t&&(t=5),this.documentClass=DefaultMathDocument,this.adaptor=e,this.priority=t}return Object.defineProperty(e.prototype,"name",{get:function(){return this.constructor.NAME},enumerable:!1,configurable:!0}),e.prototype.handlesDocument=function(e){return!1},e.prototype.create=function(e,t){return new this.documentClass(e,this.adaptor,t)},e.NAME="generic",e}();Handler.AbstractHandler=AbstractHandler;var HTMLDocument$1={},HTMLMathItem$1={},__extends$e=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(HTMLMathItem$1,"__esModule",{value:!0}),HTMLMathItem$1.HTMLMathItem=void 0;var MathItem_js_1$1=MathItem,HTMLMathItem=function(e){function t(t,n,r,i,o){return void 0===r&&(r=!0),void 0===i&&(i={node:null,n:0,delim:""}),void 0===o&&(o={node:null,n:0,delim:""}),e.call(this,t,n,r,i,o)||this}return __extends$e(t,e),Object.defineProperty(t.prototype,"adaptor",{get:function(){return this.inputJax.adaptor},enumerable:!1,configurable:!0}),t.prototype.updateDocument=function(e){if(this.state()<MathItem_js_1$1.STATE.INSERTED){if(this.inputJax.processStrings){var t=this.start.node;if(t===this.end.node)this.end.n&&this.end.n<this.adaptor.value(this.end.node).length&&this.adaptor.split(this.end.node,this.end.n),this.start.n&&(t=this.adaptor.split(this.start.node,this.start.n)),this.adaptor.replace(this.typesetRoot,t);else{for(this.start.n&&(t=this.adaptor.split(t,this.start.n));t!==this.end.node;){var n=this.adaptor.next(t);this.adaptor.remove(t),t=n}this.adaptor.insert(this.typesetRoot,t),this.end.n<this.adaptor.value(t).length&&this.adaptor.split(t,this.end.n),this.adaptor.remove(t)}}else this.adaptor.replace(this.typesetRoot,this.start.node);this.start.node=this.end.node=this.typesetRoot,this.start.n=this.end.n=0,this.state(MathItem_js_1$1.STATE.INSERTED)}},t.prototype.updateStyleSheet=function(e){e.addStyleSheet()},t.prototype.removeFromDocument=function(e){if(void 0===e&&(e=!1),this.state()>=MathItem_js_1$1.STATE.TYPESET){var t=this.adaptor,n=this.start.node,r=t.text("");if(e){var i=this.start.delim+this.math+this.end.delim;if(this.inputJax.processStrings)r=t.text(i);else{var o=t.parse(i,"text/html");r=t.firstChild(t.body(o))}}t.parent(n)&&t.replace(r,n),this.start.node=this.end.node=r,this.start.n=this.end.n=0}},t}(MathItem_js_1$1.AbstractMathItem);HTMLMathItem$1.HTMLMathItem=HTMLMathItem;var HTMLMathList$1={},__extends$d=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(HTMLMathList$1,"__esModule",{value:!0}),HTMLMathList$1.HTMLMathList=void 0;var MathList_js_1=MathList,HTMLMathList=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$d(t,e),t}(MathList_js_1.AbstractMathList);HTMLMathList$1.HTMLMathList=HTMLMathList;var HTMLDomStrings$1={},__read$5=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a};Object.defineProperty(HTMLDomStrings$1,"__esModule",{value:!0}),HTMLDomStrings$1.HTMLDomStrings=void 0;var Options_js_1$2=Options,HTMLDomStrings=function(){function e(e){void 0===e&&(e=null);var t=this.constructor;this.options=(0,Options_js_1$2.userOptions)((0,Options_js_1$2.defaultOptions)({},t.OPTIONS),e),this.init(),this.getPatterns()}return e.prototype.init=function(){this.strings=[],this.string="",this.snodes=[],this.nodes=[],this.stack=[]},e.prototype.getPatterns=function(){var e=(0,Options_js_1$2.makeArray)(this.options.skipHtmlTags),t=(0,Options_js_1$2.makeArray)(this.options.ignoreHtmlClass),n=(0,Options_js_1$2.makeArray)(this.options.processHtmlClass);this.skipHtmlTags=new RegExp("^(?:"+e.join("|")+")$","i"),this.ignoreHtmlClass=new RegExp("(?:^| )(?:"+t.join("|")+")(?: |$)"),this.processHtmlClass=new RegExp("(?:^| )(?:"+n+")(?: |$)")},e.prototype.pushString=function(){this.string.match(/\S/)&&(this.strings.push(this.string),this.nodes.push(this.snodes)),this.string="",this.snodes=[]},e.prototype.extendString=function(e,t){this.snodes.push([e,t.length]),this.string+=t},e.prototype.handleText=function(e,t){return t||this.extendString(e,this.adaptor.value(e)),this.adaptor.next(e)},e.prototype.handleTag=function(e,t){if(!t){var n=this.options.includeHtmlTags[this.adaptor.kind(e)];this.extendString(e,n)}return this.adaptor.next(e)},e.prototype.handleContainer=function(e,t){this.pushString();var n=this.adaptor.getAttribute(e,"class")||"",r=this.adaptor.kind(e)||"",i=this.processHtmlClass.exec(n),o=e;return!this.adaptor.firstChild(e)||this.adaptor.getAttribute(e,"data-MJX")||!i&&this.skipHtmlTags.exec(r)?o=this.adaptor.next(e):(this.adaptor.next(e)&&this.stack.push([this.adaptor.next(e),t]),o=this.adaptor.firstChild(e),t=(t||this.ignoreHtmlClass.exec(n))&&!i),[o,t]},e.prototype.handleOther=function(e,t){return this.pushString(),this.adaptor.next(e)},e.prototype.find=function(e){var t,n;this.init();for(var r=this.adaptor.next(e),i=!1,o=this.options.includeHtmlTags;e&&e!==r;){var a=this.adaptor.kind(e);"#text"===a?e=this.handleText(e,i):o.hasOwnProperty(a)?e=this.handleTag(e,i):a?(e=(t=__read$5(this.handleContainer(e,i),2))[0],i=t[1]):e=this.handleOther(e,i),!e&&this.stack.length&&(this.pushString(),e=(n=__read$5(this.stack.pop(),2))[0],i=n[1])}this.pushString();var s=[this.strings,this.nodes];return this.init(),s},e.OPTIONS={skipHtmlTags:["script","noscript","style","textarea","pre","code","annotation","annotation-xml"],includeHtmlTags:{br:"\n",wbr:"","#comment":""},ignoreHtmlClass:"mathjax_ignore",processHtmlClass:"mathjax_process"},e}();HTMLDomStrings$1.HTMLDomStrings=HTMLDomStrings;var __extends$c=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign$1=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign$1=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign$1.apply(this,arguments)},__read$4=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__values$6=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(HTMLDocument$1,"__esModule",{value:!0}),HTMLDocument$1.HTMLDocument=void 0;var MathDocument_js_1=MathDocument,Options_js_1$1=Options,HTMLMathItem_js_1=HTMLMathItem$1,HTMLMathList_js_1=HTMLMathList$1,HTMLDomStrings_js_1=HTMLDomStrings$1,MathItem_js_1=MathItem,HTMLDocument=function(e){function t(t,n,r){var i=this,o=__read$4((0,Options_js_1$1.separateOptions)(r,HTMLDomStrings_js_1.HTMLDomStrings.OPTIONS),2),a=o[0],s=o[1];return(i=e.call(this,t,n,a)||this).domStrings=i.options.DomStrings||new HTMLDomStrings_js_1.HTMLDomStrings(s),i.domStrings.adaptor=n,i.styles=[],i}return __extends$c(t,e),t.prototype.findPosition=function(e,t,n,r){var i,o,a=this.adaptor;try{for(var s=__values$6(r[e]),l=s.next();!l.done;l=s.next()){var c=l.value,T=__read$4(c,2),Q=T[0],d=T[1];if(t<=d&&"#text"===a.kind(Q))return{node:Q,n:Math.max(t,0),delim:n};t-=d}}catch(e){i={error:e}}finally{try{l&&!l.done&&(o=s.return)&&o.call(s)}finally{if(i)throw i.error}}return{node:null,n:0,delim:n}},t.prototype.mathItem=function(e,t,n){var r=e.math,i=this.findPosition(e.n,e.start.n,e.open,n),o=this.findPosition(e.n,e.end.n,e.close,n);return new this.options.MathItem(r,t,e.display,i,o)},t.prototype.findMath=function(e){var t,n,r,i,o,a,s,l,c;if(!this.processed.isSet("findMath")){this.adaptor.document=this.document,e=(0,Options_js_1$1.userOptions)({elements:this.options.elements||[this.adaptor.body(this.document)]},e);try{for(var T=__values$6(this.adaptor.getElements(e.elements,this.document)),Q=T.next();!Q.done;Q=T.next()){var d=Q.value,u=__read$4([null,null],2),p=u[0],h=u[1];try{for(var m=(r=void 0,__values$6(this.inputJax)),f=m.next();!f.done;f=m.next()){var g=f.value,b=new this.options.MathList;if(g.processStrings){null===p&&(p=(o=__read$4(this.domStrings.find(d),2))[0],h=o[1]);try{for(var y=(a=void 0,__values$6(g.findMath(p))),L=y.next();!L.done;L=y.next()){var v=L.value;b.push(this.mathItem(v,g,h))}}catch(e){a={error:e}}finally{try{L&&!L.done&&(s=y.return)&&s.call(y)}finally{if(a)throw a.error}}}else try{for(var w=(l=void 0,__values$6(g.findMath(d))),E=w.next();!E.done;E=w.next()){v=E.value;var _=new this.options.MathItem(v.math,g,v.display,v.start,v.end);b.push(_)}}catch(e){l={error:e}}finally{try{E&&!E.done&&(c=w.return)&&c.call(w)}finally{if(l)throw l.error}}this.math.merge(b)}}catch(e){r={error:e}}finally{try{f&&!f.done&&(i=m.return)&&i.call(m)}finally{if(r)throw r.error}}}}catch(e){t={error:e}}finally{try{Q&&!Q.done&&(n=T.return)&&n.call(T)}finally{if(t)throw t.error}}this.processed.set("findMath")}return this},t.prototype.updateDocument=function(){return this.processed.isSet("updateDocument")||(this.addPageElements(),this.addStyleSheet(),e.prototype.updateDocument.call(this),this.processed.set("updateDocument")),this},t.prototype.addPageElements=function(){var e=this.adaptor.body(this.document),t=this.documentPageElements();t&&this.adaptor.append(e,t)},t.prototype.addStyleSheet=function(){var e=this.documentStyleSheet(),t=this.adaptor;if(e&&!t.parent(e)){var n=t.head(this.document),r=this.findSheet(n,t.getAttribute(e,"id"));r?t.replace(e,r):t.append(n,e)}},t.prototype.findSheet=function(e,t){var n,r;if(t)try{for(var i=__values$6(this.adaptor.tags(e,"style")),o=i.next();!o.done;o=i.next()){var a=o.value;if(this.adaptor.getAttribute(a,"id")===t)return a}}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}return null},t.prototype.removeFromDocument=function(e){var t,n;if(void 0===e&&(e=!1),this.processed.isSet("updateDocument"))try{for(var r=__values$6(this.math),i=r.next();!i.done;i=r.next()){var o=i.value;o.state()>=MathItem_js_1.STATE.INSERTED&&o.state(MathItem_js_1.STATE.TYPESET,e)}}catch(e){t={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}return this.processed.clear("updateDocument"),this},t.prototype.documentStyleSheet=function(){return this.outputJax.styleSheet(this)},t.prototype.documentPageElements=function(){return this.outputJax.pageElements(this)},t.prototype.addStyles=function(e){this.styles.push(e)},t.prototype.getStyles=function(){return this.styles},t.KIND="HTML",t.OPTIONS=__assign$1(__assign$1({},MathDocument_js_1.AbstractMathDocument.OPTIONS),{renderActions:(0,Options_js_1$1.expandable)(__assign$1(__assign$1({},MathDocument_js_1.AbstractMathDocument.OPTIONS.renderActions),{styles:[MathItem_js_1.STATE.INSERTED+1,"","updateStyleSheet",!1]})),MathList:HTMLMathList_js_1.HTMLMathList,MathItem:HTMLMathItem_js_1.HTMLMathItem,DomStrings:null}),t}(MathDocument_js_1.AbstractMathDocument);HTMLDocument$1.HTMLDocument=HTMLDocument;var __extends$b=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(HTMLHandler$1,"__esModule",{value:!0}),HTMLHandler$1.HTMLHandler=void 0;var Handler_js_1=Handler,HTMLDocument_js_1=HTMLDocument$1,HTMLHandler=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.documentClass=HTMLDocument_js_1.HTMLDocument,t}return __extends$b(t,e),t.prototype.handlesDocument=function(e){var t=this.adaptor;if("string"==typeof e)try{e=t.parse(e,"text/html")}catch(e){}return e instanceof t.window.Document||e instanceof t.window.HTMLElement||e instanceof t.window.DocumentFragment},t.prototype.create=function(t,n){var r=this.adaptor;if("string"==typeof t)t=r.parse(t,"text/html");else if(t instanceof r.window.HTMLElement||t instanceof r.window.DocumentFragment){var i=t;t=r.parse("","text/html"),r.append(r.body(t),i)}return e.prototype.create.call(this,t,n)},t}(Handler_js_1.AbstractHandler);HTMLHandler$1.HTMLHandler=HTMLHandler,Object.defineProperty(html$1,"__esModule",{value:!0});var RegisterHTMLHandler_1=html$1.RegisterHTMLHandler=void 0,mathjax_js_1=mathjax,HTMLHandler_js_1=HTMLHandler$1;function RegisterHTMLHandler(e){var t=new HTMLHandler_js_1.HTMLHandler(e);return mathjax_js_1.mathjax.handlers.register(t),t}RegisterHTMLHandler_1=html$1.RegisterHTMLHandler=RegisterHTMLHandler;var AllPackages={},ActionConfiguration={};!function(e){var t=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.ActionConfiguration=e.ActionMethods=void 0;var n=Configuration,r=t(requireTexParser()),i=SymbolMap,o=t(BaseMethods$1);e.ActionMethods={},e.ActionMethods.Macro=o.default.Macro,e.ActionMethods.Toggle=function(e,t){for(var n,i=[];"\\endtoggle"!==(n=e.GetArgument(t));)i.push(new r.default(n,e.stack.env,e.configuration).mml());e.Push(e.create("node","maction",i,{actiontype:"toggle"}))},e.ActionMethods.Mathtip=function(e,t){var n=e.ParseArg(t),r=e.ParseArg(t);e.Push(e.create("node","maction",[n,r],{actiontype:"tooltip"}))},new i.CommandMap("action-macros",{toggle:"Toggle",mathtip:"Mathtip",texttip:["Macro","\\mathtip{#1}{\\text{#2}}",2]},e.ActionMethods),e.ActionConfiguration=n.Configuration.create("action",{handler:{macro:["action-macros"]}})}(ActionConfiguration);var AmsConfiguration={},AmsItems={},__extends$a=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__assign=commonjsGlobal&&commonjsGlobal.__assign||function(){return __assign=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},__assign.apply(this,arguments)},__importDefault$u=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(AmsItems,"__esModule",{value:!0}),AmsItems.FlalignItem=AmsItems.MultlineItem=void 0;var BaseItems_js_1$3=BaseItems,ParseUtil_js_1$9=__importDefault$u(requireParseUtil()),NodeUtil_js_1$7=__importDefault$u(NodeUtil$1),TexError_js_1$c=__importDefault$u(TexError$1),TexConstants_js_1$7=TexConstants,MultlineItem=function(e){function t(t){for(var n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];var i=e.call(this,t)||this;return i.factory.configuration.tags.start("multline",!0,n[0]),i}return __extends$a(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"multline"},enumerable:!1,configurable:!0}),t.prototype.EndEntry=function(){this.table.length&&ParseUtil_js_1$9.default.fixInitialMO(this.factory.configuration,this.nodes);var e=this.getProperty("shove"),t=this.create("node","mtd",this.nodes,e?{columnalign:e}:{});this.setProperty("shove",null),this.row.push(t),this.Clear()},t.prototype.EndRow=function(){if(1!==this.row.length)throw new TexError_js_1$c.default("MultlineRowsOneCol","The rows within the %1 environment must have exactly one column","multline");var e=this.create("node","mtr",this.row);this.table.push(e),this.row=[]},t.prototype.EndTable=function(){if(e.prototype.EndTable.call(this),this.table.length){var t=this.table.length-1,n=-1;NodeUtil_js_1$7.default.getAttribute(NodeUtil_js_1$7.default.getChildren(this.table[0])[0],"columnalign")||NodeUtil_js_1$7.default.setAttribute(NodeUtil_js_1$7.default.getChildren(this.table[0])[0],"columnalign",TexConstants_js_1$7.TexConstant.Align.LEFT),NodeUtil_js_1$7.default.getAttribute(NodeUtil_js_1$7.default.getChildren(this.table[t])[0],"columnalign")||NodeUtil_js_1$7.default.setAttribute(NodeUtil_js_1$7.default.getChildren(this.table[t])[0],"columnalign",TexConstants_js_1$7.TexConstant.Align.RIGHT);var r=this.factory.configuration.tags.getTag();if(r){n=this.arraydef.side===TexConstants_js_1$7.TexConstant.Align.LEFT?0:this.table.length-1;var i=this.table[n],o=this.create("node","mlabeledtr",[r].concat(NodeUtil_js_1$7.default.getChildren(i)));NodeUtil_js_1$7.default.copyAttributes(i,o),this.table[n]=o}}this.factory.configuration.tags.end()},t}(BaseItems_js_1$3.ArrayItem);AmsItems.MultlineItem=MultlineItem;var FlalignItem=function(e){function t(t,n,r,i,o){var a=e.call(this,t)||this;return a.name=n,a.numbered=r,a.padded=i,a.center=o,a.factory.configuration.tags.start(n,r,r),a}return __extends$a(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"flalign"},enumerable:!1,configurable:!0}),t.prototype.EndEntry=function(){e.prototype.EndEntry.call(this);var t=this.getProperty("xalignat");if(t&&this.row.length>t)throw new TexError_js_1$c.default("XalignOverflow","Extra %1 in row of %2","&",this.name)},t.prototype.EndRow=function(){for(var t,n=this.row,r=this.getProperty("xalignat");n.length<r;)n.push(this.create("node","mtd"));for(this.row=[],this.padded&&this.row.push(this.create("node","mtd"));t=n.shift();)this.row.push(t),(t=n.shift())&&this.row.push(t),(n.length||this.padded)&&this.row.push(this.create("node","mtd"));this.row.length>this.maxrow&&(this.maxrow=this.row.length),e.prototype.EndRow.call(this);var i=this.table[this.table.length-1];if(this.getProperty("zeroWidthLabel")&&i.isKind("mlabeledtr")){var o=NodeUtil_js_1$7.default.getChildren(i)[0],a=this.factory.configuration.options.tagSide,s=__assign({width:0},"right"===a?{lspace:"-1width"}:{}),l=this.create("node","mpadded",NodeUtil_js_1$7.default.getChildren(o),s);o.setChildren([l])}},t.prototype.EndTable=function(){e.prototype.EndTable.call(this),this.center&&this.maxrow<=2&&(delete this.arraydef.width,delete this.global.indentalign)},t}(BaseItems_js_1$3.EqnArrayItem);AmsItems.FlalignItem=FlalignItem;var AmsMethods={};!function(e){var t=commonjsGlobal&&commonjsGlobal.__assign||function(){return t=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},t.apply(this,arguments)},n=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},r=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.NEW_OPS=e.AmsMethods=void 0;var i=r(requireParseUtil()),o=r(ParseMethods$1),a=r(NodeUtil$1),s=TexConstants,l=r(requireTexParser()),c=r(TexError$1),T=_Symbol,Q=r(BaseMethods$1),d=MmlNode;function u(e){if(!e||e.isInferred&&0===e.childNodes.length)return[null,null];if(e.isKind("msubsup")&&p(e))return[e,null];var t=a.default.getChildAt(e,0);return e.isInferred&&t&&p(t)?(e.childNodes.splice(0,1),[t,e]):[null,e]}function p(e){var t=e.childNodes[0];return t&&t.isKind("mi")&&""===t.getText()}e.AmsMethods={},e.AmsMethods.AmsEqnArray=function(e,t,n,r,o,a,s){var l=e.GetBrackets("\\begin{"+t.getName()+"}"),c=Q.default.EqnArray(e,t,n,r,o,a,s);return i.default.setArrayAlign(c,l)},e.AmsMethods.AlignAt=function(t,n,r,o){var a,s,l=n.getName(),T="",Q=[];if(o||(s=t.GetBrackets("\\begin{"+l+"}")),(a=t.GetArgument("\\begin{"+l+"}")).match(/[^0-9]/))throw new c.default("PositiveIntegerArg","Argument to %1 must me a positive integer","\\begin{"+l+"}");for(var d=parseInt(a,10);d>0;)T+="rl",Q.push("0em 0em"),d--;var u=Q.join(" ");if(o)return e.AmsMethods.EqnArray(t,n,r,o,T,u);var p=e.AmsMethods.EqnArray(t,n,r,o,T,u);return i.default.setArrayAlign(p,s)},e.AmsMethods.Multline=function(e,t,n){e.Push(t),i.default.checkEqnEnv(e);var r=e.itemFactory.create("multline",n,e.stack);return r.arraydef={displaystyle:!0,rowspacing:".5em",columnspacing:"100%",width:e.options.ams.multlineWidth,side:e.options.tagSide,minlabelspacing:e.options.tagIndent,framespacing:e.options.ams.multlineIndent+" 0",frame:"","data-width-includes-label":!0},r},e.AmsMethods.XalignAt=function(t,n,r,i){var o=t.GetArgument("\\begin{"+n.getName()+"}");if(o.match(/[^0-9]/))throw new c.default("PositiveIntegerArg","Argument to %1 must me a positive integer","\\begin{"+n.getName()+"}");var a=i?"crl":"rlc",s=i?"fit auto auto":"auto auto fit",l=e.AmsMethods.FlalignArray(t,n,r,i,!1,a,s,!0);return l.setProperty("xalignat",2*parseInt(o)),l},e.AmsMethods.FlalignArray=function(e,t,n,r,o,a,s,l){void 0===l&&(l=!1),e.Push(t),i.default.checkEqnEnv(e),a=a.split("").join(" ").replace(/r/g,"right").replace(/l/g,"left").replace(/c/g,"center");var c=e.itemFactory.create("flalign",t.getName(),n,r,o,e.stack);return c.arraydef={width:"100%",displaystyle:!0,columnalign:a,columnspacing:"0em",columnwidth:s,rowspacing:"3pt",side:e.options.tagSide,minlabelspacing:l?"0":e.options.tagIndent,"data-width-includes-label":!0},c.setProperty("zeroWidthLabel",l),c},e.NEW_OPS="ams-declare-ops",e.AmsMethods.HandleDeclareOp=function(t,n){var r=t.GetStar()?"*":"",o=i.default.trimSpaces(t.GetArgument(n));"\\"===o.charAt(0)&&(o=o.substr(1));var a=t.GetArgument(n);t.configuration.handlers.retrieve(e.NEW_OPS).add(o,new T.Macro(o,e.AmsMethods.Macro,["\\operatorname".concat(r,"{").concat(a,"}")]))},e.AmsMethods.HandleOperatorName=function(e,n){var r=e.GetStar(),o=i.default.trimSpaces(e.GetArgument(n)),c=new l.default(o,t(t({},e.stack.env),{font:s.TexConstant.Variant.NORMAL,multiLetterIdentifiers:/^[-*a-z]+/i,operatorLetters:!0}),e.configuration).mml();if(c.isKind("mi")||(c=e.create("node","TeXAtom",[c])),a.default.setProperties(c,{movesupsub:r,movablelimits:!0,texClass:d.TEXCLASS.OP}),!r){var T=e.GetNext(),Q=e.i;"\\"===T&&++e.i&&"limits"!==e.GetCS()&&(e.i=Q)}e.Push(c)},e.AmsMethods.SideSet=function(e,t){var r=n(u(e.ParseArg(t)),2),o=r[0],s=r[1],l=n(u(e.ParseArg(t)),2),c=l[0],T=l[1],Q=e.ParseArg(t),p=Q;o&&(s?o.replaceChild(e.create("node","mphantom",[e.create("node","mpadded",[i.default.copyNode(Q,e)],{width:0})]),a.default.getChildAt(o,0)):(p=e.create("node","mmultiscripts",[Q]),c&&a.default.appendChildren(p,[a.default.getChildAt(c,1)||e.create("node","none"),a.default.getChildAt(c,2)||e.create("node","none")]),a.default.setProperty(p,"scriptalign","left"),a.default.appendChildren(p,[e.create("node","mprescripts"),a.default.getChildAt(o,1)||e.create("node","none"),a.default.getChildAt(o,2)||e.create("node","none")]))),c&&p===Q&&(c.replaceChild(Q,a.default.getChildAt(c,0)),p=c);var h=e.create("node","TeXAtom",[],{texClass:d.TEXCLASS.OP,movesupsub:!0,movablelimits:!0});s&&(o&&h.appendChild(o),h.appendChild(s)),h.appendChild(p),T&&h.appendChild(T),e.Push(h)},e.AmsMethods.operatorLetter=function(e,t){return!!e.stack.env.operatorLetters&&o.default.variable(e,t)},e.AmsMethods.MultiIntegral=function(e,t,n){var r=e.GetNext();if("\\"===r){var i=e.i;r=e.GetArgument(t),e.i=i,"\\limits"===r&&(n="\\idotsint"===t?"\\!\\!\\mathop{\\,\\,"+n+"}":"\\!\\!\\!\\mathop{\\,\\,\\,"+n+"}")}e.string=n+" "+e.string.slice(e.i),e.i=0},e.AmsMethods.xArrow=function(e,t,n,r,o){var s={width:"+"+i.default.Em((r+o)/18),lspace:i.default.Em(r/18)},c=e.GetBrackets(t),T=e.ParseArg(t),Q=e.create("node","mspace",[],{depth:".25em"}),u=e.create("token","mo",{stretchy:!0,texClass:d.TEXCLASS.REL},String.fromCodePoint(n));u=e.create("node","mstyle",[u],{scriptlevel:0});var p=e.create("node","munderover",[u]),h=e.create("node","mpadded",[T,Q],s);if(a.default.setAttribute(h,"voffset","-.2em"),a.default.setAttribute(h,"height","-.2em"),a.default.setChild(p,p.over,h),c){var m=new l.default(c,e.stack.env,e.configuration).mml(),f=e.create("node","mspace",[],{height:".75em"});h=e.create("node","mpadded",[m,f],s),a.default.setAttribute(h,"voffset",".15em"),a.default.setAttribute(h,"depth","-.15em"),a.default.setChild(p,p.under,h)}a.default.setProperty(p,"subsupOK",!0),e.Push(p)},e.AmsMethods.HandleShove=function(e,t,n){var r=e.stack.Top();if("multline"!==r.kind)throw new c.default("CommandOnlyAllowedInEnv","%1 only allowed in %2 environment",e.currentCS,"multline");if(r.Size())throw new c.default("CommandAtTheBeginingOfLine","%1 must come at the beginning of the line",e.currentCS);r.setProperty("shove",n)},e.AmsMethods.CFrac=function(e,t){var n=i.default.trimSpaces(e.GetBrackets(t,"")),r=e.GetArgument(t),o=e.GetArgument(t),T={l:s.TexConstant.Align.LEFT,r:s.TexConstant.Align.RIGHT,"":""},Q=new l.default("\\strut\\textstyle{"+r+"}",e.stack.env,e.configuration).mml(),d=new l.default("\\strut\\textstyle{"+o+"}",e.stack.env,e.configuration).mml(),u=e.create("node","mfrac",[Q,d]);if(null==(n=T[n]))throw new c.default("IllegalAlign","Illegal alignment specified in %1",e.currentCS);n&&a.default.setProperties(u,{numalign:n,denomalign:n}),e.Push(u)},e.AmsMethods.Genfrac=function(e,t,n,r,o,s){null==n&&(n=e.GetDelimiterArg(t)),null==r&&(r=e.GetDelimiterArg(t)),null==o&&(o=e.GetArgument(t)),null==s&&(s=i.default.trimSpaces(e.GetArgument(t)));var l=e.ParseArg(t),T=e.ParseArg(t),Q=e.create("node","mfrac",[l,T]);if(""!==o&&a.default.setAttribute(Q,"linethickness",o),(n||r)&&(a.default.setProperty(Q,"withDelims",!0),Q=i.default.fixedFence(e.configuration,n,Q,r)),""!==s){var d=parseInt(s,10),u=["D","T","S","SS"][d];if(null==u)throw new c.default("BadMathStyleFor","Bad math style for %1",e.currentCS);Q=e.create("node","mstyle",[Q]),"D"===u?a.default.setProperties(Q,{displaystyle:!0,scriptlevel:0}):a.default.setProperties(Q,{displaystyle:!1,scriptlevel:d-1})}e.Push(Q)},e.AmsMethods.HandleTag=function(e,t){if(!e.tags.currentTag.taggable&&e.tags.env)throw new c.default("CommandNotAllowedInEnv","%1 not allowed in %2 environment",e.currentCS,e.tags.env);if(e.tags.currentTag.tag)throw new c.default("MultipleCommand","Multiple %1",e.currentCS);var n=e.GetStar(),r=i.default.trimSpaces(e.GetArgument(t));e.tags.tag(r,n)},e.AmsMethods.HandleNoTag=Q.default.HandleNoTag,e.AmsMethods.HandleRef=Q.default.HandleRef,e.AmsMethods.Macro=Q.default.Macro,e.AmsMethods.Accent=Q.default.Accent,e.AmsMethods.Tilde=Q.default.Tilde,e.AmsMethods.Array=Q.default.Array,e.AmsMethods.Spacer=Q.default.Spacer,e.AmsMethods.NamedOp=Q.default.NamedOp,e.AmsMethods.EqnArray=Q.default.EqnArray,e.AmsMethods.Equation=Q.default.Equation}(AmsMethods);var __createBinding$5=commonjsGlobal&&commonjsGlobal.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),__setModuleDefault$5=commonjsGlobal&&commonjsGlobal.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar$5=commonjsGlobal&&commonjsGlobal.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&__createBinding$5(t,e,n);return __setModuleDefault$5(t,e),t},__importDefault$t=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},AmsMethods_js_1$2=AmsMethods,sm$3=__importStar$5(SymbolMap),TexConstants_js_1$6=TexConstants,ParseMethods_js_1$5=__importDefault$t(ParseMethods$1),ParseUtil_js_1$8=__importDefault$t(requireParseUtil()),MmlNode_js_1$6=MmlNode,lengths_js_1$1=lengths;new sm$3.CharacterMap("AMSmath-mathchar0mo",ParseMethods_js_1$5.default.mathchar0mo,{iiiint:["⨌",{texClass:MmlNode_js_1$6.TEXCLASS.OP}]}),new sm$3.RegExpMap("AMSmath-operatorLetter",AmsMethods_js_1$2.AmsMethods.operatorLetter,/[-*]/i),new sm$3.CommandMap("AMSmath-macros",{mathring:["Accent","02DA"],nobreakspace:"Tilde",negmedspace:["Spacer",lengths_js_1$1.MATHSPACE.negativemediummathspace],negthickspace:["Spacer",lengths_js_1$1.MATHSPACE.negativethickmathspace],idotsint:["MultiIntegral","\\int\\cdots\\int"],dddot:["Accent","20DB"],ddddot:["Accent","20DC"],sideset:"SideSet",boxed:["Macro","\\fbox{$\\displaystyle{#1}$}",1],tag:"HandleTag",notag:"HandleNoTag",eqref:["HandleRef",!0],substack:["Macro","\\begin{subarray}{c}#1\\end{subarray}",1],injlim:["NamedOp","inj lim"],projlim:["NamedOp","proj lim"],varliminf:["Macro","\\mathop{\\underline{\\mmlToken{mi}{lim}}}"],varlimsup:["Macro","\\mathop{\\overline{\\mmlToken{mi}{lim}}}"],varinjlim:["Macro","\\mathop{\\underrightarrow{\\mmlToken{mi}{lim}}}"],varprojlim:["Macro","\\mathop{\\underleftarrow{\\mmlToken{mi}{lim}}}"],DeclareMathOperator:"HandleDeclareOp",operatorname:"HandleOperatorName",genfrac:"Genfrac",frac:["Genfrac","","","",""],tfrac:["Genfrac","","","","1"],dfrac:["Genfrac","","","","0"],binom:["Genfrac","(",")","0",""],tbinom:["Genfrac","(",")","0","1"],dbinom:["Genfrac","(",")","0","0"],cfrac:"CFrac",shoveleft:["HandleShove",TexConstants_js_1$6.TexConstant.Align.LEFT],shoveright:["HandleShove",TexConstants_js_1$6.TexConstant.Align.RIGHT],xrightarrow:["xArrow",8594,5,10],xleftarrow:["xArrow",8592,10,5]},AmsMethods_js_1$2.AmsMethods),new sm$3.EnvironmentMap("AMSmath-environment",ParseMethods_js_1$5.default.environment,{"equation*":["Equation",null,!1],"eqnarray*":["EqnArray",null,!1,!0,"rcl",ParseUtil_js_1$8.default.cols(0,lengths_js_1$1.MATHSPACE.thickmathspace),".5em"],align:["EqnArray",null,!0,!0,"rl",ParseUtil_js_1$8.default.cols(0,2)],"align*":["EqnArray",null,!1,!0,"rl",ParseUtil_js_1$8.default.cols(0,2)],multline:["Multline",null,!0],"multline*":["Multline",null,!1],split:["EqnArray",null,!1,!1,"rl",ParseUtil_js_1$8.default.cols(0)],gather:["EqnArray",null,!0,!0,"c"],"gather*":["EqnArray",null,!1,!0,"c"],alignat:["AlignAt",null,!0,!0],"alignat*":["AlignAt",null,!1,!0],alignedat:["AlignAt",null,!1,!1],aligned:["AmsEqnArray",null,null,null,"rl",ParseUtil_js_1$8.default.cols(0,2),".5em","D"],gathered:["AmsEqnArray",null,null,null,"c",null,".5em","D"],xalignat:["XalignAt",null,!0,!0],"xalignat*":["XalignAt",null,!1,!0],xxalignat:["XalignAt",null,!1,!1],flalign:["FlalignArray",null,!0,!1,!0,"rlc","auto auto fit"],"flalign*":["FlalignArray",null,!1,!1,!0,"rlc","auto auto fit"],subarray:["Array",null,null,null,null,ParseUtil_js_1$8.default.cols(0),"0.1em","S",1],smallmatrix:["Array",null,null,null,"c",ParseUtil_js_1$8.default.cols(1/3),".2em","S",1],matrix:["Array",null,null,null,"c"],pmatrix:["Array",null,"(",")","c"],bmatrix:["Array",null,"[","]","c"],Bmatrix:["Array",null,"\\{","\\}","c"],vmatrix:["Array",null,"\\vert","\\vert","c"],Vmatrix:["Array",null,"\\Vert","\\Vert","c"],cases:["Array",null,"\\{",".","ll",null,".2em","T"]},AmsMethods_js_1$2.AmsMethods),new sm$3.DelimiterMap("AMSmath-delimiter",ParseMethods_js_1$5.default.delimiter,{"\\lvert":["|",{texClass:MmlNode_js_1$6.TEXCLASS.OPEN}],"\\rvert":["|",{texClass:MmlNode_js_1$6.TEXCLASS.CLOSE}],"\\lVert":["‖",{texClass:MmlNode_js_1$6.TEXCLASS.OPEN}],"\\rVert":["‖",{texClass:MmlNode_js_1$6.TEXCLASS.CLOSE}]}),new sm$3.CharacterMap("AMSsymbols-mathchar0mi",ParseMethods_js_1$5.default.mathchar0mi,{digamma:"ϝ",varkappa:"ϰ",varGamma:["Γ",{mathvariant:TexConstants_js_1$6.TexConstant.Variant.ITALIC}],varDelta:["Δ",{mathvariant:TexConstants_js_1$6.TexConstant.Variant.ITALIC}],varTheta:["Θ",{mathvariant:TexConstants_js_1$6.TexConstant.Variant.ITALIC}],varLambda:["Λ",{mathvariant:TexConstants_js_1$6.TexConstant.Variant.ITALIC}],varXi:["Ξ",{mathvariant:TexConstants_js_1$6.TexConstant.Variant.ITALIC}],varPi:["Π",{mathvariant:TexConstants_js_1$6.TexConstant.Variant.ITALIC}],varSigma:["Σ",{mathvariant:TexConstants_js_1$6.TexConstant.Variant.ITALIC}],varUpsilon:["Υ",{mathvariant:TexConstants_js_1$6.TexConstant.Variant.ITALIC}],varPhi:["Φ",{mathvariant:TexConstants_js_1$6.TexConstant.Variant.ITALIC}],varPsi:["Ψ",{mathvariant:TexConstants_js_1$6.TexConstant.Variant.ITALIC}],varOmega:["Ω",{mathvariant:TexConstants_js_1$6.TexConstant.Variant.ITALIC}],beth:"ℶ",gimel:"ℷ",daleth:"ℸ",backprime:["‵",{variantForm:!0}],hslash:"ℏ",varnothing:["∅",{variantForm:!0}],blacktriangle:"▴",triangledown:["▽",{variantForm:!0}],blacktriangledown:"▾",square:"◻",Box:"◻",blacksquare:"◼",lozenge:"◊",Diamond:"◊",blacklozenge:"⧫",circledS:["Ⓢ",{mathvariant:TexConstants_js_1$6.TexConstant.Variant.NORMAL}],bigstar:"★",sphericalangle:"∢",measuredangle:"∡",nexists:"∄",complement:"∁",mho:"℧",eth:["ð",{mathvariant:TexConstants_js_1$6.TexConstant.Variant.NORMAL}],Finv:"Ⅎ",diagup:"╱",Game:"⅁",diagdown:"╲",Bbbk:["k",{mathvariant:TexConstants_js_1$6.TexConstant.Variant.DOUBLESTRUCK}],yen:"¥",circledR:"®",checkmark:"✓",maltese:"✠"}),new sm$3.CharacterMap("AMSsymbols-mathchar0mo",ParseMethods_js_1$5.default.mathchar0mo,{dotplus:"∔",ltimes:"⋉",smallsetminus:["∖",{variantForm:!0}],rtimes:"⋊",Cap:"⋒",doublecap:"⋒",leftthreetimes:"⋋",Cup:"⋓",doublecup:"⋓",rightthreetimes:"⋌",barwedge:"⊼",curlywedge:"⋏",veebar:"⊻",curlyvee:"⋎",doublebarwedge:"⩞",boxminus:"⊟",circleddash:"⊝",boxtimes:"⊠",circledast:"⊛",boxdot:"⊡",circledcirc:"⊚",boxplus:"⊞",centerdot:["⋅",{variantForm:!0}],divideontimes:"⋇",intercal:"⊺",leqq:"≦",geqq:"≧",leqslant:"⩽",geqslant:"⩾",eqslantless:"⪕",eqslantgtr:"⪖",lesssim:"≲",gtrsim:"≳",lessapprox:"⪅",gtrapprox:"⪆",approxeq:"≊",lessdot:"⋖",gtrdot:"⋗",lll:"⋘",llless:"⋘",ggg:"⋙",gggtr:"⋙",lessgtr:"≶",gtrless:"≷",lesseqgtr:"⋚",gtreqless:"⋛",lesseqqgtr:"⪋",gtreqqless:"⪌",doteqdot:"≑",Doteq:"≑",eqcirc:"≖",risingdotseq:"≓",circeq:"≗",fallingdotseq:"≒",triangleq:"≜",backsim:"∽",thicksim:["∼",{variantForm:!0}],backsimeq:"⋍",thickapprox:["≈",{variantForm:!0}],subseteqq:"⫅",supseteqq:"⫆",Subset:"⋐",Supset:"⋑",sqsubset:"⊏",sqsupset:"⊐",preccurlyeq:"≼",succcurlyeq:"≽",curlyeqprec:"⋞",curlyeqsucc:"⋟",precsim:"≾",succsim:"≿",precapprox:"⪷",succapprox:"⪸",vartriangleleft:"⊲",lhd:"⊲",vartriangleright:"⊳",rhd:"⊳",trianglelefteq:"⊴",unlhd:"⊴",trianglerighteq:"⊵",unrhd:"⊵",vDash:["⊨",{variantForm:!0}],Vdash:"⊩",Vvdash:"⊪",smallsmile:["⌣",{variantForm:!0}],shortmid:["∣",{variantForm:!0}],smallfrown:["⌢",{variantForm:!0}],shortparallel:["∥",{variantForm:!0}],bumpeq:"≏",between:"≬",Bumpeq:"≎",pitchfork:"⋔",varpropto:["∝",{variantForm:!0}],backepsilon:"∍",blacktriangleleft:"◂",blacktriangleright:"▸",therefore:"∴",because:"∵",eqsim:"≂",vartriangle:["△",{variantForm:!0}],Join:"⋈",nless:"≮",ngtr:"≯",nleq:"≰",ngeq:"≱",nleqslant:["⪇",{variantForm:!0}],ngeqslant:["⪈",{variantForm:!0}],nleqq:["≰",{variantForm:!0}],ngeqq:["≱",{variantForm:!0}],lneq:"⪇",gneq:"⪈",lneqq:"≨",gneqq:"≩",lvertneqq:["≨",{variantForm:!0}],gvertneqq:["≩",{variantForm:!0}],lnsim:"⋦",gnsim:"⋧",lnapprox:"⪉",gnapprox:"⪊",nprec:"⊀",nsucc:"⊁",npreceq:["⋠",{variantForm:!0}],nsucceq:["⋡",{variantForm:!0}],precneqq:"⪵",succneqq:"⪶",precnsim:"⋨",succnsim:"⋩",precnapprox:"⪹",succnapprox:"⪺",nsim:"≁",ncong:"≇",nshortmid:["∤",{variantForm:!0}],nshortparallel:["∦",{variantForm:!0}],nmid:"∤",nparallel:"∦",nvdash:"⊬",nvDash:"⊭",nVdash:"⊮",nVDash:"⊯",ntriangleleft:"⋪",ntriangleright:"⋫",ntrianglelefteq:"⋬",ntrianglerighteq:"⋭",nsubseteq:"⊈",nsupseteq:"⊉",nsubseteqq:["⊈",{variantForm:!0}],nsupseteqq:["⊉",{variantForm:!0}],subsetneq:"⊊",supsetneq:"⊋",varsubsetneq:["⊊",{variantForm:!0}],varsupsetneq:["⊋",{variantForm:!0}],subsetneqq:"⫋",supsetneqq:"⫌",varsubsetneqq:["⫋",{variantForm:!0}],varsupsetneqq:["⫌",{variantForm:!0}],leftleftarrows:"⇇",rightrightarrows:"⇉",leftrightarrows:"⇆",rightleftarrows:"⇄",Lleftarrow:"⇚",Rrightarrow:"⇛",twoheadleftarrow:"↞",twoheadrightarrow:"↠",leftarrowtail:"↢",rightarrowtail:"↣",looparrowleft:"↫",looparrowright:"↬",leftrightharpoons:"⇋",rightleftharpoons:["⇌",{variantForm:!0}],curvearrowleft:"↶",curvearrowright:"↷",circlearrowleft:"↺",circlearrowright:"↻",Lsh:"↰",Rsh:"↱",upuparrows:"⇈",downdownarrows:"⇊",upharpoonleft:"↿",upharpoonright:"↾",downharpoonleft:"⇃",restriction:"↾",multimap:"⊸",downharpoonright:"⇂",leftrightsquigarrow:"↭",rightsquigarrow:"⇝",leadsto:"⇝",dashrightarrow:"⇢",dashleftarrow:"⇠",nleftarrow:"↚",nrightarrow:"↛",nLeftarrow:"⇍",nRightarrow:"⇏",nleftrightarrow:"↮",nLeftrightarrow:"⇎"}),new sm$3.DelimiterMap("AMSsymbols-delimiter",ParseMethods_js_1$5.default.delimiter,{"\\ulcorner":"⌜","\\urcorner":"⌝","\\llcorner":"⌞","\\lrcorner":"⌟"}),new sm$3.CommandMap("AMSsymbols-macros",{implies:["Macro","\\;\\Longrightarrow\\;"],impliedby:["Macro","\\;\\Longleftarrow\\;"]},AmsMethods_js_1$2.AmsMethods);var _a$6,__extends$9=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(AmsConfiguration,"__esModule",{value:!0}),AmsConfiguration.AmsConfiguration=AmsConfiguration.AmsTags=void 0;var Configuration_js_1$i=Configuration,AmsItems_js_1$1=AmsItems,Tags_js_1$3=Tags,AmsMethods_js_1$1=AmsMethods,SymbolMap_js_1$e=SymbolMap,AmsTags=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$9(t,e),t}(Tags_js_1$3.AbstractTags);AmsConfiguration.AmsTags=AmsTags;var init$1=function(e){new SymbolMap_js_1$e.CommandMap(AmsMethods_js_1$1.NEW_OPS,{},{}),e.append(Configuration_js_1$i.Configuration.local({handler:{macro:[AmsMethods_js_1$1.NEW_OPS]},priority:-1}))};AmsConfiguration.AmsConfiguration=Configuration_js_1$i.Configuration.create("ams",{handler:{character:["AMSmath-operatorLetter"],delimiter:["AMSsymbols-delimiter","AMSmath-delimiter"],macro:["AMSsymbols-mathchar0mi","AMSsymbols-mathchar0mo","AMSsymbols-delimiter","AMSsymbols-macros","AMSmath-mathchar0mo","AMSmath-macros","AMSmath-delimiter"],environment:["AMSmath-environment"]},items:(_a$6={},_a$6[AmsItems_js_1$1.MultlineItem.prototype.kind]=AmsItems_js_1$1.MultlineItem,_a$6[AmsItems_js_1$1.FlalignItem.prototype.kind]=AmsItems_js_1$1.FlalignItem,_a$6),tags:{ams:AmsTags},init:init$1,config:function(e,t){t.parseOptions.options.multlineWidth&&(t.parseOptions.options.ams.multlineWidth=t.parseOptions.options.multlineWidth),delete t.parseOptions.options.multlineWidth},options:{multlineWidth:"",ams:{multlineWidth:"100%",multlineIndent:"1em"}}});var AmsCdConfiguration={},AmsCdMethods$1={},__importDefault$s=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(AmsCdMethods$1,"__esModule",{value:!0});var TexParser_js_1$6=__importDefault$s(requireTexParser()),BaseConfiguration_js_1=BaseConfiguration,MmlNode_js_1$5=MmlNode,NodeUtil_js_1$6=__importDefault$s(NodeUtil$1),AmsCdMethods={CD:function(e,t){e.Push(t);var n=e.itemFactory.create("array"),r=e.configuration.options.amscd;return n.setProperties({minw:e.stack.env.CD_minw||r.harrowsize,minh:e.stack.env.CD_minh||r.varrowsize}),n.arraydef={columnalign:"center",columnspacing:r.colspace,rowspacing:r.rowspace,displaystyle:!0},n},arrow:function(e,t){var n=e.string.charAt(e.i);if(!n.match(/[><VA.|=]/))return(0,BaseConfiguration_js_1.Other)(e,t);e.i++;var r=e.stack.Top();r.isKind("array")&&!r.Size()||(AmsCdMethods.cell(e,t),r=e.stack.Top());for(var i,o=r,a=o.table.length%2==1,s=(o.row.length+(a?0:1))%2;s;)AmsCdMethods.cell(e,t),s--;var l={minsize:o.getProperty("minw"),stretchy:!0},c={minsize:o.getProperty("minh"),stretchy:!0,symmetric:!0,lspace:0,rspace:0};if("."===n);else if("|"===n)i=e.create("token","mo",c,"∥");else if("="===n)i=e.create("token","mo",l,"=");else{var T={">":"→","<":"←",V:"↓",A:"↑"}[n],Q=e.GetUpTo(t+n,n),d=e.GetUpTo(t+n,n);if(">"===n||"<"===n){if(i=e.create("token","mo",l,T),Q||(Q="\\kern "+o.getProperty("minw")),Q||d){var u={width:"+.67em",lspace:".33em"};if(i=e.create("node","munderover",[i]),Q){var p=new TexParser_js_1$6.default(Q,e.stack.env,e.configuration).mml(),h=e.create("node","mpadded",[p],u);NodeUtil_js_1$6.default.setAttribute(h,"voffset",".1em"),NodeUtil_js_1$6.default.setChild(i,i.over,h)}if(d){var m=new TexParser_js_1$6.default(d,e.stack.env,e.configuration).mml();NodeUtil_js_1$6.default.setChild(i,i.under,e.create("node","mpadded",[m],u))}e.configuration.options.amscd.hideHorizontalLabels&&(i=e.create("node","mpadded",i,{depth:0,height:".67em"}))}}else{var f=e.create("token","mo",c,T);i=f,(Q||d)&&(i=e.create("node","mrow"),Q&&NodeUtil_js_1$6.default.appendChildren(i,[new TexParser_js_1$6.default("\\scriptstyle\\llap{"+Q+"}",e.stack.env,e.configuration).mml()]),f.texClass=MmlNode_js_1$5.TEXCLASS.ORD,NodeUtil_js_1$6.default.appendChildren(i,[f]),d&&NodeUtil_js_1$6.default.appendChildren(i,[new TexParser_js_1$6.default("\\scriptstyle\\rlap{"+d+"}",e.stack.env,e.configuration).mml()]))}}i&&e.Push(i),AmsCdMethods.cell(e,t)},cell:function(e,t){var n=e.stack.Top();(n.table||[]).length%2==0&&0===(n.row||[]).length&&e.Push(e.create("node","mpadded",[],{height:"8.5pt",depth:"2pt"})),e.Push(e.itemFactory.create("cell").setProperties({isEntry:!0,name:t}))},minCDarrowwidth:function(e,t){e.stack.env.CD_minw=e.GetDimen(t)},minCDarrowheight:function(e,t){e.stack.env.CD_minh=e.GetDimen(t)}};AmsCdMethods$1.default=AmsCdMethods;var __createBinding$4=commonjsGlobal&&commonjsGlobal.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),__setModuleDefault$4=commonjsGlobal&&commonjsGlobal.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar$4=commonjsGlobal&&commonjsGlobal.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&__createBinding$4(t,e,n);return __setModuleDefault$4(t,e),t},__importDefault$r=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},sm$2=__importStar$4(SymbolMap),ParseMethods_js_1$4=__importDefault$r(ParseMethods$1),AmsCdMethods_js_1=__importDefault$r(AmsCdMethods$1);new sm$2.EnvironmentMap("amscd_environment",ParseMethods_js_1$4.default.environment,{CD:"CD"},AmsCdMethods_js_1.default),new sm$2.CommandMap("amscd_macros",{minCDarrowwidth:"minCDarrowwidth",minCDarrowheight:"minCDarrowheight"},AmsCdMethods_js_1.default),new sm$2.MacroMap("amscd_special",{"@":"arrow"},AmsCdMethods_js_1.default),Object.defineProperty(AmsCdConfiguration,"__esModule",{value:!0}),AmsCdConfiguration.AmsCdConfiguration=void 0;var Configuration_js_1$h=Configuration;AmsCdConfiguration.AmsCdConfiguration=Configuration_js_1$h.Configuration.create("amscd",{handler:{character:["amscd_special"],macro:["amscd_macros"],environment:["amscd_environment"]},options:{amscd:{colspace:"5pt",rowspace:"5pt",harrowsize:"2.75em",varrowsize:"1.75em",hideHorizontalLabels:!1}}});var BboxConfiguration={};!function(e){var t=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.BboxConfiguration=e.BboxMethods=void 0;var n=Configuration,r=SymbolMap,i=t(TexError$1);e.BboxMethods={},e.BboxMethods.BBox=function(e,t){for(var n,r,s,l=e.GetBrackets(t,""),c=e.ParseArg(t),T=l.split(/,/),Q=0,d=T.length;Q<d;Q++){var u=T[Q].trim(),p=u.match(/^(\.\d+|\d+(\.\d*)?)(pt|em|ex|mu|px|in|cm|mm)$/);if(p){if(n)throw new i.default("MultipleBBoxProperty","%1 specified twice in %2","Padding",t);var h=a(p[1]+p[3]);h&&(n={height:"+"+h,depth:"+"+h,lspace:h,width:"+"+2*parseInt(p[1],10)+p[3]})}else if(u.match(/^([a-z0-9]+|\#[0-9a-f]{6}|\#[0-9a-f]{3})$/i)){if(r)throw new i.default("MultipleBBoxProperty","%1 specified twice in %2","Background",t);r=u}else if(u.match(/^[-a-z]+:/i)){if(s)throw new i.default("MultipleBBoxProperty","%1 specified twice in %2","Style",t);s=o(u)}else if(""!==u)throw new i.default("InvalidBBoxProperty",'"%1" doesn\'t look like a color, a padding dimension, or a style',u)}n&&(c=e.create("node","mpadded",[c],n)),(r||s)&&(n={},r&&Object.assign(n,{mathbackground:r}),s&&Object.assign(n,{style:s}),c=e.create("node","mstyle",[c],n)),e.Push(c)};var o=function(e){return e},a=function(e){return e};new r.CommandMap("bbox",{bbox:"BBox"},e.BboxMethods),e.BboxConfiguration=n.Configuration.create("bbox",{handler:{macro:["bbox"]}})}(BboxConfiguration);var BoldsymbolConfiguration={};!function(e){var t=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},n=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.BoldsymbolConfiguration=e.rewriteBoldTokens=e.createBoldToken=e.BoldsymbolMethods=void 0;var r=Configuration,i=n(NodeUtil$1),o=TexConstants,a=SymbolMap,s=NodeFactory$2,l={};function c(e,t,n,r){var o=s.NodeFactory.createToken(e,t,n,r);return"mtext"!==t&&e.configuration.parser.stack.env.boldsymbol&&(i.default.setProperty(o,"fixBold",!0),e.configuration.addNode("fixBold",o)),o}function T(e){var n,r;try{for(var a=t(e.data.getList("fixBold")),s=a.next();!s.done;s=a.next()){var c=s.value;if(i.default.getProperty(c,"fixBold")){var T=i.default.getAttribute(c,"mathvariant");null==T?i.default.setAttribute(c,"mathvariant",o.TexConstant.Variant.BOLD):i.default.setAttribute(c,"mathvariant",l[T]||T),i.default.removeProperties(c,"fixBold")}}}catch(e){n={error:e}}finally{try{s&&!s.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}}l[o.TexConstant.Variant.NORMAL]=o.TexConstant.Variant.BOLD,l[o.TexConstant.Variant.ITALIC]=o.TexConstant.Variant.BOLDITALIC,l[o.TexConstant.Variant.FRAKTUR]=o.TexConstant.Variant.BOLDFRAKTUR,l[o.TexConstant.Variant.SCRIPT]=o.TexConstant.Variant.BOLDSCRIPT,l[o.TexConstant.Variant.SANSSERIF]=o.TexConstant.Variant.BOLDSANSSERIF,l["-tex-calligraphic"]="-tex-bold-calligraphic",l["-tex-oldstyle"]="-tex-bold-oldstyle",l["-tex-mathit"]=o.TexConstant.Variant.BOLDITALIC,e.BoldsymbolMethods={},e.BoldsymbolMethods.Boldsymbol=function(e,t){var n=e.stack.env.boldsymbol;e.stack.env.boldsymbol=!0;var r=e.ParseArg(t);e.stack.env.boldsymbol=n,e.Push(r)},new a.CommandMap("boldsymbol",{boldsymbol:"Boldsymbol"},e.BoldsymbolMethods),e.createBoldToken=c,e.rewriteBoldTokens=T,e.BoldsymbolConfiguration=r.Configuration.create("boldsymbol",{handler:{macro:["boldsymbol"]},nodes:{token:c},postprocessors:[T]})}(BoldsymbolConfiguration);var BraketConfiguration={},BraketItems={},__extends$8=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__importDefault$q=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(BraketItems,"__esModule",{value:!0}),BraketItems.BraketItem=void 0;var StackItem_js_1$3=StackItem,MmlNode_js_1$4=MmlNode,ParseUtil_js_1$7=__importDefault$q(requireParseUtil()),BraketItem=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$8(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"braket"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isOpen",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(t){return t.isKind("close")?[[this.factory.create("mml",this.toMml())],!0]:t.isKind("mml")?(this.Push(t.toMml()),this.getProperty("single")?[[this.toMml()],!0]:StackItem_js_1$3.BaseItem.fail):e.prototype.checkItem.call(this,t)},t.prototype.toMml=function(){var t=e.prototype.toMml.call(this),n=this.getProperty("open"),r=this.getProperty("close");if(this.getProperty("stretchy"))return ParseUtil_js_1$7.default.fenced(this.factory.configuration,n,t,r);var i={fence:!0,stretchy:!1,symmetric:!0,texClass:MmlNode_js_1$4.TEXCLASS.OPEN},o=this.create("token","mo",i,n);i.texClass=MmlNode_js_1$4.TEXCLASS.CLOSE;var a=this.create("token","mo",i,r);return this.create("node","mrow",[o,t,a],{open:n,close:r,texClass:MmlNode_js_1$4.TEXCLASS.INNER})},t}(StackItem_js_1$3.BaseItem);BraketItems.BraketItem=BraketItem;var BraketMethods$1={},__importDefault$p=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(BraketMethods$1,"__esModule",{value:!0});var BaseMethods_js_1$5=__importDefault$p(BaseMethods$1),MmlNode_js_1$3=MmlNode,TexError_js_1$b=__importDefault$p(TexError$1),BraketMethods={};BraketMethods.Macro=BaseMethods_js_1$5.default.Macro,BraketMethods.Braket=function(e,t,n,r,i,o){var a=e.GetNext();if(""===a)throw new TexError_js_1$b.default("MissingArgFor","Missing argument for %1",e.currentCS);var s=!0;"{"===a&&(e.i++,s=!1),e.Push(e.itemFactory.create("braket").setProperties({barmax:o,barcount:0,open:n,close:r,stretchy:i,single:s}))},BraketMethods.Bar=function(e,t){var n="|"===t?"|":"∥",r=e.stack.Top();if("braket"!==r.kind||r.getProperty("barcount")>=r.getProperty("barmax")){var i=e.create("token","mo",{texClass:MmlNode_js_1$3.TEXCLASS.ORD,stretchy:!1},n);e.Push(i)}else if("|"===n&&"|"===e.GetNext()&&(e.i++,n="∥"),r.getProperty("stretchy")){var o=e.create("node","TeXAtom",[],{texClass:MmlNode_js_1$3.TEXCLASS.CLOSE});e.Push(o),r.setProperty("barcount",r.getProperty("barcount")+1),o=e.create("token","mo",{stretchy:!0,braketbar:!0},n),e.Push(o),o=e.create("node","TeXAtom",[],{texClass:MmlNode_js_1$3.TEXCLASS.OPEN}),e.Push(o)}else{var a=e.create("token","mo",{stretchy:!1,braketbar:!0},n);e.Push(a)}},BraketMethods$1.default=BraketMethods;var _a$5,__importDefault$o=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},SymbolMap_js_1$d=SymbolMap,BraketMethods_js_1=__importDefault$o(BraketMethods$1);new SymbolMap_js_1$d.CommandMap("Braket-macros",{bra:["Macro","{\\langle {#1} \\vert}",1],ket:["Macro","{\\vert {#1} \\rangle}",1],braket:["Braket","⟨","⟩",!1,1/0],set:["Braket","{","}",!1,1],Bra:["Macro","{\\left\\langle {#1} \\right\\vert}",1],Ket:["Macro","{\\left\\vert {#1} \\right\\rangle}",1],Braket:["Braket","⟨","⟩",!0,1/0],Set:["Braket","{","}",!0,1],ketbra:["Macro","{\\vert {#1} \\rangle\\langle {#2} \\vert}",2],Ketbra:["Macro","{\\left\\vert {#1} \\right\\rangle\\left\\langle {#2} \\right\\vert}",2],"|":"Bar"},BraketMethods_js_1.default),new SymbolMap_js_1$d.MacroMap("Braket-characters",{"|":"Bar"},BraketMethods_js_1.default),Object.defineProperty(BraketConfiguration,"__esModule",{value:!0}),BraketConfiguration.BraketConfiguration=void 0;var Configuration_js_1$g=Configuration,BraketItems_js_1=BraketItems;BraketConfiguration.BraketConfiguration=Configuration_js_1$g.Configuration.create("braket",{handler:{character:["Braket-characters"],macro:["Braket-macros"]},items:(_a$5={},_a$5[BraketItems_js_1.BraketItem.prototype.kind]=BraketItems_js_1.BraketItem,_a$5)});var BussproofsConfiguration={},BussproofsItems={},BussproofsUtil$2={};!function(e){var t,n=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},r=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},i=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.clearDocument=e.saveDocument=e.makeBsprAttributes=e.removeProperty=e.getProperty=e.setProperty=e.balanceRules=void 0;var o=i(NodeUtil$1),a=i(requireParseUtil()),s=null,l=null,c=function(e){return l.root=e,s.outputJax.getBBox(l,s).w},T=function(e){for(var t=0;e&&!o.default.isType(e,"mtable");){if(o.default.isType(e,"text"))return null;o.default.isType(e,"mrow")?(e=e.childNodes[0],t=0):(e=e.parent.childNodes[t],t++)}return e},Q=function(e,t){return e.childNodes["up"===t?1:0].childNodes[0].childNodes[0].childNodes[0].childNodes[0]},d=function(e,t){return e.childNodes[t].childNodes[0].childNodes[0]},u=function(e){return d(e,0)},p=function(e){return d(e,e.childNodes.length-1)},h=function(e,t){return e.childNodes["up"===t?0:1].childNodes[0].childNodes[0].childNodes[0]},m=function(e){for(;e&&!o.default.isType(e,"mtd");)e=e.parent;return e},f=function(e){return e.parent.childNodes[e.parent.childNodes.indexOf(e)+1]},g=function(t){for(;t&&null==(0,e.getProperty)(t,"inference");)t=t.parent;return t},b=function(e,t,n){void 0===n&&(n=!1);var r=0;if(e===t)return r;if(e!==t.parent){var i=e.childNodes,a=n?i.length-1:0;o.default.isType(i[a],"mspace")&&(r+=c(i[a])),e=t.parent}if(e===t)return r;var s=e.childNodes,l=n?s.length-1:0;return s[l]!==t&&(r+=c(s[l])),r},y=function(t,n){void 0===n&&(n=!1);var r=T(t),i=h(r,(0,e.getProperty)(r,"inferenceRule"));return b(t,r,n)+(c(r)-c(i))/2},L=function(t,n,r,i){if(void 0===i&&(i=!1),(0,e.getProperty)(n,"inferenceRule")||(0,e.getProperty)(n,"labelledRule")){var s=t.nodeFactory.create("node","mrow");n.parent.replaceChild(s,n),s.setChildren([n]),v(n,s),n=s}var l=i?n.childNodes.length-1:0,c=n.childNodes[l];o.default.isType(c,"mspace")?o.default.setAttribute(c,"width",a.default.Em(a.default.dimen2em(o.default.getAttribute(c,"width"))+r)):(c=t.nodeFactory.create("node","mspace",[],{width:a.default.Em(r)}),i?n.appendChild(c):(c.parent=n,n.childNodes.unshift(c)))},v=function(t,n){["inference","proof","maxAdjust","labelledRule"].forEach((function(r){var i=(0,e.getProperty)(t,r);null!=i&&((0,e.setProperty)(n,r,i),(0,e.removeProperty)(t,r))}))},w=function(t,n,r,i,o){var s=t.nodeFactory.create("node","mspace",[],{width:a.default.Em(o)});if("left"===i){var l=n.childNodes[r].childNodes[0];s.parent=l,l.childNodes.unshift(s)}else n.childNodes[r].appendChild(s);(0,e.setProperty)(n.parent,"sequentAdjust_"+i,o)},E=function(t,r){for(var i=r.pop();r.length;){var o=r.pop(),a=n(_(i,o),2),s=a[0],l=a[1];(0,e.getProperty)(i.parent,"axiom")&&(w(t,s<0?i:o,0,"left",Math.abs(s)),w(t,l<0?i:o,2,"right",Math.abs(l))),i=o}},_=function(e,t){var n=c(e.childNodes[2]),r=c(t.childNodes[2]);return[c(e.childNodes[0])-c(t.childNodes[0]),n-r]};e.balanceRules=function(t){var n,i;l=new t.document.options.MathItem("",null,t.math.display);var o=t.data;!function(t){var n=t.nodeLists.sequent;if(n)for(var r=n.length-1,i=void 0;i=n[r];r--)if((0,e.getProperty)(i,"sequentProcessed"))(0,e.removeProperty)(i,"sequentProcessed");else{var o=[],a=g(i);if(1===(0,e.getProperty)(a,"inference")){for(o.push(i);1===(0,e.getProperty)(a,"inference");){a=T(a);var s=u(Q(a,(0,e.getProperty)(a,"inferenceRule"))),l=(0,e.getProperty)(s,"inferenceRule")?h(s,(0,e.getProperty)(s,"inferenceRule")):s;(0,e.getProperty)(l,"sequent")&&(i=l.childNodes[0],o.push(i),(0,e.setProperty)(i,"sequentProcessed",!0)),a=s}E(t,o)}}}(o);var a=o.nodeLists.inference||[];try{for(var s=r(a),c=s.next();!c.done;c=s.next()){var d=c.value,v=(0,e.getProperty)(d,"proof"),w=T(d),_=Q(w,(0,e.getProperty)(w,"inferenceRule")),M=u(_);if((0,e.getProperty)(M,"inference")){var x=y(M);if(x){L(o,M,-x);var H=b(d,w,!1);L(o,d,x-H)}}var S=p(_);if(null!=(0,e.getProperty)(S,"inference")){var A=y(S,!0);L(o,S,-A,!0);var C=b(d,w,!0),O=(0,e.getProperty)(d,"maxAdjust");null!=O&&(A=Math.max(A,O));var I=void 0;if(!v&&(I=m(d))){var V=f(I);if(V){var k=o.nodeFactory.create("node","mspace",[],{width:A-C+"em"});V.appendChild(k),d.removeProperty("maxAdjust")}else{var N=g(I);N&&(A=(0,e.getProperty)(N,"maxAdjust")?Math.max((0,e.getProperty)(N,"maxAdjust"),A):A,(0,e.setProperty)(N,"maxAdjust",A))}}else L(o,(0,e.getProperty)(d,"proof")?d:d.parent,A-C,!0)}}}catch(e){n={error:e}}finally{try{c&&!c.done&&(i=s.return)&&i.call(s)}finally{if(n)throw n.error}}};var M="bspr_",x=((t={})[M+"maxAdjust"]=!0,t);e.setProperty=function(e,t,n){o.default.setProperty(e,M+t,n)},e.getProperty=function(e,t){return o.default.getProperty(e,M+t)},e.removeProperty=function(e,t){e.removeProperty(M+t)},e.makeBsprAttributes=function(e){e.data.root.walkTree((function(e,t){var n=[];e.getPropertyNames().forEach((function(t){!x[t]&&t.match(RegExp("^"+M))&&n.push(t+":"+e.getProperty(t))})),n.length&&o.default.setAttribute(e,"semantics",n.join(";"))}))},e.saveDocument=function(e){if(!("getBBox"in(s=e.document).outputJax))throw Error("The bussproofs extension requires an output jax with a getBBox() method")},e.clearDocument=function(e){s=null}}(BussproofsUtil$2);var __extends$7=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__createBinding$3=commonjsGlobal&&commonjsGlobal.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),__setModuleDefault$3=commonjsGlobal&&commonjsGlobal.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar$3=commonjsGlobal&&commonjsGlobal.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&__createBinding$3(t,e,n);return __setModuleDefault$3(t,e),t},__importDefault$n=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(BussproofsItems,"__esModule",{value:!0}),BussproofsItems.ProofTreeItem=void 0;var TexError_js_1$a=__importDefault$n(TexError$1),StackItem_js_1$2=StackItem,Stack_js_1=__importDefault$n(Stack$1),BussproofsUtil$1=__importStar$3(BussproofsUtil$2),ProofTreeItem=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.leftLabel=null,t.rigthLabel=null,t.innerStack=new Stack_js_1.default(t.factory,{},!0),t}return __extends$7(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"proofTree"},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(e){if(e.isKind("end")&&"prooftree"===e.getName()){var t=this.toMml();return BussproofsUtil$1.setProperty(t,"proof",!0),[[this.factory.create("mml",t),e],!0]}if(e.isKind("stop"))throw new TexError_js_1$a.default("EnvMissingEnd","Missing \\end{%1}",this.getName());return this.innerStack.Push(e),StackItem_js_1$2.BaseItem.fail},t.prototype.toMml=function(){var t=e.prototype.toMml.call(this),n=this.innerStack.Top();if(n.isKind("start")&&!n.Size())return t;this.innerStack.Push(this.factory.create("stop"));var r=this.innerStack.Top().toMml();return this.create("node","mrow",[r,t],{})},t}(StackItem_js_1$2.BaseItem);BussproofsItems.ProofTreeItem=ProofTreeItem;var BussproofsMethods$1={},__createBinding$2=commonjsGlobal&&commonjsGlobal.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),__setModuleDefault$2=commonjsGlobal&&commonjsGlobal.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar$2=commonjsGlobal&&commonjsGlobal.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&__createBinding$2(t,e,n);return __setModuleDefault$2(t,e),t},__read$3=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray$1=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))},__importDefault$m=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(BussproofsMethods$1,"__esModule",{value:!0});var TexError_js_1$9=__importDefault$m(TexError$1),TexParser_js_1$5=__importDefault$m(requireTexParser()),ParseUtil_js_1$6=__importDefault$m(requireParseUtil()),BussproofsUtil=__importStar$2(BussproofsUtil$2),BussproofsMethods={Prooftree:function(e,t){return e.Push(t),e.itemFactory.create("proofTree").setProperties({name:t.getName(),line:"solid",currentLine:"solid",rootAtTop:!1})},Axiom:function(e,t){var n=e.stack.Top();if("proofTree"!==n.kind)throw new TexError_js_1$9.default("IllegalProofCommand","Proof commands only allowed in prooftree environment.");var r=paddedContent(e,e.GetArgument(t));BussproofsUtil.setProperty(r,"axiom",!0),n.Push(r)}},paddedContent=function(e,t){var n=ParseUtil_js_1$6.default.internalMath(e,ParseUtil_js_1$6.default.trimSpaces(t),0);if(!n[0].childNodes[0].childNodes.length)return e.create("node","mrow",[]);var r=e.create("node","mspace",[],{width:".5ex"}),i=e.create("node","mspace",[],{width:".5ex"});return e.create("node","mrow",__spreadArray$1(__spreadArray$1([r],__read$3(n),!1),[i],!1))};function createRule(e,t,n,r,i,o,a){var s,l,c,T,Q=e.create("node","mtr",[e.create("node","mtd",[t],{})],{}),d=e.create("node","mtr",[e.create("node","mtd",n,{})],{}),u=e.create("node","mtable",a?[d,Q]:[Q,d],{align:"top 2",rowlines:o,framespacing:"0 0"});if(BussproofsUtil.setProperty(u,"inferenceRule",a?"up":"down"),r&&(s=e.create("node","mpadded",[r],{height:"+.5em",width:"+.5em",voffset:"-.15em"}),BussproofsUtil.setProperty(s,"prooflabel","left")),i&&(l=e.create("node","mpadded",[i],{height:"+.5em",width:"+.5em",voffset:"-.15em"}),BussproofsUtil.setProperty(l,"prooflabel","right")),r&&i)c=[s,u,l],T="both";else if(r)c=[s,u],T="left";else{if(!i)return u;c=[u,l],T="right"}return u=e.create("node","mrow",c),BussproofsUtil.setProperty(u,"labelledRule",T),u}function parseFCenterLine(e,t){if("$"!==e.GetNext())throw new TexError_js_1$9.default("IllegalUseOfCommand","Use of %1 does not match it's definition.",t);e.i++;var n=e.GetUpTo(t,"$");if(-1===n.indexOf("\\fCenter"))throw new TexError_js_1$9.default("IllegalUseOfCommand","Missing \\fCenter in %1.",t);var r=__read$3(n.split("\\fCenter"),2),i=r[0],o=r[1],a=new TexParser_js_1$5.default(i,e.stack.env,e.configuration).mml(),s=new TexParser_js_1$5.default(o,e.stack.env,e.configuration).mml(),l=new TexParser_js_1$5.default("\\fCenter",e.stack.env,e.configuration).mml(),c=e.create("node","mtd",[a],{}),T=e.create("node","mtd",[l],{}),Q=e.create("node","mtd",[s],{}),d=e.create("node","mtr",[c,T,Q],{}),u=e.create("node","mtable",[d],{columnspacing:".5ex",columnalign:"center 2"});return BussproofsUtil.setProperty(u,"sequent",!0),e.configuration.addNode("sequent",d),u}BussproofsMethods.Inference=function(e,t,n){var r=e.stack.Top();if("proofTree"!==r.kind)throw new TexError_js_1$9.default("IllegalProofCommand","Proof commands only allowed in prooftree environment.");if(r.Size()<n)throw new TexError_js_1$9.default("BadProofTree","Proof tree badly specified.");var i=r.getProperty("rootAtTop"),o=1!==n||r.Peek()[0].childNodes.length?n:0,a=[];do{a.length&&a.unshift(e.create("node","mtd",[],{})),a.unshift(e.create("node","mtd",[r.Pop()],{rowalign:i?"top":"bottom"})),n--}while(n>0);var s=e.create("node","mtr",a,{}),l=e.create("node","mtable",[s],{framespacing:"0 0"}),c=paddedContent(e,e.GetArgument(t)),T=r.getProperty("currentLine");T!==r.getProperty("line")&&r.setProperty("currentLine",r.getProperty("line"));var Q=createRule(e,l,[c],r.getProperty("left"),r.getProperty("right"),T,i);r.setProperty("left",null),r.setProperty("right",null),BussproofsUtil.setProperty(Q,"inference",o),e.configuration.addNode("inference",Q),r.Push(Q)},BussproofsMethods.Label=function(e,t,n){var r=e.stack.Top();if("proofTree"!==r.kind)throw new TexError_js_1$9.default("IllegalProofCommand","Proof commands only allowed in prooftree environment.");var i=ParseUtil_js_1$6.default.internalMath(e,e.GetArgument(t),0),o=i.length>1?e.create("node","mrow",i,{}):i[0];r.setProperty(n,o)},BussproofsMethods.SetLine=function(e,t,n,r){var i=e.stack.Top();if("proofTree"!==i.kind)throw new TexError_js_1$9.default("IllegalProofCommand","Proof commands only allowed in prooftree environment.");i.setProperty("currentLine",n),r&&i.setProperty("line",n)},BussproofsMethods.RootAtTop=function(e,t,n){var r=e.stack.Top();if("proofTree"!==r.kind)throw new TexError_js_1$9.default("IllegalProofCommand","Proof commands only allowed in prooftree environment.");r.setProperty("rootAtTop",n)},BussproofsMethods.AxiomF=function(e,t){var n=e.stack.Top();if("proofTree"!==n.kind)throw new TexError_js_1$9.default("IllegalProofCommand","Proof commands only allowed in prooftree environment.");var r=parseFCenterLine(e,t);BussproofsUtil.setProperty(r,"axiom",!0),n.Push(r)},BussproofsMethods.FCenter=function(e,t){},BussproofsMethods.InferenceF=function(e,t,n){var r=e.stack.Top();if("proofTree"!==r.kind)throw new TexError_js_1$9.default("IllegalProofCommand","Proof commands only allowed in prooftree environment.");if(r.Size()<n)throw new TexError_js_1$9.default("BadProofTree","Proof tree badly specified.");var i=r.getProperty("rootAtTop"),o=1!==n||r.Peek()[0].childNodes.length?n:0,a=[];do{a.length&&a.unshift(e.create("node","mtd",[],{})),a.unshift(e.create("node","mtd",[r.Pop()],{rowalign:i?"top":"bottom"})),n--}while(n>0);var s=e.create("node","mtr",a,{}),l=e.create("node","mtable",[s],{framespacing:"0 0"}),c=parseFCenterLine(e,t),T=r.getProperty("currentLine");T!==r.getProperty("line")&&r.setProperty("currentLine",r.getProperty("line"));var Q=createRule(e,l,[c],r.getProperty("left"),r.getProperty("right"),T,i);r.setProperty("left",null),r.setProperty("right",null),BussproofsUtil.setProperty(Q,"inference",o),e.configuration.addNode("inference",Q),r.Push(Q)},BussproofsMethods$1.default=BussproofsMethods;var _a$4,__importDefault$l=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},BussproofsMethods_js_1=__importDefault$l(BussproofsMethods$1),ParseMethods_js_1$3=__importDefault$l(ParseMethods$1),SymbolMap_js_1$c=SymbolMap;new SymbolMap_js_1$c.CommandMap("Bussproofs-macros",{AxiomC:"Axiom",UnaryInfC:["Inference",1],BinaryInfC:["Inference",2],TrinaryInfC:["Inference",3],QuaternaryInfC:["Inference",4],QuinaryInfC:["Inference",5],RightLabel:["Label","right"],LeftLabel:["Label","left"],AXC:"Axiom",UIC:["Inference",1],BIC:["Inference",2],TIC:["Inference",3],RL:["Label","right"],LL:["Label","left"],noLine:["SetLine","none",!1],singleLine:["SetLine","solid",!1],solidLine:["SetLine","solid",!1],dashedLine:["SetLine","dashed",!1],alwaysNoLine:["SetLine","none",!0],alwaysSingleLine:["SetLine","solid",!0],alwaysSolidLine:["SetLine","solid",!0],alwaysDashedLine:["SetLine","dashed",!0],rootAtTop:["RootAtTop",!0],alwaysRootAtTop:["RootAtTop",!0],rootAtBottom:["RootAtTop",!1],alwaysRootAtBottom:["RootAtTop",!1],fCenter:"FCenter",Axiom:"AxiomF",UnaryInf:["InferenceF",1],BinaryInf:["InferenceF",2],TrinaryInf:["InferenceF",3],QuaternaryInf:["InferenceF",4],QuinaryInf:["InferenceF",5]},BussproofsMethods_js_1.default),new SymbolMap_js_1$c.EnvironmentMap("Bussproofs-environments",ParseMethods_js_1$3.default.environment,{prooftree:["Prooftree",null,!1]},BussproofsMethods_js_1.default),Object.defineProperty(BussproofsConfiguration,"__esModule",{value:!0}),BussproofsConfiguration.BussproofsConfiguration=void 0;var Configuration_js_1$f=Configuration,BussproofsItems_js_1=BussproofsItems,BussproofsUtil_js_1=BussproofsUtil$2;BussproofsConfiguration.BussproofsConfiguration=Configuration_js_1$f.Configuration.create("bussproofs",{handler:{macro:["Bussproofs-macros"],environment:["Bussproofs-environments"]},items:(_a$4={},_a$4[BussproofsItems_js_1.ProofTreeItem.prototype.kind]=BussproofsItems_js_1.ProofTreeItem,_a$4),preprocessors:[[BussproofsUtil_js_1.saveDocument,1]],postprocessors:[[BussproofsUtil_js_1.clearDocument,3],[BussproofsUtil_js_1.makeBsprAttributes,2],[BussproofsUtil_js_1.balanceRules,1]]});var CancelConfiguration={},EncloseConfiguration={};!function(e){var t=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.EncloseConfiguration=e.EncloseMethods=e.ENCLOSE_OPTIONS=void 0;var n=Configuration,r=SymbolMap,i=t(requireParseUtil());e.ENCLOSE_OPTIONS={"data-arrowhead":1,color:1,mathcolor:1,background:1,mathbackground:1,"data-padding":1,"data-thickness":1},e.EncloseMethods={},e.EncloseMethods.Enclose=function(t,n){var r=t.GetArgument(n).replace(/,/g," "),o=t.GetBrackets(n,""),a=t.ParseArg(n),s=i.default.keyvalOptions(o,e.ENCLOSE_OPTIONS);s.notation=r,t.Push(t.create("node","menclose",[a],s))},new r.CommandMap("enclose",{enclose:"Enclose"},e.EncloseMethods),e.EncloseConfiguration=n.Configuration.create("enclose",{handler:{macro:["enclose"]}})}(EncloseConfiguration),function(e){var t=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.CancelConfiguration=e.CancelMethods=void 0;var n=Configuration,r=TexConstants,i=SymbolMap,o=t(requireParseUtil()),a=EncloseConfiguration;e.CancelMethods={},e.CancelMethods.Cancel=function(e,t,n){var r=e.GetBrackets(t,""),i=e.ParseArg(t),s=o.default.keyvalOptions(r,a.ENCLOSE_OPTIONS);s.notation=n,e.Push(e.create("node","menclose",[i],s))},e.CancelMethods.CancelTo=function(e,t){var n=e.GetBrackets(t,""),i=e.ParseArg(t),s=e.ParseArg(t),l=o.default.keyvalOptions(n,a.ENCLOSE_OPTIONS);l.notation=[r.TexConstant.Notation.UPDIAGONALSTRIKE,r.TexConstant.Notation.UPDIAGONALARROW,r.TexConstant.Notation.NORTHEASTARROW].join(" "),i=e.create("node","mpadded",[i],{depth:"-.1em",height:"+.1em",voffset:".1em"}),e.Push(e.create("node","msup",[e.create("node","menclose",[s],l),i]))},new i.CommandMap("cancel",{cancel:["Cancel",r.TexConstant.Notation.UPDIAGONALSTRIKE],bcancel:["Cancel",r.TexConstant.Notation.DOWNDIAGONALSTRIKE],xcancel:["Cancel",r.TexConstant.Notation.UPDIAGONALSTRIKE+" "+r.TexConstant.Notation.DOWNDIAGONALSTRIKE],cancelto:"CancelTo"},e.CancelMethods),e.CancelConfiguration=n.Configuration.create("cancel",{handler:{macro:["cancel"]}})}(CancelConfiguration);var CasesConfiguration={},EmpheqUtil={};!function(e){var t=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},n=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))},r=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},i=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.EmpheqUtil=void 0;var o=i(requireParseUtil()),a=i(requireTexParser());e.EmpheqUtil={environment:function(e,r,i,o){var a=o[0],s=e.itemFactory.create(a+"-begin").setProperties({name:r,end:a});e.Push(i.apply(void 0,n([e,s],t(o.slice(1)),!1)))},splitOptions:function(e,t){return void 0===t&&(t=null),o.default.keyvalOptions(e,t,!0)},columnCount:function(e){var t,n,i=0;try{for(var o=r(e.childNodes),a=o.next();!a.done;a=o.next()){var s=a.value,l=s.childNodes.length-(s.isKind("mlabeledtr")?1:0);l>i&&(i=l)}}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}return i},cellBlock:function(e,t,n,i){var o,s,l=n.create("node","mpadded",[],{height:0,depth:0,voffset:"-1height"}),c=new a.default(e,n.stack.env,n.configuration),T=c.mml();i&&c.configuration.tags.label&&(c.configuration.tags.currentTag.env=i,c.configuration.tags.getTag(!0));try{for(var Q=r(T.isInferred?T.childNodes:[T]),d=Q.next();!d.done;d=Q.next()){var u=d.value;l.appendChild(u)}}catch(e){o={error:e}}finally{try{d&&!d.done&&(s=Q.return)&&s.call(Q)}finally{if(o)throw o.error}}return l.appendChild(n.create("node","mphantom",[n.create("node","mpadded",[t],{width:0})])),l},topRowTable:function(e,t){var n=o.default.copyNode(e,t);return n.setChildren(n.childNodes.slice(0,1)),n.attributes.set("align","baseline 1"),e.factory.create("mphantom",{},[t.create("node","mpadded",[n],{width:0})])},rowspanCell:function(e,t,n,r,i){e.appendChild(r.create("node","mpadded",[this.cellBlock(t,o.default.copyNode(n,r),r,i),this.topRowTable(n,r)],{height:0,depth:0,voffset:"height"}))},left:function(e,t,n,i,o){var a,s,l;void 0===o&&(o=""),e.attributes.set("columnalign","right "+(e.attributes.get("columnalign")||"")),e.attributes.set("columnspacing","0em "+(e.attributes.get("columnspacing")||""));try{for(var c=r(e.childNodes.slice(0).reverse()),T=c.next();!T.done;T=c.next()){var Q=T.value;l=i.create("node","mtd"),Q.childNodes.unshift(l),l.parent=Q,Q.isKind("mlabeledtr")&&(Q.childNodes[0]=Q.childNodes[1],Q.childNodes[1]=l)}}catch(e){a={error:e}}finally{try{T&&!T.done&&(s=c.return)&&s.call(c)}finally{if(a)throw a.error}}this.rowspanCell(l,n,t,i,o)},right:function(t,n,r,i,o){void 0===o&&(o=""),0===t.childNodes.length&&t.appendChild(i.create("node","mtr"));for(var a=e.EmpheqUtil.columnCount(t),s=t.childNodes[0];s.childNodes.length<a;)s.appendChild(i.create("node","mtd"));var l=s.appendChild(i.create("node","mtd"));e.EmpheqUtil.rowspanCell(l,r,n,i,o),t.attributes.set("columnalign",(t.attributes.get("columnalign")||"").split(/ /).slice(0,a).join(" ")+" left"),t.attributes.set("columnspacing",(t.attributes.get("columnspacing")||"").split(/ /).slice(0,a-1).join(" ")+" 0em")},adjustTable:function(e,t){var n=e.getProperty("left"),r=e.getProperty("right");if(n||r){var i=e.Last,a=o.default.copyNode(i,t);n&&this.left(i,a,n,t),r&&this.right(i,a,r,t)}},allowEnv:{equation:!0,align:!0,gather:!0,flalign:!0,alignat:!0,multline:!0},checkEnv:function(e){return this.allowEnv.hasOwnProperty(e.replace(/\*$/,""))||!1}}}(EmpheqUtil),function(e){var t,n,r=commonjsGlobal&&commonjsGlobal.__extends||(t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},t(e,n)},function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),i=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.CasesConfiguration=e.CasesMethods=e.CasesTags=e.CasesBeginItem=void 0;var o=Configuration,a=SymbolMap,s=i(requireParseUtil()),l=i(BaseMethods$1),c=i(TexError$1),T=AmsConfiguration,Q=EmpheqUtil,d=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"cases-begin"},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(t){return t.isKind("end")&&t.getName()===this.getName()&&this.getProperty("end")?(this.setProperty("end",!1),[[],!0]):e.prototype.checkItem.call(this,t)},t}(BaseItems.BeginItem);e.CasesBeginItem=d;var u=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.subcounter=0,t}return r(t,e),t.prototype.start=function(t,n,r){this.subcounter=0,e.prototype.start.call(this,t,n,r)},t.prototype.autoTag=function(){null==this.currentTag.tag&&("subnumcases"===this.currentTag.env?(0===this.subcounter&&this.counter++,this.subcounter++,this.tag(this.formatNumber(this.counter,this.subcounter),!1)):(0!==this.subcounter&&"numcases-left"===this.currentTag.env||this.counter++,this.tag(this.formatNumber(this.counter),!1)))},t.prototype.formatNumber=function(e,t){return void 0===t&&(t=null),e.toString()+(null===t?"":String.fromCharCode(96+t))},t}(T.AmsTags);e.CasesTags=u,e.CasesMethods={NumCases:function(e,t){if(e.stack.env.closing===t.getName()){delete e.stack.env.closing,e.Push(e.itemFactory.create("end").setProperty("name",t.getName()));var n=e.stack.Top(),r=n.Last,i=s.default.copyNode(r,e),o=n.getProperty("left");return Q.EmpheqUtil.left(r,i,o+"\\empheqlbrace\\,",e,"numcases-left"),e.Push(e.itemFactory.create("end").setProperty("name",t.getName())),null}o=e.GetArgument("\\begin{"+t.getName()+"}"),t.setProperty("left",o);var a=l.default.EqnArray(e,t,!0,!0,"ll");return a.arraydef.displaystyle=!1,a.arraydef.rowspacing=".2em",a.setProperty("numCases",!0),e.Push(t),a},Entry:function(e,t){if(!e.stack.Top().getProperty("numCases"))return l.default.Entry(e,t);e.Push(e.itemFactory.create("cell").setProperties({isEntry:!0,name:t}));for(var n=e.string,r=0,i=e.i,o=n.length;i<o;){var a=n.charAt(i);if("{"===a)r++,i++;else if("}"===a){if(0===r)break;r--,i++}else{if("&"===a&&0===r)throw new c.default("ExtraCasesAlignTab","Extra alignment tab in text for numcase environment");if("\\"===a&&0===r){var T=(n.slice(i+1).match(/^[a-z]+|./i)||[])[0];if("\\"===T||"cr"===T||"end"===T||"label"===T)break;i+=T.length}else i++}}var Q=n.substr(e.i,i-e.i).replace(/^\s*/,"");e.PushAll(s.default.internalMath(e,Q,0)),e.i=i}},new a.EnvironmentMap("cases-env",Q.EmpheqUtil.environment,{numcases:["NumCases","cases"],subnumcases:["NumCases","cases"]},e.CasesMethods),new a.MacroMap("cases-macros",{"&":"Entry"},e.CasesMethods),e.CasesConfiguration=o.Configuration.create("cases",{handler:{environment:["cases-env"],character:["cases-macros"]},items:(n={},n[d.prototype.kind]=d,n),tags:{cases:u}})}(CasesConfiguration);var CenternotConfiguration={},__values$5=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},__importDefault$k=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(CenternotConfiguration,"__esModule",{value:!0}),CenternotConfiguration.CenternotConfiguration=CenternotConfiguration.filterCenterOver=void 0;var Configuration_js_1$e=Configuration,TexParser_js_1$4=__importDefault$k(requireTexParser()),NodeUtil_js_1$5=__importDefault$k(NodeUtil$1),SymbolMap_js_1$b=SymbolMap,BaseMethods_js_1$4=__importDefault$k(BaseMethods$1);function filterCenterOver(e){var t,n,r=e.data;try{for(var i=__values$5(r.getList("centerOver")),o=i.next();!o.done;o=i.next()){var a=o.value,s=NodeUtil_js_1$5.default.getTexClass(a.childNodes[0].childNodes[0]);null!==s&&NodeUtil_js_1$5.default.setProperties(a.parent.parent.parent.parent.parent.parent,{texClass:s})}}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}}new SymbolMap_js_1$b.CommandMap("centernot",{centerOver:"CenterOver",centernot:["Macro","\\centerOver{#1}{{⧸}}",1]},{CenterOver:function(e,t){var n="{"+e.GetArgument(t)+"}",r=e.ParseArg(t),i=new TexParser_js_1$4.default(n,e.stack.env,e.configuration).mml(),o=e.create("node","TeXAtom",[new TexParser_js_1$4.default(n,e.stack.env,e.configuration).mml(),e.create("node","mpadded",[e.create("node","mpadded",[r],{width:0,lspace:"-.5width"}),e.create("node","mphantom",[i])],{width:0,lspace:"-.5width"})]);e.configuration.addNode("centerOver",i),e.Push(o)},Macro:BaseMethods_js_1$4.default.Macro}),CenternotConfiguration.filterCenterOver=filterCenterOver,CenternotConfiguration.CenternotConfiguration=Configuration_js_1$e.Configuration.create("centernot",{handler:{macro:["centernot"]},postprocessors:[filterCenterOver]});var ColorConfiguration={},ColorMethods={};!function(e){var t=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.ColorMethods=void 0;var n=t(NodeUtil$1),r=t(requireParseUtil());function i(e){var t="+".concat(e),n=e.replace(/^.*?([a-z]*)$/,"$1"),r=2*parseFloat(t);return{width:"+".concat(r).concat(n),height:t,depth:t,lspace:e}}e.ColorMethods={},e.ColorMethods.Color=function(e,t){var n=e.GetBrackets(t,""),r=e.GetArgument(t),i=e.configuration.packageData.get("color").model.getColor(n,r),o=e.itemFactory.create("style").setProperties({styles:{mathcolor:i}});e.stack.env.color=i,e.Push(o)},e.ColorMethods.TextColor=function(e,t){var n=e.GetBrackets(t,""),r=e.GetArgument(t),i=e.configuration.packageData.get("color").model.getColor(n,r),o=e.stack.env.color;e.stack.env.color=i;var a=e.ParseArg(t);o?e.stack.env.color=o:delete e.stack.env.color;var s=e.create("node","mstyle",[a],{mathcolor:i});e.Push(s)},e.ColorMethods.DefineColor=function(e,t){var n=e.GetArgument(t),r=e.GetArgument(t),i=e.GetArgument(t);e.configuration.packageData.get("color").model.defineColor(r,n,i)},e.ColorMethods.ColorBox=function(e,t){var o=e.GetArgument(t),a=r.default.internalMath(e,e.GetArgument(t)),s=e.configuration.packageData.get("color").model,l=e.create("node","mpadded",a,{mathbackground:s.getColor("named",o)});n.default.setProperties(l,i(e.options.color.padding)),e.Push(l)},e.ColorMethods.FColorBox=function(e,t){var o=e.GetArgument(t),a=e.GetArgument(t),s=r.default.internalMath(e,e.GetArgument(t)),l=e.options.color,c=e.configuration.packageData.get("color").model,T=e.create("node","mpadded",s,{mathbackground:c.getColor("named",a),style:"border: ".concat(l.borderWidth," solid ").concat(c.getColor("named",o))});n.default.setProperties(T,i(l.padding)),e.Push(T)}}(ColorMethods);var ColorUtil={},ColorConstants={};Object.defineProperty(ColorConstants,"__esModule",{value:!0}),ColorConstants.COLORS=void 0,ColorConstants.COLORS=new Map([["Apricot","#FBB982"],["Aquamarine","#00B5BE"],["Bittersweet","#C04F17"],["Black","#221E1F"],["Blue","#2D2F92"],["BlueGreen","#00B3B8"],["BlueViolet","#473992"],["BrickRed","#B6321C"],["Brown","#792500"],["BurntOrange","#F7921D"],["CadetBlue","#74729A"],["CarnationPink","#F282B4"],["Cerulean","#00A2E3"],["CornflowerBlue","#41B0E4"],["Cyan","#00AEEF"],["Dandelion","#FDBC42"],["DarkOrchid","#A4538A"],["Emerald","#00A99D"],["ForestGreen","#009B55"],["Fuchsia","#8C368C"],["Goldenrod","#FFDF42"],["Gray","#949698"],["Green","#00A64F"],["GreenYellow","#DFE674"],["JungleGreen","#00A99A"],["Lavender","#F49EC4"],["LimeGreen","#8DC73E"],["Magenta","#EC008C"],["Mahogany","#A9341F"],["Maroon","#AF3235"],["Melon","#F89E7B"],["MidnightBlue","#006795"],["Mulberry","#A93C93"],["NavyBlue","#006EB8"],["OliveGreen","#3C8031"],["Orange","#F58137"],["OrangeRed","#ED135A"],["Orchid","#AF72B0"],["Peach","#F7965A"],["Periwinkle","#7977B8"],["PineGreen","#008B72"],["Plum","#92268F"],["ProcessBlue","#00B0F0"],["Purple","#99479B"],["RawSienna","#974006"],["Red","#ED1B23"],["RedOrange","#F26035"],["RedViolet","#A1246B"],["Rhodamine","#EF559F"],["RoyalBlue","#0071BC"],["RoyalPurple","#613F99"],["RubineRed","#ED017D"],["Salmon","#F69289"],["SeaGreen","#3FBC9D"],["Sepia","#671800"],["SkyBlue","#46C5DD"],["SpringGreen","#C6DC67"],["Tan","#DA9D76"],["TealBlue","#00AEB3"],["Thistle","#D883B7"],["Turquoise","#00B4CE"],["Violet","#58429B"],["VioletRed","#EF58A0"],["White","#FFFFFF"],["WildStrawberry","#EE2967"],["Yellow","#FFF200"],["YellowGreen","#98CC70"],["YellowOrange","#FAA21A"]]);var __values$4=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},__importDefault$j=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ColorUtil,"__esModule",{value:!0}),ColorUtil.ColorModel=void 0;var TexError_js_1$8=__importDefault$j(TexError$1),ColorConstants_js_1=ColorConstants,ColorModelProcessors=new Map,ColorModel=function(){function e(){this.userColors=new Map}return e.prototype.normalizeColor=function(e,t){if(!e||"named"===e)return t;if(ColorModelProcessors.has(e))return ColorModelProcessors.get(e)(t);throw new TexError_js_1$8.default("UndefinedColorModel","Color model '%1' not defined",e)},e.prototype.getColor=function(e,t){return e&&"named"!==e?this.normalizeColor(e,t):this.getColorByName(t)},e.prototype.getColorByName=function(e){return this.userColors.has(e)?this.userColors.get(e):ColorConstants_js_1.COLORS.has(e)?ColorConstants_js_1.COLORS.get(e):e},e.prototype.defineColor=function(e,t,n){var r=this.normalizeColor(e,n);this.userColors.set(t,r)},e}();ColorUtil.ColorModel=ColorModel,ColorModelProcessors.set("rgb",(function(e){var t,n,r=e.trim().split(/\s*,\s*/),i="#";if(3!==r.length)throw new TexError_js_1$8.default("ModelArg1","Color values for the %1 model require 3 numbers","rgb");try{for(var o=__values$4(r),a=o.next();!a.done;a=o.next()){var s=a.value;if(!s.match(/^(\d+(\.\d*)?|\.\d+)$/))throw new TexError_js_1$8.default("InvalidDecimalNumber","Invalid decimal number");var l=parseFloat(s);if(l<0||l>1)throw new TexError_js_1$8.default("ModelArg2","Color values for the %1 model must be between %2 and %3","rgb","0","1");var c=Math.floor(255*l).toString(16);c.length<2&&(c="0"+c),i+=c}}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}return i})),ColorModelProcessors.set("RGB",(function(e){var t,n,r=e.trim().split(/\s*,\s*/),i="#";if(3!==r.length)throw new TexError_js_1$8.default("ModelArg1","Color values for the %1 model require 3 numbers","RGB");try{for(var o=__values$4(r),a=o.next();!a.done;a=o.next()){var s=a.value;if(!s.match(/^\d+$/))throw new TexError_js_1$8.default("InvalidNumber","Invalid number");var l=parseInt(s);if(l>255)throw new TexError_js_1$8.default("ModelArg2","Color values for the %1 model must be between %2 and %3","RGB","0","255");var c=l.toString(16);c.length<2&&(c="0"+c),i+=c}}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}return i})),ColorModelProcessors.set("gray",(function(e){if(!e.match(/^\s*(\d+(\.\d*)?|\.\d+)\s*$/))throw new TexError_js_1$8.default("InvalidDecimalNumber","Invalid decimal number");var t=parseFloat(e);if(t<0||t>1)throw new TexError_js_1$8.default("ModelArg2","Color values for the %1 model must be between %2 and %3","gray","0","1");var n=Math.floor(255*t).toString(16);return n.length<2&&(n="0"+n),"#".concat(n).concat(n).concat(n)})),Object.defineProperty(ColorConfiguration,"__esModule",{value:!0}),ColorConfiguration.ColorConfiguration=void 0;var SymbolMap_js_1$a=SymbolMap,Configuration_js_1$d=Configuration,ColorMethods_js_1=ColorMethods,ColorUtil_js_1=ColorUtil;new SymbolMap_js_1$a.CommandMap("color",{color:"Color",textcolor:"TextColor",definecolor:"DefineColor",colorbox:"ColorBox",fcolorbox:"FColorBox"},ColorMethods_js_1.ColorMethods);var config$1=function(e,t){t.parseOptions.packageData.set("color",{model:new ColorUtil_js_1.ColorModel})};ColorConfiguration.ColorConfiguration=Configuration_js_1$d.Configuration.create("color",{handler:{macro:["color"]},options:{color:{padding:"5px",borderWidth:"2px"}},config:config$1});var ColorV2Configuration={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ColorConfiguration=e.ColorV2Methods=void 0;var t=SymbolMap,n=Configuration;e.ColorV2Methods={Color:function(e,t){var n=e.GetArgument(t),r=e.stack.env.color;e.stack.env.color=n;var i=e.ParseArg(t);r?e.stack.env.color=r:delete e.stack.env.color;var o=e.create("node","mstyle",[i],{mathcolor:n});e.Push(o)}},new t.CommandMap("colorv2",{color:"Color"},e.ColorV2Methods),e.ColorConfiguration=n.Configuration.create("colorv2",{handler:{macro:["colorv2"]}})}(ColorV2Configuration);var ColortblConfiguration={},__extends$6=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__importDefault$i=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ColortblConfiguration,"__esModule",{value:!0}),ColortblConfiguration.ColortblConfiguration=ColortblConfiguration.ColorArrayItem=void 0;var BaseItems_js_1$2=BaseItems,Configuration_js_1$c=Configuration,SymbolMap_js_1$9=SymbolMap,TexError_js_1$7=__importDefault$i(TexError$1),ColorArrayItem=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.color={cell:"",row:"",col:[]},t.hasColor=!1,t}return __extends$6(t,e),t.prototype.EndEntry=function(){e.prototype.EndEntry.call(this);var t=this.row[this.row.length-1],n=this.color.cell||this.color.row||this.color.col[this.row.length-1];n&&(t.attributes.set("mathbackground",n),this.color.cell="",this.hasColor=!0)},t.prototype.EndRow=function(){e.prototype.EndRow.call(this),this.color.row=""},t.prototype.createMml=function(){var t=e.prototype.createMml.call(this),n=t.isKind("mrow")?t.childNodes[1]:t;return n.isKind("menclose")&&(n=n.childNodes[0].childNodes[0]),this.hasColor&&"none"===n.attributes.get("frame")&&n.attributes.set("frame",""),t},t}(BaseItems_js_1$2.ArrayItem);ColortblConfiguration.ColorArrayItem=ColorArrayItem,new SymbolMap_js_1$9.CommandMap("colortbl",{cellcolor:["TableColor","cell"],rowcolor:["TableColor","row"],columncolor:["TableColor","col"]},{TableColor:function(e,t,n){var r=e.configuration.packageData.get("color").model,i=e.GetBrackets(t,""),o=r.getColor(i,e.GetArgument(t)),a=e.stack.Top();if(!(a instanceof ColorArrayItem))throw new TexError_js_1$7.default("UnsupportedTableColor","Unsupported use of %1",e.currentCS);if("col"===n){if(a.table.length)throw new TexError_js_1$7.default("ColumnColorNotTop","%1 must be in the top row",t);a.color.col[a.row.length]=o,e.GetBrackets(t,"")&&e.GetBrackets(t,"")}else if(a.color[n]=o,"row"===n&&(a.Size()||a.row.length))throw new TexError_js_1$7.default("RowColorNotFirst","%1 must be at the beginning of a row",t)}});var config=function(e,t){t.parseOptions.packageData.has("color")||Configuration_js_1$c.ConfigurationHandler.get("color").config(e,t)};ColortblConfiguration.ColortblConfiguration=Configuration_js_1$c.Configuration.create("colortbl",{handler:{macro:["colortbl"]},items:{array:ColorArrayItem},priority:10,config:[config,10]});var ConfigMacrosConfiguration={},NewcommandMethods$1={},NewcommandUtil$1={},__importDefault$h=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(NewcommandUtil$1,"__esModule",{value:!0});var NewcommandUtil,ParseUtil_js_1$5=__importDefault$h(requireParseUtil()),TexError_js_1$6=__importDefault$h(TexError$1),Symbol_js_1$1=_Symbol;!function(e){function t(e,t){return e.string.substr(e.i,t.length)!==t||t.match(/\\[a-z]+$/i)&&e.string.charAt(e.i+t.length).match(/[a-z]/i)?0:(e.i+=t.length,1)}e.disassembleSymbol=function(e,t){var n=[e,t.char];if(t.attributes)for(var r in t.attributes)n.push(r),n.push(t.attributes[r]);return n},e.assembleSymbol=function(e){for(var t=e[0],n=e[1],r={},i=2;i<e.length;i+=2)r[e[i]]=e[i+1];return new Symbol_js_1$1.Symbol(t,n,r)},e.GetCSname=function(e,t){if("\\"!==e.GetNext())throw new TexError_js_1$6.default("MissingCS","%1 must be followed by a control sequence",t);return ParseUtil_js_1$5.default.trimSpaces(e.GetArgument(t)).substr(1)},e.GetCsNameArgument=function(e,t){var n=ParseUtil_js_1$5.default.trimSpaces(e.GetArgument(t));if("\\"===n.charAt(0)&&(n=n.substr(1)),!n.match(/^(.|[a-z]+)$/i))throw new TexError_js_1$6.default("IllegalControlSequenceName","Illegal control sequence name for %1",t);return n},e.GetArgCount=function(e,t){var n=e.GetBrackets(t);if(n&&!(n=ParseUtil_js_1$5.default.trimSpaces(n)).match(/^[0-9]+$/))throw new TexError_js_1$6.default("IllegalParamNumber","Illegal number of parameters specified in %1",t);return n},e.GetTemplate=function(e,t,n){for(var r=e.GetNext(),i=[],o=0,a=e.i;e.i<e.string.length;){if("#"===(r=e.GetNext())){if(a!==e.i&&(i[o]=e.string.substr(a,e.i-a)),!(r=e.string.charAt(++e.i)).match(/^[1-9]$/))throw new TexError_js_1$6.default("CantUseHash2","Illegal use of # in template for %1",n);if(parseInt(r)!==++o)throw new TexError_js_1$6.default("SequentialParam","Parameters for %1 must be numbered sequentially",n);a=e.i+1}else if("{"===r)return a!==e.i&&(i[o]=e.string.substr(a,e.i-a)),i.length>0?[o.toString()].concat(i):o;e.i++}throw new TexError_js_1$6.default("MissingReplacementString","Missing replacement string for definition of %1",t)},e.GetParameter=function(e,n,r){if(null==r)return e.GetArgument(n);for(var i=e.i,o=0,a=0;e.i<e.string.length;){var s=e.string.charAt(e.i);if("{"===s)e.i===i&&(a=1),e.GetArgument(n),o=e.i-i;else{if(t(e,r))return a&&(i++,o-=2),e.string.substr(i,o);if("\\"===s){e.i++,o++,a=0;var l=e.string.substr(e.i).match(/[a-z]+|./i);l&&(e.i+=l[0].length,o=e.i-i)}else e.i++,o++,a=0}}throw new TexError_js_1$6.default("RunawayArgument","Runaway argument for %1?",n)},e.MatchParam=t,e.addDelimiter=function(t,n,r,i){t.configuration.handlers.retrieve(e.NEW_DELIMITER).add(n,new Symbol_js_1$1.Symbol(n,r,i))},e.addMacro=function(t,n,r,i,o){void 0===o&&(o=""),t.configuration.handlers.retrieve(e.NEW_COMMAND).add(n,new Symbol_js_1$1.Macro(o||n,r,i))},e.addEnvironment=function(t,n,r,i){t.configuration.handlers.retrieve(e.NEW_ENVIRONMENT).add(n,new Symbol_js_1$1.Macro(n,r,i))},e.NEW_DELIMITER="new-Delimiter",e.NEW_COMMAND="new-Command",e.NEW_ENVIRONMENT="new-Environment"}(NewcommandUtil||(NewcommandUtil={})),NewcommandUtil$1.default=NewcommandUtil;var __createBinding$1=commonjsGlobal&&commonjsGlobal.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),__setModuleDefault$1=commonjsGlobal&&commonjsGlobal.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar$1=commonjsGlobal&&commonjsGlobal.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&__createBinding$1(t,e,n);return __setModuleDefault$1(t,e),t},__importDefault$g=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(NewcommandMethods$1,"__esModule",{value:!0});var TexError_js_1$5=__importDefault$g(TexError$1),sm$1=__importStar$1(SymbolMap),BaseMethods_js_1$3=__importDefault$g(BaseMethods$1),ParseUtil_js_1$4=__importDefault$g(requireParseUtil()),NewcommandUtil_js_1$1=__importDefault$g(NewcommandUtil$1),NewcommandMethods={NewCommand:function(e,t){var n=NewcommandUtil_js_1$1.default.GetCsNameArgument(e,t),r=NewcommandUtil_js_1$1.default.GetArgCount(e,t),i=e.GetBrackets(t),o=e.GetArgument(t);NewcommandUtil_js_1$1.default.addMacro(e,n,NewcommandMethods.Macro,[o,r,i])},NewEnvironment:function(e,t){var n=ParseUtil_js_1$4.default.trimSpaces(e.GetArgument(t)),r=NewcommandUtil_js_1$1.default.GetArgCount(e,t),i=e.GetBrackets(t),o=e.GetArgument(t),a=e.GetArgument(t);NewcommandUtil_js_1$1.default.addEnvironment(e,n,NewcommandMethods.BeginEnv,[!0,o,a,r,i])},MacroDef:function(e,t){var n=NewcommandUtil_js_1$1.default.GetCSname(e,t),r=NewcommandUtil_js_1$1.default.GetTemplate(e,t,"\\"+n),i=e.GetArgument(t);r instanceof Array?NewcommandUtil_js_1$1.default.addMacro(e,n,NewcommandMethods.MacroWithTemplate,[i].concat(r)):NewcommandUtil_js_1$1.default.addMacro(e,n,NewcommandMethods.Macro,[i,r])},Let:function(e,t){var n=NewcommandUtil_js_1$1.default.GetCSname(e,t),r=e.GetNext();"="===r&&(e.i++,r=e.GetNext());var i=e.configuration.handlers;if("\\"!==r){e.i++;var o=i.get("delimiter").lookup(r);o?NewcommandUtil_js_1$1.default.addDelimiter(e,"\\"+n,o.char,o.attributes):NewcommandUtil_js_1$1.default.addMacro(e,n,NewcommandMethods.Macro,[r])}else{t=NewcommandUtil_js_1$1.default.GetCSname(e,t);var a=i.get("delimiter").lookup("\\"+t);if(a)return void NewcommandUtil_js_1$1.default.addDelimiter(e,"\\"+n,a.char,a.attributes);var s=i.get("macro").applicable(t);if(!s)return;if(s instanceof sm$1.MacroMap){var l=s.lookup(t);return void NewcommandUtil_js_1$1.default.addMacro(e,n,l.func,l.args,l.symbol)}a=s.lookup(t);var c=NewcommandUtil_js_1$1.default.disassembleSymbol(n,a);NewcommandUtil_js_1$1.default.addMacro(e,n,(function(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];var i=NewcommandUtil_js_1$1.default.assembleSymbol(n);return s.parser(e,i)}),c)}},MacroWithTemplate:function(e,t,n,r){for(var i=[],o=4;o<arguments.length;o++)i[o-4]=arguments[o];var a=parseInt(r,10);if(a){var s=[];if(e.GetNext(),i[0]&&!NewcommandUtil_js_1$1.default.MatchParam(e,i[0]))throw new TexError_js_1$5.default("MismatchUseDef","Use of %1 doesn't match its definition",t);for(var l=0;l<a;l++)s.push(NewcommandUtil_js_1$1.default.GetParameter(e,t,i[l+1]));n=ParseUtil_js_1$4.default.substituteArgs(e,s,n)}e.string=ParseUtil_js_1$4.default.addArgs(e,n,e.string.slice(e.i)),e.i=0,ParseUtil_js_1$4.default.checkMaxMacros(e)},BeginEnv:function(e,t,n,r,i,o){if(t.getProperty("end")&&e.stack.env.closing===t.getName()){delete e.stack.env.closing;var a=e.string.slice(e.i);return e.string=r,e.i=0,e.Parse(),e.string=a,e.i=0,e.itemFactory.create("end").setProperty("name",t.getName())}if(i){var s=[];if(null!=o){var l=e.GetBrackets("\\begin{"+t.getName()+"}");s.push(null==l?o:l)}for(var c=s.length;c<i;c++)s.push(e.GetArgument("\\begin{"+t.getName()+"}"));n=ParseUtil_js_1$4.default.substituteArgs(e,s,n),r=ParseUtil_js_1$4.default.substituteArgs(e,[],r)}return e.string=ParseUtil_js_1$4.default.addArgs(e,n,e.string.slice(e.i)),e.i=0,e.itemFactory.create("beginEnv").setProperty("name",t.getName())}};NewcommandMethods.Macro=BaseMethods_js_1$3.default.Macro,NewcommandMethods$1.default=NewcommandMethods;var NewcommandItems={},__extends$5=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__importDefault$f=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(NewcommandItems,"__esModule",{value:!0}),NewcommandItems.BeginEnvItem=void 0;var TexError_js_1$4=__importDefault$f(TexError$1),StackItem_js_1$1=StackItem,BeginEnvItem=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$5(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"beginEnv"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isOpen",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(t){if(t.isKind("end")){if(t.getName()!==this.getName())throw new TexError_js_1$4.default("EnvBadEnd","\\begin{%1} ended with \\end{%2}",this.getName(),t.getName());return[[this.factory.create("mml",this.toMml())],!0]}if(t.isKind("stop"))throw new TexError_js_1$4.default("EnvMissingEnd","Missing \\end{%1}",this.getName());return e.prototype.checkItem.call(this,t)},t}(StackItem_js_1$1.BaseItem);NewcommandItems.BeginEnvItem=BeginEnvItem;var _a$3,__values$3=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},__importDefault$e=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ConfigMacrosConfiguration,"__esModule",{value:!0}),ConfigMacrosConfiguration.ConfigMacrosConfiguration=void 0;var Configuration_js_1$b=Configuration,Options_js_1=Options,SymbolMap_js_1$8=SymbolMap,ParseMethods_js_1$2=__importDefault$e(ParseMethods$1),Symbol_js_1=_Symbol,NewcommandMethods_js_1$1=__importDefault$e(NewcommandMethods$1),NewcommandItems_js_1$1=NewcommandItems,MACROSMAP="configmacros-map",ENVIRONMENTMAP="configmacros-env-map";function configmacrosInit(e){new SymbolMap_js_1$8.CommandMap(MACROSMAP,{},{}),new SymbolMap_js_1$8.EnvironmentMap(ENVIRONMENTMAP,ParseMethods_js_1$2.default.environment,{},{}),e.append(Configuration_js_1$b.Configuration.local({handler:{macro:[MACROSMAP],environment:[ENVIRONMENTMAP]},priority:3}))}function configmacrosConfig(e,t){configMacros(t),configEnvironments(t)}function configMacros(e){var t,n,r=e.parseOptions.handlers.retrieve(MACROSMAP),i=e.parseOptions.options.macros;try{for(var o=__values$3(Object.keys(i)),a=o.next();!a.done;a=o.next()){var s=a.value,l="string"==typeof i[s]?[i[s]]:i[s],c=Array.isArray(l[2])?new Symbol_js_1.Macro(s,NewcommandMethods_js_1$1.default.MacroWithTemplate,l.slice(0,2).concat(l[2])):new Symbol_js_1.Macro(s,NewcommandMethods_js_1$1.default.Macro,l);r.add(s,c)}}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}}function configEnvironments(e){var t,n,r=e.parseOptions.handlers.retrieve(ENVIRONMENTMAP),i=e.parseOptions.options.environments;try{for(var o=__values$3(Object.keys(i)),a=o.next();!a.done;a=o.next()){var s=a.value;r.add(s,new Symbol_js_1.Macro(s,NewcommandMethods_js_1$1.default.BeginEnv,[!0].concat(i[s])))}}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}}ConfigMacrosConfiguration.ConfigMacrosConfiguration=Configuration_js_1$b.Configuration.create("configmacros",{init:configmacrosInit,config:configmacrosConfig,items:(_a$3={},_a$3[NewcommandItems_js_1$1.BeginEnvItem.prototype.kind]=NewcommandItems_js_1$1.BeginEnvItem,_a$3),options:{macros:(0,Options_js_1.expandable)({}),environments:(0,Options_js_1.expandable)({})}});var EmpheqConfiguration={};!function(e){var t,n,r=commonjsGlobal&&commonjsGlobal.__extends||(t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},t(e,n)},function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}),i=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},o=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.EmpheqConfiguration=e.EmpheqMethods=e.EmpheqBeginItem=void 0;var a=Configuration,s=SymbolMap,l=o(requireParseUtil()),c=o(TexError$1),T=EmpheqUtil,Q=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"empheq-begin"},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(t){return t.isKind("end")&&t.getName()===this.getName()&&this.setProperty("end",!1),e.prototype.checkItem.call(this,t)},t}(BaseItems.BeginItem);e.EmpheqBeginItem=Q,e.EmpheqMethods={Empheq:function(e,t){if(e.stack.env.closing===t.getName()){delete e.stack.env.closing,e.Push(e.itemFactory.create("end").setProperty("name",e.stack.global.empheq)),e.stack.global.empheq="";var n=e.stack.Top();T.EmpheqUtil.adjustTable(n,e),e.Push(e.itemFactory.create("end").setProperty("name","empheq"))}else{l.default.checkEqnEnv(e),delete e.stack.global.eqnenv;var r=e.GetBrackets("\\begin{"+t.getName()+"}")||"",o=i((e.GetArgument("\\begin{"+t.getName()+"}")||"").split(/=/),2),a=o[0],s=o[1];if(!T.EmpheqUtil.checkEnv(a))throw new c.default("UnknownEnv",'Unknown environment "%1"',a);r&&t.setProperties(T.EmpheqUtil.splitOptions(r,{left:1,right:1})),e.stack.global.empheq=a,e.string="\\begin{"+a+"}"+(s?"{"+s+"}":"")+e.string.slice(e.i),e.i=0,e.Push(t)}},EmpheqMO:function(e,t,n){e.Push(e.create("token","mo",{},n))},EmpheqDelim:function(e,t){var n=e.GetDelimiter(t);e.Push(e.create("token","mo",{stretchy:!0,symmetric:!0},n))}},new s.EnvironmentMap("empheq-env",T.EmpheqUtil.environment,{empheq:["Empheq","empheq"]},e.EmpheqMethods),new s.CommandMap("empheq-macros",{empheqlbrace:["EmpheqMO","{"],empheqrbrace:["EmpheqMO","}"],empheqlbrack:["EmpheqMO","["],empheqrbrack:["EmpheqMO","]"],empheqlangle:["EmpheqMO","⟨"],empheqrangle:["EmpheqMO","⟩"],empheqlparen:["EmpheqMO","("],empheqrparen:["EmpheqMO",")"],empheqlvert:["EmpheqMO","|"],empheqrvert:["EmpheqMO","|"],empheqlVert:["EmpheqMO","‖"],empheqrVert:["EmpheqMO","‖"],empheqlfloor:["EmpheqMO","⌊"],empheqrfloor:["EmpheqMO","⌋"],empheqlceil:["EmpheqMO","⌈"],empheqrceil:["EmpheqMO","⌉"],empheqbiglbrace:["EmpheqMO","{"],empheqbigrbrace:["EmpheqMO","}"],empheqbiglbrack:["EmpheqMO","["],empheqbigrbrack:["EmpheqMO","]"],empheqbiglangle:["EmpheqMO","⟨"],empheqbigrangle:["EmpheqMO","⟩"],empheqbiglparen:["EmpheqMO","("],empheqbigrparen:["EmpheqMO",")"],empheqbiglvert:["EmpheqMO","|"],empheqbigrvert:["EmpheqMO","|"],empheqbiglVert:["EmpheqMO","‖"],empheqbigrVert:["EmpheqMO","‖"],empheqbiglfloor:["EmpheqMO","⌊"],empheqbigrfloor:["EmpheqMO","⌋"],empheqbiglceil:["EmpheqMO","⌈"],empheqbigrceil:["EmpheqMO","⌉"],empheql:"EmpheqDelim",empheqr:"EmpheqDelim",empheqbigl:"EmpheqDelim",empheqbigr:"EmpheqDelim"},e.EmpheqMethods),e.EmpheqConfiguration=a.Configuration.create("empheq",{handler:{macro:["empheq-macros"],environment:["empheq-env"]},items:(n={},n[Q.prototype.kind]=Q,n)})}(EmpheqConfiguration);var ExtpfeilConfiguration={},NewcommandConfiguration={},__importDefault$d=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},NewcommandMethods_js_1=__importDefault$d(NewcommandMethods$1),SymbolMap_js_1$7=SymbolMap;new SymbolMap_js_1$7.CommandMap("Newcommand-macros",{newcommand:"NewCommand",renewcommand:"NewCommand",newenvironment:"NewEnvironment",renewenvironment:"NewEnvironment",def:"MacroDef",let:"Let"},NewcommandMethods_js_1.default);var _a$2,__createBinding=commonjsGlobal&&commonjsGlobal.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),__setModuleDefault=commonjsGlobal&&commonjsGlobal.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=commonjsGlobal&&commonjsGlobal.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&__createBinding(t,e,n);return __setModuleDefault(t,e),t},__importDefault$c=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(NewcommandConfiguration,"__esModule",{value:!0}),NewcommandConfiguration.NewcommandConfiguration=void 0;var Configuration_js_1$a=Configuration,NewcommandItems_js_1=NewcommandItems,NewcommandUtil_js_1=__importDefault$c(NewcommandUtil$1),ParseMethods_js_1$1=__importDefault$c(ParseMethods$1),sm=__importStar(SymbolMap),init=function(e){new sm.DelimiterMap(NewcommandUtil_js_1.default.NEW_DELIMITER,ParseMethods_js_1$1.default.delimiter,{}),new sm.CommandMap(NewcommandUtil_js_1.default.NEW_COMMAND,{},{}),new sm.EnvironmentMap(NewcommandUtil_js_1.default.NEW_ENVIRONMENT,ParseMethods_js_1$1.default.environment,{},{}),e.append(Configuration_js_1$a.Configuration.local({handler:{character:[],delimiter:[NewcommandUtil_js_1.default.NEW_DELIMITER],macro:[NewcommandUtil_js_1.default.NEW_DELIMITER,NewcommandUtil_js_1.default.NEW_COMMAND],environment:[NewcommandUtil_js_1.default.NEW_ENVIRONMENT]},priority:-1}))};NewcommandConfiguration.NewcommandConfiguration=Configuration_js_1$a.Configuration.create("newcommand",{handler:{macro:["Newcommand-macros"]},items:(_a$2={},_a$2[NewcommandItems_js_1.BeginEnvItem.prototype.kind]=NewcommandItems_js_1.BeginEnvItem,_a$2),options:{maxMacros:1e3},init:init}),function(e){var t=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.ExtpfeilConfiguration=e.ExtpfeilMethods=void 0;var n=Configuration,r=SymbolMap,i=AmsMethods,o=t(NewcommandUtil$1),a=NewcommandConfiguration,s=t(TexError$1);e.ExtpfeilMethods={},e.ExtpfeilMethods.xArrow=i.AmsMethods.xArrow,e.ExtpfeilMethods.NewExtArrow=function(t,n){var r=t.GetArgument(n),i=t.GetArgument(n),a=t.GetArgument(n);if(!r.match(/^\\([a-z]+|.)$/i))throw new s.default("NewextarrowArg1","First argument to %1 must be a control sequence name",n);if(!i.match(/^(\d+),(\d+)$/))throw new s.default("NewextarrowArg2","Second argument to %1 must be two integers separated by a comma",n);if(!a.match(/^(\d+|0x[0-9A-F]+)$/i))throw new s.default("NewextarrowArg3","Third argument to %1 must be a unicode character number",n);r=r.substr(1);var l=i.split(",");o.default.addMacro(t,r,e.ExtpfeilMethods.xArrow,[parseInt(a),parseInt(l[0]),parseInt(l[1])])},new r.CommandMap("extpfeil",{xtwoheadrightarrow:["xArrow",8608,12,16],xtwoheadleftarrow:["xArrow",8606,17,13],xmapsto:["xArrow",8614,6,7],xlongequal:["xArrow",61,7,7],xtofrom:["xArrow",8644,12,12],Newextarrow:"NewExtArrow"},e.ExtpfeilMethods),e.ExtpfeilConfiguration=n.Configuration.create("extpfeil",{handler:{macro:["extpfeil"]},init:function(e){a.NewcommandConfiguration.init(e)}})}(ExtpfeilConfiguration);var GensymbConfiguration={};Object.defineProperty(GensymbConfiguration,"__esModule",{value:!0}),GensymbConfiguration.GensymbConfiguration=void 0;var Configuration_js_1$9=Configuration,TexConstants_js_1$5=TexConstants,SymbolMap_js_1$6=SymbolMap;function mathcharUnit(e,t){var n=t.attributes||{};n.mathvariant=TexConstants_js_1$5.TexConstant.Variant.NORMAL,n.class="MathML-Unit";var r=e.create("token","mi",n,t.char);e.Push(r)}new SymbolMap_js_1$6.CharacterMap("gensymb-symbols",mathcharUnit,{ohm:"Ω",degree:"°",celsius:"℃",perthousand:"‰",micro:"µ"}),GensymbConfiguration.GensymbConfiguration=Configuration_js_1$9.Configuration.create("gensymb",{handler:{macro:["gensymb-symbols"]}});var HtmlConfiguration={},HtmlMethods$1={},__importDefault$b=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(HtmlMethods$1,"__esModule",{value:!0});var NodeUtil_js_1$4=__importDefault$b(NodeUtil$1),HtmlMethods={Href:function(e,t){var n=e.GetArgument(t),r=GetArgumentMML(e,t);NodeUtil_js_1$4.default.setAttribute(r,"href",n),e.Push(r)},Class:function(e,t){var n=e.GetArgument(t),r=GetArgumentMML(e,t),i=NodeUtil_js_1$4.default.getAttribute(r,"class");i&&(n=i+" "+n),NodeUtil_js_1$4.default.setAttribute(r,"class",n),e.Push(r)},Style:function(e,t){var n=e.GetArgument(t),r=GetArgumentMML(e,t),i=NodeUtil_js_1$4.default.getAttribute(r,"style");i&&(";"!==n.charAt(n.length-1)&&(n+=";"),n=i+" "+n),NodeUtil_js_1$4.default.setAttribute(r,"style",n),e.Push(r)},Id:function(e,t){var n=e.GetArgument(t),r=GetArgumentMML(e,t);NodeUtil_js_1$4.default.setAttribute(r,"id",n),e.Push(r)}},GetArgumentMML=function(e,t){var n=e.ParseArg(t);if(!NodeUtil_js_1$4.default.isInferred(n))return n;var r=NodeUtil_js_1$4.default.getChildren(n);if(1===r.length)return r[0];var i=e.create("node","mrow");return NodeUtil_js_1$4.default.copyChildren(n,i),NodeUtil_js_1$4.default.copyAttributes(n,i),i};HtmlMethods$1.default=HtmlMethods;var __importDefault$a=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(HtmlConfiguration,"__esModule",{value:!0}),HtmlConfiguration.HtmlConfiguration=void 0;var Configuration_js_1$8=Configuration,SymbolMap_js_1$5=SymbolMap,HtmlMethods_js_1=__importDefault$a(HtmlMethods$1);new SymbolMap_js_1$5.CommandMap("html_macros",{href:"Href",class:"Class",style:"Style",cssId:"Id"},HtmlMethods_js_1.default),HtmlConfiguration.HtmlConfiguration=Configuration_js_1$8.Configuration.create("html",{handler:{macro:["html_macros"]}});var hasRequiredMathtoolsUtil,hasRequiredMathtoolsMethods,hasRequiredMathtoolsMappings,MathtoolsConfiguration={},MathtoolsMappings={},MathtoolsMethods={},MathtoolsUtil={};function requireMathtoolsUtil(){if(hasRequiredMathtoolsUtil)return MathtoolsUtil;hasRequiredMathtoolsUtil=1;var e=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},t=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(MathtoolsUtil,"__esModule",{value:!0}),MathtoolsUtil.MathtoolsUtil=void 0;var n=BaseItems,r=t(requireParseUtil()),i=t(requireTexParser()),o=t(TexError$1),a=_Symbol,s=Options,l=requireMathtoolsMethods(),c=requireMathtoolsConfiguration();return MathtoolsUtil.MathtoolsUtil={setDisplayLevel:function(t,n){if(n){var r=e((0,s.lookup)(n,{"\\displaystyle":[!0,0],"\\textstyle":[!1,0],"\\scriptstyle":[!1,1],"\\scriptscriptstyle":[!1,2]},[null,null]),2),i=r[0],o=r[1];null!==i&&(t.attributes.set("displaystyle",i),t.attributes.set("scriptlevel",o))}},checkAlignment:function(e,t){var r=e.stack.Top();if(r.kind!==n.EqnArrayItem.prototype.kind)throw new o.default("NotInAlignment","%1 can only be used in aligment environments",t);return r},addPairedDelims:function(e,t,n){e.handlers.retrieve(c.PAIREDDELIMS).add(t,new a.Macro(t,l.MathtoolsMethods.PairedDelimiters,n))},spreadLines:function(e,t){if(e.isKind("mtable")){var n=e.attributes.get("rowspacing");if(n){var i=r.default.dimen2em(t);n=n.split(/ /).map((function(e){return r.default.Em(Math.max(0,r.default.dimen2em(e)+i))})).join(" ")}else n=t;e.attributes.set("rowspacing",n)}},plusOrMinus:function(e,t){if(!(t=t.trim()).match(/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)$/))throw new o.default("NotANumber","Argument to %1 is not a number",e);return t.match(/^[-+]/)?t:"+"+t},getScript:function(e,t,n){var o=r.default.trimSpaces(e.GetArgument(t));if(""===o)return e.create("node","none");var a=e.options.mathtools["prescript-".concat(n,"-format")];return a&&(o="".concat(a,"{").concat(o,"}")),new i.default(o,e.stack.env,e.configuration).mml()}},MathtoolsUtil}function requireMathtoolsMethods(){return hasRequiredMathtoolsMethods||(hasRequiredMathtoolsMethods=1,function(e){var t=commonjsGlobal&&commonjsGlobal.__assign||function(){return t=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},t.apply(this,arguments)},n=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},r=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},i=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.MathtoolsMethods=void 0;var o=i(requireParseUtil()),a=AmsMethods,s=i(BaseMethods$1),l=i(requireTexParser()),c=i(TexError$1),T=i(NodeUtil$1),Q=MmlNode,d=lengths,u=Options,p=i(NewcommandUtil$1),h=i(NewcommandMethods$1),m=requireMathtoolsUtil();e.MathtoolsMethods={MtMatrix:function(t,n,r,i){var o=t.GetBrackets("\\begin{".concat(n.getName(),"}"),"c");return e.MathtoolsMethods.Array(t,n,r,i,o)},MtSmallMatrix:function(t,n,r,i,a){return a||(a=t.GetBrackets("\\begin{".concat(n.getName(),"}"),t.options.mathtools["smallmatrix-align"])),e.MathtoolsMethods.Array(t,n,r,i,a,o.default.Em(1/3),".2em","S",1)},MtMultlined:function(e,t){var r,i="\\begin{".concat(t.getName(),"}"),a=e.GetBrackets(i,e.options.mathtools["multlined-pos"]||"c"),s=a?e.GetBrackets(i,""):"";a&&!a.match(/^[cbt]$/)&&(s=(r=n([a,s],2))[0],a=r[1]),e.Push(t);var l=e.itemFactory.create("multlined",e,t);return l.arraydef={displaystyle:!0,rowspacing:".5em",width:s||"auto",columnwidth:"100%"},o.default.setArrayAlign(l,a||"c")},HandleShove:function(e,t,n){var r=e.stack.Top();if("multline"!==r.kind&&"multlined"!==r.kind)throw new c.default("CommandInMultlined","%1 can only appear within the multline or multlined environments",t);if(r.Size())throw new c.default("CommandAtTheBeginingOfLine","%1 must come at the beginning of the line",t);r.setProperty("shove",n);var i=e.GetBrackets(t),o=e.ParseArg(t);if(i){var a=e.create("node","mrow",[]),s=e.create("node","mspace",[],{width:i});"left"===n?(a.appendChild(s),a.appendChild(o)):(a.appendChild(o),a.appendChild(s)),o=a}e.Push(o)},SpreadLines:function(e,t){var n,i;if(e.stack.env.closing===t.getName()){delete e.stack.env.closing;var o=e.stack.Pop(),a=o.toMml(),s=o.getProperty("spread");if(a.isInferred)try{for(var l=r(T.default.getChildren(a)),c=l.next();!c.done;c=l.next()){var Q=c.value;m.MathtoolsUtil.spreadLines(Q,s)}}catch(e){n={error:e}}finally{try{c&&!c.done&&(i=l.return)&&i.call(l)}finally{if(n)throw n.error}}else m.MathtoolsUtil.spreadLines(a,s);e.Push(a)}else s=e.GetDimen("\\begin{".concat(t.getName(),"}")),t.setProperty("spread",s),e.Push(t)},Cases:function(e,t,n,r,i){var o=e.itemFactory.create("array").setProperty("casesEnv",t.getName());return o.arraydef={rowspacing:".2em",columnspacing:"1em",columnalign:"left"},"D"===i&&(o.arraydef.displaystyle=!0),o.setProperties({open:n,close:r}),e.Push(t),o},MathLap:function(e,n,r,i){var o=e.GetBrackets(n,"").trim(),a=e.create("node","mstyle",[e.create("node","mpadded",[e.ParseArg(n)],t({width:0},"r"===r?{}:{lspace:"l"===r?"-1width":"-.5width"}))],{"data-cramped":i});m.MathtoolsUtil.setDisplayLevel(a,o),e.Push(e.create("node","TeXAtom",[a]))},Cramped:function(e,t){var n=e.GetBrackets(t,"").trim(),r=e.ParseArg(t),i=e.create("node","mstyle",[r],{"data-cramped":!0});m.MathtoolsUtil.setDisplayLevel(i,n),e.Push(i)},MtLap:function(e,t,n){var r=o.default.internalMath(e,e.GetArgument(t),0),i=e.create("node","mpadded",r,{width:0});"r"!==n&&T.default.setAttribute(i,"lspace","l"===n?"-1width":"-.5width"),e.Push(i)},MathMakeBox:function(e,t){var n=e.GetBrackets(t),r=e.GetBrackets(t,"c"),i=e.create("node","mpadded",[e.ParseArg(t)]);n&&T.default.setAttribute(i,"width",n);var o=(0,u.lookup)(r,{c:"center",r:"right"},"");o&&T.default.setAttribute(i,"data-align",o),e.Push(i)},MathMBox:function(e,t){e.Push(e.create("node","mrow",[e.ParseArg(t)]))},UnderOverBracket:function(e,t){var r=(0,d.length2em)(e.GetBrackets(t,".1em"),.1),i=e.GetBrackets(t,".2em"),a=e.GetArgument(t),s=n("o"===t.charAt(1)?["over","accent","bottom"]:["under","accentunder","top"],3),c=s[0],Q=s[1],u=s[2],p=(0,d.em)(r),h=new l.default(a,e.stack.env,e.configuration).mml(),m=new l.default(a,e.stack.env,e.configuration).mml(),f=e.create("node","mpadded",[e.create("node","mphantom",[m])],{style:"border: ".concat(p," solid; border-").concat(u,": none"),height:i,depth:0}),g=o.default.underOver(e,h,f,c,!0),b=T.default.getChildAt(T.default.getChildAt(g,0),0);T.default.setAttribute(b,Q,!0),e.Push(g)},Aboxed:function(e,t){var n=m.MathtoolsUtil.checkAlignment(e,t);n.row.length%2==1&&n.row.push(e.create("node","mtd",[]));var r=e.GetArgument(t),i=e.string.substr(e.i);e.string=r+"&&\\endAboxed",e.i=0;var a=e.GetUpTo(t,"&"),s=e.GetUpTo(t,"&");e.GetUpTo(t,"\\endAboxed");var l=o.default.substituteArgs(e,[a,s],"\\rlap{\\boxed{#1{}#2}}\\kern.267em\\phantom{#1}&\\phantom{{}#2}\\kern.267em");e.string=l+i,e.i=0},ArrowBetweenLines:function(e,t){var n=m.MathtoolsUtil.checkAlignment(e,t);if(n.Size()||n.row.length)throw new c.default("BetweenLines","%1 must be on a row by itself",t);var r=e.GetStar(),i=e.GetBrackets(t,"\\Updownarrow");r&&(n.EndEntry(),n.EndEntry());var o=r?"\\quad"+i:i+"\\quad",a=new l.default(o,e.stack.env,e.configuration).mml();e.Push(a),n.EndEntry(),n.EndRow()},VDotsWithin:function(e,n){var r=e.stack.Top(),i=r.getProperty("flushspaceabove")===r.table.length,o="\\mmlToken{mi}{}"+e.GetArgument(n)+"\\mmlToken{mi}{}",a=new l.default(o,e.stack.env,e.configuration).mml(),s=e.create("node","mpadded",[e.create("node","mpadded",[e.create("node","mo",[e.create("text","⋮")])],t({width:0,lspace:"-.5width"},i?{height:"-.6em",voffset:"-.18em"}:{})),e.create("node","mphantom",[a])],{lspace:".5width"});e.Push(s)},ShortVDotsWithin:function(t,n){var r=t.stack.Top(),i=t.GetStar();e.MathtoolsMethods.FlushSpaceAbove(t,"\\MTFlushSpaceAbove"),!i&&r.EndEntry(),e.MathtoolsMethods.VDotsWithin(t,"\\vdotswithin"),i&&r.EndEntry(),e.MathtoolsMethods.FlushSpaceBelow(t,"\\MTFlushSpaceBelow")},FlushSpaceAbove:function(e,t){var n=m.MathtoolsUtil.checkAlignment(e,t);n.setProperty("flushspaceabove",n.table.length),n.addRowSpacing("-"+e.options.mathtools.shortvdotsadjustabove)},FlushSpaceBelow:function(e,t){var n=m.MathtoolsUtil.checkAlignment(e,t);n.Size()&&n.EndEntry(),n.EndRow(),n.addRowSpacing("-"+e.options.mathtools.shortvdotsadjustbelow)},PairedDelimiters:function(e,t,r,i,a,s,l,c){void 0===a&&(a="#1"),void 0===s&&(s=1),void 0===l&&(l=""),void 0===c&&(c="");var T=e.GetStar(),Q=T?"":e.GetBrackets(t),d=n(T?["\\left","\\right"]:Q?[Q+"l",Q+"r"]:["",""],2),u=d[0],p=d[1],h=T?"\\middle":Q||"";if(s){for(var m=[],f=m.length;f<s;f++)m.push(e.GetArgument(t));l=o.default.substituteArgs(e,m,l),a=o.default.substituteArgs(e,m,a),c=o.default.substituteArgs(e,m,c)}a=a.replace(/\\delimsize/g,h),e.string=[l,u,r,a,p,i,c,e.string.substr(e.i)].reduce((function(t,n){return o.default.addArgs(e,t,n)}),""),e.i=0,o.default.checkMaxMacros(e)},DeclarePairedDelimiter:function(e,t){var n=p.default.GetCsNameArgument(e,t),r=e.GetArgument(t),i=e.GetArgument(t);m.MathtoolsUtil.addPairedDelims(e.configuration,n,[r,i])},DeclarePairedDelimiterX:function(e,t){var n=p.default.GetCsNameArgument(e,t),r=p.default.GetArgCount(e,t),i=e.GetArgument(t),o=e.GetArgument(t),a=e.GetArgument(t);m.MathtoolsUtil.addPairedDelims(e.configuration,n,[i,o,a,r])},DeclarePairedDelimiterXPP:function(e,t){var n=p.default.GetCsNameArgument(e,t),r=p.default.GetArgCount(e,t),i=e.GetArgument(t),o=e.GetArgument(t),a=e.GetArgument(t),s=e.GetArgument(t),l=e.GetArgument(t);m.MathtoolsUtil.addPairedDelims(e.configuration,n,[o,a,l,r,i,s])},CenterColon:function(e,n,r,i,o){void 0===i&&(i=!1),void 0===o&&(o=!1);var a=e.options.mathtools,s=e.create("token","mo",{},":");if(r&&(a.centercolon||i)){var l=a["centercolon-offset"];s=e.create("node","mpadded",[s],t({voffset:l,height:"+".concat(l),depth:"-".concat(l)},o?{width:a["thincolon-dw"],lspace:a["thincolon-dx"]}:{}))}e.Push(s)},Relation:function(e,t,n,r){e.options.mathtools["use-unicode"]&&r?e.Push(e.create("token","mo",{texClass:Q.TEXCLASS.REL},r)):(n="\\mathrel{"+n.replace(/:/g,"\\MTThinColon").replace(/-/g,"\\mathrel{-}")+"}",e.string=o.default.addArgs(e,n,e.string.substr(e.i)),e.i=0)},NArrow:function(e,t,n,r){e.Push(e.create("node","TeXAtom",[e.create("token","mtext",{},n),e.create("node","mpadded",[e.create("node","mpadded",[e.create("node","menclose",[e.create("node","mspace",[],{height:".2em",depth:0,width:".4em"})],{notation:"updiagonalstrike","data-thickness":".05em","data-padding":0})],{width:0,lspace:"-.5width",voffset:r}),e.create("node","mphantom",[e.create("token","mtext",{},n)])],{width:0,lspace:"-.5width"})],{texClass:Q.TEXCLASS.REL}))},SplitFrac:function(e,t,n){var r=e.ParseArg(t),i=e.ParseArg(t);e.Push(e.create("node","mstyle",[e.create("node","mfrac",[e.create("node","mstyle",[r,e.create("token","mi"),e.create("token","mspace",{width:"1em"})],{scriptlevel:0}),e.create("node","mstyle",[e.create("token","mspace",{width:"1em"}),e.create("token","mi"),i],{scriptlevel:0})],{linethickness:0,numalign:"left",denomalign:"right"})],{displaystyle:n,scriptlevel:0}))},XMathStrut:function(e,t){var n=e.GetBrackets(t),r=e.GetArgument(t);r=m.MathtoolsUtil.plusOrMinus(t,r),n=m.MathtoolsUtil.plusOrMinus(t,n||r),e.Push(e.create("node","TeXAtom",[e.create("node","mpadded",[e.create("node","mphantom",[e.create("token","mo",{stretchy:!1},"(")])],{width:0,height:r+"height",depth:n+"depth"})],{texClass:Q.TEXCLASS.ORD}))},Prescript:function(e,t){var n=m.MathtoolsUtil.getScript(e,t,"sup"),r=m.MathtoolsUtil.getScript(e,t,"sub"),i=m.MathtoolsUtil.getScript(e,t,"arg");if(T.default.isType(n,"none")&&T.default.isType(r,"none"))e.Push(i);else{var o=e.create("node","mmultiscripts",[i]);T.default.getChildren(o).push(null,null),T.default.appendChildren(o,[e.create("node","mprescripts"),r,n]),o.setProperty("fixPrescript",!0),e.Push(o)}},NewTagForm:function(e,t,n){void 0===n&&(n=!1);var r=e.tags;if(!("mtFormats"in r))throw new c.default("TagsNotMT","%1 can only be used with ams or mathtools tags",t);var i=e.GetArgument(t).trim();if(!i)throw new c.default("InvalidTagFormID","Tag form name can't be empty");var o=e.GetBrackets(t,""),a=e.GetArgument(t),s=e.GetArgument(t);if(!n&&r.mtFormats.has(i))throw new c.default("DuplicateTagForm","Duplicate tag form: %1",i);r.mtFormats.set(i,[a,s,o])},UseTagForm:function(e,t){var n=e.tags;if(!("mtFormats"in n))throw new c.default("TagsNotMT","%1 can only be used with ams or mathtools tags",t);var r=e.GetArgument(t).trim();if(r){if(!n.mtFormats.has(r))throw new c.default("UndefinedTagForm","Undefined tag form: %1",r);n.mtCurrent=n.mtFormats.get(r)}else n.mtCurrent=null},SetOptions:function(e,t){var n,i,a=e.options.mathtools;if(!a["allow-mathtoolsset"])throw new c.default("ForbiddenMathtoolsSet","%1 is disabled",t);var s={};Object.keys(a).forEach((function(e){"pariedDelimiters"!==e&&"tagforms"!==e&&"allow-mathtoolsset"!==e&&(s[e]=1)}));var l=e.GetArgument(t),T=o.default.keyvalOptions(l,s,!0);try{for(var Q=r(Object.keys(T)),d=Q.next();!d.done;d=Q.next()){var u=d.value;a[u]=T[u]}}catch(e){n={error:e}}finally{try{d&&!d.done&&(i=Q.return)&&i.call(Q)}finally{if(n)throw n.error}}},Array:s.default.Array,Macro:s.default.Macro,xArrow:a.AmsMethods.xArrow,HandleRef:a.AmsMethods.HandleRef,AmsEqnArray:a.AmsMethods.AmsEqnArray,MacroWithTemplate:h.default.MacroWithTemplate}}(MathtoolsMethods)),MathtoolsMethods}function requireMathtoolsMappings(){if(hasRequiredMathtoolsMappings)return MathtoolsMappings;hasRequiredMathtoolsMappings=1;var e=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(MathtoolsMappings,"__esModule",{value:!0});var t=e(ParseMethods$1),n=SymbolMap,r=TexConstants,i=requireMathtoolsMethods();return new n.CommandMap("mathtools-macros",{shoveleft:["HandleShove",r.TexConstant.Align.LEFT],shoveright:["HandleShove",r.TexConstant.Align.RIGHT],xleftrightarrow:["xArrow",8596,10,10],xLeftarrow:["xArrow",8656,12,7],xRightarrow:["xArrow",8658,7,12],xLeftrightarrow:["xArrow",8660,12,12],xhookleftarrow:["xArrow",8617,10,5],xhookrightarrow:["xArrow",8618,5,10],xmapsto:["xArrow",8614,10,10],xrightharpoondown:["xArrow",8641,5,10],xleftharpoondown:["xArrow",8637,10,5],xrightleftharpoons:["xArrow",8652,10,10],xrightharpoonup:["xArrow",8640,5,10],xleftharpoonup:["xArrow",8636,10,5],xleftrightharpoons:["xArrow",8651,10,10],mathllap:["MathLap","l",!1],mathrlap:["MathLap","r",!1],mathclap:["MathLap","c",!1],clap:["MtLap","c"],textllap:["MtLap","l"],textrlap:["MtLap","r"],textclap:["MtLap","c"],cramped:"Cramped",crampedllap:["MathLap","l",!0],crampedrlap:["MathLap","r",!0],crampedclap:["MathLap","c",!0],crampedsubstack:["Macro","\\begin{crampedsubarray}{c}#1\\end{crampedsubarray}",1],mathmbox:"MathMBox",mathmakebox:"MathMakeBox",overbracket:"UnderOverBracket",underbracket:"UnderOverBracket",refeq:"HandleRef",MoveEqLeft:["Macro","\\hspace{#1em}&\\hspace{-#1em}",1,"2"],Aboxed:"Aboxed",ArrowBetweenLines:"ArrowBetweenLines",vdotswithin:"VDotsWithin",shortvdotswithin:"ShortVDotsWithin",MTFlushSpaceAbove:"FlushSpaceAbove",MTFlushSpaceBelow:"FlushSpaceBelow",DeclarePairedDelimiter:"DeclarePairedDelimiter",DeclarePairedDelimiterX:"DeclarePairedDelimiterX",DeclarePairedDelimiterXPP:"DeclarePairedDelimiterXPP",DeclarePairedDelimiters:"DeclarePairedDelimiter",DeclarePairedDelimitersX:"DeclarePairedDelimiterX",DeclarePairedDelimitersXPP:"DeclarePairedDelimiterXPP",centercolon:["CenterColon",!0,!0],ordinarycolon:["CenterColon",!1],MTThinColon:["CenterColon",!0,!0,!0],coloneqq:["Relation",":=","≔"],Coloneqq:["Relation","::=","⩴"],coloneq:["Relation",":-"],Coloneq:["Relation","::-"],eqqcolon:["Relation","=:","≕"],Eqqcolon:["Relation","=::"],eqcolon:["Relation","-:","∹"],Eqcolon:["Relation","-::"],colonapprox:["Relation",":\\approx"],Colonapprox:["Relation","::\\approx"],colonsim:["Relation",":\\sim"],Colonsim:["Relation","::\\sim"],dblcolon:["Relation","::","∷"],nuparrow:["NArrow","↑",".06em"],ndownarrow:["NArrow","↓",".25em"],bigtimes:["Macro","\\mathop{\\Large\\kern-.1em\\boldsymbol{\\times}\\kern-.1em}"],splitfrac:["SplitFrac",!1],splitdfrac:["SplitFrac",!0],xmathstrut:"XMathStrut",prescript:"Prescript",newtagform:["NewTagForm",!1],renewtagform:["NewTagForm",!0],usetagform:"UseTagForm",adjustlimits:["MacroWithTemplate","\\mathop{{#1}\\vphantom{{#3}}}_{{#2}\\vphantom{{#4}}}\\mathop{{#3}\\vphantom{{#1}}}_{{#4}\\vphantom{{#2}}}",4,,"_",,"_"],mathtoolsset:"SetOptions"},i.MathtoolsMethods),new n.EnvironmentMap("mathtools-environments",t.default.environment,{dcases:["Array",null,"\\{","","ll",null,".2em","D"],rcases:["Array",null,"","\\}","ll",null,".2em"],drcases:["Array",null,"","\\}","ll",null,".2em","D"],"dcases*":["Cases",null,"{","","D"],"rcases*":["Cases",null,"","}"],"drcases*":["Cases",null,"","}","D"],"cases*":["Cases",null,"{",""],"matrix*":["MtMatrix",null,null,null],"pmatrix*":["MtMatrix",null,"(",")"],"bmatrix*":["MtMatrix",null,"[","]"],"Bmatrix*":["MtMatrix",null,"\\{","\\}"],"vmatrix*":["MtMatrix",null,"\\vert","\\vert"],"Vmatrix*":["MtMatrix",null,"\\Vert","\\Vert"],"smallmatrix*":["MtSmallMatrix",null,null,null],psmallmatrix:["MtSmallMatrix",null,"(",")","c"],"psmallmatrix*":["MtSmallMatrix",null,"(",")"],bsmallmatrix:["MtSmallMatrix",null,"[","]","c"],"bsmallmatrix*":["MtSmallMatrix",null,"[","]"],Bsmallmatrix:["MtSmallMatrix",null,"\\{","\\}","c"],"Bsmallmatrix*":["MtSmallMatrix",null,"\\{","\\}"],vsmallmatrix:["MtSmallMatrix",null,"\\vert","\\vert","c"],"vsmallmatrix*":["MtSmallMatrix",null,"\\vert","\\vert"],Vsmallmatrix:["MtSmallMatrix",null,"\\Vert","\\Vert","c"],"Vsmallmatrix*":["MtSmallMatrix",null,"\\Vert","\\Vert"],crampedsubarray:["Array",null,null,null,null,"0em","0.1em","S'",1],multlined:"MtMultlined",spreadlines:["SpreadLines",!0],lgathered:["AmsEqnArray",null,null,null,"l",null,".5em","D"],rgathered:["AmsEqnArray",null,null,null,"r",null,".5em","D"]},i.MathtoolsMethods),new n.DelimiterMap("mathtools-delimiters",t.default.delimiter,{"\\lparen":"(","\\rparen":")"}),new n.CommandMap("mathtools-characters",{":":["CenterColon",!0]},i.MathtoolsMethods),MathtoolsMappings}var MathtoolsTags={},__extends$4=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__values$2=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},__read$2=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__importDefault$9=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(MathtoolsTags,"__esModule",{value:!0}),MathtoolsTags.MathtoolsTagFormat=void 0;var TexError_js_1$3=__importDefault$9(TexError$1),Tags_js_1$2=Tags,tagID$1=0;function MathtoolsTagFormat(e,t){var n=t.parseOptions.options.tags;"base"!==n&&e.tags.hasOwnProperty(n)&&Tags_js_1$2.TagsFactory.add(n,e.tags[n]);var r=function(e){function n(){var n,r,i=e.call(this)||this;i.mtFormats=new Map,i.mtCurrent=null;var o=t.parseOptions.options.mathtools.tagforms;try{for(var a=__values$2(Object.keys(o)),s=a.next();!s.done;s=a.next()){var l=s.value;if(!Array.isArray(o[l])||3!==o[l].length)throw new TexError_js_1$3.default("InvalidTagFormDef",'The tag form definition for "%1" should be an array fo three strings',l);i.mtFormats.set(l,o[l])}}catch(e){n={error:e}}finally{try{s&&!s.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}return i}return __extends$4(n,e),n.prototype.formatTag=function(t){if(this.mtCurrent){var n=__read$2(this.mtCurrent,3),r=n[0],i=n[1],o=n[2];return o?"".concat(r).concat(o,"{").concat(t,"}").concat(i):"".concat(r).concat(t).concat(i)}return e.prototype.formatTag.call(this,t)},n}(Tags_js_1$2.TagsFactory.create(t.parseOptions.options.tags).constructor),i="MathtoolsTags-"+ ++tagID$1;Tags_js_1$2.TagsFactory.add(i,r),t.parseOptions.options.tags=i}MathtoolsTags.MathtoolsTagFormat=MathtoolsTagFormat;var MathtoolsItems={},__extends$3=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__importDefault$8=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(MathtoolsItems,"__esModule",{value:!0}),MathtoolsItems.MultlinedItem=void 0;var hasRequiredMathtoolsConfiguration,AmsItems_js_1=AmsItems,NodeUtil_js_1$3=__importDefault$8(NodeUtil$1),TexConstants_js_1$4=TexConstants,MultlinedItem=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return __extends$3(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"multlined"},enumerable:!1,configurable:!0}),t.prototype.EndTable=function(){if((this.Size()||this.row.length)&&(this.EndEntry(),this.EndRow()),this.table.length>1){var t=this.factory.configuration.options.mathtools,n=t.multlinegap,r=t["firstline-afterskip"]||n,i=t["lastline-preskip"]||n,o=NodeUtil_js_1$3.default.getChildren(this.table[0])[0];NodeUtil_js_1$3.default.getAttribute(o,"columnalign")!==TexConstants_js_1$4.TexConstant.Align.RIGHT&&o.appendChild(this.create("node","mspace",[],{width:r}));var a=NodeUtil_js_1$3.default.getChildren(this.table[this.table.length-1])[0];if(NodeUtil_js_1$3.default.getAttribute(a,"columnalign")!==TexConstants_js_1$4.TexConstant.Align.LEFT){var s=NodeUtil_js_1$3.default.getChildren(a)[0];s.childNodes.unshift(null);var l=this.create("node","mspace",[],{width:i});NodeUtil_js_1$3.default.setChild(s,0,l)}}e.prototype.EndTable.call(this)},t}(AmsItems_js_1.MultlineItem);function requireMathtoolsConfiguration(){return hasRequiredMathtoolsConfiguration||(hasRequiredMathtoolsConfiguration=1,function(e){var t,n=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},r=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.MathtoolsConfiguration=e.fixPrescripts=e.PAIREDDELIMS=void 0;var i=Configuration,o=SymbolMap,a=r(NodeUtil$1),s=Options;requireMathtoolsMappings();var l=requireMathtoolsUtil(),c=MathtoolsTags,T=MathtoolsItems;function Q(e){var t,r,i,o,s,l,c=e.data;try{for(var T=n(c.getList("mmultiscripts")),Q=T.next();!Q.done;Q=T.next()){var d=Q.value;if(d.getProperty("fixPrescript")){var u=a.default.getChildren(d),p=0;try{for(var h=(i=void 0,n([1,2])),m=h.next();!m.done;m=h.next())u[b=m.value]||(a.default.setChild(d,b,c.nodeFactory.create("node","none")),p++)}catch(e){i={error:e}}finally{try{m&&!m.done&&(o=h.return)&&o.call(h)}finally{if(i)throw i.error}}try{for(var f=(s=void 0,n([4,5])),g=f.next();!g.done;g=f.next()){var b=g.value;a.default.isType(u[b],"mrow")&&0===a.default.getChildren(u[b]).length&&a.default.setChild(d,b,c.nodeFactory.create("node","none"))}}catch(e){s={error:e}}finally{try{g&&!g.done&&(l=f.return)&&l.call(f)}finally{if(s)throw s.error}}2===p&&u.splice(1,2)}}}catch(e){t={error:e}}finally{try{Q&&!Q.done&&(r=T.return)&&r.call(T)}finally{if(t)throw t.error}}}e.PAIREDDELIMS="mathtools-paired-delims",e.fixPrescripts=Q,e.MathtoolsConfiguration=i.Configuration.create("mathtools",{handler:{macro:["mathtools-macros","mathtools-delimiters"],environment:["mathtools-environments"],delimiter:["mathtools-delimiters"],character:["mathtools-characters"]},items:(t={},t[T.MultlinedItem.prototype.kind]=T.MultlinedItem,t),init:function(t){new o.CommandMap(e.PAIREDDELIMS,{},{}),t.append(i.Configuration.local({handler:{macro:[e.PAIREDDELIMS]},priority:-5}))},config:function(e,t){var r,i,o=t.parseOptions,a=o.options.mathtools.pairedDelimiters;try{for(var s=n(Object.keys(a)),T=s.next();!T.done;T=s.next()){var Q=T.value;l.MathtoolsUtil.addPairedDelims(o,Q,a[Q])}}catch(e){r={error:e}}finally{try{T&&!T.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}(0,c.MathtoolsTagFormat)(e,t)},postprocessors:[[Q,-6]],options:{mathtools:{multlinegap:"1em","multlined-pos":"c","firstline-afterskip":"","lastline-preskip":"","smallmatrix-align":"c",shortvdotsadjustabove:".2em",shortvdotsadjustbelow:".2em",centercolon:!1,"centercolon-offset":".04em","thincolon-dx":"-.04em","thincolon-dw":"-.08em","use-unicode":!1,"prescript-sub-format":"","prescript-sup-format":"","prescript-arg-format":"","allow-mathtoolsset":!0,pairedDelimiters:(0,s.expandable)({}),tagforms:(0,s.expandable)({})}}})}(MathtoolsConfiguration)),MathtoolsConfiguration}MathtoolsItems.MultlinedItem=MultlinedItem;var MhchemConfiguration={},mhchemParser$1={}; /*! - * html2canvas 1.4.1 <https://html2canvas.hertzen.com> - * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com> - * Released under MIT License - */html2canvas$1.exports,function(e,A){e.exports=function(){ -/*! ***************************************************************************** - Copyright (c) Microsoft Corporation. - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. - ***************************************************************************** */ -var e=function(A,t){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,A){e.__proto__=A}||function(e,A){for(var t in A)Object.prototype.hasOwnProperty.call(A,t)&&(e[t]=A[t])},e(A,t)};function A(A,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function i(){this.constructor=A}e(A,t),A.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}var t=function(){return t=Object.assign||function(e){for(var A,t=1,i=arguments.length;t<i;t++)for(var n in A=arguments[t])Object.prototype.hasOwnProperty.call(A,n)&&(e[n]=A[n]);return e},t.apply(this,arguments)};function i(e,A,t,i){return new(t||(t=Promise))((function(n,s){function a(e){try{r(i.next(e))}catch(e){s(e)}}function o(e){try{r(i.throw(e))}catch(e){s(e)}}function r(e){var A;e.done?n(e.value):(A=e.value,A instanceof t?A:new t((function(e){e(A)}))).then(a,o)}r((i=i.apply(e,A||[])).next())}))}function n(e,A){var t,i,n,s,a={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return s={next:o(0),throw:o(1),return:o(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function o(s){return function(o){return function(s){if(t)throw new TypeError("Generator is already executing.");for(;a;)try{if(t=1,i&&(n=2&s[0]?i.return:s[0]?i.throw||((n=i.return)&&n.call(i),0):i.next)&&!(n=n.call(i,s[1])).done)return n;switch(i=0,n&&(s=[2&s[0],n.value]),s[0]){case 0:case 1:n=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,i=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((n=(n=a.trys).length>0&&n[n.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!n||s[1]>n[0]&&s[1]<n[3])){a.label=s[1];break}if(6===s[0]&&a.label<n[1]){a.label=n[1],n=s;break}if(n&&a.label<n[2]){a.label=n[2],a.ops.push(s);break}n[2]&&a.ops.pop(),a.trys.pop();continue}s=A.call(e,a)}catch(e){s=[6,e],i=0}finally{t=n=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,o])}}}function s(e,A,t){if(t||2===arguments.length)for(var i,n=0,s=A.length;n<s;n++)!i&&n in A||(i||(i=Array.prototype.slice.call(A,0,n)),i[n]=A[n]);return e.concat(i||A)}for(var a=function(){function e(e,A,t,i){this.left=e,this.top=A,this.width=t,this.height=i}return e.prototype.add=function(A,t,i,n){return new e(this.left+A,this.top+t,this.width+i,this.height+n)},e.fromClientRect=function(A,t){return new e(t.left+A.windowBounds.left,t.top+A.windowBounds.top,t.width,t.height)},e.fromDOMRectList=function(A,t){var i=Array.from(t).find((function(e){return 0!==e.width}));return i?new e(i.left+A.windowBounds.left,i.top+A.windowBounds.top,i.width,i.height):e.EMPTY},e.EMPTY=new e(0,0,0,0),e}(),o=function(e,A){return a.fromClientRect(e,A.getBoundingClientRect())},r=function(e){for(var A=[],t=0,i=e.length;t<i;){var n=e.charCodeAt(t++);if(n>=55296&&n<=56319&&t<i){var s=e.charCodeAt(t++);56320==(64512&s)?A.push(((1023&n)<<10)+(1023&s)+65536):(A.push(n),t--)}else A.push(n)}return A},l=function(){for(var e=[],A=0;A<arguments.length;A++)e[A]=arguments[A];if(String.fromCodePoint)return String.fromCodePoint.apply(String,e);var t=e.length;if(!t)return"";for(var i=[],n=-1,s="";++n<t;){var a=e[n];a<=65535?i.push(a):(a-=65536,i.push(55296+(a>>10),a%1024+56320)),(n+1===t||i.length>16384)&&(s+=String.fromCharCode.apply(String,i),i.length=0)}return s},c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",g="undefined"==typeof Uint8Array?[]:new Uint8Array(256),d=0;d<64;d++)g[c.charCodeAt(d)]=d;for(var u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",h="undefined"==typeof Uint8Array?[]:new Uint8Array(256),m=0;m<64;m++)h[u.charCodeAt(m)]=m;for(var p=function(e,A,t){return e.slice?e.slice(A,t):new Uint16Array(Array.prototype.slice.call(e,A,t))},w=function(){function e(e,A,t,i,n,s){this.initialValue=e,this.errorValue=A,this.highStart=t,this.highValueIndex=i,this.index=n,this.data=s}return e.prototype.get=function(e){var A;if(e>=0){if(e<55296||e>56319&&e<=65535)return A=((A=this.index[e>>5])<<2)+(31&e),this.data[A];if(e<=65535)return A=((A=this.index[2048+(e-55296>>5)])<<2)+(31&e),this.data[A];if(e<this.highStart)return A=2080+(e>>11),A=this.index[A],A+=e>>5&63,A=((A=this.index[A])<<2)+(31&e),this.data[A];if(e<=1114111)return this.data[this.highValueIndex]}return this.errorValue},e}(),B="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",E="undefined"==typeof Uint8Array?[]:new Uint8Array(256),k=0;k<64;k++)E[B.charCodeAt(k)]=k;var f=10,C=13,O=15,W=17,b=18,x=19,Q=20,I=21,y=22,v=24,D=25,M=26,F=27,U=28,R=30,T=32,N=33,S=34,G=35,H=37,L=38,j=39,Y=40,P=42,z=[9001,65288],K="×",J="÷",q=function(e,A){var t=function(e){var A,t,i,n,s,a=.75*e.length,o=e.length,r=0;"="===e[e.length-1]&&(a--,"="===e[e.length-2]&&a--);var l="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&void 0!==Uint8Array.prototype.slice?new ArrayBuffer(a):new Array(a),c=Array.isArray(l)?l:new Uint8Array(l);for(A=0;A<o;A+=4)t=h[e.charCodeAt(A)],i=h[e.charCodeAt(A+1)],n=h[e.charCodeAt(A+2)],s=h[e.charCodeAt(A+3)],c[r++]=t<<2|i>>4,c[r++]=(15&i)<<4|n>>2,c[r++]=(3&n)<<6|63&s;return l}(e),i=Array.isArray(t)?function(e){for(var A=e.length,t=[],i=0;i<A;i+=4)t.push(e[i+3]<<24|e[i+2]<<16|e[i+1]<<8|e[i]);return t}(t):new Uint32Array(t),n=Array.isArray(t)?function(e){for(var A=e.length,t=[],i=0;i<A;i+=2)t.push(e[i+1]<<8|e[i]);return t}(t):new Uint16Array(t),s=p(n,12,i[4]/2),a=2===i[5]?p(n,(24+i[4])/2):function(e,A,t){return e.slice?e.slice(A,t):new Uint32Array(Array.prototype.slice.call(e,A,t))}(i,Math.ceil((24+i[4])/4));return new w(i[0],i[1],i[2],i[3],s,a)}("KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA=="),Z=[R,36],V=[1,2,3,5],X=[f,8],_=[F,M],$=V.concat(X),ee=[L,j,Y,S,G],Ae=[O,C],te=function(e,A,t,i){var n=i[t];if(Array.isArray(e)?-1!==e.indexOf(n):e===n)for(var s=t;s<=i.length;){if((r=i[++s])===A)return!0;if(r!==f)break}if(n===f)for(s=t;s>0;){var a=i[--s];if(Array.isArray(e)?-1!==e.indexOf(a):e===a)for(var o=t;o<=i.length;){var r;if((r=i[++o])===A)return!0;if(r!==f)break}if(a!==f)break}return!1},ie=function(e,A){for(var t=e;t>=0;){var i=A[t];if(i!==f)return i;t--}return 0},ne=function(e,A,t,i,n){if(0===t[i])return K;var s=i-1;if(Array.isArray(n)&&!0===n[s])return K;var a=s-1,o=s+1,r=A[s],l=a>=0?A[a]:0,c=A[o];if(2===r&&3===c)return K;if(-1!==V.indexOf(r))return"!";if(-1!==V.indexOf(c))return K;if(-1!==X.indexOf(c))return K;if(8===ie(s,A))return J;if(11===q.get(e[s]))return K;if((r===T||r===N)&&11===q.get(e[o]))return K;if(7===r||7===c)return K;if(9===r)return K;if(-1===[f,C,O].indexOf(r)&&9===c)return K;if(-1!==[W,b,x,v,U].indexOf(c))return K;if(ie(s,A)===y)return K;if(te(23,y,s,A))return K;if(te([W,b],I,s,A))return K;if(te(12,12,s,A))return K;if(r===f)return J;if(23===r||23===c)return K;if(16===c||16===r)return J;if(-1!==[C,O,I].indexOf(c)||14===r)return K;if(36===l&&-1!==Ae.indexOf(r))return K;if(r===U&&36===c)return K;if(c===Q)return K;if(-1!==Z.indexOf(c)&&r===D||-1!==Z.indexOf(r)&&c===D)return K;if(r===F&&-1!==[H,T,N].indexOf(c)||-1!==[H,T,N].indexOf(r)&&c===M)return K;if(-1!==Z.indexOf(r)&&-1!==_.indexOf(c)||-1!==_.indexOf(r)&&-1!==Z.indexOf(c))return K;if(-1!==[F,M].indexOf(r)&&(c===D||-1!==[y,O].indexOf(c)&&A[o+1]===D)||-1!==[y,O].indexOf(r)&&c===D||r===D&&-1!==[D,U,v].indexOf(c))return K;if(-1!==[D,U,v,W,b].indexOf(c))for(var g=s;g>=0;){if((d=A[g])===D)return K;if(-1===[U,v].indexOf(d))break;g--}if(-1!==[F,M].indexOf(c))for(g=-1!==[W,b].indexOf(r)?a:s;g>=0;){var d;if((d=A[g])===D)return K;if(-1===[U,v].indexOf(d))break;g--}if(L===r&&-1!==[L,j,S,G].indexOf(c)||-1!==[j,S].indexOf(r)&&-1!==[j,Y].indexOf(c)||-1!==[Y,G].indexOf(r)&&c===Y)return K;if(-1!==ee.indexOf(r)&&-1!==[Q,M].indexOf(c)||-1!==ee.indexOf(c)&&r===F)return K;if(-1!==Z.indexOf(r)&&-1!==Z.indexOf(c))return K;if(r===v&&-1!==Z.indexOf(c))return K;if(-1!==Z.concat(D).indexOf(r)&&c===y&&-1===z.indexOf(e[o])||-1!==Z.concat(D).indexOf(c)&&r===b)return K;if(41===r&&41===c){for(var u=t[s],h=1;u>0&&41===A[--u];)h++;if(h%2!=0)return K}return r===T&&c===N?K:J},se=function(e,A){A||(A={lineBreak:"normal",wordBreak:"normal"});var t=function(e,A){void 0===A&&(A="strict");var t=[],i=[],n=[];return e.forEach((function(e,s){var a=q.get(e);if(a>50?(n.push(!0),a-=50):n.push(!1),-1!==["normal","auto","loose"].indexOf(A)&&-1!==[8208,8211,12316,12448].indexOf(e))return i.push(s),t.push(16);if(4===a||11===a){if(0===s)return i.push(s),t.push(R);var o=t[s-1];return-1===$.indexOf(o)?(i.push(i[s-1]),t.push(o)):(i.push(s),t.push(R))}return i.push(s),31===a?t.push("strict"===A?I:H):a===P||29===a?t.push(R):43===a?e>=131072&&e<=196605||e>=196608&&e<=262141?t.push(H):t.push(R):void t.push(a)})),[i,t,n]}(e,A.lineBreak),i=t[0],n=t[1],s=t[2];"break-all"!==A.wordBreak&&"break-word"!==A.wordBreak||(n=n.map((function(e){return-1!==[D,R,P].indexOf(e)?H:e})));var a="keep-all"===A.wordBreak?s.map((function(A,t){return A&&e[t]>=19968&&e[t]<=40959})):void 0;return[i,n,a]},ae=function(){function e(e,A,t,i){this.codePoints=e,this.required="!"===A,this.start=t,this.end=i}return e.prototype.slice=function(){return l.apply(void 0,this.codePoints.slice(this.start,this.end))},e}(),oe=45,re=43,le=-1,ce=function(e){return e>=48&&e<=57},ge=function(e){return ce(e)||e>=65&&e<=70||e>=97&&e<=102},de=function(e){return 10===e||9===e||32===e},ue=function(e){return function(e){return function(e){return e>=97&&e<=122}(e)||function(e){return e>=65&&e<=90}(e)}(e)||function(e){return e>=128}(e)||95===e},he=function(e){return ue(e)||ce(e)||e===oe},me=function(e){return e>=0&&e<=8||11===e||e>=14&&e<=31||127===e},pe=function(e,A){return 92===e&&10!==A},we=function(e,A,t){return e===oe?ue(A)||pe(A,t):!!ue(e)||!(92!==e||!pe(e,A))},Be=function(e,A,t){return e===re||e===oe?!!ce(A)||46===A&&ce(t):ce(46===e?A:e)},Ee=function(e){var A=0,t=1;e[A]!==re&&e[A]!==oe||(e[A]===oe&&(t=-1),A++);for(var i=[];ce(e[A]);)i.push(e[A++]);var n=i.length?parseInt(l.apply(void 0,i),10):0;46===e[A]&&A++;for(var s=[];ce(e[A]);)s.push(e[A++]);var a=s.length,o=a?parseInt(l.apply(void 0,s),10):0;69!==e[A]&&101!==e[A]||A++;var r=1;e[A]!==re&&e[A]!==oe||(e[A]===oe&&(r=-1),A++);for(var c=[];ce(e[A]);)c.push(e[A++]);var g=c.length?parseInt(l.apply(void 0,c),10):0;return t*(n+o*Math.pow(10,-a))*Math.pow(10,r*g)},ke={type:2},fe={type:3},Ce={type:4},Oe={type:13},We={type:8},be={type:21},xe={type:9},Qe={type:10},Ie={type:11},ye={type:12},ve={type:14},De={type:23},Me={type:1},Fe={type:25},Ue={type:24},Re={type:26},Te={type:27},Ne={type:28},Se={type:29},Ge={type:31},He={type:32},Le=function(){function e(){this._value=[]}return e.prototype.write=function(e){this._value=this._value.concat(r(e))},e.prototype.read=function(){for(var e=[],A=this.consumeToken();A!==He;)e.push(A),A=this.consumeToken();return e},e.prototype.consumeToken=function(){var e=this.consumeCodePoint();switch(e){case 34:return this.consumeStringToken(34);case 35:var A=this.peekCodePoint(0),t=this.peekCodePoint(1),i=this.peekCodePoint(2);if(he(A)||pe(t,i)){var n=we(A,t,i)?2:1;return{type:5,value:this.consumeName(),flags:n}}break;case 36:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Oe;break;case 39:return this.consumeStringToken(39);case 40:return ke;case 41:return fe;case 42:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),ve;break;case re:if(Be(e,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(e),this.consumeNumericToken();break;case 44:return Ce;case oe:var s=e,a=this.peekCodePoint(0),o=this.peekCodePoint(1);if(Be(s,a,o))return this.reconsumeCodePoint(e),this.consumeNumericToken();if(we(s,a,o))return this.reconsumeCodePoint(e),this.consumeIdentLikeToken();if(a===oe&&62===o)return this.consumeCodePoint(),this.consumeCodePoint(),Ue;break;case 46:if(Be(e,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(e),this.consumeNumericToken();break;case 47:if(42===this.peekCodePoint(0))for(this.consumeCodePoint();;){var r=this.consumeCodePoint();if(42===r&&47===(r=this.consumeCodePoint()))return this.consumeToken();if(r===le)return this.consumeToken()}break;case 58:return Re;case 59:return Te;case 60:if(33===this.peekCodePoint(0)&&this.peekCodePoint(1)===oe&&this.peekCodePoint(2)===oe)return this.consumeCodePoint(),this.consumeCodePoint(),Fe;break;case 64:var c=this.peekCodePoint(0),g=this.peekCodePoint(1),d=this.peekCodePoint(2);if(we(c,g,d))return{type:7,value:this.consumeName()};break;case 91:return Ne;case 92:if(pe(e,this.peekCodePoint(0)))return this.reconsumeCodePoint(e),this.consumeIdentLikeToken();break;case 93:return Se;case 61:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),We;break;case 123:return Ie;case 125:return ye;case 117:case 85:var u=this.peekCodePoint(0),h=this.peekCodePoint(1);return u!==re||!ge(h)&&63!==h||(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(e),this.consumeIdentLikeToken();case 124:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),xe;if(124===this.peekCodePoint(0))return this.consumeCodePoint(),be;break;case 126:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),Qe;break;case le:return He}return de(e)?(this.consumeWhiteSpace(),Ge):ce(e)?(this.reconsumeCodePoint(e),this.consumeNumericToken()):ue(e)?(this.reconsumeCodePoint(e),this.consumeIdentLikeToken()):{type:6,value:l(e)}},e.prototype.consumeCodePoint=function(){var e=this._value.shift();return void 0===e?-1:e},e.prototype.reconsumeCodePoint=function(e){this._value.unshift(e)},e.prototype.peekCodePoint=function(e){return e>=this._value.length?-1:this._value[e]},e.prototype.consumeUnicodeRangeToken=function(){for(var e=[],A=this.consumeCodePoint();ge(A)&&e.length<6;)e.push(A),A=this.consumeCodePoint();for(var t=!1;63===A&&e.length<6;)e.push(A),A=this.consumeCodePoint(),t=!0;if(t)return{type:30,start:parseInt(l.apply(void 0,e.map((function(e){return 63===e?48:e}))),16),end:parseInt(l.apply(void 0,e.map((function(e){return 63===e?70:e}))),16)};var i=parseInt(l.apply(void 0,e),16);if(this.peekCodePoint(0)===oe&&ge(this.peekCodePoint(1))){this.consumeCodePoint(),A=this.consumeCodePoint();for(var n=[];ge(A)&&n.length<6;)n.push(A),A=this.consumeCodePoint();return{type:30,start:i,end:parseInt(l.apply(void 0,n),16)}}return{type:30,start:i,end:i}},e.prototype.consumeIdentLikeToken=function(){var e=this.consumeName();return"url"===e.toLowerCase()&&40===this.peekCodePoint(0)?(this.consumeCodePoint(),this.consumeUrlToken()):40===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:19,value:e}):{type:20,value:e}},e.prototype.consumeUrlToken=function(){var e=[];if(this.consumeWhiteSpace(),this.peekCodePoint(0)===le)return{type:22,value:""};var A=this.peekCodePoint(0);if(39===A||34===A){var t=this.consumeStringToken(this.consumeCodePoint());return 0===t.type&&(this.consumeWhiteSpace(),this.peekCodePoint(0)===le||41===this.peekCodePoint(0))?(this.consumeCodePoint(),{type:22,value:t.value}):(this.consumeBadUrlRemnants(),De)}for(;;){var i=this.consumeCodePoint();if(i===le||41===i)return{type:22,value:l.apply(void 0,e)};if(de(i))return this.consumeWhiteSpace(),this.peekCodePoint(0)===le||41===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:22,value:l.apply(void 0,e)}):(this.consumeBadUrlRemnants(),De);if(34===i||39===i||40===i||me(i))return this.consumeBadUrlRemnants(),De;if(92===i){if(!pe(i,this.peekCodePoint(0)))return this.consumeBadUrlRemnants(),De;e.push(this.consumeEscapedCodePoint())}else e.push(i)}},e.prototype.consumeWhiteSpace=function(){for(;de(this.peekCodePoint(0));)this.consumeCodePoint()},e.prototype.consumeBadUrlRemnants=function(){for(;;){var e=this.consumeCodePoint();if(41===e||e===le)return;pe(e,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},e.prototype.consumeStringSlice=function(e){for(var A="";e>0;){var t=Math.min(5e4,e);A+=l.apply(void 0,this._value.splice(0,t)),e-=t}return this._value.shift(),A},e.prototype.consumeStringToken=function(e){for(var A="",t=0;;){var i=this._value[t];if(i===le||void 0===i||i===e)return{type:0,value:A+=this.consumeStringSlice(t)};if(10===i)return this._value.splice(0,t),Me;if(92===i){var n=this._value[t+1];n!==le&&void 0!==n&&(10===n?(A+=this.consumeStringSlice(t),t=-1,this._value.shift()):pe(i,n)&&(A+=this.consumeStringSlice(t),A+=l(this.consumeEscapedCodePoint()),t=-1))}t++}},e.prototype.consumeNumber=function(){var e=[],A=4,t=this.peekCodePoint(0);for(t!==re&&t!==oe||e.push(this.consumeCodePoint());ce(this.peekCodePoint(0));)e.push(this.consumeCodePoint());t=this.peekCodePoint(0);var i=this.peekCodePoint(1);if(46===t&&ce(i))for(e.push(this.consumeCodePoint(),this.consumeCodePoint()),A=8;ce(this.peekCodePoint(0));)e.push(this.consumeCodePoint());t=this.peekCodePoint(0),i=this.peekCodePoint(1);var n=this.peekCodePoint(2);if((69===t||101===t)&&((i===re||i===oe)&&ce(n)||ce(i)))for(e.push(this.consumeCodePoint(),this.consumeCodePoint()),A=8;ce(this.peekCodePoint(0));)e.push(this.consumeCodePoint());return[Ee(e),A]},e.prototype.consumeNumericToken=function(){var e=this.consumeNumber(),A=e[0],t=e[1],i=this.peekCodePoint(0),n=this.peekCodePoint(1),s=this.peekCodePoint(2);return we(i,n,s)?{type:15,number:A,flags:t,unit:this.consumeName()}:37===i?(this.consumeCodePoint(),{type:16,number:A,flags:t}):{type:17,number:A,flags:t}},e.prototype.consumeEscapedCodePoint=function(){var e=this.consumeCodePoint();if(ge(e)){for(var A=l(e);ge(this.peekCodePoint(0))&&A.length<6;)A+=l(this.consumeCodePoint());de(this.peekCodePoint(0))&&this.consumeCodePoint();var t=parseInt(A,16);return 0===t||function(e){return e>=55296&&e<=57343}(t)||t>1114111?65533:t}return e===le?65533:e},e.prototype.consumeName=function(){for(var e="";;){var A=this.consumeCodePoint();if(he(A))e+=l(A);else{if(!pe(A,this.peekCodePoint(0)))return this.reconsumeCodePoint(A),e;e+=l(this.consumeEscapedCodePoint())}}},e}(),je=function(){function e(e){this._tokens=e}return e.create=function(A){var t=new Le;return t.write(A),new e(t.read())},e.parseValue=function(A){return e.create(A).parseComponentValue()},e.parseValues=function(A){return e.create(A).parseComponentValues()},e.prototype.parseComponentValue=function(){for(var e=this.consumeToken();31===e.type;)e=this.consumeToken();if(32===e.type)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(e);var A=this.consumeComponentValue();do{e=this.consumeToken()}while(31===e.type);if(32===e.type)return A;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},e.prototype.parseComponentValues=function(){for(var e=[];;){var A=this.consumeComponentValue();if(32===A.type)return e;e.push(A),e.push()}},e.prototype.consumeComponentValue=function(){var e=this.consumeToken();switch(e.type){case 11:case 28:case 2:return this.consumeSimpleBlock(e.type);case 19:return this.consumeFunction(e)}return e},e.prototype.consumeSimpleBlock=function(e){for(var A={type:e,values:[]},t=this.consumeToken();;){if(32===t.type||Xe(t,e))return A;this.reconsumeToken(t),A.values.push(this.consumeComponentValue()),t=this.consumeToken()}},e.prototype.consumeFunction=function(e){for(var A={name:e.value,values:[],type:18};;){var t=this.consumeToken();if(32===t.type||3===t.type)return A;this.reconsumeToken(t),A.values.push(this.consumeComponentValue())}},e.prototype.consumeToken=function(){var e=this._tokens.shift();return void 0===e?He:e},e.prototype.reconsumeToken=function(e){this._tokens.unshift(e)},e}(),Ye=function(e){return 15===e.type},Pe=function(e){return 17===e.type},ze=function(e){return 20===e.type},Ke=function(e){return 0===e.type},Je=function(e,A){return ze(e)&&e.value===A},qe=function(e){return 31!==e.type},Ze=function(e){return 31!==e.type&&4!==e.type},Ve=function(e){var A=[],t=[];return e.forEach((function(e){if(4===e.type){if(0===t.length)throw new Error("Error parsing function args, zero tokens for arg");return A.push(t),void(t=[])}31!==e.type&&t.push(e)})),t.length&&A.push(t),A},Xe=function(e,A){return 11===A&&12===e.type||28===A&&29===e.type||2===A&&3===e.type},_e=function(e){return 17===e.type||15===e.type},$e=function(e){return 16===e.type||_e(e)},eA=function(e){return e.length>1?[e[0],e[1]]:[e[0]]},AA={type:17,number:0,flags:4},tA={type:16,number:50,flags:4},iA={type:16,number:100,flags:4},nA=function(e,A,t){var i=e[0],n=e[1];return[sA(i,A),sA(void 0!==n?n:i,t)]},sA=function(e,A){if(16===e.type)return e.number/100*A;if(Ye(e))switch(e.unit){case"rem":case"em":return 16*e.number;default:return e.number}return e.number},aA="grad",oA="turn",rA=function(e,A){if(15===A.type)switch(A.unit){case"deg":return Math.PI*A.number/180;case aA:return Math.PI/200*A.number;case"rad":return A.number;case oA:return 2*Math.PI*A.number}throw new Error("Unsupported angle type")},lA=function(e){return 15===e.type&&("deg"===e.unit||e.unit===aA||"rad"===e.unit||e.unit===oA)},cA=function(e){switch(e.filter(ze).map((function(e){return e.value})).join(" ")){case"to bottom right":case"to right bottom":case"left top":case"top left":return[AA,AA];case"to top":case"bottom":return gA(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[AA,iA];case"to right":case"left":return gA(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[iA,iA];case"to bottom":case"top":return gA(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[iA,AA];case"to left":case"right":return gA(270)}return 0},gA=function(e){return Math.PI*e/180},dA=function(e,A){if(18===A.type){var t=kA[A.name];if(void 0===t)throw new Error('Attempting to parse an unsupported color function "'+A.name+'"');return t(e,A.values)}if(5===A.type){if(3===A.value.length){var i=A.value.substring(0,1),n=A.value.substring(1,2),s=A.value.substring(2,3);return mA(parseInt(i+i,16),parseInt(n+n,16),parseInt(s+s,16),1)}if(4===A.value.length){i=A.value.substring(0,1),n=A.value.substring(1,2),s=A.value.substring(2,3);var a=A.value.substring(3,4);return mA(parseInt(i+i,16),parseInt(n+n,16),parseInt(s+s,16),parseInt(a+a,16)/255)}if(6===A.value.length)return i=A.value.substring(0,2),n=A.value.substring(2,4),s=A.value.substring(4,6),mA(parseInt(i,16),parseInt(n,16),parseInt(s,16),1);if(8===A.value.length)return i=A.value.substring(0,2),n=A.value.substring(2,4),s=A.value.substring(4,6),a=A.value.substring(6,8),mA(parseInt(i,16),parseInt(n,16),parseInt(s,16),parseInt(a,16)/255)}if(20===A.type){var o=CA[A.value.toUpperCase()];if(void 0!==o)return o}return CA.TRANSPARENT},uA=function(e){return 0==(255&e)},hA=function(e){var A=255&e,t=255&e>>8,i=255&e>>16,n=255&e>>24;return A<255?"rgba("+n+","+i+","+t+","+A/255+")":"rgb("+n+","+i+","+t+")"},mA=function(e,A,t,i){return(e<<24|A<<16|t<<8|Math.round(255*i)<<0)>>>0},pA=function(e,A){if(17===e.type)return e.number;if(16===e.type){var t=3===A?1:255;return 3===A?e.number/100*t:Math.round(e.number/100*t)}return 0},wA=function(e,A){var t=A.filter(Ze);if(3===t.length){var i=t.map(pA),n=i[0],s=i[1],a=i[2];return mA(n,s,a,1)}if(4===t.length){var o=t.map(pA),r=(n=o[0],s=o[1],a=o[2],o[3]);return mA(n,s,a,r)}return 0};function BA(e,A,t){return t<0&&(t+=1),t>=1&&(t-=1),t<1/6?(A-e)*t*6+e:t<.5?A:t<2/3?6*(A-e)*(2/3-t)+e:e}var EA=function(e,A){var t=A.filter(Ze),i=t[0],n=t[1],s=t[2],a=t[3],o=(17===i.type?gA(i.number):rA(e,i))/(2*Math.PI),r=$e(n)?n.number/100:0,l=$e(s)?s.number/100:0,c=void 0!==a&&$e(a)?sA(a,1):1;if(0===r)return mA(255*l,255*l,255*l,1);var g=l<=.5?l*(r+1):l+r-l*r,d=2*l-g,u=BA(d,g,o+1/3),h=BA(d,g,o),m=BA(d,g,o-1/3);return mA(255*u,255*h,255*m,c)},kA={hsl:EA,hsla:EA,rgb:wA,rgba:wA},fA=function(e,A){return dA(e,je.create(A).parseComponentValue())},CA={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},OA={name:"background-clip",initialValue:"border-box",prefix:!1,type:1,parse:function(e,A){return A.map((function(e){if(ze(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0}))}},WA={name:"background-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},bA=function(e,A){var t=dA(e,A[0]),i=A[1];return i&&$e(i)?{color:t,stop:i}:{color:t,stop:null}},xA=function(e,A){var t=e[0],i=e[e.length-1];null===t.stop&&(t.stop=AA),null===i.stop&&(i.stop=iA);for(var n=[],s=0,a=0;a<e.length;a++){var o=e[a].stop;if(null!==o){var r=sA(o,A);r>s?n.push(r):n.push(s),s=r}else n.push(null)}var l=null;for(a=0;a<n.length;a++){var c=n[a];if(null===c)null===l&&(l=a);else if(null!==l){for(var g=a-l,d=(c-n[l-1])/(g+1),u=1;u<=g;u++)n[l+u-1]=d*u;l=null}}return e.map((function(e,t){return{color:e.color,stop:Math.max(Math.min(1,n[t]/A),0)}}))},QA=function(e,A,t){var i="number"==typeof e?e:function(e,A,t){var i=A/2,n=t/2,s=sA(e[0],A)-i,a=n-sA(e[1],t);return(Math.atan2(a,s)+2*Math.PI)%(2*Math.PI)}(e,A,t),n=Math.abs(A*Math.sin(i))+Math.abs(t*Math.cos(i)),s=A/2,a=t/2,o=n/2,r=Math.sin(i-Math.PI/2)*o,l=Math.cos(i-Math.PI/2)*o;return[n,s-l,s+l,a-r,a+r]},IA=function(e,A){return Math.sqrt(e*e+A*A)},yA=function(e,A,t,i,n){return[[0,0],[0,A],[e,0],[e,A]].reduce((function(e,A){var s=A[0],a=A[1],o=IA(t-s,i-a);return(n?o<e.optimumDistance:o>e.optimumDistance)?{optimumCorner:A,optimumDistance:o}:e}),{optimumDistance:n?1/0:-1/0,optimumCorner:null}).optimumCorner},vA=function(e,A){var t=gA(180),i=[];return Ve(A).forEach((function(A,n){if(0===n){var s=A[0];if(20===s.type&&-1!==["top","left","right","bottom"].indexOf(s.value))return void(t=cA(A));if(lA(s))return void(t=(rA(e,s)+gA(270))%gA(360))}var a=bA(e,A);i.push(a)})),{angle:t,stops:i,type:1}},DA="closest-side",MA="farthest-side",FA="closest-corner",UA="farthest-corner",RA="circle",TA="ellipse",NA="cover",SA="contain",GA=function(e,A){var t=0,i=3,n=[],s=[];return Ve(A).forEach((function(A,a){var o=!0;if(0===a?o=A.reduce((function(e,A){if(ze(A))switch(A.value){case"center":return s.push(tA),!1;case"top":case"left":return s.push(AA),!1;case"right":case"bottom":return s.push(iA),!1}else if($e(A)||_e(A))return s.push(A),!1;return e}),o):1===a&&(o=A.reduce((function(e,A){if(ze(A))switch(A.value){case RA:return t=0,!1;case TA:return t=1,!1;case SA:case DA:return i=0,!1;case MA:return i=1,!1;case FA:return i=2,!1;case NA:case UA:return i=3,!1}else if(_e(A)||$e(A))return Array.isArray(i)||(i=[]),i.push(A),!1;return e}),o)),o){var r=bA(e,A);n.push(r)}})),{size:i,shape:t,stops:n,position:s,type:2}},HA=function(e,A){if(22===A.type){var t={url:A.value,type:0};return e.cache.addImage(A.value),t}if(18===A.type){var i=jA[A.name];if(void 0===i)throw new Error('Attempting to parse an unsupported image function "'+A.name+'"');return i(e,A.values)}throw new Error("Unsupported image type "+A.type)};var LA,jA={"linear-gradient":function(e,A){var t=gA(180),i=[];return Ve(A).forEach((function(A,n){if(0===n){var s=A[0];if(20===s.type&&"to"===s.value)return void(t=cA(A));if(lA(s))return void(t=rA(e,s))}var a=bA(e,A);i.push(a)})),{angle:t,stops:i,type:1}},"-moz-linear-gradient":vA,"-ms-linear-gradient":vA,"-o-linear-gradient":vA,"-webkit-linear-gradient":vA,"radial-gradient":function(e,A){var t=0,i=3,n=[],s=[];return Ve(A).forEach((function(A,a){var o=!0;if(0===a){var r=!1;o=A.reduce((function(e,A){if(r)if(ze(A))switch(A.value){case"center":return s.push(tA),e;case"top":case"left":return s.push(AA),e;case"right":case"bottom":return s.push(iA),e}else($e(A)||_e(A))&&s.push(A);else if(ze(A))switch(A.value){case RA:return t=0,!1;case TA:return t=1,!1;case"at":return r=!0,!1;case DA:return i=0,!1;case NA:case MA:return i=1,!1;case SA:case FA:return i=2,!1;case UA:return i=3,!1}else if(_e(A)||$e(A))return Array.isArray(i)||(i=[]),i.push(A),!1;return e}),o)}if(o){var l=bA(e,A);n.push(l)}})),{size:i,shape:t,stops:n,position:s,type:2}},"-moz-radial-gradient":GA,"-ms-radial-gradient":GA,"-o-radial-gradient":GA,"-webkit-radial-gradient":GA,"-webkit-gradient":function(e,A){var t=gA(180),i=[],n=1;return Ve(A).forEach((function(A,t){var s=A[0];if(0===t){if(ze(s)&&"linear"===s.value)return void(n=1);if(ze(s)&&"radial"===s.value)return void(n=2)}if(18===s.type)if("from"===s.name){var a=dA(e,s.values[0]);i.push({stop:AA,color:a})}else if("to"===s.name)a=dA(e,s.values[0]),i.push({stop:iA,color:a});else if("color-stop"===s.name){var o=s.values.filter(Ze);if(2===o.length){a=dA(e,o[1]);var r=o[0];Pe(r)&&i.push({stop:{type:16,number:100*r.number,flags:r.flags},color:a})}}})),1===n?{angle:(t+gA(180))%gA(360),stops:i,type:n}:{size:3,shape:0,stops:i,position:[],type:n}}},YA={name:"background-image",initialValue:"none",type:1,prefix:!1,parse:function(e,A){if(0===A.length)return[];var t=A[0];return 20===t.type&&"none"===t.value?[]:A.filter((function(e){return Ze(e)&&function(e){return!(20===e.type&&"none"===e.value||18===e.type&&!jA[e.name])}(e)})).map((function(A){return HA(e,A)}))}},PA={name:"background-origin",initialValue:"border-box",prefix:!1,type:1,parse:function(e,A){return A.map((function(e){if(ze(e))switch(e.value){case"padding-box":return 1;case"content-box":return 2}return 0}))}},zA={name:"background-position",initialValue:"0% 0%",type:1,prefix:!1,parse:function(e,A){return Ve(A).map((function(e){return e.filter($e)})).map(eA)}},KA={name:"background-repeat",initialValue:"repeat",prefix:!1,type:1,parse:function(e,A){return Ve(A).map((function(e){return e.filter(ze).map((function(e){return e.value})).join(" ")})).map(JA)}},JA=function(e){switch(e){case"no-repeat":return 1;case"repeat-x":case"repeat no-repeat":return 2;case"repeat-y":case"no-repeat repeat":return 3;default:return 0}};!function(e){e.AUTO="auto",e.CONTAIN="contain",e.COVER="cover"}(LA||(LA={}));var qA,ZA={name:"background-size",initialValue:"0",prefix:!1,type:1,parse:function(e,A){return Ve(A).map((function(e){return e.filter(VA)}))}},VA=function(e){return ze(e)||$e(e)},XA=function(e){return{name:"border-"+e+"-color",initialValue:"transparent",prefix:!1,type:3,format:"color"}},_A=XA("top"),$A=XA("right"),et=XA("bottom"),At=XA("left"),tt=function(e){return{name:"border-radius-"+e,initialValue:"0 0",prefix:!1,type:1,parse:function(e,A){return eA(A.filter($e))}}},it=tt("top-left"),nt=tt("top-right"),st=tt("bottom-right"),at=tt("bottom-left"),ot=function(e){return{name:"border-"+e+"-style",initialValue:"solid",prefix:!1,type:2,parse:function(e,A){switch(A){case"none":return 0;case"dashed":return 2;case"dotted":return 3;case"double":return 4}return 1}}},rt=ot("top"),lt=ot("right"),ct=ot("bottom"),gt=ot("left"),dt=function(e){return{name:"border-"+e+"-width",initialValue:"0",type:0,prefix:!1,parse:function(e,A){return Ye(A)?A.number:0}}},ut=dt("top"),ht=dt("right"),mt=dt("bottom"),pt=dt("left"),wt={name:"color",initialValue:"transparent",prefix:!1,type:3,format:"color"},Bt={name:"direction",initialValue:"ltr",prefix:!1,type:2,parse:function(e,A){return"rtl"===A?1:0}},Et={name:"display",initialValue:"inline-block",prefix:!1,type:1,parse:function(e,A){return A.filter(ze).reduce((function(e,A){return e|kt(A.value)}),0)}},kt=function(e){switch(e){case"block":case"-webkit-box":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0},ft={name:"float",initialValue:"none",prefix:!1,type:2,parse:function(e,A){switch(A){case"left":return 1;case"right":return 2;case"inline-start":return 3;case"inline-end":return 4}return 0}},Ct={name:"letter-spacing",initialValue:"0",prefix:!1,type:0,parse:function(e,A){return 20===A.type&&"normal"===A.value?0:17===A.type||15===A.type?A.number:0}};!function(e){e.NORMAL="normal",e.STRICT="strict"}(qA||(qA={}));var Ot,Wt={name:"line-break",initialValue:"normal",prefix:!1,type:2,parse:function(e,A){return"strict"===A?qA.STRICT:qA.NORMAL}},bt={name:"line-height",initialValue:"normal",prefix:!1,type:4},xt=function(e,A){return ze(e)&&"normal"===e.value?1.2*A:17===e.type?A*e.number:$e(e)?sA(e,A):A},Qt={name:"list-style-image",initialValue:"none",type:0,prefix:!1,parse:function(e,A){return 20===A.type&&"none"===A.value?null:HA(e,A)}},It={name:"list-style-position",initialValue:"outside",prefix:!1,type:2,parse:function(e,A){return"inside"===A?0:1}},yt={name:"list-style-type",initialValue:"none",prefix:!1,type:2,parse:function(e,A){switch(A){case"disc":return 0;case"circle":return 1;case"square":return 2;case"decimal":return 3;case"cjk-decimal":return 4;case"decimal-leading-zero":return 5;case"lower-roman":return 6;case"upper-roman":return 7;case"lower-greek":return 8;case"lower-alpha":return 9;case"upper-alpha":return 10;case"arabic-indic":return 11;case"armenian":return 12;case"bengali":return 13;case"cambodian":return 14;case"cjk-earthly-branch":return 15;case"cjk-heavenly-stem":return 16;case"cjk-ideographic":return 17;case"devanagari":return 18;case"ethiopic-numeric":return 19;case"georgian":return 20;case"gujarati":return 21;case"gurmukhi":case"hebrew":return 22;case"hiragana":return 23;case"hiragana-iroha":return 24;case"japanese-formal":return 25;case"japanese-informal":return 26;case"kannada":return 27;case"katakana":return 28;case"katakana-iroha":return 29;case"khmer":return 30;case"korean-hangul-formal":return 31;case"korean-hanja-formal":return 32;case"korean-hanja-informal":return 33;case"lao":return 34;case"lower-armenian":return 35;case"malayalam":return 36;case"mongolian":return 37;case"myanmar":return 38;case"oriya":return 39;case"persian":return 40;case"simp-chinese-formal":return 41;case"simp-chinese-informal":return 42;case"tamil":return 43;case"telugu":return 44;case"thai":return 45;case"tibetan":return 46;case"trad-chinese-formal":return 47;case"trad-chinese-informal":return 48;case"upper-armenian":return 49;case"disclosure-open":return 50;case"disclosure-closed":return 51;default:return-1}}},vt=function(e){return{name:"margin-"+e,initialValue:"0",prefix:!1,type:4}},Dt=vt("top"),Mt=vt("right"),Ft=vt("bottom"),Ut=vt("left"),Rt={name:"overflow",initialValue:"visible",prefix:!1,type:1,parse:function(e,A){return A.filter(ze).map((function(e){switch(e.value){case"hidden":return 1;case"scroll":return 2;case"clip":return 3;case"auto":return 4;default:return 0}}))}},Tt={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:2,parse:function(e,A){return"break-word"===A?"break-word":"normal"}},Nt=function(e){return{name:"padding-"+e,initialValue:"0",prefix:!1,type:3,format:"length-percentage"}},St=Nt("top"),Gt=Nt("right"),Ht=Nt("bottom"),Lt=Nt("left"),jt={name:"text-align",initialValue:"left",prefix:!1,type:2,parse:function(e,A){switch(A){case"right":return 2;case"center":case"justify":return 1;default:return 0}}},Yt={name:"position",initialValue:"static",prefix:!1,type:2,parse:function(e,A){switch(A){case"relative":return 1;case"absolute":return 2;case"fixed":return 3;case"sticky":return 4}return 0}},Pt={name:"text-shadow",initialValue:"none",type:1,prefix:!1,parse:function(e,A){return 1===A.length&&Je(A[0],"none")?[]:Ve(A).map((function(A){for(var t={color:CA.TRANSPARENT,offsetX:AA,offsetY:AA,blur:AA},i=0,n=0;n<A.length;n++){var s=A[n];_e(s)?(0===i?t.offsetX=s:1===i?t.offsetY=s:t.blur=s,i++):t.color=dA(e,s)}return t}))}},zt={name:"text-transform",initialValue:"none",prefix:!1,type:2,parse:function(e,A){switch(A){case"uppercase":return 2;case"lowercase":return 1;case"capitalize":return 3}return 0}},Kt={name:"transform",initialValue:"none",prefix:!0,type:0,parse:function(e,A){if(20===A.type&&"none"===A.value)return null;if(18===A.type){var t=Jt[A.name];if(void 0===t)throw new Error('Attempting to parse an unsupported transform function "'+A.name+'"');return t(A.values)}return null}},Jt={matrix:function(e){var A=e.filter((function(e){return 17===e.type})).map((function(e){return e.number}));return 6===A.length?A:null},matrix3d:function(e){var A=e.filter((function(e){return 17===e.type})).map((function(e){return e.number})),t=A[0],i=A[1];A[2],A[3];var n=A[4],s=A[5];A[6],A[7],A[8],A[9],A[10],A[11];var a=A[12],o=A[13];return A[14],A[15],16===A.length?[t,i,n,s,a,o]:null}},qt={type:16,number:50,flags:4},Zt=[qt,qt],Vt={name:"transform-origin",initialValue:"50% 50%",prefix:!0,type:1,parse:function(e,A){var t=A.filter($e);return 2!==t.length?Zt:[t[0],t[1]]}},Xt={name:"visible",initialValue:"none",prefix:!1,type:2,parse:function(e,A){switch(A){case"hidden":return 1;case"collapse":return 2;default:return 0}}};!function(e){e.NORMAL="normal",e.BREAK_ALL="break-all",e.KEEP_ALL="keep-all"}(Ot||(Ot={}));for(var _t={name:"word-break",initialValue:"normal",prefix:!1,type:2,parse:function(e,A){switch(A){case"break-all":return Ot.BREAK_ALL;case"keep-all":return Ot.KEEP_ALL;default:return Ot.NORMAL}}},$t={name:"z-index",initialValue:"auto",prefix:!1,type:0,parse:function(e,A){if(20===A.type)return{auto:!0,order:0};if(Pe(A))return{auto:!1,order:A.number};throw new Error("Invalid z-index number parsed")}},ei={name:"time",parse:function(e,A){if(15===A.type)switch(A.unit.toLowerCase()){case"s":return 1e3*A.number;case"ms":return A.number}throw new Error("Unsupported time type")}},Ai={name:"opacity",initialValue:"1",type:0,prefix:!1,parse:function(e,A){return Pe(A)?A.number:1}},ti={name:"text-decoration-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},ii={name:"text-decoration-line",initialValue:"none",prefix:!1,type:1,parse:function(e,A){return A.filter(ze).map((function(e){switch(e.value){case"underline":return 1;case"overline":return 2;case"line-through":return 3;case"none":return 4}return 0})).filter((function(e){return 0!==e}))}},ni={name:"font-family",initialValue:"",prefix:!1,type:1,parse:function(e,A){var t=[],i=[];return A.forEach((function(e){switch(e.type){case 20:case 0:t.push(e.value);break;case 17:t.push(e.number.toString());break;case 4:i.push(t.join(" ")),t.length=0}})),t.length&&i.push(t.join(" ")),i.map((function(e){return-1===e.indexOf(" ")?e:"'"+e+"'"}))}},si={name:"font-size",initialValue:"0",prefix:!1,type:3,format:"length"},ai={name:"font-weight",initialValue:"normal",type:0,prefix:!1,parse:function(e,A){return Pe(A)?A.number:ze(A)&&"bold"===A.value?700:400}},oi={name:"font-variant",initialValue:"none",type:1,prefix:!1,parse:function(e,A){return A.filter(ze).map((function(e){return e.value}))}},ri={name:"font-style",initialValue:"normal",prefix:!1,type:2,parse:function(e,A){switch(A){case"oblique":return"oblique";case"italic":return"italic";default:return"normal"}}},li=function(e,A){return 0!=(e&A)},ci={name:"content",initialValue:"none",type:1,prefix:!1,parse:function(e,A){if(0===A.length)return[];var t=A[0];return 20===t.type&&"none"===t.value?[]:A}},gi={name:"counter-increment",initialValue:"none",prefix:!0,type:1,parse:function(e,A){if(0===A.length)return null;var t=A[0];if(20===t.type&&"none"===t.value)return null;for(var i=[],n=A.filter(qe),s=0;s<n.length;s++){var a=n[s],o=n[s+1];if(20===a.type){var r=o&&Pe(o)?o.number:1;i.push({counter:a.value,increment:r})}}return i}},di={name:"counter-reset",initialValue:"none",prefix:!0,type:1,parse:function(e,A){if(0===A.length)return[];for(var t=[],i=A.filter(qe),n=0;n<i.length;n++){var s=i[n],a=i[n+1];if(ze(s)&&"none"!==s.value){var o=a&&Pe(a)?a.number:0;t.push({counter:s.value,reset:o})}}return t}},ui={name:"duration",initialValue:"0s",prefix:!1,type:1,parse:function(e,A){return A.filter(Ye).map((function(A){return ei.parse(e,A)}))}},hi={name:"quotes",initialValue:"none",prefix:!0,type:1,parse:function(e,A){if(0===A.length)return null;var t=A[0];if(20===t.type&&"none"===t.value)return null;var i=[],n=A.filter(Ke);if(n.length%2!=0)return null;for(var s=0;s<n.length;s+=2){var a=n[s].value,o=n[s+1].value;i.push({open:a,close:o})}return i}},mi=function(e,A,t){if(!e)return"";var i=e[Math.min(A,e.length-1)];return i?t?i.open:i.close:""},pi={name:"box-shadow",initialValue:"none",type:1,prefix:!1,parse:function(e,A){return 1===A.length&&Je(A[0],"none")?[]:Ve(A).map((function(A){for(var t={color:255,offsetX:AA,offsetY:AA,blur:AA,spread:AA,inset:!1},i=0,n=0;n<A.length;n++){var s=A[n];Je(s,"inset")?t.inset=!0:_e(s)?(0===i?t.offsetX=s:1===i?t.offsetY=s:2===i?t.blur=s:t.spread=s,i++):t.color=dA(e,s)}return t}))}},wi={name:"paint-order",initialValue:"normal",prefix:!1,type:1,parse:function(e,A){var t=[];return A.filter(ze).forEach((function(e){switch(e.value){case"stroke":t.push(1);break;case"fill":t.push(0);break;case"markers":t.push(2)}})),[0,1,2].forEach((function(e){-1===t.indexOf(e)&&t.push(e)})),t}},Bi={name:"-webkit-text-stroke-color",initialValue:"currentcolor",prefix:!1,type:3,format:"color"},Ei={name:"-webkit-text-stroke-width",initialValue:"0",type:0,prefix:!1,parse:function(e,A){return Ye(A)?A.number:0}},ki=function(){function e(e,A){var t,i;this.animationDuration=Oi(e,ui,A.animationDuration),this.backgroundClip=Oi(e,OA,A.backgroundClip),this.backgroundColor=Oi(e,WA,A.backgroundColor),this.backgroundImage=Oi(e,YA,A.backgroundImage),this.backgroundOrigin=Oi(e,PA,A.backgroundOrigin),this.backgroundPosition=Oi(e,zA,A.backgroundPosition),this.backgroundRepeat=Oi(e,KA,A.backgroundRepeat),this.backgroundSize=Oi(e,ZA,A.backgroundSize),this.borderTopColor=Oi(e,_A,A.borderTopColor),this.borderRightColor=Oi(e,$A,A.borderRightColor),this.borderBottomColor=Oi(e,et,A.borderBottomColor),this.borderLeftColor=Oi(e,At,A.borderLeftColor),this.borderTopLeftRadius=Oi(e,it,A.borderTopLeftRadius),this.borderTopRightRadius=Oi(e,nt,A.borderTopRightRadius),this.borderBottomRightRadius=Oi(e,st,A.borderBottomRightRadius),this.borderBottomLeftRadius=Oi(e,at,A.borderBottomLeftRadius),this.borderTopStyle=Oi(e,rt,A.borderTopStyle),this.borderRightStyle=Oi(e,lt,A.borderRightStyle),this.borderBottomStyle=Oi(e,ct,A.borderBottomStyle),this.borderLeftStyle=Oi(e,gt,A.borderLeftStyle),this.borderTopWidth=Oi(e,ut,A.borderTopWidth),this.borderRightWidth=Oi(e,ht,A.borderRightWidth),this.borderBottomWidth=Oi(e,mt,A.borderBottomWidth),this.borderLeftWidth=Oi(e,pt,A.borderLeftWidth),this.boxShadow=Oi(e,pi,A.boxShadow),this.color=Oi(e,wt,A.color),this.direction=Oi(e,Bt,A.direction),this.display=Oi(e,Et,A.display),this.float=Oi(e,ft,A.cssFloat),this.fontFamily=Oi(e,ni,A.fontFamily),this.fontSize=Oi(e,si,A.fontSize),this.fontStyle=Oi(e,ri,A.fontStyle),this.fontVariant=Oi(e,oi,A.fontVariant),this.fontWeight=Oi(e,ai,A.fontWeight),this.letterSpacing=Oi(e,Ct,A.letterSpacing),this.lineBreak=Oi(e,Wt,A.lineBreak),this.lineHeight=Oi(e,bt,A.lineHeight),this.listStyleImage=Oi(e,Qt,A.listStyleImage),this.listStylePosition=Oi(e,It,A.listStylePosition),this.listStyleType=Oi(e,yt,A.listStyleType),this.marginTop=Oi(e,Dt,A.marginTop),this.marginRight=Oi(e,Mt,A.marginRight),this.marginBottom=Oi(e,Ft,A.marginBottom),this.marginLeft=Oi(e,Ut,A.marginLeft),this.opacity=Oi(e,Ai,A.opacity);var n=Oi(e,Rt,A.overflow);this.overflowX=n[0],this.overflowY=n[n.length>1?1:0],this.overflowWrap=Oi(e,Tt,A.overflowWrap),this.paddingTop=Oi(e,St,A.paddingTop),this.paddingRight=Oi(e,Gt,A.paddingRight),this.paddingBottom=Oi(e,Ht,A.paddingBottom),this.paddingLeft=Oi(e,Lt,A.paddingLeft),this.paintOrder=Oi(e,wi,A.paintOrder),this.position=Oi(e,Yt,A.position),this.textAlign=Oi(e,jt,A.textAlign),this.textDecorationColor=Oi(e,ti,null!==(t=A.textDecorationColor)&&void 0!==t?t:A.color),this.textDecorationLine=Oi(e,ii,null!==(i=A.textDecorationLine)&&void 0!==i?i:A.textDecoration),this.textShadow=Oi(e,Pt,A.textShadow),this.textTransform=Oi(e,zt,A.textTransform),this.transform=Oi(e,Kt,A.transform),this.transformOrigin=Oi(e,Vt,A.transformOrigin),this.visibility=Oi(e,Xt,A.visibility),this.webkitTextStrokeColor=Oi(e,Bi,A.webkitTextStrokeColor),this.webkitTextStrokeWidth=Oi(e,Ei,A.webkitTextStrokeWidth),this.wordBreak=Oi(e,_t,A.wordBreak),this.zIndex=Oi(e,$t,A.zIndex)}return e.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&0===this.visibility},e.prototype.isTransparent=function(){return uA(this.backgroundColor)},e.prototype.isTransformed=function(){return null!==this.transform},e.prototype.isPositioned=function(){return 0!==this.position},e.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},e.prototype.isFloating=function(){return 0!==this.float},e.prototype.isInlineLevel=function(){return li(this.display,4)||li(this.display,33554432)||li(this.display,268435456)||li(this.display,536870912)||li(this.display,67108864)||li(this.display,134217728)},e}(),fi=function(e,A){this.content=Oi(e,ci,A.content),this.quotes=Oi(e,hi,A.quotes)},Ci=function(e,A){this.counterIncrement=Oi(e,gi,A.counterIncrement),this.counterReset=Oi(e,di,A.counterReset)},Oi=function(e,A,t){var i=new Le,n=null!=t?t.toString():A.initialValue;i.write(n);var s=new je(i.read());switch(A.type){case 2:var a=s.parseComponentValue();return A.parse(e,ze(a)?a.value:A.initialValue);case 0:return A.parse(e,s.parseComponentValue());case 1:return A.parse(e,s.parseComponentValues());case 4:return s.parseComponentValue();case 3:switch(A.format){case"angle":return rA(e,s.parseComponentValue());case"color":return dA(e,s.parseComponentValue());case"image":return HA(e,s.parseComponentValue());case"length":var o=s.parseComponentValue();return _e(o)?o:AA;case"length-percentage":var r=s.parseComponentValue();return $e(r)?r:AA;case"time":return ei.parse(e,s.parseComponentValue())}}},Wi=function(e,A){var t=function(e){switch(e.getAttribute("data-html2canvas-debug")){case"all":return 1;case"clone":return 2;case"parse":return 3;case"render":return 4;default:return 0}}(e);return 1===t||A===t},bi=function(e,A){this.context=e,this.textNodes=[],this.elements=[],this.flags=0,Wi(A,3),this.styles=new ki(e,window.getComputedStyle(A,null)),vn(A)&&(this.styles.animationDuration.some((function(e){return e>0}))&&(A.style.animationDuration="0s"),null!==this.styles.transform&&(A.style.transform="none")),this.bounds=o(this.context,A),Wi(A,4)&&(this.flags|=16)},xi="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Qi="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Ii=0;Ii<64;Ii++)Qi[xi.charCodeAt(Ii)]=Ii;for(var yi=function(e,A,t){return e.slice?e.slice(A,t):new Uint16Array(Array.prototype.slice.call(e,A,t))},vi=function(){function e(e,A,t,i,n,s){this.initialValue=e,this.errorValue=A,this.highStart=t,this.highValueIndex=i,this.index=n,this.data=s}return e.prototype.get=function(e){var A;if(e>=0){if(e<55296||e>56319&&e<=65535)return A=((A=this.index[e>>5])<<2)+(31&e),this.data[A];if(e<=65535)return A=((A=this.index[2048+(e-55296>>5)])<<2)+(31&e),this.data[A];if(e<this.highStart)return A=2080+(e>>11),A=this.index[A],A+=e>>5&63,A=((A=this.index[A])<<2)+(31&e),this.data[A];if(e<=1114111)return this.data[this.highValueIndex]}return this.errorValue},e}(),Di="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Mi="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Fi=0;Fi<64;Fi++)Mi[Di.charCodeAt(Fi)]=Fi;var Ui,Ri=8,Ti=9,Ni=11,Si=12,Gi=function(){for(var e=[],A=0;A<arguments.length;A++)e[A]=arguments[A];if(String.fromCodePoint)return String.fromCodePoint.apply(String,e);var t=e.length;if(!t)return"";for(var i=[],n=-1,s="";++n<t;){var a=e[n];a<=65535?i.push(a):(a-=65536,i.push(55296+(a>>10),a%1024+56320)),(n+1===t||i.length>16384)&&(s+=String.fromCharCode.apply(String,i),i.length=0)}return s},Hi=function(e,A){var t=function(e){var A,t,i,n,s,a=.75*e.length,o=e.length,r=0;"="===e[e.length-1]&&(a--,"="===e[e.length-2]&&a--);var l="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&void 0!==Uint8Array.prototype.slice?new ArrayBuffer(a):new Array(a),c=Array.isArray(l)?l:new Uint8Array(l);for(A=0;A<o;A+=4)t=Qi[e.charCodeAt(A)],i=Qi[e.charCodeAt(A+1)],n=Qi[e.charCodeAt(A+2)],s=Qi[e.charCodeAt(A+3)],c[r++]=t<<2|i>>4,c[r++]=(15&i)<<4|n>>2,c[r++]=(3&n)<<6|63&s;return l}(e),i=Array.isArray(t)?function(e){for(var A=e.length,t=[],i=0;i<A;i+=4)t.push(e[i+3]<<24|e[i+2]<<16|e[i+1]<<8|e[i]);return t}(t):new Uint32Array(t),n=Array.isArray(t)?function(e){for(var A=e.length,t=[],i=0;i<A;i+=2)t.push(e[i+1]<<8|e[i]);return t}(t):new Uint16Array(t),s=yi(n,12,i[4]/2),a=2===i[5]?yi(n,(24+i[4])/2):function(e,A,t){return e.slice?e.slice(A,t):new Uint32Array(Array.prototype.slice.call(e,A,t))}(i,Math.ceil((24+i[4])/4));return new vi(i[0],i[1],i[2],i[3],s,a)}("AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA="),Li="×",ji=function(e){return Hi.get(e)},Yi=function(e,A,t){var i=t-2,n=A[i],s=A[t-1],a=A[t];if(2===s&&3===a)return Li;if(2===s||3===s||4===s)return"÷";if(2===a||3===a||4===a)return"÷";if(s===Ri&&-1!==[Ri,Ti,Ni,Si].indexOf(a))return Li;if(!(s!==Ni&&s!==Ti||a!==Ti&&10!==a))return Li;if((s===Si||10===s)&&10===a)return Li;if(13===a||5===a)return Li;if(7===a)return Li;if(1===s)return Li;if(13===s&&14===a){for(;5===n;)n=A[--i];if(14===n)return Li}if(15===s&&15===a){for(var o=0;15===n;)o++,n=A[--i];if(o%2==0)return Li}return"÷"},Pi=function(e){var A=function(e){for(var A=[],t=0,i=e.length;t<i;){var n=e.charCodeAt(t++);if(n>=55296&&n<=56319&&t<i){var s=e.charCodeAt(t++);56320==(64512&s)?A.push(((1023&n)<<10)+(1023&s)+65536):(A.push(n),t--)}else A.push(n)}return A}(e),t=A.length,i=0,n=0,s=A.map(ji);return{next:function(){if(i>=t)return{done:!0,value:null};for(var e=Li;i<t&&(e=Yi(0,s,++i))===Li;);if(e!==Li||i===t){var a=Gi.apply(null,A.slice(n,i));return n=i,{value:a,done:!1}}return{done:!0,value:null}}}},zi=function(e){return 0===e[0]&&255===e[1]&&0===e[2]&&255===e[3]},Ki=function(e,A,t,i,n){var s="http://www.w3.org/2000/svg",a=document.createElementNS(s,"svg"),o=document.createElementNS(s,"foreignObject");return a.setAttributeNS(null,"width",e.toString()),a.setAttributeNS(null,"height",A.toString()),o.setAttributeNS(null,"width","100%"),o.setAttributeNS(null,"height","100%"),o.setAttributeNS(null,"x",t.toString()),o.setAttributeNS(null,"y",i.toString()),o.setAttributeNS(null,"externalResourcesRequired","true"),a.appendChild(o),o.appendChild(n),a},Ji=function(e){return new Promise((function(A,t){var i=new Image;i.onload=function(){return A(i)},i.onerror=t,i.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent((new XMLSerializer).serializeToString(e))}))},qi={get SUPPORT_RANGE_BOUNDS(){var e=function(e){if(e.createRange){var A=e.createRange();if(A.getBoundingClientRect){var t=e.createElement("boundtest");t.style.height="123px",t.style.display="block",e.body.appendChild(t),A.selectNode(t);var i=A.getBoundingClientRect(),n=Math.round(i.height);if(e.body.removeChild(t),123===n)return!0}}return!1}(document);return Object.defineProperty(qi,"SUPPORT_RANGE_BOUNDS",{value:e}),e},get SUPPORT_WORD_BREAKING(){var e=qi.SUPPORT_RANGE_BOUNDS&&function(e){var A=e.createElement("boundtest");A.style.width="50px",A.style.display="block",A.style.fontSize="12px",A.style.letterSpacing="0px",A.style.wordSpacing="0px",e.body.appendChild(A);var t=e.createRange();A.innerHTML="function"==typeof"".repeat?"👨".repeat(10):"";var i=A.firstChild,n=r(i.data).map((function(e){return l(e)})),s=0,a={},o=n.every((function(e,A){t.setStart(i,s),t.setEnd(i,s+e.length);var n=t.getBoundingClientRect();s+=e.length;var o=n.x>a.x||n.y>a.y;return a=n,0===A||o}));return e.body.removeChild(A),o}(document);return Object.defineProperty(qi,"SUPPORT_WORD_BREAKING",{value:e}),e},get SUPPORT_SVG_DRAWING(){var e=function(e){var A=new Image,t=e.createElement("canvas"),i=t.getContext("2d");if(!i)return!1;A.src="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>";try{i.drawImage(A,0,0),t.toDataURL()}catch(e){return!1}return!0}(document);return Object.defineProperty(qi,"SUPPORT_SVG_DRAWING",{value:e}),e},get SUPPORT_FOREIGNOBJECT_DRAWING(){var e="function"==typeof Array.from&&"function"==typeof window.fetch?function(e){var A=e.createElement("canvas"),t=100;A.width=t,A.height=t;var i=A.getContext("2d");if(!i)return Promise.reject(!1);i.fillStyle="rgb(0, 255, 0)",i.fillRect(0,0,t,t);var n=new Image,s=A.toDataURL();n.src=s;var a=Ki(t,t,0,0,n);return i.fillStyle="red",i.fillRect(0,0,t,t),Ji(a).then((function(A){i.drawImage(A,0,0);var n=i.getImageData(0,0,t,t).data;i.fillStyle="red",i.fillRect(0,0,t,t);var a=e.createElement("div");return a.style.backgroundImage="url("+s+")",a.style.height=t+"px",zi(n)?Ji(Ki(t,t,0,0,a)):Promise.reject(!1)})).then((function(e){return i.drawImage(e,0,0),zi(i.getImageData(0,0,t,t).data)})).catch((function(){return!1}))}(document):Promise.resolve(!1);return Object.defineProperty(qi,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:e}),e},get SUPPORT_CORS_IMAGES(){var e=void 0!==(new Image).crossOrigin;return Object.defineProperty(qi,"SUPPORT_CORS_IMAGES",{value:e}),e},get SUPPORT_RESPONSE_TYPE(){var e="string"==typeof(new XMLHttpRequest).responseType;return Object.defineProperty(qi,"SUPPORT_RESPONSE_TYPE",{value:e}),e},get SUPPORT_CORS_XHR(){var e="withCredentials"in new XMLHttpRequest;return Object.defineProperty(qi,"SUPPORT_CORS_XHR",{value:e}),e},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var e=!("undefined"==typeof Intl||!Intl.Segmenter);return Object.defineProperty(qi,"SUPPORT_NATIVE_TEXT_SEGMENTATION",{value:e}),e}},Zi=function(e,A){this.text=e,this.bounds=A},Vi=function(e,A){var t=A.ownerDocument;if(t){var i=t.createElement("html2canvaswrapper");i.appendChild(A.cloneNode(!0));var n=A.parentNode;if(n){n.replaceChild(i,A);var s=o(e,i);return i.firstChild&&n.replaceChild(i.firstChild,i),s}}return a.EMPTY},Xi=function(e,A,t){var i=e.ownerDocument;if(!i)throw new Error("Node has no owner document");var n=i.createRange();return n.setStart(e,A),n.setEnd(e,A+t),n},_i=function(e){if(qi.SUPPORT_NATIVE_TEXT_SEGMENTATION){var A=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(A.segment(e)).map((function(e){return e.segment}))}return function(e){for(var A,t=Pi(e),i=[];!(A=t.next()).done;)A.value&&i.push(A.value.slice());return i}(e)},$i=function(e,A){return 0!==A.letterSpacing?_i(e):function(e,A){if(qi.SUPPORT_NATIVE_TEXT_SEGMENTATION){var t=new Intl.Segmenter(void 0,{granularity:"word"});return Array.from(t.segment(e)).map((function(e){return e.segment}))}return An(e,A)}(e,A)},en=[32,160,4961,65792,65793,4153,4241],An=function(e,A){for(var t,i=function(e,A){var t=r(e),i=se(t,A),n=i[0],s=i[1],a=i[2],o=t.length,l=0,c=0;return{next:function(){if(c>=o)return{done:!0,value:null};for(var e=K;c<o&&(e=ne(t,s,n,++c,a))===K;);if(e!==K||c===o){var A=new ae(t,e,l,c);return l=c,{value:A,done:!1}}return{done:!0,value:null}}}}(e,{lineBreak:A.lineBreak,wordBreak:"break-word"===A.overflowWrap?"break-word":A.wordBreak}),n=[],s=function(){if(t.value){var e=t.value.slice(),A=r(e),i="";A.forEach((function(e){-1===en.indexOf(e)?i+=l(e):(i.length&&n.push(i),n.push(l(e)),i="")})),i.length&&n.push(i)}};!(t=i.next()).done;)s();return n},tn=function(e,A,t){this.text=nn(A.data,t.textTransform),this.textBounds=function(e,A,t,i){var n=$i(A,t),s=[],o=0;return n.forEach((function(A){if(t.textDecorationLine.length||A.trim().length>0)if(qi.SUPPORT_RANGE_BOUNDS){var n=Xi(i,o,A.length).getClientRects();if(n.length>1){var r=_i(A),l=0;r.forEach((function(A){s.push(new Zi(A,a.fromDOMRectList(e,Xi(i,l+o,A.length).getClientRects()))),l+=A.length}))}else s.push(new Zi(A,a.fromDOMRectList(e,n)))}else{var c=i.splitText(A.length);s.push(new Zi(A,Vi(e,i))),i=c}else qi.SUPPORT_RANGE_BOUNDS||(i=i.splitText(A.length));o+=A.length})),s}(e,this.text,t,A)},nn=function(e,A){switch(A){case 1:return e.toLowerCase();case 3:return e.replace(sn,an);case 2:return e.toUpperCase();default:return e}},sn=/(^|\s|:|-|\(|\))([a-z])/g,an=function(e,A,t){return e.length>0?A+t.toUpperCase():e},on=function(e){function t(A,t){var i=e.call(this,A,t)||this;return i.src=t.currentSrc||t.src,i.intrinsicWidth=t.naturalWidth,i.intrinsicHeight=t.naturalHeight,i.context.cache.addImage(i.src),i}return A(t,e),t}(bi),rn=function(e){function t(A,t){var i=e.call(this,A,t)||this;return i.canvas=t,i.intrinsicWidth=t.width,i.intrinsicHeight=t.height,i}return A(t,e),t}(bi),ln=function(e){function t(A,t){var i=e.call(this,A,t)||this,n=new XMLSerializer,s=o(A,t);return t.setAttribute("width",s.width+"px"),t.setAttribute("height",s.height+"px"),i.svg="data:image/svg+xml,"+encodeURIComponent(n.serializeToString(t)),i.intrinsicWidth=t.width.baseVal.value,i.intrinsicHeight=t.height.baseVal.value,i.context.cache.addImage(i.svg),i}return A(t,e),t}(bi),cn=function(e){function t(A,t){var i=e.call(this,A,t)||this;return i.value=t.value,i}return A(t,e),t}(bi),gn=function(e){function t(A,t){var i=e.call(this,A,t)||this;return i.start=t.start,i.reversed="boolean"==typeof t.reversed&&!0===t.reversed,i}return A(t,e),t}(bi),dn=[{type:15,flags:0,unit:"px",number:3}],un=[{type:16,flags:0,number:50}],hn="checkbox",mn="radio",pn="password",wn=707406591,Bn=function(e){function t(A,t){var i,n,s,o=e.call(this,A,t)||this;switch(o.type=t.type.toLowerCase(),o.checked=t.checked,o.value=0===(s=(n=t).type===pn?new Array(n.value.length+1).join("•"):n.value).length?n.placeholder||"":s,o.type!==hn&&o.type!==mn||(o.styles.backgroundColor=3739148031,o.styles.borderTopColor=o.styles.borderRightColor=o.styles.borderBottomColor=o.styles.borderLeftColor=2779096575,o.styles.borderTopWidth=o.styles.borderRightWidth=o.styles.borderBottomWidth=o.styles.borderLeftWidth=1,o.styles.borderTopStyle=o.styles.borderRightStyle=o.styles.borderBottomStyle=o.styles.borderLeftStyle=1,o.styles.backgroundClip=[0],o.styles.backgroundOrigin=[0],o.bounds=(i=o.bounds).width>i.height?new a(i.left+(i.width-i.height)/2,i.top,i.height,i.height):i.width<i.height?new a(i.left,i.top+(i.height-i.width)/2,i.width,i.width):i),o.type){case hn:o.styles.borderTopRightRadius=o.styles.borderTopLeftRadius=o.styles.borderBottomRightRadius=o.styles.borderBottomLeftRadius=dn;break;case mn:o.styles.borderTopRightRadius=o.styles.borderTopLeftRadius=o.styles.borderBottomRightRadius=o.styles.borderBottomLeftRadius=un}return o}return A(t,e),t}(bi),En=function(e){function t(A,t){var i=e.call(this,A,t)||this,n=t.options[t.selectedIndex||0];return i.value=n&&n.text||"",i}return A(t,e),t}(bi),kn=function(e){function t(A,t){var i=e.call(this,A,t)||this;return i.value=t.value,i}return A(t,e),t}(bi),fn=function(e){function t(A,t){var i=e.call(this,A,t)||this;i.src=t.src,i.width=parseInt(t.width,10)||0,i.height=parseInt(t.height,10)||0,i.backgroundColor=i.styles.backgroundColor;try{if(t.contentWindow&&t.contentWindow.document&&t.contentWindow.document.documentElement){i.tree=bn(A,t.contentWindow.document.documentElement);var n=t.contentWindow.document.documentElement?fA(A,getComputedStyle(t.contentWindow.document.documentElement).backgroundColor):CA.TRANSPARENT,s=t.contentWindow.document.body?fA(A,getComputedStyle(t.contentWindow.document.body).backgroundColor):CA.TRANSPARENT;i.backgroundColor=uA(n)?uA(s)?i.styles.backgroundColor:s:n}}catch(e){}return i}return A(t,e),t}(bi),Cn=["OL","UL","MENU"],On=function(e,A,t,i){for(var n=A.firstChild,s=void 0;n;n=s)if(s=n.nextSibling,In(n)&&n.data.trim().length>0)t.textNodes.push(new tn(e,n,t.styles));else if(yn(n))if(Pn(n)&&n.assignedNodes)n.assignedNodes().forEach((function(A){return On(e,A,t,i)}));else{var a=Wn(e,n);a.styles.isVisible()&&(xn(n,a,i)?a.flags|=4:Qn(a.styles)&&(a.flags|=2),-1!==Cn.indexOf(n.tagName)&&(a.flags|=8),t.elements.push(a),n.slot,n.shadowRoot?On(e,n.shadowRoot,a,i):jn(n)||Rn(n)||Yn(n)||On(e,n,a,i))}},Wn=function(e,A){return Gn(A)?new on(e,A):Nn(A)?new rn(e,A):Rn(A)?new ln(e,A):Mn(A)?new cn(e,A):Fn(A)?new gn(e,A):Un(A)?new Bn(e,A):Yn(A)?new En(e,A):jn(A)?new kn(e,A):Hn(A)?new fn(e,A):new bi(e,A)},bn=function(e,A){var t=Wn(e,A);return t.flags|=4,On(e,A,t,t),t},xn=function(e,A,t){return A.styles.isPositionedWithZIndex()||A.styles.opacity<1||A.styles.isTransformed()||Tn(e)&&t.styles.isTransparent()},Qn=function(e){return e.isPositioned()||e.isFloating()},In=function(e){return e.nodeType===Node.TEXT_NODE},yn=function(e){return e.nodeType===Node.ELEMENT_NODE},vn=function(e){return yn(e)&&void 0!==e.style&&!Dn(e)},Dn=function(e){return"object"==typeof e.className},Mn=function(e){return"LI"===e.tagName},Fn=function(e){return"OL"===e.tagName},Un=function(e){return"INPUT"===e.tagName},Rn=function(e){return"svg"===e.tagName},Tn=function(e){return"BODY"===e.tagName},Nn=function(e){return"CANVAS"===e.tagName},Sn=function(e){return"VIDEO"===e.tagName},Gn=function(e){return"IMG"===e.tagName},Hn=function(e){return"IFRAME"===e.tagName},Ln=function(e){return"STYLE"===e.tagName},jn=function(e){return"TEXTAREA"===e.tagName},Yn=function(e){return"SELECT"===e.tagName},Pn=function(e){return"SLOT"===e.tagName},zn=function(e){return e.tagName.indexOf("-")>0},Kn=function(){function e(){this.counters={}}return e.prototype.getCounterValue=function(e){var A=this.counters[e];return A&&A.length?A[A.length-1]:1},e.prototype.getCounterValues=function(e){return this.counters[e]||[]},e.prototype.pop=function(e){var A=this;e.forEach((function(e){return A.counters[e].pop()}))},e.prototype.parse=function(e){var A=this,t=e.counterIncrement,i=e.counterReset,n=!0;null!==t&&t.forEach((function(e){var t=A.counters[e.counter];t&&0!==e.increment&&(n=!1,t.length||t.push(1),t[Math.max(0,t.length-1)]+=e.increment)}));var s=[];return n&&i.forEach((function(e){var t=A.counters[e.counter];s.push(e.counter),t||(t=A.counters[e.counter]=[]),t.push(e.reset)})),s},e}(),Jn={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},qn={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["Ք","Փ","Ւ","Ց","Ր","Տ","Վ","Ս","Ռ","Ջ","Պ","Չ","Ո","Շ","Ն","Յ","Մ","Ճ","Ղ","Ձ","Հ","Կ","Ծ","Խ","Լ","Ի","Ժ","Թ","Ը","Է","Զ","Ե","Դ","Գ","Բ","Ա"]},Zn={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["י׳","ט׳","ח׳","ז׳","ו׳","ה׳","ד׳","ג׳","ב׳","א׳","ת","ש","ר","ק","צ","פ","ע","ס","נ","מ","ל","כ","יט","יח","יז","טז","טו","י","ט","ח","ז","ו","ה","ד","ג","ב","א"]},Vn={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["ჵ","ჰ","ჯ","ჴ","ხ","ჭ","წ","ძ","ც","ჩ","შ","ყ","ღ","ქ","ფ","ჳ","ტ","ს","რ","ჟ","პ","ო","ჲ","ნ","მ","ლ","კ","ი","თ","ჱ","ზ","ვ","ე","დ","გ","ბ","ა"]},Xn=function(e,A,t,i,n,s){return e<A||e>t?as(e,n,s.length>0):i.integers.reduce((function(A,t,n){for(;e>=t;)e-=t,A+=i.values[n];return A}),"")+s},_n=function(e,A,t,i){var n="";do{t||e--,n=i(e)+n,e/=A}while(e*A>=A);return n},$n=function(e,A,t,i,n){var s=t-A+1;return(e<0?"-":"")+(_n(Math.abs(e),s,i,(function(e){return l(Math.floor(e%s)+A)}))+n)},es=function(e,A,t){void 0===t&&(t=". ");var i=A.length;return _n(Math.abs(e),i,!1,(function(e){return A[Math.floor(e%i)]}))+t},As=function(e,A,t,i,n,s){if(e<-9999||e>9999)return as(e,4,n.length>0);var a=Math.abs(e),o=n;if(0===a)return A[0]+o;for(var r=0;a>0&&r<=4;r++){var l=a%10;0===l&&li(s,1)&&""!==o?o=A[l]+o:l>1||1===l&&0===r||1===l&&1===r&&li(s,2)||1===l&&1===r&&li(s,4)&&e>100||1===l&&r>1&&li(s,8)?o=A[l]+(r>0?t[r-1]:"")+o:1===l&&r>0&&(o=t[r-1]+o),a=Math.floor(a/10)}return(e<0?i:"")+o},ts="十百千萬",is="拾佰仟萬",ns="マイナス",ss="마이너스",as=function(e,A,t){var i=t?". ":"",n=t?"、":"",s=t?", ":"",a=t?" ":"";switch(A){case 0:return"•"+a;case 1:return"◦"+a;case 2:return"◾"+a;case 5:var o=$n(e,48,57,!0,i);return o.length<4?"0"+o:o;case 4:return es(e,"〇一二三四五六七八九",n);case 6:return Xn(e,1,3999,Jn,3,i).toLowerCase();case 7:return Xn(e,1,3999,Jn,3,i);case 8:return $n(e,945,969,!1,i);case 9:return $n(e,97,122,!1,i);case 10:return $n(e,65,90,!1,i);case 11:return $n(e,1632,1641,!0,i);case 12:case 49:return Xn(e,1,9999,qn,3,i);case 35:return Xn(e,1,9999,qn,3,i).toLowerCase();case 13:return $n(e,2534,2543,!0,i);case 14:case 30:return $n(e,6112,6121,!0,i);case 15:return es(e,"子丑寅卯辰巳午未申酉戌亥",n);case 16:return es(e,"甲乙丙丁戊己庚辛壬癸",n);case 17:case 48:return As(e,"零一二三四五六七八九",ts,"負",n,14);case 47:return As(e,"零壹貳參肆伍陸柒捌玖",is,"負",n,15);case 42:return As(e,"零一二三四五六七八九",ts,"负",n,14);case 41:return As(e,"零壹贰叁肆伍陆柒捌玖",is,"负",n,15);case 26:return As(e,"〇一二三四五六七八九","十百千万",ns,n,0);case 25:return As(e,"零壱弐参四伍六七八九","拾百千万",ns,n,7);case 31:return As(e,"영일이삼사오육칠팔구","십백천만",ss,s,7);case 33:return As(e,"零一二三四五六七八九","十百千萬",ss,s,0);case 32:return As(e,"零壹貳參四五六七八九","拾百千",ss,s,7);case 18:return $n(e,2406,2415,!0,i);case 20:return Xn(e,1,19999,Vn,3,i);case 21:return $n(e,2790,2799,!0,i);case 22:return $n(e,2662,2671,!0,i);case 22:return Xn(e,1,10999,Zn,3,i);case 23:return es(e,"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん");case 24:return es(e,"いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす");case 27:return $n(e,3302,3311,!0,i);case 28:return es(e,"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン",n);case 29:return es(e,"イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス",n);case 34:return $n(e,3792,3801,!0,i);case 37:return $n(e,6160,6169,!0,i);case 38:return $n(e,4160,4169,!0,i);case 39:return $n(e,2918,2927,!0,i);case 40:return $n(e,1776,1785,!0,i);case 43:return $n(e,3046,3055,!0,i);case 44:return $n(e,3174,3183,!0,i);case 45:return $n(e,3664,3673,!0,i);case 46:return $n(e,3872,3881,!0,i);default:return $n(e,48,57,!0,i)}},os="data-html2canvas-ignore",rs=function(){function e(e,A,t){if(this.context=e,this.options=t,this.scrolledElements=[],this.referenceElement=A,this.counters=new Kn,this.quoteDepth=0,!A.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(A.ownerDocument.documentElement,!1)}return e.prototype.toIFrame=function(e,A){var t=this,s=cs(e,A);if(!s.contentWindow)return Promise.reject("Unable to find iframe window");var a=e.defaultView.pageXOffset,o=e.defaultView.pageYOffset,r=s.contentWindow,l=r.document,c=us(s).then((function(){return i(t,void 0,void 0,(function(){var e,t;return n(this,(function(i){switch(i.label){case 0:return this.scrolledElements.forEach(Bs),r&&(r.scrollTo(A.left,A.top),!/(iPad|iPhone|iPod)/g.test(navigator.userAgent)||r.scrollY===A.top&&r.scrollX===A.left||(this.context.logger.warn("Unable to restore scroll position for cloned document"),this.context.windowBounds=this.context.windowBounds.add(r.scrollX-A.left,r.scrollY-A.top,0,0))),e=this.options.onclone,void 0===(t=this.clonedReferenceElement)?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:l.fonts&&l.fonts.ready?[4,l.fonts.ready]:[3,2];case 1:i.sent(),i.label=2;case 2:return/(AppleWebKit)/g.test(navigator.userAgent)?[4,ds(l)]:[3,4];case 3:i.sent(),i.label=4;case 4:return"function"==typeof e?[2,Promise.resolve().then((function(){return e(l,t)})).then((function(){return s}))]:[2,s]}}))}))}));return l.open(),l.write(ps(document.doctype)+"<html></html>"),ws(this.referenceElement.ownerDocument,a,o),l.replaceChild(l.adoptNode(this.documentElement),l.documentElement),l.close(),c},e.prototype.createElementClone=function(e){if(Wi(e,2),Nn(e))return this.createCanvasClone(e);if(Sn(e))return this.createVideoClone(e);if(Ln(e))return this.createStyleClone(e);var A=e.cloneNode(!1);return Gn(A)&&(Gn(e)&&e.currentSrc&&e.currentSrc!==e.src&&(A.src=e.currentSrc,A.srcset=""),"lazy"===A.loading&&(A.loading="eager")),zn(A)?this.createCustomElementClone(A):A},e.prototype.createCustomElementClone=function(e){var A=document.createElement("html2canvascustomelement");return ms(e.style,A),A},e.prototype.createStyleClone=function(e){try{var A=e.sheet;if(A&&A.cssRules){var t=[].slice.call(A.cssRules,0).reduce((function(e,A){return A&&"string"==typeof A.cssText?e+A.cssText:e}),""),i=e.cloneNode(!1);return i.textContent=t,i}}catch(e){if(this.context.logger.error("Unable to access cssRules property",e),"SecurityError"!==e.name)throw e}return e.cloneNode(!1)},e.prototype.createCanvasClone=function(e){var A;if(this.options.inlineImages&&e.ownerDocument){var t=e.ownerDocument.createElement("img");try{return t.src=e.toDataURL(),t}catch(A){this.context.logger.info("Unable to inline canvas contents, canvas is tainted",e)}}var i=e.cloneNode(!1);try{i.width=e.width,i.height=e.height;var n=e.getContext("2d"),s=i.getContext("2d");if(s)if(!this.options.allowTaint&&n)s.putImageData(n.getImageData(0,0,e.width,e.height),0,0);else{var a=null!==(A=e.getContext("webgl2"))&&void 0!==A?A:e.getContext("webgl");if(a){var o=a.getContextAttributes();!1===(null==o?void 0:o.preserveDrawingBuffer)&&this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false",e)}s.drawImage(e,0,0)}return i}catch(A){this.context.logger.info("Unable to clone canvas as it is tainted",e)}return i},e.prototype.createVideoClone=function(e){var A=e.ownerDocument.createElement("canvas");A.width=e.offsetWidth,A.height=e.offsetHeight;var t=A.getContext("2d");try{return t&&(t.drawImage(e,0,0,A.width,A.height),this.options.allowTaint||t.getImageData(0,0,A.width,A.height)),A}catch(A){this.context.logger.info("Unable to clone video as it is tainted",e)}var i=e.ownerDocument.createElement("canvas");return i.width=e.offsetWidth,i.height=e.offsetHeight,i},e.prototype.appendChildNode=function(e,A,t){yn(A)&&("SCRIPT"===A.tagName||A.hasAttribute(os)||"function"==typeof this.options.ignoreElements&&this.options.ignoreElements(A))||this.options.copyStyles&&yn(A)&&Ln(A)||e.appendChild(this.cloneNode(A,t))},e.prototype.cloneChildNodes=function(e,A,t){for(var i=this,n=e.shadowRoot?e.shadowRoot.firstChild:e.firstChild;n;n=n.nextSibling)if(yn(n)&&Pn(n)&&"function"==typeof n.assignedNodes){var s=n.assignedNodes();s.length&&s.forEach((function(e){return i.appendChildNode(A,e,t)}))}else this.appendChildNode(A,n,t)},e.prototype.cloneNode=function(e,A){if(In(e))return document.createTextNode(e.data);if(!e.ownerDocument)return e.cloneNode(!1);var t=e.ownerDocument.defaultView;if(t&&yn(e)&&(vn(e)||Dn(e))){var i=this.createElementClone(e);i.style.transitionProperty="none";var n=t.getComputedStyle(e),s=t.getComputedStyle(e,":before"),a=t.getComputedStyle(e,":after");this.referenceElement===e&&vn(i)&&(this.clonedReferenceElement=i),Tn(i)&&Cs(i);var o=this.counters.parse(new Ci(this.context,n)),r=this.resolvePseudoContent(e,i,s,Ui.BEFORE);zn(e)&&(A=!0),Sn(e)||this.cloneChildNodes(e,i,A),r&&i.insertBefore(r,i.firstChild);var l=this.resolvePseudoContent(e,i,a,Ui.AFTER);return l&&i.appendChild(l),this.counters.pop(o),(n&&(this.options.copyStyles||Dn(e))&&!Hn(e)||A)&&ms(n,i),0===e.scrollTop&&0===e.scrollLeft||this.scrolledElements.push([i,e.scrollLeft,e.scrollTop]),(jn(e)||Yn(e))&&(jn(i)||Yn(i))&&(i.value=e.value),i}return e.cloneNode(!1)},e.prototype.resolvePseudoContent=function(e,A,t,i){var n=this;if(t){var s=t.content,a=A.ownerDocument;if(a&&s&&"none"!==s&&"-moz-alt-content"!==s&&"none"!==t.display){this.counters.parse(new Ci(this.context,t));var o=new fi(this.context,t),r=a.createElement("html2canvaspseudoelement");ms(t,r),o.content.forEach((function(A){if(0===A.type)r.appendChild(a.createTextNode(A.value));else if(22===A.type){var t=a.createElement("img");t.src=A.value,t.style.opacity="1",r.appendChild(t)}else if(18===A.type){if("attr"===A.name){var i=A.values.filter(ze);i.length&&r.appendChild(a.createTextNode(e.getAttribute(i[0].value)||""))}else if("counter"===A.name){var s=A.values.filter(Ze),l=s[0],c=s[1];if(l&&ze(l)){var g=n.counters.getCounterValue(l.value),d=c&&ze(c)?yt.parse(n.context,c.value):3;r.appendChild(a.createTextNode(as(g,d,!1)))}}else if("counters"===A.name){var u=A.values.filter(Ze),h=(l=u[0],u[1]);if(c=u[2],l&&ze(l)){var m=n.counters.getCounterValues(l.value),p=c&&ze(c)?yt.parse(n.context,c.value):3,w=h&&0===h.type?h.value:"",B=m.map((function(e){return as(e,p,!1)})).join(w);r.appendChild(a.createTextNode(B))}}}else if(20===A.type)switch(A.value){case"open-quote":r.appendChild(a.createTextNode(mi(o.quotes,n.quoteDepth++,!0)));break;case"close-quote":r.appendChild(a.createTextNode(mi(o.quotes,--n.quoteDepth,!1)));break;default:r.appendChild(a.createTextNode(A.value))}})),r.className=Es+" "+ks;var l=i===Ui.BEFORE?" "+Es:" "+ks;return Dn(A)?A.className.baseValue+=l:A.className+=l,r}}},e.destroy=function(e){return!!e.parentNode&&(e.parentNode.removeChild(e),!0)},e}();!function(e){e[e.BEFORE=0]="BEFORE",e[e.AFTER=1]="AFTER"}(Ui||(Ui={}));var ls,cs=function(e,A){var t=e.createElement("iframe");return t.className="html2canvas-container",t.style.visibility="hidden",t.style.position="fixed",t.style.left="-10000px",t.style.top="0px",t.style.border="0",t.width=A.width.toString(),t.height=A.height.toString(),t.scrolling="no",t.setAttribute(os,"true"),e.body.appendChild(t),t},gs=function(e){return new Promise((function(A){e.complete?A():e.src?(e.onload=A,e.onerror=A):A()}))},ds=function(e){return Promise.all([].slice.call(e.images,0).map(gs))},us=function(e){return new Promise((function(A,t){var i=e.contentWindow;if(!i)return t("No window assigned for iframe");var n=i.document;i.onload=e.onload=function(){i.onload=e.onload=null;var t=setInterval((function(){n.body.childNodes.length>0&&"complete"===n.readyState&&(clearInterval(t),A(e))}),50)}}))},hs=["all","d","content"],ms=function(e,A){for(var t=e.length-1;t>=0;t--){var i=e.item(t);-1===hs.indexOf(i)&&A.style.setProperty(i,e.getPropertyValue(i))}return A},ps=function(e){var A="";return e&&(A+="<!DOCTYPE ",e.name&&(A+=e.name),e.internalSubset&&(A+=e.internalSubset),e.publicId&&(A+='"'+e.publicId+'"'),e.systemId&&(A+='"'+e.systemId+'"'),A+=">"),A},ws=function(e,A,t){e&&e.defaultView&&(A!==e.defaultView.pageXOffset||t!==e.defaultView.pageYOffset)&&e.defaultView.scrollTo(A,t)},Bs=function(e){var A=e[0],t=e[1],i=e[2];A.scrollLeft=t,A.scrollTop=i},Es="___html2canvas___pseudoelement_before",ks="___html2canvas___pseudoelement_after",fs='{\n content: "" !important;\n display: none !important;\n}',Cs=function(e){Os(e,"."+Es+":before"+fs+"\n ."+ks+":after"+fs)},Os=function(e,A){var t=e.ownerDocument;if(t){var i=t.createElement("style");i.textContent=A,e.appendChild(i)}},Ws=function(){function e(){}return e.getOrigin=function(A){var t=e._link;return t?(t.href=A,t.href=t.href,t.protocol+t.hostname+t.port):"about:blank"},e.isSameOrigin=function(A){return e.getOrigin(A)===e._origin},e.setContext=function(A){e._link=A.document.createElement("a"),e._origin=e.getOrigin(A.location.href)},e._origin="about:blank",e}(),bs=function(){function e(e,A){this.context=e,this._options=A,this._cache={}}return e.prototype.addImage=function(e){var A=Promise.resolve();return this.has(e)?A:Ms(e)||ys(e)?((this._cache[e]=this.loadImage(e)).catch((function(){})),A):A},e.prototype.match=function(e){return this._cache[e]},e.prototype.loadImage=function(e){return i(this,void 0,void 0,(function(){var A,t,i,s,a=this;return n(this,(function(n){switch(n.label){case 0:return A=Ws.isSameOrigin(e),t=!vs(e)&&!0===this._options.useCORS&&qi.SUPPORT_CORS_IMAGES&&!A,i=!vs(e)&&!A&&!Ms(e)&&"string"==typeof this._options.proxy&&qi.SUPPORT_CORS_XHR&&!t,A||!1!==this._options.allowTaint||vs(e)||Ms(e)||i||t?(s=e,i?[4,this.proxy(s)]:[3,2]):[2];case 1:s=n.sent(),n.label=2;case 2:return this.context.logger.debug("Added image "+e.substring(0,256)),[4,new Promise((function(e,A){var i=new Image;i.onload=function(){return e(i)},i.onerror=A,(Ds(s)||t)&&(i.crossOrigin="anonymous"),i.src=s,!0===i.complete&&setTimeout((function(){return e(i)}),500),a._options.imageTimeout>0&&setTimeout((function(){return A("Timed out ("+a._options.imageTimeout+"ms) loading image")}),a._options.imageTimeout)}))];case 3:return[2,n.sent()]}}))}))},e.prototype.has=function(e){return void 0!==this._cache[e]},e.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},e.prototype.proxy=function(e){var A=this,t=this._options.proxy;if(!t)throw new Error("No proxy defined");var i=e.substring(0,256);return new Promise((function(n,s){var a=qi.SUPPORT_RESPONSE_TYPE?"blob":"text",o=new XMLHttpRequest;o.onload=function(){if(200===o.status)if("text"===a)n(o.response);else{var e=new FileReader;e.addEventListener("load",(function(){return n(e.result)}),!1),e.addEventListener("error",(function(e){return s(e)}),!1),e.readAsDataURL(o.response)}else s("Failed to proxy resource "+i+" with status code "+o.status)},o.onerror=s;var r=t.indexOf("?")>-1?"&":"?";if(o.open("GET",""+t+r+"url="+encodeURIComponent(e)+"&responseType="+a),"text"!==a&&o instanceof XMLHttpRequest&&(o.responseType=a),A._options.imageTimeout){var l=A._options.imageTimeout;o.timeout=l,o.ontimeout=function(){return s("Timed out ("+l+"ms) proxying "+i)}}o.send()}))},e}(),xs=/^data:image\/svg\+xml/i,Qs=/^data:image\/.*;base64,/i,Is=/^data:image\/.*/i,ys=function(e){return qi.SUPPORT_SVG_DRAWING||!Fs(e)},vs=function(e){return Is.test(e)},Ds=function(e){return Qs.test(e)},Ms=function(e){return"blob"===e.substr(0,4)},Fs=function(e){return"svg"===e.substr(-3).toLowerCase()||xs.test(e)},Us=function(){function e(e,A){this.type=0,this.x=e,this.y=A}return e.prototype.add=function(A,t){return new e(this.x+A,this.y+t)},e}(),Rs=function(e,A,t){return new Us(e.x+(A.x-e.x)*t,e.y+(A.y-e.y)*t)},Ts=function(){function e(e,A,t,i){this.type=1,this.start=e,this.startControl=A,this.endControl=t,this.end=i}return e.prototype.subdivide=function(A,t){var i=Rs(this.start,this.startControl,A),n=Rs(this.startControl,this.endControl,A),s=Rs(this.endControl,this.end,A),a=Rs(i,n,A),o=Rs(n,s,A),r=Rs(a,o,A);return t?new e(this.start,i,a,r):new e(r,o,s,this.end)},e.prototype.add=function(A,t){return new e(this.start.add(A,t),this.startControl.add(A,t),this.endControl.add(A,t),this.end.add(A,t))},e.prototype.reverse=function(){return new e(this.end,this.endControl,this.startControl,this.start)},e}(),Ns=function(e){return 1===e.type},Ss=function(e){var A=e.styles,t=e.bounds,i=nA(A.borderTopLeftRadius,t.width,t.height),n=i[0],s=i[1],a=nA(A.borderTopRightRadius,t.width,t.height),o=a[0],r=a[1],l=nA(A.borderBottomRightRadius,t.width,t.height),c=l[0],g=l[1],d=nA(A.borderBottomLeftRadius,t.width,t.height),u=d[0],h=d[1],m=[];m.push((n+o)/t.width),m.push((u+c)/t.width),m.push((s+h)/t.height),m.push((r+g)/t.height);var p=Math.max.apply(Math,m);p>1&&(n/=p,s/=p,o/=p,r/=p,c/=p,g/=p,u/=p,h/=p);var w=t.width-o,B=t.height-g,E=t.width-c,k=t.height-h,f=A.borderTopWidth,C=A.borderRightWidth,O=A.borderBottomWidth,W=A.borderLeftWidth,b=sA(A.paddingTop,e.bounds.width),x=sA(A.paddingRight,e.bounds.width),Q=sA(A.paddingBottom,e.bounds.width),I=sA(A.paddingLeft,e.bounds.width);this.topLeftBorderDoubleOuterBox=n>0||s>0?Gs(t.left+W/3,t.top+f/3,n-W/3,s-f/3,ls.TOP_LEFT):new Us(t.left+W/3,t.top+f/3),this.topRightBorderDoubleOuterBox=n>0||s>0?Gs(t.left+w,t.top+f/3,o-C/3,r-f/3,ls.TOP_RIGHT):new Us(t.left+t.width-C/3,t.top+f/3),this.bottomRightBorderDoubleOuterBox=c>0||g>0?Gs(t.left+E,t.top+B,c-C/3,g-O/3,ls.BOTTOM_RIGHT):new Us(t.left+t.width-C/3,t.top+t.height-O/3),this.bottomLeftBorderDoubleOuterBox=u>0||h>0?Gs(t.left+W/3,t.top+k,u-W/3,h-O/3,ls.BOTTOM_LEFT):new Us(t.left+W/3,t.top+t.height-O/3),this.topLeftBorderDoubleInnerBox=n>0||s>0?Gs(t.left+2*W/3,t.top+2*f/3,n-2*W/3,s-2*f/3,ls.TOP_LEFT):new Us(t.left+2*W/3,t.top+2*f/3),this.topRightBorderDoubleInnerBox=n>0||s>0?Gs(t.left+w,t.top+2*f/3,o-2*C/3,r-2*f/3,ls.TOP_RIGHT):new Us(t.left+t.width-2*C/3,t.top+2*f/3),this.bottomRightBorderDoubleInnerBox=c>0||g>0?Gs(t.left+E,t.top+B,c-2*C/3,g-2*O/3,ls.BOTTOM_RIGHT):new Us(t.left+t.width-2*C/3,t.top+t.height-2*O/3),this.bottomLeftBorderDoubleInnerBox=u>0||h>0?Gs(t.left+2*W/3,t.top+k,u-2*W/3,h-2*O/3,ls.BOTTOM_LEFT):new Us(t.left+2*W/3,t.top+t.height-2*O/3),this.topLeftBorderStroke=n>0||s>0?Gs(t.left+W/2,t.top+f/2,n-W/2,s-f/2,ls.TOP_LEFT):new Us(t.left+W/2,t.top+f/2),this.topRightBorderStroke=n>0||s>0?Gs(t.left+w,t.top+f/2,o-C/2,r-f/2,ls.TOP_RIGHT):new Us(t.left+t.width-C/2,t.top+f/2),this.bottomRightBorderStroke=c>0||g>0?Gs(t.left+E,t.top+B,c-C/2,g-O/2,ls.BOTTOM_RIGHT):new Us(t.left+t.width-C/2,t.top+t.height-O/2),this.bottomLeftBorderStroke=u>0||h>0?Gs(t.left+W/2,t.top+k,u-W/2,h-O/2,ls.BOTTOM_LEFT):new Us(t.left+W/2,t.top+t.height-O/2),this.topLeftBorderBox=n>0||s>0?Gs(t.left,t.top,n,s,ls.TOP_LEFT):new Us(t.left,t.top),this.topRightBorderBox=o>0||r>0?Gs(t.left+w,t.top,o,r,ls.TOP_RIGHT):new Us(t.left+t.width,t.top),this.bottomRightBorderBox=c>0||g>0?Gs(t.left+E,t.top+B,c,g,ls.BOTTOM_RIGHT):new Us(t.left+t.width,t.top+t.height),this.bottomLeftBorderBox=u>0||h>0?Gs(t.left,t.top+k,u,h,ls.BOTTOM_LEFT):new Us(t.left,t.top+t.height),this.topLeftPaddingBox=n>0||s>0?Gs(t.left+W,t.top+f,Math.max(0,n-W),Math.max(0,s-f),ls.TOP_LEFT):new Us(t.left+W,t.top+f),this.topRightPaddingBox=o>0||r>0?Gs(t.left+Math.min(w,t.width-C),t.top+f,w>t.width+C?0:Math.max(0,o-C),Math.max(0,r-f),ls.TOP_RIGHT):new Us(t.left+t.width-C,t.top+f),this.bottomRightPaddingBox=c>0||g>0?Gs(t.left+Math.min(E,t.width-W),t.top+Math.min(B,t.height-O),Math.max(0,c-C),Math.max(0,g-O),ls.BOTTOM_RIGHT):new Us(t.left+t.width-C,t.top+t.height-O),this.bottomLeftPaddingBox=u>0||h>0?Gs(t.left+W,t.top+Math.min(k,t.height-O),Math.max(0,u-W),Math.max(0,h-O),ls.BOTTOM_LEFT):new Us(t.left+W,t.top+t.height-O),this.topLeftContentBox=n>0||s>0?Gs(t.left+W+I,t.top+f+b,Math.max(0,n-(W+I)),Math.max(0,s-(f+b)),ls.TOP_LEFT):new Us(t.left+W+I,t.top+f+b),this.topRightContentBox=o>0||r>0?Gs(t.left+Math.min(w,t.width+W+I),t.top+f+b,w>t.width+W+I?0:o-W+I,r-(f+b),ls.TOP_RIGHT):new Us(t.left+t.width-(C+x),t.top+f+b),this.bottomRightContentBox=c>0||g>0?Gs(t.left+Math.min(E,t.width-(W+I)),t.top+Math.min(B,t.height+f+b),Math.max(0,c-(C+x)),g-(O+Q),ls.BOTTOM_RIGHT):new Us(t.left+t.width-(C+x),t.top+t.height-(O+Q)),this.bottomLeftContentBox=u>0||h>0?Gs(t.left+W+I,t.top+k,Math.max(0,u-(W+I)),h-(O+Q),ls.BOTTOM_LEFT):new Us(t.left+W+I,t.top+t.height-(O+Q))};!function(e){e[e.TOP_LEFT=0]="TOP_LEFT",e[e.TOP_RIGHT=1]="TOP_RIGHT",e[e.BOTTOM_RIGHT=2]="BOTTOM_RIGHT",e[e.BOTTOM_LEFT=3]="BOTTOM_LEFT"}(ls||(ls={}));var Gs=function(e,A,t,i,n){var s=(Math.sqrt(2)-1)/3*4,a=t*s,o=i*s,r=e+t,l=A+i;switch(n){case ls.TOP_LEFT:return new Ts(new Us(e,l),new Us(e,l-o),new Us(r-a,A),new Us(r,A));case ls.TOP_RIGHT:return new Ts(new Us(e,A),new Us(e+a,A),new Us(r,l-o),new Us(r,l));case ls.BOTTOM_RIGHT:return new Ts(new Us(r,A),new Us(r,A+o),new Us(e+a,l),new Us(e,l));case ls.BOTTOM_LEFT:default:return new Ts(new Us(r,l),new Us(r-a,l),new Us(e,A+o),new Us(e,A))}},Hs=function(e){return[e.topLeftBorderBox,e.topRightBorderBox,e.bottomRightBorderBox,e.bottomLeftBorderBox]},Ls=function(e){return[e.topLeftPaddingBox,e.topRightPaddingBox,e.bottomRightPaddingBox,e.bottomLeftPaddingBox]},js=function(e,A,t){this.offsetX=e,this.offsetY=A,this.matrix=t,this.type=0,this.target=6},Ys=function(e,A){this.path=e,this.target=A,this.type=1},Ps=function(e){this.opacity=e,this.type=2,this.target=6},zs=function(e){return 1===e.type},Ks=function(e,A){return e.length===A.length&&e.some((function(e,t){return e===A[t]}))},Js=function(e){this.element=e,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]},qs=function(){function e(e,A){if(this.container=e,this.parent=A,this.effects=[],this.curves=new Ss(this.container),this.container.styles.opacity<1&&this.effects.push(new Ps(this.container.styles.opacity)),null!==this.container.styles.transform){var t=this.container.bounds.left+this.container.styles.transformOrigin[0].number,i=this.container.bounds.top+this.container.styles.transformOrigin[1].number,n=this.container.styles.transform;this.effects.push(new js(t,i,n))}if(0!==this.container.styles.overflowX){var s=Hs(this.curves),a=Ls(this.curves);Ks(s,a)?this.effects.push(new Ys(s,6)):(this.effects.push(new Ys(s,2)),this.effects.push(new Ys(a,4)))}}return e.prototype.getEffects=function(e){for(var A=-1===[2,3].indexOf(this.container.styles.position),t=this.parent,i=this.effects.slice(0);t;){var n=t.effects.filter((function(e){return!zs(e)}));if(A||0!==t.container.styles.position||!t.parent){if(i.unshift.apply(i,n),A=-1===[2,3].indexOf(t.container.styles.position),0!==t.container.styles.overflowX){var s=Hs(t.curves),a=Ls(t.curves);Ks(s,a)||i.unshift(new Ys(a,6))}}else i.unshift.apply(i,n);t=t.parent}return i.filter((function(A){return li(A.target,e)}))},e}(),Zs=function(e,A,t,i){e.container.elements.forEach((function(n){var s=li(n.flags,4),a=li(n.flags,2),o=new qs(n,e);li(n.styles.display,2048)&&i.push(o);var r=li(n.flags,8)?[]:i;if(s||a){var l=s||n.styles.isPositioned()?t:A,c=new Js(o);if(n.styles.isPositioned()||n.styles.opacity<1||n.styles.isTransformed()){var g=n.styles.zIndex.order;if(g<0){var d=0;l.negativeZIndex.some((function(e,A){return g>e.element.container.styles.zIndex.order?(d=A,!1):d>0})),l.negativeZIndex.splice(d,0,c)}else if(g>0){var u=0;l.positiveZIndex.some((function(e,A){return g>=e.element.container.styles.zIndex.order?(u=A+1,!1):u>0})),l.positiveZIndex.splice(u,0,c)}else l.zeroOrAutoZIndexOrTransformedOrOpacity.push(c)}else n.styles.isFloating()?l.nonPositionedFloats.push(c):l.nonPositionedInlineLevel.push(c);Zs(o,c,s?c:t,r)}else n.styles.isInlineLevel()?A.inlineLevel.push(o):A.nonInlineLevel.push(o),Zs(o,A,t,r);li(n.flags,8)&&Vs(n,r)}))},Vs=function(e,A){for(var t=e instanceof gn?e.start:1,i=e instanceof gn&&e.reversed,n=0;n<A.length;n++){var s=A[n];s.container instanceof cn&&"number"==typeof s.container.value&&0!==s.container.value&&(t=s.container.value),s.listValue=as(t,s.container.styles.listStyleType,!0),t+=i?-1:1}},Xs=function(e,A){switch(A){case 0:return $s(e.topLeftBorderBox,e.topLeftPaddingBox,e.topRightBorderBox,e.topRightPaddingBox);case 1:return $s(e.topRightBorderBox,e.topRightPaddingBox,e.bottomRightBorderBox,e.bottomRightPaddingBox);case 2:return $s(e.bottomRightBorderBox,e.bottomRightPaddingBox,e.bottomLeftBorderBox,e.bottomLeftPaddingBox);default:return $s(e.bottomLeftBorderBox,e.bottomLeftPaddingBox,e.topLeftBorderBox,e.topLeftPaddingBox)}},_s=function(e,A){var t=[];return Ns(e)?t.push(e.subdivide(.5,!1)):t.push(e),Ns(A)?t.push(A.subdivide(.5,!0)):t.push(A),t},$s=function(e,A,t,i){var n=[];return Ns(e)?n.push(e.subdivide(.5,!1)):n.push(e),Ns(t)?n.push(t.subdivide(.5,!0)):n.push(t),Ns(i)?n.push(i.subdivide(.5,!0).reverse()):n.push(i),Ns(A)?n.push(A.subdivide(.5,!1).reverse()):n.push(A),n},ea=function(e){var A=e.bounds,t=e.styles;return A.add(t.borderLeftWidth,t.borderTopWidth,-(t.borderRightWidth+t.borderLeftWidth),-(t.borderTopWidth+t.borderBottomWidth))},Aa=function(e){var A=e.styles,t=e.bounds,i=sA(A.paddingLeft,t.width),n=sA(A.paddingRight,t.width),s=sA(A.paddingTop,t.width),a=sA(A.paddingBottom,t.width);return t.add(i+A.borderLeftWidth,s+A.borderTopWidth,-(A.borderRightWidth+A.borderLeftWidth+i+n),-(A.borderTopWidth+A.borderBottomWidth+s+a))},ta=function(e,A,t){var i=function(e,A){return 0===e?A.bounds:2===e?Aa(A):ea(A)}(aa(e.styles.backgroundOrigin,A),e),n=function(e,A){return 0===e?A.bounds:2===e?Aa(A):ea(A)}(aa(e.styles.backgroundClip,A),e),s=sa(aa(e.styles.backgroundSize,A),t,i),a=s[0],o=s[1],r=nA(aa(e.styles.backgroundPosition,A),i.width-a,i.height-o);return[oa(aa(e.styles.backgroundRepeat,A),r,s,i,n),Math.round(i.left+r[0]),Math.round(i.top+r[1]),a,o]},ia=function(e){return ze(e)&&e.value===LA.AUTO},na=function(e){return"number"==typeof e},sa=function(e,A,t){var i=A[0],n=A[1],s=A[2],a=e[0],o=e[1];if(!a)return[0,0];if($e(a)&&o&&$e(o))return[sA(a,t.width),sA(o,t.height)];var r=na(s);if(ze(a)&&(a.value===LA.CONTAIN||a.value===LA.COVER))return na(s)?t.width/t.height<s!=(a.value===LA.COVER)?[t.width,t.width/s]:[t.height*s,t.height]:[t.width,t.height];var l=na(i),c=na(n),g=l||c;if(ia(a)&&(!o||ia(o)))return l&&c?[i,n]:r||g?g&&r?[l?i:n*s,c?n:i/s]:[l?i:t.width,c?n:t.height]:[t.width,t.height];if(r){var d=0,u=0;return $e(a)?d=sA(a,t.width):$e(o)&&(u=sA(o,t.height)),ia(a)?d=u*s:o&&!ia(o)||(u=d/s),[d,u]}var h=null,m=null;if($e(a)?h=sA(a,t.width):o&&$e(o)&&(m=sA(o,t.height)),null===h||o&&!ia(o)||(m=l&&c?h/i*n:t.height),null!==m&&ia(a)&&(h=l&&c?m/n*i:t.width),null!==h&&null!==m)return[h,m];throw new Error("Unable to calculate background-size for element")},aa=function(e,A){var t=e[A];return void 0===t?e[0]:t},oa=function(e,A,t,i,n){var s=A[0],a=A[1],o=t[0],r=t[1];switch(e){case 2:return[new Us(Math.round(i.left),Math.round(i.top+a)),new Us(Math.round(i.left+i.width),Math.round(i.top+a)),new Us(Math.round(i.left+i.width),Math.round(r+i.top+a)),new Us(Math.round(i.left),Math.round(r+i.top+a))];case 3:return[new Us(Math.round(i.left+s),Math.round(i.top)),new Us(Math.round(i.left+s+o),Math.round(i.top)),new Us(Math.round(i.left+s+o),Math.round(i.height+i.top)),new Us(Math.round(i.left+s),Math.round(i.height+i.top))];case 1:return[new Us(Math.round(i.left+s),Math.round(i.top+a)),new Us(Math.round(i.left+s+o),Math.round(i.top+a)),new Us(Math.round(i.left+s+o),Math.round(i.top+a+r)),new Us(Math.round(i.left+s),Math.round(i.top+a+r))];default:return[new Us(Math.round(n.left),Math.round(n.top)),new Us(Math.round(n.left+n.width),Math.round(n.top)),new Us(Math.round(n.left+n.width),Math.round(n.height+n.top)),new Us(Math.round(n.left),Math.round(n.height+n.top))]}},ra="Hidden Text",la=function(){function e(e){this._data={},this._document=e}return e.prototype.parseMetrics=function(e,A){var t=this._document.createElement("div"),i=this._document.createElement("img"),n=this._document.createElement("span"),s=this._document.body;t.style.visibility="hidden",t.style.fontFamily=e,t.style.fontSize=A,t.style.margin="0",t.style.padding="0",t.style.whiteSpace="nowrap",s.appendChild(t),i.src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",i.width=1,i.height=1,i.style.margin="0",i.style.padding="0",i.style.verticalAlign="baseline",n.style.fontFamily=e,n.style.fontSize=A,n.style.margin="0",n.style.padding="0",n.appendChild(this._document.createTextNode(ra)),t.appendChild(n),t.appendChild(i);var a=i.offsetTop-n.offsetTop+2;t.removeChild(n),t.appendChild(this._document.createTextNode(ra)),t.style.lineHeight="normal",i.style.verticalAlign="super";var o=i.offsetTop-t.offsetTop+2;return s.removeChild(t),{baseline:a,middle:o}},e.prototype.getMetrics=function(e,A){var t=e+" "+A;return void 0===this._data[t]&&(this._data[t]=this.parseMetrics(e,A)),this._data[t]},e}(),ca=function(e,A){this.context=e,this.options=A},ga=function(e){function t(A,t){var i=e.call(this,A,t)||this;return i._activeEffects=[],i.canvas=t.canvas?t.canvas:document.createElement("canvas"),i.ctx=i.canvas.getContext("2d"),t.canvas||(i.canvas.width=Math.floor(t.width*t.scale),i.canvas.height=Math.floor(t.height*t.scale),i.canvas.style.width=t.width+"px",i.canvas.style.height=t.height+"px"),i.fontMetrics=new la(document),i.ctx.scale(i.options.scale,i.options.scale),i.ctx.translate(-t.x,-t.y),i.ctx.textBaseline="bottom",i._activeEffects=[],i.context.logger.debug("Canvas renderer initialized ("+t.width+"x"+t.height+") with scale "+t.scale),i}return A(t,e),t.prototype.applyEffects=function(e){for(var A=this;this._activeEffects.length;)this.popEffect();e.forEach((function(e){return A.applyEffect(e)}))},t.prototype.applyEffect=function(e){this.ctx.save(),function(e){return 2===e.type}(e)&&(this.ctx.globalAlpha=e.opacity),function(e){return 0===e.type}(e)&&(this.ctx.translate(e.offsetX,e.offsetY),this.ctx.transform(e.matrix[0],e.matrix[1],e.matrix[2],e.matrix[3],e.matrix[4],e.matrix[5]),this.ctx.translate(-e.offsetX,-e.offsetY)),zs(e)&&(this.path(e.path),this.ctx.clip()),this._activeEffects.push(e)},t.prototype.popEffect=function(){this._activeEffects.pop(),this.ctx.restore()},t.prototype.renderStack=function(e){return i(this,void 0,void 0,(function(){return n(this,(function(A){switch(A.label){case 0:return e.element.container.styles.isVisible()?[4,this.renderStackContent(e)]:[3,2];case 1:A.sent(),A.label=2;case 2:return[2]}}))}))},t.prototype.renderNode=function(e){return i(this,void 0,void 0,(function(){return n(this,(function(A){switch(A.label){case 0:return li(e.container.flags,16),e.container.styles.isVisible()?[4,this.renderNodeBackgroundAndBorders(e)]:[3,3];case 1:return A.sent(),[4,this.renderNodeContent(e)];case 2:A.sent(),A.label=3;case 3:return[2]}}))}))},t.prototype.renderTextWithLetterSpacing=function(e,A,t){var i=this;0===A?this.ctx.fillText(e.text,e.bounds.left,e.bounds.top+t):_i(e.text).reduce((function(A,n){return i.ctx.fillText(n,A,e.bounds.top+t),A+i.ctx.measureText(n).width}),e.bounds.left)},t.prototype.createFontStyle=function(e){var A=e.fontVariant.filter((function(e){return"normal"===e||"small-caps"===e})).join(""),t=pa(e.fontFamily).join(", "),i=Ye(e.fontSize)?""+e.fontSize.number+e.fontSize.unit:e.fontSize.number+"px";return[[e.fontStyle,A,e.fontWeight,i,t].join(" "),t,i]},t.prototype.renderTextNode=function(e,A){return i(this,void 0,void 0,(function(){var t,i,s,a,o,r,l,c,g=this;return n(this,(function(n){return t=this.createFontStyle(A),i=t[0],s=t[1],a=t[2],this.ctx.font=i,this.ctx.direction=1===A.direction?"rtl":"ltr",this.ctx.textAlign="left",this.ctx.textBaseline="alphabetic",o=this.fontMetrics.getMetrics(s,a),r=o.baseline,l=o.middle,c=A.paintOrder,e.textBounds.forEach((function(e){c.forEach((function(t){switch(t){case 0:g.ctx.fillStyle=hA(A.color),g.renderTextWithLetterSpacing(e,A.letterSpacing,r);var i=A.textShadow;i.length&&e.text.trim().length&&(i.slice(0).reverse().forEach((function(t){g.ctx.shadowColor=hA(t.color),g.ctx.shadowOffsetX=t.offsetX.number*g.options.scale,g.ctx.shadowOffsetY=t.offsetY.number*g.options.scale,g.ctx.shadowBlur=t.blur.number,g.renderTextWithLetterSpacing(e,A.letterSpacing,r)})),g.ctx.shadowColor="",g.ctx.shadowOffsetX=0,g.ctx.shadowOffsetY=0,g.ctx.shadowBlur=0),A.textDecorationLine.length&&(g.ctx.fillStyle=hA(A.textDecorationColor||A.color),A.textDecorationLine.forEach((function(A){switch(A){case 1:g.ctx.fillRect(e.bounds.left,Math.round(e.bounds.top+r),e.bounds.width,1);break;case 2:g.ctx.fillRect(e.bounds.left,Math.round(e.bounds.top),e.bounds.width,1);break;case 3:g.ctx.fillRect(e.bounds.left,Math.ceil(e.bounds.top+l),e.bounds.width,1)}})));break;case 1:A.webkitTextStrokeWidth&&e.text.trim().length&&(g.ctx.strokeStyle=hA(A.webkitTextStrokeColor),g.ctx.lineWidth=A.webkitTextStrokeWidth,g.ctx.lineJoin=window.chrome?"miter":"round",g.ctx.strokeText(e.text,e.bounds.left,e.bounds.top+r)),g.ctx.strokeStyle="",g.ctx.lineWidth=0,g.ctx.lineJoin="miter"}}))})),[2]}))}))},t.prototype.renderReplacedElement=function(e,A,t){if(t&&e.intrinsicWidth>0&&e.intrinsicHeight>0){var i=Aa(e),n=Ls(A);this.path(n),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(t,0,0,e.intrinsicWidth,e.intrinsicHeight,i.left,i.top,i.width,i.height),this.ctx.restore()}},t.prototype.renderNodeContent=function(e){return i(this,void 0,void 0,(function(){var A,i,s,o,r,l,c,g,d,u,h,m,p,w,B,E,k,f;return n(this,(function(n){switch(n.label){case 0:this.applyEffects(e.getEffects(4)),A=e.container,i=e.curves,s=A.styles,o=0,r=A.textNodes,n.label=1;case 1:return o<r.length?(l=r[o],[4,this.renderTextNode(l,s)]):[3,4];case 2:n.sent(),n.label=3;case 3:return o++,[3,1];case 4:if(!(A instanceof on))return[3,8];n.label=5;case 5:return n.trys.push([5,7,,8]),[4,this.context.cache.match(A.src)];case 6:return B=n.sent(),this.renderReplacedElement(A,i,B),[3,8];case 7:return n.sent(),this.context.logger.error("Error loading image "+A.src),[3,8];case 8:if(A instanceof rn&&this.renderReplacedElement(A,i,A.canvas),!(A instanceof ln))return[3,12];n.label=9;case 9:return n.trys.push([9,11,,12]),[4,this.context.cache.match(A.svg)];case 10:return B=n.sent(),this.renderReplacedElement(A,i,B),[3,12];case 11:return n.sent(),this.context.logger.error("Error loading svg "+A.svg.substring(0,255)),[3,12];case 12:return A instanceof fn&&A.tree?[4,new t(this.context,{scale:this.options.scale,backgroundColor:A.backgroundColor,x:0,y:0,width:A.width,height:A.height}).render(A.tree)]:[3,14];case 13:c=n.sent(),A.width&&A.height&&this.ctx.drawImage(c,0,0,A.width,A.height,A.bounds.left,A.bounds.top,A.bounds.width,A.bounds.height),n.label=14;case 14:if(A instanceof Bn&&(g=Math.min(A.bounds.width,A.bounds.height),A.type===hn?A.checked&&(this.ctx.save(),this.path([new Us(A.bounds.left+.39363*g,A.bounds.top+.79*g),new Us(A.bounds.left+.16*g,A.bounds.top+.5549*g),new Us(A.bounds.left+.27347*g,A.bounds.top+.44071*g),new Us(A.bounds.left+.39694*g,A.bounds.top+.5649*g),new Us(A.bounds.left+.72983*g,A.bounds.top+.23*g),new Us(A.bounds.left+.84*g,A.bounds.top+.34085*g),new Us(A.bounds.left+.39363*g,A.bounds.top+.79*g)]),this.ctx.fillStyle=hA(wn),this.ctx.fill(),this.ctx.restore()):A.type===mn&&A.checked&&(this.ctx.save(),this.ctx.beginPath(),this.ctx.arc(A.bounds.left+g/2,A.bounds.top+g/2,g/4,0,2*Math.PI,!0),this.ctx.fillStyle=hA(wn),this.ctx.fill(),this.ctx.restore())),da(A)&&A.value.length){switch(d=this.createFontStyle(s),k=d[0],u=d[1],h=this.fontMetrics.getMetrics(k,u).baseline,this.ctx.font=k,this.ctx.fillStyle=hA(s.color),this.ctx.textBaseline="alphabetic",this.ctx.textAlign=ha(A.styles.textAlign),f=Aa(A),m=0,A.styles.textAlign){case 1:m+=f.width/2;break;case 2:m+=f.width}p=f.add(m,0,0,-f.height/2+1),this.ctx.save(),this.path([new Us(f.left,f.top),new Us(f.left+f.width,f.top),new Us(f.left+f.width,f.top+f.height),new Us(f.left,f.top+f.height)]),this.ctx.clip(),this.renderTextWithLetterSpacing(new Zi(A.value,p),s.letterSpacing,h),this.ctx.restore(),this.ctx.textBaseline="alphabetic",this.ctx.textAlign="left"}if(!li(A.styles.display,2048))return[3,20];if(null===A.styles.listStyleImage)return[3,19];if(0!==(w=A.styles.listStyleImage).type)return[3,18];B=void 0,E=w.url,n.label=15;case 15:return n.trys.push([15,17,,18]),[4,this.context.cache.match(E)];case 16:return B=n.sent(),this.ctx.drawImage(B,A.bounds.left-(B.width+10),A.bounds.top),[3,18];case 17:return n.sent(),this.context.logger.error("Error loading list-style-image "+E),[3,18];case 18:return[3,20];case 19:e.listValue&&-1!==A.styles.listStyleType&&(k=this.createFontStyle(s)[0],this.ctx.font=k,this.ctx.fillStyle=hA(s.color),this.ctx.textBaseline="middle",this.ctx.textAlign="right",f=new a(A.bounds.left,A.bounds.top+sA(A.styles.paddingTop,A.bounds.width),A.bounds.width,xt(s.lineHeight,s.fontSize.number)/2+1),this.renderTextWithLetterSpacing(new Zi(e.listValue,f),s.letterSpacing,xt(s.lineHeight,s.fontSize.number)/2+2),this.ctx.textBaseline="bottom",this.ctx.textAlign="left"),n.label=20;case 20:return[2]}}))}))},t.prototype.renderStackContent=function(e){return i(this,void 0,void 0,(function(){var A,t,i,s,a,o,r,l,c,g,d,u,h,m,p;return n(this,(function(n){switch(n.label){case 0:return li(e.element.container.flags,16),[4,this.renderNodeBackgroundAndBorders(e.element)];case 1:n.sent(),A=0,t=e.negativeZIndex,n.label=2;case 2:return A<t.length?(p=t[A],[4,this.renderStack(p)]):[3,5];case 3:n.sent(),n.label=4;case 4:return A++,[3,2];case 5:return[4,this.renderNodeContent(e.element)];case 6:n.sent(),i=0,s=e.nonInlineLevel,n.label=7;case 7:return i<s.length?(p=s[i],[4,this.renderNode(p)]):[3,10];case 8:n.sent(),n.label=9;case 9:return i++,[3,7];case 10:a=0,o=e.nonPositionedFloats,n.label=11;case 11:return a<o.length?(p=o[a],[4,this.renderStack(p)]):[3,14];case 12:n.sent(),n.label=13;case 13:return a++,[3,11];case 14:r=0,l=e.nonPositionedInlineLevel,n.label=15;case 15:return r<l.length?(p=l[r],[4,this.renderStack(p)]):[3,18];case 16:n.sent(),n.label=17;case 17:return r++,[3,15];case 18:c=0,g=e.inlineLevel,n.label=19;case 19:return c<g.length?(p=g[c],[4,this.renderNode(p)]):[3,22];case 20:n.sent(),n.label=21;case 21:return c++,[3,19];case 22:d=0,u=e.zeroOrAutoZIndexOrTransformedOrOpacity,n.label=23;case 23:return d<u.length?(p=u[d],[4,this.renderStack(p)]):[3,26];case 24:n.sent(),n.label=25;case 25:return d++,[3,23];case 26:h=0,m=e.positiveZIndex,n.label=27;case 27:return h<m.length?(p=m[h],[4,this.renderStack(p)]):[3,30];case 28:n.sent(),n.label=29;case 29:return h++,[3,27];case 30:return[2]}}))}))},t.prototype.mask=function(e){this.ctx.beginPath(),this.ctx.moveTo(0,0),this.ctx.lineTo(this.canvas.width,0),this.ctx.lineTo(this.canvas.width,this.canvas.height),this.ctx.lineTo(0,this.canvas.height),this.ctx.lineTo(0,0),this.formatPath(e.slice(0).reverse()),this.ctx.closePath()},t.prototype.path=function(e){this.ctx.beginPath(),this.formatPath(e),this.ctx.closePath()},t.prototype.formatPath=function(e){var A=this;e.forEach((function(e,t){var i=Ns(e)?e.start:e;0===t?A.ctx.moveTo(i.x,i.y):A.ctx.lineTo(i.x,i.y),Ns(e)&&A.ctx.bezierCurveTo(e.startControl.x,e.startControl.y,e.endControl.x,e.endControl.y,e.end.x,e.end.y)}))},t.prototype.renderRepeat=function(e,A,t,i){this.path(e),this.ctx.fillStyle=A,this.ctx.translate(t,i),this.ctx.fill(),this.ctx.translate(-t,-i)},t.prototype.resizeImage=function(e,A,t){var i;if(e.width===A&&e.height===t)return e;var n=(null!==(i=this.canvas.ownerDocument)&&void 0!==i?i:document).createElement("canvas");return n.width=Math.max(1,A),n.height=Math.max(1,t),n.getContext("2d").drawImage(e,0,0,e.width,e.height,0,0,A,t),n},t.prototype.renderBackgroundImage=function(e){return i(this,void 0,void 0,(function(){var A,t,i,s,a,o;return n(this,(function(r){switch(r.label){case 0:A=e.styles.backgroundImage.length-1,t=function(t){var s,a,o,r,l,c,g,d,u,h,m,p,w,B,E,k,f,C,O,W,b,x,Q,I,y,v,D,M,F,U,R;return n(this,(function(n){switch(n.label){case 0:if(0!==t.type)return[3,5];s=void 0,a=t.url,n.label=1;case 1:return n.trys.push([1,3,,4]),[4,i.context.cache.match(a)];case 2:return s=n.sent(),[3,4];case 3:return n.sent(),i.context.logger.error("Error loading background-image "+a),[3,4];case 4:return s&&(o=ta(e,A,[s.width,s.height,s.width/s.height]),k=o[0],x=o[1],Q=o[2],O=o[3],W=o[4],B=i.ctx.createPattern(i.resizeImage(s,O,W),"repeat"),i.renderRepeat(k,B,x,Q)),[3,6];case 5:1===t.type?(r=ta(e,A,[null,null,null]),k=r[0],x=r[1],Q=r[2],O=r[3],W=r[4],l=QA(t.angle,O,W),c=l[0],g=l[1],d=l[2],u=l[3],h=l[4],(m=document.createElement("canvas")).width=O,m.height=W,p=m.getContext("2d"),w=p.createLinearGradient(g,u,d,h),xA(t.stops,c).forEach((function(e){return w.addColorStop(e.stop,hA(e.color))})),p.fillStyle=w,p.fillRect(0,0,O,W),O>0&&W>0&&(B=i.ctx.createPattern(m,"repeat"),i.renderRepeat(k,B,x,Q))):function(e){return 2===e.type}(t)&&(E=ta(e,A,[null,null,null]),k=E[0],f=E[1],C=E[2],O=E[3],W=E[4],b=0===t.position.length?[tA]:t.position,x=sA(b[0],O),Q=sA(b[b.length-1],W),I=function(e,A,t,i,n){var s=0,a=0;switch(e.size){case 0:0===e.shape?s=a=Math.min(Math.abs(A),Math.abs(A-i),Math.abs(t),Math.abs(t-n)):1===e.shape&&(s=Math.min(Math.abs(A),Math.abs(A-i)),a=Math.min(Math.abs(t),Math.abs(t-n)));break;case 2:if(0===e.shape)s=a=Math.min(IA(A,t),IA(A,t-n),IA(A-i,t),IA(A-i,t-n));else if(1===e.shape){var o=Math.min(Math.abs(t),Math.abs(t-n))/Math.min(Math.abs(A),Math.abs(A-i)),r=yA(i,n,A,t,!0),l=r[0],c=r[1];a=o*(s=IA(l-A,(c-t)/o))}break;case 1:0===e.shape?s=a=Math.max(Math.abs(A),Math.abs(A-i),Math.abs(t),Math.abs(t-n)):1===e.shape&&(s=Math.max(Math.abs(A),Math.abs(A-i)),a=Math.max(Math.abs(t),Math.abs(t-n)));break;case 3:if(0===e.shape)s=a=Math.max(IA(A,t),IA(A,t-n),IA(A-i,t),IA(A-i,t-n));else if(1===e.shape){o=Math.max(Math.abs(t),Math.abs(t-n))/Math.max(Math.abs(A),Math.abs(A-i));var g=yA(i,n,A,t,!1);l=g[0],c=g[1],a=o*(s=IA(l-A,(c-t)/o))}}return Array.isArray(e.size)&&(s=sA(e.size[0],i),a=2===e.size.length?sA(e.size[1],n):s),[s,a]}(t,x,Q,O,W),y=I[0],v=I[1],y>0&&v>0&&(D=i.ctx.createRadialGradient(f+x,C+Q,0,f+x,C+Q,y),xA(t.stops,2*y).forEach((function(e){return D.addColorStop(e.stop,hA(e.color))})),i.path(k),i.ctx.fillStyle=D,y!==v?(M=e.bounds.left+.5*e.bounds.width,F=e.bounds.top+.5*e.bounds.height,R=1/(U=v/y),i.ctx.save(),i.ctx.translate(M,F),i.ctx.transform(1,0,0,U,0,0),i.ctx.translate(-M,-F),i.ctx.fillRect(f,R*(C-F)+F,O,W*R),i.ctx.restore()):i.ctx.fill())),n.label=6;case 6:return A--,[2]}}))},i=this,s=0,a=e.styles.backgroundImage.slice(0).reverse(),r.label=1;case 1:return s<a.length?(o=a[s],[5,t(o)]):[3,4];case 2:r.sent(),r.label=3;case 3:return s++,[3,1];case 4:return[2]}}))}))},t.prototype.renderSolidBorder=function(e,A,t){return i(this,void 0,void 0,(function(){return n(this,(function(i){return this.path(Xs(t,A)),this.ctx.fillStyle=hA(e),this.ctx.fill(),[2]}))}))},t.prototype.renderDoubleBorder=function(e,A,t,s){return i(this,void 0,void 0,(function(){var i,a;return n(this,(function(n){switch(n.label){case 0:return A<3?[4,this.renderSolidBorder(e,t,s)]:[3,2];case 1:return n.sent(),[2];case 2:return i=function(e,A){switch(A){case 0:return $s(e.topLeftBorderBox,e.topLeftBorderDoubleOuterBox,e.topRightBorderBox,e.topRightBorderDoubleOuterBox);case 1:return $s(e.topRightBorderBox,e.topRightBorderDoubleOuterBox,e.bottomRightBorderBox,e.bottomRightBorderDoubleOuterBox);case 2:return $s(e.bottomRightBorderBox,e.bottomRightBorderDoubleOuterBox,e.bottomLeftBorderBox,e.bottomLeftBorderDoubleOuterBox);default:return $s(e.bottomLeftBorderBox,e.bottomLeftBorderDoubleOuterBox,e.topLeftBorderBox,e.topLeftBorderDoubleOuterBox)}}(s,t),this.path(i),this.ctx.fillStyle=hA(e),this.ctx.fill(),a=function(e,A){switch(A){case 0:return $s(e.topLeftBorderDoubleInnerBox,e.topLeftPaddingBox,e.topRightBorderDoubleInnerBox,e.topRightPaddingBox);case 1:return $s(e.topRightBorderDoubleInnerBox,e.topRightPaddingBox,e.bottomRightBorderDoubleInnerBox,e.bottomRightPaddingBox);case 2:return $s(e.bottomRightBorderDoubleInnerBox,e.bottomRightPaddingBox,e.bottomLeftBorderDoubleInnerBox,e.bottomLeftPaddingBox);default:return $s(e.bottomLeftBorderDoubleInnerBox,e.bottomLeftPaddingBox,e.topLeftBorderDoubleInnerBox,e.topLeftPaddingBox)}}(s,t),this.path(a),this.ctx.fill(),[2]}}))}))},t.prototype.renderNodeBackgroundAndBorders=function(e){return i(this,void 0,void 0,(function(){var A,t,i,s,a,o,r,l,c=this;return n(this,(function(n){switch(n.label){case 0:return this.applyEffects(e.getEffects(2)),A=e.container.styles,t=!uA(A.backgroundColor)||A.backgroundImage.length,i=[{style:A.borderTopStyle,color:A.borderTopColor,width:A.borderTopWidth},{style:A.borderRightStyle,color:A.borderRightColor,width:A.borderRightWidth},{style:A.borderBottomStyle,color:A.borderBottomColor,width:A.borderBottomWidth},{style:A.borderLeftStyle,color:A.borderLeftColor,width:A.borderLeftWidth}],s=ua(aa(A.backgroundClip,0),e.curves),t||A.boxShadow.length?(this.ctx.save(),this.path(s),this.ctx.clip(),uA(A.backgroundColor)||(this.ctx.fillStyle=hA(A.backgroundColor),this.ctx.fill()),[4,this.renderBackgroundImage(e.container)]):[3,2];case 1:n.sent(),this.ctx.restore(),A.boxShadow.slice(0).reverse().forEach((function(A){c.ctx.save();var t,i,n,s,a,o=Hs(e.curves),r=A.inset?0:1e4,l=(t=o,i=-r+(A.inset?1:-1)*A.spread.number,n=(A.inset?1:-1)*A.spread.number,s=A.spread.number*(A.inset?-2:2),a=A.spread.number*(A.inset?-2:2),t.map((function(e,A){switch(A){case 0:return e.add(i,n);case 1:return e.add(i+s,n);case 2:return e.add(i+s,n+a);case 3:return e.add(i,n+a)}return e})));A.inset?(c.path(o),c.ctx.clip(),c.mask(l)):(c.mask(o),c.ctx.clip(),c.path(l)),c.ctx.shadowOffsetX=A.offsetX.number+r,c.ctx.shadowOffsetY=A.offsetY.number,c.ctx.shadowColor=hA(A.color),c.ctx.shadowBlur=A.blur.number,c.ctx.fillStyle=A.inset?hA(A.color):"rgba(0,0,0,1)",c.ctx.fill(),c.ctx.restore()})),n.label=2;case 2:a=0,o=0,r=i,n.label=3;case 3:return o<r.length?0!==(l=r[o]).style&&!uA(l.color)&&l.width>0?2!==l.style?[3,5]:[4,this.renderDashedDottedBorder(l.color,l.width,a,e.curves,2)]:[3,11]:[3,13];case 4:return n.sent(),[3,11];case 5:return 3!==l.style?[3,7]:[4,this.renderDashedDottedBorder(l.color,l.width,a,e.curves,3)];case 6:return n.sent(),[3,11];case 7:return 4!==l.style?[3,9]:[4,this.renderDoubleBorder(l.color,l.width,a,e.curves)];case 8:return n.sent(),[3,11];case 9:return[4,this.renderSolidBorder(l.color,a,e.curves)];case 10:n.sent(),n.label=11;case 11:a++,n.label=12;case 12:return o++,[3,3];case 13:return[2]}}))}))},t.prototype.renderDashedDottedBorder=function(e,A,t,s,a){return i(this,void 0,void 0,(function(){var i,o,r,l,c,g,d,u,h,m,p,w,B,E,k,f;return n(this,(function(n){return this.ctx.save(),i=function(e,A){switch(A){case 0:return _s(e.topLeftBorderStroke,e.topRightBorderStroke);case 1:return _s(e.topRightBorderStroke,e.bottomRightBorderStroke);case 2:return _s(e.bottomRightBorderStroke,e.bottomLeftBorderStroke);default:return _s(e.bottomLeftBorderStroke,e.topLeftBorderStroke)}}(s,t),o=Xs(s,t),2===a&&(this.path(o),this.ctx.clip()),Ns(o[0])?(r=o[0].start.x,l=o[0].start.y):(r=o[0].x,l=o[0].y),Ns(o[1])?(c=o[1].end.x,g=o[1].end.y):(c=o[1].x,g=o[1].y),d=0===t||2===t?Math.abs(r-c):Math.abs(l-g),this.ctx.beginPath(),3===a?this.formatPath(i):this.formatPath(o.slice(0,2)),u=A<3?3*A:2*A,h=A<3?2*A:A,3===a&&(u=A,h=A),m=!0,d<=2*u?m=!1:d<=2*u+h?(u*=p=d/(2*u+h),h*=p):(w=Math.floor((d+h)/(u+h)),B=(d-w*u)/(w-1),h=(E=(d-(w+1)*u)/w)<=0||Math.abs(h-B)<Math.abs(h-E)?B:E),m&&(3===a?this.ctx.setLineDash([0,u+h]):this.ctx.setLineDash([u,h])),3===a?(this.ctx.lineCap="round",this.ctx.lineWidth=A):this.ctx.lineWidth=2*A+1.1,this.ctx.strokeStyle=hA(e),this.ctx.stroke(),this.ctx.setLineDash([]),2===a&&(Ns(o[0])&&(k=o[3],f=o[0],this.ctx.beginPath(),this.formatPath([new Us(k.end.x,k.end.y),new Us(f.start.x,f.start.y)]),this.ctx.stroke()),Ns(o[1])&&(k=o[1],f=o[2],this.ctx.beginPath(),this.formatPath([new Us(k.end.x,k.end.y),new Us(f.start.x,f.start.y)]),this.ctx.stroke())),this.ctx.restore(),[2]}))}))},t.prototype.render=function(e){return i(this,void 0,void 0,(function(){var A;return n(this,(function(t){switch(t.label){case 0:return this.options.backgroundColor&&(this.ctx.fillStyle=hA(this.options.backgroundColor),this.ctx.fillRect(this.options.x,this.options.y,this.options.width,this.options.height)),i=new qs(e,null),n=new Js(i),Zs(i,n,n,s=[]),Vs(i.container,s),A=n,[4,this.renderStack(A)];case 1:return t.sent(),this.applyEffects([]),[2,this.canvas]}var i,n,s}))}))},t}(ca),da=function(e){return e instanceof kn||e instanceof En||e instanceof Bn&&e.type!==mn&&e.type!==hn},ua=function(e,A){switch(e){case 0:return Hs(A);case 2:return function(e){return[e.topLeftContentBox,e.topRightContentBox,e.bottomRightContentBox,e.bottomLeftContentBox]}(A);default:return Ls(A)}},ha=function(e){switch(e){case 1:return"center";case 2:return"right";default:return"left"}},ma=["-apple-system","system-ui"],pa=function(e){return/iPhone OS 15_(0|1)/.test(window.navigator.userAgent)?e.filter((function(e){return-1===ma.indexOf(e)})):e},wa=function(e){function t(A,t){var i=e.call(this,A,t)||this;return i.canvas=t.canvas?t.canvas:document.createElement("canvas"),i.ctx=i.canvas.getContext("2d"),i.options=t,i.canvas.width=Math.floor(t.width*t.scale),i.canvas.height=Math.floor(t.height*t.scale),i.canvas.style.width=t.width+"px",i.canvas.style.height=t.height+"px",i.ctx.scale(i.options.scale,i.options.scale),i.ctx.translate(-t.x,-t.y),i.context.logger.debug("EXPERIMENTAL ForeignObject renderer initialized ("+t.width+"x"+t.height+" at "+t.x+","+t.y+") with scale "+t.scale),i}return A(t,e),t.prototype.render=function(e){return i(this,void 0,void 0,(function(){var A,t;return n(this,(function(i){switch(i.label){case 0:return A=Ki(this.options.width*this.options.scale,this.options.height*this.options.scale,this.options.scale,this.options.scale,e),[4,Ba(A)];case 1:return t=i.sent(),this.options.backgroundColor&&(this.ctx.fillStyle=hA(this.options.backgroundColor),this.ctx.fillRect(0,0,this.options.width*this.options.scale,this.options.height*this.options.scale)),this.ctx.drawImage(t,-this.options.x*this.options.scale,-this.options.y*this.options.scale),[2,this.canvas]}}))}))},t}(ca),Ba=function(e){return new Promise((function(A,t){var i=new Image;i.onload=function(){A(i)},i.onerror=t,i.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent((new XMLSerializer).serializeToString(e))}))},Ea=function(){function e(e){var A=e.id,t=e.enabled;this.id=A,this.enabled=t,this.start=Date.now()}return e.prototype.debug=function(){for(var e=[],A=0;A<arguments.length;A++)e[A]=arguments[A];this.enabled&&("undefined"!=typeof window&&window.console&&"function"==typeof console.debug?console.debug.apply(console,s([this.id,this.getTime()+"ms"],e)):this.info.apply(this,e))},e.prototype.getTime=function(){return Date.now()-this.start},e.prototype.info=function(){for(var e=[],A=0;A<arguments.length;A++)e[A]=arguments[A];this.enabled&&"undefined"!=typeof window&&window.console&&"function"==typeof console.info&&console.info.apply(console,s([this.id,this.getTime()+"ms"],e))},e.prototype.warn=function(){for(var e=[],A=0;A<arguments.length;A++)e[A]=arguments[A];this.enabled&&("undefined"!=typeof window&&window.console&&"function"==typeof console.warn?console.warn.apply(console,s([this.id,this.getTime()+"ms"],e)):this.info.apply(this,e))},e.prototype.error=function(){for(var e=[],A=0;A<arguments.length;A++)e[A]=arguments[A];this.enabled&&("undefined"!=typeof window&&window.console&&"function"==typeof console.error?console.error.apply(console,s([this.id,this.getTime()+"ms"],e)):this.info.apply(this,e))},e.instances={},e}(),ka=function(){function e(A,t){var i;this.windowBounds=t,this.instanceName="#"+e.instanceCount++,this.logger=new Ea({id:this.instanceName,enabled:A.logging}),this.cache=null!==(i=A.cache)&&void 0!==i?i:new bs(this,A)}return e.instanceCount=1,e}();"undefined"!=typeof window&&Ws.setContext(window);var fa=function(e,A){return i(void 0,void 0,void 0,(function(){var i,s,r,l,c,g,d,u,h,m,p,w,B,E,k,f,C,O,W,b,x,Q,I,y,v,D,M,F,U,R,T,N,S,G,H,L,j,Y;return n(this,(function(n){switch(n.label){case 0:if(!e||"object"!=typeof e)return[2,Promise.reject("Invalid element provided as first argument")];if(!(i=e.ownerDocument))throw new Error("Element is not attached to a Document");if(!(s=i.defaultView))throw new Error("Document is not attached to a Window");return r={allowTaint:null!==(Q=A.allowTaint)&&void 0!==Q&&Q,imageTimeout:null!==(I=A.imageTimeout)&&void 0!==I?I:15e3,proxy:A.proxy,useCORS:null!==(y=A.useCORS)&&void 0!==y&&y},l=t({logging:null===(v=A.logging)||void 0===v||v,cache:A.cache},r),c={windowWidth:null!==(D=A.windowWidth)&&void 0!==D?D:s.innerWidth,windowHeight:null!==(M=A.windowHeight)&&void 0!==M?M:s.innerHeight,scrollX:null!==(F=A.scrollX)&&void 0!==F?F:s.pageXOffset,scrollY:null!==(U=A.scrollY)&&void 0!==U?U:s.pageYOffset},g=new a(c.scrollX,c.scrollY,c.windowWidth,c.windowHeight),d=new ka(l,g),u=null!==(R=A.foreignObjectRendering)&&void 0!==R&&R,h={allowTaint:null!==(T=A.allowTaint)&&void 0!==T&&T,onclone:A.onclone,ignoreElements:A.ignoreElements,inlineImages:u,copyStyles:u},d.logger.debug("Starting document clone with size "+g.width+"x"+g.height+" scrolled to "+-g.left+","+-g.top),m=new rs(d,e,h),(p=m.clonedReferenceElement)?[4,m.toIFrame(i,g)]:[2,Promise.reject("Unable to find element in cloned iframe")];case 1:return w=n.sent(),B=Tn(p)||"HTML"===p.tagName?function(e){var A=e.body,t=e.documentElement;if(!A||!t)throw new Error("Unable to get document size");var i=Math.max(Math.max(A.scrollWidth,t.scrollWidth),Math.max(A.offsetWidth,t.offsetWidth),Math.max(A.clientWidth,t.clientWidth)),n=Math.max(Math.max(A.scrollHeight,t.scrollHeight),Math.max(A.offsetHeight,t.offsetHeight),Math.max(A.clientHeight,t.clientHeight));return new a(0,0,i,n)}(p.ownerDocument):o(d,p),E=B.width,k=B.height,f=B.left,C=B.top,O=Ca(d,p,A.backgroundColor),W={canvas:A.canvas,backgroundColor:O,scale:null!==(S=null!==(N=A.scale)&&void 0!==N?N:s.devicePixelRatio)&&void 0!==S?S:1,x:(null!==(G=A.x)&&void 0!==G?G:0)+f,y:(null!==(H=A.y)&&void 0!==H?H:0)+C,width:null!==(L=A.width)&&void 0!==L?L:Math.ceil(E),height:null!==(j=A.height)&&void 0!==j?j:Math.ceil(k)},u?(d.logger.debug("Document cloned, using foreign object rendering"),[4,new wa(d,W).render(p)]):[3,3];case 2:return b=n.sent(),[3,5];case 3:return d.logger.debug("Document cloned, element located at "+f+","+C+" with size "+E+"x"+k+" using computed rendering"),d.logger.debug("Starting DOM parsing"),x=bn(d,p),O===x.styles.backgroundColor&&(x.styles.backgroundColor=CA.TRANSPARENT),d.logger.debug("Starting renderer for element at "+W.x+","+W.y+" with size "+W.width+"x"+W.height),[4,new ga(d,W).render(x)];case 4:b=n.sent(),n.label=5;case 5:return(null===(Y=A.removeContainer)||void 0===Y||Y)&&(rs.destroy(w)||d.logger.error("Cannot detach cloned iframe as it is not in the DOM anymore")),d.logger.debug("Finished rendering"),[2,b]}}))}))},Ca=function(e,A,t){var i=A.ownerDocument,n=i.documentElement?fA(e,getComputedStyle(i.documentElement).backgroundColor):CA.TRANSPARENT,s=i.body?fA(e,getComputedStyle(i.body).backgroundColor):CA.TRANSPARENT,a="string"==typeof t?fA(e,t):null===t?CA.TRANSPARENT:4294967295;return A===i.documentElement?uA(n)?uA(s)?a:s:n:a};return function(e,A){return void 0===A&&(A={}),fa(e,A)}}()}(html2canvas$1,html2canvas$1.exports);var html2canvasExports=html2canvas$1.exports,html2canvas=getDefaultExportFromCjs(html2canvasExports);const updateEquation=async(e,A,t,i,n)=>{const s=await tex2dataURL(e,n);if(s){const e=[];e.push({mimeType:s.mimeType,id:A,dataURL:s.dataURL,created:s.created,size:s.size,hasSVGwithBitmap:!1,shouldScale:!0}),i(e,t)}};async function tex2dataURL(e,A){let t=0;for(;!A.mathjax&&!A.mathjaxLoaderFinished&&t<10;)await sleep$1(100),t++;A.mathjaxLoaderFinished||errorlog({where:"text2dataURL",fn:tex2dataURL,message:"mathjaxLoader not ready, using fallback. Try reloading Obsidian or restarting the Excalidraw plugin"});try{return await mathjaxSVG(e,A)}catch(t){await sleep$1(100);try{return await mathjaxSVG(e,A)}catch(t){await sleep$1(100);try{return await mathjaxSVG(e,A)}catch(t){return A.mathjax?new obsidian_module.Notice("Unknown error loading LaTeX. Using fallback solution. Try closing and reopening this drawing."):new obsidian_module.Notice("LaTeX support did not load. Using fallback solution. Try checking your network connection."),await mathjaxImage2html(e)}}}}async function mathjaxSVG(e,A){const t=A.mathjax.tex2svg(e,{display:!0,scale:4}).querySelector("svg");if(t){t.width.baseVal.valueInSpecifiedUnits<2&&(t.width.baseVal.valueAsString=`${(t.width.baseVal.valueInSpecifiedUnits+1).toFixed(3)}ex`);const e=svgToBase64(t.outerHTML);return{mimeType:"image/svg+xml",fileId:fileid(),dataURL:e,created:Date.now(),size:await getImageSize(e)}}return null}async function mathjaxImage2html(e){const A=document.body.createDiv();A.style.display="table";const t=window.MathJax.tex2chtml(e,{display:!0,scale:4});t.style.margin="3px",t.style.color="black";const i=t.querySelector("mjx-assistive-mml");i&&i.parentElement.removeChild(i),A.appendChild(t),window.MathJax.typeset();const n=await html2canvas(A,{backgroundColor:null});return document.body.removeChild(A),{mimeType:"image/png",fileId:fileid(),dataURL:n.toDataURL(),created:Date.now(),size:{height:n.height,width:n.width}}}const getMermaidImageElements=e=>e?e.filter((e=>{var A;return"image"===e.type&&(null===(A=e.customData)||void 0===A?void 0:A.mermaidText)})):[],getMermaidText=e=>{var A;return null===(A=e.customData)||void 0===A?void 0:A.mermaidText},shouldRenderMermaid=()=>obsidian_module.requireApiVersion("1.4.14"),markdownRendererRecursionWatcthdog=new Set,replaceSVGColors=(e,A)=>{if(!A)return e;if("string"==typeof e){for(const[t,i]of Object.entries(A)){const A=new RegExp(`fill="${t}"`,"gi");e=e.replaceAll(A,`fill="${i}"`);const n=new RegExp(`fill:${t}`,"gi");e=e.replaceAll(n,`fill:${i}`);const s=new RegExp(`stroke="${t}"`,"gi");e=e.replaceAll(s,`stroke="${i}"`);const a=new RegExp(`stroke:${t}`,"gi");e=e.replaceAll(a,`stroke:${i}`)}return e}const t=e=>{var i,n;if(e instanceof SVGElement){const t=null===(i=e.getAttribute("fill"))||void 0===i?void 0:i.toLocaleLowerCase(),s=null===(n=e.getAttribute("stroke"))||void 0===n?void 0:n.toLocaleLowerCase();t&&A[t]&&e.setAttribute("fill",A[t]),s&&A[s]&&e.setAttribute("stroke",A[s])}for(const A of e.childNodes)t(A)};for(const A of e.childNodes)t(A);return e};class EmbeddedFile{constructor(e,A,t,i){if(this.file=null,this.isSVGwithBitmap=!1,this.img="",this.imgInverted="",this.mtime=0,this.mimeType="application/octet-stream",this.size={height:0,width:0},this.attemptCounter=0,this.isHyperLink=!1,this.isLocalLink=!1,this.colorMap=null,this.plugin=e,this.resetImage(A,t),this.file&&(this.plugin.ea.isExcalidrawFile(this.file)||"svg"===this.file.extension.toLowerCase()))try{this.colorMap=i?JSON.parse(i.toLocaleLowerCase()):null}catch(e){this.colorMap=null}}resetImage(e,A){return this.imgInverted=this.img="",this.mtime=0,A.startsWith("https://")||A.startsWith("http://")||A.startsWith("ftp://")||A.startsWith("ftps://")?(this.isHyperLink=!0,void(this.hyperlink=A)):A.startsWith("file://")?(this.isLocalLink=!0,void(this.hyperlink=A)):(this.linkParts=getLinkParts(A),this.hostPath=e,void(this.linkParts.path?(this.linkParts.width||(this.linkParts.width=this.plugin.settings.mdSVGwidth),this.linkParts.height||(this.linkParts.height=this.plugin.settings.mdSVGmaxHeight),this.file=app.metadataCache.getFirstLinkpathDest(this.linkParts.path,e),this.file||0==this.attemptCounter++&&new obsidian_module.Notice(`Excalidraw Warning: could not find image file: ${A}`,5e3)):new obsidian_module.Notice(`Excalidraw Error\nIncorrect embedded filename: ${A}`)))}fileChanged(){return!this.isHyperLink&&!this.isLocalLink&&(this.file||(this.file=this.plugin.app.metadataCache.getFirstLinkpathDest(this.linkParts.path,this.hostPath),this.file)?this.mtime!=this.file.stat.mtime:(this.attemptCounter++,!1))}setImage(e,A,t,i,n){if(this.file||this.isHyperLink||this.isLocalLink){switch(this.fileChanged()&&(this.imgInverted=this.img=""),this.mtime=this.isHyperLink||this.isLocalLink?0:this.file.stat.mtime,this.size=t,this.mimeType=A,i&&n){case!0:this.imgInverted=e;break;case!1:this.img=e}this.isSVGwithBitmap=n}}isLoaded(e){if(!this.isHyperLink&&!this.isLocalLink){if(!this.file&&(this.file=app.metadataCache.getFirstLinkpathDest(this.linkParts.path,this.hostPath),!this.file))return this.attemptCounter++,!0;if(this.fileChanged())return!1}return this.isSVGwithBitmap&&e?""!==this.imgInverted:""!==this.img}getImage(e){return this.file||this.isHyperLink||this.isLocalLink?e&&this.isSVGwithBitmap?this.imgInverted:this.img:""}shouldScale(){return this.isHyperLink||this.isLocalLink||!Boolean(this.linkParts&&this.linkParts.original&&this.linkParts.original.endsWith("|100%"))}}class EmbeddedFilesLoader{constructor(e,A){this.pdfDocsMap=new Map,this.terminate=!1,this.plugin=e,this.isDark=A,this.uid=nanoid()}emptyPDFDocsMap(){this.pdfDocsMap.forEach((e=>e.destroy())),this.pdfDocsMap.clear()}async getObsidianImage(e,A){const t=await this._getObsidianImage(e,A);return this.emptyPDFDocsMap(),t}async getExcalidrawSVG({isDark:e,file:A,depth:t,inFile:i,hasSVGwithBitmap:n,elements:s=[]}){const a=hasExportTheme(this.plugin,A)?getExportTheme(this.plugin,A,"light"):void 0,o={withBackground:!!hasExportBackground(this.plugin,A)&&getWithBackground(this.plugin,A),withTheme:!!a},r=replaceSVGColors(await createSVG(null==A?void 0:A.path,!0,o,this,a,null,null,s,this.plugin,t+1,getExportPadding(this.plugin,A)),i instanceof EmbeddedFile?i.colorMap:null),l=r.querySelectorAll("image:not([href^='data:image/svg'])");return l.length>0&&(n=!0),n&&e&&l.forEach((e=>{var A;const t=null===(A=e.parentElement)||void 0===A?void 0:A.id;r.querySelectorAll(`use[href='#${t}']`).forEach((e=>{e.setAttribute("filter",THEME_FILTER)}))})),!n&&r.getAttribute("hasbitmap")&&(n=!0),{dataURL:svgToBase64(r.outerHTML),hasSVGwithBitmap:n}}async _getObsidianImage(e,A){var t;if(!this.plugin||!e)return null;const i=e instanceof EmbeddedFile&&e.isHyperLink,n=e instanceof EmbeddedFile&&e.isLocalLink,s=e instanceof EmbeddedFile?e.hyperlink:"",a=e instanceof EmbeddedFile?e.file:e;if(a&&markdownRendererRecursionWatcthdog.has(a))return new obsidian_module.Notice(`Loading of ${a.path}. Please check if there is an inifinite loop of one file embedded in the other.`),null;const o=i?null:e instanceof EmbeddedFile?e.linkParts:{original:a.path,path:a.path,isBlockRef:!1,ref:null,width:this.plugin.settings.mdSVGwidth,height:this.plugin.settings.mdSVGmaxHeight,page:null};let r=!1;const l=!i&&!n&&this.plugin.isExcalidrawFile(a),c=!i&&!n&&"pdf"===a.extension.toLowerCase();if(!(i||c||n||IMAGE_TYPES.contains(a.extension)||l||"md"===a.extension))return null;const g=i||c?null:n?await readLocalFileBinary(e.hyperlink.split("file://")[1]):await app.vault.readBinary(a);let d=null;if(l){const t=await this.getExcalidrawSVG({isDark:this.isDark,file:a,depth:A,inFile:e,hasSVGwithBitmap:r});d=t.dataURL,r=t.hasSVGwithBitmap}const u=l?d:null,[h,m]=c?await this.pdfToDataURL(a,o):[null,null];let p=c?"image/png":"image/svg+xml";const w=i||n?getURLImageExtension(s):a.extension;l||c||(p=getMimeType(w));let B=i?e instanceof EmbeddedFile?await getDataURLFromURL(e.hyperlink,p):null:null!==(t=null!=u?u:h)&&void 0!==t?t:"svg"===(null==a?void 0:a.extension)?await getSVGData(app,a,e instanceof EmbeddedFile?e.colorMap:null):"md"===(null==a?void 0:a.extension)?null:await getDataURL(g,p);if(!i&&!B&&!n){markdownRendererRecursionWatcthdog.add(a);const e=await this.convertMarkdownToSVG(this.plugin,a,o,A);markdownRendererRecursionWatcthdog.delete(a),B=e.dataURL,r=e.hasSVGwithBitmap}try{const e=c?m:await getImageSize(B);return{mimeType:p,fileId:await generateIdFromFile(i||c?(new TextEncoder).encode(B):g),dataURL:B,created:i||n?0:a.stat.mtime,hasSVGwithBitmap:r,size:e}}catch(e){return null}}async loadSceneFiles(e,A,t){var i,n;if(t>4)return void new obsidian_module.Notice(t$d("INFINITE_LOOP_WARNING")+t.toString(),6e3);const s=e.getFileEntries();let a;void 0===this.isDark&&(this.isDark="dark"===(null===(n=null===(i=null==e?void 0:e.scene)||void 0===i?void 0:i.appState)||void 0===n?void 0:n.theme));const o=[];for(;!this.terminate&&!(a=s.next()).done;){const e=a.value[1];if(e.isLoaded(this.isDark)){if(e.isSVGwithBitmap){const t={mimeType:e.mimeType,id:a.value[0],dataURL:e.getImage(this.isDark),created:e.mtime,size:e.size,hasSVGwithBitmap:e.isSVGwithBitmap,shouldScale:e.shouldScale()};try{A([t],this.isDark,!1)}catch(e){errorlog({where:"EmbeddedFileLoader.loadSceneFiles",error:e})}}}else{const i=await this._getObsidianImage(e,t);if(i){const t={mimeType:i.mimeType,id:a.value[0],dataURL:i.dataURL,created:i.created,size:i.size,hasSVGwithBitmap:i.hasSVGwithBitmap,shouldScale:e.shouldScale()};try{A([t],this.isDark,!1)}catch(e){errorlog({where:"EmbeddedFileLoader.loadSceneFiles",error:e})}}}}let r;const l=e.getEquationEntries();for(;!this.terminate&&!(r=l.next()).done;)if(!e.getEquation(r.value[0]).isLoaded){const e=r.value[1].latex,A=await tex2dataURL(e,this.plugin);if(A){const e={mimeType:A.mimeType,id:r.value[0],dataURL:A.dataURL,created:A.created,size:A.size,hasSVGwithBitmap:!1,shouldScale:!0};o.push(e)}}if(shouldRenderMermaid()){const A=getMermaidImageElements(e.scene.elements);for(const e of A){if(this.terminate)continue;const A=getMermaidText(e),i=await mermaidToExcalidraw(A,{fontSize:20},!0);if(i)if(null==i?void 0:i.files)for(const A in i.files){const t=Object.assign(Object.assign({},i.files[A]),{id:e.fileId,created:Date.now(),hasSVGwithBitmap:!1,shouldScale:!0,size:await getImageSize(i.files[A].dataURL)});o.push(t)}else if(null==i?void 0:i.elements){const A=await this.getExcalidrawSVG({isDark:this.isDark,file:null,depth:t,inFile:null,hasSVGwithBitmap:!1,elements:i.elements});if(null==A?void 0:A.dataURL){const t=await getImageSize(A.dataURL),i={mimeType:"image/svg+xml",id:e.fileId,dataURL:A.dataURL,created:Date.now(),hasSVGwithBitmap:A.hasSVGwithBitmap,size:t,shouldScale:!0};o.push(i)}}}}if(this.emptyPDFDocsMap(),!this.terminate)try{A(o,this.isDark,!0)}catch(e){errorlog({where:"EmbeddedFileLoader.loadSceneFiles",error:e})}}async pdfToDataURL(e,A){var t,i;try{let n=0,s=0;const a=null!==(t=this.pdfDocsMap.get(e.path))&&void 0!==t?t:await getPDFDoc(e);this.pdfDocsMap.has(e.path)||this.pdfDocsMap.set(e.path,a);const o=isNaN(A.page)?1:null!==(i=A.page)&&void 0!==i?i:1,r=this.plugin.settings.pdfScale,l=async e=>{const A=createEl("canvas"),t=A.getContext("2d"),i=await a.getPage(e),o=i.getViewport({scale:r});s=A.height=o.height,n=A.width=o.width;const l={canvasContext:t,background:"rgba(0,0,0,0)",viewport:o};return await i.render(l).promise,A},c=await l(o);if(c){const e=[`data:image/png;base64,${await new Promise(((e,A)=>{c.toBlob((async A=>{const t=await blobToBase64(A);e(t)}))}))}`,{width:n,height:s}];return c.width=0,c.height=0,e}}catch(e){return console.log(e),[null,null]}}async convertMarkdownToSVG(e,A,t,i){var n,s,a,o;let r=!1;const l=await getTransclusion(t,e.app,A);let c=(null!==(n=l.leadingHashes)&&void 0!==n?n:"")+l.contents;""===c&&(c="# Empty markdown file\nCTRL+Click here to open the file for editing in the current active pane, or CTRL+SHIFT+Click to open it in an adjacent pane.");const g=e.app.metadataCache.getFileCache(A);let d,u=e.settings.mdFont;switch((null==g?void 0:g.frontmatter)&&Boolean(g.frontmatter["excalidraw-font"])&&(u=g.frontmatter["excalidraw-font"]),u){case"Virgil":d=VIRGIL_FONT;break;case"Cascadia":d=CASCADIA_FONT;break;case"Assistant":d=ASSISTANT_FONT;break;case"":d="";break;default:const t=await getFontDataURL(e.app,u,A.path);d=t.fontDef,u=t.fontName}(null==g?void 0:g.frontmatter)&&null!==g.frontmatter.banner&&(c=c.replace(/banner:\s*.*/,""));const h=(null==g?void 0:g.frontmatter)&&null!==(s=g.frontmatter["excalidraw-font-color"])&&void 0!==s?s:e.settings.mdFontColor;let m=(null==g?void 0:g.frontmatter)&&null!==(a=g.frontmatter["excalidraw-css"])&&void 0!==a?a:"",p=!1;if(m&&""!=m){const t=e.app.metadataCache.getFirstLinkpathDest(m,A.path);t&&(m=await e.app.vault.read(t),p=!0)}if(!p)if(e.settings.mdCSS&&""!==e.settings.mdCSS){const t=e.app.metadataCache.getFirstLinkpathDest(e.settings.mdCSS,A.path);m+=t?`\n${await e.app.vault.read(t)}`:DEFAULT_MD_EMBED_CSS}else m+=DEFAULT_MD_EMBED_CSS;const w=(null==g?void 0:g.frontmatter)&&null!==(o=g.frontmatter["excalidraw-border-color"])&&void 0!==o?o:e.settings.mdBorderColor;w&&""!==w&&!m.match(/svg/i)&&(m+=`svg{border:2px solid;color:${w};transform:scale(.95)}`);let B=` width="${t.width}px" height="100000"`,E=` width="${t.width}px" height="100%"`;const k=(e,A,t)=>`<svg xmlns="http://www.w3.org/2000/svg"${B}>${t?`<style>${t}</style>`:""}<foreignObject x="0" y="0"${E}>${e}${A}</foreignObject>${""!==d?`<defs><style>${d}</style></defs>`:""}</svg>`,f=createDiv();f.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),f.setAttribute("class","excalidraw-md-host"),""!==u&&(f.style.fontFamily=u),f.style.overflow="auto",f.style.display="block",f.style.color=h&&""!==h?h:"initial",await obsidian_module.MarkdownRenderer.renderMarkdown(c,f,A.path,e),f.querySelectorAll(":scope > *[class^='frontmatter']").forEach((e=>f.removeChild(e)));const C=Array.from(f.querySelectorAll("span[class='internal-embed']"));for(let t=0;t<C.length;t++){const i=C[t],n=i.getAttribute("src");if(!n)continue;const s=i.getAttribute("width"),a=i.getAttribute("height"),o=new EmbeddedFile(e,A.path,n);if(!o.file)continue;const r=await this._getObsidianImage(o,1),l=createEl("img");s&&l.setAttribute("width",s),a&&l.setAttribute("height",a),l.src=r.dataURL,i.replaceWith(l)}const O=document.body.createDiv();O.style.display="none";const W=O.createEl("iframe").contentWindow.document;if(m){const e=W.createElement("style");e.type="text/css",e.innerHTML=m,W.head.appendChild(e)}const b=W.importNode(f,!0);W.body.appendChild(b);const x=createDiv();x.setAttribute("class","excalidraw-md-footer"),W.body.appendChild(x),W.body.querySelectorAll("*").forEach((e=>{const A=e.style,t=window.getComputedStyle(e);let i="";for(const e in A)A.hasOwnProperty(e)&&(i+=`${e}: ${t[e]};`);e.setAttribute("style",i)}));const Q=(new XMLSerializer).serializeToString(b),I=(new XMLSerializer).serializeToString(x);document.body.removeChild(O);const y=new DOMParser,v=y.parseFromString(k(Q,I),"image/svg+xml").firstElementChild,D=createDiv();D.appendChild(v),document.body.appendChild(D);const M=v.querySelector(".excalidraw-md-footer").scrollHeight,F=v.querySelector(".excalidraw-md-host").scrollHeight+M,U=F<=t.height?F:t.height;document.body.removeChild(D),B=` width="${t.width}px" height="${U}px"`,E=` width="${t.width}px" height="${U}px"`,f.style.height=U-M+"px",f.style.overflow="hidden";const R=f.querySelectorAll("img:not([src^='data:image/svg+xml'])");R.length>0&&(r=!0),r&&this.isDark&&R.forEach((e=>{e instanceof HTMLImageElement&&(e.style.filter=THEME_FILTER)}));const T=k((new XMLSerializer).serializeToString(f),'<div class="excalidraw-md-footer"></div>',m);return e.ea.mostRecentMarkdownSVG=y.parseFromString(T,"image/svg+xml").firstElementChild,{dataURL:svgToBase64(T),hasSVGwithBitmap:r}}}const getSVGData=async(e,A,t)=>{const i=replaceSVGColors(await e.vault.read(A),t);return svgToBase64(i)},generateIdFromFile=async e=>{let A;try{const t=await window.crypto.subtle.digest("SHA-1",e);A=Array.from(new Uint8Array(t)).map((e=>e.toString(16).padStart(2,"0"))).join("")}catch(e){errorlog({where:"EmbeddedFileLoader.generateIdFromFile",error:e}),A=fileid()}return A},getEA=e=>{try{return window.ExcalidrawAutomate.getAPI(e)}catch(e){return console.log({message:"Excalidraw not available",fn:getEA}),null}};class Prompt extends obsidian_module.Modal{constructor(e,A,t,i,n){super(e),this.prompt_text=A,this.default_value=t,this.placeholder=i,this.prompt_desc=n}onOpen(){this.titleEl.setText(this.prompt_text),this.createForm()}onClose(){this.contentEl.empty()}createForm(){var e;let A=this.contentEl.createDiv();A.addClass("excalidraw-prompt-div"),this.prompt_desc&&(A=A.createDiv(),A.style.width="100%",A.createEl("p").innerHTML=this.prompt_desc);const t=A.createEl("form");t.addClass("excalidraw-prompt-form"),t.type="submit",t.onsubmit=e=>{e.preventDefault(),this.resolve(this.promptEl.value),this.close()},this.promptEl=t.createEl("input"),this.promptEl.type="text",this.promptEl.placeholder=this.placeholder,this.promptEl.value=null!==(e=this.default_value)&&void 0!==e?e:"",this.promptEl.addClass("excalidraw-prompt-input"),this.promptEl.select()}async openAndGetValue(e){this.resolve=e,this.open()}}class GenericInputPrompt extends obsidian_module.Modal{static Prompt(e,A,t,i,n,s,a,o,r,l,c){return new GenericInputPrompt(e,A,t,i,n,s,a,o,r,l,c).waitForClose}constructor(e,A,t,i,n,s,a,o,r,l,c){super(t),this.header=i,this.didSubmit=!1,this.lines=1,this.displayEditorButtons=!1,this.selectionStart=0,this.selectionEnd=0,this.selectionUpdateTimer=0,this.blockPointerInputOutsideModal=!1,this.linkBtnClickCallback=()=>{this.view.ownerWindow.clearTimeout(this.selectionUpdateTimer),this.plugin.insertLinkDialog.start(this.view.file.path,(e=>{const A=this.inputComponent.inputEl.value;this.selectionStart>0&&" "!==A.slice(this.selectionStart-1,this.selectionStart)&&(e=" "+e),this.selectionStart<A.length&&" "!==A.slice(this.selectionStart,this.selectionStart+1)&&(e+=" ");const t=this.inputComponent.inputEl.value.slice(0,this.selectionStart)+e+this.inputComponent.inputEl.value.slice(this.selectionStart);this.inputComponent.inputEl.value=t,this.input=this.inputComponent.inputEl.value,this.inputComponent.inputEl.focus(),this.selectionStart=this.selectionStart+e.length,this.selectionEnd=this.selectionStart+e.length,this.inputComponent.inputEl.setSelectionRange(this.selectionStart,this.selectionStart)}))},this.insertStringBtnClickCallback=e=>{this.view.ownerWindow.clearTimeout(this.selectionUpdateTimer);const A=this.inputComponent.inputEl.value.slice(0,this.selectionStart)+e+this.inputComponent.inputEl.value.slice(this.selectionStart);this.inputComponent.inputEl.value=A,this.input=this.inputComponent.inputEl.value,this.inputComponent.inputEl.focus(),this.selectionStart=this.selectionStart+1,this.selectionEnd=this.selectionStart,this.inputComponent.inputEl.setSelectionRange(this.selectionStart,this.selectionEnd)},this.delBtnClickCallback=()=>{if(this.view.ownerWindow.clearTimeout(this.selectionUpdateTimer),0===this.input.length)return;const e=this.selectionEnd>this.selectionStart?this.selectionStart:this.selectionStart>0?this.selectionStart-1:0,A=this.selectionEnd,t=this.inputComponent.inputEl.value.slice(0,e)+this.inputComponent.inputEl.value.slice(A);this.inputComponent.inputEl.value=t,this.input=this.inputComponent.inputEl.value,this.inputComponent.inputEl.focus(),this.selectionStart=e,this.selectionEnd=e,this.inputComponent.inputEl.setSelectionRange(e,e)},this.uppercaseBtnClickCallback=()=>{if(this.view.ownerWindow.clearTimeout(this.selectionUpdateTimer),this.selectionEnd===this.selectionStart)return;const e=this.inputComponent.inputEl.value.slice(0,this.selectionStart)+this.inputComponent.inputEl.value.slice(this.selectionStart,this.selectionEnd).toUpperCase()+this.inputComponent.inputEl.value.slice(this.selectionEnd);this.inputComponent.inputEl.value=e,this.input=this.inputComponent.inputEl.value,this.inputComponent.inputEl.focus(),this.inputComponent.inputEl.setSelectionRange(this.selectionStart,this.selectionEnd)},this.submitClickCallback=()=>this.submit(),this.cancelClickCallback=()=>this.cancel(),this.keyDownCallback=e=>{("Enter"===e.key&&1===this.lines||isCTRL(e)&&"Enter"===e.key)&&(e.preventDefault(),this.submit()),this.displayEditorButtons&&"k"===e.key&&isCTRL(e)&&(e.preventDefault(),this.linkBtnClickCallback())},this.view=e,this.plugin=A,this.placeholder=n,this.input=s,this.buttons=a,this.lines=null!=o?o:1,this.displayEditorButtons=this.lines>1&&null!=r&&r,this.customComponents=l,this.blockPointerInputOutsideModal=null!=c&&c,this.waitForClose=new Promise(((e,A)=>{this.resolvePromise=e,this.rejectPromise=A})),this.display(),this.inputComponent.inputEl.focus(),this.open()}display(){var e;this.contentEl.empty(),this.blockPointerInputOutsideModal&&(this.bgEl.style.pointerEvents=this.blockPointerInputOutsideModal?"none":"auto"),this.titleEl.textContent=this.header;const A=this.contentEl.createDiv();this.inputComponent=this.createInputField(A,this.placeholder,this.input),null===(e=this.customComponents)||void 0===e||e.call(this,A),this.createButtonBar(A)}createInputField(e,A,t){const i=new obsidian_module.TextAreaComponent(e);i.inputEl.style.width="100%",i.inputEl.style.height=2*this.lines+"em",1===this.lines&&(i.inputEl.style.resize="none",i.inputEl.style.overflow="hidden"),i.setPlaceholder(null!=A?A:"").setValue(null!=t?t:"").onChange((e=>this.input=e));const n=()=>{this.selectionUpdateTimer=this.view.ownerWindow.setTimeout((()=>{this.selectionStart=this.inputComponent.inputEl.selectionStart,this.selectionEnd=this.inputComponent.inputEl.selectionEnd}),30)};return i.inputEl.addEventListener("keydown",this.keyDownCallback),i.inputEl.addEventListener("keyup",n),i.inputEl.addEventListener("pointerup",n),i.inputEl.addEventListener("touchend",n),i.inputEl.addEventListener("input",n),i.inputEl.addEventListener("paste",n),i.inputEl.addEventListener("cut",n),i.inputEl.addEventListener("select",n),i.inputEl.addEventListener("selectionchange",n),i}createButton(e,A,t,i="",n="5px"){const s=new obsidian_module.ButtonComponent(e);return s.buttonEl.style.padding="0.5em",s.buttonEl.style.marginLeft=n,s.setTooltip(i),s.setButtonText(A).onClick(t),s}createButtonBar(e){const A=e.createDiv();A.style.display="flex",A.style.justifyContent="space-between",A.style.marginTop="1rem";const t=A.createDiv(),i=A.createDiv();if(this.buttons&&this.buttons.length>0){let e=null;for(const A of this.buttons){const t=new obsidian_module.ButtonComponent(i);t.buttonEl.style.marginLeft="5px",A.tooltip&&t.setTooltip(A.tooltip),t.setButtonText(A.caption).onClick((e=>{const t=A.action(this.input);t&&(this.input=t),this.submit()})),e=null!=e?e:t}e&&(e.setCta(),e.buttonEl.style.marginRight="0")}else this.createButton(i,"✅",this.submitClickCallback).setCta().buttonEl.style.marginRight="0";this.createButton(i,"❌",this.cancelClickCallback,t$d("PROMPT_BUTTON_CANCEL")),this.displayEditorButtons&&(this.createButton(t,"⏎",(()=>this.insertStringBtnClickCallback("\n")),t$d("PROMPT_BUTTON_INSERT_LINE"),"0"),this.createButton(t,"⌫",this.delBtnClickCallback,"Delete"),this.createButton(t,"⎵",(()=>this.insertStringBtnClickCallback(" ")),t$d("PROMPT_BUTTON_INSERT_SPACE")),this.view&&this.createButton(t,"🔗",this.linkBtnClickCallback,t$d("PROMPT_BUTTON_INSERT_LINK")),this.createButton(t,"🔠",this.uppercaseBtnClickCallback,t$d("PROMPT_BUTTON_UPPERCASE")))}submit(){this.didSubmit=!0,this.close()}cancel(){this.close()}resolveInput(){this.didSubmit?this.resolvePromise(this.input):this.rejectPromise("No input given.")}removeInputListener(){var e,A;null===(A=null===(e=this.inputComponent)||void 0===e?void 0:e.inputEl)||void 0===A||A.removeEventListener("keydown",this.keyDownCallback)}onOpen(){super.onOpen(),this.inputComponent.inputEl.focus(),this.inputComponent.inputEl.select()}onClose(){super.onClose(),this.resolveInput(),this.removeInputListener()}}class GenericSuggester extends obsidian_module.FuzzySuggestModal{static Suggest(e,A,t,i,n){return new GenericSuggester(e,A,t,i,n).promise}constructor(e,A,t,i,n){var s;super(e),this.displayItems=A,this.items=t,this.hint=i,this.instructions=n,this.limit=20,this.setPlaceholder(null!==(s=this.hint)&&void 0!==s?s:""),n&&this.setInstructions(this.instructions),this.promise=new Promise(((e,A)=>{this.resolvePromise=e,this.rejectPromise=A})),this.open()}getItemText(e){return this.displayItems[this.items.indexOf(e)]}getItems(){return this.items}selectSuggestion(e,A){this.resolved=!0,super.selectSuggestion(e,A)}onChooseItem(e){this.resolved=!0,this.resolvePromise(e)}onClose(){super.onClose(),this.resolved||this.rejectPromise(this.inputEl.value)}}class NewFileActions extends obsidian_module.Modal{constructor({plugin:e,path:A,keys:t,view:i,openNewFile:n=!0,parentFile:s,sourceElement:a}){super(e.app),this.newFile=null,this.plugin=e,this.path=A,this.keys=t,this.view=i,this.openNewFile=n,this.sourceElement=a,s||(this.parentFile=i.file),this.waitForClose=new Promise(((e,A)=>{this.resolvePromise=e,this.rejectPromise=A}))}onOpen(){this.createForm()}openFile(e){this.newFile=e,e&&this.openNewFile&&getLeaf(this.plugin,this.view.leaf,this.keys).openFile(e,{active:!0})}onClose(){super.onClose(),this.resolvePromise(this.newFile)}createForm(){this.titleEl.setText(t$d("PROMPT_TITLE_NEW_FILE")),this.contentEl.createDiv({cls:"excalidraw-prompt-center",text:t$d("PROMPT_FILE_DOES_NOT_EXIST")}),this.contentEl.createDiv({cls:"excalidraw-prompt-center filepath",text:this.path}),this.contentEl.createDiv({cls:"excalidraw-prompt-center"},(e=>{e.style.textAlign="right";const A=()=>this.path&&""!==this.path?!!this.parentFile||(new obsidian_module.Notice(t$d("PROMPT_ERROR_DRAWING_CLOSED")),!1):(new obsidian_module.Notice(t$d("PROMPT_ERROR_NO_FILENAME")),!1),t=async e=>{if(!this.path.includes("/")){const e=new RegExp(`${escapeRegExp(this.parentFile.name)}$`,"g");this.path=this.parentFile.path.replace(e,this.path)}return this.path.match(/\.md$/)||(this.path=`${this.path}.md`),checkAndCreateFolder(splitFolderAndFilename(this.path).folderpath),await this.app.vault.create(this.path,e)};this.sourceElement&&(e.createEl("button",{text:t$d("PROMPT_BUTTON_EMBED_MARKDOWN"),attr:{"aria-label":t$d("PROMPT_BUTTON_EMBED_MARKDOWN_ARIA")}}).onclick=async()=>{if(!A)return;const e=await t("");if(e){const A=getEA(this.view);A.copyViewElementsToEAforEditing([this.sourceElement]),A.getElement(this.sourceElement.id).isDeleted=!0,A.addEmbeddable(this.sourceElement.x,this.sourceElement.y,500,500,void 0,e),A.addElementsToView()}this.close()}),e.createEl("button",{text:t$d("PROMPT_BUTTON_CREATE_MARKDOWN"),attr:{"aria-label":t$d("PROMPT_BUTTON_CREATE_MARKDOWN_ARIA")}}).onclick=async()=>{if(!A)return;const e=await t("");this.openFile(e),this.close()},e.createEl("button",{text:t$d("PROMPT_BUTTON_CREATE_EXCALIDRAW"),attr:{"aria-label":t$d("PROMPT_BUTTON_CREATE_EXCALIDRAW_ARIA")}}).onclick=async()=>{if(!A)return;const e=await t(await this.plugin.getBlankDrawing());await sleep$1(200),this.openFile(e),this.close()},e.createEl("button",{text:t$d("PROMPT_BUTTON_NEVERMIND")}).onclick=()=>{this.close()}}))}}class ConfirmationPrompt extends obsidian_module.Modal{constructor(e,A){super(e.app),this.plugin=e,this.didConfirm=!1,this.cancelClickCallback=()=>{this.didConfirm=!1,this.close()},this.confirmClickCallback=()=>{this.didConfirm=!0,this.close()},this.message=A,this.waitForClose=new Promise(((e,A)=>{this.resolvePromise=e,this.rejectPromise=A})),this.display(),this.open()}display(){this.contentEl.empty(),this.titleEl.textContent=t$d("PROMPT_TITLE_CONFIRMATION");const e=this.contentEl.createDiv();e.style.marginBottom="1rem",e.innerHTML=this.message;const A=this.contentEl.createDiv();A.style.display="flex",A.style.justifyContent="flex-end";const t=this.createButton(A,t$d("PROMPT_BUTTON_CANCEL"),this.cancelClickCallback);t.buttonEl.style.marginRight="0.5rem",this.createButton(A,t$d("PROMPT_BUTTON_OK"),this.confirmClickCallback).buttonEl.style.marginRight="0",t.buttonEl.focus()}createButton(e,A,t){const i=new obsidian_module.ButtonComponent(e);return i.setButtonText(A).onClick(t),i}onOpen(){var e;super.onOpen(),null===(e=this.contentEl.querySelector("button"))||void 0===e||e.focus()}onClose(){super.onClose(),this.didConfirm?this.resolvePromise(!0):this.resolvePromise(!1)}}var AutoexportPreference;!function(e){e[e.none=0]="none",e[e.both=1]="both",e[e.png=2]="png",e[e.svg=3]="svg",e[e.inherit=4]="inherit"}(AutoexportPreference||(AutoexportPreference={}));const REGEX_LINK={ + ************************************************************************* + * + * mhchemParser.ts + * 4.2.1 + * + * Parser for the \ce command and \pu command for MathJax and Co. + * + * mhchem's \ce is a tool for writing beautiful chemical equations easily. + * mhchem's \pu is a tool for writing physical units easily. + * + * ---------------------------------------------------------------------- + * + * Copyright (c) 2015-2023 Martin Hensel + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ---------------------------------------------------------------------- + * + * https://github.com/mhchem/mhchemParser + * + */ +Object.defineProperty(mhchemParser$1,"__esModule",{value:!0}),mhchemParser$1.mhchemParser=void 0;var mhchemParser=function(){function e(){}return e.toTex=function(e,t){return _mhchemTexify.go(_mhchemParser.go(e,t),"tex"!==t)},e}();function _mhchemCreateTransitions(e){var t,n,r={};for(t in e)for(n in e[t]){var i=n.split("|");e[t][n].stateArray=i;for(var o=0;o<i.length;o++)r[i[o]]=[]}for(t in e)for(n in e[t])for(i=e[t][n].stateArray||[],o=0;o<i.length;o++){var a=e[t][n];a.action_=[].concat(a.action_);for(var s=0;s<a.action_.length;s++)"string"==typeof a.action_[s]&&(a.action_[s]={type_:a.action_[s]});for(var l=t.split("|"),c=0;c<l.length;c++)if("*"===i[o]){var T=void 0;for(T in r)r[T].push({pattern:l[c],task:a})}else r[i[o]].push({pattern:l[c],task:a})}return r}mhchemParser$1.mhchemParser=mhchemParser;var _mhchemParser={go:function(e,t){if(!e)return[];void 0===t&&(t="ce");var n,r="0",i={parenthesisLevel:0};e=(e=(e=e.replace(/\n/g," ")).replace(/[\u2212\u2013\u2014\u2010]/g,"-")).replace(/[\u2026]/g,"...");for(var o=10,a=[];;){n!==e?(o=10,n=e):o--;var s=_mhchemParser.stateMachines[t],l=s.transitions[r]||s.transitions["*"];e:for(var c=0;c<l.length;c++){var T=_mhchemParser.patterns.match_(l[c].pattern,e);if(T){for(var Q=l[c].task,d=0;d<Q.action_.length;d++){var u=void 0;if(s.actions[Q.action_[d].type_])u=s.actions[Q.action_[d].type_](i,T.match_,Q.action_[d].option);else{if(!_mhchemParser.actions[Q.action_[d].type_])throw["MhchemBugA","mhchem bug A. Please report. ("+Q.action_[d].type_+")"];u=_mhchemParser.actions[Q.action_[d].type_](i,T.match_,Q.action_[d].option)}_mhchemParser.concatArray(a,u)}if(r=Q.nextState||r,!(e.length>0))return a;if(Q.revisit||(e=T.remainder),!Q.toContinue)break e}}if(o<=0)throw["MhchemBugU","mhchem bug U. Please report."]}},concatArray:function(e,t){if(t)if(Array.isArray(t))for(var n=0;n<t.length;n++)e.push(t[n]);else e.push(t)},patterns:{patterns:{empty:/^$/,else:/^./,else2:/^./,space:/^\s/,"space A":/^\s(?=[A-Z\\$])/,space$:/^\s$/,"a-z":/^[a-z]/,x:/^x/,x$:/^x$/,i$:/^i$/,letters:/^(?:[a-zA-Z\u03B1-\u03C9\u0391-\u03A9?@]|(?:\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))))+/,"\\greek":/^\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))/,"one lowercase latin letter $":/^(?:([a-z])(?:$|[^a-zA-Z]))$/,"$one lowercase latin letter$ $":/^\$(?:([a-z])(?:$|[^a-zA-Z]))\$$/,"one lowercase greek letter $":/^(?:\$?[\u03B1-\u03C9]\$?|\$?\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)\s*\$?)(?:\s+|\{\}|(?![a-zA-Z]))$/,digits:/^[0-9]+/,"-9.,9":/^[+\-]?(?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))/,"-9.,9 no missing 0":/^[+\-]?[0-9]+(?:[.,][0-9]+)?/,"(-)(9.,9)(e)(99)":function(e){var t=e.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))?(\((?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))\))?(?:(?:([eE])|\s*(\*|x|\\times|\u00D7)\s*10\^)([+\-]?[0-9]+|\{[+\-]?[0-9]+\}))?/);return t&&t[0]?{match_:t.slice(1),remainder:e.substr(t[0].length)}:null},"(-)(9)^(-9)":/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+)?)\^([+\-]?[0-9]+|\{[+\-]?[0-9]+\})/,"state of aggregation $":function(e){var t=_mhchemParser.patterns.findObserveGroups(e,"",/^\([a-z]{1,3}(?=[\),])/,")","");if(t&&t.remainder.match(/^($|[\s,;\)\]\}])/))return t;var n=e.match(/^(?:\((?:\\ca\s?)?\$[amothc]\$\))/);return n?{match_:n[0],remainder:e.substr(n[0].length)}:null},"_{(state of aggregation)}$":/^_\{(\([a-z]{1,3}\))\}/,"{[(":/^(?:\\\{|\[|\()/,")]}":/^(?:\)|\]|\\\})/,", ":/^[,;]\s*/,",":/^[,;]/,".":/^[.]/,". __* ":/^([.\u22C5\u00B7\u2022]|[*])\s*/,"...":/^\.\.\.(?=$|[^.])/,"^{(...)}":function(e){return _mhchemParser.patterns.findObserveGroups(e,"^{","","","}")},"^($...$)":function(e){return _mhchemParser.patterns.findObserveGroups(e,"^","$","$","")},"^a":/^\^([0-9]+|[^\\_])/,"^\\x{}{}":function(e){return _mhchemParser.patterns.findObserveGroups(e,"^",/^\\[a-zA-Z]+\{/,"}","","","{","}","",!0)},"^\\x{}":function(e){return _mhchemParser.patterns.findObserveGroups(e,"^",/^\\[a-zA-Z]+\{/,"}","")},"^\\x":/^\^(\\[a-zA-Z]+)\s*/,"^(-1)":/^\^(-?\d+)/,"'":/^'/,"_{(...)}":function(e){return _mhchemParser.patterns.findObserveGroups(e,"_{","","","}")},"_($...$)":function(e){return _mhchemParser.patterns.findObserveGroups(e,"_","$","$","")},_9:/^_([+\-]?[0-9]+|[^\\])/,"_\\x{}{}":function(e){return _mhchemParser.patterns.findObserveGroups(e,"_",/^\\[a-zA-Z]+\{/,"}","","","{","}","",!0)},"_\\x{}":function(e){return _mhchemParser.patterns.findObserveGroups(e,"_",/^\\[a-zA-Z]+\{/,"}","")},"_\\x":/^_(\\[a-zA-Z]+)\s*/,"^_":/^(?:\^(?=_)|\_(?=\^)|[\^_]$)/,"{}^":/^\{\}(?=\^)/,"{}":/^\{\}/,"{...}":function(e){return _mhchemParser.patterns.findObserveGroups(e,"","{","}","")},"{(...)}":function(e){return _mhchemParser.patterns.findObserveGroups(e,"{","","","}")},"$...$":function(e){return _mhchemParser.patterns.findObserveGroups(e,"","$","$","")},"${(...)}$__$(...)$":function(e){return _mhchemParser.patterns.findObserveGroups(e,"${","","","}$")||_mhchemParser.patterns.findObserveGroups(e,"$","","","$")},"=<>":/^[=<>]/,"#":/^[#\u2261]/,"+":/^\+/,"-$":/^-(?=[\s_},;\]/]|$|\([a-z]+\))/,"-9":/^-(?=[0-9])/,"- orbital overlap":/^-(?=(?:[spd]|sp)(?:$|[\s,;\)\]\}]))/,"-":/^-/,"pm-operator":/^(?:\\pm|\$\\pm\$|\+-|\+\/-)/,operator:/^(?:\+|(?:[\-=<>]|<<|>>|\\approx|\$\\approx\$)(?=\s|$|-?[0-9]))/,arrowUpDown:/^(?:v|\(v\)|\^|\(\^\))(?=$|[\s,;\)\]\}])/,"\\bond{(...)}":function(e){return _mhchemParser.patterns.findObserveGroups(e,"\\bond{","","","}")},"->":/^(?:<->|<-->|->|<-|<=>>|<<=>|<=>|[\u2192\u27F6\u21CC])/,CMT:/^[CMT](?=\[)/,"[(...)]":function(e){return _mhchemParser.patterns.findObserveGroups(e,"[","","","]")},"1st-level escape":/^(&|\\\\|\\hline)\s*/,"\\,":/^(?:\\[,\ ;:])/,"\\x{}{}":function(e){return _mhchemParser.patterns.findObserveGroups(e,"",/^\\[a-zA-Z]+\{/,"}","","","{","}","",!0)},"\\x{}":function(e){return _mhchemParser.patterns.findObserveGroups(e,"",/^\\[a-zA-Z]+\{/,"}","")},"\\ca":/^\\ca(?:\s+|(?![a-zA-Z]))/,"\\x":/^(?:\\[a-zA-Z]+\s*|\\[_&{}%])/,orbital:/^(?:[0-9]{1,2}[spdfgh]|[0-9]{0,2}sp)(?=$|[^a-zA-Z])/,others:/^[\/~|]/,"\\frac{(...)}":function(e){return _mhchemParser.patterns.findObserveGroups(e,"\\frac{","","","}","{","","","}")},"\\overset{(...)}":function(e){return _mhchemParser.patterns.findObserveGroups(e,"\\overset{","","","}","{","","","}")},"\\underset{(...)}":function(e){return _mhchemParser.patterns.findObserveGroups(e,"\\underset{","","","}","{","","","}")},"\\underbrace{(...)}":function(e){return _mhchemParser.patterns.findObserveGroups(e,"\\underbrace{","","","}_","{","","","}")},"\\color{(...)}":function(e){return _mhchemParser.patterns.findObserveGroups(e,"\\color{","","","}")},"\\color{(...)}{(...)}":function(e){return _mhchemParser.patterns.findObserveGroups(e,"\\color{","","","}","{","","","}")||_mhchemParser.patterns.findObserveGroups(e,"\\color","\\","",/^(?=\{)/,"{","","","}")},"\\ce{(...)}":function(e){return _mhchemParser.patterns.findObserveGroups(e,"\\ce{","","","}")},"\\pu{(...)}":function(e){return _mhchemParser.patterns.findObserveGroups(e,"\\pu{","","","}")},oxidation$:/^(?:[+-][IVX]+|(?:\\pm|\$\\pm\$|\+-|\+\/-)\s*0)$/,"d-oxidation$":/^(?:[+-]?[IVX]+|(?:\\pm|\$\\pm\$|\+-|\+\/-)\s*0)$/,"1/2$":/^[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+(?:\$[a-z]\$|[a-z])?$/,amount:function(e){var t;if(t=e.match(/^(?:(?:(?:\([+\-]?[0-9]+\/[0-9]+\)|[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+|[+\-]?[0-9]+[.,][0-9]+|[+\-]?\.[0-9]+|[+\-]?[0-9]+)(?:[a-z](?=\s*[A-Z]))?)|[+\-]?[a-z](?=\s*[A-Z])|\+(?!\s))/))return{match_:t[0],remainder:e.substr(t[0].length)};var n=_mhchemParser.patterns.findObserveGroups(e,"","$","$","");return n&&(t=n.match_.match(/^\$(?:\(?[+\-]?(?:[0-9]*[a-z]?[+\-])?[0-9]*[a-z](?:[+\-][0-9]*[a-z]?)?\)?|\+|-)\$$/))?{match_:t[0],remainder:e.substr(t[0].length)}:null},amount2:function(e){return this.amount(e)},"(KV letters),":/^(?:[A-Z][a-z]{0,2}|i)(?=,)/,formula$:function(e){if(e.match(/^\([a-z]+\)$/))return null;var t=e.match(/^(?:[a-z]|(?:[0-9\ \+\-\,\.\(\)]+[a-z])+[0-9\ \+\-\,\.\(\)]*|(?:[a-z][0-9\ \+\-\,\.\(\)]+)+[a-z]?)$/);return t?{match_:t[0],remainder:e.substr(t[0].length)}:null},uprightEntities:/^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])/,"/":/^\s*(\/)\s*/,"//":/^\s*(\/\/)\s*/,"*":/^\s*[*.]\s*/},findObserveGroups:function(e,t,n,r,i,o,a,s,l,c){var T=function(e,t){if("string"==typeof t)return 0!==e.indexOf(t)?null:t;var n=e.match(t);return n?n[0]:null},Q=T(e,t);if(null===Q)return null;if(e=e.substr(Q.length),null===(Q=T(e,n)))return null;var d=function(e,t,n){for(var r=0;t<e.length;){var i=e.charAt(t),o=T(e.substr(t),n);if(null!==o&&0===r)return{endMatchBegin:t,endMatchEnd:t+o.length};if("{"===i)r++;else if("}"===i){if(0===r)throw["ExtraCloseMissingOpen","Extra close brace or missing open brace"];r--}t++}return null}(e,Q.length,r||i);if(null===d)return null;var u=e.substring(0,r?d.endMatchEnd:d.endMatchBegin);if(o||a){var p=this.findObserveGroups(e.substr(d.endMatchEnd),o,a,s,l);if(null===p)return null;var h=[u,p.match_];return{match_:c?h.join(""):h,remainder:p.remainder}}return{match_:u,remainder:e.substr(d.endMatchEnd)}},match_:function(e,t){var n=_mhchemParser.patterns.patterns[e];if(void 0===n)throw["MhchemBugP","mhchem bug P. Please report. ("+e+")"];if("function"==typeof n)return _mhchemParser.patterns.patterns[e](t);var r=t.match(n);return r?r.length>2?{match_:r.slice(1),remainder:t.substr(r[0].length)}:{match_:r[1]||r[0],remainder:t.substr(r[0].length)}:null}},actions:{"a=":function(e,t){e.a=(e.a||"")+t},"b=":function(e,t){e.b=(e.b||"")+t},"p=":function(e,t){e.p=(e.p||"")+t},"o=":function(e,t){e.o=(e.o||"")+t},"o=+p1":function(e,t,n){e.o=(e.o||"")+n},"q=":function(e,t){e.q=(e.q||"")+t},"d=":function(e,t){e.d=(e.d||"")+t},"rm=":function(e,t){e.rm=(e.rm||"")+t},"text=":function(e,t){e.text_=(e.text_||"")+t},insert:function(e,t,n){return{type_:n}},"insert+p1":function(e,t,n){return{type_:n,p1:t}},"insert+p1+p2":function(e,t,n){return{type_:n,p1:t[0],p2:t[1]}},copy:function(e,t){return t},write:function(e,t,n){return n},rm:function(e,t){return{type_:"rm",p1:t}},text:function(e,t){return _mhchemParser.go(t,"text")},"tex-math":function(e,t){return _mhchemParser.go(t,"tex-math")},"tex-math tight":function(e,t){return _mhchemParser.go(t,"tex-math tight")},bond:function(e,t,n){return{type_:"bond",kind_:n||t}},"color0-output":function(e,t){return{type_:"color0",color:t}},ce:function(e,t){return _mhchemParser.go(t,"ce")},pu:function(e,t){return _mhchemParser.go(t,"pu")},"1/2":function(e,t){var n=[];t.match(/^[+\-]/)&&(n.push(t.substr(0,1)),t=t.substr(1));var r=t.match(/^([0-9]+|\$[a-z]\$|[a-z])\/([0-9]+)(\$[a-z]\$|[a-z])?$/);return r[1]=r[1].replace(/\$/g,""),n.push({type_:"frac",p1:r[1],p2:r[2]}),r[3]&&(r[3]=r[3].replace(/\$/g,""),n.push({type_:"tex-math",p1:r[3]})),n},"9,9":function(e,t){return _mhchemParser.go(t,"9,9")}},stateMachines:{tex:{transitions:_mhchemCreateTransitions({empty:{0:{action_:"copy"}},"\\ce{(...)}":{0:{action_:[{type_:"write",option:"{"},"ce",{type_:"write",option:"}"}]}},"\\pu{(...)}":{0:{action_:[{type_:"write",option:"{"},"pu",{type_:"write",option:"}"}]}},else:{0:{action_:"copy"}}}),actions:{}},ce:{transitions:_mhchemCreateTransitions({empty:{"*":{action_:"output"}},else:{"0|1|2":{action_:"beginsWithBond=false",revisit:!0,toContinue:!0}},oxidation$:{0:{action_:"oxidation-output"}},CMT:{r:{action_:"rdt=",nextState:"rt"},rd:{action_:"rqt=",nextState:"rdt"}},arrowUpDown:{"0|1|2|as":{action_:["sb=false","output","operator"],nextState:"1"}},uprightEntities:{"0|1|2":{action_:["o=","output"],nextState:"1"}},orbital:{"0|1|2|3":{action_:"o=",nextState:"o"}},"->":{"0|1|2|3":{action_:"r=",nextState:"r"},"a|as":{action_:["output","r="],nextState:"r"},"*":{action_:["output","r="],nextState:"r"}},"+":{o:{action_:"d= kv",nextState:"d"},"d|D":{action_:"d=",nextState:"d"},q:{action_:"d=",nextState:"qd"},"qd|qD":{action_:"d=",nextState:"qd"},dq:{action_:["output","d="],nextState:"d"},3:{action_:["sb=false","output","operator"],nextState:"0"}},amount:{"0|2":{action_:"a=",nextState:"a"}},"pm-operator":{"0|1|2|a|as":{action_:["sb=false","output",{type_:"operator",option:"\\pm"}],nextState:"0"}},operator:{"0|1|2|a|as":{action_:["sb=false","output","operator"],nextState:"0"}},"-$":{"o|q":{action_:["charge or bond","output"],nextState:"qd"},d:{action_:"d=",nextState:"d"},D:{action_:["output",{type_:"bond",option:"-"}],nextState:"3"},q:{action_:"d=",nextState:"qd"},qd:{action_:"d=",nextState:"qd"},"qD|dq":{action_:["output",{type_:"bond",option:"-"}],nextState:"3"}},"-9":{"3|o":{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"3"}},"- orbital overlap":{o:{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"2"},d:{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"2"}},"-":{"0|1|2":{action_:[{type_:"output",option:1},"beginsWithBond=true",{type_:"bond",option:"-"}],nextState:"3"},3:{action_:{type_:"bond",option:"-"}},a:{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"2"},as:{action_:[{type_:"output",option:2},{type_:"bond",option:"-"}],nextState:"3"},b:{action_:"b="},o:{action_:{type_:"- after o/d",option:!1},nextState:"2"},q:{action_:{type_:"- after o/d",option:!1},nextState:"2"},"d|qd|dq":{action_:{type_:"- after o/d",option:!0},nextState:"2"},"D|qD|p":{action_:["output",{type_:"bond",option:"-"}],nextState:"3"}},amount2:{"1|3":{action_:"a=",nextState:"a"}},letters:{"0|1|2|3|a|as|b|p|bp|o":{action_:"o=",nextState:"o"},"q|dq":{action_:["output","o="],nextState:"o"},"d|D|qd|qD":{action_:"o after d",nextState:"o"}},digits:{o:{action_:"q=",nextState:"q"},"d|D":{action_:"q=",nextState:"dq"},q:{action_:["output","o="],nextState:"o"},a:{action_:"o=",nextState:"o"}},"space A":{"b|p|bp":{action_:[]}},space:{a:{action_:[],nextState:"as"},0:{action_:"sb=false"},"1|2":{action_:"sb=true"},"r|rt|rd|rdt|rdq":{action_:"output",nextState:"0"},"*":{action_:["output","sb=true"],nextState:"1"}},"1st-level escape":{"1|2":{action_:["output",{type_:"insert+p1",option:"1st-level escape"}]},"*":{action_:["output",{type_:"insert+p1",option:"1st-level escape"}],nextState:"0"}},"[(...)]":{"r|rt":{action_:"rd=",nextState:"rd"},"rd|rdt":{action_:"rq=",nextState:"rdq"}},"...":{"o|d|D|dq|qd|qD":{action_:["output",{type_:"bond",option:"..."}],nextState:"3"},"*":{action_:[{type_:"output",option:1},{type_:"insert",option:"ellipsis"}],nextState:"1"}},". __* ":{"*":{action_:["output",{type_:"insert",option:"addition compound"}],nextState:"1"}},"state of aggregation $":{"*":{action_:["output","state of aggregation"],nextState:"1"}},"{[(":{"a|as|o":{action_:["o=","output","parenthesisLevel++"],nextState:"2"},"0|1|2|3":{action_:["o=","output","parenthesisLevel++"],nextState:"2"},"*":{action_:["output","o=","output","parenthesisLevel++"],nextState:"2"}},")]}":{"0|1|2|3|b|p|bp|o":{action_:["o=","parenthesisLevel--"],nextState:"o"},"a|as|d|D|q|qd|qD|dq":{action_:["output","o=","parenthesisLevel--"],nextState:"o"}},", ":{"*":{action_:["output","comma"],nextState:"0"}},"^_":{"*":{action_:[]}},"^{(...)}|^($...$)":{"0|1|2|as":{action_:"b=",nextState:"b"},p:{action_:"b=",nextState:"bp"},"3|o":{action_:"d= kv",nextState:"D"},q:{action_:"d=",nextState:"qD"},"d|D|qd|qD|dq":{action_:["output","d="],nextState:"D"}},"^a|^\\x{}{}|^\\x{}|^\\x|'":{"0|1|2|as":{action_:"b=",nextState:"b"},p:{action_:"b=",nextState:"bp"},"3|o":{action_:"d= kv",nextState:"d"},q:{action_:"d=",nextState:"qd"},"d|qd|D|qD":{action_:"d="},dq:{action_:["output","d="],nextState:"d"}},"_{(state of aggregation)}$":{"d|D|q|qd|qD|dq":{action_:["output","q="],nextState:"q"}},"_{(...)}|_($...$)|_9|_\\x{}{}|_\\x{}|_\\x":{"0|1|2|as":{action_:"p=",nextState:"p"},b:{action_:"p=",nextState:"bp"},"3|o":{action_:"q=",nextState:"q"},"d|D":{action_:"q=",nextState:"dq"},"q|qd|qD|dq":{action_:["output","q="],nextState:"q"}},"=<>":{"0|1|2|3|a|as|o|q|d|D|qd|qD|dq":{action_:[{type_:"output",option:2},"bond"],nextState:"3"}},"#":{"0|1|2|3|a|as|o":{action_:[{type_:"output",option:2},{type_:"bond",option:"#"}],nextState:"3"}},"{}^":{"*":{action_:[{type_:"output",option:1},{type_:"insert",option:"tinySkip"}],nextState:"1"}},"{}":{"*":{action_:{type_:"output",option:1},nextState:"1"}},"{...}":{"0|1|2|3|a|as|b|p|bp":{action_:"o=",nextState:"o"},"o|d|D|q|qd|qD|dq":{action_:["output","o="],nextState:"o"}},"$...$":{a:{action_:"a="},"0|1|2|3|as|b|p|bp|o":{action_:"o=",nextState:"o"},"as|o":{action_:"o="},"q|d|D|qd|qD|dq":{action_:["output","o="],nextState:"o"}},"\\bond{(...)}":{"*":{action_:[{type_:"output",option:2},"bond"],nextState:"3"}},"\\frac{(...)}":{"*":{action_:[{type_:"output",option:1},"frac-output"],nextState:"3"}},"\\overset{(...)}":{"*":{action_:[{type_:"output",option:2},"overset-output"],nextState:"3"}},"\\underset{(...)}":{"*":{action_:[{type_:"output",option:2},"underset-output"],nextState:"3"}},"\\underbrace{(...)}":{"*":{action_:[{type_:"output",option:2},"underbrace-output"],nextState:"3"}},"\\color{(...)}{(...)}":{"*":{action_:[{type_:"output",option:2},"color-output"],nextState:"3"}},"\\color{(...)}":{"*":{action_:[{type_:"output",option:2},"color0-output"]}},"\\ce{(...)}":{"*":{action_:[{type_:"output",option:2},"ce"],nextState:"3"}},"\\,":{"*":{action_:[{type_:"output",option:1},"copy"],nextState:"1"}},"\\pu{(...)}":{"*":{action_:["output",{type_:"write",option:"{"},"pu",{type_:"write",option:"}"}],nextState:"3"}},"\\x{}{}|\\x{}|\\x":{"0|1|2|3|a|as|b|p|bp|o|c0":{action_:["o=","output"],nextState:"3"},"*":{action_:["output","o=","output"],nextState:"3"}},others:{"*":{action_:[{type_:"output",option:1},"copy"],nextState:"3"}},else2:{a:{action_:"a to o",nextState:"o",revisit:!0},as:{action_:["output","sb=true"],nextState:"1",revisit:!0},"r|rt|rd|rdt|rdq":{action_:["output"],nextState:"0",revisit:!0},"*":{action_:["output","copy"],nextState:"3"}}}),actions:{"o after d":function(e,t){var n;if((e.d||"").match(/^[1-9][0-9]*$/)){var r=e.d;e.d=void 0,(n=this.output(e)).push({type_:"tinySkip"}),e.b=r}else n=this.output(e);return _mhchemParser.actions["o="](e,t),n},"d= kv":function(e,t){e.d=t,e.dType="kv"},"charge or bond":function(e,t){if(e.beginsWithBond){var n=[];return _mhchemParser.concatArray(n,this.output(e)),_mhchemParser.concatArray(n,_mhchemParser.actions.bond(e,t,"-")),n}e.d=t},"- after o/d":function(e,t,n){var r=_mhchemParser.patterns.match_("orbital",e.o||""),i=_mhchemParser.patterns.match_("one lowercase greek letter $",e.o||""),o=_mhchemParser.patterns.match_("one lowercase latin letter $",e.o||""),a=_mhchemParser.patterns.match_("$one lowercase latin letter$ $",e.o||""),s="-"===t&&(r&&""===r.remainder||i||o||a);!s||e.a||e.b||e.p||e.d||e.q||r||!o||(e.o="$"+e.o+"$");var l=[];return s?(_mhchemParser.concatArray(l,this.output(e)),l.push({type_:"hyphen"})):(r=_mhchemParser.patterns.match_("digits",e.d||""),n&&r&&""===r.remainder?(_mhchemParser.concatArray(l,_mhchemParser.actions["d="](e,t)),_mhchemParser.concatArray(l,this.output(e))):(_mhchemParser.concatArray(l,this.output(e)),_mhchemParser.concatArray(l,_mhchemParser.actions.bond(e,t,"-")))),l},"a to o":function(e){e.o=e.a,e.a=void 0},"sb=true":function(e){e.sb=!0},"sb=false":function(e){e.sb=!1},"beginsWithBond=true":function(e){e.beginsWithBond=!0},"beginsWithBond=false":function(e){e.beginsWithBond=!1},"parenthesisLevel++":function(e){e.parenthesisLevel++},"parenthesisLevel--":function(e){e.parenthesisLevel--},"state of aggregation":function(e,t){return{type_:"state of aggregation",p1:_mhchemParser.go(t,"o")}},comma:function(e,t){var n=t.replace(/\s*$/,"");return n!==t&&0===e.parenthesisLevel?{type_:"comma enumeration L",p1:n}:{type_:"comma enumeration M",p1:n}},output:function(e,t,n){var r;if(e.r){var i;i="M"===e.rdt?_mhchemParser.go(e.rd,"tex-math"):"T"===e.rdt?[{type_:"text",p1:e.rd||""}]:_mhchemParser.go(e.rd,"ce");var o;o="M"===e.rqt?_mhchemParser.go(e.rq,"tex-math"):"T"===e.rqt?[{type_:"text",p1:e.rq||""}]:_mhchemParser.go(e.rq,"ce"),r={type_:"arrow",r:e.r,rd:i,rq:o}}else r=[],(e.a||e.b||e.p||e.o||e.q||e.d||n)&&(e.sb&&r.push({type_:"entitySkip"}),e.o||e.q||e.d||e.b||e.p||2===n?e.o||e.q||e.d||!e.b&&!e.p?e.o&&"kv"===e.dType&&_mhchemParser.patterns.match_("d-oxidation$",e.d||"")?e.dType="oxidation":e.o&&"kv"===e.dType&&!e.q&&(e.dType=void 0):(e.o=e.a,e.d=e.b,e.q=e.p,e.a=e.b=e.p=void 0):(e.o=e.a,e.a=void 0),r.push({type_:"chemfive",a:_mhchemParser.go(e.a,"a"),b:_mhchemParser.go(e.b,"bd"),p:_mhchemParser.go(e.p,"pq"),o:_mhchemParser.go(e.o,"o"),q:_mhchemParser.go(e.q,"pq"),d:_mhchemParser.go(e.d,"oxidation"===e.dType?"oxidation":"bd"),dType:e.dType}));for(var a in e)"parenthesisLevel"!==a&&"beginsWithBond"!==a&&delete e[a];return r},"oxidation-output":function(e,t){var n=["{"];return _mhchemParser.concatArray(n,_mhchemParser.go(t,"oxidation")),n.push("}"),n},"frac-output":function(e,t){return{type_:"frac-ce",p1:_mhchemParser.go(t[0],"ce"),p2:_mhchemParser.go(t[1],"ce")}},"overset-output":function(e,t){return{type_:"overset",p1:_mhchemParser.go(t[0],"ce"),p2:_mhchemParser.go(t[1],"ce")}},"underset-output":function(e,t){return{type_:"underset",p1:_mhchemParser.go(t[0],"ce"),p2:_mhchemParser.go(t[1],"ce")}},"underbrace-output":function(e,t){return{type_:"underbrace",p1:_mhchemParser.go(t[0],"ce"),p2:_mhchemParser.go(t[1],"ce")}},"color-output":function(e,t){return{type_:"color",color1:t[0],color2:_mhchemParser.go(t[1],"ce")}},"r=":function(e,t){e.r=t},"rdt=":function(e,t){e.rdt=t},"rd=":function(e,t){e.rd=t},"rqt=":function(e,t){e.rqt=t},"rq=":function(e,t){e.rq=t},operator:function(e,t,n){return{type_:"operator",kind_:n||t}}}},a:{transitions:_mhchemCreateTransitions({empty:{"*":{action_:[]}},"1/2$":{0:{action_:"1/2"}},else:{0:{action_:[],nextState:"1",revisit:!0}},"${(...)}$__$(...)$":{"*":{action_:"tex-math tight",nextState:"1"}},",":{"*":{action_:{type_:"insert",option:"commaDecimal"}}},else2:{"*":{action_:"copy"}}}),actions:{}},o:{transitions:_mhchemCreateTransitions({empty:{"*":{action_:[]}},"1/2$":{0:{action_:"1/2"}},else:{0:{action_:[],nextState:"1",revisit:!0}},letters:{"*":{action_:"rm"}},"\\ca":{"*":{action_:{type_:"insert",option:"circa"}}},"\\pu{(...)}":{"*":{action_:[{type_:"write",option:"{"},"pu",{type_:"write",option:"}"}]}},"\\x{}{}|\\x{}|\\x":{"*":{action_:"copy"}},"${(...)}$__$(...)$":{"*":{action_:"tex-math"}},"{(...)}":{"*":{action_:[{type_:"write",option:"{"},"text",{type_:"write",option:"}"}]}},else2:{"*":{action_:"copy"}}}),actions:{}},text:{transitions:_mhchemCreateTransitions({empty:{"*":{action_:"output"}},"{...}":{"*":{action_:"text="}},"${(...)}$__$(...)$":{"*":{action_:"tex-math"}},"\\greek":{"*":{action_:["output","rm"]}},"\\pu{(...)}":{"*":{action_:["output",{type_:"write",option:"{"},"pu",{type_:"write",option:"}"}]}},"\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:["output","copy"]}},else:{"*":{action_:"text="}}}),actions:{output:function(e){if(e.text_){var t={type_:"text",p1:e.text_};for(var n in e)delete e[n];return t}}}},pq:{transitions:_mhchemCreateTransitions({empty:{"*":{action_:[]}},"state of aggregation $":{"*":{action_:"state of aggregation"}},i$:{0:{action_:[],nextState:"!f",revisit:!0}},"(KV letters),":{0:{action_:"rm",nextState:"0"}},formula$:{0:{action_:[],nextState:"f",revisit:!0}},"1/2$":{0:{action_:"1/2"}},else:{0:{action_:[],nextState:"!f",revisit:!0}},"${(...)}$__$(...)$":{"*":{action_:"tex-math"}},"{(...)}":{"*":{action_:"text"}},"a-z":{f:{action_:"tex-math"}},letters:{"*":{action_:"rm"}},"-9.,9":{"*":{action_:"9,9"}},",":{"*":{action_:{type_:"insert+p1",option:"comma enumeration S"}}},"\\color{(...)}{(...)}":{"*":{action_:"color-output"}},"\\color{(...)}":{"*":{action_:"color0-output"}},"\\ce{(...)}":{"*":{action_:"ce"}},"\\pu{(...)}":{"*":{action_:[{type_:"write",option:"{"},"pu",{type_:"write",option:"}"}]}},"\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"copy"}},else2:{"*":{action_:"copy"}}}),actions:{"state of aggregation":function(e,t){return{type_:"state of aggregation subscript",p1:_mhchemParser.go(t,"o")}},"color-output":function(e,t){return{type_:"color",color1:t[0],color2:_mhchemParser.go(t[1],"pq")}}}},bd:{transitions:_mhchemCreateTransitions({empty:{"*":{action_:[]}},x$:{0:{action_:[],nextState:"!f",revisit:!0}},formula$:{0:{action_:[],nextState:"f",revisit:!0}},else:{0:{action_:[],nextState:"!f",revisit:!0}},"-9.,9 no missing 0":{"*":{action_:"9,9"}},".":{"*":{action_:{type_:"insert",option:"electron dot"}}},"a-z":{f:{action_:"tex-math"}},x:{"*":{action_:{type_:"insert",option:"KV x"}}},letters:{"*":{action_:"rm"}},"'":{"*":{action_:{type_:"insert",option:"prime"}}},"${(...)}$__$(...)$":{"*":{action_:"tex-math"}},"{(...)}":{"*":{action_:"text"}},"\\color{(...)}{(...)}":{"*":{action_:"color-output"}},"\\color{(...)}":{"*":{action_:"color0-output"}},"\\ce{(...)}":{"*":{action_:"ce"}},"\\pu{(...)}":{"*":{action_:[{type_:"write",option:"{"},"pu",{type_:"write",option:"}"}]}},"\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"copy"}},else2:{"*":{action_:"copy"}}}),actions:{"color-output":function(e,t){return{type_:"color",color1:t[0],color2:_mhchemParser.go(t[1],"bd")}}}},oxidation:{transitions:_mhchemCreateTransitions({empty:{"*":{action_:"roman-numeral"}},"pm-operator":{"*":{action_:{type_:"o=+p1",option:"\\pm"}}},else:{"*":{action_:"o="}}}),actions:{"roman-numeral":function(e){return{type_:"roman numeral",p1:e.o||""}}}},"tex-math":{transitions:_mhchemCreateTransitions({empty:{"*":{action_:"output"}},"\\ce{(...)}":{"*":{action_:["output","ce"]}},"\\pu{(...)}":{"*":{action_:["output",{type_:"write",option:"{"},"pu",{type_:"write",option:"}"}]}},"{...}|\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"o="}},else:{"*":{action_:"o="}}}),actions:{output:function(e){if(e.o){var t={type_:"tex-math",p1:e.o};for(var n in e)delete e[n];return t}}}},"tex-math tight":{transitions:_mhchemCreateTransitions({empty:{"*":{action_:"output"}},"\\ce{(...)}":{"*":{action_:["output","ce"]}},"\\pu{(...)}":{"*":{action_:["output",{type_:"write",option:"{"},"pu",{type_:"write",option:"}"}]}},"{...}|\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"o="}},"-|+":{"*":{action_:"tight operator"}},else:{"*":{action_:"o="}}}),actions:{"tight operator":function(e,t){e.o=(e.o||"")+"{"+t+"}"},output:function(e){if(e.o){var t={type_:"tex-math",p1:e.o};for(var n in e)delete e[n];return t}}}},"9,9":{transitions:_mhchemCreateTransitions({empty:{"*":{action_:[]}},",":{"*":{action_:"comma"}},else:{"*":{action_:"copy"}}}),actions:{comma:function(){return{type_:"commaDecimal"}}}},pu:{transitions:_mhchemCreateTransitions({empty:{"*":{action_:"output"}},space$:{"*":{action_:["output","space"]}},"{[(|)]}":{"0|a":{action_:"copy"}},"(-)(9)^(-9)":{0:{action_:"number^",nextState:"a"}},"(-)(9.,9)(e)(99)":{0:{action_:"enumber",nextState:"a"}},space:{"0|a":{action_:[]}},"pm-operator":{"0|a":{action_:{type_:"operator",option:"\\pm"},nextState:"0"}},operator:{"0|a":{action_:"copy",nextState:"0"}},"//":{d:{action_:"o=",nextState:"/"}},"/":{d:{action_:"o=",nextState:"/"}},"{...}|else":{"0|d":{action_:"d=",nextState:"d"},a:{action_:["space","d="],nextState:"d"},"/|q":{action_:"q=",nextState:"q"}}}),actions:{enumber:function(e,t){var n=[];return"+-"===t[0]||"+/-"===t[0]?n.push("\\pm "):t[0]&&n.push(t[0]),t[1]&&(_mhchemParser.concatArray(n,_mhchemParser.go(t[1],"pu-9,9")),t[2]&&(t[2].match(/[,.]/)?_mhchemParser.concatArray(n,_mhchemParser.go(t[2],"pu-9,9")):n.push(t[2])),(t[3]||t[4])&&("e"===t[3]||"*"===t[4]?n.push({type_:"cdot"}):n.push({type_:"times"}))),t[5]&&n.push("10^{"+t[5]+"}"),n},"number^":function(e,t){var n=[];return"+-"===t[0]||"+/-"===t[0]?n.push("\\pm "):t[0]&&n.push(t[0]),_mhchemParser.concatArray(n,_mhchemParser.go(t[1],"pu-9,9")),n.push("^{"+t[2]+"}"),n},operator:function(e,t,n){return{type_:"operator",kind_:n||t}},space:function(){return{type_:"pu-space-1"}},output:function(e){var t,n=_mhchemParser.patterns.match_("{(...)}",e.d||"");n&&""===n.remainder&&(e.d=n.match_);var r=_mhchemParser.patterns.match_("{(...)}",e.q||"");if(r&&""===r.remainder&&(e.q=r.match_),e.d&&(e.d=e.d.replace(/\u00B0C|\^oC|\^{o}C/g,"{}^{\\circ}C"),e.d=e.d.replace(/\u00B0F|\^oF|\^{o}F/g,"{}^{\\circ}F")),e.q){e.q=e.q.replace(/\u00B0C|\^oC|\^{o}C/g,"{}^{\\circ}C"),e.q=e.q.replace(/\u00B0F|\^oF|\^{o}F/g,"{}^{\\circ}F");var i={d:_mhchemParser.go(e.d,"pu"),q:_mhchemParser.go(e.q,"pu")};"//"===e.o?t={type_:"pu-frac",p1:i.d,p2:i.q}:(t=i.d,i.d.length>1||i.q.length>1?t.push({type_:" / "}):t.push({type_:"/"}),_mhchemParser.concatArray(t,i.q))}else t=_mhchemParser.go(e.d,"pu-2");for(var o in e)delete e[o];return t}}},"pu-2":{transitions:_mhchemCreateTransitions({empty:{"*":{action_:"output"}},"*":{"*":{action_:["output","cdot"],nextState:"0"}},"\\x":{"*":{action_:"rm="}},space:{"*":{action_:["output","space"],nextState:"0"}},"^{(...)}|^(-1)":{1:{action_:"^(-1)"}},"-9.,9":{0:{action_:"rm=",nextState:"0"},1:{action_:"^(-1)",nextState:"0"}},"{...}|else":{"*":{action_:"rm=",nextState:"1"}}}),actions:{cdot:function(){return{type_:"tight cdot"}},"^(-1)":function(e,t){e.rm+="^{"+t+"}"},space:function(){return{type_:"pu-space-2"}},output:function(e){var t=[];if(e.rm){var n=_mhchemParser.patterns.match_("{(...)}",e.rm||"");t=n&&""===n.remainder?_mhchemParser.go(n.match_,"pu"):{type_:"rm",p1:e.rm}}for(var r in e)delete e[r];return t}}},"pu-9,9":{transitions:_mhchemCreateTransitions({empty:{0:{action_:"output-0"},o:{action_:"output-o"}},",":{0:{action_:["output-0","comma"],nextState:"o"}},".":{0:{action_:["output-0","copy"],nextState:"o"}},else:{"*":{action_:"text="}}}),actions:{comma:function(){return{type_:"commaDecimal"}},"output-0":function(e){var t=[];if(e.text_=e.text_||"",e.text_.length>4){var n=e.text_.length%3;0===n&&(n=3);for(var r=e.text_.length-3;r>0;r-=3)t.push(e.text_.substr(r,3)),t.push({type_:"1000 separator"});t.push(e.text_.substr(0,n)),t.reverse()}else t.push(e.text_);for(var i in e)delete e[i];return t},"output-o":function(e){var t=[];if(e.text_=e.text_||"",e.text_.length>4){var n=e.text_.length-3,r=void 0;for(r=0;r<n;r+=3)t.push(e.text_.substr(r,3)),t.push({type_:"1000 separator"});t.push(e.text_.substr(r))}else t.push(e.text_);for(var i in e)delete e[i];return t}}}}},_mhchemTexify={go:function(e,t){if(!e)return"";for(var n="",r=!1,i=0;i<e.length;i++){var o=e[i];"string"==typeof o?n+=o:(n+=_mhchemTexify._go2(o),"1st-level escape"===o.type_&&(r=!0))}return t&&!r&&n&&(n="{"+n+"}"),n},_goInner:function(e){return _mhchemTexify.go(e,!1)},_go2:function(e){var t;switch(e.type_){case"chemfive":t="";var n={a:_mhchemTexify._goInner(e.a),b:_mhchemTexify._goInner(e.b),p:_mhchemTexify._goInner(e.p),o:_mhchemTexify._goInner(e.o),q:_mhchemTexify._goInner(e.q),d:_mhchemTexify._goInner(e.d)};n.a&&(n.a.match(/^[+\-]/)&&(n.a="{"+n.a+"}"),t+=n.a+"\\,"),(n.b||n.p)&&(t+="{\\vphantom{A}}",t+="^{\\hphantom{"+(n.b||"")+"}}_{\\hphantom{"+(n.p||"")+"}}",t+="\\mkern-1.5mu",t+="{\\vphantom{A}}",t+="^{\\smash[t]{\\vphantom{2}}\\llap{"+(n.b||"")+"}}",t+="_{\\vphantom{2}\\llap{\\smash[t]{"+(n.p||"")+"}}}"),n.o&&(n.o.match(/^[+\-]/)&&(n.o="{"+n.o+"}"),t+=n.o),"kv"===e.dType?((n.d||n.q)&&(t+="{\\vphantom{A}}"),n.d&&(t+="^{"+n.d+"}"),n.q&&(t+="_{\\smash[t]{"+n.q+"}}")):"oxidation"===e.dType?(n.d&&(t+="{\\vphantom{A}}",t+="^{"+n.d+"}"),n.q&&(t+="{\\vphantom{A}}",t+="_{\\smash[t]{"+n.q+"}}")):(n.q&&(t+="{\\vphantom{A}}",t+="_{\\smash[t]{"+n.q+"}}"),n.d&&(t+="{\\vphantom{A}}",t+="^{"+n.d+"}"));break;case"rm":case"roman numeral":t="\\mathrm{"+e.p1+"}";break;case"text":e.p1.match(/[\^_]/)?(e.p1=e.p1.replace(" ","~").replace("-","\\text{-}"),t="\\mathrm{"+e.p1+"}"):t="\\text{"+e.p1+"}";break;case"state of aggregation":t="\\mskip2mu "+_mhchemTexify._goInner(e.p1);break;case"state of aggregation subscript":t="\\mskip1mu "+_mhchemTexify._goInner(e.p1);break;case"bond":if(!(t=_mhchemTexify._getBond(e.kind_)))throw["MhchemErrorBond","mhchem Error. Unknown bond type ("+e.kind_+")"];break;case"frac":var r="\\frac{"+e.p1+"}{"+e.p2+"}";t="\\mathchoice{\\textstyle"+r+"}{"+r+"}{"+r+"}{"+r+"}";break;case"pu-frac":var i="\\frac{"+_mhchemTexify._goInner(e.p1)+"}{"+_mhchemTexify._goInner(e.p2)+"}";t="\\mathchoice{\\textstyle"+i+"}{"+i+"}{"+i+"}{"+i+"}";break;case"tex-math":case"1st-level escape":t=e.p1+" ";break;case"frac-ce":t="\\frac{"+_mhchemTexify._goInner(e.p1)+"}{"+_mhchemTexify._goInner(e.p2)+"}";break;case"overset":t="\\overset{"+_mhchemTexify._goInner(e.p1)+"}{"+_mhchemTexify._goInner(e.p2)+"}";break;case"underset":t="\\underset{"+_mhchemTexify._goInner(e.p1)+"}{"+_mhchemTexify._goInner(e.p2)+"}";break;case"underbrace":t="\\underbrace{"+_mhchemTexify._goInner(e.p1)+"}_{"+_mhchemTexify._goInner(e.p2)+"}";break;case"color":t="{\\color{"+e.color1+"}{"+_mhchemTexify._goInner(e.color2)+"}}";break;case"color0":t="\\color{"+e.color+"}";break;case"arrow":var o={rd:_mhchemTexify._goInner(e.rd),rq:_mhchemTexify._goInner(e.rq)},a=_mhchemTexify._getArrow(e.r);o.rd||o.rq?"<=>"===e.r||"<=>>"===e.r||"<<=>"===e.r||"<--\x3e"===e.r?(a="\\long"+a,o.rd&&(a="\\overset{"+o.rd+"}{"+a+"}"),o.rq&&(a="<--\x3e"===e.r?"\\underset{\\lower2mu{"+o.rq+"}}{"+a+"}":"\\underset{\\lower6mu{"+o.rq+"}}{"+a+"}"),a=" {}\\mathrel{"+a+"}{} "):(o.rq&&(a+="[{"+o.rq+"}]"),a=" {}\\mathrel{\\x"+(a+="{"+o.rd+"}")+"}{} "):a=" {}\\mathrel{\\long"+a+"}{} ",t=a;break;case"operator":t=_mhchemTexify._getOperator(e.kind_);break;case"space":t=" ";break;case"tinySkip":t="\\mkern2mu";break;case"entitySkip":case"pu-space-1":t="~";break;case"pu-space-2":t="\\mkern3mu ";break;case"1000 separator":t="\\mkern2mu ";break;case"commaDecimal":t="{,}";break;case"comma enumeration L":t="{"+e.p1+"}\\mkern6mu ";break;case"comma enumeration M":t="{"+e.p1+"}\\mkern3mu ";break;case"comma enumeration S":t="{"+e.p1+"}\\mkern1mu ";break;case"hyphen":t="\\text{-}";break;case"addition compound":t="\\,{\\cdot}\\,";break;case"electron dot":t="\\mkern1mu \\bullet\\mkern1mu ";break;case"KV x":t="{\\times}";break;case"prime":t="\\prime ";break;case"cdot":t="\\cdot ";break;case"tight cdot":t="\\mkern1mu{\\cdot}\\mkern1mu ";break;case"times":t="\\times ";break;case"circa":t="{\\sim}";break;case"^":t="uparrow";break;case"v":t="downarrow";break;case"ellipsis":t="\\ldots ";break;case"/":t="/";break;case" / ":t="\\,/\\,";break;default:throw["MhchemBugT","mhchem bug T. Please report."]}return t},_getArrow:function(e){switch(e){case"->":case"→":case"⟶":return"rightarrow";case"<-":return"leftarrow";case"<->":return"leftrightarrow";case"<--\x3e":return"leftrightarrows";case"<=>":case"⇌":return"rightleftharpoons";case"<=>>":return"Rightleftharpoons";case"<<=>":return"Leftrightharpoons";default:throw["MhchemBugT","mhchem bug T. Please report."]}},_getBond:function(e){switch(e){case"-":case"1":return"{-}";case"=":case"2":return"{=}";case"#":case"3":return"{\\equiv}";case"~":return"{\\tripledash}";case"~-":return"{\\rlap{\\lower.1em{-}}\\raise.1em{\\tripledash}}";case"~=":case"~--":return"{\\rlap{\\lower.2em{-}}\\rlap{\\raise.2em{\\tripledash}}-}";case"-~-":return"{\\rlap{\\lower.2em{-}}\\rlap{\\raise.2em{-}}\\tripledash}";case"...":return"{{\\cdot}{\\cdot}{\\cdot}}";case"....":return"{{\\cdot}{\\cdot}{\\cdot}{\\cdot}}";case"->":return"{\\rightarrow}";case"<-":return"{\\leftarrow}";case"<":return"{<}";case">":return"{>}";default:throw["MhchemBugT","mhchem bug T. Please report."]}},_getOperator:function(e){switch(e){case"+":return" {}+{} ";case"-":return" {}-{} ";case"=":return" {}={} ";case"<":return" {}<{} ";case">":return" {}>{} ";case"<<":return" {}\\ll{} ";case">>":return" {}\\gg{} ";case"\\pm":return" {}\\pm{} ";case"\\approx":case"$\\approx$":return" {}\\approx{} ";case"v":case"(v)":return" \\downarrow{} ";case"^":case"(^)":return" \\uparrow{} ";default:throw["MhchemBugT","mhchem bug T. Please report."]}}},__importDefault$7=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(MhchemConfiguration,"__esModule",{value:!0}),MhchemConfiguration.MhchemConfiguration=void 0;var Configuration_js_1$7=Configuration,SymbolMap_js_1$4=SymbolMap,TexError_js_1$2=__importDefault$7(TexError$1),BaseMethods_js_1$2=__importDefault$7(BaseMethods$1),AmsMethods_js_1=AmsMethods,mhchemParser_js_1=mhchemParser$1,MhchemMethods={};MhchemMethods.Macro=BaseMethods_js_1$2.default.Macro,MhchemMethods.xArrow=AmsMethods_js_1.AmsMethods.xArrow,MhchemMethods.Machine=function(e,t,n){var r,i=e.GetArgument(t);try{r=mhchemParser_js_1.mhchemParser.toTex(i,n)}catch(e){throw new TexError_js_1$2.default(e[0],e[1])}e.string=r+e.string.substr(e.i),e.i=0},new SymbolMap_js_1$4.CommandMap("mhchem",{ce:["Machine","ce"],pu:["Machine","pu"],longrightleftharpoons:["Macro","\\stackrel{\\textstyle{-}\\!\\!{\\rightharpoonup}}{\\smash{{\\leftharpoondown}\\!\\!{-}}}"],longRightleftharpoons:["Macro","\\stackrel{\\textstyle{-}\\!\\!{\\rightharpoonup}}{\\smash{\\leftharpoondown}}"],longLeftrightharpoons:["Macro","\\stackrel{\\textstyle\\vphantom{{-}}{\\rightharpoonup}}{\\smash{{\\leftharpoondown}\\!\\!{-}}}"],longleftrightarrows:["Macro","\\stackrel{\\longrightarrow}{\\smash{\\longleftarrow}\\Rule{0px}{.25em}{0px}}"],tripledash:["Macro","\\vphantom{-}\\raise2mu{\\kern2mu\\tiny\\text{-}\\kern1mu\\text{-}\\kern1mu\\text{-}\\kern2mu}"],xleftrightarrow:["xArrow",8596,6,6],xrightleftharpoons:["xArrow",8652,5,7],xRightleftharpoons:["xArrow",8652,5,7],xLeftrightharpoons:["xArrow",8652,5,7]},MhchemMethods),MhchemConfiguration.MhchemConfiguration=Configuration_js_1$7.Configuration.create("mhchem",{handler:{macro:["mhchem"]}});var NoErrorsConfiguration={};Object.defineProperty(NoErrorsConfiguration,"__esModule",{value:!0}),NoErrorsConfiguration.NoErrorsConfiguration=void 0;var Configuration_js_1$6=Configuration;function noErrors(e,t,n,r){var i=e.create("token","mtext",{},r.replace(/\n/g," "));return e.create("node","merror",[i],{"data-mjx-error":t,title:t})}NoErrorsConfiguration.NoErrorsConfiguration=Configuration_js_1$6.Configuration.create("noerrors",{nodes:{error:noErrors}});var NoUndefinedConfiguration={},__values$1=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(NoUndefinedConfiguration,"__esModule",{value:!0}),NoUndefinedConfiguration.NoUndefinedConfiguration=void 0;var Configuration_js_1$5=Configuration;function noUndefined(e,t){var n,r,i=e.create("text","\\"+t),o=e.options.noundefined||{},a={};try{for(var s=__values$1(["color","background","size"]),l=s.next();!l.done;l=s.next()){var c=l.value;o[c]&&(a["math"+c]=o[c])}}catch(e){n={error:e}}finally{try{l&&!l.done&&(r=s.return)&&r.call(s)}finally{if(n)throw n.error}}e.Push(e.create("node","mtext",[],a,i))}NoUndefinedConfiguration.NoUndefinedConfiguration=Configuration_js_1$5.Configuration.create("noundefined",{fallback:{macro:noUndefined},options:{noundefined:{color:"red",background:"",size:""}},priority:3});var PhysicsConfiguration={},PhysicsItems={},__extends$2=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__importDefault$6=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(PhysicsItems,"__esModule",{value:!0}),PhysicsItems.AutoOpen=void 0;var StackItem_js_1=StackItem,ParseUtil_js_1$3=__importDefault$6(requireParseUtil()),NodeUtil_js_1$2=__importDefault$6(NodeUtil$1),TexParser_js_1$3=__importDefault$6(requireTexParser()),AutoOpen=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.openCount=0,t}return __extends$2(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"auto open"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isOpen",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.toMml=function(){var t=this.factory.configuration.parser,n=this.getProperty("right");if(this.getProperty("smash")){var r=e.prototype.toMml.call(this),i=t.create("node","mpadded",[r],{height:0,depth:0});this.Clear(),this.Push(t.create("node","TeXAtom",[i]))}n&&this.Push(new TexParser_js_1$3.default(n,t.stack.env,t.configuration).mml());var o=ParseUtil_js_1$3.default.fenced(this.factory.configuration,this.getProperty("open"),e.prototype.toMml.call(this),this.getProperty("close"),this.getProperty("big"));return NodeUtil_js_1$2.default.removeProperties(o,"open","close","texClass"),o},t.prototype.checkItem=function(t){if(t.isKind("mml")&&1===t.Size()){var n=t.toMml();n.isKind("mo")&&n.getText()===this.getProperty("open")&&this.openCount++}var r=t.getProperty("autoclose");return r&&r===this.getProperty("close")&&!this.openCount--?this.getProperty("ignore")?(this.Clear(),[[],!0]):[[this.toMml()],!0]:e.prototype.checkItem.call(this,t)},t.errors=Object.assign(Object.create(StackItem_js_1.BaseItem.errors),{stop:["ExtraOrMissingDelims","Extra open or missing close delimiter"]}),t}(StackItem_js_1.BaseItem);PhysicsItems.AutoOpen=AutoOpen;var PhysicsMethods$1={},__read$1=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__importDefault$5=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(PhysicsMethods$1,"__esModule",{value:!0});var BaseMethods_js_1$1=__importDefault$5(BaseMethods$1),TexParser_js_1$2=__importDefault$5(requireTexParser()),TexError_js_1$1=__importDefault$5(TexError$1),MmlNode_js_1$2=MmlNode,ParseUtil_js_1$2=__importDefault$5(requireParseUtil()),NodeUtil_js_1$1=__importDefault$5(NodeUtil$1),NodeFactory_js_1=NodeFactory$2,PhysicsMethods={},pairs$1={"(":")","[":"]","{":"}","|":"|"},biggs=/^(b|B)i(g{1,2})$/;PhysicsMethods.Quantity=function(e,t,n,r,i,o,a){void 0===n&&(n="("),void 0===r&&(r=")"),void 0===i&&(i=!1),void 0===o&&(o=""),void 0===a&&(a="");var s=!!i&&e.GetStar(),l=e.GetNext(),c=e.i,T=null;if("\\"===l){if(e.i++,!(T=e.GetCS()).match(biggs)){var Q=e.create("node","mrow");return e.Push(ParseUtil_js_1$2.default.fenced(e.configuration,n,Q,r)),void(e.i=c)}l=e.GetNext()}var d=pairs$1[l];if(i&&"{"!==l)throw new TexError_js_1$1.default("MissingArgFor","Missing argument for %1",e.currentCS);if(!d)return Q=e.create("node","mrow"),e.Push(ParseUtil_js_1$2.default.fenced(e.configuration,n,Q,r)),void(e.i=c);if(o){var u=e.create("token","mi",{texClass:MmlNode_js_1$2.TEXCLASS.OP},o);a&&NodeUtil_js_1$1.default.setAttribute(u,"mathvariant",a),e.Push(e.itemFactory.create("fn",u))}if("{"===l){var p=e.GetArgument(t);return l=i?n:"\\{",d=i?r:"\\}",p=s?l+" "+p+" "+d:T?"\\"+T+"l"+l+" "+p+" \\"+T+"r"+d:"\\left"+l+" "+p+" \\right"+d,void e.Push(new TexParser_js_1$2.default(p,e.stack.env,e.configuration).mml())}i&&(l=n,d=r),e.i++,e.Push(e.itemFactory.create("auto open").setProperties({open:l,close:d,big:T}))},PhysicsMethods.Eval=function(e,t){var n=e.GetStar(),r=e.GetNext();if("{"!==r){if("("===r||"["===r)return e.i++,void e.Push(e.itemFactory.create("auto open").setProperties({open:r,close:"|",smash:n,right:"\\vphantom{\\int}"}));throw new TexError_js_1$1.default("MissingArgFor","Missing argument for %1",e.currentCS)}var i=e.GetArgument(t),o="\\left. "+(n?"\\smash{"+i+"}":i)+" \\vphantom{\\int}\\right|";e.string=e.string.slice(0,e.i)+o+e.string.slice(e.i)},PhysicsMethods.Commutator=function(e,t,n,r){void 0===n&&(n="["),void 0===r&&(r="]");var i=e.GetStar(),o=e.GetNext(),a=null;if("\\"===o){if(e.i++,!(a=e.GetCS()).match(biggs))throw new TexError_js_1$1.default("MissingArgFor","Missing argument for %1",e.currentCS);o=e.GetNext()}if("{"!==o)throw new TexError_js_1$1.default("MissingArgFor","Missing argument for %1",e.currentCS);var s=e.GetArgument(t)+","+e.GetArgument(t);s=i?n+" "+s+" "+r:a?"\\"+a+"l"+n+" "+s+" \\"+a+"r"+r:"\\left"+n+" "+s+" \\right"+r,e.Push(new TexParser_js_1$2.default(s,e.stack.env,e.configuration).mml())};var latinCap=[65,90],latinSmall=[97,122],greekCap=[913,937],greekSmall=[945,969],digits=[48,57];function inRange(e,t){return e>=t[0]&&e<=t[1]}function createVectorToken(e,t,n,r){var i=e.configuration.parser,o=NodeFactory_js_1.NodeFactory.createToken(e,t,n,r),a=r.codePointAt(0);return 1===r.length&&!i.stack.env.font&&i.stack.env.vectorFont&&(inRange(a,latinCap)||inRange(a,latinSmall)||inRange(a,greekCap)||inRange(a,digits)||inRange(a,greekSmall)&&i.stack.env.vectorStar||NodeUtil_js_1$1.default.getAttribute(o,"accent"))&&NodeUtil_js_1$1.default.setAttribute(o,"mathvariant",i.stack.env.vectorFont),o}PhysicsMethods.VectorBold=function(e,t){var n=e.GetStar(),r=e.GetArgument(t),i=e.configuration.nodeFactory.get("token"),o=e.stack.env.font;delete e.stack.env.font,e.configuration.nodeFactory.set("token",createVectorToken),e.stack.env.vectorFont=n?"bold-italic":"bold",e.stack.env.vectorStar=n;var a=new TexParser_js_1$2.default(r,e.stack.env,e.configuration).mml();o&&(e.stack.env.font=o),delete e.stack.env.vectorFont,delete e.stack.env.vectorStar,e.configuration.nodeFactory.set("token",i),e.Push(a)},PhysicsMethods.StarMacro=function(e,t,n){for(var r=[],i=3;i<arguments.length;i++)r[i-3]=arguments[i];var o=e.GetStar(),a=[];if(n)for(var s=a.length;s<n;s++)a.push(e.GetArgument(t));var l=r.join(o?"*":"");l=ParseUtil_js_1$2.default.substituteArgs(e,a,l),e.string=ParseUtil_js_1$2.default.addArgs(e,l,e.string.slice(e.i)),e.i=0,ParseUtil_js_1$2.default.checkMaxMacros(e)};var vectorApplication=function(e,t,n,r,i){var o=new TexParser_js_1$2.default(r,e.stack.env,e.configuration).mml();e.Push(e.itemFactory.create(t,o));var a=e.GetNext(),s=pairs$1[a];if(s){var l=-1!==i.indexOf(a);if("{"===a){var c=(l?"\\left\\{":"")+" "+e.GetArgument(n)+" "+(l?"\\right\\}":"");return e.string=c+e.string.slice(e.i),void(e.i=0)}l&&(e.i++,e.Push(e.itemFactory.create("auto open").setProperties({open:a,close:s})))}};function outputBraket(e,t,n){var r=__read$1(e,3),i=r[0],o=r[1],a=r[2];return t&&n?"\\left\\langle{".concat(i,"}\\middle\\vert{").concat(o,"}\\middle\\vert{").concat(a,"}\\right\\rangle"):t?"\\langle{".concat(i,"}\\vert{").concat(o,"}\\vert{").concat(a,"}\\rangle"):"\\left\\langle{".concat(i,"}\\right\\vert{").concat(o,"}\\left\\vert{").concat(a,"}\\right\\rangle")}function makeDiagMatrix(e,t){for(var n=e.length,r=[],i=0;i<n;i++)r.push(Array(t?n-i:i+1).join("&")+"\\mqty{"+e[i]+"}");return r.join("\\\\ ")}PhysicsMethods.OperatorApplication=function(e,t,n){for(var r=[],i=3;i<arguments.length;i++)r[i-3]=arguments[i];vectorApplication(e,"fn",t,n,r)},PhysicsMethods.VectorOperator=function(e,t,n){for(var r=[],i=3;i<arguments.length;i++)r[i-3]=arguments[i];vectorApplication(e,"mml",t,n,r)},PhysicsMethods.Expression=function(e,t,n,r){void 0===n&&(n=!0),void 0===r&&(r=""),r=r||t.slice(1);var i=n?e.GetBrackets(t):null,o=e.create("token","mi",{texClass:MmlNode_js_1$2.TEXCLASS.OP},r);if(i){var a=new TexParser_js_1$2.default(i,e.stack.env,e.configuration).mml();o=e.create("node","msup",[o,a])}e.Push(e.itemFactory.create("fn",o)),"("===e.GetNext()&&(e.i++,e.Push(e.itemFactory.create("auto open").setProperties({open:"(",close:")"})))},PhysicsMethods.Qqtext=function(e,t,n){var r=(e.GetStar()?"":"\\quad")+"\\text{"+(n||e.GetArgument(t))+"}\\quad ";e.string=e.string.slice(0,e.i)+r+e.string.slice(e.i)},PhysicsMethods.Differential=function(e,t,n){var r=e.GetBrackets(t),i=null!=r?"^{"+r+"}":" ",o="("===e.GetNext(),a="{"===e.GetNext(),s=n+i;if(o||a)a?(s+=e.GetArgument(t),l=new TexParser_js_1$2.default(s,e.stack.env,e.configuration).mml(),e.Push(e.create("node","TeXAtom",[l],{texClass:MmlNode_js_1$2.TEXCLASS.OP}))):(e.Push(new TexParser_js_1$2.default(s,e.stack.env,e.configuration).mml()),e.i++,e.Push(e.itemFactory.create("auto open").setProperties({open:"(",close:")"})));else{s+=e.GetArgument(t,!0)||"";var l=new TexParser_js_1$2.default(s,e.stack.env,e.configuration).mml();e.Push(l)}},PhysicsMethods.Derivative=function(e,t,n,r){var i=e.GetStar(),o=e.GetBrackets(t),a=1,s=[];for(s.push(e.GetArgument(t));"{"===e.GetNext()&&a<n;)s.push(e.GetArgument(t)),a++;var l=!1,c=" ",T=" ";n>2&&s.length>2?(c="^{"+(s.length-1)+"}",l=!0):null!=o&&(n>2&&s.length>1&&(l=!0),T=c="^{"+o+"}");for(var Q=i?"\\flatfrac":"\\frac",d=s.length>1?s[0]:"",u=s.length>1?s[1]:s[0],p="",h=2,m=void 0;m=s[h];h++)p+=r+" "+m;var f=Q+"{"+r+c+d+"}{"+r+" "+u+T+" "+p+"}";e.Push(new TexParser_js_1$2.default(f,e.stack.env,e.configuration).mml()),"("===e.GetNext()&&(e.i++,e.Push(e.itemFactory.create("auto open").setProperties({open:"(",close:")",ignore:l})))},PhysicsMethods.Bra=function(e,t){var n=e.GetStar(),r=e.GetArgument(t),i="",o=!1,a=!1;if("\\"===e.GetNext()){var s=e.i;e.i++;var l=e.GetCS(),c=e.lookup("macro",l);c&&"ket"===c.symbol?(o=!0,s=e.i,a=e.GetStar(),"{"===e.GetNext()?i=e.GetArgument(l,!0):(e.i=s,a=!1)):e.i=s}var T;T=o?n||a?"\\langle{".concat(r,"}\\vert{").concat(i,"}\\rangle"):"\\left\\langle{".concat(r,"}\\middle\\vert{").concat(i,"}\\right\\rangle"):n||a?"\\langle{".concat(r,"}\\vert"):"\\left\\langle{".concat(r,"}\\right\\vert{").concat(i,"}"),e.Push(new TexParser_js_1$2.default(T,e.stack.env,e.configuration).mml())},PhysicsMethods.Ket=function(e,t){var n=e.GetStar(),r=e.GetArgument(t),i=n?"\\vert{".concat(r,"}\\rangle"):"\\left\\vert{".concat(r,"}\\right\\rangle");e.Push(new TexParser_js_1$2.default(i,e.stack.env,e.configuration).mml())},PhysicsMethods.BraKet=function(e,t){var n=e.GetStar(),r=e.GetArgument(t),i=null;"{"===e.GetNext()&&(i=e.GetArgument(t,!0));var o;o=null==i?n?"\\langle{".concat(r,"}\\vert{").concat(r,"}\\rangle"):"\\left\\langle{".concat(r,"}\\middle\\vert{").concat(r,"}\\right\\rangle"):n?"\\langle{".concat(r,"}\\vert{").concat(i,"}\\rangle"):"\\left\\langle{".concat(r,"}\\middle\\vert{").concat(i,"}\\right\\rangle"),e.Push(new TexParser_js_1$2.default(o,e.stack.env,e.configuration).mml())},PhysicsMethods.KetBra=function(e,t){var n=e.GetStar(),r=e.GetArgument(t),i=null;"{"===e.GetNext()&&(i=e.GetArgument(t,!0));var o;o=null==i?n?"\\vert{".concat(r,"}\\rangle\\!\\langle{").concat(r,"}\\vert"):"\\left\\vert{".concat(r,"}\\middle\\rangle\\!\\middle\\langle{").concat(r,"}\\right\\vert"):n?"\\vert{".concat(r,"}\\rangle\\!\\langle{").concat(i,"}\\vert"):"\\left\\vert{".concat(r,"}\\middle\\rangle\\!\\middle\\langle{").concat(i,"}\\right\\vert"),e.Push(new TexParser_js_1$2.default(o,e.stack.env,e.configuration).mml())},PhysicsMethods.Expectation=function(e,t){var n=e.GetStar(),r=n&&e.GetStar(),i=e.GetArgument(t),o=null;"{"===e.GetNext()&&(o=e.GetArgument(t,!0));var a=i&&o?outputBraket([o,i,o],n,r):n?"\\langle {".concat(i,"} \\rangle"):"\\left\\langle {".concat(i,"} \\right\\rangle");e.Push(new TexParser_js_1$2.default(a,e.stack.env,e.configuration).mml())},PhysicsMethods.MatrixElement=function(e,t){var n=e.GetStar(),r=n&&e.GetStar(),i=outputBraket([e.GetArgument(t),e.GetArgument(t),e.GetArgument(t)],n,r);e.Push(new TexParser_js_1$2.default(i,e.stack.env,e.configuration).mml())},PhysicsMethods.MatrixQuantity=function(e,t,n){var r=e.GetStar(),i=n?"smallmatrix":"array",o="",a="",s="";switch(e.GetNext()){case"{":o=e.GetArgument(t);break;case"(":e.i++,a=r?"\\lgroup":"(",s=r?"\\rgroup":")",o=e.GetUpTo(t,")");break;case"[":e.i++,a="[",s="]",o=e.GetUpTo(t,"]");break;case"|":e.i++,a="|",s="|",o=e.GetUpTo(t,"|");break;default:a="(",s=")"}var l=(a?"\\left":"")+a+"\\begin{"+i+"}{} "+o+"\\end{"+i+"}"+(a?"\\right":"")+s;e.Push(new TexParser_js_1$2.default(l,e.stack.env,e.configuration).mml())},PhysicsMethods.IdentityMatrix=function(e,t){var n=e.GetArgument(t),r=parseInt(n,10);if(isNaN(r))throw new TexError_js_1$1.default("InvalidNumber","Invalid number");if(r<=1)return e.string="1"+e.string.slice(e.i),void(e.i=0);for(var i=Array(r).fill("0"),o=[],a=0;a<r;a++){var s=i.slice();s[a]="1",o.push(s.join(" & "))}e.string=o.join("\\\\ ")+e.string.slice(e.i),e.i=0},PhysicsMethods.XMatrix=function(e,t){var n=e.GetStar(),r=e.GetArgument(t),i=e.GetArgument(t),o=e.GetArgument(t),a=parseInt(i,10),s=parseInt(o,10);if(isNaN(a)||isNaN(s)||s.toString()!==o||a.toString()!==i)throw new TexError_js_1$1.default("InvalidNumber","Invalid number");if(a=a<1?1:a,s=s<1?1:s,!n){var l=Array(s).fill(r).join(" & "),c=Array(a).fill(l).join("\\\\ ");return e.string=c+e.string.slice(e.i),void(e.i=0)}var T="";if(1===a&&1===s)T=r;else if(1===a){l=[];for(var Q=1;Q<=s;Q++)l.push("".concat(r,"_{").concat(Q,"}"));T=l.join(" & ")}else if(1===s){for(l=[],Q=1;Q<=a;Q++)l.push("".concat(r,"_{").concat(Q,"}"));T=l.join("\\\\ ")}else{var d=[];for(Q=1;Q<=a;Q++){l=[];for(var u=1;u<=s;u++)l.push("".concat(r,"_{{").concat(Q,"}{").concat(u,"}}"));d.push(l.join(" & "))}T=d.join("\\\\ ")}e.string=T+e.string.slice(e.i),e.i=0},PhysicsMethods.PauliMatrix=function(e,t){var n=e.GetArgument(t),r=n.slice(1);switch(n[0]){case"0":r+=" 1 & 0\\\\ 0 & 1";break;case"1":case"x":r+=" 0 & 1\\\\ 1 & 0";break;case"2":case"y":r+=" 0 & -i\\\\ i & 0";break;case"3":case"z":r+=" 1 & 0\\\\ 0 & -1"}e.string=r+e.string.slice(e.i),e.i=0},PhysicsMethods.DiagonalMatrix=function(e,t,n){if("{"===e.GetNext()){var r=e.i;e.GetArgument(t);var i=e.i;e.i=r+1;for(var o=[],a="",s=e.i;s<i;){try{a=e.GetUpTo(t,",")}catch(t){e.i=i,o.push(e.string.slice(s,i-1));break}if(e.i>=i){o.push(e.string.slice(s,i));break}s=e.i,o.push(a)}e.string=makeDiagMatrix(o,n)+e.string.slice(i),e.i=0}},PhysicsMethods.AutoClose=function(e,t,n){var r=e.create("token","mo",{stretchy:!1},t),i=e.itemFactory.create("mml",r).setProperties({autoclose:t});e.Push(i)},PhysicsMethods.Vnabla=function(e,t){var n=e.options.physics.arrowdel?"\\vec{\\gradientnabla}":"{\\gradientnabla}";return e.Push(new TexParser_js_1$2.default(n,e.stack.env,e.configuration).mml())},PhysicsMethods.DiffD=function(e,t){var n=e.options.physics.italicdiff?"d":"{\\rm d}";return e.Push(new TexParser_js_1$2.default(n,e.stack.env,e.configuration).mml())},PhysicsMethods.Macro=BaseMethods_js_1$1.default.Macro,PhysicsMethods.NamedFn=BaseMethods_js_1$1.default.NamedFn,PhysicsMethods.Array=BaseMethods_js_1$1.default.Array,PhysicsMethods$1.default=PhysicsMethods;var _a$1,__importDefault$4=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},SymbolMap_js_1$3=SymbolMap,PhysicsMethods_js_1=__importDefault$4(PhysicsMethods$1),TexConstants_js_1$3=TexConstants,ParseMethods_js_1=__importDefault$4(ParseMethods$1),MmlNode_js_1$1=MmlNode;new SymbolMap_js_1$3.CommandMap("Physics-automatic-bracing-macros",{quantity:"Quantity",qty:"Quantity",pqty:["Quantity","(",")",!0],bqty:["Quantity","[","]",!0],vqty:["Quantity","|","|",!0],Bqty:["Quantity","\\{","\\}",!0],absolutevalue:["Quantity","|","|",!0],abs:["Quantity","|","|",!0],norm:["Quantity","\\|","\\|",!0],evaluated:"Eval",eval:"Eval",order:["Quantity","(",")",!0,"O",TexConstants_js_1$3.TexConstant.Variant.CALLIGRAPHIC],commutator:"Commutator",comm:"Commutator",anticommutator:["Commutator","\\{","\\}"],acomm:["Commutator","\\{","\\}"],poissonbracket:["Commutator","\\{","\\}"],pb:["Commutator","\\{","\\}"]},PhysicsMethods_js_1.default),new SymbolMap_js_1$3.CharacterMap("Physics-vector-mo",ParseMethods_js_1.default.mathchar0mo,{dotproduct:["⋅",{mathvariant:TexConstants_js_1$3.TexConstant.Variant.BOLD}],vdot:["⋅",{mathvariant:TexConstants_js_1$3.TexConstant.Variant.BOLD}],crossproduct:"×",cross:"×",cp:"×",gradientnabla:["∇",{mathvariant:TexConstants_js_1$3.TexConstant.Variant.BOLD}]}),new SymbolMap_js_1$3.CharacterMap("Physics-vector-mi",ParseMethods_js_1.default.mathchar0mi,{real:["ℜ",{mathvariant:TexConstants_js_1$3.TexConstant.Variant.NORMAL}],imaginary:["ℑ",{mathvariant:TexConstants_js_1$3.TexConstant.Variant.NORMAL}]}),new SymbolMap_js_1$3.CommandMap("Physics-vector-macros",{vnabla:"Vnabla",vectorbold:"VectorBold",vb:"VectorBold",vectorarrow:["StarMacro",1,"\\vec{\\vb","{#1}}"],va:["StarMacro",1,"\\vec{\\vb","{#1}}"],vectorunit:["StarMacro",1,"\\hat{\\vb","{#1}}"],vu:["StarMacro",1,"\\hat{\\vb","{#1}}"],gradient:["OperatorApplication","\\vnabla","(","["],grad:["OperatorApplication","\\vnabla","(","["],divergence:["VectorOperator","\\vnabla\\vdot","(","["],div:["VectorOperator","\\vnabla\\vdot","(","["],curl:["VectorOperator","\\vnabla\\crossproduct","(","["],laplacian:["OperatorApplication","\\nabla^2","(","["]},PhysicsMethods_js_1.default),new SymbolMap_js_1$3.CommandMap("Physics-expressions-macros",{sin:"Expression",sinh:"Expression",arcsin:"Expression",asin:"Expression",cos:"Expression",cosh:"Expression",arccos:"Expression",acos:"Expression",tan:"Expression",tanh:"Expression",arctan:"Expression",atan:"Expression",csc:"Expression",csch:"Expression",arccsc:"Expression",acsc:"Expression",sec:"Expression",sech:"Expression",arcsec:"Expression",asec:"Expression",cot:"Expression",coth:"Expression",arccot:"Expression",acot:"Expression",exp:["Expression",!1],log:"Expression",ln:"Expression",det:["Expression",!1],Pr:["Expression",!1],tr:["Expression",!1],trace:["Expression",!1,"tr"],Tr:["Expression",!1],Trace:["Expression",!1,"Tr"],rank:"NamedFn",erf:["Expression",!1],Residue:["Macro","\\mathrm{Res}"],Res:["OperatorApplication","\\Residue","(","[","{"],principalvalue:["OperatorApplication","{\\cal P}"],pv:["OperatorApplication","{\\cal P}"],PV:["OperatorApplication","{\\rm P.V.}"],Re:["OperatorApplication","\\mathrm{Re}","{"],Im:["OperatorApplication","\\mathrm{Im}","{"],sine:["NamedFn","sin"],hypsine:["NamedFn","sinh"],arcsine:["NamedFn","arcsin"],asine:["NamedFn","asin"],cosine:["NamedFn","cos"],hypcosine:["NamedFn","cosh"],arccosine:["NamedFn","arccos"],acosine:["NamedFn","acos"],tangent:["NamedFn","tan"],hyptangent:["NamedFn","tanh"],arctangent:["NamedFn","arctan"],atangent:["NamedFn","atan"],cosecant:["NamedFn","csc"],hypcosecant:["NamedFn","csch"],arccosecant:["NamedFn","arccsc"],acosecant:["NamedFn","acsc"],secant:["NamedFn","sec"],hypsecant:["NamedFn","sech"],arcsecant:["NamedFn","arcsec"],asecant:["NamedFn","asec"],cotangent:["NamedFn","cot"],hypcotangent:["NamedFn","coth"],arccotangent:["NamedFn","arccot"],acotangent:["NamedFn","acot"],exponential:["NamedFn","exp"],logarithm:["NamedFn","log"],naturallogarithm:["NamedFn","ln"],determinant:["NamedFn","det"],Probability:["NamedFn","Pr"]},PhysicsMethods_js_1.default),new SymbolMap_js_1$3.CommandMap("Physics-quick-quad-macros",{qqtext:"Qqtext",qq:"Qqtext",qcomma:["Macro","\\qqtext*{,}"],qc:["Macro","\\qqtext*{,}"],qcc:["Qqtext","c.c."],qif:["Qqtext","if"],qthen:["Qqtext","then"],qelse:["Qqtext","else"],qotherwise:["Qqtext","otherwise"],qunless:["Qqtext","unless"],qgiven:["Qqtext","given"],qusing:["Qqtext","using"],qassume:["Qqtext","assume"],qsince:["Qqtext","since"],qlet:["Qqtext","let"],qfor:["Qqtext","for"],qall:["Qqtext","all"],qeven:["Qqtext","even"],qodd:["Qqtext","odd"],qinteger:["Qqtext","integer"],qand:["Qqtext","and"],qor:["Qqtext","or"],qas:["Qqtext","as"],qin:["Qqtext","in"]},PhysicsMethods_js_1.default),new SymbolMap_js_1$3.CommandMap("Physics-derivative-macros",{diffd:"DiffD",flatfrac:["Macro","\\left.#1\\middle/#2\\right.",2],differential:["Differential","\\diffd"],dd:["Differential","\\diffd"],variation:["Differential","\\delta"],var:["Differential","\\delta"],derivative:["Derivative",2,"\\diffd"],dv:["Derivative",2,"\\diffd"],partialderivative:["Derivative",3,"\\partial"],pderivative:["Derivative",3,"\\partial"],pdv:["Derivative",3,"\\partial"],functionalderivative:["Derivative",2,"\\delta"],fderivative:["Derivative",2,"\\delta"],fdv:["Derivative",2,"\\delta"]},PhysicsMethods_js_1.default),new SymbolMap_js_1$3.CommandMap("Physics-bra-ket-macros",{bra:"Bra",ket:"Ket",innerproduct:"BraKet",ip:"BraKet",braket:"BraKet",outerproduct:"KetBra",dyad:"KetBra",ketbra:"KetBra",op:"KetBra",expectationvalue:"Expectation",expval:"Expectation",ev:"Expectation",matrixelement:"MatrixElement",matrixel:"MatrixElement",mel:"MatrixElement"},PhysicsMethods_js_1.default),new SymbolMap_js_1$3.CommandMap("Physics-matrix-macros",{matrixquantity:"MatrixQuantity",mqty:"MatrixQuantity",pmqty:["Macro","\\mqty(#1)",1],Pmqty:["Macro","\\mqty*(#1)",1],bmqty:["Macro","\\mqty[#1]",1],vmqty:["Macro","\\mqty|#1|",1],smallmatrixquantity:["MatrixQuantity",!0],smqty:["MatrixQuantity",!0],spmqty:["Macro","\\smqty(#1)",1],sPmqty:["Macro","\\smqty*(#1)",1],sbmqty:["Macro","\\smqty[#1]",1],svmqty:["Macro","\\smqty|#1|",1],matrixdeterminant:["Macro","\\vmqty{#1}",1],mdet:["Macro","\\vmqty{#1}",1],smdet:["Macro","\\svmqty{#1}",1],identitymatrix:"IdentityMatrix",imat:"IdentityMatrix",xmatrix:"XMatrix",xmat:"XMatrix",zeromatrix:["Macro","\\xmat{0}{#1}{#2}",2],zmat:["Macro","\\xmat{0}{#1}{#2}",2],paulimatrix:"PauliMatrix",pmat:"PauliMatrix",diagonalmatrix:"DiagonalMatrix",dmat:"DiagonalMatrix",antidiagonalmatrix:["DiagonalMatrix",!0],admat:["DiagonalMatrix",!0]},PhysicsMethods_js_1.default),new SymbolMap_js_1$3.EnvironmentMap("Physics-aux-envs",ParseMethods_js_1.default.environment,{smallmatrix:["Array",null,null,null,"c","0.333em",".2em","S",1]},PhysicsMethods_js_1.default),new SymbolMap_js_1$3.MacroMap("Physics-characters",{"|":["AutoClose",MmlNode_js_1$1.TEXCLASS.ORD],")":"AutoClose","]":"AutoClose"},PhysicsMethods_js_1.default),Object.defineProperty(PhysicsConfiguration,"__esModule",{value:!0}),PhysicsConfiguration.PhysicsConfiguration=void 0;var Configuration_js_1$4=Configuration,PhysicsItems_js_1=PhysicsItems;PhysicsConfiguration.PhysicsConfiguration=Configuration_js_1$4.Configuration.create("physics",{handler:{macro:["Physics-automatic-bracing-macros","Physics-vector-macros","Physics-vector-mo","Physics-vector-mi","Physics-derivative-macros","Physics-expressions-macros","Physics-quick-quad-macros","Physics-bra-ket-macros","Physics-matrix-macros"],character:["Physics-characters"],environment:["Physics-aux-envs"]},items:(_a$1={},_a$1[PhysicsItems_js_1.AutoOpen.prototype.kind]=PhysicsItems_js_1.AutoOpen,_a$1),options:{physics:{italicdiff:!1,arrowdel:!1}}});var SetOptionsConfiguration={};!function(e){var t=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},n=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.SetOptionsConfiguration=e.SetOptionsUtil=void 0;var r=Configuration,i=SymbolMap,o=n(TexError$1),a=n(requireParseUtil()),s=_Symbol,l=n(BaseMethods$1),c=Options;e.SetOptionsUtil={filterPackage:function(e,t){if("tex"!==t&&!r.ConfigurationHandler.get(t))throw new o.default("NotAPackage","Not a defined package: %1",t);var n=e.options.setoptions,i=n.allowOptions[t];if(void 0===i&&!n.allowPackageDefault||!1===i)throw new o.default("PackageNotSettable",'Options can\'t be set for package "%1"',t);return!0},filterOption:function(e,t,n){var r,i=e.options.setoptions,a=i.allowOptions[t]||{},s=a.hasOwnProperty(n)&&!(0,c.isObject)(a[n])?a[n]:null;if(!1===s||null===s&&!i.allowOptionsDefault)throw new o.default("OptionNotSettable",'Option "%1" is not allowed to be set',n);if(!(null===(r="tex"===t?e.options:e.options[t])||void 0===r?void 0:r.hasOwnProperty(n)))throw"tex"===t?new o.default("InvalidTexOption",'Invalid TeX option "%1"',n):new o.default("InvalidOptionKey",'Invalid option "%1" for package "%2"',n,t);return!0},filterValue:function(e,t,n,r){return r}};var T=new i.CommandMap("setoptions",{setOptions:"SetOptions"},{SetOptions:function(e,n){var r,i,o=e.GetBrackets(n)||"tex",s=a.default.keyvalOptions(e.GetArgument(n)),l=e.options.setoptions;if(l.filterPackage(e,o))try{for(var c=t(Object.keys(s)),T=c.next();!T.done;T=c.next()){var Q=T.value;l.filterOption(e,o,Q)&&(("tex"===o?e.options:e.options[o])[Q]=l.filterValue(e,o,Q,s[Q]))}}catch(e){r={error:e}}finally{try{T&&!T.done&&(i=c.return)&&i.call(c)}finally{if(r)throw r.error}}}});e.SetOptionsConfiguration=r.Configuration.create("setoptions",{handler:{macro:["setoptions"]},config:function(e,t){var n=t.parseOptions.handlers.get("macro").lookup("require");n&&(T.add("Require",new s.Macro("Require",n._func)),T.add("require",new s.Macro("require",l.default.Macro,["\\Require{#2}\\setOptions[#2]{#1}",2,""])))},priority:3,options:{setoptions:{filterPackage:e.SetOptionsUtil.filterPackage,filterOption:e.SetOptionsUtil.filterOption,filterValue:e.SetOptionsUtil.filterValue,allowPackageDefault:!0,allowOptionsDefault:!0,allowOptions:(0,c.expandable)({tex:{FindTeX:!1,formatError:!1,package:!1,baseURL:!1,tags:!1,maxBuffer:!1,maxMaxros:!1,macros:!1,environments:!1},setoptions:!1,autoload:!1,require:!1,configmacros:!1,tagformat:!1})}}})}(SetOptionsConfiguration);var TagFormatConfiguration={},__extends$1=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(TagFormatConfiguration,"__esModule",{value:!0}),TagFormatConfiguration.TagFormatConfiguration=TagFormatConfiguration.tagformatConfig=void 0;var Configuration_js_1$3=Configuration,Tags_js_1$1=Tags,tagID=0;function tagformatConfig(e,t){var n=t.parseOptions.options.tags;"base"!==n&&e.tags.hasOwnProperty(n)&&Tags_js_1$1.TagsFactory.add(n,e.tags[n]);var r=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return __extends$1(n,e),n.prototype.formatNumber=function(e){return t.parseOptions.options.tagformat.number(e)},n.prototype.formatTag=function(e){return t.parseOptions.options.tagformat.tag(e)},n.prototype.formatId=function(e){return t.parseOptions.options.tagformat.id(e)},n.prototype.formatUrl=function(e,n){return t.parseOptions.options.tagformat.url(e,n)},n}(Tags_js_1$1.TagsFactory.create(t.parseOptions.options.tags).constructor),i="configTags-"+ ++tagID;Tags_js_1$1.TagsFactory.add(i,r),t.parseOptions.options.tags=i}TagFormatConfiguration.tagformatConfig=tagformatConfig,TagFormatConfiguration.TagFormatConfiguration=Configuration_js_1$3.Configuration.create("tagformat",{config:[tagformatConfig,10],options:{tagformat:{number:function(e){return e.toString()},tag:function(e){return"("+e+")"},id:function(e){return"mjx-eqn:"+e.replace(/\s/g,"_")},url:function(e,t){return t+"#"+encodeURIComponent(e)}}}});var TextcompConfiguration={},TextMacrosMethods={},__importDefault$3=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(TextMacrosMethods,"__esModule",{value:!0}),TextMacrosMethods.TextMacrosMethods=void 0;var TexParser_js_1$1=__importDefault$3(requireTexParser()),Retries_js_1=Retries,BaseMethods_js_1=__importDefault$3(BaseMethods$1);TextMacrosMethods.TextMacrosMethods={Comment:function(e,t){for(;e.i<e.string.length&&"\n"!==e.string.charAt(e.i);)e.i++;e.i++},Math:function(e,t){e.saveText();for(var n,r,i=e.i,o=0;r=e.GetNext();)switch(n=e.i++,r){case"\\":")"===e.GetCS()&&(r="\\(");case"$":if(0===o&&t===r){var a=e.texParser.configuration,s=new TexParser_js_1$1.default(e.string.substr(i,n-i),e.stack.env,a).mml();return void e.PushMath(s)}break;case"{":o++;break;case"}":0===o&&e.Error("ExtraCloseMissingOpen","Extra close brace or missing open brace"),o--}e.Error("MathNotTerminated","Math-mode is not properly terminated")},MathModeOnly:function(e,t){e.Error("MathModeOnly","'%1' allowed only in math mode",t)},Misplaced:function(e,t){e.Error("Misplaced","'%1' can not be used here",t)},OpenBrace:function(e,t){var n=e.stack.env;e.envStack.push(n),e.stack.env=Object.assign({},n)},CloseBrace:function(e,t){e.envStack.length?(e.saveText(),e.stack.env=e.envStack.pop()):e.Error("ExtraCloseMissingOpen","Extra close brace or missing open brace")},OpenQuote:function(e,t){e.string.charAt(e.i)===t?(e.text+="“",e.i++):e.text+="‘"},CloseQuote:function(e,t){e.string.charAt(e.i)===t?(e.text+="”",e.i++):e.text+="’"},Tilde:function(e,t){e.text+=" "},Space:function(e,t){for(e.text+=" ";e.GetNext().match(/\s/);)e.i++},SelfQuote:function(e,t){e.text+=t.substr(1)},Insert:function(e,t,n){e.text+=n},Accent:function(e,t,n){var r=e.ParseArg(t),i=e.create("token","mo",{},n);e.addAttributes(i),e.Push(e.create("node","mover",[r,i]))},Emph:function(e,t){var n="-tex-mathit"===e.stack.env.mathvariant?"normal":"-tex-mathit";e.Push(e.ParseTextArg(t,{mathvariant:n}))},SetFont:function(e,t,n){e.saveText(),e.stack.env.mathvariant=n},SetSize:function(e,t,n){e.saveText(),e.stack.env.mathsize=n},CheckAutoload:function(e,t){var n=e.configuration.packageData.get("autoload"),r=e.texParser;t=t.slice(1);var i=r.lookup("macro",t);if(!i||n&&i._func===n.Autoload){if(r.parse("macro",[r,t]),!i)return;(0,Retries_js_1.retryAfter)(Promise.resolve())}r.parse("macro",[e,t])},Macro:BaseMethods_js_1.default.Macro,Spacer:BaseMethods_js_1.default.Spacer,Hskip:BaseMethods_js_1.default.Hskip,rule:BaseMethods_js_1.default.rule,Rule:BaseMethods_js_1.default.Rule,HandleRef:BaseMethods_js_1.default.HandleRef};var TextParser$1={},__extends=commonjsGlobal&&commonjsGlobal.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),__values=commonjsGlobal&&commonjsGlobal.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},__read=commonjsGlobal&&commonjsGlobal.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},__spreadArray=commonjsGlobal&&commonjsGlobal.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))},__importDefault$2=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(TextParser$1,"__esModule",{value:!0}),TextParser$1.TextParser=void 0;var TexParser_js_1=__importDefault$2(requireTexParser()),TexError_js_1=__importDefault$2(TexError$1),ParseUtil_js_1$1=__importDefault$2(requireParseUtil()),MmlNode_js_1=MmlNode,NodeUtil_js_1=__importDefault$2(NodeUtil$1),BaseItems_js_1$1=BaseItems,TextParser=function(e){function t(t,n,r,i){var o=e.call(this,t,n,r)||this;return o.level=i,o}return __extends(t,e),Object.defineProperty(t.prototype,"texParser",{get:function(){return this.configuration.packageData.get("textmacros").texParser},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"tags",{get:function(){return this.texParser.tags},enumerable:!1,configurable:!0}),t.prototype.mml=function(){return null!=this.level?this.create("node","mstyle",this.nodes,{displaystyle:!1,scriptlevel:this.level}):1===this.nodes.length?this.nodes[0]:this.create("node","mrow",this.nodes)},t.prototype.Parse=function(){this.text="",this.nodes=[],this.envStack=[],e.prototype.Parse.call(this)},t.prototype.saveText=function(){if(this.text){var e=this.stack.env.mathvariant,t=ParseUtil_js_1$1.default.internalText(this,this.text,e?{mathvariant:e}:{});this.text="",this.Push(t)}},t.prototype.Push=function(t){if(this.text&&this.saveText(),t instanceof BaseItems_js_1$1.StopItem)return e.prototype.Push.call(this,t);t instanceof BaseItems_js_1$1.StyleItem?this.stack.env.mathcolor=this.stack.env.color:t instanceof MmlNode_js_1.AbstractMmlNode&&(this.addAttributes(t),this.nodes.push(t))},t.prototype.PushMath=function(e){var t,n,r=this.stack.env;e.isKind("TeXAtom")||(e=this.create("node","TeXAtom",[e]));try{for(var i=__values(["mathsize","mathcolor"]),o=i.next();!o.done;o=i.next()){var a=o.value;r[a]&&!e.attributes.getExplicit(a)&&(e.isToken||e.isKind("mstyle")||(e=this.create("node","mstyle",[e])),NodeUtil_js_1.default.setAttribute(e,a,r[a]))}}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}e.isInferred&&(e=this.create("node","mrow",e.childNodes)),this.nodes.push(e)},t.prototype.addAttributes=function(e){var t,n,r=this.stack.env;if(e.isToken)try{for(var i=__values(["mathsize","mathcolor","mathvariant"]),o=i.next();!o.done;o=i.next()){var a=o.value;r[a]&&!e.attributes.getExplicit(a)&&NodeUtil_js_1.default.setAttribute(e,a,r[a])}}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}},t.prototype.ParseTextArg=function(e,n){return new t(this.GetArgument(e),n=Object.assign(Object.assign({},this.stack.env),n),this.configuration).mml()},t.prototype.ParseArg=function(e){return new t(this.GetArgument(e),this.stack.env,this.configuration).mml()},t.prototype.Error=function(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];throw new(TexError_js_1.default.bind.apply(TexError_js_1.default,__spreadArray([void 0,e,t],__read(n),!1)))},t}(TexParser_js_1.default);TextParser$1.TextParser=TextParser;var __importDefault$1=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},SymbolMap_js_1$2=SymbolMap,TexConstants_js_1$2=TexConstants,TextMacrosMethods_js_1$2=TextMacrosMethods,ParseUtil_js_1=__importDefault$1(requireParseUtil()),TextParser_js_1$1=TextParser$1;new SymbolMap_js_1$2.CommandMap("textcomp-macros",{textasciicircum:["Insert","^"],textasciitilde:["Insert","~"],textasteriskcentered:["Insert","*"],textbackslash:["Insert","\\"],textbar:["Insert","|"],textbraceleft:["Insert","{"],textbraceright:["Insert","}"],textbullet:["Insert","•"],textdagger:["Insert","†"],textdaggerdbl:["Insert","‡"],textellipsis:["Insert","…"],textemdash:["Insert","—"],textendash:["Insert","–"],textexclamdown:["Insert","¡"],textgreater:["Insert",">"],textless:["Insert","<"],textordfeminine:["Insert","ª"],textordmasculine:["Insert","º"],textparagraph:["Insert","¶"],textperiodcentered:["Insert","·"],textquestiondown:["Insert","¿"],textquotedblleft:["Insert","“"],textquotedblright:["Insert","”"],textquoteleft:["Insert","‘"],textquoteright:["Insert","’"],textsection:["Insert","§"],textunderscore:["Insert","_"],textvisiblespace:["Insert","␣"],textacutedbl:["Insert","˝"],textasciiacute:["Insert","´"],textasciibreve:["Insert","˘"],textasciicaron:["Insert","ˇ"],textasciidieresis:["Insert","¨"],textasciimacron:["Insert","¯"],textgravedbl:["Insert","˵"],texttildelow:["Insert","˷"],textbaht:["Insert","฿"],textcent:["Insert","¢"],textcolonmonetary:["Insert","₡"],textcurrency:["Insert","¤"],textdollar:["Insert","$"],textdong:["Insert","₫"],texteuro:["Insert","€"],textflorin:["Insert","ƒ"],textguarani:["Insert","₲"],textlira:["Insert","₤"],textnaira:["Insert","₦"],textpeso:["Insert","₱"],textsterling:["Insert","£"],textwon:["Insert","₩"],textyen:["Insert","¥"],textcircledP:["Insert","℗"],textcompwordmark:["Insert","‌"],textcopyleft:["Insert","🄯"],textcopyright:["Insert","©"],textregistered:["Insert","®"],textservicemark:["Insert","℠"],texttrademark:["Insert","™"],textbardbl:["Insert","‖"],textbigcircle:["Insert","◯"],textblank:["Insert","␢"],textbrokenbar:["Insert","¦"],textdiscount:["Insert","⁒"],textestimated:["Insert","℮"],textinterrobang:["Insert","‽"],textinterrobangdown:["Insert","⸘"],textmusicalnote:["Insert","♪"],textnumero:["Insert","№"],textopenbullet:["Insert","◦"],textpertenthousand:["Insert","‱"],textperthousand:["Insert","‰"],textrecipe:["Insert","℞"],textreferencemark:["Insert","※"],textlangle:["Insert","〈"],textrangle:["Insert","〉"],textlbrackdbl:["Insert","⟦"],textrbrackdbl:["Insert","⟧"],textlquill:["Insert","⁅"],textrquill:["Insert","⁆"],textcelsius:["Insert","℃"],textdegree:["Insert","°"],textdiv:["Insert","÷"],textdownarrow:["Insert","↓"],textfractionsolidus:["Insert","⁄"],textleftarrow:["Insert","←"],textlnot:["Insert","¬"],textmho:["Insert","℧"],textminus:["Insert","−"],textmu:["Insert","µ"],textohm:["Insert","Ω"],textonehalf:["Insert","½"],textonequarter:["Insert","¼"],textonesuperior:["Insert","¹"],textpm:["Insert","±"],textrightarrow:["Insert","→"],textsurd:["Insert","√"],textthreequarters:["Insert","¾"],textthreesuperior:["Insert","³"],texttimes:["Insert","×"],texttwosuperior:["Insert","²"],textuparrow:["Insert","↑"],textborn:["Insert","*"],textdied:["Insert","†"],textdivorced:["Insert","⚮"],textmarried:["Insert","⚭"],textcentoldstyle:["Insert","¢",TexConstants_js_1$2.TexConstant.Variant.OLDSTYLE],textdollaroldstyle:["Insert","$",TexConstants_js_1$2.TexConstant.Variant.OLDSTYLE],textzerooldstyle:["Insert","0",TexConstants_js_1$2.TexConstant.Variant.OLDSTYLE],textoneoldstyle:["Insert","1",TexConstants_js_1$2.TexConstant.Variant.OLDSTYLE],texttwooldstyle:["Insert","2",TexConstants_js_1$2.TexConstant.Variant.OLDSTYLE],textthreeoldstyle:["Insert","3",TexConstants_js_1$2.TexConstant.Variant.OLDSTYLE],textfouroldstyle:["Insert","4",TexConstants_js_1$2.TexConstant.Variant.OLDSTYLE],textfiveoldstyle:["Insert","5",TexConstants_js_1$2.TexConstant.Variant.OLDSTYLE],textsixoldstyle:["Insert","6",TexConstants_js_1$2.TexConstant.Variant.OLDSTYLE],textsevenoldstyle:["Insert","7",TexConstants_js_1$2.TexConstant.Variant.OLDSTYLE],texteightoldstyle:["Insert","8",TexConstants_js_1$2.TexConstant.Variant.OLDSTYLE],textnineoldstyle:["Insert","9",TexConstants_js_1$2.TexConstant.Variant.OLDSTYLE]},{Insert:function(e,t,n,r){if(e instanceof TextParser_js_1$1.TextParser){if(!r)return void TextMacrosMethods_js_1$2.TextMacrosMethods.Insert(e,t,n);e.saveText()}e.Push(ParseUtil_js_1.default.internalText(e,n,r?{mathvariant:r}:{}))}}),Object.defineProperty(TextcompConfiguration,"__esModule",{value:!0}),TextcompConfiguration.TextcompConfiguration=void 0;var Configuration_js_1$2=Configuration;TextcompConfiguration.TextcompConfiguration=Configuration_js_1$2.Configuration.create("textcomp",{handler:{macro:["textcomp-macros"]}});var TextMacrosConfiguration={},SymbolMap_js_1$1=SymbolMap,TexConstants_js_1$1=TexConstants,TextMacrosMethods_js_1$1=TextMacrosMethods,lengths_js_1=lengths;new SymbolMap_js_1$1.MacroMap("text-special",{$:"Math","%":"Comment","^":"MathModeOnly",_:"MathModeOnly","&":"Misplaced","#":"Misplaced","~":"Tilde"," ":"Space","\t":"Space","\r":"Space","\n":"Space"," ":"Tilde","{":"OpenBrace","}":"CloseBrace","`":"OpenQuote","'":"CloseQuote"},TextMacrosMethods_js_1$1.TextMacrosMethods),new SymbolMap_js_1$1.CommandMap("text-macros",{"(":"Math",$:"SelfQuote",_:"SelfQuote","%":"SelfQuote","{":"SelfQuote","}":"SelfQuote"," ":"SelfQuote","&":"SelfQuote","#":"SelfQuote","\\":"SelfQuote","'":["Accent","´"],"’":["Accent","´"],"`":["Accent","`"],"‘":["Accent","`"],"^":["Accent","^"],'"':["Accent","¨"],"~":["Accent","~"],"=":["Accent","¯"],".":["Accent","˙"],u:["Accent","˘"],v:["Accent","ˇ"],emph:"Emph",rm:["SetFont",TexConstants_js_1$1.TexConstant.Variant.NORMAL],mit:["SetFont",TexConstants_js_1$1.TexConstant.Variant.ITALIC],oldstyle:["SetFont",TexConstants_js_1$1.TexConstant.Variant.OLDSTYLE],cal:["SetFont",TexConstants_js_1$1.TexConstant.Variant.CALLIGRAPHIC],it:["SetFont","-tex-mathit"],bf:["SetFont",TexConstants_js_1$1.TexConstant.Variant.BOLD],bbFont:["SetFont",TexConstants_js_1$1.TexConstant.Variant.DOUBLESTRUCK],scr:["SetFont",TexConstants_js_1$1.TexConstant.Variant.SCRIPT],frak:["SetFont",TexConstants_js_1$1.TexConstant.Variant.FRAKTUR],sf:["SetFont",TexConstants_js_1$1.TexConstant.Variant.SANSSERIF],tt:["SetFont",TexConstants_js_1$1.TexConstant.Variant.MONOSPACE],tiny:["SetSize",.5],Tiny:["SetSize",.6],scriptsize:["SetSize",.7],small:["SetSize",.85],normalsize:["SetSize",1],large:["SetSize",1.2],Large:["SetSize",1.44],LARGE:["SetSize",1.73],huge:["SetSize",2.07],Huge:["SetSize",2.49],Bbb:["Macro","{\\bbFont #1}",1],textnormal:["Macro","{\\rm #1}",1],textup:["Macro","{\\rm #1}",1],textrm:["Macro","{\\rm #1}",1],textit:["Macro","{\\it #1}",1],textbf:["Macro","{\\bf #1}",1],textsf:["Macro","{\\sf #1}",1],texttt:["Macro","{\\tt #1}",1],dagger:["Insert","†"],ddagger:["Insert","‡"],S:["Insert","§"],",":["Spacer",lengths_js_1.MATHSPACE.thinmathspace],":":["Spacer",lengths_js_1.MATHSPACE.mediummathspace],">":["Spacer",lengths_js_1.MATHSPACE.mediummathspace],";":["Spacer",lengths_js_1.MATHSPACE.thickmathspace],"!":["Spacer",lengths_js_1.MATHSPACE.negativethinmathspace],enspace:["Spacer",.5],quad:["Spacer",1],qquad:["Spacer",2],thinspace:["Spacer",lengths_js_1.MATHSPACE.thinmathspace],negthinspace:["Spacer",lengths_js_1.MATHSPACE.negativethinmathspace],hskip:"Hskip",hspace:"Hskip",kern:"Hskip",mskip:"Hskip",mspace:"Hskip",mkern:"Hskip",rule:"rule",Rule:["Rule"],Space:["Rule","blank"],color:"CheckAutoload",textcolor:"CheckAutoload",colorbox:"CheckAutoload",fcolorbox:"CheckAutoload",href:"CheckAutoload",style:"CheckAutoload",class:"CheckAutoload",cssId:"CheckAutoload",unicode:"CheckAutoload",ref:["HandleRef",!1],eqref:["HandleRef",!0]},TextMacrosMethods_js_1$1.TextMacrosMethods);var _a,__importDefault=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(TextMacrosConfiguration,"__esModule",{value:!0}),TextMacrosConfiguration.TextMacrosConfiguration=TextMacrosConfiguration.TextBaseConfiguration=void 0;var Configuration_js_1$1=Configuration,ParseOptions_js_1=__importDefault(ParseOptions$1),Tags_js_1=Tags,BaseItems_js_1=BaseItems,TextParser_js_1=TextParser$1,TextMacrosMethods_js_1=TextMacrosMethods;function internalMath(e,t,n,r){var i=e.configuration.packageData.get("textmacros");return e instanceof TextParser_js_1.TextParser||(i.texParser=e),[new TextParser_js_1.TextParser(t,r?{mathvariant:r}:{},i.parseOptions,n).mml()]}TextMacrosConfiguration.TextBaseConfiguration=Configuration_js_1$1.Configuration.create("text-base",{parser:"text",handler:{character:["command","text-special"],macro:["text-macros"]},fallback:{character:function(e,t){e.text+=t},macro:function(e,t){var n=e.texParser,r=n.lookup("macro",t);r&&r._func!==TextMacrosMethods_js_1.TextMacrosMethods.Macro&&e.Error("MathMacro","%1 is only supported in math mode","\\"+t),n.parse("macro",[e,t])}},items:(_a={},_a[BaseItems_js_1.StartItem.prototype.kind]=BaseItems_js_1.StartItem,_a[BaseItems_js_1.StopItem.prototype.kind]=BaseItems_js_1.StopItem,_a[BaseItems_js_1.MmlItem.prototype.kind]=BaseItems_js_1.MmlItem,_a[BaseItems_js_1.StyleItem.prototype.kind]=BaseItems_js_1.StyleItem,_a)}),TextMacrosConfiguration.TextMacrosConfiguration=Configuration_js_1$1.Configuration.create("textmacros",{config:function(e,t){var n=new Configuration_js_1$1.ParserConfiguration(t.parseOptions.options.textmacros.packages,["tex","text"]);n.init();var r=new ParseOptions_js_1.default(n,[]);r.options=t.parseOptions.options,n.config(t),Tags_js_1.TagsFactory.addTags(n.tags),r.tags=Tags_js_1.TagsFactory.getDefault(),r.tags.configuration=r,r.packageData=t.parseOptions.packageData,r.packageData.set("textmacros",{parseOptions:r,jax:t,texParser:null}),r.options.internalMath=internalMath},preprocessors:[function(e){var t=e.data.packageData.get("textmacros");t.parseOptions.nodeFactory.setMmlFactory(t.jax.mmlFactory)}],options:{textmacros:{packages:["text-base"]}}});var UpgreekConfiguration={};Object.defineProperty(UpgreekConfiguration,"__esModule",{value:!0}),UpgreekConfiguration.UpgreekConfiguration=void 0;var Configuration_js_1=Configuration,SymbolMap_js_1=SymbolMap,TexConstants_js_1=TexConstants;function mathchar0miNormal(e,t){var n=t.attributes||{};n.mathvariant=TexConstants_js_1.TexConstant.Variant.NORMAL;var r=e.create("token","mi",n,t.char);e.Push(r)}new SymbolMap_js_1.CharacterMap("upgreek",mathchar0miNormal,{upalpha:"α",upbeta:"β",upgamma:"γ",updelta:"δ",upepsilon:"ϵ",upzeta:"ζ",upeta:"η",uptheta:"θ",upiota:"ι",upkappa:"κ",uplambda:"λ",upmu:"μ",upnu:"ν",upxi:"ξ",upomicron:"ο",uppi:"π",uprho:"ρ",upsigma:"σ",uptau:"τ",upupsilon:"υ",upphi:"ϕ",upchi:"χ",uppsi:"ψ",upomega:"ω",upvarepsilon:"ε",upvartheta:"ϑ",upvarpi:"ϖ",upvarrho:"ϱ",upvarsigma:"ς",upvarphi:"φ",Upgamma:"Γ",Updelta:"Δ",Uptheta:"Θ",Uplambda:"Λ",Upxi:"Ξ",Uppi:"Π",Upsigma:"Σ",Upupsilon:"Υ",Upphi:"Φ",Uppsi:"Ψ",Upomega:"Ω"}),UpgreekConfiguration.UpgreekConfiguration=Configuration_js_1.Configuration.create("upgreek",{handler:{macro:["upgreek"]}});var UnicodeConfiguration={};!function(e){var t=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.UnicodeConfiguration=e.UnicodeMethods=void 0;var n=Configuration,r=t(TexError$1),i=SymbolMap,o=t(requireParseUtil()),a=t(NodeUtil$1),s=Entities;e.UnicodeMethods={};var l={};e.UnicodeMethods.Unicode=function(e,t){var n=e.GetBrackets(t),i=null,c=null;n&&(n.replace(/ /g,"").match(/^(\d+(\.\d*)?|\.\d+),(\d+(\.\d*)?|\.\d+)$/)?(i=n.replace(/ /g,"").split(/,/),c=e.GetBrackets(t)):c=n);var T=o.default.trimSpaces(e.GetArgument(t)).replace(/^0x/,"x");if(!T.match(/^(x[0-9A-Fa-f]+|[0-9]+)$/))throw new r.default("BadUnicode","Argument to \\unicode must be a number");var Q=parseInt(T.match(/^x/)?"0"+T:T);l[Q]?c||(c=l[Q][2]):l[Q]=[800,200,c,Q],i&&(l[Q][0]=Math.floor(1e3*parseFloat(i[0])),l[Q][1]=Math.floor(1e3*parseFloat(i[1])));var d=e.stack.env.font,u={};c?(l[Q][2]=u.fontfamily=c.replace(/'/g,"'"),d&&(d.match(/bold/)&&(u.fontweight="bold"),d.match(/italic|-mathit/)&&(u.fontstyle="italic"))):d&&(u.mathvariant=d);var p=e.create("token","mtext",u,(0,s.numeric)(T));a.default.setProperty(p,"unicode",!0),e.Push(p)},new i.CommandMap("unicode",{unicode:"Unicode"},e.UnicodeMethods),e.UnicodeConfiguration=n.Configuration.create("unicode",{handler:{macro:["unicode"]}})}(UnicodeConfiguration);var VerbConfiguration={};!function(e){var t=commonjsGlobal&&commonjsGlobal.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.VerbConfiguration=e.VerbMethods=void 0;var n=Configuration,r=TexConstants,i=SymbolMap,o=t(TexError$1);e.VerbMethods={},e.VerbMethods.Verb=function(e,t){var n=e.GetNext(),i=++e.i;if(""===n)throw new o.default("MissingArgFor","Missing argument for %1",t);for(;e.i<e.string.length&&e.string.charAt(e.i)!==n;)e.i++;if(e.i===e.string.length)throw new o.default("NoClosingDelim","Can't find closing delimiter for %1",e.currentCS);var a=e.string.slice(i,e.i).replace(/ /g," ");e.i++,e.Push(e.create("token","mtext",{mathvariant:r.TexConstant.Variant.MONOSPACE},a))},new i.CommandMap("verb",{verb:"Verb"},e.VerbMethods),e.VerbConfiguration=n.Configuration.create("verb",{handler:{macro:["verb"]}})}(VerbConfiguration),Object.defineProperty(AllPackages,"__esModule",{value:!0});var AllPackages_1=AllPackages.AllPackages=void 0;requireMathtoolsConfiguration(),"undefined"!=typeof MathJax&&MathJax.loader&&MathJax.loader.preLoad("[tex]/action","[tex]/ams","[tex]/amscd","[tex]/bbox","[tex]/boldsymbol","[tex]/braket","[tex]/bussproofs","[tex]/cancel","[tex]/cases","[tex]/centernot","[tex]/color","[tex]/colorv2","[tex]/colortbl","[tex]/empheq","[tex]/enclose","[tex]/extpfeil","[tex]/gensymb","[tex]/html","[tex]/mathtools","[tex]/mhchem","[tex]/newcommand","[tex]/noerrors","[tex]/noundefined","[tex]/physics","[tex]/upgreek","[tex]/unicode","[tex]/verb","[tex]/configmacros","[tex]/tagformat","[tex]/textcomp","[tex]/textmacros","[tex]/setoptions"),AllPackages_1=AllPackages.AllPackages=["base","action","ams","amscd","bbox","boldsymbol","braket","bussproofs","cancel","cases","centernot","color","colortbl","empheq","enclose","extpfeil","gensymb","html","mathtools","mhchem","newcommand","noerrors","noundefined","upgreek","unicode","verb","configmacros","tagformat","textcomp","textmacros"];const updateEquation=async(e,t,n,r,i)=>{const o=await tex2dataURL(e);if(o){const e=[];e.push({mimeType:o.mimeType,id:t,dataURL:o.dataURL,created:o.created,size:o.size,hasSVGwithBitmap:!1,shouldScale:!0}),r(e,n)}};let adaptor,input,output,html,preamble;const loadPreamble=async()=>{const e=app.vault.getAbstractFileByPath("preamble.sty");preamble=e&&e instanceof obsidian_module.TFile?await app.vault.read(e):null};async function tex2dataURL(e,t=4){adaptor||(await loadPreamble(),adaptor=liteAdaptor_2(),RegisterHTMLHandler_1(adaptor),input=new TeX_1(Object.assign({packages:AllPackages_1},Boolean(preamble)?{inlineMath:[["$","$"]],displayMath:[["$$","$$"]]}:{})),output=new svgExports.SVG({fontCache:"local"}),html=mathjax.mathjax.document("",{InputJax:input,OutputJax:output}));try{const n=html.convert(Boolean(preamble)?`${preamble}${e}`:e,{display:!0,scale:t}),r=(new DOMParser).parseFromString(adaptor.innerHTML(n),"image/svg+xml").firstChild;if(r){r.width.baseVal.valueInSpecifiedUnits<2&&(r.width.baseVal.valueAsString=`${(r.width.baseVal.valueInSpecifiedUnits+1).toFixed(3)}ex`);const e=svgToBase64(r.outerHTML);r.width.baseVal.valueAsString=(10*r.width.baseVal.valueInSpecifiedUnits).toFixed(3),r.height.baseVal.valueAsString=(10*r.height.baseVal.valueInSpecifiedUnits).toFixed(3);const t=svgToBase64(r.outerHTML);return{mimeType:"image/svg+xml",fileId:fileid(),dataURL:t,created:Date.now(),size:await getImageSize(e)}}}catch(e){console.error(e)}return null}const getMermaidImageElements=e=>e?e.filter((e=>{var t;return"image"===e.type&&(null===(t=e.customData)||void 0===t?void 0:t.mermaidText)})):[],getMermaidText=e=>{var t;return null===(t=e.customData)||void 0===t?void 0:t.mermaidText},shouldRenderMermaid=()=>obsidian_module.requireApiVersion("1.4.14"),markdownRendererRecursionWatcthdog=new Set,IMAGE_MIME_TYPES={svg:"image/svg+xml",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",bmp:"image/bmp",ico:"image/x-icon",avif:"image/avif",jfif:"image/jfif"},replaceSVGColors=(e,t)=>{if(!t)return e;if("string"==typeof e){for(const[n,r]of Object.entries(t)){const t=new RegExp(`fill="${n}"`,"gi");e=e.replaceAll(t,`fill="${r}"`);const i=new RegExp(`fill:${n}`,"gi");e=e.replaceAll(i,`fill:${r}`);const o=new RegExp(`stroke="${n}"`,"gi");e=e.replaceAll(o,`stroke="${r}"`);const a=new RegExp(`stroke:${n}`,"gi");e=e.replaceAll(a,`stroke:${r}`)}return e}const n=e=>{var r,i;if(e instanceof SVGElement){const n=null===(r=e.getAttribute("fill"))||void 0===r?void 0:r.toLocaleLowerCase(),o=null===(i=e.getAttribute("stroke"))||void 0===i?void 0:i.toLocaleLowerCase();n&&t[n]&&e.setAttribute("fill",t[n]),o&&t[o]&&e.setAttribute("stroke",t[o])}for(const t of e.childNodes)n(t)};for(const t of e.childNodes)n(t);return e};class EmbeddedFile{constructor(e,t,n,r){if(this.file=null,this.isSVGwithBitmap=!1,this.img="",this.imgInverted="",this.mtime=0,this.mimeType="application/octet-stream",this.size={height:0,width:0},this.attemptCounter=0,this.isHyperLink=!1,this.isLocalLink=!1,this.colorMap=null,this.plugin=e,this.resetImage(t,n),this.file&&(this.plugin.ea.isExcalidrawFile(this.file)||"svg"===this.file.extension.toLowerCase()))try{this.colorMap=r?JSON.parse(r.toLocaleLowerCase()):null}catch(e){this.colorMap=null}}resetImage(e,t){return this.imgInverted=this.img="",this.mtime=0,t.startsWith("https://")||t.startsWith("http://")||t.startsWith("ftp://")||t.startsWith("ftps://")?(this.isHyperLink=!0,void(this.hyperlink=t)):t.startsWith("file://")?(this.isLocalLink=!0,void(this.hyperlink=t)):(this.linkParts=getLinkParts(t),this.hostPath=e,void(this.linkParts.path?(this.linkParts.width||(this.linkParts.width=this.plugin.settings.mdSVGwidth),this.linkParts.height||(this.linkParts.height=this.plugin.settings.mdSVGmaxHeight),this.file=app.metadataCache.getFirstLinkpathDest(this.linkParts.path,e),this.file||0==this.attemptCounter++&&new obsidian_module.Notice(`Excalidraw Warning: could not find image file: ${t}`,5e3)):new obsidian_module.Notice(`Excalidraw Error\nIncorrect embedded filename: ${t}`)))}fileChanged(){return!this.isHyperLink&&!this.isLocalLink&&(this.file||(this.file=this.plugin.app.metadataCache.getFirstLinkpathDest(this.linkParts.path,this.hostPath),this.file)?this.mtime!=this.file.stat.mtime:(this.attemptCounter++,!1))}setImage(e,t,n,r,i){if(this.file||this.isHyperLink||this.isLocalLink){switch(this.fileChanged()&&(this.imgInverted=this.img=""),this.mtime=this.isHyperLink||this.isLocalLink?0:this.file.stat.mtime,this.size=n,this.mimeType=t,r&&i){case!0:this.imgInverted=e;break;case!1:this.img=e}this.isSVGwithBitmap=i}}isLoaded(e){if(!this.isHyperLink&&!this.isLocalLink){if(!this.file&&(this.file=app.metadataCache.getFirstLinkpathDest(this.linkParts.path,this.hostPath),!this.file))return this.attemptCounter++,!0;if(this.fileChanged())return!1}return this.isSVGwithBitmap&&e?""!==this.imgInverted:""!==this.img}getImage(e){return this.file||this.isHyperLink||this.isLocalLink?e&&this.isSVGwithBitmap?this.imgInverted:this.img:""}shouldScale(){return this.isHyperLink||this.isLocalLink||!Boolean(this.linkParts&&this.linkParts.original&&this.linkParts.original.endsWith("|100%"))}}class EmbeddedFilesLoader{constructor(e,t){this.pdfDocsMap=new Map,this.terminate=!1,this.plugin=e,this.isDark=t,this.uid=nanoid()}emptyPDFDocsMap(){this.pdfDocsMap.forEach((e=>e.destroy())),this.pdfDocsMap.clear()}async getObsidianImage(e,t){const n=await this._getObsidianImage(e,t);return this.emptyPDFDocsMap(),n}async getExcalidrawSVG({isDark:e,file:t,depth:n,inFile:r,hasSVGwithBitmap:i,elements:o=[]}){const a=isMaskFile(this.plugin,t),s=hasExportTheme(this.plugin,t)?getExportTheme(this.plugin,t,"light"):void 0,l={withBackground:!!hasExportBackground(this.plugin,t)&&getWithBackground(this.plugin,t),withTheme:!!s,isMask:a},c=replaceSVGColors(await createSVG(null==t?void 0:t.path,!0,l,this,s,null,null,o,this.plugin,n+1,getExportPadding(this.plugin,t)),r instanceof EmbeddedFile?r.colorMap:null),T=c.querySelectorAll("image:not([href^='data:image/svg'])");return T.length>0&&(i=!0),i&&e&&T.forEach((e=>{var t;const n=null===(t=e.parentElement)||void 0===t?void 0:t.id;c.querySelectorAll(`use[href='#${n}']`).forEach((e=>{e.setAttribute("filter",THEME_FILTER)}))})),!i&&c.getAttribute("hasbitmap")&&(i=!0),{dataURL:svgToBase64(c.outerHTML),hasSVGwithBitmap:i}}getLocalPath(e){const t=e.split("file://")[1];return t.startsWith("/")?t.substring(1):t}async _getObsidianImage(e,t){var n;if(!this.plugin||!e)return null;const r=e instanceof EmbeddedFile&&e.isHyperLink,i=e instanceof EmbeddedFile&&e.isLocalLink,o=e instanceof EmbeddedFile?e.hyperlink:"",a=e instanceof EmbeddedFile?e.file:e;if(a&&markdownRendererRecursionWatcthdog.has(a))return new obsidian_module.Notice(`Loading of ${a.path}. Please check if there is an inifinite loop of one file embedded in the other.`),null;const s=r?null:e instanceof EmbeddedFile?e.linkParts:{original:a.path,path:a.path,isBlockRef:!1,ref:null,width:this.plugin.settings.mdSVGwidth,height:this.plugin.settings.mdSVGmaxHeight,page:null};let l=!1;const c=!r&&!i&&this.plugin.isExcalidrawFile(a),T=!r&&!i&&"pdf"===a.extension.toLowerCase();if(!(r||T||i||IMAGE_TYPES.contains(a.extension)||c||"md"===a.extension))return null;const Q=r||T?null:i?await readLocalFileBinary(this.getLocalPath(e.hyperlink)):await app.vault.readBinary(a);let d=null;if(c){const n=await this.getExcalidrawSVG({isDark:this.isDark,file:a,depth:t,inFile:e,hasSVGwithBitmap:l});d=n.dataURL,l=n.hasSVGwithBitmap}const u=c?d:null,[p,h]=T?await this.pdfToDataURL(a,s):[null,null];let m=T?"image/png":"image/svg+xml";const f=r||i?getURLImageExtension(o):a.extension;c||T||(m=getMimeType(f));let g=r?e instanceof EmbeddedFile?await getDataURLFromURL(e.hyperlink,m):null:null!==(n=null!=u?u:p)&&void 0!==n?n:"svg"===(null==a?void 0:a.extension)?await getSVGData(app,a,e instanceof EmbeddedFile?e.colorMap:null):"md"===(null==a?void 0:a.extension)?null:await getDataURL(Q,m);if(!r&&!g&&!i){markdownRendererRecursionWatcthdog.add(a);const e=await this.convertMarkdownToSVG(this.plugin,a,s,t);markdownRendererRecursionWatcthdog.delete(a),g=e.dataURL,l=e.hasSVGwithBitmap}try{const e=T?h:await getImageSize(g);return{mimeType:m,fileId:await generateIdFromFile(r||T?(new TextEncoder).encode(g):Q),dataURL:g,created:r||i?0:a.stat.mtime,hasSVGwithBitmap:l,size:e}}catch(e){return null}}async loadSceneFiles(e,t,n){var r,i;if(n>7)return void new obsidian_module.Notice(t$d("INFINITE_LOOP_WARNING")+n.toString(),6e3);const o=e.getFileEntries();let a;void 0===this.isDark&&(this.isDark="dark"===(null===(i=null===(r=null==e?void 0:e.scene)||void 0===r?void 0:r.appState)||void 0===i?void 0:i.theme));const s=[];for(;!this.terminate&&!(a=o.next()).done;){const e=a.value[1];if(!e.isLoaded(this.isDark)){const r=await this._getObsidianImage(e,n);if(r){const n={mimeType:r.mimeType,id:a.value[0],dataURL:r.dataURL,created:r.created,size:r.size,hasSVGwithBitmap:r.hasSVGwithBitmap,shouldScale:e.shouldScale()};try{t([n],this.isDark,!1)}catch(e){errorlog({where:"EmbeddedFileLoader.loadSceneFiles",error:e})}}}}let l;const c=e.getEquationEntries();for(;!this.terminate&&!(l=c.next()).done;)if(!e.getEquation(l.value[0]).isLoaded){const e=l.value[1].latex,t=await tex2dataURL(e);if(t){const e={mimeType:t.mimeType,id:l.value[0],dataURL:t.dataURL,created:t.created,size:t.size,hasSVGwithBitmap:!1,shouldScale:!0};s.push(e)}}if(shouldRenderMermaid()){const t=getMermaidImageElements(e.scene.elements);for(const e of t){if(this.terminate)continue;const t=getMermaidText(e),r=await mermaidToExcalidraw(t,{fontSize:20},!0);if(r)if(null==r?void 0:r.files)for(const t in r.files){const n=Object.assign(Object.assign({},r.files[t]),{id:e.fileId,created:Date.now(),hasSVGwithBitmap:!1,shouldScale:!0,size:await getImageSize(r.files[t].dataURL)});s.push(n)}else if(null==r?void 0:r.elements){const t=await this.getExcalidrawSVG({isDark:this.isDark,file:null,depth:n,inFile:null,hasSVGwithBitmap:!1,elements:r.elements});if(null==t?void 0:t.dataURL){const n=await getImageSize(t.dataURL),r={mimeType:"image/svg+xml",id:e.fileId,dataURL:t.dataURL,created:Date.now(),hasSVGwithBitmap:t.hasSVGwithBitmap,size:n,shouldScale:!0};s.push(r)}}}}if(this.emptyPDFDocsMap(),!this.terminate)try{t(s,this.isDark,!0)}catch(e){errorlog({where:"EmbeddedFileLoader.loadSceneFiles",error:e})}}async pdfToDataURL(e,t){var n,r;try{let i=0,o=0;const a=null!==(n=this.pdfDocsMap.get(e.path))&&void 0!==n?n:await getPDFDoc(e);this.pdfDocsMap.has(e.path)||this.pdfDocsMap.set(e.path,a);const s=isNaN(t.page)?1:null!==(r=t.page)&&void 0!==r?r:1,l=this.plugin.settings.pdfScale,c=async e=>{const t=createEl("canvas"),n=t.getContext("2d"),r=await a.getPage(e),s=r.getViewport({scale:l});o=t.height=s.height,i=t.width=s.width;const c={canvasContext:n,background:"rgba(0,0,0,0)",viewport:s};return await r.render(c).promise,t},T=await c(s);if(T){const e=[`data:image/png;base64,${await new Promise(((e,t)=>{T.toBlob((async t=>{const n=await blobToBase64(t);e(n)}))}))}`,{width:i,height:o}];return T.width=0,T.height=0,e}}catch(e){return console.log(e),[null,null]}}async convertMarkdownToSVG(e,t,n,r){var i,o,a,s;let l=!1;const c=await getTransclusion(n,e.app,t);let T=(null!==(i=c.leadingHashes)&&void 0!==i?i:"")+c.contents;""===T&&(T="# Empty markdown file\nCTRL+Click here to open the file for editing in the current active pane, or CTRL+SHIFT+Click to open it in an adjacent pane.");const Q=e.app.metadataCache.getFileCache(t);let d,u=e.settings.mdFont;switch((null==Q?void 0:Q.frontmatter)&&Boolean(Q.frontmatter[FRONTMATTER_KEYS.font.name])&&(u=Q.frontmatter[FRONTMATTER_KEYS.font.name]),u){case"Virgil":d=VIRGIL_FONT;break;case"Cascadia":d=CASCADIA_FONT;break;case"Assistant":d=ASSISTANT_FONT;break;case"":d="";break;default:const n=await getFontDataURL(e.app,u,t.path);d=n.fontDef,u=n.fontName}(null==Q?void 0:Q.frontmatter)&&null!==Q.frontmatter.banner&&(T=T.replace(/banner:\s*.*/,""));const p=(null==Q?void 0:Q.frontmatter)&&null!==(o=Q.frontmatter[FRONTMATTER_KEYS["font-color"].name])&&void 0!==o?o:e.settings.mdFontColor;let h=(null==Q?void 0:Q.frontmatter)&&null!==(a=Q.frontmatter[FRONTMATTER_KEYS["md-css"].name])&&void 0!==a?a:"",m=!1;if(h&&""!=h){const n=e.app.metadataCache.getFirstLinkpathDest(h,t.path);n&&(h=await e.app.vault.read(n),m=!0)}if(!m)if(e.settings.mdCSS&&""!==e.settings.mdCSS){const n=e.app.metadataCache.getFirstLinkpathDest(e.settings.mdCSS,t.path);h+=n?`\n${await e.app.vault.read(n)}`:DEFAULT_MD_EMBED_CSS}else h+=DEFAULT_MD_EMBED_CSS;const f=(null==Q?void 0:Q.frontmatter)&&null!==(s=Q.frontmatter[FRONTMATTER_KEYS["border-color"].name])&&void 0!==s?s:e.settings.mdBorderColor;f&&""!==f&&!h.match(/svg/i)&&(h+=`svg{border:2px solid;color:${f};transform:scale(.95)}`);let g=` width="${n.width}px" height="100000"`,b=` width="${n.width}px" height="100%"`;const y=(e,t,n)=>`<svg xmlns="http://www.w3.org/2000/svg"${g}>${n?`<style>${n}</style>`:""}<foreignObject x="0" y="0"${b}>${e}${t}</foreignObject>${""!==d?`<defs><style>${d}</style></defs>`:""}</svg>`,L=createDiv();L.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),L.setAttribute("class","excalidraw-md-host"),""!==u&&(L.style.fontFamily=u),L.style.overflow="auto",L.style.display="block",L.style.color=p&&""!==p?p:"initial",await obsidian_module.MarkdownRenderer.renderMarkdown(T,L,t.path,e),L.querySelectorAll(":scope > *[class^='frontmatter']").forEach((e=>L.removeChild(e)));const v=Array.from(L.querySelectorAll("span[class='internal-embed']"));for(let n=0;n<v.length;n++){const r=v[n],i=r.getAttribute("src");if(!i)continue;const o=r.getAttribute("width"),a=r.getAttribute("height"),s=new EmbeddedFile(e,t.path,i);if(!s.file)continue;const l=await this._getObsidianImage(s,1),c=createEl("img");o&&c.setAttribute("width",o),a&&c.setAttribute("height",a),c.src=l.dataURL,r.replaceWith(c)}const w=document.body.createDiv();w.style.display="none";const E=w.createEl("iframe").contentWindow.document;if(h){const e=E.createElement("style");e.type="text/css",e.innerHTML=h,E.head.appendChild(e)}const _=E.importNode(L,!0);E.body.appendChild(_);const M=createDiv();M.setAttribute("class","excalidraw-md-footer"),E.body.appendChild(M),E.body.querySelectorAll("*").forEach((e=>{const t=e.style,n=window.getComputedStyle(e);let r="";for(const e in t)t.hasOwnProperty(e)&&(r+=`${e}: ${n[e]};`);e.setAttribute("style",r)}));const x=(new XMLSerializer).serializeToString(_),H=(new XMLSerializer).serializeToString(M);document.body.removeChild(w);const S=new DOMParser,A=S.parseFromString(y(x,H),"image/svg+xml").firstElementChild,C=createDiv();C.appendChild(A),document.body.appendChild(C);const O=A.querySelector(".excalidraw-md-footer").scrollHeight,I=A.querySelector(".excalidraw-md-host").scrollHeight+O,V=I<=n.height?I:n.height;document.body.removeChild(C),g=` width="${n.width}px" height="${V}px"`,b=` width="${n.width}px" height="${V}px"`,L.style.height=V-O+"px",L.style.overflow="hidden";const k=L.querySelectorAll("img:not([src^='data:image/svg+xml'])");k.length>0&&(l=!0),l&&this.isDark&&k.forEach((e=>{e instanceof HTMLImageElement&&(e.style.filter=THEME_FILTER)}));const N=y((new XMLSerializer).serializeToString(L),'<div class="excalidraw-md-footer"></div>',h);return e.ea.mostRecentMarkdownSVG=S.parseFromString(N,"image/svg+xml").firstElementChild,{dataURL:svgToBase64(N),hasSVGwithBitmap:l}}}const getSVGData=async(e,t,n)=>{const r=replaceSVGColors(await e.vault.read(t),n);return svgToBase64(r)},generateIdFromFile=async e=>{let t;try{const n=await window.crypto.subtle.digest("SHA-1",e);t=Array.from(new Uint8Array(n)).map((e=>e.toString(16).padStart(2,"0"))).join("")}catch(e){errorlog({where:"EmbeddedFileLoader.generateIdFromFile",error:e}),t=fileid()}return t},getEA=e=>{try{return window.ExcalidrawAutomate.getAPI(e)}catch(e){return console.log({message:"Excalidraw not available",fn:getEA}),null}},CROPPED_PREFIX="cropped_",ANNOTATED_PREFIX="annotated_",carveOutImage=async(e,t)=>{var n,r,i;if(!(null==t?void 0:t.fileId))return;if(!(null==e?void 0:e.targetView))return;const o=getEA(e.targetView);o.copyViewElementsToEAforEditing([t],!0);const{height:a,width:s}=await e.getOriginalImageSize(t);if(!a||!s||0===a||0===s)return;const l=o.getElement(t.id);l.x=0,l.y=0,l.width=s,l.height=a;const c=l.scale,T=l.angle;l.scale=[1,1],l.angle=0;const Q=e.targetView.excalidrawData.getFile(t.fileId);let d="",u="";if(Q.file){u=Q.file.basename;const e=(null===(n=Q.linkParts)||void 0===n?void 0:n.ref)?`#${Q.linkParts.ref}`:"";d=`[[${Q.file.path}${e}]]`}else{const e=null===(i=null===(r=Q.hyperlink)||void 0===r?void 0:r.match(/^.*\/([^?]*)\??.*$/))||void 0===i?void 0:i[1];d=Q.hyperlink,u=t?e.substring(0,e.lastIndexOf(".")):"_image"}const{folderpath:p,filename:h}=await getCropFileNameAndFolder(e.plugin,e.targetView.file.path,u),m=await createImageCropperFile(o,l.id,d,p,h);if(!m)return;e.clear(),e.copyViewElementsToEAforEditing([t]);const f=e.getElement(t.id);f.isDeleted=!0;const g=await e.addImage(f.x,f.y,m,!0),b=e.getElement(g);b.width=f.width,b.height=f.height,b.scale=c,b.angle=T,e.addElementsToView(!1,!0,!0)},carveOutPDF=async(e,t,n,r)=>{if(!t||!n||!(null==e?void 0:e.targetView))return;const i=getEA(e.targetView),{height:o,width:a}=t;if(!o||!a||0===o||0===a)return;const s=await i.addImage(0,0,n),l=i.getElement(s);l.x=0,l.y=0,l.width=a,l.height=o;const c=t.angle,T=r.basename,Q=`[[${n}]]`,{folderpath:d,filename:u}=await getCropFileNameAndFolder(e.plugin,e.targetView.file.path,T),p=await createImageCropperFile(i,l.id,Q,d,u);if(!p)return;e.clear();const h=await e.addImage(t.x+t.width+10,t.y,p,!0),m=e.getElement(h),f=m.width/m.height;f>1?(m.width=t.width,m.height=m.width/f):(m.height=t.height,m.width=m.height*f),m.angle=c,e.addElementsToView(!1,!0,!0)},createImageCropperFile=async(e,t,n,r,i)=>{var o,a;const s=e.plugin.app.vault,l=e.getElement(t),{width:c,height:T}=l,Q=null===(a=null===(o=n.match(/\[\[([^#]*)#.*]]/))||void 0===o?void 0:o[1])||void 0===a?void 0:a.endsWith(".pdf");l.opacity=100,l.locked=!0,l.link=n;const d=e.addFrame(0,0,c,T,"Adjust frame to crop image. Add elements for mask: White shows, Black hides.");e.getElement(d).link=n,l.frameId=d,e.style.opacity=50,e.style.fillStyle="solid",e.style.strokeStyle="solid",e.style.strokeColor="black",e.style.backgroundColor="black",e.style.roughness=0,e.style.roundness=null,e.canvas.theme="light",e.canvas.viewBackgroundColor=Q?"#5d5d5d":"#3d3d3d";const u=getListOfTemplateFiles(e.plugin),p=u&&u.length>0?u[0]:null;if(p&&p instanceof obsidian_module.TFile){const{appState:t}=await e.getSceneFromFile(p);t&&(e.style.fontFamily=t.currentItemFontFamily,e.style.fontSize=t.currentItemFontSize)}const h=await e.create({filename:i,foldername:r,onNewPane:!0,frontmatterKeys:Object.assign({"excalidraw-mask":!0,"excalidraw-export-dark":!1,"excalidraw-export-padding":0,"excalidraw-export-transparent":!0},Q?{cssclasses:"excalidraw-cropped-pdfpage"}:{})});let m=s.getAbstractFileByPath(h),f=0;for(;(!m||!e.isExcalidrawFile(m))&&f<50;)await sleep(100),m=s.getAbstractFileByPath(h),f++;if(m&&m instanceof obsidian_module.TFile)return m;new obsidian_module.Notice("File not found. NewExcalidraw Drawing is taking too long to create. Please try again.")}; +/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */ +function isNothing(e){return null==e}function isObject(e){return"object"==typeof e&&null!==e}function toArray(e){return Array.isArray(e)?e:isNothing(e)?[]:[e]}function extend(e,t){var n,r,i,o;if(t)for(n=0,r=(o=Object.keys(t)).length;n<r;n+=1)e[i=o[n]]=t[i];return e}function repeat(e,t){var n,r="";for(n=0;n<t;n+=1)r+=e;return r}function isNegativeZero(e){return 0===e&&Number.NEGATIVE_INFINITY===1/e}var isNothing_1=isNothing,isObject_1=isObject,toArray_1=toArray,repeat_1=repeat,isNegativeZero_1=isNegativeZero,extend_1=extend,common={isNothing:isNothing_1,isObject:isObject_1,toArray:toArray_1,repeat:repeat_1,isNegativeZero:isNegativeZero_1,extend:extend_1};function formatError(e,t){var n="",r=e.reason||"(unknown reason)";return e.mark?(e.mark.name&&(n+='in "'+e.mark.name+'" '),n+="("+(e.mark.line+1)+":"+(e.mark.column+1)+")",!t&&e.mark.snippet&&(n+="\n\n"+e.mark.snippet),r+" "+n):r}function YAMLException$1(e,t){Error.call(this),this.name="YAMLException",this.reason=e,this.mark=t,this.message=formatError(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack||""}YAMLException$1.prototype=Object.create(Error.prototype),YAMLException$1.prototype.constructor=YAMLException$1,YAMLException$1.prototype.toString=function(e){return this.name+": "+formatError(this,e)};var exception=YAMLException$1;function getLine(e,t,n,r,i){var o="",a="",s=Math.floor(i/2)-1;return r-t>s&&(t=r-s+(o=" ... ").length),n-r>s&&(n=r+s-(a=" ...").length),{str:o+e.slice(t,n).replace(/\t/g,"→")+a,pos:r-t+o.length}}function padStart(e,t){return common.repeat(" ",t-e.length)+e}function makeSnippet(e,t){if(t=Object.create(t||null),!e.buffer)return null;t.maxLength||(t.maxLength=79),"number"!=typeof t.indent&&(t.indent=1),"number"!=typeof t.linesBefore&&(t.linesBefore=3),"number"!=typeof t.linesAfter&&(t.linesAfter=2);for(var n,r=/\r?\n|\r|\0/g,i=[0],o=[],a=-1;n=r.exec(e.buffer);)o.push(n.index),i.push(n.index+n[0].length),e.position<=n.index&&a<0&&(a=i.length-2);a<0&&(a=i.length-1);var s,l,c="",T=Math.min(e.line+t.linesAfter,o.length).toString().length,Q=t.maxLength-(t.indent+T+3);for(s=1;s<=t.linesBefore&&!(a-s<0);s++)l=getLine(e.buffer,i[a-s],o[a-s],e.position-(i[a]-i[a-s]),Q),c=common.repeat(" ",t.indent)+padStart((e.line-s+1).toString(),T)+" | "+l.str+"\n"+c;for(l=getLine(e.buffer,i[a],o[a],e.position,Q),c+=common.repeat(" ",t.indent)+padStart((e.line+1).toString(),T)+" | "+l.str+"\n",c+=common.repeat("-",t.indent+T+3+l.pos)+"^\n",s=1;s<=t.linesAfter&&!(a+s>=o.length);s++)l=getLine(e.buffer,i[a+s],o[a+s],e.position-(i[a]-i[a+s]),Q),c+=common.repeat(" ",t.indent)+padStart((e.line+s+1).toString(),T)+" | "+l.str+"\n";return c.replace(/\n$/,"")}var snippet=makeSnippet,TYPE_CONSTRUCTOR_OPTIONS=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],YAML_NODE_KINDS=["scalar","sequence","mapping"];function compileStyleAliases(e){var t={};return null!==e&&Object.keys(e).forEach((function(n){e[n].forEach((function(e){t[String(e)]=n}))})),t}function Type$1(e,t){if(t=t||{},Object.keys(t).forEach((function(t){if(-1===TYPE_CONSTRUCTOR_OPTIONS.indexOf(t))throw new exception('Unknown option "'+t+'" is met in definition of "'+e+'" YAML type.')})),this.options=t,this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(e){return e},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.representName=t.representName||null,this.defaultStyle=t.defaultStyle||null,this.multi=t.multi||!1,this.styleAliases=compileStyleAliases(t.styleAliases||null),-1===YAML_NODE_KINDS.indexOf(this.kind))throw new exception('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}var type=Type$1;function compileList(e,t){var n=[];return e[t].forEach((function(e){var t=n.length;n.forEach((function(n,r){n.tag===e.tag&&n.kind===e.kind&&n.multi===e.multi&&(t=r)})),n[t]=e})),n}function compileMap(){var e,t,n={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function r(e){e.multi?(n.multi[e.kind].push(e),n.multi.fallback.push(e)):n[e.kind][e.tag]=n.fallback[e.tag]=e}for(e=0,t=arguments.length;e<t;e+=1)arguments[e].forEach(r);return n}function Schema$1(e){return this.extend(e)}Schema$1.prototype.extend=function(e){var t=[],n=[];if(e instanceof type)n.push(e);else if(Array.isArray(e))n=n.concat(e);else{if(!e||!Array.isArray(e.implicit)&&!Array.isArray(e.explicit))throw new exception("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");e.implicit&&(t=t.concat(e.implicit)),e.explicit&&(n=n.concat(e.explicit))}t.forEach((function(e){if(!(e instanceof type))throw new exception("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(e.loadKind&&"scalar"!==e.loadKind)throw new exception("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(e.multi)throw new exception("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")})),n.forEach((function(e){if(!(e instanceof type))throw new exception("Specified list of YAML types (or a single Type object) contains a non-Type object.")}));var r=Object.create(Schema$1.prototype);return r.implicit=(this.implicit||[]).concat(t),r.explicit=(this.explicit||[]).concat(n),r.compiledImplicit=compileList(r,"implicit"),r.compiledExplicit=compileList(r,"explicit"),r.compiledTypeMap=compileMap(r.compiledImplicit,r.compiledExplicit),r};var schema=Schema$1,str=new type("tag:yaml.org,2002:str",{kind:"scalar",construct:function(e){return null!==e?e:""}}),seq=new type("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(e){return null!==e?e:[]}}),map=new type("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return null!==e?e:{}}}),failsafe=new schema({explicit:[str,seq,map]});function resolveYamlNull(e){if(null===e)return!0;var t=e.length;return 1===t&&"~"===e||4===t&&("null"===e||"Null"===e||"NULL"===e)}function constructYamlNull(){return null}function isNull(e){return null===e}var _null=new type("tag:yaml.org,2002:null",{kind:"scalar",resolve:resolveYamlNull,construct:constructYamlNull,predicate:isNull,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"});function resolveYamlBoolean(e){if(null===e)return!1;var t=e.length;return 4===t&&("true"===e||"True"===e||"TRUE"===e)||5===t&&("false"===e||"False"===e||"FALSE"===e)}function constructYamlBoolean(e){return"true"===e||"True"===e||"TRUE"===e}function isBoolean(e){return"[object Boolean]"===Object.prototype.toString.call(e)}var bool=new type("tag:yaml.org,2002:bool",{kind:"scalar",resolve:resolveYamlBoolean,construct:constructYamlBoolean,predicate:isBoolean,represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"});function isHexCode(e){return 48<=e&&e<=57||65<=e&&e<=70||97<=e&&e<=102}function isOctCode(e){return 48<=e&&e<=55}function isDecCode(e){return 48<=e&&e<=57}function resolveYamlInteger(e){if(null===e)return!1;var t,n=e.length,r=0,i=!1;if(!n)return!1;if("-"!==(t=e[r])&&"+"!==t||(t=e[++r]),"0"===t){if(r+1===n)return!0;if("b"===(t=e[++r])){for(r++;r<n;r++)if("_"!==(t=e[r])){if("0"!==t&&"1"!==t)return!1;i=!0}return i&&"_"!==t}if("x"===t){for(r++;r<n;r++)if("_"!==(t=e[r])){if(!isHexCode(e.charCodeAt(r)))return!1;i=!0}return i&&"_"!==t}if("o"===t){for(r++;r<n;r++)if("_"!==(t=e[r])){if(!isOctCode(e.charCodeAt(r)))return!1;i=!0}return i&&"_"!==t}}if("_"===t)return!1;for(;r<n;r++)if("_"!==(t=e[r])){if(!isDecCode(e.charCodeAt(r)))return!1;i=!0}return!(!i||"_"===t)}function constructYamlInteger(e){var t,n=e,r=1;if(-1!==n.indexOf("_")&&(n=n.replace(/_/g,"")),"-"!==(t=n[0])&&"+"!==t||("-"===t&&(r=-1),t=(n=n.slice(1))[0]),"0"===n)return 0;if("0"===t){if("b"===n[1])return r*parseInt(n.slice(2),2);if("x"===n[1])return r*parseInt(n.slice(2),16);if("o"===n[1])return r*parseInt(n.slice(2),8)}return r*parseInt(n,10)}function isInteger(e){return"[object Number]"===Object.prototype.toString.call(e)&&e%1==0&&!common.isNegativeZero(e)}var int=new type("tag:yaml.org,2002:int",{kind:"scalar",resolve:resolveYamlInteger,construct:constructYamlInteger,predicate:isInteger,represent:{binary:function(e){return e>=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),YAML_FLOAT_PATTERN=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function resolveYamlFloat(e){return null!==e&&!(!YAML_FLOAT_PATTERN.test(e)||"_"===e[e.length-1])}function constructYamlFloat(e){var t,n;return n="-"===(t=e.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(t[0])>=0&&(t=t.slice(1)),".inf"===t?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===t?NaN:n*parseFloat(t,10)}var SCIENTIFIC_WITHOUT_DOT=/^[-+]?[0-9]+e/;function representYamlFloat(e,t){var n;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(common.isNegativeZero(e))return"-0.0";return n=e.toString(10),SCIENTIFIC_WITHOUT_DOT.test(n)?n.replace("e",".e"):n}function isFloat(e){return"[object Number]"===Object.prototype.toString.call(e)&&(e%1!=0||common.isNegativeZero(e))}var float=new type("tag:yaml.org,2002:float",{kind:"scalar",resolve:resolveYamlFloat,construct:constructYamlFloat,predicate:isFloat,represent:representYamlFloat,defaultStyle:"lowercase"}),json=failsafe.extend({implicit:[_null,bool,int,float]}),core=json,YAML_DATE_REGEXP=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),YAML_TIMESTAMP_REGEXP=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function resolveYamlTimestamp(e){return null!==e&&(null!==YAML_DATE_REGEXP.exec(e)||null!==YAML_TIMESTAMP_REGEXP.exec(e))}function constructYamlTimestamp(e){var t,n,r,i,o,a,s,l,c=0,T=null;if(null===(t=YAML_DATE_REGEXP.exec(e))&&(t=YAML_TIMESTAMP_REGEXP.exec(e)),null===t)throw new Error("Date resolve error");if(n=+t[1],r=+t[2]-1,i=+t[3],!t[4])return new Date(Date.UTC(n,r,i));if(o=+t[4],a=+t[5],s=+t[6],t[7]){for(c=t[7].slice(0,3);c.length<3;)c+="0";c=+c}return t[9]&&(T=6e4*(60*+t[10]+ +(t[11]||0)),"-"===t[9]&&(T=-T)),l=new Date(Date.UTC(n,r,i,o,a,s,c)),T&&l.setTime(l.getTime()-T),l}function representYamlTimestamp(e){return e.toISOString()}var timestamp=new type("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:resolveYamlTimestamp,construct:constructYamlTimestamp,instanceOf:Date,represent:representYamlTimestamp});function resolveYamlMerge(e){return"<<"===e||null===e}var merge=new type("tag:yaml.org,2002:merge",{kind:"scalar",resolve:resolveYamlMerge}),BASE64_MAP="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";function resolveYamlBinary(e){if(null===e)return!1;var t,n,r=0,i=e.length,o=BASE64_MAP;for(n=0;n<i;n++)if(!((t=o.indexOf(e.charAt(n)))>64)){if(t<0)return!1;r+=6}return r%8==0}function constructYamlBinary(e){var t,n,r=e.replace(/[\r\n=]/g,""),i=r.length,o=BASE64_MAP,a=0,s=[];for(t=0;t<i;t++)t%4==0&&t&&(s.push(a>>16&255),s.push(a>>8&255),s.push(255&a)),a=a<<6|o.indexOf(r.charAt(t));return 0==(n=i%4*6)?(s.push(a>>16&255),s.push(a>>8&255),s.push(255&a)):18===n?(s.push(a>>10&255),s.push(a>>2&255)):12===n&&s.push(a>>4&255),new Uint8Array(s)}function representYamlBinary(e){var t,n,r="",i=0,o=e.length,a=BASE64_MAP;for(t=0;t<o;t++)t%3==0&&t&&(r+=a[i>>18&63],r+=a[i>>12&63],r+=a[i>>6&63],r+=a[63&i]),i=(i<<8)+e[t];return 0==(n=o%3)?(r+=a[i>>18&63],r+=a[i>>12&63],r+=a[i>>6&63],r+=a[63&i]):2===n?(r+=a[i>>10&63],r+=a[i>>4&63],r+=a[i<<2&63],r+=a[64]):1===n&&(r+=a[i>>2&63],r+=a[i<<4&63],r+=a[64],r+=a[64]),r}function isBinary(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)}var binary=new type("tag:yaml.org,2002:binary",{kind:"scalar",resolve:resolveYamlBinary,construct:constructYamlBinary,predicate:isBinary,represent:representYamlBinary}),_hasOwnProperty$3=Object.prototype.hasOwnProperty,_toString$2=Object.prototype.toString;function resolveYamlOmap(e){if(null===e)return!0;var t,n,r,i,o,a=[],s=e;for(t=0,n=s.length;t<n;t+=1){if(r=s[t],o=!1,"[object Object]"!==_toString$2.call(r))return!1;for(i in r)if(_hasOwnProperty$3.call(r,i)){if(o)return!1;o=!0}if(!o)return!1;if(-1!==a.indexOf(i))return!1;a.push(i)}return!0}function constructYamlOmap(e){return null!==e?e:[]}var omap=new type("tag:yaml.org,2002:omap",{kind:"sequence",resolve:resolveYamlOmap,construct:constructYamlOmap}),_toString$1=Object.prototype.toString;function resolveYamlPairs(e){if(null===e)return!0;var t,n,r,i,o,a=e;for(o=new Array(a.length),t=0,n=a.length;t<n;t+=1){if(r=a[t],"[object Object]"!==_toString$1.call(r))return!1;if(1!==(i=Object.keys(r)).length)return!1;o[t]=[i[0],r[i[0]]]}return!0}function constructYamlPairs(e){if(null===e)return[];var t,n,r,i,o,a=e;for(o=new Array(a.length),t=0,n=a.length;t<n;t+=1)r=a[t],i=Object.keys(r),o[t]=[i[0],r[i[0]]];return o}var pairs=new type("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:resolveYamlPairs,construct:constructYamlPairs}),_hasOwnProperty$2=Object.prototype.hasOwnProperty;function resolveYamlSet(e){if(null===e)return!0;var t,n=e;for(t in n)if(_hasOwnProperty$2.call(n,t)&&null!==n[t])return!1;return!0}function constructYamlSet(e){return null!==e?e:{}}var set=new type("tag:yaml.org,2002:set",{kind:"mapping",resolve:resolveYamlSet,construct:constructYamlSet}),_default=core.extend({implicit:[timestamp,merge],explicit:[binary,omap,pairs,set]}),_hasOwnProperty$1=Object.prototype.hasOwnProperty,CONTEXT_FLOW_IN=1,CONTEXT_FLOW_OUT=2,CONTEXT_BLOCK_IN=3,CONTEXT_BLOCK_OUT=4,CHOMPING_CLIP=1,CHOMPING_STRIP=2,CHOMPING_KEEP=3,PATTERN_NON_PRINTABLE=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,PATTERN_NON_ASCII_LINE_BREAKS=/[\x85\u2028\u2029]/,PATTERN_FLOW_INDICATORS=/[,\[\]\{\}]/,PATTERN_TAG_HANDLE=/^(?:!|!!|![a-z\-]+!)$/i,PATTERN_TAG_URI=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function _class(e){return Object.prototype.toString.call(e)}function is_EOL(e){return 10===e||13===e}function is_WHITE_SPACE(e){return 9===e||32===e}function is_WS_OR_EOL(e){return 9===e||32===e||10===e||13===e}function is_FLOW_INDICATOR(e){return 44===e||91===e||93===e||123===e||125===e}function fromHexCode(e){var t;return 48<=e&&e<=57?e-48:97<=(t=32|e)&&t<=102?t-97+10:-1}function escapedHexLen(e){return 120===e?2:117===e?4:85===e?8:0}function fromDecimalCode(e){return 48<=e&&e<=57?e-48:-1}function simpleEscapeSequence(e){return 48===e?"\0":97===e?"":98===e?"\b":116===e||9===e?"\t":110===e?"\n":118===e?"\v":102===e?"\f":114===e?"\r":101===e?"":32===e?" ":34===e?'"':47===e?"/":92===e?"\\":78===e?"…":95===e?" ":76===e?"\u2028":80===e?"\u2029":""}function charFromCodepoint(e){return e<=65535?String.fromCharCode(e):String.fromCharCode(55296+(e-65536>>10),56320+(e-65536&1023))}for(var simpleEscapeCheck=new Array(256),simpleEscapeMap=new Array(256),i$b=0;i$b<256;i$b++)simpleEscapeCheck[i$b]=simpleEscapeSequence(i$b)?1:0,simpleEscapeMap[i$b]=simpleEscapeSequence(i$b);function State$1(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||_default,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function generateError(e,t){var n={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return n.snippet=snippet(n),new exception(t,n)}function throwError(e,t){throw generateError(e,t)}function throwWarning(e,t){e.onWarning&&e.onWarning.call(null,generateError(e,t))}var directiveHandlers={YAML:function(e,t,n){var r,i,o;null!==e.version&&throwError(e,"duplication of %YAML directive"),1!==n.length&&throwError(e,"YAML directive accepts exactly one argument"),null===(r=/^([0-9]+)\.([0-9]+)$/.exec(n[0]))&&throwError(e,"ill-formed argument of the YAML directive"),i=parseInt(r[1],10),o=parseInt(r[2],10),1!==i&&throwError(e,"unacceptable YAML version of the document"),e.version=n[0],e.checkLineBreaks=o<2,1!==o&&2!==o&&throwWarning(e,"unsupported YAML version of the document")},TAG:function(e,t,n){var r,i;2!==n.length&&throwError(e,"TAG directive accepts exactly two arguments"),r=n[0],i=n[1],PATTERN_TAG_HANDLE.test(r)||throwError(e,"ill-formed tag handle (first argument) of the TAG directive"),_hasOwnProperty$1.call(e.tagMap,r)&&throwError(e,'there is a previously declared suffix for "'+r+'" tag handle'),PATTERN_TAG_URI.test(i)||throwError(e,"ill-formed tag prefix (second argument) of the TAG directive");try{i=decodeURIComponent(i)}catch(t){throwError(e,"tag prefix is malformed: "+i)}e.tagMap[r]=i}};function captureSegment(e,t,n,r){var i,o,a,s;if(t<n){if(s=e.input.slice(t,n),r)for(i=0,o=s.length;i<o;i+=1)9===(a=s.charCodeAt(i))||32<=a&&a<=1114111||throwError(e,"expected valid JSON character");else PATTERN_NON_PRINTABLE.test(s)&&throwError(e,"the stream contains non-printable characters");e.result+=s}}function mergeMappings(e,t,n,r){var i,o,a,s;for(common.isObject(n)||throwError(e,"cannot merge mappings; the provided source object is unacceptable"),a=0,s=(i=Object.keys(n)).length;a<s;a+=1)o=i[a],_hasOwnProperty$1.call(t,o)||(t[o]=n[o],r[o]=!0)}function storeMappingPair(e,t,n,r,i,o,a,s,l){var c,T;if(Array.isArray(i))for(c=0,T=(i=Array.prototype.slice.call(i)).length;c<T;c+=1)Array.isArray(i[c])&&throwError(e,"nested arrays are not supported inside keys"),"object"==typeof i&&"[object Object]"===_class(i[c])&&(i[c]="[object Object]");if("object"==typeof i&&"[object Object]"===_class(i)&&(i="[object Object]"),i=String(i),null===t&&(t={}),"tag:yaml.org,2002:merge"===r)if(Array.isArray(o))for(c=0,T=o.length;c<T;c+=1)mergeMappings(e,t,o[c],n);else mergeMappings(e,t,o,n);else e.json||_hasOwnProperty$1.call(n,i)||!_hasOwnProperty$1.call(t,i)||(e.line=a||e.line,e.lineStart=s||e.lineStart,e.position=l||e.position,throwError(e,"duplicated mapping key")),"__proto__"===i?Object.defineProperty(t,i,{configurable:!0,enumerable:!0,writable:!0,value:o}):t[i]=o,delete n[i];return t}function readLineBreak(e){var t;10===(t=e.input.charCodeAt(e.position))?e.position++:13===t?(e.position++,10===e.input.charCodeAt(e.position)&&e.position++):throwError(e,"a line break is expected"),e.line+=1,e.lineStart=e.position,e.firstTabInLine=-1}function skipSeparationSpace(e,t,n){for(var r=0,i=e.input.charCodeAt(e.position);0!==i;){for(;is_WHITE_SPACE(i);)9===i&&-1===e.firstTabInLine&&(e.firstTabInLine=e.position),i=e.input.charCodeAt(++e.position);if(t&&35===i)do{i=e.input.charCodeAt(++e.position)}while(10!==i&&13!==i&&0!==i);if(!is_EOL(i))break;for(readLineBreak(e),i=e.input.charCodeAt(e.position),r++,e.lineIndent=0;32===i;)e.lineIndent++,i=e.input.charCodeAt(++e.position)}return-1!==n&&0!==r&&e.lineIndent<n&&throwWarning(e,"deficient indentation"),r}function testDocumentSeparator(e){var t,n=e.position;return!(45!==(t=e.input.charCodeAt(n))&&46!==t||t!==e.input.charCodeAt(n+1)||t!==e.input.charCodeAt(n+2)||(n+=3,0!==(t=e.input.charCodeAt(n))&&!is_WS_OR_EOL(t)))}function writeFoldedLines(e,t){1===t?e.result+=" ":t>1&&(e.result+=common.repeat("\n",t-1))}function readPlainScalar(e,t,n){var r,i,o,a,s,l,c,T,Q=e.kind,d=e.result;if(is_WS_OR_EOL(T=e.input.charCodeAt(e.position))||is_FLOW_INDICATOR(T)||35===T||38===T||42===T||33===T||124===T||62===T||39===T||34===T||37===T||64===T||96===T)return!1;if((63===T||45===T)&&(is_WS_OR_EOL(r=e.input.charCodeAt(e.position+1))||n&&is_FLOW_INDICATOR(r)))return!1;for(e.kind="scalar",e.result="",i=o=e.position,a=!1;0!==T;){if(58===T){if(is_WS_OR_EOL(r=e.input.charCodeAt(e.position+1))||n&&is_FLOW_INDICATOR(r))break}else if(35===T){if(is_WS_OR_EOL(e.input.charCodeAt(e.position-1)))break}else{if(e.position===e.lineStart&&testDocumentSeparator(e)||n&&is_FLOW_INDICATOR(T))break;if(is_EOL(T)){if(s=e.line,l=e.lineStart,c=e.lineIndent,skipSeparationSpace(e,!1,-1),e.lineIndent>=t){a=!0,T=e.input.charCodeAt(e.position);continue}e.position=o,e.line=s,e.lineStart=l,e.lineIndent=c;break}}a&&(captureSegment(e,i,o,!1),writeFoldedLines(e,e.line-s),i=o=e.position,a=!1),is_WHITE_SPACE(T)||(o=e.position+1),T=e.input.charCodeAt(++e.position)}return captureSegment(e,i,o,!1),!!e.result||(e.kind=Q,e.result=d,!1)}function readSingleQuotedScalar(e,t){var n,r,i;if(39!==(n=e.input.charCodeAt(e.position)))return!1;for(e.kind="scalar",e.result="",e.position++,r=i=e.position;0!==(n=e.input.charCodeAt(e.position));)if(39===n){if(captureSegment(e,r,e.position,!0),39!==(n=e.input.charCodeAt(++e.position)))return!0;r=e.position,e.position++,i=e.position}else is_EOL(n)?(captureSegment(e,r,i,!0),writeFoldedLines(e,skipSeparationSpace(e,!1,t)),r=i=e.position):e.position===e.lineStart&&testDocumentSeparator(e)?throwError(e,"unexpected end of the document within a single quoted scalar"):(e.position++,i=e.position);throwError(e,"unexpected end of the stream within a single quoted scalar")}function readDoubleQuotedScalar(e,t){var n,r,i,o,a,s;if(34!==(s=e.input.charCodeAt(e.position)))return!1;for(e.kind="scalar",e.result="",e.position++,n=r=e.position;0!==(s=e.input.charCodeAt(e.position));){if(34===s)return captureSegment(e,n,e.position,!0),e.position++,!0;if(92===s){if(captureSegment(e,n,e.position,!0),is_EOL(s=e.input.charCodeAt(++e.position)))skipSeparationSpace(e,!1,t);else if(s<256&&simpleEscapeCheck[s])e.result+=simpleEscapeMap[s],e.position++;else if((a=escapedHexLen(s))>0){for(i=a,o=0;i>0;i--)(a=fromHexCode(s=e.input.charCodeAt(++e.position)))>=0?o=(o<<4)+a:throwError(e,"expected hexadecimal character");e.result+=charFromCodepoint(o),e.position++}else throwError(e,"unknown escape sequence");n=r=e.position}else is_EOL(s)?(captureSegment(e,n,r,!0),writeFoldedLines(e,skipSeparationSpace(e,!1,t)),n=r=e.position):e.position===e.lineStart&&testDocumentSeparator(e)?throwError(e,"unexpected end of the document within a double quoted scalar"):(e.position++,r=e.position)}throwError(e,"unexpected end of the stream within a double quoted scalar")}function readFlowCollection(e,t){var n,r,i,o,a,s,l,c,T,Q,d,u,p=!0,h=e.tag,m=e.anchor,f=Object.create(null);if(91===(u=e.input.charCodeAt(e.position)))a=93,c=!1,o=[];else{if(123!==u)return!1;a=125,c=!0,o={}}for(null!==e.anchor&&(e.anchorMap[e.anchor]=o),u=e.input.charCodeAt(++e.position);0!==u;){if(skipSeparationSpace(e,!0,t),(u=e.input.charCodeAt(e.position))===a)return e.position++,e.tag=h,e.anchor=m,e.kind=c?"mapping":"sequence",e.result=o,!0;p?44===u&&throwError(e,"expected the node content, but found ','"):throwError(e,"missed comma between flow collection entries"),d=null,s=l=!1,63===u&&is_WS_OR_EOL(e.input.charCodeAt(e.position+1))&&(s=l=!0,e.position++,skipSeparationSpace(e,!0,t)),n=e.line,r=e.lineStart,i=e.position,composeNode(e,t,CONTEXT_FLOW_IN,!1,!0),Q=e.tag,T=e.result,skipSeparationSpace(e,!0,t),u=e.input.charCodeAt(e.position),!l&&e.line!==n||58!==u||(s=!0,u=e.input.charCodeAt(++e.position),skipSeparationSpace(e,!0,t),composeNode(e,t,CONTEXT_FLOW_IN,!1,!0),d=e.result),c?storeMappingPair(e,o,f,Q,T,d,n,r,i):s?o.push(storeMappingPair(e,null,f,Q,T,d,n,r,i)):o.push(T),skipSeparationSpace(e,!0,t),44===(u=e.input.charCodeAt(e.position))?(p=!0,u=e.input.charCodeAt(++e.position)):p=!1}throwError(e,"unexpected end of the stream within a flow collection")}function readBlockScalar(e,t){var n,r,i,o,a=CHOMPING_CLIP,s=!1,l=!1,c=t,T=0,Q=!1;if(124===(o=e.input.charCodeAt(e.position)))r=!1;else{if(62!==o)return!1;r=!0}for(e.kind="scalar",e.result="";0!==o;)if(43===(o=e.input.charCodeAt(++e.position))||45===o)CHOMPING_CLIP===a?a=43===o?CHOMPING_KEEP:CHOMPING_STRIP:throwError(e,"repeat of a chomping mode identifier");else{if(!((i=fromDecimalCode(o))>=0))break;0===i?throwError(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):l?throwError(e,"repeat of an indentation width identifier"):(c=t+i-1,l=!0)}if(is_WHITE_SPACE(o)){do{o=e.input.charCodeAt(++e.position)}while(is_WHITE_SPACE(o));if(35===o)do{o=e.input.charCodeAt(++e.position)}while(!is_EOL(o)&&0!==o)}for(;0!==o;){for(readLineBreak(e),e.lineIndent=0,o=e.input.charCodeAt(e.position);(!l||e.lineIndent<c)&&32===o;)e.lineIndent++,o=e.input.charCodeAt(++e.position);if(!l&&e.lineIndent>c&&(c=e.lineIndent),is_EOL(o))T++;else{if(e.lineIndent<c){a===CHOMPING_KEEP?e.result+=common.repeat("\n",s?1+T:T):a===CHOMPING_CLIP&&s&&(e.result+="\n");break}for(r?is_WHITE_SPACE(o)?(Q=!0,e.result+=common.repeat("\n",s?1+T:T)):Q?(Q=!1,e.result+=common.repeat("\n",T+1)):0===T?s&&(e.result+=" "):e.result+=common.repeat("\n",T):e.result+=common.repeat("\n",s?1+T:T),s=!0,l=!0,T=0,n=e.position;!is_EOL(o)&&0!==o;)o=e.input.charCodeAt(++e.position);captureSegment(e,n,e.position,!1)}}return!0}function readBlockSequence(e,t){var n,r,i=e.tag,o=e.anchor,a=[],s=!1;if(-1!==e.firstTabInLine)return!1;for(null!==e.anchor&&(e.anchorMap[e.anchor]=a),r=e.input.charCodeAt(e.position);0!==r&&(-1!==e.firstTabInLine&&(e.position=e.firstTabInLine,throwError(e,"tab characters must not be used in indentation")),45===r)&&is_WS_OR_EOL(e.input.charCodeAt(e.position+1));)if(s=!0,e.position++,skipSeparationSpace(e,!0,-1)&&e.lineIndent<=t)a.push(null),r=e.input.charCodeAt(e.position);else if(n=e.line,composeNode(e,t,CONTEXT_BLOCK_IN,!1,!0),a.push(e.result),skipSeparationSpace(e,!0,-1),r=e.input.charCodeAt(e.position),(e.line===n||e.lineIndent>t)&&0!==r)throwError(e,"bad indentation of a sequence entry");else if(e.lineIndent<t)break;return!!s&&(e.tag=i,e.anchor=o,e.kind="sequence",e.result=a,!0)}function readBlockMapping(e,t,n){var r,i,o,a,s,l,c,T=e.tag,Q=e.anchor,d={},u=Object.create(null),p=null,h=null,m=null,f=!1,g=!1;if(-1!==e.firstTabInLine)return!1;for(null!==e.anchor&&(e.anchorMap[e.anchor]=d),c=e.input.charCodeAt(e.position);0!==c;){if(f||-1===e.firstTabInLine||(e.position=e.firstTabInLine,throwError(e,"tab characters must not be used in indentation")),r=e.input.charCodeAt(e.position+1),o=e.line,63!==c&&58!==c||!is_WS_OR_EOL(r)){if(a=e.line,s=e.lineStart,l=e.position,!composeNode(e,n,CONTEXT_FLOW_OUT,!1,!0))break;if(e.line===o){for(c=e.input.charCodeAt(e.position);is_WHITE_SPACE(c);)c=e.input.charCodeAt(++e.position);if(58===c)is_WS_OR_EOL(c=e.input.charCodeAt(++e.position))||throwError(e,"a whitespace character is expected after the key-value separator within a block mapping"),f&&(storeMappingPair(e,d,u,p,h,null,a,s,l),p=h=m=null),g=!0,f=!1,i=!1,p=e.tag,h=e.result;else{if(!g)return e.tag=T,e.anchor=Q,!0;throwError(e,"can not read an implicit mapping pair; a colon is missed")}}else{if(!g)return e.tag=T,e.anchor=Q,!0;throwError(e,"can not read a block mapping entry; a multiline key may not be an implicit key")}}else 63===c?(f&&(storeMappingPair(e,d,u,p,h,null,a,s,l),p=h=m=null),g=!0,f=!0,i=!0):f?(f=!1,i=!0):throwError(e,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),e.position+=1,c=r;if((e.line===o||e.lineIndent>t)&&(f&&(a=e.line,s=e.lineStart,l=e.position),composeNode(e,t,CONTEXT_BLOCK_OUT,!0,i)&&(f?h=e.result:m=e.result),f||(storeMappingPair(e,d,u,p,h,m,a,s,l),p=h=m=null),skipSeparationSpace(e,!0,-1),c=e.input.charCodeAt(e.position)),(e.line===o||e.lineIndent>t)&&0!==c)throwError(e,"bad indentation of a mapping entry");else if(e.lineIndent<t)break}return f&&storeMappingPair(e,d,u,p,h,null,a,s,l),g&&(e.tag=T,e.anchor=Q,e.kind="mapping",e.result=d),g}function readTagProperty(e){var t,n,r,i,o=!1,a=!1;if(33!==(i=e.input.charCodeAt(e.position)))return!1;if(null!==e.tag&&throwError(e,"duplication of a tag property"),60===(i=e.input.charCodeAt(++e.position))?(o=!0,i=e.input.charCodeAt(++e.position)):33===i?(a=!0,n="!!",i=e.input.charCodeAt(++e.position)):n="!",t=e.position,o){do{i=e.input.charCodeAt(++e.position)}while(0!==i&&62!==i);e.position<e.length?(r=e.input.slice(t,e.position),i=e.input.charCodeAt(++e.position)):throwError(e,"unexpected end of the stream within a verbatim tag")}else{for(;0!==i&&!is_WS_OR_EOL(i);)33===i&&(a?throwError(e,"tag suffix cannot contain exclamation marks"):(n=e.input.slice(t-1,e.position+1),PATTERN_TAG_HANDLE.test(n)||throwError(e,"named tag handle cannot contain such characters"),a=!0,t=e.position+1)),i=e.input.charCodeAt(++e.position);r=e.input.slice(t,e.position),PATTERN_FLOW_INDICATORS.test(r)&&throwError(e,"tag suffix cannot contain flow indicator characters")}r&&!PATTERN_TAG_URI.test(r)&&throwError(e,"tag name cannot contain such characters: "+r);try{r=decodeURIComponent(r)}catch(t){throwError(e,"tag name is malformed: "+r)}return o?e.tag=r:_hasOwnProperty$1.call(e.tagMap,n)?e.tag=e.tagMap[n]+r:"!"===n?e.tag="!"+r:"!!"===n?e.tag="tag:yaml.org,2002:"+r:throwError(e,'undeclared tag handle "'+n+'"'),!0}function readAnchorProperty(e){var t,n;if(38!==(n=e.input.charCodeAt(e.position)))return!1;for(null!==e.anchor&&throwError(e,"duplication of an anchor property"),n=e.input.charCodeAt(++e.position),t=e.position;0!==n&&!is_WS_OR_EOL(n)&&!is_FLOW_INDICATOR(n);)n=e.input.charCodeAt(++e.position);return e.position===t&&throwError(e,"name of an anchor node must contain at least one character"),e.anchor=e.input.slice(t,e.position),!0}function readAlias(e){var t,n,r;if(42!==(r=e.input.charCodeAt(e.position)))return!1;for(r=e.input.charCodeAt(++e.position),t=e.position;0!==r&&!is_WS_OR_EOL(r)&&!is_FLOW_INDICATOR(r);)r=e.input.charCodeAt(++e.position);return e.position===t&&throwError(e,"name of an alias node must contain at least one character"),n=e.input.slice(t,e.position),_hasOwnProperty$1.call(e.anchorMap,n)||throwError(e,'unidentified alias "'+n+'"'),e.result=e.anchorMap[n],skipSeparationSpace(e,!0,-1),!0}function composeNode(e,t,n,r,i){var o,a,s,l,c,T,Q,d,u,p=1,h=!1,m=!1;if(null!==e.listener&&e.listener("open",e),e.tag=null,e.anchor=null,e.kind=null,e.result=null,o=a=s=CONTEXT_BLOCK_OUT===n||CONTEXT_BLOCK_IN===n,r&&skipSeparationSpace(e,!0,-1)&&(h=!0,e.lineIndent>t?p=1:e.lineIndent===t?p=0:e.lineIndent<t&&(p=-1)),1===p)for(;readTagProperty(e)||readAnchorProperty(e);)skipSeparationSpace(e,!0,-1)?(h=!0,s=o,e.lineIndent>t?p=1:e.lineIndent===t?p=0:e.lineIndent<t&&(p=-1)):s=!1;if(s&&(s=h||i),1!==p&&CONTEXT_BLOCK_OUT!==n||(d=CONTEXT_FLOW_IN===n||CONTEXT_FLOW_OUT===n?t:t+1,u=e.position-e.lineStart,1===p?s&&(readBlockSequence(e,u)||readBlockMapping(e,u,d))||readFlowCollection(e,d)?m=!0:(a&&readBlockScalar(e,d)||readSingleQuotedScalar(e,d)||readDoubleQuotedScalar(e,d)?m=!0:readAlias(e)?(m=!0,null===e.tag&&null===e.anchor||throwError(e,"alias node should not have any properties")):readPlainScalar(e,d,CONTEXT_FLOW_IN===n)&&(m=!0,null===e.tag&&(e.tag="?")),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):0===p&&(m=s&&readBlockSequence(e,u))),null===e.tag)null!==e.anchor&&(e.anchorMap[e.anchor]=e.result);else if("?"===e.tag){for(null!==e.result&&"scalar"!==e.kind&&throwError(e,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+e.kind+'"'),l=0,c=e.implicitTypes.length;l<c;l+=1)if((Q=e.implicitTypes[l]).resolve(e.result)){e.result=Q.construct(e.result),e.tag=Q.tag,null!==e.anchor&&(e.anchorMap[e.anchor]=e.result);break}}else if("!"!==e.tag){if(_hasOwnProperty$1.call(e.typeMap[e.kind||"fallback"],e.tag))Q=e.typeMap[e.kind||"fallback"][e.tag];else for(Q=null,l=0,c=(T=e.typeMap.multi[e.kind||"fallback"]).length;l<c;l+=1)if(e.tag.slice(0,T[l].tag.length)===T[l].tag){Q=T[l];break}Q||throwError(e,"unknown tag !<"+e.tag+">"),null!==e.result&&Q.kind!==e.kind&&throwError(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+Q.kind+'", not "'+e.kind+'"'),Q.resolve(e.result,e.tag)?(e.result=Q.construct(e.result,e.tag),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):throwError(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return null!==e.listener&&e.listener("close",e),null!==e.tag||null!==e.anchor||m}function readDocument(e){var t,n,r,i,o=e.position,a=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);0!==(i=e.input.charCodeAt(e.position))&&(skipSeparationSpace(e,!0,-1),i=e.input.charCodeAt(e.position),!(e.lineIndent>0||37!==i));){for(a=!0,i=e.input.charCodeAt(++e.position),t=e.position;0!==i&&!is_WS_OR_EOL(i);)i=e.input.charCodeAt(++e.position);for(r=[],(n=e.input.slice(t,e.position)).length<1&&throwError(e,"directive name must not be less than one character in length");0!==i;){for(;is_WHITE_SPACE(i);)i=e.input.charCodeAt(++e.position);if(35===i){do{i=e.input.charCodeAt(++e.position)}while(0!==i&&!is_EOL(i));break}if(is_EOL(i))break;for(t=e.position;0!==i&&!is_WS_OR_EOL(i);)i=e.input.charCodeAt(++e.position);r.push(e.input.slice(t,e.position))}0!==i&&readLineBreak(e),_hasOwnProperty$1.call(directiveHandlers,n)?directiveHandlers[n](e,n,r):throwWarning(e,'unknown document directive "'+n+'"')}skipSeparationSpace(e,!0,-1),0===e.lineIndent&&45===e.input.charCodeAt(e.position)&&45===e.input.charCodeAt(e.position+1)&&45===e.input.charCodeAt(e.position+2)?(e.position+=3,skipSeparationSpace(e,!0,-1)):a&&throwError(e,"directives end mark is expected"),composeNode(e,e.lineIndent-1,CONTEXT_BLOCK_OUT,!1,!0),skipSeparationSpace(e,!0,-1),e.checkLineBreaks&&PATTERN_NON_ASCII_LINE_BREAKS.test(e.input.slice(o,e.position))&&throwWarning(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&testDocumentSeparator(e)?46===e.input.charCodeAt(e.position)&&(e.position+=3,skipSeparationSpace(e,!0,-1)):e.position<e.length-1&&throwError(e,"end of the stream or a document separator is expected")}function loadDocuments(e,t){t=t||{},0!==(e=String(e)).length&&(10!==e.charCodeAt(e.length-1)&&13!==e.charCodeAt(e.length-1)&&(e+="\n"),65279===e.charCodeAt(0)&&(e=e.slice(1)));var n=new State$1(e,t),r=e.indexOf("\0");for(-1!==r&&(n.position=r,throwError(n,"null byte is not allowed in input")),n.input+="\0";32===n.input.charCodeAt(n.position);)n.lineIndent+=1,n.position+=1;for(;n.position<n.length-1;)readDocument(n);return n.documents}function loadAll$1(e,t,n){null!==t&&"object"==typeof t&&void 0===n&&(n=t,t=null);var r=loadDocuments(e,n);if("function"!=typeof t)return r;for(var i=0,o=r.length;i<o;i+=1)t(r[i])}function load$1(e,t){var n=loadDocuments(e,t);if(0!==n.length){if(1===n.length)return n[0];throw new exception("expected a single document in the stream, but found more")}}var loadAll_1=loadAll$1,load_1=load$1,loader={loadAll:loadAll_1,load:load_1},_toString=Object.prototype.toString,_hasOwnProperty=Object.prototype.hasOwnProperty,CHAR_BOM=65279,CHAR_TAB=9,CHAR_LINE_FEED=10,CHAR_CARRIAGE_RETURN=13,CHAR_SPACE=32,CHAR_EXCLAMATION=33,CHAR_DOUBLE_QUOTE=34,CHAR_SHARP=35,CHAR_PERCENT=37,CHAR_AMPERSAND=38,CHAR_SINGLE_QUOTE=39,CHAR_ASTERISK=42,CHAR_COMMA=44,CHAR_MINUS=45,CHAR_COLON=58,CHAR_EQUALS=61,CHAR_GREATER_THAN=62,CHAR_QUESTION=63,CHAR_COMMERCIAL_AT=64,CHAR_LEFT_SQUARE_BRACKET=91,CHAR_RIGHT_SQUARE_BRACKET=93,CHAR_GRAVE_ACCENT=96,CHAR_LEFT_CURLY_BRACKET=123,CHAR_VERTICAL_LINE=124,CHAR_RIGHT_CURLY_BRACKET=125,ESCAPE_SEQUENCES={0:"\\0",7:"\\a",8:"\\b",9:"\\t",10:"\\n",11:"\\v",12:"\\f",13:"\\r",27:"\\e",34:'\\"',92:"\\\\",133:"\\N",160:"\\_",8232:"\\L",8233:"\\P"},DEPRECATED_BOOLEANS_SYNTAX=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],DEPRECATED_BASE60_SYNTAX=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;function compileStyleMap(e,t){var n,r,i,o,a,s,l;if(null===t)return{};for(n={},i=0,o=(r=Object.keys(t)).length;i<o;i+=1)a=r[i],s=String(t[a]),"!!"===a.slice(0,2)&&(a="tag:yaml.org,2002:"+a.slice(2)),(l=e.compiledTypeMap.fallback[a])&&_hasOwnProperty.call(l.styleAliases,s)&&(s=l.styleAliases[s]),n[a]=s;return n}function encodeHex(e){var t,n,r;if(t=e.toString(16).toUpperCase(),e<=255)n="x",r=2;else if(e<=65535)n="u",r=4;else{if(!(e<=4294967295))throw new exception("code point within a string may not be greater than 0xFFFFFFFF");n="U",r=8}return"\\"+n+common.repeat("0",r-t.length)+t}var QUOTING_TYPE_SINGLE=1,QUOTING_TYPE_DOUBLE=2;function State(e){this.schema=e.schema||_default,this.indent=Math.max(1,e.indent||2),this.noArrayIndent=e.noArrayIndent||!1,this.skipInvalid=e.skipInvalid||!1,this.flowLevel=common.isNothing(e.flowLevel)?-1:e.flowLevel,this.styleMap=compileStyleMap(this.schema,e.styles||null),this.sortKeys=e.sortKeys||!1,this.lineWidth=e.lineWidth||80,this.noRefs=e.noRefs||!1,this.noCompatMode=e.noCompatMode||!1,this.condenseFlow=e.condenseFlow||!1,this.quotingType='"'===e.quotingType?QUOTING_TYPE_DOUBLE:QUOTING_TYPE_SINGLE,this.forceQuotes=e.forceQuotes||!1,this.replacer="function"==typeof e.replacer?e.replacer:null,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function indentString(e,t){for(var n,r=common.repeat(" ",t),i=0,o=-1,a="",s=e.length;i<s;)-1===(o=e.indexOf("\n",i))?(n=e.slice(i),i=s):(n=e.slice(i,o+1),i=o+1),n.length&&"\n"!==n&&(a+=r),a+=n;return a}function generateNextLine(e,t){return"\n"+common.repeat(" ",e.indent*t)}function testImplicitResolving(e,t){var n,r;for(n=0,r=e.implicitTypes.length;n<r;n+=1)if(e.implicitTypes[n].resolve(t))return!0;return!1}function isWhitespace(e){return e===CHAR_SPACE||e===CHAR_TAB}function isPrintable(e){return 32<=e&&e<=126||161<=e&&e<=55295&&8232!==e&&8233!==e||57344<=e&&e<=65533&&e!==CHAR_BOM||65536<=e&&e<=1114111}function isNsCharOrWhitespace(e){return isPrintable(e)&&e!==CHAR_BOM&&e!==CHAR_CARRIAGE_RETURN&&e!==CHAR_LINE_FEED}function isPlainSafe(e,t,n){var r=isNsCharOrWhitespace(e),i=r&&!isWhitespace(e);return(n?r:r&&e!==CHAR_COMMA&&e!==CHAR_LEFT_SQUARE_BRACKET&&e!==CHAR_RIGHT_SQUARE_BRACKET&&e!==CHAR_LEFT_CURLY_BRACKET&&e!==CHAR_RIGHT_CURLY_BRACKET)&&e!==CHAR_SHARP&&!(t===CHAR_COLON&&!i)||isNsCharOrWhitespace(t)&&!isWhitespace(t)&&e===CHAR_SHARP||t===CHAR_COLON&&i}function isPlainSafeFirst(e){return isPrintable(e)&&e!==CHAR_BOM&&!isWhitespace(e)&&e!==CHAR_MINUS&&e!==CHAR_QUESTION&&e!==CHAR_COLON&&e!==CHAR_COMMA&&e!==CHAR_LEFT_SQUARE_BRACKET&&e!==CHAR_RIGHT_SQUARE_BRACKET&&e!==CHAR_LEFT_CURLY_BRACKET&&e!==CHAR_RIGHT_CURLY_BRACKET&&e!==CHAR_SHARP&&e!==CHAR_AMPERSAND&&e!==CHAR_ASTERISK&&e!==CHAR_EXCLAMATION&&e!==CHAR_VERTICAL_LINE&&e!==CHAR_EQUALS&&e!==CHAR_GREATER_THAN&&e!==CHAR_SINGLE_QUOTE&&e!==CHAR_DOUBLE_QUOTE&&e!==CHAR_PERCENT&&e!==CHAR_COMMERCIAL_AT&&e!==CHAR_GRAVE_ACCENT}function isPlainSafeLast(e){return!isWhitespace(e)&&e!==CHAR_COLON}function codePointAt(e,t){var n,r=e.charCodeAt(t);return r>=55296&&r<=56319&&t+1<e.length&&(n=e.charCodeAt(t+1))>=56320&&n<=57343?1024*(r-55296)+n-56320+65536:r}function needIndentIndicator(e){return/^\n* /.test(e)}var STYLE_PLAIN=1,STYLE_SINGLE=2,STYLE_LITERAL=3,STYLE_FOLDED=4,STYLE_DOUBLE=5;function chooseScalarStyle(e,t,n,r,i,o,a,s){var l,c=0,T=null,Q=!1,d=!1,u=-1!==r,p=-1,h=isPlainSafeFirst(codePointAt(e,0))&&isPlainSafeLast(codePointAt(e,e.length-1));if(t||a)for(l=0;l<e.length;c>=65536?l+=2:l++){if(!isPrintable(c=codePointAt(e,l)))return STYLE_DOUBLE;h=h&&isPlainSafe(c,T,s),T=c}else{for(l=0;l<e.length;c>=65536?l+=2:l++){if((c=codePointAt(e,l))===CHAR_LINE_FEED)Q=!0,u&&(d=d||l-p-1>r&&" "!==e[p+1],p=l);else if(!isPrintable(c))return STYLE_DOUBLE;h=h&&isPlainSafe(c,T,s),T=c}d=d||u&&l-p-1>r&&" "!==e[p+1]}return Q||d?n>9&&needIndentIndicator(e)?STYLE_DOUBLE:a?o===QUOTING_TYPE_DOUBLE?STYLE_DOUBLE:STYLE_SINGLE:d?STYLE_FOLDED:STYLE_LITERAL:!h||a||i(e)?o===QUOTING_TYPE_DOUBLE?STYLE_DOUBLE:STYLE_SINGLE:STYLE_PLAIN}function writeScalar(e,t,n,r,i){e.dump=function(){if(0===t.length)return e.quotingType===QUOTING_TYPE_DOUBLE?'""':"''";if(!e.noCompatMode&&(-1!==DEPRECATED_BOOLEANS_SYNTAX.indexOf(t)||DEPRECATED_BASE60_SYNTAX.test(t)))return e.quotingType===QUOTING_TYPE_DOUBLE?'"'+t+'"':"'"+t+"'";var o=e.indent*Math.max(1,n),a=-1===e.lineWidth?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-o),s=r||e.flowLevel>-1&&n>=e.flowLevel;switch(chooseScalarStyle(t,s,e.indent,a,(function(t){return testImplicitResolving(e,t)}),e.quotingType,e.forceQuotes&&!r,i)){case STYLE_PLAIN:return t;case STYLE_SINGLE:return"'"+t.replace(/'/g,"''")+"'";case STYLE_LITERAL:return"|"+blockHeader(t,e.indent)+dropEndingNewline(indentString(t,o));case STYLE_FOLDED:return">"+blockHeader(t,e.indent)+dropEndingNewline(indentString(foldString(t,a),o));case STYLE_DOUBLE:return'"'+escapeString(t)+'"';default:throw new exception("impossible error: invalid scalar style")}}()}function blockHeader(e,t){var n=needIndentIndicator(e)?String(t):"",r="\n"===e[e.length-1];return n+(!r||"\n"!==e[e.length-2]&&"\n"!==e?r?"":"-":"+")+"\n"}function dropEndingNewline(e){return"\n"===e[e.length-1]?e.slice(0,-1):e}function foldString(e,t){for(var n,r,i,o=/(\n+)([^\n]*)/g,a=(n=-1!==(n=e.indexOf("\n"))?n:e.length,o.lastIndex=n,foldLine(e.slice(0,n),t)),s="\n"===e[0]||" "===e[0];i=o.exec(e);){var l=i[1],c=i[2];r=" "===c[0],a+=l+(s||r||""===c?"":"\n")+foldLine(c,t),s=r}return a}function foldLine(e,t){if(""===e||" "===e[0])return e;for(var n,r,i=/ [^ ]/g,o=0,a=0,s=0,l="";n=i.exec(e);)(s=n.index)-o>t&&(r=a>o?a:s,l+="\n"+e.slice(o,r),o=r+1),a=s;return l+="\n",e.length-o>t&&a>o?l+=e.slice(o,a)+"\n"+e.slice(a+1):l+=e.slice(o),l.slice(1)}function escapeString(e){for(var t,n="",r=0,i=0;i<e.length;r>=65536?i+=2:i++)r=codePointAt(e,i),!(t=ESCAPE_SEQUENCES[r])&&isPrintable(r)?(n+=e[i],r>=65536&&(n+=e[i+1])):n+=t||encodeHex(r);return n}function writeFlowSequence(e,t,n){var r,i,o,a="",s=e.tag;for(r=0,i=n.length;r<i;r+=1)o=n[r],e.replacer&&(o=e.replacer.call(n,String(r),o)),(writeNode(e,t,o,!1,!1)||void 0===o&&writeNode(e,t,null,!1,!1))&&(""!==a&&(a+=","+(e.condenseFlow?"":" ")),a+=e.dump);e.tag=s,e.dump="["+a+"]"}function writeBlockSequence(e,t,n,r){var i,o,a,s="",l=e.tag;for(i=0,o=n.length;i<o;i+=1)a=n[i],e.replacer&&(a=e.replacer.call(n,String(i),a)),(writeNode(e,t+1,a,!0,!0,!1,!0)||void 0===a&&writeNode(e,t+1,null,!0,!0,!1,!0))&&(r&&""===s||(s+=generateNextLine(e,t)),e.dump&&CHAR_LINE_FEED===e.dump.charCodeAt(0)?s+="-":s+="- ",s+=e.dump);e.tag=l,e.dump=s||"[]"}function writeFlowMapping(e,t,n){var r,i,o,a,s,l="",c=e.tag,T=Object.keys(n);for(r=0,i=T.length;r<i;r+=1)s="",""!==l&&(s+=", "),e.condenseFlow&&(s+='"'),a=n[o=T[r]],e.replacer&&(a=e.replacer.call(n,o,a)),writeNode(e,t,o,!1,!1)&&(e.dump.length>1024&&(s+="? "),s+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),writeNode(e,t,a,!1,!1)&&(l+=s+=e.dump));e.tag=c,e.dump="{"+l+"}"}function writeBlockMapping(e,t,n,r){var i,o,a,s,l,c,T="",Q=e.tag,d=Object.keys(n);if(!0===e.sortKeys)d.sort();else if("function"==typeof e.sortKeys)d.sort(e.sortKeys);else if(e.sortKeys)throw new exception("sortKeys must be a boolean or a function");for(i=0,o=d.length;i<o;i+=1)c="",r&&""===T||(c+=generateNextLine(e,t)),s=n[a=d[i]],e.replacer&&(s=e.replacer.call(n,a,s)),writeNode(e,t+1,a,!0,!0,!0)&&((l=null!==e.tag&&"?"!==e.tag||e.dump&&e.dump.length>1024)&&(e.dump&&CHAR_LINE_FEED===e.dump.charCodeAt(0)?c+="?":c+="? "),c+=e.dump,l&&(c+=generateNextLine(e,t)),writeNode(e,t+1,s,!0,l)&&(e.dump&&CHAR_LINE_FEED===e.dump.charCodeAt(0)?c+=":":c+=": ",T+=c+=e.dump));e.tag=Q,e.dump=T||"{}"}function detectType(e,t,n){var r,i,o,a,s,l;for(o=0,a=(i=n?e.explicitTypes:e.implicitTypes).length;o<a;o+=1)if(((s=i[o]).instanceOf||s.predicate)&&(!s.instanceOf||"object"==typeof t&&t instanceof s.instanceOf)&&(!s.predicate||s.predicate(t))){if(n?s.multi&&s.representName?e.tag=s.representName(t):e.tag=s.tag:e.tag="?",s.represent){if(l=e.styleMap[s.tag]||s.defaultStyle,"[object Function]"===_toString.call(s.represent))r=s.represent(t,l);else{if(!_hasOwnProperty.call(s.represent,l))throw new exception("!<"+s.tag+'> tag resolver accepts not "'+l+'" style');r=s.represent[l](t,l)}e.dump=r}return!0}return!1}function writeNode(e,t,n,r,i,o,a){e.tag=null,e.dump=n,detectType(e,n,!1)||detectType(e,n,!0);var s,l=_toString.call(e.dump),c=r;r&&(r=e.flowLevel<0||e.flowLevel>t);var T,Q,d="[object Object]"===l||"[object Array]"===l;if(d&&(Q=-1!==(T=e.duplicates.indexOf(n))),(null!==e.tag&&"?"!==e.tag||Q||2!==e.indent&&t>0)&&(i=!1),Q&&e.usedDuplicates[T])e.dump="*ref_"+T;else{if(d&&Q&&!e.usedDuplicates[T]&&(e.usedDuplicates[T]=!0),"[object Object]"===l)r&&0!==Object.keys(e.dump).length?(writeBlockMapping(e,t,e.dump,i),Q&&(e.dump="&ref_"+T+e.dump)):(writeFlowMapping(e,t,e.dump),Q&&(e.dump="&ref_"+T+" "+e.dump));else if("[object Array]"===l)r&&0!==e.dump.length?(e.noArrayIndent&&!a&&t>0?writeBlockSequence(e,t-1,e.dump,i):writeBlockSequence(e,t,e.dump,i),Q&&(e.dump="&ref_"+T+e.dump)):(writeFlowSequence(e,t,e.dump),Q&&(e.dump="&ref_"+T+" "+e.dump));else{if("[object String]"!==l){if("[object Undefined]"===l)return!1;if(e.skipInvalid)return!1;throw new exception("unacceptable kind of an object to dump "+l)}"?"!==e.tag&&writeScalar(e,e.dump,t,o,c)}null!==e.tag&&"?"!==e.tag&&(s=encodeURI("!"===e.tag[0]?e.tag.slice(1):e.tag).replace(/!/g,"%21"),s="!"===e.tag[0]?"!"+s:"tag:yaml.org,2002:"===s.slice(0,18)?"!!"+s.slice(18):"!<"+s+">",e.dump=s+" "+e.dump)}return!0}function getDuplicateReferences(e,t){var n,r,i=[],o=[];for(inspectNode(e,i,o),n=0,r=o.length;n<r;n+=1)t.duplicates.push(i[o[n]]);t.usedDuplicates=new Array(r)}function inspectNode(e,t,n){var r,i,o;if(null!==e&&"object"==typeof e)if(-1!==(i=t.indexOf(e)))-1===n.indexOf(i)&&n.push(i);else if(t.push(e),Array.isArray(e))for(i=0,o=e.length;i<o;i+=1)inspectNode(e[i],t,n);else for(i=0,o=(r=Object.keys(e)).length;i<o;i+=1)inspectNode(e[r[i]],t,n)}function dump$1(e,t){var n=new State(t=t||{});n.noRefs||getDuplicateReferences(e,n);var r=e;return n.replacer&&(r=n.replacer.call({"":r},"",r)),writeNode(n,0,r,!0,!0)?n.dump+"\n":""}var dump_1=dump$1,dumper={dump:dump_1};function renamed(e,t){return function(){throw new Error("Function yaml."+e+" is removed in js-yaml 4. Use yaml."+t+" instead, which is now safe by default.")}}var Type=type,Schema=schema,FAILSAFE_SCHEMA=failsafe,JSON_SCHEMA=json,CORE_SCHEMA=core,DEFAULT_SCHEMA=_default,load=loader.load,loadAll=loader.loadAll,dump=dumper.dump,YAMLException=exception,types={binary:binary,float:float,map:map,null:_null,pairs:pairs,set:set,timestamp:timestamp,bool:bool,int:int,merge:merge,omap:omap,seq:seq,str:str},safeLoad=renamed("safeLoad","load"),safeLoadAll=renamed("safeLoadAll","loadAll"),safeDump=renamed("safeDump","dump"),jsYaml={Type:Type,Schema:Schema,FAILSAFE_SCHEMA:FAILSAFE_SCHEMA,JSON_SCHEMA:JSON_SCHEMA,CORE_SCHEMA:CORE_SCHEMA,DEFAULT_SCHEMA:DEFAULT_SCHEMA,load:load,loadAll:loadAll,dump:dump,YAMLException:YAMLException,types:types,safeLoad:safeLoad,safeLoadAll:safeLoadAll,safeDump:safeDump};const getParentOfClass=(e,t)=>{var n;let r=e.parentElement;for(;r&&!r.classList.contains(t)&&!(r instanceof window.HTMLBodyElement);)r=r.parentElement;return(null===(n=null==r?void 0:r.classList)||void 0===n?void 0:n.contains(t))?r:null},getLeaf=(e,t,n)=>{switch(linkClickModifierType(n)){case"active-pane":return t;case"new-tab":default:return(()=>{if(!e.settings.openInMainWorkspace)return app.workspace.getLeaf("tab");const[n,r]=getLeafLoc(t);return"main"===n?app.workspace.getLeaf("tab"):getNewOrAdjacentLeaf(e,t)})();case"new-pane":return getNewOrAdjacentLeaf(e,t);case"popout-window":return app.workspace.openPopoutLeaf()}},getLeafLoc=e=>{const t=e.id,n=app.workspace.getLayout(),r=e=>e.children.filter((e=>"leaf"!==e.type)).map((e=>r(e))).flat().concat(e.children.filter((e=>"leaf"===e.type)).map((e=>e.id))),i=r(n.main);return[n.main&&i.contains(t)?"main":n.floating&&r(n.floating).contains(t)?"popout":n.left&&r(n.left).contains(t)?"left":n.right&&r(n.right).contains(t)?"right":"hover",i]},getNewOrAdjacentLeaf=(e,t)=>{const[n,r]=getLeafLoc(t),i=e=>{var n;let i=app.workspace.getMostRecentLeaf();return i&&i!==t&&(null===(n=i.view)||void 0===n?void 0:n.containerEl.ownerDocument)===document||(i=null,r.forEach((n=>{var r;const o=app.workspace.getLeafById(n);i||!(null===(r=o.view)||void 0===r?void 0:r.navigation)||t===o||e&&(null==o?void 0:o.parent)===(null==t?void 0:t.parent)||(i=o)}))),i};if(e.settings.openInMainWorkspace||["main","left","right"].contains(n)){if(!e.settings.openInAdjacentPane){if("main"===n)return app.workspace.createLeafBySplit(t);const e=i();return e?"empty"===e.view.getViewType()?e:app.workspace.createLeafBySplit(e):app.workspace.getLeaf(!0)}const r=i(!0);return null!=r?r:app.workspace.createLeafBySplit(t)}if(!e.settings.openInAdjacentPane)return app.workspace.createLeafBySplit(t);if("hover"===n){const n=new Set;return app.workspace.iterateAllLeaves((e=>{e!==t&&t.containerEl.parentElement===e.containerEl.parentElement&&n.add(e)})),0===n.size?e.app.workspace.createLeafBySplit(t):Array.from(n)[0]}if("popout"===n){const e=new Set;return app.workspace.iterateAllLeaves((n=>{n!==t&&n.view.navigation&&n.view.containerEl.ownerDocument===t.view.containerEl.ownerDocument&&e.add(n)})),0===e.size?app.workspace.createLeafBySplit(t):Array.from(e)[0]}return e.app.workspace.createLeafBySplit(t)},getAttachmentsFolderAndFilePath=async(e,t,n)=>{let r=e.vault.getConfig("attachmentFolderPath");if(r&&r.startsWith("./")){const e=`${splitFolderAndFilename(t).folderpath}/`;r=obsidian_module.normalizePath(e+r.substring(2))}return r&&"/"!==r||(r=""),await checkAndCreateFolder(r),{folder:r,filepath:obsidian_module.normalizePath(""===r?n:`${r}/${n}`)}},isObsidianThemeDark=()=>document.body.classList.contains("theme-dark"),getContainerForDocument=e=>{if(e!==document&&app.workspace.floatingSplit)for(const t of app.workspace.floatingSplit.children)if(t.doc===e)return t;return app.workspace.rootSplit},cleanSectionHeading=e=>e?e.replace(REG_SECTION_REF_CLEAN,"").replace(/\s+/g," ").trim():e,cleanBlockRef=e=>e?e.replace(REG_BLOCK_REF_CLEAN,"").replace(/\s+/g," ").trim():e,getAllWindowDocuments=e=>{const t=new Set;return t.add(document),e.workspace.iterateAllLeaves((e=>{e.view.containerEl.ownerDocument!==document&&t.add(e.view.containerEl.ownerDocument)})),Array.from(t)},obsidianPDFQuoteWithRef=e=>{const t=/^> (.*)\n\n\[\[([^|\]]*)\|[^\]]*]]$/gm.exec(e);return t?{quote:t[1],link:t[2]}:null},extractSVGPNGFileName=e=>{const t=e.match(/\[\[([^\]|#^]+\.(?:svg|png))(?:[^\]]+)?\]\]|\[[^\]]+\]\(([^\)]+\.(?:svg|png))\)/);return t?t[1]||t[2]:null},getFileCSSClasses=e=>{var t;if(e){const n=null===(t=null===window||void 0===window?void 0:window.ExcalidrawAutomate)||void 0===t?void 0:t.plugin;if(!n)return[];const r=n.app.metadataCache.getFileCache(e);if(!(null==r?void 0:r.frontmatter))return[];const i=obsidian_module.parseFrontMatterEntry(r.frontmatter,"cssclasses");return Array.isArray(i)?i:"string"==typeof i?Array.from(new Set(i.split(/[, ]+/).filter(Boolean))):[]}return[]},getActivePDFPageNumberFromPDFView=e=>{var t,n,r;return null===(r=null===(n=null===(t=null==e?void 0:e.viewer)||void 0===t?void 0:t.child)||void 0===n?void 0:n.pdfViewer)||void 0===r?void 0:r.page},openLeaf=({plugin:e,fnGetLeaf:t,file:n,openState:r})=>{let i=null;if(e.settings.focusOnFileTab&&(e.app.workspace.iterateAllLeaves((t=>{var r;i||(null===(r=null==t?void 0:t.view)||void 0===r?void 0:r.file)===n&&(e.app.workspace.setActiveLeaf(t,{focus:!0}),i=t)})),i))return{leaf:i,promise:Promise.resolve()};i=t();const o=i.openFile(n,r);return{leaf:i,promise:o}},mergeMarkdownFiles=(e,t)=>{const n=e.indexOf("---",4),r=e.substring(4,n).trim(),i=e.substring(n+3),o=jsYaml.load(r)||{};let a={},s="";if(t.includes("---")){const e=t.indexOf("---",4),n=t.substring(4,e).trim();s=t.substring(e+3),a=jsYaml.load(n)||{}}else s=t.trim();const l=Object.assign({},o);for(const e in a)if(Array.isArray(a[e])&&Array.isArray(l[e])){const t=[...new Set([...l[e],...a[e]])];l[e]=t}else l[e]=a[e];return`---\n${jsYaml.dump(l)}---\n${s}\n\n${i.trim()}\n`};function splitFolderAndFilename(e){const t=e.lastIndexOf("/"),n=-1==t?e:e.substring(t+1);return{folderpath:obsidian_module.normalizePath(e.substring(0,t)),filename:n,basename:n.replace(/\.[^/.]+$/,""),extension:n.substring(n.lastIndexOf(".")+1)}}const download=(e,t,n)=>{const r=document.createElement("a");r.setAttribute("href",(e?`${e},`:"")+t),r.setAttribute("download",n),r.style.display="none",document.body.appendChild(r),r.click(),document.body.removeChild(r)};function getIMGFilename(e,t){return`${e.substring(0,e.lastIndexOf("."))}.${t}`}function getNewUniqueFilepath(e,t,n){let r=obsidian_module.normalizePath(`${n}/${t}`),i=e.getAbstractFileByPath(r),o=0;const a=t.endsWith(".excalidraw.md")?".excalidraw.md":t.slice(t.lastIndexOf("."));for(;i;)r=obsidian_module.normalizePath(`${n}/${t.slice(0,t.lastIndexOf(a))}_${o}${a}`),o++,i=e.getAbstractFileByPath(r);return r}function getDrawingFilename(e){return e.drawingFilenamePrefix+(""!==e.drawingFilenameDateTime?window.moment().format(e.drawingFilenameDateTime):"")+(e.compatibilityMode?".excalidraw":e.useExcalidrawExtension?".excalidraw.md":".md")}function getEmbedFilename(e,t){return((t.drawingEmbedPrefixWithFilename?e:"")+t.drawingFilnameEmbedPostfix+(""!==t.drawingFilenameDateTime?window.moment().format(t.drawingFilenameDateTime):"")+(t.compatibilityMode?".excalidraw":t.useExcalidrawExtension?".excalidraw.md":".md")).trim()}async function checkAndCreateFolder(e){const t=app.vault;e=obsidian_module.normalizePath(e);const n=t.getAbstractFileByPathInsensitive(e);if(!(n&&n instanceof obsidian_module.TFolder))return n&&n instanceof obsidian_module.TFile&&new obsidian_module.Notice(`The folder cannot be created because it already exists as a file: ${e}.`),await t.createFolder(e)}const getURLImageExtension=e=>{const t=e.split("?")[0];return t.substring(t.lastIndexOf(".")+1)},getMimeType=e=>IMAGE_MIME_TYPES.hasOwnProperty(e)?IMAGE_MIME_TYPES[e]:"md"===e?"image/svg+xml":"application/octet-stream",getFileFromURL=async(e,t,n=3e3)=>{try{const t=new Promise((e=>setTimeout((()=>e(null)),n))),r=await Promise.race([fetch(e,{mode:"no-cors"}),t]);if(!r)return errorlog({where:getFileFromURL,message:`URL did not load within the timeout period of ${n}ms.\n\nTry force-saving again in a few seconds.\n\n${e}`,url:e}),null;const i=await r.arrayBuffer();return{status:r.status,headers:Object.fromEntries(r.headers.entries()),arrayBuffer:i,json:null,text:null}}catch(e){return null}},getFileFromURLFallback=async(e,t,n=3e3)=>{try{const t=new Promise((e=>setTimeout((()=>e(null)),n)));return await Promise.race([t,obsidian_module.requestUrl({url:e,throw:!1})])}catch(t){return errorlog({where:getFileFromURLFallback,message:`URL did not load within timeout period of ${n}ms`,url:e}),null}},getDataURLFromURL=async(e,t,n=3e3)=>{let r=await getFileFromURL(e,t,n);return r&&200===(null==r?void 0:r.status)||(r=await getFileFromURLFallback(e,t,n)),r&&200===r.status?await getDataURL(r.arrayBuffer,t):e},blobToBase64=async e=>{const t=await e.arrayBuffer(),n=new Uint8Array(t);let r="",i=n.byteLength;for(let e=0;e<i;e++)r+=String.fromCharCode(n[e]);return btoa(r)},getPDFDoc=async e=>(void 0===window.pdfjsLib&&await obsidian_module.loadPdfJs(),await window.pdfjsLib.getDocument(app.vault.getResourcePath(e)).promise),readLocalFileBinary=async e=>DEVICE.isDesktop?new Promise(((t,n)=>{const r=decodeURI(e);app.vault.adapter.fs.readFile(r,((e,r)=>{if(e)n(e);else{const e=r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength);t(e)}}))})):null,getPathWithoutExtension=e=>e?e.path.substring(0,e.path.lastIndexOf(".")):null,VAULT_BASE_URL=DEVICE.isDesktop?app.vault.adapter.url.pathToFileURL(app.vault.adapter.basePath).toString():"",getInternalLinkOrFileURLLink=(e,t,n,r)=>{if(!DEVICE.isDesktop)return{link:`[${null!=n?n:""}](${e})`,isInternal:!1,url:e};const i=t.app.vault,o=i.adapter.url.pathToFileURL(e).toString();if(o.startsWith(VAULT_BASE_URL)){const e=obsidian_module.normalizePath(o.substring(VAULT_BASE_URL.length)),a=i.getAbstractFileByPath(e);if(a&&a instanceof obsidian_module.TFile){const e=t.app.metadataCache.fileToLinktext(a,null==r?void 0:r.path,!0);return{link:getLink(t,{embed:!1,path:e,alias:n}),isInternal:!0,file:a}}}return{link:`[${null!=n?n:""}](${o})`,isInternal:!1,url:o}},getLink=(e,{embed:t=!0,path:n,alias:r})=>e.settings.embedWikiLink?`${t?"!":""}[[${n}${r?`|${r}`:""}]]`:`${t?"!":""}[${null!=r?r:""}](${encodeURI(n)})`,getCropFileNameAndFolder=async(e,t,n)=>{let r=e.settings.cropPrefix;r&&""!==r.trim()||(r="cropped_");const i=r+n+".md";if(!e.settings.cropFolder||""===e.settings.cropFolder.trim())return{folderpath:(await getAttachmentsFolderAndFilePath(e.app,t,i)).folder,filename:i};const o=obsidian_module.normalizePath(e.settings.cropFolder);return await checkAndCreateFolder(o),{folderpath:o,filename:i}},getAnnotationFileNameAndFolder=async(e,t,n)=>{let r=e.settings.annotatePrefix;r&&""!==r.trim()||(r="annotated_");const i=r+n+".md";if(!e.settings.annotateFolder||""===e.settings.annotateFolder.trim())return{folderpath:(await getAttachmentsFolderAndFilePath(e.app,t,i)).folder,filename:i};const o=obsidian_module.normalizePath(e.settings.annotateFolder);return await checkAndCreateFolder(o),{folderpath:o,filename:i}},getListOfTemplateFiles=e=>{const t=obsidian_module.normalizePath(e.settings.templateFilePath),n=e.app.vault.getAbstractFileByPath(t);if(n&&n instanceof obsidian_module.TFolder)return e.app.vault.getFiles().filter((e=>e.path.startsWith(n.path))).filter((t=>e.isExcalidrawFile(t))).sort(((e,t)=>e.path.localeCompare(t.path)));if(n&&n instanceof obsidian_module.TFile)return[n];const r=e.app.metadataCache.getFirstLinkpathDest(t,"");return r?[r]:null},fileShouldDefaultAsExcalidraw=(e,t)=>{if(!e)return!1;const n=t.metadataCache.getCache(e);return(null==n?void 0:n.frontmatter)&&n.frontmatter[FRONTMATTER_KEYS.plugin.name]&&!Boolean(n.frontmatter[FRONTMATTER_KEYS["open-as-markdown"].name])},useDefaultExcalidrawFrame=e=>!(e.link.startsWith("[")||e.link.startsWith("file:")||e.link.startsWith("data:")),patchMobileView=e=>{if(DEVICE.isDesktop)return;console.log("patching mobile view");const t=getParentOfClass(e.containerEl,"mod-top");t&&(t.hasClass("mod-visible")||t.addClass("mod-visible"))},processLinkText=(e,t)=>{let n=null;if(e.search("#")>-1){const r=getLinkParts(e,t.file);n=`#${r.isBlockRef?"^":""}${r.ref}`,e=r.path}return e.match(REG_LINKINDEX_INVALIDCHARS)?{subpath:n,file:null}:{subpath:n,file:app.metadataCache.getFirstLinkpathDest(e,t.file.path)}},generateEmbeddableLink=(e,t)=>e;class CropImage{constructor(e,t){this.elements=e;const n=getEA();this.imageEA=n;const r=getEA();this.maskEA=r,this.bbox=n.getBoundingBox(e),this.setBoundingEl(n,"transparent"),this.setBoundingEl(r,"white"),e.forEach((e=>{const t=cloneElement(e);"image"!==e.type&&"frame"!==e.type&&(t.opacity=100,r.elementsDict[e.id]=t),"image"===e.type&&(n.elementsDict[e.id]=t)})),Object.values(t).forEach((e=>{n.imagesDict[e.id]=e}))}setBoundingEl(e,t){const{topX:n,topY:r,width:i,height:o}=this.bbox;e.style.backgroundColor=t,e.style.strokeColor="transparent",e.style.strokeWidth="0",e.style.strokeStyle="solid",e.style.fillStyle="solid",e.style.roughness=0,e.addRect(n,r,i,o)}getViewBoxAndSize(){const e=this.elements.filter((e=>"frame"===e.type));e.length>1&&new obsidian_module.Notice("Multiple frames are not supported for image cropping. Discarding frames from mask.");const t=this.imageEA.getElements().filter((e=>"image"===e.type)),{x:n,y:r,width:i,height:o}=1===e.length?e[0]:mapToXY(this.imageEA.getBoundingBox(t)),{topX:a,topY:s,width:l,height:c}=this.bbox;return{viewBox:`${n-a} ${r-s} ${i} ${o}`,vbWidth:i,vbHeight:o,width:l,height:c}}async getMaskSVG(){const e=await this.maskEA.createSVG(null,!1,{withBackground:!1,withTheme:!1,isMask:!1},null,null,0),t=e.querySelector("defs"),n=e.querySelector("style"),r=n?n.outerHTML:"";return t.parentElement.removeChild(t),{style:r,mask:e.innerHTML}}async getImage(){const e=Object.values(this.imageEA.imagesDict);return 1===e.length?e[0].dataURL:await this.imageEA.createPNGBase64(null,1,{withBackground:!1,withTheme:!1,isMask:!1},null,null,0)}async buildSVG(){if(0===this.imageEA.getElements().filter((e=>"image"===e.type)).length)return void new obsidian_module.Notice("No image found. Cannot crop.");const e=nanoid(),t=nanoid(),{viewBox:n,vbWidth:r,vbHeight:i,width:o,height:a}=this.getViewBoxAndSize(),s=new DOMParser,{style:l,mask:c}=await this.getMaskSVG(),T=`<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="${n}" width="${r}" height="${i}">\n<symbol id="${t}"><image width="100%" height="100%" href="${await this.getImage()}"/></symbol>\n<defs>${l}\n<mask id="${e}" x="0" y="0" width="${o}" height="${a}" maskUnits="userSpaceOnUse">\n${c}\n</mask>\n</defs>\n<use x="0" y="0" width="${o}" height="${a}" mask="url(#${e})" mask-type="alpha" href="#${t}"/>\n</svg>`;return s.parseFromString(T,"image/svg+xml").firstElementChild}async getCroppedPNG(){const e=app.plugins.plugins["obsidian-excalidraw-plugin"],t=embedFontsInSVG(await this.buildSVG(),e);return new Promise(((e,n)=>{const r=(new XMLSerializer).serializeToString(t),i=document.createElement("canvas"),o=i.getContext("2d");if(!o)return void n("Unable to get 2D context");i.width=t.width.baseVal.value,i.height=t.height.baseVal.value;const a=new Image;a.onload=()=>{o.clearRect(0,0,i.width,i.height),o.drawImage(a,0,0),i.toBlob((t=>{t?e(t):n(new Error("Failed to convert to PNG"))}),"image/png",1)},a.src=`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(r)))}`}))}async getCroppedSVG(){return await this.buildSVG()}}const mapToXY=({topX:e,topY:t,width:n,height:r})=>({x:e,y:t,width:n,height:r});let versionUpdateChecked=!1;const checkExcalidrawVersion=async e=>{if(!versionUpdateChecked){versionUpdateChecked=!0;try{const e=async()=>JSON.parse(await obsidian_module.request({url:"https://api.github.com/repos/zsviczian/obsidian-excalidraw-plugin/releases?per_page=5&page=1"})),t=(await e()).map((e=>({version:e.tag_name,published:new Date(e.published_at)}))).filter((e=>e.version.match(/^\d+\.\d+\.\d+$/))).sort(((e,t)=>t.published-e.published))[0].version;isVersionNewerThanOther(t,PLUGIN_VERSION)&&new obsidian_module.Notice(`A newer version of Excalidraw is available in Community Plugins.\n\nYou are using ${PLUGIN_VERSION}.\nThe latest is ${t}`)}catch(e){errorlog({where:"Utils/checkExcalidrawVersion",error:e})}setTimeout((()=>versionUpdateChecked=!1),288e5)}};function wrapTextAtCharLength(e,t,n=!1,r=0){if(!t)return e;let i="";if(n){for(const n of e.split("\n")){const e=n.match(new RegExp(`(.){1,${t}}`,"g"));i+=e?`${e.join("\n")}\n`:"\n"}return i.replace(/\n$/,"")}const o=new RegExp(`(.{1,${t}})(\\s+|$\\n?)|([^\\s]{1,${t+r}})(\\s+|$\\n?)?`,"gm"),a=e.matchAll(o);let s;for(;!(s=a.next()).done;){i+=s.value[1]?s.value[1].trimEnd():s.value[3].trimEnd();const e=(s.value[2]?s.value[2].split("\n").length-1:0)+(s.value[4]?s.value[4].split("\n").length-1:0);i+="\n".repeat(e),0===e&&(i+="\n")}return i.replace(/\n$/,"")}new Random(Date.now());const rotate$1=(e,t,n,r,i)=>[(e-n)*Math.cos(i)-(t-r)*Math.sin(i)+n,(e-n)*Math.sin(i)+(t-r)*Math.cos(i)+r],rotatedDimensions=e=>{if(0===e.angle)return[e.x,e.y,e.width,e.height];const t=e.x+e.width/2,n=e.y+e.height/2,[r,i]=rotate$1(e.x,e.y,t,n,e.angle),[o,a]=rotate$1(e.x+e.width,e.y+e.height,t,n,e.angle);return[r<o?r:o,i<a?i:a,Math.abs(r-o),Math.abs(i-a)]},getDataURL=async(e,t)=>new Promise(((n,r)=>{const i=new FileReader;i.onload=()=>{const e=i.result;n(e)},i.onerror=e=>r(e),i.readAsDataURL(new Blob([new Uint8Array(e)],{type:t}))})),getFontDataURL=async(e,t,n,r)=>{let i="",o="",a="";const s=e.metadataCache.getFirstLinkpathDest(t,n);if(s){const t=await e.vault.readBinary(s),n=s.extension.startsWith("woff")?"application/font-woff":"font/truetype";o=null!=r?r:s.basename,a=await getDataURL(t,n),i=` @font-face {font-family: "${o}";src: url("${a}")}`;const l=i.split(";base64,",2);i=`${l[0]};charset=utf-8;base64,${l[1]}`}return{fontDef:i,fontName:o,dataURL:a}},svgToBase64=e=>`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(e.replaceAll(" "," "))))}`,getBinaryFileFromDataURL=async e=>{if(!e)return null;if(e.match(/^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/i)){const t=e,n=getURLImageExtension(t),r=getMimeType(n);e=await getDataURLFromURL(t,r)}const t=e.matchAll(/base64,(.*)/g).next();if(!t.value)return null;const n=window.atob(t.value[1]),r=n.length,i=new Uint8Array(r);for(let e=0;e<r;e++)i[e]=n.charCodeAt(e);return i.buffer},getSVG=async(e,t,n,r)=>{var i;let o=e.elements;o.some((e=>"embeddable"===e.type))&&(o=JSON.parse(JSON.stringify(o)),o.filter((e=>"embeddable"===e.type)).forEach((t=>{var n,r;t.link=(r=t.link,null===(n=e.appState)||void 0===n||n.theme,r)}))),o=r?updateElementLinksToObsidianLinks({elements:o,hostFile:r}):o;try{let a;if(t.isMask){const t=new CropImage(o,e.files);a=await t.getCroppedSVG()}else a=await exportToSvg({elements:o,appState:Object.assign({exportBackground:t.withBackground,exportWithDarkMode:!!t.withTheme&&"light"!=(null===(i=e.appState)||void 0===i?void 0:i.theme)},e.appState),files:e.files,exportPadding:n,exportingFrame:null,renderEmbeddables:!0});return a&&(a.addClass("excalidraw-svg"),r instanceof obsidian_module.TFile)&&getFileCSSClasses(r).forEach((e=>a.addClass(e))),a}catch(e){return null}};function filterFiles(e){let t={};return Object.entries(e).forEach((([e,n])=>{n.dataURL.startsWith("http")||(t[e]=n)})),t}const getPNG=async(e,t,n,r=1)=>{var i;try{if(t.isMask){const t=new CropImage(e.elements,e.files);return await t.getCroppedPNG()}return await exportToBlob({elements:e.elements,appState:Object.assign({exportBackground:t.withBackground,exportWithDarkMode:!!t.withTheme&&"light"!=(null===(i=e.appState)||void 0===i?void 0:i.theme)},e.appState),files:filterFiles(e.files),exportPadding:n,mimeType:"image/png",getDimensions:(e,t)=>({width:e*r,height:t*r,scale:r})})}catch(e){return errorlog({where:"Utils.getPNG",error:e}),null}},getQuickImagePreview=async(e,t,n)=>{if(!e.settings.displayExportedImageIfAvailable)return null;const r=getIMGFilename(t,n),i=e.app.vault.getAbstractFileByPath(r);return i&&i instanceof obsidian_module.TFile?"png"===n?await e.app.vault.readBinary(i):await e.app.vault.read(i):null},embedFontsInSVG=(e,t,n=!1)=>{const r=!n&&null!=e.querySelector("text[font-family^='Virgil']"),i=!n&&null!=e.querySelector("text[font-family^='Cascadia']"),o=!n&&null!=e.querySelector("text[font-family^='Assistant']"),a=null!=e.querySelector("text[font-family^='LocalFont']"),s=e.querySelector("defs");if(s&&(i||r||a||o)){let e=s.querySelector("style");e||(e=document.createElement("style"),s.appendChild(e)),e.innerHTML=`${r?VIRGIL_FONT:""}${i?CASCADIA_FONT:""}${o?ASSISTANT_FONT:""}${a?t.fourthFontDef:""}`}return e},getImageSize=async e=>new Promise(((t,n)=>{const r=new Image;r.onload=()=>{t({height:r.naturalHeight,width:r.naturalWidth})},r.onerror=n,r.src=e})),addAppendUpdateCustomData=(e,t)=>{if(!t)return e;e.customData||(e.customData={});for(const n in t)void 0!==t[n]&&(e.customData[n]=t[n]);return e},scaleLoadedImage=(e,t)=>{let n=!1;if(!t||!e)return{dirty:n,scene:e};for(const r of t){const[t,i]=[r.size.width,r.size.height],o=r.size.width/r.size.height;e.elements.filter((e=>"image"===e.type&&e.fileId===r.id)).forEach((e=>{var a,s;const[l,c]=[e.width,e.height];if(((null===(a=e.customData)||void 0===a?void 0:a.isAnchored)&&r.shouldScale||!(null===(s=e.customData)||void 0===s?void 0:s.isAnchored)&&!r.shouldScale)&&(addAppendUpdateCustomData(e,r.shouldScale?{isAnchored:!1}:{isAnchored:!0}),n=!0),r.shouldScale){if(o!=l/c){n=!0;const r=Math.sqrt(l*c*i/t),o=Math.sqrt(l*c*t/i);e.height=r,e.width=o,e.y+=(c-r)/2,e.x+=(l-o)/2}}else l===t&&c===i||(n=!0,e.height=i,e.width=t,e.y+=(c-i)/2,e.x+=(l-t)/2)}))}return{dirty:n,scene:e}},setDocLeftHandedMode=(e,t)=>{const n=t.createElement("style");n.id="excalidraw-left-handed",n.textContent=".excalidraw .App-bottom-bar{justify-content:flex-end;}";const r=t.getElementById(n.id);r&&t.head.removeChild(r),e&&t.head.appendChild(n)},setLeftHandedMode=e=>{const t=new Set;app.workspace.iterateAllLeaves((n=>{const r=app.isMobile?document:n.view.containerEl.ownerDocument;r&&(t.has(r)||(t.add(r),setDocLeftHandedMode(e,r)))}))},getLinkParts=(e,t)=>{var n,r,i;const o=e.match(/(^[^#\|]*)#?(\^)?([^\|]*)?\|?(\d*)x?(\d*)/),a="^"===o[2];return{original:e,path:t&&""===o[1]?t.path:o[1],isBlockRef:a,ref:(null===(n=o[3])||void 0===n?void 0:n.match(/^page=\d*$/i))?o[3]:a?cleanBlockRef(o[3]):cleanSectionHeading(o[3]),width:o[4]?parseInt(o[4]):void 0,height:o[5]?parseInt(o[5]):void 0,page:parseInt(null===(i=null===(r=o[3])||void 0===r?void 0:r.match(/page=(\d*)/))||void 0===i?void 0:i[1])}},compress=e=>LZString.compressToBase64(e).replace(/(.{64})/g,"$1\n\n"),decompress=e=>LZString.decompressFromBase64(e.replaceAll("\n","").replaceAll("\r","")),isMaskFile=(e,t)=>{if(t){const n=e.app.metadataCache.getFileCache(t);if((null==n?void 0:n.frontmatter)&&null!=n.frontmatter[FRONTMATTER_KEYS.mask.name])return Boolean(n.frontmatter[FRONTMATTER_KEYS.mask.name])}return!1},hasExportTheme=(e,t)=>{if(t){const n=e.app.metadataCache.getFileCache(t);if((null==n?void 0:n.frontmatter)&&null!=n.frontmatter[FRONTMATTER_KEYS["export-dark"].name])return!0}return!1},getExportTheme=(e,t,n)=>{if(t){const n=e.app.metadataCache.getFileCache(t);if((null==n?void 0:n.frontmatter)&&null!=n.frontmatter[FRONTMATTER_KEYS["export-dark"].name])return n.frontmatter[FRONTMATTER_KEYS["export-dark"].name]?"dark":"light"}return e.settings.exportWithTheme?n:"light"},hasExportBackground=(e,t)=>{if(t){const n=e.app.metadataCache.getFileCache(t);if((null==n?void 0:n.frontmatter)&&null!=n.frontmatter[FRONTMATTER_KEYS["export-transparent"].name])return!0}return!1},getWithBackground=(e,t)=>{if(t){const n=e.app.metadataCache.getFileCache(t);if((null==n?void 0:n.frontmatter)&&null!=n.frontmatter[FRONTMATTER_KEYS["export-transparent"].name])return!n.frontmatter[FRONTMATTER_KEYS["export-transparent"].name]}return e.settings.exportWithBackground},getExportPadding=(e,t)=>{if(t){const n=e.app.metadataCache.getFileCache(t);if(!(null==n?void 0:n.frontmatter))return e.settings.exportPaddingSVG;if(null!=n.frontmatter[FRONTMATTER_KEYS["export-padding"].name]){const e=parseInt(n.frontmatter[FRONTMATTER_KEYS["export-padding"].name]);if(!isNaN(e))return e}if(null!=n.frontmatter[FRONTMATTER_KEYS["export-svgpadding"].name]){const e=parseInt(n.frontmatter[FRONTMATTER_KEYS["export-svgpadding"].name]);if(!isNaN(e))return e}}return e.settings.exportPaddingSVG},getPNGScale=(e,t)=>{if(t){const n=e.app.metadataCache.getFileCache(t);if((null==n?void 0:n.frontmatter)&&null!=n.frontmatter[FRONTMATTER_KEYS["export-pngscale"].name]){const e=parseFloat(n.frontmatter[FRONTMATTER_KEYS["export-pngscale"].name]);if(!isNaN(e)&&e>0)return e}}return e.settings.pngExportScale},isVersionNewerThanOther=(e,t)=>{const n=e.match(/(\d*)\.(\d*)\.(\d*)/),r=t.match(/(\d*)\.(\d*)\.(\d*)/);return Boolean(n&&4===n.length&&r&&4===r.length&&!(isNaN(parseInt(n[1]))||isNaN(parseInt(n[2]))||isNaN(parseInt(n[3])))&&!(isNaN(parseInt(r[1]))||isNaN(parseInt(r[2]))||isNaN(parseInt(r[3])))&&(parseInt(n[1])>parseInt(r[1])||parseInt(n[1])>=parseInt(r[1])&&parseInt(n[2])>parseInt(r[2])||parseInt(n[1])>=parseInt(r[1])&&parseInt(n[2])>=parseInt(r[2])&&parseInt(n[3])>parseInt(r[3])))},getEmbeddedFilenameParts=e=>{const t=null==e?void 0:e.match(/([^#\^]*)((#\^)(group=|area=|frame=|taskbone)?([^\|]*)|(#)(group=|area=|frame=|taskbone)?([^\^\|]*))(.*)/);return t?{filepath:t[1],hasBlockref:Boolean(t[3]),hasGroupref:"group="===t[4]||"group="===t[7],hasTaskbone:"taskbone"===t[4]||"taskbone"===t[7],hasArearef:"area="===t[4]||"area="===t[7],hasFrameref:"frame="===t[4]||"frame="===t[7],blockref:t[5],hasSectionref:Boolean(t[6]),sectionref:t[8],linkpartReference:t[2],linkpartAlias:t[9]}:{filepath:e,hasBlockref:!1,hasGroupref:!1,hasTaskbone:!1,hasArearef:!1,hasFrameref:!1,blockref:"",hasSectionref:!1,sectionref:"",linkpartReference:"",linkpartAlias:""}},fragWithHTML=e=>createFragment((t=>t.createDiv().innerHTML=e)),errorlog=e=>{console.error(Object.assign({plugin:"Excalidraw"},e))},sleep$1=async e=>new Promise((t=>setTimeout(t,e))),log=console.log.bind(window.console),debug=console.log.bind(window.console),getContainerElement=(e,t)=>{var n;return e&&e.containerId&&null!==(n=t.elements.filter((t=>t.id===e.containerId))[0])&&void 0!==n?n:null},updateFrontmatterInString=(e,t)=>{if(!e||!t)return e;for(const n of t){const t=new RegExp(`${n[0]}:\\s.*\\n`,"g");e=e.match(t)?e.replaceAll(t,`${n[0]}: ${n[1]}\n`):e.replace(/^---\n/,`---\n${n[0]}: ${n[1]}\n`)}return e},isHyperLink=e=>e&&!e.includes("\n")&&!e.includes("\r")&&e.match(/^https?:(\d*)?\/\/[^\s]*$/),isContainer=e=>{var t;return"arrow"!==e.type&&(null===(t=e.boundElements)||void 0===t?void 0:t.map((e=>e.type)).includes("text"))},hyperlinkIsImage=e=>{isHyperLink(e);const t=e.split("?")[0];return IMAGE_TYPES.contains(t.substring(t.lastIndexOf(".")+1))},hyperlinkIsYouTubeLink=e=>isHyperLink(e)&&(e.startsWith("https://youtu.be")||e.startsWith("https://www.youtube.com")||e.startsWith("https://youtube.com")||e.startsWith("https//www.youtu.be"))&&null!==e.match(/(youtu.be\/|v=)([^?\/\&]*)/),getYouTubeThumbnailLink=async e=>{const t=e.match(/(youtu.be\/|v=)([^?\/\&]*)/);if(!t||!t[2])return null;const n=t[2];let r=`https://i.ytimg.com/vi/${n}/maxresdefault.jpg`,i=await obsidian_module.requestUrl({url:r,method:"get",contentType:"image/jpeg",throw:!1});return i&&200===i.status?r:(r=`https://i.ytimg.com/vi/${n}/hq720.jpg`,i=await obsidian_module.requestUrl({url:r,method:"get",contentType:"image/jpeg",throw:!1}),i&&200===i.status?r:(r=`https://i.ytimg.com/vi/${n}/mqdefault.jpg`,i=await obsidian_module.requestUrl({url:r,method:"get",contentType:"image/jpeg",throw:!1}),i&&200===i.status?r:`https://i.ytimg.com/vi/${n}/default.jpg`))},isCallerFromTemplaterPlugin=e=>{const t=e.split("\n");for(const e of t)if(e.trim().startsWith("at Templater."))return!0;return!1},convertSVGStringToElement=e=>{const t=document.createElement("div");t.innerHTML=e;const n=t.firstChild;if(n instanceof SVGSVGElement)return n},escapeRegExp=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),addIframe=(e,t,n,r="settings")=>{e.createDiv({cls:`excalidraw-videoWrapper ${r}`}).createEl("iframe",{attr:{allowfullscreen:!0,allow:"encrypted-media;picture-in-picture",frameborder:"0",title:"YouTube video player",src:"https://www.youtube.com/embed/"+t+(n?"?start="+n:""),sandbox:"allow-forms allow-presentation allow-same-origin allow-scripts allow-modals"}})},arrayToMap=e=>e instanceof Map?e:e.reduce(((e,t)=>(e.set("string"==typeof t?t:t.id,t),e)),new Map);class ScriptEngine{constructor(e){this.plugin=e,this.scriptIconMap={},this.loadScripts(),this.registerEventHandlers()}registerEventHandlers(){const e=e=>{if(!e.endsWith(".svg"))return;const t=app.vault.getAbstractFileByPath(getIMGFilename(e,"md"));t&&t instanceof obsidian_module.TFile&&(this.unloadScript(this.getScriptName(t),t.path),this.loadScript(t))};this.plugin.registerEvent(app.vault.on("delete",(async t=>{t instanceof obsidian_module.TFile&&t.path.startsWith(this.scriptPath)&&(this.unloadScript(this.getScriptName(t),t.path),e(t.path))}))),this.plugin.registerEvent(app.vault.on("create",(async t=>{t instanceof obsidian_module.TFile&&t.path.startsWith(this.scriptPath)&&(this.loadScript(t),e(t.path))}))),this.plugin.registerEvent(app.vault.on("rename",(async(t,n)=>{if(!(t instanceof obsidian_module.TFile))return;const r=n.startsWith(this.scriptPath),i=t.path.startsWith(this.scriptPath);r&&(this.unloadScript(this.getScriptName(n),n),e(n)),i&&(this.loadScript(t),e(t.path))})))}updateScriptPath(){this.scriptPath!==this.plugin.settings.scriptFolderPath&&(this.scriptPath&&this.unloadScripts(),this.loadScripts())}getListofScripts(){if(this.scriptPath=this.plugin.settings.scriptFolderPath,app.vault.getAbstractFileByPath(this.scriptPath))return app.vault.getFiles().filter((e=>e.path.startsWith(this.scriptPath)&&"md"===e.extension))}loadScripts(){var e;null===(e=this.getListofScripts())||void 0===e||e.forEach((e=>this.loadScript(e)))}getScriptName(e){let t="",n="";e instanceof obsidian_module.TFile?(t=e.basename,n=e.path):(t=splitFolderAndFilename(e).basename,n=e);const r=n.split(`${this.scriptPath}/`)[1],i=r.lastIndexOf("/");return i>-1?r.substring(0,i+1)+t:t}async addScriptIconToMap(e,t){const n=getIMGFilename(e,"svg"),r=app.vault.getAbstractFileByPath(n),i=r&&r instanceof obsidian_module.TFile?await app.vault.read(r):null;this.scriptIconMap=Object.assign({},this.scriptIconMap);const o=splitFolderAndFilename(t);this.scriptIconMap[e]={name:o.filename,group:"/"===o.folderpath?"":o.folderpath,svgString:i},this.updateToolPannels()}loadScript(e){if("md"!==e.extension)return;const t=this.getScriptName(e);this.addScriptIconToMap(e.path,t),this.plugin.addCommand({id:t,name:`(Script) ${t}`,checkCallback:n=>{if(n)return Boolean(app.workspace.getActiveViewOfType(ExcalidrawView));const r=app.workspace.getActiveViewOfType(ExcalidrawView);return!!r&&((async()=>{const n=await app.vault.read(e);n&&this.executeScript(r,n,t,e)})(),!0)}})}unloadScripts(){const e=app.vault.getFiles().filter((e=>e.path.startsWith(this.scriptPath)));e.forEach((e=>{this.unloadScript(this.getScriptName(e),e.path)}))}unloadScript(e,t){if(!t.endsWith(".md"))return;delete this.scriptIconMap[t],this.scriptIconMap=Object.assign({},this.scriptIconMap),this.updateToolPannels();const n=`${PLUGIN_ID}:${e}`;this.plugin.app.commands.commands[n]&&delete this.plugin.app.commands.commands[n]}async executeScript(e,t,n,r){if(!e||!t||!n)return;const i=getEA(e);i.activeScript=n;const o=Object.getPrototypeOf((async()=>{})).constructor;let a=null;return a=await new o("ea","utils",t)(i,{inputPrompt:(t,n,r,i,o,a,s,l)=>ScriptEngine.inputPrompt(e,this.plugin,this.plugin.app,t,n,r,i,o,a,s,l),suggester:(e,t,n,r)=>ScriptEngine.suggester(app,e,t,n,r),scriptFile:r}),a}updateToolPannels(){app.workspace.getLeavesOfType("excalidraw").forEach((e=>{var t,n;null===(n=null===(t=e.view.toolsPanelRef)||void 0===t?void 0:t.current)||void 0===n||n.updateScriptIconMap(this.scriptIconMap)}))}static async inputPrompt(e,t,n,r,i,o,a,s,l,c,T){try{return await GenericInputPrompt.Prompt(e,t,n,r,i,o,a,s,l,c,T)}catch(e){return}}static async suggester(e,t,n,r,i){try{return await GenericSuggester.Suggest(e,t,n,r,i)}catch(e){return}}}const insertImageToView=async(e,t,n,r)=>{e.clear(),e.style.strokeColor="transparent",e.style.backgroundColor="transparent";const i=e.getExcalidrawAPI();e.canvas.theme=i.getAppState().theme;const o=await e.addImage(t.x,t.y,n,r);return await e.addElementsToView(!1,!0,!0),o},insertEmbeddableToView=async(e,t,n,r)=>{if(e.clear(),e.style.strokeColor="transparent",e.style.backgroundColor="transparent",n&&(IMAGE_TYPES.contains(n.extension)||e.isExcalidrawFile(n))&&!ANIMATED_IMAGE_TYPES.contains(n.extension))return await insertImageToView(e,t,n);{const i=e.addEmbeddable(t.x,t.y,500,500,r,n);return await e.addElementsToView(!1,!0,!0),i}},getLinkTextFromLink=e=>{if(!e)return;if(e.match(REG_LINKINDEX_HYPERLINK))return;const t=REGEX_LINK.getRes(e).next();if(!t.value)return;const n=REGEX_LINK.getLink(t);return n.match(REG_LINKINDEX_HYPERLINK)?void 0:n},openTagSearch=(e,t,n)=>{const r=e.matchAll(/#([\p{Letter}\p{Emoji_Presentation}\p{Number}\/_-]+)/gu).next();if(!r.value||r.value.length<2)return;const i=t.workspace.getLeavesOfType("search");0!=i.length&&(i[0].view.setQuery(`tag:${r.value[1]}`),t.workspace.revealLeaf(i[0]),n&&n.isFullscreen()&&n.exitFullscreen())},openExternalLink=(e,t,n)=>{if(e.match(/^cmd:\/\/.*/)){const n=e.replace("cmd://","");return t.commands.executeCommandById(n),!0}return!!e.match(REG_LINKINDEX_HYPERLINK)&&(window.open(e,"_blank"),!0)},getExcalidrawFileForwardLinks=(e,t,n)=>{let r="";const i=e.metadataCache.getLinks()[t.path];if(i&&i.length>0){const o=new Set;i.forEach((r=>{const i=getLinkParts(r.link),a=e.metadataCache.getFirstLinkpathDest(i.path,t.path);if(a&&a.path!==t.path){if(n.has(a.path))return;n.add(a.path),o.add(`[[${a.path}${i.ref?"#"+i.ref:""}|Second Order Link: ${a.basename}]]`)}})),r=[...o].join(" ")}return r},getFrameBasedOnFrameNameOrId=(e,t)=>{const n=t.filter((e=>"frame"===e.type)).map(((e,t)=>{var n;return{el:e,id:e.id,name:null!==(n=e.name)&&void 0!==n?n:`Frame ${String(t+1).padStart(2,"0")}`}})).filter((t=>t.id===e||t.name===e)).map((e=>e.el));return 1===n.length?n[0]:null};class Prompt extends obsidian_module.Modal{constructor(e,t,n,r,i){super(e),this.prompt_text=t,this.default_value=n,this.placeholder=r,this.prompt_desc=i}onOpen(){this.titleEl.setText(this.prompt_text),this.createForm()}onClose(){this.contentEl.empty()}createForm(){var e;let t=this.contentEl.createDiv();t.addClass("excalidraw-prompt-div"),this.prompt_desc&&(t=t.createDiv(),t.style.width="100%",t.createEl("p").innerHTML=this.prompt_desc);const n=t.createEl("form");n.addClass("excalidraw-prompt-form"),n.type="submit",n.onsubmit=e=>{e.preventDefault(),this.resolve(this.promptEl.value),this.close()},this.promptEl=n.createEl("input"),this.promptEl.type="text",this.promptEl.placeholder=this.placeholder,this.promptEl.value=null!==(e=this.default_value)&&void 0!==e?e:"",this.promptEl.addClass("excalidraw-prompt-input"),this.promptEl.select()}async openAndGetValue(e){this.resolve=e,this.open()}}class GenericInputPrompt extends obsidian_module.Modal{static Prompt(e,t,n,r,i,o,a,s,l,c,T){return new GenericInputPrompt(e,t,n,r,i,o,a,s,l,c,T).waitForClose}constructor(e,t,n,r,i,o,a,s,l,c,T){super(n),this.header=r,this.didSubmit=!1,this.lines=1,this.displayEditorButtons=!1,this.selectionStart=0,this.selectionEnd=0,this.selectionUpdateTimer=0,this.blockPointerInputOutsideModal=!1,this.linkBtnClickCallback=()=>{this.view.ownerWindow.clearTimeout(this.selectionUpdateTimer),this.plugin.insertLinkDialog.start(this.view.file.path,(e=>{const t=this.inputComponent.inputEl.value;this.selectionStart>0&&" "!==t.slice(this.selectionStart-1,this.selectionStart)&&(e=" "+e),this.selectionStart<t.length&&" "!==t.slice(this.selectionStart,this.selectionStart+1)&&(e+=" ");const n=this.inputComponent.inputEl.value.slice(0,this.selectionStart)+e+this.inputComponent.inputEl.value.slice(this.selectionStart);this.inputComponent.inputEl.value=n,this.input=this.inputComponent.inputEl.value,this.inputComponent.inputEl.focus(),this.selectionStart=this.selectionStart+e.length,this.selectionEnd=this.selectionStart+e.length,this.inputComponent.inputEl.setSelectionRange(this.selectionStart,this.selectionStart)}))},this.insertStringBtnClickCallback=e=>{this.view.ownerWindow.clearTimeout(this.selectionUpdateTimer);const t=this.inputComponent.inputEl.value.slice(0,this.selectionStart)+e+this.inputComponent.inputEl.value.slice(this.selectionStart);this.inputComponent.inputEl.value=t,this.input=this.inputComponent.inputEl.value,this.inputComponent.inputEl.focus(),this.selectionStart=this.selectionStart+1,this.selectionEnd=this.selectionStart,this.inputComponent.inputEl.setSelectionRange(this.selectionStart,this.selectionEnd)},this.delBtnClickCallback=()=>{if(this.view.ownerWindow.clearTimeout(this.selectionUpdateTimer),0===this.input.length)return;const e=this.selectionEnd>this.selectionStart?this.selectionStart:this.selectionStart>0?this.selectionStart-1:0,t=this.selectionEnd,n=this.inputComponent.inputEl.value.slice(0,e)+this.inputComponent.inputEl.value.slice(t);this.inputComponent.inputEl.value=n,this.input=this.inputComponent.inputEl.value,this.inputComponent.inputEl.focus(),this.selectionStart=e,this.selectionEnd=e,this.inputComponent.inputEl.setSelectionRange(e,e)},this.uppercaseBtnClickCallback=()=>{if(this.view.ownerWindow.clearTimeout(this.selectionUpdateTimer),this.selectionEnd===this.selectionStart)return;const e=this.inputComponent.inputEl.value.slice(0,this.selectionStart)+this.inputComponent.inputEl.value.slice(this.selectionStart,this.selectionEnd).toUpperCase()+this.inputComponent.inputEl.value.slice(this.selectionEnd);this.inputComponent.inputEl.value=e,this.input=this.inputComponent.inputEl.value,this.inputComponent.inputEl.focus(),this.inputComponent.inputEl.setSelectionRange(this.selectionStart,this.selectionEnd)},this.submitClickCallback=()=>this.submit(),this.cancelClickCallback=()=>this.cancel(),this.keyDownCallback=e=>{("Enter"===e.key&&1===this.lines||isWinCTRLorMacCMD(e)&&"Enter"===e.key)&&(e.preventDefault(),this.submit()),this.displayEditorButtons&&"k"===e.key&&isWinCTRLorMacCMD(e)&&(e.preventDefault(),this.linkBtnClickCallback())},this.view=e,this.plugin=t,this.placeholder=i,this.input=o,this.buttons=a,this.lines=null!=s?s:1,this.displayEditorButtons=this.lines>1&&null!=l&&l,this.customComponents=c,this.blockPointerInputOutsideModal=null!=T&&T,this.waitForClose=new Promise(((e,t)=>{this.resolvePromise=e,this.rejectPromise=t})),this.display(),this.inputComponent.inputEl.focus(),this.open()}display(){var e;this.contentEl.empty(),this.blockPointerInputOutsideModal&&(this.bgEl.style.pointerEvents=this.blockPointerInputOutsideModal?"none":"auto"),this.titleEl.textContent=this.header;const t=this.contentEl.createDiv();this.inputComponent=this.createInputField(t,this.placeholder,this.input),null===(e=this.customComponents)||void 0===e||e.call(this,t),this.createButtonBar(t)}createInputField(e,t,n){const r=new obsidian_module.TextAreaComponent(e);r.inputEl.style.width="100%",r.inputEl.style.height=2*this.lines+"em",1===this.lines&&(r.inputEl.style.resize="none",r.inputEl.style.overflow="hidden"),r.setPlaceholder(null!=t?t:"").setValue(null!=n?n:"").onChange((e=>this.input=e));const i=()=>{this.selectionUpdateTimer=this.view.ownerWindow.setTimeout((()=>{this.selectionStart=this.inputComponent.inputEl.selectionStart,this.selectionEnd=this.inputComponent.inputEl.selectionEnd}),30)};return r.inputEl.addEventListener("keydown",this.keyDownCallback),r.inputEl.addEventListener("keyup",i),r.inputEl.addEventListener("pointerup",i),r.inputEl.addEventListener("touchend",i),r.inputEl.addEventListener("input",i),r.inputEl.addEventListener("paste",i),r.inputEl.addEventListener("cut",i),r.inputEl.addEventListener("select",i),r.inputEl.addEventListener("selectionchange",i),r}createButton(e,t,n,r="",i="5px"){const o=new obsidian_module.ButtonComponent(e);return o.buttonEl.style.padding="0.5em",o.buttonEl.style.marginLeft=i,o.setTooltip(r),o.setButtonText(t).onClick(n),o}createButtonBar(e){const t=e.createDiv();t.style.display="flex",t.style.justifyContent="space-between",t.style.marginTop="1rem";const n=t.createDiv(),r=t.createDiv();if(this.buttons&&this.buttons.length>0){let e=null;for(const t of this.buttons){const n=new obsidian_module.ButtonComponent(r);n.buttonEl.style.marginLeft="5px",t.tooltip&&n.setTooltip(t.tooltip),n.setButtonText(t.caption).onClick((e=>{const n=t.action(this.input);n&&(this.input=n),this.submit()})),e=null!=e?e:n}e&&(e.setCta(),e.buttonEl.style.marginRight="0")}else this.createButton(r,"✅",this.submitClickCallback).setCta().buttonEl.style.marginRight="0";this.createButton(r,"❌",this.cancelClickCallback,t$d("PROMPT_BUTTON_CANCEL")),this.displayEditorButtons&&(this.createButton(n,"⏎",(()=>this.insertStringBtnClickCallback("\n")),t$d("PROMPT_BUTTON_INSERT_LINE"),"0"),this.createButton(n,"⌫",this.delBtnClickCallback,"Delete"),this.createButton(n,"⎵",(()=>this.insertStringBtnClickCallback(" ")),t$d("PROMPT_BUTTON_INSERT_SPACE")),this.view&&this.createButton(n,"🔗",this.linkBtnClickCallback,t$d("PROMPT_BUTTON_INSERT_LINK")),this.createButton(n,"🔠",this.uppercaseBtnClickCallback,t$d("PROMPT_BUTTON_UPPERCASE")))}submit(){this.didSubmit=!0,this.close()}cancel(){this.close()}resolveInput(){this.didSubmit?this.resolvePromise(this.input):this.rejectPromise("No input given.")}removeInputListener(){var e,t;null===(t=null===(e=this.inputComponent)||void 0===e?void 0:e.inputEl)||void 0===t||t.removeEventListener("keydown",this.keyDownCallback)}onOpen(){super.onOpen(),this.inputComponent.inputEl.focus(),this.inputComponent.inputEl.select()}onClose(){super.onClose(),this.resolveInput(),this.removeInputListener()}}class GenericSuggester extends obsidian_module.FuzzySuggestModal{static Suggest(e,t,n,r,i){return new GenericSuggester(e,t,n,r,i).promise}constructor(e,t,n,r,i){var o;super(e),this.displayItems=t,this.items=n,this.hint=r,this.instructions=i,this.limit=20,this.setPlaceholder(null!==(o=this.hint)&&void 0!==o?o:""),i&&this.setInstructions(this.instructions),this.promise=new Promise(((e,t)=>{this.resolvePromise=e,this.rejectPromise=t})),this.open()}getItemText(e){return this.displayItems[this.items.indexOf(e)]}getItems(){return this.items}selectSuggestion(e,t){this.resolved=!0,super.selectSuggestion(e,t)}onChooseItem(e){this.resolved=!0,this.resolvePromise(e)}onClose(){super.onClose(),this.resolved||this.rejectPromise(this.inputEl.value)}}class NewFileActions extends obsidian_module.Modal{constructor({plugin:e,path:t,keys:n,view:r,openNewFile:i=!0,parentFile:o,sourceElement:a}){super(e.app),this.newFile=null,this.plugin=e,this.path=t,this.keys=n,this.view=r,this.openNewFile=i,this.sourceElement=a,this.parentFile=null!=o?o:r.file,this.waitForClose=new Promise(((e,t)=>{this.resolvePromise=e,this.rejectPromise=t}))}onOpen(){this.createForm()}openFile(e){this.newFile=e,e&&this.openNewFile&&openLeaf({plugin:this.plugin,fnGetLeaf:()=>getLeaf(this.plugin,this.view.leaf,this.keys),file:e,openState:{active:!0}})}onClose(){super.onClose(),this.resolvePromise(this.newFile)}createForm(){this.titleEl.setText(t$d("PROMPT_TITLE_NEW_FILE")),this.contentEl.createDiv({cls:"excalidraw-prompt-center",text:t$d("PROMPT_FILE_DOES_NOT_EXIST")}),this.contentEl.createDiv({cls:"excalidraw-prompt-center filepath",text:this.path}),this.contentEl.createDiv({cls:"excalidraw-prompt-center"},(e=>{e.style.textAlign="right";const t=()=>this.path&&""!==this.path?!!this.parentFile||(new obsidian_module.Notice(t$d("PROMPT_ERROR_DRAWING_CLOSED")),!1):(new obsidian_module.Notice(t$d("PROMPT_ERROR_NO_FILENAME")),!1),n=async e=>{if(!this.path.includes("/")){const e=new RegExp(`${escapeRegExp(this.parentFile.name)}$`,"g");this.path=this.parentFile.path.replace(e,this.path)}return this.path.match(/\.md$/)||(this.path=`${this.path}.md`),checkAndCreateFolder(splitFolderAndFilename(this.path).folderpath),await this.app.vault.create(this.path,e)};this.sourceElement&&(e.createEl("button",{text:t$d("PROMPT_BUTTON_EMBED_MARKDOWN"),attr:{"aria-label":t$d("PROMPT_BUTTON_EMBED_MARKDOWN_ARIA")}}).onclick=async()=>{if(!t)return;const e=await n("");if(e){const t=getEA(this.view);t.copyViewElementsToEAforEditing([this.sourceElement]),t.getElement(this.sourceElement.id).isDeleted=!0,t.addEmbeddable(this.sourceElement.x,this.sourceElement.y,500,500,void 0,e),t.addElementsToView()}this.close()}),e.createEl("button",{text:t$d("PROMPT_BUTTON_CREATE_MARKDOWN"),attr:{"aria-label":t$d("PROMPT_BUTTON_CREATE_MARKDOWN_ARIA")}}).onclick=async()=>{if(!t)return;const e=await n("");this.openFile(e),this.close()},e.createEl("button",{text:t$d("PROMPT_BUTTON_CREATE_EXCALIDRAW"),attr:{"aria-label":t$d("PROMPT_BUTTON_CREATE_EXCALIDRAW_ARIA")}}).onclick=async()=>{if(!t)return;const e=await n(await this.plugin.getBlankDrawing());await sleep$1(200),this.openFile(e),this.close()},e.createEl("button",{text:t$d("PROMPT_BUTTON_NEVERMIND")}).onclick=()=>{this.close()}}))}}class ConfirmationPrompt extends obsidian_module.Modal{constructor(e,t){super(e.app),this.plugin=e,this.didConfirm=!1,this.cancelClickCallback=()=>{this.didConfirm=!1,this.close()},this.confirmClickCallback=()=>{this.didConfirm=!0,this.close()},this.message=t,this.waitForClose=new Promise(((e,t)=>{this.resolvePromise=e,this.rejectPromise=t})),this.display(),this.open()}display(){this.contentEl.empty(),this.titleEl.textContent=t$d("PROMPT_TITLE_CONFIRMATION");const e=this.contentEl.createDiv();e.style.marginBottom="1rem",e.innerHTML=this.message;const t=this.contentEl.createDiv();t.style.display="flex",t.style.justifyContent="flex-end";const n=this.createButton(t,t$d("PROMPT_BUTTON_CANCEL"),this.cancelClickCallback);n.buttonEl.style.marginRight="0.5rem",this.createButton(t,t$d("PROMPT_BUTTON_OK"),this.confirmClickCallback).buttonEl.style.marginRight="0",n.buttonEl.focus()}createButton(e,t,n){const r=new obsidian_module.ButtonComponent(e);return r.setButtonText(t).onClick(n),r}onOpen(){var e;super.onOpen(),null===(e=this.contentEl.querySelector("button"))||void 0===e||e.focus()}onClose(){super.onClose(),this.didConfirm?this.resolvePromise(!0):this.resolvePromise(!1)}}const linkPrompt=async(e,t,n,r="Select link to open")=>{const i=REGEX_LINK.getResList(e);let o=null,a=null,s=i[0];if((!(i.length>1)||(s=await ScriptEngine.suggester(t,i.filter((e=>Boolean(e.value))).map((e=>{const t=REGEX_LINK.getAliasOrLink(e);return"100%"===t?REGEX_LINK.getLink(e):t})),i.filter((e=>Boolean(e.value))),r),s))&&s)if(s.value){if(e=REGEX_LINK.getLink(s),!openExternalLink(e,t)){if(e.search("#")>-1){const t=getLinkParts(e,n?n.file:void 0);o=`#${t.isBlockRef?"^":""}${t.ref}`,e=t.path}if(!e.match(REG_LINKINDEX_INVALIDCHARS))return a=t.metadataCache.getFirstLinkpathDest(e,n?n.file.path:""),[a,e,o];new obsidian_module.Notice(t$d("FILENAME_INVALID_CHARS"),4e3)}}else openTagSearch(e,t)},templatePromt=async(e,t)=>{var n;return 1===e.length?e[0]:(null!==(n=await linkPrompt(e.map((e=>`[[${e.path}|${e.name}]]`)).join(" "),t,void 0,t$d("PROMPT_SELECT_TEMPLATE")))&&void 0!==n?n:[null,null,null])[0]};var AutoexportPreference;!function(e){e[e.none=0]="none",e[e.both=1]="both",e[e.png=2]="png",e[e.svg=3]="svg",e[e.inherit=4]="inherit"}(AutoexportPreference||(AutoexportPreference={}));const REGEX_LINK={ //![[link|alias]] [alias](link){num} -EXPR:/(!)?(\[\[([^|\]]+)\|?([^\]]+)?]]|\[([^\]]*)]\(([^)]*)\))(\{(\d+)\})?/g,getResList:e=>{const A=e.matchAll(REGEX_LINK.EXPR);let t;const i=[];for(;!(t=A.next()).done;)i.push(t);return i},getRes:e=>e.matchAll(REGEX_LINK.EXPR),isTransclusion:e=>!!e.value[1],getLink:e=>e.value[3]?e.value[3]:e.value[6],isWikiLink:e=>!!e.value[3],getAliasOrLink:e=>REGEX_LINK.isWikiLink(e)?e.value[4]?e.value[4]:e.value[3]:e.value[5]?e.value[5]:e.value[6],getWrapLength:(e,A)=>{const t=parseInt(e.value[8]);return isNaN(t)?A>0?A:null:t}},DRAWING_REG=/\n# Drawing\n[^`]*(```json\n)([\s\S]*?)```\n/gm,DRAWING_REG_FALLBACK=/\n# Drawing\n(```json\n)?(.*)(```)?(%%)?/gm,DRAWING_COMPRESSED_REG=/(\n# Drawing\n[^`]*(?:```compressed\-json\n))([\s\S]*?)(```\n)/gm,DRAWING_COMPRESSED_REG_FALLBACK=/(\n# Drawing\n(?:```compressed\-json\n)?)(.*)((```)?(%%)?)/gm,REG_LINKINDEX_HYPERLINK=/^\w+:\/\//,isCompressedMD=e=>null!==e.match(/```compressed\-json\n/gm),getDecompressedScene=e=>{let A,t=e.matchAll(DRAWING_COMPRESSED_REG);return A=t.next(),A.done&&(t=e.matchAll(DRAWING_COMPRESSED_REG_FALLBACK),A=t.next()),A.value&&A.value.length>1?[decompress(A.value[2]),A]:[null,A]},changeThemeOfExcalidrawMD=e=>{const A=isCompressedMD(e);let t=A?getDecompressedScene(e)[0]:e;return t?(isObsidianThemeDark?1===(t.match(/"theme"\s*:\s*"light"\s*,/g)||[]).length&&(t=t.replace(/"theme"\s*:\s*"light"\s*,/,'"theme": "dark",')):1===(t.match(/"theme"\s*:\s*"dark"\s*,/g)||[]).length&&(t=t.replace(/"theme"\s*:\s*"dark"\s*,/,'"theme": "light",')),A?e.replace(DRAWING_COMPRESSED_REG,`$1${compress(t)}$3`):t):e};function getJSON(e){let A,t;if(isCompressedMD(e)){const[A,t]=getDecompressedScene(e);return A?{scene:A.substring(0,A.lastIndexOf("}")+1),pos:t.value.index}:{scene:e,pos:t.value?t.value.index:0}}if(A=e.matchAll(DRAWING_REG),t=A.next(),t.done&&(A=e.matchAll(DRAWING_REG_FALLBACK),t=A.next()),t.value&&t.value.length>1){const e=t.value[2];return{scene:e.substr(0,e.lastIndexOf("}")+1),pos:t.value.index}}return{scene:e,pos:t.value?t.value.index:0}}function getMarkdownDrawingSection(e,A){return A?`%%\n# Drawing\n\`\`\`compressed-json\n${compress(e)}\n\`\`\`\n%%`:`%%\n# Drawing\n\`\`\`json\n${e}\n\`\`\`\n%%`}const estimateMaxLineLen=(e,A)=>{if(!A||!e)return null;if(e===A)return null;let t=0;const i=e.split("\n");if(1===i.length)return null;for(const e of i){const A=e.trim();A.length>t&&(t=A.length)}return t},wrap=(e,A)=>A?wrapTextAtCharLength(e,A,!1,0):e;class ExcalidrawData{constructor(e){this.plugin=e,this.textElements=null,this.elementLinks=null,this.scene=null,this.deletedElements=[],this.file=null,this.embeddableTheme="auto",this.autoexportPreference=AutoexportPreference.inherit,this.textMode=TextMode.raw,this.loaded=!1,this.files=null,this.equations=null,this.mermaids=null,this.compatibilityMode=!1,this.selectedElementIds={},this.disableCompression=!1,this.app=e.app,this.files=new Map,this.equations=new Map,this.mermaids=new Map}initializeNonInitializedFields(){var e,A,t;if(!this.scene||!this.scene.elements)return;const i=null!==(e=this.scene.source.split("https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/")[1])&&void 0!==e?e:"1.8.16",n=this.scene.elements;for(const e of n){if("iframe"!==e.type||e.customData||(e.type="embeddable"),e.boundElements){const A=new Map;let t=!1;e.boundElements.forEach((e=>{"text"===e.type?t?n.find((A=>A.id===e.id)).containerId=null:(A.set(e.id,e.type),t=!0):A.set(e.id,e.type)}));const i=Array.from(A,(([e,A])=>({id:e,type:A})));i.length!==e.boundElements.length&&(e.boundElements=i)}e.boundElementIds&&(e.boundElements||(e.boundElements=[]),e.boundElements=e.boundElements.concat(e.boundElementIds.map((e=>({type:"arrow",id:e})))),delete e.boundElementIds),"text"!==e.type||e.containerId||(e.containerId=null),null===e.x&&(e.x=0),null===e.y&&(e.y=0),null===(null===(A=e.startBinding)||void 0===A?void 0:A.focus)&&(e.startBinding.focus=0),null===(null===(t=e.endBinding)||void 0===t?void 0:t.focus)&&(e.endBinding.focus=0),null===e.fontSize&&(e.fontSize=20)}try{n.filter((e=>"text"===e.type&&e.containerId&&n.some((A=>A.id===e.containerId&&A.boundElements.length>0&&A.boundElements.some((A=>"text"===A.type&&A.id!==e.id&&A.id.length>8)))))).forEach((e=>{try{const A=n.filter((A=>A.id===e.containerId))[0],t=A.boundElements.filter((e=>!("text"===e.type&&!n.some((A=>A.id===e.id)))));A.boundElements=[{id:e.id,type:"text"}].concat(t)}catch(e){}}));const e=!isVersionNewerThanOther(i,"1.8.16");n.filter((e=>e.boundElements&&e.boundElements.length>0)).forEach((A=>{var t;e&&!(null===(t=A.customData)||void 0===t?void 0:t.legacyTextWrap)&&addAppendUpdateCustomData(A,{legacyTextWrap:!0});const i=A.boundElements.filter((e=>n.some((A=>A.id===e.id))));i.length!==A.boundElements.length&&(A.boundElements=i)})),n.filter((e=>"text"===e.type&&e.containerId&&!n.some((A=>A.id===e.containerId)))).forEach((e=>{e.containerId=null}))}catch(e){}}async loadData(e,A,t){var i,n;if(!A)return!1;if(this.loaded=!1,this.selectedElementIds={},this.textElements=new Map,this.elementLinks=new Map,this.file!=A&&(this.files.clear(),this.equations.clear(),this.mermaids.clear()),this.file=A,this.compatibilityMode=!1,this.setShowLinkBrackets(),this.setLinkPrefix(),this.setUrlPrefix(),this.setAutoexportPreferences(),this.setembeddableThemePreference(),this.scene=null,this.plugin.settings.syncExcalidraw){const e=`${A.path.substring(0,A.path.lastIndexOf(".md"))}.excalidraw`,t=this.app.vault.getAbstractFileByPath(e);if(t&&t instanceof obsidian_module.TFile&&t.stat.mtime>A.stat.mtime){const e=await this.app.vault.read(t);this.scene=JSON.parse(e)}}let s=null;if(s=(()=>{const A=getJSON(e);if(-1===A.pos)throw new Error("Excalidraw JSON not found in the file");return this.scene||(this.scene=JSON_parse(A.scene)),A})(),this.deletedElements=this.scene.elements.filter((e=>e.isDeleted)),this.scene.elements=this.scene.elements.filter((e=>!e.isDeleted)),this.scene.files||(this.scene.files={}),hasExportTheme(this.plugin,this.file)?this.scene.appState.theme=getExportTheme(this.plugin,this.file,"light"):this.plugin.settings.matchThemeAlways&&(this.scene.appState.theme=isObsidianThemeDark()?"dark":"light"),null===(n=null===(i=this.scene)||void 0===i?void 0:i.elements)||void 0===n?void 0:n.some((e=>"iframe"===e.type&&!e.customData))){const e=new ConfirmationPrompt(this.plugin,"This file contains embedded frames which will be migrated to a newer version for compatibility with <a href='https://excalidraw.com'>excalidraw.com</a>.<br>🔄 If you're using Obsidian on multiple devices, you may proceed now, but please, before opening this file on your other devices, update Excalidraw on those as well.<br>🔍 More info is available <a href='https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.9.9'>here</a>.<br>🌐 <a href='https://translate.google.com/?sl=en&tl=zh-CN&text=This%20file%20contains%20embedded%20frames%20which%20will%20be%20migrated%20to%20a%20newer%20version%20for%20compatibility%20with%20excalidraw.com.%0A%0AIf%20you%27re%20using%20Obsidian%20on%20multiple%20devices%2C%20you%20may%20proceed%20now%2C%20but%20please%2C%20before%20opening%20this%20file%20on%20your%20other%20devices%2C%20update%20Excalidraw%20on%20those%20as%20well.%0A%0AMore%20info%20is%20available%20here%3A%20https%3A%2F%2Fgithub.com%2Fzsviczian%2Fobsidian-excalidraw-plugin%2Freleases%2Ftag%2F1.9.9%27%3Ehere%3C%2Fa%3E.&op=translate'>Translate</a>.");if(e.contentEl.focus(),!await e.waitForClose)throw new Error("iframe conversion canceled")}this.initializeNonInitializedFields();let a=(e=e.substring(0,s.pos)).search(/(^%%\n)?# Text Elements\n/m);if(-1===a)return await this.setTextMode(t,!1),this.loaded=!0,!0;a+=e.match(/((^%%\n)?# Text Elements\n)/m)[0].length,e=e.substring(a),a=0;let o,r=e.matchAll(/\s\^(.{8})[\n]+/g);for(;!(o=r.next()).done;){let A=e.substring(a,o.value.index);const t=o.value[1],i=this.scene.elements.filter((e=>e.id===t))[0];if(i)if("text"!==i.type)i.link!==A&&(i.link=A,i.version++,i.versionNonce++),this.elementLinks.set(t,A);else{const e=estimateMaxLineLen(i.text,i.originalText),n=A.matchAll(/^%%\*\*\*>>>text element-link:(\[\[[^<*\]]*]])<<<\*\*\*%%/gm).next();n.done||(A=A.replace(/^%%\*\*\*>>>text element-link:\[\[[^<*\]]*]]<<<\*\*\*%%/gm,""),i.link=n.value[1]);const s=await this.parse(A);i.rawText=A,this.textElements.set(t,{raw:A,parsed:s.parsed,wrapAt:e}),s.link&&(i.link=s.link),!i||i.rawText&&""!==i.rawText||(i.rawText=A)}a=o.value.index+12}for(r=(e=e.substring(e.indexOf("# Embedded files\n")+17)).matchAll(/([\w\d]*):\s*\[\[([^\]]*)]]\s?(\{[^}]*})?\n/gm);!(o=r.next()).done;){const e=new EmbeddedFile(this.plugin,this.file.path,o.value[2],o.value[3]);this.setFile(o.value[1],e)}for(r=e.matchAll(/([\w\d]*):\s*((?:https?|file|ftps?):\/\/[^\s]*)\n/gm);!(o=r.next()).done;){const e=new EmbeddedFile(this.plugin,null,o.value[2]);this.setFile(o.value[1],e)}for(r=e.matchAll(/([\w\d]*):\s*\$\$([\s\S]*?)(\$\$\s*\n)/gm);!(o=r.next()).done;)this.setEquation(o.value[1],{latex:o.value[2],isLoaded:!1});const l=getMermaidImageElements(this.scene.elements);return l.length>0&&!shouldRenderMermaid()?new obsidian_module.Notice("Mermaid images are only supported in Obsidian 1.4.14 and above. Please update Obsidian to see the mermaid images in this drawing. Obsidian mobile 1.4.14 currently only avaiable to Obsidian insiders",5e3):l.forEach((e=>this.setMermaid(e.fileId,{mermaid:getMermaidText(e),isLoaded:!1}))),this.findNewTextElementsInScene(),this.findNewElementLinksInScene(),await this.setTextMode(t,!0),this.loaded=!0,!0}async loadLegacyData(e,A){return!!A&&(this.loaded=!1,this.selectedElementIds={},this.compatibilityMode=!0,this.file=A,this.textElements=new Map,this.elementLinks=new Map,this.setShowLinkBrackets(),this.setLinkPrefix(),this.setUrlPrefix(),this.setembeddableThemePreference(),this.scene=JSON.parse(e),this.scene.files||(this.scene.files={}),this.initializeNonInitializedFields(),this.plugin.settings.matchThemeAlways&&(this.scene.appState.theme=isObsidianThemeDark()?"dark":"light"),this.files.clear(),this.equations.clear(),this.mermaids.clear(),this.findNewTextElementsInScene(),this.findNewElementLinksInScene(),await this.setTextMode(TextMode.raw,!0),this.loaded=!0,!0)}async setTextMode(e,A=!1){this.scene&&(this.textMode=e,await this.updateSceneTextElements(A))}updateTextElement(e,A,t,i=!1,n){var s;if(i||A!=e.text){const i=_measureText(A,e.fontSize,e.fontFamily,null!==(s=e.lineHeight)&&void 0!==s?s:getDefaultLineHeight(e.fontFamily));e.text=A,e.originalText=t,e.containerId&&"arrow"!==n||(e.width=i.w),e.height=i.h,e.baseline=i.baseline}}async updateSceneTextElements(e=!1){var A,t,i,n;const s=null===(A=this.scene.elements)||void 0===A?void 0:A.filter((e=>"text"===e.type));for(const A of s){const s=getContainerElement(A,this.scene),a=null!==(i=null!==(t=await this.getText(A.id))&&void 0!==t?t:A.originalText)&&void 0!==i?i:A.text,o=null===(n=this.textElements.get(A.id))||void 0===n?void 0:n.wrapAt;try{this.updateTextElement(A,o?wrapText(a,getFontString({fontSize:A.fontSize,fontFamily:A.fontFamily}),getBoundTextMaxWidth(s)):a,a,e,null==s?void 0:s.type)}catch(e){debug({where:"ExcalidrawData.updateSceneTextElements",fn:this.updateSceneTextElements,textElement:A})}}}async getText(e){const A=this.textElements.get(e);return A?this.textMode===TextMode.parsed?(A.parsed||this.textElements.set(e,{raw:A.raw,parsed:(await this.parse(A.raw)).parsed,wrapAt:A.wrapAt}),A.parsed):A.raw:null}findNewElementLinksInScene(){var e;let A=!1;const t=null===(e=this.scene.elements)||void 0===e?void 0:e.filter((e=>"text"!==e.type&&e.link&&e.link.startsWith("[[")&&!this.elementLinks.has(e.id)));if(0===t.length)return A;let i,n=JSON.stringify(this.scene);for(const e of t)i=e.id,e.id.length>8&&(A=!0,i=nanoid(),n=n.replaceAll(e.id,i)),this.elementLinks.set(i,e.link);return this.scene=JSON.parse(n),A}findNewTextElementsInScene(e={}){var A;this.selectedElementIds=e;const t=null===(A=this.scene.elements)||void 0===A?void 0:A.filter((e=>"text"===e.type));let i,n=JSON.stringify(this.scene),s=!1;for(const e of t)if(i=e.id,e.id.length>8){if(s=!0,i=nanoid(),this.selectedElementIds[e.id]&&(delete this.selectedElementIds[e.id],this.selectedElementIds[i]=!0),n=n.replaceAll(e.id,i),this.textElements.has(e.id)){const A=this.textElements.get(e.id);this.textElements.set(i,{raw:A.raw,parsed:A.parsed,wrapAt:A.wrapAt}),this.textElements.delete(e.id)}if(!this.textElements.has(i)){const A=e.rawText&&""!==e.rawText?e.rawText:e.text,t=estimateMaxLineLen(e.text,e.originalText);this.textElements.set(i,{raw:A,parsed:null,wrapAt:t}),this.parseasync(i,A,t)}}else if(!this.textElements.has(e.id)){const A=e.rawText&&""!==e.rawText?e.rawText:e.text,t=estimateMaxLineLen(e.text,e.originalText);this.textElements.set(i,{raw:A,parsed:null,wrapAt:t}),this.parseasync(i,A,t)}return s&&(this.scene=JSON.parse(n)),s}updateElementLinksFromScene(){var e;for(const A of this.elementLinks.keys()){const t=null===(e=this.scene.elements)||void 0===e?void 0:e.filter((e=>"text"!==e.type&&e.id===A&&e.link&&e.link.startsWith("[[")));0===t.length?this.elementLinks.delete(A):this.elementLinks.set(A,t[0].link)}}async updateTextElementsFromScene(){var e,A,t;for(const i of this.textElements.keys()){const n=null===(e=this.scene.elements)||void 0===e?void 0:e.filter((e=>"text"===e.type&&e.id===i));if(0===n.length)this.textElements.delete(i);else{const e=await this.getText(i),s=this.scene.prevTextMode===TextMode.parsed?n[0].rawText:null!==(A=n[0].originalText)&&void 0!==A?A:n[0].text;if(e!==(null!==(t=n[0].originalText)&&void 0!==t?t:n[0].text)){const e=estimateMaxLineLen(n[0].text,n[0].originalText);this.textElements.set(i,{raw:s,parsed:(await this.parse(s)).parsed,wrapAt:e})}}}}async parseasync(e,A,t){this.textElements.set(e,{raw:A,parsed:(await this.parse(A)).parsed,wrapAt:t})}parseLinks(e,A,t){return e.substring(A,t.value.index)+(this.showLinkBrackets?"[[":"")+REGEX_LINK.getAliasOrLink(t)+(this.showLinkBrackets?"]]":"")}async getTransclusion(e){const A=getLinkParts(e,this.file),t=this.app.metadataCache.getFirstLinkpathDest(A.path,this.file.path);return await getTransclusion(A,this.app,t,this.plugin.settings.pageTransclusionCharLimit)}async parse(e){e=this.parseCheckbox(e);let A="",t=null,i=0;const n=REGEX_LINK.getRes(e);let s,a=!1,o=!1;for(e.match(REG_LINKINDEX_HYPERLINK)&&(t=e,o=!0);!(s=n.next()).done;){if(!t){const e=REGEX_LINK.getLink(s);t=e.match(REG_LINKINDEX_HYPERLINK)?e:`[[${e}]]`}if(REGEX_LINK.isTransclusion(s)){let t=this.parseCheckbox((await this.getTransclusion(REGEX_LINK.getLink(s))).contents).replaceAll(/%%[^%]*%%/gm,"");this.plugin.settings.removeTransclusionQuoteSigns&&(t=t.replaceAll(/\n\s*>\s?/gm,"\n")),A+=e.substring(i,s.value.index)+wrapTextAtCharLength(t,REGEX_LINK.getWrapLength(s,this.plugin.settings.wordWrappingDefault),this.plugin.settings.forceWrap)}else{const t=this.parseLinks(e,i,s);if(t&&(A+=t,!o&&!a)){const e=REGEX_LINK.getLink(s);e.match(REG_LINKINDEX_HYPERLINK)?o=!e.startsWith("cmd://"):a=!0}}i=s.value.index+s.value[0].length}return A+=e.substring(i,e.length),a&&(A=this.linkPrefix+A),o&&(A=this.urlPrefix+A),{parsed:A,link:t}}parseCheckbox(e){return this.plugin.settings.parseTODO?e.replaceAll(/^- \[\s] /g,`${this.plugin.settings.todo} `).replaceAll(/\n- \[\s] /g,`\n${this.plugin.settings.todo} `).replaceAll(/^- \[[^\s]] /g,`${this.plugin.settings.done} `).replaceAll(/\n- \[[^\s]] /g,`\n${this.plugin.settings.done} `):e}quickParse(e){if((e=>{const A=REGEX_LINK.getRes(e);let t;for(;!(t=A.next()).done;)if(REGEX_LINK.isTransclusion(t))return!0;return!1})(e))return[null,null];e=this.parseCheckbox(e);let A="",t=null,i=0;const n=REGEX_LINK.getRes(e);let s,a=!1,o=!1;for(e.match(REG_LINKINDEX_HYPERLINK)&&(t=e,o=!0);!(s=n.next()).done;){if(!t){const e=REGEX_LINK.getLink(s);t=e.match(REG_LINKINDEX_HYPERLINK)?e:`[[${e}]]`}const n=this.parseLinks(e,i,s);if(n&&(A+=n,!o&&!a)){const e=REGEX_LINK.getLink(s);e.match(REG_LINKINDEX_HYPERLINK)?o=!e.startsWith("cmd://"):a=!0}i=s.value.index+s.value[0].length}return A+=e.substring(i,e.length),a&&(A=this.linkPrefix+A),o&&(A=this.urlPrefix+A),[A,t]}generateMD(e=[]){let A="# Text Elements\n";for(const e of this.textElements.keys()){const t=this.scene.elements.filter((A=>A.id===e));let i=this.textElements.get(e).raw;t&&1===t.length&&t[0].link&&t[0].rawText===t[0].originalText&&t[0].link.match(/^\[\[[^\]]*]]$/g)&&(i=`%%***>>>text element-link:${t[0].link}<<<***%%`+i),A+=`${i} ^${e}\n\n`}for(const e of this.elementLinks.keys())A+=`${this.elementLinks.get(e)} ^${e}\n\n`;if(A+=this.equations.size>0||this.files.size>0?"\n# Embedded files\n":"",this.equations.size>0)for(const e of this.equations.keys())A+=`${e}: $$${this.equations.get(e).latex}$$\n`;if(this.files.size>0)for(const e of this.files.keys()){const t=/(^[^#\|]*)/,i=this.files.get(e);i.isHyperLink||i.isLocalLink?A+=`${e}: ${i.hyperlink}\n`:A+=`${e}: [[${i.file?i.linkParts.original.replace(t,this.app.metadataCache.fileToLinktext(i.file,this.file.path)):i.linkParts.original}]]${i.colorMap?" "+JSON.stringify(i.colorMap):""}\n`}return A+=this.equations.size>0||this.files.size>0?"\n":"",A+getMarkdownDrawingSection(JSON.stringify({type:this.scene.type,version:this.scene.version,source:this.scene.source,elements:this.scene.elements.concat(e),appState:this.scene.appState,files:this.scene.files},null,"\t"),!this.disableCompression&&this.plugin.settings.compress)}async saveDataURLtoVault(e,A,t){var i;const n=this.scene;let s=`Pasted Image ${window.moment().format("YYYYMMDDHHmmss_SSS")}`;switch(A){case"image/png":default:s+=".png";break;case"image/jpeg":s+=".jpg";break;case"image/svg+xml":s+=".svg";break;case"image/gif":s+=".gif"}const a=(await getAttachmentsFolderAndFilePath(this.app,this.file.path,s)).filepath,o=await getBinaryFileFromDataURL(e);if(!o)return null;const r=await this.app.vault.createBinary(a,o),l=new EmbeddedFile(this.plugin,this.file.path,a);return l.setImage(e,A,{height:0,width:0},"dark"===(null===(i=n.appState)||void 0===i?void 0:i.theme),"image/svg+xml"===A),this.setFile(t,l),r}async syncFiles(){let e=!1;const A=this.scene,t=A.elements.filter((e=>"image"===e.type)),i=t.map((e=>e.fileId));if(this.files.forEach(((A,t)=>{i.contains(t)||(this.files.delete(t),e=!0)})),this.equations.forEach(((A,t)=>{i.contains(t)||(this.equations.delete(t),e=!0)})),this.mermaids.forEach(((A,t)=>{i.contains(t)||(this.mermaids.delete(t),e=!0)})),!A.files||0===Object.keys(A.files).length)return!1;const n=new Set;i.forEach(((i,s)=>{if(n.has(i)){const a=this.getFile(i),o=this.getEquation(i),r=this.getMermaid(i);if(a&&(a.isHyperLink||a.isLocalLink||a.file&&("md"!==a.file.extension||this.plugin.isExcalidrawFile(a.file))))return;if(r)return;if(getMermaidText(t[s]))return void this.setMermaid(i,{mermaid:getMermaidText(t[s]),isLoaded:!0});const l=fileid();A.elements.filter((e=>e.fileId===i)).sort(((e,A)=>e.updated<A.updated?1:-1))[0].fileId=l,e=!0,n.add(l),a&&this.setFile(l,new EmbeddedFile(this.plugin,this.file.path,a.linkParts.original)),o&&this.setEquation(l,{latex:o.latex,isLoaded:!1})}n.add(i)}));for(const t of Object.keys(A.files)){const i=getMermaidImageElements(A.elements.filter((e=>e.fileId===t)));this.hasFile(t)||this.hasEquation(t)||this.hasMermaid(t)||i.length>0||(e=!0,await this.saveDataURLtoVault(A.files[t].dataURL,A.files[t].mimeType,t))}return e}async syncElements(e,A){this.scene=e;let t=!1;return this.compatibilityMode||(t=await this.syncFiles(),this.scene.files={}),this.updateElementLinksFromScene(),t=t||this.setLinkPrefix()||this.setUrlPrefix()||this.setShowLinkBrackets()||this.findNewElementLinksInScene(),await this.updateTextElementsFromScene(),t||this.findNewTextElementsInScene(A)}async updateScene(e){this.scene=JSON_parse(e),this.updateElementLinksFromScene();const A=this.setLinkPrefix()||this.setUrlPrefix()||this.setShowLinkBrackets()||this.setembeddableThemePreference()||this.findNewElementLinksInScene();return await this.updateTextElementsFromScene(),!(!A&&!this.findNewTextElementsInScene()||(await this.updateSceneTextElements(),0))}getRawText(e){var A;return null===(A=this.textElements.get(e))||void 0===A?void 0:A.raw}getParsedText(e){const A=this.textElements.get(e);return A?[wrap(A.parsed,A.wrapAt),A.parsed,null]:[null,null,null]}setTextElement(e,A,t,i){const n=estimateMaxLineLen(A,t),[s,a]=this.quickParse(t);return s?(this.textElements.set(e,{raw:t,parsed:s,wrapAt:n}),[wrap(s,n),s,a]):(this.parse(t).then((A=>{const s=A.parsed;this.textElements.set(e,{raw:t,parsed:s,wrapAt:n}),s&&i(wrap(s,n),s)})),[null,null,null])}async addTextElement(e,A,t){let i=estimateMaxLineLen(A,t);this.textElements.has(e)&&(i=this.textElements.get(e).wrapAt);const n=await this.parse(t);return this.textElements.set(e,{raw:t,parsed:n.parsed,wrapAt:i}),[wrap(n.parsed,i),n.parsed,n.link]}deleteTextElement(e){this.textElements.delete(e)}getOpenMode(){const e=this.app.metadataCache.getFileCache(this.file);let A="view-mobile"===this.plugin.settings.defaultMode?DEVICE.isPhone?"view":"normal":this.plugin.settings.defaultMode;switch((null==e?void 0:e.frontmatter)&&null!=e.frontmatter["excalidraw-default-mode"]&&(A=e.frontmatter["excalidraw-default-mode"]),A){case"zen":return{viewModeEnabled:!1,zenModeEnabled:!0};case"view":return{viewModeEnabled:!0,zenModeEnabled:!1};default:return{viewModeEnabled:!1,zenModeEnabled:!1}}}getLinkOpacity(){const e=this.app.metadataCache.getFileCache(this.file);let A=this.plugin.settings.linkOpacity;return(null==e?void 0:e.frontmatter)&&null!=e.frontmatter["excalidraw-linkbutton-opacity"]&&(A=e.frontmatter["excalidraw-linkbutton-opacity"]),A}getOnLoadScript(){const e=this.app.metadataCache.getFileCache(this.file);return(null==e?void 0:e.frontmatter)&&null!=e.frontmatter["excalidraw-onload-script"]?e.frontmatter["excalidraw-onload-script"]:null}setLinkPrefix(){const e=this.linkPrefix,A=this.app.metadataCache.getFileCache(this.file);return(null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-link-prefix"]?this.linkPrefix=A.frontmatter["excalidraw-link-prefix"]:this.linkPrefix=this.plugin.settings.linkPrefix,e!=this.linkPrefix}setUrlPrefix(){const e=this.urlPrefix,A=this.app.metadataCache.getFileCache(this.file);return(null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-url-prefix"]?this.urlPrefix=A.frontmatter["excalidraw-url-prefix"]:this.urlPrefix=this.plugin.settings.urlPrefix,e!=this.urlPrefix}setAutoexportPreferences(){const e=this.app.metadataCache.getFileCache(this.file);if((null==e?void 0:e.frontmatter)&&null!=e.frontmatter["excalidraw-autoexport"])switch(e.frontmatter["excalidraw-autoexport"].toLowerCase()){case"none":this.autoexportPreference=AutoexportPreference.none;break;case"both":this.autoexportPreference=AutoexportPreference.both;break;case"png":this.autoexportPreference=AutoexportPreference.png;break;case"svg":this.autoexportPreference=AutoexportPreference.svg;break;default:this.autoexportPreference=AutoexportPreference.inherit}else this.autoexportPreference=AutoexportPreference.inherit}setembeddableThemePreference(){const e=this.embeddableTheme,A=this.app.metadataCache.getFileCache(this.file);return(null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-iframe-theme"]?(this.embeddableTheme=A.frontmatter["excalidraw-iframe-theme"].toLowerCase(),EMBEDDABLE_THEME_FRONTMATTER_VALUES.includes(this.embeddableTheme)||(this.embeddableTheme="default")):this.embeddableTheme=this.plugin.settings.iframeMatchExcalidrawTheme?"auto":"default",e!=this.embeddableTheme}setShowLinkBrackets(){const e=this.showLinkBrackets,A=this.app.metadataCache.getFileCache(this.file);return(null==A?void 0:A.frontmatter)&&null!=A.frontmatter["excalidraw-link-brackets"]?this.showLinkBrackets=0!=A.frontmatter["excalidraw-link-brackets"]:this.showLinkBrackets=this.plugin.settings.showLinkBrackets,e!=this.showLinkBrackets}setFile(e,A){if(!A)return;if(this.files.set(e,A),A.isHyperLink||A.isLocalLink)return void this.plugin.filesMaster.set(e,{isHyperLink:A.isHyperLink,isLocalLink:A.isLocalLink,path:A.hyperlink,blockrefData:null,hasSVGwithBitmap:A.isSVGwithBitmap});if(!A.file)return;const t=A.linkParts.original.split("#");this.plugin.filesMaster.set(e,{isHyperLink:!1,isLocalLink:!1,path:A.file.path+(A.shouldScale()?"":"|100%"),blockrefData:1===t.length?null:t[1],hasSVGwithBitmap:A.isSVGwithBitmap,colorMapJSON:A.colorMap?JSON.stringify(A.colorMap):null})}getFiles(){return Object.values(this.files)}getFile(e){let A=this.files.get(e);if(A)return A;const t=this.plugin.filesMaster.get(e);return t?(A=new EmbeddedFile(this.plugin,this.file.path,t.blockrefData?t.path+"#"+t.blockrefData:t.path),this.files.set(e,A),A):A}getFileEntries(){return this.files.entries()}deleteFile(e){this.files.delete(e)}hasFile(e){if(this.files.has(e))return!0;if(this.plugin.filesMaster.has(e)){const A=this.plugin.filesMaster.get(e);if(A.isHyperLink||A.isLocalLink)return this.files.set(e,new EmbeddedFile(this.plugin,this.file.path,A.path)),!0;const t=A.path.split("|")[0].split("#")[0];if(!this.app.vault.getAbstractFileByPath(t))return this.plugin.filesMaster.delete(e),!0;const i=A.path.endsWith("100%"),n=new EmbeddedFile(this.plugin,this.file.path,(A.blockrefData?t+"#"+A.blockrefData:t)+(i?"|100%":""),A.colorMapJSON);return this.files.set(e,n),!0}return!1}setEquation(e,A){this.equations.set(e,{latex:A.latex,isLoaded:A.isLoaded}),this.plugin.equationsMaster.set(e,A.latex)}getEquation(e){let A=this.equations.get(e);if(A)return A;const t=this.plugin.equationsMaster.get(e);return t?(this.equations.set(e,{latex:t,isLoaded:!1}),{latex:t,isLoaded:!1}):A}getEquationEntries(){return this.equations.entries()}deleteEquation(e){this.equations.delete(e)}hasEquation(e){return!!this.equations.has(e)||!!this.plugin.equationsMaster.has(e)&&(this.equations.set(e,{latex:this.plugin.equationsMaster.get(e),isLoaded:!1}),!0)}setMermaid(e,A){this.mermaids.set(e,{mermaid:A.mermaid,isLoaded:A.isLoaded}),this.plugin.mermaidsMaster.set(e,A.mermaid)}getMermaid(e){let A=this.mermaids.get(e);if(A)return A;const t=this.plugin.mermaidsMaster.get(e);return t?(this.mermaids.set(e,{mermaid:t,isLoaded:!1}),{mermaid:t,isLoaded:!1}):A}getMermaidEntries(){return this.mermaids.entries()}deleteMermaid(e){this.mermaids.delete(e)}hasMermaid(e){return!!this.mermaids.has(e)||!!this.plugin.mermaidsMaster.has(e)&&(this.mermaids.set(e,{mermaid:this.plugin.mermaidsMaster.get(e),isLoaded:!1}),!0)}}const getTransclusion=async(e,A,t,i)=>{var n,s,a,o,r,l,c;if(!e.path)return{contents:e.original.trim(),lineNum:0};if(!(t&&t instanceof obsidian_module.TFile))return{contents:e.original.trim(),lineNum:0};const g=await A.vault.read(t);if(!e.ref)return i?{contents:g.substring(0,i).trim(),lineNum:0}:{contents:g.trim(),lineNum:0};const d=(await A.metadataCache.blockCache.getForFile({isCancelled:()=>!1},t)).blocks.filter((e=>"comment"!=e.node.type));if(!d)return{contents:e.original.trim(),lineNum:0};if(e.isBlockRef){let A=null===(n=d.filter((A=>A.node.id==e.ref))[0])||void 0===n?void 0:n.node;if(!A)return{contents:e.original.trim(),lineNum:0};["blockquote"].includes(A.type)&&(A=A.children[0]);const t=A.position.start.offset,i=A.position.start.line,s=A.position.end.offset;return{contents:g.substring(t,s).replaceAll(/ \^\S*$|^\^\S*$/gm,"").trim(),lineNum:i}}const u=d.filter((e=>0===e.display.search(/^#+\s/)));let h=null,m=0,p=null,w=1;for(let A=0;A<u.length;A++){if(h&&!p){let e=A;for(;e<u.length&&u[e].node.depth>w;)e++;return e===u.length&&u[e-1].node.depth>w?{leadingHashes:"#".repeat(w)+" ",contents:g.substring(h).trim(),lineNum:m}:(p=u[e].node.position.start.offset-1,{leadingHashes:"#".repeat(w)+" ",contents:g.substring(h,p).trim(),lineNum:m})}const t=u[A].node.children[0],i=null===(a=null===(s=u[A].node.data)||void 0===s?void 0:s.hProperties)||void 0===a?void 0:a.dataHeading,n=null==t?void 0:t.children;!h&&(cleanBlockRef(null==t?void 0:t.value)===e.ref||cleanBlockRef(null==t?void 0:t.title)===e.ref||cleanBlockRef(i)===e.ref||n&&cleanBlockRef(null===(o=n[0])||void 0===o?void 0:o.value)===e.ref||cleanSectionHeading(null==t?void 0:t.value)===e.ref||cleanSectionHeading(null==t?void 0:t.title)===e.ref||cleanSectionHeading(i)===e.ref||n&&cleanSectionHeading(null===(r=n[0])||void 0===r?void 0:r.value)===e.ref)&&(h=null===(l=u[A].node.children[0])||void 0===l?void 0:l.position.start.offset,w=u[A].node.depth,m=null===(c=u[A].node.children[0])||void 0===c?void 0:c.position.start.line)}return h?{leadingHashes:"#".repeat(w)+" ",contents:g.substring(h).trim(),lineNum:m}:{contents:e.original.trim(),lineNum:0}};class ScriptEngine{constructor(e){this.plugin=e,this.scriptIconMap={},this.loadScripts(),this.registerEventHandlers()}registerEventHandlers(){const e=e=>{if(!e.endsWith(".svg"))return;const A=app.vault.getAbstractFileByPath(getIMGFilename(e,"md"));A&&A instanceof obsidian_module.TFile&&(this.unloadScript(this.getScriptName(A),A.path),this.loadScript(A))};this.plugin.registerEvent(app.vault.on("delete",(async A=>{A instanceof obsidian_module.TFile&&A.path.startsWith(this.scriptPath)&&(this.unloadScript(this.getScriptName(A),A.path),e(A.path))}))),this.plugin.registerEvent(app.vault.on("create",(async A=>{A instanceof obsidian_module.TFile&&A.path.startsWith(this.scriptPath)&&(this.loadScript(A),e(A.path))}))),this.plugin.registerEvent(app.vault.on("rename",(async(A,t)=>{if(!(A instanceof obsidian_module.TFile))return;const i=t.startsWith(this.scriptPath),n=A.path.startsWith(this.scriptPath);i&&(this.unloadScript(this.getScriptName(t),t),e(t)),n&&(this.loadScript(A),e(A.path))})))}updateScriptPath(){this.scriptPath!==this.plugin.settings.scriptFolderPath&&(this.scriptPath&&this.unloadScripts(),this.loadScripts())}getListofScripts(){if(this.scriptPath=this.plugin.settings.scriptFolderPath,app.vault.getAbstractFileByPath(this.scriptPath))return app.vault.getFiles().filter((e=>e.path.startsWith(this.scriptPath)&&"md"===e.extension))}loadScripts(){var e;null===(e=this.getListofScripts())||void 0===e||e.forEach((e=>this.loadScript(e)))}getScriptName(e){let A="",t="";e instanceof obsidian_module.TFile?(A=e.basename,t=e.path):(A=splitFolderAndFilename(e).basename,t=e);const i=t.split(`${this.scriptPath}/`)[1],n=i.lastIndexOf("/");return n>-1?i.substring(0,n+1)+A:A}async addScriptIconToMap(e,A){const t=getIMGFilename(e,"svg"),i=app.vault.getAbstractFileByPath(t),n=i&&i instanceof obsidian_module.TFile?await app.vault.read(i):null;this.scriptIconMap=Object.assign({},this.scriptIconMap);const s=splitFolderAndFilename(A);this.scriptIconMap[e]={name:s.filename,group:"/"===s.folderpath?"":s.folderpath,svgString:n},this.updateToolPannels()}loadScript(e){if("md"!==e.extension)return;const A=this.getScriptName(e);this.addScriptIconToMap(e.path,A),this.plugin.addCommand({id:A,name:`(Script) ${A}`,checkCallback:t=>{if(t)return Boolean(app.workspace.getActiveViewOfType(ExcalidrawView));const i=app.workspace.getActiveViewOfType(ExcalidrawView);return!!i&&((async()=>{const t=await app.vault.read(e);t&&this.executeScript(i,t,A,e)})(),!0)}})}unloadScripts(){const e=app.vault.getFiles().filter((e=>e.path.startsWith(this.scriptPath)));e.forEach((e=>{this.unloadScript(this.getScriptName(e),e.path)}))}unloadScript(e,A){if(!A.endsWith(".md"))return;delete this.scriptIconMap[A],this.scriptIconMap=Object.assign({},this.scriptIconMap),this.updateToolPannels();const t=`${PLUGIN_ID}:${e}`;this.plugin.app.commands.commands[t]&&delete this.plugin.app.commands.commands[t]}async executeScript(e,A,t,i){if(!e||!A||!t)return;const n=getEA(e);n.activeScript=t;const s=Object.getPrototypeOf((async()=>{})).constructor;let a=null;return a=await new s("ea","utils",A)(n,{inputPrompt:(A,t,i,n,s,a,o,r)=>ScriptEngine.inputPrompt(e,this.plugin,this.plugin.app,A,t,i,n,s,a,o,r),suggester:(e,A,t,i)=>ScriptEngine.suggester(app,e,A,t,i),scriptFile:i}),n.activeScript=null,a}updateToolPannels(){app.workspace.getLeavesOfType("excalidraw").forEach((e=>{var A,t;null===(t=null===(A=e.view.toolsPanelRef)||void 0===A?void 0:A.current)||void 0===t||t.updateScriptIconMap(this.scriptIconMap)}))}static async inputPrompt(e,A,t,i,n,s,a,o,r,l,c){try{return await GenericInputPrompt.Prompt(e,A,t,i,n,s,a,o,r,l,c)}catch(e){return}}static async suggester(e,A,t,i,n){try{return await GenericSuggester.Suggest(e,A,t,i,n)}catch(e){return}}}var t$c={d:(e,A)=>{for(var t in A)t$c.o(A,t)&&!t$c.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},r$e={};t$c.d(r$e,{QA:()=>w$1,ZP:()=>j$1,qt:()=>x$1,MX:()=>$});const e$d={red:"hsl(0, 100%, 50%)",orange:"hsl(30, 100%, 50%)",yellow:"hsl(60, 100%, 50%)","lime green":"hsl(90, 100%, 50%)",green:"hsl(120, 100%, 50%)","blue green":"hsl(150, 100%, 50%)",cyan:"hsl(180, 100%, 50%)","sky blue":"hsl(210, 100%, 50%)",blue:"hsl(240, 100%, 50%)",purple:"hsl(270, 100%, 50%)",magenta:"hsl(300, 100%, 50%)",pink:"hsl(330, 100%, 50%)"};function s$a(e,A,t){return Math.max(e,Math.min(A,t))}function n$c(e,A){return+e.toFixed(A>=0?A:0)}function a$c(e){const A=e%360;return A<0?A+360:A}function i$a(e){return void 0!==e?s$a(0,e,1):1}function o$b(e){return Math.floor(Math.random()*e)}function h$4(e){var A;const{Cmin:t,Cmax:i,H:n,delta:s}=function(e){const[A,t,i]=Object.values(e).map((e=>e/255)),n=Math.max(A,t,i),s=Math.min(A,t,i),a=n-s;return{Cmin:s,Cmax:n,H:0===a?0:n===A?(t-i)/a%6:n===t?(i-A)/a+2:(A-t)/a+4,delta:a}}(e),a=(i+t)/2,o=0===s?0:s/(1-Math.abs(2*a-1));return{h:a$c(60*n),s:100*o,l:100*a,a:null!==(A=e.a)&&void 0!==A?A:1}}function u$8(e){const{h:A,s:t,l:i,a:n}=e,s=i/100,a=t/100,o=(1-Math.abs(2*s-1))*a,r=o*(1-Math.abs(A/60%2-1)),l=s-o/2,c=A<60||300<=A&&A<360?o:120<=A&&A<240?0:r,g=240<=A&&A<360?0:60<=A&&A<180?o:r,d=A<120?0:180<=A&&A<300?o:r,[u,h,m]=[c,g,d].map((e=>255*(e+l)));return{r:u,g:h,b:m,a:null!=n?n:1}}function l$5(e){const[A,t,i,n]=Object.values(e).map((e=>parseInt(e,16)));return{r:A,g:t,b:i,a:n?n/255:1}}const c$a=/^#?([\da-f])([\da-f])([\da-f])([\da-f])?$|^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})?([\da-f]{2})?$/gi,f$3=/hsla?\s*\(\s*([+-]?\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function d$2({h:e,s:A,l:t,a:i}){return[u$8({h:a$c(e),s:s$a(0,A,100),l:s$a(0,t,100),a:i$a(i)}),"hsl"]}const g$2=/rgba?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function b$5({r:e,g:A,b:t,a:i}){return[{r:s$a(0,e,255),g:s$a(0,A,255),b:s$a(0,t,255),a:i$a(i)},"rgb"]}var p$3,v$2,m$1=function(e,A,t,i,n){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof A?e!==A||!n:!A.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?n.call(e,t):n?n.value=t:A.set(e,t),t},y$1=function(e,A,t,i){if("a"===t&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof A?e!==A||!i:!A.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===t?i:"a"===t?i.call(e):i?i.value:A.get(e)};class w$1{constructor(e){var A,t;p$3.set(this,{r:0,g:0,b:0,a:1}),v$2.set(this,"rgb");const i=w$1.Parsers.map((A=>A(e))).find((e=>"invalid"!==e[1]));i?(A=this,t=this,[{set value(e){m$1(A,p$3,e,"f")}}.value,{set value(e){m$1(t,v$2,e,"f")}}.value]=i):m$1(this,v$2,"invalid","f")}get red(){return y$1(this,p$3,"f").r}get blue(){return y$1(this,p$3,"f").b}get green(){return y$1(this,p$3,"f").g}get alpha(){return y$1(this,p$3,"f").a}get hue(){return h$4(y$1(this,p$3,"f")).h}get saturation(){return h$4(y$1(this,p$3,"f")).s}get lightness(){return h$4(y$1(this,p$3,"f")).l}get format(){return y$1(this,v$2,"f")}isValid(){return"invalid"!==y$1(this,v$2,"f")}rgba(){return y$1(this,p$3,"f")}hsla(){return h$4(y$1(this,p$3,"f"))}hexa({round:e=!1}={}){return function(e,A=!1){let{r:t,g:i,b:n,a:s}=e;s&&(s*=255),A&&([t,i,n,s]=[t,i,n,s].map((e=>e&&Math.round(e))));const[a,o,r,l]=[t,i,n,null!=s?s:255].map((e=>e.toString(16).padStart(2,"0").toUpperCase()));return{r:a,g:o,b:r,a:l}}(y$1(this,p$3,"f"),e)}stringRGB({alpha:e=!0,precision:A=[0,0,0,1]}={}){const[t,i,n,s]=Object.values(y$1(this,p$3,"f")).map(((e,t)=>n$c(e,A[t])));return e?`rgba(${t}, ${i}, ${n}, ${s})`:`rgb(${t}, ${i}, ${n})`}stringHEX({alpha:e=!0}={}){const[A,t,i,n]=Object.values(this.hexa({round:!0}));return`#${A}${t}${i}${e?n:""}`}stringHSL({alpha:e=!0,precision:A=[0,0,0,1]}={}){const[t,i,n,s]=Object.values(this.hsla()).map(((e,t)=>n$c(e,A[t])));return e?`hsla(${t}, ${i}%, ${n}%, ${s})`:`hsl(${t}, ${i}%, ${n}%)`}hueTo(e){var A;const{h:t,s:i,l:n,a:s}=this.hsla(),a="number"==typeof e?a$c(e):Number(null!==(A=e$d[e].match(/\d{1,3}/))&&void 0!==A?A:t);return m$1(this,p$3,u$8({h:a,s:i,l:n,a:s}),"f"),this}hueBy(e){const{h:A,s:t,l:i,a:n}=this.hsla();return m$1(this,p$3,u$8({h:a$c(A+e),s:t,l:i,a:n}),"f"),this}saturationTo(e){const{h:A,l:t,a:i}=this.hsla();return m$1(this,p$3,u$8({h:A,s:s$a(0,e,100),l:t,a:i}),"f"),this}saturateBy(e){const{h:A,s:t,l:i,a:n}=this.hsla();return m$1(this,p$3,u$8({h:A,s:s$a(0,t+e,100),l:i,a:n}),"f"),this}desaturateBy(e){return this.saturateBy(-1*e)}lightnessTo(e){const{h:A,s:t,a:i}=this.hsla();return m$1(this,p$3,u$8({h:A,s:t,l:s$a(0,e,100),a:i}),"f"),this}lighterBy(e){const{h:A,s:t,l:i,a:n}=this.hsla();return m$1(this,p$3,u$8({h:A,s:t,l:s$a(0,i+e,100),a:n}),"f"),this}darkerBy(e){return this.lighterBy(-1*e)}alphaTo(e){return m$1(this,p$3,Object.assign(Object.assign({},y$1(this,p$3,"f")),{a:s$a(0,e,1)}),"f"),this}alphaBy(e){return m$1(this,p$3,Object.assign(Object.assign({},y$1(this,p$3,"f")),{a:s$a(0,y$1(this,p$3,"f").a+e,1)}),"f"),this}invert({alpha:e=!1}={}){const{r:A,g:t,b:i,a:n}=y$1(this,p$3,"f");return m$1(this,p$3,{r:255-A,g:255-t,b:255-i,a:e?1-n:n},"f"),this}grayscale(){return this.desaturateBy(100)}rotate(e){return this.hueBy(e)}}function $(){return new w$1({r:o$b(255),g:o$b(255),b:o$b(255),a:Math.random()})}function x$1(e){(e=e.filter(((e,A,t)=>t.indexOf(e)===A))).forEach((e=>e(w$1)))}p$3=new WeakMap,v$2=new WeakMap,w$1.Parsers=[function(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{r:A,g:t,b:i}=e;return void 0!==A&&void 0!==t&&void 0!==i&&"number"==typeof A}(e))return b$5(e);if("string"==typeof e){g$2.lastIndex=0;const A=g$2.exec(e);if(A){const[e,t,i,n]=A.filter((e=>void 0!==e)).slice(1).map(((e,A)=>e.includes("%")?+e.slice(0,-1)*(A<3?2.55:.01):+e));return b$5({r:e,g:t,b:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]},function(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{r:A,g:t,b:i}=e;return void 0!==A&&void 0!==t&&void 0!==i&&"string"==typeof A}(e))return[l$5(e),"hex"];if("string"==typeof e){c$a.lastIndex=0;const A=c$a.exec(e);if(A){const[e,t,i,n]=A.filter((e=>void 0!==e)).slice(1).map((e=>1===e.length?e.repeat(2):e));return[l$5({r:e,g:t,b:i,a:null!=n?n:"FF"}),"hex"]}}return[{r:0,g:0,b:0,a:1},"invalid"]},function(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{h:A,s:t,l:i}=e;return void 0!==A&&void 0!==t&&void 0!==i}(e))return d$2(e);if("string"==typeof e){f$3.lastIndex=0;const A=f$3.exec(e);if(A){const[e,t,i,n]=A.filter((e=>void 0!==e)).slice(1).map(((e,A)=>e.includes("%")?+e.slice(0,-1)*(0===A?3.59:A<3?1:.01):+e));return d$2({h:e,s:t,l:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}];const j$1=e=>new w$1(e);r$e.QA;var O$1=r$e.ZP,B=r$e.qt;r$e.MX;var e$c={d:(e,A)=>{for(var t in A)e$c.o(A,t)&&!e$c.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},a$b={};function t$b(e){const A=e%360;return A<0?A+360:A}e$c.d(a$b,{Z:()=>n$b});const n$b=e=>{e.prototype.harmony=function({type:A="analogous",effect:t="tones",amount:i=5}={}){const{h:n,s:s,l:a,a:o}=this.hsla();switch("monochromatic"===A&&(r=i,i=Math.max(2,Math.min(r,10))),A){case"analogous":return[-30,0,30].map((A=>new e({h:t$b(n+A),s:s,l:a,a:o})));case"complementary":return[0,180].map((A=>new e({h:t$b(n+A),s:s,l:a,a:o})));case"split-complementary":return[0,150,210].map((A=>new e({h:t$b(n+A),s:s,l:a,a:o})));case"double-split-complementary":return[-30,0,30,150,210].map((A=>new e({h:t$b(n+A),s:s,l:a,a:o})));case"triad":return[0,120,240].map((A=>new e({h:t$b(n+A),s:s,l:a,a:o})));case"rectangle":return[0,60,180,240].map((A=>new e({h:t$b(n+A),s:s,l:a,a:o})));case"square":return[0,90,180,270].map((A=>new e({h:t$b(n+A),s:s,l:a,a:o})));case"monochromatic":{const A="tones"===t?s:a;let r=("tints"===t?100-A:A)/i;r="tints"===t?r:-1*r;const l=[A];for(let e=0;e<i;e++)l.push(l[e]+r);return"tones"===t?l.map((A=>new e({h:n,s:A,l:a,a:o}))):l.map((A=>new e({h:n,s:s,l:A,a:o})))}}var r}};var r$d=a$b.Z,a$a={d:(e,A)=>{for(var t in A)a$a.o(A,t)&&!a$a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},t$a={};a$a.d(t$a,{Z:()=>k});const e$b=6/29,n$a=Math.pow(e$b,3),c$9=Math.pow(29/3,3),r$c={x:.96422,y:1,z:.82521};function u$7(e,A){return[e[0][0]*A[0]+e[0][1]*A[1]+e[0][2]*A[2],e[1][0]*A[0]+e[1][1]*A[1]+e[1][2]*A[2],e[2][0]*A[0]+e[2][1]*A[1]+e[2][2]*A[2]]}function s$9(e,A,t){return Math.max(e,Math.min(A,t))}function o$a(e){const A=e%360;return A<0?A+360:A}function l$4(e){const[A,t,i]=Object.values(e).map((e=>e/255)),n=Math.max(A,t,i),s=Math.min(A,t,i),a=n-s;return{Cmin:s,Cmax:n,H:0===a?0:n===A?(t-i)/a%6:n===t?(i-A)/a+2:(A-t)/a+4,delta:a}}function b$4(e){var A;const{Cmin:t,Cmax:i,H:n,delta:s}=l$4(e),a=(i+t)/2,o=0===s?0:s/(1-Math.abs(2*a-1));return{h:o$a(60*n),s:100*o,l:100*a,a:null!==(A=e.a)&&void 0!==A?A:1}}function h$3(e){var A;const{Cmax:t,H:i,delta:n}=l$4(e),s=0===n?0:n/t;return{h:o$a(60*i),s:100*s,v:100*t,a:null!==(A=e.a)&&void 0!==A?A:1}}function v$1(e){const{h:A,a:t}=b$4(e),{r:i,g:n,b:s}=e;return{h:A,w:Math.min(i,n,s)/2.55,b:100*(1-Math.max(i,n,s)/255),a:t}}function i$9(e){const[A,t,i]=u$7([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(A=e,(A/=255)<.04045?A/12.92:Math.pow((A+.055)/1.055,2.4));var A})));return function(e){const[A,t,i]=u$7([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:A,y:t,z:i,a:e.a}}({x:A,y:t,z:i,a:e.a})}function m(e){const A=Object.values(i$9(e)).map(((e,A)=>e/(100*Object.values(r$c)[A]))).map((e=>e>n$a?Math.cbrt(e):(c$9*e+16)/116));return{l:116*A[1]-16,a:500*(A[0]-A[1]),b:200*(A[1]-A[2]),alpha:e.a}}function p$2(e){const{l:A,a:t,b:i}=m(e),n=180*Math.atan2(i,t)/Math.PI;return{l:A,c:Math.sqrt(Math.pow(t,2)+Math.pow(i,2)),h:o$a(n),a:e.a}}function f$2(e){const[A,t,i]=Object.values(i$9(e)).map((e=>e/100)),n=t/r$c.y,s=A&&t&&i?A+15*t+3*i:19,a=4*A/s,o=9*t/s,r=r$c.x+15*r$c.y+3*r$c.z,l=4*r$c.x/r,c=9*r$c.y/r;let g=n>n$a?116*Math.cbrt(n)-16:c$9*n,d=13*g*(a-l),u=13*g*(o-c);return g===Number(-0)&&(g=0),d===Number(-0)&&(d=0),u===Number(-0)&&(u=0),{l:g,u:d,v:u,a:e.a}}function M(e){const{x:A,y:t,z:i}=i$9(e),[n,s,a]=u$7([[2/3,0,0],[0,1,0],[-.5,1.5,.5]],[A,t,i]);return{u:n,v:s,w:a,a:e.a}}function w(e){let{r:A,g:t,b:i}=e;const n=Math.min(A,t,i);[A,t,i]=[A,t,i].map((e=>e-n));const s=Math.max(A,t,i);let a=Math.min(A,t);A-=a,t-=a,i&&t&&(i/=2,t/=2),a+=t,i+=t;const o=Math.max(A,a,i);if(o){const e=s/o;[A,a,i]=[A,a,i].map((A=>A*e))}return[A,a,i]=[A,a,i].map((e=>e+n)),{r:A,y:a,b:i,a:e.a}}function O(e){const{r:A,g:t,b:i,a:n}=e,s=1-Math.max(A,t,i)/255,[a,o,r]=1===s?[0,0,0]:[A,t,i].map((e=>100*(1-e/255-s)/(1-s)));return{c:a,m:o,y:r,k:100*s,a:n}}function j(e){const{h:A,s:t,v:i,a:n}=e,s=i/100,a=s*(t/100),o=a*(1-Math.abs(A/60%2-1)),r=s-a,l=A<60||300<=A&&A<360?a:120<=A&&A<240?0:o,c=240<=A&&A<360?0:60<=A&&A<180?a:o,g=A<120?0:180<=A&&A<300?a:o,[d,u,h]=[l,c,g].map((e=>255*(e+r)));return{r:d,g:u,b:h,a:null!=n?n:1}}function x(e){const[A,t,i]=Object.values(function(e){const[A,t,i]=u$7([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:A,y:t,z:i,a:e.a}}(e)).map((e=>e/100)),[n,s,a]=u$7([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[A,t,i]).map((e=>{return s$9(0,255*((A=e)>.0031308?1.055*Math.pow(A,1/2.4)-.055:12.92*A),255);var A}));return{r:n,g:s,b:a,a:e.a}}function y(e){const{l:A,a:t,b:i}=e,n=(A+16)/116,s=n+t/500,a=n-i/200,o=Object.values(r$c),[r,l,c]=[s,n,a].map(((e,A)=>(e>e$b?Math.pow(e,3):3*Math.pow(e$b,2)*(e-4/29))*o[A]*100));return x({x:r,y:l,z:c,a:e.alpha})}const k=e=>{e.prototype.mix=function({color:A="#fff",ratio:t=.5,colorspace:i="luv"}={}){const n=this.rgba(),s=(A instanceof e?A:new e(A)).rgba();let a,o;switch(t=s$9(0,t,1),i){case"hsl":a=Object.values(b$4(n)),o=Object.values(b$4(s));break;case"hsv":a=Object.values(h$3(n)),o=Object.values(h$3(s));break;case"hwb":a=Object.values(v$1(n)),o=Object.values(v$1(s));break;case"lab":a=Object.values(m(n)),o=Object.values(m(s));break;case"lch":a=Object.values(p$2(n)),o=Object.values(p$2(s));break;case"luv":a=Object.values(f$2(n)),o=Object.values(f$2(s));break;case"ryb":a=Object.values(w(n)),o=Object.values(w(s));break;case"uvw":a=Object.values(M(n)),o=Object.values(M(s));break;case"xyz":a=Object.values(i$9(n)),o=Object.values(i$9(s));break;case"cmyk":a=Object.values(O(n)),o=Object.values(O(s));break;default:a=Object.values(n),o=Object.values(s)}const[r,l,c,g,d]=a.map(((e,A)=>a[A]*(1-t)+o[A]*t));switch(i){case"hsl":return new e(function(e){const{h:A,s:t,l:i,a:n}=e,s=i/100,a=t/100,o=(1-Math.abs(2*s-1))*a,r=o*(1-Math.abs(A/60%2-1)),l=s-o/2,c=A<60||300<=A&&A<360?o:120<=A&&A<240?0:r,g=240<=A&&A<360?0:60<=A&&A<180?o:r,d=A<120?0:180<=A&&A<300?o:r,[u,h,m]=[c,g,d].map((e=>255*(e+l)));return{r:u,g:h,b:m,a:null!=n?n:1}}({h:r,s:l,l:c,a:g}));case"hsv":return new e(j({h:r,s:l,v:c,a:g}));case"hwb":return new e(function(e){const{h:A,b:t,w:i,a:n}=e;return j({h:A,s:100===t?0:100-i/(100-t)*100,v:100-t,a:n})}({h:r,w:l,b:c,a:g}));case"lab":return new e(y({l:r,a:l,b:c,alpha:g}));case"lch":return new e(function(e){const{l:A,c:t,h:i}=e;return y({l:A,a:t*Math.cos(i*Math.PI/180),b:t*Math.sin(i*Math.PI/180),alpha:e.a})}({l:r,c:l,h:c,a:g}));case"luv":return new e(function(e){const{l:A,u:t,v:i}=e,n=A>c$9*n$a?Math.pow((A+16)/116,3):A/c$9,s=r$c.x+15*r$c.y+3*r$c.z,a=(52*A/(t&&A?t+13*A*(4*r$c.x/s):1)-1)/3,o=-5*n,r=n*(39*A/(i&&A?i+13*A*(9*r$c.y/s):1)-5),l=a===-1/3?r-o:(r-o)/(a- -1/3);return x({x:100*l,y:100*n,z:100*(a*l+o),a:e.a})}({l:r,u:l,v:c,a:g}));case"ryb":return new e(function(e){let{r:A,y:t,b:i}=e;const n=Math.min(A,t,i);[A,t,i]=[A,t,i].map((e=>e-n));const s=Math.max(A,t,i);let a=Math.min(t,i);t-=a,i-=a,i&&a&&(i*=2,a*=2),A+=t,a+=t;const o=Math.max(A,a,i);if(o){const e=s/o;[A,a,i]=[A,a,i].map((A=>A*e))}return[A,a,i]=[A,a,i].map((e=>e+n)),{r:A,g:a,b:i,a:e.a}}({r:r,y:l,b:c,a:g}));case"uvw":return new e(function(e){const{u:A,v:t,w:i}=e,[n,s,a]=u$7([[1.5,0,0],[0,1,0],[1.5,-3,2]],[A,t,i]);return x({x:n,y:s,z:a,a:e.a})}({u:r,v:l,w:c,a:g}));case"xyz":return new e(x({x:r,y:l,z:c,a:g}));case"cmyk":return new e(function(e){const{c:A,m:t,y:i,k:n,a:s}=e,[a,o,r]=[A,t,i].map((e=>255*(1-e/100)*(1-n/100)));return{r:a,g:o,b:r,a:s}}({c:r,m:l,y:c,k:g,a:d}));default:return new e({r:r,g:l,b:c,a:g})}}};var z=t$a.Z,r$b={d:(e,A)=>{for(var t in A)r$b.o(A,t)&&!r$b.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},b$3={};r$b.d(b$3,{Z:()=>n$9});const g$1=["rgb(0,0,0)","rgb(0,0,51)","rgb(0,0,102)","rgb(0,0,153)","rgb(0,0,204)","rgb(0,0,255)","rgb(0,51,0)","rgb(0,51,51)","rgb(0,51,102)","rgb(0,51,153)","rgb(0,51,204)","rgb(0,51,255)","rgb(0,102,0)","rgb(0,102,51)","rgb(0,102,102)","rgb(0,102,153)","rgb(0,102,204)","rgb(0,102,255)","rgb(0,153,0)","rgb(0,153,51)","rgb(0,153,102)","rgb(0,153,153)","rgb(0,153,204)","rgb(0,153,255)","rgb(0,204,0)","rgb(0,204,51)","rgb(0,204,102)","rgb(0,204,153)","rgb(0,204,204)","rgb(0,204,255)","rgb(0,255,0)","rgb(0,255,51)","rgb(0,255,102)","rgb(0,255,153)","rgb(0,255,204)","rgb(0,255,255)","rgb(51,0,0)","rgb(51,0,51)","rgb(51,0,102)","rgb(51,0,153)","rgb(51,0,204)","rgb(51,0,255)","rgb(51,51,0)","rgb(51,51,51)","rgb(51,51,102)","rgb(51,51,153)","rgb(51,51,204)","rgb(51,51,255)","rgb(51,102,0)","rgb(51,102,51)","rgb(51,102,102)","rgb(51,102,153)","rgb(51,102,204)","rgb(51,102,255)","rgb(51,153,0)","rgb(51,153,51)","rgb(51,153,102)","rgb(51,153,153)","rgb(51,153,204)","rgb(51,153,255)","rgb(51,204,0)","rgb(51,204,51)","rgb(51,204,102)","rgb(51,204,153)","rgb(51,204,204)","rgb(51,204,255)","rgb(51,255,0)","rgb(51,255,51)","rgb(51,255,102)","rgb(51,255,153)","rgb(51,255,204)","rgb(51,255,255)","rgb(102,0,0)","rgb(102,0,51)","rgb(102,0,102)","rgb(102,0,153)","rgb(102,0,204)","rgb(102,0,255)","rgb(102,51,0)","rgb(102,51,51)","rgb(102,51,102)","rgb(102,51,153)","rgb(102,51,204)","rgb(102,51,255)","rgb(102,102,0)","rgb(102,102,51)","rgb(102,102,102)","rgb(102,102,153)","rgb(102,102,204)","rgb(102,102,255)","rgb(102,153,0)","rgb(102,153,51)","rgb(102,153,102)","rgb(102,153,153)","rgb(102,153,204)","rgb(102,153,255)","rgb(102,204,0)","rgb(102,204,51)","rgb(102,204,102)","rgb(102,204,153)","rgb(102,204,204)","rgb(102,204,255)","rgb(102,255,0)","rgb(102,255,51)","rgb(102,255,102)","rgb(102,255,153)","rgb(102,255,204)","rgb(102,255,255)","rgb(153,0,0)","rgb(153,0,51)","rgb(153,0,102)","rgb(153,0,153)","rgb(153,0,204)","rgb(153,0,255)","rgb(153,51,0)","rgb(153,51,51)","rgb(153,51,102)","rgb(153,51,153)","rgb(153,51,204)","rgb(153,51,255)","rgb(153,102,0)","rgb(153,102,51)","rgb(153,102,102)","rgb(153,102,153)","rgb(153,102,204)","rgb(153,102,255)","rgb(153,153,0)","rgb(153,153,51)","rgb(153,153,102)","rgb(153,153,153)","rgb(153,153,204)","rgb(153,153,255)","rgb(153,204,0)","rgb(153,204,51)","rgb(153,204,102)","rgb(153,204,153)","rgb(153,204,204)","rgb(153,204,255)","rgb(153,255,0)","rgb(153,255,51)","rgb(153,255,102)","rgb(153,255,153)","rgb(153,255,204)","rgb(153,255,255)","rgb(204,0,0)","rgb(204,0,51)","rgb(204,0,102)","rgb(204,0,153)","rgb(204,0,204)","rgb(204,0,255)","rgb(204,51,0)","rgb(204,51,51)","rgb(204,51,102)","rgb(204,51,153)","rgb(204,51,204)","rgb(204,51,255)","rgb(204,102,0)","rgb(204,102,51)","rgb(204,102,102)","rgb(204,102,153)","rgb(204,102,204)","rgb(204,102,255)","rgb(204,153,0)","rgb(204,153,51)","rgb(204,153,102)","rgb(204,153,153)","rgb(204,153,204)","rgb(204,153,255)","rgb(204,204,0)","rgb(204,204,51)","rgb(204,204,102)","rgb(204,204,153)","rgb(204,204,204)","rgb(204,204,255)","rgb(204,255,0)","rgb(204,255,51)","rgb(204,255,102)","rgb(204,255,153)","rgb(204,255,204)","rgb(204,255,255)","rgb(255,0,0)","rgb(255,0,51)","rgb(255,0,102)","rgb(255,0,153)","rgb(255,0,204)","rgb(255,0,255)","rgb(255,51,0)","rgb(255,51,51)","rgb(255,51,102)","rgb(255,51,153)","rgb(255,51,204)","rgb(255,51,255)","rgb(255,102,0)","rgb(255,102,51)","rgb(255,102,102)","rgb(255,102,153)","rgb(255,102,204)","rgb(255,102,255)","rgb(255,153,0)","rgb(255,153,51)","rgb(255,153,102)","rgb(255,153,153)","rgb(255,153,204)","rgb(255,153,255)","rgb(255,204,0)","rgb(255,204,51)","rgb(255,204,102)","rgb(255,204,153)","rgb(255,204,204)","rgb(255,204,255)","rgb(255,255,0)","rgb(255,255,51)","rgb(255,255,102)","rgb(255,255,153)","rgb(255,255,204)","rgb(255,255,255)"];function t$9(e){return(e/=255)<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function o$9(e,A=[0,0,0,1]){var t,i;return null!==(i=null===(t=e.match(/\d{1,3}/g))||void 0===t?void 0:t.map((e=>+e)))&&void 0!==i?i:A}const n$9=e=>{e.prototype.brightness=function({precision:e=4,percentage:A=!1}={}){const{r:t,g:i,b:n}=this.rgba(),s=+((.299*t+.587*i+.114*n)/255).toFixed(e);return A?100*s:s},e.prototype.luminance=function({precision:e=4,percentage:A=!1}={}){const{r:t,g:i,b:n}=this.rgba(),s=+(.2126*t$9(t)+.7152*t$9(i)+.0722*t$9(n)).toFixed(e);return A?100*s:s},e.prototype.contrast=function({bgColor:A="#fff",precision:t=4,ratio:i=!1}={}){const n=this.luminance(),s=(A instanceof e?A:new e(A)).luminance(),a=((Math.max(n,s)+.05)/(Math.min(n,s)+.05)).toFixed(t);return i?a+":1":+a},e.prototype.readableOn=function({bgColor:e="#fff",size:A="body",level:t="minimum"}={}){const i=this.contrast({bgColor:e});return"body"===A&&"enhanced"===t?i>=7:"large"===A&&"minimum"===t?i>=3:i>=4.5},e.prototype.equalTo=function(A="#fff"){const t=Object.values(this.rgba()),i=Object.values((A instanceof e?A:new e(A)).rgba());return t.toString()===i.toString()},e.prototype.isLight=function(){return this.brightness()>=.5},e.prototype.isDark=function(){return!this.isLight()},e.prototype.isCool=function(){const{h:e}=this.hsla();return 75<=e&&e<255},e.prototype.isWarm=function(){return!this.isCool()},e.prototype.isTinted=function(){return this.hsla().l>50},e.prototype.isShaded=function(){return this.hsla().l<50},e.prototype.isToned=function(){return this.hsla().s<100},e.prototype.isPureHue=function({reason:e=!0}={}){return this.isTinted()?!!e&&{pure:!1,reason:"tinted"}:this.isShaded()?!!e&&{pure:!1,reason:"shaded"}:this.isToned()?!!e&&{pure:!1,reason:"toned"}:!e||{pure:!0,reason:"N/A"}},e.prototype.closestCool=function(){const{h:e}=this.hsla();return this.isCool()?this:this.hueTo(e<75?75:254)},e.prototype.closestWarm=function(){const{h:e}=this.hsla();return this.isWarm()?this:this.hueTo(e<165?74:255)},e.prototype.closestPureHue=function(){const{h:A,a:t}=this.hsla(),{r:i,g:n,b:s,a:a}=function(e){const{h:A,s:t,l:i,a:n}=e,s=i/100,a=t/100,o=(1-Math.abs(2*s-1))*a,r=o*(1-Math.abs(A/60%2-1)),l=s-o/2,c=A<60||300<=A&&A<360?o:120<=A&&A<240?0:r,g=240<=A&&A<360?0:60<=A&&A<180?o:r,d=A<120?0:180<=A&&A<300?o:r,[u,h,m]=[c,g,d].map((e=>255*(e+l)));return{r:u,g:h,b:m,a:null!=n?n:1}}({h:A,s:100,l:50,a:t});return new e({r:i,g:n,b:s,a:a})},e.prototype.closestWebSafe=function(){const{r:A,g:t,b:i,a:n}=this.rgba();let[s,a,o]=new Array(3).fill(0),r=Number.POSITIVE_INFINITY,l={r:A,g:t,b:i,a:n};for(let e=0;e<g$1.length;e++){[s,a,o]=o$9(g$1[e],[s,a,o]);const d=(c=[s,a,o],g=[A,t,i],Math.abs(c[0]-g[0])+Math.abs(c[1]-g[1])+Math.abs(c[2]-g[2]));d<r&&(r=d,l={r:s,g:a,b:o,a:n})}var c,g;return new e(l)}};var e$a=b$3.Z,r$a={d:(e,A)=>{for(var t in A)r$a.o(A,t)&&!r$a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},g={};r$a.d(g,{Z:()=>a$9});const e$9={maroon:"rgb(128,0,0)","dark red":"rgb(139,0,0)",brown:"rgb(165,42,42)",firebrick:"rgb(178,34,34)",crimson:"rgb(220,20,60)",red:"rgb(255,0,0)",tomato:"rgb(255,99,71)",coral:"rgb(255,127,80)","indian red":"rgb(205,92,92)","light coral":"rgb(240,128,128)","dark salmon":"rgb(233,150,122)",salmon:"rgb(250,128,114)","light salmon":"rgb(255,160,122)","orange red":"rgb(255,69,0)","dark orange":"rgb(255,140,0)",orange:"rgb(255,165,0)",gold:"rgb(255,215,0)","dark golden rod":"rgb(184,134,11)","golden rod":"rgb(218,165,32)","pale golden rod":"rgb(238,232,170)","dark khaki":"rgb(189,183,107)",khaki:"rgb(240,230,140)",olive:"rgb(128,128,0)",yellow:"rgb(255,255,0)","yellow green":"rgb(154,205,50)","dark olive green":"rgb(85,107,47)","olive drab":"rgb(107,142,35)","lawn green":"rgb(124,252,0)","chart reuse":"rgb(127,255,0)","green yellow":"rgb(173,255,47)","dark green":"rgb(0,100,0)",green:"rgb(0,128,0)","forest green":"rgb(34,139,34)",lime:"rgb(0,255,0)","lime green":"rgb(50,205,50)","light green":"rgb(144,238,144)","pale green":"rgb(152,251,152)","dark sea green":"rgb(143,188,143)","medium spring green":"rgb(0,250,154)","spring green":"rgb(0,255,127)","sea green":"rgb(46,139,87)","medium aqua marine":"rgb(102,205,170)","medium sea green":"rgb(60,179,113)","light sea green":"rgb(32,178,170)","dark slate gray":"rgb(47,79,79)",teal:"rgb(0,128,128)","dark cyan":"rgb(0,139,139)",cyan:"rgb(0,255,255)",aqua:"rgb(0,255,255)","light cyan":"rgb(224,255,255)","dark turquoise":"rgb(0,206,209)",turquoise:"rgb(64,224,208)","medium turquoise":"rgb(72,209,204)","pale turquoise":"rgb(175,238,238)","aqua marine":"rgb(127,255,212)","powder blue":"rgb(176,224,230)","cadet blue":"rgb(95,158,160)","steel blue":"rgb(70,130,180)","corn flower blue":"rgb(100,149,237)","deep sky blue":"rgb(0,191,255)","dodger blue":"rgb(30,144,255)","light blue":"rgb(173,216,230)","sky blue":"rgb(135,206,235)","light sky blue":"rgb(135,206,250)","midnight blue":"rgb(25,25,112)",navy:"rgb(0,0,128)","dark blue":"rgb(0,0,139)","medium blue":"rgb(0,0,205)",blue:"rgb(0,0,255)","royal blue":"rgb(65,105,225)","blue violet":"rgb(138,43,226)",indigo:"rgb(75,0,130)","dark slate blue":"rgb(72,61,139)","slate blue":"rgb(106,90,205)","medium slate blue":"rgb(123,104,238)","medium purple":"rgb(147,112,219)","dark magenta":"rgb(139,0,139)","dark violet":"rgb(148,0,211)","dark orchid":"rgb(153,50,204)","medium orchid":"rgb(186,85,211)",purple:"rgb(128,0,128)",thistle:"rgb(216,191,216)",plum:"rgb(221,160,221)",violet:"rgb(238,130,238)",magenta:"rgb(255,0,255)",fuchsia:"rgb(255,0,255)",orchid:"rgb(218,112,214)","medium violet red":"rgb(199,21,133)","pale violet red":"rgb(219,112,147)","deep pink":"rgb(255,20,147)","hot pink":"rgb(255,105,180)","light pink":"rgb(255,182,193)",pink:"rgb(255,192,203)","antique white":"rgb(250,235,215)",beige:"rgb(245,245,220)",bisque:"rgb(255,228,196)","blanched almond":"rgb(255,235,205)",wheat:"rgb(245,222,179)","corn silk":"rgb(255,248,220)","lemon chiffon":"rgb(255,250,205)","light golden rod yellow":"rgb(250,250,210)","light yellow":"rgb(255,255,224)","saddle brown":"rgb(139,69,19)",sienna:"rgb(160,82,45)",chocolate:"rgb(210,105,30)",peru:"rgb(205,133,63)","sandy brown":"rgb(244,164,96)","burly wood":"rgb(222,184,135)",tan:"rgb(210,180,140)","rosy brown":"rgb(188,143,143)",moccasin:"rgb(255,228,181)","navajo white":"rgb(255,222,173)","peach puff":"rgb(255,218,185)","misty rose":"rgb(255,228,225)","lavender blush":"rgb(255,240,245)",linen:"rgb(250,240,230)","old lace":"rgb(253,245,230)","papaya whip":"rgb(255,239,213)","sea shell":"rgb(255,245,238)","mint cream":"rgb(245,255,250)","slate gray":"rgb(112,128,144)","light slate gray":"rgb(119,136,153)","light steel blue":"rgb(176,196,222)",lavender:"rgb(230,230,250)","floral white":"rgb(255,250,240)","alice blue":"rgb(240,248,255)","ghost white":"rgb(248,248,255)",honeydew:"rgb(240,255,240)",ivory:"rgb(255,255,240)",azure:"rgb(240,255,255)",snow:"rgb(255,250,250)",black:"rgb(0,0,0)","dim gray":"rgb(105,105,105)","dim grey":"rgb(105,105,105)",gray:"rgb(128,128,128)",grey:"rgb(128,128,128)","dark gray":"rgb(169,169,169)","dark grey":"rgb(169,169,169)",silver:"rgb(192,192,192)","light gray":"rgb(211,211,211)","light grey":"rgb(211,211,211)",gainsboro:"rgb(220,220,220)",gainsborough:"rgb(220,220,220)","white smoke":"rgb(245,245,245)",white:"rgb(255,255,255)",transparent:"rgba(0,0,0,0)"};function b$2(e,A=[0,0,0,1]){var t,i;return null!==(i=null===(t=e.match(/\d{1,3}/g))||void 0===t?void 0:t.map((e=>+e)))&&void 0!==i?i:A}const a$9=e=>{e.prototype.name=function({exact:e=!0}={}){const{r:A,g:t,b:i,a:n}=this.rgba();if(0===n)return"transparent";const[s,a]=[Object.keys(e$9),Object.values(e$9)];let o;if(e){const e=this.stringRGB({alpha:!1}).replace(/\s/g,"");o=s.find((A=>e$9[A]===e))}else{let e=Number.POSITIVE_INFINITY;for(let n=0;n<a.length;n++){const c=(r=b$2(a[n]),l=[A,t,i],Math.abs(r[0]-l[0])+Math.abs(r[1]-l[1])+Math.abs(r[2]-l[2]));c<e&&(e=c,o=s[n])}}var r,l;return o?o+(n<1?" (with opacity)":""):"undefined"},e.Parsers.push((function(e){if(Object.keys(e$9).includes(e)){const[A,t,i,n]=b$2(e$9[e]);return[{r:A,g:t,b:i,a:null!=n?n:1},"name"]}return[{r:0,g:0,b:0,a:1},"invalid"]}))};var l$3=g.Z,t$8={d:(e,A)=>{for(var t in A)t$8.o(A,t)&&!t$8.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},a$8={};t$8.d(a$8,{Z:()=>d$1});const n$8=6/29,r$9=Math.pow(n$8,3),o$8=Math.pow(29/3,3),e$8={x:.96422,y:1,z:.82521};function c$8(e,A){return[e[0][0]*A[0]+e[0][1]*A[1]+e[0][2]*A[2],e[1][0]*A[0]+e[1][1]*A[1]+e[1][2]*A[2],e[2][0]*A[0]+e[2][1]*A[1]+e[2][2]*A[2]]}function s$8(e,A,t){return Math.max(e,Math.min(A,t))}function u$6(e){const A=e%360;return A<0?A+360:A}function i$8(e){const{l:A,a:t,b:i}=function(e){const A=Object.values(function(e){const[A,t,i]=c$8([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(A=e,(A/=255)<.04045?A/12.92:Math.pow((A+.055)/1.055,2.4));var A})));return function(e){const[A,t,i]=c$8([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:A,y:t,z:i,a:e.a}}({x:A,y:t,z:i,a:e.a})}(e)).map(((e,A)=>e/(100*Object.values(e$8)[A]))).map((e=>e>r$9?Math.cbrt(e):(o$8*e+16)/116));return{l:116*A[1]-16,a:500*(A[0]-A[1]),b:200*(A[1]-A[2]),alpha:e.a}}(e),n=180*Math.atan2(i,t)/Math.PI;return{l:A,c:Math.sqrt(Math.pow(t,2)+Math.pow(i,2)),h:u$6(n),a:e.a}}function h$2(e){const{l:A,c:t,h:i}=e;return function(e){const{l:A,a:t,b:i}=e,n=(A+16)/116,s=n+t/500,a=n-i/200,o=Object.values(e$8),[r,l,c]=[s,n,a].map(((e,A)=>(e>n$8?Math.pow(e,3):3*Math.pow(n$8,2)*(e-4/29))*o[A]*100));return function(e){const[A,t,i]=Object.values(function(e){const[A,t,i]=c$8([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:A,y:t,z:i,a:e.a}}(e)).map((e=>e/100)),[n,s,a]=c$8([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[A,t,i]).map((e=>{return s$8(0,255*((A=e)>.0031308?1.055*Math.pow(A,1/2.4)-.055:12.92*A),255);var A}));return{r:n,g:s,b:a,a:e.a}}({x:r,y:l,z:c,a:e.alpha})}({l:A,a:t*Math.cos(i*Math.PI/180),b:t*Math.sin(i*Math.PI/180),alpha:e.a})}const l$2=/lcha?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function p$1({l:e,c:A,h:t,a:i}){return[h$2({l:s$8(0,e,100),c:s$8(0,A,230),h:u$6(t),a:(n=i,void 0!==n?s$8(0,n,1):1)}),"lch"];var n}function f$1(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{l:A,c:t,h:i}=e;return void 0!==A&&void 0!==t&&void 0!==i}(e))return p$1(e);if("string"==typeof e){l$2.lastIndex=0;const A=l$2.exec(e);if(A){const[e,t,i,n]=A.filter((e=>void 0!==e)).slice(1).map(((e,A)=>e.includes("%")?+e.slice(0,-1)*(0===A?1:1===A?2.3:2===A?3.59:.01):+e));return p$1({l:e,c:t,h:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const d$1=e=>{e.prototype.lcha=function(){return i$8(this.rgba())},e.prototype.stringLCH=function({alpha:e=!0,precision:A=[0,0,0,1]}={}){const[t,i,n,s]=Object.values(this.lcha()).map(((e,t)=>function(e,A){return+e.toFixed(A>=0?A:0)}(e,A[t])));return e?`lcha(${t}%, ${i}, ${n}, ${s})`:`lch(${t}%, ${i}, ${n})`},e.Parsers.push(f$1)};var b$1=a$8.Z,t$7={d:(e,A)=>{for(var t in A)t$7.o(A,t)&&!t$7.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},n$7={};t$7.d(n$7,{Z:()=>l$1});const r$8=Math.pow(6/29,3),e$7=Math.pow(29/3,3);function o$7(e,A){return[e[0][0]*A[0]+e[0][1]*A[1]+e[0][2]*A[2],e[1][0]*A[0]+e[1][1]*A[1]+e[1][2]*A[2],e[2][0]*A[0]+e[2][1]*A[1]+e[2][2]*A[2]]}function a$7(e,A,t){return Math.max(e,Math.min(A,t))}function u$5(e){const{l:A,u:t,v:i}=e,n=A>e$7*r$8?Math.pow((A+16)/116,3):A/e$7,s=(52*A/(t&&A?t+13*A*.20916005282038627:1)-1)/3,a=-5*n,o=n*(39*A/(i&&A?i+13*A*(9/18.43985):1)-5),r=s===-1/3?o-a:(o-a)/(s- -1/3);return function(e){const[A,t,i]=Object.values(function(e){const[A,t,i]=o$7([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:A,y:t,z:i,a:e.a}}(e)).map((e=>e/100)),[n,s,a]=o$7([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[A,t,i]).map((e=>{return a$7(0,255*((A=e)>.0031308?1.055*Math.pow(A,1/2.4)-.055:12.92*A),255);var A}));return{r:n,g:s,b:a,a:e.a}}({x:100*r,y:100*n,z:100*(s*r+a),a:e.a})}const c$7=/color\s*\(\s*luva?\s*(\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function s$7({l:e,u:A,v:t,a:i}){return[u$5({l:a$7(0,e,100),u:a$7(-100,A,100),v:a$7(-100,t,100),a:(n=i,void 0!==n?a$7(0,n,1):1)}),"luv"];var n}function i$7(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{l:A,u:t,v:i}=e;return void 0!==A&&void 0!==t&&null!=i}(e))return s$7(e);if("string"==typeof e){c$7.lastIndex=0;const A=c$7.exec(e);if(A){const[e,t,i,n]=A.filter((e=>void 0!==e)).slice(1).map(((e,A)=>e.includes("%")?+e.slice(0,-1)*(A<3?1:.01):+e));return s$7({l:e,u:t,v:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const l$1=e=>{e.prototype.luva=function(){return function(e){const[A,t,i]=Object.values(function(e){const[A,t,i]=o$7([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(A=e,(A/=255)<.04045?A/12.92:Math.pow((A+.055)/1.055,2.4));var A})));return function(e){const[A,t,i]=o$7([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:A,y:t,z:i,a:e.a}}({x:A,y:t,z:i,a:e.a})}(e)).map((e=>e/100)),n=t/1,s=A&&t&&i?A+15*t+3*i:19,a=4*A/s,o=9*t/s;let r=n>r$8?116*Math.cbrt(n)-16:e$7*n,l=13*r*(a-.20916005282038627),c=13*r*(o-.48807338454488514);return r===Number(-0)&&(r=0),l===Number(-0)&&(l=0),c===Number(-0)&&(c=0),{l:r,u:l,v:c,a:e.a}}(this.rgba())},e.prototype.stringLUV=function({alpha:e=!0,precision:A=[0,0,0,1]}={}){const[t,i,n,s]=Object.values(this.luva()).map(((e,t)=>function(e,A){return+e.toFixed(A>=0?A:0)}(e,A[t])));return e?`color(luva ${t}%, ${i}%, ${n}%, ${s})`:`color(luv ${t}%, ${i}%, ${n}%)`},e.Parsers.push(i$7)};var v=n$7.Z,t$6={d:(e,A)=>{for(var t in A)t$6.o(A,t)&&!t$6.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},a$6={};t$6.d(a$6,{Z:()=>d});const n$6=6/29,r$7=Math.pow(n$6,3),e$6=Math.pow(29/3,3),o$6={x:.96422,y:1,z:.82521};function c$6(e,A){return[e[0][0]*A[0]+e[0][1]*A[1]+e[0][2]*A[2],e[1][0]*A[0]+e[1][1]*A[1]+e[1][2]*A[2],e[2][0]*A[0]+e[2][1]*A[1]+e[2][2]*A[2]]}function s$6(e,A,t){return Math.max(e,Math.min(A,t))}function u$4(e){return void 0!==e?s$6(0,e,1):1}function i$6(e){const A=Object.values(function(e){const[A,t,i]=c$6([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(A=e,(A/=255)<.04045?A/12.92:Math.pow((A+.055)/1.055,2.4));var A})));return function(e){const[A,t,i]=c$6([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:A,y:t,z:i,a:e.a}}({x:A,y:t,z:i,a:e.a})}(e)).map(((e,A)=>e/(100*Object.values(o$6)[A]))).map((e=>e>r$7?Math.cbrt(e):(e$6*e+16)/116));return{l:116*A[1]-16,a:500*(A[0]-A[1]),b:200*(A[1]-A[2]),alpha:e.a}}function l(e){const{l:A,a:t,b:i}=e,n=(A+16)/116,s=n+t/500,a=n-i/200,o=Object.values(o$6),[r,l,c]=[s,n,a].map(((e,A)=>(e>n$6?Math.pow(e,3):3*Math.pow(n$6,2)*(e-4/29))*o[A]*100));return function(e){const[A,t,i]=Object.values(function(e){const[A,t,i]=c$6([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:A,y:t,z:i,a:e.a}}(e)).map((e=>e/100)),[n,s,a]=c$6([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[A,t,i]).map((e=>{return s$6(0,255*((A=e)>.0031308?1.055*Math.pow(A,1/2.4)-.055:12.92*A),255);var A}));return{r:n,g:s,b:a,a:e.a}}({x:r,y:l,z:c,a:e.alpha})}const p=/laba?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function b({l:e,a:A,b:t,alpha:i}){return[l({l:s$6(0,e,100),a:s$6(-160,A,160),b:s$6(-160,t,160),alpha:u$4(i)}),"lab"]}function f(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{l:A,a:t,b:i}=e;return void 0!==A&&void 0!==t&&void 0!==i}(e))return b(e);if("string"==typeof e){p.lastIndex=0;const A=p.exec(e);if(A){const[e,t,i,n]=A.filter((e=>void 0!==e)).slice(1).map(((e,A)=>e.includes("%")?+e.slice(0,-1)*(A<3?1:.01):+e));return b({l:e,a:t,b:i,alpha:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const d=e=>{e.prototype.laba=function(){return i$6(this.rgba())},e.prototype.stringLAB=function({alpha:e=!0,precision:A=[0,0,0,1]}={}){const[t,i,n,s]=Object.values(this.laba()).map(((e,t)=>function(e,A){return+e.toFixed(A>=0?A:0)}(e,A[t])));return e?`laba(${t}%, ${i}, ${n}, ${s})`:`lab(${t}%, ${i}, ${n})`},e.Parsers.push(f)};var h$1=a$6.Z,t$5={d:(e,A)=>{for(var t in A)t$5.o(A,t)&&!t$5.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},n$5={};function r$6(e,A){return[e[0][0]*A[0]+e[0][1]*A[1]+e[0][2]*A[2],e[1][0]*A[0]+e[1][1]*A[1]+e[1][2]*A[2],e[2][0]*A[0]+e[2][1]*A[1]+e[2][2]*A[2]]}function o$5(e,A,t){return Math.max(e,Math.min(A,t))}function e$5(e){const{u:A,v:t,w:i}=e,[n,s,a]=r$6([[1.5,0,0],[0,1,0],[1.5,-3,2]],[A,t,i]);return function(e){const[A,t,i]=Object.values(function(e){const[A,t,i]=r$6([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:A,y:t,z:i,a:e.a}}(e)).map((e=>e/100)),[n,s,a]=r$6([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[A,t,i]).map((e=>{return o$5(0,255*((A=e)>.0031308?1.055*Math.pow(A,1/2.4)-.055:12.92*A),255);var A}));return{r:n,g:s,b:a,a:e.a}}({x:n,y:s,z:a,a:e.a})}t$5.d(n$5,{Z:()=>s$5});const a$5=/color\s*\(\s*uvwa?\s*(\d*\.?\d+)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function u$3({u:e,v:A,w:t,a:i}){return[e$5({u:o$5(0,e,200/3*.96422),v:o$5(0,A,100),w:o$5(-48.211,t,191.2605),a:(n=i,void 0!==n?o$5(0,n,1):1)}),"uvw"];var n}function c$5(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{u:A,v:t,w:i}=e;return void 0!==A&&void 0!==t&&void 0!==i}(e))return u$3(e);if("string"==typeof e){a$5.lastIndex=0;const A=a$5.exec(e);if(A){const[e,t,i,n]=A.filter((e=>void 0!==e)).slice(1).map((e=>e.includes("%")?.01*+e.slice(0,-1):+e));return u$3({u:e,v:t,w:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const s$5=e=>{e.prototype.uvwa=function(){return function(e){const{x:A,y:t,z:i}=function(e){const[A,t,i]=r$6([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(A=e,(A/=255)<.04045?A/12.92:Math.pow((A+.055)/1.055,2.4));var A})));return function(e){const[A,t,i]=r$6([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:A,y:t,z:i,a:e.a}}({x:A,y:t,z:i,a:e.a})}(e),[n,s,a]=r$6([[2/3,0,0],[0,1,0],[-.5,1.5,.5]],[A,t,i]);return{u:n,v:s,w:a,a:e.a}}(this.rgba())},e.prototype.stringUVW=function({alpha:e=!0,precision:A=[0,0,0,1]}={}){const[t,i,n,s]=Object.values(this.uvwa()).map(((e,t)=>function(e,A){return+e.toFixed(A>=0?A:0)}(e,A[t])));return e?`color(uvwa ${t}, ${i}, ${n}, ${s})`:`color(uvw ${t}, ${i}, ${n})`},e.Parsers.push(c$5)};var i$5=n$5.Z,t$4={d:(e,A)=>{for(var t in A)t$4.o(A,t)&&!t$4.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},n$4={};function r$5(e,A){return[e[0][0]*A[0]+e[0][1]*A[1]+e[0][2]*A[2],e[1][0]*A[0]+e[1][1]*A[1]+e[1][2]*A[2],e[2][0]*A[0]+e[2][1]*A[1]+e[2][2]*A[2]]}function o$4(e,A,t){return Math.max(e,Math.min(A,t))}function e$4(e){const[A,t,i]=Object.values(function(e){const[A,t,i]=r$5([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:A,y:t,z:i,a:e.a}}(e)).map((e=>e/100)),[n,s,a]=r$5([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[A,t,i]).map((e=>{return o$4(0,255*((A=e)>.0031308?1.055*Math.pow(A,1/2.4)-.055:12.92*A),255);var A}));return{r:n,g:s,b:a,a:e.a}}t$4.d(n$4,{Z:()=>u$2});const a$4=/color\s*\(\s*xyza?\s*(\d*\.?\d+)\s*,?\s*(\d*\.?\d+)\s*,?\s*(\d*\.?\d+)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function s$4({x:e,y:A,z:t,a:i}){return[e$4({x:o$4(0,e,96.422),y:o$4(0,A,100),z:o$4(0,t,82.521),a:(n=i,void 0!==n?o$4(0,n,1):1)}),"xyz"];var n}function c$4(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{x:A,y:t,z:i}=e;return void 0!==A&&void 0!==t&&void 0!==i}(e))return s$4(e);if("string"==typeof e){a$4.lastIndex=0;const A=a$4.exec(e);if(A){const[e,t,i,n]=A.filter((e=>void 0!==e)).slice(1).map((e=>e.includes("%")?.01*+e.slice(0,-1):+e));return s$4({x:e,y:t,z:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const u$2=e=>{e.prototype.xyza=function(){return function(e){const[A,t,i]=r$5([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(A=e,(A/=255)<.04045?A/12.92:Math.pow((A+.055)/1.055,2.4));var A})));return function(e){const[A,t,i]=r$5([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:A,y:t,z:i,a:e.a}}({x:A,y:t,z:i,a:e.a})}(this.rgba())},e.prototype.stringXYZ=function({alpha:e=!0,precision:A=[0,0,0,1]}={}){const[t,i,n,s]=Object.values(this.xyza()).map(((e,t)=>function(e,A){return+e.toFixed(A>=0?A:0)}(e,A[t])));return e?`color(xyza ${t}, ${i}, ${n}, ${s})`:`color(xyz ${t}, ${i}, ${n})`},e.Parsers.push(c$4)};var i$4=n$4.Z,t$3={d:(e,A)=>{for(var t in A)t$3.o(A,t)&&!t$3.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},n$3={};function r$4(e,A,t){return Math.max(e,Math.min(A,t))}function a$3(e){const A=e%360;return A<0?A+360:A}function o$3(e){const{h:A,a:t}=function(e){var A;const{Cmin:t,Cmax:i,H:n,delta:s}=function(e){const[A,t,i]=Object.values(e).map((e=>e/255)),n=Math.max(A,t,i),s=Math.min(A,t,i),a=n-s;return{Cmin:s,Cmax:n,H:0===a?0:n===A?(t-i)/a%6:n===t?(i-A)/a+2:(A-t)/a+4,delta:a}}(e),a=(i+t)/2,o=0===s?0:s/(1-Math.abs(2*a-1));return{h:a$3(60*n),s:100*o,l:100*a,a:null!==(A=e.a)&&void 0!==A?A:1}}(e),{r:i,g:n,b:s}=e;return{h:A,w:Math.min(i,n,s)/2.55,b:100*(1-Math.max(i,n,s)/255),a:t}}function e$3(e){const{h:A,b:t,w:i,a:n}=e;return function(e){const{h:A,s:t,v:i,a:n}=e,s=i/100,a=s*(t/100),o=a*(1-Math.abs(A/60%2-1)),r=s-a,l=A<60||300<=A&&A<360?a:120<=A&&A<240?0:o,c=240<=A&&A<360?0:60<=A&&A<180?a:o,g=A<120?0:180<=A&&A<300?a:o,[d,u,h]=[l,c,g].map((e=>255*(e+r)));return{r:d,g:u,b:h,a:null!=n?n:1}}({h:A,s:100===t?0:100-i/(100-t)*100,v:100-t,a:n})}t$3.d(n$3,{Z:()=>u$1});const s$3=/hwba?\s*\(\s*([+-]?\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function i$3({h:e,w:A,b:t,a:i}){return[e$3({h:a$3(e),w:r$4(0,A,100),b:r$4(0,t,100),a:(n=i,void 0!==n?r$4(0,n,1):1)}),"hwb"];var n}function c$3(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{h:A,w:t,b:i}=e;return void 0!==A&&void 0!==t&&void 0!==i}(e))return i$3(e);if("string"==typeof e){s$3.lastIndex=0;const A=s$3.exec(e);if(A){const[e,t,i,n]=A.filter((e=>void 0!==e)).slice(1).map(((e,A)=>e.includes("%")?+e.slice(0,-1)*(0===A?3.59:A<3?1:.01):+e));return i$3({h:e,w:t,b:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const u$1=e=>{e.prototype.hwba=function(){return o$3(this.rgba())},e.prototype.stringHWB=function({alpha:e=!0,precision:A=[0,0,0,1]}={}){const[t,i,n,s]=Object.values(this.hwba()).map(((e,t)=>function(e,A){return+e.toFixed(A>=0?A:0)}(e,A[t])));return e?`hwba(${a$3(t)}, ${i}%, ${n}%, ${s})`:`hwb(${a$3(t)}, ${i}%, ${n}%)`},e.Parsers.push(c$3)};var h=n$3.Z,t$2={d:(e,A)=>{for(var t in A)t$2.o(A,t)&&!t$2.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},n$2={};function r$3(e,A,t){return Math.max(e,Math.min(A,t))}function s$2(e){const A=e%360;return A<0?A+360:A}function e$2(e){const{h:A,s:t,v:i,a:n}=e,s=i/100,a=s*(t/100),o=a*(1-Math.abs(A/60%2-1)),r=s-a,l=A<60||300<=A&&A<360?a:120<=A&&A<240?0:o,c=240<=A&&A<360?0:60<=A&&A<180?a:o,g=A<120?0:180<=A&&A<300?a:o,[d,u,h]=[l,c,g].map((e=>255*(e+r)));return{r:d,g:u,b:h,a:null!=n?n:1}}t$2.d(n$2,{Z:()=>c$2});const a$2=/hsva?\s*\(\s*([+-]?\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function o$2({h:e,s:A,v:t,a:i}){return[e$2({h:s$2(e),s:r$3(0,A,100),v:r$3(0,t,100),a:(n=i,void 0!==n?r$3(0,n,1):1)}),"hsv"];var n}function i$2(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{h:A,s:t,v:i}=e;return void 0!==A&&void 0!==t&&void 0!==i}(e))return o$2(e);if("string"==typeof e){a$2.lastIndex=0;const A=a$2.exec(e);if(A){const[e,t,i,n]=A.filter((e=>void 0!==e)).slice(1).map(((e,A)=>e.includes("%")?+e.slice(0,-1)*(0===A?3.59:A<3?1:.01):+e));return o$2({h:e,s:t,v:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const c$2=e=>{e.prototype.hsva=function(){return function(e){var A;const{Cmax:t,H:i,delta:n}=function(e){const[A,t,i]=Object.values(e).map((e=>e/255)),n=Math.max(A,t,i),s=Math.min(A,t,i),a=n-s;return{Cmin:s,Cmax:n,H:0===a?0:n===A?(t-i)/a%6:n===t?(i-A)/a+2:(A-t)/a+4,delta:a}}(e),s=0===n?0:n/t;return{h:s$2(60*i),s:100*s,v:100*t,a:null!==(A=e.a)&&void 0!==A?A:1}}(this.rgba())},e.prototype.stringHSV=function({alpha:e=!0,precision:A=[0,0,0,1]}={}){const[t,i,n,s]=Object.values(this.hsva()).map(((e,t)=>function(e,A){return+e.toFixed(A>=0?A:0)}(e,A[t])));return e?`hsva(${s$2(t)}, ${i}%, ${n}%, ${s})`:`hsv(${s$2(t)}, ${i}%, ${n}%)`},e.Parsers.push(i$2)};var u=n$2.Z,t$1={d:(e,A)=>{for(var t in A)t$1.o(A,t)&&!t$1.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:A[t]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},r$2={};function n$1(e,A,t){return Math.max(e,Math.min(A,t))}function o$1(e){let{r:A,y:t,b:i}=e;const n=Math.min(A,t,i);[A,t,i]=[A,t,i].map((e=>e-n));const s=Math.max(A,t,i);let a=Math.min(t,i);t-=a,i-=a,i&&a&&(i*=2,a*=2),A+=t,a+=t;const o=Math.max(A,a,i);if(o){const e=s/o;[A,a,i]=[A,a,i].map((A=>A*e))}return[A,a,i]=[A,a,i].map((e=>e+n)),{r:A,g:a,b:i,a:e.a}}t$1.d(r$2,{Z:()=>i$1});const a$1=/color\s*\(\s*ryba?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function e$1({r:e,y:A,b:t,a:i}){return[o$1({r:n$1(0,e,255),y:n$1(0,A,255),b:n$1(0,t,255),a:(n=i,void 0!==n?n$1(0,n,1):1)}),"ryb"];var n}function s$1(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{r:A,y:t,b:i}=e;return void 0!==A&&void 0!==t&&void 0!==i}(e))return e$1(e);if("string"==typeof e){a$1.lastIndex=0;const A=a$1.exec(e);if(A){const[e,t,i,n]=A.filter((e=>void 0!==e)).slice(1).map(((e,A)=>e.includes("%")?+e.slice(0,-1)*(A<3?2.55:.01):+e));return e$1({r:e,y:t,b:i,a:n})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const i$1=e=>{e.prototype.ryba=function(){return function(e){let{r:A,g:t,b:i}=e;const n=Math.min(A,t,i);[A,t,i]=[A,t,i].map((e=>e-n));const s=Math.max(A,t,i);let a=Math.min(A,t);A-=a,t-=a,i&&t&&(i/=2,t/=2),a+=t,i+=t;const o=Math.max(A,a,i);if(o){const e=s/o;[A,a,i]=[A,a,i].map((A=>A*e))}return[A,a,i]=[A,a,i].map((e=>e+n)),{r:A,y:a,b:i,a:e.a}}(this.rgba())},e.prototype.stringRYB=function({alpha:e=!0,precision:A=[0,0,0,1]}={}){const[t,i,n,s]=Object.values(this.ryba()).map(((e,t)=>function(e,A){return+e.toFixed(A>=0?A:0)}(e,A[t])));return e?`color(ryba ${t}, ${i}, ${n}, ${s})`:`color(ryb ${t}, ${i}, ${n})`},e.Parsers.push(s$1)};var c$1=r$2.Z,t={d:(e,A)=>{for(var i in A)t.o(A,i)&&!t.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:A[i]})},o:(e,A)=>Object.prototype.hasOwnProperty.call(e,A)},n={};function e(e,A,t){return Math.max(e,Math.min(A,t))}function r$1(e){const{c:A,m:t,y:i,k:n,a:s}=e,[a,o,r]=[A,t,i].map((e=>255*(1-e/100)*(1-n/100)));return{r:a,g:o,b:r,a:s}}t.d(n,{Z:()=>i});const c=/device-cmyka?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?),?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function o({c:A,m:t,y:i,k:n,a:s}){return[r$1({c:e(0,A,100),m:e(0,t,100),y:e(0,i,100),k:e(0,n,100),a:(a=s,void 0!==a?e(0,a,1):1)}),"cmyk"];var a}function a(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{c:A,m:t,y:i,k:n}=e;return void 0!==A&&void 0!==t&&void 0!==i&&void 0!==n}(e))return o(e);if("string"==typeof e){c.lastIndex=0;const A=c.exec(e);if(A){const[e,t,i,n,s]=A.filter((e=>void 0!==e)).slice(1).map(((e,A)=>e.includes("%")?+e.slice(0,-1)*(A<4?1:.01):+e));return o({c:e,m:t,y:i,k:n,a:s})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const i=e=>{e.prototype.cmyka=function(){return function(e){const{r:A,g:t,b:i,a:n}=e,s=1-Math.max(A,t,i)/255,[a,o,r]=1===s?[0,0,0]:[A,t,i].map((e=>100*(1-e/255-s)/(1-s)));return{c:a,m:o,y:r,k:100*s,a:n}}(this.rgba())},e.prototype.stringCMYK=function({alpha:e=!0,precision:A=[0,0,0,0,1]}={}){const[t,i,n,s,a]=Object.values(this.cmyka()).map(((e,t)=>function(e,A){return+e.toFixed(A>=0?A:0)}(e,A[t])));return e?`device-cmyk(${t}, ${i}, ${n}, ${s}, ${a})`:`device-cmyk(${t}, ${i}, ${n}, ${s})`},e.Parsers.push(a)};var s=n.Z;class ExcalidrawScene{constructor(e=[]){this.type="excalidraw",this.version=2,this.source=GITHUB_RELEASES+PLUGIN_VERSION,this.elements=[],this.elements=e}toExJSON(){return Object.assign(Object.assign({},this),{elements:this.elements.map((e=>Object.assign({},e)))})}}var ARRAY_TYPE="undefined"!=typeof Float32Array?Float32Array:Array;function create$1(){var e=new ARRAY_TYPE(16);return ARRAY_TYPE!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function clone(e){var A=new ARRAY_TYPE(16);return A[0]=e[0],A[1]=e[1],A[2]=e[2],A[3]=e[3],A[4]=e[4],A[5]=e[5],A[6]=e[6],A[7]=e[7],A[8]=e[8],A[9]=e[9],A[10]=e[10],A[11]=e[11],A[12]=e[12],A[13]=e[13],A[14]=e[14],A[15]=e[15],A}function fromValues$1(e,A,t,i,n,s,a,o,r,l,c,g,d,u,h,m){var p=new ARRAY_TYPE(16);return p[0]=e,p[1]=A,p[2]=t,p[3]=i,p[4]=n,p[5]=s,p[6]=a,p[7]=o,p[8]=r,p[9]=l,p[10]=c,p[11]=g,p[12]=d,p[13]=u,p[14]=h,p[15]=m,p}function multiply(e,A,t){var i=A[0],n=A[1],s=A[2],a=A[3],o=A[4],r=A[5],l=A[6],c=A[7],g=A[8],d=A[9],u=A[10],h=A[11],m=A[12],p=A[13],w=A[14],B=A[15],E=t[0],k=t[1],f=t[2],C=t[3];return e[0]=E*i+k*o+f*g+C*m,e[1]=E*n+k*r+f*d+C*p,e[2]=E*s+k*l+f*u+C*w,e[3]=E*a+k*c+f*h+C*B,E=t[4],k=t[5],f=t[6],C=t[7],e[4]=E*i+k*o+f*g+C*m,e[5]=E*n+k*r+f*d+C*p,e[6]=E*s+k*l+f*u+C*w,e[7]=E*a+k*c+f*h+C*B,E=t[8],k=t[9],f=t[10],C=t[11],e[8]=E*i+k*o+f*g+C*m,e[9]=E*n+k*r+f*d+C*p,e[10]=E*s+k*l+f*u+C*w,e[11]=E*a+k*c+f*h+C*B,E=t[12],k=t[13],f=t[14],C=t[15],e[12]=E*i+k*o+f*g+C*m,e[13]=E*n+k*r+f*d+C*p,e[14]=E*s+k*l+f*u+C*w,e[15]=E*a+k*c+f*h+C*B,e}function create(){var e=new ARRAY_TYPE(3);return ARRAY_TYPE!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function fromValues(e,A,t){var i=new ARRAY_TYPE(3);return i[0]=e,i[1]=A,i[2]=t,i}function transformMat4(e,A,t){var i=A[0],n=A[1],s=A[2],a=t[3]*i+t[7]*n+t[11]*s+t[15];return a=a||1,e[0]=(t[0]*i+t[4]*n+t[8]*s+t[12])/a,e[1]=(t[1]*i+t[5]*n+t[9]*s+t[13])/a,e[2]=(t[2]*i+t[6]*n+t[10]*s+t[14])/a,e}Math.hypot||(Math.hypot=function(){for(var e=0,A=arguments.length;A--;)e+=arguments[A]*arguments[A];return Math.sqrt(e)}),create();const random=new Random(Date.now()),randomInteger=()=>Math.floor(random.next()*2**31),randomId=()=>nanoid$1();function dimensionsFromPoints(e){const A=e.map((([e])=>e)),t=e.map((([,e])=>e)),i=Math.min(...A),n=Math.min(...t);return[Math.max(...A)-i,Math.max(...t)-n]}function getWindingOrder(e){return e.reduce(((e,[A,t],i,n)=>{const s=n[i+1];return((s?s[0]:0)-A)*((s?s[1]:0)+t)+e}),0)>0?"clockwise":"counterclockwise"}var chroma$1={exports:{}}; +EXPR:/(!)?(\[\[([^|\]]+)\|?([^\]]+)?]]|\[([^\]]*)]\(([^)]*)\))(\{(\d+)\})?/g,getResList:e=>{const t=e.matchAll(REGEX_LINK.EXPR);let n;const r=[];for(;!(n=t.next()).done;)r.push(n);return r},getRes:e=>e.matchAll(REGEX_LINK.EXPR),isTransclusion:e=>!!e.value[1],getLink:e=>e.value[3]?e.value[3]:e.value[6],isWikiLink:e=>!!e.value[3],getAliasOrLink:e=>REGEX_LINK.isWikiLink(e)?e.value[4]?e.value[4]:e.value[3]:e.value[5]?e.value[5]:e.value[6],getWrapLength:(e,t)=>{const n=parseInt(e.value[8]);return isNaN(n)?t>0?t:null:n}},DRAWING_REG=/\n# Drawing\n[^`]*(```json\n)([\s\S]*?)```\n/gm,DRAWING_REG_FALLBACK=/\n# Drawing\n(```json\n)?(.*)(```)?(%%)?/gm,DRAWING_COMPRESSED_REG=/(\n# Drawing\n[^`]*(?:```compressed\-json\n))([\s\S]*?)(```\n)/gm,DRAWING_COMPRESSED_REG_FALLBACK=/(\n# Drawing\n(?:```compressed\-json\n)?)(.*)((```)?(%%)?)/gm,REG_LINKINDEX_HYPERLINK=/^\w+:\/\//,isCompressedMD=e=>null!==e.match(/```compressed\-json\n/gm),getDecompressedScene=e=>{let t,n=e.matchAll(DRAWING_COMPRESSED_REG);return t=n.next(),t.done&&(n=e.matchAll(DRAWING_COMPRESSED_REG_FALLBACK),t=n.next()),t.value&&t.value.length>1?[decompress(t.value[2]),t]:[null,t]},changeThemeOfExcalidrawMD=e=>{const t=isCompressedMD(e);let n=t?getDecompressedScene(e)[0]:e;return n?(isObsidianThemeDark?1===(n.match(/"theme"\s*:\s*"light"\s*,/g)||[]).length&&(n=n.replace(/"theme"\s*:\s*"light"\s*,/,'"theme": "dark",')):1===(n.match(/"theme"\s*:\s*"dark"\s*,/g)||[]).length&&(n=n.replace(/"theme"\s*:\s*"dark"\s*,/,'"theme": "light",')),t?e.replace(DRAWING_COMPRESSED_REG,`$1${compress(n)}$3`):n):e};function getJSON(e){let t,n;if(isCompressedMD(e)){const[t,n]=getDecompressedScene(e);return t?{scene:t.substring(0,t.lastIndexOf("}")+1),pos:n.value.index}:{scene:e,pos:n.value?n.value.index:0}}if(t=e.matchAll(DRAWING_REG),n=t.next(),n.done&&(t=e.matchAll(DRAWING_REG_FALLBACK),n=t.next()),n.value&&n.value.length>1){const e=n.value[2];return{scene:e.substr(0,e.lastIndexOf("}")+1),pos:n.value.index}}return{scene:e,pos:n.value?n.value.index:0}}function getMarkdownDrawingSection(e,t){return t?`# Drawing\n\`\`\`compressed-json\n${compress(e)}\n\`\`\`\n%%`:`# Drawing\n\`\`\`json\n${e}\n\`\`\`\n%%`}const estimateMaxLineLen=(e,t)=>{if(!t||!e)return null;if(e===t)return null;let n=0;const r=e.split("\n");if(1===r.length)return null;for(const e of r){const t=e.trim();t.length>n&&(n=t.length)}return n},wrap=(e,t)=>t?wrapTextAtCharLength(e,t,!1,0):e,RE_TEXTELEMENTS=new RegExp(`^(%%\n)?${MD_TEXTELEMENTS}(?:\n|$)`,"m"),RE_TEXTELEMENTS_FALLBACK_1=new RegExp(`(.*)%%\n${MD_TEXTELEMENTS}(?:\n|$)`,"m"),RE_TEXTELEMENTS_FALLBACK_2=new RegExp(`(.*)${MD_TEXTELEMENTS}(?:\n|$)`,"m"),RE_DRAWING=new RegExp(`(%%\n)?${MD_DRAWING}\n`),getExcalidrawMarkdownHeaderSection=(e,t)=>{let n=e.search(RE_TEXTELEMENTS);if(-1===n){const t=e.match(RE_TEXTELEMENTS_FALLBACK_1);t&&Boolean(t[1])&&(n=t.index+t[1].length)}if(-1===n){const t=e.match(RE_TEXTELEMENTS_FALLBACK_2);t&&Boolean(t[1])&&(n=t.index+t[1].length)}if(-1===n&&(n=e.search(RE_DRAWING)),-1===n)return e.endsWith("\n")?e:e+"\n";let r=updateFrontmatterInString(e.substring(0,n),t);const i=/(^---[\w\W]*?---\n)(!\[\[.*?]]\n(%%\n)?)/m;return r.match(i)&&(r=r.replace(i,"$1")),r.endsWith("\n")?r:r+"\n"};class ExcalidrawData{constructor(e){this.plugin=e,this.textElements=null,this.elementLinks=null,this.scene=null,this.deletedElements=[],this.file=null,this.embeddableTheme="auto",this.autoexportPreference=AutoexportPreference.inherit,this.textMode=TextMode.raw,this.loaded=!1,this.files=null,this.equations=null,this.mermaids=null,this.compatibilityMode=!1,this.textElementCommentedOut=!1,this.selectedElementIds={},this.disableCompression=!1,this.app=e.app,this.files=new Map,this.equations=new Map,this.mermaids=new Map}initializeNonInitializedFields(){var e,t,n;if(!this.scene||!this.scene.elements)return;const r=null!==(e=this.scene.source.split("https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/")[1])&&void 0!==e?e:"1.8.16",i=this.scene.elements;for(const e of i){if("iframe"!==e.type||e.customData||(e.type="embeddable"),e.boundElements){const t=new Map;let n=!1;e.boundElements.forEach((e=>{if("text"===e.type)if(n){const t=i.find((t=>t.id===e.id));t&&(t.containerId=null)}else t.set(e.id,e.type),n=!0;else t.set(e.id,e.type)}));const r=Array.from(t,(([e,t])=>({id:e,type:t})));r.length!==e.boundElements.length&&(e.boundElements=r)}e.boundElementIds&&(e.boundElements||(e.boundElements=[]),e.boundElements=e.boundElements.concat(e.boundElementIds.map((e=>({type:"arrow",id:e})))),delete e.boundElementIds),"text"!==e.type||e.containerId||(e.containerId=null),null===e.x&&(e.x=0),null===e.y&&(e.y=0),null===(null===(t=e.startBinding)||void 0===t?void 0:t.focus)&&(e.startBinding.focus=0),null===(null===(n=e.endBinding)||void 0===n?void 0:n.focus)&&(e.endBinding.focus=0),null===e.fontSize&&(e.fontSize=20)}try{i.filter((e=>"text"===e.type&&e.containerId&&i.some((t=>t.id===e.containerId&&t.boundElements.length>0&&t.boundElements.some((t=>"text"===t.type&&t.id!==e.id&&t.id.length>8)))))).forEach((e=>{try{const t=i.filter((t=>t.id===e.containerId))[0],n=t.boundElements.filter((e=>!("text"===e.type&&!i.some((t=>t.id===e.id)))));t.boundElements=[{id:e.id,type:"text"}].concat(n)}catch(e){}}));const e=!isVersionNewerThanOther(r,"1.8.16");i.filter((e=>e.boundElements&&e.boundElements.length>0)).forEach((t=>{var n;e&&!(null===(n=t.customData)||void 0===n?void 0:n.legacyTextWrap)&&addAppendUpdateCustomData(t,{legacyTextWrap:!0});const r=t.boundElements.filter((e=>i.some((t=>t.id===e.id))));r.length!==t.boundElements.length&&(t.boundElements=r)})),i.filter((e=>"text"===e.type&&e.containerId&&!i.some((t=>t.id===e.containerId)))).forEach((e=>{e.containerId=null}))}catch(e){}}async loadData(e,t,n){var r,i;if(!t)return!1;if(this.loaded=!1,this.selectedElementIds={},this.textElements=new Map,this.elementLinks=new Map,this.file!=t&&(this.files.clear(),this.equations.clear(),this.mermaids.clear()),this.file=t,this.compatibilityMode=!1,this.setShowLinkBrackets(),this.setLinkPrefix(),this.setUrlPrefix(),this.setAutoexportPreferences(),this.setembeddableThemePreference(),this.scene=null,this.plugin.settings.syncExcalidraw){const e=`${t.path.substring(0,t.path.lastIndexOf(".md"))}.excalidraw`,n=this.app.vault.getAbstractFileByPath(e);if(n&&n instanceof obsidian_module.TFile&&n.stat.mtime>t.stat.mtime){const e=await this.app.vault.read(n);this.scene=JSON.parse(e)}}let o=null;if(o=(()=>{const t=getJSON(e);if(-1===t.pos)throw new Error("Excalidraw JSON not found in the file");return this.scene||(this.scene=JSON_parse(t.scene)),t})(),this.deletedElements=this.scene.elements.filter((e=>e.isDeleted)),this.scene.elements=this.scene.elements.filter((e=>!e.isDeleted)),this.scene.files||(this.scene.files={}),hasExportTheme(this.plugin,this.file)?this.scene.appState.theme=getExportTheme(this.plugin,this.file,"light"):this.plugin.settings.matchThemeAlways&&(this.scene.appState.theme=isObsidianThemeDark()?"dark":"light"),null===(i=null===(r=this.scene)||void 0===r?void 0:r.elements)||void 0===i?void 0:i.some((e=>"iframe"===e.type&&!e.customData))){const e=new ConfirmationPrompt(this.plugin,"This file contains embedded frames which will be migrated to a newer version for compatibility with <a href='https://excalidraw.com'>excalidraw.com</a>.<br>🔄 If you're using Obsidian on multiple devices, you may proceed now, but please, before opening this file on your other devices, update Excalidraw on those as well.<br>🔍 More info is available <a href='https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.9.9'>here</a>.<br>🌐 <a href='https://translate.google.com/?sl=en&tl=zh-CN&text=This%20file%20contains%20embedded%20frames%20which%20will%20be%20migrated%20to%20a%20newer%20version%20for%20compatibility%20with%20excalidraw.com.%0A%0AIf%20you%27re%20using%20Obsidian%20on%20multiple%20devices%2C%20you%20may%20proceed%20now%2C%20but%20please%2C%20before%20opening%20this%20file%20on%20your%20other%20devices%2C%20update%20Excalidraw%20on%20those%20as%20well.%0A%0AMore%20info%20is%20available%20here%3A%20https%3A%2F%2Fgithub.com%2Fzsviczian%2Fobsidian-excalidraw-plugin%2Freleases%2Ftag%2F1.9.9%27%3Ehere%3C%2Fa%3E.&op=translate'>Translate</a>.");if(e.contentEl.focus(),!await e.waitForClose)throw new Error("iframe conversion canceled")}this.initializeNonInitializedFields();let a=(e=e.substring(0,o.pos)).search(RE_TEXTELEMENTS);if(-1===a)return await this.setTextMode(n,!1),this.loaded=!0,!0;const s=e.match(new RegExp(`^((%%\n)?${MD_TEXTELEMENTS}(?:\n|$))`,"m"))[0];let l;a+=s.length,e=e.slice(a),this.textElementCommentedOut=s.startsWith("%%\n"),a=0;const c=new Map,T=e.substring(e.indexOf(`${MD_ELEMENTLINKS}\n`)+`${MD_ELEMENTLINKS}\n`.length).matchAll(/^(.{8}):\s*(\[\[[^\]]*]])$/gm);for(;!(l=T.next()).done;)c.set(l.value[1],l.value[2]);const Q=/^%%\*\*\*>>>text element-link:(\[\[[^<*\]]*]])<<<\*\*\*%%/gm;let d=e.matchAll(/\s\^(.{8})[\n]+/g);for(;!(l=d.next()).done;){let t=e.substring(a,l.value.index);const n=l.value[1],r=this.scene.elements.filter((e=>e.id===n))[0];if(r)if("text"!==r.type)r.link!==t&&(r.link=t,r.version++,r.versionNonce++),this.elementLinks.set(n,t);else{const e=estimateMaxLineLen(r.text,r.originalText),i=t.matchAll(Q).next();i.done||(t=t.replace(Q,""),r.link=i.value[1]),c.has(n)&&(r.link=c.get(n),c.delete(n));const o=await this.parse(t);r.rawText=t,this.textElements.set(n,{raw:t,parsed:o.parsed,wrapAt:e}),o.link&&(r.link=o.link),!r||r.rawText&&""!==r.rawText||(r.rawText=t)}a=l.value.index+12}for(const[e,t]of c){const n=this.scene.elements.filter((t=>t.id===e))[0];n&&(n.link=t,n.version++,n.versionNonce++,this.elementLinks.set(e,t))}const u=e.indexOf("# Embedded files\n");if(u>-1){const t=/([\w\d]*):\s*\[\[([^\]]*)]]\s?(\{[^}]*})?\n/gm;for(d=(e=e.substring(u+17)).matchAll(t);!(l=d.next()).done;){const e=new EmbeddedFile(this.plugin,this.file.path,l.value[2],l.value[3]);this.setFile(l.value[1],e)}const n=/([\w\d]*):\s*((?:https?|file|ftps?):\/\/[^\s]*)\n/gm;for(d=e.matchAll(n);!(l=d.next()).done;){const e=new EmbeddedFile(this.plugin,null,l.value[2]);this.setFile(l.value[1],e)}const r=/([\w\d]*):\s*\$\$([\s\S]*?)(\$\$\s*\n)/gm;for(d=e.matchAll(r);!(l=d.next()).done;)this.setEquation(l.value[1],{latex:l.value[2],isLoaded:!1});const i=getMermaidImageElements(this.scene.elements);i.length>0&&!shouldRenderMermaid()?new obsidian_module.Notice("Mermaid images are only supported in Obsidian 1.4.14 and above. Please update Obsidian to see the mermaid images in this drawing. Obsidian mobile 1.4.14 currently only avaiable to Obsidian insiders",5e3):i.forEach((e=>this.setMermaid(e.fileId,{mermaid:getMermaidText(e),isLoaded:!1})))}return this.findNewTextElementsInScene(),this.findNewElementLinksInScene(),await this.setTextMode(n,!0),this.loaded=!0,!0}async loadLegacyData(e,t){return!!t&&(this.loaded=!1,this.selectedElementIds={},this.compatibilityMode=!0,this.file=t,this.textElements=new Map,this.elementLinks=new Map,this.setShowLinkBrackets(),this.setLinkPrefix(),this.setUrlPrefix(),this.setembeddableThemePreference(),this.scene=JSON.parse(e),this.scene.files||(this.scene.files={}),this.initializeNonInitializedFields(),this.plugin.settings.matchThemeAlways&&(this.scene.appState.theme=isObsidianThemeDark()?"dark":"light"),this.files.clear(),this.equations.clear(),this.mermaids.clear(),this.findNewTextElementsInScene(),this.findNewElementLinksInScene(),await this.setTextMode(TextMode.raw,!0),this.loaded=!0,!0)}async setTextMode(e,t=!1){this.scene&&(this.textMode=e,await this.updateSceneTextElements(t))}updateTextElement(e,t,n,r=!1,i){var o;if(r||t!=e.text){const r=_measureText(t,e.fontSize,e.fontFamily,null!==(o=e.lineHeight)&&void 0!==o?o:getDefaultLineHeight(e.fontFamily));e.text=t,e.originalText=n,e.containerId&&"arrow"!==i||(e.width=r.w),e.height=r.h,e.baseline=r.baseline}}async updateSceneTextElements(e=!1){var t,n,r,i;const o=null===(t=this.scene.elements)||void 0===t?void 0:t.filter((e=>"text"===e.type));for(const t of o){const o=getContainerElement(t,this.scene),a=null!==(r=null!==(n=await this.getText(t.id))&&void 0!==n?n:t.originalText)&&void 0!==r?r:t.text,s=null===(i=this.textElements.get(t.id))||void 0===i?void 0:i.wrapAt;try{this.updateTextElement(t,s?wrapText(a,getFontString({fontSize:t.fontSize,fontFamily:t.fontFamily}),getBoundTextMaxWidth(o)):a,a,e,null==o?void 0:o.type)}catch(e){debug({where:"ExcalidrawData.updateSceneTextElements",fn:this.updateSceneTextElements,textElement:t})}}}async getText(e){const t=this.textElements.get(e);return t?this.textMode===TextMode.parsed?(t.parsed||this.textElements.set(e,{raw:t.raw,parsed:(await this.parse(t.raw)).parsed,wrapAt:t.wrapAt}),t.parsed):t.raw:null}findNewElementLinksInScene(){var e;let t=!1;const n=null===(e=this.scene.elements)||void 0===e?void 0:e.filter((e=>"text"!==e.type&&e.link&&e.link.startsWith("[[")&&!this.elementLinks.has(e.id)));if(0===n.length)return t;let r,i=JSON.stringify(this.scene);for(const e of n)r=e.id,e.id.length>8&&(t=!0,r=nanoid(),i=i.replaceAll(e.id,r)),this.elementLinks.set(r,e.link);return this.scene=JSON.parse(i),t}findNewTextElementsInScene(e={}){var t;this.selectedElementIds=e;const n=null===(t=this.scene.elements)||void 0===t?void 0:t.filter((e=>"text"===e.type));let r,i=JSON.stringify(this.scene),o=!1;for(const e of n)if(r=e.id,e.id.length>8){if(o=!0,r=nanoid(),this.selectedElementIds[e.id]&&(delete this.selectedElementIds[e.id],this.selectedElementIds[r]=!0),i=i.replaceAll(e.id,r),this.textElements.has(e.id)){const t=this.textElements.get(e.id);this.textElements.set(r,{raw:t.raw,parsed:t.parsed,wrapAt:t.wrapAt}),this.textElements.delete(e.id)}if(!this.textElements.has(r)){const t=e.rawText&&""!==e.rawText?e.rawText:e.text,n=estimateMaxLineLen(e.text,e.originalText);this.textElements.set(r,{raw:t,parsed:null,wrapAt:n}),this.parseasync(r,t,n)}}else if(!this.textElements.has(e.id)){const t=e.rawText&&""!==e.rawText?e.rawText:e.text,n=estimateMaxLineLen(e.text,e.originalText);this.textElements.set(r,{raw:t,parsed:null,wrapAt:n}),this.parseasync(r,t,n)}return o&&(this.scene=JSON.parse(i)),o}updateElementLinksFromScene(){var e;for(const t of this.elementLinks.keys()){const n=null===(e=this.scene.elements)||void 0===e?void 0:e.filter((e=>"text"!==e.type&&e.id===t&&e.link&&e.link.startsWith("[[")));0===n.length?this.elementLinks.delete(t):this.elementLinks.set(t,n[0].link)}}async updateTextElementsFromScene(){var e,t,n;for(const r of this.textElements.keys()){const i=null===(e=this.scene.elements)||void 0===e?void 0:e.filter((e=>"text"===e.type&&e.id===r));if(0===i.length)this.textElements.delete(r);else{const e=await this.getText(r),o=this.scene.prevTextMode===TextMode.parsed?i[0].rawText:null!==(t=i[0].originalText)&&void 0!==t?t:i[0].text;if(e!==(null!==(n=i[0].originalText)&&void 0!==n?n:i[0].text)){const e=estimateMaxLineLen(i[0].text,i[0].originalText);this.textElements.set(r,{raw:o,parsed:(await this.parse(o)).parsed,wrapAt:e})}}}}async parseasync(e,t,n){this.textElements.set(e,{raw:t,parsed:(await this.parse(t)).parsed,wrapAt:n})}parseLinks(e,t,n){return e.substring(t,n.value.index)+(this.showLinkBrackets?"[[":"")+REGEX_LINK.getAliasOrLink(n)+(this.showLinkBrackets?"]]":"")}async getTransclusion(e){const t=getLinkParts(e,this.file),n=this.app.metadataCache.getFirstLinkpathDest(t.path,this.file.path);return await getTransclusion(t,this.app,n,this.plugin.settings.pageTransclusionCharLimit)}async parse(e){e=this.parseCheckbox(e);let t="",n=null,r=0;const i=REGEX_LINK.getRes(e);let o,a=!1,s=!1;for(e.match(REG_LINKINDEX_HYPERLINK)&&(n=e,s=!0);!(o=i.next()).done;){if(!n){const e=REGEX_LINK.getLink(o);n=e.match(REG_LINKINDEX_HYPERLINK)?e:`[[${e}]]`}if(REGEX_LINK.isTransclusion(o)){let n=this.parseCheckbox((await this.getTransclusion(REGEX_LINK.getLink(o))).contents).replaceAll(/%%[^%]*%%/gm,"");this.plugin.settings.removeTransclusionQuoteSigns&&(n=n.replaceAll(/\n\s*>\s?/gm,"\n")),t+=e.substring(r,o.value.index)+wrapTextAtCharLength(n,REGEX_LINK.getWrapLength(o,this.plugin.settings.wordWrappingDefault),this.plugin.settings.forceWrap)}else{const n=this.parseLinks(e,r,o);if(n&&(t+=n,!s&&!a)){const e=REGEX_LINK.getLink(o);e.match(REG_LINKINDEX_HYPERLINK)?s=!e.startsWith("cmd://"):a=!0}}r=o.value.index+o.value[0].length}return t+=e.substring(r,e.length),a&&(t=this.linkPrefix+t),s&&(t=this.urlPrefix+t),{parsed:t,link:n}}parseCheckbox(e){return this.plugin.settings.parseTODO?e.replaceAll(/^- \[\s] /g,`${this.plugin.settings.todo} `).replaceAll(/\n- \[\s] /g,`\n${this.plugin.settings.todo} `).replaceAll(/^- \[[^\s]] /g,`${this.plugin.settings.done} `).replaceAll(/\n- \[[^\s]] /g,`\n${this.plugin.settings.done} `):e}quickParse(e){if((e=>{const t=REGEX_LINK.getRes(e);let n;for(;!(n=t.next()).done;)if(REGEX_LINK.isTransclusion(n))return!0;return!1})(e))return[null,null];e=this.parseCheckbox(e);let t="",n=null,r=0;const i=REGEX_LINK.getRes(e);let o,a=!1,s=!1;for(e.match(REG_LINKINDEX_HYPERLINK)&&(n=e,s=!0);!(o=i.next()).done;){if(!n){const e=REGEX_LINK.getLink(o);n=e.match(REG_LINKINDEX_HYPERLINK)?e:`[[${e}]]`}const i=this.parseLinks(e,r,o);if(i&&(t+=i,!s&&!a)){const e=REGEX_LINK.getLink(o);e.match(REG_LINKINDEX_HYPERLINK)?s=!e.startsWith("cmd://"):a=!0}r=o.value.index+o.value[0].length}return t+=e.substring(r,e.length),a&&(t=this.linkPrefix+t),s&&(t=this.urlPrefix+t),[t,n]}generateMD(e=[]){let t=this.textElementCommentedOut?"%%\n":"";t+=`${MD_TEXTELEMENTS}\n`;const n=new Map;for(const e of this.textElements.keys()){const r=this.scene.elements.filter((t=>t.id===e));let i=this.textElements.get(e).raw;r&&1===r.length&&r[0].link&&r[0].rawText===r[0].originalText&&r[0].link.match(/^\[\[[^\]]*]]$/g)&&n.set(e,r[0].link),t+=`${i} ^${e}\n\n`}if(this.elementLinks.size>0||n.size>0){t+=`${MD_ELEMENTLINKS}\n`;for(const e of this.elementLinks.keys())t+=`${e}: ${this.elementLinks.get(e)}\n`;for(const e of n.keys())t+=`${e}: ${n.get(e)}\n`;t+="\n"}if(t+=this.equations.size>0||this.files.size>0?"# Embedded files\n":"",this.equations.size>0)for(const e of this.equations.keys())t+=`${e}: $$${this.equations.get(e).latex}$$\n`;if(this.files.size>0)for(const e of this.files.keys()){const n=/(^[^#\|]*)/,r=this.files.get(e);r.isHyperLink||r.isLocalLink?t+=`${e}: ${r.hyperlink}\n`:t+=`${e}: [[${r.file?r.linkParts.original.replace(n,this.app.metadataCache.fileToLinktext(r.file,this.file.path)):r.linkParts.original}]]${r.colorMap?" "+JSON.stringify(r.colorMap):""}\n`}t+=this.equations.size>0||this.files.size>0?"\n":"";const r=JSON.stringify({type:this.scene.type,version:this.scene.version,source:this.scene.source,elements:this.scene.elements.concat(e),appState:this.scene.appState,files:this.scene.files},null,"\t");return t+(this.textElementCommentedOut?"":"%%\n")+getMarkdownDrawingSection(r,!this.disableCompression&&this.plugin.settings.compress)}async saveDataURLtoVault(e,t,n){var r;const i=this.scene;let o=`Pasted Image ${window.moment().format("YYYYMMDDHHmmss_SSS")}`;switch(t){case"image/png":default:o+=".png";break;case"image/jpeg":o+=".jpg";break;case"image/svg+xml":o+=".svg";break;case"image/gif":o+=".gif"}const a=(await getAttachmentsFolderAndFilePath(this.app,this.file.path,o)).filepath,s=await getBinaryFileFromDataURL(e);if(!s)return null;const l=await this.app.vault.createBinary(a,s),c=new EmbeddedFile(this.plugin,this.file.path,a);return c.setImage(e,t,{height:0,width:0},"dark"===(null===(r=i.appState)||void 0===r?void 0:r.theme),"image/svg+xml"===t),this.setFile(n,c),l}async syncFiles(){let e=!1;const t=this.scene,n=t.elements.filter((e=>"image"===e.type)),r=n.map((e=>e.fileId));if(this.files.forEach(((t,n)=>{r.contains(n)||(this.files.delete(n),e=!0)})),this.equations.forEach(((t,n)=>{r.contains(n)||(this.equations.delete(n),e=!0)})),this.mermaids.forEach(((t,n)=>{r.contains(n)||(this.mermaids.delete(n),e=!0)})),!t.files||0===Object.keys(t.files).length)return!1;const i=new Set;r.forEach(((r,o)=>{if(i.has(r)){const a=this.getFile(r),s=this.getEquation(r),l=this.getMermaid(r);if(a&&(a.isHyperLink||a.isLocalLink||a.file&&("md"!==a.file.extension||this.plugin.isExcalidrawFile(a.file))))return;if(l)return;if(getMermaidText(n[o]))return void this.setMermaid(r,{mermaid:getMermaidText(n[o]),isLoaded:!0});const c=fileid();t.elements.filter((e=>e.fileId===r)).sort(((e,t)=>e.updated<t.updated?1:-1))[0].fileId=c,e=!0,i.add(c),a&&this.setFile(c,new EmbeddedFile(this.plugin,this.file.path,a.linkParts.original)),s&&this.setEquation(c,{latex:s.latex,isLoaded:!1})}i.add(r)}));for(const n of Object.keys(t.files)){const r=getMermaidImageElements(t.elements.filter((e=>e.fileId===n)));this.hasFile(n)||this.hasEquation(n)||this.hasMermaid(n)||r.length>0||(e=!0,await this.saveDataURLtoVault(t.files[n].dataURL,t.files[n].mimeType,n))}return e}async syncElements(e,t){this.scene=e;let n=!1;return this.compatibilityMode||(n=await this.syncFiles(),this.scene.files={}),this.updateElementLinksFromScene(),n=n||this.setLinkPrefix()||this.setUrlPrefix()||this.setShowLinkBrackets()||this.findNewElementLinksInScene(),await this.updateTextElementsFromScene(),n||this.findNewTextElementsInScene(t)}async updateScene(e){this.scene=JSON_parse(e),this.updateElementLinksFromScene();const t=this.setLinkPrefix()||this.setUrlPrefix()||this.setShowLinkBrackets()||this.setembeddableThemePreference()||this.findNewElementLinksInScene();return await this.updateTextElementsFromScene(),!(!t&&!this.findNewTextElementsInScene()||(await this.updateSceneTextElements(),0))}getRawText(e){var t;return null===(t=this.textElements.get(e))||void 0===t?void 0:t.raw}getParsedText(e){const t=this.textElements.get(e);return t?[wrap(t.parsed,t.wrapAt),t.parsed,null]:[null,null,null]}setTextElement(e,t,n,r){const i=estimateMaxLineLen(t,n),[o,a]=this.quickParse(n);return o?(this.textElements.set(e,{raw:n,parsed:o,wrapAt:i}),[wrap(o,i),o,a]):(this.parse(n).then((t=>{const o=t.parsed;this.textElements.set(e,{raw:n,parsed:o,wrapAt:i}),o&&r(wrap(o,i),o)})),[null,null,null])}async addTextElement(e,t,n){let r=estimateMaxLineLen(t,n);this.textElements.has(e)&&(r=this.textElements.get(e).wrapAt);const i=await this.parse(n);return this.textElements.set(e,{raw:n,parsed:i.parsed,wrapAt:r}),[wrap(i.parsed,r),i.parsed,i.link]}deleteTextElement(e){this.textElements.delete(e)}getOpenMode(){const e=this.app.metadataCache.getFileCache(this.file);let t="view-mobile"===this.plugin.settings.defaultMode?DEVICE.isPhone?"view":"normal":this.plugin.settings.defaultMode;switch((null==e?void 0:e.frontmatter)&&null!=e.frontmatter[FRONTMATTER_KEYS["default-mode"].name]&&(t=e.frontmatter[FRONTMATTER_KEYS["default-mode"].name]),t){case"zen":return{viewModeEnabled:!1,zenModeEnabled:!0};case"view":return{viewModeEnabled:!0,zenModeEnabled:!1};default:return{viewModeEnabled:!1,zenModeEnabled:!1}}}getLinkOpacity(){const e=this.app.metadataCache.getFileCache(this.file);let t=this.plugin.settings.linkOpacity;return(null==e?void 0:e.frontmatter)&&null!=e.frontmatter[FRONTMATTER_KEYS["linkbutton-opacity"].name]&&(t=e.frontmatter[FRONTMATTER_KEYS["linkbutton-opacity"].name]),t}getOnLoadScript(){const e=this.app.metadataCache.getFileCache(this.file);return(null==e?void 0:e.frontmatter)&&null!=e.frontmatter[FRONTMATTER_KEYS["onload-script"].name]?e.frontmatter[FRONTMATTER_KEYS["onload-script"].name]:null}setLinkPrefix(){const e=this.linkPrefix,t=this.app.metadataCache.getFileCache(this.file);return(null==t?void 0:t.frontmatter)&&null!=t.frontmatter[FRONTMATTER_KEYS["link-prefix"].name]?this.linkPrefix=t.frontmatter[FRONTMATTER_KEYS["link-prefix"].name]:this.linkPrefix=this.plugin.settings.linkPrefix,e!=this.linkPrefix}setUrlPrefix(){const e=this.urlPrefix,t=this.app.metadataCache.getFileCache(this.file);return(null==t?void 0:t.frontmatter)&&null!=t.frontmatter[FRONTMATTER_KEYS["url-prefix"].name]?this.urlPrefix=t.frontmatter[FRONTMATTER_KEYS["url-prefix"].name]:this.urlPrefix=this.plugin.settings.urlPrefix,e!=this.urlPrefix}setAutoexportPreferences(){const e=this.app.metadataCache.getFileCache(this.file);if((null==e?void 0:e.frontmatter)&&null!=e.frontmatter[FRONTMATTER_KEYS.autoexport.name])switch(e.frontmatter[FRONTMATTER_KEYS.autoexport.name].toLowerCase()){case"none":this.autoexportPreference=AutoexportPreference.none;break;case"both":this.autoexportPreference=AutoexportPreference.both;break;case"png":this.autoexportPreference=AutoexportPreference.png;break;case"svg":this.autoexportPreference=AutoexportPreference.svg;break;default:this.autoexportPreference=AutoexportPreference.inherit}else this.autoexportPreference=AutoexportPreference.inherit}setembeddableThemePreference(){const e=this.embeddableTheme,t=this.app.metadataCache.getFileCache(this.file);return(null==t?void 0:t.frontmatter)&&null!=t.frontmatter[FRONTMATTER_KEYS["iframe-theme"].name]?(this.embeddableTheme=t.frontmatter[FRONTMATTER_KEYS["iframe-theme"].name].toLowerCase(),EMBEDDABLE_THEME_FRONTMATTER_VALUES.includes(this.embeddableTheme)||(this.embeddableTheme="default")):this.embeddableTheme=this.plugin.settings.iframeMatchExcalidrawTheme?"auto":"default",e!=this.embeddableTheme}setShowLinkBrackets(){const e=this.showLinkBrackets,t=this.app.metadataCache.getFileCache(this.file);return(null==t?void 0:t.frontmatter)&&null!=t.frontmatter[FRONTMATTER_KEYS["link-brackets"].name]?this.showLinkBrackets=0!=t.frontmatter[FRONTMATTER_KEYS["link-brackets"].name]:this.showLinkBrackets=this.plugin.settings.showLinkBrackets,e!=this.showLinkBrackets}setFile(e,t){if(!t)return;if(this.files.set(e,t),t.isHyperLink||t.isLocalLink)return void this.plugin.filesMaster.set(e,{isHyperLink:t.isHyperLink,isLocalLink:t.isLocalLink,path:t.hyperlink,blockrefData:null,hasSVGwithBitmap:t.isSVGwithBitmap});if(!t.file)return;const n=t.linkParts.original.split("#");this.plugin.filesMaster.set(e,{isHyperLink:!1,isLocalLink:!1,path:t.file.path+(t.shouldScale()?"":"|100%"),blockrefData:1===n.length?null:n[1],hasSVGwithBitmap:t.isSVGwithBitmap,colorMapJSON:t.colorMap?JSON.stringify(t.colorMap):null})}getFiles(){return Object.values(this.files)}getFile(e){let t=this.files.get(e);if(t)return t;const n=this.plugin.filesMaster.get(e);return n?(t=new EmbeddedFile(this.plugin,this.file.path,n.blockrefData?n.path+"#"+n.blockrefData:n.path),this.files.set(e,t),t):t}getFileEntries(){return this.files.entries()}deleteFile(e){this.files.delete(e)}hasFile(e){if(this.files.has(e))return!0;if(this.plugin.filesMaster.has(e)){const t=this.plugin.filesMaster.get(e);if(t.isHyperLink||t.isLocalLink)return this.files.set(e,new EmbeddedFile(this.plugin,this.file.path,t.path)),!0;const n=t.path.split("|")[0].split("#")[0];if(!this.app.vault.getAbstractFileByPath(n))return this.plugin.filesMaster.delete(e),!0;const r=t.path.endsWith("100%"),i=new EmbeddedFile(this.plugin,this.file.path,(t.blockrefData?n+"#"+t.blockrefData:n)+(r?"|100%":""),t.colorMapJSON);return this.files.set(e,i),!0}return!1}setEquation(e,t){this.equations.set(e,{latex:t.latex,isLoaded:t.isLoaded}),this.plugin.equationsMaster.set(e,t.latex)}getEquation(e){let t=this.equations.get(e);if(t)return t;const n=this.plugin.equationsMaster.get(e);return n?(this.equations.set(e,{latex:n,isLoaded:!1}),{latex:n,isLoaded:!1}):t}getEquationEntries(){return this.equations.entries()}deleteEquation(e){this.equations.delete(e)}hasEquation(e){return!!this.equations.has(e)||!!this.plugin.equationsMaster.has(e)&&(this.equations.set(e,{latex:this.plugin.equationsMaster.get(e),isLoaded:!1}),!0)}setMermaid(e,t){this.mermaids.set(e,{mermaid:t.mermaid,isLoaded:t.isLoaded}),this.plugin.mermaidsMaster.set(e,t.mermaid)}getMermaid(e){let t=this.mermaids.get(e);if(t)return t;const n=this.plugin.mermaidsMaster.get(e);return n?(this.mermaids.set(e,{mermaid:n,isLoaded:!1}),{mermaid:n,isLoaded:!1}):t}getMermaidEntries(){return this.mermaids.entries()}deleteMermaid(e){this.mermaids.delete(e)}hasMermaid(e){return!!this.mermaids.has(e)||!!this.plugin.mermaidsMaster.has(e)&&(this.mermaids.set(e,{mermaid:this.plugin.mermaidsMaster.get(e),isLoaded:!1}),!0)}}const getTransclusion=async(e,t,n,r)=>{var i,o,a,s,l,c,T;if(!e.path)return{contents:e.original.trim(),lineNum:0};if(!(n&&n instanceof obsidian_module.TFile))return{contents:e.original.trim(),lineNum:0};const Q=await t.vault.read(n);if(!e.ref)return r?{contents:Q.substring(0,r).trim(),lineNum:0}:{contents:Q.trim(),lineNum:0};const d=(await t.metadataCache.blockCache.getForFile({isCancelled:()=>!1},n)).blocks.filter((e=>"comment"!=e.node.type));if(!d)return{contents:e.original.trim(),lineNum:0};if(e.isBlockRef){let t=null===(i=d.filter((t=>t.node.id==e.ref))[0])||void 0===i?void 0:i.node;if(!t)return{contents:e.original.trim(),lineNum:0};["blockquote"].includes(t.type)&&(t=t.children[0]);const n=t.position.start.offset,r=t.position.start.line,o=t.position.end.offset;return{contents:Q.substring(n,o).replaceAll(/ \^\S*$|^\^\S*$/gm,"").trim(),lineNum:r}}const u=d.filter((e=>0===e.display.search(/^#+\s/)));let p=null,h=0,m=null,f=1;for(let t=0;t<u.length;t++){if(p&&!m){let e=t;for(;e<u.length&&u[e].node.depth>f;)e++;return e===u.length&&u[e-1].node.depth>f?{leadingHashes:"#".repeat(f)+" ",contents:Q.substring(p).trim(),lineNum:h}:(m=u[e].node.position.start.offset-1,{leadingHashes:"#".repeat(f)+" ",contents:Q.substring(p,m).trim(),lineNum:h})}const n=u[t].node.children[0],r=null===(a=null===(o=u[t].node.data)||void 0===o?void 0:o.hProperties)||void 0===a?void 0:a.dataHeading,i=null==n?void 0:n.children;!p&&(cleanBlockRef(null==n?void 0:n.value)===e.ref||cleanBlockRef(null==n?void 0:n.title)===e.ref||cleanBlockRef(r)===e.ref||i&&cleanBlockRef(null===(s=i[0])||void 0===s?void 0:s.value)===e.ref||cleanSectionHeading(null==n?void 0:n.value)===e.ref||cleanSectionHeading(null==n?void 0:n.title)===e.ref||cleanSectionHeading(r)===e.ref||i&&cleanSectionHeading(null===(l=i[0])||void 0===l?void 0:l.value)===e.ref)&&(p=null===(c=u[t].node.children[0])||void 0===c?void 0:c.position.start.offset,f=u[t].node.depth,h=null===(T=u[t].node.children[0])||void 0===T?void 0:T.position.start.line)}return p?{leadingHashes:"#".repeat(f)+" ",contents:Q.substring(p).trim(),lineNum:h}:{contents:e.original.trim(),lineNum:0}};var t$c={d:(e,t)=>{for(var n in t)t$c.o(t,n)&&!t$c.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},r$e={};t$c.d(r$e,{QA:()=>w$1,ZP:()=>j$1,qt:()=>x$1,MX:()=>$});const e$d={red:"hsl(0, 100%, 50%)",orange:"hsl(30, 100%, 50%)",yellow:"hsl(60, 100%, 50%)","lime green":"hsl(90, 100%, 50%)",green:"hsl(120, 100%, 50%)","blue green":"hsl(150, 100%, 50%)",cyan:"hsl(180, 100%, 50%)","sky blue":"hsl(210, 100%, 50%)",blue:"hsl(240, 100%, 50%)",purple:"hsl(270, 100%, 50%)",magenta:"hsl(300, 100%, 50%)",pink:"hsl(330, 100%, 50%)"};function s$a(e,t,n){return Math.max(e,Math.min(t,n))}function n$c(e,t){return+e.toFixed(t>=0?t:0)}function a$c(e){const t=e%360;return t<0?t+360:t}function i$a(e){return void 0!==e?s$a(0,e,1):1}function o$b(e){return Math.floor(Math.random()*e)}function h$4(e){var t;const{Cmin:n,Cmax:r,H:i,delta:o}=function(e){const[t,n,r]=Object.values(e).map((e=>e/255)),i=Math.max(t,n,r),o=Math.min(t,n,r),a=i-o;return{Cmin:o,Cmax:i,H:0===a?0:i===t?(n-r)/a%6:i===n?(r-t)/a+2:(t-n)/a+4,delta:a}}(e),a=(r+n)/2,s=0===o?0:o/(1-Math.abs(2*a-1));return{h:a$c(60*i),s:100*s,l:100*a,a:null!==(t=e.a)&&void 0!==t?t:1}}function u$8(e){const{h:t,s:n,l:r,a:i}=e,o=r/100,a=n/100,s=(1-Math.abs(2*o-1))*a,l=s*(1-Math.abs(t/60%2-1)),c=o-s/2,T=t<60||300<=t&&t<360?s:120<=t&&t<240?0:l,Q=240<=t&&t<360?0:60<=t&&t<180?s:l,d=t<120?0:180<=t&&t<300?s:l,[u,p,h]=[T,Q,d].map((e=>255*(e+c)));return{r:u,g:p,b:h,a:null!=i?i:1}}function l$5(e){const[t,n,r,i]=Object.values(e).map((e=>parseInt(e,16)));return{r:t,g:n,b:r,a:i?i/255:1}}const c$a=/^#?([\da-f])([\da-f])([\da-f])([\da-f])?$|^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})?([\da-f]{2})?$/gi,f$3=/hsla?\s*\(\s*([+-]?\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function d$2({h:e,s:t,l:n,a:r}){return[u$8({h:a$c(e),s:s$a(0,t,100),l:s$a(0,n,100),a:i$a(r)}),"hsl"]}const g$2=/rgba?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function b$5({r:e,g:t,b:n,a:r}){return[{r:s$a(0,e,255),g:s$a(0,t,255),b:s$a(0,n,255),a:i$a(r)},"rgb"]}var p$3,v$2,m$1=function(e,t,n,r,i){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?i.call(e,n):i?i.value=n:t.set(e,n),n},y$1=function(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)};class w$1{constructor(e){var t,n;p$3.set(this,{r:0,g:0,b:0,a:1}),v$2.set(this,"rgb");const r=w$1.Parsers.map((t=>t(e))).find((e=>"invalid"!==e[1]));r?(t=this,n=this,[{set value(e){m$1(t,p$3,e,"f")}}.value,{set value(e){m$1(n,v$2,e,"f")}}.value]=r):m$1(this,v$2,"invalid","f")}get red(){return y$1(this,p$3,"f").r}get blue(){return y$1(this,p$3,"f").b}get green(){return y$1(this,p$3,"f").g}get alpha(){return y$1(this,p$3,"f").a}get hue(){return h$4(y$1(this,p$3,"f")).h}get saturation(){return h$4(y$1(this,p$3,"f")).s}get lightness(){return h$4(y$1(this,p$3,"f")).l}get format(){return y$1(this,v$2,"f")}isValid(){return"invalid"!==y$1(this,v$2,"f")}rgba(){return y$1(this,p$3,"f")}hsla(){return h$4(y$1(this,p$3,"f"))}hexa({round:e=!1}={}){return function(e,t=!1){let{r:n,g:r,b:i,a:o}=e;o&&(o*=255),t&&([n,r,i,o]=[n,r,i,o].map((e=>e&&Math.round(e))));const[a,s,l,c]=[n,r,i,null!=o?o:255].map((e=>e.toString(16).padStart(2,"0").toUpperCase()));return{r:a,g:s,b:l,a:c}}(y$1(this,p$3,"f"),e)}stringRGB({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[n,r,i,o]=Object.values(y$1(this,p$3,"f")).map(((e,n)=>n$c(e,t[n])));return e?`rgba(${n}, ${r}, ${i}, ${o})`:`rgb(${n}, ${r}, ${i})`}stringHEX({alpha:e=!0}={}){const[t,n,r,i]=Object.values(this.hexa({round:!0}));return`#${t}${n}${r}${e?i:""}`}stringHSL({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[n,r,i,o]=Object.values(this.hsla()).map(((e,n)=>n$c(e,t[n])));return e?`hsla(${n}, ${r}%, ${i}%, ${o})`:`hsl(${n}, ${r}%, ${i}%)`}hueTo(e){var t;const{h:n,s:r,l:i,a:o}=this.hsla(),a="number"==typeof e?a$c(e):Number(null!==(t=e$d[e].match(/\d{1,3}/))&&void 0!==t?t:n);return m$1(this,p$3,u$8({h:a,s:r,l:i,a:o}),"f"),this}hueBy(e){const{h:t,s:n,l:r,a:i}=this.hsla();return m$1(this,p$3,u$8({h:a$c(t+e),s:n,l:r,a:i}),"f"),this}saturationTo(e){const{h:t,l:n,a:r}=this.hsla();return m$1(this,p$3,u$8({h:t,s:s$a(0,e,100),l:n,a:r}),"f"),this}saturateBy(e){const{h:t,s:n,l:r,a:i}=this.hsla();return m$1(this,p$3,u$8({h:t,s:s$a(0,n+e,100),l:r,a:i}),"f"),this}desaturateBy(e){return this.saturateBy(-1*e)}lightnessTo(e){const{h:t,s:n,a:r}=this.hsla();return m$1(this,p$3,u$8({h:t,s:n,l:s$a(0,e,100),a:r}),"f"),this}lighterBy(e){const{h:t,s:n,l:r,a:i}=this.hsla();return m$1(this,p$3,u$8({h:t,s:n,l:s$a(0,r+e,100),a:i}),"f"),this}darkerBy(e){return this.lighterBy(-1*e)}alphaTo(e){return m$1(this,p$3,Object.assign(Object.assign({},y$1(this,p$3,"f")),{a:s$a(0,e,1)}),"f"),this}alphaBy(e){return m$1(this,p$3,Object.assign(Object.assign({},y$1(this,p$3,"f")),{a:s$a(0,y$1(this,p$3,"f").a+e,1)}),"f"),this}invert({alpha:e=!1}={}){const{r:t,g:n,b:r,a:i}=y$1(this,p$3,"f");return m$1(this,p$3,{r:255-t,g:255-n,b:255-r,a:e?1-i:i},"f"),this}grayscale(){return this.desaturateBy(100)}rotate(e){return this.hueBy(e)}}function $(){return new w$1({r:o$b(255),g:o$b(255),b:o$b(255),a:Math.random()})}function x$1(e){(e=e.filter(((e,t,n)=>n.indexOf(e)===t))).forEach((e=>e(w$1)))}p$3=new WeakMap,v$2=new WeakMap,w$1.Parsers=[function(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{r:t,g:n,b:r}=e;return void 0!==t&&void 0!==n&&void 0!==r&&"number"==typeof t}(e))return b$5(e);if("string"==typeof e){g$2.lastIndex=0;const t=g$2.exec(e);if(t){const[e,n,r,i]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(t<3?2.55:.01):+e));return b$5({r:e,g:n,b:r,a:i})}}return[{r:0,g:0,b:0,a:1},"invalid"]},function(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{r:t,g:n,b:r}=e;return void 0!==t&&void 0!==n&&void 0!==r&&"string"==typeof t}(e))return[l$5(e),"hex"];if("string"==typeof e){c$a.lastIndex=0;const t=c$a.exec(e);if(t){const[e,n,r,i]=t.filter((e=>void 0!==e)).slice(1).map((e=>1===e.length?e.repeat(2):e));return[l$5({r:e,g:n,b:r,a:null!=i?i:"FF"}),"hex"]}}return[{r:0,g:0,b:0,a:1},"invalid"]},function(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{h:t,s:n,l:r}=e;return void 0!==t&&void 0!==n&&void 0!==r}(e))return d$2(e);if("string"==typeof e){f$3.lastIndex=0;const t=f$3.exec(e);if(t){const[e,n,r,i]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(0===t?3.59:t<3?1:.01):+e));return d$2({h:e,s:n,l:r,a:i})}}return[{r:0,g:0,b:0,a:1},"invalid"]}];const j$1=e=>new w$1(e);r$e.QA;var O$1=r$e.ZP,B=r$e.qt;r$e.MX;var e$c={d:(e,t)=>{for(var n in t)e$c.o(t,n)&&!e$c.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},a$b={};function t$b(e){const t=e%360;return t<0?t+360:t}e$c.d(a$b,{Z:()=>n$b});const n$b=e=>{e.prototype.harmony=function({type:t="analogous",effect:n="tones",amount:r=5}={}){const{h:i,s:o,l:a,a:s}=this.hsla();switch("monochromatic"===t&&(l=r,r=Math.max(2,Math.min(l,10))),t){case"analogous":return[-30,0,30].map((t=>new e({h:t$b(i+t),s:o,l:a,a:s})));case"complementary":return[0,180].map((t=>new e({h:t$b(i+t),s:o,l:a,a:s})));case"split-complementary":return[0,150,210].map((t=>new e({h:t$b(i+t),s:o,l:a,a:s})));case"double-split-complementary":return[-30,0,30,150,210].map((t=>new e({h:t$b(i+t),s:o,l:a,a:s})));case"triad":return[0,120,240].map((t=>new e({h:t$b(i+t),s:o,l:a,a:s})));case"rectangle":return[0,60,180,240].map((t=>new e({h:t$b(i+t),s:o,l:a,a:s})));case"square":return[0,90,180,270].map((t=>new e({h:t$b(i+t),s:o,l:a,a:s})));case"monochromatic":{const t="tones"===n?o:a;let l=("tints"===n?100-t:t)/r;l="tints"===n?l:-1*l;const c=[t];for(let e=0;e<r;e++)c.push(c[e]+l);return"tones"===n?c.map((t=>new e({h:i,s:t,l:a,a:s}))):c.map((t=>new e({h:i,s:o,l:t,a:s})))}}var l}};var r$d=a$b.Z,a$a={d:(e,t)=>{for(var n in t)a$a.o(t,n)&&!a$a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t$a={};a$a.d(t$a,{Z:()=>k});const e$b=6/29,n$a=Math.pow(e$b,3),c$9=Math.pow(29/3,3),r$c={x:.96422,y:1,z:.82521};function u$7(e,t){return[e[0][0]*t[0]+e[0][1]*t[1]+e[0][2]*t[2],e[1][0]*t[0]+e[1][1]*t[1]+e[1][2]*t[2],e[2][0]*t[0]+e[2][1]*t[1]+e[2][2]*t[2]]}function s$9(e,t,n){return Math.max(e,Math.min(t,n))}function o$a(e){const t=e%360;return t<0?t+360:t}function l$4(e){const[t,n,r]=Object.values(e).map((e=>e/255)),i=Math.max(t,n,r),o=Math.min(t,n,r),a=i-o;return{Cmin:o,Cmax:i,H:0===a?0:i===t?(n-r)/a%6:i===n?(r-t)/a+2:(t-n)/a+4,delta:a}}function b$4(e){var t;const{Cmin:n,Cmax:r,H:i,delta:o}=l$4(e),a=(r+n)/2,s=0===o?0:o/(1-Math.abs(2*a-1));return{h:o$a(60*i),s:100*s,l:100*a,a:null!==(t=e.a)&&void 0!==t?t:1}}function h$3(e){var t;const{Cmax:n,H:r,delta:i}=l$4(e),o=0===i?0:i/n;return{h:o$a(60*r),s:100*o,v:100*n,a:null!==(t=e.a)&&void 0!==t?t:1}}function v$1(e){const{h:t,a:n}=b$4(e),{r:r,g:i,b:o}=e;return{h:t,w:Math.min(r,i,o)/2.55,b:100*(1-Math.max(r,i,o)/255),a:n}}function i$9(e){const[t,n,r]=u$7([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(t=e,(t/=255)<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4));var t})));return function(e){const[t,n,r]=u$7([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:t,y:n,z:r,a:e.a}}({x:t,y:n,z:r,a:e.a})}function m(e){const t=Object.values(i$9(e)).map(((e,t)=>e/(100*Object.values(r$c)[t]))).map((e=>e>n$a?Math.cbrt(e):(c$9*e+16)/116));return{l:116*t[1]-16,a:500*(t[0]-t[1]),b:200*(t[1]-t[2]),alpha:e.a}}function p$2(e){const{l:t,a:n,b:r}=m(e),i=180*Math.atan2(r,n)/Math.PI;return{l:t,c:Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),h:o$a(i),a:e.a}}function f$2(e){const[t,n,r]=Object.values(i$9(e)).map((e=>e/100)),i=n/r$c.y,o=t&&n&&r?t+15*n+3*r:19,a=4*t/o,s=9*n/o,l=r$c.x+15*r$c.y+3*r$c.z,c=4*r$c.x/l,T=9*r$c.y/l;let Q=i>n$a?116*Math.cbrt(i)-16:c$9*i,d=13*Q*(a-c),u=13*Q*(s-T);return Q===Number(-0)&&(Q=0),d===Number(-0)&&(d=0),u===Number(-0)&&(u=0),{l:Q,u:d,v:u,a:e.a}}function M(e){const{x:t,y:n,z:r}=i$9(e),[i,o,a]=u$7([[2/3,0,0],[0,1,0],[-.5,1.5,.5]],[t,n,r]);return{u:i,v:o,w:a,a:e.a}}function w(e){let{r:t,g:n,b:r}=e;const i=Math.min(t,n,r);[t,n,r]=[t,n,r].map((e=>e-i));const o=Math.max(t,n,r);let a=Math.min(t,n);t-=a,n-=a,r&&n&&(r/=2,n/=2),a+=n,r+=n;const s=Math.max(t,a,r);if(s){const e=o/s;[t,a,r]=[t,a,r].map((t=>t*e))}return[t,a,r]=[t,a,r].map((e=>e+i)),{r:t,y:a,b:r,a:e.a}}function O(e){const{r:t,g:n,b:r,a:i}=e,o=1-Math.max(t,n,r)/255,[a,s,l]=1===o?[0,0,0]:[t,n,r].map((e=>100*(1-e/255-o)/(1-o)));return{c:a,m:s,y:l,k:100*o,a:i}}function j(e){const{h:t,s:n,v:r,a:i}=e,o=r/100,a=o*(n/100),s=a*(1-Math.abs(t/60%2-1)),l=o-a,c=t<60||300<=t&&t<360?a:120<=t&&t<240?0:s,T=240<=t&&t<360?0:60<=t&&t<180?a:s,Q=t<120?0:180<=t&&t<300?a:s,[d,u,p]=[c,T,Q].map((e=>255*(e+l)));return{r:d,g:u,b:p,a:null!=i?i:1}}function x(e){const[t,n,r]=Object.values(function(e){const[t,n,r]=u$7([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:t,y:n,z:r,a:e.a}}(e)).map((e=>e/100)),[i,o,a]=u$7([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[t,n,r]).map((e=>{return s$9(0,255*((t=e)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t),255);var t}));return{r:i,g:o,b:a,a:e.a}}function y(e){const{l:t,a:n,b:r}=e,i=(t+16)/116,o=i+n/500,a=i-r/200,s=Object.values(r$c),[l,c,T]=[o,i,a].map(((e,t)=>(e>e$b?Math.pow(e,3):3*Math.pow(e$b,2)*(e-4/29))*s[t]*100));return x({x:l,y:c,z:T,a:e.alpha})}const k=e=>{e.prototype.mix=function({color:t="#fff",ratio:n=.5,colorspace:r="luv"}={}){const i=this.rgba(),o=(t instanceof e?t:new e(t)).rgba();let a,s;switch(n=s$9(0,n,1),r){case"hsl":a=Object.values(b$4(i)),s=Object.values(b$4(o));break;case"hsv":a=Object.values(h$3(i)),s=Object.values(h$3(o));break;case"hwb":a=Object.values(v$1(i)),s=Object.values(v$1(o));break;case"lab":a=Object.values(m(i)),s=Object.values(m(o));break;case"lch":a=Object.values(p$2(i)),s=Object.values(p$2(o));break;case"luv":a=Object.values(f$2(i)),s=Object.values(f$2(o));break;case"ryb":a=Object.values(w(i)),s=Object.values(w(o));break;case"uvw":a=Object.values(M(i)),s=Object.values(M(o));break;case"xyz":a=Object.values(i$9(i)),s=Object.values(i$9(o));break;case"cmyk":a=Object.values(O(i)),s=Object.values(O(o));break;default:a=Object.values(i),s=Object.values(o)}const[l,c,T,Q,d]=a.map(((e,t)=>a[t]*(1-n)+s[t]*n));switch(r){case"hsl":return new e(function(e){const{h:t,s:n,l:r,a:i}=e,o=r/100,a=n/100,s=(1-Math.abs(2*o-1))*a,l=s*(1-Math.abs(t/60%2-1)),c=o-s/2,T=t<60||300<=t&&t<360?s:120<=t&&t<240?0:l,Q=240<=t&&t<360?0:60<=t&&t<180?s:l,d=t<120?0:180<=t&&t<300?s:l,[u,p,h]=[T,Q,d].map((e=>255*(e+c)));return{r:u,g:p,b:h,a:null!=i?i:1}}({h:l,s:c,l:T,a:Q}));case"hsv":return new e(j({h:l,s:c,v:T,a:Q}));case"hwb":return new e(function(e){const{h:t,b:n,w:r,a:i}=e;return j({h:t,s:100===n?0:100-r/(100-n)*100,v:100-n,a:i})}({h:l,w:c,b:T,a:Q}));case"lab":return new e(y({l:l,a:c,b:T,alpha:Q}));case"lch":return new e(function(e){const{l:t,c:n,h:r}=e;return y({l:t,a:n*Math.cos(r*Math.PI/180),b:n*Math.sin(r*Math.PI/180),alpha:e.a})}({l:l,c:c,h:T,a:Q}));case"luv":return new e(function(e){const{l:t,u:n,v:r}=e,i=t>c$9*n$a?Math.pow((t+16)/116,3):t/c$9,o=r$c.x+15*r$c.y+3*r$c.z,a=(52*t/(n&&t?n+13*t*(4*r$c.x/o):1)-1)/3,s=-5*i,l=i*(39*t/(r&&t?r+13*t*(9*r$c.y/o):1)-5),c=a===-1/3?l-s:(l-s)/(a- -1/3);return x({x:100*c,y:100*i,z:100*(a*c+s),a:e.a})}({l:l,u:c,v:T,a:Q}));case"ryb":return new e(function(e){let{r:t,y:n,b:r}=e;const i=Math.min(t,n,r);[t,n,r]=[t,n,r].map((e=>e-i));const o=Math.max(t,n,r);let a=Math.min(n,r);n-=a,r-=a,r&&a&&(r*=2,a*=2),t+=n,a+=n;const s=Math.max(t,a,r);if(s){const e=o/s;[t,a,r]=[t,a,r].map((t=>t*e))}return[t,a,r]=[t,a,r].map((e=>e+i)),{r:t,g:a,b:r,a:e.a}}({r:l,y:c,b:T,a:Q}));case"uvw":return new e(function(e){const{u:t,v:n,w:r}=e,[i,o,a]=u$7([[1.5,0,0],[0,1,0],[1.5,-3,2]],[t,n,r]);return x({x:i,y:o,z:a,a:e.a})}({u:l,v:c,w:T,a:Q}));case"xyz":return new e(x({x:l,y:c,z:T,a:Q}));case"cmyk":return new e(function(e){const{c:t,m:n,y:r,k:i,a:o}=e,[a,s,l]=[t,n,r].map((e=>255*(1-e/100)*(1-i/100)));return{r:a,g:s,b:l,a:o}}({c:l,m:c,y:T,k:Q,a:d}));default:return new e({r:l,g:c,b:T,a:Q})}}};var z=t$a.Z,r$b={d:(e,t)=>{for(var n in t)r$b.o(t,n)&&!r$b.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},b$3={};r$b.d(b$3,{Z:()=>n$9});const g$1=["rgb(0,0,0)","rgb(0,0,51)","rgb(0,0,102)","rgb(0,0,153)","rgb(0,0,204)","rgb(0,0,255)","rgb(0,51,0)","rgb(0,51,51)","rgb(0,51,102)","rgb(0,51,153)","rgb(0,51,204)","rgb(0,51,255)","rgb(0,102,0)","rgb(0,102,51)","rgb(0,102,102)","rgb(0,102,153)","rgb(0,102,204)","rgb(0,102,255)","rgb(0,153,0)","rgb(0,153,51)","rgb(0,153,102)","rgb(0,153,153)","rgb(0,153,204)","rgb(0,153,255)","rgb(0,204,0)","rgb(0,204,51)","rgb(0,204,102)","rgb(0,204,153)","rgb(0,204,204)","rgb(0,204,255)","rgb(0,255,0)","rgb(0,255,51)","rgb(0,255,102)","rgb(0,255,153)","rgb(0,255,204)","rgb(0,255,255)","rgb(51,0,0)","rgb(51,0,51)","rgb(51,0,102)","rgb(51,0,153)","rgb(51,0,204)","rgb(51,0,255)","rgb(51,51,0)","rgb(51,51,51)","rgb(51,51,102)","rgb(51,51,153)","rgb(51,51,204)","rgb(51,51,255)","rgb(51,102,0)","rgb(51,102,51)","rgb(51,102,102)","rgb(51,102,153)","rgb(51,102,204)","rgb(51,102,255)","rgb(51,153,0)","rgb(51,153,51)","rgb(51,153,102)","rgb(51,153,153)","rgb(51,153,204)","rgb(51,153,255)","rgb(51,204,0)","rgb(51,204,51)","rgb(51,204,102)","rgb(51,204,153)","rgb(51,204,204)","rgb(51,204,255)","rgb(51,255,0)","rgb(51,255,51)","rgb(51,255,102)","rgb(51,255,153)","rgb(51,255,204)","rgb(51,255,255)","rgb(102,0,0)","rgb(102,0,51)","rgb(102,0,102)","rgb(102,0,153)","rgb(102,0,204)","rgb(102,0,255)","rgb(102,51,0)","rgb(102,51,51)","rgb(102,51,102)","rgb(102,51,153)","rgb(102,51,204)","rgb(102,51,255)","rgb(102,102,0)","rgb(102,102,51)","rgb(102,102,102)","rgb(102,102,153)","rgb(102,102,204)","rgb(102,102,255)","rgb(102,153,0)","rgb(102,153,51)","rgb(102,153,102)","rgb(102,153,153)","rgb(102,153,204)","rgb(102,153,255)","rgb(102,204,0)","rgb(102,204,51)","rgb(102,204,102)","rgb(102,204,153)","rgb(102,204,204)","rgb(102,204,255)","rgb(102,255,0)","rgb(102,255,51)","rgb(102,255,102)","rgb(102,255,153)","rgb(102,255,204)","rgb(102,255,255)","rgb(153,0,0)","rgb(153,0,51)","rgb(153,0,102)","rgb(153,0,153)","rgb(153,0,204)","rgb(153,0,255)","rgb(153,51,0)","rgb(153,51,51)","rgb(153,51,102)","rgb(153,51,153)","rgb(153,51,204)","rgb(153,51,255)","rgb(153,102,0)","rgb(153,102,51)","rgb(153,102,102)","rgb(153,102,153)","rgb(153,102,204)","rgb(153,102,255)","rgb(153,153,0)","rgb(153,153,51)","rgb(153,153,102)","rgb(153,153,153)","rgb(153,153,204)","rgb(153,153,255)","rgb(153,204,0)","rgb(153,204,51)","rgb(153,204,102)","rgb(153,204,153)","rgb(153,204,204)","rgb(153,204,255)","rgb(153,255,0)","rgb(153,255,51)","rgb(153,255,102)","rgb(153,255,153)","rgb(153,255,204)","rgb(153,255,255)","rgb(204,0,0)","rgb(204,0,51)","rgb(204,0,102)","rgb(204,0,153)","rgb(204,0,204)","rgb(204,0,255)","rgb(204,51,0)","rgb(204,51,51)","rgb(204,51,102)","rgb(204,51,153)","rgb(204,51,204)","rgb(204,51,255)","rgb(204,102,0)","rgb(204,102,51)","rgb(204,102,102)","rgb(204,102,153)","rgb(204,102,204)","rgb(204,102,255)","rgb(204,153,0)","rgb(204,153,51)","rgb(204,153,102)","rgb(204,153,153)","rgb(204,153,204)","rgb(204,153,255)","rgb(204,204,0)","rgb(204,204,51)","rgb(204,204,102)","rgb(204,204,153)","rgb(204,204,204)","rgb(204,204,255)","rgb(204,255,0)","rgb(204,255,51)","rgb(204,255,102)","rgb(204,255,153)","rgb(204,255,204)","rgb(204,255,255)","rgb(255,0,0)","rgb(255,0,51)","rgb(255,0,102)","rgb(255,0,153)","rgb(255,0,204)","rgb(255,0,255)","rgb(255,51,0)","rgb(255,51,51)","rgb(255,51,102)","rgb(255,51,153)","rgb(255,51,204)","rgb(255,51,255)","rgb(255,102,0)","rgb(255,102,51)","rgb(255,102,102)","rgb(255,102,153)","rgb(255,102,204)","rgb(255,102,255)","rgb(255,153,0)","rgb(255,153,51)","rgb(255,153,102)","rgb(255,153,153)","rgb(255,153,204)","rgb(255,153,255)","rgb(255,204,0)","rgb(255,204,51)","rgb(255,204,102)","rgb(255,204,153)","rgb(255,204,204)","rgb(255,204,255)","rgb(255,255,0)","rgb(255,255,51)","rgb(255,255,102)","rgb(255,255,153)","rgb(255,255,204)","rgb(255,255,255)"];function t$9(e){return(e/=255)<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function o$9(e,t=[0,0,0,1]){var n,r;return null!==(r=null===(n=e.match(/\d{1,3}/g))||void 0===n?void 0:n.map((e=>+e)))&&void 0!==r?r:t}const n$9=e=>{e.prototype.brightness=function({precision:e=4,percentage:t=!1}={}){const{r:n,g:r,b:i}=this.rgba(),o=+((.299*n+.587*r+.114*i)/255).toFixed(e);return t?100*o:o},e.prototype.luminance=function({precision:e=4,percentage:t=!1}={}){const{r:n,g:r,b:i}=this.rgba(),o=+(.2126*t$9(n)+.7152*t$9(r)+.0722*t$9(i)).toFixed(e);return t?100*o:o},e.prototype.contrast=function({bgColor:t="#fff",precision:n=4,ratio:r=!1}={}){const i=this.luminance(),o=(t instanceof e?t:new e(t)).luminance(),a=((Math.max(i,o)+.05)/(Math.min(i,o)+.05)).toFixed(n);return r?a+":1":+a},e.prototype.readableOn=function({bgColor:e="#fff",size:t="body",level:n="minimum"}={}){const r=this.contrast({bgColor:e});return"body"===t&&"enhanced"===n?r>=7:"large"===t&&"minimum"===n?r>=3:r>=4.5},e.prototype.equalTo=function(t="#fff"){const n=Object.values(this.rgba()),r=Object.values((t instanceof e?t:new e(t)).rgba());return n.toString()===r.toString()},e.prototype.isLight=function(){return this.brightness()>=.5},e.prototype.isDark=function(){return!this.isLight()},e.prototype.isCool=function(){const{h:e}=this.hsla();return 75<=e&&e<255},e.prototype.isWarm=function(){return!this.isCool()},e.prototype.isTinted=function(){return this.hsla().l>50},e.prototype.isShaded=function(){return this.hsla().l<50},e.prototype.isToned=function(){return this.hsla().s<100},e.prototype.isPureHue=function({reason:e=!0}={}){return this.isTinted()?!!e&&{pure:!1,reason:"tinted"}:this.isShaded()?!!e&&{pure:!1,reason:"shaded"}:this.isToned()?!!e&&{pure:!1,reason:"toned"}:!e||{pure:!0,reason:"N/A"}},e.prototype.closestCool=function(){const{h:e}=this.hsla();return this.isCool()?this:this.hueTo(e<75?75:254)},e.prototype.closestWarm=function(){const{h:e}=this.hsla();return this.isWarm()?this:this.hueTo(e<165?74:255)},e.prototype.closestPureHue=function(){const{h:t,a:n}=this.hsla(),{r:r,g:i,b:o,a:a}=function(e){const{h:t,s:n,l:r,a:i}=e,o=r/100,a=n/100,s=(1-Math.abs(2*o-1))*a,l=s*(1-Math.abs(t/60%2-1)),c=o-s/2,T=t<60||300<=t&&t<360?s:120<=t&&t<240?0:l,Q=240<=t&&t<360?0:60<=t&&t<180?s:l,d=t<120?0:180<=t&&t<300?s:l,[u,p,h]=[T,Q,d].map((e=>255*(e+c)));return{r:u,g:p,b:h,a:null!=i?i:1}}({h:t,s:100,l:50,a:n});return new e({r:r,g:i,b:o,a:a})},e.prototype.closestWebSafe=function(){const{r:t,g:n,b:r,a:i}=this.rgba();let[o,a,s]=new Array(3).fill(0),l=Number.POSITIVE_INFINITY,c={r:t,g:n,b:r,a:i};for(let e=0;e<g$1.length;e++){[o,a,s]=o$9(g$1[e],[o,a,s]);const d=(T=[o,a,s],Q=[t,n,r],Math.abs(T[0]-Q[0])+Math.abs(T[1]-Q[1])+Math.abs(T[2]-Q[2]));d<l&&(l=d,c={r:o,g:a,b:s,a:i})}var T,Q;return new e(c)}};var e$a=b$3.Z,r$a={d:(e,t)=>{for(var n in t)r$a.o(t,n)&&!r$a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},g={};r$a.d(g,{Z:()=>a$9});const e$9={maroon:"rgb(128,0,0)","dark red":"rgb(139,0,0)",brown:"rgb(165,42,42)",firebrick:"rgb(178,34,34)",crimson:"rgb(220,20,60)",red:"rgb(255,0,0)",tomato:"rgb(255,99,71)",coral:"rgb(255,127,80)","indian red":"rgb(205,92,92)","light coral":"rgb(240,128,128)","dark salmon":"rgb(233,150,122)",salmon:"rgb(250,128,114)","light salmon":"rgb(255,160,122)","orange red":"rgb(255,69,0)","dark orange":"rgb(255,140,0)",orange:"rgb(255,165,0)",gold:"rgb(255,215,0)","dark golden rod":"rgb(184,134,11)","golden rod":"rgb(218,165,32)","pale golden rod":"rgb(238,232,170)","dark khaki":"rgb(189,183,107)",khaki:"rgb(240,230,140)",olive:"rgb(128,128,0)",yellow:"rgb(255,255,0)","yellow green":"rgb(154,205,50)","dark olive green":"rgb(85,107,47)","olive drab":"rgb(107,142,35)","lawn green":"rgb(124,252,0)","chart reuse":"rgb(127,255,0)","green yellow":"rgb(173,255,47)","dark green":"rgb(0,100,0)",green:"rgb(0,128,0)","forest green":"rgb(34,139,34)",lime:"rgb(0,255,0)","lime green":"rgb(50,205,50)","light green":"rgb(144,238,144)","pale green":"rgb(152,251,152)","dark sea green":"rgb(143,188,143)","medium spring green":"rgb(0,250,154)","spring green":"rgb(0,255,127)","sea green":"rgb(46,139,87)","medium aqua marine":"rgb(102,205,170)","medium sea green":"rgb(60,179,113)","light sea green":"rgb(32,178,170)","dark slate gray":"rgb(47,79,79)",teal:"rgb(0,128,128)","dark cyan":"rgb(0,139,139)",cyan:"rgb(0,255,255)",aqua:"rgb(0,255,255)","light cyan":"rgb(224,255,255)","dark turquoise":"rgb(0,206,209)",turquoise:"rgb(64,224,208)","medium turquoise":"rgb(72,209,204)","pale turquoise":"rgb(175,238,238)","aqua marine":"rgb(127,255,212)","powder blue":"rgb(176,224,230)","cadet blue":"rgb(95,158,160)","steel blue":"rgb(70,130,180)","corn flower blue":"rgb(100,149,237)","deep sky blue":"rgb(0,191,255)","dodger blue":"rgb(30,144,255)","light blue":"rgb(173,216,230)","sky blue":"rgb(135,206,235)","light sky blue":"rgb(135,206,250)","midnight blue":"rgb(25,25,112)",navy:"rgb(0,0,128)","dark blue":"rgb(0,0,139)","medium blue":"rgb(0,0,205)",blue:"rgb(0,0,255)","royal blue":"rgb(65,105,225)","blue violet":"rgb(138,43,226)",indigo:"rgb(75,0,130)","dark slate blue":"rgb(72,61,139)","slate blue":"rgb(106,90,205)","medium slate blue":"rgb(123,104,238)","medium purple":"rgb(147,112,219)","dark magenta":"rgb(139,0,139)","dark violet":"rgb(148,0,211)","dark orchid":"rgb(153,50,204)","medium orchid":"rgb(186,85,211)",purple:"rgb(128,0,128)",thistle:"rgb(216,191,216)",plum:"rgb(221,160,221)",violet:"rgb(238,130,238)",magenta:"rgb(255,0,255)",fuchsia:"rgb(255,0,255)",orchid:"rgb(218,112,214)","medium violet red":"rgb(199,21,133)","pale violet red":"rgb(219,112,147)","deep pink":"rgb(255,20,147)","hot pink":"rgb(255,105,180)","light pink":"rgb(255,182,193)",pink:"rgb(255,192,203)","antique white":"rgb(250,235,215)",beige:"rgb(245,245,220)",bisque:"rgb(255,228,196)","blanched almond":"rgb(255,235,205)",wheat:"rgb(245,222,179)","corn silk":"rgb(255,248,220)","lemon chiffon":"rgb(255,250,205)","light golden rod yellow":"rgb(250,250,210)","light yellow":"rgb(255,255,224)","saddle brown":"rgb(139,69,19)",sienna:"rgb(160,82,45)",chocolate:"rgb(210,105,30)",peru:"rgb(205,133,63)","sandy brown":"rgb(244,164,96)","burly wood":"rgb(222,184,135)",tan:"rgb(210,180,140)","rosy brown":"rgb(188,143,143)",moccasin:"rgb(255,228,181)","navajo white":"rgb(255,222,173)","peach puff":"rgb(255,218,185)","misty rose":"rgb(255,228,225)","lavender blush":"rgb(255,240,245)",linen:"rgb(250,240,230)","old lace":"rgb(253,245,230)","papaya whip":"rgb(255,239,213)","sea shell":"rgb(255,245,238)","mint cream":"rgb(245,255,250)","slate gray":"rgb(112,128,144)","light slate gray":"rgb(119,136,153)","light steel blue":"rgb(176,196,222)",lavender:"rgb(230,230,250)","floral white":"rgb(255,250,240)","alice blue":"rgb(240,248,255)","ghost white":"rgb(248,248,255)",honeydew:"rgb(240,255,240)",ivory:"rgb(255,255,240)",azure:"rgb(240,255,255)",snow:"rgb(255,250,250)",black:"rgb(0,0,0)","dim gray":"rgb(105,105,105)","dim grey":"rgb(105,105,105)",gray:"rgb(128,128,128)",grey:"rgb(128,128,128)","dark gray":"rgb(169,169,169)","dark grey":"rgb(169,169,169)",silver:"rgb(192,192,192)","light gray":"rgb(211,211,211)","light grey":"rgb(211,211,211)",gainsboro:"rgb(220,220,220)",gainsborough:"rgb(220,220,220)","white smoke":"rgb(245,245,245)",white:"rgb(255,255,255)",transparent:"rgba(0,0,0,0)"};function b$2(e,t=[0,0,0,1]){var n,r;return null!==(r=null===(n=e.match(/\d{1,3}/g))||void 0===n?void 0:n.map((e=>+e)))&&void 0!==r?r:t}const a$9=e=>{e.prototype.name=function({exact:e=!0}={}){const{r:t,g:n,b:r,a:i}=this.rgba();if(0===i)return"transparent";const[o,a]=[Object.keys(e$9),Object.values(e$9)];let s;if(e){const e=this.stringRGB({alpha:!1}).replace(/\s/g,"");s=o.find((t=>e$9[t]===e))}else{let e=Number.POSITIVE_INFINITY;for(let i=0;i<a.length;i++){const T=(l=b$2(a[i]),c=[t,n,r],Math.abs(l[0]-c[0])+Math.abs(l[1]-c[1])+Math.abs(l[2]-c[2]));T<e&&(e=T,s=o[i])}}var l,c;return s?s+(i<1?" (with opacity)":""):"undefined"},e.Parsers.push((function(e){if(Object.keys(e$9).includes(e)){const[t,n,r,i]=b$2(e$9[e]);return[{r:t,g:n,b:r,a:null!=i?i:1},"name"]}return[{r:0,g:0,b:0,a:1},"invalid"]}))};var l$3=g.Z,t$8={d:(e,t)=>{for(var n in t)t$8.o(t,n)&&!t$8.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},a$8={};t$8.d(a$8,{Z:()=>d$1});const n$8=6/29,r$9=Math.pow(n$8,3),o$8=Math.pow(29/3,3),e$8={x:.96422,y:1,z:.82521};function c$8(e,t){return[e[0][0]*t[0]+e[0][1]*t[1]+e[0][2]*t[2],e[1][0]*t[0]+e[1][1]*t[1]+e[1][2]*t[2],e[2][0]*t[0]+e[2][1]*t[1]+e[2][2]*t[2]]}function s$8(e,t,n){return Math.max(e,Math.min(t,n))}function u$6(e){const t=e%360;return t<0?t+360:t}function i$8(e){const{l:t,a:n,b:r}=function(e){const t=Object.values(function(e){const[t,n,r]=c$8([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(t=e,(t/=255)<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4));var t})));return function(e){const[t,n,r]=c$8([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:t,y:n,z:r,a:e.a}}({x:t,y:n,z:r,a:e.a})}(e)).map(((e,t)=>e/(100*Object.values(e$8)[t]))).map((e=>e>r$9?Math.cbrt(e):(o$8*e+16)/116));return{l:116*t[1]-16,a:500*(t[0]-t[1]),b:200*(t[1]-t[2]),alpha:e.a}}(e),i=180*Math.atan2(r,n)/Math.PI;return{l:t,c:Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),h:u$6(i),a:e.a}}function h$2(e){const{l:t,c:n,h:r}=e;return function(e){const{l:t,a:n,b:r}=e,i=(t+16)/116,o=i+n/500,a=i-r/200,s=Object.values(e$8),[l,c,T]=[o,i,a].map(((e,t)=>(e>n$8?Math.pow(e,3):3*Math.pow(n$8,2)*(e-4/29))*s[t]*100));return function(e){const[t,n,r]=Object.values(function(e){const[t,n,r]=c$8([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:t,y:n,z:r,a:e.a}}(e)).map((e=>e/100)),[i,o,a]=c$8([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[t,n,r]).map((e=>{return s$8(0,255*((t=e)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t),255);var t}));return{r:i,g:o,b:a,a:e.a}}({x:l,y:c,z:T,a:e.alpha})}({l:t,a:n*Math.cos(r*Math.PI/180),b:n*Math.sin(r*Math.PI/180),alpha:e.a})}const l$2=/lcha?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function p$1({l:e,c:t,h:n,a:r}){return[h$2({l:s$8(0,e,100),c:s$8(0,t,230),h:u$6(n),a:(i=r,void 0!==i?s$8(0,i,1):1)}),"lch"];var i}function f$1(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{l:t,c:n,h:r}=e;return void 0!==t&&void 0!==n&&void 0!==r}(e))return p$1(e);if("string"==typeof e){l$2.lastIndex=0;const t=l$2.exec(e);if(t){const[e,n,r,i]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(0===t?1:1===t?2.3:2===t?3.59:.01):+e));return p$1({l:e,c:n,h:r,a:i})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const d$1=e=>{e.prototype.lcha=function(){return i$8(this.rgba())},e.prototype.stringLCH=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[n,r,i,o]=Object.values(this.lcha()).map(((e,n)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[n])));return e?`lcha(${n}%, ${r}, ${i}, ${o})`:`lch(${n}%, ${r}, ${i})`},e.Parsers.push(f$1)};var b$1=a$8.Z,t$7={d:(e,t)=>{for(var n in t)t$7.o(t,n)&&!t$7.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},n$7={};t$7.d(n$7,{Z:()=>l$1});const r$8=Math.pow(6/29,3),e$7=Math.pow(29/3,3);function o$7(e,t){return[e[0][0]*t[0]+e[0][1]*t[1]+e[0][2]*t[2],e[1][0]*t[0]+e[1][1]*t[1]+e[1][2]*t[2],e[2][0]*t[0]+e[2][1]*t[1]+e[2][2]*t[2]]}function a$7(e,t,n){return Math.max(e,Math.min(t,n))}function u$5(e){const{l:t,u:n,v:r}=e,i=t>e$7*r$8?Math.pow((t+16)/116,3):t/e$7,o=(52*t/(n&&t?n+13*t*.20916005282038627:1)-1)/3,a=-5*i,s=i*(39*t/(r&&t?r+13*t*(9/18.43985):1)-5),l=o===-1/3?s-a:(s-a)/(o- -1/3);return function(e){const[t,n,r]=Object.values(function(e){const[t,n,r]=o$7([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:t,y:n,z:r,a:e.a}}(e)).map((e=>e/100)),[i,o,a]=o$7([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[t,n,r]).map((e=>{return a$7(0,255*((t=e)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t),255);var t}));return{r:i,g:o,b:a,a:e.a}}({x:100*l,y:100*i,z:100*(o*l+a),a:e.a})}const c$7=/color\s*\(\s*luva?\s*(\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function s$7({l:e,u:t,v:n,a:r}){return[u$5({l:a$7(0,e,100),u:a$7(-100,t,100),v:a$7(-100,n,100),a:(i=r,void 0!==i?a$7(0,i,1):1)}),"luv"];var i}function i$7(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{l:t,u:n,v:r}=e;return void 0!==t&&void 0!==n&&null!=r}(e))return s$7(e);if("string"==typeof e){c$7.lastIndex=0;const t=c$7.exec(e);if(t){const[e,n,r,i]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(t<3?1:.01):+e));return s$7({l:e,u:n,v:r,a:i})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const l$1=e=>{e.prototype.luva=function(){return function(e){const[t,n,r]=Object.values(function(e){const[t,n,r]=o$7([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(t=e,(t/=255)<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4));var t})));return function(e){const[t,n,r]=o$7([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:t,y:n,z:r,a:e.a}}({x:t,y:n,z:r,a:e.a})}(e)).map((e=>e/100)),i=n/1,o=t&&n&&r?t+15*n+3*r:19,a=4*t/o,s=9*n/o;let l=i>r$8?116*Math.cbrt(i)-16:e$7*i,c=13*l*(a-.20916005282038627),T=13*l*(s-.48807338454488514);return l===Number(-0)&&(l=0),c===Number(-0)&&(c=0),T===Number(-0)&&(T=0),{l:l,u:c,v:T,a:e.a}}(this.rgba())},e.prototype.stringLUV=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[n,r,i,o]=Object.values(this.luva()).map(((e,n)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[n])));return e?`color(luva ${n}%, ${r}%, ${i}%, ${o})`:`color(luv ${n}%, ${r}%, ${i}%)`},e.Parsers.push(i$7)};var v=n$7.Z,t$6={d:(e,t)=>{for(var n in t)t$6.o(t,n)&&!t$6.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},a$6={};t$6.d(a$6,{Z:()=>d});const n$6=6/29,r$7=Math.pow(n$6,3),e$6=Math.pow(29/3,3),o$6={x:.96422,y:1,z:.82521};function c$6(e,t){return[e[0][0]*t[0]+e[0][1]*t[1]+e[0][2]*t[2],e[1][0]*t[0]+e[1][1]*t[1]+e[1][2]*t[2],e[2][0]*t[0]+e[2][1]*t[1]+e[2][2]*t[2]]}function s$6(e,t,n){return Math.max(e,Math.min(t,n))}function u$4(e){return void 0!==e?s$6(0,e,1):1}function i$6(e){const t=Object.values(function(e){const[t,n,r]=c$6([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(t=e,(t/=255)<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4));var t})));return function(e){const[t,n,r]=c$6([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:t,y:n,z:r,a:e.a}}({x:t,y:n,z:r,a:e.a})}(e)).map(((e,t)=>e/(100*Object.values(o$6)[t]))).map((e=>e>r$7?Math.cbrt(e):(e$6*e+16)/116));return{l:116*t[1]-16,a:500*(t[0]-t[1]),b:200*(t[1]-t[2]),alpha:e.a}}function l(e){const{l:t,a:n,b:r}=e,i=(t+16)/116,o=i+n/500,a=i-r/200,s=Object.values(o$6),[l,c,T]=[o,i,a].map(((e,t)=>(e>n$6?Math.pow(e,3):3*Math.pow(n$6,2)*(e-4/29))*s[t]*100));return function(e){const[t,n,r]=Object.values(function(e){const[t,n,r]=c$6([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:t,y:n,z:r,a:e.a}}(e)).map((e=>e/100)),[i,o,a]=c$6([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[t,n,r]).map((e=>{return s$6(0,255*((t=e)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t),255);var t}));return{r:i,g:o,b:a,a:e.a}}({x:l,y:c,z:T,a:e.alpha})}const p=/laba?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function b({l:e,a:t,b:n,alpha:r}){return[l({l:s$6(0,e,100),a:s$6(-160,t,160),b:s$6(-160,n,160),alpha:u$4(r)}),"lab"]}function f(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{l:t,a:n,b:r}=e;return void 0!==t&&void 0!==n&&void 0!==r}(e))return b(e);if("string"==typeof e){p.lastIndex=0;const t=p.exec(e);if(t){const[e,n,r,i]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(t<3?1:.01):+e));return b({l:e,a:n,b:r,alpha:i})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const d=e=>{e.prototype.laba=function(){return i$6(this.rgba())},e.prototype.stringLAB=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[n,r,i,o]=Object.values(this.laba()).map(((e,n)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[n])));return e?`laba(${n}%, ${r}, ${i}, ${o})`:`lab(${n}%, ${r}, ${i})`},e.Parsers.push(f)};var h$1=a$6.Z,t$5={d:(e,t)=>{for(var n in t)t$5.o(t,n)&&!t$5.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},n$5={};function r$6(e,t){return[e[0][0]*t[0]+e[0][1]*t[1]+e[0][2]*t[2],e[1][0]*t[0]+e[1][1]*t[1]+e[1][2]*t[2],e[2][0]*t[0]+e[2][1]*t[1]+e[2][2]*t[2]]}function o$5(e,t,n){return Math.max(e,Math.min(t,n))}function e$5(e){const{u:t,v:n,w:r}=e,[i,o,a]=r$6([[1.5,0,0],[0,1,0],[1.5,-3,2]],[t,n,r]);return function(e){const[t,n,r]=Object.values(function(e){const[t,n,r]=r$6([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:t,y:n,z:r,a:e.a}}(e)).map((e=>e/100)),[i,o,a]=r$6([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[t,n,r]).map((e=>{return o$5(0,255*((t=e)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t),255);var t}));return{r:i,g:o,b:a,a:e.a}}({x:i,y:o,z:a,a:e.a})}t$5.d(n$5,{Z:()=>s$5});const a$5=/color\s*\(\s*uvwa?\s*(\d*\.?\d+)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*([+-]?\d*\.?\d+)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function u$3({u:e,v:t,w:n,a:r}){return[e$5({u:o$5(0,e,200/3*.96422),v:o$5(0,t,100),w:o$5(-48.211,n,191.2605),a:(i=r,void 0!==i?o$5(0,i,1):1)}),"uvw"];var i}function c$5(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{u:t,v:n,w:r}=e;return void 0!==t&&void 0!==n&&void 0!==r}(e))return u$3(e);if("string"==typeof e){a$5.lastIndex=0;const t=a$5.exec(e);if(t){const[e,n,r,i]=t.filter((e=>void 0!==e)).slice(1).map((e=>e.includes("%")?.01*+e.slice(0,-1):+e));return u$3({u:e,v:n,w:r,a:i})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const s$5=e=>{e.prototype.uvwa=function(){return function(e){const{x:t,y:n,z:r}=function(e){const[t,n,r]=r$6([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(t=e,(t/=255)<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4));var t})));return function(e){const[t,n,r]=r$6([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:t,y:n,z:r,a:e.a}}({x:t,y:n,z:r,a:e.a})}(e),[i,o,a]=r$6([[2/3,0,0],[0,1,0],[-.5,1.5,.5]],[t,n,r]);return{u:i,v:o,w:a,a:e.a}}(this.rgba())},e.prototype.stringUVW=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[n,r,i,o]=Object.values(this.uvwa()).map(((e,n)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[n])));return e?`color(uvwa ${n}, ${r}, ${i}, ${o})`:`color(uvw ${n}, ${r}, ${i})`},e.Parsers.push(c$5)};var i$5=n$5.Z,t$4={d:(e,t)=>{for(var n in t)t$4.o(t,n)&&!t$4.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},n$4={};function r$5(e,t){return[e[0][0]*t[0]+e[0][1]*t[1]+e[0][2]*t[2],e[1][0]*t[0]+e[1][1]*t[1]+e[1][2]*t[2],e[2][0]*t[0]+e[2][1]*t[1]+e[2][2]*t[2]]}function o$4(e,t,n){return Math.max(e,Math.min(t,n))}function e$4(e){const[t,n,r]=Object.values(function(e){const[t,n,r]=r$5([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Object.values(e));return{x:t,y:n,z:r,a:e.a}}(e)).map((e=>e/100)),[i,o,a]=r$5([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],[t,n,r]).map((e=>{return o$4(0,255*((t=e)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t),255);var t}));return{r:i,g:o,b:a,a:e.a}}t$4.d(n$4,{Z:()=>u$2});const a$4=/color\s*\(\s*xyza?\s*(\d*\.?\d+)\s*,?\s*(\d*\.?\d+)\s*,?\s*(\d*\.?\d+)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function s$4({x:e,y:t,z:n,a:r}){return[e$4({x:o$4(0,e,96.422),y:o$4(0,t,100),z:o$4(0,n,82.521),a:(i=r,void 0!==i?o$4(0,i,1):1)}),"xyz"];var i}function c$4(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{x:t,y:n,z:r}=e;return void 0!==t&&void 0!==n&&void 0!==r}(e))return s$4(e);if("string"==typeof e){a$4.lastIndex=0;const t=a$4.exec(e);if(t){const[e,n,r,i]=t.filter((e=>void 0!==e)).slice(1).map((e=>e.includes("%")?.01*+e.slice(0,-1):+e));return s$4({x:e,y:n,z:r,a:i})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const u$2=e=>{e.prototype.xyza=function(){return function(e){const[t,n,r]=r$5([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Object.values(e).map((e=>{return 100*(t=e,(t/=255)<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4));var t})));return function(e){const[t,n,r]=r$5([[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Object.values(e));return{x:t,y:n,z:r,a:e.a}}({x:t,y:n,z:r,a:e.a})}(this.rgba())},e.prototype.stringXYZ=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[n,r,i,o]=Object.values(this.xyza()).map(((e,n)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[n])));return e?`color(xyza ${n}, ${r}, ${i}, ${o})`:`color(xyz ${n}, ${r}, ${i})`},e.Parsers.push(c$4)};var i$4=n$4.Z,t$3={d:(e,t)=>{for(var n in t)t$3.o(t,n)&&!t$3.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},n$3={};function r$4(e,t,n){return Math.max(e,Math.min(t,n))}function a$3(e){const t=e%360;return t<0?t+360:t}function o$3(e){const{h:t,a:n}=function(e){var t;const{Cmin:n,Cmax:r,H:i,delta:o}=function(e){const[t,n,r]=Object.values(e).map((e=>e/255)),i=Math.max(t,n,r),o=Math.min(t,n,r),a=i-o;return{Cmin:o,Cmax:i,H:0===a?0:i===t?(n-r)/a%6:i===n?(r-t)/a+2:(t-n)/a+4,delta:a}}(e),a=(r+n)/2,s=0===o?0:o/(1-Math.abs(2*a-1));return{h:a$3(60*i),s:100*s,l:100*a,a:null!==(t=e.a)&&void 0!==t?t:1}}(e),{r:r,g:i,b:o}=e;return{h:t,w:Math.min(r,i,o)/2.55,b:100*(1-Math.max(r,i,o)/255),a:n}}function e$3(e){const{h:t,b:n,w:r,a:i}=e;return function(e){const{h:t,s:n,v:r,a:i}=e,o=r/100,a=o*(n/100),s=a*(1-Math.abs(t/60%2-1)),l=o-a,c=t<60||300<=t&&t<360?a:120<=t&&t<240?0:s,T=240<=t&&t<360?0:60<=t&&t<180?a:s,Q=t<120?0:180<=t&&t<300?a:s,[d,u,p]=[c,T,Q].map((e=>255*(e+l)));return{r:d,g:u,b:p,a:null!=i?i:1}}({h:t,s:100===n?0:100-r/(100-n)*100,v:100-n,a:i})}t$3.d(n$3,{Z:()=>u$1});const s$3=/hwba?\s*\(\s*([+-]?\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function i$3({h:e,w:t,b:n,a:r}){return[e$3({h:a$3(e),w:r$4(0,t,100),b:r$4(0,n,100),a:(i=r,void 0!==i?r$4(0,i,1):1)}),"hwb"];var i}function c$3(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{h:t,w:n,b:r}=e;return void 0!==t&&void 0!==n&&void 0!==r}(e))return i$3(e);if("string"==typeof e){s$3.lastIndex=0;const t=s$3.exec(e);if(t){const[e,n,r,i]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(0===t?3.59:t<3?1:.01):+e));return i$3({h:e,w:n,b:r,a:i})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const u$1=e=>{e.prototype.hwba=function(){return o$3(this.rgba())},e.prototype.stringHWB=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[n,r,i,o]=Object.values(this.hwba()).map(((e,n)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[n])));return e?`hwba(${a$3(n)}, ${r}%, ${i}%, ${o})`:`hwb(${a$3(n)}, ${r}%, ${i}%)`},e.Parsers.push(c$3)};var h=n$3.Z,t$2={d:(e,t)=>{for(var n in t)t$2.o(t,n)&&!t$2.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},n$2={};function r$3(e,t,n){return Math.max(e,Math.min(t,n))}function s$2(e){const t=e%360;return t<0?t+360:t}function e$2(e){const{h:t,s:n,v:r,a:i}=e,o=r/100,a=o*(n/100),s=a*(1-Math.abs(t/60%2-1)),l=o-a,c=t<60||300<=t&&t<360?a:120<=t&&t<240?0:s,T=240<=t&&t<360?0:60<=t&&t<180?a:s,Q=t<120?0:180<=t&&t<300?a:s,[d,u,p]=[c,T,Q].map((e=>255*(e+l)));return{r:d,g:u,b:p,a:null!=i?i:1}}t$2.d(n$2,{Z:()=>c$2});const a$2=/hsva?\s*\(\s*([+-]?\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function o$2({h:e,s:t,v:n,a:r}){return[e$2({h:s$2(e),s:r$3(0,t,100),v:r$3(0,n,100),a:(i=r,void 0!==i?r$3(0,i,1):1)}),"hsv"];var i}function i$2(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{h:t,s:n,v:r}=e;return void 0!==t&&void 0!==n&&void 0!==r}(e))return o$2(e);if("string"==typeof e){a$2.lastIndex=0;const t=a$2.exec(e);if(t){const[e,n,r,i]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(0===t?3.59:t<3?1:.01):+e));return o$2({h:e,s:n,v:r,a:i})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const c$2=e=>{e.prototype.hsva=function(){return function(e){var t;const{Cmax:n,H:r,delta:i}=function(e){const[t,n,r]=Object.values(e).map((e=>e/255)),i=Math.max(t,n,r),o=Math.min(t,n,r),a=i-o;return{Cmin:o,Cmax:i,H:0===a?0:i===t?(n-r)/a%6:i===n?(r-t)/a+2:(t-n)/a+4,delta:a}}(e),o=0===i?0:i/n;return{h:s$2(60*r),s:100*o,v:100*n,a:null!==(t=e.a)&&void 0!==t?t:1}}(this.rgba())},e.prototype.stringHSV=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[n,r,i,o]=Object.values(this.hsva()).map(((e,n)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[n])));return e?`hsva(${s$2(n)}, ${r}%, ${i}%, ${o})`:`hsv(${s$2(n)}, ${r}%, ${i}%)`},e.Parsers.push(i$2)};var u=n$2.Z,t$1={d:(e,t)=>{for(var n in t)t$1.o(t,n)&&!t$1.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},r$2={};function n$1(e,t,n){return Math.max(e,Math.min(t,n))}function o$1(e){let{r:t,y:n,b:r}=e;const i=Math.min(t,n,r);[t,n,r]=[t,n,r].map((e=>e-i));const o=Math.max(t,n,r);let a=Math.min(n,r);n-=a,r-=a,r&&a&&(r*=2,a*=2),t+=n,a+=n;const s=Math.max(t,a,r);if(s){const e=o/s;[t,a,r]=[t,a,r].map((t=>t*e))}return[t,a,r]=[t,a,r].map((e=>e+i)),{r:t,g:a,b:r,a:e.a}}t$1.d(r$2,{Z:()=>i$1});const a$1=/color\s*\(\s*ryba?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function e$1({r:e,y:t,b:n,a:r}){return[o$1({r:n$1(0,e,255),y:n$1(0,t,255),b:n$1(0,n,255),a:(i=r,void 0!==i?n$1(0,i,1):1)}),"ryb"];var i}function s$1(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{r:t,y:n,b:r}=e;return void 0!==t&&void 0!==n&&void 0!==r}(e))return e$1(e);if("string"==typeof e){a$1.lastIndex=0;const t=a$1.exec(e);if(t){const[e,n,r,i]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(t<3?2.55:.01):+e));return e$1({r:e,y:n,b:r,a:i})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const i$1=e=>{e.prototype.ryba=function(){return function(e){let{r:t,g:n,b:r}=e;const i=Math.min(t,n,r);[t,n,r]=[t,n,r].map((e=>e-i));const o=Math.max(t,n,r);let a=Math.min(t,n);t-=a,n-=a,r&&n&&(r/=2,n/=2),a+=n,r+=n;const s=Math.max(t,a,r);if(s){const e=o/s;[t,a,r]=[t,a,r].map((t=>t*e))}return[t,a,r]=[t,a,r].map((e=>e+i)),{r:t,y:a,b:r,a:e.a}}(this.rgba())},e.prototype.stringRYB=function({alpha:e=!0,precision:t=[0,0,0,1]}={}){const[n,r,i,o]=Object.values(this.ryba()).map(((e,n)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[n])));return e?`color(ryba ${n}, ${r}, ${i}, ${o})`:`color(ryb ${n}, ${r}, ${i})`},e.Parsers.push(s$1)};var c$1=r$2.Z,t={d:(e,n)=>{for(var r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},n={};function e(e,t,n){return Math.max(e,Math.min(t,n))}function r$1(e){const{c:t,m:n,y:r,k:i,a:o}=e,[a,s,l]=[t,n,r].map((e=>255*(1-e/100)*(1-i/100)));return{r:a,g:s,b:l,a:o}}t.d(n,{Z:()=>i});const c=/device-cmyka?\s*\(\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?)\s*,?\s*(\d*\.?\d+%?),?\s*\/?\s*?(\d*\.?\d+%?)?\s*\)/gi;function o({c:t,m:n,y:r,k:i,a:o}){return[r$1({c:e(0,t,100),m:e(0,n,100),y:e(0,r,100),k:e(0,i,100),a:(a=o,void 0!==a?e(0,a,1):1)}),"cmyk"];var a}function a(e){if("object"===e.constructor.name.toLowerCase()&&function(e){const{c:t,m:n,y:r,k:i}=e;return void 0!==t&&void 0!==n&&void 0!==r&&void 0!==i}(e))return o(e);if("string"==typeof e){c.lastIndex=0;const t=c.exec(e);if(t){const[e,n,r,i,a]=t.filter((e=>void 0!==e)).slice(1).map(((e,t)=>e.includes("%")?+e.slice(0,-1)*(t<4?1:.01):+e));return o({c:e,m:n,y:r,k:i,a:a})}}return[{r:0,g:0,b:0,a:1},"invalid"]}const i=e=>{e.prototype.cmyka=function(){return function(e){const{r:t,g:n,b:r,a:i}=e,o=1-Math.max(t,n,r)/255,[a,s,l]=1===o?[0,0,0]:[t,n,r].map((e=>100*(1-e/255-o)/(1-o)));return{c:a,m:s,y:l,k:100*o,a:i}}(this.rgba())},e.prototype.stringCMYK=function({alpha:e=!0,precision:t=[0,0,0,0,1]}={}){const[n,r,i,o,a]=Object.values(this.cmyka()).map(((e,n)=>function(e,t){return+e.toFixed(t>=0?t:0)}(e,t[n])));return e?`device-cmyk(${n}, ${r}, ${i}, ${o}, ${a})`:`device-cmyk(${n}, ${r}, ${i}, ${o})`},e.Parsers.push(a)};var s=n.Z;class ExcalidrawScene{constructor(e=[]){this.type="excalidraw",this.version=2,this.source=GITHUB_RELEASES+PLUGIN_VERSION,this.elements=[],this.elements=e}toExJSON(){return Object.assign(Object.assign({},this),{elements:this.elements.map((e=>Object.assign({},e)))})}}var ARRAY_TYPE="undefined"!=typeof Float32Array?Float32Array:Array;function create$1(){var e=new ARRAY_TYPE(16);return ARRAY_TYPE!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function clone(e){var t=new ARRAY_TYPE(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function fromValues$1(e,t,n,r,i,o,a,s,l,c,T,Q,d,u,p,h){var m=new ARRAY_TYPE(16);return m[0]=e,m[1]=t,m[2]=n,m[3]=r,m[4]=i,m[5]=o,m[6]=a,m[7]=s,m[8]=l,m[9]=c,m[10]=T,m[11]=Q,m[12]=d,m[13]=u,m[14]=p,m[15]=h,m}function multiply(e,t,n){var r=t[0],i=t[1],o=t[2],a=t[3],s=t[4],l=t[5],c=t[6],T=t[7],Q=t[8],d=t[9],u=t[10],p=t[11],h=t[12],m=t[13],f=t[14],g=t[15],b=n[0],y=n[1],L=n[2],v=n[3];return e[0]=b*r+y*s+L*Q+v*h,e[1]=b*i+y*l+L*d+v*m,e[2]=b*o+y*c+L*u+v*f,e[3]=b*a+y*T+L*p+v*g,b=n[4],y=n[5],L=n[6],v=n[7],e[4]=b*r+y*s+L*Q+v*h,e[5]=b*i+y*l+L*d+v*m,e[6]=b*o+y*c+L*u+v*f,e[7]=b*a+y*T+L*p+v*g,b=n[8],y=n[9],L=n[10],v=n[11],e[8]=b*r+y*s+L*Q+v*h,e[9]=b*i+y*l+L*d+v*m,e[10]=b*o+y*c+L*u+v*f,e[11]=b*a+y*T+L*p+v*g,b=n[12],y=n[13],L=n[14],v=n[15],e[12]=b*r+y*s+L*Q+v*h,e[13]=b*i+y*l+L*d+v*m,e[14]=b*o+y*c+L*u+v*f,e[15]=b*a+y*T+L*p+v*g,e}function create(){var e=new ARRAY_TYPE(3);return ARRAY_TYPE!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function fromValues(e,t,n){var r=new ARRAY_TYPE(3);return r[0]=e,r[1]=t,r[2]=n,r}function transformMat4(e,t,n){var r=t[0],i=t[1],o=t[2],a=n[3]*r+n[7]*i+n[11]*o+n[15];return a=a||1,e[0]=(n[0]*r+n[4]*i+n[8]*o+n[12])/a,e[1]=(n[1]*r+n[5]*i+n[9]*o+n[13])/a,e[2]=(n[2]*r+n[6]*i+n[10]*o+n[14])/a,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)}),create();const random=new Random(Date.now()),randomInteger=()=>Math.floor(random.next()*2**31),randomId=()=>nanoid$1();function dimensionsFromPoints(e){const t=e.map((([e])=>e)),n=e.map((([,e])=>e)),r=Math.min(...t),i=Math.min(...n);return[Math.max(...t)-r,Math.max(...n)-i]}function getWindingOrder(e){return e.reduce(((e,[t,n],r,i)=>{const o=i[r+1];return((o?o[0]:0)-t)*((o?o[1]:0)+n)+e}),0)>0?"clockwise":"counterclockwise"}var chroma$1={exports:{}}; /** * chroma.js - JavaScript library for color conversions * @@ -76,8 +94,8 @@ EXPR:/(!)?(\[\[([^|\]]+)\|?([^\]]+)?]]|\[([^\]]*)]\(([^)]*)\))(\{(\d+)\})?/g,get * http://www.w3.org/TR/css3-color/#svg-color * * @preserve - */chroma$1.exports,function(e,A){e.exports=function(){for(var e=function(e,A,t){return void 0===A&&(A=0),void 0===t&&(t=1),e<A?A:e>t?t:e},A=e,t={},i=0,n=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];i<n.length;i+=1){var s=n[i];t["[object "+s+"]"]=s.toLowerCase()}var a=function(e){return t[Object.prototype.toString.call(e)]||"object"},o=a,r=a,l=Math.PI,c={clip_rgb:function(e){e._clipped=!1,e._unclipped=e.slice(0);for(var t=0;t<=3;t++)t<3?((e[t]<0||e[t]>255)&&(e._clipped=!0),e[t]=A(e[t],0,255)):3===t&&(e[t]=A(e[t],0,1));return e},limit:e,type:a,unpack:function(e,A){return void 0===A&&(A=null),e.length>=3?Array.prototype.slice.call(e):"object"==o(e[0])&&A?A.split("").filter((function(A){return void 0!==e[0][A]})).map((function(A){return e[0][A]})):e[0]},last:function(e){if(e.length<2)return null;var A=e.length-1;return"string"==r(e[A])?e[A].toLowerCase():null},PI:l,TWOPI:2*l,PITHIRD:l/3,DEG2RAD:l/180,RAD2DEG:180/l},g={format:{},autodetect:[]},d=c.last,u=c.clip_rgb,h=c.type,m=g,p=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=this;if("object"===h(e[0])&&e[0].constructor&&e[0].constructor===this.constructor)return e[0];var i=d(e),n=!1;if(!i){n=!0,m.sorted||(m.autodetect=m.autodetect.sort((function(e,A){return A.p-e.p})),m.sorted=!0);for(var s=0,a=m.autodetect;s<a.length;s+=1){var o=a[s];if(i=o.test.apply(o,e))break}}if(!m.format[i])throw new Error("unknown format: "+e);var r=m.format[i].apply(null,n?e:e.slice(0,-1));t._rgb=u(r),3===t._rgb.length&&t._rgb.push(1)};p.prototype.toString=function(){return"function"==h(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var w=p,B=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(B.Color,[null].concat(e)))};B.Color=w,B.version="2.4.2";var E=B,k=c.unpack,f=Math.max,C=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=k(e,"rgb"),i=t[0],n=t[1],s=t[2],a=1-f(i/=255,f(n/=255,s/=255)),o=a<1?1/(1-a):0;return[(1-i-a)*o,(1-n-a)*o,(1-s-a)*o,a]},O=c.unpack,W=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=(e=O(e,"cmyk"))[0],i=e[1],n=e[2],s=e[3],a=e.length>4?e[4]:1;return 1===s?[0,0,0,a]:[t>=1?0:255*(1-t)*(1-s),i>=1?0:255*(1-i)*(1-s),n>=1?0:255*(1-n)*(1-s),a]},b=E,x=w,Q=g,I=c.unpack,y=c.type,v=C;x.prototype.cmyk=function(){return v(this._rgb)},b.cmyk=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(x,[null].concat(e,["cmyk"])))},Q.format.cmyk=W,Q.autodetect.push({p:2,test:function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];if(e=I(e,"cmyk"),"array"===y(e)&&4===e.length)return"cmyk"}});var D=c.unpack,M=c.last,F=function(e){return Math.round(100*e)/100},U=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=D(e,"hsla"),i=M(e)||"lsa";return t[0]=F(t[0]||0),t[1]=F(100*t[1])+"%",t[2]=F(100*t[2])+"%","hsla"===i||t.length>3&&t[3]<1?(t[3]=t.length>3?t[3]:1,i="hsla"):t.length=3,i+"("+t.join(",")+")"},R=c.unpack,T=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=(e=R(e,"rgba"))[0],i=e[1],n=e[2];t/=255,i/=255,n/=255;var s,a,o=Math.min(t,i,n),r=Math.max(t,i,n),l=(r+o)/2;return r===o?(s=0,a=Number.NaN):s=l<.5?(r-o)/(r+o):(r-o)/(2-r-o),t==r?a=(i-n)/(r-o):i==r?a=2+(n-t)/(r-o):n==r&&(a=4+(t-i)/(r-o)),(a*=60)<0&&(a+=360),e.length>3&&void 0!==e[3]?[a,s,l,e[3]]:[a,s,l]},N=c.unpack,S=c.last,G=U,H=T,L=Math.round,j=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=N(e,"rgba"),i=S(e)||"rgb";return"hsl"==i.substr(0,3)?G(H(t),i):(t[0]=L(t[0]),t[1]=L(t[1]),t[2]=L(t[2]),("rgba"===i||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,i="rgba"),i+"("+t.slice(0,"rgb"===i?3:4).join(",")+")")},Y=c.unpack,P=Math.round,z=function(){for(var e,A=[],t=arguments.length;t--;)A[t]=arguments[t];var i,n,s,a=(A=Y(A,"hsl"))[0],o=A[1],r=A[2];if(0===o)i=n=s=255*r;else{var l=[0,0,0],c=[0,0,0],g=r<.5?r*(1+o):r+o-r*o,d=2*r-g,u=a/360;l[0]=u+1/3,l[1]=u,l[2]=u-1/3;for(var h=0;h<3;h++)l[h]<0&&(l[h]+=1),l[h]>1&&(l[h]-=1),6*l[h]<1?c[h]=d+6*(g-d)*l[h]:2*l[h]<1?c[h]=g:3*l[h]<2?c[h]=d+(g-d)*(2/3-l[h])*6:c[h]=d;i=(e=[P(255*c[0]),P(255*c[1]),P(255*c[2])])[0],n=e[1],s=e[2]}return A.length>3?[i,n,s,A[3]]:[i,n,s,1]},K=z,J=g,q=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,V=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,X=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,_=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,$=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,ee=Math.round,Ae=function(e){var A;if(e=e.toLowerCase().trim(),J.format.named)try{return J.format.named(e)}catch(e){}if(A=e.match(q)){for(var t=A.slice(1,4),i=0;i<3;i++)t[i]=+t[i];return t[3]=1,t}if(A=e.match(Z)){for(var n=A.slice(1,5),s=0;s<4;s++)n[s]=+n[s];return n}if(A=e.match(V)){for(var a=A.slice(1,4),o=0;o<3;o++)a[o]=ee(2.55*a[o]);return a[3]=1,a}if(A=e.match(X)){for(var r=A.slice(1,5),l=0;l<3;l++)r[l]=ee(2.55*r[l]);return r[3]=+r[3],r}if(A=e.match(_)){var c=A.slice(1,4);c[1]*=.01,c[2]*=.01;var g=K(c);return g[3]=1,g}if(A=e.match($)){var d=A.slice(1,4);d[1]*=.01,d[2]*=.01;var u=K(d);return u[3]=+A[4],u}};Ae.test=function(e){return q.test(e)||Z.test(e)||V.test(e)||X.test(e)||_.test(e)||$.test(e)};var te=E,ie=w,ne=g,se=c.type,ae=j,oe=Ae;ie.prototype.css=function(e){return ae(this._rgb,e)},te.css=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(ie,[null].concat(e,["css"])))},ne.format.css=oe,ne.autodetect.push({p:5,test:function(e){for(var A=[],t=arguments.length-1;t-- >0;)A[t]=arguments[t+1];if(!A.length&&"string"===se(e)&&oe.test(e))return"css"}});var re=w,le=E,ce=c.unpack;g.format.gl=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=ce(e,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},le.gl=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(re,[null].concat(e,["gl"])))},re.prototype.gl=function(){var e=this._rgb;return[e[0]/255,e[1]/255,e[2]/255,e[3]]};var ge=c.unpack,de=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t,i=ge(e,"rgb"),n=i[0],s=i[1],a=i[2],o=Math.min(n,s,a),r=Math.max(n,s,a),l=r-o,c=100*l/255,g=o/(255-l)*100;return 0===l?t=Number.NaN:(n===r&&(t=(s-a)/l),s===r&&(t=2+(a-n)/l),a===r&&(t=4+(n-s)/l),(t*=60)<0&&(t+=360)),[t,c,g]},ue=c.unpack,he=Math.floor,me=function(){for(var e,A,t,i,n,s,a=[],o=arguments.length;o--;)a[o]=arguments[o];var r,l,c,g=(a=ue(a,"hcg"))[0],d=a[1],u=a[2];u*=255;var h=255*d;if(0===d)r=l=c=u;else{360===g&&(g=0),g>360&&(g-=360),g<0&&(g+=360);var m=he(g/=60),p=g-m,w=u*(1-d),B=w+h*(1-p),E=w+h*p,k=w+h;switch(m){case 0:r=(e=[k,E,w])[0],l=e[1],c=e[2];break;case 1:r=(A=[B,k,w])[0],l=A[1],c=A[2];break;case 2:r=(t=[w,k,E])[0],l=t[1],c=t[2];break;case 3:r=(i=[w,B,k])[0],l=i[1],c=i[2];break;case 4:r=(n=[E,w,k])[0],l=n[1],c=n[2];break;case 5:r=(s=[k,w,B])[0],l=s[1],c=s[2]}}return[r,l,c,a.length>3?a[3]:1]},pe=c.unpack,we=c.type,Be=E,Ee=w,ke=g,fe=de;Ee.prototype.hcg=function(){return fe(this._rgb)},Be.hcg=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(Ee,[null].concat(e,["hcg"])))},ke.format.hcg=me,ke.autodetect.push({p:1,test:function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];if(e=pe(e,"hcg"),"array"===we(e)&&3===e.length)return"hcg"}});var Ce=c.unpack,Oe=c.last,We=Math.round,be=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=Ce(e,"rgba"),i=t[0],n=t[1],s=t[2],a=t[3],o=Oe(e)||"auto";void 0===a&&(a=1),"auto"===o&&(o=a<1?"rgba":"rgb");var r="000000"+((i=We(i))<<16|(n=We(n))<<8|(s=We(s))).toString(16);r=r.substr(r.length-6);var l="0"+We(255*a).toString(16);switch(l=l.substr(l.length-2),o.toLowerCase()){case"rgba":return"#"+r+l;case"argb":return"#"+l+r;default:return"#"+r}},xe=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Qe=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,Ie=function(e){if(e.match(xe)){4!==e.length&&7!==e.length||(e=e.substr(1)),3===e.length&&(e=(e=e.split(""))[0]+e[0]+e[1]+e[1]+e[2]+e[2]);var A=parseInt(e,16);return[A>>16,A>>8&255,255&A,1]}if(e.match(Qe)){5!==e.length&&9!==e.length||(e=e.substr(1)),4===e.length&&(e=(e=e.split(""))[0]+e[0]+e[1]+e[1]+e[2]+e[2]+e[3]+e[3]);var t=parseInt(e,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex color: "+e)},ye=E,ve=w,De=c.type,Me=g,Fe=be;ve.prototype.hex=function(e){return Fe(this._rgb,e)},ye.hex=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(ve,[null].concat(e,["hex"])))},Me.format.hex=Ie,Me.autodetect.push({p:4,test:function(e){for(var A=[],t=arguments.length-1;t-- >0;)A[t]=arguments[t+1];if(!A.length&&"string"===De(e)&&[3,4,5,6,7,8,9].indexOf(e.length)>=0)return"hex"}});var Ue=c.unpack,Re=c.TWOPI,Te=Math.min,Ne=Math.sqrt,Se=Math.acos,Ge=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t,i=Ue(e,"rgb"),n=i[0],s=i[1],a=i[2],o=Te(n/=255,s/=255,a/=255),r=(n+s+a)/3,l=r>0?1-o/r:0;return 0===l?t=NaN:(t=(n-s+(n-a))/2,t/=Ne((n-s)*(n-s)+(n-a)*(s-a)),t=Se(t),a>s&&(t=Re-t),t/=Re),[360*t,l,r]},He=c.unpack,Le=c.limit,je=c.TWOPI,Ye=c.PITHIRD,Pe=Math.cos,ze=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t,i,n,s=(e=He(e,"hsi"))[0],a=e[1],o=e[2];return isNaN(s)&&(s=0),isNaN(a)&&(a=0),s>360&&(s-=360),s<0&&(s+=360),(s/=360)<1/3?i=1-((n=(1-a)/3)+(t=(1+a*Pe(je*s)/Pe(Ye-je*s))/3)):s<2/3?n=1-((t=(1-a)/3)+(i=(1+a*Pe(je*(s-=1/3))/Pe(Ye-je*s))/3)):t=1-((i=(1-a)/3)+(n=(1+a*Pe(je*(s-=2/3))/Pe(Ye-je*s))/3)),[255*(t=Le(o*t*3)),255*(i=Le(o*i*3)),255*(n=Le(o*n*3)),e.length>3?e[3]:1]},Ke=c.unpack,Je=c.type,qe=E,Ze=w,Ve=g,Xe=Ge;Ze.prototype.hsi=function(){return Xe(this._rgb)},qe.hsi=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(Ze,[null].concat(e,["hsi"])))},Ve.format.hsi=ze,Ve.autodetect.push({p:2,test:function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];if(e=Ke(e,"hsi"),"array"===Je(e)&&3===e.length)return"hsi"}});var _e=c.unpack,$e=c.type,eA=E,AA=w,tA=g,iA=T;AA.prototype.hsl=function(){return iA(this._rgb)},eA.hsl=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(AA,[null].concat(e,["hsl"])))},tA.format.hsl=z,tA.autodetect.push({p:2,test:function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];if(e=_e(e,"hsl"),"array"===$e(e)&&3===e.length)return"hsl"}});var nA=c.unpack,sA=Math.min,aA=Math.max,oA=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t,i,n,s=(e=nA(e,"rgb"))[0],a=e[1],o=e[2],r=sA(s,a,o),l=aA(s,a,o),c=l-r;return n=l/255,0===l?(t=Number.NaN,i=0):(i=c/l,s===l&&(t=(a-o)/c),a===l&&(t=2+(o-s)/c),o===l&&(t=4+(s-a)/c),(t*=60)<0&&(t+=360)),[t,i,n]},rA=c.unpack,lA=Math.floor,cA=function(){for(var e,A,t,i,n,s,a=[],o=arguments.length;o--;)a[o]=arguments[o];var r,l,c,g=(a=rA(a,"hsv"))[0],d=a[1],u=a[2];if(u*=255,0===d)r=l=c=u;else{360===g&&(g=0),g>360&&(g-=360),g<0&&(g+=360);var h=lA(g/=60),m=g-h,p=u*(1-d),w=u*(1-d*m),B=u*(1-d*(1-m));switch(h){case 0:r=(e=[u,B,p])[0],l=e[1],c=e[2];break;case 1:r=(A=[w,u,p])[0],l=A[1],c=A[2];break;case 2:r=(t=[p,u,B])[0],l=t[1],c=t[2];break;case 3:r=(i=[p,w,u])[0],l=i[1],c=i[2];break;case 4:r=(n=[B,p,u])[0],l=n[1],c=n[2];break;case 5:r=(s=[u,p,w])[0],l=s[1],c=s[2]}}return[r,l,c,a.length>3?a[3]:1]},gA=c.unpack,dA=c.type,uA=E,hA=w,mA=g,pA=oA;hA.prototype.hsv=function(){return pA(this._rgb)},uA.hsv=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(hA,[null].concat(e,["hsv"])))},mA.format.hsv=cA,mA.autodetect.push({p:2,test:function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];if(e=gA(e,"hsv"),"array"===dA(e)&&3===e.length)return"hsv"}});var wA={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},BA=wA,EA=c.unpack,kA=Math.pow,fA=function(e){return(e/=255)<=.04045?e/12.92:kA((e+.055)/1.055,2.4)},CA=function(e){return e>BA.t3?kA(e,1/3):e/BA.t2+BA.t0},OA=function(e,A,t){return e=fA(e),A=fA(A),t=fA(t),[CA((.4124564*e+.3575761*A+.1804375*t)/BA.Xn),CA((.2126729*e+.7151522*A+.072175*t)/BA.Yn),CA((.0193339*e+.119192*A+.9503041*t)/BA.Zn)]},WA=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=EA(e,"rgb"),i=t[0],n=t[1],s=t[2],a=OA(i,n,s),o=a[0],r=a[1],l=116*r-16;return[l<0?0:l,500*(o-r),200*(r-a[2])]},bA=wA,xA=c.unpack,QA=Math.pow,IA=function(e){return 255*(e<=.00304?12.92*e:1.055*QA(e,1/2.4)-.055)},yA=function(e){return e>bA.t1?e*e*e:bA.t2*(e-bA.t0)},vA=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t,i,n,s=(e=xA(e,"lab"))[0],a=e[1],o=e[2];return i=(s+16)/116,t=isNaN(a)?i:i+a/500,n=isNaN(o)?i:i-o/200,i=bA.Yn*yA(i),t=bA.Xn*yA(t),n=bA.Zn*yA(n),[IA(3.2404542*t-1.5371385*i-.4985314*n),IA(-.969266*t+1.8760108*i+.041556*n),IA(.0556434*t-.2040259*i+1.0572252*n),e.length>3?e[3]:1]},DA=c.unpack,MA=c.type,FA=E,UA=w,RA=g,TA=WA;UA.prototype.lab=function(){return TA(this._rgb)},FA.lab=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(UA,[null].concat(e,["lab"])))},RA.format.lab=vA,RA.autodetect.push({p:2,test:function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];if(e=DA(e,"lab"),"array"===MA(e)&&3===e.length)return"lab"}});var NA=c.unpack,SA=c.RAD2DEG,GA=Math.sqrt,HA=Math.atan2,LA=Math.round,jA=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=NA(e,"lab"),i=t[0],n=t[1],s=t[2],a=GA(n*n+s*s),o=(HA(s,n)*SA+360)%360;return 0===LA(1e4*a)&&(o=Number.NaN),[i,a,o]},YA=c.unpack,PA=WA,zA=jA,KA=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=YA(e,"rgb"),i=t[0],n=t[1],s=t[2],a=PA(i,n,s),o=a[0],r=a[1],l=a[2];return zA(o,r,l)},JA=c.unpack,qA=c.DEG2RAD,ZA=Math.sin,VA=Math.cos,XA=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=JA(e,"lch"),i=t[0],n=t[1],s=t[2];return isNaN(s)&&(s=0),[i,VA(s*=qA)*n,ZA(s)*n]},_A=c.unpack,$A=XA,et=vA,At=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=(e=_A(e,"lch"))[0],i=e[1],n=e[2],s=$A(t,i,n),a=s[0],o=s[1],r=s[2],l=et(a,o,r);return[l[0],l[1],l[2],e.length>3?e[3]:1]},tt=c.unpack,it=At,nt=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=tt(e,"hcl").reverse();return it.apply(void 0,t)},st=c.unpack,at=c.type,ot=E,rt=w,lt=g,ct=KA;rt.prototype.lch=function(){return ct(this._rgb)},rt.prototype.hcl=function(){return ct(this._rgb).reverse()},ot.lch=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(rt,[null].concat(e,["lch"])))},ot.hcl=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(rt,[null].concat(e,["hcl"])))},lt.format.lch=At,lt.format.hcl=nt,["lch","hcl"].forEach((function(e){return lt.autodetect.push({p:2,test:function(){for(var A=[],t=arguments.length;t--;)A[t]=arguments[t];if(A=st(A,e),"array"===at(A)&&3===A.length)return e}})}));var gt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},dt=g,ut=c.type,ht=gt,mt=Ie,pt=be;w.prototype.name=function(){for(var e=pt(this._rgb,"rgb"),A=0,t=Object.keys(ht);A<t.length;A+=1){var i=t[A];if(ht[i]===e)return i.toLowerCase()}return e},dt.format.named=function(e){if(e=e.toLowerCase(),ht[e])return mt(ht[e]);throw new Error("unknown color name: "+e)},dt.autodetect.push({p:5,test:function(e){for(var A=[],t=arguments.length-1;t-- >0;)A[t]=arguments[t+1];if(!A.length&&"string"===ut(e)&&ht[e.toLowerCase()])return"named"}});var wt=c.unpack,Bt=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=wt(e,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]},Et=c.type,kt=function(e){if("number"==Et(e)&&e>=0&&e<=16777215)return[e>>16,e>>8&255,255&e,1];throw new Error("unknown num color: "+e)},ft=E,Ct=w,Ot=g,Wt=c.type,bt=Bt;Ct.prototype.num=function(){return bt(this._rgb)},ft.num=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(Ct,[null].concat(e,["num"])))},Ot.format.num=kt,Ot.autodetect.push({p:5,test:function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];if(1===e.length&&"number"===Wt(e[0])&&e[0]>=0&&e[0]<=16777215)return"num"}});var xt=E,Qt=w,It=g,yt=c.unpack,vt=c.type,Dt=Math.round;Qt.prototype.rgb=function(e){return void 0===e&&(e=!0),!1===e?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Dt)},Qt.prototype.rgba=function(e){return void 0===e&&(e=!0),this._rgb.slice(0,4).map((function(A,t){return t<3?!1===e?A:Dt(A):A}))},xt.rgb=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(Qt,[null].concat(e,["rgb"])))},It.format.rgb=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=yt(e,"rgba");return void 0===t[3]&&(t[3]=1),t},It.autodetect.push({p:3,test:function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];if(e=yt(e,"rgba"),"array"===vt(e)&&(3===e.length||4===e.length&&"number"==vt(e[3])&&e[3]>=0&&e[3]<=1))return"rgb"}});var Mt=Math.log,Ft=function(e){var A,t,i,n=e/100;return n<66?(A=255,t=n<6?0:-155.25485562709179-.44596950469579133*(t=n-2)+104.49216199393888*Mt(t),i=n<20?0:.8274096064007395*(i=n-10)-254.76935184120902+115.67994401066147*Mt(i)):(A=351.97690566805693+.114206453784165*(A=n-55)-40.25366309332127*Mt(A),t=325.4494125711974+.07943456536662342*(t=n-50)-28.0852963507957*Mt(t),i=255),[A,t,i,1]},Ut=Ft,Rt=c.unpack,Tt=Math.round,Nt=E,St=w,Gt=g,Ht=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];for(var t,i=Rt(e,"rgb"),n=i[0],s=i[2],a=1e3,o=4e4;o-a>.4;){var r=Ut(t=.5*(o+a));r[2]/r[0]>=s/n?o=t:a=t}return Tt(t)};St.prototype.temp=St.prototype.kelvin=St.prototype.temperature=function(){return Ht(this._rgb)},Nt.temp=Nt.kelvin=Nt.temperature=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(St,[null].concat(e,["temp"])))},Gt.format.temp=Gt.format.kelvin=Gt.format.temperature=Ft;var Lt=c.unpack,jt=Math.cbrt,Yt=Math.pow,Pt=Math.sign,zt=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=Lt(e,"rgb"),i=t[0],n=t[1],s=t[2],a=[Kt(i/255),Kt(n/255),Kt(s/255)],o=a[0],r=a[1],l=a[2],c=jt(.4122214708*o+.5363325363*r+.0514459929*l),g=jt(.2119034982*o+.6806995451*r+.1073969566*l),d=jt(.0883024619*o+.2817188376*r+.6299787005*l);return[.2104542553*c+.793617785*g-.0040720468*d,1.9779984951*c-2.428592205*g+.4505937099*d,.0259040371*c+.7827717662*g-.808675766*d]};function Kt(e){var A=Math.abs(e);return A<.04045?e/12.92:(Pt(e)||1)*Yt((A+.055)/1.055,2.4)}var Jt=c.unpack,qt=Math.pow,Zt=Math.sign,Vt=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=(e=Jt(e,"lab"))[0],i=e[1],n=e[2],s=qt(t+.3963377774*i+.2158037573*n,3),a=qt(t-.1055613458*i-.0638541728*n,3),o=qt(t-.0894841775*i-1.291485548*n,3);return[255*Xt(4.0767416621*s-3.3077115913*a+.2309699292*o),255*Xt(-1.2684380046*s+2.6097574011*a-.3413193965*o),255*Xt(-.0041960863*s-.7034186147*a+1.707614701*o),e.length>3?e[3]:1]};function Xt(e){var A=Math.abs(e);return A>.0031308?(Zt(e)||1)*(1.055*qt(A,1/2.4)-.055):12.92*e}var _t=c.unpack,$t=c.type,ei=E,Ai=w,ti=g,ii=zt;Ai.prototype.oklab=function(){return ii(this._rgb)},ei.oklab=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(Ai,[null].concat(e,["oklab"])))},ti.format.oklab=Vt,ti.autodetect.push({p:3,test:function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];if(e=_t(e,"oklab"),"array"===$t(e)&&3===e.length)return"oklab"}});var ni=c.unpack,si=zt,ai=jA,oi=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=ni(e,"rgb"),i=t[0],n=t[1],s=t[2],a=si(i,n,s),o=a[0],r=a[1],l=a[2];return ai(o,r,l)},ri=c.unpack,li=XA,ci=Vt,gi=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];var t=(e=ri(e,"lch"))[0],i=e[1],n=e[2],s=li(t,i,n),a=s[0],o=s[1],r=s[2],l=ci(a,o,r);return[l[0],l[1],l[2],e.length>3?e[3]:1]},di=c.unpack,ui=c.type,hi=E,mi=w,pi=g,wi=oi;mi.prototype.oklch=function(){return wi(this._rgb)},hi.oklch=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];return new(Function.prototype.bind.apply(mi,[null].concat(e,["oklch"])))},pi.format.oklch=gi,pi.autodetect.push({p:3,test:function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];if(e=di(e,"oklch"),"array"===ui(e)&&3===e.length)return"oklch"}});var Bi=w,Ei=c.type;Bi.prototype.alpha=function(e,A){return void 0===A&&(A=!1),void 0!==e&&"number"===Ei(e)?A?(this._rgb[3]=e,this):new Bi([this._rgb[0],this._rgb[1],this._rgb[2],e],"rgb"):this._rgb[3]},w.prototype.clipped=function(){return this._rgb._clipped||!1};var ki=w,fi=wA;ki.prototype.darken=function(e){void 0===e&&(e=1);var A=this.lab();return A[0]-=fi.Kn*e,new ki(A,"lab").alpha(this.alpha(),!0)},ki.prototype.brighten=function(e){return void 0===e&&(e=1),this.darken(-e)},ki.prototype.darker=ki.prototype.darken,ki.prototype.brighter=ki.prototype.brighten,w.prototype.get=function(e){var A=e.split("."),t=A[0],i=A[1],n=this[t]();if(i){var s=t.indexOf(i)-("ok"===t.substr(0,2)?2:0);if(s>-1)return n[s];throw new Error("unknown channel "+i+" in mode "+t)}return n};var Ci=w,Oi=c.type,Wi=Math.pow;Ci.prototype.luminance=function(e){if(void 0!==e&&"number"===Oi(e)){if(0===e)return new Ci([0,0,0,this._rgb[3]],"rgb");if(1===e)return new Ci([255,255,255,this._rgb[3]],"rgb");var A=this.luminance(),t=20,i=function(A,n){var s=A.interpolate(n,.5,"rgb"),a=s.luminance();return Math.abs(e-a)<1e-7||!t--?s:a>e?i(A,s):i(s,n)},n=(A>e?i(new Ci([0,0,0]),this):i(this,new Ci([255,255,255]))).rgb();return new Ci(n.concat([this._rgb[3]]))}return bi.apply(void 0,this._rgb.slice(0,3))};var bi=function(e,A,t){return.2126*(e=xi(e))+.7152*(A=xi(A))+.0722*xi(t)},xi=function(e){return(e/=255)<=.03928?e/12.92:Wi((e+.055)/1.055,2.4)},Qi={},Ii=w,yi=c.type,vi=Qi,Di=function(e,A,t){void 0===t&&(t=.5);for(var i=[],n=arguments.length-3;n-- >0;)i[n]=arguments[n+3];var s=i[0]||"lrgb";if(vi[s]||i.length||(s=Object.keys(vi)[0]),!vi[s])throw new Error("interpolation mode "+s+" is not defined");return"object"!==yi(e)&&(e=new Ii(e)),"object"!==yi(A)&&(A=new Ii(A)),vi[s](e,A,t).alpha(e.alpha()+t*(A.alpha()-e.alpha()))},Mi=w,Fi=Di;Mi.prototype.mix=Mi.prototype.interpolate=function(e,A){void 0===A&&(A=.5);for(var t=[],i=arguments.length-2;i-- >0;)t[i]=arguments[i+2];return Fi.apply(void 0,[this,e,A].concat(t))};var Ui=w;Ui.prototype.premultiply=function(e){void 0===e&&(e=!1);var A=this._rgb,t=A[3];return e?(this._rgb=[A[0]*t,A[1]*t,A[2]*t,t],this):new Ui([A[0]*t,A[1]*t,A[2]*t,t],"rgb")};var Ri=w,Ti=wA;Ri.prototype.saturate=function(e){void 0===e&&(e=1);var A=this.lch();return A[1]+=Ti.Kn*e,A[1]<0&&(A[1]=0),new Ri(A,"lch").alpha(this.alpha(),!0)},Ri.prototype.desaturate=function(e){return void 0===e&&(e=1),this.saturate(-e)};var Ni=w,Si=c.type;Ni.prototype.set=function(e,A,t){void 0===t&&(t=!1);var i=e.split("."),n=i[0],s=i[1],a=this[n]();if(s){var o=n.indexOf(s)-("ok"===n.substr(0,2)?2:0);if(o>-1){if("string"==Si(A))switch(A.charAt(0)){case"+":case"-":a[o]+=+A;break;case"*":a[o]*=+A.substr(1);break;case"/":a[o]/=+A.substr(1);break;default:a[o]=+A}else{if("number"!==Si(A))throw new Error("unsupported value for Color.set");a[o]=A}var r=new Ni(a,n);return t?(this._rgb=r._rgb,this):r}throw new Error("unknown channel "+s+" in mode "+n)}return a};var Gi=w;Qi.rgb=function(e,A,t){var i=e._rgb,n=A._rgb;return new Gi(i[0]+t*(n[0]-i[0]),i[1]+t*(n[1]-i[1]),i[2]+t*(n[2]-i[2]),"rgb")};var Hi=w,Li=Math.sqrt,ji=Math.pow;Qi.lrgb=function(e,A,t){var i=e._rgb,n=i[0],s=i[1],a=i[2],o=A._rgb,r=o[0],l=o[1],c=o[2];return new Hi(Li(ji(n,2)*(1-t)+ji(r,2)*t),Li(ji(s,2)*(1-t)+ji(l,2)*t),Li(ji(a,2)*(1-t)+ji(c,2)*t),"rgb")};var Yi=w;Qi.lab=function(e,A,t){var i=e.lab(),n=A.lab();return new Yi(i[0]+t*(n[0]-i[0]),i[1]+t*(n[1]-i[1]),i[2]+t*(n[2]-i[2]),"lab")};var Pi=w,zi=function(e,A,t,i){var n,s,a,o,r,l,c,g,d,u,h,m,p;return"hsl"===i?(a=e.hsl(),o=A.hsl()):"hsv"===i?(a=e.hsv(),o=A.hsv()):"hcg"===i?(a=e.hcg(),o=A.hcg()):"hsi"===i?(a=e.hsi(),o=A.hsi()):"lch"===i||"hcl"===i?(i="hcl",a=e.hcl(),o=A.hcl()):"oklch"===i&&(a=e.oklch().reverse(),o=A.oklch().reverse()),"h"!==i.substr(0,1)&&"oklch"!==i||(r=(n=a)[0],c=n[1],d=n[2],l=(s=o)[0],g=s[1],u=s[2]),isNaN(r)||isNaN(l)?isNaN(r)?isNaN(l)?m=Number.NaN:(m=l,1!=d&&0!=d||"hsv"==i||(h=g)):(m=r,1!=u&&0!=u||"hsv"==i||(h=c)):m=r+t*(l>r&&l-r>180?l-(r+360):l<r&&r-l>180?l+360-r:l-r),void 0===h&&(h=c+t*(g-c)),p=d+t*(u-d),new Pi("oklch"===i?[p,h,m]:[m,h,p],i)},Ki=zi,Ji=function(e,A,t){return Ki(e,A,t,"lch")};Qi.lch=Ji,Qi.hcl=Ji;var qi=w;Qi.num=function(e,A,t){var i=e.num(),n=A.num();return new qi(i+t*(n-i),"num")};var Zi=zi;Qi.hcg=function(e,A,t){return Zi(e,A,t,"hcg")};var Vi=zi;Qi.hsi=function(e,A,t){return Vi(e,A,t,"hsi")};var Xi=zi;Qi.hsl=function(e,A,t){return Xi(e,A,t,"hsl")};var _i=zi;Qi.hsv=function(e,A,t){return _i(e,A,t,"hsv")};var $i=w;Qi.oklab=function(e,A,t){var i=e.oklab(),n=A.oklab();return new $i(i[0]+t*(n[0]-i[0]),i[1]+t*(n[1]-i[1]),i[2]+t*(n[2]-i[2]),"oklab")};var en=zi;Qi.oklch=function(e,A,t){return en(e,A,t,"oklch")};var An=w,tn=c.clip_rgb,nn=Math.pow,sn=Math.sqrt,an=Math.PI,on=Math.cos,rn=Math.sin,ln=Math.atan2,cn=function(e,A){for(var t=e.length,i=[0,0,0,0],n=0;n<e.length;n++){var s=e[n],a=A[n]/t,o=s._rgb;i[0]+=nn(o[0],2)*a,i[1]+=nn(o[1],2)*a,i[2]+=nn(o[2],2)*a,i[3]+=o[3]*a}return i[0]=sn(i[0]),i[1]=sn(i[1]),i[2]=sn(i[2]),i[3]>.9999999&&(i[3]=1),new An(tn(i))},gn=E,dn=c.type,un=Math.pow,hn=function(e){var A="rgb",t=gn("#ccc"),i=0,n=[0,1],s=[],a=[0,0],o=!1,r=[],l=!1,c=0,g=1,d=!1,u={},h=!0,m=1,p=function(e){if((e=e||["#fff","#000"])&&"string"===dn(e)&&gn.brewer&&gn.brewer[e.toLowerCase()]&&(e=gn.brewer[e.toLowerCase()]),"array"===dn(e)){1===e.length&&(e=[e[0],e[0]]),e=e.slice(0);for(var A=0;A<e.length;A++)e[A]=gn(e[A]);s.length=0;for(var t=0;t<e.length;t++)s.push(t/(e.length-1))}return k(),r=e},w=function(e){return e},B=function(e){return e},E=function(e,i){var n,l;if(null==i&&(i=!1),isNaN(e)||null===e)return t;l=i?e:o&&o.length>2?function(e){if(null!=o){for(var A=o.length-1,t=0;t<A&&e>=o[t];)t++;return t-1}return 0}(e)/(o.length-2):g!==c?(e-c)/(g-c):1,l=B(l),i||(l=w(l)),1!==m&&(l=un(l,m)),l=a[0]+l*(1-a[0]-a[1]),l=Math.min(1,Math.max(0,l));var d=Math.floor(1e4*l);if(h&&u[d])n=u[d];else{if("array"===dn(r))for(var p=0;p<s.length;p++){var E=s[p];if(l<=E){n=r[p];break}if(l>=E&&p===s.length-1){n=r[p];break}if(l>E&&l<s[p+1]){l=(l-E)/(s[p+1]-E),n=gn.interpolate(r[p],r[p+1],l,A);break}}else"function"===dn(r)&&(n=r(l));h&&(u[d]=n)}return n},k=function(){return u={}};p(e);var f=function(e){var A=gn(E(e));return l&&A[l]?A[l]():A};return f.classes=function(e){if(null!=e){if("array"===dn(e))o=e,n=[e[0],e[e.length-1]];else{var A=gn.analyze(n);o=0===e?[A.min,A.max]:gn.limits(A,"e",e)}return f}return o},f.domain=function(e){if(!arguments.length)return n;c=e[0],g=e[e.length-1],s=[];var A=r.length;if(e.length===A&&c!==g)for(var t=0,i=Array.from(e);t<i.length;t+=1){var a=i[t];s.push((a-c)/(g-c))}else{for(var o=0;o<A;o++)s.push(o/(A-1));if(e.length>2){var l=e.map((function(A,t){return t/(e.length-1)})),d=e.map((function(e){return(e-c)/(g-c)}));d.every((function(e,A){return l[A]===e}))||(B=function(e){if(e<=0||e>=1)return e;for(var A=0;e>=d[A+1];)A++;var t=(e-d[A])/(d[A+1]-d[A]);return l[A]+t*(l[A+1]-l[A])})}}return n=[c,g],f},f.mode=function(e){return arguments.length?(A=e,k(),f):A},f.range=function(e,A){return p(e),f},f.out=function(e){return l=e,f},f.spread=function(e){return arguments.length?(i=e,f):i},f.correctLightness=function(e){return null==e&&(e=!0),d=e,k(),w=d?function(e){for(var A=E(0,!0).lab()[0],t=E(1,!0).lab()[0],i=A>t,n=E(e,!0).lab()[0],s=A+(t-A)*e,a=n-s,o=0,r=1,l=20;Math.abs(a)>.01&&l-- >0;)i&&(a*=-1),a<0?(o=e,e+=.5*(r-e)):(r=e,e+=.5*(o-e)),a=(n=E(e,!0).lab()[0])-s;return e}:function(e){return e},f},f.padding=function(e){return null!=e?("number"===dn(e)&&(e=[e,e]),a=e,f):a},f.colors=function(A,t){arguments.length<2&&(t="hex");var i=[];if(0===arguments.length)i=r.slice(0);else if(1===A)i=[f(.5)];else if(A>1){var s=n[0],a=n[1]-s;i=function(e,A,t){for(var i=[],n=e<A,s=t?n?A+1:A-1:A,a=e;n?a<s:a>s;n?a++:a--)i.push(a);return i}(0,A,!1).map((function(e){return f(s+e/(A-1)*a)}))}else{e=[];var l=[];if(o&&o.length>2)for(var c=1,g=o.length,d=1<=g;d?c<g:c>g;d?c++:c--)l.push(.5*(o[c-1]+o[c]));else l=n;i=l.map((function(e){return f(e)}))}return gn[t]&&(i=i.map((function(e){return e[t]()}))),i},f.cache=function(e){return null!=e?(h=e,f):h},f.gamma=function(e){return null!=e?(m=e,f):m},f.nodata=function(e){return null!=e?(t=gn(e),f):t},f};var mn=w,pn=hn,wn=E,Bn=function(e,A,t){if(!Bn[t])throw new Error("unknown blend mode "+t);return Bn[t](e,A)},En=function(e){return function(A,t){var i=wn(t).rgb(),n=wn(A).rgb();return wn.rgb(e(i,n))}},kn=function(e){return function(A,t){var i=[];return i[0]=e(A[0],t[0]),i[1]=e(A[1],t[1]),i[2]=e(A[2],t[2]),i}};Bn.normal=En(kn((function(e){return e}))),Bn.multiply=En(kn((function(e,A){return e*A/255}))),Bn.screen=En(kn((function(e,A){return 255*(1-(1-e/255)*(1-A/255))}))),Bn.overlay=En(kn((function(e,A){return A<128?2*e*A/255:255*(1-2*(1-e/255)*(1-A/255))}))),Bn.darken=En(kn((function(e,A){return e>A?A:e}))),Bn.lighten=En(kn((function(e,A){return e>A?e:A}))),Bn.dodge=En(kn((function(e,A){return 255===e||(e=A/255*255/(1-e/255))>255?255:e}))),Bn.burn=En(kn((function(e,A){return 255*(1-(1-A/255)/(e/255))})));for(var fn=Bn,Cn=c.type,On=c.clip_rgb,Wn=c.TWOPI,bn=Math.pow,xn=Math.sin,Qn=Math.cos,In=E,yn=w,vn=Math.floor,Dn=Math.random,Mn=a,Fn=Math.log,Un=Math.pow,Rn=Math.floor,Tn=Math.abs,Nn=function(e,A){void 0===A&&(A=null);var t={min:Number.MAX_VALUE,max:-1*Number.MAX_VALUE,sum:0,values:[],count:0};return"object"===Mn(e)&&(e=Object.values(e)),e.forEach((function(e){A&&"object"===Mn(e)&&(e=e[A]),null==e||isNaN(e)||(t.values.push(e),t.sum+=e,e<t.min&&(t.min=e),e>t.max&&(t.max=e),t.count+=1)})),t.domain=[t.min,t.max],t.limits=function(e,A){return Sn(t,e,A)},t},Sn=function(e,A,t){void 0===A&&(A="equal"),void 0===t&&(t=7),"array"==Mn(e)&&(e=Nn(e));var i=e.min,n=e.max,s=e.values.sort((function(e,A){return e-A}));if(1===t)return[i,n];var a=[];if("c"===A.substr(0,1)&&(a.push(i),a.push(n)),"e"===A.substr(0,1)){a.push(i);for(var o=1;o<t;o++)a.push(i+o/t*(n-i));a.push(n)}else if("l"===A.substr(0,1)){if(i<=0)throw new Error("Logarithmic scales are only possible for values > 0");var r=Math.LOG10E*Fn(i),l=Math.LOG10E*Fn(n);a.push(i);for(var c=1;c<t;c++)a.push(Un(10,r+c/t*(l-r)));a.push(n)}else if("q"===A.substr(0,1)){a.push(i);for(var g=1;g<t;g++){var d=(s.length-1)*g/t,u=Rn(d);if(u===d)a.push(s[u]);else{var h=d-u;a.push(s[u]*(1-h)+s[u+1]*h)}}a.push(n)}else if("k"===A.substr(0,1)){var m,p=s.length,w=new Array(p),B=new Array(t),E=!0,k=0,f=null;(f=[]).push(i);for(var C=1;C<t;C++)f.push(i+C/t*(n-i));for(f.push(n);E;){for(var O=0;O<t;O++)B[O]=0;for(var W=0;W<p;W++)for(var b=s[W],x=Number.MAX_VALUE,Q=void 0,I=0;I<t;I++){var y=Tn(f[I]-b);y<x&&(x=y,Q=I),B[Q]++,w[W]=Q}for(var v=new Array(t),D=0;D<t;D++)v[D]=null;for(var M=0;M<p;M++)null===v[m=w[M]]?v[m]=s[M]:v[m]+=s[M];for(var F=0;F<t;F++)v[F]*=1/B[F];E=!1;for(var U=0;U<t;U++)if(v[U]!==f[U]){E=!0;break}f=v,++k>200&&(E=!1)}for(var R={},T=0;T<t;T++)R[T]=[];for(var N=0;N<p;N++)R[m=w[N]].push(s[N]);for(var S=[],G=0;G<t;G++)S.push(R[G][0]),S.push(R[G][R[G].length-1]);S=S.sort((function(e,A){return e-A})),a.push(S[0]);for(var H=1;H<S.length;H+=2){var L=S[H];isNaN(L)||-1!==a.indexOf(L)||a.push(L)}}return a},Gn={analyze:Nn,limits:Sn},Hn=w,Ln=w,jn=Math.sqrt,Yn=Math.pow,Pn=Math.min,zn=Math.max,Kn=Math.atan2,Jn=Math.abs,qn=Math.cos,Zn=Math.sin,Vn=Math.exp,Xn=Math.PI,_n=w,$n=w,es=E,As=hn,ts={cool:function(){return As([es.hsl(180,1,.9),es.hsl(250,.7,.4)])},hot:function(){return As(["#000","#f00","#ff0","#fff"]).mode("rgb")}},is={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec","#f2f2f2"]},ns=0,ss=Object.keys(is);ns<ss.length;ns+=1){var as=ss[ns];is[as.toLowerCase()]=is[as]}var os=is,rs=E;return rs.average=function(e,A,t){void 0===A&&(A="lrgb"),void 0===t&&(t=null);var i=e.length;t||(t=Array.from(new Array(i)).map((function(){return 1})));var n=i/t.reduce((function(e,A){return e+A}));if(t.forEach((function(e,A){t[A]*=n})),e=e.map((function(e){return new An(e)})),"lrgb"===A)return cn(e,t);for(var s=e.shift(),a=s.get(A),o=[],r=0,l=0,c=0;c<a.length;c++)if(a[c]=(a[c]||0)*t[0],o.push(isNaN(a[c])?0:t[0]),"h"===A.charAt(c)&&!isNaN(a[c])){var g=a[c]/180*an;r+=on(g)*t[0],l+=rn(g)*t[0]}var d=s.alpha()*t[0];e.forEach((function(e,i){var n=e.get(A);d+=e.alpha()*t[i+1];for(var s=0;s<a.length;s++)if(!isNaN(n[s]))if(o[s]+=t[i+1],"h"===A.charAt(s)){var c=n[s]/180*an;r+=on(c)*t[i+1],l+=rn(c)*t[i+1]}else a[s]+=n[s]*t[i+1]}));for(var u=0;u<a.length;u++)if("h"===A.charAt(u)){for(var h=ln(l/o[u],r/o[u])/an*180;h<0;)h+=360;for(;h>=360;)h-=360;a[u]=h}else a[u]=a[u]/o[u];return d/=i,new An(a,A).alpha(d>.99999?1:d,!0)},rs.bezier=function(e){var A=function(e){var A,t,i,n,s,a,o;if(e=e.map((function(e){return new mn(e)})),2===e.length)A=e.map((function(e){return e.lab()})),s=A[0],a=A[1],n=function(e){var A=[0,1,2].map((function(A){return s[A]+e*(a[A]-s[A])}));return new mn(A,"lab")};else if(3===e.length)t=e.map((function(e){return e.lab()})),s=t[0],a=t[1],o=t[2],n=function(e){var A=[0,1,2].map((function(A){return(1-e)*(1-e)*s[A]+2*(1-e)*e*a[A]+e*e*o[A]}));return new mn(A,"lab")};else if(4===e.length){var r;i=e.map((function(e){return e.lab()})),s=i[0],a=i[1],o=i[2],r=i[3],n=function(e){var A=[0,1,2].map((function(A){return(1-e)*(1-e)*(1-e)*s[A]+3*(1-e)*(1-e)*e*a[A]+3*(1-e)*e*e*o[A]+e*e*e*r[A]}));return new mn(A,"lab")}}else{if(!(e.length>=5))throw new RangeError("No point in running bezier with only one color.");var l,c,g;l=e.map((function(e){return e.lab()})),g=e.length-1,c=function(e){for(var A=[1,1],t=1;t<e;t++){for(var i=[1],n=1;n<=A.length;n++)i[n]=(A[n]||0)+A[n-1];A=i}return A}(g),n=function(e){var A=1-e,t=[0,1,2].map((function(t){return l.reduce((function(i,n,s){return i+c[s]*Math.pow(A,g-s)*Math.pow(e,s)*n[t]}),0)}));return new mn(t,"lab")}}return n}(e);return A.scale=function(){return pn(A)},A},rs.blend=fn,rs.cubehelix=function(e,A,t,i,n){void 0===e&&(e=300),void 0===A&&(A=-1.5),void 0===t&&(t=1),void 0===i&&(i=1),void 0===n&&(n=[0,1]);var s,a=0;"array"===Cn(n)?s=n[1]-n[0]:(s=0,n=[n,n]);var o=function(o){var r=Wn*((e+120)/360+A*o),l=bn(n[0]+s*o,i),c=(0!==a?t[0]+o*a:t)*l*(1-l)/2,g=Qn(r),d=xn(r);return In(On([255*(l+c*(-.14861*g+1.78277*d)),255*(l+c*(-.29227*g-.90649*d)),255*(l+c*(1.97294*g)),1]))};return o.start=function(A){return null==A?e:(e=A,o)},o.rotations=function(e){return null==e?A:(A=e,o)},o.gamma=function(e){return null==e?i:(i=e,o)},o.hue=function(e){return null==e?t:("array"===Cn(t=e)?0==(a=t[1]-t[0])&&(t=t[1]):a=0,o)},o.lightness=function(e){return null==e?n:("array"===Cn(e)?(n=e,s=e[1]-e[0]):(n=[e,e],s=0),o)},o.scale=function(){return In.scale(o)},o.hue(t),o},rs.mix=rs.interpolate=Di,rs.random=function(){for(var e="#",A=0;A<6;A++)e+="0123456789abcdef".charAt(vn(16*Dn()));return new yn(e,"hex")},rs.scale=hn,rs.analyze=Gn.analyze,rs.contrast=function(e,A){e=new Hn(e),A=new Hn(A);var t=e.luminance(),i=A.luminance();return t>i?(t+.05)/(i+.05):(i+.05)/(t+.05)},rs.deltaE=function(e,A,t,i,n){void 0===t&&(t=1),void 0===i&&(i=1),void 0===n&&(n=1);var s=function(e){return 360*e/(2*Xn)},a=function(e){return 2*Xn*e/360};e=new Ln(e),A=new Ln(A);var o=Array.from(e.lab()),r=o[0],l=o[1],c=o[2],g=Array.from(A.lab()),d=g[0],u=g[1],h=g[2],m=(r+d)/2,p=(jn(Yn(l,2)+Yn(c,2))+jn(Yn(u,2)+Yn(h,2)))/2,w=.5*(1-jn(Yn(p,7)/(Yn(p,7)+Yn(25,7)))),B=l*(1+w),E=u*(1+w),k=jn(Yn(B,2)+Yn(c,2)),f=jn(Yn(E,2)+Yn(h,2)),C=(k+f)/2,O=s(Kn(c,B)),W=s(Kn(h,E)),b=O>=0?O:O+360,x=W>=0?W:W+360,Q=Jn(b-x)>180?(b+x+360)/2:(b+x)/2,I=1-.17*qn(a(Q-30))+.24*qn(a(2*Q))+.32*qn(a(3*Q+6))-.2*qn(a(4*Q-63)),y=x-b;y=Jn(y)<=180?y:x<=b?y+360:y-360,y=2*jn(k*f)*Zn(a(y)/2);var v=d-r,D=f-k,M=1+.015*Yn(m-50,2)/jn(20+Yn(m-50,2)),F=1+.045*C,U=1+.015*C*I,R=30*Vn(-Yn((Q-275)/25,2)),T=-2*jn(Yn(C,7)/(Yn(C,7)+Yn(25,7)))*Zn(2*a(R)),N=jn(Yn(v/(t*M),2)+Yn(D/(i*F),2)+Yn(y/(n*U),2)+T*(D/(i*F))*(y/(n*U)));return zn(0,Pn(100,N))},rs.distance=function(e,A,t){void 0===t&&(t="lab"),e=new _n(e),A=new _n(A);var i=e.get(t),n=A.get(t),s=0;for(var a in i){var o=(i[a]||0)-(n[a]||0);s+=o*o}return Math.sqrt(s)},rs.limits=Gn.limits,rs.valid=function(){for(var e=[],A=arguments.length;A--;)e[A]=arguments[A];try{return new(Function.prototype.bind.apply($n,[null].concat(e))),!0}catch(e){return!1}},rs.scales=ts,rs.colors=gt,rs.brewer=os,rs}()}(chroma$1,chroma$1.exports);var chromaExports=chroma$1.exports,chroma=getDefaultExportFromCjs(chromaExports);function hexWithAlpha(e,A){return chroma(e).alpha(A).css()}function has(e,A){return e.hasAttribute(A)}function get(e,A,t){return e.getAttribute(A)||t||""}function getNum(e,A,t){const i=Number(get(e,A));return Number.isNaN(i)?t||0:i}const attrHandlers={stroke:({el:e,exVals:A})=>{const t=get(e,"stroke");A.strokeColor=has(e,"stroke-opacity")?hexWithAlpha(t,getNum(e,"stroke-opacity")):t},"stroke-opacity":({el:e,exVals:A})=>{A.strokeColor=hexWithAlpha(get(e,"stroke","#000000"),getNum(e,"stroke-opacity"))},"stroke-width":({el:e,exVals:A})=>{A.strokeWidth=getNum(e,"stroke-width")},fill:({el:e,exVals:A})=>{const t=get(e,"fill");A.backgroundColor="none"===t?"#00000000":t},"fill-opacity":({el:e,exVals:A})=>{A.backgroundColor=hexWithAlpha(get(e,"fill","#000000"),getNum(e,"fill-opacity"))},opacity:({el:e,exVals:A})=>{A.opacity=getNum(e,"opacity",100)}};function presAttrsToElementValues(e){return[...e.attributes].reduce(((A,t)=>{const i=t.name;return Object.keys(attrHandlers).includes(i)&&attrHandlers[i]({el:e,exVals:A}),A}),{})}function filterAttrsToElementValues(e){const A={};return has(e,"x")&&(A.x=getNum(e,"x")),has(e,"y")&&(A.y=getNum(e,"y")),has(e,"width")&&(A.width=getNum(e,"width")),has(e,"height")&&(A.height=getNum(e,"height")),A}function pointsAttrToPoints(e){let A=[];return has(e,"points")&&(A=get(e,"points").split(" ").map((e=>e.split(",").map(parseFloat)))),A}function getGroupAttrs(e){return e.reduce(((e,{element:A})=>{const t=presAttrsToElementValues(A);return Object.assign(Object.assign({},e),t)}),{})}class Group{constructor(e){this.id=randomId(),this.element=e}}function createExElement(){return{id:randomId(),x:0,y:0,strokeColor:"#000000",backgroundColor:"#000000",fillStyle:"solid",strokeWidth:1,strokeStyle:"solid",roundness:null,roughness:0,opacity:100,width:0,height:0,angle:0,seed:randomInteger(),version:0,versionNonce:0,isDeleted:!1,groupIds:[],boundElementIds:null}}function createExRect(){return Object.assign(Object.assign({},createExElement()),{type:"rectangle"})}function createExLine(){return Object.assign(Object.assign({},createExElement()),{type:"line",points:[]})}function createExEllipse(){return Object.assign(Object.assign({},createExElement()),{type:"ellipse"})}function createExDraw(){return Object.assign(Object.assign({},createExElement()),{type:"line",points:[]})}const transformFunctions={matrix:"matrix",matrix3d:"matrix3d",perspective:"perspective",rotate:"rotate",rotate3d:"rotate3d",rotateX:"rotateX",rotateY:"rotateY",rotateZ:"rotateZ",scale:"scale",scale3d:"scale3d",scaleX:"scaleX",scaleY:"scaleY",scaleZ:"scaleZ",skew:"skew",skewX:"skewX",skewY:"skewY",translate:"translate",translate3d:"translate3d",translateX:"translateX",translateY:"translateY",translateZ:"translateZ"},transformFunctionsArr=Object.keys(transformFunctions),defaultUnits={matrix:"",matrix3d:"",perspective:"perspective",rotate:"deg",rotate3d:"deg",rotateX:"deg",rotateY:"deg",rotateZ:"deg",scale:"",scale3d:"",scaleX:"",scaleY:"",scaleZ:"",skew:"skew",skewX:"deg",skewY:"deg",translate:"px",translate3d:"px",translateX:"px",translateY:"px",translateZ:"px"},svgTransformToCSSTransform=e=>{const A=e.match(/(\w+)\(([^)]*)\)/g);if(!A)return"";const t=A.map((e=>{const A=e.split("(")[0];if(!A)throw new Error("Unable to find transform name");if(!transformFunctionsArr.includes(A))throw new Error(`transform function name "${A}" is not valid`);const t=e.match(/([-+]?[0-9]*\.?[0-9]+)([a-z])*/g);if(!t)return{type:A,values:[]};let i=t.map((e=>{const[t,i]=e.matchAll(/([-+]?[0-9]*\.?[0-9]+)|([a-z])*/g);return{unit:i[0]||defaultUnits[A],value:t[0]}}));return i&&"rotate"===A&&(null==i?void 0:i.length)>1&&(i=[i[0]]),{type:A,values:i}}));return t.map((({type:e,values:A})=>`${e}(${A.map((({unit:e,value:A})=>`${A}${e}`)).join(", ")})`)).join(" ")};function getElementMatrix(e){if(e.hasAttribute("transform")){const A=new DOMMatrix(svgTransformToCSSTransform(e.getAttribute("transform")||""));return multiply(create$1(),create$1(),A.toFloat32Array())}return create$1()}function getTransformMatrix(e,A){return A.map((({element:e})=>getElementMatrix(e))).concat([getElementMatrix(e)]).reduce(((e,A)=>multiply(e,e,A)),create$1())}function transformPoints(e,A){return e.map((([e,t])=>{const[i,n]=transformMat4(create(),fromValues(e,t,1),A);return[i,n]}))}function distance(e,A){return Math.sqrt(distanceSq(e,A))}function distanceSq(e,A){return Math.pow(e[0]-A[0],2)+Math.pow(e[1]-A[1],2)}function distanceToSegmentSq(e,A,t){const i=distanceSq(A,t);if(0===i)return distanceSq(e,A);let n=((e[0]-A[0])*(t[0]-A[0])+(e[1]-A[1])*(t[1]-A[1]))/i;return n=Math.max(0,Math.min(1,n)),distanceSq(e,lerp(A,t,n))}function lerp(e,A,t){return[e[0]+(A[0]-e[0])*t,e[1]+(A[1]-e[1])*t]}function flatness(e,A){const t=e[A+0],i=e[A+1],n=e[A+2],s=e[A+3];let a=3*i[0]-2*t[0]-s[0];a*=a;let o=3*i[1]-2*t[1]-s[1];o*=o;let r=3*n[0]-2*s[0]-t[0];r*=r;let l=3*n[1]-2*s[1]-t[1];return l*=l,a<r&&(a=r),o<l&&(o=l),a+o}function getPointsOnBezierCurveWithSplitting(e,A,t,i){const n=i||[];if(flatness(e,A)<t){const t=e[A+0];n.length?distance(n[n.length-1],t)>1&&n.push(t):n.push(t),n.push(e[A+3])}else{const i=.5,s=e[A+0],a=e[A+1],o=e[A+2],r=e[A+3],l=lerp(s,a,i),c=lerp(a,o,i),g=lerp(o,r,i),d=lerp(l,c,i),u=lerp(c,g,i),h=lerp(d,u,i);getPointsOnBezierCurveWithSplitting([s,l,d,h],0,t,n),getPointsOnBezierCurveWithSplitting([h,u,g,r],0,t,n)}return n}function simplify(e,A){return simplifyPoints(e,0,e.length,A)}function simplifyPoints(e,A,t,i,n){const s=n||[],a=e[A],o=e[t-1];let r=0,l=1;for(let i=A+1;i<t-1;++i){const A=distanceToSegmentSq(e[i],a,o);A>r&&(r=A,l=i)}return Math.sqrt(r)>i?(simplifyPoints(e,A,l+1,i,s),simplifyPoints(e,l,t,i,s)):(s.length||s.push(a),s.push(o)),s}function pointsOnBezierCurves(e,A=.15,t){const i=[],n=(e.length-1)/3;for(let t=0;t<n;t++)getPointsOnBezierCurveWithSplitting(e,3*t,A,i);return t&&t>0?simplifyPoints(i,0,i.length,t):i}const COMMAND=0,NUMBER=1,EOD=2,PARAMS={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0};function tokenize(e){const A=new Array;for(;""!==e;)if(e.match(/^([ \t\r\n,]+)/))e=e.substr(RegExp.$1.length);else if(e.match(/^([aAcChHlLmMqQsStTvVzZ])/))A[A.length]={type:COMMAND,text:RegExp.$1},e=e.substr(RegExp.$1.length);else{if(!e.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];A[A.length]={type:NUMBER,text:`${parseFloat(RegExp.$1)}`},e=e.substr(RegExp.$1.length)}return A[A.length]={type:EOD,text:""},A}function isType(e,A){return e.type===A}function parsePath(e){const A=[],t=tokenize(e);let i="BOD",n=0,s=t[n];for(;!isType(s,EOD);){let a=0;const o=[];if("BOD"===i){if("M"!==s.text&&"m"!==s.text)return parsePath("M0,0"+e);n++,a=PARAMS[s.text],i=s.text}else isType(s,NUMBER)?a=PARAMS[i]:(n++,a=PARAMS[s.text],i=s.text);if(!(n+a<t.length))throw new Error("Path data ended short");for(let e=n;e<n+a;e++){const A=t[e];if(!isType(A,NUMBER))throw new Error("Param not a number: "+i+","+A.text);o[o.length]=+A.text}if("number"!=typeof PARAMS[i])throw new Error("Bad segment: "+i);{const e={key:i,data:o};A.push(e),n+=a,s=t[n],"M"===i&&(i="L"),"m"===i&&(i="l")}}return A}function absolutize(e){let A=0,t=0,i=0,n=0;const s=[];for(const{key:a,data:o}of e)switch(a){case"M":s.push({key:"M",data:[...o]}),[A,t]=o,[i,n]=o;break;case"m":A+=o[0],t+=o[1],s.push({key:"M",data:[A,t]}),i=A,n=t;break;case"L":s.push({key:"L",data:[...o]}),[A,t]=o;break;case"l":A+=o[0],t+=o[1],s.push({key:"L",data:[A,t]});break;case"C":s.push({key:"C",data:[...o]}),A=o[4],t=o[5];break;case"c":{const e=o.map(((e,i)=>i%2?e+t:e+A));s.push({key:"C",data:e}),A=e[4],t=e[5];break}case"Q":s.push({key:"Q",data:[...o]}),A=o[2],t=o[3];break;case"q":{const e=o.map(((e,i)=>i%2?e+t:e+A));s.push({key:"Q",data:e}),A=e[2],t=e[3];break}case"A":s.push({key:"A",data:[...o]}),A=o[5],t=o[6];break;case"a":A+=o[5],t+=o[6],s.push({key:"A",data:[o[0],o[1],o[2],o[3],o[4],A,t]});break;case"H":s.push({key:"H",data:[...o]}),A=o[0];break;case"h":A+=o[0],s.push({key:"H",data:[A]});break;case"V":s.push({key:"V",data:[...o]}),t=o[0];break;case"v":t+=o[0],s.push({key:"V",data:[t]});break;case"S":s.push({key:"S",data:[...o]}),A=o[2],t=o[3];break;case"s":{const e=o.map(((e,i)=>i%2?e+t:e+A));s.push({key:"S",data:e}),A=e[2],t=e[3];break}case"T":s.push({key:"T",data:[...o]}),A=o[0],t=o[1];break;case"t":A+=o[0],t+=o[1],s.push({key:"T",data:[A,t]});break;case"Z":case"z":s.push({key:"Z",data:[]}),A=i,t=n}return s}function normalize(e){const A=[];let t="",i=0,n=0,s=0,a=0,o=0,r=0;for(const{key:l,data:c}of e){switch(l){case"M":A.push({key:"M",data:[...c]}),[i,n]=c,[s,a]=c;break;case"C":A.push({key:"C",data:[...c]}),i=c[4],n=c[5],o=c[2],r=c[3];break;case"L":A.push({key:"L",data:[...c]}),[i,n]=c;break;case"H":i=c[0],A.push({key:"L",data:[i,n]});break;case"V":n=c[0],A.push({key:"L",data:[i,n]});break;case"S":{let e=0,s=0;"C"===t||"S"===t?(e=i+(i-o),s=n+(n-r)):(e=i,s=n),A.push({key:"C",data:[e,s,...c]}),o=c[0],r=c[1],i=c[2],n=c[3];break}case"T":{const[e,s]=c;let a=0,l=0;"Q"===t||"T"===t?(a=i+(i-o),l=n+(n-r)):(a=i,l=n);const g=i+2*(a-i)/3,d=n+2*(l-n)/3,u=e+2*(a-e)/3,h=s+2*(l-s)/3;A.push({key:"C",data:[g,d,u,h,e,s]}),o=a,r=l,i=e,n=s;break}case"Q":{const[e,t,s,a]=c,l=i+2*(e-i)/3,g=n+2*(t-n)/3,d=s+2*(e-s)/3,u=a+2*(t-a)/3;A.push({key:"C",data:[l,g,d,u,s,a]}),o=e,r=t,i=s,n=a;break}case"A":{const e=Math.abs(c[0]),t=Math.abs(c[1]),s=c[2],a=c[3],o=c[4],r=c[5],l=c[6];0===e||0===t?(A.push({key:"C",data:[i,n,r,l,r,l]}),i=r,n=l):i===r&&n===l||(arcToCubicCurves(i,n,r,l,e,t,s,a,o).forEach((function(e){A.push({key:"C",data:e})})),i=r,n=l);break}case"Z":A.push({key:"Z",data:[]}),i=s,n=a}t=l}return A}function degToRad(e){return Math.PI*e/180}function rotate(e,A,t){return[e*Math.cos(t)-A*Math.sin(t),e*Math.sin(t)+A*Math.cos(t)]}function arcToCubicCurves(e,A,t,i,n,s,a,o,r,l){const c=degToRad(a);let g=[],d=0,u=0,h=0,m=0;if(l)[d,u,h,m]=l;else{[e,A]=rotate(e,A,-c),[t,i]=rotate(t,i,-c);const a=(e-t)/2,l=(A-i)/2;let g=a*a/(n*n)+l*l/(s*s);g>1&&(g=Math.sqrt(g),n*=g,s*=g);const p=n*n,w=s*s,B=p*w-p*l*l-w*a*a,E=p*l*l+w*a*a,k=(o===r?-1:1)*Math.sqrt(Math.abs(B/E));h=k*n*l/s+(e+t)/2,m=k*-s*a/n+(A+i)/2,d=Math.asin(parseFloat(((A-m)/s).toFixed(9))),u=Math.asin(parseFloat(((i-m)/s).toFixed(9))),e<h&&(d=Math.PI-d),t<h&&(u=Math.PI-u),d<0&&(d=2*Math.PI+d),u<0&&(u=2*Math.PI+u),r&&d>u&&(d-=2*Math.PI),!r&&u>d&&(u-=2*Math.PI)}let p=u-d;if(Math.abs(p)>120*Math.PI/180){const e=u,A=t,o=i;u=r&&u>d?d+120*Math.PI/180*1:d+120*Math.PI/180*-1,g=arcToCubicCurves(t=h+n*Math.cos(u),i=m+s*Math.sin(u),A,o,n,s,a,0,r,[u,e,h,m])}p=u-d;const w=Math.cos(d),B=Math.sin(d),E=Math.cos(u),k=Math.sin(u),f=Math.tan(p/4),C=4/3*n*f,O=4/3*s*f,W=[e,A],b=[e+C*B,A-O*w],x=[t+C*k,i-O*E],Q=[t,i];if(b[0]=2*W[0]-b[0],b[1]=2*W[1]-b[1],l)return[b,x,Q].concat(g);{g=[b,x,Q].concat(g);const e=[];for(let A=0;A<g.length;A+=3){const t=rotate(g[A][0],g[A][1],c),i=rotate(g[A+1][0],g[A+1][1],c),n=rotate(g[A+2][0],g[A+2][1],c);e.push([t[0],t[1],i[0],i[1],n[0],n[1]])}return e}}function pointsOnPath(e,A,t){const i=normalize(absolutize(parsePath(e))),n=[];let s=[],a=[0,0],o=[];const r=()=>{o.length>=4&&s.push(...pointsOnBezierCurves(o,A)),o=[]},l=()=>{r(),s.length&&(n.push(s),s=[])};for(const{key:e,data:A}of i)switch(e){case"M":l(),a=[A[0],A[1]],s.push(a);break;case"L":r(),s.push([A[0],A[1]]);break;case"C":if(!o.length){const e=s.length?s[s.length-1]:a;o.push([e[0],e[1]])}o.push([A[0],A[1]]),o.push([A[2],A[3]]),o.push([A[4],A[5]]);break;case"Z":r(),s.push([a[0],a[1]])}if(l(),!t)return n;const c=[];for(const e of n){const A=simplify(e,t);A.length&&c.push(A)}return c}const SUPPORTED_TAGS=["svg","path","g","use","circle","ellipse","rect","polyline","polygon"],nodeValidator=e=>SUPPORTED_TAGS.includes(e.tagName)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT;function createTreeWalker(e){return document.createTreeWalker(e,NodeFilter.SHOW_ALL,{acceptNode:nodeValidator})}const presAttrs=(e,A)=>Object.assign(Object.assign(Object.assign({},getGroupAttrs(A)),presAttrsToElementValues(e)),filterAttrsToElementValues(e)),skippedUseAttrs=["id"],allwaysPassedUseAttrs=["x","y","width","height","href","xlink:href"],getDefElWithCorrectAttrs=(e,A)=>[...A.attributes].reduce(((t,i)=>(skippedUseAttrs.includes(i.value)||e.hasAttribute(i.name)&&!allwaysPassedUseAttrs.includes(i.name)||t.setAttribute(i.name,A.getAttribute(i.name)||""),t)),e.cloneNode()),walkers={svg:e=>{walk(e,e.tw.nextNode())},g:e=>{const A=Object.assign(Object.assign({},e),{tw:createTreeWalker(e.tw.currentNode),groups:[...e.groups,new Group(e.tw.currentNode)]});walk(A,A.tw.nextNode()),walk(e,e.tw.nextSibling())},use:e=>{const{root:A,tw:t,scene:i}=e,n=t.currentNode,s=n.getAttribute("href")||n.getAttribute("xlink:href");if(!s)throw new Error("unable to get id of use element");const a=A.querySelector(s);if(!a)throw new Error(`unable to find def element with id: ${s}`);const o=new ExcalidrawScene,r=getDefElWithCorrectAttrs(a,n);walk(Object.assign(Object.assign({},e),{scene:o,tw:createTreeWalker(r)}),r);const l=o.elements.pop();l&&i.elements.push(l),walk(e,e.tw.nextNode())},circle:e=>{const{tw:A,scene:t,groups:i}=e,n=A.currentNode,s=getNum(n,"r",0),a=2*s,o=getNum(n,"x",0)+getNum(n,"cx",0)-s,r=getNum(n,"y",0)+getNum(n,"cy",0)-s,l=getTransformMatrix(n,i),c=fromValues$1(a,0,0,0,0,a,0,0,0,0,1,0,o,r,0,1),g=multiply(create$1(),l,c),d=Object.assign(Object.assign(Object.assign({},createExEllipse()),presAttrs(n,i)),{x:g[12],y:g[13],width:g[0],height:g[5],groupIds:i.map((e=>e.id))});t.elements.push(d),walk(e,A.nextNode())},ellipse:e=>{const{tw:A,scene:t,groups:i}=e,n=A.currentNode,s=getNum(n,"rx",0),a=getNum(n,"ry",0),o=getNum(n,"cx",0),r=getNum(n,"cy",0),l=getNum(n,"x",0)+o-s,c=getNum(n,"y",0)+r-a,g=2*s,d=2*a,u=getTransformMatrix(n,i),h=fromValues$1(g,0,0,0,0,d,0,0,0,0,1,0,l,c,0,1),m=multiply(create$1(),u,h),p=Object.assign(Object.assign(Object.assign({},createExEllipse()),presAttrs(n,i)),{x:m[12],y:m[13],width:m[0],height:m[5],groupIds:i.map((e=>e.id))});t.elements.push(p),walk(e,A.nextNode())},line:e=>{walk(e,e.tw.nextNode())},polygon:e=>{const{tw:A,scene:t,groups:i}=e,n=A.currentNode,s=transformPoints(pointsAttrToPoints(n),getTransformMatrix(n,i)),a=s[0][0],o=s[0][1],r=s.map((([e,A])=>[e-a,A-o])),[l,c]=dimensionsFromPoints(r),g=Object.assign(Object.assign(Object.assign(Object.assign({},createExLine()),getGroupAttrs(i)),presAttrsToElementValues(n)),{points:r.concat([[0,0]]),x:a,y:o,width:l,height:c});t.elements.push(g),walk(e,e.tw.nextNode())},polyline:e=>{const{tw:A,scene:t,groups:i}=e,n=A.currentNode,s=getTransformMatrix(n,i),a=transformPoints(pointsAttrToPoints(n),s),o=a[0][0],r=a[0][1],l=a.map((([e,A])=>[e-o,A-r])),[c,g]=dimensionsFromPoints(l),d=has(n,"fill"),u=get(n,"fill"),h=!d||d&&"none"!==u,m=Object.assign(Object.assign(Object.assign(Object.assign({},createExLine()),getGroupAttrs(i)),presAttrsToElementValues(n)),{points:l.concat(h?[[0,0]]:[]),x:o,y:r,width:c,height:g});t.elements.push(m),walk(e,e.tw.nextNode())},rect:e=>{const{tw:A,scene:t,groups:i}=e,n=A.currentNode,s=getNum(n,"x",0),a=getNum(n,"y",0),o=getNum(n,"width",0),r=getNum(n,"height",0),l=getTransformMatrix(n,i),c=fromValues$1(o,0,0,0,0,r,0,0,0,0,1,0,s,a,0,1),g=multiply(create$1(),l,c),d=n.hasAttribute("rx")||n.hasAttribute("ry"),u=Object.assign(Object.assign(Object.assign({},createExRect()),presAttrs(n,i)),{x:g[12],y:g[13],width:g[0],height:g[5],roundness:d?{type:ROUNDNESS.LEGACY}:null});t.elements.push(u),walk(e,e.tw.nextNode())},path:e=>{const{tw:A,scene:t,groups:i}=e,n=A.currentNode,s=getTransformMatrix(n,i),a=pointsOnPath(get(n,"d")),o=get(n,"fill","black"),r=get(n,"fill-rule","nonzero");let l=[],c=randomId();switch(r){case"nonzero":let e="clockwise";l=a.map(((A,t)=>{const a=transformPoints(A,clone(s)),r=a[0][0],l=a[0][1],[g,d]=dimensionsFromPoints(a),u=a.map((([e,A])=>[e-r,A-l])),h=getWindingOrder(u);0===t&&(e=h,c=randomId());let m=o;return e!==h&&(m="#FFFFFF"),Object.assign(Object.assign(Object.assign(Object.assign({},createExDraw()),{strokeWidth:0,strokeColor:"#00000000"}),presAttrs(n,i)),{points:u,backgroundColor:m,width:g,height:d,x:r+getNum(n,"x",0),y:l+getNum(n,"y",0),groupIds:[c]})}));break;case"evenodd":l=a.map(((e,A)=>{const t=transformPoints(e,clone(s)),a=t[0][0],o=t[0][1],[r,l]=dimensionsFromPoints(t),g=t.map((([e,A])=>[e-a,A-o]));return 0===A&&(c=randomId()),Object.assign(Object.assign(Object.assign({},createExDraw()),presAttrs(n,i)),{points:g,width:r,height:l,x:a+getNum(n,"x",0),y:o+getNum(n,"y",0)})}))}t.elements=t.elements.concat(l),walk(e,A.nextNode())}};function walk(e,A){if(!A)return;const t=A.nodeName;walkers[t]&&walkers[t](e)}const svgToExcalidraw=e=>{const A=(new DOMParser).parseFromString(e,"image/svg+xml"),t=A.querySelectorAll("parsererror"),i=t.length>0;let n=null;if(i)console.error("There were errors while parsing the given SVG: ",[...t].map((e=>e.innerHTML)));else{const e=createTreeWalker(A),t=new ExcalidrawScene;walk({tw:e,scene:t,groups:[],root:A},e.nextNode()),n=t.elements}return{hasErrors:i,errors:i?t:null,content:n}};function BuildLog$1(){var e,A=0,t=!1;function i(A,t){return e.list.push({type:A,data:t?JSON.parse(JSON.stringify(t)):void 0}),e}return e={list:[],segmentId:function(){return A++},checkIntersection:function(e,A){return i("check",{seg1:e,seg2:A})},segmentChop:function(e,A){return i("div_seg",{seg:e,pt:A}),i("chop",{seg:e,pt:A})},statusRemove:function(e){return i("pop_seg",{seg:e})},segmentUpdate:function(e){return i("seg_update",{seg:e})},segmentNew:function(e,A){return i("new_seg",{seg:e,primary:A})},segmentRemove:function(e){return i("rem_seg",{seg:e})},tempStatus:function(e,A,t){return i("temp_status",{seg:e,above:A,below:t})},rewind:function(e){return i("rewind",{seg:e})},status:function(e,A,t){return i("status",{seg:e,above:A,below:t})},vert:function(A){return A===t?e:(t=A,i("vert",{x:A}))},log:function(e){return"string"!=typeof e&&(e=JSON.stringify(e,!1," ")),i("log",{txt:e})},reset:function(){return i("reset")},selected:function(e){return i("selected",{segs:e})},chainStart:function(e){return i("chain_start",{seg:e})},chainRemoveHead:function(e,A){return i("chain_rem_head",{index:e,pt:A})},chainRemoveTail:function(e,A){return i("chain_rem_tail",{index:e,pt:A})},chainNew:function(e,A){return i("chain_new",{pt1:e,pt2:A})},chainMatch:function(e){return i("chain_match",{index:e})},chainClose:function(e){return i("chain_close",{index:e})},chainAddHead:function(e,A){return i("chain_add_head",{index:e,pt:A})},chainAddTail:function(e,A){return i("chain_add_tail",{index:e,pt:A})},chainConnect:function(e,A){return i("chain_con",{index1:e,index2:A})},chainReverse:function(e){return i("chain_rev",{index:e})},chainJoin:function(e,A){return i("chain_join",{index1:e,index2:A})},done:function(){return i("done")}},e}var buildLog$1=BuildLog$1;function Epsilon$1(e){"number"!=typeof e&&(e=1e-10);var A={epsilon:function(A){return"number"==typeof A&&(e=A),e},pointAboveOrOnLine:function(A,t,i){var n=t[0],s=t[1],a=i[0],o=i[1],r=A[0];return(a-n)*(A[1]-s)-(o-s)*(r-n)>=-e},pointBetween:function(A,t,i){var n=A[1]-t[1],s=i[0]-t[0],a=A[0]-t[0],o=i[1]-t[1],r=a*s+n*o;return!(r<e||r-(s*s+o*o)>-e)},pointsSameX:function(A,t){return Math.abs(A[0]-t[0])<e},pointsSameY:function(A,t){return Math.abs(A[1]-t[1])<e},pointsSame:function(e,t){return A.pointsSameX(e,t)&&A.pointsSameY(e,t)},pointsCompare:function(e,t){return A.pointsSameX(e,t)?A.pointsSameY(e,t)?0:e[1]<t[1]?-1:1:e[0]<t[0]?-1:1},pointsCollinear:function(A,t,i){var n=A[0]-t[0],s=A[1]-t[1],a=t[0]-i[0],o=t[1]-i[1];return Math.abs(n*o-a*s)<e},linesIntersect:function(A,t,i,n){var s=t[0]-A[0],a=t[1]-A[1],o=n[0]-i[0],r=n[1]-i[1],l=s*r-a*o;if(Math.abs(l)<e)return!1;var c=A[0]-i[0],g=A[1]-i[1],d=(o*g-r*c)/l,u=(s*g-a*c)/l,h={alongA:0,alongB:0,pt:[A[0]+d*s,A[1]+d*a]};return h.alongA=d<=-e?-2:d<e?-1:d-1<=-e?0:d-1<e?1:2,h.alongB=u<=-e?-2:u<e?-1:u-1<=-e?0:u-1<e?1:2,h},pointInsideRegion:function(A,t){for(var i=A[0],n=A[1],s=t[t.length-1][0],a=t[t.length-1][1],o=!1,r=0;r<t.length;r++){var l=t[r][0],c=t[r][1];c-n>e!=a-n>e&&(s-l)*(n-c)/(a-c)+l-i>e&&(o=!o),s=l,a=c}return o}};return A}var epsilon$1=Epsilon$1,LinkedList$1={create:function(){var e={root:{root:!0,next:null},exists:function(A){return null!==A&&A!==e.root},isEmpty:function(){return null===e.root.next},getHead:function(){return e.root.next},insertBefore:function(A,t){for(var i=e.root,n=e.root.next;null!==n;){if(t(n))return A.prev=n.prev,A.next=n,n.prev.next=A,void(n.prev=A);i=n,n=n.next}i.next=A,A.prev=i,A.next=null},findTransition:function(A){for(var t=e.root,i=e.root.next;null!==i&&!A(i);)t=i,i=i.next;return{before:t===e.root?null:t,after:i,insert:function(e){return e.prev=t,e.next=i,t.next=e,null!==i&&(i.prev=e),e}}}};return e},node:function(e){return e.prev=null,e.next=null,e.remove=function(){e.prev.next=e.next,e.next&&(e.next.prev=e.prev),e.prev=null,e.next=null},e}},linkedList=LinkedList$1,LinkedList=linkedList;function Intersecter$1(e,A,t){function i(e,A){return{id:t?t.segmentId():-1,start:e,end:A,myFill:{above:null,below:null},otherFill:null}}function n(e,A,i){return{id:t?t.segmentId():-1,start:e,end:A,myFill:{above:i.myFill.above,below:i.myFill.below},otherFill:null}}var s=LinkedList.create();function a(e,t){s.insertBefore(e,(function(i){return n=e.isStart,s=e.pt,a=t,o=i.isStart,r=i.pt,l=i.other.pt,(0!==(c=A.pointsCompare(s,r))?c:A.pointsSame(a,l)?0:n!==o?n?1:-1:A.pointAboveOrOnLine(a,o?r:l,o?l:r)?1:-1)<0;var n,s,a,o,r,l,c}))}function o(e,A){var t=function(e,A){var t=LinkedList.node({isStart:!0,pt:e.start,seg:e,primary:A,other:null,status:null});return a(t,e.end),t}(e,A);return function(e,A,t){var i=LinkedList.node({isStart:!1,pt:A.end,seg:A,primary:t,other:e,status:null});e.other=i,a(i,e.pt)}(t,e,A),t}function r(e,A){var i=n(A,e.seg.end,e.seg);return function(e,A){t&&t.segmentChop(e.seg,A),e.other.remove(),e.seg.end=A,e.other.pt=A,a(e.other,e.pt)}(e,A),o(i,e.primary)}function l(i,n){var a=LinkedList.create();function o(e){return a.findTransition((function(t){var i,n,s,a,o,r;return i=e,n=t.ev,s=i.seg.start,a=i.seg.end,o=n.seg.start,r=n.seg.end,(A.pointsCollinear(s,o,r)?A.pointsCollinear(a,o,r)||A.pointAboveOrOnLine(a,o,r)?1:-1:A.pointAboveOrOnLine(s,o,r)?1:-1)>0}))}function l(e,i){var n=e.seg,s=i.seg,a=n.start,o=n.end,l=s.start,c=s.end;t&&t.checkIntersection(n,s);var g=A.linesIntersect(a,o,l,c);if(!1===g){if(!A.pointsCollinear(a,o,l))return!1;if(A.pointsSame(a,c)||A.pointsSame(o,l))return!1;var d=A.pointsSame(a,l),u=A.pointsSame(o,c);if(d&&u)return i;var h=!d&&A.pointBetween(a,l,c),m=!u&&A.pointBetween(o,l,c);if(d)return m?r(i,o):r(e,c),i;h&&(u||(m?r(i,o):r(e,c)),r(i,a))}else 0===g.alongA&&(-1===g.alongB?r(e,l):0===g.alongB?r(e,g.pt):1===g.alongB&&r(e,c)),0===g.alongB&&(-1===g.alongA?r(i,a):0===g.alongA?r(i,g.pt):1===g.alongA&&r(i,o));return!1}for(var c=[];!s.isEmpty();){var g=s.getHead();if(t&&t.vert(g.pt[0]),g.isStart){t&&t.segmentNew(g.seg,g.primary);var d=o(g),u=d.before?d.before.ev:null,h=d.after?d.after.ev:null;function k(){if(u){var e=l(g,u);if(e)return e}return!!h&&l(g,h)}t&&t.tempStatus(g.seg,!!u&&u.seg,!!h&&h.seg);var m,p,w=k();if(w)e?(p=null===g.seg.myFill.below||g.seg.myFill.above!==g.seg.myFill.below)&&(w.seg.myFill.above=!w.seg.myFill.above):w.seg.otherFill=g.seg.myFill,t&&t.segmentUpdate(w.seg),g.other.remove(),g.remove();if(s.getHead()!==g){t&&t.rewind(g.seg);continue}e?(p=null===g.seg.myFill.below||g.seg.myFill.above!==g.seg.myFill.below,g.seg.myFill.below=h?h.seg.myFill.above:i,g.seg.myFill.above=p?!g.seg.myFill.below:g.seg.myFill.below):null===g.seg.otherFill&&(m=h?g.primary===h.primary?h.seg.otherFill.above:h.seg.myFill.above:g.primary?n:i,g.seg.otherFill={above:m,below:m}),t&&t.status(g.seg,!!u&&u.seg,!!h&&h.seg),g.other.status=d.insert(LinkedList.node({ev:g}))}else{var B=g.status;if(null===B)throw new Error("PolyBool: Zero-length segment detected; your epsilon is probably too small or too large");if(a.exists(B.prev)&&a.exists(B.next)&&l(B.prev.ev,B.next.ev),t&&t.statusRemove(B.ev.seg),B.remove(),!g.primary){var E=g.seg.myFill;g.seg.myFill=g.seg.otherFill,g.seg.otherFill=E}c.push(g.seg)}s.getHead().remove()}return t&&t.done(),c}return e?{addRegion:function(e){for(var t,n=e[e.length-1],s=0;s<e.length;s++){t=n,n=e[s];var a=A.pointsCompare(t,n);0!==a&&o(i(a<0?t:n,a<0?n:t),!0)}},calculate:function(e){return l(e,!1)}}:{calculate:function(e,A,t,i){return e.forEach((function(e){o(n(e.start,e.end,e),!0)})),t.forEach((function(e){o(n(e.start,e.end,e),!1)})),l(A,i)}}}var intersecter=Intersecter$1;function SegmentChainer$1(e,A,t){var i=[],n=[];return e.forEach((function(e){var s=e.start,a=e.end;if(A.pointsSame(s,a))console.warn("PolyBool: Warning: Zero-length segment detected; your epsilon is probably too small or too large");else{t&&t.chainStart(e);for(var o={index:0,matches_head:!1,matches_pt1:!1},r={index:0,matches_head:!1,matches_pt1:!1},l=o,c=0;c<i.length;c++){var g=(p=i[c])[0];p[1];var d=p[p.length-1];if(p[p.length-2],A.pointsSame(g,s)){if(W(c,!0,!0))break}else if(A.pointsSame(g,a)){if(W(c,!0,!1))break}else if(A.pointsSame(d,s)){if(W(c,!1,!0))break}else if(A.pointsSame(d,a)&&W(c,!1,!1))break}if(l===o)return i.push([s,a]),void(t&&t.chainNew(s,a));if(l===r){t&&t.chainMatch(o.index);var u=o.index,h=o.matches_pt1?a:s,m=o.matches_head,p=i[u],w=m?p[0]:p[p.length-1],B=m?p[1]:p[p.length-2],E=m?p[p.length-1]:p[0],k=m?p[p.length-2]:p[1];return A.pointsCollinear(B,w,h)&&(m?(t&&t.chainRemoveHead(o.index,h),p.shift()):(t&&t.chainRemoveTail(o.index,h),p.pop()),w=B),A.pointsSame(E,h)?(i.splice(u,1),A.pointsCollinear(k,E,w)&&(m?(t&&t.chainRemoveTail(o.index,w),p.pop()):(t&&t.chainRemoveHead(o.index,w),p.shift())),t&&t.chainClose(o.index),void n.push(p)):void(m?(t&&t.chainAddHead(o.index,h),p.unshift(h)):(t&&t.chainAddTail(o.index,h),p.push(h)))}var f=o.index,C=r.index;t&&t.chainConnect(f,C);var O=i[f].length<i[C].length;o.matches_head?r.matches_head?O?(b(f),x(f,C)):(b(C),x(C,f)):x(C,f):r.matches_head?x(f,C):O?(b(f),x(C,f)):(b(C),x(f,C))}function W(e,A,t){return l.index=e,l.matches_head=A,l.matches_pt1=t,l===o?(l=r,!1):(l=null,!0)}function b(e){t&&t.chainReverse(e),i[e].reverse()}function x(e,n){var s=i[e],a=i[n],o=s[s.length-1],r=s[s.length-2],l=a[0],c=a[1];A.pointsCollinear(r,o,l)&&(t&&t.chainRemoveTail(e,o),s.pop(),o=r),A.pointsCollinear(o,l,c)&&(t&&t.chainRemoveHead(n,l),a.shift()),t&&t.chainJoin(e,n),i[e]=s.concat(a),i.splice(n,1)}})),n}var segmentChainer=SegmentChainer$1;function select(e,A,t){var i=[];return e.forEach((function(e){var n=(e.myFill.above?8:0)+(e.myFill.below?4:0)+(e.otherFill&&e.otherFill.above?2:0)+(e.otherFill&&e.otherFill.below?1:0);0!==A[n]&&i.push({id:t?t.segmentId():-1,start:e.start,end:e.end,myFill:{above:1===A[n],below:2===A[n]},otherFill:null})})),t&&t.selected(i),i}var PolyBool,SegmentSelector$1={union:function(e,A){return select(e,[0,2,1,0,2,2,0,0,1,0,1,0,0,0,0,0],A)},intersect:function(e,A){return select(e,[0,0,0,0,0,2,0,2,0,0,1,1,0,2,1,0],A)},difference:function(e,A){return select(e,[0,0,0,0,2,0,2,0,1,1,0,0,0,1,2,0],A)},differenceRev:function(e,A){return select(e,[0,2,1,0,0,0,1,1,0,2,0,2,0,0,0,0],A)},xor:function(e,A){return select(e,[0,2,1,0,2,0,0,1,1,0,0,2,0,1,2,0],A)}},segmentSelector=SegmentSelector$1,GeoJSON$1={toPolygon:function(e,A){function t(A){if(A.length<=0)return e.segments({inverted:!1,regions:[]});function t(A){var t=A.slice(0,A.length-1);return e.segments({inverted:!1,regions:[t]})}for(var i=t(A[0]),n=1;n<A.length;n++)i=e.selectDifference(e.combine(i,t(A[n])));return i}if("Polygon"===A.type)return e.polygon(t(A.coordinates));if("MultiPolygon"===A.type){for(var i=e.segments({inverted:!1,regions:[]}),n=0;n<A.coordinates.length;n++)i=e.selectUnion(e.combine(i,t(A.coordinates[n])));return e.polygon(i)}throw new Error("PolyBool: Cannot convert GeoJSON object to PolyBool polygon")},fromPolygon:function(e,A,t){function i(e,t){return A.pointInsideRegion([.5*(e[0][0]+e[1][0]),.5*(e[0][1]+e[1][1])],t)}function n(e){return{region:e,children:[]}}t=e.polygon(e.segments(t));var s=n(null);function a(e,A){for(var t=0;t<e.children.length;t++)if(i(A,(o=e.children[t]).region))return void a(o,A);var s=n(A);for(t=0;t<e.children.length;t++){var o;i((o=e.children[t]).region,A)&&(s.children.push(o),e.children.splice(t,1),t--)}e.children.push(s)}for(var o=0;o<t.regions.length;o++){var r=t.regions[o];r.length<3||a(s,r)}function l(e,A){for(var t=0,i=e[e.length-1][0],n=e[e.length-1][1],s=[],a=0;a<e.length;a++){var o=e[a][0],r=e[a][1];s.push([o,r]),t+=r*i-o*n,i=o,n=r}return t<0!==A&&s.reverse(),s.push([s[0][0],s[0][1]]),s}var c=[];function g(e){var A=[l(e.region,!1)];c.push(A);for(var t=0;t<e.children.length;t++)A.push(d(e.children[t]))}function d(e){for(var A=0;A<e.children.length;A++)g(e.children[A]);return l(e.region,!0)}for(o=0;o<s.children.length;o++)g(s.children[o]);return c.length<=0?{type:"Polygon",coordinates:[]}:1==c.length?{type:"Polygon",coordinates:c[0]}:{type:"MultiPolygon",coordinates:c}}},geojson=GeoJSON$1,BuildLog=buildLog$1,Epsilon=epsilon$1,Intersecter=intersecter,SegmentChainer=segmentChainer,SegmentSelector=segmentSelector,GeoJSON=geojson,buildLog=!1,epsilon=Epsilon();function operate(e,A,t){var i=PolyBool.segments(e),n=PolyBool.segments(A),s=t(PolyBool.combine(i,n));return PolyBool.polygon(s)}PolyBool={buildLog:function(e){return!0===e?buildLog=BuildLog():!1===e&&(buildLog=!1),!1!==buildLog&&buildLog.list},epsilon:function(e){return epsilon.epsilon(e)},segments:function(e){var A=Intersecter(!0,epsilon,buildLog);return e.regions.forEach(A.addRegion),{segments:A.calculate(e.inverted),inverted:e.inverted}},combine:function(e,A){return{combined:Intersecter(!1,epsilon,buildLog).calculate(e.segments,e.inverted,A.segments,A.inverted),inverted1:e.inverted,inverted2:A.inverted}},selectUnion:function(e){return{segments:SegmentSelector.union(e.combined,buildLog),inverted:e.inverted1||e.inverted2}},selectIntersect:function(e){return{segments:SegmentSelector.intersect(e.combined,buildLog),inverted:e.inverted1&&e.inverted2}},selectDifference:function(e){return{segments:SegmentSelector.difference(e.combined,buildLog),inverted:e.inverted1&&!e.inverted2}},selectDifferenceRev:function(e){return{segments:SegmentSelector.differenceRev(e.combined,buildLog),inverted:!e.inverted1&&e.inverted2}},selectXor:function(e){return{segments:SegmentSelector.xor(e.combined,buildLog),inverted:e.inverted1!==e.inverted2}},polygon:function(e){return{regions:SegmentChainer(e.segments,epsilon,buildLog),inverted:e.inverted}},polygonFromGeoJSON:function(e){return GeoJSON.toPolygon(PolyBool,e)},polygonToGeoJSON:function(e){return GeoJSON.fromPolygon(PolyBool,epsilon,e)},union:function(e,A){return operate(e,A,PolyBool.selectUnion)},intersect:function(e,A){return operate(e,A,PolyBool.selectIntersect)},difference:function(e,A){return operate(e,A,PolyBool.selectDifference)},differenceRev:function(e,A){return operate(e,A,PolyBool.selectDifferenceRev)},xor:function(e,A){return operate(e,A,PolyBool.selectXor)}},"object"==typeof window&&(window.PolyBool=PolyBool);var polybooljs=PolyBool,PolyBool$1=getDefaultExportFromCjs(polybooljs);const postOpenAI=async e=>{const A=window.ExcalidrawAutomate.plugin,{openAIAPIToken:t,openAIDefaultTextModel:i,openAIDefaultVisionModel:n}=A.settings,{image:s,text:a,instruction:o,systemPrompt:r}=e,l=s?"image":"text";let c;if(""===t)return new obsidian_module.Notice("OpenAI API Token is not set. Please set it in plugin settings."),null;switch(l){case"text":c={model:i,max_tokens:4096,messages:[...r?[{role:"system",content:r}]:[],{role:"user",content:a},...o?[{role:"user",content:o}]:[]]};break;case"image":c={model:n,max_tokens:4096,messages:[...r?[{role:"system",content:[r]}]:[],{role:"user",content:[{type:"image_url",image_url:s},...o?[o]:[]]}]};break;default:return null}try{return await obsidian_module.requestUrl({url:"https://api.openai.com/v1/chat/completions",method:"post",contentType:"application/json",body:JSON.stringify(c),headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},throw:!1})}catch(e){console.log(e)}return null},extractCodeBlocks=e=>{var A;if(!e)return[];e=e.replaceAll("\r\n","\n").replaceAll("\r","\n");const t=[],i=/```([a-zA-Z0-9]*)\n([\s\S]+?)```/g;let n;for(;null!==(n=i.exec(e));){const e=null!==(A=n[1])&&void 0!==A?A:"",i=n[2].trim();t.push({data:i,type:e})}return t};B([r$d,z,e$a,l$3,b$1,v,h$1,i$5,i$4,h,u,c$1,s]);const GAP=4;class ExcalidrawAutomate{get obsidian(){return obsidian_module__namespace}get LASERPOINTER(){return this.plugin.settings.laserSettings}get DEVICE(){return DEVICE}async postOpenAI(e){return await postOpenAI(e)}extractCodeBlocks(e){return extractCodeBlocks(e)}async convertStringToDataURL(e,A="text/html"){const t=new Blob([e],{type:A}),i=await new Promise((e=>{const A=new FileReader;A.onload=()=>{if("string"==typeof A.result){const t=A.result.split(",")[1];e(t)}else e(null)},A.readAsDataURL(t)}));return i?`data:${A};base64,${i}`:"about:blank"}async checkAndCreateFolder(e){return await checkAndCreateFolder(e)}getNewUniqueFilepath(e,A){return getNewUniqueFilepath(app.vault,e,A)}async getAttachmentFilepath(e){var A;if(!this.targetView||!(null===(A=this.targetView)||void 0===A?void 0:A.file))return errorMessage("targetView not set","getAttachmentFolderAndFilePath()"),null;const t=await getAttachmentsFolderAndFilePath(app,this.targetView.file.path,e);return getNewUniqueFilepath(app.vault,e,t.folder)}compressToBase64(e){return lzStringExports.compressToBase64(e)}decompressFromBase64(e){return lzStringExports.decompressFromBase64(e)}async newFilePrompt(e,A,t,i){var n;if(!this.targetView||!(null===(n=this.targetView)||void 0===n?void 0:n.file))return errorMessage("targetView not set","newFileActions()"),null;const s=emulateKeysForLinkClick(t),a=new NewFileActions({plugin:this.plugin,path:e,keys:s,view:this.targetView,openNewFile:A,parentFile:i});return a.open(),await a.waitForClose}getLeaf(e,A){const t=emulateKeysForLinkClick(null!=A?A:"new-tab");return getLeaf(this.plugin,e,t)}getActiveEmbeddableViewOrEditor(e){if(!this.targetView&&!e)return null;const A=(e=null!=e?e:this.targetView).getActiveEmbeddable();if(A){if(A.node&&A.node.isEditing)return{file:A.node.file,editor:A.node.child.editor};if(A.leaf&&A.leaf.view)return{view:A.leaf.view}}return null}constructor(e,A){this.mostRecentMarkdownSVG=null,this.targetView=null,this.onViewUnloadHook=null,this.onViewModeChangeHook=null,this.onLinkHoverHook=null,this.onLinkClickHook=null,this.onDropHook=null,this.onPasteHook=null,this.onCanvasColorChangeHook=null,this.activeScript=null,this.plugin=e,this.reset(),this.targetView=A}getViewLastPointerPosition(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?this.targetView.currentPosition:(errorMessage("targetView not set","getExcalidrawAPI()"),null)}getAPI(e){return new ExcalidrawAutomate(this.plugin,e)}setFillStyle(e){switch(e){case 0:return this.style.fillStyle="hachure","hachure";case 1:return this.style.fillStyle="cross-hatch","cross-hatch";default:return this.style.fillStyle="solid","solid"}}setStrokeStyle(e){switch(e){case 0:return this.style.strokeStyle="solid","solid";case 1:return this.style.strokeStyle="dashed","dashed";default:return this.style.strokeStyle="dotted","dotted"}}setStrokeSharpness(e){return 0===e?(this.style.roundness={type:ROUNDNESS.LEGACY},"round"):(this.style.roundness=null,"sharp")}setFontFamily(e){switch(e){case 1:return this.style.fontFamily=4,getFontFamily(4);case 2:return this.style.fontFamily=2,getFontFamily(2);case 3:return this.style.fontFamily=3,getFontFamily(3);default:return this.style.fontFamily=1,getFontFamily(1)}}setTheme(e){return 0===e?(this.canvas.theme="light","light"):(this.canvas.theme="dark","dark")}addToGroup(e){const A=nanoid();return e.forEach((e=>{var t,i;null===(i=null===(t=this.elementsDict[e])||void 0===t?void 0:t.groupIds)||void 0===i||i.push(A)})),A}async toClipboard(e){const A=e?await getTemplate(this.plugin,e,!1,new EmbeddedFilesLoader(this.plugin),0):null;let t=A?A.elements:[];t=t.concat(this.getElements()),navigator.clipboard.writeText(JSON.stringify({type:"excalidraw/clipboard",elements:t}))}async getSceneFromFile(e){if(!e)return errorMessage("file not found","getScene()"),null;if(!this.isExcalidrawFile(e))return errorMessage("file is not an Excalidraw file","getScene()"),null;const A=await getTemplate(this.plugin,e.path,!1,new EmbeddedFilesLoader(this.plugin),0);return{elements:A.elements,appState:A.appState}}getElements(){const e=[],A=Object.keys(this.elementsDict);for(let t=0;t<A.length;t++)e.push(this.elementsDict[A[t]]);return e}getElement(e){return this.elementsDict[e]}async create(e){var A,t,i,n,s,a,o,r,l,c,g,d,u,h,m,p,w,B,E,k,f,C,O,W,b,x,Q,I,y,v,D,M,F,U,R,T,N,S,G;const H=(null==e?void 0:e.templatePath)?await getTemplate(this.plugin,e.templatePath,!0,new EmbeddedFilesLoader(this.plugin),0):null;let L,j=H?H.elements:[];if(j=j.concat(this.getElements()),null==e?void 0:e.frontmatterKeys){Object.keys(e.frontmatterKeys).includes("excalidraw-plugin")||(e.frontmatterKeys["excalidraw-plugin"]="parsed"),L="---\n\n";for(const A of Object.keys(e.frontmatterKeys))L+=`${A}: ${""===e.frontmatterKeys[A]?'""':e.frontmatterKeys[A]}\n`;L+="\n---\n"}else L=(null==H?void 0:H.frontmatter)?H.frontmatter:FRONTMATTER;const Y={type:"excalidraw",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,elements:j,appState:{theme:null!==(t=null===(A=null==H?void 0:H.appState)||void 0===A?void 0:A.theme)&&void 0!==t?t:this.canvas.theme,viewBackgroundColor:null!==(n=null===(i=null==H?void 0:H.appState)||void 0===i?void 0:i.viewBackgroundColor)&&void 0!==n?n:this.canvas.viewBackgroundColor,currentItemStrokeColor:null!==(a=null===(s=null==H?void 0:H.appState)||void 0===s?void 0:s.currentItemStrokeColor)&&void 0!==a?a:this.style.strokeColor,currentItemBackgroundColor:null!==(r=null===(o=null==H?void 0:H.appState)||void 0===o?void 0:o.currentItemBackgroundColor)&&void 0!==r?r:this.style.backgroundColor,currentItemFillStyle:null!==(c=null===(l=null==H?void 0:H.appState)||void 0===l?void 0:l.currentItemFillStyle)&&void 0!==c?c:this.style.fillStyle,currentItemStrokeWidth:null!==(d=null===(g=null==H?void 0:H.appState)||void 0===g?void 0:g.currentItemStrokeWidth)&&void 0!==d?d:this.style.strokeWidth,currentItemStrokeStyle:null!==(h=null===(u=null==H?void 0:H.appState)||void 0===u?void 0:u.currentItemStrokeStyle)&&void 0!==h?h:this.style.strokeStyle,currentItemRoughness:null!==(p=null===(m=null==H?void 0:H.appState)||void 0===m?void 0:m.currentItemRoughness)&&void 0!==p?p:this.style.roughness,currentItemOpacity:null!==(B=null===(w=null==H?void 0:H.appState)||void 0===w?void 0:w.currentItemOpacity)&&void 0!==B?B:this.style.opacity,currentItemFontFamily:null!==(k=null===(E=null==H?void 0:H.appState)||void 0===E?void 0:E.currentItemFontFamily)&&void 0!==k?k:this.style.fontFamily,currentItemFontSize:null!==(C=null===(f=null==H?void 0:H.appState)||void 0===f?void 0:f.currentItemFontSize)&&void 0!==C?C:this.style.fontSize,currentItemTextAlign:null!==(W=null===(O=null==H?void 0:H.appState)||void 0===O?void 0:O.currentItemTextAlign)&&void 0!==W?W:this.style.textAlign,currentItemStartArrowhead:null!==(x=null===(b=null==H?void 0:H.appState)||void 0===b?void 0:b.currentItemStartArrowhead)&&void 0!==x?x:this.style.startArrowHead,currentItemEndArrowhead:null!==(I=null===(Q=null==H?void 0:H.appState)||void 0===Q?void 0:Q.currentItemEndArrowhead)&&void 0!==I?I:this.style.endArrowHead,currentItemRoundness:(null!==(U=null!==(M=null!==(v=null===(y=null==H?void 0:H.appState)||void 0===y?void 0:y.currentItemLinearStrokeSharpness)&&void 0!==v?v:null===(D=null==H?void 0:H.appState)||void 0===D?void 0:D.currentItemStrokeSharpness)&&void 0!==M?M:null===(F=null==H?void 0:H.appState)||void 0===F?void 0:F.currentItemRoundness)&&void 0!==U?U:this.style.roundness)?"round":"sharp",gridSize:null!==(T=null===(R=null==H?void 0:H.appState)||void 0===R?void 0:R.gridSize)&&void 0!==T?T:this.canvas.gridSize,colorPalette:null!==(S=null===(N=null==H?void 0:H.appState)||void 0===N?void 0:N.colorPalette)&&void 0!==S?S:this.colorPalette},files:null!==(G=null==H?void 0:H.files)&&void 0!==G?G:{}},P=(null==e?void 0:e.filename)?e.filename+(e.filename.endsWith(".md")?"":".excalidraw.md"):getDrawingFilename(this.plugin.settings),z=(null==e?void 0:e.foldername)?e.foldername:this.plugin.settings.folder,K=this.plugin.settings.compatibilityMode?JSON.stringify(Y,null,"\t"):L+(()=>{let A=e.plaintext?e.plaintext+"\n\n":"";const t=this.getElements().filter((e=>"text"===e.type));return A+="# Text Elements\n",t.forEach((e=>{var t,i;A+=`${null!==(t=e.rawText)&&void 0!==t?t:null!==(i=e.originalText)&&void 0!==i?i:e.text} ^${e.id}\n\n`})),this.getElements().filter((e=>"text"!==e.type&&e.link)).forEach((e=>{A+=`${e.link} ^${e.id}\n\n`})),A+=Object.keys(this.imagesDict).length>0?"\n# Embedded files\n":"",Object.keys(this.imagesDict).forEach((e=>{const t=this.imagesDict[e];t.latex?A+=`${e}: $$${t.latex}$$\n`:A+=`${e}: [[${t.file}]]\n`})),A})()+getMarkdownDrawingSection(JSON.stringify(Y,null,"\t"),this.plugin.settings.compress);return e.silent?(await this.plugin.createDrawing(P,z,K)).path:this.plugin.createAndOpenDrawing(P,(null==e?void 0:e.onNewPane)&&e.onNewPane?"new-pane":"active-pane",z,K)}async createSVG(e,A=!1,t,i,n,s){return n||(n=this.plugin.settings.previewMatchObsidianTheme?isObsidianThemeDark()?"dark":"light":this.plugin.settings.exportWithTheme?void 0:"light"),n&&!t&&(t={withBackground:this.plugin.settings.exportWithBackground,withTheme:!0}),i||(i=new EmbeddedFilesLoader(this.plugin,n?"dark"===n:void 0)),await createSVG(e,A,t,i,n,this.canvas.theme,this.canvas.viewBackgroundColor,this.getElements(),this.plugin,0,s,this.imagesDict)}async createPNG(e,A=1,t,i,n,s){return n||(n=this.plugin.settings.previewMatchObsidianTheme?isObsidianThemeDark()?"dark":"light":this.plugin.settings.exportWithTheme?void 0:"light"),n&&!t&&(t={withBackground:this.plugin.settings.exportWithBackground,withTheme:!0}),i||(i=new EmbeddedFilesLoader(this.plugin,n?"dark"===n:void 0)),await createPNG(e,A,t,i,n,this.canvas.theme,this.canvas.viewBackgroundColor,this.getElements(),this.plugin,0,s,this.imagesDict)}async createPNGBase64(e,A=1,t,i,n,s){const a=await this.createPNG(e,A,t,i,n,s);return`data:image/png;base64,${await blobToBase64(a)}`}wrapText(e,A){return wrapTextAtCharLength(e,A,this.plugin.settings.forceWrap)}boxedElement(e,A,t,i,n,s,a=null,o){return Object.assign({id:e,type:A,x:t,y:i,width:n,height:s,angle:this.style.angle,strokeColor:this.style.strokeColor,backgroundColor:this.style.backgroundColor,fillStyle:this.style.fillStyle,strokeWidth:this.style.strokeWidth,strokeStyle:this.style.strokeStyle,roughness:this.style.roughness,opacity:this.style.opacity,roundness:this.style.strokeSharpness?"round"===this.style.strokeSharpness?{type:ROUNDNESS.ADAPTIVE_RADIUS}:null:this.style.roundness,seed:Math.floor(1e5*Math.random()),version:1,versionNonce:Math.floor(1e9*Math.random()),updated:Date.now(),isDeleted:!1,groupIds:[],boundElements:[],link:a,locked:!1},o?{scale:o}:{})}addIFrame(e,A,t,i,n,s){return this.addEmbeddable(e,A,t,i,n,s)}addEmbeddable(e,A,t,i,n,s,a){var o;if(!this.targetView||!(null===(o=this.targetView)||void 0===o?void 0:o._loaded))return errorMessage("targetView not set","addEmbeddable()"),null;if(!n&&!s)return errorMessage("Either the url or the file must be set. If both are provided the URL takes precedence","addEmbeddable()"),null;const r=nanoid();return this.elementsDict[r]=this.boxedElement(r,"embeddable",e,A,t,i,n||(s?`[[${app.metadataCache.fileToLinktext(s,this.targetView.file.path,!1)}]]`:""),[1,1]),this.elementsDict[r].customData={mdProps:null!=a?a:this.plugin.settings.embeddableMarkdownDefaults},r}addRect(e,A,t,i){const n=nanoid();return this.elementsDict[n]=this.boxedElement(n,"rectangle",e,A,t,i),n}addDiamond(e,A,t,i){const n=nanoid();return this.elementsDict[n]=this.boxedElement(n,"diamond",e,A,t,i),n}addEllipse(e,A,t,i){const n=nanoid();return this.elementsDict[n]=this.boxedElement(n,"ellipse",e,A,t,i),n}addBlob(e,A,t,i){const n=.5*i,s=.5*t,a=s/9,o=.8*n,r=[],l=(t,i)=>{const l=t+Math.random()*a-a/2;r.push([l+Math.random()*a-a/2+t%2*a/6+e,i*Math.sqrt(n*n*(1-l*l/(s*s)))+Math.random()*o-o/2+t%2*o/6+A])};let c;for(c=a/2-s;c<=s-a/2;c+=s/6)l(c,1);for(c=s-a/2;c>=a/2-s;c-=s/6)l(c,-1);r.push(r[0]);const g=this.addLine((e=>{const A=getLineBox(e),n=t/A.w,s=i/A.h;let a;for(a=0;a<e.length;a++){let[t,i]=e[a];t=(t-A.x)*n+A.x,i=(i-A.y)*s+A.y,e[a]=[t,i]}return e})(r));return this.elementsDict[g]=repositionElementsToCursor([this.getElement(g)],{x:e,y:A},!1)[0],g}refreshTextElementSize(e){const A=this.getElement(e);if("text"!==A.type)return;const{w:t,h:i,baseline:n}=_measureText(A.text,A.fontSize,A.fontFamily,getDefaultLineHeight(A.fontFamily));A.width=t,A.height=i,A.baseline=n}addText(e,A,t,i,n){var s,a,o,r;n=null!=n?n:nanoid();const l=t;t=(null==i?void 0:i.wrapAt)?this.wrapText(t,i.wrapAt):t;const{w:c,h:g,baseline:d}=_measureText(t,this.style.fontSize,this.style.fontFamily,getDefaultLineHeight(this.style.fontFamily)),u=(null==i?void 0:i.width)?i.width:c,h=(null==i?void 0:i.height)?i.height:g;let m=null;const p=null!==(s=null==i?void 0:i.boxPadding)&&void 0!==s?s:30,w=this.style.strokeColor;if(this.style.strokeColor=null!==(a=null==i?void 0:i.boxStrokeColor)&&void 0!==a?a:w,null==i?void 0:i.box)switch(i.box){case"ellipse":m=this.addEllipse(e-p,A-p,u+2*p,h+2*p);break;case"diamond":m=this.addDiamond(e-p,A-p,u+2*p,h+2*p);break;case"blob":m=this.addBlob(e-p,A-p,u+2*p,h+2*p);break;default:m=this.addRect(e-p,A-p,u+2*p,h+2*p)}this.style.strokeColor=w;const B=m&&"blob"!==i.box;if(this.elementsDict[n]=Object.assign(Object.assign({text:t,fontSize:this.style.fontSize,fontFamily:this.style.fontFamily,textAlign:(null==i?void 0:i.textAlign)?i.textAlign:null!==(o=this.style.textAlign)&&void 0!==o?o:"left",verticalAlign:null!==(r=null==i?void 0:i.textVerticalAlign)&&void 0!==r?r:this.style.verticalAlign,baseline:d},this.boxedElement(n,"text",e,A,u,h)),{containerId:B?m:null,originalText:B?l:t,rawText:B?l:t,lineHeight:getDefaultLineHeight(this.style.fontFamily)}),m&&"blob"===(null==i?void 0:i.box)&&this.addToGroup([n,m]),B){const e=this.elementsDict[m];e.boundElements||(e.boundElements=[]),e.boundElements.push({type:"text",id:n})}return null!=m?m:n}addLine(e){const A=getLineBox(e),t=nanoid();return this.elementsDict[t]=Object.assign({points:normalizeLinePoints(e),lastCommittedPoint:null,startBinding:null,endBinding:null,startArrowhead:null,endArrowhead:null},this.boxedElement(t,"line",e[0][0],e[0][1],A.w,A.h)),t}addArrow(e,A){const t=getLineBox(e),i=nanoid(),n=e[0],s=e[e.length-1];return this.elementsDict[i]=Object.assign({points:normalizeLinePoints(e),lastCommittedPoint:null,startBinding:{elementId:null==A?void 0:A.startObjectId,focus:(null==A?void 0:A.startObjectId)?determineFocusDistance(this.getElement(null==A?void 0:A.startObjectId),s,n):.1,gap:4},endBinding:{elementId:null==A?void 0:A.endObjectId,focus:(null==A?void 0:A.endObjectId)?determineFocusDistance(this.getElement(null==A?void 0:A.endObjectId),n,s):.1,gap:4},startArrowhead:void 0!==(null==A?void 0:A.startArrowHead)?A.startArrowHead:this.style.startArrowHead,endArrowhead:void 0!==(null==A?void 0:A.endArrowHead)?A.endArrowHead:this.style.endArrowHead},this.boxedElement(i,"arrow",e[0][0],e[0][1],t.w,t.h)),(null==A?void 0:A.startObjectId)&&(this.elementsDict[A.startObjectId].boundElements||(this.elementsDict[A.startObjectId].boundElements=[]),this.elementsDict[A.startObjectId].boundElements.push({type:"arrow",id:i})),(null==A?void 0:A.endObjectId)&&(this.elementsDict[A.endObjectId].boundElements||(this.elementsDict[A.endObjectId].boundElements=[]),this.elementsDict[A.endObjectId].boundElements.push({type:"arrow",id:i})),i}async addMermaid(e,A=!0){const t=await mermaidToExcalidraw(e,{fontSize:this.style.fontSize}),i=[];if(!t)return i;if((null==t?void 0:t.elements)&&t.elements.forEach((e=>{i.push(e.id),this.elementsDict[e.id]=e})),null==t?void 0:t.files)for(const e in t.files)this.imagesDict[e]=Object.assign(Object.assign({},t.files[e]),{created:Date.now(),isHyperLink:!1,hyperlink:null,file:null,hasSVGwithBitmap:!1,latex:null});return A&&(null==t?void 0:t.elements)&&i.length>1&&this.addToGroup(i),i}async addImage(e,A,t,i=!0,n=!0){const s=nanoid(),a=new EmbeddedFilesLoader(this.plugin,"dark"===this.canvas.theme),o="string"==typeof t?await a.getObsidianImage(new EmbeddedFile(this.plugin,"",t),0):await a.getObsidianImage(t,0);if(!o)return null;const r="string"==typeof t?o.fileId:"md"===t.extension||"pdf"===t.extension.toLowerCase()?fileid():o.fileId;if(this.imagesDict[r]={mimeType:o.mimeType,id:r,dataURL:o.dataURL,created:o.created,isHyperLink:"string"==typeof t,hyperlink:"string"==typeof t?t:null,file:"string"==typeof t?null:t.path+(i||!n?"":"|100%"),hasSVGwithBitmap:o.hasSVGwithBitmap,latex:null},i&&Math.max(o.size.width,o.size.height)>500){const e=500/Math.max(o.size.width,o.size.height);o.size.width=e*o.size.width,o.size.height=e*o.size.height}return this.elementsDict[s]=this.boxedElement(s,"image",e,A,o.size.width,o.size.height),this.elementsDict[s].fileId=r,this.elementsDict[s].scale=[1,1],!i&&n&&(this.elementsDict[s].customData={isAnchored:!0}),s}async addLaTex(e,A,t){const i=nanoid(),n=await tex2dataURL(t,this.plugin);return n?(this.imagesDict[n.fileId]={mimeType:n.mimeType,id:n.fileId,dataURL:n.dataURL,created:n.created,file:null,hasSVGwithBitmap:!1,latex:t},this.elementsDict[i]=this.boxedElement(i,"image",e,A,n.size.width,n.size.height),this.elementsDict[i].fileId=n.fileId,this.elementsDict[i].scale=[1,1],i):null}connectObjects(e,A,t,i,n){if(!this.elementsDict[e]||!this.elementsDict[t])return;if(["line","arrow","freedraw"].includes(this.elementsDict[e].type)||["line","arrow","freedraw"].includes(this.elementsDict[t].type))return;const s=(null==n?void 0:n.padding)?n.padding:10,a=(null==n?void 0:n.numberOfPoints)?n.numberOfPoints:0,o=(e,A)=>{switch(e){case"bottom":return[(A.x+(A.x+A.width))/2,A.y+A.height+s];case"left":return[A.x-s,(A.y+(A.y+A.height))/2];case"right":return[A.x+A.width+s,(A.y+(A.y+A.height))/2];default:return[(A.x+(A.x+A.width))/2,A.y-s]}};let r,l,c,g;const d=this.elementsDict[e],u=this.elementsDict[t];if(!A||!i){const e=d.x+d.width/2,t=u.x+u.width/2,n=d.y+d.height/2,s=u.y+u.height/2;if(!A){const A=intersectElementWithLine(d,[t,s],[e,n],4);0===A.length?[r,l]=[e,n]:[r,l]=A[0]}if(!i){const A=intersectElementWithLine(u,[e,n],[t,s],4);0===A.length?[c,g]=[t,s]:[c,g]=A[0]}}A&&([r,l]=o(A,this.elementsDict[e])),i&&([c,g]=o(i,this.elementsDict[t]));const h=a+2,m=[];for(let e=0;e<h;e++)m.push([r+e*(c-r)/(h-1),l+e*(g-l)/(h-1)]);return this.addArrow(m,{startArrowHead:null==n?void 0:n.startArrowHead,endArrowHead:null==n?void 0:n.endArrowHead,startObjectId:e,endObjectId:t})}addLabelToLine(e,A){const t=this.elementsDict[e];if(!t||!["arrow","line"].includes(t.type)||2!==t.points.length)return;let i=Math.atan2(t.points[1][1],t.points[1][0]);const n=this.measureText(A);i<0?i<-Math.PI/2&&(i+=Math.PI):i>Math.PI/2&&(i-=Math.PI),this.style.angle=i;const s=this.addText(t.x+t.points[1][0]/2-n.width/2,t.y+t.points[1][1]/2-n.height,A);return this.style.angle=0,s}clear(){this.elementsDict={},this.imagesDict={}}reset(){this.clear(),this.activeScript=null,this.style={strokeColor:"#000000",backgroundColor:"transparent",angle:0,fillStyle:"hachure",strokeWidth:1,strokeStyle:"solid",roughness:1,opacity:100,roundness:null,fontFamily:1,fontSize:20,textAlign:"left",verticalAlign:"top",startArrowHead:null,endArrowHead:"arrow"},this.canvas={theme:"light",viewBackgroundColor:"#FFFFFF",gridSize:0}}isExcalidrawFile(e){return this.plugin.isExcalidrawFile(e)}setView(e){if(!e){const e=app.workspace.getActiveViewOfType(ExcalidrawView);if(e instanceof ExcalidrawView)this.targetView=e;else{const e=app.workspace.getLeavesOfType("excalidraw");if(!e||0==e.length)return;this.targetView=e[0].view}}if("active"==e){const e=app.workspace.getActiveViewOfType(ExcalidrawView);if(!(e instanceof ExcalidrawView))return;this.targetView=e}if("first"==e){const e=app.workspace.getLeavesOfType("excalidraw");if(!e||0==e.length)return;this.targetView=e[0].view}return e instanceof ExcalidrawView&&(this.targetView=e),this.targetView}getExcalidrawAPI(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?this.targetView.excalidrawAPI:(errorMessage("targetView not set","getExcalidrawAPI()"),null)}getViewElements(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?this.targetView.getViewElements():(errorMessage("targetView not set","getViewElements()"),[])}deleteViewElements(e){var A,t;if(!this.targetView||!(null===(A=this.targetView)||void 0===A?void 0:A._loaded))return errorMessage("targetView not set","deleteViewElements()"),!1;const i=null===(t=this.targetView)||void 0===t?void 0:t.excalidrawAPI;if(!i)return!1;const n=i.getSceneElements(),s=i.getAppState();return this.targetView.updateScene({elements:n.filter((A=>!e.includes(A))),appState:s,commitToHistory:!0}),!0}getViewSelectedElement(){const e=this.getViewSelectedElements();return e?e[0]:null}getViewSelectedElements(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?this.targetView.getViewSelectedElements():(errorMessage("targetView not set","getViewSelectedElements()"),[])}getViewFileForImageElement(e){var A,t,i,n;return this.targetView&&(null===(A=this.targetView)||void 0===A?void 0:A._loaded)?e&&"image"===e.type?null===(n=null===(i=null===(t=this.targetView)||void 0===t?void 0:t.excalidrawData)||void 0===i?void 0:i.getFile(e.fileId))||void 0===n?void 0:n.file:(errorMessage("Must provide an image element as input","getViewFileForImageElement()"),null):(errorMessage("targetView not set","getViewFileForImageElement()"),null)}copyViewElementsToEAforEditing(e,A=!1){var t;if(A&&e.some((e=>"image"===e.type))){if(!this.targetView||!(null===(t=this.targetView)||void 0===t?void 0:t._loaded))return void errorMessage("targetView not set","copyViewElementsToEAforEditing()");const A=this.targetView.getScene().files;e.forEach((e=>{this.elementsDict[e.id]=cloneElement(e),"image"===e.type&&(this.imagesDict[e.fileId]=null==A?void 0:A[e.fileId])}))}else e.forEach((e=>{this.elementsDict[e.id]=cloneElement(e)}))}viewToggleFullScreen(e=!1){var A,t,i;if(!this.targetView||!(null===(A=this.targetView)||void 0===A?void 0:A._loaded))return void errorMessage("targetView not set","viewToggleFullScreen()");const n=this.targetView,s=n.isFullscreen();e&&(n.updateScene({appState:{viewModeEnabled:!s},commitToHistory:!1}),null===(i=null===(t=this.targetView.toolsPanelRef)||void 0===t?void 0:t.current)||void 0===i||i.setExcalidrawViewMode(!s)),s?n.exitFullscreen():n.gotoFullscreen()}setViewModeEnabled(e){var A,t,i;if(!this.targetView||!(null===(A=this.targetView)||void 0===A?void 0:A._loaded))return void errorMessage("targetView not set","viewToggleFullScreen()");const n=this.targetView;n.updateScene({appState:{viewModeEnabled:e}}),null===(i=null===(t=n.toolsPanelRef)||void 0===t?void 0:t.current)||void 0===i||i.setExcalidrawViewMode(e)}viewUpdateScene(e,A=!1){var t;this.targetView&&(null===(t=this.targetView)||void 0===t?void 0:t._loaded)?this.targetView.updateScene(e,A):errorMessage("targetView not set","viewToggleFullScreen()")}connectObjectWithViewSelectedElement(e,A,t,i){const n=this.getViewSelectedElement();if(!n)return!1;const s=n.id;return this.elementsDict[s]=n,this.connectObjects(e,A,s,t,i),delete this.elementsDict[s],!0}viewZoomToElements(e,A){var t;this.targetView&&(null===(t=this.targetView)||void 0===t?void 0:t._loaded)?this.targetView.zoomToElements(e,A):errorMessage("targetView not set","viewToggleFullScreen()")}async addElementsToView(e=!1,A=!0,t=!1,i=!1){var n;if(!this.targetView||!(null===(n=this.targetView)||void 0===n?void 0:n._loaded))return errorMessage("targetView not set","addElementsToView()"),!1;const s=this.getElements();return await this.targetView.addElements(s,e,A,this.imagesDict,t,i)}registerThisAsViewEA(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?(this.targetView.setHookServer(this),!0):(errorMessage("targetView not set","addElementsToView()"),!1)}deregisterThisAsViewEA(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?(this.targetView.setHookServer(this),!0):(errorMessage("targetView not set","addElementsToView()"),!1)}getEmbeddedFilesLoader(e){return new EmbeddedFilesLoader(this.plugin,e)}getExportSettings(e,A){return{withBackground:e,withTheme:A}}getBoundingBox(e){const A=getCommonBoundingBox(e);return{topX:A.minX,topY:A.minY,width:A.maxX-A.minX,height:A.maxY-A.minY}}getMaximumGroups(e){return getMaximumGroups(e)}getLargestElement(e){if(!e||0===e.length)return null;let A=e[0];const t=e=>e.height*e.width;let i=t(e[0]);for(let n=1;n<e.length;n++){const s=t(e[n]);s>i&&(i=s,A=e[n])}return A}intersectElementWithLine(e,A,t,i){return intersectElementWithLine(e,A,t,i)}getCommonGroupForElements(e){const A=e.map((e=>e.groupIds)).reduce(((e,A)=>A.filter((A=>e.includes(A)))));return A.length>0?A[0]:null}getElementsInTheSameGroupWithElement(e,A){if(!e||!A)return[];const t="text"===e.type&&e.containerId?A.filter((A=>A.id===e.containerId)):[];return 0===e.groupIds.length?1===t.length?[e,t[0]]:[e]:1===t.length?A.filter((A=>A.groupIds.some((A=>e.groupIds.includes(A)))||A===t[0])):A.filter((A=>A.groupIds.some((A=>e.groupIds.includes(A)))))}getElementsInFrame(e,A){return e&&A&&"frame"===e.type?A.filter((A=>A.frameId===e.id)):[]}getScriptSettings(){var e;return this.activeScript?null!==(e=this.plugin.settings.scriptEngineSettings[this.activeScript])&&void 0!==e?e:{}:null}async setScriptSettings(e){if(!this.activeScript)return null;this.plugin.settings.scriptEngineSettings[this.activeScript]=e,await this.plugin.saveSettings()}openFileInNewOrAdjacentLeaf(e,A){if(!(e&&e instanceof obsidian_module.TFile))return null;if(!this.targetView)return null;const t=getNewOrAdjacentLeaf(this.plugin,this.targetView.leaf);return t.openFile(e,null!=A?A:{active:!0}),t}measureText(e){var A,t;const i=_measureText(e,this.style.fontSize,this.style.fontFamily,getDefaultLineHeight(this.style.fontFamily));return{width:null!==(A=i.w)&&void 0!==A?A:0,height:null!==(t=i.h)&&void 0!==t?t:0}}async getOriginalImageSize(e){var A;if(!this.targetView||!(null===(A=this.targetView)||void 0===A?void 0:A._loaded))return errorMessage("targetView not set","getOriginalImageSize()"),null;if(!e||"image"!==e.type)return errorMessage("Please provide a single image element as input","getOriginalImageSize()"),null;const t=this.targetView.excalidrawData.getFile(e.fileId);if(!t)return errorMessage("Please provide a single image element as input","getOriginalImageSize()"),null;const i="dark"===this.getExcalidrawAPI().getAppState().theme,n=t.getImage(i);return await getImageSize(n)}verifyMinimumPluginVersion(e){return verifyMinimumPluginVersion(e)}isExcalidrawView(e){return e instanceof ExcalidrawView}selectElementsInView(e){var A;if(!this.targetView||!(null===(A=this.targetView)||void 0===A?void 0:A._loaded))return void errorMessage("targetView not set","selectElementsInView()");if(!e||0===e.length)return;const t=this.getExcalidrawAPI();if("string"==typeof e[0]){const A=this.getViewElements().filter((A=>e.includes(A.id)));t.selectElements(A)}else t.selectElements(e)}generateElementId(){return nanoid()}cloneElement(e){const A=JSON.parse(JSON.stringify(e));return A.id=nanoid(),A}moveViewElementToZIndex(e,A){var t;if(!this.targetView||!(null===(t=this.targetView)||void 0===t?void 0:t._loaded))return void errorMessage("targetView not set","moveViewElementToZIndex()");const i=this.getExcalidrawAPI(),n=this.getViewElements(),s=n.filter((A=>A.id===e));if(0===s.length)return void errorMessage(`Element (id: ${e}) not found`,"moveViewElementToZIndex");if(A>=n.length)return void i.bringToFront(s);if(A<0)return void i.sendToBack(s);const a=n.indexOf(s[0]);n.splice(A,0,n.splice(a,1)[0]),this.targetView.updateScene({elements:n,commitToHistory:!0})}hexStringToRgb(e){const A=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return[parseInt(A[1],16),parseInt(A[2],16),parseInt(A[3],16)]}rgbToHexString(e){return O$1({r:e[0],g:e[1],b:e[2]}).stringHEX({alpha:!1})}hslToRgb(e){const A=O$1({h:e[0],s:e[1],l:e[2]});return[A.red,A.green,A.blue]}rgbToHsl(e){const A=O$1({r:e[0],g:e[1],b:e[2]});return[A.hue,A.saturation,A.lightness]}colorNameToHex(e){return COLOR_NAMES.has(e.toLowerCase().trim())?COLOR_NAMES.get(e.toLowerCase().trim()):e.trim()}getCM(e){if(e)return"string"==typeof e&&(e=this.colorNameToHex(e)),O$1(e);log("Creates a CM object. Visit https://github.com/lbragile/ColorMaster for documentation.")}getPolyBool(){return PolyBool$1.epsilon(1e-10),PolyBool$1}importSVG(e){const A=svgToExcalidraw(e);return A.hasErrors?(new obsidian_module.Notice(`There were errors while parsing the given SVG:\n${[...A.errors].map((e=>e.innerHTML))}`),!1):(this.copyViewElementsToEAforEditing(A.content),!0)}}async function initExcalidrawAutomate(e){await initFonts();const A=new ExcalidrawAutomate(e);return window.ExcalidrawAutomate=A,A}function destroyExcalidrawAutomate(){delete window.ExcalidrawAutomate}function normalizeLinePoints(e){const A=[],[t,i]=e[0];for(let n=0;n<e.length;n++)A.push([e[n][0]-t,e[n][1]-i]);return A}function getLineBox(e){const[A,t,i,n]=estimateLineBound(e);return{x:A,y:t,w:i-A,h:n-t}}function getFontFamily(e){switch(e){case 1:return"Virgil, Segoe UI Emoji";case 2:return"Helvetica, Segoe UI Emoji";case 3:return"Cascadia, Segoe UI Emoji";case 4:return"LocalFont"}}async function initFonts(){for(let e=1;e<=3;e++)await document.fonts.load(`20px ${getFontFamily(e)}`)}function _measureText(e,A,t,i){A||(A=20),t||(i=getDefaultLineHeight(t=1));const n=measureText(e,`${A.toString()}px ${getFontFamily(t)}`,i);return{w:n.width,h:n.height,baseline:n.baseline}}async function getTemplate(e,A,t=!1,i,n,s=!1){const a=e.app,o=a.vault,r=getEmbeddedFilenameParts(A),l=obsidian_module.normalizePath(r.filepath),c=a.metadataCache.getFirstLinkpathDest(l,"");let g=!1;if(c&&c instanceof obsidian_module.TFile){const A=(await o.read(c)).replaceAll("\r\n","\n").replaceAll("\r","\n"),a=new ExcalidrawData(e);if("excalidraw"===c.extension)return await a.loadLegacyData(A,c),{elements:s?updateElementLinksToObsidianLinks({elements:a.scene.elements,hostFile:c}):a.scene.elements,appState:a.scene.appState,frontmatter:"",files:a.scene.files,hasSVGwithBitmap:g};const l=A.search("excalidraw-plugin: parsed\n")>-1||A.search("excalidraw-plugin: locked\n")>-1;await a.loadData(A,c,l?TextMode.parsed:TextMode.raw);let d=A.search("# Text Elements\n");-1==d&&(d=A.search("# Drawing\n"));let u=a.scene;t&&await i.loadSceneFiles(a,(e=>{if(e&&0!==e.length){for(const A of e)A.hasSVGwithBitmap&&(g=!0),a.scene.files[A.id]={mimeType:A.mimeType,id:A.id,dataURL:A.dataURL,created:A.created};u=scaleLoadedImage(a.scene,e).scene}}),n);let h=u.elements;if(r.hasGroupref){const A=r.hasSectionref?getTextElementsMatchingQuery(u.elements,["# "+r.sectionref],!0):u.elements.filter((e=>e.id===r.blockref));A.length>0&&(h=e.ea.getElementsInTheSameGroupWithElement(A[0],u.elements))}if(r.hasFrameref){const A=u.elements.filter((e=>e.id===r.blockref));1===A.length&&(h=e.ea.getElementsInFrame(A[0],u.elements))}return r.hasTaskbone&&(h=h.filter((A=>{var t;return"freedraw"===A.type||"image"===A.type&&!e.isExcalidrawFile(null===(t=a.getFile(A.fileId))||void 0===t?void 0:t.file)}))),{elements:s?updateElementLinksToObsidianLinks({elements:h,hostFile:c}):h,appState:u.appState,frontmatter:A.substring(0,d),files:u.files,hasSVGwithBitmap:g}}return{elements:[],appState:{},frontmatter:null,files:[],hasSVGwithBitmap:g}}async function createPNG(e=void 0,A=1,t,i,n=void 0,s=void 0,a=void 0,o=[],r,l,c,g){var d,u,h,m,p,w,B;i||(i=new EmbeddedFilesLoader(r)),c=null!=c?c:r.settings.exportPaddingSVG;const E=e?await getTemplate(r,e,!0,i,l):null;let k=null!==(d=null==E?void 0:E.elements)&&void 0!==d?d:[];k=k.concat(o);const f=null!=g?g:{};return(null==E?void 0:E.files)&&Object.values(E.files).forEach((e=>{e.dataURL.startsWith("http")||(f[e.id]=e)})),await getPNG({type:"excalidraw",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,elements:k,appState:{theme:null!==(h=null!=n?n:null===(u=null==E?void 0:E.appState)||void 0===u?void 0:u.theme)&&void 0!==h?h:s,viewBackgroundColor:null!==(p=null===(m=null==E?void 0:E.appState)||void 0===m?void 0:m.viewBackgroundColor)&&void 0!==p?p:a},files:f},{withBackground:null!==(w=null==t?void 0:t.withBackground)&&void 0!==w?w:r.settings.exportWithBackground,withTheme:null!==(B=null==t?void 0:t.withTheme)&&void 0!==B?B:r.settings.exportWithTheme},c,A)}const updateElementLinksToObsidianLinks=({elements:e,hostFile:A})=>e.map((e=>{if(e.link&&e.link.startsWith("[")){const t=REGEX_LINK.getResList(e.link)[0];if(!(null==t?void 0:t.value))return e;let i=REGEX_LINK.getLink(t);if(i.search("#")>-1&&(i=getLinkParts(i,A).path),i.match(REG_LINKINDEX_INVALIDCHARS))return e;const n=app.metadataCache.getFirstLinkpathDest(i,A.path);if(!n)return e;const s=app.getObsidianUrl(n),a=cloneElement(e);return a.link=s,a}return e}));function addFilterToForeignObjects(e){e.querySelectorAll("foreignObject").forEach((e=>{e.setAttribute("filter",THEME_FILTER)}))}async function createSVG(e=void 0,A=!1,t,i,n=void 0,s=void 0,a=void 0,o=[],r,l,c,g,d=!1){var u,h,m,p,w,B,E;i||(i=new EmbeddedFilesLoader(r));const k=e?await getTemplate(r,e,!0,i,l,d):null;let f=null!==(u=null==k?void 0:k.elements)&&void 0!==u?u:[];f=f.concat(o),c=null!=c?c:r.settings.exportPaddingSVG;const C=null!=g?g:{};(null==k?void 0:k.files)&&Object.values(k.files).forEach((e=>{C[e.id]=e}));const O=null!==(m=null!=n?n:null===(h=null==k?void 0:k.appState)||void 0===h?void 0:h.theme)&&void 0!==m?m:s,W=null!==(p=null==t?void 0:t.withTheme)&&void 0!==p?p:r.settings.exportWithTheme,b=await getSVG({type:"excalidraw",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,elements:f,appState:{theme:O,viewBackgroundColor:null!==(B=null===(w=null==k?void 0:k.appState)||void 0===w?void 0:w.viewBackgroundColor)&&void 0!==B?B:a},files:C},{withBackground:null!==(E=null==t?void 0:t.withBackground)&&void 0!==E?E:r.settings.exportWithBackground,withTheme:W},c,null);W&&"dark"===O&&addFilterToForeignObjects(b);const x=getEmbeddedFilenameParts(e);if(!x.hasGroupref&&!x.hasFrameref&&(x.hasBlockref||x.hasSectionref)){let e=x.hasSectionref?getTextElementsMatchingQuery(f,["# "+x.sectionref],!0):f.filter((e=>e.id===x.blockref));if(e.length>0){const A=e[0].containerId;A&&(e=e.concat(f.filter((e=>e.id===A))));const t=r.ea.getBoundingBox(e),i=r.ea.getBoundingBox(f);b.viewBox.baseVal.x=t.topX-i.topX,b.viewBox.baseVal.y=t.topY-i.topY,b.viewBox.baseVal.width=t.width+2*c,b.viewBox.baseVal.height=t.height+2*c}}return(null==k?void 0:k.hasSVGwithBitmap)&&b.setAttribute("hasbitmap","true"),A?embedFontsInSVG(b,r):b}function estimateLineBound(e){let A=1/0,t=1/0,i=-1/0,n=-1/0;for(const[s,a]of e)A=Math.min(A,s),t=Math.min(t,a),i=Math.max(i,s),n=Math.max(n,a);return[A,t,i,n]}function estimateBounds(e){const A=getCommonBoundingBox(e);return[A.minX,A.minY,A.maxX,A.maxY]}function repositionElementsToCursor(e,A,t=!1){const[i,n,s,a]=estimateBounds(e);let[o,r]=[0,0];return[o,r]=t?[A.x-(i+s)/2,A.y-(n+a)/2]:[A.x-i,A.y-n],e.forEach((e=>{e.x=e.x+o,e.y=e.y+r})),restore({elements:e},null,null).elements}function errorMessage(e,A){switch(e){case"targetView not set":errorlog({where:"ExcalidrawAutomate",source:A,message:"targetView not set, or no longer active. Use setView before calling this function"});break;case"mobile not supported":errorlog({where:"ExcalidrawAutomate",source:A,message:"this function is not avalable on Obsidian Mobile"});break;default:errorlog({where:"ExcalidrawAutomate",source:A,message:null!=e?e:"unknown error"})}}const insertLaTeXToView=e=>{const A=e.plugin.app,t=e.plugin.ea;GenericInputPrompt.Prompt(e,e.plugin,A,t$d("ENTER_LATEX"),"\\color{red}\\oint_S {E_n dA = \\frac{1}{{\\varepsilon _0 }}} Q_{inside}",e.plugin.settings.latexBoilerplate,void 0,3).then((async A=>{A&&(t.reset(),await t.addLaTex(0,0,A),t.setView(e),t.addElementsToView(!0,!1,!0))}))},search=async e=>{const A=e.plugin.ea;A.reset(),A.setView(e);const t=A.getViewElements().filter((e=>"text"===e.type||"frame"===e.type));if(0===t.length)return;let i=await ScriptEngine.inputPrompt(e,e.plugin,e.plugin.app,"Search for","use quotation marks for exact match","");if(!i)return;const n=i.matchAll(/"(.*?)"/g);let s,a=[];for(;!(s=n.next()).done;)a.push(s.value[1]);i=i.replaceAll(/"(.*?)"/g,""),a=a.concat(i.split(" ").filter((e=>0!==e.length))),A.targetView.selectElementsMatchingQuery(t,a)},getTextElementsMatchingQuery=(e,A,t=!1)=>e&&0!==e.length&&A&&0!==A.length?e.filter((e=>"text"===e.type&&A.some((A=>{if(t){const t=e.rawText.toLowerCase().split("\n")[0].trim().match(/^#*(# .*)/);return!(!t||2!==t.length)&&t[1]===A.toLowerCase()}return e.rawText.toLowerCase().replaceAll("\n"," ").trim().match(A.toLowerCase())})))):[],getFrameElementsMatchingQuery=(e,A,t=!1)=>e&&0!==e.length&&A&&0!==A.length?e.filter((e=>"frame"===e.type&&A.some((A=>{if(t){const t=e.name.toLowerCase().split("\n")[0].trim().match(/^#*(# .*)/);return!(!t||2!==t.length)&&t[1]===A.toLowerCase()}return(e.name?e.name.toLowerCase().replaceAll("\n"," ").trim():"").match(A.toLowerCase())})))):[],cloneElement=e=>{const A=JSON.parse(JSON.stringify(e));return A.version=e.version+1,A.updated=Date.now(),A.versionNonce=Math.floor(1e9*Math.random()),A},verifyMinimumPluginVersion=e=>PLUGIN_VERSION===e||isVersionNewerThanOther(PLUGIN_VERSION,e),URL$1="https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/index-new.md";class ScriptInstallPrompt extends obsidian_module.Modal{constructor(e){super(e.app),this.plugin=e}async onOpen(){const e=document.createElement("div");e.classList.add("search-bar-wrapper");const A=document.createElement("input");A.type="text",A.id="search-bar",A.placeholder="Search...",A.style.width="calc(100% - 120px)";const t=document.createElement("button");t.textContent="→",t.onclick=()=>this.navigateSearchResults("next");const i=document.createElement("button");i.textContent="←",i.onclick=()=>this.navigateSearchResults("previous");const n=document.createElement("span");n.id="hit-count",n.classList.add("hit-count"),e.appendChild(i),e.appendChild(t),e.appendChild(A),e.appendChild(n),this.contentEl.prepend(e),A.addEventListener("input",(e=>{this.clearHighlights();const A=e.target.value;if(A&&A.length>0){this.highlightSearchTerm(A);const e=this.contentDiv.querySelectorAll("mark.search-highlight").length;n.textContent=e>0?`1/${e}`:"",setTimeout((()=>this.navigateSearchResults("next")))}else n.textContent=""})),A.addEventListener("keydown",(e=>{(e.ctrlKey||e.metaKey)&&"f"===e.key?(e.preventDefault(),A.focus()):"Enter"===e.key&&(e.preventDefault(),this.navigateSearchResults(e.shiftKey?"previous":"next"))})),this.contentEl.classList.add("excalidraw-scriptengine-install"),this.contentDiv=document.createElement("div"),this.contentEl.appendChild(this.contentDiv),this.containerEl.classList.add("excalidraw-scriptengine-install");try{const e=await obsidian_module.request({url:URL$1});if(!e)return new obsidian_module.Notice("Error opening the Excalidraw Script Store page. Please double check that you can access the website. I've logged the link in developer console (press CTRL+SHIFT+i)",5e3),log(URL$1),void this.close();await obsidian_module.MarkdownRenderer.renderMarkdown(e,this.contentDiv,"",this.plugin),this.contentDiv.querySelectorAll("h1[data-heading],h2[data-heading],h3[data-heading]").forEach((e=>{e.setAttribute("id",e.getAttribute("data-heading"))})),this.contentDiv.querySelectorAll("a.internal-link").forEach((e=>{e.removeAttribute("target")}))}catch(e){errorlog({where:"ScriptInstallPrompt.onOpen",error:e}),new obsidian_module.Notice("Could not open ScriptEngine repository"),this.close()}}highlightSearchTerm(e){const A=document.createTreeWalker(this.contentDiv,NodeFilter.SHOW_TEXT,{acceptNode:A=>A.nodeValue.toLowerCase().includes(e.toLowerCase())?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}),t=[];for(;A.nextNode();)t.push(A.currentNode);t.forEach((A=>{const t=A.nodeValue,i=document.createDocumentFragment();let n,s=0;const a=new RegExp(escapeRegExp(e),"gi");for(;null!==(n=a.exec(t));){const e=document.createTextNode(t.slice(s,n.index)),A=document.createElement("mark");A.className="search-highlight",A.textContent=n[0],A.classList.add("search-result"),i.appendChild(e),i.appendChild(A),s=a.lastIndex}i.appendChild(document.createTextNode(t.slice(s))),A.replaceWith(i)}))}clearHighlights(){this.contentDiv.querySelectorAll("mark.search-highlight").forEach((e=>{e.outerHTML=e.innerHTML}))}navigateSearchResults(e){const A=Array.from(this.contentDiv.querySelectorAll("mark.search-highlight"));if(0===A.length)return;const t=A.findIndex((e=>e.classList.contains("active-highlight")));-1!==t&&(A[t].classList.remove("active-highlight"),A[t].style.border="none");let i=0;"next"===e?i=t===A.length-1?0:t+1:"previous"===e&&(i=0===t?A.length-1:t-1);const n=A[i];n.classList.add("active-highlight"),n.scrollIntoView({behavior:"smooth",block:"nearest"}),document.getElementById("hit-count").textContent=`${i+1}/${A.length}`}onClose(){this.contentEl.empty()}}function r(e){var A,t,i="";if("string"==typeof e||"number"==typeof e)i+=e;else if("object"==typeof e)if(Array.isArray(e))for(A=0;A<e.length;A++)e[A]&&(t=r(e[A]))&&(i&&(i+=" "),i+=t);else for(A in e)e[A]&&(i&&(i+=" "),i+=A);return i}function clsx(){for(var e,A,t=0,i="";t<arguments.length;)(e=arguments[t++])&&(A=r(e))&&(i&&(i+=" "),i+=A);return i}const PENS={default:{type:"default",freedrawOnly:!1,strokeColor:"#000000",backgroundColor:"transparent",fillStyle:"hachure",strokeWidth:0,roughness:0,penOptions:{highlighter:!1,constantPressure:!1,hasOutline:!1,outlineWidth:1,options:{thinning:.6,smoothing:.5,streamline:.5,easing:"easeOutSine",start:{cap:!0,taper:0,easing:"linear"},end:{cap:!0,taper:0,easing:"linear"}}}},highlighter:{type:"highlighter",freedrawOnly:!0,strokeColor:"#FFC47C",backgroundColor:"#FFC47C",fillStyle:"solid",strokeWidth:2,roughness:null,penOptions:{highlighter:!0,constantPressure:!0,hasOutline:!0,outlineWidth:4,options:{thinning:1,smoothing:.5,streamline:.5,easing:"linear",start:{taper:0,cap:!0,easing:"linear"},end:{taper:0,cap:!0,easing:"linear"}}}},finetip:{type:"finetip",freedrawOnly:!1,strokeColor:"#3E6F8D",backgroundColor:"transparent",fillStyle:"hachure",strokeWidth:.5,roughness:0,penOptions:{highlighter:!1,hasOutline:!1,outlineWidth:1,constantPressure:!0,options:{smoothing:.4,thinning:-.5,streamline:.4,easing:"linear",start:{taper:5,cap:!1,easing:"linear"},end:{taper:5,cap:!1,easing:"linear"}}}},fountain:{type:"fountain",freedrawOnly:!1,strokeColor:"#000000",backgroundColor:"transparent",fillStyle:"hachure",strokeWidth:2,roughness:0,penOptions:{highlighter:!1,constantPressure:!1,hasOutline:!1,outlineWidth:1,options:{smoothing:.2,thinning:.6,streamline:.2,easing:"easeInOutSine",start:{taper:150,cap:!0,easing:"linear"},end:{taper:1,cap:!0,easing:"linear"}}}},marker:{type:"marker",freedrawOnly:!0,strokeColor:"#B83E3E",backgroundColor:"#FF7C7C",fillStyle:"dashed",strokeWidth:2,roughness:3,penOptions:{highlighter:!1,constantPressure:!0,hasOutline:!0,outlineWidth:4,options:{thinning:1,smoothing:.5,streamline:.5,easing:"linear",start:{taper:0,cap:!0,easing:"linear"},end:{taper:0,cap:!0,easing:"linear"}}}},"thick-thin":{type:"thick-thin",freedrawOnly:!0,strokeColor:"#CECDCC",backgroundColor:"transparent",fillStyle:"hachure",strokeWidth:0,roughness:null,penOptions:{highlighter:!0,constantPressure:!0,hasOutline:!1,outlineWidth:1,options:{thinning:1,smoothing:.5,streamline:.5,easing:"linear",start:{taper:0,cap:!0,easing:"linear"},end:{cap:!0,taper:!0,easing:"linear"}}}},"thin-thick-thin":{type:"thin-thick-thin",freedrawOnly:!0,strokeColor:"#CECDCC",backgroundColor:"transparent",fillStyle:"hachure",strokeWidth:0,roughness:null,penOptions:{highlighter:!0,constantPressure:!0,hasOutline:!1,outlineWidth:1,options:{thinning:1,smoothing:.5,streamline:.5,easing:"linear",start:{cap:!0,taper:!0,easing:"linear"},end:{cap:!0,taper:!0,easing:"linear"}}}}},EASINGFUNCTIONS={linear:"linear",easeInQuad:"easeInQuad",easeOutQuad:"easeOutQuad",easeInOutQuad:"easeInOutQuad",easeInCubic:"easeInCubic",easeOutCubic:"easeOutCubic",easeInOutCubic:"easeInOutCubic",easeInQuart:"easeInQuart",easeOutQuart:"easeOutQuart",easeInOutQuart:"easeInOutQuart",easeInQuint:"easeInQuint",easeOutQuint:"easeOutQuint",easeInOutQuint:"easeInOutQuint",easeInSine:"easeInSine",easeOutSine:"easeOutSine",easeInOutSine:"easeInOutSine",easeInExpo:"easeInExpo",easeOutExpo:"easeOutExpo",easeInOutExpo:"easeInOutExpo",easeInCirc:"easeInCirc",easeOutCirc:"easeOutCirc",easeInOutCirc:"easeInOutCirc",easeInBack:"easeInBack",easeOutBack:"easeOutBack",easeInOutBack:"easeInOutBack",easeInElastic:"easeInElastic",easeOutElastic:"easeOutElastic",easeInOutElastic:"easeInOutElastic",easeInBounce:"easeInBounce",easeOutBounce:"easeOutBounce",easeInOutBounce:"easeInOutBounce"};class PenSettingsModal extends obsidian_module.Modal{constructor(e,A,t){super(app),this.plugin=e,this.view=A,this.pen=t,this.dirty=!1,this.api=A.excalidrawAPI}onOpen(){this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText("Pen Settings"),this.createForm()}async onClose(){if(this.dirty){app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinnedCustomPens()})),this.plugin.saveSettings();const e=this.plugin.settings.customPens[this.pen],A=this.view.excalidrawAPI;setPen(e,A),A.setActiveTool({type:"freedraw"})}}async createForm(){const e=e=>{let A="";if(COLOR_NAMES.has(e))return[COLOR_NAMES.get(e),A];const t=(new Option).style;if(t.color=e,t.color){const e=t.color.match(/^[^\d]*(\d*)[^\d]*(\d*)[^\d]*(\d*)[^\d]*([\d\.]*)?/);return e?(A=e[4]?(Math.round(255*parseFloat(e[4]))<<0).toString(16).padStart(2,"0"):"",[`#${(parseInt(e[1])<<0).toString(16).padStart(2,"0")}${(parseInt(e[2])<<0).toString(16).padStart(2,"0")}${(parseInt(e[3])<<0).toString(16).padStart(2,"0")}`,A]):[null,A]}return[null,A]},A=this.plugin.settings.customPens[this.pen],t=this.contentEl;let i,n,s,a,o;t.createEl("h1",{text:"Pen settings"}),new obsidian_module.Setting(t).setName("Pen type").setDesc("Select type of pen").addDropdown((e=>{e.addOption("default","Excalidraw Default").addOption("highlighter","Highlighter").addOption("finetip","Fine tip pen").addOption("fountain","Fountain pen").addOption("marker","Marker with Outline").addOption("thick-thin","Mindmap Thick-Thin").addOption("thin-thick-thin","Mindmap Thin-Thick-Thin").setValue(A.type).onChange((e=>{this.dirty=!0,A.type=e}))})).addButton((e=>e.setButtonText("Apply").onClick((()=>{this.dirty=!0,A.strokeColor=PENS[A.type].strokeColor,A.backgroundColor=PENS[A.type].backgroundColor,A.fillStyle=PENS[A.type].fillStyle,A.strokeWidth=PENS[A.type].strokeWidth,A.roughness=PENS[A.type].roughness,A.penOptions=Object.assign({},PENS[A.type].penOptions),t.empty(),this.createForm()})))),i=new obsidian_module.Setting(t).setName(fragWithHTML(A.freedrawOnly?"Stroke & fill applies to: <b>Freedraw only</b>":"Stroke & fill applies to: <b>All shapes</b>")).setDesc(fragWithHTML('<b>"All shapes"</b> means that if for example, you select a blue pen with dashed fill and then switch to a different tool (e.g. to a line, a circle, an arrow - i.e. not the freedraw tool), those will all have the same blue line and dashed fill.<br><b>"Only applies to the freedraw line"</b> means that if for example you are writing black text, and you select a custom pen (e.g. a yellow highlighter), then after using the highlighter you switch to another tool, the previous settings (e.g. black stroke color) will apply to the new shape.')).addToggle((e=>e.setValue(A.freedrawOnly).onChange((e=>{this.dirty=!0,i.setName(fragWithHTML(e?"Stroke & fill applies to: <b>Freedraw only</b>":"Stroke & fill applies to: <b>All shapes</b>")),A.freedrawOnly=e}))));let r,l,c,g,d,u,h,[m,p]=e(A.strokeColor),w=!1;o=new obsidian_module.Setting(t).setName(fragWithHTML(Boolean(A.strokeColor)?"Stroke color: <b>Preset color</b>":"Stroke color: <b>Current</b>")).setDesc(fragWithHTML("Use <b>current</b> stroke color of the canvas, or set a specific <b>preset color</b> for the pen")).addToggle((t=>t.setValue(!Boolean(A.strokeColor)).onChange((t=>{this.dirty=!0,n.settingEl.style.display=t?"none":"",o.setName(fragWithHTML(t?"Stroke color: <b>Current</b>":"Stroke color: <b>Preset color</b>")),t?delete A.strokeColor:(a.getValue()||([m,p]=e("black"),s.setValue(m),a.setValue("black")),A.strokeColor=a.getValue())})))),n=new obsidian_module.Setting(t).setName("Select stroke color").addButton((t=>t.setButtonText("Use Canvas Current").onClick((()=>{var t,i;const n=this.api.getAppState(),o=null!==(i=null===(t=n.resetCustomPen)||void 0===t?void 0:t.currentItemStrokeColor)&&void 0!==i?i:n.currentItemStrokeColor;[m,p]=e(o),A.strokeColor=o,this.dirty=!0,a.setValue(o),w=!0,s.setValue(m)})))).addText((t=>{a=t,t.setValue(A.strokeColor).onChange((t=>{w=!0,this.dirty=!0,A.strokeColor=t,[m,p]=e(t),m&&s.setValue(m)}))})).addColorPicker((e=>{s=e,e.setValue(null!=m?m:"#000000").onChange((e=>{w?w=!1:(this.dirty=!0,A.strokeColor=e+p,a.setValue(e+p))}))})),n.settingEl.style.display=Boolean(A.strokeColor)?"":"none";let[B,E]=e(A.backgroundColor);r=new obsidian_module.Setting(t).setName(fragWithHTML(Boolean(A.backgroundColor)?"Background color: <b>Preset color</b>":"Background color: <b>Current</b>")).setDesc(fragWithHTML("Toggle to use the <b>current background color</b> of the canvas; or a <b>preset color</b>")).addToggle((t=>t.setValue(!Boolean(A.backgroundColor)).onChange((t=>{this.dirty=!0,r.setName(fragWithHTML(t?"Background color: <b>Current</b>":"Background color: <b>Preset color</b>")),c.settingEl.style.display=t?"none":"",l.settingEl.style.display=t||"transparent"===A.backgroundColor?"none":"",t?delete A.backgroundColor:(d.getValue()||([B,E]=e("black"),g.setValue(B),d.setValue("black")),u.setValue(!1))})))),c=new obsidian_module.Setting(t).setName(fragWithHTML("transparent"===A.backgroundColor?"Background: <b>Transparent</b>":"Color: <b>Preset color</b>")).setDesc("Background has color or is transparent").addToggle((e=>{u=e,e.setValue("transparent"===A.backgroundColor).onChange((e=>{this.dirty=!0,l.settingEl.style.display=e?"none":"",h.settingEl.style.display=e?"none":"",c.setName(fragWithHTML(e?"Background: <b>Transparent</b>":"Color: <b>Preset color</b>")),A.backgroundColor=e?"transparent":g.getValue()}))})),c.settingEl.style.display=Boolean(A.backgroundColor)?"":"none";let k,f,C,O,W,b,x,Q,I,y=!1;l=new obsidian_module.Setting(t).setName("Background color").addButton((t=>t.setButtonText("Use Canvas Current").onClick((()=>{var t,i;const n=this.api.getAppState(),s=null!==(i=null===(t=n.resetCustomPen)||void 0===t?void 0:t.currentItemBackgroundColor)&&void 0!==i?i:n.currentItemBackgroundColor;[B,E]=e(s),A.backgroundColor=s,this.dirty=!0,d.setValue(s),y=!0,g.setValue(B)})))).addText((t=>{d=t,t.setValue(A.backgroundColor).onChange((t=>{y=!0,this.dirty=!0,A.backgroundColor=t,[B,E]=e(t),B&&g.setValue(B)}))})).addColorPicker((e=>{g=e,e.setValue(null!=B?B:"#000000").onChange((e=>{y?y=!1:(this.dirty=!0,A.backgroundColor=e+E,d.setValue(e+E))}))})),l.settingEl.style.display=Boolean(A.backgroundColor)&&"transparent"!==A.backgroundColor?"":"none",h=new obsidian_module.Setting(t).setName("Fill Style").addDropdown((e=>e.addOption("","Unset").addOption("dots","Dots (⚠ VERY SLOW performance on large objects!)").addOption("zigzag","Zigzag").addOption("zigzag-line","Zigzag-line").addOption("dashed","Dashed").addOption("hachure","Hachure").addOption("cross-hatch","Cross-hatch").addOption("solid","Solid").setValue(A.fillStyle).onChange((e=>{this.dirty=!0,A.fillStyle=e})))),h.settingEl.style.display=Boolean(A.backgroundColor)&&"transparent"!==A.backgroundColor?"":"none",k=new obsidian_module.Setting(t).setName(fragWithHTML(`Sloppiness: <b>${null===A.roughness?"Not Set":A.roughness<=.5?"Architect (":A.roughness<=1.5?"Artist (":"Cartoonist ("}${null===A.roughness?"":`${A.roughness})`}</b>`)).setDesc("Line sloppiness of the shape fill pattern").addSlider((e=>e.setLimits(-.5,3,.5).setValue(null===A.roughness?-.5:A.roughness).onChange((e=>{this.dirty=!0,A.roughness=-.5===e?null:e,k.setName(fragWithHTML(`Sloppiness: <b>${null===A.roughness?"Not Set":A.roughness<=.5?"Architect (":A.roughness<=1.5?"Artist (":"Cartoonist ("}${null===A.roughness?"":`${A.roughness})`}</b>`))})))),f=new obsidian_module.Setting(t).setName(fragWithHTML(`Stroke Width <b>${0===A.strokeWidth?"Not Set":A.strokeWidth}</b>`)).addSlider((e=>e.setLimits(0,5,.5).setValue(A.strokeWidth).onChange((e=>{this.dirty=!0,A.strokeWidth=e,f.setName(fragWithHTML(`Stroke Width <b>${0===A.strokeWidth?"Not Set":A.strokeWidth}</b>`))})))),new obsidian_module.Setting(t).setName("Highlighter pen?").addToggle((e=>e.setValue(A.penOptions.highlighter).onChange((e=>{this.dirty=!0,A.penOptions.highlighter=e})))),new obsidian_module.Setting(t).setName("Pressure sensitve pen?").setDesc(fragWithHTML("<b>toggle on</b>: pressure sensitive<br><b>toggle off</b>: constant pressure")).addToggle((e=>e.setValue(!A.penOptions.constantPressure).onChange((e=>{this.dirty=!0,A.penOptions.constantPressure=!e,C.settingEl.style.display=A.penOptions.constantPressure?"none":""})))),A.penOptions.hasOutline&&0===A.penOptions.outlineWidth&&(A.penOptions.outlineWidth=.5,this.dirty=!0),!A.penOptions.hasOutline&&A.penOptions.outlineWidth>0&&(A.penOptions.outlineWidth=0,this.dirty=!0),O=new obsidian_module.Setting(t).setName(fragWithHTML(0===A.penOptions.outlineWidth?"No outline":`Outline width <b>${A.penOptions.outlineWidth}</b>`)).setDesc("If the stroke has an outline, this will mean the stroke color is the outline color, and the background color is the pen stroke's fill color. If the pen does not have an outline then the pen color is the stroke color. The Fill Style setting applies to the fill style of the enclosed shape, not of the line itself. The line can only have solid fill.").addSlider((e=>e.setLimits(0,8,.5).setValue(A.penOptions.outlineWidth).onChange((e=>{this.dirty=!0,A.penOptions.outlineWidth=e,A.penOptions.hasOutline=e>0,O.setName(fragWithHTML(0===A.penOptions.outlineWidth?"No outline":`Outline width <b>${A.penOptions.outlineWidth}</b>`))})))),t.createEl("h2",{text:"Perfect Freehand settings"}),t.createEl("p").innerHTML='Read the Perfect Freehand documentation following <a href="https://github.com/steveruizok/perfect-freehand#documentation" target="_blank">this link</a>.',W=new obsidian_module.Setting(t).setName(fragWithHTML(`Thinnning <b>${A.penOptions.options.thinning}</b>`)).setDesc(fragWithHTML("The effect of pressure on the stroke's size.<br>To create a stroke with a steady line, set the thinning option to 0.<br>To create a stroke that gets thinner with pressure instead of thicker, use a negative number for the thinning option.")).addSlider((e=>e.setLimits(-1,1,.05).setValue(A.penOptions.options.thinning).onChange((e=>{this.dirty,W.setName(fragWithHTML(`Thinnning <b>${e}</b>`)),A.penOptions.options.thinning=e})))),b=new obsidian_module.Setting(t).setName(fragWithHTML(`Smoothing <b>${A.penOptions.options.smoothing}</b>`)).setDesc(fragWithHTML("How much to soften the stroke's edges.")).addSlider((e=>e.setLimits(0,1,.05).setValue(A.penOptions.options.smoothing).onChange((e=>{this.dirty,b.setName(fragWithHTML(`Smoothing <b>${e}</b>`)),A.penOptions.options.smoothing=e})))),x=new obsidian_module.Setting(t).setName(fragWithHTML(`Streamline <b>${A.penOptions.options.streamline}</b>`)).setDesc(fragWithHTML("\tHow much to streamline the stroke.")).addSlider((e=>e.setLimits(0,1,.05).setValue(A.penOptions.options.streamline).onChange((e=>{this.dirty,x.setName(fragWithHTML(`Streamline <b>${e}</b>`)),A.penOptions.options.streamline=e})))),new obsidian_module.Setting(t).setName("Easing function").setDesc(fragWithHTML('An easing function for the tapering effect. For more info <a href="https://easings.net/#" target="_blank">click here</a>')).addDropdown((e=>e.addOptions(EASINGFUNCTIONS).setValue(A.penOptions.options.easing).onChange((e=>{this.dirty=!0,A.penOptions.options.easing=e})))),C=new obsidian_module.Setting(t).setName("Simulate Pressure").setDesc("Whether to simulate pressure based on velocity.").addDropdown((e=>e.addOption("true","Always").addOption("false","Never").addOption("","Yes for mouse, No for pen").setValue(!0===A.penOptions.options.simulatePressure?"true":!1===A.penOptions.options.simulatePressure?"false":"").onChange((e=>{switch(this.dirty=!0,e){case"true":A.penOptions.options.simulatePressure=!0;break;case"false":A.penOptions.options.simulatePressure=!1;break;default:delete A.penOptions.options.simulatePressure}})))),C.settingEl.style.display=A.penOptions.constantPressure?"none":"",t.createEl("h3",{text:"Start"}),t.createEl("p",{text:"Tapering options for the start of the line."}),new obsidian_module.Setting(t).setName("Cap Start").setDesc("Whether to draw a cap").addToggle((e=>e.setValue(A.penOptions.options.start.cap).onChange((e=>{this.dirty=!0,A.penOptions.options.start.cap=e})))),Q=new obsidian_module.Setting(t).setName(fragWithHTML(`Taper: <b>${!0===A.penOptions.options.start.taper?"true":A.penOptions.options.start.taper}</b>`)).setDesc("The distance to taper. If set to true, the taper will be the total length of the stroke.").addSlider((e=>e.setLimits(0,151,1).setValue("boolean"==typeof A.penOptions.options.start.taper?151:A.penOptions.options.start.taper).onChange((e=>{this.dirty,A.penOptions.options.start.taper=151===e||e,Q.setName(fragWithHTML(`Taper: <b>${!0===A.penOptions.options.start.taper?"true":A.penOptions.options.start.taper}</b>`))})))),new obsidian_module.Setting(t).setName("Easing function").setDesc(fragWithHTML('An easing function for the tapering effect. For more info <a href="https://easings.net/#" target="_blank">click here</a>')).addDropdown((e=>e.addOptions(EASINGFUNCTIONS).setValue(A.penOptions.options.start.easing).onChange((e=>{this.dirty=!0,A.penOptions.options.start.easing=e})))),t.createEl("h3",{text:"End"}),t.createEl("p",{text:"Tapering options for the end of the line."}),new obsidian_module.Setting(t).setName("Cap End").setDesc("Whether to draw a cap").addToggle((e=>e.setValue(A.penOptions.options.end.cap).onChange((e=>{this.dirty=!0,A.penOptions.options.end.cap=e})))),I=new obsidian_module.Setting(t).setName(fragWithHTML(`Taper: <b>${!0===A.penOptions.options.end.taper?"true":A.penOptions.options.end.taper}</b>`)).setDesc("The distance to taper. If set to true, the taper will be the total length of the stroke.").addSlider((e=>e.setLimits(0,151,1).setValue("boolean"==typeof A.penOptions.options.end.taper?151:A.penOptions.options.end.taper).onChange((e=>{this.dirty,A.penOptions.options.end.taper=151===e||e,I.setName(fragWithHTML(`Taper: <b>${!0===A.penOptions.options.end.taper?"true":A.penOptions.options.end.taper}</b>`))})))),new obsidian_module.Setting(t).setName("Easing function").setDesc(fragWithHTML('An easing function for the tapering effect. For more info <a href="https://easings.net/#" target="_blank">click here</a>')).addDropdown((e=>e.addOptions(EASINGFUNCTIONS).setValue(A.penOptions.options.end.easing).onChange((e=>{this.dirty=!0,A.penOptions.options.end.easing=e}))))}}var defaultAttributes={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const toKebabCase=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),createLucideIcon=(e,A)=>{const t=React.forwardRef((({color:t="currentColor",size:i=24,strokeWidth:n=2,absoluteStrokeWidth:s,children:a,...o},r)=>{return React.createElement("svg",{ref:r,...defaultAttributes,width:i,height:i,stroke:t,strokeWidth:s?24*Number(n)/Number(i):n,className:`lucide lucide-${l=e,l.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,...o},[...A.map((([e,A])=>React.createElement(e,A))),...(Array.isArray(a)?a:[a])||[]]);var l}));return t.displayName=`${e}`,t};var createLucideIcon$1=createLucideIcon;const Copy=createLucideIcon$1("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]),Globe=createLucideIcon$1("Globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"2",x2:"22",y1:"12",y2:"12",key:"1dnqot"}],["path",{d:"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z",key:"nb9nel"}]]),RotateCcw=createLucideIcon$1("RotateCcw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]),Scan=createLucideIcon$1("Scan",[["path",{d:"M3 7V5a2 2 0 0 1 2-2h2",key:"aa7l1z"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2",key:"4qcy5o"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2",key:"6vwrx8"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2",key:"ioqczr"}]]),Settings=createLucideIcon$1("Settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]),ICONS={ExportImage:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("g",{strokeWidth:"1.25"},React__namespace.createElement("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),React__namespace.createElement("path",{d:"M15 8h.01"}),React__namespace.createElement("path",{d:"M12 20h-5a3 3 0 0 1 -3 -3v-10a3 3 0 0 1 3 -3h10a3 3 0 0 1 3 3v5"}),React__namespace.createElement("path",{d:"M4 15l4 -4c.928 -.893 2.072 -.893 3 0l4 4"}),React__namespace.createElement("path",{d:"M14 14l1 -1c.617 -.593 1.328 -.793 2.009 -.598"}),React__namespace.createElement("path",{d:"M19 16v6"}),React__namespace.createElement("path",{d:"M22 19l-3 3l-3 -3"}))),Reload:React__namespace.createElement(RotateCcw,null),Copy:React__namespace.createElement(Copy,null),Globe:React__namespace.createElement(Globe,null),ZoomToSelectedElement:React__namespace.createElement(Scan,null),Properties:React__namespace.createElement(Settings,null),ZoomToSection:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"1",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("text",{x:"6",y:"18",fontSize:"22px"},"#")),ZoomToBlock:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"1",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("text",{x:"1",y:"18",fontSize:"22px"},"#^")),Discord:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"var(--icon-fill-color)",stroke:"none",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",viewBox:"0 0 640 512"},React__namespace.createElement("path",{d:"M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z"})),Github:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"}),React__namespace.createElement("path",{d:"M9 18c-4.51 2-5-2-7-2"})),YouTube:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M12 19c-2.3 0-6.4-.2-8.1-.6-.7-.2-1.2-.7-1.4-1.4-.3-1.1-.5-3.4-.5-5s.2-3.9.5-5c.2-.7.7-1.2 1.4-1.4C5.6 5.2 9.7 5 12 5s6.4.2 8.1.6c.7.2 1.2.7 1.4 1.4.3 1.1.5 3.4.5 5s-.2 3.9-.5 5c-.2.7-.7 1.2-1.4 1.4-1.7.4-5.8.6-8.1.6 0 0 0 0 0 0z"}),React__namespace.createElement("polygon",{points:"10 15 15 12 10 9"})),heart:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M20.42 4.58a5.4 5.4 0 0 0-7.65 0l-.77.78-.77-.78a5.4 5.4 0 0 0-7.65 0C1.46 6.7 1.33 10.28 4 13l8 8 8-8c2.67-2.72 2.54-6.3.42-8.42z"})),twitter:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z"})),exportLibrary:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 200 190",fill:"var(--icon-fill-color)"},React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M50 10h20v20H50"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M50 10h20m-20 0h20m0 0v20m0-20v20m0 0H50m20 0H50m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M90 10h20v20H90"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M90 10h20m-20 0h20m0 0v20m0-20v20m0 0H90m20 0H90m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M130 10h20v20h-20"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M130 10h20m-20 0h20m0 0v20m0-20v20m0 0h-20m20 0h-20m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M170 10h20v20h-20"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M170 10h20m-20 0h20m0 0v20m0-20v20m0 0h-20m20 0h-20m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M70 50h60v80h20l-50 50-50-50h20V50"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M70 50h60m-60 0h60m0 0v80m0-80v80m0 0h20m-20 0h20m0 0-50 50m50-50-50 50m0 0-50-50m50 50-50-50m0 0h20m-20 0h20m0 0V50m0 80V50m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M10 10h20v20H10"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M10 10h20m-20 0h20m0 0v20m0-20v20m0 0H10m20 0H10m0 0V10m0 20V10"}))),insertPDF:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",fill:"var(--icon-fill-color)",stroke:"none"},React__namespace.createElement("path",{d:"M64 464H96v48H64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V288H336V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16zM176 352h32c30.9 0 56 25.1 56 56s-25.1 56-56 56H192v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V448 368c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24H192v48h16zm96-80h32c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H304c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H320v96h16zm80-112c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v32h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V432 368z"})),insertImage:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",fill:"var(--icon-fill-color)",stroke:"none"},React__namespace.createElement("path",{d:"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 336H54a6 6 0 0 1-6-6V118a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v276a6 6 0 0 1-6 6zM128 152c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zM96 352h320v-80l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L192 304l-39.515-39.515c-4.686-4.686-12.284-4.686-16.971 0L96 304v48z"})),insertMD:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 384 512",fill:"var(--icon-fill-color)",stroke:"none"},React__namespace.createElement("path",{d:"M288 248v28c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm-12 72H108c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12zm108-188.1V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h204.1C264.8 0 277 5.1 286 14.1L369.9 98c9 8.9 14.1 21.2 14.1 33.9zm-128-80V128h76.1L256 51.9zM336 464V176H232c-13.3 0-24-10.7-24-24V48H48v416h288z"})),insertLaTeX:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512",stroke:"none",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z"})),insertLink:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",stroke:"none",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"})),search:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M500.3 443.7l-119.7-119.7c27.22-40.41 40.65-90.9 33.46-144.7C401.8 87.79 326.8 13.32 235.2 1.723C99.01-15.51-15.51 99.01 1.724 235.2c11.6 91.64 86.08 166.7 177.6 178.9c53.8 7.189 104.3-6.236 144.7-33.46l119.7 119.7c15.62 15.62 40.95 15.62 56.57 0C515.9 484.7 515.9 459.3 500.3 443.7zM79.1 208c0-70.58 57.42-128 128-128s128 57.42 128 128c0 70.58-57.42 128-128 128S79.1 278.6 79.1 208z"})),ocr:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"m6 18 6-12 6 12"}),React__namespace.createElement("path",{d:"M8 14h8"}),React__namespace.createElement("path",{d:"M3 7V5a2 2 0 0 1 2-2h2"}),React__namespace.createElement("path",{d:"M17 3h2a2 2 0 0 1 2 2v2"}),React__namespace.createElement("path",{d:"M21 17v2a2 2 0 0 1-2 2h-2"}),React__namespace.createElement("path",{d:"M7 21H5a2 2 0 0 1-2-2v-2"})),scriptEngine:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 100",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeLinecap:"round",strokeWidth:"4"},React__namespace.createElement("g",{transform:"translate(-8,-8)"},React__namespace.createElement("path",{d:"M24.318 37.983c-1.234-1.232-8.433-3.903-7.401-7.387 1.057-3.484 9.893-12.443 13.669-13.517 3.776-1.074 6.142 6.523 9.012 7.073 2.87.55 6.797-1.572 8.207-3.694 1.384-2.148-3.147-7.413.15-9.168 3.298-1.755 16.389-2.646 19.611-1.284 3.247 1.363-1.611 7.335-.151 9.483 1.46 2.148 6.067 3.746 8.836 3.38 2.769-.368 4.154-6.733 7.728-5.633 3.575 1.1 12.36 8.828 13.67 12.233 1.308 3.406-5.186 5.423-5.79 8.2-.58 2.75-.026 6.705 2.265 8.355 2.266 1.65 9.642-1.78 11.404 1.598 1.762 3.38 1.007 15.35-.806 18.651-1.787 3.353-7.753-.367-9.969 1.31-2.215 1.65-3.901 5.92-3.373 8.67.504 2.777 7.754 4.48 6.445 7.885C96.49 87.543 87.15 95.454 83.5 96.685c-3.65 1.231-4.96-4.741-7.577-5.16-2.593-.393-6.57.707-8.03 2.75-1.436 2.017 2.668 7.806-.63 9.483-3.323 1.676-15.759 2.226-19.157.655-3.373-1.598.554-7.964-1.108-10.138-1.687-2.174-6.394-3.431-9.012-2.907-2.643.55-3.273 7.282-6.747 6.103-3.499-1.126-12.788-9.535-14.172-13.019-1.36-3.484 5.437-5.108 5.966-7.858.529-2.777-.68-7.073-2.744-8.697-2.064-1.624-7.93 2.41-9.642-1.126-1.737-3.537-2.441-16.765-.654-20.118 1.787-3.3 9.062 1.598 11.429.183 2.366-1.44 2.316-7.282 2.769-8.749m.126-.104c-1.234-1.232-8.433-3.903-7.401-7.387 1.057-3.484 9.893-12.443 13.669-13.517 3.776-1.074 6.142 6.523 9.012 7.073 2.87.55 6.797-1.572 8.207-3.694 1.384-2.148-3.147-7.413.15-9.168 3.298-1.755 16.389-2.646 19.611-1.284 3.247 1.363-1.611 7.335-.151 9.483 1.46 2.148 6.067 3.746 8.836 3.38 2.769-.368 4.154-6.733 7.728-5.633 3.575 1.1 12.36 8.828 13.67 12.233 1.308 3.406-5.186 5.423-5.79 8.2-.58 2.75-.026 6.705 2.265 8.355 2.266 1.65 9.642-1.78 11.404 1.598 1.762 3.38 1.007 15.35-.806 18.651-1.787 3.353-7.753-.367-9.969 1.31-2.215 1.65-3.901 5.92-3.373 8.67.504 2.777 7.754 4.48 6.445 7.885C96.49 87.543 87.15 95.454 83.5 96.685c-3.65 1.231-4.96-4.741-7.577-5.16-2.593-.393-6.57.707-8.03 2.75-1.436 2.017 2.668 7.806-.63 9.483-3.323 1.676-15.759 2.226-19.157.655-3.373-1.598.554-7.964-1.108-10.138-1.687-2.174-6.394-3.431-9.012-2.907-2.643.55-3.273 7.282-6.747 6.103-3.499-1.126-12.788-9.535-14.172-13.019-1.36-3.484 5.437-5.108 5.966-7.858.529-2.777-.68-7.073-2.744-8.697-2.064-1.624-7.93 2.41-9.642-1.126-1.737-3.537-2.441-16.765-.654-20.118 1.787-3.3 9.062 1.598 11.429.183 2.366-1.44 2.316-7.282 2.769-8.749",fill:"none",strokeWidth:"2"}),React__namespace.createElement("path",{d:"M81.235 56.502a23.3 23.3 0 0 1-1.46 8.068 20.785 20.785 0 0 1-1.762 3.72 24.068 24.068 0 0 1-5.337 6.26 22.575 22.575 0 0 1-3.449 2.358 23.726 23.726 0 0 1-7.803 2.803 24.719 24.719 0 0 1-8.333 0 24.102 24.102 0 0 1-4.028-1.074 23.71 23.71 0 0 1-3.776-1.729 23.259 23.259 0 0 1-6.369-5.265 23.775 23.775 0 0 1-2.416-3.353 24.935 24.935 0 0 1-1.762-3.72 23.765 23.765 0 0 1-1.083-3.981 23.454 23.454 0 0 1 0-8.173c.252-1.336.604-2.698 1.083-3.956a24.935 24.935 0 0 1 1.762-3.72 22.587 22.587 0 0 1 2.416-3.378c.881-1.048 1.888-2.017 2.946-2.908a24.38 24.38 0 0 1 3.423-2.357 23.71 23.71 0 0 1 3.776-1.73 21.74 21.74 0 0 1 4.028-1.047 23.437 23.437 0 0 1 8.333 0 24.282 24.282 0 0 1 7.803 2.777 26.198 26.198 0 0 1 3.45 2.357 24.62 24.62 0 0 1 5.336 6.287 20.785 20.785 0 0 1 1.762 3.72 21.32 21.32 0 0 1 1.083 3.955c.251 1.336.302 3.405.377 4.086.05.681.05-.68 0 0",fill:"none"}),React__namespace.createElement("path",{d:"M69.404 56.633c-6.596-3.3-13.216-6.6-19.51-9.744m19.51 9.744c-6.747-3.379-13.493-6.758-19.51-9.744m0 0v19.489m0-19.49v19.49m0 0c4.355-2.148 8.71-4.322 19.51-9.745m-19.51 9.745c3.978-1.965 7.93-3.956 19.51-9.745m0 0h0m0 0h0"}))),openLink:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v7"}),React__namespace.createElement("polyline",{points:"14 2 14 8 20 8"}),React__namespace.createElement("path",{d:"m10 18 3-3-3-3"}),React__namespace.createElement("path",{d:"M4 18v-1a2 2 0 0 1 2-2h6"})),openLinkProperties:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v7"}),React__namespace.createElement("polyline",{points:"14 2 14 8 20 8",fill:"var(--icon-fill-color)"}),React__namespace.createElement("path",{d:"m10 18 3-3-3-3"}),React__namespace.createElement("path",{d:"M4 18v-1a2 2 0 0 1 2-2h6"})),switchToMarkdown:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512",stroke:"var(--icon-fill-color)",strokeWidth:"10",fill:"var(--icon-fill-color)"},React__namespace.createElement("path",{d:"M593.8 59.1H46.2C20.7 59.1 0 79.8 0 105.2v301.5c0 25.5 20.7 46.2 46.2 46.2h547.7c25.5 0 46.2-20.7 46.1-46.1V105.2c0-25.4-20.7-46.1-46.2-46.1zM338.5 360.6H277v-120l-61.5 76.9-61.5-76.9v120H92.3V151.4h61.5l61.5 76.9 61.5-76.9h61.5v209.2zm135.3 3.1L381.5 256H443V151.4h61.5V256H566z"})),gotoFullScreen:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M128 32H32C14.31 32 0 46.31 0 64v96c0 17.69 14.31 32 32 32s32-14.31 32-32V96h64c17.69 0 32-14.31 32-32S145.7 32 128 32zM416 32h-96c-17.69 0-32 14.31-32 32s14.31 32 32 32h64v64c0 17.69 14.31 32 32 32s32-14.31 32-32V64C448 46.31 433.7 32 416 32zM128 416H64v-64c0-17.69-14.31-32-32-32s-32 14.31-32 32v96c0 17.69 14.31 32 32 32h96c17.69 0 32-14.31 32-32S145.7 416 128 416zM416 320c-17.69 0-32 14.31-32 32v64h-64c-17.69 0-32 14.31-32 32s14.31 32 32 32h96c17.69 0 32-14.31 32-32v-96C448 334.3 433.7 320 416 320z"})),exitFullScreen:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M128 320H32c-17.69 0-32 14.31-32 32s14.31 32 32 32h64v64c0 17.69 14.31 32 32 32s32-14.31 32-32v-96C160 334.3 145.7 320 128 320zM416 320h-96c-17.69 0-32 14.31-32 32v96c0 17.69 14.31 32 32 32s32-14.31 32-32v-64h64c17.69 0 32-14.31 32-32S433.7 320 416 320zM320 192h96c17.69 0 32-14.31 32-32s-14.31-32-32-32h-64V64c0-17.69-14.31-32-32-32s-32 14.31-32 32v96C288 177.7 302.3 192 320 192zM128 32C110.3 32 96 46.31 96 64v64H32C14.31 128 0 142.3 0 160s14.31 32 32 32h96c17.69 0 32-14.31 32-32V64C160 46.31 145.7 32 128 32z"})),releaseNotes:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M0 219.2v212.5c0 14.25 11.62 26.25 26.5 27C75.32 461.2 180.2 471.3 240 511.9V245.2C181.4 205.5 79.99 194.8 29.84 192C13.59 191.1 0 203.6 0 219.2zM482.2 192c-50.09 2.848-151.3 13.47-209.1 53.09C272.1 245.2 272 245.3 272 245.5v266.5c60.04-40.39 164.7-50.76 213.5-53.28C500.4 457.9 512 445.9 512 431.7V219.2C512 203.6 498.4 191.1 482.2 192zM352 96c0-53-43-96-96-96S160 43 160 96s43 96 96 96S352 149 352 96z"})),rawMode:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 60"},React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",strokeWidth:"4",d:"M20 10H10m10 0H10m0 0v40m0-40v40m0 0h10m-10 0h10M40 10H30m10 0H30m0 0v40m0-40v40m0 0h10m-10 0h10M60 10h10m-10 0h10m0 0v40m0-40v40m0 0H60m10 0H60M80 10h10m-10 0h10m0 0v40m0-40v40m0 0H80m10 0H80"})),parsedMode:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512",stroke:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M574.1 280.4l-45.38-181.8c-5.875-23.63-21.62-44-43-55.75c-21.5-11.75-46.1-14.13-70.25-6.375l-15.25 5.125c-8.375 2.75-12.87 11.88-10 20.25l5 15.13c2.75 8.375 11.88 12.88 20.25 10.13l13.12-4.375c10.88-3.625 23-3.625 33.25 1.75c10.25 5.375 17.5 14.5 20.38 25.75l38.38 153.9c-22.12-6.875-49.75-12.5-81.13-12.5c-34.88 0-73.1 7-114.9 26.75H251.4C210.5 258.6 171.4 251.6 136.5 251.6c-31.38 0-59 5.625-81.12 12.5l38.38-153.9c2.875-11.25 10.12-20.38 20.5-25.75C124.4 79.12 136.5 79.12 147.4 82.74l13.12 4.375c8.375 2.75 17.5-1.75 20.25-10.13l5-15.13C188.6 53.49 184.1 44.37 175.6 41.62l-15.25-5.125c-23.13-7.75-48.75-5.375-70.13 6.375c-21.37 11.75-37.12 32.13-43 55.75L1.875 280.4C.6251 285.4 .0001 290.6 .0001 295.9v70.25C.0001 428.1 51.63 480 115.3 480h37.13c60.25 0 110.4-46 114.9-105.4l2.875-38.63h35.75l2.875 38.63C313.3 433.1 363.4 480 423.6 480h37.13c63.62 0 115.2-51 115.2-113.9V295.9C576 290.6 575.4 285.5 574.1 280.4zM203.4 369.7c-2 26-24.38 46.25-51 46.25H115.2C87 415.1 64 393.6 64 366.1v-37.5c18.12-6.5 43.38-13 72.62-13c23.88 0 47.25 4.375 69.88 13L203.4 369.7zM512 366.1c0 27.5-23 49.88-51.25 49.88h-37.13c-26.62 0-49-20.25-51-46.25l-3.125-41.13c22.62-8.625 46.13-13 70-13c29 0 54.38 6.5 72.5 13V366.1z"})),convertFile:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",viewBox:"0 110 700 340",xmlns:"http://www.w3.org/2000/svg",stroke:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"m593.95 239.4v-1.5742c-0.85547-1.8828-2.043-3.6016-3.5-5.0742l-52.5-52.5c-1.4688-1.457-3.1875-2.6445-5.0742-3.5h-1.5742c-1.4727-0.49219-3.0039-0.78516-4.5508-0.875h-124.25c-4.6406 0-9.0938 1.8438-12.375 5.125s-5.125 7.7344-5.125 12.375v87.5h-70v-105.88-1.0508c-0.089844-1.5469-0.38281-3.0781-0.875-4.5508v-1.5742c-0.85547-1.8828-2.043-3.6016-3.5-5.0742l-52.5-52.5c-1.4727-1.457-3.1914-2.6445-5.0742-3.5h-1.5742c-1.7031-0.875-3.5352-1.4688-5.4258-1.75h-123.55c-4.6406 0-9.0938 1.8438-12.375 5.125s-5.125 7.7344-5.125 12.375v245c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h175c4.6406 0 9.0938-1.8438 12.375-5.125s5.125-7.7344 5.125-12.375v-52.5h70v122.5c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h175c4.6406 0 9.0938-1.8438 12.375-5.125s5.125-7.7344 5.125-12.375v-192.5-1.0508c-0.14453-1.5547-0.5-3.0859-1.0508-4.5508zm-313.95 110.6h-140v-210h87.5v35c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h35v87.5h-52.5c-6.2539 0-12.031 3.3359-15.156 8.75s-3.125 12.086 0 17.5 8.9023 8.75 15.156 8.75h52.5zm140 70v-105h27.824l-5.0742 5.0742c-3.7031 3.1719-5.9141 7.7461-6.1055 12.617-0.1875 4.8711 1.668 9.6016 5.1133 13.051 3.4492 3.4453 8.1797 5.3008 13.051 5.1133 4.8711-0.19141 9.4453-2.4023 12.617-6.1055l35-35c3.2578-3.2773 5.0898-7.7148 5.0898-12.336 0-4.625-1.832-9.0586-5.0898-12.34l-35-35c-4.5078-3.8555-10.66-5.1719-16.348-3.4883-5.6875 1.6797-10.137 6.1289-11.816 11.816-1.6836 5.6914-0.37109 11.844 3.4883 16.348l5.0742 5.0742h-27.824v-69.824h87.5v35c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h35v157.5z"})),cog:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",fill:"var(--icon-fill-color)",stroke:"none"},React__namespace.createElement("path",{d:"M495.9 166.6C499.2 175.2 496.4 184.9 489.6 191.2L446.3 230.6C447.4 238.9 448 247.4 448 256C448 264.6 447.4 273.1 446.3 281.4L489.6 320.8C496.4 327.1 499.2 336.8 495.9 345.4C491.5 357.3 486.2 368.8 480.2 379.7L475.5 387.8C468.9 398.8 461.5 409.2 453.4 419.1C447.4 426.2 437.7 428.7 428.9 425.9L373.2 408.1C359.8 418.4 344.1 427 329.2 433.6L316.7 490.7C314.7 499.7 307.7 506.1 298.5 508.5C284.7 510.8 270.5 512 255.1 512C241.5 512 227.3 510.8 213.5 508.5C204.3 506.1 197.3 499.7 195.3 490.7L182.8 433.6C167 427 152.2 418.4 138.8 408.1L83.14 425.9C74.3 428.7 64.55 426.2 58.63 419.1C50.52 409.2 43.12 398.8 36.52 387.8L31.84 379.7C25.77 368.8 20.49 357.3 16.06 345.4C12.82 336.8 15.55 327.1 22.41 320.8L65.67 281.4C64.57 273.1 64 264.6 64 256C64 247.4 64.57 238.9 65.67 230.6L22.41 191.2C15.55 184.9 12.82 175.3 16.06 166.6C20.49 154.7 25.78 143.2 31.84 132.3L36.51 124.2C43.12 113.2 50.52 102.8 58.63 92.95C64.55 85.8 74.3 83.32 83.14 86.14L138.8 103.9C152.2 93.56 167 84.96 182.8 78.43L195.3 21.33C197.3 12.25 204.3 5.04 213.5 3.51C227.3 1.201 241.5 0 256 0C270.5 0 284.7 1.201 298.5 3.51C307.7 5.04 314.7 12.25 316.7 21.33L329.2 78.43C344.1 84.96 359.8 93.56 373.2 103.9L428.9 86.14C437.7 83.32 447.4 85.8 453.4 92.95C461.5 102.8 468.9 113.2 475.5 124.2L480.2 132.3C486.2 143.2 491.5 154.7 495.9 166.6V166.6zM256 336C300.2 336 336 300.2 336 255.1C336 211.8 300.2 175.1 256 175.1C211.8 175.1 176 211.8 176 255.1C176 300.2 211.8 336 256 336z"})),trayMode:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M618.1 97.67c-13.02-4.375-27.45 .1562-35.72 11.16L464 266.7l-118.4-157.8c-8.266-11.03-22.64-15.56-35.72-11.16C296.8 102 288 114.2 288 128v256c0 17.69 14.33 32 32 32s32-14.31 32-32v-160l86.41 115.2c12.06 16.12 39.13 16.12 51.19 0L576 224v160c0 17.69 14.33 32 32 32s32-14.31 32-32v-256C640 114.2 631.2 102 618.1 97.67zM224 96.01H32c-17.67 0-32 14.31-32 32s14.33 32 32 32h64v223.1c0 17.69 14.33 31.99 32 31.99s32-14.3 32-31.99V160h64c17.67 0 32-14.31 32-32S241.7 96.01 224 96.01z"})),copyElementLink:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 260 260","aria-hidden":"true",focusable:"false",role:"img"},React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",fill:"none",strokeLinecap:"round",strokeWidth:"8",d:"M10 10h40m-40 0h40m0 0v40m0-40v40m0 0H10m40 0H10m0 0V10m0 40V10M210 10h40m-40 0h40m0 0v40m0-40v40m0 0h-40m40 0h-40m0 0V10m0 40V10M210 210h40m-40 0h40m0 0v40m0-40v40m0 0h-40m40 0h-40m0 0v-40m0 40v-40M10 210h40m-40 0h40m0 0v40m0-40v40m0 0H10m40 0H10m0 0v-40m0 40v-40M30 210V50m0 160V50M50 30h160M50 30h160M230 50v160m0-160v160M50 230h160m-160 0h160"}),React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",fill:"none",strokeLinecap:"round",strokeWidth:"16",d:"M110 90c-6.67 1.67-30 3.11-40 10-10 6.89-20 21.37-20 31.37S60 153.56 70 160c10 6.44 33.33 8.33 40 10m0-80c-6.67 1.67-30 3.11-40 10-10 6.89-20 21.37-20 31.37S60 153.56 70 160c10 6.44 33.33 8.33 40 10M150 90c6.67 1.67 30 3.11 40 10 10 6.89 20 21.37 20 31.37s-10 22.19-20 28.63c-10 6.44-33.33 8.33-40 10m0-80c6.67 1.67 30 3.11 40 10 10 6.89 20 21.37 20 31.37s-10 22.19-20 28.63c-10 6.44-33.33 8.33-40 10"}),React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",fill:"none",strokeLinecap:"round",strokeWidth:"16",d:"M89.868 130.198c13.36-.03 66.78-.17 80.13-.2m-80.13.2c13.36-.03 66.78-.17 80.13-.2"})),importSVG:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 526 526"},React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"var(--input-bg-color)",strokeWidth:"0",d:"m133.462 71 .33-6.54.97-6.34 1.58-6.13 2.16-5.88 2.69-5.6 3.21-5.27 3.69-4.93 4.13-4.55 4.55-4.13 4.93-3.69 5.27-3.21 5.6-2.69 5.88-2.16 6.13-1.58 6.34-.97 6.54-.33h160v128l.16 3.28.49 3.18.79 3.07 1.07 2.94 1.35 2.8 1.6 2.63 1.84 2.47 2.06 2.27 2.27 2.06 2.47 1.84 2.63 1.6 2.8 1.35 2.94 1.07 3.07.79 3.18.49 3.28.16h128v288l-.33 6.54-.97 6.34-1.58 6.13-2.16 5.88-2.69 5.6-3.21 5.27-3.69 4.93-4.13 4.55-4.55 4.13-4.93 3.69-5.27 3.21-5.6 2.69-5.88 2.16-6.13 1.58-6.34.97-6.54.33h-256l-6.54-.33-6.34-.97-6.13-1.58-5.88-2.16-5.6-2.69-5.27-3.21-4.93-3.69-4.55-4.13-4.13-4.55-3.69-4.93-3.21-5.27-2.69-5.6-2.16-5.88-1.58-6.13-.97-6.34-.33-6.54V343h174.1l-39 39-1.65 1.83-1.43 1.94-1.22 2.05-.99 2.13-.77 2.2-.55 2.25-.33 2.29-.11 2.3.11 2.3.33 2.28.55 2.24.77 2.19.99 2.12 1.22 2.04 1.43 1.93 1.65 1.81 1.83 1.64 1.94 1.42 2.05 1.2 2.13.99 2.2.76 2.25.56 2.29.33 2.3.11 2.3-.1 2.28-.33 2.24-.54 2.19-.77 2.12-.98 2.04-1.21 1.93-1.43 1.81-1.65 80-80 1.65-1.83 1.43-1.94 1.22-2.05.99-2.13.77-2.2.55-2.25.33-2.29.11-2.3-.11-2.3-.33-2.28-.55-2.24-.77-2.19-.99-2.12-1.22-2.04-1.43-1.93-1.65-1.81-80-80-1.83-1.65-1.94-1.43-2.05-1.22-2.13-.99-2.2-.77-2.25-.55-2.29-.33-2.3-.11-2.3.11-2.28.33-2.24.55-2.19.77-2.12.99-2.04 1.22-1.93 1.43-1.81 1.65-1.64 1.83-1.42 1.94-1.2 2.05-.99 2.13-.76 2.2-.56 2.25-.33 2.29-.11 2.3.1 2.3.33 2.28.54 2.24.77 2.19.98 2.12 1.21 2.04 1.43 1.93 1.65 1.81 39 39h-174.1V71"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"18",d:"M133.462 71s0 0 0 0m0 0s0 0 0 0m0 0 .33-6.54m-.33 6.54c.13-2.57.26-5.13.33-6.54m0 0c.36-2.33.72-4.67.97-6.34m-.97 6.34c.35-2.26.69-4.53.97-6.34m0 0c.51-1.99 1.03-3.98 1.58-6.13m-1.58 6.13c.4-1.56.81-3.12 1.58-6.13m0 0c.81-2.22 1.62-4.43 2.16-5.88m-2.16 5.88c.45-1.22.9-2.44 2.16-5.88m0 0c.72-1.51 1.45-3.01 2.69-5.6m-2.69 5.6c.69-1.45 1.39-2.9 2.69-5.6m0 0c.93-1.52 1.86-3.05 3.21-5.27m-3.21 5.27c.97-1.59 1.94-3.18 3.21-5.27m0 0c.86-1.15 1.71-2.29 3.69-4.93m-3.69 4.93c.78-1.04 1.56-2.08 3.69-4.93m0 0c1.53-1.69 3.07-3.38 4.13-4.55m-4.13 4.55c1.54-1.69 3.07-3.38 4.13-4.55m0 0c1.03-.93 2.06-1.87 4.55-4.13m-4.55 4.13c.98-.89 1.97-1.78 4.55-4.13m0 0c1.64-1.23 3.28-2.46 4.93-3.69m-4.93 3.69c1.72-1.29 3.45-2.58 4.93-3.69m0 0c1.11-.68 2.23-1.35 5.27-3.21m-5.27 3.21c1.5-.91 3.01-1.83 5.27-3.21m0 0c1.87-.89 3.73-1.79 5.6-2.69m-5.6 2.69c2.09-1 4.17-2.01 5.6-2.69m0 0c1.72-.64 3.44-1.27 5.88-2.16m-5.88 2.16c1.94-.72 3.89-1.43 5.88-2.16m0 0c2.3-.59 4.6-1.19 6.13-1.58m-6.13 1.58c2.32-.6 4.65-1.2 6.13-1.58m0 0c2.06-.31 4.12-.63 6.34-.97m-6.34.97c2.34-.36 4.69-.72 6.34-.97m0 0c2.05-.1 4.09-.21 6.54-.33m-6.54.33c2.06-.1 4.12-.21 6.54-.33m0 0h160m-160 0h160m0 0v128m0-128v128m0 0s0 0 0 0m0 0s0 0 0 0m0 0 .16 3.28m-.16-3.28c.06 1.16.12 2.32.16 3.28m0 0c.13.82.26 1.64.49 3.18m-.49-3.18c.18 1.13.35 2.26.49 3.18m0 0c.24.95.49 1.91.79 3.07m-.79-3.07c.28 1.1.56 2.2.79 3.07m0 0c.39 1.06.78 2.13 1.07 2.94m-1.07-2.94c.42 1.15.84 2.3 1.07 2.94m0 0c.38.79.76 1.57 1.35 2.8m-1.35-2.8c.4.82.79 1.64 1.35 2.8m0 0c.45.75.91 1.5 1.6 2.63m-1.6-2.63c.4.65.8 1.31 1.6 2.63m0 0c.56.76 1.13 1.52 1.84 2.47m-1.84-2.47c.58.79 1.17 1.57 1.84 2.47m0 0c.75.82 1.5 1.65 2.06 2.27m-2.06-2.27c.75.82 1.5 1.65 2.06 2.27m0 0c.74.66 1.47 1.33 2.27 2.06m-2.27-2.06c.89.81 1.78 1.61 2.27 2.06m0 0c.69.51 1.37 1.02 2.47 1.84m-2.47-1.84c.68.5 1.35 1.01 2.47 1.84m0 0c.81.49 1.62.99 2.63 1.6m-2.63-1.6c.74.45 1.47.9 2.63 1.6m0 0c.72.35 1.43.69 2.8 1.35m-2.8-1.35c.61.3 1.22.59 2.8 1.35m0 0c.85.31 1.69.62 2.94 1.07m-2.94-1.07c1.03.38 2.07.75 2.94 1.07m0 0c.83.22 1.67.43 3.07.79m-3.07-.79 3.07.79m0 0c1.07.16 2.14.33 3.18.49m-3.18-.49c1.2.18 2.39.36 3.18.49m0 0 3.28.16m-3.28-.16c.97.04 1.93.09 3.28.16m0 0h128m-128 0h128m0 0v288m0-288v288m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-.1 2.02-.2 4.04-.33 6.54m.33-6.54c-.13 2.52-.26 5.05-.33 6.54m0 0c-.33 2.14-.66 4.29-.97 6.34m.97-6.34c-.32 2.06-.63 4.12-.97 6.34m0 0c-.59 2.28-1.17 4.55-1.58 6.13m1.58-6.13c-.53 2.07-1.07 4.14-1.58 6.13m0 0c-.73 1.99-1.46 3.97-2.16 5.88m2.16-5.88c-.72 1.97-1.44 3.94-2.16 5.88m0 0c-.94 1.97-1.89 3.93-2.69 5.6m2.69-5.6c-.91 1.89-1.82 3.77-2.69 5.6m0 0c-.89 1.46-1.78 2.92-3.21 5.27m3.21-5.27c-.65 1.05-1.29 2.11-3.21 5.27m0 0c-1.13 1.51-2.25 3.01-3.69 4.93m3.69-4.93c-1.29 1.72-2.58 3.44-3.69 4.93m0 0c-1.29 1.42-2.58 2.84-4.13 4.55m4.13-4.55-4.13 4.55m0 0-4.55 4.13m4.55-4.13-4.55 4.13m0 0c-1.2.9-2.41 1.8-4.93 3.69m4.93-3.69-4.93 3.69m0 0c-1.56.95-3.13 1.9-5.27 3.21m5.27-3.21c-1.99 1.21-3.98 2.42-5.27 3.21m0 0c-1.8.86-3.6 1.73-5.6 2.69m5.6-2.69c-1.34.64-2.67 1.28-5.6 2.69m0 0c-2.24.82-4.48 1.65-5.88 2.16m5.88-2.16c-1.38.51-2.77 1.02-5.88 2.16m0 0c-1.46.38-2.93.76-6.13 1.58m6.13-1.58c-1.54.4-3.09.79-6.13 1.58m0 0c-2.12.32-4.24.65-6.34.97m6.34-.97c-2.47.38-4.94.75-6.34.97m0 0c-2.23.11-4.46.22-6.54.33m6.54-.33c-1.97.1-3.93.2-6.54.33m0 0h-256m256 0h-256m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-2.33-.12-4.66-.24-6.54-.33m6.54.33c-1.33-.07-2.65-.13-6.54-.33m0 0c-1.88-.29-3.77-.58-6.34-.97m6.34.97c-2.07-.32-4.14-.63-6.34-.97m0 0c-1.52-.39-3.04-.79-6.13-1.58m6.13 1.58c-2.02-.52-4.04-1.04-6.13-1.58m0 0c-1.6-.59-3.19-1.17-5.88-2.16m5.88 2.16c-1.9-.7-3.8-1.39-5.88-2.16m0 0c-1.41-.68-2.82-1.36-5.6-2.69m5.6 2.69c-1.6-.77-3.2-1.54-5.6-2.69m0 0c-1.4-.86-2.81-1.71-5.27-3.21m5.27 3.21c-2.08-1.27-4.17-2.54-5.27-3.21m0 0c-1.72-1.29-3.43-2.57-4.93-3.69m4.93 3.69c-1.79-1.34-3.57-2.67-4.93-3.69m0 0c-1.18-1.07-2.36-2.15-4.55-4.13m4.55 4.13c-1.64-1.49-3.27-2.97-4.55-4.13m0 0c-1.07-1.19-2.15-2.37-4.13-4.55m4.13 4.55c-1.46-1.61-2.93-3.23-4.13-4.55m0 0-3.69-4.93m3.69 4.93c-.88-1.17-1.76-2.35-3.69-4.93m0 0c-.83-1.37-1.67-2.75-3.21-5.27m3.21 5.27c-1.15-1.89-2.3-3.79-3.21-5.27m0 0c-1.03-2.14-2.05-4.27-2.69-5.6m2.69 5.6c-.68-1.43-1.37-2.85-2.69-5.6m0 0c-.8-2.17-1.59-4.34-2.16-5.88m2.16 5.88c-.82-2.22-1.63-4.44-2.16-5.88m0 0c-.47-1.82-.94-3.64-1.58-6.13m1.58 6.13c-.37-1.44-.74-2.88-1.58-6.13m0 0-.97-6.34m.97 6.34c-.3-1.98-.61-3.97-.97-6.34m0 0c-.13-2.54-.26-5.07-.33-6.54m.33 6.54-.33-6.54m0 0V343m0 112V343m0 0h174.1m-174.1 0h174.1m0 0-39 39m39-39-39 39m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-.65.72-1.3 1.44-1.65 1.83m1.65-1.83c-.34.38-.68.76-1.65 1.83m0 0c-.35.47-.7.95-1.43 1.94m1.43-1.94c-.38.5-.75 1.01-1.43 1.94m0 0c-.32.54-.64 1.08-1.22 2.05m1.22-2.05c-.38.64-.76 1.28-1.22 2.05m0 0c-.2.45-.41.89-.99 2.13m.99-2.13c-.38.82-.76 1.64-.99 2.13m0 0c-.18.53-.36 1.05-.77 2.2m.77-2.2c-.3.88-.61 1.75-.77 2.2m0 0c-.15.61-.3 1.22-.55 2.25m.55-2.25c-.16.68-.33 1.35-.55 2.25m0 0-.33 2.29m.33-2.29c-.13.9-.26 1.79-.33 2.29m0 0-.11 2.3m.11-2.3c-.03.59-.06 1.19-.11 2.3m0 0c.03.54.05 1.08.11 2.3m-.11-2.3c.03.72.07 1.44.11 2.3m0 0c.1.71.21 1.43.33 2.28m-.33-2.28c.1.71.21 1.42.33 2.28m0 0c.22.88.44 1.77.55 2.24m-.55-2.24c.16.66.33 1.32.55 2.24m0 0c.26.72.51 1.45.77 2.19m-.77-2.19c.25.69.49 1.39.77 2.19m0 0c.33.7.65 1.4.99 2.12m-.99-2.12c.37.79.74 1.57.99 2.12m0 0c.38.63.75 1.25 1.22 2.04m-1.22-2.04c.4.67.8 1.35 1.22 2.04m0 0c.38.52.77 1.05 1.43 1.93m-1.43-1.93c.38.52.77 1.05 1.43 1.93m0 0c.46.5.91 1 1.65 1.81m-1.65-1.81c.35.39.7.77 1.65 1.81m0 0c.37.33.75.67 1.83 1.64m-1.83-1.64c.43.39.87.78 1.83 1.64m0 0c.62.45 1.25.91 1.94 1.42m-1.94-1.42c.45.32.9.65 1.94 1.42m0 0c.53.3 1.05.61 2.05 1.2m-2.05-1.2c.43.25.86.5 2.05 1.2m0 0c.78.36 1.56.72 2.13.99m-2.13-.99c.54.25 1.08.5 2.13.99m0 0c.67.23 1.33.46 2.2.76m-2.2-.76c.51.17 1.03.35 2.2.76m0 0c.87.22 1.73.43 2.25.56m-2.25-.56c.79.2 1.57.39 2.25.56m0 0 2.29.33m-2.29-.33c.58.08 1.16.16 2.29.33m0 0c.91.04 1.82.09 2.3.11m-2.3-.11c.89.04 1.79.09 2.3.11m0 0c.48-.02.96-.04 2.3-.1m-2.3.1c.73-.03 1.47-.06 2.3-.1m0 0c.61-.09 1.22-.18 2.28-.33m-2.28.33c.58-.09 1.17-.17 2.28-.33m0 0c.79-.19 1.59-.38 2.24-.54m-2.24.54c.88-.21 1.75-.42 2.24-.54m0 0c.7-.25 1.4-.49 2.19-.77m-2.19.77c.5-.18 1.01-.35 2.19-.77m0 0c.56-.26 1.13-.52 2.12-.98m-2.12.98c.69-.31 1.37-.63 2.12-.98m0 0c.63-.37 1.25-.74 2.04-1.21m-2.04 1.21c.8-.48 1.6-.95 2.04-1.21m0 0c.67-.5 1.34-.99 1.93-1.43m-1.93 1.43c.52-.39 1.05-.78 1.93-1.43m0 0c.43-.39.87-.79 1.81-1.65m-1.81 1.65c.42-.38.83-.76 1.81-1.65m0 0 80-80m-80 80 80-80m0 0s0 0 0 0m0 0s0 0 0 0m0 0c.33-.37.67-.74 1.65-1.83m-1.65 1.83c.63-.7 1.27-1.4 1.65-1.83m0 0c.3-.4.59-.79 1.43-1.94m-1.43 1.94c.42-.57.84-1.13 1.43-1.94m0 0c.4-.68.8-1.35 1.22-2.05m-1.22 2.05c.47-.79.93-1.57 1.22-2.05m0 0c.28-.62.57-1.23.99-2.13m-.99 2.13c.3-.65.6-1.31.99-2.13m0 0c.26-.74.51-1.47.77-2.2m-.77 2.2.77-2.2m0 0 .55-2.25m-.55 2.25c.2-.84.41-1.68.55-2.25m0 0 .33-2.29m-.33 2.29c.11-.75.21-1.49.33-2.29m0 0c.03-.54.05-1.08.11-2.3m-.11 2.3c.04-.91.09-1.81.11-2.3m0 0c-.03-.7-.07-1.41-.11-2.3m.11 2.3c-.04-.75-.07-1.49-.11-2.3m0 0c-.08-.52-.15-1.04-.33-2.28m.33 2.28c-.09-.63-.18-1.26-.33-2.28m0 0-.55-2.24m.55 2.24c-.19-.79-.39-1.58-.55-2.24m0 0-.77-2.19m.77 2.19c-.25-.72-.51-1.44-.77-2.19m0 0c-.23-.5-.46-.99-.99-2.12m.99 2.12c-.39-.83-.78-1.66-.99-2.12m0 0c-.42-.7-.83-1.39-1.22-2.04m1.22 2.04c-.32-.53-.64-1.06-1.22-2.04m0 0c-.47-.64-.95-1.28-1.43-1.93m1.43 1.93c-.47-.63-.94-1.27-1.43-1.93m0 0c-.44-.49-.89-.98-1.65-1.81m1.65 1.81c-.64-.7-1.28-1.4-1.65-1.81m0 0-80-80m80 80-80-80m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-.72-.65-1.44-1.3-1.83-1.65m1.83 1.65c-.68-.62-1.37-1.23-1.83-1.65m0 0c-.51-.38-1.02-.75-1.94-1.43m1.94 1.43c-.58-.43-1.17-.87-1.94-1.43m0 0c-.73-.43-1.45-.86-2.05-1.22m2.05 1.22c-.77-.45-1.53-.9-2.05-1.22m0 0c-.46-.21-.93-.43-2.13-.99m2.13.99-2.13-.99m0 0c-.83-.29-1.65-.57-2.2-.77m2.2.77c-.56-.19-1.12-.39-2.2-.77m0 0c-.65-.16-1.29-.31-2.25-.55m2.25.55c-.57-.14-1.13-.27-2.25-.55m0 0c-.74-.11-1.48-.21-2.29-.33m2.29.33c-.51-.07-1.02-.15-2.29-.33m0 0c-.77-.04-1.54-.07-2.3-.11m2.3.11c-.88-.04-1.76-.08-2.3-.11m0 0c-.49.02-.98.05-2.3.11m2.3-.11c-.88.04-1.77.09-2.3.11m0 0c-.62.09-1.23.18-2.28.33m2.28-.33c-.6.09-1.2.17-2.28.33m0 0c-.45.11-.91.22-2.24.55m2.24-.55c-.79.2-1.58.39-2.24.55m0 0c-.56.2-1.12.4-2.19.77m2.19-.77c-.51.18-1.01.36-2.19.77m0 0c-.85.4-1.7.8-2.12.99m2.12-.99c-.51.24-1.02.48-2.12.99m0 0c-.6.36-1.2.71-2.04 1.22m2.04-1.22c-.46.27-.91.55-2.04 1.22m0 0c-.49.36-.99.73-1.93 1.43m1.93-1.43-1.93 1.43m0 0c-.42.38-.85.77-1.81 1.65m1.81-1.65c-.69.63-1.39 1.27-1.81 1.65m0 0-1.64 1.83m1.64-1.83c-.54.6-1.08 1.21-1.64 1.83m0 0c-.53.73-1.07 1.47-1.42 1.94m1.42-1.94c-.36.5-.73 1-1.42 1.94m0 0c-.35.61-.7 1.21-1.2 2.05m1.2-2.05c-.33.58-.67 1.15-1.2 2.05m0 0c-.26.57-.53 1.15-.99 2.13m.99-2.13c-.39.85-.78 1.69-.99 2.13m0 0c-.24.7-.48 1.4-.76 2.2m.76-2.2c-.17.51-.35 1.01-.76 2.2m0 0c-.17.68-.33 1.35-.56 2.25m.56-2.25c-.2.79-.39 1.57-.56 2.25m0 0c-.09.65-.18 1.29-.33 2.29m.33-2.29c-.06.48-.13.95-.33 2.29m0 0c-.03.71-.07 1.43-.11 2.3m.11-2.3-.11 2.3m0 0c.04.86.08 1.73.1 2.3m-.1-2.3c.03.8.07 1.6.1 2.3m0 0c.13.88.25 1.76.33 2.28m-.33-2.28c.11.73.21 1.47.33 2.28m0 0c.18.74.36 1.49.54 2.24m-.54-2.24c.15.64.31 1.28.54 2.24m0 0c.2.57.4 1.15.77 2.19m-.77-2.19c.21.58.41 1.17.77 2.19m0 0c.23.5.46 1.01.98 2.12m-.98-2.12c.35.76.71 1.53.98 2.12m0 0c.38.64.76 1.29 1.21 2.04m-1.21-2.04 1.21 2.04m0 0c.45.6.89 1.21 1.43 1.93m-1.43-1.93c.3.4.6.81 1.43 1.93m0 0 1.65 1.81m-1.65-1.81c.47.52.94 1.03 1.65 1.81m0 0 39 39m-39-39 39 39m0 0h-174.1m174.1 0h-174.1m0 0V71m0 223.9V71m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeLinecap:"round",strokeWidth:"18",d:"M135 343.068H31m104 0H31m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-.74-.04-1.48-.07-2.46-.12m2.46.12c-.77-.04-1.54-.08-2.46-.12m0 0c-.87-.14-1.75-.27-2.39-.37m2.39.37c-.55-.09-1.1-.17-2.39-.37m0 0c-.87-.22-1.74-.44-2.3-.59m2.3.59c-.62-.15-1.24-.31-2.3-.59m0 0c-.82-.29-1.64-.59-2.21-.8m2.21.8c-.52-.18-1.03-.37-2.21-.8m0 0c-.55-.26-1.09-.52-2.1-1.01m2.1 1.01c-.64-.31-1.28-.61-2.1-1.01m0 0c-.74-.45-1.48-.89-1.98-1.2m1.98 1.2c-.42-.25-.84-.51-1.98-1.2m0 0c-.7-.52-1.41-1.05-1.84-1.38m1.84 1.38c-.37-.28-.75-.56-1.84-1.38m0 0c-.4-.36-.8-.71-1.71-1.54m1.71 1.54c-.35-.31-.7-.63-1.71-1.54m0 0c-.43-.47-.85-.95-1.54-1.71m1.54 1.71c-.61-.68-1.23-1.36-1.54-1.71m0 0c-.29-.38-.58-.76-1.38-1.84m1.38 1.84c-.54-.71-1.08-1.43-1.38-1.84m0 0c-.46-.76-.92-1.52-1.2-1.98m1.2 1.98c-.45-.74-.89-1.47-1.2-1.98m0 0c-.37-.77-.74-1.53-1.01-2.1m1.01 2.1c-.3-.62-.6-1.25-1.01-2.1m0 0c-.2-.54-.39-1.07-.8-2.21m.8 2.21c-.2-.54-.4-1.09-.8-2.21m0 0c-.22-.85-.44-1.71-.59-2.3m.59 2.3c-.12-.46-.24-.92-.59-2.3m0 0c-.11-.72-.22-1.43-.37-2.39m.37 2.39c-.08-.48-.15-.96-.37-2.39m0 0c-.03-.74-.07-1.48-.12-2.46m.12 2.46c-.04-.79-.08-1.59-.12-2.46m0 0c.04-.74.07-1.49.12-2.46m-.12 2.46.12-2.46m0 0c.08-.53.16-1.07.37-2.39m-.37 2.39c.09-.56.17-1.12.37-2.39m0 0c.17-.69.35-1.38.59-2.3m-.59 2.3c.15-.61.31-1.23.59-2.3m0 0c.17-.48.34-.96.8-2.21m-.8 2.21c.2-.55.4-1.1.8-2.21m0 0c.25-.52.49-1.03 1.01-2.1m-1.01 2.1c.36-.76.73-1.52 1.01-2.1m0 0c.43-.72.87-1.44 1.2-1.98m-1.2 1.98c.27-.45.55-.91 1.2-1.98m0 0c.54-.73 1.09-1.47 1.38-1.84m-1.38 1.84c.4-.54.81-1.09 1.38-1.84m0 0c.53-.59 1.07-1.18 1.54-1.71m-1.54 1.71c.59-.66 1.19-1.32 1.54-1.71m0 0c.54-.49 1.08-.97 1.71-1.54m-1.71 1.54c.48-.43.95-.86 1.71-1.54m0 0c.46-.35.92-.7 1.84-1.38m-1.84 1.38c.5-.38 1.01-.76 1.84-1.38m0 0c.52-.32 1.04-.63 1.98-1.2m-1.98 1.2c.72-.44 1.44-.88 1.98-1.2m0 0 2.1-1.01m-2.1 1.01c.84-.4 1.67-.81 2.1-1.01m0 0c.45-.17.91-.33 2.21-.8m-2.21.8c.56-.21 1.12-.41 2.21-.8m0 0c.89-.23 1.79-.46 2.3-.59m-2.3.59c.48-.13.95-.25 2.3-.59m0 0c.51-.08 1.02-.16 2.39-.37m-2.39.37 2.39-.37m0 0c.52-.02 1.03-.05 2.46-.12m-2.46.12c.74-.03 1.48-.07 2.46-.12m0 0 103.34-.27m-103.34.27c30.04-.08 60.08-.16 103.34-.27"}),React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"var(--input-bg-color)",strokeWidth:"0",d:"M517.462 135h-128V7l128 128"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"18",d:"M517.462 135h-128m128 0h-128m0 0V7m0 128V7m0 0 128 128m-128-128 128 128m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"}))),obsidian:React__namespace.createElement("svg",{focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},React__namespace.createElement("defs",null,React__namespace.createElement("radialGradient",{id:"b",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(-48 -185 123 -32 179 429.7)"},React__namespace.createElement("stop",{stopColor:"#fff",stopOpacity:".4"}),React__namespace.createElement("stop",{offset:"1",stopOpacity:".1"})),React__namespace.createElement("radialGradient",{id:"c",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(41 -310 229 30 341.6 351.3)"},React__namespace.createElement("stop",{stopColor:"#fff",stopOpacity:".6"}),React__namespace.createElement("stop",{offset:"1",stopColor:"#fff",stopOpacity:".1"})),React__namespace.createElement("radialGradient",{id:"d",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(57 -261 178 39 190.5 296.3)"},React__namespace.createElement("stop",{stopColor:"#fff",stopOpacity:".8"}),React__namespace.createElement("stop",{offset:"1",stopColor:"#fff",stopOpacity:".4"})),React__namespace.createElement("radialGradient",{id:"e",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(-79 -133 153 -90 321.4 464.2)"},React__namespace.createElement("stop",{stopColor:"#fff",stopOpacity:".3"}),React__namespace.createElement("stop",{offset:"1",stopOpacity:".3"})),React__namespace.createElement("radialGradient",{id:"f",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(-29 136 -92 -20 300.7 149.9)"},React__namespace.createElement("stop",{stopColor:"#fff",stopOpacity:"0"}),React__namespace.createElement("stop",{offset:"1",stopColor:"#fff",stopOpacity:".2"})),React__namespace.createElement("radialGradient",{id:"g",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(72 73 -155 153 137.8 225.2)"},React__namespace.createElement("stop",{stopColor:"#fff",stopOpacity:".2"}),React__namespace.createElement("stop",{offset:"1",stopColor:"#fff",stopOpacity:".4"})),React__namespace.createElement("radialGradient",{id:"h",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(20 118 -251 43 215.1 273.7)"},React__namespace.createElement("stop",{stopColor:"#fff",stopOpacity:".1"}),React__namespace.createElement("stop",{offset:"1",stopColor:"#fff",stopOpacity:".3"})),React__namespace.createElement("radialGradient",{id:"i",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(-162 -85 268 -510 374.4 371.7)"},React__namespace.createElement("stop",{stopColor:"#fff",stopOpacity:".2"}),React__namespace.createElement("stop",{offset:".5",stopColor:"#fff",stopOpacity:".2"}),React__namespace.createElement("stop",{offset:"1",stopColor:"#fff",stopOpacity:".3"})),React__namespace.createElement("filter",{id:"a",x:"80.1",y:"37",width:"351.1",height:"443.2",filterUnits:"userSpaceOnUse",colorInterpolationFilters:"sRGB"},React__namespace.createElement("feFlood",{floodOpacity:"0",result:"BackgroundImageFix"}),React__namespace.createElement("feBlend",{in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),React__namespace.createElement("feGaussianBlur",{stdDeviation:"6.5",result:"effect1_foregroundBlur_744_9191"}))),React__namespace.createElement("g",{filter:"url(#a)"},React__namespace.createElement("path",{d:"M359.2 437.5c-2.6 19-21.3 33.9-40 28.7-26.5-7.2-57.2-18.6-84.8-20.7l-42.4-3.2a28 28 0 0 1-18-8.3l-73-74.8a27.7 27.7 0 0 1-5.4-30.7s45-98.6 46.8-103.7c1.6-5.1 7.8-49.9 11.4-73.9a28 28 0 0 1 9-16.5L249 57.2a28 28 0 0 1 40.6 3.4l72.6 91.6a29.5 29.5 0 0 1 6.2 18.3c0 17.3 1.5 53 11.2 76a301.3 301.3 0 0 0 35.6 58.2 14 14 0 0 1 1 15.6c-6.3 10.7-18.9 31.3-36.6 57.6a142.2 142.2 0 0 0-20.5 59.6Z",fill:"#000",fillOpacity:".3"})),React__namespace.createElement("path",{id:"arrow",d:"M359.9 434.3c-2.6 19.1-21.3 34-40 28.9-26.4-7.3-57-18.7-84.7-20.8l-42.3-3.2a27.9 27.9 0 0 1-18-8.4l-73-75a27.9 27.9 0 0 1-5.4-31s45.1-99 46.8-104.2c1.7-5.1 7.8-50 11.4-74.2a28 28 0 0 1 9-16.6l86.2-77.5a28 28 0 0 1 40.6 3.5l72.5 92a29.7 29.7 0 0 1 6.2 18.3c0 17.4 1.5 53.2 11.1 76.3a303 303 0 0 0 35.6 58.5 14 14 0 0 1 1.1 15.7c-6.4 10.8-18.9 31.4-36.7 57.9a143.3 143.3 0 0 0-20.4 59.8Z",fill:"#6c31e3"}),React__namespace.createElement("path",{d:"M182.7 436.4c33.9-68.7 33-118 18.5-153-13.2-32.4-37.9-52.8-57.3-65.5-.4 1.9-1 3.7-1.8 5.4L96.5 324.8a27.9 27.9 0 0 0 5.5 31l72.9 75c2.3 2.3 5 4.2 7.8 5.6Z",fill:"url(#b)"}),React__namespace.createElement("path",{d:"M274.9 297c9.1.9 18 2.9 26.8 6.1 27.8 10.4 53.1 33.8 74 78.9 1.5-2.6 3-5.1 4.6-7.5a1222 1222 0 0 0 36.7-57.9 14 14 0 0 0-1-15.7 303 303 0 0 1-35.7-58.5c-9.6-23-11-58.9-11.1-76.3 0-6.6-2.1-13.1-6.2-18.3l-72.5-92-1.2-1.5c5.3 17.5 5 31.5 1.7 44.2-3 11.8-8.6 22.5-14.5 33.8-2 3.8-4 7.7-5.9 11.7a140 140 0 0 0-15.8 58c-1 24.2 3.9 54.5 20 95Z",fill:"url(#c)"}),React__namespace.createElement("path",{d:"M274.8 297c-16.1-40.5-21-70.8-20-95 1-24 8-42 15.8-58l6-11.7c5.8-11.3 11.3-22 14.4-33.8a78.5 78.5 0 0 0-1.7-44.2 28 28 0 0 0-39.4-2l-86.2 77.5a28 28 0 0 0-9 16.6L144.2 216c0 .7-.2 1.3-.3 2 19.4 12.6 44 33 57.3 65.3 2.6 6.4 4.8 13.1 6.4 20.4a200 200 0 0 1 67.2-6.8Z",fill:"url(#d)"}),React__namespace.createElement("path",{d:"M320 463.2c18.6 5.1 37.3-9.8 39.9-29a153 153 0 0 1 15.9-52.2c-21-45.1-46.3-68.5-74-78.9-29.5-11-61.6-7.3-94.2.6 7.3 33.1 3 76.4-24.8 132.7 3.1 1.6 6.6 2.5 10.1 2.8l43.9 3.3c23.8 1.7 59.3 14 83.2 20.7Z",fill:"url(#e)"}),React__namespace.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M255 200.5c-1.1 24 1.9 51.4 18 91.8l-5-.5c-14.5-42.1-17.7-63.7-16.6-88 1-24.3 8.9-43 16.7-59 2-4 6.6-11.5 8.6-15.3 5.8-11.3 9.7-17.2 13-27.5 4.8-14.4 3.8-21.2 3.2-28 3.7 24.5-10.4 45.8-21 67.5a145 145 0 0 0-17 59Z",fill:"url(#f)"}),React__namespace.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M206 285.1c2 4.4 3.7 8 4.9 13.5l-4.3 1c-1.7-6.4-3-11-5.5-16.5-14.6-34.3-38-52-57-65 23 12.4 46.7 31.9 61.9 67Z",fill:"url(#g)"}),React__namespace.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M211.1 303c8 37.5-1 85.2-27.5 131.6 22.2-46 33-90.1 24-131l3.5-.7Z",fill:"url(#h)"}),React__namespace.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M302.7 299.5c43.5 16.3 60.3 52 72.8 81.9-15.5-31.2-37-65.7-74.4-78.5-28.4-9.8-52.4-8.6-93.5.7l-.9-4c43.6-10 66.4-11.2 96 0Z",fill:"url(#i)"})),"add-file":React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"}),React__namespace.createElement("polyline",{points:"14 2 14 8 20 8"}),React__namespace.createElement("line",{x1:"12",x2:"12",y1:"18",y2:"12"}),React__namespace.createElement("line",{x1:"9",x2:"15",y1:"15",y2:"15"})),ExcalidrawSword:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 537.9 1150.7"},React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"#FFF6F0",d:"m281 988 113-124-77-569H213l-37 574 106 120-4 2"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"M279 989c37-42 82-84 116-122M279 990c33-33 59-66 113-123m0-1c-22-191-51-385-78-570m78 570c-31-196-58-391-78-570m-4-1c-30-1-56 1-97-1m102 3c-41 1-81 0-106-3m1 3c-11 185-20 369-30 574m30-574c-7 165-16 330-32 575m2-3c38 47 73 81 97 121m-98-116c39 41 76 86 100 114m0 1s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("path",{fill:"none",stroke:"#af7e00",strokeLinecap:"round",strokeWidth:"4",d:"M279 614v264m-3-259c2 43 8 211 8 254"}),React__namespace.createElement("g",{fill:"none",fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{stroke:"#646261",strokeWidth:".5",d:"M209 300c2-1 6-5 9-3m-8 3 7-5m-4 7c-1-1 2-6 5-8m-6 9 5-9m-9 16c3-3 6-11 12-18m-11 14c5-2 10-7 12-10m-13 17c5-7 9-15 15-21m-13 18c4-7 8-10 13-15m-15 17c7-2 14-11 18-20m-19 20c7-3 7-8 21-15m-18 17c6-8 11-15 13-15m-12 17c6-7 11-16 14-23m-19 24 28-22m-25 25 25-25m-24 25c7-7 13-14 23-28m-21 30 18-27m-20 29c4-9 17-13 25-30m-28 30c10-4 17-12 31-30m-28 34c11-9 20-20 26-34m-26 34c10-11 15-20 30-32m-32 40c5-12 16-20 31-40m-31 36c9-10 20-20 34-38m-34 38c11-12 23-22 35-37m-33 39c10-12 24-25 33-40m-34 44c10-12 19-25 42-43m-43 46 41-44m-36 42c9-13 31-32 32-44m-35 46c12-11 22-23 38-45m-43 48c13-14 27-20 47-52m-44 52c16-14 33-35 47-50m-43 51c8-12 25-25 38-50m-40 54 43-56m-43 56c9-9 25-28 46-58m-51 61c13-15 30-30 56-57m-51 58c17-20 35-40 46-57m-47 61c14-16 25-32 48-61m-48 63c15-18 27-27 57-63m-62 64c18-20 33-37 59-63m-51 61c13-19 34-37 48-65m-53 70c16-19 31-34 58-68m-61 69c30-25 48-55 63-67m-63 66c20-17 38-40 66-65m-58 67c23-23 42-48 53-67m-55 71c18-27 42-50 59-74m-60 78c12-21 33-35 64-75m-66 74c20-26 46-53 67-77m-63 80c24-27 43-54 66-77m-70 75c30-31 55-63 68-76m-74 80c15-17 32-32 78-85m-75 86c23-25 48-49 74-83m-66 88c18-21 36-50 66-90m-69 88c21-29 43-55 70-87m-77 93c36-34 59-66 80-93m-79 89c27-25 49-54 81-88m-73 89c23-32 48-61 71-89m-76 94 79-96m-77 96c27-32 58-65 84-90m-89 92c34-38 69-78 86-94m-81 98 84-96m-86 97c32-42 66-82 83-100m-82 100c29-39 62-74 87-98m-92 98c27-24 50-52 93-100m-86 105c34-44 72-83 86-106m-87 105c34-36 63-73 88-104m-91 105c26-24 50-47 94-104m-94 106c27-31 57-67 95-107m-96 109c38-39 71-78 99-112m-97 113 96-110M200 414c35-34 57-67 102-115m-98 110c38-42 77-83 102-112m-96 116c17-27 44-59 96-117m-99 116c23-25 45-55 99-117M205 415c35-45 77-87 110-122M203 418c43-43 81-91 108-122M208 420c44-45 84-97 100-128M205 419l108-123M201 421c40-44 83-86 114-127M203 425c33-41 70-82 111-127M205 425c24-29 50-53 107-131M206 428c38-41 72-83 108-132M205 430l109-132M204 429c30-38 65-73 112-125M204 435c31-35 63-72 111-130M205 433c40-46 76-96 112-132M205 441c20-34 43-60 112-135M200 439c33-34 59-66 116-133M202 436c29-30 56-63 114-129M206 440c27-36 57-70 111-133M201 442c26-31 58-61 120-127M202 445c20-30 46-54 117-131M201 450c41-51 79-93 113-138M204 444c34-40 71-82 113-133M203 450c33-42 68-79 115-135M200 451l120-132M204 449c33-26 65-68 113-132M205 451l115-133M200 458l117-138M201 458l119-135M202 459c35-38 69-74 119-139M205 460c31-42 65-82 113-135M199 467c29-29 52-60 119-135M201 462c32-40 70-80 118-135M203 462c47-52 93-98 116-135M205 466c39-47 76-90 113-139M196 472c35-33 62-58 123-137M199 470c31-36 63-68 120-136M205 469c26-33 56-67 114-132M204 473c42-44 80-91 115-137M197 477c45-52 96-107 121-137M199 477c31-42 67-79 122-137M199 481c44-51 78-97 120-145M200 479c39-46 78-94 123-140M196 485c37-47 76-83 124-144M201 483c31-32 59-68 120-138M204 486c41-56 89-104 115-145M204 485l118-142M196 487c35-29 63-70 124-136M201 491c35-48 73-91 123-143M201 494c36-40 66-71 121-147M204 493c26-38 55-69 120-143M196 498c37-47 79-94 125-147M200 495c38-39 76-82 123-139M200 496c48-48 89-100 127-139M200 499c28-32 55-62 125-146M199 500c26-32 62-68 125-137M198 502c42-47 81-95 125-143M204 506c32-42 60-73 122-145M203 504c37-42 75-90 121-142M202 512c37-51 83-95 121-150M197 507c49-52 92-102 127-140M203 515c45-54 89-106 119-153M203 512c37-45 78-93 121-148M196 518c47-61 104-120 127-145M197 514c32-36 67-72 131-145M198 515c38-40 71-78 127-145M198 518c46-52 89-105 127-149M193 521c47-53 96-111 133-149M199 522c42-47 86-94 127-147M203 523c33-45 71-89 124-149M201 524c44-52 88-104 124-149M199 532c38-55 81-97 127-154M199 527c49-60 104-115 127-148M201 533c28-43 61-84 126-150M199 529c50-53 95-113 128-147M199 533c31-34 63-69 132-148M197 533c43-46 86-97 132-145M195 541l135-157M200 536c42-53 86-105 127-148M198 543c33-41 65-79 128-152M196 540c38-46 75-89 131-150M199 542c40-48 85-93 128-148M198 544c28-36 57-69 130-153M194 549c56-57 105-117 137-150M197 546c37-46 79-89 132-148M197 550c39-44 81-94 131-155M201 552c38-51 80-99 130-155M197 554c30-39 62-72 134-153M195 553c37-40 73-79 136-152M199 555c50-61 102-120 131-150M199 558c43-53 84-102 131-155M196 563c34-40 68-82 132-153M193 561c52-54 99-110 139-154M198 564c29-31 56-66 136-157M198 565c39-45 77-86 131-156M192 566c36-40 73-82 143-153M195 568c28-35 57-71 135-154M195 569c53-55 107-115 138-154M198 569l133-157M196 576c32-34 58-75 133-159M193 572c26-33 57-64 141-154M195 579c54-57 103-117 134-158M198 575c36-40 70-82 133-157M190 579c64-65 117-122 141-155M195 582c39-47 82-94 138-158M196 581c28-38 64-72 138-154M198 583l134-159M191 588c52-61 101-114 145-158M194 588c51-64 102-124 141-160M195 586c41-45 85-97 138-154M197 590c41-47 82-95 135-162M195 594c30-42 63-76 139-162M193 594c32-34 59-68 140-161M195 596c42-50 76-93 141-163M197 594c32-37 65-72 136-160M192 603l142-162M192 598c30-31 59-64 144-157M197 604c43-59 95-112 138-164M195 603c54-64 106-127 139-164M194 605l144-163M192 608c39-42 79-87 146-164M199 612c31-46 66-86 139-170M197 608c38-47 79-93 141-163M190 611c62-65 121-129 149-163M193 614c55-69 111-132 144-164M197 615c33-31 64-68 136-162M196 615c49-57 101-120 141-165M195 620c52-65 115-133 142-162M190 621c35-37 66-73 147-167M195 625c35-47 75-89 141-169M194 621c47-50 89-100 143-166M189 623c58-58 112-122 149-163M192 624l147-165M196 631c36-45 73-91 143-173M195 629c33-46 70-89 142-168M193 633c57-61 112-124 146-170M190 631c55-60 109-121 148-167M192 633c34-34 67-76 149-166M193 633c44-46 82-94 147-167M194 638c30-35 61-66 144-168M191 638c55-63 113-125 148-169M193 643c50-63 108-130 148-172M194 643c38-48 76-95 145-173M193 646c55-67 111-135 151-170M189 646c35-43 71-82 152-170M196 649c46-56 91-113 141-171M193 648c36-41 71-86 147-172M193 651c47-56 96-116 146-171M191 654c60-70 123-141 150-174M196 656c40-56 85-105 143-172M194 653c34-42 71-88 146-171M186 659c44-45 78-87 153-171M188 659c54-62 108-119 153-173M195 661c32-40 64-83 147-173M193 661c37-39 70-81 147-176M192 663c59-67 124-133 151-173M190 666c41-50 83-99 152-174M193 666c61-63 115-131 149-173M193 666c59-70 120-136 150-173M189 672c34-38 62-73 157-177M189 673l155-176M190 676c45-55 91-112 157-177M192 674l150-176M188 675c38-33 71-73 156-172M188 678c55-63 108-120 155-176M191 679c51-56 107-118 151-174M191 680c50-56 102-118 152-179M186 682c45-48 92-97 158-173M189 684c34-35 64-74 155-176M187 690c51-51 87-102 161-185M191 687c48-60 95-114 154-180M185 688c32-34 68-69 157-178M188 692l158-181M190 692c43-47 83-101 152-178M191 696l154-184M188 700c47-56 93-114 161-185M188 698c63-70 128-142 158-181M189 700c40-49 79-94 154-179M190 700c45-47 85-98 157-183M188 703c35-35 67-72 157-181M186 703c44-53 91-106 161-180M192 708c61-69 116-137 155-186M188 708c51-54 96-108 158-184M186 709l161-179M185 710c52-54 101-111 163-182M189 712c54-64 111-131 161-185M191 713l158-183M187 720c43-50 83-97 160-183M187 718l161-184M191 719c49-54 99-112 156-184M189 719c56-63 114-131 159-186M183 723c52-52 97-102 169-186M184 725c49-54 96-104 165-187M186 729c62-67 115-138 160-191M189 728c46-57 95-113 160-189M185 728c57-64 116-127 163-183M185 732c33-43 69-80 165-188M187 730c33-38 75-85 159-188M190 732c48-53 96-112 158-188M184 736c57-52 102-110 169-187M186 737c34-43 72-87 163-187M191 742l157-194M189 740c34-44 67-82 162-189M187 746c51-73 111-134 163-188M185 744c62-77 129-150 166-189M187 744c42-47 87-98 162-188M189 747c58-66 115-134 160-191M186 748c61-74 127-141 163-185M186 748c44-47 92-98 166-190M188 750c38-47 79-98 166-193M188 754c48-58 97-118 164-194M185 756c44-55 90-105 168-189M184 755l167-189M187 759c59-63 114-134 166-193M187 758l164-194M186 762c59-64 119-133 169-193M185 761c54-65 111-127 170-191M186 762c40-41 77-85 168-195M187 766c63-71 127-143 165-197M181 767c57-65 116-128 176-192M183 770l171-192M185 773c70-78 131-153 169-195M186 773c41-53 82-101 169-196M182 778l176-200M181 775l174-193M185 777c66-76 126-148 168-198M185 778c41-50 86-101 171-195M180 785c66-74 131-151 177-198M184 783c46-55 96-110 172-195M184 784c59-61 114-126 174-196M185 784c62-68 122-136 171-197M185 789c43-49 90-97 174-200M182 788l174-197M187 792c39-50 80-100 168-198M184 793l172-202M180 797c41-49 86-98 174-203M183 794c38-45 77-91 173-198M184 801c48-61 103-123 171-205M184 798c44-45 85-94 173-202M179 805c45-53 87-102 179-200M182 802c48-56 94-111 176-198M186 805c55-71 115-146 170-200M184 803l174-202M183 807c55-64 111-130 178-200M180 809c64-76 132-150 179-200M185 810c35-47 74-91 171-200M183 811l174-202M180 812c43-41 87-91 177-201M180 816c41-52 83-100 178-205M187 820c35-49 74-96 175-206M184 818c63-77 133-157 176-205M182 818c43-57 95-109 178-201M180 821c41-48 84-94 180-203M182 822c44-46 83-91 175-205M182 824c54-56 105-115 179-206M181 831c44-54 90-101 181-206M178 828c41-48 83-96 183-204M180 828c74-77 141-155 182-205M184 830c60-68 118-135 178-206M180 835c56-66 117-132 183-207M180 834c66-73 127-143 180-204M183 839c41-51 86-99 181-208M183 838c50-61 103-121 178-208M178 843c63-70 120-139 184-207M179 841l184-209M184 845c71-85 135-166 177-214M182 842c73-79 141-162 179-207M181 849c46-58 95-112 179-211M180 849l182-208M181 849c69-77 140-159 179-208M183 848c63-73 131-150 179-210M181 857c46-64 96-123 182-213M177 854c73-84 146-165 185-211M181 859c59-75 121-141 182-213M182 856c74-85 144-170 183-212M176 858c70-78 139-156 188-208M179 862c70-80 137-157 184-213M182 861c35-38 72-84 181-214M180 864c63-77 127-153 184-215M176 865c62-70 125-142 190-208M179 867l186-211M179 871c67-76 129-151 187-215M180 871c67-77 134-156 184-216M178 871c47-55 95-110 190-214M180 872c57-67 115-135 187-211M184 875c40-44 78-91 179-212M183 874l183-213M183 877c62-72 126-144 182-214M181 875l184-209M187 874c69-76 133-157 179-212M186 876c55-69 112-134 181-211M186 874c60-70 126-136 182-205M185 877c41-45 76-88 183-207M190 883l174-212M189 881c52-62 108-128 176-212M185 878c54-62 113-129 183-201M188 880c55-67 112-131 178-205M192 883c56-70 124-145 176-205M191 882c51-58 97-115 176-208M187 886c50-56 93-108 183-203M189 882l181-201M190 885c66-65 126-134 181-201M192 885c58-68 113-135 176-202M190 884c52-51 101-104 179-200M192 886c47-49 90-101 177-200M193 891c71-79 138-160 176-206M196 890l173-203M198 889c36-44 76-92 170-199M195 889c47-50 90-100 174-196M197 893c55-66 106-121 170-202M199 893c59-66 118-135 171-202M201 895c47-56 90-106 167-201M197 891c46-49 90-98 174-194M203 895c34-38 72-85 170-197M201 895l171-197M203 896c50-55 98-112 167-194M201 895c40-47 85-94 170-192M205 899c57-72 118-149 165-194M203 899c63-69 121-141 167-195M204 899c49-58 104-118 169-193M203 898c45-53 93-104 170-192M203 900c61-63 121-138 169-190M207 900c37-38 72-80 165-193M207 901c45-45 84-94 163-186M206 901c41-50 88-101 168-189M209 904c45-56 88-105 162-190M210 906c37-41 72-81 163-194M210 904c33-39 72-81 162-186M209 905c32-44 72-85 165-188M215 909c51-65 107-131 160-193M213 906c35-38 69-79 160-189M213 906c57-71 123-141 162-184M210 908c36-38 73-79 163-183M216 908c53-64 112-124 158-182M215 910c52-62 106-122 159-186M214 910c41-47 79-94 163-185M213 911l163-182M218 914c45-59 97-119 155-183M218 912l157-184M219 911c39-47 81-94 154-179M217 913l158-180M220 915c50-52 92-109 156-181M219 917c48-60 94-115 158-183M222 920c32-35 64-77 156-179M219 918l159-180M219 920c32-34 66-71 158-179M220 920c61-69 123-143 156-181M222 918l156-174M223 920l155-175M228 922c42-49 80-104 146-174M223 922c64-72 124-144 153-177M224 926c53-60 100-123 156-178M223 925l155-176M227 929c48-61 97-116 152-181M227 926c34-39 66-79 152-176M226 927c48-49 89-95 151-172M226 926c52-55 104-109 152-169M228 927l151-174M231 930c30-41 58-74 149-175M231 930c35-42 71-83 148-171M230 929c50-51 92-102 150-169M230 933c55-65 113-138 151-174M231 934c33-37 63-75 148-176M235 933c37-38 74-81 142-164M232 932l147-166M234 936c26-34 58-76 149-171M235 935c49-59 102-121 146-168M234 932c57-65 111-125 147-163M235 934c44-51 90-103 146-164M240 936c51-58 98-115 142-168M237 937c32-34 64-71 144-166M241 936c42-48 85-100 139-159M238 940c48-52 92-102 143-163M240 943c32-39 62-72 142-165M241 942c38-48 76-92 141-167M244 941c54-57 102-118 137-163M242 941c49-60 100-118 139-159M246 943l139-159M242 943c33-40 68-84 139-162M239 944c45-46 81-88 147-160M244 946l138-161M247 948c52-55 100-111 133-162M244 947c55-57 106-120 140-161M243 944c37-32 65-72 142-154M246 946l138-155M247 952c35-44 68-86 133-157M249 952c49-58 90-109 136-159M250 952l131-151M246 950l137-154M249 954c53-55 99-110 132-158M250 952c39-44 77-87 133-154M250 956c30-31 53-60 132-155M250 955c45-57 94-111 134-150M252 960c34-46 66-87 135-154M253 958l131-154M254 953c34-35 75-72 135-142M254 957c27-35 58-67 132-148M260 960c39-57 82-105 124-150M255 958c32-35 61-68 130-149M257 963l129-147M256 962c41-45 86-97 128-150M262 964c27-42 61-78 127-152M260 964l124-151M258 963c47-49 92-99 130-145M259 964l127-147M259 962c30-29 59-66 126-140M260 965c28-34 55-67 128-147M258 966c53-57 99-107 133-139M260 965c29-30 59-66 127-143M262 968c47-52 100-112 126-146M265 967c34-35 64-73 123-141M265 967c24-33 58-66 120-138M263 970c42-45 83-92 124-141M270 974c43-58 90-108 118-142M269 971c37-40 71-84 119-143M268 975c23-31 54-64 122-139M267 971l124-136M269 978c47-55 97-108 122-141M271 975c40-50 83-98 120-142M272 976c46-50 90-107 119-137M267 977c32-33 59-69 122-136M270 977c34-43 69-80 122-135M273 977c30-34 58-71 117-136M275 981c34-41 61-79 115-139M271 978c46-49 91-103 119-131M275 984c47-47 86-101 119-142M275 981l115-136M277 982c24-29 57-62 112-128M273 980c43-45 83-91 119-131M277 983c39-39 76-81 114-130M276 984c36-42 74-85 113-134M275 988c48-55 94-108 120-131M277 985c27-36 59-67 114-130M282 990c29-31 51-64 112-135M281 985l112-128M276 985c46-51 93-91 113-122M278 989c44-50 89-99 116-127M282 989c46-48 79-90 111-132M284 991c36-47 75-96 108-131"}),React__namespace.createElement("path",{stroke:"#000",d:"M283 989c39-52 86-95 106-127M282 989c38-44 73-85 112-126m-2 1c-27-190-56-380-78-570m79 570c-33-223-64-446-78-568m-1 2c-40 1-79 1-101-6m100 5H210m2-4c-15 208-26 416-31 578m31-576c-14 162-22 325-32 575m0 1c25 33 57 69 96 113m-96-114c29 41 62 76 98 117m2 1s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillOpacity:".8",fillRule:"evenodd",strokeLinecap:"round",strokeOpacity:".8"},React__namespace.createElement("path",{fill:"#dbc9f3",d:"m325 490-71-1-133 118-5 3-4 4-3 5-3 5-19 127 20 15 19 15 16 16 14 17 12 18 9 18 8 20 6 20 15-4 15-3 13-2 13-2 12-1 11-1 15 1 5 1-4-11-5-20-5-20-3-19-2-20-1-19v-19l2-19 2-18 3-19 4-18 6-18 6-19 6-18 8-18 4-9 9-18 4-8 2-8 3-10 1-10v-12l-5-39"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"M325 490s0 0 0 0m0 0s0 0 0 0m0 0-71-1m71 1-71-1m0 0L121 607m133-118L121 607m0 0s0 0 0 0m0 0s0 0 0 0m0 0-5 3m5-3-5 3m0 0-4 4m4-4-4 4m0 0-3 5m3-5-3 5m0 0-3 5m3-5-3 5m0 0L87 751m19-127L87 751m0 0s0 0 0 0m0 0s0 0 0 0m0 0 20 15m-20-15 20 15m0 0 19 15m-19-15 19 15m0 0 16 16m-16-16 16 16m0 0 14 17m-14-17 14 17m0 0 12 18m-12-18 12 18m0 0 9 18m-9-18 9 18m0 0 8 20m-8-20 8 20m0 0 6 20m-6-20 6 20m0 0 15-4m-15 4 15-4m0 0 15-3m-15 3 15-3m0 0 13-2m-13 2 13-2m0 0 13-2m-13 2 13-2m0 0 12-1m-12 1 12-1m0 0 11-1m-11 1 11-1m0 0 15 1m-15-1 15 1m0 0 5 1m-5-1 5 1m0 0-4-11m4 11-4-11m0 0-5-20m5 20-5-20m0 0-5-20m5 20-5-20m0 0-3-19m3 19-3-19m0 0-2-20m2 20-2-20m0 0-1-19m1 19-1-19m0 0v-19m0 19v-19m0 0 2-19m-2 19 2-19m0 0 2-18m-2 18 2-18m0 0 3-19m-3 19 3-19m0 0 4-18m-4 18 4-18m0 0 6-18m-6 18 6-18m0 0 6-19m-6 19 6-19m0 0 6-18m-6 18 6-18m0 0 8-18m-8 18 8-18m0 0 4-9m-4 9 4-9m0 0 9-18m-9 18 9-18m0 0 4-8m-4 8 4-8m0 0 2-8m-2 8 2-8m0 0 3-10m-3 10 3-10m0 0 1-10m-1 10 1-10m0 0v-12m0 12v-12m0 0-5-39m5 39-5-39m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillOpacity:".8",fillRule:"evenodd",strokeLinecap:"round",strokeOpacity:".8"},React__namespace.createElement("path",{fill:"#a887e8",d:"m439 634 10 20 4 24 2 26 3 25 5 25 8 25 9 24 12 24 13 24 8 11 9 12 7 10 2 6 2 6v5l-2 5-2 5-5 8-61 99-8-17-8-16-9-14-9-14-9-12-10-11-10-10-11-10-11-8-11-7-12-6-12-5-13-4-13-3-14-2-6-1h-7l-7-20-5-20-4-20-3-19-1-19-1-19 1-28 2-19 3-18 4-18 5-19 6-18 7-18 8-18 9-19 7-14 7-20 2-21-5-41 114 144"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"M439 634s0 0 0 0m0 0s0 0 0 0m0 0 10 20m-10-20 10 20m0 0 4 24m-4-24 4 24m0 0 2 26m-2-26 2 26m0 0 3 25m-3-25 3 25m0 0 5 25m-5-25 5 25m0 0 8 25m-8-25 8 25m0 0 9 24m-9-24 9 24m0 0 12 24m-12-24 12 24m0 0 13 24m-13-24 13 24m0 0 8 11m-8-11 8 11m0 0 9 12m-9-12 9 12m0 0 7 10m-7-10 7 10m0 0 2 6m-2-6 2 6m0 0 2 6m-2-6 2 6m0 0v5m0-5v5m0 0-2 5m2-5-2 5m0 0-2 5m2-5-2 5m0 0-5 8m5-8-5 8m0 0-61 99m61-99-61 99m0 0s0 0 0 0m0 0s0 0 0 0m0 0-8-17m8 17-8-17m0 0-8-16m8 16-8-16m0 0-9-14m9 14-9-14m0 0-9-14m9 14-9-14m0 0-9-12m9 12-9-12m0 0-10-11m10 11-10-11m0 0-10-10m10 10-10-10m0 0-11-10m11 10-11-10m0 0-11-8m11 8-11-8m0 0-11-7m11 7-11-7m0 0-12-6m12 6-12-6m0 0-12-5m12 5-12-5m0 0-13-4m13 4-13-4m0 0-13-3m13 3-13-3m0 0-14-2m14 2-14-2m0 0-6-1m6 1-6-1m0 0h-7m7 0h-7m0 0-7-20m7 20-7-20m0 0-5-20m5 20-5-20m0 0-4-20m4 20-4-20m0 0-3-19m3 19-3-19m0 0-1-19m1 19-1-19m0 0-1-19m1 19-1-19m0 0 1-28m-1 28 1-28m0 0 2-19m-2 19 2-19m0 0 3-18m-3 18 3-18m0 0 4-18m-4 18 4-18m0 0 5-19m-5 19 5-19m0 0 6-18m-6 18 6-18m0 0 7-18m-7 18 7-18m0 0 8-18m-8 18 8-18m0 0 9-19m-9 19 9-19m0 0 7-14m-7 14 7-14m0 0 7-20m-7 20 7-20m0 0 2-21m-2 21 2-21m0 0-5-41m5 41-5-41m0 0 114 144M325 490l114 144m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillOpacity:".8",fillRule:"evenodd",strokeLinecap:"round",strokeOpacity:".8"},React__namespace.createElement("path",{fill:"#6342a0",d:"m190 890 6 29 2 29-1 27-2 14-6 27-8 26-11 25-13 25-7 12 28 1 27 1 27 3 27 4 27 5 25 6 26 7 25 9 12 4 12 2 11-1 10-3 9-5 8-9 6-8 8-18 25-85-10-22-11-20-11-18-13-16-13-14-15-13-15-11-17-9-17-7-19-5-19-3-21-2h-21l-23 3-24 4-24 6"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"M190 890s0 0 0 0m0 0s0 0 0 0m0 0 6 29m-6-29 6 29m0 0 2 29m-2-29 2 29m0 0-1 27m1-27-1 27m0 0-2 14m2-14-2 14m0 0-6 27m6-27-6 27m0 0-8 26m8-26-8 26m0 0-11 25m11-25-11 25m0 0-13 25m13-25-13 25m0 0-7 12m7-12-7 12m0 0 28 1m-28-1 28 1m0 0 27 1m-27-1 27 1m0 0 27 3m-27-3 27 3m0 0 27 4m-27-4 27 4m0 0 27 5m-27-5 27 5m0 0 25 6m-25-6 25 6m0 0 26 7m-26-7 26 7m0 0 25 9m-25-9 25 9m0 0 12 4m-12-4 12 4m0 0 12 2m-12-2 12 2m0 0 11-1m-11 1 11-1m0 0 10-3m-10 3 10-3m0 0 9-5m-9 5 9-5m0 0 8-9m-8 9 8-9m0 0 6-8m-6 8 6-8m0 0 8-18m-8 18 8-18m0 0 25-85m-25 85 25-85m0 0s0 0 0 0m0 0s0 0 0 0m0 0-10-22m10 22-10-22m0 0-11-20m11 20-11-20m0 0-11-18m11 18-11-18m0 0-13-16m13 16-13-16m0 0-13-14m13 14-13-14m0 0-15-13m15 13-15-13m0 0-15-11m15 11-15-11m0 0-17-9m17 9-17-9m0 0-17-7m17 7-17-7m0 0-19-5m19 5-19-5m0 0-19-3m19 3-19-3m0 0-21-2m21 2-21-2m0 0h-21m21 0h-21m0 0-23 3m23-3-23 3m0 0-24 4m24-4-24 4m0 0-24 6m24-6-24 6m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillOpacity:".8",fillRule:"evenodd",strokeLinecap:"round",strokeOpacity:".8"},React__namespace.createElement("path",{fill:"#390f8c",d:"m87 751 25 19 22 20 20 22 16 24 12 26 9 28 6 27 2 26v27l-4 26-6 26-10 27-13 27-17 26L21 976l-8-12-7-11-1-9v-11l3-9 10-22 69-151"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"M87 751s0 0 0 0m0 0s0 0 0 0m0 0 25 19m-25-19 25 19m0 0 22 20m-22-20 22 20m0 0 20 22m-20-22 20 22m0 0 16 24m-16-24 16 24m0 0 12 26m-12-26 12 26m0 0 9 28m-9-28 9 28m0 0 6 27m-6-27 6 27m0 0 2 26m-2-26 2 26m0 0v27m0-27v27m0 0-4 26m4-26-4 26m0 0-6 26m6-26-6 26m0 0-10 27m10-27-10 27m0 0-13 27m13-27-13 27m0 0-17 26m17-26-17 26m0 0L21 976m128 126L21 976m0 0s0 0 0 0m0 0s0 0 0 0m0 0-8-12m8 12-8-12m0 0-7-11m7 11-7-11m0 0-1-9m1 9-1-9m0 0v-11m0 11v-11m0 0 3-9m-3 9 3-9m0 0 10-22M8 924l10-22m0 0 69-151M18 902l69-151m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("path",{fill:"none",stroke:"#CECDCC",strokeLinecap:"round",strokeWidth:"10",d:"M91 753s0 0 0 0m0 0s0 0 0 0m0 0 21 16m-21-16 21 16m0 0 18 17m-18-17 18 17m0 0 16 16m-16-16 16 16m0 0 13 17m-13-17 13 17m0 0 11 17m-11-17 11 17m0 0 8 17m-8-17 8 17m0 0 7 18m-7-18 7 18m0 0 6 18m-6-18 6 18m0 0 15-4m-15 4 15-4m0 0 14-2m-14 2 14-2m0 0 14-2m-14 2 14-2m0 0 13-2m-13 2 13-2m0 0 12-1m-12 1 12-1m0 0 11-1m-11 1 11-1m0 0h10m-10 0h10m0 0h8m-8 0h8m0 0-6-21m6 21-6-21m0 0-6-20m6 20-6-20m0 0-4-20m4 20-4-20m0 0-3-20m3 20-3-20m0 0-1-19m1 19-1-19m0 0-1-19m1 19-1-19m0 0 1-19m-1 19 1-19m0 0 2-18m-2 18 2-18m0 0 2-19m-2 19 2-19m0 0 4-18m-4 18 4-18m0 0 5-18m-5 18 5-18m0 0 6-18m-6 18 6-18m0 0 7-18m-7 18 7-18m0 0 7-18m-7 18 7-18m0 0 9-18m-9 18 9-18m0 0 9-19m-9 19 9-19m0 0 8-22m-8 22 8-22m0 0 2-10m-2 10 2-10"}),React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"#FFF6F0",d:"m154 297-20-26 25-24 207-6 19 26-27 25-205 1-1-3"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"m156 295-20-23m20 24c-7-11-16-19-22-27m6 1c1-11 10-13 21-21m-25 18c6-6 10-11 25-23m0 4c64-2 125-5 200-5m-198 3c64-1 133-4 201-2m-4 0c7 5 16 16 24 23m-20-25c5 6 7 12 20 23m-1 2c-2 8-12 14-18 25m18-24c-7 6-13 13-20 24m-4 1c-82-4-161-3-203 3m207-5c-56 1-110 0-206 4m-1-1s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"#FFF6F0",d:"m275 618 12-35 6-12 11-14 23-18 21-16-29-185-5-43-3-5-5-1-45 4-1 14 17 311"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"M277 617c2-5 4-24 9-34 4-10 10-19 17-26 7-8 18-13 23-17l10-8c3-3 9-4 11-9 1-5 3 10-2-20l-26-163c-5-31-2-20-3-27l-3-11c-1-4 0-10-2-12s-6 0-11 0l-15 2h-14c-4 0-8-2-10 0s0 7 0 14v30l10 205c3 38 3 13 3 26l1 50m1-1c2-5 7-22 12-31 5-10 11-20 17-27 7-7 17-13 22-17l7-9c4-3 12-5 14-10s3 10-2-20l-28-162c-5-31-2-19-3-25l-1-13c-1-4-1-9-3-11s-5-1-9-1l-17 1h-15c-5 0-10-2-12 0-1 2 3 5 3 13l2 32 10 202c2 39 0 16 0 29l2 49"})),React__namespace.createElement("g",{fill:"none",fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{stroke:"#bcb9b8",strokeWidth:".5",d:"m259 300 6-5m-6 5 7-4m-4 7 3-8m-3 8 4-8m-7 10c4-3 6-3 12-9m-12 10 13-11m-11 13c5-4 5-8 10-14m-8 14 8-14m-11 17c6-4 12-9 15-15m-16 16 17-17m-13 20c1-3 7-8 12-19m-13 17c6-5 8-10 15-17m-15 21c5-9 14-16 21-21m-23 22 22-24m-18 24 19-25m-19 26 18-24m-21 27c8-7 18-19 25-27m-27 28 29-28m-24 29c4-5 13-13 24-28m-25 30 25-32m-28 36c10-10 17-19 33-34m-34 34c8-9 15-17 35-35m-30 37 29-38m-30 38 29-37m-32 38c12-10 24-24 37-39m-36 40 38-40m-37 43c13-13 22-27 36-43m-35 43 36-42m-38 45c11-11 24-24 42-46m-42 46 44-46m-41 50c16-18 29-37 40-52m-40 51c14-19 28-35 41-49m-43 51 46-51m-46 51 45-50m-41 53 42-54m-44 55 45-54m-49 58c15-14 24-29 55-57m-54 56c13-14 26-27 51-57m-46 61c17-23 35-45 49-60m-49 58c11-16 24-32 46-59m-51 64 55-60m-54 60 52-59m-51 61c14-19 32-36 50-61m-48 60 49-60m-52 65c10-14 24-25 55-59m-55 59 54-60m-50 59c13-13 25-28 51-59m-52 62 50-62m-54 66c14-16 27-29 53-60m-53 59c18-21 35-40 54-58m-49 61 50-60m-51 59 50-61m-52 65c12-16 23-27 52-61m-53 60c15-15 29-32 54-60m-49 63 51-63m-52 64 51-63m-55 65 55-60m-54 59c15-15 29-31 53-59m-51 61 52-61m-52 62 53-61m-53 65c14-18 30-36 53-62m-55 62 56-60m-51 61 49-63m-50 64c11-15 23-29 51-62m-53 65c15-18 34-38 55-60m-56 61c15-20 34-39 55-60m-52 61c11-10 20-26 52-63m-53 64c12-15 24-31 52-62m-53 67c11-17 26-35 54-64m-55 63 54-61m-50 63c21-26 41-50 52-61m-54 61 52-63m-55 67c20-26 44-50 57-61m-56 61c21-25 44-50 56-62m-52 64 51-63m-52 64 52-65m-56 65c20-17 39-40 55-60m-54 62 56-63m-53 64 53-64m-54 65 54-64m-53 67c10-14 22-29 55-63m-58 64 57-63m-55 66c20-25 42-52 56-66m-54 65c20-24 39-50 54-64m-57 69c19-23 41-44 56-63m-56 61c18-18 33-37 56-61m-51 62 50-62m-51 63 53-64m-56 68c15-16 31-32 56-64m-57 65c19-23 39-43 58-65m-55 68 56-65m-57 64 55-67m-57 69c20-19 37-43 58-65m-59 66c21-20 38-41 60-64m-57 66c22-26 45-52 59-65m-57 65 54-66m-58 70c23-25 43-44 59-67m-58 66c15-15 27-32 57-64m-56 68c16-16 30-36 57-68m-56 67 56-66m-58 69c19-18 35-40 58-63m-59 63c16-16 28-32 60-65m-55 66 55-66m-56 68 57-68m-62 71c18-17 39-39 62-66m-60 66c16-18 32-37 61-67m-60 71 58-69m-56 68c18-19 33-41 57-69m-59 70c21-19 39-40 62-64m-63 65c25-27 48-53 62-66m-60 70c12-14 25-29 57-71m-56 70 58-70m-60 72c19-22 41-40 59-64m-59 66c19-24 40-45 60-67m-58 68 60-69m-59 71 58-71m-59 72c23-23 46-52 62-67m-65 69 63-68m-60 68c18-18 36-39 60-68m-58 71 57-71m-60 72c14-15 32-34 62-69m-63 71c22-26 45-52 63-70m-60 70c19-20 34-38 61-71m-61 72 61-71m-64 73c23-19 41-40 62-68m-62 70 62-70m-60 72 61-72m-59 72 59-71m-60 74c22-26 45-50 60-71m-63 72 64-70m-61 71c14-14 24-29 63-71m-61 72 59-73m-63 75c23-26 46-52 65-70m-65 71 64-71m-62 75c17-17 33-37 62-75m-60 73 61-73m-64 79 62-71m-63 69 64-71m-60 74c19-23 38-43 60-75m-61 74c19-21 37-43 61-73m-62 79c23-26 46-56 65-76m-67 74 66-72m-64 75c25-26 47-55 65-75m-64 75c17-18 31-36 64-76m-64 78c19-22 38-42 62-72m-64 73c15-17 30-35 66-73m-65 74 64-73m-62 75c14-16 26-34 63-75m-68 76c24-22 44-45 67-69m-65 71 67-73m-64 75 64-76m-64 77 62-77m-66 78c15-13 29-31 68-72m-66 72 67-72m-64 77c13-18 28-31 64-79m-64 78 64-76m-66 77c19-20 37-42 66-71m-67 73 67-74m-62 76c19-26 43-52 62-75m-65 74 66-75m-67 81 66-76m-68 75c27-28 55-58 68-75m-62 78c15-21 30-41 64-78m-67 78 65-78m-67 82c20-21 37-40 69-78m-68 76 67-75m-63 78 65-80m-66 81c12-16 26-32 65-78m-68 81c14-19 32-36 69-79m-70 77c26-26 50-55 69-75m-64 81c14-21 29-38 66-79m-68 77c18-20 33-38 66-80m-66 83c18-22 39-44 66-78m-68 78 69-77m-66 81c21-23 39-48 65-81m-66 81c27-31 50-60 67-81m-70 83c29-29 57-63 72-79m-70 79 70-77m-66 79c13-18 25-35 66-79m-68 78 67-79m-68 82c15-13 28-29 68-76m-68 77 69-78m-66 82 65-81m-67 79c18-18 33-39 69-79m-69 83c18-22 40-48 69-76m-72 77c19-19 36-39 71-79m-68 81c25-31 53-59 69-80m-69 81 69-83m-71 84c15-17 32-34 70-78m-69 79 70-79m-68 84 68-86m-69 84c17-19 30-37 70-82m-70 83 70-79m-72 81c16-17 32-34 72-81m-69 82 69-81m-68 82 69-81m-72 85 71-79m-70 78c21-23 43-46 71-81m-70 83c16-16 33-34 71-84m-71 85 71-82m-74 84 21-18m-19 19 20-21m-19 25c6-7 13-17 20-23m-19 22 18-24m11-13c10-13 23-28 42-45m-43 45c12-16 26-29 43-47m-42 48c11-8 18-20 41-48m-40 49 41-49m-72 87c4-6 9-9 10-13m-11 12 14-11m-10 13 8-15m-9 16 10-14m27-38c13-10 26-27 33-33m-30 34 29-32m-25 34 26-35m-29 35 30-34m-75 87c5-3 7-5 9-8m-8 9c2-4 5-6 10-9m-8 11 7-12m-6 11c1-4 4-7 7-10m42-52 24-21m-24 21 22-23m-20 24c5-3 9-13 18-24m-17 25 19-25m-75 90 8-6m-8 5 8-5m-4 7 4-7m-4 8 3-7m-6 9h3m-3 1 4-1m-1 3v-4m0 4 1-3"}),React__namespace.createElement("path",{stroke:"transparent",d:"M276 614c2-6 5-24 10-33 4-10 11-19 17-26 7-7 17-13 22-17l8-6c4-3 12-5 13-11 2-5 2 9-3-21s-22-128-26-159c-5-30-2-17-3-23l-2-15c0-4 1-8-1-9-3-1-7 1-11 1l-17-2c-4 0-9 3-13 4-3 0-8-4-9-2-2 2-1 6 0 13l2 32 10 198 1 28 1 46m0 1c2-5 5-21 10-31 4-10 11-22 18-29 6-7 17-11 22-14 6-4 7-3 10-6s8-7 10-12c1-5 2 10-2-20l-24-160-4-24-2-15c-1-4 0-6-2-7h-28l-14 2c-3 0-6-2-8 0v12l2 29c1 38 7 163 10 201 2 37 2 11 3 24l-1 50"})),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeLinecap:"round",strokeWidth:"4",d:"M276 613c1-5 6-23 11-33 5-9 11-17 18-24l19-15 10-9c4-3 11-7 12-12 2-5 4 11-1-19l-27-160c-5-31-1-17-2-24l-2-13c-1-4 0-9-2-10-3-2-7 0-11 0h-16l-14 1c-4 0-10-3-11-1-2 2 3 6 3 13 1 8-2-7-1 32l11 198 2 27 1 48m1 0c2-5 5-21 10-31 5-9 14-17 20-24l18-18 8-6c3-3 10-5 11-11 2-5 3 9-2-22l-25-160c-5-31-2-18-3-24l1-12c-1-4-1-8-3-10h-9l-17-1-15 2c-5 0-10 0-11 2-2 2 0 4 1 11s1-7 3 31l7 198c2 37 2 14 3 27l3 50"}),React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"#FFF6F0",d:"m275 626-20-52-11-9-23-19-13-7-11-3-1-9 15-233v-1h41l6 1v12l4 61 12 260"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"m276 625-12-22c-4-9-5-20-10-28s-12-14-20-20c-7-7-19-15-25-18s-9 1-11-2c-2-4 0-5 0-17l4-55 8-154c1-28-3-13 1-16s13 0 21 0c8 1 23-2 27 1 4 4-2-6-1 18l6 128 12 186m-1 1-9-26c-3-9-8-18-13-26l-19-20c-6-6-17-14-23-18-6-3-9 1-11-3-2-3-1-6-1-18l3-53 9-155c2-28-3-10 0-12 4-3 13-2 21-2s22-2 26 1-1-8 0 17l5 128 14 186"})),React__namespace.createElement("g",{fill:"none",fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{stroke:"#000",strokeWidth:".3",d:"M211 291s0 0 0 0m0 0s0 0 0 0m0 3h1m-1 0 1-1m-1 5 3-4m-3 4 2-3m-3 6c3-1 5-5 5-6m-5 7 5-7m-3 11 6-10m-6 9c0-4 4-6 6-9m-8 12c7-3 4-8 8-13m-7 13 12-15m-14 20c5-13 11-15 18-17m-19 13c8-6 15-12 15-17m-16 25c10-8 13-16 21-26m-19 24c3-4 9-11 18-19m-16 19c8-9 15-16 20-24m-23 26c8-6 9-9 23-23m-23 23c8-5 11-9 28-26m-25 31c5-8 10-15 22-27m-23 25c5-2 17-12 29-26m-28 28 24-30m-28 33c7-4 14-17 32-28m-31 32c8-12 20-23 30-36m-25 38c6-14 12-22 25-41m-29 41c10-14 19-25 32-36m-35 42 36-47m-34 44c16-15 31-33 34-42m-37 44c9-11 19-21 42-40m-39 40c15-14 26-29 40-41m-38 47c9-14 22-32 42-49m-45 48c10-11 21-24 40-50m-41 52c19-14 35-33 42-49m-41 49c17-15 29-30 46-51m-47 51c18-11 30-32 53-48m-50 52c10-14 20-23 47-55m-47 56c14-10 20-24 52-54m-53 55c17-15 28-33 50-56m-49 59c13-16 23-28 53-58m-52 57c10-14 25-27 49-59m-54 64c21-18 33-32 56-65m-53 64c16-19 34-38 54-59m-54 64c14-19 32-44 52-64m-53 63c14-16 31-31 54-60m-57 62c17-15 22-27 53-55m-50 55c15-16 28-32 53-57m-55 59c23-18 32-35 53-56m-51 58c12-11 22-26 54-58m-55 60c21-22 41-42 53-59m-53 61c15-14 29-30 55-60m-54 65c8-15 23-30 52-62m-50 59c6-14 20-23 51-62m-52 63c15-11 28-27 50-54m-53 56c21-25 46-46 56-59m-53 64c20-19 38-38 54-62m-54 62c14-16 30-34 51-63m-53 64c22-19 31-39 53-59m-52 60 52-59m-49 65c17-26 37-50 51-63m-56 62c16-17 29-30 57-63m-57 64c16-12 28-31 56-59m-54 62c10-15 21-30 55-65m-60 65c18-17 41-43 62-60m-56 63c18-24 38-48 53-64m-59 64c16-19 36-36 55-64m-49 67c12-17 28-34 54-63m-59 64c21-19 37-38 57-65m-53 65c11-16 25-29 54-62m-54 66c10-11 21-22 51-62m-52 61 56-62m-57 67c13-18 28-35 56-64m-56 63 56-63m-53 69c23-29 39-54 56-64m-60 60c22-24 48-48 59-64m-58 72c25-24 40-57 59-67m-59 64c25-27 46-52 58-67m-61 69c22-22 47-48 55-63m-52 65c22-24 41-50 58-65m-60 68 62-68m-59 66c18-19 35-42 56-65m-58 71 61-64m-61 63 59-65m-57 67 53-64m-55 64c23-21 40-48 59-65m-58 69c22-22 42-43 57-66m-56 68c10-15 20-30 58-66m-61 66c15-14 34-36 56-63m-54 65c14-21 32-40 56-67m-56 66c17-11 31-29 55-65m-56 69c18-21 38-42 57-66m-60 65c19-17 34-33 59-61m-57 63c21-21 39-43 60-66m-59 69c20-20 41-47 59-64m-59 66 58-69m-55 69c11-18 29-35 56-68m-58 72c19-24 39-49 57-68m-56 74c10-22 31-44 54-73m-58 69c24-25 44-49 61-69m-57 76c15-20 30-38 58-70m-63 68 61-70m-57 72c25-25 45-54 58-70m-58 69 60-69m-65 77c12-21 33-33 66-71m-63 68c18-24 38-46 60-72m-58 77c18-20 34-39 60-76m-60 72 58-71m-63 73c21-21 47-45 60-71m-59 74c18-18 36-37 64-71m-61 77c22-27 43-52 59-74m-59 71 59-70m-63 76c16-21 36-42 66-75m-63 71c13-13 25-29 63-71m-66 74c16-15 36-32 67-68m-66 71c23-23 44-46 64-74m-67 77c21-17 39-38 62-74m-60 72 64-72m-65 79c23-31 45-58 64-77m-60 73c16-21 38-41 63-72m-67 80c32-28 54-58 68-75m-64 69c15-20 32-41 61-71m-62 81c15-24 38-45 60-81m-62 79c18-22 35-42 66-74m-63 78c14-23 30-41 60-78m-62 76c15-19 28-35 64-73m-63 72c22-27 44-44 63-70m-65 72 65-75m-66 78c16-15 31-35 68-77m-66 76c23-26 46-54 66-72m-65 77c14-25 37-45 63-74m-64 73c15-17 29-32 64-74m-67 80c22-26 48-59 68-76m-67 75c23-25 46-50 67-76m-62 77c7-10 25-28 59-71m-62 73 65-76m-65 78c16-19 38-41 61-78m-61 79 66-76m-70 79c32-30 56-65 72-80m-67 82c22-29 43-55 66-78m-66 78c22-28 47-62 62-75m-64 76c17-18 32-36 66-77m-65 84c18-29 39-48 63-77m-65 72 68-75m-70 84c21-25 41-54 70-80m-69 76c17-16 33-35 69-76m-68 78c26-27 46-52 69-74m-70 73c24-24 46-49 69-75m-68 84c25-31 50-58 65-78m-66 76 69-81m-69 84c25-24 41-49 73-83m-73 82 70-80m-70 80c21-27 42-49 72-79m-71 83c19-24 41-48 70-80m-69 76c11-9 25-29 71-71m-71 73c23-22 47-49 66-74m-62 75c19-17 33-40 67-74m-67 74c22-23 45-50 63-72m-61 71 62-71m-64 76c14-20 31-39 66-77m-67 74c27-27 46-46 64-71m-61 71c15-17 28-33 62-67m-59 73c22-25 44-55 61-72m-61 71c16-18 30-39 60-71m-62 73c28-28 47-55 65-69m-63 66c23-26 47-50 61-65m-59 69c14-21 30-30 61-64m-59 60c21-23 38-46 54-62m-52 61c10-15 30-32 58-59m-60 61c20-22 39-39 56-61m-52 64c18-22 29-39 50-62m-53 63 56-64m-55 64c19-24 34-42 52-57m-49 55 50-57m-45 59c15-24 37-44 46-55m-49 54c18-19 32-38 51-55m-53 53c17-8 27-18 50-50m-48 54c9-12 22-22 50-55m-49 58c21-25 34-41 51-58m-47 57c7-15 19-25 46-54m-50 57c15-13 24-29 47-57m-43 54c12-11 21-23 46-52m-48 55c22-22 36-39 45-55m-42 55c16-20 29-34 46-53m-44 50c12-13 19-22 46-48m-45 53c10-18 21-28 40-53m-36 49c4-8 14-25 37-43m-42 45 44-46m-39 47c8-16 17-24 39-49m-42 52 39-48m-36 51c13-19 25-29 37-51m-37 48c10-10 16-22 39-47m-40 47c13-6 21-17 40-39m-40 41 40-46m-37 43c15-6 20-20 33-42m-31 47c8-13 15-19 33-43m-33 42c14-12 22-28 32-37m-31 36 35-40m-31 39c7-8 17-17 26-33m-32 35c8-7 17-15 34-36m-31 35c9-8 18-20 35-36m-34 42c8-13 19-23 32-37m-30 35c8-4 13-18 27-34m-27 34c10-13 18-22 30-34m-29 33c11-5 15-16 27-31m-28 33c12-10 24-24 32-32m-27 34c3-9 11-15 24-34m-27 36c13-13 25-27 28-32m-22 28 20-25m-23 30 24-32m-23 34 26-27m-26 25 24-28m-21 31c6-6 11-13 23-30m-25 28c5-8 13-14 22-28m-19 33c3-10 15-20 19-29m-21 28 21-29m-23 31c11-9 15-9 25-30m-21 28c4-6 8-13 23-26m-23 27 23-22m-21 22c5-10 16-16 19-22m-20 27c3-12 13-12 16-28m-14 24c4-3 9-9 17-21m-17 27c2-10 8-11 17-22m-15 19 16-22m-20 20c7 0 12-4 19-13m-14 19c2-8 10-16 14-21m-15 19c0 1 6-8 18-17m-17 18 15-19m-14 20c6-2 3-6 19-18m-20 20c4-6 11-12 17-19m-15 17c4-2 11-8 13-16m-14 20c4-6 6-10 14-17m-9 15 9-10m-12 14c4-7 10-10 15-15m-14 20c4-9 7-10 12-15m-11 11 12-16m-12 20c-1-2 7-10 9-14m-11 11c6-1 8-7 16-14m-11 22c-1-11 6-11 9-16m-11 11 12-14m-10 14 6-11m-9 13c6-5 10-9 10-13m-9 18c0-7 5-5 9-12m-9 10c4-3 9-8 12-14m-11 14 9-13m-8 14c3-3 6-5 8-9m-6 11c2-1 6-6 6-8m-8 9c4-3 7-5 9-11m-6 10c-1-2 7-4 6-8m-7 11c-1-1 3-6 9-10m-9 14c1-4 3-6 6-11m-8 9 10-9m-8 9c3-2 2-3 10-6m-10 7c2 0 3-3 8-9m-8 13c2-2 8-5 7-10m-5 9 6-8m-6 9 7-6m-6 8 5-8m-5 9 5-4m-6 5 7-7m-5 8c1-2 4-2 4-6m-3 7c0-3 2-4 3-6m-3 8 5-5m-5 5 4-5m-4 6c2 0 3 0 4-3m-3 4 3-5m-3 7 4-4m-3 4 2-3m-1 4 2-2m-3 3 2-3m-1 5 1-1m-1 1 2-2"}),React__namespace.createElement("path",{stroke:"transparent",strokeWidth:".5",d:"m277 624-11-21c-4-9-7-22-11-30-5-8-10-13-17-19-8-6-22-15-29-18-6-3-10 1-12-1-2-3 1-5 2-17l4-55 8-153c2-29-2-15 1-17 4-2 13 2 21 2s23-3 27-1c4 3-4-8-3 16 2 24 7 76 10 128 3 53 6 155 7 186m0 5-10-31-11-23c-4-7-7-13-13-19-7-6-19-16-26-20-7-3-12 0-15-3-2-4 1-5 2-17v-53c1-35 4-127 7-156 2-28 2-14 6-16 5-1 13 7 20 7 8 0 19-7 23-4s-1-3 0 21c2 24 7 71 10 122l6 186"})),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeLinecap:"round",strokeWidth:"4",d:"m275 627-10-24c-4-9-6-20-11-27-5-8-12-13-19-19l-25-19c-6-4-10-1-12-4-2-4 0-5 0-17l4-55 9-154c2-28-2-12 2-14 3-2 10 0 18 0s23-3 27 1c5 3-2-7-1 18l6 129 12 184m2 0-13-25c-4-9-5-17-10-25a124 124 0 0 0-45-38c-6-3-8 1-10-2s0-5 0-17l3-54 8-155c2-28 0-11 4-13 3-3 10-2 17-2 7-1 22-4 26-1 4 4-2-3 0 21l9 127 9 183"}),React__namespace.createElement("path",{fill:"none",stroke:"#E6E6E5",strokeLinecap:"round",strokeWidth:"10",d:"M460 1010s0 0 0 0m0 0s0 0 0 0m0 0-10-21m10 21-10-21m0 0-11-19m11 19-11-19m0 0-11-17m11 17-11-17m0 0-13-15m13 15-13-15m0 0-13-14m13 14-13-14m0 0-14-11m14 11-14-11m0 0-16-10m16 10-16-10m0 0-16-9m16 9-16-9m0 0-17-6m17 6-17-6m0 0-18-5m18 5-18-5m0 0-19-3m19 3-19-3m0 0-20-2m20 2-20-2m0 0-21 1m21-1-21 1m0 0-22 2m22-2-22 2m0 0-24 4m24-4-24 4m0 0-24 5m24-5-24 5m0 0 6 29m-6-29 6 29m0 0 2 27m-2-27 2 27m0 0v26m0-26v26m0 0-4 26m4-26-4 26m0 0-7 24m7-24-7 24m0 0-9 24m9-24-9 24m0 0-11 24m11-24-11 24m0 0-13 25m13-25-13 25"}),React__namespace.createElement("path",{fill:"none",stroke:"#6d6d6d",strokeLinecap:"round",strokeWidth:"10",d:"M190 890s0 0 0 0m0 0s0 0 0 0m0 0 6 27m-6-27 6 27m0 0 2 26m-2-26 2 26m0 0v26m0-26v26m0 0-3 25m3-25-3 25m0 0-6 25m6-25-6 25m0 0-9 26m9-26-9 26m0 0-12 25m12-25-12 25m0 0-15 26m15-26-15 26"}),React__namespace.createElement("g",{fill:"none",fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{stroke:"#ea0",strokeWidth:".3",d:"M137 269s0 0 0 0m0 0s0 0 0 0m0 0c3-5 5-6 12-12m-11 15c2-4 7-9 11-13m-11 10c2 2 6-7 25-17m-25 19c7-5 16-15 20-21m-17 23c9-4 11-13 24-25m-23 25 20-23m-19 23c4-7 18-21 22-26m-25 31c5-9 13-17 27-32m-28 29c13-12 19-16 28-29m-24 30c6-7 11-14 25-26m-23 33c10-12 20-28 28-36m-29 34c8-9 13-20 28-34m-30 37c16-16 23-29 35-35m-34 32 32-31m-29 35c7-14 18-16 34-33m-32 29c11-11 19-24 27-32m-27 32c5-8 19-18 35-32m-37 34c13-12 24-21 34-34m-30 37c12-14 17-24 30-39m-32 40 35-40m-35 42c14-18 23-30 35-38m-33 36 34-38m-29 40c10-17 26-32 32-38m-35 37c13-13 23-27 37-38m-40 37c15-5 22-12 39-37m-37 41c7-9 18-17 39-43m-38 47c18-22 28-35 43-50m-39 49c5-14 15-21 38-46m-43 49c14-12 22-26 43-52m-39 49c11-10 19-20 41-47m-42 50c20-21 33-36 42-52m-40 52 44-50m-41 47c11-12 18-22 45-48m-45 53c10-17 21-27 40-53m-34 48c4-9 14-26 37-45m-43 47 46-47m-39 46c8-16 18-25 42-52m-46 55c13-14 25-28 43-51m-39 54c15-21 28-32 42-57m-41 54c10-12 18-26 43-52m-43 50c14-7 23-20 44-45m-44 47c15-19 32-37 45-52m-41 48c17-9 24-25 40-50m-38 55c10-15 18-23 40-51m-38 48c16-15 27-34 39-46m-39 45c14-14 26-29 43-49m-38 47c10-12 23-24 36-44m-41 46c10-10 21-20 43-47m-40 45c13-13 26-29 46-48m-45 54c11-17 25-30 42-50m-39 47c10-8 18-24 40-49m-40 49c14-18 27-31 43-48m-40 46c14-11 24-26 40-47m-42 48c18-16 34-36 46-47m-40 48c8-13 19-25 39-52m-42 54c20-20 37-40 43-49m-35 44c12-17 26-32 36-45m-40 49 41-51m-38 52 44-47m-44 45 42-49m-38 50c10-10 19-22 42-51m-44 49c11-13 23-25 42-49m-37 53c9-18 29-37 39-53m-41 52 42-53m-42 53c16-14 24-19 46-55m-42 53c9-12 18-25 43-51m-42 50 45-47m-43 47c13-19 32-34 40-47m-40 52c8-19 25-26 40-56m-38 51c9-9 20-21 40-48m-39 52c10-18 23-27 42-50m-39 47 40-50m-42 46c13-8 24-19 44-42m-40 48c11-16 27-34 40-50m-38 46c6-7 18-23 43-47m-42 47 40-48m-38 47c13-9 17-21 45-47m-46 50 43-49m-39 45c13-13 30-30 40-48m-41 51c12-13 21-26 41-47m-35 45 37-44m-40 47c13-17 29-32 43-47m-40 50c13-19 26-31 41-49m-40 45c9-10 20-22 41-49m-39 50c5-8 21-24 38-46m-40 44c14-11 26-27 45-48m-38 53c8-20 25-31 39-49m-41 44 41-47m-37 45c6-7 15-17 36-46m-39 49c17-19 33-36 41-49m-39 52c8-17 22-22 40-48m-40 46c15-16 30-33 44-51m-41 48c6-9 15-17 41-50m-40 52 41-47m-35 46c9-11 22-26 35-44m-39 46c14-15 26-27 41-48m-34 43c8-16 32-32 37-45m-39 48c5-8 16-22 42-47m-41 51c6-13 16-22 38-51m-41 48c17-18 34-34 45-48m-41 45c12-11 16-21 46-45m-45 47c9-8 17-20 42-49m-41 52c13-17 34-32 41-52m-39 49c13-11 23-27 41-47m-39 45c9-13 17-17 44-47m-42 51c12-18 26-30 41-50m-40 48c15-15 25-23 41-45m-43 47c12-13 26-27 45-51m-41 49c12-15 27-25 43-51m-40 53c12-20 29-37 40-51m-39 52c9-12 22-24 45-52m-45 51c15-19 28-35 43-51m-43 49c14-10 23-17 46-47m-44 50c14-16 24-32 44-52m-44 53c11-10 17-20 49-55m-45 52c13-18 31-35 41-48m-38 45c5-8 19-19 45-48m-48 49c19-16 32-34 45-48m-41 54 41-49m-41 47c16-19 32-40 45-50m-40 51c8-14 22-30 36-55m-37 53c17-18 31-37 41-49m-36 47c11-18 27-33 37-50m-38 50 41-48m-41 49c8-13 22-25 46-48m-46 48c12-11 23-23 42-50m-37 47c13-16 22-31 42-46m-46 48c12-8 19-20 46-49m-38 54c9-23 30-38 39-54m-43 50c15-20 35-37 45-49m-42 47 40-47m-38 48 40-48m-37 50c13-17 26-36 44-49m-47 47c10-10 17-20 42-49m-34 50c9-15 24-28 34-47m-36 45c10-13 23-25 41-45m-44 47c18-23 35-42 46-46m-43 45c19-18 34-34 44-49m-40 47 38-43m-38 44c14-14 26-28 41-49m-38 52c9-17 23-26 42-53m-44 51c13-16 29-29 44-46m-39 44c17-19 31-33 42-49m-42 52c16-16 29-36 40-47m-40 48c8-15 17-23 46-50m-46 47c15-15 28-31 44-45m-38 47c9-18 23-32 43-48m-45 47c11-13 27-28 43-49m-40 51c13-17 20-32 43-49m-43 49c17-17 28-35 43-48m-40 46c14-17 31-32 42-48m-44 47c14-14 28-34 42-47m-37 50c12-14 22-26 37-49m-37 47c13-17 25-33 40-47m-35 45c10-12 23-31 42-44m-45 47c13-17 22-27 44-50m-43 51c10-15 22-30 45-47m-45 44c17-16 32-37 43-46m-41 43c11-11 24-18 45-44m-43 48c15-19 33-36 39-46m-38 47c11-17 26-27 43-41m-40 38 36-41m-36 46c14-15 27-30 36-45m-34 40c7-11 19-23 37-41m-36 46c10-16 26-30 37-47m-37 46c10-10 20-20 37-41m-33 39c11-11 17-22 37-42m-37 40c8-7 17-15 35-38m-34 39c11-15 22-23 37-41m-36 41c10-10 19-19 34-38m-29 41c7-12 15-24 33-36m-33 35 30-38m-28 36c10-8 22-25 29-35m-29 37c8-11 19-22 27-36m-22 33c5-9 15-18 27-31m-31 33c10-11 23-26 29-35m-30 34c10-13 26-24 33-31m-29 31c10-7 15-18 26-30m-20 34c0-10 7-13 20-30m-22 27c6-7 12-13 23-30m-24 28c11-6 15-13 27-31m-24 33c8-7 12-15 25-28m-18 27c-1-6 13-18 17-26m-20 28c6-12 14-19 22-27m-21 24c9-7 17-16 19-20m-20 19 23-23m-228 28s0 0 0 0m0 0s0 0 0 0m3 0-7-7m7 7-8-8m11 5c-9-2-15-11-14-15m16 17c-6-4-11-9-19-13m22 17c-14-12-22-18-27-29m27 27-27-24m31 23c-14-6-19-18-30-26m29 26c-15-9-26-20-32-29m32 30c-3-5-15-17-31-33m30 30-30-28m31 27c-9-7-19-21-28-27m30 27-34-26m36 31c-9-13-22-25-30-34m32 33c-5-7-15-16-32-32m39 30c-11-10-23-12-37-31m34 32c-11-12-20-19-35-32m35 30c-8-14-27-28-31-29m35 28c-16-10-29-26-41-30m41 30c-9-11-21-19-35-31m36 31-40-32m44 31c-17-8-30-24-41-32m41 33c-13-7-25-21-42-33m43 37c-7-12-20-24-38-38m42 38c-16-15-32-27-45-40m49 42c-15-11-29-25-43-43m39 39c-10-11-24-22-45-38m52 41c-14-10-26-19-49-39m46 35c-18-12-32-29-44-37m45 35c-15-11-28-29-48-40m52 44-51-40m51 37c-9-10-18-14-51-37m52 40-48-44m52 42c-20-11-30-27-55-43m53 45-49-45m52 45c-19-15-35-33-49-48m48 46c-10-10-20-21-50-43m54 47c-15-22-34-37-52-46m54 41-55-45m54 46c-16-16-26-29-50-45m55 45c-22-18-44-36-58-45m61 50c-19-22-40-38-55-52m52 49-54-48m58 44c-14-15-35-28-56-44m58 45c-20-13-36-28-57-47m55 48c-12-13-20-15-55-50m59 49c-14-9-25-20-55-46m53 50c-12-16-26-28-49-55m53 52c-12-11-27-21-55-49m56 51c-17-21-41-33-57-50m60 51c-22-16-39-35-56-50m61 51c-17-16-36-33-61-52m58 49c-20-18-35-35-55-50m59 46c-14-9-36-27-53-42m52 47c-16-15-28-27-57-51m62 47c-22-15-49-36-56-43m53 47c-17-17-35-32-53-51m55 51c-6-9-22-23-54-48m57 46c-13-9-28-21-56-49m55 52c-14-19-37-37-57-49m60 45-58-48m57 51c-10-14-32-31-54-52m57 51c-12-14-29-26-56-48m64 45c-17-16-34-30-60-46m56 47-57-47m63 44c-20-12-35-20-60-41m56 46c-14-11-28-25-53-49m61 46c-19-12-33-24-64-46m62 47c-15-13-33-24-57-47m57 48c-19-20-44-36-52-50m52 51-53-48m55 45c-6-5-21-14-56-43m58 46c-15-17-34-32-56-49m58 50c-11-12-26-24-53-50m53 50-57-52m64 54c-20-24-40-38-61-49m58 43c-15-10-28-22-57-48m63 51c-24-24-49-41-61-50m58 51c-15-13-28-28-55-51m56 46c-13-12-31-30-58-47m61 51c-20-18-35-32-59-50m64 47c-17-10-37-25-55-47m52 49c-19-17-38-34-56-48m59 46c-15-16-31-28-53-50m54 52c-17-15-33-26-58-49m61 46c-18-14-44-31-59-48m60 51-57-48m59 47c-16-10-35-24-60-46m61 46c-17-11-31-26-57-46m58 46c-13-12-26-17-53-51m53 50c-17-11-35-29-57-47m62 46c-15-11-27-21-61-50m57 53c-15-16-30-29-54-49m61 47c-15-12-33-26-58-48m55 51c-18-19-42-41-54-49m55 48c-12-16-26-32-52-50m57 49c-18-13-35-30-56-48m55 47-50-50m52 51c-15-12-32-27-55-49m55 47c-16-13-35-29-56-50m60 52c-21-22-46-41-58-49m60 53c-14-14-20-26-57-53m58 50c-21-20-42-39-55-47m54 45c-5-5-25-20-52-50m56 51c-19-19-42-36-58-49m60 47c-18-13-39-26-52-49m53 52c-20-16-39-31-57-51m56 52c-11-15-27-29-57-54m60 50c-17-13-37-30-57-48m63 48c-23-11-46-28-56-42m52 43-54-46m58 46-57-48m58 47c-22-15-41-31-56-46m56 45c-19-10-31-32-54-44m55 45c-12-8-26-21-57-47m61 49c-18-14-36-37-53-50m53 52-57-52m58 50-55-47m56 45c-11-9-22-17-53-47m60 46c-25-12-42-35-56-48m54 49c-12-11-25-19-57-48m60 48c-17-11-34-25-59-47m60 50c-18-14-33-27-58-50m62 46c-22-11-36-28-56-43m51 46c-11-11-19-20-53-49m58 50c-18-21-38-39-55-52m55 52c-15-14-30-28-55-48m59 45c-15-12-27-24-58-47m55 47-55-48m62 50c-22-17-40-29-56-52m54 54c-13-17-29-28-55-51m62 47c-20-14-42-28-63-45m58 48c-20-21-43-40-56-52m63 54c-15-17-33-32-60-55m57 49c-21-15-38-30-57-47m62 49c-20-15-36-29-55-48m53 49c-16-16-32-32-55-50m61 47c-26-15-46-34-58-49m53 52c-12-14-24-24-52-49m53 47c-9-16-18-22-50-50m50 48-51-46m54 44c-13-10-26-23-48-40m50 42c-15-10-28-22-54-43m56 40c-19-16-37-33-51-43m50 45c-18-17-36-33-51-42m48 39c-10-9-26-23-44-44m48 44c-11-8-20-17-51-40m52 39c-11-7-22-19-44-43m43 43c-18-13-31-27-48-42m51 37c-19-12-37-30-49-37m47 41-44-38m45 37c-15-8-25-23-40-41m42 40c-7-5-17-15-46-36m47 32c-11-4-25-16-43-30m41 34c-12-14-29-32-39-37m41 36c-15-17-27-24-36-33m35 31c-14-10-27-23-37-33m38 29c-12-5-15-15-34-27m36 29c-12-8-24-17-37-33m42 32c-16-13-29-22-40-28m35 29c-11-13-26-22-36-32m38 31c-3-11-15-15-34-29m35 30c-8-10-16-18-34-32m35 31c-9-6-12-16-32-31m32 31c-10-9-21-17-35-31m37 28-33-30m33 30c-7-9-17-15-33-30m33 31c-8-11-18-19-26-26m26 21c-9-7-19-18-28-23m32 25c-9-8-14-15-29-26m28 24c-12-8-22-19-30-24m30 22c-7-2-10-13-27-26m26 27c-5-7-13-13-26-24m17 13c-5-3-7-7-13-15m12 12c-4 0-6-4-14-8"}),React__namespace.createElement("path",{stroke:"transparent",strokeWidth:".5",d:"M160 294c-10-1-8-9-26-22m23 24c-6-8-12-13-21-27m1 0c5-5 16-11 21-25m-21 25 25-22m-3-1c86-2 164-7 206-5m-202 7c70-1 138-1 202-4m0 0c3 10 11 15 17 24m-19-24 20 23m2 5c-6-1-10 10-25 24m23-29-20 25m-3 4c-61 0-123-4-204 1m205-5-205 5m0-1s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeLinecap:"round",strokeWidth:"4",d:"M153 298c0-10-9-23-15-29m19 23c-8-6-14-14-21-25m1 4c4-9 16-15 21-29m-23 27c8-8 14-14 27-22m1 1c50-4 103-3 198-6m-200 5c46-2 90-3 201-3m2-4c9 6 16 22 20 27m-23-25 22 23m-1 1c-7 10-12 15-19 21m21-22c-9 10-17 19-20 25m-1 0c-64 2-119 5-208 4m207-5c-48-1-97 2-207 4m1 1s0 0 0 0m0 0s0 0 0 0"}),React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"#FFF6F0",d:"m305 241-9-42-4-18v-21l6-46 9-35 11-32 8-17-10 1-27-4-20-12-11-8-14 11-16 8-25 7-8-4-4 9 21 70 9 43 1 36-5 57 6 2 78-4"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"M303 241c-1-10-11-36-11-61 0-24 7-62 11-85 5-22 12-39 16-50 3-11 7-11 7-14-1-3-2-1-8-2s-21-1-29-4c-9-2-16-7-21-10s-6-7-9-8c-2 0-2 2-6 5-5 3-14 12-22 15-9 3-24 3-30 4-7 0-7-3-8 0-1 2 1 8 2 13l5 15a771 771 0 0 1 22 106c2 16-1 27-1 37l-1 25c-1 6-3 12-1 15s6 2 14 2l34-2 36-1m-1 0c-1-11-8-38-8-63 0-24 5-60 9-82s12-39 16-50c4-12 9-15 8-18 0-2-5 4-11 3a170 170 0 0 1-49-16c-5-3-4-8-6-9-2 0-3 2-8 5s-13 10-21 14c-9 3-22 4-29 5s-11-3-13 0c-1 2 2 9 4 14 2 4 4 4 7 14s9 29 12 47a465 465 0 0 1 10 97l-1 22c-1 7-4 17-3 20 2 3 4 0 13 0h36l35-4"})),React__namespace.createElement("g",{fill:"none",fillOpacity:".8",fillRule:"evenodd",strokeLinecap:"round",strokeOpacity:".8"},React__namespace.createElement("path",{stroke:"#c24c0e",strokeWidth:".5",d:"M191 30s0 0 0 0m0 0s0 0 0 0m-1 5c2 0 3 0 5-6m-4 7 6-5m-4 8 8-9m-7 9c2-3 5-7 7-7m-4 13c2-9 5-10 7-13m-10 11c6-5 7-8 14-13m-8 20c1-5 8-13 13-23m-16 20c7-8 11-14 17-18m-18 25c3-11 8-14 22-22m-20 23c7-11 17-24 23-27m-25 30 27-29m-24 28c8-8 12-16 25-29m-23 34c2-6 9-17 27-39m-29 39c7-7 16-15 33-35m-34 40c14-13 20-18 45-46m-41 47c16-18 30-38 41-47m-40 46c13-16 33-34 56-60m-58 65c18-18 34-37 56-65m-57 71c15-19 33-35 65-72m-59 69c14-16 26-33 54-64m-56 70c17-23 40-41 56-70m-53 69c20-25 45-53 58-65m-62 73c15-17 31-29 61-72m-58 70c21-27 46-51 60-70m-55 76c19-24 40-49 63-73m-66 71c16-19 31-38 63-71m-59 76c18-27 36-47 62-75m-64 74c14-18 33-33 63-73m-61 78c24-31 50-58 70-78m-71 79c23-33 48-59 66-80m-63 87c21-34 43-56 67-82m-71 77c24-24 45-46 71-80m-65 85c21-22 42-43 70-80m-71 83 71-86m-69 91c24-37 54-65 71-86m-73 85c16-24 36-46 75-88m-77 96c31-35 66-75 84-91m-81 85 79-90m-79 100c15-20 34-46 80-94m-79 89c32-35 65-72 82-93m-85 101c28-27 51-53 91-98m-88 97c18-23 38-45 87-99m-90 105c28-27 46-50 93-105m-88 104c28-32 56-62 88-104m-87 110c17-25 37-42 90-108m-93 108c25-27 51-55 95-107m-93 113c19-23 44-47 95-114m-93 114c30-33 59-70 97-114m-98 121c37-43 75-94 102-118M220 150c27-34 52-65 103-119m-99 121c30-36 67-77 99-122M220 155c27-31 49-58 106-122M223 162c40-45 79-92 103-117M221 161c23-27 44-55 103-117M222 166c17-25 44-48 98-113m-97 112c20-27 45-56 94-112m-96 122c35-39 73-81 96-112m-93 108c27-35 51-65 92-107m-96 114c21-27 41-46 89-95m-85 94c17-22 39-47 82-94m-79 98c14-22 39-50 74-93m-77 96c22-31 52-60 80-94m-77 99c13-20 27-34 78-90m-82 87c24-23 42-46 81-90m-81 98c25-31 59-66 76-94m-76 95c23-24 42-47 78-92m-81 94c20-13 31-32 85-87m-84 91c17-22 35-38 81-91m-76 100c22-36 50-65 77-90m-80 85c17-22 36-43 77-87m-82 100 83-90m-80 88c29-34 56-66 79-90m-78 98c16-22 35-45 74-94m-73 90c23-28 44-50 73-87m-71 95c16-25 38-44 71-83m-74 81 74-85m-76 96c30-36 54-64 76-87m-74 82c25-30 49-60 71-84m-73 96c18-23 37-46 74-88m-77 85c30-34 56-63 75-87m-72 93c34-40 60-66 77-84m-72 80c22-26 43-53 69-81m-63 79c17-17 30-33 62-77m-66 78 67-75m-56 73c18-22 47-49 56-67m-60 70 60-68m-56 71c20-32 48-56 57-64m-56 62c19-24 39-47 57-63m-48 59c8-15 27-25 47-51m-49 54c13-17 23-30 49-58m-42 55c15-13 23-31 38-51m-38 53c10-17 25-31 43-50m-42 47c10-6 13-13 38-44m-36 46 36-41m-28 43c10-17 27-27 31-41m-33 42 32-40m-28 36c6-7 14-12 32-28m-31 30c6-9 16-16 27-32m-25 33c15-10 16-18 26-32m-25 30c7-7 14-15 27-25m-16 25c-1-5 8-17 15-19m-18 20c5-4 11-10 20-25m-16 21c6 1 14-11 14-14m-12 18c3-6 7-9 15-18m-12 19c1-2 7-11 13-13m-13 13c3-6 5-8 14-14m-6 12c2-4 3-7 7-8m-7 8 5-7m0 7 2-2m-3 1 2-2m-84 4s0 0 0 0m0 0s0 0 0 0m6 0s-4-4-7-4m8 4-7-5m10 2c0 1-4-6-12-6m13 9-10-9m20 10c-8-5-11-7-16-19m11 16c-3-1-6-5-14-12m22 16c-12-8-14-12-19-20m18 18c-6-4-10-11-21-18m25 17c-1-2-12-8-25-24m26 27c-7-12-18-20-28-27m33 23c-5-6-16-21-29-30m31 31-34-29m42 31c-5-11-13-17-39-35m39 34-42-36m44 39c-8-13-23-26-44-39m48 35c-12-8-19-17-46-40m50 43c-20-18-37-32-47-46m48 42-50-43m59 43c-24-20-48-40-60-52m58 55c-24-19-46-38-59-51m61 49c-13-18-37-35-62-53m65 53-61-55m68 54c-17-21-40-32-66-58m65 60c-17-18-35-30-68-58m74 53c-24-17-53-43-74-56m73 62c-25-25-48-46-72-65m80 62c-23-18-45-39-84-67m83 69c-30-26-57-53-78-69m79 68c-20-22-41-41-80-76m83 72c-30-24-56-48-83-73m83 64-81-67m77 70c-21-14-42-33-80-69m79 66-83-72m86 69c-28-21-51-40-81-71m78 64c-23-21-44-36-76-68m74 69c-27-22-54-48-79-68m81 59c-25-17-45-36-83-65m81 67c-31-27-63-57-79-69m82 59c-31-13-54-33-81-68m75 72c-15-16-31-30-77-69m74 61c-25-20-48-43-76-63m75 60-73-64m77 62c-25-21-54-42-76-68m73 66-77-66m74 58c-11-15-33-28-77-61m81 63c-26-19-48-39-79-66m77 63c-27-31-56-51-78-68m81 68c-32-27-63-55-82-69m81 60c-20-18-47-43-85-66m83 69c-25-25-55-47-82-72m83 64c-28-23-57-48-83-74m83 76-83-74m86 68c-23-17-46-38-89-77m85 79c-18-13-32-29-85-77m88 71c-31-27-66-50-93-80m90 79c-32-27-67-54-87-74m86 73c-20-26-48-52-86-82m90 79c-27-25-54-50-91-80m90 72c-22-17-48-41-92-75m94 76c-23-13-40-30-93-79m94 76c-24-21-50-47-100-84m98 86-94-84m95 77c-22-16-42-38-94-83m95 83c-25-17-47-36-99-85m103 82c-39-30-74-60-102-85m99 85c-42-38-82-71-103-87m101 82c-35-34-79-65-104-92m106 91c-35-27-66-56-102-88m101 87c-39-33-76-68-104-95m106 90c-26-20-54-47-104-91m107 84c-30-19-52-41-107-85m102 88c-40-32-80-70-106-92m110 91c-29-20-50-43-104-91m104 88L197 31m106 82c-34-23-55-44-100-87m96 85c-34-26-67-57-97-84m98 81c-28-27-62-53-92-85m93 83c-28-21-52-47-96-79m99 76c-38-26-72-58-93-74m91 75c-23-20-43-35-90-80m93 72c-24-17-45-36-88-69m86 72c-27-19-48-39-85-73m85 66c-30-25-64-51-83-71m82 73c-27-24-57-53-81-70m84 67c-19-14-35-30-74-63m73 62c-14-13-33-25-75-67m76 66c-24-26-47-41-75-64m73 59c-14-12-33-27-71-64m70 58c-19-25-51-42-69-59m71 62c-20-19-42-37-66-62m66 60-62-59m65 56c-25-21-53-43-66-56m67 50c-28-19-51-40-69-55m71 55c-23-18-46-38-69-53m67 52c-10-9-29-22-65-56m67 55c-26-23-47-42-64-53m63 51-61-56m62 55c-21-22-48-44-62-55m63 49c-18-12-40-29-55-49m56 51c-13-13-29-25-57-53m61 50c-23-14-41-35-49-44m46 42-48-42m0 2-8-10m9 10-10-8m62 41c-12-5-18-11-35-27m34 32-36-31m37 28c-7-4-14-9-26-29m25 26c-9-7-22-16-28-22m33 20c-13-6-16-12-27-17m22 17c-2-5-7-12-22-22m22 18c0-7-10-12-10-19m13 16c-4-2-14-10-15-14m16 15c-4-3-5-12-13-14m15 12c-6-5-12-10-12-12m12 6c-2-1-6-4-5-5m5 6c-3-3-4-5-7-5"}),React__namespace.createElement("path",{stroke:"transparent",d:"M300 239c-2-10-8-38-8-62 1-24 6-60 11-82s13-41 17-52c3-11 7-12 6-15-1-2-5 0-12-1s-21 0-29-2-13-7-18-10c-4-2-5-7-8-7-2-1-2 2-7 5s-14 10-23 12c-8 3-21 3-28 3-6 1-8-2-9 1-1 2 1 12 2 17l3 12c3 10 10 28 14 46l7 62c2 16 2 27 2 37l-2 25c-1 6-1 11 1 14s4 3 12 3l37-4 32 1m5-6c-3-10-14-34-14-57s8-59 11-81l11-54c4-11 10-13 10-15 1-2 0 4-6 3-7-1-23-8-32-11-8-2-15-4-20-7-5-2-7-9-9-9s2 3-2 7c-5 4-14 12-23 16-10 4-26 6-32 7s-5-3-6-1v12l4 10c4 11 12 32 16 51 5 18 9 45 10 61s-5 27-6 37c-2 10-4 18-3 24 1 7 4 14 7 17 2 2 1-3 7-3 7 0 21 3 33 3s31-4 38-5"})),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeLinecap:"round",strokeOpacity:".8",strokeWidth:"4",d:"M301 240c-2-10-9-37-9-62 0-24 4-60 9-83 4-22 13-40 18-50 4-11 8-13 7-15 0-3-3 0-9-1l-28-5-22-7c-5-3-7-8-9-9-3-1 0 1-5 4s-15 10-24 13-23 5-29 6-8-3-8 0c-1 2 2 8 3 13l3 14 13 47c4 18 7 44 9 60s1 25 1 35l-1 26c0 7-4 13-2 16s6 1 14 1h33l37-2m1-1c-2-10-12-37-12-61 0-23 7-60 12-83 5-22 13-40 16-51 4-11 7-12 6-15s-5-1-11-1l-25-3c-8-2-18-6-23-9s-4-9-7-10c-2-1-3 2-8 5s-13 11-21 14-22 5-28 5c-6 1-9-3-10-1s1 8 2 13l4 15c3 10 10 31 14 49s9 43 10 59c1 15-2 24-3 34v27c0 7-2 14 0 17 2 2 4-1 12-2l34-1 37-1"}),React__namespace.createElement("g",{strokeLinecap:"round"},React__namespace.createElement("path",{fill:"#ff0800",d:"M257 42c2 0 7 1 9 3 3 2 5 6 5 10v15c-1 4-3 6-5 8l-9 3c-3-1-6-3-8-7-2-3-3-8-3-13 0-4 1-9 4-12 2-3 8-5 10-5h2m-6-1c3-2 5-2 7 0 3 2 7 6 9 10 1 4-1 9-1 13-1 4-1 8-3 10-2 3-6 6-9 6s-8-2-10-5c-3-3-4-9-4-13s1-8 3-11l6-9c2-1 2 2 2 2"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"M257 42c2-1 6 1 8 2 2 2 5 6 6 10s2 9 1 13c0 4-3 9-6 11-2 3-6 4-9 4l-7-8-4-12c0-4 0-9 2-12 1-3 7-6 9-7 1-1 1 1 1 1m5 0c3 1 6 5 8 8s3 8 2 12c0 4-4 9-6 12s-4 5-6 5c-3 0-6-3-9-5-3-3-6-6-7-10s1-11 3-14c2-4 4-7 7-8h10"})))},saveIcon=e=>React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:e?"var(--color-accent)":"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"}),React__namespace.createElement("polyline",{points:"17 21 17 13 7 13 7 21"}),React__namespace.createElement("polyline",{points:"7 3 7 8 15 8"})),penIcon=e=>{var A,t,i,n,s,a,o,r,l,c,g,d;switch(e.type){case"highlighter":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{fill:null!==(A=e.strokeColor)&&void 0!==A?A:"var(--icon-fill-color)",strokeWidth:"2",d:"m9 11-6 6v3h9l3-3"}),React__namespace.createElement("path",{fill:"none",strokeWidth:"2",d:"m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4"}));case"finetip":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:null!==(t=e.strokeColor)&&void 0!==t?t:"var(--icon-fill-color)",stroke:null!==(i=e.strokeColor)&&void 0!==i?i:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{strokeWidth:"2",d:"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"}));case"fountain":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{fill:null!==(n=e.strokeColor)&&void 0!==n?n:"var(--icon-fill-color)",d:"m12 19 7-7 3 3-7 7-3-3z"}),React__namespace.createElement("path",{fill:"none",d:"m18 13-1.5-7.5L2 2l3.5 14.5L13 18l5-5z"}),React__namespace.createElement("path",{fill:"none",d:"m2 2 7.586 7.586"}),React__namespace.createElement("circle",{fill:"none",cx:"11",cy:"11",r:"2"}));case"marker":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512",fill:null!==(s=e.strokeColor)&&void 0!==s?s:"var(--icon-fill-color)",stroke:null!==(a=e.strokeColor)&&void 0!==a?a:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M331 315l158.4-215L460.1 70.6 245 229 331 315zm-187 5l0 0V248.3c0-15.3 7.2-29.6 19.5-38.6L436.6 8.4C444 2.9 453 0 462.2 0c11.4 0 22.4 4.5 30.5 12.6l54.8 54.8c8.1 8.1 12.6 19 12.6 30.5c0 9.2-2.9 18.2-8.4 25.6L350.4 396.5c-9 12.3-23.4 19.5-38.6 19.5H240l-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0l-50.7-50.7c-12.5-12.5-12.5-32.8 0-45.3L144 320zM23 466.3l63-63 70.6 70.6-31 31c-4.5 4.5-10.6 7-17 7H40c-13.3 0-24-10.7-24-24v-4.7c0-6.4 2.5-12.5 7-17z"}));case"thick-thin":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 108 106",strokeWidth:"2",fill:null!==(o=e.strokeColor)&&void 0!==o?o:"var(--icon-fill-color)",stroke:null!==(r=e.strokeColor)&&void 0!==r?r:"var(--icon-fill-color)"},React__namespace.createElement("path",{d:"m-.58 95.628.22-.89q.22-.89.49-2.44.26-1.54.77-3.35t1.31-3.43q.79-1.61.2-.26-.6 1.34-.03-.14.58-1.49 1.54-2.97.96-1.49 2.54-3.18 1.59-1.68 3.46-2.96 1.86-1.27.81-.54-1.04.73.6-.46 1.64-1.19 2.8-1.81 1.16-.63.16-.08-.99.54 1.21-.5 2.2-1.03 1.11-.58-1.1.45-.03-.07 1.06-.53 2.32-.82 1.26-.3 2.91-.52 1.64-.23 3.05-.18 1.4.05 2.5.12 1.09.07 2.25.24 1.16.17 2.3.49 1.15.32 2.11.78.96.47 2.21 1.01 1.25.55 2.37 1.04t2.34.89q1.22.4 2.5.65 1.29.25 2.44.33 1.16.08 2.35.17 1.18.08 2.26-.1 1.08-.19 2-1.1.92-.91 1.25-1.93.32-1.02.38-2.15t.57.21q.51 1.34-.03-.02-.55-1.37-.96-2.83-.41-1.45.5-.67.92.79-.03-.06-.95-.85-1.52-1.8-.57-.94-1.5-1.52-.93-.57-1.94-1.22-1.01-.65-1.97-1.88-.96-1.22-1.44-2.54-.49-1.32-.65-2.57-.17-1.24-.11-2.35.06-1.11.31-2.91.24-1.79.76-2.77.51-.97 1.29-1.8.77-.84 1.64-1.55.88-.72 1.9-1.33 1.03-.61 2.43-1.15 1.41-.55 2.69-.92 1.29-.37 2.81-.68 1.53-.31 2.83-.58 1.31-.27 2.78-.47 1.47-.2 2.58-.49 1.12-.28 2.19-.58 1.08-.31 2.13-.73 1.05-.42 2.44-1.32 1.39-.9 2.68-1.85 1.3-.95 2.25-1.87.95-.91 2.06-2 1.11-1.09 1.92-1.93.82-.84 1.54-1.82.71-.98 1.4-1.88.69-.9 1.38-1.96.69-1.07 1.25-2.04.55-.97 1.21-1.94.65-.96 1.35-1.79.69-.83 1.46-1.74.77-.9 1.66-1.73.89-.84 2.72-2.31 1.84-1.48 1.84-1.47v.01l-1.1 1.03q-1.1 1.02-1.77 1.92-.68.9-1.39 1.85-.71.96-1.41 1.91-.7.96-1.19 1.92-.48.95-.95 1.92-.46.96-.9 1.95-.43.99-1.02 2.16-.59 1.17-1.17 2.15-.58.97-1.23 2.13t-1.29 2.02q-.64.86-1.3 1.73-.66.88-1.42 1.78-.75.9-1.72 2.03-.97 1.14-1.81 1.89-.85.75-1.98 1.71-1.14.96-2.05 1.61-.91.64-2.42 1.38-1.51.73-2.71 1.21t-2.49.92q-1.3.44-2.35.69-1.06.24-2.1.59-1.03.34-2.06.74-1.03.4-2.29.94-1.26.54-2.27 1.11-1.01.58-1.57 1.57-.56.99-.81 2.06-.25 1.08.56 2.02.8.94-.21-.02-1.02-.96-.01-.48 1 .49 1.87 1.25.87.77 0 0-.88-.77.46-.01 1.34.75 2.6 1.68 1.26.94 2.08 2.03.81 1.09.01.27-.8-.82.3.26 1.11 1.08 1.71 2.1.61 1.02 1.21 2.25.6 1.24.92 2.36.32 1.12-.16.13-.49-.98.02.36.51 1.35.71 2.69.2 1.34.24 2.46.03 1.12-.09 2.42-.13 1.29-.72 3.21-.6 1.92-1.4 3.49-.81 1.58-1.77 2.83-.96 1.24-2.88 2.72-1.92 1.48-2.95 1.85-1.04.36-2.47.76-1.44.41-3.33.72-1.89.32-3.37.41-1.48.09-2.63.15-1.15.05-2.74-.06-1.59-.1-2.8-.29-1.2-.19-3.2-.63-1.99-.45-3.63-.92-1.63-.48-3.28-.79-1.65-.31-2.76-.2-1.11.1-2.21.42-1.11.32.39-.29 1.49-.6-.12.21-1.61.8-.39.19 1.21-.61.29.13-.92.74-1.83 1.34-.92.61.15-.19t.3-.05q-.77.75-1.58 1.57-.81.82.01-.18.82-1 .24.23t-.72 2.72q-.15 1.48-.08 2.4.07.91-.19 2.16-.26 1.26-.81 2.41-.55 1.16-1.36 2.15t-1.84 1.75q-1.03.77-2.21 1.27t-2.44.7q-1.27.2-2.53.1-1.28-.11-2.49-.52-1.22-.41-2.3-1.1-1.08-.68-1.96-1.61-.89-.92-1.52-2.04-.64-1.11-.99-2.34-.36-1.23-.41-2.51l-.04-1.27Z"}));case"thin-thick-thin":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 114 113",strokeWidth:"2",fill:null!==(l=e.strokeColor)&&void 0!==l?l:"var(--icon-fill-color)",stroke:null!==(c=e.strokeColor)&&void 0!==c?c:"var(--icon-fill-color)"},React__namespace.createElement("path",{d:"m10 103.405.13-1.22q.14-1.22 1.3-3.16 1.15-1.94 2.74-3.46 1.59-1.53 3.35-2.72 1.77-1.2 4-1.95 2.23-.76 4.45-1t4.86-.4q2.64-.15 5.14-.34 2.51-.19 4.85-.94 2.35-.75 4.55-1.71 2.21-.97 4.16-2.26 1.95-1.3 4.03-2.97 2.07-1.67 3.85-3.05 1.78-1.37 3.72-2.48 1.94-1.11 3.3-2.99 1.36-1.89 2.58-3.74 1.22-1.85-.63-3.42-1.85-1.57-3.82-2.86-1.97-1.3-4.11-2.08-2.15-.78-4.21-1.6-2.06-.81-4.02-1.96-1.96-1.14-3.71-2.48-1.74-1.33-3.37-2.77-1.63-1.43-3.23-3.62-1.6-2.18-2.23-4.64-.62-2.46-.36-4.96.27-2.49 1.19-4.46.91-1.97 2.42-3.7 1.5-1.73 3.5-3.15t4.11-2.28q2.1-.86 4.33-1.44 2.24-.58 4.92-.84 2.68-.26 4.83-.19t4.69.35q2.53.28 4.75.66 2.23.38 4.48.2 2.26-.19 4.43-1.3 2.17-1.12 4.2-2.36 2.04-1.24 3.93-2.43 1.9-1.19 3.84-2.14 1.95-.95 4.04-1.78 2.09-.83 4.56-2.28 2.46-1.46 2.46-1.45h.01q.01 0-1.38 1.3-1.38 1.29-3.08 2.59-1.7 1.3-3.5 2.5t-3.42 2.65q-1.62 1.45-3.18 3-1.57 1.56-3.37 3.13-1.8 1.57-3.6 2.91-1.81 1.33-3.92 2.12t-4.24.92q-2.13.14-4.31.26-2.18.12-4.5.39t-4.56.88q-2.25.61-4.24 1.6-1.99 1-3.83 2.29-1.83 1.29.18 2.44 2.01 1.15 4.2 1.92 2.2.78 4.34 1 2.15.22 4.4.69 2.25.46 4.34 1.16 2.08.71 4.33 1.91 2.25 1.21 4.11 2.73 1.87 1.52 3.68 4.03 1.82 2.5 2.74 5 .93 2.5 1.18 5.03.26 2.53-.04 4.81t-1.4 4.85q-1.09 2.58-2.4 4.26-1.3 1.68-3.1 3.44t-4.02 3.62q-2.23 1.85-4.32 3.07-2.08 1.23-4.34 1.99-2.25.76-4.46 1.96t-4.37 2.14q-2.15.93-4.22 1.81t-4.36 1.35q-2.3.46-4.52.82-2.22.35-4.76.38-2.54.04-4.87-.28t-4.67-.67q-2.34-.35-4.72-.54-2.39-.19-4.64.37-2.25.56-4.16 1.66-1.91 1.11-3.52 2.71-1.61 1.6-2.55 2.39l-.94.78Z"}));default:return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",fill:null!==(g=e.strokeColor)&&void 0!==g?g:"var(--icon-fill-color)",stroke:null!==(d=e.strokeColor)&&void 0!==d?d:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M453.3 19.3l39.4 39.4c25 25 25 65.5 0 90.5l-52.1 52.1 0 0-1-1 0 0-16-16-96-96-17-17 52.1-52.1c25-25 65.5-25 90.5 0zM241 114.9c-9.4-9.4-24.6-9.4-33.9 0L105 217c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L173.1 81c28.1-28.1 73.7-28.1 101.8 0L288 94.1l17 17 96 96 16 16 1 1-17 17L229.5 412.5c-48 48-109.2 80.8-175.8 94.1l-25 5c-7.9 1.6-16-.9-21.7-6.6s-8.1-13.8-6.6-21.7l5-25c13.3-66.6 46.1-127.8 94.1-175.8L254.1 128 241 114.9z"}))}},stringToSVG=e=>(e=e.replace(/stroke\s*=\s*['"][^"']*['"]/g,"").replace(/[^-]width\s*=\s*['"][^"']*['"]/g,"").replace(/[^-]height\s*=\s*['"][^"']*['"]/g,"").replace("<svg ",'<svg style="stroke:var(--icon-fill-color);color:var(--icon-fill-color);fill:var(--icon-fill-color);stroke-width:6;" '),React__namespace.createElement("div",{dangerouslySetInnerHTML:{__html:e}})),LogoWrapper=({children:e})=>React__namespace.createElement("div",{className:"welcome-screen-center__logo virgil welcome-screen-decor"},e," ");var top="top",bottom="bottom",right="right",left="left",auto="auto",basePlacements=[top,bottom,right,left],start="start",end="end",clippingParents="clippingParents",viewport="viewport",popper="popper",reference="reference",variationPlacements=basePlacements.reduce((function(e,A){return e.concat([A+"-"+start,A+"-"+end])}),[]),placements=[].concat(basePlacements,[auto]).reduce((function(e,A){return e.concat([A,A+"-"+start,A+"-"+end])}),[]),beforeRead="beforeRead",read="read",afterRead="afterRead",beforeMain="beforeMain",main="main",afterMain="afterMain",beforeWrite="beforeWrite",write="write",afterWrite="afterWrite",modifierPhases=[beforeRead,read,afterRead,beforeMain,main,afterMain,beforeWrite,write,afterWrite];function getNodeName(e){return e?(e.nodeName||"").toLowerCase():null}function getWindow(e){if(null==e)return window;if("[object Window]"!==e.toString()){var A=e.ownerDocument;return A&&A.defaultView||window}return e}function isElement(e){return e instanceof getWindow(e).Element||e instanceof Element}function isHTMLElement(e){return e instanceof getWindow(e).HTMLElement||e instanceof HTMLElement}function isShadowRoot(e){return"undefined"!=typeof ShadowRoot&&(e instanceof getWindow(e).ShadowRoot||e instanceof ShadowRoot)}function applyStyles(e){var A=e.state;Object.keys(A.elements).forEach((function(e){var t=A.styles[e]||{},i=A.attributes[e]||{},n=A.elements[e];isHTMLElement(n)&&getNodeName(n)&&(Object.assign(n.style,t),Object.keys(i).forEach((function(e){var A=i[e];!1===A?n.removeAttribute(e):n.setAttribute(e,!0===A?"":A)})))}))}function effect$2(e){var A=e.state,t={popper:{position:A.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(A.elements.popper.style,t.popper),A.styles=t,A.elements.arrow&&Object.assign(A.elements.arrow.style,t.arrow),function(){Object.keys(A.elements).forEach((function(e){var i=A.elements[e],n=A.attributes[e]||{},s=Object.keys(A.styles.hasOwnProperty(e)?A.styles[e]:t[e]).reduce((function(e,A){return e[A]="",e}),{});isHTMLElement(i)&&getNodeName(i)&&(Object.assign(i.style,s),Object.keys(n).forEach((function(e){i.removeAttribute(e)})))}))}}var applyStyles$1={name:"applyStyles",enabled:!0,phase:"write",fn:applyStyles,effect:effect$2,requires:["computeStyles"]};function getBasePlacement(e){return e.split("-")[0]}var max=Math.max,min=Math.min,round=Math.round;function getUAString(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function isLayoutViewport(){return!/^((?!chrome|android).)*safari/i.test(getUAString())}function getBoundingClientRect(e,A,t){void 0===A&&(A=!1),void 0===t&&(t=!1);var i=e.getBoundingClientRect(),n=1,s=1;A&&isHTMLElement(e)&&(n=e.offsetWidth>0&&round(i.width)/e.offsetWidth||1,s=e.offsetHeight>0&&round(i.height)/e.offsetHeight||1);var a=(isElement(e)?getWindow(e):window).visualViewport,o=!isLayoutViewport()&&t,r=(i.left+(o&&a?a.offsetLeft:0))/n,l=(i.top+(o&&a?a.offsetTop:0))/s,c=i.width/n,g=i.height/s;return{width:c,height:g,top:l,right:r+c,bottom:l+g,left:r,x:r,y:l}}function getLayoutRect(e){var A=getBoundingClientRect(e),t=e.offsetWidth,i=e.offsetHeight;return Math.abs(A.width-t)<=1&&(t=A.width),Math.abs(A.height-i)<=1&&(i=A.height),{x:e.offsetLeft,y:e.offsetTop,width:t,height:i}}function contains(e,A){var t=A.getRootNode&&A.getRootNode();if(e.contains(A))return!0;if(t&&isShadowRoot(t)){var i=A;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function getComputedStyle$1(e){return getWindow(e).getComputedStyle(e)}function isTableElement(e){return["table","td","th"].indexOf(getNodeName(e))>=0}function getDocumentElement(e){return((isElement(e)?e.ownerDocument:e.document)||window.document).documentElement}function getParentNode(e){return"html"===getNodeName(e)?e:e.assignedSlot||e.parentNode||(isShadowRoot(e)?e.host:null)||getDocumentElement(e)}function getTrueOffsetParent(e){return isHTMLElement(e)&&"fixed"!==getComputedStyle$1(e).position?e.offsetParent:null}function getContainingBlock(e){var A=/firefox/i.test(getUAString());if(/Trident/i.test(getUAString())&&isHTMLElement(e)&&"fixed"===getComputedStyle$1(e).position)return null;var t=getParentNode(e);for(isShadowRoot(t)&&(t=t.host);isHTMLElement(t)&&["html","body"].indexOf(getNodeName(t))<0;){var i=getComputedStyle$1(t);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||A&&"filter"===i.willChange||A&&i.filter&&"none"!==i.filter)return t;t=t.parentNode}return null}function getOffsetParent(e){for(var A=getWindow(e),t=getTrueOffsetParent(e);t&&isTableElement(t)&&"static"===getComputedStyle$1(t).position;)t=getTrueOffsetParent(t);return t&&("html"===getNodeName(t)||"body"===getNodeName(t)&&"static"===getComputedStyle$1(t).position)?A:t||getContainingBlock(e)||A}function getMainAxisFromPlacement(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function within(e,A,t){return max(e,min(A,t))}function withinMaxClamp(e,A,t){var i=within(e,A,t);return i>t?t:i}function getFreshSideObject(){return{top:0,right:0,bottom:0,left:0}}function mergePaddingObject(e){return Object.assign({},getFreshSideObject(),e)}function expandToHashMap(e,A){return A.reduce((function(A,t){return A[t]=e,A}),{})}var toPaddingObject=function(e,A){return mergePaddingObject("number"!=typeof(e="function"==typeof e?e(Object.assign({},A.rects,{placement:A.placement})):e)?e:expandToHashMap(e,basePlacements))};function arrow(e){var A,t=e.state,i=e.name,n=e.options,s=t.elements.arrow,a=t.modifiersData.popperOffsets,o=getBasePlacement(t.placement),r=getMainAxisFromPlacement(o),l=[left,right].indexOf(o)>=0?"height":"width";if(s&&a){var c=toPaddingObject(n.padding,t),g=getLayoutRect(s),d="y"===r?top:left,u="y"===r?bottom:right,h=t.rects.reference[l]+t.rects.reference[r]-a[r]-t.rects.popper[l],m=a[r]-t.rects.reference[r],p=getOffsetParent(s),w=p?"y"===r?p.clientHeight||0:p.clientWidth||0:0,B=h/2-m/2,E=c[d],k=w-g[l]-c[u],f=w/2-g[l]/2+B,C=within(E,f,k),O=r;t.modifiersData[i]=((A={})[O]=C,A.centerOffset=C-f,A)}}function effect$1(e){var A=e.state,t=e.options.element,i=void 0===t?"[data-popper-arrow]":t;null!=i&&("string"!=typeof i||(i=A.elements.popper.querySelector(i)))&&contains(A.elements.popper,i)&&(A.elements.arrow=i)}var arrow$1={name:"arrow",enabled:!0,phase:"main",fn:arrow,effect:effect$1,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function getVariation(e){return e.split("-")[1]}var unsetSides={top:"auto",right:"auto",bottom:"auto",left:"auto"};function roundOffsetsByDPR(e,A){var t=e.x,i=e.y,n=A.devicePixelRatio||1;return{x:round(t*n)/n||0,y:round(i*n)/n||0}}function mapToStyles(e){var A,t=e.popper,i=e.popperRect,n=e.placement,s=e.variation,a=e.offsets,o=e.position,r=e.gpuAcceleration,l=e.adaptive,c=e.roundOffsets,g=e.isFixed,d=a.x,u=void 0===d?0:d,h=a.y,m=void 0===h?0:h,p="function"==typeof c?c({x:u,y:m}):{x:u,y:m};u=p.x,m=p.y;var w=a.hasOwnProperty("x"),B=a.hasOwnProperty("y"),E=left,k=top,f=window;if(l){var C=getOffsetParent(t),O="clientHeight",W="clientWidth";C===getWindow(t)&&"static"!==getComputedStyle$1(C=getDocumentElement(t)).position&&"absolute"===o&&(O="scrollHeight",W="scrollWidth"),(n===top||(n===left||n===right)&&s===end)&&(k=bottom,m-=(g&&C===f&&f.visualViewport?f.visualViewport.height:C[O])-i.height,m*=r?1:-1),n!==left&&(n!==top&&n!==bottom||s!==end)||(E=right,u-=(g&&C===f&&f.visualViewport?f.visualViewport.width:C[W])-i.width,u*=r?1:-1)}var b,x=Object.assign({position:o},l&&unsetSides),Q=!0===c?roundOffsetsByDPR({x:u,y:m},getWindow(t)):{x:u,y:m};return u=Q.x,m=Q.y,r?Object.assign({},x,((b={})[k]=B?"0":"",b[E]=w?"0":"",b.transform=(f.devicePixelRatio||1)<=1?"translate("+u+"px, "+m+"px)":"translate3d("+u+"px, "+m+"px, 0)",b)):Object.assign({},x,((A={})[k]=B?m+"px":"",A[E]=w?u+"px":"",A.transform="",A))}function computeStyles(e){var A=e.state,t=e.options,i=t.gpuAcceleration,n=void 0===i||i,s=t.adaptive,a=void 0===s||s,o=t.roundOffsets,r=void 0===o||o,l={placement:getBasePlacement(A.placement),variation:getVariation(A.placement),popper:A.elements.popper,popperRect:A.rects.popper,gpuAcceleration:n,isFixed:"fixed"===A.options.strategy};null!=A.modifiersData.popperOffsets&&(A.styles.popper=Object.assign({},A.styles.popper,mapToStyles(Object.assign({},l,{offsets:A.modifiersData.popperOffsets,position:A.options.strategy,adaptive:a,roundOffsets:r})))),null!=A.modifiersData.arrow&&(A.styles.arrow=Object.assign({},A.styles.arrow,mapToStyles(Object.assign({},l,{offsets:A.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:r})))),A.attributes.popper=Object.assign({},A.attributes.popper,{"data-popper-placement":A.placement})}var computeStyles$1={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:computeStyles,data:{}},passive={passive:!0};function effect(e){var A=e.state,t=e.instance,i=e.options,n=i.scroll,s=void 0===n||n,a=i.resize,o=void 0===a||a,r=getWindow(A.elements.popper),l=[].concat(A.scrollParents.reference,A.scrollParents.popper);return s&&l.forEach((function(e){e.addEventListener("scroll",t.update,passive)})),o&&r.addEventListener("resize",t.update,passive),function(){s&&l.forEach((function(e){e.removeEventListener("scroll",t.update,passive)})),o&&r.removeEventListener("resize",t.update,passive)}}var eventListeners={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:effect,data:{}},hash$1={left:"right",right:"left",bottom:"top",top:"bottom"};function getOppositePlacement(e){return e.replace(/left|right|bottom|top/g,(function(e){return hash$1[e]}))}var hash={start:"end",end:"start"};function getOppositeVariationPlacement(e){return e.replace(/start|end/g,(function(e){return hash[e]}))}function getWindowScroll(e){var A=getWindow(e);return{scrollLeft:A.pageXOffset,scrollTop:A.pageYOffset}}function getWindowScrollBarX(e){return getBoundingClientRect(getDocumentElement(e)).left+getWindowScroll(e).scrollLeft}function getViewportRect(e,A){var t=getWindow(e),i=getDocumentElement(e),n=t.visualViewport,s=i.clientWidth,a=i.clientHeight,o=0,r=0;if(n){s=n.width,a=n.height;var l=isLayoutViewport();(l||!l&&"fixed"===A)&&(o=n.offsetLeft,r=n.offsetTop)}return{width:s,height:a,x:o+getWindowScrollBarX(e),y:r}}function getDocumentRect(e){var A,t=getDocumentElement(e),i=getWindowScroll(e),n=null==(A=e.ownerDocument)?void 0:A.body,s=max(t.scrollWidth,t.clientWidth,n?n.scrollWidth:0,n?n.clientWidth:0),a=max(t.scrollHeight,t.clientHeight,n?n.scrollHeight:0,n?n.clientHeight:0),o=-i.scrollLeft+getWindowScrollBarX(e),r=-i.scrollTop;return"rtl"===getComputedStyle$1(n||t).direction&&(o+=max(t.clientWidth,n?n.clientWidth:0)-s),{width:s,height:a,x:o,y:r}}function isScrollParent(e){var A=getComputedStyle$1(e),t=A.overflow,i=A.overflowX,n=A.overflowY;return/auto|scroll|overlay|hidden/.test(t+n+i)}function getScrollParent(e){return["html","body","#document"].indexOf(getNodeName(e))>=0?e.ownerDocument.body:isHTMLElement(e)&&isScrollParent(e)?e:getScrollParent(getParentNode(e))}function listScrollParents(e,A){var t;void 0===A&&(A=[]);var i=getScrollParent(e),n=i===(null==(t=e.ownerDocument)?void 0:t.body),s=getWindow(i),a=n?[s].concat(s.visualViewport||[],isScrollParent(i)?i:[]):i,o=A.concat(a);return n?o:o.concat(listScrollParents(getParentNode(a)))}function rectToClientRect(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function getInnerBoundingClientRect(e,A){var t=getBoundingClientRect(e,!1,"fixed"===A);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}function getClientRectFromMixedType(e,A,t){return A===viewport?rectToClientRect(getViewportRect(e,t)):isElement(A)?getInnerBoundingClientRect(A,t):rectToClientRect(getDocumentRect(getDocumentElement(e)))}function getClippingParents(e){var A=listScrollParents(getParentNode(e)),t=["absolute","fixed"].indexOf(getComputedStyle$1(e).position)>=0&&isHTMLElement(e)?getOffsetParent(e):e;return isElement(t)?A.filter((function(e){return isElement(e)&&contains(e,t)&&"body"!==getNodeName(e)})):[]}function getClippingRect(e,A,t,i){var n="clippingParents"===A?getClippingParents(e):[].concat(A),s=[].concat(n,[t]),a=s[0],o=s.reduce((function(A,t){var n=getClientRectFromMixedType(e,t,i);return A.top=max(n.top,A.top),A.right=min(n.right,A.right),A.bottom=min(n.bottom,A.bottom),A.left=max(n.left,A.left),A}),getClientRectFromMixedType(e,a,i));return o.width=o.right-o.left,o.height=o.bottom-o.top,o.x=o.left,o.y=o.top,o}function computeOffsets(e){var A,t=e.reference,i=e.element,n=e.placement,s=n?getBasePlacement(n):null,a=n?getVariation(n):null,o=t.x+t.width/2-i.width/2,r=t.y+t.height/2-i.height/2;switch(s){case top:A={x:o,y:t.y-i.height};break;case bottom:A={x:o,y:t.y+t.height};break;case right:A={x:t.x+t.width,y:r};break;case left:A={x:t.x-i.width,y:r};break;default:A={x:t.x,y:t.y}}var l=s?getMainAxisFromPlacement(s):null;if(null!=l){var c="y"===l?"height":"width";switch(a){case start:A[l]=A[l]-(t[c]/2-i[c]/2);break;case end:A[l]=A[l]+(t[c]/2-i[c]/2)}}return A}function detectOverflow(e,A){void 0===A&&(A={});var t=A,i=t.placement,n=void 0===i?e.placement:i,s=t.strategy,a=void 0===s?e.strategy:s,o=t.boundary,r=void 0===o?clippingParents:o,l=t.rootBoundary,c=void 0===l?viewport:l,g=t.elementContext,d=void 0===g?popper:g,u=t.altBoundary,h=void 0!==u&&u,m=t.padding,p=void 0===m?0:m,w=mergePaddingObject("number"!=typeof p?p:expandToHashMap(p,basePlacements)),B=d===popper?reference:popper,E=e.rects.popper,k=e.elements[h?B:d],f=getClippingRect(isElement(k)?k:k.contextElement||getDocumentElement(e.elements.popper),r,c,a),C=getBoundingClientRect(e.elements.reference),O=computeOffsets({reference:C,element:E,strategy:"absolute",placement:n}),W=rectToClientRect(Object.assign({},E,O)),b=d===popper?W:C,x={top:f.top-b.top+w.top,bottom:b.bottom-f.bottom+w.bottom,left:f.left-b.left+w.left,right:b.right-f.right+w.right},Q=e.modifiersData.offset;if(d===popper&&Q){var I=Q[n];Object.keys(x).forEach((function(e){var A=[right,bottom].indexOf(e)>=0?1:-1,t=[top,bottom].indexOf(e)>=0?"y":"x";x[e]+=I[t]*A}))}return x}function computeAutoPlacement(e,A){void 0===A&&(A={});var t=A,i=t.placement,n=t.boundary,s=t.rootBoundary,a=t.padding,o=t.flipVariations,r=t.allowedAutoPlacements,l=void 0===r?placements:r,c=getVariation(i),g=c?o?variationPlacements:variationPlacements.filter((function(e){return getVariation(e)===c})):basePlacements,d=g.filter((function(e){return l.indexOf(e)>=0}));0===d.length&&(d=g);var u=d.reduce((function(A,t){return A[t]=detectOverflow(e,{placement:t,boundary:n,rootBoundary:s,padding:a})[getBasePlacement(t)],A}),{});return Object.keys(u).sort((function(e,A){return u[e]-u[A]}))}function getExpandedFallbackPlacements(e){if(getBasePlacement(e)===auto)return[];var A=getOppositePlacement(e);return[getOppositeVariationPlacement(e),A,getOppositeVariationPlacement(A)]}function flip(e){var A=e.state,t=e.options,i=e.name;if(!A.modifiersData[i]._skip){for(var n=t.mainAxis,s=void 0===n||n,a=t.altAxis,o=void 0===a||a,r=t.fallbackPlacements,l=t.padding,c=t.boundary,g=t.rootBoundary,d=t.altBoundary,u=t.flipVariations,h=void 0===u||u,m=t.allowedAutoPlacements,p=A.options.placement,w=getBasePlacement(p),B=r||(w!==p&&h?getExpandedFallbackPlacements(p):[getOppositePlacement(p)]),E=[p].concat(B).reduce((function(e,t){return e.concat(getBasePlacement(t)===auto?computeAutoPlacement(A,{placement:t,boundary:c,rootBoundary:g,padding:l,flipVariations:h,allowedAutoPlacements:m}):t)}),[]),k=A.rects.reference,f=A.rects.popper,C=new Map,O=!0,W=E[0],b=0;b<E.length;b++){var x=E[b],Q=getBasePlacement(x),I=getVariation(x)===start,y=[top,bottom].indexOf(Q)>=0,v=y?"width":"height",D=detectOverflow(A,{placement:x,boundary:c,rootBoundary:g,altBoundary:d,padding:l}),M=y?I?right:left:I?bottom:top;k[v]>f[v]&&(M=getOppositePlacement(M));var F=getOppositePlacement(M),U=[];if(s&&U.push(D[Q]<=0),o&&U.push(D[M]<=0,D[F]<=0),U.every((function(e){return e}))){W=x,O=!1;break}C.set(x,U)}if(O)for(var R=function(e){var A=E.find((function(A){var t=C.get(A);if(t)return t.slice(0,e).every((function(e){return e}))}));if(A)return W=A,"break"},T=h?3:1;T>0&&"break"!==R(T);T--);A.placement!==W&&(A.modifiersData[i]._skip=!0,A.placement=W,A.reset=!0)}}var flip$1={name:"flip",enabled:!0,phase:"main",fn:flip,requiresIfExists:["offset"],data:{_skip:!1}};function getSideOffsets(e,A,t){return void 0===t&&(t={x:0,y:0}),{top:e.top-A.height-t.y,right:e.right-A.width+t.x,bottom:e.bottom-A.height+t.y,left:e.left-A.width-t.x}}function isAnySideFullyClipped(e){return[top,right,bottom,left].some((function(A){return e[A]>=0}))}function hide(e){var A=e.state,t=e.name,i=A.rects.reference,n=A.rects.popper,s=A.modifiersData.preventOverflow,a=detectOverflow(A,{elementContext:"reference"}),o=detectOverflow(A,{altBoundary:!0}),r=getSideOffsets(a,i),l=getSideOffsets(o,n,s),c=isAnySideFullyClipped(r),g=isAnySideFullyClipped(l);A.modifiersData[t]={referenceClippingOffsets:r,popperEscapeOffsets:l,isReferenceHidden:c,hasPopperEscaped:g},A.attributes.popper=Object.assign({},A.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":g})}var hide$1={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:hide};function distanceAndSkiddingToXY(e,A,t){var i=getBasePlacement(e),n=[left,top].indexOf(i)>=0?-1:1,s="function"==typeof t?t(Object.assign({},A,{placement:e})):t,a=s[0],o=s[1];return a=a||0,o=(o||0)*n,[left,right].indexOf(i)>=0?{x:o,y:a}:{x:a,y:o}}function offset(e){var A=e.state,t=e.options,i=e.name,n=t.offset,s=void 0===n?[0,0]:n,a=placements.reduce((function(e,t){return e[t]=distanceAndSkiddingToXY(t,A.rects,s),e}),{}),o=a[A.placement],r=o.x,l=o.y;null!=A.modifiersData.popperOffsets&&(A.modifiersData.popperOffsets.x+=r,A.modifiersData.popperOffsets.y+=l),A.modifiersData[i]=a}var offset$1={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:offset};function popperOffsets(e){var A=e.state,t=e.name;A.modifiersData[t]=computeOffsets({reference:A.rects.reference,element:A.rects.popper,strategy:"absolute",placement:A.placement})}var popperOffsets$1={name:"popperOffsets",enabled:!0,phase:"read",fn:popperOffsets,data:{}};function getAltAxis(e){return"x"===e?"y":"x"}function preventOverflow(e){var A=e.state,t=e.options,i=e.name,n=t.mainAxis,s=void 0===n||n,a=t.altAxis,o=void 0!==a&&a,r=t.boundary,l=t.rootBoundary,c=t.altBoundary,g=t.padding,d=t.tether,u=void 0===d||d,h=t.tetherOffset,m=void 0===h?0:h,p=detectOverflow(A,{boundary:r,rootBoundary:l,padding:g,altBoundary:c}),w=getBasePlacement(A.placement),B=getVariation(A.placement),E=!B,k=getMainAxisFromPlacement(w),f=getAltAxis(k),C=A.modifiersData.popperOffsets,O=A.rects.reference,W=A.rects.popper,b="function"==typeof m?m(Object.assign({},A.rects,{placement:A.placement})):m,x="number"==typeof b?{mainAxis:b,altAxis:b}:Object.assign({mainAxis:0,altAxis:0},b),Q=A.modifiersData.offset?A.modifiersData.offset[A.placement]:null,I={x:0,y:0};if(C){if(s){var y,v="y"===k?top:left,D="y"===k?bottom:right,M="y"===k?"height":"width",F=C[k],U=F+p[v],R=F-p[D],T=u?-W[M]/2:0,N=B===start?O[M]:W[M],S=B===start?-W[M]:-O[M],G=A.elements.arrow,H=u&&G?getLayoutRect(G):{width:0,height:0},L=A.modifiersData["arrow#persistent"]?A.modifiersData["arrow#persistent"].padding:getFreshSideObject(),j=L[v],Y=L[D],P=within(0,O[M],H[M]),z=E?O[M]/2-T-P-j-x.mainAxis:N-P-j-x.mainAxis,K=E?-O[M]/2+T+P+Y+x.mainAxis:S+P+Y+x.mainAxis,J=A.elements.arrow&&getOffsetParent(A.elements.arrow),q=J?"y"===k?J.clientTop||0:J.clientLeft||0:0,Z=null!=(y=null==Q?void 0:Q[k])?y:0,V=F+K-Z,X=within(u?min(U,F+z-Z-q):U,F,u?max(R,V):R);C[k]=X,I[k]=X-F}if(o){var _,$="x"===k?top:left,ee="x"===k?bottom:right,Ae=C[f],te="y"===f?"height":"width",ie=Ae+p[$],ne=Ae-p[ee],se=-1!==[top,left].indexOf(w),ae=null!=(_=null==Q?void 0:Q[f])?_:0,oe=se?ie:Ae-O[te]-W[te]-ae+x.altAxis,re=se?Ae+O[te]+W[te]-ae-x.altAxis:ne,le=u&&se?withinMaxClamp(oe,Ae,re):within(u?oe:ie,Ae,u?re:ne);C[f]=le,I[f]=le-Ae}A.modifiersData[i]=I}}var preventOverflow$1={name:"preventOverflow",enabled:!0,phase:"main",fn:preventOverflow,requiresIfExists:["offset"]};function getHTMLElementScroll(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function getNodeScroll(e){return e!==getWindow(e)&&isHTMLElement(e)?getHTMLElementScroll(e):getWindowScroll(e)}function isElementScaled(e){var A=e.getBoundingClientRect(),t=round(A.width)/e.offsetWidth||1,i=round(A.height)/e.offsetHeight||1;return 1!==t||1!==i}function getCompositeRect(e,A,t){void 0===t&&(t=!1);var i=isHTMLElement(A),n=isHTMLElement(A)&&isElementScaled(A),s=getDocumentElement(A),a=getBoundingClientRect(e,n,t),o={scrollLeft:0,scrollTop:0},r={x:0,y:0};return(i||!i&&!t)&&(("body"!==getNodeName(A)||isScrollParent(s))&&(o=getNodeScroll(A)),isHTMLElement(A)?((r=getBoundingClientRect(A,!0)).x+=A.clientLeft,r.y+=A.clientTop):s&&(r.x=getWindowScrollBarX(s))),{x:a.left+o.scrollLeft-r.x,y:a.top+o.scrollTop-r.y,width:a.width,height:a.height}}function order(e){var A=new Map,t=new Set,i=[];function n(e){t.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!t.has(e)){var i=A.get(e);i&&n(i)}})),i.push(e)}return e.forEach((function(e){A.set(e.name,e)})),e.forEach((function(e){t.has(e.name)||n(e)})),i}function orderModifiers(e){var A=order(e);return modifierPhases.reduce((function(e,t){return e.concat(A.filter((function(e){return e.phase===t})))}),[])}function debounce(e){var A;return function(){return A||(A=new Promise((function(t){Promise.resolve().then((function(){A=void 0,t(e())}))}))),A}}function mergeByName(e){var A=e.reduce((function(e,A){var t=e[A.name];return e[A.name]=t?Object.assign({},t,A,{options:Object.assign({},t.options,A.options),data:Object.assign({},t.data,A.data)}):A,e}),{});return Object.keys(A).map((function(e){return A[e]}))}var DEFAULT_OPTIONS={placement:"bottom",modifiers:[],strategy:"absolute"};function areValidElements(){for(var e=arguments.length,A=new Array(e),t=0;t<e;t++)A[t]=arguments[t];return!A.some((function(e){return!(e&&"function"==typeof e.getBoundingClientRect)}))}function popperGenerator(e){void 0===e&&(e={});var A=e,t=A.defaultModifiers,i=void 0===t?[]:t,n=A.defaultOptions,s=void 0===n?DEFAULT_OPTIONS:n;return function(e,A,t){void 0===t&&(t=s);var n={placement:"bottom",orderedModifiers:[],options:Object.assign({},DEFAULT_OPTIONS,s),modifiersData:{},elements:{reference:e,popper:A},attributes:{},styles:{}},a=[],o=!1,r={state:n,setOptions:function(t){var o="function"==typeof t?t(n.options):t;l(),n.options=Object.assign({},s,n.options,o),n.scrollParents={reference:isElement(e)?listScrollParents(e):e.contextElement?listScrollParents(e.contextElement):[],popper:listScrollParents(A)};var c=orderModifiers(mergeByName([].concat(i,n.options.modifiers)));return n.orderedModifiers=c.filter((function(e){return e.enabled})),n.orderedModifiers.forEach((function(e){var A=e.name,t=e.options,i=void 0===t?{}:t,s=e.effect;if("function"==typeof s){var o=s({state:n,name:A,instance:r,options:i});a.push(o||function(){})}})),r.update()},forceUpdate:function(){if(!o){var e=n.elements,A=e.reference,t=e.popper;if(areValidElements(A,t)){n.rects={reference:getCompositeRect(A,getOffsetParent(t),"fixed"===n.options.strategy),popper:getLayoutRect(t)},n.reset=!1,n.placement=n.options.placement,n.orderedModifiers.forEach((function(e){return n.modifiersData[e.name]=Object.assign({},e.data)}));for(var i=0;i<n.orderedModifiers.length;i++)if(!0!==n.reset){var s=n.orderedModifiers[i],a=s.fn,l=s.options,c=void 0===l?{}:l,g=s.name;"function"==typeof a&&(n=a({state:n,options:c,name:g,instance:r})||n)}else n.reset=!1,i=-1}}},update:debounce((function(){return new Promise((function(e){r.forceUpdate(),e(n)}))})),destroy:function(){l(),o=!0}};if(!areValidElements(e,A))return r;function l(){a.forEach((function(e){return e()})),a=[]}return r.setOptions(t).then((function(e){!o&&t.onFirstUpdate&&t.onFirstUpdate(e)})),r}}var defaultModifiers=[eventListeners,popperOffsets$1,computeStyles$1,applyStyles$1,offset$1,flip$1,preventOverflow$1,arrow$1,hide$1],createPopper=popperGenerator({defaultModifiers:defaultModifiers});class Suggester{constructor(e,A,t){this.containerEl=A,this.owner=e,A.on("click",".suggestion-item",this.onSuggestionClick.bind(this)),A.on("mousemove",".suggestion-item",this.onSuggestionMouseover.bind(this)),t.register([],"ArrowUp",(()=>(this.setSelectedItem(this.selectedItem-1,!0),!1))),t.register([],"ArrowDown",(()=>(this.setSelectedItem(this.selectedItem+1,!0),!1))),t.register([],"Enter",(e=>(this.useSelectedItem(e),!1))),t.register([],"Tab",(e=>(this.chooseSuggestion(e),!1)))}chooseSuggestion(e){if(!this.items||!this.items.length)return;const A=this.items[this.selectedItem];A&&this.owner.onChooseSuggestion(A,e)}onSuggestionClick(e,A){if(e.preventDefault(),!this.suggestions||!this.suggestions.length)return;const t=this.suggestions.indexOf(A);this.setSelectedItem(t,!1),this.useSelectedItem(e)}onSuggestionMouseover(e,A){if(!this.suggestions||!this.suggestions.length)return;const t=this.suggestions.indexOf(A);this.setSelectedItem(t,!1)}empty(){this.containerEl.empty()}setSuggestions(e){this.containerEl.empty();const A=[];e.forEach((e=>{const t=this.containerEl.createDiv("suggestion-item");this.owner.renderSuggestion(e,t),A.push(t)})),this.items=e,this.suggestions=A,this.setSelectedItem(0,!1)}useSelectedItem(e){if(!this.items||!this.items.length)return;const A=this.items[this.selectedItem];A&&this.owner.selectSuggestion(A,e)}wrap(e,A){return(e%A+A)%A}setSelectedItem(e,A){const t=this.wrap(e,this.suggestions.length),i=this.suggestions[this.selectedItem],n=this.suggestions[t];i&&i.removeClass("is-selected"),n&&n.addClass("is-selected"),this.selectedItem=t,A&&n.scrollIntoView(!1)}}class SuggestionModal extends obsidian_module.FuzzySuggestModal{constructor(e,A,t){super(e),this.items=[],this.scope=new obsidian_module.Scope(this.app.scope),this.emptyStateText="No match found",this.limit=100,this.inputEl=A,this.items=t,this.suggestEl=createDiv("suggestion-container"),this.contentEl=this.suggestEl.createDiv("suggestion"),this.suggester=new Suggester(this,this.contentEl,this.scope),this.scope.register([],"Escape",this.onEscape.bind(this)),this.inputEl.addEventListener("input",this.onInputChanged.bind(this)),this.inputEl.addEventListener("focus",this.onFocus.bind(this)),this.inputEl.addEventListener("blur",this.close.bind(this)),this.suggestEl.on("mousedown",".suggestion-container",(e=>{e.preventDefault()}))}empty(){this.suggester.empty()}onInputChanged(){if(this.shouldNotOpen)return;const e=this.modifyInput(this.inputEl.value),A=this.getSuggestions(e);A.length>0?this.suggester.setSuggestions(A.slice(0,this.limit)):this.onNoSuggestion(),this.open()}onFocus(){this.shouldNotOpen=!1,this.onInputChanged()}modifyInput(e){return e}onNoSuggestion(){this.empty(),this.renderSuggestion(null,this.contentEl.createDiv("suggestion-item"))}open(){this.app.keymap.pushScope(this.scope),this.inputEl.ownerDocument.body.appendChild(this.suggestEl),this.popper=createPopper(this.inputEl,this.suggestEl,{placement:"bottom-start",modifiers:[{name:"offset",options:{offset:[0,10]}},{name:"flip",options:{fallbackPlacements:["top"]}}]})}onEscape(){this.close(),this.shouldNotOpen=!0}close(){this.app.keymap.popScope(this.scope),this.suggester.setSuggestions([]),this.popper&&this.popper.destroy(),this.suggestEl.detach()}createPrompt(e){this.promptEl||(this.promptEl=this.suggestEl.createDiv("prompt-instructions"));const A=this.promptEl.createDiv("prompt-instruction");for(const t of e)A.appendChild(t)}}class FileSuggestionModal extends SuggestionModal{constructor(e,A,t){super(e,A.inputEl,t),this.limit=20,this.files=[...t],this.text=A,this.inputEl.addEventListener("input",(()=>this.getFile()))}getFile(){const e=this.inputEl.value,A=this.app.vault.getAbstractFileByPath(e);A!==this.file&&A instanceof obsidian_module.TFile&&(this.file=A,this.onInputChanged())}getSelectedItem(){return this.file}getItemText(e){return e.path}onChooseItem(e){this.file=e,this.text.setValue(e.path),this.text.onChanged()}selectSuggestion({item:e}){this.file=e,this.text.setValue(e.path),this.onClose(),this.text.onChanged(),this.close()}renderSuggestion(e,A){const{item:t,match:i}=e||{},n=A.createDiv({cls:"suggestion-content"});if(!t)return n.setText(this.emptyStateText),void n.parentElement.addClass("is-selected");const s=t.path.length-t.name.length,a=i.matches.map((e=>createSpan("suggestion-highlight")));for(let e=s;e<t.path.length;e++){const A=i.matches.find((A=>A[0]===e));if(A){const s=a[i.matches.indexOf(A)];n.appendChild(s),s.appendText(t.path.substring(A[0],A[1])),e+=A[1]-A[0]-1}else n.appendText(t.path[e])}A.createDiv({cls:"suggestion-note",text:t.path})}getItems(){return this.files}}const insertImageToView=async(e,A,t,i)=>{e.clear(),e.style.strokeColor="transparent",e.style.backgroundColor="transparent";const n=e.getExcalidrawAPI();e.canvas.theme=n.getAppState().theme;const s=await e.addImage(A.x,A.y,t,i);return await e.addElementsToView(!1,!0,!0),s},insertEmbeddableToView=async(e,A,t,i)=>{if(e.clear(),e.style.strokeColor="transparent",e.style.backgroundColor="transparent",t&&IMAGE_TYPES.contains(t.extension)||e.isExcalidrawFile(t))return await insertImageToView(e,A,t);{const n=e.addEmbeddable(A.x,A.y,500,500,i,t);return await e.addElementsToView(!1,!0,!0),n}};class InsertPDFModal extends obsidian_module.Modal{constructor(e,A){super(app),this.plugin=e,this.view=A,this.borderBox=!0,this.gapSize=20,this.groupPages=!1,this.direction="right",this.numColumns=1,this.numRows=1,this.lockAfterImport=!0,this.pagesToImport=[],this.pageDimensions={width:0,height:0},this.importScale=.3,this.dirty=!1,this.setImageSizeMessage=()=>this.imageSizeMessage.innerText=`${Math.round(this.pageDimensions.width*this.importScale)} x ${Math.round(this.pageDimensions.height*this.importScale)}`}open(e){e&&"pdf"===e.extension.toLowerCase()&&(this.pdfFile=e),super.open()}onOpen(){this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText("Import PDF"),this.createForm()}async onClose(){this.dirty&&(this.plugin.settings.pdfImportScale=this.importScale,this.plugin.settings.pdfBorderBox=this.borderBox,this.plugin.settings.pdfGapSize=this.gapSize,this.plugin.settings.pdfGroupPages=this.groupPages,this.plugin.settings.pdfNumColumns=this.numColumns,this.plugin.settings.pdfNumRows=this.numRows,this.plugin.settings.pdfDirection=this.direction,this.plugin.settings.pdfLockAfterImport=this.lockAfterImport,this.plugin.saveSettings()),this.pdfDoc&&(this.pdfDoc.destroy(),this.pdfDoc=null)}async getPageDimensions(e){try{const A=this.plugin.settings.pdfScale,t=createEl("canvas"),i=(await e.getPage(1)).getViewport({scale:A});this.pageDimensions.height=i.height,this.pageDimensions.width=i.width,t.width=0,t.height=0,this.setImageSizeMessage()}catch(e){console.log(e)}}createPageListFromString(e){const A=e=>e.replace(/\D/g,"");return this.pagesToImport=[],e.split(",").forEach((e=>{const t=e.split("-");if(1===t.length){const e=parseInt(A(t[0]));!isNaN(e)&&this.pagesToImport.push(e)}else if(2===t.length){const e=parseInt(A(t[0])),i=parseInt(A(t[1]));if(isNaN(e)||isNaN(i))return;for(let A=e;A<=i;A++)this.pagesToImport.push(A)}})),this.pagesToImport}async createForm(){await this.plugin.loadSettings(),this.borderBox=this.plugin.settings.pdfBorderBox,this.gapSize=this.plugin.settings.pdfGapSize,this.groupPages=this.plugin.settings.pdfGroupPages,this.numColumns=this.plugin.settings.pdfNumColumns,this.numRows=this.plugin.settings.pdfNumRows,this.direction=this.plugin.settings.pdfDirection,this.lockAfterImport=this.plugin.settings.pdfLockAfterImport,this.importScale=this.plugin.settings.pdfImportScale;const e=this.contentEl;let A,t,i,n;const s=()=>this.pdfDoc?0===this.pagesToImport.length?(i.buttonEl.style.display="none",void(n.innerText="Please select pages to import")):Math.max(...this.pagesToImport)<=this.pdfDoc.numPages?(i.buttonEl.style.display="block",void(n.innerText="")):(i.buttonEl.style.display="none",void(n.innerText=`The selected document has ${this.pdfDoc.numPages} pages. Please select pages between 1 and ${this.pdfDoc.numPages}`)):(n.innerText="Please select a PDF file",void(i.buttonEl.style.display="none")),a=()=>{0!==t?A.innerHTML=`There are <b>${t}</b> pages in the selected document.`:A.innerText="Please select a PDF file"},o=async e=>{this.pdfDoc&&await this.pdfDoc.destroy(),this.pdfDoc=null,e&&(this.pdfDoc=await getPDFDoc(e),this.pdfFile=e,this.pdfDoc?(t=this.pdfDoc.numPages,s(),a(),this.getPageDimensions(this.pdfDoc)):i.setDisabled(!0))},r=new obsidian_module.TextComponent(e);r.inputEl.style.width="100%";const l=new FileSuggestionModal(this.app,r,app.vault.getFiles().filter((e=>"pdf"===e.extension.toLowerCase())));let c,g,d,u;r.onChange((async()=>{const e=l.getSelectedItem();await o(e)})),A=e.createEl("p",{text:""}),a(),new obsidian_module.Setting(e).setName("Pages to import").addText((e=>{g=e,e.setPlaceholder("e.g.: 1,3-5,7,9-10").onChange((e=>{const A=this.createPageListFromString(e);A.length>15?c.innerHTML=`You are importing <b>${A.length}</b> pages. ⚠️ This may take a while. ⚠️`:c.innerHTML=`You are importing <b>${A.length}</b> pages.`,s()})),e.inputEl.style.width="100%"})),c=e.createEl("p",{text:""}),new obsidian_module.Setting(e).setName("Add border box").addToggle((e=>e.setValue(this.borderBox).onChange((e=>{this.borderBox=e,this.dirty=!0})))),new obsidian_module.Setting(e).setName("Group pages").setDesc("This will group all pages into a single group. This is recommended if you are locking the pages after import, because the group will be easier to unlock later rather than unlocking one by one.").addToggle((e=>e.setValue(this.groupPages).onChange((e=>{this.groupPages=e,this.dirty=!0})))),new obsidian_module.Setting(e).setName("Lock pages on canvas after import").addToggle((e=>e.setValue(this.lockAfterImport).onChange((e=>{this.lockAfterImport=e,this.dirty=!0}))));const h=()=>{switch(this.direction){case"down":d.settingEl.style.display="none",u.settingEl.style.display="";break;case"right":d.settingEl.style.display="",u.settingEl.style.display="none"}};let m,p,w;new obsidian_module.Setting(e).setName("Import direction").addDropdown((e=>e.addOptions({down:"Top > Down",right:"Left > Right"}).setValue(this.direction).onChange((e=>{this.direction=e,h(),this.dirty=!0})))),d=new obsidian_module.Setting(e),d.setName("Number of columns").addSlider((e=>e.setLimits(1,100,1).setValue(this.numColumns).onChange((e=>{this.numColumns=e,m.innerText=` ${e.toString()}`,this.dirty=!0})))).settingEl.createDiv("",(e=>{m=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.numColumns.toString()}`})),u=new obsidian_module.Setting(e),u.setName("Number of rows").addSlider((e=>e.setLimits(1,100,1).setValue(this.numRows).onChange((e=>{this.numRows=e,p.innerText=` ${e.toString()}`,this.dirty=!0})))).settingEl.createDiv("",(e=>{p=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.numRows.toString()}`})),h(),new obsidian_module.Setting(e).setName("Size of gap between pages").addSlider((e=>e.setLimits(10,200,10).setValue(this.gapSize).onChange((e=>{this.gapSize=e,w.innerText=` ${e.toString()}`,this.dirty=!0})))).settingEl.createDiv("",(e=>{w=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.gapSize.toString()}`}));const B=new obsidian_module.Setting(e).setName("Imported page size").setDesc(`${this.pageDimensions.width*this.importScale} x ${this.pageDimensions.height*this.importScale}`).addSlider((e=>e.setLimits(.1,1.5,.1).setValue(this.importScale).onChange((e=>{this.importScale=e,this.dirty=!0,this.setImageSizeMessage()}))));this.imageSizeMessage=B.descEl;const E=new obsidian_module.Setting(e).setDesc("Select a document first").addButton((e=>{e.setButtonText("Import PDF").setCta().onClick((async()=>{const e=getEA(this.view);let A=0,t=0;const i=Math.round(this.pageDimensions.width*this.importScale),s=Math.round(this.pageDimensions.height*this.importScale);for(let a=0;a<this.pagesToImport.length;a++){const o=this.pagesToImport[a];n.innerText=`Importing page ${o} (${a+1} of ${this.pagesToImport.length})`;const r=Math.round(this.pageDimensions.width*this.importScale*A+this.gapSize*A),l=Math.round(this.pageDimensions.height*this.importScale*t+this.gapSize*t);e.style.strokeColor=this.borderBox?"#000000":"transparent";const c=e.addRect(r,l,i,s),g=e.getElement(c);this.lockAfterImport&&(g.locked=!0);const d=await e.addImage(r,l,this.pdfFile.path+`#page=${o}`,!1,!1),u=e.getElement(d);switch(u.width=i,u.height=s,this.lockAfterImport&&(u.locked=!0),e.addToGroup([c,d]),this.direction){case"right":A=(A+1)%this.numColumns,0===A&&t++;break;case"down":t=(t+1)%this.numRows,0===t&&A++}}if(this.groupPages){const A=e.getElements().map((e=>e.id));e.addToGroup(A)}await e.addElementsToView(!0,!0,!1);const a=e.getExcalidrawAPI(),o=e.getElements().map((e=>e.id)),r=e.getViewElements().filter((e=>o.includes(e.id)));a.selectElements(r),a.zoomToFit(r),this.close()})),i=e,i.buttonEl.style.display="none"}));n=E.descEl,n.addClass("mod-warning"),this.pdfFile?(r.setValue(this.pdfFile.path),await o(this.pdfFile),l.close(),g.inputEl.focus()):r.inputEl.focus(),s()}}class UniversalInsertFileModal extends obsidian_module.Modal{constructor(e,A){super(app),this.plugin=e,this.view=A,this.center={x:0,y:0};const t=A.excalidrawAPI.getAppState(),i=A.containerEl.getBoundingClientRect(),n=window.innerWidth||document.documentElement.clientWidth,s=window.innerHeight||document.documentElement.clientHeight,a=sceneCoordsToViewportCoords({sceneX:A.currentPosition.x,sceneY:A.currentPosition.y},t);if(a.x>=i.left+150&&a.y<=i.right-150&&a.y>=i.top+150&&a.y<=i.bottom-150){const e=A.currentPosition.x-250,t=A.currentPosition.y-250;this.center={x:e,y:t}}else{const e=i.left+i.width/2,A=i.top+i.height/2,a=Math.max(0,Math.min(n,e)),o=Math.max(0,Math.min(s,A));this.center=viewportCoordsToSceneCoords({clientX:a,clientY:o},t),this.center={x:this.center.x-250,y:this.center.y-250}}}open(e,A){this.file=e,this.center=null!=A?A:this.center,super.open()}onOpen(){this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText("Insert File From Vault"),this.createForm()}async createForm(){const e=this.contentEl;let A,t,i,n,s,a,o=!1,r=this.file;const l=async()=>{const e=this.plugin.ea,o=r&&"md"===r.extension&&!e.isExcalidrawFile(r),l=r&&(IMAGE_TYPES.contains(r.extension)||e.isExcalidrawFile(r)),c=r&&!l,g=r&&"pdf"===r.extension,d=r&&e.isExcalidrawFile(r);if(o){for(t.settingEl.style.display="",A.selectEl.style.display="block";A.selectEl.options.length>0;)A.selectEl.remove(0);A.addOption("",""),(await app.metadataCache.blockCache.getForFile({isCancelled:()=>!1},r)).blocks.filter((e=>{var A;return e.display&&"heading"===(null===(A=e.node)||void 0===A?void 0:A.type)})).forEach((e=>{A.addOption(`#${cleanSectionHeading(e.display)}`,e.display)}))}else t.settingEl.style.display="none",A.selectEl.style.display="none";a.settingEl.style.display=d?"":"none",l||"md"===(null==r?void 0:r.extension)?n.buttonEl.style.display="block":n.buttonEl.style.display="none",i.buttonEl.style.display=c?"block":"none",s.buttonEl.style.display=g?"block":"none"},c=new obsidian_module.TextComponent(e);c.inputEl.style.width="100%";const g=new FileSuggestionModal(this.app,c,app.vault.getFiles().filter((e=>e!==this.view.file)));c.onChange((()=>{r=g.getSelectedItem(),l()})),t=new obsidian_module.Setting(e).setName("Select section heading").addDropdown((e=>{A=e,A.selectEl.style.width="100%"})),a=new obsidian_module.Setting(e).setName("Anchor to 100% of original size").setDesc("This is a pro feature, use it only if you understand how it works. If enabled even if you change the size of the imported image in Excalidraw, the next time you open the drawing this image will pop back to 100% size. This is useful when embedding an atomic Excalidraw idea into another note and preserving relative sizing of text and icons.").addToggle((e=>{e.setValue(o).onChange((e=>{o=e}))})),new obsidian_module.Setting(e).addButton((e=>{e.setButtonText("as Embeddable").onClick((async()=>{const e=app.metadataCache.fileToLinktext(r,this.view.file.path,"md"===r.extension),t=getEA(this.view);t.selectElementsInView([await insertEmbeddableToView(t,this.center,void 0,`[[${e}${A.selectEl.value}]]`)]),this.close()})),i=e})).addButton((e=>{e.setButtonText("as Pdf").onClick((()=>{new InsertPDFModal(this.plugin,this.view).open(r),this.close()})),s=e})).addButton((e=>{e.setButtonText("as Image").onClick((async()=>{const e=getEA(this.view),t=r&&"md"===r.extension&&!e.isExcalidrawFile(r);e.selectElementsInView([await insertImageToView(e,this.center,t&&A.selectEl.value&&""!==A.selectEl.value?`${r.path}${A.selectEl.value}`:r,e.isExcalidrawFile(r)?!o:void 0)]),this.close()})),n=e})),this.view.ownerWindow.addEventListener("keydown",this.onKeyDown=e=>{const A=e=>"none"!==e.buttonEl.style.display;switch(e.key){case"Escape":return void this.close();case"Enter":return!A(i)||A(n)||A(s)?!A(n)||A(i)||A(s)?!A(s)||A(i)||A(n)?void 0:void s.buttonEl.click():void n.buttonEl.click():void i.buttonEl.click();case"i":return void(A(n)&&n.buttonEl.click());case"p":return void(A(s)&&s.buttonEl.click());case"f":return void(A(i)&&i.buttonEl.click())}}),c.inputEl.focus(),r&&(c.setValue(r.path),g.close()),l()}onClose(){this.view.ownerWindow.removeEventListener("keydown",this.onKeyDown)}}const setPen=(e,A)=>{const t=A.getAppState();A.updateScene({appState:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({currentStrokeOptions:e.penOptions},e.strokeWidth&&0!==e.strokeWidth?{currentItemStrokeWidth:e.strokeWidth}:null),e.backgroundColor?{currentItemBackgroundColor:e.backgroundColor}:null),e.strokeColor?{currentItemStrokeColor:e.strokeColor}:null),""===e.fillStyle?null:{currentItemFillStyle:e.fillStyle}),e.roughness?null:{currentItemRoughness:e.roughness}),e.freedrawOnly&&!t.resetCustomPen?{resetCustomPen:{currentItemStrokeWidth:t.currentItemStrokeWidth,currentItemBackgroundColor:t.currentItemBackgroundColor,currentItemStrokeColor:t.currentItemStrokeColor,currentItemFillStyle:t.currentItemFillStyle,currentItemRoughness:t.currentItemRoughness}}:null)})},resetStrokeOptions=(e,A,t)=>{A.updateScene({appState:Object.assign(Object.assign(Object.assign({},e?{currentItemStrokeWidth:e.currentItemStrokeWidth,currentItemBackgroundColor:e.currentItemBackgroundColor,currentItemStrokeColor:e.currentItemStrokeColor,currentItemFillStyle:e.currentItemFillStyle,currentItemRoughness:e.currentItemRoughness}:null),{resetCustomPen:null}),t?{currentStrokeOptions:null}:null)})};class ObsidianMenu{constructor(e,A,t){this.plugin=e,this.toolsRef=A,this.view=t,this.renderCustomPens=(e,A)=>{var t;return null===(t=A.customPens)||void 0===t?void 0:t.map(((t,i)=>{const n=this.plugin.settings.customPens[i];return A.resetCustomPen&&"freedraw"!==A.activeTool.type&&A.currentStrokeOptions===n.penOptions&&setTimeout((()=>resetStrokeOptions(A.resetCustomPen,this.view.excalidrawAPI,!1))),!A.resetCustomPen&&"freedraw"===A.activeTool.type&&A.currentStrokeOptions===n.penOptions&&n.freedrawOnly&&setTimeout((()=>setPen(this.activePen,this.view.excalidrawAPI))),this.activePen&&A.resetCustomPen&&"freedraw"===A.activeTool.type&&A.currentStrokeOptions===n.penOptions&&n.freedrawOnly&&(this.activePen.strokeWidth=A.currentItemStrokeWidth,this.activePen.backgroundColor=A.currentItemBackgroundColor,this.activePen.strokeColor=A.currentItemStrokeColor,this.activePen.fillStyle=A.currentItemFillStyle,this.activePen.roughness=A.currentItemRoughness),React__namespace.createElement("label",{key:i,className:clsx("ToolIcon","ToolIcon_size_medium",{"is-mobile":e}),onClick:()=>{const e=Date.now();if(e-this.clickTimestamp[i]<500){const e=new PenSettingsModal(this.plugin,this.view,i);return void(async()=>{await this.plugin.loadSettings(),e.open()})()}this.clickTimestamp[i]=e;const A=this.view.excalidrawAPI,t=A.getAppState();t.currentStrokeOptions!==n.penOptions||"freedraw"!==t.activeTool.type?(this.activePen=Object.assign({},n),setPen(n,A),A.setActiveTool({type:"freedraw"})):resetStrokeOptions(t.resetCustomPen,A,!0)}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-label":n.type,style:Object.assign({},"freedraw"===A.activeTool.type&&A.currentStrokeOptions===n.penOptions?{background:"var(--color-primary)"}:{})},penIcon(n)))}))},this.longpressTimeout={},this.renderPinnedScriptButtons=(e,A)=>{var t;let i=0;return null===(t=null==A?void 0:A.pinnedScripts)||void 0===t?void 0:t.map(((A,t)=>{var n;const s=this.plugin.scriptEngine.scriptIconMap[A],a=null!==(n=null==s?void 0:s.name)&&void 0!==n?n:"",o=(null==s?void 0:s.svgString)?stringToSVG(s.svgString):ICONS.cog;return this.longpressTimeout[t]||(this.longpressTimeout[t]=0),React__namespace.createElement("label",{key:t,className:clsx("ToolIcon","ToolIcon_size_medium",{"is-mobile":e}),onPointerUp:()=>{this.longpressTimeout[t]&&(window.clearTimeout(this.longpressTimeout[t]),this.longpressTimeout[t]=0,(async()=>{const e=app.vault.getAbstractFileByPath(A);e&&e instanceof obsidian_module.TFile&&this.plugin.scriptEngine.executeScript(this.view,await app.vault.read(e),this.plugin.scriptEngine.getScriptName(e),e)})())},onPointerDown:()=>{const e=Date.now();this.longpressTimeout[t]>0&&(window.clearTimeout(this.longpressTimeout[t]),this.longpressTimeout[t]=0),e-i>=500&&(this.longpressTimeout[t]=window.setTimeout((()=>{this.longpressTimeout[t]=0,(async()=>{var e;await this.plugin.loadSettings();const t=this.plugin.settings.pinnedScripts.indexOf(A);t>-1&&(this.plugin.settings.pinnedScripts.splice(t,1),null===(e=this.view.excalidrawAPI)||void 0===e||e.setToast({message:`Pin removed: ${a}`,duration:3e3,closable:!0})),await this.plugin.saveSettings(),app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinnedScripts()}))})()}),1500)),i=e}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-label":a},o))}))},this.renderButton=(e,A)=>React__namespace.createElement(React__namespace.Fragment,null,React__namespace.createElement("label",{className:clsx("ToolIcon","ToolIcon_size_medium",{"is-mobile":e}),onClick:()=>{this.toolsRef.current.setTheme(A.theme),this.toolsRef.current.toggleVisibility(A.zenModeEnabled||e)}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-label":t$d("OBSIDIAN_TOOLS_PANEL")},ICONS.obsidian)),React__namespace.createElement("label",{className:clsx("ToolIcon","ToolIcon_size_medium",{"is-mobile":e}),onClick:()=>{new UniversalInsertFileModal(this.plugin,this.view).open()}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-label":t$d("UNIVERSAL_ADD_FILE")},ICONS["add-file"])),this.renderCustomPens(e,A),this.renderPinnedScriptButtons(e,A)),this.clickTimestamp=Array.from({length:Object.keys(PENS).length},(()=>0))}}class ActionButton extends React__namespace.Component{constructor(e){super(e),this.toastMessageTimeout=0,this.longpressTimeout=0,this.state={visible:!0}}render(){return React__namespace.createElement("button",{style:{},className:"ToolIcon_type_button ToolIcon_size_small ToolIcon_type_button--show ToolIcon",title:this.props.title,onClick:e=>{this.toastMessageTimeout&&(window.clearTimeout(this.toastMessageTimeout),this.toastMessageTimeout=0,this.props.action(e)),this.longpressTimeout&&(window.clearTimeout(this.longpressTimeout),this.longpressTimeout=0)},onPointerDown:e=>{this.toastMessageTimeout=window.setTimeout((()=>{var e;null===(e=this.props.view.excalidrawAPI)||void 0===e||e.setToast({message:this.props.title,duration:3e3,closable:!0}),this.toastMessageTimeout=0}),400),this.longpressTimeout=window.setTimeout((()=>{var A;this.props.longpress?this.props.longpress(e):null===(A=this.props.view.excalidrawAPI)||void 0===A||A.setToast({message:"Cannot pin this action",duration:3e3,closable:!0}),this.longpressTimeout=0}),1500)}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-hidden":"true"},this.props.icon))}}const FIRST_RUN='\nThe Excalidraw Obsidian plugin is much more than "just" a drawing tool. To help you get started here\'s a showcase of the key Excalidraw plugin features.\n\nIf you\'d like to learn more, please subscribe to my YouTube channel: [Visual PKM](https://www.youtube.com/channel/UCC0gns4a9fhVkGkngvSumAQ) where I regularly share videos about Obsidian-Excalidraw and about tools and techniques for Visual Personal Knowledge Management.\n\nThank you & Enjoy!\n\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/o0exK-xFP3k" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n',RELEASE_NOTES={Intro:'After each update you\'ll be prompted with the release notes. You can disable this in plugin settings.\n\nI develop this plugin as a hobby, spending my free time doing this. If you find it valuable, then please say THANK YOU or...\n\n<div class="ex-coffee-div"><a href="https://ko-fi.com/zsolt"><img src="https://cdn.ko-fi.com/cdn/kofi3.png?v=3" height=45></a></div>\n',"2.0.4":`\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/A1vrSGBbWgo" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## New\n- ExcaliAI\n- You can now add ${String.fromCharCode(96)}ex-md-font-hand-drawn${String.fromCharCode(96)} or ${String.fromCharCode(96)}ex-md-font-hand-drawn${String.fromCharCode(96)} to the ${String.fromCharCode(96)}cssclasses:${String.fromCharCode(96)} frontmatter property in embedded markdown nodes and their font face will match the respective Excalidraw fonts.\n\n## Fixed\n- Adding a script for the very first time (when the script folder did not yet exist) did not show up in the tools panel. Required an Obsidian restart. \n- Performance improvements\n\n## New and updated In Excalidraw Automate\n- Added many new functions and some features to existing functions. See the [release notes](https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.0.3) for details\n`,"2.0.3":'\n## Fixed\n- Mermaid to Excalidraw stopped working after installing the Obsidian 1.5.0 insider build. [#1450](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1450)\n- CTRL+Click on a Mermaid diagram did not open the Mermaid editor.\n- Embed color settings were not honored when the embedded markdown was focused on a section or block.\n- Scrollbars were visible when the embeddable was set to transparent (set background color to match element background, and set element background color to "transparent").\n',"2.0.2":'\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/502swdqvZ2A" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## Fixed\n- Resolved an issue where the Command Palette\'s "Toggle between Excalidraw and Markdown mode" failed to uncompress the Excalidraw JSON for editing.\n\n## New\n- Scaling feature for embedded objects (markdown documents, pdfs, YouTube, etc.): Hold down the SHIFT key while resizing elements to adjust their size.\n- Expanded support for Canvas Candy. Regardless of Canvas Candy, you can apply CSS classes to embedded markdown documents for transparency, shape adjustments, text orientation, and more.\n- Added new functionalities to the active embeddable top-left menu:\n - Document Properties (cog icon)\n - File renaming\n - Basic styling options for embedded markdown documents\n - Setting YouTube start time\n - Zoom to full screen for PDFs\n- Improved immersive embedding of Excalidraw into Obsidian Canvas.\n- Introduced new Command Palette Actions:\n - Embeddable Properties\n - Scaling selected embeddable elements to 100% relative to the current canvas zoom.\n',"2.0.1":'\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/xmqiBTrlbEM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## Fixed\n- bug with cssclasses in frontmatter\n- styling of help screen keyboard shortcuts [#1437](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1437)\n',"2.0.0":`\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/JC1E-jeiWhI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## New\n- Added support for applying CSS classes in frontmatter. Now, when embedding Excalidraw drawings into Obsidian Canvas, you can use [Canvas Candy](https://tfthacker.com/canvas-candy) classes. For instance, ${String.fromCharCode(96)}cssclasses: cc-border-none${String.fromCharCode(96)} removes the canvas node border around the drawing.\n- Introduced new context menu actions:\n - Navigate to link or embedded image.\n - Add any file from the vault to the canvas.\n - Convert the selected text element or sticky note to an embedded markdown file.\n - Add a link from the Vault to the selected element.\n- Frames are now rendered in exported images.\n- SVG Export includes the ${String.fromCharCode(96)}.excalidraw-svg${String.fromCharCode(96)} class, enabling post-processing of SVGs using publish.js when using custom domains with Obsidian Publish. Also, added a command palette action ${String.fromCharCode(96)}Obsidian Publish: Find SVG and PNG exports that are out of date${String.fromCharCode(96)}.\n- Added a new Command palette action to open the corresponding Excalidraw file based on the embedded SVG or PNG file. ${String.fromCharCode(96)}Open Excalidraw Drawing${String.fromCharCode(96)} [Issue #1411](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1411)\n\n## Fixed and Improved\n- Resolved issue with the Mermaid Timeline graph displaying all black. [Issue #1424](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1424)\n- Enabled toggling pen mode off after activation by a pen touch.\n- Now you are able to unlock elements on mobile; previously, locked elements couldn't be selected.\n- Fixed the disabled ${String.fromCharCode(96)}complete line button${String.fromCharCode(96)} for multipoint lines on mobile.\n![Mobile Editing Image](https://github.com/zsviczian/obsidian-excalidraw-plugin/assets/14358394/e7051c75-818f-4800-ba16-ac276e229184)\n\n`,"1.9.28":"\n## Fixed & Improved\n- Fixed an issue where the toolbar lost focus, requiring two clicks. This caused a problem when the hand tool was activated from ExcalidrawAutomate script when opening a drawing, causing buttons to stop working. [#1344](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1344)\n- Resolved a caching issue affecting image area-links and group-links, making them work inconsistently. For more details, refer to the discussion on [Discord](https://discord.com/channels/1026825302900494357/1169311900308361318).\n- Improved frame colors with Dynamic Coloring.\n- Added support for multiline LaTeX formulas. [#1403](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1403)\n- Fixed the issue of Chinese characters overlapping in MathJax. [#1406](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1406)\n\n## New\n- Added support for Mermaid to Excalidraw **Sequence Diagrams**.\n- If an image contains an element link, clicking on the image will now open the link chooser, allowing you to decide whether to open the image or follow the element link.\n- When hovering over an image that also has an element link, the hover preview will display the contents of the link.\n- You can now choose to **import PDFs** in columns instead of rows. Additionally, you have the option to group all pages after import, which will improve the unlocking experience if you also lock pages on import.\n- Introduced configuration options for the **Laser Tool**, including pointer color, decay length, and time. ([#1408](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1408), [#1220](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1220))\n\n![image](https://github.com/zsviczian/obsidian-excalidraw-plugin/assets/14358394/c0cad40a-1afc-42af-b41b-f912dd8a4e78)\n","1.9.27":'\n## New\n- Restructured plugin settings, added additional comments and relevant videos\n- Added setting to change PDF to Image resolution/scale. This has an effect when embedding PDF pages to Excalidraw. A lower value will result in less-sharp pages, but better overall performance. Also, larger pages (higher scale value) were not accepted by Excalidraw.com when copying from Obsidian due to the 2MB image file limit. Find the "PDF to Image" setting under "Embedding Excalidraw into your Notes and Exporting" setting. [#1393](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1393)\n\n## Fixed\n- When multiple Excalidraw Scripts were executed parallel a race condition occurred causing scripts to override each other\n- I implemented a partial fix to "text detaching from figures when dragging them" [#1400](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1400)\n- Regression: extra thin stroke removed with 1.9.26 [#1399](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1399)',"1.9.26":'\n## Fixes and improvements from Excalidraw.com\n- Freedraw shape selection issue, when fill-pattern is not solid [#7193](https://github.com/excalidraw/excalidraw/pull/7193)\n- Actions panel UX improvement [#6850](https://github.com/excalidraw/excalidraw/pull/6850)\n\n## Fixed in plugin\n- After inserting PDF pages as image the size of inserted images were incorrectly anchored preventing resizing of pages. The fix does not solve the issue with already imported pages, but pages you import in the future will not be anchored. \n- Mobile toolbar flashes up on tab change on desktop\n- Toolbar buttons are active on the first click after opening a drawing. This addresses the "hand" issue raised here: [#1344](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1344)\n',"1.9.25":`\n## Fixed\n- Fixed issues with creating Markdown or Excalidraw files for non-existing documents [#1385](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1385)\n- Resolved a bug where changing the section/block filter after duplicating a markdown embeddable now works correctly on the first attempt [#1387](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1387)\n\n## New\n- Easily create a markdown file and embed it as an embedded frame with a single click when clicking a link pointing to a non-existent file.\n![image](https://github.com/zsviczian/obsidian-excalidraw-plugin/assets/14358394/4b9de54d-2382-4a52-b500-918ba2a60133)\n- Offline LaTeX support. The MathJax package is now included in the plugin, eliminating the need for an internet connection. [#1383](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1383), [#936](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/936), [#1289](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1289)\n\n## Minor Updates from excalidraw.com\n- Improved the laser pointer in dark mode.\n- Removed bound arrows from frames.\n- Enhanced fill rendering.\n- Maintained the z-order of elements added to frames.\n\n## New in ExcalidrawAutomate\n- Introduced two LZString functions in ExcalidrawAutomate:\n${String.fromCharCode(96,96,96)}typescript\ncompressToBase64(str:string):string;\ndecompressFromBase64(str:string):string;\n${String.fromCharCode(96,96,96)}\n`,"1.9.24":`\n## Fixed\n- Resolved some hidden Image and Backup Cache initialization errors.\n\n## New Features\n- Introducing the ${String.fromCharCode(96)}[[cmd://cmd-id]]${String.fromCharCode(96)} link type, along with a new Command Palette Action: ${String.fromCharCode(96)}Insert Obsidian Command as a link${String.fromCharCode(96)}. With this update, you can now add any command available on the Obsidian Command palette as a link in Excalidraw. When you click the link, the corresponding command will be executed. This feature opens up exciting possibilities for automating your drawings by creating Excalidraw Scripts and attaching them to elements.\n\n- I am thrilled to announce that you can now embed images directly from your local hard drive in Excalidraw. These files won't be moved into Obsidian. Please note, however, that these images won't be synchronized across your other devices. [#1365](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1365)\n\nCheck out the [updated keyboard map](https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/excalidraw-modifiers.png)\n\n<a href="https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/excalidraw-modifiers.png"><img src="https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/excalidraw-modifiers.png" width="100%" alt="Keyboard map"/></a>\n\nStay creative and productive with Excalidraw!\n`,"1.9.23":"\n## Fixed\n- Link navigation error in view mode introduced with 1.9.21 [#7120](https://github.com/excalidraw/excalidraw/pull/7120)\n","1.9.21":'\n## Fixed:\n- When moving a group of objects on the grid, each object snapped separately resulting in a jumbled-up image [#7082](https://github.com/excalidraw/excalidraw/issues/7082)\n\n## New from Excalidraw.com:\n- 🎉 Laser Pointer. Press "K" to activate the laser pointer, or find it under more tools. In View-Mode double click/tap the canvas to toggle the laser pointer\n\n![image](https://github.com/zsviczian/obsidian-excalidraw-plugin/assets/14358394/d3fc079d-9428-4a93-9a9b-1947ce9b6b57)\n',"1.9.20":`\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/QB2rKRxxYlg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## Fixed\n- Fourth Font displays correctly in SVG embeds mode\n- The re-colorMap map (see [1.9.19](https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.9.19) for more info) did not work when either of the fill or stroke color properties of the image was missing.\n- Excalidraw Pasting with middle mouse button on Linux [#1338](https://github.com/zsviczian/obsidian-excalidraw-plugin/pull/1338) 🙏@Aeases \n\n### Fixed by excalidraw.com\n- Excalidraw's native eyedropper fixes [#7019](https://github.com/excalidraw/excalidraw/pull/7019)\n\n## New\n- Now you can insert [Mermaid](https://mermaid.live/) diagrams as Excalidraw elements into your drawings (currently only the [Flowchart](https://mermaid.js.org/syntax/flowchart.html) type is supported, [other diagram types](https://mermaid.js.org/intro/#diagram-types) are inserted as Mermaid native images. \n - ⚠️**This feature requires Obsidian API v1.4.14 (the latest desktop version). On Obsidian mobile API v1.4.14 is only available to Obsidian insiders currently**\n - If you want to contribute to the project please head over to [mermaid-to-excalidraw](https://github.com/excalidraw/mermaid-to-excalidraw) and help create the converters for the other diagram types.\n- The Fourth Font now also supports the OTF format\n- Disable snap-to-grid in grid mode by holding down the CTRL/CMD while drawing or moving an element [#6983](https://github.com/excalidraw/excalidraw/pull/6983)\n- I updated the Excalidraw logo in Obsidian. This affects the logo on the tab and the ribbon.\n\n### New from excalidraw.com\n- Elements alignment snapping. Hold down the CTRL/CMD button while moving an element to snap it to other objects. [#6256](https://github.com/excalidraw/excalidraw/pull/6256)\n\n### New in the script library\n- The amazing shape [Boolean Operations](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Boolean%20Operations.md) script created by 🙏@GColoy is available in the script library.\n\n### New in Excalidraw Automate\n- ${String.fromCharCode(96)}getPolyBool()${String.fromCharCode(96)} returns a [PolyBool](https://github.com/velipso/polybooljs) object\n- sample mermaid code:\n${String.fromCharCode(96,96,96)}js\nea = ExcalidrawAutomate();\nea.setView();\nawait ea.addMermaid(\n ${String.fromCharCode(96)}flowchart TD\n A[Christmas] --\x3e|Get money| B(Go shopping)\n B --\x3e C{Let me think}\n C --\x3e|One| D[Laptop]\n C --\x3e|Two| E[iPhone]\n C --\x3e|Three| F[fa:fa-car Car]${String.fromCharCode(96)}\n);\nea.addElementsToView();\n${String.fromCharCode(96,96,96)}`,"1.9.19":`\n## New\n- I added new features to the [Deconstruct Selected Elements](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Deconstruct%20selected%20elements%20into%20new%20drawing.md) script\n- I added a new script: [Text Aura](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Text%20Aura.md)\n- I updated the [Set Grid](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Set%20Grid.md) script. You can now set the Major/Minor tick frequency. [#1305](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1305)\n- The re-colorMap is now case-insensitive. The color map is a hidden feature. In Markdown View mode you can add a JSON map after the embedded SVG or Excalidraw image filename with a mapping of current colors to new colors.\n<img width="100%" src="https://github.com/zsviczian/obsidian-excalidraw-plugin/assets/14358394/1d985a59-a2d2-48a2-9cef-686bfbe9ef02"/>\n\n## New in ExcalidrawAutomate\n- I added the ${String.fromCharCode(96)}silent${String.fromCharCode(96)} switch. If this is true, the created file will not be opened.\n${String.fromCharCode(96,96,96)}typescript\n async create(params?: {\n filename?: string;\n foldername?: string;\n templatePath?: string;\n onNewPane?: boolean;\n silent?: boolean;\n frontmatterKeys?: {\n "excalidraw-plugin"?: "raw" | "parsed";\n "excalidraw-link-prefix"?: string;\n "excalidraw-link-brackets"?: boolean;\n "excalidraw-url-prefix"?: string;\n "excalidraw-export-transparent"?: boolean;\n "excalidraw-export-dark"?: boolean;\n "excalidraw-export-padding"?: number;\n "excalidraw-export-pngscale"?: number;\n "excalidraw-default-mode"?: "view" | "zen";\n "excalidraw-onload-script"?: string;\n "excalidraw-linkbutton-opacity"?: number;\n "excalidraw-autoexport"?: boolean;\n };\n plaintext?: string; //text to insert above the ${String.fromCharCode(96)}# Text Elements${String.fromCharCode(96)} section\n }): Promise<string>\n${String.fromCharCode(96,96,96)}\n`,"1.9.18":`\n## New\n- Excalidraw now syncs with Obsidian's language settings, provided translations are available. [#1297](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1297)\n\n## Fixed\n- [#1285](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1285): Solved Obsidian crashes caused by copying images from Excalidraw into markdown notes. Going forward:\n - Copying an image will paste its embed link,\n - Copying a text element will paste the text,\n - For all other elements with links, the link will be pasted.\n - In all other cases nothing will be pasted.\n \n- Resolved grid instability ([#1298](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1298)).\n- Fixed missing ${String.fromCharCode(96)}[[square brackets]]${String.fromCharCode(96)} in PDF section references, making the links functional.\n- Corrected the behavior of "Open current link in browser" for embedded YouTube and Vimeo frames. Clicking the globe button will now correctly open the links.\n`,"1.9.17":'\n## New \n- Significant performance improvements from Excalidraw.com\n- When selecting a highlight in the Obsidian PDF editor and selecting "Copy as Quote" in the context menu, then paste this to Excalidraw, the text will arrive as a text element wrapped in a transparent sticky note with the link to the original highlight attached to the sticky note. You can override this behavior by SHIFT+CTRL/CMD pasting\n\n## Fixed\n- BUG: Image caching issue. Changes to the drawing do not reflect immediately in the note when re-opening the drawing [#1297](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1279)\n- Removed underline from links in NativeSVG embed.\n',"1.9.16":"\nI apologize for this extra release. I accidentally built 1.9.15 with an older excalidraw.com package version. Fixes and new features (like the improved grid) are now available again. Otherwise, this is the same as 1.9.15. Sorry for the inconvenience.\n","1.9.15":"\n## New\n- There is now a search box in the Excliadraw Script Store. I categorized the scripts and added keywords to help easier navigation.\n\n## Fixed\n- The theme of the embedded Markdown document did not always honor plugin settings. With some themes, it worked, with others (including the default Obsidian theme, it didn't). \n","1.9.14":`\n# Fixed\n- **Dynamic Styling**: Excalidraw ${String.fromCharCode(96)}Plugin Settings/Display/Dynamic Styling${String.fromCharCode(96)} did not handle theme changes correctly.\n- **Section References**: Section Headings that contained a dot (e.g. #2022.01.01) (or other special characters) did not work when focusing markdown embeds to a section. [#1262](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1262)\n- **PNG Export**: When using images from the web (i.e. based on URL and not a file from your Vault), embedding the Excalidraw file into a markdown document as PNG, or exporting as PNG failed. This is because due to browser cross-origin restrictions, Excalidraw is unable to access the image. In such cases, a placeholder will be included in the export, but the export will not fail, as until now.\n\n# New in ExcalidrawAutomate\n- ${String.fromCharCode(96)}getActiveEmbeddableViewOrEditor${String.fromCharCode(96)} will return the active editor and file in case of a markdown document or the active leaf.view for other files (e.g. PDF, MP4 player, Kanban, Canvas, etc) of the currently active embedded object. This function can be used by plugins to check if an editor is available and obtain the view or editor to perform their actions. Example: [package.json](https://github.com/zsviczian/excalibrain/blob/2056a021af7c3a53ed08203a77f6eae304ca6e39/package.json#L23), [Checking for EA](https://github.com/zsviczian/excalibrain/blob/2056a021af7c3a53ed08203a77f6eae304ca6e39/src/excalibrain-main.ts#L114-L127), and [Running the function](https://github.com/zsviczian/excalibrain/blob/2056a021af7c3a53ed08203a77f6eae304ca6e39/src/excalibrain-main.ts#L362-L399)\n\n${String.fromCharCode(96,96,96)}typescript\npublic getActiveEmbeddableViewOrEditor (view?:ExcalidrawView): {view:any}|{file:TFile, editor:Editor}|null;\n${String.fromCharCode(96,96,96)}\n`,"1.9.13":`\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/opLd1SqaH_I" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n# New\n- **Templater support**: You can now execute Templater scripts on an embedded Markdown document when the document is active for editing\n- **Interactive image-embeds**: I added a new image embed option "SVG Native". In "SVG Native" mode embedded items such as videos, webpages, and links (including links within the Vault) work.\n- **Anchored image resizing**: When you embed an Excalidraw drawing using the Anchor to 100% option, resizing the image will be disabled.\n\n# Fixed\n- when opening a new document in the Excalidraw view while a markdown document was open for editing in an embeddable, Excalidraw terminated with errors\n- shift-click to select multiple elements\n- dynamic styling when canvas background with transparent\n \n# New in ExcalidrawAutomate\n- added openState to the ${String.fromCharCode(96)}openFileInNewOrAdjacentLeaf${String.fromCharCode(96)}. For details see: [OpenViewState](https://github.com/obsidianmd/obsidian-api/blob/f86f95386d439c19d9a77831d5cac5748d80e7ec/obsidian.d.ts#L2686-L2695)\n${String.fromCharCode(96,96,96)}typescript\nopenFileInNewOrAdjacentLeaf(file: TFile, openState?: OpenViewState): WorkspaceLeaf\n${String.fromCharCode(96,96,96)}\n`,"1.9.12":`\n## New\n- If you create a Text Element that includes only a transclusion e.g.: ${String.fromCharCode(96)}![[My Image.png]]${String.fromCharCode(96)} then excalidraw will automatically replace the transclusion with the embedded image.\n- New Excalidraw splash screen icon contributed by Felix Häberle. 😍\n\n<div class="excalidraw-image-wrapper">\n<img src='https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/excalidraw-sword-mini.png'/>\n</div>\n\n## Fixed\n- Popout windows behaved inconsistently losing focus at the time when a markdown file was embedded. Hopefully, this is now working as intended.\n- A number of small fixes that will also improve the ExcaliBrain experience\n`,"1.9.11":"\n# New\n- I added 2 new command palette actions: 1) to toggle frame clipping and 2) to toggle frame rendering.\n\n# Updated\n- I released a minor update to the slideshow script. Frame sequence (Frame 1, 2, 3, ...) will now be displayed in proper order. Frames will be hidden during the presentation (this was there before, but there was a change to excalidraw.com that broke this feature of the slideshow script).\n\n# Fixed: \n- Excalidraw Automate error introduced with 1.9.10 - when elements are repositioned to cursor and no ExcalidrawView is active\n","1.9.10":'\n## New\n- @mazurov added a new script: [Ellipse Selected Elements](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Ellipse%20Selected%20Elements.md)\n\n## Fixed\n- **Image Saving Error**: Previously, inserting an image from Firebase Storage or other URLs could result in an error that prevented the entire drawing from being saved. I have now improved the error handling and image fetching from the web, ensuring smooth image insertion and saving. \n- **Text Search Bug**: There was an issue where text search failed when frames had default names like "Frame 1," "Frame 2," etc. This has been resolved, and now the text search works correctly in such cases. ([#1239](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1239)) \n- **Image Positioning Fix**: An annoying bug caused the image to jump after inserting it using the "Insert Image" command palette action. I\'ve fixed this issue, and now the image behaves as expected when positioning it for the first time.\n',"1.9.9":`\n## ⚠️⚠️ IMPORTANT: PLEASE READ ⚠️⚠️\n\nI updated embedded frames for compatibility with excalidraw.com. To ensure everything works smoothly:\n\n🔄 Update Excalidraw on all your devices.\n\nThis will avoid any issues with converted files and let you enjoy the new features seamlessly.\n\nThank you for your understanding. If you have any questions, feel free to reach out.\n\n---\n\n## Fixed:\n- PNG image caching resulting in broken images after Obsidian restarts\n- SVG export now displays embedded iframes with the correct embed link (note this feature only works when you open the SVGs in a browser outside Obsidian).\n\n## Updated / fixed in Excalidraw Automate\n- I updated ${String.fromCharCode(96)}lib/ExcalidrawAutomate.d.ts${String.fromCharCode(96)} and published a new version of obsidian-excalidraw-plugin type library to npmjs.\n- Added new ExcalidrawAutomate functions: ${String.fromCharCode(96)} addEmbeddable()${String.fromCharCode(96)}, ${String.fromCharCode(96)}DEVICE${String.fromCharCode(96)}, ${String.fromCharCode(96)}newFilePrompt()${String.fromCharCode(96)}, and ${String.fromCharCode(96)}getLeaf()${String.fromCharCode(96)}\n- ${String.fromCharCode(96)}addImage${String.fromCharCode(96)} and ${String.fromCharCode(96)}addElementsToView${String.fromCharCode(96)} were extended with 1-1 additional optional parameter. As a result of ${String.fromCharCode(96)}shouldRestoreElements${String.fromCharCode(96)} defaulting to false, all elements in the scene will no longer be updated (iframes will not blink) when you add elements via script.\n- There is a new event hook: ${String.fromCharCode(96)}onPasteHook${String.fromCharCode(96)}. This will be called whenever the user pastes something to the canvas. You can use this callback if you want to do something additional during the onPaste event. In case you want to prevent the Excalidraw default onPaste action you must return false\n\n${String.fromCharCode(96,96,96)}typescript\nasync addImage(\n topX: number,\n topY: number,\n imageFile: TFile | string,\n scale: boolean = true,\n anchor: boolean = true,\n): Promise<string>;\n\nasync addElementsToView(\n repositionToCursor: boolean = false,\n save: boolean = true,\n newElementsOnTop: boolean = false,\n shouldRestoreElements: boolean = false,\n): Promise<boolean>;\n\n onPasteHook: (data: {\n ea: ExcalidrawAutomate;\n payload: ClipboardData;\n event: ClipboardEvent;\n excalidrawFile: TFile;\n view: ExcalidrawView;\n pointerPosition: { x: number; y: number };\n }) => boolean = null;\n\naddEmbeddable(\n topX: number,\n topY: number,\n width: number,\n height: number,\n url?: string,\n file?: TFile\n): string;\n\nget DEVICE(): DeviceType;\n\nnewFilePrompt(\n newFileNameOrPath: string,\n shouldOpenNewFile: boolean,\n targetPane?: PaneTarget,\n parentFile?: TFile\n): Promise<TFile | null>;\n\ngetLeaf(\n origo: WorkspaceLeaf,\n targetPane?: PaneTarget\n): WorkspaceLeaf;\n${String.fromCharCode(96,96,96)}\n`,"1.9.8":'\n## New Features\n- Zoom to heading and block in markdown frames.\n- Added an iframe menu that allows users to change heading/block zoom, center the element, and open it in the browser.\n- Replaced twitframe with platform.twitter for tweets. The "Read more" and "Reply" buttons now work. Embedded tweets will honor theme settings.\n\n## Bug Fixes\n- Fixed an issue where embedded markdown frames disappeared in fullscreen mode. [#1197](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1197)\n- Resolved a problem with the "Embed Markdown as Image" feature where changes to embed properties were not always honored. [#1201](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1201)\n- When inserting any file from the Vault and embedding a Markdown document as an image, the embed now correctly honors the section heading if specified. [#1200](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1200)\n- SVG and PNG autoexport now function properly when closing a popout window. [#1209](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1209)\n- Many other minor fixes\n',"1.9.7":`\n## Fixed:\n\n- Fixed an issue where using the color picker shortcut would cause the UI to disappear in mobile view mode.\n- You can now add YouTube playlists to iframes.\n- Fixed a bug where the "Add any file" dropdown suggester opened in the main Obsidian workspace instead of the popout window when Excalidraw was running. ([#1179](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1191))\n- Made some improvements to the logic of opening in the adjacent pane, although it is still not perfect.\n- Fixed an issue where Obsidian sync would result in the loss of the last approximately 20 seconds of work. Excalidraw's handling of sync is now fixed. ([#1189](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1189))\n\n## New:\n\n- Introducing Image Cache: Excalidraw will now cache rendered images embedded in Markdown documents, which will enhance the markdown rendering experience.\n- Backup Cache: Excalidraw now stores a backup on your device when saving, in case the application is terminated during a save operation. If you are using sync, you can find the latest backup on the device you last used to edit your drawing.\n- Added ${String.fromCharCode(96)}frame=${String.fromCharCode(96)} parameter to image references. ([#1194](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1194)) For more details about this feature, check out this [YouTube video](https://youtu.be/yZQoJg2RCKI).\n- When an SVG image from Draw.io is embedded in Excalidraw, clicking the image will open the file in the [Diagram plugin](https://github.com/zapthedingbat/drawio-obsidian) (if available).\n- Added the [Create DrawIO file](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Create%20DrawIO%20file.md) Excalidraw Automate Script to the library, which allows you to create a new draw.io drawing and add it to the current Excalidraw canvas.\n\n## New in ExcalidrawAutomate\n\n${String.fromCharCode(96,96,96)}typescript\nasync getAttachmentFilepath(filename: string): Promise<string>\n${String.fromCharCode(96,96,96)}\n\nThis asynchronous function retrieves the filepath to a new file, taking into account the attachments preference settings in Obsidian. It creates the attachment folder if it doesn't already exist. The function returns the complete path to the file. If the provided filename already exists, the function will append '_[number]' before the extension to generate a unique filename.\n\n${String.fromCharCode(96,96,96)}typescript\ngetElementsInFrame(frameElement: ExcalidrawElement, elements: ExcalidrawElement[]): ExcalidrawElement[];\n${String.fromCharCode(96,96,96)}\n\nThis function returns the elements contained within a frame.\n`,"1.9.6":`\n## Fixed\n- help shortcuts are really hard to see [#1176](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1179)\n- link icons not visible on elements after 1.9.5 release (reported on Discord)\n- PDFs in iFrames will now respect the ${String.fromCharCode(96)}[[document.pdf#page=155]]${String.fromCharCode(96)} format\n- Keyboard shortcuts were not working properly on external drop. Check [updated keyboard map](https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/excalidraw-modifiers.png)\n\n<a href="https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/excalidraw-modifiers.png"><img src="https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/excalidraw-modifiers.png" width="100%" alt="Keyboard map"/></a>\n`,"1.9.5":`\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/ICpoyMv6KSs" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## New\n- IFrame support: insert documents from your Obsidian Vault and insert youtube, Vimeo, and generally any website from the internet\n- Frame support: use frames to group items on your board\n\n## New in ExcalidrawAutomate\n- selectElementsInView now also accepts a list of element IDs\n- new addIFrame function that accepts an Obsidian file or a URL string\n${String.fromCharCode(96,96,96)}typescript\nselectElementsInView(elements: ExcalidrawElement[] | string[]): void;\naddIFrame(topX: number, topY: number, width: number, height: number, url?: string, file?: TFile): string;\n${String.fromCharCode(96,96,96)}\n`,"1.9.3":'\n## New from Excalidraw.com\n- Eyedropper tool. The eyedropper is triggered with "i". If you hold the ALT key while clicking the color it will set the stroke color of the selected element, else the background color.\n- Flipping multiple elements\n- Improved stencil library rendering performance + the stencil library will remember the scroll position from the previous time it was open\n\n## Fixed\n- Replaced command palette and tab export SVG/PNG/Excalidraw actions with "export image" which will take the user to the export image dialog.\n',"1.9.2":`\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/diBT5iaoAYo" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## New\n- Excalidraw.com Color Picker redesign [#6216](https://github.com/excalidraw/excalidraw/pull/6216)\n- Updated palette loader script in the script library\n- New ExcalidrawAutomate API to load Elements and AppState from another Excalidraw file.\n${String.fromCharCode(96,96,96)}typescript\nasync getSceneFromFile(file: TFile): Promise<{elements: ExcalidrawElement[]; appState: AppState;}>\n${String.fromCharCode(96,96,96)}\n`,"1.9.1":'\n## Updates from Excalidraw.com\n- "Unlock all elements" - new action available via the context menu [#5894](https://github.com/excalidraw/excalidraw/pull/5894)\n- Minor improvements to improve the speed [#6560](https://github.com/excalidraw/excalidraw/pull/6560)\n- Retain Seed on Shift Paste [#6509](https://github.com/excalidraw/excalidraw/pull/6509)\n\n## New/Fixed\n- Clicking on the link handle (top right corner) will open the link in the same window\n- CTRL/CMD click on a link will open the link in a new tab and will focus on the new tab\n- Linking to parts of images. In some cases clicking search results, links, or backlinks did not focus on the right element according to the link. Fixed.\n',"1.9.0":`\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/nB4cOfn0xAs" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## Fixed\n- Embedded images, markdowns, PDFs will load one by one, not in one go after a long wait\n\n## New\n- Embed PDF\n\n## New in ExcalidrawAutomate\n- onFileCreateHook: if set this hook is called whenever a new drawing is created using Excalidraw command palette menu actions. If the excalidraw file is created using Templater or other means, the trigger will not fire. [#1124](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1124)\n${String.fromCharCode(96,96,96)}typescript\n onFileCreateHook: (data: {\n ea: ExcalidrawAutomate;\n excalidrawFile: TFile; //the file being created\n view: ExcalidrawView;\n }) => Promise<void>;\n ${String.fromCharCode(96,96,96)}\n`,"1.8.26":"\n## Fixed\n- Dynamic styling did not pick up correctly\n - the accent color with the default Obsidian theme\n - the drawing theme color with the out of the box, default new drawing (not using a template)\n- The Obsidian tools panel did not pick up user scripts when installing your very first script. A reload of Obsidian was required.\n","1.8.25":'\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/BvYkOaly-QM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## New & improved\n- Multi-link support\n- Updated [Scribble Helper](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Scribble%20Helper.md) script for better handwritten text support. \n - Add links to text elements\n - Creating wrapped text in transparent sticky notes\n - Add text to arrows and lines\n - Handwriting support on iOS via Scribble\n\n## Fixed\n - The long-standing issue of jumping text\n \n',"1.8.24":`\n## Updates from Excalidraw.com\n- fix: color picker keyboard handling not working\n- fix: center align text when bind to the container via context menu\n- fix: split "Edit selected shape" shortcut\n\n## Fixed\n- BUG: Area embed link of svg inside excalidraw embed entire svg instead of area [#1098](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1098)\n\n## New\n- I updated the [Scribble Helper](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Scribble%20Helper.md) script with tons of new features. I am still beta testing the script. I will release a demo video in the next few days.\n\n## New in Excalidraw Automate\n- I added many more configuration options for the scriptEngine utils.inputPrompt function. See [Scribble Helper](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Scribble%20Helper.md) for a demonstration of this new feature.\n${String.fromCharCode(96,96,96)}typescript\n public static async inputPrompt(\n view: ExcalidrawView,\n plugin: ExcalidrawPlugin,\n app: App,\n header: string,\n placeholder?: string,\n value?: string,\n buttons?: { caption: string; tooltip?:string; action: Function }[],\n lines?: number,\n displayEditorButtons?: boolean,\n customComponents?: (container: HTMLElement) => void\n )\n${String.fromCharCode(96,96,96)}`,"1.8.23":'\n## Fixes\n- Fixed palm rejection to prevent unwanted spikes when using the freedraw tool. ([#1065](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1065))\n- Fixed issue where images disappeared when zoomed in. ([#6417](https://github.com/excalidraw/excalidraw/pull/6417))\n- Autosave will now save the drawing when you change the theme from dark to light or vice versa. ([#1080](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1080))\n- Added padding to short LaTeX formulas to prevent cropping. ([#1053](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1053))\n\n## New Features\n- Added a new command palette action: Toggle to invert default binding behavior. This new feature allows you to switch between normal and inverted mode. In normal mode, arrows will bind to objects unless you hold the CTRL/CMD key while drawing the arrow or moving objects. In inverted mode, arrows will not bind to objects unless you hold the CTRL/CMD key while drawing the arrow or moving objects.\n- You can now set a template LaTeX formula in the plugin settings (under experimental features) to be used when creating a new LaTeX formula. ([#1090](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1090))\n- Redesigned the Image Export dialog. I hope dropdowns are now more intuitive than the toggles were.\n- Added the ability to export only the selected part of a drawing. See the Export dialog for more information.\n- Added a zigzag fill easter egg. See a demo of this feature [here](https://twitter.com/excalidraw/status/1645428942344445952?s=61&t=nivKLx2vgl6hdv2EbW4mZg).\n- Added a new expert function: recolor embedded Excalidraw and SVG images (not JPG, PNG, BMP, WEBP, GIF). See a demo of this feature here:\n\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/MIZ5hv-pSSs" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n',"1.8.22":`\n## Fixed\n- Styling of custom pen and script buttons in the side panel was inverted.\n- Minor tweaks to dynamic styling. [see this video to understand dynamic styling](https://youtu.be/fypDth_-8q0)\n\n## New\n- New scripts by @threethan:\n - [Auto Draw for Pen](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Auto%20Draw%20for%20Pen.md): Automatically switches between the select and draw tools, based on whether a pen is being used. Supports most pens including Apple Pencil.\n - [Hardware Eraser Support](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Hardware%20Eraser%20Support.md): Adds support for pen inversion, a.k.a. the hardware eraser on the back of your pen. Supports Windows based styluses. Does not suppoprt Apple Pencil or S-Pen.\n- Added separate buttons to support copying link, area or group references to objects on the drawing. [#1063](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1063). See [this video](https://youtu.be/yZQoJg2RCKI) for more details on how this works.\n- Hover preview will no longer trigger for image files (.png, .svg, .jpg, .gif, .webp, .bmp, .ico, .excalidraw)\n- Minor updates to the [Slideshow](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Slideshow.md) script. You can download the updated script from the Excalidraw script library. The slideshow will now correctly run also when initiated in a popout window. When the drawing is in a popout window, the slideshow will not be full screen, but will only occupy the popout window. If you run the slideshow from the main Obsidian workspace, it will be displayed in full-screen mode.\n- Updated the Icon Library script to now include image keywords under each of the images to allow searching for keywords (CTRL/CMD+F). I've uploaded the new script to [here](https://gist.github.com/zsviczian/33ff695d5b990de1ebe8b82e541c26ad). If you need further information watch this [video](https://youtu.be/_OEljzZ33H8)\n\n## New in ExcalidrawAutomate\n- ${String.fromCharCode(96)}addText${String.fromCharCode(96)} ${String.fromCharCode(96)}formatting${String.fromCharCode(96)} parameter now accepts ${String.fromCharCode(96)}boxStrokeColor${String.fromCharCode(96)} and ${String.fromCharCode(96)}textVerticalAlign${String.fromCharCode(96)} values.\n${String.fromCharCode(96,96,96)}typescript\naddText(\n topX: number,\n topY: number,\n text: string,\n formatting?: {\n wrapAt?: number;\n width?: number;\n height?: number;\n textAlign?: "left" | "center" | "right";\n box?: boolean | "box" | "blob" | "ellipse" | "diamond";\n boxPadding?: number;\n boxStrokeColor?: string;\n textVerticalAlign?: "top" | "middle" | "bottom";\n },\n id?: string,\n ): string;\n${String.fromCharCode(96,96,96)}\n- new ${String.fromCharCode(96)}onFileOpenHook${String.fromCharCode(96)}. If set, this callback is triggered, when an Excalidraw file is opened. You can use this callback in case you want to do something additional when the file is opened. This will run before the file level script defined in the ${String.fromCharCode(96)}excalidraw-onload-script${String.fromCharCode(96)} frontmatter is executed. Excalidraw will await the result of operations here. Handle with care. If you change data such as the frontmatter of the underlying file, I haven't tested how it will behave.\n${String.fromCharCode(96,96,96)}typescript\nonFileOpenHook: (data: {\n ea: ExcalidrawAutomate;\n excalidrawFile: TFile; //the file being loaded\n view: ExcalidrawView;\n}) => Promise<void>;\n${String.fromCharCode(96,96,96)}`,"1.8.21":'\n## Quality of Life improvements\n- Dynamic Styling (see plugin settings / Display). When Dynamic Styling is enabled it fixes Excalidraw issues with the Minimal Theme\n- New "Invert Colors" script\n\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/fypDth_-8q0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n### Note\nThe few of you, that are using the Dynamic Styling Templater script, please remove it and restart Obsidian.\n',"1.8.20":"\n## Fixed\n- Excalidraw froze Obsidian in certain rare situations [#1054](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1054)\n- File loading error [#1062](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1062)\n- Embedded images in markdown documents no longer have the line on the side. Image sizing works better. [#1059](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1059)\n- Locked elements will not show a hover preview [#1060](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1060)\n- CTRL/CMD + K correctly triggers add link [#1056](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1056)\n\n## New\n- Grid color adjusts to the view background color\n\nI'm sorry, but the sticky note editing issue on Android with the on-screen keyboard has still not been resolved. If you also experience this error, please help raise the priority with the core Excalidraw team by commenting on this issue: [#6330](https://github.com/excalidraw/excalidraw/issues/6330)\n","1.8.19":"\n## Fixed: Text wrapping issue in sticky notes\n\nI fixed an issue where text would wrap differently and words would disappear during text editing in sticky notes. You can check out the details on [GitHub #6318](https://github.com/excalidraw/excalidraw/issues/6331).\n\nI am aware of three additional issues related to container text editing that are still open. I apologize for any inconvenience caused by the recent change in how text size is calculated on Excalidraw.com, which has had a knock-on effect on Obsidian. I am actively working to address the following issues:\n\n- Pinch zooming while editing text in a text container [GitHub #6331](https://github.com/excalidraw/excalidraw/issues/6331)\n- Container text jumps on edit on Android with on-screen keyboard [GitHub #6330](https://github.com/excalidraw/excalidraw/issues/6330)\n- Shadow text when editing text containers without a keyboard on iOS [GitHub #6329](https://github.com/excalidraw/excalidraw/issues/6329)\n\nThank you for your patience while I work on resolving these issues.\n","1.8.18":`\n## Fixed\n- Text scaling issue introduced in 1.8.17\n- [#1043](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1043): Error handling when ${String.fromCharCode(96)}onCanvasColorChangeHook${String.fromCharCode(96)} is executed. This is used in the [Dynamic Styling Script](https://youtu.be/LtR04fNTKTM). \n`,"1.8.17":'\n## New from Excalidraw.com\n- Improved text wrapping in the ellipse and diamond shapes [6172](https://github.com/excalidraw/excalidraw/pull/6172)\n\n## New\n- Updated slideshow script\n\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/mQ2eLk_0TV4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## Fixed: \n- "Save to..." in the Stencil Library menu now works as expected [#1032](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1032)\n',"1.8.16":'\n**!!! Modifier keys have changed, please review the table below !!!**\n[Click this to see the new shortcuts overview image](https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/excalidraw-modifiers.png)\n\n## Fixed \n- This version was extensively tested and developed on MacOS to remove usability issues.\n- New command palette action to create a new drawing in a new tab\n- Modifier keys to open links in the active window, splitting the current view to the right, in a new tab, or in a popout window now behave consistently both in Excalidraw and when clicking a drawing that is embedded in a markdown note.\n- Drag & Drop properly works from within Obsidian, from a web browser, and from the OS file explorer\n\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/9HlipSIzRhc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n',"1.8.14":"\n## Fixed\n- text element link gets deleted when the drawing is reloaded\n","1.8.13":'\n## Fixed\n- When changing a text element in markdown mode, the change seem to have showed up when switching back to Excalidraw mode, but then lost these changes when loading the file the next time.\n- Scrolling through a page that has embedded drawings on Obsidian Mobile accidently opens the drawing in Excalidraw when touching the image. Now you need to press and hold to open the image in Excalidraw. [#1003](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1003)\n- The scrollbar is no longer visible when presenting using the SlideShow script\n- Stroke properties could not be changed when custom pen settings had "Stroke & fill applies to: All shapes". It works now.\n\n## QoL\n- Custom pens will remember the stroke changes until you press the pen preset button again.\n - This is a bit hard to explain, let me try... Essentially, when you use a custom pen, it will keep the changes you made to the pen (like changing the stroke width) until you press the pen-prereset button again. So, for example, if you\'re using a mind mapping custom pen and change its color, and then switch to a different tool like text, when you switch back to the freedraw tool using the Excalidraw tools panel, the pen will still have the same color you set earlier, but if you press the mind mapping pen-preset button, it will default back to your custom pen settings including your preset color.\n- Added new buttons to load current stroke color and background color in the pen settings dialog. Also added an edit box so you can configure any valid color string (including with transparency) for pen stroke and background colors. [#991](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/991)\n',"1.8.11":'\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/rBarRfcSxNo" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n# New\n- Support for referencing images from the internet in Excalidraw drawings, including YouTube thumbnail support. [#913](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/913)\n - Link to images on the internet without creating a copy in your Vault by holding down the CTRL key while dropping the link or image.\n - Automatic conversion of image URLs and YouTube links into image elements with original links added as a link on the element when pasting. Note, that if you only want to paste the plain text link (not the image), first double-click the canvas to start a new text element, then paste the link.\n- Two new options added to plugin settings:\n - Make mouse wheel zoom by default [#474](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/474)\n - Allow pinch zoom in pen mode [#828](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/828)\n- Update to the [Set Grid](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Set%20Grid.svg) script now saves the grid setting for the current file.\n',"1.8.10":'\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/wTtaXmRJ7wg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n# QoL improvements\n- You can structure icons in the Obsidian tools panel by moving scripts to folders\n![image|300](https://user-images.githubusercontent.com/14358394/212389592-306130d0-209a-49df-99bb-c538f2155b23.png)\n- I added useful actions to the hamburger menu in both tray-mode and normal-mode. \n![image|150](https://user-images.githubusercontent.com/14358394/212534508-9107fd19-27ab-4415-8abc-bc97c73afc0b.png)\n- I added a new Export Image dialog. You can access the new export screen from the hamburger-menu\n![image|200](https://user-images.githubusercontent.com/14358394/212534654-7a479e23-8d5d-452e-9a18-a9896278aa27.png)\n- Links in help now point to Obsidian-Excalidraw relevant content.\n- I added a welcome screen\n![image|150](https://user-images.githubusercontent.com/14358394/212534568-3cd1e8a1-5b20-4a30-96e4-40d7dac57e33.png)\n- I updated the alternative dark mode / dynamic styling [script](https://gist.github.com/zsviczian/c7223c5b4af30d5c88a0cae05300305c)\n',"1.8.9":"\n# Minor QoL improvements\n- When you open a second drawing in the same Excalidraw view (i.e. by navigating a link) and make a change to this drawing, and then press UNDO, the entire drawing disappeared. Redo brought the image back, however, this behavior was frustrating. Not anymore...\n- On iPad\n - when you open the command palette, autozoom resized the drawing. If the Obsidian command palette or some other modal window is shown Excalidraw will not resize the view.\n - when you add a link to the drawing using the Command Palette, sometimes the link was added in a far corner of the drawing outside the current view area. This should be fixed now.","1.8.8":`\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/uZz5MgzWXiM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n# New\n- The plugin now includes support for [Perfect Freehand](https://perfect-freehand-example.vercel.app/) pen-options. I've also added a new [Alternative Pens](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Alternative%20Pens.md) script.\n- Embed scene in exported PNG and SVG images [#860](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/860). This means that the export will be a normal PNG or SVG image with the added functionality that if someone loads the image into excalidraw.com it will open as a normal excalidraw file.\n - I've added 2 new Command Palette actions (export PNG, export SVG with embedded scene).\n - If you SHIFT click ${String.fromCharCode(96)} Save as PNG (or SVG)${String.fromCharCode(96)} in the workspace-tab menu, Excalidraw will embed the scene in the export.\n- I updated the [Organic Line](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Organic%20Line.md) script. It has an improved thick-to-thin look and a new thin-to-thick-to-thin line type.\n\n# Fixed\n- Intelligent image width setting [#955](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/955). Before this change, when the embedded image was small, the image would be extended to meet the image width setting in plugin settings. From now on, if the image is smaller than max-width, it will only extend to max-width. You can still set 100% width using custom CSS. See more on that [here](https://github.com/zsviczian/obsidian-excalidraw-plugin#embedded-images).\n\n# New in ExcalidrawAutomate\n- I added the ${String.fromCharCode(96)} plaintext${String.fromCharCode(96)} parameter to ${String.fromCharCode(96)}ExcalidrawAutomate.create${String.fromCharCode(96)} . Using this, you can add some text below the frontmatter but above the ${String.fromCharCode(96)}# Text Elements${String.fromCharCode(96)} section. Use this for example to add metadata to your file. (e.g. I use this in my Daily Quote template to add a Dataview field for the ${String.fromCharCode(96)}Author::${String.fromCharCode(96)} and add the quote with a standard block reference, so I can easily reference it in other files. I also add the ${String.fromCharCode(96)}#quote${String.fromCharCode(96)} tag to the file using this.)\n- The script running in the ScriptEngine now also receives the ${String.fromCharCode(96)}TFile${String.fromCharCode(96)} object for the script itself. You can access this object during execution via the ${String.fromCharCode(96)}utils.scriptFile${String.fromCharCode(96)} variable. \n`,"1.8.7":'\n## New from Excalidraw.com\n- Support shrinking text containers to their original height when text is removed [#6025](https://github.com/excalidraw/excalidraw/pull/6025)\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://user-images.githubusercontent.com/14358394/209404092-579d54e9-7003-48ef-8b82-84be08ba6246.mp4" title="Demo" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## Fixed\n- removed the white background when editing arrow-label [#6033](https://github.com/excalidraw/excalidraw/pull/6033)\n- Minor style tweaks\n - for embedding Excalidraw into Obsidian Canvas. e.g. dragging no longer accidentally creates an image copy of the drawing, and\n - style tweaks on the Excalidraw canvas\n\n## New\n- If you set a different text color and sticky note border color, now if you change the border color, the text color will not be changed.\n',"1.8.6":`\n## New from Excalidraw.com:\n- Better default radius for rectangles [#5553](https://github.com/excalidraw/excalidraw/pull/5553). Existing drawings will look unchanged, this applies only to new rectangles.\n![image|200](https://user-images.githubusercontent.com/5153846/206264345-59fd7436-e87b-4bc9-ade8-9e6f6a6fd8c1.png)\n> [!attention]- ExcalidrawAutomate technical details\n> - ${String.fromCharCode(96)}strokeSharpness${String.fromCharCode(96)} is now deprecated\n> - use roundness instead\n> - ${String.fromCharCode(96)}roundness === null${String.fromCharCode(96)} is legacy ${String.fromCharCode(96)}strokeSharpness = "sharp"${String.fromCharCode(96)}\n> - ${String.fromCharCode(96)}roundness = { type: RoundnessType; value?: number }${String.fromCharCode(96)}\n> - type: 1, LEGACY, type:2 PROPORTIONAL_RADIUS, type:3 ADAPTIVE_RADIUS: 3\n> - value:\n> - Radius represented as % of element's largest side (width/height).\n> DEFAULT_PROPORTIONAL_RADIUS = 0.25;\n> - Fixed radius for the ADAPTIVE_RADIUS algorithm. In pixels.\n> DEFAULT_ADAPTIVE_RADIUS = 32;\n\n## New\n- For Obsidian 1.1.6 and above\n - Improved embedding into Obsidian Canvas\n - Improved embedding into Markdown documents\n- Added setting under ${String.fromCharCode(96)}Display/Default mode when opening Excalidraw${String.fromCharCode(96)} to always open the drawing in view mode on Mobile, but in normal mode on desktop. [#939](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/939)\n\n## Fixed\n- Zoom reset tooltip appears twice [#942](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/942)\n- Hid export library from library menu as it does not work due to Obsidian limitations. Use the command palette export library instead.\n- Arrow with label did not get exported and embedded correctly [#941](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/941)\n![image|200](https://user-images.githubusercontent.com/22638687/207845868-b352ddb1-7994-4f13-a0b2-f2e19bd72935.png)\n`,"1.8.4":'\n## New from Excalidraw.com\n- Labels on Arrows!!! [#5723](https://github.com/excalidraw/excalidraw/pull/5723)\n - To add a label press "Enter" or "Double click" on the arrow\n - Use "Cmd/Ctrl+double click" to enter the line editor\n\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://user-images.githubusercontent.com/11256141/192515552-6b6ddc06-5de0-4931-abdd-6ac3a804656d.mp4" title="Demo" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## New\n- **Changed behavior**: In the Obsidian markdown editor clicking an Excalidraw image will not open the image (to avoid accidentally opening the image on a tablet). To open a drawing for editing in Excalidraw double click or long-tap on it. [#920](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/920)\n\n## Fixed \n- Text stroke color is not honored when pasting a HEX color string to an Excalidraw canvas open in an Obsidian popout window [#921](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/921)\n- The new [multi-line >> multi-element paste behavior](https://github.com/excalidraw/excalidraw/pull/5786) introduced in the previous release did not work as expected in Obsidian. Now it does.\n',"1.8.2":`\nIntroducing the [Excalidraw Slideshow Script](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Slideshow.md) - available in the script store\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/HhRHFhWkmCk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## Fixed\n- Obsidian tools panel gets misplaced after switching Obsidian workspace tabs\n\n## New in ExcalidrawAutomate\n- changed ${String.fromCharCode(96)}viewToggleFullScreen(forceViewMode: boolean = false): void${String.fromCharCode(96)}: the function will toggle view mode on when going to full screen and view mode off when terminating full screen.\n- new functions\n${String.fromCharCode(96,96,96)}typescript\nsetViewModeEnabled(enabled: boolean):void;\nviewUpdateScene(\n scene: {\n elements?: ExcalidrawElement[];\n appState?: AppState;\n files?: BinaryFileData;\n commitToHistory?: boolean;\n },\n restore: boolean = false,\n ):void;\nviewZoomToElements(\n selectElements: boolean,\n elements: ExcalidrawElement[]\n ):void;\n${String.fromCharCode(96,96,96)}\n\n`,"1.8.1":`\n## New and fixes from Excalidraw.com\n- New text paste behavior. Pasting multiline text will generate separate text elements unless you hold down the shift button while pasting [#5786](https://github.com/excalidraw/excalidraw/pull/5786)\n- line editor fixes [#5927](https://github.com/excalidraw/excalidraw/pull/5927)\n\n## Fixed\n- The Command Palette "Insert link" action now inserts the new link at the top drawing layer, not at the bottom.\n- Updated, hopefully, better organized, Plugin Readme.\n\n## New\n- Second attempt at moving to React 18. This upgrade is required to maintain alignment with the core Excalidraw product and to continue to benefit from Excalidraw.com enhancements.\n- Added options to Plugin Settings\n - to disable autozoom when loading a drawing for the first time [#907](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/907)\n - to modify autosave interval. You can now set an autosave interval for desktop and for mobile [#888](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/888)\n\n## New in ExcalidrawAutomate\n- Published the obsidian_module on the ExcalidrawAutomate object. ${String.fromCharCode(96)}ExcalidrawAutomate.obsidian${String.fromCharCode(96)}. Publishing this object will give script developers increased flexibility and control over script automation.\n`,"1.8.0":'\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/7gu4ETx7zro" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## New\n- Optical Character Recognition (OCR). Introducing the MVP (minimum viable product) release of the integration of [Taskbone](https://taskbone.com) OCR into Excalidraw. See the new scan button on the Obsidian tools panel.\n- New and improved full-screen mode\n - Activate using the Obsidian tools panel, the Obsidian Command Palette, or the Alt+F11 shortcut\n - The ESC key no longer closes full-screen\n - Full-screen mode works properly on iOS as well\n- Improved Icon visibility on the Obsidian tools panel\n- Added 3 additional buttons to the tools panel\n - Force save\n - Open link (useful on Mobile devices). In the case of LaTeX equations, the button opens the equation properties.\n - Open the link in a new pane. In the case of embedded markdown documents, the button opens the embed properties.\n\n## Fixed\n- The [deconstruct selected elements into a new drawing](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Deconstruct%20selected%20elements%20into%20new%20drawing.md) script now also correctly decomposes transcluded text elements.\n',"1.7.30":"\nFix:\n- Forcing the embedded image to always scale to 100% (a feature introduced in [1.7.26](https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.7.26)) scaled the embedded excalidraw drawings incorrectly on devices with a pixel ratio of 2 or 3 (e.g. iPads). This is now fixed, however, this fix might retrospectively impact drawings that use this feature. Sorry for that.\n","1.7.29":"\n- This is a big update that accommodates the **UI redesign** on Excalidraw.com [#5780](https://github.com/excalidraw/excalidraw/pull/5780). The change on the surface may seem superficial, however, I had to tweak a number of things to make it work in Obsidian. I hope I found everything that broke and fixed it, if not, I'll try to fix it quickly...\n- This update also comes with changes under the hood that **fix issues with Excalidraw Automate** - paving the way for further scripts, plus some smaller bug fixes.\n- I **reworked text wrapping**. In some cases, text wrapping in SVG exports looked different compared to how the text looked in Excalidraw. This should now be fixed.\n- If you are using the **Experimental Dynamic Styling** of the Excalidraw Toolbar, then I recommend updating your styling script following base on [this](https://gist.github.com/zsviczian/c7223c5b4af30d5c88a0cae05300305c)\n","1.7.27":'## New\n- Import SVG drawing as an Excalidraw object. [#679](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/679)\n\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/vlC1-iBvIfo" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## Fixed\n- Large drawings freeze on the iPad when opening the file. I implemented a workaround whereby Excalidraw will avoid zoom-to-fit drawings with over 1000 elements. [#863](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/863)\n- Reintroduced copy/paste to the context menu\n',"1.7.26":'## Fixed\n- Transcluded block with a parent bullet does not embed sub-bullet [#853](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/853)\n- Transcluded text will now exclude ^block-references at end of lines\n- Phantom duplicates of the drawing appear when "zoom to fit" results in a zoom value below 10% and there are many objects on the canvas [#850](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/850)\n- CTRL+Wheel will increase/decrease zoom in steps of 5% matching the behavior of the "+" & "-" zoom buttons.\n- Latest updates from Excalidarw.com\n - Freedraw flip not scaling correctly [#5752](https://github.com/excalidraw/excalidraw/pull/5752)\n - Multiple elements resizing regressions [#5586](https://github.com/excalidraw/excalidraw/pull/5586)\n\n## New - power user features\n- Force the embedded image to always scale to 100%. Note: this is a very niche feature with a very particular behavior that I built primarily for myself (even more so than other features in Excalidraw Obsidian - also built primarily for myself 😉)... This will reset your embedded image to 100% size every time you open the Excalidraw drawing, or in case you have embedded an Excalidraw drawing on your canvas inserted using this function, every time you update the embedded drawing, it will be scaled back to 100% size. This means that even if you resize the image on the drawing, it will reset to 100% the next time you open the file or you modify the original embedded object. This feature is useful when you decompose a drawing into separate Excalidraw files, but when combined onto a single canvas you want the individual pieces to maintain their actual sizes. I use this feature to construct Book-on-a-Page summaries from atomic drawings.\n- I added an action to the command palette to temporarily disable/enable Excalidraw autosave. When autosave is disabled, Excalidraw will still save your drawing when changing to another Obsidian window, but it will not save every 10 seconds. On a mobile device (but also on a desktop) this can lead to data loss if you terminate Obsidian abruptly (i.e. swipe the application away, or close Obsidian without first closing the drawing). Use this feature if you find Excalidraw laggy.'};class ReleaseNotes extends obsidian_module.Modal{constructor(e,A,t){super(e),this.plugin=A,this.version=t}onOpen(){var e;this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText(`Welcome to Excalidraw ${null!==(e=this.version)&&void 0!==e?e:""}`),this.createForm()}async onClose(){this.contentEl.empty(),await this.plugin.loadSettings(),this.plugin.settings.previousRelease=PLUGIN_VERSION,await this.plugin.saveSettings()}async createForm(){let e=this.plugin.settings.previousRelease;e=this.version===e?"0.0.0":e;const A=this.version?Object.keys(RELEASE_NOTES).filter((A=>"Intro"===A||isVersionNewerThanOther(A,e))).map((e=>`${"Intro"===e?"":`# ${e}\n`}${RELEASE_NOTES[e]}`)).slice(0,10).join("\n\n---\n"):FIRST_RUN;await obsidian_module.MarkdownRenderer.renderMarkdown(A,this.contentEl,"",this.plugin),this.contentEl.createEl("p",{text:""},(e=>{e.style.textAlign="right",e.createEl("button",{text:"Close"}).onclick=()=>this.close()}))}}class ExportDialog extends obsidian_module.Modal{constructor(e,A,t){super(app),this.plugin=e,this.view=A,this.file=t,this.dirty=!1,this.hasSelectedElements=!1,this.ea=getEA(this.view),this.api=this.ea.getExcalidrawAPI(),this.padding=getExportPadding(this.plugin,this.file),this.scale=getPNGScale(this.plugin,this.file),this.theme=getExportTheme(this.plugin,this.file,this.api.getAppState().theme),this.boundingBox=this.ea.getBoundingBox(this.ea.getViewElements()),this.embedScene=!1,this.exportSelectedOnly=!1,this.saveToVault=!0,this.transparent=!getWithBackground(this.plugin,this.file),this.saveSettings=!1}onOpen(){this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText("Export Image"),this.hasSelectedElements=this.view.getViewSelectedElements().length>0,this.selectedOnlySetting.setVisibility(this.hasSelectedElements)}async onClose(){this.dirty=this.saveSettings}async createForm(){let e,A;this.contentEl.createEl("h1",{text:"Image settings"}),this.contentEl.createEl("p",{text:"Transparency only affects PNGs. Excalidraw files can only be exported outside the Vault. PNGs copied to clipboard may not include the scene."});const t=()=>{const e=Math.round(this.scale*this.boundingBox.width+2*this.padding),A=Math.round(this.scale*this.boundingBox.height+2*this.padding);return fragWithHTML(`The lager the scale, the larger the image.<br>Scale: <b>${this.scale}</b><br>Image size: <b>${e}x${A}</b>`)},i=()=>fragWithHTML(`Current image padding is <b>${this.padding}</b>`);A=new obsidian_module.Setting(this.contentEl).setName("Image padding").setDesc(i()).addSlider((n=>{n.setLimits(0,50,1).setValue(this.padding).onChange((n=>{this.padding=n,e.setDesc(t()),A.setDesc(i())}))})),e=new obsidian_module.Setting(this.contentEl).setName("PNG Scale").setDesc(t()).addSlider((A=>A.setLimits(.5,5,.5).setValue(this.scale).onChange((A=>{this.scale=A,e.setDesc(t())})))),new obsidian_module.Setting(this.contentEl).setName("Export theme").addDropdown((e=>e.addOption("light","Light").addOption("dark","Dark").setValue(this.theme).onChange((e=>{this.theme=e})))),new obsidian_module.Setting(this.contentEl).setName("Background color").addDropdown((e=>e.addOption("transparent","Transparent").addOption("with-color","Use scene background color").setValue(this.transparent?"transparent":"with-color").onChange((e=>{this.transparent="transparent"===e})))),new obsidian_module.Setting(this.contentEl).setName("Save or one-time settings?").addDropdown((e=>e.addOption("save","Save these settings as the preset for this image").addOption("one-time","These are one-time settings").setValue(this.saveSettings?"save":"one-time").onChange((e=>{this.saveSettings="save"===e})))),this.contentEl.createEl("h1",{text:"Export settings"}),new obsidian_module.Setting(this.contentEl).setName("Embed the Excalidraw scene in the exported file?").addDropdown((e=>e.addOption("embed","Embed scene").addOption("no-embed","Do not embed scene").setValue(this.embedScene?"embed":"no-embed").onChange((e=>{this.embedScene="embed"===e})))),DEVICE.isDesktop&&new obsidian_module.Setting(this.contentEl).setName("Where to save the image?").addDropdown((e=>e.addOption("vault","Save image to your Vault").addOption("outside","Export image outside your Vault").setValue(this.saveToVault?"vault":"outside").onChange((e=>{this.saveToVault="vault"===e})))),this.selectedOnlySetting=new obsidian_module.Setting(this.contentEl).setName("Export entire scene or just selected elements?").addDropdown((e=>e.addOption("all","Export entire scene").addOption("selected","Export selected elements").setValue(this.exportSelectedOnly?"selected":"all").onChange((e=>{this.exportSelectedOnly="selected"===e}))));const n=this.contentEl.createDiv({cls:"excalidraw-prompt-buttons-div"});n.createEl("button",{text:"PNG to File",cls:"excalidraw-prompt-button"}).onclick=()=>{this.saveToVault?this.view.savePNG(this.view.getScene(this.hasSelectedElements&&this.exportSelectedOnly)):this.view.exportPNG(this.embedScene,this.hasSelectedElements&&this.exportSelectedOnly),this.close()},n.createEl("button",{text:"SVG to File",cls:"excalidraw-prompt-button"}).onclick=()=>{this.saveToVault?this.view.saveSVG(this.view.getScene(this.hasSelectedElements&&this.exportSelectedOnly)):this.view.exportSVG(this.embedScene,this.hasSelectedElements&&this.exportSelectedOnly),this.close()},n.createEl("button",{text:"Excalidraw",cls:"excalidraw-prompt-button"}).onclick=()=>{this.view.exportExcalidraw(this.hasSelectedElements&&this.exportSelectedOnly),this.close()},DEVICE.isDesktop&&(n.createEl("button",{text:"PNG to Clipboard",cls:"excalidraw-prompt-button"}).onclick=()=>{this.view.exportPNGToClipboard(this.embedScene,this.hasSelectedElements&&this.exportSelectedOnly),this.close()})}}const TOOLS_PANEL_WIDTH=228;class ToolsPanel extends React__namespace.Component{constructor(e){super(e),this.pos1=0,this.pos2=0,this.pos3=0,this.pos4=0,this.penDownX=0,this.penDownY=0,this.previousWidth=0,this.previousHeight=0,this.onRightEdge=!1,this.onBottomEdge=!1;const A=e.view.plugin.getPackage(e.view.ownerWindow).react;this.containerRef=A.createRef(),this.state={visible:e.visible,top:50,left:200,theme:"dark",excalidrawViewMode:!1,minimized:!1,isDirty:!1,isFullscreen:!1,isPreviewMode:!0,scriptIconMap:{}}}updateScriptIconMap(e){this.setState((()=>({scriptIconMap:e})))}setPreviewMode(e){this.setState((()=>({isPreviewMode:e})))}setFullscreen(e){this.setState((()=>({isFullscreen:e})))}setDirty(e){this.setState((()=>({isDirty:e})))}setExcalidrawViewMode(e){this.setState((()=>({excalidrawViewMode:e})))}toggleVisibility(e){this.setTopCenter(e),this.setState((e=>({visible:!e.visible})))}setTheme(e){this.setState((A=>({theme:e})))}setTopCenter(e){this.setState((()=>({left:(this.containerRef.current.clientWidth-228-(e?0:232))/2+this.containerRef.current.parentElement.offsetLeft+(e?0:232),top:64+this.containerRef.current.parentElement.offsetTop})))}updatePosition(e=0,A=0){this.setState((()=>{const{offsetTop:t,offsetLeft:i,clientWidth:n,clientHeight:s}=this.containerRef.current.firstElementChild,a=t-e,o=i-A,{clientWidth:r,clientHeight:l,offsetTop:c,offsetLeft:g}=this.containerRef.current.parentElement;return this.previousHeight=l,this.previousWidth=r,this.onBottomEdge=a>=l-s+c,this.onRightEdge=o>=r-n+g,{top:a<c?c:this.onBottomEdge?l-s+c:a,left:o<g?g:this.onRightEdge?r-n+g:o}}))}render(){return React__namespace.createElement("div",{ref:this.containerRef,className:clsx("excalidraw",{"theme--dark":"dark"===this.state.theme}),style:{width:"100%",height:"100%",position:"absolute",touchAction:"none"}},React__namespace.createElement("div",{className:"Island",style:{top:`${this.state.top}px`,left:`${this.state.left}px`,width:"228px",display:this.state.visible&&!this.state.excalidrawViewMode?"block":"none",height:"fit-content",maxHeight:"400px",zIndex:5}},React__namespace.createElement("div",{style:{height:"26px",width:"100%",cursor:"move"},onClick:e=>{e.preventDefault(),Math.abs(this.penDownX-this.pos3)>5||Math.abs(this.penDownY-this.pos4)>5||this.setState((e=>({minimized:!e.minimized})))},onPointerDown:e=>{const A=e=>{e.preventDefault(),this.pos1=this.pos3-e.clientX,this.pos2=this.pos4-e.clientY,this.pos3=e.clientX,this.pos4=e.clientY,this.updatePosition(this.pos2,this.pos1)},t=()=>{var e,i;null===(e=this.props.view.ownerDocument)||void 0===e||e.removeEventListener("pointerup",t),null===(i=this.props.view.ownerDocument)||void 0===i||i.removeEventListener("pointermove",A)};e.preventDefault(),this.penDownX=this.pos3=e.clientX,this.penDownY=this.pos4=e.clientY,this.props.view.ownerDocument.addEventListener("pointerup",t),this.props.view.ownerDocument.addEventListener("pointermove",A)}},React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 228 26"},React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M40,7 h148 M40,13 h148 M40,19 h148"}))),React__namespace.createElement("div",{className:"Island App-menu__left scrollbar",style:{maxHeight:"350px",width:"initial","--padding":2,display:this.state.minimized?"none":"block"}},React__namespace.createElement("div",{className:"panelColumn"},React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Utility actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"scriptEngine",title:t$d("INSTALL_SCRIPT_BUTTON"),action:()=>{new ScriptInstallPrompt(this.props.view.plugin).open()},icon:ICONS.scriptEngine,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"release-notes",title:t$d("READ_RELEASE_NOTES"),action:()=>{new ReleaseNotes(this.props.view.app,this.props.view.plugin,PLUGIN_VERSION).open()},icon:ICONS.releaseNotes,view:this.props.view}),null===this.state.isPreviewMode?React__namespace.createElement(ActionButton,{key:"convert",title:t$d("CONVERT_FILE"),action:()=>{this.props.view.convertExcalidrawToMD()},icon:ICONS.convertFile,view:this.props.view}):React__namespace.createElement(ActionButton,{key:"viewmode",title:this.state.isPreviewMode?t$d("PARSED"):t$d("RAW"),action:()=>{this.state.isPreviewMode?this.props.view.changeTextMode(TextMode.raw):this.props.view.changeTextMode(TextMode.parsed)},icon:this.state.isPreviewMode?ICONS.rawMode:ICONS.parsedMode,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"tray-mode",title:t$d("TRAY_MODE"),action:()=>{this.props.view.toggleTrayMode()},icon:ICONS.trayMode,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"fullscreen",title:this.state.isFullscreen?t$d("EXIT_FULLSCREEN"):t$d("GOTO_FULLSCREEN"),action:()=>{this.state.isFullscreen?this.props.view.exitFullscreen():this.props.view.gotoFullscreen()},icon:this.state.isFullscreen?ICONS.exitFullScreen:ICONS.gotoFullScreen,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"search",title:t$d("SEARCH"),action:()=>{search(this.props.view)},icon:ICONS.search,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"ocr",title:t$d("RUN_OCR"),action:e=>{this.props.view.plugin.settings.taskboneEnabled?this.props.view.plugin.taskbone.getTextForView(this.props.view,isCTRL(e)):new obsidian_module.Notice("Taskbone OCR is not enabled. Please go to plugins settings to enable it.",4e3)},icon:ICONS.ocr,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"openLink",title:t$d("OPEN_LINK_CLICK"),action:e=>{const A=new MouseEvent("click",{ctrlKey:e.ctrlKey||!(DEVICE.isIOS||DEVICE.isMacOS),metaKey:e.metaKey||DEVICE.isIOS||DEVICE.isMacOS,shiftKey:e.shiftKey,altKey:e.altKey});this.props.view.handleLinkClick(A)},icon:ICONS.openLink,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"openLinkProperties",title:t$d("OPEN_LINK_PROPS"),action:()=>{const e=new MouseEvent("click",{ctrlKey:!0,metaKey:!0,shiftKey:!1,altKey:!1});this.props.view.handleLinkClick(e)},icon:ICONS.openLinkProperties,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"save",title:t$d("FORCE_SAVE"),action:()=>{this.props.view.forceSave()},icon:saveIcon(this.state.isDirty),view:this.props.view}))),React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Export actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"lib",title:t$d("DOWNLOAD_LIBRARY"),action:()=>{this.props.view.plugin.exportLibrary()},icon:ICONS.exportLibrary,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"exportIMG",title:t$d("EXPORT_IMAGE"),action:()=>{const e=this.props.view;e.exportDialog||(e.exportDialog=new ExportDialog(e.plugin,e,e.file),e.exportDialog.createForm()),e.exportDialog.open()},icon:ICONS.ExportImage,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"md",title:t$d("OPEN_AS_MD"),action:()=>{this.props.view.openAsMarkdown()},icon:ICONS.switchToMarkdown,view:this.props.view}))),React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Insert actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"image",title:t$d("INSERT_IMAGE"),action:()=>{this.props.centerPointer(),this.props.view.plugin.insertImageDialog.start(this.props.view)},icon:ICONS.insertImage,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"pdf",title:t$d("INSERT_PDF"),action:()=>{this.props.centerPointer(),new InsertPDFModal(this.props.view.plugin,this.props.view).open()},icon:ICONS.insertPDF,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"insertMD",title:t$d("INSERT_MD"),action:()=>{this.props.centerPointer(),this.props.view.plugin.insertMDDialog.start(this.props.view)},icon:ICONS.insertMD,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"latex",title:t$d("INSERT_LATEX"),action:e=>{isALT(e)?this.props.view.openExternalLink("https://youtu.be/r08wk-58DPk"):(this.props.centerPointer(),insertLaTeXToView(this.props.view))},icon:ICONS.insertLaTeX,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"link",title:t$d("INSERT_LINK"),action:()=>{this.props.centerPointer(),this.props.view.plugin.insertLinkDialog.start(this.props.view.file.path,this.props.view.addText)},icon:ICONS.insertLink,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"link-to-element",title:t$d("INSERT_LINK_TO_ELEMENT"),action:e=>{isALT(e)?this.props.view.openExternalLink("https://youtu.be/yZQoJg2RCKI"):this.props.view.copyLinkToSelectedElementToClipboard(isCTRL(e)?"group=":isSHIFT(e)?"area=":"")},icon:ICONS.copyElementLink,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"import-svg",title:t$d("IMPORT_SVG"),action:e=>{this.props.view.plugin.importSVGDialog.start(this.props.view)},icon:ICONS.importSVG,view:this.props.view}))),this.renderScriptButtons(!1),this.renderScriptButtons(!0)))))}renderScriptButtons(e){if(0===Object.keys(this.state.scriptIconMap).length)return"";const A=`${this.props.view.plugin.settings.scriptFolderPath}/Downloaded/`,t=t=>e?t.startsWith(A):!t.startsWith(A);if(0===Object.keys(this.state.scriptIconMap).filter((e=>t(e))).length)return"";const i=new Set;Object.keys(this.state.scriptIconMap).filter((e=>t(e))).forEach((e=>i.add(this.state.scriptIconMap[e].group)));const n=Array.from(i).sort(((e,A)=>e>A?1:-1));return n.push(n.shift()),React__namespace.createElement(React__namespace.Fragment,null,n.map(((A,t)=>React__namespace.createElement("fieldset",{key:`${A}-${t}`},React__namespace.createElement("legend",null,e?A:""===A?"User":"User/"+A),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},Object.entries(this.state.scriptIconMap).filter((([e,t])=>t.group===A)).sort().map((([e,A])=>React__namespace.createElement(ActionButton,{key:e,title:A.name,action:async()=>{const A=this.props.view,t=A.plugin,i=app.vault.getAbstractFileByPath(e);i&&i instanceof obsidian_module.TFile&&t.scriptEngine.executeScript(A,await app.vault.read(i),t.scriptEngine.getScriptName(i),i)},longpress:async()=>{const t=this.props.view,i=t.excalidrawAPI,n=t.plugin;await n.loadSettings();const s=n.settings.pinnedScripts.indexOf(e);s>-1?(n.settings.pinnedScripts.splice(s,1),null==i||i.setToast({message:`Pin removed: ${A.name}`,duration:3e3,closable:!0})):(n.settings.pinnedScripts.push(e),null==i||i.setToast({message:`Pinned: ${A.name}`,duration:3e3,closable:!0})),await n.saveSettings(),app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinnedScripts()}))},icon:A.svgString?stringToSVG(A.svgString):ICONS.cog,view:this.props.view}))))))))}}const getElementsAtPointer=(e,A,t)=>A.filter((A=>{if(t&&A.type!==t)return!1;if(A.locked)return!1;const[i,n,s,a]=rotatedDimensions(A);return i<=e.x&&i+s>=e.x&&n<=e.y&&n+a>=e.y})),getTextElementAtPointer=(e,A)=>{const t=A.excalidrawAPI;if(!t)return{id:null,text:null};const i=getElementsAtPointer(e,t.getSceneElements(),"text");if(0==i.length)return{id:null,text:null};if(1===i.length)return{id:i[0].id,text:i[0].text};const n=i.filter((e=>{const t=A.textMode===TextMode.parsed?A.excalidrawData.getRawText(e.id):e.text;return!!t&&(!!t.match(REG_LINKINDEX_HYPERLINK)||!!REGEX_LINK.getRes(t).next().value)}));return 0==n.length?{id:i[0].id,text:i[0].text}:{id:n[0].id,text:n[0].text}},getImageElementAtPointer=(e,A)=>{const t=A.excalidrawAPI;if(!t)return;const i=getElementsAtPointer(e,t.getSceneElements(),"image");return 0===i.length?{id:null,fileId:null}:i.length>=1?{id:i[0].id,fileId:i[0].fileId}:void 0},getElementWithLinkAtPointer=(e,A)=>{const t=A.excalidrawAPI;if(!t)return;const i=getElementsAtPointer(e,t.getSceneElements()).filter((e=>e.link));return 0===i.length?{id:null,text:null}:i.length>=1?{id:i[0].id,text:i[0].link}:void 0},setDynamicStyle=(e,A,t,i)=>{var n,s,a,o,r,l,c,g,d,u,h,m,p;if("none"===i){null===(n=A.excalidrawContainer)||void 0===n||n.removeAttribute("style"),setTimeout((()=>A.updateScene({appState:{dynamicStyle:""}})));const e=null===(o=null===(a=null===(s=A.toolsPanelRef)||void 0===s?void 0:s.current)||void 0===a?void 0:a.containerRef)||void 0===o?void 0:o.current;if(e){let A=e.getAttribute("style");A=A.replace(/\-\-color\-primary.*/,""),e.setAttribute("style",A)}return}A.ownerDocument;const w="light"===(null===(c=null===(l=null===(r=null==A?void 0:A.excalidrawAPI)||void 0===r?void 0:r.getAppState)||void 0===l?void 0:l.call(r))||void 0===c?void 0:c.theme)||"light"===(null===(u=null===(d=null===(g=null==A?void 0:A.excalidrawData)||void 0===g?void 0:g.scene)||void 0===d?void 0:d.appState)||void 0===u?void 0:u.theme),B=()=>w?e.getCM(t):(A=>{const t=e.getCM(A),i=t.lightness;return t.lightnessTo(Math.abs(i-100))})(t),E=B().lightness,k=B().darkerBy(10).isDark(),f="gray"===i,C=A.app.getAccentColor(),O=()=>f?e.getCM(C):e.getCM(C).mix({color:B(),ratio:.2}),W=()=>e.getCM("#000000").lightnessTo(E),b=()=>f?k?W().lighterBy(10):W().darkerBy(10):k?B().lighterBy(10).mix({color:W(),ratio:.5}):B().darkerBy(10).mix({color:W(),ratio:.5}),x=()=>f?k?W().lighterBy(4):W().darkerBy(4):k?B().lighterBy(4).mix({color:W(),ratio:.5}):B().darkerBy(4).mix({color:W(),ratio:.5}),Q=B().mix({color:k?"#f0f0f0":"#101010",ratio:.9}),I=e=>e.stringHEX({alpha:!1}),y={"--color-primary":I(O()),"--color-surface-low":I(b()),"--color-surface-mid":I(b()),"--color-surface-lowest":I(x()),"--color-surface-high":I(b().lighterBy(10)),"--color-on-primary-container":I(k?O().lighterBy(15):O().darkerBy(15)),"--color-surface-primary-container":I(k?O().darkerBy(10):O().lighterBy(10)),"--button-gray-1":I(b()),"--button-gray-2":I(x()),"--input-border-color":I(b()),"--input-bg-color":I(x()),"--input-label-color":I(Q),"--island-bg-color":x().alphaTo(.93).stringHEX(),"--popup-secondary-bg-color":x().alphaTo(.93).stringHEX(),"--icon-fill-color":I(Q),"--text-primary-color":I(Q),"--overlay-bg-color":x().alphaTo(.6).stringHEX(),"--popup-bg-color":I(b()),"--color-on-surface":I(Q),"--color-gray-40":I(Q),"--color-gray-50":I(Q),"--color-surface-highlight":I(b()),"--color-gray-80":I(k?Q.lighterBy(15):Q.darkerBy(15)),"--sidebar-border-color":I(b()),"--color-primary-light":I(O().lighterBy(10)),"--button-hover-bg":I(b()),"--sidebar-bg-color":x().alphaTo(.93).stringHEX(),"--sidebar-shadow":I(b()),"--popup-text-color":I(Q),"--code-normal":I(Q),"--code-background":I(x()),"--h1-color":I(Q),"--h2-color":I(Q),"--h3-color":I(Q),"--h4-color":I(Q),color:I(Q),"--select-highlight-color":I(b())},v=Object.keys(y).map((e=>`${e}: ${y[e]}`)).join("; ");setTimeout((()=>{const e=A.excalidrawAPI;if(!e)return;const t={stroke:I(k?x().lighterBy(15):x().darkerBy(15)),fill:I((k?x().lighterBy(30):x().darkerBy(30)).alphaTo(.2)),nameColor:I(k?x().lighterBy(40):x().darkerBy(40))};e.getSceneElements().filter((e=>"frame"===e.type)).forEach((e=>{const A=cloneElement(e);addAppendUpdateCustomData(A,{frameColor:t}),e.customData&&e.customData.frameColor&&e.customData.frameColor.stroke===t.stroke&&e.customData.frameColor.fill===t.fill&&e.customData.frameColor.nameColor===t.nameColor||mutateElement(e,{customData:A.customData})})),A.updateScene({appState:{frameColor:t,dynamicStyle:y}})}));const D=null===(p=null===(m=null===(h=A.toolsPanelRef)||void 0===h?void 0:h.current)||void 0===m?void 0:m.containerRef)||void 0===p?void 0:p.current;if(D){let e=D.getAttribute("style");e=e.replace(/\-\-color\-primary.*/,""),D.setAttribute("style",e+v)}},getTheme=(e,A)=>"dark"===e.excalidrawData.embeddableTheme?"theme-dark":"light"===e.excalidrawData.embeddableTheme?"theme-light":"auto"===e.excalidrawData.embeddableTheme?"dark"===A?"theme-dark":"theme-light":isObsidianThemeDark()?"theme-dark":"theme-light",renderWebView=(e,A,t,i)=>DEVICE.isDesktop?React__namespace.createElement("webview",{ref:e=>A.updateEmbeddableRef(t,e),className:"excalidraw__embeddable",title:"Excalidraw Embedded Content",allowFullScreen:!0,src:e,style:{overflow:"hidden",borderRadius:"var(--embeddable-radius)"}}):React__namespace.createElement("iframe",{ref:e=>A.updateEmbeddableRef(t,e),className:"excalidraw__embeddable",title:"Excalidraw Embedded Content",allowFullScreen:!0,allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",src:e,style:{overflow:"hidden",borderRadius:"var(--embeddable-radius)"}});function RenderObsidianView({mdProps:e,element:A,linkText:t,view:i,containerRef:n,activeEmbeddable:s,theme:a,canvasColor:o}){var r;const{subpath:l,file:c}=processLinkText(t,i);if(!c)return null;const g=i.plugin.getPackage(i.ownerWindow).react,d=g.useRef(null),u=g.useRef(!1),h=g.useRef(!1),m=g.useRef(a),p=g.useRef(A);g.useEffect((()=>{m.current=a}),[a]),g.useEffect((()=>{p.current=A}),[A]);const w=g.useCallback((e=>{h.current&&e.stopPropagation()}),[h.current]);g.useEffect((()=>{if(null==n?void 0:n.current)return KEYBOARD_EVENT_TYPES.forEach((e=>n.current.addEventListener(e,w))),n.current.addEventListener("click",E),()=>{(null==n?void 0:n.current)&&(KEYBOARD_EVENT_TYPES.forEach((e=>n.current.removeEventListener(e,w))),EXTENDED_EVENT_TYPES.forEach((e=>n.current.removeEventListener(e,w))),n.current.removeEventListener("click",E))}}),[]),g.useEffect((()=>{if(EXTENDED_EVENT_TYPES.forEach((e=>n.current.removeEventListener(e,w))),null==n?void 0:n.current)return h.current&&EXTENDED_EVENT_TYPES.forEach((e=>n.current.addEventListener(e,w))),()=>{(null==n?void 0:n.current)&&EXTENDED_EVENT_TYPES.forEach((e=>n.current.removeEventListener(e,w)))}}),[h.current,n.current]),g.useEffect((()=>{if(!(null==n?void 0:n.current))return;for(;n.current.hasChildNodes();)n.current.removeChild(n.current.lastChild);n.current.parentElement.style.padding="";const t=i.ownerDocument,s=new obsidian_module.WorkspaceSplit(app.workspace,"vertical");s.getRoot=()=>app.workspace[t===document?"rootSplit":"floatingSplit"],s.getContainer=()=>getContainerForDocument(t),s.containerEl.style.width="100%",s.containerEl.style.height="100%",s.containerEl.style.borderRadius="var(--embeddable-radius)",d.current={leaf:app.workspace.createLeafInParent(s,0),node:null};const a=()=>{app.workspace.activeLeaf===i.leaf&&DEVICE.isDesktop&&(i.ownerWindow.electronWindow.isAlwaysOnTop()||(i.ownerWindow.electronWindow.setAlwaysOnTop(!0),setTimeout((()=>{i.ownerWindow.electronWindow.setAlwaysOnTop(!1)}),500)))};return l&&i.canvasNodeFactory.isInitialized()?(a(),d.current.node=i.canvasNodeFactory.createFileNote(c,l,n.current,A.id),i.updateEmbeddableLeafRef(A.id,d.current)):(async()=>{var t,r;await d.current.leaf.openFile(c,Object.assign({active:!1,state:{mode:"preview"}},l?{eState:{subpath:l}}:{}));const g=null===(t=d.current.leaf.view)||void 0===t?void 0:t.getViewType();if("canvas"===g&&(null===(r=d.current.leaf.view.canvas)||void 0===r||r.setReadonly(!0)),"markdown"===g&&i.canvasNodeFactory.isInitialized())a(),await d.current.leaf.setViewState({state:{file:null}}),d.current.node=i.canvasNodeFactory.createFileNote(c,l,n.current,A.id),B(n.current,A,e,o);else{const e=s.containerEl.querySelector("div.workspace-leaf");e&&(e.style.borderRadius="var(--embeddable-radius)"),n.current.appendChild(s.containerEl)}patchMobileView(i),i.updateEmbeddableLeafRef(A.id,d.current)})(),()=>{}}),[t,l,n]);const B=(e,A,t,s)=>{var a,o,r,l,c,g,u,h,m;if(!t)return;if(!(null===(a=d.current)||void 0===a?void 0:a.hasOwnProperty("node")))return;const p=null===(o=n.current)||void 0===o?void 0:o.firstElementChild;if(t.useObsidianDefaults)return null==e||e.style.removeProperty("--canvas-background"),null==p||p.style.removeProperty("background-color"),null==e||e.style.removeProperty("--canvas-border"),void(null==p||p.style.removeProperty("border-color"));const w=i.plugin.ea;if(t.backgroundMatchElement){const i=(null!==(r=null==t?void 0:t.backgroundOpacity)&&void 0!==r?r:50)/100,n=(null==A?void 0:A.backgroundColor)?"transparent"===A.backgroundColor.toLowerCase()?"transparent":w.getCM(A.backgroundColor).alphaTo(i).stringHEX():"transparent";"transparent"===n?null==e||e.addClass("transparent"):null==e||e.removeClass("transparent"),null==e||e.style.setProperty("--canvas-background",n),null==e||e.style.setProperty("--background-primary",n),null==p||p.style.setProperty("background-color",n)}else if(null!==(l=null==t?void 0:t.backgroundMatchElement)&&void 0!==l&&!l){const A=(null!==(c=t.backgroundOpacity)&&void 0!==c?c:100)/100,i=t.backgroundMatchCanvas?"transparent"===s.toLowerCase()?"transparent":w.getCM(s).alphaTo(A).stringHEX():w.getCM(t.backgroundColor).alphaTo((null!==(g=t.backgroundOpacity)&&void 0!==g?g:100)/100).stringHEX();"transparent"===i?null==e||e.addClass("transparent"):null==e||e.removeClass("transparent"),null==e||e.style.setProperty("--canvas-background",i),null==e||e.style.setProperty("--background-primary",i),null==p||p.style.setProperty("background-color",i)}if(t.borderMatchElement){const i=(null!==(u=null==t?void 0:t.borderOpacity)&&void 0!==u?u:50)/100,n=(null==A?void 0:A.strokeColor)?"transparent"===A.strokeColor.toLowerCase()?"transparent":w.getCM(A.strokeColor).alphaTo(i).stringHEX():"transparent";null==e||e.style.setProperty("--canvas-border",n),null==e||e.style.setProperty("--canvas-color",n),null==p||p.style.setProperty("border-color",n)}else if(null!==(h=null==t?void 0:t.borderMatchElement)&&void 0!==h&&!h){const A=w.getCM(t.borderColor).alphaTo((null!==(m=t.borderOpacity)&&void 0!==m?m:100)/100).stringHEX();null==e||e.style.setProperty("--canvas-border",A),null==e||e.style.setProperty("--canvas-color",A),null==p||p.style.setProperty("border-color",A)}};g.useEffect((()=>{if(!n.current)return;const A=p.current,t=n.current;t.hasClass("canvas-node")&&B(t,A,e,o)}),[e,p.current,n.current,o]),g.useEffect((()=>{var e,A;u.current&&((null===(e=d.current)||void 0===e?void 0:e.node)&&(null===(A=n.current)||void 0===A||A.addClasses(["is-editing","is-focused"]),i.canvasNodeFactory.stopEditing(d.current.node)),u.current=!1)}),[u.current,d]);const E=g.useCallback((e=>{var t,s,a,o;if(h.current&&e.stopPropagation(),h.current&&!u.current&&(null===(t=d.current)||void 0===t?void 0:t.leaf))if("markdown"===(null===(s=d.current.leaf.view)||void 0===s?void 0:s.getViewType())){const e=i.excalidrawAPI.getSceneElements().filter((e=>e.id===A.id))[0];if(!e||0!==e.angle)return void new obsidian_module.Notice("Sorry, cannot edit rotated markdown documents");const t=d.current.leaf.view.modes;if(!t)return;d.current.leaf.view.setMode(t.source),u.current=!0,patchMobileView(i)}else if(null===(a=d.current)||void 0===a?void 0:a.node){const e=getTheme(i,m.current);null===(o=n.current)||void 0===o||o.addClasses(["is-editing","is-focused"]),i.canvasNodeFactory.startEditing(d.current.node,e)}}),[null===(r=d.current)||void 0===r?void 0:r.leaf,A.id,i,m.current]);return g.useEffect((()=>{var e,t,a,o;if(!(null==n?void 0:n.current)||!(null==d?void 0:d.current))return;const r=h.current;if(h.current=(null==s?void 0:s.element.id)===A.id&&"active"===(null==s?void 0:s.state),r!==h.current)if("markdown"===(null===(t=null===(e=d.current.leaf)||void 0===e?void 0:e.view)||void 0===t?void 0:t.getViewType())){const e=d.current.leaf.view.modes;if(!e)return;if(!h.current)return d.current.leaf.view.setMode(e.preview),void(u.current=!1)}else(null===(a=d.current)||void 0===a?void 0:a.node)&&(null===(o=n.current)||void 0===o||o.removeClasses(["is-editing","is-focused"]),i.canvasNodeFactory.stopEditing(d.current.node))}),[n,d,h,null==s?void 0:s.element,null==s?void 0:s.state,A,i,u,i.canvasNodeFactory]),null}const CustomEmbeddable=({element:e,view:A,appState:t,linkText:i})=>{var n;const s=A.plugin.getPackage(A.ownerWindow).react.useRef(null),a=getTheme(A,t.theme),o=(null===(n=e.customData)||void 0===n?void 0:n.mdProps)||null;return React__namespace.createElement("div",{ref:s,style:{width:"100%",height:"100%",borderRadius:"var(--embeddable-radius)",color:"var(--text-normal)"},className:`${a} canvas-node ${(null==o?void 0:o.filenameVisible)&&!o.useObsidianDefaults?"":"excalidraw-mdEmbed-hideFilename"}`},React__namespace.createElement(RenderObsidianView,{mdProps:o,element:e,linkText:i,view:A,containerRef:s,activeEmbeddable:t.activeEmbeddable,theme:t.theme,canvasColor:t.viewBackgroundColor}))};var PreviewImageType;!function(e){e.PNG="PNG",e.SVGIMG="SVGIMG",e.SVG="SVG"}(PreviewImageType||(PreviewImageType={}));const DB_NAME="Excalidraw "+app.appId,CACHE_STORE="imageCache",BACKUP_STORE="drawingBAK",getKey=e=>{var A,t;return`${e.filepath}#${null!==(A=e.blockref)&&void 0!==A?A:""}#${null!==(t=e.sectionref)&&void 0!==t?t:""}#${e.isDark?1:0}#${e.hasGroupref}#${e.hasArearef}#${e.hasFrameref}#${e.hasSectionref}#${e.previewImageType===PreviewImageType.SVGIMG?1:e.previewImageType===PreviewImageType.PNG?0:2}#${e.scale}`};class ImageCache{constructor(e,A,t){this.initializationNotice=!1,this.obsidanURLCache=new Map,this.fullyInitialized=!1,this.dbName=e,this.cacheStoreName=A,this.backupStoreName=t,this.db=null,this.isInitializing=!1,this.plugin=null}async initializeDB(e){if(this.plugin=e,this.app=e.app,!this.isInitializing&&null===this.db){this.isInitializing=!0;try{const e=indexedDB.open(this.dbName);if(e.onupgradeneeded=e=>{const A=e.target.result;A.objectStoreNames.contains(this.cacheStoreName)||A.createObjectStore(this.cacheStoreName),A.objectStoreNames.contains(this.backupStoreName)||A.createObjectStore(this.backupStoreName)},this.db=await new Promise(((A,t)=>{e.onsuccess=e=>{const t=e.target.result;A(t)},e.onerror=()=>{t(new Error(`Failed to open or create IndexedDB database: ${this.dbName}`))}})),!this.db.objectStoreNames.contains(this.cacheStoreName)||!this.db.objectStoreNames.contains(this.backupStoreName)){const e=this.db.version+1;this.db.close();const A=indexedDB.open(this.dbName,e);A.onupgradeneeded=e=>{const A=e.target.result;A.objectStoreNames.contains(this.cacheStoreName)||A.createObjectStore(this.cacheStoreName),A.objectStoreNames.contains(this.backupStoreName)||A.createObjectStore(this.backupStoreName)},await new Promise(((e,t)=>{A.onsuccess=()=>{A.result.close(),e()},A.onerror=()=>{t(new Error(`Failed to upgrade IndexedDB database: ${this.dbName}`))}})),this.db=await new Promise(((e,A)=>{const t=indexedDB.open(this.dbName);t.onsuccess=()=>{const A=t.result;e(A)},t.onerror=()=>{A(new Error(`Failed to open IndexedDB database: ${this.dbName}`))}}))}setTimeout((async()=>this.purgeInvalidCacheFiles()),6e4),setTimeout((async()=>this.purgeInvalidBackupFiles()),12e4)}finally{this.isInitializing=!1,this.initializationNotice&&(new obsidian_module.Notice("Excalidraw Image Cache is Initialized - You may now retry opening your damaged drawing."),this.initializationNotice=!1),console.log("Initialized Excalidraw Image Cache")}}}async purgeInvalidCacheFiles(){return new Promise(((e,A)=>{const t=this.db.transaction(this.cacheStoreName,"readwrite"),i=t.objectStore(this.cacheStoreName),n=this.app.vault.getFiles(),s=[],a=i.openCursor();a.onsuccess=a=>{const o=a.target.result;if(o){const e=o.key,A=e.replaceAll(/[^#]/g,"").length<9,t=e.split("#")[0],a=n.some((e=>e.path===t)),r=a?n.find((e=>e.path===t)):null;(A||!r||r&&r.stat.mtime>o.value.mtime||!o.value.blob&&!o.value.svg)&&s.push(new Promise(((A,t)=>{const n=i.delete(o.primaryKey);n.onsuccess=()=>A(),n.onerror=A=>{const i=n.error,s=`Failed to delete file with key: ${e}. Error: ${i.message}`;t(new Error(s))}}))),o.continue()}else Promise.all(s).then((()=>{t.commit(),e()})).catch((e=>A(e)))},a.onerror=()=>{const e=a.error;console.log(e);const t=`Failed to purge invalid files from IndexedDB. Error: ${e.message}`;A(new Error(t))}}))}async purgeInvalidBackupFiles(){const e=this.db.transaction(this.backupStoreName,"readwrite"),A=e.objectStore(this.backupStoreName),t=this.app.vault.getFiles(),i=[],n=A.openCursor();return await new Promise(((s,a)=>{n.onsuccess=n=>{const o=n.target.result;if(o){const e=o.key,n=t.some((A=>A.path===e));n||i.push(new Promise(((t,i)=>{const n=A.delete(o.primaryKey);n.onsuccess=()=>t(),n.onerror=()=>i(new Error(`Failed to delete backup file with key: ${e}`))}))),o.continue()}else Promise.all(i).then((()=>{e.commit(),s()})).catch((e=>a(e)))},n.onerror=()=>{const e=n.error,A=`Failed to purge invalid backup files from IndexedDB. Error: ${e.message}`;console.log(e),a(new Error(A))}}))}async getObjectStore(e,A){return this.db.transaction(A,e).objectStore(A)}async getCacheData(e){const A=(await this.getObjectStore("readonly",this.cacheStoreName)).get(e);return new Promise(((e,t)=>{A.onsuccess=()=>{const t=A.result;e(t||null)},A.onerror=()=>{t(new Error("Failed to retrieve data from IndexedDB."))}}))}async getBackupData(e){const A=(await this.getObjectStore("readonly",this.backupStoreName)).get(e);return new Promise(((e,t)=>{A.onsuccess=()=>{const t=A.result;e(t||null)},A.onerror=()=>{t(new Error("Failed to retrieve backup data from IndexedDB."))}}))}isReady(){return!!this.db&&!this.isInitializing&&!!this.plugin&&this.plugin.settings.allowImageCache}async getImageFromCache(e){if(!this.isReady())return null;const A=getKey(e);try{const t=this.fullyInitialized?await this.getCacheData(A):await Promise.race([this.getCacheData(A),new Promise(((e,A)=>setTimeout((()=>A(void 0)),100)))]);if(this.fullyInitialized=!0,!t)return;const i=this.app.vault.getAbstractFileByPath(e.filepath.split("#")[0]);if(!(i&&i instanceof obsidian_module.TFile))return;if(t&&t.mtime===i.stat.mtime){if(t.svg)return convertSVGStringToElement(t.svg);if(this.obsidanURLCache.has(A))return this.obsidanURLCache.get(A);const e=URL.createObjectURL(t.blob);return this.obsidanURLCache.set(A,e),e}return}catch(e){return}}async getBAKFromCache(e){return this.isReady()?this.getBackupData(e):null}addImageToCache(e,A,t){if(!this.isReady())return;const i=this.app.vault.getAbstractFileByPath(e.filepath.split("#")[0]);if(!(i&&i instanceof obsidian_module.TFile))return;let n=null,s=null;t instanceof SVGSVGElement?n=t.outerHTML:s=t;const a={mtime:i.stat.mtime,blob:s,svg:n},o=this.db.transaction(this.cacheStoreName,"readwrite").objectStore(this.cacheStoreName),r=getKey(e);o.put(a,r),Boolean(n)||this.obsidanURLCache.set(r,A)}async addBAKToCache(e,A){this.isReady()&&this.db.transaction(this.backupStoreName,"readwrite").objectStore(this.backupStoreName).put(A,e)}async clearImageCache(){if(this.isReady())return this.clear(this.cacheStoreName,"Image cache was cleared")}async clearBackupCache(){if(this.isReady())return this.clear(this.backupStoreName,"All backups were cleared")}async clear(e,A){if(!this.isReady())return;const t=this.db.transaction([e],"readwrite").objectStore(e);return new Promise(((i,n)=>{const s=t.clear();s.onsuccess=()=>{new obsidian_module.Notice(A),i()},s.onerror=()=>n(new Error(`Failed to clear ${e}.`))}))}}const imageCache=new ImageCache(DB_NAME,CACHE_STORE,"drawingBAK"),isDebugMode=!1;class CanvasNodeFactory{constructor(e){this.view=e,this.nodes=new Map,this.initialized=!1,this.isInitialized=()=>this.initialized}async initialize(){const e=app.internalPlugins.plugins.canvas;e._loaded||await e.load();const A=this.view.ownerDocument,t=new obsidian_module.WorkspaceSplit(app.workspace,"vertical");t.getRoot=()=>app.workspace[A===document?"rootSplit":"floatingSplit"],t.getContainer=()=>getContainerForDocument(A),this.leaf=app.workspace.createLeafInParent(t,0),this.canvas=e.views.canvas(this.leaf).canvas,this.initialized=!0}createFileNote(e,A,t,i){var n;if(!this.initialized)return;A=null!=A?A:"",this.nodes.has(i)&&(this.canvas.removeNode(this.nodes.get(i)),this.nodes.delete(i));const s=this.canvas.createFileNode({pos:{x:0,y:0},file:e,subpath:A,save:!1});return s.setFilePath(e.path,A),s.render(),null===(n=s.containerEl.querySelector(".canvas-node-content-blocker"))||void 0===n||n.remove(),t.appendChild(s.containerEl),this.nodes.set(i,s),s}startEditing(e,A){if(!this.initialized||!e)return;e.startEditing();const t=isObsidianThemeDark()?"theme-dark":"theme-light";t!==A&&(async()=>{var i,n,s,a,o,r;let l=0;for(;!(null===(s=null===(n=null===(i=e.child.editor)||void 0===i?void 0:i.containerEl)||void 0===n?void 0:n.parentElement)||void 0===s?void 0:s.parentElement)&&l++<100;)await sleep(25);(null===(r=null===(o=null===(a=e.child.editor)||void 0===a?void 0:a.containerEl)||void 0===o?void 0:o.parentElement)||void 0===r?void 0:r.parentElement)&&(e.child.editor.containerEl.parentElement.parentElement.classList.remove(t),e.child.editor.containerEl.parentElement.parentElement.classList.add(A),new MutationObserver((e=>{for(const i of e)if("attributes"===i.type&&"class"===i.attributeName){const e=i.target;e.classList.contains(t)&&(e.classList.remove(t),e.classList.add(A))}})).observe(e.child.editor.containerEl.parentElement.parentElement,{attributes:!0}))})()}stopEditing(e){this.initialized&&e&&e.child.editMode&&e.child.showPreview()}purgeNodes(){this.initialized&&(this.nodes.forEach((e=>{this.canvas.removeNode(e)})),this.nodes.clear())}}const REG_YOUTUBE=/^(?:http(?:s)?:\/\/)?(?:www\.)?youtu(?:be\.com|\.be)\/(embed\/|watch\?v=|shorts\/|playlist\?list=|embed\/videoseries\?list=)?([a-zA-Z0-9_-]+)(?:\?t=|.*&t=|\?start=|.*&start=)?([a-zA-Z0-9_-]+)?[^\s]*$/,isYouTube=e=>Boolean(e.match(REG_YOUTUBE)),getYouTubeStartAt=e=>{const A=e.match(REG_YOUTUBE);if(null==A?void 0:A[2]){const e=A[3]?parseInt(A[3]):0,t=Math.floor(e/3600),i=Math.floor((e-3600*t)/60),n=e-3600*t-60*i;return 0===t&&0===i&&0===n?"":0===t&&0===i?`${String(n).padStart(2,"0")}`:0===t?`${String(i).padStart(2,"0")}:${String(n).padStart(2,"0")}`:`${String(t).padStart(2,"0")}:${String(i).padStart(2,"0")}:${String(n).padStart(2,"0")}`}return""},isValidYouTubeStart=e=>!!/^[0-9]+$/.test(e)||!!/^[0-9]+:[0-9]+$/.test(e)||!!/^[0-9]+:[0-9]+:[0-9]+$/.test(e)||void 0,updateYouTubeStartTime=(e,A)=>{const t=e.match(REG_YOUTUBE);if(null==t?void 0:t[2]){const i=""===A?"":`t=${timeStringToSeconds(A)}`;let n=e;return t[3]?(n=e.replace(/([?&])t=[a-zA-Z0-9_-]+/,`$1${i}`),n=n.replace(/([?&])start=[a-zA-Z0-9_-]+/,`$1${i}`)):n+=(e.includes("?")?"&":"?")+i,n}return e},timeStringToSeconds=e=>{const A=e.split(":").map(Number),t=A.length;return 1===t?A[0]:2===t?60*A[0]+A[1]:3===t?3600*A[0]+60*A[1]+A[2]:0};class EmbeddalbeMDFileCustomDataSettingsComponent{constructor(e,A,t){this.contentEl=e,this.mdCustomData=A,this.update=t,t||(this.update=()=>{})}render(){let e;new obsidian_module.Setting(this.contentEl).setName(t$d("ES_USE_OBSIDIAN_DEFAULTS")).addToggle((A=>A.setValue(this.mdCustomData.useObsidianDefaults).onChange((A=>{this.mdCustomData.useObsidianDefaults=A,e.style.display=A?"none":"block",this.update()})))),this.contentEl.createEl("hr",{cls:"excalidraw-setting-hr"}),e=this.contentEl.createDiv(),e.style.display=this.mdCustomData.useObsidianDefaults?"none":"block";const A=e;let t,i,n;new obsidian_module.Setting(A).setName(t$d("ES_FILENAME_VISIBLE")).addToggle((e=>e.setValue(this.mdCustomData.filenameVisible).onChange((e=>{this.mdCustomData.filenameVisible=e})))),A.createEl("h4",{text:t$d("ES_BACKGROUND_HEAD")}),new obsidian_module.Setting(A).setName(t$d("ES_BACKGROUND_MATCH_ELEMENT")).addToggle((e=>{i=e,e.setValue(this.mdCustomData.backgroundMatchElement).onChange((e=>{this.mdCustomData.backgroundMatchElement=e,e?(t.settingEl.style.display="none",this.mdCustomData.backgroundMatchCanvas&&n.setValue(!1)):this.mdCustomData.backgroundMatchCanvas||(t.settingEl.style.display=""),this.update()}))})),new obsidian_module.Setting(A).setName(t$d("ES_BACKGROUND_MATCH_CANVAS")).addToggle((e=>{n=e,e.setValue(this.mdCustomData.backgroundMatchCanvas).onChange((e=>{this.mdCustomData.backgroundMatchCanvas=e,e?(t.settingEl.style.display="none",this.mdCustomData.backgroundMatchElement&&i.setValue(!1)):this.mdCustomData.backgroundMatchElement||(t.settingEl.style.display=""),this.update()}))})),this.mdCustomData.backgroundMatchElement&&this.mdCustomData.backgroundMatchCanvas&&n.setValue(!1),t=new obsidian_module.Setting(A).setName(t$d("ES_BACKGROUND_COLOR")).addColorPicker((e=>e.setValue(this.mdCustomData.backgroundColor).onChange((e=>{this.mdCustomData.backgroundColor=e,this.update()})))),t.settingEl.style.display=this.mdCustomData.backgroundMatchElement||this.mdCustomData.backgroundMatchCanvas?"none":"";const s=e=>fragWithHTML(`Current opacity is <b>${e}%</b>`),a=new obsidian_module.Setting(A).setName(t$d("ES_BACKGROUND_OPACITY")).setDesc(s(this.mdCustomData.backgroundOpacity)).addSlider((e=>e.setLimits(0,100,5).setValue(this.mdCustomData.backgroundOpacity).onChange((e=>{this.mdCustomData.backgroundOpacity=e,a.setDesc(s(e)),this.update()}))));let o;A.createEl("h4",{text:t$d("ES_BORDER_HEAD")}),new obsidian_module.Setting(A).setName(t$d("ES_BORDER_MATCH_ELEMENT")).addToggle((e=>e.setValue(this.mdCustomData.borderMatchElement).onChange((e=>{this.mdCustomData.borderMatchElement=e,o.settingEl.style.display=e?"none":"",this.update()})))),o=new obsidian_module.Setting(A).setName(t$d("ES_BORDER_COLOR")).addColorPicker((e=>e.setValue(this.mdCustomData.borderColor).onChange((e=>{this.mdCustomData.borderColor=e,this.update()})))),o.settingEl.style.display=this.mdCustomData.borderMatchElement?"none":"";const r=new obsidian_module.Setting(A).setName(t$d("ES_BORDER_OPACITY")).setDesc(s(this.mdCustomData.borderOpacity)).addSlider((e=>e.setLimits(0,100,5).setValue(this.mdCustomData.borderOpacity).onChange((e=>{this.mdCustomData.borderOpacity=e,r.setDesc(s(e)),this.update()}))))}}class EmbeddableSettings extends obsidian_module.Modal{constructor(e,A,t,i){var n,s,a;if(super(e.app),this.plugin=e,this.view=A,this.file=t,this.element=i,this.updatedFilepath=null,this.youtubeStart=null,this.ea=getEA(this.view),this.ea.copyViewElementsToEAforEditing([this.element]),this.zoomValue=i.scale[0],this.isYouTube=isYouTube(this.element.link),this.isMDFile=this.file&&"md"===this.file.extension&&!this.view.plugin.isExcalidrawFile(this.file),isYouTube&&(this.youtubeStart=getYouTubeStartAt(this.element.link)),this.mdCustomData=null!==(s=null===(n=i.customData)||void 0===n?void 0:n.mdProps)&&void 0!==s?s:A.plugin.settings.embeddableMarkdownDefaults,!(null===(a=i.customData)||void 0===a?void 0:a.mdProps)){const e=this.plugin.ea.getCM(i.backgroundColor);this.mdCustomData.backgroundColor=e.stringHEX({alpha:!1}),this.mdCustomData.backgroundOpacity=i.opacity;const A=this.plugin.ea.getCM(i.strokeColor);this.mdCustomData.borderColor=A.stringHEX({alpha:!1}),this.mdCustomData.borderOpacity=i.opacity}}onOpen(){this.containerEl.classList.add("excalidraw-release"),this.createForm()}onClose(){this.containerEl.removeEventListener("keydown",this.onKeyDown)}async createForm(){this.contentEl.createEl("h1",{text:t$d("ES_TITLE")}),this.file&&new obsidian_module.Setting(this.contentEl).setName(t$d("ES_RENAME")).addText((e=>e.setValue(getPathWithoutExtension(this.file)).onChange((async e=>{this.updatedFilepath=e}))));const e=()=>fragWithHTML(`${t$d("ES_ZOOM_100_RELATIVE_DESC")}<br>Current zoom is <b>${Math.round(100*this.zoomValue)}%</b>`),A=new obsidian_module.Setting(this.contentEl).setName(t$d("ES_ZOOM")).setDesc(e()).addButton((t=>t.setButtonText(t$d("ES_ZOOM_100")).onClick((()=>{const t=this.view.excalidrawAPI;this.zoomValue=1/t.getAppState().zoom.value,A.setDesc(e())})))).addSlider((t=>t.setLimits(10,400,5).setValue(100*this.zoomValue).onChange((t=>{this.zoomValue=t/100,A.setDesc(e())}))));this.isYouTube&&new obsidian_module.Setting(this.contentEl).setName(t$d("ES_YOUTUBE_START")).setDesc(t$d("ES_YOUTUBE_START_DESC")).addText((e=>e.setValue(this.youtubeStart).onChange((async e=>{this.youtubeStart=e})))),this.isMDFile&&(this.contentEl.createEl("h3",{text:t$d("ES_EMBEDDABLE_SETTINGS")}),new EmbeddalbeMDFileCustomDataSettingsComponent(this.contentEl,this.mdCustomData).render()),new obsidian_module.Setting(this.contentEl).addButton((e=>e.setButtonText(t$d("PROMPT_BUTTON_CANCEL")).setTooltip("ESC").onClick((()=>{this.close()})))).addButton((e=>e.setButtonText(t$d("PROMPT_BUTTON_OK")).setTooltip("CTRL/Opt+Enter").setCta().onClick((()=>this.applySettings()))));const t=e=>{isCTRL(e)&&"Enter"===e.key&&this.applySettings()};this.onKeyDown=t,this.containerEl.ownerDocument.addEventListener("keydown",t)}async applySettings(){var e,A,t,i,n;let s=!1;const a=this.ea.getElement(this.element.id);if(this.updatedFilepath){const e=`${this.updatedFilepath}.${this.file.extension}`;if(e!==this.file.path){const A=splitFolderAndFilename(e),t=getNewUniqueFilepath(this.app.vault,A.folderpath,A.filename);await this.app.vault.rename(this.file,t),a.link=this.element.link.replace(/(\[\[)([^#\]]*)([^\]]*]])/,`$1${this.plugin.app.metadataCache.fileToLinktext(this.file,this.view.file.path,!0)}$3`),s=!0}}var o;this.isYouTube&&this.youtubeStart!==getYouTubeStartAt(this.element.link)&&(s=!0,""===this.youtubeStart||(o=this.youtubeStart,/^[0-9]+$/.test(o)||/^[0-9]+:[0-9]+$/.test(o)||/^[0-9]+:[0-9]+:[0-9]+$/.test(o))?a.link=updateYouTubeStartTime(a.link,this.youtubeStart):new obsidian_module.Notice(t$d("ES_YOUTUBE_START_INVALID"))),!this.isMDFile||this.mdCustomData.backgroundColor===(null===(e=this.element.customData)||void 0===e?void 0:e.backgroundColor)&&this.mdCustomData.borderColor===(null===(A=this.element.customData)||void 0===A?void 0:A.borderColor)&&this.mdCustomData.backgroundOpacity===(null===(t=this.element.customData)||void 0===t?void 0:t.backgroundOpacity)&&this.mdCustomData.borderOpacity===(null===(i=this.element.customData)||void 0===i?void 0:i.borderOpacity)&&this.mdCustomData.filenameVisible===(null===(n=this.element.customData)||void 0===n?void 0:n.filenameVisible)||(addAppendUpdateCustomData(a,{mdProps:this.mdCustomData}),s=!0),this.zoomValue!==this.element.scale[0]&&(s=!0,a.scale=[this.zoomValue,this.zoomValue]),s&&this.ea.addElementsToView(),this.close()}}class EmbeddableMenu{constructor(e,A){this.view=e,this.containerRef=A,this.updateElement=(e,A,t)=>{if(!A)return;const i=this.view,n=i.app;if(A=i.excalidrawAPI.getSceneElements().find((e=>e.id===A.id)),!A)return;const s=`[[${n.metadataCache.fileToLinktext(t,i.file.path,"md"===t.extension)}${e}]]`;mutateElement(A,{link:s}),i.excalidrawData.elementLinks.set(A.id,s),i.setDirty(99),i.updateScene({appState:{activeEmbeddable:null}})},this.menuFadeTimeout=0,this.menuElementId=null}handleMouseEnter(){var e;clearTimeout(this.menuFadeTimeout),null===(e=this.containerRef.current)||void 0===e||e.style.setProperty("opacity","1")}handleMouseLeave(){const e=this;this.menuFadeTimeout=window.setTimeout((()=>{var A;null===(A=e.containerRef.current)||void 0===A||A.style.setProperty("opacity","0.2")}),5e3)}renderButtons(e){var A,t;const i=this.view,n=i.app,s=null==i?void 0:i.excalidrawAPI;if(!s)return null;if(!i.file)return null;const a=e.viewModeEnabled&&!i.allowFrameButtonsInViewMode;if(!e.activeEmbeddable||"active"!==e.activeEmbeddable.state||a)return this.menuElementId=null,this.menuFadeTimeout&&(clearTimeout(this.menuFadeTimeout),this.menuFadeTimeout=0),null;const o=null===(A=e.activeEmbeddable)||void 0===A?void 0:A.element;this.menuElementId!==o.id&&(this.menuElementId=o.id,this.handleMouseLeave());let r=o.link;if(!r)return null;const l=useDefaultExcalidrawFrame(o);let c=Boolean(null===(t=o.link)||void 0===t?void 0:t.match(REG_LINKINDEX_HYPERLINK));if(!l&&!c){if(r.startsWith("data:text/html"))c=!0;else{const e=REGEX_LINK.getRes(o.link).next();if(!e||!e.value&&e.done)return null;r=REGEX_LINK.getLink(e),c=Boolean(r.match(REG_LINKINDEX_HYPERLINK))}if(!c){const{subpath:A,file:t}=processLinkText(r,i);if(!t)return;const a="md"===t.extension,{x:l,y:c}=sceneCoordsToViewportCoords({sceneX:o.x,sceneY:o.y},e),g=c-2.5*ROOTELEMENTSIZE-e.offsetTop+"px",d=l-e.offsetLeft+"px";return React__namespace.createElement("div",{ref:this.containerRef,className:"embeddable-menu",style:{top:g,left:d,opacity:1},onMouseEnter:()=>this.handleMouseEnter(),onPointerDown:()=>this.handleMouseEnter(),onMouseLeave:()=>this.handleMouseLeave()},React__namespace.createElement("div",{className:"Island",style:{position:"relative",display:"block"}},a&&React__namespace.createElement(ActionButton,{key:"MarkdownSection",title:t$d("NARROW_TO_HEADING"),action:async()=>{const e=(await n.metadataCache.blockCache.getForFile({isCancelled:()=>!1},t)).blocks.filter((e=>{var A;return e.display&&"heading"===(null===(A=e.node)||void 0===A?void 0:A.type)})),i=[""].concat(e.map((e=>`#${cleanSectionHeading(e.display)}`))),s=[t$d("SHOW_ENTIRE_FILE")].concat(e.map((e=>e.display))),a=await ScriptEngine.suggester(n,s,i,"Select section from document");(a||""===a)&&a!==A&&this.updateElement(a,o,t)},icon:ICONS.ZoomToSection,view:i}),a&&React__namespace.createElement(ActionButton,{key:"MarkdownBlock",title:t$d("NARROW_TO_BLOCK"),action:async()=>{var e,i,s;if(!t)return;const a=(await n.metadataCache.blockCache.getForFile({isCancelled:()=>!1},t)).blocks.filter((e=>{var A;return e.display&&"paragraph"===(null===(A=e.node)||void 0===A?void 0:A.type)})),r=["entire-file"].concat(a),l=[t$d("SHOW_ENTIRE_FILE")].concat(a.map((e=>{var A;return`${(null===(A=e.node)||void 0===A?void 0:A.id)?`#^${e.node.id}: `:""}${e.display.trim()}`}))),c=await ScriptEngine.suggester(n,l,r,"Select section from document");if(!c)return;if("entire-file"===c){if(""===A)return;return void this.updateElement("",o,t)}let g=c.node.id;if(!g||`#^${g}`!==A){if(!g){const A=null===(s=null===(i=null===(e=c.node)||void 0===e?void 0:e.position)||void 0===i?void 0:i.end)||void 0===s?void 0:s.offset;if(!A)return;g=nanoid();const a=await n.vault.cachedRead(t);if(!a)return;await n.vault.modify(t,a.slice(0,A)+` ^${g}`+a.slice(A)),await sleep(200)}this.updateElement(`#^${g}`,o,t)}},icon:ICONS.ZoomToBlock,view:i}),React__namespace.createElement(ActionButton,{key:"ZoomToElement",title:t$d("ZOOM_TO_FIT"),action:()=>{o&&s.zoomToFit([o],30,.1)},icon:ICONS.ZoomToSelectedElement,view:i}),React__namespace.createElement(ActionButton,{key:"Properties",title:t$d("PROPERTIES"),action:()=>{o&&new EmbeddableSettings(i.plugin,i,t,o).open()},icon:ICONS.Properties,view:i})))}}if(c||l){const A=l?s.getHTMLIFrameElement(o.id):i.getEmbeddableElementById(o.id);if(!A||!A.contentWindow)return null;const{x:t,y:n}=sceneCoordsToViewportCoords({sceneX:o.x,sceneY:o.y},e),a=n-2.5*ROOTELEMENTSIZE-e.offsetTop+"px",c=t-e.offsetLeft+"px";return React__namespace.createElement("div",{ref:this.containerRef,className:"embeddable-menu",style:{top:a,left:c,opacity:1},onMouseEnter:()=>this.handleMouseEnter(),onPointerDown:()=>this.handleMouseEnter(),onMouseLeave:()=>this.handleMouseLeave()},React__namespace.createElement("div",{className:"Island",style:{position:"relative",display:"block"}},A.src!==r&&!A.src.startsWith("https://www.youtube.com")&&!A.src.startsWith("https://player.vimeo.com")&&React__namespace.createElement(ActionButton,{key:"Reload",title:t$d("RELOAD"),action:()=>{A.src=r},icon:ICONS.Reload,view:i}),React__namespace.createElement(ActionButton,{key:"Open",title:t$d("OPEN_IN_BROWSER"),action:()=>{i.openExternalLink(A.src.startsWith("https://www.youtube.com")||A.src.startsWith("https://player.vimeo.com")?o.link:A.src)},icon:ICONS.Globe,view:i}),React__namespace.createElement(ActionButton,{key:"ZoomToElement",title:t$d("ZOOM_TO_FIT"),action:()=>{o&&s.zoomToFit([o],i.plugin.settings.zoomToFitMaxLevel,.1)},icon:ICONS.ZoomToSelectedElement,view:i}),React__namespace.createElement(ActionButton,{key:"Properties",title:t$d("PROPERTIES"),action:()=>{o&&new EmbeddableSettings(i.plugin,i,null,o).open()},icon:ICONS.Properties,view:i}),(null==r?void 0:r.startsWith("data:text/html"))&&React__namespace.createElement(ActionButton,{key:"CopyCode",title:t$d("COPYCODE"),action:()=>{o&&navigator.clipboard.writeText(atob(r.split(",")[1]))},icon:ICONS.Copy,view:i})))}}}var TextMode;!function(e){e.parsed="parsed",e.raw="raw"}(TextMode||(TextMode={}));const HIDE="excalidraw-hidden",SHOW="excalidraw-visible",addFiles=async(e,A,t)=>{if(!e||0===e.length||!A)return;const i=A.excalidrawAPI;if(!i)return;if(e=e.filter((e=>e&&e.size&&e.size.height>0&&e.size.width>0)),0===e.length)return;const n=scaleLoadedImage(A.getScene(),e);void 0===t&&(t=n.scene.appState.theme),n.dirty&&A.updateScene({elements:n.scene.elements,appState:n.scene.appState,commitToHistory:!1});for(const i of e)if(A.excalidrawData.hasFile(i.id)&&A.excalidrawData.getFile(i.id).setImage(i.dataURL,i.mimeType,i.size,t,i.hasSVGwithBitmap),A.excalidrawData.hasEquation(i.id)){const e=A.excalidrawData.getEquation(i.id).latex;A.excalidrawData.setEquation(i.id,{latex:e,isLoaded:!0})}i.addFiles(e)},warningUnknowSeriousError=()=>{new obsidian_module.Notice("WARNING: Excalidraw ran into an unknown problem!\n\nThere is a risk that your most recent changes cannot be saved.\n\nTo be on the safe side...\n1) Please select your drawing using CTRL/CMD+A and make a copy with CTRL/CMD+C.\n2) Then create an empty drawing in a new pane by CTRL/CMD+clicking the Excalidraw ribbon button,\n3) and paste your work to the new document with CTRL/CMD+V.",6e4)};class ExcalidrawView extends obsidian_module.TextFileView{constructor(e,A){super(e),this.getScene=null,this.addElements=null,this.getSelectedTextElement=null,this.getSelectedImageElement=null,this.getSelectedElementWithLink=null,this.addText=null,this.addLink=null,this.refresh=null,this.excalidrawAPI=null,this.excalidrawWrapperRef=null,this.toolsPanelRef=null,this.embeddableMenuRef=null,this.linksAlwaysOpenInANewPane=!1,this.allowFrameButtonsInViewMode=!1,this.lastSaveTimestamp=0,this.lastLoadedFile=null,this.modifierKeyDown={shiftKey:!1,metaKey:!1,ctrlKey:!1,altKey:!1},this.currentPosition={x:0,y:0},this.embeddableRefs=new Map,this.embeddableLeafRefs=new Map,this.semaphores={popoutUnload:!1,viewunload:!1,scriptsReady:!1,justLoaded:!1,preventAutozoom:!1,autosaving:!1,dirty:null,preventReload:!1,isEditingText:!1,saving:!1,forceSaving:!1,hoverSleep:!1,wheelTimeout:null},this.autosaveTimer=null,this.textMode=TextMode.raw,this.compatibilityMode=!1,this.isEditingTextResetTimer=null,this.id=this.leaf.id,this.getHookServer=()=>{var e;return null!==(e=this.hookServer)&&void 0!==e?e:this.plugin.ea},this.preventReloadResetTimer=null,this.hiddenMobileLeaves=[],this.offsetLeft=0,this.offsetTop=0,this.blockTextModeChange=!1,this.isLoaded=!1,this.activeLoader=null,this.nextLoader=null,this.initialContainerSizeUpdate=!1,this.previousSceneVersion=0,this.previousBackgroundColor="",this.previousTheme="",this.colorChangeTimer=null,this.getActiveEmbeddable=()=>{var e,A;if(!this.excalidrawAPI)return null;const t=this.excalidrawAPI.getAppState();return t.activeEmbeddable&&"active"===t.activeEmbeddable.state?this.getEmbeddableLeafElementById(null===(A=null===(e=t.activeEmbeddable)||void 0===e?void 0:e.element)||void 0===A?void 0:A.id):null},this.plugin=A,this.excalidrawData=new ExcalidrawData(A),this.hookServer=A.ea,this.canvasNodeFactory=new CanvasNodeFactory(this)}setHookServer(e){this.hookServer=e||this.plugin.ea}preventAutozoom(){this.semaphores.preventAutozoom=!0,setTimeout((()=>this.semaphores.preventAutozoom=!1),1500)}saveExcalidraw(e){if(!e){if(!this.getScene)return!1;e=this.getScene()}const A=`${this.file.path.substring(0,this.file.path.lastIndexOf(".md"))}.excalidraw`,t=app.vault.getAbstractFileByPath(obsidian_module.normalizePath(A));t&&t instanceof obsidian_module.TFile?app.vault.modify(t,JSON.stringify(e,null,"\t")):app.vault.create(A,JSON.stringify(e,null,"\t"))}async exportExcalidraw(e){this.getScene&&this.file&&(this.app.isMobile?new Prompt(this.app,"Please provide filename",this.file.basename,"filename, leave blank to cancel action").openAndGetValue((async e=>{if(!e)return;e=`${e}.excalidraw`;const A=splitFolderAndFilename(this.file.path).folderpath;await checkAndCreateFolder(A);const t=getNewUniqueFilepath(this.app.vault,e,A);this.app.vault.create(t,JSON.stringify(this.getScene(),null,"\t")),new obsidian_module.Notice(`Exported to ${t}`,6e3)})):download("data:text/plain;charset=utf-8",encodeURIComponent(JSON.stringify(this.getScene(e),null,"\t")),`${this.file.basename}.excalidraw`))}async svg(e,A,t){const i=this.exportDialog,n={withBackground:i?!i.transparent:getWithBackground(this.plugin,this.file),withTheme:!0};return await getSVG(Object.assign(Object.assign({},e),{appState:Object.assign(Object.assign({},e.appState),{theme:null!=A?A:i?i.theme:getExportTheme(this.plugin,this.file,e.appState.theme),exportEmbedScene:void 0===t?!!i&&i.embedScene:t})}),n,i?i.padding:getExportPadding(this.plugin,this.file),this.file)}async saveSVG(e,A){if(!e){if(!this.getScene)return!1;e=this.getScene()}const t=async(t,i)=>{const n=this.app.vault.getAbstractFileByPath(obsidian_module.normalizePath(t)),s=await this.svg(e,i,A);if(!s)return;const a=(new XMLSerializer).serializeToString(embedFontsInSVG(s,this.plugin));n&&n instanceof obsidian_module.TFile?await this.app.vault.modify(n,a):await this.app.vault.create(t,a)};this.plugin.settings.autoExportLightAndDark?(await t(getIMGFilename(this.file.path,"dark.svg"),"dark"),await t(getIMGFilename(this.file.path,"light.svg"),"light")):await t(getIMGFilename(this.file.path,"svg"))}async exportSVG(e,A){if(!this.getScene||!this.file)return;let t=await this.svg(this.getScene(A),void 0,e);t&&(t=embedFontsInSVG(t,this.plugin),download(null,svgToBase64(t.outerHTML),`${this.file.basename}.svg`))}async png(e,A,t){const i=this.exportDialog,n={withBackground:i?!i.transparent:getWithBackground(this.plugin,this.file),withTheme:!0};return await getPNG(Object.assign(Object.assign({},e),{appState:Object.assign(Object.assign({},e.appState),{theme:null!=A?A:i?i.theme:getExportTheme(this.plugin,this.file,e.appState.theme),exportEmbedScene:void 0===t?!!i&&i.embedScene:t})}),n,i?i.padding:getExportPadding(this.plugin,this.file),i?i.scale:getPNGScale(this.plugin,this.file))}async savePNG(e,A){if(!e){if(!this.getScene)return!1;e=this.getScene()}const t=async(t,i)=>{const n=this.app.vault.getAbstractFileByPath(obsidian_module.normalizePath(t)),s=await this.png(e,i,A);s&&(n&&n instanceof obsidian_module.TFile?await this.app.vault.modifyBinary(n,await s.arrayBuffer()):await this.app.vault.createBinary(t,await s.arrayBuffer()))};this.plugin.settings.autoExportLightAndDark?(await t(getIMGFilename(this.file.path,"dark.png"),"dark"),await t(getIMGFilename(this.file.path,"light.png"),"light")):await t(getIMGFilename(this.file.path,"png"))}async exportPNGToClipboard(e,A){if(!this.getScene||!this.file)return;const t=await this.png(this.getScene(A),void 0,e);t&&await navigator.clipboard.write([new window.ClipboardItem({"image/png":t})])}async exportPNG(e,A){if(!this.getScene||!this.file)return;const t=await this.png(this.getScene(A),void 0,e);if(!t)return;const i=new FileReader;i.readAsDataURL(t);const n=this;i.onloadend=function(){const e=i.result;download(null,e,`${n.file.basename}.png`)}}async save(e=!0,A=!1){if(!this.isLoaded)return;if(this.semaphores.saving)return;this.semaphores.saving=!0;let t=!1;if(this.getScene&&this.excalidrawAPI&&this.isLoaded&&this.file&&app.vault.getAbstractFileByPath(this.file.path)){try{const i=Boolean(null!==this.semaphores.dirty&&this.semaphores.dirty||this.semaphores.autosaving||A),n=this.getScene();if(this.compatibilityMode?await this.excalidrawData.syncElements(n):await this.excalidrawData.syncElements(n,this.excalidrawAPI.getAppState().selectedElementIds)&&!this.semaphores.popoutUnload&&await this.loadDrawing(!1,this.excalidrawAPI.getSceneElementsIncludingDeleted().filter((e=>e.isDeleted))),i){this.preventReloadResetTimer&&(clearTimeout(this.preventReloadResetTimer),this.preventReloadResetTimer=null),this.semaphores.preventReload=e,await super.save();const i=this.file.path,n=this.lastSavedData;if(setTimeout((()=>imageCache.addBAKToCache(i,n)),50),t=this.lastSaveTimestamp===this.file.stat.mtime&&!e&&A,this.lastSaveTimestamp=this.file.stat.mtime,this.clearDirty(),e){const e=this;this.preventReloadResetTimer=setTimeout((()=>e.semaphores.preventReload=!1),2e3)}}if(!t&&!this.semaphores.autosaving&&(!this.semaphores.viewunload||this.semaphores.popoutUnload)){const e=this.excalidrawData.autoexportPreference;(e===AutoexportPreference.inherit&&this.plugin.settings.autoexportSVG||e===AutoexportPreference.both||e===AutoexportPreference.svg)&&this.saveSVG(),(e===AutoexportPreference.inherit&&this.plugin.settings.autoexportPNG||e===AutoexportPreference.both||e===AutoexportPreference.png)&&this.savePNG(),!this.compatibilityMode&&this.plugin.settings.autoexportExcalidraw&&this.saveExcalidraw()}}catch(e){errorlog({where:"ExcalidrawView.save",fn:this.save,error:e}),warningUnknowSeriousError()}this.semaphores.saving=!1,t&&this.reload(!0,this.file)}else this.semaphores.saving=!1}getViewData(){var e,A,t;if(!this.getScene||!this.excalidrawData.loaded)return this.data;const i=this.getScene();if(!i)return this.data;if(!this.compatibilityMode){let i=this.data.search(/(^%%\n)?# Text Elements\n/m);if(-1==i&&(i=this.data.search(/(%%\n)?# Drawing\n/)),-1==i)return this.data;const n=(null===(e=this.exportDialog)||void 0===e?void 0:e.dirty)&&(null===(A=this.exportDialog)||void 0===A?void 0:A.saveSettings)?[["excalidraw-export-padding",this.exportDialog.padding.toString()],["excalidraw-export-pngscale",this.exportDialog.scale.toString()],["excalidraw-export-dark","dark"===this.exportDialog.theme?"true":"false"],["excalidraw-export-transparent",this.exportDialog.transparent?"true":"false"],[FRONTMATTER_KEY,this.textMode===TextMode.raw?"raw":"parsed"]]:[[FRONTMATTER_KEY,this.textMode===TextMode.raw?"raw":"parsed"]];(null===(t=this.exportDialog)||void 0===t?void 0:t.dirty)&&(this.exportDialog.dirty=!1);let s=updateFrontmatterInString(this.data.substring(0,i),n);const a=/(^---[\w\W]*?---\n)(!\[\[.*?]]\n(%%\n)?)/m;s.match(a)&&(s=s.replace(a,"$1")),this.excalidrawData.disableCompression||(this.excalidrawData.disableCompression=this.isEditedAsMarkdownInOtherView());const o=s+this.excalidrawData.generateMD(this.excalidrawAPI.getSceneElementsIncludingDeleted().filter((e=>e.isDeleted)));return this.excalidrawData.disableCompression=!1,o}return this.compatibilityMode?JSON.stringify(i,null,"\t"):this.data}restoreMobileLeaves(){this.hiddenMobileLeaves.length>0&&(this.hiddenMobileLeaves.forEach((e=>{e[0].containerEl.style.display=e[1]})),this.hiddenMobileLeaves=[])}toggleDisableBinding(){const e=!this.excalidrawAPI.getAppState().invertBindingBehaviour;this.updateScene({appState:{invertBindingBehaviour:e}}),new obsidian_module.Notice(e?"Inverted Mode: Default arrow binding is now disabled. Use CTRL/CMD to temporarily enable binding when needed.":"Normal Mode: Arrow binding is now enabled. Use CTRL/CMD to temporarily disable binding when needed.")}toggleFrameRendering(){const e=this.excalidrawAPI.getAppState().frameRendering;this.updateScene({appState:{frameRendering:Object.assign(Object.assign({},e),{enabled:!e.enabled})}}),new obsidian_module.Notice(e.enabled?"Frame Rendering: Enabled":"Frame Rendering: Disabled")}toggleFrameClipping(){const e=this.excalidrawAPI.getAppState().frameRendering;this.updateScene({appState:{frameRendering:Object.assign(Object.assign({},e),{clip:!e.clip})}}),new obsidian_module.Notice(e.clip?"Frame Clipping: Enabled":"Frame Clipping: Disabled")}gotoFullscreen(){this.plugin.leafChangeTimeout&&(clearTimeout(this.plugin.leafChangeTimeout),this.plugin.leafChangeTimeout=null),this.excalidrawWrapperRef&&(this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.setFullscreen(!0),(e=>{for(;e&&!e.hasClass("workspace-split");)e.addClass(SHOW),e=e.parentElement;e&&(e.addClass(SHOW),e.querySelectorAll(`div.workspace-split:not(.${SHOW})`).forEach((e=>e.addClass(SHOW))),e.querySelector(`div.workspace-leaf-content.${SHOW} > .view-header`).addClass(SHOW),e.querySelectorAll(`div.workspace-tab-container.${SHOW} > div.workspace-leaf:not(.${SHOW})`).forEach((e=>e.addClass(SHOW))),e.querySelectorAll(`div.workspace-tabs.${SHOW} > div.workspace-tab-header-container`).forEach((e=>e.addClass(SHOW))),e.querySelectorAll(`div.workspace-split.${SHOW} > div.workspace-tabs:not(.${SHOW})`).forEach((e=>e.addClass(SHOW))));const A=this.ownerDocument;A.body.querySelectorAll(`div.workspace-split:not(.${SHOW})`).forEach((e=>e.addClass(HIDE))),A.body.querySelector(`div.workspace-leaf-content.${SHOW} > .view-header`).addClass(HIDE),A.body.querySelectorAll(`div.workspace-tab-container.${SHOW} > div.workspace-leaf:not(.${SHOW})`).forEach((e=>e.addClass(HIDE))),A.body.querySelectorAll(`div.workspace-tabs.${SHOW} > div.workspace-tab-header-container`).forEach((e=>e.addClass(HIDE))),A.body.querySelectorAll(`div.workspace-split.${SHOW} > div.workspace-tabs:not(.${SHOW})`).forEach((e=>e.addClass(HIDE))),A.body.querySelectorAll("div.workspace-ribbon").forEach((e=>e.addClass(HIDE))),A.body.querySelectorAll("div.mobile-navbar").forEach((e=>e.addClass(HIDE))),A.body.querySelectorAll("div.status-bar").forEach((e=>e.addClass(HIDE)))})(this.contentEl))}isFullscreen(){return Boolean(document.body.querySelector(".excalidraw-hidden"))}exitFullscreen(){this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.setFullscreen(!1);const e=this.ownerDocument;e.querySelectorAll(".excalidraw-hidden").forEach((e=>e.removeClass(HIDE))),e.querySelectorAll(".excalidraw-visible").forEach((e=>e.removeClass(SHOW)))}removeLinkTooltip(){const e=this.ownerDocument.body.querySelector("body>div.excalidraw-tooltip,div.excalidraw-tooltip--visible");e&&e.classList.remove("excalidraw-tooltip--visible")}handleLinkHookCall(e,A,t){if(this.getHookServer().onLinkClickHook)try{if(!this.getHookServer().onLinkClickHook(e,A,t,this,this.getHookServer()))return!0}catch(e){errorlog({where:"ExcalidrawView.onLinkOpen",fn:this.getHookServer().onLinkClickHook,error:e})}return!1}openExternalLink(e,A){if(e.match(/^cmd:\/\/.*/)){const A=e.replace("cmd://","");return this.app.commands.executeCommandById(A),!0}return!!e.match(REG_LINKINDEX_HYPERLINK)&&(window.open(e,"_blank"),!0)}openTagSearch(e){const A=e.matchAll(/#([\p{Letter}\p{Emoji_Presentation}\p{Number}\/_-]+)/gu).next();if(!A.value||A.value.length<2)return;const t=app.workspace.getLeavesOfType("search");0!=t.length&&(t[0].view.setQuery(`tag:${A.value[1]}`),this.app.workspace.revealLeaf(t[0]),this.isFullscreen()&&this.exitFullscreen())}async linkPrompt(e){const A=REGEX_LINK.getResList(e);let t=null,i=null,n=A[0];if((!(A.length>1)||(n=await ScriptEngine.suggester(this.app,A.filter((e=>Boolean(e.value))).map((e=>REGEX_LINK.getLink(e))),A.filter((e=>Boolean(e.value))),"Select link to open"),n))&&n)if(n.value){if(e=REGEX_LINK.getLink(n),!this.openExternalLink(e)){if(e.search("#")>-1){const A=getLinkParts(e,this.file);t=`#${A.isBlockRef?"^":""}${A.ref}`,e=A.path}if(!e.match(REG_LINKINDEX_INVALIDCHARS))return i=this.app.metadataCache.getFirstLinkpathDest(e,this.file.path),[i,e,t];new obsidian_module.Notice(t$d("FILENAME_INVALID_CHARS"),4e3)}}else this.openTagSearch(e)}async linkClick(e,A,t,i,n){var s,a,o,r;A||(A={id:null,text:null}),t||(t={id:null,fileId:null}),i||(i={id:null,text:null}),e||n||(n=emulateKeysForLinkClick("new-tab")),e&&!n&&(n={shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,altKey:e.altKey});const l=linkClickModifierType(n);let c=null,g=null,d=null;if((null==A?void 0:A.id)||(null==i?void 0:i.id)){if(d=null!==(s=null==i?void 0:i.text)&&void 0!==s?s:this.textMode===TextMode.parsed?this.excalidrawData.getRawText(A.id):A.text,!d)return;d=d.replaceAll("\n","");const t=null!==(a=A.id)&&void 0!==a?a:i.id,n=this.excalidrawAPI.getSceneElements().filter((e=>e.id===t))[0];if(this.handleLinkHookCall(n,d,e))return;if(this.openExternalLink(d))return;const o=await this.linkPrompt(d);if(!o)return;[c,d,g]=o}if(null==t?void 0:t.id){const e=this.getScene().elements.find((e=>e.id===t.id));if(this.excalidrawData.hasEquation(t.fileId))return void(async()=>{await this.save(!1),t.fileId=e.fileId;const A=this.excalidrawData.getEquation(t.fileId).latex;GenericInputPrompt.Prompt(this,this.plugin,this.app,t$d("ENTER_LATEX"),void 0,A,void 0,3).then((async e=>{e&&e!==A&&(this.excalidrawData.setEquation(t.fileId,{latex:e,isLoaded:!1}),await this.save(!1),await updateEquation(e,t.fileId,this,addFiles,this.plugin),this.setDirty(1))}))})();if(this.excalidrawData.hasMermaid(t.fileId)||getMermaidText(e))return void(shouldRenderMermaid&&this.excalidrawAPI.updateScene({appState:{openDialog:{name:"ttd",tab:"mermaid"}}}));if(await this.save(!1),this.excalidrawData.hasFile(t.fileId)){const A=this.excalidrawData.getFile(t.fileId);if(!A.isHyperLink&&!A.isLocalLink&&"md-properties"===l&&"md"===A.file.extension&&!this.plugin.isExcalidrawFile(A.file)){const e=async e=>{e&&A.linkParts.original!==e&&(A.resetImage(this.file.path,e),this.setDirty(2),await this.save(!1),await this.loadSceneFiles())};return void GenericInputPrompt.Prompt(this,this.plugin,this.app,"Customize the link",void 0,A.linkParts.original,[{caption:"✅",action:e}],1,!1,(e=>e.createEl("p",{text:fragWithHTML("Do not add [[square brackets]] around the filename!<br>Follow this format when editing your link:<br><mark>filename#^blockref|WIDTHxMAXHEIGHT</mark>")})),!1).then(e,(()=>{}))}const i=(A.isHyperLink||A.isLocalLink?`[](${A.hyperlink}) `:`[[${A.linkParts.original}]] `)+(e.link?e.link.match(/$cmd:\/\/.*/)||e.link.match(REG_LINKINDEX_HYPERLINK)?`[](${e.link})`:e.link:""),n=await this.linkPrompt(i);if(!n)return;[c,d,g]=n}}if(!d)return void new obsidian_module.Notice(t$d("LINK_BUTTON_CLICK_NO_TEXT"),2e4);const u=null!==(r=null!==(o=t.id)&&void 0!==o?o:A.id)&&void 0!==r?r:i.id,h=this.excalidrawAPI.getSceneElements().filter((e=>e.id===u))[0];if(!this.handleLinkHookCall(h,d,e))try{if("active-pane"!==l&&this.isFullscreen()&&this.exitFullscreen(),!c)return void new NewFileActions({plugin:this.plugin,path:d,keys:n,view:this,sourceElement:h}).open();this.linksAlwaysOpenInANewPane&&!anyModifierKeysPressed(n)&&(n=emulateKeysForLinkClick("new-pane"));const e=getLeaf(this.plugin,this.leaf,n);try{const A=app.plugins.plugins["drawio-obsidian"];if(A&&A._loaded&&"svg"===c.extension){const A=await this.app.vault.cachedRead(c);if(/(<|\<)(mxfile|mxgraph)/i.test(A))return void e.setViewState({type:"diagram-edit",state:{file:c.path}})}}catch(e){console.error(e)}await e.openFile(c,Object.assign({active:!this.linksAlwaysOpenInANewPane},g?{eState:{subpath:g}}:{}))}catch(e){new obsidian_module.Notice(e,4e3)}}async handleLinkClick(e){this.removeLinkTooltip();const A=this.getSelectedTextElement(),t=(null==A?void 0:A.id)?null:this.getSelectedImageElement(),i=(null==t?void 0:t.id)||(null==A?void 0:A.id)?null:this.getSelectedElementWithLink();this.linkClick(e instanceof MouseEvent?e:null,A,t,i,e instanceof MouseEvent?null:e)}onResize(){var e,A;if(this.plugin.leafChangeTimeout)return;const t=this.excalidrawAPI;this.plugin.settings.zoomToFitOnResize&&this.excalidrawAPI&&!this.semaphores.isEditingText&&t&&"text"!==(null===(A=null===(e=t.getAppState())||void 0===e?void 0:e.editingElement)||void 0===A?void 0:A.type)&&this.zoomToFit(!1)}getSceneVersion(e){return this.excalidrawGetSceneVersion||(this.excalidrawGetSceneVersion=this.plugin.getPackage(this.ownerWindow).excalidrawLib.getSceneVersion),this.excalidrawGetSceneVersion(e.filter((e=>!e.isDeleted)))}async forceSave(e=!1){this.semaphores.autosaving||this.semaphores.saving?e||new obsidian_module.Notice("Force Save aborted because saving is in progress)"):(this.preventReloadResetTimer&&(clearTimeout(this.preventReloadResetTimer),this.preventReloadResetTimer=null),this.semaphores.preventReload=!1,this.semaphores.forceSaving=!0,await this.save(!1,!0),this.plugin.triggerEmbedUpdates(),this.loadSceneFiles(),this.semaphores.forceSaving=!1,e||new obsidian_module.Notice("Save successful",1e3))}onload(){const e=Boolean(void 0===this.containerEl.onWindowMigrated);app.isMobile||e||this.containerEl.onWindowMigrated((()=>this.leaf.rebuildView()));const A=app.isMobile?document:this.containerEl.ownerDocument;this.ownerDocument=A,this.ownerWindow=this.ownerDocument.defaultView,this.plugin.getPackage(this.ownerWindow),this.semaphores.scriptsReady=!0,this.wheelEvent=e=>{this.semaphores.wheelTimeout&&clearTimeout(this.semaphores.wheelTimeout),this.semaphores.hoverSleep&&this.clearHoverPreview&&this.clearHoverPreview(),this.semaphores.wheelTimeout=setTimeout((()=>{clearTimeout(this.semaphores.wheelTimeout),this.semaphores.wheelTimeout=null}),1e3)},this.containerEl.addEventListener("wheel",this.wheelEvent,{passive:!1}),this.addAction("ScriptEngine",t$d("INSTALL_SCRIPT_BUTTON"),(()=>{new ScriptInstallPrompt(this.plugin).open()})),this.diskIcon=this.addAction("save",t$d("FORCE_SAVE"),(async()=>this.forceSave())),this.textIsRaw_Element=this.addAction("presentation",t$d("RAW"),(()=>this.changeTextMode(TextMode.parsed))),this.textIsParsed_Element=this.addAction("quote-glyph",t$d("PARSED"),(()=>this.changeTextMode(TextMode.raw))),this.linkAction_Element=this.addAction("link",t$d("OPEN_LINK"),(e=>this.handleLinkClick(e)));const t=this;app.workspace.onLayoutReady((async()=>{this.canvasNodeFactory.initialize(),t.contentEl.addClass("excalidraw-view"),await t.addSlidingPanesListner(),t.addParentMoveObserver(),t.onKeyUp=e=>{t.modifierKeyDown={shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey}},t.onKeyDown=e=>{this.modifierKeyDown={shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey}},t.ownerWindow.addEventListener("keydown",t.onKeyDown,!1),t.ownerWindow.addEventListener("keyup",t.onKeyUp,!1)})),this.setupAutosaveTimer(),super.onload()}async addSlidingPanesListner(){const e=this;this.slidingPanesListner=()=>{e.refresh&&e.refresh()};let A=app.workspace.rootSplit;for(;!A;)await sleep(50),A=app.workspace.rootSplit;A.containerEl.addEventListener("scroll",this.slidingPanesListner)}removeSlidingPanesListner(){var e;this.slidingPanesListner&&(null===(e=app.workspace.rootSplit.containerEl)||void 0===e||e.removeEventListener("scroll",this.slidingPanesListner))}addParentMoveObserver(){var e;const A=null!==(e=getParentOfClass(this.containerEl,"popover"))&&void 0!==e?e:getParentOfClass(this.containerEl,"workspace-leaf");if(!A)return;const t=A.classList.contains("popover");this.offsetLeft=A.offsetLeft,this.offsetTop=A.offsetTop;const i=this;this.parentMoveObserver=new MutationObserver((async e=>{const A=e[0].target;if(!(A instanceof HTMLElement))return;const{offsetLeft:t,offsetTop:n}=A;t===i.offsetLeft&&n==i.offsetTop||(i.refresh&&i.refresh(),i.offsetLeft=t,i.offsetTop=n)})),this.parentMoveObserver.observe(A,{attributeOldValue:!0,attributeFilter:t?["data-x","data-y"]:["class","style"]})}removeParentMoveObserver(){this.parentMoveObserver&&this.parentMoveObserver.disconnect()}setTheme(e){const A=this.excalidrawAPI;if(!A)return;if(this.file&&hasExportTheme(this.plugin,this.file))return;const t=A.getAppState();this.excalidrawData.scene.theme=e,this.updateScene({appState:Object.assign(Object.assign({},t),{theme:e}),commitToHistory:!1})}async changeTextMode(e,A=!0){if(this.compatibilityMode)return;if(this.blockTextModeChange)return;this.blockTextModeChange=!0,this.textMode=e,e===TextMode.parsed?(this.textIsRaw_Element.hide(),this.textIsParsed_Element.show()):(this.textIsRaw_Element.show(),this.textIsParsed_Element.hide()),this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.setPreviewMode(e===TextMode.parsed);const t=this.excalidrawAPI;t&&A&&(await this.save(),this.preventAutozoom(),await this.excalidrawData.loadData(this.data,this.file,this.textMode),this.excalidrawData.scene.appState.theme=t.getAppState().theme,await this.loadDrawing(!1),t.history.clear()),this.prevTextMode=this.textMode,this.blockTextModeChange=!1}setupAutosaveTimer(){const e=async()=>{var A;if(!this.isLoaded)return void(this.autosaveTimer=setTimeout(e,this.plugin.settings.autosaveInterval));const t=this.excalidrawAPI;if(!t)return void warningUnknowSeriousError();const i=t.getAppState(),n=null!==i.editingElement;if(this.refresh(),!this.semaphores.dirty||this.semaphores.dirty!=(null===(A=this.file)||void 0===A?void 0:A.path)||!this.plugin.settings.autosave||this.semaphores.forceSaving||this.semaphores.autosaving||n||null!==i.draggingElement)this.autosaveTimer=setTimeout(e,this.plugin.activeExcalidrawView===this&&this.semaphores.dirty&&this.plugin.settings.autosave?1e3:this.plugin.settings.autosaveInterval);else{if(this.autosaveTimer=null,this.excalidrawAPI){this.semaphores.autosaving=!0;const e=this;this.save().then((()=>e.semaphores.autosaving=!1))}this.autosaveTimer=setTimeout(e,this.plugin.settings.autosaveInterval)}};this.autosaveFunction=e,this.autosaveTimer&&(clearTimeout(this.autosaveTimer),this.autosaveTimer=null),this.autosaveTimer=setTimeout(e,this.plugin.settings.autosaveInterval)}onunload(){var e,A,t,i,n,s,a;if(this.restoreMobileLeaves(),this.semaphores.viewunload=!0,this.semaphores.popoutUnload=this.ownerDocument!==document&&0===this.ownerDocument.body.querySelectorAll(".workspace-tab-header").length,null===(e=this.ownerWindow)||void 0===e||e.removeEventListener("keydown",this.onKeyDown,!1),null===(A=this.ownerWindow)||void 0===A||A.removeEventListener("keyup",this.onKeyUp,!1),this.containerEl.removeEventListener("wheel",this.wheelEvent,!1),this.getHookServer().onViewUnloadHook)try{this.getHookServer().onViewUnloadHook(this)}catch(e){errorlog({where:"ExcalidrawView.onunload",fn:this.getHookServer().onViewUnloadHook,error:e})}const o=null===(i=null===(t=this.containerEl)||void 0===t?void 0:t.ownerDocument)||void 0===i?void 0:i.body.querySelector("body>div.excalidraw-tooltip,div.excalidraw-tooltip--visible");o&&(null===(s=null===(n=this.containerEl)||void 0===n?void 0:n.ownerDocument)||void 0===s||s.body.removeChild(o)),this.removeParentMoveObserver(),this.removeSlidingPanesListner(),this.autosaveTimer&&(clearInterval(this.autosaveTimer),this.autosaveTimer=null);const r=null===(a=this.file)||void 0===a?void 0:a.path,l=this.plugin;r&&setTimeout((()=>{l.triggerEmbedUpdates(r)}),300)}async reload(e=!1,A){if(this.semaphores.preventReload)return void(this.semaphores.preventReload=!1);if(this.semaphores.saving)return;if(this.lastLoadedFile=null,this.diskIcon.querySelector("svg").removeClass("excalidraw-dirty"),this.compatibilityMode)return void this.clearDirty();const t=this.excalidrawAPI;if(!this.file||!t)return;const i=A&&A===this.file;i&&(this.data=await app.vault.read(A),this.preventAutozoom()),e?await this.excalidrawData.loadData(this.data,this.file,this.textMode):await this.excalidrawData.setTextMode(this.textMode),this.excalidrawData.scene.appState.theme=t.getAppState().theme,await this.loadDrawing(i),this.clearDirty()}async zoomToElementId(e,A){let t=0;for(;!this.excalidrawAPI&&t++<100;)await sleep(50);const i=this.excalidrawAPI;if(!i)return;const n=i.getSceneElements();let s=n.filter((A=>A.id===e));if(0!==s.length){if(A){const e=this.plugin.ea.getElementsInTheSameGroupWithElement(s[0],n);e.length>0&&(s=e)}this.preventAutozoom(),this.zoomToElements(!i.getAppState().viewModeEnabled,s)}}setEphemeralState(e){if(!e)return;const A=this;let t=null;e.match&&e.match.content&&e.match.matches&&1===e.match.matches.length&&2===e.match.matches[0].length&&(t=[e.match.content.substring(e.match.matches[0][0],e.match.matches[0][1])]);const i=async()=>{var e,t;let i=0;for(;(A.semaphores.justLoaded||!A.isLoaded||!A.excalidrawAPI||(null===(t=null===(e=A.excalidrawAPI)||void 0===e?void 0:e.getAppState())||void 0===t?void 0:t.isLoading))&&i++<100;)await sleep(50)},n=getEmbeddedFilenameParts(e.subpath);n.hasBlockref&&setTimeout((async()=>{await i(),setTimeout((()=>A.zoomToElementId(n.blockref,n.hasGroupref)))})),n.hasSectionref?t=[`# ${n.sectionref}`]:e.line&&e.line>0&&(t=[this.data.split("\n")[e.line-1]]),t&&setTimeout((async()=>{await i();const e=A.excalidrawAPI;if(!e)return;if(e.getAppState().isLoading)return;const s=e.getSceneElements();if(1===t.length&&t[0].startsWith("[")){let i=REGEX_LINK.getResList(t[0])[0];if(i){const t=REGEX_LINK.getLink(i);if(t){const i=A.plugin.app.metadataCache.getFirstLinkpathDest(t,A.file.path);if(i){let t=[];if(A.excalidrawData.files.forEach(((e,A)=>{var n;(null===(n=e.file)||void 0===n?void 0:n.path)===i.path&&t.push(A)})),t.length>0){const i=s.filter((e=>"image"===e.type&&t.includes(e.fileId)));i.length>0&&(this.preventAutozoom(),setTimeout((()=>A.zoomToElements(!e.getAppState().viewModeEnabled,i))))}}}}}A.selectElementsMatchingQuery(s,t,!e.getAppState().viewModeEnabled,n.hasSectionref,n.hasGroupref)})),super.setEphemeralState(e)}clear(){this.canvasNodeFactory.purgeNodes(),this.embeddableRefs.clear(),this.embeddableLeafRefs.clear(),delete this.exportDialog;const e=this.excalidrawAPI;e&&(this.activeLoader&&(this.activeLoader.terminate=!0,this.activeLoader=null),this.nextLoader=null,e.resetScene(),this.previousSceneVersion=0)}async setViewData(e,A=!1){this.lastLoadedFile!==this.file&&(this.isLoaded=!1,this.file&&(this.plugin.settings.showNewVersionNotification&&checkExcalidrawVersion(app),A&&this.clear(),this.lastSaveTimestamp=this.file.stat.mtime,this.lastLoadedFile=this.file,e=this.data=e.replaceAll("\r\n","\n").replaceAll("\r","\n"),app.workspace.onLayoutReady((async()=>{if(this.compatibilityMode="excalidraw"===this.file.extension,await this.plugin.loadSettings(),this.compatibilityMode)this.textIsRaw_Element.hide(),this.textIsParsed_Element.hide(),this.linkAction_Element.hide(),this.textMode=TextMode.raw,await this.excalidrawData.loadLegacyData(e,this.file),this.plugin.settings.compatibilityMode||new obsidian_module.Notice(t$d("COMPATIBILITY_MODE"),4e3),this.excalidrawData.disableCompression=!0;else{this.linkAction_Element.show(),this.excalidrawData.disableCompression=!1;const A=getTextMode(e);this.changeTextMode(A,!1);try{if(!await this.excalidrawData.loadData(e,this.file,this.textMode))return}catch(e){if(errorlog({where:"ExcalidrawView.setViewData",error:e}),"iframe conversion canceled"===e.message)return void this.setMarkdownView();const A=this.file,t=this.plugin,i=this.leaf;return(async()=>{let n=!0,s=0;const a=Date.now();for(;!imageCache.isReady()&&n;){const e=`You've been now wating for <b>${Math.round((Date.now()-a)/1e3)}</b> seconds. `;imageCache.initializationNotice=!0;const A=new ConfirmationPrompt(t,`${s>0?s%4==0?e+"The CACHE is still loading.<br><br>":s%4==1?e+"Watch the top rigth corner for the notification.<br><br>":s%4==2?e+"I really, really hope the backup will work for you! <br><br>":e+"I am sorry, it is taking a while, there is not much I can do... <br><br>":""}${t$d("CACHE_NOT_READY")}`);n=await A.waitForClose,s++}const o=await imageCache.getBAKFromCache(A.path);o?new ConfirmationPrompt(t,t$d("BACKUP_AVAILABLE")).waitForClose.then((async e=>{e&&(await app.vault.modify(A,o),t.excalidrawFileModes[i.id||A.path]="excalidraw",t.setExcalidrawView(i))})):new obsidian_module.Notice(`Error loading drawing:\n${e.message}${"Cannot read property 'index' of undefined"===e.message?"\n'# Drawing' section is likely missing":""}\n\nTry manually fixing the file or restoring an earlier version from sync history.`,1e4)})(),void this.setMarkdownView()}}if(await this.loadDrawing(!0),this.plugin.ea.onFileOpenHook)try{await this.plugin.ea.onFileOpenHook({ea:getEA(this),excalidrawFile:this.file,view:this})}catch(e){errorlog({where:"ExcalidrawView.setViewData.onFileOpenHook",error:e})}const A=this.excalidrawData.getOnLoadScript();if(A){const e=this,t=this.file.basename+"-onlaod-script",i=()=>{e.excalidrawAPI?e.plugin.scriptEngine.executeScript(e,A,t,this.file):setTimeout(i,200)};i()}this.isLoaded=!0}))))}getGridColor(e,A){const t=this.plugin.ea.getCM(e),i=t.isDark(),n=(i?t.lighterBy(7):t.darkerBy(7)).stringHEX();return{Bold:(i?t.lighterBy(14):t.darkerBy(14)).stringHEX(),Regular:n,MajorGridFrequency:A.gridColor.MajorGridFrequency}}async loadSceneFiles(){if(!this.excalidrawAPI)return;const e=new EmbeddedFilesLoader(this.plugin),A=e=>{this.nextLoader=null,this.activeLoader=e,e.loadSceneFiles(this.excalidrawData,((e,t,i=!0)=>{e&&(addFiles(e,this,t),i&&(this.activeLoader=null,this.nextLoader?A(this.nextLoader):this.excalidrawData.getFiles().some((e=>{if(e&&!e.file&&e.attemptCounter<30){const e=this,A=this.file.path;return setTimeout((async()=>{e&&e.excalidrawAPI&&A===e.file.path&&e.loadSceneFiles()}),2e3),!0}return!1}))))}),0)};this.activeLoader?this.nextLoader=e:A(e)}async synchronizeWithData(e){let A=0;for(;this.semaphores.saving&&A++<30;)await sleep(100);if(A>=30)return void errorlog({where:"ExcalidrawView.synchronizeWithData",message:`Aborting sync with received file (${this.file.path}) because semaphores.saving remained true for ower 3 seconds`,fn:this.synchronizeWithData});this.semaphores.saving=!0;let t=!1;try{const A=e.deletedElements.map((e=>e.id)),i=this.excalidrawAPI.getSceneElementsIncludingDeleted().filter((e=>!A.contains(e.id))),n=i.map((e=>e.id)),s=A=>{switch(A.type){case"text":this.excalidrawData.textElements.set(A.id,e.textElements.get(A.id));break;case"image":e.getFile(A.fileId)?(this.excalidrawData.setFile(A.fileId,e.getFile(A.fileId)),t=!0):e.getEquation(A.fileId)&&(this.excalidrawData.setEquation(A.fileId,e.getEquation(A.fileId)),t=!0)}e.elementLinks.has(A.id)&&this.excalidrawData.elementLinks.set(A.id,e.elementLinks.get(A.id))};e.scene.elements.forEach(((A,a,o)=>{const r=i.filter((e=>e.id===A.id))[0];if(r&&(r.version<A.version||r.version===A.version&&JSON.stringify(r)!==JSON.stringify(A))){s(A);const e=n.indexOf(A.id);if(i.splice(e,1),0===a)i.splice(0,0,A),0!==e&&(n.splice(e,1),n.splice(0,0,A.id));else{const t=o[a-1].id,s=n.indexOf(t);i.splice(s+1,0,A),s!==e-1&&(n.splice(e,1),n.splice(s+1,0,A.id))}}else if(r)r&&"image"===A.type&&e.getFile(A.fileId)&&(this.excalidrawData.setFile(A.fileId,e.getFile(A.fileId)),t=!0);else if(s(A),0===a)i.splice(0,0,A),n.splice(0,0,A.id);else{const e=o[a-1].id,t=n.indexOf(e);i.splice(t+1,0,A),n.splice(t+1,0,A.id)}})),this.previousSceneVersion=this.getSceneVersion(i),this.getSceneVersion(e.scene.elements)!==this.previousSceneVersion&&this.setDirty(3),this.updateScene({elements:i}),t&&this.loadSceneFiles()}catch(e){errorlog({where:"ExcalidrawView.synchronizeWithData",message:`Error during sync with received file (${this.file.path})`,fn:this.synchronizeWithData,error:e})}this.semaphores.saving=!1}async loadDrawing(e,A){var t,i;const n=this.excalidrawData.scene;this.semaphores.justLoaded=e,this.initialContainerSizeUpdate=e,this.clearDirty();const s=this.excalidrawData.getOpenMode();this.semaphores.preventReload=!1;const a="always"===this.plugin.settings.defaultPenMode||"mobile"===this.plugin.settings.defaultPenMode&&app.isMobile,o=this.excalidrawAPI;if(o){const r=this.isLoaded?o.getAppState().viewModeEnabled:n.elements.length>0&&s.viewModeEnabled,l=this.isLoaded?o.getAppState().zenModeEnabled:s.zenModeEnabled;o.setLocalFont(this.plugin.settings.experimentalEnableFourthFont),this.updateScene({elements:n.elements.concat(null!=A?A:[]),files:n.files,commitToHistory:!0},e),this.updateScene({appState:Object.assign(Object.assign(Object.assign({},n.appState),this.excalidrawData.selectedElementIds?this.excalidrawData.selectedElementIds:{}),{zenModeEnabled:l,viewModeEnabled:r,linkOpacity:this.excalidrawData.getLinkOpacity(),trayModeEnabled:this.plugin.settings.defaultTrayMode,penMode:a,penDetected:a,allowPinchZoom:this.plugin.settings.allowPinchZoom,allowWheelZoom:this.plugin.settings.allowWheelZoom,pinnedScripts:this.plugin.settings.pinnedScripts,customPens:this.plugin.settings.customPens.slice(0,this.plugin.settings.numberOfCustomPens)})}),this.app.workspace.getActiveViewOfType(ExcalidrawView)===this.leaf.view&&this.excalidrawWrapperRef&&(null===(i=null===(t=this.excalidrawWrapperRef.current)||void 0===t?void 0:t.firstElementChild)||void 0===i||i.focus()),this.onAfterLoadScene()}else this.instantiateExcalidraw({elements:n.elements,appState:Object.assign(Object.assign({},n.appState),{zenModeEnabled:s.zenModeEnabled,viewModeEnabled:n.elements.length>0&&s.viewModeEnabled,linkOpacity:this.excalidrawData.getLinkOpacity(),trayModeEnabled:this.plugin.settings.defaultTrayMode,penMode:a,penDetected:a,allowPinchZoom:this.plugin.settings.allowPinchZoom,allowWheelZoom:this.plugin.settings.allowWheelZoom,pinnedScripts:this.plugin.settings.pinnedScripts,customPens:this.plugin.settings.customPens.slice(0,this.plugin.settings.numberOfCustomPens)}),files:n.files,libraryItems:await this.getLibrary()});const r=null!==this.data.match(/```compressed\-json\n/gm);this.compatibilityMode||this.plugin.settings.compress===r||this.isEditedAsMarkdownInOtherView()||this.setDirty(4)}isEditedAsMarkdownInOtherView(){return app.workspace.getLeavesOfType("markdown").filter((e=>e.view.file===this.file)).length>0}onAfterLoadScene(){this.loadSceneFiles(),this.updateContainerSize(null,!0),this.initializeToolsIconPanelAfterLoading()}setDirty(e){var A,t;this.semaphores.dirty=null===(A=this.file)||void 0===A?void 0:A.path,this.diskIcon.querySelector("svg").addClass("excalidraw-dirty"),!this.semaphores.viewunload&&(null===(t=this.toolsPanelRef)||void 0===t?void 0:t.current)&&this.toolsPanelRef.current.setDirty(!0),this.app.isMobile||obsidian_module.requireApiVersion("0.16.0")&&(this.leaf.tabHeaderInnerTitleEl.style.color="var(--color-accent)")}clearDirty(){var e;if(this.semaphores.viewunload)return;const A=this.excalidrawAPI;if(!A)return;this.semaphores.dirty=null,(null===(e=this.toolsPanelRef)||void 0===e?void 0:e.current)&&this.toolsPanelRef.current.setDirty(!1);const t=A.getSceneElements();t&&(this.previousSceneVersion=this.getSceneVersion(t)),this.diskIcon.querySelector("svg").removeClass("excalidraw-dirty"),app.isMobile||obsidian_module.requireApiVersion("0.16.0")&&(this.leaf.tabHeaderInnerTitleEl.style.color="")}initializeToolsIconPanelAfterLoading(){var e;if(this.semaphores.viewunload)return;const A=this.excalidrawAPI;if(!A)return;const t=A.getAppState(),i=null===(e=this.toolsPanelRef)||void 0===e?void 0:e.current;i&&(i.setTheme(t.theme),i.setExcalidrawViewMode(t.viewModeEnabled),i.setPreviewMode(this.compatibilityMode?null:this.textMode===TextMode.parsed),i.updateScriptIconMap(this.plugin.scriptEngine.scriptIconMap))}canAcceptExtension(e){return"excalidraw"===e}getDisplayText(){return this.file?this.file.basename:t$d("NOFILE")}getViewType(){return"excalidraw"}getIcon(){return ICON_NAME}setMarkdownView(){this.plugin.excalidrawFileModes[this.id||this.file.path]="markdown",this.plugin.setMarkdownView(this.leaf)}async openAsMarkdown(){!0===this.plugin.settings.compress&&(this.excalidrawData.disableCompression=!0,await this.save(!0,!0)),this.setMarkdownView()}async convertExcalidrawToMD(){await this.save(),this.plugin.openDrawing(await this.plugin.convertSingleExcalidrawToMD(this.file),"active-pane",!0)}convertTextElementToMarkdown(e,A){e&&new Prompt(this.app,"Filename","","Leave blank to cancel this action").openAndGetValue((async t=>{if(!t)return;t=`${t}.md`;const i=splitFolderAndFilename(this.file.path).folderpath;await checkAndCreateFolder(i);const n=getNewUniqueFilepath(this.app.vault,t,i),s=[];A&&A.link&&s.push(A.link),s.push(e.rawText);const a=await this.app.vault.create(n,s.join("\n"));if(a){const t=getEA(this),i=A?[e,A]:[e];t.copyViewElementsToEAforEditing(i),t.getElements().forEach((e=>e.isDeleted=!0));const[n,s,o,r]=A?[A.x,A.y,A.width,A.height]:[e.x,e.y,500,500],l=t.addEmbeddable(n,s,o,r,void 0,a);A&&["backgroundColor","fillStyle","roughness","roundness","strokeColor","strokeStyle","strokeWidth"].forEach((e=>{t.getElement(l)[e]=A[e]})),t.getElement(l),t.addElementsToView()}}))}async addYouTubeThumbnail(e){const A=await getYouTubeThumbnailLink(e),t=getEA(this),i=await t.addImage(0,0,A);t.getElement(i).link=e,t.addElementsToView(!0,!0,!0)}async addImageWithURL(e){const A=getEA(this);await A.addImage(0,0,e),A.addElementsToView(!0,!0,!0)}async addImageSaveToVault(e){const A=getEA(this),t=getMimeType(getURLImageExtension(e)),i=await getDataURLFromURL(e,t,3e3),n=await generateIdFromFile((new TextEncoder).encode(i)),s=await this.excalidrawData.saveDataURLtoVault(i,t,n);s?(await A.addImage(0,0,s),A.addElementsToView(!0,!0,!0)):new obsidian_module.Notice(t$d("ERROR_SAVING_IMAGE"))}async addTextWithIframely(e){var A;const t=await this.addText(e),i=`http://iframely.server.crestify.com/iframely?url=${e}`;try{const n=JSON.parse(await obsidian_module.request({url:i}));if(!n||n.error||!(null===(A=n.meta)||void 0===A?void 0:A.title))return;const s=getEA(this),a=s.getViewElements().filter((e=>e.id===t));1===a.length&&(a[0].text=a[0].originalText=a[0].rawText=`[${n.meta.title}](${e})`,s.copyViewElementsToEAforEditing(a),s.addElementsToView(!1,!1,!1))}catch(e){}}onPaneMenu(e,A){this.excalidrawAPI&&this.getViewSelectedElements().some((e=>"text"===e.type))&&e.addItem((e=>{e.setTitle(t$d("OPEN_LINK")).setIcon("external-link").setSection("pane").onClick((e=>{this.handleLinkClick(e)}))})),this.compatibilityMode?e.addItem((e=>{e.setTitle(t$d("CONVERT_FILE")).onClick((()=>this.convertExcalidrawToMD())).setSection("pane")})):e.addItem((e=>{e.setTitle(t$d("OPEN_AS_MD")).setIcon("document").onClick((()=>{this.openAsMarkdown()})).setSection("pane")})),e.addItem((e=>{e.setTitle(t$d("EXPORT_IMAGE")).setIcon("export-img").setSection("pane").onClick((async e=>{this.getScene&&this.file&&(this.exportDialog||(this.exportDialog=new ExportDialog(this.plugin,this,this.file),this.exportDialog.createForm()),this.exportDialog.open())})).setSection("pane")})).addItem((e=>{e.setTitle(t$d("INSTALL_SCRIPT_BUTTON")).setIcon("ScriptEngine").setSection("pane").onClick((()=>{new ScriptInstallPrompt(this.plugin).open()}))})),super.onPaneMenu(e,A)}async getLibrary(){var e;const A=this.plugin.getStencilLibrary();return(null==A?void 0:A.library)?A.library:null!==(e=null==A?void 0:A.libraryItems)&&void 0!==e?e:[]}async instantiateExcalidraw(e){for(;!this.semaphores.scriptsReady;)await sleep(50);const A=this.plugin.getPackage(this.ownerWindow).react,t=this.plugin.getPackage(this.ownerWindow).reactDOM;this.clearDirty();const i=A.createElement((()=>{var t;const i=A.useRef(null),n=A.useRef(null),s=A.useRef(null),[a,o]=A.useState({width:void 0,height:void 0});let r=null,l=null,c=null,g=Date.now(),d=!1;this.toolsPanelRef=n,this.embeddableMenuRef=s,this.obsidianMenu=new ObsidianMenu(this.plugin,n,this),this.embeddableMenu=new EmbeddableMenu(this,s);const u=e=>{this.excalidrawAPI=e,e.setLocalFont(this.plugin.settings.experimentalEnableFourthFont),setTimeout((()=>{var e,A,t;this.onAfterLoadScene(),this.excalidrawContainer=null===(A=null===(e=this.excalidrawWrapperRef)||void 0===e?void 0:e.current)||void 0===A?void 0:A.firstElementChild,null===(t=this.excalidrawContainer)||void 0===t||t.focus()}))};this.excalidrawWrapperRef=i;const h=()=>{const e=this.excalidrawAPI;if(!e)return;const A=e.getAppState(),{width:t,height:i}=A;this.currentPosition=viewportCoordsToSceneCoords({clientX:t/2,clientY:i/2},A)};A.useEffect((()=>{o({width:this.contentEl.clientWidth,height:this.contentEl.clientHeight});const e=()=>{try{const e=this.contentEl.clientWidth,A=this.contentEl.clientHeight;if(0===e||0===A)return;o({width:e,height:A}),this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.updatePosition(),this.ownerDocument!==document&&this.refresh()}catch(e){errorlog({where:"Excalidraw React-Wrapper, onResize",error:e})}};return this.ownerWindow.addEventListener("resize",e),()=>{var A;return null===(A=this.ownerWindow)||void 0===A?void 0:A.removeEventListener("resize",e)}}),[i]),this.getSelectedTextElement=()=>{var e;const A=this.excalidrawAPI;if(!A)return{id:null,text:null};if(A.getAppState().viewModeEnabled){if(r){const e=r;return r=null,e}return{id:null,text:null}}const t=A.getSceneElements().filter((e=>e.id===Object.keys(A.getAppState().selectedElementIds)[0]));if(0===t.length)return{id:null,text:null};if("text"===t[0].type)return{id:t[0].id,text:t[0].text};if(["image","arrow"].contains(t[0].type))return{id:null,text:null};const i=null===(e=t[0].boundElements)||void 0===e?void 0:e.filter((e=>"text"===e.type));if((null==i?void 0:i.length)>0){const e=A.getSceneElements().filter((e=>e.id===i[0].id));if(e.length>0)return{id:e[0].id,text:e[0].text}}if(0===t[0].groupIds.length)return{id:null,text:null};const n=t[0].groupIds[0],s=A.getSceneElements().filter((e=>{var A;return null===(A=e.groupIds)||void 0===A?void 0:A.includes(n)})).filter((e=>"text"===e.type));return 0===s.length?{id:null,text:null}:{id:t[0].id,text:t[0].text}},this.getSelectedImageElement=()=>{const e=this.excalidrawAPI;if(!e)return{id:null,fileId:null};if(e.getAppState().viewModeEnabled){if(l){const e=l;return l=null,e}return{id:null,fileId:null}}const A=e.getSceneElements().filter((A=>A.id==Object.keys(e.getAppState().selectedElementIds)[0]));if(0===A.length)return{id:null,fileId:null};if("image"==A[0].type)return{id:A[0].id,fileId:A[0].fileId};if("text"===A[0].type)return{id:null,fileId:null};if(0===A[0].groupIds.length)return{id:null,fileId:null};const t=A[0].groupIds[0],i=e.getSceneElements().filter((e=>{var A;return null===(A=e.groupIds)||void 0===A?void 0:A.includes(t)})).filter((e=>"image"==e.type));return 0===i.length?{id:null,fileId:null}:{id:i[0].id,fileId:i[0].fileId}},this.getSelectedElementWithLink=()=>{const e=this.excalidrawAPI;if(!e)return{id:null,text:null};if(e.getAppState().viewModeEnabled){if(c){const e=c;return c=null,e}return{id:null,text:null}}const A=e.getSceneElements().filter((A=>A.id==Object.keys(e.getAppState().selectedElementIds)[0]));if(0===A.length)return{id:null,text:null};if(A[0].link)return{id:A[0].id,text:A[0].link};if(0===A[0].groupIds.length)return{id:null,text:null};const t=A[0].groupIds[0],i=e.getSceneElements().filter((e=>{var A;return null===(A=e.groupIds)||void 0===A?void 0:A.includes(t)})).filter((e=>e.link));return 0===i.length?{id:null,text:null}:{id:i[0].id,text:i[0].link}},this.addLink=async(e,A,t)=>{const i=this.excalidrawAPI,n=i.getAppState();if(!n.selectedElementIds||n.selectedElementIds&&1!==Object.keys(n.selectedElementIds).length)return void this.addText(e);const s=Object.keys(i.getAppState().selectedElementIds)[0],a=i.getSceneElements().find((e=>e.id===s));if(!a||a&&null!==a.link)return a&&new obsidian_module.Notice("Selected element already has a link. Inserting link as text."),void this.addText(e);const o=getEA(this);o.copyViewElementsToEAforEditing([a]),o.getElement(s).link=e,o.addElementsToView(!1,!0)},this.addText=async(e,A,t=!0)=>{var i,n,s,a,o;const r=this.excalidrawAPI;if(!r)return;const l=r.getAppState(),c=this.plugin.ea.getAPI(this);c.style.strokeColor=null!==(i=l.currentItemStrokeColor)&&void 0!==i?i:"black",c.style.opacity=null!==(n=l.currentItemOpacity)&&void 0!==n?n:1,c.style.fontFamily=null!==(s=null!=A?A:l.currentItemFontFamily)&&void 0!==s?s:1,c.style.fontSize=null!==(a=l.currentItemFontSize)&&void 0!==a?a:20,c.style.textAlign=null!==(o=l.currentItemTextAlign)&&void 0!==o?o:"left";const{width:g,height:d}=l,u=viewportCoordsToSceneCoords({clientX:0,clientY:0},l),h=viewportCoordsToSceneCoords({clientX:g,clientY:d},l),m=u.x>this.currentPosition.x||h.x<this.currentPosition.x||u.y>this.currentPosition.y||h.y<this.currentPosition.y,p=c.addText(this.currentPosition.x,this.currentPosition.y,e);return await this.addElements(c.getElements(),m,t,void 0,!0),p},this.addElements=async(e,A=!1,t=!1,i,n=!1,s=!1)=>{const a=this.excalidrawAPI;if(!a)return!1;const o=e.filter((e=>"text"==e.type));for(let e=0;e<o.length;e++){const[A,t,i]=await this.excalidrawData.addTextElement(o[e].id,o[e].text,o[e].rawText);i&&(o[e].link=i),this.textMode==TextMode.parsed&&this.excalidrawData.updateTextElement(o[e],A,t)}A&&(e=repositionElementsToCursor(e,this.currentPosition,!0));const r=e.map((e=>e.id)),l=a.getSceneElements(),c=[];for(let A=0;A<l.length;A++){const t=l[A].id;r.includes(t)&&(l[A]=e.filter((e=>e.id===t))[0],c.push(t))}const g=n?l.concat(e.filter((e=>!c.includes(e.id)))):e.filter((e=>!c.includes(e.id))).concat(l);if(this.updateScene({elements:g,commitToHistory:!0},s),i&&Object.keys(i).length>0){const e=[];Object.keys(i).forEach((A=>{if(e.push({mimeType:i[A].mimeType,id:i[A].id,dataURL:i[A].dataURL,created:i[A].created}),i[A].file||i[A].isHyperLink||i[A].isLocalLink){const e=new EmbeddedFile(this.plugin,this.file.path,i[A].isHyperLink&&!i[A].isLocalLink?i[A].hyperlink:i[A].file),t=a.getAppState();e.setImage(i[A].dataURL,i[A].mimeType,i[A].size,"dark"===t.theme,i[A].hasSVGwithBitmap),this.excalidrawData.setFile(i[A].id,e)}i[A].latex&&this.excalidrawData.setEquation(i[A].id,{latex:i[A].latex,isLoaded:!0})})),a.addFiles(e)}return a.updateContainerSize(a.getSceneElements().filter((e=>r.includes(e.id))).filter(isContainer)),t?await this.save(!1):this.setDirty(5),!0},this.getScene=e=>{const A=this.excalidrawAPI;if(!A)return null;const t=e?this.getViewSelectedElements():A.getSceneElements(),i=A.getAppState(),n=Object.assign({},A.getFiles());if(n){const e=t.filter((e=>"image"===e.type)).map((e=>e.fileId)),A=Object.keys(n).filter((A=>!e.contains(A)));A.forEach((e=>delete n[e]))}return{type:"excalidraw",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,elements:t,appState:{theme:i.theme,viewBackgroundColor:i.viewBackgroundColor,currentItemStrokeColor:i.currentItemStrokeColor,currentItemBackgroundColor:i.currentItemBackgroundColor,currentItemFillStyle:i.currentItemFillStyle,currentItemStrokeWidth:i.currentItemStrokeWidth,currentItemStrokeStyle:i.currentItemStrokeStyle,currentItemRoughness:i.currentItemRoughness,currentItemOpacity:i.currentItemOpacity,currentItemFontFamily:i.currentItemFontFamily,currentItemFontSize:i.currentItemFontSize,currentItemTextAlign:i.currentItemTextAlign,currentItemStartArrowhead:i.currentItemStartArrowhead,currentItemEndArrowhead:i.currentItemEndArrowhead,scrollX:i.scrollX,scrollY:i.scrollY,zoom:i.zoom,currentItemRoundness:i.currentItemRoundness,gridSize:i.gridSize,gridColor:i.gridColor,colorPalette:i.colorPalette,currentStrokeOptions:i.currentStrokeOptions,previousGridSize:i.previousGridSize,frameRendering:i.frameRendering},prevTextMode:this.prevTextMode,files:n}},this.refresh=()=>{if(0===this.contentEl.clientWidth||0===this.contentEl.clientHeight)return;const e=this.excalidrawAPI;e&&e.refresh()};let m={x:0,y:0},p=null;this.clearHoverPreview=()=>{if(p){const e=new MouseEvent("click",{view:this.ownerWindow,bubbles:!0,cancelable:!0});p.dispatchEvent(e),p=null}};const w=e=>{var A,t,i,n,s;const a=null===(A=app.dragManager.draggable)||void 0===A?void 0:A.files;return a&&a[0]==this.file&&(a.shift(),this.app.dragManager.draggable.title=`${a.length} files`),["file","files"].includes(null===(t=this.app.dragManager.draggable)||void 0===t?void 0:t.type)?"link":(null===(i=e.types)||void 0===i?void 0:i.includes("text/html"))||(null===(n=e.types)||void 0===n?void 0:n.includes("text/plain"))||(null===(s=e.types)||void 0===s?void 0:s.includes("Files"))?"copy":void 0};let B=!1;const E=()=>{if(r=getTextElementAtPointer(this.currentPosition,this),r&&r.id){const e=new MouseEvent("click",{ctrlKey:!(DEVICE.isIOS||DEVICE.isMacOS)||this.modifierKeyDown.ctrlKey,metaKey:DEVICE.isIOS||DEVICE.isMacOS||this.modifierKeyDown.metaKey,shiftKey:this.modifierKeyDown.shiftKey,altKey:this.modifierKeyDown.altKey});return this.handleLinkClick(e),void(r=null)}if(l=getImageElementAtPointer(this.currentPosition,this),l&&l.id){const e=new MouseEvent("click",{ctrlKey:!(DEVICE.isIOS||DEVICE.isMacOS)||this.modifierKeyDown.ctrlKey,metaKey:DEVICE.isIOS||DEVICE.isMacOS||this.modifierKeyDown.metaKey,shiftKey:this.modifierKeyDown.shiftKey,altKey:this.modifierKeyDown.altKey});return this.handleLinkClick(e),void(l=null)}if(c=getElementWithLinkAtPointer(this.currentPosition,this),c&&c.id){const e=new MouseEvent("click",{ctrlKey:!(DEVICE.isIOS||DEVICE.isMacOS)||this.modifierKeyDown.ctrlKey,metaKey:DEVICE.isIOS||DEVICE.isMacOS||this.modifierKeyDown.metaKey,shiftKey:this.modifierKeyDown.shiftKey,altKey:this.modifierKeyDown.altKey});return this.handleLinkClick(e),void(c=null)}};let k=null;const f=e=>{if(!e)return;if(e.match(REG_LINKINDEX_HYPERLINK))return;const A=REGEX_LINK.getRes(e).next();if(!A.value)return;const t=REGEX_LINK.getLink(A);return t.match(REG_LINKINDEX_HYPERLINK)?void 0:t},C=(e,A)=>{var t;if(!k)return;const i=null===(t=this.excalidrawAPI)||void 0===t?void 0:t.getAppState();if((null==i?void 0:i.editingElement)||(null==i?void 0:i.draggingElement))return;if(this.semaphores.wheelTimeout)return;if(!e){if(!this.currentPosition)return;e="";const t=getTextElementAtPointer(this.currentPosition,this);if(t&&t.text){A=this.excalidrawAPI.getSceneElements().filter((e=>e.id===t.id))[0];const i=this.textMode===TextMode.parsed?this.excalidrawData.getRawText(t.id):t.text;if(!(e=f(i)))return}else{const t=getImageElementAtPointer(this.currentPosition,this);if(A=this.excalidrawAPI.getSceneElements().find((e=>e.id===t.id)),!t||!t.fileId)return;if(!this.excalidrawData.hasFile(t.fileId))return;const i=this.excalidrawData.getFile(t.fileId);if(i.isHyperLink||i.isLocalLink||IMAGE_TYPES.contains(i.file.extension)||"pdf"===i.file.extension.toLowerCase()||this.plugin.ea.isExcalidrawFile(i.file)){if(!(e=f(A.link)))return}else{const A=i.linkParts.ref?`#${i.linkParts.isBlockRef?"^":""}${i.linkParts.ref}`:"";e=i.file.path+A}}}if(this.getHookServer().onLinkHoverHook)try{if(!this.getHookServer().onLinkHoverHook(A,e,this,this.getHookServer()))return}catch(e){errorlog({where:"ExcalidrawView.showHoverPreview",fn:this.getHookServer().onLinkHoverHook,error:e})}if(this.semaphores.hoverSleep)return;const n=app.metadataCache.getFirstLinkpathDest(e.split("#")[0],this.file.path);if(!n)return;if(this.ownerDocument.querySelector(`div.popover-title[data-path="${n.path}"]`))return;this.semaphores.hoverSleep=!0;const s=this;if(setTimeout((()=>s.semaphores.hoverSleep=!1),500),this.plugin.hover.linkText=e,this.plugin.hover.sourcePath=this.file.path,p=this.contentEl,app.workspace.trigger("hover-link",{event:k,source:"excalidraw",hoverParent:p,targetEl:p,linktext:this.plugin.hover.linkText,sourcePath:this.plugin.hover.sourcePath}),m=this.currentPosition,this.isFullscreen()){const e=this;setTimeout((()=>{var A,t,i,s;const a=null!==(s=null===(i=null===(t=null===(A=this.ownerDocument.querySelector(`div.popover-title[data-path="${n.path}"]`))||void 0===A?void 0:A.parentElement)||void 0===t?void 0:t.parentElement)||void 0===i?void 0:i.parentElement)&&void 0!==s?s:this.ownerDocument.body.querySelector("div.popover");a&&e.contentEl.append(a)}),400)}},{Excalidraw:O,MainMenu:W,WelcomeScreen:b,TTDDialogTrigger:x,TTDDialog:Q}=this.plugin.getPackage(this.ownerWindow).excalidrawLib,I=()=>Boolean(this.getSelectedTextElement().id||this.getSelectedImageElement().id||this.getSelectedElementWithLink().id),y=(e,t,i)=>A.createElement("li",{key:nanoid$1(),onClick:()=>{i((()=>t()))}},A.createElement("button",{className:"context-menu-item"},A.createElement("div",{className:"context-menu-item__label"},e),A.createElement("kbd",{className:"context-menu-item__shortcut"},""))),v=this,D=A.useRef(new ResizeObserver((e=>{if(!n||!n.current)return;const{width:A,height:t}=e[0].contentRect;if(0===A||0===t)return;const i=n.current.onRightEdge?n.current.previousWidth-A:0,s=n.current.onBottomEdge?n.current.previousHeight-t:0;n.current.updatePosition(s,i)})));A.useEffect((()=>((null==n?void 0:n.current)&&D.current.observe(n.current.containerRef.current),()=>{D.current.unobserve(n.current.containerRef.current)})),[n,D]);const M=A.createElement("div",{className:"excalidraw-wrapper",ref:i,key:"abc",tabIndex:0,onKeyDown:e=>{e.target!==M.ref.current&&(this.isFullscreen()&&e.keyCode===KEYCODE.ESC&&this.exitFullscreen(),!isCTRL(e)||isSHIFT(e)||isALT(e)||C())},onPointerDown:e=>{(isCTRL(e)||isMETA(e))&&(!this.plugin.settings.allowCtrlClick&&isMETA(e)||setTimeout((()=>{I()&&this.handleLinkClick(e)})))},onMouseMove:e=>{k=e.nativeEvent},onMouseOver:()=>{this.clearHoverPreview()},onDragOver:e=>{const A=w(e.dataTransfer);if(A){this.draginfoDiv||(this.draginfoDiv=createDiv({cls:"excalidraw-draginfo"}),this.ownerDocument.body.appendChild(this.draginfoDiv));let t="";if(this.app.dragManager.draggable)switch(internalDragModifierType(e)){case"image":t="Embed image";break;case"image-fullsize":t="Embed image @100%";break;case"link":t="Insert link\n"+(DEVICE.isMacOS||DEVICE.isIOS?"try SHIFT and CTRL combinations for other drop actions":"try SHIFT, CTRL, ALT combinations for other drop actions");break;case"embeddable":t="Insert in interactive frame"}else if(1===e.dataTransfer.types.length&&e.dataTransfer.types.includes("Files"))switch(localFileDragModifierType(e)){case"image-import":t="Import image to Vault";break;case"image-uri":t="Insert image with local URI";break;case"insert-link":t="Insert link"}else switch(externalDragModifierType(e)){case"image-import":t="Import image to Vault";break;case"image-url":t="Insert image/thumbnail with URL\n"+(DEVICE.isMacOS||DEVICE.isIOS?"try SHIFT, OPT, CTRL combinations for other drop actions":"try SHIFT, CTRL, ALT combinations for other drop actions");break;case"insert-link":t="Insert link";break;case"embeddable":t="Insert in interactive frame"}this.draginfoDiv.innerText!==t&&(this.draginfoDiv.innerText=t);const i=e.clientY-8*parseFloat(getComputedStyle(this.draginfoDiv).fontSize)+"px",n=e.clientX-this.draginfoDiv.clientWidth/2+"px";return this.draginfoDiv.style.top!==i&&(this.draginfoDiv.style.top=i),this.draginfoDiv.style.left!==n&&(this.draginfoDiv.style.left=n),e.dataTransfer.dropEffect=A,e.preventDefault(),!1}},onDragLeave:()=>{this.draginfoDiv&&(this.ownerDocument.body.removeChild(this.draginfoDiv),delete this.draginfoDiv)}},A.createElement(O,{excalidrawAPI:e=>{u(e)},width:a.width,height:a.height,UIOptions:{canvasActions:{loadScene:!1,saveScene:!1,saveAsScene:!1,export:!1,saveAsImage:!1,saveToActiveFile:!1}},initState:null==e?void 0:e.appState,initialData:e,detectScroll:!0,onPointerUpdate:e=>{if(this.currentPosition=e.pointer,p&&(Math.abs(m.x-e.pointer.x)>50||Math.abs(m.y-e.pointer.y)>50)&&this.clearHoverPreview(),B){if(!d&&"down"===e.button){if(d=!0,isCTRL(this.modifierKeyDown)||isMETA(this.modifierKeyDown))return void E();const e=Date.now();return e-g<600&&e-g>40&&E(),void(g=e)}"up"===e.button&&(d=!1),(isCTRL(this.modifierKeyDown)||this.excalidrawAPI.getAppState().isViewModeEnabled&&this.plugin.settings.hoverPreviewWithoutCTRL)&&C()}},libraryReturnUrl:"app://obsidian.md",autoFocus:!0,langCode:null!==(t=obsidianToExcalidrawMap[this.plugin.locale])&&void 0!==t?t:"en-EN",aiEnabled:!0,onChange:(e,A)=>{var t,i,n,s;const a=()=>{const e="transparent"===A.viewBackgroundColor?"white":A.viewBackgroundColor;if(setTimeout((()=>this.updateScene({appState:{gridColor:this.getGridColor(e,A)}}))),setDynamicStyle(this.plugin.ea,this,e,this.plugin.settings.dynamicStyling),this.plugin.ea.onCanvasColorChangeHook)try{this.plugin.ea.onCanvasColorChangeHook(this.plugin.ea,this,A.viewBackgroundColor)}catch(e){errorlog({where:a,source:this.plugin.ea.onCanvasColorChangeHook,error:e,message:"ea.onCanvasColorChangeHook exception"})}};if(B=A.viewModeEnabled,this.semaphores.justLoaded){if((null!==(s=null===(n=null===(i=null===(t=this.excalidrawData)||void 0===t?void 0:t.scene)||void 0===i?void 0:i.elements)||void 0===n?void 0:n.length)&&void 0!==s?s:0)>0&&0===e.length)return;return this.semaphores.justLoaded=!1,!this.semaphores.preventAutozoom&&this.plugin.settings.zoomToFitOnOpen&&this.zoomToFit(!1,!0),this.previousSceneVersion=this.getSceneVersion(e),this.previousBackgroundColor=A.viewBackgroundColor,this.previousTheme=A.theme,void a()}if(A.theme!==this.previousTheme&&this.file===this.excalidrawData.file&&(this.previousTheme=A.theme,this.setDirty(5.1)),A.viewBackgroundColor!==this.previousBackgroundColor&&this.file===this.excalidrawData.file&&(this.previousBackgroundColor=A.viewBackgroundColor,this.setDirty(6),this.colorChangeTimer&&clearTimeout(this.colorChangeTimer),this.colorChangeTimer=setTimeout((()=>{a(),this.colorChangeTimer=null}),50)),!this.semaphores.dirty&&null===A.editingElement&&null===A.editingLinearElement){const A=this.getSceneVersion(e);(A>0||0===A&&e.length>0)&&A!==this.previousSceneVersion&&(this.previousSceneVersion=A,this.setDirty(6.1))}},onLibraryChange:e=>{(async()=>{const A={type:"excalidrawlib",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,libraryItems:e};this.plugin.setStencilLibrary(A),await this.plugin.saveSettings()})()}, + */chroma$1.exports,function(e,t){e.exports=function(){for(var e=function(e,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),e<t?t:e>n?n:e},t=e,n={},r=0,i=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];r<i.length;r+=1){var o=i[r];n["[object "+o+"]"]=o.toLowerCase()}var a=function(e){return n[Object.prototype.toString.call(e)]||"object"},s=a,l=a,c=Math.PI,T={clip_rgb:function(e){e._clipped=!1,e._unclipped=e.slice(0);for(var n=0;n<=3;n++)n<3?((e[n]<0||e[n]>255)&&(e._clipped=!0),e[n]=t(e[n],0,255)):3===n&&(e[n]=t(e[n],0,1));return e},limit:e,type:a,unpack:function(e,t){return void 0===t&&(t=null),e.length>=3?Array.prototype.slice.call(e):"object"==s(e[0])&&t?t.split("").filter((function(t){return void 0!==e[0][t]})).map((function(t){return e[0][t]})):e[0]},last:function(e){if(e.length<2)return null;var t=e.length-1;return"string"==l(e[t])?e[t].toLowerCase():null},PI:c,TWOPI:2*c,PITHIRD:c/3,DEG2RAD:c/180,RAD2DEG:180/c},Q={format:{},autodetect:[]},d=T.last,u=T.clip_rgb,p=T.type,h=Q,m=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=this;if("object"===p(e[0])&&e[0].constructor&&e[0].constructor===this.constructor)return e[0];var r=d(e),i=!1;if(!r){i=!0,h.sorted||(h.autodetect=h.autodetect.sort((function(e,t){return t.p-e.p})),h.sorted=!0);for(var o=0,a=h.autodetect;o<a.length;o+=1){var s=a[o];if(r=s.test.apply(s,e))break}}if(!h.format[r])throw new Error("unknown format: "+e);var l=h.format[r].apply(null,i?e:e.slice(0,-1));n._rgb=u(l),3===n._rgb.length&&n._rgb.push(1)};m.prototype.toString=function(){return"function"==p(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var f=m,g=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(g.Color,[null].concat(e)))};g.Color=f,g.version="2.4.2";var b=g,y=T.unpack,L=Math.max,v=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=y(e,"rgb"),r=n[0],i=n[1],o=n[2],a=1-L(r/=255,L(i/=255,o/=255)),s=a<1?1/(1-a):0;return[(1-r-a)*s,(1-i-a)*s,(1-o-a)*s,a]},w=T.unpack,E=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=(e=w(e,"cmyk"))[0],r=e[1],i=e[2],o=e[3],a=e.length>4?e[4]:1;return 1===o?[0,0,0,a]:[n>=1?0:255*(1-n)*(1-o),r>=1?0:255*(1-r)*(1-o),i>=1?0:255*(1-i)*(1-o),a]},_=b,M=f,x=Q,H=T.unpack,S=T.type,A=v;M.prototype.cmyk=function(){return A(this._rgb)},_.cmyk=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(M,[null].concat(e,["cmyk"])))},x.format.cmyk=E,x.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=H(e,"cmyk"),"array"===S(e)&&4===e.length)return"cmyk"}});var C=T.unpack,O=T.last,I=function(e){return Math.round(100*e)/100},V=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=C(e,"hsla"),r=O(e)||"lsa";return n[0]=I(n[0]||0),n[1]=I(100*n[1])+"%",n[2]=I(100*n[2])+"%","hsla"===r||n.length>3&&n[3]<1?(n[3]=n.length>3?n[3]:1,r="hsla"):n.length=3,r+"("+n.join(",")+")"},k=T.unpack,N=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=(e=k(e,"rgba"))[0],r=e[1],i=e[2];n/=255,r/=255,i/=255;var o,a,s=Math.min(n,r,i),l=Math.max(n,r,i),c=(l+s)/2;return l===s?(o=0,a=Number.NaN):o=c<.5?(l-s)/(l+s):(l-s)/(2-l-s),n==l?a=(r-i)/(l-s):r==l?a=2+(i-n)/(l-s):i==l&&(a=4+(n-r)/(l-s)),(a*=60)<0&&(a+=360),e.length>3&&void 0!==e[3]?[a,o,c,e[3]]:[a,o,c]},P=T.unpack,R=T.last,D=V,j=N,B=Math.round,F=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=P(e,"rgba"),r=R(e)||"rgb";return"hsl"==r.substr(0,3)?D(j(n),r):(n[0]=B(n[0]),n[1]=B(n[1]),n[2]=B(n[2]),("rgba"===r||n.length>3&&n[3]<1)&&(n[3]=n.length>3?n[3]:1,r="rgba"),r+"("+n.slice(0,"rgb"===r?3:4).join(",")+")")},G=T.unpack,W=Math.round,U=function(){for(var e,t=[],n=arguments.length;n--;)t[n]=arguments[n];var r,i,o,a=(t=G(t,"hsl"))[0],s=t[1],l=t[2];if(0===s)r=i=o=255*l;else{var c=[0,0,0],T=[0,0,0],Q=l<.5?l*(1+s):l+s-l*s,d=2*l-Q,u=a/360;c[0]=u+1/3,c[1]=u,c[2]=u-1/3;for(var p=0;p<3;p++)c[p]<0&&(c[p]+=1),c[p]>1&&(c[p]-=1),6*c[p]<1?T[p]=d+6*(Q-d)*c[p]:2*c[p]<1?T[p]=Q:3*c[p]<2?T[p]=d+(Q-d)*(2/3-c[p])*6:T[p]=d;r=(e=[W(255*T[0]),W(255*T[1]),W(255*T[2])])[0],i=e[1],o=e[2]}return t.length>3?[r,i,o,t[3]]:[r,i,o,1]},$=U,Z=Q,z=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,q=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,X=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,Y=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,K=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,J=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,ee=Math.round,te=function(e){var t;if(e=e.toLowerCase().trim(),Z.format.named)try{return Z.format.named(e)}catch(e){}if(t=e.match(z)){for(var n=t.slice(1,4),r=0;r<3;r++)n[r]=+n[r];return n[3]=1,n}if(t=e.match(q)){for(var i=t.slice(1,5),o=0;o<4;o++)i[o]=+i[o];return i}if(t=e.match(X)){for(var a=t.slice(1,4),s=0;s<3;s++)a[s]=ee(2.55*a[s]);return a[3]=1,a}if(t=e.match(Y)){for(var l=t.slice(1,5),c=0;c<3;c++)l[c]=ee(2.55*l[c]);return l[3]=+l[3],l}if(t=e.match(K)){var T=t.slice(1,4);T[1]*=.01,T[2]*=.01;var Q=$(T);return Q[3]=1,Q}if(t=e.match(J)){var d=t.slice(1,4);d[1]*=.01,d[2]*=.01;var u=$(d);return u[3]=+t[4],u}};te.test=function(e){return z.test(e)||q.test(e)||X.test(e)||Y.test(e)||K.test(e)||J.test(e)};var ne=b,re=f,ie=Q,oe=T.type,ae=F,se=te;re.prototype.css=function(e){return ae(this._rgb,e)},ne.css=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(re,[null].concat(e,["css"])))},ie.format.css=se,ie.autodetect.push({p:5,test:function(e){for(var t=[],n=arguments.length-1;n-- >0;)t[n]=arguments[n+1];if(!t.length&&"string"===oe(e)&&se.test(e))return"css"}});var le=f,ce=b,Te=T.unpack;Q.format.gl=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=Te(e,"rgba");return n[0]*=255,n[1]*=255,n[2]*=255,n},ce.gl=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(le,[null].concat(e,["gl"])))},le.prototype.gl=function(){var e=this._rgb;return[e[0]/255,e[1]/255,e[2]/255,e[3]]};var Qe=T.unpack,de=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,r=Qe(e,"rgb"),i=r[0],o=r[1],a=r[2],s=Math.min(i,o,a),l=Math.max(i,o,a),c=l-s,T=100*c/255,Q=s/(255-c)*100;return 0===c?n=Number.NaN:(i===l&&(n=(o-a)/c),o===l&&(n=2+(a-i)/c),a===l&&(n=4+(i-o)/c),(n*=60)<0&&(n+=360)),[n,T,Q]},ue=T.unpack,pe=Math.floor,he=function(){for(var e,t,n,r,i,o,a=[],s=arguments.length;s--;)a[s]=arguments[s];var l,c,T,Q=(a=ue(a,"hcg"))[0],d=a[1],u=a[2];u*=255;var p=255*d;if(0===d)l=c=T=u;else{360===Q&&(Q=0),Q>360&&(Q-=360),Q<0&&(Q+=360);var h=pe(Q/=60),m=Q-h,f=u*(1-d),g=f+p*(1-m),b=f+p*m,y=f+p;switch(h){case 0:l=(e=[y,b,f])[0],c=e[1],T=e[2];break;case 1:l=(t=[g,y,f])[0],c=t[1],T=t[2];break;case 2:l=(n=[f,y,b])[0],c=n[1],T=n[2];break;case 3:l=(r=[f,g,y])[0],c=r[1],T=r[2];break;case 4:l=(i=[b,f,y])[0],c=i[1],T=i[2];break;case 5:l=(o=[y,f,g])[0],c=o[1],T=o[2]}}return[l,c,T,a.length>3?a[3]:1]},me=T.unpack,fe=T.type,ge=b,be=f,ye=Q,Le=de;be.prototype.hcg=function(){return Le(this._rgb)},ge.hcg=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(be,[null].concat(e,["hcg"])))},ye.format.hcg=he,ye.autodetect.push({p:1,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=me(e,"hcg"),"array"===fe(e)&&3===e.length)return"hcg"}});var ve=T.unpack,we=T.last,Ee=Math.round,_e=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=ve(e,"rgba"),r=n[0],i=n[1],o=n[2],a=n[3],s=we(e)||"auto";void 0===a&&(a=1),"auto"===s&&(s=a<1?"rgba":"rgb");var l="000000"+((r=Ee(r))<<16|(i=Ee(i))<<8|(o=Ee(o))).toString(16);l=l.substr(l.length-6);var c="0"+Ee(255*a).toString(16);switch(c=c.substr(c.length-2),s.toLowerCase()){case"rgba":return"#"+l+c;case"argb":return"#"+c+l;default:return"#"+l}},Me=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,xe=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,He=function(e){if(e.match(Me)){4!==e.length&&7!==e.length||(e=e.substr(1)),3===e.length&&(e=(e=e.split(""))[0]+e[0]+e[1]+e[1]+e[2]+e[2]);var t=parseInt(e,16);return[t>>16,t>>8&255,255&t,1]}if(e.match(xe)){5!==e.length&&9!==e.length||(e=e.substr(1)),4===e.length&&(e=(e=e.split(""))[0]+e[0]+e[1]+e[1]+e[2]+e[2]+e[3]+e[3]);var n=parseInt(e,16);return[n>>24&255,n>>16&255,n>>8&255,Math.round((255&n)/255*100)/100]}throw new Error("unknown hex color: "+e)},Se=b,Ae=f,Ce=T.type,Oe=Q,Ie=_e;Ae.prototype.hex=function(e){return Ie(this._rgb,e)},Se.hex=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(Ae,[null].concat(e,["hex"])))},Oe.format.hex=He,Oe.autodetect.push({p:4,test:function(e){for(var t=[],n=arguments.length-1;n-- >0;)t[n]=arguments[n+1];if(!t.length&&"string"===Ce(e)&&[3,4,5,6,7,8,9].indexOf(e.length)>=0)return"hex"}});var Ve=T.unpack,ke=T.TWOPI,Ne=Math.min,Pe=Math.sqrt,Re=Math.acos,De=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,r=Ve(e,"rgb"),i=r[0],o=r[1],a=r[2],s=Ne(i/=255,o/=255,a/=255),l=(i+o+a)/3,c=l>0?1-s/l:0;return 0===c?n=NaN:(n=(i-o+(i-a))/2,n/=Pe((i-o)*(i-o)+(i-a)*(o-a)),n=Re(n),a>o&&(n=ke-n),n/=ke),[360*n,c,l]},je=T.unpack,Be=T.limit,Fe=T.TWOPI,Ge=T.PITHIRD,We=Math.cos,Ue=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,r,i,o=(e=je(e,"hsi"))[0],a=e[1],s=e[2];return isNaN(o)&&(o=0),isNaN(a)&&(a=0),o>360&&(o-=360),o<0&&(o+=360),(o/=360)<1/3?r=1-((i=(1-a)/3)+(n=(1+a*We(Fe*o)/We(Ge-Fe*o))/3)):o<2/3?i=1-((n=(1-a)/3)+(r=(1+a*We(Fe*(o-=1/3))/We(Ge-Fe*o))/3)):n=1-((r=(1-a)/3)+(i=(1+a*We(Fe*(o-=2/3))/We(Ge-Fe*o))/3)),[255*(n=Be(s*n*3)),255*(r=Be(s*r*3)),255*(i=Be(s*i*3)),e.length>3?e[3]:1]},$e=T.unpack,Ze=T.type,ze=b,qe=f,Xe=Q,Ye=De;qe.prototype.hsi=function(){return Ye(this._rgb)},ze.hsi=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(qe,[null].concat(e,["hsi"])))},Xe.format.hsi=Ue,Xe.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=$e(e,"hsi"),"array"===Ze(e)&&3===e.length)return"hsi"}});var Ke=T.unpack,Je=T.type,et=b,tt=f,nt=Q,rt=N;tt.prototype.hsl=function(){return rt(this._rgb)},et.hsl=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(tt,[null].concat(e,["hsl"])))},nt.format.hsl=U,nt.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=Ke(e,"hsl"),"array"===Je(e)&&3===e.length)return"hsl"}});var it=T.unpack,ot=Math.min,at=Math.max,st=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,r,i,o=(e=it(e,"rgb"))[0],a=e[1],s=e[2],l=ot(o,a,s),c=at(o,a,s),T=c-l;return i=c/255,0===c?(n=Number.NaN,r=0):(r=T/c,o===c&&(n=(a-s)/T),a===c&&(n=2+(s-o)/T),s===c&&(n=4+(o-a)/T),(n*=60)<0&&(n+=360)),[n,r,i]},lt=T.unpack,ct=Math.floor,Tt=function(){for(var e,t,n,r,i,o,a=[],s=arguments.length;s--;)a[s]=arguments[s];var l,c,T,Q=(a=lt(a,"hsv"))[0],d=a[1],u=a[2];if(u*=255,0===d)l=c=T=u;else{360===Q&&(Q=0),Q>360&&(Q-=360),Q<0&&(Q+=360);var p=ct(Q/=60),h=Q-p,m=u*(1-d),f=u*(1-d*h),g=u*(1-d*(1-h));switch(p){case 0:l=(e=[u,g,m])[0],c=e[1],T=e[2];break;case 1:l=(t=[f,u,m])[0],c=t[1],T=t[2];break;case 2:l=(n=[m,u,g])[0],c=n[1],T=n[2];break;case 3:l=(r=[m,f,u])[0],c=r[1],T=r[2];break;case 4:l=(i=[g,m,u])[0],c=i[1],T=i[2];break;case 5:l=(o=[u,m,f])[0],c=o[1],T=o[2]}}return[l,c,T,a.length>3?a[3]:1]},Qt=T.unpack,dt=T.type,ut=b,pt=f,ht=Q,mt=st;pt.prototype.hsv=function(){return mt(this._rgb)},ut.hsv=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(pt,[null].concat(e,["hsv"])))},ht.format.hsv=Tt,ht.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=Qt(e,"hsv"),"array"===dt(e)&&3===e.length)return"hsv"}});var ft={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},gt=ft,bt=T.unpack,yt=Math.pow,Lt=function(e){return(e/=255)<=.04045?e/12.92:yt((e+.055)/1.055,2.4)},vt=function(e){return e>gt.t3?yt(e,1/3):e/gt.t2+gt.t0},wt=function(e,t,n){return e=Lt(e),t=Lt(t),n=Lt(n),[vt((.4124564*e+.3575761*t+.1804375*n)/gt.Xn),vt((.2126729*e+.7151522*t+.072175*n)/gt.Yn),vt((.0193339*e+.119192*t+.9503041*n)/gt.Zn)]},Et=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=bt(e,"rgb"),r=n[0],i=n[1],o=n[2],a=wt(r,i,o),s=a[0],l=a[1],c=116*l-16;return[c<0?0:c,500*(s-l),200*(l-a[2])]},_t=ft,Mt=T.unpack,xt=Math.pow,Ht=function(e){return 255*(e<=.00304?12.92*e:1.055*xt(e,1/2.4)-.055)},St=function(e){return e>_t.t1?e*e*e:_t.t2*(e-_t.t0)},At=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,r,i,o=(e=Mt(e,"lab"))[0],a=e[1],s=e[2];return r=(o+16)/116,n=isNaN(a)?r:r+a/500,i=isNaN(s)?r:r-s/200,r=_t.Yn*St(r),n=_t.Xn*St(n),i=_t.Zn*St(i),[Ht(3.2404542*n-1.5371385*r-.4985314*i),Ht(-.969266*n+1.8760108*r+.041556*i),Ht(.0556434*n-.2040259*r+1.0572252*i),e.length>3?e[3]:1]},Ct=T.unpack,Ot=T.type,It=b,Vt=f,kt=Q,Nt=Et;Vt.prototype.lab=function(){return Nt(this._rgb)},It.lab=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(Vt,[null].concat(e,["lab"])))},kt.format.lab=At,kt.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=Ct(e,"lab"),"array"===Ot(e)&&3===e.length)return"lab"}});var Pt=T.unpack,Rt=T.RAD2DEG,Dt=Math.sqrt,jt=Math.atan2,Bt=Math.round,Ft=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=Pt(e,"lab"),r=n[0],i=n[1],o=n[2],a=Dt(i*i+o*o),s=(jt(o,i)*Rt+360)%360;return 0===Bt(1e4*a)&&(s=Number.NaN),[r,a,s]},Gt=T.unpack,Wt=Et,Ut=Ft,$t=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=Gt(e,"rgb"),r=n[0],i=n[1],o=n[2],a=Wt(r,i,o),s=a[0],l=a[1],c=a[2];return Ut(s,l,c)},Zt=T.unpack,zt=T.DEG2RAD,qt=Math.sin,Xt=Math.cos,Yt=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=Zt(e,"lch"),r=n[0],i=n[1],o=n[2];return isNaN(o)&&(o=0),[r,Xt(o*=zt)*i,qt(o)*i]},Kt=T.unpack,Jt=Yt,en=At,tn=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=(e=Kt(e,"lch"))[0],r=e[1],i=e[2],o=Jt(n,r,i),a=o[0],s=o[1],l=o[2],c=en(a,s,l);return[c[0],c[1],c[2],e.length>3?e[3]:1]},nn=T.unpack,rn=tn,on=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=nn(e,"hcl").reverse();return rn.apply(void 0,n)},an=T.unpack,sn=T.type,ln=b,cn=f,Tn=Q,Qn=$t;cn.prototype.lch=function(){return Qn(this._rgb)},cn.prototype.hcl=function(){return Qn(this._rgb).reverse()},ln.lch=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(cn,[null].concat(e,["lch"])))},ln.hcl=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(cn,[null].concat(e,["hcl"])))},Tn.format.lch=tn,Tn.format.hcl=on,["lch","hcl"].forEach((function(e){return Tn.autodetect.push({p:2,test:function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];if(t=an(t,e),"array"===sn(t)&&3===t.length)return e}})}));var dn={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},un=Q,pn=T.type,hn=dn,mn=He,fn=_e;f.prototype.name=function(){for(var e=fn(this._rgb,"rgb"),t=0,n=Object.keys(hn);t<n.length;t+=1){var r=n[t];if(hn[r]===e)return r.toLowerCase()}return e},un.format.named=function(e){if(e=e.toLowerCase(),hn[e])return mn(hn[e]);throw new Error("unknown color name: "+e)},un.autodetect.push({p:5,test:function(e){for(var t=[],n=arguments.length-1;n-- >0;)t[n]=arguments[n+1];if(!t.length&&"string"===pn(e)&&hn[e.toLowerCase()])return"named"}});var gn=T.unpack,bn=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=gn(e,"rgb");return(n[0]<<16)+(n[1]<<8)+n[2]},yn=T.type,Ln=function(e){if("number"==yn(e)&&e>=0&&e<=16777215)return[e>>16,e>>8&255,255&e,1];throw new Error("unknown num color: "+e)},vn=b,wn=f,En=Q,_n=T.type,Mn=bn;wn.prototype.num=function(){return Mn(this._rgb)},vn.num=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(wn,[null].concat(e,["num"])))},En.format.num=Ln,En.autodetect.push({p:5,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(1===e.length&&"number"===_n(e[0])&&e[0]>=0&&e[0]<=16777215)return"num"}});var xn=b,Hn=f,Sn=Q,An=T.unpack,Cn=T.type,On=Math.round;Hn.prototype.rgb=function(e){return void 0===e&&(e=!0),!1===e?this._rgb.slice(0,3):this._rgb.slice(0,3).map(On)},Hn.prototype.rgba=function(e){return void 0===e&&(e=!0),this._rgb.slice(0,4).map((function(t,n){return n<3?!1===e?t:On(t):t}))},xn.rgb=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(Hn,[null].concat(e,["rgb"])))},Sn.format.rgb=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=An(e,"rgba");return void 0===n[3]&&(n[3]=1),n},Sn.autodetect.push({p:3,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=An(e,"rgba"),"array"===Cn(e)&&(3===e.length||4===e.length&&"number"==Cn(e[3])&&e[3]>=0&&e[3]<=1))return"rgb"}});var In=Math.log,Vn=function(e){var t,n,r,i=e/100;return i<66?(t=255,n=i<6?0:-155.25485562709179-.44596950469579133*(n=i-2)+104.49216199393888*In(n),r=i<20?0:.8274096064007395*(r=i-10)-254.76935184120902+115.67994401066147*In(r)):(t=351.97690566805693+.114206453784165*(t=i-55)-40.25366309332127*In(t),n=325.4494125711974+.07943456536662342*(n=i-50)-28.0852963507957*In(n),r=255),[t,n,r,1]},kn=Vn,Nn=T.unpack,Pn=Math.round,Rn=b,Dn=f,jn=Q,Bn=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];for(var n,r=Nn(e,"rgb"),i=r[0],o=r[2],a=1e3,s=4e4;s-a>.4;){var l=kn(n=.5*(s+a));l[2]/l[0]>=o/i?s=n:a=n}return Pn(n)};Dn.prototype.temp=Dn.prototype.kelvin=Dn.prototype.temperature=function(){return Bn(this._rgb)},Rn.temp=Rn.kelvin=Rn.temperature=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(Dn,[null].concat(e,["temp"])))},jn.format.temp=jn.format.kelvin=jn.format.temperature=Vn;var Fn=T.unpack,Gn=Math.cbrt,Wn=Math.pow,Un=Math.sign,$n=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=Fn(e,"rgb"),r=n[0],i=n[1],o=n[2],a=[Zn(r/255),Zn(i/255),Zn(o/255)],s=a[0],l=a[1],c=a[2],T=Gn(.4122214708*s+.5363325363*l+.0514459929*c),Q=Gn(.2119034982*s+.6806995451*l+.1073969566*c),d=Gn(.0883024619*s+.2817188376*l+.6299787005*c);return[.2104542553*T+.793617785*Q-.0040720468*d,1.9779984951*T-2.428592205*Q+.4505937099*d,.0259040371*T+.7827717662*Q-.808675766*d]};function Zn(e){var t=Math.abs(e);return t<.04045?e/12.92:(Un(e)||1)*Wn((t+.055)/1.055,2.4)}var zn=T.unpack,qn=Math.pow,Xn=Math.sign,Yn=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=(e=zn(e,"lab"))[0],r=e[1],i=e[2],o=qn(n+.3963377774*r+.2158037573*i,3),a=qn(n-.1055613458*r-.0638541728*i,3),s=qn(n-.0894841775*r-1.291485548*i,3);return[255*Kn(4.0767416621*o-3.3077115913*a+.2309699292*s),255*Kn(-1.2684380046*o+2.6097574011*a-.3413193965*s),255*Kn(-.0041960863*o-.7034186147*a+1.707614701*s),e.length>3?e[3]:1]};function Kn(e){var t=Math.abs(e);return t>.0031308?(Xn(e)||1)*(1.055*qn(t,1/2.4)-.055):12.92*e}var Jn=T.unpack,er=T.type,tr=b,nr=f,rr=Q,ir=$n;nr.prototype.oklab=function(){return ir(this._rgb)},tr.oklab=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(nr,[null].concat(e,["oklab"])))},rr.format.oklab=Yn,rr.autodetect.push({p:3,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=Jn(e,"oklab"),"array"===er(e)&&3===e.length)return"oklab"}});var or=T.unpack,ar=$n,sr=Ft,lr=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=or(e,"rgb"),r=n[0],i=n[1],o=n[2],a=ar(r,i,o),s=a[0],l=a[1],c=a[2];return sr(s,l,c)},cr=T.unpack,Tr=Yt,Qr=Yn,dr=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=(e=cr(e,"lch"))[0],r=e[1],i=e[2],o=Tr(n,r,i),a=o[0],s=o[1],l=o[2],c=Qr(a,s,l);return[c[0],c[1],c[2],e.length>3?e[3]:1]},ur=T.unpack,pr=T.type,hr=b,mr=f,fr=Q,gr=lr;mr.prototype.oklch=function(){return gr(this._rgb)},hr.oklch=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return new(Function.prototype.bind.apply(mr,[null].concat(e,["oklch"])))},fr.format.oklch=dr,fr.autodetect.push({p:3,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=ur(e,"oklch"),"array"===pr(e)&&3===e.length)return"oklch"}});var br=f,yr=T.type;br.prototype.alpha=function(e,t){return void 0===t&&(t=!1),void 0!==e&&"number"===yr(e)?t?(this._rgb[3]=e,this):new br([this._rgb[0],this._rgb[1],this._rgb[2],e],"rgb"):this._rgb[3]},f.prototype.clipped=function(){return this._rgb._clipped||!1};var Lr=f,vr=ft;Lr.prototype.darken=function(e){void 0===e&&(e=1);var t=this.lab();return t[0]-=vr.Kn*e,new Lr(t,"lab").alpha(this.alpha(),!0)},Lr.prototype.brighten=function(e){return void 0===e&&(e=1),this.darken(-e)},Lr.prototype.darker=Lr.prototype.darken,Lr.prototype.brighter=Lr.prototype.brighten,f.prototype.get=function(e){var t=e.split("."),n=t[0],r=t[1],i=this[n]();if(r){var o=n.indexOf(r)-("ok"===n.substr(0,2)?2:0);if(o>-1)return i[o];throw new Error("unknown channel "+r+" in mode "+n)}return i};var wr=f,Er=T.type,_r=Math.pow;wr.prototype.luminance=function(e){if(void 0!==e&&"number"===Er(e)){if(0===e)return new wr([0,0,0,this._rgb[3]],"rgb");if(1===e)return new wr([255,255,255,this._rgb[3]],"rgb");var t=this.luminance(),n=20,r=function(t,i){var o=t.interpolate(i,.5,"rgb"),a=o.luminance();return Math.abs(e-a)<1e-7||!n--?o:a>e?r(t,o):r(o,i)},i=(t>e?r(new wr([0,0,0]),this):r(this,new wr([255,255,255]))).rgb();return new wr(i.concat([this._rgb[3]]))}return Mr.apply(void 0,this._rgb.slice(0,3))};var Mr=function(e,t,n){return.2126*(e=xr(e))+.7152*(t=xr(t))+.0722*xr(n)},xr=function(e){return(e/=255)<=.03928?e/12.92:_r((e+.055)/1.055,2.4)},Hr={},Sr=f,Ar=T.type,Cr=Hr,Or=function(e,t,n){void 0===n&&(n=.5);for(var r=[],i=arguments.length-3;i-- >0;)r[i]=arguments[i+3];var o=r[0]||"lrgb";if(Cr[o]||r.length||(o=Object.keys(Cr)[0]),!Cr[o])throw new Error("interpolation mode "+o+" is not defined");return"object"!==Ar(e)&&(e=new Sr(e)),"object"!==Ar(t)&&(t=new Sr(t)),Cr[o](e,t,n).alpha(e.alpha()+n*(t.alpha()-e.alpha()))},Ir=f,Vr=Or;Ir.prototype.mix=Ir.prototype.interpolate=function(e,t){void 0===t&&(t=.5);for(var n=[],r=arguments.length-2;r-- >0;)n[r]=arguments[r+2];return Vr.apply(void 0,[this,e,t].concat(n))};var kr=f;kr.prototype.premultiply=function(e){void 0===e&&(e=!1);var t=this._rgb,n=t[3];return e?(this._rgb=[t[0]*n,t[1]*n,t[2]*n,n],this):new kr([t[0]*n,t[1]*n,t[2]*n,n],"rgb")};var Nr=f,Pr=ft;Nr.prototype.saturate=function(e){void 0===e&&(e=1);var t=this.lch();return t[1]+=Pr.Kn*e,t[1]<0&&(t[1]=0),new Nr(t,"lch").alpha(this.alpha(),!0)},Nr.prototype.desaturate=function(e){return void 0===e&&(e=1),this.saturate(-e)};var Rr=f,Dr=T.type;Rr.prototype.set=function(e,t,n){void 0===n&&(n=!1);var r=e.split("."),i=r[0],o=r[1],a=this[i]();if(o){var s=i.indexOf(o)-("ok"===i.substr(0,2)?2:0);if(s>-1){if("string"==Dr(t))switch(t.charAt(0)){case"+":case"-":a[s]+=+t;break;case"*":a[s]*=+t.substr(1);break;case"/":a[s]/=+t.substr(1);break;default:a[s]=+t}else{if("number"!==Dr(t))throw new Error("unsupported value for Color.set");a[s]=t}var l=new Rr(a,i);return n?(this._rgb=l._rgb,this):l}throw new Error("unknown channel "+o+" in mode "+i)}return a};var jr=f;Hr.rgb=function(e,t,n){var r=e._rgb,i=t._rgb;return new jr(r[0]+n*(i[0]-r[0]),r[1]+n*(i[1]-r[1]),r[2]+n*(i[2]-r[2]),"rgb")};var Br=f,Fr=Math.sqrt,Gr=Math.pow;Hr.lrgb=function(e,t,n){var r=e._rgb,i=r[0],o=r[1],a=r[2],s=t._rgb,l=s[0],c=s[1],T=s[2];return new Br(Fr(Gr(i,2)*(1-n)+Gr(l,2)*n),Fr(Gr(o,2)*(1-n)+Gr(c,2)*n),Fr(Gr(a,2)*(1-n)+Gr(T,2)*n),"rgb")};var Wr=f;Hr.lab=function(e,t,n){var r=e.lab(),i=t.lab();return new Wr(r[0]+n*(i[0]-r[0]),r[1]+n*(i[1]-r[1]),r[2]+n*(i[2]-r[2]),"lab")};var Ur=f,$r=function(e,t,n,r){var i,o,a,s,l,c,T,Q,d,u,p,h,m;return"hsl"===r?(a=e.hsl(),s=t.hsl()):"hsv"===r?(a=e.hsv(),s=t.hsv()):"hcg"===r?(a=e.hcg(),s=t.hcg()):"hsi"===r?(a=e.hsi(),s=t.hsi()):"lch"===r||"hcl"===r?(r="hcl",a=e.hcl(),s=t.hcl()):"oklch"===r&&(a=e.oklch().reverse(),s=t.oklch().reverse()),"h"!==r.substr(0,1)&&"oklch"!==r||(l=(i=a)[0],T=i[1],d=i[2],c=(o=s)[0],Q=o[1],u=o[2]),isNaN(l)||isNaN(c)?isNaN(l)?isNaN(c)?h=Number.NaN:(h=c,1!=d&&0!=d||"hsv"==r||(p=Q)):(h=l,1!=u&&0!=u||"hsv"==r||(p=T)):h=l+n*(c>l&&c-l>180?c-(l+360):c<l&&l-c>180?c+360-l:c-l),void 0===p&&(p=T+n*(Q-T)),m=d+n*(u-d),new Ur("oklch"===r?[m,p,h]:[h,p,m],r)},Zr=$r,zr=function(e,t,n){return Zr(e,t,n,"lch")};Hr.lch=zr,Hr.hcl=zr;var qr=f;Hr.num=function(e,t,n){var r=e.num(),i=t.num();return new qr(r+n*(i-r),"num")};var Xr=$r;Hr.hcg=function(e,t,n){return Xr(e,t,n,"hcg")};var Yr=$r;Hr.hsi=function(e,t,n){return Yr(e,t,n,"hsi")};var Kr=$r;Hr.hsl=function(e,t,n){return Kr(e,t,n,"hsl")};var Jr=$r;Hr.hsv=function(e,t,n){return Jr(e,t,n,"hsv")};var ei=f;Hr.oklab=function(e,t,n){var r=e.oklab(),i=t.oklab();return new ei(r[0]+n*(i[0]-r[0]),r[1]+n*(i[1]-r[1]),r[2]+n*(i[2]-r[2]),"oklab")};var ti=$r;Hr.oklch=function(e,t,n){return ti(e,t,n,"oklch")};var ni=f,ri=T.clip_rgb,ii=Math.pow,oi=Math.sqrt,ai=Math.PI,si=Math.cos,li=Math.sin,ci=Math.atan2,Ti=function(e,t){for(var n=e.length,r=[0,0,0,0],i=0;i<e.length;i++){var o=e[i],a=t[i]/n,s=o._rgb;r[0]+=ii(s[0],2)*a,r[1]+=ii(s[1],2)*a,r[2]+=ii(s[2],2)*a,r[3]+=s[3]*a}return r[0]=oi(r[0]),r[1]=oi(r[1]),r[2]=oi(r[2]),r[3]>.9999999&&(r[3]=1),new ni(ri(r))},Qi=b,di=T.type,ui=Math.pow,pi=function(e){var t="rgb",n=Qi("#ccc"),r=0,i=[0,1],o=[],a=[0,0],s=!1,l=[],c=!1,T=0,Q=1,d=!1,u={},p=!0,h=1,m=function(e){if((e=e||["#fff","#000"])&&"string"===di(e)&&Qi.brewer&&Qi.brewer[e.toLowerCase()]&&(e=Qi.brewer[e.toLowerCase()]),"array"===di(e)){1===e.length&&(e=[e[0],e[0]]),e=e.slice(0);for(var t=0;t<e.length;t++)e[t]=Qi(e[t]);o.length=0;for(var n=0;n<e.length;n++)o.push(n/(e.length-1))}return y(),l=e},f=function(e){return e},g=function(e){return e},b=function(e,r){var i,c;if(null==r&&(r=!1),isNaN(e)||null===e)return n;c=r?e:s&&s.length>2?function(e){if(null!=s){for(var t=s.length-1,n=0;n<t&&e>=s[n];)n++;return n-1}return 0}(e)/(s.length-2):Q!==T?(e-T)/(Q-T):1,c=g(c),r||(c=f(c)),1!==h&&(c=ui(c,h)),c=a[0]+c*(1-a[0]-a[1]),c=Math.min(1,Math.max(0,c));var d=Math.floor(1e4*c);if(p&&u[d])i=u[d];else{if("array"===di(l))for(var m=0;m<o.length;m++){var b=o[m];if(c<=b){i=l[m];break}if(c>=b&&m===o.length-1){i=l[m];break}if(c>b&&c<o[m+1]){c=(c-b)/(o[m+1]-b),i=Qi.interpolate(l[m],l[m+1],c,t);break}}else"function"===di(l)&&(i=l(c));p&&(u[d]=i)}return i},y=function(){return u={}};m(e);var L=function(e){var t=Qi(b(e));return c&&t[c]?t[c]():t};return L.classes=function(e){if(null!=e){if("array"===di(e))s=e,i=[e[0],e[e.length-1]];else{var t=Qi.analyze(i);s=0===e?[t.min,t.max]:Qi.limits(t,"e",e)}return L}return s},L.domain=function(e){if(!arguments.length)return i;T=e[0],Q=e[e.length-1],o=[];var t=l.length;if(e.length===t&&T!==Q)for(var n=0,r=Array.from(e);n<r.length;n+=1){var a=r[n];o.push((a-T)/(Q-T))}else{for(var s=0;s<t;s++)o.push(s/(t-1));if(e.length>2){var c=e.map((function(t,n){return n/(e.length-1)})),d=e.map((function(e){return(e-T)/(Q-T)}));d.every((function(e,t){return c[t]===e}))||(g=function(e){if(e<=0||e>=1)return e;for(var t=0;e>=d[t+1];)t++;var n=(e-d[t])/(d[t+1]-d[t]);return c[t]+n*(c[t+1]-c[t])})}}return i=[T,Q],L},L.mode=function(e){return arguments.length?(t=e,y(),L):t},L.range=function(e,t){return m(e),L},L.out=function(e){return c=e,L},L.spread=function(e){return arguments.length?(r=e,L):r},L.correctLightness=function(e){return null==e&&(e=!0),d=e,y(),f=d?function(e){for(var t=b(0,!0).lab()[0],n=b(1,!0).lab()[0],r=t>n,i=b(e,!0).lab()[0],o=t+(n-t)*e,a=i-o,s=0,l=1,c=20;Math.abs(a)>.01&&c-- >0;)r&&(a*=-1),a<0?(s=e,e+=.5*(l-e)):(l=e,e+=.5*(s-e)),a=(i=b(e,!0).lab()[0])-o;return e}:function(e){return e},L},L.padding=function(e){return null!=e?("number"===di(e)&&(e=[e,e]),a=e,L):a},L.colors=function(t,n){arguments.length<2&&(n="hex");var r=[];if(0===arguments.length)r=l.slice(0);else if(1===t)r=[L(.5)];else if(t>1){var o=i[0],a=i[1]-o;r=function(e,t,n){for(var r=[],i=e<t,o=n?i?t+1:t-1:t,a=e;i?a<o:a>o;i?a++:a--)r.push(a);return r}(0,t,!1).map((function(e){return L(o+e/(t-1)*a)}))}else{e=[];var c=[];if(s&&s.length>2)for(var T=1,Q=s.length,d=1<=Q;d?T<Q:T>Q;d?T++:T--)c.push(.5*(s[T-1]+s[T]));else c=i;r=c.map((function(e){return L(e)}))}return Qi[n]&&(r=r.map((function(e){return e[n]()}))),r},L.cache=function(e){return null!=e?(p=e,L):p},L.gamma=function(e){return null!=e?(h=e,L):h},L.nodata=function(e){return null!=e?(n=Qi(e),L):n},L};var hi=f,mi=pi,fi=b,gi=function(e,t,n){if(!gi[n])throw new Error("unknown blend mode "+n);return gi[n](e,t)},bi=function(e){return function(t,n){var r=fi(n).rgb(),i=fi(t).rgb();return fi.rgb(e(r,i))}},yi=function(e){return function(t,n){var r=[];return r[0]=e(t[0],n[0]),r[1]=e(t[1],n[1]),r[2]=e(t[2],n[2]),r}};gi.normal=bi(yi((function(e){return e}))),gi.multiply=bi(yi((function(e,t){return e*t/255}))),gi.screen=bi(yi((function(e,t){return 255*(1-(1-e/255)*(1-t/255))}))),gi.overlay=bi(yi((function(e,t){return t<128?2*e*t/255:255*(1-2*(1-e/255)*(1-t/255))}))),gi.darken=bi(yi((function(e,t){return e>t?t:e}))),gi.lighten=bi(yi((function(e,t){return e>t?e:t}))),gi.dodge=bi(yi((function(e,t){return 255===e||(e=t/255*255/(1-e/255))>255?255:e}))),gi.burn=bi(yi((function(e,t){return 255*(1-(1-t/255)/(e/255))})));for(var Li=gi,vi=T.type,wi=T.clip_rgb,Ei=T.TWOPI,_i=Math.pow,Mi=Math.sin,xi=Math.cos,Hi=b,Si=f,Ai=Math.floor,Ci=Math.random,Oi=a,Ii=Math.log,Vi=Math.pow,ki=Math.floor,Ni=Math.abs,Pi=function(e,t){void 0===t&&(t=null);var n={min:Number.MAX_VALUE,max:-1*Number.MAX_VALUE,sum:0,values:[],count:0};return"object"===Oi(e)&&(e=Object.values(e)),e.forEach((function(e){t&&"object"===Oi(e)&&(e=e[t]),null==e||isNaN(e)||(n.values.push(e),n.sum+=e,e<n.min&&(n.min=e),e>n.max&&(n.max=e),n.count+=1)})),n.domain=[n.min,n.max],n.limits=function(e,t){return Ri(n,e,t)},n},Ri=function(e,t,n){void 0===t&&(t="equal"),void 0===n&&(n=7),"array"==Oi(e)&&(e=Pi(e));var r=e.min,i=e.max,o=e.values.sort((function(e,t){return e-t}));if(1===n)return[r,i];var a=[];if("c"===t.substr(0,1)&&(a.push(r),a.push(i)),"e"===t.substr(0,1)){a.push(r);for(var s=1;s<n;s++)a.push(r+s/n*(i-r));a.push(i)}else if("l"===t.substr(0,1)){if(r<=0)throw new Error("Logarithmic scales are only possible for values > 0");var l=Math.LOG10E*Ii(r),c=Math.LOG10E*Ii(i);a.push(r);for(var T=1;T<n;T++)a.push(Vi(10,l+T/n*(c-l)));a.push(i)}else if("q"===t.substr(0,1)){a.push(r);for(var Q=1;Q<n;Q++){var d=(o.length-1)*Q/n,u=ki(d);if(u===d)a.push(o[u]);else{var p=d-u;a.push(o[u]*(1-p)+o[u+1]*p)}}a.push(i)}else if("k"===t.substr(0,1)){var h,m=o.length,f=new Array(m),g=new Array(n),b=!0,y=0,L=null;(L=[]).push(r);for(var v=1;v<n;v++)L.push(r+v/n*(i-r));for(L.push(i);b;){for(var w=0;w<n;w++)g[w]=0;for(var E=0;E<m;E++)for(var _=o[E],M=Number.MAX_VALUE,x=void 0,H=0;H<n;H++){var S=Ni(L[H]-_);S<M&&(M=S,x=H),g[x]++,f[E]=x}for(var A=new Array(n),C=0;C<n;C++)A[C]=null;for(var O=0;O<m;O++)null===A[h=f[O]]?A[h]=o[O]:A[h]+=o[O];for(var I=0;I<n;I++)A[I]*=1/g[I];b=!1;for(var V=0;V<n;V++)if(A[V]!==L[V]){b=!0;break}L=A,++y>200&&(b=!1)}for(var k={},N=0;N<n;N++)k[N]=[];for(var P=0;P<m;P++)k[h=f[P]].push(o[P]);for(var R=[],D=0;D<n;D++)R.push(k[D][0]),R.push(k[D][k[D].length-1]);R=R.sort((function(e,t){return e-t})),a.push(R[0]);for(var j=1;j<R.length;j+=2){var B=R[j];isNaN(B)||-1!==a.indexOf(B)||a.push(B)}}return a},Di={analyze:Pi,limits:Ri},ji=f,Bi=f,Fi=Math.sqrt,Gi=Math.pow,Wi=Math.min,Ui=Math.max,$i=Math.atan2,Zi=Math.abs,zi=Math.cos,qi=Math.sin,Xi=Math.exp,Yi=Math.PI,Ki=f,Ji=f,eo=b,to=pi,no={cool:function(){return to([eo.hsl(180,1,.9),eo.hsl(250,.7,.4)])},hot:function(){return to(["#000","#f00","#ff0","#fff"]).mode("rgb")}},ro={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec","#f2f2f2"]},io=0,oo=Object.keys(ro);io<oo.length;io+=1){var ao=oo[io];ro[ao.toLowerCase()]=ro[ao]}var so=ro,lo=b;return lo.average=function(e,t,n){void 0===t&&(t="lrgb"),void 0===n&&(n=null);var r=e.length;n||(n=Array.from(new Array(r)).map((function(){return 1})));var i=r/n.reduce((function(e,t){return e+t}));if(n.forEach((function(e,t){n[t]*=i})),e=e.map((function(e){return new ni(e)})),"lrgb"===t)return Ti(e,n);for(var o=e.shift(),a=o.get(t),s=[],l=0,c=0,T=0;T<a.length;T++)if(a[T]=(a[T]||0)*n[0],s.push(isNaN(a[T])?0:n[0]),"h"===t.charAt(T)&&!isNaN(a[T])){var Q=a[T]/180*ai;l+=si(Q)*n[0],c+=li(Q)*n[0]}var d=o.alpha()*n[0];e.forEach((function(e,r){var i=e.get(t);d+=e.alpha()*n[r+1];for(var o=0;o<a.length;o++)if(!isNaN(i[o]))if(s[o]+=n[r+1],"h"===t.charAt(o)){var T=i[o]/180*ai;l+=si(T)*n[r+1],c+=li(T)*n[r+1]}else a[o]+=i[o]*n[r+1]}));for(var u=0;u<a.length;u++)if("h"===t.charAt(u)){for(var p=ci(c/s[u],l/s[u])/ai*180;p<0;)p+=360;for(;p>=360;)p-=360;a[u]=p}else a[u]=a[u]/s[u];return d/=r,new ni(a,t).alpha(d>.99999?1:d,!0)},lo.bezier=function(e){var t=function(e){var t,n,r,i,o,a,s;if(e=e.map((function(e){return new hi(e)})),2===e.length)t=e.map((function(e){return e.lab()})),o=t[0],a=t[1],i=function(e){var t=[0,1,2].map((function(t){return o[t]+e*(a[t]-o[t])}));return new hi(t,"lab")};else if(3===e.length)n=e.map((function(e){return e.lab()})),o=n[0],a=n[1],s=n[2],i=function(e){var t=[0,1,2].map((function(t){return(1-e)*(1-e)*o[t]+2*(1-e)*e*a[t]+e*e*s[t]}));return new hi(t,"lab")};else if(4===e.length){var l;r=e.map((function(e){return e.lab()})),o=r[0],a=r[1],s=r[2],l=r[3],i=function(e){var t=[0,1,2].map((function(t){return(1-e)*(1-e)*(1-e)*o[t]+3*(1-e)*(1-e)*e*a[t]+3*(1-e)*e*e*s[t]+e*e*e*l[t]}));return new hi(t,"lab")}}else{if(!(e.length>=5))throw new RangeError("No point in running bezier with only one color.");var c,T,Q;c=e.map((function(e){return e.lab()})),Q=e.length-1,T=function(e){for(var t=[1,1],n=1;n<e;n++){for(var r=[1],i=1;i<=t.length;i++)r[i]=(t[i]||0)+t[i-1];t=r}return t}(Q),i=function(e){var t=1-e,n=[0,1,2].map((function(n){return c.reduce((function(r,i,o){return r+T[o]*Math.pow(t,Q-o)*Math.pow(e,o)*i[n]}),0)}));return new hi(n,"lab")}}return i}(e);return t.scale=function(){return mi(t)},t},lo.blend=Li,lo.cubehelix=function(e,t,n,r,i){void 0===e&&(e=300),void 0===t&&(t=-1.5),void 0===n&&(n=1),void 0===r&&(r=1),void 0===i&&(i=[0,1]);var o,a=0;"array"===vi(i)?o=i[1]-i[0]:(o=0,i=[i,i]);var s=function(s){var l=Ei*((e+120)/360+t*s),c=_i(i[0]+o*s,r),T=(0!==a?n[0]+s*a:n)*c*(1-c)/2,Q=xi(l),d=Mi(l);return Hi(wi([255*(c+T*(-.14861*Q+1.78277*d)),255*(c+T*(-.29227*Q-.90649*d)),255*(c+T*(1.97294*Q)),1]))};return s.start=function(t){return null==t?e:(e=t,s)},s.rotations=function(e){return null==e?t:(t=e,s)},s.gamma=function(e){return null==e?r:(r=e,s)},s.hue=function(e){return null==e?n:("array"===vi(n=e)?0==(a=n[1]-n[0])&&(n=n[1]):a=0,s)},s.lightness=function(e){return null==e?i:("array"===vi(e)?(i=e,o=e[1]-e[0]):(i=[e,e],o=0),s)},s.scale=function(){return Hi.scale(s)},s.hue(n),s},lo.mix=lo.interpolate=Or,lo.random=function(){for(var e="#",t=0;t<6;t++)e+="0123456789abcdef".charAt(Ai(16*Ci()));return new Si(e,"hex")},lo.scale=pi,lo.analyze=Di.analyze,lo.contrast=function(e,t){e=new ji(e),t=new ji(t);var n=e.luminance(),r=t.luminance();return n>r?(n+.05)/(r+.05):(r+.05)/(n+.05)},lo.deltaE=function(e,t,n,r,i){void 0===n&&(n=1),void 0===r&&(r=1),void 0===i&&(i=1);var o=function(e){return 360*e/(2*Yi)},a=function(e){return 2*Yi*e/360};e=new Bi(e),t=new Bi(t);var s=Array.from(e.lab()),l=s[0],c=s[1],T=s[2],Q=Array.from(t.lab()),d=Q[0],u=Q[1],p=Q[2],h=(l+d)/2,m=(Fi(Gi(c,2)+Gi(T,2))+Fi(Gi(u,2)+Gi(p,2)))/2,f=.5*(1-Fi(Gi(m,7)/(Gi(m,7)+Gi(25,7)))),g=c*(1+f),b=u*(1+f),y=Fi(Gi(g,2)+Gi(T,2)),L=Fi(Gi(b,2)+Gi(p,2)),v=(y+L)/2,w=o($i(T,g)),E=o($i(p,b)),_=w>=0?w:w+360,M=E>=0?E:E+360,x=Zi(_-M)>180?(_+M+360)/2:(_+M)/2,H=1-.17*zi(a(x-30))+.24*zi(a(2*x))+.32*zi(a(3*x+6))-.2*zi(a(4*x-63)),S=M-_;S=Zi(S)<=180?S:M<=_?S+360:S-360,S=2*Fi(y*L)*qi(a(S)/2);var A=d-l,C=L-y,O=1+.015*Gi(h-50,2)/Fi(20+Gi(h-50,2)),I=1+.045*v,V=1+.015*v*H,k=30*Xi(-Gi((x-275)/25,2)),N=-2*Fi(Gi(v,7)/(Gi(v,7)+Gi(25,7)))*qi(2*a(k)),P=Fi(Gi(A/(n*O),2)+Gi(C/(r*I),2)+Gi(S/(i*V),2)+N*(C/(r*I))*(S/(i*V)));return Ui(0,Wi(100,P))},lo.distance=function(e,t,n){void 0===n&&(n="lab"),e=new Ki(e),t=new Ki(t);var r=e.get(n),i=t.get(n),o=0;for(var a in r){var s=(r[a]||0)-(i[a]||0);o+=s*s}return Math.sqrt(o)},lo.limits=Di.limits,lo.valid=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];try{return new(Function.prototype.bind.apply(Ji,[null].concat(e))),!0}catch(e){return!1}},lo.scales=no,lo.colors=dn,lo.brewer=so,lo}()}(chroma$1,chroma$1.exports);var chromaExports=chroma$1.exports,chroma=getDefaultExportFromCjs(chromaExports);function hexWithAlpha(e,t){return chroma(e).alpha(t).css()}function has(e,t){return e.hasAttribute(t)}function get(e,t,n){return e.getAttribute(t)||n||""}function getNum(e,t,n){const r=Number(get(e,t));return Number.isNaN(r)?n||0:r}const attrHandlers={stroke:({el:e,exVals:t})=>{const n=get(e,"stroke");t.strokeColor=has(e,"stroke-opacity")?hexWithAlpha(n,getNum(e,"stroke-opacity")):n},"stroke-opacity":({el:e,exVals:t})=>{t.strokeColor=hexWithAlpha(get(e,"stroke","#000000"),getNum(e,"stroke-opacity"))},"stroke-width":({el:e,exVals:t})=>{t.strokeWidth=getNum(e,"stroke-width")},fill:({el:e,exVals:t})=>{const n=get(e,"fill");t.backgroundColor="none"===n?"#00000000":n},"fill-opacity":({el:e,exVals:t})=>{t.backgroundColor=hexWithAlpha(get(e,"fill","#000000"),getNum(e,"fill-opacity"))},opacity:({el:e,exVals:t})=>{t.opacity=getNum(e,"opacity",100)}};function presAttrsToElementValues(e){return[...e.attributes].reduce(((t,n)=>{const r=n.name;return Object.keys(attrHandlers).includes(r)&&attrHandlers[r]({el:e,exVals:t}),t}),{})}function filterAttrsToElementValues(e){const t={};return has(e,"x")&&(t.x=getNum(e,"x")),has(e,"y")&&(t.y=getNum(e,"y")),has(e,"width")&&(t.width=getNum(e,"width")),has(e,"height")&&(t.height=getNum(e,"height")),t}function pointsAttrToPoints(e){let t=[];return has(e,"points")&&(t=get(e,"points").split(" ").map((e=>e.split(",").map(parseFloat)))),t}function getGroupAttrs(e){return e.reduce(((e,{element:t})=>{const n=presAttrsToElementValues(t);return Object.assign(Object.assign({},e),n)}),{})}class Group{constructor(e){this.id=randomId(),this.element=e}}function createExElement(){return{id:randomId(),x:0,y:0,strokeColor:"#000000",backgroundColor:"#000000",fillStyle:"solid",strokeWidth:1,strokeStyle:"solid",roundness:null,roughness:0,opacity:100,width:0,height:0,angle:0,seed:randomInteger(),version:0,versionNonce:0,isDeleted:!1,groupIds:[],boundElementIds:null}}function createExRect(){return Object.assign(Object.assign({},createExElement()),{type:"rectangle"})}function createExLine(){return Object.assign(Object.assign({},createExElement()),{type:"line",points:[]})}function createExEllipse(){return Object.assign(Object.assign({},createExElement()),{type:"ellipse"})}function createExDraw(){return Object.assign(Object.assign({},createExElement()),{type:"line",points:[]})}const transformFunctions={matrix:"matrix",matrix3d:"matrix3d",perspective:"perspective",rotate:"rotate",rotate3d:"rotate3d",rotateX:"rotateX",rotateY:"rotateY",rotateZ:"rotateZ",scale:"scale",scale3d:"scale3d",scaleX:"scaleX",scaleY:"scaleY",scaleZ:"scaleZ",skew:"skew",skewX:"skewX",skewY:"skewY",translate:"translate",translate3d:"translate3d",translateX:"translateX",translateY:"translateY",translateZ:"translateZ"},transformFunctionsArr=Object.keys(transformFunctions),defaultUnits={matrix:"",matrix3d:"",perspective:"perspective",rotate:"deg",rotate3d:"deg",rotateX:"deg",rotateY:"deg",rotateZ:"deg",scale:"",scale3d:"",scaleX:"",scaleY:"",scaleZ:"",skew:"skew",skewX:"deg",skewY:"deg",translate:"px",translate3d:"px",translateX:"px",translateY:"px",translateZ:"px"},svgTransformToCSSTransform=e=>{const t=e.match(/(\w+)\(([^)]*)\)/g);if(!t)return"";const n=t.map((e=>{const t=e.split("(")[0];if(!t)throw new Error("Unable to find transform name");if(!transformFunctionsArr.includes(t))throw new Error(`transform function name "${t}" is not valid`);const n=e.match(/([-+]?[0-9]*\.?[0-9]+)([a-z])*/g);if(!n)return{type:t,values:[]};let r=n.map((e=>{const[n,r]=e.matchAll(/([-+]?[0-9]*\.?[0-9]+)|([a-z])*/g);return{unit:r[0]||defaultUnits[t],value:n[0]}}));return r&&"rotate"===t&&(null==r?void 0:r.length)>1&&(r=[r[0]]),{type:t,values:r}})),r=n.map((({type:e,values:t})=>`${e}(${t.map((({unit:e,value:t})=>`${t}${e}`)).join(", ")})`)).join(" ");return r};function getElementMatrix(e){if(e.hasAttribute("transform")){const t=new DOMMatrix(svgTransformToCSSTransform(e.getAttribute("transform")||""));return multiply(create$1(),create$1(),t.toFloat32Array())}return create$1()}function getTransformMatrix(e,t){return t.map((({element:e})=>getElementMatrix(e))).concat([getElementMatrix(e)]).reduce(((e,t)=>multiply(e,e,t)),create$1())}function transformPoints(e,t){return e.map((([e,n])=>{const[r,i]=transformMat4(create(),fromValues(e,n,1),t);return[r,i]}))}function distance(e,t){return Math.sqrt(distanceSq(e,t))}function distanceSq(e,t){return Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2)}function distanceToSegmentSq(e,t,n){const r=distanceSq(t,n);if(0===r)return distanceSq(e,t);let i=((e[0]-t[0])*(n[0]-t[0])+(e[1]-t[1])*(n[1]-t[1]))/r;return i=Math.max(0,Math.min(1,i)),distanceSq(e,lerp(t,n,i))}function lerp(e,t,n){return[e[0]+(t[0]-e[0])*n,e[1]+(t[1]-e[1])*n]}function flatness(e,t){const n=e[t+0],r=e[t+1],i=e[t+2],o=e[t+3];let a=3*r[0]-2*n[0]-o[0];a*=a;let s=3*r[1]-2*n[1]-o[1];s*=s;let l=3*i[0]-2*o[0]-n[0];l*=l;let c=3*i[1]-2*o[1]-n[1];return c*=c,a<l&&(a=l),s<c&&(s=c),a+s}function getPointsOnBezierCurveWithSplitting(e,t,n,r){const i=r||[];if(flatness(e,t)<n){const n=e[t+0];i.length?distance(i[i.length-1],n)>1&&i.push(n):i.push(n),i.push(e[t+3])}else{const r=.5,o=e[t+0],a=e[t+1],s=e[t+2],l=e[t+3],c=lerp(o,a,r),T=lerp(a,s,r),Q=lerp(s,l,r),d=lerp(c,T,r),u=lerp(T,Q,r),p=lerp(d,u,r);getPointsOnBezierCurveWithSplitting([o,c,d,p],0,n,i),getPointsOnBezierCurveWithSplitting([p,u,Q,l],0,n,i)}return i}function simplify(e,t){return simplifyPoints(e,0,e.length,t)}function simplifyPoints(e,t,n,r,i){const o=i||[],a=e[t],s=e[n-1];let l=0,c=1;for(let r=t+1;r<n-1;++r){const t=distanceToSegmentSq(e[r],a,s);t>l&&(l=t,c=r)}return Math.sqrt(l)>r?(simplifyPoints(e,t,c+1,r,o),simplifyPoints(e,c,n,r,o)):(o.length||o.push(a),o.push(s)),o}function pointsOnBezierCurves(e,t=.15,n){const r=[],i=(e.length-1)/3;for(let n=0;n<i;n++)getPointsOnBezierCurveWithSplitting(e,3*n,t,r);return n&&n>0?simplifyPoints(r,0,r.length,n):r}const COMMAND=0,NUMBER=1,EOD=2,PARAMS={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0};function tokenize(e){const t=new Array;for(;""!==e;)if(e.match(/^([ \t\r\n,]+)/))e=e.substr(RegExp.$1.length);else if(e.match(/^([aAcChHlLmMqQsStTvVzZ])/))t[t.length]={type:COMMAND,text:RegExp.$1},e=e.substr(RegExp.$1.length);else{if(!e.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];t[t.length]={type:NUMBER,text:`${parseFloat(RegExp.$1)}`},e=e.substr(RegExp.$1.length)}return t[t.length]={type:EOD,text:""},t}function isType(e,t){return e.type===t}function parsePath(e){const t=[],n=tokenize(e);let r="BOD",i=0,o=n[i];for(;!isType(o,EOD);){let a=0;const s=[];if("BOD"===r){if("M"!==o.text&&"m"!==o.text)return parsePath("M0,0"+e);i++,a=PARAMS[o.text],r=o.text}else isType(o,NUMBER)?a=PARAMS[r]:(i++,a=PARAMS[o.text],r=o.text);if(!(i+a<n.length))throw new Error("Path data ended short");for(let e=i;e<i+a;e++){const t=n[e];if(!isType(t,NUMBER))throw new Error("Param not a number: "+r+","+t.text);s[s.length]=+t.text}if("number"!=typeof PARAMS[r])throw new Error("Bad segment: "+r);{const e={key:r,data:s};t.push(e),i+=a,o=n[i],"M"===r&&(r="L"),"m"===r&&(r="l")}}return t}function absolutize(e){let t=0,n=0,r=0,i=0;const o=[];for(const{key:a,data:s}of e)switch(a){case"M":o.push({key:"M",data:[...s]}),[t,n]=s,[r,i]=s;break;case"m":t+=s[0],n+=s[1],o.push({key:"M",data:[t,n]}),r=t,i=n;break;case"L":o.push({key:"L",data:[...s]}),[t,n]=s;break;case"l":t+=s[0],n+=s[1],o.push({key:"L",data:[t,n]});break;case"C":o.push({key:"C",data:[...s]}),t=s[4],n=s[5];break;case"c":{const e=s.map(((e,r)=>r%2?e+n:e+t));o.push({key:"C",data:e}),t=e[4],n=e[5];break}case"Q":o.push({key:"Q",data:[...s]}),t=s[2],n=s[3];break;case"q":{const e=s.map(((e,r)=>r%2?e+n:e+t));o.push({key:"Q",data:e}),t=e[2],n=e[3];break}case"A":o.push({key:"A",data:[...s]}),t=s[5],n=s[6];break;case"a":t+=s[5],n+=s[6],o.push({key:"A",data:[s[0],s[1],s[2],s[3],s[4],t,n]});break;case"H":o.push({key:"H",data:[...s]}),t=s[0];break;case"h":t+=s[0],o.push({key:"H",data:[t]});break;case"V":o.push({key:"V",data:[...s]}),n=s[0];break;case"v":n+=s[0],o.push({key:"V",data:[n]});break;case"S":o.push({key:"S",data:[...s]}),t=s[2],n=s[3];break;case"s":{const e=s.map(((e,r)=>r%2?e+n:e+t));o.push({key:"S",data:e}),t=e[2],n=e[3];break}case"T":o.push({key:"T",data:[...s]}),t=s[0],n=s[1];break;case"t":t+=s[0],n+=s[1],o.push({key:"T",data:[t,n]});break;case"Z":case"z":o.push({key:"Z",data:[]}),t=r,n=i}return o}function normalize(e){const t=[];let n="",r=0,i=0,o=0,a=0,s=0,l=0;for(const{key:c,data:T}of e){switch(c){case"M":t.push({key:"M",data:[...T]}),[r,i]=T,[o,a]=T;break;case"C":t.push({key:"C",data:[...T]}),r=T[4],i=T[5],s=T[2],l=T[3];break;case"L":t.push({key:"L",data:[...T]}),[r,i]=T;break;case"H":r=T[0],t.push({key:"L",data:[r,i]});break;case"V":i=T[0],t.push({key:"L",data:[r,i]});break;case"S":{let e=0,o=0;"C"===n||"S"===n?(e=r+(r-s),o=i+(i-l)):(e=r,o=i),t.push({key:"C",data:[e,o,...T]}),s=T[0],l=T[1],r=T[2],i=T[3];break}case"T":{const[e,o]=T;let a=0,c=0;"Q"===n||"T"===n?(a=r+(r-s),c=i+(i-l)):(a=r,c=i);const Q=r+2*(a-r)/3,d=i+2*(c-i)/3,u=e+2*(a-e)/3,p=o+2*(c-o)/3;t.push({key:"C",data:[Q,d,u,p,e,o]}),s=a,l=c,r=e,i=o;break}case"Q":{const[e,n,o,a]=T,c=r+2*(e-r)/3,Q=i+2*(n-i)/3,d=o+2*(e-o)/3,u=a+2*(n-a)/3;t.push({key:"C",data:[c,Q,d,u,o,a]}),s=e,l=n,r=o,i=a;break}case"A":{const e=Math.abs(T[0]),n=Math.abs(T[1]),o=T[2],a=T[3],s=T[4],l=T[5],c=T[6];0===e||0===n?(t.push({key:"C",data:[r,i,l,c,l,c]}),r=l,i=c):r===l&&i===c||(arcToCubicCurves(r,i,l,c,e,n,o,a,s).forEach((function(e){t.push({key:"C",data:e})})),r=l,i=c);break}case"Z":t.push({key:"Z",data:[]}),r=o,i=a}n=c}return t}function degToRad(e){return Math.PI*e/180}function rotate(e,t,n){return[e*Math.cos(n)-t*Math.sin(n),e*Math.sin(n)+t*Math.cos(n)]}function arcToCubicCurves(e,t,n,r,i,o,a,s,l,c){const T=degToRad(a);let Q=[],d=0,u=0,p=0,h=0;if(c)[d,u,p,h]=c;else{[e,t]=rotate(e,t,-T),[n,r]=rotate(n,r,-T);const a=(e-n)/2,c=(t-r)/2;let Q=a*a/(i*i)+c*c/(o*o);Q>1&&(Q=Math.sqrt(Q),i*=Q,o*=Q);const m=i*i,f=o*o,g=m*f-m*c*c-f*a*a,b=m*c*c+f*a*a,y=(s===l?-1:1)*Math.sqrt(Math.abs(g/b));p=y*i*c/o+(e+n)/2,h=y*-o*a/i+(t+r)/2,d=Math.asin(parseFloat(((t-h)/o).toFixed(9))),u=Math.asin(parseFloat(((r-h)/o).toFixed(9))),e<p&&(d=Math.PI-d),n<p&&(u=Math.PI-u),d<0&&(d=2*Math.PI+d),u<0&&(u=2*Math.PI+u),l&&d>u&&(d-=2*Math.PI),!l&&u>d&&(u-=2*Math.PI)}let m=u-d;if(Math.abs(m)>120*Math.PI/180){const e=u,t=n,s=r;u=l&&u>d?d+120*Math.PI/180*1:d+120*Math.PI/180*-1,Q=arcToCubicCurves(n=p+i*Math.cos(u),r=h+o*Math.sin(u),t,s,i,o,a,0,l,[u,e,p,h])}m=u-d;const f=Math.cos(d),g=Math.sin(d),b=Math.cos(u),y=Math.sin(u),L=Math.tan(m/4),v=4/3*i*L,w=4/3*o*L,E=[e,t],_=[e+v*g,t-w*f],M=[n+v*y,r-w*b],x=[n,r];if(_[0]=2*E[0]-_[0],_[1]=2*E[1]-_[1],c)return[_,M,x].concat(Q);{Q=[_,M,x].concat(Q);const e=[];for(let t=0;t<Q.length;t+=3){const n=rotate(Q[t][0],Q[t][1],T),r=rotate(Q[t+1][0],Q[t+1][1],T),i=rotate(Q[t+2][0],Q[t+2][1],T);e.push([n[0],n[1],r[0],r[1],i[0],i[1]])}return e}}function pointsOnPath(e,t,n){const r=normalize(absolutize(parsePath(e))),i=[];let o=[],a=[0,0],s=[];const l=()=>{s.length>=4&&o.push(...pointsOnBezierCurves(s,t)),s=[]},c=()=>{l(),o.length&&(i.push(o),o=[])};for(const{key:e,data:t}of r)switch(e){case"M":c(),a=[t[0],t[1]],o.push(a);break;case"L":l(),o.push([t[0],t[1]]);break;case"C":if(!s.length){const e=o.length?o[o.length-1]:a;s.push([e[0],e[1]])}s.push([t[0],t[1]]),s.push([t[2],t[3]]),s.push([t[4],t[5]]);break;case"Z":l(),o.push([a[0],a[1]])}if(c(),!n)return i;const T=[];for(const e of i){const t=simplify(e,n);t.length&&T.push(t)}return T}const SUPPORTED_TAGS=["svg","path","g","use","circle","ellipse","rect","polyline","polygon"],nodeValidator=e=>SUPPORTED_TAGS.includes(e.tagName)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT;function createTreeWalker(e){return document.createTreeWalker(e,NodeFilter.SHOW_ALL,{acceptNode:nodeValidator})}const presAttrs=(e,t)=>Object.assign(Object.assign(Object.assign({},getGroupAttrs(t)),presAttrsToElementValues(e)),filterAttrsToElementValues(e)),skippedUseAttrs=["id"],allwaysPassedUseAttrs=["x","y","width","height","href","xlink:href"],getDefElWithCorrectAttrs=(e,t)=>[...t.attributes].reduce(((n,r)=>(skippedUseAttrs.includes(r.value)||e.hasAttribute(r.name)&&!allwaysPassedUseAttrs.includes(r.name)||n.setAttribute(r.name,t.getAttribute(r.name)||""),n)),e.cloneNode()),walkers={svg:e=>{walk(e,e.tw.nextNode())},g:e=>{const t=Object.assign(Object.assign({},e),{tw:createTreeWalker(e.tw.currentNode),groups:[...e.groups,new Group(e.tw.currentNode)]});walk(t,t.tw.nextNode()),walk(e,e.tw.nextSibling())},use:e=>{const{root:t,tw:n,scene:r}=e,i=n.currentNode,o=i.getAttribute("href")||i.getAttribute("xlink:href");if(!o)throw new Error("unable to get id of use element");const a=t.querySelector(o);if(!a)throw new Error(`unable to find def element with id: ${o}`);const s=new ExcalidrawScene,l=getDefElWithCorrectAttrs(a,i);walk(Object.assign(Object.assign({},e),{scene:s,tw:createTreeWalker(l)}),l);const c=s.elements.pop();c&&r.elements.push(c),walk(e,e.tw.nextNode())},circle:e=>{const{tw:t,scene:n,groups:r}=e,i=t.currentNode,o=getNum(i,"r",0),a=2*o,s=getNum(i,"x",0)+getNum(i,"cx",0)-o,l=getNum(i,"y",0)+getNum(i,"cy",0)-o,c=getTransformMatrix(i,r),T=fromValues$1(a,0,0,0,0,a,0,0,0,0,1,0,s,l,0,1),Q=multiply(create$1(),c,T),d=Object.assign(Object.assign(Object.assign({},createExEllipse()),presAttrs(i,r)),{x:Q[12],y:Q[13],width:Q[0],height:Q[5],groupIds:r.map((e=>e.id))});n.elements.push(d),walk(e,t.nextNode())},ellipse:e=>{const{tw:t,scene:n,groups:r}=e,i=t.currentNode,o=getNum(i,"rx",0),a=getNum(i,"ry",0),s=getNum(i,"cx",0),l=getNum(i,"cy",0),c=getNum(i,"x",0)+s-o,T=getNum(i,"y",0)+l-a,Q=2*o,d=2*a,u=getTransformMatrix(i,r),p=fromValues$1(Q,0,0,0,0,d,0,0,0,0,1,0,c,T,0,1),h=multiply(create$1(),u,p),m=Object.assign(Object.assign(Object.assign({},createExEllipse()),presAttrs(i,r)),{x:h[12],y:h[13],width:h[0],height:h[5],groupIds:r.map((e=>e.id))});n.elements.push(m),walk(e,t.nextNode())},line:e=>{walk(e,e.tw.nextNode())},polygon:e=>{const{tw:t,scene:n,groups:r}=e,i=t.currentNode,o=transformPoints(pointsAttrToPoints(i),getTransformMatrix(i,r)),a=o[0][0],s=o[0][1],l=o.map((([e,t])=>[e-a,t-s])),[c,T]=dimensionsFromPoints(l),Q=Object.assign(Object.assign(Object.assign(Object.assign({},createExLine()),getGroupAttrs(r)),presAttrsToElementValues(i)),{points:l.concat([[0,0]]),x:a,y:s,width:c,height:T});n.elements.push(Q),walk(e,e.tw.nextNode())},polyline:e=>{const{tw:t,scene:n,groups:r}=e,i=t.currentNode,o=getTransformMatrix(i,r),a=transformPoints(pointsAttrToPoints(i),o),s=a[0][0],l=a[0][1],c=a.map((([e,t])=>[e-s,t-l])),[T,Q]=dimensionsFromPoints(c),d=has(i,"fill"),u=get(i,"fill"),p=!d||d&&"none"!==u,h=Object.assign(Object.assign(Object.assign(Object.assign({},createExLine()),getGroupAttrs(r)),presAttrsToElementValues(i)),{points:c.concat(p?[[0,0]]:[]),x:s,y:l,width:T,height:Q});n.elements.push(h),walk(e,e.tw.nextNode())},rect:e=>{const{tw:t,scene:n,groups:r}=e,i=t.currentNode,o=getNum(i,"x",0),a=getNum(i,"y",0),s=getNum(i,"width",0),l=getNum(i,"height",0),c=getTransformMatrix(i,r),T=fromValues$1(s,0,0,0,0,l,0,0,0,0,1,0,o,a,0,1),Q=multiply(create$1(),c,T),d=i.hasAttribute("rx")||i.hasAttribute("ry"),u=Object.assign(Object.assign(Object.assign({},createExRect()),presAttrs(i,r)),{x:Q[12],y:Q[13],width:Q[0],height:Q[5],roundness:d?{type:ROUNDNESS.LEGACY}:null});n.elements.push(u),walk(e,e.tw.nextNode())},path:e=>{const{tw:t,scene:n,groups:r}=e,i=t.currentNode,o=getTransformMatrix(i,r),a=pointsOnPath(get(i,"d")),s=get(i,"fill","black"),l=get(i,"fill-rule","nonzero");let c=[],T=randomId();switch(l){case"nonzero":let e="clockwise";c=a.map(((t,n)=>{const a=transformPoints(t,clone(o)),l=a[0][0],c=a[0][1],[Q,d]=dimensionsFromPoints(a),u=a.map((([e,t])=>[e-l,t-c])),p=getWindingOrder(u);0===n&&(e=p,T=randomId());let h=s;return e!==p&&(h="#FFFFFF"),Object.assign(Object.assign(Object.assign(Object.assign({},createExDraw()),{strokeWidth:0,strokeColor:"#00000000"}),presAttrs(i,r)),{points:u,backgroundColor:h,width:Q,height:d,x:l+getNum(i,"x",0),y:c+getNum(i,"y",0),groupIds:[T]})}));break;case"evenodd":c=a.map(((e,t)=>{const n=transformPoints(e,clone(o)),a=n[0][0],s=n[0][1],[l,c]=dimensionsFromPoints(n),Q=n.map((([e,t])=>[e-a,t-s]));return 0===t&&(T=randomId()),Object.assign(Object.assign(Object.assign({},createExDraw()),presAttrs(i,r)),{points:Q,width:l,height:c,x:a+getNum(i,"x",0),y:s+getNum(i,"y",0)})}))}n.elements=n.elements.concat(c),walk(e,t.nextNode())}};function walk(e,t){if(!t)return;const n=t.nodeName;walkers[n]&&walkers[n](e)}const svgToExcalidraw=e=>{const t=(new DOMParser).parseFromString(e,"image/svg+xml"),n=t.querySelectorAll("parsererror"),r=n.length>0;let i=null;if(r)console.error("There were errors while parsing the given SVG: ",[...n].map((e=>e.innerHTML)));else{const e=createTreeWalker(t),n=new ExcalidrawScene;walk({tw:e,scene:n,groups:[],root:t},e.nextNode()),i=n.elements}return{hasErrors:r,errors:r?n:null,content:i}};function BuildLog$1(){var e,t=0,n=!1;function r(t,n){return e.list.push({type:t,data:n?JSON.parse(JSON.stringify(n)):void 0}),e}return e={list:[],segmentId:function(){return t++},checkIntersection:function(e,t){return r("check",{seg1:e,seg2:t})},segmentChop:function(e,t){return r("div_seg",{seg:e,pt:t}),r("chop",{seg:e,pt:t})},statusRemove:function(e){return r("pop_seg",{seg:e})},segmentUpdate:function(e){return r("seg_update",{seg:e})},segmentNew:function(e,t){return r("new_seg",{seg:e,primary:t})},segmentRemove:function(e){return r("rem_seg",{seg:e})},tempStatus:function(e,t,n){return r("temp_status",{seg:e,above:t,below:n})},rewind:function(e){return r("rewind",{seg:e})},status:function(e,t,n){return r("status",{seg:e,above:t,below:n})},vert:function(t){return t===n?e:(n=t,r("vert",{x:t}))},log:function(e){return"string"!=typeof e&&(e=JSON.stringify(e,!1," ")),r("log",{txt:e})},reset:function(){return r("reset")},selected:function(e){return r("selected",{segs:e})},chainStart:function(e){return r("chain_start",{seg:e})},chainRemoveHead:function(e,t){return r("chain_rem_head",{index:e,pt:t})},chainRemoveTail:function(e,t){return r("chain_rem_tail",{index:e,pt:t})},chainNew:function(e,t){return r("chain_new",{pt1:e,pt2:t})},chainMatch:function(e){return r("chain_match",{index:e})},chainClose:function(e){return r("chain_close",{index:e})},chainAddHead:function(e,t){return r("chain_add_head",{index:e,pt:t})},chainAddTail:function(e,t){return r("chain_add_tail",{index:e,pt:t})},chainConnect:function(e,t){return r("chain_con",{index1:e,index2:t})},chainReverse:function(e){return r("chain_rev",{index:e})},chainJoin:function(e,t){return r("chain_join",{index1:e,index2:t})},done:function(){return r("done")}},e}var buildLog$1=BuildLog$1;function Epsilon$1(e){"number"!=typeof e&&(e=1e-10);var t={epsilon:function(t){return"number"==typeof t&&(e=t),e},pointAboveOrOnLine:function(t,n,r){var i=n[0],o=n[1],a=r[0],s=r[1],l=t[0];return(a-i)*(t[1]-o)-(s-o)*(l-i)>=-e},pointBetween:function(t,n,r){var i=t[1]-n[1],o=r[0]-n[0],a=t[0]-n[0],s=r[1]-n[1],l=a*o+i*s;return!(l<e||l-(o*o+s*s)>-e)},pointsSameX:function(t,n){return Math.abs(t[0]-n[0])<e},pointsSameY:function(t,n){return Math.abs(t[1]-n[1])<e},pointsSame:function(e,n){return t.pointsSameX(e,n)&&t.pointsSameY(e,n)},pointsCompare:function(e,n){return t.pointsSameX(e,n)?t.pointsSameY(e,n)?0:e[1]<n[1]?-1:1:e[0]<n[0]?-1:1},pointsCollinear:function(t,n,r){var i=t[0]-n[0],o=t[1]-n[1],a=n[0]-r[0],s=n[1]-r[1];return Math.abs(i*s-a*o)<e},linesIntersect:function(t,n,r,i){var o=n[0]-t[0],a=n[1]-t[1],s=i[0]-r[0],l=i[1]-r[1],c=o*l-a*s;if(Math.abs(c)<e)return!1;var T=t[0]-r[0],Q=t[1]-r[1],d=(s*Q-l*T)/c,u=(o*Q-a*T)/c,p={alongA:0,alongB:0,pt:[t[0]+d*o,t[1]+d*a]};return p.alongA=d<=-e?-2:d<e?-1:d-1<=-e?0:d-1<e?1:2,p.alongB=u<=-e?-2:u<e?-1:u-1<=-e?0:u-1<e?1:2,p},pointInsideRegion:function(t,n){for(var r=t[0],i=t[1],o=n[n.length-1][0],a=n[n.length-1][1],s=!1,l=0;l<n.length;l++){var c=n[l][0],T=n[l][1];T-i>e!=a-i>e&&(o-c)*(i-T)/(a-T)+c-r>e&&(s=!s),o=c,a=T}return s}};return t}var epsilon$1=Epsilon$1,LinkedList$1={create:function(){var e={root:{root:!0,next:null},exists:function(t){return null!==t&&t!==e.root},isEmpty:function(){return null===e.root.next},getHead:function(){return e.root.next},insertBefore:function(t,n){for(var r=e.root,i=e.root.next;null!==i;){if(n(i))return t.prev=i.prev,t.next=i,i.prev.next=t,void(i.prev=t);r=i,i=i.next}r.next=t,t.prev=r,t.next=null},findTransition:function(t){for(var n=e.root,r=e.root.next;null!==r&&!t(r);)n=r,r=r.next;return{before:n===e.root?null:n,after:r,insert:function(e){return e.prev=n,e.next=r,n.next=e,null!==r&&(r.prev=e),e}}}};return e},node:function(e){return e.prev=null,e.next=null,e.remove=function(){e.prev.next=e.next,e.next&&(e.next.prev=e.prev),e.prev=null,e.next=null},e}},linkedList=LinkedList$1,LinkedList=linkedList;function Intersecter$1(e,t,n){function r(e,t){return{id:n?n.segmentId():-1,start:e,end:t,myFill:{above:null,below:null},otherFill:null}}function i(e,t,r){return{id:n?n.segmentId():-1,start:e,end:t,myFill:{above:r.myFill.above,below:r.myFill.below},otherFill:null}}var o=LinkedList.create();function a(e,n){o.insertBefore(e,(function(r){return i=e.isStart,o=e.pt,a=n,s=r.isStart,l=r.pt,c=r.other.pt,(0!==(T=t.pointsCompare(o,l))?T:t.pointsSame(a,c)?0:i!==s?i?1:-1:t.pointAboveOrOnLine(a,s?l:c,s?c:l)?1:-1)<0;var i,o,a,s,l,c,T}))}function s(e,t){var n=function(e,t){var n=LinkedList.node({isStart:!0,pt:e.start,seg:e,primary:t,other:null,status:null});return a(n,e.end),n}(e,t);return function(e,t,n){var r=LinkedList.node({isStart:!1,pt:t.end,seg:t,primary:n,other:e,status:null});e.other=r,a(r,e.pt)}(n,e,t),n}function l(e,t){var r=i(t,e.seg.end,e.seg);return function(e,t){n&&n.segmentChop(e.seg,t),e.other.remove(),e.seg.end=t,e.other.pt=t,a(e.other,e.pt)}(e,t),s(r,e.primary)}function c(r,i){var a=LinkedList.create();function s(e){return a.findTransition((function(n){var r,i,o,a,s,l;return r=e,i=n.ev,o=r.seg.start,a=r.seg.end,s=i.seg.start,l=i.seg.end,(t.pointsCollinear(o,s,l)?t.pointsCollinear(a,s,l)||t.pointAboveOrOnLine(a,s,l)?1:-1:t.pointAboveOrOnLine(o,s,l)?1:-1)>0}))}function c(e,r){var i=e.seg,o=r.seg,a=i.start,s=i.end,c=o.start,T=o.end;n&&n.checkIntersection(i,o);var Q=t.linesIntersect(a,s,c,T);if(!1===Q){if(!t.pointsCollinear(a,s,c))return!1;if(t.pointsSame(a,T)||t.pointsSame(s,c))return!1;var d=t.pointsSame(a,c),u=t.pointsSame(s,T);if(d&&u)return r;var p=!d&&t.pointBetween(a,c,T),h=!u&&t.pointBetween(s,c,T);if(d)return h?l(r,s):l(e,T),r;p&&(u||(h?l(r,s):l(e,T)),l(r,a))}else 0===Q.alongA&&(-1===Q.alongB?l(e,c):0===Q.alongB?l(e,Q.pt):1===Q.alongB&&l(e,T)),0===Q.alongB&&(-1===Q.alongA?l(r,a):0===Q.alongA?l(r,Q.pt):1===Q.alongA&&l(r,s));return!1}for(var T=[];!o.isEmpty();){var Q=o.getHead();if(n&&n.vert(Q.pt[0]),Q.isStart){n&&n.segmentNew(Q.seg,Q.primary);var d=s(Q),u=d.before?d.before.ev:null,p=d.after?d.after.ev:null;function y(){if(u){var e=c(Q,u);if(e)return e}return!!p&&c(Q,p)}n&&n.tempStatus(Q.seg,!!u&&u.seg,!!p&&p.seg);var h,m,f=y();if(f)e?(m=null===Q.seg.myFill.below||Q.seg.myFill.above!==Q.seg.myFill.below)&&(f.seg.myFill.above=!f.seg.myFill.above):f.seg.otherFill=Q.seg.myFill,n&&n.segmentUpdate(f.seg),Q.other.remove(),Q.remove();if(o.getHead()!==Q){n&&n.rewind(Q.seg);continue}e?(m=null===Q.seg.myFill.below||Q.seg.myFill.above!==Q.seg.myFill.below,Q.seg.myFill.below=p?p.seg.myFill.above:r,Q.seg.myFill.above=m?!Q.seg.myFill.below:Q.seg.myFill.below):null===Q.seg.otherFill&&(h=p?Q.primary===p.primary?p.seg.otherFill.above:p.seg.myFill.above:Q.primary?i:r,Q.seg.otherFill={above:h,below:h}),n&&n.status(Q.seg,!!u&&u.seg,!!p&&p.seg),Q.other.status=d.insert(LinkedList.node({ev:Q}))}else{var g=Q.status;if(null===g)throw new Error("PolyBool: Zero-length segment detected; your epsilon is probably too small or too large");if(a.exists(g.prev)&&a.exists(g.next)&&c(g.prev.ev,g.next.ev),n&&n.statusRemove(g.ev.seg),g.remove(),!Q.primary){var b=Q.seg.myFill;Q.seg.myFill=Q.seg.otherFill,Q.seg.otherFill=b}T.push(Q.seg)}o.getHead().remove()}return n&&n.done(),T}return e?{addRegion:function(e){for(var n,i=e[e.length-1],o=0;o<e.length;o++){n=i,i=e[o];var a=t.pointsCompare(n,i);0!==a&&s(r(a<0?n:i,a<0?i:n),!0)}},calculate:function(e){return c(e,!1)}}:{calculate:function(e,t,n,r){return e.forEach((function(e){s(i(e.start,e.end,e),!0)})),n.forEach((function(e){s(i(e.start,e.end,e),!1)})),c(t,r)}}}var intersecter=Intersecter$1;function SegmentChainer$1(e,t,n){var r=[],i=[];return e.forEach((function(e){var o=e.start,a=e.end;if(t.pointsSame(o,a))console.warn("PolyBool: Warning: Zero-length segment detected; your epsilon is probably too small or too large");else{n&&n.chainStart(e);for(var s={index:0,matches_head:!1,matches_pt1:!1},l={index:0,matches_head:!1,matches_pt1:!1},c=s,T=0;T<r.length;T++){var Q=(m=r[T])[0];m[1];var d=m[m.length-1];if(m[m.length-2],t.pointsSame(Q,o)){if(E(T,!0,!0))break}else if(t.pointsSame(Q,a)){if(E(T,!0,!1))break}else if(t.pointsSame(d,o)){if(E(T,!1,!0))break}else if(t.pointsSame(d,a)&&E(T,!1,!1))break}if(c===s)return r.push([o,a]),void(n&&n.chainNew(o,a));if(c===l){n&&n.chainMatch(s.index);var u=s.index,p=s.matches_pt1?a:o,h=s.matches_head,m=r[u],f=h?m[0]:m[m.length-1],g=h?m[1]:m[m.length-2],b=h?m[m.length-1]:m[0],y=h?m[m.length-2]:m[1];return t.pointsCollinear(g,f,p)&&(h?(n&&n.chainRemoveHead(s.index,p),m.shift()):(n&&n.chainRemoveTail(s.index,p),m.pop()),f=g),t.pointsSame(b,p)?(r.splice(u,1),t.pointsCollinear(y,b,f)&&(h?(n&&n.chainRemoveTail(s.index,f),m.pop()):(n&&n.chainRemoveHead(s.index,f),m.shift())),n&&n.chainClose(s.index),void i.push(m)):void(h?(n&&n.chainAddHead(s.index,p),m.unshift(p)):(n&&n.chainAddTail(s.index,p),m.push(p)))}var L=s.index,v=l.index;n&&n.chainConnect(L,v);var w=r[L].length<r[v].length;s.matches_head?l.matches_head?w?(_(L),M(L,v)):(_(v),M(v,L)):M(v,L):l.matches_head?M(L,v):w?(_(L),M(v,L)):(_(v),M(L,v))}function E(e,t,n){return c.index=e,c.matches_head=t,c.matches_pt1=n,c===s?(c=l,!1):(c=null,!0)}function _(e){n&&n.chainReverse(e),r[e].reverse()}function M(e,i){var o=r[e],a=r[i],s=o[o.length-1],l=o[o.length-2],c=a[0],T=a[1];t.pointsCollinear(l,s,c)&&(n&&n.chainRemoveTail(e,s),o.pop(),s=l),t.pointsCollinear(s,c,T)&&(n&&n.chainRemoveHead(i,c),a.shift()),n&&n.chainJoin(e,i),r[e]=o.concat(a),r.splice(i,1)}})),i}var segmentChainer=SegmentChainer$1;function select(e,t,n){var r=[];return e.forEach((function(e){var i=(e.myFill.above?8:0)+(e.myFill.below?4:0)+(e.otherFill&&e.otherFill.above?2:0)+(e.otherFill&&e.otherFill.below?1:0);0!==t[i]&&r.push({id:n?n.segmentId():-1,start:e.start,end:e.end,myFill:{above:1===t[i],below:2===t[i]},otherFill:null})})),n&&n.selected(r),r}var PolyBool,SegmentSelector$1={union:function(e,t){return select(e,[0,2,1,0,2,2,0,0,1,0,1,0,0,0,0,0],t)},intersect:function(e,t){return select(e,[0,0,0,0,0,2,0,2,0,0,1,1,0,2,1,0],t)},difference:function(e,t){return select(e,[0,0,0,0,2,0,2,0,1,1,0,0,0,1,2,0],t)},differenceRev:function(e,t){return select(e,[0,2,1,0,0,0,1,1,0,2,0,2,0,0,0,0],t)},xor:function(e,t){return select(e,[0,2,1,0,2,0,0,1,1,0,0,2,0,1,2,0],t)}},segmentSelector=SegmentSelector$1,GeoJSON$1={toPolygon:function(e,t){function n(t){if(t.length<=0)return e.segments({inverted:!1,regions:[]});function n(t){var n=t.slice(0,t.length-1);return e.segments({inverted:!1,regions:[n]})}for(var r=n(t[0]),i=1;i<t.length;i++)r=e.selectDifference(e.combine(r,n(t[i])));return r}if("Polygon"===t.type)return e.polygon(n(t.coordinates));if("MultiPolygon"===t.type){for(var r=e.segments({inverted:!1,regions:[]}),i=0;i<t.coordinates.length;i++)r=e.selectUnion(e.combine(r,n(t.coordinates[i])));return e.polygon(r)}throw new Error("PolyBool: Cannot convert GeoJSON object to PolyBool polygon")},fromPolygon:function(e,t,n){function r(e,n){return t.pointInsideRegion([.5*(e[0][0]+e[1][0]),.5*(e[0][1]+e[1][1])],n)}function i(e){return{region:e,children:[]}}n=e.polygon(e.segments(n));var o=i(null);function a(e,t){for(var n=0;n<e.children.length;n++)if(r(t,(s=e.children[n]).region))return void a(s,t);var o=i(t);for(n=0;n<e.children.length;n++){var s;r((s=e.children[n]).region,t)&&(o.children.push(s),e.children.splice(n,1),n--)}e.children.push(o)}for(var s=0;s<n.regions.length;s++){var l=n.regions[s];l.length<3||a(o,l)}function c(e,t){for(var n=0,r=e[e.length-1][0],i=e[e.length-1][1],o=[],a=0;a<e.length;a++){var s=e[a][0],l=e[a][1];o.push([s,l]),n+=l*r-s*i,r=s,i=l}return n<0!==t&&o.reverse(),o.push([o[0][0],o[0][1]]),o}var T=[];function Q(e){var t=[c(e.region,!1)];T.push(t);for(var n=0;n<e.children.length;n++)t.push(d(e.children[n]))}function d(e){for(var t=0;t<e.children.length;t++)Q(e.children[t]);return c(e.region,!0)}for(s=0;s<o.children.length;s++)Q(o.children[s]);return T.length<=0?{type:"Polygon",coordinates:[]}:1==T.length?{type:"Polygon",coordinates:T[0]}:{type:"MultiPolygon",coordinates:T}}},geojson=GeoJSON$1,BuildLog=buildLog$1,Epsilon=epsilon$1,Intersecter=intersecter,SegmentChainer=segmentChainer,SegmentSelector=segmentSelector,GeoJSON=geojson,buildLog=!1,epsilon=Epsilon();function operate(e,t,n){var r=PolyBool.segments(e),i=PolyBool.segments(t),o=n(PolyBool.combine(r,i));return PolyBool.polygon(o)}PolyBool={buildLog:function(e){return!0===e?buildLog=BuildLog():!1===e&&(buildLog=!1),!1!==buildLog&&buildLog.list},epsilon:function(e){return epsilon.epsilon(e)},segments:function(e){var t=Intersecter(!0,epsilon,buildLog);return e.regions.forEach(t.addRegion),{segments:t.calculate(e.inverted),inverted:e.inverted}},combine:function(e,t){return{combined:Intersecter(!1,epsilon,buildLog).calculate(e.segments,e.inverted,t.segments,t.inverted),inverted1:e.inverted,inverted2:t.inverted}},selectUnion:function(e){return{segments:SegmentSelector.union(e.combined,buildLog),inverted:e.inverted1||e.inverted2}},selectIntersect:function(e){return{segments:SegmentSelector.intersect(e.combined,buildLog),inverted:e.inverted1&&e.inverted2}},selectDifference:function(e){return{segments:SegmentSelector.difference(e.combined,buildLog),inverted:e.inverted1&&!e.inverted2}},selectDifferenceRev:function(e){return{segments:SegmentSelector.differenceRev(e.combined,buildLog),inverted:!e.inverted1&&e.inverted2}},selectXor:function(e){return{segments:SegmentSelector.xor(e.combined,buildLog),inverted:e.inverted1!==e.inverted2}},polygon:function(e){return{regions:SegmentChainer(e.segments,epsilon,buildLog),inverted:e.inverted}},polygonFromGeoJSON:function(e){return GeoJSON.toPolygon(PolyBool,e)},polygonToGeoJSON:function(e){return GeoJSON.fromPolygon(PolyBool,epsilon,e)},union:function(e,t){return operate(e,t,PolyBool.selectUnion)},intersect:function(e,t){return operate(e,t,PolyBool.selectIntersect)},difference:function(e,t){return operate(e,t,PolyBool.selectDifference)},differenceRev:function(e,t){return operate(e,t,PolyBool.selectDifferenceRev)},xor:function(e,t){return operate(e,t,PolyBool.selectXor)}},"object"==typeof window&&(window.PolyBool=PolyBool);var polybooljs=PolyBool,PolyBool$1=getDefaultExportFromCjs(polybooljs);const handleImageEditPrompt=async e=>{const t=window.ExcalidrawAutomate.plugin,{openAIAPIToken:n,openAIImageEditsURL:r}=t.settings,{image:i,text:o,imageGenerationProperties:a}=e,s=new FormData;if(s.append("model","dall-e-2"),""!==o.trim()&&s.append("prompt",o),i){const e=await fetch(i).then((e=>e.blob()));s.append("image",e,"image.png")}if(a.mask){const e=await fetch(a.mask).then((e=>e.blob()));s.append("mask",e,"masik.png")}a.size&&s.append("size",a.size),a.n&&s.append("n",String(a.n));try{const e=await fetch(r,{method:"post",body:s,headers:{Authorization:`Bearer ${n}`}});return e?{status:e.status,headers:e.headers,text:null,json:await e.json(),arrayBuffer:null}:null}catch(e){console.log(e)}return null},handleGenericPrompt=async e=>{const t=window.ExcalidrawAutomate.plugin,{openAIAPIToken:n,openAIDefaultTextModel:r,openAIDefaultVisionModel:i,openAIURL:o,openAIImageGenerationURL:a,openAIDefaultImageGenerationModel:s}=t.settings,{image:l,text:c,instruction:T,systemPrompt:Q,imageGenerationProperties:d}=e,u=Boolean(d);let p;switch(u?"dall-e":l?"image":"text"){case"text":p={model:r,max_tokens:4096,messages:[...Q&&""!==Q.trim()?[{role:"system",content:Q}]:[],{role:"user",content:c},...T&&""!==T.trim()?[{role:"user",content:T}]:[]]};break;case"image":p={model:i,max_tokens:4096,messages:[...Q&&""!==Q.trim()?[{role:"system",content:Q}]:[],{role:"user",content:[{type:"image_url",image_url:l},...c?[c]:[],...T&&""!==T.trim()?[T]:[]]}]};break;case"dall-e":p=Object.assign({model:s,prompt:c},d);break;default:return null}try{const e=await fetch(u?a:o,{method:"post",contentType:"application/json",body:JSON.stringify(p),headers:{"Content-Type":"application/json",Authorization:`Bearer ${n}`}});return e?{status:e.status,headers:e.headers,text:null,json:await e.json(),arrayBuffer:null}:null}catch(e){console.log(e)}return null},postOpenAI=async e=>{const t=window.ExcalidrawAutomate.plugin,{openAIAPIToken:n}=t.settings,{image:r,imageGenerationProperties:i}=e,o=Boolean(i)&&(Boolean(i.mask)||Boolean(r));return""===n?(new obsidian_module.Notice("OpenAI API Token is not set. Please set it in plugin settings."),null):o?await handleImageEditPrompt(e):await handleGenericPrompt(e)},extractCodeBlocks=e=>{var t;if(!e)return[];e=e.replaceAll("\r\n","\n").replaceAll("\r","\n");const n=[],r=/```([a-zA-Z0-9]*)\n([\s\S]+?)```/g;let i;for(;null!==(i=r.exec(e));){const e=null!==(t=i[1])&&void 0!==t?t:"",r=i[2].trim();n.push({data:r,type:e})}return n},hyperlink=(e,t)=>`<a onclick='window.open("${e}")'>${t}</a>`,EXCALIDRAW_AUTOMATE_INFO=[{field:"help",code:"help(target: Function | string)",desc:"Utility function that provides help about ExcalidrawAutomate functions and properties. I recommend calling this function from Developer Console to print out help to the console.",after:""},{field:"isExcalidrawMaskFile",code:"isExcalidrawMaskFile(file?:TFile): boolean;",desc:"Returns true if the file is an Excalidraw Mask file. If file is not provided, the function will use ea.targetView.file",after:""},{field:"plugin",code:null,desc:"The ExcalidrawPlugin object",after:""},{field:"elementsDict",code:null,desc:"The {} dictionary object, contains the ExcalidrawElements currently edited in Automate indexed by el.id",after:'[""]'},{field:"imagesDict",code:null,desc:"the images files including DataURL, indexed by fileId",after:'[""]'},{field:"style.strokeColor",code:"[string]",desc:`A valid css color. See ${hyperlink("https://www.w3schools.com/colors/default.asp","W3 School Colors")} for more.`,after:""},{field:"style.backgroundColor",code:"[string]",desc:`A valid css color. See ${hyperlink("https://www.w3schools.com/colors/default.asp","W3 School Colors")} for more.`,after:""},{field:"style.angle",code:"[number]",desc:"Rotation of the object in radian",after:""},{field:"style.fillStyle",code:"[string]",desc:"'hachure' | 'cross-hatch' | 'solid'",after:""},{field:"style.strokeWidth",code:"[number]",desc:null,after:""},{field:"style.strokeStyle",code:"[string]",desc:"'solid' | 'dashed' | 'dotted'",after:""},{field:"style.roughness",code:"[number]",desc:"0:Architect\n1:Artist\n2:Cartoonist",after:""},{field:"style.opacity",code:"[number]",desc:"100: Fully opaque\n0: Fully transparent",after:""},{field:"style.roundness",code:"[null | { type: RoundnessType; value?: number };]",desc:"set to null for 'sharp', else the stroke will be 'round'<br>type: 1==LEGACY,<br>2==PROPORTIONAL RADIUS,<br>3==ADAPTIVE RADIUS, value: adaptive factor defaults to 32",after:""},{field:"style.fontFamily",code:"[number]",desc:"1: Virgil, 2:Helvetica, 3:Cascadia, 4:LocalFont",after:""},{field:"style.fontSize",code:"[number]",desc:null,after:""},{field:"style.textAlign",code:"[string]",desc:"'left' | 'right' | 'center'",after:""},{field:"style.verticalAlign",code:"[string]",desc:"For future use, has no effect currently; 'top' | 'bottom' | 'middle'",after:""},{field:"style.startArrowHead",code:"[string]",desc:"'triangle' | 'dot' | 'arrow' | 'bar' | null",after:""},{field:"style.endArrowHead",code:"[string]",desc:"'triangle' | 'dot' | 'arrow' | 'bar' | null",after:""},{field:"canvas.theme",code:"[string]",desc:"'dark' | 'light'",after:""},{field:"canvas.viewBackgroundColor",code:"[string]",desc:`A valid css color.\nSee ${hyperlink("https://www.w3schools.com/colors/default.asp","W3 School Colors")} for more.`,after:""},{field:"canvas.gridSize",code:"[number]",desc:null,after:""},{field:"setStrokeSharpness",code:"setStrokeSharpness(sharpness: number): void;",desc:"Set ea.style.roundness. 0: is the legacy value, 3: is the current default value, null is sharp",after:""},{field:"addToGroup",code:"addToGroup(objectIds: []): string;",desc:null,after:""},{field:"toClipboard",code:"toClipboard(templatePath?: string): void;",desc:"Copies current elements using template to clipboard, ready to be pasted into an excalidraw canvas",after:""},{field:"getSceneFromFile",code:"async getSceneFromFile(file: TFile): Promise<{elements: ExcalidrawElement[]; appState: AppState;}>;",desc:"returns the elements and appState from a file, if the file is not an excalidraw file, it will return null",after:""},{field:"getElements",code:"getElements(): ExcalidrawElement[];",desc:"Get all elements from ExcalidrawAutomate elementsDict",after:""},{field:"getElement",code:"getElement(id: string): ExcalidrawElement;",desc:"Get single element from ExcalidrawAutomate elementsDict",after:""},{field:"create",code:"async create(params?: {filename?: string, foldername?: string, templatePath?: string, onNewPane?: boolean, silent?: boolean, frontmatterKeys?: {},}): Promise<string>;",desc:'Create a drawing and save it to filename.\nIf filename is null: default filename as defined in Excalidraw settings.\nIf folder is null: default folder as defined in Excalidraw settings\nReturns the path to the created file.\nfrontmatterKeys: {\n "excalidraw-plugin"?: "raw" | "parsed";\n "excalidraw-link-prefix"?: string;\n "excalidraw-link-brackets"?: boolean;\n "excalidraw-url-prefix"?: string;\n "excalidraw-export-transparent"?: boolean;\n "excalidraw-export-dark"?: boolean;\n "excalidraw-export-padding"?: number;\n "excalidraw-export-pngscale"?: number;\n "excalidraw-default-mode"?: "view" | "zen";\n "excalidraw-onload-script"?: string;\n "excalidraw-linkbutton-opacity"?: number;\n "excalidraw-autoexport"?: boolean;\n "excalidraw-mask"?: boolean;\n "cssclasses"?: string;\n}',after:""},{field:"createSVG",code:"async createSVG(templatePath?: string, embedFont?: boolean, exportSettings?: ExportSettings, loader?: EmbeddedFilesLoader, theme?: string,): Promise<SVGSVGElement>;",desc:"Use ExcalidrawAutomate.getExportSettings(boolean,boolean) to create an ExportSettings object.\nUse ExcalidrawAutomate.getEmbeddedFilesLoader(boolean?) to create an EmbeddedFilesLoader object.",after:""},{field:"createPNG",code:"async createPNG(templatePath?: string, scale?: number, exportSettings?: ExportSettings, loader?: EmbeddedFilesLoader, theme?: string,padding?: number): Promise<any>;",desc:"Create an image based on the objects in ea.getElements(). The elements in ea will be merged with the elements from the provided template file - if any. Use ExcalidrawAutomate.getExportSettings(boolean,boolean) to create an ExportSettings object.\nUse ExcalidrawAutomate.getEmbeddedFilesLoader(boolean?) to create an EmbeddedFilesLoader object.",after:""},{field:"createPNGBase64",code:"async craetePNGBase64(templatePath?: string, scale?: number, exportSettings?: ExportSettings, loader?: EmbeddedFilesLoader, theme?: string,padding?: number): Promise<string>;",desc:"The same as createPNG but returns a base64 encoded string instead of a file.",after:""},{field:"wrapText",code:"wrapText(text: string, lineLen: number): string;",desc:null,after:""},{field:"addRect",code:"addRect(topX: number, topY: number, width: number, height: number, id?:string): string;",desc:null,after:""},{field:"addDiamond",code:"addDiamond(topX: number, topY: number, width: number, height: number, id?:string): string;",desc:null,after:""},{field:"addEllipse",code:"addEllipse(topX: number, topY: number, width: number, height: number, id?:string): string;",desc:null,after:""},{field:"addBlob",code:"addBlob(topX: number, topY: number, width: number, height: number, id?: string): string;",desc:null,after:""},{field:"refreshTextElementSize",code:"refreshTextElementSize(id: string);",desc:"Refreshes the size of the text element. Intended to be used when you copyViewElementsToEAforEditing() and then change the text in a text element and want to update the size of the text element to fit the modifid contents.",after:""},{field:"addText",code:'addText(topX: number, topY: number, text: string, formatting?: {wrapAt?: number; width?: number; height?: number; textAlign?: "left" | "center" | "right"; textVerticalAlign: "top" | "middle" | "bottom"; box?: boolean | "box" | "blob" | "ellipse" | "diamond"; boxPadding?: number; boxStrokeColor?: string;}, id?: string,): string;',desc:"If box is !null, then text will be boxed\nThe function returns the id of the TextElement. If the text element is boxed i.e. it is a sticky note, then the id of the container object",after:""},{field:"addLine",code:"addLine(points: [[x: number, y: number]], id?:string): string;",desc:null,after:""},{field:"addArrow",code:"addArrow(points: [[x: number, y: number]], formatting?: { startArrowHead?: string; endArrowHead?: string; startObjectId?: string; endObjectId?: string;}, id?:string): string;",desc:'valid values for startArrowHead and endArrowHead are: "arrow"|"bar"|"circle"|"circle_outline"|"triangle"|"triangle_outline"|"diamond"|"diamond_outline"|null',after:""},{field:"addImage",code:"async addImage(topX: number, topY: number, imageFile: TFile|string, scale?: boolean, anchor?: boolean): Promise<string>;",desc:"imageFile may be a TFile or a string that contains a hyperlink. imageFile may also be an obsidian filepath including a reference eg.: 'path/my.pdf#page=3'\nSet scale to false if you want to embed the image at 100% of its original size. Default is true which will insert a scaled image.\nanchor will only be evaluated if scale is false. anchor true will add |100% to the end of the filename, resulting in an image that will always pop back to 100% when the source file is updated or when the Excalidraw file is reopened.",after:""},{field:"addEmbeddable",code:"addEmbeddable(topX: number, topY: number, width: number, height: number, url?: string, file?: TFile): string;",desc:"Adds an iframe/webview (depending on content and platform) to the drawing. If url is not null then the iframe/webview will be loaded from the url. The url maybe a markdown link to an note in the Vault or a weblink. If url is null then the iframe/webview will be loaded from the file. Both the url and the file may not be null.",after:""},{field:"addMermaid",code:"async addMermaid(diagram: string, groupElements: boolean = true,): Promise<string[]|string>;",desc:"Creates a mermaid diagram and returns the ids of the created elements as a string[]. The elements will be added to ea. To add them to the canvas you'll need to use addElementsToView. Depending on the diagram type the result will be either a single SVG image, or a number of excalidraw elements.<br>If there is an error, the function returns a string with the error message.",after:""},{field:"addLaTex",code:"async addLaTex(topX: number, topY: number, tex: string): Promise<string>;",desc:"This is an async function, you need to avait the results. Adds a LaTex element to the drawing. The tex string is the LaTex code. The function returns the id of the created element.",after:""},{field:"connectObjects",code:"connectObjects(objectA: string, connectionA: ConnectionPoint, objectB: string, connectionB: ConnectionPoint, formatting?: {numberOfPoints?: number; startArrowHead?: string; endArrowHead?: string; padding?: number;},): string;",desc:'type ConnectionPoint = "top" | "bottom" | "left" | "right" | null\nWhen null is passed as ConnectionPoint then Excalidraw will automatically decide\nnumberOfPoints is the number of points on the line. Default is 0 i.e. line will only have a start and end point.\nArrowHead: "arrow"|"bar"|"circle"|"circle_outline"|"triangle"|"triangle_outline"|"diamond"|"diamond_outline"|null',after:""},{field:"addLabelToLine",code:"addLabelToLine(lineId: string, label: string): string;",desc:"Adds a text label to a line or arrow. Currently only works with a simple straight 2-point (start & end) line",after:""},{field:"clear",code:"clear(): void;",desc:"Clears elementsDict and imagesDict only",after:""},{field:"reset",code:"reset(): void;",desc:"clear() + reset all style values to default",after:""},{field:"isExcalidrawFile",code:"isExcalidrawFile(f: TFile): boolean;",desc:"Returns true if MD file is an Excalidraw file",after:""},{field:"targetView",code:"targetView: ExcalidrawView;",desc:"The Obsidian view currently edited",after:""},{field:"setView",code:'setView(view: ExcalidrawView | "first" | "active"): ExcalidrawView;',desc:null,after:""},{field:"getExcalidrawAPI",code:"getExcalidrawAPI(): any;",desc:`${hyperlink("https://github.com/excalidraw/excalidraw/tree/master/src/packages/excalidraw#ref","Excalidraw API")}`,after:""},{field:"getViewElements",code:"getViewElements(): ExcalidrawElement[];",desc:"Get elements in View",after:""},{field:"deleteViewElements",code:"deleteViewElements(el: ExcalidrawElement[]): boolean;",desc:null,after:""},{field:"getViewSelectedElement",code:"getViewSelectedElement(): ExcalidrawElement;",desc:"Get the selected element in the view, if more are selected, get the first",after:""},{field:"getViewSelectedElements",code:"getViewSelectedElements(): ExcalidrawElement[];",desc:null,after:""},{field:"getViewFileForImageElement",code:"getViewFileForImageElement(el: ExcalidrawElement): TFile | null;",desc:"Returns the TFile file handle for the image element",after:""},{field:"copyViewElementsToEAforEditing",code:"copyViewElementsToEAforEditing(elements: ExcalidrawElement[], copyImages: boolean = false): void;",desc:"Copies elements from view to elementsDict for editing. If copyImages is true, then relevant entries from scene.files will also be copied. This is required if you want to generate a PNG for a subset of the elements in the drawing (e.g. for AI generation)",after:""},{field:"viewToggleFullScreen",code:"viewToggleFullScreen(forceViewMode?: boolean): void;",desc:null,after:""},{field:"connectObjectWithViewSelectedElement",code:"connectObjectWithViewSelectedElement(objectA: string, connectionA: ConnectionPoint, connectionB: ConnectionPoint, formatting?: {numberOfPoints?: number; startArrowHead?: string; endArrowHead?: string; padding?: number;},): boolean;",desc:"Connect an object to the selected element in the view\nSee tooltip for connectObjects for details",after:""},{field:"addElementsToView",code:"async addElementsToView(repositionToCursor?: boolean, save?: boolean, newElementsOnTop?: boolean,shouldRestoreElements?: boolean,): Promise<boolean>;",desc:"Adds elements from elementsDict to the current view\nrepositionToCursor: default is false\nsave: default is true\nnewElementsOnTop: default is false, i.e. the new elements get to the bottom of the stack\nnewElementsOnTop controls whether elements created with ExcalidrawAutomate are added at the bottom of the stack or the top of the stack of elements already in the view\nNote that elements copied to the view with copyViewElementsToEAforEditing retain their position in the stack of elements in the view even if modified using EA",after:""},{field:"onDropHook",code:'onDropHook(data: {ea: ExcalidrawAutomate, event: React.DragEvent<HTMLDivElement>, draggable: any, type: "file" | "text" | "unknown", payload: {files: TFile[], text: string,}, excalidrawFile: TFile, view: ExcalidrawView, pointerPosition: { x: number, y: number},}): boolean;',desc:"If set Excalidraw will call this function onDrop events.\nA return of true will stop the default onDrop processing in Excalidraw.\n\ndraggable is the Obsidian draggable object\nfiles is the array of dropped files\nexcalidrawFile is the file receiving the drop event\nview is the excalidraw view receiving the drop.\npointerPosition is the pointer position on canvas at the time of drop.",after:""},{field:"mostRecentMarkdownSVG",code:"mostRecentMarkdownSVG: SVGSVGElement;",desc:"Markdown renderer will drop a copy of the most recent SVG here for debugging purposes",after:""},{field:"getEmbeddedFilesLoader",code:"getEmbeddedFilesLoader(isDark?: boolean): EmbeddedFilesLoader;",desc:"Utility function to generate EmbeddedFilesLoader object",after:""},{field:"getExportSettings",code:"getExportSettings(withBackground: boolean, withTheme: boolean,): ExportSettings;",desc:"Utility function to generate ExportSettings object",after:""},{field:"getBoundingBox",code:"getBoundingBox(elements: ExcalidrawElement[]): {topX: number, topY: number, width: number, height: number,};",desc:"Gets the bounding box of elements. The bounding box is the box encapsulating all of the elements completely.",after:""},{field:"getMaximumGroups",code:"getMaximumGroups(elements: ExcalidrawElement[]): ExcalidrawElement[][];",desc:"Elements grouped by the highest level groups",after:""},{field:"getLargestElement",code:"getLargestElement(elements: ExcalidrawElement[]): ExcalidrawElement;",desc:"Gets the largest element from a group. useful when a text element is grouped with a box, and you want to connect an arrow to the box",after:""},{field:"intersectElementWithLine",code:"intersectElementWithLine(element: ExcalidrawBindableElement, a: readonly [number, number], b: readonly [number, number], gap?: number,): Point[];",desc:"If gap is given, the element is inflated by this value.\nReturns 2 or 0 intersection points between line going through `a` and `b` and the `element`, in ascending order of distance from `a`.",after:""},{field:"getCommonGroupForElements",code:"getCommonGroupForElements(elements: ExcalidrawElement[]): string;",desc:"Gets the groupId for the group that contains all the elements, or null if such a group does not exist",after:""},{field:"getElementsInTheSameGroupWithElement",code:"getElementsInTheSameGroupWithElement(element: ExcalidrawElement, elements: ExcalidrawElement[]): ExcalidrawElement[];",desc:"Gets all the elements from elements[] that share one or more groupIds with element.",after:""},{field:"activeScript",code:"activeScript: string;",desc:`Mandatory to set before calling the get and set ScriptSettings functions. Set automatically by the ScriptEngine\nSee for more details: ${hyperlink("https://zsviczian.github.io/obsidian-excalidraw-plugin/ExcalidrawScriptsEngine.html","Script Engine Help")}`,after:""},{field:"getScriptSettings",code:"getScriptSettings(): {};",desc:`Returns script settings. Saves settings in plugin settings, under the activeScript key. See for more details: ${hyperlink("https://zsviczian.github.io/obsidian-excalidraw-plugin/ExcalidrawScriptsEngine.html","Script Engine Help")}`,after:""},{field:"setScriptSettings",code:"async setScriptSettings(settings: any): Promise<void>;",desc:`Sets script settings.\nSee for more details: ${hyperlink("https://zsviczian.github.io/obsidian-excalidraw-plugin/ExcalidrawScriptsEngine.html","Script Engine Help")}`,after:""},{field:"openFileInNewOrAdjacentLeaf",code:"openFileInNewOrAdjacentLeaf(file: TFile): WorkspaceLeaf;",desc:"Open a file in a new workspaceleaf or reuse an existing adjacent leaf depending on Excalidraw Plugin Settings",after:""},{field:"measureText",code:"measureText(text: string): { width: number; height: number };",desc:"Measures text size based on current style settings",after:""},{field:"verifyMinimumPluginVersion",code:"verifyMinimumPluginVersion(requiredVersion: string): boolean;",desc:'Returns true if plugin version is >= than required\nrecommended use:\n<code>if(!ea.verifyMinimumPluginVersion || !ea.verifyMinimumPluginVersion("1.5.20")) {new Notice("message");return;}<code>',after:""},{field:"selectElementsInView",code:"selectElementsInView(elements: ExcalidrawElement[] | string[]):void;",desc:"You can supply a list of Excalidraw Elements or the string IDs of those elements. The elements provided will be set as selected in the targetView.",after:""},{field:"generateElementId",code:"generateElementId(): string;",desc:"Returns an 8 character long random id",after:""},{field:"cloneElement",code:"cloneElement(element: ExcalidrawElement): ExcalidrawElement;",desc:"Returns a clone of the element with a new element id",after:""},{field:"moveViewElementToZIndex",code:"moveViewElementToZIndex(elementId:number, newZIndex:number): void;",desc:"Moves the element to a specific position in the z-index",after:""},{field:"hexStringToRgb",code:"hexStringToRgb(color: string):number[];",desc:"Converts a HEX color to an RGB number array. #FF0000 to [255,0,0]",after:""},{field:"rgbToHexString",code:"rgbToHexString(color: number[]):string;",desc:"Converts an RGB number array to a HEX string. [255,0,0] to #FF0000",after:""},{field:"hslToRgb",code:"hslToRgb(color: number[]):number[];",desc:"Converts an HSL number array to an RGB number array. [0,100,50] to [255,0,0]",after:""},{field:"rgbToHsl",code:"rgbToHsl(color:number[]):number[];",desc:"Converts an RGB number array to an HSL number array. [255,0,0] to [0,100,50]",after:""},{field:"colorNameToHex",code:"colorNameToHex(color:string):string;",desc:"Converts a CSS color name to its HEX color equivalent. 'White' to #FFFFFF",after:""},{field:"obsidian",code:"obsidian",desc:`Access functions and objects available on the ${hyperlink("https://github.com/obsidianmd/obsidian-api/blob/master/obsidian.d.ts","Obsidian Module")}`,after:""},{field:"getListOfTemplateFiles",code:"getListOfTemplateFiles(): TFile[] | null",desc:"Returns a list of files in the template folder. If the Excalidraw Template is set as a single file, it returns a single element in the list. If no template is set, it returns null.",after:""},{field:"getAttachmentFilepath",code:"async getAttachmentFilepath(filename: string): Promise<string>",desc:'This asynchronous function should be awaited. It retrieves the filepath to a new file, taking into account the attachments preference settings in Obsidian. If the attachment folder doesn\'t exist, it creates it. The function returns the complete path to the file. If the provided filename already exists, the function will append \'_[number]\' before the extension to generate a unique filename.Prompts the user with a dialog to select new file action.<br> - create markdown file<br> - create excalidraw file<br> - cancel action<br>The new file will be relative to this.targetView.file.path, unless parentFile is provided. If shouldOpenNewFile is true, the new file will be opened in a workspace leaf. targetPane controls which leaf will be used for the new file.<br>Returns the TFile for the new file or null if the user cancelled the action.<br><code>type PaneTarget = "active-pane"|"new-pane"|"popout-window"|"new-tab"|"md-properties";</code>',after:""},{field:"getActiveEmbeddableViewOrEditor",code:"getActiveEmbeddableViewOrEditor(view?: ExcalidrawView);",desc:"Returns the editor or leaf.view of the currently active embedded obsidian file.<br>If view is not provided, ea.targetView is used.<br>If the embedded file is a markdown document the function will return<br><code>{file:TFile, editor:Editor}</code> otherwise it will return {view:any}. You can check view type with view.getViewType();",after:""},{field:"getViewLastPointerPosition",code:"getViewLastPointerPosition(): {x: number, y: number};",desc:"@returns the last recorded pointer position on the Excalidraw canvas",after:""},{field:"getleaf",code:"getLeaf(origo: WorkspaceLeaf, targetPane?: PaneTarget): WorkspaceLeaf;",desc:'Generates a new Obsidian Leaf following Excalidraw plugin settings such as open in Main Workspace or not, open in adjacent pane if available, etc.<br>@param origo: the currently active leaf, the origin of the new leaf<br>@param targetPane: <code>type PaneTarget = "active-pane"|"new-pane"|"popout-window"|"new-tab"|"md-properties";',after:""},{field:"newFilePrompt",code:"async newFilePrompt(newFileNameOrPath: string, shouldOpenNewFile: boolean, targetPane?: PaneTarget, parentFile?: TFile): Promise<TFile | null>;",desc:"",after:""},{field:"DEVICE",code:"get DEVICE(): DeviceType;",desc:"Returns the current device type. Possible values are: <br><code>type DeviceType = {<br> isDesktop: boolean,<br> isPhone: boolean,<br> isTablet: boolean,<br> isMobile: boolean,<br> isLinux: boolean,<br> isMacOS: boolean,<br> isWindows: boolean,<br> isIOS: boolean,<br> isAndroid: boolean<br>};",after:""},{field:"checkAndCreateFolder",code:"async checkAndCreateFolder(folderpath: string): Promise<TFolder>",desc:"Checks if the folder exists, if not, creates it.",after:""},{field:"getNewUniqueFilepath",code:"getNewUniqueFilepath(filename: string, folderpath: string): string",desc:"Checks if the filepath already exists, if so, returns a new filepath with a number appended to the filename else returns the filepath as provided.",after:""},{field:"extractCodeBlocks",code:"extractCodeBlocks(markdown: string): { data: string, type: string }[]",desc:"Grabs the codeblock content from the supplied markdown string. Returns an array of dictionaries with the codeblock content and type",after:""},{field:"postOpenAI",code:"async postOpenAI(request: AIRequest): Promise<RequestUrlResponse>",desc:`This asynchronous function should be awaited. It posts the supplied request to the OpenAI API and returns the response.<br>The response is a dictionary with the following keys:<br><code>{image, text, instruction, systemPrompt, responseType}</code><br><b>image</b> should be a dataURL - use ea.createPNGBase64()<br><b>systemPrompt</b>: if <code>undefined</code> the message to OpenAI will not include a system prompt<br><b>text</b> is the actual user prompt, a request must have either an image or a text<br><b>instruction</b> is a user prompt sent as a separate element in the message - I use it to reinforce the type of response I am seeing (e.g. mermaid in a codeblock)<br><b>imageGenerationProperties</b> if provided then the dall-e model will be used. <code> imageGenerationProperties?: {size?: string, quality?: "standard" | "hd"; n?: number; mask?: string; }</code><br>Different openAI models accept different parameters fr size, quality, n and mask. Consult the API documenation for more information.<br>RequestUrlResponse is defined in the ${hyperlink("https://github.com/obsidianmd/obsidian-api/blob/master/obsidian.d.ts","Obsidian API")}`,after:""},{field:"convertStringToDataURL",code:'async convertStringToDataURL (data:string, type: string = "text/html"):Promise<string>',desc:"Converts a string to a DataURL.",after:""},{field:"setViewModeEnabled",code:"setViewModeEnabled(enabled: boolean): void;",desc:"Sets Excalidraw in the targetView to view-mode",after:""},{field:"viewUpdateScene",code:"viewUpdateScene(scene:{elements?:ExcalidrawElement[],appState?: AppState,files?: BinaryFileData,commitToHistory?: boolean,},restore:boolean=false):void",desc:"Calls the ExcalidrawAPI updateScene function for the targetView. When restore=true, excalidraw will try to correct errors in the scene such as setting default values to missing element properties.",after:""},{field:"viewZoomToElements",code:"viewZoomToElements(selectElements: boolean,elements: ExcalidrawElement[]):void",desc:"Zoom tarteView to fit elements provided as input. elements === [] will zoom to fit the entire scene. SelectElements toggles whether the elements should be in a selected state at the end of the operation.",after:""},{field:"compressToBase64",code:"compressToBase64(str: string):string",desc:"Compresses String to a Base64 string using LZString",after:""},{field:"decompressFromBase64",code:"decompressFromBase64(str: string):string",desc:"Decompresses a base 64 compressed string using LZString",after:""}],EXCALIDRAW_SCRIPTENGINE_INFO=[{field:"inputPrompt",code:"inputPrompt: (header: string, placeholder?: string, value?: string, buttons?: {caption:string, tooltip?:string, action:Function}[], lines?: number, displayEditorButtons?: boolean, customComponents?: (container: HTMLElement) => void, blockPointerInputOutsideModal?: boolean);",desc:"Opens a prompt that asks for an input.\nReturns a string with the input.\nYou need to await the result of inputPrompt.\nEditor buttons are text editing buttons like delete, enter, allcaps - these are only displayed if lines is greater than 1 \nCustom components are components that you can add to the prompt. These will be displayed between the text input area and the buttons.\nblockPointerInputOutsideModal will block pointer input outside the modal. This is useful if you want to prevent the user accidently closing the modal or interacting with the excalidraw canvas while the prompt is open.\nbuttons.action(input: string) => string\nThe button action function will receive the actual input string. If action returns null, input will be unchanged. If action returns a string, input will receive that value when the promise is resolved. example:\n<code>let fileType = '';\nconst filename = await utils.inputPrompt (\n 'Filename',\n '',\n '',\n, [\n {\n caption: 'Markdown',\n action: ()=>{fileType='md';return;}\n },\n {\n caption: 'Excalidraw',\n action: ()=>{fileType='ex';return;}\n }\n ]\n);</code>",after:""},{field:"suggester",code:"suggester: (displayItems: string[], items: any[], hint?: string, instructions?:Instruction[]);",desc:"Opens a suggester. Displays the displayItems and returns the corresponding item from items[]\nYou need to await the result of suggester.\nIf the user cancels (ESC), suggester will return undefined\nHint and instructions are optional\n\n<code>interface Instruction {command: string;purpose: string;}</code>",after:""},{field:"scriptFile",code:"scriptFile: TFile",desc:"The TFile of the currently running script",after:""}],FRONTMATTER_KEYS_INFO=[{field:"plugin",code:null,desc:"Denotes an excalidraw file. If key is not present, the file will not be recognized as an Excalidarw file. Valid values are 'parsed' and 'raw'",after:": parsed"},{field:"link-prefix",code:null,desc:"Set custom prefix to denote text element containing a valid internal link. Set to empty string if you do not want to show a prefix",after:': "📍"'},{field:"url-prefix",code:null,desc:"Set custom prefix to denote text element containing a valid external link. Set to empty string if you do not want to show a prefix",after:': "🌐"'},{field:"link-brackets",code:null,desc:"Set to true, if you want to display [[square brackets]] around the links in Text Elements",after:": true"},{field:"default-mode",code:null,desc:"Specifies how Excalidraw should open by default. Valid values are: view|zen",after:": view"},{field:"linkbutton-opacity",code:null,desc:"The opacity of the blue link button in the top right of the element overriding the respective setting in plugin settings. Valid values are between 0 and 1, where 0 means the button is transparent.",after:": 0.5"},{field:"onload-script",code:null,desc:"The value of this field will be executed as javascript code using the Script Engine environment. Use this to initiate custom actions or logic when loading your drawing.",after:': "new Notice(`Hello World!\\n\\nFile: ${ea.targetView.file.basename}`);"'},{field:"font",code:null,desc:"This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this frontmatter key to your markdown document. Valid values are: Virgil|Cascadia|font_file_name.extension",after:": Virgil"},{field:"font-color",code:null,desc:"This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this frontmatter key to your markdown document. Valid values are: css-color-name|#HEXcolor|any-other-html-standard-format",after:": SteelBlue"},{field:"border-color",code:null,desc:"This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this frontmatter key to your markdown document. Valid values are: css-color-name|#HEXcolor|any-other-html-standard-format",after:": SteelBlue"},{field:"css",code:null,desc:'This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this front matter keys to your markdown document. Valid values are: "css-filename|css snippet"',after:': ""'},{field:"export-transparent",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. true == Transparent / false == with background",after:": true"},{field:"export-dark",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. true == Dark mode / false == light mode",after:": true"},{field:"export-padding",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. This only affects both SVG and PNG export. Specify the export padding for the image.",after:": 5"},{field:"export-pngscale",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. This only affects export to PNG. Specify the export scale for the image. The typical range is between 0.5 and 5, but you can experiment with other values as well.",after:": 1"},{field:"open-md",code:null,desc:"If this key is present the file will be opened as a markdown file in the editor",after:": true"},{field:"autoexport",code:null,desc:"Override autoexport settings for this file. Valid values are\nnone\nboth\npng\nsvg",after:": png"},{field:"iframe-theme",code:null,desc:"Override iFrame theme plugin-settings for this file. 'match' will match the Excalidraw theme, 'default' will match the obsidian theme. Valid values are\ndark\nlight\nauto\ndefault",after:": auto"},{field:"mask",code:null,desc:"If this key is present the drawing will be handled as a mask to crop an image.",after:": true"}];B([r$d,z,e$a,l$3,b$1,v,h$1,i$5,i$4,h,u,c$1,s]);const GAP=4;class ExcalidrawAutomate{get obsidian(){return obsidian_module__namespace}get LASERPOINTER(){return this.plugin.settings.laserSettings}get DEVICE(){return DEVICE}help(e){if(!e)return void console.log("Usage: ea.help(ea.functionName) or ea.help('propertyName') or ea.help('utils.functionName') - notice property name and utils function name is in quotes");let t;if("function"==typeof e)t=EXCALIDRAW_AUTOMATE_INFO.find((t=>t.field===e.name));else if("string"==typeof e){let n=e;n=n.startsWith("utils.")?n.substring(6):n,n=n.startsWith("ea.")?n.substring(3):n,t=EXCALIDRAW_AUTOMATE_INFO.find((e=>e.field===n)),t||(t=EXCALIDRAW_SCRIPTENGINE_INFO.find((e=>e.field===n)))}if(!t)return void console.log("Usage: ea.help(ea.functionName) or ea.help('propertyName') or ea.help('utils.functionName') - notice property name and utils function name is in quotes");let n=!0;if(t.code&&(n=!1,console.log(`Declaration: ${t.code}`)),t.desc){n=!1;const e=t.desc.replaceAll("<br>","\n").replace(/<code>(.*?)<\/code>/g,"%c​$1%c").replace(/<b>(.*?)<\/b>/g,"%c​$1%c").replace(/<a onclick='window\.open\("(.*?)"\)'>(.*?)<\/a>/g,((e,t,n)=>`%c​${n}%c​ (link: ${t})`)),r=Array.from({length:(e.match(/%c/g)||[]).length},((e,t)=>t%2==0?"color: #007bff;":""));console.log(`Description: ${e}`,...r)}n&&console.log("Description not available for this function.")}async postOpenAI(e){return await postOpenAI(e)}extractCodeBlocks(e){return extractCodeBlocks(e)}async convertStringToDataURL(e,t="text/html"){const n=new Blob([e],{type:t}),r=await new Promise((e=>{const t=new FileReader;t.onload=()=>{if("string"==typeof t.result){const n=t.result.split(",")[1];e(n)}else e(null)},t.readAsDataURL(n)}));return r?`data:${t};base64,${r}`:"about:blank"}async checkAndCreateFolder(e){return await checkAndCreateFolder(e)}getNewUniqueFilepath(e,t){return getNewUniqueFilepath(app.vault,e,t)}getListOfTemplateFiles(){return getListOfTemplateFiles(this.plugin)}async getAttachmentFilepath(e){var t;if(!this.targetView||!(null===(t=this.targetView)||void 0===t?void 0:t.file))return errorMessage("targetView not set","getAttachmentFolderAndFilePath()"),null;const n=await getAttachmentsFolderAndFilePath(app,this.targetView.file.path,e);return getNewUniqueFilepath(app.vault,e,n.folder)}compressToBase64(e){return LZString.compressToBase64(e)}decompressFromBase64(e){return LZString.decompressFromBase64(e)}async newFilePrompt(e,t,n,r){var i;if(!this.targetView||!(null===(i=this.targetView)||void 0===i?void 0:i.file))return errorMessage("targetView not set","newFileActions()"),null;const o=emulateKeysForLinkClick(n),a=new NewFileActions({plugin:this.plugin,path:e,keys:o,view:this.targetView,openNewFile:t,parentFile:r});return a.open(),await a.waitForClose}getLeaf(e,t){const n=emulateKeysForLinkClick(null!=t?t:"new-tab");return getLeaf(this.plugin,e,n)}getActiveEmbeddableViewOrEditor(e){if(!this.targetView&&!e)return null;const t=(e=null!=e?e:this.targetView).getActiveEmbeddable();if(t){if(t.node&&t.node.isEditing)return{file:t.node.file,editor:t.node.child.editor};if(t.leaf&&t.leaf.view)return{view:t.leaf.view}}return null}isExcalidrawMaskFile(e){var t;return e?this.isExcalidrawFile(e)&&isMaskFile(this.plugin,e):this.targetView&&(null===(t=this.targetView)||void 0===t?void 0:t.file)?isMaskFile(this.plugin,this.targetView.file):(errorMessage("targetView not set","isMaskFile()"),null)}constructor(e,t){this.mostRecentMarkdownSVG=null,this.targetView=null,this.onViewUnloadHook=null,this.onViewModeChangeHook=null,this.onLinkHoverHook=null,this.onLinkClickHook=null,this.onDropHook=null,this.onPasteHook=null,this.onCanvasColorChangeHook=null,this.onUpdateElementLinkForExportHook=null,this.activeScript=null,this.plugin=e,this.reset(),this.targetView=t}getViewLastPointerPosition(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?this.targetView.currentPosition:(errorMessage("targetView not set","getExcalidrawAPI()"),null)}getAPI(e){return new ExcalidrawAutomate(this.plugin,e)}setFillStyle(e){switch(e){case 0:return this.style.fillStyle="hachure","hachure";case 1:return this.style.fillStyle="cross-hatch","cross-hatch";default:return this.style.fillStyle="solid","solid"}}setStrokeStyle(e){switch(e){case 0:return this.style.strokeStyle="solid","solid";case 1:return this.style.strokeStyle="dashed","dashed";default:return this.style.strokeStyle="dotted","dotted"}}setStrokeSharpness(e){return 0===e?(this.style.roundness={type:ROUNDNESS.LEGACY},"round"):(this.style.roundness=null,"sharp")}setFontFamily(e){switch(e){case 1:return this.style.fontFamily=4,getFontFamily(4);case 2:return this.style.fontFamily=2,getFontFamily(2);case 3:return this.style.fontFamily=3,getFontFamily(3);default:return this.style.fontFamily=1,getFontFamily(1)}}setTheme(e){return 0===e?(this.canvas.theme="light","light"):(this.canvas.theme="dark","dark")}addToGroup(e){const t=nanoid();return e.forEach((e=>{var n,r;null===(r=null===(n=this.elementsDict[e])||void 0===n?void 0:n.groupIds)||void 0===r||r.push(t)})),t}async toClipboard(e){const t=e?await getTemplate(this.plugin,e,!1,new EmbeddedFilesLoader(this.plugin),0):null;let n=t?t.elements:[];n=n.concat(this.getElements()),navigator.clipboard.writeText(JSON.stringify({type:"excalidraw/clipboard",elements:n}))}async getSceneFromFile(e){if(!e)return errorMessage("file not found","getScene()"),null;if(!this.isExcalidrawFile(e))return errorMessage("file is not an Excalidraw file","getScene()"),null;const t=await getTemplate(this.plugin,e.path,!1,new EmbeddedFilesLoader(this.plugin),0);return{elements:t.elements,appState:t.appState}}getElements(){const e=[],t=Object.keys(this.elementsDict);for(let n=0;n<t.length;n++)e.push(this.elementsDict[t[n]]);return e}getElement(e){return this.elementsDict[e]}async create(e){var t,n,r,i,o,a,s,l,c,T,Q,d,u,p,h,m,f,g,b,y,L,v,w,E,_,M,x,H,S,A,C,O,I,V,k,N,P,R,D;const j=(null==e?void 0:e.templatePath)?await getTemplate(this.plugin,e.templatePath,!0,new EmbeddedFilesLoader(this.plugin),0):null;let B,F=j?j.elements:[];if(F=F.concat(this.getElements()),null==e?void 0:e.frontmatterKeys){Object.keys(e.frontmatterKeys).includes("excalidraw-plugin")||(e.frontmatterKeys["excalidraw-plugin"]="parsed"),B="---\n\n";for(const t of Object.keys(e.frontmatterKeys))B+=`${t}: ${""===e.frontmatterKeys[t]?'""':e.frontmatterKeys[t]}\n`;B+="\n---\n"}else B=(null==j?void 0:j.frontmatter)?j.frontmatter:FRONTMATTER;B+=e.plaintext?e.plaintext+"\n\n":"",(null==j?void 0:j.frontmatter)&&(null==e?void 0:e.frontmatterKeys)&&(B=mergeMarkdownFiles(j.frontmatter,B));const G={type:"excalidraw",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,elements:F,appState:{theme:null!==(n=null===(t=null==j?void 0:j.appState)||void 0===t?void 0:t.theme)&&void 0!==n?n:this.canvas.theme,viewBackgroundColor:null!==(i=null===(r=null==j?void 0:j.appState)||void 0===r?void 0:r.viewBackgroundColor)&&void 0!==i?i:this.canvas.viewBackgroundColor,currentItemStrokeColor:null!==(a=null===(o=null==j?void 0:j.appState)||void 0===o?void 0:o.currentItemStrokeColor)&&void 0!==a?a:this.style.strokeColor,currentItemBackgroundColor:null!==(l=null===(s=null==j?void 0:j.appState)||void 0===s?void 0:s.currentItemBackgroundColor)&&void 0!==l?l:this.style.backgroundColor,currentItemFillStyle:null!==(T=null===(c=null==j?void 0:j.appState)||void 0===c?void 0:c.currentItemFillStyle)&&void 0!==T?T:this.style.fillStyle,currentItemStrokeWidth:null!==(d=null===(Q=null==j?void 0:j.appState)||void 0===Q?void 0:Q.currentItemStrokeWidth)&&void 0!==d?d:this.style.strokeWidth,currentItemStrokeStyle:null!==(p=null===(u=null==j?void 0:j.appState)||void 0===u?void 0:u.currentItemStrokeStyle)&&void 0!==p?p:this.style.strokeStyle,currentItemRoughness:null!==(m=null===(h=null==j?void 0:j.appState)||void 0===h?void 0:h.currentItemRoughness)&&void 0!==m?m:this.style.roughness,currentItemOpacity:null!==(g=null===(f=null==j?void 0:j.appState)||void 0===f?void 0:f.currentItemOpacity)&&void 0!==g?g:this.style.opacity,currentItemFontFamily:null!==(y=null===(b=null==j?void 0:j.appState)||void 0===b?void 0:b.currentItemFontFamily)&&void 0!==y?y:this.style.fontFamily,currentItemFontSize:null!==(v=null===(L=null==j?void 0:j.appState)||void 0===L?void 0:L.currentItemFontSize)&&void 0!==v?v:this.style.fontSize,currentItemTextAlign:null!==(E=null===(w=null==j?void 0:j.appState)||void 0===w?void 0:w.currentItemTextAlign)&&void 0!==E?E:this.style.textAlign,currentItemStartArrowhead:null!==(M=null===(_=null==j?void 0:j.appState)||void 0===_?void 0:_.currentItemStartArrowhead)&&void 0!==M?M:this.style.startArrowHead,currentItemEndArrowhead:null!==(H=null===(x=null==j?void 0:j.appState)||void 0===x?void 0:x.currentItemEndArrowhead)&&void 0!==H?H:this.style.endArrowHead,currentItemRoundness:(null!==(V=null!==(O=null!==(A=null===(S=null==j?void 0:j.appState)||void 0===S?void 0:S.currentItemLinearStrokeSharpness)&&void 0!==A?A:null===(C=null==j?void 0:j.appState)||void 0===C?void 0:C.currentItemStrokeSharpness)&&void 0!==O?O:null===(I=null==j?void 0:j.appState)||void 0===I?void 0:I.currentItemRoundness)&&void 0!==V?V:this.style.roundness)?"round":"sharp",gridSize:null!==(N=null===(k=null==j?void 0:j.appState)||void 0===k?void 0:k.gridSize)&&void 0!==N?N:this.canvas.gridSize,colorPalette:null!==(R=null===(P=null==j?void 0:j.appState)||void 0===P?void 0:P.colorPalette)&&void 0!==R?R:this.colorPalette},files:null!==(D=null==j?void 0:j.files)&&void 0!==D?D:{}},W=(null==e?void 0:e.filename)?e.filename+(e.filename.endsWith(".md")?"":".excalidraw.md"):getDrawingFilename(this.plugin.settings),U=(null==e?void 0:e.foldername)?e.foldername:this.plugin.settings.folder,$=this.plugin.settings.compatibilityMode?JSON.stringify(G,null,"\t"):B+(()=>{const e=this.getElements().filter((e=>"text"===e.type));let t=`${MD_TEXTELEMENTS}\n`;return e.forEach((e=>{var n,r;t+=`${null!==(n=e.rawText)&&void 0!==n?n:null!==(r=e.originalText)&&void 0!==r?r:e.text} ^${e.id}\n\n`})),this.getElements().filter((e=>"text"!==e.type&&e.link)).forEach((e=>{t+=`${e.link} ^${e.id}\n\n`})),t+=Object.keys(this.imagesDict).length>0?"\n# Embedded files\n":"",Object.keys(this.imagesDict).forEach((e=>{const n=this.imagesDict[e];if(n.latex)t+=`${e}: $$${n.latex}$$\n`;else if(n.file)n.file instanceof obsidian_module.TFile?t+=`${e}: [[${n.file.path}]]\n`:t+=`${e}: [[${n.file}]]\n`;else{const r=n.hyperlink.split("#"),i=this.plugin.app.vault.getAbstractFileByPath(r[0]);if(i&&i instanceof obsidian_module.TFile){const n=2===r.length;t+=n?`${e}: [[${i.path}#${r[1]}]]\n`:`${e}: [[${i.path}]]\n`}else t+=`${e}: ${n.hyperlink}\n`}})),t+"\n%%\n"})()+getMarkdownDrawingSection(JSON.stringify(G,null,"\t"),this.plugin.settings.compress);return e.silent?(await this.plugin.createDrawing(W,U,$)).path:this.plugin.createAndOpenDrawing(W,(null==e?void 0:e.onNewPane)&&e.onNewPane?"new-pane":"active-pane",U,$)}async createSVG(e,t=!1,n,r,i,o){return i||(i=this.plugin.settings.previewMatchObsidianTheme?isObsidianThemeDark()?"dark":"light":this.plugin.settings.exportWithTheme?void 0:"light"),i&&!n&&(n={withBackground:this.plugin.settings.exportWithBackground,withTheme:!0,isMask:!1}),r||(r=new EmbeddedFilesLoader(this.plugin,i?"dark"===i:void 0)),await createSVG(e,t,n,r,i,this.canvas.theme,this.canvas.viewBackgroundColor,this.getElements(),this.plugin,0,o,this.imagesDict)}async createPNG(e,t=1,n,r,i,o){return i||(i=this.plugin.settings.previewMatchObsidianTheme?isObsidianThemeDark()?"dark":"light":this.plugin.settings.exportWithTheme?void 0:"light"),i&&!n&&(n={withBackground:this.plugin.settings.exportWithBackground,withTheme:!0,isMask:!1}),r||(r=new EmbeddedFilesLoader(this.plugin,i?"dark"===i:void 0)),await createPNG(e,t,n,r,i,this.canvas.theme,this.canvas.viewBackgroundColor,this.getElements(),this.plugin,0,o,this.imagesDict)}async createPNGBase64(e,t=1,n,r,i,o){const a=await this.createPNG(e,t,n,r,i,o);return`data:image/png;base64,${await blobToBase64(a)}`}wrapText(e,t){return wrapTextAtCharLength(e,t,this.plugin.settings.forceWrap)}boxedElement(e,t,n,r,i,o,a=null,s){return Object.assign({id:e,type:t,x:n,y:r,width:i,height:o,angle:this.style.angle,strokeColor:this.style.strokeColor,backgroundColor:this.style.backgroundColor,fillStyle:this.style.fillStyle,strokeWidth:this.style.strokeWidth,strokeStyle:this.style.strokeStyle,roughness:this.style.roughness,opacity:this.style.opacity,roundness:this.style.strokeSharpness?"round"===this.style.strokeSharpness?{type:ROUNDNESS.ADAPTIVE_RADIUS}:null:this.style.roundness,seed:Math.floor(1e5*Math.random()),version:1,versionNonce:Math.floor(1e9*Math.random()),updated:Date.now(),isDeleted:!1,groupIds:[],boundElements:[],link:a,locked:!1},s?{scale:s}:{})}addIFrame(e,t,n,r,i,o){return this.addEmbeddable(e,t,n,r,i,o)}addEmbeddable(e,t,n,r,i,o,a){var s;if(!this.targetView||!(null===(s=this.targetView)||void 0===s?void 0:s._loaded))return errorMessage("targetView not set","addEmbeddable()"),null;if(!i&&!o)return errorMessage("Either the url or the file must be set. If both are provided the URL takes precedence","addEmbeddable()"),null;const l=nanoid();return this.elementsDict[l]=this.boxedElement(l,"embeddable",e,t,n,r,i||(o?`[[${app.metadataCache.fileToLinktext(o,this.targetView.file.path,!1)}]]`:""),[1,1]),this.elementsDict[l].customData={mdProps:null!=a?a:this.plugin.settings.embeddableMarkdownDefaults},l}addFrame(e,t,n,r,i){const o=this.addRect(e,t,n,r),a=this.getElement(o);return a.type="frame",a.backgroundColor="transparent",a.strokeColor="#000",a.strokeStyle="solid",a.strokeWidth=2,a.roughness=0,a.roundness=null,i&&(a.name=i),o}addRect(e,t,n,r,i){return i||(i=nanoid()),this.elementsDict[i]=this.boxedElement(i,"rectangle",e,t,n,r),i}addDiamond(e,t,n,r,i){return i||(i=nanoid()),this.elementsDict[i]=this.boxedElement(i,"diamond",e,t,n,r),i}addEllipse(e,t,n,r,i){return i||(i=nanoid()),this.elementsDict[i]=this.boxedElement(i,"ellipse",e,t,n,r),i}addBlob(e,t,n,r,i){const o=.5*r,a=.5*n,s=a/9,l=.8*o,c=[],T=(n,r)=>{const i=n+Math.random()*s-s/2;c.push([i+Math.random()*s-s/2+n%2*s/6+e,r*Math.sqrt(o*o*(1-i*i/(a*a)))+Math.random()*l-l/2+n%2*l/6+t])};let Q;for(Q=s/2-a;Q<=a-s/2;Q+=a/6)T(Q,1);for(Q=a-s/2;Q>=s/2-a;Q-=a/6)T(Q,-1);return c.push(c[0]),i=this.addLine((e=>{const t=getLineBox(e),i=n/t.w,o=r/t.h;let a;for(a=0;a<e.length;a++){let[n,r]=e[a];n=(n-t.x)*i+t.x,r=(r-t.y)*o+t.y,e[a]=[n,r]}return e})(c),i),this.elementsDict[i]=repositionElementsToCursor([this.getElement(i)],{x:e,y:t},!1)[0],i}refreshTextElementSize(e){const t=this.getElement(e);if("text"!==t.type)return;const{w:n,h:r,baseline:i}=_measureText(t.text,t.fontSize,t.fontFamily,getDefaultLineHeight(t.fontFamily));t.width=n,t.height=r,t.baseline=i}addText(e,t,n,r,i){var o,a,s,l;i=null!=i?i:nanoid();const c=n;n=(null==r?void 0:r.wrapAt)?this.wrapText(n,r.wrapAt):n;const{w:T,h:Q,baseline:d}=_measureText(n,this.style.fontSize,this.style.fontFamily,getDefaultLineHeight(this.style.fontFamily)),u=(null==r?void 0:r.width)?r.width:T,p=(null==r?void 0:r.height)?r.height:Q;let h=null;const m=null!==(o=null==r?void 0:r.boxPadding)&&void 0!==o?o:30,f=this.style.strokeColor;if(this.style.strokeColor=null!==(a=null==r?void 0:r.boxStrokeColor)&&void 0!==a?a:f,null==r?void 0:r.box)switch(r.box){case"ellipse":h=this.addEllipse(e-m,t-m,u+2*m,p+2*m);break;case"diamond":h=this.addDiamond(e-m,t-m,u+2*m,p+2*m);break;case"blob":h=this.addBlob(e-m,t-m,u+2*m,p+2*m);break;default:h=this.addRect(e-m,t-m,u+2*m,p+2*m)}this.style.strokeColor=f;const g=h&&"blob"!==r.box;if(this.elementsDict[i]=Object.assign(Object.assign({text:n,fontSize:this.style.fontSize,fontFamily:this.style.fontFamily,textAlign:(null==r?void 0:r.textAlign)?r.textAlign:null!==(s=this.style.textAlign)&&void 0!==s?s:"left",verticalAlign:null!==(l=null==r?void 0:r.textVerticalAlign)&&void 0!==l?l:this.style.verticalAlign,baseline:d},this.boxedElement(i,"text",e,t,u,p)),{containerId:g?h:null,originalText:g?c:n,rawText:g?c:n,lineHeight:getDefaultLineHeight(this.style.fontFamily)}),h&&"blob"===(null==r?void 0:r.box)&&this.addToGroup([i,h]),g){const e=this.elementsDict[h];e.boundElements||(e.boundElements=[]),e.boundElements.push({type:"text",id:i})}return null!=h?h:i}addLine(e,t){const n=getLineBox(e);return t=null!=t?t:nanoid(),this.elementsDict[t]=Object.assign({points:normalizeLinePoints(e),lastCommittedPoint:null,startBinding:null,endBinding:null,startArrowhead:null,endArrowhead:null},this.boxedElement(t,"line",e[0][0],e[0][1],n.w,n.h)),t}addArrow(e,t,n){const r=getLineBox(e);n=null!=n?n:nanoid();const i=e[0],o=e[e.length-1];return this.elementsDict[n]=Object.assign({points:normalizeLinePoints(e),lastCommittedPoint:null,startBinding:{elementId:null==t?void 0:t.startObjectId,focus:(null==t?void 0:t.startObjectId)?determineFocusDistance(this.getElement(null==t?void 0:t.startObjectId),o,i):.1,gap:4},endBinding:{elementId:null==t?void 0:t.endObjectId,focus:(null==t?void 0:t.endObjectId)?determineFocusDistance(this.getElement(null==t?void 0:t.endObjectId),i,o):.1,gap:4},startArrowhead:void 0!==(null==t?void 0:t.startArrowHead)?t.startArrowHead:this.style.startArrowHead,endArrowhead:void 0!==(null==t?void 0:t.endArrowHead)?t.endArrowHead:this.style.endArrowHead},this.boxedElement(n,"arrow",e[0][0],e[0][1],r.w,r.h)),(null==t?void 0:t.startObjectId)&&(this.elementsDict[t.startObjectId].boundElements||(this.elementsDict[t.startObjectId].boundElements=[]),this.elementsDict[t.startObjectId].boundElements.push({type:"arrow",id:n})),(null==t?void 0:t.endObjectId)&&(this.elementsDict[t.endObjectId].boundElements||(this.elementsDict[t.endObjectId].boundElements=[]),this.elementsDict[t.endObjectId].boundElements.push({type:"arrow",id:n})),n}async addMermaid(e,t=!0){const n=await mermaidToExcalidraw(e,{fontSize:this.style.fontSize}),r=[];if(!n)return null;if(null==n?void 0:n.error)return n.error;if((null==n?void 0:n.elements)&&n.elements.forEach((e=>{r.push(e.id),this.elementsDict[e.id]=e})),null==n?void 0:n.files)for(const e in n.files)this.imagesDict[e]=Object.assign(Object.assign({},n.files[e]),{created:Date.now(),isHyperLink:!1,hyperlink:null,file:null,hasSVGwithBitmap:!1,latex:null});return t&&(null==n?void 0:n.elements)&&r.length>1&&this.addToGroup(r),r}async addImage(e,t,n,r=!0,i=!0){const o=nanoid(),a=new EmbeddedFilesLoader(this.plugin,"dark"===this.canvas.theme),s="string"==typeof n?await a.getObsidianImage(new EmbeddedFile(this.plugin,"",n),0):await a.getObsidianImage(n,0);if(!s)return null;const l="string"==typeof n?s.fileId:"md"===n.extension||"pdf"===n.extension.toLowerCase()?fileid():s.fileId;if(this.imagesDict[l]={mimeType:s.mimeType,id:l,dataURL:s.dataURL,created:s.created,isHyperLink:"string"==typeof n,hyperlink:"string"==typeof n?n:null,file:"string"==typeof n?null:n.path+(r||!i?"":"|100%"),hasSVGwithBitmap:s.hasSVGwithBitmap,latex:null},r&&Math.max(s.size.width,s.size.height)>500){const e=500/Math.max(s.size.width,s.size.height);s.size.width=e*s.size.width,s.size.height=e*s.size.height}return this.elementsDict[o]=this.boxedElement(o,"image",e,t,s.size.width,s.size.height),this.elementsDict[o].fileId=l,this.elementsDict[o].scale=[1,1],!r&&i&&(this.elementsDict[o].customData={isAnchored:!0}),o}async addLaTex(e,t,n){const r=nanoid(),i=await tex2dataURL(n);return i?(this.imagesDict[i.fileId]={mimeType:i.mimeType,id:i.fileId,dataURL:i.dataURL,created:i.created,file:null,hasSVGwithBitmap:!1,latex:n},this.elementsDict[r]=this.boxedElement(r,"image",e,t,i.size.width,i.size.height),this.elementsDict[r].fileId=i.fileId,this.elementsDict[r].scale=[1,1],r):null}connectObjects(e,t,n,r,i){if(!this.elementsDict[e]||!this.elementsDict[n])return;if(["line","arrow","freedraw"].includes(this.elementsDict[e].type)||["line","arrow","freedraw"].includes(this.elementsDict[n].type))return;const o=(null==i?void 0:i.padding)?i.padding:10,a=(null==i?void 0:i.numberOfPoints)?i.numberOfPoints:0,s=(e,t)=>{switch(e){case"bottom":return[(t.x+(t.x+t.width))/2,t.y+t.height+o];case"left":return[t.x-o,(t.y+(t.y+t.height))/2];case"right":return[t.x+t.width+o,(t.y+(t.y+t.height))/2];default:return[(t.x+(t.x+t.width))/2,t.y-o]}};let l,c,T,Q;const d=this.elementsDict[e],u=this.elementsDict[n];if(!t||!r){const e=d.x+d.width/2,n=u.x+u.width/2,i=d.y+d.height/2,o=u.y+u.height/2;if(!t){const t=intersectElementWithLine(d,[n,o],[e,i],4);0===t.length?[l,c]=[e,i]:[l,c]=t[0]}if(!r){const t=intersectElementWithLine(u,[e,i],[n,o],4);0===t.length?[T,Q]=[n,o]:[T,Q]=t[0]}}t&&([l,c]=s(t,this.elementsDict[e])),r&&([T,Q]=s(r,this.elementsDict[n]));const p=a+2,h=[];for(let e=0;e<p;e++)h.push([l+e*(T-l)/(p-1),c+e*(Q-c)/(p-1)]);return this.addArrow(h,{startArrowHead:null==i?void 0:i.startArrowHead,endArrowHead:null==i?void 0:i.endArrowHead,startObjectId:e,endObjectId:n})}addLabelToLine(e,t){const n=this.elementsDict[e];if(!n||!["arrow","line"].includes(n.type)||2!==n.points.length)return;let r=Math.atan2(n.points[1][1],n.points[1][0]);const i=this.measureText(t);r<0?r<-Math.PI/2&&(r+=Math.PI):r>Math.PI/2&&(r-=Math.PI),this.style.angle=r;const o=this.addText(n.x+n.points[1][0]/2-i.width/2,n.y+n.points[1][1]/2-i.height,t);return this.style.angle=0,o}clear(){this.elementsDict={},this.imagesDict={}}reset(){this.clear(),this.activeScript=null,this.style={strokeColor:"#000000",backgroundColor:"transparent",angle:0,fillStyle:"hachure",strokeWidth:1,strokeStyle:"solid",roughness:1,opacity:100,roundness:null,fontFamily:1,fontSize:20,textAlign:"left",verticalAlign:"top",startArrowHead:null,endArrowHead:"arrow"},this.canvas={theme:"light",viewBackgroundColor:"#FFFFFF",gridSize:0}}isExcalidrawFile(e){return this.plugin.isExcalidrawFile(e)}setView(e){if(!e){const e=app.workspace.getActiveViewOfType(ExcalidrawView);if(e instanceof ExcalidrawView)this.targetView=e;else{const e=app.workspace.getLeavesOfType("excalidraw");if(!e||0==e.length)return;this.targetView=e[0].view}}if("active"==e){const e=app.workspace.getActiveViewOfType(ExcalidrawView);if(!(e instanceof ExcalidrawView))return;this.targetView=e}if("first"==e){const e=app.workspace.getLeavesOfType("excalidraw");if(!e||0==e.length)return;this.targetView=e[0].view}return e instanceof ExcalidrawView&&(this.targetView=e),this.targetView}getExcalidrawAPI(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?this.targetView.excalidrawAPI:(errorMessage("targetView not set","getExcalidrawAPI()"),null)}getViewElements(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?this.targetView.getViewElements():(errorMessage("targetView not set","getViewElements()"),[])}deleteViewElements(e){var t,n;if(!this.targetView||!(null===(t=this.targetView)||void 0===t?void 0:t._loaded))return errorMessage("targetView not set","deleteViewElements()"),!1;const r=null===(n=this.targetView)||void 0===n?void 0:n.excalidrawAPI;if(!r)return!1;const i=r.getSceneElements(),o=r.getAppState();return this.targetView.updateScene({elements:i.filter((t=>!e.includes(t))),appState:o,commitToHistory:!0}),!0}getViewSelectedElement(){const e=this.getViewSelectedElements();return e?e[0]:null}getViewSelectedElements(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?this.targetView.getViewSelectedElements():(errorMessage("targetView not set","getViewSelectedElements()"),[])}getViewFileForImageElement(e){var t,n,r,i;return this.targetView&&(null===(t=this.targetView)||void 0===t?void 0:t._loaded)?e&&"image"===e.type?null===(i=null===(r=null===(n=this.targetView)||void 0===n?void 0:n.excalidrawData)||void 0===r?void 0:r.getFile(e.fileId))||void 0===i?void 0:i.file:(errorMessage("Must provide an image element as input","getViewFileForImageElement()"),null):(errorMessage("targetView not set","getViewFileForImageElement()"),null)}copyViewElementsToEAforEditing(e,t=!1){var n;if(t&&e.some((e=>"image"===e.type))){if(!this.targetView||!(null===(n=this.targetView)||void 0===n?void 0:n._loaded))return void errorMessage("targetView not set","copyViewElementsToEAforEditing()");const t=this.targetView.getScene().files;e.forEach((e=>{if(this.elementsDict[e.id]=cloneElement(e),"image"===e.type){const n=this.targetView.excalidrawData.getFile(e.fileId),r=n&&n.file&&n.linkParts&&n.linkParts.ref,i=this.targetView.excalidrawData.getEquation(e.fileId),o=null==t?void 0:t[e.fileId];this.imagesDict[e.fileId]=Object.assign(Object.assign({mimeType:o.mimeType,id:e.fileId,dataURL:o.dataURL,created:o.created},n?{isHyperLink:n.isHyperLink||r,hyperlink:r?`${n.file.path}#${n.linkParts.ref}`:n.hyperlink,file:r?null:n.file,hasSVGwithBitmap:n.isSVGwithBitmap,latex:null}:{}),i?{file:null,isHyperLink:!1,hyperlink:null,hasSVGwithBitmap:!1,latex:i.latex}:{})}}))}else e.forEach((e=>{this.elementsDict[e.id]=cloneElement(e)}))}viewToggleFullScreen(e=!1){var t,n,r;if(!this.targetView||!(null===(t=this.targetView)||void 0===t?void 0:t._loaded))return void errorMessage("targetView not set","viewToggleFullScreen()");const i=this.targetView,o=i.isFullscreen();e&&(i.updateScene({appState:{viewModeEnabled:!o},commitToHistory:!1}),null===(r=null===(n=this.targetView.toolsPanelRef)||void 0===n?void 0:n.current)||void 0===r||r.setExcalidrawViewMode(!o)),o?i.exitFullscreen():i.gotoFullscreen()}setViewModeEnabled(e){var t,n,r;if(!this.targetView||!(null===(t=this.targetView)||void 0===t?void 0:t._loaded))return void errorMessage("targetView not set","viewToggleFullScreen()");const i=this.targetView;i.updateScene({appState:{viewModeEnabled:e}}),null===(r=null===(n=i.toolsPanelRef)||void 0===n?void 0:n.current)||void 0===r||r.setExcalidrawViewMode(e)}viewUpdateScene(e,t=!1){var n;this.targetView&&(null===(n=this.targetView)||void 0===n?void 0:n._loaded)?this.targetView.updateScene(e,t):errorMessage("targetView not set","viewToggleFullScreen()")}connectObjectWithViewSelectedElement(e,t,n,r){const i=this.getViewSelectedElement();if(!i)return!1;const o=i.id;return this.elementsDict[o]=i,this.connectObjects(e,t,o,n,r),delete this.elementsDict[o],!0}viewZoomToElements(e,t){var n;this.targetView&&(null===(n=this.targetView)||void 0===n?void 0:n._loaded)?this.targetView.zoomToElements(e,t):errorMessage("targetView not set","viewToggleFullScreen()")}async addElementsToView(e=!1,t=!0,n=!1,r=!1){var i;if(!this.targetView||!(null===(i=this.targetView)||void 0===i?void 0:i._loaded))return errorMessage("targetView not set","addElementsToView()"),!1;const o=this.getElements();return await this.targetView.addElements(o,e,t,this.imagesDict,n,r)}registerThisAsViewEA(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?(this.targetView.setHookServer(this),!0):(errorMessage("targetView not set","addElementsToView()"),!1)}deregisterThisAsViewEA(){var e;return this.targetView&&(null===(e=this.targetView)||void 0===e?void 0:e._loaded)?(this.targetView.setHookServer(this),!0):(errorMessage("targetView not set","addElementsToView()"),!1)}getEmbeddedFilesLoader(e){return new EmbeddedFilesLoader(this.plugin,e)}getExportSettings(e,t,n=!1){return{withBackground:e,withTheme:t,isMask:n}}getBoundingBox(e){const t=getCommonBoundingBox(e);return{topX:t.minX,topY:t.minY,width:t.maxX-t.minX,height:t.maxY-t.minY}}getMaximumGroups(e){return getMaximumGroups(e,(t=e)instanceof Map?t:t.reduce(((e,t)=>(e.set("string"==typeof t?t:t.id,t),e)),new Map));var t}getLargestElement(e){if(!e||0===e.length)return null;let t=e[0];const n=e=>e.height*e.width;let r=n(e[0]);for(let i=1;i<e.length;i++){const o=n(e[i]);o>r&&(r=o,t=e[i])}return t}intersectElementWithLine(e,t,n,r){return intersectElementWithLine(e,t,n,r)}getCommonGroupForElements(e){const t=e.map((e=>e.groupIds)).reduce(((e,t)=>t.filter((t=>e.includes(t)))));return t.length>0?t[0]:null}getElementsInTheSameGroupWithElement(e,t){if(!e||!t)return[];const n="text"===e.type&&e.containerId?t.filter((t=>t.id===e.containerId)):[];return 0===e.groupIds.length?1===n.length?[e,n[0]]:[e]:1===n.length?t.filter((t=>t.groupIds.some((t=>e.groupIds.includes(t)))||t===n[0])):t.filter((t=>t.groupIds.some((t=>e.groupIds.includes(t)))))}getElementsInFrame(e,t){return e&&t&&"frame"===e.type?t.filter((t=>t.frameId===e.id)):[]}getScriptSettings(){var e;return this.activeScript?null!==(e=this.plugin.settings.scriptEngineSettings[this.activeScript])&&void 0!==e?e:{}:null}async setScriptSettings(e){if(!this.activeScript)return null;this.plugin.settings.scriptEngineSettings[this.activeScript]=e,await this.plugin.saveSettings()}openFileInNewOrAdjacentLeaf(e,t){if(!(e&&e instanceof obsidian_module.TFile))return null;if(!this.targetView)return null;const{leaf:n,promise:r}=openLeaf({plugin:this.plugin,fnGetLeaf:()=>getNewOrAdjacentLeaf(this.plugin,this.targetView.leaf),file:e,openState:null!=t?t:{active:!0}});return n}measureText(e){var t,n;const r=_measureText(e,this.style.fontSize,this.style.fontFamily,getDefaultLineHeight(this.style.fontFamily));return{width:null!==(t=r.w)&&void 0!==t?t:0,height:null!==(n=r.h)&&void 0!==n?n:0}}async getOriginalImageSize(e){var t;if(!this.targetView||!(null===(t=this.targetView)||void 0===t?void 0:t._loaded))return errorMessage("targetView not set","getOriginalImageSize()"),null;if(!e||"image"!==e.type)return errorMessage("Please provide a single image element as input","getOriginalImageSize()"),null;const n=this.targetView.excalidrawData.getFile(e.fileId);if(!n)return errorMessage("Please provide a single image element as input","getOriginalImageSize()"),null;const r="dark"===this.getExcalidrawAPI().getAppState().theme,i=n.getImage(r);return await getImageSize(i)}verifyMinimumPluginVersion(e){return verifyMinimumPluginVersion(e)}isExcalidrawView(e){return e instanceof ExcalidrawView}selectElementsInView(e){var t;if(!this.targetView||!(null===(t=this.targetView)||void 0===t?void 0:t._loaded))return void errorMessage("targetView not set","selectElementsInView()");if(!e||0===e.length)return;const n=this.getExcalidrawAPI();if("string"==typeof e[0]){const t=this.getViewElements().filter((t=>e.includes(t.id)));n.selectElements(t)}else n.selectElements(e)}generateElementId(){return nanoid()}cloneElement(e){const t=JSON.parse(JSON.stringify(e));return t.id=nanoid(),t}moveViewElementToZIndex(e,t){var n;if(!this.targetView||!(null===(n=this.targetView)||void 0===n?void 0:n._loaded))return void errorMessage("targetView not set","moveViewElementToZIndex()");const r=this.getExcalidrawAPI(),i=this.getViewElements(),o=i.filter((t=>t.id===e));if(0===o.length)return void errorMessage(`Element (id: ${e}) not found`,"moveViewElementToZIndex");if(t>=i.length)return void r.bringToFront(o);if(t<0)return void r.sendToBack(o);const a=i.indexOf(o[0]);i.splice(t,0,i.splice(a,1)[0]),this.targetView.updateScene({elements:i,commitToHistory:!0})}hexStringToRgb(e){const t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}rgbToHexString(e){return O$1({r:e[0],g:e[1],b:e[2]}).stringHEX({alpha:!1})}hslToRgb(e){const t=O$1({h:e[0],s:e[1],l:e[2]});return[t.red,t.green,t.blue]}rgbToHsl(e){const t=O$1({r:e[0],g:e[1],b:e[2]});return[t.hue,t.saturation,t.lightness]}colorNameToHex(e){return COLOR_NAMES.has(e.toLowerCase().trim())?COLOR_NAMES.get(e.toLowerCase().trim()):e.trim()}getCM(e){if(e)return"string"==typeof e&&(e=this.colorNameToHex(e)),O$1(e);log("Creates a CM object. Visit https://github.com/lbragile/ColorMaster for documentation.")}getPolyBool(){return PolyBool$1.epsilon(1e-10),PolyBool$1}importSVG(e){const t=svgToExcalidraw(e);return t.hasErrors?(new obsidian_module.Notice(`There were errors while parsing the given SVG:\n${[...t.errors].map((e=>e.innerHTML))}`),!1):(this.copyViewElementsToEAforEditing(t.content),!0)}}async function initExcalidrawAutomate(e){await initFonts();const t=new ExcalidrawAutomate(e);return window.ExcalidrawAutomate=t,t}function destroyExcalidrawAutomate(){delete window.ExcalidrawAutomate}function normalizeLinePoints(e){const t=[],[n,r]=e[0];for(let i=0;i<e.length;i++)t.push([e[i][0]-n,e[i][1]-r]);return t}function getLineBox(e){const[t,n,r,i]=estimateLineBound(e);return{x:t,y:n,w:r-t,h:i-n}}function getFontFamily(e){switch(e){case 1:return"Virgil, Segoe UI Emoji";case 2:return"Helvetica, Segoe UI Emoji";case 3:return"Cascadia, Segoe UI Emoji";case 4:return"LocalFont"}}async function initFonts(){for(let e=1;e<=3;e++)await document.fonts.load(`20px ${getFontFamily(e)}`)}function _measureText(e,t,n,r){t||(t=20),n||(r=getDefaultLineHeight(n=1));const i=measureText(e,`${t.toString()}px ${getFontFamily(n)}`,r);return{w:i.width,h:i.height,baseline:i.baseline}}async function getTemplate(e,t,n=!1,r,i,o=!1){const a=e.app,s=a.vault,l=getEmbeddedFilenameParts(t),c=obsidian_module.normalizePath(l.filepath),T=a.metadataCache.getFirstLinkpathDest(c,"");let Q=!1;if(T&&T instanceof obsidian_module.TFile){const t=(await s.read(T)).replaceAll("\r\n","\n").replaceAll("\r","\n"),a=new ExcalidrawData(e);if("excalidraw"===T.extension)return await a.loadLegacyData(t,T),{elements:o?updateElementLinksToObsidianLinks({elements:a.scene.elements,hostFile:T}):a.scene.elements,appState:a.scene.appState,frontmatter:"",files:a.scene.files,hasSVGwithBitmap:Q};const c=getTextMode(t);await a.loadData(t,T,c);let d=t.search(new RegExp(`^${MD_TEXTELEMENTS}$`,"m"));-1==d&&(d=t.search(`${MD_DRAWING}\n`));let u=a.scene;n&&await r.loadSceneFiles(a,(e=>{if(e&&0!==e.length){for(const t of e)t.hasSVGwithBitmap&&(Q=!0),a.scene.files[t.id]={mimeType:t.mimeType,id:t.id,dataURL:t.dataURL,created:t.created};u=scaleLoadedImage(a.scene,e).scene}}),i);let p=u.elements;if(l.hasGroupref){const t=l.hasSectionref?getTextElementsMatchingQuery(u.elements,["# "+l.sectionref],!0):u.elements.filter((e=>e.id===l.blockref));t.length>0&&(p=e.ea.getElementsInTheSameGroupWithElement(t[0],u.elements))}if(l.hasFrameref){const t=getFrameBasedOnFrameNameOrId(l.blockref,u.elements);t&&(p=e.ea.getElementsInFrame(t,u.elements))}return l.hasTaskbone&&(p=p.filter((t=>{var n;return"freedraw"===t.type||"image"===t.type&&!e.isExcalidrawFile(null===(n=a.getFile(t.fileId))||void 0===n?void 0:n.file)}))),{elements:o?updateElementLinksToObsidianLinks({elements:p,hostFile:T}):p,appState:u.appState,frontmatter:t.substring(0,d),files:u.files,hasSVGwithBitmap:Q}}return{elements:[],appState:{},frontmatter:null,files:[],hasSVGwithBitmap:Q}}async function createPNG(e=void 0,t=1,n,r,i=void 0,o=void 0,a=void 0,s=[],l,c,T,Q){var d,u,p,h,m,f,g,b;r||(r=new EmbeddedFilesLoader(l)),T=null!=T?T:l.settings.exportPaddingSVG;const y=e?await getTemplate(l,e,!0,r,c):null;let L=null!==(d=null==y?void 0:y.elements)&&void 0!==d?d:[];L=L.concat(s);const v=null!=Q?Q:{};return(null==y?void 0:y.files)&&Object.values(y.files).forEach((e=>{e.dataURL.startsWith("http")||(v[e.id]=e)})),await getPNG({type:"excalidraw",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,elements:L,appState:{theme:null!==(p=null!=i?i:null===(u=null==y?void 0:y.appState)||void 0===u?void 0:u.theme)&&void 0!==p?p:o,viewBackgroundColor:null!==(m=null===(h=null==y?void 0:y.appState)||void 0===h?void 0:h.viewBackgroundColor)&&void 0!==m?m:a},files:v},{withBackground:null!==(f=null==n?void 0:n.withBackground)&&void 0!==f?f:l.settings.exportWithBackground,withTheme:null!==(g=null==n?void 0:n.withTheme)&&void 0!==g?g:l.settings.exportWithTheme,isMask:null!==(b=null==n?void 0:n.isMask)&&void 0!==b&&b},T,t)}const updateElementLinksToObsidianLinks=({elements:e,hostFile:t})=>e.map((e=>{var n;if(e.link&&e.link.startsWith("[")){const r=REGEX_LINK.getResList(e.link)[0];if(!(null==r?void 0:r.value))return e;let i=REGEX_LINK.getLink(r);if(i.search("#")>-1&&(i=getLinkParts(i,t).path),i.match(REG_LINKINDEX_INVALIDCHARS))return e;const o=app.metadataCache.getFirstLinkpathDest(i,t.path);if(!o)return e;let a=app.getObsidianUrl(o);(null===(n=window.ExcalidrawAutomate)||void 0===n?void 0:n.onUpdateElementLinkForExportHook)&&(a=window.ExcalidrawAutomate.onUpdateElementLinkForExportHook({originalLink:e.link,obsidianLink:a,linkedFile:o,hostFile:t}));const s=cloneElement(e);return s.link=a,s}return e}));function addFilterToForeignObjects(e){e.querySelectorAll("foreignObject").forEach((e=>{e.setAttribute("filter",THEME_FILTER)}))}async function createSVG(e=void 0,t=!1,n,r,i=void 0,o=void 0,a=void 0,s=[],l,c,T,Q,d=!1){var u,p,h,m,f,g,b,y;r||(r=new EmbeddedFilesLoader(l));const L=e?await getTemplate(l,e,!0,r,c,d):null;let v=null!==(u=null==L?void 0:L.elements)&&void 0!==u?u:[];v=v.concat(s),T=null!=T?T:l.settings.exportPaddingSVG;const w=null!=Q?Q:{};(null==L?void 0:L.files)&&Object.values(L.files).forEach((e=>{w[e.id]=e}));const E=null!==(h=null!=i?i:null===(p=null==L?void 0:L.appState)||void 0===p?void 0:p.theme)&&void 0!==h?h:o,_=null!==(m=null==n?void 0:n.withTheme)&&void 0!==m?m:l.settings.exportWithTheme,M=await getSVG({type:"excalidraw",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,elements:v,appState:{theme:E,viewBackgroundColor:null!==(g=null===(f=null==L?void 0:L.appState)||void 0===f?void 0:f.viewBackgroundColor)&&void 0!==g?g:a},files:w},{withBackground:null!==(b=null==n?void 0:n.withBackground)&&void 0!==b?b:l.settings.exportWithBackground,withTheme:_,isMask:null!==(y=null==n?void 0:n.isMask)&&void 0!==y&&y},T,null);_&&"dark"===E&&addFilterToForeignObjects(M);const x=getEmbeddedFilenameParts(e);if(!x.hasGroupref&&!x.hasFrameref&&(x.hasBlockref||x.hasSectionref)){let e=x.hasSectionref?getTextElementsMatchingQuery(v,["# "+x.sectionref],!0):v.filter((e=>e.id===x.blockref));if(e.length>0){const t=e[0].containerId;t&&(e=e.concat(v.filter((e=>e.id===t))));const n=l.ea.getBoundingBox(e),r=l.ea.getBoundingBox(v);M.viewBox.baseVal.x=n.topX-r.topX,M.viewBox.baseVal.y=n.topY-r.topY,M.viewBox.baseVal.width=n.width+2*T,M.viewBox.baseVal.height=n.height+2*T}}return(null==L?void 0:L.hasSVGwithBitmap)&&M.setAttribute("hasbitmap","true"),t?embedFontsInSVG(M,l):M}function estimateLineBound(e){let t=1/0,n=1/0,r=-1/0,i=-1/0;for(const[o,a]of e)t=Math.min(t,o),n=Math.min(n,a),r=Math.max(r,o),i=Math.max(i,a);return[t,n,r,i]}function estimateBounds(e){const t=getCommonBoundingBox(e);return[t.minX,t.minY,t.maxX,t.maxY]}function repositionElementsToCursor(e,t,n=!1){const[r,i,o,a]=estimateBounds(e);let[s,l]=[0,0];return[s,l]=n?[t.x-(r+o)/2,t.y-(i+a)/2]:[t.x-r,t.y-i],e.forEach((e=>{e.x=e.x+s,e.y=e.y+l})),restore({elements:e},null,null).elements}function errorMessage(e,t){switch(e){case"targetView not set":errorlog({where:"ExcalidrawAutomate",source:t,message:"targetView not set, or no longer active. Use setView before calling this function"});break;case"mobile not supported":errorlog({where:"ExcalidrawAutomate",source:t,message:"this function is not available on Obsidian Mobile"});break;default:errorlog({where:"ExcalidrawAutomate",source:t,message:null!=e?e:"unknown error"})}}const insertLaTeXToView=e=>{const t=e.plugin.app,n=e.plugin.ea;GenericInputPrompt.Prompt(e,e.plugin,t,t$d("ENTER_LATEX"),"\\color{red}\\oint_S {E_n dA = \\frac{1}{{\\varepsilon _0 }}} Q_{inside}",e.plugin.settings.latexBoilerplate,void 0,3).then((async t=>{t&&(n.reset(),await n.addLaTex(0,0,t),n.setView(e),n.addElementsToView(!0,!1,!0))}))},search=async e=>{const t=e.plugin.ea;t.reset(),t.setView(e);const n=t.getViewElements().filter((e=>"text"===e.type||"frame"===e.type));if(0===n.length)return;let r=await ScriptEngine.inputPrompt(e,e.plugin,e.plugin.app,"Search for","use quotation marks for exact match","");if(!r)return;const i=r.matchAll(/"(.*?)"/g);let o,a=[];for(;!(o=i.next()).done;)a.push(o.value[1]);r=r.replaceAll(/"(.*?)"/g,""),a=a.concat(r.split(" ").filter((e=>0!==e.length))),t.targetView.selectElementsMatchingQuery(n,a)},getTextElementsMatchingQuery=(e,t,n=!1)=>e&&0!==e.length&&t&&0!==t.length?e.filter((e=>"text"===e.type&&t.some((t=>{if(n){const n=e.rawText.toLowerCase().split("\n")[0].trim().match(/^#*(# .*)/);return!(!n||2!==n.length)&&n[1]===t.toLowerCase()}return e.rawText.toLowerCase().replaceAll("\n"," ").trim().match(t.toLowerCase())})))):[],getFrameElementsMatchingQuery=(e,t,n=!1)=>e&&0!==e.length&&t&&0!==t.length?e.filter((e=>"frame"===e.type&&t.some((t=>{if(n){const n=e.name.toLowerCase().split("\n")[0].trim().match(/^#*(# .*)/);return!(!n||2!==n.length)&&n[1]===t.toLowerCase()}return(e.name?e.name.toLowerCase().replaceAll("\n"," ").trim():"").match(t.toLowerCase())})))):[],cloneElement=e=>{const t=JSON.parse(JSON.stringify(e));return t.version=e.version+1,t.updated=Date.now(),t.versionNonce=Math.floor(1e9*Math.random()),t},verifyMinimumPluginVersion=e=>PLUGIN_VERSION===e||isVersionNewerThanOther(PLUGIN_VERSION,e),URL$1="https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/index-new.md";class ScriptInstallPrompt extends obsidian_module.Modal{constructor(e){super(e.app),this.plugin=e}async onOpen(){const e=document.createElement("div");e.classList.add("search-bar-wrapper");const t=document.createElement("input");t.type="text",t.id="search-bar",t.placeholder="Search...",t.style.width="calc(100% - 120px)";const n=document.createElement("button");n.textContent="→",n.onclick=()=>this.navigateSearchResults("next");const r=document.createElement("button");r.textContent="←",r.onclick=()=>this.navigateSearchResults("previous");const i=document.createElement("span");i.id="hit-count",i.classList.add("hit-count"),e.appendChild(r),e.appendChild(n),e.appendChild(t),e.appendChild(i),this.contentEl.prepend(e),t.addEventListener("input",(e=>{this.clearHighlights();const t=e.target.value;if(t&&t.length>0){this.highlightSearchTerm(t);const e=this.contentDiv.querySelectorAll("mark.search-highlight").length;i.textContent=e>0?`1/${e}`:"",setTimeout((()=>this.navigateSearchResults("next")))}else i.textContent=""})),t.addEventListener("keydown",(e=>{(e.ctrlKey||e.metaKey)&&"f"===e.key?(e.preventDefault(),t.focus()):"Enter"===e.key&&(e.preventDefault(),this.navigateSearchResults(e.shiftKey?"previous":"next"))})),this.contentEl.classList.add("excalidraw-scriptengine-install"),this.contentDiv=document.createElement("div"),this.contentEl.appendChild(this.contentDiv),this.containerEl.classList.add("excalidraw-scriptengine-install");try{const e=await obsidian_module.request({url:URL$1});if(!e)return new obsidian_module.Notice("Error opening the Excalidraw Script Store page. Please double check that you can access the website. I've logged the link in developer console (press CTRL+SHIFT+i)",5e3),log(URL$1),void this.close();await obsidian_module.MarkdownRenderer.render(this.plugin.app,e,this.contentDiv,"",this.plugin),this.contentDiv.querySelectorAll("h1[data-heading],h2[data-heading],h3[data-heading]").forEach((e=>{e.setAttribute("id",e.getAttribute("data-heading"))})),this.contentDiv.querySelectorAll("a.internal-link").forEach((e=>{e.removeAttribute("target")}))}catch(e){errorlog({where:"ScriptInstallPrompt.onOpen",error:e}),new obsidian_module.Notice("Could not open ScriptEngine repository"),this.close()}}highlightSearchTerm(e){const t=document.createTreeWalker(this.contentDiv,NodeFilter.SHOW_TEXT,{acceptNode:t=>t.nodeValue.toLowerCase().includes(e.toLowerCase())?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}),n=[];for(;t.nextNode();)n.push(t.currentNode);n.forEach((t=>{const n=t.nodeValue,r=document.createDocumentFragment();let i,o=0;const a=new RegExp(escapeRegExp(e),"gi");for(;null!==(i=a.exec(n));){const e=document.createTextNode(n.slice(o,i.index)),t=document.createElement("mark");t.className="search-highlight",t.textContent=i[0],t.classList.add("search-result"),r.appendChild(e),r.appendChild(t),o=a.lastIndex}r.appendChild(document.createTextNode(n.slice(o))),t.replaceWith(r)}))}clearHighlights(){this.contentDiv.querySelectorAll("mark.search-highlight").forEach((e=>{e.outerHTML=e.innerHTML}))}navigateSearchResults(e){const t=Array.from(this.contentDiv.querySelectorAll("mark.search-highlight"));if(0===t.length)return;const n=t.findIndex((e=>e.classList.contains("active-highlight")));-1!==n&&(t[n].classList.remove("active-highlight"),t[n].style.border="none");let r=0;"next"===e?r=n===t.length-1?0:n+1:"previous"===e&&(r=0===n?t.length-1:n-1);const i=t[r];i.classList.add("active-highlight"),i.scrollIntoView({behavior:"smooth",block:"nearest"}),document.getElementById("hit-count").textContent=`${r+1}/${t.length}`}onClose(){this.contentEl.empty()}}function r(e){var t,n,i="";if("string"==typeof e||"number"==typeof e)i+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(i&&(i+=" "),i+=n);else for(t in e)e[t]&&(i&&(i+=" "),i+=t);return i}function clsx(){for(var e,t,n=0,i="";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(i&&(i+=" "),i+=t);return i}const PENS={default:{type:"default",freedrawOnly:!1,strokeColor:"#000000",backgroundColor:"transparent",fillStyle:"hachure",strokeWidth:0,roughness:0,penOptions:{highlighter:!1,constantPressure:!1,hasOutline:!1,outlineWidth:1,options:{thinning:.6,smoothing:.5,streamline:.5,easing:"easeOutSine",start:{cap:!0,taper:0,easing:"linear"},end:{cap:!0,taper:0,easing:"linear"}}}},highlighter:{type:"highlighter",freedrawOnly:!0,strokeColor:"#FFC47C",backgroundColor:"#FFC47C",fillStyle:"solid",strokeWidth:2,roughness:null,penOptions:{highlighter:!0,constantPressure:!0,hasOutline:!0,outlineWidth:4,options:{thinning:1,smoothing:.5,streamline:.5,easing:"linear",start:{taper:0,cap:!0,easing:"linear"},end:{taper:0,cap:!0,easing:"linear"}}}},finetip:{type:"finetip",freedrawOnly:!1,strokeColor:"#3E6F8D",backgroundColor:"transparent",fillStyle:"hachure",strokeWidth:.5,roughness:0,penOptions:{highlighter:!1,hasOutline:!1,outlineWidth:1,constantPressure:!0,options:{smoothing:.4,thinning:-.5,streamline:.4,easing:"linear",start:{taper:5,cap:!1,easing:"linear"},end:{taper:5,cap:!1,easing:"linear"}}}},fountain:{type:"fountain",freedrawOnly:!1,strokeColor:"#000000",backgroundColor:"transparent",fillStyle:"hachure",strokeWidth:2,roughness:0,penOptions:{highlighter:!1,constantPressure:!1,hasOutline:!1,outlineWidth:1,options:{smoothing:.2,thinning:.6,streamline:.2,easing:"easeInOutSine",start:{taper:150,cap:!0,easing:"linear"},end:{taper:1,cap:!0,easing:"linear"}}}},marker:{type:"marker",freedrawOnly:!0,strokeColor:"#B83E3E",backgroundColor:"#FF7C7C",fillStyle:"dashed",strokeWidth:2,roughness:3,penOptions:{highlighter:!1,constantPressure:!0,hasOutline:!0,outlineWidth:4,options:{thinning:1,smoothing:.5,streamline:.5,easing:"linear",start:{taper:0,cap:!0,easing:"linear"},end:{taper:0,cap:!0,easing:"linear"}}}},"thick-thin":{type:"thick-thin",freedrawOnly:!0,strokeColor:"#CECDCC",backgroundColor:"transparent",fillStyle:"hachure",strokeWidth:0,roughness:null,penOptions:{highlighter:!0,constantPressure:!0,hasOutline:!1,outlineWidth:1,options:{thinning:1,smoothing:.5,streamline:.5,easing:"linear",start:{taper:0,cap:!0,easing:"linear"},end:{cap:!0,taper:!0,easing:"linear"}}}},"thin-thick-thin":{type:"thin-thick-thin",freedrawOnly:!0,strokeColor:"#CECDCC",backgroundColor:"transparent",fillStyle:"hachure",strokeWidth:0,roughness:null,penOptions:{highlighter:!0,constantPressure:!0,hasOutline:!1,outlineWidth:1,options:{thinning:1,smoothing:.5,streamline:.5,easing:"linear",start:{cap:!0,taper:!0,easing:"linear"},end:{cap:!0,taper:!0,easing:"linear"}}}}},EASINGFUNCTIONS={linear:"linear",easeInQuad:"easeInQuad",easeOutQuad:"easeOutQuad",easeInOutQuad:"easeInOutQuad",easeInCubic:"easeInCubic",easeOutCubic:"easeOutCubic",easeInOutCubic:"easeInOutCubic",easeInQuart:"easeInQuart",easeOutQuart:"easeOutQuart",easeInOutQuart:"easeInOutQuart",easeInQuint:"easeInQuint",easeOutQuint:"easeOutQuint",easeInOutQuint:"easeInOutQuint",easeInSine:"easeInSine",easeOutSine:"easeOutSine",easeInOutSine:"easeInOutSine",easeInExpo:"easeInExpo",easeOutExpo:"easeOutExpo",easeInOutExpo:"easeInOutExpo",easeInCirc:"easeInCirc",easeOutCirc:"easeOutCirc",easeInOutCirc:"easeInOutCirc",easeInBack:"easeInBack",easeOutBack:"easeOutBack",easeInOutBack:"easeInOutBack",easeInElastic:"easeInElastic",easeOutElastic:"easeOutElastic",easeInOutElastic:"easeInOutElastic",easeInBounce:"easeInBounce",easeOutBounce:"easeOutBounce",easeInOutBounce:"easeInOutBounce"};class PenSettingsModal extends obsidian_module.Modal{constructor(e,t,n){super(app),this.plugin=e,this.view=t,this.pen=n,this.dirty=!1,this.api=t.excalidrawAPI}onOpen(){this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText("Pen Settings"),this.createForm()}async onClose(){if(this.dirty){app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinnedCustomPens()})),this.plugin.saveSettings();const e=this.plugin.settings.customPens[this.pen],t=this.view.excalidrawAPI;setPen(e,t),t.setActiveTool({type:"freedraw"})}}async createForm(){const e=e=>{let t="";if(COLOR_NAMES.has(e))return[COLOR_NAMES.get(e),t];const n=(new Option).style;if(n.color=e,n.color){const e=n.color.match(/^[^\d]*(\d*)[^\d]*(\d*)[^\d]*(\d*)[^\d]*([\d\.]*)?/);return e?(t=e[4]?(Math.round(255*parseFloat(e[4]))<<0).toString(16).padStart(2,"0"):"",[`#${(parseInt(e[1])<<0).toString(16).padStart(2,"0")}${(parseInt(e[2])<<0).toString(16).padStart(2,"0")}${(parseInt(e[3])<<0).toString(16).padStart(2,"0")}`,t]):[null,t]}return[null,t]},t=this.plugin.settings.customPens[this.pen],n=this.contentEl;let r,i,o,a,s;n.createEl("h1",{text:"Pen settings"}),new obsidian_module.Setting(n).setName("Pen type").setDesc("Select type of pen").addDropdown((e=>{e.addOption("default","Excalidraw Default").addOption("highlighter","Highlighter").addOption("finetip","Fine tip pen").addOption("fountain","Fountain pen").addOption("marker","Marker with Outline").addOption("thick-thin","Mindmap Thick-Thin").addOption("thin-thick-thin","Mindmap Thin-Thick-Thin").setValue(t.type).onChange((e=>{this.dirty=!0,t.type=e}))})).addButton((e=>e.setButtonText("Apply").onClick((()=>{this.dirty=!0,t.strokeColor=PENS[t.type].strokeColor,t.backgroundColor=PENS[t.type].backgroundColor,t.fillStyle=PENS[t.type].fillStyle,t.strokeWidth=PENS[t.type].strokeWidth,t.roughness=PENS[t.type].roughness,t.penOptions=Object.assign({},PENS[t.type].penOptions),n.empty(),this.createForm()})))),r=new obsidian_module.Setting(n).setName(fragWithHTML(t.freedrawOnly?"Stroke & fill applies to: <b>Freedraw only</b>":"Stroke & fill applies to: <b>All shapes</b>")).setDesc(fragWithHTML('<b>"All shapes"</b> means that if for example, you select a blue pen with dashed fill and then switch to a different tool (e.g. to a line, a circle, an arrow - i.e. not the freedraw tool), those will all have the same blue line and dashed fill.<br><b>"Only applies to the freedraw line"</b> means that if for example you are writing black text, and you select a custom pen (e.g. a yellow highlighter), then after using the highlighter you switch to another tool, the previous settings (e.g. black stroke color) will apply to the new shape.')).addToggle((e=>e.setValue(t.freedrawOnly).onChange((e=>{this.dirty=!0,r.setName(fragWithHTML(e?"Stroke & fill applies to: <b>Freedraw only</b>":"Stroke & fill applies to: <b>All shapes</b>")),t.freedrawOnly=e}))));let l,c,T,Q,d,u,p,[h,m]=e(t.strokeColor),f=!1;s=new obsidian_module.Setting(n).setName(fragWithHTML(Boolean(t.strokeColor)?"Stroke color: <b>Preset color</b>":"Stroke color: <b>Current</b>")).setDesc(fragWithHTML("Use <b>current</b> stroke color of the canvas, or set a specific <b>preset color</b> for the pen")).addToggle((n=>n.setValue(!Boolean(t.strokeColor)).onChange((n=>{this.dirty=!0,i.settingEl.style.display=n?"none":"",s.setName(fragWithHTML(n?"Stroke color: <b>Current</b>":"Stroke color: <b>Preset color</b>")),n?delete t.strokeColor:(a.getValue()||([h,m]=e("black"),o.setValue(h),a.setValue("black")),t.strokeColor=a.getValue())})))),i=new obsidian_module.Setting(n).setName("Select stroke color").addButton((n=>n.setButtonText("Use Canvas Current").onClick((()=>{var n,r;const i=this.api.getAppState(),s=null!==(r=null===(n=i.resetCustomPen)||void 0===n?void 0:n.currentItemStrokeColor)&&void 0!==r?r:i.currentItemStrokeColor;[h,m]=e(s),t.strokeColor=s,this.dirty=!0,a.setValue(s),f=!0,o.setValue(h)})))).addText((n=>{a=n,n.setValue(t.strokeColor).onChange((n=>{f=!0,this.dirty=!0,t.strokeColor=n,[h,m]=e(n),h&&o.setValue(h)}))})).addColorPicker((e=>{o=e,e.setValue(null!=h?h:"#000000").onChange((e=>{f?f=!1:(this.dirty=!0,t.strokeColor=e+m,a.setValue(e+m))}))})),i.settingEl.style.display=Boolean(t.strokeColor)?"":"none";let[g,b]=e(t.backgroundColor);l=new obsidian_module.Setting(n).setName(fragWithHTML(Boolean(t.backgroundColor)?"Background color: <b>Preset color</b>":"Background color: <b>Current</b>")).setDesc(fragWithHTML("Toggle to use the <b>current background color</b> of the canvas; or a <b>preset color</b>")).addToggle((n=>n.setValue(!Boolean(t.backgroundColor)).onChange((n=>{this.dirty=!0,l.setName(fragWithHTML(n?"Background color: <b>Current</b>":"Background color: <b>Preset color</b>")),T.settingEl.style.display=n?"none":"",c.settingEl.style.display=n||"transparent"===t.backgroundColor?"none":"",n?delete t.backgroundColor:(d.getValue()||([g,b]=e("black"),Q.setValue(g),d.setValue("black")),u.setValue(!1))})))),T=new obsidian_module.Setting(n).setName(fragWithHTML("transparent"===t.backgroundColor?"Background: <b>Transparent</b>":"Color: <b>Preset color</b>")).setDesc("Background has color or is transparent").addToggle((e=>{u=e,e.setValue("transparent"===t.backgroundColor).onChange((e=>{this.dirty=!0,c.settingEl.style.display=e?"none":"",p.settingEl.style.display=e?"none":"",T.setName(fragWithHTML(e?"Background: <b>Transparent</b>":"Color: <b>Preset color</b>")),t.backgroundColor=e?"transparent":Q.getValue()}))})),T.settingEl.style.display=Boolean(t.backgroundColor)?"":"none";let y,L,v,w,E,_,M,x,H,S=!1;c=new obsidian_module.Setting(n).setName("Background color").addButton((n=>n.setButtonText("Use Canvas Current").onClick((()=>{var n,r;const i=this.api.getAppState(),o=null!==(r=null===(n=i.resetCustomPen)||void 0===n?void 0:n.currentItemBackgroundColor)&&void 0!==r?r:i.currentItemBackgroundColor;[g,b]=e(o),t.backgroundColor=o,this.dirty=!0,d.setValue(o),S=!0,Q.setValue(g)})))).addText((n=>{d=n,n.setValue(t.backgroundColor).onChange((n=>{S=!0,this.dirty=!0,t.backgroundColor=n,[g,b]=e(n),g&&Q.setValue(g)}))})).addColorPicker((e=>{Q=e,e.setValue(null!=g?g:"#000000").onChange((e=>{S?S=!1:(this.dirty=!0,t.backgroundColor=e+b,d.setValue(e+b))}))})),c.settingEl.style.display=Boolean(t.backgroundColor)&&"transparent"!==t.backgroundColor?"":"none",p=new obsidian_module.Setting(n).setName("Fill Style").addDropdown((e=>e.addOption("","Unset").addOption("dots","Dots (⚠ VERY SLOW performance on large objects!)").addOption("zigzag","Zigzag").addOption("zigzag-line","Zigzag-line").addOption("dashed","Dashed").addOption("hachure","Hachure").addOption("cross-hatch","Cross-hatch").addOption("solid","Solid").setValue(t.fillStyle).onChange((e=>{this.dirty=!0,t.fillStyle=e})))),p.settingEl.style.display=Boolean(t.backgroundColor)&&"transparent"!==t.backgroundColor?"":"none",y=new obsidian_module.Setting(n).setName(fragWithHTML(`Sloppiness: <b>${null===t.roughness?"Not Set":t.roughness<=.5?"Architect (":t.roughness<=1.5?"Artist (":"Cartoonist ("}${null===t.roughness?"":`${t.roughness})`}</b>`)).setDesc("Line sloppiness of the shape fill pattern").addSlider((e=>e.setLimits(-.5,3,.5).setValue(null===t.roughness?-.5:t.roughness).onChange((e=>{this.dirty=!0,t.roughness=-.5===e?null:e,y.setName(fragWithHTML(`Sloppiness: <b>${null===t.roughness?"Not Set":t.roughness<=.5?"Architect (":t.roughness<=1.5?"Artist (":"Cartoonist ("}${null===t.roughness?"":`${t.roughness})`}</b>`))})))),L=new obsidian_module.Setting(n).setName(fragWithHTML(`Stroke Width <b>${0===t.strokeWidth?"Not Set":t.strokeWidth}</b>`)).addSlider((e=>e.setLimits(0,5,.5).setValue(t.strokeWidth).onChange((e=>{this.dirty=!0,t.strokeWidth=e,L.setName(fragWithHTML(`Stroke Width <b>${0===t.strokeWidth?"Not Set":t.strokeWidth}</b>`))})))),new obsidian_module.Setting(n).setName("Highlighter pen?").addToggle((e=>e.setValue(t.penOptions.highlighter).onChange((e=>{this.dirty=!0,t.penOptions.highlighter=e})))),new obsidian_module.Setting(n).setName("Pressure sensitive pen?").setDesc(fragWithHTML("<b>toggle on</b>: pressure sensitive<br><b>toggle off</b>: constant pressure")).addToggle((e=>e.setValue(!t.penOptions.constantPressure).onChange((e=>{this.dirty=!0,t.penOptions.constantPressure=!e,v.settingEl.style.display=t.penOptions.constantPressure?"none":""})))),t.penOptions.hasOutline&&0===t.penOptions.outlineWidth&&(t.penOptions.outlineWidth=.5,this.dirty=!0),!t.penOptions.hasOutline&&t.penOptions.outlineWidth>0&&(t.penOptions.outlineWidth=0,this.dirty=!0),w=new obsidian_module.Setting(n).setName(fragWithHTML(0===t.penOptions.outlineWidth?"No outline":`Outline width <b>${t.penOptions.outlineWidth}</b>`)).setDesc("If the stroke has an outline, this will mean the stroke color is the outline color, and the background color is the pen stroke's fill color. If the pen does not have an outline then the pen color is the stroke color. The Fill Style setting applies to the fill style of the enclosed shape, not of the line itself. The line can only have solid fill.").addSlider((e=>e.setLimits(0,8,.5).setValue(t.penOptions.outlineWidth).onChange((e=>{this.dirty=!0,t.penOptions.outlineWidth=e,t.penOptions.hasOutline=e>0,w.setName(fragWithHTML(0===t.penOptions.outlineWidth?"No outline":`Outline width <b>${t.penOptions.outlineWidth}</b>`))})))),n.createEl("h2",{text:"Perfect Freehand settings"}),n.createEl("p").innerHTML='Read the Perfect Freehand documentation following <a href="https://github.com/steveruizok/perfect-freehand#documentation" target="_blank">this link</a>.',E=new obsidian_module.Setting(n).setName(fragWithHTML(`Thinnning <b>${t.penOptions.options.thinning}</b>`)).setDesc(fragWithHTML("The effect of pressure on the stroke's size.<br>To create a stroke with a steady line, set the thinning option to 0.<br>To create a stroke that gets thinner with pressure instead of thicker, use a negative number for the thinning option.")).addSlider((e=>e.setLimits(-1,1,.05).setValue(t.penOptions.options.thinning).onChange((e=>{this.dirty,E.setName(fragWithHTML(`Thinnning <b>${e}</b>`)),t.penOptions.options.thinning=e})))),_=new obsidian_module.Setting(n).setName(fragWithHTML(`Smoothing <b>${t.penOptions.options.smoothing}</b>`)).setDesc(fragWithHTML("How much to soften the stroke's edges.")).addSlider((e=>e.setLimits(0,1,.05).setValue(t.penOptions.options.smoothing).onChange((e=>{this.dirty,_.setName(fragWithHTML(`Smoothing <b>${e}</b>`)),t.penOptions.options.smoothing=e})))),M=new obsidian_module.Setting(n).setName(fragWithHTML(`Streamline <b>${t.penOptions.options.streamline}</b>`)).setDesc(fragWithHTML("\tHow much to streamline the stroke.")).addSlider((e=>e.setLimits(0,1,.05).setValue(t.penOptions.options.streamline).onChange((e=>{this.dirty,M.setName(fragWithHTML(`Streamline <b>${e}</b>`)),t.penOptions.options.streamline=e})))),new obsidian_module.Setting(n).setName("Easing function").setDesc(fragWithHTML('An easing function for the tapering effect. For more info <a href="https://easings.net/#" target="_blank">click here</a>')).addDropdown((e=>e.addOptions(EASINGFUNCTIONS).setValue(t.penOptions.options.easing).onChange((e=>{this.dirty=!0,t.penOptions.options.easing=e})))),v=new obsidian_module.Setting(n).setName("Simulate Pressure").setDesc("Whether to simulate pressure based on velocity.").addDropdown((e=>e.addOption("true","Always").addOption("false","Never").addOption("","Yes for mouse, No for pen").setValue(!0===t.penOptions.options.simulatePressure?"true":!1===t.penOptions.options.simulatePressure?"false":"").onChange((e=>{switch(this.dirty=!0,e){case"true":t.penOptions.options.simulatePressure=!0;break;case"false":t.penOptions.options.simulatePressure=!1;break;default:delete t.penOptions.options.simulatePressure}})))),v.settingEl.style.display=t.penOptions.constantPressure?"none":"",n.createEl("h3",{text:"Start"}),n.createEl("p",{text:"Tapering options for the start of the line."}),new obsidian_module.Setting(n).setName("Cap Start").setDesc("Whether to draw a cap").addToggle((e=>e.setValue(t.penOptions.options.start.cap).onChange((e=>{this.dirty=!0,t.penOptions.options.start.cap=e})))),x=new obsidian_module.Setting(n).setName(fragWithHTML(`Taper: <b>${!0===t.penOptions.options.start.taper?"true":t.penOptions.options.start.taper}</b>`)).setDesc("The distance to taper. If set to true, the taper will be the total length of the stroke.").addSlider((e=>e.setLimits(0,151,1).setValue("boolean"==typeof t.penOptions.options.start.taper?151:t.penOptions.options.start.taper).onChange((e=>{this.dirty,t.penOptions.options.start.taper=151===e||e,x.setName(fragWithHTML(`Taper: <b>${!0===t.penOptions.options.start.taper?"true":t.penOptions.options.start.taper}</b>`))})))),new obsidian_module.Setting(n).setName("Easing function").setDesc(fragWithHTML('An easing function for the tapering effect. For more info <a href="https://easings.net/#" target="_blank">click here</a>')).addDropdown((e=>e.addOptions(EASINGFUNCTIONS).setValue(t.penOptions.options.start.easing).onChange((e=>{this.dirty=!0,t.penOptions.options.start.easing=e})))),n.createEl("h3",{text:"End"}),n.createEl("p",{text:"Tapering options for the end of the line."}),new obsidian_module.Setting(n).setName("Cap End").setDesc("Whether to draw a cap").addToggle((e=>e.setValue(t.penOptions.options.end.cap).onChange((e=>{this.dirty=!0,t.penOptions.options.end.cap=e})))),H=new obsidian_module.Setting(n).setName(fragWithHTML(`Taper: <b>${!0===t.penOptions.options.end.taper?"true":t.penOptions.options.end.taper}</b>`)).setDesc("The distance to taper. If set to true, the taper will be the total length of the stroke.").addSlider((e=>e.setLimits(0,151,1).setValue("boolean"==typeof t.penOptions.options.end.taper?151:t.penOptions.options.end.taper).onChange((e=>{this.dirty,t.penOptions.options.end.taper=151===e||e,H.setName(fragWithHTML(`Taper: <b>${!0===t.penOptions.options.end.taper?"true":t.penOptions.options.end.taper}</b>`))})))),new obsidian_module.Setting(n).setName("Easing function").setDesc(fragWithHTML('An easing function for the tapering effect. For more info <a href="https://easings.net/#" target="_blank">click here</a>')).addDropdown((e=>e.addOptions(EASINGFUNCTIONS).setValue(t.penOptions.options.end.easing).onChange((e=>{this.dirty=!0,t.penOptions.options.end.easing=e}))))}}var defaultAttributes={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const toKebabCase=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),createLucideIcon=(e,t)=>{const n=React.forwardRef((({color:n="currentColor",size:r=24,strokeWidth:i=2,absoluteStrokeWidth:o,children:a,...s},l)=>React.createElement("svg",{ref:l,...defaultAttributes,width:r,height:r,stroke:n,strokeWidth:o?24*Number(i)/Number(r):i,className:`lucide lucide-${toKebabCase(e)}`,...s},[...t.map((([e,t])=>React.createElement(e,t))),...(Array.isArray(a)?a:[a])||[]])));return n.displayName=`${e}`,n};var createLucideIcon$1=createLucideIcon;const Copy=createLucideIcon$1("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]),Crop=createLucideIcon$1("Crop",[["path",{d:"M6 2v14a2 2 0 0 0 2 2h14",key:"ron5a4"}],["path",{d:"M18 22V8a2 2 0 0 0-2-2H2",key:"7s9ehn"}]]),Globe=createLucideIcon$1("Globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"2",x2:"22",y1:"12",y2:"12",key:"1dnqot"}],["path",{d:"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z",key:"nb9nel"}]]),RotateCcw=createLucideIcon$1("RotateCcw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]),Scan=createLucideIcon$1("Scan",[["path",{d:"M3 7V5a2 2 0 0 1 2-2h2",key:"aa7l1z"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2",key:"4qcy5o"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2",key:"6vwrx8"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2",key:"ioqczr"}]]),Settings=createLucideIcon$1("Settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]),TextSelect=createLucideIcon$1("TextSelect",[["path",{d:"M5 3a2 2 0 0 0-2 2",key:"y57alp"}],["path",{d:"M19 3a2 2 0 0 1 2 2",key:"18rm91"}],["path",{d:"M21 19a2 2 0 0 1-2 2",key:"1j7049"}],["path",{d:"M5 21a2 2 0 0 1-2-2",key:"sbafld"}],["path",{d:"M9 3h1",key:"1yesri"}],["path",{d:"M9 21h1",key:"15o7lz"}],["path",{d:"M14 3h1",key:"1ec4yj"}],["path",{d:"M14 21h1",key:"v9vybs"}],["path",{d:"M3 9v1",key:"1r0deq"}],["path",{d:"M21 9v1",key:"mxsmne"}],["path",{d:"M3 14v1",key:"vnatye"}],["path",{d:"M21 14v1",key:"169vum"}],["line",{x1:"7",x2:"15",y1:"8",y2:"8",key:"1758g8"}],["line",{x1:"7",x2:"17",y1:"12",y2:"12",key:"197423"}],["line",{x1:"7",x2:"13",y1:"16",y2:"16",key:"37cgm6"}]]),ICONS={ExportImage:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("g",{strokeWidth:"1.25"},React__namespace.createElement("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),React__namespace.createElement("path",{d:"M15 8h.01"}),React__namespace.createElement("path",{d:"M12 20h-5a3 3 0 0 1 -3 -3v-10a3 3 0 0 1 3 -3h10a3 3 0 0 1 3 3v5"}),React__namespace.createElement("path",{d:"M4 15l4 -4c.928 -.893 2.072 -.893 3 0l4 4"}),React__namespace.createElement("path",{d:"M14 14l1 -1c.617 -.593 1.328 -.793 2.009 -.598"}),React__namespace.createElement("path",{d:"M19 16v6"}),React__namespace.createElement("path",{d:"M22 19l-3 3l-3 -3"}))),BackOfNote:React__namespace.createElement(TextSelect,null),Reload:React__namespace.createElement(RotateCcw,null),Copy:React__namespace.createElement(Copy,null),Globe:React__namespace.createElement(Globe,null),Crop:React__namespace.createElement(Crop,null),ZoomToSelectedElement:React__namespace.createElement(Scan,null),Properties:React__namespace.createElement(Settings,null),ZoomToSection:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"1",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("text",{x:"6",y:"18",fontSize:"22px"},"#")),ZoomToBlock:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"1",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("text",{x:"1",y:"18",fontSize:"22px"},"#^")),Discord:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"var(--icon-fill-color)",stroke:"none",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",viewBox:"0 0 640 512"},React__namespace.createElement("path",{d:"M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z"})),Github:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"}),React__namespace.createElement("path",{d:"M9 18c-4.51 2-5-2-7-2"})),YouTube:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M12 19c-2.3 0-6.4-.2-8.1-.6-.7-.2-1.2-.7-1.4-1.4-.3-1.1-.5-3.4-.5-5s.2-3.9.5-5c.2-.7.7-1.2 1.4-1.4C5.6 5.2 9.7 5 12 5s6.4.2 8.1.6c.7.2 1.2.7 1.4 1.4.3 1.1.5 3.4.5 5s-.2 3.9-.5 5c-.2.7-.7 1.2-1.4 1.4-1.7.4-5.8.6-8.1.6 0 0 0 0 0 0z"}),React__namespace.createElement("polygon",{points:"10 15 15 12 10 9"})),heart:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M20.42 4.58a5.4 5.4 0 0 0-7.65 0l-.77.78-.77-.78a5.4 5.4 0 0 0-7.65 0C1.46 6.7 1.33 10.28 4 13l8 8 8-8c2.67-2.72 2.54-6.3.42-8.42z"})),twitter:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z"})),exportLibrary:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 200 190",fill:"var(--icon-fill-color)"},React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M50 10h20v20H50"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M50 10h20m-20 0h20m0 0v20m0-20v20m0 0H50m20 0H50m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M90 10h20v20H90"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M90 10h20m-20 0h20m0 0v20m0-20v20m0 0H90m20 0H90m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M130 10h20v20h-20"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M130 10h20m-20 0h20m0 0v20m0-20v20m0 0h-20m20 0h-20m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M170 10h20v20h-20"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M170 10h20m-20 0h20m0 0v20m0-20v20m0 0h-20m20 0h-20m0 0V10m0 20V10"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M70 50h60v80h20l-50 50-50-50h20V50"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M70 50h60m-60 0h60m0 0v80m0-80v80m0 0h20m-20 0h20m0 0-50 50m50-50-50 50m0 0-50-50m50 50-50-50m0 0h20m-20 0h20m0 0V50m0 80V50m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillRule:"evenodd"},React__namespace.createElement("path",{strokeWidth:"0",d:"M10 10h20v20H10"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M10 10h20m-20 0h20m0 0v20m0-20v20m0 0H10m20 0H10m0 0V10m0 20V10"}))),insertPDF:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",fill:"var(--icon-fill-color)",stroke:"none"},React__namespace.createElement("path",{d:"M64 464H96v48H64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V288H336V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16zM176 352h32c30.9 0 56 25.1 56 56s-25.1 56-56 56H192v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V448 368c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24H192v48h16zm96-80h32c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H304c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H320v96h16zm80-112c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v32h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V432 368z"})),insertImage:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",fill:"var(--icon-fill-color)",stroke:"none"},React__namespace.createElement("path",{d:"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 336H54a6 6 0 0 1-6-6V118a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v276a6 6 0 0 1-6 6zM128 152c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zM96 352h320v-80l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L192 304l-39.515-39.515c-4.686-4.686-12.284-4.686-16.971 0L96 304v48z"})),insertMD:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 384 512",fill:"var(--icon-fill-color)",stroke:"none"},React__namespace.createElement("path",{d:"M288 248v28c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm-12 72H108c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12zm108-188.1V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h204.1C264.8 0 277 5.1 286 14.1L369.9 98c9 8.9 14.1 21.2 14.1 33.9zm-128-80V128h76.1L256 51.9zM336 464V176H232c-13.3 0-24-10.7-24-24V48H48v416h288z"})),insertLaTeX:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512",stroke:"none",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z"})),insertLink:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",stroke:"none",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"})),search:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M500.3 443.7l-119.7-119.7c27.22-40.41 40.65-90.9 33.46-144.7C401.8 87.79 326.8 13.32 235.2 1.723C99.01-15.51-15.51 99.01 1.724 235.2c11.6 91.64 86.08 166.7 177.6 178.9c53.8 7.189 104.3-6.236 144.7-33.46l119.7 119.7c15.62 15.62 40.95 15.62 56.57 0C515.9 484.7 515.9 459.3 500.3 443.7zM79.1 208c0-70.58 57.42-128 128-128s128 57.42 128 128c0 70.58-57.42 128-128 128S79.1 278.6 79.1 208z"})),ocr:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"m6 18 6-12 6 12"}),React__namespace.createElement("path",{d:"M8 14h8"}),React__namespace.createElement("path",{d:"M3 7V5a2 2 0 0 1 2-2h2"}),React__namespace.createElement("path",{d:"M17 3h2a2 2 0 0 1 2 2v2"}),React__namespace.createElement("path",{d:"M21 17v2a2 2 0 0 1-2 2h-2"}),React__namespace.createElement("path",{d:"M7 21H5a2 2 0 0 1-2-2v-2"})),scriptEngine:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 100",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeLinecap:"round",strokeWidth:"4"},React__namespace.createElement("g",{transform:"translate(-8,-8)"},React__namespace.createElement("path",{d:"M24.318 37.983c-1.234-1.232-8.433-3.903-7.401-7.387 1.057-3.484 9.893-12.443 13.669-13.517 3.776-1.074 6.142 6.523 9.012 7.073 2.87.55 6.797-1.572 8.207-3.694 1.384-2.148-3.147-7.413.15-9.168 3.298-1.755 16.389-2.646 19.611-1.284 3.247 1.363-1.611 7.335-.151 9.483 1.46 2.148 6.067 3.746 8.836 3.38 2.769-.368 4.154-6.733 7.728-5.633 3.575 1.1 12.36 8.828 13.67 12.233 1.308 3.406-5.186 5.423-5.79 8.2-.58 2.75-.026 6.705 2.265 8.355 2.266 1.65 9.642-1.78 11.404 1.598 1.762 3.38 1.007 15.35-.806 18.651-1.787 3.353-7.753-.367-9.969 1.31-2.215 1.65-3.901 5.92-3.373 8.67.504 2.777 7.754 4.48 6.445 7.885C96.49 87.543 87.15 95.454 83.5 96.685c-3.65 1.231-4.96-4.741-7.577-5.16-2.593-.393-6.57.707-8.03 2.75-1.436 2.017 2.668 7.806-.63 9.483-3.323 1.676-15.759 2.226-19.157.655-3.373-1.598.554-7.964-1.108-10.138-1.687-2.174-6.394-3.431-9.012-2.907-2.643.55-3.273 7.282-6.747 6.103-3.499-1.126-12.788-9.535-14.172-13.019-1.36-3.484 5.437-5.108 5.966-7.858.529-2.777-.68-7.073-2.744-8.697-2.064-1.624-7.93 2.41-9.642-1.126-1.737-3.537-2.441-16.765-.654-20.118 1.787-3.3 9.062 1.598 11.429.183 2.366-1.44 2.316-7.282 2.769-8.749m.126-.104c-1.234-1.232-8.433-3.903-7.401-7.387 1.057-3.484 9.893-12.443 13.669-13.517 3.776-1.074 6.142 6.523 9.012 7.073 2.87.55 6.797-1.572 8.207-3.694 1.384-2.148-3.147-7.413.15-9.168 3.298-1.755 16.389-2.646 19.611-1.284 3.247 1.363-1.611 7.335-.151 9.483 1.46 2.148 6.067 3.746 8.836 3.38 2.769-.368 4.154-6.733 7.728-5.633 3.575 1.1 12.36 8.828 13.67 12.233 1.308 3.406-5.186 5.423-5.79 8.2-.58 2.75-.026 6.705 2.265 8.355 2.266 1.65 9.642-1.78 11.404 1.598 1.762 3.38 1.007 15.35-.806 18.651-1.787 3.353-7.753-.367-9.969 1.31-2.215 1.65-3.901 5.92-3.373 8.67.504 2.777 7.754 4.48 6.445 7.885C96.49 87.543 87.15 95.454 83.5 96.685c-3.65 1.231-4.96-4.741-7.577-5.16-2.593-.393-6.57.707-8.03 2.75-1.436 2.017 2.668 7.806-.63 9.483-3.323 1.676-15.759 2.226-19.157.655-3.373-1.598.554-7.964-1.108-10.138-1.687-2.174-6.394-3.431-9.012-2.907-2.643.55-3.273 7.282-6.747 6.103-3.499-1.126-12.788-9.535-14.172-13.019-1.36-3.484 5.437-5.108 5.966-7.858.529-2.777-.68-7.073-2.744-8.697-2.064-1.624-7.93 2.41-9.642-1.126-1.737-3.537-2.441-16.765-.654-20.118 1.787-3.3 9.062 1.598 11.429.183 2.366-1.44 2.316-7.282 2.769-8.749",fill:"none",strokeWidth:"2"}),React__namespace.createElement("path",{d:"M81.235 56.502a23.3 23.3 0 0 1-1.46 8.068 20.785 20.785 0 0 1-1.762 3.72 24.068 24.068 0 0 1-5.337 6.26 22.575 22.575 0 0 1-3.449 2.358 23.726 23.726 0 0 1-7.803 2.803 24.719 24.719 0 0 1-8.333 0 24.102 24.102 0 0 1-4.028-1.074 23.71 23.71 0 0 1-3.776-1.729 23.259 23.259 0 0 1-6.369-5.265 23.775 23.775 0 0 1-2.416-3.353 24.935 24.935 0 0 1-1.762-3.72 23.765 23.765 0 0 1-1.083-3.981 23.454 23.454 0 0 1 0-8.173c.252-1.336.604-2.698 1.083-3.956a24.935 24.935 0 0 1 1.762-3.72 22.587 22.587 0 0 1 2.416-3.378c.881-1.048 1.888-2.017 2.946-2.908a24.38 24.38 0 0 1 3.423-2.357 23.71 23.71 0 0 1 3.776-1.73 21.74 21.74 0 0 1 4.028-1.047 23.437 23.437 0 0 1 8.333 0 24.282 24.282 0 0 1 7.803 2.777 26.198 26.198 0 0 1 3.45 2.357 24.62 24.62 0 0 1 5.336 6.287 20.785 20.785 0 0 1 1.762 3.72 21.32 21.32 0 0 1 1.083 3.955c.251 1.336.302 3.405.377 4.086.05.681.05-.68 0 0",fill:"none"}),React__namespace.createElement("path",{d:"M69.404 56.633c-6.596-3.3-13.216-6.6-19.51-9.744m19.51 9.744c-6.747-3.379-13.493-6.758-19.51-9.744m0 0v19.489m0-19.49v19.49m0 0c4.355-2.148 8.71-4.322 19.51-9.745m-19.51 9.745c3.978-1.965 7.93-3.956 19.51-9.745m0 0h0m0 0h0"}))),openLink:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v7"}),React__namespace.createElement("polyline",{points:"14 2 14 8 20 8"}),React__namespace.createElement("path",{d:"m10 18 3-3-3-3"}),React__namespace.createElement("path",{d:"M4 18v-1a2 2 0 0 1 2-2h6"})),openLinkProperties:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v7"}),React__namespace.createElement("polyline",{points:"14 2 14 8 20 8",fill:"var(--icon-fill-color)"}),React__namespace.createElement("path",{d:"m10 18 3-3-3-3"}),React__namespace.createElement("path",{d:"M4 18v-1a2 2 0 0 1 2-2h6"})),switchToMarkdown:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512",stroke:"var(--icon-fill-color)",strokeWidth:"10",fill:"var(--icon-fill-color)"},React__namespace.createElement("path",{d:"M593.8 59.1H46.2C20.7 59.1 0 79.8 0 105.2v301.5c0 25.5 20.7 46.2 46.2 46.2h547.7c25.5 0 46.2-20.7 46.1-46.1V105.2c0-25.4-20.7-46.1-46.2-46.1zM338.5 360.6H277v-120l-61.5 76.9-61.5-76.9v120H92.3V151.4h61.5l61.5 76.9 61.5-76.9h61.5v209.2zm135.3 3.1L381.5 256H443V151.4h61.5V256H566z"})),gotoFullScreen:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M128 32H32C14.31 32 0 46.31 0 64v96c0 17.69 14.31 32 32 32s32-14.31 32-32V96h64c17.69 0 32-14.31 32-32S145.7 32 128 32zM416 32h-96c-17.69 0-32 14.31-32 32s14.31 32 32 32h64v64c0 17.69 14.31 32 32 32s32-14.31 32-32V64C448 46.31 433.7 32 416 32zM128 416H64v-64c0-17.69-14.31-32-32-32s-32 14.31-32 32v96c0 17.69 14.31 32 32 32h96c17.69 0 32-14.31 32-32S145.7 416 128 416zM416 320c-17.69 0-32 14.31-32 32v64h-64c-17.69 0-32 14.31-32 32s14.31 32 32 32h96c17.69 0 32-14.31 32-32v-96C448 334.3 433.7 320 416 320z"})),exitFullScreen:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M128 320H32c-17.69 0-32 14.31-32 32s14.31 32 32 32h64v64c0 17.69 14.31 32 32 32s32-14.31 32-32v-96C160 334.3 145.7 320 128 320zM416 320h-96c-17.69 0-32 14.31-32 32v96c0 17.69 14.31 32 32 32s32-14.31 32-32v-64h64c17.69 0 32-14.31 32-32S433.7 320 416 320zM320 192h96c17.69 0 32-14.31 32-32s-14.31-32-32-32h-64V64c0-17.69-14.31-32-32-32s-32 14.31-32 32v96C288 177.7 302.3 192 320 192zM128 32C110.3 32 96 46.31 96 64v64H32C14.31 128 0 142.3 0 160s14.31 32 32 32h96c17.69 0 32-14.31 32-32V64C160 46.31 145.7 32 128 32z"})),releaseNotes:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M0 219.2v212.5c0 14.25 11.62 26.25 26.5 27C75.32 461.2 180.2 471.3 240 511.9V245.2C181.4 205.5 79.99 194.8 29.84 192C13.59 191.1 0 203.6 0 219.2zM482.2 192c-50.09 2.848-151.3 13.47-209.1 53.09C272.1 245.2 272 245.3 272 245.5v266.5c60.04-40.39 164.7-50.76 213.5-53.28C500.4 457.9 512 445.9 512 431.7V219.2C512 203.6 498.4 191.1 482.2 192zM352 96c0-53-43-96-96-96S160 43 160 96s43 96 96 96S352 149 352 96z"})),rawMode:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 60"},React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",strokeWidth:"4",d:"M20 10H10m10 0H10m0 0v40m0-40v40m0 0h10m-10 0h10M40 10H30m10 0H30m0 0v40m0-40v40m0 0h10m-10 0h10M60 10h10m-10 0h10m0 0v40m0-40v40m0 0H60m10 0H60M80 10h10m-10 0h10m0 0v40m0-40v40m0 0H80m10 0H80"})),parsedMode:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512",stroke:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M574.1 280.4l-45.38-181.8c-5.875-23.63-21.62-44-43-55.75c-21.5-11.75-46.1-14.13-70.25-6.375l-15.25 5.125c-8.375 2.75-12.87 11.88-10 20.25l5 15.13c2.75 8.375 11.88 12.88 20.25 10.13l13.12-4.375c10.88-3.625 23-3.625 33.25 1.75c10.25 5.375 17.5 14.5 20.38 25.75l38.38 153.9c-22.12-6.875-49.75-12.5-81.13-12.5c-34.88 0-73.1 7-114.9 26.75H251.4C210.5 258.6 171.4 251.6 136.5 251.6c-31.38 0-59 5.625-81.12 12.5l38.38-153.9c2.875-11.25 10.12-20.38 20.5-25.75C124.4 79.12 136.5 79.12 147.4 82.74l13.12 4.375c8.375 2.75 17.5-1.75 20.25-10.13l5-15.13C188.6 53.49 184.1 44.37 175.6 41.62l-15.25-5.125c-23.13-7.75-48.75-5.375-70.13 6.375c-21.37 11.75-37.12 32.13-43 55.75L1.875 280.4C.6251 285.4 .0001 290.6 .0001 295.9v70.25C.0001 428.1 51.63 480 115.3 480h37.13c60.25 0 110.4-46 114.9-105.4l2.875-38.63h35.75l2.875 38.63C313.3 433.1 363.4 480 423.6 480h37.13c63.62 0 115.2-51 115.2-113.9V295.9C576 290.6 575.4 285.5 574.1 280.4zM203.4 369.7c-2 26-24.38 46.25-51 46.25H115.2C87 415.1 64 393.6 64 366.1v-37.5c18.12-6.5 43.38-13 72.62-13c23.88 0 47.25 4.375 69.88 13L203.4 369.7zM512 366.1c0 27.5-23 49.88-51.25 49.88h-37.13c-26.62 0-49-20.25-51-46.25l-3.125-41.13c22.62-8.625 46.13-13 70-13c29 0 54.38 6.5 72.5 13V366.1z"})),convertFile:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",viewBox:"0 110 700 340",xmlns:"http://www.w3.org/2000/svg",stroke:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"m593.95 239.4v-1.5742c-0.85547-1.8828-2.043-3.6016-3.5-5.0742l-52.5-52.5c-1.4688-1.457-3.1875-2.6445-5.0742-3.5h-1.5742c-1.4727-0.49219-3.0039-0.78516-4.5508-0.875h-124.25c-4.6406 0-9.0938 1.8438-12.375 5.125s-5.125 7.7344-5.125 12.375v87.5h-70v-105.88-1.0508c-0.089844-1.5469-0.38281-3.0781-0.875-4.5508v-1.5742c-0.85547-1.8828-2.043-3.6016-3.5-5.0742l-52.5-52.5c-1.4727-1.457-3.1914-2.6445-5.0742-3.5h-1.5742c-1.7031-0.875-3.5352-1.4688-5.4258-1.75h-123.55c-4.6406 0-9.0938 1.8438-12.375 5.125s-5.125 7.7344-5.125 12.375v245c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h175c4.6406 0 9.0938-1.8438 12.375-5.125s5.125-7.7344 5.125-12.375v-52.5h70v122.5c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h175c4.6406 0 9.0938-1.8438 12.375-5.125s5.125-7.7344 5.125-12.375v-192.5-1.0508c-0.14453-1.5547-0.5-3.0859-1.0508-4.5508zm-313.95 110.6h-140v-210h87.5v35c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h35v87.5h-52.5c-6.2539 0-12.031 3.3359-15.156 8.75s-3.125 12.086 0 17.5 8.9023 8.75 15.156 8.75h52.5zm140 70v-105h27.824l-5.0742 5.0742c-3.7031 3.1719-5.9141 7.7461-6.1055 12.617-0.1875 4.8711 1.668 9.6016 5.1133 13.051 3.4492 3.4453 8.1797 5.3008 13.051 5.1133 4.8711-0.19141 9.4453-2.4023 12.617-6.1055l35-35c3.2578-3.2773 5.0898-7.7148 5.0898-12.336 0-4.625-1.832-9.0586-5.0898-12.34l-35-35c-4.5078-3.8555-10.66-5.1719-16.348-3.4883-5.6875 1.6797-10.137 6.1289-11.816 11.816-1.6836 5.6914-0.37109 11.844 3.4883 16.348l5.0742 5.0742h-27.824v-69.824h87.5v35c0 4.6406 1.8438 9.0938 5.125 12.375s7.7344 5.125 12.375 5.125h35v157.5z"})),cog:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",fill:"var(--icon-fill-color)",stroke:"none"},React__namespace.createElement("path",{d:"M495.9 166.6C499.2 175.2 496.4 184.9 489.6 191.2L446.3 230.6C447.4 238.9 448 247.4 448 256C448 264.6 447.4 273.1 446.3 281.4L489.6 320.8C496.4 327.1 499.2 336.8 495.9 345.4C491.5 357.3 486.2 368.8 480.2 379.7L475.5 387.8C468.9 398.8 461.5 409.2 453.4 419.1C447.4 426.2 437.7 428.7 428.9 425.9L373.2 408.1C359.8 418.4 344.1 427 329.2 433.6L316.7 490.7C314.7 499.7 307.7 506.1 298.5 508.5C284.7 510.8 270.5 512 255.1 512C241.5 512 227.3 510.8 213.5 508.5C204.3 506.1 197.3 499.7 195.3 490.7L182.8 433.6C167 427 152.2 418.4 138.8 408.1L83.14 425.9C74.3 428.7 64.55 426.2 58.63 419.1C50.52 409.2 43.12 398.8 36.52 387.8L31.84 379.7C25.77 368.8 20.49 357.3 16.06 345.4C12.82 336.8 15.55 327.1 22.41 320.8L65.67 281.4C64.57 273.1 64 264.6 64 256C64 247.4 64.57 238.9 65.67 230.6L22.41 191.2C15.55 184.9 12.82 175.3 16.06 166.6C20.49 154.7 25.78 143.2 31.84 132.3L36.51 124.2C43.12 113.2 50.52 102.8 58.63 92.95C64.55 85.8 74.3 83.32 83.14 86.14L138.8 103.9C152.2 93.56 167 84.96 182.8 78.43L195.3 21.33C197.3 12.25 204.3 5.04 213.5 3.51C227.3 1.201 241.5 0 256 0C270.5 0 284.7 1.201 298.5 3.51C307.7 5.04 314.7 12.25 316.7 21.33L329.2 78.43C344.1 84.96 359.8 93.56 373.2 103.9L428.9 86.14C437.7 83.32 447.4 85.8 453.4 92.95C461.5 102.8 468.9 113.2 475.5 124.2L480.2 132.3C486.2 143.2 491.5 154.7 495.9 166.6V166.6zM256 336C300.2 336 336 300.2 336 255.1C336 211.8 300.2 175.1 256 175.1C211.8 175.1 176 211.8 176 255.1C176 300.2 211.8 336 256 336z"})),trayMode:React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512",stroke:"var(--icon-fill-color)",fill:"var(--icon-fill-color)",strokeWidth:"20"},React__namespace.createElement("path",{d:"M618.1 97.67c-13.02-4.375-27.45 .1562-35.72 11.16L464 266.7l-118.4-157.8c-8.266-11.03-22.64-15.56-35.72-11.16C296.8 102 288 114.2 288 128v256c0 17.69 14.33 32 32 32s32-14.31 32-32v-160l86.41 115.2c12.06 16.12 39.13 16.12 51.19 0L576 224v160c0 17.69 14.33 32 32 32s32-14.31 32-32v-256C640 114.2 631.2 102 618.1 97.67zM224 96.01H32c-17.67 0-32 14.31-32 32s14.33 32 32 32h64v223.1c0 17.69 14.33 31.99 32 31.99s32-14.3 32-31.99V160h64c17.67 0 32-14.31 32-32S241.7 96.01 224 96.01z"})),copyElementLink:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 260 260","aria-hidden":"true",focusable:"false",role:"img"},React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",fill:"none",strokeLinecap:"round",strokeWidth:"8",d:"M10 10h40m-40 0h40m0 0v40m0-40v40m0 0H10m40 0H10m0 0V10m0 40V10M210 10h40m-40 0h40m0 0v40m0-40v40m0 0h-40m40 0h-40m0 0V10m0 40V10M210 210h40m-40 0h40m0 0v40m0-40v40m0 0h-40m40 0h-40m0 0v-40m0 40v-40M10 210h40m-40 0h40m0 0v40m0-40v40m0 0H10m40 0H10m0 0v-40m0 40v-40M30 210V50m0 160V50M50 30h160M50 30h160M230 50v160m0-160v160M50 230h160m-160 0h160"}),React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",fill:"none",strokeLinecap:"round",strokeWidth:"16",d:"M110 90c-6.67 1.67-30 3.11-40 10-10 6.89-20 21.37-20 31.37S60 153.56 70 160c10 6.44 33.33 8.33 40 10m0-80c-6.67 1.67-30 3.11-40 10-10 6.89-20 21.37-20 31.37S60 153.56 70 160c10 6.44 33.33 8.33 40 10M150 90c6.67 1.67 30 3.11 40 10 10 6.89 20 21.37 20 31.37s-10 22.19-20 28.63c-10 6.44-33.33 8.33-40 10m0-80c6.67 1.67 30 3.11 40 10 10 6.89 20 21.37 20 31.37s-10 22.19-20 28.63c-10 6.44-33.33 8.33-40 10"}),React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",fill:"none",strokeLinecap:"round",strokeWidth:"16",d:"M89.868 130.198c13.36-.03 66.78-.17 80.13-.2m-80.13.2c13.36-.03 66.78-.17 80.13-.2"})),importSVG:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 526 526"},React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"var(--input-bg-color)",strokeWidth:"0",d:"m133.462 71 .33-6.54.97-6.34 1.58-6.13 2.16-5.88 2.69-5.6 3.21-5.27 3.69-4.93 4.13-4.55 4.55-4.13 4.93-3.69 5.27-3.21 5.6-2.69 5.88-2.16 6.13-1.58 6.34-.97 6.54-.33h160v128l.16 3.28.49 3.18.79 3.07 1.07 2.94 1.35 2.8 1.6 2.63 1.84 2.47 2.06 2.27 2.27 2.06 2.47 1.84 2.63 1.6 2.8 1.35 2.94 1.07 3.07.79 3.18.49 3.28.16h128v288l-.33 6.54-.97 6.34-1.58 6.13-2.16 5.88-2.69 5.6-3.21 5.27-3.69 4.93-4.13 4.55-4.55 4.13-4.93 3.69-5.27 3.21-5.6 2.69-5.88 2.16-6.13 1.58-6.34.97-6.54.33h-256l-6.54-.33-6.34-.97-6.13-1.58-5.88-2.16-5.6-2.69-5.27-3.21-4.93-3.69-4.55-4.13-4.13-4.55-3.69-4.93-3.21-5.27-2.69-5.6-2.16-5.88-1.58-6.13-.97-6.34-.33-6.54V343h174.1l-39 39-1.65 1.83-1.43 1.94-1.22 2.05-.99 2.13-.77 2.2-.55 2.25-.33 2.29-.11 2.3.11 2.3.33 2.28.55 2.24.77 2.19.99 2.12 1.22 2.04 1.43 1.93 1.65 1.81 1.83 1.64 1.94 1.42 2.05 1.2 2.13.99 2.2.76 2.25.56 2.29.33 2.3.11 2.3-.1 2.28-.33 2.24-.54 2.19-.77 2.12-.98 2.04-1.21 1.93-1.43 1.81-1.65 80-80 1.65-1.83 1.43-1.94 1.22-2.05.99-2.13.77-2.2.55-2.25.33-2.29.11-2.3-.11-2.3-.33-2.28-.55-2.24-.77-2.19-.99-2.12-1.22-2.04-1.43-1.93-1.65-1.81-80-80-1.83-1.65-1.94-1.43-2.05-1.22-2.13-.99-2.2-.77-2.25-.55-2.29-.33-2.3-.11-2.3.11-2.28.33-2.24.55-2.19.77-2.12.99-2.04 1.22-1.93 1.43-1.81 1.65-1.64 1.83-1.42 1.94-1.2 2.05-.99 2.13-.76 2.2-.56 2.25-.33 2.29-.11 2.3.1 2.3.33 2.28.54 2.24.77 2.19.98 2.12 1.21 2.04 1.43 1.93 1.65 1.81 39 39h-174.1V71"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"18",d:"M133.462 71s0 0 0 0m0 0s0 0 0 0m0 0 .33-6.54m-.33 6.54c.13-2.57.26-5.13.33-6.54m0 0c.36-2.33.72-4.67.97-6.34m-.97 6.34c.35-2.26.69-4.53.97-6.34m0 0c.51-1.99 1.03-3.98 1.58-6.13m-1.58 6.13c.4-1.56.81-3.12 1.58-6.13m0 0c.81-2.22 1.62-4.43 2.16-5.88m-2.16 5.88c.45-1.22.9-2.44 2.16-5.88m0 0c.72-1.51 1.45-3.01 2.69-5.6m-2.69 5.6c.69-1.45 1.39-2.9 2.69-5.6m0 0c.93-1.52 1.86-3.05 3.21-5.27m-3.21 5.27c.97-1.59 1.94-3.18 3.21-5.27m0 0c.86-1.15 1.71-2.29 3.69-4.93m-3.69 4.93c.78-1.04 1.56-2.08 3.69-4.93m0 0c1.53-1.69 3.07-3.38 4.13-4.55m-4.13 4.55c1.54-1.69 3.07-3.38 4.13-4.55m0 0c1.03-.93 2.06-1.87 4.55-4.13m-4.55 4.13c.98-.89 1.97-1.78 4.55-4.13m0 0c1.64-1.23 3.28-2.46 4.93-3.69m-4.93 3.69c1.72-1.29 3.45-2.58 4.93-3.69m0 0c1.11-.68 2.23-1.35 5.27-3.21m-5.27 3.21c1.5-.91 3.01-1.83 5.27-3.21m0 0c1.87-.89 3.73-1.79 5.6-2.69m-5.6 2.69c2.09-1 4.17-2.01 5.6-2.69m0 0c1.72-.64 3.44-1.27 5.88-2.16m-5.88 2.16c1.94-.72 3.89-1.43 5.88-2.16m0 0c2.3-.59 4.6-1.19 6.13-1.58m-6.13 1.58c2.32-.6 4.65-1.2 6.13-1.58m0 0c2.06-.31 4.12-.63 6.34-.97m-6.34.97c2.34-.36 4.69-.72 6.34-.97m0 0c2.05-.1 4.09-.21 6.54-.33m-6.54.33c2.06-.1 4.12-.21 6.54-.33m0 0h160m-160 0h160m0 0v128m0-128v128m0 0s0 0 0 0m0 0s0 0 0 0m0 0 .16 3.28m-.16-3.28c.06 1.16.12 2.32.16 3.28m0 0c.13.82.26 1.64.49 3.18m-.49-3.18c.18 1.13.35 2.26.49 3.18m0 0c.24.95.49 1.91.79 3.07m-.79-3.07c.28 1.1.56 2.2.79 3.07m0 0c.39 1.06.78 2.13 1.07 2.94m-1.07-2.94c.42 1.15.84 2.3 1.07 2.94m0 0c.38.79.76 1.57 1.35 2.8m-1.35-2.8c.4.82.79 1.64 1.35 2.8m0 0c.45.75.91 1.5 1.6 2.63m-1.6-2.63c.4.65.8 1.31 1.6 2.63m0 0c.56.76 1.13 1.52 1.84 2.47m-1.84-2.47c.58.79 1.17 1.57 1.84 2.47m0 0c.75.82 1.5 1.65 2.06 2.27m-2.06-2.27c.75.82 1.5 1.65 2.06 2.27m0 0c.74.66 1.47 1.33 2.27 2.06m-2.27-2.06c.89.81 1.78 1.61 2.27 2.06m0 0c.69.51 1.37 1.02 2.47 1.84m-2.47-1.84c.68.5 1.35 1.01 2.47 1.84m0 0c.81.49 1.62.99 2.63 1.6m-2.63-1.6c.74.45 1.47.9 2.63 1.6m0 0c.72.35 1.43.69 2.8 1.35m-2.8-1.35c.61.3 1.22.59 2.8 1.35m0 0c.85.31 1.69.62 2.94 1.07m-2.94-1.07c1.03.38 2.07.75 2.94 1.07m0 0c.83.22 1.67.43 3.07.79m-3.07-.79 3.07.79m0 0c1.07.16 2.14.33 3.18.49m-3.18-.49c1.2.18 2.39.36 3.18.49m0 0 3.28.16m-3.28-.16c.97.04 1.93.09 3.28.16m0 0h128m-128 0h128m0 0v288m0-288v288m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-.1 2.02-.2 4.04-.33 6.54m.33-6.54c-.13 2.52-.26 5.05-.33 6.54m0 0c-.33 2.14-.66 4.29-.97 6.34m.97-6.34c-.32 2.06-.63 4.12-.97 6.34m0 0c-.59 2.28-1.17 4.55-1.58 6.13m1.58-6.13c-.53 2.07-1.07 4.14-1.58 6.13m0 0c-.73 1.99-1.46 3.97-2.16 5.88m2.16-5.88c-.72 1.97-1.44 3.94-2.16 5.88m0 0c-.94 1.97-1.89 3.93-2.69 5.6m2.69-5.6c-.91 1.89-1.82 3.77-2.69 5.6m0 0c-.89 1.46-1.78 2.92-3.21 5.27m3.21-5.27c-.65 1.05-1.29 2.11-3.21 5.27m0 0c-1.13 1.51-2.25 3.01-3.69 4.93m3.69-4.93c-1.29 1.72-2.58 3.44-3.69 4.93m0 0c-1.29 1.42-2.58 2.84-4.13 4.55m4.13-4.55-4.13 4.55m0 0-4.55 4.13m4.55-4.13-4.55 4.13m0 0c-1.2.9-2.41 1.8-4.93 3.69m4.93-3.69-4.93 3.69m0 0c-1.56.95-3.13 1.9-5.27 3.21m5.27-3.21c-1.99 1.21-3.98 2.42-5.27 3.21m0 0c-1.8.86-3.6 1.73-5.6 2.69m5.6-2.69c-1.34.64-2.67 1.28-5.6 2.69m0 0c-2.24.82-4.48 1.65-5.88 2.16m5.88-2.16c-1.38.51-2.77 1.02-5.88 2.16m0 0c-1.46.38-2.93.76-6.13 1.58m6.13-1.58c-1.54.4-3.09.79-6.13 1.58m0 0c-2.12.32-4.24.65-6.34.97m6.34-.97c-2.47.38-4.94.75-6.34.97m0 0c-2.23.11-4.46.22-6.54.33m6.54-.33c-1.97.1-3.93.2-6.54.33m0 0h-256m256 0h-256m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-2.33-.12-4.66-.24-6.54-.33m6.54.33c-1.33-.07-2.65-.13-6.54-.33m0 0c-1.88-.29-3.77-.58-6.34-.97m6.34.97c-2.07-.32-4.14-.63-6.34-.97m0 0c-1.52-.39-3.04-.79-6.13-1.58m6.13 1.58c-2.02-.52-4.04-1.04-6.13-1.58m0 0c-1.6-.59-3.19-1.17-5.88-2.16m5.88 2.16c-1.9-.7-3.8-1.39-5.88-2.16m0 0c-1.41-.68-2.82-1.36-5.6-2.69m5.6 2.69c-1.6-.77-3.2-1.54-5.6-2.69m0 0c-1.4-.86-2.81-1.71-5.27-3.21m5.27 3.21c-2.08-1.27-4.17-2.54-5.27-3.21m0 0c-1.72-1.29-3.43-2.57-4.93-3.69m4.93 3.69c-1.79-1.34-3.57-2.67-4.93-3.69m0 0c-1.18-1.07-2.36-2.15-4.55-4.13m4.55 4.13c-1.64-1.49-3.27-2.97-4.55-4.13m0 0c-1.07-1.19-2.15-2.37-4.13-4.55m4.13 4.55c-1.46-1.61-2.93-3.23-4.13-4.55m0 0-3.69-4.93m3.69 4.93c-.88-1.17-1.76-2.35-3.69-4.93m0 0c-.83-1.37-1.67-2.75-3.21-5.27m3.21 5.27c-1.15-1.89-2.3-3.79-3.21-5.27m0 0c-1.03-2.14-2.05-4.27-2.69-5.6m2.69 5.6c-.68-1.43-1.37-2.85-2.69-5.6m0 0c-.8-2.17-1.59-4.34-2.16-5.88m2.16 5.88c-.82-2.22-1.63-4.44-2.16-5.88m0 0c-.47-1.82-.94-3.64-1.58-6.13m1.58 6.13c-.37-1.44-.74-2.88-1.58-6.13m0 0-.97-6.34m.97 6.34c-.3-1.98-.61-3.97-.97-6.34m0 0c-.13-2.54-.26-5.07-.33-6.54m.33 6.54-.33-6.54m0 0V343m0 112V343m0 0h174.1m-174.1 0h174.1m0 0-39 39m39-39-39 39m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-.65.72-1.3 1.44-1.65 1.83m1.65-1.83c-.34.38-.68.76-1.65 1.83m0 0c-.35.47-.7.95-1.43 1.94m1.43-1.94c-.38.5-.75 1.01-1.43 1.94m0 0c-.32.54-.64 1.08-1.22 2.05m1.22-2.05c-.38.64-.76 1.28-1.22 2.05m0 0c-.2.45-.41.89-.99 2.13m.99-2.13c-.38.82-.76 1.64-.99 2.13m0 0c-.18.53-.36 1.05-.77 2.2m.77-2.2c-.3.88-.61 1.75-.77 2.2m0 0c-.15.61-.3 1.22-.55 2.25m.55-2.25c-.16.68-.33 1.35-.55 2.25m0 0-.33 2.29m.33-2.29c-.13.9-.26 1.79-.33 2.29m0 0-.11 2.3m.11-2.3c-.03.59-.06 1.19-.11 2.3m0 0c.03.54.05 1.08.11 2.3m-.11-2.3c.03.72.07 1.44.11 2.3m0 0c.1.71.21 1.43.33 2.28m-.33-2.28c.1.71.21 1.42.33 2.28m0 0c.22.88.44 1.77.55 2.24m-.55-2.24c.16.66.33 1.32.55 2.24m0 0c.26.72.51 1.45.77 2.19m-.77-2.19c.25.69.49 1.39.77 2.19m0 0c.33.7.65 1.4.99 2.12m-.99-2.12c.37.79.74 1.57.99 2.12m0 0c.38.63.75 1.25 1.22 2.04m-1.22-2.04c.4.67.8 1.35 1.22 2.04m0 0c.38.52.77 1.05 1.43 1.93m-1.43-1.93c.38.52.77 1.05 1.43 1.93m0 0c.46.5.91 1 1.65 1.81m-1.65-1.81c.35.39.7.77 1.65 1.81m0 0c.37.33.75.67 1.83 1.64m-1.83-1.64c.43.39.87.78 1.83 1.64m0 0c.62.45 1.25.91 1.94 1.42m-1.94-1.42c.45.32.9.65 1.94 1.42m0 0c.53.3 1.05.61 2.05 1.2m-2.05-1.2c.43.25.86.5 2.05 1.2m0 0c.78.36 1.56.72 2.13.99m-2.13-.99c.54.25 1.08.5 2.13.99m0 0c.67.23 1.33.46 2.2.76m-2.2-.76c.51.17 1.03.35 2.2.76m0 0c.87.22 1.73.43 2.25.56m-2.25-.56c.79.2 1.57.39 2.25.56m0 0 2.29.33m-2.29-.33c.58.08 1.16.16 2.29.33m0 0c.91.04 1.82.09 2.3.11m-2.3-.11c.89.04 1.79.09 2.3.11m0 0c.48-.02.96-.04 2.3-.1m-2.3.1c.73-.03 1.47-.06 2.3-.1m0 0c.61-.09 1.22-.18 2.28-.33m-2.28.33c.58-.09 1.17-.17 2.28-.33m0 0c.79-.19 1.59-.38 2.24-.54m-2.24.54c.88-.21 1.75-.42 2.24-.54m0 0c.7-.25 1.4-.49 2.19-.77m-2.19.77c.5-.18 1.01-.35 2.19-.77m0 0c.56-.26 1.13-.52 2.12-.98m-2.12.98c.69-.31 1.37-.63 2.12-.98m0 0c.63-.37 1.25-.74 2.04-1.21m-2.04 1.21c.8-.48 1.6-.95 2.04-1.21m0 0c.67-.5 1.34-.99 1.93-1.43m-1.93 1.43c.52-.39 1.05-.78 1.93-1.43m0 0c.43-.39.87-.79 1.81-1.65m-1.81 1.65c.42-.38.83-.76 1.81-1.65m0 0 80-80m-80 80 80-80m0 0s0 0 0 0m0 0s0 0 0 0m0 0c.33-.37.67-.74 1.65-1.83m-1.65 1.83c.63-.7 1.27-1.4 1.65-1.83m0 0c.3-.4.59-.79 1.43-1.94m-1.43 1.94c.42-.57.84-1.13 1.43-1.94m0 0c.4-.68.8-1.35 1.22-2.05m-1.22 2.05c.47-.79.93-1.57 1.22-2.05m0 0c.28-.62.57-1.23.99-2.13m-.99 2.13c.3-.65.6-1.31.99-2.13m0 0c.26-.74.51-1.47.77-2.2m-.77 2.2.77-2.2m0 0 .55-2.25m-.55 2.25c.2-.84.41-1.68.55-2.25m0 0 .33-2.29m-.33 2.29c.11-.75.21-1.49.33-2.29m0 0c.03-.54.05-1.08.11-2.3m-.11 2.3c.04-.91.09-1.81.11-2.3m0 0c-.03-.7-.07-1.41-.11-2.3m.11 2.3c-.04-.75-.07-1.49-.11-2.3m0 0c-.08-.52-.15-1.04-.33-2.28m.33 2.28c-.09-.63-.18-1.26-.33-2.28m0 0-.55-2.24m.55 2.24c-.19-.79-.39-1.58-.55-2.24m0 0-.77-2.19m.77 2.19c-.25-.72-.51-1.44-.77-2.19m0 0c-.23-.5-.46-.99-.99-2.12m.99 2.12c-.39-.83-.78-1.66-.99-2.12m0 0c-.42-.7-.83-1.39-1.22-2.04m1.22 2.04c-.32-.53-.64-1.06-1.22-2.04m0 0c-.47-.64-.95-1.28-1.43-1.93m1.43 1.93c-.47-.63-.94-1.27-1.43-1.93m0 0c-.44-.49-.89-.98-1.65-1.81m1.65 1.81c-.64-.7-1.28-1.4-1.65-1.81m0 0-80-80m80 80-80-80m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-.72-.65-1.44-1.3-1.83-1.65m1.83 1.65c-.68-.62-1.37-1.23-1.83-1.65m0 0c-.51-.38-1.02-.75-1.94-1.43m1.94 1.43c-.58-.43-1.17-.87-1.94-1.43m0 0c-.73-.43-1.45-.86-2.05-1.22m2.05 1.22c-.77-.45-1.53-.9-2.05-1.22m0 0c-.46-.21-.93-.43-2.13-.99m2.13.99-2.13-.99m0 0c-.83-.29-1.65-.57-2.2-.77m2.2.77c-.56-.19-1.12-.39-2.2-.77m0 0c-.65-.16-1.29-.31-2.25-.55m2.25.55c-.57-.14-1.13-.27-2.25-.55m0 0c-.74-.11-1.48-.21-2.29-.33m2.29.33c-.51-.07-1.02-.15-2.29-.33m0 0c-.77-.04-1.54-.07-2.3-.11m2.3.11c-.88-.04-1.76-.08-2.3-.11m0 0c-.49.02-.98.05-2.3.11m2.3-.11c-.88.04-1.77.09-2.3.11m0 0c-.62.09-1.23.18-2.28.33m2.28-.33c-.6.09-1.2.17-2.28.33m0 0c-.45.11-.91.22-2.24.55m2.24-.55c-.79.2-1.58.39-2.24.55m0 0c-.56.2-1.12.4-2.19.77m2.19-.77c-.51.18-1.01.36-2.19.77m0 0c-.85.4-1.7.8-2.12.99m2.12-.99c-.51.24-1.02.48-2.12.99m0 0c-.6.36-1.2.71-2.04 1.22m2.04-1.22c-.46.27-.91.55-2.04 1.22m0 0c-.49.36-.99.73-1.93 1.43m1.93-1.43-1.93 1.43m0 0c-.42.38-.85.77-1.81 1.65m1.81-1.65c-.69.63-1.39 1.27-1.81 1.65m0 0-1.64 1.83m1.64-1.83c-.54.6-1.08 1.21-1.64 1.83m0 0c-.53.73-1.07 1.47-1.42 1.94m1.42-1.94c-.36.5-.73 1-1.42 1.94m0 0c-.35.61-.7 1.21-1.2 2.05m1.2-2.05c-.33.58-.67 1.15-1.2 2.05m0 0c-.26.57-.53 1.15-.99 2.13m.99-2.13c-.39.85-.78 1.69-.99 2.13m0 0c-.24.7-.48 1.4-.76 2.2m.76-2.2c-.17.51-.35 1.01-.76 2.2m0 0c-.17.68-.33 1.35-.56 2.25m.56-2.25c-.2.79-.39 1.57-.56 2.25m0 0c-.09.65-.18 1.29-.33 2.29m.33-2.29c-.06.48-.13.95-.33 2.29m0 0c-.03.71-.07 1.43-.11 2.3m.11-2.3-.11 2.3m0 0c.04.86.08 1.73.1 2.3m-.1-2.3c.03.8.07 1.6.1 2.3m0 0c.13.88.25 1.76.33 2.28m-.33-2.28c.11.73.21 1.47.33 2.28m0 0c.18.74.36 1.49.54 2.24m-.54-2.24c.15.64.31 1.28.54 2.24m0 0c.2.57.4 1.15.77 2.19m-.77-2.19c.21.58.41 1.17.77 2.19m0 0c.23.5.46 1.01.98 2.12m-.98-2.12c.35.76.71 1.53.98 2.12m0 0c.38.64.76 1.29 1.21 2.04m-1.21-2.04 1.21 2.04m0 0c.45.6.89 1.21 1.43 1.93m-1.43-1.93c.3.4.6.81 1.43 1.93m0 0 1.65 1.81m-1.65-1.81c.47.52.94 1.03 1.65 1.81m0 0 39 39m-39-39 39 39m0 0h-174.1m174.1 0h-174.1m0 0V71m0 223.9V71m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeLinecap:"round",strokeWidth:"18",d:"M135 343.068H31m104 0H31m0 0s0 0 0 0m0 0s0 0 0 0m0 0c-.74-.04-1.48-.07-2.46-.12m2.46.12c-.77-.04-1.54-.08-2.46-.12m0 0c-.87-.14-1.75-.27-2.39-.37m2.39.37c-.55-.09-1.1-.17-2.39-.37m0 0c-.87-.22-1.74-.44-2.3-.59m2.3.59c-.62-.15-1.24-.31-2.3-.59m0 0c-.82-.29-1.64-.59-2.21-.8m2.21.8c-.52-.18-1.03-.37-2.21-.8m0 0c-.55-.26-1.09-.52-2.1-1.01m2.1 1.01c-.64-.31-1.28-.61-2.1-1.01m0 0c-.74-.45-1.48-.89-1.98-1.2m1.98 1.2c-.42-.25-.84-.51-1.98-1.2m0 0c-.7-.52-1.41-1.05-1.84-1.38m1.84 1.38c-.37-.28-.75-.56-1.84-1.38m0 0c-.4-.36-.8-.71-1.71-1.54m1.71 1.54c-.35-.31-.7-.63-1.71-1.54m0 0c-.43-.47-.85-.95-1.54-1.71m1.54 1.71c-.61-.68-1.23-1.36-1.54-1.71m0 0c-.29-.38-.58-.76-1.38-1.84m1.38 1.84c-.54-.71-1.08-1.43-1.38-1.84m0 0c-.46-.76-.92-1.52-1.2-1.98m1.2 1.98c-.45-.74-.89-1.47-1.2-1.98m0 0c-.37-.77-.74-1.53-1.01-2.1m1.01 2.1c-.3-.62-.6-1.25-1.01-2.1m0 0c-.2-.54-.39-1.07-.8-2.21m.8 2.21c-.2-.54-.4-1.09-.8-2.21m0 0c-.22-.85-.44-1.71-.59-2.3m.59 2.3c-.12-.46-.24-.92-.59-2.3m0 0c-.11-.72-.22-1.43-.37-2.39m.37 2.39c-.08-.48-.15-.96-.37-2.39m0 0c-.03-.74-.07-1.48-.12-2.46m.12 2.46c-.04-.79-.08-1.59-.12-2.46m0 0c.04-.74.07-1.49.12-2.46m-.12 2.46.12-2.46m0 0c.08-.53.16-1.07.37-2.39m-.37 2.39c.09-.56.17-1.12.37-2.39m0 0c.17-.69.35-1.38.59-2.3m-.59 2.3c.15-.61.31-1.23.59-2.3m0 0c.17-.48.34-.96.8-2.21m-.8 2.21c.2-.55.4-1.1.8-2.21m0 0c.25-.52.49-1.03 1.01-2.1m-1.01 2.1c.36-.76.73-1.52 1.01-2.1m0 0c.43-.72.87-1.44 1.2-1.98m-1.2 1.98c.27-.45.55-.91 1.2-1.98m0 0c.54-.73 1.09-1.47 1.38-1.84m-1.38 1.84c.4-.54.81-1.09 1.38-1.84m0 0c.53-.59 1.07-1.18 1.54-1.71m-1.54 1.71c.59-.66 1.19-1.32 1.54-1.71m0 0c.54-.49 1.08-.97 1.71-1.54m-1.71 1.54c.48-.43.95-.86 1.71-1.54m0 0c.46-.35.92-.7 1.84-1.38m-1.84 1.38c.5-.38 1.01-.76 1.84-1.38m0 0c.52-.32 1.04-.63 1.98-1.2m-1.98 1.2c.72-.44 1.44-.88 1.98-1.2m0 0 2.1-1.01m-2.1 1.01c.84-.4 1.67-.81 2.1-1.01m0 0c.45-.17.91-.33 2.21-.8m-2.21.8c.56-.21 1.12-.41 2.21-.8m0 0c.89-.23 1.79-.46 2.3-.59m-2.3.59c.48-.13.95-.25 2.3-.59m0 0c.51-.08 1.02-.16 2.39-.37m-2.39.37 2.39-.37m0 0c.52-.02 1.03-.05 2.46-.12m-2.46.12c.74-.03 1.48-.07 2.46-.12m0 0 103.34-.27m-103.34.27c30.04-.08 60.08-.16 103.34-.27"}),React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"var(--input-bg-color)",strokeWidth:"0",d:"M517.462 135h-128V7l128 128"}),React__namespace.createElement("path",{fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"18",d:"M517.462 135h-128m128 0h-128m0 0V7m0 128V7m0 0 128 128m-128-128 128 128m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"}))),obsidian:React__namespace.createElement("svg",{focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},React__namespace.createElement("defs",null,React__namespace.createElement("radialGradient",{id:"b",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(-48 -185 123 -32 179 429.7)"},React__namespace.createElement("stop",{stopColor:"#fff",stopOpacity:".4"}),React__namespace.createElement("stop",{offset:"1",stopOpacity:".1"})),React__namespace.createElement("radialGradient",{id:"c",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(41 -310 229 30 341.6 351.3)"},React__namespace.createElement("stop",{stopColor:"#fff",stopOpacity:".6"}),React__namespace.createElement("stop",{offset:"1",stopColor:"#fff",stopOpacity:".1"})),React__namespace.createElement("radialGradient",{id:"d",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(57 -261 178 39 190.5 296.3)"},React__namespace.createElement("stop",{stopColor:"#fff",stopOpacity:".8"}),React__namespace.createElement("stop",{offset:"1",stopColor:"#fff",stopOpacity:".4"})),React__namespace.createElement("radialGradient",{id:"e",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(-79 -133 153 -90 321.4 464.2)"},React__namespace.createElement("stop",{stopColor:"#fff",stopOpacity:".3"}),React__namespace.createElement("stop",{offset:"1",stopOpacity:".3"})),React__namespace.createElement("radialGradient",{id:"f",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(-29 136 -92 -20 300.7 149.9)"},React__namespace.createElement("stop",{stopColor:"#fff",stopOpacity:"0"}),React__namespace.createElement("stop",{offset:"1",stopColor:"#fff",stopOpacity:".2"})),React__namespace.createElement("radialGradient",{id:"g",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(72 73 -155 153 137.8 225.2)"},React__namespace.createElement("stop",{stopColor:"#fff",stopOpacity:".2"}),React__namespace.createElement("stop",{offset:"1",stopColor:"#fff",stopOpacity:".4"})),React__namespace.createElement("radialGradient",{id:"h",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(20 118 -251 43 215.1 273.7)"},React__namespace.createElement("stop",{stopColor:"#fff",stopOpacity:".1"}),React__namespace.createElement("stop",{offset:"1",stopColor:"#fff",stopOpacity:".3"})),React__namespace.createElement("radialGradient",{id:"i",cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(-162 -85 268 -510 374.4 371.7)"},React__namespace.createElement("stop",{stopColor:"#fff",stopOpacity:".2"}),React__namespace.createElement("stop",{offset:".5",stopColor:"#fff",stopOpacity:".2"}),React__namespace.createElement("stop",{offset:"1",stopColor:"#fff",stopOpacity:".3"})),React__namespace.createElement("filter",{id:"a",x:"80.1",y:"37",width:"351.1",height:"443.2",filterUnits:"userSpaceOnUse",colorInterpolationFilters:"sRGB"},React__namespace.createElement("feFlood",{floodOpacity:"0",result:"BackgroundImageFix"}),React__namespace.createElement("feBlend",{in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),React__namespace.createElement("feGaussianBlur",{stdDeviation:"6.5",result:"effect1_foregroundBlur_744_9191"}))),React__namespace.createElement("g",{filter:"url(#a)"},React__namespace.createElement("path",{d:"M359.2 437.5c-2.6 19-21.3 33.9-40 28.7-26.5-7.2-57.2-18.6-84.8-20.7l-42.4-3.2a28 28 0 0 1-18-8.3l-73-74.8a27.7 27.7 0 0 1-5.4-30.7s45-98.6 46.8-103.7c1.6-5.1 7.8-49.9 11.4-73.9a28 28 0 0 1 9-16.5L249 57.2a28 28 0 0 1 40.6 3.4l72.6 91.6a29.5 29.5 0 0 1 6.2 18.3c0 17.3 1.5 53 11.2 76a301.3 301.3 0 0 0 35.6 58.2 14 14 0 0 1 1 15.6c-6.3 10.7-18.9 31.3-36.6 57.6a142.2 142.2 0 0 0-20.5 59.6Z",fill:"#000",fillOpacity:".3"})),React__namespace.createElement("path",{id:"arrow",d:"M359.9 434.3c-2.6 19.1-21.3 34-40 28.9-26.4-7.3-57-18.7-84.7-20.8l-42.3-3.2a27.9 27.9 0 0 1-18-8.4l-73-75a27.9 27.9 0 0 1-5.4-31s45.1-99 46.8-104.2c1.7-5.1 7.8-50 11.4-74.2a28 28 0 0 1 9-16.6l86.2-77.5a28 28 0 0 1 40.6 3.5l72.5 92a29.7 29.7 0 0 1 6.2 18.3c0 17.4 1.5 53.2 11.1 76.3a303 303 0 0 0 35.6 58.5 14 14 0 0 1 1.1 15.7c-6.4 10.8-18.9 31.4-36.7 57.9a143.3 143.3 0 0 0-20.4 59.8Z",fill:"#6c31e3"}),React__namespace.createElement("path",{d:"M182.7 436.4c33.9-68.7 33-118 18.5-153-13.2-32.4-37.9-52.8-57.3-65.5-.4 1.9-1 3.7-1.8 5.4L96.5 324.8a27.9 27.9 0 0 0 5.5 31l72.9 75c2.3 2.3 5 4.2 7.8 5.6Z",fill:"url(#b)"}),React__namespace.createElement("path",{d:"M274.9 297c9.1.9 18 2.9 26.8 6.1 27.8 10.4 53.1 33.8 74 78.9 1.5-2.6 3-5.1 4.6-7.5a1222 1222 0 0 0 36.7-57.9 14 14 0 0 0-1-15.7 303 303 0 0 1-35.7-58.5c-9.6-23-11-58.9-11.1-76.3 0-6.6-2.1-13.1-6.2-18.3l-72.5-92-1.2-1.5c5.3 17.5 5 31.5 1.7 44.2-3 11.8-8.6 22.5-14.5 33.8-2 3.8-4 7.7-5.9 11.7a140 140 0 0 0-15.8 58c-1 24.2 3.9 54.5 20 95Z",fill:"url(#c)"}),React__namespace.createElement("path",{d:"M274.8 297c-16.1-40.5-21-70.8-20-95 1-24 8-42 15.8-58l6-11.7c5.8-11.3 11.3-22 14.4-33.8a78.5 78.5 0 0 0-1.7-44.2 28 28 0 0 0-39.4-2l-86.2 77.5a28 28 0 0 0-9 16.6L144.2 216c0 .7-.2 1.3-.3 2 19.4 12.6 44 33 57.3 65.3 2.6 6.4 4.8 13.1 6.4 20.4a200 200 0 0 1 67.2-6.8Z",fill:"url(#d)"}),React__namespace.createElement("path",{d:"M320 463.2c18.6 5.1 37.3-9.8 39.9-29a153 153 0 0 1 15.9-52.2c-21-45.1-46.3-68.5-74-78.9-29.5-11-61.6-7.3-94.2.6 7.3 33.1 3 76.4-24.8 132.7 3.1 1.6 6.6 2.5 10.1 2.8l43.9 3.3c23.8 1.7 59.3 14 83.2 20.7Z",fill:"url(#e)"}),React__namespace.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M255 200.5c-1.1 24 1.9 51.4 18 91.8l-5-.5c-14.5-42.1-17.7-63.7-16.6-88 1-24.3 8.9-43 16.7-59 2-4 6.6-11.5 8.6-15.3 5.8-11.3 9.7-17.2 13-27.5 4.8-14.4 3.8-21.2 3.2-28 3.7 24.5-10.4 45.8-21 67.5a145 145 0 0 0-17 59Z",fill:"url(#f)"}),React__namespace.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M206 285.1c2 4.4 3.7 8 4.9 13.5l-4.3 1c-1.7-6.4-3-11-5.5-16.5-14.6-34.3-38-52-57-65 23 12.4 46.7 31.9 61.9 67Z",fill:"url(#g)"}),React__namespace.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M211.1 303c8 37.5-1 85.2-27.5 131.6 22.2-46 33-90.1 24-131l3.5-.7Z",fill:"url(#h)"}),React__namespace.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M302.7 299.5c43.5 16.3 60.3 52 72.8 81.9-15.5-31.2-37-65.7-74.4-78.5-28.4-9.8-52.4-8.6-93.5.7l-.9-4c43.6-10 66.4-11.2 96 0Z",fill:"url(#i)"})),"add-file":React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"}),React__namespace.createElement("polyline",{points:"14 2 14 8 20 8"}),React__namespace.createElement("line",{x1:"12",x2:"12",y1:"18",y2:"12"}),React__namespace.createElement("line",{x1:"9",x2:"15",y1:"15",y2:"15"})),ExcalidrawSword:React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 537.9 1150.7"},React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"#FFF6F0",d:"m281 988 113-124-77-569H213l-37 574 106 120-4 2"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"M279 989c37-42 82-84 116-122M279 990c33-33 59-66 113-123m0-1c-22-191-51-385-78-570m78 570c-31-196-58-391-78-570m-4-1c-30-1-56 1-97-1m102 3c-41 1-81 0-106-3m1 3c-11 185-20 369-30 574m30-574c-7 165-16 330-32 575m2-3c38 47 73 81 97 121m-98-116c39 41 76 86 100 114m0 1s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("path",{fill:"none",stroke:"#af7e00",strokeLinecap:"round",strokeWidth:"4",d:"M279 614v264m-3-259c2 43 8 211 8 254"}),React__namespace.createElement("g",{fill:"none",fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{stroke:"#646261",strokeWidth:".5",d:"M209 300c2-1 6-5 9-3m-8 3 7-5m-4 7c-1-1 2-6 5-8m-6 9 5-9m-9 16c3-3 6-11 12-18m-11 14c5-2 10-7 12-10m-13 17c5-7 9-15 15-21m-13 18c4-7 8-10 13-15m-15 17c7-2 14-11 18-20m-19 20c7-3 7-8 21-15m-18 17c6-8 11-15 13-15m-12 17c6-7 11-16 14-23m-19 24 28-22m-25 25 25-25m-24 25c7-7 13-14 23-28m-21 30 18-27m-20 29c4-9 17-13 25-30m-28 30c10-4 17-12 31-30m-28 34c11-9 20-20 26-34m-26 34c10-11 15-20 30-32m-32 40c5-12 16-20 31-40m-31 36c9-10 20-20 34-38m-34 38c11-12 23-22 35-37m-33 39c10-12 24-25 33-40m-34 44c10-12 19-25 42-43m-43 46 41-44m-36 42c9-13 31-32 32-44m-35 46c12-11 22-23 38-45m-43 48c13-14 27-20 47-52m-44 52c16-14 33-35 47-50m-43 51c8-12 25-25 38-50m-40 54 43-56m-43 56c9-9 25-28 46-58m-51 61c13-15 30-30 56-57m-51 58c17-20 35-40 46-57m-47 61c14-16 25-32 48-61m-48 63c15-18 27-27 57-63m-62 64c18-20 33-37 59-63m-51 61c13-19 34-37 48-65m-53 70c16-19 31-34 58-68m-61 69c30-25 48-55 63-67m-63 66c20-17 38-40 66-65m-58 67c23-23 42-48 53-67m-55 71c18-27 42-50 59-74m-60 78c12-21 33-35 64-75m-66 74c20-26 46-53 67-77m-63 80c24-27 43-54 66-77m-70 75c30-31 55-63 68-76m-74 80c15-17 32-32 78-85m-75 86c23-25 48-49 74-83m-66 88c18-21 36-50 66-90m-69 88c21-29 43-55 70-87m-77 93c36-34 59-66 80-93m-79 89c27-25 49-54 81-88m-73 89c23-32 48-61 71-89m-76 94 79-96m-77 96c27-32 58-65 84-90m-89 92c34-38 69-78 86-94m-81 98 84-96m-86 97c32-42 66-82 83-100m-82 100c29-39 62-74 87-98m-92 98c27-24 50-52 93-100m-86 105c34-44 72-83 86-106m-87 105c34-36 63-73 88-104m-91 105c26-24 50-47 94-104m-94 106c27-31 57-67 95-107m-96 109c38-39 71-78 99-112m-97 113 96-110M200 414c35-34 57-67 102-115m-98 110c38-42 77-83 102-112m-96 116c17-27 44-59 96-117m-99 116c23-25 45-55 99-117M205 415c35-45 77-87 110-122M203 418c43-43 81-91 108-122M208 420c44-45 84-97 100-128M205 419l108-123M201 421c40-44 83-86 114-127M203 425c33-41 70-82 111-127M205 425c24-29 50-53 107-131M206 428c38-41 72-83 108-132M205 430l109-132M204 429c30-38 65-73 112-125M204 435c31-35 63-72 111-130M205 433c40-46 76-96 112-132M205 441c20-34 43-60 112-135M200 439c33-34 59-66 116-133M202 436c29-30 56-63 114-129M206 440c27-36 57-70 111-133M201 442c26-31 58-61 120-127M202 445c20-30 46-54 117-131M201 450c41-51 79-93 113-138M204 444c34-40 71-82 113-133M203 450c33-42 68-79 115-135M200 451l120-132M204 449c33-26 65-68 113-132M205 451l115-133M200 458l117-138M201 458l119-135M202 459c35-38 69-74 119-139M205 460c31-42 65-82 113-135M199 467c29-29 52-60 119-135M201 462c32-40 70-80 118-135M203 462c47-52 93-98 116-135M205 466c39-47 76-90 113-139M196 472c35-33 62-58 123-137M199 470c31-36 63-68 120-136M205 469c26-33 56-67 114-132M204 473c42-44 80-91 115-137M197 477c45-52 96-107 121-137M199 477c31-42 67-79 122-137M199 481c44-51 78-97 120-145M200 479c39-46 78-94 123-140M196 485c37-47 76-83 124-144M201 483c31-32 59-68 120-138M204 486c41-56 89-104 115-145M204 485l118-142M196 487c35-29 63-70 124-136M201 491c35-48 73-91 123-143M201 494c36-40 66-71 121-147M204 493c26-38 55-69 120-143M196 498c37-47 79-94 125-147M200 495c38-39 76-82 123-139M200 496c48-48 89-100 127-139M200 499c28-32 55-62 125-146M199 500c26-32 62-68 125-137M198 502c42-47 81-95 125-143M204 506c32-42 60-73 122-145M203 504c37-42 75-90 121-142M202 512c37-51 83-95 121-150M197 507c49-52 92-102 127-140M203 515c45-54 89-106 119-153M203 512c37-45 78-93 121-148M196 518c47-61 104-120 127-145M197 514c32-36 67-72 131-145M198 515c38-40 71-78 127-145M198 518c46-52 89-105 127-149M193 521c47-53 96-111 133-149M199 522c42-47 86-94 127-147M203 523c33-45 71-89 124-149M201 524c44-52 88-104 124-149M199 532c38-55 81-97 127-154M199 527c49-60 104-115 127-148M201 533c28-43 61-84 126-150M199 529c50-53 95-113 128-147M199 533c31-34 63-69 132-148M197 533c43-46 86-97 132-145M195 541l135-157M200 536c42-53 86-105 127-148M198 543c33-41 65-79 128-152M196 540c38-46 75-89 131-150M199 542c40-48 85-93 128-148M198 544c28-36 57-69 130-153M194 549c56-57 105-117 137-150M197 546c37-46 79-89 132-148M197 550c39-44 81-94 131-155M201 552c38-51 80-99 130-155M197 554c30-39 62-72 134-153M195 553c37-40 73-79 136-152M199 555c50-61 102-120 131-150M199 558c43-53 84-102 131-155M196 563c34-40 68-82 132-153M193 561c52-54 99-110 139-154M198 564c29-31 56-66 136-157M198 565c39-45 77-86 131-156M192 566c36-40 73-82 143-153M195 568c28-35 57-71 135-154M195 569c53-55 107-115 138-154M198 569l133-157M196 576c32-34 58-75 133-159M193 572c26-33 57-64 141-154M195 579c54-57 103-117 134-158M198 575c36-40 70-82 133-157M190 579c64-65 117-122 141-155M195 582c39-47 82-94 138-158M196 581c28-38 64-72 138-154M198 583l134-159M191 588c52-61 101-114 145-158M194 588c51-64 102-124 141-160M195 586c41-45 85-97 138-154M197 590c41-47 82-95 135-162M195 594c30-42 63-76 139-162M193 594c32-34 59-68 140-161M195 596c42-50 76-93 141-163M197 594c32-37 65-72 136-160M192 603l142-162M192 598c30-31 59-64 144-157M197 604c43-59 95-112 138-164M195 603c54-64 106-127 139-164M194 605l144-163M192 608c39-42 79-87 146-164M199 612c31-46 66-86 139-170M197 608c38-47 79-93 141-163M190 611c62-65 121-129 149-163M193 614c55-69 111-132 144-164M197 615c33-31 64-68 136-162M196 615c49-57 101-120 141-165M195 620c52-65 115-133 142-162M190 621c35-37 66-73 147-167M195 625c35-47 75-89 141-169M194 621c47-50 89-100 143-166M189 623c58-58 112-122 149-163M192 624l147-165M196 631c36-45 73-91 143-173M195 629c33-46 70-89 142-168M193 633c57-61 112-124 146-170M190 631c55-60 109-121 148-167M192 633c34-34 67-76 149-166M193 633c44-46 82-94 147-167M194 638c30-35 61-66 144-168M191 638c55-63 113-125 148-169M193 643c50-63 108-130 148-172M194 643c38-48 76-95 145-173M193 646c55-67 111-135 151-170M189 646c35-43 71-82 152-170M196 649c46-56 91-113 141-171M193 648c36-41 71-86 147-172M193 651c47-56 96-116 146-171M191 654c60-70 123-141 150-174M196 656c40-56 85-105 143-172M194 653c34-42 71-88 146-171M186 659c44-45 78-87 153-171M188 659c54-62 108-119 153-173M195 661c32-40 64-83 147-173M193 661c37-39 70-81 147-176M192 663c59-67 124-133 151-173M190 666c41-50 83-99 152-174M193 666c61-63 115-131 149-173M193 666c59-70 120-136 150-173M189 672c34-38 62-73 157-177M189 673l155-176M190 676c45-55 91-112 157-177M192 674l150-176M188 675c38-33 71-73 156-172M188 678c55-63 108-120 155-176M191 679c51-56 107-118 151-174M191 680c50-56 102-118 152-179M186 682c45-48 92-97 158-173M189 684c34-35 64-74 155-176M187 690c51-51 87-102 161-185M191 687c48-60 95-114 154-180M185 688c32-34 68-69 157-178M188 692l158-181M190 692c43-47 83-101 152-178M191 696l154-184M188 700c47-56 93-114 161-185M188 698c63-70 128-142 158-181M189 700c40-49 79-94 154-179M190 700c45-47 85-98 157-183M188 703c35-35 67-72 157-181M186 703c44-53 91-106 161-180M192 708c61-69 116-137 155-186M188 708c51-54 96-108 158-184M186 709l161-179M185 710c52-54 101-111 163-182M189 712c54-64 111-131 161-185M191 713l158-183M187 720c43-50 83-97 160-183M187 718l161-184M191 719c49-54 99-112 156-184M189 719c56-63 114-131 159-186M183 723c52-52 97-102 169-186M184 725c49-54 96-104 165-187M186 729c62-67 115-138 160-191M189 728c46-57 95-113 160-189M185 728c57-64 116-127 163-183M185 732c33-43 69-80 165-188M187 730c33-38 75-85 159-188M190 732c48-53 96-112 158-188M184 736c57-52 102-110 169-187M186 737c34-43 72-87 163-187M191 742l157-194M189 740c34-44 67-82 162-189M187 746c51-73 111-134 163-188M185 744c62-77 129-150 166-189M187 744c42-47 87-98 162-188M189 747c58-66 115-134 160-191M186 748c61-74 127-141 163-185M186 748c44-47 92-98 166-190M188 750c38-47 79-98 166-193M188 754c48-58 97-118 164-194M185 756c44-55 90-105 168-189M184 755l167-189M187 759c59-63 114-134 166-193M187 758l164-194M186 762c59-64 119-133 169-193M185 761c54-65 111-127 170-191M186 762c40-41 77-85 168-195M187 766c63-71 127-143 165-197M181 767c57-65 116-128 176-192M183 770l171-192M185 773c70-78 131-153 169-195M186 773c41-53 82-101 169-196M182 778l176-200M181 775l174-193M185 777c66-76 126-148 168-198M185 778c41-50 86-101 171-195M180 785c66-74 131-151 177-198M184 783c46-55 96-110 172-195M184 784c59-61 114-126 174-196M185 784c62-68 122-136 171-197M185 789c43-49 90-97 174-200M182 788l174-197M187 792c39-50 80-100 168-198M184 793l172-202M180 797c41-49 86-98 174-203M183 794c38-45 77-91 173-198M184 801c48-61 103-123 171-205M184 798c44-45 85-94 173-202M179 805c45-53 87-102 179-200M182 802c48-56 94-111 176-198M186 805c55-71 115-146 170-200M184 803l174-202M183 807c55-64 111-130 178-200M180 809c64-76 132-150 179-200M185 810c35-47 74-91 171-200M183 811l174-202M180 812c43-41 87-91 177-201M180 816c41-52 83-100 178-205M187 820c35-49 74-96 175-206M184 818c63-77 133-157 176-205M182 818c43-57 95-109 178-201M180 821c41-48 84-94 180-203M182 822c44-46 83-91 175-205M182 824c54-56 105-115 179-206M181 831c44-54 90-101 181-206M178 828c41-48 83-96 183-204M180 828c74-77 141-155 182-205M184 830c60-68 118-135 178-206M180 835c56-66 117-132 183-207M180 834c66-73 127-143 180-204M183 839c41-51 86-99 181-208M183 838c50-61 103-121 178-208M178 843c63-70 120-139 184-207M179 841l184-209M184 845c71-85 135-166 177-214M182 842c73-79 141-162 179-207M181 849c46-58 95-112 179-211M180 849l182-208M181 849c69-77 140-159 179-208M183 848c63-73 131-150 179-210M181 857c46-64 96-123 182-213M177 854c73-84 146-165 185-211M181 859c59-75 121-141 182-213M182 856c74-85 144-170 183-212M176 858c70-78 139-156 188-208M179 862c70-80 137-157 184-213M182 861c35-38 72-84 181-214M180 864c63-77 127-153 184-215M176 865c62-70 125-142 190-208M179 867l186-211M179 871c67-76 129-151 187-215M180 871c67-77 134-156 184-216M178 871c47-55 95-110 190-214M180 872c57-67 115-135 187-211M184 875c40-44 78-91 179-212M183 874l183-213M183 877c62-72 126-144 182-214M181 875l184-209M187 874c69-76 133-157 179-212M186 876c55-69 112-134 181-211M186 874c60-70 126-136 182-205M185 877c41-45 76-88 183-207M190 883l174-212M189 881c52-62 108-128 176-212M185 878c54-62 113-129 183-201M188 880c55-67 112-131 178-205M192 883c56-70 124-145 176-205M191 882c51-58 97-115 176-208M187 886c50-56 93-108 183-203M189 882l181-201M190 885c66-65 126-134 181-201M192 885c58-68 113-135 176-202M190 884c52-51 101-104 179-200M192 886c47-49 90-101 177-200M193 891c71-79 138-160 176-206M196 890l173-203M198 889c36-44 76-92 170-199M195 889c47-50 90-100 174-196M197 893c55-66 106-121 170-202M199 893c59-66 118-135 171-202M201 895c47-56 90-106 167-201M197 891c46-49 90-98 174-194M203 895c34-38 72-85 170-197M201 895l171-197M203 896c50-55 98-112 167-194M201 895c40-47 85-94 170-192M205 899c57-72 118-149 165-194M203 899c63-69 121-141 167-195M204 899c49-58 104-118 169-193M203 898c45-53 93-104 170-192M203 900c61-63 121-138 169-190M207 900c37-38 72-80 165-193M207 901c45-45 84-94 163-186M206 901c41-50 88-101 168-189M209 904c45-56 88-105 162-190M210 906c37-41 72-81 163-194M210 904c33-39 72-81 162-186M209 905c32-44 72-85 165-188M215 909c51-65 107-131 160-193M213 906c35-38 69-79 160-189M213 906c57-71 123-141 162-184M210 908c36-38 73-79 163-183M216 908c53-64 112-124 158-182M215 910c52-62 106-122 159-186M214 910c41-47 79-94 163-185M213 911l163-182M218 914c45-59 97-119 155-183M218 912l157-184M219 911c39-47 81-94 154-179M217 913l158-180M220 915c50-52 92-109 156-181M219 917c48-60 94-115 158-183M222 920c32-35 64-77 156-179M219 918l159-180M219 920c32-34 66-71 158-179M220 920c61-69 123-143 156-181M222 918l156-174M223 920l155-175M228 922c42-49 80-104 146-174M223 922c64-72 124-144 153-177M224 926c53-60 100-123 156-178M223 925l155-176M227 929c48-61 97-116 152-181M227 926c34-39 66-79 152-176M226 927c48-49 89-95 151-172M226 926c52-55 104-109 152-169M228 927l151-174M231 930c30-41 58-74 149-175M231 930c35-42 71-83 148-171M230 929c50-51 92-102 150-169M230 933c55-65 113-138 151-174M231 934c33-37 63-75 148-176M235 933c37-38 74-81 142-164M232 932l147-166M234 936c26-34 58-76 149-171M235 935c49-59 102-121 146-168M234 932c57-65 111-125 147-163M235 934c44-51 90-103 146-164M240 936c51-58 98-115 142-168M237 937c32-34 64-71 144-166M241 936c42-48 85-100 139-159M238 940c48-52 92-102 143-163M240 943c32-39 62-72 142-165M241 942c38-48 76-92 141-167M244 941c54-57 102-118 137-163M242 941c49-60 100-118 139-159M246 943l139-159M242 943c33-40 68-84 139-162M239 944c45-46 81-88 147-160M244 946l138-161M247 948c52-55 100-111 133-162M244 947c55-57 106-120 140-161M243 944c37-32 65-72 142-154M246 946l138-155M247 952c35-44 68-86 133-157M249 952c49-58 90-109 136-159M250 952l131-151M246 950l137-154M249 954c53-55 99-110 132-158M250 952c39-44 77-87 133-154M250 956c30-31 53-60 132-155M250 955c45-57 94-111 134-150M252 960c34-46 66-87 135-154M253 958l131-154M254 953c34-35 75-72 135-142M254 957c27-35 58-67 132-148M260 960c39-57 82-105 124-150M255 958c32-35 61-68 130-149M257 963l129-147M256 962c41-45 86-97 128-150M262 964c27-42 61-78 127-152M260 964l124-151M258 963c47-49 92-99 130-145M259 964l127-147M259 962c30-29 59-66 126-140M260 965c28-34 55-67 128-147M258 966c53-57 99-107 133-139M260 965c29-30 59-66 127-143M262 968c47-52 100-112 126-146M265 967c34-35 64-73 123-141M265 967c24-33 58-66 120-138M263 970c42-45 83-92 124-141M270 974c43-58 90-108 118-142M269 971c37-40 71-84 119-143M268 975c23-31 54-64 122-139M267 971l124-136M269 978c47-55 97-108 122-141M271 975c40-50 83-98 120-142M272 976c46-50 90-107 119-137M267 977c32-33 59-69 122-136M270 977c34-43 69-80 122-135M273 977c30-34 58-71 117-136M275 981c34-41 61-79 115-139M271 978c46-49 91-103 119-131M275 984c47-47 86-101 119-142M275 981l115-136M277 982c24-29 57-62 112-128M273 980c43-45 83-91 119-131M277 983c39-39 76-81 114-130M276 984c36-42 74-85 113-134M275 988c48-55 94-108 120-131M277 985c27-36 59-67 114-130M282 990c29-31 51-64 112-135M281 985l112-128M276 985c46-51 93-91 113-122M278 989c44-50 89-99 116-127M282 989c46-48 79-90 111-132M284 991c36-47 75-96 108-131"}),React__namespace.createElement("path",{stroke:"#000",d:"M283 989c39-52 86-95 106-127M282 989c38-44 73-85 112-126m-2 1c-27-190-56-380-78-570m79 570c-33-223-64-446-78-568m-1 2c-40 1-79 1-101-6m100 5H210m2-4c-15 208-26 416-31 578m31-576c-14 162-22 325-32 575m0 1c25 33 57 69 96 113m-96-114c29 41 62 76 98 117m2 1s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillOpacity:".8",fillRule:"evenodd",strokeLinecap:"round",strokeOpacity:".8"},React__namespace.createElement("path",{fill:"#dbc9f3",d:"m325 490-71-1-133 118-5 3-4 4-3 5-3 5-19 127 20 15 19 15 16 16 14 17 12 18 9 18 8 20 6 20 15-4 15-3 13-2 13-2 12-1 11-1 15 1 5 1-4-11-5-20-5-20-3-19-2-20-1-19v-19l2-19 2-18 3-19 4-18 6-18 6-19 6-18 8-18 4-9 9-18 4-8 2-8 3-10 1-10v-12l-5-39"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"M325 490s0 0 0 0m0 0s0 0 0 0m0 0-71-1m71 1-71-1m0 0L121 607m133-118L121 607m0 0s0 0 0 0m0 0s0 0 0 0m0 0-5 3m5-3-5 3m0 0-4 4m4-4-4 4m0 0-3 5m3-5-3 5m0 0-3 5m3-5-3 5m0 0L87 751m19-127L87 751m0 0s0 0 0 0m0 0s0 0 0 0m0 0 20 15m-20-15 20 15m0 0 19 15m-19-15 19 15m0 0 16 16m-16-16 16 16m0 0 14 17m-14-17 14 17m0 0 12 18m-12-18 12 18m0 0 9 18m-9-18 9 18m0 0 8 20m-8-20 8 20m0 0 6 20m-6-20 6 20m0 0 15-4m-15 4 15-4m0 0 15-3m-15 3 15-3m0 0 13-2m-13 2 13-2m0 0 13-2m-13 2 13-2m0 0 12-1m-12 1 12-1m0 0 11-1m-11 1 11-1m0 0 15 1m-15-1 15 1m0 0 5 1m-5-1 5 1m0 0-4-11m4 11-4-11m0 0-5-20m5 20-5-20m0 0-5-20m5 20-5-20m0 0-3-19m3 19-3-19m0 0-2-20m2 20-2-20m0 0-1-19m1 19-1-19m0 0v-19m0 19v-19m0 0 2-19m-2 19 2-19m0 0 2-18m-2 18 2-18m0 0 3-19m-3 19 3-19m0 0 4-18m-4 18 4-18m0 0 6-18m-6 18 6-18m0 0 6-19m-6 19 6-19m0 0 6-18m-6 18 6-18m0 0 8-18m-8 18 8-18m0 0 4-9m-4 9 4-9m0 0 9-18m-9 18 9-18m0 0 4-8m-4 8 4-8m0 0 2-8m-2 8 2-8m0 0 3-10m-3 10 3-10m0 0 1-10m-1 10 1-10m0 0v-12m0 12v-12m0 0-5-39m5 39-5-39m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillOpacity:".8",fillRule:"evenodd",strokeLinecap:"round",strokeOpacity:".8"},React__namespace.createElement("path",{fill:"#a887e8",d:"m439 634 10 20 4 24 2 26 3 25 5 25 8 25 9 24 12 24 13 24 8 11 9 12 7 10 2 6 2 6v5l-2 5-2 5-5 8-61 99-8-17-8-16-9-14-9-14-9-12-10-11-10-10-11-10-11-8-11-7-12-6-12-5-13-4-13-3-14-2-6-1h-7l-7-20-5-20-4-20-3-19-1-19-1-19 1-28 2-19 3-18 4-18 5-19 6-18 7-18 8-18 9-19 7-14 7-20 2-21-5-41 114 144"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"M439 634s0 0 0 0m0 0s0 0 0 0m0 0 10 20m-10-20 10 20m0 0 4 24m-4-24 4 24m0 0 2 26m-2-26 2 26m0 0 3 25m-3-25 3 25m0 0 5 25m-5-25 5 25m0 0 8 25m-8-25 8 25m0 0 9 24m-9-24 9 24m0 0 12 24m-12-24 12 24m0 0 13 24m-13-24 13 24m0 0 8 11m-8-11 8 11m0 0 9 12m-9-12 9 12m0 0 7 10m-7-10 7 10m0 0 2 6m-2-6 2 6m0 0 2 6m-2-6 2 6m0 0v5m0-5v5m0 0-2 5m2-5-2 5m0 0-2 5m2-5-2 5m0 0-5 8m5-8-5 8m0 0-61 99m61-99-61 99m0 0s0 0 0 0m0 0s0 0 0 0m0 0-8-17m8 17-8-17m0 0-8-16m8 16-8-16m0 0-9-14m9 14-9-14m0 0-9-14m9 14-9-14m0 0-9-12m9 12-9-12m0 0-10-11m10 11-10-11m0 0-10-10m10 10-10-10m0 0-11-10m11 10-11-10m0 0-11-8m11 8-11-8m0 0-11-7m11 7-11-7m0 0-12-6m12 6-12-6m0 0-12-5m12 5-12-5m0 0-13-4m13 4-13-4m0 0-13-3m13 3-13-3m0 0-14-2m14 2-14-2m0 0-6-1m6 1-6-1m0 0h-7m7 0h-7m0 0-7-20m7 20-7-20m0 0-5-20m5 20-5-20m0 0-4-20m4 20-4-20m0 0-3-19m3 19-3-19m0 0-1-19m1 19-1-19m0 0-1-19m1 19-1-19m0 0 1-28m-1 28 1-28m0 0 2-19m-2 19 2-19m0 0 3-18m-3 18 3-18m0 0 4-18m-4 18 4-18m0 0 5-19m-5 19 5-19m0 0 6-18m-6 18 6-18m0 0 7-18m-7 18 7-18m0 0 8-18m-8 18 8-18m0 0 9-19m-9 19 9-19m0 0 7-14m-7 14 7-14m0 0 7-20m-7 20 7-20m0 0 2-21m-2 21 2-21m0 0-5-41m5 41-5-41m0 0 114 144M325 490l114 144m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillOpacity:".8",fillRule:"evenodd",strokeLinecap:"round",strokeOpacity:".8"},React__namespace.createElement("path",{fill:"#6342a0",d:"m190 890 6 29 2 29-1 27-2 14-6 27-8 26-11 25-13 25-7 12 28 1 27 1 27 3 27 4 27 5 25 6 26 7 25 9 12 4 12 2 11-1 10-3 9-5 8-9 6-8 8-18 25-85-10-22-11-20-11-18-13-16-13-14-15-13-15-11-17-9-17-7-19-5-19-3-21-2h-21l-23 3-24 4-24 6"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"M190 890s0 0 0 0m0 0s0 0 0 0m0 0 6 29m-6-29 6 29m0 0 2 29m-2-29 2 29m0 0-1 27m1-27-1 27m0 0-2 14m2-14-2 14m0 0-6 27m6-27-6 27m0 0-8 26m8-26-8 26m0 0-11 25m11-25-11 25m0 0-13 25m13-25-13 25m0 0-7 12m7-12-7 12m0 0 28 1m-28-1 28 1m0 0 27 1m-27-1 27 1m0 0 27 3m-27-3 27 3m0 0 27 4m-27-4 27 4m0 0 27 5m-27-5 27 5m0 0 25 6m-25-6 25 6m0 0 26 7m-26-7 26 7m0 0 25 9m-25-9 25 9m0 0 12 4m-12-4 12 4m0 0 12 2m-12-2 12 2m0 0 11-1m-11 1 11-1m0 0 10-3m-10 3 10-3m0 0 9-5m-9 5 9-5m0 0 8-9m-8 9 8-9m0 0 6-8m-6 8 6-8m0 0 8-18m-8 18 8-18m0 0 25-85m-25 85 25-85m0 0s0 0 0 0m0 0s0 0 0 0m0 0-10-22m10 22-10-22m0 0-11-20m11 20-11-20m0 0-11-18m11 18-11-18m0 0-13-16m13 16-13-16m0 0-13-14m13 14-13-14m0 0-15-13m15 13-15-13m0 0-15-11m15 11-15-11m0 0-17-9m17 9-17-9m0 0-17-7m17 7-17-7m0 0-19-5m19 5-19-5m0 0-19-3m19 3-19-3m0 0-21-2m21 2-21-2m0 0h-21m21 0h-21m0 0-23 3m23-3-23 3m0 0-24 4m24-4-24 4m0 0-24 6m24-6-24 6m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillOpacity:".8",fillRule:"evenodd",strokeLinecap:"round",strokeOpacity:".8"},React__namespace.createElement("path",{fill:"#390f8c",d:"m87 751 25 19 22 20 20 22 16 24 12 26 9 28 6 27 2 26v27l-4 26-6 26-10 27-13 27-17 26L21 976l-8-12-7-11-1-9v-11l3-9 10-22 69-151"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"M87 751s0 0 0 0m0 0s0 0 0 0m0 0 25 19m-25-19 25 19m0 0 22 20m-22-20 22 20m0 0 20 22m-20-22 20 22m0 0 16 24m-16-24 16 24m0 0 12 26m-12-26 12 26m0 0 9 28m-9-28 9 28m0 0 6 27m-6-27 6 27m0 0 2 26m-2-26 2 26m0 0v27m0-27v27m0 0-4 26m4-26-4 26m0 0-6 26m6-26-6 26m0 0-10 27m10-27-10 27m0 0-13 27m13-27-13 27m0 0-17 26m17-26-17 26m0 0L21 976m128 126L21 976m0 0s0 0 0 0m0 0s0 0 0 0m0 0-8-12m8 12-8-12m0 0-7-11m7 11-7-11m0 0-1-9m1 9-1-9m0 0v-11m0 11v-11m0 0 3-9m-3 9 3-9m0 0 10-22M8 924l10-22m0 0 69-151M18 902l69-151m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("path",{fill:"none",stroke:"#CECDCC",strokeLinecap:"round",strokeWidth:"10",d:"M91 753s0 0 0 0m0 0s0 0 0 0m0 0 21 16m-21-16 21 16m0 0 18 17m-18-17 18 17m0 0 16 16m-16-16 16 16m0 0 13 17m-13-17 13 17m0 0 11 17m-11-17 11 17m0 0 8 17m-8-17 8 17m0 0 7 18m-7-18 7 18m0 0 6 18m-6-18 6 18m0 0 15-4m-15 4 15-4m0 0 14-2m-14 2 14-2m0 0 14-2m-14 2 14-2m0 0 13-2m-13 2 13-2m0 0 12-1m-12 1 12-1m0 0 11-1m-11 1 11-1m0 0h10m-10 0h10m0 0h8m-8 0h8m0 0-6-21m6 21-6-21m0 0-6-20m6 20-6-20m0 0-4-20m4 20-4-20m0 0-3-20m3 20-3-20m0 0-1-19m1 19-1-19m0 0-1-19m1 19-1-19m0 0 1-19m-1 19 1-19m0 0 2-18m-2 18 2-18m0 0 2-19m-2 19 2-19m0 0 4-18m-4 18 4-18m0 0 5-18m-5 18 5-18m0 0 6-18m-6 18 6-18m0 0 7-18m-7 18 7-18m0 0 7-18m-7 18 7-18m0 0 9-18m-9 18 9-18m0 0 9-19m-9 19 9-19m0 0 8-22m-8 22 8-22m0 0 2-10m-2 10 2-10"}),React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"#FFF6F0",d:"m154 297-20-26 25-24 207-6 19 26-27 25-205 1-1-3"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"m156 295-20-23m20 24c-7-11-16-19-22-27m6 1c1-11 10-13 21-21m-25 18c6-6 10-11 25-23m0 4c64-2 125-5 200-5m-198 3c64-1 133-4 201-2m-4 0c7 5 16 16 24 23m-20-25c5 6 7 12 20 23m-1 2c-2 8-12 14-18 25m18-24c-7 6-13 13-20 24m-4 1c-82-4-161-3-203 3m207-5c-56 1-110 0-206 4m-1-1s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"#FFF6F0",d:"m275 618 12-35 6-12 11-14 23-18 21-16-29-185-5-43-3-5-5-1-45 4-1 14 17 311"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"M277 617c2-5 4-24 9-34 4-10 10-19 17-26 7-8 18-13 23-17l10-8c3-3 9-4 11-9 1-5 3 10-2-20l-26-163c-5-31-2-20-3-27l-3-11c-1-4 0-10-2-12s-6 0-11 0l-15 2h-14c-4 0-8-2-10 0s0 7 0 14v30l10 205c3 38 3 13 3 26l1 50m1-1c2-5 7-22 12-31 5-10 11-20 17-27 7-7 17-13 22-17l7-9c4-3 12-5 14-10s3 10-2-20l-28-162c-5-31-2-19-3-25l-1-13c-1-4-1-9-3-11s-5-1-9-1l-17 1h-15c-5 0-10-2-12 0-1 2 3 5 3 13l2 32 10 202c2 39 0 16 0 29l2 49"})),React__namespace.createElement("g",{fill:"none",fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{stroke:"#bcb9b8",strokeWidth:".5",d:"m259 300 6-5m-6 5 7-4m-4 7 3-8m-3 8 4-8m-7 10c4-3 6-3 12-9m-12 10 13-11m-11 13c5-4 5-8 10-14m-8 14 8-14m-11 17c6-4 12-9 15-15m-16 16 17-17m-13 20c1-3 7-8 12-19m-13 17c6-5 8-10 15-17m-15 21c5-9 14-16 21-21m-23 22 22-24m-18 24 19-25m-19 26 18-24m-21 27c8-7 18-19 25-27m-27 28 29-28m-24 29c4-5 13-13 24-28m-25 30 25-32m-28 36c10-10 17-19 33-34m-34 34c8-9 15-17 35-35m-30 37 29-38m-30 38 29-37m-32 38c12-10 24-24 37-39m-36 40 38-40m-37 43c13-13 22-27 36-43m-35 43 36-42m-38 45c11-11 24-24 42-46m-42 46 44-46m-41 50c16-18 29-37 40-52m-40 51c14-19 28-35 41-49m-43 51 46-51m-46 51 45-50m-41 53 42-54m-44 55 45-54m-49 58c15-14 24-29 55-57m-54 56c13-14 26-27 51-57m-46 61c17-23 35-45 49-60m-49 58c11-16 24-32 46-59m-51 64 55-60m-54 60 52-59m-51 61c14-19 32-36 50-61m-48 60 49-60m-52 65c10-14 24-25 55-59m-55 59 54-60m-50 59c13-13 25-28 51-59m-52 62 50-62m-54 66c14-16 27-29 53-60m-53 59c18-21 35-40 54-58m-49 61 50-60m-51 59 50-61m-52 65c12-16 23-27 52-61m-53 60c15-15 29-32 54-60m-49 63 51-63m-52 64 51-63m-55 65 55-60m-54 59c15-15 29-31 53-59m-51 61 52-61m-52 62 53-61m-53 65c14-18 30-36 53-62m-55 62 56-60m-51 61 49-63m-50 64c11-15 23-29 51-62m-53 65c15-18 34-38 55-60m-56 61c15-20 34-39 55-60m-52 61c11-10 20-26 52-63m-53 64c12-15 24-31 52-62m-53 67c11-17 26-35 54-64m-55 63 54-61m-50 63c21-26 41-50 52-61m-54 61 52-63m-55 67c20-26 44-50 57-61m-56 61c21-25 44-50 56-62m-52 64 51-63m-52 64 52-65m-56 65c20-17 39-40 55-60m-54 62 56-63m-53 64 53-64m-54 65 54-64m-53 67c10-14 22-29 55-63m-58 64 57-63m-55 66c20-25 42-52 56-66m-54 65c20-24 39-50 54-64m-57 69c19-23 41-44 56-63m-56 61c18-18 33-37 56-61m-51 62 50-62m-51 63 53-64m-56 68c15-16 31-32 56-64m-57 65c19-23 39-43 58-65m-55 68 56-65m-57 64 55-67m-57 69c20-19 37-43 58-65m-59 66c21-20 38-41 60-64m-57 66c22-26 45-52 59-65m-57 65 54-66m-58 70c23-25 43-44 59-67m-58 66c15-15 27-32 57-64m-56 68c16-16 30-36 57-68m-56 67 56-66m-58 69c19-18 35-40 58-63m-59 63c16-16 28-32 60-65m-55 66 55-66m-56 68 57-68m-62 71c18-17 39-39 62-66m-60 66c16-18 32-37 61-67m-60 71 58-69m-56 68c18-19 33-41 57-69m-59 70c21-19 39-40 62-64m-63 65c25-27 48-53 62-66m-60 70c12-14 25-29 57-71m-56 70 58-70m-60 72c19-22 41-40 59-64m-59 66c19-24 40-45 60-67m-58 68 60-69m-59 71 58-71m-59 72c23-23 46-52 62-67m-65 69 63-68m-60 68c18-18 36-39 60-68m-58 71 57-71m-60 72c14-15 32-34 62-69m-63 71c22-26 45-52 63-70m-60 70c19-20 34-38 61-71m-61 72 61-71m-64 73c23-19 41-40 62-68m-62 70 62-70m-60 72 61-72m-59 72 59-71m-60 74c22-26 45-50 60-71m-63 72 64-70m-61 71c14-14 24-29 63-71m-61 72 59-73m-63 75c23-26 46-52 65-70m-65 71 64-71m-62 75c17-17 33-37 62-75m-60 73 61-73m-64 79 62-71m-63 69 64-71m-60 74c19-23 38-43 60-75m-61 74c19-21 37-43 61-73m-62 79c23-26 46-56 65-76m-67 74 66-72m-64 75c25-26 47-55 65-75m-64 75c17-18 31-36 64-76m-64 78c19-22 38-42 62-72m-64 73c15-17 30-35 66-73m-65 74 64-73m-62 75c14-16 26-34 63-75m-68 76c24-22 44-45 67-69m-65 71 67-73m-64 75 64-76m-64 77 62-77m-66 78c15-13 29-31 68-72m-66 72 67-72m-64 77c13-18 28-31 64-79m-64 78 64-76m-66 77c19-20 37-42 66-71m-67 73 67-74m-62 76c19-26 43-52 62-75m-65 74 66-75m-67 81 66-76m-68 75c27-28 55-58 68-75m-62 78c15-21 30-41 64-78m-67 78 65-78m-67 82c20-21 37-40 69-78m-68 76 67-75m-63 78 65-80m-66 81c12-16 26-32 65-78m-68 81c14-19 32-36 69-79m-70 77c26-26 50-55 69-75m-64 81c14-21 29-38 66-79m-68 77c18-20 33-38 66-80m-66 83c18-22 39-44 66-78m-68 78 69-77m-66 81c21-23 39-48 65-81m-66 81c27-31 50-60 67-81m-70 83c29-29 57-63 72-79m-70 79 70-77m-66 79c13-18 25-35 66-79m-68 78 67-79m-68 82c15-13 28-29 68-76m-68 77 69-78m-66 82 65-81m-67 79c18-18 33-39 69-79m-69 83c18-22 40-48 69-76m-72 77c19-19 36-39 71-79m-68 81c25-31 53-59 69-80m-69 81 69-83m-71 84c15-17 32-34 70-78m-69 79 70-79m-68 84 68-86m-69 84c17-19 30-37 70-82m-70 83 70-79m-72 81c16-17 32-34 72-81m-69 82 69-81m-68 82 69-81m-72 85 71-79m-70 78c21-23 43-46 71-81m-70 83c16-16 33-34 71-84m-71 85 71-82m-74 84 21-18m-19 19 20-21m-19 25c6-7 13-17 20-23m-19 22 18-24m11-13c10-13 23-28 42-45m-43 45c12-16 26-29 43-47m-42 48c11-8 18-20 41-48m-40 49 41-49m-72 87c4-6 9-9 10-13m-11 12 14-11m-10 13 8-15m-9 16 10-14m27-38c13-10 26-27 33-33m-30 34 29-32m-25 34 26-35m-29 35 30-34m-75 87c5-3 7-5 9-8m-8 9c2-4 5-6 10-9m-8 11 7-12m-6 11c1-4 4-7 7-10m42-52 24-21m-24 21 22-23m-20 24c5-3 9-13 18-24m-17 25 19-25m-75 90 8-6m-8 5 8-5m-4 7 4-7m-4 8 3-7m-6 9h3m-3 1 4-1m-1 3v-4m0 4 1-3"}),React__namespace.createElement("path",{stroke:"transparent",d:"M276 614c2-6 5-24 10-33 4-10 11-19 17-26 7-7 17-13 22-17l8-6c4-3 12-5 13-11 2-5 2 9-3-21s-22-128-26-159c-5-30-2-17-3-23l-2-15c0-4 1-8-1-9-3-1-7 1-11 1l-17-2c-4 0-9 3-13 4-3 0-8-4-9-2-2 2-1 6 0 13l2 32 10 198 1 28 1 46m0 1c2-5 5-21 10-31 4-10 11-22 18-29 6-7 17-11 22-14 6-4 7-3 10-6s8-7 10-12c1-5 2 10-2-20l-24-160-4-24-2-15c-1-4 0-6-2-7h-28l-14 2c-3 0-6-2-8 0v12l2 29c1 38 7 163 10 201 2 37 2 11 3 24l-1 50"})),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeLinecap:"round",strokeWidth:"4",d:"M276 613c1-5 6-23 11-33 5-9 11-17 18-24l19-15 10-9c4-3 11-7 12-12 2-5 4 11-1-19l-27-160c-5-31-1-17-2-24l-2-13c-1-4 0-9-2-10-3-2-7 0-11 0h-16l-14 1c-4 0-10-3-11-1-2 2 3 6 3 13 1 8-2-7-1 32l11 198 2 27 1 48m1 0c2-5 5-21 10-31 5-9 14-17 20-24l18-18 8-6c3-3 10-5 11-11 2-5 3 9-2-22l-25-160c-5-31-2-18-3-24l1-12c-1-4-1-8-3-10h-9l-17-1-15 2c-5 0-10 0-11 2-2 2 0 4 1 11s1-7 3 31l7 198c2 37 2 14 3 27l3 50"}),React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"#FFF6F0",d:"m275 626-20-52-11-9-23-19-13-7-11-3-1-9 15-233v-1h41l6 1v12l4 61 12 260"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"m276 625-12-22c-4-9-5-20-10-28s-12-14-20-20c-7-7-19-15-25-18s-9 1-11-2c-2-4 0-5 0-17l4-55 8-154c1-28-3-13 1-16s13 0 21 0c8 1 23-2 27 1 4 4-2-6-1 18l6 128 12 186m-1 1-9-26c-3-9-8-18-13-26l-19-20c-6-6-17-14-23-18-6-3-9 1-11-3-2-3-1-6-1-18l3-53 9-155c2-28-3-10 0-12 4-3 13-2 21-2s22-2 26 1-1-8 0 17l5 128 14 186"})),React__namespace.createElement("g",{fill:"none",fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{stroke:"#000",strokeWidth:".3",d:"M211 291s0 0 0 0m0 0s0 0 0 0m0 3h1m-1 0 1-1m-1 5 3-4m-3 4 2-3m-3 6c3-1 5-5 5-6m-5 7 5-7m-3 11 6-10m-6 9c0-4 4-6 6-9m-8 12c7-3 4-8 8-13m-7 13 12-15m-14 20c5-13 11-15 18-17m-19 13c8-6 15-12 15-17m-16 25c10-8 13-16 21-26m-19 24c3-4 9-11 18-19m-16 19c8-9 15-16 20-24m-23 26c8-6 9-9 23-23m-23 23c8-5 11-9 28-26m-25 31c5-8 10-15 22-27m-23 25c5-2 17-12 29-26m-28 28 24-30m-28 33c7-4 14-17 32-28m-31 32c8-12 20-23 30-36m-25 38c6-14 12-22 25-41m-29 41c10-14 19-25 32-36m-35 42 36-47m-34 44c16-15 31-33 34-42m-37 44c9-11 19-21 42-40m-39 40c15-14 26-29 40-41m-38 47c9-14 22-32 42-49m-45 48c10-11 21-24 40-50m-41 52c19-14 35-33 42-49m-41 49c17-15 29-30 46-51m-47 51c18-11 30-32 53-48m-50 52c10-14 20-23 47-55m-47 56c14-10 20-24 52-54m-53 55c17-15 28-33 50-56m-49 59c13-16 23-28 53-58m-52 57c10-14 25-27 49-59m-54 64c21-18 33-32 56-65m-53 64c16-19 34-38 54-59m-54 64c14-19 32-44 52-64m-53 63c14-16 31-31 54-60m-57 62c17-15 22-27 53-55m-50 55c15-16 28-32 53-57m-55 59c23-18 32-35 53-56m-51 58c12-11 22-26 54-58m-55 60c21-22 41-42 53-59m-53 61c15-14 29-30 55-60m-54 65c8-15 23-30 52-62m-50 59c6-14 20-23 51-62m-52 63c15-11 28-27 50-54m-53 56c21-25 46-46 56-59m-53 64c20-19 38-38 54-62m-54 62c14-16 30-34 51-63m-53 64c22-19 31-39 53-59m-52 60 52-59m-49 65c17-26 37-50 51-63m-56 62c16-17 29-30 57-63m-57 64c16-12 28-31 56-59m-54 62c10-15 21-30 55-65m-60 65c18-17 41-43 62-60m-56 63c18-24 38-48 53-64m-59 64c16-19 36-36 55-64m-49 67c12-17 28-34 54-63m-59 64c21-19 37-38 57-65m-53 65c11-16 25-29 54-62m-54 66c10-11 21-22 51-62m-52 61 56-62m-57 67c13-18 28-35 56-64m-56 63 56-63m-53 69c23-29 39-54 56-64m-60 60c22-24 48-48 59-64m-58 72c25-24 40-57 59-67m-59 64c25-27 46-52 58-67m-61 69c22-22 47-48 55-63m-52 65c22-24 41-50 58-65m-60 68 62-68m-59 66c18-19 35-42 56-65m-58 71 61-64m-61 63 59-65m-57 67 53-64m-55 64c23-21 40-48 59-65m-58 69c22-22 42-43 57-66m-56 68c10-15 20-30 58-66m-61 66c15-14 34-36 56-63m-54 65c14-21 32-40 56-67m-56 66c17-11 31-29 55-65m-56 69c18-21 38-42 57-66m-60 65c19-17 34-33 59-61m-57 63c21-21 39-43 60-66m-59 69c20-20 41-47 59-64m-59 66 58-69m-55 69c11-18 29-35 56-68m-58 72c19-24 39-49 57-68m-56 74c10-22 31-44 54-73m-58 69c24-25 44-49 61-69m-57 76c15-20 30-38 58-70m-63 68 61-70m-57 72c25-25 45-54 58-70m-58 69 60-69m-65 77c12-21 33-33 66-71m-63 68c18-24 38-46 60-72m-58 77c18-20 34-39 60-76m-60 72 58-71m-63 73c21-21 47-45 60-71m-59 74c18-18 36-37 64-71m-61 77c22-27 43-52 59-74m-59 71 59-70m-63 76c16-21 36-42 66-75m-63 71c13-13 25-29 63-71m-66 74c16-15 36-32 67-68m-66 71c23-23 44-46 64-74m-67 77c21-17 39-38 62-74m-60 72 64-72m-65 79c23-31 45-58 64-77m-60 73c16-21 38-41 63-72m-67 80c32-28 54-58 68-75m-64 69c15-20 32-41 61-71m-62 81c15-24 38-45 60-81m-62 79c18-22 35-42 66-74m-63 78c14-23 30-41 60-78m-62 76c15-19 28-35 64-73m-63 72c22-27 44-44 63-70m-65 72 65-75m-66 78c16-15 31-35 68-77m-66 76c23-26 46-54 66-72m-65 77c14-25 37-45 63-74m-64 73c15-17 29-32 64-74m-67 80c22-26 48-59 68-76m-67 75c23-25 46-50 67-76m-62 77c7-10 25-28 59-71m-62 73 65-76m-65 78c16-19 38-41 61-78m-61 79 66-76m-70 79c32-30 56-65 72-80m-67 82c22-29 43-55 66-78m-66 78c22-28 47-62 62-75m-64 76c17-18 32-36 66-77m-65 84c18-29 39-48 63-77m-65 72 68-75m-70 84c21-25 41-54 70-80m-69 76c17-16 33-35 69-76m-68 78c26-27 46-52 69-74m-70 73c24-24 46-49 69-75m-68 84c25-31 50-58 65-78m-66 76 69-81m-69 84c25-24 41-49 73-83m-73 82 70-80m-70 80c21-27 42-49 72-79m-71 83c19-24 41-48 70-80m-69 76c11-9 25-29 71-71m-71 73c23-22 47-49 66-74m-62 75c19-17 33-40 67-74m-67 74c22-23 45-50 63-72m-61 71 62-71m-64 76c14-20 31-39 66-77m-67 74c27-27 46-46 64-71m-61 71c15-17 28-33 62-67m-59 73c22-25 44-55 61-72m-61 71c16-18 30-39 60-71m-62 73c28-28 47-55 65-69m-63 66c23-26 47-50 61-65m-59 69c14-21 30-30 61-64m-59 60c21-23 38-46 54-62m-52 61c10-15 30-32 58-59m-60 61c20-22 39-39 56-61m-52 64c18-22 29-39 50-62m-53 63 56-64m-55 64c19-24 34-42 52-57m-49 55 50-57m-45 59c15-24 37-44 46-55m-49 54c18-19 32-38 51-55m-53 53c17-8 27-18 50-50m-48 54c9-12 22-22 50-55m-49 58c21-25 34-41 51-58m-47 57c7-15 19-25 46-54m-50 57c15-13 24-29 47-57m-43 54c12-11 21-23 46-52m-48 55c22-22 36-39 45-55m-42 55c16-20 29-34 46-53m-44 50c12-13 19-22 46-48m-45 53c10-18 21-28 40-53m-36 49c4-8 14-25 37-43m-42 45 44-46m-39 47c8-16 17-24 39-49m-42 52 39-48m-36 51c13-19 25-29 37-51m-37 48c10-10 16-22 39-47m-40 47c13-6 21-17 40-39m-40 41 40-46m-37 43c15-6 20-20 33-42m-31 47c8-13 15-19 33-43m-33 42c14-12 22-28 32-37m-31 36 35-40m-31 39c7-8 17-17 26-33m-32 35c8-7 17-15 34-36m-31 35c9-8 18-20 35-36m-34 42c8-13 19-23 32-37m-30 35c8-4 13-18 27-34m-27 34c10-13 18-22 30-34m-29 33c11-5 15-16 27-31m-28 33c12-10 24-24 32-32m-27 34c3-9 11-15 24-34m-27 36c13-13 25-27 28-32m-22 28 20-25m-23 30 24-32m-23 34 26-27m-26 25 24-28m-21 31c6-6 11-13 23-30m-25 28c5-8 13-14 22-28m-19 33c3-10 15-20 19-29m-21 28 21-29m-23 31c11-9 15-9 25-30m-21 28c4-6 8-13 23-26m-23 27 23-22m-21 22c5-10 16-16 19-22m-20 27c3-12 13-12 16-28m-14 24c4-3 9-9 17-21m-17 27c2-10 8-11 17-22m-15 19 16-22m-20 20c7 0 12-4 19-13m-14 19c2-8 10-16 14-21m-15 19c0 1 6-8 18-17m-17 18 15-19m-14 20c6-2 3-6 19-18m-20 20c4-6 11-12 17-19m-15 17c4-2 11-8 13-16m-14 20c4-6 6-10 14-17m-9 15 9-10m-12 14c4-7 10-10 15-15m-14 20c4-9 7-10 12-15m-11 11 12-16m-12 20c-1-2 7-10 9-14m-11 11c6-1 8-7 16-14m-11 22c-1-11 6-11 9-16m-11 11 12-14m-10 14 6-11m-9 13c6-5 10-9 10-13m-9 18c0-7 5-5 9-12m-9 10c4-3 9-8 12-14m-11 14 9-13m-8 14c3-3 6-5 8-9m-6 11c2-1 6-6 6-8m-8 9c4-3 7-5 9-11m-6 10c-1-2 7-4 6-8m-7 11c-1-1 3-6 9-10m-9 14c1-4 3-6 6-11m-8 9 10-9m-8 9c3-2 2-3 10-6m-10 7c2 0 3-3 8-9m-8 13c2-2 8-5 7-10m-5 9 6-8m-6 9 7-6m-6 8 5-8m-5 9 5-4m-6 5 7-7m-5 8c1-2 4-2 4-6m-3 7c0-3 2-4 3-6m-3 8 5-5m-5 5 4-5m-4 6c2 0 3 0 4-3m-3 4 3-5m-3 7 4-4m-3 4 2-3m-1 4 2-2m-3 3 2-3m-1 5 1-1m-1 1 2-2"}),React__namespace.createElement("path",{stroke:"transparent",strokeWidth:".5",d:"m277 624-11-21c-4-9-7-22-11-30-5-8-10-13-17-19-8-6-22-15-29-18-6-3-10 1-12-1-2-3 1-5 2-17l4-55 8-153c2-29-2-15 1-17 4-2 13 2 21 2s23-3 27-1c4 3-4-8-3 16 2 24 7 76 10 128 3 53 6 155 7 186m0 5-10-31-11-23c-4-7-7-13-13-19-7-6-19-16-26-20-7-3-12 0-15-3-2-4 1-5 2-17v-53c1-35 4-127 7-156 2-28 2-14 6-16 5-1 13 7 20 7 8 0 19-7 23-4s-1-3 0 21c2 24 7 71 10 122l6 186"})),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeLinecap:"round",strokeWidth:"4",d:"m275 627-10-24c-4-9-6-20-11-27-5-8-12-13-19-19l-25-19c-6-4-10-1-12-4-2-4 0-5 0-17l4-55 9-154c2-28-2-12 2-14 3-2 10 0 18 0s23-3 27 1c5 3-2-7-1 18l6 129 12 184m2 0-13-25c-4-9-5-17-10-25a124 124 0 0 0-45-38c-6-3-8 1-10-2s0-5 0-17l3-54 8-155c2-28 0-11 4-13 3-3 10-2 17-2 7-1 22-4 26-1 4 4-2-3 0 21l9 127 9 183"}),React__namespace.createElement("path",{fill:"none",stroke:"#E6E6E5",strokeLinecap:"round",strokeWidth:"10",d:"M460 1010s0 0 0 0m0 0s0 0 0 0m0 0-10-21m10 21-10-21m0 0-11-19m11 19-11-19m0 0-11-17m11 17-11-17m0 0-13-15m13 15-13-15m0 0-13-14m13 14-13-14m0 0-14-11m14 11-14-11m0 0-16-10m16 10-16-10m0 0-16-9m16 9-16-9m0 0-17-6m17 6-17-6m0 0-18-5m18 5-18-5m0 0-19-3m19 3-19-3m0 0-20-2m20 2-20-2m0 0-21 1m21-1-21 1m0 0-22 2m22-2-22 2m0 0-24 4m24-4-24 4m0 0-24 5m24-5-24 5m0 0 6 29m-6-29 6 29m0 0 2 27m-2-27 2 27m0 0v26m0-26v26m0 0-4 26m4-26-4 26m0 0-7 24m7-24-7 24m0 0-9 24m9-24-9 24m0 0-11 24m11-24-11 24m0 0-13 25m13-25-13 25"}),React__namespace.createElement("path",{fill:"none",stroke:"#6d6d6d",strokeLinecap:"round",strokeWidth:"10",d:"M190 890s0 0 0 0m0 0s0 0 0 0m0 0 6 27m-6-27 6 27m0 0 2 26m-2-26 2 26m0 0v26m0-26v26m0 0-3 25m3-25-3 25m0 0-6 25m6-25-6 25m0 0-9 26m9-26-9 26m0 0-12 25m12-25-12 25m0 0-15 26m15-26-15 26"}),React__namespace.createElement("g",{fill:"none",fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{stroke:"#ea0",strokeWidth:".3",d:"M137 269s0 0 0 0m0 0s0 0 0 0m0 0c3-5 5-6 12-12m-11 15c2-4 7-9 11-13m-11 10c2 2 6-7 25-17m-25 19c7-5 16-15 20-21m-17 23c9-4 11-13 24-25m-23 25 20-23m-19 23c4-7 18-21 22-26m-25 31c5-9 13-17 27-32m-28 29c13-12 19-16 28-29m-24 30c6-7 11-14 25-26m-23 33c10-12 20-28 28-36m-29 34c8-9 13-20 28-34m-30 37c16-16 23-29 35-35m-34 32 32-31m-29 35c7-14 18-16 34-33m-32 29c11-11 19-24 27-32m-27 32c5-8 19-18 35-32m-37 34c13-12 24-21 34-34m-30 37c12-14 17-24 30-39m-32 40 35-40m-35 42c14-18 23-30 35-38m-33 36 34-38m-29 40c10-17 26-32 32-38m-35 37c13-13 23-27 37-38m-40 37c15-5 22-12 39-37m-37 41c7-9 18-17 39-43m-38 47c18-22 28-35 43-50m-39 49c5-14 15-21 38-46m-43 49c14-12 22-26 43-52m-39 49c11-10 19-20 41-47m-42 50c20-21 33-36 42-52m-40 52 44-50m-41 47c11-12 18-22 45-48m-45 53c10-17 21-27 40-53m-34 48c4-9 14-26 37-45m-43 47 46-47m-39 46c8-16 18-25 42-52m-46 55c13-14 25-28 43-51m-39 54c15-21 28-32 42-57m-41 54c10-12 18-26 43-52m-43 50c14-7 23-20 44-45m-44 47c15-19 32-37 45-52m-41 48c17-9 24-25 40-50m-38 55c10-15 18-23 40-51m-38 48c16-15 27-34 39-46m-39 45c14-14 26-29 43-49m-38 47c10-12 23-24 36-44m-41 46c10-10 21-20 43-47m-40 45c13-13 26-29 46-48m-45 54c11-17 25-30 42-50m-39 47c10-8 18-24 40-49m-40 49c14-18 27-31 43-48m-40 46c14-11 24-26 40-47m-42 48c18-16 34-36 46-47m-40 48c8-13 19-25 39-52m-42 54c20-20 37-40 43-49m-35 44c12-17 26-32 36-45m-40 49 41-51m-38 52 44-47m-44 45 42-49m-38 50c10-10 19-22 42-51m-44 49c11-13 23-25 42-49m-37 53c9-18 29-37 39-53m-41 52 42-53m-42 53c16-14 24-19 46-55m-42 53c9-12 18-25 43-51m-42 50 45-47m-43 47c13-19 32-34 40-47m-40 52c8-19 25-26 40-56m-38 51c9-9 20-21 40-48m-39 52c10-18 23-27 42-50m-39 47 40-50m-42 46c13-8 24-19 44-42m-40 48c11-16 27-34 40-50m-38 46c6-7 18-23 43-47m-42 47 40-48m-38 47c13-9 17-21 45-47m-46 50 43-49m-39 45c13-13 30-30 40-48m-41 51c12-13 21-26 41-47m-35 45 37-44m-40 47c13-17 29-32 43-47m-40 50c13-19 26-31 41-49m-40 45c9-10 20-22 41-49m-39 50c5-8 21-24 38-46m-40 44c14-11 26-27 45-48m-38 53c8-20 25-31 39-49m-41 44 41-47m-37 45c6-7 15-17 36-46m-39 49c17-19 33-36 41-49m-39 52c8-17 22-22 40-48m-40 46c15-16 30-33 44-51m-41 48c6-9 15-17 41-50m-40 52 41-47m-35 46c9-11 22-26 35-44m-39 46c14-15 26-27 41-48m-34 43c8-16 32-32 37-45m-39 48c5-8 16-22 42-47m-41 51c6-13 16-22 38-51m-41 48c17-18 34-34 45-48m-41 45c12-11 16-21 46-45m-45 47c9-8 17-20 42-49m-41 52c13-17 34-32 41-52m-39 49c13-11 23-27 41-47m-39 45c9-13 17-17 44-47m-42 51c12-18 26-30 41-50m-40 48c15-15 25-23 41-45m-43 47c12-13 26-27 45-51m-41 49c12-15 27-25 43-51m-40 53c12-20 29-37 40-51m-39 52c9-12 22-24 45-52m-45 51c15-19 28-35 43-51m-43 49c14-10 23-17 46-47m-44 50c14-16 24-32 44-52m-44 53c11-10 17-20 49-55m-45 52c13-18 31-35 41-48m-38 45c5-8 19-19 45-48m-48 49c19-16 32-34 45-48m-41 54 41-49m-41 47c16-19 32-40 45-50m-40 51c8-14 22-30 36-55m-37 53c17-18 31-37 41-49m-36 47c11-18 27-33 37-50m-38 50 41-48m-41 49c8-13 22-25 46-48m-46 48c12-11 23-23 42-50m-37 47c13-16 22-31 42-46m-46 48c12-8 19-20 46-49m-38 54c9-23 30-38 39-54m-43 50c15-20 35-37 45-49m-42 47 40-47m-38 48 40-48m-37 50c13-17 26-36 44-49m-47 47c10-10 17-20 42-49m-34 50c9-15 24-28 34-47m-36 45c10-13 23-25 41-45m-44 47c18-23 35-42 46-46m-43 45c19-18 34-34 44-49m-40 47 38-43m-38 44c14-14 26-28 41-49m-38 52c9-17 23-26 42-53m-44 51c13-16 29-29 44-46m-39 44c17-19 31-33 42-49m-42 52c16-16 29-36 40-47m-40 48c8-15 17-23 46-50m-46 47c15-15 28-31 44-45m-38 47c9-18 23-32 43-48m-45 47c11-13 27-28 43-49m-40 51c13-17 20-32 43-49m-43 49c17-17 28-35 43-48m-40 46c14-17 31-32 42-48m-44 47c14-14 28-34 42-47m-37 50c12-14 22-26 37-49m-37 47c13-17 25-33 40-47m-35 45c10-12 23-31 42-44m-45 47c13-17 22-27 44-50m-43 51c10-15 22-30 45-47m-45 44c17-16 32-37 43-46m-41 43c11-11 24-18 45-44m-43 48c15-19 33-36 39-46m-38 47c11-17 26-27 43-41m-40 38 36-41m-36 46c14-15 27-30 36-45m-34 40c7-11 19-23 37-41m-36 46c10-16 26-30 37-47m-37 46c10-10 20-20 37-41m-33 39c11-11 17-22 37-42m-37 40c8-7 17-15 35-38m-34 39c11-15 22-23 37-41m-36 41c10-10 19-19 34-38m-29 41c7-12 15-24 33-36m-33 35 30-38m-28 36c10-8 22-25 29-35m-29 37c8-11 19-22 27-36m-22 33c5-9 15-18 27-31m-31 33c10-11 23-26 29-35m-30 34c10-13 26-24 33-31m-29 31c10-7 15-18 26-30m-20 34c0-10 7-13 20-30m-22 27c6-7 12-13 23-30m-24 28c11-6 15-13 27-31m-24 33c8-7 12-15 25-28m-18 27c-1-6 13-18 17-26m-20 28c6-12 14-19 22-27m-21 24c9-7 17-16 19-20m-20 19 23-23m-228 28s0 0 0 0m0 0s0 0 0 0m3 0-7-7m7 7-8-8m11 5c-9-2-15-11-14-15m16 17c-6-4-11-9-19-13m22 17c-14-12-22-18-27-29m27 27-27-24m31 23c-14-6-19-18-30-26m29 26c-15-9-26-20-32-29m32 30c-3-5-15-17-31-33m30 30-30-28m31 27c-9-7-19-21-28-27m30 27-34-26m36 31c-9-13-22-25-30-34m32 33c-5-7-15-16-32-32m39 30c-11-10-23-12-37-31m34 32c-11-12-20-19-35-32m35 30c-8-14-27-28-31-29m35 28c-16-10-29-26-41-30m41 30c-9-11-21-19-35-31m36 31-40-32m44 31c-17-8-30-24-41-32m41 33c-13-7-25-21-42-33m43 37c-7-12-20-24-38-38m42 38c-16-15-32-27-45-40m49 42c-15-11-29-25-43-43m39 39c-10-11-24-22-45-38m52 41c-14-10-26-19-49-39m46 35c-18-12-32-29-44-37m45 35c-15-11-28-29-48-40m52 44-51-40m51 37c-9-10-18-14-51-37m52 40-48-44m52 42c-20-11-30-27-55-43m53 45-49-45m52 45c-19-15-35-33-49-48m48 46c-10-10-20-21-50-43m54 47c-15-22-34-37-52-46m54 41-55-45m54 46c-16-16-26-29-50-45m55 45c-22-18-44-36-58-45m61 50c-19-22-40-38-55-52m52 49-54-48m58 44c-14-15-35-28-56-44m58 45c-20-13-36-28-57-47m55 48c-12-13-20-15-55-50m59 49c-14-9-25-20-55-46m53 50c-12-16-26-28-49-55m53 52c-12-11-27-21-55-49m56 51c-17-21-41-33-57-50m60 51c-22-16-39-35-56-50m61 51c-17-16-36-33-61-52m58 49c-20-18-35-35-55-50m59 46c-14-9-36-27-53-42m52 47c-16-15-28-27-57-51m62 47c-22-15-49-36-56-43m53 47c-17-17-35-32-53-51m55 51c-6-9-22-23-54-48m57 46c-13-9-28-21-56-49m55 52c-14-19-37-37-57-49m60 45-58-48m57 51c-10-14-32-31-54-52m57 51c-12-14-29-26-56-48m64 45c-17-16-34-30-60-46m56 47-57-47m63 44c-20-12-35-20-60-41m56 46c-14-11-28-25-53-49m61 46c-19-12-33-24-64-46m62 47c-15-13-33-24-57-47m57 48c-19-20-44-36-52-50m52 51-53-48m55 45c-6-5-21-14-56-43m58 46c-15-17-34-32-56-49m58 50c-11-12-26-24-53-50m53 50-57-52m64 54c-20-24-40-38-61-49m58 43c-15-10-28-22-57-48m63 51c-24-24-49-41-61-50m58 51c-15-13-28-28-55-51m56 46c-13-12-31-30-58-47m61 51c-20-18-35-32-59-50m64 47c-17-10-37-25-55-47m52 49c-19-17-38-34-56-48m59 46c-15-16-31-28-53-50m54 52c-17-15-33-26-58-49m61 46c-18-14-44-31-59-48m60 51-57-48m59 47c-16-10-35-24-60-46m61 46c-17-11-31-26-57-46m58 46c-13-12-26-17-53-51m53 50c-17-11-35-29-57-47m62 46c-15-11-27-21-61-50m57 53c-15-16-30-29-54-49m61 47c-15-12-33-26-58-48m55 51c-18-19-42-41-54-49m55 48c-12-16-26-32-52-50m57 49c-18-13-35-30-56-48m55 47-50-50m52 51c-15-12-32-27-55-49m55 47c-16-13-35-29-56-50m60 52c-21-22-46-41-58-49m60 53c-14-14-20-26-57-53m58 50c-21-20-42-39-55-47m54 45c-5-5-25-20-52-50m56 51c-19-19-42-36-58-49m60 47c-18-13-39-26-52-49m53 52c-20-16-39-31-57-51m56 52c-11-15-27-29-57-54m60 50c-17-13-37-30-57-48m63 48c-23-11-46-28-56-42m52 43-54-46m58 46-57-48m58 47c-22-15-41-31-56-46m56 45c-19-10-31-32-54-44m55 45c-12-8-26-21-57-47m61 49c-18-14-36-37-53-50m53 52-57-52m58 50-55-47m56 45c-11-9-22-17-53-47m60 46c-25-12-42-35-56-48m54 49c-12-11-25-19-57-48m60 48c-17-11-34-25-59-47m60 50c-18-14-33-27-58-50m62 46c-22-11-36-28-56-43m51 46c-11-11-19-20-53-49m58 50c-18-21-38-39-55-52m55 52c-15-14-30-28-55-48m59 45c-15-12-27-24-58-47m55 47-55-48m62 50c-22-17-40-29-56-52m54 54c-13-17-29-28-55-51m62 47c-20-14-42-28-63-45m58 48c-20-21-43-40-56-52m63 54c-15-17-33-32-60-55m57 49c-21-15-38-30-57-47m62 49c-20-15-36-29-55-48m53 49c-16-16-32-32-55-50m61 47c-26-15-46-34-58-49m53 52c-12-14-24-24-52-49m53 47c-9-16-18-22-50-50m50 48-51-46m54 44c-13-10-26-23-48-40m50 42c-15-10-28-22-54-43m56 40c-19-16-37-33-51-43m50 45c-18-17-36-33-51-42m48 39c-10-9-26-23-44-44m48 44c-11-8-20-17-51-40m52 39c-11-7-22-19-44-43m43 43c-18-13-31-27-48-42m51 37c-19-12-37-30-49-37m47 41-44-38m45 37c-15-8-25-23-40-41m42 40c-7-5-17-15-46-36m47 32c-11-4-25-16-43-30m41 34c-12-14-29-32-39-37m41 36c-15-17-27-24-36-33m35 31c-14-10-27-23-37-33m38 29c-12-5-15-15-34-27m36 29c-12-8-24-17-37-33m42 32c-16-13-29-22-40-28m35 29c-11-13-26-22-36-32m38 31c-3-11-15-15-34-29m35 30c-8-10-16-18-34-32m35 31c-9-6-12-16-32-31m32 31c-10-9-21-17-35-31m37 28-33-30m33 30c-7-9-17-15-33-30m33 31c-8-11-18-19-26-26m26 21c-9-7-19-18-28-23m32 25c-9-8-14-15-29-26m28 24c-12-8-22-19-30-24m30 22c-7-2-10-13-27-26m26 27c-5-7-13-13-26-24m17 13c-5-3-7-7-13-15m12 12c-4 0-6-4-14-8"}),React__namespace.createElement("path",{stroke:"transparent",strokeWidth:".5",d:"M160 294c-10-1-8-9-26-22m23 24c-6-8-12-13-21-27m1 0c5-5 16-11 21-25m-21 25 25-22m-3-1c86-2 164-7 206-5m-202 7c70-1 138-1 202-4m0 0c3 10 11 15 17 24m-19-24 20 23m2 5c-6-1-10 10-25 24m23-29-20 25m-3 4c-61 0-123-4-204 1m205-5-205 5m0-1s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0m0 0s0 0 0 0"})),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeLinecap:"round",strokeWidth:"4",d:"M153 298c0-10-9-23-15-29m19 23c-8-6-14-14-21-25m1 4c4-9 16-15 21-29m-23 27c8-8 14-14 27-22m1 1c50-4 103-3 198-6m-200 5c46-2 90-3 201-3m2-4c9 6 16 22 20 27m-23-25 22 23m-1 1c-7 10-12 15-19 21m21-22c-9 10-17 19-20 25m-1 0c-64 2-119 5-208 4m207-5c-48-1-97 2-207 4m1 1s0 0 0 0m0 0s0 0 0 0"}),React__namespace.createElement("g",{fillRule:"evenodd",strokeLinecap:"round"},React__namespace.createElement("path",{fill:"#FFF6F0",d:"m305 241-9-42-4-18v-21l6-46 9-35 11-32 8-17-10 1-27-4-20-12-11-8-14 11-16 8-25 7-8-4-4 9 21 70 9 43 1 36-5 57 6 2 78-4"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"M303 241c-1-10-11-36-11-61 0-24 7-62 11-85 5-22 12-39 16-50 3-11 7-11 7-14-1-3-2-1-8-2s-21-1-29-4c-9-2-16-7-21-10s-6-7-9-8c-2 0-2 2-6 5-5 3-14 12-22 15-9 3-24 3-30 4-7 0-7-3-8 0-1 2 1 8 2 13l5 15a771 771 0 0 1 22 106c2 16-1 27-1 37l-1 25c-1 6-3 12-1 15s6 2 14 2l34-2 36-1m-1 0c-1-11-8-38-8-63 0-24 5-60 9-82s12-39 16-50c4-12 9-15 8-18 0-2-5 4-11 3a170 170 0 0 1-49-16c-5-3-4-8-6-9-2 0-3 2-8 5s-13 10-21 14c-9 3-22 4-29 5s-11-3-13 0c-1 2 2 9 4 14 2 4 4 4 7 14s9 29 12 47a465 465 0 0 1 10 97l-1 22c-1 7-4 17-3 20 2 3 4 0 13 0h36l35-4"})),React__namespace.createElement("g",{fill:"none",fillOpacity:".8",fillRule:"evenodd",strokeLinecap:"round",strokeOpacity:".8"},React__namespace.createElement("path",{stroke:"#c24c0e",strokeWidth:".5",d:"M191 30s0 0 0 0m0 0s0 0 0 0m-1 5c2 0 3 0 5-6m-4 7 6-5m-4 8 8-9m-7 9c2-3 5-7 7-7m-4 13c2-9 5-10 7-13m-10 11c6-5 7-8 14-13m-8 20c1-5 8-13 13-23m-16 20c7-8 11-14 17-18m-18 25c3-11 8-14 22-22m-20 23c7-11 17-24 23-27m-25 30 27-29m-24 28c8-8 12-16 25-29m-23 34c2-6 9-17 27-39m-29 39c7-7 16-15 33-35m-34 40c14-13 20-18 45-46m-41 47c16-18 30-38 41-47m-40 46c13-16 33-34 56-60m-58 65c18-18 34-37 56-65m-57 71c15-19 33-35 65-72m-59 69c14-16 26-33 54-64m-56 70c17-23 40-41 56-70m-53 69c20-25 45-53 58-65m-62 73c15-17 31-29 61-72m-58 70c21-27 46-51 60-70m-55 76c19-24 40-49 63-73m-66 71c16-19 31-38 63-71m-59 76c18-27 36-47 62-75m-64 74c14-18 33-33 63-73m-61 78c24-31 50-58 70-78m-71 79c23-33 48-59 66-80m-63 87c21-34 43-56 67-82m-71 77c24-24 45-46 71-80m-65 85c21-22 42-43 70-80m-71 83 71-86m-69 91c24-37 54-65 71-86m-73 85c16-24 36-46 75-88m-77 96c31-35 66-75 84-91m-81 85 79-90m-79 100c15-20 34-46 80-94m-79 89c32-35 65-72 82-93m-85 101c28-27 51-53 91-98m-88 97c18-23 38-45 87-99m-90 105c28-27 46-50 93-105m-88 104c28-32 56-62 88-104m-87 110c17-25 37-42 90-108m-93 108c25-27 51-55 95-107m-93 113c19-23 44-47 95-114m-93 114c30-33 59-70 97-114m-98 121c37-43 75-94 102-118M220 150c27-34 52-65 103-119m-99 121c30-36 67-77 99-122M220 155c27-31 49-58 106-122M223 162c40-45 79-92 103-117M221 161c23-27 44-55 103-117M222 166c17-25 44-48 98-113m-97 112c20-27 45-56 94-112m-96 122c35-39 73-81 96-112m-93 108c27-35 51-65 92-107m-96 114c21-27 41-46 89-95m-85 94c17-22 39-47 82-94m-79 98c14-22 39-50 74-93m-77 96c22-31 52-60 80-94m-77 99c13-20 27-34 78-90m-82 87c24-23 42-46 81-90m-81 98c25-31 59-66 76-94m-76 95c23-24 42-47 78-92m-81 94c20-13 31-32 85-87m-84 91c17-22 35-38 81-91m-76 100c22-36 50-65 77-90m-80 85c17-22 36-43 77-87m-82 100 83-90m-80 88c29-34 56-66 79-90m-78 98c16-22 35-45 74-94m-73 90c23-28 44-50 73-87m-71 95c16-25 38-44 71-83m-74 81 74-85m-76 96c30-36 54-64 76-87m-74 82c25-30 49-60 71-84m-73 96c18-23 37-46 74-88m-77 85c30-34 56-63 75-87m-72 93c34-40 60-66 77-84m-72 80c22-26 43-53 69-81m-63 79c17-17 30-33 62-77m-66 78 67-75m-56 73c18-22 47-49 56-67m-60 70 60-68m-56 71c20-32 48-56 57-64m-56 62c19-24 39-47 57-63m-48 59c8-15 27-25 47-51m-49 54c13-17 23-30 49-58m-42 55c15-13 23-31 38-51m-38 53c10-17 25-31 43-50m-42 47c10-6 13-13 38-44m-36 46 36-41m-28 43c10-17 27-27 31-41m-33 42 32-40m-28 36c6-7 14-12 32-28m-31 30c6-9 16-16 27-32m-25 33c15-10 16-18 26-32m-25 30c7-7 14-15 27-25m-16 25c-1-5 8-17 15-19m-18 20c5-4 11-10 20-25m-16 21c6 1 14-11 14-14m-12 18c3-6 7-9 15-18m-12 19c1-2 7-11 13-13m-13 13c3-6 5-8 14-14m-6 12c2-4 3-7 7-8m-7 8 5-7m0 7 2-2m-3 1 2-2m-84 4s0 0 0 0m0 0s0 0 0 0m6 0s-4-4-7-4m8 4-7-5m10 2c0 1-4-6-12-6m13 9-10-9m20 10c-8-5-11-7-16-19m11 16c-3-1-6-5-14-12m22 16c-12-8-14-12-19-20m18 18c-6-4-10-11-21-18m25 17c-1-2-12-8-25-24m26 27c-7-12-18-20-28-27m33 23c-5-6-16-21-29-30m31 31-34-29m42 31c-5-11-13-17-39-35m39 34-42-36m44 39c-8-13-23-26-44-39m48 35c-12-8-19-17-46-40m50 43c-20-18-37-32-47-46m48 42-50-43m59 43c-24-20-48-40-60-52m58 55c-24-19-46-38-59-51m61 49c-13-18-37-35-62-53m65 53-61-55m68 54c-17-21-40-32-66-58m65 60c-17-18-35-30-68-58m74 53c-24-17-53-43-74-56m73 62c-25-25-48-46-72-65m80 62c-23-18-45-39-84-67m83 69c-30-26-57-53-78-69m79 68c-20-22-41-41-80-76m83 72c-30-24-56-48-83-73m83 64-81-67m77 70c-21-14-42-33-80-69m79 66-83-72m86 69c-28-21-51-40-81-71m78 64c-23-21-44-36-76-68m74 69c-27-22-54-48-79-68m81 59c-25-17-45-36-83-65m81 67c-31-27-63-57-79-69m82 59c-31-13-54-33-81-68m75 72c-15-16-31-30-77-69m74 61c-25-20-48-43-76-63m75 60-73-64m77 62c-25-21-54-42-76-68m73 66-77-66m74 58c-11-15-33-28-77-61m81 63c-26-19-48-39-79-66m77 63c-27-31-56-51-78-68m81 68c-32-27-63-55-82-69m81 60c-20-18-47-43-85-66m83 69c-25-25-55-47-82-72m83 64c-28-23-57-48-83-74m83 76-83-74m86 68c-23-17-46-38-89-77m85 79c-18-13-32-29-85-77m88 71c-31-27-66-50-93-80m90 79c-32-27-67-54-87-74m86 73c-20-26-48-52-86-82m90 79c-27-25-54-50-91-80m90 72c-22-17-48-41-92-75m94 76c-23-13-40-30-93-79m94 76c-24-21-50-47-100-84m98 86-94-84m95 77c-22-16-42-38-94-83m95 83c-25-17-47-36-99-85m103 82c-39-30-74-60-102-85m99 85c-42-38-82-71-103-87m101 82c-35-34-79-65-104-92m106 91c-35-27-66-56-102-88m101 87c-39-33-76-68-104-95m106 90c-26-20-54-47-104-91m107 84c-30-19-52-41-107-85m102 88c-40-32-80-70-106-92m110 91c-29-20-50-43-104-91m104 88L197 31m106 82c-34-23-55-44-100-87m96 85c-34-26-67-57-97-84m98 81c-28-27-62-53-92-85m93 83c-28-21-52-47-96-79m99 76c-38-26-72-58-93-74m91 75c-23-20-43-35-90-80m93 72c-24-17-45-36-88-69m86 72c-27-19-48-39-85-73m85 66c-30-25-64-51-83-71m82 73c-27-24-57-53-81-70m84 67c-19-14-35-30-74-63m73 62c-14-13-33-25-75-67m76 66c-24-26-47-41-75-64m73 59c-14-12-33-27-71-64m70 58c-19-25-51-42-69-59m71 62c-20-19-42-37-66-62m66 60-62-59m65 56c-25-21-53-43-66-56m67 50c-28-19-51-40-69-55m71 55c-23-18-46-38-69-53m67 52c-10-9-29-22-65-56m67 55c-26-23-47-42-64-53m63 51-61-56m62 55c-21-22-48-44-62-55m63 49c-18-12-40-29-55-49m56 51c-13-13-29-25-57-53m61 50c-23-14-41-35-49-44m46 42-48-42m0 2-8-10m9 10-10-8m62 41c-12-5-18-11-35-27m34 32-36-31m37 28c-7-4-14-9-26-29m25 26c-9-7-22-16-28-22m33 20c-13-6-16-12-27-17m22 17c-2-5-7-12-22-22m22 18c0-7-10-12-10-19m13 16c-4-2-14-10-15-14m16 15c-4-3-5-12-13-14m15 12c-6-5-12-10-12-12m12 6c-2-1-6-4-5-5m5 6c-3-3-4-5-7-5"}),React__namespace.createElement("path",{stroke:"transparent",d:"M300 239c-2-10-8-38-8-62 1-24 6-60 11-82s13-41 17-52c3-11 7-12 6-15-1-2-5 0-12-1s-21 0-29-2-13-7-18-10c-4-2-5-7-8-7-2-1-2 2-7 5s-14 10-23 12c-8 3-21 3-28 3-6 1-8-2-9 1-1 2 1 12 2 17l3 12c3 10 10 28 14 46l7 62c2 16 2 27 2 37l-2 25c-1 6-1 11 1 14s4 3 12 3l37-4 32 1m5-6c-3-10-14-34-14-57s8-59 11-81l11-54c4-11 10-13 10-15 1-2 0 4-6 3-7-1-23-8-32-11-8-2-15-4-20-7-5-2-7-9-9-9s2 3-2 7c-5 4-14 12-23 16-10 4-26 6-32 7s-5-3-6-1v12l4 10c4 11 12 32 16 51 5 18 9 45 10 61s-5 27-6 37c-2 10-4 18-3 24 1 7 4 14 7 17 2 2 1-3 7-3 7 0 21 3 33 3s31-4 38-5"})),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeLinecap:"round",strokeOpacity:".8",strokeWidth:"4",d:"M301 240c-2-10-9-37-9-62 0-24 4-60 9-83 4-22 13-40 18-50 4-11 8-13 7-15 0-3-3 0-9-1l-28-5-22-7c-5-3-7-8-9-9-3-1 0 1-5 4s-15 10-24 13-23 5-29 6-8-3-8 0c-1 2 2 8 3 13l3 14 13 47c4 18 7 44 9 60s1 25 1 35l-1 26c0 7-4 13-2 16s6 1 14 1h33l37-2m1-1c-2-10-12-37-12-61 0-23 7-60 12-83 5-22 13-40 16-51 4-11 7-12 6-15s-5-1-11-1l-25-3c-8-2-18-6-23-9s-4-9-7-10c-2-1-3 2-8 5s-13 11-21 14-22 5-28 5c-6 1-9-3-10-1s1 8 2 13l4 15c3 10 10 31 14 49s9 43 10 59c1 15-2 24-3 34v27c0 7-2 14 0 17 2 2 4-1 12-2l34-1 37-1"}),React__namespace.createElement("g",{strokeLinecap:"round"},React__namespace.createElement("path",{fill:"#ff0800",d:"M257 42c2 0 7 1 9 3 3 2 5 6 5 10v15c-1 4-3 6-5 8l-9 3c-3-1-6-3-8-7-2-3-3-8-3-13 0-4 1-9 4-12 2-3 8-5 10-5h2m-6-1c3-2 5-2 7 0 3 2 7 6 9 10 1 4-1 9-1 13-1 4-1 8-3 10-2 3-6 6-9 6s-8-2-10-5c-3-3-4-9-4-13s1-8 3-11l6-9c2-1 2 2 2 2"}),React__namespace.createElement("path",{fill:"none",stroke:"#000",strokeWidth:"4",d:"M257 42c2-1 6 1 8 2 2 2 5 6 6 10s2 9 1 13c0 4-3 9-6 11-2 3-6 4-9 4l-7-8-4-12c0-4 0-9 2-12 1-3 7-6 9-7 1-1 1 1 1 1m5 0c3 1 6 5 8 8s3 8 2 12c0 4-4 9-6 12s-4 5-6 5c-3 0-6-3-9-5-3-3-6-6-7-10s1-11 3-14c2-4 4-7 7-8h10"})))},saveIcon=e=>React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:e?"var(--color-accent)":"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"}),React__namespace.createElement("polyline",{points:"17 21 17 13 7 13 7 21"}),React__namespace.createElement("polyline",{points:"7 3 7 8 15 8"})),penIcon=e=>{var t,n,r,i,o,a,s,l,c,T,Q,d;switch(e.type){case"highlighter":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{fill:null!==(t=e.strokeColor)&&void 0!==t?t:"var(--icon-fill-color)",strokeWidth:"2",d:"m9 11-6 6v3h9l3-3"}),React__namespace.createElement("path",{fill:"none",strokeWidth:"2",d:"m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4"}));case"finetip":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:null!==(n=e.strokeColor)&&void 0!==n?n:"var(--icon-fill-color)",stroke:null!==(r=e.strokeColor)&&void 0!==r?r:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{strokeWidth:"2",d:"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"}));case"fountain":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{fill:null!==(i=e.strokeColor)&&void 0!==i?i:"var(--icon-fill-color)",d:"m12 19 7-7 3 3-7 7-3-3z"}),React__namespace.createElement("path",{fill:"none",d:"m18 13-1.5-7.5L2 2l3.5 14.5L13 18l5-5z"}),React__namespace.createElement("path",{fill:"none",d:"m2 2 7.586 7.586"}),React__namespace.createElement("circle",{fill:"none",cx:"11",cy:"11",r:"2"}));case"marker":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512",fill:null!==(o=e.strokeColor)&&void 0!==o?o:"var(--icon-fill-color)",stroke:null!==(a=e.strokeColor)&&void 0!==a?a:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M331 315l158.4-215L460.1 70.6 245 229 331 315zm-187 5l0 0V248.3c0-15.3 7.2-29.6 19.5-38.6L436.6 8.4C444 2.9 453 0 462.2 0c11.4 0 22.4 4.5 30.5 12.6l54.8 54.8c8.1 8.1 12.6 19 12.6 30.5c0 9.2-2.9 18.2-8.4 25.6L350.4 396.5c-9 12.3-23.4 19.5-38.6 19.5H240l-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0l-50.7-50.7c-12.5-12.5-12.5-32.8 0-45.3L144 320zM23 466.3l63-63 70.6 70.6-31 31c-4.5 4.5-10.6 7-17 7H40c-13.3 0-24-10.7-24-24v-4.7c0-6.4 2.5-12.5 7-17z"}));case"thick-thin":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 108 106",strokeWidth:"2",fill:null!==(s=e.strokeColor)&&void 0!==s?s:"var(--icon-fill-color)",stroke:null!==(l=e.strokeColor)&&void 0!==l?l:"var(--icon-fill-color)"},React__namespace.createElement("path",{d:"m-.58 95.628.22-.89q.22-.89.49-2.44.26-1.54.77-3.35t1.31-3.43q.79-1.61.2-.26-.6 1.34-.03-.14.58-1.49 1.54-2.97.96-1.49 2.54-3.18 1.59-1.68 3.46-2.96 1.86-1.27.81-.54-1.04.73.6-.46 1.64-1.19 2.8-1.81 1.16-.63.16-.08-.99.54 1.21-.5 2.2-1.03 1.11-.58-1.1.45-.03-.07 1.06-.53 2.32-.82 1.26-.3 2.91-.52 1.64-.23 3.05-.18 1.4.05 2.5.12 1.09.07 2.25.24 1.16.17 2.3.49 1.15.32 2.11.78.96.47 2.21 1.01 1.25.55 2.37 1.04t2.34.89q1.22.4 2.5.65 1.29.25 2.44.33 1.16.08 2.35.17 1.18.08 2.26-.1 1.08-.19 2-1.1.92-.91 1.25-1.93.32-1.02.38-2.15t.57.21q.51 1.34-.03-.02-.55-1.37-.96-2.83-.41-1.45.5-.67.92.79-.03-.06-.95-.85-1.52-1.8-.57-.94-1.5-1.52-.93-.57-1.94-1.22-1.01-.65-1.97-1.88-.96-1.22-1.44-2.54-.49-1.32-.65-2.57-.17-1.24-.11-2.35.06-1.11.31-2.91.24-1.79.76-2.77.51-.97 1.29-1.8.77-.84 1.64-1.55.88-.72 1.9-1.33 1.03-.61 2.43-1.15 1.41-.55 2.69-.92 1.29-.37 2.81-.68 1.53-.31 2.83-.58 1.31-.27 2.78-.47 1.47-.2 2.58-.49 1.12-.28 2.19-.58 1.08-.31 2.13-.73 1.05-.42 2.44-1.32 1.39-.9 2.68-1.85 1.3-.95 2.25-1.87.95-.91 2.06-2 1.11-1.09 1.92-1.93.82-.84 1.54-1.82.71-.98 1.4-1.88.69-.9 1.38-1.96.69-1.07 1.25-2.04.55-.97 1.21-1.94.65-.96 1.35-1.79.69-.83 1.46-1.74.77-.9 1.66-1.73.89-.84 2.72-2.31 1.84-1.48 1.84-1.47v.01l-1.1 1.03q-1.1 1.02-1.77 1.92-.68.9-1.39 1.85-.71.96-1.41 1.91-.7.96-1.19 1.92-.48.95-.95 1.92-.46.96-.9 1.95-.43.99-1.02 2.16-.59 1.17-1.17 2.15-.58.97-1.23 2.13t-1.29 2.02q-.64.86-1.3 1.73-.66.88-1.42 1.78-.75.9-1.72 2.03-.97 1.14-1.81 1.89-.85.75-1.98 1.71-1.14.96-2.05 1.61-.91.64-2.42 1.38-1.51.73-2.71 1.21t-2.49.92q-1.3.44-2.35.69-1.06.24-2.1.59-1.03.34-2.06.74-1.03.4-2.29.94-1.26.54-2.27 1.11-1.01.58-1.57 1.57-.56.99-.81 2.06-.25 1.08.56 2.02.8.94-.21-.02-1.02-.96-.01-.48 1 .49 1.87 1.25.87.77 0 0-.88-.77.46-.01 1.34.75 2.6 1.68 1.26.94 2.08 2.03.81 1.09.01.27-.8-.82.3.26 1.11 1.08 1.71 2.1.61 1.02 1.21 2.25.6 1.24.92 2.36.32 1.12-.16.13-.49-.98.02.36.51 1.35.71 2.69.2 1.34.24 2.46.03 1.12-.09 2.42-.13 1.29-.72 3.21-.6 1.92-1.4 3.49-.81 1.58-1.77 2.83-.96 1.24-2.88 2.72-1.92 1.48-2.95 1.85-1.04.36-2.47.76-1.44.41-3.33.72-1.89.32-3.37.41-1.48.09-2.63.15-1.15.05-2.74-.06-1.59-.1-2.8-.29-1.2-.19-3.2-.63-1.99-.45-3.63-.92-1.63-.48-3.28-.79-1.65-.31-2.76-.2-1.11.1-2.21.42-1.11.32.39-.29 1.49-.6-.12.21-1.61.8-.39.19 1.21-.61.29.13-.92.74-1.83 1.34-.92.61.15-.19t.3-.05q-.77.75-1.58 1.57-.81.82.01-.18.82-1 .24.23t-.72 2.72q-.15 1.48-.08 2.4.07.91-.19 2.16-.26 1.26-.81 2.41-.55 1.16-1.36 2.15t-1.84 1.75q-1.03.77-2.21 1.27t-2.44.7q-1.27.2-2.53.1-1.28-.11-2.49-.52-1.22-.41-2.3-1.1-1.08-.68-1.96-1.61-.89-.92-1.52-2.04-.64-1.11-.99-2.34-.36-1.23-.41-2.51l-.04-1.27Z"}));case"thin-thick-thin":return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 114 113",strokeWidth:"2",fill:null!==(c=e.strokeColor)&&void 0!==c?c:"var(--icon-fill-color)",stroke:null!==(T=e.strokeColor)&&void 0!==T?T:"var(--icon-fill-color)"},React__namespace.createElement("path",{d:"m10 103.405.13-1.22q.14-1.22 1.3-3.16 1.15-1.94 2.74-3.46 1.59-1.53 3.35-2.72 1.77-1.2 4-1.95 2.23-.76 4.45-1t4.86-.4q2.64-.15 5.14-.34 2.51-.19 4.85-.94 2.35-.75 4.55-1.71 2.21-.97 4.16-2.26 1.95-1.3 4.03-2.97 2.07-1.67 3.85-3.05 1.78-1.37 3.72-2.48 1.94-1.11 3.3-2.99 1.36-1.89 2.58-3.74 1.22-1.85-.63-3.42-1.85-1.57-3.82-2.86-1.97-1.3-4.11-2.08-2.15-.78-4.21-1.6-2.06-.81-4.02-1.96-1.96-1.14-3.71-2.48-1.74-1.33-3.37-2.77-1.63-1.43-3.23-3.62-1.6-2.18-2.23-4.64-.62-2.46-.36-4.96.27-2.49 1.19-4.46.91-1.97 2.42-3.7 1.5-1.73 3.5-3.15t4.11-2.28q2.1-.86 4.33-1.44 2.24-.58 4.92-.84 2.68-.26 4.83-.19t4.69.35q2.53.28 4.75.66 2.23.38 4.48.2 2.26-.19 4.43-1.3 2.17-1.12 4.2-2.36 2.04-1.24 3.93-2.43 1.9-1.19 3.84-2.14 1.95-.95 4.04-1.78 2.09-.83 4.56-2.28 2.46-1.46 2.46-1.45h.01q.01 0-1.38 1.3-1.38 1.29-3.08 2.59-1.7 1.3-3.5 2.5t-3.42 2.65q-1.62 1.45-3.18 3-1.57 1.56-3.37 3.13-1.8 1.57-3.6 2.91-1.81 1.33-3.92 2.12t-4.24.92q-2.13.14-4.31.26-2.18.12-4.5.39t-4.56.88q-2.25.61-4.24 1.6-1.99 1-3.83 2.29-1.83 1.29.18 2.44 2.01 1.15 4.2 1.92 2.2.78 4.34 1 2.15.22 4.4.69 2.25.46 4.34 1.16 2.08.71 4.33 1.91 2.25 1.21 4.11 2.73 1.87 1.52 3.68 4.03 1.82 2.5 2.74 5 .93 2.5 1.18 5.03.26 2.53-.04 4.81t-1.4 4.85q-1.09 2.58-2.4 4.26-1.3 1.68-3.1 3.44t-4.02 3.62q-2.23 1.85-4.32 3.07-2.08 1.23-4.34 1.99-2.25.76-4.46 1.96t-4.37 2.14q-2.15.93-4.22 1.81t-4.36 1.35q-2.3.46-4.52.82-2.22.35-4.76.38-2.54.04-4.87-.28t-4.67-.67q-2.34-.35-4.72-.54-2.39-.19-4.64.37-2.25.56-4.16 1.66-1.91 1.11-3.52 2.71-1.61 1.6-2.55 2.39l-.94.78Z"}));default:return React__namespace.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",fill:null!==(Q=e.strokeColor)&&void 0!==Q?Q:"var(--icon-fill-color)",stroke:null!==(d=e.strokeColor)&&void 0!==d?d:"var(--icon-fill-color)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},React__namespace.createElement("path",{d:"M453.3 19.3l39.4 39.4c25 25 25 65.5 0 90.5l-52.1 52.1 0 0-1-1 0 0-16-16-96-96-17-17 52.1-52.1c25-25 65.5-25 90.5 0zM241 114.9c-9.4-9.4-24.6-9.4-33.9 0L105 217c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L173.1 81c28.1-28.1 73.7-28.1 101.8 0L288 94.1l17 17 96 96 16 16 1 1-17 17L229.5 412.5c-48 48-109.2 80.8-175.8 94.1l-25 5c-7.9 1.6-16-.9-21.7-6.6s-8.1-13.8-6.6-21.7l5-25c13.3-66.6 46.1-127.8 94.1-175.8L254.1 128 241 114.9z"}))}},stringToSVG=e=>(e=e.replace(/stroke\s*=\s*['"][^"']*['"]/g,"").replace(/[^-]width\s*=\s*['"][^"']*['"]/g,"").replace(/[^-]height\s*=\s*['"][^"']*['"]/g,"").replace("<svg ",'<svg style="stroke:var(--icon-fill-color);color:var(--icon-fill-color);fill:var(--icon-fill-color);stroke-width:6;" '),React__namespace.createElement("div",{dangerouslySetInnerHTML:{__html:e}})),LogoWrapper=({children:e})=>React__namespace.createElement("div",{className:"welcome-screen-center__logo virgil welcome-screen-decor"},e," ");var top="top",bottom="bottom",right="right",left="left",auto="auto",basePlacements=[top,bottom,right,left],start="start",end="end",clippingParents="clippingParents",viewport="viewport",popper="popper",reference="reference",variationPlacements=basePlacements.reduce((function(e,t){return e.concat([t+"-"+start,t+"-"+end])}),[]),placements=[].concat(basePlacements,[auto]).reduce((function(e,t){return e.concat([t,t+"-"+start,t+"-"+end])}),[]),beforeRead="beforeRead",read="read",afterRead="afterRead",beforeMain="beforeMain",main="main",afterMain="afterMain",beforeWrite="beforeWrite",write="write",afterWrite="afterWrite",modifierPhases=[beforeRead,read,afterRead,beforeMain,main,afterMain,beforeWrite,write,afterWrite];function getNodeName(e){return e?(e.nodeName||"").toLowerCase():null}function getWindow(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function isElement(e){return e instanceof getWindow(e).Element||e instanceof Element}function isHTMLElement(e){return e instanceof getWindow(e).HTMLElement||e instanceof HTMLElement}function isShadowRoot(e){return"undefined"!=typeof ShadowRoot&&(e instanceof getWindow(e).ShadowRoot||e instanceof ShadowRoot)}function applyStyles(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},r=t.attributes[e]||{},i=t.elements[e];isHTMLElement(i)&&getNodeName(i)&&(Object.assign(i.style,n),Object.keys(r).forEach((function(e){var t=r[e];!1===t?i.removeAttribute(e):i.setAttribute(e,!0===t?"":t)})))}))}function effect$2(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var r=t.elements[e],i=t.attributes[e]||{},o=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});isHTMLElement(r)&&getNodeName(r)&&(Object.assign(r.style,o),Object.keys(i).forEach((function(e){r.removeAttribute(e)})))}))}}var applyStyles$1={name:"applyStyles",enabled:!0,phase:"write",fn:applyStyles,effect:effect$2,requires:["computeStyles"]};function getBasePlacement(e){return e.split("-")[0]}var max=Math.max,min=Math.min,round=Math.round;function getUAString(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function isLayoutViewport(){return!/^((?!chrome|android).)*safari/i.test(getUAString())}function getBoundingClientRect(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var r=e.getBoundingClientRect(),i=1,o=1;t&&isHTMLElement(e)&&(i=e.offsetWidth>0&&round(r.width)/e.offsetWidth||1,o=e.offsetHeight>0&&round(r.height)/e.offsetHeight||1);var a=(isElement(e)?getWindow(e):window).visualViewport,s=!isLayoutViewport()&&n,l=(r.left+(s&&a?a.offsetLeft:0))/i,c=(r.top+(s&&a?a.offsetTop:0))/o,T=r.width/i,Q=r.height/o;return{width:T,height:Q,top:c,right:l+T,bottom:c+Q,left:l,x:l,y:c}}function getLayoutRect(e){var t=getBoundingClientRect(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function contains(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&isShadowRoot(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function getComputedStyle$1(e){return getWindow(e).getComputedStyle(e)}function isTableElement(e){return["table","td","th"].indexOf(getNodeName(e))>=0}function getDocumentElement(e){return((isElement(e)?e.ownerDocument:e.document)||window.document).documentElement}function getParentNode(e){return"html"===getNodeName(e)?e:e.assignedSlot||e.parentNode||(isShadowRoot(e)?e.host:null)||getDocumentElement(e)}function getTrueOffsetParent(e){return isHTMLElement(e)&&"fixed"!==getComputedStyle$1(e).position?e.offsetParent:null}function getContainingBlock(e){var t=/firefox/i.test(getUAString());if(/Trident/i.test(getUAString())&&isHTMLElement(e)&&"fixed"===getComputedStyle$1(e).position)return null;var n=getParentNode(e);for(isShadowRoot(n)&&(n=n.host);isHTMLElement(n)&&["html","body"].indexOf(getNodeName(n))<0;){var r=getComputedStyle$1(n);if("none"!==r.transform||"none"!==r.perspective||"paint"===r.contain||-1!==["transform","perspective"].indexOf(r.willChange)||t&&"filter"===r.willChange||t&&r.filter&&"none"!==r.filter)return n;n=n.parentNode}return null}function getOffsetParent(e){for(var t=getWindow(e),n=getTrueOffsetParent(e);n&&isTableElement(n)&&"static"===getComputedStyle$1(n).position;)n=getTrueOffsetParent(n);return n&&("html"===getNodeName(n)||"body"===getNodeName(n)&&"static"===getComputedStyle$1(n).position)?t:n||getContainingBlock(e)||t}function getMainAxisFromPlacement(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function within(e,t,n){return max(e,min(t,n))}function withinMaxClamp(e,t,n){var r=within(e,t,n);return r>n?n:r}function getFreshSideObject(){return{top:0,right:0,bottom:0,left:0}}function mergePaddingObject(e){return Object.assign({},getFreshSideObject(),e)}function expandToHashMap(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}var toPaddingObject=function(e,t){return mergePaddingObject("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:expandToHashMap(e,basePlacements))};function arrow(e){var t,n=e.state,r=e.name,i=e.options,o=n.elements.arrow,a=n.modifiersData.popperOffsets,s=getBasePlacement(n.placement),l=getMainAxisFromPlacement(s),c=[left,right].indexOf(s)>=0?"height":"width";if(o&&a){var T=toPaddingObject(i.padding,n),Q=getLayoutRect(o),d="y"===l?top:left,u="y"===l?bottom:right,p=n.rects.reference[c]+n.rects.reference[l]-a[l]-n.rects.popper[c],h=a[l]-n.rects.reference[l],m=getOffsetParent(o),f=m?"y"===l?m.clientHeight||0:m.clientWidth||0:0,g=p/2-h/2,b=T[d],y=f-Q[c]-T[u],L=f/2-Q[c]/2+g,v=within(b,L,y),w=l;n.modifiersData[r]=((t={})[w]=v,t.centerOffset=v-L,t)}}function effect$1(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&contains(t.elements.popper,r)&&(t.elements.arrow=r)}var arrow$1={name:"arrow",enabled:!0,phase:"main",fn:arrow,effect:effect$1,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function getVariation(e){return e.split("-")[1]}var unsetSides={top:"auto",right:"auto",bottom:"auto",left:"auto"};function roundOffsetsByDPR(e,t){var n=e.x,r=e.y,i=t.devicePixelRatio||1;return{x:round(n*i)/i||0,y:round(r*i)/i||0}}function mapToStyles(e){var t,n=e.popper,r=e.popperRect,i=e.placement,o=e.variation,a=e.offsets,s=e.position,l=e.gpuAcceleration,c=e.adaptive,T=e.roundOffsets,Q=e.isFixed,d=a.x,u=void 0===d?0:d,p=a.y,h=void 0===p?0:p,m="function"==typeof T?T({x:u,y:h}):{x:u,y:h};u=m.x,h=m.y;var f=a.hasOwnProperty("x"),g=a.hasOwnProperty("y"),b=left,y=top,L=window;if(c){var v=getOffsetParent(n),w="clientHeight",E="clientWidth";v===getWindow(n)&&"static"!==getComputedStyle$1(v=getDocumentElement(n)).position&&"absolute"===s&&(w="scrollHeight",E="scrollWidth"),(i===top||(i===left||i===right)&&o===end)&&(y=bottom,h-=(Q&&v===L&&L.visualViewport?L.visualViewport.height:v[w])-r.height,h*=l?1:-1),i!==left&&(i!==top&&i!==bottom||o!==end)||(b=right,u-=(Q&&v===L&&L.visualViewport?L.visualViewport.width:v[E])-r.width,u*=l?1:-1)}var _,M=Object.assign({position:s},c&&unsetSides),x=!0===T?roundOffsetsByDPR({x:u,y:h},getWindow(n)):{x:u,y:h};return u=x.x,h=x.y,l?Object.assign({},M,((_={})[y]=g?"0":"",_[b]=f?"0":"",_.transform=(L.devicePixelRatio||1)<=1?"translate("+u+"px, "+h+"px)":"translate3d("+u+"px, "+h+"px, 0)",_)):Object.assign({},M,((t={})[y]=g?h+"px":"",t[b]=f?u+"px":"",t.transform="",t))}function computeStyles(e){var t=e.state,n=e.options,r=n.gpuAcceleration,i=void 0===r||r,o=n.adaptive,a=void 0===o||o,s=n.roundOffsets,l=void 0===s||s,c={placement:getBasePlacement(t.placement),variation:getVariation(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:i,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,mapToStyles(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,mapToStyles(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var computeStyles$1={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:computeStyles,data:{}},passive={passive:!0};function effect(e){var t=e.state,n=e.instance,r=e.options,i=r.scroll,o=void 0===i||i,a=r.resize,s=void 0===a||a,l=getWindow(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&c.forEach((function(e){e.addEventListener("scroll",n.update,passive)})),s&&l.addEventListener("resize",n.update,passive),function(){o&&c.forEach((function(e){e.removeEventListener("scroll",n.update,passive)})),s&&l.removeEventListener("resize",n.update,passive)}}var eventListeners={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:effect,data:{}},hash$1={left:"right",right:"left",bottom:"top",top:"bottom"};function getOppositePlacement(e){return e.replace(/left|right|bottom|top/g,(function(e){return hash$1[e]}))}var hash={start:"end",end:"start"};function getOppositeVariationPlacement(e){return e.replace(/start|end/g,(function(e){return hash[e]}))}function getWindowScroll(e){var t=getWindow(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function getWindowScrollBarX(e){return getBoundingClientRect(getDocumentElement(e)).left+getWindowScroll(e).scrollLeft}function getViewportRect(e,t){var n=getWindow(e),r=getDocumentElement(e),i=n.visualViewport,o=r.clientWidth,a=r.clientHeight,s=0,l=0;if(i){o=i.width,a=i.height;var c=isLayoutViewport();(c||!c&&"fixed"===t)&&(s=i.offsetLeft,l=i.offsetTop)}return{width:o,height:a,x:s+getWindowScrollBarX(e),y:l}}function getDocumentRect(e){var t,n=getDocumentElement(e),r=getWindowScroll(e),i=null==(t=e.ownerDocument)?void 0:t.body,o=max(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),a=max(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),s=-r.scrollLeft+getWindowScrollBarX(e),l=-r.scrollTop;return"rtl"===getComputedStyle$1(i||n).direction&&(s+=max(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:a,x:s,y:l}}function isScrollParent(e){var t=getComputedStyle$1(e),n=t.overflow,r=t.overflowX,i=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+r)}function getScrollParent(e){return["html","body","#document"].indexOf(getNodeName(e))>=0?e.ownerDocument.body:isHTMLElement(e)&&isScrollParent(e)?e:getScrollParent(getParentNode(e))}function listScrollParents(e,t){var n;void 0===t&&(t=[]);var r=getScrollParent(e),i=r===(null==(n=e.ownerDocument)?void 0:n.body),o=getWindow(r),a=i?[o].concat(o.visualViewport||[],isScrollParent(r)?r:[]):r,s=t.concat(a);return i?s:s.concat(listScrollParents(getParentNode(a)))}function rectToClientRect(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function getInnerBoundingClientRect(e,t){var n=getBoundingClientRect(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}function getClientRectFromMixedType(e,t,n){return t===viewport?rectToClientRect(getViewportRect(e,n)):isElement(t)?getInnerBoundingClientRect(t,n):rectToClientRect(getDocumentRect(getDocumentElement(e)))}function getClippingParents(e){var t=listScrollParents(getParentNode(e)),n=["absolute","fixed"].indexOf(getComputedStyle$1(e).position)>=0&&isHTMLElement(e)?getOffsetParent(e):e;return isElement(n)?t.filter((function(e){return isElement(e)&&contains(e,n)&&"body"!==getNodeName(e)})):[]}function getClippingRect(e,t,n,r){var i="clippingParents"===t?getClippingParents(e):[].concat(t),o=[].concat(i,[n]),a=o[0],s=o.reduce((function(t,n){var i=getClientRectFromMixedType(e,n,r);return t.top=max(i.top,t.top),t.right=min(i.right,t.right),t.bottom=min(i.bottom,t.bottom),t.left=max(i.left,t.left),t}),getClientRectFromMixedType(e,a,r));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function computeOffsets(e){var t,n=e.reference,r=e.element,i=e.placement,o=i?getBasePlacement(i):null,a=i?getVariation(i):null,s=n.x+n.width/2-r.width/2,l=n.y+n.height/2-r.height/2;switch(o){case top:t={x:s,y:n.y-r.height};break;case bottom:t={x:s,y:n.y+n.height};break;case right:t={x:n.x+n.width,y:l};break;case left:t={x:n.x-r.width,y:l};break;default:t={x:n.x,y:n.y}}var c=o?getMainAxisFromPlacement(o):null;if(null!=c){var T="y"===c?"height":"width";switch(a){case start:t[c]=t[c]-(n[T]/2-r[T]/2);break;case end:t[c]=t[c]+(n[T]/2-r[T]/2)}}return t}function detectOverflow(e,t){void 0===t&&(t={});var n=t,r=n.placement,i=void 0===r?e.placement:r,o=n.strategy,a=void 0===o?e.strategy:o,s=n.boundary,l=void 0===s?clippingParents:s,c=n.rootBoundary,T=void 0===c?viewport:c,Q=n.elementContext,d=void 0===Q?popper:Q,u=n.altBoundary,p=void 0!==u&&u,h=n.padding,m=void 0===h?0:h,f=mergePaddingObject("number"!=typeof m?m:expandToHashMap(m,basePlacements)),g=d===popper?reference:popper,b=e.rects.popper,y=e.elements[p?g:d],L=getClippingRect(isElement(y)?y:y.contextElement||getDocumentElement(e.elements.popper),l,T,a),v=getBoundingClientRect(e.elements.reference),w=computeOffsets({reference:v,element:b,strategy:"absolute",placement:i}),E=rectToClientRect(Object.assign({},b,w)),_=d===popper?E:v,M={top:L.top-_.top+f.top,bottom:_.bottom-L.bottom+f.bottom,left:L.left-_.left+f.left,right:_.right-L.right+f.right},x=e.modifiersData.offset;if(d===popper&&x){var H=x[i];Object.keys(M).forEach((function(e){var t=[right,bottom].indexOf(e)>=0?1:-1,n=[top,bottom].indexOf(e)>=0?"y":"x";M[e]+=H[n]*t}))}return M}function computeAutoPlacement(e,t){void 0===t&&(t={});var n=t,r=n.placement,i=n.boundary,o=n.rootBoundary,a=n.padding,s=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?placements:l,T=getVariation(r),Q=T?s?variationPlacements:variationPlacements.filter((function(e){return getVariation(e)===T})):basePlacements,d=Q.filter((function(e){return c.indexOf(e)>=0}));0===d.length&&(d=Q);var u=d.reduce((function(t,n){return t[n]=detectOverflow(e,{placement:n,boundary:i,rootBoundary:o,padding:a})[getBasePlacement(n)],t}),{});return Object.keys(u).sort((function(e,t){return u[e]-u[t]}))}function getExpandedFallbackPlacements(e){if(getBasePlacement(e)===auto)return[];var t=getOppositePlacement(e);return[getOppositeVariationPlacement(e),t,getOppositeVariationPlacement(t)]}function flip(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var i=n.mainAxis,o=void 0===i||i,a=n.altAxis,s=void 0===a||a,l=n.fallbackPlacements,c=n.padding,T=n.boundary,Q=n.rootBoundary,d=n.altBoundary,u=n.flipVariations,p=void 0===u||u,h=n.allowedAutoPlacements,m=t.options.placement,f=getBasePlacement(m),g=l||(f!==m&&p?getExpandedFallbackPlacements(m):[getOppositePlacement(m)]),b=[m].concat(g).reduce((function(e,n){return e.concat(getBasePlacement(n)===auto?computeAutoPlacement(t,{placement:n,boundary:T,rootBoundary:Q,padding:c,flipVariations:p,allowedAutoPlacements:h}):n)}),[]),y=t.rects.reference,L=t.rects.popper,v=new Map,w=!0,E=b[0],_=0;_<b.length;_++){var M=b[_],x=getBasePlacement(M),H=getVariation(M)===start,S=[top,bottom].indexOf(x)>=0,A=S?"width":"height",C=detectOverflow(t,{placement:M,boundary:T,rootBoundary:Q,altBoundary:d,padding:c}),O=S?H?right:left:H?bottom:top;y[A]>L[A]&&(O=getOppositePlacement(O));var I=getOppositePlacement(O),V=[];if(o&&V.push(C[x]<=0),s&&V.push(C[O]<=0,C[I]<=0),V.every((function(e){return e}))){E=M,w=!1;break}v.set(M,V)}if(w)for(var k=function(e){var t=b.find((function(t){var n=v.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return E=t,"break"},N=p?3:1;N>0&&"break"!==k(N);N--);t.placement!==E&&(t.modifiersData[r]._skip=!0,t.placement=E,t.reset=!0)}}var flip$1={name:"flip",enabled:!0,phase:"main",fn:flip,requiresIfExists:["offset"],data:{_skip:!1}};function getSideOffsets(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function isAnySideFullyClipped(e){return[top,right,bottom,left].some((function(t){return e[t]>=0}))}function hide(e){var t=e.state,n=e.name,r=t.rects.reference,i=t.rects.popper,o=t.modifiersData.preventOverflow,a=detectOverflow(t,{elementContext:"reference"}),s=detectOverflow(t,{altBoundary:!0}),l=getSideOffsets(a,r),c=getSideOffsets(s,i,o),T=isAnySideFullyClipped(l),Q=isAnySideFullyClipped(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:T,hasPopperEscaped:Q},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":T,"data-popper-escaped":Q})}var hide$1={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:hide};function distanceAndSkiddingToXY(e,t,n){var r=getBasePlacement(e),i=[left,top].indexOf(r)>=0?-1:1,o="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=o[0],s=o[1];return a=a||0,s=(s||0)*i,[left,right].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}function offset(e){var t=e.state,n=e.options,r=e.name,i=n.offset,o=void 0===i?[0,0]:i,a=placements.reduce((function(e,n){return e[n]=distanceAndSkiddingToXY(n,t.rects,o),e}),{}),s=a[t.placement],l=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}var offset$1={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:offset};function popperOffsets(e){var t=e.state,n=e.name;t.modifiersData[n]=computeOffsets({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}var popperOffsets$1={name:"popperOffsets",enabled:!0,phase:"read",fn:popperOffsets,data:{}};function getAltAxis(e){return"x"===e?"y":"x"}function preventOverflow(e){var t=e.state,n=e.options,r=e.name,i=n.mainAxis,o=void 0===i||i,a=n.altAxis,s=void 0!==a&&a,l=n.boundary,c=n.rootBoundary,T=n.altBoundary,Q=n.padding,d=n.tether,u=void 0===d||d,p=n.tetherOffset,h=void 0===p?0:p,m=detectOverflow(t,{boundary:l,rootBoundary:c,padding:Q,altBoundary:T}),f=getBasePlacement(t.placement),g=getVariation(t.placement),b=!g,y=getMainAxisFromPlacement(f),L=getAltAxis(y),v=t.modifiersData.popperOffsets,w=t.rects.reference,E=t.rects.popper,_="function"==typeof h?h(Object.assign({},t.rects,{placement:t.placement})):h,M="number"==typeof _?{mainAxis:_,altAxis:_}:Object.assign({mainAxis:0,altAxis:0},_),x=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,H={x:0,y:0};if(v){if(o){var S,A="y"===y?top:left,C="y"===y?bottom:right,O="y"===y?"height":"width",I=v[y],V=I+m[A],k=I-m[C],N=u?-E[O]/2:0,P=g===start?w[O]:E[O],R=g===start?-E[O]:-w[O],D=t.elements.arrow,j=u&&D?getLayoutRect(D):{width:0,height:0},B=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:getFreshSideObject(),F=B[A],G=B[C],W=within(0,w[O],j[O]),U=b?w[O]/2-N-W-F-M.mainAxis:P-W-F-M.mainAxis,$=b?-w[O]/2+N+W+G+M.mainAxis:R+W+G+M.mainAxis,Z=t.elements.arrow&&getOffsetParent(t.elements.arrow),z=Z?"y"===y?Z.clientTop||0:Z.clientLeft||0:0,q=null!=(S=null==x?void 0:x[y])?S:0,X=I+$-q,Y=within(u?min(V,I+U-q-z):V,I,u?max(k,X):k);v[y]=Y,H[y]=Y-I}if(s){var K,J="x"===y?top:left,ee="x"===y?bottom:right,te=v[L],ne="y"===L?"height":"width",re=te+m[J],ie=te-m[ee],oe=-1!==[top,left].indexOf(f),ae=null!=(K=null==x?void 0:x[L])?K:0,se=oe?re:te-w[ne]-E[ne]-ae+M.altAxis,le=oe?te+w[ne]+E[ne]-ae-M.altAxis:ie,ce=u&&oe?withinMaxClamp(se,te,le):within(u?se:re,te,u?le:ie);v[L]=ce,H[L]=ce-te}t.modifiersData[r]=H}}var preventOverflow$1={name:"preventOverflow",enabled:!0,phase:"main",fn:preventOverflow,requiresIfExists:["offset"]};function getHTMLElementScroll(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function getNodeScroll(e){return e!==getWindow(e)&&isHTMLElement(e)?getHTMLElementScroll(e):getWindowScroll(e)}function isElementScaled(e){var t=e.getBoundingClientRect(),n=round(t.width)/e.offsetWidth||1,r=round(t.height)/e.offsetHeight||1;return 1!==n||1!==r}function getCompositeRect(e,t,n){void 0===n&&(n=!1);var r=isHTMLElement(t),i=isHTMLElement(t)&&isElementScaled(t),o=getDocumentElement(t),a=getBoundingClientRect(e,i,n),s={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(r||!r&&!n)&&(("body"!==getNodeName(t)||isScrollParent(o))&&(s=getNodeScroll(t)),isHTMLElement(t)?((l=getBoundingClientRect(t,!0)).x+=t.clientLeft,l.y+=t.clientTop):o&&(l.x=getWindowScrollBarX(o))),{x:a.left+s.scrollLeft-l.x,y:a.top+s.scrollTop-l.y,width:a.width,height:a.height}}function order(e){var t=new Map,n=new Set,r=[];function i(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&i(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||i(e)})),r}function orderModifiers(e){var t=order(e);return modifierPhases.reduce((function(e,n){return e.concat(t.filter((function(e){return e.phase===n})))}),[])}function debounce(e){var t;return function(){return t||(t=new Promise((function(n){Promise.resolve().then((function(){t=void 0,n(e())}))}))),t}}function mergeByName(e){var t=e.reduce((function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e}),{});return Object.keys(t).map((function(e){return t[e]}))}var DEFAULT_OPTIONS={placement:"bottom",modifiers:[],strategy:"absolute"};function areValidElements(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return!t.some((function(e){return!(e&&"function"==typeof e.getBoundingClientRect)}))}function popperGenerator(e){void 0===e&&(e={});var t=e,n=t.defaultModifiers,r=void 0===n?[]:n,i=t.defaultOptions,o=void 0===i?DEFAULT_OPTIONS:i;return function(e,t,n){void 0===n&&(n=o);var i={placement:"bottom",orderedModifiers:[],options:Object.assign({},DEFAULT_OPTIONS,o),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},a=[],s=!1,l={state:i,setOptions:function(n){var s="function"==typeof n?n(i.options):n;c(),i.options=Object.assign({},o,i.options,s),i.scrollParents={reference:isElement(e)?listScrollParents(e):e.contextElement?listScrollParents(e.contextElement):[],popper:listScrollParents(t)};var T=orderModifiers(mergeByName([].concat(r,i.options.modifiers)));return i.orderedModifiers=T.filter((function(e){return e.enabled})),i.orderedModifiers.forEach((function(e){var t=e.name,n=e.options,r=void 0===n?{}:n,o=e.effect;if("function"==typeof o){var s=o({state:i,name:t,instance:l,options:r});a.push(s||function(){})}})),l.update()},forceUpdate:function(){if(!s){var e=i.elements,t=e.reference,n=e.popper;if(areValidElements(t,n)){i.rects={reference:getCompositeRect(t,getOffsetParent(n),"fixed"===i.options.strategy),popper:getLayoutRect(n)},i.reset=!1,i.placement=i.options.placement,i.orderedModifiers.forEach((function(e){return i.modifiersData[e.name]=Object.assign({},e.data)}));for(var r=0;r<i.orderedModifiers.length;r++)if(!0!==i.reset){var o=i.orderedModifiers[r],a=o.fn,c=o.options,T=void 0===c?{}:c,Q=o.name;"function"==typeof a&&(i=a({state:i,options:T,name:Q,instance:l})||i)}else i.reset=!1,r=-1}}},update:debounce((function(){return new Promise((function(e){l.forceUpdate(),e(i)}))})),destroy:function(){c(),s=!0}};if(!areValidElements(e,t))return l;function c(){a.forEach((function(e){return e()})),a=[]}return l.setOptions(n).then((function(e){!s&&n.onFirstUpdate&&n.onFirstUpdate(e)})),l}}var defaultModifiers=[eventListeners,popperOffsets$1,computeStyles$1,applyStyles$1,offset$1,flip$1,preventOverflow$1,arrow$1,hide$1],createPopper=popperGenerator({defaultModifiers:defaultModifiers});class Suggester{constructor(e,t,n){this.containerEl=t,this.owner=e,t.on("click",".suggestion-item",this.onSuggestionClick.bind(this)),t.on("mousemove",".suggestion-item",this.onSuggestionMouseover.bind(this)),n.register([],"ArrowUp",(()=>(this.setSelectedItem(this.selectedItem-1,!0),!1))),n.register([],"ArrowDown",(()=>(this.setSelectedItem(this.selectedItem+1,!0),!1))),n.register([],"Enter",(e=>(this.useSelectedItem(e),!1))),n.register([],"Tab",(e=>(this.chooseSuggestion(e),!1)))}chooseSuggestion(e){if(!this.items||!this.items.length)return;const t=this.items[this.selectedItem];t&&this.owner.onChooseSuggestion(t,e)}onSuggestionClick(e,t){if(e.preventDefault(),!this.suggestions||!this.suggestions.length)return;const n=this.suggestions.indexOf(t);this.setSelectedItem(n,!1),this.useSelectedItem(e)}onSuggestionMouseover(e,t){if(!this.suggestions||!this.suggestions.length)return;const n=this.suggestions.indexOf(t);this.setSelectedItem(n,!1)}empty(){this.containerEl.empty()}setSuggestions(e){this.containerEl.empty();const t=[];e.forEach((e=>{const n=this.containerEl.createDiv("suggestion-item");this.owner.renderSuggestion(e,n),t.push(n)})),this.items=e,this.suggestions=t,this.setSelectedItem(0,!1)}useSelectedItem(e){if(!this.items||!this.items.length)return;const t=this.items[this.selectedItem];t&&this.owner.selectSuggestion(t,e)}wrap(e,t){return(e%t+t)%t}setSelectedItem(e,t){const n=this.wrap(e,this.suggestions.length),r=this.suggestions[this.selectedItem],i=this.suggestions[n];r&&r.removeClass("is-selected"),i&&i.addClass("is-selected"),this.selectedItem=n,t&&i.scrollIntoView(!1)}}class SuggestionModal extends obsidian_module.FuzzySuggestModal{constructor(e,t,n){super(e),this.items=[],this.scope=new obsidian_module.Scope(this.app.scope),this.emptyStateText="No match found",this.limit=100,this.inputEl=t,this.items=n,this.suggestEl=createDiv("suggestion-container"),this.contentEl=this.suggestEl.createDiv("suggestion"),this.suggester=new Suggester(this,this.contentEl,this.scope),this.scope.register([],"Escape",this.onEscape.bind(this)),this.inputEl.addEventListener("input",this.onInputChanged.bind(this)),this.inputEl.addEventListener("focus",this.onFocus.bind(this)),this.inputEl.addEventListener("blur",this.close.bind(this)),this.suggestEl.on("mousedown",".suggestion-container",(e=>{e.preventDefault()}))}empty(){this.suggester.empty()}onInputChanged(){if(this.shouldNotOpen)return;const e=this.modifyInput(this.inputEl.value),t=this.getSuggestions(e);t.length>0?this.suggester.setSuggestions(t.slice(0,this.limit)):this.onNoSuggestion(),this.open()}onFocus(){this.shouldNotOpen=!1,this.onInputChanged()}modifyInput(e){return e}onNoSuggestion(){this.empty(),this.renderSuggestion(null,this.contentEl.createDiv("suggestion-item"))}open(){this.app.keymap.pushScope(this.scope),this.inputEl.ownerDocument.body.appendChild(this.suggestEl),this.popper=createPopper(this.inputEl,this.suggestEl,{placement:"bottom-start",modifiers:[{name:"offset",options:{offset:[0,10]}},{name:"flip",options:{fallbackPlacements:["top"]}}]})}onEscape(){this.close(),this.shouldNotOpen=!0}close(){this.app.keymap.popScope(this.scope),this.suggester.setSuggestions([]),this.popper&&this.popper.destroy(),this.suggestEl.detach()}createPrompt(e){this.promptEl||(this.promptEl=this.suggestEl.createDiv("prompt-instructions"));const t=this.promptEl.createDiv("prompt-instruction");for(const n of e)t.appendChild(n)}}class FileSuggestionModal extends SuggestionModal{constructor(e,t,n){super(e,t.inputEl,n),this.limit=20,this.files=[...n],this.text=t,this.inputEl.addEventListener("input",(()=>this.getFile()))}getFile(){const e=this.inputEl.value,t=this.app.vault.getAbstractFileByPath(e);t!==this.file&&t instanceof obsidian_module.TFile&&(this.file=t,this.onInputChanged())}getSelectedItem(){return this.file}getItemText(e){return e.path}onChooseItem(e){this.file=e,this.text.setValue(e.path),this.text.onChanged()}selectSuggestion({item:e}){this.file=e,this.text.setValue(e.path),this.onClose(),this.text.onChanged(),this.close()}renderSuggestion(e,t){const{item:n,match:r}=e||{},i=t.createDiv({cls:"suggestion-content"});if(!n)return i.setText(this.emptyStateText),void i.parentElement.addClass("is-selected");const o=n.path.length-n.name.length,a=r.matches.map((e=>createSpan("suggestion-highlight")));for(let e=o;e<n.path.length;e++){const t=r.matches.find((t=>t[0]===e));if(t){const o=a[r.matches.indexOf(t)];i.appendChild(o),o.appendText(n.path.substring(t[0],t[1])),e+=t[1]-t[0]-1}else i.appendText(n.path[e])}t.createDiv({cls:"suggestion-note",text:n.path})}getItems(){return this.files}}class InsertPDFModal extends obsidian_module.Modal{constructor(e,t){super(app),this.plugin=e,this.view=t,this.borderBox=!0,this.gapSize=20,this.groupPages=!1,this.direction="right",this.numColumns=1,this.numRows=1,this.lockAfterImport=!0,this.pagesToImport=[],this.pageDimensions={width:0,height:0},this.importScale=.3,this.dirty=!1,this.setImageSizeMessage=()=>this.imageSizeMessage.innerText=`${Math.round(this.pageDimensions.width*this.importScale)} x ${Math.round(this.pageDimensions.height*this.importScale)}`}open(e){e&&"pdf"===e.extension.toLowerCase()&&(this.pdfFile=e),super.open()}onOpen(){this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText("Import PDF"),this.createForm()}async onClose(){this.dirty&&(this.plugin.settings.pdfImportScale=this.importScale,this.plugin.settings.pdfBorderBox=this.borderBox,this.plugin.settings.pdfGapSize=this.gapSize,this.plugin.settings.pdfGroupPages=this.groupPages,this.plugin.settings.pdfNumColumns=this.numColumns,this.plugin.settings.pdfNumRows=this.numRows,this.plugin.settings.pdfDirection=this.direction,this.plugin.settings.pdfLockAfterImport=this.lockAfterImport,this.plugin.saveSettings()),this.pdfDoc&&(this.pdfDoc.destroy(),this.pdfDoc=null)}async getPageDimensions(e){try{const t=this.plugin.settings.pdfScale,n=createEl("canvas"),r=(await e.getPage(1)).getViewport({scale:t});this.pageDimensions.height=r.height,this.pageDimensions.width=r.width,n.width=0,n.height=0,this.setImageSizeMessage()}catch(e){console.log(e)}}createPageListFromString(e){const t=e=>e.replace(/\D/g,"");return this.pagesToImport=[],e.split(",").forEach((e=>{const n=e.split("-");if(1===n.length){const e=parseInt(t(n[0]));!isNaN(e)&&this.pagesToImport.push(e)}else if(2===n.length){const e=parseInt(t(n[0])),r=parseInt(t(n[1]));if(isNaN(e)||isNaN(r))return;for(let t=e;t<=r;t++)this.pagesToImport.push(t)}})),this.pagesToImport}async createForm(){await this.plugin.loadSettings(),this.borderBox=this.plugin.settings.pdfBorderBox,this.gapSize=this.plugin.settings.pdfGapSize,this.groupPages=this.plugin.settings.pdfGroupPages,this.numColumns=this.plugin.settings.pdfNumColumns,this.numRows=this.plugin.settings.pdfNumRows,this.direction=this.plugin.settings.pdfDirection,this.lockAfterImport=this.plugin.settings.pdfLockAfterImport,this.importScale=this.plugin.settings.pdfImportScale;const e=this.contentEl;let t,n,r,i;const o=()=>this.pdfDoc?0===this.pagesToImport.length?(r.buttonEl.style.display="none",void(i.innerText="Please select pages to import")):Math.max(...this.pagesToImport)<=this.pdfDoc.numPages?(r.buttonEl.style.display="block",void(i.innerText="")):(r.buttonEl.style.display="none",void(i.innerText=`The selected document has ${this.pdfDoc.numPages} pages. Please select pages between 1 and ${this.pdfDoc.numPages}`)):(i.innerText="Please select a PDF file",void(r.buttonEl.style.display="none")),a=()=>{0!==n?t.innerHTML=`There are <b>${n}</b> pages in the selected document.`:t.innerText="Please select a PDF file"};let s,l;const c=e=>{const t=this.createPageListFromString(e);t.length>15?l.innerHTML=`You are importing <b>${t.length}</b> pages. ⚠️ This may take a while. ⚠️`:l.innerHTML=`You are importing <b>${t.length}</b> pages.`,o()},T=async e=>{this.pdfDoc&&await this.pdfDoc.destroy(),this.pdfDoc=null,e&&(this.pdfDoc=await getPDFDoc(e),this.pdfFile=e,this.pdfDoc?(n=this.pdfDoc.numPages,s.setValue(`1-${n}`),c(`1-${n}`),o(),a(),this.getPageDimensions(this.pdfDoc)):r.setDisabled(!0))},Q=new obsidian_module.TextComponent(e);Q.inputEl.style.width="100%";const d=new FileSuggestionModal(this.app,Q,app.vault.getFiles().filter((e=>"pdf"===e.extension.toLowerCase())));let u,p;Q.onChange((async()=>{const e=d.getSelectedItem();await T(e)})),t=e.createEl("p",{text:""}),a(),new obsidian_module.Setting(e).setName("Pages to import").setDesc("e.g.: 1,3-5,7,9-10").addText((e=>{s=e,e.setValue("").onChange((e=>c(e))),e.inputEl.style.width="100%"})),l=e.createEl("p",{text:""}),new obsidian_module.Setting(e).setName("Add border box").addToggle((e=>e.setValue(this.borderBox).onChange((e=>{this.borderBox=e,this.dirty=!0})))),new obsidian_module.Setting(e).setName("Group pages").setDesc("This will group all pages into a single group. This is recommended if you are locking the pages after import, because the group will be easier to unlock later rather than unlocking one by one.").addToggle((e=>e.setValue(this.groupPages).onChange((e=>{this.groupPages=e,this.dirty=!0})))),new obsidian_module.Setting(e).setName("Lock pages on canvas after import").addToggle((e=>e.setValue(this.lockAfterImport).onChange((e=>{this.lockAfterImport=e,this.dirty=!0}))));const h=()=>{switch(this.direction){case"down":u.settingEl.style.display="none",p.settingEl.style.display="";break;case"right":u.settingEl.style.display="",p.settingEl.style.display="none"}};let m,f,g;new obsidian_module.Setting(e).setName("Import direction").addDropdown((e=>e.addOptions({down:"Top > Down",right:"Left > Right"}).setValue(this.direction).onChange((e=>{this.direction=e,h(),this.dirty=!0})))),u=new obsidian_module.Setting(e),u.setName("Number of columns").addSlider((e=>e.setLimits(1,100,1).setValue(this.numColumns).onChange((e=>{this.numColumns=e,m.innerText=` ${e.toString()}`,this.dirty=!0})))).settingEl.createDiv("",(e=>{m=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.numColumns.toString()}`})),p=new obsidian_module.Setting(e),p.setName("Number of rows").addSlider((e=>e.setLimits(1,100,1).setValue(this.numRows).onChange((e=>{this.numRows=e,f.innerText=` ${e.toString()}`,this.dirty=!0})))).settingEl.createDiv("",(e=>{f=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.numRows.toString()}`})),h(),new obsidian_module.Setting(e).setName("Size of gap between pages").addSlider((e=>e.setLimits(10,200,10).setValue(this.gapSize).onChange((e=>{this.gapSize=e,g.innerText=` ${e.toString()}`,this.dirty=!0})))).settingEl.createDiv("",(e=>{g=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.gapSize.toString()}`}));const b=new obsidian_module.Setting(e).setName("Imported page size").setDesc(`${this.pageDimensions.width*this.importScale} x ${this.pageDimensions.height*this.importScale}`).addSlider((e=>e.setLimits(.1,1.5,.1).setValue(this.importScale).onChange((e=>{this.importScale=e,this.dirty=!0,this.setImageSizeMessage()}))));this.imageSizeMessage=b.descEl;const y=new obsidian_module.Setting(e).setDesc("Select a document first").addButton((e=>{e.setButtonText("Import PDF").setCta().onClick((async()=>{const e=getEA(this.view);let t=0,n=0;const r=Math.round(this.pageDimensions.width*this.importScale),o=Math.round(this.pageDimensions.height*this.importScale);for(let a=0;a<this.pagesToImport.length;a++){const s=this.pagesToImport[a];i.innerText=`Importing page ${s} (${a+1} of ${this.pagesToImport.length})`;const l=Math.round(this.pageDimensions.width*this.importScale*t+this.gapSize*t),c=Math.round(this.pageDimensions.height*this.importScale*n+this.gapSize*n);e.style.strokeColor=this.borderBox?"#000000":"transparent";const T=e.addRect(l,c,r,o),Q=e.getElement(T);this.lockAfterImport&&(Q.locked=!0);const d=await e.addImage(l,c,this.pdfFile.path+`#page=${s}`,!1,!1),u=e.getElement(d);switch(u.width=r,u.height=o,this.lockAfterImport&&(u.locked=!0),e.addToGroup([T,d]),this.direction){case"right":t=(t+1)%this.numColumns,0===t&&n++;break;case"down":n=(n+1)%this.numRows,0===n&&t++}}if(this.groupPages){const t=e.getElements().map((e=>e.id));e.addToGroup(t)}await e.addElementsToView(!0,!0,!1);const a=e.getExcalidrawAPI(),s=e.getElements().map((e=>e.id)),l=e.getViewElements().filter((e=>s.includes(e.id)));a.selectElements(l),a.zoomToFit(l),this.close()})),r=e,r.buttonEl.style.display="none"}));i=y.descEl,i.addClass("mod-warning"),this.pdfFile?(Q.setValue(this.pdfFile.path),await T(this.pdfFile),d.close(),s.inputEl.focus()):Q.inputEl.focus(),o()}}class UniversalInsertFileModal extends obsidian_module.Modal{constructor(e,t){super(app),this.plugin=e,this.view=t,this.center={x:0,y:0};const n=t.excalidrawAPI.getAppState(),r=t.containerEl.getBoundingClientRect(),i=window.innerWidth||document.documentElement.clientWidth,o=window.innerHeight||document.documentElement.clientHeight,a=sceneCoordsToViewportCoords({sceneX:t.currentPosition.x,sceneY:t.currentPosition.y},n);if(a.x>=r.left+150&&a.y<=r.right-150&&a.y>=r.top+150&&a.y<=r.bottom-150){const e=t.currentPosition.x-250,n=t.currentPosition.y-250;this.center={x:e,y:n}}else{const e=r.left+r.width/2,t=r.top+r.height/2,a=Math.max(0,Math.min(i,e)),s=Math.max(0,Math.min(o,t));this.center=viewportCoordsToSceneCoords({clientX:a,clientY:s},n),this.center={x:this.center.x-250,y:this.center.y-250}}}open(e,t){this.file=e,this.center=null!=t?t:this.center,super.open()}onOpen(){this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText("Insert File From Vault"),this.createForm()}async createForm(){const e=this.contentEl;let t,n,r,i,o,a,s=!1,l=this.file;const c=async()=>{const e=this.plugin.ea,s=l===this.view.file,c=l&&"md"===l.extension&&!e.isExcalidrawFile(l),T=l&&(IMAGE_TYPES.contains(l.extension)||e.isExcalidrawFile(l)),Q=l&&ANIMATED_IMAGE_TYPES.contains(l.extension),d=l&&!T,u=l&&"pdf"===l.extension,p=l&&e.isExcalidrawFile(l),h=l&&"md"===l.extension?(await this.plugin.app.metadataCache.blockCache.getForFile({isCancelled:()=>!1},l)).blocks.filter((e=>{var t;return e.display&&"heading"===(null===(t=e.node)||void 0===t?void 0:t.type)})).filter((e=>!p||!MD_EX_SECTIONS.includes(e.display))):null;if(c||p&&(null==h?void 0:h.length)>0){for(n.settingEl.style.display="",t.selectEl.style.display="block";t.selectEl.options.length>0;)t.selectEl.remove(0);p||t.addOption("",""),h.forEach((e=>{t.addOption(`#${cleanSectionHeading(e.display)}`,e.display)}))}else n.settingEl.style.display="none",t.selectEl.style.display="none";a.settingEl.style.display=p&&!s?"":"none",s||!T&&"md"!==(null==l?void 0:l.extension)?i.buttonEl.style.display="none":i.buttonEl.style.display="block",d||Q||p&&(null==h?void 0:h.length)>0?r.buttonEl.style.display="block":r.buttonEl.style.display="none",o.buttonEl.style.display=u?"block":"none"},T=(await this.plugin.app.metadataCache.blockCache.getForFile({isCancelled:()=>!1},this.view.file)).blocks.filter((e=>{var t;return e.display&&"heading"===(null===(t=e.node)||void 0===t?void 0:t.type)})).filter((e=>!MD_EX_SECTIONS.includes(e.display))),Q=new obsidian_module.TextComponent(e);Q.inputEl.style.width="100%";const d=new FileSuggestionModal(this.app,Q,this.app.vault.getFiles().filter((e=>(null==T?void 0:T.length)>0||e!==this.view.file)));Q.onChange((()=>{l=d.getSelectedItem(),c()})),n=new obsidian_module.Setting(e).setName("Select section heading").addDropdown((e=>{t=e,t.selectEl.style.width="100%"})),a=new obsidian_module.Setting(e).setName("Anchor to 100% of original size").setDesc("This is a pro feature, use it only if you understand how it works. If enabled even if you change the size of the imported image in Excalidraw, the next time you open the drawing this image will pop back to 100% size. This is useful when embedding an atomic Excalidraw idea into another note and preserving relative sizing of text and icons.").addToggle((e=>{e.setValue(s).onChange((e=>{s=e}))})),new obsidian_module.Setting(e).addButton((e=>{e.setButtonText("as Embeddable").onClick((async()=>{const e=app.metadataCache.fileToLinktext(l,this.view.file.path,"md"===l.extension),n=getEA(this.view);n.selectElementsInView([await insertEmbeddableToView(n,this.center,void 0,`[[${e}${t.selectEl.value}]]`)]),this.close()})),r=e})).addButton((e=>{e.setButtonText("as Pdf").onClick((()=>{new InsertPDFModal(this.plugin,this.view).open(l),this.close()})),o=e})).addButton((e=>{e.setButtonText("as Image").onClick((async()=>{const e=getEA(this.view),n=l&&"md"===l.extension&&!e.isExcalidrawFile(l);e.selectElementsInView([await insertImageToView(e,this.center,n&&t.selectEl.value&&""!==t.selectEl.value?`${l.path}${t.selectEl.value}`:l,e.isExcalidrawFile(l)?!s:void 0)]),this.close()})),i=e})),this.view.ownerWindow.addEventListener("keydown",this.onKeyDown=e=>{const t=e=>"none"!==e.buttonEl.style.display;switch(e.key){case"Escape":return void this.close();case"Enter":return!t(r)||t(i)||t(o)?!t(i)||t(r)||t(o)?!t(o)||t(r)||t(i)?void 0:void o.buttonEl.click():void i.buttonEl.click():void r.buttonEl.click();case"i":return void(t(i)&&i.buttonEl.click());case"p":return void(t(o)&&o.buttonEl.click());case"f":return void(t(r)&&r.buttonEl.click())}}),Q.inputEl.focus(),l&&(Q.setValue(l.path),d.close()),c()}onClose(){this.view.ownerWindow.removeEventListener("keydown",this.onKeyDown)}}const setPen=(e,t)=>{const n=t.getAppState();t.updateScene({appState:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({currentStrokeOptions:e.penOptions},e.strokeWidth&&0!==e.strokeWidth?{currentItemStrokeWidth:e.strokeWidth}:null),e.backgroundColor?{currentItemBackgroundColor:e.backgroundColor}:null),e.strokeColor?{currentItemStrokeColor:e.strokeColor}:null),""===e.fillStyle?null:{currentItemFillStyle:e.fillStyle}),e.roughness?null:{currentItemRoughness:e.roughness}),e.freedrawOnly&&!n.resetCustomPen?{resetCustomPen:{currentItemStrokeWidth:n.currentItemStrokeWidth,currentItemBackgroundColor:n.currentItemBackgroundColor,currentItemStrokeColor:n.currentItemStrokeColor,currentItemFillStyle:n.currentItemFillStyle,currentItemRoughness:n.currentItemRoughness}}:null)})},resetStrokeOptions=(e,t,n)=>{t.updateScene({appState:Object.assign(Object.assign(Object.assign({},e?{currentItemStrokeWidth:e.currentItemStrokeWidth,currentItemBackgroundColor:e.currentItemBackgroundColor,currentItemStrokeColor:e.currentItemStrokeColor,currentItemFillStyle:e.currentItemFillStyle,currentItemRoughness:e.currentItemRoughness}:null),{resetCustomPen:null}),n?{currentStrokeOptions:null}:null)})};class ObsidianMenu{constructor(e,t,n){this.plugin=e,this.toolsRef=t,this.view=n,this.renderCustomPens=(e,t)=>{var n;return null===(n=t.customPens)||void 0===n?void 0:n.map(((n,r)=>{const i=this.plugin.settings.customPens[r];return t.resetCustomPen&&"freedraw"!==t.activeTool.type&&t.currentStrokeOptions===i.penOptions&&setTimeout((()=>resetStrokeOptions(t.resetCustomPen,this.view.excalidrawAPI,!1))),!t.resetCustomPen&&"freedraw"===t.activeTool.type&&t.currentStrokeOptions===i.penOptions&&i.freedrawOnly&&setTimeout((()=>setPen(this.activePen,this.view.excalidrawAPI))),this.activePen&&t.resetCustomPen&&"freedraw"===t.activeTool.type&&t.currentStrokeOptions===i.penOptions&&i.freedrawOnly&&(this.activePen.strokeWidth=t.currentItemStrokeWidth,this.activePen.backgroundColor=t.currentItemBackgroundColor,this.activePen.strokeColor=t.currentItemStrokeColor,this.activePen.fillStyle=t.currentItemFillStyle,this.activePen.roughness=t.currentItemRoughness),React__namespace.createElement("label",{key:r,className:clsx("ToolIcon","ToolIcon_size_medium",{"is-mobile":e}),onClick:()=>{const e=Date.now();if(e-this.clickTimestamp[r]<500){const e=new PenSettingsModal(this.plugin,this.view,r);return void(async()=>{await this.plugin.loadSettings(),e.open()})()}this.clickTimestamp[r]=e;const t=this.view.excalidrawAPI,n=t.getAppState();n.currentStrokeOptions!==i.penOptions||"freedraw"!==n.activeTool.type?(this.activePen=Object.assign({},i),setPen(i,t),t.setActiveTool({type:"freedraw"})):resetStrokeOptions(n.resetCustomPen,t,!0)}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-label":DEVICE.isDesktop?i.type:void 0,style:Object.assign({},"freedraw"===t.activeTool.type&&t.currentStrokeOptions===i.penOptions?{background:"var(--color-primary)"}:{})},penIcon(i)))}))},this.longpressTimeout={},this.renderPinnedScriptButtons=(e,t)=>{var n;let r=0;return null===(n=null==t?void 0:t.pinnedScripts)||void 0===n?void 0:n.map(((t,n)=>{var i;const o=this.plugin.scriptEngine.scriptIconMap[t],a=null!==(i=null==o?void 0:o.name)&&void 0!==i?i:"",s=(null==o?void 0:o.svgString)?stringToSVG(o.svgString):ICONS.cog;return this.longpressTimeout[n]||(this.longpressTimeout[n]=0),React__namespace.createElement("label",{key:n,className:clsx("ToolIcon","ToolIcon_size_medium",{"is-mobile":e}),onPointerUp:()=>{this.longpressTimeout[n]&&(window.clearTimeout(this.longpressTimeout[n]),this.longpressTimeout[n]=0,(async()=>{const e=app.vault.getAbstractFileByPath(t);e&&e instanceof obsidian_module.TFile&&this.plugin.scriptEngine.executeScript(this.view,await app.vault.read(e),this.plugin.scriptEngine.getScriptName(e),e)})())},onPointerDown:()=>{const e=Date.now();this.longpressTimeout[n]>0&&(window.clearTimeout(this.longpressTimeout[n]),this.longpressTimeout[n]=0),e-r>=500&&(this.longpressTimeout[n]=window.setTimeout((()=>{this.longpressTimeout[n]=0,(async()=>{var e;await this.plugin.loadSettings();const n=this.plugin.settings.pinnedScripts.indexOf(t);n>-1&&(this.plugin.settings.pinnedScripts.splice(n,1),null===(e=this.view.excalidrawAPI)||void 0===e||e.setToast({message:`Pin removed: ${a}`,duration:3e3,closable:!0})),await this.plugin.saveSettings(),app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinnedScripts()}))})()}),1500)),r=e}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-label":DEVICE.isDesktop?a:void 0},s))}))},this.renderButton=(e,t)=>React__namespace.createElement(React__namespace.Fragment,null,React__namespace.createElement("label",{className:clsx("ToolIcon","ToolIcon_size_medium",{"is-mobile":e}),onClick:()=>{this.toolsRef.current.setTheme(t.theme),this.toolsRef.current.toggleVisibility(t.zenModeEnabled||e)}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-label":t$d("OBSIDIAN_TOOLS_PANEL")},ICONS.obsidian)),React__namespace.createElement("label",{className:clsx("ToolIcon","ToolIcon_size_medium",{"is-mobile":e}),onClick:()=>{this.view.setCurrentPositionToCenter(),new UniversalInsertFileModal(this.plugin,this.view).open()}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-label":t$d("UNIVERSAL_ADD_FILE")},ICONS["add-file"])),this.renderCustomPens(e,t),this.renderPinnedScriptButtons(e,t)),this.clickTimestamp=Array.from({length:Object.keys(PENS).length},(()=>0))}}class ActionButton extends React__namespace.Component{constructor(e){super(e),this.toastMessageTimeout=0,this.longpressTimeout=0,this.state={visible:!0}}render(){return React__namespace.createElement("button",{style:{},className:"ToolIcon_type_button ToolIcon_size_small ToolIcon_type_button--show ToolIcon",title:this.props.title,onClick:e=>{this.toastMessageTimeout&&(window.clearTimeout(this.toastMessageTimeout),this.toastMessageTimeout=0,this.props.action(e)),this.longpressTimeout&&(window.clearTimeout(this.longpressTimeout),this.longpressTimeout=0)},onPointerDown:e=>{this.toastMessageTimeout=window.setTimeout((()=>{var e;null===(e=this.props.view.excalidrawAPI)||void 0===e||e.setToast({message:this.props.title,duration:3e3,closable:!0}),this.toastMessageTimeout=0}),400),this.longpressTimeout=window.setTimeout((()=>{var t;this.props.longpress?this.props.longpress(e):null===(t=this.props.view.excalidrawAPI)||void 0===t||t.setToast({message:"Cannot pin this action",duration:3e3,closable:!0}),this.longpressTimeout=0}),1500)}},React__namespace.createElement("div",{className:"ToolIcon__icon","aria-hidden":"true"},this.props.icon))}}const FIRST_RUN='\nThe Excalidraw Obsidian plugin is much more than "just" a drawing tool. To help you get started here\'s a showcase of the key Excalidraw plugin features.\n\nIf you\'d like to learn more, please subscribe to my YouTube channel: [Visual PKM](https://www.youtube.com/channel/UCC0gns4a9fhVkGkngvSumAQ) where I regularly share videos about Obsidian-Excalidraw and about tools and techniques for Visual Personal Knowledge Management.\n\nThank you & Enjoy!\n\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/o0exK-xFP3k" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n',RELEASE_NOTES={Intro:'After each update you\'ll be prompted with the release notes. You can disable this in plugin settings.\n\nI develop this plugin as a hobby, spending my free time doing this. If you find it valuable, then please say THANK YOU or...\n\n<div class="ex-coffee-div"><a href="https://ko-fi.com/zsolt"><img src="https://cdn.ko-fi.com/cdn/kofi3.png?v=3" height=45></a></div>\n',"2.1.0":`\nBumping the version to 2.1.0 due to minor file format changes that aren't backward compatible. Essentially, 2.0.26 is already not backward compatible, but I forgot to update the version number.\n\nIf you haven't watched the [walkthrough video](https://youtu.be/tHUcD4rWIuY) for 2.0.26, I recommend you do so.\n\n## New\n- Settings under ${String.fromCharCode(96)}Excalidraw Appearance and Behavior${String.fromCharCode(96)}\n - Configure visibility of the crosshair cursor when using the pen tool. [#1673](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1673)\n - Set the time delay for long press to open drawings from markdown under "Link Click and Modifier Keys".\n\n## \n`,"2.0.26":`\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/tHUcD4rWIuY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## New\n- Minor updates from [Excalidraw.com](https://excalidraw.com). The key change is text measurements that should result in consistent text sizing between desktop and mobile devices.\n- Now you can embed the markdown section of an Excalidraw note to your drawing. Simply select ${String.fromCharCode(96)}Insert ANY file${String.fromCharCode(96)}, choose the drawing, and select the relevant heading section to embed.\n - This also works with "back-of-the-drawing" markdown sections. Use the context menu ${String.fromCharCode(96)}Add back-of-note Card${String.fromCharCode(96)}. The action is also available on the Command Palette and in the Excalidraw-Obsidian Tools Panel.\n- Editing an embedded markdown note is now easier. Just press Enter when the element is selected. [#1650](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1650)\n- The crosshair cursor is now hidden when the freedraw tool is active and using a pen. [#1659](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1659)\n- ${String.fromCharCode(96)}Convert markdown note to Excalidraw Drawing${String.fromCharCode(96)} now converts an existing markdown note (not just empty notes) into a drawing. The original markdown note will be on the "back side of the drawing".\n- Introducing ${String.fromCharCode(96)}Annotate image in Excalidraw${String.fromCharCode(96)}, which works very similarly to ${String.fromCharCode(96)}Crop and mask image${String.fromCharCode(96)}. You can replace an image in a markdown note or on the Obsidian Canvas with an Excalidraw drawing containing that image. You will be able to annotate the image in Excalidraw.\n- Now you can reference frames in images embedded in markdown and canvas with frame names e.g. ${String.fromCharCode(96)}![[drawing#^frame=Frame 01]]${String.fromCharCode(96)}\n- Excalidraw file format change:\n - New frontmatter switch ${String.fromCharCode(96)}excalidraw-open-md${String.fromCharCode(96)}: If set to true, the file by default will open as a markdown file. You can switch to Excalidraw View Mode via the command palette action or by right-clicking the tab.\n - Easter Egg: If you add a comment in front of ${String.fromCharCode(96)}# Text Elements${String.fromCharCode(96)}, then the entire Excalidraw data: markdown and JSON will be commented out, thus invisible when exporting to the web. If you remove the comment from before ${String.fromCharCode(96)}# Text Elements${String.fromCharCode(96)}, then only the JSON will be commented out.\n\nBefore:\n${String.fromCharCode(96,96,96)}markdown\n#1657 \n%%\n# Text Elements\n...\n# Drawing\n${String.fromCharCode(96,96,96)}\n\nAfter:\n${String.fromCharCode(96,96,96)}markdown\n# Text Elements\n....\n%%\n# Drawing\n${String.fromCharCode(96,96,96)}\n`,"2.0.25":'\n# New - a small change that opens big opportunities\n- You can now set a folder as the Excalidraw Template in settings (See under Basic). If a folder is provided, Excalidraw will treat drawings in that folder as templates and will prompt you to select the template to use for new drawings.\n- I updated the <a href="https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Deconstruct%20selected%20elements%20into%20new%20drawing.md">Deconstruct Selected Elements into new Drawing</a> script to accommodate the new template setting.\n',"2.0.24":`\nQuality of Life Fixes!\n\n## Fixed\n- Text editing issue on mobile devices with an on-screen keyboard is now fixed 🥳. Previously, Excalidraw's UI fell apart when the keyboard was activated, and often even after you stopped editing, the canvas positioning was off. I hope to have solved the issue (we'll see after your testing and feedback!). This is one of those cases that seems insignificant but took enormous effort. It took me 2.5 full days of net time to figure out the root cause and the solution (this is not an exaggeration).\n- Tool buttons did not get selected on the first click.\n- Images flicker on Forced Save.\n- Hover preview fixes:\n - ${String.fromCharCode(96)}area=${String.fromCharCode(96)}, ${String.fromCharCode(96)}group=${String.fromCharCode(96)}, ${String.fromCharCode(96)}frame=${String.fromCharCode(96)} references now display the part of the image as expected in hover preview (showed an empty preview until now).\n - Block and section references to notes on the "back side of the drawing" now correctly show up in hover preview (showed an empty preview until now).\n\n## New\n- Default height setting in Plugin Settings. Thanks @leoccyao! [#1612](https://github.com/zsviczian/obsidian-excalidraw-plugin/pull/1612)\n`,"2.0.23":`\n## New\n- Additional arrowheads (Circle, Circle Outline, Diamond, Diamond Outline, Triangle Outline) are now available via element properties.\n- Setting under "Links and Transclusions" to show/hide second-order links\n\n## Fixed\n- some styling issues with dynamic styles (e.g.: text color of context menu)\n\n## New in ExcalidrawAutomate\n- Excalidraw Publish Support: New hook to modify the link in the exported SVGs. This is useful when you want to export SVGs to your website. If set, this callback is triggered whenever a drawing is exported to SVG. The string returned by the hook will replace the link in the exported SVG. The hook is only executed if the link is to a file internal to Obsidian. [1605](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1605)\n${String.fromCharCode(96,96,96)}js\nonUpdateElementLinkForExportHook: (data: {\n* originalLink: string,\n* obsidianLink: string,\n* linkedFile: TFile | null,\n* hostFile: TFile,\n* }) => string = null;\n${String.fromCharCode(96,96,96)}\n`,"2.0.22":"\n## Fixed\n- BUG: Unable to load obsidian excalidraw plugin on ipad 15.x or older [#1525](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1525)\n- BUG: ea.help does not display help if only function signature is available [#1601](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1601)\n","2.0.21":`\n## New/changed\n**"Focus on Existing Tab"**\n- New Setting: Disabled by default.\n - Prevents multiple instances of the same drawing from opening when clicking on links within Excalidraw.\n - Overrides the "Reuse Adjacent Pane" option when the file is already open.\n - Accessible under "Links, Transclusions, and TODOs" in plugin settings.\n\n**Enhanced Context Menu Functions for Text Containers**\n- Two new context menu functions added for containers with a text element:\n - Right-click to select the text element only, allowing independent color changes from the container.\n - Remove orphaned element links when the text element has a link but no longer includes a link in the text.\n\n**Improved Laser Pointer Activation**\n- Laser pointer activation on double tap in view mode removed due to interference with link navigation and other features.\n- When the drawing is in "view" mode, laser pointer activation now available via long-press/right-click context menu.\n- Alternatively, activate the laser pointer with "k" if you have a keyboard.\n\n## Fixed\n- **Older iOS and Android webview support**: Rebuilt all packages and dependencies with Node 18, hoping to address (sorry I can't reproduce/test these issues myself) compatibility issues with older iPad OS versions, up to 15.7. [#1525](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1525), and Android [1598](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1598)\n- **Double-click navigation**: Fixed the issue where double-clicking an embedded image did not navigate to the link in view mode.\n- **ExcaliBrain new file creation**: Resolved the issue with new file creation from ExcaliBrain. [#201](https://github.com/zsviczian/excalibrain/issues/201)\n- **Canvas immersive style**: Removed Canvas immersive embedding style support from the Excalidraw stylesheet to address performance issues experienced by some users with various Obsidian themes. If you require this feature, you can add a CSS snippet with the provided code.\n\n${String.fromCharCode(96,96,96)}css\n.canvas-node:not(.is-editing):has(.excalidraw-canvas-immersive) {\n ::-webkit-scrollbar,\n ::-webkit-scrollbar-horizontal {\n display: none;\n }\n background-color: transparent !important;\n}\n\n.canvas-node:not(.is-editing) .canvas-node-container:has(.excalidraw-canvas-immersive) {\n border: unset;\n box-shadow: unset;\n}\n${String.fromCharCode(96,96,96)}\n`,"2.0.20":`\n## Fixed in ExcalidrawAutomate\n- Regression: ${String.fromCharCode(96)}ea.getMaximumGroups(elements)${String.fromCharCode(96)} stopped working after the 2.0.19 update. [#1576](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1576)\n`,"2.0.19":'\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/4wp6vLiIdGM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## Fixed\n- When updating Excalidraw, some open drawings weren\'t automatically reopening. I hope I got this fixed (note this change will only have an effect when you receive the update after this).\n- In dark mode, the frame header is challenging to see when modified [#1568](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1568).\n\n## New\n- Crop PDF pages:\n - Available in Excalidraw, Markdown Notes, and on the Canvas.\n - Crop the active page from the embedded PDF viewer and insert the cropped image into the current view, both in Excalidraw and on Canvas.\n- New Command Palette Action: "Insert active PDF page as image." This action is functional in Excalidraw. If an embedded Obsidian-PDF-viewer is present, executing this command will insert the active page as an image into the Excalidraw scene.\n- Two new settings introduced:\n - "Basic" section allows setting the folder for crop files.\n - "Saving/filename" section enables setting the prefix for crop files.\n- PDF import now defaults to importing all pages.\n- Rounded corners now available for images.\n- Second-order links now encompass forward links from embedded Excalidraw Files.\n- Clicking a cropped file in a markdown note or on Canvas will prompt to open the original file, not just the cropper.\n',"2.0.18":'\n## New\n\n<div style="text-align: center;">\n <a data-tooltip-position="top" aria-label="https://youtube.com/shorts/ST6h4uaXmnY" rel="noopener" class="external-link" href="https://youtube.com/shorts/ST6h4uaXmnY" target="_blank">\n <img src="https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/vintage-mask.png" referrerpolicy="no-referrer" style="width: 150px; margin: 0 auto;">\n </a>\n</div>\n\n- [Crop Vintage Mask Script](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Crop%20Vintage%20Mask.md) adds rounded corner mask to cropped images. Install it from the script library.\n- Advanced Setting: Modify image zoom memory limit for sharper zoom. See under "Non-Excalidraw.com Supported Features" in settings.\n- Laser Pointer will not activate on double-click in ExcaliBrain\n\n## Fixed\n- Resolved cropping issue with rotated images.\n\n## New in ExcalidrawAutomate\n- You can now specify elementId to add functions: addLine, addArrow, addRect, etc.\n- ea.help() now provides help on Script Engine utils functions as well\n- ea.isExcalidrawMask(file?:TFile) will return true if the currently open view or the supplied file is an Excalidraw Mask file.\n',"2.0.17":"\n## Fixed\n- Image cropping now supports dark mode\n- Image cropping/carve out was not working reliably in some cases [#1546](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1546)\n- Masking a mirrored image resulted in an off-positioned mask\n\n## New\n- Context menu action to convert SVG to Excalidraw strokes\n- Updated Chinese translation (Thank you @tswwe)\n","2.0.16":"\n## Fixed\n- Image cropping did not work consistently with large image files on lower-powered devices [#1538](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1538). \n- Mermaid editor was not working when Excalidraw was open in an Obsidian popout window [#1503](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1503)\n","2.0.15":'\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/uHFd0XoHRxE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## New\n- Crop and Mask Images in Excalidraw, Canvas, and Markdown. (Inspired by @bonecast [#4566](https://github.com/excalidraw/excalidraw/issues/4566))\n- Draw metadata around images but hide it on the export.\n\n## Fixed\n- Freedraw closed circles (2nd attempt)\n- Interactive Markdown embeddable border-color (setting did not have an effect)\n',"2.0.14":'\n## New\n- Stylus button now activates the eraser function. Note: This feature is supported for styluses that comply with industry-standard button events. Unfortunately, Samsung SPEN and Apple Pencil do not support this functionality.\n\n## Fixed\n- Improved handwriting quality. I have resolved the long-standing issue of closing the loop when ends of the line are close, making an "u" into an "o" ([#1529](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1529) and [#6303](https://github.com/excalidraw/excalidraw/issues/6303)).\n- Improved Excalidraw\'s full-screen mode behavior. Access it via the Obsidian Command Palette or the full-screen button on the Obsidian Tools Panel ([#1528](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1528)).\n- Fixed color picker overlapping with the Obsidian mobile toolbar on Obsidian-Mobile.\n- Corrected display issues with alternative font sizes (Fibonacci and Zoom relative) in the element properties panel when editing a text element (refer to [2.0.11 Release Notes](https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.0.11) for details about the font-size Easter Egg).\n- Resolved the issue where Excalidraw SVG exports containing LaTeX were not loading correctly into Inkscape ([#1519](https://github.com/zsviczian/obsidian-excalidraw-plugin/pull/1519)). Thanks to 🙏@HyunggyuJang for the contribution.\n',"2.0.13":"\n## Fixed\n- Excalidraw crashes if you paste an image and right-click on canvas immediately after pasting.\n","2.0.12":'\n## Fixed\n- Stencil library not working [#1516](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1516), [#1517](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1517)\n- The new convert image from URL to Local File feature did not work in two situations:\n - When the embedded image is downloaded from a very slow server (e.g. OpenAIs temp image server)\n - On Android\n- The postToOpenAI function did not work in all situations on Android.\n- ExcaliAI wireframe to code did not display correctly on Android\n- Tooltips kept popping up on Android.\n\n## New\n- Added "Save image from URL to local file" to the right-click context menu\n- Further [ExcaliAI](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/ExcaliAI.md) improvements including support for image editing with image mask\n',"2.0.11":`\n## Fixed\n- Resolved an Obsidian performance issue caused by simultaneous installations of Excalidraw and the Minimal theme. Optimized Excalidraw CSS loading into Obsidian since April 2021, resulting in noticeable performance improvements. ([#1456](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1456))\n- Removed default support for the [Sliding Panes Plugin](https://github.com/deathau/sliding-panes-obsidian) due to compatibility issues with Obsidian Workspaces. Obsidian's "Stack Tabs" feature now supersedes Sliding Panes. To re-enable sliding panes support, navigate to Compatibility Features in Plugin Settings.\n- Sometimes images referenced with URLs did not show in exported scenes and when embedding Excalidraw into a markdown note. I hope all that is now resolved.\n- ExcalidrawAutomate scripts sometimes were not able to save their settings.\n\n## New\n- Introduced an "Easter Egg" feature in font-size properties:\n - Hold SHIFT while selecting font size to use scaled sizes (S, M, L, XL) based on the current canvas zoom, ensuring consistent sizes within zoom ranges.\n - Hold ALT/OPT while selecting font size to use values based on the golden mean (s:16, m:26, l:42, xl:68). ALT+SHIFT scales font sizes based on canvas zoom.\n - Scaled sizes are sticky; new text elements adjust font sizes relative to the canvas zoom. Deselect SHIFT to disable this feature.\n - For more on the Golden Scale, watch [The Golden Opportunity](https://youtu.be/2SHn_ruax-s).\n- Added two new Command Palette Actions:\n - "Decompress current Excalidraw File" in Markdown View mode helps repair corrupted, compressed Excalidraw files manually.\n - "Save image from URL to local file" saves referenced URL images to your Vault, replacing images in the drawing.\n- Updated the ExcaliAI script to generate images using ExcaliAI.\n\n## New in ExcalidrawAutomate\n- Added additional documentation about functions to ea.suggester.\n- Added ea.help(). You can use this function from Developer Console to print help information about functions. Usage: ${String.fromCharCode(96)}ea.help(ea.functionName)${String.fromCharCode(96)} or ${String.fromCharCode(96)}ea.help('propertyName')${String.fromCharCode(96)} - notice property name is in quotes.\n`,"2.0.10":"\nOne more minor tweak to support an updated ExcaliAI script - now available in the script store.\n","2.0.9":"\nThis release is very minor, and I apologize for the frequent updates in a short span. I chose not to delay this fix for 1-2 weeks, waiting for my larger release. The WireframeToAI feature wasn't working in 2.0.8, but now it does.\n","2.0.8":`\n## New\n- Mermaid Class Diagrams [#7381](https://github.com/excalidraw/excalidraw/pull/7381)\n- New Scripts:\n - Repeat Texts contributed by @soraliu [#1425](https://github.com/zsviczian/obsidian-excalidraw-plugin/pull/1425)\n - Relative Font Size Cycle [#1474](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1474)\n- New setting to configure the URL used to reach the OpenAI API - for setting an OpenAI API compatible local LLM URL.\n\n## Fixed\n- web images with jpeg extension were not displayed. [#1486](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1486)\n- MathJax was causing errors on the file in the active editor when starting Obsidian or starting the Excalidraw Plugin. I reworked the MathJax implementation from the ground up. [#1484](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1484), [#1473](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1473)\n- Enhanced performance for resizing sticky notes (resize + ALT) on slower devices when centrally adjusting their size.\n\n## New in ExcalidrawAutomate:\n- New ArrowHead types. Currently only available programmatically and when converting Mermaid Class Diagrams into Excalidraw Objects:\n${String.fromCharCode(96,96,96)}ts\n addArrow(\n points: [x: number, y: number][],\n formatting?: {\n startArrowHead?: "arrow"|"bar"|"circle"|"circle_outline"|"triangle"|"triangle_outline"|"diamond"|"diamond_outline"|null;\n endArrowHead?: "arrow"|"bar"|"circle"|"circle_outline"|"triangle"|"triangle_outline"|"diamond"|"diamond_outline"|null;\n startObjectId?: string;\n endObjectId?: string;\n },\n ): string;\n \n connectObjects(\n objectA: string,\n connectionA: ConnectionPoint | null,\n objectB: string,\n connectionB: ConnectionPoint | null,\n formatting?: {\n numberOfPoints?: number;\n startArrowHead?: "arrow"|"bar"|"circle"|"circle_outline"|"triangle"|"triangle_outline"|"diamond"|"diamond_outline"|null;\n endArrowHead?: "arrow"|"bar"|"circle"|"circle_outline"|"triangle"|"triangle_outline"|"diamond"|"diamond_outline"|null;\n padding?: number;\n },\n ): string;\n\n connectObjectWithViewSelectedElement(\n objectA: string,\n connectionA: ConnectionPoint | null,\n connectionB: ConnectionPoint | null,\n formatting?: {\n numberOfPoints?: number;\n startArrowHead?: "arrow"|"bar"|"circle"|"circle_outline"|"triangle"|"triangle_outline"|"diamond"|"diamond_outline"|null;\n endArrowHead?: "arrow"|"bar"|"circle"|"circle_outline"|"triangle"|"triangle_outline"|"diamond"|"diamond_outline"|null;\n padding?: number;\n },\n ): boolean;\n${String.fromCharCode(96,96,96)}\n`,"2.0.7":'\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/kp1K7GRrE6E" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n# Fixed\n- The Android and iOS crash with 2.0.5 😰. I can\'t apologize enough for releasing a version that I did not properly test on Android and iOS. That ought to teach me something about last-minute changes before hitting release.\n- Scaled-resizing a sticky note (SHIFT+resize) caused Excalidraw to choke on slower devices\n- Improved plugin performance focusing on minimizing Excalidraw\'s effect on Obsidian overall\n- Images embedded with a URL often did not show up in image exports, hopefully, the issue will less frequently occur in the future.\n- Local file URL now follows Obsidian standard - making it easier to navigate in Markdown view mode.\n\n# New\n- Bonus feature compared to 2.0.4: Second-order links when clicking embedded images. I use images to connect ideas. Clicking on an image and seeing all the connections immediately is very powerful.\n- In plugin settings, under "Startup Script", the button now opens the startup script if it already exists.\n- Partial support for animated GIFs (will not show up in image exports, but can be added as interactive embeddables)\n- Configurable modifier keys for link click action and drag&drop actions.\n- Improved support for drag&drop from your local drive and embedding of files external to Excalidraw.\n',"2.0.5":'\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/kp1K7GRrE6E" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n# Fixed\n- Scaled-resizing a sticky note (SHIFT+resize) caused Excalidraw to choke on slower devices\n- Improved plugin performance focusing on minimizing Excalidraw\'s effect on Obsidian overall\n- Images embedded with a URL often did not show up in image exports, hopefully, the issue will less frequently occur in the future.\n- Local file URL now follows Obsidian standard - making it easier to navigate in Markdown view mode.\n\n# New\n- In plugin settings, under "Startup Script", the button now opens the startup script if it already exists.\n- Partial support for animated GIFs (will not show up in image exports, but can be added as interactive embeddables)\n- Configurable modifier keys for link click action and drag&drop actions.\n- Improved support for drag&drop from your local drive and embedding of files external to Excalidraw.\n',"2.0.4":`\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/A1vrSGBbWgo" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## New\n- ExcaliAI\n- You can now add ${String.fromCharCode(96)}ex-md-font-hand-drawn${String.fromCharCode(96)} or ${String.fromCharCode(96)}ex-md-font-hand-drawn${String.fromCharCode(96)} to the ${String.fromCharCode(96)}cssclasses:${String.fromCharCode(96)} frontmatter property in embedded markdown nodes and their font face will match the respective Excalidraw fonts.\n\n## Fixed\n- Adding a script for the very first time (when the script folder did not yet exist) did not show up in the tools panel. Required an Obsidian restart. \n- Performance improvements\n\n## New and updated In Excalidraw Automate\n- Added many new functions and some features to existing functions. See the [release notes](https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.0.3) for details\n`,"2.0.3":'\n## Fixed\n- Mermaid to Excalidraw stopped working after installing the Obsidian 1.5.0 insider build. [#1450](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1450)\n- CTRL+Click on a Mermaid diagram did not open the Mermaid editor.\n- Embed color settings were not honored when the embedded markdown was focused on a section or block.\n- Scrollbars were visible when the embeddable was set to transparent (set background color to match element background, and set element background color to "transparent").\n',"2.0.2":'\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/502swdqvZ2A" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## Fixed\n- Resolved an issue where the Command Palette\'s "Toggle between Excalidraw and Markdown mode" failed to uncompress the Excalidraw JSON for editing.\n\n## New\n- Scaling feature for embedded objects (markdown documents, pdfs, YouTube, etc.): Hold down the SHIFT key while resizing elements to adjust their size.\n- Expanded support for Canvas Candy. Regardless of Canvas Candy, you can apply CSS classes to embedded markdown documents for transparency, shape adjustments, text orientation, and more.\n- Added new functionalities to the active embeddable top-left menu:\n - Document Properties (cog icon)\n - File renaming\n - Basic styling options for embedded markdown documents\n - Setting YouTube start time\n - Zoom to full screen for PDFs\n- Improved immersive embedding of Excalidraw into Obsidian Canvas.\n- Introduced new Command Palette Actions:\n - Embeddable Properties\n - Scaling selected embeddable elements to 100% relative to the current canvas zoom.\n',"2.0.1":'\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/xmqiBTrlbEM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## Fixed\n- bug with cssclasses in frontmatter\n- styling of help screen keyboard shortcuts [#1437](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1437)\n',"2.0.0":`\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/JC1E-jeiWhI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## New\n- Added support for applying CSS classes in frontmatter. Now, when embedding Excalidraw drawings into Obsidian Canvas, you can use [Canvas Candy](https://tfthacker.com/canvas-candy) classes. For instance, ${String.fromCharCode(96)}cssclasses: cc-border-none${String.fromCharCode(96)} removes the canvas node border around the drawing.\n- Introduced new context menu actions:\n - Navigate to link or embedded image.\n - Add any file from the vault to the canvas.\n - Convert the selected text element or sticky note to an embedded markdown file.\n - Add a link from the Vault to the selected element.\n- Frames are now rendered in exported images.\n- SVG Export includes the ${String.fromCharCode(96)}.excalidraw-svg${String.fromCharCode(96)} class, enabling post-processing of SVGs using publish.js when using custom domains with Obsidian Publish. Also, added a command palette action ${String.fromCharCode(96)}Obsidian Publish: Find SVG and PNG exports that are out of date${String.fromCharCode(96)}.\n- Added a new Command palette action to open the corresponding Excalidraw file based on the embedded SVG or PNG file. ${String.fromCharCode(96)}Open Excalidraw Drawing${String.fromCharCode(96)} [Issue #1411](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1411)\n\n## Fixed and Improved\n- Resolved issue with the Mermaid Timeline graph displaying all black. [Issue #1424](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1424)\n- Enabled toggling pen mode off after activation by a pen touch.\n- Now you are able to unlock elements on mobile; previously, locked elements couldn't be selected.\n- Fixed the disabled ${String.fromCharCode(96)}complete line button${String.fromCharCode(96)} for multipoint lines on mobile.\n![Mobile Editing Image](https://github.com/zsviczian/obsidian-excalidraw-plugin/assets/14358394/e7051c75-818f-4800-ba16-ac276e229184)\n\n`,"1.9.28":"\n## Fixed & Improved\n- Fixed an issue where the toolbar lost focus, requiring two clicks. This caused a problem when the hand tool was activated from ExcalidrawAutomate script when opening a drawing, causing buttons to stop working. [#1344](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1344)\n- Resolved a caching issue affecting image area-links and group-links, making them work inconsistently. For more details, refer to the discussion on [Discord](https://discord.com/channels/1026825302900494357/1169311900308361318).\n- Improved frame colors with Dynamic Coloring.\n- Added support for multiline LaTeX formulas. [#1403](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1403)\n- Fixed the issue of Chinese characters overlapping in MathJax. [#1406](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1406)\n\n## New\n- Added support for Mermaid to Excalidraw **Sequence Diagrams**.\n- If an image contains an element link, clicking on the image will now open the link chooser, allowing you to decide whether to open the image or follow the element link.\n- When hovering over an image that also has an element link, the hover preview will display the contents of the link.\n- You can now choose to **import PDFs** in columns instead of rows. Additionally, you have the option to group all pages after import, which will improve the unlocking experience if you also lock pages on import.\n- Introduced configuration options for the **Laser Tool**, including pointer color, decay length, and time. ([#1408](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1408), [#1220](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1220))\n\n![image](https://github.com/zsviczian/obsidian-excalidraw-plugin/assets/14358394/c0cad40a-1afc-42af-b41b-f912dd8a4e78)\n","1.9.27":'\n## New\n- Restructured plugin settings, added additional comments and relevant videos\n- Added setting to change PDF to Image resolution/scale. This has an effect when embedding PDF pages to Excalidraw. A lower value will result in less-sharp pages, but better overall performance. Also, larger pages (higher scale value) were not accepted by Excalidraw.com when copying from Obsidian due to the 2MB image file limit. Find the "PDF to Image" setting under "Embedding Excalidraw into your Notes and Exporting" setting. [#1393](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1393)\n\n## Fixed\n- When multiple Excalidraw Scripts were executed parallel a race condition occurred causing scripts to override each other\n- I implemented a partial fix to "text detaching from figures when dragging them" [#1400](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1400)\n- Regression: extra thin stroke removed with 1.9.26 [#1399](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1399)',"1.9.26":'\n## Fixes and improvements from Excalidraw.com\n- Freedraw shape selection issue, when fill-pattern is not solid [#7193](https://github.com/excalidraw/excalidraw/pull/7193)\n- Actions panel UX improvement [#6850](https://github.com/excalidraw/excalidraw/pull/6850)\n\n## Fixed in plugin\n- After inserting PDF pages as image the size of inserted images were incorrectly anchored preventing resizing of pages. The fix does not solve the issue with already imported pages, but pages you import in the future will not be anchored. \n- Mobile toolbar flashes up on tab change on desktop\n- Toolbar buttons are active on the first click after opening a drawing. This addresses the "hand" issue raised here: [#1344](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1344)\n',"1.9.25":`\n## Fixed\n- Fixed issues with creating Markdown or Excalidraw files for non-existing documents [#1385](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1385)\n- Resolved a bug where changing the section/block filter after duplicating a markdown embeddable now works correctly on the first attempt [#1387](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1387)\n\n## New\n- Easily create a markdown file and embed it as an embedded frame with a single click when clicking a link pointing to a non-existent file.\n![image](https://github.com/zsviczian/obsidian-excalidraw-plugin/assets/14358394/4b9de54d-2382-4a52-b500-918ba2a60133)\n- Offline LaTeX support. The MathJax package is now included in the plugin, eliminating the need for an internet connection. [#1383](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1383), [#936](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/936), [#1289](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1289)\n\n## Minor Updates from excalidraw.com\n- Improved the laser pointer in dark mode.\n- Removed bound arrows from frames.\n- Enhanced fill rendering.\n- Maintained the z-order of elements added to frames.\n\n## New in ExcalidrawAutomate\n- Introduced two LZString functions in ExcalidrawAutomate:\n${String.fromCharCode(96,96,96)}typescript\ncompressToBase64(str:string):string;\ndecompressFromBase64(str:string):string;\n${String.fromCharCode(96,96,96)}\n`,"1.9.24":`\n## Fixed\n- Resolved some hidden Image and Backup Cache initialization errors.\n\n## New Features\n- Introducing the ${String.fromCharCode(96)}[[cmd://cmd-id]]${String.fromCharCode(96)} link type, along with a new Command Palette Action: ${String.fromCharCode(96)}Insert Obsidian Command as a link${String.fromCharCode(96)}. With this update, you can now add any command available on the Obsidian Command palette as a link in Excalidraw. When you click the link, the corresponding command will be executed. This feature opens up exciting possibilities for automating your drawings by creating Excalidraw Scripts and attaching them to elements.\n\n- I am thrilled to announce that you can now embed images directly from your local hard drive in Excalidraw. These files won't be moved into Obsidian. Please note, however, that these images won't be synchronized across your other devices. [#1365](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1365)\n\nCheck out the [updated keyboard map](https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/excalidraw-modifiers.png)\n\n<a href="https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/excalidraw-modifiers.png"><img src="https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/excalidraw-modifiers.png" width="100%" alt="Keyboard map"/></a>\n\nStay creative and productive with Excalidraw!\n`,"1.9.23":"\n## Fixed\n- Link navigation error in view mode introduced with 1.9.21 [#7120](https://github.com/excalidraw/excalidraw/pull/7120)\n","1.9.21":'\n## Fixed:\n- When moving a group of objects on the grid, each object snapped separately resulting in a jumbled-up image [#7082](https://github.com/excalidraw/excalidraw/issues/7082)\n\n## New from Excalidraw.com:\n- 🎉 Laser Pointer. Press "K" to activate the laser pointer, or find it under more tools. In View-Mode double click/tap the canvas to toggle the laser pointer\n\n![image](https://github.com/zsviczian/obsidian-excalidraw-plugin/assets/14358394/d3fc079d-9428-4a93-9a9b-1947ce9b6b57)\n',"1.9.20":`\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/QB2rKRxxYlg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## Fixed\n- Fourth Font displays correctly in SVG embeds mode\n- The re-colorMap map (see [1.9.19](https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.9.19) for more info) did not work when either of the fill or stroke color properties of the image was missing.\n- Excalidraw Pasting with middle mouse button on Linux [#1338](https://github.com/zsviczian/obsidian-excalidraw-plugin/pull/1338) 🙏@Aeases \n\n### Fixed by excalidraw.com\n- Excalidraw's native eyedropper fixes [#7019](https://github.com/excalidraw/excalidraw/pull/7019)\n\n## New\n- Now you can insert [Mermaid](https://mermaid.live/) diagrams as Excalidraw elements into your drawings (currently only the [Flowchart](https://mermaid.js.org/syntax/flowchart.html) type is supported, [other diagram types](https://mermaid.js.org/intro/#diagram-types) are inserted as Mermaid native images. \n - ⚠️**This feature requires Obsidian API v1.4.14 (the latest desktop version). On Obsidian mobile API v1.4.14 is only available to Obsidian insiders currently**\n - If you want to contribute to the project please head over to [mermaid-to-excalidraw](https://github.com/excalidraw/mermaid-to-excalidraw) and help create the converters for the other diagram types.\n- The Fourth Font now also supports the OTF format\n- Disable snap-to-grid in grid mode by holding down the CTRL/CMD while drawing or moving an element [#6983](https://github.com/excalidraw/excalidraw/pull/6983)\n- I updated the Excalidraw logo in Obsidian. This affects the logo on the tab and the ribbon.\n\n### New from excalidraw.com\n- Elements alignment snapping. Hold down the CTRL/CMD button while moving an element to snap it to other objects. [#6256](https://github.com/excalidraw/excalidraw/pull/6256)\n\n### New in the script library\n- The amazing shape [Boolean Operations](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Boolean%20Operations.md) script created by 🙏@GColoy is available in the script library.\n\n### New in Excalidraw Automate\n- ${String.fromCharCode(96)}getPolyBool()${String.fromCharCode(96)} returns a [PolyBool](https://github.com/velipso/polybooljs) object\n- sample mermaid code:\n${String.fromCharCode(96,96,96)}js\nea = ExcalidrawAutomate();\nea.setView();\nawait ea.addMermaid(\n ${String.fromCharCode(96)}flowchart TD\n A[Christmas] --\x3e|Get money| B(Go shopping)\n B --\x3e C{Let me think}\n C --\x3e|One| D[Laptop]\n C --\x3e|Two| E[iPhone]\n C --\x3e|Three| F[fa:fa-car Car]${String.fromCharCode(96)}\n);\nea.addElementsToView();\n${String.fromCharCode(96,96,96)}`,"1.9.19":`\n## New\n- I added new features to the [Deconstruct Selected Elements](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Deconstruct%20selected%20elements%20into%20new%20drawing.md) script\n- I added a new script: [Text Aura](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Text%20Aura.md)\n- I updated the [Set Grid](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Set%20Grid.md) script. You can now set the Major/Minor tick frequency. [#1305](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1305)\n- The re-colorMap is now case-insensitive. The color map is a hidden feature. In Markdown View mode you can add a JSON map after the embedded SVG or Excalidraw image filename with a mapping of current colors to new colors.\n<img width="100%" src="https://github.com/zsviczian/obsidian-excalidraw-plugin/assets/14358394/1d985a59-a2d2-48a2-9cef-686bfbe9ef02"/>\n\n## New in ExcalidrawAutomate\n- I added the ${String.fromCharCode(96)}silent${String.fromCharCode(96)} switch. If this is true, the created file will not be opened.\n${String.fromCharCode(96,96,96)}typescript\n async create(params?: {\n filename?: string;\n foldername?: string;\n templatePath?: string;\n onNewPane?: boolean;\n silent?: boolean;\n frontmatterKeys?: {\n "excalidraw-plugin"?: "raw" | "parsed";\n "excalidraw-link-prefix"?: string;\n "excalidraw-link-brackets"?: boolean;\n "excalidraw-url-prefix"?: string;\n "excalidraw-export-transparent"?: boolean;\n "excalidraw-export-dark"?: boolean;\n "excalidraw-export-padding"?: number;\n "excalidraw-export-pngscale"?: number;\n "excalidraw-default-mode"?: "view" | "zen";\n "excalidraw-onload-script"?: string;\n "excalidraw-linkbutton-opacity"?: number;\n "excalidraw-autoexport"?: boolean;\n };\n plaintext?: string; //text to insert above the ${String.fromCharCode(96)}# Text Elements${String.fromCharCode(96)} section\n }): Promise<string>\n${String.fromCharCode(96,96,96)}\n`,"1.9.18":`\n## New\n- Excalidraw now syncs with Obsidian's language settings, provided translations are available. [#1297](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1297)\n\n## Fixed\n- [#1285](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1285): Solved Obsidian crashes caused by copying images from Excalidraw into markdown notes. Going forward:\n - Copying an image will paste its embed link,\n - Copying a text element will paste the text,\n - For all other elements with links, the link will be pasted.\n - In all other cases nothing will be pasted.\n \n- Resolved grid instability ([#1298](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1298)).\n- Fixed missing ${String.fromCharCode(96)}[[square brackets]]${String.fromCharCode(96)} in PDF section references, making the links functional.\n- Corrected the behavior of "Open current link in browser" for embedded YouTube and Vimeo frames. Clicking the globe button will now correctly open the links.\n`,"1.9.17":'\n## New \n- Significant performance improvements from Excalidraw.com\n- When selecting a highlight in the Obsidian PDF editor and selecting "Copy as Quote" in the context menu, then paste this to Excalidraw, the text will arrive as a text element wrapped in a transparent sticky note with the link to the original highlight attached to the sticky note. You can override this behavior by SHIFT+CTRL/CMD pasting\n\n## Fixed\n- BUG: Image caching issue. Changes to the drawing do not reflect immediately in the note when re-opening the drawing [#1297](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1279)\n- Removed underline from links in NativeSVG embed.\n',"1.9.16":"\nI apologize for this extra release. I accidentally built 1.9.15 with an older excalidraw.com package version. Fixes and new features (like the improved grid) are now available again. Otherwise, this is the same as 1.9.15. Sorry for the inconvenience.\n","1.9.15":"\n## New\n- There is now a search box in the Excliadraw Script Store. I categorized the scripts and added keywords to help easier navigation.\n\n## Fixed\n- The theme of the embedded Markdown document did not always honor plugin settings. With some themes, it worked, with others (including the default Obsidian theme, it didn't). \n","1.9.14":`\n# Fixed\n- **Dynamic Styling**: Excalidraw ${String.fromCharCode(96)}Plugin Settings/Display/Dynamic Styling${String.fromCharCode(96)} did not handle theme changes correctly.\n- **Section References**: Section Headings that contained a dot (e.g. #2022.01.01) (or other special characters) did not work when focusing markdown embeds to a section. [#1262](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1262)\n- **PNG Export**: When using images from the web (i.e. based on URL and not a file from your Vault), embedding the Excalidraw file into a markdown document as PNG, or exporting as PNG failed. This is because due to browser cross-origin restrictions, Excalidraw is unable to access the image. In such cases, a placeholder will be included in the export, but the export will not fail, as until now.\n\n# New in ExcalidrawAutomate\n- ${String.fromCharCode(96)}getActiveEmbeddableViewOrEditor${String.fromCharCode(96)} will return the active editor and file in case of a markdown document or the active leaf.view for other files (e.g. PDF, MP4 player, Kanban, Canvas, etc) of the currently active embedded object. This function can be used by plugins to check if an editor is available and obtain the view or editor to perform their actions. Example: [package.json](https://github.com/zsviczian/excalibrain/blob/2056a021af7c3a53ed08203a77f6eae304ca6e39/package.json#L23), [Checking for EA](https://github.com/zsviczian/excalibrain/blob/2056a021af7c3a53ed08203a77f6eae304ca6e39/src/excalibrain-main.ts#L114-L127), and [Running the function](https://github.com/zsviczian/excalibrain/blob/2056a021af7c3a53ed08203a77f6eae304ca6e39/src/excalibrain-main.ts#L362-L399)\n\n${String.fromCharCode(96,96,96)}typescript\npublic getActiveEmbeddableViewOrEditor (view?:ExcalidrawView): {view:any}|{file:TFile, editor:Editor}|null;\n${String.fromCharCode(96,96,96)}\n`,"1.9.13":`\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/opLd1SqaH_I" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n# New\n- **Templater support**: You can now execute Templater scripts on an embedded Markdown document when the document is active for editing\n- **Interactive image-embeds**: I added a new image embed option "SVG Native". In "SVG Native" mode embedded items such as videos, webpages, and links (including links within the Vault) work.\n- **Anchored image resizing**: When you embed an Excalidraw drawing using the Anchor to 100% option, resizing the image will be disabled.\n\n# Fixed\n- when opening a new document in the Excalidraw view while a markdown document was open for editing in an embeddable, Excalidraw terminated with errors\n- shift-click to select multiple elements\n- dynamic styling when canvas background with transparent\n \n# New in ExcalidrawAutomate\n- added openState to the ${String.fromCharCode(96)}openFileInNewOrAdjacentLeaf${String.fromCharCode(96)}. For details see: [OpenViewState](https://github.com/obsidianmd/obsidian-api/blob/f86f95386d439c19d9a77831d5cac5748d80e7ec/obsidian.d.ts#L2686-L2695)\n${String.fromCharCode(96,96,96)}typescript\nopenFileInNewOrAdjacentLeaf(file: TFile, openState?: OpenViewState): WorkspaceLeaf\n${String.fromCharCode(96,96,96)}\n`,"1.9.12":`\n## New\n- If you create a Text Element that includes only a transclusion e.g.: ${String.fromCharCode(96)}![[My Image.png]]${String.fromCharCode(96)} then excalidraw will automatically replace the transclusion with the embedded image.\n- New Excalidraw splash screen icon contributed by Felix Häberle. 😍\n\n<div class="excalidraw-image-wrapper">\n<img src='https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/excalidraw-sword-mini.png'/>\n</div>\n\n## Fixed\n- Popout windows behaved inconsistently losing focus at the time when a markdown file was embedded. Hopefully, this is now working as intended.\n- A number of small fixes that will also improve the ExcaliBrain experience\n`,"1.9.11":"\n# New\n- I added 2 new command palette actions: 1) to toggle frame clipping and 2) to toggle frame rendering.\n\n# Updated\n- I released a minor update to the slideshow script. Frame sequence (Frame 1, 2, 3, ...) will now be displayed in proper order. Frames will be hidden during the presentation (this was there before, but there was a change to excalidraw.com that broke this feature of the slideshow script).\n\n# Fixed: \n- Excalidraw Automate error introduced with 1.9.10 - when elements are repositioned to cursor and no ExcalidrawView is active\n","1.9.10":'\n## New\n- @mazurov added a new script: [Ellipse Selected Elements](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Ellipse%20Selected%20Elements.md)\n\n## Fixed\n- **Image Saving Error**: Previously, inserting an image from Firebase Storage or other URLs could result in an error that prevented the entire drawing from being saved. I have now improved the error handling and image fetching from the web, ensuring smooth image insertion and saving. \n- **Text Search Bug**: There was an issue where text search failed when frames had default names like "Frame 1," "Frame 2," etc. This has been resolved, and now the text search works correctly in such cases. ([#1239](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1239)) \n- **Image Positioning Fix**: An annoying bug caused the image to jump after inserting it using the "Insert Image" command palette action. I\'ve fixed this issue, and now the image behaves as expected when positioning it for the first time.\n',"1.9.9":`\n## ⚠️⚠️ IMPORTANT: PLEASE READ ⚠️⚠️\n\nI updated embedded frames for compatibility with excalidraw.com. To ensure everything works smoothly:\n\n🔄 Update Excalidraw on all your devices.\n\nThis will avoid any issues with converted files and let you enjoy the new features seamlessly.\n\nThank you for your understanding. If you have any questions, feel free to reach out.\n\n---\n\n## Fixed:\n- PNG image caching resulting in broken images after Obsidian restarts\n- SVG export now displays embedded iframes with the correct embed link (note this feature only works when you open the SVGs in a browser outside Obsidian).\n\n## Updated / fixed in Excalidraw Automate\n- I updated ${String.fromCharCode(96)}lib/ExcalidrawAutomate.d.ts${String.fromCharCode(96)} and published a new version of obsidian-excalidraw-plugin type library to npmjs.\n- Added new ExcalidrawAutomate functions: ${String.fromCharCode(96)} addEmbeddable()${String.fromCharCode(96)}, ${String.fromCharCode(96)}DEVICE${String.fromCharCode(96)}, ${String.fromCharCode(96)}newFilePrompt()${String.fromCharCode(96)}, and ${String.fromCharCode(96)}getLeaf()${String.fromCharCode(96)}\n- ${String.fromCharCode(96)}addImage${String.fromCharCode(96)} and ${String.fromCharCode(96)}addElementsToView${String.fromCharCode(96)} were extended with 1-1 additional optional parameter. As a result of ${String.fromCharCode(96)}shouldRestoreElements${String.fromCharCode(96)} defaulting to false, all elements in the scene will no longer be updated (iframes will not blink) when you add elements via script.\n- There is a new event hook: ${String.fromCharCode(96)}onPasteHook${String.fromCharCode(96)}. This will be called whenever the user pastes something to the canvas. You can use this callback if you want to do something additional during the onPaste event. In case you want to prevent the Excalidraw default onPaste action you must return false\n\n${String.fromCharCode(96,96,96)}typescript\nasync addImage(\n topX: number,\n topY: number,\n imageFile: TFile | string,\n scale: boolean = true,\n anchor: boolean = true,\n): Promise<string>;\n\nasync addElementsToView(\n repositionToCursor: boolean = false,\n save: boolean = true,\n newElementsOnTop: boolean = false,\n shouldRestoreElements: boolean = false,\n): Promise<boolean>;\n\n onPasteHook: (data: {\n ea: ExcalidrawAutomate;\n payload: ClipboardData;\n event: ClipboardEvent;\n excalidrawFile: TFile;\n view: ExcalidrawView;\n pointerPosition: { x: number; y: number };\n }) => boolean = null;\n\naddEmbeddable(\n topX: number,\n topY: number,\n width: number,\n height: number,\n url?: string,\n file?: TFile\n): string;\n\nget DEVICE(): DeviceType;\n\nnewFilePrompt(\n newFileNameOrPath: string,\n shouldOpenNewFile: boolean,\n targetPane?: PaneTarget,\n parentFile?: TFile\n): Promise<TFile | null>;\n\ngetLeaf(\n origo: WorkspaceLeaf,\n targetPane?: PaneTarget\n): WorkspaceLeaf;\n${String.fromCharCode(96,96,96)}\n`,"1.9.8":'\n## New Features\n- Zoom to heading and block in markdown frames.\n- Added an iframe menu that allows users to change heading/block zoom, center the element, and open it in the browser.\n- Replaced twitframe with platform.twitter for tweets. The "Read more" and "Reply" buttons now work. Embedded tweets will honor theme settings.\n\n## Bug Fixes\n- Fixed an issue where embedded markdown frames disappeared in fullscreen mode. [#1197](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1197)\n- Resolved a problem with the "Embed Markdown as Image" feature where changes to embed properties were not always honored. [#1201](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1201)\n- When inserting any file from the Vault and embedding a Markdown document as an image, the embed now correctly honors the section heading if specified. [#1200](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1200)\n- SVG and PNG autoexport now function properly when closing a popout window. [#1209](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1209)\n- Many other minor fixes\n',"1.9.7":`\n## Fixed:\n\n- Fixed an issue where using the color picker shortcut would cause the UI to disappear in mobile view mode.\n- You can now add YouTube playlists to iframes.\n- Fixed a bug where the "Add any file" dropdown suggester opened in the main Obsidian workspace instead of the popout window when Excalidraw was running. ([#1179](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1191))\n- Made some improvements to the logic of opening in the adjacent pane, although it is still not perfect.\n- Fixed an issue where Obsidian sync would result in the loss of the last approximately 20 seconds of work. Excalidraw's handling of sync is now fixed. ([#1189](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1189))\n\n## New:\n\n- Introducing Image Cache: Excalidraw will now cache rendered images embedded in Markdown documents, which will enhance the markdown rendering experience.\n- Backup Cache: Excalidraw now stores a backup on your device when saving, in case the application is terminated during a save operation. If you are using sync, you can find the latest backup on the device you last used to edit your drawing.\n- Added ${String.fromCharCode(96)}frame=${String.fromCharCode(96)} parameter to image references. ([#1194](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1194)) For more details about this feature, check out this [YouTube video](https://youtu.be/yZQoJg2RCKI).\n- When an SVG image from Draw.io is embedded in Excalidraw, clicking the image will open the file in the [Diagram plugin](https://github.com/zapthedingbat/drawio-obsidian) (if available).\n- Added the [Create DrawIO file](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Create%20DrawIO%20file.md) Excalidraw Automate Script to the library, which allows you to create a new draw.io drawing and add it to the current Excalidraw canvas.\n\n## New in ExcalidrawAutomate\n\n${String.fromCharCode(96,96,96)}typescript\nasync getAttachmentFilepath(filename: string): Promise<string>\n${String.fromCharCode(96,96,96)}\n\nThis asynchronous function retrieves the filepath to a new file, taking into account the attachments preference settings in Obsidian. It creates the attachment folder if it doesn't already exist. The function returns the complete path to the file. If the provided filename already exists, the function will append '_[number]' before the extension to generate a unique filename.\n\n${String.fromCharCode(96,96,96)}typescript\ngetElementsInFrame(frameElement: ExcalidrawElement, elements: ExcalidrawElement[]): ExcalidrawElement[];\n${String.fromCharCode(96,96,96)}\n\nThis function returns the elements contained within a frame.\n`,"1.9.6":`\n## Fixed\n- help shortcuts are really hard to see [#1176](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1179)\n- link icons not visible on elements after 1.9.5 release (reported on Discord)\n- PDFs in iFrames will now respect the ${String.fromCharCode(96)}[[document.pdf#page=155]]${String.fromCharCode(96)} format\n- Keyboard shortcuts were not working properly on external drop. Check [updated keyboard map](https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/excalidraw-modifiers.png)\n\n<a href="https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/excalidraw-modifiers.png"><img src="https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/excalidraw-modifiers.png" width="100%" alt="Keyboard map"/></a>\n`,"1.9.5":`\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/ICpoyMv6KSs" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## New\n- IFrame support: insert documents from your Obsidian Vault and insert youtube, Vimeo, and generally any website from the internet\n- Frame support: use frames to group items on your board\n\n## New in ExcalidrawAutomate\n- selectElementsInView now also accepts a list of element IDs\n- new addIFrame function that accepts an Obsidian file or a URL string\n${String.fromCharCode(96,96,96)}typescript\nselectElementsInView(elements: ExcalidrawElement[] | string[]): void;\naddIFrame(topX: number, topY: number, width: number, height: number, url?: string, file?: TFile): string;\n${String.fromCharCode(96,96,96)}\n`,"1.9.3":'\n## New from Excalidraw.com\n- Eyedropper tool. The eyedropper is triggered with "i". If you hold the ALT key while clicking the color it will set the stroke color of the selected element, else the background color.\n- Flipping multiple elements\n- Improved stencil library rendering performance + the stencil library will remember the scroll position from the previous time it was open\n\n## Fixed\n- Replaced command palette and tab export SVG/PNG/Excalidraw actions with "export image" which will take the user to the export image dialog.\n',"1.9.2":`\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/diBT5iaoAYo" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## New\n- Excalidraw.com Color Picker redesign [#6216](https://github.com/excalidraw/excalidraw/pull/6216)\n- Updated palette loader script in the script library\n- New ExcalidrawAutomate API to load Elements and AppState from another Excalidraw file.\n${String.fromCharCode(96,96,96)}typescript\nasync getSceneFromFile(file: TFile): Promise<{elements: ExcalidrawElement[]; appState: AppState;}>\n${String.fromCharCode(96,96,96)}\n`,"1.9.1":'\n## Updates from Excalidraw.com\n- "Unlock all elements" - new action available via the context menu [#5894](https://github.com/excalidraw/excalidraw/pull/5894)\n- Minor improvements to improve the speed [#6560](https://github.com/excalidraw/excalidraw/pull/6560)\n- Retain Seed on Shift Paste [#6509](https://github.com/excalidraw/excalidraw/pull/6509)\n\n## New/Fixed\n- Clicking on the link handle (top right corner) will open the link in the same window\n- CTRL/CMD click on a link will open the link in a new tab and will focus on the new tab\n- Linking to parts of images. In some cases clicking search results, links, or backlinks did not focus on the right element according to the link. Fixed.\n',"1.9.0":`\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/nB4cOfn0xAs" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## Fixed\n- Embedded images, markdowns, PDFs will load one by one, not in one go after a long wait\n\n## New\n- Embed PDF\n\n## New in ExcalidrawAutomate\n- onFileCreateHook: if set this hook is called whenever a new drawing is created using Excalidraw command palette menu actions. If the excalidraw file is created using Templater or other means, the trigger will not fire. [#1124](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1124)\n${String.fromCharCode(96,96,96)}typescript\n onFileCreateHook: (data: {\n ea: ExcalidrawAutomate;\n excalidrawFile: TFile; //the file being created\n view: ExcalidrawView;\n }) => Promise<void>;\n ${String.fromCharCode(96,96,96)}\n`,"1.8.26":"\n## Fixed\n- Dynamic styling did not pick up correctly\n - the accent color with the default Obsidian theme\n - the drawing theme color with the out of the box, default new drawing (not using a template)\n- The Obsidian tools panel did not pick up user scripts when installing your very first script. A reload of Obsidian was required.\n","1.8.25":'\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/BvYkOaly-QM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## New & improved\n- Multi-link support\n- Updated [Scribble Helper](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Scribble%20Helper.md) script for better handwritten text support. \n - Add links to text elements\n - Creating wrapped text in transparent sticky notes\n - Add text to arrows and lines\n - Handwriting support on iOS via Scribble\n\n## Fixed\n - The long-standing issue of jumping text\n \n',"1.8.24":`\n## Updates from Excalidraw.com\n- fix: color picker keyboard handling not working\n- fix: center align text when bind to the container via context menu\n- fix: split "Edit selected shape" shortcut\n\n## Fixed\n- BUG: Area embed link of svg inside excalidraw embed entire svg instead of area [#1098](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1098)\n\n## New\n- I updated the [Scribble Helper](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Scribble%20Helper.md) script with tons of new features. I am still beta testing the script. I will release a demo video in the next few days.\n\n## New in Excalidraw Automate\n- I added many more configuration options for the scriptEngine utils.inputPrompt function. See [Scribble Helper](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Scribble%20Helper.md) for a demonstration of this new feature.\n${String.fromCharCode(96,96,96)}typescript\n public static async inputPrompt(\n view: ExcalidrawView,\n plugin: ExcalidrawPlugin,\n app: App,\n header: string,\n placeholder?: string,\n value?: string,\n buttons?: { caption: string; tooltip?:string; action: Function }[],\n lines?: number,\n displayEditorButtons?: boolean,\n customComponents?: (container: HTMLElement) => void\n )\n${String.fromCharCode(96,96,96)}`,"1.8.23":'\n## Fixes\n- Fixed palm rejection to prevent unwanted spikes when using the freedraw tool. ([#1065](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1065))\n- Fixed issue where images disappeared when zoomed in. ([#6417](https://github.com/excalidraw/excalidraw/pull/6417))\n- Autosave will now save the drawing when you change the theme from dark to light or vice versa. ([#1080](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1080))\n- Added padding to short LaTeX formulas to prevent cropping. ([#1053](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1053))\n\n## New Features\n- Added a new command palette action: Toggle to invert default binding behavior. This new feature allows you to switch between normal and inverted mode. In normal mode, arrows will bind to objects unless you hold the CTRL/CMD key while drawing the arrow or moving objects. In inverted mode, arrows will not bind to objects unless you hold the CTRL/CMD key while drawing the arrow or moving objects.\n- You can now set a template LaTeX formula in the plugin settings (under experimental features) to be used when creating a new LaTeX formula. ([#1090](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1090))\n- Redesigned the Image Export dialog. I hope dropdowns are now more intuitive than the toggles were.\n- Added the ability to export only the selected part of a drawing. See the Export dialog for more information.\n- Added a zigzag fill easter egg. See a demo of this feature [here](https://twitter.com/excalidraw/status/1645428942344445952?s=61&t=nivKLx2vgl6hdv2EbW4mZg).\n- Added a new expert function: recolor embedded Excalidraw and SVG images (not JPG, PNG, BMP, WEBP, GIF). See a demo of this feature here:\n\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/MIZ5hv-pSSs" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n',"1.8.22":`\n## Fixed\n- Styling of custom pen and script buttons in the side panel was inverted.\n- Minor tweaks to dynamic styling. [see this video to understand dynamic styling](https://youtu.be/fypDth_-8q0)\n\n## New\n- New scripts by @threethan:\n - [Auto Draw for Pen](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Auto%20Draw%20for%20Pen.md): Automatically switches between the select and draw tools, based on whether a pen is being used. Supports most pens including Apple Pencil.\n - [Hardware Eraser Support](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Hardware%20Eraser%20Support.md): Adds support for pen inversion, a.k.a. the hardware eraser on the back of your pen. Supports Windows based styluses. Does not support Apple Pencil or S-Pen.\n- Added separate buttons to support copying link, area or group references to objects on the drawing. [#1063](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1063). See [this video](https://youtu.be/yZQoJg2RCKI) for more details on how this works.\n- Hover preview will no longer trigger for image files (.png, .svg, .jpg, .gif, .webp, .bmp, .ico, .excalidraw)\n- Minor updates to the [Slideshow](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Slideshow.md) script. You can download the updated script from the Excalidraw script library. The slideshow will now correctly run also when initiated in a popout window. When the drawing is in a popout window, the slideshow will not be full screen, but will only occupy the popout window. If you run the slideshow from the main Obsidian workspace, it will be displayed in full-screen mode.\n- Updated the Icon Library script to now include image keywords under each of the images to allow searching for keywords (CTRL/CMD+F). I've uploaded the new script to [here](https://gist.github.com/zsviczian/33ff695d5b990de1ebe8b82e541c26ad). If you need further information watch this [video](https://youtu.be/_OEljzZ33H8)\n\n## New in ExcalidrawAutomate\n- ${String.fromCharCode(96)}addText${String.fromCharCode(96)} ${String.fromCharCode(96)}formatting${String.fromCharCode(96)} parameter now accepts ${String.fromCharCode(96)}boxStrokeColor${String.fromCharCode(96)} and ${String.fromCharCode(96)}textVerticalAlign${String.fromCharCode(96)} values.\n${String.fromCharCode(96,96,96)}typescript\naddText(\n topX: number,\n topY: number,\n text: string,\n formatting?: {\n wrapAt?: number;\n width?: number;\n height?: number;\n textAlign?: "left" | "center" | "right";\n box?: boolean | "box" | "blob" | "ellipse" | "diamond";\n boxPadding?: number;\n boxStrokeColor?: string;\n textVerticalAlign?: "top" | "middle" | "bottom";\n },\n id?: string,\n ): string;\n${String.fromCharCode(96,96,96)}\n- new ${String.fromCharCode(96)}onFileOpenHook${String.fromCharCode(96)}. If set, this callback is triggered, when an Excalidraw file is opened. You can use this callback in case you want to do something additional when the file is opened. This will run before the file level script defined in the ${String.fromCharCode(96)}excalidraw-onload-script${String.fromCharCode(96)} frontmatter is executed. Excalidraw will await the result of operations here. Handle with care. If you change data such as the frontmatter of the underlying file, I haven't tested how it will behave.\n${String.fromCharCode(96,96,96)}typescript\nonFileOpenHook: (data: {\n ea: ExcalidrawAutomate;\n excalidrawFile: TFile; //the file being loaded\n view: ExcalidrawView;\n}) => Promise<void>;\n${String.fromCharCode(96,96,96)}`,"1.8.21":'\n## Quality of Life improvements\n- Dynamic Styling (see plugin settings / Display). When Dynamic Styling is enabled it fixes Excalidraw issues with the Minimal Theme\n- New "Invert Colors" script\n\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/fypDth_-8q0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n### Note\nThe few of you, that are using the Dynamic Styling Templater script, please remove it and restart Obsidian.\n',"1.8.20":"\n## Fixed\n- Excalidraw froze Obsidian in certain rare situations [#1054](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1054)\n- File loading error [#1062](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1062)\n- Embedded images in markdown documents no longer have the line on the side. Image sizing works better. [#1059](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1059)\n- Locked elements will not show a hover preview [#1060](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1060)\n- CTRL/CMD + K correctly triggers add link [#1056](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1056)\n\n## New\n- Grid color adjusts to the view background color\n\nI'm sorry, but the sticky note editing issue on Android with the on-screen keyboard has still not been resolved. If you also experience this error, please help raise the priority with the core Excalidraw team by commenting on this issue: [#6330](https://github.com/excalidraw/excalidraw/issues/6330)\n","1.8.19":"\n## Fixed: Text wrapping issue in sticky notes\n\nI fixed an issue where text would wrap differently and words would disappear during text editing in sticky notes. You can check out the details on [GitHub #6318](https://github.com/excalidraw/excalidraw/issues/6331).\n\nI am aware of three additional issues related to container text editing that are still open. I apologize for any inconvenience caused by the recent change in how text size is calculated on Excalidraw.com, which has had a knock-on effect on Obsidian. I am actively working to address the following issues:\n\n- Pinch zooming while editing text in a text container [GitHub #6331](https://github.com/excalidraw/excalidraw/issues/6331)\n- Container text jumps on edit on Android with on-screen keyboard [GitHub #6330](https://github.com/excalidraw/excalidraw/issues/6330)\n- Shadow text when editing text containers without a keyboard on iOS [GitHub #6329](https://github.com/excalidraw/excalidraw/issues/6329)\n\nThank you for your patience while I work on resolving these issues.\n","1.8.18":`\n## Fixed\n- Text scaling issue introduced in 1.8.17\n- [#1043](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1043): Error handling when ${String.fromCharCode(96)}onCanvasColorChangeHook${String.fromCharCode(96)} is executed. This is used in the [Dynamic Styling Script](https://youtu.be/LtR04fNTKTM). \n`,"1.8.17":'\n## New from Excalidraw.com\n- Improved text wrapping in the ellipse and diamond shapes [6172](https://github.com/excalidraw/excalidraw/pull/6172)\n\n## New\n- Updated slideshow script\n\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/mQ2eLk_0TV4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## Fixed: \n- "Save to..." in the Stencil Library menu now works as expected [#1032](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1032)\n',"1.8.16":'\n**!!! Modifier keys have changed, please review the table below !!!**\n[Click this to see the new shortcuts overview image](https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/excalidraw-modifiers.png)\n\n## Fixed \n- This version was extensively tested and developed on MacOS to remove usability issues.\n- New command palette action to create a new drawing in a new tab\n- Modifier keys to open links in the active window, splitting the current view to the right, in a new tab, or in a popout window now behave consistently both in Excalidraw and when clicking a drawing that is embedded in a markdown note.\n- Drag & Drop properly works from within Obsidian, from a web browser, and from the OS file explorer\n\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/9HlipSIzRhc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n',"1.8.14":"\n## Fixed\n- text element link gets deleted when the drawing is reloaded\n","1.8.13":'\n## Fixed\n- When changing a text element in markdown mode, the change seem to have showed up when switching back to Excalidraw mode, but then lost these changes when loading the file the next time.\n- Scrolling through a page that has embedded drawings on Obsidian Mobile accidently opens the drawing in Excalidraw when touching the image. Now you need to press and hold to open the image in Excalidraw. [#1003](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1003)\n- The scrollbar is no longer visible when presenting using the SlideShow script\n- Stroke properties could not be changed when custom pen settings had "Stroke & fill applies to: All shapes". It works now.\n\n## QoL\n- Custom pens will remember the stroke changes until you press the pen preset button again.\n - This is a bit hard to explain, let me try... Essentially, when you use a custom pen, it will keep the changes you made to the pen (like changing the stroke width) until you press the pen-prereset button again. So, for example, if you\'re using a mind mapping custom pen and change its color, and then switch to a different tool like text, when you switch back to the freedraw tool using the Excalidraw tools panel, the pen will still have the same color you set earlier, but if you press the mind mapping pen-preset button, it will default back to your custom pen settings including your preset color.\n- Added new buttons to load current stroke color and background color in the pen settings dialog. Also added an edit box so you can configure any valid color string (including with transparency) for pen stroke and background colors. [#991](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/991)\n',"1.8.11":'\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/rBarRfcSxNo" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n# New\n- Support for referencing images from the internet in Excalidraw drawings, including YouTube thumbnail support. [#913](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/913)\n - Link to images on the internet without creating a copy in your Vault by holding down the CTRL key while dropping the link or image.\n - Automatic conversion of image URLs and YouTube links into image elements with original links added as a link on the element when pasting. Note, that if you only want to paste the plain text link (not the image), first double-click the canvas to start a new text element, then paste the link.\n- Two new options added to plugin settings:\n - Make mouse wheel zoom by default [#474](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/474)\n - Allow pinch zoom in pen mode [#828](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/828)\n- Update to the [Set Grid](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Set%20Grid.svg) script now saves the grid setting for the current file.\n',"1.8.10":'\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/wTtaXmRJ7wg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n# QoL improvements\n- You can structure icons in the Obsidian tools panel by moving scripts to folders\n![image|300](https://user-images.githubusercontent.com/14358394/212389592-306130d0-209a-49df-99bb-c538f2155b23.png)\n- I added useful actions to the hamburger menu in both tray-mode and normal-mode. \n![image|150](https://user-images.githubusercontent.com/14358394/212534508-9107fd19-27ab-4415-8abc-bc97c73afc0b.png)\n- I added a new Export Image dialog. You can access the new export screen from the hamburger-menu\n![image|200](https://user-images.githubusercontent.com/14358394/212534654-7a479e23-8d5d-452e-9a18-a9896278aa27.png)\n- Links in help now point to Obsidian-Excalidraw relevant content.\n- I added a welcome screen\n![image|150](https://user-images.githubusercontent.com/14358394/212534568-3cd1e8a1-5b20-4a30-96e4-40d7dac57e33.png)\n- I updated the alternative dark mode / dynamic styling [script](https://gist.github.com/zsviczian/c7223c5b4af30d5c88a0cae05300305c)\n',"1.8.9":"\n# Minor QoL improvements\n- When you open a second drawing in the same Excalidraw view (i.e. by navigating a link) and make a change to this drawing, and then press UNDO, the entire drawing disappeared. Redo brought the image back, however, this behavior was frustrating. Not anymore...\n- On iPad\n - when you open the command palette, autozoom resized the drawing. If the Obsidian command palette or some other modal window is shown Excalidraw will not resize the view.\n - when you add a link to the drawing using the Command Palette, sometimes the link was added in a far corner of the drawing outside the current view area. This should be fixed now.","1.8.8":`\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/uZz5MgzWXiM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n# New\n- The plugin now includes support for [Perfect Freehand](https://perfect-freehand-example.vercel.app/) pen-options. I've also added a new [Alternative Pens](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Alternative%20Pens.md) script.\n- Embed scene in exported PNG and SVG images [#860](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/860). This means that the export will be a normal PNG or SVG image with the added functionality that if someone loads the image into excalidraw.com it will open as a normal excalidraw file.\n - I've added 2 new Command Palette actions (export PNG, export SVG with embedded scene).\n - If you SHIFT click ${String.fromCharCode(96)} Save as PNG (or SVG)${String.fromCharCode(96)} in the workspace-tab menu, Excalidraw will embed the scene in the export.\n- I updated the [Organic Line](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Organic%20Line.md) script. It has an improved thick-to-thin look and a new thin-to-thick-to-thin line type.\n\n# Fixed\n- Intelligent image width setting [#955](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/955). Before this change, when the embedded image was small, the image would be extended to meet the image width setting in plugin settings. From now on, if the image is smaller than max-width, it will only extend to max-width. You can still set 100% width using custom CSS. See more on that [here](https://github.com/zsviczian/obsidian-excalidraw-plugin#embedded-images).\n\n# New in ExcalidrawAutomate\n- I added the ${String.fromCharCode(96)} plaintext${String.fromCharCode(96)} parameter to ${String.fromCharCode(96)}ExcalidrawAutomate.create${String.fromCharCode(96)} . Using this, you can add some text below the frontmatter but above the ${String.fromCharCode(96)}# Text Elements${String.fromCharCode(96)} section. Use this for example to add metadata to your file. (e.g. I use this in my Daily Quote template to add a Dataview field for the ${String.fromCharCode(96)}Author::${String.fromCharCode(96)} and add the quote with a standard block reference, so I can easily reference it in other files. I also add the ${String.fromCharCode(96)}#quote${String.fromCharCode(96)} tag to the file using this.)\n- The script running in the ScriptEngine now also receives the ${String.fromCharCode(96)}TFile${String.fromCharCode(96)} object for the script itself. You can access this object during execution via the ${String.fromCharCode(96)}utils.scriptFile${String.fromCharCode(96)} variable. \n`,"1.8.7":'\n## New from Excalidraw.com\n- Support shrinking text containers to their original height when text is removed [#6025](https://github.com/excalidraw/excalidraw/pull/6025)\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://user-images.githubusercontent.com/14358394/209404092-579d54e9-7003-48ef-8b82-84be08ba6246.mp4" title="Demo" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## Fixed\n- removed the white background when editing arrow-label [#6033](https://github.com/excalidraw/excalidraw/pull/6033)\n- Minor style tweaks\n - for embedding Excalidraw into Obsidian Canvas. e.g. dragging no longer accidentally creates an image copy of the drawing, and\n - style tweaks on the Excalidraw canvas\n\n## New\n- If you set a different text color and sticky note border color, now if you change the border color, the text color will not be changed.\n',"1.8.6":`\n## New from Excalidraw.com:\n- Better default radius for rectangles [#5553](https://github.com/excalidraw/excalidraw/pull/5553). Existing drawings will look unchanged, this applies only to new rectangles.\n![image|200](https://user-images.githubusercontent.com/5153846/206264345-59fd7436-e87b-4bc9-ade8-9e6f6a6fd8c1.png)\n> [!attention]- ExcalidrawAutomate technical details\n> - ${String.fromCharCode(96)}strokeSharpness${String.fromCharCode(96)} is now deprecated\n> - use roundness instead\n> - ${String.fromCharCode(96)}roundness === null${String.fromCharCode(96)} is legacy ${String.fromCharCode(96)}strokeSharpness = "sharp"${String.fromCharCode(96)}\n> - ${String.fromCharCode(96)}roundness = { type: RoundnessType; value?: number }${String.fromCharCode(96)}\n> - type: 1, LEGACY, type:2 PROPORTIONAL_RADIUS, type:3 ADAPTIVE_RADIUS: 3\n> - value:\n> - Radius represented as % of element's largest side (width/height).\n> DEFAULT_PROPORTIONAL_RADIUS = 0.25;\n> - Fixed radius for the ADAPTIVE_RADIUS algorithm. In pixels.\n> DEFAULT_ADAPTIVE_RADIUS = 32;\n\n## New\n- For Obsidian 1.1.6 and above\n - Improved embedding into Obsidian Canvas\n - Improved embedding into Markdown documents\n- Added setting under ${String.fromCharCode(96)}Display/Default mode when opening Excalidraw${String.fromCharCode(96)} to always open the drawing in view mode on Mobile, but in normal mode on desktop. [#939](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/939)\n\n## Fixed\n- Zoom reset tooltip appears twice [#942](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/942)\n- Hid export library from library menu as it does not work due to Obsidian limitations. Use the command palette export library instead.\n- Arrow with label did not get exported and embedded correctly [#941](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/941)\n![image|200](https://user-images.githubusercontent.com/22638687/207845868-b352ddb1-7994-4f13-a0b2-f2e19bd72935.png)\n`,"1.8.4":'\n## New from Excalidraw.com\n- Labels on Arrows!!! [#5723](https://github.com/excalidraw/excalidraw/pull/5723)\n - To add a label press "Enter" or "Double click" on the arrow\n - Use "Cmd/Ctrl+double click" to enter the line editor\n\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://user-images.githubusercontent.com/11256141/192515552-6b6ddc06-5de0-4931-abdd-6ac3a804656d.mp4" title="Demo" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## New\n- **Changed behavior**: In the Obsidian markdown editor clicking an Excalidraw image will not open the image (to avoid accidentally opening the image on a tablet). To open a drawing for editing in Excalidraw double click or long-tap on it. [#920](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/920)\n\n## Fixed \n- Text stroke color is not honored when pasting a HEX color string to an Excalidraw canvas open in an Obsidian popout window [#921](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/921)\n- The new [multi-line >> multi-element paste behavior](https://github.com/excalidraw/excalidraw/pull/5786) introduced in the previous release did not work as expected in Obsidian. Now it does.\n',"1.8.2":`\nIntroducing the [Excalidraw Slideshow Script](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Slideshow.md) - available in the script store\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/HhRHFhWkmCk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## Fixed\n- Obsidian tools panel gets misplaced after switching Obsidian workspace tabs\n\n## New in ExcalidrawAutomate\n- changed ${String.fromCharCode(96)}viewToggleFullScreen(forceViewMode: boolean = false): void${String.fromCharCode(96)}: the function will toggle view mode on when going to full screen and view mode off when terminating full screen.\n- new functions\n${String.fromCharCode(96,96,96)}typescript\nsetViewModeEnabled(enabled: boolean):void;\nviewUpdateScene(\n scene: {\n elements?: ExcalidrawElement[];\n appState?: AppState;\n files?: BinaryFileData;\n commitToHistory?: boolean;\n },\n restore: boolean = false,\n ):void;\nviewZoomToElements(\n selectElements: boolean,\n elements: ExcalidrawElement[]\n ):void;\n${String.fromCharCode(96,96,96)}\n\n`,"1.8.1":`\n## New and fixes from Excalidraw.com\n- New text paste behavior. Pasting multiline text will generate separate text elements unless you hold down the shift button while pasting [#5786](https://github.com/excalidraw/excalidraw/pull/5786)\n- line editor fixes [#5927](https://github.com/excalidraw/excalidraw/pull/5927)\n\n## Fixed\n- The Command Palette "Insert link" action now inserts the new link at the top drawing layer, not at the bottom.\n- Updated, hopefully, better organized, Plugin Readme.\n\n## New\n- Second attempt at moving to React 18. This upgrade is required to maintain alignment with the core Excalidraw product and to continue to benefit from Excalidraw.com enhancements.\n- Added options to Plugin Settings\n - to disable autozoom when loading a drawing for the first time [#907](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/907)\n - to modify autosave interval. You can now set an autosave interval for desktop and for mobile [#888](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/888)\n\n## New in ExcalidrawAutomate\n- Published the obsidian_module on the ExcalidrawAutomate object. ${String.fromCharCode(96)}ExcalidrawAutomate.obsidian${String.fromCharCode(96)}. Publishing this object will give script developers increased flexibility and control over script automation.\n`,"1.8.0":'\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/7gu4ETx7zro" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## New\n- Optical Character Recognition (OCR). Introducing the MVP (minimum viable product) release of the integration of [Taskbone](https://taskbone.com) OCR into Excalidraw. See the new scan button on the Obsidian tools panel.\n- New and improved full-screen mode\n - Activate using the Obsidian tools panel, the Obsidian Command Palette, or the Alt+F11 shortcut\n - The ESC key no longer closes full-screen\n - Full-screen mode works properly on iOS as well\n- Improved Icon visibility on the Obsidian tools panel\n- Added 3 additional buttons to the tools panel\n - Force save\n - Open link (useful on Mobile devices). In the case of LaTeX equations, the button opens the equation properties.\n - Open the link in a new pane. In the case of embedded markdown documents, the button opens the embed properties.\n\n## Fixed\n- The [deconstruct selected elements into a new drawing](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Deconstruct%20selected%20elements%20into%20new%20drawing.md) script now also correctly decomposes transcluded text elements.\n',"1.7.30":"\nFix:\n- Forcing the embedded image to always scale to 100% (a feature introduced in [1.7.26](https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.7.26)) scaled the embedded excalidraw drawings incorrectly on devices with a pixel ratio of 2 or 3 (e.g. iPads). This is now fixed, however, this fix might retrospectively impact drawings that use this feature. Sorry for that.\n","1.7.29":"\n- This is a big update that accommodates the **UI redesign** on Excalidraw.com [#5780](https://github.com/excalidraw/excalidraw/pull/5780). The change on the surface may seem superficial, however, I had to tweak a number of things to make it work in Obsidian. I hope I found everything that broke and fixed it, if not, I'll try to fix it quickly...\n- This update also comes with changes under the hood that **fix issues with Excalidraw Automate** - paving the way for further scripts, plus some smaller bug fixes.\n- I **reworked text wrapping**. In some cases, text wrapping in SVG exports looked different compared to how the text looked in Excalidraw. This should now be fixed.\n- If you are using the **Experimental Dynamic Styling** of the Excalidraw Toolbar, then I recommend updating your styling script following base on [this](https://gist.github.com/zsviczian/c7223c5b4af30d5c88a0cae05300305c)\n","1.7.27":'## New\n- Import SVG drawing as an Excalidraw object. [#679](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/679)\n\n<div class="excalidraw-videoWrapper"><div>\n<iframe src="https://www.youtube.com/embed/vlC1-iBvIfo" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>\n</div></div>\n\n## Fixed\n- Large drawings freeze on the iPad when opening the file. I implemented a workaround whereby Excalidraw will avoid zoom-to-fit drawings with over 1000 elements. [#863](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/863)\n- Reintroduced copy/paste to the context menu\n',"1.7.26":'## Fixed\n- Transcluded block with a parent bullet does not embed sub-bullet [#853](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/853)\n- Transcluded text will now exclude ^block-references at end of lines\n- Phantom duplicates of the drawing appear when "zoom to fit" results in a zoom value below 10% and there are many objects on the canvas [#850](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/850)\n- CTRL+Wheel will increase/decrease zoom in steps of 5% matching the behavior of the "+" & "-" zoom buttons.\n- Latest updates from Excalidarw.com\n - Freedraw flip not scaling correctly [#5752](https://github.com/excalidraw/excalidraw/pull/5752)\n - Multiple elements resizing regressions [#5586](https://github.com/excalidraw/excalidraw/pull/5586)\n\n## New - power user features\n- Force the embedded image to always scale to 100%. Note: this is a very niche feature with a very particular behavior that I built primarily for myself (even more so than other features in Excalidraw Obsidian - also built primarily for myself 😉)... This will reset your embedded image to 100% size every time you open the Excalidraw drawing, or in case you have embedded an Excalidraw drawing on your canvas inserted using this function, every time you update the embedded drawing, it will be scaled back to 100% size. This means that even if you resize the image on the drawing, it will reset to 100% the next time you open the file or you modify the original embedded object. This feature is useful when you decompose a drawing into separate Excalidraw files, but when combined onto a single canvas you want the individual pieces to maintain their actual sizes. I use this feature to construct Book-on-a-Page summaries from atomic drawings.\n- I added an action to the command palette to temporarily disable/enable Excalidraw autosave. When autosave is disabled, Excalidraw will still save your drawing when changing to another Obsidian window, but it will not save every 10 seconds. On a mobile device (but also on a desktop) this can lead to data loss if you terminate Obsidian abruptly (i.e. swipe the application away, or close Obsidian without first closing the drawing). Use this feature if you find Excalidraw laggy.'};class ReleaseNotes extends obsidian_module.Modal{constructor(e,t,n){super(e),this.plugin=t,this.version=n}onOpen(){var e;this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText(`Welcome to Excalidraw ${null!==(e=this.version)&&void 0!==e?e:""}`),this.createForm()}async onClose(){this.contentEl.empty(),await this.plugin.loadSettings(),this.plugin.settings.previousRelease=PLUGIN_VERSION,await this.plugin.saveSettings()}async createForm(){let e=this.plugin.settings.previousRelease;e=this.version===e?"0.0.0":e;const t=this.version?Object.keys(RELEASE_NOTES).filter((t=>"Intro"===t||isVersionNewerThanOther(t,e))).map((e=>`${"Intro"===e?"":`# ${e}\n`}${RELEASE_NOTES[e]}`)).slice(0,10).join("\n\n---\n"):FIRST_RUN;await obsidian_module.MarkdownRenderer.renderMarkdown(t,this.contentEl,"",this.plugin),this.contentEl.createEl("p",{text:""},(e=>{e.style.textAlign="right",e.createEl("button",{text:"Close"}).onclick=()=>this.close()}))}}class ExportDialog extends obsidian_module.Modal{constructor(e,t,n){super(app),this.plugin=e,this.view=t,this.file=n,this.dirty=!1,this.hasSelectedElements=!1,this.ea=getEA(this.view),this.api=this.ea.getExcalidrawAPI(),this.padding=getExportPadding(this.plugin,this.file),this.scale=getPNGScale(this.plugin,this.file),this.theme=getExportTheme(this.plugin,this.file,this.api.getAppState().theme),this.boundingBox=this.ea.getBoundingBox(this.ea.getViewElements()),this.embedScene=!1,this.exportSelectedOnly=!1,this.saveToVault=!0,this.transparent=!getWithBackground(this.plugin,this.file),this.saveSettings=!1}onOpen(){this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText("Export Image"),this.hasSelectedElements=this.view.getViewSelectedElements().length>0,this.selectedOnlySetting.setVisibility(this.hasSelectedElements)}async onClose(){this.dirty=this.saveSettings}async createForm(){let e,t;this.contentEl.createEl("h1",{text:"Image settings"}),this.contentEl.createEl("p",{text:"Transparency only affects PNGs. Excalidraw files can only be exported outside the Vault. PNGs copied to clipboard may not include the scene."});const n=()=>{const e=Math.round(this.scale*this.boundingBox.width+2*this.padding),t=Math.round(this.scale*this.boundingBox.height+2*this.padding);return fragWithHTML(`The lager the scale, the larger the image.<br>Scale: <b>${this.scale}</b><br>Image size: <b>${e}x${t}</b>`)},r=()=>fragWithHTML(`Current image padding is <b>${this.padding}</b>`);t=new obsidian_module.Setting(this.contentEl).setName("Image padding").setDesc(r()).addSlider((i=>{i.setLimits(0,50,1).setValue(this.padding).onChange((i=>{this.padding=i,e.setDesc(n()),t.setDesc(r())}))})),e=new obsidian_module.Setting(this.contentEl).setName("PNG Scale").setDesc(n()).addSlider((t=>t.setLimits(.5,5,.5).setValue(this.scale).onChange((t=>{this.scale=t,e.setDesc(n())})))),new obsidian_module.Setting(this.contentEl).setName("Export theme").addDropdown((e=>e.addOption("light","Light").addOption("dark","Dark").setValue(this.theme).onChange((e=>{this.theme=e})))),new obsidian_module.Setting(this.contentEl).setName("Background color").addDropdown((e=>e.addOption("transparent","Transparent").addOption("with-color","Use scene background color").setValue(this.transparent?"transparent":"with-color").onChange((e=>{this.transparent="transparent"===e})))),new obsidian_module.Setting(this.contentEl).setName("Save or one-time settings?").addDropdown((e=>e.addOption("save","Save these settings as the preset for this image").addOption("one-time","These are one-time settings").setValue(this.saveSettings?"save":"one-time").onChange((e=>{this.saveSettings="save"===e})))),this.contentEl.createEl("h1",{text:"Export settings"}),new obsidian_module.Setting(this.contentEl).setName("Embed the Excalidraw scene in the exported file?").addDropdown((e=>e.addOption("embed","Embed scene").addOption("no-embed","Do not embed scene").setValue(this.embedScene?"embed":"no-embed").onChange((e=>{this.embedScene="embed"===e})))),DEVICE.isDesktop&&new obsidian_module.Setting(this.contentEl).setName("Where to save the image?").addDropdown((e=>e.addOption("vault","Save image to your Vault").addOption("outside","Export image outside your Vault").setValue(this.saveToVault?"vault":"outside").onChange((e=>{this.saveToVault="vault"===e})))),this.selectedOnlySetting=new obsidian_module.Setting(this.contentEl).setName("Export entire scene or just selected elements?").addDropdown((e=>e.addOption("all","Export entire scene").addOption("selected","Export selected elements").setValue(this.exportSelectedOnly?"selected":"all").onChange((e=>{this.exportSelectedOnly="selected"===e}))));const i=this.contentEl.createDiv({cls:"excalidraw-prompt-buttons-div"});i.createEl("button",{text:"PNG to File",cls:"excalidraw-prompt-button"}).onclick=()=>{this.saveToVault?this.view.savePNG(this.view.getScene(this.hasSelectedElements&&this.exportSelectedOnly)):this.view.exportPNG(this.embedScene,this.hasSelectedElements&&this.exportSelectedOnly),this.close()},i.createEl("button",{text:"SVG to File",cls:"excalidraw-prompt-button"}).onclick=()=>{this.saveToVault?this.view.saveSVG(this.view.getScene(this.hasSelectedElements&&this.exportSelectedOnly)):this.view.exportSVG(this.embedScene,this.hasSelectedElements&&this.exportSelectedOnly),this.close()},i.createEl("button",{text:"Excalidraw",cls:"excalidraw-prompt-button"}).onclick=()=>{this.view.exportExcalidraw(this.hasSelectedElements&&this.exportSelectedOnly),this.close()},DEVICE.isDesktop&&(i.createEl("button",{text:"PNG to Clipboard",cls:"excalidraw-prompt-button"}).onclick=()=>{this.view.exportPNGToClipboard(this.embedScene,this.hasSelectedElements&&this.exportSelectedOnly),this.close()})}}const TOOLS_PANEL_WIDTH=228;class ToolsPanel extends React__namespace.Component{constructor(e){super(e),this.pos1=0,this.pos2=0,this.pos3=0,this.pos4=0,this.penDownX=0,this.penDownY=0,this.previousWidth=0,this.previousHeight=0,this.onRightEdge=!1,this.onBottomEdge=!1;const t=e.view.plugin.getPackage(e.view.ownerWindow).react;this.containerRef=t.createRef(),this.state={visible:e.visible,top:50,left:200,theme:"dark",excalidrawViewMode:!1,minimized:!1,isDirty:!1,isFullscreen:!1,isPreviewMode:!0,scriptIconMap:{}}}updateScriptIconMap(e){this.setState((()=>({scriptIconMap:e})))}setPreviewMode(e){this.setState((()=>({isPreviewMode:e})))}setFullscreen(e){this.setState((()=>({isFullscreen:e})))}setDirty(e){this.setState((()=>({isDirty:e})))}setExcalidrawViewMode(e){this.setState((()=>({excalidrawViewMode:e})))}toggleVisibility(e){this.setTopCenter(e),this.setState((e=>({visible:!e.visible})))}setTheme(e){this.setState((t=>({theme:e})))}setTopCenter(e){this.setState((()=>({left:(this.containerRef.current.clientWidth-228-(e?0:232))/2+this.containerRef.current.parentElement.offsetLeft+(e?0:232),top:64+this.containerRef.current.parentElement.offsetTop})))}updatePosition(e=0,t=0){this.setState((()=>{const{offsetTop:n,offsetLeft:r,clientWidth:i,clientHeight:o}=this.containerRef.current.firstElementChild,a=n-e,s=r-t,{clientWidth:l,clientHeight:c,offsetTop:T,offsetLeft:Q}=this.containerRef.current.parentElement;return this.previousHeight=c,this.previousWidth=l,this.onBottomEdge=a>=c-o+T,this.onRightEdge=s>=l-i+Q,{top:a<T?T:this.onBottomEdge?c-o+T:a,left:s<Q?Q:this.onRightEdge?l-i+Q:s}}))}render(){return React__namespace.createElement("div",{ref:this.containerRef,className:clsx("excalidraw",{"theme--dark":"dark"===this.state.theme}),style:{width:"100%",height:"100%",position:"absolute",touchAction:"none"}},React__namespace.createElement("div",{className:"Island",style:{top:`${this.state.top}px`,left:`${this.state.left}px`,width:"228px",display:this.state.visible&&!this.state.excalidrawViewMode?"block":"none",height:"fit-content",maxHeight:"400px",zIndex:5}},React__namespace.createElement("div",{style:{height:"26px",width:"100%",cursor:"move"},onClick:e=>{e.preventDefault(),Math.abs(this.penDownX-this.pos3)>5||Math.abs(this.penDownY-this.pos4)>5||this.setState((e=>({minimized:!e.minimized})))},onPointerDown:e=>{const t=e=>{e.preventDefault(),this.pos1=this.pos3-e.clientX,this.pos2=this.pos4-e.clientY,this.pos3=e.clientX,this.pos4=e.clientY,this.updatePosition(this.pos2,this.pos1)},n=()=>{var e,r;null===(e=this.props.view.ownerDocument)||void 0===e||e.removeEventListener("pointerup",n),null===(r=this.props.view.ownerDocument)||void 0===r||r.removeEventListener("pointermove",t)};e.preventDefault(),this.penDownX=this.pos3=e.clientX,this.penDownY=this.pos4=e.clientY,this.props.view.ownerDocument.addEventListener("pointerup",n),this.props.view.ownerDocument.addEventListener("pointermove",t)}},React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 228 26"},React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M40,7 h148 M40,13 h148 M40,19 h148"}))),React__namespace.createElement("div",{className:"Island App-menu__left scrollbar",style:{maxHeight:"350px",width:"initial","--padding":2,display:this.state.minimized?"none":"block"}},React__namespace.createElement("div",{className:"panelColumn"},React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Utility actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"scriptEngine",title:t$d("INSTALL_SCRIPT_BUTTON"),action:()=>{new ScriptInstallPrompt(this.props.view.plugin).open()},icon:ICONS.scriptEngine,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"release-notes",title:t$d("READ_RELEASE_NOTES"),action:()=>{new ReleaseNotes(this.props.view.app,this.props.view.plugin,PLUGIN_VERSION).open()},icon:ICONS.releaseNotes,view:this.props.view}),null===this.state.isPreviewMode?React__namespace.createElement(ActionButton,{key:"convert",title:t$d("CONVERT_FILE"),action:()=>{this.props.view.convertExcalidrawToMD()},icon:ICONS.convertFile,view:this.props.view}):React__namespace.createElement(ActionButton,{key:"viewmode",title:this.state.isPreviewMode?t$d("PARSED"):t$d("RAW"),action:()=>{this.state.isPreviewMode?this.props.view.changeTextMode(TextMode.raw):this.props.view.changeTextMode(TextMode.parsed)},icon:this.state.isPreviewMode?ICONS.rawMode:ICONS.parsedMode,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"tray-mode",title:t$d("TRAY_MODE"),action:()=>{this.props.view.toggleTrayMode()},icon:ICONS.trayMode,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"fullscreen",title:this.state.isFullscreen?t$d("EXIT_FULLSCREEN"):t$d("GOTO_FULLSCREEN"),action:()=>{this.state.isFullscreen?this.props.view.exitFullscreen():this.props.view.gotoFullscreen()},icon:this.state.isFullscreen?ICONS.exitFullScreen:ICONS.gotoFullScreen,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"search",title:t$d("SEARCH"),action:()=>{search(this.props.view)},icon:ICONS.search,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"ocr",title:t$d("RUN_OCR"),action:e=>{this.props.view.plugin.settings.taskboneEnabled?this.props.view.plugin.taskbone.getTextForView(this.props.view,isWinCTRLorMacCMD(e)):new obsidian_module.Notice("Taskbone OCR is not enabled. Please go to plugins settings to enable it.",4e3)},icon:ICONS.ocr,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"openLink",title:t$d("OPEN_LINK_CLICK"),action:e=>{const t=new MouseEvent("click",{ctrlKey:e.ctrlKey||!(DEVICE.isIOS||DEVICE.isMacOS),metaKey:e.metaKey||DEVICE.isIOS||DEVICE.isMacOS,shiftKey:e.shiftKey,altKey:e.altKey});this.props.view.handleLinkClick(t)},icon:ICONS.openLink,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"openLinkProperties",title:t$d("OPEN_LINK_PROPS"),action:()=>{const e=new MouseEvent("click",{ctrlKey:!0,metaKey:!0,shiftKey:!1,altKey:!1});this.props.view.handleLinkClick(e)},icon:ICONS.openLinkProperties,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"save",title:t$d("FORCE_SAVE"),action:()=>{this.props.view.forceSave()},icon:saveIcon(this.state.isDirty),view:this.props.view}))),React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Export actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"lib",title:t$d("DOWNLOAD_LIBRARY"),action:()=>{this.props.view.plugin.exportLibrary()},icon:ICONS.exportLibrary,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"exportIMG",title:t$d("EXPORT_IMAGE"),action:()=>{const e=this.props.view;e.exportDialog||(e.exportDialog=new ExportDialog(e.plugin,e,e.file),e.exportDialog.createForm()),e.exportDialog.open()},icon:ICONS.ExportImage,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"md",title:t$d("OPEN_AS_MD"),action:()=>{this.props.view.openAsMarkdown()},icon:ICONS.switchToMarkdown,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"link-to-element",title:t$d("INSERT_LINK_TO_ELEMENT"),action:e=>{isWinALTorMacOPT(e)?openExternalLink("https://youtu.be/yZQoJg2RCKI",this.props.view.app):this.props.view.copyLinkToSelectedElementToClipboard(isWinCTRLorMacCMD(e)?"group=":isSHIFT(e)?"area=":"")},icon:ICONS.copyElementLink,view:this.props.view}))),React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Insert actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"anyfile",title:t$d("UNIVERSAL_ADD_FILE"),action:()=>{this.props.centerPointer(),new UniversalInsertFileModal(this.props.view.plugin,this.props.view).open()},icon:ICONS["add-file"],view:this.props.view}),React__namespace.createElement(ActionButton,{key:"image",title:t$d("INSERT_IMAGE"),action:()=>{this.props.centerPointer(),this.props.view.plugin.insertImageDialog.start(this.props.view)},icon:ICONS.insertImage,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"pdf",title:t$d("INSERT_PDF"),action:()=>{this.props.centerPointer(),new InsertPDFModal(this.props.view.plugin,this.props.view).open()},icon:ICONS.insertPDF,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"insertMD",title:t$d("INSERT_MD"),action:()=>{this.props.centerPointer(),this.props.view.plugin.insertMDDialog.start(this.props.view)},icon:ICONS.insertMD,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"insertBackOfNote",title:t$d("INSERT_CARD"),action:()=>{this.props.centerPointer(),this.props.view.insertBackOfTheNoteCard()},icon:ICONS.BackOfNote,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"latex",title:t$d("INSERT_LATEX"),action:e=>{isWinALTorMacOPT(e)?openExternalLink("https://youtu.be/r08wk-58DPk",this.props.view.app):(this.props.centerPointer(),insertLaTeXToView(this.props.view))},icon:ICONS.insertLaTeX,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"link",title:t$d("INSERT_LINK"),action:()=>{this.props.centerPointer(),this.props.view.plugin.insertLinkDialog.start(this.props.view.file.path,((e,t,n)=>this.props.view.addText(e,t,n)))},icon:ICONS.insertLink,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"import-svg",title:t$d("IMPORT_SVG"),action:e=>{this.props.view.plugin.importSVGDialog.start(this.props.view)},icon:ICONS.importSVG,view:this.props.view}),React__namespace.createElement(ActionButton,{key:"crop-image",title:t$d("CROP_IMAGE"),action:e=>{this.props.view.app.commands.executeCommandById("obsidian-excalidraw-plugin:crop-image")},icon:ICONS.Crop,view:this.props.view}))),this.renderScriptButtons(!1),this.renderScriptButtons(!0)))))}renderScriptButtons(e){if(0===Object.keys(this.state.scriptIconMap).length)return"";const t=`${this.props.view.plugin.settings.scriptFolderPath}/Downloaded/`,n=n=>e?n.startsWith(t):!n.startsWith(t);if(0===Object.keys(this.state.scriptIconMap).filter((e=>n(e))).length)return"";const r=new Set;Object.keys(this.state.scriptIconMap).filter((e=>n(e))).forEach((e=>r.add(this.state.scriptIconMap[e].group)));const i=Array.from(r).sort(((e,t)=>e>t?1:-1));return i.push(i.shift()),React__namespace.createElement(React__namespace.Fragment,null,i.map(((t,n)=>React__namespace.createElement("fieldset",{key:`${t}-${n}`},React__namespace.createElement("legend",null,e?t:""===t?"User":"User/"+t),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},Object.entries(this.state.scriptIconMap).filter((([e,n])=>n.group===t)).sort().map((([e,t])=>React__namespace.createElement(ActionButton,{key:e,title:t.name,action:async()=>{const t=this.props.view,n=t.plugin,r=app.vault.getAbstractFileByPath(e);r&&r instanceof obsidian_module.TFile&&n.scriptEngine.executeScript(t,await app.vault.read(r),n.scriptEngine.getScriptName(r),r)},longpress:async()=>{const n=this.props.view,r=n.excalidrawAPI,i=n.plugin;await i.loadSettings();const o=i.settings.pinnedScripts.indexOf(e);o>-1?(i.settings.pinnedScripts.splice(o,1),null==r||r.setToast({message:`Pin removed: ${t.name}`,duration:3e3,closable:!0})):(i.settings.pinnedScripts.push(e),null==r||r.setToast({message:`Pinned: ${t.name}`,duration:3e3,closable:!0})),await i.saveSettings(),app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinnedScripts()}))},icon:t.svgString?stringToSVG(t.svgString):ICONS.cog,view:this.props.view}))))))))}}const getElementsAtPointer=(e,t,n)=>t.filter((t=>{if(n&&t.type!==n)return!1;if(t.locked)return!1;const[r,i,o,a]=rotatedDimensions(t);return r<=e.x&&r+o>=e.x&&i<=e.y&&i+a>=e.y})),getTextElementAtPointer=(e,t)=>{const n=t.excalidrawAPI;if(!n)return{id:null,text:null};const r=getElementsAtPointer(e,n.getSceneElements(),"text");if(0==r.length)return{id:null,text:null};if(1===r.length)return{id:r[0].id,text:r[0].text};const i=r.filter((e=>{const n=t.textMode===TextMode.parsed?t.excalidrawData.getRawText(e.id):e.text;return!!n&&(!!n.match(REG_LINKINDEX_HYPERLINK)||!!REGEX_LINK.getRes(n).next().value)}));return 0==i.length?{id:r[0].id,text:r[0].text}:{id:i[0].id,text:i[0].text}},getImageElementAtPointer=(e,t)=>{const n=t.excalidrawAPI;if(!n)return;const r=getElementsAtPointer(e,n.getSceneElements(),"image");return 0===r.length?{id:null,fileId:null}:r.length>=1?{id:r[0].id,fileId:r[0].fileId}:void 0},getElementWithLinkAtPointer=(e,t)=>{const n=t.excalidrawAPI;if(!n)return;const r=getElementsAtPointer(e,n.getSceneElements()).filter((e=>e.link));return 0===r.length?{id:null,text:null}:r.length>=1?{id:r[0].id,text:r[0].link}:void 0},setDynamicStyle=(e,t,n,r)=>{var i,o,a,s,l,c,T,Q,d,u,p,h,m;if("none"===r){null===(i=t.excalidrawContainer)||void 0===i||i.removeAttribute("style"),setTimeout((()=>t.updateScene({appState:{dynamicStyle:""}})));const e=null===(s=null===(a=null===(o=t.toolsPanelRef)||void 0===o?void 0:o.current)||void 0===a?void 0:a.containerRef)||void 0===s?void 0:s.current;if(e){let t=e.getAttribute("style");t=t.replace(/\-\-color\-primary.*/,""),e.setAttribute("style",t)}return}t.ownerDocument;const f="light"===(null===(T=null===(c=null===(l=null==t?void 0:t.excalidrawAPI)||void 0===l?void 0:l.getAppState)||void 0===c?void 0:c.call(l))||void 0===T?void 0:T.theme)||"light"===(null===(u=null===(d=null===(Q=null==t?void 0:t.excalidrawData)||void 0===Q?void 0:Q.scene)||void 0===d?void 0:d.appState)||void 0===u?void 0:u.theme),g=()=>f?e.getCM(n):(t=>{const n=e.getCM(t),r=n.lightness;return n.lightnessTo(Math.abs(r-100))})(n),b=g().lightness,y=g().darkerBy(10).isDark(),L="gray"===r,v=t.app.getAccentColor(),w=()=>L?e.getCM(v):e.getCM(v).mix({color:g(),ratio:.2}),E=()=>e.getCM("#000000").lightnessTo(b),_=()=>L?y?E().lighterBy(10):E().darkerBy(10):y?g().lighterBy(10).mix({color:E(),ratio:.5}):g().darkerBy(10).mix({color:E(),ratio:.5}),M=()=>L?y?E().lighterBy(4):E().darkerBy(4):y?g().lighterBy(4).mix({color:E(),ratio:.5}):g().darkerBy(4).mix({color:E(),ratio:.5}),x=g().mix({color:y?"#f0f0f0":"#101010",ratio:.9}),H=e=>e.stringHEX({alpha:!1}),S={"--color-primary":H(w()),"--color-surface-low":H(_()),"--color-surface-mid":H(_()),"--color-surface-lowest":H(M()),"--color-surface-high":H(_().lighterBy(10)),"--color-on-primary-container":H(y?w().lighterBy(15):w().darkerBy(15)),"--color-surface-primary-container":H(y?w().darkerBy(10):w().lighterBy(10)),"--button-gray-1":H(_()),"--button-gray-2":H(M()),"--input-border-color":H(_()),"--input-bg-color":H(M()),"--input-label-color":H(x),"--island-bg-color":M().alphaTo(.93).stringHEX(),"--popup-secondary-bg-color":M().alphaTo(.93).stringHEX(),"--icon-fill-color":H(x),"--text-primary-color":H(x),"--overlay-bg-color":M().alphaTo(.6).stringHEX(),"--popup-bg-color":H(_()),"--color-on-surface":H(x),"--color-gray-40":H(x),"--color-gray-50":H(x),"--color-surface-highlight":H(_()),"--sidebar-border-color":H(_()),"--color-primary-light":H(w().lighterBy(10)),"--button-hover-bg":H(_()),"--sidebar-bg-color":M().alphaTo(.93).stringHEX(),"--sidebar-shadow":H(_()),"--popup-text-color":H(x),"--code-normal":H(x),"--code-background":H(M()),"--h1-color":H(x),"--h2-color":H(x),"--h3-color":H(x),"--h4-color":H(x),color:H(x),"--select-highlight-color":H(_()),"--color-gray-80":H(y?x.darkerBy(40):x.lighterBy(40))},A=Object.keys(S).map((e=>`${e}: ${S[e]}`)).join("; ");setTimeout((()=>{const e=t.excalidrawAPI;if(!e)return;const n={stroke:H(y?M().lighterBy(15):M().darkerBy(15)),fill:H((y?M().lighterBy(30):M().darkerBy(30)).alphaTo(.2)),nameColor:H(y?M().lighterBy(50):M().darkerBy(50))};e.getSceneElements().filter((e=>"frame"===e.type)).forEach((e=>{const t=cloneElement(e);addAppendUpdateCustomData(t,{frameColor:n}),e.customData&&e.customData.frameColor&&e.customData.frameColor.stroke===n.stroke&&e.customData.frameColor.fill===n.fill&&e.customData.frameColor.nameColor===n.nameColor||mutateElement(e,{customData:t.customData})})),t.updateScene({appState:{frameColor:n,dynamicStyle:S}})}));const C=null===(m=null===(h=null===(p=t.toolsPanelRef)||void 0===p?void 0:p.current)||void 0===h?void 0:h.containerRef)||void 0===m?void 0:m.current;if(C){let e=C.getAttribute("style");e=e.replace(/\-\-color\-primary.*/,""),C.setAttribute("style",e+A)}},getTheme=(e,t)=>"dark"===e.excalidrawData.embeddableTheme?"theme-dark":"light"===e.excalidrawData.embeddableTheme?"theme-light":"auto"===e.excalidrawData.embeddableTheme?"dark"===t?"theme-dark":"theme-light":isObsidianThemeDark()?"theme-dark":"theme-light",renderWebView=(e,t,n,r)=>{const i=e.startsWith("data:");return DEVICE.isDesktop&&!i?React__namespace.createElement("webview",{ref:e=>t.updateEmbeddableRef(n,e),className:"excalidraw__embeddable",title:"Excalidraw Embedded Content",allowFullScreen:!0,src:e,style:{overflow:"hidden",borderRadius:"var(--embeddable-radius)"}}):React__namespace.createElement("iframe",{ref:e=>t.updateEmbeddableRef(n,e),className:"excalidraw__embeddable",title:"Excalidraw Embedded Content",allowFullScreen:!0,allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",src:i?null:e,style:{overflow:"hidden",borderRadius:"var(--embeddable-radius)"},srcDoc:i?atob(e.split(",")[1]):null})};function RenderObsidianView({mdProps:e,element:t,linkText:n,view:r,containerRef:i,activeEmbeddable:o,theme:a,canvasColor:s}){var l;const{subpath:c,file:T}=processLinkText(n,r);if(!T)return null;const Q=r.plugin.getPackage(r.ownerWindow).react,d=Q.useRef(null),u=Q.useRef(!1),p=Q.useRef(!1),h=Q.useRef(a),m=Q.useRef(t);Q.useEffect((()=>{h.current=a}),[a]),Q.useEffect((()=>{m.current=t}),[t]);const f=Q.useCallback((e=>{p.current&&e.stopPropagation()}),[p.current]);Q.useEffect((()=>{if(null==i?void 0:i.current)return KEYBOARD_EVENT_TYPES.forEach((e=>i.current.addEventListener(e,f))),i.current.addEventListener("click",b),()=>{(null==i?void 0:i.current)&&(KEYBOARD_EVENT_TYPES.forEach((e=>i.current.removeEventListener(e,f))),EXTENDED_EVENT_TYPES.forEach((e=>i.current.removeEventListener(e,f))),i.current.removeEventListener("click",b))}}),[]),Q.useEffect((()=>{if(EXTENDED_EVENT_TYPES.forEach((e=>i.current.removeEventListener(e,f))),null==i?void 0:i.current)return p.current&&EXTENDED_EVENT_TYPES.forEach((e=>i.current.addEventListener(e,f))),()=>{(null==i?void 0:i.current)&&EXTENDED_EVENT_TYPES.forEach((e=>i.current.removeEventListener(e,f)))}}),[p.current,i.current]),Q.useEffect((()=>{if(!(null==i?void 0:i.current))return;for(;i.current.hasChildNodes();)i.current.removeChild(i.current.lastChild);i.current.parentElement.style.padding="";const n=r.ownerDocument,o=new obsidian_module.WorkspaceSplit(app.workspace,"vertical");o.getRoot=()=>app.workspace[n===document?"rootSplit":"floatingSplit"],o.getContainer=()=>getContainerForDocument(n),o.containerEl.style.width="100%",o.containerEl.style.height="100%",o.containerEl.style.borderRadius="var(--embeddable-radius)",d.current={leaf:app.workspace.createLeafInParent(o,0),node:null,editNode:null};const a=()=>{app.workspace.activeLeaf===r.leaf&&DEVICE.isDesktop&&(r.ownerWindow.electronWindow.isAlwaysOnTop()||(r.ownerWindow.electronWindow.setAlwaysOnTop(!0),setTimeout((()=>{r.ownerWindow.electronWindow.setAlwaysOnTop(!1)}),500)))};return c&&r.canvasNodeFactory.isInitialized()?(a(),d.current.node=r.canvasNodeFactory.createFileNote(T,c,i.current,t.id),r.updateEmbeddableLeafRef(t.id,d.current)):(async()=>{var n,l;await d.current.leaf.openFile(T,Object.assign({active:!1,state:{mode:"preview"}},c?{eState:{subpath:c}}:{}));const Q=null===(n=d.current.leaf.view)||void 0===n?void 0:n.getViewType();if("canvas"===Q&&(null===(l=d.current.leaf.view.canvas)||void 0===l||l.setReadonly(!0)),"markdown"===Q&&r.canvasNodeFactory.isInitialized())a(),await d.current.leaf.setViewState({state:{file:null}}),d.current.node=r.canvasNodeFactory.createFileNote(T,c,i.current,t.id),g(i.current,t,e,s);else{const e=o.containerEl.querySelector("div.workspace-leaf");e&&(e.style.borderRadius="var(--embeddable-radius)"),i.current.appendChild(o.containerEl)}patchMobileView(r),r.updateEmbeddableLeafRef(t.id,d.current)})(),()=>{}}),[n,c,i]);const g=(e,t,n,o)=>{var a,s,l,c,T,Q,u,p,h;if(!n)return;if(!(null===(a=d.current)||void 0===a?void 0:a.hasOwnProperty("node")))return;const m=null===(s=i.current)||void 0===s?void 0:s.firstElementChild;if(n.useObsidianDefaults)return null==e||e.style.removeProperty("--canvas-background"),null==m||m.style.removeProperty("background-color"),null==e||e.style.removeProperty("--canvas-border"),void(null==m||m.style.removeProperty("border-color"));const f=r.plugin.ea;if(n.backgroundMatchElement){const r=(null!==(l=null==n?void 0:n.backgroundOpacity)&&void 0!==l?l:50)/100,i=(null==t?void 0:t.backgroundColor)?"transparent"===t.backgroundColor.toLowerCase()?"transparent":f.getCM(t.backgroundColor).alphaTo(r).stringHEX():"transparent";"transparent"===i?null==e||e.addClass("transparent"):null==e||e.removeClass("transparent"),null==e||e.style.setProperty("--canvas-background",i),null==e||e.style.setProperty("--background-primary",i),null==m||m.style.setProperty("background-color",i)}else if(null!==(c=null==n?void 0:n.backgroundMatchElement)&&void 0!==c&&!c){const t=(null!==(T=n.backgroundOpacity)&&void 0!==T?T:100)/100,r=n.backgroundMatchCanvas?"transparent"===o.toLowerCase()?"transparent":f.getCM(o).alphaTo(t).stringHEX():f.getCM(n.backgroundColor).alphaTo((null!==(Q=n.backgroundOpacity)&&void 0!==Q?Q:100)/100).stringHEX();"transparent"===r?null==e||e.addClass("transparent"):null==e||e.removeClass("transparent"),null==e||e.style.setProperty("--canvas-background",r),null==e||e.style.setProperty("--background-primary",r),null==m||m.style.setProperty("background-color",r)}if(n.borderMatchElement){const r=(null!==(u=null==n?void 0:n.borderOpacity)&&void 0!==u?u:50)/100,i=(null==t?void 0:t.strokeColor)?"transparent"===t.strokeColor.toLowerCase()?"transparent":f.getCM(t.strokeColor).alphaTo(r).stringHEX():"transparent";null==e||e.style.setProperty("--canvas-border",i),null==e||e.style.setProperty("--canvas-color",i)}else if(null!==(p=null==n?void 0:n.borderMatchElement)&&void 0!==p&&!p){const t=f.getCM(n.borderColor).alphaTo((null!==(h=n.borderOpacity)&&void 0!==h?h:100)/100).stringHEX();null==e||e.style.setProperty("--canvas-border",t),null==e||e.style.setProperty("--canvas-color",t)}};Q.useEffect((()=>{if(!i.current)return;const t=m.current,n=i.current;n.hasClass("canvas-node")&&g(n,t,e,s)}),[e,m.current,i.current,s]),Q.useEffect((()=>{var e,t;u.current&&((null===(e=d.current)||void 0===e?void 0:e.node)&&(null===(t=i.current)||void 0===t||t.addClasses(["is-editing","is-focused"]),r.canvasNodeFactory.stopEditing(d.current.node)),u.current=!1)}),[u.current,d]);const b=Q.useCallback((e=>{var n,o,a,s;if(p.current&&(null==e||e.stopPropagation()),p.current&&!u.current&&(null===(n=d.current)||void 0===n?void 0:n.leaf))if("markdown"===(null===(o=d.current.leaf.view)||void 0===o?void 0:o.getViewType())){const e=r.excalidrawAPI.getSceneElements().filter((e=>e.id===t.id))[0];if(!e||0!==e.angle)return void new obsidian_module.Notice("Sorry, cannot edit rotated markdown documents");const n=d.current.leaf.view.modes;if(!n)return;d.current.leaf.view.setMode(n.source),u.current=!0,patchMobileView(r)}else if(null===(a=d.current)||void 0===a?void 0:a.node){const e=getTheme(r,h.current);null===(s=i.current)||void 0===s||s.addClasses(["is-editing","is-focused"]),r.canvasNodeFactory.startEditing(d.current.node,e)}}),[null===(l=d.current)||void 0===l?void 0:l.leaf,t.id,r,h.current]);return d.current&&(d.current.editNode=b),Q.useEffect((()=>{const e=e=>{"Enter"===e.key&&b(e)};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}}),[b]),Q.useEffect((()=>{var e,n,a,s;if(!(null==i?void 0:i.current)||!(null==d?void 0:d.current))return;const l=p.current;if(p.current=(null==o?void 0:o.element.id)===t.id&&"active"===(null==o?void 0:o.state),l!==p.current)if("markdown"===(null===(n=null===(e=d.current.leaf)||void 0===e?void 0:e.view)||void 0===n?void 0:n.getViewType())){const e=d.current.leaf.view.modes;if(!e)return;if(!p.current)return d.current.leaf.view.setMode(e.preview),void(u.current=!1)}else(null===(a=d.current)||void 0===a?void 0:a.node)&&(null===(s=i.current)||void 0===s||s.removeClasses(["is-editing","is-focused"]),r.canvasNodeFactory.stopEditing(d.current.node))}),[i,d,p,null==o?void 0:o.element,null==o?void 0:o.state,t,r,u,r.canvasNodeFactory]),null}const CustomEmbeddable=({element:e,view:t,appState:n,linkText:r})=>{var i;const o=t.plugin.getPackage(t.ownerWindow).react.useRef(null),a=getTheme(t,n.theme),s=(null===(i=e.customData)||void 0===i?void 0:i.mdProps)||null;return React__namespace.createElement("div",{ref:o,style:{width:"100%",height:"100%",borderRadius:"var(--embeddable-radius)",color:"var(--text-normal)"},className:`${a} canvas-node ${(null==s?void 0:s.filenameVisible)&&!s.useObsidianDefaults?"":"excalidraw-mdEmbed-hideFilename"}`},React__namespace.createElement(RenderObsidianView,{mdProps:s,element:e,linkText:r,view:t,containerRef:o,activeEmbeddable:n.activeEmbeddable,theme:n.theme,canvasColor:n.viewBackgroundColor}))};var PreviewImageType;!function(e){e.PNG="PNG",e.SVGIMG="SVGIMG",e.SVG="SVG"}(PreviewImageType||(PreviewImageType={}));const DB_NAME="Excalidraw "+app.appId,CACHE_STORE="imageCache",BACKUP_STORE="drawingBAK",getKey=e=>{var t,n;return`${e.filepath}#${null!==(t=e.blockref)&&void 0!==t?t:""}#${null!==(n=e.sectionref)&&void 0!==n?n:""}#${e.isDark?1:0}#${e.hasGroupref}#${e.hasArearef}#${e.hasFrameref}#${e.hasSectionref}#${e.previewImageType===PreviewImageType.SVGIMG?1:e.previewImageType===PreviewImageType.PNG?0:2}#${e.scale}`};class ImageCache{constructor(e,t,n){this.initializationNotice=!1,this.obsidanURLCache=new Map,this.fullyInitialized=!1,this.dbName=e,this.cacheStoreName=t,this.backupStoreName=n,this.db=null,this.isInitializing=!1,this.plugin=null}async initializeDB(e){if(this.plugin=e,this.app=e.app,!this.isInitializing&&null===this.db){this.isInitializing=!0;try{const e=indexedDB.open(this.dbName);if(e.onupgradeneeded=e=>{const t=e.target.result;t.objectStoreNames.contains(this.cacheStoreName)||t.createObjectStore(this.cacheStoreName),t.objectStoreNames.contains(this.backupStoreName)||t.createObjectStore(this.backupStoreName)},this.db=await new Promise(((t,n)=>{e.onsuccess=e=>{const n=e.target.result;t(n)},e.onerror=()=>{n(new Error(`Failed to open or create IndexedDB database: ${this.dbName}`))}})),!this.db.objectStoreNames.contains(this.cacheStoreName)||!this.db.objectStoreNames.contains(this.backupStoreName)){const e=this.db.version+1;this.db.close();const t=indexedDB.open(this.dbName,e);t.onupgradeneeded=e=>{const t=e.target.result;t.objectStoreNames.contains(this.cacheStoreName)||t.createObjectStore(this.cacheStoreName),t.objectStoreNames.contains(this.backupStoreName)||t.createObjectStore(this.backupStoreName)},await new Promise(((e,n)=>{t.onsuccess=()=>{t.result.close(),e()},t.onerror=()=>{n(new Error(`Failed to upgrade IndexedDB database: ${this.dbName}`))}})),this.db=await new Promise(((e,t)=>{const n=indexedDB.open(this.dbName);n.onsuccess=()=>{const t=n.result;e(t)},n.onerror=()=>{t(new Error(`Failed to open IndexedDB database: ${this.dbName}`))}}))}setTimeout((async()=>this.purgeInvalidCacheFiles()),6e4),setTimeout((async()=>this.purgeInvalidBackupFiles()),12e4)}finally{this.isInitializing=!1,this.initializationNotice&&(new obsidian_module.Notice("Excalidraw Image Cache is Initialized - You may now retry opening your damaged drawing."),this.initializationNotice=!1),console.log("Initialized Excalidraw Image Cache")}}}async purgeInvalidCacheFiles(){return new Promise(((e,t)=>{const n=this.db.transaction(this.cacheStoreName,"readwrite"),r=n.objectStore(this.cacheStoreName),i=this.app.vault.getFiles(),o=[],a=r.openCursor();a.onsuccess=a=>{const s=a.target.result;if(s){const e=s.key,t=e.replaceAll(/[^#]/g,"").length<9,n=e.split("#")[0],a=i.some((e=>e.path===n)),l=a?i.find((e=>e.path===n)):null;(t||!l||l&&l.stat.mtime>s.value.mtime||!s.value.blob&&!s.value.svg)&&o.push(new Promise(((t,n)=>{const i=r.delete(s.primaryKey);i.onsuccess=()=>t(),i.onerror=t=>{const r=i.error,o=`Failed to delete file with key: ${e}. Error: ${r.message}`;n(new Error(o))}}))),s.continue()}else Promise.all(o).then((()=>{n.commit(),e()})).catch((e=>t(e)))},a.onerror=()=>{const e=a.error;console.log(e);const n=`Failed to purge invalid files from IndexedDB. Error: ${e.message}`;t(new Error(n))}}))}async purgeInvalidBackupFiles(){const e=this.db.transaction(this.backupStoreName,"readwrite"),t=e.objectStore(this.backupStoreName),n=this.app.vault.getFiles(),r=[],i=t.openCursor();return await new Promise(((o,a)=>{i.onsuccess=i=>{const s=i.target.result;if(s){const e=s.key,i=n.some((t=>t.path===e));i||r.push(new Promise(((n,r)=>{const i=t.delete(s.primaryKey);i.onsuccess=()=>n(),i.onerror=()=>r(new Error(`Failed to delete backup file with key: ${e}`))}))),s.continue()}else Promise.all(r).then((()=>{e.commit(),o()})).catch((e=>a(e)))},i.onerror=()=>{const e=i.error,t=`Failed to purge invalid backup files from IndexedDB. Error: ${e.message}`;console.log(e),a(new Error(t))}}))}async getObjectStore(e,t){return this.db.transaction(t,e).objectStore(t)}async getCacheData(e){const t=(await this.getObjectStore("readonly",this.cacheStoreName)).get(e);return new Promise(((e,n)=>{t.onsuccess=()=>{const n=t.result;e(n||null)},t.onerror=()=>{n(new Error("Failed to retrieve data from IndexedDB."))}}))}async getBackupData(e){const t=(await this.getObjectStore("readonly",this.backupStoreName)).get(e);return new Promise(((e,n)=>{t.onsuccess=()=>{const n=t.result;e(n||null)},t.onerror=()=>{n(new Error("Failed to retrieve backup data from IndexedDB."))}}))}isReady(){return!!this.db&&!this.isInitializing&&!!this.plugin&&this.plugin.settings.allowImageCache}async getImageFromCache(e){if(!this.isReady())return null;const t=getKey(e);try{const n=this.fullyInitialized?await this.getCacheData(t):await Promise.race([this.getCacheData(t),new Promise(((e,t)=>setTimeout((()=>t(void 0)),100)))]);if(this.fullyInitialized=!0,!n)return;const r=this.app.vault.getAbstractFileByPath(e.filepath.split("#")[0]);if(!(r&&r instanceof obsidian_module.TFile))return;if(n&&n.mtime===r.stat.mtime){if(n.svg)return convertSVGStringToElement(n.svg);if(this.obsidanURLCache.has(t))return this.obsidanURLCache.get(t);const e=URL.createObjectURL(n.blob);return this.obsidanURLCache.set(t,e),e}return}catch(e){return}}async getBAKFromCache(e){return this.isReady()?this.getBackupData(e):null}addImageToCache(e,t,n){if(!this.isReady())return;const r=this.app.vault.getAbstractFileByPath(e.filepath.split("#")[0]);if(!(r&&r instanceof obsidian_module.TFile))return;let i=null,o=null;n instanceof SVGSVGElement?i=n.outerHTML:o=n;const a={mtime:r.stat.mtime,blob:o,svg:i},s=this.db.transaction(this.cacheStoreName,"readwrite").objectStore(this.cacheStoreName),l=getKey(e);s.put(a,l),Boolean(i)||this.obsidanURLCache.set(l,t)}async addBAKToCache(e,t){this.isReady()&&this.db.transaction(this.backupStoreName,"readwrite").objectStore(this.backupStoreName).put(t,e)}async clearImageCache(){if(this.isReady())return this.clear(this.cacheStoreName,"Image cache was cleared")}async clearBackupCache(){if(this.isReady())return this.clear(this.backupStoreName,"All backups were cleared")}async clear(e,t){if(!this.isReady())return;const n=this.db.transaction([e],"readwrite").objectStore(e);return new Promise(((r,i)=>{const o=n.clear();o.onsuccess=()=>{new obsidian_module.Notice(t),r()},o.onerror=()=>i(new Error(`Failed to clear ${e}.`))}))}}const imageCache=new ImageCache(DB_NAME,CACHE_STORE,"drawingBAK"),isDebugMode=!1;class CanvasNodeFactory{constructor(e){this.view=e,this.nodes=new Map,this.initialized=!1,this.isInitialized=()=>this.initialized}async initialize(){const e=app.internalPlugins.plugins.canvas;e._loaded||await e.load();const t=this.view.ownerDocument,n=new obsidian_module.WorkspaceSplit(app.workspace,"vertical");n.getRoot=()=>app.workspace[t===document?"rootSplit":"floatingSplit"],n.getContainer=()=>getContainerForDocument(t),this.leaf=app.workspace.createLeafInParent(n,0),this.canvas=e.views.canvas(this.leaf).canvas,this.initialized=!0}createFileNote(e,t,n,r){var i;if(!this.initialized)return;t=null!=t?t:"",this.nodes.has(r)&&(this.canvas.removeNode(this.nodes.get(r)),this.nodes.delete(r));const o=this.canvas.createFileNode({pos:{x:0,y:0},file:e,subpath:t,save:!1});return o.setFilePath(e.path,t),o.render(),null===(i=o.containerEl.querySelector(".canvas-node-content-blocker"))||void 0===i||i.remove(),n.appendChild(o.containerEl),this.nodes.set(r,o),o}async startEditing(e,t){if(!this.initialized||!e)return;e.file===this.view.file&&await this.view.setEmbeddableIsEditingSelf(),e.startEditing();const n=isObsidianThemeDark()?"theme-dark":"theme-light";n!==t&&(async()=>{var r,i,o,a,s,l;let c=0;for(;!(null===(o=null===(i=null===(r=e.child.editor)||void 0===r?void 0:r.containerEl)||void 0===i?void 0:i.parentElement)||void 0===o?void 0:o.parentElement)&&c++<100;)await sleep(25);(null===(l=null===(s=null===(a=e.child.editor)||void 0===a?void 0:a.containerEl)||void 0===s?void 0:s.parentElement)||void 0===l?void 0:l.parentElement)&&(e.child.editor.containerEl.parentElement.parentElement.classList.remove(n),e.child.editor.containerEl.parentElement.parentElement.classList.add(t),new MutationObserver((e=>{for(const r of e)if("attributes"===r.type&&"class"===r.attributeName){const e=r.target;e.classList.contains(n)&&(e.classList.remove(n),e.classList.add(t))}})).observe(e.child.editor.containerEl.parentElement.parentElement,{attributes:!0}))})()}stopEditing(e){this.initialized&&e&&e.child.editMode&&(e.file===this.view.file&&this.view.clearEmbeddableIsEditingSelf(),e.child.showPreview())}purgeNodes(){this.initialized&&(this.nodes.forEach((e=>{this.canvas.removeNode(e)})),this.nodes.clear())}}const REG_YOUTUBE=/^(?:http(?:s)?:\/\/)?(?:www\.)?youtu(?:be\.com|\.be)\/(embed\/|watch\?v=|shorts\/|playlist\?list=|embed\/videoseries\?list=)?([a-zA-Z0-9_-]+)(?:\?t=|.*&t=|\?start=|.*&start=)?([a-zA-Z0-9_-]+)?[^\s]*$/,isYouTube=e=>Boolean(e.match(REG_YOUTUBE)),getYouTubeStartAt=e=>{const t=e.match(REG_YOUTUBE);if(null==t?void 0:t[2]){const e=t[3]?parseInt(t[3]):0,n=Math.floor(e/3600),r=Math.floor((e-3600*n)/60),i=e-3600*n-60*r;return 0===n&&0===r&&0===i?"":0===n&&0===r?`${String(i).padStart(2,"0")}`:0===n?`${String(r).padStart(2,"0")}:${String(i).padStart(2,"0")}`:`${String(n).padStart(2,"0")}:${String(r).padStart(2,"0")}:${String(i).padStart(2,"0")}`}return""},isValidYouTubeStart=e=>!!/^[0-9]+$/.test(e)||!!/^[0-9]+:[0-9]+$/.test(e)||!!/^[0-9]+:[0-9]+:[0-9]+$/.test(e)||void 0,updateYouTubeStartTime=(e,t)=>{const n=e.match(REG_YOUTUBE);if(null==n?void 0:n[2]){const r=""===t?"":`t=${timeStringToSeconds(t)}`;let i=e;return n[3]?(i=e.replace(/([?&])t=[a-zA-Z0-9_-]+/,`$1${r}`),i=i.replace(/([?&])start=[a-zA-Z0-9_-]+/,`$1${r}`)):i+=(e.includes("?")?"&":"?")+r,i}return e},timeStringToSeconds=e=>{const t=e.split(":").map(Number),n=t.length;return 1===n?t[0]:2===n?60*t[0]+t[1]:3===n?3600*t[0]+60*t[1]+t[2]:0};class EmbeddalbeMDFileCustomDataSettingsComponent{constructor(e,t,n,r=!0){this.contentEl=e,this.mdCustomData=t,this.update=n,this.isMDFile=r,n||(this.update=()=>{})}render(){let e;new obsidian_module.Setting(this.contentEl).setName(t$d("ES_USE_OBSIDIAN_DEFAULTS")).addToggle((t=>t.setValue(this.mdCustomData.useObsidianDefaults).onChange((t=>{this.mdCustomData.useObsidianDefaults=t,e.style.display=t?"none":"block",this.update()})))),this.contentEl.createEl("hr",{cls:"excalidraw-setting-hr"}),e=this.contentEl.createDiv(),e.style.display=this.mdCustomData.useObsidianDefaults?"none":"block";const t=e;let n,r,i;this.isMDFile&&new obsidian_module.Setting(t).setName(t$d("ES_FILENAME_VISIBLE")).addToggle((e=>e.setValue(this.mdCustomData.filenameVisible).onChange((e=>{this.mdCustomData.filenameVisible=e})))),t.createEl("h4",{text:t$d("ES_BACKGROUND_HEAD")}),new obsidian_module.Setting(t).setName(t$d("ES_BACKGROUND_MATCH_ELEMENT")).addToggle((e=>{r=e,e.setValue(this.mdCustomData.backgroundMatchElement).onChange((e=>{this.mdCustomData.backgroundMatchElement=e,e?(n.settingEl.style.display="none",this.mdCustomData.backgroundMatchCanvas&&i.setValue(!1)):this.mdCustomData.backgroundMatchCanvas||(n.settingEl.style.display=""),this.update()}))})),new obsidian_module.Setting(t).setName(t$d("ES_BACKGROUND_MATCH_CANVAS")).addToggle((e=>{i=e,e.setValue(this.mdCustomData.backgroundMatchCanvas).onChange((e=>{this.mdCustomData.backgroundMatchCanvas=e,e?(n.settingEl.style.display="none",this.mdCustomData.backgroundMatchElement&&r.setValue(!1)):this.mdCustomData.backgroundMatchElement||(n.settingEl.style.display=""),this.update()}))})),this.mdCustomData.backgroundMatchElement&&this.mdCustomData.backgroundMatchCanvas&&i.setValue(!1),n=new obsidian_module.Setting(t).setName(t$d("ES_BACKGROUND_COLOR")).addColorPicker((e=>e.setValue(this.mdCustomData.backgroundColor).onChange((e=>{this.mdCustomData.backgroundColor=e,this.update()})))),n.settingEl.style.display=this.mdCustomData.backgroundMatchElement||this.mdCustomData.backgroundMatchCanvas?"none":"";const o=e=>fragWithHTML(`Current opacity is <b>${e}%</b>`),a=new obsidian_module.Setting(t).setName(t$d("ES_BACKGROUND_OPACITY")).setDesc(o(this.mdCustomData.backgroundOpacity)).addSlider((e=>e.setLimits(0,100,5).setValue(this.mdCustomData.backgroundOpacity).onChange((e=>{this.mdCustomData.backgroundOpacity=e,a.setDesc(o(e)),this.update()}))));if(this.isMDFile){let e;t.createEl("h4",{text:t$d("ES_BORDER_HEAD")}),new obsidian_module.Setting(t).setName(t$d("ES_BORDER_MATCH_ELEMENT")).addToggle((t=>t.setValue(this.mdCustomData.borderMatchElement).onChange((t=>{this.mdCustomData.borderMatchElement=t,e.settingEl.style.display=t?"none":"",this.update()})))),e=new obsidian_module.Setting(t).setName(t$d("ES_BORDER_COLOR")).addColorPicker((e=>e.setValue(this.mdCustomData.borderColor).onChange((e=>{this.mdCustomData.borderColor=e,this.update()})))),e.settingEl.style.display=this.mdCustomData.borderMatchElement?"none":"";const n=new obsidian_module.Setting(t).setName(t$d("ES_BORDER_OPACITY")).setDesc(o(this.mdCustomData.borderOpacity)).addSlider((e=>e.setLimits(0,100,5).setValue(this.mdCustomData.borderOpacity).onChange((e=>{this.mdCustomData.borderOpacity=e,n.setDesc(o(e)),this.update()}))))}}}class EmbeddableSettings extends obsidian_module.Modal{constructor(e,t,n,r){var i,o,a;if(super(e.app),this.plugin=e,this.view=t,this.file=n,this.element=r,this.updatedFilepath=null,this.youtubeStart=null,this.ea=getEA(this.view),this.ea.copyViewElementsToEAforEditing([this.element]),this.zoomValue=r.scale[0],this.isYouTube=isYouTube(this.element.link),this.notExcalidrawIsInternal=this.file&&!this.view.plugin.isExcalidrawFile(this.file),this.isMDFile=this.file&&"md"===this.file.extension,this.isLocalURI=this.element.link.startsWith("file://"),isYouTube&&(this.youtubeStart=getYouTubeStartAt(this.element.link)),this.mdCustomData=null!==(o=null===(i=r.customData)||void 0===i?void 0:i.mdProps)&&void 0!==o?o:t.plugin.settings.embeddableMarkdownDefaults,!(null===(a=r.customData)||void 0===a?void 0:a.mdProps)){const e=this.plugin.ea.getCM(r.backgroundColor);this.mdCustomData.backgroundColor=e.stringHEX({alpha:!1}),this.mdCustomData.backgroundOpacity=r.opacity;const t=this.plugin.ea.getCM(r.strokeColor);this.mdCustomData.borderColor=t.stringHEX({alpha:!1}),this.mdCustomData.borderOpacity=r.opacity}}onOpen(){this.containerEl.classList.add("excalidraw-release"),this.createForm()}onClose(){this.containerEl.removeEventListener("keydown",this.onKeyDown)}async createForm(){this.contentEl.createEl("h1",{text:t$d("ES_TITLE")}),this.file&&new obsidian_module.Setting(this.contentEl).setName(t$d("ES_RENAME")).addText((e=>e.setValue(getPathWithoutExtension(this.file)).onChange((async e=>{this.updatedFilepath=e}))));const e=()=>fragWithHTML(`${t$d("ES_ZOOM_100_RELATIVE_DESC")}<br>Current zoom is <b>${Math.round(100*this.zoomValue)}%</b>`),t=new obsidian_module.Setting(this.contentEl).setName(t$d("ES_ZOOM")).setDesc(e()).addButton((n=>n.setButtonText(t$d("ES_ZOOM_100")).onClick((()=>{const n=this.view.excalidrawAPI;this.zoomValue=1/n.getAppState().zoom.value,t.setDesc(e())})))).addSlider((n=>n.setLimits(10,400,5).setValue(100*this.zoomValue).onChange((n=>{this.zoomValue=n/100,t.setDesc(e())}))));this.isYouTube&&new obsidian_module.Setting(this.contentEl).setName(t$d("ES_YOUTUBE_START")).setDesc(t$d("ES_YOUTUBE_START_DESC")).addText((e=>e.setValue(this.youtubeStart).onChange((async e=>{this.youtubeStart=e})))),(this.isMDFile||this.notExcalidrawIsInternal)&&(this.contentEl.createEl("h3",{text:t$d("ES_EMBEDDABLE_SETTINGS")}),new EmbeddalbeMDFileCustomDataSettingsComponent(this.contentEl,this.mdCustomData,void 0,this.isMDFile).render()),new obsidian_module.Setting(this.contentEl).addButton((e=>e.setButtonText(t$d("PROMPT_BUTTON_CANCEL")).setTooltip("ESC").onClick((()=>{this.close()})))).addButton((e=>e.setButtonText(t$d("PROMPT_BUTTON_OK")).setTooltip("CTRL/Opt+Enter").setCta().onClick((()=>this.applySettings()))));const n=e=>{isWinCTRLorMacCMD(e)&&"Enter"===e.key&&this.applySettings()};this.onKeyDown=n,this.containerEl.ownerDocument.addEventListener("keydown",n)}async applySettings(){var e,t,n,r,i;let o=!1;const a=this.ea.getElement(this.element.id);if(this.updatedFilepath){const e=`${this.updatedFilepath}.${this.file.extension}`;if(e!==this.file.path){const t=splitFolderAndFilename(e),n=getNewUniqueFilepath(this.app.vault,t.folderpath,t.filename);await this.app.vault.rename(this.file,n),a.link=this.element.link.replace(/(\[\[)([^#\]]*)([^\]]*]])/,`$1${this.plugin.app.metadataCache.fileToLinktext(this.file,this.view.file.path,!0)}$3`),o=!0}}var s;this.isYouTube&&this.youtubeStart!==getYouTubeStartAt(this.element.link)&&(o=!0,""===this.youtubeStart||(s=this.youtubeStart,/^[0-9]+$/.test(s)||/^[0-9]+:[0-9]+$/.test(s)||/^[0-9]+:[0-9]+:[0-9]+$/.test(s))?a.link=updateYouTubeStartTime(a.link,this.youtubeStart):new obsidian_module.Notice(t$d("ES_YOUTUBE_START_INVALID"))),!this.isMDFile||this.mdCustomData.backgroundColor===(null===(e=this.element.customData)||void 0===e?void 0:e.backgroundColor)&&this.mdCustomData.borderColor===(null===(t=this.element.customData)||void 0===t?void 0:t.borderColor)&&this.mdCustomData.backgroundOpacity===(null===(n=this.element.customData)||void 0===n?void 0:n.backgroundOpacity)&&this.mdCustomData.borderOpacity===(null===(r=this.element.customData)||void 0===r?void 0:r.borderOpacity)&&this.mdCustomData.filenameVisible===(null===(i=this.element.customData)||void 0===i?void 0:i.filenameVisible)||(addAppendUpdateCustomData(a,{mdProps:this.mdCustomData}),o=!0),this.zoomValue!==this.element.scale[0]&&(o=!0,a.scale=[this.zoomValue,this.zoomValue]),o&&(async()=>{await this.ea.addElementsToView(),this.ea.viewUpdateScene({appState:{}})})(),this.close()}}class EmbeddableMenu{constructor(e,t){this.view=e,this.containerRef=t,this.updateElement=(e,t,n)=>{if(!t)return;const r=this.view,i=r.app;if(t=r.excalidrawAPI.getSceneElements().find((e=>e.id===t.id)),!t)return;const o=`[[${i.metadataCache.fileToLinktext(n,r.file.path,"md"===n.extension)}${e}]]`,a=getEA(r);a.copyViewElementsToEAforEditing([t]),a.getElement(t.id).link=o,r.excalidrawData.elementLinks.set(t.id,o),a.addElementsToView(!1,!0,!0)},this.menuFadeTimeout=0,this.menuElementId=null}handleMouseEnter(){var e;clearTimeout(this.menuFadeTimeout),null===(e=this.containerRef.current)||void 0===e||e.style.setProperty("opacity","1")}handleMouseLeave(){const e=this;this.menuFadeTimeout=window.setTimeout((()=>{var t;null===(t=e.containerRef.current)||void 0===t||t.style.setProperty("opacity","0.2")}),5e3)}renderButtons(e){var t,n;const r=this.view,i=r.app,o=null==r?void 0:r.excalidrawAPI;if(!o)return null;if(!r.file)return null;const a=e.viewModeEnabled&&!r.allowFrameButtonsInViewMode;if(!e.activeEmbeddable||"active"!==e.activeEmbeddable.state||a)return this.menuElementId=null,this.menuFadeTimeout&&(clearTimeout(this.menuFadeTimeout),this.menuFadeTimeout=0),null;const s=null===(t=e.activeEmbeddable)||void 0===t?void 0:t.element;this.menuElementId!==s.id&&(this.menuElementId=s.id,this.handleMouseLeave());let l=s.link;if(!l)return null;const c=useDefaultExcalidrawFrame(s);let T=Boolean(null===(n=s.link)||void 0===n?void 0:n.match(REG_LINKINDEX_HYPERLINK));if(!c&&!T){if(l.startsWith("data:text/html"))T=!0;else{const e=REGEX_LINK.getRes(s.link).next();if(!e||!e.value&&e.done)return null;l=REGEX_LINK.getLink(e),T=Boolean(l.match(REG_LINKINDEX_HYPERLINK))}if(!T){const{subpath:t,file:n}=processLinkText(l,r);if(!n)return;const a="md"===n.extension,c=r.plugin.isExcalidrawFile(n),{x:T,y:Q}=sceneCoordsToViewportCoords({sceneX:s.x,sceneY:s.y},e),d=Q-2.5*ROOTELEMENTSIZE-e.offsetTop+"px",u=T-e.offsetLeft+"px";return React__namespace.createElement("div",{ref:this.containerRef,className:"embeddable-menu",style:{top:d,left:u,opacity:1},onMouseEnter:()=>this.handleMouseEnter(),onPointerDown:()=>this.handleMouseEnter(),onMouseLeave:()=>this.handleMouseLeave()},React__namespace.createElement("div",{className:"Island",style:{position:"relative",display:"block"}},a&&React__namespace.createElement(ActionButton,{key:"MarkdownSection",title:t$d("NARROW_TO_HEADING"),action:async()=>{r.updateScene({appState:{activeEmbeddable:null}});const e=(await i.metadataCache.blockCache.getForFile({isCancelled:()=>!1},n)).blocks.filter((e=>{var t;return e.display&&"heading"===(null===(t=e.node)||void 0===t?void 0:t.type)})).filter((e=>!c||!MD_EX_SECTIONS.includes(e.display)));let o,a;c?(o=e.map((e=>`#${cleanSectionHeading(e.display)}`)),a=e.map((e=>e.display))):(o=[""].concat(e.map((e=>`#${cleanSectionHeading(e.display)}`))),a=[t$d("SHOW_ENTIRE_FILE")].concat(e.map((e=>e.display))));const l=await ScriptEngine.suggester(i,a,o,"Select section from document");(l||""===l)&&l!==t&&this.updateElement(l,s,n)},icon:ICONS.ZoomToSection,view:r}),a&&!c&&React__namespace.createElement(ActionButton,{key:"MarkdownBlock",title:t$d("NARROW_TO_BLOCK"),action:async()=>{var e,o,a;if(!n)return;r.updateScene({appState:{activeEmbeddable:null}});const l=(await i.metadataCache.blockCache.getForFile({isCancelled:()=>!1},n)).blocks.filter((e=>{var t;return e.display&&"paragraph"===(null===(t=e.node)||void 0===t?void 0:t.type)})),c=["entire-file"].concat(l),T=[t$d("SHOW_ENTIRE_FILE")].concat(l.map((e=>{var t;return`${(null===(t=e.node)||void 0===t?void 0:t.id)?`#^${e.node.id}: `:""}${e.display.trim()}`}))),Q=await ScriptEngine.suggester(i,T,c,"Select section from document");if(!Q)return;if("entire-file"===Q){if(""===t)return;return void this.updateElement("",s,n)}let d=Q.node.id;if(!d||`#^${d}`!==t){if(!d){const t=null===(a=null===(o=null===(e=Q.node)||void 0===e?void 0:e.position)||void 0===o?void 0:o.end)||void 0===a?void 0:a.offset;if(!t)return;d=nanoid();const r=await i.vault.cachedRead(n);if(!r)return;await i.vault.modify(n,r.slice(0,t)+` ^${d}`+r.slice(t)),await sleep(200)}this.updateElement(`#^${d}`,s,n)}},icon:ICONS.ZoomToBlock,view:r}),React__namespace.createElement(ActionButton,{key:"ZoomToElement",title:t$d("ZOOM_TO_FIT"),action:()=>{s&&o.zoomToFit([s],30,.1)},icon:ICONS.ZoomToSelectedElement,view:r}),React__namespace.createElement(ActionButton,{key:"Properties",title:t$d("PROPERTIES"),action:()=>{s&&new EmbeddableSettings(r.plugin,r,n,s).open()},icon:ICONS.Properties,view:r})))}}if(T||c){const t=c?o.getHTMLIFrameElement(s.id):r.getEmbeddableElementById(s.id);if(!t||!t.contentWindow)return null;const{x:n,y:i}=sceneCoordsToViewportCoords({sceneX:s.x,sceneY:s.y},e),a=i-2.5*ROOTELEMENTSIZE-e.offsetTop+"px",T=n-e.offsetLeft+"px";return React__namespace.createElement("div",{ref:this.containerRef,className:"embeddable-menu",style:{top:a,left:T,opacity:1},onMouseEnter:()=>this.handleMouseEnter(),onPointerDown:()=>this.handleMouseEnter(),onMouseLeave:()=>this.handleMouseLeave()},React__namespace.createElement("div",{className:"Island",style:{position:"relative",display:"block"}},t.src!==l&&!t.src.startsWith("https://www.youtube.com")&&!t.src.startsWith("https://player.vimeo.com")&&React__namespace.createElement(ActionButton,{key:"Reload",title:t$d("RELOAD"),action:()=>{t.src=l},icon:ICONS.Reload,view:r}),React__namespace.createElement(ActionButton,{key:"Open",title:t$d("OPEN_IN_BROWSER"),action:()=>{openExternalLink(t.src.startsWith("https://www.youtube.com")||t.src.startsWith("https://player.vimeo.com")?s.link:t.src,r.app)},icon:ICONS.Globe,view:r}),React__namespace.createElement(ActionButton,{key:"ZoomToElement",title:t$d("ZOOM_TO_FIT"),action:()=>{s&&o.zoomToFit([s],r.plugin.settings.zoomToFitMaxLevel,.1)},icon:ICONS.ZoomToSelectedElement,view:r}),React__namespace.createElement(ActionButton,{key:"Properties",title:t$d("PROPERTIES"),action:()=>{s&&new EmbeddableSettings(r.plugin,r,null,s).open()},icon:ICONS.Properties,view:r}),(null==l?void 0:l.startsWith("data:text/html"))&&React__namespace.createElement(ActionButton,{key:"CopyCode",title:t$d("COPYCODE"),action:()=>{s&&navigator.clipboard.writeText(atob(l.split(",")[1]))},icon:ICONS.Copy,view:r})))}}}class SelectCard extends obsidian_module.FuzzySuggestModal{constructor(e,t,n){super(e),this.app=e,this.view=t,this.sections=n,this.limit=20,this.setInstructions([{command:t$d("TYPE_SECTION"),purpose:""}]),this.inputEl.onkeyup=e=>{if("Enter"==e.key&&this.containerEl.innerText.includes(t$d("EMPTY_SECTION_MESSAGE"))){const e=this.inputEl.value;if(MD_EX_SECTIONS.includes(e))return new obsidian_module.Notice(t$d("INVALID_SECTION_NAME")),void this.close();(async()=>{const n=t.data,r=getExcalidrawMarkdownHeaderSection(n);t.data=n.replace(r,r+`\n# ${e}\n\n`),await t.forceSave(!0);let i,o=0;for(await sleep(200);o++<10&&!(i=(await this.app.metadataCache.blockCache.getForFile({isCancelled:()=>!1},t.file)).blocks.filter((e=>{var t;return e.display&&"heading"===(null===(t=e.node)||void 0===t?void 0:t.type)})).filter((e=>!MD_EX_SECTIONS.includes(e.display))).map((e=>cleanSectionHeading(e.display))).find((t=>t===e)));)await sleep(200);const a=getEA(this.view),s=a.addEmbeddable(0,0,400,500,`[[${this.view.file.path}#${e}]]`);await a.addElementsToView(!0,!1,!0);const l=t.excalidrawAPI,c=a.getViewElements().find((e=>e.id===s));l.selectElements([c]),setTimeout((()=>{var e,n;l.updateScene({appState:{activeEmbeddable:{element:c,state:"active"}}}),i&&(null===(n=null===(e=t.getEmbeddableLeafElementById(c.id))||void 0===e?void 0:e.editNode)||void 0===n||n.call(e))}))})(),this.close()}}}getItems(){return this.sections}getItemText(e){return e}onChooseItem(e){const t=getEA(this.view),n=t.addEmbeddable(0,0,400,500,`[[${this.view.file.path}#${e}]]`);(async()=>{await t.addElementsToView(!0,!1,!0),t.selectElementsInView([n])})()}start(){this.emptyStateText=t$d("EMPTY_SECTION_MESSAGE"),this.setPlaceholder(t$d("SELECT_SECTION_OR_TYPE_NEW")),this.open()}}var TextMode;!function(e){e.parsed="parsed",e.raw="raw"}(TextMode||(TextMode={}));const HIDE="excalidraw-hidden",SHOW="excalidraw-visible",addFiles=async(e,t,n)=>{if(!e||0===e.length||!t)return;const r=t.excalidrawAPI;if(!r)return;if(e=e.filter((e=>e&&e.size&&e.size.height>0&&e.size.width>0)),0===e.length)return;const i=scaleLoadedImage(t.getScene(),e);void 0===n&&(n=i.scene.appState.theme),i.dirty&&t.updateScene({elements:i.scene.elements,appState:i.scene.appState,commitToHistory:!1});for(const r of e)if(t.excalidrawData.hasFile(r.id)&&t.excalidrawData.getFile(r.id).setImage(r.dataURL,r.mimeType,r.size,n,r.hasSVGwithBitmap),t.excalidrawData.hasEquation(r.id)){const e=t.excalidrawData.getEquation(r.id).latex;t.excalidrawData.setEquation(r.id,{latex:e,isLoaded:!0})}r.addFiles(e)},warningUnknowSeriousError=()=>{new obsidian_module.Notice("WARNING: Excalidraw ran into an unknown problem!\n\nThere is a risk that your most recent changes cannot be saved.\n\nTo be on the safe side...\n1) Please select your drawing using CTRL/CMD+A and make a copy with CTRL/CMD+C.\n2) Then create an empty drawing in a new pane by CTRL/CMD+clicking the Excalidraw ribbon button,\n3) and paste your work to the new document with CTRL/CMD+V.",6e4)};class ExcalidrawView extends obsidian_module.TextFileView{constructor(e,t){super(e),this.excalidrawAPI=null,this.excalidrawWrapperRef=null,this.toolsPanelRef=null,this.embeddableMenuRef=null,this.linksAlwaysOpenInANewPane=!1,this.allowFrameButtonsInViewMode=!1,this.lastSaveTimestamp=0,this.lastLoadedFile=null,this.modifierKeyDown={shiftKey:!1,metaKey:!1,ctrlKey:!1,altKey:!1},this.currentPosition={x:0,y:0},this.embeddableRefs=new Map,this.embeddableLeafRefs=new Map,this.semaphores={embeddableIsEditingSelf:!1,popoutUnload:!1,viewunload:!1,scriptsReady:!1,justLoaded:!1,preventAutozoom:!1,autosaving:!1,dirty:null,preventReload:!1,isEditingText:!1,saving:!1,forceSaving:!1,hoverSleep:!1,wheelTimeout:null},this.autosaveTimer=null,this.textMode=TextMode.raw,this.compatibilityMode=!1,this.isEditingTextResetTimer=null,this.selectedTextElement=null,this.selectedImageElement=null,this.selectedElementWithLink=null,this.blockOnMouseButtonDown=!1,this.doubleClickTimestamp=Date.now(),this.hoverPoint={x:0,y:0},this.hoverPreviewTarget=null,this.viewModeEnabled=!1,this.lastMouseEvent=null,this.id=this.leaf.id,this.getHookServer=()=>{var e;return null!==(e=this.hookServer)&&void 0!==e?e:this.plugin.ea},this.preventReloadResetTimer=null,this.editingSelfResetTimer=null,this.hiddenMobileLeaves=[],this.offsetLeft=0,this.offsetTop=0,this.blockTextModeChange=!1,this.isLoaded=!1,this.activeLoader=null,this.nextLoader=null,this.initialContainerSizeUpdate=!1,this.previousSceneVersion=0,this.previousBackgroundColor="",this.previousTheme="",this.colorChangeTimer=null,this.isLinkSelected=()=>Boolean(this.getSelectedTextElement().id||this.getSelectedImageElement().id||this.getSelectedElementWithLink().id),this.getActiveEmbeddable=()=>{var e,t;if(!this.excalidrawAPI)return null;const n=this.excalidrawAPI.getAppState();return n.activeEmbeddable&&"active"===n.activeEmbeddable.state?this.getEmbeddableLeafElementById(null===(t=null===(e=n.activeEmbeddable)||void 0===e?void 0:e.element)||void 0===t?void 0:t.id):null},this.plugin=t,this.excalidrawData=new ExcalidrawData(t),this.hookServer=t.ea,this.canvasNodeFactory=new CanvasNodeFactory(this)}setHookServer(e){this.hookServer=e||this.plugin.ea}preventAutozoom(){this.semaphores.preventAutozoom=!0,setTimeout((()=>this.semaphores.preventAutozoom=!1),1500)}saveExcalidraw(e){if(!e){if(!this.excalidrawAPI)return;e=this.getScene()}const t=`${this.file.path.substring(0,this.file.path.lastIndexOf(".md"))}.excalidraw`,n=app.vault.getAbstractFileByPath(obsidian_module.normalizePath(t));n&&n instanceof obsidian_module.TFile?app.vault.modify(n,JSON.stringify(e,null,"\t")):app.vault.create(t,JSON.stringify(e,null,"\t"))}async exportExcalidraw(e){this.excalidrawAPI&&this.file&&(this.app.isMobile?new Prompt(this.app,"Please provide filename",this.file.basename,"filename, leave blank to cancel action").openAndGetValue((async e=>{if(!e)return;e=`${e}.excalidraw`;const t=splitFolderAndFilename(this.file.path).folderpath;await checkAndCreateFolder(t);const n=getNewUniqueFilepath(this.app.vault,e,t);this.app.vault.create(n,JSON.stringify(this.getScene(),null,"\t")),new obsidian_module.Notice(`Exported to ${n}`,6e3)})):download("data:text/plain;charset=utf-8",encodeURIComponent(JSON.stringify(this.getScene(e),null,"\t")),`${this.file.basename}.excalidraw`))}async svg(e,t,n){const r=this.exportDialog,i={withBackground:r?!r.transparent:getWithBackground(this.plugin,this.file),withTheme:!0,isMask:isMaskFile(this.plugin,this.file)};return await getSVG(Object.assign(Object.assign({},e),{appState:Object.assign(Object.assign({},e.appState),{theme:null!=t?t:r?r.theme:getExportTheme(this.plugin,this.file,e.appState.theme),exportEmbedScene:void 0===n?!!r&&r.embedScene:n})}),i,r?r.padding:getExportPadding(this.plugin,this.file),this.file)}async saveSVG(e,t){if(!e){if(!this.excalidrawAPI)return!1;e=this.getScene()}const n=async(n,r)=>{const i=this.app.vault.getAbstractFileByPath(obsidian_module.normalizePath(n)),o=await this.svg(e,r,t);if(!o)return;const a=(new XMLSerializer).serializeToString(embedFontsInSVG(o,this.plugin));i&&i instanceof obsidian_module.TFile?await this.app.vault.modify(i,a):await this.app.vault.create(n,a)};this.plugin.settings.autoExportLightAndDark?(await n(getIMGFilename(this.file.path,"dark.svg"),"dark"),await n(getIMGFilename(this.file.path,"light.svg"),"light")):await n(getIMGFilename(this.file.path,"svg"))}async exportSVG(e,t){if(!this.excalidrawAPI||!this.file)return;let n=await this.svg(this.getScene(t),void 0,e);n&&(n=embedFontsInSVG(n,this.plugin),download(null,svgToBase64(n.outerHTML),`${this.file.basename}.svg`))}async png(e,t,n){const r=this.exportDialog,i={withBackground:r?!r.transparent:getWithBackground(this.plugin,this.file),withTheme:!0,isMask:isMaskFile(this.plugin,this.file)};return await getPNG(Object.assign(Object.assign({},e),{appState:Object.assign(Object.assign({},e.appState),{theme:null!=t?t:r?r.theme:getExportTheme(this.plugin,this.file,e.appState.theme),exportEmbedScene:void 0===n?!!r&&r.embedScene:n})}),i,r?r.padding:getExportPadding(this.plugin,this.file),r?r.scale:getPNGScale(this.plugin,this.file))}async savePNG(e,t){if(!e){if(!this.excalidrawAPI)return!1;e=this.getScene()}const n=async(n,r)=>{const i=this.app.vault.getAbstractFileByPath(obsidian_module.normalizePath(n)),o=await this.png(e,r,t);o&&(i&&i instanceof obsidian_module.TFile?await this.app.vault.modifyBinary(i,await o.arrayBuffer()):await this.app.vault.createBinary(n,await o.arrayBuffer()))};this.plugin.settings.autoExportLightAndDark?(await n(getIMGFilename(this.file.path,"dark.png"),"dark"),await n(getIMGFilename(this.file.path,"light.png"),"light")):await n(getIMGFilename(this.file.path,"png"))}async exportPNGToClipboard(e,t){if(!this.excalidrawAPI||!this.file)return;const n=await this.png(this.getScene(t),void 0,e);n&&await navigator.clipboard.write([new window.ClipboardItem({"image/png":n})])}async exportPNG(e,t){if(!this.excalidrawAPI||!this.file)return;const n=await this.png(this.getScene(t),void 0,e);if(!n)return;const r=new FileReader;r.readAsDataURL(n);const i=this;r.onloadend=function(){const e=r.result;download(null,e,`${i.file.basename}.png`)}}setPreventReload(){this.semaphores.preventReload=!0;const e=this;this.preventReloadResetTimer=setTimeout((()=>e.semaphores.preventReload=!1),2e3)}clearPreventReloadTimer(){this.preventReloadResetTimer&&(clearTimeout(this.preventReloadResetTimer),this.preventReloadResetTimer=null)}async setEmbeddableIsEditingSelf(){this.clearEmbeddableIsEditingSelfTimer(),await this.forceSave(!0),this.semaphores.embeddableIsEditingSelf=!0}clearEmbeddableIsEditingSelfTimer(){this.editingSelfResetTimer&&(clearTimeout(this.editingSelfResetTimer),this.editingSelfResetTimer=null)}clearEmbeddableIsEditingSelf(){const e=this;this.clearEmbeddableIsEditingSelfTimer(),this.editingSelfResetTimer=setTimeout((()=>e.semaphores.embeddableIsEditingSelf=!1),2e3)}async save(e=!0,t=!1){if(!this.isLoaded)return;if(this.semaphores.embeddableIsEditingSelf)return;if(this.semaphores.saving)return;this.semaphores.saving=!0;let n=!1;if(this.excalidrawAPI&&this.isLoaded&&this.file&&app.vault.getAbstractFileByPath(this.file.path)){try{const r=Boolean(null!==this.semaphores.dirty&&this.semaphores.dirty||this.semaphores.autosaving||t),i=this.getScene();if(this.compatibilityMode?await this.excalidrawData.syncElements(i):await this.excalidrawData.syncElements(i,this.excalidrawAPI.getAppState().selectedElementIds)&&!this.semaphores.popoutUnload&&await this.loadDrawing(!1,this.excalidrawAPI.getSceneElementsIncludingDeleted().filter((e=>e.isDeleted))),r){this.clearPreventReloadTimer(),this.semaphores.preventReload=e,await super.save();const r=this.file.path,i=this.lastSavedData;setTimeout((()=>imageCache.addBAKToCache(r,i)),50),n=this.lastSaveTimestamp===this.file.stat.mtime&&!e&&t,this.lastSaveTimestamp=this.file.stat.mtime,this.clearDirty(),e&&this.setPreventReload()}if(!n&&!this.semaphores.autosaving&&(!this.semaphores.viewunload||this.semaphores.popoutUnload)){const e=this.excalidrawData.autoexportPreference;(e===AutoexportPreference.inherit&&this.plugin.settings.autoexportSVG||e===AutoexportPreference.both||e===AutoexportPreference.svg)&&this.saveSVG(),(e===AutoexportPreference.inherit&&this.plugin.settings.autoexportPNG||e===AutoexportPreference.both||e===AutoexportPreference.png)&&this.savePNG(),!this.compatibilityMode&&this.plugin.settings.autoexportExcalidraw&&this.saveExcalidraw()}}catch(e){errorlog({where:"ExcalidrawView.save",fn:this.save,error:e}),warningUnknowSeriousError()}this.semaphores.saving=!1,n&&this.reload(!0,this.file)}else this.semaphores.saving=!1}getViewData(){var e,t,n;if(!this.excalidrawAPI||!this.excalidrawData.loaded)return this.data;const r=this.getScene();if(!r)return this.data;if(!this.compatibilityMode){const r=(null===(e=this.exportDialog)||void 0===e?void 0:e.dirty)&&(null===(t=this.exportDialog)||void 0===t?void 0:t.saveSettings)?[[FRONTMATTER_KEYS["export-padding"].name,this.exportDialog.padding.toString()],[FRONTMATTER_KEYS["export-pngscale"].name,this.exportDialog.scale.toString()],[FRONTMATTER_KEYS["export-dark"].name,"dark"===this.exportDialog.theme?"true":"false"],[FRONTMATTER_KEYS["export-transparent"].name,this.exportDialog.transparent?"true":"false"],[FRONTMATTER_KEYS.plugin.name,this.textMode===TextMode.raw?"raw":"parsed"]]:[[FRONTMATTER_KEYS.plugin.name,this.textMode===TextMode.raw?"raw":"parsed"]];(null===(n=this.exportDialog)||void 0===n?void 0:n.dirty)&&(this.exportDialog.dirty=!1);const i=getExcalidrawMarkdownHeaderSection(this.data,r);this.excalidrawData.disableCompression||(this.excalidrawData.disableCompression=this.isEditedAsMarkdownInOtherView());const o=i+this.excalidrawData.generateMD(this.excalidrawAPI.getSceneElementsIncludingDeleted().filter((e=>e.isDeleted)));return this.excalidrawData.disableCompression=!1,o}return this.compatibilityMode?JSON.stringify(r,null,"\t"):this.data}restoreMobileLeaves(){this.hiddenMobileLeaves.length>0&&(this.hiddenMobileLeaves.forEach((e=>{e[0].containerEl.style.display=e[1]})),this.hiddenMobileLeaves=[])}toggleDisableBinding(){const e=!this.excalidrawAPI.getAppState().invertBindingBehaviour;this.updateScene({appState:{invertBindingBehaviour:e}}),new obsidian_module.Notice(e?"Inverted Mode: Default arrow binding is now disabled. Use CTRL/CMD to temporarily enable binding when needed.":"Normal Mode: Arrow binding is now enabled. Use CTRL/CMD to temporarily disable binding when needed.")}toggleFrameRendering(){const e=this.excalidrawAPI.getAppState().frameRendering;this.updateScene({appState:{frameRendering:Object.assign(Object.assign({},e),{enabled:!e.enabled})}}),new obsidian_module.Notice(e.enabled?"Frame Rendering: Enabled":"Frame Rendering: Disabled")}toggleFrameClipping(){const e=this.excalidrawAPI.getAppState().frameRendering;this.updateScene({appState:{frameRendering:Object.assign(Object.assign({},e),{clip:!e.clip})}}),new obsidian_module.Notice(e.clip?"Frame Clipping: Enabled":"Frame Clipping: Disabled")}gotoFullscreen(){this.plugin.leafChangeTimeout&&(clearTimeout(this.plugin.leafChangeTimeout),this.plugin.leafChangeTimeout=null),this.excalidrawWrapperRef&&(this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.setFullscreen(!0),(e=>{let t=e;for(;t&&!t.hasClass("workspace-split");)e.addClass(SHOW),t=(e=t).parentElement;e&&(e.addClass(SHOW),e.querySelectorAll(`div.workspace-split:not(.${SHOW})`).forEach((t=>{t!==e&&t.addClass(SHOW)})),e.querySelector(`div.workspace-leaf-content.${SHOW} > .view-header`).addClass(SHOW),e.querySelectorAll(`div.workspace-tab-container.${SHOW} > div.workspace-leaf:not(.${SHOW})`).forEach((e=>e.addClass(SHOW))),e.querySelectorAll(`div.workspace-tabs.${SHOW} > div.workspace-tab-header-container`).forEach((e=>e.addClass(SHOW))),e.querySelectorAll(`div.workspace-split.${SHOW} > div.workspace-tabs:not(.${SHOW})`).forEach((e=>e.addClass(SHOW))));const n=this.ownerDocument;n.body.querySelectorAll(`div.workspace-split:not(.${SHOW})`).forEach((e=>{e!==t?e.addClass(HIDE):e.addClass(SHOW)})),n.body.querySelector(`div.workspace-leaf-content.${SHOW} > .view-header`).addClass(HIDE),n.body.querySelectorAll(`div.workspace-tab-container.${SHOW} > div.workspace-leaf:not(.${SHOW})`).forEach((e=>e.addClass(HIDE))),n.body.querySelectorAll(`div.workspace-tabs.${SHOW} > div.workspace-tab-header-container`).forEach((e=>e.addClass(HIDE))),n.body.querySelectorAll(`div.workspace-split.${SHOW} > div.workspace-tabs:not(.${SHOW})`).forEach((e=>e.addClass(HIDE))),n.body.querySelectorAll("div.workspace-ribbon").forEach((e=>e.addClass(HIDE))),n.body.querySelectorAll("div.mobile-navbar").forEach((e=>e.addClass(HIDE))),n.body.querySelectorAll("div.status-bar").forEach((e=>e.addClass(HIDE)))})(this.contentEl))}isFullscreen(){return Boolean(document.body.querySelector(".excalidraw-hidden"))}exitFullscreen(){this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.setFullscreen(!1);const e=this.ownerDocument;e.querySelectorAll(".excalidraw-hidden").forEach((e=>e.removeClass(HIDE))),e.querySelectorAll(".excalidraw-visible").forEach((e=>e.removeClass(SHOW)))}removeLinkTooltip(){const e=this.ownerDocument.body.querySelector("body>div.excalidraw-tooltip,div.excalidraw-tooltip--visible");e&&e.classList.remove("excalidraw-tooltip--visible")}handleLinkHookCall(e,t,n){if(this.getHookServer().onLinkClickHook)try{if(!this.getHookServer().onLinkClickHook(e,t,n,this,this.getHookServer()))return!0}catch(e){errorlog({where:"ExcalidrawView.onLinkOpen",fn:this.getHookServer().onLinkClickHook,error:e})}return!1}async linkClick(e,t,n,r,i){var o,a,s,l,c,T;t||(t={id:null,text:null}),n||(n={id:null,fileId:null}),r||(r={id:null,text:null}),e||i||(i=emulateKeysForLinkClick("new-tab")),e&&!i&&(i={shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,altKey:e.altKey});const Q=linkClickModifierType(i);let d=null,u=null,p=null;if((null==t?void 0:t.id)||(null==r?void 0:r.id)){if(p=null!==(o=null==r?void 0:r.text)&&void 0!==o?o:this.textMode===TextMode.parsed?this.excalidrawData.getRawText(t.id):t.text,!p)return;p=p.replaceAll("\n","");const n=null!==(a=t.id)&&void 0!==a?a:r.id,i=this.excalidrawAPI.getSceneElements().filter((e=>e.id===n))[0];if(this.handleLinkHookCall(i,p,e))return;if(openExternalLink(p,this.app))return;const s=await linkPrompt(p,this.app,this);if(!s)return;[d,p,u]=s}if(null==n?void 0:n.id){const e=this.getScene().elements.find((e=>e.id===n.id));if(this.excalidrawData.hasEquation(n.fileId))return void(async()=>{await this.save(!1),n.fileId=e.fileId;const t=this.excalidrawData.getEquation(n.fileId).latex;GenericInputPrompt.Prompt(this,this.plugin,this.app,t$d("ENTER_LATEX"),void 0,t,void 0,3).then((async e=>{e&&e!==t&&(this.excalidrawData.setEquation(n.fileId,{latex:e,isLoaded:!1}),await this.save(!1),await updateEquation(e,n.fileId,this,addFiles,this.plugin),this.setDirty(1))}))})();if(this.excalidrawData.hasMermaid(n.fileId)||getMermaidText(e))return void(shouldRenderMermaid&&this.excalidrawAPI.updateScene({appState:{openDialog:{name:"ttd",tab:"mermaid"}}}));if(await this.save(!1),this.excalidrawData.hasFile(n.fileId)){const t=this.excalidrawData.getFile(n.fileId);if(!t.isHyperLink&&!t.isLocalLink&&"md-properties"===Q&&"md"===t.file.extension&&!this.plugin.isExcalidrawFile(t.file)){const e=async e=>{e&&t.linkParts.original!==e&&(t.resetImage(this.file.path,e),this.setDirty(2),await this.save(!1),await this.loadSceneFiles())};return void GenericInputPrompt.Prompt(this,this.plugin,this.app,"Customize the link",void 0,t.linkParts.original,[{caption:"✅",action:e}],1,!1,(e=>e.createEl("p",{text:fragWithHTML("Do not add [[square brackets]] around the filename!<br>Follow this format when editing your link:<br><mark>filename#^blockref|WIDTHxMAXHEIGHT</mark>")})),!1).then(e,(()=>{}))}let r=" ";const i=null===(l=null===(s=this.app.metadataCache)||void 0===s?void 0:s.getBacklinksForFile(t.file))||void 0===l?void 0:l.data,o=new Set;i&&this.plugin.settings.showSecondOrderLinks&&(r+=Object.keys(i).filter((e=>e!==this.file.path&&e!==t.file.path)).map((e=>{const t=splitFolderAndFilename(e);return o.has(e)?"":(o.add(e),`[[${e}|Second Order Link: ${t.basename}]]`)})).join(" ")),this.plugin.settings.showSecondOrderLinks&&this.plugin.isExcalidrawFile(t.file)&&(r+=getExcalidrawFileForwardLinks(this.app,t.file,o));const a=(t.isHyperLink||t.isLocalLink?`[](${t.hyperlink}) `:`[[${t.linkParts.original}]] `)+(e.link?e.link.match(/$cmd:\/\/.*/)||e.link.match(REG_LINKINDEX_HYPERLINK)?`[](${e.link})`:e.link:""),c=await linkPrompt(a+r,this.app,this);if(!c)return;[d,p,u]=c}}if(!p)return void new obsidian_module.Notice(t$d("LINK_BUTTON_CLICK_NO_TEXT"),2e4);const h=null!==(T=null!==(c=n.id)&&void 0!==c?c:t.id)&&void 0!==T?T:r.id,m=this.excalidrawAPI.getSceneElements().filter((e=>e.id===h))[0];if(!this.handleLinkHookCall(m,p,e))try{if("active-pane"!==Q&&this.isFullscreen()&&this.exitFullscreen(),!d)return void new NewFileActions({plugin:this.plugin,path:p,keys:i,view:this,sourceElement:m}).open();this.linksAlwaysOpenInANewPane&&!anyModifierKeysPressed(i)&&(i=emulateKeysForLinkClick("new-pane"));try{const e=this.app.plugins.plugins["drawio-obsidian"];if(e&&e._loaded&&"svg"===d.extension){const e=await this.app.vault.cachedRead(d);if(/(<|\<)(mxfile|mxgraph)/i.test(e))return void getLeaf(this.plugin,this.leaf,i).setViewState({type:"diagram-edit",state:{file:d.path}})}}catch(e){console.error(e)}const{leaf:e,promise:t}=openLeaf({plugin:this.plugin,fnGetLeaf:()=>getLeaf(this.plugin,this.leaf,i),file:d,openState:Object.assign({active:!this.linksAlwaysOpenInANewPane},u?{eState:{subpath:u}}:{})});await t}catch(e){new obsidian_module.Notice(e,4e3)}}async handleLinkClick(e){this.removeLinkTooltip();const t=this.getSelectedTextElement(),n=(null==t?void 0:t.id)?null:this.getSelectedImageElement(),r=(null==n?void 0:n.id)||(null==t?void 0:t.id)?null:this.getSelectedElementWithLink();this.linkClick(e instanceof MouseEvent?e:null,t,n,r,e instanceof MouseEvent?null:e)}onResize(){var e,t;if(this.plugin.leafChangeTimeout)return;const n=this.excalidrawAPI;this.plugin.settings.zoomToFitOnResize&&this.excalidrawAPI&&!this.semaphores.isEditingText&&n&&"text"!==(null===(t=null===(e=n.getAppState())||void 0===e?void 0:e.editingElement)||void 0===t?void 0:t.type)&&this.zoomToFit(!1)}getSceneVersion(e){return this.excalidrawGetSceneVersion||(this.excalidrawGetSceneVersion=this.plugin.getPackage(this.ownerWindow).excalidrawLib.getSceneVersion),this.excalidrawGetSceneVersion(e.filter((e=>!e.isDeleted)))}async forceSave(e=!1){this.semaphores.autosaving||this.semaphores.saving?e||new obsidian_module.Notice("Force Save aborted because saving is in progress)"):(this.preventReloadResetTimer&&(clearTimeout(this.preventReloadResetTimer),this.preventReloadResetTimer=null),this.semaphores.preventReload=!1,this.semaphores.forceSaving=!0,await this.save(!1,!0),this.plugin.triggerEmbedUpdates(),this.loadSceneFiles(),this.semaphores.forceSaving=!1,e||new obsidian_module.Notice("Save successful",1e3))}onload(){const e=Boolean(void 0===this.containerEl.onWindowMigrated);app.isMobile||e||this.containerEl.onWindowMigrated((()=>this.leaf.rebuildView()));const t=app.isMobile?document:this.containerEl.ownerDocument;this.ownerDocument=t,this.ownerWindow=this.ownerDocument.defaultView,this.plugin.getPackage(this.ownerWindow),this.semaphores.scriptsReady=!0,this.wheelEvent=e=>{this.semaphores.wheelTimeout&&clearTimeout(this.semaphores.wheelTimeout),this.semaphores.hoverSleep&&this.excalidrawAPI&&this.clearHoverPreview(),this.semaphores.wheelTimeout=setTimeout((()=>{clearTimeout(this.semaphores.wheelTimeout),this.semaphores.wheelTimeout=null}),1e3)},this.containerEl.addEventListener("wheel",this.wheelEvent,{passive:!1}),this.addAction("ScriptEngine",t$d("INSTALL_SCRIPT_BUTTON"),(()=>{new ScriptInstallPrompt(this.plugin).open()})),this.diskIcon=this.addAction("save",t$d("FORCE_SAVE"),(async()=>this.forceSave())),this.textIsRaw_Element=this.addAction("presentation",t$d("RAW"),(()=>this.changeTextMode(TextMode.parsed))),this.textIsParsed_Element=this.addAction("quote-glyph",t$d("PARSED"),(()=>this.changeTextMode(TextMode.raw))),this.linkAction_Element=this.addAction("link",t$d("OPEN_LINK"),(e=>this.handleLinkClick(e)));const n=this;app.workspace.onLayoutReady((async()=>{this.canvasNodeFactory.initialize(),n.contentEl.addClass("excalidraw-view"),await n.addSlidingPanesListner(),n.addParentMoveObserver(),n.onKeyUp=e=>{n.modifierKeyDown={shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey}},n.onKeyDown=e=>{this.modifierKeyDown={shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey}},n.ownerWindow.addEventListener("keydown",n.onKeyDown,!1),n.ownerWindow.addEventListener("keyup",n.onKeyUp,!1)})),this.setupAutosaveTimer(),super.onload()}async addSlidingPanesListner(){if(!this.plugin.settings.slidingPanesSupport)return;const e=this;this.slidingPanesListner=()=>{e.excalidrawAPI&&e.refresh()};let t=this.app.workspace.rootSplit;for(;!t;)await sleep(50),t=this.app.workspace.rootSplit;t.containerEl.addEventListener("scroll",this.slidingPanesListner)}removeSlidingPanesListner(){var e;this.slidingPanesListner&&(null===(e=app.workspace.rootSplit.containerEl)||void 0===e||e.removeEventListener("scroll",this.slidingPanesListner))}addParentMoveObserver(){var e;const t=null!==(e=getParentOfClass(this.containerEl,"popover"))&&void 0!==e?e:getParentOfClass(this.containerEl,"workspace-leaf");if(!t)return;const n=t.classList.contains("popover");this.offsetLeft=t.offsetLeft,this.offsetTop=t.offsetTop;const r=this;this.parentMoveObserver=new MutationObserver((async e=>{const t=e[0].target;if(!(t instanceof HTMLElement))return;const{offsetLeft:n,offsetTop:i}=t;n===r.offsetLeft&&i==r.offsetTop||(r.excalidrawAPI&&r.refresh(),r.offsetLeft=n,r.offsetTop=i)})),this.parentMoveObserver.observe(t,{attributeOldValue:!0,attributeFilter:n?["data-x","data-y"]:["class","style"]})}removeParentMoveObserver(){this.parentMoveObserver&&this.parentMoveObserver.disconnect()}setTheme(e){const t=this.excalidrawAPI;if(!t)return;if(this.file&&hasExportTheme(this.plugin,this.file))return;const n=t.getAppState();this.excalidrawData.scene.theme=e,this.updateScene({appState:Object.assign(Object.assign({},n),{theme:e}),commitToHistory:!1})}async changeTextMode(e,t=!0){if(this.compatibilityMode)return;if(this.blockTextModeChange)return;this.blockTextModeChange=!0,this.textMode=e,e===TextMode.parsed?(this.textIsRaw_Element.hide(),this.textIsParsed_Element.show()):(this.textIsRaw_Element.show(),this.textIsParsed_Element.hide()),this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.setPreviewMode(e===TextMode.parsed);const n=this.excalidrawAPI;n&&t&&(await this.save(),this.preventAutozoom(),await this.excalidrawData.loadData(this.data,this.file,this.textMode),this.excalidrawData.scene.appState.theme=n.getAppState().theme,await this.loadDrawing(!1),n.history.clear()),this.prevTextMode=this.textMode,this.blockTextModeChange=!1}setupAutosaveTimer(){const e=async()=>{var t;if(!this.isLoaded)return void(this.autosaveTimer=setTimeout(e,this.plugin.settings.autosaveInterval));const n=this.excalidrawAPI;if(!n)return void warningUnknowSeriousError();const r=n.getAppState(),i=null!==r.editingElement;if(this.refresh(),!this.semaphores.dirty||this.semaphores.dirty!=(null===(t=this.file)||void 0===t?void 0:t.path)||!this.plugin.settings.autosave||this.semaphores.forceSaving||this.semaphores.autosaving||this.semaphores.embeddableIsEditingSelf||i||null!==r.draggingElement)this.autosaveTimer=setTimeout(e,this.plugin.activeExcalidrawView===this&&this.semaphores.dirty&&this.plugin.settings.autosave?1e3:this.plugin.settings.autosaveInterval);else{if(this.autosaveTimer=null,this.excalidrawAPI){this.semaphores.autosaving=!0;const e=this;this.save().then((()=>e.semaphores.autosaving=!1))}this.autosaveTimer=setTimeout(e,this.plugin.settings.autosaveInterval)}};this.autosaveFunction=e,this.autosaveTimer&&(clearTimeout(this.autosaveTimer),this.autosaveTimer=null),this.autosaveTimer=setTimeout(e,this.plugin.settings.autosaveInterval)}onunload(){var e,t,n,r,i,o,a;if(this.restoreMobileLeaves(),this.semaphores.viewunload=!0,this.semaphores.popoutUnload=this.ownerDocument!==document&&0===this.ownerDocument.body.querySelectorAll(".workspace-tab-header").length,null===(e=this.ownerWindow)||void 0===e||e.removeEventListener("keydown",this.onKeyDown,!1),null===(t=this.ownerWindow)||void 0===t||t.removeEventListener("keyup",this.onKeyUp,!1),this.containerEl.removeEventListener("wheel",this.wheelEvent,!1),this.getHookServer().onViewUnloadHook)try{this.getHookServer().onViewUnloadHook(this)}catch(e){errorlog({where:"ExcalidrawView.onunload",fn:this.getHookServer().onViewUnloadHook,error:e})}const s=null===(r=null===(n=this.containerEl)||void 0===n?void 0:n.ownerDocument)||void 0===r?void 0:r.body.querySelector("body>div.excalidraw-tooltip,div.excalidraw-tooltip--visible");s&&(null===(o=null===(i=this.containerEl)||void 0===i?void 0:i.ownerDocument)||void 0===o||o.body.removeChild(s)),this.removeParentMoveObserver(),this.removeSlidingPanesListner(),this.autosaveTimer&&(clearInterval(this.autosaveTimer),this.autosaveTimer=null);const l=null===(a=this.file)||void 0===a?void 0:a.path,c=this.plugin;l&&setTimeout((()=>{c.triggerEmbedUpdates(l)}),300)}async reload(e=!1,t){const n=t&&t===this.file;if(this.semaphores.embeddableIsEditingSelf)return this.editingSelfResetTimer&&(this.clearEmbeddableIsEditingSelfTimer(),this.semaphores.embeddableIsEditingSelf=!1),void(n&&(this.data=await this.app.vault.read(this.file)));if(this.semaphores.preventReload)return void(this.semaphores.preventReload=!1);if(this.semaphores.saving)return;if(this.lastLoadedFile=null,this.diskIcon.querySelector("svg").removeClass("excalidraw-dirty"),this.compatibilityMode)return void this.clearDirty();const r=this.excalidrawAPI;this.file&&r&&(n&&(this.data=await this.app.vault.read(t),this.preventAutozoom()),e?await this.excalidrawData.loadData(this.data,this.file,this.textMode):await this.excalidrawData.setTextMode(this.textMode),this.excalidrawData.scene.appState.theme=r.getAppState().theme,await this.loadDrawing(n),this.clearDirty())}async zoomToElementId(e,t){let n=0;for(;!this.excalidrawAPI&&n++<100;)await sleep(50);const r=this.excalidrawAPI;if(!r)return;const i=r.getSceneElements();let o=i.filter((t=>t.id===e));if(0===o.length){const t=getFrameBasedOnFrameNameOrId(e,i);if(!t)return;o=[t]}if(t){const e=this.plugin.ea.getElementsInTheSameGroupWithElement(o[0],i);e.length>0&&(o=e)}this.preventAutozoom(),this.zoomToElements(!r.getAppState().viewModeEnabled,o)}setEphemeralState(e){if(!e)return;const t=this;let n=null;e.match&&e.match.content&&e.match.matches&&1===e.match.matches.length&&2===e.match.matches[0].length&&(n=[e.match.content.substring(e.match.matches[0][0],e.match.matches[0][1])]);const r=async()=>{var e,n;let r=0;for(;(t.semaphores.justLoaded||!t.isLoaded||!t.excalidrawAPI||(null===(n=null===(e=t.excalidrawAPI)||void 0===e?void 0:e.getAppState())||void 0===n?void 0:n.isLoading))&&r++<100;)await sleep(50)},i=getEmbeddedFilenameParts(e.subpath);i.hasBlockref&&setTimeout((async()=>{await r(),setTimeout((()=>t.zoomToElementId(i.blockref,i.hasGroupref)))})),i.hasSectionref?n=[`# ${i.sectionref}`]:e.line&&e.line>0&&(n=[this.data.split("\n")[e.line-1]]),n&&setTimeout((async()=>{await r();const e=t.excalidrawAPI;if(!e)return;if(e.getAppState().isLoading)return;const o=e.getSceneElements();if(1===n.length&&n[0].startsWith("[")){let r=REGEX_LINK.getResList(n[0])[0];if(r){const n=REGEX_LINK.getLink(r);if(n){const r=t.plugin.app.metadataCache.getFirstLinkpathDest(n,t.file.path);if(r){let n=[];if(t.excalidrawData.files.forEach(((e,t)=>{var i;(null===(i=e.file)||void 0===i?void 0:i.path)===r.path&&n.push(t)})),n.length>0){const r=o.filter((e=>"image"===e.type&&n.includes(e.fileId)));r.length>0&&(this.preventAutozoom(),setTimeout((()=>t.zoomToElements(!e.getAppState().viewModeEnabled,r))))}}}}}t.selectElementsMatchingQuery(o,n,!e.getAppState().viewModeEnabled,i.hasSectionref,i.hasGroupref)})),super.setEphemeralState(e)}clear(){this.canvasNodeFactory.purgeNodes(),this.embeddableRefs.clear(),this.embeddableLeafRefs.clear(),delete this.exportDialog;const e=this.excalidrawAPI;e&&(this.activeLoader&&(this.activeLoader.terminate=!0,this.activeLoader=null),this.nextLoader=null,e.resetScene(),this.previousSceneVersion=0)}async setViewData(e,t=!1){if(this.lastLoadedFile!==this.file&&(this.isLoaded=!1,this.file)){if(this.plugin.settings.showNewVersionNotification&&checkExcalidrawVersion(app),isMaskFile(this.plugin,this.file)){const e=new obsidian_module.Notice(t$d("MASK_FILE_NOTICE"),5e3);let t=null;e.noticeEl.addEventListener("pointerdown",(e=>{t=setTimeout((()=>{window.open("https://youtu.be/uHFd0XoHRxE")}),1e3)})),e.noticeEl.addEventListener("pointerup",(e=>{clearTimeout(t)}))}t&&this.clear(),this.lastSaveTimestamp=this.file.stat.mtime,this.lastLoadedFile=this.file,e=this.data=e.replaceAll("\r\n","\n").replaceAll("\r","\n"),app.workspace.onLayoutReady((async()=>{if(this.compatibilityMode="excalidraw"===this.file.extension,await this.plugin.loadSettings(),this.compatibilityMode)this.plugin.enableLegacyFilePopoverObserver(),this.textIsRaw_Element.hide(),this.textIsParsed_Element.hide(),this.linkAction_Element.hide(),this.textMode=TextMode.raw,await this.excalidrawData.loadLegacyData(e,this.file),this.plugin.settings.compatibilityMode||new obsidian_module.Notice(t$d("COMPATIBILITY_MODE"),4e3),this.excalidrawData.disableCompression=!0;else{this.linkAction_Element.show(),this.excalidrawData.disableCompression=!1;const t=getTextMode(e);this.changeTextMode(t,!1);try{if(!await this.excalidrawData.loadData(e,this.file,this.textMode))return}catch(e){if(errorlog({where:"ExcalidrawView.setViewData",error:e}),"iframe conversion canceled"===e.message)return void this.setMarkdownView();const t=this.file,n=this.plugin,r=this.leaf;return(async()=>{let i=!0,o=0;const a=Date.now();for(;!imageCache.isReady()&&i;){const e=`You've been now waiting for <b>${Math.round((Date.now()-a)/1e3)}</b> seconds. `;imageCache.initializationNotice=!0;const t=new ConfirmationPrompt(n,`${o>0?o%4==0?e+"The CACHE is still loading.<br><br>":o%4==1?e+"Watch the top right corner for the notification.<br><br>":o%4==2?e+"I really, really hope the backup will work for you! <br><br>":e+"I am sorry, it is taking a while, there is not much I can do... <br><br>":""}${t$d("CACHE_NOT_READY")}`);i=await t.waitForClose,o++}const s=await imageCache.getBAKFromCache(t.path);s?new ConfirmationPrompt(n,t$d("BACKUP_AVAILABLE")).waitForClose.then((async e=>{e&&(await app.vault.modify(t,s),n.excalidrawFileModes[r.id||t.path]="excalidraw",n.setExcalidrawView(r))})):new obsidian_module.Notice(`Error loading drawing:\n${e.message}${"Cannot read property 'index' of undefined"===e.message?"\n'# Drawing' section is likely missing":""}\n\nTry manually fixing the file or restoring an earlier version from sync history.`,1e4)})(),void this.setMarkdownView()}}if(await this.loadDrawing(!0),this.plugin.ea.onFileOpenHook)try{await this.plugin.ea.onFileOpenHook({ea:getEA(this),excalidrawFile:this.file,view:this})}catch(e){errorlog({where:"ExcalidrawView.setViewData.onFileOpenHook",error:e})}const t=this.excalidrawData.getOnLoadScript();if(t){const e=this,n=this.file.basename+"-onlaod-script",r=()=>{e.excalidrawAPI?e.plugin.scriptEngine.executeScript(e,t,n,this.file):setTimeout(r,200)};r()}this.isLoaded=!0}))}}getGridColor(e,t){const n=this.plugin.ea.getCM(e),r=n.isDark(),i=(r?n.lighterBy(7):n.darkerBy(7)).stringHEX();return{Bold:(r?n.lighterBy(14):n.darkerBy(14)).stringHEX(),Regular:i,MajorGridFrequency:t.gridColor.MajorGridFrequency}}async loadSceneFiles(){if(!this.excalidrawAPI)return;const e=new EmbeddedFilesLoader(this.plugin),t=e=>{this.nextLoader=null,this.activeLoader=e,e.loadSceneFiles(this.excalidrawData,((e,n,r=!0)=>{e&&(addFiles(e,this,n),r&&(this.activeLoader=null,this.nextLoader?t(this.nextLoader):this.excalidrawData.getFiles().some((e=>{if(e&&!e.file&&e.attemptCounter<30){const e=this,t=this.file.path;return setTimeout((async()=>{e&&e.excalidrawAPI&&t===e.file.path&&e.loadSceneFiles()}),2e3),!0}return!1}))))}),0)};this.activeLoader?this.nextLoader=e:t(e)}async synchronizeWithData(e){if(this.semaphores.embeddableIsEditingSelf)return;let t=0;for(;this.semaphores.saving&&t++<30;)await sleep(100);if(t>=30)return void errorlog({where:"ExcalidrawView.synchronizeWithData",message:`Aborting sync with received file (${this.file.path}) because semaphores.saving remained true for ower 3 seconds`,fn:this.synchronizeWithData});this.semaphores.saving=!0;let n=!1;try{const t=e.deletedElements.map((e=>e.id)),r=this.excalidrawAPI.getSceneElementsIncludingDeleted().filter((e=>!t.contains(e.id))),i=r.map((e=>e.id)),o=t=>{switch(t.type){case"text":this.excalidrawData.textElements.set(t.id,e.textElements.get(t.id));break;case"image":e.getFile(t.fileId)?(this.excalidrawData.setFile(t.fileId,e.getFile(t.fileId)),n=!0):e.getEquation(t.fileId)&&(this.excalidrawData.setEquation(t.fileId,e.getEquation(t.fileId)),n=!0)}e.elementLinks.has(t.id)&&this.excalidrawData.elementLinks.set(t.id,e.elementLinks.get(t.id))};e.scene.elements.forEach(((t,a,s)=>{const l=r.filter((e=>e.id===t.id))[0];if(l&&(l.version<t.version||l.version===t.version&&JSON.stringify(l)!==JSON.stringify(t))){o(t);const e=i.indexOf(t.id);if(r.splice(e,1),0===a)r.splice(0,0,t),0!==e&&(i.splice(e,1),i.splice(0,0,t.id));else{const n=s[a-1].id,o=i.indexOf(n);r.splice(o+1,0,t),o!==e-1&&(i.splice(e,1),i.splice(o+1,0,t.id))}}else if(l)l&&"image"===t.type&&e.getFile(t.fileId)&&(this.excalidrawData.setFile(t.fileId,e.getFile(t.fileId)),n=!0);else if(o(t),0===a)r.splice(0,0,t),i.splice(0,0,t.id);else{const e=s[a-1].id,n=i.indexOf(e);r.splice(n+1,0,t),i.splice(n+1,0,t.id)}})),this.previousSceneVersion=this.getSceneVersion(r),this.getSceneVersion(e.scene.elements)!==this.previousSceneVersion&&this.setDirty(3),this.updateScene({elements:r}),n&&this.loadSceneFiles()}catch(e){errorlog({where:"ExcalidrawView.synchronizeWithData",message:`Error during sync with received file (${this.file.path})`,fn:this.synchronizeWithData,error:e})}this.semaphores.saving=!1}async loadDrawing(e,t){var n,r;const i=this.excalidrawData.scene;this.semaphores.justLoaded=e,this.initialContainerSizeUpdate=e,this.clearDirty();const o=this.excalidrawData.getOpenMode();this.semaphores.preventReload=!1;const a="always"===this.plugin.settings.defaultPenMode||"mobile"===this.plugin.settings.defaultPenMode&&app.isMobile,s=this.excalidrawAPI;if(s){const l=this.isLoaded?s.getAppState().viewModeEnabled:i.elements.length>0&&o.viewModeEnabled,c=this.isLoaded?s.getAppState().zenModeEnabled:o.zenModeEnabled;s.setLocalFont(this.plugin.settings.experimentalEnableFourthFont),this.updateScene({elements:i.elements.concat(null!=t?t:[]),files:i.files,commitToHistory:!0},e),this.updateScene({appState:Object.assign(Object.assign(Object.assign({},i.appState),this.excalidrawData.selectedElementIds?this.excalidrawData.selectedElementIds:{}),{zenModeEnabled:c,viewModeEnabled:l,linkOpacity:this.excalidrawData.getLinkOpacity(),trayModeEnabled:this.plugin.settings.defaultTrayMode,penMode:a,penDetected:a,allowPinchZoom:this.plugin.settings.allowPinchZoom,allowWheelZoom:this.plugin.settings.allowWheelZoom,pinnedScripts:this.plugin.settings.pinnedScripts,customPens:this.plugin.settings.customPens.slice(0,this.plugin.settings.numberOfCustomPens)})}),this.app.workspace.getActiveViewOfType(ExcalidrawView)===this.leaf.view&&this.excalidrawWrapperRef&&(null===(r=null===(n=this.excalidrawWrapperRef.current)||void 0===n?void 0:n.firstElementChild)||void 0===r||r.focus()),this.onAfterLoadScene()}else this.instantiateExcalidraw({elements:i.elements,appState:Object.assign(Object.assign({},i.appState),{zenModeEnabled:o.zenModeEnabled,viewModeEnabled:i.elements.length>0&&o.viewModeEnabled,linkOpacity:this.excalidrawData.getLinkOpacity(),trayModeEnabled:this.plugin.settings.defaultTrayMode,penMode:a,penDetected:a,allowPinchZoom:this.plugin.settings.allowPinchZoom,allowWheelZoom:this.plugin.settings.allowWheelZoom,pinnedScripts:this.plugin.settings.pinnedScripts,customPens:this.plugin.settings.customPens.slice(0,this.plugin.settings.numberOfCustomPens)}),files:i.files,libraryItems:await this.getLibrary()});const l=null!==this.data.match(/```compressed\-json\n/gm);this.compatibilityMode||this.plugin.settings.compress===l||this.isEditedAsMarkdownInOtherView()||this.setDirty(4)}isEditedAsMarkdownInOtherView(){return app.workspace.getLeavesOfType("markdown").filter((e=>e.view.file===this.file)).length>0}onAfterLoadScene(){this.loadSceneFiles(),this.updateContainerSize(null,!0),this.initializeToolsIconPanelAfterLoading()}setDirty(e){var t,n;this.semaphores.dirty=null===(t=this.file)||void 0===t?void 0:t.path,this.diskIcon.querySelector("svg").addClass("excalidraw-dirty"),!this.semaphores.viewunload&&(null===(n=this.toolsPanelRef)||void 0===n?void 0:n.current)&&this.toolsPanelRef.current.setDirty(!0),this.app.isMobile||obsidian_module.requireApiVersion("0.16.0")&&(this.leaf.tabHeaderInnerTitleEl.style.color="var(--color-accent)")}clearDirty(){var e;if(this.semaphores.viewunload)return;const t=this.excalidrawAPI;if(!t)return;this.semaphores.dirty=null,(null===(e=this.toolsPanelRef)||void 0===e?void 0:e.current)&&this.toolsPanelRef.current.setDirty(!1);const n=t.getSceneElements();n&&(this.previousSceneVersion=this.getSceneVersion(n)),this.diskIcon.querySelector("svg").removeClass("excalidraw-dirty"),app.isMobile||obsidian_module.requireApiVersion("0.16.0")&&(this.leaf.tabHeaderInnerTitleEl.style.color="")}initializeToolsIconPanelAfterLoading(){var e;if(this.semaphores.viewunload)return;const t=this.excalidrawAPI;if(!t)return;const n=t.getAppState(),r=null===(e=this.toolsPanelRef)||void 0===e?void 0:e.current;r&&(r.setTheme(n.theme),r.setExcalidrawViewMode(n.viewModeEnabled),r.setPreviewMode(this.compatibilityMode?null:this.textMode===TextMode.parsed),r.updateScriptIconMap(this.plugin.scriptEngine.scriptIconMap))}canAcceptExtension(e){return"excalidraw"===e}getDisplayText(){return this.file?this.file.basename:t$d("NOFILE")}getViewType(){return"excalidraw"}getIcon(){return ICON_NAME}setMarkdownView(){this.plugin.excalidrawFileModes[this.id||this.file.path]="markdown",this.plugin.setMarkdownView(this.leaf)}async openAsMarkdown(){!0===this.plugin.settings.compress&&(this.excalidrawData.disableCompression=!0,await this.save(!0,!0)),this.setMarkdownView()}async convertExcalidrawToMD(){await this.save(),this.plugin.openDrawing(await this.plugin.convertSingleExcalidrawToMD(this.file),"active-pane",!0)}convertTextElementToMarkdown(e,t){e&&new Prompt(this.app,"Filename","","Leave blank to cancel this action").openAndGetValue((async n=>{if(!n)return;n=`${n}.md`;const r=splitFolderAndFilename(this.file.path).folderpath;await checkAndCreateFolder(r);const i=getNewUniqueFilepath(this.app.vault,n,r),o=[];t&&t.link&&o.push(t.link),o.push(e.rawText);const a=await this.app.vault.create(i,o.join("\n"));if(a){const n=getEA(this),r=t?[e,t]:[e];n.copyViewElementsToEAforEditing(r),n.getElements().forEach((e=>e.isDeleted=!0));const[i,o,s,l]=t?[t.x,t.y,t.width,t.height]:[e.x,e.y,500,500],c=n.addEmbeddable(i,o,s,l,void 0,a);t&&["backgroundColor","fillStyle","roughness","roundness","strokeColor","strokeStyle","strokeWidth"].forEach((e=>{n.getElement(c)[e]=t[e]})),n.getElement(c),n.addElementsToView()}}))}async addYouTubeThumbnail(e){const t=await getYouTubeThumbnailLink(e),n=getEA(this),r=await n.addImage(0,0,t);n.getElement(r).link=e,n.addElementsToView(!0,!0,!0)}async addImageWithURL(e){const t=getEA(this);await t.addImage(0,0,e),t.addElementsToView(!0,!0,!0)}async addImageSaveToVault(e){const t=getEA(this),n=getMimeType(getURLImageExtension(e)),r=await getDataURLFromURL(e,n,3e3),i=await generateIdFromFile((new TextEncoder).encode(r)),o=await this.excalidrawData.saveDataURLtoVault(r,n,i);o?(await t.addImage(0,0,o),t.addElementsToView(!0,!0,!0)):new obsidian_module.Notice(t$d("ERROR_SAVING_IMAGE"))}async addTextWithIframely(e){var t;const n=await this.addText(e),r=`http://iframely.server.crestify.com/iframely?url=${e}`;try{const i=JSON.parse(await obsidian_module.request({url:r}));if(!i||i.error||!(null===(t=i.meta)||void 0===t?void 0:t.title))return;const o=getEA(this),a=o.getViewElements().filter((e=>e.id===n));1===a.length&&(a[0].text=a[0].originalText=a[0].rawText=`[${i.meta.title}](${e})`,o.copyViewElementsToEAforEditing(a),o.addElementsToView(!1,!1,!1))}catch(e){}}onPaneMenu(e,t){this.excalidrawAPI&&this.getViewSelectedElements().some((e=>"text"===e.type))&&e.addItem((e=>{e.setTitle(t$d("OPEN_LINK")).setIcon("external-link").setSection("pane").onClick((e=>{this.handleLinkClick(e)}))})),this.compatibilityMode?e.addItem((e=>{e.setTitle(t$d("CONVERT_FILE")).onClick((()=>this.convertExcalidrawToMD())).setSection("pane")})):e.addItem((e=>{e.setTitle(t$d("OPEN_AS_MD")).setIcon("document").onClick((()=>{this.openAsMarkdown()})).setSection("pane")})),e.addItem((e=>{e.setTitle(t$d("EXPORT_IMAGE")).setIcon("export-img").setSection("pane").onClick((async e=>{this.excalidrawAPI&&this.file&&(this.exportDialog||(this.exportDialog=new ExportDialog(this.plugin,this,this.file),this.exportDialog.createForm()),this.exportDialog.open())})).setSection("pane")})).addItem((e=>{e.setTitle(t$d("INSTALL_SCRIPT_BUTTON")).setIcon("ScriptEngine").setSection("pane").onClick((()=>{new ScriptInstallPrompt(this.plugin).open()}))})),super.onPaneMenu(e,t)}async getLibrary(){var e;const t=this.plugin.getStencilLibrary();return(null==t?void 0:t.library)?t.library:null!==(e=null==t?void 0:t.libraryItems)&&void 0!==e?e:[]}setCurrentPositionToCenter(){const e=this.excalidrawAPI;if(!e)return;const t=e.getAppState(),{width:n,height:r,offsetLeft:i,offsetTop:o}=t;this.currentPosition=viewportCoordsToSceneCoords({clientX:n/2+i,clientY:r/2+o},t)}getSelectedTextElement(){var e;const t=this.excalidrawAPI;if(!t)return{id:null,text:null};if(t.getAppState().viewModeEnabled&&this.selectedTextElement){const e=this.selectedTextElement;return this.selectedTextElement=null,e}const n=t.getSceneElements().filter((e=>e.id===Object.keys(t.getAppState().selectedElementIds)[0]));if(0===n.length)return{id:null,text:null};if("text"===n[0].type)return{id:n[0].id,text:n[0].text};if(["image","arrow"].contains(n[0].type))return{id:null,text:null};const r=null===(e=n[0].boundElements)||void 0===e?void 0:e.filter((e=>"text"===e.type));if((null==r?void 0:r.length)>0){const e=t.getSceneElements().filter((e=>e.id===r[0].id));if(e.length>0)return{id:e[0].id,text:e[0].text}}if(0===n[0].groupIds.length)return{id:null,text:null};const i=n[0].groupIds[0],o=t.getSceneElements().filter((e=>{var t;return null===(t=e.groupIds)||void 0===t?void 0:t.includes(i)})).filter((e=>"text"===e.type));return 0===o.length?{id:null,text:null}:{id:n[0].id,text:n[0].text}}getSelectedImageElement(){const e=this.excalidrawAPI;if(!e)return{id:null,fileId:null};if(e.getAppState().viewModeEnabled&&this.selectedImageElement){const e=this.selectedImageElement;return this.selectedImageElement=null,e}const t=e.getSceneElements().filter((t=>t.id==Object.keys(e.getAppState().selectedElementIds)[0]));if(0===t.length)return{id:null,fileId:null};if("image"==t[0].type)return{id:t[0].id,fileId:t[0].fileId};if("text"===t[0].type)return{id:null,fileId:null};if(0===t[0].groupIds.length)return{id:null,fileId:null};const n=t[0].groupIds[0],r=e.getSceneElements().filter((e=>{var t;return null===(t=e.groupIds)||void 0===t?void 0:t.includes(n)})).filter((e=>"image"==e.type));return 0===r.length?{id:null,fileId:null}:{id:r[0].id,fileId:r[0].fileId}}getSelectedElementWithLink(){const e=this.excalidrawAPI;if(!e)return{id:null,text:null};if(e.getAppState().viewModeEnabled&&this.selectedElementWithLink){const e=this.selectedElementWithLink;return this.selectedElementWithLink=null,e}const t=e.getSceneElements().filter((t=>t.id==Object.keys(e.getAppState().selectedElementIds)[0]));if(0===t.length)return{id:null,text:null};if(t[0].link)return{id:t[0].id,text:t[0].link};if(0===t[0].groupIds.length)return{id:null,text:null};const n=t[0].groupIds[0],r=e.getSceneElements().filter((e=>{var t;return null===(t=e.groupIds)||void 0===t?void 0:t.includes(n)})).filter((e=>e.link));return 0===r.length?{id:null,text:null}:{id:r[0].id,text:r[0].link}}async addLink(e,t,n){const r=this.excalidrawAPI,i=r.getAppState();if(!i.selectedElementIds||i.selectedElementIds&&1!==Object.keys(i.selectedElementIds).length)return void this.addText(e);const o=Object.keys(r.getAppState().selectedElementIds)[0],a=r.getSceneElements().find((e=>e.id===o));if(!a||a&&null!==a.link)return a&&new obsidian_module.Notice("Selected element already has a link. Inserting link as text."),void this.addText(e);const s=getEA(this);s.copyViewElementsToEAforEditing([a]),s.getElement(o).link=e,s.addElementsToView(!1,!0)}async addText(e,t,n=!0){var r,i,o,a,s;const l=this.excalidrawAPI;if(!l)return;const c=l.getAppState(),T=this.plugin.ea.getAPI(this);T.style.strokeColor=null!==(r=c.currentItemStrokeColor)&&void 0!==r?r:"black",T.style.opacity=null!==(i=c.currentItemOpacity)&&void 0!==i?i:1,T.style.fontFamily=null!==(o=null!=t?t:c.currentItemFontFamily)&&void 0!==o?o:1,T.style.fontSize=null!==(a=c.currentItemFontSize)&&void 0!==a?a:20,T.style.textAlign=null!==(s=c.currentItemTextAlign)&&void 0!==s?s:"left";const{width:Q,height:d}=c,u=viewportCoordsToSceneCoords({clientX:0,clientY:0},c),p=viewportCoordsToSceneCoords({clientX:Q,clientY:d},c),h=u.x>this.currentPosition.x||p.x<this.currentPosition.x||u.y>this.currentPosition.y||p.y<this.currentPosition.y,m=T.addText(this.currentPosition.x,this.currentPosition.y,e);return await this.addElements(T.getElements(),h,n,void 0,!0),m}async addElements(e,t=!1,n=!1,r,i=!1,o=!1){const a=this.excalidrawAPI;if(!a)return!1;const s=e.filter((e=>"text"==e.type));for(let e=0;e<s.length;e++){const[t,n,r]=await this.excalidrawData.addTextElement(s[e].id,s[e].text,s[e].rawText);r&&(s[e].link=r),this.textMode==TextMode.parsed&&this.excalidrawData.updateTextElement(s[e],t,n)}t&&(e=repositionElementsToCursor(e,this.currentPosition,!0));const l=e.map((e=>e.id)),c=a.getSceneElements(),T=[];for(let t=0;t<c.length;t++){const n=c[t].id;l.includes(n)&&(c[t]=e.filter((e=>e.id===n))[0],T.push(n))}const Q=i?c.concat(e.filter((e=>!T.includes(e.id)))):e.filter((e=>!T.includes(e.id))).concat(c);if(this.updateScene({elements:Q,commitToHistory:!0},o),r&&Object.keys(r).length>0){const e=[];Object.keys(r).forEach((t=>{if(e.push({mimeType:r[t].mimeType,id:r[t].id,dataURL:r[t].dataURL,created:r[t].created}),r[t].file||r[t].isHyperLink||r[t].isLocalLink){const e=new EmbeddedFile(this.plugin,this.file.path,r[t].isHyperLink&&!r[t].isLocalLink?r[t].hyperlink:r[t].file),n=a.getAppState();e.setImage(r[t].dataURL,r[t].mimeType,r[t].size,"dark"===n.theme,r[t].hasSVGwithBitmap),this.excalidrawData.setFile(r[t].id,e)}r[t].latex&&this.excalidrawData.setEquation(r[t].id,{latex:r[t].latex,isLoaded:!0})})),a.addFiles(e)}return a.updateContainerSize(a.getSceneElements().filter((e=>l.includes(e.id))).filter(isContainer)),n?await this.save(!1):this.setDirty(5),!0}getScene(e){const t=this.excalidrawAPI;if(!t)return null;const n=e?this.getViewSelectedElements():t.getSceneElements(),r=t.getAppState(),i=Object.assign({},t.getFiles());if(i){const e=n.filter((e=>"image"===e.type)).map((e=>e.fileId)),t=Object.keys(i).filter((t=>!e.contains(t)));t.forEach((e=>delete i[e]))}return{type:"excalidraw",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,elements:n,appState:{theme:r.theme,viewBackgroundColor:r.viewBackgroundColor,currentItemStrokeColor:r.currentItemStrokeColor,currentItemBackgroundColor:r.currentItemBackgroundColor,currentItemFillStyle:r.currentItemFillStyle,currentItemStrokeWidth:r.currentItemStrokeWidth,currentItemStrokeStyle:r.currentItemStrokeStyle,currentItemRoughness:r.currentItemRoughness,currentItemOpacity:r.currentItemOpacity,currentItemFontFamily:r.currentItemFontFamily,currentItemFontSize:r.currentItemFontSize,currentItemTextAlign:r.currentItemTextAlign,currentItemStartArrowhead:r.currentItemStartArrowhead,currentItemEndArrowhead:r.currentItemEndArrowhead,scrollX:r.scrollX,scrollY:r.scrollY,zoom:r.zoom,currentItemRoundness:r.currentItemRoundness,gridSize:r.gridSize,gridColor:r.gridColor,colorPalette:r.colorPalette,currentStrokeOptions:r.currentStrokeOptions,previousGridSize:r.previousGridSize,frameRendering:r.frameRendering},prevTextMode:this.prevTextMode,files:i}}refresh(){if(0===this.contentEl.clientWidth||0===this.contentEl.clientHeight)return;const e=this.excalidrawAPI;e&&e.refresh()}clearHoverPreview(){if(this.hoverPreviewTarget){const e=new MouseEvent("click",{view:this.ownerWindow,bubbles:!0,cancelable:!0});this.hoverPreviewTarget.dispatchEvent(e),this.hoverPreviewTarget=null}}dropAction(e){var t,n,r,i,o;const a=null===(t=app.dragManager.draggable)||void 0===t?void 0:t.files;return a&&a[0]==this.file&&(a.shift(),this.app.dragManager.draggable.title=`${a.length} files`),["file","files"].includes(null===(n=this.app.dragManager.draggable)||void 0===n?void 0:n.type)?"link":(null===(r=e.types)||void 0===r?void 0:r.includes("text/html"))||(null===(i=e.types)||void 0===i?void 0:i.includes("text/plain"))||(null===(o=e.types)||void 0===o?void 0:o.includes("Files"))?"copy":void 0}identifyElementClicked(){if(this.selectedTextElement=getTextElementAtPointer(this.currentPosition,this),this.selectedTextElement&&this.selectedTextElement.id){const e=new MouseEvent("click",{ctrlKey:!(DEVICE.isIOS||DEVICE.isMacOS)||this.modifierKeyDown.ctrlKey,metaKey:DEVICE.isIOS||DEVICE.isMacOS||this.modifierKeyDown.metaKey,shiftKey:this.modifierKeyDown.shiftKey,altKey:this.modifierKeyDown.altKey});return this.handleLinkClick(e),void(this.selectedTextElement=null)}if(this.selectedImageElement=getImageElementAtPointer(this.currentPosition,this),this.selectedImageElement&&this.selectedImageElement.id){const e=new MouseEvent("click",{ctrlKey:!(DEVICE.isIOS||DEVICE.isMacOS)||this.modifierKeyDown.ctrlKey,metaKey:DEVICE.isIOS||DEVICE.isMacOS||this.modifierKeyDown.metaKey,shiftKey:this.modifierKeyDown.shiftKey,altKey:this.modifierKeyDown.altKey});return this.handleLinkClick(e),void(this.selectedImageElement=null)}if(this.selectedElementWithLink=getElementWithLinkAtPointer(this.currentPosition,this),this.selectedElementWithLink&&this.selectedElementWithLink.id){const e=new MouseEvent("click",{ctrlKey:!(DEVICE.isIOS||DEVICE.isMacOS)||this.modifierKeyDown.ctrlKey,metaKey:DEVICE.isIOS||DEVICE.isMacOS||this.modifierKeyDown.metaKey,shiftKey:this.modifierKeyDown.shiftKey,altKey:this.modifierKeyDown.altKey});return this.handleLinkClick(e),void(this.selectedElementWithLink=null)}}showHoverPreview(e,t){var n;if(!this.lastMouseEvent)return;const r=null===(n=this.excalidrawAPI)||void 0===n?void 0:n.getAppState();if((null==r?void 0:r.editingElement)||(null==r?void 0:r.draggingElement))return;if(this.semaphores.wheelTimeout)return;if(!e){if(!this.currentPosition)return;e="";const n=getTextElementAtPointer(this.currentPosition,this);if(n&&n.text){t=this.excalidrawAPI.getSceneElements().filter((e=>e.id===n.id))[0];const r=this.textMode===TextMode.parsed?this.excalidrawData.getRawText(n.id):n.text;if(!(e=getLinkTextFromLink(r)))return}else{const n=getImageElementAtPointer(this.currentPosition,this);if(t=this.excalidrawAPI.getSceneElements().find((e=>e.id===n.id)),!n||!n.fileId)return;if(!this.excalidrawData.hasFile(n.fileId))return;const r=this.excalidrawData.getFile(n.fileId);if(r.isHyperLink||r.isLocalLink||IMAGE_TYPES.contains(r.file.extension)||"pdf"===r.file.extension.toLowerCase()||this.plugin.ea.isExcalidrawFile(r.file)){if(!(e=getLinkTextFromLink(t.link)))return}else{const t=r.linkParts.ref?`#${r.linkParts.isBlockRef?"^":""}${r.linkParts.ref}`:"";e=r.file.path+t}}}if(this.getHookServer().onLinkHoverHook)try{if(!this.getHookServer().onLinkHoverHook(t,e,this,this.getHookServer()))return}catch(e){errorlog({where:"ExcalidrawView.showHoverPreview",fn:this.getHookServer().onLinkHoverHook,error:e})}if(this.semaphores.hoverSleep)return;const i=app.metadataCache.getFirstLinkpathDest(e.split("#")[0],this.file.path);if(!i)return;if(this.ownerDocument.querySelector(`div.popover-title[data-path="${i.path}"]`))return;this.semaphores.hoverSleep=!0;const o=this;if(setTimeout((()=>o.semaphores.hoverSleep=!1),500),this.plugin.hover.linkText=e,this.plugin.hover.sourcePath=this.file.path,this.hoverPreviewTarget=this.contentEl,this.app.workspace.trigger("hover-link",{event:this.lastMouseEvent,source:"excalidraw",hoverParent:this.hoverPreviewTarget,targetEl:this.hoverPreviewTarget,linktext:this.plugin.hover.linkText,sourcePath:this.plugin.hover.sourcePath}),this.hoverPoint=this.currentPosition,this.isFullscreen()){const e=this;setTimeout((()=>{var t,n,r,o;const a=null!==(o=null===(r=null===(n=null===(t=this.ownerDocument.querySelector(`div.popover-title[data-path="${i.path}"]`))||void 0===t?void 0:t.parentElement)||void 0===n?void 0:n.parentElement)||void 0===r?void 0:r.parentElement)&&void 0!==o?o:this.ownerDocument.body.querySelector("div.popover");a&&e.contentEl.append(a)}),400)}}excalidrawDIVonKeyDown(e){e.target!==this.excalidrawWrapperRef.current&&(this.isFullscreen()&&e.keyCode===KEYCODE.ESC&&this.exitFullscreen(),!isWinCTRLorMacCMD(e)||isSHIFT(e)||isWinALTorMacOPT(e)||this.showHoverPreview())}onPointerDown(e){(isWinCTRLorMacCMD(e)||isWinMETAorMacCTRL(e))&&(!this.plugin.settings.allowCtrlClick&&isWinMETAorMacCTRL(e)||setTimeout((()=>{this.isLinkSelected()&&this.handleLinkClick(e)})))}onMouseMove(e){this.lastMouseEvent=e.nativeEvent}onMouseOver(){this.clearHoverPreview()}onDragOver(e){const t=this.dropAction(e.dataTransfer);if(t){this.draginfoDiv||(this.draginfoDiv=createDiv({cls:"excalidraw-draginfo"}),this.ownerDocument.body.appendChild(this.draginfoDiv));let n="";n=this.app.dragManager.draggable?{image:"Insert Image","image-fullsize":"Insert Image @100%",link:"Insert Link",embeddable:"Insert Interactive-Frame"}[internalDragModifierType(e)]:1===e.dataTransfer.types.length&&e.dataTransfer.types.includes("Files")?{"image-import":"Insert Image: import external or reuse existing if path in Vault","image-url":"Insert Image: with local URI or internal-link if from Vault",link:"Insert Link: local URI or internal-link if from Vault",embeddable:"Insert Interactive-Frame: local URI or internal-link if from Vault"}[localFileDragModifierType(e)]:{"image-import":"Import Image to Vault","image-url":"Insert Image or YouTube Thumbnail with URL",link:"Insert Link",embeddable:"Insert Interactive-Frame"}[webbrowserDragModifierType(e)],e.shiftKey||e.ctrlKey||e.altKey||e.metaKey||(n+=DEVICE.isMacOS||DEVICE.isIOS?"\nTry SHIFT, OPT, CTRL combinations for other drop actions":"\nTry SHIFT, CTRL, ALT combinations for other drop actions"),this.draginfoDiv.innerText!==n&&(this.draginfoDiv.innerText=n);const r=e.clientY-8*parseFloat(getComputedStyle(this.draginfoDiv).fontSize)+"px",i=e.clientX-this.draginfoDiv.clientWidth/2+"px";return this.draginfoDiv.style.top!==r&&(this.draginfoDiv.style.top=r),this.draginfoDiv.style.left!==i&&(this.draginfoDiv.style.left=i),e.dataTransfer.dropEffect=t,e.preventDefault(),!1}}onDragLeave(){this.draginfoDiv&&(this.ownerDocument.body.removeChild(this.draginfoDiv),delete this.draginfoDiv)}onPointerUpdate(e){if(this.currentPosition=e.pointer,this.hoverPreviewTarget&&(Math.abs(this.hoverPoint.x-e.pointer.x)>50||Math.abs(this.hoverPoint.y-e.pointer.y)>50)&&this.clearHoverPreview(),this.viewModeEnabled){if(!this.blockOnMouseButtonDown&&"down"===e.button){if(this.blockOnMouseButtonDown=!0,isWinCTRLorMacCMD(this.modifierKeyDown)||isWinMETAorMacCTRL(this.modifierKeyDown))return void this.identifyElementClicked();const e=Date.now();return e-this.doubleClickTimestamp<600&&e-this.doubleClickTimestamp>40&&this.identifyElementClicked(),void(this.doubleClickTimestamp=e)}"up"===e.button&&(this.blockOnMouseButtonDown=!1),(isWinCTRLorMacCMD(this.modifierKeyDown)||this.excalidrawAPI.getAppState().isViewModeEnabled&&this.plugin.settings.hoverPreviewWithoutCTRL)&&this.showHoverPreview()}}canvasColorChangeHook(e){const t="transparent"===e.viewBackgroundColor?"white":e.viewBackgroundColor;if(setTimeout((()=>this.updateScene({appState:{gridColor:this.getGridColor(t,e)}}))),setDynamicStyle(this.plugin.ea,this,t,this.plugin.settings.dynamicStyling),this.plugin.ea.onCanvasColorChangeHook)try{this.plugin.ea.onCanvasColorChangeHook(this.plugin.ea,this,e.viewBackgroundColor)}catch(e){errorlog({where:this.canvasColorChangeHook,source:this.plugin.ea.onCanvasColorChangeHook,error:e,message:"ea.onCanvasColorChangeHook exception"})}}onChange(e,t){var n,r,i,o;if(this.viewModeEnabled=t.viewModeEnabled,this.semaphores.justLoaded){if((null!==(o=null===(i=null===(r=null===(n=this.excalidrawData)||void 0===n?void 0:n.scene)||void 0===r?void 0:r.elements)||void 0===i?void 0:i.length)&&void 0!==o?o:0)>0&&0===e.length)return;return this.semaphores.justLoaded=!1,!this.semaphores.preventAutozoom&&this.plugin.settings.zoomToFitOnOpen&&this.zoomToFit(!1,!0),this.previousSceneVersion=this.getSceneVersion(e),this.previousBackgroundColor=t.viewBackgroundColor,this.previousTheme=t.theme,void this.canvasColorChangeHook(t)}if(t.theme!==this.previousTheme&&this.file===this.excalidrawData.file&&(this.previousTheme=t.theme,this.setDirty(5.1)),t.viewBackgroundColor!==this.previousBackgroundColor&&this.file===this.excalidrawData.file&&(this.previousBackgroundColor=t.viewBackgroundColor,this.setDirty(6),this.colorChangeTimer&&clearTimeout(this.colorChangeTimer),this.colorChangeTimer=setTimeout((()=>{this.canvasColorChangeHook(t),this.colorChangeTimer=null}),50)),!this.semaphores.dirty&&null===t.editingElement&&null===t.editingLinearElement){const t=this.getSceneVersion(e);(t>0||0===t&&e.length>0)&&t!==this.previousSceneVersion&&(this.previousSceneVersion=t,this.setDirty(6.1))}}onLibraryChange(e){(async()=>{const t={type:"excalidrawlib",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,libraryItems:e};this.plugin.setStencilLibrary(t),await this.plugin.saveSettings()})()}onPaste(e,t){const n=this.getHookServer();if(e&&n.onPasteHook){const r=n.onPasteHook({ea:n,payload:e,event:t,excalidrawFile:this.file,view:this,pointerPosition:this.currentPosition});if("boolean"==typeof r&&!1===r)return!1}if(!this.modifierKeyDown.ctrlKey&&null!=t&&DEVICE.isLinux)return console.debug("Prevented what is likely middle mouse button paste."),!1;if(e&&e.text&&hyperlinkIsImage(e.text))return this.addImageWithURL(e.text),!1;if(e&&e.text&&!this.modifierKeyDown.shiftKey){const t=obsidianPDFQuoteWithRef(e.text);if(t){const e=getEA(this),n=this.excalidrawAPI.getAppState(),r=n.currentItemStrokeColor,i=n.viewBackgroundColor;e.style.strokeColor="transparent"===r?e.getCM("transparent"===i?"white":i).invert().stringHEX({alpha:!1}):r,e.style.fontFamily=n.currentItemFontFamily,e.style.fontSize=n.currentItemFontSize;const o=e.measureText(t.quote),a=o.width+60,s=e.addText(this.currentPosition.x,this.currentPosition.y,t.quote,{box:!0,boxStrokeColor:"transparent",width:Math.min(500,a),height:o.height+60});return e.elementsDict[s].link=`[[${t.link}]]`,e.addElementsToView(!1,!1),!1}}if(e.elements){const e=this;setTimeout((()=>e.save(!1)),300)}return!0}async onThemeChange(e){var t,n;this.excalidrawData.scene.appState.theme=e,this.loadSceneFiles(),null===(n=null===(t=this.toolsPanelRef)||void 0===t?void 0:t.current)||void 0===n||n.setTheme(e),setTimeout((()=>setDynamicStyle(this.plugin.ea,this,this.previousBackgroundColor,this.plugin.settings.dynamicStyling)))}onDrop(e){this.draginfoDiv&&(this.ownerDocument.body.removeChild(this.draginfoDiv),delete this.draginfoDiv);const t=this.excalidrawAPI;if(!t)return!1;const n=t.getAppState();this.currentPosition=viewportCoordsToSceneCoords({clientX:e.clientX,clientY:e.clientY},n);const r=app.dragManager.draggable,i=internalDragModifierType(e),o=webbrowserDragModifierType(e),a=localFileDragModifierType(e),s=(t,n,i)=>{if(!this.getHookServer().onDropHook)return!1;try{return this.getHookServer().onDropHook({ea:this.getHookServer(),event:e,draggable:r,type:t,payload:{files:n,text:i},excalidrawFile:this.file,view:this,pointerPosition:this.currentPosition})}catch(e){return new obsidian_module.Notice("on drop hook error. See console log for details"),errorlog({where:"ExcalidrawView.onDrop",error:e}),!1}};switch(null==r?void 0:r.type){case"file":if(!s("file",[r.file],null)){const e=r.file;if(e.path.match(REG_LINKINDEX_INVALIDCHARS))return new obsidian_module.Notice(t$d("FILENAME_INVALID_CHARS"),4e3),!1;if(["image","image-fullsize"].contains(i)&&(IMAGE_TYPES.contains(e.extension)||"md"===e.extension||"pdf"===e.extension.toLowerCase()))return"pdf"===e.extension.toLowerCase()?new InsertPDFModal(this.plugin,this).open(e):(async()=>{const t=getEA(this);t.selectElementsInView([await insertImageToView(t,this.currentPosition,e,!("image-fullsize"===i))])})(),!1;if("embeddable"===i)return(async()=>{const t=getEA(this);t.selectElementsInView([await insertEmbeddableToView(t,this.currentPosition,e)])})(),!1;this.addText(`[[${app.metadataCache.fileToLinktext(r.file,this.file.path,!0)}]]`)}return!1;case"files":return s("file",r.files,null)||(async()=>{if(["image","image-fullsize"].contains(i)){const e=getEA(this);e.canvas.theme=t.getAppState().theme;let n=0;const o=[];for(const t of r.files)(IMAGE_TYPES.contains(t.extension)||"md"===t.extension)&&(o.push(await e.addImage(this.currentPosition.x+50*n,this.currentPosition.y+50*n,t,!("image-fullsize"===i))),n++,await e.addElementsToView(!1,!1,!0),e.selectElementsInView(o)),"pdf"===t.extension.toLowerCase()&&new InsertPDFModal(this.plugin,this).open(t)}else{if("embeddable"===i){const e=getEA(this);let t=0,n=0;const i=[];for(const o of r.files)i.push(await insertEmbeddableToView(e,{x:this.currentPosition.x+500*t,y:this.currentPosition.y+550*n},o)),t=(t+1)%3,0===t&&n++;return!1}for(const e of r.files)await this.addText(`[[${app.metadataCache.fileToLinktext(e,this.file.path,!0)}]]`,void 0,!1),this.currentPosition.y+=2*n.currentItemFontSize;this.save(!1)}})(),!1}if(e.dataTransfer.types.includes("Files")){if(e.dataTransfer.types.includes("text/plain")){const t=e.dataTransfer.getData("text");if(t&&s("text",null,t))return!1;if(t&&"image-url"===o&&hyperlinkIsImage(t))return this.addImageWithURL(t),!1;if(t&&"link"===o)return this.plugin.settings.iframelyAllowed&&t.match(/^https?:\/\/\S*$/)?(this.addTextWithIframely(t),!1):(this.addText(t),!1);if(t&&"embeddable"===o)return insertEmbeddableToView(getEA(this),this.currentPosition,void 0,t),!1}if(e.dataTransfer.types.includes("text/html")){const t=e.dataTransfer.getData("text/html").match(/src=["']([^"']*)["']/);if(t&&"image-url"===o&&hyperlinkIsImage(t[1]))return this.addImageWithURL(t[1]),!1;if(t&&"link"===o)return this.plugin.settings.iframelyAllowed&&t[1].match(/^https?:\/\/\S*$/)?(this.addTextWithIframely(t[1]),!1):(this.addText(t[1]),!1);if(t&&"embeddable"===o)return insertEmbeddableToView(getEA(this),this.currentPosition,void 0,t[1]),!1}if(e.dataTransfer.types.length>=1&&["image-url","image-import","embeddable"].contains(a)){for(let t=0;t<e.dataTransfer.files.length;t++){const n=e.dataTransfer.files[t].path;if(!n)return!0;const r=getInternalLinkOrFileURLLink(n,this.plugin,e.dataTransfer.files[t].name,this.file),{x:i,y:o}=this.currentPosition,s={x:i+300*t,y:o+300*t};if(r.isInternal)"embeddable"===a?insertEmbeddableToView(getEA(this),s,r.file):insertImageToView(getEA(this),s,r.file);else{const e=getURLImageExtension(r.url);if("image-import"===a&&(IMAGE_TYPES.contains(e)||"excalidraw"===e))return!0;"embeddable"!==a&&IMAGE_TYPES.contains(e)?insertImageToView(getEA(this),s,r.url):(insertEmbeddableToView(getEA(this),s,null,r.url),"embeddable"!==a&&new obsidian_module.Notice("Not imported to Vault. Embedded with local URI"))}}return!1}if(e.dataTransfer.types.length>=1&&"link"===a){const t=getEA(this);for(let n=0;n<e.dataTransfer.files.length;n++){const r=e.dataTransfer.files[n].path,i=e.dataTransfer.files[n].name;if(!r||!i)return!0;const o=getInternalLinkOrFileURLLink(r,this.plugin,i,this.file),a=t.addText(this.currentPosition.x+40*n,this.currentPosition.y+20*n,o.isInternal?o.link:`📂 ${i}`);o.isInternal||(t.getElement(a).link=o.link)}return t.addElementsToView(),!1}return!0}if(e.dataTransfer.types.includes("text/plain")||e.dataTransfer.types.includes("text/uri-list")||e.dataTransfer.types.includes("text/html")){const t=e.dataTransfer.getData("text/html").match(/src=["']([^"']*)["']/),n=t?t[1]:"",r=e.dataTransfer.getData("text"),i=e.dataTransfer.getData("text/uri-list");let a=t?n:r;if(a&&""!==a||(a=i),!a||""===a)return!0;if(!s("text",null,a)){if(a&&"embeddable"===o&&/^(blob:)?(http|https):\/\/[^\s/$.?#].[^\s]*$/.test(a))return!0;if(a&&"image-url"===o&&hyperlinkIsYouTubeLink(a))return this.addYouTubeThumbnail(a),!1;if(i&&"image-url"===o&&hyperlinkIsYouTubeLink(i))return this.addYouTubeThumbnail(i),!1;if(a&&"image-url"===o&&hyperlinkIsImage(a))return this.addImageWithURL(a),!1;if(i&&"image-url"===o&&hyperlinkIsImage(i))return this.addImageWithURL(i),!1;if(a&&"image-import"===o&&hyperlinkIsImage(a))return this.addImageSaveToVault(a),!1;if(i&&"image-import"===o&&hyperlinkIsImage(i))return this.addImageSaveToVault(i),!1;if(this.plugin.settings.iframelyAllowed&&a.match(/^https?:\/\/\S*$/))return this.addTextWithIframely(a),!1;if(a.startsWith("obsidian://open?vault=")){const t=e.dataTransfer.getData("text/html");if(t){const e=t.match(/href="app:\/\/obsidian\.md\/(.*?)"/);if(2===e.length){const t=decodeURIComponent(e[1]).split("#"),n=app.vault.getAbstractFileByPath(t[0]);if(n&&n instanceof obsidian_module.TFile){const e=app.metadataCache.fileToLinktext(n,this.file.path);return void this.addText(`[[${e+(t.length>1?"#"+t[1]+"|"+e:"")}]]`)}return this.addText(`[[${decodeURIComponent(e[1])}]]`),!1}}const n=a.split("file=");if(2===n.length)return this.addText(`[[${decodeURIComponent(n[1])}]]`),!1}this.addText(a.replace(/(!\[\[.*#[^\]]*\]\])/g,"$1{40}"))}return!1}return!s("unknown",null,null)}onBeforeTextEdit(e){var t;if(clearTimeout(this.isEditingTextResetTimer),this.isEditingTextResetTimer=null,this.semaphores.isEditingText=!0,this.compatibilityMode)return null!==(t=e.originalText)&&void 0!==t?t:e.text;return this.excalidrawData.getRawText(e.id)||e.rawText}onBeforeTextSubmit(e,t,n,r){var i,o;const a=this.excalidrawAPI;if(!a)return[null,null,null];if(this.semaphores.isEditingText=!0,this.isEditingTextResetTimer&&clearTimeout(this.isEditingTextResetTimer),this.isEditingTextResetTimer=setTimeout((()=>{this.semaphores.isEditingText=!1,this.isEditingTextResetTimer=null}),1500),r)return this.excalidrawData.deleteTextElement(e.id),this.setDirty(7),[null,null,null];const s=t$d("WARNING_PASTING_ELEMENT_AS_TEXT");if(t.startsWith('{"type":"excalidraw/clipboard","elements":[{"'))return setTimeout((()=>{const t=this.excalidrawAPI.getSceneElements(),n=t.filter((t=>t.id===e.id));if(1===n.length){const e=cloneElement(n[0]);e.rawText=s,t[t.indexOf(n[0])]=e,this.excalidrawData.setTextElement(e.id,s,s,(()=>{})),this.updateScene({elements:t}),a.history.clear()}})),[s,s,null];const l=e.containerId,c=n.trim().matchAll(/^!\[\[([^|\]]*)?.*?]]$|^!\[[^\]]*?]\((.*?)\)$/g).next();if(null===(i=null==c?void 0:c.value)||void 0===i?void 0:i[0]){const t=null!==(o=c.value[1])&&void 0!==o?o:c.value[2],n=this.app.metadataCache.getFirstLinkpathDest(t,this.file.path);if(n&&n instanceof obsidian_module.TFile){if("md"!==n.extension||this.plugin.isExcalidrawFile(n))return setTimeout((async()=>{const t=this.excalidrawAPI.getSceneElements(),r=t.filter((t=>t.id===e.id));if(1===r.length){const e={x:r[0].x,y:r[0].y},i=cloneElement(r[0]);i.isDeleted=!0,this.excalidrawData.deleteTextElement(i.id),t[t.indexOf(r[0])]=i,this.updateScene({elements:t});const o=getEA(this);IMAGE_TYPES.contains(n.extension)?o.selectElementsInView([await insertImageToView(o,e,n)]):"pdf"!==n.extension?o.selectElementsInView([await insertEmbeddableToView(o,e,n)]):new UniversalInsertFileModal(this.plugin,this).open(n,e),this.setDirty(9)}})),[null,null,null];new obsidian_module.Notice(t$d("USE_INSERT_FILE_MODAL"),5e3)}}if(t!==e.text||n!==e.originalText||!this.excalidrawData.getRawText(e.id)){this.setDirty(8);const r=async(t,n)=>{var r,i;if(this.textMode===TextMode.raw)return;const o=this.excalidrawAPI.getSceneElements(),s=o.filter((t=>t.id===e.id));if(1===s.length){const e=cloneElement(s[0]),l=s[0].containerId?null===(i=null===(r=a.getSceneElements().filter((e=>e.id===s[0].containerId)))||void 0===r?void 0:r[0])||void 0===i?void 0:i.type:void 0;this.excalidrawData.updateTextElement(e,t,n,!0,l),o[o.indexOf(s[0])]=e,this.updateScene({elements:o}),e.containerId&&this.updateContainerSize(e.containerId),this.setDirty(8.1)}a.history.clear()},[i,o,s]=this.excalidrawData.setTextElement(e.id,t,n,r);return i?(l&&this.updateContainerSize(l,!0),this.textMode===TextMode.raw?[t,n,s]:t===i?s?[i,o,s]:[null,null,null]:(a.history.clear(),[i,o,s])):[null,null,null]}return l&&this.updateContainerSize(l,!0),this.textMode===TextMode.parsed?this.excalidrawData.getParsedText(e.id):[null,null,null]}async onLinkOpen(e,t){var n;if(t.preventDefault(),!e)return;let r=e.link;if(!r||""===r)return;setTimeout((()=>this.removeLinkTooltip()),500);let i=null===(n=null==t?void 0:t.detail)||void 0===n?void 0:n.nativeEvent;if(!this.handleLinkHookCall(e,e.link,i)&&!openExternalLink(e.link,this.app,isSHIFT(i)||isWinCTRLorMacCMD(i)||isWinMETAorMacCTRL(i)||isWinALTorMacOPT(i))){if("text"===e.type){const t=e.rawText.replaceAll("\n","");REGEX_LINK.getResList(t).filter((e=>Boolean(e.value))).length>1&&(r=t)}i.shiftKey||i.ctrlKey||i.metaKey||i.altKey||(i=emulateKeysForLinkClick("new-tab")),this.linkClick(i,null,null,{id:e.id,text:r},i)}}onLinkHover(e,t){if(e&&(this.plugin.settings.hoverPreviewWithoutCTRL||isWinCTRLorMacCMD(t))){this.lastMouseEvent=t,this.lastMouseEvent.ctrlKey=!(DEVICE.isIOS||DEVICE.isMacOS)||this.lastMouseEvent.ctrlKey,this.lastMouseEvent.metaKey=DEVICE.isIOS||DEVICE.isMacOS||this.lastMouseEvent.metaKey;const n=e.link;if(!n||""===n)return;if(n.startsWith("[[")){const t=n.match(/\[\[(?<link>.*?)\]\]/);if(!t)return;let r=t.groups.link;this.showHoverPreview(r,e)}}}onViewModeChange(e){var t,n;if(this.semaphores.viewunload||null===(n=null===(t=this.toolsPanelRef)||void 0===t?void 0:t.current)||void 0===n||n.setExcalidrawViewMode(e),this.getHookServer().onViewModeChangeHook)try{this.getHookServer().onViewModeChangeHook(e,this,this.getHookServer())}catch(e){errorlog({where:"ExcalidrawView.onViewModeChange",fn:this.getHookServer().onViewModeChangeHook,error:e})}}getSingleSelectedImage(){if(!this.excalidrawAPI)return null;const e=this.getViewSelectedElements().filter((e=>"image"===e.type));if(1!==e.length)return null;const t=e[0];return{imageEl:t,embeddedFile:this.excalidrawData.getFile(t.fileId)}}async insertBackOfTheNoteCard(){const e=(await this.app.metadataCache.blockCache.getForFile({isCancelled:()=>!1},this.file)).blocks.filter((e=>{var t;return e.display&&"heading"===(null===(t=e.node)||void 0===t?void 0:t.type)})).filter((e=>!MD_EX_SECTIONS.includes(e.display))).map((e=>cleanSectionHeading(e.display)));new SelectCard(this.app,this,e).start()}async convertImageElWithURLToLocalFile(e){const{imageEl:t,embeddedFile:n}=e,r=n.getImage(!1);if(!r&&!r.startsWith("data:"))return new obsidian_module.Notice("Image not found"),!1;const i=getEA(this);i.copyViewElementsToEAforEditing([t]);const o=i.getElement(t.id);o.fileId=fileid(),o.link||(o.link=n.hyperlink);let a=n.getImage(!1);if(!a.startsWith("data:")&&(new obsidian_module.Notice("Attempting to download image from URL. This may take a long while. The operation will time out after max 1 minute"),a=await getDataURLFromURL(a,n.mimeType,3e4),!a.startsWith("data:")))return new obsidian_module.Notice("Failed. Could not download image!"),!1;const s=[];s.push({mimeType:n.mimeType,id:o.fileId,dataURL:a,created:n.mtime}),this.excalidrawAPI.addFiles(s),await i.addElementsToView(!1,!0),new obsidian_module.Notice("Image successfully converted to local file")}async instantiateExcalidraw(e){for(;!this.semaphores.scriptsReady;)await sleep(50);const t=this.plugin.getPackage(this.ownerWindow).react,n=this.plugin.getPackage(this.ownerWindow).reactDOM;this.clearDirty();const r=e=>{this.excalidrawAPI=e,e.setLocalFont(this.plugin.settings.experimentalEnableFourthFont),setTimeout((()=>{var e,t,n;this.onAfterLoadScene(),this.excalidrawContainer=null===(t=null===(e=this.excalidrawWrapperRef)||void 0===e?void 0:e.current)||void 0===t?void 0:t.firstElementChild,null===(n=this.excalidrawContainer)||void 0===n||n.focus()}))},{Excalidraw:i,MainMenu:o,WelcomeScreen:a,TTDDialogTrigger:s,TTDDialog:l}=this.plugin.getPackage(this.ownerWindow).excalidrawLib,c=(e,n,r)=>t.createElement("li",{key:nanoid$1(),onClick:()=>{r((()=>n()))}},t.createElement("button",{className:"context-menu-item"},t.createElement("div",{className:"context-menu-item__label"},e),t.createElement("kbd",{className:"context-menu-item__shortcut"},""))),T=(e,n,r)=>{var i,o;const a=[],s=this.excalidrawAPI;if(this.isLinkSelected()&&a.push([c(t$d("OPEN_LINK_CLICK"),(()=>{const e=emulateKeysForLinkClick("new-tab");this.handleLinkClick(e)}),r)]),n.viewModeEnabled){const e="laser"===(null===(i=n.activeTool)||void 0===i?void 0:i.type);a.push([c(t$d(e?"LASER_OFF":"LASER_ON"),(()=>{s.setActiveTool({type:e?"selection":"laser"})}),r)])}if(!n.viewModeEnabled){const e=this.getViewSelectedElements().filter((e=>"text"===e.type));if(1===e.length){const t=e[0];this.excalidrawData.getParsedText(t.id);const n=this.getViewElements().find((e=>e.id===t.containerId));n&&t.link&&this.excalidrawData.getParsedText(t.id)[1]===t.rawText&&a.push([c(t$d("REMOVE_LINK"),(()=>{const e=getEA(this);e.copyViewElementsToEAforEditing([t]),e.getElement(t.id).link=null,e.addElementsToView(!1)}),r)]),n&&a.push([c(t$d("SELECT_TEXTELEMENT_ONLY"),(()=>{setTimeout((()=>this.excalidrawAPI.selectElements([t])))}),r)]),(!n||n&&"arrow"!==n.type)&&a.push([c(t$d("CONVERT_TO_MARKDOWN"),(()=>{this.convertTextElementToMarkdown(t,n)}),r)])}const t=this.getSingleSelectedImage();t&&(null===(o=t.embeddedFile)||void 0===o?void 0:o.isHyperLink)&&a.push([c(t$d("CONVERT_URL_TO_FILE"),(()=>{setTimeout((()=>this.convertImageElWithURLToLocalFile(t)))}),r)]),t&&t.embeddedFile&&"image/svg+xml"===t.embeddedFile.mimeType&&a.push([c(t$d("IMPORT_SVG_CONTEXTMENU"),(()=>{const e=t.embeddedFile.getImage(!1).split(",")[1],n=atob(e);if(!n||""===n)return;const r=getEA(this);r.importSVG(n),r.addToGroup(r.getElements().map((e=>e.id))),r.addElementsToView(!0,!0,!0,!0)}),r)]),a.push([c(t$d("INSERT_CARD"),(()=>{this.insertBackOfTheNoteCard()}),r)]),a.push([c(t$d("UNIVERSAL_ADD_FILE"),(()=>{new UniversalInsertFileModal(this.plugin,this).open()}),r)]),a.push([c(t$d("INSERT_LINK"),(()=>{this.plugin.insertLinkDialog.start(this.file.path,((e,t,n)=>this.addLink(e,t,n)))}),r)])}if(0!==a.length)return t.createElement("div",{},...a,t.createElement("hr",{key:nanoid$1(),className:"context-menu-item-separator"}))},Q=(e,n)=>{try{const r=useDefaultExcalidrawFrame(e);if(!this.file||!e||!e.link||0===e.link.length||r)return null;if(e.link.match(REG_LINKINDEX_HYPERLINK)||e.link.startsWith("data:"))return r?null:renderWebView(e.link,this,e.id);const i=REGEX_LINK.getRes(e.link).next();if(!i||!i.value&&i.done)return null;let o=REGEX_LINK.getLink(i);return o.match(REG_LINKINDEX_HYPERLINK)?r?null:renderWebView(o,this,e.id):t.createElement(CustomEmbeddable,{element:e,view:this,appState:n,linkText:o})}catch(e){return null}},d=()=>t.createElement(o,{},t.createElement(o.DefaultItems.ChangeCanvasBackground),t.createElement(o.DefaultItems.ToggleTheme),t.createElement(o.Separator),DEVICE.isPhone?null:t.createElement(o.Item,{icon:ICONS.trayMode,"aria-label":"Tray-mode offers an alternative, more spacious canvas",onSelect:()=>{this.toggleTrayMode()}},"Toggle tray-mode"),t.createElement(o.Item,{icon:saveIcon(!1),"aria-label":t$d("FORCE_SAVE"),onSelect:()=>{this.forceSave()}},"Save"),t.createElement(o.Item,{icon:ICONS.scriptEngine,"aria-label":"Explore the Excalidraw Script Library",onSelect:()=>{new ScriptInstallPrompt(this.plugin).open()}},"Script Library"),t.createElement(o.Item,{icon:ICONS.ExportImage,"aria-label":"Export image as PNG, SVG, or Excalidraw file",onSelect:()=>{this.exportDialog||(this.exportDialog=new ExportDialog(this.plugin,this,this.file),this.exportDialog.createForm()),this.exportDialog.open()}},"Export Image..."),t.createElement(o.Item,{icon:ICONS.switchToMarkdown,"aria-label":"Switch to markdown view",onSelect:()=>{this.openAsMarkdown()}},"Open as Markdown"),t.createElement(o.Separator),t.createElement(o.DefaultItems.Help),t.createElement(o.DefaultItems.ClearCanvas)),u=()=>t.createElement(ToolsPanel,{ref:this.toolsPanelRef,visible:!1,view:this,centerPointer:()=>this.setCurrentPositionToCenter()}),p=t.createElement((()=>{var n;const o=t.useRef(null),c=t.useRef(null),p=t.useRef(null),[h,m]=t.useState({width:void 0,height:void 0});t.useEffect((()=>{this.toolsPanelRef=c,this.embeddableMenuRef=p,this.obsidianMenu=new ObsidianMenu(this.plugin,c,this),this.embeddableMenu=new EmbeddableMenu(this,p),this.excalidrawWrapperRef=o}),[]),t.useEffect((()=>{m({width:this.contentEl.clientWidth,height:this.contentEl.clientHeight});const e=()=>{var e,t,n,r,i,o,a;try{const s=this.contentEl.clientWidth,l=this.contentEl.clientHeight;if(0===s||0===l)return;const c=this.excalidrawAPI.getAppState(),T="text"===(null===(e=c.editingElement)||void 0===e?void 0:e.type),Q=this.semaphores.isEditingText&&!T;if(T){const e=this,a=null!==(n=null===(t=e.contentEl.querySelector(".Island.App-toolbar"))||void 0===t?void 0:t.clientHeight)&&void 0!==n?n:0,s=sceneCoordsToViewportCoords({sceneX:0,sceneY:c.editingElement.y},c).y,T=l>s-sceneCoordsToViewportCoords({sceneX:0,sceneY:-c.scrollY},c).y+2*a,Q=this.excalidrawWrapperRef.current;Q&&!T&&(Q.style.top=-(c.height-l)+"px",Q.style.height=`${c.height}px`,null===(i=null===(r=e.excalidrawContainer)||void 0===r?void 0:r.querySelector(".App-bottom-bar"))||void 0===i||i.scrollIntoView(),null===(o=e.headerEl)||void 0===o||o.scrollIntoView())}if(Q){const e=this.excalidrawWrapperRef.current,t=null===(a=this.excalidrawContainer)||void 0===a?void 0:a.querySelector(".App-bottom-bar"),n=this.headerEl;e&&(e.style.top="",e.style.height="",null==t||t.scrollIntoView(),null==n||n.scrollIntoView())}m({width:s,height:l}),this.toolsPanelRef&&this.toolsPanelRef.current&&this.toolsPanelRef.current.updatePosition(),this.ownerDocument!==document&&this.refresh()}catch(e){errorlog({where:"Excalidraw React-Wrapper, onResize",error:e})}};return this.ownerWindow.addEventListener("resize",e),()=>{var t;return null===(t=this.ownerWindow)||void 0===t?void 0:t.removeEventListener("resize",e)}}),[o]);const f=t.useRef(new ResizeObserver((e=>{if(!c||!c.current)return;const{width:t,height:n}=e[0].contentRect;if(0===t||0===n)return;const r=c.current.onRightEdge?c.current.previousWidth-t:0,i=c.current.onBottomEdge?c.current.previousHeight-n:0;c.current.updatePosition(i,r)})));t.useEffect((()=>((null==c?void 0:c.current)&&f.current.observe(c.current.containerRef.current),()=>{f.current.unobserve(c.current.containerRef.current)})),[c,f]);const g=t.createElement("div",{className:"excalidraw-wrapper",ref:o,key:"abc",tabIndex:0,onKeyDown:e=>this.excalidrawDIVonKeyDown(e),onPointerDown:e=>this.onPointerDown(e),onMouseMove:e=>this.onMouseMove(e),onMouseOver:e=>this.onMouseOver(),onDragOver:e=>this.onDragOver(e),onDragLeave:e=>this.onDragLeave()},t.createElement(i,{excalidrawAPI:e=>{r(e)},width:h.width,height:h.height,UIOptions:{canvasActions:{loadScene:!1,saveScene:!1,saveAsScene:!1,export:!1,saveAsImage:!1,saveToActiveFile:!1}},initState:null==e?void 0:e.appState,initialData:e,detectScroll:!0,onPointerUpdate:e=>this.onPointerUpdate(e),libraryReturnUrl:"app://obsidian.md",autoFocus:!0,langCode:null!==(n=obsidianToExcalidrawMap[this.plugin.locale])&&void 0!==n?n:"en-EN",aiEnabled:!0,onChange:(e,t)=>this.onChange(e,t),onLibraryChange:e=>this.onLibraryChange(e) //! onauxclick: (e: any) => {e.preventDefault()}, -renderTopRightUI:(e,A)=>this.obsidianMenu.renderButton(e,A),renderEmbeddableMenu:e=>this.embeddableMenu.renderButtons(e),onPaste:(e,A)=>{const t=this.getHookServer();if(e&&t.onPasteHook){const i=t.onPasteHook({ea:t,payload:e,event:A,excalidrawFile:this.file,view:this,pointerPosition:this.currentPosition});if("boolean"==typeof i&&!1===i)return!1}if(!this.modifierKeyDown.ctrlKey&&null!=A&&DEVICE.isLinux)return console.debug("Prevented what is likely middle mouse button paste."),!1;if(e&&e.text&&hyperlinkIsImage(e.text))return this.addImageWithURL(e.text),!1;if(e&&e.text&&!this.modifierKeyDown.shiftKey){const A=obsidianPDFQuoteWithRef(e.text);if(A){const e=getEA(this),t=this.excalidrawAPI.getAppState(),i=t.currentItemStrokeColor,n=t.viewBackgroundColor;e.style.strokeColor="transparent"===i?e.getCM("transparent"===n?"white":n).invert().stringHEX({alpha:!1}):i,e.style.fontFamily=t.currentItemFontFamily,e.style.fontSize=t.currentItemFontSize;const s=e.measureText(A.quote),a=s.width+60,o=e.addText(this.currentPosition.x,this.currentPosition.y,A.quote,{box:!0,boxStrokeColor:"transparent",width:Math.min(500,a),height:s.height+60});return e.elementsDict[o].link=`[[${A.link}]]`,e.addElementsToView(!1,!1),!1}}if(e.elements){const e=this;setTimeout((()=>e.save(!1)),300)}return!0},onThemeChange:async e=>{var A;this.excalidrawData.scene.appState.theme=e,this.loadSceneFiles(),null===(A=null==n?void 0:n.current)||void 0===A||A.setTheme(e),setTimeout((()=>setDynamicStyle(this.plugin.ea,this,this.previousBackgroundColor,this.plugin.settings.dynamicStyling)))},ownerDocument:this.ownerDocument,ownerWindow:this.ownerWindow,onDrop:e=>{this.draginfoDiv&&(this.ownerDocument.body.removeChild(this.draginfoDiv),delete this.draginfoDiv);const A=this.excalidrawAPI;if(!A)return!1;const t=A.getAppState();this.currentPosition=viewportCoordsToSceneCoords({clientX:e.clientX,clientY:e.clientY},t);const i=app.dragManager.draggable,n=internalDragModifierType(e),s=externalDragModifierType(e),a=localFileDragModifierType(e),o=(A,t,n)=>{if(!this.getHookServer().onDropHook)return!1;try{return this.getHookServer().onDropHook({ea:this.getHookServer(),event:e,draggable:i,type:A,payload:{files:t,text:n},excalidrawFile:this.file,view:this,pointerPosition:this.currentPosition})}catch(e){return new obsidian_module.Notice("on drop hook error. See console log for details"),errorlog({where:"ExcalidrawView.onDrop",error:e}),!1}};switch(null==i?void 0:i.type){case"file":if(!o("file",[i.file],null)){const e=i.file;if(e.path.match(REG_LINKINDEX_INVALIDCHARS))return new obsidian_module.Notice(t$d("FILENAME_INVALID_CHARS"),4e3),!1;if(["image","image-fullsize"].contains(n)&&(IMAGE_TYPES.contains(e.extension)||"md"===e.extension||"pdf"===e.extension.toLowerCase()))return"pdf"===e.extension.toLowerCase()?new InsertPDFModal(this.plugin,this).open(e):(async()=>{const A=getEA(this);A.selectElementsInView([await insertImageToView(A,this.currentPosition,e,!("image-fullsize"===n))])})(),!1;if("embeddable"===n)return(async()=>{const A=getEA(this);A.selectElementsInView([await insertEmbeddableToView(A,this.currentPosition,e)])})(),!1;this.addText(`[[${app.metadataCache.fileToLinktext(i.file,this.file.path,!0)}]]`)}return!1;case"files":return o("file",i.files,null)||(async()=>{if(["image","image-fullsize"].contains(n)){const e=getEA(this);e.canvas.theme=A.getAppState().theme;let t=0;const s=[];for(const A of i.files)(IMAGE_TYPES.contains(A.extension)||"md"===A.extension)&&(s.push(await e.addImage(this.currentPosition.x+50*t,this.currentPosition.y+50*t,A,!("image-fullsize"===n))),t++,await e.addElementsToView(!1,!1,!0),e.selectElementsInView(s)),"pdf"===A.extension.toLowerCase()&&new InsertPDFModal(this.plugin,this).open(A)}else{if("embeddable"===n){const e=getEA(this);let A=0,t=0;const n=[];for(const s of i.files)n.push(await insertEmbeddableToView(e,{x:this.currentPosition.x+500*A,y:this.currentPosition.y+550*t},s)),A=(A+1)%3,0===A&&t++;return!1}for(const e of i.files)await this.addText(`[[${app.metadataCache.fileToLinktext(e,this.file.path,!0)}]]`,void 0,!1),this.currentPosition.y+=2*t.currentItemFontSize;this.save(!1)}})(),!1}if(e.dataTransfer.types.includes("Files")){if(e.dataTransfer.types.includes("text/plain")){const A=e.dataTransfer.getData("text");if(A&&o("text",null,A))return!1;if(A&&"image-url"===s&&hyperlinkIsImage(A))return this.addImageWithURL(A),!1;if(A&&"insert-link"===s)return this.plugin.settings.iframelyAllowed&&A.match(/^https?:\/\/\S*$/)?(this.addTextWithIframely(A),!1):(this.addText(A),!1);if(A&&"embeddable"===s)return insertEmbeddableToView(getEA(this),this.currentPosition,void 0,A),!1}if(e.dataTransfer.types.includes("text/html")){const A=e.dataTransfer.getData("text/html").match(/src=["']([^"']*)["']/);if(A&&"image-url"===s&&hyperlinkIsImage(A[1]))return this.addImageWithURL(A[1]),!1;if(A&&"insert-link"===s)return this.plugin.settings.iframelyAllowed&&A[1].match(/^https?:\/\/\S*$/)?(this.addTextWithIframely(A[1]),!1):(this.addText(A[1]),!1);if(A&&"embeddable"===s)return insertEmbeddableToView(getEA(this),this.currentPosition,void 0,A[1]),!1}if(e.dataTransfer.types.length>=1&&"image-uri"===a)return(async()=>{for(let A=0;A<e.dataTransfer.files.length;A++){const t=encodeURI(e.dataTransfer.files[A].path),{x:i,y:n}=this.currentPosition;await insertImageToView(getEA(this),{x:i+300*A,y:n+300*A},`file://${t}`)}})(),!1;if(e.dataTransfer.types.length>=1&&"insert-link"===a){const A=getEA(this);for(let t=0;t<e.dataTransfer.files.length;t++){const i=e.dataTransfer.files[t].path,n=e.dataTransfer.files[t].name,s=A.addText(this.currentPosition.x+40*t,this.currentPosition.y+20*t,`📂 ${n}`);A.getElement(s).link=`[${n}](file://${i})`}return A.addElementsToView(),!1}return!0}if(e.dataTransfer.types.includes("text/plain")||e.dataTransfer.types.includes("text/uri-list")||e.dataTransfer.types.includes("text/html")){const A=e.dataTransfer.getData("text/html").match(/src=["']([^"']*)["']/),t=A?A[1]:"",i=e.dataTransfer.getData("text"),n=e.dataTransfer.getData("text/uri-list");let a=A?t:i;if(a&&""!==a||(a=n),!a||""===a)return!0;if(!o("text",null,a)){if(a&&"embeddable"===s&&/^(blob:)?(http|https):\/\/[^\s/$.?#].[^\s]*$/.test(a))return!0;if(a&&"image-url"===s&&hyperlinkIsYouTubeLink(a))return this.addYouTubeThumbnail(a),!1;if(n&&"image-url"===s&&hyperlinkIsYouTubeLink(n))return this.addYouTubeThumbnail(n),!1;if(a&&"image-url"===s&&hyperlinkIsImage(a))return this.addImageWithURL(a),!1;if(n&&"image-url"===s&&hyperlinkIsImage(n))return this.addImageWithURL(n),!1;if(a&&"image-import"===s&&hyperlinkIsImage(a))return this.addImageSaveToVault(a),!1;if(n&&"image-import"===s&&hyperlinkIsImage(n))return this.addImageSaveToVault(n),!1;if(this.plugin.settings.iframelyAllowed&&a.match(/^https?:\/\/\S*$/))return this.addTextWithIframely(a),!1;if(a.startsWith("obsidian://open?vault=")){const A=e.dataTransfer.getData("text/html");if(A){const e=A.match(/href="app:\/\/obsidian\.md\/(.*?)"/);if(2===e.length){const A=decodeURIComponent(e[1]).split("#"),t=app.vault.getAbstractFileByPath(A[0]);if(t&&t instanceof obsidian_module.TFile){const e=app.metadataCache.fileToLinktext(t,this.file.path);return void this.addText(`[[${e+(A.length>1?"#"+A[1]+"|"+e:"")}]]`)}return this.addText(`[[${decodeURIComponent(e[1])}]]`),!1}}const t=a.split("file=");if(2===t.length)return this.addText(`[[${decodeURIComponent(t[1])}]]`),!1}this.addText(a.replace(/(!\[\[.*#[^\]]*\]\])/g,"$1{40}"))}return!1}return!o("unknown",null,null)},onBeforeTextEdit:e=>{var A;if(clearTimeout(this.isEditingTextResetTimer),this.isEditingTextResetTimer=null,this.semaphores.isEditingText=!0,this.compatibilityMode)return null!==(A=e.originalText)&&void 0!==A?A:e.text;return this.excalidrawData.getRawText(e.id)||e.rawText},onBeforeTextSubmit:(e,A,t,i)=>{var n,s;const a=this.excalidrawAPI;if(!a)return[null,null,null];if(this.semaphores.isEditingText=!0,this.isEditingTextResetTimer&&clearTimeout(this.isEditingTextResetTimer),this.isEditingTextResetTimer=setTimeout((()=>{this.semaphores.isEditingText=!1,this.isEditingTextResetTimer=null}),1500),i)return this.excalidrawData.deleteTextElement(e.id),this.setDirty(7),[null,null,null];const o=t$d("WARNING_PASTING_ELEMENT_AS_TEXT");if(A.startsWith('{"type":"excalidraw/clipboard","elements":[{"'))return setTimeout((()=>{const A=this.excalidrawAPI.getSceneElements(),t=A.filter((A=>A.id===e.id));if(1===t.length){const e=cloneElement(t[0]);e.rawText=o,A[A.indexOf(t[0])]=e,this.excalidrawData.setTextElement(e.id,o,o,(()=>{})),this.updateScene({elements:A}),a.history.clear()}})),[o,o,null];const r=e.containerId,l=t.trim().matchAll(/^!\[\[([^|\]]*)?.*?]]$|^!\[[^\]]*?]\((.*?)\)$/g).next();if(null===(n=null==l?void 0:l.value)||void 0===n?void 0:n[0]){const A=null!==(s=l.value[1])&&void 0!==s?s:l.value[2],t=this.app.metadataCache.getFirstLinkpathDest(A,this.file.path);if(t&&t instanceof obsidian_module.TFile){if("md"!==t.extension||this.plugin.isExcalidrawFile(t))return setTimeout((async()=>{const A=this.excalidrawAPI.getSceneElements(),i=A.filter((A=>A.id===e.id));if(1===i.length){const e={x:i[0].x,y:i[0].y},n=cloneElement(i[0]);n.isDeleted=!0,this.excalidrawData.deleteTextElement(n.id),A[A.indexOf(i[0])]=n,this.updateScene({elements:A});const s=getEA(this);IMAGE_TYPES.contains(t.extension)?s.selectElementsInView([await insertImageToView(s,e,t)]):"pdf"!==t.extension?s.selectElementsInView([await insertEmbeddableToView(s,e,t)]):new UniversalInsertFileModal(this.plugin,this).open(t,e),this.setDirty(9)}})),[null,null,null];new obsidian_module.Notice(t$d("USE_INSERT_FILE_MODAL"),5e3)}}if(A!==e.text||t!==e.originalText||!this.excalidrawData.getRawText(e.id)){this.setDirty(8);const i=async(A,t)=>{var i,n;if(this.textMode===TextMode.raw)return;const s=this.excalidrawAPI.getSceneElements(),o=s.filter((A=>A.id===e.id));if(1===o.length){const e=cloneElement(o[0]),r=o[0].containerId?null===(n=null===(i=a.getSceneElements().filter((e=>e.id===o[0].containerId)))||void 0===i?void 0:i[0])||void 0===n?void 0:n.type:void 0;this.excalidrawData.updateTextElement(e,A,t,!0,r),s[s.indexOf(o[0])]=e,this.updateScene({elements:s}),e.containerId&&this.updateContainerSize(e.containerId),this.setDirty(8.1)}a.history.clear()},[n,s,o]=this.excalidrawData.setTextElement(e.id,A,t,i);return n?(r&&this.updateContainerSize(r,!0),this.textMode===TextMode.raw?[A,t,o]:A===n?o?[n,s,o]:[null,null,null]:(a.history.clear(),[n,s,o])):[null,null,null]}return r&&this.updateContainerSize(r,!0),this.textMode===TextMode.parsed?this.excalidrawData.getParsedText(e.id):[null,null,null]},onLinkOpen:async(e,A)=>{var t;if(A.preventDefault(),!e)return;let i=e.link;if(!i||""===i)return;setTimeout((()=>this.removeLinkTooltip()),500);let n=null===(t=null==A?void 0:A.detail)||void 0===t?void 0:t.nativeEvent;if(!this.handleLinkHookCall(e,e.link,n)&&!this.openExternalLink(e.link,isSHIFT(n)||isCTRL(n)||isMETA(n)||isALT(n)?void 0:e)){if("text"===e.type){const A=e.rawText.replaceAll("\n","");REGEX_LINK.getResList(A).filter((e=>Boolean(e.value))).length>1&&(i=A)}n.shiftKey||n.ctrlKey||n.metaKey||n.altKey||(n=emulateKeysForLinkClick("new-tab")),this.linkClick(n,null,null,{id:e.id,text:i},n)}},onLinkHover:(e,A)=>{if(e&&(this.plugin.settings.hoverPreviewWithoutCTRL||isCTRL(A))){k=A,k.ctrlKey=!(DEVICE.isIOS||DEVICE.isMacOS)||k.ctrlKey,k.metaKey=DEVICE.isIOS||DEVICE.isMacOS||k.metaKey;const t=e.link;if(!t||""===t)return;if(t.startsWith("[[")){const A=t.match(/\[\[(?<link>.*?)\]\]/);if(!A)return;let i=A.groups.link;C(i,e)}}},onContextMenu:(e,t,i)=>{const n=[];if(this.excalidrawAPI,I()&&n.push([y(t$d("OPEN_LINK_CLICK"),(()=>{const e=emulateKeysForLinkClick("new-tab");this.handleLinkClick(e)}),i)]),!t.viewModeEnabled){const e=this.getViewSelectedElements().filter((e=>"text"===e.type));if(1===e.length){const A=e[0],t=this.getViewElements().find((e=>e.id===A.containerId));(!t||t&&"arrow"!==t.type)&&n.push([y(t$d("CONVERT_TO_MARKDOWN"),(()=>{this.convertTextElementToMarkdown(A,t)}),i)])}n.push([y(t$d("UNIVERSAL_ADD_FILE"),(()=>{new UniversalInsertFileModal(this.plugin,this).open()}),i)]),n.push([y(t$d("INSERT_LINK"),(()=>{this.plugin.insertLinkDialog.start(this.file.path,this.addLink)}),i)])}if(0!==n.length)return A.createElement("div",{},...n,A.createElement("hr",{key:nanoid$1(),className:"context-menu-item-separator"}))},onViewModeChange:e=>{var A,t;if(this.semaphores.viewunload||null===(t=null===(A=this.toolsPanelRef)||void 0===A?void 0:A.current)||void 0===t||t.setExcalidrawViewMode(e),this.getHookServer().onViewModeChangeHook)try{this.getHookServer().onViewModeChangeHook(e,this,this.getHookServer())}catch(e){errorlog({where:"ExcalidrawView.onViewModeChange",fn:this.getHookServer().onViewModeChangeHook,error:e})}},validateEmbeddable:!0,renderWebview:DEVICE.isDesktop,renderEmbeddable:(e,t)=>{try{const i=useDefaultExcalidrawFrame(e);if(!v.file||!e||!e.link||0===e.link.length||i)return null;if(e.link.match(REG_LINKINDEX_HYPERLINK)||e.link.startsWith("data:"))return i?null:renderWebView(e.link,v,e.id);const n=REGEX_LINK.getRes(e.link).next();if(!n||!n.value&&n.done)return null;let s=REGEX_LINK.getLink(n);return s.match(REG_LINKINDEX_HYPERLINK)?i?null:renderWebView(s,v,e.id):A.createElement(CustomEmbeddable,{element:e,view:v,appState:t,linkText:s})}catch(e){return null}},renderMermaid:shouldRenderMermaid()},(()=>A.createElement(W,{},A.createElement(W.DefaultItems.ChangeCanvasBackground),A.createElement(W.DefaultItems.ToggleTheme),A.createElement(W.Separator),DEVICE.isPhone?null:A.createElement(W.Item,{icon:ICONS.trayMode,"aria-label":"Tray-mode offers an alternative, more spacious canvas",onSelect:()=>{this.toggleTrayMode()}},"Toggle tray-mode"),A.createElement(W.Item,{icon:saveIcon(!1),"aria-label":t$d("FORCE_SAVE"),onSelect:()=>{this.forceSave()}},"Save"),A.createElement(W.Item,{icon:ICONS.scriptEngine,"aria-label":"Explore the Excalidraw Script Library",onSelect:()=>{new ScriptInstallPrompt(this.plugin).open()}},"Script Library"),A.createElement(W.Item,{icon:ICONS.ExportImage,"aria-label":"Export image as PNG, SVG, or Excalidraw file",onSelect:()=>{this.exportDialog||(this.exportDialog=new ExportDialog(this.plugin,this,this.file),this.exportDialog.createForm()),this.exportDialog.open()}},"Export Image..."),A.createElement(W.Item,{icon:ICONS.switchToMarkdown,"aria-label":"Switch to markdown view",onSelect:()=>{this.openAsMarkdown()}},"Open as Markdown"),A.createElement(W.Separator),A.createElement(W.DefaultItems.Help),A.createElement(W.DefaultItems.ClearCanvas)))(),A.createElement(b,{},A.createElement(b.Center,{},A.createElement(b.Center.Logo,{},A.createElement(LogoWrapper,{},ICONS.ExcalidrawSword)),A.createElement(b.Center.Heading,{},'Type "Excalidraw" in the Command Palette',A.createElement("br"),"Explore the Obsidian Menu in the top right",A.createElement("br"),"Visit the Script Library",A.createElement("br"),"Find help in the hamburger-menu"),A.createElement(b.Center.Menu,{},A.createElement(b.Center.MenuItemLink,{icon:ICONS.YouTube,href:"https://www.youtube.com/@VisualPKM",shortcut:null,"aria-label":"Visual PKM YouTube Channel"}," Check out the Visual PKM YouTube channel."),A.createElement(b.Center.MenuItemLink,{icon:ICONS.Discord,href:"https://discord.gg/DyfAXFwUHc",shortcut:null,"aria-label":"Join the Visual Thinking Discord Server"}," Join the Visual Thinking Discord Server"),A.createElement(b.Center.MenuItemLink,{icon:ICONS.twitter,href:"https://twitter.com/zsviczian",shortcut:null,"aria-label":"Follow me on Twitter"}," Follow me on Twitter"),A.createElement(b.Center.MenuItemLink,{icon:ICONS.heart,href:"https://ko-fi.com/zsolt",shortcut:null,"aria-label":"Donate to support Excalidraw-Obsidian"},' Say "Thank You" & support the plugin.')))),A.createElement(Q,{onTextSubmit:async e=>{var A,t,i,n,s,a;try{const o=await postOpenAI({systemPrompt:"The user will provide you with a text prompt. Your task is to generate a mermaid graph based on the prompt. Use the graph, sequence-diagram or flowchart type based on what best fits the request. Return a single message containing only the mermaid diagram in a codeblock. Avoid the use of () parenthesis in the mermaid script.",text:e,instruction:"Return a single message containing only the mermaid diagram in a codeblock."});if(!o)return{error:new Error("Request failed")};const r=o.json;if(null==r?void 0:r.error)return console.log(o),{error:new Error(r.error.message)};if(!(null===(i=null===(t=null===(A=null==r?void 0:r.choices)||void 0===A?void 0:A[0])||void 0===t?void 0:t.message)||void 0===i?void 0:i.content))return console.log(o),{error:new Error("Generation failed... see console log for details")};let l=null===(a=extractCodeBlocks(null===(s=null===(n=r.choices[0])||void 0===n?void 0:n.message)||void 0===s?void 0:s.content)[0])||void 0===a?void 0:a.data;return l?(l.startsWith("mermaid")&&(l=l.replace(/^mermaid/,"").trim()),{generatedResponse:l,rateLimit:100,rateLimitRemaining:100}):(console.log(o),{error:new Error("Generation failed... see console log for details")})}catch(e){throw new Error("Request failed")}}}),A.createElement(x,{})),(()=>A.createElement(ToolsPanel,{ref:n,visible:!1,view:this,centerPointer:h}))());return A.createElement(A.Fragment,null,M)}));t.createRoot(this.contentEl).render(i)}updateContainerSize(e,A=!1){const t=this.excalidrawAPI;if(!t)return;const i=()=>{const A=e?t.getSceneElements().filter((A=>A.id===e&&"arrow"!==A.type)):t.getSceneElements().filter(isContainer);A.length>0&&(this.initialContainerSizeUpdate&&(this.semaphores.justLoaded=!0),t.updateContainerSize(A)),this.initialContainerSizeUpdate=!1};A?setTimeout((()=>i()),50):i()}zoomToFit(e=!0,A=!1){if(document.body.querySelector("div.modal-container"))return;const t=this.excalidrawAPI;if(!t||this.semaphores.isEditingText||this.semaphores.preventAutozoom)return;const i=this.plugin.settings.zoomToFitMaxLevel,n=t.getSceneElements().filter((e=>e.width<1e4&&e.height<1e4));app.isMobile&&n.length>1e3||n.length>2500?A&&t.scrollToContent():e?setTimeout((()=>t.zoomToFit(n,i,this.isFullscreen()?0:.05)),100):t.zoomToFit(n,i,this.isFullscreen()?0:.05)}updatePinnedScripts(){const e=this.excalidrawAPI;if(!e)return!1;e.updateScene({appState:{pinnedScripts:this.plugin.settings.pinnedScripts}})}updatePinnedCustomPens(){const e=this.excalidrawAPI;if(!e)return!1;e.updateScene({appState:{customPens:this.plugin.settings.customPens.slice(0,this.plugin.settings.numberOfCustomPens)}})}updatePinchZoom(){const e=this.excalidrawAPI;if(!e)return!1;e.updateScene({appState:{allowPinchZoom:this.plugin.settings.allowPinchZoom}})}updateWheelZoom(){const e=this.excalidrawAPI;if(!e)return!1;e.updateScene({appState:{allowWheelZoom:this.plugin.settings.allowWheelZoom}})}async toggleTrayMode(){const e=this.excalidrawAPI;if(!e)return!1;const A=e.getAppState();e.updateScene({appState:{trayModeEnabled:!A.trayModeEnabled}}),await this.plugin.loadSettings(),this.plugin.settings.defaultTrayMode=!A.trayModeEnabled,this.plugin.saveSettings()}selectElementsMatchingQuery(e,A,t=!0,i=!1,n=!1){let s=getTextElementsMatchingQuery(e.filter((e=>"text"===e.type)),A,i).concat(getFrameElementsMatchingQuery(e.filter((e=>"frame"===e.type)),A,i));if(0!==s.length){if(n){const A=this.plugin.ea.getElementsInTheSameGroupWithElement(s[0],e);A.length>0&&(s=A)}this.zoomToElements(t,s)}else new obsidian_module.Notice("I could not find a matching text element")}zoomToElements(e,A){const t=this.excalidrawAPI;if(!t)return;const i=this.plugin.settings.zoomToFitMaxLevel;e&&t.selectElements(A),t.zoomToFit(A,i,.05)}getViewElements(){const e=this.excalidrawAPI;return e?e.getSceneElements():[]}getViewSelectedElements(){var e;const A=this.excalidrawAPI;if(!A)return[];const t=null===(e=A.getAppState())||void 0===e?void 0:e.selectedElementIds;if(!t)return[];const i=Object.keys(t);if(!i)return[];const n=A.getSceneElements().filter((e=>i.includes(e.id))),s=n.filter((e=>e.boundElements&&e.boundElements.filter((e=>"text"===e.type)).length>0)).map((e=>e.boundElements.filter((e=>"text"===e.type)).map((e=>e.id))[0])),a=n.map((e=>e.id)).concat(s);return A.getSceneElements().filter((e=>a.contains(e.id)))}async copyLinkToSelectedElementToClipboard(e){const A=this.getViewSelectedElements();if(A.length<1)return void new obsidian_module.Notice(t$d("INSERT_LINK_TO_ELEMENT_ERROR"));let t;if(2===A.length){const e=A.filter((e=>"text"===e.type));1===e.length&&e[0].containerId&&1===A.filter((e=>e.boundElements.some((e=>"text"===e.type)))).length&&(t=e[0].id)}t||(t=1===A.length?A[0].id:this.plugin.ea.getLargestElement(A).id);let i=[];if(A.some((e=>e.id===t&&"frame"===e.type)))switch(e){case"area=":case"group=":case"frame=":i=[{caption:"Frame",action:()=>{e="frame="}},{caption:"Link",action:()=>{e=""}}];break;default:i=[{caption:"Link",action:()=>{e=""}},{caption:"Frame",action:()=>{e="frame="}}]}else switch(e){case"area=":i=[{caption:"Area",action:()=>{e="area="}},{caption:"Link",action:()=>{e=""}},{caption:"Group",action:()=>{e="group="}}];break;case"group=":i=[{caption:"Group",action:()=>{e="group="}},{caption:"Link",action:()=>{e=""}},{caption:"Area",action:()=>{e="area="}}];break;default:i=[{caption:"Link",action:()=>{e=""}},{caption:"Area",action:()=>{e="area="}},{caption:"Group",action:()=>{e="group="}}]}const n=await ScriptEngine.inputPrompt(this,this.plugin,app,"Set link alias","Leave empty if you do not want to set an alias","",i);navigator.clipboard.writeText(`${e.length>0?"!":""}[[${this.file.path}#^${e}${t}${n?`|${n}`:""}]]`),new obsidian_module.Notice(t$d("INSERT_LINK_TO_ELEMENT_READY"))}updateScene(e,A=!1){const t=this.excalidrawAPI;if(!t)return;const i=e.elements&&A;i&&(e.elements=restore(e,null,null).elements);try{t.updateScene(e)}catch(A){if(errorlog({where:"ExcalidrawView.updateScene 1st attempt",fn:this.updateScene,error:A,scene:e,willDoSecondAttempt:!i}),i)warningUnknowSeriousError();else try{e.elements=restore(e,null,null).elements,t.updateScene(e)}catch(A){errorlog({where:"ExcalidrawView.updateScene 2nd attempt",fn:this.updateScene,error:A,scene:e}),warningUnknowSeriousError()}}}updateEmbeddableRef(e,A){A&&this.embeddableRefs.set(e,A)}getEmbeddableElementById(e){return this.embeddableRefs.get(e)}updateEmbeddableLeafRef(e,A){A&&this.embeddableLeafRefs.set(e,A)}getEmbeddableLeafElementById(e){return this.embeddableLeafRefs.get(e)||null}get editor(){var e;const A=this.getActiveEmbeddable();if(A){if(A.node&&A.node.isEditing)return A.node.child.editor;if((null===(e=A.leaf)||void 0===e?void 0:e.view)instanceof obsidian_module.MarkdownView)return A.leaf.view.editor}return app.workspace.openLinkText,null}}function getTextMode(e){return e.search("excalidraw-plugin: parsed\n")>-1||e.search("excalidraw-plugin: locked\n")>-1?TextMode.parsed:TextMode.raw}const startupScript=()=>atob("LyoKI2V4Y2x1ZGUKYGBganMqLwovKioKICogSWYgc2V0LCB0aGlzIGNhbGxiYWNrIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGNsb3NlcyBhbiBFeGNhbGlkcmF3IHZpZXcuCiAqICAgb25WaWV3VW5sb2FkSG9vazogKHZpZXc6IEV4Y2FsaWRyYXdWaWV3KSA9PiB2b2lkID0gbnVsbDsKICovCi8vZWEub25WaWV3VW5sb2FkSG9vayA9ICh2aWV3KSA9PiB7fTsKCi8qKgogKiBJZiBzZXQsIHRoaXMgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkLCB3aGVuIHRoZSB1c2VyIGNoYW5nZXMgdGhlIHZpZXcgbW9kZS4KICogWW91IGNhbiB1c2UgdGhpcyBjYWxsYmFjayBpbiBjYXNlIHlvdSB3YW50IHRvIGRvIHNvbWV0aGluZyBhZGRpdGlvbmFsIHdoZW4gdGhlIHVzZXIgc3dpdGNoZXMgdG8gdmlldyBtb2RlIGFuZCBiYWNrLgogKiAgIG9uVmlld01vZGVDaGFuZ2VIb29rOiAoaXNWaWV3TW9kZUVuYWJsZWQ6Ym9vbGVhbiwgdmlldzogRXhjYWxpZHJhd1ZpZXcsIGVhOiBFeGNhbGlkcmF3QXV0b21hdGUpID0+IHZvaWQgPSBudWxsOwogKi8KLy9lYS5vblZpZXdNb2RlQ2hhbmdlSG9vayA9IChpc1ZpZXdNb2RlRW5hYmxlZCwgdmlldywgZWEpID0+IHt9OwoKLyoqCiAqIElmIHNldCwgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQsIHdoZW4gdGhlIHVzZXIgaG92ZXJzIGEgbGluayBpbiB0aGUgc2NlbmUuCiAqIFlvdSBjYW4gdXNlIHRoaXMgY2FsbGJhY2sgaW4gY2FzZSB5b3Ugd2FudCB0byBkbyBzb21ldGhpbmcgYWRkaXRpb25hbCB3aGVuIHRoZSBvbkxpbmtIb3ZlciBldmVudCBvY2N1cnMuCiAqIFRoaXMgY2FsbGJhY2sgbXVzdCByZXR1cm4gYSBib29sZWFuIHZhbHVlLgogKiBJbiBjYXNlIHlvdSB3YW50IHRvIHByZXZlbnQgdGhlIGV4Y2FsaWRyYXcgb25MaW5rSG92ZXIgYWN0aW9uIHlvdSBtdXN0IHJldHVybiBmYWxzZSwgaXQgd2lsbCBzdG9wIHRoZSBuYXRpdmUgZXhjYWxpZHJhdyBvbkxpbmtIb3ZlciBtYW5hZ2VtZW50IGZsb3cuCiAqICAgb25MaW5rSG92ZXJIb29rOiAoCiAqICAgICBlbGVtZW50OiBOb25EZWxldGVkRXhjYWxpZHJhd0VsZW1lbnQsCiAqICAgICBsaW5rVGV4dDogc3RyaW5nLAogKiAgICAgdmlldzogRXhjYWxpZHJhd1ZpZXcsCiAqICAgICBlYTogRXhjYWxpZHJhd0F1dG9tYXRlCiAqICAgKSA9PiBib29sZWFuID0gbnVsbDsKICovCi8vZWEub25MaW5rSG92ZXJIb29rID0gKGVsZW1lbnQsIGxpbmtUZXh0LCB2aWV3LCBlYSkgPT4ge307CiAgIAovKioKICogSWYgc2V0LCB0aGlzIGNhbGxiYWNrIGlzIHRyaWdnZXJlZCwgd2hlbiB0aGUgdXNlciBjbGlja3MgYSBsaW5rIGluIHRoZSBzY2VuZS4KICogWW91IGNhbiB1c2UgdGhpcyBjYWxsYmFjayBpbiBjYXNlIHlvdSB3YW50IHRvIGRvIHNvbWV0aGluZyBhZGRpdGlvbmFsIHdoZW4gdGhlIG9uTGlua0NsaWNrIGV2ZW50IG9jY3Vycy4KICogVGhpcyBjYWxsYmFjayBtdXN0IHJldHVybiBhIGJvb2xlYW4gdmFsdWUuCiAqIEluIGNhc2UgeW91IHdhbnQgdG8gcHJldmVudCB0aGUgZXhjYWxpZHJhdyBvbkxpbmtDbGljayBhY3Rpb24geW91IG11c3QgcmV0dXJuIGZhbHNlLCBpdCB3aWxsIHN0b3AgdGhlIG5hdGl2ZSBleGNhbGlkcmF3IG9uTGlua0NsaWNrIG1hbmFnZW1lbnQgZmxvdy4KICogICBvbkxpbmtDbGlja0hvb2s6KAogKiAgICAgZWxlbWVudDogRXhjYWxpZHJhd0VsZW1lbnQsCiAqICAgICBsaW5rVGV4dDogc3RyaW5nLAogKiAgICAgZXZlbnQ6IE1vdXNlRXZlbnQsCiAqICAgICB2aWV3OiBFeGNhbGlkcmF3VmlldywKICogICAgIGVhOiBFeGNhbGlkcmF3QXV0b21hdGUKICogICApID0+IGJvb2xlYW4gPSBudWxsOwogKi8KLy9lYS5vbkxpbmtDbGlja0hvb2sgPSAoZWxlbWVudCxsaW5rVGV4dCxldmVudCwgdmlldywgZWEpID0+IHt9OwogICAKLyoqCiAqIElmIHNldCwgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQsIHdoZW4gRXhjYWxpZHJhdyByZWNlaXZlcyBhbiBvbkRyb3AgZXZlbnQuIAogKiBZb3UgY2FuIHVzZSB0aGlzIGNhbGxiYWNrIGluIGNhc2UgeW91IHdhbnQgdG8gZG8gc29tZXRoaW5nIGFkZGl0aW9uYWwgd2hlbiB0aGUgb25Ecm9wIGV2ZW50IG9jY3Vycy4KICogVGhpcyBjYWxsYmFjayBtdXN0IHJldHVybiBhIGJvb2xlYW4gdmFsdWUuCiAqIEluIGNhc2UgeW91IHdhbnQgdG8gcHJldmVudCB0aGUgZXhjYWxpZHJhdyBvbkRyb3AgYWN0aW9uIHlvdSBtdXN0IHJldHVybiBmYWxzZSwgaXQgd2lsbCBzdG9wIHRoZSBuYXRpdmUgZXhjYWxpZHJhdyBvbkRyb3AgbWFuYWdlbWVudCBmbG93LgogKiAgIG9uRHJvcEhvb2s6IChkYXRhOiB7CiAqICAgICBlYTogRXhjYWxpZHJhd0F1dG9tYXRlOwogKiAgICAgZXZlbnQ6IFJlYWN0LkRyYWdFdmVudDxIVE1MRGl2RWxlbWVudD47CiAqICAgICBkcmFnZ2FibGU6IGFueTsgLy9PYnNpZGlhbiBkcmFnZ2FibGUgb2JqZWN0CiAqICAgICB0eXBlOiAiZmlsZSIgfCAidGV4dCIgfCAidW5rbm93biI7CiAqICAgICBwYXlsb2FkOiB7CiAqICAgICAgIGZpbGVzOiBURmlsZVtdOyAvL1RGaWxlW10gYXJyYXkgb2YgZHJvcHBlZCBmaWxlcwogKiAgICAgICB0ZXh0OiBzdHJpbmc7IC8vc3RyaW5nCiAqICAgICB9OwogKiAgICAgZXhjYWxpZHJhd0ZpbGU6IFRGaWxlOyAvL3RoZSBmaWxlIHJlY2VpdmluZyB0aGUgZHJvcCBldmVudAogKiAgICAgdmlldzogRXhjYWxpZHJhd1ZpZXc7IC8vdGhlIGV4Y2FsaWRyYXcgdmlldyByZWNlaXZpbmcgdGhlIGRyb3AKICogICAgIHBvaW50ZXJQb3NpdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9OyAvL3RoZSBwb2ludGVyIHBvc2l0aW9uIG9uIGNhbnZhcyBhdCB0aGUgdGltZSBvZiBkcm9wCiAqICAgfSkgPT4gYm9vbGVhbiA9IG51bGw7CiAqLwovL2VhLm9uRHJvcEhvb2sgPSAoZGF0YSkgPT4ge307CiAKLyoqCiAqIElmIHNldCwgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQsIHdoZW4gRXhjYWxpZHJhdyByZWNlaXZlcyBhbiBvblBhc3RlIGV2ZW50LgogKiBZb3UgY2FuIHVzZSB0aGlzIGNhbGxiYWNrIGluIGNhc2UgeW91IHdhbnQgdG8gZG8gc29tZXRoaW5nIGFkZGl0aW9uYWwgd2hlbiB0aGUKICogb25QYXN0ZSBldmVudCBvY2N1cnMuCiAqIFRoaXMgY2FsbGJhY2sgbXVzdCByZXR1cm4gYSBib29sZWFuIHZhbHVlLgogKiBJbiBjYXNlIHlvdSB3YW50IHRvIHByZXZlbnQgdGhlIGV4Y2FsaWRyYXcgb25QYXN0ZSBhY3Rpb24geW91IG11c3QgcmV0dXJuIGZhbHNlLAogKiBpdCB3aWxsIHN0b3AgdGhlIG5hdGl2ZSBleGNhbGlkcmF3IG9uUGFzdGUgbWFuYWdlbWVudCBmbG93LgogKiAgIG9uUGFzdGVIb29rOiAoZGF0YTogewogKiAgICAgZWE6IEV4Y2FsaWRyYXdBdXRvbWF0ZTsKICogICAgIHBheWxvYWQ6IENsaXBib2FyZERhdGE7CiAqICAgICBldmVudDogQ2xpcGJvYXJkRXZlbnQ7CiAqICAgICBleGNhbGlkcmF3RmlsZTogVEZpbGU7IC8vdGhlIGZpbGUgcmVjZWl2aW5nIHRoZSBwYXN0ZSBldmVudAogKiAgICAgdmlldzogRXhjYWxpZHJhd1ZpZXc7IC8vdGhlIGV4Y2FsaWRyYXcgdmlldyByZWNlaXZpbmcgdGhlIHBhc3RlCiAqICAgICBwb2ludGVyUG9zaXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfTsgLy90aGUgcG9pbnRlciBwb3NpdGlvbiBvbiBjYW52YXMKICogICB9KSA9PiBib29sZWFuID0gbnVsbDsKICovCi8vZWEub25QYXN0ZUhvb2sgPSAoZGF0YSkgPT4ge307CgovKioKICogaWYgc2V0LCB0aGlzIGNhbGxiYWNrIGlzIHRyaWdnZXJlZCwgd2hlbiBhbiBFeGNhbGlkcmF3IGZpbGUgaXMgb3BlbmVkCiAqIFlvdSBjYW4gdXNlIHRoaXMgY2FsbGJhY2sgaW4gY2FzZSB5b3Ugd2FudCB0byBkbyBzb21ldGhpbmcgYWRkaXRpb25hbCB3aGVuIHRoZSBmaWxlIGlzIG9wZW5lZC4KICogVGhpcyB3aWxsIHJ1biBiZWZvcmUgdGhlIGZpbGUgbGV2ZWwgc2NyaXB0IGRlZmluZWQgaW4gdGhlIGBleGNhbGlkcmF3LW9ubG9hZC1zY3JpcHRgIGZyb250bWF0dGVyLgogKiAgIG9uRmlsZU9wZW5Ib29rOiAoZGF0YTogewogKiAgICAgZWE6IEV4Y2FsaWRyYXdBdXRvbWF0ZTsKICogICAgIGV4Y2FsaWRyYXdGaWxlOiBURmlsZTsgLy90aGUgZmlsZSBiZWluZyBsb2FkZWQKICogICAgIHZpZXc6IEV4Y2FsaWRyYXdWaWV3OwogKiAgIH0pID0+IFByb21pc2U8dm9pZD47CiAqLwovL2VhLm9uRmlsZU9wZW5Ib29rID0gKGRhdGEpID0+IHt9OwoKLyoqCiAqIGlmIHNldCwgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQsIHdoZW4gYW4gRXhjYWxpZHJhdyBmaWxlIGlzIGNyZWF0ZWQKICogc2VlIGFsc286IGh0dHBzOi8vZ2l0aHViLmNvbS96c3ZpY3ppYW4vb2JzaWRpYW4tZXhjYWxpZHJhdy1wbHVnaW4vaXNzdWVzLzExMjQKICogICBvbkZpbGVDcmVhdGVIb29rOiAoZGF0YTogewogKiAgICAgZWE6IEV4Y2FsaWRyYXdBdXRvbWF0ZTsKICogICAgIGV4Y2FsaWRyYXdGaWxlOiBURmlsZTsgLy90aGUgZmlsZSBiZWluZyBjcmVhdGVkCiAqICAgICB2aWV3OiBFeGNhbGlkcmF3VmlldzsKICogICB9KSA9PiBQcm9taXNlPHZvaWQ+OwogKi8KLy9lYS5vbkZpbGVDcmVhdGVIb29rID0gKGRhdGEpID0+IHt9OyAKCi8qKgogKiBJZiBzZXQsIHRoaXMgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIHdoZW5ldmVyIHRoZSBhY3RpdmUgY2FudmFzIGNvbG9yIGNoYW5nZXMKICogICBvbkNhbnZhc0NvbG9yQ2hhbmdlSG9vazogKAogKiAgICAgZWE6IEV4Y2FsaWRyYXdBdXRvbWF0ZSwKICogICAgIHZpZXc6IEV4Y2FsaWRyYXdWaWV3LCAvL3RoZSBleGNhbGlkcmF3IHZpZXcgCiAqICAgICBjb2xvcjogc3RyaW5nLAogKiAgICkgPT4gdm9pZCA9IG51bGw7CiAqLwovL2VhLm9uQ2FudmFzQ29sb3JDaGFuZ2VIb29rID0gKGVhLCB2aWV3LCBjb2xvcikgPT4ge307"),DEFAULT_SETTINGS={folder:"Excalidraw",embedUseExcalidrawFolder:!1,templateFilePath:"Excalidraw/Template.excalidraw",scriptFolderPath:"Excalidraw/Scripts",compress:!1,autosave:!0,autosaveInterval:15e3,autosaveIntervalDesktop:15e3,autosaveIntervalMobile:1e4,drawingFilenamePrefix:"Drawing ",drawingEmbedPrefixWithFilename:!0,drawingFilnameEmbedPostfix:" ",drawingFilenameDateTime:"YYYY-MM-DD HH.mm.ss",useExcalidrawExtension:!0,displaySVGInPreview:void 0,previewImageType:void 0,allowImageCache:!0,displayExportedImageIfAvailable:!1,previewMatchObsidianTheme:!1,width:"400",dynamicStyling:"colorful",isLeftHanded:!1,iframeMatchExcalidrawTheme:!0,matchTheme:!1,matchThemeAlways:!1,matchThemeTrigger:!1,defaultMode:"normal",defaultPenMode:"never",allowPinchZoom:!1,allowWheelZoom:!1,zoomToFitOnOpen:!0,zoomToFitOnResize:!0,zoomToFitMaxLevel:2,linkPrefix:"📍",urlPrefix:"🌐",parseTODO:!1,todo:"☐",done:"🗹",hoverPreviewWithoutCTRL:!1,linkOpacity:1,openInAdjacentPane:!1,openInMainWorkspace:!0,showLinkBrackets:!0,allowCtrlClick:!0,forceWrap:!1,pageTransclusionCharLimit:200,wordWrappingDefault:0,removeTransclusionQuoteSigns:!0,iframelyAllowed:!0,pngExportScale:1,exportWithTheme:!0,exportWithBackground:!0,exportPaddingSVG:10,keepInSync:!1,autoexportSVG:!1,autoexportPNG:!1,autoExportLightAndDark:!1,autoexportExcalidraw:!1,embedType:"excalidraw",embedMarkdownCommentLinks:!0,embedWikiLink:!0,syncExcalidraw:!1,experimentalFileType:!1,experimentalFileTag:"✏️",experimentalLivePreview:!0,experimentalEnableFourthFont:!1,experimantalFourthFont:"Virgil",fieldSuggester:!0,compatibilityMode:!1,drawingOpenCount:0,library:"deprecated",library2:{type:"excalidrawlib",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,libraryItems:[]},imageElementNotice:!0,mdSVGwidth:500,mdSVGmaxHeight:800,mdFont:"Virgil",mdFontColor:"Black",mdBorderColor:"Black",mdCSS:"",scriptEngineSettings:{},defaultTrayMode:!0,previousRelease:"0.0.0",showReleaseNotes:!0,showNewVersionNotification:!0,latexBoilerplate:"\\color{blue}",taskboneEnabled:!1,taskboneAPIkey:"",pinnedScripts:[],customPens:[Object.assign({},PENS.default),Object.assign({},PENS.highlighter),Object.assign({},PENS.finetip),Object.assign({},PENS.fountain),Object.assign({},PENS.marker),Object.assign({},PENS["thick-thin"]),Object.assign({},PENS["thin-thick-thin"]),Object.assign({},PENS.default),Object.assign({},PENS.default),Object.assign({},PENS.default)],numberOfCustomPens:0,pdfScale:4,pdfBorderBox:!0,pdfGapSize:20,pdfGroupPages:!1,pdfLockAfterImport:!0,pdfNumColumns:1,pdfNumRows:1,pdfDirection:"right",pdfImportScale:.3,laserSettings:{DECAY_LENGTH:50,DECAY_TIME:1e3,COLOR:"#ff0000"},embeddableMarkdownDefaults:{useObsidianDefaults:!1,backgroundMatchCanvas:!1,backgroundMatchElement:!0,backgroundColor:"#fff",backgroundOpacity:60,borderMatchElement:!0,borderColor:"#fff",borderOpacity:0,filenameVisible:!1},canvasImmersiveEmbed:!0,startupScriptPath:"",openAIAPIToken:"",openAIDefaultTextModel:"gpt-3.5-turbo-1106",openAIDefaultVisionModel:"gpt-4-vision-preview"};class ExcalidrawSettingTab extends obsidian_module.PluginSettingTab{constructor(e,A){super(e,A),this.requestEmbedUpdate=!1,this.requestReloadDrawings=!1,this.requestUpdatePinnedPens=!1,this.requestUpdateDynamicStyling=!1,this.reloadMathJax=!1,this.plugin=A}applySettingsUpdate(e=!1){e&&(this.requestReloadDrawings=!0)}async hide(){if(this.plugin.settings.scriptFolderPath=obsidian_module.normalizePath(this.plugin.settings.scriptFolderPath),"/"!==this.plugin.settings.scriptFolderPath&&""!==this.plugin.settings.scriptFolderPath||(this.plugin.settings.scriptFolderPath="Excalidraw/Scripts"),this.plugin.saveSettings(),this.requestUpdatePinnedPens&&app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinnedCustomPens()})),this.requestUpdateDynamicStyling&&app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&setDynamicStyle(this.plugin.ea,e.view,e.view.previousBackgroundColor,this.plugin.settings.dynamicStyling)})),this.requestReloadDrawings){const e=app.workspace.getLeavesOfType("excalidraw");for(const A of e)A.view instanceof ExcalidrawView&&(await A.view.save(!1),await A.view.reload(!0));this.requestEmbedUpdate=!0}this.requestEmbedUpdate&&this.plugin.triggerEmbedUpdates(),this.plugin.scriptEngine.updateScriptPath(),this.reloadMathJax&&this.plugin.loadMathJax()}async display(){var e;let A;await this.plugin.loadSettings(),this.requestEmbedUpdate=!1,this.requestReloadDrawings=!1;const{containerEl:t}=this;t.addClass("excalidraw-settings"),this.containerEl.empty();const i=t.createDiv("coffee");i.addClass("ex-coffee-div"),i.createEl("a",{href:"https://ko-fi.com/zsolt"}).createEl("img",{attr:{src:"https://cdn.ko-fi.com/cdn/kofi3.png?v=3"}}).height=45,t.createEl("hr",{cls:"excalidraw-setting-hr"}),t.createDiv({text:t$d("BASIC_DESC"),cls:"setting-item-description"}),A=this.containerEl.createEl("details"),A.createEl("summary",{text:t$d("BASIC_HEAD"),cls:"excalidraw-setting-h1"}),new obsidian_module.Setting(A).setName(t$d("RELEASE_NOTES_NAME")).setDesc(fragWithHTML(t$d("RELEASE_NOTES_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.showReleaseNotes).onChange((async e=>{this.plugin.settings.showReleaseNotes=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("NEWVERSION_NOTIFICATION_NAME")).setDesc(fragWithHTML(t$d("NEWVERSION_NOTIFICATION_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.showNewVersionNotification).onChange((async e=>{this.plugin.settings.showNewVersionNotification=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("FOLDER_NAME")).setDesc(fragWithHTML(t$d("FOLDER_DESC"))).addText((e=>e.setPlaceholder("Excalidraw").setValue(this.plugin.settings.folder).onChange((async e=>{this.plugin.settings.folder=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("FOLDER_EMBED_NAME")).setDesc(fragWithHTML(t$d("FOLDER_EMBED_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.embedUseExcalidrawFolder).onChange((async e=>{this.plugin.settings.embedUseExcalidrawFolder=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("TEMPLATE_NAME")).setDesc(fragWithHTML(t$d("TEMPLATE_DESC"))).addText((e=>e.setPlaceholder("Excalidraw/Template").setValue(this.plugin.settings.templateFilePath).onChange((async e=>{this.plugin.settings.templateFilePath=e,this.applySettingsUpdate()})))),addIframe(A,"jgUpYznHP9A",216),new obsidian_module.Setting(A).setName(t$d("SCRIPT_FOLDER_NAME")).setDesc(fragWithHTML(t$d("SCRIPT_FOLDER_DESC"))).addText((e=>e.setPlaceholder("Excalidraw/Scripts").setValue(this.plugin.settings.scriptFolderPath).onChange((async e=>{this.plugin.settings.scriptFolderPath=e,this.applySettingsUpdate()})))),t.createEl("hr",{cls:"excalidraw-setting-hr"}),t.createDiv({text:t$d("SAVING_DESC"),cls:"setting-item-description"}),A=this.containerEl.createEl("details");const n=A;A.createEl("summary",{text:t$d("SAVING_HEAD"),cls:"excalidraw-setting-h1"}),new obsidian_module.Setting(A).setName(t$d("COMPRESS_NAME")).setDesc(fragWithHTML(t$d("COMPRESS_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.compress).onChange((async e=>{this.plugin.settings.compress=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("AUTOSAVE_INTERVAL_DESKTOP_NAME")).setDesc(fragWithHTML(t$d("AUTOSAVE_INTERVAL_DESKTOP_DESC"))).addDropdown((e=>e.addOption("15000","Frequent (every 15 seconds)").addOption("60000","Moderate (every 60 seconds)").addOption("300000","Rare (every 5 minutes)").addOption("900000","Practically never (every 15 minutes)").setValue(this.plugin.settings.autosaveIntervalDesktop.toString()).onChange((async e=>{this.plugin.settings.autosaveIntervalDesktop=parseInt(e),this.plugin.settings.autosaveInterval=app.isMobile?this.plugin.settings.autosaveIntervalMobile:this.plugin.settings.autosaveIntervalDesktop,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("AUTOSAVE_INTERVAL_MOBILE_NAME")).setDesc(fragWithHTML(t$d("AUTOSAVE_INTERVAL_MOBILE_DESC"))).addDropdown((e=>e.addOption("10000","Frequent (every 10 seconds)").addOption("30000","Moderate (every 30 seconds)").addOption("60000","Rare (every 1 minute)").addOption("300000","Practically never (every 5 minutes)").setValue(this.plugin.settings.autosaveIntervalMobile.toString()).onChange((async e=>{this.plugin.settings.autosaveIntervalMobile=parseInt(e),this.plugin.settings.autosaveInterval=app.isMobile?this.plugin.settings.autosaveIntervalMobile:this.plugin.settings.autosaveIntervalDesktop,this.applySettingsUpdate()})))),A=n.createEl("details"),A.createEl("summary",{text:t$d("FILENAME_HEAD"),cls:"excalidraw-setting-h3"}),A.createDiv("",(e=>{e.innerHTML=t$d("FILENAME_DESC")}));const s=()=>`${t$d("FILENAME_SAMPLE")}<a href='https://www.youtube.com/channel/UCC0gns4a9fhVkGkngvSumAQ' target='_blank'>${getDrawingFilename(this.plugin.settings)}</a></b><br>${t$d("FILENAME_EMBED_SAMPLE")}<a href='https://www.youtube.com/channel/UCC0gns4a9fhVkGkngvSumAQ' target='_blank'>${getEmbedFilename("{NOTE_NAME}",this.plugin.settings)}</a></b>`,a=A.createEl("p",{text:""});a.innerHTML=s(),new obsidian_module.Setting(A).setName(t$d("FILENAME_PREFIX_NAME")).setDesc(fragWithHTML(t$d("FILENAME_PREFIX_DESC"))).addText((e=>e.setPlaceholder("Drawing ").setValue(this.plugin.settings.drawingFilenamePrefix).onChange((async A=>{this.plugin.settings.drawingFilenamePrefix=A.replaceAll(/[<>:"/\\|?*]/g,"_"),e.setValue(this.plugin.settings.drawingFilenamePrefix),a.innerHTML=s(),this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("FILENAME_PREFIX_EMBED_NAME")).setDesc(fragWithHTML(t$d("FILENAME_PREFIX_EMBED_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.drawingEmbedPrefixWithFilename).onChange((async e=>{this.plugin.settings.drawingEmbedPrefixWithFilename=e,a.innerHTML=s(),this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("FILENAME_POSTFIX_NAME")).setDesc(fragWithHTML(t$d("FILENAME_POSTFIX_DESC"))).addText((e=>e.setPlaceholder("").setValue(this.plugin.settings.drawingFilnameEmbedPostfix).onChange((async A=>{this.plugin.settings.drawingFilnameEmbedPostfix=A.replaceAll(/[<>:"/\\|?*]/g,"_"),e.setValue(this.plugin.settings.drawingFilnameEmbedPostfix),a.innerHTML=s(),this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("FILENAME_DATE_NAME")).setDesc(fragWithHTML(t$d("FILENAME_DATE_DESC"))).addText((e=>e.setPlaceholder("YYYY-MM-DD HH.mm.ss").setValue(this.plugin.settings.drawingFilenameDateTime).onChange((async A=>{this.plugin.settings.drawingFilenameDateTime=A.replaceAll(/[<>:"/\\|?*]/g,"_"),e.setValue(this.plugin.settings.drawingFilenameDateTime),a.innerHTML=s(),this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("FILENAME_EXCALIDRAW_EXTENSION_NAME")).setDesc(fragWithHTML(t$d("FILENAME_EXCALIDRAW_EXTENSION_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.useExcalidrawExtension).onChange((async e=>{this.plugin.settings.useExcalidrawExtension=e,a.innerHTML=s(),this.applySettingsUpdate()})))),t.createEl("hr",{cls:"excalidraw-setting-hr"}),t.createDiv({text:t$d("AI_DESC"),cls:"setting-item-description"}),A=this.containerEl.createEl("details"),A.createEl("summary",{text:t$d("AI_HEAD"),cls:"excalidraw-setting-h1"}),new obsidian_module.Setting(A).setName(t$d("AI_OPENAI_TOKEN_NAME")).setDesc(fragWithHTML(t$d("AI_OPENAI_TOKEN_DESC"))).addText((e=>e.setPlaceholder(t$d("AI_OPENAI_TOKEN_PLACEHOLDER")).setValue(this.plugin.settings.openAIAPIToken).onChange((async e=>{this.plugin.settings.openAIAPIToken=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("AI_OPENAI_DEFAULT_MODEL_NAME")).setDesc(fragWithHTML(t$d("AI_OPENAI_DEFAULT_MODEL_DESC"))).addText((e=>e.setPlaceholder(t$d("AI_OPENAI_DEFAULT_MODEL_PLACEHOLDER")).setValue(this.plugin.settings.openAIDefaultTextModel).onChange((async e=>{this.plugin.settings.openAIDefaultTextModel=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("AI_OPENAI_DEFAULT_VISION_MODEL_NAME")).setDesc(fragWithHTML(t$d("AI_OPENAI_DEFAULT_VISION_MODEL_DESC"))).addText((e=>e.setPlaceholder(t$d("AI_OPENAI_DEFAULT_VISION_MODEL_PLACEHOLDER")).setValue(this.plugin.settings.openAIDefaultVisionModel).onChange((async e=>{this.plugin.settings.openAIDefaultVisionModel=e,this.applySettingsUpdate()})))),t.createEl("hr",{cls:"excalidraw-setting-hr"}),t.createDiv({text:t$d("DISPLAY_DESC"),cls:"setting-item-description"}),A=this.containerEl.createEl("details");const o=A;let r,l,c,g,d,u;A.createEl("summary",{text:t$d("DISPLAY_HEAD"),cls:"excalidraw-setting-h1"}),new obsidian_module.Setting(A).setName(t$d("DEFAULT_PEN_MODE_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_PEN_MODE_DESC"))).addDropdown((e=>e.addOption("never","Never").addOption("mobile","On Obsidian Mobile").addOption("always","Always").setValue(this.plugin.settings.defaultPenMode).onChange((async e=>{this.plugin.settings.defaultPenMode=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("LEFTHANDED_MODE_NAME")).setDesc(fragWithHTML(t$d("LEFTHANDED_MODE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.isLeftHanded).onChange((async e=>{this.plugin.settings.isLeftHanded=e,setLeftHandedMode(e),setTimeout((()=>setLeftHandedMode(e))),this.applySettingsUpdate()})))),addIframe(A,"H8Njp7ZXYag",999),A=o.createEl("details"),A.createEl("summary",{text:t$d("THEME_HEAD"),cls:"excalidraw-setting-h3"}),new obsidian_module.Setting(A).setName(t$d("DYNAMICSTYLE_NAME")).setDesc(fragWithHTML(t$d("DYNAMICSTYLE_DESC"))).addDropdown((e=>e.addOption("none","Dynamic Styling OFF").addOption("colorful","Match color").addOption("gray","Gray, match tone").setValue(this.plugin.settings.dynamicStyling).onChange((async e=>{this.requestUpdateDynamicStyling=!0,this.plugin.settings.dynamicStyling=e,this.applySettingsUpdate()})))),addIframe(A,"fypDth_-8q0"),new obsidian_module.Setting(A).setName(t$d("IFRAME_MATCH_THEME_NAME")).setDesc(fragWithHTML(t$d("IFRAME_MATCH_THEME_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.iframeMatchExcalidrawTheme).onChange((async e=>{this.plugin.settings.iframeMatchExcalidrawTheme=e,this.applySettingsUpdate(!0)})))),addIframe(A,"ICpoyMv6KSs"),new obsidian_module.Setting(A).setName(t$d("MATCH_THEME_NAME")).setDesc(fragWithHTML(t$d("MATCH_THEME_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.matchTheme).onChange((async e=>{this.plugin.settings.matchTheme=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("MATCH_THEME_ALWAYS_NAME")).setDesc(fragWithHTML(t$d("MATCH_THEME_ALWAYS_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.matchThemeAlways).onChange((async e=>{this.plugin.settings.matchThemeAlways=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("MATCH_THEME_TRIGGER_NAME")).setDesc(fragWithHTML(t$d("MATCH_THEME_TRIGGER_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.matchThemeTrigger).onChange((async e=>{this.plugin.settings.matchThemeTrigger=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("DEFAULT_OPEN_MODE_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_OPEN_MODE_DESC"))).addDropdown((e=>e.addOption("normal","Always in normal-mode").addOption("zen","Always in zen-mode").addOption("view","Always in view-mode").addOption("view-mobile","Usually normal, but view-mode on Phone").setValue(this.plugin.settings.defaultMode).onChange((async e=>{this.plugin.settings.defaultMode=e,this.applySettingsUpdate()})))),A=o.createEl("details"),A.createEl("summary",{text:t$d("ZOOM_HEAD"),cls:"excalidraw-setting-h3"}),new obsidian_module.Setting(A).setName(t$d("DEFAULT_PINCHZOOM_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_PINCHZOOM_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.allowPinchZoom).onChange((async e=>{this.plugin.settings.allowPinchZoom=e,app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinchZoom()})),this.applySettingsUpdate()})))),addIframe(A,"rBarRfcSxNo",107),new obsidian_module.Setting(A).setName(t$d("DEFAULT_WHEELZOOM_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_WHEELZOOM_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.allowWheelZoom).onChange((async e=>{this.plugin.settings.allowWheelZoom=e,app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updateWheelZoom()})),this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("ZOOM_TO_FIT_ONOPEN_NAME")).setDesc(fragWithHTML(t$d("ZOOM_TO_FIT_ONOPEN_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.zoomToFitOnOpen).onChange((async e=>{this.plugin.settings.zoomToFitOnOpen=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("ZOOM_TO_FIT_NAME")).setDesc(fragWithHTML(t$d("ZOOM_TO_FIT_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.zoomToFitOnResize).onChange((async e=>{this.plugin.settings.zoomToFitOnResize=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("ZOOM_TO_FIT_MAX_LEVEL_NAME")).setDesc(fragWithHTML(t$d("ZOOM_TO_FIT_MAX_LEVEL_DESC"))).addSlider((e=>e.setLimits(.5,10,.5).setValue(this.plugin.settings.zoomToFitMaxLevel).onChange((async e=>{r.innerText=` ${e.toString()}`,this.plugin.settings.zoomToFitMaxLevel=e,this.applySettingsUpdate()})))).settingEl.createDiv("",(e=>{r=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.zoomToFitMaxLevel.toString()}`})),A=o.createEl("details"),A.createEl("summary",{text:t$d("LASER_HEAD"),cls:"excalidraw-setting-h3"}),new obsidian_module.Setting(A).setName(t$d("LASER_COLOR")).addColorPicker((e=>e.setValue(this.plugin.settings.laserSettings.COLOR).onChange((async e=>{this.plugin.settings.laserSettings.COLOR=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("LASER_DECAY_TIME_NAME")).setDesc(fragWithHTML(t$d("LASER_DECAY_TIME_DESC"))).addSlider((e=>e.setLimits(500,2e4,500).setValue(this.plugin.settings.laserSettings.DECAY_TIME).onChange((async e=>{l.innerText=` ${e.toString()}`,this.plugin.settings.laserSettings.DECAY_TIME=e,this.applySettingsUpdate()})))).settingEl.createDiv("",(e=>{l=e,e.style.minWidth="3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.laserSettings.DECAY_TIME.toString()}`})),new obsidian_module.Setting(A).setName(t$d("LASER_DECAY_LENGTH_NAME")).setDesc(fragWithHTML(t$d("LASER_DECAY_LENGTH_DESC"))).addSlider((e=>e.setLimits(25,2e3,25).setValue(this.plugin.settings.laserSettings.DECAY_LENGTH).onChange((async e=>{c.innerText=` ${e.toString()}`,this.plugin.settings.laserSettings.DECAY_LENGTH=e,this.applySettingsUpdate()})))).settingEl.createDiv("",(e=>{c=e,e.style.minWidth="3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.laserSettings.DECAY_LENGTH.toString()}`})),t.createEl("hr",{cls:"excalidraw-setting-hr"}),t.createDiv({text:t$d("LINKS_HEAD_DESC"),cls:"setting-item-description"}),A=this.containerEl.createEl("details"),A.createEl("summary",{text:t$d("LINKS_HEAD"),cls:"excalidraw-setting-h1"}),A.createEl("span",void 0,(e=>e.innerHTML=t$d("LINKS_DESC"))),new obsidian_module.Setting(A).setName(t$d("ADJACENT_PANE_NAME")).setDesc(fragWithHTML(t$d("ADJACENT_PANE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.openInAdjacentPane).onChange((async e=>{this.plugin.settings.openInAdjacentPane=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("MAINWORKSPACE_PANE_NAME")).setDesc(fragWithHTML(t$d("MAINWORKSPACE_PANE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.openInMainWorkspace).onChange((async e=>{this.plugin.settings.openInMainWorkspace=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(fragWithHTML(t$d("LINK_BRACKETS_NAME"))).setDesc(fragWithHTML(t$d("LINK_BRACKETS_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.showLinkBrackets).onChange((e=>{this.plugin.settings.showLinkBrackets=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(A).setName(t$d("LINK_PREFIX_NAME")).setDesc(fragWithHTML(t$d("LINK_PREFIX_DESC"))).addText((e=>e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.linkPrefix).onChange((e=>{this.plugin.settings.linkPrefix=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(A).setName(t$d("URL_PREFIX_NAME")).setDesc(fragWithHTML(t$d("URL_PREFIX_DESC"))).addText((e=>e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.urlPrefix).onChange((e=>{this.plugin.settings.urlPrefix=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(A).setName(t$d("PARSE_TODO_NAME")).setDesc(fragWithHTML(t$d("PARSE_TODO_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.parseTODO).onChange((e=>{this.plugin.settings.parseTODO=e,g.setDisabled(!e),d.setDisabled(!e),this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(A).setName(t$d("TODO_NAME")).setDesc(fragWithHTML(t$d("TODO_DESC"))).addText((e=>{g=e,e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.todo).onChange((e=>{this.plugin.settings.todo=e,this.applySettingsUpdate(!0)}))})),g.setDisabled(!this.plugin.settings.parseTODO),new obsidian_module.Setting(A).setName(t$d("DONE_NAME")).setDesc(fragWithHTML(t$d("DONE_DESC"))).setDisabled(!this.plugin.settings.parseTODO).addText((e=>{d=e,e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.done).onChange((e=>{this.plugin.settings.done=e,this.applySettingsUpdate(!0)}))})),d.setDisabled(!this.plugin.settings.parseTODO),new obsidian_module.Setting(A).setName(t$d("LINKOPACITY_NAME")).setDesc(fragWithHTML(t$d("LINKOPACITY_DESC"))).addSlider((e=>e.setLimits(0,1,.05).setValue(this.plugin.settings.linkOpacity).onChange((async e=>{u.innerText=` ${e.toString()}`,this.plugin.settings.linkOpacity=e,this.applySettingsUpdate(!0)})))).settingEl.createDiv("",(e=>{u=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.linkOpacity.toString()}`})),new obsidian_module.Setting(A).setName(t$d("HOVERPREVIEW_NAME")).setDesc(fragWithHTML(t$d("HOVERPREVIEW_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.hoverPreviewWithoutCTRL).onChange((async e=>{this.plugin.settings.hoverPreviewWithoutCTRL=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("LINK_CTRL_CLICK_NAME")).setDesc(fragWithHTML(t$d("LINK_CTRL_CLICK_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.allowCtrlClick).onChange((async e=>{this.plugin.settings.allowCtrlClick=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("TRANSCLUSION_WRAP_NAME")).setDesc(fragWithHTML(t$d("TRANSCLUSION_WRAP_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.forceWrap).onChange((async e=>{this.plugin.settings.forceWrap=e,this.applySettingsUpdate(!0)})))).descEl.innerHTML=`<code>![[doc#^ref]]{number}</code> ${t$d("TRANSCLUSION_WRAP_DESC")}`,new obsidian_module.Setting(A).setName(t$d("PAGE_TRANSCLUSION_CHARCOUNT_NAME")).setDesc(fragWithHTML(t$d("PAGE_TRANSCLUSION_CHARCOUNT_DESC"))).addText((e=>e.setPlaceholder("Enter a number").setValue(this.plugin.settings.pageTransclusionCharLimit.toString()).onChange((async A=>{const t=parseInt(A);if(isNaN(t)&&""!==A)e.setValue(this.plugin.settings.pageTransclusionCharLimit.toString());else{if(this.requestEmbedUpdate=!0,""===A)return this.plugin.settings.pageTransclusionCharLimit=10,void this.applySettingsUpdate(!0);this.plugin.settings.pageTransclusionCharLimit=t,e.setValue(this.plugin.settings.pageTransclusionCharLimit.toString()),this.applySettingsUpdate(!0)}})))),new obsidian_module.Setting(A).setName(t$d("TRANSCLUSION_DEFAULT_WRAP_NAME")).setDesc(fragWithHTML(t$d("TRANSCLUSION_DEFAULT_WRAP_DESC"))).addText((e=>e.setPlaceholder("Enter a number").setValue(this.plugin.settings.wordWrappingDefault.toString()).onChange((async A=>{const t=parseInt(A);if(isNaN(t)&&""!==A)e.setValue(this.plugin.settings.wordWrappingDefault.toString());else{if(this.requestEmbedUpdate=!0,""===A)return this.plugin.settings.wordWrappingDefault=0,void this.applySettingsUpdate(!0);this.plugin.settings.wordWrappingDefault=t,e.setValue(this.plugin.settings.wordWrappingDefault.toString()),this.applySettingsUpdate(!0)}})))),new obsidian_module.Setting(A).setName(t$d("QUOTE_TRANSCLUSION_REMOVE_NAME")).setDesc(fragWithHTML(t$d("QUOTE_TRANSCLUSION_REMOVE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.removeTransclusionQuoteSigns).onChange((e=>{this.plugin.settings.removeTransclusionQuoteSigns=e,this.requestEmbedUpdate=!0,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(A).setName(t$d("GET_URL_TITLE_NAME")).setDesc(fragWithHTML(t$d("GET_URL_TITLE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.iframelyAllowed).onChange((async e=>{this.plugin.settings.iframelyAllowed=e,this.applySettingsUpdate()})))),t.createEl("hr",{cls:"excalidraw-setting-hr"}),t.createDiv({text:t$d("EMBED_DESC"),cls:"setting-item-description"}),A=this.containerEl.createEl("details");const h=A;let m,p;A.createEl("summary",{text:t$d("EMBED_HEAD"),cls:"excalidraw-setting-h1"}),new obsidian_module.Setting(A).setName(t$d("EMBED_PREVIEW_IMAGETYPE_NAME")).setDesc(fragWithHTML(t$d("EMBED_PREVIEW_IMAGETYPE_DESC"))).addDropdown((e=>e.addOption(PreviewImageType.PNG,"PNG Image").addOption(PreviewImageType.SVG,"Native SVG").addOption(PreviewImageType.SVGIMG,"SVG Image").setValue(this.plugin.settings.previewImageType).onChange((e=>{this.plugin.settings.previewImageType=e,this.requestEmbedUpdate=!0,this.applySettingsUpdate()})))),addIframe(A,"yZQoJg2RCKI"),addIframe(A,"opLd1SqaH_I",8),new obsidian_module.Setting(A).setName(t$d("EMBED_TYPE_NAME")).setDesc(fragWithHTML(t$d("EMBED_TYPE_DESC"))).addDropdown((async e=>{m=e,m.addOption("excalidraw","excalidraw"),this.plugin.settings.autoexportPNG?m.addOption("PNG","PNG"):"PNG"===this.plugin.settings.embedType&&(this.plugin.settings.embedType="excalidraw",this.applySettingsUpdate()),this.plugin.settings.autoexportSVG?m.addOption("SVG","SVG"):"SVG"===this.plugin.settings.embedType&&(this.plugin.settings.embedType="excalidraw",this.applySettingsUpdate()),m.setValue(this.plugin.settings.embedType).onChange((async e=>{this.plugin.settings.embedType=e,p.settingEl.style.display="excalidraw"===e?"none":"",this.applySettingsUpdate()}))})),p=new obsidian_module.Setting(A).setName(t$d("EMBED_MARKDOWN_COMMENT_NAME")).setDesc(fragWithHTML(t$d("EMBED_MARKDOWN_COMMENT_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.embedMarkdownCommentLinks).onChange((async e=>{this.plugin.settings.embedMarkdownCommentLinks=e,this.applySettingsUpdate()})))),p.settingEl.style.display="excalidraw"===this.plugin.settings.embedType?"none":"",new obsidian_module.Setting(A).setName(t$d("EMBED_WIKILINK_NAME")).setDesc(fragWithHTML(t$d("EMBED_WIKILINK_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.embedWikiLink).onChange((async e=>{this.plugin.settings.embedWikiLink=e,this.applySettingsUpdate()})))),A=h.createEl("details"),A.createEl("summary",{text:t$d("EMBED_CANVAS"),cls:"excalidraw-setting-h3"}),new obsidian_module.Setting(A).setName(t$d("EMBED_CANVAS_NAME")).setDesc(fragWithHTML(t$d("EMBED_CANVAS_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.canvasImmersiveEmbed).onChange((async e=>{this.plugin.settings.canvasImmersiveEmbed=e,this.applySettingsUpdate()})))),A=h.createEl("details"),A.createEl("summary",{text:t$d("EMBED_CACHING"),cls:"excalidraw-setting-h3"}),new obsidian_module.Setting(A).setName(t$d("EMBED_IMAGE_CACHE_NAME")).setDesc(fragWithHTML(t$d("EMBED_IMAGE_CACHE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.allowImageCache).onChange((e=>{this.plugin.settings.allowImageCache=e,this.applySettingsUpdate()})))).addButton((e=>e.setButtonText(t$d("EMBED_IMAGE_CACHE_CLEAR")).onClick((()=>{imageCache.clearImageCache()})))).addButton((e=>e.setButtonText(t$d("BACKUP_CACHE_CLEAR")).onClick((()=>{new ConfirmationPrompt(this.plugin,t$d("BACKUP_CACHE_CLEAR_CONFIRMATION")).waitForClose.then((e=>{e&&imageCache.clearBackupCache()}))})))),new obsidian_module.Setting(A).setName(t$d("EMBED_REUSE_EXPORTED_IMAGE_NAME")).setDesc(fragWithHTML(t$d("EMBED_REUSE_EXPORTED_IMAGE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.displayExportedImageIfAvailable).onChange((async e=>{this.plugin.settings.displayExportedImageIfAvailable=e,this.applySettingsUpdate()})))),A=h.createEl("details");const w=A;let B,E;A.createEl("summary",{text:t$d("EXPORT_SUBHEAD"),cls:"excalidraw-setting-h3"}),addIframe(A,"wTtaXmRJ7wg",171),A=w.createEl("details"),A.createEl("summary",{text:t$d("EMBED_SIZING"),cls:"excalidraw-setting-h4"}),new obsidian_module.Setting(A).setName(t$d("EMBED_WIDTH_NAME")).setDesc(fragWithHTML(t$d("EMBED_WIDTH_DESC"))).addText((e=>e.setPlaceholder("400").setValue(this.plugin.settings.width).onChange((async e=>{this.plugin.settings.width=e,this.applySettingsUpdate(),this.requestEmbedUpdate=!0})))),new obsidian_module.Setting(A).setName(t$d("EXPORT_PNG_SCALE_NAME")).setDesc(fragWithHTML(t$d("EXPORT_PNG_SCALE_DESC"))).addSlider((e=>e.setLimits(1,5,.5).setValue(this.plugin.settings.pngExportScale).onChange((async e=>{B.innerText=` ${e.toString()}`,this.plugin.settings.pngExportScale=e,this.applySettingsUpdate()})))).settingEl.createDiv("",(e=>{B=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.pngExportScale.toString()}`})),new obsidian_module.Setting(A).setName(t$d("EXPORT_PADDING_NAME")).setDesc(fragWithHTML(t$d("EXPORT_PADDING_DESC"))).addSlider((e=>e.setLimits(0,50,5).setValue(this.plugin.settings.exportPaddingSVG).onChange((async e=>{E.innerText=` ${e.toString()}`,this.plugin.settings.exportPaddingSVG=e,this.applySettingsUpdate()})))).settingEl.createDiv("",(e=>{E=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.exportPaddingSVG.toString()}`})),A=w.createEl("details"),A.createEl("summary",{text:t$d("EMBED_THEME_BACKGROUND"),cls:"excalidraw-setting-h4"}),new obsidian_module.Setting(A).setName(t$d("EXPORT_BACKGROUND_NAME")).setDesc(fragWithHTML(t$d("EXPORT_BACKGROUND_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.exportWithBackground).onChange((async e=>{this.plugin.settings.exportWithBackground=e,this.applySettingsUpdate(),this.requestEmbedUpdate=!0})))),new obsidian_module.Setting(A).setName(t$d("EXPORT_THEME_NAME")).setDesc(fragWithHTML(t$d("EXPORT_THEME_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.exportWithTheme).onChange((async e=>{this.plugin.settings.exportWithTheme=e,this.applySettingsUpdate(),this.requestEmbedUpdate=!0})))),new obsidian_module.Setting(A).setName(t$d("PREVIEW_MATCH_OBSIDIAN_NAME")).setDesc(fragWithHTML(t$d("PREVIEW_MATCH_OBSIDIAN_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.previewMatchObsidianTheme).onChange((async e=>{this.plugin.settings.previewMatchObsidianTheme=e,this.applySettingsUpdate()})))),A=w.createEl("details"),A.createEl("summary",{text:t$d("EXPORT_HEAD"),cls:"excalidraw-setting-h4"}),new obsidian_module.Setting(A).setName(t$d("EXPORT_SYNC_NAME")).setDesc(fragWithHTML(t$d("EXPORT_SYNC_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.keepInSync).onChange((async e=>{this.plugin.settings.keepInSync=e,this.applySettingsUpdate()}))));const k=e=>{let A=0;for(A=0;A<m.selectEl.options.length;A++)m.selectEl.item(A).label===e&&m.selectEl.item(A).remove()};new obsidian_module.Setting(A).setName(t$d("EXPORT_SVG_NAME")).setDesc(fragWithHTML(t$d("EXPORT_SVG_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.autoexportSVG).onChange((async e=>{e?m.addOption("SVG","SVG"):("SVG"===this.plugin.settings.embedType&&(m.setValue("excalidraw"),this.plugin.settings.embedType="excalidraw"),k("SVG")),this.plugin.settings.autoexportSVG=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("EXPORT_PNG_NAME")).setDesc(fragWithHTML(t$d("EXPORT_PNG_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.autoexportPNG).onChange((async e=>{e?m.addOption("PNG","PNG"):("PNG"===this.plugin.settings.embedType&&(m.setValue("excalidraw"),this.plugin.settings.embedType="excalidraw"),k("PNG")),this.plugin.settings.autoexportPNG=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("EXPORT_BOTH_DARK_AND_LIGHT_NAME")).setDesc(fragWithHTML(t$d("EXPORT_BOTH_DARK_AND_LIGHT_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.autoExportLightAndDark).onChange((async e=>{this.plugin.settings.autoExportLightAndDark=e,this.applySettingsUpdate()})))),t.createEl("hr",{cls:"excalidraw-setting-hr"}),t.createDiv({text:t$d("EMBED_TOEXCALIDRAW_DESC"),cls:"setting-item-description"}),A=this.containerEl.createEl("details");const f=A;A.createEl("summary",{text:t$d("EMBED_TOEXCALIDRAW_HEAD"),cls:"excalidraw-setting-h1"}),A=f.createEl("details"),A.createEl("summary",{text:t$d("PDF_TO_IMAGE"),cls:"excalidraw-setting-h3"}),addIframe(A,"nB4cOfn0xAs"),new obsidian_module.Setting(A).setName(t$d("PDF_TO_IMAGE_SCALE_NAME")).setDesc(fragWithHTML(t$d("PDF_TO_IMAGE_SCALE_DESC"))).addDropdown((e=>e.addOption("0.5","0.5").addOption("1","1").addOption("2","2").addOption("3","3").addOption("4","4").addOption("5","5").addOption("6","6").setValue(`${this.plugin.settings.pdfScale}`).onChange((e=>{this.plugin.settings.pdfScale=parseFloat(e),this.applySettingsUpdate()})))),A=f.createEl("details"),A.createEl("summary",{text:t$d("MD_EMBED_CUSTOMDATA_HEAD_NAME"),cls:"excalidraw-setting-h3"}),A.createEl("span",{text:t$d("MD_EMBED_CUSTOMDATA_HEAD_DESC")}),new EmbeddalbeMDFileCustomDataSettingsComponent(A,this.plugin.settings.embeddableMarkdownDefaults,this.applySettingsUpdate).render(),A=f.createEl("details"),A.createEl("summary",{text:t$d("MD_HEAD"),cls:"excalidraw-setting-h3"}),new obsidian_module.Setting(A).setName(t$d("MD_TRANSCLUDE_WIDTH_NAME")).setDesc(fragWithHTML(t$d("MD_TRANSCLUDE_WIDTH_DESC"))).addText((e=>e.setPlaceholder("Enter a number e.g. 500").setValue(this.plugin.settings.mdSVGwidth.toString()).onChange((async A=>{const t=parseInt(A);if(isNaN(t)&&""!==A)e.setValue(this.plugin.settings.mdSVGwidth.toString());else{if(this.requestEmbedUpdate=!0,""===A)return this.plugin.settings.mdSVGwidth=500,void this.applySettingsUpdate(!0);this.plugin.settings.mdSVGwidth=t,this.requestReloadDrawings=!0,e.setValue(this.plugin.settings.mdSVGwidth.toString()),this.applySettingsUpdate(!0)}})))),new obsidian_module.Setting(A).setName(t$d("MD_TRANSCLUDE_HEIGHT_NAME")).setDesc(fragWithHTML(t$d("MD_TRANSCLUDE_HEIGHT_DESC"))).addText((e=>e.setPlaceholder("Enter a number e.g. 800").setValue(this.plugin.settings.mdSVGmaxHeight.toString()).onChange((async A=>{const t=parseInt(A);if(isNaN(t)&&""!==A)e.setValue(this.plugin.settings.mdSVGmaxHeight.toString());else{if(this.requestEmbedUpdate=!0,""===A)return this.plugin.settings.mdSVGmaxHeight=800,void this.applySettingsUpdate(!0);this.plugin.settings.mdSVGmaxHeight=t,this.requestReloadDrawings=!0,e.setValue(this.plugin.settings.mdSVGmaxHeight.toString()),this.applySettingsUpdate(!0)}})))),new obsidian_module.Setting(A).setName(t$d("MD_DEFAULT_FONT_NAME")).setDesc(fragWithHTML(t$d("MD_DEFAULT_FONT_DESC"))).addDropdown((async e=>{e.addOption("Virgil","Virgil"),e.addOption("Cascadia","Cascadia"),e.addOption("Assistant","Assistant"),this.app.vault.getFiles().filter((e=>["ttf","woff","woff2"].contains(e.extension))).forEach((A=>{e.addOption(A.path,A.name)})),e.setValue(this.plugin.settings.mdFont).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.mdFont=e,this.applySettingsUpdate(!0)}))})),new obsidian_module.Setting(A).setName(t$d("MD_DEFAULT_COLOR_NAME")).setDesc(fragWithHTML(t$d("MD_DEFAULT_COLOR_DESC"))).addText((e=>e.setPlaceholder("CSS Color-name|RGB-HEX").setValue(this.plugin.settings.mdFontColor).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.mdFontColor=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(A).setName(t$d("MD_DEFAULT_BORDER_COLOR_NAME")).setDesc(fragWithHTML(t$d("MD_DEFAULT_BORDER_COLOR_DESC"))).addText((e=>e.setPlaceholder("CSS Color-name|RGB-HEX").setValue(this.plugin.settings.mdBorderColor).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.mdBorderColor=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(A).setName(t$d("MD_CSS_NAME")).setDesc(fragWithHTML(t$d("MD_CSS_DESC"))).addText((e=>e.setPlaceholder("filename of css file in vault").setValue(this.plugin.settings.mdCSS).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.mdCSS=e,this.applySettingsUpdate(!0)})))),t.createEl("hr",{cls:"excalidraw-setting-hr"}),t.createDiv({text:t$d("NONSTANDARD_DESC"),cls:"setting-item-description"}),A=this.containerEl.createEl("details");const C=A;A.createEl("summary",{text:t$d("NONSTANDARD_HEAD"),cls:"excalidraw-setting-h1"}),A=C.createEl("details"),A.createEl("summary",{text:t$d("CUSTOM_PEN_HEAD"),cls:"excalidraw-setting-h3"}),addIframe(A,"OjNhjaH2KjI",69),new obsidian_module.Setting(A).setName(t$d("CUSTOM_PEN_NAME")).setDesc(t$d("CUSTOM_PEN_DESC")).addDropdown((e=>e.addOption("0","0").addOption("1","1").addOption("2","2").addOption("3","3").addOption("4","4").addOption("5","5").addOption("6","6").addOption("7","7").addOption("8","8").addOption("9","9").addOption("10","10").setValue(this.plugin.settings.numberOfCustomPens.toString()).onChange((e=>{this.plugin.settings.numberOfCustomPens=parseInt(e),this.requestUpdatePinnedPens=!0,this.applySettingsUpdate(!1)})))),A=C.createEl("details"),A.createEl("summary",{text:t$d("CUSTOM_FONT_HEAD"),cls:"excalidraw-setting-h3"}),addIframe(A,"eKFmrSQhFA4"),new obsidian_module.Setting(A).setName(t$d("ENABLE_FOURTH_FONT_NAME")).setDesc(fragWithHTML(t$d("ENABLE_FOURTH_FONT_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.experimentalEnableFourthFont).onChange((async e=>{this.requestReloadDrawings=!0,this.plugin.settings.experimentalEnableFourthFont=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("FOURTH_FONT_NAME")).setDesc(fragWithHTML(t$d("FOURTH_FONT_DESC"))).addDropdown((async e=>{e.addOption("Virgil","Virgil"),this.app.vault.getFiles().filter((e=>["ttf","woff","woff2","otf"].contains(e.extension))).forEach((A=>{e.addOption(A.path,A.name)})),e.setValue(this.plugin.settings.experimantalFourthFont).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.experimantalFourthFont=e,this.applySettingsUpdate(!0),this.plugin.initializeFourthFont()}))})),t.createEl("hr",{cls:"excalidraw-setting-hr"}),t.createDiv({text:t$d("EXPERIMENTAL_DESC"),cls:"setting-item-description"}),A=t.createEl("details");const O=A;let W,b;A.createEl("summary",{text:t$d("EXPERIMENTAL_HEAD"),cls:"excalidraw-setting-h1"}),addIframe(A,"r08wk-58DPk"),new obsidian_module.Setting(A).setName(t$d("LATEX_DEFAULT_NAME")).setDesc(fragWithHTML(t$d("LATEX_DEFAULT_DESC"))).addText((e=>e.setValue(this.plugin.settings.latexBoilerplate).onChange((e=>{this.plugin.settings.latexBoilerplate=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("FILETYPE_NAME")).setDesc(fragWithHTML(t$d("FILETYPE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.experimentalFileType).onChange((async e=>{this.plugin.settings.experimentalFileType=e,this.plugin.experimentalFileTypeDisplayToggle(e),this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("FILETAG_NAME")).setDesc(fragWithHTML(t$d("FILETAG_DESC"))).addText((e=>e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.experimentalFileTag).onChange((async e=>{this.plugin.settings.experimentalFileTag=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("LIVEPREVIEW_NAME")).setDesc(fragWithHTML(t$d("LIVEPREVIEW_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.experimentalLivePreview).onChange((async e=>{this.plugin.settings.experimentalLivePreview=e,this.applySettingsUpdate()})))),A=O.createEl("details"),A.createEl("summary",{text:t$d("TASKBONE_HEAD"),cls:"excalidraw-setting-h3"}),A.createDiv({text:t$d("TASKBONE_DESC"),cls:"setting-item-description"}),addIframe(A,"7gu4ETx7zro"),new obsidian_module.Setting(A).setName(t$d("TASKBONE_ENABLE_NAME")).setDesc(fragWithHTML(t$d("TASKBONE_ENABLE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.taskboneEnabled).onChange((async e=>{if(W.setDisabled(!e),this.plugin.settings.taskboneEnabled=e,""===this.plugin.settings.taskboneAPIkey){const e=await this.plugin.taskbone.initialize(!1);e&&W.setValue(e)}this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("TASKBONE_APIKEY_NAME")).setDesc(fragWithHTML(t$d("TASKBONE_APIKEY_DESC"))).addText((e=>{W=e,W.setValue(this.plugin.settings.taskboneAPIkey).onChange((async e=>{this.plugin.settings.taskboneAPIkey=e,this.applySettingsUpdate()})).setDisabled(!this.plugin.settings.taskboneEnabled)})),t.createEl("hr",{cls:"excalidraw-setting-hr"}),t.createDiv({cls:"setting-item-description"},(e=>{e.innerHTML=t$d("EA_DESC")})),A=t.createEl("details"),A.createEl("summary",{text:t$d("EA_HEAD"),cls:"excalidraw-setting-h1"}),new obsidian_module.Setting(A).setName(t$d("FIELD_SUGGESTER_NAME")).setDesc(fragWithHTML(t$d("FIELD_SUGGESTER_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.fieldSuggester).onChange((async e=>{this.plugin.settings.fieldSuggester=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("STARTUP_SCRIPT_NAME")).setDesc(fragWithHTML(t$d("STARTUP_SCRIPT_DESC"))).addText((e=>{b=e,e.setValue(this.plugin.settings.startupScriptPath).onChange((e=>{this.plugin.settings.startupScriptPath=e,this.applySettingsUpdate()}))})).addButton((e=>e.setButtonText(t$d("STARTUP_SCRIPT_BUTTON")).onClick((async()=>{""===this.plugin.settings.startupScriptPath&&(this.plugin.settings.startupScriptPath=obsidian_module.normalizePath(obsidian_module.normalizePath(this.plugin.settings.folder)+"/ExcalidrawStartup"),b.setValue(this.plugin.settings.startupScriptPath),this.applySettingsUpdate());const e=obsidian_module.normalizePath(this.plugin.settings.startupScriptPath.endsWith(".md")?this.plugin.settings.startupScriptPath:this.plugin.settings.startupScriptPath+".md");if(this.app.vault.getAbstractFileByPath(e))return void new obsidian_module.Notice(t$d("STARTUP_SCRIPT_EXISTS"));const A=await this.app.vault.create(e,atob("LyoKI2V4Y2x1ZGUKYGBganMqLwovKioKICogSWYgc2V0LCB0aGlzIGNhbGxiYWNrIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGNsb3NlcyBhbiBFeGNhbGlkcmF3IHZpZXcuCiAqICAgb25WaWV3VW5sb2FkSG9vazogKHZpZXc6IEV4Y2FsaWRyYXdWaWV3KSA9PiB2b2lkID0gbnVsbDsKICovCi8vZWEub25WaWV3VW5sb2FkSG9vayA9ICh2aWV3KSA9PiB7fTsKCi8qKgogKiBJZiBzZXQsIHRoaXMgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkLCB3aGVuIHRoZSB1c2VyIGNoYW5nZXMgdGhlIHZpZXcgbW9kZS4KICogWW91IGNhbiB1c2UgdGhpcyBjYWxsYmFjayBpbiBjYXNlIHlvdSB3YW50IHRvIGRvIHNvbWV0aGluZyBhZGRpdGlvbmFsIHdoZW4gdGhlIHVzZXIgc3dpdGNoZXMgdG8gdmlldyBtb2RlIGFuZCBiYWNrLgogKiAgIG9uVmlld01vZGVDaGFuZ2VIb29rOiAoaXNWaWV3TW9kZUVuYWJsZWQ6Ym9vbGVhbiwgdmlldzogRXhjYWxpZHJhd1ZpZXcsIGVhOiBFeGNhbGlkcmF3QXV0b21hdGUpID0+IHZvaWQgPSBudWxsOwogKi8KLy9lYS5vblZpZXdNb2RlQ2hhbmdlSG9vayA9IChpc1ZpZXdNb2RlRW5hYmxlZCwgdmlldywgZWEpID0+IHt9OwoKLyoqCiAqIElmIHNldCwgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQsIHdoZW4gdGhlIHVzZXIgaG92ZXJzIGEgbGluayBpbiB0aGUgc2NlbmUuCiAqIFlvdSBjYW4gdXNlIHRoaXMgY2FsbGJhY2sgaW4gY2FzZSB5b3Ugd2FudCB0byBkbyBzb21ldGhpbmcgYWRkaXRpb25hbCB3aGVuIHRoZSBvbkxpbmtIb3ZlciBldmVudCBvY2N1cnMuCiAqIFRoaXMgY2FsbGJhY2sgbXVzdCByZXR1cm4gYSBib29sZWFuIHZhbHVlLgogKiBJbiBjYXNlIHlvdSB3YW50IHRvIHByZXZlbnQgdGhlIGV4Y2FsaWRyYXcgb25MaW5rSG92ZXIgYWN0aW9uIHlvdSBtdXN0IHJldHVybiBmYWxzZSwgaXQgd2lsbCBzdG9wIHRoZSBuYXRpdmUgZXhjYWxpZHJhdyBvbkxpbmtIb3ZlciBtYW5hZ2VtZW50IGZsb3cuCiAqICAgb25MaW5rSG92ZXJIb29rOiAoCiAqICAgICBlbGVtZW50OiBOb25EZWxldGVkRXhjYWxpZHJhd0VsZW1lbnQsCiAqICAgICBsaW5rVGV4dDogc3RyaW5nLAogKiAgICAgdmlldzogRXhjYWxpZHJhd1ZpZXcsCiAqICAgICBlYTogRXhjYWxpZHJhd0F1dG9tYXRlCiAqICAgKSA9PiBib29sZWFuID0gbnVsbDsKICovCi8vZWEub25MaW5rSG92ZXJIb29rID0gKGVsZW1lbnQsIGxpbmtUZXh0LCB2aWV3LCBlYSkgPT4ge307CiAgIAovKioKICogSWYgc2V0LCB0aGlzIGNhbGxiYWNrIGlzIHRyaWdnZXJlZCwgd2hlbiB0aGUgdXNlciBjbGlja3MgYSBsaW5rIGluIHRoZSBzY2VuZS4KICogWW91IGNhbiB1c2UgdGhpcyBjYWxsYmFjayBpbiBjYXNlIHlvdSB3YW50IHRvIGRvIHNvbWV0aGluZyBhZGRpdGlvbmFsIHdoZW4gdGhlIG9uTGlua0NsaWNrIGV2ZW50IG9jY3Vycy4KICogVGhpcyBjYWxsYmFjayBtdXN0IHJldHVybiBhIGJvb2xlYW4gdmFsdWUuCiAqIEluIGNhc2UgeW91IHdhbnQgdG8gcHJldmVudCB0aGUgZXhjYWxpZHJhdyBvbkxpbmtDbGljayBhY3Rpb24geW91IG11c3QgcmV0dXJuIGZhbHNlLCBpdCB3aWxsIHN0b3AgdGhlIG5hdGl2ZSBleGNhbGlkcmF3IG9uTGlua0NsaWNrIG1hbmFnZW1lbnQgZmxvdy4KICogICBvbkxpbmtDbGlja0hvb2s6KAogKiAgICAgZWxlbWVudDogRXhjYWxpZHJhd0VsZW1lbnQsCiAqICAgICBsaW5rVGV4dDogc3RyaW5nLAogKiAgICAgZXZlbnQ6IE1vdXNlRXZlbnQsCiAqICAgICB2aWV3OiBFeGNhbGlkcmF3VmlldywKICogICAgIGVhOiBFeGNhbGlkcmF3QXV0b21hdGUKICogICApID0+IGJvb2xlYW4gPSBudWxsOwogKi8KLy9lYS5vbkxpbmtDbGlja0hvb2sgPSAoZWxlbWVudCxsaW5rVGV4dCxldmVudCwgdmlldywgZWEpID0+IHt9OwogICAKLyoqCiAqIElmIHNldCwgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQsIHdoZW4gRXhjYWxpZHJhdyByZWNlaXZlcyBhbiBvbkRyb3AgZXZlbnQuIAogKiBZb3UgY2FuIHVzZSB0aGlzIGNhbGxiYWNrIGluIGNhc2UgeW91IHdhbnQgdG8gZG8gc29tZXRoaW5nIGFkZGl0aW9uYWwgd2hlbiB0aGUgb25Ecm9wIGV2ZW50IG9jY3Vycy4KICogVGhpcyBjYWxsYmFjayBtdXN0IHJldHVybiBhIGJvb2xlYW4gdmFsdWUuCiAqIEluIGNhc2UgeW91IHdhbnQgdG8gcHJldmVudCB0aGUgZXhjYWxpZHJhdyBvbkRyb3AgYWN0aW9uIHlvdSBtdXN0IHJldHVybiBmYWxzZSwgaXQgd2lsbCBzdG9wIHRoZSBuYXRpdmUgZXhjYWxpZHJhdyBvbkRyb3AgbWFuYWdlbWVudCBmbG93LgogKiAgIG9uRHJvcEhvb2s6IChkYXRhOiB7CiAqICAgICBlYTogRXhjYWxpZHJhd0F1dG9tYXRlOwogKiAgICAgZXZlbnQ6IFJlYWN0LkRyYWdFdmVudDxIVE1MRGl2RWxlbWVudD47CiAqICAgICBkcmFnZ2FibGU6IGFueTsgLy9PYnNpZGlhbiBkcmFnZ2FibGUgb2JqZWN0CiAqICAgICB0eXBlOiAiZmlsZSIgfCAidGV4dCIgfCAidW5rbm93biI7CiAqICAgICBwYXlsb2FkOiB7CiAqICAgICAgIGZpbGVzOiBURmlsZVtdOyAvL1RGaWxlW10gYXJyYXkgb2YgZHJvcHBlZCBmaWxlcwogKiAgICAgICB0ZXh0OiBzdHJpbmc7IC8vc3RyaW5nCiAqICAgICB9OwogKiAgICAgZXhjYWxpZHJhd0ZpbGU6IFRGaWxlOyAvL3RoZSBmaWxlIHJlY2VpdmluZyB0aGUgZHJvcCBldmVudAogKiAgICAgdmlldzogRXhjYWxpZHJhd1ZpZXc7IC8vdGhlIGV4Y2FsaWRyYXcgdmlldyByZWNlaXZpbmcgdGhlIGRyb3AKICogICAgIHBvaW50ZXJQb3NpdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9OyAvL3RoZSBwb2ludGVyIHBvc2l0aW9uIG9uIGNhbnZhcyBhdCB0aGUgdGltZSBvZiBkcm9wCiAqICAgfSkgPT4gYm9vbGVhbiA9IG51bGw7CiAqLwovL2VhLm9uRHJvcEhvb2sgPSAoZGF0YSkgPT4ge307CiAKLyoqCiAqIElmIHNldCwgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQsIHdoZW4gRXhjYWxpZHJhdyByZWNlaXZlcyBhbiBvblBhc3RlIGV2ZW50LgogKiBZb3UgY2FuIHVzZSB0aGlzIGNhbGxiYWNrIGluIGNhc2UgeW91IHdhbnQgdG8gZG8gc29tZXRoaW5nIGFkZGl0aW9uYWwgd2hlbiB0aGUKICogb25QYXN0ZSBldmVudCBvY2N1cnMuCiAqIFRoaXMgY2FsbGJhY2sgbXVzdCByZXR1cm4gYSBib29sZWFuIHZhbHVlLgogKiBJbiBjYXNlIHlvdSB3YW50IHRvIHByZXZlbnQgdGhlIGV4Y2FsaWRyYXcgb25QYXN0ZSBhY3Rpb24geW91IG11c3QgcmV0dXJuIGZhbHNlLAogKiBpdCB3aWxsIHN0b3AgdGhlIG5hdGl2ZSBleGNhbGlkcmF3IG9uUGFzdGUgbWFuYWdlbWVudCBmbG93LgogKiAgIG9uUGFzdGVIb29rOiAoZGF0YTogewogKiAgICAgZWE6IEV4Y2FsaWRyYXdBdXRvbWF0ZTsKICogICAgIHBheWxvYWQ6IENsaXBib2FyZERhdGE7CiAqICAgICBldmVudDogQ2xpcGJvYXJkRXZlbnQ7CiAqICAgICBleGNhbGlkcmF3RmlsZTogVEZpbGU7IC8vdGhlIGZpbGUgcmVjZWl2aW5nIHRoZSBwYXN0ZSBldmVudAogKiAgICAgdmlldzogRXhjYWxpZHJhd1ZpZXc7IC8vdGhlIGV4Y2FsaWRyYXcgdmlldyByZWNlaXZpbmcgdGhlIHBhc3RlCiAqICAgICBwb2ludGVyUG9zaXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfTsgLy90aGUgcG9pbnRlciBwb3NpdGlvbiBvbiBjYW52YXMKICogICB9KSA9PiBib29sZWFuID0gbnVsbDsKICovCi8vZWEub25QYXN0ZUhvb2sgPSAoZGF0YSkgPT4ge307CgovKioKICogaWYgc2V0LCB0aGlzIGNhbGxiYWNrIGlzIHRyaWdnZXJlZCwgd2hlbiBhbiBFeGNhbGlkcmF3IGZpbGUgaXMgb3BlbmVkCiAqIFlvdSBjYW4gdXNlIHRoaXMgY2FsbGJhY2sgaW4gY2FzZSB5b3Ugd2FudCB0byBkbyBzb21ldGhpbmcgYWRkaXRpb25hbCB3aGVuIHRoZSBmaWxlIGlzIG9wZW5lZC4KICogVGhpcyB3aWxsIHJ1biBiZWZvcmUgdGhlIGZpbGUgbGV2ZWwgc2NyaXB0IGRlZmluZWQgaW4gdGhlIGBleGNhbGlkcmF3LW9ubG9hZC1zY3JpcHRgIGZyb250bWF0dGVyLgogKiAgIG9uRmlsZU9wZW5Ib29rOiAoZGF0YTogewogKiAgICAgZWE6IEV4Y2FsaWRyYXdBdXRvbWF0ZTsKICogICAgIGV4Y2FsaWRyYXdGaWxlOiBURmlsZTsgLy90aGUgZmlsZSBiZWluZyBsb2FkZWQKICogICAgIHZpZXc6IEV4Y2FsaWRyYXdWaWV3OwogKiAgIH0pID0+IFByb21pc2U8dm9pZD47CiAqLwovL2VhLm9uRmlsZU9wZW5Ib29rID0gKGRhdGEpID0+IHt9OwoKLyoqCiAqIGlmIHNldCwgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQsIHdoZW4gYW4gRXhjYWxpZHJhdyBmaWxlIGlzIGNyZWF0ZWQKICogc2VlIGFsc286IGh0dHBzOi8vZ2l0aHViLmNvbS96c3ZpY3ppYW4vb2JzaWRpYW4tZXhjYWxpZHJhdy1wbHVnaW4vaXNzdWVzLzExMjQKICogICBvbkZpbGVDcmVhdGVIb29rOiAoZGF0YTogewogKiAgICAgZWE6IEV4Y2FsaWRyYXdBdXRvbWF0ZTsKICogICAgIGV4Y2FsaWRyYXdGaWxlOiBURmlsZTsgLy90aGUgZmlsZSBiZWluZyBjcmVhdGVkCiAqICAgICB2aWV3OiBFeGNhbGlkcmF3VmlldzsKICogICB9KSA9PiBQcm9taXNlPHZvaWQ+OwogKi8KLy9lYS5vbkZpbGVDcmVhdGVIb29rID0gKGRhdGEpID0+IHt9OyAKCi8qKgogKiBJZiBzZXQsIHRoaXMgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIHdoZW5ldmVyIHRoZSBhY3RpdmUgY2FudmFzIGNvbG9yIGNoYW5nZXMKICogICBvbkNhbnZhc0NvbG9yQ2hhbmdlSG9vazogKAogKiAgICAgZWE6IEV4Y2FsaWRyYXdBdXRvbWF0ZSwKICogICAgIHZpZXc6IEV4Y2FsaWRyYXdWaWV3LCAvL3RoZSBleGNhbGlkcmF3IHZpZXcgCiAqICAgICBjb2xvcjogc3RyaW5nLAogKiAgICkgPT4gdm9pZCA9IG51bGw7CiAqLwovL2VhLm9uQ2FudmFzQ29sb3JDaGFuZ2VIb29rID0gKGVhLCB2aWV3LCBjb2xvcikgPT4ge307"));this.app.workspace.openLinkText(A.path,"",!0)})))),t.createEl("hr",{cls:"excalidraw-setting-hr"}),t.createDiv({text:t$d("COMPATIBILITY_DESC"),cls:"setting-item-description"}),A=this.containerEl.createEl("details"),A.createEl("summary",{text:t$d("COMPATIBILITY_HEAD"),cls:"excalidraw-setting-h1"}),new obsidian_module.Setting(A).setName(t$d("COMPATIBILITY_MODE_NAME")).setDesc(fragWithHTML(t$d("COMPATIBILITY_MODE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.compatibilityMode).onChange((async e=>{this.plugin.settings.compatibilityMode=e,a.innerHTML=s(),this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("EXPORT_EXCALIDRAW_NAME")).setDesc(fragWithHTML(t$d("EXPORT_EXCALIDRAW_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.autoexportExcalidraw).onChange((async e=>{this.plugin.settings.autoexportExcalidraw=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(A).setName(t$d("SYNC_EXCALIDRAW_NAME")).setDesc(fragWithHTML(t$d("SYNC_EXCALIDRAW_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.syncExcalidraw).onChange((async e=>{this.plugin.settings.syncExcalidraw=e,this.applySettingsUpdate()}))));const x=null===(e=this.plugin.scriptEngine.getListofScripts())||void 0===e?void 0:e.map((e=>this.plugin.scriptEngine.getScriptName(e)));if(Object.keys(this.plugin.settings.scriptEngineSettings).length>0&&x){const e=(e,A)=>{const t=this.plugin.settings.scriptEngineSettings[e][A];return"object"==typeof t?t.height:null},i=(e,A)=>{const t=this.plugin.settings.scriptEngineSettings[e][A];return"object"==typeof t?t.value:t},n=(e,A,t)=>{"object"==typeof this.plugin.settings.scriptEngineSettings[e][A]?this.plugin.settings.scriptEngineSettings[e][A].value=t:this.plugin.settings.scriptEngineSettings[e][A]=t},s=(e,t,s)=>{new obsidian_module.Setting(A).setName(t).setDesc(fragWithHTML(null!=s?s:"")).addToggle((A=>A.setValue(i(e,t)).onChange((async A=>{n(e,t,A),this.applySettingsUpdate()}))))},a=(t,s,a,o)=>{o&&"[object Array]"===Object.prototype.toString.call(o)&&o.length>0?new obsidian_module.Setting(A).setName(s).setDesc(fragWithHTML(null!=a?a:"")).addDropdown((e=>{o.forEach((A=>e.addOption(A.toString(),A.toString()))),e.setValue(i(t,s)).onChange((async e=>{n(t,s,e),this.applySettingsUpdate()}))})):e(t,s)?new obsidian_module.Setting(A).setName(s).setDesc(fragWithHTML(null!=a?a:"")).addTextArea((A=>{A.inputEl.style.minHeight=e(t,s),A.inputEl.style.minWidth="400px",A.inputEl.style.width="100%",A.setValue(i(t,s)).onChange((async e=>{n(t,s,e),this.applySettingsUpdate()}))})):new obsidian_module.Setting(A).setName(s).setDesc(fragWithHTML(null!=a?a:"")).addText((e=>e.setValue(i(t,s)).onChange((async e=>{n(t,s,e),this.applySettingsUpdate()}))))},o=(e,t,s)=>{new obsidian_module.Setting(A).setName(t).setDesc(fragWithHTML(null!=s?s:"")).addText((A=>A.setPlaceholder("Enter a number").setValue(i(e,t).toString()).onChange((async s=>{const a=parseFloat(s);isNaN(a)&&""!==s?A.setValue(i(e,t).toString()):(n(e,t,isNaN(a)?0:a),this.applySettingsUpdate())}))))};t.createEl("hr",{cls:"excalidraw-setting-hr"}),t.createDiv({text:t$d("SCRIPT_SETTINGS_DESC"),cls:"setting-item-description"}),A=this.containerEl.createEl("details");const r=A;A.createEl("summary",{text:t$d("SCRIPT_SETTINGS_HEAD"),cls:"excalidraw-setting-h1"}),addIframe(A,"H8Njp7ZXYag",52),Object.keys(this.plugin.settings.scriptEngineSettings).filter((e=>x.contains(e))).forEach((e=>{const t=this.plugin.settings.scriptEngineSettings[e],i=Object.values(t);0===i.length||i.length>0&&0===i.map((e=>e.hidden?0:1)).reduce(((e,A)=>e+A))||(A=r.createEl("details"),A.createEl("summary",{text:e,cls:"excalidraw-setting-h3"}),Object.keys(t).forEach((A=>{var i;const n=t[A];switch(typeof(null!==(i=n.value)&&void 0!==i?i:n)){case"boolean":n.hidden||s(e,A,n.description);break;case"string":n.hidden||a(e,A,n.description,n.valueset);break;case"number":n.hidden||o(e,A,n.description)}})))}))}}}var openDialogAction;!function(e){e[e.openFile=0]="openFile",e[e.insertLinkToDrawing=1]="insertLinkToDrawing"}(openDialogAction||(openDialogAction={}));class OpenFileDialog extends obsidian_module.FuzzySuggestModal{constructor(e,A){super(e),this.app=e,this.action=openDialogAction.openFile,this.plugin=A,this.onNewPane=!1,this.limit=20,this.setInstructions([{command:t$d("TYPE_FILENAME"),purpose:""}]),this.inputEl.onkeyup=e=>{"Enter"==e.key&&this.action==openDialogAction.openFile&&this.containerEl.innerText.includes(EMPTY_MESSAGE)&&(this.plugin.createAndOpenDrawing(`${this.plugin.settings.folder}/${this.inputEl.value}.excalidraw.md`,this.onNewPane?"new-pane":"active-pane"),this.close())}}getItems(){return(this.app.vault.getFiles()||[]).filter((e=>this.plugin.isExcalidrawFile(e)))}getItemText(e){return e.path}onChooseItem(e){switch(this.action){case openDialogAction.openFile:this.plugin.openDrawing(e,this.onNewPane?"new-pane":"active-pane",!0);break;case openDialogAction.insertLinkToDrawing:this.plugin.embedDrawing(e)}}start(e,A){switch(this.action=e,this.onNewPane=A,e){case openDialogAction.openFile:this.emptyStateText=EMPTY_MESSAGE,this.setPlaceholder(t$d("SELECT_FILE_OR_TYPE_NEW"));break;case openDialogAction.insertLinkToDrawing:this.emptyStateText=t$d("NO_MATCH"),this.setPlaceholder(t$d("SELECT_TO_EMBED"))}this.open()}}class InsertLinkDialog extends obsidian_module.FuzzySuggestModal{constructor(e){super(e),this.app=e,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_FILE_TO_LINK")),this.emptyStateText=t$d("NO_MATCH")}getItems(){return this.app.metadataCache.getLinkSuggestions().filter((e=>!e.path.match(REG_LINKINDEX_INVALIDCHARS)))}getItemText(e){return e.path+(e.alias?`|${e.alias}`:"")}onChooseItem(e){let A=e.path;e.file&&(A=this.app.metadataCache.fileToLinktext(e.file,this.drawingPath,!0)),this.addText(`[[${A+(e.alias?`|${e.alias}`:"")}]]`,A,e.alias)}start(e,A){this.addText=A,this.drawingPath=e,this.open()}}class InsertCommandDialog extends obsidian_module.FuzzySuggestModal{constructor(e){super(e),this.app=e,this.limit=20,this.setInstructions([{command:t$d("SELECT_COMMAND"),purpose:""}]),this.setPlaceholder(t$d("SELECT_COMMAND_PLACEHOLDER")),this.emptyStateText=t$d("NO_MATCHING_COMMAND")}getItems(){return this.app.commands.listCommands()}getItemText(e){return e.name}onChooseItem(e){null==e||e.id,this.addText(`⚙️[${e.name}](cmd://${e.id})`)}start(e){this.addText=e,this.open()}}class InsertImageDialog extends obsidian_module.FuzzySuggestModal{constructor(e){super(e.app),this.plugin=e,this.app=e.app,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE_WITH_OPTION_TO_SCALE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_DRAWING")),this.emptyStateText=t$d("NO_MATCH"),this.inputEl.onkeyup=e=>{"Enter"===e.key&&scaleToFullsizeModifier(e)&&this.chooser.values&&(this.onChooseItem(this.chooser.values[this.chooser.selectedItem].item,new KeyboardEvent("keypress",{shiftKey:!0,metaKey:!(DEVICE.isIOS||DEVICE.isMacOS),ctrlKey:DEVICE.isIOS||DEVICE.isMacOS})),this.close())}}getItems(){return(this.app.vault.getFiles()||[]).filter((e=>(IMAGE_TYPES.contains(e.extension)||this.plugin.isExcalidrawFile(e))&&!e.path.match(REG_LINKINDEX_INVALIDCHARS)))}getItemText(e){return e.path}onChooseItem(e,A){const t=this.plugin.ea.getAPI(this.view);t.canvas.theme=this.view.excalidrawAPI.getAppState().theme;const i=scaleToFullsizeModifier(A);(async()=>{await t.addImage(0,0,e,!i),t.addElementsToView(!0,!0,!0)})()}start(e){this.view=e,this.open()}}class ImportSVGDialog extends obsidian_module.FuzzySuggestModal{constructor(e){super(e.app),this.plugin=e,this.app=e.app,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_DRAWING")),this.emptyStateText=t$d("NO_MATCH")}getItems(){return(this.app.vault.getFiles()||[]).filter((e=>"svg"===e.extension&&!e.path.match(REG_LINKINDEX_INVALIDCHARS)))}getItemText(e){return e.path}async onChooseItem(e,A){if(!e)return;const t=this.plugin.ea;t.reset(),t.setView(this.view);const i=await app.vault.read(e);i&&""!==i&&(t.importSVG(i),t.addElementsToView(!0,!0,!0,!0))}start(e){this.view=e,this.open()}}class InsertMDDialog extends obsidian_module.FuzzySuggestModal{constructor(e){super(e.app),this.plugin=e,this.app=e.app,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_MD")),this.emptyStateText=t$d("NO_MATCH")}getItems(){return(this.app.vault.getFiles()||[]).filter((e=>"md"===e.extension&&!this.plugin.isExcalidrawFile(e)))}getItemText(e){return e.path}onChooseItem(e){const A=this.plugin.ea;A.reset(),A.setView(this.view),(async()=>{await A.addImage(0,0,e),A.addElementsToView(!0,!1,!0)})()}start(e){this.view=e,this.open()}}function around(e,A){const t=Object.keys(A).map((t=>around1(e,t,A[t])));return 1===t.length?t[0]:function(){t.forEach((e=>e()))}}function around1(e,A,t){const i=e[A],n=e.hasOwnProperty(A);let s=t(i);return i&&Object.setPrototypeOf(s,i),Object.setPrototypeOf(a,s),e[A]=a,o;function a(...t){return s===i&&e[A]===a&&o(),s.apply(this,t)}function o(){e[A]===a&&(n?e[A]=i:delete e[A]),s!==i&&(s=i,Object.setPrototypeOf(a,i||Function))}}function dedupe(e,A,t){return i[e]=e,i;function i(...i){return(A[e]===e?A:t).apply(this,i)}}let plugin,vault,metadataCache;const getDefaultWidth=e=>{const A=parseInt(e.settings.width);return isNaN(A)||0===A||null===A?"400":e.settings.width},initializeMarkdownPostProcessor=e=>{plugin=e,vault=e.app.vault,metadataCache=e.app.metadataCache},_getPNG=async({imgAttributes:e,filenameParts:A,theme:t,cacheReady:i,img:n,file:s,exportSettings:a,loader:o})=>{const r=parseInt(e.fwidth),l=r>=2400?5:r>=1800?4:r>=1200?3:r>=600?2:1,c=Object.assign(Object.assign({},A),{isDark:"dark"===t,previewImageType:PreviewImageType.PNG,scale:l});if(i){const e=await imageCache.getImageFromCache(c);if(e&&"string"==typeof e)return n.src=e,n}const g=A.hasGroupref||A.hasFrameref?void 0:await getQuickImagePreview(plugin,s.path,"png"),d=null!=g?g:await createPNG(A.hasGroupref||A.hasFrameref?A.filepath+A.linkpartReference:s.path,l,a,o,t,null,null,[],plugin,0);return d?(n.src=URL.createObjectURL(d),i&&imageCache.addImageToCache(c,n.src,d),n):null},setStyle=({element:e,imgAttributes:A,onCanvas:t})=>{let i=`max-width:${A.fwidth}${A.fwidth.match(/\d$/)?"px":""}; `;A.fheight&&(i+=`height:${A.fheight}px;`),t||e.setAttribute("style",i),e.classList.add(...Array.from(A.style)),e.hasClass("excalidraw-embedded-img")||e.addClass("excalidraw-embedded-img"),window.ExcalidrawAutomate.plugin.settings.canvasImmersiveEmbed&&!e.hasClass("excalidraw-canvas-immersive")&&e.addClass("excalidraw-canvas-immersive")},_getSVGIMG=async({filenameParts:e,theme:A,cacheReady:t,img:i,file:n,exportSettings:s,loader:a})=>{const o=Object.assign(Object.assign({},e),{isDark:"dark"===A,previewImageType:PreviewImageType.SVGIMG,scale:1});if(t){const e=await imageCache.getImageFromCache(o);if(e&&"string"==typeof e)return i.setAttribute("src",e),i}if(!e.hasBlockref&&!e.hasSectionref){const e=await getQuickImagePreview(plugin,n.path,"svg");if(e){const A=convertSVGStringToElement(e);if(A)return addSVGToImgSrc(i,A,t,o)}}let r=convertSVGStringToElement((await createSVG(e.hasGroupref||e.hasBlockref||e.hasSectionref||e.hasFrameref?e.filepath+e.linkpartReference:n.path,!0,s,a,A,null,null,[],plugin,0,getExportPadding(plugin,n))).outerHTML);return r?(r=embedFontsInSVG(r,plugin,!1),r.removeAttribute("width"),r.removeAttribute("height"),addSVGToImgSrc(i,r,t,o)):null},_getSVGNative=async({filenameParts:e,theme:A,cacheReady:t,containerElement:i,file:n,exportSettings:s,loader:a})=>{const o=Object.assign(Object.assign({},e),{isDark:"dark"===A,previewImageType:PreviewImageType.SVG,scale:1});let r;t&&(r=await imageCache.getImageFromCache(o));let l=r&&r instanceof SVGSVGElement?r:convertSVGStringToElement((await createSVG(e.hasGroupref||e.hasBlockref||e.hasSectionref||e.hasFrameref?e.filepath+e.linkpartReference:n.path,!1,s,a,A,null,null,[],plugin,0,getExportPadding(plugin,n),void 0,!0)).outerHTML);return l?(l=embedFontsInSVG(l,plugin,!0),l.removeAttribute("width"),l.removeAttribute("height"),i.append(l),t&&imageCache.addImageToCache(o,"",l),i):null},getIMG=async(e,A=!1)=>{var t;let i=e.file;if(!e.file){const A=vault.getAbstractFileByPath(null===(t=e.fname)||void 0===t?void 0:t.split("#")[0]);if(!(A&&A instanceof obsidian_module.TFile))return null;i=A}const n=getEmbeddedFilenameParts(e.fname);e.style=e.style.map((e=>e.replaceAll(" ","-")));const s=hasExportTheme(plugin,i)?getExportTheme(plugin,i,"light"):void 0,a={withBackground:getWithBackground(plugin,i),withTheme:!!s||plugin.settings.exportWithTheme},o=null!=s?s:plugin.settings.previewMatchObsidianTheme?isObsidianThemeDark()?"dark":"light":plugin.settings.exportWithTheme?void 0:"light";o&&(a.withTheme=!0);const r=new EmbeddedFilesLoader(plugin,o?"dark"===o:void 0),l=imageCache.isReady();switch(plugin.settings.previewImageType){case PreviewImageType.PNG:{const t=createEl("img");return setStyle({element:t,imgAttributes:e,onCanvas:A}),_getPNG({imgAttributes:e,filenameParts:n,theme:o,cacheReady:l,img:t,file:i,exportSettings:a,loader:r})}case PreviewImageType.SVGIMG:{const t=createEl("img");return setStyle({element:t,imgAttributes:e,onCanvas:A}),_getSVGIMG({filenameParts:n,theme:o,cacheReady:l,img:t,file:i,exportSettings:a,loader:r})}case PreviewImageType.SVG:{const t=createEl("div");return setStyle({element:t,imgAttributes:e,onCanvas:A}),_getSVGNative({filenameParts:n,theme:o,cacheReady:l,containerElement:t,file:i,exportSettings:a,loader:r})}}},addSVGToImgSrc=(e,A,t,i)=>{const n=(new XMLSerializer).serializeToString(A),s=new Blob([n],{type:"image/svg+xml"}),a=URL.createObjectURL(s);return e.setAttribute("src",a),t&&imageCache.addImageToCache(i,a,s),e},createImgElement=async(e,A=!1)=>{const t=await getIMG(e,A);if(!t)return null;let i;t.setAttribute("fileSource",e.fname),e.fwidth&&t.setAttribute("w",e.fwidth),e.fheight&&t.setAttribute("h",e.fheight),t.setAttribute("draggable","false"),t.setAttribute("onCanvas",A?"true":"false");const n=e=>{if(!(e.target instanceof Element))return;if(!(e.target.hasClass("excalidraw-embedded-img")?e.target:getParentOfClass(e.target,"excalidraw-embedded-img")))return;const A=t.getAttribute("fileSource");if(A){const t=A.match(/([^#]*)(.*)/);if(!t)return;plugin.openDrawing(vault.getAbstractFileByPath(t[1]),linkClickModifierType(e),!0,t[2])}};let s;const a=t;return a.addEventListener("pointermove",(e=>{i&&(Math.abs(e.screenX-s.screenX)>10||Math.abs(e.screenY-s.screenY)>10)&&(clearTimeout(i),i=null)})),a.addEventListener("pointerdown",(e=>{var A;(null===(A=null==t?void 0:t.parentElement)||void 0===A?void 0:A.hasClass("canvas-node-content"))||(i=setTimeout((()=>n(e)),500),s=e)})),a.addEventListener("pointerup",(()=>{i&&clearTimeout(i),i=null})),a.addEventListener("dblclick",n),a.addEventListener(RERENDER_EVENT,(async e=>{e.stopPropagation();const A=t.parentElement,i=t.style.maxWidth,n=t.style.maxHeight,s=t.getAttribute("fileSource"),a="true"===t.getAttribute("onCanvas"),o=await createImgElement({fname:s,fwidth:t.getAttribute("w"),fheight:t.getAttribute("h"),style:[...Array.from(t.classList)]},a);A.empty(),a||(o.style.maxHeight=n,o.style.maxWidth=i),o.setAttribute("fileSource",s),A.append(o)})),getFileCSSClasses(e.file).forEach((e=>{t.hasClass(e)||t.addClass(e)})),window.ExcalidrawAutomate.plugin.settings.canvasImmersiveEmbed?t.hasClass("excalidraw-canvas-immersive")||t.addClass("excalidraw-canvas-immersive"):t.hasClass("excalidraw-canvas-immersive")&&t.removeClass("excalidraw-canvas-immersive"),t},createImageDiv=async(e,A=!1)=>{const t=await createImgElement(e,A);return createDiv(e.style.join(" "),(e=>e.append(t)))},processReadingMode=async(e,A)=>{var t;for(const i of e){const e=null===(t=i.getAttribute("src"))||void 0===t?void 0:t.split("#")[0];if(!e)continue;const n=metadataCache.getFirstLinkpathDest(e,A.sourcePath);if(n&&n instanceof obsidian_module.TFile&&plugin.isExcalidrawFile(n)){if(isTextOnlyEmbed(i))continue;i.parentElement.replaceChild(await processInternalEmbed(i,n),i)}}},processInternalEmbed=async(e,A)=>{const t={fname:"",fheight:"",fwidth:"",style:[]},i=e.getAttribute("src");if(!i)return;e.removeClass("markdown-embed"),e.removeClass("inline-embed"),e.addClass("media-embed"),e.addClass("image-embed"),t.fwidth=e.getAttribute("width")?e.getAttribute("width"):getDefaultWidth(plugin),t.fheight=e.getAttribute("height");let n=e.getAttribute("alt");t.style=["excalidraw-svg"],processAltText(i.split("#")[0],n,t);const s=getEmbeddedFilenameParts(i);return t.fname=(null==A?void 0:A.path)+(s.hasBlockref||s.hasSectionref?s.linkpartReference:""),t.file=A,await createImageDiv(t)},processAltText=(e,A,t)=>{var i,n;if(A&&!A.startsWith(e)){const s=A.match(/[^\|\d]*\|?((\d*%?)x?(\d*%?))?\|?(.*)/);t.fwidth=null!==(i=s[2])&&void 0!==i?i:t.fwidth,t.fheight=null!==(n=s[3])&&void 0!==n?n:t.fheight,s[4]&&!s[4].startsWith(e)&&(t.style=[`excalidraw-svg-${s[4]}`]),s[4]&&""!==s[4]||s[2]&&""!==s[2]||!s[0]||""===s[0]||(t.style=[`excalidraw-svg-${s[0]}`])}},isTextOnlyEmbed=e=>{const A=e.getAttribute("src");if(!A)return!0;const t=getEmbeddedFilenameParts(A);return!(t.hasArearef||t.hasGroupref||t.hasFrameref)&&(t.hasBlockref||t.hasSectionref)},tmpObsidianWYSIWYG=async(e,A)=>{const t=app.vault.getAbstractFileByPath(A.sourcePath);if(!(t instanceof obsidian_module.TFile))return;if(!plugin.isExcalidrawFile(t))return;if(A.remainingNestLevel<4)return;const i=A.containerEl;let n=i;for(;!n.hasClass("dataview")&&!n.hasClass("cm-preview-code-block")&&!n.hasClass("cm-embed-block")&&!n.hasClass("internal-embed")&&!n.hasClass("markdown-reading-view")&&!n.hasClass("markdown-embed")&&n.parentElement;)n=n.parentElement;if(n.hasClass("dataview")||n.hasClass("cm-preview-code-block")||n.hasClass("cm-embed-block"))return;const s={fname:A.sourcePath,fheight:"",fwidth:getDefaultWidth(plugin),style:["excalidraw-svg"]};s.file=t;const a=n.hasClass("markdown-embed"),o=n.hasClass("markdown-reading-view");if(!n.hasClass("internal-embed")&&(a||o)){const A=Boolean(e.querySelector(".frontmatter"));if(e.empty(),!A)return void(e.parentElement===i&&i.removeChild(e));n.empty();const t=n.hasClass("canvas-node-content"),o=await createImageDiv(s,t);return a?(n.removeClass("markdown-embed"),n.removeClass("inline-embed"),n.addClass("media-embed"),n.addClass("image-embed"),!t&&o.firstChild instanceof HTMLElement&&(o.firstChild.style.maxHeight="100%",o.firstChild.style.maxWidth=null),void n.appendChild(o.firstChild)):void n.appendChild(o)}if(isTextOnlyEmbed(n))return;if(e.empty(),n.hasAttribute("ready"))return;n.setAttribute("ready",""),n.empty();const r=await processInternalEmbed(n,t);n.appendChild(r);let l=null;const c=new MutationObserver((e=>{var A;["alt","width","height"].contains(null===(A=e[0])||void 0===A?void 0:A.attributeName)&&(l&&clearTimeout(l),l=setTimeout((async()=>{l=null,n.empty();const e=await processInternalEmbed(n,t);n.appendChild(e)}),500))}));c.observe(n,{attributes:!0})},markdownPostProcessor=async(e,A)=>{var t;const i=e.querySelectorAll(".internal-embed");0!==i.length?Boolean(null===(t=A.frontmatter)||void 0===t?void 0:t.hasOwnProperty("excalidraw-plugin"))?e.style.display="none":await processReadingMode(i,A):tmpObsidianWYSIWYG(e,A)},hoverEvent=e=>{e.linktext?(plugin.hover.linkText=e.linktext,plugin.hover.sourcePath=e.sourcePath):plugin.hover.linkText=null},legacyExcalidrawPopoverObserverFn=async e=>{if(0===e.length)return;if(!plugin.hover.linkText)return;if(!plugin.hover.linkText.endsWith("excalidraw"))return;const A=metadataCache.getFirstLinkpathDest(plugin.hover.linkText,plugin.hover.sourcePath?plugin.hover.sourcePath:"");if(!A)return;if(!(A instanceof obsidian_module.TFile))return;if("excalidraw"!==A.extension)return;const t=getIMGFilename(A.path,"svg"),i=vault.getAbstractFileByPath(t);if(i&&i instanceof obsidian_module.TFile)return;const n=getIMGFilename(A.path,"png"),s=vault.getAbstractFileByPath(n);if(s&&s instanceof obsidian_module.TFile)return;if(!plugin.hover.linkText)return;if(1!=e.length)return;if(1!=e[0].addedNodes.length)return;if("popover hover-popover"!==e[0].addedNodes[0].className)return;const a=e[0].addedNodes[0];a.empty();const o=await getIMG({file:A,fname:A.path,fwidth:"300",fheight:null,style:["excalidraw-svg"]}),r=createDiv("",(async e=>{e.appendChild(o),e.setAttribute("src",A.path),e.onClickEvent((A=>{A.stopImmediatePropagation();const t=e.getAttribute("src");t&&plugin.openDrawing(vault.getAbstractFileByPath(t),linkClickModifierType(A))}))}));a.appendChild(r)},observer=new MutationObserver(legacyExcalidrawPopoverObserverFn),EXCALIDRAW_AUTOMATE_INFO=[{field:"plugin",code:null,desc:"The ExcalidrawPlugin object",after:""},{field:"elementsDict",code:null,desc:"The {} dictionary object, contains the ExcalidrawElements currently edited in Automate indexed by el.id",after:'[""]'},{field:"imagesDict",code:null,desc:"the images files including DataURL, indexed by fileId",after:'[""]'},{field:"style.strokeColor",code:"[string]",desc:"A valid css color. See <a onclick='window.open(\"https://www.w3schools.com/colors/default.asp\")'>W3 School Colors</a> for more.",after:""},{field:"style.backgroundColor",code:"[string]",desc:"A valid css color. See <a onclick='window.open(\"https://www.w3schools.com/colors/default.asp\")'>W3 School Colors</a> for more.",after:""},{field:"style.angle",code:"[number]",desc:"Rotation of the object in radian",after:""},{field:"style.fillStyle",code:"[string]",desc:"'hachure' | 'cross-hatch' | 'solid'",after:""},{field:"style.strokeWidth",code:"[number]",desc:null,after:""},{field:"style.strokeStyle",code:"[string]",desc:"'solid' | 'dashed' | 'dotted'",after:""},{field:"style.roughness",code:"[number]",desc:"0:Architect\n1:Artist\n2:Cartoonist",after:""},{field:"style.opacity",code:"[number]",desc:"100: Fully opaque\n0: Fully transparent",after:""},{field:"style.roundness",code:"[null | { type: RoundnessType; value?: number };]",desc:"set to null for 'sharp', else the stroke will be 'round'<br>type: 1==LEGACY,<br>2==PROPORTIONAL RADIUS,<br>3==ADAPTIVE RADIUS, value: adaptive factor defaults to 32",after:""},{field:"style.fontFamily",code:"[number]",desc:"1: Virgil, 2:Helvetica, 3:Cascadia, 4:LocalFont",after:""},{field:"style.fontSize",code:"[number]",desc:null,after:""},{field:"style.textAlign",code:"[string]",desc:"'left' | 'right' | 'center'",after:""},{field:"style.verticalAlign",code:"[string]",desc:"For future use, has no effect currently; 'top' | 'bottom' | 'middle'",after:""},{field:"style.startArrowHead",code:"[string]",desc:"'triangle' | 'dot' | 'arrow' | 'bar' | null",after:""},{field:"style.endArrowHead",code:"[string]",desc:"'triangle' | 'dot' | 'arrow' | 'bar' | null",after:""},{field:"canvas.theme",code:"[string]",desc:"'dark' | 'light'",after:""},{field:"canvas.viewBackgroundColor",code:"[string]",desc:"A valid css color.\nSee <a onclick='window.open(\"https://www.w3schools.com/colors/default.asp\")'>W3 School Colors</a> for more.",after:""},{field:"canvas.gridSize",code:"[number]",desc:null,after:""},{field:"setStrokeSharpness",code:"setStrokeSharpness(sharpness: number): void;",desc:"Set ea.style.roundness. 0: is the legacy value, 3: is the current default value, null is sharp",after:""},{field:"addToGroup",code:"addToGroup(objectIds: []): string;",desc:null,after:""},{field:"toClipboard",code:"toClipboard(templatePath?: string): void;",desc:"Copies current elements using template to clipboard, ready to be pasted into an excalidraw canvas",after:""},{field:"getSceneFromFile",code:"async getSceneFromFile(file: TFile): Promise<{elements: ExcalidrawElement[]; appState: AppState;}>;",desc:"returns the elements and appState from a file, if the file is not an excalidraw file, it will return null",after:""},{field:"getElements",code:"getElements(): ExcalidrawElement[];",desc:"Get all elements from ExcalidrawAutomate elementsDict",after:""},{field:"getElement",code:"getElement(id: string): ExcalidrawElement;",desc:"Get single element from ExcalidrawAutomate elementsDict",after:""},{field:"create",code:'create(params?: {filename?: string, foldername?: string, templatePath?: string, onNewPane?: boolean, silent?: boolean, frontmatterKeys?: { "excalidraw-plugin"?: "raw" | "parsed", "excalidraw-link-prefix"?: string, "excalidraw-link-brackets"?: boolean, "excalidraw-url-prefix"?: string,},}): Promise<string>;',desc:"Create a drawing and save it to filename.\nIf filename is null: default filename as defined in Excalidraw settings.\nIf folder is null: default folder as defined in Excalidraw settings\nReturns the path to the created file",after:""},{field:"createSVG",code:"createSVG(templatePath?: string, embedFont?: boolean, exportSettings?: ExportSettings, loader?: EmbeddedFilesLoader, theme?: string,): Promise<SVGSVGElement>;",desc:"Use ExcalidrawAutomate.getExportSettings(boolean,boolean) to create an ExportSettings object.\nUse ExcalidrawAutomate.getEmbeddedFilesLoader(boolean?) to create an EmbeddedFilesLoader object.",after:""},{field:"createPNG",code:"createPNG(templatePath?: string, scale?: number, exportSettings?: ExportSettings, loader?: EmbeddedFilesLoader, theme?: string,padding?: number): Promise<any>;",desc:"Create an image based on the objects in ea.getElements(). The elements in ea will be merged with the elements from the provided template file - if any. Use ExcalidrawAutomate.getExportSettings(boolean,boolean) to create an ExportSettings object.\nUse ExcalidrawAutomate.getEmbeddedFilesLoader(boolean?) to create an EmbeddedFilesLoader object.",after:""},{field:"createPNGBase64",code:"craetePNGBase64(templatePath?: string, scale?: number, exportSettings?: ExportSettings, loader?: EmbeddedFilesLoader, theme?: string,padding?: number): Promise<string>;",desc:"The same as createPNG but returns a base64 encoded string instead of a file.",after:""},{field:"wrapText",code:"wrapText(text: string, lineLen: number): string;",desc:null,after:""},{field:"addRect",code:"addRect(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"addDiamond",code:"addDiamond(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"addEllipse",code:"addEllipse(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"addBlob",code:"addBlob(topX: number, topY: number, width: number, height: number): string;",desc:null,after:""},{field:"refreshTextElementSize",code:"refreshTextElementSize(id: string);",desc:"Refreshes the size of the text element. Intended to be used when you copyViewElementsToEAforEditing() and then change the text in a text element and want to update the size of the text element to fit the modifid contents.",after:""},{field:"addText",code:'addText(topX: number, topY: number, text: string, formatting?: {wrapAt?: number; width?: number; height?: number; textAlign?: "left" | "center" | "right"; textVerticalAlign: "top" | "middle" | "bottom"; box?: boolean | "box" | "blob" | "ellipse" | "diamond"; boxPadding?: number; boxStrokeColor?: string;}, id?: string,): string;',desc:"If box is !null, then text will be boxed\nThe function returns the id of the TextElement. If the text element is boxed i.e. it is a sticky note, then the id of the container object",after:""},{field:"addLine",code:"addLine(points: [[x: number, y: number]]): string;",desc:null,after:""},{field:"addArrow",code:"addArrow(points: [[x: number, y: number]], formatting?: { startArrowHead?: string; endArrowHead?: string; startObjectId?: string; endObjectId?: string;},): string;",desc:null,after:""},{field:"addImage",code:"addImage(topX: number, topY: number, imageFile: TFile, scale?: boolean, anchor?: boolean): Promise<string>;",desc:"set scale to false if you want to embed the image at 100% of its original size. Default is true which will insert a scaled image. anchor will only be evaluated if scale is false. anchor true will add |100% to the end of the filename, resulting in an image that will always pop back to 100% when the source file is updated or when the Excalidraw file is reopened. ",after:""},{field:"addEmbeddable",code:"addEmbeddable(topX: number, topY: number, width: number, height: number, url?: string, file?: TFile): string;",desc:"Adds an iframe/webview (depending on content and platform) to the drawing. If url is not null then the iframe/webview will be loaded from the url. The url maybe a markdown link to an note in the Vault or a weblink. If url is null then the iframe/webview will be loaded from the file. Both the url and the file may not be null.",after:""},{field:"addMermaid",code:"async addMermaid(diagram: string, groupElements: boolean = true,): Promise<string[]>;",desc:"Creates a mermaid diagram and returns the ids of the created elements as a string[]. The elements will be added to ea. To add them to the canvas you'll need to use addElementsToView. Depending on the diagram type the result will be either a single SVG image, or a number of excalidraw elements.",after:""},{field:"addLaTex",code:"async addLaTex(topX: number, topY: number, tex: string): Promise<string>;",desc:"This is an async function, you need to avait the results. Adds a LaTex element to the drawing. The tex string is the LaTex code. The function returns the id of the created element.",after:""},{field:"connectObjects",code:"connectObjects(objectA: string, connectionA: ConnectionPoint, objectB: string, connectionB: ConnectionPoint, formatting?: {numberOfPoints?: number; startArrowHead?: string; endArrowHead?: string; padding?: number;},): string;",desc:'type ConnectionPoint = "top" | "bottom" | "left" | "right" | null\nWhen null is passed as ConnectionPoint then Excalidraw will automatically decide\nnumberOfPoints is the number of points on the line. Default is 0 i.e. line will only have a start and end point.\nArrowHead: "triangle"|"dot"|"arrow"|"bar"|null',after:""},{field:"addLabelToLine",code:"addLabelToLine(lineId: string, label: string): string;",desc:"Adds a text label to a line or arrow. Currently only works with a simple straight 2-point (start & end) line",after:""},{field:"clear",code:"clear(): void;",desc:"Clears elementsDict and imagesDict only",after:""},{field:"reset",code:"reset(): void;",desc:"clear() + reset all style values to default",after:""},{field:"isExcalidrawFile",code:"isExcalidrawFile(f: TFile): boolean;",desc:"Returns true if MD file is an Excalidraw file",after:""},{field:"targetView",code:"targetView: ExcalidrawView;",desc:"The Obsidian view currently edited",after:""},{field:"setView",code:'setView(view: ExcalidrawView | "first" | "active"): ExcalidrawView;',desc:null,after:""},{field:"getExcalidrawAPI",code:"getExcalidrawAPI(): any;",desc:"<a onclick='window.open(\"https://github.com/excalidraw/excalidraw/tree/master/src/packages/excalidraw#ref\")'>Excalidraw API</a>",after:""},{field:"getViewElements",code:"getViewElements(): ExcalidrawElement[];",desc:"Get elements in View",after:""},{field:"deleteViewElements",code:"deleteViewElements(el: ExcalidrawElement[]): boolean;",desc:null,after:""},{field:"getViewSelectedElement",code:"getViewSelectedElement(): ExcalidrawElement;",desc:"Get the selected element in the view, if more are selected, get the first",after:""},{field:"getViewSelectedElements",code:"getViewSelectedElements(): ExcalidrawElement[];",desc:null,after:""},{field:"getViewFileForImageElement",code:"getViewFileForImageElement(el: ExcalidrawElement): TFile | null;",desc:"Returns the TFile file handle for the image element",after:""},{field:"copyViewElementsToEAforEditing",code:"copyViewElementsToEAforEditing(elements: ExcalidrawElement[], copyImages: boolean = false): void;",desc:"Copies elements from view to elementsDict for editing. If copyImages is true, then relevant entries from scene.files will also be copied. This is required if you want to generate a PNG for a subset of the elements in the drawing (e.g. for AI generation)",after:""},{field:"viewToggleFullScreen",code:"viewToggleFullScreen(forceViewMode?: boolean): void;",desc:null,after:""},{field:"connectObjectWithViewSelectedElement",code:"connectObjectWithViewSelectedElement(objectA: string, connectionA: ConnectionPoint, connectionB: ConnectionPoint, formatting?: {numberOfPoints?: number; startArrowHead?: string; endArrowHead?: string; padding?: number;},): boolean;",desc:"Connect an object to the selected element in the view\nSee tooltip for connectObjects for details",after:""},{field:"addElementsToView",code:"addElementsToView(repositionToCursor?: boolean, save?: boolean, newElementsOnTop?: boolean,shouldRestoreElements?: boolean,): Promise<boolean>;",desc:"Adds elements from elementsDict to the current view\nrepositionToCursor: default is false\nsave: default is true\nnewElementsOnTop: default is false, i.e. the new elements get to the bottom of the stack\nnewElementsOnTop controls whether elements created with ExcalidrawAutomate are added at the bottom of the stack or the top of the stack of elements already in the view\nNote that elements copied to the view with copyViewElementsToEAforEditing retain their position in the stack of elements in the view even if modified using EA",after:""},{field:"onDropHook",code:'onDropHook(data: {ea: ExcalidrawAutomate, event: React.DragEvent<HTMLDivElement>, draggable: any, type: "file" | "text" | "unknown", payload: {files: TFile[], text: string,}, excalidrawFile: TFile, view: ExcalidrawView, pointerPosition: { x: number, y: number},}): boolean;',desc:"If set Excalidraw will call this function onDrop events.\nA return of true will stop the default onDrop processing in Excalidraw.\n\ndraggable is the Obsidian draggable object\nfiles is the array of dropped files\nexcalidrawFile is the file receiving the drop event\nview is the excalidraw view receiving the drop.\npointerPosition is the pointer position on canvas at the time of drop.",after:""},{field:"mostRecentMarkdownSVG",code:"mostRecentMarkdownSVG: SVGSVGElement;",desc:"Markdown renderer will drop a copy of the most recent SVG here for debugging purposes",after:""},{field:"getEmbeddedFilesLoader",code:"getEmbeddedFilesLoader(isDark?: boolean): EmbeddedFilesLoader;",desc:"Utility function to generate EmbeddedFilesLoader object",after:""},{field:"getExportSettings",code:"getExportSettings(withBackground: boolean, withTheme: boolean,): ExportSettings;",desc:"Utility function to generate ExportSettings object",after:""},{field:"getBoundingBox",code:"getBoundingBox(elements: ExcalidrawElement[]): {topX: number, topY: number, width: number, height: number,};",desc:"Gets the bounding box of elements. The bounding box is the box encapsulating all of the elements completely.",after:""},{field:"getMaximumGroups",code:"getMaximumGroups(elements: ExcalidrawElement[]): ExcalidrawElement[][];",desc:"Elements grouped by the highest level groups",after:""},{field:"getLargestElement",code:"getLargestElement(elements: ExcalidrawElement[]): ExcalidrawElement;",desc:"Gets the largest element from a group. useful when a text element is grouped with a box, and you want to connect an arrow to the box",after:""},{field:"intersectElementWithLine",code:"intersectElementWithLine(element: ExcalidrawBindableElement, a: readonly [number, number], b: readonly [number, number], gap?: number,): Point[];",desc:"If gap is given, the element is inflated by this value.\nReturns 2 or 0 intersection points between line going through `a` and `b` and the `element`, in ascending order of distance from `a`.",after:""},{field:"getCommonGroupForElements",code:"getCommonGroupForElements(elements: ExcalidrawElement[]): string;",desc:"Gets the groupId for the group that contains all the elements, or null if such a group does not exist",after:""},{field:"getElementsInTheSameGroupWithElement",code:"getElementsInTheSameGroupWithElement(element: ExcalidrawElement, elements: ExcalidrawElement[]): ExcalidrawElement[];",desc:"Gets all the elements from elements[] that share one or more groupIds with element.",after:""},{field:"activeScript",code:"activeScript: string;",desc:"Mandatory to set before calling the get and set ScriptSettings functions. Set automatically by the ScriptEngine\nSee for more details: <a onclick='window.open(\"https://zsviczian.github.io/obsidian-excalidraw-plugin/ExcalidrawScriptsEngine.html\")'>Script Engine Help</a>",after:""},{field:"getScriptSettings",code:"getScriptSettings(): {};",desc:"Returns script settings. Saves settings in plugin settings, under the activeScript key. See for more details: <a onclick='window.open(\"https://zsviczian.github.io/obsidian-excalidraw-plugin/ExcalidrawScriptsEngine.html\")'>Script Engine Help</a>",after:""},{field:"setScriptSettings",code:"setScriptSettings(settings: any): Promise<void>;",desc:"Sets script settings.\nSee for more details: <a onclick='window.open(\"https://zsviczian.github.io/obsidian-excalidraw-plugin/ExcalidrawScriptsEngine.html\")'>Script Engine Help</a>",after:""},{field:"openFileInNewOrAdjacentLeaf",code:"openFileInNewOrAdjacentLeaf(file: TFile): WorkspaceLeaf;",desc:"Open a file in a new workspaceleaf or reuse an existing adjacent leaf depending on Excalidraw Plugin Settings",after:""},{field:"measureText",code:"measureText(text: string): { width: number; height: number };",desc:"Measures text size based on current style settings",after:""},{field:"verifyMinimumPluginVersion",code:"verifyMinimumPluginVersion(requiredVersion: string): boolean;",desc:'Returns true if plugin version is >= than required\nrecommended use:\n<code>if(!ea.verifyMinimumPluginVersion || !ea.verifyMinimumPluginVersion("1.5.20")) {new Notice("message");return;}<code>',after:""},{field:"selectElementsInView",code:"selectElementsInView(elements: ExcalidrawElement[] | string[]):void;",desc:"You can supply a list of Excalidraw Elements or the string IDs of those elements. The elements provided will be set as selected in the targetView.",after:""},{field:"generateElementId",code:"generateElementId(): string;",desc:"Returns an 8 character long random id",after:""},{field:"cloneElement",code:"cloneElement(element: ExcalidrawElement): ExcalidrawElement;",desc:"Returns a clone of the element with a new element id",after:""},{field:"moveViewElementToZIndex",code:"moveViewElementToZIndex(elementId:number, newZIndex:number): void;",desc:"Moves the element to a specific position in the z-index",after:""},{field:"hexStringToRgb",code:"hexStringToRgb(color: string):number[];",desc:"Converts a HEX color to an RGB number array. #FF0000 to [255,0,0]",after:""},{field:"rgbToHexString",code:"rgbToHexString(color: number[]):string;",desc:"Converts an RGB number array to a HEX string. [255,0,0] to #FF0000",after:""},{field:"hslToRgb",code:"hslToRgb(color: number[]):number[];",desc:"Converts an HSL number array to an RGB number array. [0,100,50] to [255,0,0]",after:""},{field:"rgbToHsl",code:"rgbToHsl(color:number[]):number[];",desc:"Converts an RGB number array to an HSL number array. [255,0,0] to [0,100,50]",after:""},{field:"colorNameToHex",code:"colorNameToHex(color:string):string;",desc:"Converts a CSS color name to its HEX color equivalent. 'White' to #FFFFFF",after:""},{field:"obsidian",code:"obsidian",desc:"Access functions and objects available on the <a onclick='window.open(\"https://github.com/obsidianmd/obsidian-api/blob/master/obsidian.d.ts\")'>Obsidian Module</a>",after:""},{field:"getAttachmentFilepath",code:"async getAttachmentFilepath(filename: string): Promise<string>",desc:"This asynchronous function should be awaited. It retrieves the filepath to a new file, taking into account the attachments preference settings in Obsidian. If the attachment folder doesn't exist, it creates it. The function returns the complete path to the file. If the provided filename already exists, the function will append '_[number]' before the extension to generate a unique filename.",after:""},{field:"checkAndCreateFolder",code:"async checkAndCreateFolder(folderpath: string): Promise<TFolder>",desc:"Checks if the folder exists, if not, creates it.",after:""},{field:"getNewUniqueFilepath",code:"getNewUniqueFilepath(filename: string, folderpath: string): string",desc:"Checks if the filepath already exists, if so, returns a new filepath with a number appended to the filename else returns the filepath as provided.",after:""},{field:"extractCodeBlocks",code:"extractCodeBlocks(markdown: string): { data: string, type: string }[]",desc:"Grabs the codeblock content from the supplied markdown string. Returns an array of dictionaries with the codeblock content and type",after:""},{field:"postOpenAI",code:"async postOpenAI(requst: AIRequest): Promise<RequestUrlResponse>",desc:"This asynchronous function should be awaited. It posts the supplied request to the OpenAI API and returns the response.<br>The response is a dictionary with the following keys:<br><code>{image, text, instruction, systemPrompt}</code><br><b>image</b> should be a dataURL - use ea.createPNGBase64()<br><b>systemPrompt</b>: if <code>undefined</code> the message to OpenAI will not include a system prompt<br><b>text</b> is the actual user prompt, a request must have either an image or a text<br><b>instruction</b> is a user prompt sent as a separate element in the message - I use it to reinforce the type of response I am seeing (e.g. mermaid in a codeblock)<br>RequestUrlResponse is defined in the <a onclick='window.open(\"https://github.com/obsidianmd/obsidian-api/blob/master/obsidian.d.ts\")'>Obsidian API</a>",after:""},{field:"convertStringToDataURL",code:'async convertStringToDataURL (data:string, type: string = "text/html"):Promise<string>',desc:"Converts a string to a DataURL.",after:""},{field:"setViewModeEnabled",code:"setViewModeEnabled(enabled: boolean): void;",desc:"Sets Excalidraw in the targetView to view-mode",after:""},{field:"viewUpdateScene",code:"viewUpdateScene(scene:{elements?:ExcalidrawElement[],appState?: AppState,files?: BinaryFileData,commitToHistory?: boolean,},restore:boolean=false):void",desc:"Calls the ExcalidrawAPI updateScene function for the targetView. When restore=true, excalidraw will try to correct errors in the scene such as setting default values to missing element properties.",after:""},{field:"viewZoomToElements",code:"viewZoomToElements(selectElements: boolean,elements: ExcalidrawElement[]):void",desc:"Zoom tarteView to fit elements provided as input. elements === [] will zoom to fit the entire scene. SelectElements toggles whether the elements should be in a selected state at the end of the operation.",after:""},{field:"compressToBase64",code:"compressToBase64(str: string):string",desc:"Compresses String to a Base64 string using LZString",after:""},{field:"decompressFromBase64",code:"decompressFromBase64(str: string):string",desc:"Decompresses a base 64 compressed string using LZString",after:""}],EXCALIDRAW_SCRIPTENGINE_INFO=[{field:"inputPrompt",code:"inputPrompt: (header: string, placeholder?: string, value?: string, buttons?: {caption:string, tooltip?:string, action:Function}[], lines?: number, displayEditorButtons?: boolean, customComponents?: (container: HTMLElement) => void, blockPointerInputOutsideModal?: boolean);",desc:"Opens a prompt that asks for an input.\nReturns a string with the input.\nYou need to await the result of inputPrompt.\nEditor buttons are text editing buttons like delete, enter, allcaps - these are only displayed if lines is greater than 1 \nCustom components are components that you can add to the prompt. These will be displayed between the text input area and the buttons.\nblockPointerInputOutsideModal will block pointer input outside the modal. This is useful if you want to prevent the user accidently closing the modal or interacting with the excalidraw canvas while the prompt is open.\nbuttons.action(input: string) => string\nThe button action function will receive the actual input string. If action returns null, input will be unchanged. If action returns a string, input will receive that value when the promise is resolved. example:\n<code>let fileType = '';\nconst filename = await utils.inputPrompt (\n 'Filename',\n '',\n '',\n, [\n {\n caption: 'Markdown',\n action: ()=>{fileType='md';return;}\n },\n {\n caption: 'Excalidraw',\n action: ()=>{fileType='ex';return;}\n }\n ]\n);</code>",after:""},{field:"suggester",code:"suggester: (displayItems: string[], items: any[], hint?: string, instructions?:Instruction[]);",desc:"Opens a suggester. Displays the displayItems and returns the corresponding item from items[]\nYou need to await the result of suggester.\nIf the user cancels (ESC), suggester will return undefined\nHint and instructions are optional\n\n<code>interface Instruction {command: string;purpose: string;}</code>",after:""},{field:"scriptFile",code:"scriptFile: TFile",desc:"The TFile of the currently running script",after:""}],FRONTMATTER_KEYS_INFO=[{field:"plugin",code:null,desc:"Denotes an excalidraw file. If key is not present, the file will not be recognized as an Excalidarw file. Valid values are 'parsed' and 'raw'",after:": parsed"},{field:"link-prefix",code:null,desc:"Set custom prefix to denote text element containing a valid internal link. Set to empty string if you do not want to show a prefix",after:': "📍"'},{field:"url-prefix",code:null,desc:"Set custom prefix to denote text element containing a valid external link. Set to empty string if you do not want to show a prefix",after:': "🌐"'},{field:"link-brackets",code:null,desc:"Set to true, if you want to display [[square brackets]] around the links in Text Elements",after:": true"},{field:"default-mode",code:null,desc:"Specifies how Excalidraw should open by default. Valid values are: view|zen",after:": view"},{field:"linkbutton-opacity",code:null,desc:"The opacity of the blue link button in the top right of the element overriding the respective setting in plugin settings. Valid values are between 0 and 1, where 0 means the button is transparent.",after:": 0.5"},{field:"onload-script",code:null,desc:"The value of this field will be executed as javascript code using the Script Engine environment. Use this to initiate custom actions or logic when loading your drawing.",after:': "new Notice(`Hello World!\\n\\nFile: ${ea.targetView.file.basename}`);"'},{field:"font",code:null,desc:"This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this frontmatter key to your markdown document. Valid values are: Virgil|Cascadia|font_file_name.extension",after:": Virgil"},{field:"font-color",code:null,desc:"This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this frontmatter key to your markdown document. Valid values are: css-color-name|#HEXcolor|any-other-html-standard-format",after:": SteelBlue"},{field:"border-color",code:null,desc:"This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this frontmatter key to your markdown document. Valid values are: css-color-name|#HEXcolor|any-other-html-standard-format",after:": SteelBlue"},{field:"css",code:null,desc:'This key applies to Markdown Embeds. You can control the appearance of the embedded markdown file on a file by file bases by adding the this front matter keys to your markdown document. Valid values are: "css-filename|css snippet"',after:': ""'},{field:"export-transparent",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. true == Transparent / false == with background",after:": true"},{field:"export-dark",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. true == Dark mode / false == light mode",after:": true"},{field:"export-padding",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. This only affects both SVG and PNG export. Specify the export padding for the image.",after:": 5"},{field:"export-pngscale",code:null,desc:"If this key is present it will override the default excalidraw embed and export setting. This only affects export to PNG. Specify the export scale for the image. The typical range is between 0.5 and 5, but you can experiment with other values as well.",after:": 1"},{field:"autoexport",code:null,desc:"Override autoexport settings for this file. Valid values are\nnone\nboth\npng\nsvg",after:": png"},{field:"iframe-theme",code:null,desc:"Override iFrame theme plugin-settings for this file. 'match' will match the Excalidraw theme, 'default' will match the obsidian theme. Valid values are\ndark\nlight\nauto\ndefault",after:": auto"}];class FieldSuggester extends obsidian_module.EditorSuggest{constructor(e){super(e.app),this.getSuggestions=e=>{const A=e.query.toLowerCase();return("ea"===this.suggestType?EXCALIDRAW_AUTOMATE_INFO:"utils"===this.suggestType?EXCALIDRAW_SCRIPTENGINE_INFO:FRONTMATTER_KEYS_INFO).map((e=>e.field)).filter((e=>e.toLowerCase().includes(A)))},this.plugin=e}onTrigger(e,A,t){var i,n,s,a,o;if(this.plugin.settings.fieldSuggester){const t=A.getLine(e.line).substring(0,e.ch),r=null!==(a=null!==(n=null===(i=t.match(/^excalidraw-(.*)$/))||void 0===i?void 0:i[1])&&void 0!==n?n:null===(s=t.match(/(^ea|\Wea)\.([\w\.]*)$/))||void 0===s?void 0:s[2])&&void 0!==a?a:null===(o=t.match(/(^utils|\Wutils)\.([\w\.]*)$/))||void 0===o?void 0:o[2];if(void 0!==r)return this.suggestType=t.match(/^excalidraw-(.*)$/)?"excalidraw":t.match(/(^ea|\Wea)\.([\w\.]*)$/)?"ea":"utils",this.latestTriggerInfo={end:e,start:{ch:e.ch-r.length,line:e.line},query:r},this.latestTriggerInfo}return null}renderSuggestion(e,A){const t=e.replace("ea"===this.suggestType?"ea.":"utils"===this.suggestType?"utils.":"excalidraw-",""),i=("ea"===this.suggestType?EXCALIDRAW_AUTOMATE_INFO:"utils"===this.suggestType?EXCALIDRAW_SCRIPTENGINE_INFO:FRONTMATTER_KEYS_INFO).find((A=>A.field===e));A.createEl("b",{text:t}),A.createEl("br"),i.code&&A.createEl("code",{text:i.code}),i.desc&&A.createDiv("div",(e=>e.innerHTML=i.desc))}selectSuggestion(e){var A;const{context:t}=this;if(t){const i="ea"===this.suggestType?EXCALIDRAW_AUTOMATE_INFO:"utils"===this.suggestType?EXCALIDRAW_SCRIPTENGINE_INFO:FRONTMATTER_KEYS_INFO,n=`${e}${null===(A=i.find((A=>A.field===e)))||void 0===A?void 0:A.after}`;if(t.editor.replaceRange(n,this.latestTriggerInfo.start,this.latestTriggerInfo.end),this.latestTriggerInfo.start.ch===this.latestTriggerInfo.end.ch){const e=this.latestTriggerInfo.end;e.ch+=n.length,t.editor.setCursor(e)}}}}class FrontmatterEditor{constructor(e){this.initialized=!1,this.dataWOfrontmatter=e;const A=(e=e.replaceAll("\r\n","\n").replaceAll("\r","\n")).split(/^---(?:.|\n)*(?:^---\n)/gm);2===A.length&&(this.dataWOfrontmatter=A[1],this.frontmatterStr=e.match(/^---((?:.|\n)*)(?:^---\n)/gm)[0].replaceAll(/(^---\n|^\n)/gm,"").trim()+"\n",this.initialized=!0)}hasKey(e){if(!this.initialized)return!1;const A=new RegExp(`^${e}:`,"gm");return Boolean(this.frontmatterStr.match(A))}setKey(e,A){if(this.initialized)if(A=A.replaceAll("\r\n","\n").replaceAll("\r","\n").replaceAll(":",";").trim().split("\n").join(" "),this.hasKey(e)){const t=new RegExp(`^${e}:.*\\n(?:\\s\\s.*\\n)*`,"gm");this.frontmatterStr=this.frontmatterStr.split(t).join("\n").trim()+`\n${e}: ${A}`}else this.frontmatterStr=this.frontmatterStr.trim()+`\n${e}: ${A}`}get data(){return this.initialized?["---",this.frontmatterStr,"---",this.dataWOfrontmatter].join("\n"):this.dataWOfrontmatter}}const TASKBONE_URL="https://api.taskbone.com/",TASKBONE_OCR_FN="execute?id=60f394af-85f6-40bc-9613-5d26dc283cbb";class Taskbone{get apiKey(){return this.plugin.settings.taskboneAPIkey}constructor(e){this.plugin=e}async initialize(e=!0){var A;if(""!==this.plugin.settings.taskboneAPIkey)return;const t=await obsidian_module.requestUrl({url:`${TASKBONE_URL}users/excalidraw-obsidian/identities`,method:"post",contentType:"application/json",throw:!1});if(!t)return;const i=null===(A=t.json)||void 0===A?void 0:A.apiKey;return i&&"string"==typeof i&&(e&&await this.plugin.loadSettings(),this.plugin.settings.taskboneAPIkey=i,e&&await this.plugin.saveSettings()),i}async getTextForView(e,A){await e.forceSave(!0);const t=e.excalidrawAPI.getSceneElements().filter((A=>{var t;return"freedraw"===A.type||"image"===A.type&&!this.plugin.isExcalidrawFile(null===(t=e.excalidrawData.getFile(A.fileId))||void 0===t?void 0:t.file)}));if(0===t.length)return void new obsidian_module.Notice("Aborting OCR because there are no image or freedraw elements on the canvas.",4e3);const i=new FrontmatterEditor(e.data);if(i.hasKey("taskbone-ocr")&&!A)return void new obsidian_module.Notice("The drawing has already been processed, you will find the result in the frontmatter in markdown view mode. If you ran the command from the Obsidian Panel in Excalidraw then you can CTRL(CMD)+click the command to force the rescaning.",4e3);const n=this.plugin.ea.getBoundingBox(t),s=n.width*n.height,a=Math.sqrt(36e4/s),o=Math.sqrt(s/16e6),r=a>1?a:o>1?1/o:1,l=new EmbeddedFilesLoader(this.plugin,!1),c=await createPNG(e.file.path+"#^taskbone",r,{withBackground:!0,withTheme:!0},l,"light",null,null,[],this.plugin,0),g=await this.getTextForImage(c);g&&(i.setKey("taskbone-ocr",g),e.data=i.data,e.save(!1),window.navigator.clipboard.writeText(g),new obsidian_module.Notice("I placed the recognized in the drawing's frontmatter and onto the system clipboard."))}async getTextForImage(e){const A=TASKBONE_URL+TASKBONE_OCR_FN;""===this.apiKey&&await this.initialize();const t={records:[{image:await blobToBase64(e)}]},i=await obsidian_module.requestUrl({url:A,method:"post",contentType:"application/json",body:JSON.stringify(t),headers:{authorization:`Bearer ${this.apiKey}`},throw:!1}),n=null==i?void 0:i.json;return n&&200===i.status?n.records[0].text:(new obsidian_module.Notice("Something went wrong while processing your request. Please check developer console for more information"),void log(i))}}const STYLE_VARIABLES=["--background-modifier-cover","--background-primary-alt","--background-secondary","--background-secondary-alt","--background-modifier-border","--text-normal","--text-muted","--text-accent","--text-accent-hover","--text-faint","--text-highlight-bg","--text-highlight-bg-active","--text-selection","--interactive-normal","--interactive-hover","--interactive-accent","--interactive-accent-hover","--scrollbar-bg","--scrollbar-thumb-bg","--scrollbar-active-thumb-bg"],EXCALIDRAW_CONTAINER_CLASS="excalidraw__embeddable__outer";class StylesManager{constructor(e){this.stylesMap=new Map,this.plugin=e,e.app.workspace.onLayoutReady((async()=>{await this.harvestStyles(),getAllWindowDocuments(e.app).forEach((e=>{this.copyPropertiesToTheme(e)})),e.registerEvent(e.app.workspace.on("css-change",(async()=>{await this.harvestStyles(),getAllWindowDocuments(e.app).forEach((e=>{this.copyPropertiesToTheme(e)}))}))),e.registerEvent(e.app.workspace.on("window-open",((e,A)=>{this.stylesMap.set(e.doc,{light:document.head.querySelector('style[id="excalidraw-embedded-light"]'),dark:document.head.querySelector('style[id="excalidraw-embedded-dark"]')})}))),e.registerEvent(e.app.workspace.on("window-open",((e,A)=>{this.stylesMap.delete(e.doc)})))}))}unload(){for(const[e,A]of this.stylesMap)e.head.removeChild(A.light),e.head.removeChild(A.dark)}async harvestStyles(){const e=document.body,A=document.createElement("iframe");A.style.display="none",e.appendChild(A);const t=new Promise((e=>{A.addEventListener("load",(()=>e()))})),i=A.contentWindow.document,n=A.contentWindow;i.open(),i.write(`<head>${document.head.innerHTML}</head>`),i.close(),await t;const s=A.contentWindow.document.body;s.setAttribute("style",e.getAttribute("style")),s.setAttribute("class",e.getAttribute("class"));const a=e=>{s.classList.remove("theme-light"),s.classList.remove("theme-dark"),s.classList.add(e)},o=()=>{const e=n.getComputedStyle(s),A={};for(const t of STYLE_VARIABLES)A[t]=e.getPropertyValue(t);const t=this.plugin.ea.getCM(e.getPropertyValue("--background-primary"));return t.alphaTo(.9),A["--background-primary"]=t.stringHEX(),Object.entries(A).map((([e,A])=>`${e}: ${A} !important;`)).join(" ")};a("theme-light"),this.styleLight=o(),a("theme-dark"),this.styleDark=o(),e.removeChild(A)}copyPropertiesToTheme(e){const A=this.stylesMap.get(e);if(A)A.light.innerHTML=`.${EXCALIDRAW_CONTAINER_CLASS} .theme-light {\n${this.styleLight}\n}`,A.dark.innerHTML=`.${EXCALIDRAW_CONTAINER_CLASS} .theme-dark {\n${this.styleDark}\n}`;else{const A=e.createElement("style");A.type="text/css",A.setAttribute("id","excalidraw-embedded-light"),A.innerHTML=`.${EXCALIDRAW_CONTAINER_CLASS} .theme-light {\n${this.styleLight}\n}`,e.head.appendChild(A);const t=e.createElement("style");t.type="text/css",t.setAttribute("id","excalidraw-embedded-dark"),t.innerHTML=`.${EXCALIDRAW_CONTAINER_CLASS} .theme-dark {\n${this.styleDark}\n}`,e.head.appendChild(t),this.stylesMap.set(e,{light:A,dark:t})}}}const MATHJAX_SOURCE_LZCOMPRESSED="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xqzTqk+Z3Ro0mmUlYUvmUpzwLokv7k/qLJPQI4kq4ktykjV0ttkwQk8S0vTpDIkiO0r800Q6Y0CeMkjhI6c9LxkvK00v6GRk0oQM4k7okuKk8Bk5q0pZ0pokmx09lknifMaktdAN10vPUxOkipk8Ckq10i4pEu0g2kt8kt009V0rY0+vUqQkp5UtFkx64MvUzwUn6U5pLfBk5ZeIN0gi01LgPO0xzkrtkqegJok440+NUm/QdNky+jPi045PGoQei0zm0/ZkiN0zVKTckuykzvUn404101pKDk08QqZrkuN0kB4ffUxN0hhkIEUvV0/ywU/UvLAbV0tok+Gkit08g0pfVQhkuIbNikzt06kUyvkhfAXt0qa0jA0gd0sy0wgUFkko104t0gUkkGkylkmpQrlk5t05+0rc0qnkm5ksd07+0hc01kk2t04t0oB0ua03VkwN0y+kgA0h9Uv+k8009okh10r+08Dkja0kTUyufGd02nkvlk7/Uo4kyd02Ekit053KGmU0N0u10ok0r906Gkrd0tY0k4kgD0yx6Tjk7d0+10kGub3kzXkl1kzQk6906R0lN0xMkha0wM0jeEk+krN0ut0lxkz6knKk4Kk4t0sq/GE09K0k8k7N0tEk9348A0gj0n91Vckoj0wvkTl09hZRk1XHYrQUct0rikyTKMskuD0wxqDaUgG0hJkld09Nk7s09yk6yk0/Umh03HYmvkjyk5x0wQkpvUsS0lm0j2krmkzsAeiknj0k3XTV0kT0xW04Ok8T0mokgKwIKktDwBE/SG0jfUrPKMSkl9ZYykpikuW0lrkqd05vU8h0+aUsskl7KNV02nk3/kZj00Ek3d0hcky90hw0Bj0r+0kPkq0Utzkz90iz0350uz06z0290yyUxqk2D0zz0qD07z013kgKwPz0it0jbKPtk4Qk64qG7ko90kE1Wykw10310mHk1pkuKk2L0yL0oXkv9IWyk2j0xd0lL0uT08/UnD0zL0g107L0yj002fPlkpL0nL060khfkNL0m600rkoN0ua4TT0iRVIE0qr0hQqQM0xg/RD04a0wPkzj0xi0jd0j/Kdektl09r0+r00o02x0j0qZr01Uk+h02r0y108904oktr0pt03r0010kb0wb06WfG008nUur0pBkujU9a0y8kpUkp90/t0q00qhfEokzWk3Ik0PYOL0jmklV0sz05ekqngRGk3vUjJfJQqPg3SSkx00zO0210pwif90zb0/vRbb0pQ0SZKMxZYpk/PUiGfZ705r0lE7ZNUI3U5zSbI02Ko0yHGcA3z/be0sFVUc07Mk7D0oN0pIkivUqwUzRkrR0480360xc0sbje/kqPUzfkvK04ukukkktUuQ0Opk080qfKa8UkPYA3ktb0gUU6a1TH0p101hkiy05y0/q1NU01wiaG01UmLtkjiUv102/k1efFEk27QUY0kC0wi7KYkln0h4krr01ok7O09Y0+N0h9khg0c4rHd0vBfCEkxxkyPKDQ0pO008kqn0moQUHkmCuVD0pqUFO0hmdK404mku/KZqkuH0yt05/k90ksMksvUzDkwy0/Q2S5PMvUwL0v4knxkuI0vtk430kukuI0ku06HnDS0g30/S0hFUqT0k30jE0tm0rlk/X0nQkuI08m0vX0l10xCksrAAy0gSku202302MU5T0z30vn01CiZ30t1kkP02MUmikyg0kOk+n01pKbK0umk9H05R0zi0lh0oW0nC09zklR06kU5Pku701kkiSk3yUtjZafARRkokk7Rkue0/P0vJkrW05rk8B03B8QQ0x8khlk9LkjP0yPicc0g2Uqlkj4kmD0h9UsQqGR00v6ckkk80pq0sK032kpHnfP0zT0nVk5rktCIDSk6zKfWkiTk+MUpik9707eUnxkyx6Tzk81kmxkpy03P0nK1Jikrr06egT70zuuUm0ud07P0yc0oKUpik+h0nVk2S0tGk5afUskoI0gw0dP0zi0zykiM0xWkiGkjD0tskkGkof0iFk17TPYkpo0s/0lz0u1fJok0RfGk04UkuS064wJ+U0LKfWk8/09h0jjgQGk8Zknv0mOUqlk6X0hIQB/05fkx80tlfGwAfmk0KBQA0tb0r30/mU1Wk+Jkss0k8klBU8Ok0PU2AMlYU1hI1ek2yk7P0lck3P0pBkrxkwX0/30iBkvGko9kwAM9/0yaknqdGAMxh0iz0+Jknf02/02vxD9Uxn0xZk1U05g07n0hZkrwUxz0zX0m6UpP0u90hH0siksj0890w6klck2k0iGfPH0xijQUk/IkockrW03Kk40k1600I2foky0kr+07i0ki0110ywUjx0nC2Y5k67k9+kywkwtKK7U6f0yX0oZlUrkhQgK7U6/UwwMiwMt/k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6cM+GM5LKNQc2v02gctDMpUMnfs1JtTPsvskwMcjWM7tUnds7js3Ucl3skLsxq0g0c1xkgd4CdQzUc920hUc8XskOfcck+AMxs0yUMsAqYO01/khsc6VwVns2bM4WM4vk95PfTMjbswi7KscudMrd3Wscmj0r0ch604oiErs0Bsqsc5dM1d0+Bk0UkzyQ3GM+gcisckTMrXs2+rRI0lPU8Ac2tM/TMn10tPszXsmns/sssHMmOkplk860zpfT50s0c9oQbQcyHsge03A0tsc9MqOUc5M3V8ksq/dwM8afSEMuws8n01jk45eU4M0lsrQs5Vklck0WM27QVJs8afBf0mpsqbk0WMzdATpshCc0Fspy0zNMhrAPZQ/OfX2MggcoOgZfk850iCc7OfMw0n/0rlkqVjN6s+R1IU7a5soTkoIs9HIyafOafPYLUPUt1k8sstoc1zskkYa9sqicr/0swc2S0rlksoKXaUznKMwM1rsxnMja0y4MznKVfs5Cs7skvmkgSc9mfdsk8o0y+jDOM/g0xicsIsgTky3M5jM65YLGsqicsCslLk6bkwnKcGU+dAR1skafTnU1Scn/0zWMprsmSc2Nk22krfUoZktTKSicznKU+MzGMmyc4xk8vsiQcrOfCOsmpsxlM78cvI8CufMbs/CcpAsTBkkt06D0h+fEN09IUkI0x8cg6slKfPusxmMicsnY1BLszH07afPus5oMn007dMhKc/qUwAMtb08QMlAqIKcvusmokqbst1kyA0v0U7Kcr8ko9U9/Mh7Ml9ZIqcnz0ots60U5fk9+KFps8afK+M6/030kis09qUiCczsKBFsyJk3RkX/U7JsmScglfUPUyM01BshC5Oycp7KEok7w0nlfHTk/vRIKctecGmU2Xsj0spuk+iMwqfNecVCM9/Mnq0wqcg1vHafFbMi2fFAM2hshwM66fW3jDEk0809OMsq0wyc3acjdMg6ckDsgycnqcgJk+Ys/Kckuk5NUtacjus/xM260k4xAP0xicjnKfacun0h2kr/Unfk66fUJswOtNqAH/08Ms+JMvafJJKCRMmtGH/0lhs6gUY6ciwMvQ0qnkyw04e0ghs9ak4ds56s66M8E0pBMna0hPklKfDoMkBk8s085k86s26fEpsuf0pgsvXM6XoVqc6ps2E0nTk/KfROs7FspufbXMlN0qXM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/T0w4Ml48/U8xAqIbkx08jL08483ec208pqc3Gc508vscr08p08+08rQMxJk8FswpspY89ycgzKdaMsQmeBcmHKRBcvh0utADpcjOfd1crdsjVsvafDOfGJsmR0+Jsj60+WU9uchlctdcqHM66MipfEtk/k8wzc0Ykldcj1koI8pl0nM826c9lcrI84qclQcktkglfCs8yqcgukhVcgDEps8qec46M9Qc67c+a4Qrkz5s5rkkpct+MyI0+/c2e0pyMxKfWhyCekvtc/JsijcmfkXekkeMos8gScvoQJ/sxh03oQBM89jwU10nPsqws2jchc8pXsp+cgg85Z01Ofd7cDJskLk3Jclbsk3s6/spNs/xclbs/1MnxcySsiFsg88zJc888mDk+88h50jS7C885WcnymOAc2jMsok5JkiCc6I2APMoQs9Xsy2MncM3fcoBgFOcxWcsQUQwc1Ls2Q8mfkMTMh/021cmOMg80tc88fsiTs7c8/40+80gPsyvYOocmyM1Xck9M2M8oDc6Xcugc/P/SIctts388vY89PQwrsyw8ghsp7fMQcki8xafPx0L001gM95PCEcqi86ukozs9Hstac/2gBNMoA0p4sgZIJnsgns1fcvLACJcxWchvcrfs6i8qDsvk87c8rAs+Ds0UkxDs+fs5Ds2bs6Vc0hc6VczUs98M76krC84bsgS87NczOc7+c3g8u10jmYGi8nscsc87Ns8WcxWct0pc1MjaUqnsuzsji8wtstS0h309zk4Ts1zsiwqNPs3As6C8qfKU+s6Dcy8kiTctpfKPs4zsk+c0GuEN00vs5i8gI82cc6d03ns6y8l7cwTs0VckfsqDszNk5y8lC81M8gcoDLs5c8zHckv/Wbs+K846fdSskac2G0vzsyu0ya0vA0uK8ljsmE8oe/XHc9r0/zsh+MoCUyIclnsgS82dc8i8xWcvBsyC8ly8pS8sWHTWsvish0cnQ8sS8/i8388wsMky8sosu/KbXc9ccp3s8A8gBs8jkpjk9KsozKCns0YWAHsqy8wqfaymZ2M+nsy+0hq8q3shK8+Q8gjcrg8+MkyPsyy83js7afASBEHsiVktE8jLLctMinc7c8/Q8jekzGM6Nc3lESq8hfAIa8hMkidcomciSkvKckgcwq8468g3kjy8mY8nYkxds+fszC84i8wy8lbs8081qLRhMpYsne+Bq8xS8oq87ic1a8+2k8F07AcqAc2i8g88h08vbsxXMkhs/PstHs9x0vy8uNk6Hsoo8qZkmVcqa040CXwc72cyzsvM815MkHsyo0nrMjlknAcxscui8icc/68m8MsPYY0c9q0g7LDXsue01G8lbM+Fc2Gkpq08vKJYc8S8v3cns8kuMgwMrxM5HsxEc0K8n20ji8k8clRMo5chI8vNcim87A0+G8gTMqy0o7s5vsxq8oq8hgMgw8yzk8sk1pfHdsmm0pJfb68o3ssc83yci081Y8p0k9889BcvW8/okmqc3rLfq8yvs8m8g88vd0qXszJsvmMqAcy28nW8rBs6W8t+kmSshq89K80qfUE1YtMu3s8eM5dsny89i8ma8tKc5ocrUM9h0n/KA3stvqJq8l7s/a0zfc/qLVc8r7sxUmShc8Ckmkcz68hlfAy87W8lbstBiNYMt9M2sskUkyEctDsoq8pWs8G8tLcrckhS0za8kzslKfCFxXIMnqsr1s6zMlg80fszgAJS89qkoqM0XMpA0/P/Hy86ns7afWmUom8pg89Gcvi8sXstO8pqfCLcx08zQ8hIQfhct3ddcM9DcwPs9S8hu8lLcx5sgpshq2T4c6Psonc8u8pqfJJsgiM0jsiWM/GM5Yc+3c1fc5qfE9ko4M4dUCdQh4cy3KNU81qfc1c4M8pi8lQ8ivsyIclYciCcr4Mtps+Ac+wcgzsmzslAc74coKcgKwTO0+Zsg1cqIKErcvmdeW8qEcmE8wdk5Gkpccqc8jrswAc1+8taclT0rZsktskXsva0wO0tPs53KJe81qfIbcrfkg1cxQ8veM8jKZy8/+8hc8+eU99kvisvdsqPskgqIa8+d0++84nkk7pBy8va0oRcuK84wc7B8t50swc3PshC80fsyh8+W80gchu8wqM9lkiOfPisvo2Jdsoi8re87/c3Rkcxkka8hOclCcjgch4cvus1vsgB8pIiOC8kjs7+81zsuDUzB83IcgB86fs/Jsxh0xk1Rvsjq8qfVG+8xaffqLBi8yM8jaUinsgAcl+8+kcwqfTHKaac0MUm50gZkkTspy85h86h81M8m20ygc8wczfsh60n/kfS80208UcrR8+WcvOcgC8t5fEgcmx846fb3jcPsp/0ngUny85wc5e8uHcws8+Tklc07A81K89y0hR87B8xhSW0k+9smTKWkckJ81qfTk8tEcjMcplkhOsrEc9DMne8lgc3ok+hk24cja8pwc8B84x822ctwciVk4o8tnc+Xs8e05e8l0c664Nb0sIc/3KXu8pqfYEc2+8ipMqoiCr064898A6x88R87B8oXcjekh7s8Ck23cmm0tHnBgc7e8tp80Ec8acgYkj2MsUc1p8rR84ls/zkjYcwkcheM0R8lh8gB8yfMyQk1rs0KciZM+20ozs/kciB8so8oUc9Ec5NMjFcvvKcqMvGs5BMsYciB84Vcw00r41dLkueM7J8zw8xKfCxU2683JM9iMgzs5jzPDsy2kt+8uVcsXkrQk4o8h58x3s5fsgB8gPcqoc+E83Fkq9kvkc9xkk+cvvKToMu8sjJ8x5swec23jRPcv4cip8/6k/K8qAczR81OfEI2UYM95k64kg7s5wiBwc7UcsB8ox8ju8/VsjUM8U81oc7rcsl8z1M6HshFc/90mB80fs+Bs+W8kkchu82vcpoeL5s6OkovkAW8qbc6w88u83Ycv4c4m8m902jjZp83AcrR8448rkchxclq00BkyEc2J82x8wfcpu81Gkn8M++Ms0c2egB3cpqfFF0xFsk08x3M8Cc8V87JMmhM6gctq85fc2bKa+88Z8vV88w83U8yJk7XMfTs0R8rB8+V8l68rfU7Z8mU0he8ukcxB85F85s83PKcU8m905uk9bsjgANl8wTcrqMiTc72c5J8kp8sl81/ckIcoZMsaMnAcrF85583/c/dcsXjCBc9Y8mMVbKM6Ns6RxHCc/h8/gskCcnQsoNM2N8zV05Vk8S027QZWc+oiPzc8Lsz4gJJc+oibKM7L0vvKRdcnnk2Qsw2UgLcpqfYCcv/cjPVepsjN86DM+asin06/kSps/h8y0cxA8pVsy88pqfRCcvt8kc8mJchSUFN8if007c2+8vCcrN8k8k1BcrR80Ks5t82/KUd8vEMgQs7N87zcwd87H0jt85f0k88jd8/FM7L0pd8qd8gvc7N8wbU7F8+kMki0oQs1t8pqfDrM1d81zc9N8q983B0rsM8Fs91M558v084d832ky989vgSm8t98zeMu98z98qPc0vs9x02+8irsiSss9snd89BiB50408zQ8vFk46fXEiPQ0yrMpt0rls0qfMrKEokkcMoE0xD8rgqejcjJfdlsou86D8pD8nm8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Fv0FWyyjwSyQdcIVz69dLFdXWAGqSAf1TdVCMadI4UFp6yM0ZbtUffd2q6I8GE4u8+NqYrPeLhIoYwjFAkSSWwgciAFilffLB5mGbgc+IltG9DG5umWCA77YvzReAgXDG3H0MtG/CG6/FZb3TewASNWq4ghUJ269rrFSxB9XVb8IFq9l8TEwn0oXBLfI8C5mP79M+GknanzKoUSCsTGFQGbgesWPjGuyxP79XWtBj4tf65OE9eo/jozT7JiGInyix62YsF+GkNo7RIFuapcOZE5cDLV56tVqruajVqygkrVq3ua1by3pYZ8AHiayLoEQIvqxAfQYSa+3w/Aqm1o58q+NGDYapdRZpBDAucma6QFRhTUD6yUwpXwZDa1pEcmak7WRz8DahVZMD2iawyRK66CUQ24/qxO56jdoN0gFuuJ56r0MRghaM6oLYEmKD564zG1kmfLyj5Gkz+OfMlSLT+HTecGlkYF6oUohNSlPiJNS6a4qaUeva5saha4vaorNSuF69sa1a4xF6pUo5HKqly5BHba42ly9Uam6o44QnF66tS1ly6u6fF60fak0optSifakl6qfa00axcainKi0aqnKhfaz8KGl620alfahnKgj+dfapl6oEQn0o6mUWGoydSvCyysooMo1zvHdgkAE9uAzmw68akvcbfK6Mo+8a0V6s9gj6wIWwo/KqOraV60LvWV63TbaWwhV6ymoqOBamo5GLNFdNV6gsor9g2tZVLvDVEvV6iozXWwqCao1LWdqyUvedqneyNTyuHNLiKfLyrEKX1y1ryjoEslKkdyqx6ASPKA039EQU7LKkq5tG8MEC5Df7dPWNplPn8nNyycEdw4AtOCQI2V4rA6j9yijy2NSepgUxHNtrVzG//QIg63PqywKbz2MD47lgamE23NDppCMkGrgd6lQ1GpD43WUa6IiA4Yt6zFGonkOJa8+vYjiEtGwN4pSE120K2IhcUH18Jj6sja1WxXeQo0LHNueT4kGatHqvPAhqa5748doeTo7JrbeI1BIiwKDhTDYa35CRggR3q8xBF8EwNgDN443sPcGkDwuJEvN48N46AldH4j1/O2pfuoyMsKOiHAAq9WNNxOT4s+obuGsHKbkwzAFDDGkBiHC/HZsSAauqo9/IYzS9R2PbGWCRLRGtSq9IUWMUPejf5FCw64/oei6r7g7byRz0eOS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jjgL2e39jJqCveextW6g2kYQCGOljet4WoQqY8OmegCtmm0emwummWywO6PknnOsxujDjRye7l2itW/Ru9yW+Fu0w2RM2yZM19UkrOonurs0hF25RkExSK/2wD2uZeoxu2XjPiW4vutc8t820J29fkt826v2hXKN824Fukre5YWuxu7OfPNOmZO7HuvTpPQOwaW7Js8yDQYWgIe16253KArAWQRDLmnDo5RfInm6Le5MWg8sH32zOe5DcXpqUdkvze5C2rfm4sVFXWPze9ZWstOjrm26vGu2y9WxrW1j2xtW37WjYW5k7D32g8AfuQLmWoue3JKOAWh2u2ZWgE2/11SuCyaG5/mi4e+6W7IW1tm6Ls2bW5XmkF2mG2jVW8qW2XW6hW+3mlTepBOiuu27csX27CWsYW+YWx8u7BldDetHWhzmxCWzXm8M2mXmkYQBfOw2O2dOliWyAq6QW3De2CW6NEEmO71e+wugNmzKeyC2st86HWvxO1V2+d2oVegtW+O2+UevzU712iyW1HKW9W3y23xW+je51Wq0ekHWlf2ucWxrUoaSB82nXum6uon2zsAMmG0/8pjmqgO94khvKV/umyM97upzmoBOwlWjTW1KWrqW1E2vnevKOnseugqUBW5Luvn8kOe5augD2942i5WsLu94WgWui4ewYOwp2rDmtS2n5OznWso2lBWyUOxhfc2UuESvPKdLeyiefjeo4237WtDwQOe/LW7+O3Je6HWsdeh9u8U2uHOki3dde29u2Fu/wOqt29bOsZ27eOxHm1lk1zmj6Wj+23kQhhWkWW1nu/FW9pk2aO6HKebmnb2nvKTxgaKZFzesyWrGW772gasn0W1dWh+u/E2xqOpFuy4O17u2xk4Le+XW1Puok4Rye5yWscWqLeu1036u2Le9dk3xWwzKUUWpLeucWtDwVLeiu2v+ODLerMOrLe+9mngUL525F85YWgre8resO23nmwnWv/2wreire46Wtj2v9IKP22revrmlfUBreqoWwGC5zmlre+E21B2jrexGOsLmt6G09W3re0Lugbe5C24behcqUbey2uxrW0vmsUOtQ2zpW2bers27gfBbe1x27rm5beoIW84Wtbej6k02WgVO7jm0qun/kB9u5XmzAOnKOnwOlNegje1rWhgWzrmqMui0ehUG+3mp0WmW23pqEsLIPOqX2ymO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zueivm5o+pOO4XexAqOkWtj2w5W90OnmWzsEYIOiMW5eWrA2zOesPYAc+nFWjpssM+vpWp4W9LUlieka2+50lzO67etj2i2fMi+vbWg0cLm+wW+1BW1AW/nOn0+nrmx6wiQ2q+2gsZTaexK25IQUk2saWjnm6xW2K2lXWC4243m98+rle0Lun+WqbsnKW2M2rEek4xevuqTmg+uw/O1pWg+uj+ui5W6oO46iqgO1TemIu1ku0E2vYW+2+/Te+8+hRejh25DU4U2mW2v7jdLLdvCZJWzPKS22weOhYW8ce6gezCeptOntusQCzNmwwWBM2gOksPe7sOtDvVzehCO0tm2QRIIOm4O+Pe3zexPeurO5Pekn2rQWoQqdPe7vW1bm0dcyQWniumC2znMlMWuLeove94+vVu5LekZuiveikW68u+rLEEW3q+uve5OUPM+/Levzm8M+3A3Ns+9vesre9u+xU+tms6re1HKVq2gfe+32laIYfe2IW1hWshW8fe9retLemS+7re2fe61M+fe6GOvCupfe8PmxqOsbetfe0pOqbewpOmbekfu5+Omqmxy2uDW+NevWs92czPDE/ehs2hFySs+q+Oj325Iex+ekWe1tmwxOtCe5xujb253KahuzvWsye/tmsuOojmmFW/tmkKOufHSfKGOu+d0h8yBrkhge2s+vGkurO1ZO1rW/uQWs+12kurOt8e4120xSBBWihWrceizmihWpXU7oWnrmuGZAA25F879WwvCLL2gski7gKZ0ozmvpOgNeyl2q121zuy6W+LewouoMWpK+rs24vkFNezOeyAu+3miN2xNevXmm6u/nmtNeqFWyfu/nm0s+nNetAO2UW4Q+n9m33eiGu/p20tehw+1YWupuxqe/J2gvknGOr0O66W2hWniOyBW/o+3A3Uxu6M236WwY+zte582vyejieuR+qR2s7u76euROomkhF2q426tOpKfGduugugve0o0ogO4QWtpu4TmtDwRde8buh9u3hus/m1QNfGWxeezdevsW/a2ndei/WrzW882g9ewbmo9em7uwkuqgUM9e1cgXB+8E+nIMwaWkiWiERI42h72/bmykewA85Ie0rOt6+idWj3ehJ+s1e0tWz1evRW6VWxQUItWxY+xPkotWpFfcxUwfjZdmsnOyWWoakzZWhXWj32ohWrae/Lm7y7H0W6R+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y4+roOiHO8B0yTm3kelPBwS+/deuf+hY2nte/1+09BrzWnmB3zuo/jdXm7vB6/Wqkkju27cWv42udBhae8rus+OjY80gOoL2gtuwR24U+4kfXIOwle2A23tO7f+lx+xHu9/+qPep8ezrulbOiY8wjW8AujcWwR+rDOune9pk+vutJu6NEeDOm6B4zW3Hmnp202+/DmvSe8t+3ru4BgdH2wA+oHOsz80bBysOzWe18WkgqC0W/mejjgFUhhDW/hAOY2hk299emeekjB2UhrYWluQA08iGemY2mrBzTuqp+zWe7p24XKV2W0iB8P+rV2+SUz7OrzmxPBhHusNWE5BuBWl6e92O3POzzO5XmodKXkh/Q2C++zaOw/KfY268Om+uwdB3f2wMeqrOu4W3puip28o+qrumgemdW8AOi5BxFB68B+gAcY+1rOhpe51W5q29t1FnurGe/hB9/kalWite6YQZRemh2r8+iGez225XmmWemA+0R+41215fWA28WehDGPJWy0Bj2+mXurLARd+1LO8qeyshmPWrghrseypuiOO7Q2oa28o2lc2up26525OO6NEMZ+/Ds312s0hvV28m7ebmjVWtUO0buwSO5Iu9dkzdmpO2tYeqce8WerIQT++mcesS+uFWnzB+chuE26Z+vXmyvm9/unTWgA24Netg2yWMxE2pG+3QBryOkVB3IBrZeq6O4628ChhBWgtuqXepi2jiu9FB9Xm+dOs12o/jV+B/UOu+27TOtTuwjW6kh9K0t4hxbOioB/N+6mOyXWlmeq5utg+klewoWjdOgVW4cW4MWy+jUL+15uqluu+ev82s7KGJ23EW2E0g0e76ezE2rTepUvU1Opnu11euEe28uze2zxBgPO1dmxnWtqOhTuhQ2z/W0S/DdOup23o+6l2vSerdmn3bAcO4lerse23zY8O4x+h1B/8Oxd2vSh2FexB2oWW8Q03+2o2Ws6W7X+iIBzxBpSem6WvdujTB2Qe+bUqCEZT2ss2os+4ge0Tmk528gesQe04k2xOmgeql2ugevuu0ShvaW5ge/ne/Tu9cWiNW4HuwYe3r+uB+nw+5bWkOW5hW/VQPLBvpWhY0/YWkyh9H2zXW9x2hhUlgzTOOpbLbikyaGwW2sIicp+9pemrm0B2ro281+wQqPze74Ox6W5x2xT++EOooen+rPvOqEO+eWsq/aOOrNm5NepgBt6On3mqgerQUA+ekOO0DWnrmwAUadBtfO+dmzxgcVWwiWzc+2whi5+ucO9M2jfm55+uyMtqWtV27WOygGHE+tlWtBiUJO4EB5iPKtmln0x/mh12i6ZWKeuuO7AusAxVYB3wWgUh+aexROraunpu0rBqNmhsBg428gO/7ukbW/w21OW5autWWm3jRKW4/2tHmuKW9XmyQ28SegoiNlBxnW7fBjkgT8ei0Oiy+svOiDmrR2klWn1Mt4h7wWs9+9IiC9+hxeqQek3W2G+ikWjHmmPKJ5Wy4pX72hkhurmu3M/YOvDuj42tr9Bx6OI20YeyjB2ye4zWyUBhjLaKWrOUOqWkq2tskpN2te24x+/Se61M0XukhhOJMkB28fB/zO0RfJzuvgWuJ+sCWu+O2HulrWuFWxo2jSOzdmyVeiMByHB1BB7Kh5sWiB2wLmrDk4R2p62222tV21IumzWxxOpXkn+ulUB9A206Oiqu9NWmqWgmsyT2oyWyxWo/Uen6LZUnue1/B7w+2gadPZYdW/FB5sesR2sjej+WlPzAKWzOehB8qyOuEu6TBqaWjFOpeWqm2um+29W/f+j328D0bgwXRWwmRK0+1DW7x+2VW/Bu3EWzsKV2W5Xm4FB4w8iDmwDusCO+pe6o27LWwl2lbWySW3Yen0BvPmz/29kO9p2+PWywe4+uho2Sj2l5C3Ruv/Bjb+hTW/zO5qU2aso5u88gLpu8nOjJe+zU2R22hWqcOxghzIk4J20LWhkB8E2hg+8lOnK1SkO5OW7bADOBig+0kOzIBySW9lO2ChnsClt4O7GRHumeOpN2oU+6AUWjembgMl+4BgLzmoZlMj2gDB8K+1LmwqB0E+tBWucBnwhhEWwO+3x2o12vg2z0uklO2eBh2m92cj12zPurXKQ/O9T+1M23/+tBekafQue3+26b2j+Om7u5hQFoWqacr1erJ+m5Ovpe9xs5c2m/QRiWvuukY0v2Ot7O1U+1M2wgUO6Wlae5AuzGeh9B5dWljm6jWp9W6H+lqcAIeyzW2oBjahuP2jrm0/kElWxeO9D+hIO8hOo3Bqge+MenjumsWju2siWrxWiB2+tm3W+632kg+2qeuxeoG++M8mKWmHm18WjOOhT+xcWjP2/Q+8zuvLm04B0pupsW0Q2H0Wmse6NW5CezOewxOmK2lS2zse4MOklkArmvuuruuVGhwOfe62skWhahii2zGhhU20ZeKLWgzm8eWuAOvHemIW6hhgY+0pBh2Ws3utYewxhpQk4xh8Y01pMztBj0W+d2rDmyxhz5Bk1ehseyFWy/+3ehqaelxuvH2xg+pKWsghkIW5tByC+xF2jMulC+myM5Qu6yOptegFWsnOG5uvbO3+Oi4BzzWttm8kupWW6zmg0cTieh5B3UBnW24I2e5WxrmzHKRzBzv22le9S2i2WukWrTethuiHWxzO70Sb/mm6hkcBxoe7CW7NOi0fR+C2/Bpd264W4QhgFexDWm3O2nug8AN7+VGhu62pQOjBupVW1h+jBuupu4I2qhu+M24wupm2oQW58h7gW5fW3XBsEe3jB/A20uOlKu3gO5uuodOnuumA+igWnEOguU3RUmHO61OjCepufFQ20EBmAh7TOv5uqD2jckj5O61OtRu85W7fWibu1cWzgOkZetLuqZh/a282+kTmlj+yeuveu3122921GUyRerfmo4O6zml+u8/u+t4S32qEu9dM9L24JWsduvPm664FqWkM0HB0il2+FW4SkmW+if2lxW/tWq3kgV04K20Zh/B8YEhhBurQO7Ohmx20qu2RvWV2wEemz+reO6VOn3m3DW+o27Hm7Fe3Fhqq+/wWrkh0eu+g29I+iI2p+WuQ2xI2tUu5wiJqOlI+gnB6Y0/j23tBriB/uu9oOvuus/WvHupAhlo2Sz2vPm5uuwT2yjKN4h3PKStByXelqhmNe+50wpO7ruvG2xJBtlWmzeovOvA+9Fc+2W0/OvjuiiOvHxKwO/HBkF2u+s/l2t3e5PWvhA4tBiPO6IOwW2zWUrWBv8hhf+wBW5+OsyOtr9Djum0UjoBqsOii+71mj+Oshug1O9cBmXe552keupJWx7eqeO9ae7bAHpOk7Wtc8lTexBhxKBy1OiYWwbegxu9nekZOzyerLm0lk5hfZ4u6oBobOyfmn3O3YWuRB6menLBt5WqB+4OW1bm4uhsLjSz2v82pwiZV+6bOlloSdWrTeiOkvtmkn2spOhAqi4WhKu24+wAe7A2/lkohBin2+COpWOq5Owae8AeMZBkLew/kAKWxXmyxO+aBvEupp+puunK29+KD3mqN+1uejiWpERHheqjm92ujxOtFW/nmjjmoIB9kOvHm3vWi5W5uO+6MOfWtZWsR2i6Un5ejk20yW9XOkmegy2j8BiwuiHwDZh+sW0xBtCOra+5NmuH+h3gaXMr+20QB2pB5YQHcBiyhlCWkBu0u2j9+weOqDu/Fe7A2v3B2U+oPKUnWjthgH2vUelo26YOkLO5LKNjm/6Biaet3dFRWpue50u+ZW/zOzUulgzez26OgJfm6g2s7KMRBh0Ov9c8Q02Xu5dunruzth+Y2g4OrCO4IIh4Ois+y72+s2yUhrCO/7KXCuysh4MgUghjbm29hncOvCuy22lsO2VhnxU1W2tnByvupBewBWoUexK83QBgEunFh1Perc4tABrqu9de/Bu7H2icWu428u2+s20TuoshrPKVN24OO5QW4qhu6h90On92zw9A32m7uvjh8O+iB2uvesLOte+88+0a2jZhzhu2OB7ae+AWn3jF1Wt8O6Nm1pMw409CO3EO12O7Desjh4Mh9vOklW7Qh+3BzPu0R2mjm2JhipWgPW4He6dhzFW5Nm41WsC2+yh2d2oXWlEWmnQT9hzoO7Pmupuz1ATGhlau59hrZOmZeuDW0aOlbOme2rMu8JB0kesuW/3mplWs/Ohi+kF24cB+tmxYe3/jG6+lZ2wZhgMW9oWw5emUhmec0+cka2pk+rUOol++nejr+ojmv++qumok88U2l6B95h5bWr4Mqp+ksey/e4yOmiOtq+vCWnTW1jho3O6N7XCe6b2zzuqBixyO7Pm5tuvhArXe3jM5dm7R2hBBgZunNep+WwfjGXehCe5Chg8sKneqzknhesYOjue14LbW2rnez3mmtusE+9YWrK20b2wfjULu8eh/OfHheuAOmQB1NUpv2j8ugt4fSOkfu/S+iX8tKuqEOwK+hA+PF2/e2gah8z25IWu4B5JWys09IB1EO2g+owB1Uu82OkLe6VuyPc+d2n6e2PuuA0umWoAeiFu7lhpRW5t4Z52oZ++0+33mruOuL24pOmqmhjugOW0r+zwhgf28lW/52sr2rW0I/O7oeb1W6r25zuxDjKzh3UBiu+rKe6nOkZu/vBmHWpFYRJenguvIWnymIFup8ekje2j25YhwXWxjBmCesWWr7eqne0GuEFekn2y6W6t8k0mb++pXW9WOw0caqWoUOrJuvAWlfKR9W5sO9xu9uWrOUYpOnKOh1swZ8KeO/S+nHhmw2Q9u+4+6U2o5Bg2fUjBySegbBtHWrY2+Rh4Fu36ezGOt6O16h/ABhFOrs+9ge0K+yx2pYWvK2+t+i4hle+9/kBq+9ZelS+zXW86+h3KGjybTm5ou23+16h1VkxJBjnmkFe+22xGWuEuxrm9uW5DcBChgA+nhWhC2jg+uNe8hW7IWhh2w7e8WszQh8XmlA+2uO0JO1Lm9se47mslWo2W3c+xD2yieRee/zOmvWiEW8aBh8W3Mhmee2RTFVe6QB23+lMhuD+rCO0E1LQO53+r9+gDmzPm2/KMj2/zOyKfUBesLm00OqkkoJu8fBwMh7r88vh5pB7yUVGOzc28z2i4B19UmLmse+/8+hXWqeeq/+nMh3DOvMO5ye4C0pLu0IOrKe6Lm942sj2q72wPu/LcxB2sXupne0iUq12yx25PW1Vk2KenyWnaOm+h3Te8LhqYOnQhsrACqhpj04b/MuW5vWuDBoBu9jWtbzTA+rku8BWsuWiP28Yur1W6mTRce8v2ylWhTB+HWgek9FBsR2x9m5kW9a23H21JWmh+go2Ux2ol25WBi5u5vu/Z22D2saW0oiFZW0l2yDe/ueuYWuEuouhuP2zuezUOggWtKfeeur/Bz32iK+jbjMkhpZO5WWq/eu10otOk8hgAO5i25WO9GfYgWleepohpjKItWlpe7JOwi2n229lWxT+0D+0quid+2/muDB11u8Nk1UJfyh/k+tLh7lB1Put606OOnwhxVSfh+/GWs/+1eBqjBwE21OhuXB9y+ty8+/2inh+shw9hvzhjtO8Bhqzmhg28x21fkJE28jc2xu1ehlTutzmlNWqbu/ah8Mh5zulV2obunPUb5xJsOqBusZ22vW9jerg+ixUrz+nGWxTel4e5BOrHWgOknk+iCW4P+skOtw+/IBxXBkBOx7+qOhgBe69m4ZMnxWnzm5ARoQepfDcEh7vBlS2vs+6UO7wki/W12+wjWrfO4XW8NWcxO8kOnz2gmBtK25TBrrO+028mkjGWzreu8+qwehqO5WqNfUx/ml9WxB29r2jVWwC+q4Bra+xcOpjU0Ohy4B+d23Oe6b2iTh+hBxj27k2yiWhR1MLmlTuuTmxV2oqfY+2h8Oqe+8lh7B2nge8xOjeOu6OlrurxO4khiD+i4uqiO+GW62hhxOncBhfmjc2tZct4h6RxQaO08WrQRv12nA04kkho2gA245um/u6ZBuJMxw2lL+x/22yu4Sut60nwhtwBuwh3WBsnehlWswRxGegrW8aem2B93e8xu/32oRB66+qx2kM2k++s6OnLU8bgDfkuRWyLm80u6uh7wRvhAoPWs6h7wRuF29PZbNOiQeupMnLemz27JB+7e3gRtbzEE2tTu4pO3Tel0897uz4u2he8kRiH26TepQ+7AUF9WgDe3Y0wg+jlB6mWpkB9Je6KW6v+0ne70Omvus+etzm9+25c292fR9h2dOwe+kbh1SW9NWmV+zE+4kh9Funtu8NWOYR96O0LKRYW8qWy6Og9e6GOm0htB22mWm+2jj20kh7r832206O0s20QqSfh8UR17+Uh2/ROpBO84R/KWuH+o/+ooW2iOg9m5c+9e2q0WntuzdAH8ejhWku+7GWlqcS625B20BW/Ih6v2oq23Ih6YQQs2i420IhpaW/YWo8+4gu1+2+bhkUMW4Rzrmw9hikW6f+tmOwEUvF2ujBt3ernhozu0neq3KW0W8EWvwR+ZWzGe/B8SRBklOl+ssjh7IR7tOwcWvZMiA0xaejjgFfe/M8siWpDhlCOtyBggu3Tmg4OqegCGO+YBu6sm+2yMWlH+16OxzmrMei4BnqOswR6mWvWAa2e3hWidOxmh/v+kdy6NWmvu/XOv6216epp+hP+uVjCfWnxWituk8hnvm69OssOsTmvzUy/+hvenvmnsRkSO9djSQWvXm9juw3ehg2vUBhfUFoRotm6whjbOrYWyG+jMRzc26fu+1h8qWngUQ0R3dOwYOoM+xpWi321fhm+h+NehkMq6WzEWrzmtRuoQqS/us/mqVjE3+xy2kdWoZ+lM2ruhvwhs1cqe+s0RtpB+rW+N628R76O27Bxee1tB2vhlIB3r22leyGWglfNYOrS2sQeqOhjwe8PujS2mb+7AURnWvAWhBOh/hoLm9acgZW7wBvRWy1+xmfIQhiWW2fm1SeskhlzmguUuZ5HnW20OuhBw/e77u/kBlaISjB4U2i4utgUcA2lee4iB8X1UzWhserABhHhxrm5NUIL29RBjZ2nskV0Wyx2mIOuEWrxuncegBu7qW0gekghnTWr52njeoZ+uB+zG+uZemUh5WWt7uq9WtDwAZWysW5bWniu6e2+H2wVu0ee0PWtru8U2j/W5Is/GW/622kRp4B7Ne+nBoHuhfW3+O/VhhVW1zMpmuvze4uOxJO5PW1kWhuAS/Ud9mz1Wyx26EauAumqe7Hm6ZesaB/+26QO1Lmr526V2oQBlbetF+ldOmnQRWB2nuoe2muWyjuhvmwQUGN2j9+kzBsc+2pWqAe0cWyEhsPOxROhX0uAWvye96+iQ2x6uw/ewvuyfh2k+s+hoZhgKASMR9C2792hQO2wR20O+KR8KRgyu8z24ABg1O1T2r22vVu6aeyrWiHm1C28fe7MB5E+myuoU+uKRlgBniRy0tPdetNO2TBhPO0BB7Dm/M+zFWmee1HnRtWuxW3KW6l2vLRL0RiD+i6RnE+/nuh7OrM260e4bu4UWguoBV22uWmYQLNWz6O8E+1CRqERqs2ySW+SB/3umBmZkB6Gsq9W2Z5LiOzQUfwWtgR5fOok2nk2gSW/SWvgh2asicAHHM9UBik+kMhv0Rq5WvPeiVW0vhiuKGjm3U+0Z2guu3sRq12/wWgcR0GR5+22nMqpBo+uyMB4h+4MOgfjFJe1Ju7cWiu25loEV2p72r7OrKhw2W+ZW2E22xhtje/DOx5+hcOu1O3Sh1WOmoO9jWpNuuwhlCu2TOrJh0g+lTKRmO2dmxz2vzmzdW+dm19Wtt+3RkBBWiCB4rBx9OvHm11B1K+g1OkMhpjKeNhpDuklWqIQKpBkGR6rOqy+pS+yGRn/u2121syWGRoQRjt+hGRzMWiiOpCB7GOtLh9d+wRh6mO4thsv+te2+42rhhrkW+oBjOfTvmkVujx2h8O7H2mEWtBIK7B9q+7Lh3VOoPm4tm0PmyCWiPmqUOmkeqsWmjW+PmuIWltmlGWkH22kerC4SBeueO/yhqG0s52m4hodu9Q+0Q+y6RlYB66Rw1W26RgThu6Oudei8WuGO7gqQs20punzB/B2lkO8s27VB+vm36RjymC9B5OwN22232xGRvvkZGRmserrevRu3WMqiO7G2rGR7IhzuW0MR6Q2gmR8GRyMRkmR0oh1Vk4he7q2wZchCB3+hoaR4vmkPW+WRuyWlEusvmn4ewtkta+3VWkj+62BuRBst25MRq/2lT+ho2m2hhYu2F2pwh522xIhkfh/GWiGOoxu4E07wh2RO6/W7GRpc+gIh9VusSRvsRzV2lee51W0mRwZ8cmRy/UZc2r41R9hmqWmQe8lW5vh/sR0Lhy4+7EO4TB0GOuCRnMZBqm5YRzM21XMyG2m+2wjWmvulIiX/2ife5GOss21CRys2wghzgTM4Rm8RgX2mZe3U+8U2zoRuU26d2hTWvoR4BW2P+8te6b2pkO1Pu1hemx+y7mr7c5DmqYRoA2mYRoqfVUR06OxYR9ahmsW1YR5Dm9YRotWzYRnE27YR/DB3YRgDm/YR5YWw4Rpvm44R16h/6R5Q2nfO0BWrXeok4NsgcEB2LhxQhnm0kPmhu27Menjmpzwe926ngInB4tOhUga3WtuOl/hgS+ul+yj24m28uh7juypOmrmpoMxE2m6+x0e2tunvO2yBkE24cu1O2wJhjO2q8u7O2+i+jSupx2uL2vdm2x2soKaPkgEuvke+/BrYemu2jzW0tWqVeueWgDWz9WyMcu2Rn6WnMW7ze6MRkD2lKuz++z9WrCWsu2un8gPu3K+ztkyAhja+yvu8Ah8Q0t5+y2u37m+DmzaWpn25gB78en+rTU25jm7bhkZeqgOjEhm9OppR67OzVOnrzGgeyPhjEh5YQONemEWkHh/rekFW9nBsPs0N2j8ugGgUHgdPZDchorBrUckD2gE+lx2sZWmK+gZW4huja+l6WgfBzZUzDvTT/D+WxcyGK2++Wuh2ymW14Oub2lrB1bWp/h7tOkB+wB2pHu9MBnv+6C+1EWhJ+hU2/WRkM+jXm5sO9++8fmzPmhsOpt29WBi7jK5e9Dei4e7JhvE2ib2xrU2sR6mWtO+8jc7XWpsRh8Wh3OsJRvXmntu/O2ySW3d+oGBn5O20B6uW+m2hGs/x21Xu/JR5gBs4O2LB3ZWph28XU8pRlReucBvCuzkgWbO2pRquu8hO8QNPbh3welpRlU2i7h1pR3ne14LbpRvbhs1B/pR3DewBO0ZR5UWlw+mEW0qWoZRyZR0M+0e2n6u8FRlFOz9emZR+w2hu4BCBtZR8BejZR1VknnW3+Oe22wzekiu8bB1CBiMuh+Opbhx1OwGOjnOgkB4ke9fBpWhw5WoP+mFWmCh6k2pE2ip2tIW63++EWmH+wdBl4BpVhzsB8Weh8hu0BrGhhfW0XuxGWpHWkfmnf2ocOx2hk8R+eOocO4ae65BwQqUQWn8+vZ24Sk3/hvau/4R/NurdmzIcjIW6U+pw+6Hm4AOt22sS+qoWu+O7b2g4+31OkMhwNR0XBvFhj3mnNWf+hoj+0XBh4Br/Bq4BvYLNs2hoejK+s1g4v+5kR7RR0XmvRu66i+o+/wRiq+jtm5wezY2y324WewEOwHOsthxx2+Cuhnu57WyBWrXu1Lmuy+ywuuxO1vWoYeuVO+tOnTu+d005RtJ23T+0iUgt+rhB1Pugl0qM2mn+pZe8lepn+jk2+hhp3e7jupy+oWR5/mobB2vOvoQDUR6Oeu22hVB/vUoC2/Hevu+ynmjF28M+hh267evhetl22Dk3j2yyRhhUq9W6WWjJhydMnEWgw27+O68uqachFWzBO9MWrOWzlW5OW0O24eWgcWiCRvyelOwGtmwaW/6B0Wug/kH4hn2OvCO2qO3jGNf2m7uxuBytm1jU5wOi/O1F+mW2mch5E2qX2ytRjCB6D2r0u6SU9Cu/+Br+W26ugJe11O79hlZW2gWuoh6/urq2rHemcBiZM28hrH09Tuoy+j6ejx2ijmr++4GR4NB/AOovump+uTOj4naymO0R1oQcM2sARhiUnSh6DuhRkqaB3v2hEarkhiFxJ8e3S28xkxs2pBu2bW7++z9B6guseB0yR5Qu3Y2obW74Bg6B3dUWO2trunBBtO2+2sqze14B1ukscO+82i4B9HWlK+tx2+Yht5uun8qf2qdhza+paeskugcWzhe69h/sex1OwkR0vmtecbcW7xW3x26KWpUvRK2lFuzQ2+YBUaer1OnL+1S+l8YFfUZjuvdRhVOoy+vxeljRxPWzv2wHOi2OlPO9rs6NBrxWwU23jRlCuqyOl5WneeqYupU2jZR1mGviRzVOw8B0FRynm7tOs+OkWulYWwa43/BzWh5uBrfm+iOyrRpeO5Lu4FB65fIJu9Dhm72kjR8URh+RteB0dATWeqgevn8zRB48ejq2s3B720tCen7WqxRjVOrHegO20Zhu2e1+WpJetyi9U2hAMtbu4Pe0zRvjBs4WwkO8rm75xZZ+lVe7Nux021zugpehPs5QW5EWsveuwAffm2yuosegufCbh2S2m0e4ZB2ChiCkiA0nwhyhh0rRxAUS4Okjes8hhzwEZ+4LWhVWxTSQ6+/K2nee6LWoRkiAW+fW7UO2bW3D+xY+r8CooWxbBi7ekeh/weq0OntWs7BsiWhbmtDhxyB+W2m9B+qsw3AB0Oku21/U6NBrR2rLhvtu9jWhvOwDW8DBl12yrOwlBiwu93Wl+kjfOizBwJW0x+q42pr2vWO1zOoOWvx+qA2sTBwzephW5YQZhurKu4ee6HB17R9H2242+QhhTh7fjez+icAJSLUkenHW87ujTewUBxg2mHmmp+6he9te4gOr2gR8hp22soegc2irhmlWqm2woRpWutNSXFRw8B2LB9J+zI27bh2hRqJ2vP2jAezzcV0u58U6We+s2kdAYxRlXB8EegQe/Fuwo+qXe6YWwaSHxu//m8mk5B+3VW6G+op2o2ezHR5RhltkxTSStB6bR1ghpd2hqh6Pmj+KLP+xIBlM+302obOtTu/R2u9W+7e8bBtP+rO2gVu5LRhK+vhAoWOuSO1BfIQhxhWpY2ghuveB2sRwOR5EWgD++DBnzKF7W8Qhx7RqeW57R4bBsVR3tusHBqC+5XKbUe7kW8E2suOjmfaMOguWr7O3MktPB+/u3r+3fm8qOuIiBq25WhoOgEhOlaexzOiH2kg3UpOk/O/j2uf23w+qn2v26V6hgxRxvE1zWxDWjnB1/BlquoP23BuoAuuyBmeBlrR4e23DRxZRhAAbd+nFO/Qh8xu7Ohk4Rs4c86O31Oz/ugjm6m+wvBm+u75+oPRgzLMQqS9h7w+1QrXFRrl+3K+xcyE+Wrk+nWe2q+3ROh/e+cBuV2zQWuPWqX237R+ju+OB28Rv1R0resRBkKOmkh2Y8jou5rh6zmzum8pWyjBzQBtmOha0w3+nyO8U+pWO+5+8WO+lW7Nh0U25B+5wevdeqcRgx27mh17B7fjIbO92h0UWlH+ovkbAxrfmyo25p+h7RoPR7nRnyW3MuiYWxGWvyep2u48OorBz7Ws7KQeeoB2+J86LB8wOgfB3zR/FR0Ahuc+vZWx/RuE22qK6xRwvCBfBp/+hBcojet7mijB8NOgTO9Depp+rV27k7bcW9Qeuyk/0hsAu4NWxY+7k7XoBtI29oQR2hvlR3NAMr2yEeyIuiFuqVjSeO0rW/zOiM8mERzQumtGIZWiyOj0AQu+jHhteuvYenkwc2UsjuqyO4iu742kUOsNUudhr4Rq42lEWj+U4fuiTRwEO40Wv8BofRn0W9XB1M23pe3J+kv+8fRo8hlgu/YW1fOjPelkWz9Wvx28Nkjchi4B7A2y6hu10mERp72m20SLep1u57R+NRo82wpWmvRhfRmM80/R9rBq6Oxph97eh2WgYWgTm+yRpd289chIemI2/6upVWzoh4pR5eW+ZR2G+y1O7AUAg2s3Rztu9C2u9O0lRlaWvCukju5X2yW2sDm+fWyYx8nuvCus9u62OuX235Wqiu8GRlWBqX2wuKe92gW1ICshLBgN7bOfdT+nrzOPepgRzG22/KGXesxOh7R5aupnesu29FOyz+zpR4ZW+FWwau/x2jOfJbLF3kgvCX3RjAx5tunCe4kkvL2jdU0HRnE+/WBwh27mqI3u+yBpPWw9h1VWiXR3cBtcBhtm1wB1Xmni09lWzWe5LhzfWtjWuRW/JexRW3hZaghupM2rgd5R6Pe/kOvI+h0O8rqrYW8Eu9BW/1upNeyZeqMOwkhm5RqkRgPm01OnkOiYBozk/0Bsquk4W4JRypO5vWwfhozm9L+wj+/vjafmoxu9xu5u2sdhra+oy22Chn7KWfB4kh/FR1tm1fBn1BqEW3oxhfBzKWji2y2ugDWwbe4n27k+mhewxe9nm8GR+92vSBt5u1kurJW/Uxt6h+HR1d2pUxkic5au/cENFRpIQT4xxPc4b/ZJ27M06fm3SOyXWtzWk/KEmOpKWkjhmFR+DmvOu9t2y9WvPm9WhsW2zVR/Be6Lh2Rhg6Rkgu2NOrnusvu5Dce/uyaR72hpt2j8B/dWzkgO8e8Reiv+wAUQ6+3128Ixmj20ghhKhywhyuu6mOrkWvUB2zh54ujbWnLRgUW3nWiFxWq2iDhsge7Ru0CekGuRyutlBizu+U+7F219WhBe4yO4ku7oWwaWy3msPO1AqK0W+uW33BikWmx+yVei2O7Me+N+7KdIRWuxuybhrbBmXu0DOvZOzrR+XWno2ixUwn2wAe14R+au2VW5LKHXOq0W6tBmKOrXuxeezPu19mk/24BgTvmhcR618n/WxI26d+1AqKbuqeWmIOvWej9mkRRuPm/zRm7my8xwsW2kx6Du7BsycWoBe/TWwMWjmWngck0mHo2+1uvv7OjmpPmsbhuLmowu9/285O7XMDzuy2Wjxu7WHEHu+ce03KbIRpch8jWgzR2O+7xus8BxIR86By4WtjTDb2vj+/r23Te9pkrPOoBR2ChrXWqbcvzm142rV2hF+/N0tjmhWBixUgUugQNPyhrXKX/2hJ+wBWupukF2mHKEmOnIQVAxiGu4wAfThlzO8OBoNugsZGdk1g+hsh212q8W62fZ3WlzOpkO6M23Qxr729vOyPu7JRpt+iwOuykxWBp3OrGB7hfFzOpfeq724JO6CM792+3O3NW2du292zPeiRW/dBtEx/ix9chkAAHK1b4e0yWgyxkiWsWM/YW9YRgIeluesyBy7m8zWnIhhuWz982uR702oMR8U2mtRpNW7dW8kOtFRj0AUGBzhe+6R3FRspR/bmlw+gSe00pWs+8/Whou7tu2rBon2oAWhout3WuKxs7msKuxKxhAOsmG3B29bRgA+9xkwFWzzRnKxrmM3s27uR+GhgyxyYx7dW2pRsH+nKuphhgq+3/kF+RiW28BB2uR4E+0Ph9x2hgWsH+2uWhgWomRtqxwbhlYBvCuxE4dU2ryekAhrqx7FR3LRG0x2vm3eO3v7K2B7chzeO4/R493a2W3hZLn+1MWh121pM6R+g3OvlWvlWl+RzsOhmROD+oRu+3BlXhlyOypukkujVWv0xjdUyOe8nh942n5Rr9mwQWowx2TOzsOwqRlzh+92gfhm7Owox/7e07c/uW3d+gRW7gW4Tm+dAKB2rMxuHWk5RoqfH1BgXem9slA+nqx64Wzhe8Hmo0xxBe4kk3YO4pWgz+6muyMWnRB3B2l22rix26h2YxlKuk6+zQ2SyB3YOqVBqTe3tBjDjUK+1Xm8jcxqx1wxy2ujJW0rR9qx7nRqX22ChjnABm2gyW/LRqgs9j+isSVdm2s+kWe3nmswe6LWyfmmIWi7gdEW8dm9QOsFe5tu0OClA2t5Wk++7bW+4R2G2lth88x+thvl+xKu7k7ab2hwx1fBi6U+M2w6+oB2ycu+vmoxOlS2sxWscOst+oJWgakt7ASwuxbRyUu/L2jTk0xfCoBu2ew9hhzm552+a24Q2iCRoq+sPm1dm9v+70Ovjh/hu/3mmQWkAR/xR2ZOlL+9ihj/W6N7H7Ot02rXh3WxmgxlsBuV2qJhn52nGO0V293Wzzh6ymGuuobCB2sjLBggexJB49O/iR1BIX8279RryOhNyun2+vuweO4IxkdUs52ptOkkx2jcnXkymu8Vusve4DW4I2YgBmCuqhRlG29vHV3e1iW3Teu+ssSRwJOnkBrV2tj2+p8gNmk5BpFB3TkqZ22ueyGBxyh7Hm3oBp02lF2/ohqy2megTjW9dACkBmCB0bhpoR9yByARjH21xu5S2wJWsn2h6261243WuLm0G+oqhoIW7ZRmegAwh97AHSh6IB+J8k0xxeehmRnFWkY0mUO3N2/xOvvKa3e2LW15B7S2ibB4H+sPYHoR1MWl08+d25DgP7Om0WzCxhmREUMadB3exhhUkTRvohkpBit+rL2rTOyfbGXuiZh21+4lOiVWsK+mnQaAh0xunKOoAR0O26cOgpWhOwM1ByQ2/FesrOp2uiVO+jmm227Se720ybWnFBtWB77hrSOr32z1WxbBgxO+G2wzmt72jY08Xm1dW2TBydM3t2wy2gaepUBhc2s7KB3gIHmgyWx+xry7Ldq9RR13+6mO0oW162v2+wH+hY+qXOvDe8T/C3hiRWyc2tExyle/kOp/kApBkzO9VBpcBkjR8SRqgewCRzmW0ZWmSe872myxguofYRsIR7wR8UO2X2qweid20c2r6WjzEUc2ijm6Ne4guvIBrz+3/mtCIX3+lSB3cxjDOmzRwcigKR6ymQnO0X+r4B9V2iLmukWnHWtKfF221QAcSWmzelgfSbWpFB5xWn8xlNeyW+mzR1C+ype9xB8l07B+gg2wBxk0Bx6+jyRpCh+HWrbAaW2rYW6Bxkz2n3u6xRsDexBxqxfZBx9qWgQBi2BioWhBBpRfLdqtQOrhx81unhxoVO4i+gIWoBgRKOp3OnS+jUW0Rx0HR8M2vGWtHKORWwCx+0x6Qu/JO9hhg0cN4uoHe79RsFB8N+hYW3M2ncRkC24JOhnu7Rxoq+3Rx7Tuwpx6muwxxl4u6mukxxh/ej6B6DRloRvCRnfeoAWgBsmY2nrOxmWsaW6ymQBWtnh3BWhLuvoQdH2wC+nP+gkOgRWy0xyt0oBRvmgb8W1TeyB+2s2jEOnymCOhjPBvfczQBz/O6luvDWxq2312iiO3ko6Z+oVByYOmoRsy2hBezMh95x20h7TB7bAV+B30exfkG1WpKO4vm6TsgsWt+Ogsk8qB19Wo0RiSWjtRnjmnsCyUO1NWqoB0QWtIW3PKFVRhMWnIQFMO9YsGNRw1M99e7eBjdAFNeluu44W6Wobzuy2+9oOoqOim+xcWvEuhhBoIFe22tJ2rTe5Dcd/m6/RomeaBO6s2xMZc5xucB2khj8uooWqlxqQxuA0zl25hW7z+rJehqm5PWyfKFnWuDuxPu2dOrLLOVu5setXhiGusFOhsOoc2sqfZqus52iPOqsevPmwNW0UO0WO8Jxql20Zxh/+lD+gIRyi0lER0f2rlBhsusxxkdy+fe1KOnW2/relGRgqBva+y1RnShs12gPogYBya+5DOhtu7IB4eB4DOwJeh4Cpfmu3u9IOgI00yB9Q+rcu112hC5MHO0TO5hBhJuggUKUWxmWsNRp32npeudB24W5gx2aUzBWiVW8ShkAOsZU/GW2wemBmHHhhh23Vu2Gx0Jxitesoxwo+/nR/jm/9mnT2u5e0ZW8lh2JOmcMo7RoHR9MBy2RylxqHm0zR1824VxtTm/M2oaRvVByQ285u0txgckkaxtf+y1RtLhk4huq2/pO60WlOx0IO+eW7WHDOxrGujSRwW+94+pPR3kOgux252gIxpQxhSWsuxyeOowu5EWnXm7XMLNW2uxtRxtxxuVWhfhqre8Zh1uxgKRuX2j3hwl+7uxp/evRx13+ma27ZRxMxuMUv6WoIxs0WgqW5Nxs1sVNx4IewZekDetXshRekzBklPZxRhiR1dmgF+35WwJxwEeyVWopx00usHgYJRmtxwdCI+u/3e11etce2MOqr2nGh3hh+Ix5KW6mW7Vht6RvRxlC2up2vHeiF+m4e2L2zSWxcWlS2vMemdh9GBB6OiCereW9DxivBspUj4h0123tRuJhmXmsCWw2WmK2oHe9exmbhokW2L2npx4+htQ+mzhvyW9cO45WzBepCegRWglBkmMnzu4UR8lOhd2xDjAMWs+x56exfkJfmxSR4yB9xe1M63U2rFeiGRmGWx7+hnekHm2gaZ++4YOyue2L2yjx56R1tOlPzCwetJujoBgoW14WscOtEnZu4dhx2sWRMR7mKD1xz0O7LgBzmmYQPyWsAxTjWr6xw8UltO3tR/jKWRB/DO5duhnh2Jelbutphmuuw6+7Cei4Wi9mnhuiB2qUW6tegKWtj2sIiOphlpB+KfamO2uWq8RtHR7/h/yh2xBh9RmFh39Oo2e/GevBBqfUxaWmWx7oWwiO5i2uteo0hiZetmRkYR8NOgahpJutAOxQW9y+guoZi+vTu37eq6RsGO9De7BhyIB8BRlQxiM87zxoie4ex5Kk+au1Le0s2orxz922H+lYB4r22jRzGeovkWgaJs2xWx7s2klW5zRt/moI2zbxzIRtAqHn+quh1syWaCT0R3PWoyW1VepQ29U+pcWmDex5mltk7k7IL+g9msiOp2W1ax3rRptxytO1iWxAWm9+4mO92M2W+t9B21Rw4M1thlaOiRBp5BnsO/Xu5ku9TenB+m+Rp+WnXmy6Ongch6R8cWhCRieRzB25K0ks2uxWnKBnB2toWn6Ow2R5JWufmtYe5oeuuUnOO/n2vphpZxwk+3qR4JWkZh2o+8bmluxmjOk+u9gO9nOo4O5fOl+u+Zhg4+3Ou4DW/h1dsWyDul8W6bm1i+l+kpNe3EWwSSOUh39WyvOu+swRu0IemuR+8Mvjm+uRvVupvBql+8FUshWquhmJBtq+0S29mWlhArtMN/cAS2kgqaT+u2Ovq+2as9resxunXk7LgJ2Uun+j9U+kBx/mhg+4u++3Bkh2hBc4QUJZhvDWlZhqgWzlh/OdWyWyPCYoiKcRjGhrZ03JuoTBodu/BBs6hnfkEn2pu+/DBw8B/B8SSe45Oo423fUrmRgGWkn2nZ+0WRkwR8f+0GuNTBhY+8oO8Uh4t+nK2jTuONenvm7PhtCOrDxtAhuLm+fRoQBshe2numWO7Iug+eqgO3Me68B9jBlHB0Z+vk+/6OrUOjve5N2ykelEe8E+6Nuon+iWOqkkom2ngu5hQUk2pjOpHnMdul7mn42/r2h12hiQVtuyhOwphzeOyi0yFx+z225W+j+iFx0phnkRzOuiYsyJuzc2vgWtNB7bm1HxvPW4chsLjCheySWiOO5COsjOmOOy9xqQ2uAOgvx7uWrKkzXOljm9G2tOO2wRn2Ow7exQqPcZTo24Fu6S2gOkt3B8U2+4Rv7snQRzbm2u+jfmg5+uU+x420ze0IOlje7fkEmW+ARuERyb2q5YcKWu1u8lRl7R9zW0yBrSRn2WlYOl7hnXkvaeqKRrHm2N+4q2ksOx3entOqCO9LxrkOpDOiGe3o+qy27NO0RejSR22+hkhmHmvseieBhMWxa+2cWkjmyCx1bu4I82Ea+8xzPx0qB2VjQG2zUW8fxiZ+t6W6henWU5bRu6BjZxgdu14LczXUtO8cRsZh1Ie7Ru2bOmGOqG2jj2t8exYWjtu3Yh/BeiVWuDOqDW7rBtXujG21re4chr41UQW04BivWkxWgaByoBq+e0DW+AJozu1tRvTx9xWzjB712zMOwDOkHmo9BsAWjzkyrur6eh/R7gNNvxql20ZOzZUp/m+sOy+O89+xBWyD2/7+iO2r48lLWvaeqehp6BwQeq/h+Yh4Ze3F20YQL5WlYW2t3OR+loW2vDHpR+nmh7+4/ekluj/OsZezBhrZ07/uiFeym2x8OwKwNGO79hntuzk2/Vu3RkUkBkSWpCugkB7/u/5WzEBzdul8BuxWqMu+QANDwMgJ8u2y525H2wzWua24dO80B1XWxmemc2txR0GfRzm3rW53e4Oegux6mWtxR9+u6VO7C+4OWiZRs0sm2hozOwfc8U+uoutDh9eKdH4ETR4IJtfAFdumDW7eu8AebbmiIRi1Onge8U+zOWlKe0fRw4hvNhi32yfm1527wJqEOzGen/kXR+jAeum2pmWmXurDOq+eyPBse+1qLAbWxUR6/xzY5BQe8axrchgjB1dB8w+jzm9Uxj+hkTmkoOpKeuRujx+znm6r+sG+qn23JCW3m63mo3W1o+ugh8AhhNWngu4txz4JlgzJfRho2kpRhwuu7enTO1u2hEavx0X22ysWgfuvp+0a+6r+/9u/q2juO4Ke7IRxKBt7O+Ea/9RhR1awe5QWuQA07KXc2ztO3E23tOxAO3CM2P22jm/qUoQBhdW4dUQEJhOe4EJ6Pe4p2g/xyfhklOuq+yKfNRWzO+sLO222ghhzkJvvkSU2tG2iWR+kk69e7ZOjwJ4Sh5vm+H2jTuI5upd2pbRyi28thj32r6es4JozRx3OhDRjP2qn2hHm4KOu9Ov5pUO2+BWukJ2nWloWxweuR+kI+t3BgnRh8W9GBwai0SWydW3vx6vRt2elsRzKs4AOlORim20r+jCOmTBmaR0COpWhm0J9iPPShhIe6phueu9LU+p2xB2kK+qbcoyR8lOiYe3XKeXx3oRwtegFWzVUxBh/gOiW24u0ylOmeW41B1NUvuRmZOmQWm0JuMJ8qhubksJfNrxSnx5DehQqN9253muk22QRSPuwQW8mBmCuFuR01+l8Oh+ir7+06h4rukfO9dq3dh9A2sOewsW0/YMy2/VRpuewAURy2+7BuChoz+pEJ3vB7XMNUhi4BhC5fl2xr2nNm31+qyAPgWm4e8IW50+ywuqqBlhOjchjEOo4GdCu/DBt0WmMVYtBrSWqmh+DhxOx6cJ+cJnK1APuzvkivm9BWh8Jm8hvzU8GOpF+nOh64+6SU6xOw2uv1mwBW4FBnWfZXmwIegCJl12lS2sIicOB1UxssOglfSy+44eq0O6T+6cJ1zUx8Jx/R5q8o3mzlBu52m9s2vW2oOvRu3skR4+0zOhORp6BueOwZWuIiUpW7rjbKO/tWyQOir2i2Wi6xteulI22XxnA2+TRrEBij+/5hhgegZW0l2tXsng+n0hlKuvmkyVusPmqlhmXm1tx1fka4WutAETW6mR4ZkiFOz7m6eu/S2zlh6QJ7Uxnakoi2/j2/pOt1CpRfG0klKK/ju8wurMRvEu0oiPd+toh1zBouBjK2wJOjSJ9qU8Y+lJRyUui2fNZR0m+7reiVelTm1JurwemtmlZ+vJWoMWif2vselYhqYx2vW4X2ztWoPOvFhymOyZxovVWT2jdmlwJqG0lCJrMetCJzbCkicvTB4f20PjKsRj5uqUOxcyI+Wl+k+iJmMh+ZxvQWtABzNe0bu7s0yE+xF20YQOz27cWyoukE1TdunKJ3AunDu9z25VQIMqXqW5lhuseqDW+SJuzWoSPLy7YXkih23Pxob2grB0HWnGet0elTuEknUexjTO2yR5QB7cJjOfebm9Bh70ep4OwLu4jhvTpI+WzGk/zuvfWqTW04h5gOikBkTW/BOifOjcu0oiIVBy5hmwB/uugfuxohxNOvEB9t1a7O+SJruugyJ60xr0ubUkjHRuh2kB2nr+ry24R2sOhl+fRj+mjmwZhjkO3xWhbc+nBoA2qrujXmmfKPGhveu19ul+RnM+n5qE+s0oR9D+9aeriJ0iUhaWqvhie073htb+9B2qO2x1ex12tb++6WhP+uV+tmfQb+6C2lYW0iUs7emNhy/etbh7J+1sOwRuhu2rzCHEWkpe/kx8LKQbmwpBxeeyufBBh4l2h8Osah1P2/uQZEe9eeizOjlWnfkKoOteBhx27ThqV+j5RsO+zZe0GRqBB+f22nMpSJ4dUCh2oqfUgOpv+4TmlQUCvO6v+28+zveosckRhlvevLKXnm/3mhdc7M+knuyQRsHRo0+5EOoevCtm4IOg3Bz0krF2tXh5y+33BtlWtuehAO3V23yOj8JqXmrRu0XeinW53ensC+Oxi2Og0BlNhyv22ZW7XWpCW5vRyBO/bR9YesBh30hnMR1Z23cBujUgu23+h3Tmnve7qBhGswg+kB+tvuvQB3mJprmydPWHkyaGos24lSEZh09O+9msPYVu2kq2nt0uLmuiOgjemC2h/kNMO5/mriJkh+neutjmlmB/KOrAOggB35h4vkMiJ8ChsiWkjuyTW48J1Kh7vW37WtKO2Nupu20BusremUhj7hmuJ1r2s4Wibesvm6xWtuJjYuktyjK2+wOom+mmJh425QO10WuBus1R7mKR4OvJughWkAO+ixs1csNOlHk/PhvoeRJB6Rxcz28z2r5Or/+zZBlK+mZhgz2kic90Oonu0z2gkWtMijxB5hWmuu7gUDxxi4hqRx4HTX/R87+hnB7rjMLmweej7h3nW0euvXu+WRwt224h59OvJuuN+0ReoNhz8e+SetO+5WW81HTz+oQW+uuvMsxQR/zO4dW3nm1UWh7xx0xwiW43uifuthOrKk/Y2vMW2MhoZxyeO1fO18WwrWmlWmORlJ0NT2kYum3uuJ2jI2wpWgJRtCibXW/chsXmoaeeIJg5R8U+vjuiGBx+h3q+j1e4Q2hb+uD23RR2oQXbe8lxvU+lix4iOpnB99Br2hrWOnKh64WqqOoRxljko8WtlerEW05OwMWzQBuk23fO1qWwpM8YBmGhgd4RAW25W1qu5GWvhfKBik3sElx6iO0GezUWuEWi6W9W+yfhoWOtRWvNxiTW2uWtSR7j0sr26o27eu7fmvquyL2/VQBORwQWmw2cz2+4R5SLWRBliJ1zu2j2v+OMPRqhJmcetqWp42t5+k/utaRj/W9KqTmcjGW48WxTSbz+kq2zSRlJWst24NW/1R6dBsxu/qLRJeoQulBB5Vx3DRufDBUerGW6wJ7yUOkWz5uovO5NUbPmm9+4Zk06W4Tm9ix1E7bFxt6G5PAcnkj1m4CuiSukEJ0qu8eBiKxnsBl2x3u+lFu6CW0oiToJ0MOxuO+YRyXRmmeoSRix2kymf6Oju+mTh0jxxhBrp2gPWu++s1R/5Bm/WqPe2q28tWxo+0key1O7w27Uxn7u47hroJmoJlfKWi0gJxxUR8phHp+yrBkHO8qWmXmueutYJ2Oe08WpkW32WpE+tvqU/OoQO9A2r52gOO7/26vx5NsykO30xhYO+mWqA0hIB5x24pOoOe5MOq5xz7e4V+unk9j+1rW9v2seO00W7gWuo2tg2sCW6F2v8+mp2zHRhdW23WJxuq2xjah9dxtkJxrmsPYf1hCWOmM8lLB8luibx0awF1ujlB3cx5JW3kJm7m/wWwKBzVuhPO12ksjeg7h+R1DI2vOewNmkZuy2+03mne+HQW7eO6Lu1wR8CxnKW4J+jAezRuw2uo4GAJehROkSJsSegexjteifW1eugyelh+rzmpneuEew6u7Dm0VJtKUyDu/gxva+6Yez5emaRw8B+e86VOl/m2lod5Ovn8hBJtxRm+C6VO/vB0bW+Wrd4x8PYADUqNW/AeqhBgFe6/BnnOkxeiR+/zO/400HgMPx1B+rVunymWxuzjOm4k+nmlpxhi2xmhn9+v+OPR+rT2kEetKfX9W7FJqxRk7O2p+1DwBkhrFJ3N2ljugiRt0W1kW2q++xJiEJ0Rhvqukq+8Ee8222NJsTM08u+4RpI25q+gTBk12iCWsc2yhhnKOzNO35J5xWgPu1lO9xki3Buo2xSRpJelwk/gexNet3xrKhhuBy3u9nm78R8RB4puz980FB06O+c+xPh+xxyvxhq2F5O0Qe2F2mEWkde3Qk9U22EMnj2ofHSdJeUe/nmswJ5LuoNx4kew40i9BzcxnqLNKu2ROlNegNemm8vJO+eeji2iuW7B+6xW2ihgDmzYJ9gR53R49e1JByLOy4B5iWgVBz7O7pJ1QUMQh0XeiVOuAsXIO58OkXRhXKRXhyDul9W+4+9a1ST20TEHBx8Nh0HRigJ4GBidO8AeErh5hW/BWl4B6Z+/uxuWhxS2w9umTu3dO6g24w2gDU6KshJW2Vjc6J61xgmh8KWkC2hMkyxJwu+/tWwQWkes6cWojmkoQFZ2sAh5G21mJ0nkmlexpux6R34B9b+z22v9h3q+qeu28+1Ouxz2ynOv2hw+ug9KWBsqVx1M+zM+kSWzTsRrOuje88O/fxrNu918ql2k7u1yBhfkcKWjA+puW6XoVk+8c+/NRype0Zh8O+xYeviC3bmoGWqTe2YO6ehmo+oQhruxtK2nqdaS+5R+qn2uGZQBJ5Zsu0xsC29D2uzO7Iu8k2uRJq1EZhuoU7TjWy8OgN25M+3PxlUhy/Rl2BkYxnmx3fk7nmpwJqdh9wx7s038Bi4u2Mh2ouzdumZxuXktcRnzJz7O38BgresrKXs2xeegABtecMmegAB8COklxzueu9W7m254hvRugC23okpvWwTu4b2vLmnwBqzBrS2mdun+BqEOztmth+sp+3ZR97+xMJ+SU9KRu2Otc24GRpoRkEhvkRzJuiVO/R+tO2gSBQkW3cW02+5ZBnJ+7auzduwbu1rR8xegbxm8W1VejiBjLR6Qe4wOvMRslxy5O4JRoWWkhs2RR+P2t929MBmuiYYO0ROlIiXNx6MRyLmgmx+fWvbm46ug8sJExvlhvqO53kzZsuDJmM8y6J2mU7KB4jW8dO+gx4pWqpOjau0Xu5tBpw+oxJiTxgpOqPm9VBkz29iO0bmLgW9CRo1BpCR08xszWtxx5Ku28RknurpOve+5fWt/MhK2mkWoXO0bB8yWrlezlRu9xlJs/ZBuEutv2x52+3miPR0TXdxW3hWkj2x2Oxge36e4XWzFx92c5xxmA+obmycJmO2hyWgwButy/M8n4AMRWtm+6+JoCeoJ+mtuqM2uC22L27XMPox6U+u3Bh825NeoiRiDm5Tu4fRwVJjIxzMW95ht6Wo8J4kk6o2j5RlmR6qhiPk+ZWno2+a4PIBgI+ruemZWhfWjO2wk2iZWp3et+uzkulJs0ZWwseoRO9T2tl09DhiyOwxWhDBsDBlmhtpWiGRmMWgh+0uCo/2vHep3O2E2r1c702+A0ewR4DuuI2uguy+RvCR522+iQA8O57uiyhqcO3mOvDesAxGwRi3JqEO5LhvoW5ufa6W2d2snJoeaHbJzXkw3AI0CYCOgbBnDej+uu5uv9uwsWrQxwEKHeJ/GhzPKUyOu9Wqn20/YFX+oq+s8hzUe+UC0jBjaurDO6QR4DOv9xw3k8AB7aukeW7Kuy7moHOkQWhYWm3OvmR9fBovkAuR6b2vI+j+U7eOiRuuMO9tWr3e18B5KkoDWsLW7wRnMs8s27FuxBRizxlte22hoiJrRJ5vOsiu40WnfhwCutTU9aOu4xw4+s/RnXk5+hlw+otJtlRiLhq5B5au9pcv4RnNeooO01WjE+iIO8jRhlx3C2mNO5Pelrm3MeqbOoBRyHuhoR7obGQezOx/2O62JjY5WGeknu8v2v9hmQWmhikIW2tWg/RnqJuO+hDGbWx5BejvRl7h7hfJnJ4FB1pMnTWvdm9KBlq2gVuhE21uQO9WwFenmxspWBUexFR0Qu7J20oWzHKGcBxBJj+UgUBF5Cq7e8fmrV2rk89GupHJsHOxfuntusTM/7WkzBlnjZa2nk++dOiWO3vJ7AUeze+VWtEOmPu5Gh1hRke2vmR5gJm/R/nJt2+s+ezlx6J2o+WkEu9plV82yBulZRxnB3mBsLWiqOqgW1C+sTBwOdfXk+FO3+u9AxqQ2lL+j42tI2qXewvJnvB48Wg0cW3+qehghBoCW8vKEn2+GBuVe1H+wA8wn2rJe2LWywR01OzrB2egC+OgmW/Femh0umO3WWude2QRse+9TxrC4B9u1jhrf+kmekgepee8NOxsWlSBwbu5x+sQmLEWnS+oBk7cBxUB5Pxyfh0wuh+Opl+wc2zlJh7h4BeiABlHeuI+09Wmk+0zJ5xWv7O+FJTRRiA0mg+qHMs/RwHux/x+he1I2xzJuFx5zJ2ou1zJ7nm1fOyHm2ouyMWhp1HzJrAp7nm+GxxzJuJeq1e0c23YeiLJmAujRxts2qLJuEumLJqD2ykRhLJ8aB5fBwT2y2WkeiwUQQN+51Ww6uy3+qX2tXu/LJg1O4ae/5WhZ21gxq421jRpqOqLRnRRnUh0uO/vhoG2wzxzHB1tmn3bGJ20eWzH4ePul/et3hv6RhAOpd28wp6xGowBw8x87eyGWgnKD7mmdurxu9FeuQp8HumBWyjBxhfU3kiNO9/W9mehpetYJ1sWsrO13W1uJo42g5Oq5YW/23UO3hW/H+oQBphWvIe4UWjbJ2fBrVR1XxzpRyvRjKxiyO31O6pBi+WvUBsh4A2Or+2qUcxve2QW9ueqsRhwR+WBtTXJHWwuJ+pu4YJveJ4zjWb21Juka2pHOpJ+vMWuf0yQenNh/uW8YxkShkgepAWl08kSuqhfcGWgzOptO/K2vye9+KRqYHVWl5h5D+58hpJ26OegJ2vLmyDW6rh3KJ5B+ipWohhrWh+tOxtmz8+zLRAiOwFuk127yRrzm2N28YO2kp94B7JJgDUrqsgvCISWu4Opx+hABkv2mqW3AW9rxqTelwx9b2sN+/oxuvehJ2oCu0k2+h2ugRx2+1NUjV+yYxi9+2fu6cWggO31m1TehuBgo2vx+kk+93R94Rx2B+Juy7m8Ep6UO9SOz42tfOzN4Ue+if2yM+3pWuuh0uJy9WzOe6RxU2J7Fe3cUnER9PBgfBobug32qKhi4erxhghOmTus8xm8B4lR2H8jPRt3enj+j8+2cOtqAGnB79R70OwixudBlJhG/BisBhZxp2WkYxikOtcs5qJ+UWprWovm2g2sPhlHm6fukTjcwu6NW7C28wutNAGBmL6OtIOsmeqXuiW2q5YQkRt0ByPKE3WxH2zMprMkrigXBW7afJ0Ro32rsASz2lo+zgTeM2iBW0pJgaslgOuIBtCJuo+y128kW5qulBWuuO3Xwfie3bOk9xyk2+c++9RrihrduhBch1J0vWsdegV+uMu3F2ilUwdCIfHQHhwfmqDJoRB6ie/7e4WO1Su+2OtFu0yOgfuwkp2kJl5xqG03R+rMesQu4nujau6futqOwWuySWpeJ8jWnFW3tW3+OCpWvbm49OpzO2RTT4ewI2sce9qO6/equWpx+xAxwf+w9mnR27nO6gxnvmkeO/au/uW+sRwgqCmh19u0NJkjWzsBoaeeDO3lOhehK+OjVhqiBsUp38Rw/KG+hroJubRkLJpHR9x21Aqcz2zLxzAOpHR8rh3QWjqO/dm62h7sW1uBvpQT+BtLJ6Ipr0x4m2jE+7Oej8uryejTuEbW+MO9BOv3spdO9nesixwGxp3W1Sp6ohz0W/vxuS+wShjg2jUR11OsLWpH2hBBsRJs1O3Y063x06+9L2mf+i3Buh+30e3XW7sptCexohug+kQxnn2hCxkL20Lm3FR+Yxgax3jKTypl6x98+jLe1Gx9M2l8+vCO6lR2ZWvCuxuB/a+wc2n1Rj3mrfOveW1EBmE+1axw6ujC+95AVz+zkJ3OuigexUB9/xxKp5n8deOiZJ1axqIO6mOzi+/jW6xQNWkr+2nY++T+3PKLNW90Rnwx7DhqixiFxNKBl6umA+iV2lVxn0xCyu7plELO7CeojOl5CsRWl7muGZX8p3sWwR+gSB8UpphW4JJ/uW36++c+okWmKhmpe0UWpkOhORmY+teBuq0kZhoE2TqpD2fHprFWRkHRpseweJsNWQIu4aJ2OOsZhqnxm4kmnx6++/QO/TB1yJgbOmUhtUmcTeoGk9BWtQ2uak+3x/uu/OdHas1Rh/Mh5aelcprOWhrOmleva236u1Q+g20/LO2/2neJtIW0AJjtm9oO+qBjZW4S21ecCj2wz27Fxtmh242lmu/OJ4129YhrvWk+u/wOnEu1IxmGpzIpygpxuJ2V+hu2nEO0ru/Q2E9u1fW3SpxEWjEeiXx2+JjEhk/2zgO/qJ0lJnfWyEpj0uzaBu3msSu5x28O236+0Z21jBwPKZ8UidxompheJ94+tORleJjvO8AqT22r5h37m37WmAUbeJkz2/XRuC+juR8QcgE2o+Jt6WqEhs/W062zgx36p+f29z2qxO1mp3SWzlh9q+mHJypJilJ/XB+8h9+J7gR/GB7+J62Jv+J2pB664euuv7KaHOk4xSMppV+n1evTB8QBrEOuyW4NenQhi0e8NesWJyNe6HWuh+6xR/oiRh+hNemW2lh+yOpl7+uGpgE+j7+w3R5n8fNehr0gR+uLm53BnS2ohhwYRiteiR++lW8g3apBo5x+te9z+1Q0xR+xM+9JO1R+rG29R+4YW5sh3tenR+oA+nhOxw29MW8ZB1IxnABpjm2de53fLIMlPxzsB6x+tZxux+kSesOpueWpx+iB+gphtx+ogO76evIWs9Omeh8gRvx+pLugJ+gsOsDBvj+0J+ixu8IMiJ+4zR0XJ6g23XByjht02kEko3Wt2pvvu9a24MRlwx/AWis29cWrMkg9JgDW4rWg/kQvW03XR0JqNmuP2lo2da2gI+3JKZf+sNO1zU53xtgqIV+jAx+Aep90hKBmuhsQhnghlbRze2/ghrL2uKJr+J+1hz7WpeM0MO1t2pZ2vfctARzE26Bp4qfcV225h1BpmcOow+lqR7s06k2vG+7s0t8Orheu1JoKwCuO/CaiAe5POhg+qegWdek822xJ5upv0u3XO2GZKgWj424F+oCs86BsF+w4x9BR0hO0UxjwJthpp4pmGUype7IQetunRWo2JkhC48eokWzHKdMx9B2+j2/3KQC2kH2p0O5cPOe+wAUby+wc2wY+1VRidRleOl5hlfJmjx6kW5XGeeukVh4SxyhuhA+F5h03WxS2rF+hXe1Kerl+w7JoGkquuwfjWa+lQh0p+tgqF7HTvkhmxpb+n2pgh+yxp/2pwNewOpsh+1t2kOp9TmiNe71mqNeyOp2NexKWph+uOp0SWhOpqFspOp4rJvyR1Op8duq721/xoteoR+nOpjWJsR+ivmo7mwupmtemR+sGRjwJxteone7zu5R+6TBtR+gGWjR++up7R+5ok3R+7gxode1upj42z3BwA+7JJl5+ix+mdemkWiFRgepiOpoepldeq3KNdeho21x+l9B9x+qep3de7x++OJw9ehepvee09e33+w9+kE2t5xzKJhxe2Zuteh+NO0+conuibJ1YWn5x5Bp3cRpFYItO1Q+9nhv1mjZprBp10mRjBwlBozx3PesIiB122+UYhptROvDW1DhnG+7BJrPsgKO+SeuROvn839JgF+7vRH/WunWp+p3ok2aWgvxxV+wnKFXB7kJ/He/7kn3W86B/hp2Oun3moRp8S+9F+672k/urF+zmU5eWuNuj7umZpvoh/XB9kBkOBsR+zzR/8e7gfC4ekUMEbW3IehXRpVW3GMJ1WiCeiY+gxpx+pk+2gRey9W9FpwSOwgqW1+vaev1e3POiKB1v+1jU/11VzU6hfMV+pCB2xsAph5OwKderxBxGp7mKIQBiP26mpoTW4DZI9Bzqh0Zh4DZbB+rEWghWpwiETWpJxm2OZd+1+JtZRvB+5+fNgRrgJ+2slyJkTmghW5Xxo5pgsO4LexB22gWsJRq4J0hO/0+0vhsJR8BxruukKBCjm1ixwUO+/mxn+iT8pQBouO/fuy3xrH++2xuR2xqWsjk1AprLeqlhh2W71J9nehNJ/BO/wBhcujVu0KW9EBobuwpOxMZEX28EewJxxaenvOj/OofB0Lu6vW+H2lFe7hOn3xmjhiqJlQewP2hfB5+pp8pn4BtXspLu/nWsYWi/J3sOlYWouhzCB76BoBWwNJk5hsqhljJ6hxwbuxuJ/nh8p4vtWgFBiCO8BuyjBkf234u4sR5xhy3JsTOoBgVbx5kJtiW1D2zy2oOWo8WsfBsc2zHRgkh5R2r7OjM08mp+PJl6JonBx3WyDWsQWprmqdqC9e4dRh5exgRkKO1vxt1e0PxuEOqsWqkkkzxtL+7AWiipxOhsCRhiWsIW8dWlHU49p50O6fhsGO8rui+p61p1SWIdOgmW3S24Les/+6bmrH+j+pzvk+hfFwe8qp2TBvVutgRhP+j/h0Qe7Vpo1R1Zhn+R0MJgyWjHC77mo1Oik+umer2ga0BnmB/mUyjuk/uiJeyshi7O4DR7+AZWR44W8UB4KO22+1ae5kW6DRu8p5AJhUBofR7QJ8QOswBwvCSk2uu2ySWybm8XUy2hsBhk7xgx20aO5m+6DWnCWyoBvTm7A2qkkwD29W+gNJj0RirxiERSHBmfJwiW8UpzVuzDvSeu0f2roBrRunnOizJ0C2ngus+JwSp4o29d2qhRwY2dU29+KSI4dGBIb2+6OlPW5mWglh3DvP9ex2B1nemgp3N24A2hRppp+9iO15fO1uzPW0QhsP2h+e1sW3YBxGh/YBmlR+luqPMqkWtoMp1ej5Ou2eoRO96+m4Bl/u+1h4H+o6WxTeq4B2tkgZJo6WtHW6vx0LKT4Bj5O3D+i1W6QUsj+xzpoxuk4xNRWp0B6h2+VeiEB7AUSNp4gulTmmz+xnmyiegc2oZ+iC5S1OkdAcS2+KuvFO5rRlS2lsuz1W062krpqQ2i32kfu7LBhHu9euo8BDLWmGhtn8o6JlXuki3RSB/NB7uRwrLVzU9vCZlp4Ch1lp0Tm9lpnupyVpyoBnbe93x7uOtTB++W/LjeckoVppX2hQB6w2ivYS0ByVp7lB6VpslxsFusyJwLxo5p3V2kUp76fHchpgNBg+xyW2zWqXRq7h6SJv5u1eJ9t1I5h4x+jckt5xuzBsfxwQ0abKWQh6VWpO+/GJschvIWpDjT8epgJllofLp/vKQn+9tOzdAGFxoChouR6MOygp9Q0uv2ptuoeWnP+4hOtjJ7Vp1Teps24KO13u/dev/mgk+mXRj1piPkrL2mMVYhp7DwB4WltpklWipfBoJ/gR0wum5entm7NO5YBx9pkEW0622yWzbmjbug3Wwt0sOO0UJ7Qere8MYWioRuKfEvhrPh4m2i1+ke+6p+yPunnKfM2z82zbU/M22BWovB1heiB1f0J0qfPJu5Bhs800Vx9FByIO6+fdFBi0OkFpon+wdklaW19WoCJ9PZUiBuB2yaJ6q+r8syQ2y/exvC2nmuC20UenqW9U2g0cU0+8fuhLOjVe9iusy203p3X2lRB0Xm8b24uW59O1IxxE4Mm+4s+0v6RbRyCiqs+pCxrfqVoB3m27+OpTpio23q+91px7W7eO57hwRJ/j231pzMu0xJs/RxX+5JWx/WwGO3w2QjO7w+iNp2ZJt9e00x0gUJ+uqUxuJOxNptxR4uklNps1R+ghoTWkdWi1WwnWxCOyXpvNpy3+mQ2pLu3oB7aB9q+4j+mTBsIRytpzpBzIO9YWhx22G2smphtpzTpjCexsBoI+uVOkduuIRgFR46O0xSIP+8eOmShxgupS+v+Ob7uurJqcO31m1pxlq2bgesIh5Qxhgxgt4adpzpu2dprYpj/KBxpxF+vsgX2+9qUv2O8B2oO+4XukO+nfpn+rf7uyO+4TBn/kNEenRWhUgRbRrjBqIRs0WjTB89e0gULxBiNm3epp0Os0e7oerUcrcR3R27Uugpu6oWow+6YelBpny2jBptZeik+37TPZp6oWhbmz1+wAUHEJohpiXM+Gh9x3AuW8hpobJ5HRtje3Ox9BW1yQhu+hhpq42phphzwcoRlZ+zhpu2O7hphQh/AZv5p3hpm7uwFpy+px0hk82rSxsFp9bB8Rp6yWhLOqCepAZrW2xw0uRpwc2zoOxRps8hiAZgA+1Fpl9ZdRpsE+nNWxpRvU2iKW8fu4iR/RpjtuzJ2xsJ0P2+NemKWjAe8xp49B/b+pgNGxpqzRtFR1Z28iemie3TuQh++T2nyJ6QgTCe35eoHJtbWoYRuRB7tOj02uUO+nKKjMuupTeRkE1WWR66phWRvfu5WRhEpsielWRtF2mLWlFOjF2jKpkzpib+lWu42M9vO0ke9uW6tm+Fx+GUjoBzlB5We2+OsMpqQW2fOjoB9Mu5tu1GU3EBiLeh8u1lOlmWh3M7VOvK27kJn3h+VW9Su+jmkwZxfknOOh3e/OO5Y+1j2r5e02JsuOq52hqkquOwU2kbRuuO7Ip9pkxFR5uOwUxgypsc2yufPlxzNW3uOkHOyrJmJuuzBkEi8SBseOwU28bmo8OxPWsUOmxJgiJxg+4hhqBeleO4E28Ze4YZzeOyq+iL+vWBveO3WM9je3EW/OUsWJ/dBymp3b+y+OrIJzEp4IZoqRh+OtqO5+O1X+iQwRFx5DcD+Owsu86vQzWkuxv+Ony+y/m/KWsNxrlJ0OB0FWngurXxgsOnHh3RkCFhj/WhBOujU8q+lrmpZxtBOt2+ymBrBO1syHBOi4e59xghOnKO1g+u/e/Vp0BWs1BiVW+X28yOrz+/vx/vhq5hoShmA+0yR1hOpde9epS2ssawNdjYsxoGh/cB48O7Pmr7Blq+ibu9BJlN2m/W4CO+MB552le2oOx3o2S7+wM+5tO5Lh9oW+RfN/J3sW4CO0cW3TelfKGoOz8OsFOyXWzHKeUWwbuj+UpqW1Gp33xtEnTnO9Ek2axigdC9B27m8Zu73B2522u+7Exj8BqZp1kZ5KW+De/sB472mvJ6yO9oWv1+oPmrAs5bBpTB8M28722/KKie5bWrs0v0+me+0kOiM8x6W/kO6m2oBk42Ote29hBvGW6/kcapl6Ozi+lJsl223qxnA2oYp9+x38+0LKImRwwxuIe6Mus+h0eWuzW1YO4BRtljL2WmS25gWuee5vm0NJ9YOwdJ/kRiXmtqut/mwFWsHgZB8CSug424ZeyIOnx+ltpgcW1Oeks2ptm8+RrGuyy2/mOpiRspWRTpy0UFAp3B+04O8Je0+Bw4+kzOhOhvtm38e5hki+1ZusnBlM22o5RsJR7NO5PegDm0mxz6x+NR15prMe/JOyvR9HxtOW4g+oaSFnRy/u4NWtO23A3HvprEx4cesj2lwOoiJrSR7PWrKelloFXupQ28uhvPpzox31muBx1RJjbjdsWpQZ/NOp2Jk3+z2RtAOmSh1L+2Zpx1+p48ggJxbBnFW340mUO+hB0hxtEuw9J0z27k7Lfm8rJjL+0FWnATV/BzmOsox0D2h6x8JR7gWgcBpXJ0XR0yBmQ29lenNJoyhvE2mqmkeilAB+RhrnRnWenLeggu9NB88Bwv+nATP1Rygh95WsrW/GpwT+okRxwRlYRhIe8BehUxkKx48WqKpmvu7Nh9C2062uqx8GR+GRjYx/Yxua25fRvRvE4x8KxtvJi4xjfJq4xsqW+G2yaJ5qcLfRyPh/Q+h4xwFOk4xi0xpA2+xpm8+ar0rZRjj2ka29aes7equhwRu2P+t5+j0BvkxsshlsJlaenZRxUuw1Bt628ru49ATuRloOmMht2etO29zMpox37h/7u6Bxj3ugkZjiB0CJifJ5k25sO4kx8fm/3mxackIWlTh2RBtXuk0Zz9WvW2hRuh4W3U2wCJzdO17h5/xq2OkXm75xbcW0s2yfKWEewf2gDesDBgXu5XJgDmqvh+QhvjO0rRn3bPCOzrBmqWuzKGWWwxRnK21txp/24jWrSRrn2ziBgvJhwpw8hsrO3A3L7hjP23TpzGJlG28DO5NBxw0v8JwYx9LmrNRg5h6gO7HR7WuoO25ougA2+Fp3rRwgx3s2iopkl+i6UpGx2S26zm0qx6ictgB0mxvhepa27pc7g24F+8jc0K+sLhxNJt2uimx8aWtGxsC2l0ZnCeyGfHRCmsJzi2qOJmCuGOJryB+/xhOJ22+m7O+fhm4k4NR9OJ+CWk3O3+u5CWnOJz/xvOJlYOorWuvW6HW4uJ+0W0uJ7qOkKR1Dp7jmhbm+jCpOJ2uJhBcxfx0i2++Wp6B+j28sB3EiZo+pxBwmpqK2q9p7Bu3uJjK2rdJvuJtMO4eJv220eJkL24Fp3m2jxx5aZj+p6/kj1my6W664aVxpGp58+zFkgEB7QOsWB45JkkpsGekjMqUJng+1lJ1w2rJJo7+rckkknagUC7gAkWjEe1J+tgO8U+lZhgC+jK29A2qaujEhx8+0XOrvm9eRu+W7vm57ehKBu8pj4pkjRyL2ywhj1EZz5XaAX6Z+bkq2NNZqGOujckqJJGzlYgiVLgfQiQOdERfJ3CAQPFWZ+giAQPSdPJRM+opLiQN4wukeowSIBZB6aJRfbR86/JdB5PMtQkUiPJVOtZ+aKzLJ4e30aR/kHdJVCUhJJSEAf2aZYUm7UkMqSYiS2Z1NM7BfH0qY60O2ZzFkgvlKYAJ2Zzx0+opaNkd2Z2zM5WZt8qBEiDy6M1k42xz2aFsAAOZ8NkloVaSndx1JwsiIpLrJG64H2Z9XROpJMvoU2ZsQmVJJaNEJOZoXMvsgf4w2SJOXMvi2/86Ypx15fOpJTOfbOZlhCoGaGSAfOZ1M69FJR+idOZ7wWz2afAAOOZjqLAVJZcgEOZiAcrnJMwASOZyRAxmO+haeIAduZhdUmeaRQ6KQx1SO9haA2Z9hxgaOshaWXTYuZs0spcVfqQfOZ3aZ6uJISAQPqftyN+HaCuUwWla4FUiwhSuCau3Uh+mjM4ClsODdIVjIBrHsqRqFFe0jmNYgHNJIehhB05Clom5KR247KkNwgK+m4+QdCfP9iPOzDXkjljPeZsjLCwWsduAE2QBmoPUkvYONy8vYc2m9HGzIQUR2naHZ2gluAJxC91fe1m4WSxe1ZJ1Io0xRAOBmrwW69e5/W2JJzfB0NunC2nf+vChskZpZW8bxjkOqfO5qp8YW2EO2r+g+ht8O68u/MJ4/O0mU2g+gbOip2+G++FWxXx6N1WW+ttumIibYOh6Wmrhi3BlS2pJ+tMZhrxjERwvCe8J2M24dR+aOiqZ8XKMSx9ac3IW4t+we+6z+gcOo3O0FelNy5YW5x2tPm8tenNe0QZqTe/BWi9mqP25ge3u9JNh4Ve2S2/Dh1vmtsO8Hxz2BwNJhvKMHBtpJqSW9xk1TOmkWp5Oq7JnyW42OkB+/xh3mWnbOhZ21Ju3UensOo8Wu8uz0c1JupEJk8pmGRoOgQSJ53mklx3LRHKRx4W1RJuq+xwxgpWycu/TW1Xhp3u0/2gyRiqWtWqQQqEBuqmZkUO1iRvDWl5Oz6+kHOnrpy508u2062q+BxkB0GxjqK4/YL0SZUB0Xmka2rspg1O6Ah48OzWewCJ6IO6IxpWO8uu1iWscR7Q2kXmxJnfhxmwRvkO3eht0hisp8p+3r+5fOwfjV8e2o+vbWn8klrmuae352zsB8mZskOnU+wFWoHevzR/wuiFJlGWj8Bh6pkOxgw+g9h1N2yDu7Qx/TpvzR4wO04UmwR3lOmEh2qO3kos+uuk2jRxhMe1q20D+xSWncM5V+iLO4oW45W4JZiGuoZu242oL0utpro6oluuUewLu8qW1px8TWhtRrq2zoJmcet3J6wJ/tmhvKCXx9TewK3N22nrurXJ/a0j3e4Huydh1vhprusJ25oZkIJkxe7zOh9snoJhxO0OOkFsnLe1eh4Nez+J8zWqPKPe2rq28z29RB8ehjxRppu0mxo9O07RyCOvkRjgW0Tm7++lmes/nWs2iCZ9pckhC3QR02uolu3oBuDWuX8khCgJ+2dBxSZ7IBs0enY1KA2k/uibx4Aprzh6nm7Fe4lJkmMhLOv2Bn52p/hhkB2ZO1Vekceqce2J29dk2NWsZBpfRgdRxy2qtprA2uBWun8uGW00O19UiD+o5W7A26IiDg+xoWm5O19U4U2ite9ABrs05mWoiB+qWyuh/Ih6hR5EWuipmCOvMWscx+QBrQ+5gBn/+m42tjOsdh8uh48OpUB52O0p2yEJjQ2FpRloW5uW6cWjSRx0Z3nxwfmgZRq4+/3+7oJ6t84fW6VBoXew1eiJ+oau0d+pp+qXehHewx0ph+xFRppukHOrrOiSp75B/fh7kWp8ewbBz4eyCiwtJq5RpVW+YWkqZ9XWmgTWTOmoBmnBj8+xq28U2/dBhMBnnJ9228ZesGUxCJ2mphfkBheuJ+qRh+ARjI+6aungUWihoIO+PW7jBml2jWspLulQOnhU54epBe1LehkujJW3SOzNxorhtHOxvOlzO312yke9/KBIxvXJ8Xm8W+iK2nJZ0E2vZZrKeuCx6VOo/Wp/m5E+xq2taR0UWztJjlx1g2w924c8Q4GZ3xl7OniJ9HOqw26l2zbB3bu6TW9EUnihwn2j9O7r+6eBm7u+1B8CO0Bus/RlH+8upitR59+gi2rFZpXBxFOz0Ov/eqiEeYJz/u2jjZqJoVB5CB6fu/phq7h10Wnypq5u2p28PhvFWjKxh6ZtCR05WoQOntRsrpzM+pyeykejupoAOzJhr9mq024VOgkOipW1bur9Z2Fh1DZoQWh3gRUmfOdJUvZdmnJpmnu+e27gRtjBnapgo2+n27aZ0Ke8uxxCBnwJ81HYQUa64EB+/tWr3RwcZ/FezA+iDRtg+1GU0XWuCphJR04+xCB8qJixUlHO4TJ7qO7P+lfux+OqPMhZ2qqRmLp+H2582nAWpqhlLprxewBpmK+o5JoFWmK+vQAcgOvYJ0Lu9dAPYJlw+/Q+tQZ9NmoQOj8u6/hzOBzG2h41ONmwTJ9XR5E2pv2/QW/IJ1jB0Xm/p2hHh7/2kQR5ARpQRzNWNPWpT2toemNARN+mIxv22pZe84Jy3mmHU8TJnR2tEe65BpXksLOsyZyM+suW6d+tWW4RuhMZvwW6qWvCWpWO/nOtxes5ugsO/fOqThvT25xezJWi3JxcpqehiT2v26Ws+k0Zk0BnqJxPmtEnOtAfLphWxsMuvdpx5uvS+93Oj5Og+BzRW412y1h5wiS52mGhuGZZj+j3hrSO5WO7I+5BkuWO/wusSWttW5SWpSZxBWobO2qe0mJp5O5bZphZsc+h6JreuqYBxy+9uW0Gucv2z3BwIJzTOnwx5jR8veoyJvXehaJueW00Joau0xuhyRxi23mxgzERSO/Zps1x3IerlJzL2yhB4E2/2WhRp4CW4VJ/ku36+hOJvmWxw0+4e7eh3LZuxetRB81hxjB2yOtPBm02+WrTATT3Or4uiAW8IWv26Pse/mx3hxjJh5RfEknJwiR92zBh4Bh412vBRgZIU6WvMJ8K23Eu5aertpnIAHgpnnJrkWhh25BB5Hm3gx9Ee/hBk0u2I0oruhdp/7KLQ+q6Bowe0oiQAe4lh9zO2Qhixu63+rxxpOWzjWsgUNPWn2hM62hxWzCexERwOpxD+3Xp0Ge96Orqx/LB+lp6Tm16e4eJlNBweetxRvqW1aB7buvEusPOl0B11xwlB9nesCWhG+zKWmcOzLu/bhyPhwEW3bhp3mo7hjAhxsJ/mpi4Ji72tTmzRWvhes3KRCJhhumZpxK2+Lp6qBqGh0vm7WWtoxjBO+tugi2rd20vmzXW5Ap/9OvGkzoWrEW6iRv021/UCefdn24xOyHBmFW36W7Se07Rm+J/YB19Zm1RqspkFs7zup+2/vKYO2kDusQmVM27IQL2eoE2UxSHmJ3sO74+nE2q5e0JOvChypR1KO9S29XuihWj/2gqJ7vO1rO1qh7zOnux5DcKKxyOptlBuMWsq2p407Y1GQWhfkXVuvhuiW2/uQLfmtUBkFB3Y+3Vuoxuyq+9UZiMpieOqPm3oJ+oRt2ByWfeK+t0BskejL2yc2mXehVWqXB+QOxDeqTWsdxw4GbhJLo1YXezcx3WMtKplyR+DJ5gJyPWkf2r6e8O2oTWqkksnRq0WsnOkBOuSu6N2mleyVprcuvjhnNsTAB+42txRqvegV048O6UWobuy3hk0mPFZvCR6vZpFOkZJ8TpvTmn/kPAO0hRvFWkl+iOhv+u7vmsdhi9x2PumIOrvJ7BehOBlYWkQhvP+rqej9u8AOhgxq3B81+5UhrRu2KBpVW0Xpi2RzGRz822L2vn+6YW7ZO64p+t4H9ZyEe1JJgZWkJWzO2ibxzw9J/h0TOmdRqnezPKLwehMWsixjgqEMrAKupHWiL+1M+1XW0LWmc2t9upkp/uJv9hnzxhQuvS2rw+0ze29urHp4/2vH2gjxhY+isOzOWx0e39JuIRiOWznOlgzBmRJle1apk0mTiB9ZumGO25Zr22jbez7m3BWgdh79Rn9mzhBzOWzxgB2W5NW/3myA+2VRlMe2VOidZ9x22eu2I5mh+ogZ6Gp0tW71O4G29LUn3evcew1+nMO1pMw3ZvoBoCOgDJp2WiA+j9+kiRnVJrIQZYJ/W+rbewE26P+4e+yOW9b0zIp/11d7cLhOn6O8Y0yTe7XW/2O/bRy7m0kJ0IiezmnruoqRgJuyUhm/h1opxjU7IR3Xxizu1gh2ip0HmowRnuO8PZtWk/JJ+g2tBOyBu/zO1/xuOJ6FW3N2zcevLump+ilh4p0kLRyv27tRk8x9xWm1u0IO1Y5sDhn3bdBRnMBo9ekJW6ep6U2t+B54kpu2g3Zka2jvOgtOrdm3A+6O2+ghyo27/Rx64SZO35eiSZztBhs+wU293p1tBvAZyFJ6ZBmvJpTOqY2xrmznOqpO2sh9TmpARkDmhReuQW+TRqp21hZ6jB5j29hZnNW0LW1jRg7uz6x8/e7SuzWOia2lh+7metDwHmJ5OW7fkDixtBu4W2p8x6ru/3KAsWr4Bm2BnNOyFumY2mPWw+B2DeoFctABz82tO27XMLeWsyOtXs9h+gXOtkeoZxnE2uhp3wuiKWwp239J1dp/nh+WMiDWzJ+ia2+PB7gRhzOxHOq2O8YesfRyo2ud2qbc1Lmle+pfDF+erFen6W/6+oTuzGcx42o52smeoOepuengUTnut/BkYWmjJwNJnXkiAphLOn82t8WjpfRJezIJmHW/9uhuBsNuzFRpbZr05nC2uOpoXWvKun6ur0WmXe6e2kXm+9xhFx2ouj12gNOovOsBB3XKCC2tRe5URpue9C25QBlK2yhBsU+0Xm6mevf2umpkyO22x1SWOcBnLJlOhluunFWthZzARyFu8S2xJc+M2xHgYsZhhOwG+tHWjM24apvg+9HWyTmgO2gzKBTJi9ui/epd2mQWvyRndegtetpJ4MR9xu1cpuMutTp8O+rwBqs+8k5r9OuAmRUO5C27/RyPcz2+7UJsC2tdAU3B5C20Fe1Bx4GpskO+W27iplXulcphrpouem6hwA84Hu29u7I2mGhlde37TCsOsIhq42qb+39x7BJ8RZqHB2g+zWe0kOv+OFMOuOBwdejMOqcBtAB/mZnF8hzRu/Bn+RsDxjvJtOhlHZp/O+/Oo0e/3+/8If5WiI5vKW+EWwAWvzJ7sBxhu9ak7s2ggRrlJzIJzsKLle2fJx85zpR3C+/KhkgO6VOsE+qjBi4xg4xr9Zvne7Nu7W+7exqJOq3ZgD2/I5005uxWht+ynpqoBn9Zh9uoEB3ye4bO7bW6hunB+p7+0S2ih+pJx4Ne44WwfjfBu0i50g+xwi7Y1ZW21nxh3B1bmgkWoOgAsO2G23WM+QACL+2JBv2Rhm+7POnpe+7mtDwMt2yHhgyemsBzru3L25w+xE2wdJ78p1AqQwWX6Zx8h/sWsS5wnJvHJouJgUp3rmupu292+4B/qLWi0rL2jC2n1mire4nWoLp4Yp86B4sRtUOgCZ1G2mGU+05+QJ6/Wz1+jJev1+oHm7lOtKpyPu6o+tq+/o5z2+qOe+K+jox9WR0yeyPhu8OrC27Z28jZxNO6qZ6degpRo/hzzJpkWnFO4XKBeh7g2sU569Z6pRxEO4E+j3h70poy5pmhmW2nKZ8IW1lZilOkoRsl2kTm7bujCO8c5n2hZUR11e72R3mBiMeuC20oW4Tes3Z5quvAO/HBo2erNpktm+uWuWpu3u/bB6ye4phgMp6YBqdWyUe6ZZhxJ+cWtUh9Ce/D25v2onKLhJkzO9v+9Xugv0n2e9kZqmJpBeoL2k0Zvp+oiejI+q8x3Z28E2+cxtmpj7uwZcul21XOmRu9oJnWWzrm4W29EWp+p8/m8GW4QUd91N+elYetWOqpu7lZ8NB5228CM5y2jRO9yByo2nsClLWnl+wbuoBgDVO7l2kVBqeJrbRrMZ2+ponmwWB6X+vXxnzxtnmxf2mQ23+25Qx3teqNZlnp9Ss1le5x2tBuy62mkO4fOsU55GBq5YNTBxphqTZxAJk82pXZpq24WBkVpiDm7aB5DW0B2/HmnP2wMxIm2tcOxfutqOjVBzs5gQR6QO4pOsO+gWfWFOvi23c+o+AFt4cL+w3jC9Bq8p9hfMLB0w5jY26Dp0gOyMWnCRqZBwk+siBwUWmgWryWh1B6aW2X+5qcdXBzLu/NB7W5m4Zz2+wU2nypkQp0pRvx2w8UuOp7YO+djGtujOhwcW9ZOhaex1uveR/jWyt+/0gcSWo42uTWg/+nUwBo1CVx4/Bmw2c+R1guhaW5Vh4ap7vh+IigahlLOsHesZBmCBiq+7s+o4+46hk0u7k7PHh5DO8Ex42Rn923y5sEBvVuma55MemvDPNBxcekCBw2unhUmaJuKOzw+u+s98W3wW+ce1ruq5BxeeioRsYMkIOqf27UJ3DOqz+jIBsPux/+jD2hzpi48lvZ/053pJuq0rw5nMhiIJ4QWp+BgM5nRgF5hwpOoxZ1DWjOB8U+nE24MhoP+rThmJRy3+sn26xOyPOweRvPBqDmuxW2/myvMn/WjgJyO5mbWwIc86Os82z2RwvW9kh4Y2klkVXWoUBhNO0cpsMezbO1fOwSB35JpjWviPPNB2U2lwBl9ZpBx5/Op7u5kuoTBtJ2rrOoTJhRuu7m51xokx5tRtdO7PWvUe/6BrQBgyBtAqcThidm3NJyBhj7u6UWRc5ySezAO9xurYpto2/a0+du7eO0TOwSB6Q25hkl2gMdu7IWqTh8+Bulu5PWykRj1eun8/ZB0lpypxn3mnKZ2ghmVO4JBsP224ppixyPuv828MO6Se1zutaO3A3cruymBs2h2t+rqx8pZwoW7Nm8kJmXu8p+65ZmxeubmoM+nfkFMR1/UaymUdJsXuxeOxhB3NpvDm2XBs/Ji0xrGO5bmt9J1yhiLJgHW8F22QBt9JkI2K2xsK5/82lJRtRe6123vmi226HWoaR7XWxB2045zdR4a+/NB2f+u2O8le+1uvuujQ2UiOnS2ikW6lx2M22uOuqW/PBikW86e86e582mA+iTB4khnmB2+2o4OlIRqm5/s5xUR/Q5pX2zo2oBRiTuyUh0mW00W5geyqR/VQQLuythz/JmJtKNZvhWpjUkGe0Xeofhnvm4hh0j2p2W7Z2z9W2Sh16eotW8lRuN2vDmmN2wIxss+khJg208VOqDx/CB3ae5IW1cBgzxwY5/h2u6+izukhOu8x1J5xeR2629RR+NZ99W+k5tNhkYJ3Ru3VW3C+vlJ10hgq5rVJ0uO562wOh1ieno2oCs3vWoyRpe5gUW4Jut529je0vhyvh4TRk+gZBO1VZptOhEJ5VJ0xuo1Zxre2ZRgnevcB8vuqQOmc21g+jG2+6WvIeklRgi2tKB0LuvO+12TD25gKut8R5rjGbB0p5hA2uVOi3W08Wyhh69ZvLTSlO1SejFO0bZn7U9a2xq2t6pi5x6R2k9p1sW6q2tGW3kWpMOurWiU+1IunwO2LWoNB3Gek+gWNOs7RziesKWstmpFJ0JOnDok4hlUW20O0bus1gkqe/Thj0B8fekpR9Shluho3WwLmpyZ7POqEOq/u4p5lEhj3J9/uyheikxrVRt/h7g28GhkiZjsO1F+ymx5DWmEB9hZgQ2nqxkAOkVR2vOwGxoCsi7gN4OpMk4TpqX24N2kuB6KBrrm6m+z3Z2nm7Q2nKupyxoMWyz+2yO5YpnxZvILd1urAst6Oj12wLu9qu6IiAV+vdeuOetMOgDmzv+3cOg5R4lSL/Rv2R5fOxcuip+5AWsg5x15+a4Behz/JsWHekLGY+klW5SunB2k9puyWrGBhIOgt4b3x3DRl15i1hovB6P25PALOUCh2lmRn+W/PW8Kh5l56NB02Jiu2gRurChuhBsQJhF225Ww+ehBO6g5+H2yth1zRguWoXu6k2hWB44x4jOhGeoougVJgPm9rBvix/BBgJZ+dZjq+gRh+gqR0+2KOjzRnR21mOlouhZpl7ms7Kafujr+rAhkguwpM1wOyHZjGe9DO3oOo/OpAUdgeuUh/r24A5ylB9wpoG+3j+0M+lkqhR+0+cuF+7/2ty5j0AHCx3yeghZ6xOo1Z6zm+BWyk284JhhBxxR/AhucBlnu8yZmoWhSJotc0zm6YWg/21FJHl5/Lc02JlYOiLpk9psD2k6eoN+tnx9iW8dOgSBgfu4TmzPKOGp7I2hCOqQRw8xvyelbZwrO9k+1cR7EB7AWw92k/unVB2JOuN5lt4GIJuAOg3xr5Wxi26eeosJrF+syh8DW6GepNBvaxogR5Dm5IW5Bh9H2iW2ruu4Tm5FBmE2sGx6Ah0fmpRJxQRzGk9Cu4vu5kOuhk6oR2RB4MgDw+rnx/FJjop8yWzVO0SxpNB782vpOhw+t9J5hQT159YelfJvFxruxivKJvWwT2iKxqThiJh7lB9Qe6fRA+W9qU/SKPPu9x26tmr6p/Wunj22Ox+junMW9k22HR3PO9CuiChr4ujpWhVxgae+3+ke+3T54qJt8kzypjh+07Z8oprmZ2ouiUBlw+lFe+4hqQ2xTpiz5m15/6ZwPZ1ih+gWltZoy5lXWBzWwAUPjZsV27S5mcOlLOxBR/tW2xku0Wktm4qJ0TEK1EfrplQW0pJ5hfS4+mNBpV2kVOntuzPOt9m5eu4VukiWplJ3/jdVu25ZlshkLxwS+p85t1J5vW21Jj2J33u07cu8pyXhwT5sDu87+1UunfhjfO8wOnXuj9xqXuwLmv/Ws1sOQe3H+oix3yZ2DWz3R9l+rzJ5Ce9khsretg51WWw4+7HesDuhEezrO4iJojetXulkZ5G+zQu/ouyFulkeihBsApuyku8h9Muxipxuh9+85eWvHRlZu4o27x533Wy5JoZ5hNhlf86N5qNurJ+oAe3S2kje0qhphW0mek0mA8W67B0Gx1d+/cBiGO/mOo2e43Zlm+6nxiVemse5JBk82rD2gjplkRsaW5F+voQGTZjfOu6Ol8W2dpplh6Oey+5gVxgyOvo52aUsIhsrhyjBkuuiFxZdm5tuvGMswJ5Z5wXJxC+9lO1/hiR5qFJ4WZkHW4NR/vBgQOm7W/2gS4OyJx2GxwfjblxmNphI+7g279+m8+93By+jROe1EZgI0xJstdjTt5+fB6GZpBJ7tBhLR+ue6NBhdpy8B4e+hWklT++d20jp+Y5gWe/mxtO2w1xpTxoAeioR9XOmnjJG0lZ2s9R7Ixik+uRB46h7terOUX42y520Bu2seqCe5iB67Un0hv9RrxBimJ9VWkUWLTu2dei5xnJO0IeqoiCN+t+Wu2R/ZRjOB4Ae1ie3petp+i4huF+jSJwlWlE+sAe6q2hCenIx0e+3y+1S+v4WnDJ++WvbWwteqJRr/u1EW3y+8ru2OW7+2iEWtXuqgek0uph5+kJoLhjfO7AZ4Yeiihqluyhh5jR4923SJlq217h08WokRtcct623IWkPRqTW9wJ0vOzP2pd5qDx+6WjI57jB/EBrZ0i6Ou1+0UW5uOhuh9pZ1RJkg3EIxrq21p5+g2qS5y+jD25tJgo4Wv0OwOBhwpnxx/Y+4TW2hfYtBvkp8mM4E2xKutsxydOl32wn2gA241h0/823zBkum6JgBOpkOoYB3oQfbZub5vpO4t50oiMcuvZRwJhwxx7++/Nh0ne4wqYmhlzOmp2l8Z2IOkSJ3XwUk2teWs4+yuu3cWxsWycugsOiFW6M+7sWxaxlNm8dhtcWyNR/cB3P+yMexKuxke8Ax8yOnf+5kZ15R67Jn02sxsyz2+Dhgh5p/5tR233+8U2uLZrN2kWJrqhvHxNW2o4uxgp+7O8ch7Vh242i5hh10h322g+wXu5sBt4RlshqngFcey0UFQUaxW8bJnzx3aR3QqSz24GWrOW1p21+xpfDSGp0nOozmnyp1b5/SpkUpq92/8utFRmmJ7bO+WRtaRtLumqgDixlw+mf58n234+7FOxK20hBrHmqixj4nU0B5pB1jm4P+rp5xw0ydJJnJj9x0qu62Otvu2zRhwp8sh0TpwA8vkZ0xJ+0WrXOp2Wyb+vGhp++wQR1ZZo+B92c69Jjtu8geqy+kF2pFYPYJuAZo3W4de5OO7cZn52wz5q7Bs7W0BRgHRw2u58M12koQuiCZzOe/sOkMWwfm95JlsuxDjRmW412rOUQmJwvO1kO+TpxYWwkByyO3Oh1D2iNZ8u22X+g20xIF0fRyy53nW0GuYR+lRW9OOjIRmhxz5xlJWupu9XOvaxiAZjk2jtujq50IJy1JouoI9B9Fu595pMeg+O42W8yO3wR9djYS2jjgIthsv+wCewquuYOsmOsMgZpB96ewIJoDxjyR97Zzqx/shzWW+WRlqWwopsvm2qh4eJv9W+lR++ezXB3AW+hhlqu2YO4XKOOpruu2EJi8WCDxhuBlchtRevf+wQJ6Pp1k+gFxp3Z23Rs8B7NuzLxzkgAwhkR5tM0uES/vUmwRti2mChy55tpJkiR6g5vYpuIOtABt6W44ktD2rtOpp+xY+zPKHEZt0B7Bs/7u0kBirpgdmswJnXu9XOnyZoKUocBs6RpD5iXJ/TW1Q00xJ20B29297cY4Jhx6A5h95BwIuoau4gR0yWmtJ6wOjcu7VUkMWzyepIBjQqNohq35glpkE1QxxqkOoQFljm9KJpFJ+QB5Zx3YO3WphABlRqWy50Rp0Y+7EO+Fp3WB6GZ0c2t3ej1hhgUTpu8jZv3W37um224SByNm+85jPxxCBpzp3w2PNBoxZy7p2+J1W531+m6+nzmqp+guWjZJmdW0Mu882gEhrHe5Xm4bp+Fe9gh1t2x9m/0+mvZiaW00F3dh5R+1zumCkc4Bq6Ogex/MJ9HhzfxkHhkchzH4W7hi52gMBkTmmfWgeR2Be2VR9es5ee6LemDO5Z50GWgg594k9uU6SpqGJmlO5vh1ecXoFt6OiFhnKOyPUpPOoF+9H2oJJvihogZ6Y0pv2q42rXm1QFsIiTvZ2je4dRhU2+BO8M25vW51RiLOqnO9eWvZuq0h6a+oW+mK2n1hvkxue2uYe7qetWqRUp82UqmZ8RJq2e/N4G3OmnexRxr+B3LmyTKcjWiV2iipqnOwEWxie+gqC6xtsOihB/gWqVW4fu7PmykejQTWa5/Z2wfmpue7/W10xpNBz7Zqek1N298pwzO5c5uQFiip0bhgqWlmusIJu+s2xu6xWvsxp42uq24+Jpmhnpu91+9x5tuOsPR4sp7oe0xSM7mw+B+r2vpR00W6rmyle1LZmSe0Qkr725+RyrulVuxHOkHOxKuvyO7MOs0OkF5gvmyNRrigWqctGp7YOgx+sWJyt+0EW90c1bO7G2qLmtIe9xk4YO6hBMNhyZOo5OjjZ3bmkIJ/Y27ZBocpgIev4F412ibZrH0kohzAOqgeyzuvuu/tekrxjwO9hBq2OuNWg2J42+2eBlQB3uxyk2t+hsyhtkR1SW/MZptmj2RhFW/NWptmx9+7bW5yWmke/kB4Ae3QOnF2oRp2VJ3Le7TBxD2lom5iOuwB64EBgFmwRs7xrjev8+xlB93W/B8Rc+8wqPv5mT8u02q+55GxpkM/GW3huoFJhO576e45prdm7XMUyeyvOkmM8Y2vDejJZgPoj7+g8xy3+kmWpJ5mfBm8558U5Bu1UOtuOjcB68FnU5jAOxTRgIe5OWl7mz7W2/+ovu2Z+zDB+3BrFZ2nc92c9jW1dB+dAHLZ1qeokF+qh33WwBWrDO5gZ/OxgGh0rpv8hgzmj5O7UFi3ukHW1sOx6eiEehGssI5stWgkO0ZeQPehDWhserDms82nF+1W5nrR2vOj60nNWyGplOhtMF232/MB++WtpBmYQRIxuxWvOWuaBgBipgW3vWptO0+ppXB0GuI2WnXhmJ++Ru6KOwWxgKwcBxiZZqch4TJ2jZhNOioFt8OlsRolW/s2kY+pzuvD5lTxxtR6NW4z5nBB6fx4HRsBW3AZwB2y625D5lhW9Fcud+7x+gc+p82p12gjh1FW3Ox5/29LW1gx0Qujq27jxwiprAO4YB9SevtmpE2+Cu8+xjIWgMe1jWkSJw8hho53I21Me1WO/w+4o2v9upyRn5qKAp9LWlPRysp4BO8SuxnRkCpmMVFt4Q+p+gqdn+tsOvCO5bxhnxs/581p2wx+cWs+hlXhvbmjqLC4WhV2j1ps4+t7cHLRmY56guwFpgbKD+us+hsmJ16+67Zyo2+e8fj26ZRhPh0pW7feifOnVRyxpsrm/BOsU5nNsWq+8NWshexBWxFuv/e3sO5gBtAxIiJ4E+pX23nZ482xvZxDZ7/2wVh/N4cd59M50zZ2gR+ne5gZ0tZqgRktOzYOhTRy/2yX+szmjg2vHuu2u1IFsTmqKWuCZlnmgje5fOp2ugjxv2h3cOgLh05Jo2+nNem4xsPYGXelNm/2gPzZ7Exzauv3s+2BtiFzXZmiOqQFpDBj3mls5mYBqa+rSBtecB+Oyy5yFRmAUbNO2E2x1WryRyQW0Z2+1JuL2hQ+rrh11+rx26Y+nR2zBfeI091uggBpxxjNeh6JirepAFuC20nZuAFo1O9LWoQOhvJ9m2yPR8KpzNhxD+lcF9gOvU+o1ZzC+2Hxrqx81HfBB+YRtqFmOFr3WsV22aWgBO2ihh75wWB+8Zu7p3EBhhekkx4Hhjx+6pZN8B3hBzdu4pB1upvU+mp+unhecWmz2jzhoD56Muxm2pQ+qsM4CWqhBtiptMZybh/42iEW+42nO557O19+4cR9MF89B3c6omWzfW5XWiwx+VZqbcwt2v/J8SujexkaOkZJi7x8BrWxW5H2gyu+uWmMxncRsm26muguh9qZj8R3s2hyZxzJm+hhV5zKpvphvKxjcBtpOjQu5hxo1OwmZ/uu/iFzgO0oJ05Wn9mioJmxZq0uyDW+1xqThoEOyXpxo+im5+I+qyJ7HmtBuz7+xjUoPuxzpmc2ypZ7ZJn3W4Lu23zSMWhDRveR3aFosc/SOgI+s7m1wZ51xvOehIOpYxjZWwp5qh2ochg5hiaWkgW93R1fux1OwmJnDR3YeuBFuchxdh7UoX9Bz35mVwI0Wj0W2g+03R5rhqQhvZZwo+jp25Q5+bmndJhKh4qJmymEp2/tRlvZ9H2oW5+ckqIR5Mge0p7QJgVxmG5sZ2qLuvLm1pJiaO8IF5/+v4Rql24sp/7xqegeuWr2xnyZkbOgVO8yeuHh7je5fB3oOxgu0CO0uFxUmIsseeLMyDPEM0Nyn+Z1VywHG5FjABZ/CfTRvSt3QLPEU7Hvkf52nJpNo4hliYo07hNb/cF6SsXwVQGQgWfI0umrawAdBZ9XurHjV2+252lV5oUO0M2kq5i7jLPO7bWwix1Qp+phrqx5qfYMhvXm2xFiGJ0+cuYFuR21sxq+5pHR+Dm72W0GBjP2hTmhoFgQ25e2hk5maRoy+h1BmyZ3JW685kKJ33JjD5zZ5h120xunoxyIp2FetRZg6WxIW3RZ3jOxk+zvmg8W93Wg8W0Feu75yBOtcW5DW/EZxWB3xZ6fm6LhxFh02upfRnf+4K29KOusZ6VwKIh77u1tBxGelRW0tJ97ACxUqxZmwAfuW7IQLNR1FOnVpzQxrcZyMBx5eiyZ4W2rVxkxRifph+e7NOyEh6zm3PKSjpnVpyI58tJ6g5mwAO8h3cF9BWhCWjp++Bpgiu2Feu75nBWtphm026Y0o3m6HhkZZ24+4xO22ujqO2du+b5jqWgPm7RBmqu8xRkkupqOoqOxah3+OQiOhW58EuiTW1QpqC+o9uhSUPTumdWoy+6ae8NRwXOxThlvW08WnwphdWpUvFqWxdB/B8Yfu69JrExiXxjGeoqh39Bvd28rZ8U5nyWkxexy+5dJ3NutahvTen0Fzz2qOe/0hk3pokFmMW6dm+JRyBW+dBiQpoepjQ2Sc2qCOg4O75WksLE4+rq25Qx625xjm6NZn65u0ul/5n/WguBzlpyih9SZnYOiEWt3eziB0IBi6RgMZy0xrs0znmnsW7gNb7u5vRydWnSZ5sOuehzqB3rp3UesUOyXW848Szh86O/32gphidCZtJ8vhsJ2gMWsCu2COw8BpQ+98RnDWwFZztBrxuweB4HRxdumqs1023J2/Zxny5sxhl7xlecRYW4DOwHJ5P2n5B6zJ7MevVuu05y8W6Re+GFwie/hATMWwixmNAFABi3x3Rel7BqPW5R2wAe+YBmJR472vIBntOqa+jq+0YxmUO/WJgv+xXpyvRhFpp72vLBxoF1lpg12zw+pDR8LZmPmyPWvu2wv+03kgMJiDm9A2rIetr+qBe4823Fxzfh3oB4cBnNmmzej6B56RzhB0OFwCx5lhsPR6sRsEFqF2mGhkEFm9m2/20BF2d2vlhpZW65hgI+nRBp5OsNZxsJ3k+3k2nYepTB7oW6ye4VJ2u5yceoP+3Np2jOyBWrGZzjuzZFo42vYp2tp5t4EAOjiFlQUNXus0WwZZ7PO/sgSlutFeiTWssxto5nQxzNujTuM3OnlpzcOi0OgIFnUJ+Xh9U55xhuOe+4+u++0bZiSRttWxFRo2W3Y2+BxhfkCopsDmynZss+mcFobuogOznh5xJqJu+gAAPu8XRjMpvGRna2sCJgqhhAOo42lOJtuO7Nus55s4Wlbu4452vWwme+/m1rmyjx1AF0Z2nqOtS29tOhhxuFW7WRkDekeiiCewYJ4W2zxx7G2kWp4aeOJWvyhhMBlNmo6xkqBt/Omn+lieqB+3kxqp+trx3n5/m+tCejzWoxR3wMjIW4W2zB5sI2vE25mFxI26dezt5vOJ59J9q+zEZn7O4I2EMrZ3x1s+jtm+FJfkeoIF0r+9/27aumJ2i4Bsg2q7mlLOg7u675gH+iX2l2Wr723WWmvZ6yRw1Ftc25BpgRFk5xxNe5hQTuxv/ek4erux8t2iNW3rF/GJv/elSpjL24wh1yhvGMmE+vZR5gB5GxoCsxDZkCRgOBmn2mj2s5WhVOhuhu5xrz5ldO6fRCi8UeZ1JtG/5uOerdp9uWr3u0BOY9pxyOhChqyZpyxknh5qp9o5tKU3Y+xB2oYJ9D5/wuvkW4+e/Dsmp2i4BljB9ux/kxlT5mkuxB2zeRzKxpEBtcBt9JpbpzsKWm29BWlWFiG5x9xnS+ylJs8h57KEkOgTZ42xkapgBs8Eh1gu/tWiZZxIR47ZyEF0DOnwx2PulfKRN+nfOrXJ/BJ2E2hwx4hht8hlhMjxxoDBnGZ6vupCx0122E+hvU/Lp4YFsMuo7OwlB4IFiYWxa+gak+rBqHei8p+De9RZmCe6Re2Ku/0phz+t95nHF0AW66u3wF3qOwRpq7JzFB3v2vLB2mF2w+kVBhMk/GBuuO+1Bsd23k+4u23pRyApwDhgvkoFu+/us3J+rhsrZ2YOt4Z/M8o5JgIJhrpq/OvmhwPW6oWnD2mA+vp+wl5i9Jobu2P24u58YxvKh9151tpgSZ4aJg2fOM58k2/BW9Zu3bOgoFk0Oi/O16+iKRg+BueWyHBoUx7obRk25/UqBJ/CaoGWxjB1AxuuO/aW1/W8g+jZp3oQGaJ0wukCWt+xybKIoJrzpixup8Z1SW6bmnhU8Te6J27sWuWRg/RixuxhstTmx2F3kFtSZ9NW1EFymZyqwCxZgE2/fmraewseyV+hg29nR8r5+Rh65YSixy0UcHB7c2+sO+0ujehn/ulse2q25L5iSZpnF5ix5Gh2Upgmhm7u+/uz3BqDx83Z23zQeesXuqiuyupxKRx1OtThojZwZhzzRqHWjTm/6uxp+5qJkVOq/usIiMSZ2rBzchyK2pQuzZFnDRrUJ0LR5/pj82otBtKuy6+i9m7SFqah+nmkRRlfx9Z2/PZqvB/UO92M78WxOeh8+5/Zj655bFyZRsHjWs2gtOssQIpJ2ih2X+ioWnPKVRh/o28+RpJui5emS21Chp/hkEZs7e0qR1ehiSx3N2iXW+d+schsmWtAR64x9BFzaW3nmnUWqe+zoJuy2+FOlopt5pzQ2RC+iVOmfOxmRwBuqZWtrJ4aei9O8FB9fmjyF0oujjxojZ5Qh/KWjfm8m+nsUv2W5qJmEhnNekth0AW0ahubxbXMZdmo4hniFtJW/re8XmhC212+q420yerHerKF54Wg8OgiFoQO6Uhy7Zr9hwjWnVJ/xOxP5tM8zux0cB/Fu+Y21nO7B5yHutqpmKZ1AJ4O2kUxsfJ4aB7OfPFukbWlbQU7KVAqXjh3f2qDJx5J3exwspnzusK+yoZprmlKx5oZj3O9TujDRmiepUvERpjxF15fHpF/oR0pu1eRzMp2Jp7+p26p/4xvJZgB2uoWgah6b26xWlTupe5/Zet2FmneqkOnPKbph932jcWmcO4L+xEZ3ihp+BtQR3Ql0neqgUXbWw4+8dFnjBobuxIF2o5tMFyt2nkWrDx6EFoIFkeWi15rTuhdx3VWwpJ2rcvFJjo5jx2rEWlixhCejQ2bVB+IW5u2/E5gJR5uMtbmrR2sHehcOzpensxwnu5cRoaeiafDyF+SetUercR/55mIWhgBt02/p++aB+s2kBp+/unkOhmW95ADNhskW/RhhC2qCZ8X2nv5kzxwhRi529aWwp2/lxiVOgH23TezP5vyewtpraeuER7teupp6XMh6O6eBu4Ro3WkShx7++xumPKQoeiVOivKQn+w5ZsM+nJZxgR90RuzWu6ifyxsNOlo5r2plsWo72pzuxXuk/O6eBiopqg2y4+tHJsdphG2wYug08pUFiEWu0e3q28xRkkO7Z2zMhqwejeuzN4e521bW7Ae7Pm2s+5thhrelGWkgp/mOni5wSJknZqw292B9mu0opqe5m78uHW1YlmdmzZ+zxeulBoRx1u26XF3x5wG+pqOq1FkcF6oJz/xncRxV+kSOln00vWxI21P2o7F6Du0zm9+KBBWu1uoXgFKe1iezgACElhfWrRfW+UVo5uKOtCJ2Jp8+uwWWpEFsfW2tut+p0mUh+eptOkWe+MO2BB6q53O5soMtsZlAZ8lxjAJ79J/7WsPR5MgekLSFRrs50P2uvhwsRwmp7gNbnOlsWkPRxjpiThgRW6den3bfDmxV+q82st8r7Z0mUiih8jxyHBnZ2nfu+8CmsO/Ds64esYl60B6jOmxWhBclHJo5W3QqTO5nGR+PJkQJwqRqQ5oI2jbWlMRgQRkf2tiF0MWgQBuafAKOymxgsOjfR15fcKpqrpv72+WFk5ByOp9jB04xlmB5gBpA5lzRtd54sB03KDRh+8u+wF2pR4oltgBr4WvYF4IJ3Yx0O56LBpjxvz2vVB1M2rdJ1UlsuB/6x/c+7TF+tx812tnO8O2m6hwv5xwZptFjQexw0lQ5u/FqjxqturMklXupNAD60y/prDuoEB5bFgE2s0B/Jeis+8E25cPUy7eHFszO21OtIlsGxm6F+EBomeRiOqxpgiAMM+sBJmlW5MZvae48l63h2W+nHugcWr4WmTFowB4QR0vFmH5kHgUfBhge6NW5/JiZu0xSbt5/sx8+2r55kUhzL5n5qLrxveO5UWq0WxlOpiprSR4FRiZFlPx0FW1ROv9hgYpqJ5z3OyU5zAl365rrW7RWql2uIRlIOyDWl08lhF7XMMEltABxYW8P+tchhMe7UxpV2tKRg2fbtxjY88bWsWemdmpqW9vko+W1YAIth+WF6SgLWR0GWw/F7fFv8ljL2pix1spi6UsRWjUJ6J2k+Whc5mmenLewxx2DRml5nl+yRhxgRrNJyMWs7RyMWijm8ShmE59yi7WHONFoXx+nWxa20VCtixm7x/i58BrcZ2zaBty+gI+wherwh1cRoQR1eusFu8fF1sOiV5u6+iLRknxyb+1IenyJpuOkMe8EetlW75xNsZ67Wzlp6oxlH+jThiEWuBhqah7+OhgUMy24A59Lxr7JoARuZ+vT5xAhvPWza210mNnm3vWhB+ojFyTJunRvmh7gh8xk2hO+Bpvn8sRJuxuzw+7HRmNu7MloWU/zuwBWgG5p9Wpt++KumuexWB9jJqceiyJqW2vtB/yewFWgc24iOngUJ1x6OOo4x44BhSp5DU4hpoKpjBxjL2tFexWujyFqX27r2gcp/Eu3oJ8ZRv/FxDZ5/m7KxpK57alqiRuexn6ump24Clw552H+0c2kDhoAh3Oe5Bx7qOjd2vi5sWU0PJ4j+yfptYe5aOig+rYFq8Z+AO65uspWQRxmkp6fhnhUo7u+aBnlFjyhnf2rP++LO2Q+uJ2xq2scu+PRzmOl8e0d2hkh9VBy8xxa+uceoYBrv+q5x8apzuOvsOrQUKyO9zO4GWhQu/7kqDhpjB8fOx++sHOxkllIBxDF7NO6P56B+qbc7ipnCky/prqlrFeluuh+2vMO+dZqpO3uW7q2je2qpOy5O5h5u9WpMlz85yYOgQRwzOvLJ38Bg3x6sxlcWire6gAMdul3Z07c7jm1Y59pZs5Z2Heo66rbW93ukHmo52wmJwvWgdhqFelQZwpJ0UF/9WiKlpQksR20gpuGp3q2+/2xt29X+vS+wOdf2gePO2G2qpOs+utv5zexm/WkKW9fWj0prrxpoB5ROl+kySl4SFoufGtBj5eycBgEF5J+mVuszmrxF7upteOnF81+ez/ppVF0PjRy2312+1xmahk0O08+mHBqshriZo35nGx2o+tC21Tmze5w1MljZ4J+hOhgMWss02FOqS2miephu4hOnre2wF+JOpRhrdO+825B56n+6MWj32wz2rBRs9RkTuwvBm6Fgv5iqlhheiNFm/5l2JwhF4+OuQxh4hn0WyceucRzXWw6R3LejNO0R+xPkzk5nEW3Pu2FJmvOuyW6yO1P2tn8tDOntx5lF8Y+5/mhfp13dOC+pjRl7myjWh42iVepSx2VWyhhhpxoFejIWoNR5+h8KWnjepue2ex7lpj3etw+nOh1HnRc53vW7RByi56xRvju1123Mk7NureWuehooO4AFwaSFPJycR5Mhv7e/CRzqhum2sHunIW4q26SJojBoqRuROtOhmR23qugeumulrLLMdujq5sP5rAO6N7SQ56mF8nutdOnYp8fmieRjuh7EBhX242O0f+k7u6GJ5sO9uu7jxsIevgloH2xzp5cO9nW2IFigekhWtqungRguO0ROmb+nw2b5xl7W0E2pF2jOfY1+8lx/PO6qu1V2/qenMp2wO9lWpEJuDZ3kp+h53sWuSerkp0RlrjesRW+Huh0xmCuXVWyXW0xWnde57e0gOyDO9QemIO7p+tBu5juoVO4lSdRlmMFheR5I+rPBz2RjMl72RloBiX2x8Wz+ewiWvnRqxl+/gGBmTq2osc+LBx1uzbm0NJ0ulzUWpHh46W3lh/bh0hu6v53upx+e0bWuvhuGZRoO7uW+ge/LcgJ+8hWrY2jh+jDuplF1H27lprAe/LcmPWkvZxhZlhpuYerPBmPWzzFyTJ7t23MpuEOu7FpKej/p/HB4R+lTxkR5t4pqyuo0hhcR9OO4m5stmgcO0JJrPhoMW14Fq6O/YWgZW8AOyEZ9/2y3+pdO0Xe6NWs8R4LW9/p34BnMFu7e3s5gcOnjewpJ8hlsCO0uht/emOW0Pxwp2ls2lVJtvMjfOtQBqaenJRqxl+fRyfW7g23gporM4aW87++n5oa6WKpv0ug8AH6h13Zv0uo52hwl352+lR7juqz29iuvFenUW/Buk0Z8FW1Te9hhqdZyy2/YemhJyKOis2qiloo5+BuwRhwZ2pjmxA58hWoJJzrx7SWjXuh+e9BxiYWnu2uZWol5y4B2bm+uh9B2s0FmJ2unevmgdp2osBoiBrABoVZo2k2FOr0SFYO1nO15enNurMOkjun9e4Z5kTpieB4EFu12nWRkWF2k2x9u/rRxaBmBJtZO/JWvUB6kgFD2gGJine0x2h3+orLbvZ9ac5mxwapwvB/F58vx3NJ062pmJjTpkDmme5/Sp0Q2onmuklrbm262tQOl2JqlhuMOh52npuhveigJ2ZF90Rwa2j4FgbO4/+tk22COo1e+lWwMWtxhxCF7o27QBma2x6W39+7GhjgRousgEB6kJ/NR+KegQZ7Fe1dBkXmirhpt2sT+4vFjCe1qRoHmmeu5C25HR37F3ER4z+0p21q+s4ci3+mK+/nW6n51C+g2uq62gE+0M22zB8Q0g22k6usl571mw9J+S20Kuyy2j3m23+9jW3+Oq7B22xkvR/7++mOnDOmVRx9uijRnMRvvWjvRieRnNM0SWj8x8wpsMZJ6J1ie5Du0DW/Oxh2W0jWudZ81proe8LjMq9JCW9Th1rWqnx64EGFxjcB0vOlCpvJZj1ES9WslZ6tl+N60S2rv++tltUhzyh8cWs8Byxh2f520B4spvAZnzZ7tljOFl6+3Y+75x/OdKN5+WW0fRwPxoDOoIW1HO85un/2m2OhaR3cWoluy+llPBu5xgjp1Zpnt+/DBuge+15+6R1DdTjB2P2vJu3tRztuoFlpZFhj+5bR5rx8/hkE1DF2u4B1VW3NuoevIphmGOqm5vGRkS56ru59R5JJ8f+162jIFvBM86O4fumc2raW0p2xAUQxx8eOtwl2se2cZynR9181g+pcWlr5hdB6uB4ARxsp9JOvV5kTm9vRnwxiTunW+sfB1/+oWR8UWxb+wmh6b5v8p0qF3a2qEJoglvdp9h2nSOluhsDml1F6KW9JlmZevIWmPWvhF93Zi9WrF2vNmwVOsVBnj2qj5pYx7KfMEOmW2kb2jaWqbm1Ch+8uzXWvYF5lBg4OuX2pWp4gxl++upRyPKI7hxy2oOek1Ruaxp4UsVh9654K2oZu5ux07ksjpkIB3bOjnm/n5sD23PBjnmwjWzouiQwXyO2iZpC5joek6uz3+57h+zl7KfAMlnXHeWUn/hg6Z5M2gf2zch6ZWrwh5LpgrFgfRs5BlHp+VRdb2sL4A7Orm2nK56U+7nmyI4SZ5WKJgAJxiptPxhcO/q+6iR5HmibZ7UpPjZ7e8P6OuJ2yBe2PmormyZBg8AUiYxTZzUBzgTC/ejtm8mlg6Zl4pn2hKKhwhFokBtjZxxFiDM5ufOCpgRWuwhmgTU+OoFJvzR1gelIO795k+OtyFjcW7v2rMuzcpyuhmvOuN+3kejtuw75gzmpN24dmjfOrRfFcCyaGl1FqfmwVFgK2sDZwZ8IDel8equW3ThnluxlB6QRtpB7AUOxJ1WhwJhs7lskZsGJ0VFoVl7AFheBvzJXhwh1e9jWsO+nWB3Leh1+jJe5yZpdu+f517mwZ5+g2kuu/MFnprQSBqZh7LWlecaUps/Brf2o1BmMh3GugPWieFmnQFcxtcWpsB7GJ3cW5Flscurzm7Jh0iluNO9oetwZ8wqGeu9aZuz5vDmsLh+9ejoBlxRs5u9celf2plhi9ZqShwoRsjB0Mu+sJ8Ju+iB2/uwWW1Kl6glknlomp5tphglzJ+pgl7tZ7Cpixu9N221Rqm+jL2rgln8upfR9sl/gliNl6qFn8uw7+4P2+gTPMF42xnResVO3MWzoJlMRgY58PBs6RwGeoURjSRkbRrxuwheg2RiHWx35kTeiLWtRFr82+bRvohnMWxQB0Nmq3F0v56UByIByH+ieetfANj2zvhs9By4O8RplWJyoW2Key/+gZF8rhl1BuqWhg+zL5lJsptuuMOgF5gO+0s2+LhtlOmRh7r+5Ux8xehEJhQ+rJRyiu0FBkhBzRWqXh8PZkFuncOsnRkLO8Lh1Teg0cJN5oXO4bOxhOwZsvFOipBwm+gn5s1BjSBu6Z3ih3QO5XlqHB55x5C+3Mk6blqpuxfOueBv621DmpXumGO4je4628xRnZev/Bob20VZ1zh9j5hyZhaW9J+4chrIJkqZqN2sZuzSh/PujDxh5OymhlS27J5r/FpiBxaBlMZ6JOvfcqSBq9p4V+hw0hgUV2l+k2gYO29WmGhwLmvjRjOFquWkZO3zhhGJ3+u4RxjWs3U2jF23xelDpuIBiDe3756ZO8GeswhvxWo+R9He8xeyc2mfOzNO3PKLxFo9m0FZiEW5Bu05OqSuxzm1lJ8jWg5ey+Oje2zsKWIBtaR2/2r1B0CxmIWnX274Zr4WxM5g+OxmhryFzsKZSWx3l6LermxwienfeoSp7vW3Ieod22KB/9p18O06W/vhngFpnJyue+h+yRpvuOqYO5rOijexBOxFR/X+xx5hg5ucetfAGX24Dpw4luo29u5jlO7npqrugQZ38x4NuphZv0U/gR+0W1g+nSRuBp5s52oFi2RmXRqGJoRlghOq6+60J8G2+Z3E3B1POnm0g+ethFqbJ3XuuG2mbe24p77W0ulmIW5tO292pfDaFhv3+pNWv65kTe6sRgt4N+lk8JxT5r5e9el35FhrpmwuxK85d+9LWj2lzbO5o5/v5rZR7Cl3jptKluHphS568B8WO4EBvpcqG2xKFjhppBe8AOxdx3j+4bBtyiu82x5un3m5th71OvSptpWpqOxqpgyhhsFowO1FO3c+0BRn9R8WBtHBv0W4I2RmW7HlwahwdB3C+5NUTbZp0W3CeihB9PQuNBw+lr6u3wFh52zHWyMe1LhmVWi4Wy0JmvOi/Fhlu6oW7gx+s2u6RhxF3bZu+sg/W4PljQqG42li+kE1axQfMO0VWzqWvkBlnm1MWxrup2u8DpvohkE1Sf5qilt+h1H2oOhn1mjehmSJ0bWzAVpaW1Ux5C2yAR5exp22vzmpzB/XRx+ewSx3SB305hoO3kW7FW3bOngUZTp75eudZ4/R2iRuve4U+/Il08FgllrGcjHRzwhjcZwKOqy+1bB/Uh63uqnh5Np2sWcp+sWxshOmwuvgTLIW0ie8AOnXh6WJynhwuKOH26sxiH23bZ9IFvup8FOttWmnuq1WgAOnTOmp2nkOlbe/xRjDRztugjWoNW2xW5D5krO/IJyPlsTJ2NJ6Y0xxBxtuqkFj7muT5lt5Fw20eFuLm8y++URgZux0hjP2+Dm15fZB8F552VO7Ceq9hu32hwZqHJ1M5hou3oRoKxmBQLs+sKpuvO+lxl9+kq+yLmq2pseR6OpxBOvYJ32Fuuh0LuyPm7+p4lBuql9ac8p+7Fe3vmt8hqPKEmO/eWgbKd8pslW3rW0gpwuoYQ2mQJ/e2maRjt55wV4u5tRFpDhyPmgD+nfkAyF8XUq4HOk2g0xpdOoOFyBx7khw6uqXO9als3RgwphdJn/W2ThwwV9xstMlxeeka2lWRkbZg5h8EloU7QjmwT2grW86ex5FmGU+HR2uOlYh3PFi3+zLm4U2olulrhMBh4spmUhkei2PFt4F2aWnpugO20SBibpnTJtABvPx/W+8E2+yFoZ+3CppAsYVhwp2z7FnZB2OJiHlhB5uVOl1u3P+/+ejJezUeu0hlrh6F56PRxTm4SByEZuo2nWJhrl9m8rdWtMWmW2zdu/phxI5jgOm4kkRxx/W5Qx3qR72Fq2hpgu4C01828zZ2Gxs8xrRp05JzRB0LupFhtOmxKW+lFkZR+Exux59Hmt4RtlRsXJ942hmpuRuhE2i3mrjBnFOz2J92c7W5mCOyhekAO1XB7AURvFhwlkjm2qu1zBp0pjEOo4ZkdAG4l6Il4OBiUuxS2rUVhg5n0VrPszngI+uyEhpbRicu6n+z0OvvO2g2ziB/RWngUDK5u1u/2WkYln/W5peooB7yR1zugqW1qR0gqe520zevS+pTF3H2pDu9q58oOhyZ+t+1t2oqRiQevYU85OmYeqqWnaexMJmHFqxWgkOi4F6Cxm02jw06Pk2qKvDumS+pIu05F+5Wx5B40+6kWoIxpbpueF6KWzDe49RtI2m4x5nmxDjTRWjfZ3ypmN5ulBm2BvYU/S2y5u6bR4eOgTlsIBgQx49hq/R67B5tek9lvZl4r2goZryuypl4hBzQlkduvS+34VwqF+le+tuho21g+w2upFYbB+igur156sxvCekK2/kWzjuqbuwhF6I57rjaSe1ClyeF1z2n7Wx7WlM+2VO1Tuqcx4CW2o+g+R/g5wJWlnxtyJ/vRe/56xRmwAPelj7m94xh8l2LO9au4o562RpAOv1m/15l6+3wevQAXXKe0pgkpwfZm/JooWjHh0aWlGW0Xe5VJzSl+BOmrW5GxzHJ2x5xsetd5pqUK2pu8h+EJsLmk5F6BJqSetC+10R/mO0JO2VW10RxAW5VJzGB38ekhsr8x/bZsUh1oBhiW20V4E24xkr4VoaCtrxDsRgIV0oZo/eg6Othlz0umolwZsnR2r4Zr6u1rO5TF54lzdO2oJoJxlBOsxexQBqfKDnp2P+6zx0Y20fpmXul8W+FJKkk3uW0jp2olnqOkzx5rjeM2tdR+H26NR5q29/kCrWpHnSKV88WzuxqJ2tIOkLOp/J+5W10JjHxhzOivOs7Jos5gphi755Gp76OuWOxl57fZnQ2/02knFuKBxb2kl5rEpt8hwR5pcpyQOtcpylx00VjsWm4wCgGLq22jR5vRzH+5VOl8F+sFzPB6Ah9yRrflmz8lSJ7p28W5hDexmfKUOgf++z2kkOn6W5npgOhzzpngO+52+SJknRje+4XZuae3Pmr2eryW8eB1c2oE59556OFuDW7/R4HFpY+10BxvZz22q42hEat2looO2h5+b276B+7Kaxe57mwNZysRkEWko57a2gwBqEhsEulrmq6Omel9vW/XWou5w8+3J5kmO3oQWPFvsRz0l3lOioFpHukUpyc+leWwUMh+e4Zl5Ghp422DpkvZzMh76B03kwC2zBWpN5+35xKfZVJv8JyDBxc5yZOyYVtvqEJppeupEW0G2t/exeetr9Uo0rq2xfu0SBlCOl585BBvQ+ltRu7WmAx8bm0xSSfx33B6dekIl6j22lh5WhxpfO/F1AB+Tlqgl1gx45OpfB/MRuIehI+psJwzO3Te6AVgOW2q25Y+jLm1yhlUeqGx/GWtqV7o2/BpkzFsHmj2l9aRsWFlI+50OirRz1hlvWs8V9vW31OmzBn+Bq9pz/msmeoVZ3iO8lxqSBg8W7CV7gW52O44W5PF3YLLsJotRc8Pe4xKhsw+6znw6okL3Klf8UV0oR66x2Ngkm4LdULe/kSTKTdqmKfHcgKkbecfPr4O1m30gBBZp1m5l6Mhm81AXNsNdjeKZxgJtmh+h+4RltIunzOttm0Uu7r258F0ml9Np8G+jk5sFp8Oe30esf+u6fJgNZXm+/hixOqCp7rZ+WrVklvlWr4WuZBy0h0Y2sg26vhl1W2BpyL2oM53bB97usJh8jW1PJhdhiqu7nu6MJwIhirZ6Le+LWts+u+p0Ge8ellJZ2GJ58U5ix7Z234h+qViVOrTh2d29q5iMZ0QOyJehFe9GBie0mkWw4W8gluRBwm58LO8/JqyZm/urJB8jWt4lqIBn5ukwlvSVgVOyeCyeprfBjsZ2P+miJ0ok1XWlm5sA57/2mgVuTZ+xR8F5j42mZ5le2ro26klqZ+v1mtsZxOO/7uwnO6sRtr+8jOsUW4Q+lZ2/ce9yu1VhtyO0xRhQqQKO6AOsAZ4iOntc9+B5qVlZ21zlvw2tgVzRVgexoR2jOSxvR4GF6ces2Orf2sph/eFg3J04u/IlvSOlu5uRWthWzletje/R2jDBqjO0cWhoFjsB8luokRvdOlQUWg2wSW9ie4fx38xtzezxVpoO7xVqIFvP+2iWzNmupZ/TptN2hQukJVmUujthn/+0POufOxgu6JVsTMmj+tABsuxpBlucxrke44W4hsvDmhmFxlu3WW9mTLH0lKKmxOgWV/uFztxtljTjB87ZmWW+/Wrl29DWyq2/tFx1uhP2wf5zGB+g51bxuq0poZ1xZspB9vOrLhhdu7HezdZ6ROqC+ygl+KFvBs2R2zwhkDu0qWlUuvl+5Xuih03EZhwR8ORzlB8rxqoxsAu8eV0ZFro29URqVW62W8r50mR4VFsGO4suoq+z7lq0VuJ+8LjVlpssRzgAMu+m1xrwl9NW35BtURgIRrQUOiW0XxigCPl+mwAOvRgI+0ZhhWks821aF9a22gaPPll229XpquxiDmsiWxy++r2zL+l12ulW6ah+AOj1ENG+7DmiWhyGBzzhhgUf/u9ZejsW5jOz/5jKxxsprROuCBkWO/6ut3eglplW2kyumK++UW4cp5fu/oFvzJs5l08ewNe0Lu795yuWz1W7YO4Uu92chdp4x0x3pmE+zSOrVR+Fe2Ip8C2lPzKTe+Feh/Z/KfI3R4aW8UpxlxtoOmKp5veozJrWRyQJ2rBuWO94Vk7x+a4KmZlopjbjfThxS29ellnF9Yeo5Wn9pxsJhXxnCkhgF6DRx6ZgRW8SpmGBmlV8V+nShgrur6Ox5VvqVjZB61xnufObZ+/2s82mAWtKetR22vp3NV9x2qthjzx3RZ8g+57p1ZF9wl5UR1v5rGesf+1kpsc86tFyoW9HF9bRjjZtLJoBulYO1CWy6ZhzunA2ySe5mZvdu0Mpz9umJJwOxsph4VBnJM3Z2575kmZmbgDIh/T2zBR/A2m+J66Z4kks1Jxp2yqwNZBjqhjEOxeupHx5725tJkUu275jQx2eO/Fu9TZ2nB2rpozexV5hhOlZW9Qemb+gx5vK+se2mjmi5W4qZqeu/E5swu86vYMhlZW3oeugpmzBpvFlLFycR5+OzbBo6u7BJpd+slx4XhsJ2o+O1Ve9mukfB3EJ8XOxWWgTux85yIuqW28xV7jW59J81W785zIxikWhBVm+u2Q5805jZWsRWwo2wE+ot2/k7Ca27ClrtWsq/XuW5Se9m5pZ5tBuiTWkil8Tpl4lhhh2I53kmTY2uOR3UenWui0eujW4x+mmO7CWwYexdxow2uDu1he0jV+nF/a0loWjDdQLBlC2pWuxTO83ZnEFsiWmz2yyhnfB56exBWsNx/ne6REWs26zFu4h/IBg9Vy4pgXOrDZ0NF1r6Ojmt1Z8oO3e+3ThkIe6wJ23+mCVhQgHex5Bh1vR3DM0zVw/m4l27z+8bJnHx5N2stu/qLZx2ncB6M2zXBlbZng2qJe2yO6w1HJOvDRqKeyqxut29VVj5Vz8OrNJhzVlAWpo0mdO4Dp3IWgRx3dh55Bv9ujhVpJJ/VRzOe/uQXWWu8B0BRpzJoTWvLANPB+XWyAR1IO6u+6oppKfDnJ0Nx4JF8rO2vl/Blh9mxKF8P+6g2ozWpLm5aWv7K8Pp6cx3Pm4725/l1KZKHeqwOmkp38xzQxzRl+dZ+rVgdewLV4/B9v2/vxkgF4NV1/+uy579mgORmWW4YelHJsc20vO3KlnQ+oU56mhpMW/jJ5rhs2h9ipizF1lRpixluuqQh1nunce1vR0xWkvuoiJrvJkqOgj5l8V+jZ5QBg4O40Vs8u+KfRRhqru3Oejj2nsp1zh4vJ5mWhF28rurn2+FJ/f+lGRkseqzptRui2fZEeva+vOW6SRtVZkEllDhzoJ6whqru7wxkBu1fhgNJ2cZvRe1pV+ZW2ARiye+ARxQ+4GW9BJplB03m8NRtZ2rO27x+37R/4pmCu6ruoFhsGlr6e7z+sG+9pFmxFtvmnRl2zRuf5goiPBJ/Dm3S2rOF3A3UTOnCRyfpqIBhOJ/nu6Px6YB3RUrLW39J112ky7fM8wAepcJwxVnwhs9uoSPa7U/nWwdB7O+smu0dOkPclJW5+OzLO+Dm4YZoZUl9Fm/lmUOxb25KZoRxiiOlCp2sWB+Oy7Ozvh6d22xV37TJXhjqhqnO2L2kzV9iPdDhhC5q0Vw+B5f54/mxCl2jhussptx1Q5pO2iB5rg+tOF2lO0ZWvFZr3VqpurTOrSBlHumtmuCl4CZt5hpExjsRgNWsthzzO7Zhzux6WV4ulyHuqeJyn5j3RyfZmgptnlhRWu2JtaeqMlwWB4u59Z+mMWussnvx1YBmh+myBgAV0wlgjeva56wJvSe4DOn4F0jFqol+0Whhe1jp1Z++420vh/4F+NW2zOgS+5y58E2kRJgWJyU+tFW/k7E9u/5+wOdFQUY9WgJh7p+zHFyO2sAFruW+ZZyep37esRh2ju2Hu5sejApje52+u/8IIJpvoQSPumKh011OpesppuufMj20XJo9OzxVtu2qZ+gpWx0l+IW8KV9sOubplPW2sh0mJlYe26+2w+wdR002pPO17O0K2gu2hdx+iu965nrOqoOw3ukeh+rF2JWi4pP4exRZ3EeniV9Q2sZ55Yx3POnzmmcOsshy5pwR+qEOzHR+0FwSlzEWkPF0p2l+u+SO/wWng8zhCuAZoq+vMemyRjtm/WB7au6fuxAOovkVJJurJww260O3qh88ge6lkJxygho6+ooO0xWt8Vlaly2+r62+I2s4hxfh5nBrCxvRHEMrdj+mcp4CWgxJub21ROjUu0qhr/xsxsqolo7u7KO10+3fxuC+phJwfOyEe4G5nA19bZjJhwEhha06iJxIVwFJrCxroRpNO9fm3vW0DO7qOwR2hEF0jF8GW2yezF++m5tRegRJk7h/82kQJ+K+t/B935tyJ5QZ+fRuRh9I+uyJqK2ofhk3mgkZzK5kbR4getFu7Fu9oOxI5ygGEMrahfOPxgGFn1Zo1B1gu0hlgNWymls+JpWhsRp0ip88p4xe0Qu6yev0x1L+gbm82U/Rhkgxny5oTe/HmjOfX/hn7x0f2ki3W5ByDunEZutJlcW34u6NJiIJi/BsFOhJuwHJ5S8aqW8/Bjou6cVu8x3bl1dxrm5sle5OWgvJ6Ihq+luVFwVFyTR9oQPO5mc2sWFgURvjurielsV3gRvgJoSW5plvUJ96WxxB9MZyOOo9Ohdh6cJhCF+NW7jm2uxrTekHhkRggYOqSRsN+h1+s5ewVF1he4XOoSe7/lus5lshle+7teoR2weFmsRjIu/lJpuBjx2lRu4QRhg5kNhxVSa0hiqW/oFnEJlNm3Rl6Te2Y+v26bbux6ugTlrU2jDuyi0/LOmJ2hbm9/KP0VhHB5IFkM+41B8Y0ocOnpO88O5Pm4a+yFew3Zje2wtx6XOgfjVPplzOzWe9juk5un/54WZ445vFhrxWjOJpPp0uJ8P+922mAUJcVxFhgQR9nO81pg7l9dV4qfBQ1jfOocJwGFsFhvZZ1Q+qJZugJt/kEAOmPKAu2tS58fJ0OBrMuhjZ7bZmPO2020uu3Npruu/DpmiJyp5tzpvBVm2OFKOx5VgTWoufJRl9aOxyl1r+yD2p1Fmwh9deq1WmVe/px8G5tqOxOJ6hp8SkwDBhNOwzJ4ZJsfB9s2x058mc/Dsyc21H5yW+oPen6Bltmzi2oBu3pergJrAZgdxnT2m0hyQWzPu9t1Cf2rp2xbB2ghlx2iHO8Xu918hDRjIBuNptqfEX2h4Zjeerfp1ufUG2ySesAhxfut+h5NWzmekA2GW+/gp2/evEut25vEB4F+khsmyuzAOh1O1tV4Wx0kB0IiXDu4T2zBu3bZv+pxpelo2aXmjtxpVWxV+nB2rcOv+F6AluupeyFuxZ04+zoWkpR+5eohh3T25vxkb2tchluJhd5tmfWkhpwe3Du+7Okk+8r28tJ1M2vCZsdml/uhXBzXWz9V3cJ2nMy/ZrTmw257slnNeodVymxrrh/Sl0BJ9FO2V2yhejE2sGxkMRi4x4jFg3R9lRzFOjbJrjBt2+h12r/Z+o+qGhr8BhVxp5W9rmtOW+klnRh1YW1TXDkJm82ti22zm6AhiVWsi+3NZj/FvZViLW19U5cZ6oetUpuqV7Ae/ch+/mzw+xuJri54nB8UZuVMwNev8J0DW0tW0oiMme3peoqOn/BiZUlg27AepCpl9e/95z6+l5pjg++uu7hfW1e2cOtu+oq+hflsS+r4BzCZ5IZg32oal/WRj3O4QOiyl+bu70Fzbh4chhpRsTW1s1sHgQ8+1Uuj/FwB+6/ZlYVvFBxz2zZF3aJpN5leRkVOxzZykFpIJja+7tu5CBx0BgCBnpF6TBoXVuxJggh7au5cOx7J5mhyAput52BV2nh92M8rlmMe9Qx74hj5V69JtAJxzppEhtkWo0x9i0q6Jtw1zBfF2ZiZM7rVtUhyMBoyBopuzw+hWktTupP+0DWwK2wkhi3mgg+7Hm1u2s/FvMJubm1kuit5rHlzM+lNuqS1vhVysh1lJjVF281mc2hnp0p2gKwcNFnSxhXuvlWhkJjL2sAh/pZwU2qYezZOzJuuyW2JlpBWh6Oyfhg0erWJz62knutG56Ue/1p2cOmTu8IWiFxUcWjmRghBgxFiJ2vcV+cWu0e3hJzZO5Aux057ie0GucAOno2hlMv6s1vVuVBkZe90OkYhmeW+GW0/kDQ56Qpwmh14ZnApiJZ2Ae1wRle5pGFpzUr5F/Z20oZ8kO0fR4z5+JlxAURfuu6em7h3CpjZx8uJnNhwV2l9Zx85sphw9Jhx6XEBggJ67xjOBsFF3NZpvOvsenXh1Y1zHOx621lW8/2olu+XW88Fv3xxZ+z0ck9uuqWmPpt3x3Y5gY56mWoP+oUVpgWn4Wr02yTRrdm8EehdWighhNm4mhxDm0VWoDmh32oDmpAlqa+qeJgul9YOiGevRhzCewOp7oWxTeklR2yOti2qKhskVkt0+4l1Xe58UptO7bu8M2oQB7uFrvJm7um5xuYOmk+kCBrLZ/qJguOgJutrO78BgnBmM8ouFv4e08238Wi3BrUx2qewnp4K5hcO8HO0D2+BxlE1wd4X653hBya+v02kMpgkl0ROxDVvgx/i+zJ+vBJlsWwk2qrOnaRoaefGJju2m7uuYx8h+0CegIiGue7e510Bx3poxZmFl/iFo950YQSsVous7zuo2h2TO0hl9tZ/+JlQUfmOoP+neJkHO0tW3buy7Wz+WhMe6zJnXuve++r2iPF1hWyJBrYhqy+kG5s0JpTxtg+iLhmKW1ehggJjNutYOmI+22lqvmkgVsHgUxu/mxzRW+7euEO6NW7PWtqO1sF+TXfnm5Fl6Lu3q+//RunZ61lmgWiQ2ggOv9295Ab5+luWgbOrIelRV8lp0+poo+vp2zlWyxFg5R3QJ3dOqlZlBexBJyfKVo27+JrkexXJ2tuuTOhuVmzR45VvsVnie1uJ3WOzmpg8Ws0RrD2qzFpp+zNxjD5nzKFAVsv+kh5moBg2J9e2uu1jZ24rmuYWp82+xFx0l9oOwW2sPYITV1UuquhwzOsiBwrmpJZzXmpa1vkhw1evHu8xhu3h5DutwOide4FBwMW8k2reWyveqMO7hO5S8Tdmj8+ss+vW1skOmZpkOOogVnLe0xu0MWlyO6ZM40l9j+21Jp1JtCuiqW0/h0q1/QV6tFrw2l4evju4eBrwhnJ5zfUvBeok85EereBjQRgPlj3hlpxq35npe+g1mwu9BiTfx1AZrDc4FWyepnLOozpu5B5Bu2ChqphpAxiGfTKh+fWmw2XVut055bZyAp+q2gP+ySW3ohk4ppLRyXpgfx/3m3RkZBumZ5/6O3ee5Ul/SR9jBgIuqvmhhO2+JoK1ohWqSZp/h3F5xB2xOh1Te4+80i2+q54FOtulugqeLWwCJ+GJtARtaRjF23cx71547WgZu03RooW4VJ/v2hDWpvem7utjunyxkWBmsWkOpySF8u57x5t2Fqy26W5uQ5wq2nMF2zp1yOmoWyPO8+Fns+7oO6fkBW5ox+w2O8Sp011YS2ljk1pBnnesBhmLp77R4hWlDe96WoXesj2qsWw7uySW/62wCOm7h5YQLJe0WVuFWzuW7mKUtF3upyoB0MW3t51tOmyB92egGh1UmPdulfpjKJzgpigOpZerTOv3B/hOjzJ5GF6nexAW/yZx+Blvu5tBs9ez7BsDmwkJzvW4kJ0oWvpJ5S8AMl7vu4XVjce6ol3k508xwTutbOn0Blm10Zu4dp6EZGwi0PJ72R3mO0W+gO+ms1jo27Ru8Sl8X2hAp71mzIxgyJxw52+JvPF5s2XZVyNmhBOn+erWdUA+y/F9bRxK5r0W0kFuI52ke5outm5+Nhq/V+fum/Zs4W66l4/VqrBja+5yhqUV+p5qUVp02qMupSZ42Wn6u+np2D22N2zYVhhej/WiPlouh80Oztexl+sHgHtlgNmvtmzcgXo+79Whw56gMwhBk7RrDm8qByFWlLByEehZ2nl+yvhmUZ6fR1+5yt29mu2gWu6iIi+5mlvh28vJ7jJwe2uA+zHKaK1+yV0N2h7utAOuoBwt8lzu0zR152sAh8Dp3+JrtW6Pk1CFgZWiDZryumAFzM+/Y21ke1qO8W226J9M+t2lnZ+qCpwl01QWhTF1nVi5xkfRyc27TBkR1mDl0rVls+/auoI2jbuiU5ijm2cZi1ujCe/qF9cppgJvgJ/B8GIW6Hu1M215J1HxrhRkBW2FOjLB7HRkLm2DW0MOxnJrFe3heizOiF+voeno5mFh3Ssn7+mph3qJl5ulDl1kxlNZnuFvgBPCWxWB5Au/FenHhrOUHzeppWvcWu38gGFjsezcOlNR+xuuh19U+6P5yYod189D2lvOgYRgEuxuB+8Bx9Rjy53hw4ce59J3hO4dOr8l0q12px8KWlG2jY5KjO0ihpDhvMe5YQUnOqBR2lu/62zE2uTWgthnKlve1qGeliOpgW8TR9wZr48xw55Qx+9B5vW2lJull2VjQfFkOe1fWpX22IpkXpgyJsDemR12klqq+gTm8dlwV5rYW/mJig5otO48e2FF0v57EOinRsDhvqlyaZxBO3wenSOqV1pTh7wk7S5k32k8R8puiQZ6Z2no5lMZkRV3S29Z+5fO3BWht5mLB+s21Lh/6Fielhce48hqyO3/Fituufu2NZuv+4jezoxpgp89pvPu3vxwf+v+Fpmhi+e0/hv/Boge54l2BpiuO5w2D25o4W+Y5geWqglgyeoil3sW/w+0Yl3IO4khwsx5zJgoiTABpR18P+8qWtecbYe/YB9HOi4hrfu6kFo7hjvu1sO1gxykp37mk0BqGegWe+cpk3Zy++zWOwz54L+h+B9TWvU277JrC4JV2nLOokFpa+oAe9XOgEk2uCs1u9XOq8Z5LR9Xp+8BzfZ4N+gp2zWJmKV4t2tPBycZ8KuvjpgTRoXhlXVlj29Z2polpCej9B+0u0gp/mxyUhtY1kjxtOphH27KOkdhxQ1rABsF+meppUvFCl1uO/rVsElqahgjh0RWktxwwJtW1vv+5fOs415u0y7+8p5zAOhZp4UxuluvY1+uJ7yRlnF3R2jTWg9R0D2t0hy4+ihVpHnQnur1e5GW+x15UWxB2klh7TJ1gevv+h422MUvi2lgzRye3zJhHlik1jouq05nTO5kZz/VzzOgnRxmW2fR/wFyPxlU24x2+5Z5W5vw8ivm6El281mglzXW6I59qUkhW1Vlj5O/P56uFsRl02J6uV3z5vIV+xek0usxChjevFOmihq125cRjb+njWuR248WxAUM4J4Mpxmez8OpUB49h/hAEylj3hyJRvJuxax3C+5t1vtmiJ+sXBpkOuJh2egdP5qVus7JkoVzJ5oN1vxW0A2jQxiE15QxwdB4hhmDhr4u/MR6xVjrJot52M25DBwPxt8u4jBjX2wEWvZxzExkRBmeFxvm0sFwOF2VW1QAPl+taO+fm7elupM42OncB0Ru4IOxaFkUWjIB+pJo25iOWwFR7I8/M2lPBk1V3jVu5hz+1+eBzXmoaR1LVmhF1Q05mWvKOuzFkBpi6e0o29HBzz2lkW+AJ2lJ0oQaUZvDB//+/Bp7859jWyVRiICxbhnJ+zd5st1y9JlJW0JFm71v9B1kxzA1rOUF6BzPumpxhAJ2dey3uqSRmWh9WBhvKLle3UejMhnKV20h7SZ6Oe3/ll/e8Slia2yMW3D+8tOv21wdkgdpxS21HuwFJm4+hq+1GBqvm/Cxhmpq8e4RMlbm0GenAxioFxMpmbJr52hoRgIlr+e8o+izOgTWxn5p0WtMl7VBhclmMF6xO2kR6Q2kTRkjeqThvtpoe17hffl27je8A+6w5iQu3q2x7BygBgp2zQVnhOjNJ7XMNJ1pp+6+2jQ2YNZ7qOi/m6oQF6FhMW2JOwoVzw2IuW9W+xil6Y5neV19u89Vj+u5QxlWe6U5xgurmh/O+5K0gPupCxhW2u2O5fhpuWrQJlHBsme08h7Dx5+Wsu55zm1KlwsJjcxz918JF5N2oJFzVB/Ds0GWtZO/02hCl/MOi/WqPevQeyDFle13Npim5iDlr52vAZvyulA0vcZcYljaZrtFja24P2okRoOll7F4KOjNu7hlucRgEZgQVjAejr+oJV8RJs4c2i5918tsZh75moO0A23ZOpXh8PB4Mph35klF3Q5/DljYhwfmoQp34u6m2vx0BNO01O3cxqvhzi8g/poBgUgOuShsDR2l15y+g1B5apqJ1xj10mU2O19DW6kF3VF16hhvewU2vmhtNlwW2/ap5y+rNh92253KbA++QV99lupuyvx5W5jYWkPh1yWj3O8URvjh8G+g6B5sO0uesKFukW7Q+2dZsgFljmiFRkpu3/2m0lsYW1u2gQxyOB/Ze7Flo0Fkv5msep8elR+zH11IR4wAHn+5/ZvJ2yvOsn1prmike52OvHBwOet0hsjOhx21VB07KDEx/JBsUWmUZ/5++CetLJ1FO9m513u0CeluO5oavkhgt5gfuwo2jBV9lhxC1lnp47Kfv2wR+6QV6kO1hVn3m5c54IOzSJp2WjVFlRO8LJ//l7956SRigx1WOwhfRqk9AW6DWhW21jpwvp6SB9313lO1u2iTukTV5HV6vWuNW0ceoKV62OzJ10SWg7urYpqfm3o0giFk951qO9nW/iO1ZJqHhC1hzepku1q6pkqelXOk127EJv251324h27/2qRV6KVtABqDxz6Z5a20TXPFOgHgKw1nafGe55/xx556qgY6RodKLR5iWx8u8k/O7B1jIWvPxik1pixpXukd5nBupx+liFy0h1jpriJrN4UzVuupzju/15qxVl/urJe2/oJjlhZesM+oq+9d2gkp3Luuxu4bp6j5k12koOoDOsEOsR20LWnh+75OrWddih9pWtKx9es5qJu6Onyeq3+qTestuoCBtWl48V8Q02Ke4E+yn27g2+CpquenSJm7Z+Rpkge+81k/motOhOwe9VzcgGsem82i911i13W24s+zi13OW1/UAKwSdJF+FxZpgkR4lWzCWkc+3ie1hpv8OtF+ksBkSkhll4RJ6v56DWw3Z8px65V/0WrjlsWJpl1h6OswxuQxrBfD7mwz2ssRwY2KqZy/huC22Mxip5iYFjsWn95yQWyyh/GpoEl8t2mXVttuj1Ea7lq9Fpye/Fe56ZhgUMA5rHljsWoql6PlrRunaWvaBkc2Pdl0Glmkh2F+4YNn3Wkye0uOqmJyXF5KV74OoDetJ1tbZk9uuEBy8x50x0d56xJ3ZZvvWnpeynx0bRx5OoqupmR5ZBl5Wzi+jl1uRKWxWr0pwYuywu0PWs+Rzz25lO3h1jr1j3exvV951kwB+J2zHW142+nWvIV/sJl3OqbckgZw8xn+FilZvSh5UWwYls7JuXBh5O0ohmjV2NWfkxl0+uWhsdVoppx0+wj16Uh/Np3R+vNx5M5zvluBhhi530l5IO2d1wlezk+pTF4SJgO+pDZxMesmuyvjbr+12Wsle//lu5xk8Z17ui1WldJubcoMht5W9D2tI2v/Ws3V0Me3jJ2sWEZ+k7B73prfpw+OqHexsWiH13WF/5Wzs+5+B17lq7m4o2sjFtkuzAp1aZ54pwq29jW2dx87WkZupkOw+B9hhn4FlglzpJh9msm1xHVo3Bl4lnKRvuV5p21ZOzvusYO8el5zWsRVgHm3nm7yZrBJowOyehgCxpzxnWloQJ8Dm5xuwj+x72/je9l2rrpvBV6TJ1QJ5N2ntuq8p391hw+keV/M2tpWxBRgtx0oW5PFsHTU924vB8/m82R12O9A2/2+1/h6jWp+W/nh602riOgqOziRnyO9yWyMxgUF53O3INsYOt321cBpmJrae0FeonRpz1/M2yrOowOqYB0sVjDOpohoDu8lKzwVl1Ww9hwQW7muqTB02uq9F9Mu6Vu6mx9lWhEJ2Cho4Gex29e21sWtCIL6erNJpTl0MxntOn92+d0g32tUhhuhhU+zch4z5lhB2asv+e0lp0LV2K+mQRu3pzHZ94F+dBj2h3OOwsW1pezz2iB2xA1s5ZtcVjXu5SNwx5iTl3rmuyW3LOgR13W1oQVg5RwE26fhhC5EX5uUe/hupI1qYB+5Zn8WrA3Iou6A5qU00J525xr71hkB5/JzmOst2t3+kil012h957PFoElp3WlhZ+2B5vO+5W6OVpjphyh+fWh/kfDmyXJo+x24Z6sRqThmAUdAunUZ5VZ8X1h5BkUxmkppMFtdx1LZhwOymV4CNgextukgcWokFmTF2Wx1r+rjJ8SRnS+3y5qFWgqx8Zuitu0Xuy+Binurt+2uh+0WohV9LV232sRxuB2/kurfu7YOhMkt6O9D2uVx3ZxxOx7C20pJt/Wiel8wu7EJtaJznumHJuvWrL2sbjYv+z9hnOBziJwhu+U2lQ2+Dpp02q2Owj5iPk3v+5/miFx+tlz7x+Ne8EFrA1gcWzJRigOocxkfpxY+hWuwHxvoeCalqZWh4Zkk1rLLYS2jgV90Wktm6fuq9ungW802uakpG5r3hzC2/j2iUl+NJh4W3LBy82gOBnS+oixwgWhe1lNJqYegOB+TXVaNh8yXkmLnluufAZWq3Z44WtA1ztWmJWtSp56pxwBkicuAVjT50v56AO+Q2yeBuQ2nwxzA+1K2y2W8UZ7su9t+7z2yNmgqBtRugaRoCu8Wu7LuoPKLrFngOhg2/heslh4ouhA+GWRhxOx9+1UV+a4ZdVmSJ4N25u25u+2f1w1MlPxp7W0Q57aWlfm0B5gXlzc2qZWnp139ZyXuoq+q1Fx52sdl1/UMhfMZJvLAF05w1etZe58Ow9uzHR2q1kJZsAe2Tupk2+uW/k14Dpl9W5FRsSBi8MpSp+hBtWN34unwpnAh3QF6zKY0198pwOW6eO+v5xDu+ze0755xFh4CyO2yDu6aF3SB+CllTRvPunXm/2F/M2zrO/hFkvOhC1rWOw9u8Vu9OO0DF+4WywuwM+1xRmqugAxguO8eBrV2hTfADUy9h2lBpsW2LJozO2Gx11e5Tl11B9BuqCNxel0CuzjBnmF9Y2oUZ1Lh9whjuNlPW08urn277hpbR8NRkA2aSO2lBkN5mZx1ON1cV+BhzBJ182rxuic19ixjTJyGfThuoIuj4ZnJul+ewJOjsxhCVoBR4KJrTe+YNunuxXOlUJw0WrQUYl22w50K2rZB/wp+w++s+5Qx93+u0N/M2h0Nojp8X1w8RiUes5Z3zu5y1pMJkXJk4e4ne0Dl18WxDVhfkLpO+1hzsNus1y3xlOWpPJlrmpEFk3+kJW7Je5vWt0F+OeuG2pLu0+e/U5kpZnfkesW2x53Ve49e3EWyzu9gZjp+nFxrg5t62hBW7Dh2TjIakvD5oq1pve5wO8Fl9yN8v29RB9Dp4fOjvJrxlhQcv5hv4x3KWnnu9BRiBN3mW1Ae0BWhE5m9m17F68+jW192c+/uiS52/p+jZ2cNmjmq1V+Ne8cpmjmo6FqOe+kRjPu7qOgH5wE+6wRzJW7x+46WvJ5tpJp7ht1hkZ28jZo521bhxnO9M51d1zTm8tu+506Z+taRq8lm/Wipe885s7W6cpz45iH5pAVyilhP2iU548ljs5+5Onzu34NqRhwipvk+mrmpWNmdJsyR49ewoxo717bFuFO72O33+rNJgJ+l+R6J+hGJw1luC2lfpsKhmTu0R+oFlyKunrFh9mwmJ9DO+lF0Q+5028BrVVhtfBwe24DZD0B5/Zvju/62nRB5e518Vlle7sFxTltmWruxzN1q2p5Lm/BOlRp+c5n/gJwuy2uhPhruxphJxpNitRlFpwuexyp/nBoe24Uenue79R/q+sRByPhj+e4j5qOlxzZ+YBLnJ+8+qbBpA2yFR+XKTFp9l+pgR5rF3nZglO06V0C2jQRunR582y/O86B0kO5NulxlsMl63Z4p0nS2gMWobm1nlj9ZFuuhLF6T+sahpKW0GVwZx9/kO+Bwpl0WV1xxiF+6m2ljBoXgC5lngln/JpH+2FBhMugZ09Yuz3O89+lywv5N0xxogh65YdIuhi+3BO/Guub5gE+iGu0xR/GuuIBkUF93Jp3WyrR8k245GT4JuNxq4N5Y+qsu1RVvn2tou/WO9bOjQu6b25WB5oupAFhmukE1dkZrEunn2hbBkL2y+l4V+uQu+YJ+z28cRiFNnD2hEpqx+4EB21O6fB0qe5fu6fB/Slp9Z38emZum8ux65oiNi510Qu8su/1uvZ24Oh+tk2+W+tk9aWsr2nlW4CO+UWtb152Og0N6rhkThseNh6Ji7gLYOgp2wiu2tM0FuyW2h3emnOgKJg3FkNB8BW8u2uxW2R2hmu11++fBoAx3tup1WkLezzcc2AaOBlmWgK5o7Wjqun5VpzwIkuto2xqOtoujJhhKxjL2rAug4uo7Flrp8wu+XWg3+gFNoAe60p5eO9AxgFNkrO8NN2NOgVO1BuzIFoguz/2vQUf9IfMum4u9zB+z2he27Yu0fR1wZrhBiQenz5y/5gnmgVeuD+p220MBvpN9E141NpnVphR13KOUu9j+uQ2i/Opyuo2pzUZw4OlkWqXe5yu95Vxquu9RmSJ7Vhi8WzuupPlyyuksB7QsyW26SVhtN+puwdNjnm4muqiEO2FjuW47QFfRwpM+KWvCWuj2oi+vse0A2hHlljW1fhpBe8G58fO5oZ7q59igU/OkvWoHmot5pA2p2urBBmUhijl5DcDPOj5PC8ulI1j8M/lNoWW6wp6ueuyuutNwb2/VN6hfOquziu4qutDvRJW/j2sAZj0FzAWsAZg5Wy+jYgB0WNqnu1ICjtN9yu5gBuZ23L23DcD0ALL2oEpquW4QRobO9Q+t0urw5qUW+Vuwne1o28H2na5zIF9iRlPW2k2zMei9Wz0up34TCugp+msMkZzFWOozZlSupA+4UVqKe3o16DNmch7Euub59KJiRujYABjNiRu08+5wx8Iu2tpr2U9Iu/iRy9xhjNg8Ww/FkguytejQupAFuWuj/J3J25Bx6rZh91+aug7W9CW0MO3cWiuWikpqV28XW9/Fv981T2nf+urJhAupG+s/Bp8u5LR+3+2ouyhpr1Ni/BnzRlHmoWRkVNute+iO1Yuq6yrWRiPO8Mul3m6IF1qZ2sZwAusr5v22oHm0sF8fu5Auw7Oth2+cWqm3exe/jKMsB6b2tgu9zR8u2jlN82lztFl8+owuzjN4Rlj0O1Yuh0VN3hMIBoUe1NNkUW6kF/HBkmumK+1f5nFNpRBmBFqVu2cuiUNin2vHm/Xh/1NoOxxXR0NN9Auq2povltugUIu6mFloWhh296u8Mu+0xg7hvIJyQO+GebCWnUOyhV3bmjJu6k1zHKOf2/Vxu9mh6J4yuoAeu1NhhJqjO7KpyhZqvhGsMt/Z94O9Ox/lN4g1u2u82u77O9igAyOqo2UEuknh41VoHxlnO1GWo/28sWhUezEBtFeg4u0GR3Q+tou+TprfFtcOzxgGrN0xVqsu9I52zRqm2lnOo9Ns6hnLu/cBhiZ5I2lFNwhBtBIG2+hDOgrAe2+i3JrBBzhZ8b+jbJwDxpZMN6cmReEpVkXlx7Zv1OlhxobOtiuq4+iy+yYus52jg222uvi5mRxHKtZrxqyRu4OrO+mSJv3OtbLeyulL53BWxlh0sW2pN8M21wRyo+un2z2+9KN4DNm7Zgie42u8Ix2DezaW0d25iukhJhrF9C23kx42u0RuspOsM5+q+yXmwSJ3xWp22+fV3x2tphrBBvb1mBBwTh8suuHZ1OukwunD25UV5/xxwlzKoHl2gjO82AMep1UV17urHNjnmjoulNN9zlvDBlheo+O7Dmx/W4VNsoJ+cWqrqMAehquq9N4suqsu87FqYWqLOhRe3JB0uO1UW3qWrnNz6egPm19hlTNwNJorxpa+q5Z2CNkzm1DNrFDe9OiLuv12nqLOBfSKfW1es52tXuwM2gj5gz1ihO/l26hNi4W/0RrwF5VNhgO6YB24eq9NpO5ik53DcSNN6muglNrfFxou9wuiIu0VFv6Z/BJxlOqNN5cOv6Zxa5qXmovmwM2m0MTfui7uokuuhlrYuyS1kUWyOpyCekXNgmu5LKIkuo/O8/mnFNhYu+ZxtWh4oRoQupLW/cppTSUPJnvehEF3aO8NWHE2m1R112wQ85hWhQ5txlzRBhux8QBhXFgLR5mNpFBugRwlO3zR9h2/QWwIeh1O0ZZiD26YFkluqkeuuffQuhD1n3Og7WmbxnRlv41gjOh4plJWkkOqU2uRu7Re4Qu5AWw1huZZhUeko1qM2w9hstF1HO/Ge6U2tOJ6cWh1WoTerJByDBp12sGes4ctjmoKwEMFx0l97Z3pJtWl9kpsP2slW8sN6sp0Xe5wOhvpvTupnplWB7zurDOoVZpQp9Pl+Oe8JuhOu1/x0oicSFlXB3q+jP2qq2qQhj5RhEag20ry+7QVo2OuLmomO7yURzer0p56ev+OgeNuLmrpOraWxKugnVgUOzSN2aprw57gRhNOgaF9MevvOzB1yAOsZekpZvW0p4FuJl33Jx7Vhp51LB/xuyxF4RVjzuwTx/tR0mJ0LhyJN4BhoZF7DO/Puqac2Qtz22l8hsvxnQt7Qt3dRyZOs0RvAFxQUEsO6+hrW17up5qU1DunflnprcQtgxu6F+iplm6BmQtsQhtlB+Qtj3FrOp402i/W34BhIOtQtoOeubR9Qtq5N/e8f2h9acvQt9pBgwt9acowt4zRsG+xlephZnakjQZ4HlqvBkaRmqss5+hXm4CV9ZW32O+uNjyRsqJs9Rom+rSRqaurtWt609w5j1RyLOqjZ9lW61OttF6dJ7eFuEunBl1/uyhh0G5ynmgt5lNe5vWk0Wp1NrWpynmoa6Ea1o8C3H+j7hmYQSXux6F0LW29eoi2tjB8EV/aVtIO7ZV97ZzKOiYlgVepUOoIxp8F8LO/e5s+l0bxuJOwuN0wOnnV0qNpHh2VW8t2vc5qI2pMR4jWnLJqme8o+wdpvfBj7J2T+1zJ5JV/M8v8J5o24EJ5jBjWFuKVuie+n1knuqxu6vWxI5tbWiZB8yer6eu4RgkJv0OnzKdr5pwDZnunzNuYWl9ZtIOjYt7qOoTxhVB5CW1De+MltcWkUhvm+rQUWaCdXpqpOkX5oVBuDhjzltxBtINoMWq/R9m5gR13t16fl0wB0KB9Ju3Vy/7WwyetA5+A5kYB9NOl5W412tcemg003BkU2ldhlSeoLVqbcsI1nsJk4W17FjLRm/5iwu6ie5AplKfOQe022gIuiU+q/RnFugR1udZzj5+LZ6oQUm2utJ0s+1p1/g1hERpuVrC4VyOgsu8AV2TZu4Rj72zVFq8W+4psPJ7YtycN2EUk+VwXWr7+77up/Jj/xgQ+n/+nlp0N+pixhMWppl6jBufDA92nVui/ezaFnJ1/Q56vWl/Jl4tyFh0cV6wO7zOzvBnotybW1bmnot2ohvten+Rm6Fzj5t60jHuq7eleloFu8ap3RexQWsmuhnNoRO2gkpie0Lxx2Ws4uhbNiFxckuy+xjjFsWWiu26du5Y8l9W+5Z/ilxsR00W/sBhsB0w5hoF6/BxnR3tOteOnEF3huisZteFrr2l9Bp6FrzJs3RuA0/7u97l7Rl2lek9pzdW8JunY1Mw2jJV6YV3Z2w0R3RVs1Bt5V8mh2RBsVp87FhzO9VBypV8lR9CVoGSk5Vpk218Fl9BtXWiZ2s5koDhprmgoZjs51xVsIxmA+jxVnIRi4B7xVwH5gZVqDW/xVnS2kCFtXWhqOifOi25k4W8JVo7W0ONwvRns5lqOvee1t5pcNpJVuQplJVjgFygx9QW8apzJViDVsU560u3JVm5O4VF2Y8pkekdUHlu7DBjbNxyFltOsxVqpVmw2GpVxH5mctkY25NOxpVql25pV/Z+wl54WljpV6l2rpVtCh+UWzE2rQW/pV/Vh1bmzPKYZV7ge81F2TpgdpyZV4CW6ZV2aO2ZV8Eel7m8b+phOhMk5ZVx8t+WrAu2sA5zZVv4R7ZVzOuguCunOkQFi/lg5h6oO4bm3Px+n2o2F+a4Kchlw+qMO6Zhs0xq5l41Zxw02K5uuR7Fu0ZlxjWgXOsf+gW0juWyzlydWm3VxEVnWuswRrfm7zO+7U8Sx+5FlCWlhJum5jyV8WNxGNslhlnFtIZyYhrmMlgO8lu2bFmShzmFxI2oRO+/ZwPhU6N0Z5rShlgzJDNzIp8G53ROot5mlegJe7Ruh5O8nRydWwIhlse0nOp5Oph1h65ow+1lZrTFz4WxEOlZ2xklmthmDpqme3he8/2k/uzO2+d0rPlhFWwfl2U22Re8m180OrsumA+x+BhvejbWgBujusjWx2sF4YRuk5sIZ2FeiRu5klo0Z2TN0LFl6Z/cOyTevdZyqptTNyieEhB2Th7qemoVid+s+kUphwvN8W1iRW1A54xWoVe252k5BoRu9pJs8W7BMlhOj2NiI20ZZiipr++vLpw+lkverbZmIxi0OogpzZeg+NqMxL42lxR/62yvexrezP1izW+kNrVW+aBngV6BRiyh/sltYetW1nBB5jVzF+q05ifJo2+9Geq7eveRrrVv0+n2e+vZ5/x1j16Oe/uQGLhoUZyo5jhxxvFmHWonRh0J7BWp0Jk12q+1jYJ7UhgY+v4R5aupx+gaZv+lz/mreWtJ+rzuz0czju4K24L1yl5+/2jW2kzuuc5ySh3ehhCZxw591+t7O+xFg/V6bp4Rhi4ttD+p3C6Be2aWgQ+zhh/MN23mg116JNy326Z+yrmg32tPmz225aunE+m813K2huB8u2/xps9JyM1kCZyy2/SJjJJnElyf57y2guU6VR8NWb9h6OgAKW+6ZkN5qmx7LVkUO5bNh5Zmj55cO7Cpv/FtA+oxu/qLbaOhkBvkWuSk4aeuKOnle2FRvEpxhW+2h4Lm8SW6g2yCx7nuonRj3up+Ozz2xgZrkW2Bprq20ApzrJ9iOlV+xUmKzhuORucJoyl6H5ilpn522aO6IhmvZ2HhumOikevoVj/psXW78RnPevehmMVTxBhah6yNsU5nF8/Be7ZVohZi1e/P2qAlhfk6oQHOO6kFzs+ip++WRwS1xz24S1uz20S1kYx8S1sS119Wm4NjL2mS1grNuS11BRw7Jx0Kq8BjaulS1oqu3yti0N6RWkIJrS1i5BsL53XJl3U/S1lzOwy15ae4y1nQW7W25Pp8y1li2t8V9d+bUOH2U3I2b+Zn/Kp7vfeZt/8xtIcRm3e0r+V80/RplLJFuqLXNAXJF1fCYkVOhgQpFpE4YpFtDgUpF5lueEVfKud+KCh21sWzj519Urz+qDmziuyZZ65BhnemO1p909tp9wewnKIn51C23aNmeUkI+qp+5N5lpev4JplVrYW7p2zeF2ZN31WwshzN4PD20l5zs+myBs/kUx+2UO+IW6ituJ1j2J11e6TWpHm5tFoqfEA+6VJzjBqNJlPB+H22EB3dOvlh8wqayexlxt3dDIBg5W7XKcJekht+bx0DsynmmHKL2eh2N1UV7WHHpuwee3iu6YOxfFoZ+teN0Nm98F7LWq0u4V+wTZpmO5n+uMlwj+kdUEqFoOtYX29x07/m/xuhaWiERAVVmy+uRZyBO+0F5NUZQhw2O4vRzK22c2xDJlQUDg2j6lrI+hnpuV53sVonRw5W6OF/RpvvKe9JoAV1Nl1Y2wpO/OzVwO0LRuye+G55qfeUNmUF1ZF92FoKFu6JmDW7mKaMFolu5ihgue4epsBlzJ+g+exERoj2iB27VU6HWrG10puqp+m6u6Al2Me4XegUkztB5NRzEFgc2i8M1557b2v65hMlgmxlqR9GBWOR1gx+oR5W206+lWJj/+g9VxXm2ZNh1WvJtxFlilh0oiFRhM1O71BrPpp2u8GNxotj4xuSU8glvOeyJttyl1L2o4GCGVu92mmegvFwZsomWyFOlJhGd2z15m7xnOs4qG62Fl3KbJt+eN8GN0M5md22ORsxt8GNzgx3xkh4O8fu43BqHuxCR9HV/hWqoWwpto1FiiO6oWqe+mNVv4V9Jt2Vx/xtz0WvZ+iGeqlukWpuQhxCVkLWtT5yaGwoRwGVqU+zg1wYoHgp/fWgQUBgBlhMpL2/5Fjus0DpgrJH1ZDLB1D2yptt6W3DvSZtgyWxTfMwJ9aRsDBo3u31l4/2qcWkA2BVW/LFmX+gTlpEB6Xu7qWq0u3dWyvWugO8fx7NO0ih2u2vPu3nWhDlzG5o4V60Jl9lkVBro1VAxgvx9TZmt+6chj5u14BgI+gGt1nZqpxhIOglB7BlM/+gnWufJyDO4leolx7+B+aO40ttZB+zeoq+z0B1E2+w2fhN2vDcFJyBOhQBs8+rzCH9Z9h21sWxEepoMhEe72h06+jcNjoMtmN2TjQ8UrrRmCkNylpqB1D225fUq1uYpzKhoqOnIMqlhvwt4lexrmxacvHu6g24dUWf+no28GZGsN9De3f2zKO9wlid+uD+mYQVDlmTxtjJ5uOzE2zTxig+pDZtwOlnp+bx6gp4UBieBw7Fl34Jtuh2pm7p8GOluuus50UJ2DR0D5vQhlPBgH5oshpoOuo59/5gsxkLOwYeoj2waF2Q2zQ15u0grNg/Vw256cF4vF3PKacF1fF3P19Wl5Hm7D279B7ZWy3J4ot6/ugNR7VNhhu36unVVgvjIsR4dh+EWu5ty9eh6U21euKB4qto7+51V9i1pJKJFhtsx65t5cZhtZxMp2rppHRpyW16eoEJ5tOhBehxk0huwVt9x+xIJljemrm1ju6FW+ytr4tkeWgje2Y5+IO6oJwHOz8+98ZzAxi01rw5yV+wjNiDZgwx1LB+J5xFBwKO8/Jtu5umNl6BqF11yBxSh865mM27rBo1h1Ie5dtg9m6gFjsZ2wlwgWmIF2lB9W1g451aB3gpwMW31OinNp9VyoLJXRmd2o4Jqhto3W2X20DtoxNyptpF+uZtxuB/4xp2uvkWhDt8musRVtBxsge98B1GNvGWp2um9JuUN+otjtut4Ok/KS3+wpOwa0sQ11aB08tpPh8vKAJN5q+3bW1upgf+zlBhMNml+gfW4oh+VN37mmkx/B189Z7B+7cWlQh95JtIB2UB/kl5hWsgJu7pgye0ahlPBtj2w/+ruW5ppqYWtYJnJN0TJqRe/J+48t5Sxr4W9uW3I2cp2xD+ptV/1mygGI4BxgRgDes9lxaczXWyJ+jgqbQ2wYOvhkEierUF1W57cpuv5hIlzD5qztpZ22zKewkjPW6jB7aetqciDh2VxpyRtnFlfUSXhkDu1tjT3N3jKPdNyO17IxpUW6tW6IFpTW4uNvse0D2rFtuRB6Tp7JRjxOzwF1L5uQF6XoFuMXJ22A26bWti12XV+1O4Tu+/5ocO7126r2qy+6V2jfJ9wNyTKHwx/ERtWllfUDbWkBtk7uujOpykkSkoZBsAusEpgy1mp5/iN4bmhkuulWoqth2O3U2rd29Gu4Xm4FWoJu8zOzxgA61rH03hB+kFipW7mptA+uy53kong+/jejPJ3A2w7Rm5BhDGSFeoBuvTmrQ9epBtcOkCW02fEIJifexLBtCiDGJ5Z5mbRnwZvSWjztg6ZmKlwTOgTexijQJh3d+552y6x9U+le+vHxXU2qxu6LFu5l2rttsuv4eiDhrke9oVmSl0OC3dN6bWh/qNsFhMk3mugdOtuJsLNztk6Iu6pW6+fIguiY2jLjLFDI3ug/myrRsphqRx82AN0pBFW1XRwe1xFN9zlrJu50etW+q5Z18utyO4BF+cempFq9Nwc+wokkaun2fXU2k9NmUe8FtspkvHF2au04kofOwYoEautYhtWlg8sethyVNjmu1Yu6OukvF9mu7hW+Wu+Xhitxyml9Qu5RF8KO2OWnz5zpx8IuunkhFWkXtyml8Pmk8+WDOy1OwEBuvNlvN+cenF8l1Nv12mMVX7IoD+xA2sxtno23skbCumhZ3skYNpvTmuhksyugJR9FV1K2zGluGNi2xx2u4n29gW3dNkqByQuoAujCJz7N4kp242gaRhAqdfew7t+g2XPJkauqjNgWNtu2+9NyY1m9NnBtun24jtoSum4xhh2k7u1jKKwt+L5s120UuxVSVpBiZu3f5yJOq3Ji8gN4eoUZ4b+rfkBtBkQtttW9RRiJtjp2iAB7XKFtN0LRnZRkYp45WxJtgdx3FxofF/Nu6VtwRt7yWrYW0Zh3GMaAh3Jtj/+0MeuvtrYWy0NrPB0ptoqW8pt0xBqDtkXlqZ08ze4Llq2MtTurO19DOs75/o19d21YBnXWn5xwFR3ZWiI2EEOzIpwnOib2rHN/atyHlpjt8RO0GWjmRpzerOJotWGnBujBzoJ5NOrJO1/+wHuo6OsHBq4pxip6k1n1F3Zp8xutCx0KVkCAZiOsQuuVWpw+oiV/QlsSuituiVWvv+4Ql2ZNq6O+FJVhs90+7mJpmOrLemxB39jWNFhehDdUihu+hhkUx6T+sAZpUO5QkwAW7JessWgB+yEF292oCsvBJrwe7Ahr21/vB/81pne921hyByu5+XKUQN+vpr9ml2xq15jTtnpOgMFwbpmHm3gNrFVy3+1gxoyRrzm6zh57KRcpuJlrye9XWphls8ttecacF//t3WZ6N7NSOktB3f2uVFo7+jZBzPOlvWyw+8KZmsplX+6SOsGFuhpiFuv+OF5O0ApuJ+gqWpN+vIk2NWuxOuY527cnI+wuuhTRz1Ry7VqXWkEVn8WjQ2LpOkRJ/eW0y0rxumSW/kWjg+6FhDb2phxhlO81Vmc+uIp0Tpk61hfW/jew8xuBt+z17IZ6YOptO6P5nsCjcR7sW0G1nyJ+PtrigbYp/r2ziBwiV49B4Buyuhnk+y1Zuj1tLxyoWoZ2j3p3+NlLlia2t5h9NV8bN+iUvZV6GphAM2SO5iO1LOrukkgd3k+3LKQtZmjm8LJwB28AV+YOpSe46W//l9x20326u5y0BjyF7lBi6e3Ssjb2qegZB8X02gKWkpeiKBnBJoiJvHe0UJ52Wm0pmvl7dtyPcgv+2nu7xukmO5Ke3rpscRwKt5xOzQutK5hsBtfBiCZ0B26spuG1+oOxPBsvFifuizZwwO9g2ljmg7u6Nui/2nHevGM/NFqPe6JJymOj8xj0FuSWgeVocpqhpoge5b1yoWtMl3stxghpIiMw25wDWB22EOgr+7Ql5bJivW7sO6rWmEVzqW+KxxAOhFyY7p+vZ6KerCWq4pRnW0qu7GOh0Fnrk3llslodw5/5Fk1tgBx1Pt8o2W9Z2Lpt1exBR5QVoF59dk78pp5lqdRhLB9x1lKU2D24zu2EdxhuoZ1qMpz6plnje92gNe+u+z1W0O2yqKvJOj+e9os6kduIepEBoOO+A6o/WuJ0kknCiF2m+0rp96hpgR9x1kuWikd/ix/2gaFhK0uu6NhQgST2kkd2loe4lmyuu2e3K+/gWp4dtKumLpkK544+2BkoLlvoedDutr9OGfOufI6h0PukD+6Zl8eVzNur0B6nZ+L8q6hrH2luRtzpt5u2+rGc1toW8mV+eWqfUgr193daREC9ByoAE+sr2e8ehpkdi9BnaZ60uulUlsp9ah+NB/d1m0WpMujdUhxOxqexUd5dVyHWoU58I2IeRs+hljpzNu4yW2QRRiW1rW6/kS1Z/tmhq2fIh3Dms0dv92n/u78Rl+F60dhqB/NW2X+j6puyktyJsSunPUeEdgBx4zpwztuXx05R5bJ9EdwaSTEd5Bx5QVwdk7/uu0d7MJgvFhufL2e9SlvEd4LR5P2hsdy/u2ZJnV14WFuAuraetzlzUJsyx+hpguUjst3gB3I2Qt2ySF8iOnFJ3aNw600Ulug2wve6++5th0ql+zptTKJQZ8yJuC1kIWslOj7uosl12kwFh2eNnDm+vZoeVmYesQqIPhshx9VZ5DkqQeiUF27uwSSKEdurAV0d6bmyi06bl5YFxYzBQW/JN4K2uJlm7hqnxy4h7TJjQd1Qdkj1ok8mUF3jpgaxxfkIm1tKu1Q+/B8TEBwPxp2Fw/2/12gyuiuB83oBC2wl0wSR8CdyLmkCd85ul9pvJOv6JtqFkou7UlrYx6gqIg26h++Lh0UFkl+0UZoAsgxu+lu2ou58hn6p5XO0C2hAhrHNqzkhnBxxlkpWm1Nko2qphx/W0ZhjKpw0pISFghF1+N4NpzEFuqB4tJvKWgXB2P+m1Nw7ZwKWiDmzdN1ReqjOxHOidVooB0IOlBB95JnZJigemAdyy2hT1tTtsnVji2kSKuwkpxfcT/VKex3BsXKGdR6oF4Pk6Ahy+uv7Kdelo6unsZvilkgW7XKLke/Jx/Ju905nXUwZOt3J10548Z1ydqjBvEBixUi0h2LZzsN6bOhJtpSxlhev8FnfJuDpk9u6PZnsR3SZ3idqSBy3Z5IV01VkGudbZglFjvxl+fWyOvUl3WWhVFx5prxBxJVllhknZo9R+t4OmBoIWyjmnrsmpZgfZ2K+yBxrphz0+nVBgmVsIBvGRkmejn5/hBlx0yv5t/kDtu+/BqCl6y+5n8KK11i2whVsqW9cRstW+eu1spuCV1i2pdx7/p54Wgm1o4Vz6NngRugZwvWzTFk2l591qftmOOnCkpG+vktvVl0tJ8adnzemTZ77u4Edgo2wYRsph5WB9+HctBnhtqOl9I2sqZkUWqw56sZ2DW9KNiDl0QupqdmnhjeRi15vzp5c2u7Zr2F7qdmfZ3qdvHm/qdiZu03mreljttkwVk82sadtARsoeyad2/R2G+36lh3WpsVjVWhkOspu5FJoxesE29IBhad9ad1k+zad+3FnPNtEnO6simRybO6FhwSN60enLt8+5jzWwxJyzOzcx8btjuWhAtz+1ycWkbmw/O4z+8rh5gB1t+2rBvxp96diGWghO1vVgDmq2Ovtl82OxQV9oOvt2qFe/RRwFR3SZg2MwL17XWr0WwbuhvKIg5/Q5nH1iKR7kZ6VBlHJ1FOnad+htiVhuplmzxwsBhW25BFiUuoO1hgRsidkVtugqaLBuJloLRliOxRh6pOnKZ+UdiCNrYtzm2p8OtgBrxp3Yx1ZVrp1/EJ4jWscx5n+zQprcO51Vo1B5n+t4Ww2BxicmQ220B8NWASNoA5k5umrMq12jfJz6Mmb15K2iMhmWB2qfW/hyIJ/0Og/xt5+sN2g6h8tJ+a4e1lxW5quRtJOyStrE+n0xDNmq2fboW3bu4ve5eWhP+jOdsNWENl94VjY5YW5hUpo/jFERj5RjYBqFpnQTJyxmOVnsC5M2u2dkktwzKIA53BW/Kk2/hlOdoGeoOOkE2sT+qoRhtm3oR4ORyHWki3DTxz+F9D2u+erD2qLZ7jeuS+zCB7oOhhuqGZvgTW6uzZ5yaRgd4Vg++1xgd4R9ZkPZwcxwpOvgBTN2nue7BJtlRofm/bm8jR6h2wzmoHmt6++K2zueoEV/jmzuenbh0+dxqOu317KpjvUiVh8oB7ttvpNhWdtPZy3plWd5TptWd9hMq4NzWdrXRuLZvBtoevA92gyug2duTlxK842dyW202dmhe82dnk+y2d2EU62d5Zt6R+g1225NwM19sx5Zx0n++R1V2dsrh6lO9SNr2d9PljbjJ6RghOwA8lERwOdnXm4Od3Tk0OdsN2kj+mUBgWpous5BdmJ+ouKJQB4buhOd5SupOdzJZrdVupuu6fPdW/BWrOd6Od3OduCJ9oQAud/fuoud+D+0gNjz54tOsq/bzxyudsyh0AspudqiO9SNhudjtt2udlud9GBo6AtBWqrRtTVncM4CZrHewFp7lWxq1n8xo62vyth7hkedmYu15l/VOzHKTq10LBmedvNR8WJhed4MOzYVoJsifNi9Ru15jedmkeqOF5r+2Kdxwx7plQeeiM8mtugWuk+d7pNtCiBll16hyv8r+t91O9Z5u5Wh+dwt2lWRiIiEHx3x2p0Zxqt0B4DBe1yx8AqVed/IJ+e8MsBw8h39CtKuiCN9esShe3TmleVw2eyV5kYO5S+7uOivOq+B7OtiZe2ZNi4eyiV+2drYW8MFwPhGF5uSpqpetmfD2h92drNxmVV9Ch2IlrCp2hRhTWvBd6oWgF+3fWgTm6NtmNWmlpwDJx32xiJ9UdoNWupdjkRrH1n0xLado1ZwfjVpO4NusCeyTpmHm1hdm8skQJsiemWBvR20/JnxJnhdz8e/iuzJW2DpyCd92cinRgNBq12//J3XB6MF5kR7lhqzkklB49RnNsOUp0tethRpHms9B46hyiecOBwjJ/yh7plAA2g3Fo7KSKeteWtcNmKBtbmts+mlxyIJ1cVvY2qb89xd5fWkKBBXB3sloOFoBkkjRmFdv72ncVmxdgWWs+dnJO92F4tmw7Jlhx6Qet1Og+dq/JiyWnFd/cBoqWhju/V2gLRqnenoZzue56x47hz1C2+dz0+iaBg/RgaBlgBqJd5Wd0RF1WdyDZh/WnwiDul3Q27+d3WdkEt3C21HnKkZppN4Bd9C20BduX28BdtbmyBd5cWlDhm2d1d+uBdna2lFMxBd1dF/BW/Gh7k7NBdj2dk5dri2ntOsaOv2d072gOdy1pwhd0Ie5ierGZ0hd4AhsOdmieh6CylO4FduOduhdrrRhhdmOV19UlT+xW59Od6Odjhd5BdrhdtOl7ZdnjGE5dl9+ite0ud7ZO0ZB0RdqqRqudvn8g12uRd6RdxZ52Rd+9moh2q12hRd67Zjudj9MrG1pUWi2fdRd7Ve/ud7Rd4bFkZuyNm/Rd7guwxdgvtkxd6edkxx8xd+ed8xdpedm7Nled4LB+xdhBBxxd1Nl5xdrEe1xdvLN/Fdgod9lxmlRnxd8+dnxd0B2wWN0RfOxBuse+WdsJdhrBqcWyr2xldvJBndZ5loOJdiq+keu4OtP92pWu3+dhTvf+dhV22quxC23iWkBduXxxDZzc+z6x4OJ4pdvZ5ns12Qps3m4R2gRt6pd3J1/4Jo2ctnmxpdt4WyMklpdhcZrdm0UFyIlzpdmZNl/lsNeqS1uSpgZd7jWoZdmcOv4xig2idW8Zdn6dtfh8Xe4bmmZd0cewa0j/+gg5+1ttOd1xxm5Nv9IPphk627yO271um+1hZ37uvZdvzmg5d3TuEfl49Bv1dypuk0F8wB7HjYohghWkRspudu5dnYN4re0+N2wF5sFo6ejudyMk6C2nKxxI2D3+852iw1rkZ3ZRiaJhs+oFd+1lkm+3u2sFd1NliFdwypoBksLx3/B0Mx+FdrWO7mNi1W5Fd7/J/mWtFdy6x/y1t2urFdn+B1xduth+tdkcNxtd0C+9aR3xd3DhgLRildlZWjtd3CZio+mfRak57DW86uqee87mgddgBx1Pe790sF13X2nZ2hh2qkV1jF1NloEVhvWhsdr52nhUrJd4Tpqrpos5z8B3s2p9e9BN3k+ijltBINJxiiNwBxkecndd5zhwdt/ddgMCk12pG17MdhJdftO/VFrM++QOo/esDO+u+7VdzFBkb23pdrRk7FOkFpqE+jcklpFyF5t9d8ukg82n75w1O79dhSMiRtv9dwSSVgxgg5pAqZn+5r+uvk1sOsiekuMzoW5kBgJC6Ddy7poehm91wKwN3lgGJlqdkRdqQOk8ew/+2DWj9p6/VtVJ0gNgc5rWezJW4re2NWeLW55drURkp+ehFoEJpK5xeu75d4KOpI1o5V5nh/LF8kW7w+jpurLpsedyfOsxt+Dt6Jp4MZzBW2muuedmRhpTmm29CGe6h+mxdjus2D2mAUM9RjaWyCWiGeh7h7edyVtr1OusJj4Nynmg++gjZ4+dlU2rZWmHtoFx+h27gffKto+doe2jPt8AqOupWld2/Kcp+xWdiJdullvTd2ee9Wdj+d6Ixp1W7WdmmesxtvWd3ldgBdypNxCxsC2625kZN/Jd3a1w5W6UhhqmuGpvGhnM22GeghZ/dWwo+s3B8nJpAWsMVgde94sr0htPBkXR+kkkLtkX5xvFs6WwFCiRWivOzNx664GHm+djeHR4Rd6HxtxxiIB/Bd3VduqV3k+jRBj1Jo0Fshdk1dqOdqhdi1dlhd+Od61dxZ521dt2Rh1d9xO5Bd51dr3FmY5vOd91dwud1Lhp7Mz1dlT+4Rd//JxhdwNdiRd3Tk5ud0NdyBeyudjrx/F58ONs8JvPe2wpzY5mMZqDurCJ9B+6+J8BfHNW/Wt3WW0Ap5YVt02/uQWahorBnsB6GMnqWkIN16h35ujGBkPZiQBxXN1bJzOB2Fdqqtrjdh/JgOhpk5h1O87dmXh+22niN98B1bt4XKZNRoCJzkFxgtgMV0Pty8h/FO/N0h4W2HdydF0jR5IQKNZ+i+4h1uYh7RWkZ+0L+jqO8vdxp2yRN2qcl42h8WiTFp32uy56zpzFO1UmF7W8x50I2wAJoDxmFYCAWneeoS27Bp+0JsmZ3Vu591+iutuO27BgZW/nW6bu+0FhWuuaklOR7IR/DO7ZJq/JoOxpae3wxoZV+12gRWoZ+7N2+rmi8WQy2xyem7u5hu9ZRxos0V+k9MsYu6CVjK+vRHIVl47h7BswwBvzBy6ZygGB/d6dxxgW9guyYJrdhwexoV1qw54/t7ZB4GNnqOh1ZhyZggRoElyop/ohz7F7cZ/su46WuEu3Yl6Qlvgp7m+1aBwFph1O2qcpPd3kd7k2pCdpy1xPpmnevz+ujeyuW326JlOzKBqEe2Pu0awbLt4geqvt+KFjbKUkR87+iNdvd23okuE+j3mtjpsXKXM1pP2zrU4NpoVzDZR2p0jcZTKBoot2Oe1Mp87+qLluV2k+svFOji2sutzpB8lRuHZy5+//dv6RmAdq+J/EOvAAjkpvC+4Wx4x+62fRWJ0c++lWwKB46pzxJry+luhzse5PMjYJlQtwg9nXB8/d87k3y+xMdwGJmgUHE+6yx4ZeqXpjfd9Uuv2RnFBhufd6F1aBxlVtqxj+1vqu31OuIiU356S+9Z+wvpuJe2UJpy1luR375oxZ3b2+KfYHsw3AbZp5mhtleivOhKuhGJ7RezathBNoOszcVx2J1vF/btgo2a2e/Ze0bZuoO3qUiSN1S+mfO9dBsQmZR+6It4ruxIeoFuhMJ4IO5+l5g9qHMh1exA91YZkOJx/W7LBmfkM0u/NBuRe/ohmVOpM8Nw9lG2vF++A9o7m+5k1aBle+koQG1N+eWvo9rhFvC+/Q59MV4GBh/m8tWQTRk3dxy23tBorV4kknfe38h//Mitu6z+0Meo/jHRRnl+zLOqoF8RJ+kkiAelhOssh5xJnY91aBoG+8+W3c6yeur9t7Ce3MB3Qkrk2xw947RmYu1nh2nm/HViD2sJOgbduy5wsetNx4o9z4x2U9UI9kZO12t1Itu+tkpRo0R+R2ukc/gO2Vx7Q9oKls9uonRy1kMy2zPu7Xx2ZRs92pCV5mW/Behfmoet9fJm/59T+jck6Nx3JxsVV4IWs1VvuV/gZ55LVFJ0fmjehx5JzkJyz1hyF4Y9/MZzpBphWyE9/22xu+4CV+FWj/KADW+afBK2s6+2IWhk92g9xl+qdR+6+45JwF++b+5E+meB1ZOlsloKp0B+vK29NWyBBvgRhAFsjt3f2sBB+iQG6JpCd6uBzWRkj+4q53AxpmxpZtnVC9ed8IJ9tBoustLBsloH5N1Jtd8B1ix2rWkRttvqUS2vusl6WzuuVhu4MercFlwJhJktSOp/h5KNxw0zIdj+BuD2y09+IBvRMga+pjKJbLBS+vcZCEJmd2ti52cd809veWoVWqKki09qHZgb2/yJ8B1/AOkA2TLWxptgYp2xk7pt2uu4mOwM9my5uX0s2N2qgJxpmiNtOu6ngVDV0iBkdp1KF4cW3ypgydkde65ttPBpZd/JWihp5ZtiGV0gUFNV5bB5Y1sAR1LB6K1uC2uoBs5xid1p8drH0n3Nvn8iI5nmp+d0x5t2o1PA9+eNzHN/FOqzOiF0uZtsbtkiWypt+TtssB7CFiEBt8sgDUlcirblo9R8DxzDR8Dt8ce/y+xo2gNpmqsxBBtBxjMlxz54dAaBO8GBq7eozRju25mljVW+qhltZyRpyPKaudkJt86eiRt5HxpU+4Rt/gO0CJ2rpuR2032mE2sjdssR4Be9oQadFlHBodKCmZpw+oTuwXesap1Nlr3R5Lu1pMld2yQ2sDBj/t31l5Idr8s+POoxu6PtmE5rptgYp72csWp6jUtrxb0ZjARr1Blo+mzRjjVvDWkzOmHm/GegmV2ER1IZ/YdwH+i9mkixzgZ4Mh67h0490K+gm1uphnGZxAdq3FzJxxCestm9o+hflgSti5NmTZirer52pTOmU+uadioR+BdhoW1k+iyFh3WpP+mc1ub2qjdnVBuZOlT0tfpi6k1tt1nVzM9rxB+W1tRHbnVvM92g++QJ242os9pCVks94R2hN156R2aUys92kWglWms9oR5s7Z5hWhs9zgN/Lco5JkKO1s97hO7nezs9105wwhxDtpFOn09mQujJOqht+GFkc93Vt/U9ic9ynmqc99PdpXmmS90SVk4xGtdjp2j9RqC9+mZqhtsH+htt/vjHgp7LZw+lmNp67Jvfxklh2eu3gRoxlk0d4/ey0tmwOz008+RvhtzIl+UNmal7YFmvtinxoIVo4Ojn+xe0wQ9/+txph8JZjLAU+OjURxiOmXZ7sWnT+g9RpzB2N10h+yxtjF23YZ1xp0nm509oPJuoexTfYJ2mnmtE7TVR2SZ+6hiu23qUt4+kg9q9ugQULSd/AtkZOg1tjFsgiOqbOr2gN92yTJmHWj5hypupnhhPZguoKNO2dZ9fd+CusE2ydxg69iGejTptz2qaR24WrwuhnWmZO71Vvld9dq/id/XJr9t/+e3gltoMi65/uu+pFmW2iVBoXpncej9p/65sDmrHm664UTO2qOgbKIRWwa92tMma29aRkcRkgqM2+mKOp/hjfu4gu0Ae/cC1aB7KtmoR04V75ZgXJ0ZFuSuz0Z0MZ+x2kcel4hnvKFT+26B1y9jNWyKFt/+tc5uL2/p2lixx5erWlmF+wptky+jt2kUh5HeuMUn5B7zB6me3GMGyuzkgKTVs9+zidvxx7bW9RBtbJoulgvdoqB4w1gBWkwBx6OpK9nkBpI5/ipPGJyPWqhx+NVivti2R0Heh327ruqTJubxYF05UJ2oV+kkh8+mL1ks5nvKLSdqxO93WsF0vPeisxpE217TB/JtdFjqB8G265l5L8jO17KNtqfNCezlFx+CtCepjOkv+urpj+ut5h42l+i91Zt8O2mg5ipZ24V/BOgE9g5UvJOg7R4Sd2tMpJWvhW3id5iJwO9+ctpeV1pRqLZlHV7gRvHexw54h2h0Nm/urU2ivYERxqiW37B7bmmCkHex2QN4qkiM8kRtuLckUWQfF6wJoB2j6pqQOsSe+DFr0l8O2l/p18h9fxoQJzhZx/ttVuuxfIAlxMZfJRo/OyvYPk9ocRluhhVW6B297xyzW/JW3tksKW7UB7IW6/kOphgL5uoevph4I520B7QFxrdme94Nd6H2xhl8mMu6h02Js8t73d3kWobV8sB/DR6Ehyxx7m2yiJkgTLBxr3+0ReicJtQJ+u9ij18lp+vxlxJk8d0Zuq/umh5ruxk4Fzw9NuujSRl3hs128tpuquny5qYFrg+5kkzEBokR1pMuU9tvmsheuCOgLO8Cd3lJmVwNHW1oV0B9tTWwb+qYet02kKBaxQHE9m1x1/u9AOrqs1dJx6O9c9ix+j1JxS+9k+tecbaljQ2QOJ/BOkZFi+d4DZfXWqttlHm9Shhm97IpyieMkWlaF7x5iid+Lp6QFsB91EZ1AW76lwd4Ok9mqBgJRg29vXKTNlomRyXWuq9ABWjx5nK2w3xj/KfWR272zTsJn2geV2dxultjtmtpZ2IVgE9omfCBOl5hoBeuFlqm92o+xI+rG1l3247h3Ne1QOgqBra9roBocunEpuqB53dgWO+YuvsRvEutHV9sJnuJ3RuhEplPR2KBlh1jwN2tOkZu0FO10+/Jhkoh3rO+IirSdzz1r8Jy72mEJsmuuTF2FeocJyn+3PR4spzsKAaeiCN3CMrqRpGO3TehFybG9xERtmhrTe6/kAQhtCJ9/KK6hucxyzW9k+9IxhAqRmW4Tmrt2vLmo2NmGhhzwL8lyeJ6LlgckwlwU7KAcFiXZqB1rOUbj+snNj95mXOke+lVutf1uxW73Z5R9sQVrYW3qhjLmuRZllxvRVjR96VwUONyPhiZRuGvCkesjF6LtgylqHheRuoZRnghy6lzfF44FjQ29al/i9yUWikVyEh4DO4ku+O9ypulje73Zk1B6ERrNx28Zq5e6vunp9n1ZYx++7Uy2h5W9k+J/0V/lsimRgyJ/uJq4h9Jl0LJtSJ1Vx7z2j3d5pNmWhy0O1wusox3M1jG9iX++Eu3k22LBkYQU2JxMJk3t1F+4et+dANEe90NovmooJ2Pu61Z5hpwCJna9rT+5t+uz2lQOnms5cZdUJtDW1Tmh5+jiRhaoi3Wqcdinxgkpp89689oHZy4ZcyUg493vkDPuktZ2dZlKtl12zre9DW+Nh2oOr1l4XJ+ye0Au0DVv/OzjR9LpjBu3k29Qe3F5ieBuNh2M23GJyz17Xxg+8jk96c+kKe3pB+N5oB034ByvOog9khhzpBmEWxGJml+7YB/Q9svxr4F2V9qotq0O/0VuxZ7gOl4OmZFkZRofUp48xK2hiQfrVlhtjtx5Bxi1WoRFhtlriZoA22l2549hShzg97NNjk9kfd2cO+stmxJ3mx+YBz72iVF5q9ApBojeq7Ro7WinhqYBs3Rlth/2gRKt0zW/wdx+Cl22omJviPbaRxERguV1buwzKHvV8eV1Y13ru9S7fGJ4udhlV8eV+UB4vmtGRgoidCNmBWvl+7Js6Cx2XZl9BlJJosclOtiVWnhuqMuzbOu4xvA9olRm5+8Tm3rJ6s2ho2vXmoN24rpwI5z0Wrn+xvBr624UBpz+shO02Fhgho66g7egGWisN7X1rnpx42tFuiHhns57x+tBu/4p7+O73d/uWo1exKVv19qwh9LWwOgNmsoINqOhhQUe2BjIJ2yR75ls8d2SZinFkE9h9d2q28E96l5tDWp8+8IJ3ae8oRhFSZGu9otlC2tqJjl+8Ot54FowkiFe9It88lk/kji2lMdkjtpas7wJ4qZgO9tk9vzU7YW8yUkCAdesSo98eViEp9fdrs012+vkew819fdgiu9D+hHhlFe0iUo5Nt7dgbdxDJ2D93AJqD9q+Ji3Wh1O7AUItRrnBjCdmC8rCdvQ9hPhzmco+W35xsXKEA92c+rs++Ppuy54J9jg2nBlrEehx6MPe6qBuy51/d5o9noR+49mC5k6Rgbm2guu1B3D96x9w4OqY2sGxmvlpeVzKhqNhrjJgE22AJlspjse0SRifNzDOthBry2j2WpkB+BxzURgj98yU+UO3ktp4FmLp5VtuGZDOhtD51P+4dt6wO+/hwAUPfZ/zd7A1uoWuX1ghW0zxv9soNF9muwIe7oejI02hW2J547ps8RjhZz9F4au/SRsCBwAWm1O6/umSUAK5gUWzsRoC9u5+oPdzH14GhxK8zdtn3NsDB+W1gK55wVjM95T9p/kih2o4hwxtqElr1OnqJyaJ3VBv3Bpy91huykB55u1z9x3J2yh+GelM9vOhvClkhWtCd2GOoIVvgJ57d2VR/0+s4x/bmrZtti23oR0E9nM9i9Z4tOlCeoTu/cOr2BvEO+9hp4Jpmh6ABokWkiu5TxnC2gLNxsx6Jt/Kthc9mI2nJQbWfEnKDl2zaJMgAUNJShrYxSEE21mCgrTF+VtsiAt3Ai4wFo44yDhmpX49NCdJF24LVetuwW3Qkzettb9uEiOBZ0BV8cDR3xJBZ/b93WZP782uy4/YDLBiv50GuBheyvOiSd8qO11WWAOmCezDl+CehO+7mRi6x79Rvrml3R9sWt+lvkF3qWkGVy2erF+2jNz6WlLmj9WkMBlQl6peo52gZ+3pZgV+tup3Be0qfb7uwG+ltNxjJgYNv9JxH9v901jUySFgcOkKO8rWvcd+QJ1zu7IWobm5pl78xzn54NeszpzJu1TXLDukDm5RZ++OqDm/Pt5PAAPRmwtj2tkxN6cW65d2r+0ue0+Bsuh/kO5J1ufmrMJ5kOiCkuufEvOvoVhC51VOmTx1CZnwOunWoMW6IlwSWi7e0Ux0TWy2974ljChnbh8dZtp5h9u5ruu41ti20UW9ZtqqOg8ZQylmsp2eFvNhy8FiDhy+B1WBpNtrn9ou5qM2t/BtrOvlRwtB5oainljmB+YdiEW7CligVzzO+N2mIFh/2/Yey152sh55ln/xumOrv1u4VrbW+e27P1pol5IWvUejeeqhRtTOxn9hItlKtiCR6v5lGW4Mhnvp0fey7+hiOogOjVO/jJqDx3OF3Dum4lsL4eM2rFZkzknq1gTm9Pxj/p1e107e59t9LUqR2i+OnTWxdewiWhOB1V2tP94dB50Rmo1zcBqMh3N5yU+sxuwfxiXM6s1kHO1+W7xhgEZr5e5Xm/hu2/mmYe/k2wUO1ft0uO1vBp6e7bWk41iMt33O2DV6OOqYBwuoRW+h/VmfWtnVlVh2NOtX51mBjvelkpr6Z9le6htkWB2sh0J51L17Tem0t6Cth154z5oSWorZrHOkt1twd+DNgd5/l2r0W8IxlsRn/Otl0udhsnVsPRloVtN2tAxuZVzI1u7Wh+R9GB7E1uzmdROxq2+GxhMW+5t6oQS01veR2X148OxuB5NJn9u9IB+v96nene54Yeou520hlru3Ul7tl5pBjClrrB5393J5z+1qr1ooW9qW5phig+7Fe8g3LtprsW4qfatev6lwRp2J5im2rDOoWWro1R8BoEBt/Bw7F4hW7s03eu81Fy054Uer21iHu+D2mn54nd5OWjZ215fOfpqaNtNetB1Iiup8OzoO+42gi+ivFx6Wzv5li9kMWxrO/HOrhFxg2gO22g2zPpkJ1re2qiJl4gT4R8jAZ9+2GexRhizOpP1x4Jpnd2SxwvBkRhz+OzD02T+hy+59p+M8+d08el07ZhdZ0+cySF1g+jru7C1yfm/tOl9WkVO4cRnaJ0v599l312o5ujLm9o+hqm/gOz/m9el88gTB+lP2laRosc+UNySFjO130xqO2oqRrXxipNmKR7mKOiVpPO4ZlyDFuv+jqZyxpt0x341/P2kvZjUBgrOoBNrsOkdOhIOtwNrQUWJBlqltCV9wJroJkKBwclrdpyul4/YKS2+CuijF9Wli357XWiXOw2O+fW0Ut6HWvQ+/jW7NOqz9jUeqFxtnhk5u1B1rWFkWBxDu+UWjPOoxekHes1NjaVvqB8tFv4FvnVsWB36Z961zPKf2O8P+rCWo/F5oh49mzNmg4ezl1khomAFw/JkUdguhsmGqrJ6Wus7W3/urdtzWR2nZ0WUyF112F7B+xK2rfkShltKugUdnuOoMqOBux8h+nl1DWqLWs82ui96JVxtZoiOy5Z8+R/X+1C2+d+5ol/Ft9gZ23h5rFiPdkl2sftpnF8OBipNqp+02Jt7Fn754b5x727tO6ZlipW4K57QOqp2gaktaeumJ4ZdzGBjYFy/+v7JxClkymBHlsvxzoeqo+h52qL52ydtEnD0F0kJsaxw4N2sWDLOskZn11xa55JuoCp86B4cBo8FqEV9DV+d04YV2Y2gJ1mxtprm3O2tuxqyB0cW38F/CRgPxnu11YBu7W0JJgADsthqMxLNRjP5jtuhFJrVFh1+wrhqFxtbzEAV4yhkZ23iOjtxr55gfunAh6H+vZs0PWmse3huyF2/W+l3B1Y97OfTaBwcZr8lluR52O7Hx0bRn8B9a2szFw0Rjol1AtszxgDxyUOia21Olxdm8pJk9h3YeiTR6Ueo/24h9hfOzRWy6x8r9q8uurx012xm2mb+rDeivmn1h+VOsONi1BwrZ1YZ5ltvtuhxVuee1uO5SW+r5kMWjk2kB9/2N2o++Lt7ndxDNkH+2Ju7qh6dN5B++5Wh7Vs65uER44OvOkjpOwnet7l2xZ5Qe73d5B+5EtzoWi8x0QOvDBu7F4OWh3OhIe9z95Su1RVm7Nkqejed7zxr9t7PeoqW3JdsYurYJgyuxHO1Hx4MV/HBrqV5rV04uhXtuD+/8sp3NlrhyLFm0NyR05tp9KO81Wh716HJo/27uO6m1l5eydd2s+8ut3G+nmp3LKVcO8KW3Yeyo23Y01JJ6Re7J22VJ18++IRu1dok8lOhprV1up5C5nXp/Apq4NuAV4xB1W1zXpjOe/D2uxBlQx1FhoaJj9u4SRmkR/ZRwPe2K+q7208Fxo5yZfJYewUswbm9sWvG2uj2s1Oyfx069j9B3r2j/l1RkOJWr0SbDhlHZ1fBhLOweB0fZ+JJoq5snV6/psARq152tuwOt7s+1nuvv+g+lxQBiLmuuptIOhDRwNt3A3Bqe825vPmsIiTq1haWixOxa2qoiakt2yexH2hvl8E+xTSKP57ONloOxoOu1u4HhgMFs5p3vm0Bl4Ch+g2qSBhCt7qO75Z5NshoB1w5vMeule7Qp9T1zNmuIR0sVsPxsPYcu5me16Ml7o29/plROnkR/It4hN2Sh7sWrpB4Ypwk+4cRoQD1Xuxq9qNhxYD4retCD7bZ9Ah6Tm46txzxoaeDHxi0hhMJqlh2Mx4XVkCRlS98oW9me/NBgfp1WV6Ol9k+tRti9Wzvx1YBpvl6b26WOt05j3hw2pg12gsBwc2mSZitR4D2rQUF425pOkp2qgWpwB1nJ1uJlrm3Bt3OViP+s1crYZ0vt8GJ36WlLBwR+hgd96xziV/gdvgJypO1bm/9RhU00nJngexgeihtkZJuuO8fkat+zyOmfFqKuuhxnEVodOkdu7Vp9BpjHC/wBuB2rl9lwZ3VW9g5tMZxNBvDlmYQPfB9Xlhy5w425qVl1urW1kCFhYJyOhmdRqZh94VuS2gdhr9V9Z+7UVsthuMUirZh1Zgn9goezCe4SRoA50d24TpqJ2/Be2VW/NO0Gxp/ujd1taemUpi+1MzsmdOgy2oSewSB32JrJuiFuuQN8505Y1hsDkc+0mJkUhvKhx/5gYF9Utmf1r+uq20ySW4lhi15t4dmYN582nRl8lpueh6U2zh59dM+52t6Oy/1u4VvP2ucR8hWva5vCe08BqHBtIOq0WtrVv+OOSe3ROvxO9aZ+/unFh3016X1y6ezIc3LFhke3t+tBFywuyvF7QB0RF5dhmCByjR77RvSW5h2u82kPmht29acob1pd2+aewUN+hp0mUurOug5l5ui0ek8B7JB33uvUu5t4Klhv5R1xRlb1+glvtm9Xl/LO+PBt792jWgnRl1+3JuxoOrnh5VBtFJ5LZujZxLZ4v9qhW19W2vh6YenP+7Mh1BO82Dz1Wnr5+W2sNOzZhmepusF0V2+Few8O5q9zsO8xB3LRbQ2kUe6+B55um12wU+mkW/SDtuO+KVhV10ju/LcsAh5WRs7dzs147hsSpuaW5fNiO2qJd2Ge7w++Nls/Rm6hsopu/OmZF6S+luFl8Bx89vCuygeu0Fnih6AhsSD9UN/Ds6NWuJpuB+jp55P+uKeza5g0+yd273l7CWrRfUw2ro1Ipugx2+YxnLVwgD1N2/7h29Ok7+vDBxIVwAZnLJsleiTWiER0nuz3Vx0Dmgl6J+8lx2TF57p3buuYD0+2uG2+0W6qV4kfT4Rm6Zzbmvte/wOm01poOiQ9rUl+PJ5cRoFZiHu9x5zM+2CeyblkA5jYsXehotW555gX29fdpH06kesIx7J25Z12UZljerrO3Ap56Ot8BnLeqfN3EO+vuuKOmalifhySW8NFgMWooRtMZqngVSlzj+mGluON1SZ/M2+AB/JNnm5ogtv6lqy20SB8qWkE1MgJ/U56vlhqe35Wh7VrLRpzdmGUnLe8y+kUh1cFjpF8MNqE29S2g0rEknTfWw+D1JluFu4i+8MN2pp1Kerpu+0DwfjNjuhHZvkhwDJ8+D9ac7j+wap0gFtaR0FO/ZRzxu8RD5/tqRN732y0BuG5nSOx++7rB75u0Pul8VmZeo2J+Yxv9ISYVi6B/3KL0O2j+uWFi+etTBjbpowVh6FxEO/ExyDp5VJm6d9DhkghjgW5tWgZWhPuyIl0XeyjF9PxpnmpUh23jQ0O+Xx+ed5tlu6+ntB+yR5O+/Ihh9ugCOq6O2dB9sW0Oxi2+kD2vDmyn+jz1lqZ7yF4Nm55e2v2je1rcFn9ttkO5Uho6OtBO5jp38N7IRgH2vv+w91vZZ+CpkAVv/jEZ2seh8oO1eD/PZqpFwkOmtp+HWgQkpj1if139W/vJ4iWy9+nxZrA++qDnmdwmRFzW6vOumOpv+7FWz32wYdgq91Y13rR90er/tj5F6xF8yFs4tw+FxxF1kWva29cuv6BvytyEWwH2uN0qxfa3eyhNoFu5JZ4u2h728i54S2uoAR+FwhD6FRwlx7aR8DJhh5gst6J1nv94gxmh1xolsIhxIV6Ap1E9nrNpu1wg+0F+nb2jY5a91go5mqmqLmviOs9W+K2gHRzGeo/Btj1i++tjTK0OnGVj2hwMdvGM94xsdAXvFlCJ6NW1k57CNm32g32+ftzkWoMNs1prJ5/NBiMOsh+4BBsHm7x+zXpiCpzz50ZurZFhB8qCFwqxkDWxzN6WR2ou2s+yjR9eB/qVtop8BWtPZ0EB1UV97hrTlofWmCuBcutWOjaJ+eeqAW7KV1oNyw2yJez8Vjf1z4k0I9h8W+aeg/+88d/5xx+FyqNwYJiuVki9ucVsP2iJOlLWgQ+r6uzbm95tjvZnprVBJ2o+xyWj8J18D+gVoulgqdkBhiC5D8NtmfUx+ySp9NO5sB/WlyGtxP5oZeqa284NpDx0uO7CN7i1ytBjNRiCR8CDsdW/cV8kDq0uhEeilBh52gyu1jhl8B00J015jwO4g12lt+iNuCW8a+gPm+uW2TRlYJzQu3rB49hrfUI8N5T8v8D1IVjMO/nOw0h5IF1xx6xtmQJzz5ya9kPZh4FuupQSW3ZuzROyUdujZivh4DVujtsEli8Rj9u4uVhOB+Ul6wJv42kKB41B59mnj1zJe6Be74OlYppDl25RhIejVD9nuzYBqv59GJs6xov9m8tyjlo1DyPKE1DkrWs1D/mB0q5y1D+Rh2khhOwW1Dn9WjtDhXl/9Ez0+gtDxvpvju4tDj+u0tDxHV4rFtUNhCpt626tDvDx0jWwnV4d+qbcnYpjqtyeFzte0Ot9tD6Te+J+rtD7CNntDkY5qFlgzl942iy5s7J4+90TmqVZ5/9hwpwYepo92hNqD2nEtrVRpS+theiiZudx+8uk89tldjMplZRt6+pmpgFuxTm+eNnap/VO8iJnqJmOpxcFi+Wo02sRF1TXCre9Tmxme1TXE3+8J2vP2iVW54l8c+zJlhbuwwSZ7thD2v6lgGlggJ+3O0PB/6xgM2nDWkEW9yuhjWyFWire6u9kaO0CxvHe7uOucxlVDxxDkWBz9h2yerW1sADr/98WOm6hyfKGSdjIWrqujVu/KO0k929lmvl8CFpg+vXhqZV4vJ2g+wYlo5Nk3F0nuyHB2JpkE1QYeyEhiFl8QOqlh9GVxUDpKenfhxwFuzW3Y03o+kG9mc2nKOs+OyN5taN74RxXBplhzcO6Hu3iewPx8L+zoB1423gxr3eh1+3xu1GphUBrcO9HJpTO4H+qE2zfHLvWjm97rBxoOlRumoB3DujFWzc2jRurnpiax49Jwq2kvh/ItkphvZU+LD8U5rBR9wdkiVko1ikeu9Wtwlyf24xJgoiApVw0RqitmBO1keieBz89rtJnV5pT2jZp1vRtsNyIug6OoXW09NlfBz0upyewSBj0F9eB50NtH+6zWywlvjD4Hxzn51Sx/Lc7Qx8vBmmh3KN8vBkQN7M++hWlZNwg9kn22S21k288WrWWlf2+vp3p58QRqV+69h/dWlEemt+plZkWO5n8OH9ghesUOy4tjmxsXVn8xud92ZpuNxnV52Oxv9Rhnhkdu7vexyujQRlMuiTWmqd9Fuu6evX16mR821uYh5gV5qNu5Oi0h69JjYO72B1YD8fh/eN+ghyeD3vRpqhiaWq3k6y5p/J5klpvewsNkY+jW2lFBtOOh91mnetDhonKHyJuGZe6l30trq2mRVw8xmc+ugFgSh3WD/Q5x1tzAB3YeoWWzA19w2xPW9sh09Vphl3DvKQDpppkyto3ulAR8xu/OO6l1/W1jx2pbF1VJmkJushthFpExq7D1IDxwD3oN3iZ8INrR2np1u31hhev4x6uJnltk2OpwF6UlsG26mtun9rIid5AN3W+D2szBpOPHV5xq5/QJhZZr5xkTx+ZDtne3HOiTWvGW/tkk8xhUeyN1ucx8j1k016v1xp9sq1yX9r/1kGWr9JtTWrXujAeo1ezM5j9RqGWxjU6MBogl0G28e5wH+wn9h2+32exuJwxJkiJ13D97cBTO3hux6F2g+zdh8Qdia2uGF1Ae4vWp2l7geslupsV9BW+rhmaRn8J0655BeurmgnKXipuVhprmpO9kGeqp+nEZx89vAJ9S94Ye1gxuf2ve+nP1ghhqPRhY9jt16r2moOi5W0/hoxdjeNsHmjVOmHm0S168+0CW9a23MO/YdybW52e3aW2Dd5Q8hfWofhvHu1tmqPl+AF/7xhfkMH5ul2qPekdZ+UR3dhy/u6vWwS5/khtgRv8OouesiBgmdteCgDU8B1kWDtO+q5c3Q28c1qotxiOkYQBhe8JhgzB8kuxT56kZw0RoJZlal3rxuYO+TR2kNuApiVel1upJu//lssxmHRyR+07u2Y84Et0HJ0Vumh10GF4Hu7ZV1u1mnhjohhsDqFZ5cO6Et+0u5M94ON9L2jgAKDhpA2zPKHa5l2hm78gi2hNxl/OsPF92F6g5nFBqalyjR321vFdpXk8QBl4pmrDvh28Ex6vJ3EZrcdpi+mFexxRsND8O+tkDmE2mXWrp1//ek4+31D5ohqKWjZl2nmxk17w+gPxuEu6+2xVum7NhjW5uBzNF6/F6MOjg2gj5ojpj+O0DOr1D4jW+7O42OlQOoB0wnZo1BgbBuIW7MW1xZ0VeqRF299uykhuF1UWlf1ikpkylmXDy5uox+1+5+zl0n9/COyrRt3BoqWr2l461vOD0I24Npp21k3mpQj8dJ96VofusXKcjRm1poKe25eheV3IiAlAaN1YsZ/gFtzVz9RhdlsGliuWo1Bm023qU21ew+etdRvMp46W/J+pUWlP+rs20dph5R77urm+sYJ2122NO1x9yi02r+8AOnQxjM2q7tvPx3qO4pJ+hB9x+/4RiFRr79xfuu7RyQO45djRWhGloDe0w+13JofBgt5vduvhJ+oppO59vpvI1njeyuN2t+8g54c9tGexZVvNBqX+5iOs+FxMe5OO+dZv+OE15/tujMlkBOoExmqx4Ye3+2mOWubxX/t+mWg9N3p5uAulT+2q+omOyvxwbDkqu5Th0LRjOxoqWzFl8Aekjx3zR5rZ+otg1JlgOnjWlH+2Z56NB1zlt79xKO1pFmr1/0uvrp4Mp4ce6cx0YO47Z6FR8dR6HeurNhuO3J2+/uwseow265O/5OykW7BlQ1u04BjgezDlmvdr6eptOsK+pXB01uzlW2ip6mJ4Zlr95uO28v2rdp4gJ0TmiCN84jzsu1n25UJ5l9mAjuvlhae/QW1Dl1XRsoOlPZsM2ytW3o+nFOs0em0dhh28Uh12Fx5VwT1qpZ2WDzIJ6m2+bVxYVrq5xnmpv2hPmsFDjAehVFkb25VOit+tae6QJ0c15N2s0RqfW2292NJphcpDJ1SW65FtEOgKel4B8te4lhruuwAO4s21c5oh97XZ/M24R91AtyCOzPVk8O9pk+dBwR+3hunjDlCFgMVykt0Q+9GpthO/9t8Itg4p/AWju29POx6RuH9wahmABs/Uzkjin2sEOucNmqOgJhssNpzNuZprbuozFvjxwAJwpV5rhx0N20l3xRmmh+fVobuo0ZvVR8M2lFF3118fNmqd9zJ1Ed7Nyolhz9RjcOucNscRhmFs+ui0thvO58Fvmllixpneynds+Ji0ls3+t2lpnegthhQJ+LZkYQHmDn3DgE2zte7/2twliChrthn4BtqtlRDuZp5++7wdqzeluphDWzjuxB2kGZ+Hm2pW182pgO55Le4du755QB9I5y2eqFF15u1FO+5u2IF4Cp4E10qh8jOkFNzWOuMB/r278ZxiOw5WhGV0RF62llZWnfDrHmq6ul8ttgpit8vMtIMk9QF3Gu6IOunN1A9sm9/3V1UWhJD2RBka2o3O+AW8Il1UW2kDgBO9t1wTR1hR4rNmm1gsj0vV/jVvvV4sVu9WrNexGF2ZpwMWskjnvVgShia2oR1j8l4Huz3xxgjo/19OW1mG+SltUjhDuwq25h53showO33O1WDw/x2f+inRnwx+0Drx5rVRgO2yjRoxenD5g9Noi2y/RnZe3tdxpukPZmVhiUu4aeuPd0yewld7RFhL9+u24Npwa57fWh8enO1rmtjLW11Op3ZweewYW1uerPVnafTxun3m7ipw12ihdviV832gvk2zF/SJqXZ4a24fWjce9bZoJBuJp922lAOsSjyTW2zF8LJm7V7eO5leyeDoD5hmJ552/GhqKtvYUl9R8h13K25H1gmu+p1oqtpD5h2d1n2oGp2sxuolj6D5QW9UjzIp0H5+JR1ze7dulvt8u2pbZ3qOkdOlkZ4GR0lN9Gu6M1juW1u2iqdxSZ2Wx2SxyIRhdxwvOzaB0wu4mexIBmCBxbt52e5sOzxgImW1LhrJV8T/C7m8RO00hoE5yg5z4uiCd85+tHJogpk1WnsV2gWhG9xhhgUOl08rJx9yVj6k5FN1Dm075/Be/Q5zRWwbWutx+sJobum4lyx6KyjwB+pwFnsBmyZmhZzj1qq1ilW8m187htEu3YV2rZjINxeRwg0vQ5g9h0VWuHhrThxml99ljn10DpoxRiXM5mxnBpg3Zg6Oi4ewF20W+9WB/8IOUxtOx7thx0D8U274p6PV2TFoKjufV1suuYO3U2+wOgw206ZzQugJugpJth50vRwPtxzmvouk5BjfZs1+nPe5SLXAB5PByixv2Nuajx42r5FykOoE50g+ky2yOupdm/dl5WeiI20tWqMjoQup8emHWtYjhtFpV2/DmgPB+VW3uVj0BzTuoNmil+hQWmDmjT22Et+phqnZrfZm9moP28KWosV93d39WrMe4whsxVxaV3dkuYFv1B3SxxsW4SRmvhs/mmTup5+sRlpFe4DVo7hnEZ9aDgye8m9gOVwEx0EJt6VvWO/Tuo2JzHJ+Aj951vDVpEO9FujM5rNesR1gUh+SD/+WiB9pSW09D95109tnPUIW5rs0mdJ3c62plpsZwvx1oW0V971mtEjmlx7wkuOVyW23eWpQutaphEp5ZevBM+kLVPe/f51iZ5YW7pNyPKIWVidhoqh2lBxpF4wqJzxzbKSUuvCVk+Wwy9+Bdw/WnsDvK1k127Clr6VsPxorh3eBgS90M1yhBiAe4TtkCJkBus8ejIW+ODwp2lZD3tJ+VO9VJ+IWgsRwyD0B9+2W8ft1x+4ftog5mADtAOjUe3s150t8w+/pVlZB7fVlCB2+F6dh9PlkNEZ1ukIO6FWiwVl5D98hggd5Ij6fu29V5097XWiLBpqOwBdrdp+uBwJZxHWzFRsMBrnB7Ce2nBh3M/MD8wu9jW7zZ/1p2m2sKFl8+vsej8ujZ2gDN54FyN5r8k+E1WJVwxxuZ23ZJhdBrg+vLO/XNiHm3hJ2IOn5VlZBo3e/DuyHe5oaok5pP5zI+wg+zk+sYV8Lu4RJ3qWhEV9A+2Ml15uvrp63h6X9/EV9JeiED1wBg7u/jloF1j5BgzBucxwOdfyC4+xV/JjN2yYuhYuqpZvcO1uW2gu4VN0Eu/wu7aly0l9k1iAu4Rlg31qgu66jsQ2sZVhTuzmZydOo7NqeOvu5y418wqclNvBj0VO/6ugguydNlHmxdJuIurzJgweqNN+Tu/VOlIVndRhgu4WVtXNgGh+Jexnm9yBxMx0BjyLNi/dnoR/OdWlN86vdFuqhj6wu1/+6K+6cuglN5muwJF8lN/6Wul9wRj8ejtXN8cFkS+21OrXO33vfGu2Je66lpBjvHOn6uhI1r1N1hJmBFqmekXN7/9ikQETNh4unFNx7RjCBiwutSW0c2luWmVwWFNgt5oaR3luy4WvYumTWp7t4+xTmeoEe4Yu1kelWR3cDj/m5guueO4GeyYu8SR/oxgDRgnl/4upP+xl9yspqsuwDZmhx7YulRjhQO+/O5Bj44hkLOj51wzOqsp5RjzoegCB8ejzFN4bBly+gzN9yj0mu3lu0khmkurMt/bNiHl1lW0mun3BzjNlwV8N2k8+NZxnYjoKt37IwVFnbmgpj7oj0c20vJ4Mu5qZ7bhhC563mwvVkAdjnBvyt8dF0rp0N+lFNi1u+4upCurl9+uu7ugQIbTLREolrjmrhtrTu16hyfKMIhl0uxit/GWgVWMWDmk+yNmsSBxAUNauiQ9jFdnjui3JlZj/4F15Zz1WpuehGD9htiAjy2+ph146xoCuk9hqnt3fD/2gV2um79mDFkqZ/oUknm4kWwmdiLZiAjniqIMV/tNjelxNernhsDhnnN5dRrFDK+xzpRoD54VOl5jgYjtiF4Il4LR64Ol1utLu32+jl1m3li9V30u2JpqegQZjsb+20p23epB5knmu+sjfO16h9x10xSXpqK0urDjOUu19NjMNhxu0KuoyZ6S+tnV9GBjidp9OqHNk8O1iumPALeh0WOto92bD6KW0Ku8kt4qBv3O6+29iurq1pKW9iuow+gB9wrV8tO5yunQp46OjnmlFNniuqDFsON8Se1fN6NBgWyMAp/8ILUuovln89yrRzbOl0u5G26dei9RxPW0vmnI2h0ujw++4tmrljMN1Yu4EMLUoP9xnpN8Gu5cOoA9pIuuaY1hj6Zjpip2r+/QWi1ur41x0u31+4Z2zh210e2+JhrJgakzCugNe2nNo7Wg6lyhZgUW9C2/qj+8u8dRt0289NmAjjQumdNsFe+9Nyk+ikuiUuzWBjw+l5W2JOnqZjupwQBlT1+yuhOJo155yut6CVEurBB9q1oPeohx/D2gV2kZjxyeg3NnxF+AOghF8S9lQOjnAIUul6jnZRhFtmkth7hi11lJWl0uzvRgKj7FjzktqD2oSWozW7FjtwhwL9+bV279/tjg9tvJOs0D04Ws1VqppicAPCB/ix3ljpRj/oh/653Lp6rOkJVvxjm4ul/O+Iu9SsmrNkkeqROyyup+e9qOoWu3zh8nN+cx03m0gWi7t5h+/qjqnN8fJ/tN8IxwqDg9Z/027Tlh6jyNjz5W4yuzaj1tNxFl96jq9Nhfto9N2ee7EuhYuic1prBm3uxIuzoe7me9PZW/O9+1lwkmBjxou3spp8NvTW4HtnDl8MuwV+0QpovmlztnjNwzOu9u39jp9Z6kF/65klN8yR8Mu03O4CWnsd9t58Iu8DjodKLdjiv2rjWg0ph6JquB95VrSu+BNsTR+yuu7Rjyu2mJwb2yyusQ+l4c08uv+NjEh3Nj0PWw3tv3OmEWyjj3v7cbNohfHKtOrVjCe9Uu6UenKdqtNpUW7iuj2tzKu+0ep69+YB7bAdVNyDR0PWnquvpu/TO/lNoMpw4VhGd/lNnxh5C2l4lxjm56uxPWrHturO57h+3Jh3t0b27Q5uKW0fNv6h2me69wUCusl16Lu7k56+J9ht8SVp1jrHms7KB3t3kowwluCu9Fjkfurkh/uQW0uiDusb23WxsvW1aN7uUtrxcWh/IDnMV4WFtyxjz+xdWuufZixj4Zt/mgBx2mxqitiy2smuuw2nzmwZlgvu4U9t4WojOwLt6zR4Md2vWqQenRR05e+Yhu31jj2jkR9Kh+jBsf+wQdo7Fspezkt/vjE+W5QFvGMoiF252tGBzVh88FoNjnAOw42hIBl+e15J/tWwGFq02yD20mjpLmgXDtiJqM+sPYVIlocB7uhkg+x0e4X+3oR4Sl4qp2oh+6WwiW1Wx8J1nCjnrtzLm5iWv0Vynl6sd+CWoPOyEeu+BpTVgkOkz2wrFpqOrkWtiht8et/5ggNvkknBOyeJ+8DjARgox5GNvQVrZp4oN1H+jCly+tqM+6ftigAMdusUBhrlk+juDRtDevLmyPuhrJtz5iuN8kO/tu582+9O7ZRwjxochlshq0F2Qx54l2uhgZu7sdyBWjVO1FWlEeyMqGTlgf5hNm7AWhqW7rmiWWz2Vrj2gnjwNJ2qOtUtlKuoDOwyBxM2qJW5SLTZ+r8xvKOwo14ad5NNsnjxOJjsR4+jnwhgg5g256TNt5W1FWrsu8G1h6j1qR1/9x613U2owB2DV2sh1cx5vdmw+0NB6rZsRl1ajlWBrrWz9uwpM5uV8BDgL1ksp3rmjK5uJ+iR59+KQehoTDtIO/le1XppmRg115sBkM+qSBsTW9Mjqa24he7ajl4lkM5q+5/3ejZegVOlHplgFs0Vv9IaTuyq2iYdppup4t5u15uOkwVlmesgF3lh20Duuj1XWju28yFmUW1upmwAFWlpj2og18bR+0Wv8JvHumvxzDZpnumIV15OhbR4B2xTZ/ixsDdxYl28R6ct6CWlAOmGBwG98AVszRwiW/WJ4xfRvOzATbC9le+wbDiFxPsR9zOrE1tC+nARx+x3sNun1l0Nx8B/ajvLD6+h7cW45pvmWhbBD028le+ZV+LR1fkTAllZ1/DB1tpsl1r/loTDitu3ke8G1yD2gSB9ee/Jhxousnuuf0rGO+Ihq1EYwh9Iif1e6DFyQ+vCjwiOhuO3bjvcd1lJtnlxGOxe5xXDg7O/l1xrerkWpJ28u116ekm2uYWv2ltEu3zJku1sMx29Zpfj+njzI2cse9x+xNFwWWzYus+W9LW3/2lZ2sTF7DJrw2+ApiafDn9vM+un2vL2ngckX295t7EsgS5rWOybmoxDlNykzO1nV3WO+ct4vNx8dm1JoIxyOOoapqXDybO1hVk39z79/l2ycpyhZqFZwehjvjsF2pmRgtWrCllF17jWw22xCj1i27mh+7+7bmn/WsHgFvuzrmm1ppmhzED6mF7stl1R/EtmO8o3BkG53wBwe1q+eplW+s5iuN2+t4NN6aOw5xwC5lR+jUB17+nHelv5iee5dhjODuDW1jppI5je5/ZVpX+wq25/xr5JmuZo6O0XelAhpy5loOw0Rg/J7B+g+1jldoiVmruns5vvOzk+8bpxBByxOrL28Se1FJAwhxiOyrW4YO4VB8L5+8jwQULFppBljeRiI2l3Zw0e9pev2F5Dd7Vh+DmmT2m7hzlu9h11dB/sl3QWgwh6VNwk++428wd2zhtmOyn1uVegdR9KOrF5lZe3WxjfKPl+rtWtIpsuWrY2iKR/6235ezXWoDN9rm/l2ptO23dhtBxrZwpMlL+2U2h4NnN2tnmucN+5e8Njx72hJj1Oj5Ktz7xibjghx4u5lvO+vj39OxvjpRhltZxPtv/UiY86at0HJ9/V01Fwne2oJ+T59gD4Ue3ihuhpt055pW355yKujmOxq22/Zl21j4F4L+s7JmTFz6V4Ye2Du8WO1/j0M249klSFz1AFKO565jcJzXmnvm3vRvLu7zO3cem/2i3e+g2iXx6UhgjehG2r3enFuyZMj+Uw/zWptrPts4lztui/O8TmwY2z8Nrjp0nj23Fwse/+uud+i1Z8BWiZF+Dp+zet/5xXJlyNbkFzjWnXB/gu25O3Dt6JcgKp2jezpl1YTxjUkyerSF7kNgcW9KN4Ye1d9ok80VFxPWnwx7tNiZWj2x5VJssuxM24299zO/XBpjWq/ljb5gO5pTRhr10outX53Lx0iNm9jnYlvQZ9YJ3w2b85qme6ApuDVvrR+Kt7se/Quv9uoYT9tppcJymMgRkvVR5fB7u50S92jBrXuzdhsh+m1uvXmvy98Ep/ixijFrCF38eyYW6MOmXRotWi9dv1O9iNnd27jWjeRqIj4Mhzduve+k1umUJ6hugNRhY9hv2hxRlRFzu2oAl5oem9s209k4W83p6cWyxFhUe1C+z52gBxrtW0QqC+e/DO+s2mtV46x9Npkt1+JZ6Kt0AOu5jgvmiTjpAVsAJjVWx7Zp3jnWR00V7UTrOW7IT6jVgGgaY1oTV13Jnk+lQ+j3hjjRqy2suO2ltpftoe1zvBhDh33xyiu+lFgEuuaYoZx73BqmezaF+dFo25lTu2lt435mMT0yFuMTwde5H2gpVzDjqCjxkW9Y2thW1YAbsBli+v5JvBpwyBgEW3SWsjeqZOoN2t7O7lulblzIpm824YV9PBoTOpsVxMpxHWwy2tFu8E2vjZpq2ywDzO27ie2ltmH2ssRunekcTtfc3bOjnRlHpvmhs8Tzqlhqk+kF5/m/CB0zF94WkLO9Fl2ipyruxcT7iD63j5exy02wETo+e5DW60ejaVsnjg8Tn4h9ul/wNxSWs8TwMh5fj4Ul+Bd/hOyMtwFpjX24f98S9/11PzEsk56Hl6oW/mO9Z+yap+8Nh8u6cpttO5eV9GFyUNtCT7idmPxyl1/M80TOpMFx6h5vx3r+iDdiUF3eBsY1lM5vae37Fzg14mKYVW0HFrux4JlscOpQe+w92057tFo+1mz2wkRjHhq/2i3W/9B9YNuG9/6DteejPmzMN5F8vjestm/MByzWvHu7YDrMJl+Fv7m5UWy/1iBBygh9ZB1jp+ael/9k8O8+Ft+Rky92yBoIF97lozR4vWyF1piu0LW35exs9iKRi7O4OW4nF6pWhxx3POl1u7PW6sRrB9p+pvSk1Ch/Yd+euz6Z+ZNoaln6d212r7lldRzwD2yxgvm9L+4mh1bW55xsFe6COpgNauts0Owg+sz5vgJ8DmoDdo2p3MkkOe7Oj+/5uO2hhe+2RtwN6CZ09lnSZuAFyF+1EW3dhqP5pTt8ChkZl86O9h+1YD9ThsTtg+Ozg5yPcsUhkZh6MNrPBvFewoOiYN3NpjNB/qhvcdtTBrlDxCR0B5qoOwIJ4MRzP58cZoulptDnmKAahlXB3qWz6B6xOxHB4hF/0O1y9miegxDr2j+DFwy24tO0XJ4UdpalgDUkE1dQF9juiI234hsl13WWp8e7ZNwGFnx5pXjhGj4q2pGj4e135Wk0B4Q2yyxjzWuJDnfVzhphEJ8rulSBy+l/iF/Du8PWm+h1Q+s8TnTByZug7OnEjp+h8/h/hOkNhmal/mx2lt+0xkg9ssugl+h6jxJVtl0w5D5+h1cxwxe7ExuTD9Mt03hoTFkVeo/lwc5qehkNDqKOkVBhpxo3h/Y59tyykNxfByJ1jPjjjmhfrLn+2Yj85c9AW4k+8L56ymI2Wl6uwze8Njq0xyL5uTe5VxzCJ+yVm0ltFevPuubB915pAJqZ5krVl6+77u0WtlMB6b+uHZ8R1onRq5YNQewn9xQ19le0xZv8xsFjutVndt9vu2R2hPj22NykO9Zuk3O4rNg1BsE5uZ1jyZoIFk5Fw8RxGT5uOgkVgTh3HOzSe8E+w7si4WsKF5tjvHhzlj8PpnOF3yBiqWmgtzSel+8b+BjAZort+YejhW1R9lG+z/p+P5+dtrKWrAT5P1y4pQ31nafbRWsmWg/W3Blv3OkG2hcqazO/Q2CQ+6NWo2T/LWzuN1Btpjm2VWiMO/tW97Zu++kAdkq5v0h83oSbZ855j6xhiO2V25Y5vMZpm5yvxz8VnHJpnmuITyu+ivm2/j42RjAZli9oI2p/jtA+zoR1cgLMT0FVx0+4Duj0Wqoj2DWk1Nj7Wh6Jggj+hfM2htWN7k298WtWe52NrQZk+lhv506h/BdnRRsLFk/J+tupyT6+tmsTwWB5Au1PuqPunJh4VW3qW9I50pe20+3VD9AT6T2vsWnQukcxwPk/l2lUOmthlq1qKh639srD85BobjzjVyEexFR0mj2ohqnj8yDkNDgOTnsToOTmUuohW0OTzcgFcT8FJypRx7phLjjIFtQJ0D2lU56zR2nRrF5rtO5+Ts6j1KfSepntJwjZxEOqTtuKOo2euQNsOWlTj3tujcj8kTnJuvDBjj2+HjhZDurJ09t7IRxnW4hVtfx79h8p+kfW5fhviJ341yQ+9hF14WvlD6XZ9SDg7W2DR6te8Z2zxuiVWo2WoxuyL+tjumYW2qDvmknStxT29vCOoF1Z2ovlxcZwFVv5uyP+3kWx8th+RhDlzyjl3+02TuhJ+T287hupx8dltle7JltJV+81wLNohZ28F7KOvrFuSe8p2kiVt3Bg7WxUlp4hw0h5at0s+pixlLFtip0fR6x5pH13BNvoT8vJpkT+sT7BssvZ2oR+KfB6j8Htqa0ytJjthxvFh+R1O13IF0at5ZD+gDgoTrGOj9etfjv7O5rh1A15EFsiWoN2wTRzxThLjqFJq85jvOuf2qrht55kJ+wUszOjiqeglWkPmljZwIx4rO7ouqnByolmn16+2qIF89BtcskmO1wR7Y2yt9/k7HnhtNVkPjumOppulPBndWtcN12jke+7zu64egQ5iEDg7W36J9l+tMZnlew/KapT0721N23VF0/hlMBm8T2V+z4h9MxzJRy4N71OpKJjpFgIW3YV+GBwvdjt2icJ2lV9HOjLjjgusn2hbj/y91oxm3Omdu2vWwKZyUOj/jkk+p3jvoQDaTqvBj7unG2jUuzMJxyOrNJlMuzH+hfpmdkgx1pGD4MhrXO/8TuDVmPW2h1vSj/iR3gukz56NBul5pa1gZe/BTzOjyie/0WtqW4Vhwh2z4e1MT2jjE6ZlCjsAJ5BDnTOtju28Oo+1zmTpqt4nRgyT/jKGdukWxkEtwOFz7x8cB6LtweV9mTy8W5FTkdUKJu0wurnh72Fx2NkjuuA+mw2RGj4Dug+92Lx/ZB7vWlJTjwO2Ch5iOwOt3pO36jpQkmDOk/u0q+h1B0xScBxm2NjsFzTO1+xm8Ts+kXGU90O2G28zR9XV9JV3v2+v24SOomBkOTmXu2zmrBx/Y2hkWvzW38Tp7FsYe57mwCTtg+g8TrFVwjOycTrShiCTs3F44Tx5Bl7B8je/sTgIRoSBzk1k4W5CT3A3ePOlQ+s3F/hhuDViTRnN2vl+n/NknNvS8juW4K+i9jypu4VN53WucNwnO4Be9GB6GTwdk0cTizDqM2+Tt/l2rjt3Sj0ZVkLerpuybj/oUzz2nLR2p18q1//l9Dlk2Vntpj0F7XMeCZ9VuxDu0cWid+yiTqDuxaN5EF0w+5sT1mOqYB00Ow65mw2Jodwa0hRTo5Tr3+sdp162kbumy50W5y4T7JOuDltxRr1ci0emk+q9pnDW5K1kqtuw+kmOyKthUl0yZu2JtCe/rlgSZu6Vm9D6yZzROzX28YWli+5NUJMZh61wjei+FmUt6Y0+eRtV160e3eDwBDiPR/V55pB5CFiNWgd1n6B+g222jtpVq3R46Oh4V9NOogt7aR5IO+FJAPehqkuwB64wHtDuGZQYW7yTnP9w4hvnRgRt9hpwVO2IR/dT0STij1weWotmrpl+3uig+heBh3gWktts+2ruhchkE2+UNqxOpZdluhx31jF9s6J6a+kMuwHl8+hMVhpKjy0UZSu/3dmUVjXu1gxuqR/Kt2u51qeqitg3ZtRB2Vx/xT3RJijNn2FviFpp14mOgdmhNm1sd1M9zWjshBsjl6pJ1nZo8pmr1z+FvFe8A+30W7euk/VqqOm/Blw9u+h1MOo2BsoOzyTygD+G1wCdpQB6BB79WyShkbW4P55gByt+1rjgNey7lk6uwlRgY+6q25ApgRt52tlVDyXZmrV20TosJm4e7+xqJO5WV+Ahgguu0F7A5r0WhCTq8VsP+z4j9lW4whgzKOLOpaD9gNuPW9XBh7uhk2iIJuTZrQF1oVxU++Zt15jy3KbA+mVVj5O1ehgcO+eW1Ijv72sFt8JR/JTyGl+a20il0LJuG2iMlzk5m2R9fKDaT8oBpmF6IOlNjwIxhNOjf5/i+4gWh6J2k2i3JucRi4WmKDqGT7IjomWtUZpKO6ZuwF246xndR/rNoK2k9Ogp2zbOn0hm+tvsT5WTgcT45ThB55wTobu+iJoL2p6Zme16cT0leptmucT57mhcThVTplJt02jTuM0BlkWy+D9VT2gh7cTkm2/uWsP90sFtQl+50oiF15FsJpmnj88T+tTyf5/lWrrT28T1R1weF8zRlPdpv2l8TsjZkbToWNj8T1J5r8TyuNscO38TzbDsIWrVTwmB0dN7UJw7jtsFuJhqnjuLezjWk1T1EZtoeYWD/HjzMpznul0R5pB8EV8qDmoxuf2iaR5F16OELITrI2XITp0dmnBzuTvLj7S2tAxr7jsrtqru5oTpLmnyN06jnkTwwBxoTwQJj7OpqUfqjlpFl5TyfZ/HTwcO2oTrIV2wpmtD89O43h0RT6ne8HZ1XW6B5/uW4bpho5ngUfrupGVt39h+pwuVkJOwWWy02rCx9xkxwT4cTjW59457fjozmvVTg/x5SWpARnPZlLms7e/UJhcgAwhiUWvE24bp/Fj/Heiuh/bJtne8wNq0+hNO4xOy3ulfj2c05pB23jOAh+olwYlkVDycR33jlP2r4tncx9oOmkJ11u809JVlr6u7HZro6hbWgu2qtZ0iprP+6Hlt6089O8iTn0T3IO5eTyT9rM+qZZxKjz98riT5nhjJBgO5ySxhidv411GN5Jh0iN1Mp4NTsrTkER9aOiDh4QRmw+rjtwnNjsB34u1bt3jJmTO7s07G+39BsZVykRkWR4mKULjuEl+9R7XML55/oDnpuoBFkgF0P+wkTh7WtjBrkp7+DyfppjW08Zp+l7CcwFWj3uyUuwcTgicg495yR7djs5OrDu+xNup2+0WqEO4cRxXO+j2ovJmJVrbWpix4v9+olzk+nR50LWny1nHJwe+8O23c9weu15Nsjkui9/Gd3/p9lejt2ieR1/Jnm2weWpj20O+2gd/uVzchlWeg6BuPc0HRv1l3Y99F216xq/T4O2r/1iTm7KW32xyGer+Tj/MpQkkf25iWrDmnvZnrzMe5z1TtecF4Rk5xh/p+618/N9+dxie/CehX16TOmpdmQpqP9yWfD2kmsJ9W+981mkWkOh3v7D1VgihmYh9fj3lN44T+XKFjOqCJ7p7cxeyIjrrVi3WmRVmGxzYTv0+9YT7/mknDwkTkNOhlWva2qX+5s58kTxDenTNlCevxh9I9wPTzRR+75kIJ6PO0ptv1T7AOr1Tzhlun2vP2qXF+IWqXh07kv7OiI2iYt4u5xbtrE15dOxvjqe12iTzHR/ON+vRvehvpD6ymbKJv7B78p1FjhipwGFmTFlsNzJ+m3JpFFseh8fjwh50zW6b15v9uQRHZ1ztRsY2zfJ37Zr7T/ZOg6pqHT7iWp39gWJqjuuM1kPRt/9hxZiEWhOwPVJsy2toexcBu7TkbRwiB19u6L29BZrN58jW73F/o+0U2ilWsnNhllie1oh5ucN0LTsrtjzl3thsHjiRxwxxt050HD4fBjq223p4i++t2m/VqxfEvO8FloDBsQe+UChUevVBz6FwL1l79qyO7ApimhrfBprVsY9//+9P1kolkeWrZlkb5iopuo2haj/Fx6ozzYlh1utAB+lhw4+wye93Wx+R/6FxpWyozpk2iPD59NumOq1W73jnnh951wju3R+iXOhpTiU+yE1q+eszum01wo5xpTqbZkpT5Cdxe0oUO4x5ptmlxWt8TpipxcTsvFvepxODiWOiy53q2z2Vge5kOJ+lBg4z4KO0i1gT51COjEtvZR60OpeDrg21JJul5xp927V/o1lsJ8Z1k/jkg+p6e6HhuNulOxvChxFT2IznDW1Wh/pxkHd1k27FOxr203upFulMp4+FvTRvFJkJBqbls/kIAlwmepN219u5DV3GNjXZisDxnlrueqYlizh+bN7WHNHp2/lpGDsch3HOvnp86j972wQzh8tmGTsZ2hTFl6u/rlsyZ7Ye22TlvWv45h6O7LTwTWoJT4UD5qpoaeSJ1lCj90R9FDgye7kZ1Vl9We69J7J21EpuIRwCOx6h6D10JJsoZlPu8OVlCj9MxnqD2qeydujbpxxBkNpoR5wT22X+kei5kzlHlsMlsgBpUl7nOgJ+vAD/vR+oO8Kd2TBgqV4qlwB2wmR6EW64zsPsrrW3VFyMW2G+5wepG+hdusKOxy2zAz0S20exwrJynWhZF/mezl5lR1v/VnPW4MT5qDvAt+PJ3TTplBgR2sv+iSxlLFghZ8luq3Znkp8jdn+1t60poF6I2t5DxeOn6Ttq+5gNgCujF2ztT9GV34u5MgUFFwYlxsxhwNgTmpu1v4l2hWmY+3Yhgo58NW/eN3t1z9m77xs/eheRm6j/ZhtSZ0KezZO+KxziD4i5qrm/AD1OW/OViulqIl251ighyVpv3+ocFxjpwYljXDpiNoFBkVD5a14L189TuOh2szpuj3dhjE14v990T4okvmelZ2smeyw+2D+v0TmM8n0u2y5t5Duru9MukoDn3OwXusoTnDmrMt3f1oANkvmhHTv525gRzDmryRw8t7r+64dknl0V1yDuvkp4ONoLh77uuBhyTZ93D7L5sYR/bW4fWooF1QNq8W+sTssVsjkmMh5bxoeWzsFgDem0d2mT3YDuot4PBtYjz5B81TwFV+eRmoVwOOghBywT6/VrYt3Rkd/mof2oU7Z4J2vWi61jO2hoh9y20bBzcOoVencTocBqNh0Hx8/NmU2/eDnZW4AtpjBp+2js++iz2olriem3V2W+tY1jE50IZ41lx6D3J1vIzrKkk15r11825q3uiYjrqhnXk/lxpch/TtteujAFj7jh0OjClmLugP242R7kOzANqH9wBTi9x2j+xFBrg2ohWoEz5cTqJ95ex0Lh4njj4RtIJyMpheupFOguT0P2s8T62faaDk3W1VO3q23r5iHuucptwhp3j8yxwI2vH2/FWib22JO8HR+51t4u3QT9su7Tx8hVzyR58xrxF9+9j5exYB0fN092v+2vE2/rRve11me3TkpsN1N55fepCV4tBmLh7o5jkJ8JBlMBwRWxw0ztey9WrFtkRVwNh132z5JmUd4uh7rZkA53Mz5q9ZgN7A5jF2tnVqad9yB3wOqMT6GdguFyFu+oTuul2oT22j9oTr6jpV1y2Ti/Rva17a9urTuR9+1HFgJiqWkCB/xF+wzp34ZpBpZO7oegth/K22floBRpNu+3R2g25J1xjm8nDxn56Q+3B92F9kWB/rVwYJq+28Ch2/2u/B7IDnMFq2Ol/Jw99l+FhpxnSTgeuoPxok8rKFgShvTu6K16IO7Q+mJuncWm78x8BqKh7J2tzD8X+qb+vFxhil/GdlFFtfd4B16wll8WyMZy/+uIRqF182T1tRlru8AR5tOh9F18jhLOrsAYmT3OT2NF51txGVoazoLD9wpu0e/+T88TtGjyFup3Zp+2xS28E2pIT8p+pqznoO5SWsKOgZW30zwZchzW0hDxnu0lp+Dp1jRruuxC132D6953gpwedvaut6O6Zel8Wq/Z5F5uI25D+sA5knpggdkBumCF5t4aL2t4p3+uvP+0CTvpDvT2qk237h47ZuAVt79tTurr2lgDzM+qvD1jpvz1+IZ44+yd1o52vzOipluTTzF5sMlrue3a14GzgdR761/TW0gxjCF5MzwdtojBpye811+a2vZZ6pd4X+27D8xu9h2+pVhsD4E2jSR6DlhgehOwfnJyqWpzukDm4YV1fVsyO6iB9NVkmO3gdxgRqCB/4BjeW/jJ81hkolqP5rO+mkO6mRiKWkh1/UO88l+Z224Wu4R1l50Gh44lgvkzxuq0WpITw4liRt5hF8/N6+eqWlgmzzRRoYJ0SWu2x3v+g4z4cd3YetaRrEW67eryh5LWwbDgJtg+5tmfSZO4SR88AEpT/Oe15jnd59WO5ITnHevYV40V7cutZlnMswMtwcR9r5gW5httzjDtKu4SRtLu/Itge16h+45Zp/e3FBucVsnmhVDuSzq4NwARizdrhfahfCmtsqfOup919iPupPlueDj70p7umCew0hs9jjFTwLNpx+o+jwYd9QBnsB/DjnOWrPungUNJ15tlkyVtMZ2DRqi5saDrQFo0O9jeo1ew4N49OlT51EWm0lqzDkNts9tsYWuZ2lzxtIiZH56vB51DyijkUe52jj1D1QUSkDytWwsDtKuv1D6kd0G20s+oNDzGl7Ohnm981WobxyND+ZZpN25jNk4+5I2jrJznBqX+kLBlND3Z2tNDzD+8691jd7ixq4NySF51D24dvLF94+1JtcQBzkpxn2yAOl797KOnGdjsWvQdwHe8Ce/LcrXOhpTmnhreW6yOr9DtcOuA5gTT8WjlP2vPTwk+60T87+34F7bxgSJmEaxxF/y2mgTucWm42pl2+2Wm/mgh2rbW54ltPTvkOhJj4yJkzOl3B3JN/GW1u2uTOvIOoAeyHF8Hj2rjwjx/5FuPB0B5rO+xtRvFe0QZwV9oLZ2yx7oFpwd1g24kNhDRq4Dr0lsYWwQThFYVYgXrKOhfBKJWM+dWZ3AetAWtZqVJzmgiKWZ2/Kf6JWWZhWZuWZuWZlKcNGBdYiORvIN6x6SzmC9x2YH04BZsfOUBZtQUQfkWOnQBV1em9AmtXXB1mk79v0wjemqBV+Az2sOiyDYqG+3Onglhdupzm5sOrpuzyRh/kAKelKuoEVs3Vg8doRu6yNmINgStlHBs/hs+97G2zPp8ZehPWi0D7KdIwVjF2lEemMW3hx25J7jJwgUG1W+0uyz+9yhmjSgVl84FhJe1NmtOdy0B9h2kVO41h062zMJjg+jAehcZ/eVmK2tbjnF2r8ZhFW9RVrhOu6u8NF95ulVW2cFo8ziNDpJDodBhG+jjClp9yOx7qz3gGbOVzqetIx1L+oChmgxlNt/5WwhT1I2j9mv9F+aphfsxcRwc5geu/Ax9djNCenQpqO2/7t6MFmvOy6+ksx4h96gx9G2rLh3UBmsp6fBrqO6PF8TOo3BwdBzfWxpeppUxvZ9f5hAOvixqzZkkuhC1tphzCtqzhosB6NN0tF3ih8524g+2SetnOnpFqhVg5RyXp0aO2cjrY92gNotJnN+qh1uw2uhpg1Bvzj251zljt8NwOR7+z/FzruWiJVzpewAR2Sx6+h3hN/uT5hWxKF3696r2m/QOsWxF97Nu8G5x1ukZz6kNy0pWSD6D9vsW04uvIzsJJrcW+aB3xRrojwuN6+lrcDpnhrQZ3Ap/DewJWxDuuAVkczslW1wBzKej6JmDNjRWmWtsjBxdFqyZ+0u3q5w9hzlFh1znVBuD+7SOp3NpJ9uL2jHByMjrMx012nXhmtVpL1nT1tw2GvO4NziNzxsWyaOmi526hnLe9A28bJqI5qujinjgWJrZzmymTjBtlVsmTsqffth/JN9lOiYFlZttAV+quyA+2c0jlV/Nuij1oYR+NF08etud4l9jEN3VF8tVxKdmDT7HmvxFsGxwyexWd+IhoI2/51kEW351+aB4ut2turbmmK+/njuNlzAOmZR4d23R9sdmskjjndgSh+LW4izvAx4Ch18ZSDOkA9hl54z+rEtjR96h2giZxlDoi5lTm04x4QVsXepChi+doCssnRriZsrDkQFgyVk12rW1nYN6blmaRk7xsF+x9V3Zx/yT/6tljmkz2k/Tmt5qSehBRyAOkgdpnJlY98053ENzru0+ugbKFLW2ye7X94lWkfd9jenDB9pZk2N7DOvNV+FsmEhp7Fz+Jt+zhDGT4Rs823Uel6+1bxsY+1uQT6Zw/lmqT4wZhjRnOOtUphQVkxxv1l4iRzB+0VVqCVuwBgFxMxRmpZ9sxyqe2Fepedj75ibxgMV6ZT3mxuyV5iRn5TtXFwah7kjjgN6+fbn9/OVu9O1W1qB+9Je8FT4tBkXhueWhEewRllT+ucNi7OtYtpgNcEuhD17aOx4V+7Bohi02WvXT6TsrKDlkewYehMBwR2sGe6+fFGejPRgze0PW/Shh+l9x5vytgtBpA5xzzu7WsslocWpV25uO3NJ3t5gNJo2esrOqegW/2gBt5llrcusgBxb1g8ZdyDvHR26V5ITmyB9Ekwg+3HOo8ZsXF/Bu6yOshloRBkNFzWNtBIXcTmSBibVsHp1KZ391gRh1UmQ8xuBx9tTguV/UhiaewIcuPp3+2/jJ9JxycFgoWkp2ouDpveyQ2s098Se3KpuT5/eujnKAT5rkV1Nl54Wl/O8gpnafMjJm9m9ue4fFpZty8u0S2iKFw/xsAhkgZ+LF4el46WkSl14Bis2y/e9QT7PWgGtudBo3BxSN/b1lIT6Gp/925WNkS+2FWpE5iPOqsx7uT5/WrOFxmxxM8poNjx295Tnr52mDhjerX2rIB7ITyqO3ju5U5jJuo+uvAxp1T6AO4A5/Dp779h/xo/jA+eruDpZDh1Z17ezAOjX2rcR4b5nq5zGR/OdEeffdluxTxslk5Fo5NukDod5tVxj8OyaehB1i3J6VD9FW46iiEj5IFx6J7i+7fdoRluBD4R9pSe0ye97lhEe4xWyZOscugfuqVTsWBujR0dV3Ml79ZucO1U+9wdmJR8VJ/xRwmFlFZ3Nl7vW/Mxqt2iruo8BrFxxUZpYh7Xp/T20kxlWpyCO1aO+EZ+cD8OV/gpkEZgc2/tz/mp755rgpkl20vmkj+rbho9J15jzAWtXuuBF8tlruD5rhjUe1OzpO5jfJsBO/JMplOtle4NZwnN1H90RVsMWw8di0zuQNzPKf62kP1oG2qjuteTgpJ6J2qDmjSt7gJkwN2QCktmrd2oNu2ZF4suzXWkmlt32weBiAV2Yu1+xx64OUp3gD10Oxzmga18iVysOqjVy2jhPt53e/UT7IO1y9iANtbm7IBnCVg3urylg9V6E51KJ5ST5iZse+kcZmTViSdvRthW1nNujPz9pcr1x4qD3TV04xsaezi2prRy/hh1W50h7ZBoZus+x/0O0jh41evkh9kZj2D6mMw7V0JexSZ01Owup/026ymKrj+iu+ZNwwWKQ299W54NtpWlKJ5oJtLBilF5b097l2o+stFvJuxQpiYN8z28w162Oydl2+u5HOjeWucxwGF+Dhj8JjzDpONh62+4phCFzeekdVoaSFMOgohzWp7BsjTpy017+Ws9truDryWj+NxTSJdTl49ht+p3eo3OqpOvQx4FR/ItmT2tlOi9Bx41ynVzNmlSB2kRpux+IuhjLe92gyc41C+Kzzcx0kxl/9pmD/+DmMe1vVtvmmC2h4V8LW+/V8Y2tv5lHVshO8a5oOes0D5Gz4UT6AhrDOp0Bi/j6yNvk58IWy9Nxn1nCW90N1yxi7R8lR5H1vtdtm19jDlsevjzu0liDMtylnYZ+BOgQW7QO12d8rux02halpbDrnBp1Fm8+xK15K0rTB/Bp+E1rDmlCjxAN+Yxv/u+euq2ph/JhixnAd8/e9M+7FJnSW/RhycehOFlF+pPRnOu1hzszlyuhg0JriF7FWulB3RRtdR4Ju0n+yzupp9gO+55d32+4RFpIlzZ9jzmlecAex7DdiMUm4+ucNocpiIFwRxzixkVznf+z7e8UesDe6gx3B1iRx9rBho1iSzyMW0sjk1Vkp17VhhGpwC51YAf+h3u+tNl6Nto6enkZ+kO0BuoXe8qZgyTwFpstBhxWhJOrMe6hNqL1vDD/M2mY+6Nu13p2kVmqga52695pZOwWxifDuGRyzZrG2koO0Ke1+JrRfZdZhG9pIWmu2r5zjmJ83oJE537ekyt9m+gIWtTKewl402xYNpvR54WnZZxGd2lWnG1vvBx5zqR29h21p5nEW6U+vBhuGl6q5i41vGlmelpFugbOmUT0y1z4us2eqUT7wDw1RtfxnwhoARgkz5YLgBs2SZn3O0rW55B9vZxmOy2embRty1g3ZlsW03uk1enIRyyRhJVpkT4FB1umhkx4fWyZx3DegdR1L2pfDFcTrdJ6jW++1xJO00j+xW6RxZEeipW4hh2kO7jNm/W7AFy5Jrzz+iV9rB+Oj/1WzxumQFi/V3CjkUhtUxmJtFjZmSJ2ELo0p/Jux5lzDjdiz4UD0ihsue57KIDlhEp2K+po9wA+0HDrc2w4GH5J6zR2IdpC+zid+juokB7GZzjOhxFmzxqMpvPVs5FghDhF2sShydxuvV/hBjj+rYWnH9yYO2ftqkjwH+vj99o+ikFosJiIp9ohwXxy5h5dVpBOqa97SJgu9wAe5ezuoTk4O6nljK2oeNlQ21+N2q+pA+6kFoF17O15095x223R3llj6pzhZ4kB6pWoah3XWqjM702ibtgI1jRV7tOg4NpMp+bRn923xd/8FsEenJuzGp0ah9BhhTtoKJt0BybFr0T3v+s9jySh+cFmoBpvOhOhjbWyFRqPB2H1qTR/IOyjtsPNq5BlDjtw2YDhx4Tt12+QDp6VzvxiPj/oFhHh9qu7SHLMOsF+p6N7KW7ML3P5wBu0EFtKjzNmr0Wn9e4GRkYznPejlht629azw75k15otT1MWrP51Dp/vx9lz4yplTzofT3rmgZ+u4Vo9BrzJhW+q0jjx2tZzqh1qp+9Bxyn+so5uDTm8xg1TmPKCL2h9m/jRlXjjs2m78nFFiXN6t+38us7lnI12bmz4u9l5jthrre2Wx9BhmsTrcLlAppRRpNpxRxieRzqpNDOoEh7CW9elhHN/tO3HOjgJnfBy4ToGk4gBqpDtpWgfukcJoMqEMrehfEhDotpmvB5EWhvpvkZ57UpnTjYO4uWu6Vyip4iphwd0ipimW7AFyil4cD+q95Ipuut0B4DBTyoU0jx2E08/JyCx6Gs+M9vse3bdqxliLBmE5qDNtw08/O9cjsWJ2LZ1+x8g3Dph10Nk3+pAF4AOj/FrPt/61r9++4zpg9qfZ+a9hwD3H9tIe0KWiMT1Kjks1nB9srD+vD+ODrrFhUjrVRn89zJWmE+k82rTlrRkl6D8aWiSZxSL9YL6K5x/myXe+8267h/NR4oJ2aUjkJ/xdk897UxrigVW5mQWu65+YhnxW8QW4Ke4Lmw2j5DWsaWlG1vQD1R27M26Almldppe4GO+mzlCuszx0Dp7ht1Rh7jJvCOxER2q2m8N4BW8fe00+1sOp7pi5eys1/5WlpF1vVsvlptJqYlrT23Ieqte3KesJt9QFhOR2cetORhwOkmN/8jhmRgkh/guhcd6zpqMzzYVlNy4ud08u+oR6Q97z+gqBzkt3/Rxh1xQ2/VQO5hvf1+UjhIB+Fh/wxhf2zNmnc+sQl8oB5R2oCJtWh4tp20+t41n5Vg8T2Vdu122Bu/Hz+4u+U16Olq5YIL265Zzfp8OtkUD2x2wALiPd2px64xp8R7HmwxxxRpoQDxIt3Dlg1tp6RqlVg0e4Mh5vRpeh3fNicB/+p67UpEJnJBt5W6hN5q1gE2jCTlAVnLtm6t59jxw0wLNjzTvDBpFe5vdwT5wYWpR9tlB0xus0W0qJ6zJ2KBuyWwRNu9Ot/Vnm0swVyizuWjn/kXABp9pm4+4HunkRmwh8de2GDxILMPYCQl32NwVpr6u0PZvPOzGRna96Vl73uxM2ypV5PNtecAjlpIzschrsuuuBx5RwnO+quxvx311pUBkW+xzF99Fo+1mcNtix85O1/2gw10Q5ylWi1NvVByMWw9u+Y2yAlpALy2twTuzHOm6BqVlrBZ49lhSlu2UnF8ss5ytuo9JxAdwLmjfJtox4XJjtD2t18/z66ertZgvmhkTkexkpZln8DPWgQRvLZmWT1MLzJ+xyF285uY2moFucB2U29FlsH1rIVq7BqMl+oTxcWu41/ShxylwQDkv1oBlw3epEOmne00j+Te58Ukh5hk2k3Fvpz7bDvdjhH987J0jmhfW2Oe7dzv3pk/Ojg+ufzsT2ze2irW2YW/mR38D3Apx/+ws1laZjbe96d+4VgAxnzms8j32d76OhJ+vht64F4KF1WFxyTq3m5zm7npy5ZwnOhIO+0FuXWwWWmsji4dykOwZD24p1x+tkhx6JwgpgOVwbRx39hNexIpq7W/rN9QW3HOg+piAjmLh6/NhRe0wu4iZ9wFnGZl4lrgOwYBo3W8cO915hOJ+BxlJDkd2iD59bl8l9w2L9D+xyl/OdUk5mwt7ol52J76zmS2w+5iP17kWwAet4un7dyFW8HOjmRnsB3A3O756AN5kutVVulFlxRl5T3sj7kWyc2oXu9EWxXT2Ylju2uN+wOO+xt1OtkVDnszkJW7p2rQUZbVwehjLT6x2iEjxgpvAJsAhofhiulgVW/BOiQV//Rp/hn3mzWeijmpqB84J675u3p5R+iYW4Oj69F30hxXeynu07zqGLjHClhd1ZhoIVkRe87+9nWq7jqbOmoxy6++72xYLvXAcNVuRBlwZjsxnel4b+oIF7Ql9P2vJW8423y++OpxEO2OLuNFs0h48W9+51kVuKdmilufFxZW/GB9jepMVnux9NexnDgjdthZ5CWkytl0W2lDsZ2vPVqP5mxz+vh7WNoazw8NhTSA92xDu6huzHd5RzxIVs9jmnujRutAJ47Z+/uySxiodt8ZxAZq8Zm3F2iDywF5QZ4eB6yZl9O0+ppHl5ktzDpqRO8te7ouk82v825jOpULuPWu7Zn/+jbp0cB/LuqXulXKWFOzLZ+fWsNpzbNkWBormyajg91wdmquu5L2vLp3IiQKjwlxyAOkaBwSDm9mkfTsYJqol702oWV6our5NoOtCrWopOk+Wtr9hQJ052h9mqLzxGVsG2zOxrqVzlFquj7HF0VT4rmovFzGlwuusQzgSJpXx/ZOw3jX2B8jW52x0Vzz8OkzuziukIx66Bh9mptOmPp3rO8phg2fFoWxbd+XpoRkkDujSzgXFuk+k4xHmjxEl+hfG9OvK+1yZ92cr29vZtme55ixu5T0y1tZ+w62u9mzXT/X03rmwtl8DF/yDt6O3+htGVgCh2Z2qRRqd20tu4Ej8Y51p2japisppBLqq9hpRr+e0GDobD3RujXDlrBvkh4KLhYNm9Dt0VryBhZOt/kHDJh5BgQN3EBrm+0l1p/hiH11V95kusoe+XZhk5ltOmaltIjiRWt3e0qOv65tb1gje7JR+xxysF3ZZ4Euozpw92mpU47x9qWtoj6AOwSBlK51oZrl+udF1qF3fNmpxmzh/PBmBhyKlwiW56Vj9uxLZ89V4rO/o164T9yNnm56B9h2LtLWijVnm0zxuvO10496WVryluyF8l9m8WouO5SWyceqe+rU5s6+oju2rhq9DrXB54Woj5uBpwrLJ4epATqbc8HTvoztjlpxxzl12UtwSpuFL2FZiRW6q1rqupvTnlz+k5tPBx/928x/qen/+wZDurOl6FlkW33J3g16nxGwR2r+rt+vejsxT5LN5qV47Zsj19xL6oW96t13dsWJs7ligVyReucR2RhnKV8VTz3Rtktxk+x8dzPm1PxkGF+zhov56FWsc50gOg/V4k1gCh1fO0Re/NJqy2vHO6Rkh355aD2jexS23zJ2Vx6Y5viW+7DyWV4xD08upyl1spv9e8O2pFJ8z201O+yh+ojgiF1IDsih4XTvYTup9hfWg4L0nVnTZ6uLz0z2uOxqz4fRh1Z1S+1k58KZ73OzT85hWwBWsme+1h3TF0/OrEOpfh4lWuHR2/9h9h6G94CxldLpmh7Oe1vVgDxlxRqt5wJWwJNgW5jozi0LqTT71Ng0l1xT08O/BdgBOhMJwfmlWjhB82aCT9lzQx23hwjl6I9zQuxPutPlojN7j0tEnA+lt9B4GezLRdU1ux9m78iWd7uVqMV++Dkkc0lupuplloaTFiaJ4jZ91e+8VzGRg7uvuun6h5ELsDxihhpDL/nezxe6DFyqW2KB5auqo+lqutejx4Ol+eqgO6+p+JLlp9vMexIllZNz2Ln3bTHujYL9XmnX1zKe4sTybmjVRmpupk2g11gRx5Fl4hBr3pk0elpDxZVu9+k9LvSF4+Wun8hkp9x1UGuZEN5wOq62u3dq5ehJj65Jtph91+1MLnKV8apjMhqppgG1vQRj9u1mhrBttpJ3J19KurMFpjm465kJ1xjp2SDune3Fu4bWjV2hjxxBD1uJ9NVrKWx5J/yhx4RnYDlytt2loyl17h0VLxvO2tLnWVkt4WcWgvh3/T1vetoOvjWhXFluz4W2uB5tiVoojmqpt620RZ7I1qZL8fTnNWZEVlxRuie8KZogeiZlycFpSehGtpXuogd/P5q2OqvVtOT7r+3ABst27oDzY1xfu7yVsyhilO+ye5AW7AFk716P1in1ie136lkzOu793hJ8wD2zN3n5mw2SkphHl8QZurJwa2rl99hT2NL2zF/P5vvlySe0f+9S54i5unu1Nxy323rj3QFhUFmsh6MOkg25e1iHzwj2jBLtip86Bw11kbRusj6ephWBtnOntR6bpz3+hPuv7egmDsYdo8LrbW7EJty1x5Zpix9nWn+Fqv+8XmkRZwWtl12tqutaLnHjzf1tdjHx5xE1q+e0NtoEBgpZy5ZqrZyO2rvDprm3yFtAZv/Z18xhOl3sx2R28EDqNT6ETl5upARu71wweg0cbaBhTLlm54suoMT4r5oYR7DwAFBg0cFLL5U2zzO6RzhGlkX5na5pozotZiDW4vJjW2zpukZOx7D8lxlOD+s5mCV1vRjPVpfWvZFnDt6zDmnJ8QZng5kfl6zJ+Zzim5o0++EZxHRpkF14WodLio9/axm9mxlBjNO7cdhqF4++nrW3GBvzWhRW79WuT5lI51H59Uz8vu0zLqtuhcRjnR+M2tdAKZL2aThRZ0/5gyh7+N4cesEls7Jiau1J5hPOgRuzcdvAu0m9goFruW7G+1QN1eT7Z270ZoF18xL7F2uNTzSOl4ej6TxON+3FsERsy504zlPO/EN581iPezXB9wNgMO/Kssq2pd941lhhBiHVn991/+34Nve58KLzh1o6WwkW6KLtRLpPV3J+zNVsPzz110ptpJ1q62p825CV1F5nYe/oLtJWx6+nARzyRzxW9DWnMhoa1yA9qPLwtD/P2n7FtUp0KL1oN45es/BFKLkx2xVl5ENnY2/Nu+LLnEem/2x29mOjjHCiHu+VWj9+osJwOOmtpwvznhZ5sh2Re1fxvF13rmh+O+vL3Zzqmz6Pkpoemoe9ac7Uljs1obz5/WjH25QBqpRsOd3spv8FiSt44ByQBk/x7QZvW+3y+hK9qSZg2unDJzgZluNgCB96LwtRi0J7/u/OOxo+qaN2q+ob1uqB+/Wk9mh4Wn4WmqDrNh/6OlG1yJe+FesLhlcFxEN09+2xV09W12dlc1+3Vgyu3mzilBlphgyLtoerL18qj5kWu9+ld+t4+k4t/YWkkOnkBn/V6kJxSZ1jhyyRojO2E1mQ1rU+yAJwrt63J/V2h+ltvm9DlsHpjUZhLFpNelSl47mkT9io23OpulZzXpkIWtM1zVR9DRlTN7Iuk22xQRnce0BO2QxuEBnJ9+92+AJqUU4iVomp81zjOFx+jlke1qO8FWoJJ1Xul22kE51IN29WrzxnNVjL1xjenSW2V2xjx4N9hwRoQD61RpDt4t57gr+jx8lK+LWmAWuDxy/hqNO5T+6rDta+mwhl9+8k2xERyxjj2W4dpmGhhGF2Dp+79wgRhct1x9nPz5NUWjRip2nsB9m+gUOodB6fW6nmip2gNenw2rgGCcep90jixuZjquurQW1q+jK92+JhArnGeyfh8Ypj6OtTT5JJ+HmkmVgPJvauvmp29L2wlqVV7TV7gRi1tuWBsOlj3WmYV5Zj6femkWgIeowrsq23FKbY1Q8OgJZxwDwdN+zNkEVlkTkr2oULzBZrT52Szg2W3s1wlFn4JheFnDt3ezv26Nf1wRO9jz8u26/TytZmZOm2NpeOvDB2Qdjk2+xdsGl9h2hku65Fgf2vcTvIWiGN9BJuLc2ft0/YH8z4KJ6g27muzn5mU05bV5j++LJ5VZufplH94hzya+sh+hL59Izh8Wlqes8RvPuiAtyXp5BhxrU7R8vD5z91o9ewG+zYd+Dp3qh5klx725gDimZzd5sVp6j++vh16engV+41yQdqCDvUN8uFlPWzjunrOunj8z12Ex/Vh2PJkDTk7u3pR+Y54ie1EL7CWjxlz3m3JLtvL4SFvs18zD58T7KB39zuIl95d+tm0PVgw1/ZV6Gz1t2wpu1TXFpFkDm/C1sHgbbzhsDxENvRZoVB3RejQx82Rnzj4XL8nTuDe/xhnojiIWk0mXWt2UWv5N7zO+dVxTST9epDtw8O1J5hvRr2gO8Njn1jhpjI23k+0nDnZp7VJjvL7K5wk+vIdwCtnAlkepmxD2Y8mXR6Uzs0FvyZ0VV7x1tOlwD50Ur0pp3LdxhJi4e/Q17EO7Nj8JFlqzwGFmtVqt2jtptRur6tiqj8jps7Ke9JzRRxDp5Me4XZpKW8gx0nDkW5y2Rqctr48mvO1zFkknSFRmMt5q2/zN0+c9+WqVZ2i+8Kt+XZ2/R91h6IxxEB5Fu4hx5sh9mlpqB9oZzPKTEuny2h2eu1BgRx3U2zsp+3OoG2x2O9W9hZu0WR8uhifO4tDqAenF+xRt8kOtt5/Zxrbxxct8xuytLi4848OrpOr++jJWrpFpFxuTx9A2x029NWqvpxmFliLvfR3WtqDzw0x9eO7le3/5wiN1D2kUh+dhjaZjCBmtu7wJn2W2krpXLh6208t5te0gp2QTkjWzGJsD261T+zNiF01RD5Y8lvZ2aNvIO0FLiF0lr9pN2l8eutJxO99tujGpiqWufuuCt/SO+crsh2s5TsnT1f9nvmov9lbjlnp98W1oNmJWgZOg08qUJxij92c0Qe8mz2Vx4qz5/ZgrOsNBqHhlLOn1+nL+x1utWt0mTzvWjje2pk0odhhV9CLktm5/x8KZyH52ExncBhCTgTu34DgApmc29VRlY+iZL9VhsTd4Lmo7W4Lm8ABre2u5OvQD5ydmCF/ix13W8OW0+x1N22ZWwFthku9VWi32x85qIRy3x4oiQ7+wk+6TJhzmgIT1JWwo9qmx4f13RJl9Dm9mhzTqJWx255K1tSR9sJlNVs+5wId+URqhWmoW2PuoSWmJl9Y228rp4F9CexIDomliKLiRWhvegvlrLWoPNkpL0T2x8dutl3A3HiB6W5qTR1ger7e8tOw+F7ishfzl4jn5Wl0NrLWiwu1ALtM+rJujr+1nejExvNuoHR3+l8G5roJxlekAz5srr8RhStkE+xoruIBtAt+GtxTR9WxqAtyt+3cTwGOhwDnSF8ED0cB4lO0iOuEtgsCU7KftJlAqU356bWs1xmiuqKDsxWh7Ws52tsZgMetcD9VB4fD8SujE5saxq3ppNN92MnihkzO4/N3WOwe+uW5mrWqpO+kVmEh+xRoFVyAV9AB9fD88OlQxyTWvTuvMN7fOj+urDOill6ROq5p6YQHDz/C98b580+9kRqBR12W84prcpj317/egIukknFbOtylw4l4gBy3+so2uSrjSB2U5g08lceyGe/zzwDR7MWmP++VlzS96me5SLbAevMtLQ9Dg93bR155joju7Rk+dzOx5HRncN+MUozF7gWg05gEh2F2hdWxYrwFWlvz4X+jw2oNRs526JJ4E1oF9zP0iH1xGWv69gUD7CN1EB1Iu6Ernthl3+zPuuSklzBls2gUO1KuyHL+GliZMmGhq1BxpfKH1tS1+Se2PTik17z+9r23eFgdOtA5+kxm75lytxMBlMr4I1x615I2wJO//Np9zglN4oly/+ryVnb+0LW03Rim1lse/ZxgorlftjQV+MN1dmlX+kSlkUWTi2gu2kpR6ZeqIt9Wt+wJ2gx5hW0YBl4DjZU7KhvP95NF/bh2WxqNOpHJmI+xxzv6Zmtu0QerpOoVBwOdC2fCh2kxO8nLoieiPlxor/e5nPW1pMrLWtdOhar8lJXLKT15+iltcOun5zmO2+Npphy358l1jVt3Z2sRBnU12Txnw2ofjpQd1JJzCNu8ziRWpchlY2mlOnMNjJTwv5vpOr/t2X+tdRiER+UNiVOhCh8dRwUZ1Dxk+gG9D6dey1h9iN3hwurOn0huvj/gDslNj7mvSrlw2g+TrDu55Bk5xh52ztx+RB7TJmqT4VB9eTumN0UW7sh/sBtJLqHM0x+iKeoGN8Ee1G9w/dyy2uy1mVVp+xzhh6yeywRi6rgKuqlBr3Om7F+cW3oR+Ce1xxvU+6uBg9Z7FFlIiXUulOu92fZzx1FdtcOnkT6bW7IBvSe5Vt13Wi9B/4j5pW8HBreeo7WqX+xcJvVNk4W9vR4NWh1N4Y2sZJvhAoVegTN35W3PlsIe9Wj2FW4cehU2s7Wmqdx+er1Bgij8Yht3x6aup5LSHR5qugc1sXtoc1/M80+Dr6T9oWi05p2V86Oou5p215FZj9u5mlmKD2me9BxpozmCFj8Wg8xkknN2B902vP9rkemvxy+e9/2s0rjpBoGWm1u+A1j6L0E1xbV2mppSR4VWlMBrKk+QAeXKbvOqzhsYpz0cuSrq0W+ze/J+k6ZxSl26BgIRw8Jo/l7A9xJpg3LmABjWB1Qexvm94Fn3OwG+9q+wgh2l9vYUj7Lr4TmAW109tH50Jh1tF12hjAOyVZhqmuwBqzz3wRvkdmNhraru4NiF0iLFkyJh3KbjOr+p2du7rFoerwkitB+8zO4gztpxk0LupMxRrtTKWer4ex6pZVFd9mu/hu1fB5/lsSLwtKBOl4/drfO5ssspBtRBjONjOrmXhlNjwjNxuF/gexGTvrRq4jhr2kxr/NziRWq1V0PYIyOkyVlGuvqTu6u8uLrn9n+r0QpgvkwwlzLxgZISJr4yp29uwn95u1hGt5ppqSB1vV6Et7IDoBly3DmoOz95oHljx28FZi/pjY81COlOusd53bF4prmO2i2Vnk+7t5neD9ujtd2nBrrbW7JrkHm2px7Brnr2rbWhar+RW45cuXlnJJlLm6SOr3lmhrlkrtwL0IZzEVvBdtPttvMqzZhOwbAe1TXedBwir0Tpyt++0TwGOhW2yTR2i1+u2wiBg8WpodhThuzttQOm6FnaZoxl2whteFg4Lgw2+419/NxRt+LO2Xj6IWxzmuEB3dOnCNju5hQxngW7N2pBUmWtrWO2jRzWt2i+1O9yZejCp55r1qLWPmpBe+aOqOBrBJh3J5Ukq2BkIJiGu1KtvO9pUvUkB0qj5BrzHKP1D3N2xoryBupMrrMD0D+7yVtr+zQNjwJx4R6DB7wT01B1OWs3Ore15I2jwO1bBgijm/1rhr4ZutDwSgeraDgajumD9a24nV8BWxTeu3Braeqa+4Hj+oi0ehxuWggd3hWsWewBW+uWwup+VurYRp485ixshtlsetHZsQp6y5kE5gqZ4IeiF+lHVwAOluJzvpxgDhx6MDxo2JnyV1jUgPBwBh2U16qVu3MomW/fW6kU78JuW98hNmtmpu191RlyNeM2rNVugl0t20XTxUW2uOw6+pUBy7tqqRjCxlArhqmhHBsi9pFZmEa3xkhqW5qRzi2/l2ql2j12wfpt19xs+nz9hfju5h3/eld1rtxzw2KTlmjml6B7Wr2Qu+HFqyzmO8rBZvwWuoW4r2jVlhJBu6iC2rk+W5i562r94slbD3cUyKLyTKM7J2PJ9wp6V2m/jKFs5i5/aNuG2mnu66u7gRs529Flrn9uH9krOrIdpH01OLl22CGfSx21mRnxjyMezsN2/Nswl4ph5whwXOnL2zkN4nm5JOgtr6NBt/O0NRu4jsn5/lZ91RigdY7xnEjwVeqRr0qt0IR9FL6nmnkOjmfGMVEOF5Y+yg2zD20CWy4+9+xlJsueMHsrhA+9RBh4u58rp1Z5it0/jodrqoiPVrsq1vsRo+Fvdrty989cqishAT/prrKknGV9Mu1u2ztTghD5G53XD4Sr4S2usB5iO+Et7NFy0B0EOlvxvLmzcgcxrpJL5f5l8LngJ2kRv1u2vD5N8ydPKDM1o51oOgl1kDm7Ae3AOgAVvpO/TWzEVo1e8Shn4DrnLtWJ6zx6vuv25nsz+ed3/1updpCezSVrWO+QJhNZ3A2uFF15Ji7upVO4dr9h+jI2y5ujeR4eOtJNg8W3Nr0o0n2xlp2uplJgBtdO9rBnSrhBx4HO2wJ+cWtTB7fd+qV66uu0Oyiu30O37+7n56lZ1HWgEWqiJnE27v+iuuxxBgDjL/KPsgBm5jE5syewWxvLNky2+yLth5lPOi81xrmtr+xely/TqhR2MpsZOpC2hbWg32sYWhtZ7x5+pevCDzp2l12ruhtTr2mpqA+iHmhfl6HBy/hzvumDpn510zRs1Bs8Rmh5uuRzHu5stuXDl0+qol0fNwqhiT9muJydOnJLt5WkLrudNkUZ3gN4iu7X5hU2xs9rLz5Lltjr3dkoDlu7l1JJqie8Ee7w28vdlk18tr/vphdrvVryuV66u5st+trwtt5senTWz8O+iTnLt885re17x1jndsip1VerSR/Dmt6pq2pmZpgqB2gdpBOtf1x4O45RrWdf5Wwvu/7Wqp+mfWt5h9x5sQpuADgYW7jO+sWger1JtDUxzHKFhdz9O8Zl0/20xr1pMmt5merq1Vmz29CWjvLvlewnunUZkEplPl3qBgTrniBoIl/FF1Pjmq1hpe3hzlEelpxiRJmD1sq/U5Zwyesbt2nJrcDrq11lZ9UZ/T53tu8f9/Bt43D2SOwzJrLrho2hU2v2R45j4bBuDl0C97iJqUe8rT3bOri+9A1wWrzjruRW7jr9eOyz9svJo0Z7Qr4OV/brybKScd0GFwn2/czykDlsT5AZzNj4AF6/d/xrgE2l3+j/W6JV5fm7bZlourNJytT3Md9Idy2WmaxmCW2zm2U2sTW9EFsmW0fN1TXO/DpodkNplBpwWrl0zkZu7tO1tB00Oid+vyeq+VtC10nKHHzumOkmBvx+ptrrfu/TWu05jzrjvF/JO4cjngesRDgDrmM0m/t4S2kDrymWsDr5izgMWyDrzg1pRr9w5lRr+oNtRr81p5exl9rp5LbjOs/dgwN+wF7qerbr5senbrw72vbrulV6erixro7r0HR5xZwUOo0Zpuz9lu6Wh3jro51iZuv3uwDrjFt0qr9rBhNZtgVwSNmY+xTx2bJq6pyTr4gJovlwxxwJVgiFnE2yShst2kEWlAegle7c1/M8+QJ31W50h2kNo9Jw4NxN16mVlWW7zujrhpn5lPRmxF6bmmpFj+Ur0rinNz2LzR2q128ot0OWw3rt3FkXrjZr/Tpg6W7Zr24W3Zr5KrtsuvWr6p96PdlNrsRVsX1ybD8TOvNJ5whxttrDsy/p2zF3LV3sOmnt4R+unNyGp+Dej3j0gOjOh+vx4GroGtmc9C7Bnf+lJBu9L3Fd0rx2Ruy5u/nWmqm3cUyiWpSlxHr1ukurWkXOrKe5Jdtdr/feoH2oYpp4x9Pe6MRv9R56+w4+x92pSlpSOlG++mF9pO4SkzpOnGW83rhdAOTm4/d/4jyOr3TV+Se4sukRRgArhxW/I5ncBgfxjHOwmh/3+0kxplezwrybO/B+0V28DuvJtkb5k/m9gpm82qOj1jW9BJ0/RqgTsVdujm3jp6PT+dr2EiymD67Urwem+t/tO4NZ6uF5Yz4QxgoxpaTlr2ulx/Xr6EV8phuTB7I51Fl8Dr7ZN4DT4T2q3ryqwUu26/Bo227k20Dx2VWhChkExhOrwLO7Y+vQ+riT8CN3/hmhL5D5wa9lt5Q72jQZqG2rGuroZgTug7r/3rkhr0k2wVWvx5pA+hEVlou+6e35zkYQVa5vAxhUU9/KJz22bhtwhqt29t0lf2wOx7Tu+YZ33r1xugyr8rT/2TmHe52W4cFsqRoTO8drrDUrcdxALz7m6Pr3CLmyOiRWqVusbNhah8fBnad6dBqFl5hu5WJrCs1oN3er7zOnMt/T9l42kgF/tOqmevmhyPcsRL9AlrG+75z6mTDTrhPMyYVqzzoF1lYOq7Li9r9TmrzW8irtL229r5gJoGuw5roVBshtpgW5YjsXVpkrpdx8ZrtyixB59kr6fpjiN+cWqmegmx9e15qZgiLo7Z1th1DddSWwz2sjewOWz61ngO2AOorm7h56+26DDgrDo5rzJVs7BifO/cDglO1cd1+z9SOxHLux1918nYp1ATvFu4hB0jLgyenFpvDVxNVrJel5L3wentRi7tu/1o/VzqhvojgyW+g98E0x2V/Bjlfx8927xD0ou7+e44dtfd9ej8/BnyN9K12ZjpfzyhfOupfWrxIDqVuwjT3ORq69jNrghxwTrpNAZfrgalnDm9CWyvZ3Hr2zOqCWt3Ju2r9qN/cB2Nri7tnGr4TJysZ7eOnWtlMR2JV4ZluSdia2joh1pJrP2scRt5D1VMgR879rnGd6hr5f54G2u6BuLchWVskOrigAYpqCNyUWoEbxZrv3h7+e88gSt+042mKrtu+7I2uMh4jr3mBwvCZKr219+0t6t9kZunD21c+gAtqcR/IJpvj6+0s6TuI1mdh5Txu21iRWs8Rxb246O3HWxa1gTu5p2+0ZwCF+cW2lF1XW/wd35OnfkGE5hP+h21+CB3Vyy/+3Uh4SO8VJpyFuZ2ve18uKJbLdj+t8RmYbwE21dB6+rlCBi6h/6+qegUyOnjTogT0ZWyOOqne9Qrvg++5C58Uj+O65Z1yBizhtvTmeU819sFzjA1qn22pV53ptQ+9x3BfmwcD71mq9thd17V92nmny5zfe7XukzNrQZ5NzuLJqcN+o+sox4CliCR6qhtutrsjjOF4t+mnx0OW8SWzqxza+pVR+/B+lRrpRmVZ7W+7z99algGT1cV82e7criij2CZ7Hm1mDgXZ7Kdgi2mMhj/dszZv6hkYbtQL3x++dm/Be+vZ2Nr7iOqTVto502Rnt18SR4levaxqyrwZsxXj3Z2/nj0l1zpes5F+mD8nFohTv9RvOplClxeLqb2wWWjLRyjz6nkhJll9t7wdlMRlFTnu2i0tl8Rzwh0DJvacgl1uzrgWVyGhl6rrzL1R9291i1V9qJ6eD78xmMMml+xyusFu2XZ4urxyOlh+kp9gpfaT+8iLmN2i7m/pevXh+420TOlWe8Eeiq5rl9luWvPJwB226t1gx0NBvZtou5kerp8O+UNvXmx+h6U2ioVptmzAO0SBxmdhCO2IBhqe3Aen9OjCTt3rk+LwhLz3rkhh3brsTOgnrpALlHrl6fcQB2jVknDi4+6Hu2aVny5iV21zBhO2n52xyOybt5qRhtu6kz//pwBey+Tz5W3lO/vBnce8rmos94XsjZ1wBlzMWnSR6wlxA59ee7aRp1F10Jujl/cetu50rekXh3yewcxghOsK++rVuD+mMty2Jqf17u259Oj/jp6JgUO1bBhG2xlWg+2hStvnxzsOp/hsBe7eh5RdghOnkrvGWn+WxeJj0pxTckXL5jh/yesJ21ANmae6tLnMt5/eiI2AiOvHL9ac7HDqgWlROtxDxaO2qp7uJqY1hjRiRhmY+xJR1Dp4VW9XriiFjYu/EroNxoRzrnL/DjpBuwDr0Sro3rqYNmlO85z8/N0MWp7xzg1yir8seyIt23rjT++3r/LVn2x4mKT0tzwR9Te9fh9m15Q+nUNpTkxeWopBnwNzyjxBL0Rzog52trm4+tdO7obgTu6t1ljrhxetBOsCt9CbrRdmrugz15tWtrL5mL4s16xW0sV49x9SD0+puADrr5xM8rrVzABurJx3x5UJqeOhDVpcB6Ah5JBuuBsFrx4V3OB/6O6ORzDvPCWonBn1R3tR/7x2sWeGxs722l15BeuJB5Shga5xTRkZzkb5y728j1qYromO3gpm0d3iNxiJjzOnF8wOBo8No4GBmRXoD8vKQ75y5Ooolh+Lh0rsmlhUerSR8fOgH9pXhrfumDewfZ9eF1Xp0xLzETlWWs8Lqbu67loJLt3WpHursO22zgFB5vL9+zrMF1XlnJ9lADhWjrVukgqRJeuxujH1rlJy4Jk3mwwe3AWlrmggRjyThGs8NVopuykJ7Xmq0O6s26oRp1WlU+/j2vgW/H17MO+dmj/j1T2tzL4O9lwOvSduxh5DRg62xuizBz0AO5phmDN3ERoUjksF74OlrBjg+opdmue4lOrHet3W6cVvNeiqFmXL5jp7Ap6BBzoOgG11jt/e2ivx52OwgRzG+qA5nbjzcNvxlrBT/LcmqO2Bp66emcZthlsG2779plB7Lp0Xxp1u3r+1wRyI5t0Ni8xuke3jOpFFsip+GRwKziUF5wx2JZ0VTg0cTwj8t21PdAN16t2tR2rW0ePeqfjbfbY6O/72qd9+PhiIJiGu4sR8tOkThlecYLWwrZroRo3JudNqjOjRuokFkmlqDu/fOooZ75xT7xo1evrBuIFprJnDOqaBlMuolL7x+8Hx8HT3PujmOoUWwKZnXu9Zrn89iZL6X21EW4ir5DUqAWxEO1obmyMvSFkCeoSes+e8vBxY23R+z8OlSFtNusxsoMN1rr4v947ZgH2rjFm5t8zzokWzJJjbD1HTh1erfBvXZ9LW4U2sIh6txwDR4E233r9IdvDOvvt21e13rjbrgoh4BeiLpyrTyHuyer80bnyJqSbkHugEuyF52rZ2ktoSunENxa5vjr6cO6JBniBl/xhFd0UJl+rmkOt+r5PrrTLtr914ZxfDhPuseulHOtklzlW4j+hprgObmCbgKtlMVzZx0+cxvFlQhi92mFhmpr4UZ15VwXh7thucNrpO28j1yBtIBx/ryTulHr7s0qaehsO+i+lZNtMp2E0mND6bmtUmWaxlp2uIbqebxIb8kV5IbwYds4O7zVmXuhJjox1h2ewYWn41s82/VQWG2oORhCOuj2kZRt3x7oeu4O8+zrIMud+k95+ed6B9tlBnB1lQb8xUrblkurqtOrn9rUFkUW9nW5VxyED8OxooOzDemr2kJZnbW4AZupMoRWsjuu2tx/rxFW8i873xuI2o0ZmiBj72ochtb5sZ1x5uq1V3D2hFJc0b3W1h8uo0Onu5wm52f95Ee5xJr/9sN2kPF9MF1wb5NTr2Jn0ThfzucNjdRgz1ry5w6bt7uswb1uQTtr3Lx/xRqkptEW42RqSNzAb7Qr18Bgpbudro/+hPrk+LkRO1StmKj18ej8liuWhzdjwziNrtYDk2b1Wj5Tpk/YbFD5xb4HW8dJo1ViLZrb+hwbm4LpSNrYW98txgh5EN+YZhhdwkZ8+t5n2oIBg7t2fO/352dr7eZn820Zb4sU3F5g52mUxqYug8ewKwSrZ2iOnJZ/8hgNd5bWpStobe7kN4n1x2WpfWo128eujYtqMulA+gyLz3BjejuU1oULkE23vdkgZgMj5Ijzpu+BO9oOpTe4MVkfujfj/azn/kGeBjvR/l59yl1spo52scRhJDpWz86h4KNtiWuvJxrxvQFw6b5CFu/rlIiUOx4COrRFp5F05z07OwUO4COwNTi4+jHWt/OjDL3HrkylnEjznd0hbkyl6Bz4r2yQJrn91CFtebnI+wyRihuv1lx/z0Q+kfpxb18jekP1kbl2cO1Rx3mRw9uxRxlGT1FO0EWhlWmCe43hoqt5x9qHr3E1wyx7oFusZ8trvY59Hh02uho23jrt3+7oZ/xR8iO8trw3pmrrgie3k1gnFjLRwOFooJjTF3NWy0einNwPsttjxUBpIz2Kenu5+CpsMZGCeh+O4cB33roQqUMu9f0+927PKdhx2/x9YOxFusjm631nu19pOg+Os/e4ab2NWJAz2rpiiOxdRmcdvvOrU56+16pL88FpSDv6snze7Q25m+pL15Bt2FWqp+9kZt6Bkwbrs0gUBH1jjQdohby82mntuie4rrhktqIb1M6m7ro3rqcz0Vb98hzHzwZ1oMZ+GD2Wj+tz3tu+xb+IOxmW3LRsc2gBtgADuDupZOvA21sDjOfLyuzdt6f9+buvrJx714xW/NV/z53NrvY2/n+oPr9fVuL27z+67B2rZ/wu3NrhRBoVb+QWrIbgOr+k28kVztB+z27Dhmrm9Y5l/lrsL9MLn8BhjWxw518ewEOgtps653+O2Ae8mlmIxuTd48O9VRhSJznRgCRjUJl0N0+bm0dl212MZx+Fz7mpJL6irm8O3Pm/XuzCru+xobTxEF6QW8WbpzZww14B54SJ3kD+CFgZ11nx8EtzWO9XmoTBi+VsfzuYzy3+xBTpR1kNt9Mdlx5/YW1VOsae9ar0OtQkt0ZLkyl38eyt+pdD8o2UdJonu5SRh8Wq6OoIDuYW1zusx10/jlc2j8r5Q03FbuhrthLn7Un9ZiXT3rmhy+u9T/sF+AL6W52kBqTr4R27q59eJhzNgjBs2rqGbxfr+nFmNblaIAteq1b1VLotrpJNyMUs1W02ugU5ytrgVbyUhtYC0qtiMNuM+/Z2oDOm1uw1u81V5derZ+nPT4Ye9H53Oxt8Os3usFjpnVm7ti4j+thkI+4r2kves0bqbB3yWgIbpKfSLbwvt8iepq+qduMgj3hbi2fd+WyZez72gxrxPmzVRplbutRqzby5k/z5qtr5loaR+uIBjmRo3ewTTkRronVkZu0ftmuW/Levjzgs2ndZ+Zj9qpvI1mTR2u+kir8XrpT1jqb0Z0w3r1uQdx1XvkQaOiopp1R2jeiQ5l2Nmux7tbmk2hAJ3v20nD2M+vzD90L4FtzsF0Fevx0FaxnbDzIklzpt7xkru81p53zpA24dZ2JBgjekfDv0Orcu5kZmthsBtmBTz/D9sx29J2qe7xTinp8k28MLmnZhzW0GuMe9mvZu+hwDZlPOnrzdQ+4ge4QUWM96M553mmWt58r+6+pTr1PtgNevz19j55nOqzBqkbwV28WRsQDkUDtVZiqrkXOoRp2JRznjl4l1MR4u5jI+uiRvDOkOl/a0vl+/OdS1kGL9pZx/gQBL2+Pt5WjwGNofR4Fhwnb0Q1+LNgsd2n21aNj4h5QuqI14btlL+uQ18tW7tO0ZhuDW4YJ1bmvy2+Qx0IZmMLmJlxcW8rN2Cz8rN+Gx4nxuIRzaL4dV3HmrmNj9m935sqRgZVlw1ooWz6ZhN1qzV5CTmL2xjW3HbopWwdJ/zluT2qNr2QO8nbzqV+oL6IiMvjjXZ3eF2Dzmmplb5jqJt/J9tZkX58ru8eOlltnwLyB132Gi8r8npo7W58djCT5mN4NBldh/hBhst2asowu1mz0Wdvd5lels8LyxjxKluXOk0OwROn7Tn308h1Vjd4Fh4JTwGVgK5uuu44joi19KOp8J8Met8e/EZ0XWhfOo3Wtwp20Bu9Nh8p2/N7Qe+ejxhlvg+hWk+bTtN5+1Rmlr6Sew+1ofx8WOg5lxor6zZwqrhWpoCL6qewM1mDJn9Ohz99N5yy9niL0eJjTxwG2+2B0zetrBpDWl72oMtjQqMAD8xR/5+vHu6rziXb57plcVpnJs013kVwIkrCF5rhqVT4tB8U23ONplhlGe0I2xq2luW7Qxr3popLh3JjTu+CUzWJiH1pabw0WnMtmuV8C52nhofjVwjiQ98Kdnxj5qphkVukt6uz8Nu5sh0m1kWj1zm3UtioeyvWi/2pmDjf5jSJwyzrWdDpRlnezPZ89N7921dmr0W3m+iN2qgNzV5kTmrlZivm9Tl60OgHZl4Bznekvh7upwPk/EDgHDqxVrbWntBpX2xzzi0OytT4zp3bly9WjDh1kTkdhradtBujyj7IRrwercRob270O9uunM+1r21TFsvxjq9ipW2NVso2/8N1dmnmD41+gndtqbp6DkN9/Hu9k2t7+heW3FblvZtGB80+oTVuRV/ejohDmrFqv2whNinpxBps/xukp8IMnUpi0dQhxzOV7TO+grpMkv2WjJJzK1xw0xaJo99g/17tztARoWp7x2iIek0OyUbv8++hb4293zhuNR2r+yYJ8apjmtoxrpZj6Pr1r235JJX27jr6s23Hr+uzwcFjuTv98qbruL2lkF2yZqNVuL20gNvjxsKOkkuzgb68jxwTk02zTRj1lhuhlfD5z9uk+zw9fxL1xl+pe88Jhb2+g2jRN+MWqfD6VOwnO/Vt3De9Tut0d1vT9le+2RvV2qegIEBv2RnyD1/+hjZ3e1qTeknJqHhBVWxZzxEWnF2pnd7Q2zCOt4dsph26eqH24DZ4VL942xeer+bk4ezcT5YWt8Nn3mx1uktZhGl0vDoI2meuypxrU5p+9hKhiXOqzLySh48O03lvgd3g+3Y2rdm+zb+vVudxrl2t+e2Ml3bOm+dzwiPyhjtjo/D9bR2Bp+YlrUhzLmnLeg7WzrBnpB0D18Nr+kZsa+mIO2pxxap6+zx6jr/2wYNxKfKN+3V2zBewszhdLoQOoalqeLpV5pwZ97Dk6evq2nW2keJ0mpjdt7k20shtB+isOzBW465lch1hRx6+6hBJKjltRo5WqsW/a9h9Oqwz7Nhs41p/myFB7EFhRLxpF3zuzfronmhllu7+t/FwmRKlz+2ellBiJWryl5BTkEeiZr0b+ygbgmWwPx87e9SD0ixxh9wrk95zxiBogDujlsIxmojhJO4lNmlujuWs/1nMLpxtg0raT2xiOw3pzXmv8piOVl755YD6kZjFL4yVu+Bt/OgVh04+5SezdZrm56Lh//l5m+8hxiD92jN75xU+Dzw+x4RkilnG9mMh+757gepWO5Yb7Cr9uRvmh3Vu2E2rxFyNhpFWmW2jPDpwT2mBwIRoY9xiejbJojttrW7yponmrAxj61hpxlYVxrlqIO7bmq+23fx1kenaZk+TkZLpox6JDgUkjLAMduikt5K0zlWmnl22j+Oz0+zxzmmgZ2H8jBp/JTqYlvY7j75xEdxmx291nPLporr++lAVm/52KBwBWpCp04Bj1L6fLufhwOdbB9vcZLtF93zoZl00W3w2nEW5CrtRW+NL6pemY2zHu5sB/yF45O7qOiHVnNup490wVqGt1SW6IO+rhw+elR+36tqA++M28w15VN8oOsj2nmD1WD9pDgBulIVlop5C+sD2m3b6WJ+IZp/myz26yZtcNtYDvgz6XOmjOtjm8ZehgJ6wFsyN2cVjUl7bl8v+1lhvyty/+ngN16e8jZ9XB5autFb7lrq1x7xstDxyvZvmprkpuWFj+u0mhrFZwv5s41shVhid9JZ7PLzwBjl14NO69u0UpzxO/0ri9T7GjmWOkwZpT2zWN2d1742nNWsjmzY2tNbqa2qzzqS5qirrE99F1kFJul+1upp/h7Pmtu+zkb/Tm1jUyYVl+sqdeqBbvephwzwciwn+6bW7SF91b6r93drmm2hErmz1zf27BlEFrnM2szzl42+jug051q5v1B+bt1FW2bhghB+BjyGu/GzuY+ruWsVjxBT/Qur8F47Z8d+wEtkHjr2UtJrzqThI2rBDrC+lLm9zNwWppfz5Ox3dxhZdh0e0+c3Oxr/t36tvQd5pB4/RgbR7R8xkl5pxh323JLoEWl9W1k53SBqPLm4xogh8o5nv9wv2h8B6JZm9mnatwlxjMRrrWg+WtKfY9rhPM19p0Iz/yZ9sLoYRnpDyd1pXjnrNxvTgXr2+lr0hpzumh12Sp4Hug/Vhlewf54sOn0WqPJhiWvgjwcRkEWl/14SBiyhto1kvVgUz0q+t9bnObp2J3jVrv5vfc4bhrtOv3l6jRu/+y7+zZO4y2vPRmzF5UWyV12jBrvJ2/2/Pp6WhlfTsNuoAZym++KDg32p1BirZoMx/hWnC28Eh0xNq125bJsy5vuu5/B+v+oGksXTw8T1W13v27dz0PO5VuhGsiehqgOo8t/cVy01xK55ADg6+idD0vNjiLovmzaDuz2hMJuNl2eFylR4U9hh2s67ikd75z/nm+1lznWtEe2oO8XVhjDxqjqilwbuw5l3Ftza+raegBt89D8WT4/btZOgDZvZZnaZoo+0j93zuuQRWwVqN+rCb/CzkBz0IBoDxrie2e1+AL+ZFvCtm01rOB6Y0v9ew3O+qj5shwLr/GJhj11SWyyNjtx7JliuTnnu0vL2XT4RD6XTy0B62li0ThuO/lx13zn9buVzhPugjetUO/m9+1h8rmqG76XN6J56gRimW+W2wodzMu7UtjbJvuj8bW8dOsTWtsz8p+kq2wOpxotggljg70x9w5R1edluFmQF1AlnVO/dds/FwgNgQzn6umPu5lN4L11sp0Q+2G9zKxpzdtVjsWp9vCBqjqEdt5+9F16zr70SWaCWqh7vW4R9h/J34BwDJ74+msehoe0Pu4bO6l9lcLj5Z+L989u4ItsXb/ll2yFxKe5H22pF0/lu276n27oRwRzy9L9a5j3Tk1bt3Fv11myjpq+npb+rOuteybhzf5kM+o0ZqP22dBgxu8KOwixgrj8U18Ix04et8ZoMutPusv2sm7rvp7khxJN9plGY29wdhh5pLRobp/oDk95ui9sVFtPl+gzqxW7o22D+4Ppnm0xDu7NO9Zr9DV4/d0PYLhJoNmmP+xDmqYjxvj9e15Mj7+ey3mj7bzC7wWl51thDN+oOlHZsazvJDtTWw0z49DoaFhaLrf+3Qp89p7yZjWzzUz3D17BlSil5tRwg+4F2mTr7rBoBLiy9h024YOls5vRMu7ZgZWiVWxax0oTwKOx72ql2yXu1JL/Ksny70wkjc50WUhVF2qO8Ul++W1r122twuL3VLp421obqXm9obyzN0LU/AesrtpJWmNzuaVvtm6JNvbBhtZ67x2qes3OkEz07FrrdusxiDmu1BsgelOxmF23SB82RkX5l3+gappXL+6djzrtO1zjh3bh49lruB3nJt0B2qOyt+j02mPpu1h5QW+F18nJ53elib3qOz550eepartHDzQ19WBoSWxel7CyRc1rwOqF5+Pe8856jVpABvqFr9h+Yp4YNmuWj9huiNv0en9hkJb8ftjq989ZjTpiHuzr16BRy5JkgFkCe0FL8WJ09N4MJlr2mge9jb9sJ3vrjMukwZqS241h9jR41zpZd/1x+iVjLNphd/5V5q21Xh9QWiNT2JL/8xoMryTzyaD747uHhlhdlH923107F6aplFOxndrFO2mOhgWtzF3Cjtp51ediYp4dhs9B8oWuYe3+l1pO8X9tlB8u5q62/rlrGO50d5SBjkr3dDkFZyo5/9EyElt7D05O8TFvcW36zw8+ixTqcho5FyOjpVJ/Oz+WrJAV0O+sYeufJhAT5CFvn8wV1vJO2KV+W26Zl2D2mo79aR+Bd2ZRyK+zNrvK2lh29HmgOBuNevV2w5Wx877nN4O9iEu/oh/cVhVj8jR/OjvpNsjevCuhnOlwu/EuoTBxWupgO1Kfd5zn5OwotmeTlu7w5zh3OiYLzXBl3lj3+rGZg32jNhzGR6/WljBiTmrFtvlO50OxuBqCOrCWzZz6SF8dBjdZ9WTqSZwn2pFJ6nJ+nm0RzqlVk+Lzspw6bvf+tAUVbOx5u1zlrcdrcpqLOw/Oo0ZqXFt/Jps7l5Vhn2sMus8BuwxtxL8+lpZp8XW9U26zh+B+t+ewqOixu79lpfCiRD9CVwoLhM1qCll4+zHJ7Ypwnu2ip/ejySNoMThR58AL16WlupySenB11uOm3JmADwk2tjJnFTxqr3Ixrt5odh9vWxsWg+x40tkn1nMZPG54ypvCju0FxnJxBLlKu42Dn1DvEh5DmwBN0+xyJByUutmN/6+n5Zq11zjhpWTiOVkDmwSe8FZ5kdtCD1mB8xRx219NOhZhjBt1KfPmp4SRntRkMxipe2j+zVpoezoXAVsl3o2Zd17Hx2E1gA2sSNv319F1+lznUzoRk/R76W5nJes8BjYbgIRyt+ljOnUz42IBxptLT9le9Zr9l92h7ruz/Lm9PQ8ZOzulj27zmclEb+pRsJB9gNq49kE1Boe7D+mN7p/2+9ZsWJhMJl6Jme508W8Tz9ajp5unPW5kksoR4Tu8ZO47Z1eh1rrt/Bgvlmt5wUQX9m0B5rcdmgzu/riHWx5u//+i02rDbv9812+khBtzFwpBiy5q/Dm65hIu4PriNDv5Okobh3m4tez6+uaeuLOoFOmXuuqW1g5ye72Y+pJLjnV/y7mJlyd5jDm7EJ2d2r+7nN73S2+ENvwek+2mE1l4gAMlj8rsKukwZvyh+RZ2X+zRRtk59TTrZ7pVppjWtdFwgtgO7treqN73WMrwtlrmzRW0/N4tO7TB9fLktBl3jjahi3TtE2yrzzzL/k7SATzoFks1psLg9BhvKGE1l5Oy015NLsxZvg99le/P94T5jVdxMz6mzizWk7FipLv5OvDr1wR9bh/ipnt77Yp0i9qr2zEl0uW3vbxzm6nRgktgozjIWteDnub+lt0zW6FhgDF+g5yCFj0DqHB2BDwkR8Blj9u00h8k5lRFpnJ6n17kehfWuIR7ZN7gj8C51SFr488JDu2RiTJizDhlrsMjiEW4ibv3lgpVw1WpSbgQVn2WpE7xnBi2OxmfJbDyxZksenSFoqN+ruzGetCiHGhv2O3TFw0x2K+mcW+CU+HR9eFzEWooF0QW1lOuXJvVF6MRktZuLe3bOy2W6CuZ3lyhOpfRoaO3T5xE5/V22zmm4ZlhWwn2pV7zb2lV7sW51/Nyt25I2mdW3+Olk16LFsrDkJJuc5h2dzX1oL9wg+2RxlJepHVuwF6nliU5s1uoThktj4mtz21t6Ouhr96xs8OxA+0hrnWU7WHB0T3+J+yt8uxrleluW4pO5Nt5u78HRjeO9u7lMBzu7yDWrKhqaegxO/u7+oj4Or3aZ5ZrzHJ0e7yWLy0pCe7lDbqe7wN+nnzswFue7wSp6yb2wlpY1ip1mwRrq2kAL7JTxceje78yOin17e71QW3e7h8z5AWg+7ujmrxL80+8wdy/Bs+76KTxrWyA70vuxQx3cl762mmJrqhyy5p3FsmOmKJzg1i9OnSHbbxsUj5d7hOVi9r1TXFobvWACFOnd74V+nIMpmBwlxuHTwO5xAd0ZFqPrmNh5dL95exYzK97kuOruz2970SbwmfMN7v6s67en/V5D5197mmVi1Oj97zpV+ABlJe397w5Ou/jsyDwD79J7zUDq5O9s2jmRv5F4ST79Br8rkp7psetMWuD7lv2hD7iADpD74E2lD7oJB5fDooBkVO14244Bik7z82mC29+KfD7s8Zu/z6UWP+BsM7yY1t60h3545O+ytzMOjrJqf+rTuohVvUT2gLxa54892xWlyeio9/Dx2h70oQXNZtvZ78ptmN7FF0y01NWpmRkDmqX+mdm9WesUbhHey8F8WLn59/uW5kd2Z77lh5llyIuoEpjlxtl7yshknD6oJvkt+N2sips6zo3DvEWpjmpUt8Pjxce+MB5oZ+qrx0F+HOumOs91kHm7l1sx1pXx1wTqwFvO2nG+r0zqQO+XWojD+zr3fDqPx4u5hzTi071p2jOTjSWuupkWWy0BxDmhad6DbppOwv+6DrrC7hsZnAttQ5oSescR3g9rwOjo78B2rOV9N20Gb9iW3MOoDx0q+8dptcptWkv2WtaL2ulp8+ue+4vRrLj58Ujx9v4txc7wE770O5hN+wTm6p/fxgBl1nzoSOnI+nLLixBtprsWJ2g2ude7yui+Lgvr0MLt62ggt5I7jLuknpjKBpzuhtZonDn8rsJpukp0oiSO+0Me6rhtQZwuL2iR6qT/V+zbml7HZ3KePOs8Vid9gOdtgBluh4LJuB9wyLtYF/CemZR2kJ+lR/S+hpjgpfTx7gKB1o7uDlwwO0lW4dD3ypp/7tbzg3x5Qd5570SW+yRguBvBhkwFuArvSZ0f5oYV6IiRc+wQR+Se69tkBukgdy5Or/lsD7n5xrwhzZz1++ytT+a9kxegE91wL/Lu7ct6gUSbZ8FZxoBsf93wlt+e+LLgzOsERnV76oQGMh9QBhqjyoB/S+tFNwDljkriplpXj8U2sf7+870PjANOtzrpQktJZ9lei0fQUdlz5sy2gHt3nd5opvT5o4Z7AUY/Dvj9xIxzgZlqJ3Sszypw2D+Z3TgVz2+vPupuukruifL8aWyadxNes51lKJqRevW+s/e9yp1QUJvWlJ5mZe2Z7sTD2gb3DbyPczne2Y73B1jWzz6+x+jsyL9YpqIR/ceyV+6FBhGsxw5iGO0cWxgdlBNsPs1o56QB7RB3h2oO+qpOzshizW9p2qZ1qDuwALgJBkr2t7px5BipT4vkF6Jxce5BBzAlhzW7U74YOq+lpU9sFOh7+yNVj7DodN7gemW2g655TlsETgpRxAqL2ekhbqC2mhtzDBotj672jrV7a+xFRzPh4TDi0x+UljXBzcewAxugqQSehehdpj+kVii5l8+gjxxkLxoO/Rpib1gf756lwj2r8Blt5Lht0YZ8mhrDRooWlzR9XBnNeoQL7MWljZpxDn7z1WDiGWxilyDF8xl6INjYL22j+FZttWynzxmzv0NlB7n/W6R90LW2rhgPhh1Z+vZxLZ6j1qB1ojxguOjwO5fh5VOkHeo/7+L5njW9ZrjqhkeWw5+huzmGRqC+m+V2M13jLzVU8F7zD0gEBgFhyYJlvZ86eo4B6Ij/yFj4gaoxjrBqahjHx7XWkzu3J5y2j8n79Yp3lOkoOsR78iBs5O1mOy5O/DOmK7pPR18x/fp0mbnC2sUzs/LuVO6LpwkTxF7z7m9JDk/VmwNz5Ot5D8CnJPOip75GW6Hu1FW0aOo8T3aR7ZNtSesed1IxnNsYfu1qOgD1ySWqEOroe/6BvpJl6R6kOkApmSjj3elal+xNmGVxzmrELlJ+ltDrBu0G2/Gtsk+4/9yiV31RzbKd8Vjt7ouOtlBgm7oVxoEW0JOy5J1+55Gd5Zhlvm5wD9hRwH+9ZuzJlxy7oh10LT3VWxxVyt2ipe48OwpN9eezhF6d7kLDuob8v2wLup8rpe7zcgHlWrd7laID8ruzO+nKEPb3kt4l2wRN0tFqHjsb7t6Z1NLs8pjXu6rdxFzgk2reVpQCumOkrBszLjtTmD55Cx34NraZkkNlQhyFtpWJuu1lK94y264wRvZkA+oFBwMN5tWv/x4MJl9u0h+jVho7Dp8N25Ji0D09WlD1nGZ/DZ7F90BW4W560B53lwie9eOk9mxzx+HmyXBonmsvZ4mb7r7gi2vFe71ml++jOVy+uuR2mm+3ul6gLjYdtvZhLDy816ah2Hx67Z0l24dtyH7xy2iYptHe+L8wMRoIFiDZt5Ztyp3cHtq9sylmNruYWxgp3X+1MD1F+0LWvCOmhT9fduEh1LR8MO9NOgNFyobuux35zzPKZL5zYT9qd1qWJL29Ypw+ewkOy+5kr2xVF4GrlOe7Qpz4Rnpu7vB+8F7Tr5jLlY9o/b6l2toBicWpiO3v+5D1t5xVeRywDzHJ/atrxtoMH6ul1vJ+WNySe6KDtY+n9d9oV5Gdlfjwt84FFxvBwwh2lOsn7onKRvp1qevvLp/h+hZlq+sOO2VNv6szcliHm2Th/hNtecOie7jLgFdoNWubzibT7GjiKW6dlw+TuguzGB0lp5P5/RNm8h09W8+7mIry81mZ9rGWme53v25DF1mxyGTvcRw5zvAtky7/l11+xmPKMmOpgOoK97sx1Oexu1+ulo0234+rFl4DJ6SHrdmiYBmyZi3xwBhtrus/+/ZR7Nu3k2x1uomRqMlj0Wxw5n8z+0Tqilp0hlael5OsMFiTD3pN2alk1VvT53tJ4yZiHu0/J0bJkhWkgF152/ruznOgHF56BpB75MVqMHx5B1nWpJ5lixpX238d62l1Lm4GLlxZvdDkW1l9O7kZyBOns7vkx21LnNW+e7lvxxxL+jB5CLlBd5UWlwNlgF1P2uR9waBm2JiEW9az6Y5mkL0iH/8bmqTlIOgKz6ZBxVO+TF1vroBFmN9rrVyfhizDgTNxZV2v7oHrnm0qEd1Prk3Jmdm3FjscHozF8jZ4heqOJ1oQI/7u+dzkh/Ox9+1nBRk0u8pDphOtqpqHthALkFB5657yzwciv5ZhfWmglizTxslunRxqliCe/p2jfR7b17Uxi0Oxj9+Lu1LW1074B5gW7xaW4BrkYD8FL2wl77Rp0N32e0y71eOoy7xYDl5Otr2uOjpQj/vT9Ip6VO4K++slwiBx0l+7Vv610Tbs5OyATpPtnZO3ptmZpt4FwgF26O2DWkN+yoLnSHWzz5WDovFwd23Ou8nJ2+uindutxyUwHBrnTWpjxv3l4YV3P97Qpjlphd9u4d8pZmjLvIrkaF/wNnqr6eziiHvuW2mHuIiN221vLnoDmAu0w5t0WtE7ppT+yFtQ5lshp/kG2rlnx765iTxwWxvSHs21qlWv1myw5yp+v6syDO3H98/Zraz9Gfakty/+2JlpTFrbWg/V3gd+0VntRwmtyAT2i00iH4Z1oXehCtu5LySe5dNop5rlJ1xRs2Tj2jw6HzQF87e+Pe/Vh/Q+n/5nbD8L5q5YOIRsXurwhpA12PKf2BuiHxLWlQNztBtMZ0bh9c7gXOyKThrJugF2T9oeTh3JqRp208xpBtWB+RZje9/P5mZJ3s59De4DVlu9lSF4/RxSx3Dh3ehvjxnTW23+xwLv/Fqpuu9NhGptjZmMT297xhBsoetU12V26Wb1/t5Ur5Rt6uD5KeuVHD71z07jx2yQ212N2hjvnOy1Vihuvhh6V1iltn/V7w+in1mXemETzt+4VW5QB3RxmXp/vuqAr7DxyGfHhzh82u7Z7nri0jtWO5NblQxgg24Xr4whgfp+oNvH23XxmdWrKR7gW+PL8U+99lnF+mFpzoOuN+sG++oLr+Jvd+4W2+151KewaJyJNoCh0gZ6Ybzghg4rjoNx0F74++0WpFJ8JBrA2qkJ7YR7IRs7RlsWl21hH7h5tgFF0mhxvFteLrF2tTuid7/2eh6s4YN/hz5AL1Dm70bowVnwOws74wTqDxojFl8VtMZx6rhTBhLtr31sP2yFxqkx9hVu1+r8lm42tWN2+20aOt6Rvih8dboAL1xfA1RycF7IRl41x6RlqHrmHomkvmp1OHyfR6AL0HR0Pl2g+xk+zSevO9iiHp/tsO7iWx2+r+WHxQ0jLJ0Br/39qjb6mTGbV6sVzTD/F2sBu1yxn5x38LlRO9jWmaL/sxzPBp+7t1+/y72x+iALn2zjSW2pTv9u22+mqRxvj7s+zm77+esTtjC1hcgUV1v0H/k+tr7jQ2I5Oye7yaF6dh9uOzsVg52j8ltlB9+J5GN1b1kuLxJZ6AWwH+luR4W26g23G+24ZypZ4iu21+0E7gmhtu71Dm+ytrd1kxhvpOoUqSGfH5JuZt3F5+vD+nl5uBgbO151+XKNZz9qZ67e1spgV2+uN3WM4udyheyBO+ZRs9RzgZghOwTNo5V6KxrWR6ReyOproO8Kh0c2ohT38BryO/i2yrRpv2nV9jgJl/Lm1Vvhbi3B1F7zTh7MN5E20b7iQx2h+su19iW/ZzhfW8z24FRg1xlJejRFhfWyf58FZ8WH1BIIHR3mHhOj0JOuqWwWH1SRv5d/yZ6OVmWTpR7iEFn3zmOjjEr8Buiwb+HV0mhv5eqAHh02ioboVLoZZ0Hj3GHt+Wvzr4691Cp0XTrc7qOppdT0ZhkWlsWJ1wBjs5kCrp2Wi+Vv65vkp3kQyi76mHkyr8jWtOjlZ5/P1/zhyD7//lmyFm+r3eB2RvA9z6R5ny27yHiALlgF5l7pIBlv2s37zPKYJDpt5sjbkBrpzUlHOgtWpv2vp96iHzpjj/+sIrzW9lNJhbr21O1k5i9Wibuq+h9e2pTdjvD/y+z2O4oiQnZ62luf29bLgEWz0OsjerXu0MuvaHj+DvcOhvZgjkj9u0NBo0TlE2uq2yALzM53zx6HWj3ju+B/WVrgB32236+45Zucp+/ZvnT+KVvoBpz+kShwRx4QOnM1mKbmq79hZ4Vhja21eR9KujH25wl0H+pKjgYhoExzx+/ct0iWogl8sluzWyt++oZp1ZzSlzjh2whmgz+Nelrujce+TJzD02uO2ctwJWs/e1++l/pxyW3gRxdRt6RhUpr8joveu1+rsRrnp4GO4JT78pju+zEj2Me+qWqK2mMhpzBt8sznl7z28zJm3e9pk8qL1F7mE+qxNsC2hgD/4On1V3AR0iuxFD3VNxIZkVdyjOitRunWhlHmJ2hkFu/OoEz2zmw6e2Bz9hN6OhspN1VptnW8al9zc5eLxTm3aexkliuTmtu7Ql16R3DujoBpLu3LVu0OhDJyQO3BHm0OkdO0vO7Nh+45lPO+J8x72s4duDmlq1tQBre15tH3oZzWLgZuutb3UN6M+hx59gW5ufWUOqf+nQOxde3pWzBeliJq1t3SW9e296pvfTp4OppttaOz18zEW08DvFhp+LgQW0YNsPmiI2q0N5HVjDJx3euC+t2eg3DsR17dtolF28Vw72/GJlVuogHrx59EtxIVrib68rox+s7W2wr11Bl1ekDulJDvjty95sP50dOp9ht9dozUsKTmXuvcN1j1pjB6QZvrF/7TkBhgEOvx+2Yx4j7vCunFu7cj3fs3dTslhrke5Hek/V0M5kqJzjVuGNhGTquBp776GktrxOjHhM9ibL1U2jmp2tbvZh9Qd6I7h1h1butQZ/T2qYlokp0kOkkpp858Y04nb5QZ4qDxQOwbOk2pvaNgGp3bJs4b7TZmb+oLtgGl3tBi6hvAF1HJtK2uXRurewDN/JV/H949ZmTes52kDh9HNujtqP5jqtnLeqbTgiF7Nu6m1mPJ6x2yoJsEHhp+nBDkRxjwrlH7zaJv4Ry/D7fty6bnYt0mUihO7G2w8BwbFt8b3Oh+2jt9my2+30duld8tDggO7MxsqWjzl0pR8ZepDmtg1+iR1mNzQO0XbrTdg/xvIBtuut3+xohxa57Zhy8RrLBkaOqwZrNJ/it2xDkq+riHj2u2GdvK26SLv/egF2qTeoDDhlhtCR2Jcs2t2hZ92cyXugGJ+xFsbpoPOyuFwhrotVkUbs12/Pu1fZyNugn1km1iMVvbL0f79d5zPBuQBzExn3W/nOuXmi7rzoO9i+jE2qbtmJDqPmmbh79H86J1GUhsZwrRujUyXpmF+sBRtmr/URnM7mJbyeBlYVuvOxHOnwx8LpgWh5p2rHehQNpoT5gt1k+5COq/pwehnG+015r7hzJrhuLiPegjdkDRrHOvex7Bsky+wRDr0Jxtuj9ZD7HwPeksT9k7ia+1MHro1Po7zP9nPr58U2eF0OtrDDyHR49pg7el7HRBz78O4or1ikmspwt2n9e9hlkxe+4p+KF+W11Sb4PD5qcHBjzEZ3J2uabjClzbWjuWnOrkTBu6iPU+9ABzeF2sWa3e8ml2l1qx+2eN5qDiVF7DOlgzC0h8JBqaeyO5qDuuJ+/0z340uY2uEZ61bl2R4lTu+B3RO1yzikBx/Vu4B3OJ1Pjqql/lx0IO7d2rsx49RjwdhRH4vulCxrRukslzxphTJzoW+RFpWp1W1pGh7JTqKbpSp86enYT6r2rXu0UWniloEFsXr1rh6o10M22jJ432gYJvpdo7W3wes6B+/h33Jz+r1M5oH23VFnWtrHlnLtwOpt3+qVT8ebl0R5lx/E76MOx87kHm98WwhH8KW6IN5me3DulGjsId63ptmV+RpoOxjZOqA1vDlns1p1r3EDk3xxF+sDt5pJ8a72AO3VF0f+rF+q3l67ZkRJty5vdhtIDzjBqzzuOet6e0ndpB1oq59yN/o7iuljb2vOu3kz9SF3ZV4L+px+1G9pNemSekxVvXF2ZB3LZohugRx+xbpAFq2Ot8uiOt7yjzVF012+p1pH18yR/BZqLW5Z5uER1dr46u0uxn5z5VdlLxvB7wwZvYHkzR21HhLp+Up6T+yke1x915jzrZ3qV7Vp8bpg3plH2tuplwNlHFvHHgW5wsWhNJqJL1PB8uzt8Rt07nj5hDbzPjpytrxtxBJqgt5f5jv8kUW10WhED6y5/n5tRF+S2+RuzD58pe6Qd58Uy1Z8CR6vLpAn01R+O24P25HRoVZ8w+uAR68d8ghx9hoTx5aT9uemmB/NutAJl+e5V18mN0Gp3KV8UM3sWm4l1/RljVoq+hnJqA26HuwAe6Weg2L8ye/NFl5OpCWlOFkMxl5Ow4lixT7B+kZ+4pe2M2uxur++ooOyF73s9oZHk0bujm2lb2JZ8triR5twp2K+jzh6CWsB2tlbjH256rxxF3cUncFiPr4U7rRbhar6JVv+pvb++Eb2kh6Rz8cLnw2ep58ktqHj1aFlLr1FjuuLq/24SJ39JsbjF0egQnkX2rHF85+qdVyyR+xriDhsT1poVmkDocOvwJ/mOgc94r2yaOhXKArrt1+zA52RutdO3EZ/Nu+ej+i+wdR+lbs5B51bwrbtnBldxr1RnNhgUxuXj6bW3IZpm9gyev7Vnr57HBlOFpWWvA7ymujr+0R+iXz+Tmpfmiq5jhl1oQI0T46O/uQcuVyO20Gp3TW8ZVhSUWT+jYttAJulZmqO8U75p29+Wu4BpQnrdt1Mp3MH68dqLmiTm6Gbmp56onojuiPh0OtvnBrU5xbBiTBtgD7TxpAn3gT9t0wZO78p3B24cd4AjuH+hrbzAdxk5l8en81gOk6ob7N0nRH9aktZJpSe5Bu/+ent1/TukfBvX5nDTzODjQByiFtSj7ftmmdhUFnqOx/zywpqae48Z4M7+onz2Oi7jGQxucNtKB3v2589oUOr7liqN6eB+cFr+j+QpwjLs/Bk95tFe5DWo/l/1t1c5hWk92bk4Wxbz4JeyLLyCz9jFs52mczyd2s7u+8ZjlFu5B+N2gwjqSBq7BqU9lN1iv1hKO0aB4Jem+5vnW3tV0BbjIDq1h5n8Dthx7Ox6u6EZNoOs1z3rmrWrj0J2NWpkVhgs1jhkEb9GFunRthWpOh6nHxERyw+yzWjA13OdjPR2q2n2Ws1tt6BzKBp6F0n+yAL9Orujh/dT3Mdnob96W1yerfx/qO5hfJkClWukgqI5WkEd6H2uVJ+z5q0BlfJvC52KdubF0+cwldiBB+pe2Ypm2b+bR/tgdhWlVT4OtqUWpdz0zt2RltR1i6buLmuFLqCjtPJ8OW7CN1upo+lhEe7axmHemi+9Vdw1z56+9aZxoWs2JzNxtqC2FBqC7iOh7AUzwt+D+nvVwB2mm+hKe77dvZp42M1Wt/gelN195BgwjkT1yhVoLHj7egGWg1bi8p79b0QW5vd/kRkYepeJ+P2pMn2t2/2+9hd9GR+Lup0pw/KP2zpLH1KNrfJveuuZj45F5DL4b5g9JxOB+IeyOh7ct/b1oRbhcF+91p+BlWet+5i2Bum2+xzgljkRzmKzgdD9pL3PW4HuwoF+PDs/VpeliCF8xex4V69WrQ86Y1vVRwIhqFuvHpsVrho27SbuollgzQYd5Gx6OtsWJy+lriblnR1qOva+5JltU+vdj4OemVZ8p231WiP2kJuzHB/xO9gtkNF9EVz67pq5/ku7aBny5vHBrn2gQx9k+ixptek9SWotOwAegeRubdxFLjTxvauuFdrp26t7tAqCZt/Q2b1R/mO56Tw+Hg4+6LexYBhUGmjJl4+ibxrlVgPL9SOwcZh6Bl9FwpOzORn+B6yO412kj531z/nm3EBkbW4LWkuB+6ThThtFByatnAR5ksm0UlGFvXmrn20Ru3Ret1l38ukpR7yr4t+5ZDxp+ine48Bmz24AVxn7wE7vv2nVF5iHkEWuWF8OTs27yhBo1HoWOyx+wnpq6OngVrP+oVOikBrnZiwdqHJr9u32eonu9hTjDmp1HzmB3Dr3MrnfT8313/ZjgBty7hfkdjW3cTucASluwnp0ep8o11iBogz0HH7s7nylwS2++Flxkpt5zrz2+lmP2vXh8oR6Apwj1rDOgQxgo7pWJibxzA1l9h/1O2d2v8FkuW1BNz+thTbjk251B2tFmglxONmY22Uzv95iehsSekHOgPDi7xl8x6Z2tfd9cWnFj3cnovFpozpgO5qUO02lOxq/blt4WGTgxWwdd+F9hMRnprIYBtaOjPV/fH5oOgPm4R+4QLujtyzl1yz4CO5YO9KNosB0D+lSR4Ie5olmmpvXLp8z/d5k9hmPWrqn9Z5k+j9a5qTb2H1wUh1rNkRFgRB1vHmp2vIJjt9qZOuu12Suq/R4Bem9z2aVvq1mhz80H43JoEW1p1gEluDV5YN+yrlf5jwt3PW53Tlrjluu/3mxx7hyu9qO8pptth4nuk+Lg8j2eZ9fxk4FnSR2wRnJ1q1Vurb4E0sNe3Guq+Do1B1t+iAFxw5u75+lhpXhj0l3YtjeWyw+6aO5arngUbQrkfB3krjx+mhH6e29Qr0IdvWtnVLrn+1eOjnrrgrmqlpeJz91jVZ1obkDzipW22b5/lqDu5iOurbnsC91RhO9xyN22bqQWwpKYGuz2C6GllUulzVh1RsF7ocWn/Dprr43Opzuv6b2knv3u1uJq7JoWdxHttYO0+T2zOw1Rt2LxuF05H2xuqZuphRpgd4rNwN558O+6loJT5x2noRjq297OkGl1IxrQ9GA5tQuk/W3pzsVpgkb7Spy8j7JT1Ju7BeuzlhsZsMZPiR2vp6AOmG2j8l4YLwFLy81prc7kB5nRqQOiqz9CJ1jU4m72Jc4St2YLyvLx8Vjt9tkLoWU0px/lpiGR9ghpPl1vmq8BoKW0y9yPB8r98FWhzmo+M4cLuoW/ZpyEZ5zmqNhiD51vmuQrkN9ztuvb5vCDvitvmr+euiFRp/Lxy74/b73ADY18gr8x99flv1m+IO2TW6BR2G+2J5l9dz8F5T+zIptJx4jJv1msjTmKtzIpnFp+l7gQ+oBH1SlpvejOhwSW+bz8XH9yur71mzVkRRxxeotTiHr8xerSWoXu0Qz+Se85utFNvCVio23dR+y9s1p6Ex7ExlMjzJLkiB71Hv1pPiUgZt9xL2SO+2J4Jbotmse1m27zExjUFgatsRZgv0xKr47lw0O2Vr36+pDho9F8Q2sFW05H6zH8BWznB7PZ0Nu/Th5I24h2+O5uj9o1BjlBlJBuYHmIBuCb2C5pf2oydrBJjMpiVTm+OkAe+gFwJ1pdNuBOllbyWJiVNwLzoQWmMh2gl1oFqwR0Fel/z0KJ6srrXt80TzEWny9xPdxPtnW97rJqAur8pizD5cOjozwOFgdB8m1jsVpTLkqR3hBvZrh3p9iWnf+jK59Mt11LiZ2pNp5zFs1L0HR3Pu9de6WepFOh/+2A5uUlwN9z673CxwERlaz0at63LnvpzXRt8x6NWhGt1splCj6lJzi77y1//2qvmycevDLiAenuBwMxdXe/dutuexuThX09Dm3OV15jo9D0stsL5nkbsQ593x4Hu/wpgilqsHx5O207t62iLDgg7lrrj9mpqOpuW1MZlIOvC5+XJ8MHvDBl6F4cDpGzqMnmTe8bOqbVhUewlt9zTkBnzUh377vOOhZugLeqbu6aOyQgPGegUjszFnY21WDrm5uie67WinujcxhclkvVznujdpp9zkXHounmWJ3474VZlErkGc9GH+7mtVh+np/bRwctr8bhSDkSF6Wnk5z2IHx15rsLnv2ho1Dck8g+mZlqZ1uuO3GWqppzsp13J4hzyxjz3Roau6gL/L7j/1uLF0zWgar1uJ+LL8j7pNFsH2xcRng7lgzZ156sVny5lZ9p3d5+xiw20B4W2jpeJghDpeO9Y98mnvTTz016XZuvW/7jzZOrNBkIWkMOtG2tkryj1qyOldRgyexER4pOuJ+5rh675pZnstWlZnzMutZn+p7jZnmfZgMN0xzxn9/ns7Y1LTepX28lO/7l7cdteHlpu3lBhn59C7lIiMe72NWSLhjZ73C7h1egt5n/Zmp+t8D5WDis5lqlzBL+9puyHszmiMdp2VriTg1h9/TjmHixej9ZaUlla7vB1uU1yD77pbkBu4ae3lO781lXlkOjlMhjV1lo99lJqftnEu7qHsy7lHZ89FlXFyzBpJr8aH+4D2d72sW1pKNzxoo1eQB7z9tRe261lFO8p+tgZ5vxjcuukH7Xz3H93aL/LuxcZ4t54h7hZBtmfE+D+MbhEH3XuwUMswJy5Oxr2tEHh1+nMWvmHtOR45OqK9sWz9r+nEH9gRipsi3B/P17pTsElld58SVwNTrzz8XL+9h3+BxBOzEBy/utM1gmDi5Wj5b9+dkNj7ungaWk0LovmpsOlNJxohkbFwAu4tRwdO+1NiDDj3mmfehLHi8u5NRxiF91On5Bzs29D21in/ejkpHxEN5ejtgW/a0ltmrARk8O81pkxO1NxhbDs/HiNWv6dinDnhWzKr54WjQz1CFgIn9N92Rl7KO20thZD3OxrmDjSjuYWy0T7lV9ONm9WmX0vMVrrmg5rzm1/XbuN+20+3o143bmfs03b6NB83boE56Oeq3b/Mj1cN6wJoYz4QlusViGfJ3blf9s6dg/l5zhnDWz3bw0173b1yR7plP3bhyNplewPbwnemnOnAtygjwdk+GZ4r25VH0hlrJ+lFL9/z2+5lLmvw2xBh3O28h7zbuu6j67B+Flnu5x07qln850xq9jQzk15v9j3WpubOtLBpGUvrbnorzjWoSJxxfXAz54QDHb+Nr5h9lYtwT1nkZjUJ/xRvehnADtBIIg1+XZk2TrS7qpTwyxrpnsGl2Wnt/kK2F24+9QDpWn3R+lWn8Vn+5xlHNzWn/yNvV14+5slDwVNmIum8khuOkM2lPu27Ns2n5OR3aZx5uq2ni3Nvcl3LRBlx6q9h2nlzV+jO1br/ytzRR44O0FMs5zhbN6oF0UO0YL4Mz/BZzFB+De00JrWO8Tul7Wh7thQ+gfuuip6UVtEVg+lkNurBj05JmCerudhJBrTb+bxhTnvQUBbOu+d/Jur1ch+e/je9gx46V75+qieypV2jNj1B0T2iDtzmO1/tlq+urx9cDvFF87xq4JvNhrQJjNN4j73J2lh+3SjqZB3q5mrWlb5sjkq2rrkezkZjYpzztlm5uAZkDjpUsyLjj2xpVWiyR6E5qAF09lvqLyedxRx1ddpIup8Fg3J8qpnfkACLiBdjk2z826otyXuziumbJzoevq19Sb7jOkYQCh25antLppAbrUH/qno9H2pkoansPmkantNzkMW8an/qe96uqzLkX5nat8k+5RL/pJ455p7Z1k+0ertkpk2ntaOpNLgiN4+Dran9cNnan0WUvanu9LrPBjYtmoN5UZ1g583towV86nmYx918m17wILl/u26n/o52r+h6n7BM1CFr6uslt16ng/kd6nmsp7j+79nn6ngQuv6n+cWvMtVGUp4F+cxlETxa5jt2iauurF1ZZ5kklNuu1B7YO4u2nqt7xLm/BkNh2ChsWxsL5/PW8BrRG1tBIOMVjS7hqd9Eu3PW0VuqzTrX5lVzilb851gt266xvEn5q7hI2l0e57NnAJgie3VhwORhCZgu2qLzqNOm5LiajmJVsHO8wt5U+lJpvTW75NsDjh1z2Lhk4uuRBj1h81HpzOxsunf20Eu9jVr51thR9Vc0Xn7bWj1h+zuxarrouzKnlIugznoDjiF2xNNidetBDuAuxoukEuk4uvU+3YZlxjrQugpfQ+RhcunnnkDj8LknCtMIB44utPN11RoopsF7mkuxGusTNrFNhghmkus5F8qAfFNi7u0muiQul3ny3nqjn0FNq8WwlN5fu3O2/bN+vR5nZ05WguO9Xn7wu2dehDj+vRnRBiB1qxjvhj1y1uK2gdOyrNsvm55B8G1FK1tcW8vNnal5ORjDjkIWw/L+U70FNymumAB5ou6Lhz3nvHJ41x1Yu8cgP0djNN5ZBKrN7IkxNN/UBmEOykuhvJvKx2Lz6vnuGxgFVrRjkrVk7N/ajjGu44hx3buwu4pjmFNwRjzoensdgdO1nm8gus1NgYu5POzlOqgulouyYpmYQX5eyxBj/OqvntsutntmDjxlKUXnvPN3Ed1GT5mun1b9/O7CbnoRjCUVhjwLNnkwBGu47l/4u/ajpdjiGu4WuoAuyIuuNN5Gu5j+ljN+EunLOpdJpzzls59z2xGukXN/xR6fnmzN4KNn6u66u81N3hz1ixt6u8nntW+42OrtMKm25dF/tNpO5pPhz+Wh6JqqugVNkC52uBndjlSuxYRgOB/rZ4DN/8d9PRkljkTjpu9oBgdMpz5j9yO2ZLo1jtVuk1j4+xHdnwuWusu9Pe2hj1Oz/lW1hjiPr8bZli+3ljhQngWNg1n0kxpgXxrtudjqVW1jj8rJ1jHp/Vobm1K2rorrVNzHRjHd8rJlsRh9j5tJ3Uu/bO5j54dr4RIg+j4LJnoR1Pn8gX7xWqzN5xjwkZomJpEu4InjSJqjurzNjBuu75hDjyAp7I+ovmzbZnjNoQu9QXgYxwjtowXurn4HtsONjC27Yui/BrZF4CHxK86AukWxnhj1m0jsuiHl/SV0Bj4Eno3n0ou5VeyEupAb6Aup3O4lRpAurXOmvNoBT6y+jXnwAR5su0QRp252guhvJ+dj3XjqUWvzBjwXuRkMjjzbB9iO3AWgIx2c50nn6iu2I2/lNq2uxVnkknq9N2XhgWN1ZZtTKEcH+7ttiuhKj0hjyRtsqfUFN6jex/nhWL5a9uCBs1sczNoQuwGuih0sDj4Rnu52lBj0A2wjjzHl6wX+gx2cuv520oz21OiRuqLN0oukNN/EuvoulFpirNz3npNNzQ2VAur5T1Kx6cukvOz3nr5lsFWrdju1Rtan4C2+JurI+yZehJuuQ2pph7+OpmNvwuqkunHbzienDjiGbyPn+Ze/EF5Au76u6wu3wX4jjp7W1qLZwXxEbqXn/DO/vuq+5kQ28oumVj9zBv4X8Uum3+ySul6jtE97Sj/dNqHdwbZgnmoixgI2bjOzJz7LqZKhktm+5jv2TrFb6Fdl0ujck5I290u9EX3Z26LurTT4vms4hkM23Zl2P+nzBzh2u5+rmWwODr5e90u51jmAus1V26+v3W+KRiyOyRW/pjlkey2+1nbw80oWAbQuu+txLNx1OuxJ5p7/TZl0u8TBpyunnzoAhpBe12ugVe0lBj7537t43NlrLtTjh+RtaOsA18ZumE+8Ln42uyyV9ljmVtqDVyXm+72hZ1w9m5HNmyB7WHEKuiqbovkHquvt1ynNpKuyMB6Kugk5w6dgQXoirk4O+3b+g2QO5y0XkDD5fmuX2zwxnqusyevUXu0X/9NovO1K2kn28/Z9iugVelrqVDukZzRqdgS1gnm8xkkq+g4ulVNrYVxbN9xeovmy0u2HmzFR8lNyp97a+/s96S1knmrWt/825IX5Fugxj5furStghjgdzpqZyQ+gRJiFNsiWpqZg9FmoX4ez6/nw1D7ut6xj1UWrfnnRWr5Ohhu1/uk4xVXtkRr+WR54Dj/R5QX+qCvcZB2W5WF//ml328Drj0RqBJvvH78pxDbi9ZlY5h0z7LxuiZgITmiNvJ5yGDl+1sae3upmke98e7Zlxsd3NARZbyIbgcz1WNmoOxS1xO2id5t/kC2xrlOqJu3abwHWzwr7ol+92z4T8mnhjhzu2wn2skW/nJg7ml5Ojz7l3zvX79Y28Jey3msr77bWs1ulXhuyD3VFjOhmHW0QqHCJyDOoeVvAFnudy/1jMn+zmgf23U5hu7rbnzEV4DZd7bsSJn1B1qWRvZmE1thj8Atn2OnmD+URy5L2hWlyD1PWjsKLrp1xHt3xlkT4lurlWlBb9muyHu67B33rlaUswb/8L4Z1iHb3yF/lZkU5z8O0+p8jpsmrz4J+qdoC++HU71Wu5+/9bgiljPRkpn4yexCF5JRj7m+dB0OH8/lia26VVh322BdxPbmsT2ZWru1lz7z+DzYWnD5jQ16+boBkh1e6Tbhpn9Rrvgzx3r7vxmBmRZhEZu7xTyr55vJ7DJhHJiRWgbB5pxu6ho1byv2gGr2zOwqroCz5Yn3Gl852p7Vtanrjnuq+gM16F2rAD9qT0QFo3lg/V9zbnKVzIxpJ2oVOpNe6m2yu57e27o20Wjl/+thF4NW/oZs/nTlliDlwzJoAzurOqp9h+LxJnRCHvjWw5VmuurId03KOG5t4u+Trk5J8Dm2N9gO+niBhUrhrb2ytqYBsvDqyZ1N2i5z9mR715kQt8vjrsCy+rxBb6zZpbnn6JkJr9Bb8xri2fY/dkHZoYLhAJ8kuqNO46Vn2W79+terpt93Q+hYDk3J0O+nxr7RW0AppdFo92xguj5buBlmH1w7mlDVqFs+MBgvlvvO9kZgfulPmwHjxyXgHjutD09OjaXxmeq1Woc70sWl7Vxf20x+q0W5kdkN75iO5c5ozu8m7/qbo42i3rjP763rz221Rr4j1+3robVn2xvaJ+8Mqnbqh9whBjRHwU5/7+iyTgNFkYbgMn4shpStzxjpWtrQT6tln62mCphae+aO9hnju2kfLuTmiLe4lexrW+UG4/dyo74lTyGzz/5qTN1Axm+VmEhvTm3XwWlVgFe/mH2A5iwVyj5j1mtbrvRr+S2gxru3W0O77B9lqXhPrtqX3zmsW5x9FLQZ9iX8jV6wpu7b9drn4rvSFyxrvmhrE27erxCX9qOver4JxnVN6ymI+rjsewDxl6B6vuxPJ3jNm5evFruFHzbB2YD4RnnJNp+r/N+5fVgpWxIbw8e+cW7017+rzXrwXRuhev00rADrIFoBrudZ/3Lr9xp6JjbVp+l0d50vOiwz8xe2Br+PDyM70AB3XQO582kjyO+tRF9tRq0rlR+4Q1iipsiB9AO3dm5lzp65oIFowB4P5+Xxyt+99rkB1ihrgjus19/IWmhr0PjNSXkCphTp5AWphrghnqhBwbb707hKW4s2zhry+xjUr3hr9a2/hrlrmwRr5aZ3oBmLp/zWsRriphlMByRrg/KNUjmRryod9k14qpqVnqQb2Droh14h25AbhN5rSXj6XwDUzhx/rb0oJjY8obb/2gU9x0bbnPtkHtybbkM+2ZembbudFw+R3Tz2KO75HmBDjnn8U18Shko+ryByATxET50bhB1xY2rq26b2g7b8X7lq2zJO1rTqU+s7biDmi7btTWq7bzTWm7bqEd9Sn46skI+0Xeg0W+KD17b/kBuCXuG2nLZhNm77b18+37biZi2OTzmRwHbk99kbzkHboensHbhtbob7qHbgrnzRVz9dgATsM+2yT49l9ozsxRmY24SR/rbtDn8Ljuixje9+edm6LoCR6IF74++tr+12r57rAN81b0LV9Hrvs1tMp3FbiRu9FD3JbwDrrAN6Bbkae7Qn8t+sIByHuj+ryGV/EtvOOsTx2dJx9FOrDwkZ5Du/9n0+ruUZ32H/KOoU7jXu62W5tb/vKOPp9Jb89r2fOrHrkhBnWuy5uvHrqJWgnr7k7HbBjCr3Z24In4LWnPbovTofNkFDl4h+7U4fr7k7CVO0DbrqbpCkgkB3qbosL5izxSj/Cb+773hXtr7pHk0HR/J+9mVrnLvA1oKUkYFznO8g3chr7AJ3wrj5xp9hxUj8lu47uvQ+67rmZrr6Ogl1/nr0+c3AOn2jrWbpcemKJjrbgfrhEN+c1hUb1FOvZrlllSnbv4elgr1iLjqLpv9vieyFu2kz49TkRXsnn49C9Mepaul/Bn52/NFrxu00j+dV6SikHxyLW6mMqQ5jYhhqm5lT//RkOeqVljjlsTJ94ViR++JXztdoDH0O9ppVw9jogF9mRg02t6Nnu5zM1jJB2t5zLOhTB5dOo0R25jjsdthO/q5xIl642jFe/Dswf9lJRs5W8+96QJ+82kJWuJln1+212hGnikr7LRjvm0wziqFy8W+XWkXhoT9qLWy0h4KZ3vDkZ9sSurBR/lH7FbtEF41Cvzx3Neus227bl34IGV5vryA2gv0l2gFrjthW1Q0w5VmeJzaTpmOmfOguhgTbvs1hGtqDr6IiKQbyl+vDumG9/Gjmyh2Pp1jLqnF+N2mcl47ZnF+mozlZu252/xt41zxPLoH1mFZupM/uFw7r4S21tB2In03r9qXruW8U7l7+8HxqtrvIRn7ei7uxlztdr877oH246bupFv+rhdcqOX72pkmlwurhjDqAt3KTqFujFTs07lloGrW4DrnrbymTvj2+cW5BX8zOueTtBXo8hpIWzBXx/rgB7+lbkeN8JZ8cxzHrwhXoPrqgtrBbusBgnrzrd0Gl6HbwSNmFn3IjlvZvQ+1Vhwv+hNyrc74DpyoJ5o2gYz59J2S54oz7DBuXjklJqmex9FNpBqyrpAW+dJswO0MhuRXsPYFPn9du0In1rVhLnqrrl55xLp8drpebszb8/m6dr79H3LblBUlIntpBrOUHLrs/Bqb5275uXjwwljJn/rjt627VJgj+xRB6z+6VxqU2ljWpWOpeO1/+9VR/hpvCrtCJrrJhkT742o8Wk3r/jtyCxl9r0cXtWB1nr3T1/6BoKN2E1oxu1fTylVszm0057fd8KB1+hjMlmxe5OUVIH3qWg3DumNh8OsUt8JX7oJpJL5NUF+7r2H5Y1kTbv5XxTRn0Hosc0TXB779obgXDvYVmI54u5z5dv02nxbuUkweTncdgFlpT5hdh/PJjMTlqJjiuxibqPmg/V7vWvqFmJuoTOgLj2l9/IlzGklPRtEu1tB17unrj707mH1jrb4ieiZLuf0u6WqJLyNJ5iz/nu3CDkxX/+Dtr71pV7s236X8tpv3d61Rmvh4v9rVz2R2zTequhoKpoWWiS5tj21sx+Y50n+qKR+8bzOWoYFhRrlIiXg+4A5k5di9rzDrjpfP0H/pr/DrpPDmIxtlB2M15B+luhsMTsv+l6FkZzmqXgcj0uu252+wFxiDwZhrLr34B4EnxRXhtbprsqiXrIJ3fDygZxyXwEWn+njU+3Eh61ruWjt0l355r8+z0e9xlhSW87F3EBziew9hyq1t8ZxbtwEWnO+7tb7GOoVbt7cdsRu6uwtl8Jbq3+wd7lMB2eNvGx3Lj01psFX5TX/kbxTX6z7ieT8C5tZBruBx5WsTW89Om82jbegMuh9X2Z7/Sunm05kut0zvAb1IWodTgvzwmhstrhC5sRB45pjfJ0HVrJ278W2K1nqN9fdhgxokBwRX+Y2k0BhGlqtmvPD3Cxr0t9L9gdN8hO2SO2/l+pbiDmyyT/1Tok8vCh8MHsRJ5MW2YWpZF4zHt6zsmOw40qVnyedylWvtHwCVidXxrmvpO1eOyAlh1Wwk2qcD8AePUV9fL9tmn2BjtrpjT/L19Qb5EJluhrQbmP59fL3QbzwjiJr+pRzCeowb0sWljXzBbn1j6XWiwb8uxqwbk7n3rmg0W8P+vzh+rOs1sV479Mpgedo+O46VgTN2T97wbwar8HbuVHHNr6bmukRqX7otr6SX49b9t2i4+wWZ7tbzRbq9bhNy74hu6uvRbwg0gxb/WVlMBtIbyo2jIboQJi7R84Lsjm0HJmtux7Owobrt7jxT+mksob9F265H4zHqHpoAnmhMZiTkdZx8rtUXsvD8rXjNm3f5nd7yQphUO4Jh97cW5Z/cB7eFqEt8GW+au4uXp2rnLZ0lT/TxteFvou8V2pUn/je8Jej6nnxjihht4W8Xh+DNyje8RO4RJooFuKe/9B/FJhmFh/JzbOosV63enkB2r522J/GWjVb+JRtUDqJzpAB63R49k17e3O7tXsyiruOHizz1Q0xs2oAbqCkxF7i8T39m9THkfdl4gcR7wUOwzW16+0qRqaVzIhvEe5RN+iR15ng+2x352Oe4K+yLmp5OxPhp42y/HxvFoTW7H2phWtUZ7DWp0e+BO31W0qlhtls2en0e+/mrue8MJt2xiqRlXX/POqjn69rqOn2Ac0dJ7obvTTrkh5tTi7Oy6jlall75u6Zvauhtlr7OlGr+Iu+pd3GnuFx8db3gB6rxhYbudNpYbnEFk/m1YbpfW9YbqfZly23M263Lu497lFjG5mkpg4b0ormZ+nSx/rVhkurvVo1By4buI1uaFp6+vqn//W0ARk9TiDmp4bqWVkTm14b1IW94bt3Rz4b7oF74bqvh34b85T3mV/XJoEbk5FwFZ6aRjcx8+Tgybn8xqEbqX+66WxILDbKL0SB3r/6ZnVTiod2Exg/1mHr0+rmHe/rXiVXiVpsBrEhZ/rXpdrquXjSVvCWtdO92rhsD5Hrxxepm1pi7jtlkFJ/ix664Wob1Jk09rppOqVki9ru1ujZV69rqonwB75NWmRb9s2uVx+u51VegTrx4V/przIkqwJoZrxVBoRtv4tieR8jm/XrhTHoQb+C+zI+qrlkgHuydtC76zXv3rmDrm3r+Dr1uXxfX96XmQjjQ2PWrgJhld2xEbyJ2rSrqN73TbtEby2r6Lb0k7kup3X1xU7pjxgkbqaBt/O4kbttm0kbwIn9bBikbn0nunJqV2mkb58tip13uVhkb2sluWh5kby+D8QBrDLlCH0Rul3uxIB40J23rvkbkt03qBwUb8mNpiNyzX/S7zjh1Y157msTbjEbkXr6zx+gL+Ub58LxUb6JXlKrnRgJyF8lelyF9Ub4PF/HNwKZ7UbprVlEV6gL8fVgV06ou9qWtdxm+u4TVwpbjVHpA+grnzOx4KJkXmuQqIt+h0b/I55jLmPtnupwme4pJwQD615r0b9vW73BroDoep6OWkIz0pxpUB5NWg0cIFB+7tzBW1gWune+/X+vemE2+UG1S+sTWzhBhR2kCAGz2o0F90n5Ml+X9rre59Jo7J0YQS4NwAUE3l/Jew/lvHFmcBzQugXDhpL1Vex5u1en9CnggB+RbuJM5zxv1huFNxI36NBl3+9ap6/2+7jiGfOEluI35djqdu7N7lgtpIzl051rr9P141z4uVwqr4N51+dtoQZEVzABt3ehgx+eF76en61sMOuT71rmkyDtlpkQdu5NsjprLh9BeoqfLXuluW8nZ+WVkFBzUWzhByW99d7pKzhVnxE7wnN9129drn9bi+OsDx8UZsoKIruwrLc09HXe0ubouW8ubnTO4Yr1E16xrxtztEpz8Jhub1Grpubku2gAp48Otub7Bsxtz/cr+a+wkJ3ubw85pNXhDn2oT8ROiBH/NXmPHhh16qWu6ujSBhjr+TR5ZelaOuvTrKbyVFlebqDdr3XiKDjeb2aCLeb0GHrQTyQOqegL61sUZ1+x4/dqaDk+b0Azok2i+bkxXq+btr7hHm0B536XncNyA3yzO5+bk02nGpyzO2rzkurro75seqzzojNqeky2lpeb/Ce8+rwydlO2jYJ0BbnMt7XMCBblaOqBbi9T/5F2Bb/0iz6bysu9U9lth76FrvL/el4cOkqB/K2vm+0C77SDsGl3ABlQ+o1tktTz/5qgBlPFsle1lhktj37D1zTmwzp6VqgJ3U24r7pFL92hgYX7hrxYrqV2lGb3Ce3jrtvm76FmvluTF9AF2E02wbgrW3X9kqBj1+7WWw/H8wqT0J38u8kuiTjqFbg6OqpLuHhl3+pcJwPHoTNuJhjq5mrT1qd+d063rrXJ32t0dR/GWwORjSRzkuke2va91nOtmBuw+lzzpObg6t5u50j91JtI0HkO9pTrxRO6lZxPtgeu15WmDrkeUnRHpytuhBtC72ChkqO1GXk+Wx5bmCX7jF2o5o/jkt0no7ty78zdiZrlBBzQD7k2sdDmpd/IVsA2mJtTmpmCht656HuxoOg5972h5dOqc7zJJhTW2AesDhumXztF8ZO4vW1S+9yRj/L4Du3ytyDuxKF+YDgbd3EJtT5o4Wl4Xxxbvn99tOxdx+NpikZsOe4Z9jI74xW0PX1FXrEXswOgvmgIxgGV2azzEbshr0Zdw7Xtk3vFXmX73Lbo3h51bnymIaHslXneXqDev2D2FWrZVmbOwmcwAJoAeqI1u/b1PFmybpW9w3Og1xtYevU+5Bh9eWgWWuuej3Wq6Hz7O2NVmHH03RusZ0XH2P+/7u+XW0TOw8J/05+CzwotwrXhodyM19XuucR+UGwhNmAbv5OzmBrIF+Lu9uOnl+9xurfV3ih8Lu7NOvBr8neuG2+d2nLJtWLlWN7c3mnQekVguh5x133+7Kz6qr2as7bz1jt4ZdwG+gPhjVO4K+sxD/eL5YQMWW7WrgPXx6D2EFr6F58O3S3y0Dqbc8wN4At78pnJh0he6WhryV3qF4gx8arjy3qS58mk2JBqOzlVuxepiGp9y7lBpkputTuym+2EjxqF18OlJ501ZwGFlwe2zruRV6RO/zD45rtSesZVpA5wA+uJRivUDZ17eOyBliK3+8xwdegwhtOLt0eztR3GNvi2mMLisNhFn0tW1NbsyngFXuAdxDb9bz9kRljmnBhh/LqfLjNHkqJmOT5NUEtb4/98027Bp1Chk+LwSx0GF4TH73r2Zp5VXksZ/hXmURhC3nQ29qX8+1kzbmH2wzb/ENoVblxt/ol7vKQdbs7zq7mqVuoQByX5sdbiPBhYO0w5/MjmdbsEloKtlabyw+rkexb19JZ09Nvn+myDvyj+9t/lXwV27dbtMN3dbvbX2gJkHt8Vt5Qnk9b6InhJh7tby9b2Ib87Bm9b+9XkhJwQd3JO6Ab8yDl9bjWD4q70tux8x/3179b2Ozm+l86F1RXjzhjCz4DbgDriPiLrbrd3AkBi42qDb5izzwBuU5kxXu/dsxX/Zt5DbnTu+kx8lTtcOwa50d27DbpXJ3Db3jGfDbw0hwjbm+Ni/eonzvFHnMZCjb22jkJWmLpsfThLOuROnY1TxBhjb3W1hPJljbxjmwDZx17knWoQbot23GNqS2p+1/lXirO5qu7x+iebkkLmCel6F5pxlxHyLtz82yJbynuh/x+Hr+zb8VXu6sqiXonKewNuL27m79JXiVFwzb/8IIYp7Rbqk+sUW8B7jmBgTusWe1rr/6N8xl1fOrl+pG7itehH9sO7pKHzcrqDWko1hhDg+Xh029mRvG5lPRm0+4Vuk4diT1/K79Q+ig+pZOr+96B1kUWpiu1T2kyZrcB+zTl226WtvoeEdu3Az0q+pDR20rgck2FusB7qcRqdusibxDoyx6ZCr7rugmWhDVkGVjD1kE+pTj84k8Bx9XrmwV84kz8O2Czl1LktLsZrzQNtU+k6Lw97yQgGZritVNjemdmou5lz7jErvnT+lOjqbxVBhWDjZ7hfkM6XvWJ3OW7QDhuryTmh8O4uVyPx7JTtL1rOJpUbwJZiDxo5pwxr8yO5FlqbumquxO262b3O3qeOnDBm+toWOqWO1iW97ljW5oN500pPzm1Yh5IxrJu/8JwERo5VqKRkUj1keuTenkphSnrmhpEL1MZ2cZ9lMhT+i9loWUwA5+eTkWBk95/oFhZzzyD/15mTr6ARsfr3GNpwDL4FlZtuKVnc+zIF8kpjuW1k5lb1tnOu5ute7/WttZbj9x9x1kGbm7e1Pe2/+7Ar82U6PO7Nlpp+44d02V3wbi6t2AJ6B9vD1/YWtb9JmXjRWykDwfFv1r+h3yVZyV9rlOxgR252tG+39bm+h2blq3psIiUYBvzJICs8ohh4dnaO6r+ue2jLm8wdgI5+11VrVxk1+Ea1ipj7X2SlrM5wkhqlegtO+T99tTp0rpwh0D+wrVzZe48xjtrt8BsAX2TO4pZ4rOiH1jol0Vus4JysZwz5+IXiRZrr5xRLl2O1jU70146XrM52ze0ZeLBRsmWjphy0UIZOpd2oSFln0iZNgnTv0z46Oq+Vw+d6K2m6DnBhgvh96V3AdmrejYJ6BX4kknbdxjbgr97dWgT5+QAH151YZrIe1bJhKer3eiNJlhnn2ujbKNxLfKk+hfQMbg6JmOuvC+/J3kPhyOuhqk23sEp3tBiMp39qkwOu7yMy79uyM69ethfKHM+p3p3CgvCaqHmnZiPb6kgeM24oHoI9oakpT2zp39hW61Jq5t2It/p34f80Pbllhrp3kZ3np3llh6Pbzot/EzrBJ1++08TuRhz+u6TJlGZm9VziJ8g7i+ugWTqVxlW7iIu6s1naN8QOom++i9o53sW7jK23nL8Xb1pO7Bu6QZqMupK54AV4wttORjyR1tm6RxMAAMduq0NzDZinjj1t5Bej5H4IO5w29Ku0PehjR5eJzynuQ1svBvrV0HHrEL3md4aW6vWuTl7fbTSn/uusFHtAX2F5o6N1EOvNHxZWtuu5/2pBOv42os2miJvIk+CW5Id6On1KAtotkaJ0ALwwjliTn7Th6ixMR7I1r+2zSNx7Z+SxsoXg4B04bpMDyX5pg92bhy9NtoV/DexaDssnr0F2EU+3F8appSL8S9w8+2zHpU3kd29TTunJ0sJiK36v7hyTzyRzbe9DWuDhgvLvMtys1qj7sApzw9Bexy+F7x9+0W0QeufjskhicBiPt8Jtx4LlqhyR0iK92sWBcZzsO5nDp3Nw/1rC+kKTxyuvkOuyR7gHrt5+GdsIlsdbs4jsXHiRVi2VlLBpSeqhJ55e7WbzZn8ie4Xu23m1z27Q2xAxyAtksB8MJmFh171/AWmvOo5u91bpE5t4umMD5TFySF6Jnmebvptj6kuupb/luD+gerqyzvpTtLRpZuudN281s5uld5zmOwpD7rxgpWtQu83LkM+grewFrtx9v6ss3O0uLpWzxJ30De1Fe37ZjZL3jtxLB4gp1YW1zJtsl/+rq65hxupjZvoJ8PFtnFxxF9QR7LO1xlxARpYL8e+q0zgkljkRya199Jscpl1JmCBweBslVu1B7qOhFdxypjZBkE1v4R3EZ1u16q9qGzpPbkdyxiXjSRsnJrzJpA+x6Bz8tq2O7xLlKzi/tzZp485ueh4YDkozlFugpelxjhyT1tj2V3xtp/Vukv7vq53HDvs7wLusDhrSDnKlsTtj1l6g5mJ+ttlr/+9stng1j5zxrlhlz7iToYL35zgHejBZ4QV8l1mel6+h6s1jDB/qdiFzrWV++D+X9mFzlYLgsk+Fz10tpFz6EZlFz+VFlpZ8B2sQJl8piUXgB5kbOx3X10eglzo7WolzqUWklzurTqX5ugu96u+RNhJBmlzhPrplXqD3y1B6OEAOXlrxlMFp3NonnoKO4b7qJe3Vhu136BTh131BNjxFloL2n0pJNwy5/yh1G7942u4RsEpjWzkvh2Vzt9m0O+73jho2pVzuAX46i1Vz961ywnjVzuj39zuhj3vujrk1vaW28Zm6B6Jn4Hjln2o8CkQs9AWhpF2s+iVTpY7z3O+jWpQ7ktms6DuJ2qtL0JZ6G1xFe6Ses0+3tnhO3up2kduuRZ1ipnmXjIjyMZ33+pZl1s5z/l/8B4kTjlR4YNp391DO2n03D11QDjK75ie0zeuDHlJ+r72of10uhmAH3g+wLD1LBlClxWz/Lc+ftv6BlOz4MRwqBuQNjvdwcOtkjgpWvXB5/HhLB6he9XWt8V8XLnTerOttQB5UVrmj5qJ/NO/Sl312r5115ffpZ4SOvqb4JW2DW/uHj2bvvulaW9KZs6e4ze6ixhAT7ThmkJtzd5stwEHuUhyQW671tZlwVzjFF0+rxUDprD41J5Flwnp4VJ7u58m9ngV94rm7m24rkH5nt3lFJqQO4hBi4eo2npFRgL3ofHaOxnv2yaG5rV0n9sAp1Ku8qOvPKXz3wrz3qT5sem6ByILrqe2g+j0Hu3dpAR8fpk6D/M8jzul5W//J7deiqUYBdr5ByrzxO21Yb+wRuAt0kT0uW/55iIO6E3kUhlgNmdJ0gepGto5Bz9N6gexrFvoli/NoTXogZjlJ0PjUXusltnTWnYpnuluSe8oR+yp22jwpN3dRiperfuvnp2KB6TzpFl21BwZH19UrSRnSO1kzoEzr55xfLtoz+97/55tLd1Ez3jmk8NmZO/P17+O4yO+915Z52aeq4W7r+9Q+4HunN1vg1pt74PDuF2mlrtmV/RujWrnTz9FBzABsxL6UZl+e3ROhe12t9kbzuAXrn3qTB/+hgHR+4Rnn3s1c/X+q3RrQJ4MR8hboEbike1ZhyZZwk+t0tmL+mAHxGH3bnhFxnr2lr2lHJsphreW0nD9oOjOn7r71JWzV32aHrCpnGevmpyPh0Lh1Nthf9smWmt5pPtyZ5FLmnEB+33uYV/SZitRjq2mM5iDjwfO5rHtWFpaWmoN2pNh4rqNJhK5lS+uC2uddyte9lboW240H0iZyTTyNjoi24jt0LTqA9kCAcXZhb3yj2k9Z7/bvpD5Phtb3nKWyST1wj2Ad86J81p41h+N301lzwLgzZojhtPzxc+9YpvU+vNx+35md+oiusoN1Gk7ktqS27Jey194RL9SX4Xx6SxgcWtl1vpZ7nbyAOjzz/OzrsL+XKCvhot518b1ox2k5+Cpjf3ljx8g3LiLg4zjPLxO+o5W7PLqC16zxylthV31HKIvLtdDuKLphlnVbxKLyvLsiB/fOxqNgwX3Vun922u2m5JuX12Z+omX+Klgz19OVvruk4NxK86xRkzOupu0ApoB2v+e0hOn5BsnVkSuvahhTr92fH0Zo22z33lcLqhdvk9soeypR31drNhhesgSF8BXg5Rp/htv11y+smW23119WiUBtwbw+zySKgQRzOR0I2lr2hKr0lh2BNwM+yfLvQdx13xrKC/LksDwuTtLRxnujQzmwT3LTkTFhxz0B5p8bim7k35oRL8xezF+xAr0RdzOWmER7/TwMXs5T0D+7Thvzbvde4vW9+W9AuhwRjONjV+u7bm4Lu+hzN348pipJtCFonzvP56gP73LwgJvytjpRhsr70ntFXzVW4f92QZlmlnpp2bmwwlsoe37ZthfLVLqX5mC3xBWlqnxAUNqn5Jznktrkh35h8vKbvW15eushxp2pEk2QWoL2hmRwfJoDxgeu9YV/Zt1R53EhrbJ/fxoFN/z2qG91Ld3nJ/WpyXZoNN6XbxvZpSxliJu3R0WBhCtqELil3+J8v2uz6MgKuvib2vmqWZrHb0kWWrdCp36GMvUpy036WDo2N/31q7lyFBpgl+uWm7e7P++6hkN9sSBnGbng9pvT2Je7FJr4Ruf2gIF54t39Oyv7yq15MNmaF/CR3lukVeh196wJrq1taHsX5z6O/IF0zHiuhhYB0HHh+lkUhtsNrY1nBpqOp7DBw2O05x6CrgBt1tlsZV3Yjk4xQAJn3OwRNi4W/JeocOgf+mCex0lzExy1H3Vh2aVpTF1JujblxGM38OqeerEBokZ6gjwE73fkvud4ae/Rhm1R3Uhm07/k7JuDrV7iIr/DsyQ2sEz3Pm0UBxdlxIP2KHx91wCOhZ5lcWySerSW0S9/7l/HTn4Rvn+9+127ukNektm1sL0L56YdkSxh3ezHX+128M27QhikZ7HFx1rsNWscNhyrtlz5Cn7aOgL7kZz0En5/D4E24Ql5Nz0BOBBhmaH+q18B01g3vVLnDO2g+/3Hm+t2tF/9Bw+1k+LvzO1+5jsW1AqU05vYXjnupbW6YLhcBzIN3+123zFATjPHtTevaW/QJxkZupB8PxxUb1CVlphgLu4Mp4iRncB1PDhkX8oW4hxsEP9GXv4tuJt1TryiOjx1oCLxTrp+npm5orOgN3402tDRhx9ou2wkWylnkiW/Elya2qJzwDppWDyRtoQR85V9acwNTi7ti/5jpfJvlut9vaWlFr6kOk6XmvstDFkb3l4t1H+3NHxGhjV2soNjqpta2wTj26LpbWg8b0oerAN0Yh1fXhkTz+F9vBhkTzVh6Rzr2eumV7ybqa08924ozssuxyul43qHn4ub9Ek1o5gdO+GhldT+H33c7yUXivJgIuwIbwFt7h3/HNgzz+tt1t5xhBh1T4DuhNO0yejUuxrek0WjOfRrOzY1iBHzY5z+FglNj9FiKR9v+/ZVyX1tXJxtJ0XYN2r1iW7J7/Uh6/kPfz/K+1Te1BhgUB/wZtXsxMD+7HtPbjqh1Kt8KFpzzoAPiA54cxoxl4ThgVnvhu0YPvJBvSk82tzvLs9R7IWn1WboWrJ9geF7sF7aOjnd0EtsKh4A1vvKDq97eTsN29wF8vxzXZ8xX9fksRlivO4XOgpH13LwEWqkd7iW//rvmdhxO24uzvJxBD+U2tjnpEevpdvRX9h29i+j6xuiP4U9tdW0ZJi/tg5B3C7m1Z6z+1An/PL9IhwT+6W55BrDTp4Wx9pe7mAFIJnAxkWenFW2rd9GBUUBnTd06O7al/srjBe9Mr2nmh63rzl15Zqtu7l8vchpTBvG5vJXvFeq62/6On3bCLe5cX6VX75HqH1rxBm+lufc5qRlq1g0WsEHn2egDp4YexS2mgH/tWjdtj0WvFu61OoJHj/umQrwFngPzgVjmhWvm7jaHgH9t92/gl41DitOofRl5hzoO8Bxv1l99lpch1Pbzfhs1plrez+Hh0Dxru5DLteuqhxqiOpeOqlVkjRqiO+VlyFR1ddo22uqFjt3jqdvql6+Xjy7+PJm6Jzs9uBDv8V3ALkc3o0em4J4tthvWk4+n3l+PJrvV3ABlJNp37yfNzXmnR5rizxqVu7m7+O4a2oxW6hr9DD7fbBhWpARuBh3zpkA+47L8GWk3WjE1iFR9PT3eh2LWoeTkst7ZN8Ze7wUzzm/VzzPKaZeyTR0EbkCZ3Sj6ol7IBqTOuTWzb52k1rQ+zzThQ+owzizD4L+k73sIhzlH20HsQn/wBwGFvN5gNJ8eB7WWl0rlH+8GH1OryMpv/UwBu8IV2ZHlnh6FWzv2/jW1z2tmd/M9909s+snOJzmp96btM5yB+jFRyYdrh2oIxwcWnWfOGu9Tl4tew1p6NRgfjCrZ9cD5PxpIuk52shcoMPoNJ2xu3Xx8LX2W+j1djuO06WkFJnbl53e60u65+gvWkEBj+ukB+0onlhdvhOh9O7KfWkX9el51R+bO3WknktwTNzQBxXD1nQcQWh/TpAsJbD9Z2rEP57VhN5yLJnm1ok79+d451gDj4znzbB582rHmrLu71dvPuq3u4aTpnu6EDy9V7Q27sV5vepE79Lx/QZ+CTpI1h0WrlWlNmh2VuuXuVO4+BocTr7VlJWsX72oT5Yb8fOrHFmUe6bbpcWuDBk9lqRXymZowdmjX9jHiqWkprnyOySh6Zn8zLzZjoz3tR2tFuwLNmS7/rO6Seogx58dwLNiXWujlqrj9P10oDggJkX9j+ujf55O+iSznvVlT32ye8sNnlHyTm1Fb6BBpXjgs1yZ+rtl75xRvFuS38SujzXq/Zxn79ak7TVp2JzrR43To/25tWo/+zx5un22GepOn/RNznn2671nHshF3rJ/+B/sxjRZ5rh9uxv131jH/JdsSB9nNqGljUXtczitRpmdtRe24n59x45J0Uh+heio2wSd7Ohg7hgWd6Ku1me0U8vpNsvZ0qn4vF6I5mA9piXxM5kJu20L+k3qcb2T9gsR0LVlVZlQ+y5psjxrVXv/j6PumXhyvZuHhs8R31WslV3UhmBhofBu4R9Cp1T3+przLmg+e4nWtte4l7x2D++W+h+ofZxzTzI+sFu/WVpBW3yO3yp9gBpyZsed/KR3Ud8lp6VuncN7JHoELq0O5Y5tCnjsOonmjsF4et3jpvpWvu8N1eoJeoJB3+OiRhqDx3Z1k0O6l+2xfcxktSO3EBxqz4crkizyVXvYhzwOgRB1z1pK10tV918xoOwRnh8F66WosN6Suu8t5Bk4vxzC3xSe/XN1i7wEzmzh4/dkIV9mDwnhiF2uir2rV4j1+d0urO1p1zeBvHFz7xlBlildoolyd202+8QjpgWkH197mtKbymr3GF/yH5tbhXruMUhpF58Z6SVmMZ2semFRuxxgNRokZo9yttm6ouqsevuujLbvg+wCjgeO0mJ9HXk5JmV27DXoQWrEWjchmGjlHFik+39+jgu4Ehi5Wz7xw7Z0cV3FHsbT9j1johjYljcWj0W6Wb8850w3k5J3SXw3u8ZB9TVsNUsRz8QD6WFkpWz0L/Ds+XWuZxkPRpPHqeBwNetSZ55ppbmnabm0UnLeskW05Zn3N0mhqhPwvBvG27W2n9moUWviW427jxPpyRsGJiDhhAl5AWwEHs52tKBue2lNj1RP69ZmgqATm8I2qZL3VXv5ejTj+YNnr9l6Hm0uvaNtaF3Z26QZ5pxkDd6nJ8vL7TetCegkP7plUgN9ZesEx4lO37V9I3oJX5x8oscx4+q/RoM2zrFg3217e1ecA8b0OHvDr5kx5wuvIJisDtwemw3vvKa6utvmwwx3zDxe0yXBsXFz5Z7ApzyO/5xnpJvshq1WwJHg01oY96vrhkRguBvl+1lZjjhvSVlyTvybmsWv8R0Qeunr23li4T/0+dmPpT27N3ri+mE23onysht/OmsjofOoSe4cBm4TuRBwIeut1i4Zx8263J0Zd7CDyqjhfW/EVol7322mCh5M5yHZqvFsj7vxW1Hu03jmmP7o2oxFwqn7QV6ezmqh3KxlVW8xH1IBto5xBL04B8AB0Bu1xn5Dms6ByyhlOrmLt0eB9g50nho1FgqR8bbqRtiU9iQH7xrnNWqjO6QZisZqw2jO+g9muf26/Zt8XziO4yH3hXsNeyPh2F5rS23Oe7tOjFLxD+yG1mXutpVqRRoGhyVH3fr38WtGpxXWu6h8y+uFTy7p1+h3Wpj/hkHdyjhrF25mW5Fl2YHudW+PHkVhq5p/QWtG5tZX2wNssrx42hoL66jp5O1mP4luxaxv6J9I9qtrjU2kTz2vboxN/723kW67x7NbxdB1FPsQqJbLGZ2yaGqk75QZw8Jqa76rO2loQs2pX3iZeqG5uZep1ukFZyUhkz7sON3oV74hgp2y4R7sD7xh4zDqqj34735t93bzIFiD58H2zF+6wn/Cxg+BvvLw1hsb3un2h1ZsAjjZLw3Do9934R2f5rPKPH7gKwemP7+r1eLjHr2J3i8B6yOp4BveJrN+6gjs3+0cF3Mrgvno712RBx2DwxZ/LckhBqczx5u/DmonFjKd2E1uoAXoF6POyc21Ktyneg7Z3dO/8ZnwbpIz9EFy63qcTjPR+K7gNj3ADyHl9KTxye9Iz/BpkfR1mhyRViVHwpNoNBn111kepjRrQ5tyTiCdpQ5nsV+RZva5jKJ7lZ6e2iwhukO2xOs820tT587lrh5YT3gemVFs72mP+4eD7IOgFxJTWxnL05lm4kuX73k1zZ5qehiPdmqB88l78T982jU7+5u7J2tC29Ddl+sonm8tz1W2yTmptOlY3heO0GLukH8k7/P21cBvaxzCDp7+9tZxw5oVB3PVvg7p2WhltiXx9fu6aPirenvVxxVz3elI5jvBlK3gFpigZngLlvL2H55exjs1kkW6ID7mt92F1ALlzRppZuEaycWsR2zEH8tRiLtuYF0JJ6hBiAZ/NP7XKJmBkhxpSZmc9Iv3nNF3+OHFLgKXrxFy4t1T1mvzhbbtLt3qn+HroD2vLW0UB4NRnpPsvJvJNxJOtdB8Grm99tT7k5u3I2NQu1j5xU77wJoSu71O+tWhdAKYb2X17z+y1J7oZ9wl4F+mRPwq26nVrTt3EB8oRtJp9INvmR1XTqCN0K3agz/g+sprlRx1r+uXJrMOwoxmc+uOL1XTk+lhilo0h0rRxm+hYRw356Le/TuiFu2+RzzjsfhsgzvPe5itw/eh9u9A2+2R1P2lMDhXD5OD0i7wAWkdWl2T7er9dLtVt+yToGR4MVlHBsXDhEp7rB71h6V54aW9zLl6Bl9WuUeqbR/YWtOlk9nmjm3h5mh9otOiy55MTu31nUO6RDmse5VJz5dsiJpJn0tP+6hhoeyzW1Xm0Y26JV1SzzpBxELjAxo4Opu+66ezKRxaTix16dLqA3kiJ2+rw/KRfJ9q3noz7i57hH9V+zIp5U5wvXowB43zycRsSejqt/w+uBh1MWrKhjnV8OWhXZqaj0deziXsKHi9F/Pb5hprfB+ju+xPjhlpFVupMl1Z66WjNBh5tlNWyR3g6Z6POwt22/r45jkEJlDJrfNzu36VPzHVuq2jCl5qDt0boEexZ+6Me42fdVDrhlhllyYbt1767UlgP6tF3Fx1N2lPRnoBxJbsAB7VNoNpr8b0xSacFjSBv4FiyF9eO89O67e4xWwz5t/Os5N6kZy/u62noMkl75k4p60+ufpskbhePqXFw75mCe7KJtMDiAp2sekDzg3DpmFs0+iTOiUnz9XzmWovF9WTypP9Au3qWiMtnT7yXPn7zr9RhTFgaFqr24l27kZ4ftyx+7s7tK78Z5+qHhx6GE1oputcr7LVjeO+JVsCxqJVv8V2PBlCuj3BsVjr89noRw93mIxvf9/oD/Sh+Pz3uXsWJwVB89Ti61kxxreBzBWzspl7Wns52q+2jbuK2p0O63m9JHm0Uuj979WonBqX24xt1kurAR+wjt1VlxWqDrri0gzms3d1DWzoWySF2zPxKlmYHqNd2ZhmUNxnD/ZPs8l3Dlnu9vPW/5u8VTwxeyfZilrgvxmx1vrNoy90CbwSpt6D40eysh02ZqbsgvCPS70/YNCboFrpDVgfOsUDi2fA+B0l1mzXyttgVe3/V8l1t6BtphxvFk7ujRlngurhrsMV7U7wsL0cV4x2vjhvrB4rLhY9+J+hUZiRH61NxCFi9BsD2xAXi45/LNqb7q8nyVB4z72kXpGOhlZvcWjbksPmqeW6QUGj544e4uN5O7snVgzr1lBt5WySF+Z16oRkgD3Tmvs+88Os+sn0WyOFtf7sWnv6RsJ2y154r2ruD/05mapurBwebh32mgO1/t+71mbex/z5AuvyWjFuvpDxJ5kxetCr9P1qVW/F1jxR58hryWv4nETmvyWmRxe9285b/funtu+e8YiRiaVoK1zJOxE7sUOnndyeOq42yRbzgZta76l+927l2TrF775erQ19w9yB0mFB8pugrJyxn9sni7t2G5rkhhyLo5L+Fb562jnL2hFp90v5x9zL77j0WPjJDrWVjbZyy2tOe87+jRt8l2gnz50Rqyu6AVhL3nipyZjtD3jWDjiZ4JrhX03uVo528iThD1labkOt29J33+hmh7F327bqrnvjO8WFqYzwRhmjtpXjzDl28xrSRxr2scr7Ex/FhwdB+FjsphlDJ3ueuq00GBiYtki2zTtmuPp90k8B9o92IFofW4l+0fO2vDJrF8wr82B7XRkVBpbtmM8ltO37Pu1boinqO7ukHvNWqD30aZpJZzwrx1t0Ox32e8UO/oVhnbjYL7YR8Tp7Iprdq0TFwXxgg1rYJ2YJuNh/kulgPhPruUxh/x4Vpg4PgE2luWhHD1zXhb55F8hllhHB2Ye9wvkt5rJ+qeOrR2sKFnh7+7W1qdkb21913T2iJZv4WyDF4mhrDmvsLnD2xzPzWjzh74oRgYFtyp0HHkpR6Q5i5RlnJqq2yf7q1Niv5zAW2WRx4O3we0h72oX1zO/me7n+1eJ4lJrPpyTH6chvLD55ngIRhz1w9Xhjm2+n0QWyy2v8W0l5gzm+Q5zBXmqxuUBouO2OLp5Rg12gOOgCru67837imB7hP5ex6zu18pun2odxriNt/9/Wt5vRs0boYp9wxy1bqABkxbyHR/o5322lfT/+P5FLrU5/8T41HtXO5klx2plfT4eu6zJgselch0l9zF+5Ljs/BThNspP5hW6NW18FzrOle3p90ih1jpP9AO6Ls0Fhr4R8CBtJ21tlzsF5NZupLztxvSurAhwFNvHu9G9grOinZr+5igugj5nDV0uO2MlwOVyXp+4p8pLpBtisTxrBm+Dw8h3fDwEpgyHiUvht5jJPmWBlT0qAvmyOsXP7phgXtiXW0HLqxhuL2/n5oG7sCuhUz8U7yGpydr5wt4qO9bR+nhjX75Thj5r7g5pnTokFxyt36u79+7yugWWxpWykDoUn9+Bmw7wo75NDilepBe2ROyMrn2elJBy4t+aujHF7jrtlVqHW3nO08OlkeuFLsjh0Bn1UWvh2g6RoRBvIJs9byxPjmR/Mxk2N/SV8D2xyO7ZVw9e63x0gh7E9toZrYx7WOluPsdm8ROqi9hXWu6H4ZlpZDwaV6nz4Wt0s+htZokDqLhqdH47m+27i3B9HZ3aerfmxgNmTzjU5ulztTxoFByjhmWFg0vxSXz9ryQ2jPDnmD0ZeMR2upPxuhhM+vjm7LthpPiv+2JOobBnHT9v9nH5irZyIrtyj8FUn9LixurVx+NDua+4BHkTBnqjz1thku4pADQNsGe1KZRW+4lLyL5uj+lgzv5dpA+8SplXTleJuO37quj00z8O9D2qmxvw24RVpMZ3jKKQN6HuzY+h7KPUpz6rw+ToNelYe7FOwYe0q99yNlXRqkZyZO6xWqx5qRRorjjxpnM5lc79Fb/e2/CDwjWoAV2Qh/XumSXi48uwHiWXnk+3VupNuu/bqpuqk1/iOtW1kql0Vz+N27/247VkiRymBpZ9tJOiuB6q2hgUObrs0PxLD3i+zzl6ANtw96INlzRmneu51rbOlYXpgHhpn+WR7wJkjLgtpqTe+zX5IX3y+l8Tk0OxBRnKBx316Les827sl/Zxtp53+epJpjY8lNBiEj3zppXjwnOh1+yCVjTOqBXpQPugJtlD/t1oMk+2X94BpUvMxL67WxNV/5xxG1pWR+eu+q5jTplfTshL5IjvVlohLhXFy+7pX2rUOmd5s6HuAxqf7+ROhWe0/lqr27kPrCXw8XqnJrtVtgeuE2gi2vojpx+7BP3F7q6+ocFuv+swN2SToRZ+8uh97sC29uuvm2leJwq9zaW4qh/rFuC22c1okz5Nn37z5h+paT4tng0dmher+j0jRmp22ld94lqOFhSZxp7613xV57dHq0ulrH4Npr528Xn5i2xjhkPByPWkd+khWgA++qzohWz5hozmgTmjsZw0OjgPi9njIWjDXvgezeJvMBybDgzNxzPzpzn+10JR0IFmItvQnv2346ilPlg5Z88jgkHncOiUrs3OzANukDo7P2D+hwe6ox6wVogezdutZOwJ5/WVgJn979ujm1pJmDz1ivxipuDZ0GVptD0dDyR9+8hwQTohl7xl3FbncxywBtfchCjm3h3k+vVHwnjglWsjm03BtGOwExlTm1VT2c2qc79Je0GHqwp/vhoaB6UWF023/ZlvRhMH3cLqCOwFR1mP0J26JbkEdwDbxyF/nO3h51IVjZX2Utmlz0tF/UvuV167mopbsi1322kOO5hX85Ok5N1MBmOXr5ugBxtzFnsF9gJtVx7plJCeojH7Nu4ql0hl3r9z0c0rZ/611iTixWwApsiH6+Dy5Pj7m9Xm5lTyi54TDiXO8odsY9pyJn9B4tB2wp6+12KOs0BppWiYdue22Prs52nBT0RzvBTjKtxd5h0rufhxvBjHmkTRz6OzKLjAZpIHqBD7o2sD1xyFrABiCNzSN1FFthBq7DiI+g0Ww9OlsT1tBxdx/0b9muvRrnMtzHKVHuhPr4xRhU24mlkz1w07rlzjfO0UWq72n/lzR3h4b36N0Hjwzulq18zJ4I22xfeUu55LOinqitxNe1mD7SJ8w3p3h31WqXB6SRiIXiMul3+0BFyOXqJhjQu1t7zs20rW2ldrzRjOF7Kx3/Jkl+rAn3qRmyvjOFqMu6FrwF1yRbojZ/VQddz3Sl7UWoVRn0jwqx9bRwrlpGzp3hiLrxcV6ypmJOgDP7Thjgv3+26z+9rWl12iulnM2qwOjs+ntB18O0WziKDyCv7kWyEZ2jOgaj3Gux33plz9spslx++NmZBwne7hnx0x0SX2QWruvp62rTL4FemTr/NF8YF2S2oXJ6i3pYR1c29PPhpbvRx7NW6m+gfdxNe5WlnSX3t58s3nXh3Et9ovxjL0eXpCphTL50J31LoWNjthv4Wn5bvkO5rz70Fmpntu2jckuoNxAnsHN8V1y+F90bsY10MzvxnpxBrRP5txmBO/nJ2+22ROnQpn1Z3+24TJySviKTnFuq4ry9T+x3kNHtxBgDWww5htHvTnjHWwM2825tm+4tJubP9RX4we46dzJluUWl11kATtVW2Dj6Ce67Ul4R6wnxlb84t8BJ3H3vBLn+FnJPsH9mxnoiJnE2uSrqzD1SWme120bwtp1pWv/VxtJnrzehFooWg+p1A+zF+7ONhCXpINxMbzoBlXh0TJ7Xutoep4B9sPpTJ70ZuDxzLOtZV1xHyvxmuOiRWyxjgIx2tFpWr/VekSNnGWv95i3JntBj8xq2t6Cn7wnq5R/qXseuwKZsc2gtnnJ+1y32/mxAUHNln8xnUZ+bW4kklnRr3F9rR/lx0rW3O9qkTjIVyZB9Xm9GXhBDobemPr9HO+WFixBvHm9hHrqdgWVr/ezlWq2ploO3ed25BmW2wrVpav2yz+M5xONvIH8O32pRvHR9kFmWt2pRt0BuaNzUx35PxTl2r5/+BoxH+ZJ/dBlYXkAto3l71h4ub+qn8eDtT36Uv+Ob2AXnr20Dx5ibwTxnru9PbuyD8Lu96ut+P/LOiHu27NpHV5ZByvRvGWh8Pu393cUrqB5wxhmjzAb4vh2rx+pB/bBnkBlGZi5+j6zmU00Rdsonyb+zovtNO6Fk21ruY95j+7UBkaL4aut7cQDb4Mdp3OiLWsMd6NBte25bO+YO5wnsUOu+Ft/O0nVqIp2Z29sB7uO3+OkdW5Jh78h6P59f+wP26nmx+h3busyPlJ0NLx0Jz3k1y4L49n6EWzN2oWr6NBuyWrn2zO2uxes0eudl6bT2rTtL2m78yUOowv0blyBO2LWzTF4YTn+182JwBemcZskb6PPyVZ96x0O9syn/dxtml2Avv8V2eu4cvjNpq2X4lu6ex32Jr4ZkbW0KH0Xm7/e/jzwRtwz+2Mxwiuvjm8bWpWOmNvxo5s0J7r1yhO/P344O5yZxFl9/kQoejndsiZvAV0+HucB/b375lyy2uFPkiBstmtUhlFhzuh3j3vOJ2cH+DBnkl8dX7GTwzFxd+wpl/+Phadlnuh+eohV3Uv3WPxyx7Oem6W/OjxnJ0QNnR5izDs7+gp2+0Wl3+pLJsL5/J9tpx8SW0JxmqBnjmnF8zGpxMLlt2+au3aPzJb4X+nFXkVH4g3ugnpKfFeTmhj+petjB+5exmdob2nzuoejh8FpkO0zptWOrAB7TBiktqEr7ONqKdsT9ocWoMtjojvA2tmB+jzt71kdushDq+PlYTgWe0iToI1wX27thl/+wARy1FkJ2qbu+tN9H518e91nqv1/g30AF/Re2lWwUvsWJ8u5ySvt/et31qSTxKnjJD4DZZMn3rV7thm1x0i37dW+QpooJ5th+ae664D3b3cWwDP8LWv3l+lVnwO7YO5nhgl7lrXl3eiRW1iB6FPsWJoxOg4ro1B1iBhC+nTW4K2lWexHxtAxkI2XZz2ANgrW+Zdmx2xSNxbBzR+zsP5Zr+ht+Gh8Tv9hnkPm/S1sF2glds0Hl3tnC2zsHo0n7up7ugd0ZsIb11V6UJvjv+0JwGxncPz1r6Te4/dlvl4Mr3JCanHkbWrqOqdmx5v0W2rXekE2rKK/wBwD5w9ni0j3dnr424y97S1jw7s1c3LV/gBwpB7vRjkDlGt+OBqF34nno2D8kVi0hlrnkqRzDNkY7+d9rC5jk2k5B/a3zK2nwJ71Bo4GYoBnnDxU7w6+tl3ybXxlvsvt+nn7kN8UtoQW4NNulW3u19F5n0XtT2hqOzR9wmx3cNwu+nmRmbe0ZnvVZpFu09xntn2sR31picvok89cvj3eiwpmChiGRh4P9/Ng9vjRhpNe4lRhHjGcv1Nu2GltbmiLeq+emMW18C5P9wEUzfhs7Rr1B+juui++z79vO6MRpYRt6WlIiCFejPj4lVsiWnc+gPJ/drmI+1jhjIP3hBrCR7TV3jln/Fu311en5RTuHNp5274hlaeltOgG53uN46RsAr615tfZpMOkollh+7J2/DzwvtnBRlSZzPKNMOp+9/yFmgl/Jno2+0ah3dOsPu0Uj8bL8tOhRLkGuDY16AhwQlv3pgxBuA9+45mVOtpHwc2jpRr1jpzT7Hm7VpnUWzJHvxOzXXnU1hrB8R7pdhrH0nVOiihvQD/flpAUVC75OLuQdq49+3ZvVDs/h7c7nl+qKeqSzpD5rj3k0rwnNxc34n9gohgXDuXLmqT9kHiang0W6rLjuW1VOzp1sch1p14W2rCT+QJ5aFhabpb103xnVji32jfOmn72SpkLV1++7lZqad50OsMRjwvjnV54+7aBh1WoLp472zc21a5kvh+CNpwN7uu9wt8P5o/jDHl3w2+Ub5qWmK2xql/f2j9umzusit+0JkSJtCJ1f237ng6rj3WxFb4CWoDF2mepcV2J5qrVwm11ZjprmlOFmdZ0th7RvpWV8aeyM1pquhlWnf+oAB6bmhSUKuPt85q0bzIp0Wri1L/eOyYXjQzkzOs/PrrUtrxM2Dq7uhSn+Gv39lkq3zQT7w2mhD3cL9onpo5tax/xr0lrosR93O/Rhn1R6Vu6I12kJhdAKEbr1917O2Cn6NB23+xg+uivzuvkLNw8X77ujCTgg1/eO0fjs9jpkHkWX9Zl8xeiRhkPF1tls87mGjt8XzhprhrhKn7r1xbXolOmMe6fdzwr9Jeh4OtYe12O312zCN/tWyJdgKASV79H5hPm4tBsshzKem3Wknb0+7ySt1x3utxxpDxgV4G7ujdq42047qBv1otqmRuk71e5kpPiIBrS2nLe5P3ts9gCvkpL9DW0ZeDsjvin7NhrF1gpPzcZ3y+sJvjHKXKevzUt2vqX3p2v8sFthj9sv4Be5G+5kuuRl+q3rsOw+eopewiNz3h5Oe69F6P5ydZ8s5iGfaML7JhgVOmSryd25cZ1pO0hlpV59RC5ZPwok45zpKfPAl7iOn6DhuljQriR+sk7+r9orT6tbnITgoiBCX08ZspO6tPtsF6XuoF2pi3z4PuOzsSbhEt3Z2pNtrnz7x+8fO6Ul4lLvd++pv5ufbZVn+P1JX9W9sqj/I58bF9hVqIl7yX0wR3MWkjOneb5ct4q2nGvsg5p8p5SLF/+vtnmiz6B5tlPi2VgUey+Fv9u1Epw07o+VjfO1wB8Eek1WiinzrB1lxtYJnEJtKW8a5v+NvCt2ErpMV+WX/shqM1sGlieh9oTqcT3J2uHl3CRzABvtnwvXoFBtBr/95iOviBe1OW/wphrrtmlx6Zty1vkt7vBmE5hatiHR45TrPKb8Wi9210Nhs+u41vvOyi+svTvUpkYx4zb2e5sHgQxxqR58Mp26ey37wAJ7bWvp3g0zwEjnWv7rHmjdlQ72oT4iRkSTn9Trtn+vRx05gfxhL+pD53irs1xsUOsKF+0uurO+2x3O2pQrnbNxMJrkZ0MP5jZhY977e3pXrsJ0ouxipiyR42V+f35vr7pxxzt+qu47zlNR0S763d99b5CWmX2oMW3JD+uT6sTjmvsMe2NvhrVzJLuY29lu5H2+UN7GvtZW3ytsoDn415p26kb1bR+cWtqTjTxw/xhA+/3eyErwY5xbBke9gKWpyZ1I98bW4l29AN4S2llWyGxv3uu8p8I15rpqY+rOxyeBzbrmrx5qunD+4JegTzlJW0vri+z/bmwvNz0n7rN1k+hPrmKRg3LnF8vwJ5JB8bupBesgJ8UepN20DOrkepcvsVz9NBy/xviWs3dviWrxbg9myf59Bn0Rnvq3mAdi6u/sz7uei4fvRe15BmUJ3oJg3V2dFifJ0sbjZWoOBp826xev0Or8x6GTeuM9f3lhnyxhqHt+wXjVWrkT/dd78ZhCVg9Pu2nga5oGNnFLkIe6DP/el7z95cv8eO9Cvsh37LLlpWofh8WRu+Bmh3ue7zMt+h3xuzh8d5h3nRJrvBth3/cXmJ3jc92FLlH1s8Bv8R1tLrWx2qeoR3+FJER34/KMR3hkBpTOtpWqR34c32R3uYTuYh7Ibod13IbhVrmmh6z+hqr0vpo4GQmhrR3gkF2R2z71labxIbwx3w9H+qH7Z7ttl9W9jYBwrzt8zwIf673ksD2x35xtz4Jhx35gd1Hn6Atlx39QO9x3gFX8CnMD24cR3x32Id53Xvmh8V58I2TkB2/R10R9Mx8J3yuh/DF2UL6J3m59WJ3ok2yxWkWJ28Bnj578p1J3miDq/LmXutmFw3W8T9n0r6Meq4paN5n9BqG2j2NsjdhNOktu+rv+o54ZW9aZ5IPpab5N5rQWhmPzQu1j3z3ltKb5CuhKzyz9y556VX5452dBy5Zs9P5g53Hh0B50qNpve3LVjDL6+L2aCBRZmuFwRphGTqc1ot+/o5iCe48eklB+ctwcZtpewQDqkZuSHoQj2uz6/d9Dm/qr+50iAp0UNmOHjST/VQBIO/J5kJZmWvwu7r5u5IBqVWmY2mMB7G5uL24o25Ut1T2tEu5thv5RuFxogZrQ9Y2OkROo1+uKV02By4tpBen/+21bk8ngSbmlevvvpwJuvjiPj0Apv+N4yO6qO5U3rO2jPRltL2en0O3yxVyV7+dB3lu5hB5TRj3H32tnXD+bB1mWl9Xy/+hkuzIO1d+gaT1MLjST3NlvrHuifs7vqBixOtr0f5m5+LvxeevKJxDD5sLvv33W7sdmnQ16tLykLqIRkVR2kh9fN833hKLtlWrYbh9d92rvSfx9VlIFzdJ155sh1jy5rV95ChpoePRN6jTxRL2+URHvvtT9FB2Kt+n9s/BtHp3h5pWn3aeiUD2hR1Ue8FX1BBtcfu+dsETn+W53b/F9+JJx9FXJZ8MpuE7zy5ghLsPmtmWjGb1G+s2OgtbtcW6bp0ie2RFs2Oksl2aV81hit39mjtdN9R6k5FqlhvyN4NZvNhhZZhRx7VX2YB/ZBkl9vkhsIxgjeiqlnkRlNt5+hsIx41J9+LjYh5Kn4ne+bR0eBwS5pz26u1uKVql2uqR0vm8oVg3WoZRowVoCVhll6Gt4RV6Gt3qDjXB1jX7j5wa71aB5ixv/Oy/xgi28G5hFBjrNzGOw7+tw9ygp85jmX2nGelrBn9mgyf0zlqk2gunydXosPiqDinJ+CJ+Zdo5hyQ2gHZ0x9sPWs1O0XJjm2x/5xeR23n7R+mkujib1yv1rv+I+lROkg2hpZwCr/jJyxF9iBodvnr24l27shxph1lry9PtyPjs+y+76J++Kd+gHj3hqhHm1RnUllOz1ROvUDt259aJnO5j/2pUhg2dkPvlCBsdpih+0w5mmfqJu/kh2u2//zsrZyGl/9nvx5+YZuFuugu6n1yGx9ku/NP/ptvg062lkEZvhhlGRjAZ8VllhJlRuo8twlH5F20sn2F8qiz08OinhgaeuAsH/Fnthycd3J9pBerMeqil5qUbaOxERg52umV0pWFJB7UB3PlrLR6bKQ9Xi0d5QuoQJwrdktmgP5jkDrYJgku/KH6VX4hJySx8tOmhdwNWZel0ieyYJlkZ8IWr2fmg9jU97CWiUB8Ox9LPoaLxiW56xmq9s0do/2i7gWkdpBU+nmyuNgl5qyzl4c8rjgHuyg93Rd0pt9QBrYb4x2malwIp7sLy8PzGdwRR0ZHi3VslW/wRziBiNdu6Bmg973jOXdoBRzlv5TWp6J+NF4E18CO6W1vOegtnu3ZltP/ij2Y8wmj+/Ts/H4w+rMh1TW/AW54fxHO2Gb322onHvbegPm2j+h1W0/N8KOkdW+aegiWm+W2fOjW26Ze3H9qvhmI16WR82Us820yeoSvxyFnFlrpOnkO4o7iaJsJViunkJdnBR1KugAzmu2jsx3y2iQhhvLn/J5ZR1pJ8JxvU51Av9KZ54+rQFrye7Xpof+uH13PzgUxvrF8ROy9PjNBhRksC5ype2eNijluGZMP+sdHlVrvMl29JotO8DJ8dliQdtOlpx+40+439u1DpIl8i27QtgNmu9Lr1Oi6x8cWnKey9LieBrB9vS92dXxk29Nv5a93POyKPtOdjZLrh7nHepgfniv5pPpKPwz28qBqlVgv+qlVrRJrV5v0xq/Jv0O9h2/Dm1ED+vmnUO86e1tnqt95gOv+W6avjNTinRzNx435pNO74foJL9fRse16jp9VBgVvvHFqZH19ngSNiH1pExlPmoJx91LncOqjOy+L+YTljv9cL2oTxS3+eDlQ1s33klPoZxpv2x0l/gVju23IW2Th4khis2s4OnwlywT1CH/GhiJW3q0qMVybT9xFntbhJOoVBhfHqh+5QxoXxhqR3t1zPTkfDgj2rL9qHBmgOjn1+QP0kt32Rwb2oCFisfpKfMHOuUej2r58OhoV2o1gu2sAJ9WTidJgPl9Xlolu1hP4Ej2KB6QVqTV4fOkFRhIN0ELpTFzsHmZ+/K+49x2o7jtpjJe2tGbDJudWj5juGWlBB9hh2/KNg3nA2xye7zX1JNkVZ885orHwIx9eFol7lA+5jpj72kv1l3B+t5v5B5pT3tjvpBlnBg4xxTn2iJ5Exn7R+Vv6wLkVZg+xkR25Z1rXJ635nup3Ce5TPhBh7x+3uvhtzwkUzf+rJ50iekOOqdr7NuuxJhkf2inntB/Dhy/+4EP/vt1e95De0IZ7rho0lsSb52N2sWD12qduvc29rbxgt7nh7CWxzBnk11Mf/R28Jek+rmRjhcPo1xgdNsNRsEB0RVi7R1gz04kzjWx5BxN19od96V6PW2ohm+tnHL7jn/TTlVxqwz9ApvxWx3bkWFrMryzLmsT3WDibhlPL8H2iZn/Xu+ZbmvhqlhsMO4f55YHt/eoTBgmf22jpkOraWpFhoAOqhfJyzqWrxnumV+8oO9BRsDmxUj9sO/01ikPm+D98ey4pkp13Ct+xF7nDnWdlcP00P0WOtIOpAF/TW/8IOobqIV+tNotO4ev/Jlp2tmE2rGNim2soeyUDqJvhaemOWh8xzEPs1vnm07kl48OwDunHmz/7ixp45Jk1housrigH6h2d90QRteT3Bt11Orle9a7zTuqX2wmv9zBxsW+fRxCxrI+mOzyaBvTLlQ2lg26/Lj6ZqdmhyN8Rfz1117exJ9to1kKen9Jqmj9HN4F95Y+q6d6bWmmBpcB6bln1R6xHrPu/hlkWfrotqI7rqt8VHjNZlaP48H3kp4fWl/168rx0l+S3mY217Fs0toge2zTrr7+oplLv/Rhz+u94e7th2Uf34flGb5kukhBvoZtphkrFv0TmCWw1e7pzwwl7ef89Z8lJgvD3cXjx2jiJnytyAvgnl0PWlZ2kse1MpgBulkx/8W2FWla5+5Fs/XmCeiDhydWubBvjTm4e4yb2E1wED2s3guO0eBwFRvU1o6HiDp0VPqfKJ6zgux6K1us90fNgUnj4p10j0Hh+Hp/GW+cFwFVoRWkrO7/R9f+zGruuFwIWgI5h0T99FhYTrVe4Kn9O2tH3/oBxg2xk+3f2wbW3t1yveqdF+Fs1hPxcLszmyoT8ePhj7qCb+GvU2+9Bxoq1qv1qodgjk8v77CljSRmM7hBJ9kHlx1wYJq1th/27VB21PzpeoF+o/vxjpwRN5pp33+4P9pzv3rmtf1/NpvG1rmZw1nrYW0G+xBRhnLtL1sBfg9ml8D6J+w6twMl3PR+IL+GJ3MOyUr/3pschs61vr7rhboXumvx6FZ6epo37mmBw8x7KT1ROwkO5pWrR+svHn7n3KJl4277HlallOhxVH8oN7RTg6WhZDt2z2Y+omLs7T09fkAV8YlwKDnmluEO7FugqZqXO76Z+O7nZ+0w53D+4H+5XW3Ec/gto4N+8WzhRqZP5Tmr7W/txkq5nNp4Srqf26sHqEDxgRqON5eevaFwBv7DfguvmW+tt5npF5stxw5popkv57IRvWH6rbgOJiR2mW+tye0t4Y9W+w+3Mr8dBk/1sHOtG55Ut4G9ozl2S2jdXlMdpRH9OO0t4RGu1gh1Qp1cW4d3Y3J6AGYInmr55Kt3XxlL56CWmhBGDBjYJ4ozjqhid+tWWoQqcapqPVtwxwuPpmblhO4Ini6zr79+UWqmhlm7vLus+Js8tzmewIOlJe0/RlsWmZnib7kY2n5bveb/Q5o9t77u8X1yr5tVvjMr0WOn7BpCb/PRvsMrqOyjes+zpnVvhAy9XrsuwCx0PT22e2DV1fh+z2kC2ys38Xvik3n5f5dbiTp2Y9taP8OW5Cr+hzgRO8mHhtXze15hPgIvv+uixWqy+hK+2IlwR54SeqDW4futQB5CO132qHz09tg51qoL6nd3Pztz9xol4/t9JN6ZblGltNPtytgAp0nOgrWvOF6QO9AXpwxqXFn32/92z9+2nP0n2tudw1eyTL8SV2RT5YHlXXqxtroehFVuKO3xDjnN/s+54+4e77O2vi9ipWpG7hvmgDE3sWqlVyVH45FvKhkR93239pu+5p5ibl0DwlejkxpGVqhx4MRxyzqjM7uOgmF7bLgEew9tjQJtd+vgWp7F+qB2QZ61277B58Uvuxq+f8if8c1tbZ2uOycdgUjpnO2JvlrWwj1k9brIDoi+uzfyFrtIOjCTyV+pw+vxhyDRgpBk95hwu5x1iUroA5q5D3y+7cWnyR/2b5DcCQ7zyPkqtvCB7chySHuk33jTx/h2pB53KLKRqEzp9z03RyxD8oNkHL4XWnrzfK1qfrsT+sLTlh2qEL7dWudW3t2tF9071ovfnBRtTbvbmsKluZr+gJy2e8yJ4w+jT9+SO5p55tWxA5ky33ZvpZFqHf0dumBmYSNwdXhYRjTz/rPx1uo1Royhj4+vct59usGOxuL2+nqh+vCO2jHrwx4Cj4ubxDdCvjnBbqae6TX1/+u9NuGe4te2G25An+MU4YOyfxiLJ8YB9U9za1pl23jDvYxr48wN9v4Z11Mo8Lu+Bpz321PjVOjAZ09Ov8jv4Z10h4drvHx/40mld3VjxtWhalh8e1Oxql20Ap8H72952+vkoNhSLgEJ7KBvrOjN3iZ211ByPz5el3OWn8e+IJ3uBrXX4qtmd5l8tlhUpLL2RrqHHo/3y8W1x+wCxmwdvvWoYzzNur4szxZ0E1RjWnnmiY9rnl1xJlStuJuqFrkrB003ji2rkD4PRwpBoSPnjT9Ih6TDp25zef0+c/VQahJ3JugZWwartOOr2B40WgdphR2mdfsGLguxrHe3jrsj+5bt/jJyS+wgd0c+niu9GVvctrHR7B9roryZO0D27Oboe15loLcf5/mmcVuoO81HQiB6XrgzdtWunJC2tbpph6ql8ie1L55Vpnjj9pB3NZ6kJiipiuBjjdrzh3rPuH+4Whm0Uy8+zx244Rk/m7YRriW+WNklOqQeuluiUBxy+qCN9c+4Gv4nt92cjNh09ztQW95swmR9Nu4Sxgg2nafNruoehzfhhrd6I/3ThkKeyvDy1Z2Chuyl6gX+z7shFnvhhLZ+Mbwk2hQW8feqZHgCrm1xm1Rs0ezJd26OuvOqXuxX78PepOWuee+q793l89TlA+o6ephRuipi+rrCdy8bw5WpGlpA2MY79dWsLv8GJvIb9vFuTFqve6nHvutp05jymOY2+yby5O4FphPjlnLhZD1mD61By0zy812rl24WyNm8Nv2K2ioLTRe8RWgvjJPd2yd1IWljW8qBx5uosVtlz1571De+VB1N9zfXoK1mvOjOhmJ1sPFhdhio5t3RjKJx5x0iL4vbuVDr3B1OWlQ+yZ5gu2kojqW1g4TlJBmPB6VX0w+s133MWtlzi7m0i+yDv83oJXjrGuyDJ4oz5Bu09NzL55R2gLzj7frMbxmhrTphVPua1yht1P1lVP6Ols7f4n7nyO8VB/1OxzDuJJiG7xjBg83jYh89ZmcTyPvwtXoJLurJj4pvAJkvh1gVvvO5BuraWhFJuMxm/32s12nh90LlH+yhtnWB4/ejnhskWvDBhOwOJJ8gbkZuxB27xTokTmM2hR17s2vZtu+B+Pr5v37sLriF137nnu69J3A7jjpmn7uiV+F7k0V5i7wEph4zi/WwI7mBWzq3tkOtS+nTB38J54W1ybmtuxLZw9XpNb8tRyGNwsH93W0ue1Wx8BW11roTzlOun7u9i20OtGi2hD9oFfjrN1Edwe20eW0i1qzmo6fq3u8r74rZw1M4Tp2Plj/t6HZ8+hajb38D0PV377tzuqsXjh1rm175xVtB7ou5fB8dP90+ypKP3X3/OsVh0LVyEemx258Zhmj6jWtO2iJT962/iRgW9jTZ0IJrCJ71e0UpxUmLCjvXf95W6YBuhksHOvWfjA1uiFgfnw0+oTdu2rtqu0eXo8PlkZ5BW6CxoR3z0JsdFkhBt+trRJrrRscN3y+ler5lO/th/BO9KqbRpynL7dh7cbuEarSuk/uwXbstmygpoG+33rjq1kYFjA1oIPu1Bqt1hAJv1N8Lvr8uyC5vTn9h+qGZ1O5xST3th/FJz/VzJO1UelDN42P2Xh+cB5UZ+4e3/OjRejpfK6rmk1qjDh8TiWB69LgufbvbhAqGnJ7auiYpiA2tEOsn5q2OydV8HToJZzi32CNoDf6TVgLv0DN6YOzoepTf6an2MN3aj6YOm4urCj1O17WRl4+gfjwy5wB9729tjtzHWgR72G5sNevFD5hPx/Wn9DwSdolulw+4tr1YB3WHjDbkAnnwp2PJ26JpzznBT5pe44f2q+6c/rfUWc/g/R+O1hc/lSutPmvIHhF1s9J2c0qs+sftiqTmtTjR50mUgqVsSZwRliFep+x9aPrmevTTkg1owek0+vHbl8/n2+w0xpGrqbP26Nr8/oix8Ws94HjJ98ZO3T5yM+/tW3dWknF27csnF8r+p1PkI1qPmwvRmC+wBekO5gTu/cB6VxtUP3Celrf8UP8oF4O79FTwBe/ajuvjq6V+12xnnu8dxnlm6hl5vhcBiMU9zz1nHrLDsNxsGnzg3suzrw3oXm1cvjZ76dPxF2zcBuAuoTd/zjyz31aBxvF1uBuT1pw5zA5lTZ0PWq8v3WxiS/7kHzCe0TN49599Ox/mjGLnPj5PRnXk9Sbnmt92WnpJnbOmsW7aOtHX4Skv7BrQO1fh4Ehm9B9fKPcZAvvk7ZhmL07hyB7iA/spWBNdwOFzdNrOvsK74Pdspv1fOiDBySTo8Dvx9zQjjKB/Wt8UllvzjHHzJXmJVoUvoAH9bNvMrv9hhCWv5BlgLj+N9ZV4ZMhfzp9BpIX3P2q9f3t9/VzlgWqInwNP/k7AqFnZbjw+pb7vHmsfWh8Vx8d+aejLH/Il38Dto+6Izi31xY/y4Z1xT6PfnSZuOW9Lmrc7gLm1kdioHosO1iTk233LmllhhN9knO7QVz3h1fZl226qVjpppl5i6hzsr6snxbDyR+lG2mTun32/rlliRyARuehjdZ5BDiDxrYdhLOp/JxEZiaPi0P/3d+yT9Mb7A96vZyeb9ODhQ+wxv6pVpiryvPxokuju2+Bn/t42xtE7PDFkXd4AO7GJnpvq8TxZTle5lgd8w+imt2dmkY+zoO/p2qDX90vm/5x0D5mt/Lc/W2yieHSpnI+u073ej9uH9UO3yPv+30iYzJupz74UHp91tTtxf7mNri8jxF++2b7VL9tFiOHike6rZ8oPlizicZpJDhBP/m9zR98y1mYQNxunr5gahzN7sjF3wN9PBpmD+dJ8/vzAe+Hd5Zj7TfqVFkYQDFN/KF/GW8BFmlevkhuhro7V+HV5Xrne3r72ilZ0nW4l236Lo71+iV5H+04O5fWmUB+BNnHnfV+vvtiLj/GNw1Pi87wf9kGFsnj0hn7blqbdvf36XmleLtKlyU+opu4sp33B1bLrf9yE1ggJ45F0+xsdFpwJ8iNgk+w2N6Yf+lzvgTP1L7Qdqbv15ulbtlvFkkZ7xzqVWrBRs5uqg2poV6bf8eNgOp4zj5LTuvv0v7iA0ll17UW+qPjx24r7xvTpmRrqp1XWl5OsvD1LL6K7xpfX656Hu3ke1UltLJvf96TBkJF1TOrMfwHFxXWruxiaWoNO5q9CFOm5txhTqUV2ihuwZuabhWFkAVxAUJz3w352Iviox2PP4Ljoo2/O/n2hURe5jdkhDrML+Xl6z7gNer/N2CdqdW/e1x0xp8blzOkwfiVeqDHx0xgrvw2f+le88Xngl85ToIZzOf+Mb8V2qtWuFJq62ynep0NhPO8n30KR3quhmTG+e39W/3essF2aTyke3O/ljJ3m/xWFyhdhPu77Pkc7sC1hgD/02qmFuTJ7qxiVZnUwSzW/5bxgFihv1mty+p1b2k1rqh2svt5cb9B/9uHzRXjqd+R/6q9gO2jch7Ce8EWqN96Xbzgrq5ngYRwGL/O//L1xnZlVbpezvMt6QW+YT01l/R354h7H2vLD2eOr6zt7xvs3mw1w4+7seql2gPB9x5nMNqCvjKD/au9515XzhCVo6+rgJxJVp3m7zuvp74EJqG961Zq7mu/Z4e/kStq/xvW+25u7fL5SnuKWwpujbh9fPn+Bij94NP4tO7fu6qlrBWvfLumpsrVoxe8PF+ctnE2nGV7ZrtTb1WJiyOwlB4X5rPZvnJ9gRtzDx6WyRe9gFpypu/OuXlmUFkob6f15c7jWl/M9p5uyR17BM2zF7FLrb+k130sfilv0Pjdi+l4B3JBvk34jv/Ds+De0bFsAlloLwUd/olzBHrzWialy4OrjtgIe95tqhM70V9Tu2DZgcx3sF5OzxBTjFNyl7qlJgIHhxu0O/o2BuWhuKzzXmn5b0Xe3G5uHDszm/p28fhvbm25H0bm5k5/DsgULsUN3mlkSxmOP0fJurJ0uN60t0JZiqX+7J+let8d4rVmtmgN+2C+9kRjE2+d3h+OtoBz724qNm7mh1W4HhkMd98e2JOrDJg/kVgh7HulF9tXPotV7O/sa9/Dpi+2vk+gvpzAtzcxw0Z0+ctTXkMxxXf6z+8tWrQF/5blpxxfd5vDoQW16h4JRw/FtRJqD2/9ZhR3piPvixt2hntm+u3udWo9egg2uo53PB0W/6UL8W/5JPiR+gELwAUGW//7Pr7+hixlW/tx3pW/jqdg5/56H4/BrlxjW/zrW/DsnSpl7VpEpq7m/W/zN+wKjo2/21HwAUUgnqYH82/5xhirei6f3I5/ZZ+H+u2/v75iu2hEXjVVwiJ53zmfRfO/34t2D+0y1iIf5zm35/+pu3DBg0v0dckhWnVj6u/idb61Tqegb5uzMf3728K/2Hpq/V1y12Vlpgt6v7pI4AKO2S73ful5uzS7mZB6BLrFxtW7n7JkOenVZ5at1yJ9Ov+yJlHO6PJwgTs6b9HJhRkpzu+4e+PR58O2ahrq15fW/R3myj3Ub5F98M/92z8xe3Ox1ozt6bm7myZ1yepysWvG5k+L6WO8IxmxhkVdxDejRZqYN/Pd5ib1AjuCj26vbo2nUW2ejgIeox/3/L6neuNeoFJu6H6Kn4eJ81Fy2+yDJrI+jVbl/n8v7ug9yUT3ld2+NvmFsmduZjn+l5uB0d+s2j9t1seJ6aFmJjiwDj/dpBttjh4gu17+rtdy9/rp2/4X4t3uz2g0Hkop0qf4AXmwviQwHQbgLR9G2xDDrFdm1Nnm5+p7xRh+I+w7+08unFp5nBonjid/g4O8yz/uJ/kBrDm/F+3dZlHvlRD2ou6WOyYp6AW47xn8LhsP1wPi/+8Fz2id/huu450N+jWZtukxuu7rV4/5vYXr6eprFhSTjGbozFtQ/3jTujWy8JsO5hvhkxJvxW9CWmBhkkb951tbZvP2jrjy17whf0+BgF5+JJ6SJs+5osR4yJok9jR9y6W3I2DAhgR9p6Ht6hrSdnNexKu55+n8u029j8u0qhlCMvW+vYv7W5oxZtLHgUW4OdzKWhF2qrjnuP+p2+YpyDPsKOoWR3WprSVhW2nU1ttdsrZ00j6rhs3h70Ol49uUl1DW2yesRxiQr+IRwCj8wl/KT6QDt7OmwRlPR5D+h+OqzDniWl1LzE+nPR5Z5gTN7WBnY/yT93Lhub5+XZoHxqcjqSFqiewLLu5BtpTtNXn/tu62mg0+j/xSf3Bv6yulfm0jvyWp5vB2yJ5se12O1gWuL1lO+rjuhKR3IVxJvyMpv8tyo/4RBm59Tm+x/m5bxl620GuwIeph/izbj/KV5R0l+mPX5HRhQUEJF03x/Mttd95zR9YLnKVvcfsZlpHGncx+BOnzDtc96YBlloQT/8XjhOeu1+uDT08DvyB6PDint8ROuzesw7rqBkrOm6hqVjWlu1Jh9KVk7bsFp5uHklx4zPsPx3gl4e+lZRy3KZLvvW+zw74C2jIB551s1uhFBl4ey2uiQj5ouk0D3Duz9h9s2vO2tj2r8u1iWrrn8s28ap6jWwLX9MNzGFnAhs3V9k/97O+yB5ufnCX8hdU9+5wxokFi7ryFWx5uoP2kkurqZ7xZ1BzyhR5SxuCtrvJ2Sn89Ti3J9Mxwzeq7utvJnitxiWp2F4iBmOfsnm6udtlR18WrWM1aBte23xe86elk/iGBrXp1h9mXR429xXekG965ZxjmhS+9oxgl+kZeqcdti9+1lm4H39WiIpshd+AuycDtbt9DRyZF71V3cVph/4C2lh2nujwO5rMCz2+8FL++/86e0/WviCrTmx8+9yOxyBqejkhvkBB9L+tRetbzJS/wgWrrh1QH5OB9PRqq+ryun3h6yehiT2W1hiTgi9jl5zLF7g21FxhDF/OepbvyXmgorjRZo1RsHF2gl1yu6AzsK71mGpBv+I3g62jjCw03xCL7EZtN+p1KJaZ5yvqUp0pOoZDsNn0plhW7yEZmR5pAVzpjvfjkoL8RHru2ty9jQ2XF5lkZwiZynhpZO2XjWRB2Oe6V268us1d/cOnrfuH/kmjqI9lrB2xr2Vxhjpy2R8tWExPgk+5s5kxBz32im2h9VhUju6H48p7qZrnm0mUtKpx+zqtJ5FZuOp6Br6ABlFrl1Vx8xpBO+Y29rHq/lqNBxiukIxiWF8c+9Su2YO7oJ09jmjulqxog2qejrDb1VV+5F87/k0H6aW2LWikF1+Xv6hunbmgWulWq+v1LezXpyyxwoRjGZuwbnBWvRVxS2s67pShrl+kVJlGRhaNyDzutmr2buyhyAn5Jeth28xUtM/pBzqLRyv/+S96b/s2rRET5ggsVHWKk3CyJo3QxqNojzc9y2uaTZSbie3U/DpNFNcMWbhsKJ2hLO0REYHytIuaZ9/YsenbIxd7pP30EvO30/D+etai2+n7Q306sGnofQlPhs7wTO6ySdd9Ws3LCv5kfAGjT6Rn1U+WGpfDjzjXPQaUYVSs4f6F7zCB/przwFv5aUNVDSucXSzbvgmz25IT/tAlaOMrRaeowpDgIaQ1M6XuVhLI/pkuT0NT5FK9xS+nvDPCVldTxk3qrfNkf6t3HC7vr1pwUH6BN9GfmhavKx1nNzxHEbAnlOgmVY9EPvieA1pEard1DcOqNfGRBtKnTDVpn39CAudLdOMFtifwtNatAMwNGG3tI7KHT/2Y7ocUcR06YtbIRMuBF1TVZU3t7c6kdtKzzv4P0vS54xk3XmYXrcJepzhybE53J17YGrI9JA+oXq2h/puj9mYO2svCTDtTw2WZ7Jf9kBapbDVPjvw7097o4RdScoLOzf/FjLGy9l7JTNx9OoJDHzDrUvW0+YeN1L6mYBzDOJgMc2rcb0lcOmGa+pOGWkL4yjDrfSNEx2RZ9cY9iYFxIlrz69042rz3fJNmAQ2QYaSB0OgBMb1VzemVh0REbL4dMT6BRDDEOgZYxDLrPH1UEms7TbZlr+/QHUYX10IROODpFT+uEMxvDbuW0+yG4a3D9Wl4gwyIZfVMcgBJv9YAAUvnXmTZ9j14X6r8HVS+nP7RO7oQ/N6KuCXvSt7iKDzEzpBxchE6hRdGObhf2wH8ZmRswam0lLAvknUN1o0bVitO2u1vDEI5swrR+HpJlsL8+8d7dpBu+Nxd9pZ+0ChmRTPQ5VoFR1Fo7WAcl3OkkTN62sYnWOK5I4d43aLy9cKBkt8xKtp4xl/ABDXzHBBoJnxqpZC+Md9axAA+zpnIIllNZ+IsHhuhxzQ+OsqJ35B77HcxCGyEvUQlrSq1HvrV7NZXG0JzcZNh/lCOAbGrt5KupCXaDRrQ/2YU7LBNHgmg9tc09EoQwSWbvAD4Wys/9cR5qdM3g15BoNbfaomdY/xi2IxfR5ja84nSvJ3bg7lgHR15Io50ENGHATYgDmMYznKbs6Mq1uQ9rA3vmFSwns4Rhtouy/XPSbhgCF3AEaEH9XPmhSjW3xpslwE5q0DsnoWOj/GLLNZa3BmRumtbumSsPa/kPZQxfkZNz1y2uvkpd01i6BzWAGxT14dG919ZBegDW3Hb5bjNXXasasX22jLGxbVYbe1/r2zx9dU5rgrU5x7PC17u2oc3SVZpZrWb649gMfXa3TLKUWkdEyF1batN/KuEIHblxmF7SKGY+7Z7WuZQfB/Du26mSG6IJsk929M9BD9jOjzH87aascEOCWHGMLrbrRSyaSOlyiGjs9CGRkR43g1bY1tjF6zejJF5isy1GAYr31zAB6AXBJ5sou0tIa3p8+h4BvHBxOuZEzDAH4dls96/GrEbvie00adrt45f/GyuTFxBr+/WDy7bBsApe6ljcKvsIw2VSanatSX6kMtFsOullmd8YQP8x4ut8fLtHi4bSjy7yot3R6QgDHJ/hC/Wg34mStWR66pzRSRvJYzGbqR7kLymJMDYWtk3vQFC69ItkGsu7DJR2jESw6gaUUN5DaYMDP62rg/XzsZTTlau6x7LDvRuVzSnLIMF8cecu7DNkBugK1Ll5u8dHP6qPHLKksS3QdDp9T4HQGiU9MYOjkI0zL7ltc0GIwl9OS2pnPS635i21FzWpfzLsWnS3yFAE6v8yOmiDLYzzs8LR5Fbsv0uk2V6zXErqlrV1tZa/0WaudrpAGVgIMz3vpy/t9+6TEvHgtoU/TWjadakwhGDOUbB+iUozeu6s51g52PrHbaUm/v2+joqf1V3awfdALLGjbRg5o9msuY6oj7Shxq4k0dIbiXNvi+z9jGN6koD1Y1LiqdirOrErMshpT7VfWaO0MJlaWD3bXXlmEzswaSXMm3eK5tR3ps07Xu26TxNr8mPBzCJNgebVElovyMzpGbeTBj7oGJym9bPL8ebaGcfUW/tcYAm14TgD+pSkl9CTBm27TmuD6BMwKGvs9HdVm8J27yYbe8ra2WJ9Pbxk4bF8gHLSlE5+9V3CBLo3wzq8a3g8yIOxl2bAUFKw0gb4mnsrFGSFfVkXuVA3+Vr7x1ygmLp/OwlnAy1vr7WRs2h6FUjThBiJ+02P6k99VWW9sDKrVtgD3yvoWKc8k2/3dVl9ktQzc17qDtn7GT+jCPmnttySbq84dcOGudjCLxoYS3y/5mlswHu+e9V6rkNXQEIYmf10WO8cjQF/jGb2Bf4oTNDCWYL/ad/oRT15HrQv8+l+og9OF/laE0p6YK8MDeMm5tYWxha/xDtrK5dcX2XF7fn/rzpwoL6SBNiv+MHTQl/jXPWJf77C1SX+W4jLaAUZfSiGZUv92d2brDD3VkGn0KR4QX8hAmMppRWDuGnVZf7UUkHi+mn9BT+n+fSEo50K10ssHrNWnsqU82XpY8D06v6/kzGSVn28zYEYPhMl26Ahtaz/mtR3yAYDyNOemO78b4+jXg3RtpJkt0g6bQ8Is1ruyVrPqFH0QXGI6dX+3tacxIkbuD0yVmLQXCMTmIfUKgbzasf4uOgHDUssodwcroTv9Q9Wsr/KWFpTF11Y5Z69cTmlBDRmegckxUJZezc7b+Ew9YaTvcfWr6a8msqyOftLZUkn6o2pDpJssObe1ktXWliSh3t1pfe01eWEk9RyjiXtyv9pyT12RGtnTExuiWvwPt4Vc0XX+Q7HF/HtkMwlf6bh8jn+5i9WeFqc/yVf7om0Ln+PAoK5/qo51edphJs78uDz/P8+qGPRP5LGtdy1YSyHLGZh+y2AB79qNSm2LGDbyutg+zhU5FgtRTOwRbWF5nHANzq7hFscmuP0TZe1v/9307rHUNA4BFkHf2AcbeyUgZTi0OMmmT9Q2ZkU/XZ9qG51dF6slTeQrr+LV0bqbCdRdabCLUoTly+2SFpmr1a16RTdSurlsj3+Zbq8sjIu7VtYMPrRF3utZmj1ZXWHL9OU7pdl2gy6Xg8smW72PV02n9PzZ5bCG1m9apSsVMFgGIzIk5j8NJnWBX9WROqHwxdRYvPMUFGcaTa1Mg/Sx29qNrd7mmHPrfu9lU0zujoVhdhu68DzLGBvnPymGZxqhv4OuatT2lqQl1VtZR+1PoGsVXJ3dtjbRh76XTNvCS0GzA3PmiHW0q57+sDxGqEzW55mx51NvYkG0wf6IbLUW9qQU1S3qUj1uyWfdzJYRgIAyV3ZDJtlt6AVfABWu613XgHKpNSPOg7dOBphJAMKDpP30JiOJZzP+plw9zkB4DbtYeGhT9JL/lBF1B+4ye8cd63IPf2nu1bUG879P9uiGrD/QqvgXdzEgYJd10eGnw7OmOjsvTbXoP9M6zW0prT/rsnXTi8bJ30TM6ytrb4fkq7UFWZ++NSHGV/9NJplvm2aL5CnMXm+dc7d+BuRANCH6/q15gGaAPP4juYVxNbpg9Nup850dIQ9tIBy09p6R8H/uerdX6WrxH3kq4GjN942yPjfzpgSj2s75qYNkm2GknDIbu2PXizawLt02eSdfaS+rkk1oLbIMkk7e84HPejrVfR1a6ifNjuaDVfHkxiBPxl7q8cNXOGBsTF/hvSHW19pUIDoPWX2dXNrjVM1Q+7Vrd/NOWRrKCLjEEz7XaBW5E5+AxnCGOjxXRifqtL9lZOKsTCKRul80owYtzdDhOYcjTzTivPzR87A3szv6bUTDb2jbLQ+jqx21OpamCbEJDhrZ0ovpAr09SmkajKwOmCfwbO4ju1Vf+vt3X1TpF32lP6NEkRnaHrfBYXq4+3tA79y91tGyd7CIOghWytbbmy9wkGC5nIaAQKFynAHUg9ZwBUsnHRRqmg0M3oposRCmHFdVV2muALOra3iNNwB3w9bcAVbvTOz4nFN9wBtQdJnbr6a2s/oTwNWc6hbJeh3kjYwcEYOy0/zaE7fYPukpFmNHaGQNGBGCITNbFsfAJp3qmLM0l2bvHfZDme+2Eu6OpsmUGTsLMZDr8swTXpuHsdI+cVtVpLnpAPybK/udv9a4DnBxXrbzVzaZQHcATaDO3OkOvmIw5Ka1hcc/6ljjSNRr+/T666Zzs/H6tTjWkAQKNxKTJbpNlp2wJXZKJoD72eNb0q8CZOXGbcflrs40p6bkct/8mZdHG02vfKWYK5uMtdMGRqHcoeleAKyIjEV9i0Gz2zQZDrThyeFLC1td2GXG3TTDgZ41WA6Uq18QBzodIeBp4A3X8bDiMMPGHBzOqNjVt0S1omW8UoWfL3CC+jlvUtz73+1R8mTw3OJ2jlvU3Ca8udewmuUbRbvvi7RAHYf5RbOmw6jN2etoe2ht6yv0iMmedDKacjD51Ul7sudBv6aMDHgFmY3QxAGmlJshAJ8Tc+pppuyAoaX70t6WCxzUw0pUJz+k7WNMewOEcrO7Fr8RwpxYer09AGeHLctrk0GU1aZb0t2HupS7DwFgGa0zp5Tc1lpO+ddM97u6F2wQEgYdyDckPPDkOuaHTlHZ2+sVH6mbdV5thAvw7rLYACZ7mOCDHR9oK1xULaY4NN0+IuUJ1ensEz/yZOH00GIJfDHAvhpg2Jl55YMCl6siTLB2iggI06Yeb1ruWxc7FuBtwLSh/ra91skG9bNDgLmxpi8G5Cz1LTuHmnck2o7hwwNbUIc6GmMzzApeu7D2qWTtis+SGYDvTQJnzU3ypbGnNrPaLH/aIdmzvVoobgstlpOQJrYQ7iwtyM5olH0qzW74/Wb7pn73/C4fGdYYBYlzNQ7uGAMZ7qt08+86a0jaWOvpY0Mq5ovcyW+jKDWG2prKxa+b2QNZQeVmWNlHs8lk4xY+2cLu+vy9GdZhbPXRbqX11rV+WPrIhtncnX3jqQYCVbOFgA9drlYAIiv7cR1rF69preRJio/X9M4OeAlzaT2LeX5vAo2hnwNiM1ueOmXTZen6E0Fzq3osNgOBWLC7morv0JEYqd88EGtC+GLBvlfV5pY/vstKGS+GfBdkPYxp/5PENLDurgAka9qz70Fv7Nq1To6FTtJ+WjFu1v9ZFENjGm83fOcBlzYzMSYzgN40WHHjYGbh3rWCtoIhNFTasltVTZisQwbfYqn0nJ6s4XG6OsErSaX7YAC22uxFnalluAOxxfo0jcIV6K2/R5npuL3yCbvt0CyS3OdKmerpTwz5p1XcCKeYa9Uwrtld2slpQTMohGHiAoMfoPxn3w4J/cbSeM8HEshg+W2Q3rZyMFdmkodGgeo5bVIoZv11xSmLuzTRlngl2r8ZftNpMmcTjd9Lmk3yuZ58J1kb2bQjM6AablB5Pop0NpjuIf3VxlnYizU7pmfN5t+GKLEy+iPA3iTaZb1H6utx/SBFnvuVedo3w8yb6+W9I5Zkshx9nr95MaV6Te9DWZmfKS+Pbpa1UQm0aDVxDrU+2N2Z+3QC62ARHfKPiiFy/+4oKlrwBcIApMbikH1+Q4IvNmFOjHzJI7i6t0DD7/O1PwBJwtBr5khw2oQaOosv9GGAncYVv6O1jDrCndlXusSDD7bjSF1iQbtSd7lO5ZHWJBjiRyJpLamdbZagenHsCiuJ2Yy4kjBqQulpSfX7mdgKgGbTEkjeuQo3PiHuS7wr2DkxttOugKPLNViJSW0662y0PEBLLQamHsxlxO8ZaChDyegHXfUzuQrxx97XG1GGu8LZDPDo4gMDFoQ7c2GeOjtXlOqwXQ5NbxdsnhWFkTXiugtPWEyYvwcTSGV29LQhpsr39NrgIdJJ62TjUBlvMe2DdqRqNRd6uiXdgfjroC/ib4hNbue+Z5LThlvFxev7/P19Y22QjNZRrOF3P4ZM/d09+dmXGS3ljA0LHrVptjLsS3dJmOjMV1b0bk4dZaGw9rENBnAg0wDbvUMB06h4TeM3hiaz98Zrgdn/GaAdOWLqLIwVk68b02d6bYzN/5uacxZ9KtO02n65TzBMlqllzCx6GH0bg+eEjLsWtf+2OE7BS0vhOwl9fdZoW31rfof20AwOh5DfBfnvvwBE49e0lYB0aDfQusuo1yH4H8tC+GJwtHlVtIgNb5aNEkzuOOjtN+lrGnQMdonodSRWpXNAieiHPXYvoHFtdj68cTEy/v/iw/HYuUsWPGyddE/7jK1wUxbaEthSm2A9Vb7ugA3f+bP4N37Oos9Rg2vH/10A5VLtq5eipeJctoi22RDqklc42ad3tKHmuBLzBH6nzkr+a5rvFMZiwF3yCaroMR0Bd4bF6Fn0u29f4GTs50BrGjJpemTx3+O5Kl8IeaDQbMrmj7rTa7r2UNVaGhE9RDOgTpwIdoQyttZGYK9IBxhUu3k54X6dNyGE0tXwBl9k1N5aaP0xMm9HnUX3gwMwCH5y2sgpSsBfTd+s+t3vzrxadhfGCW9Q3OuPK18brjs0NIBc4zIuslVI3BoaBQMcxaw6oGiBpmywy5riQtJim3x7GY5iy/RpL5ansqXafs/HkVhPPSZyaaPs/62+FbEKFkDazM5rSAco7OW2tKJziy1zxboc7sMyW0rbH+jv511rjpIU9cBGbW9IMBk0hxiLo0Z0Uw+M1DO5JpaA0io6ARNLfuGttZkHjK10NmYadxK0GqPzEx7s0K3O/pQZNpQ6w/ZRkvvc2Ugb4BndGcuxCTCeBgn/QTJ7P60z+Q5Ltbwhk/bQQfYiuNyEEjeAsc+qtLXmQEgc0njGj3Nbe+oRrWCUanJ0Xt+oJ7eFrqo/yJl5VSMTRmFQ7GhDkRrUU5pnO0SHmk6tTvzpoLzWVpySM/hahEdVf1hnCxOnY/n8u+u5tbD/+nh3ylDb+J9DRGLV9T11nbGyKZ4B2d8/mk/HIZVhfvWKp6KTNUEebi3Z8UlYnTKHryScX++ytjRyPu8gBUgZky1foOU19TPujda0866UUMZouP+zByhvDfXH06zxtgbuJ/bch3t6PX+UbD9teiOBOffu7t5NyZOYpjcG2mTQdXYdt4Q0+vq1WNjwGrojAUrs3Ow3Ab9QdnSG6AjOggQS73yOYn/dyT6RBzHoRs7HUXx7fgcVO62qPKcRugzzgZZ8aM7ZGzEHGgOhNz0YwZ7Md0dWWTDWstmc3Sjx53V0TkWZo3JPvoGbQC7bHbM0A+7DPThBnqw1GubFGcxZa8wDPFVnCPTcvJe0N/jezAPeuFotN2TTbjoC5c66OrJIjhbPVd8aAj9vPOrAtX3BnubUJp6FGNvE6w6rcdbgpz02trygtq4OPrzYsBgQcyv97cfsO1GN0LcgJl+wwyzrvptGZ6NbrQ/5tgYxn1r8N0BnWvNjebfjkZySbaMYMwN6vDdKX9sD3WwPpamN8TGyxnNaRoM+2gP58Gct7eBIAjfRlJwxHXoIttJm+/mDLdtpxO1lg7FbdbPWe83EveootzIwaDAcMMG6rjGsuiEP20ga0acFMO6GfcloNwfwaNo2e1YXa/m9QE2sC/XtK5hlMjUWd9ZTs9iXeyJBYP21DR6b/bEMpuTqysPo1v8KMWE6LRzDjbkzJXoH38aDa7kHRogVDT3co5R58LiOab9KFfBn3y+EZpTsiOe5sPH0Tijjx8Nigy15gGPVbQoVj0m1t3q8S9evu7UdU/Rvo7X8Ja5O0gGW4g7MQDj3/TiB6+3dKJ4Pm9OmJtLSxqFadd1TDGh9LMUFhPb1pvqdP1FPemRzF+shygPY+4pc0Enusn9AqrgCXw8dqPZ1D7WocbEverHfwRdpcK0hEBQ77Hn5lZj39wYQ80EYu1tLV8eh1bTkuboUMZJ6fB7VievdPWb6YdO0o/OCxTQiNl2Fw3FaBk8xi6PudBhFvMXwGSYfz9vRaOWpZ37uzIzLU7uO52RGqHvEMPpInRMfo4gtXx6kUvC9VugOwgV5tLcZfuB8vatTqMfyO34zBc9BQFYzWVrhqayAmaiLd2h2ePiDpfvK3xX3bnM8VEuGgTHMJl2N1Zw6xwMfMGBkDBEBmTz14I4lPx+CO7BA2GZEizyLVY/wd91myadR32uC3VeO5Opcl5Owgfd4WoavQgPrWKtkUOg3tCihnUXRlq6Qb1bR6j6Al0NkWnQMIFWZYZp4RkLPYAT5Pxc76Tv0EHeAJtagxlhLw7w6XAMEn6l6HVnDhLJ391rti0Mda7ojV2DvU+zAs4H29m58e8AtW/iM3TnS5CtcJrak19SppjA/Tt25DOM/RW+0AosvqezVenrejcKl6Q5TOVBhBrzwoYid0LgueFHLBPuFA0dSaXPdkX+hB/VF/n0AI1KYeIDDQGtWpRF9gCbX4k4DvtSwB/pnDbKFAz1Hv6P1t+7Ggt/JLugQbVojb4RNiW61l7G5/vbg2onr4PNPS+iCjRhDuZLSYjYuH0VUOKMdUZBnzAM7Ja/IdTjG5XvPCurwi1y6YGwDF+2qzrU9vib6zeoagT8gm+pCzF15s4w1k/rABsvOuX5At/Zl5gK/9oMC8z96NSpNaehd1zkq5IT0ifO56dW4Hv7iyOU7Ol8KGGg+/Tnhs08zAfrFJ8+q6YWPLMtp+bQGEZ2kCUbe9ZTXRkAwvWYGZb28CbaEbLEZ2tBA3MvpLmsmfGSVAoCeranUvu51XtqCBSX/W1NgVrTCRZsoNZbGtvdQpBuFgM7Dpn70jvGj5tfUvqQLQFI54V0d8O5EzQO5hxCygtpmYNgLaV07P05hEj0rIa6JdTKW5SXchBm6zxZY6oK9nzO6udZUDmrTysjq1G1/feALbNB5gzA3Pp7M7kI7+sj/DeAb4M0UO4H7NN523YjabtsIUxZvakP8BnGkfTJ4Njr3UKgbYTMTXWT+jCpuq9yQbJ4RgVTleNX/Igtqw+zo9YvqM1363z9IOekUM1ZcbLSd2IumHGXkngQjwdrIaF9w7+GLTMUpjTTw3v6QR10c2hszHhtmoEw0jb7M9Pf6jqTe5Zkw/z6SYsP84SGvtdNWXhreyvrblqwYmuUkzTHWjNS35AF/VkVIGDqrJZ3gvzUzkZsQtbJGA5tNJpoILXlf4l/9FX+1XjI/UIdfTXlZc5stLan7DM0AVmPTwGYwi0bw+Gj/IM/ika2uZ4ngD/gBbwTaRko83XOeYUOdT8+4utO7OlmXxGdp7c8mP65StdL2lv81AFr+LtlAGUfTHbZuLz3my6jw8m6OvbjQSptHszswFoL9um2dvDDNnkNbWer5Utc2M+SvJe0prJvQzQYv0lUTmeE9Es3g4o1vzbFipDtSqyXRd+nUOzas55edqpe+4Dbr3hKvTz1awl04kecHvLqhu4VwXQYKldC/mExPB3MstPW2JagmpLaOGU7I81q+qQYTpUB1KSWmQTKQdrB7TMTqye0lZ6LPNPDmmOD1qIYR0DQtmKrzH4Onp803j7AGdxcGd6nWHKOYqQzrZIOd5Xe7GA1A5kI/wVA66n1numZ7nL0AXcgIx16cIVo322TbO+BsYn3v9oaYDDLWJatHElhGAJVtYEm9P16ZrjE7BnYq0OZbfK0Rw6h5DEG5oFbRyM7Wnc49aFzLCUfj5A2ED7M58GtOQ0zdNhio425x4y3tKHWZdA7CWssox0saqiNOaGZI3fG9oAI3MK7A0sLyAdg9HxWsOoycpaE8sku6RCnHdJmI502l7H/1BMWlhTYmfopM2+cbFWc2EBLJfHEjoPuT2L6X3dJX2Q1rXF5u4PWqO5hztiTGxC/PKWiHeh6DpbBN91ajzjUflnJHUCWb5mdf7alGLIT9kc7W7TpOg90uaUt/WgNoybUfvpvld4vyR6zMAfvyJ0Jbpp0D/IuuSA0H7rf/Srbqet1yEBil3D6kv8QLWsbdqtsJa6EvWN/mULRI54cQtE1OcRjRrKINK2DTYK/c6X6eRrNr9Oaeiz3o1f8hWuI17JlNnZ/SCS5pQNv+WXfjQyehU1zpwG/csaSWZ83WMWifk17Fqs4CrW6rD/RwrgXdzA1rj4MTvGESAoJBgQcw1dYrLNJr6A9jET/uwGwAvrkf1rP6eQtTnRpLkx7F6+gDY4WVJ7TCWm+bUWAbsb09b21f/BpfkIHRgdqB31c86XbTOt2tIvXibrv0DDmWIzzeNVuXAJul4iQc2s+l/rLeLmOQyX3pTgCuLmuqdQ+2j07VOob3Q8VsmIw9GTAQpV1SUbcfdU4WectSoDlsqTnnpV+0egBbMtcH/gRPRUSbwNN91uzz9AlrjDQLetpIpM7W6fP9I7KDXwwk46kB1w2+wMbLm1rRF0xOYR/NKyGX5LQ7nh4h1LH6UWlaGujUrb4Ot1gyObqDftBVOx0tZvrnmPXSYEe4cqv+vl9On/h48yzvbBICEmBk1LdTBu8n2Ulo7tMyt63xTBh9lcS1Ld6pstowu0VdMbXsXyyjZof91HcOSU9R0LljixdA63OMyFaq9dDTpv172Qo45h8JfamqtTd2n0jypjZzRd2U6Z1bWSWoHSz09qIJNb8eYjrabDooT2Ghajp0B+OpfPaUWDCkz+oHdRdvX21znAT1sSwxMIHdP1ctWJEreauov3T/N5Qo97h6xobfpxvlXz8dCNksDRaYAHF6Vl0nU2wYtiMp/OOfPCsvn851Pn5OwMyGeciUALxslMyExYRa1eyQJjdP2OlD7z3roP0suuGQQfVgWlIpxQq6GZ1zKmGXtaxbqqFw9fYgAMN6uQozaCWp3129LrRoMD/+WO/Pp7tUb1Yq4mm100WqAzOonmj1yZNoeU9wr+NXTNc8mVbwr7rxJ8cAOxu9Yx3jxx0zj7y58oYGvjfa+/oF31vv4MK0GbaUWjZQHqED2Om7x+8NJOVAdUXZl8a0vTpm/9MUGSALKw5gSfUinqXB9qhGKLAh41j6AOED6TUCVr6HHJUI9quANboEmxsf2GOJHVNklh3xHlr879zcODWfQnekp30DkZc+NgiuG7HenrlD02VJZGoCmBaErzVETid2zl/77odp96gKzC0RozN1ENr1xNQk6uFjfOxqnO0t7bNMD3d0VRzFIhiVU2CYGnSNrzucx7cgdjXYyM3ZmGM0JmGNtHE+kuXzMYGZ4sMNuroXLr2oxtyT3Y889XQGPcvQE9iJpxJZC08cZEmvd9DDRhMAOyTp56MyGu5KzQ1+tk21wy7AX11YBbc7e5DlWvQg15rrMbjaHEtKRfB4G1OlqrG1nleFeoHuXrlSxhf7xodX/6937FxBv/fX7kBUkNuOu+0vJ3NtbswdoHsINdkm6gdYYblqUHTRZ8X0lF6mLdXQ2rM7QoEbyVNEH2DpbLnBkGhzlpZ/CMVlaMfTOERhSw1ImIQUcx2OEsvOPdpCC01kbRnsNDY7KdcrJnavxXYH8T8cU+GJvVDerXW1gZLpe1LnGiZfDw+m7/QuPZgotvUOV6LRC5sI/1pQZarN9BakUTL+Otb4zAbrXv8AP6MGHLKkmBcynya1PcEAmMu9WJRlaTxlAH+sNo/mtsvQ5WiURyMXZWvM8QGUfDPbuvlLQf7a/btN8uSUTB6uoGn0VeafVNa/+qorevZlmy2GlYR0C7g2rcfNpRgJDwpT4c80FuWZMNPO9g/n0NYG8e1352bvdLiFlSBwqoFQgCcdmSvNG5+nCAIkX5JtMrveDArYz5lZQ2jhB3lMHlWHDjYS+i13WE5pmrtTLm50AuDvl/gK88YjF9mHm+KTAypggkxUkYNE8fImnHNWs2lC31Ui6GXMcZOxOLNyOojwDCw4Qc1Nwmo+9IepodAz/Pq91R3aOErzctJvxHzlj6vrMfc2cVLWmusr3XDZI2ON42GWLjdmtr27SAwZdSNX+2rEdLAHk7L2hAae18+3aOgXI0nt5W2O5qe4D2i6RpnTF2lbM2oXyKP9I7uYMAiM+i9kx3DodANwo63g9QfWigvXTka2IMETGnpHHvKCZnSzSa5x0riBUfPSLmqkA0yd7C60+v6IxfMA5pufUg34qrNixG5h9BJgZh3hBAamb1OdGtj7cUvkYyyxzaWBthoBJyTNQvhg6wkNp6B9zmeL5dfdrkRfTYb5poD/ZaED/YvNpPANNnxWKMc36QgXTkAVTAOogH/BtxHmXtrX+htluygHqC90PNOhJbUJOvg3Qp0YXFM0Y6mFAqOgSZe0Vf4HesNsmC8HMqDihvWj35vwNJnkUgAyHFtODxev6OW0qUOJ+nMdWhWAKLwb3H1eyGBgXA1zrxwIywa5UtR46sG7MFzhywM0bo0ydXNGjB9G3WluBydborqcNQ+jV7H+lpzsyPD59/12Zax+UJURlJrxsyY589NU2zn3AFVkoOyA3pIS0mFGAMbftumFwzaI69lcWsuzVbJdusRLS5uYR9cPd62ODK9pntfWKdbDb0tnSXQAzW1pmy1J86IkCbABaK3fyFiW5wQTor5QtJGtW/TjBvUf32mZA+1F/G9rtLFpsQe1bS5rACNTOucAtngdrKzr/5vQDfa6sUfQAAffQ1gL6458BhGDFXXWjsqV3nZrmotcnGKX3cCdlo53ItoCj1vNm7/9f5WoH33KZbAFsjzmaArA37pdLW6VYfG0sM6WSPDVupIAyRO5sZ8Kg6nj9U5WoBqwKgaQZ8tu+WMvOK2jWGz6fYUe1F/agYHSy2i0d07w7Dc0c8Bo7PIuphPm1KIhzst7KeYXtJ4Bn62zFL4ElcSZ+F9jXoFoH/WEtqvfwDxughrA+nln7RaSb7L9h1mwO/YnuhBPSic4cLNvKG+33H4ZlDx1wtbdv8t5+ro7ar7j1K1p7awkVOMGePjAxWq7S1Q/YoHMcpaEejcYRiO5UDqb2K8Jn+tq7M7gbTHRIfqqJZT/2hn9P0WhbzVRd5wf9BQWxBdWpxpl3VAh7/m1eABOxTTiurmnXY35CXstyu+ETaCri4GxWHq6ytjjGVcXJJ5rwUxYwa431Gx62eTbGBj0W2yjofg832aHjXZ/blr7yk969t0tJG7ejLB3tyLWQtb4NMo6mD3dSpprynUPbbt61t/mx1zDYOvxHTDc6Fy04OmeGDbX9mME1dDZSdNmIOCadM1ugrnRbE7YYM0YWjk9AUnsBn2wBai91rJ66ZrUYBoWizQojyZ9WgGJFAkhCvDYxZD725M0zGj8bXbvib3Uha6Id0JtuXQzAtpm5HT0a7qEcJeuLqtJUZjBHWw7qku0LpkACPViWm9PVOe778CV12qWDYWxmubTF3YBH1Sq6Bt7XvegJLV6WZXUN1K+vUzLYWmUYy9sak2Ns0WLbtFPZog/zito7/159GH6LLI+mRHXjYait1XqGLhTf+PqbXQW1owR0B1G4RTTpBmk00pJZYE8mT6UwdG+ppGQ3U+7uzlsgGEqfZIHrF/RFz4GlIUZ6hc9Ayeoc6wYx7sV1z7mS6TKFZv6h1tfbMPNLUWzZDW9uuih37hZnfdh769rfLTFv3t00q5my0TQ6ZzPQbXrjd3+5Zyt9Ox2CC5JoFoMLRdG5AqsNqOzo9HIpu+6l/5rhGwbH2w0rEyTsSSWAX4++0RNWSltLbpsT3Ud5aic0s1WQDAXkgdTawwNa5CDZ162nPd2BqWSxEdq7RcpJaRC+RSBvB033VaAMNYp6qfHa8FmkIL+AG8cC+LadUnCDmvFa2fnp5Ut/1alRHTXjm1FwFlZPY8oCeu+/d0LuaR3tL5W38ZS2SYLWhLq9bwsm5tZMVfuNqLEg+uSbRegbte0n4WEujWLtrPo2I8Ze2Mra2543DPOoYAM0/Yu3MO5ueefYOxipR1mGbbwcaZu6WvEXJlSBxS1qxp0UEGdFTN+DjnnUeuCbP0ar2iTXJ5xqEw3hsYZ5M/rmlqzZm1jZLXoIZoHNwZksUDFuFoOLSxF4b1lcxWixmPf1qBq0CS5M48CA634tN3gbUby+dZQRs/s2TdzerVoCt3n76Kv8bP2/eNLYQSvP1AiamR8sF2/XTXMkpbxy8A6cq0/bmKOPZTmm+zQHtqd90P+6TerfvuvlvWtTpnoDzp+oDzIlbtMSzNB74H1Mla5Y9Pidk8w2ZV4pOg3cBc3tfBeh/HXzXa8YcsySzIrMGNkQK0IuYlxcbRG4MdHQviIdyJjbm6cBh2SFHTptm1VyiEbkR8EEOOwHYshjobWgazOc1Oc6zLQbGFtSgMYqbd0BpAGR1DNK3r2PxlEGcDtOG65C7G6hkw/0NQ4bcCf+QFUnacFthPTfdZoX1hN+3MfBCfgkUzetriAtD9OPddCWDpNAxb1o8xtvo+31/JfVqerTfDY/fd2gWk5Dc01uKA2UzarbN/4WzOrXnJr5jwZVaSZdIFavEfW2jtRIzWB6n+MqQW5eA7E7lKVwj96Vi0EnueGDZB5srgOEgYOF08NWKmXKyOoAMw/rpMpti/WXmPDkQe7S1FhwEeMcSOJ/JCOdlkvQ5AEXKsWH+9avRpgcNHVyH7NkMFquSQgom5m58zJzoM3MVrOKj7WxliZLX7rbqC1J5aBlAwt8qpnXeBa0DQjsokgjDkNqbeydQYggMJsOLIA9egR6kyuCaTItYsBG3bOGPkzvStEEjmxLssOXNBvupMwNsxZe7MIQO1PzQpunGvQvFr5hMgE6O2Xba+hzJ22vpAmdHg2mKDIi5qTF24JZD+MZpGAD3BvKKt83+foQdsigGlh9MJps5bSpv446tRKmhDXE5Or3bVaTIA4dgWWtYDDAtmqixxlp3/1qr+VJJb5RnhzR97qtP8YnajzjdeWsBDyfU5mFRgI6r9DfStkxGzuboa4chn+q1PBiesbIwLwHh+dW9WnWdQGet/E0Xf7/d1BKeKrrKvvuEg2FbqQMMnd642TKXeo49z3vZaChXVuZ/9T/VqkkxYdbNstEHWeK9ZK3nXI27lb0nNwZujJ9Dk1j5Bxiibi8tU5a4T/RcejLvTtbbDjd/sOK5rLIlvJ/2GUa2cd6am3BLAwHn5khBNowmsKD6keAllOm5J1GN4Dv14NWO8Hcf9p/P0XDb2d0wgmvADGlriQcynE7Thc+xGGZLXZHqgi1OdplANunm4rbD+ej4bAf4GTN9QeBOPNMFzuWY2M45XDM3oukqzbAhohM2Pt7Cd8LcB5ggm2NpIg3beZVj1AdudZDAuVp97TjMR+MtsYm1jtSw7lyv0k/6cACq1GYG7ViWixg13Vq9sCwWmkqrdjVkrdwOkYu8CyK6AcDVLbn57WIPZ761fceYbfW75uRs0J9pZG91sGC+dK5FtFSzhry3O9NH+KRrY4xv250+u62R8Rl243GMBrInLShNaCh0l9GkTLIR/vkmw6obogC1H+AYLaZZgEuzex61QNQrazvLPd2uumUQC56addx6wY3COHpa51f/5jO0hy+7uDGmRm4bH3jqHz1Na2herZcHhTmxVHplAM7dOXObKaBoRINGhZHYMsAO5qrYIZo/50q34xkNmQGrvdO2dnAXx0IbIYNwuG91A0n+k7Yy9tZ8edGVW253FIjmP20YkHLy0/ZG+ujXluh8/Svq5eQMIg66bPBPjrr/0u7p3Q9h0Bs0zLW3ndDzrtYQ4tyFaujjQ+9sxtx07plr0OyeX4rWuzlfHWwX7Hc0RSWnYrUg7q5zU7w6EIN54utoDJzlj5B1dQYFGNVUee1dC4TvPgPGC5qE8zdW9zdKHxgqg0F0ZO0DUU6ktvHqOnaRzGFpTN0uX6D7jY3pl/PQwgaBSty62Td9TchrJBzuAZYBtns6EcHMc5pPHQ25ZdKk12MnlnVfVoMM0O8bT4NDzGVKA0gplls16aYPd0ayehhLc8FjHH047pfPNUZBG4jYfWs9bVvrbl3MOuWEp9UurgpV3Wf6uP1K9GQHPFiJkaBwL/ppjMa9m0+iKP3hHxCPtpERcJc6ObNQfdhjCz7jp8/18WuGn9RMBuXvTCdotkCLNuDrpYiWhbgPYvpPp1EQGAbDNJpuf50M1YHidl86WUDDjconPwu77eBNSLm0RHX5pjyvVZ5LpCDUP6Wg7cnkkFrVTjrQbNSm2PsPE6Afv6yaw5uXMBxu1NAnthhcrR3AY7ud8/+nfAiVelPo08K5+e0BgG1UXNOBj1Oz4jaE0CTvaUK3GmBo29wXN6aFc7XSIHA1ZOuVn2EVaf2N3B6gTAy1pvK7ycoZzC12DGe2LZ8hjMfQg3aOYshIuF3fUiBjBlyqf6uL5TxaPFzKoehfvSnYZUwcypaTD9cqLuTXxBQG4rd0SGf5DU8uryc0hPreGtdnW+ztJDdqPcxQJ43xNZj+ymDG9tnv6243ppN8LG2BREPAOlfW1OgHj5s7BOZG9Lm3jKHVPl6VCM7Nu1FzRV+q0n37iZg8sKz6pOdfCvnSu3xbqJTsLpknKzMHPkwuylC7hq1DB2c5DOVWifEz7zojW1CgOe7rfC9tGF1jMYxINuB8b0tMLeiwf3KQE7sNhJaW2XcgVoqIy23qLENqZM8sbMDxhdQ1i14fS8GrY7rdcpZg54FnhbncdPyWCM9B+BlrQ20y5Iz0xgOfGnd2XjqvUJoZf30RUmIITZHRkBY0Nl5pRN31a35zNFeu3fwiPoyotC86dgdJpxifI0SV6jkCuGeTXdYYOgjN2pYbC7duVmOGtdPxkdHxch6H1cD2ax3XSi5sg93Ih5NLc4Rqxetez5hMJ3qPrx4MvwGr39MIOranR7QZ/TNkBGM/dY4hmnPSvib8r8comPcLWoVkXzT+U69m1fLeoiLOMHiAbCj1aOF92lmSvjXBftSQ3HPpASDROm9sjElvky7SH65A0tkLanP7c/LsM/RZ5q8ptgJeuQLRmrj0PUW54E/MowOPCdRX3ph3R+l5zL12uWuC/ctpj5MzgnL9y1l+WOqbcHjuyGwvzoPusAS6ZvLApJsKA3eqaQp0fvO1WzAp1t2H0ljqzXNbM6MutDW3uSXXdL6ybMpm6w4DLQZiBoxvyjUh0EluGm/dEktOF30dqjYsNLmsitDw+sORwCr7TYt7y62ztKWFsC/SJT6kC1xlBDNteCFmqY2eg6sq01F6u59dinr3O1Ca4c80822aezH3Fn47wYwaEGlDZmBo4J1DrpA3l4GMm1vS4lig/ZDq8Jzr/r2i0OPapxzW/Lrq5QA7ZHAC8rGSO3ZvnsyMyvr72ndINaHbHQ6fi4zxNdoQx04X6FCg9IrlT4hugb6ltJEeQb9Tvgq8jwDE50s8UZ60edZlPtNm1QAajkD29aCzHR6Zvp00wXo+ytR4+mHDQj2v2Yzi57uDs+Ze+XGHbslAzyMM5lwdgzulWDcPFske2rEYwi0VO2OIPPPshDD1of7TisQj+MlvWdxk++xzgGkD1P6W0YPIsHmSHWIy7vjc64mX4Ar1vplAKDgGm0sxP+Ob9KjJqmqwhoGNc1T30ZjrBVQdzpxj8bMRcGqSySzMgttIJwrXow0cio6XsrNs9mNx2q9LaqDrOaN0FUtvrQ/wziZMX0mZBG4gptmt/Dw1i5JMCh0mxl2WVnmoE0ZVb9s9tT6fsA9URuJLTjaY0IdQh2pRpUrPoSLXCjb/d01lunNnVQ5v6XQwOb2SdB4G3MvQbDrXKwJE72IMQY20S5T8Wpu/QDw7V99CO6QurCXNpIF1JX4y8NYuem2dXgzjCwIrHqDG9Du+D/7bkNllvy1PZb91uqmLZ9cR2stKRBqYwS0EF+gqvHWFprPxme47e1VFaCATIZNoFHRBY6gCDh3GbxHP+Wg7PX1/pBe9TW+ug7BNdstILDVrpL1NZ+fEtUmTs/wx8DqPM8caOs2rZ67iIUwBpZE8Dig2w+OTbTswyVEd7CSNmye60Hbxgfr/UW76e91QzW7N5ALXmOjwbvaZMcjJWuszG09s9izd47/JN02mf4vcB/sjez/IEsmsh4eK3NVTPkBaykk7M80DYy96AoHfu0P2KC5tGMJg61b9E9vt4O1Up67Ksz3WEJ3C3RrSrVM0bTos/1mitDZjARhP0ZnYCGsmm6gFjZZ1mHG2yQZXw9dcmP0DCtgWaIOSDpGqN9n6+sdN4nnPuxO9pkFNbr2yTA70AR/y1A44UICLdWbx9MfHumrTfEaodMSaOEQjLOgbMfy2L6STsU2Bc6tfYxgiwIDAE7n0W5Gn99K5AWvXU2eY8ldVaWiUA3pens+xfzJ00Dp9EfffEgZgEwxN/r/rd+kebytT5Jsm6zgNZBw9iZ2bG9Bz9m3b2eyjcjMQJGE1PL29ghM1LS5HyCa56sWHUXTvwI1Ao6Bt1P7WmCtenpli+0nv4On8ml2OCA4CAfm0zUD6hq0VHGZQfKzLLzPST5KVCckKWHwLfo7vwGyn/bJB1BHuGYnPY+mQW231acYtxo2Nj7ePJuggNwAYRx1/NB4uXcUlo0s21dpPJMw/aQgdPcNvtQ2bz7Z4c7/O2ftJtDhJfzH8aoa8fLWTStEnTkjh3r2YDWt/Ou38vFqkugTwXX4mIcsmmnE7DKQRX/Q51bZjNtrOEA/OLmgPlwvjb1M9kL6MsPSupnK4zuOb6x1TW+ZSHVMJnVfVIZ48b9SZuEKdd3znQ0yDnpI3cOWWOkvJhDhG417TqIZMgo2WGg7nCm8fQfo4cv9YaBGHfPVQRHIM31JcjclYma+AOJARX42Oe67EMUjanXpPwAS6gMbMb3Q8u7mFodYqZrIrRaNgwpNthWO2gml+niHWZoHR6lJ7acFLRzQR4VylNYkRcafmEL9N05jfHSzC52/s9VB4y9EhVssP37sa2vsao6kn3ET9hsQ0cAFvJst9QYhUFvFlSq2fq4tz0hb+5LQG8Wnv6x0E6keNowmWyPDMpicl0mXblHt8XGoT9WnljKQ3Lv7IrB3b+lX7ZwgSHfRJX5kmN/imCYHKYdmxbXRAE/1su32RarYX2DCJzZQYWv90weP9rOjUmS3X60bQNMlKG1jAqJAaZfzUa5lt1a6yiAtC7di1K2nVqCaNS1GPp9Tw3jFHxMv7fH0PaG9d7AO9pBQ25foWXMgsWm5DPnQX3WSGpb1ItXkB0HPYnBgvozanJVa0R1QZz9Qe+rHPW0wZRjsfW2WntBnVpBzXLVjSYN+AWhY3MXKIuU38L5ZaNuco9TtSIju+oJbvo5L8rr2XxbLm+lsjzmRZo6Cb0G8K5Dp3muLTP5ovfNn+aIQtLPhjCvWAx6sT0bVuFafbthurNwICaaT0rnaGvpBvJjNWxRFZqINRHOKE/Mx3vmT2AjpqkNC/+z4dEYLltgH02YGi1zsWZHjHqXgBLV65oDh1Ki6apLQGxnhgJgS7n8Cdm+2DKFneoSD165prcs22aJ9zMSBjpPV9oZN697O60cnfBNjpPVUzpQ+0DvGCs9CqhpCz3+5KoH1N26MXTAujijgydbrFNsh9a9YXSi0ionQuLbQJ0+86dF7SGbsQvzX3aDi1v9G09nUonrrLRpEb7ANTceYPNbhFkiQ3u86UiClY2iIDY3Rp09zKToUetis2/z9WQrhnbxqgF0cZt+m5REA9HqUrDioH93trQ6og9GCXk1nWqX6WXNjxaD+goI2vtQzJdaNp0DMO0UTUO+vd2y4oA+GxZqG9x9bDTjbAwpzbT2dyEGz1vbuLhr63RX6nq9Yj6omjTAdtRg35lK8ndlo+/NPM0gWGvWku7cmcLhuVqIPRrmGKwloaDOM1SYJZLbtOmoiw1IbVaMJfaeUyVDXt2QxRxZ0OMps+K/rLFxqbEx8XoRgt44W9AjW6/uoDxcSYLC8zPmoYrJaNo2LV5vp+mdhimtl9MD1i4wLczqCgNGmmcmDZFzjQA370FAkkZ06JefMhToTrxZS5Dx0B9GiAoZiVlfH2t7r+eNAN6qE9e9QcAbXam4E5RNYeUfNQFHhkfQtbqRDdRjmCmzGGXjQIK/T7YS0OuGWEXH9FgQEzpK6yGMS96AeTLdOlfc0GHq2hccYmS7rSVJiu630GbfZdfvu5wTfRWhUbysZ5iWdeaW+sfMvPi3rSAAYuIN2WexVtFTxp7J35vZdz04D6AFzbG/qn7XSlrCd0yKuEitS9ulEexp7pjKCOV2AVgdIzrFXXSh5Si0ttmbM/OF+pqN3Ke46ecUnmDtjHaTuBQy5Kag616UWFB9YKJpYGxMvqRx1oGmUIPCqRkS3QQVrGY9mEuxD3Es5gX+2yR60EdoZaf9XZhLt1bwL8YdGC7/WNvDBr9qu22KIYCQMl9OM1XVSgQMgw9ZpBj1Aj6A5dBmTmV7Ul16CnNQPaKYnOFNjVrUr+5QJ9t46wdnV3dJEHRYi7s09UoOJwLRY7tBc2euaiFdbkBFB3feltpwL/4FR/06xm3VdAbKOzTzrYZn/NSFaAyDY0Bq4j2nOasbNYIeTj7IP3lWIzVwHWaMTY6n0nBJurpMzNyivCdtA6Jd7D6xjCdye9qhitJ5OFM/KbtokIwhm5kQs2mGhp3Gfzkq7RWX4vnM4uaRU3PzukmLQMFaZIcmL+PFbKVgetF05X48X8I8uR+oYPNkukyLp6kTFBpW7nHMVLsrg2tAGi4Mlx29ttYfRpfoxVZ5cEc7r6hK7Jn2usrWs8ZX90iOWQT/eYViMkxSnqVL1bpuuYfJz/mpv01YZ3YsLbGsyvQcZlwQ0vdp0H0tMe7ibOshs7f0wjrDVNSjOZLjekRqjSznK5jKCxIebtAjZfqd3R1nwxgNZmGYvrV89p8rQN9qWMdVR+cdtDq9oUHR03aDC1rwOk/DKwJqJsx/L4a+t+KGmbHA5/hpHWsPpUMtCe6NLrLvJmbP27f47/03neVR3clxnnqxl0YcRcgqeMSrP/vojUxthYRKNzMuDAoUhuohoPRnY8pNPcm3ItbVVj8a0SEYcidRq+NPDfZxmej0maY0Et+9Bo1jEq2rEQKrGYj4McF6yOPBBphkrz784IIdIZes5tc1HKzHXZzqDP0pQ6BaDfTVu/+yabrJ5dOlaDYjTdRgo70iQYqjcNXa6fAt5WsIY15lZv/M/zadaATZ+oCPSQFp/xtl169EgXMwYoIx1Qbeudwx6/G9c7XtBLUPab0FR7aGfpgmu2uJrw7loaicVjaXODIAVj2O2h7qGvsNxuE4bDjPvOfwbprD/cR1G0hAL1xsXbVrYb16M3pWO1tPUbkrFzKTqEMda+G5cPRDojL6W3VrpT0YqO9KAnKNoYVwGSb6V8THG5DveSplPzylPYAV1L4WpQzN9eqYXUpU5BB9j92QCfRAsrbt34Ap+Jd8x6lQgqjjg450El77P97JOuFnTY1oDww+KZICNCfOXbvd+KO3TxuKa3C1qIGqo/cZ2kZT2bAHY4C6LeTaHaCwQmIM2KaWAt52uI9HWaUkc7Qmfr3j9MQu/CtHihvXbVuKaVc0yrumwtRhhgEczg8a9lNh5ussbcJeiEV21/bAFd4omf6vMYuo1bU16b/8sWUOKEPBU9omqybTrlz8xFm639NBBtYW0oDYCK9AeudEjCxOo/uwJlp/GNccOuLvfyztiyxK1aDQtFR6VazTjJi6vwaCaS4Me2GF0/HHrsFt0U3Je7991emYA9fmicQPAqbU8tAmGZ0DFB5g0OxhkawWC+o212pafBoJYN0XZzmMO9OMGgplNu2K35QHq8Cmy+mWHWI1nY7Xi74t7MBimC1bCvHh0iwhD48Osotec4dHZWs9WxMV68OFiD2afjX9PsiX1u+bsocwc684HSCxtKcyyto4sMuCmfZ3Cc1izA0qB6iaCt7aJMrTIXnULRKvoyBMWq6+zzLnBu1/z+mZeCNvhm9bNMc9lAaVHo615t/sW4OtENunp0jEVpzZ0EPObpHAwbto+VZMEZQNiJG5QtDMgQ87W2o7rP12omu89bFNluY3zPJph1bzGo4XWNustPSqGbe4cMSW5dPUB9p6T3LI6Zp9BnaXwnYDrqx/XjvJ6ddemOHVDMDuvnayaCYNUk7v2UVdCEDlarRFw6HN15oGukDTwRl882rL7ZAdkMmf//fMevmuz+7ruNkxZ62TjA5+hSOytPr9HtpYBjPNYQtja42/vbgA9NBajMzRv7hGM0to7xO0uJakp/RgZro2SGT42o80ImJpdDzjiCEwH6bjysofe4+9QSnh+rUHMYjp12JWv2g46Ji4h2Ns4h+0Xk2Hlg1Prrao1eVoiENd82/J9FVriw/XkT6mb06lmPxXAFgYcbQ93oMD0gSm0xvQg+pm9yjm6hv0nnW6W9KkQUfCxe1aYANvjWaZXAmhg93WFeb3FsYCuuz/ENhjsq2Xnzky9EJWQLjTzRhDPSUd5JQM242TInY8lgmsxl15xbssmmkY9CkljbnTuHpNs0jk6Qj/JOTq4PRSl6V0MU/eTKXbv3oc82OVrUXtZqy+9PfQLk121a9bBn9wrWMsrIWUo7U0RzpvIdDB2Lf9Wo1AwCyuUY818ZA+AQdDF7hulwOf4mV1OBOm47KPKCDzRaDpfcMoyWtJDQi/j8pxmEDbec+RG9uLbVBnevWteZ3Ys4RmU5Dc3boFlysZaX8NtGW9KPK8FoCQIfZp0T0hMOcndCNRkBv0AA5Jt0zx+agTAfxuwALa/b0usepBOYLeSTgg61AVpd703UeVpPZeLsVPXFrb91cCa6avnaVXjdLSukEY2sXVaQbddfmgEc2Vo67RshFSqYrYAbiuMwsiaBbt/CIC+dcaZhW72CUYCr1hR2m0tObDrUmyWEb3xNRDYdInFcjlSFwAbLuVNxP8Xs9frhi7wKh8ZTjcwOGUatMWukhgynf6aDMSdurjXX6Wvts2hW7t0N3YWFfzYBrv+XT5GZAosziGE9g2T2oHpwXR6/DM/NWQIdOern0ixqoED6MN7BjIHI75sy0DrqQHrNYdm3Cvaj3sRIKEHrE08mTWRp7F++mCFwJQYKSg7DWJ8bNSttS7SnboAbN/FG6MgyFelpqzSV6MAdf7BlstBSUFiklw0blVdTsGPdzALzs43yusbAWc6GSPFgljOhbLT3sF1cthfapLJcJga7HXDfY8ost9GE23D/LtafUqAD230njG2uDC6Ot1rQ/sH+FlUEW2Wgrpth7XQx26g/dCBaCR/aABhdn1AcHX8t/zaWAbP3RmoqVKcbTHtMuG7UXGRbiw4KhEFesDD5GMNjGApjUQIKNrgg8ty6QSLHC2Ai7QoUboM8ZsoCLtf8AVlPSAsYbyl5Xa1ZPaVXjsM0NH7Gx1Mi6u6deYeoTtwn06/gdRu+Cy7aGXgRs3ZjrD98T3GGxDc6gXEk1lB59V1ZP6qBTRuJlbW0YYatTt1yusRjdORmIvUIVq1wMHbBwFtCgVnVQICZ5qL0B/G4v/TSholK0u/6X0N4r6VOfRVnhus0IbazG1y1Y2kTLd9k3zU2sbNcY5RW2DdAs1uYM2HVbw3N3Q+FxDebbtpE2tfb8xsom2843Fm2pQvVJ6ZFwd3YuGEDcGbio3R/R4AsM4X62qvN15nzy17jo1s0afOWgdWVLiROVNmbdplHtB09zSbji9oJRwYcIC9TBrhXMcjlfWyXMFCgC/tBmTTZvhh4AIHTKck9FyeFRLam2th/yjAHtJNx1u5ULbgrkNbzHkEvgtSaec3nY6OqfsBiGY2gDdj6JjjfsZir8z1n6l+NHlW8XtCZug5yxXc4vn07hGgFLCSBs4M2hVp7msD1eBWbaQ5iS/T7CamONqvO1D9NvVsGn3Ia7I9MNF+e0DX/huuIOmobAYN2Q6XHtS5wezT1Mg4eRtM66HqIT83rWYP1w7hctpAOt0bE3OnGXWuBCZXdqtG5UjHT2k7bz2x7mT0mjec0PG71ijYPOEHhgMn9ahldWpkkSPy9dZgU9CIunYTZmnqvHUC8YYqC+I8pZPAOmp6O1Cjqpy0EW+EcXdWWruU3Jp7Z21Sl6a17W4gQM4w7wazzcKB6ylLKlfgdu3XQ7NPd1Q++uAj9blfXQVu4MtdCwGoKAznRhA3z0zpuMsKSGn+LNTpvLU0AbrORM1hOJE5b2HhnEz+papF0yc6pr9c0FgbfTzHoDTNLiGlUXf5Jplj1hd7yG0+7mf6QBqLiLGyS7rNRdzI6rUXW+rsME0JUF3+1Rx2nDdPKBtq42ULpsacOr+IJtV6pmFzUZ26yuMBfOG4zKzVqn82pkyhu0pq6OULcT/k+wyOQbXB1PYWHBrKaBnkWzKOber8m9OPubCMNqzyyoXxIs8DseDFDOplu0/yqea2+ZCRG/8fWR7oz3XId5rv1qlBT5bJNDtjPXkxbS71z6ONr/Hz+ivu0QU5FPcRumnogkEAXvuUcCbvkM5quJutO0ekaB1Ub5kw912+rt/f91lvc0SV5FxMc8m/IPfZBsNz1Axb1VNv66qB3J8HtM0ysXyfb0Ng6ZjDaAdoIKBfXpArNB/2fyLMFummj04877AcZvWSOTH6LqLT2HOaD/0bI2AmrTSWqKwNJlI5AsmxGgbrVXPjuG2yk48a0Yna50zW0bjIrXiQFXF9APBmc9GIVps83+C59W0+sKIPTT0Dlvlx0Exo2sVSmhZ9LF2v78y2+aDwdawOO7zP8Bl+01njaKtNlFGCMjVDFgE7xGXZJSDHlmvJtIhVkpF0oIae2Mu0WF/LYP2vQm3t0bGa0HrapV9VdpnY4zvgaFu0gX6N4XFkOn0h3ekYYeDQmuioA6OFlZQ2vIYtuCzDYDFDNLTnX40Asakktfpusmfba2klq1biYh6M3o2DTtf/QUWnQ664Qz1d9ByHNKlDglwOFyjyhtt5+0QTUp9h4/QSQH39NFx6Xt7GtDsOP3GcYKa0pGB4gzM7mmlbW/0Yyhc4HGtJzNq1oU23WQb9aM0wuBKLN6VgzqxcU7D3dm7WO5ja5Jo4m370Fj+ljWBtlDcfvpUjwSe7jp0Kim+/vRw5sbwyC6ZJaNndewkdO6+uf7z9lqX+8v1OLFg6sASx41RlJtkBHr6Xc9QixvVQ0eWZlGNrh6LJ7JyAcf61dNpICszxG90XYl2kNSx6g6PH1URWhorI41pjA0/Nrb1M7dB/YTMk7vquxkga5UsGHa27nEJxvbk2kGYYm0w3mA+9O0hlKxhYUGhsDON+2tDfdVpZrTB1pDmNBs+fzvPy7lgvh/xb1n0ZZBqoXVKhivI1cfpYccwwOFz7HcxulEx5r7/V1csODHNP+gaxqSOSYWv8P56/mTWVOrp4Jl7qlNt0zGSczfwepyTyc2ZqBNcOW45gnW3qJAxmk7yT1kGG/1DB29hBly4J63/s1aSTfdP3VssbXiMZXIMmbBmndAjFlEYL8fpd2tida1g7Lp1hdPxOrahBda9OYsOMQnlTTzgwH3akW1OXxDMDvIuPQXzoWAs5JGAkDAJhm7KzYQaDu1d5+DXglUhjdA051aWm00COo/rIRAe4t3R1aE8spNBmYzOkxtCA2ceaQgMMbeNlMdL2hYIzAtpNYsSX6AJzLgHrx9xE5orjdvouAxLINWg0MwYFDgQM8rGwzTW7gX6XUmB7VXNj0AcSA6QBpMEy9vZ+3NRHBFS9ReevHExMAb8Js1G6A6zHpVoRY2Y3aNytuXmurlScer5Cx5Fa3H9qxWOPrWDLkbJ1J85Re9J6+SAbBfWsHm2T86mmDPIB5BHJANiow26ea/0M7GBVnrGlDimaDSO4QAdT/2hd3ADRi9I3Nj6titBJaAATUy0gRY2q+5T61F26e7HSu5mAVFh8EIAUwzuQipQnJtnfzhEY2iDekGm8dQ2tpcoLIjq/gMM9GSA9Tu5lVU0SlYIPlT46C2LE1fl31xeJ73cDVBWYH/CGxomU0CjrqH1QtaAMjTwJtIA3/AHqZ9QnOt9tFeJu3jic7oRb0tAWREdQJfs2V1lg5JJ12WGjHNRdPkAD2B9bEWMRcmf29FYWmnG0g0ZeDcs8G0STMEQTmJyC8ZEKtSR6xonGHekh2yTN4Ky1jBGcmLf3+lY409HJvH1ZgmtEdYR9m+oKAUbxmI4kBGqdeuDu0Yzr0FsG1ljunA9XcRkGbTmc7IINedOIdTfwpo/R1SSZQ4czfuG1baJVlZQyhPoiJMLVa+bDX/kP3oNCs6G11jNarQdEjRmJ3x1Fqmz1ExmM3nPcvkKRwKN5eld1UmOaDQ9DoKiypoYHB9K22YtjJcvgOXSRMZjXNWx6p63LFdhDNyVlobesLkWOx/FpWhD63OnYjW9/U6eTDA4TjuY0nib+Ctg2Gi09DIbpUw08AZvrMA7aJ63JYRtWw2va7fCcdJ2TgGH/wcys03ID/+Dwlu1/HPVDuL60AO6VgCWi6HHtZ+JoNNxI265klSxGlnLaoBnHIxBXpq1s5JGJYvaLFlMVwxwbBkc9s6CB9D8Pud4zntqbv1jauc5jaZVjCCwQUFX+0wiGKkHUWVod4ykQ6bN89SOt1zVtgfudyV5K0Yc6K+L6PIaXtk02oCES2tADu8rfSc3o8nUWjoppMl3OVfNMmdp0xz9c5g80H5e5YkBXTrW3V2HpF30OFui1LGOVtWzxJbYvGtXAB3srSbzimSzqUa5L4umGnDja/ZjazyNMZeoNAnGBN7FLpmpPSRdo5Wpnj6CGjXTzjvS3bRa1CM6/G6VrZMQYNhzymbPH1co2BbjfoZiD3XKiaIatclWJadVNzioYOmGYSjMLR+JvdYjWl8/Tc/Yne8XTm0JvY01hGoPR1bv0dG+uRkrHbRvIX2Dt4QGM7+Bno5VsAbFcxP65ksN/QGqV/HNVmDfQ0vaWHti7af5HGWhhNWxJXpt0CPi+fuDRVuti9zSf4OhdmyOtuddgDjvzXLfZvjdkLeL1PMqdnrV3TTZrKMmvWUzjK9ugh231NqeRdBTBlwdJr1vFMyfPa8hdOzWhX9enxuFy3aB7aZ11cGzBrDUvl8EKUGbqENpqBmuzaRxIBf3ai4bC0ilai2A87drRAPxd4jmsm8e6i9XVyod/QDSYOetDXGZMzCXVlO7UGbrJU8G26dMnUExr4Ix0CbYcNdkm2E/afluyoN4Pp6T0c/uG5jZmNvAGyO8ZdODqhat8TIjlk1722wCEtsWZmD/THcVim5T1JauPNmkGHo9XigYDnS2/qovdgc2iA9HhetRt3srpPMCcC6usbcTlmBQMzTqwy0EcWddjBSUIw6htZJh/8x6KayDQszviU1vL4OG06Baovnfv1pCEL9Zo7O885eezvL0FlFbUOd74j1vPmxxDeDdmc73Gu4XO9vHaVzvGE2jc7zavb/ktx1OAXTaWps87yWd7+mCzlBAI9LdJhS4Lzs5KhCJD2/zvA3VpEC2pkYEzNXcGJE5MF3gwnwhd6cAD5160LvflditE3hd5yG1EXeaLvUNFtljyXvZRhD7W6Z+tTF3jEfWxd6pYMrNOGnzAl3mhRFUq7nyt6v2vYzNG+lrQ3HIaH2MGTmNI9YqZtuE3LOaBDktymksDPuzvcszlt7/O9cm2YsdVOljD5wn9rMg9MlGLM7ImNkHR09k71d0fvWui7RdJiUoJilo/UdXD2IzdUyejDwPoLYFb9Nle8qLChutLxxo4FVhCg06FIXD7Fn/u3JC6BQtOrG7CHJXMmIl0dw5OnsoxBsAvUXboEsyF9pV2shpGyH4Ls+ulPQLFqjS0Yk6ZJfEMQRmz2YS60uMJgh23DPHmob20jZr2cc7MGAWjVgTtJ+2nEEffNNbmkoQ73QeLM3RZKr9s2Fu5IrVJJrLY0u44tidjK+LobLEOpYfWH/6NW0DZ6sarGL7l0f1gwHzn9BJ+oK3FwkqLCy6r7zs0t8elt9O3XlJvS59onf8kj2B3DfvBm2/WhUEVJMKTauKjbslvPozgjYW+t1Aezi3V4xv7lEWI5WT935etXLQ5lvnl3Ph7EUD9DOri+PouidYIjgqcUD+s6N1XbYXjWw3bVq0i9s96iULFuhtMqwW6ZWi07F6/DdF9gRnpxjr5XRdbvmZh3cROgfA1n8GasMBM2zg9ImXr9XWRtrAgs5++GpLTOJppUwAEEmssllu0fPDWTq5U3alrKRdLSGq4DFBbi2QzVa4lmM0EGBezcvQQTY0aIYA8Ddb+8ydLSvt4bwQ/YvsCK267SfP+us1IxAbrzOCo+WYvzdpeoiTxKM6R+dwB2f4QuPWt30zka7Gb1AF6OYLNknpOPWv+6+asNAubytelxk2XwlhYFGDSk6aXjMo5nZa2hJbg+0kUWGQDGuVmCAzg5Z3ZN4Z6f66cb7uMZzmFqzYcmPa/G9JrDiOw02C5+98gcmeCZaAji5R2z8Y5B9c+GtpjYu8kRvT88YI/tfX2ssvBSIY6NwqCFRMtZV24yDNdmg8szBbqrmMaPGW5faT+pJe2FZZlt8zvaDqLIgdh4YMcp6bLd436PZHBrQdGW2SI5ZX9faeeCAq+Vgno0Cm58RDpa+Ii3Watiqs0Dkb9vcvEG1oTVFVsPIwasFlwdbnO7Igs+lqYDzMjampMF9uIuTbxHgXY0v9af6sKYeutjBUrkBYyajaZZ8fwhMs7QB+o35zM66N+daumD1LAw1r7LWqwYabdbU6TBgw/Lg2s2edaYv1GQuQHLNzJjdOwS/ZICsEwmhhtEYenN12xy74dk1WBOz/Q/zriLWrMGAN04Kmf5gy5un1oyRg4B2dWPe/zzAu2llCxyNZkztccBPufRm5i/C0OnZGx8HJ25pdIfNsnFxjFRyvcUQuBy7WsWH5nRRb4t61ZpW3xnABOn0D1JdajZcs8oQa/EYJojB24B5wzJGG2ssfNHdoOQ3ivqXbNmrBJKDfBOuYa3yiaJuDuCWNkQtRHOvOx8+ZW99dDaA59ZHmolDy7PbyCtYd2ibdezRhrM23go7StSQuXDtUkLviIPKi5qr8Ue+uvTJBOgujxgF5MwcO6694FGUdkzGz/q7rAtvLuYC7fDHqCz3idbKgC32alhzTF7roo17SYjvNIZBvhrFf9tc6y2zZQl8aBBtGDLFxoglxM9qvoMVHmMtnHWehaI0ze6Rc162a08HdPkpRvSpVaGZ18eGCTdA6Pjus2Z4bCeMTZSnWbEneuwvh6SbTy9yROpqDHEFoRINN+Ysj1OyBRVdPeblvswyAYkxtIIuMKjAgHoeKUK/rTvtAuaQXbCWOuAVHdoatQM926z9dTywXuFylyYTRdHCmDTjIZzvHk2nL4kzsVD6WDbQd5q3ExN064ANSA26ZgmyuodZzbNqTt1h4mBRzPu5lR7WtkYa881nOPY7cIhvPoza/rJs9vjmzzrMn5mVLTHq48P1jJmca9XJ+lONzZNoTkt31GxYDCv5rxCzfFbezczo2Vy9efRlte01TopuVY8WrNTC6DiLn3c9pAIt+faYv3bz2qiY20ibPCDaV2mzAnBJiHzxNV5xW1QAhCaqd/nh4WyfiaIcN2pm60fVspqvw2K3phX1l+a+kfZsWscV0g+aKPcpaGGbzJTBpBg1wNo+btcS6PtXPfmv7q2YJ7w20SvGozjEqhh3c28EZEnBet6R47HiWuQlyeUYTVtRuBHQA8X1H1/zuRb9Sl4m6cajPU+hXA1BVCrrNhpWdZLUJzpnY3ki5yykhn+8b7cYbtwqTD5o8S1eQ2VPNWzkrYbU4lpViMOyWtmzIz2glokyP4VFkvLaCrtP4htgowXrpcBMiiIEhtJOIY5Y2WQH48NzD6oUjN7BqgXyozoE0cE1BEGjY9VkpW2gFqOmM/86ltPHzlt13Qe4Zi5NHlaluzPIfuAQx5Wa630jmO4/bKauti11E3ZwW9jl2fj/N62sFszejYMv9WVmIdaO7hkElzuMYx6s6Ke15dCY2i8HV8D5uGsVpuaXdEBlmI4MgdJcr0WZmc+dHEhq3TWpXYxftsG6YkzbBuhmEyF9o2bt3MGMaDH1NpswLkyYQJCjT+UCQmfWm5y3isGML0FgWDEQ0c2tNCxRaaElsMvWs4vB9umaAx5S5R70cRm1etObBjvqzydZHa1dIOJHPAfDjoyRZcE4G0h8GwVtXrBv7zVgfZ24cVgGgfTaMRlMbQ9AGEFdzOubWdW4ZsKIzn5oBlMxIu5QvN5WkqvT2Z4Ims52WPI/bBTkm637CEA70uludzXT2GtIkKwD7HhN+8Gp4nR9QU97XSSYBBst4mMvDAXzp5HUZ27oYtiImiBg3B5lwE0u1oAL5+7uDngakjk3Wz+EbGC9w3BTJtfnjp9bRXK5gMMcpmIkHDBVoVXSgIZev1nEhe6Anp7img3epYWyMnWOasHfVPqMg0eloxH00Dm6H7a1Hq09x65qawt5Iu+LPdC2vKfTuh6IDt9aOWqdZMxtNLU9JYFYNBoh4YvZZPp5XRQd5lH0xAm6R9aNAcbENRz6XMMJM6e+tQz1hwa1SSEBs0us6SlzIVIQnc1JSZBB84WOrobbpNp8azfPrZW1C32npTSRBteKy64ajyNbf6x/9TPmsDC1w26i6tc22PmtArvgzwJgwYa5N+c6KqjMaeqDTy5QYjTM6IWt59Y0CEsI0a3p+ztjEBVd9WB9p9/0MSHsdMXx2YdnJuxsGLS4SFle1vEmPXPJUJkag1Dn6BBd2OmxztDsJsd7T91oSJDF06Qa7Dw2saOyQZ5Zq19VGRugwFhsdC0JKZyBc1EhmLJMLloJnX0Hqs7dm76NEtIXRgwf33HZGqMnT61uvUohrjGHOMalf1dzWD3rZXJqRnUIp7Qm95VGRA9E+vsV0zJc5eJC/ymWqjHARivlCFroEEN5km937NUxkVK0pI4bPsGnGdVdPdulUoxD4YIVdEAG1qXIW2rwb0ltoSGdE16iv9WGtjyvTWabjS1PBBQtdAg1rlg0gybj11fzmO9g9o3ugcx5YZA6NfV+iCgyNdiW4IxVaXMMRd+VIQntgfvO0Hzr+rtzmO3NUJAqB3n3THZBwt7gGhpPFmZh7/WHrbAZ0sC+juzVxJtdwzIP5JgCbluI9FfExlEAxlIaWOCBnmrtFNPBr8+1/zbxWNqz6Un7Dm+ttHXye7YzMaB2WStKcfhMvXmSFphME4hSgDPuVuxQ3fnYhQJmbGix9PTXvmQ2+SFx1dgsWMJtXYfoMw0iUaK3cptuhR7RzboanQ4149wsMf2cHvDH9qsVwMFpR81Lr6Lk/Re9nQvUBCGZp9tPulBTLEXirU2QfqfRsSMhf17E7zgLbwLnwplM00hRyrR7dv5BUQXZYuNIp6cAXRypufE2/9b26DNs63HnBnfq2vQTvrBX0kLGnA9J/mvMky0dr9x8cBGv3JArBjgXwqPobPsgGSmIDDSxpVYyEzpFGMe0hkptTFRhr3xmxZU8cWoG40zeM5sciwMiFvoC1MmWBtTlxsn7XDGYMpCdOaOwrA0ZuSFw7ybmrN5xuDozFqus8kN+kYRhDGCGSJLN+BngjyjoZGE9GTa3h7MAhqycylpbemcPIufSLBnusHj13HpaANafSz+3BoWt4O0fg4TmdEZ6Q4LP0tjOMyVGYSH012OKtvEe1nMv2SFaIKt4KmOAHIFIYK7UPh5nh0NO2ccQnMtta012CErANzDeyjA6H/ohkP/QYfWNx1BPN7biNm+s0sPpBfcC5GxNdIkFnbH3cgZI51H/+uZdYVun5PV4jbr4MFNmKrXOuIYCn0YyHhZtMWSbrzVuIUinXbiFVJNi4m3cQ8bgYMbS1oZelccO60lJJN2kj/XqI7VXsFDmOM7FUtiEx3UTpAb147OoODI3lv0ax8l6ST1b9mKLXXWLug4yAQ7lPMnx6BbdYiOiukxQr4bwCHBuP/rAZJn6/R/dbqtdnpa3MdCGem+Y1CTr8zsYN6RqPWZWjCa1MLqHD1rR69tLDM5uG0xfta9rt8Sed39Ed5sn02HGYme9yA69HPVFIUGSXRSE1j1MUhBIzRMVhfzQQxba0sCUhIbzW7/rK7TGmZXHtyUhmFtXYOsV03OUEAa1BT2dzTFslnUHVScG4C0ob66ldDvJlPEzZSFB1oOUhs+DY2IapFzkNpmxDDg6FsQ3NjsqU2crp3U8W8+OOTdSuhag1Yx7M+dtUuwFtL95lXQ322YXF06sAJGrIZDnM40O95fT0a+G/oHUOJuWT3bFrButNS2cgbM/gZ8BwZno3U8LaWyGpaQBrxw2wtY0D1SA22RnFsenP53SIh/MsTruxfrThLoWvw6XrhU9Y3u2rdMAOrUQwWeakB0gEeeQHAq1uEgzR84jt8jMWlS3BSvub4Jnj6f2cUN+gYtbx1mmHQgQZPxsCV+n+tbk7kafzqu5CB17POpkzXvWidd0CyGrxtQruJxrHuDqnx0tSZ7FM1jWBxmLPDhaRjswFfHl1f64+vUePjRl2sl5qoDKJ4zE3X+flXn0QoERQcAbGBMtA0VrRUygR6xycI+B1aXbzLo/rW1X6wxCm+OTttb5FuXi3DObOnt/tahPrPtdmAd0TwYeKs7EGFXTXXgcWN1GXgsQNV2aL0DMINp2H0zi7zi0bu6NxDOd/mzg0XxbR+sywGf2TAXZuKk3mI6u7cpcGZr9GfIVZPzeIaiPN39aJPTBrmqkYIao6nvNcsuGI/EvIQs/TLyGd5DdzqdJTKvIZYf3acbMJ9GAWGWg8fXiPu0CJaAWMNY+B0db9JhavVZHr1zcfw+ABHbLLihwwryFQBcq8hXlgmzFl2oJCoE04cG8hM6DZI7uQw0G669ct58ha3NWdLrZnTbWYpWDHR6o0bVdmmepykdYJJ1ngOL4bOJdnvn1Lg5YFDU2WOygwejl/w3s95k6dzZ6tEQh65s901xK41Us8j6vADbmdn0O0gN7QTNqZ6rDZZhWmjczAfZPQtnL6rlDSs3klExnygk+CckBwiTGZJiEGyXsGA21zmeDYgt8dr3rVskaP0dByuCZLE7Bp3yz1b5BWsZHen4vMftju3Rddp7t1tRW7MAyd+qbl0vT6mgdLwWY4TVfxiTZ3fIaxO8X1OIyPaN1GMjyHRZwpCdpGRytM3JrJrUgcHi58xKOhBzINLkeDySgYBadpP2MZpNaQRFp171obkNUEeiEgx5BsbK1lCbCJN7JGslHCgtp0/Wzd5HxleS+c7jNgFqk034TaCOtyQWhEXLXwYr6ElE5REszoGKwddVIV9kx5GZXt8CsO9xA3CNo8QNThaoxMdpGYh9dgRofj2J9otu0wW6ErfaIxh44IfjYqr1iXaOVDSwoZkU2ptbZO12NOeUPDKBlJ23Cx5l+9NkudBQwllmXo0Pt5HSNF/2tHXDCLtDAK2o5SB08Cuyd/Ik8vX7WjX62Yso/mJlvKPekXWyzob7c1ZFmFvfVQ3qBbVfNpHMNo9mNm/ADtrJO3u3ZLFDc0OoGHK4Nq0nV7XZ5JtMQGLBbSy2vZENQ8H9SD7k6/gTSadhCD1m3Zz/d1YOANbBmPtJC29fbQ/8HD2SPTazKHQUL8oY0T0fds3xHOEZl3k2hUZY+8E768qbZmerbV39jr5fd7RaykjF6JkC3QQrZattPNOaZbXNZsP4OuTqEqtVY61GfaRlt2wyl/ovQNpKGr8bN1tiIoz225I0tLgGandEvhp4wx9joVFNz1Oxg/HkxiqvSOdqKrNWs6qp9baBojLVNfq8yCxnWrs7Dl7u2wzFib+31DRWK4vd11mk20KtoI/9QbanKTffusQa0+kEMgNXwO08XFwoZ210bA7Yd0HKG24rFXFlXy2kAZAHcVTObOdRERtt3X2PYel0sZa2D9LCRjG/3RB5v2DqA2EqdKuOjoU2pDq6otx36C2LUXem8wzAq4To8QqBp3TYtVmk32LoEt20XjalezOJ/vNzSpebBP1BmGfUnIr9n3Iwqqbgt8kdGt/NHs1lcnVlKGBR8sySKWtX22q9o3PSZu0sJwmbdTSmXj5h1Va4SZNy0Gp+wUdJjiMyu/4BvtecmufrddrlC/14w4kxl3VGUejUIdtL3Rxha9isB1ambNcRruh7TTKGBR9eN60hXFc/j5P1C3qgxMkTmwLTCklj7HRgEZRRNu46QKDFd3oWEyrWZW4siNO/Bg1WOnkmzH16vSdbOeDnzKa1k6oz2xYcXd4f6MEtA9LrUyQptp8C1FDmDIvEpRuL6wQtYssDgMWIW9caBtee2kPrYCh+nakR3ahbqxV1Otor7MzGm9yTRzQZnzQCQZk5CC32nCzbR/l+rWuEZv61wLmKEbBSrmfoJuJ6T60OsucgfcWbgOC0JJbcBodNaT8XS3vtcP1IHquq8JwulPgz+1lNg0Qm5t21qOaQEtX8oZ4U2lTqntcu4+XDgjmBkuQKQB78FcPuaEffd/xsa3R9jqRf17X29cTQw+tAGznx7Lj9ie64xzRIocTLSGpK6hDwUholzdZbi3+3sVqE61H/6lC3H01t9kNK3r5sCObedvfJWOhh52zw5/END2uBZQzkrrwV1QbY9s1Q76o9g7Xmp1IKMZadZ1JCuBcpVDruIrT2Oa039ebauTdHapv/m2M37wZtKMeXonMWRtkgKuQaGt16jOvKdWAJg8N1Sjb/P0Ec2SvHQ4Zr/wxNSa8t1ZuGondaSRkFKwUZJ5cCGdeHFQmHUghUM9lpyCDGMOsQ9MUhmKM1GyGSwNBgOzqDYXHhrrWkPpUqC0gWFe/IbJnAT1J16bkM2dWF3LLrQWa2yBBbh+1wKGhwzH/Wj8UIqu7vy9inSa9Ax0Og3e1G2Y44MNSeCrgqIRuYnzpja7qDPcONEfJjUvCa2HS5iFc/yBLMjGZXjszzAxYcRD132CppRQrooUORrZCC0m06OwzZCOpVy30NiHtd2aev4XBbWsmUM/xbrgD1T24MPK83ls6Vcu69UCtue9WrQ8Nk4L2Fp7pwtW5WtZXCLvnc4P3i4vgs2W675nUy0kXyxePaBa8M9OL5HJPvgjg1g1ait1f46wfbLWOsTXT2vpDatf4Wuz7IDvukgJSdBz5Mtw2GIXdx3IjPU+9YzG1vP6yn3YlLjKi3DN5nttm5B7yrV2OoAIzC4bKaM99GbffbaulgXWSbax/1G5+agjIcbsGd0yoYxZMI4excPbRfqXLUV4bwWMdPOFsrL89kr62oTpeh07F6aQ7W/XmxG1CHbzGND6mTGpDVZpjW32Q6np1SY+1QgyMWgIQ31n41Bddj6CCXGUOlUPRa44DhdmrGf4XY5Vg0XW7dr5I8yFOx/dARllC4J+v6BnNHXeo5tfXzi5oyV0EUCMH+2m1tKFDp8AM3IB16NpO+pC/O6emA+0av44KN5z6byHBatkr+0Ztr2K1+rBo6dcSziXGUsYbH2dk3aOq3ENZpnx0Q8GwTsGbelbpcWjsTSwGOZpo9gjep1/ZS8GkfQjv6l60/Nus6zAdOgQrUyiHDeNpZ6mrtJe2nAey8AaVgCB9W1BzLzFmayUQYGD0MMDWKnjLgzvO0x+S6MRD8eWoDbHtLrZC1Q5q2g9S/mYXnB4riwnSv+ZWydu461LrCkAUqXhrAbW3NyWBIQ7ASdta8wFJ4ZEt8s6l8Ldc1iN80Pi5dx9J46Yk9BmTqakzO0Zmr1rkBrFLD9xryVxuzpjUNtZaCm+D0oYLV0EfrtEsCIWqw3cTWq1HyU6al60O4BrK3Eizu+4MxL5mU88NBUq3GrQWdQ1vKGlEdQraCEvAMAWqQx1K4YzNNbm+3NBVLsFPWadpPFdIA6h09Zd5krByjM5G+0c66kj7I2pvfkz+rJBod9WmUEzI6eoLC15Fbwt1H6G/ptGvjsNd0pybc+DII60RjDgWpaQ3BjaZADiihGqnBKoSQbQ2zaVS9sxuHwTSeVgXNwBpYmd0Ej+nO9Ug7rP2wO05uoNoOWG4DHleix0yoL6BR8jD6YVQhHhi3IwsrbN2k6m27ejVPlr0x3DgbeB9JuODwnSRgfvb3Ylq8msUd+FRLDDRkYyyuzaj5tAougNQwMxHqG0w+5dHUBm6GinRJZiC51hv5RL1Px+BRglFTumAIVB77Q8Dte8QjOW1kJOzIVZ9X8yV6noTDMfpV7Tu7q4cMG8m8yzJ+xjPuwGyYBDMj4uiLjN7fobyV3v5ts1GT6UxtNwOrcgLMbpVU9TIOXXApEPmzhwcJ6WB05d6ietaXNrWPzzW4JUNwuBcYbSJ+pbP1ivp5BMeyh7NPO4zmPyxd176nMd86zTtDchrJWzN74W3sp7arira37kjn0AV7H/0wp6qdbMHev5CzaVZeOtE/6IvvfsoZWQwQPoxdNORmdZrFeJllwI07gSt87QWYLXdG7qNANS+48RN20uXPXQ6XjuHW6wY61tBohmsDCOjtPLUEj72Udw+B/QbewoXM0xYFpa1DB/uOarBSQSKLC9Trv4t4eaFALTORv6KyG54xJ02O+zcfOg2pWAx7ZplFtxlagCLbkNvh+wATovgNq9aCGLDqZudC2OYYOhsIiubxDMQmKmUPbi7UHMVg+JxtOkJgooMgMEGdssBubDLXs5rwi0665RF9QJ2YsHI89kY/1h/K2GDtAGfc7XlOqwLXj+bry0ehmeDTJzhpkUz1n5XId146YejQoxgzfSyNbXODHkGtzg9fdsTTw98FEqCbwWqEXMBlhwlyzTpbW83culxrQIOmNnTw+7OaDSZuAsfXwJq3QNTs7BrNEFBIOvYGxjVAJKrbH6t5m6Nxjc1HmzbQbUZKldsjWOktEAoRM/S64ZUnt24GqOdduelTQ3K34xgt3nBligiyobQS3GHpaCDG0ujpjLHpoqLQ9FpevtC2W/ltRKlnAANoj4Jr1FLana9aMFjaS1jKYLTsHaWjX9bVPnVoMD5o30N6tG4afKqRsuHUIKEzedsFuR0XLqHtHYyEKjwXdwZ2yfApUDj/k1ZoYtEC0jOB57GlejEkJzKHeWD9I+wb7T5wR3bX8fZeeMuKh21XYtmoupx81quWc2VWnP9IH5ojoJK66PtcDQ+PyzTkhiNfTfg6MRMiP2qO3dOWlZgLnm7dAt9cOnmnfWVjldyDl61/svH6YaLAobp6HWDubjCDuGBINPTU9pxzR8n5EGCJMmKfvOcJoa904WajstfpBCaXfdPoz/yLL5dksNb+EvvFINnhbViaYTANC8hr7dERRoed3pD652NROGizAkdUpMnVkTqJUs9DG+6zYNWiByzIUFvkk3VOtZPPSNtefUTVZzAMEdmV6LcURid4z5TYQ6MGKWxK9c93j/3QQdbbccQGGy9zTl+hot01J7dSD/JOlF9IQqNd+3paEwCNau6TLQ1mWq1d3zPKTm0hTG34LYL+pEk1IlY8tCSqhwDXWYbpYD0FaFIQN9a6M9DUVofsvzlFoQBcMDW1K/bDulBHSW0ZytDRIGCrQ4ibosUIWnoaT0OFu6rQ/VwQRu0JIa38CiP2iHLBUFjPU3ekaGtCCVaxrQjzxqtIJSNbrSCo6mFrnKAvvhQwwW7XiN2G+PaPFXzh+O1H3qcFc9dWM87VaOir81TqHxQdXY67ATPioTR4zu/5SJsKqGQGpdrAQSrQgaGacD8gGWJQuSkpjQK7M4cVCLWh3bQ7xwQZQ2EK4glMS3O4hXIPDghMx5cEyFc9NOPdjMsJj25zzt4lVD8eW9xAtQro8QPO5Zz4DtCufXAn7toa9yProzeNTeaKAdCDHnzX0kyHru8GEGjcrEXBuGh3R576jcrY+GxYXO2rN6xF+YsdsTXG0ujDpAdWLUJnbftDqwmNyvBgeqHX317qN1dRNO70tJ6wS/SzxKFIpD/natGDfl2gcTxrE5or8VeaBU3PH5vEI3qMY1lC01agRQkIJsW5w7aF4RdYCBNbNTngb20NNjqqxsF3B7kHHwQeh5wvKEV31ZyuqVXcDznWUJgcbQedCeuFlQ+e5uoV1Fg7zqsqxeO1He0QY8YPtaEyFMZCuxgPGXes/+3+xZfocX6GKeDOqxs1MxfpaysNChW+EHTKFuFV275rdf0I/+bkLBDxo2A0o4E8SNRX6nkdKE9sIrzNyaXptqc++XdRo/o/D1+Xq0bMEXaClnBbHim4Ln7Zdy0RbBomjRrUip0K/ro7j0XLaDmLEtzjjTxfh78tC/2henQjuthCDyM6H7L8q1e8vjLDzmmrQYqFiJsrOhUHnVlVrZ0NmG72dDHiB63/ZQruabx2DZs093Oh2o3AVVhze1v3Y8R1+sWAMLRXDjKHTVKYIX01d6JE5f2ztZ32IEYFUCFz2LETPNRguQJ85ZQrdQu6nOfA5hl5q3rgZcGtRsyS+zbdsiO3SMTqCJ0U3WAfPHkoRC4im851ntFgGLRdApXkw6x0LpQiMyy2LpjddkmCtwpP4DBd2YOKHDCguvQkw2kEntC82620gkeivmUNecFUxtCaeE+dXkrtXox9AZnesjeW+crHEjiF421CYLh1zXOUVQ+VPte0Kxo7J8072hqhQtBhhxUMAFDPtD+xeiFXUh+u+0MJ6E9SCT7mtK7c+dsCfTkJ4UJCWe6esrGuTgjiyrtaCTtr76zwHXpwecUOVybOJC6j6PV9GtOqIY0Hj4ndDvCycSvBDoReUPDKZOyDOCuh9QngrlfoPA6H40845GzUnff+rzwI3q7Va8EhB1gTUwHjsa3GtYrPsPSGGtA9XPk5wPfQZuqdSzGQ+zLLVsm0PjG6ptC/ZBxPQ+mgaB50/aH49DuuhXdQgaQc40NbI6qIcD+OUHjXepqDoNv4GB8kYDmSog01ocj0PNaER8lJta1v9YXbiXs1cC46K1waGkZnUalhSqzQ858lc4zuKOPFxflAR2ZJ5H+sDJOI2PdYzn8bRc97NEt+O6inNBzOioH0GTrgDtxH6QzzGbJtX6wDQ7dj14CujBDQDUt6K13LoiyCgiOzmrZtJkj7ze3pFxtvVGmFQnUujON0anbN3cjr+aInBr+rTfVXXpL3tbG6bBfTDWitSy7Lr6G8VhOu7qEiriJ1zO96o5cOR6vnfCKDvuA1RVqya95KmVJdMgodhLQ8Dp5dtXyO0hdN0WkrgwRg6c/NgyuMHHCN3ke0MN9oUPMhIGxF/RUgUNXxEjaZ8Cpp6gi3TOAYnGwzsbdF05J2XinBBlll2zK6GCwt1xmxfXblobhF1xp6CZ0ExuYvQyY1oFu13ZrNdCDlWJnQ+jQZSK2w84WdD8F6EHndofn8YwGkGn7BnpOU0bb1RkfUIw6FHTM1z+tMrBJXlWLwVDYF9DRX67zjL2liQVCkh5ebdNDBoTg+QOlOJw+Tq+tM0te/cgMcJmiwJcxbicDkNS5Jten3lFnR6ub17NdzmcyQ9wlix03KFbgu03twj0jfG9mx0JdlKBG9dwB4qPfG9mcAK/qGeCNAsWUV/f9IeEI07n6Zjc8DOc3DTIpvo7Q9qE3zcXcGmkbOPBo6b1vp70UsnvaUEdA3JqyhztV7pQc4O6UE9CQYah0yiqE9tDgxu+2DDgrqrG0HK77D0nH2PvLO+vjuS1P2DmvMMqhw+XLKoev43rRZSFck6uSHQrqQczOwUK7FPs3x2DqzTkej2j2eyYaFdAt20AtF22gR0LaHr8E92HGtLYTOtiGL1QX5l808628sjAutrGL1WT4IQMJimq7nKS1s1E1kg7Td0C6BsAwjzoQKq2Q6F2DDD5eRvXIrtsf3zDc4hlCQ46gidAVoZoMPYK4gqtzJ6bZ/eaOlrmxZHq+asMMmgcLFStn1X3ssFLr9Kq6MY9LStlDow+VascMGyGHA9HwOoj0Ipp7aSMnH2fBXCDofqPyEK5L51MQ2ReLJmzvmUNAGHoyMHOhQ3QoAZkaGxwtpiAcyt6ghTFqdorIzM668WsnoOZ7/IOgJ8Y2LrK/tD+Zes/HBrWvThVF6EgdCoX+HFQusshZUNJYZ4RtypGB7Qk5rt+o0r05RVDTum8YgyB/rigOA6G9tCm0OhSva4YZ1i0OMHnqCKs2wAdTrofNwJCHr9PMVaOp+wFKoWiJ3nVb+y01mh3zg3ioab0KWJb8ic8q6GyjVp3sBskzsZYrN2hmUt9dVcs2PTk3YJMcuuGgWvaifgKvT4Hbot1ZuWdR9RTSCBAwLTrQ+sRIuuZdSzWpu/V35qbgdOUG23fMARpIXyKnwf8c6Z6u53P0ho13Xz47YuMz4mgEdU1Qda82z3otiDVHaBVnRZFhXQ12tabb1B2h4mdFpWuyMzXMFmB1UhB2Vjdbmu2eyflrYNsgz2/d/N2ug2kPw4boaNpChZzfMcNurC2ENru/9eza1n9WYHhn21bZJcNRUc65hrRbtvmNxjc6RwDcquSFtYr2tNoyokGcIN9O68p7OoBiorzJEb6bMW7OAcg7aRgBHVJJZOd1+vemrTMN5mWc1TfaL/twAeIA3ZZ5jSJxaZbRFdOBayc/KB+g8owxx6Q7sNSGc9rQupnD0Opl58AIwchn/LIn1o1p0rIbTGcjp+PhsIQ/t7p2rf7dnsxRG6ow4pHumc3RrZq31mgmhZjH/LhGXQGf75s9HTGl1LMZ/r2bR10GsjDPSmnwbCtRvXMz2nLBO1v2GlTDEKRsIzwuoZIsMxV6lewA1IVHzXZz5q1sFJu8GbRbAci91gv6R7lhz+VXHEIBsaj3jqFiB8xgurAjF9zhNtyIFaNudqRhlnddjRuJK18r5F/c6T6+7dbVHjsoxZn4jJ0Z7WbSfNm/rtawCsAV9NVsh/IwmT9uvnU4Qon3NWOmXozTD2kSd3NzoCINt6hYATQT3hDI1Bw4w+DlCSxh3ZmHopAIJlosq0+LBTlbYzPsEHU6sEuX0bA6DRdVLegxM3ZL4bGNjl6NNQvQOkljxcwZ5jCRnu3qA/MYamY2LGEop1OJ6+lLBIhqKMLBPoTz0DqWiQWc9If4gyWd7nyMEymZCtTFhsV2zLUbkJCboGW7vcdAXDww/jpTf1fGGv3XZi+hvnWmXpTf1A8erc3SDPhNbXA6ZA30BpBosfD9wTRCxa3YQf1usGEMdHSOsci0/dZGn1G1GH6nWXTl7lwte7MT0s/aY0/T0Oi8b2ZpZ/AtU42ibTInFnu6wr15HT88I2xZ/TR9vr23GNLpjCX22eRXRL9qYXRF0ZSjCh0GSPrKIBgyA3ubrRucwXaIzvTMYSVQw0TrN5Db7BHEw/82gUVwKzZ3R0zxWqD7NgBt9nzysZ2p0QrGzG7bBtlfHSlsZXi8z4hQ5bFLHuqgL8e5ts1xAWWMdfZwZQvVq4FV1sVhh1lrYlev9AyGNowUNypBN9gry2lWPQG35XH1S72vmvMxJgbv3NsazisYd+LtTaNZvDqV7GFBSkd6e4MtMUoQwhyav6VkNh1afWPV1hqFczdrpAjdcRmjBTVdFhMpytgZMe1vA2n9rURdoiow6oYQkcdR2xInS4enSvWMdpdgB9E6VWdCD+nxzSojqhG0hQGXWtRD5jWLXoiarXMRvaUY3Dc7oWPTyHrC4NhYG7RXNfBhWi2hkY+ENlHW8tDeZzn7I1a3rCFMYdaUCddBTpSMINa7hS1B12P8TNKWoEw2jVok0C0YGIz/XdWtj0xdIbPwM7sBVeTZCXkBK1LYb+isCAeJcZdZfqXoKzLpvTC9y+s6tIlNs4swjZaHYCVN6ft7ZWFrNExXfo5wNW/aLVdaOFjF3Tqrpes8Yj6kjdRNJuCgPv6anl1lbGnVg4Ybhovn49ppst8/G0NTSqxjkP0fu5LS1ooePmzSWfCNi0WOa7XcEOBYX9SpNni3wKzaxz0UT2vl3D3psD0P8vpPSDw7ajwrMTTNmrVDMF3ANQoWNadCEYQFXXNsZRKNFa2q4DHivhgIzfromk9VfmyIwn+RlcnRXTrV8c1gm2A3WTtlVFxfg5Od1T+GZ47ItOpIIwmU44TDPLmvGTS3KK1MOlgFZXsUF2uoAnXLnE/QJpZeG9W584PfOY+pVf3SaFZXs6CW90zLoWiTU0ZGGuG10x2GETJEJpZ3TJmHYZ0Ov6jEtfJ+ppFwNKQNoMLG67m/eGhm7t0n94/hMPhhm5DDZps6JxbNo6gD1sWbm7HurtinVJEbD6NcnasArNz9i2m1yH5RN0Thmr0wnJZpeywKT5J68ES6lHDDXJt+rWAmZ2S08kGNeGBgFiJ8y/84RatHEBu4pEVvjwvQ+Vb+7Nt6hGBDaVXgqwIc1ohc1xj6/+jSt3qAi3Re5NHsXShEkPOG9nS8xiY5w99X6+NlvUuOloL3ilaK21vC6P2LGHJsRAzQT4h88CFBOO3MVbo57Qvc7F1t4uaDxzJhvsVgzhloT0c3j6NGPAfJj492iK7230Ir2TObIyOkecxxIYmDtUtGfnAz6WnF/TWV5btthJGZ/9FYYaNY2cb6P61Jx2kbDO6ulHC3avrcO0m3O7MzcTvk7XXckbaRMazBRgDKOTuSvQojqe8NdIBco9VkoZIVyisGvusVFeCZLOc5ifPUlWaCMt8H63HfMXRoLa1adaCMtDpBRefcvWsXrUvmEAIsEhusjtJWWpyfyvaZWyC9SWWIXLFQetOQZAaKzsu1ek6TVBYcb0xa36iX0cA+JD7X3JjJ/1IX7M7t+56ciAhmoXOIIemboRkEv29q7c5jnaa26Pq3rdFVW0tQloOsYnUAsGsYc8uaZzPE4PgO4z3V5rxsDY6kjLGM8snnQvS64Rlcna4kLTOFqpwK2mHNoCom6iTfNXPqnPyhoENBNS/+pKAoR9q5bzdoEf0sgVBUrjUzgYNU0oYFT5NTk6vKg9iuqCIKgPbYvsfc296tKVRkGN2MsGqnsxRaYbjdsDtwwye2Zj8NIu+y2PfM8qcdygA4tB08ru53fazQUgqTwxazDNPt6CyfFqAV61whobD1ctVBxfbCEOiCp0nF69lNkla9mzFNRglg06yaaxDHvmlPNKM2iMwPE/ZRS1PcB3FdHidvku01kYymMwLaAOzfbRn/OxwWG9/0y/BkEPXv+hI23ewH9Asrr6nkvXg1mojnJjbpkdiW6t0wpcZtfKzfHrZidSZmEXLTTDgQGzLfKkK9xVBlWtQDrlhRygtbAx8kRWNVzTxWgJK1bDrhydH9WcMfHp9vC2T1Vbzh1aJeBIdXOpk4T1f7bUat9WuksTQ60pRYyySYbUdfsBdFfCrzls6QGDrXgNntSQMbdC/tinWYjpoKsIN2SXLcCMkaj11RYwkNqaB6ofQvFkXEzPAawRcQIGb13Y4TjRlwobo8O8oKuprbAPhp91yQS4IHcv4GMwgG6Wt8NzplYOyt0YE+qvXweuynXM0bWb1lkOGEnWR2ktkN+sFI9MO9+EQDXcfrJnSYrq50cFee9QdRxYeSnyzdaKdCPlu0GA9I9rsbX9NoQiDXueWd7RSZq0wKL97Z39XguEP7D/KOggOu0EsCsyp+7u6bnOh32z95bwYdHpmsHtPvVhE2wYxYEC1SYek0jWDer0u1ur6lJ8MlhKqrawuiHUzxY79/9/mefMDcaeJxL3YdrKEDTJmHuvK0VthPRbh7GLtaza8zdTyXiJwxqWGwq0ctmDX7DNBtBnSlNI1fs6QB4Cw1QRpDg2cb7ySkQMGBbjCGQeJ42eSELmNZQuIGDVZfoVDwecZsXsXMGjfAgnBpHlACm7wtcgc+HYtUmej8vS7uax1sfEmLODdvvmPy1kKi5CcOFa0GDfMhrkJwxq7xoDUxat5PD1BtJLSXqaKZDLEBIjtN0DklyzJziyS058B8iTUEZm6sJHlKmcCiMeuYw7lxn8YxNU7CX9ZHQ8grKkYW4vWX4Z0qtj8oMH3TyYbHW29XYGS1sW+7Ugov9gFrzhDpLm0oua0qA9cuhJk3jjbQ60JGeLQdK1WmhMNgdqaf5Ui6zKDCCPu68zwia0+NgV6uYQng+oySy7GEEMCB+MYbDCDOqHH3Mx4DgsxD6u49a64KQ3WLiYotCp+SmJ3JIPurS2TwEFv9sC+gXrFzOi9C2HTYENdhFhDi9WyVhDzX576YmDXG+C5HDuWl/yxyd5PuDbqmDW3BG+lg3z2UErytNzGPhLBuBhvUzAw5U3dDq+0PfFqxjh73RjZv/sSr6SILQrHn+sO8yEcLcIwhTdHPNHqaXzuDrJbN+sW0YXbTIQrrQsG66/9HDuFxDU7gUgnQkfYxpMQ/aK1fZDLBTkJaNgpvdcBaWpfTGNutLTUpaT7N73GDLtNTliQQ3eb6i5d2k2Gg3YbtoRF2BTbPrDcf+ETjX/1gbE0kcb4dsOMW/hAyZBg6vV02b2gMkg+pOTK+hjBA0uzonCDRIBxovUlhhklzFzZJW1z06LgbDqfhRQwziFkp02MmpAbQ69gGCyFC4LCtdoGxAjJy5nHu1fQEy9sU3e6TZPrblGXTk3ZhFd2xh7FdXmzkz0JaVpzMdk7OfHNSpPkuQ0r1Ytj0EyWmvnelHu2ewOiFNe9/r6Ty9TQWl7awRIZqK0Z3W3H/a1OmtwxgxY280t6WmUtNLpt5syY9rBnMHb6QcLVY5gq1wQ87lMtHjmY5DJ9esP60/NaEP13i+4XtXjJiDo3xIGLP9fFhp/zbZRsay2TEDeIN+u6PzbX8LlkMICMZd1dS++G+7CZIcQQx0GGAL1Mi6VHXFkemGrQcIFJ29Cy+XR1Wdfm5+2VNYwgsy3abEDWfpggkMR96NBCfxGfjQlExsv32A7quztp8Gq5tIedlSXUIf4gFC2EWncdY6YR8BxuTY41NgghYeHETmo96zts4qtd0DaVUXVXRsVMNrpb9rtqlmrbDTQWgrp2Rbruydz7ac/tERJhRUOQUF05CcwmeKtZkoRIfUH/a/8DPf6aOjdEZqsh0APpPCC7o6WZbdm2lZA2qHoupcLu+hh9VZVn9cxThZ+8tsrmU8dad9gbB0Uc4ozdnh+es/FcFlrPwFMahfMcu2diTZsruMX2/362Sdnau7RnZrAT0E2Hf7dV93HcPaDbG+o/k3uRbZOsiL6o1DdjDk8Qyw4ZMaCiu6BkwvqToUgxqjpTG1X5aPDQuR2t7mzNaaAfNEgGJMTKxWoT3RyGFaDsGHazxzONln4J2aiZbu1/9GAgLDKpgi/SbRYhKCS0mdntdl/kXzVYvYIQN4N2QVjOufp7XTs9ZyED+SOgi/S4epewLb16Br8xjmlP/bSLvcexwmGYx1thG7F/VeYWY3T10bRW8Jp8IYLCGOtOCzF7oUP1MC2XE9KDZqTwyFOY9R1V5u9pQ0o9n8u3mNpNqc6OWasw1uQO1MP5FqdrtPx2lGHPFeqxU2tH6KaMBJBSvHCRhjB438hZ1LMCZ+GdjAxLsZLwwfpGYtpImlSfA11iI7V/HZR08DcyUltYQHsq7W6fawg8c/eBOTDQuhd4J85aHKs436tdta5Lsb7wRx6N28SnmcvGA49jDfw+FZnkMmz2FcHK5fq0gKqwHEfsXEWkGPDe/kOA1mw4SOM12O7yfXBZrd80hMHibDGtaozLQfFtRPz0brz3hvg+IHtZVIUfzTMkbtP8jRBxOjWR0LOiwC/6rhMdHa4Cw33nsmixjc4TbdCquw5/CbflFnRMzolj1dI6M2fPjTrtY08o7usMzf+iqQ1aFi0OwWubEWdDVBst9VKnihg2L7b9XdLMeuxpWMrrs803qEn106Cu8n9bk7PzHWyAZ/dcLsG3Jtck2v4QNN+YG+1/AG7BjFRFoyA3/5ZcXNM5eotfWTxqarRZKojDd4iGfvA6W9mEYIr5p7ICFtaaa/eTTm6sKCAaSZRQVBzGbNs2qRMKvr7TL0KfmP6tNbYV4vUdMauKD2q2L59Yizjmm1c+ZSQcLfBuGwrl3pgLQPab4J0zg6OhtdiushsKQnZT7NGchWMDQhBn+m3qo7j10kdGK6Q5Xvhj7SFXbFjN7eWuwdNHxnoXQAO5BisYIOCzTeawfY4xQZYGacmxW18bC8pnTozrd5TblsvO/cPIg5gkb0kA5mrkJc6KeXcuZm8U3r0bdksKC6AB3ErtgOo1IFZKQCuT2fITY7mqcs0wO7wQtMwmnuvX7Lj101B36w+9BfmvvzWr+mocLEW7AmtKYWOXbAc+uLIxG/pLY8mXBmRTVApt5hyN+acBdVW2fETBdbly21X3ao81Gw2AonC0Rq7PStSHdT0SVmvewtY9k+wJAI7A1Cbuaf4rQJnlHozOG7nwtNFhpfDIdBoppFHGGbL95hussZKYnkS3WSN47wcICm0AdCtFnuVxr6EfUklLGtG3F5njlr3i07K3MFXuTePZ9mjSXXEa4M9cGJOHy/BtIdjsPQ0Y+msfg2FWPdv/krLRXlaiN0GJOtgA1+9rHlFCB57Ydb4mXk9NoVoix0IGE28ttneeSdMzpsn0yP4yDH1VQWJf7NLuuOByJQZwqCZh6/5dIEzoWzx3aYCuNnq+KTfaXYR1j1j2E2HCxUm/CrRPYbxrWT2G+pNU9huREON+n70PEOY0c0knWUaXHGVk/ALsWa/ADfvW0+Qt6evdzUoDo/ZcGjmslDL3Iaq7TRMEA78PRu1Bbealv3W1TlqJGNLg+XeTd2rghaycPpgBsUveUqjN/Zta1zTIoQX1dPmMX/A4+pIUK4FrtjCjDGY8dXxRhW3WJTa5TDH9WuFnTW9uKI0WsY8VcoKhnJvMYLr2owBc6dgtl+GtIQsHTLP/TuAb3qMkbu5swppVvlfWhJbvPdrNaGkwgbdpRB22AYyosEruvZg3kYR8wwPGEma1Tw676PNegRv/yL7bG7MZHaUSg1y7hNJxDGaZc08K6po9FafivjyoDoygDPxhSR7GeBh4PRdUZlYN3XyaizT5enitzvGGKK1lm+V3tedVoiFwuIYpVCaS6nRPFFOiLwwMibuZNzLaXRDBRbnZ7SrWa6yNoE2yBwhAOhQIzeHaZBNTsecmrVlJthAwYNqhstv9Gq+LWa1pCxzWjpzutYB6WHHd4DsXSXYcaW5RK0GC+dJk4Tfn3TqFtWCPx26NtWmNm5I3RmY488Z+hRYjUKQefsIfMbX7Ceze5urLn7lhV3vFqxyD/u6zejLNZg9dwz7rRQ9nWBu09LiYTqIMZmbMJ1Mf2JqdaIrkwy3v4amHtyPGdFLbzuq4YOWB72i0cg2bagipLhQ3V6l7lcdJ46i4w+tkp10KgtolB8Iy6YDPN1WuYv0YGZFK8iOmdzzUMIRbbU+zrkbM1T64Z/O6lgBUNtTohHD1ZGtbvbnmtpUK/jqj5NR+aghXRgZrc4OPCar60HVaJaPNa5p3/x6qGJxM7g6ui9WEJoXfxym70W94K61FdAd5q0cM3E7zxsYB6Rbbc7hm6cIBcYK3dLVmmfDXSxrWl3fYbmF1VfeS+tT0ulGk3Q2YbX0NuWzuZYqGgQG18Tbt11ZEhRz3LXVk3QyBW5P5cxM+yMwkFZrQF0XHrRG0kNa+qnM5OnZ/2lTo7gNS5uFsrXJ2vzrVVGY4P9pC6+PDXLxiXo1EbpcmN2NWbNDeejlEoyu3Y5al4aOvafWtMkBYMHdasi1BTB5+rEqRvtlxKCEAxM9dWxadDGIVBcNXIABONKha/OTIzQevXThK6Kv11UhUPHPmzvWPRjN6Ea0kJa7ddf+utAbSXIFS+08I6TUzUgOsGc0vEYyRNgr+eoXAlNpcw1aNpVwNaR+IXtdAum4a2kfoNX0DZOWGjQknlho3f6YyvMtNaLHdXZYfKG16CbGJ0w2mVA7Vrhs0kxWGH449Fu208A5ZZs5gPzWFXHsJBa0K9ARBjLMJLA6xyDLk66EtQonrhwynW6ob18K2p4vfhgZvzXuiYqy1IbOXVzZnWs1LwkA50n157mISPQXfkdPReOYYJcJtGiqnYGvkgTy7iaqwC2TemoTbTVqocxZi7EYNJweYbzAFprnpyTZbabckoGfeUO6OqAbXoSa1ix0FGRIw1A+m140HqERXCKmBf75PonmPHR3u6Zs1wgOGSTTpWgd4zwrrN5tZ86DV9FnwfJE15MYGXDr9h3ovCkYalbTZKFZH0JfWMaTaKpk5qVXnZZz9NE2xmfT0YVZMLSFqg4c/ku/sTAYQUwwwbm7XX9eqe9jnFq4dXLwK0acN1NLBHKtZvhttMP7h5DxdQX6WL7eAtmDII+y7tIDhBufqLTuDpUpxjNLI4Nzfmu29bA5oxLynDoF29mb+xUwmw2O/LQTwYTN01tBCcvdhfth3XlPZUV8PUYp3nHNsOYb3bYFQ4NQFBFU3ceofJ7yIKZ7ldPUWqL3bset7YOkp7+NCx46ALjHm+sE02lGHSX0msWpiw7uQUrsKvQZ1SC8+2/vvfDClM3wuPKwUt9KeJ7zL+zicvTeuGTh8g60i5DU9AXVr0zQED8cbf6n3/f9WlIYwu1KMZ07n6p0dMAJo9nx6Hq8eNfrB39TDTerN7XGH5oT0s+hpIPArpioaz4g6wRta0BnCg4dWvu2yVkGDCDAhavttbSYTIa26tYcnN2I29s9KxfN27QG9akvNpMuJNwzXZrUew9w5skcvr++DDVUVoffWSBb2PsqwWNc7W3ukx7RH07xesg/eTjvQj3iDozRsHcNDMda+ADAsHryc1/xaC3dyye/6TMvFu84yAT4Z7CCA+lW3dy4Qvr2A0ZBONoPWKItXD+gl/QjlYlKNjdOCtfTHJmzE0zw777slg2I6goXHrMMx83pkD9HJ6K4DSPxliu0uC6bZN92eVDQjD/tV4yXLqvzdCphwbQka/h/XWlA6qOdn6Gp/DSpbl3kxJw5UUCSDuiZPAb+jOAKn9p3dMSNGfFw4cYTyrS674370x46AetdCnpv/QvZpi+cypGUdDBHBn1J04d4u78OBOzqAt+Wm3e2gIZXhcoI+7Bg9MHuIHQ1uY8QsFNhj6rE62kHGw8kYb5MXF+bVQ8FIdO/W/14i8MvheIBQ/pRvOA2VOEi/Mp3+443UpRg6m39FZkrMFwG23DDEod0+2mn4GRcQVmNXNdnlo0n0klrCSMEH6N57KWLtvI2y54sPsiw6sEw3CodoO08PruFc19+f0DAu3jRs3wYETY8tmhjlPNLDloyy+/pKo8SFajF7UDxqlzTV7rYr06mB83Qj9wVvcKvdoUVNiEmqcnauAQkvUSbpPO02zuf1ZVu2s30yh+bU2sZ+OHZ9M23g2zzXS4c51JwWnHdWrhinly9O6yu8gZOKYA6YTr+B0765wd0L6mseDF3bhem3GXY9YDLSuOb3adoQ5K1h8GCGM3LeAwXHsCs0E1bMgB90r2GkDra+eth20lI5YL8FvuV09CY8uwEySAE0c1Dr6WQ9QjIaZANwSE0c1WOGB99WM+pjEwnzrknDUc6JoLcI9s5fQ2Pbr2MgdW0J3UC+nBE3avrb1NCjepEjfYQTtYxesGTJ1xSG/O/LLJlPAwwd4tH81rhkvNWWPsNM1rOZqZMsCWB1LHi4WwAy7rqaPD+GmiXLQ7ekllC/MFyp1tQulDnOh7qcKXZSHpa9kH6p9jdexpJMNoUYut0gSm+X3Ryei2/wB1b61s0zGWKrIxPkjUwLOFEN8g9BzPjXArjckN6JIMcMrxakYDDpxozvxY47xd9+N6sn7OVFiaJz+AYbi0Ig62rLasQbwwLGpZhL8e+BKEgiX7qa3XZkaVx8TO+0EgpS/tMSU8K4wic/8uJcXa/YbCewf8byp8DRwR9Q5oIbNWWmXqrgNSqGZz5It+hpqzdwbg3NJNG0rbI5ttFD2O8EWls+Racrjdk+uz8wXFpS3N9DejqrfeFjDPzbA7UcDCl6k5w9SOl3kxnOGFSdmxu85wxA4Z57WP7osFtD8ua5wqWuhbB03OGX7DjeBecPYCvjRH1rJ4BJ8yqhQqQkqoVz0NHL40C0uGhKGwq84aLCw9qGYxtHBBaYnMS7uem3xQ4vnDeS+1HAjHCow20/OEXOtvzhet9eWNn+cJ35ohe1ALhOpQoweoQLVAuEImoVhhaxdIkZgb21M5pJTdfvuqMpXe3smcP+MYoKlbhWp1jAKfvEA2Yu7X2k4qG4dLeRXsoLU5zpbtcurhbwAodBhABx1SFMC0ApuurdFIOhvsw3jpr4caTma0DWuxr8FzrRbyKtraW6lDS55uwHRnnYdp9Ls+N73PVnkPs2hPbChsLVWgbtWh/sVAKmabxF9D52uMTbILqbQwQU54ctmB2PgTe4Bu0F1dFoJXNMF6lMXQuwZog3LX7PJMKku80DfXjoLT1algKZMleOC7jCuVhjrSbT5w/MmTaJSjVRfvmB3DTpVjCH+Qs3A3Bjo2i326H5oNh3GoMwmD/onr1kqE3K15KhN+jdWeoqcJTU7P3Do3GUn/RxeqUo0qtaISsNTarTwm3loGYzfrpQ+MSqhRpw2q+iacIjLpmnDmi6FpwkL2uDc1edZG3DfyGoL7RqPiinUdOGdm06ZOLpw9kjizzRln7y21PThUf/MbxtAAxsyEhe10N6RJDdmnpBsMkK7dlNYom31JdhxnHnSZjoCGNPmWptA70NnJAzTOGBd9gTyKWdJFOrZswpGZ8N1u8BYwfbiNvqPw0bo6/8UEhxuffG4cdh0TDrh39d56aVPEu7so8LeAGA3NFw+7o3OMtgcm24rKJ+tQmG2GDFkPhFI3floSE8C7eBbzfEZt93RQOGm71R8mWOzJsbrsSz1Xr35tkmeKEbVLRsIcyPnooZ0PE6UOrLIjibsNkDbiBtR/WurbCiAcUbXf84Nj1i06ecbbg2jlnzgbr1dtRpGcPg6S+jNw0187pMM856hHLD/uq+w1On6it07+6JEDVr+tTywN2boDspjGNuTYmoXcnQ1touK1ME6E2nAAhlAcziK6D51g2mJAzUFQQ9X3p+bO+t2dht/LLDjtLwM59qvFCedhPTDbiDnXC38qbJP0tVWOjTZqJlrawX5ZB8DKyGOGzQwgYGvXmJ6f2tK/B6sXWOzjV7xEAGoeBMe+patSFtqBK3cAGQJ1ZCGhVLMUVnyP0cp4XaCoi6+jw6p2op4I1tbbvCqkWr9fSl+vH01gV6B3sK0+pytdsHjLbTbvpwstQMBDvQ/IdhdoJWQHRVCEt2LnfakPrHwNeWGN7NSZOpmdX32nO8z8Tbxu8scOSSvTw+mAMxwDYrVtTRGietJYRsMkzPyZjfMwrWkFbB0/u9RwBvoAqsmkOHr/HOduq3XtxbuiN05uWTA3fVk1dwmNa53Dz4WKc9XquhGrQorZh6NvjmkFTG3LuVy2px4eG0s6u2DvcLWjxd1X3a2z8eNOM2A6frpJuyzkbottwyGFsvKF1mEAMMRbOBDXYBQ8dZonsjgxir7jANdKhJIdUuNrJ/SJx6E7DgI6wLTbupvKM0En7u0Ca3+pCHPz4YpzR12Fljdx7+UUtJLutAcOngZ37MSFOIjghhOml3WU1qkpNTl2ZlrC7lrkkK82FXpCyYOyxwnWgUNO1k/75bl8Fa8ELaG+mMfRcbbcF91qe+TApR4WERCz65wL9+XGr/bdPZn3sKnIbgm0spG2VjYh9gPbXKXY5TtAV2YxdVRRkz+0OcHi3tEzB6sHFG2jLA3N7r1Q9pgmEItKD4WusLE7r7WtexOEx5X5eg/HzZn4ZDcYXOz4dG6QY7sPleFhyD/N6e0giqtkisB607rG1Mn2JprIwBpM6xDnoHe84QBT+dDJDoM+HLXpRv0Tsu81XA6wXY7SK7qoZDbbBdAw/b7ldAMWVrJWDznW9BzQdWkzeynV6VVsnhavx9VDejlYLglpJSMAphyrzcoHhKV3WY4fFNpL61VrCm4T3PnWY7QlDTy6SdrMehim8KniaaWCo9hUb7Na+tgQ3OIaQd0xruXgXZ+/gshwOjpjOs4eGQB3TjJo2SyAKE0kDs3SmX/L48vB8ME25JzCO1G+UjV3NqpfX7wa6W0vFatDHFtRhH00P+bBtNHUm2e9S3ZtYdxyaGhstVL6KBvJSrv+zVkN5+K1VNcfsrUZeIFMy2nqGZN9tGMq/FYRsCeSx3rJG93fe4uTfuxn9cPV5oHwM52h2ogmU9oMpxjGESaca3+HfTVDwKaX023oyXMxImVRzWxumvbQQsHVv8Ova27wu5gbaMJTeEd2dB7WH6XL4Rn0Dx3cYM/DUVeD97bC3m+73h67/JCqquY0PMwOt/zW5+HHbNQyO3Z7eV4aIq0wK7YBNShAJAnYmbjhF1ISa+hDF6GkPtF0NtL8MBY7i6cmTaiOdF6wYr8KcbrLJ9BL2kFDZd2uRc3YyF1O1sB6QkHOEAUs52rIap71FNIwtjAjxmfyyN+H+FcXphmtwlSARBUPrG4Juc1xaw4HW34QHLSfP7YNNRhGuMnaw5o2nw9KGz81626xEjNe2gfQxsmEEq0IpOKjTesHtz7Uq1q6N0U16k6DLburBMO+xYMFdHU67rDGBFpF81me5kpCXwhcoLCnbopyR6C4ij00I6YF9HI9gn1yGBaOOczRuYJQsxWlZg1CJ47eM4++bdA9QJvNnzuY6YHDcgemRw6W5vALT34H5N0sqSaRrWOet5o3JLZHG8TwB8utChRkX8K4joxZ0t7h/owkk9sYQzOE6BOtpjWmRjXq+suIwN2b+W0u7mE6TIA5v7i12no+y1V0G5XNJMXqtM33/rEhtWOGaT3GKjsPX3LgEvVDXx6V3QiTOiIMJ0H4dFdO9WnytWjVlYCOh57ZGNy76tX9H0YVRzxtEZnN8FXaIowxSHusoJDWFQrdVuG4Y9DMYcjg05UZvqNSbBNC9fu9p2bWzmb/BCPsWCpXeg4QT72qtq4C0GfOLSbZ9ppvS0CSHblN49hCeHc44XyRyCEGfvk0wGRcnXtHrhpxcS6mgML7em3wmI7jGLXWH7dktsKWiCjZF5s4cLwBG+o9JbhYlHE3/ghSzwH5GBCspucy/XydnsPVmjaCld/B+MIQzQ/vmPRnoEuhtzP6Sn3C5RtW8LU16uIDI1Ktv9AQOtBLWRH5EL4DPWQQjMRBpUbS27YyrM4QGitDFYPnZPSzgbirMHE+7A/AhXnXcO62bmcMlieHynXb+kX3Xm+YJkdBtmYozHnZna/V8hZZrNZbm3vte/9iqU3pJ6oeAu8W0LDBk4ZMczalpd8CzS+6j1SSFiCwL12YHfDi5hIA9aYAe1ozKNqRbdmGuGpdIGBjWLRIHbiSMFUWmsjEMumJHVijbsSdSo2ZVzFo4RWozaOEjg8OjhUvtdXpvALQox5Lz9JbaYILNX/twKEGOGbT1hjh4LzY7hpa/zw0bzsYHSWUxw232u9Sx4EZXpDLzeyxwnUjjmqxeJY/y0j7e6+/NZVlIi0Nx54+Iz42p/LfS2mDnU4YaPxtQPGkCXKnIYdcI+Fb2gsDcGFL3V4LL7bXEfoVSMwKmNXjUV1k/w1QKZ4gCD9huKbGzDopyVDg5G088hBsOdfovgJ3WNh7w4Cz/OxrnHEZurb3tOa451Zo2kJXFygTt8LnTbGRtzCegnHV2OoxXxO3otid976MqTdvYWucIt1bd7CZCG1PDSI4VK7Spz4nsMAwRLbnIjegzQ0FY6rv1R9GSOdZ9brEAJXFJ4r8A+aEhw6onniHRCSbiQczJmEz9Pduuwv1NvruSNQeO2YtcmNleW2ZwbAN9vzaUffbKPjew1OSZjwsItmqIDMXenln1DhY2ABccWQT/BVtpaLT24Yp+8Gvm6oXJfXp3Ez0AYi8sNDYOLTePZgSi3iCHfgMtPhfDHJanm0Qz/XYzOMgceW5DeWRiT5xfPo721GCe+lTCeej3/00i51HD3R6K4bFqulM3XRbbie1LCuwQ9M7xsOa0uHp28DGNaWMzIxZgKc0Ig7e/sDtep3nVQznmsOnvpeX9NR6HxraSYdHPy3LrzfM0Rhn2TC3JoWy2/C4c3sFkB6YnOSRhCRzFY54YN2tayuA7Axvebwp3p3kDMDmhedIDesQg3G+bBD1zRhJgDLeYc/7wyuaG10i5G1+A7NToW32BEaO4MUOGXCtRGWgveyvFrbJs3Qy7DjTPKNpsKv2GVTC3UOAfNf6Dj1sLyeG3LdPRyhRbVfVlFI3oOYte1Od6T83ZzbgFHxIB5Sqtfge+/jbL4eCp1sAbMw9bHacrjCTHhGmyNWZP8ttVWrdbcGLoTzxJx7cW8QL6KrXCbfgd8PLmEjqCfgR7ytFdOktg1Nt4U+1sARPu2fQury53PTpzOMIlW4kAsDXqFFxUqGgAihxamCtFuzppK001ZZ2Dyg+5Lw54WmGJzpy6KAc2pa8hw/O+ujHSjH5xCsWIRYBVAHxjkAHvCYifMVwuaVTAV3v/Azzxa07Mqwuq3tC0rnM2x5+5uq17bOVQTHYxtjzQ1W5/TNy/u2YDb/Dtb0089osuN126r5tPQxoPPWKTqxYNPBBvqdUzjhFsxp64ZQisiBmMdNPBpbsyvOG1z1Y06MYjfJWp5bWYdrb511rhXOTBc4VEcLbNr1HCqx6T6wiLxiyCI78HjpC88Wn57IfHmLXSFlZQgNPd6u8rKnelPb0JHq20dX4hXj/a3mongwyS7ObCcsmJfjP89mtP1eCyHKtGUGERTNuem70ygRY6HNjHGLkjKidjaY1CgST20QCOi8w9TbkEY3YH4PoMTXWkyfdUtqKrz/6ZUq9GEGk0rGiutgYwj4YWKdQ7GHxtcLtq/RyUwa7qNRMGmL9AhIT1w0+zrL4M8qupVQhYXhe+2EvrGXC4O6Z9DELOtN41rKEk1NnselltBATmN20wya9nM1pG2GLenlptnRTobfws8Q6r7Db+NskbWFJ7MJMnO6D2TXmHoRXzDQaKj1c42QbHblgapNw+4bAgj3dGIA9aM2nYcMYyYIcCuImDEnI2JuID2zNKmrdOLh9R9HNLurVyk06p1NuGGjhHYX1gy/V2CGnhCI8WoFdEdIU7bWIs4I2NDzSkFzfIpuI12UQYMU9752XWwhuBs2VwoFp62NuA0EOQhoHoNS3NC79vsKQhkotG5hhNbXRIZnq1DOGwBrJFth8EKsXzLQiXEe3j/NClho+1rxakIcD5hTSje8ETQvSYwG9m1V6G+lTRUJjrWVHSZIcNJ0GfWAnGWn0oNu7au6cjo6vlbD42rJo2dg6scM8sGCK7BLOqBg2NE7bTslH2IUtWovqdhxh4bkhd0jOcCXTFPmWN3AE7lp84GB7Yna3LnRULKyiej1KDGuVtV6IRfgw+W72j1Xrazu3BZOgAxTvfpECtpQG7rtGK2r1fXcA7JoMU5OSHjdZXke3QadZKk8tB6aULR5Zl9XRIoHv5RX5eXVrAyobbPVEk5rc89aG5ADZL3qkYz3MZFO0T42PJTH2XvrA0miEj1NAd+IitHyEbQZ2mTJ6XMF9GznPAOWkk6wdDY2t195+9k3fI4dq0KwD7dx1ViBIcvCuvgE/Wo1ZUWNdGQGcrXB3qrEzRfpKgCJOaSv7HDtkFCyzIYqxtw7WS53UrOjs025t56ut8QO31zfYFlpe0N77TANsgWqG7M1Wh6q0zO675sBzun07NO9mQV0147hOs2FaaLDBiESocJ9wYM0clrW5WDHoemf8N1OEJp1S02+jdPyYZvqyh3pQY8AHGTp7Hb2kt2y6uEE31Lfh+7nUhEZ4C2GAaP61/Em63NIOFnTvQAAZw9DvyetzbFAoRsozEzKSuM1727z9URAZhrXzdpeq81xO3jg3luv0nTd4R66s3b6DZDY3pgIQ0ECGcO0dX6SEQq9WjLsOHo7gTCBTOLozLuepZI027p3P1Nj6Vs+b4xqI51OXrGucDXWPMdLkQRhX2sjpiZDrHOoEtTVhres0yFo4CYMdueurIPLmT8wfE6xyNaY6yZvRsduvw3xZ7pyDy7GVRzEOvnCWwHsbfjDZnuzRTI6eug3SYBERyMZwWNJdOCphkCMKaFhZMree1NdcsYXkV1dcZVjDz029czJElqIZz8HqLXNZxmybvD/jhAEMUcaBANIy642zMFbmfb22LaiNtEuGeYzT4hjKI32/4TF8Yqubc3PHxO6M0SQaZjckkR7+TNX/vZrwvr7BW19BayQgTyYdeMJOrosT0MxhlCIoBxhMTyGUa1ADo+GH3zPhFoKawdrKKCM9OasUzWEaju8wVz6JIiV1aROTNvmiSg3KUGWzcj+MF8dbAFhuQyOLpv487teDBZIKRkGx0cjqOsDRLaLUbCi2qZez8sHORd92OERAyBhgp90k5YGK9iG2hE9AuRhv311sZDpQU36AxDY1don92rf7byNFnWkqgkJJpgUJEEbWGp5YRqdnQIehTswnnpNRCav+04tDYFhno35R6QWCzcWyldI6/qcwJ4iGN80pIhKStLZERJ42tX7DzddM6JA7NYWp471UUY2Gx0z+t1TIyblIK3LWZVU8QBGEetaCwRlt1bpJwVCK2m9xAn83r67SDQ69rsDM66+bUGJuT6yuGH8CBQWGbM/NjusMkxeCbxKNOcuCbdJcOoOl15Jh948hzeuh9VLJp2uyi5q+MMRBWZQrLvXv7j21V4u59h6+V9XCKRtxvTusFDg8/nBzYA58Ml8J0RK52z0DauLcDVj1nGozz9p1N1J26zR9B2Osn0wRwF/2NQzWG6pC1rvobwfz70lDajUxlPeL2gi2y5YG5i19BaxYjWIpoh0T5brR792S6QuXKDtsLlFjK58hMNlGWqXE8AX1wMi3qcLNZu6oxzAWxjYbHnLoGesgku5atUjzv0t02eYq8NKPGK5XB7hi7QOwT4fuDH6GvH7FHQRs835RGZudX26S4DJV2i7FwdIEfgtO+m2OjKlQYCIKYi7+mdN9+TwpOcrjq+zD95fttaKOVxnWfOuGALz/anB1E4GyqIpGhvUvW6PrsOMXaW7PtIyVmtIOEFYeRtSmh86LV+XoVqyEBH4YMXg2yrg+BekCE2O2ZkoiWXBUS7SlEacUP6BEWT1kb2KHtRytliA3B55vi9R2mtI/AQ1ubt3q9ZZCtSJ+U+rFnhqXHSaM7kBD6emD9jewLonLVdK4UuMNnGXP3MAzlYuzr8Yw2MP9hDqzBfbkpUzJbZ3kMEEm3koA8bmHG3Zz7h48L0+QvTdoZggX2Nj4FFttIc357MoIeprTZKZM61G4G5ojQQctzp2PLZLytiKWZaIwFwYzzTU7rWoifA2xFtTnVtSC13n4Bp0vBuGktWIekZZ2MXqpc1aKOsnDdBDqxqQpqaiytxXGcbgp9Qev4wdVY/pNOymzEHYSXoGiKgC4LhNDehAyTBzoRGiMLwbq/0+N24OfJ22seSxH5YHkDkFaOarb9+vzwwt86MRNVSeI4tboIRFb2qNbCYtMDWfLAl6bj6/wmi7PmczAezPwm4AXNT29TbnBM4o2KewhQhhJc02mEIdMK1ug+LO9EdeiJSAGUi1smeYxdP3ftifRNMHtHcP5+uQfBkjgMoK/RHC1CohWqzDS9AQd3UleZJ9DMSBSo7Tb2uiiP38aYojOg6FJA8slriiPgab4oiM8+/y3AdEXZ0NJRGCX9DDWY6I0PjFSiO7p65W9p0RO6DRz4bUI0B9r5F9XGme2pZDEdtAL+KaZojZMRbHnI8rmccNuqYSXN0b6h89UFwfIvQDloloifwhPNXQzEVtoKcJY9RCPkeyqDOKOg3jxPhZFMCINB6m/Xc7lq+0FiaG61Tm+pyXL7Dsz+BN4FC9MbR220LF8wX7byiL5JHAgVOEHNJ9phlA06XpXAt3URb+zLDpnkEI1E7pq0sEhs1HPg1s4705l5hksseMUsHT8XgQkOjzpS2C3x2Sk9KcJmEIPFVaa1sNCB9i3dfNl3jw1nZ9o9le+0NTdjEUmiO34bATM+MBJDvB7zpMkNw7wmwDd+hCcXGpdvQQxm0Y1pDSyuJ7tUe1mVA3ET4C4NcSBG+UI3BsDrzERYFCN56mlz/VuJkmF0TH6Im1LDBnHNXE/t9kN53biUMXB6kBzDZBqmQ2Ooo3ccq9hwr/O87omiPqyFFqtXUWCiTKaLs8bV6rrJgtYARnXNVHxja3VfBaH/MCGu90rJXBjP/WexHHc1m2m52PaJPiwfwsjZD6cm0RhCArELith0kTbsus5Nm859Q91rzYxNM4T5Np5h92USuIddqQvJ6pM8746NqPIHpui4xFnpvEtQgmmWIuLBnlXyHyFzct2g2jwjafWhjLW00bc4NZZBdG9PE2hXAypJIEn0r/m5J9R81g/vxMC7XQDdUWn19fxlnv0LIv7hy0gD2VmvHhNmIrQZO5X6N9WGxATXFlpH3WCw7uxNOIG6CbOKAVIP1SSYzjMF0uwkTEy+pmRxhdZ+/09kBpbrEvjq5UPNA67iNecm/+dIUJg47xlOajHMUQmArpQw+kjT1Og4fHD8uOl6zS8xhrH3bcEiwsLSGEjDVjPvU7VmoYBxsRTGJ4nHpppAP3W0FzB0K6+IlvJm9g+3Uml6DQtdL2pcPKY2sgPxItqna0N3BlOvLdwXVsLhUbjN9m+B0aDGcZrxby6dbN18h/BKrdDzukBi3ria2kNJR24JjZWOgV3Qo5bWNMRcmI3XEOHt842lQbBkN2tacLLY6VhKYIOIEmu11mu1TfNj1vhg1XQb6IsoT6fcddmdglrVg3aknd99OULLbzjmxoIQn6Mal1Z62fNcHTkUCxgIF7FMslWa0DW93g5gImny1T9cPm6RQ1XPlma1qQYu5ccBG7s9QR3iTzyFlIwHMnaW8/A5Lga9LWslqElsLLmyWzLDWr03T4eYp2cXHhHQnToWmcE3866vcNcTBHLXCcNhX7QlKbdQNp7G+qzWrjpZQ3BdYMwDMp63lDWhOoD7Twsb76s9n+PGQ5xoVFPwFlYrcNhse5uI9REe5KWFQ40VCiW6ED3ckATcXz9NLig9mhqmkgmg0oedw7c6gf07Dhz3deBejUYN2Pq26NlsRWwtW52rIw3+nqgQdCoh9EXPlJmwB2hfoD2MP5+2XtDkEQmIJ6qYwncbBeKcbFOxivpxX3aIfMi5BnS7YC1uoHwS94C4MMqu8B7b/NqY7RGT4DSdUoecaXL+rpcA3u7qCy1sSe2SfX14ZHbS2xFLcCUUmbG9DO/tAE0KtpDxsjQmCqfKsAexxz+rJzssX6OpyQmruvwSNvUFgG9O86Za3UJYSAKy8+EbWcKXe98pZENt9Lz89ZhlCAxmmQ/cMerNb0ymE4b0W72n69YYnktHQ2LZRK1s7eVuDKFrkqp3h6HNj8KXGXIwsi5oY2zhgFKAtqNWLjZL1xpZ3VyJHBj0yQm33jXhETXRFBYYCCNzjBn+jcmkqtU2EtpxuFCl+fAPVkIfkW1Ii61JMudaT2pDLBj/4Mb5qYFDWjG/yLbEYdM4MDVhpIMQh6cP/YN9l2v2y26zDdzegIpLJhoWAk2KfZv80P+hprguXEUUA2Yub7/s6h2kEzF6YaMvzVR61EjEJh9onDIbkbQK85I7m0mX+jrzGt1hSVzn4aK0Mzc2D6jXPRi98wMlq3DC98emUw2i4Wa9wHG4A3MeKhjp/dGXgivTi/aTEcxiukGgmeUqaXyIoGY4iaABGPAkFeqB0zLFrv21tkGkgjZmZtzcNiXJBMskxG/GXCyusKi2KJGHq9kZ2IGLMdbqZVwWCG7fMfdaBA3AdRrNwMZx6jgiCmG2JfLsLhp3COSau8CeZmE0+VOLgTN01R6sf16JSMqjXlDicSN5EF6XM66e/InLqXlLw2uJFB6C72hsxItlboacOl6DDB0Qihg1TSZBs/L3vb4mK8fAhp2USonqKXTWJF8y8yHBkTZNDxrC80Cpbl3N+A2RdzJgYe0Axr+HxXDSWGx9jfmRgOML1X50c1Y0uUe9EojsoWxnzaXwcSQuKydG0xiHkzJ04kIiptu/sbKAuvGRygwaFIMf6GtYvZ6gRS30nc4A70hEGfPjDNzoTD3/4EG3D7S+UVHawLmq32jfZILCrlgLPAoSjv4I3hObXuN826OotfIYUIrTsi67hd/ceMwtfRhjtLQr8F8U8h8c5QIzWjm6/zBFZZEDArhgp/S0kZ6/QPA46qcrvmBgvKuvn4CxLLZUZsEHepRdEjeuaSIrrq1n9lRGgOXN0QeRPQLeamW1/U69fNfefvKDXFT6f81tUm67taqEeRD1EK5tqdd/6FtjRZWn8Bxof7cfcZj2ZCPKA2sEUNe8YFDDnOeiZI40kcMULwlpK58bS6iHDd5uryyzKCjjtMsL6xVQ2Jdu+FwBf6qJ8iIuE9rOOlqRFySMHHoMXFG30vRbfgDUMro6RB1yBh8SdFsug7HVdQa2x1VmGgozb+OqUUIv+Eo8t8kyoS9K0bq5426YYV0M4lmbLg9oFh2xw83aEe06COGPvPlWrywxTdbbD1rvGBwnScumf52Rp76L87MKFipFiLgGowIs4wL1KCG8hQrIkR0A0iXqDd1FCWMZImPgUriM0SYwbcvdWWHNWCLuD42vzrmFkmWmH1DZgOkoM1BvpXxMHV2ihtbipiYQzY36AhCcMhwIQ1O9tJk2WyH6YcOlabpIvngTZkLjtpHQCfNBKatPFejawMLFZ750M26qLTX6Vr0z0ol4o/CKvmvXQ2/KBFvXv4YWRc9ehCrtaY4WfQ3/Nbry14FGPVQyKfMGQ3WEb6YNj7apujBmjiMLSOmYhUtpQ2mYnK5jp8ELpmaAH8OamvwQm0xlDXwaS7ciCJieZ/zTyNvWkN0q5BKN5W+dpItETg6SJ6D7dkt0N6TcIvrVgTPQ9eHVX8YNGoyI3QWudE2mXpxi0LZ6rfNC5oftiNk1odG82Smhu3JKWjxr1Wk7UjNUq+ZE/YjgequWz94yK8pABDpIhfkKGAye7qyINidao7te4VvfMIbXoSoC1w6w0XdSfpNQwpnr+kiTKWWxgluupC20jtq0kj7HO43TFDEd2+zdLaxn0MxGmePa3ZtDi3deZ1zd65m89fc0kRWUMwBF/zCss6tWLS3JqRcJGjp8eM9h2NsdUZWm14xco6ffNGjmW3dHkkYxwMNMZ6AcK2e5pvFF1kTk2E77H8c44GWSdOMkRPm0MIZgisxFa2PLZITtp42GAZ939p+G4HNSLFnQvmUI4V48fPea5PEakVtz1DSHn99mlOzGjKakbBc2IcG0K1P+ac3XevmsSwwXe7xV89B6OotDf5vKDXFsFaJcY5em1Iue0j3h1InpKz0sqR/3dF75qFoLi9qC7cdRm1Eg9vOn+3T7DoandbyOO4HK4+uJQ2Xzr3UiT9gln3Qo/noMPffoGDDv2S71rZvZia0M6/oeUjGpGPTdb6XpMu15Tp8n8rkGQ9vAuNofiLQpHgJs2AOGHfS2brRPxnmaIMDzaeSZjKgQVK31qXqposPzGXbLUoiDLINclbuO5MeWlGDSeOtirz6D4I9MfDuOeg19EVXiKvS4IBNs+WtewsHxkWI26c4kpNx86GUQsXFj6QySM5AQcL1+2cfAcIe1H3LO6oP1aH6W9jR/4dgt17ZYRSNW9Wgn7YkNhWULVc7sq0JGG3dTVQ0jP8O58Fb78nFhjPbciIY94ydpHY20cwRladMyxgslzqloFs0+Ja4vtQvuizm0Ev6pS1j+OQFdeMZuw23m6FEONG8BkxddPhqtA0q5pal0jlaKzHSd+pWrTrK4pNsFtee0DbBXhS4zH/pfR089WRTAu/FruzT/PqR30D+B5CHakvjY0KDu5bK1u7ODDw96vgm+ynxbbN8NlGbZJN8/hILVfYErIi7KSw4/TffuCg1qWFVhclC26Y9DKkaXEJtoFNkDileCKZc9lp303gFqhX9oZ8EsvOMBjfH3pb6Yn8EUkPSTFN1k+s2nL7mG92hO6UIqaFp/80JcaKXsND6kPrc0ejLSNZlrhd9qhAZ0DZOHturymbq4WN5fmQKw0iwUNrX/J6Y19xeBnWwvVQUfizrzqX8N1euCUjVuekNA0k+ExmMP9+njAIuEUZPWMKh0i0cj+JBXevAdXQxkJZVE9GCun7Ncm2mT3VOVp6AdoC64vtbXtho+zYI4nEt7U6GCXSHtm+bWkvp1vsJFOJLId+kcqAIsa5uh8XDOxnPZylvxYxAdZI38h9GtUrLSRvHE2EDbaCcLWWi39FHBmyEP+MaptN8J66aA6xOh4gNEsb73sF+ScXw7sEaxqXg05P90Z5mkng1mkQKm3ZpHVXt79GZBHOs2vtEKY9pTN1tk2cA7fy4YV42ZdoHp9/XWPQzXOhvKiNRY6a80E4Gyg7fvftoI2POaPONTeaXdbfcTjKPWCt7a5RX82Q3jAt3soRz16Z5a0LsGVLrPlWqDY0IHr5Ui1tmuE9Akod+z3tOahAjdlhGAg/CalV7RX84GhdwwezJdQ3OhDIzWN6Qk9Fla9IrF41gIdxm1Zu+tRLa23rdRJu4WxRLa2c02NuT3wwlYcVPQupGG29cHacwtIRhkgIyic6Q4NCF6LBg1XXqLbRK44Ln9nY27V9L6kf4UNHt41HCX1aMbHXYZlvzzkpZMscoGRnqHa/js6nSnPqps9lhaQfbXjflCL1LBYmUxwi+KqzO9gYuA0f37sMiuhugnPLO7sRE18WbsoisOy3tnARkUWnSEZHTHd0GRwz/VN4az5xiXa9BdWe6Zy3SUunhS2bfb07s+fmpVwvrVrMMySbovkdJ46aZjeqtvi11HpHCetG9BCktSMjm+s3By7GVkXGRDAQ43OmrP0p06oYjZmReU3AdmmBc1qOaR1cKHeioHMH1iyc3lb6CAcsLuRDg83VudgIoBhbT0FO6nKIlfzrmywI/pEX1Bn2AOrPYAV/o1Ia4BMi39Od/nNvxiEyPCeFiTgL0BETIgE1lEf2gsYZEdYmRV6Awd4LXCMXwGHTth6OqTIyEJj1zQyZErUiFNaUx9HJkVp4MkrqcL1My6hTI9UuvXgJKZGlsd3Qu3WLCpkQdcMOVpXG0XS6aWfOpkZI03zNbTOCiZB5F5bajg6/WShbAfIkhOhAocsIU53RhIZssijvmVD2PrbjtGzFKGSWD5rhYyHQ1qkWwxjX5bBMTf6a0jLqTtWcKfYbMIjTamVQXVR2sBshNQHzm9DfuoUDYI2Jlp2kfoDp03FGlXGSW4RqM3K66CIjjaODh9BvztBbV8BHNLNbYGQzjC+li4i0AtoVb1IM6/WjH+WgAcPB54cKsXEhFHNMiOtBbWI1qrS8Pj250IxdBpPgxEeEFwDBshxz3XCRne937aZGjCKpafrQ/hgQAU36O7yjDCra6Pgo/3l1cJ8JHxMMDEOY8dXnTg7+3JpIiX8xi6/ALCGBvb8Ko4Ez8CFsEJ9zT5HkzD2bx69VDn6KGyrMbzp5xwitrDcsVm6rMHDs1rJ/Rez5S7DtymsUDcz2i9AxPHpCRNx3SUOXV5Hr3rWzmY/tCZWyxibOK4QTXSXCaR1d2omZazXfsonP3Rd6W2tZ6mFFTV/rhZp3ljZcZ9bFG8Q7QmTil72HPZ84MmNehQDfKrmuLQL5bCsiV2uSC/JUbhuEwxlqFNtXyeIqA/vGtGXV6wYQiMqnGSbdOKwXDX35RYduNtAhwDtIRWpedx7+G1S0oXhVAIsURnGvQkeahstO9hIow1Ansmy2GmHpnNJkWoKgveHj5y1t9YK3dxPGyiInAWrxm1XxZDc0CJavx9SNWmK8xHQGFI8WxGRNA4HTInILUWa6VDbmWACdQoEeDYNM5riC8+LBXJbHtkgkWUntrirdfwOHffQd7v+yMx84fqME5+YbIhQdndV0vEbuFM6jmqRw94Rtkg3BT5RAMmeGxewh0YeOyLMCE7TDesBJljB/AWHGyNn5ls1ole3gXLGAWSl3WmbEsMjCuHITUmJqQEIf1aUlNc9OU+fHNBnLcP1FZp6sIlePG/bCOjkUxfYZpFdPQ6iQjHjWofyF6mEsgjwiuTmjGA9i6iLTSbfm0Xo6+RTDNhtAcPkdY6wsbx6OYwsHTIW7WLxaYb1t96XTddxPt+bSRMbdX0v/eqD/LMYZt3wZBF1FDJeabv9ccriYnXRsaiExlRh3VgtQZsZnwANZCKk0p+78veLIeUe3C2Zdn0gBmYFrTCAQlIypPZ9ys4puGJtJrwTm3US+HBP976mBodRbUs47UbsEkRcWgmobghdQVnY2yXprKtSt62QDHHPpoHXrH6JC85tBUGZVE5hviKUTbmkMgKyI6dPO2j630RdqG48ZxGLwFW65sTYwNaFiFQLfmeiA69Jt3U3/fboQCXjuJ9DZYoXCfUGfb6J1YoWd/DDBhk1rzAKbTjdsH28mwu0hvaBzQYg96stPaVKzdwxusAzjHZt/No7h04PXQbnC/3/IYFHD826BtAnG9gC/Sl3oejtUrObB7T9ZhvlzWM6CgjgNGtmDE4xAVrzM+bI2MPuG8ovJ9hq1QPg2GdS0LhO5tHGqsqYQwhvbpmtgKBpBUUdngij0P9brBDn4GQH3OVHLaQ0C0a8OtR+2xbtSQAWlE20Tr3W9hkyZvAt62vUq3FR72nNNchUrQr5HrH30GBZG8soIGVvAgwHgcSPaLJWLD7JmN1XcIblXEwoSGIVMKqmKU3KZptDL3FoZCldzgBNKjWcOlw10Wlo8nNbehbatInBgs0NpH44Qj5O6zVrOJJrz8M9fpfVc4j6tTJIG5iWLxdS4k8NYAmdIfMjxkEd043onC0JOGklfW4plclyO46Sl9b+Bm+XPr4Y1QML6ZM+c7gGNb9SoBuCey2D62W9VRajHLNuBnlHwvcEWr1MKRIF3QYrmSSI4cZaV87aWEp7YhhpAE0ucFIUjJl6F7NVCkQS7x27J1NCIe2KRrQLdsSkO9tKujsgV+9Zg/c/urXWRP7m6tZj2SVI4kfheLSnpHxU9DDGW9fZbxpZVz+NZnid+Q26hQ8gzrR3SQY60ODZG6Fs9R5uh9e3OpHY4tMtaOarcF9rp5ynnojt0m+a+RwlA3tXbQIBZTiNt3m+YjYohk/FxWKFvW01MG8ELGyFgas2LpZF1MfFWg6zcUbs/fTn66AtMZSGp0dVLtn3XQA4F6d8i32lYAnBjovkNu+bU9CBU2aHfQj7sc4ytPpACDNuaQ7dbOeplzxo9aOT1wN+Tq9C5kQAPWGDrdsiOvmH+jUf3uLtxLHoyV0MShKaTOxgUXzU4/aDV0kG+dUzHcnnlM3I57Hu5AjedrgvDTjSa1H+ZRuCZiGRA3LBJuuXVrvranDwTan9jE7/ou3XIlrIccEZ6Fz7FSBpRo0+94wJCIi65ateaJs7u3H0aDxMO/69UXBxISF7W6LqMFN6h+gAjU9Oqa903B4he1ymWUAo+UxgMw3eB5CY92HGOW/UuAVXrXVPbHu59/aeLDEtuorUzx+7OG1IYG2mPG8sjWzTxuZZ+0awGfRDXUli3EI1E5OqNEL6mRdTiJjg/0/rqjNtiImz/DGT5n0rVpcFhcYXHB+tbf/kaLSID5rHntn3hXzfR+9nfJ3+qaqu0L4mA6Q5KTspywmTLtrMq4GKW/Kq+jjh1k3q1ndRKBmx/AJRrH3QDArYCi0p+KXTeN7mnq3c9pvj0do2vcw4CluIbRWBYdO0Rk2s1PS04fZELfFZKdciYuQ/IqehlZo30YZba1W0G+fzI+Oj5T2L0bSxcuVaWDTeKNvVzzDubKBtM3+ArpZeJrv7UoU7kt0zI6NrgmrplgHRNLqkmsC1B6vbNckU0qRccGXJ1J9+reTKwxsQ7SGTq8EsoWWwkbaf/p+4zt8bjd8GZm5V6ceurvUNmiZImNqM2FInek4Wavzx0GkrtWhmbQ9PFTgocwgBYyoiO4mOljXvWikgysxF3V06XmBCQ9XBluGyQ3bqssz2ek7rM/phIq2J26hCAPj2fiZDHRvQd2M0adRd0lBMAodShpkoxcTathC7oWSQfBW4UTUzVd7wj1I7OaGPI6ZouU2W8ab+djemtFDFpHs4cz3NY2e1bQugobcWWnUcMgjptV10p6jGtAgboEMwcEY4RtYqh+KtChnmYkIGBbCRtUZmp4jH4QZKHRvrofLcOcA15/E4xlvzUNm7K+cCYmTKjO6IYZSN3A7GUjbSkjjnGJjpxVxRabz3Dc3hf8w8t2loKKh9pJ4jDmWe+PAaevHW04iZSh0eD6VurDeJqpZ3ygHlckpZG5UTEDxhFE0F/rjhcJ1SfUfKvJhdAMUD7b0cy9OkSHGwRo+A2m0YsAcKwRLfHOMQS2XXzIYle98ABfqwkMwc+sM0xaAVcKOa4+zXWvinq269ax306zaEFtUZroncPFNZOm1NI6XajE12gfqwJCbfgsHQhWgnafWuMfUuUZV/sdFh9WLIDFoqIx+HqY9lfIaAMI9QHu/c3GZG73MHwWYeXbO4cyUwhbqLS1YwmOedQ4Nm0K09IZh35zvB7KInVWugT2xFEV1kJCWwfzQfZoxJx/W6GSMdLacFbR3Ond21Ga4nuMUuaegjYs7uSKPh7rfTNx8ePrrbDut3B3KeajUMS/mhOImHfuUs044yf/N00OTMjNxnuq3QIc5yO9eD+mpzNX3tW12SlqYwMevm3ndAbBriK2Q/r5v1T0GqznPuHgQ7QGs5QuN9e2jzXclxh8TwECGsvdZzae/wq2tqn/39LZwO1TBhN2tOsVgA7R5yF421w1WM0jJX5ryKONE7bCsET2RdZMe4afPkcYYMHtE9a29w392laKMq1pvz0h960oDQFxqzoD+eGYFDvTG6dwmHXnhPQ+/qi+NbphxIrKq9rJ4NGFazY8U7Anp7casmuxlrN5L3dcqekyPfi+qdkNKLaMYdO+hVqIlBYeP7Sf4FT+0nxuF1rQnphU8Ies67AclmOMHDWGZE28zvi5A4ihxaCmdHHdmmcweE4HcdvIWy5vP3muTQxVbqIHMfRevdTKexl40xHbrk9CaWW8gnRX+o4lzC84UDMxj2XkrM0tqVI2itZb6sS/WGVzGKnope3utaBD1MZa+Z5Vcxh9kzDhG9CtdXGmRTC4gXt73WwYxy0yRuSbtP5ftSG3OJIZ39RehFNA4lhkacNdp6Nmd4s61YrGgJmFgzQFZQYChqmsptSEOshgL81pcp1LfaRb3QS/roXQUrbsd1A5Ok5LXqtqW/QeMRVP1chabhfVY7pDW0FDZj4tJX+dtgwXYUgWBeYa/WNZqyVLtHattGC3DwG5tNJSR6p7eLZrkELuKGmkif4+0xrC9ziG/X2aajr9B66c83IQPuA6RE0bDRd+q2L8HGI+iJ8MrVoKZ0WG2aZzTcbuYk2CdY380QJR8n9f6Wg8v1LXpEatrNmZ2TJ2zg8l0ByG/UM16hUWDAVlpB3znV53i0I62lMjZyUYqJ065p7iiCfIhHIpwPnurXgK4YX0KaGK4DbtgStN0hd6SOl6IhfXI3lPtis2qYZSIDMOMNojTchu+H2V84yW1XU6GW9KD2vRwNoY5kWcNWu0k9HTlokvUHuagCcweahM9TqUbmAzuZZVs1Mu20cnHakv1E1pbo4jNajaCTQj3WuQAJ2TotSjhracMtXyoXLu1+rqct9o4GKiAtZlqZC2sdLJSsTT2iVvVn3t+LSGeYtMNEVGjFXJ6gR9Zx5C7gG8FE2YKDDWDsz3RqiZ1J1Oqe0xvdXBnLc3Wg6Dr9ecBIlzKlessAxSda6XNP/mV0LL89g2Y2tnrFltCJRk6/cCuvDs1IlHqm8BJRwGXSiUQ7b2ClZ98054+9GjNsvsDWxqrKbJ1/qealDKV2l2i0kc57c1pNWEo9Bi2q+cylPp3p9NX6qmdH7dkQSN7vrg/0fG6F0dNPhn5q0IXZ9Z0bn+X+LYXrroVGt97IL0IWGCfAzbpsIAKiVrcSMViytYwmpcjL8OdVZwrN9Ch6rdNRWj//SW5aeCNPr6VADP/EbJnyxlGWJ0huWKS9Ns/rInVW160H1FqhlxbVPvt0RyDGaFZ924W7ktb6Udtx1teHlx9yU+PtTSTFu2YzZFYA/NF36F2dOTmiLd3tM5HvtNH2hCDbqnpRQ3awYj8s/z2/PTC8EY5jz0+FrpDvUBmbwbTvk97VONoSmNhz2+xvKwztd028m5ShCa8Man5YLwdLSNseFTJ0Yv+qx9cNOp47ysmFjBdneRSIAzKnjR60atpEzsnXm60dYnWi9sKMFamwNMA2AtPIoOtwVzm3oERdX46tTJPCuuWrVprrv8MxXmm79R3/mBgIX76p/8sih2GI8sjoEOzHrq52tPOuMorJW2sZ92IKEL0dcih/jTTY/pzr106Z6odJBmx4tEy5iOY1FEEMaNuKRmtAz5/tyvQy0Y6wdDmWinPYeXr4g007Bv7MkZhkbLNYbnAUxzta2LsD8hPYPSR+vQm3wiZxot1n6CrQ6FRnYnwaRaec9+W6im7J3No6wwuSGiHMh0GkMvdZkVySIu8bjrdB02o3fbEBlcLX6cZlt8uhm/wrCstiNcJvnq9x0Numn7DI5Wr6FwapoqP8vOaOnQqdmqi8NWzZlS0eShf/dYN9n5yJkiYbFt5Qa5Y3HNWt6O0IsGLs8Dn63KLOp2gMvWdD5gIiLG6kCDe5+jW4MIFbx2tLpRhCAlOFpfoPLaZkTdZl6azrE7eh1MJrL4xo92byQsfVV3sFHy/rq5W1wDOlodZn8BzBzXdrh38RWh5KfMMWuo9X6SH9BD4H69yLQlxqnIzbGZk8DYMuBPQl6nmlUP38YQxt8g+oBLAvzsm7Rbzq4hCSFGdswkAriQELSmaLDMBTGTH3NKIWLtwLqEyg8ceRmFDb91ooOynQ6R+0YmhZZtO4zjYbVxE7fJcKiWP3TCzofO7UVQ7MVCf66rFQ34YSiLX+GGIvDuKhjoVYEYbCKM90bRy9wRh8JZZ3xhe71FGHx6ClZhaDArqjp6mzenILKt32O8ujUfRvxe3i87zhtO1O8SbYx2tEq3m1ZjgjhkhurlbwOkcc2zgb5blbgefidI63oHcPUk4N4tmVhGPHeQNnRzS+77k0iAZRw57McxsS50fZE0VsydOQptFpWmivTvS525dwPhYSLMj4e9y0jK6R/DEOGMOwveboNW2ZHp3k91x6g3NECAORF0eDo6a0kSGa69Eq+sCywnf48rCx8eqQ9UpPgz7WBx76kNw7BWVdViwY5R10bq06cL3eRFPb19ivM3vZ6VA83fGRwzDZ2kgqKRjqDz1XRGpEDIeAeJkId47nc98u2Y/Lc/NjLAw2rYAqNsWW1ZbBPPh9/zp+GGwsWi68PAuQRsyD1ZLbLasNAhaBgjg5uK2ySlr0jN5++yi+C6oWG8PuH6gCtAcuSOTck2ufczGCaTu1W2+A8dbVpmuLTaIZfdDm4+RbtWeUXKuzgiGM48yIh17/XH5kX2zulGjCM9/hMuzVJUWrzROh7k9NC/BIo3ZCLmVfjBO78UMWcmRFnHdAYGYhoHoEPDAeWOTQm/hpTlxIu53B09xRE5zIkZkWqx/MFn+MsROvlPMDXn4F3DZGOgtMNa+EHBQ+pdJylA4kkcVZae83ZcNp5MNwRESqtCQGKJ3EPkbGBxC3oZr80U2k/wofjnq11OmZ64tO/6xZbJkOvOfSFB6oidP5haZ9dChhJ3UK4ar8tZOBkewse9sjtxDtZOT1VBOXwtZF/sIl2ldZe2108h7AQyBfgCrwbpHQTDi42U1dPzkdOkw2LZLsdySRymrUedtvHXt+Hrisguhd/tbzNvC2xer46G0SP6BnbY2vvJVzEJFMHsvT+AnfGbhj9uwpAaf6NzlmMUdevtts337NZCucpUukDpE95tuk1soblmsE9eLc/e8NgIcPMUavt0DCh/vrDohtb4I8dpvRMmb22QjGKruf8IhFodXClEuCbIw3Hn9C1CV7t18Rr6i09b5npqi3DhFE5d1eaxyHZGWl01yW+7+utX9uU87cf+uqHVpFYThNBHm9CfDXri7l37Zp3ZNA3aGCIzZ4ZbEyceFKRNrC28tg8Irt5YNE7pNvsFCG9jnB3kZoKLZqYvp1TSOwXHcLBoSKJ9f7Xd0sVaeivTo5sUryLVZJ69EsGTaQv6wamPyyN6DncgbBGADQ49pDP36IZYcihLBUNg1ouqOHVhsHG/Dw1YwoHExFtmWz8nqXKMT2asSnQM4bqryMLpKAcxqOT7pMwRhUCwWJ7eADCjmsSjd5xtd2xB15/scCqewPjUTEVoJyEvrRAjo76yEPOIEUiyKC3reJcRi6c6o3TkbyULfkEI+8k9Gd9ZMmOnuJ2+KZJhtApeArDe0VrNQzWTpRPN1/GU39UP5rznwJxGvQirGhN3nL6BrjIJ1464hsAbmd8I/bOmvALQj5omcYc+pnNDPVr5U39IBDaDjKmZZDN4LjW3UYhZ2tDdwOR77f9un581Cl4I/Cs/Od09UMNnkELILb6Gsb66yvfF0tjVAww749CCAi+WFTYLkTEd0V5rGysak6n9FZh9jdD0p5HeWslm2ZJgis5u6fwL5LNX84uatj7Uk3jJPWh9ZektTAWIEPJl5tOkNFzZ1691pBEcjNFXuiSU9xaom9meGvJTH+fiLCwfX5aMlqohVJtQejtOLUHcbfWCeA6D0TAOhrcsyg7qezDuTmE69GBoTHq0oY4nkchq6cOwpTkqY/RrdbKAMJq6eqHLq1g+kLuoZeu9m3gcbDLOht02zC5ZwxtTomFvNXQkXrg16bbLHM4u6FBzGinvYByKr5TY9yLG04TF2/iX/S0IG2btmFajlLG4PmjALLKbD8dKxBHpPL48gmC0U0bS8dWAe0h3T+BqyvW6VFAd152aB97XietG6yBDrHGsCoRwqFKaBqcVw/5bvupwtBchQjmIVBoOiS6J+dviuO2o1sUUZqzb+6mY8aam3JvXW/inS1sI62ajvLW7o9R3xkyBWXGSOxsmkR2CZQHYQCiLcU462NKvOmk3TCXmy6WxQG6TcNh2njfFSbvgq29GbDRDqy+LZraeVnbY2ryGz5CES+FVbIDEZCEy62YfXtWFae+/J29tT7yGJGiYC5M6fcQv5EUsvWT1plx0Pk8YnjW+kTqILpgZUC1kWWyJAivmjoUxJC6c60j1O46DA25gp9z6ZE/mNcDuduXc85mwrX9RGUn0ENezbHRErqQzzJ2bIzdcsRPA/NmDjSkxsy6TP0L3BeTtMO+oEz2cvqOl8j96VQ/GVVs2wLyvqJDNvCRI5ja5nuerQL1qzY8CDGsXHPzUXAjxYTLNSsfc6kefM0gXN719FFYIdFA61HdMbWqmNz2lqFKClf2gfQus5p//S4IY1ytsPhwL9PrBjf7SeiFMY9aReIhPd6IcqFgrmb3W0w2uHMzKiIbn2xN9rycD3CWMtXUMWgwgxsHYBHCwDm5pgl1uqXPWrX7Zgt8iuz37R+LjPb1r0aiw5g02CB3R5Xt7G39O4/RsBPe4A3d61q873bOYdK0O7aUYXeFgXyMyIcFXu9hLuyi3dm5q0n0VaGjcM9uaSPIzK9mdV1i96vKjBZ2o43bChl9qO06E/aiNB6FWox5WrcQzxt7IEMv42Pc9AQwZ0OyMfq3jM7k2bCDEczgCc1mO4YYMkAedmjLrVtayLwaZjGdU/WQMbY2jsXAyQTp4r0ramnS9D3mqcbTXQCx9sU0GXoo90Bs+KOf1pLMcjKWa7zKEHt1U0l4ENlN4qmXhgpr3orMz/VJ6dcoeOEMDBMllupyUnq5m9o/hJCFK1WgSN0Fk4y+cPTeia7VODrHIIaNrSz1HoWCuLW3Rjz/XH3oAR0sumK2wqfmugcJYnrDHD9Nh+HgrWjlUKOofoRA9sX2DB/E3+lYnQAAEfxRvzB3QA8IvoaOEfREChC+ohLjfTRfqwu1mQ5dYiCjYR+nFWftoCOs4x9ocJS+HajMK7jbAL47oO98DPGyGDP42gA3V33abR183+cSo4KIUcEJd1F3W0i+6w3TMAZu+7Qj47KP1xB2UwIplBloczDKYgVNuABNDQ2z9in8KzC5CGjf2mzfDVJgeqEydu6u/DoD+3mbMU9gjCIn4HKq1T1aZcHX1OlDbRPvrDI9EjYms/GEZkRU3/g4G98ITGo+jG3emAM0j5pPCD3iRTn7cb2hvUygHpjDtoEu7uwxxFmkyxEFZjGts0Wa4o0CxvAk1yjZWZd0hBF2rd8vkPs35t7ax96xeRArOG5oP+z6FbmS0DOu1l7X/psreyQiaiFQjIW6n9UDBtuR07BYtXtCEh2KQrEocJXUAXrkaMlrW7bw/ZBp3/XHZH3qMIzWZcIpLAQzQLk9ZhaCi8GhHg+FkT/g2e1rqS1ptaVorD1+lwE0/q43klrgR0aDBH1sOBzFxbPpNSR68XbYrbjrp3In5PrNHW2oC9E0Om4yxrDZ5I9zu+SE7a6un603In4wYj4FhiN7UGBhitz2dqkDltlaQh7dxdlp7SBXZOzdyr2zV6LkwbuAKviZzADEDmLQ/ax5inx2OubVr1uXOnnvJAAVqEPTbZ75tXmh5VXDFFpzSNi7a0Jc4DOnQ9Y29nDt2Nr6KLC3lGHqbbaYeuE2mNFTBMxpaw6oJ9Zjhk21y4F88nYmxijIyVucKLEr7aRdcR2Ma/LEenyAKmNGZG8KUGK1PFW4Yjew90b4p0tYmfc9XFBgkujLAbht9IaBwvsc4DngKzpC4EjNwIWhOLYTmjkaMkg5+WdxiWTp/e5uuqd0MiGZYtrHam4TGqkWXB2cC5mQDYvOzMbWwoVPlECe5iLDc6mvOPXMpmL80pbZi/NaI2LQXLwLli7R1ZHQt8aDR6OzYjem6A1ZvbKiiCV8jAjPoxrcHWjnaCsNGB60Jo2EBoMY3xTraTsduyigjFZRpJcI17YXC0UlhWs9Do/pYw1lNG4EcvT+i4IrP2sxYy/87Mu1aE6eLvIcWvbA2+7q450UFh6p7JAoXCsK6pGRhNM6GkegzI2BB/Wm1pHFCT9Gl4tbWrtU8JH/oKS0LXBCFdPV/hF9zB+7KetK6GCvg0ZeDi60p5olucLoujsfW/ejpUKLuY7n8ezBr5A6j7rxT3VGYvrJXDGXVtWMnjAmysUZw8cRv+KYQ31Jg9AMhva/0MfOGD67bVJguXUjMaJwd9ea/l9SbPhZux3WGrQNIzR4lgnf4Zw7Wu/qYgN5F+B0tHkAUGqLLfocdMUCGdaTS+jpaaK8PoEn1ummUbjL1xpqxyxXY8F0B66mBXTOXiunX/CDfQiDae6ZtE01sJfUrU7BB1k+4Q/rPk9uFk0m3a6CMbr6mB7U7QaC61m9qp8dpMmMnvZnzlvd1CWEAwNZj+IEA/rhokW2w54LnsHQ+DNQ+auumz3PwHTpMbVucM/YRplMcPaYFiV8Ira1cTetQeN/zXn4hsMTE6bDAzf+gUJ2rybFG0V5mgGAuE4TL6TBW6o4D2s2GIPZHBjAByQ35zF9b82MhrRbtjtbQTg6ME8V02Qd9chwWkT0slqAM8g6yKBXcw9kST0slp5IDOpaew/a62gsYOEkZVaDzZGmcA9Q1o7UwRwY+S9Mcuq3HZcPtGg1c9o8R0miWa3rIp4djg2fXqpAjmH+Ob9VztodoJ+975rCsw+xKfXIPhpZxbToFgCnABxQIhLuuT8Nw1G1L9IL6EdLWltn3EKf4aPyd1+S0tfVZBmlXUFWaXUs7ORMgPbPlpwMwMhFlz1kuBXspdWRiet0Py5UasE+emD9fD9saM2pQbyQC0q60dwv1pkHlxfAYFkD5kmw4AkGYcCP2yvrwQtkgh4AdPXRhCBzfZHoItKSWTOTVZUThrT3FH449J4GmeULTJhdzXzx7pHdLw+zUbBYDrOyIW1b/KMDamCXzQG+siW3Sa7KycZGWd23RbPg2C2Ql5fMMkX+OnNVItmaMwusG7IDbr+SY7X8DutKJ5bbdLlye+OWvYj1uEbB01pb81aHBXvnEcwcUgwrd5Kr1MWBmuTE9bgsn17uE290WLR4zjNi0USd2dQGcWiH/GyMDfjXrxaIq0Hce8ihmwUwghgSJaJFJGgH9/AROIHFjWpKHWBvYMV8lMGv/DYC0Ylf2EZZQijyJWTevQ5Wry6zNo69EM/PaBN7DKpgOs01ZGZl1xHeZc9VnThuyMzLppIj49mVudQy0f4CP77rj6cZeefqdewvoH8JoFo+gDVbub8gr+4bJfxoXqZcNiImyRtHlVt5aKktpneC3web8gulwdW/yxNrao9HfmzNLbWgZ0YIYpbS1DtFaGM9WzHkmLV+XqZUMuSuJZbeLPj/G1jSE5Gs8WGkAgn4hjSW23x4ZfMUZaiuLcNjo5CynEZGiNm9BEO9f8dg49AqXrw2MXl6CoHSKesVTwug7qS9JGu35PFtWrUHUK+GZNcdgmWTLclboNJCVqb6iiYr+sDw0UPqgYPUrKR6N4N6JZjXSETmPSTmFx8ZrkRCUwgYzoirx0g5MKi6OaO2rI+1nSNzhv5Mii0cRfTPCOtq64K6V6HttZrRgDzFdOmyEPJOGXCjuRRc1AzbBg5zW4C7uvdi++vS/A5EbugwDm6BL00lemuzPBkYTzRcCbC3CdjUXfnTRWpBU0qXpi4CCYOvYzQtHmsg3tG59DwXr+6G9VOjhTFwQDoRKsyZ2qBzIL7lL/UOmEDbCRvm2CI3jevK8KUR4NGDB12h6TAmTpRgKsM7h4jBreHm/KHdhIyXVmF0MkiR+RY/VRkVEA12saaascs+7eI0sEVaSw/1FmEiqcKH2XBAJtGyK61abm0TuB2nPFbboNM0boYEIM4iWvl9RgPk3x2SgGUEMkK+7/gofOim3XDgYIk9ulO3IdY9AYeDzl4zmh9Y36z1ggBTt6QKaZQs5Mfn20iPNjAYDXwH+5J6NUme0yo6z+k3z2rOG8U8r7GgUPVHYVDbVsv5sb9+B+yS9DmbpU3WfkYLydQ3hOYyVfxtIR1M1ZuqcM+2J/JLLwTYAKNqEgxsM1Rr87dXpjTczMhEl8d2xacq3T2Rlji2HXrjXM8auQG9dKOlKTyJ3plbN3qm8g7D45pXxh9a7pxDtlWed9X9bkrkMYqYar00Q2yabT5WhzwywhGDED8ZaXfHQxekRpxQ0bzCcK26wHfajAeUqwLWZ/81DCWzH9VBvgMAyG369yDZh+eWtR23g/qJcOGmjMyYWL+oudNkn8LeiECIMNWB6Ow1lnjM0N0p5L516ru7hwyOBv5EMc/7CI84UeClXclRu8cJAJ7zpMRhAerfNSfpIg1gxaLYNPpB2QDYfhpOrQNg691tc2BRIzDzhoQO3XAY3jC+I2jArQtxgKa3HS7sO9EQ6/TfaQHq7j3pNH+Bs2uOVyDPd+lSwws8ZUr0Yum/stV5oZFJw+UHRz1E/mMHI3aQVVF3gOE48CaS6SBwsd4T9QPzZ4v6jai6h8XLA4U2AxwOG9ED9wRJ8tRkkRqcyIOG4XtseapBw/j2uQcMJfpVFD7iGSCrFxLiQcNZs5MHDGDhtV9Zg4dLELHd7sHC7PhKhozKpuG+wi2b7gCYoRAnzCczmtIyjBaoUCf86owrBQUVD8PyU5Rx0ClaNtQk5oV7DzhgH1nDayBlndbO9lEnQCAaUHNfZ6JcrKOplRqO7YGfddb8Bp5zT37iBv2c/4AHC3361tovuwd8MyWOEDOjIOmL8TdY4eOCLJaBXQiPTmAUfBD/mccKsdEXHDvB2jIAph+t1g0zS4l2iImh2SDQ7FnU4LRuHXl1/pa4g9DOngEsxlyH4RM1n6KIAqKvuzN1l3qYp0wzOjB9bx9rHQw9u7l7NHY2+r3DDbiAPSCi6A68ZKBrHtNd+phWyBgZ+kd0TBg1paNHghINma6oX9QqhVETXvWuVi1XLZgb1m9G193LXujsvRYZ4KDdJsR2UQ1lZmNg2Gtaw51LLGZObG1lrMP1++6cyMP+2kyfbNhii6KhBaKm9M3eMzzBM+nb7XmFrOc8CaGVmHCCpp3l1MPp+8s5VuK6IpTWgF/2O669K0u0RQ4jZsriMCJ5sY/2su9hCQA5MESNf0iOEV98zpW7juDouoQ/wml6I7C3lRSDLK9ptEHRZnq25NhSmrq3Xq1sVSOMpZ+q930RsTHTruk7Ozb+YFZ961RbjojZnhZtxcba5CcHz+lBoxx5v+81tIbk/sLP2zFjQhFoAuwzX4sWd2wRWIIjpESW11VOFxgDDOG1RQhDgaOCNpUZpJ8BhWU4IniAVqiMlK4P70BRW3c9DXntXe1On7jkMjqWGhsdcEV/HUT4B7iiHtBMO/amhtzgO4+7itsvARA7nJMrgNv0VG6l3sEJ6ddw3O4fALRdMZfU8PM6/bI0WYRzxwpNpbhC0xanPI5Z+o08NuR7wjCNF8Sfw6klneR08sFp/DCkGGfdLrhlNd0B1F370HGWwYbA0ZvSVyzFbSp1hgBsRwu3vvGzxViHL91LCGTSjEXxpfo2ck6NENiSuYTI/mAeTDUNnYdjtj66CCDZ4TvbbUm35jPcCV+US7Sdbu6nSd/basdjbhtX3MWLktN2FygzicjQWcpQupdiXvSRV61xDOOW21Qp/hunvV345ZlMsj+7ogt9/pzyLu/pz50j0hKafZ1XtwSyozpXiCYA+B//FifgQHT9YYHcN/L2xqIzuentfTZYbtz0HqWHjQ+xQQz4KIcY/uiMlhVZ/bZWrRT2zAaEODdYR1AzHgOl2iLSSEH5DqH6jNA7zYbQE3XPbXM9G5WTvNeNBgy/wyXoZQcnb6kkta1Oi/YM1ToqTMa4mHrHEOegPbXhL44kMbdupbInE9q9wwHtoDKMFlRseg9+wTf91o9FgV8RYOZ+w/9rlTbT2t5HqMIX6+8fIRlvwM24IG0CNa6hdqosCEfON3u9qKG00deVzHJWOvGzyQibbmdj8G/17RXYenzQmrZ8nC9Pa6cjKNBtnpy+p6hui67haBTY6YXzI2U9F4jCBaO3RzX3+kik3/xGHH8+kWPWjTmkfv3WjuEjdc49+okHK2RoD1xuCYadxf/BDftfp9lWiwZNHjUih0GmvDHjUeBUyqqb0fMB+O/17FD2o0QwbZYIoMQz6eQPDdZrqxy2nbbMNXLuxnfG7gR8bU1kaGx8fkBy93I9Rq54JCcbDKNNyOseQsZ7o9M3xQaybCR+RaAwudXpjE2OoaO98cCBB+AoxNj9kJT6a7TCQy6HJXTXRgi7X5jrQ0dfwGb5jRpEZ3HQi1ZyMhO5GLIInQzjk4KLeZ3Q8GeuqgPCnNgnW1eb4pwN2k23QDXQ2m+i2Hib5os3b6c5QkYxvsM1Jpb8bM9c2qDDJM1rM2zyB6aVDppmVQw6eujHo3nG6dtdARm9wfFqutmW0JyGTP0ItWs3LNZvgGY3W3YZi9lnahwdI7VvHQMHEG360ySm3B9cCdnff3gnZRRN4J2nxbcquksZyrgbnuDmAGKx7GCdlCCxXOay21dBWVwbNWrtsrUDCYs810WmHKw0UNlxwO9OFc4M+OGncTGHoXswwjKECeipeWVqdIN0UY912TpnpCq720CTcVYRzE3hJamlI+M+PRnTVungZzdf7Rjdve67HQ/6UShSQY75ZR03sGuCTAoEaBowuwZrIM57hfJw6OQcVwJ8GYATNNsWmdo5Eutmbzdq4KS0pbWyRtfQuoor35Lpiy1mEGsn3PR+kpNwGM5oFsCKW6s9VmhlbpzEJ7eUCOY6urDb4QaU1yIoG/t9fnGTx5dcthKsMY35KYNi6u30I7iYUnMMG94qAjB66Pm7MiAV1sKokYKS1tNBxsdcKPgDqw4Pqr08wi213w49VhPm32g6emC+nm8KgxjDtdJ1bdFdPd23RXFDI6+vkrXdrq8e9VYWuvA754RCyLoToRMjh3RmF/fRpp2cxdcawr8T8+DDtcfoU/O1ndGdz1XCW4/dWsNr5PRMf7rTknAmFuPNd0dC0w8PZme0lE62U6Hd0SSyH2CGtVDdrG69/It4Se6MucbIejgdMge9fsEYGs1cqZO3t/RWP1DPdUT+XUfdHjPsB46UZzI0ZtLXQ/dEyRMv3RnC9AD0Tl/RpMFdlkJR22BfYD0ZMA1A9Fhfc/NhEHox5hl+gwxHopa1YPRebrfEhmVa0WhEn39LxWqHo64xnan2n9FK29mcGnutelRnh6M4FoEeiqsWeSdYj0fzU1I9GISseo6FHorCdiCF3zcGrs844GQYrcj7vZ82qS7Gp8kbOiXopvDocrW9sGd+iUkOSZra4Vg5ywFuF0B0JnRGm/OYYZS0L2Yaieiunu4no5GZjD8zHgbnSMZeRaYtKh0QSw2GAZwtcKmGU09c40Xp43OjrHTd1k26MPPOuqr8JX4awr0nI2g7bfBev5aMddqok87jO597LxOl80PdQa669DRGhPw7QAYSnTanY5KC59y8ngkWhv9R3r/ZhxDYuu67fBvXuKX3Zh5zL1e0GaxzBfrBXUMzwYO60PducTdBdNo+CP9GHarNG7GRVdWuDkILUPPokzNgX2voXJPDntXU2eaZ6C5Sm0Cw9GHtAYI+8GbNN0qW4vvAXgWU1wwRG2+iDf+9vo311jw/UwL6xeje3RxBQlr3vf407JYL6sna60/dX30dkBxU3aTujdDawfo0RFqH6KNIFWYCF3R8QjZnTveB1/SZVcN0YGtUfCiIdPLU6FpbuiSxRU2Q3d0d1awz9GHuiytW2fo3rVmrfTPdEXq0L3Rhfo4X+vJ/0QdZ3ujppGD7o3Z2vPvWfdE1+jEPG77orzkR3qPZjqSfCusmSoNL/Nv+6Lb9HpLsO/RbBTLv0Xtwx79HXe0k7e2zDKD0WdGyH9HaPtrFWo/o8PpuP6LetoBP8p/RvkwuCfph6LXHoOcc6O2eLHQx0aIiPyVrQ6ibbmRSvSdjsrAPI9HBhciHGe/os6NvhtxP9HH+jewRBDLDE+pzvQv9GyGt6j61/onIMbf6Ms9ZAOMH/RMB7TWYSmcxc76v+jhPR1FDaiIRPSxcCZr+ckOR0bo+Ppn0X0XA4tK14c2nc/RX7jk825yid+MOVhe4neKgR3i3haZhmd8ommDdD3JpYL3Hvr/V1mau2GzVSWouCIxU6spMuom4gzBqemU8zgNF/Vkut6rOrZeYURE3ljb+ijvpmhotVzpvaa2Lr4tSiOqmQcDFH9hzwzsN6ix1MEGneoslxiAUPOX5k9d9a2X0fbBvg8CIfI6AjcMORA1fT1ujFLRlRa9gciTys9DGWwdX6LA15mx1IO6DIDHYPjy3WnwZ0ANrC6na7FibsKHzzpaj8dzVWb3ghfUBI7VDuF+K1hXWA9o42nhea2J/a78M+kB1EbTuBpo0wOs7NJ1JE+rOdZNzlgyy89bZAdezGjrbVWzhADxxg7idss3R+J7OVXn+oI0IHphtoO6xQXbFHsn8O2DEczDctmwl9JP+hLcNp+G5vd/T+s/PeOjrP8MET55lCqwuu9DRKEY1aI5ia4d5a0WhYwgxXmUgIYbIex1rtSyeTDEMSWzSxDE5IUvX2oO9PEMX9b1HN6D0Dq1eWV7RKVv30yTU70nNy/u4WTawfir612A5FHNA1auzQit2tbSzfzofN15oBR3wsQ0ZYn3Bw409tc2mFDQ5tWhkz3ahZJ51nkGUATRgVmAT21+Zg0NUoeuFHBi5raq0yZbyODqJWXvDRlrhoDz7T6wW1ZdOnXgsm7uRbQBNrqv9b7ajKDKpZo8cPo+FFt8demzqTEn4Xa6SQna4GcnPAc5XWBrnGczCIad1ChnG/ljZmxmFCz5Mas+9MLanhnDvdpgSL9G5w+1OD2LFvQ4Ho3oxWWGX985BEZBzFyXiJHw+SapBsBtaJPdJcVoevVOv4TKlsUOUAI5eoRNT1K3aWGDhEOTxvNJLjVE1PrY+C1uAW/UwitRtee16hEo9NW1eE8faMLkPO1gU4Fy9cQ6RgrUf+uGrTd5rFtMG6GOOrdihhZi1Fva+1c6tBPodfhBhIe1CAbcmDxf2buDJKvtlOzh4bEWd/02gazVGFrOH0HpGOvNSYWbzXUvRgUg2OEatZCcO+aV/exDkGxy0L5/at6O6aozJf2hQwzT5aIZ1DghGVg9x3OPRw0M6llMSIG+avVdFls7SKcFP08qGhsSTUJRtj0wpOF2HNPKyNYtZ/YRQv3URYIC1G3+41LDeWumY2IpYwdMyym2FrWyeqeLWuh6yfCvQ234YmV0Y0cNpBGecii0W3nIjzkbEiMSDFfn0D1RNC9MPrrMYzBBYqwitYRwGyJtrgVA01p7vxDIRWriQ6OAc9X1mOF+s0B7aZnTZLutkC37p6t2NWWuNkYxmoSOCK7Dojgj2PmoHotzgVwcMJmHU11AQxlYwkcMS7/yghFtn1po6q0QuflpE433bozCBkg+Gx3f7uq0sxai5mrlkHmv4bMmdq5yz0D4OrM4auqw9AwfruYzpGYLlt67Bq3wtOesP/0GPoSHDXgO/Z9cJvnYvkEfrI/0m4ub5LGVbstPSgmZhecln+wcAs6wSZnQhgZ2N8T3u8nDUeBniq3tPpFZYYQxP4Iow+tPbTGWbZk8DFe4lIn8xvZYzRtHKMDALGTanSrTux3XaFq11tAt6OfnXcYROi1YFbcn8I1GQ2dRcenZyOaaaPN1pAOFgjdyNvT5yNaEiGjOVeIz/ZqWppH2F4Exj0HtegKfDg0rcP2WnrFk9LqycavU7/vd8PF3rSotUA6xdAyuLghwN8AY/RiQUu0Bw6x0WPHVsdGDgtgXh8IwjQuigcPs0aHDMvwGsy9L6YdTXWwOENF0T3O99fcXZiP82B47+OiDcWkMw70FiQcIaO6tpDvTmBldTCjjJEwMdoTL06q6EuQuGNoQixPOEJHMGgRWsAkBdne/Xvr5Lm1596uljVYxqk+255rnyMA06eV7dM5s+00lj5Tjcu/a18rY8lpi73wXphRM/NSyLLA6XqocNhkbiPtnVBcJbehJgsCLwM6HMs2XGqDAumVnvE1e9b00ktf2bYHWsDmfXyfyFpt9X/BVmIx5ZtAmxla6cWDmvGOAHCWTnAgxJP6AN0jkWY/dBo2ujLxcJEah9aiG+V3UfNug43SGHLWsaAea3nPHZhH404l4h18FYRxKgl8MUry2+EbwNCmwm2yDJgwbxy2JlEdyiEielznVHxgRsLzZo3S8i3hFEzOAukPl1D36t7dkOAljjIq1vY7SXi7pLNxPOlTfWDpqMBwVd5pRNLwBQXQnPOrbLwtFEznplk+qBUFFXowgMkfrqCMd7GQUXBvLgqExxHpIFR/Yxi17fOOjKyNO65B1kQ4xrmQ2KLgArVoh6RqUmtB4H5IfLuJSJ4i4xjskImBOzBG9ui4y0aEcxN3yeFAbXO4d7TxanZWdNV8ukkHGF+iGayqkbAcsQN2nPdJKLj7rX1m5SuMUPag+TPIIa64LZn6Xp9s5ermrHGWofaPnFoE+CCJ6CUDZsWofm0+H4fDM4vuwnw494SPfV3n6TcjTsofh/VLESvsxZCbimN4b6EO5YuoQwe1JuacJcNy+q8XXdJlPWUVB4MSNkE2GL7FrdkwHxIebHPcn4xUewjbkpNDRed7XADyJ6UrGToOqGwML1oy81/CIvoLUlVvO/Uq34Qb1FeaIoYQZplnqInWEiW1k2mp+wERekBfwXsY8qtGo25e7bjus6V0eD6Q8Ny7e7ejN3+kknzTu7NidzmeZuA6ZoT65yJGaC6sUOGv2HUJepuAP8v7ebdUdBvXzWUbhBy2u3q1b0c3uU8rc3Bn+2Sr9oWTsZsmB+LZG+g4B0hsaUCjlL2VT9B6FvebUhh4CNsGh6WF7OhTHNyTA9K+yi1sG8bgp72mT80Pe64GtxEmRlQ2x4U57Rz5EkqcGI+N7Arw7kWI0C54ows1C6G9fBpFqAU11ZHfDCcH+N6XczAdcYHOiYf4cH/mUAfIWnjoYwKXrGJjESulDbQNOnHW17k4C+0j0mnd3fkgbGM109ZP6da/m4HdBLAdLPRXfoIedzo+jxzJLupTfR4WbCstD3OAhteFoXgbTvD6etc1haqntA5EfX42k8Fkl8EP2d2/D0/vFw2iaEBRlNU2h4Pe/4RZ8Oj1Er9DaoeROzLmhoD53BqHEf05vOSETNTKBwe3mQF2WsJMBaInaCuEBULKkakL8DLGedQmQhlq33mQE3F1N1GQhQqZHhtr10loQnNpSm0trAdRssA3p+Hp7JtCu9nAs3KFEh0bxJO/0TjG2LAhGehkA2jiFJHtt76AJvUvRrb6Lu6E3VdytuN7HJA2sxnRl4aXUdsDGEmjaTwbSL1eP4CV0njyDOvMfwSJP34/7s89JR619zUF2urLRdtorJjY2O37PDZMT4bFDK4p21TGuxlQ3nJompxB7YLkAZraCt3B0PrrRwcL4+fMbIhZkjeTdr6Yy9tby50X/We3HN/XlZ6z8tEU4NjFeTjbKNrlqTyL+a9/1UUxL+rb13tW3VmrIOEjzAxCqfKm2k1zwVu5XttsIGwpA/mpk5a24dpwd1gKWsG9Vduow312FZDgjrEaQL9eYViDK1TCYbOMfwmDN7eWJhO6ITnrEaMCuhz5dT09gV407dryydPuOseXEnfpVrzN3rg2N5x6Ubgzedr2g2iFG23tI3BZ5DeBjuWYOiWEgIswdhnS9Mn5rh13Eib6m0LbWeObKDWuXA01Q4XEN9oG6lde3rkjMJzwbD0dXheKMw/uuq8p0tC47RMucG5iIr2QTVEzu8ZFGpSv6GZAg6ZjO3TkNavPswR6xYzGt5nKYOn9oQFslchXqtWQOu7E01kZCTDlMeL8AjMupuEMBa4m1NOb+eDdPFWmRSIba4ZW1y4uu4Qnu0YobSuxaB6cvChMtw0Q5ogHQN7bjtMAyezBTWuxhTyK13qtlk6omlQAypnh2zRedEAj1smWOBrdkTsCvVyDY6B13lO9HdZ8Lu9J2FaZOG1PW2dwI0oHrvYIKEGq0czgBtjHZwOrYxylAG55svFa4Io/BuiIMw73pVAMhfaQkg0pITPbyzR4PccZtmQ9dcA1jpDkE9r2utlQszs+Io1AIHQ/L7hpjedOeLDQpNpm4Kdwavo9bDRJE5XSUcP7SHcFKhDt6OLEfJmDtPoknCEt117iGRAzVDDnNSXA5ZHRt9jGqF3TcIVzUwfdaFY8B9ajntR6TujzUsgGYxs38WQ7w5BtvLI0rfpJwN3UxyoWJAqMiG3g9Zcp1zNBJoPFZ4eG6Ixp4Q3DCUhOWdLLhgfjw+Vagat52ByBTRdugEI0VeG8OcvbeLYDVubhX/xxwFMJ9sLh0Z9fY5ozj00BHCajx/hO1JAeAWZzQpmE8k8pmmP7w8kZoGANmMErFkep0hOzXQJsZ6yj3oX6Di6hG8tZvEaDUMmj6zQQ6Mx4XtB1BkoLQ8G61FtSwWC4dfcBi7/VcpFVcj3Cugio9qTm8cKIzHYas9j+V29eiXg+zVANpeUMS2OdUjQJDtsRwyVGLR07AmKSnY4kjVE16264CifVWLpPQ5lpOWzFQG5d96E6e0HU0dvJI3V6420ix3WIgPCTDh3zUa86B+tiR6GcDds9pCj1qvq6T0M4RdYrJfWgop1cYZeGDCOBfsjFzRsYwyxzb9Ei5R+xYpKcwZcU2Ya7aTMFQODpg33vtg8zJf7QMtYShAhgpYAP3K0TvqNW1B56UNnLKEbmLWG67jhc1AurBrCqtkCm1dDZsAMGMOQ7/ZvxnyUPp6GOO0C96ukLSCQdf4wOiYMFCxeGwrLIcJiXFwU5EGIcATOsxwiw+hlk2tbqEKcL0GoY9EKZjFnVXabdIMBRRw/DNvFvtoM+v56u1yF2ppHBPwfKU19rb1vDFP+mqpPXQUAzwbUE/1ZY52SCXHQvod4wrLaLK0j1Om0dc0jv2fVL1qPENOcWSeQ3RUTdSwjIbq9N/smhpjNlBomfzEWbgvs+jYFmYmP9o0B2VUEZcN2mBZKtcSFkY0M4PbIKCaYWiojBIkURjy6aY+zszEW+jfL0Hnh/VszGZMcuUx6p7URnj5h3XTqlw88SmX0PfjWl1vQP1aleiq7mXxI82Ju8LRVwYikNkAm90nDPzmH41PKbSb0vZBAIY6feszPUFfa+z0D+BYuPYWxh9mKUSZjVkeZWw8TNxQYrO1P8HWlM4tO6oXF+AcYR1757IGN3PanEPRQ2sePQw5qasCaNhsLjOGDphHX2bajCtMj+VHtTA2jACzEDovgdYg+JPdTqLvm0OejaSJM+Xhx1FRtOqe2xYTrL/dgveNHNU7EfFs3Yjp1NMD66uy/M6NmXx08ooe8iO72XvIuZJhhE1CTYhhdz9GLPnNNIYLv2IhbiQcGjOaazQiLv27W7dGvXtRT6uWPD8Vi8syQTrkR0+4mNlAwf0Ycy0vOFYnNxvOOHNbaBtNgK1CHIpMJgGLHdE2NsRCwR162713nOA09P5esQYIe5o5f8QY2kGpce/rCKSOg6hsjwOaWQ/Mn3t8C1X5aPVdMX+wPvN07t+yykNrk/cB7+pAtL+rtdXwJoYaXDJF6nmwrfepyw01WFVrCMvmGVtXaljcw2V949OCRzhTU3BAhrRuV8iZietHPaxYYx+Ic9F1Yma1T1FL6B9TC1MQ5wNHMbWXMcWmMTXZlVqbkImXq6ajhYGQAXfGbrLIzHXpnm1M1mEU/Ttjt7lyoEEQE8Mn2UDzB1wTPqPsuF+hDN8O6b9HtUT3lAjS7Pn9TUxuztRx9j5Wxs4ba4sFnmi6zSW0Qm/2aQ6Rtdp9BN5nUppjhj1Q6a+wNV46XwtOjHidjwYybTH8ggx2gAzW+mzvW9YYaycUch5xzGUERqmKL7YMf1pg6r8QqsdhMmV2WFN5jeoGFPrO1UR241Yp551M1FmzYYmXYVpi1UI6149XEGOkdV5TqJAOpuYKI8gKGVjXBx6KHKzm55c2tldREsdD+UvE7ykwZ1yj+M6vOTf69tF8wwP72RMaxaE/td+WvVowzQY8y1wuO/xPcg3LpnVmsac4jksmt/bSQplNHWmIYMv9LSeRE7Wx5hix3K1o2jskWGrIA5M2o7AJhlq3ntZ3O32fAoTgk/2k8Y6/1sJaXcHDkDurPUbP4yqjppGjZ/IqurY53dNbT68jP6fqbDC+qakynvoUkdbth4+nHG/rFrwvtondMTyhTB7cYAU+nzfX6zA8XRO3rDVmEbeDz0SFvxsaIWZ7I3oBiya3dIb5B8HPWCcHYndsvg1GVaM+8hwGA4YjjBmr/TdyHvn0w4RfT7KzVuuNyf64CoMVch2utWTNtCSyj3pfyN55WyK/W+rj8czCy7kicp6+5JtMLtgvHUIzY6+tqvu6z/MtvqgOyW/4U4dFZWf+LV3xsDsP9c7NINgY2+EotI4fL0JOv50x00V6EJwn9Ftqgz2Z5eVdM/Bo/wuFJtOt02NYUd8utWmiDZGflnKzcf5r8skfStGtHkRgqd0v/oVesjsxilQ9P2m6vyHPoV6hvGh6G3W/gWTh0xc4xiduCGH5PUVxkJKKMZ6GT9hxm62DOBTnAUOydqawsjWGHSbXGDrxvzp2Fds0AZaX4DeolqxT0c7oVLNjdRePNes7r2PStRAo38y5Oa5De8hm54Mua72UNKteC6nAeFqkYw4joIdM0hWx7LWfxtILQ2da9HcA5aCZLKskQaUhsqGyhcZsGmhfJk2vXb2QxFFp0zoGUHLVvFusZ0Qs7gCMT9uluDZTwYCEw7+bxaCL+2KblW8bpprTk97YfCuJ6KNDAQ0qUrDgzExmcYaOF7tCNfhS0IAwZyq00MxJOQhRutHLxg96ta0Wb6eZXe5unhmOV47V90V26RGYw93ncRwrSHIqtyMx21oyjMQRz2ozHG0tpC6dGYuodiLr1PRFcnse9W6NtQ8RhzC34zHrqCI3mXFZYI9jxmPLM6H6ddSx/VQ7HMVpB0Mvb3WcQZaYmYjNBhJmNreEEp9rEGhpvMKtvJmM8K6XkclMxrIXdHwbAR2baa8/DbDugmnNFXk1fRVaEUqlYAGmtQn62ug+3x952Bsi42pmY360eZmIENJ5O8rMxkb/GzMdMIK3war3Mg5RgxTJzMYpAJczFzedAuWKPnGuTjEHy8zG1pl9l6RcA8zPuRmOeh4ACsLfhUDdI8wb9u2xW7019LBRFpowLhux+0HNoxZjhP2PWIgDUmhWVDyZJZitJmSZQzNmmlmNIZ4ZZiYfOKidbLMXTZ1yzF+Zir+aBWY9dWv/LxyaEGIsKVRfxbcrMQZFyZMZuBCg8x4xdRK2v0T3DT4oY9RXGH2tTDTt9yOQk78MtJoaq7nKKxlv/xSibICM46mnfNDkunbg2BPrDEN4ieFTg4Z4c56Mv5bTeCae2RYrdhBolXTqX5aWi0R2JPbAHIbnrWMVEMC0nq2/5LPaWlv/wKUby804vmbLGAMSFwL3yb51K0yBhMUoh2gRWqPTLavJtvEGLgbSvRn8gNK/6No95cop//OwZv4IwcGZjFD/xW7rA2e+htfX8EakgteVad+g1z9sbIzsuYMl1Z7hw5XOL5mRWRpJGva8R56x+3BkkRcSNnBZXEj4ZubJIrcXj40M5JGPEiM5WvJI3mvjnIwzX6q4ihSRXyTDSVpJFWOJEjwN6SR5xI9+kcySLuI5aVsmKx0MvL/NqxWIaRbsVjuQ2fJI1WNgKSJ4rEc9dmrhArPMUkQZLVVLGSkiguW/HDD4hoMvWy7YLyjwX2kRIg/YdESIfC6l3s4iRGeLeSsT16NucF6y0JPGXWTS3msYMJ/k6ZEjLnB7onFfKFl4Px/4hcjhvmPMA2u2r9X3ahYalDSnmucw+NxhfvXdW4drDMwBnTTE4Wsdc05Y4KYtx6OW8DAyenKTx9i6KIMQOa5E/IZNpI52RL5/n0ZCO2PJC+npWfUBO6cpMxO+Lb9bMoUCIx4Ra9EjOAu5XdV5EY8E3cAbOGCAaWRZguALoTQy4VbOGCajGmj7RIPkM50U0ZAX9EVGyyDIgJiTw1AzpuyC2qSqZtHVrq1MJM9p8PtGAhSITKjvtdGx+tp2YV52hkD3fn1iDiMw+Z1KMOcAo0gmADqdR3wQECVkeb+7lY/T5oq/xIloU/DhohlkbTUfhsj2hUHOMNOxWjzjFiQcnnS6lYQP0RBWFDDBhBkbHy/BGQb8UF6WcDVHIZtbyJl7IcCTgRqVYovjNJWT8pZUD0WPBL5rR7diznS4CGbPMjs+vAQ37gR//xHMHHXNfGhybdPR0aPYJcf4IvCCWGxaYn1zv3rRatqRe16T+LVYhbVu7W1a25R81OqxDjI7qsauzV6rEfR1+qxQuZQasRjLWdnojVjp76Y1YwMsR6a0Xu4nkNmhm1EzOasZHQONj6LVjnDYiAoLUYdPgzzP7QVtRlm7QjHR3iebVjwaON9b329PwlvoSTe3Ha55TMYHhievGvfpgiML/bEO9NomvKzeGHnv8LGhETgcVeatyIpcDreqNfsFSCdj363No+81MgiMXtH5jcyMGEoDJ9ZmzWOWQ4wu0QLBfjPZY2niCMKtpE48W8WxNwhfdqTcOFrH+mtN9aPhXJ7VhLWLQx4KHdV5wMtYzVWrKaPlrEBeNFaxtcFITZo+vzNyawo9aW6apDVp+pArQKQ5iWDyShdsvJ6kVs6zMvZaOdx/6Sl7PEUYW0wWSYCWippRAAg4qDqWkzUoGpBCAuaXx9AIRuSCMTGYMVMsJu763XBQR9ZxU9GQe0DpRIftQQTj3L3RAGnSivFaUrA4dJog5zGVaUMMOZ+9XTRX5pWPWu14i/Nqi6mNfXytiqx2xc7FoMZNGFwLEgobOw0xY7jS0JEe2RdcOTkLSyJQ6N/NdnWxxTBOeuDn1Z1qU61fpaGW9KjOsXw2x9HkVjyE+OztEcWr0SMKw7LNNRr+hhLENEUfC3ElpQ+8lI6OrrPERkgmJE6aS28QTasdbS1pu1WLhjZu7DjK2n7wlnIUWWJZyG0Yd1DaIdXMlhg93zcPZbu0oGWCrDIk8qSI2W44mv9WSmO9jcZoZYC2ZEZc0MAFh0nzR7IcCfWE75Cz0dnm8/HJRJsm+S1GE1usxd+UidUl5rXWI7a711iusBmFvLHRptby6w56XdcLBuHjQ8lvPzy7rHOP1ppavdYspfP3WN947F1s3o6KytV3ziMnQ94aRu1r3mVnLfz/tPWMxeb2T056x4EXbLPkvWLPx4r1ihFaa9Y41nifGU3rE+W0IdBahw44tsl+Xk7pIANASR7oTDuxkeAlliFn1jb6xF9YtWuokH2vrGzUtxGxbVTB9NuaR0f1pP1jXTaL9YvClkw2NtbaH3Mv6x8/HZrptvE22SaEetwHGgDY6yYVcLRAbGjUiwGx5dYpNhvmMKgjbY9MiWOorImHBr0SQlZFlwcpWR2rtPlprpzTlhZIV8kthtQdbaYQkqNVZFpK91WRO8dOEFqu/R1ZGnkd9WRMO/en4WKvXLzHxZsy+OFb5QVkW3nziuHWNj0XhNCIs/4RdsIcbGNd0Ni6zjYuVkVjzQVZH4aim0OkIY7xseRq18bHQGMtWRA8dQywUeMPN7oGsigK2PPzCJsWY2OTR5Yv1HB+3h9JpAcTQOarEK81CbeFwuEssbz3RNL7GxND5exYHHSHMarQ+H6wL1+9WKtotsFvwn2/ZZlZQ8Pa4w/RpsZNKI8dqiMd+q2GcvUP2iikyXcYiaNPaxtGHXzHuiD021b7pNgX6FTtJDDuFj2/2FAbcTYxc8tMD7hdKO55IwChYL2C4vPmpssgw96FR80wY21lg9+1lIfV5XpoUDgtRdUYjuWkxYyrHolYiOi6RL/ZKWuD9xUr7IT9A16kfDMlVlvkxWB7rXdVbW99w7Oercy387r2fM8Q6eLHZsFlaJ3C1rVxcrmeW+bNq7n+QOMe6Dmcr2+VUjIu+oI4zo1qVz47e+2yjSPOlm60fYHFW0N1uiOQgGFgLbQW8Fhn0FNOtcdVZOuCrU5BZo5MnMG97rV9Wq6rTi+ZQUlOSenxA4tZrv03yVpmc8a/eBG7Z6rqJiO2BFHX9VTBbwIkebubq2L74R+DlPGJatAQ1rGTzUEY9iMyVhMNjPhOiB/SZR76t0Wch5sfS+seFd3vrFTO0tVGBBzMWgUbcyMla2vsNoR8jjKT/lvvR9zZ5kCaE6kgjFixqnEyoUYIHsGOmF3jKhEZtU3uF4Hh0Gp+x7gyD9lxzyxiZa68a6+d2IoxwX9U38yZDzDwZ+bcDIP3vZMKRuGA0My+OOJEUIkR1O3CJEDbs5kRURIlcweqfTMrE7Z14iRllYytEci8N8uG2Vi0iRGb7FmLg3bRYi4IS9Afah0dAUktakySpalIDOiRb7yegoT0SKfOZ2CiBiRq09F4wRWwwX2FwHtTIm4xIn90caiKmJF+0kPKRsD/aQOrpvVBloykNwNuMGTaBVt941M3qtv1RaOLijCWUUD4PnFpoFsU7uEmdaLhv0B1SbqWmsuc22itCuIXbb2JuEI8jzbeQ2TOAvqUex9W7blsnN64LA5t4F2rVRlJQO0nEGGaQvf4a+yX46YOS0+l+3ZLN2lrUAzb+ZreY3nEMkHQu+kRINlgYBRkdl+wDjNNPohwKKSY6Sj5TaeJdZUwchwNT3rEgN/s2ux9btQXlwNHh7NschCW2U7dCuhDkIVYFkLNa0elTA2tHlTW2A7Gb6j2wRYHYjnmtNo1a/rHAcIohyxrYyARVvWTm6LBd/Ze/mHOIwd8Z1HAbU+9YixmpbMWhnV42xcZPB9kGu7mZHUpjxj1dNKnl1iqWRzfM6Lje2ybMZLRCMkOC4LRQsSMPSWp4m4D1QhzvfUchq4sNYh6fKiuzmF43ApgRbPgk4YLMMgaGv+TTGdrsfW3c4mX8v3G1H/R5riEPREKZCnM/QxVyDGbhicgwL75wuMFj2Nk9dlWn/oy8WEDXD0+eldA2S4WzrUcGFdo96LhELdPZIT2I0dRHKGjJvaSs3FdbiEQOKtqphd+im8J3H2xuWp2HUEOd1+eacz/cvFqRgyw0a68tWseoOtVzseYjzl9rLMtlyW/BI7Tlk33V87GV+1GYxZ8gkoEcf+3PTY7ONuDafVDXnZj6kyW34JFiPyROLI2/tglz0A+b9Js0xRpFLSYlpH3SVPZvVMhpG/jtFqcMR2M0TFk6drCRSPTAaeolWzECbnZ1NT+zBYz73uYaxSdaH+cmTG0KQl6uu1LQYZb4dj2GekbrEFeo9kKZD6fNCja6lY3WywfxwxVrYeOjDmRmnYldbtp2MJSatEd+8aN3fRl0RRAPBubA/tB2mMujP9ukk/TOlG2n1U8R4srYE4bFqMI956+dnsRcBdI2zhHSPqDpm9MfyRVfNIg5pIbSyy5NpMCN2HoLRt+jTvXv4asFDjVBwR3VjUtN8x6g6nUNCD6PAQldbtb7xh3qLJtllmUUfOn2qNMOJybSei1IhORQxvXvaowyS5hai7r+UOZPO5vcbVum6qHND0urfwqnrhwr1NDoqGcWgR3sPHiPuo9RToabwNE1W3yLOilv4FwxVFiw4JUeahdK5DosXwm4ZNK0Y3Ors9DbNnQYxBVHBydaxYdhgjNrqGh0IKgGAjkLGp6bD+ephB3t2Fm/cC76InvEAJj6tyKC4y4sNrW5lHA+enVP2yMEHjIvaOAq3P4+sPCxr2blD1+NeKi3NqWDx7VMJL2qcy8mCmLMn5jLfV2Po9lMoPOt0TYs/lL3RNDaJZM+LGWLDBfOsEb1Gp6YHN0Sh20daiBp/fRbPohLNr9WU9nBysQ7EJSdBgUNkP613DSGekJ/ysZYcl1q5hPvjAhus0XSvaaAUsIw66VzWqMbBQ3FMYKtsZB6cW3ZQAYFH17yZmMMnR6vb7MkhkXO0nc74EioXGJHLKhHg4BzelYyK0PU2MPDFsBthOSLxbi9iG/OVRvWtFsCo0S0Z2B1ScRWMLSiFmXm1hi58nd8lOCZJcLunLc2msFL/deRaIndJ0VovUxPiZYKNj8OjcY1x3p14yCro5jD5qiKm7ZFbm4e3F9FItMZFufCDPAZlLvTlXavc8dpRxL3eRJtkvWLVgi9jKSGXqYutJivJxTLpCdsUFWpOIlPMQBcws2Y/L9axYsbXFNjjB6LA754N9G2h6OrXRsWaMLBJaxa1x9u2qTFV1i//R2NpjbDwKG7KdKJliiIOpVaPP1Q5eoOIzpPqmP2LWYKfd6qW4WtToxpm53ntot+dSz6DO3ZGNv6ALs3quqNXFuWDQokwXUaJgiF3xDfVaBkQ/NTteSMpxHRp0FJQyuPcHxmq6w5DpSCiw2+LPwqJdq7LW7UE1mCSUeSk9ElHk/6wijEzsNXXGlhI11xppINQHE451PSmWIdDS4SfIP+zZYDjWkRl/9MwjoDHzwrrcjNdY6lnY6wBq3nXVDGVL0aqaBQzAyJmeF0QDbfFNO+66jo5exroy1vtrPLtDqx4IreRkQxYM+oHis8saeiOI0/sVahyBR4gWdDYxykzPGYXxfQAYoGEsQ4uleAtjpu8bUopbDaNz8G6vtbtwVP+zWg4Vo9bEmxHY+JWiQJg3zowCMu4+R49EnluTqMY34Toci4uNkzKEpgDfzHZrv2NV928UQ0U4YrQztqEVvcZhBf5/cAfr2SDyTHPRswzGqXtBUrnnbR4cacCiBTOXd3Ei7tRV2wVqvTd4xh9lHEZPjfXXfq6aeNx4mFM7F/uiSENtwYf11GLBSjLFK4c3aQwMYdscR9uJbdFZgUOp0fIbTi9FNuXxtK9lmoOK9Eg/31mEufsnIKli7aMLe6yC1BExBx9UXXrtCKBBYmvC2EWWhDLl9tdKxa+HrU9Y42U6HZFfjwdyKLERmD646Gu3AuhtaF0NIZW1NPsWqldQcphhn3lkaCOD2IWEpo6xlu782Cx6cO0o3+9R9DdWrrR2o2Fk81uu6Ct3ZhwbklCzUb380anaHXdKBlssAL3HYQx0An6spHdYcRrrVdNrQ90ahWwBzbZdoahw8q4kXdsRhwwdGeJl8Ywc7a1pcWuBRlwwtvm+K3lpbWGsYqmD77DujgRHSodrHRM4l2OuzXWjh34JdTq+VsA6G5e3XWjn+K0Qw7/ODc3O60jfR2uOWPPDo8gCvq+AD9f8AcKTxeHHIC1q52l/9OmjiGHUP37eFcFrunNPWwAQpV1F2a4WDWoBTr7ciloWCIigbYT8xk+kM5eBiqkjzTT66R1zmGcnPJ5OgbLVt4Y/N1txG+ODbj0ausyxc6gLcPzmDXzDZpnGe2Ebq1zDx7B9QrMPmmm/xsv4WO1xlaKOdLfZnn3T4iZWeMUGevxXWaVrEs3i3oDgtMymr/jG/gVkUIJ+Zn0d7/hOb/WRkQrJ26tZ1NNPu67c3S3jt3KyWBHZV8TA2k+UGbVv0a1RBZMgcYvW2IdZPWtY8w9AHpwcfgeH3g/R+rXLSg2YrZiWM64eA9PXkWGM2FopCtJnkS5HX8BjBwMK15ipMQD6PSjbWxq091y84aPtCJWGSQr9lnljyKR5BkkuJm9cTElHpuX3NRFg98+DODDtd4DobfVhXrDHCBG2IgLU+ISLGw4sbyisO0un0nYWTo3bxzO7eUsXcoz29aijihe33FG0qjw2Ba79UKppcAzclZXtjH6mbuDBqepXs08bqup8guGTnXBiNlQGwPnqO4ckHhwZDORzgDCJ6aE7x9ctmK8/RGVrr0IHUZv10MW+YPGF22oPbV17Y+hiqGeHqQ5rkTytwOmaUJ8fNaHZ/aNxuyI3sN4TDtzXmfcDDxtmM63On6HJtMy60pvDkbpmXWcdpxd0Sm6XWtIetlvzQHi5CuNL3mwotKQ0dxj0r4zWUdnPeZNzTIuhz0xy/oxVcoMBDcQ7bWqeJxObpwjDj1W6YvE0+vsg2mVb/d0ekWUStEhsrKay0r4e8cuE+8YtBE4Q+zSmVpXldpC+MnDasnpEIwi3pnVioMh2abEUnvnY29nZP5COcAJs9FRxuHj2dYb6/0IgW/+LfKnnIe0aka1kDVSRg7XfmPqkn2foYidtUjBpRENAtifpz3m7Wf0w1a8oNbxemIbT+95eBDF++w9YvVeiGINmGbyAMZGuACozGcuKO2LtadjtTwhtbTVRLNa7yatq2O0vrRkArb57loKF+cGvYtLfu51XGksUhKyGx77EN7SWcB9BHERFnS0zoH9dKV6v9tcS/kinX+q4mg8OrWymbZ/XttkMtjY7IsN4GDaIlsLiGLRduaf+MgkGEE7bNFoHwi5/oBjMgAWYI3NHzj03XwbreSt/zeNrHYCLjinzl5rBgNusGSTdDTHmnxlUq6nBC9o2rJo3IUVcEPGFo3BDCp8BWLTPZmQKKGCaGY8XghL1TWQWu8EKYXJHTshMeRlI4ikTOyXhfZbkVBw+hzrAd+qSkzb7pw5MD/G99nMtwS8uw4NYdn00u6TbrZ6vtNXT+dpDxcnmBW+YleEYyKzvrptEtMRacKnOQ1ibyyeCH+d0b+R5ADQuJoOo2GCZqjjzcxcIXPKRtWIwsh47bNVwGkUAmxVnDH2KFbAKiPouSYQqs7oBKSls5x5i9NOxV9AsklbmPZ6FKhDmduPDjbT7grMKa5ZWXd+huTwpV3MfYbXdzGj11Pcx3OY8iIceqN9zHNoMMraAeYoWNuD6ODzFuEdpLeooTFtVqlgMLi7EFNERRseY0gwbNOI+pI671PpOVxXRdYV2nUmcbS0Msv6T6YsD0e8GPZVEU+8yvhy09UgOmRd3m362FdYMWZLbR3Oi4Gyt0ZyVMeneZO7DNnhAWxngakAC7oeVDY86ltg8OGlpBxCerGqMHLLBs7HSDOGGx1irm5v9eLNsiz2+4Yy7NOpuYkPdGNq2GJrtE72DnuOmsQxsMbfEPUjbvAsqmBldI8f+oEIKCm4xncGScEKvCZerNoNR/pWqddmGIvHAELlIyLpLZoUQkURWY9VDnnvuXw24sRMrxx7+zOvLq+jwOPZ4RtVLBXk7er3vDszyA6TwswWWHw/TUJnZIObublmt5ncA9/Lz4ccAJgB7wzj7RGmuLZxQVBzWcmG329lPhcSHa4OixF2aCYhS0m8xZr7dz2lT5zOjaxkjTf+j8TIIYRbg2P7rnbDv+6VBYoBOmM81wHa9O9fvRsn9FQPmEbw/OZjhNOMm/MYlO2jcZ2pl5tDN7jGv6zLPkWneztzIPn9QXe7pPF3to6F2TDr8ECxam1/JC5tq3fQOzofTty+R29HBRpkaE3aC6ovc0emtMA30vlSZ0mJ6awdT5ycizLQhvOWxvlYLuNFN6aMQ8O/m+hzMNaGIt48egsAjT+gjey5cbD61RYBIFncWATrNwJFFMHsJLmNxjU1Rtgt0SMZdV1hLhTBQjYPrZ+zVgEVjjRYuOafZapu4/zVrrtN09YBOIPZGBiOLSNgGAmdsGUpsA9pDpA/QtgEgoMUc62z/XmAbs/wPJapM9XTBTMwjYBq43ROf72uD29B+uLGLzp7AO9+5L+9GL69z/WzejJeyJpIi3CBMBAtww6UZTYOIaaem09qKPIjHYNuJ0yaC7tTccS+EC4i+tnMBzUaYxqkK+RMqrHwhvWJyTzqnCtVNWwa7T7llXazTjELjNBta9LvGc5oV0KvjoU0NCzObwnQk+g1tw6WZLbs6+uJaTPbFuA42yk44zMlD63VvDqvmauSObrl1cTauaaTOkFuoF2ty530je6WTBgsL+o/Dy+Wa0KMec6DSjFLpjWkISwayL0QrmZW9Tanv/tx0EyJrc4FxJ/NeLWktZyINo9p0QT69XnIzUvpqPdXqMws87+1mpQPknTnQYlHAO1pYuo2rYk9nLa3Ye4GLjnL6Ri4tQet6kwEGaABsL5x/MpNZxoe/RYjHQ81ABmNbdEw0TSo1anYB9EOQmlqTaUEe990+9qP9Mmw2beXJMLt0iyBgaK/CW8W+FjcFxskQ3BcY/F9ArcODA96+mt53oRYv0dHOmR/DSqdpYBwD87LclY1W77LVUdlQ0y8pZAOsQUmtuDEZRhl6yT4aFhCgIG53DSNvo2WJo5ppW1b7eRIDcXmsm7SG2aQ4iDXaTtAvSAVjczoFrML14oudGpLFoak0zAYEI4imB6tn9VS3gjWQVv6Sv9w7BBLrVW/jEz3dO5kOtruBYWrC/Vkeoz1v4WqiDb+mr/LO9sbfx1f6m39FKedHYuTMS1Bz4CGjqioomV6LLBRpSUwpzHO30XdGcxQ12/vFXzv3YMmdftM2UrTABuX7R/6aons3+BOs7C8gSxXX1zFrZ0omWnlnfkhlJnXm14x38R32Tbo6uLpGyJ+2Zqn8Xb+9vdW3McAiO/xHS29vNSv5LOS2sxMNDZFMajfMuldDfiAV3aM18Z05CeAmTrdUu0UyC2WtrVLijaW/eI0lIVCcNFg5S+svQerN/JHmlbwMG6av9syKmr3tRK1k3p2SuaW+iMRB/gY4gupCCKwRYfXCeHaXA9edmj1cx+bGK9dB82UHzQzeuIb33jpICMji67wYtjERhSKlq5gKDb6mBOTNoLtiV2cS4q0Cw36389CVAUXy03MbcjCaqW9o9NJ9jeA0KgYxSifP2++IreEYExyEHobMcb3Weejf7xlViLHAFWe1uWhBE5DzYaBQxrbpvT1k1ak3de/VkGYwzboMhCuqGRHnXvkCVU321bJDcS0GAq3QEkZlOwn07k509JGQCIwzHuaII/nEveMxSOEnNTKdnxHm7f7busv5xqyXPvTjgA03wYtkDv3SCMXaZ+sEqLkmZ6B9CIGjzjGD9joqMeuBXL1lrhCYHaD9m9u29cbtT1+qWnwguXkmtv3dnJyDs1/G9pogPsUvGQV2ZM4tZZBoKDRXEReUxL2ZSvsUzeirrPitrvXQEXHyCtOhaoorFd2oG4LvDa+uips6gdtP0QSlKSWcatmtI6mKzdLJHuvYyrFr8B1asWQgdIeVpMhwrEg8ec3Oh/bnCbod3p1sGF7V0FCu2q7cNVk0HXgDFmIVgjRiltZYZml03FMaK71GImeH9YbmiLUwolYVTdA+SKU9DdQZ/0PTeHc79G+GWVLbFxpa1yW9FGGsjB64HQm6FuBJ2taEzslEp2+u9T/tjdfR41oAv0zqRP2pNnmgDXSOqaZ8l4vmfajDT1hb3S+Xpu3sFrmt4HVcNgFCxe6GZzcytW8fwmqxrk3WS+ZsOsKkhBXQz+8ItzzWcZLU8u/GGF7Cu/sa03tFZr+sfPGmLnDsOkVvQGtaM3c0IWeG4g4LrCt0oHoQRds/aYm7I52vngxc8G4wjE16BHLTv/kVIxNdEA/cRGx/HtG8jvrRysvpLMdAVuseUXR5n0u1h17qNNl3hYlzYRVn1s39P5JqtDL2X7gijZnnozsLGK+1vRBNC9C8UfZ2L8VpQgMQtRU7nR6Zu2uMkHFAV0m6OUvtSpLtVfzRS7YChZI2jUrBDMZ2zwAWFy+s+ghJr/Jpdk7u2wUbRh9rnmA9wiG2plzSYjaRpdJEeaHgIEptrUK/W5iNCX3BHQzOVcbDkzx6bDncqmmzgdPJhoaZxR+4Cat9oO4HPa1zlqOTVBbjB0ITYpx7QE2gC/X4aGkpCzeGKfmOcroP+2faZcl1bOWQI3c3pvw8wNdo+D0WMmFztZlEUII3yTZP1i28GeKDS8FuB02gsElUin36d79a4HmavzWTpoedZpRnofQPkrZi0SZYhpdouRyojPUOpUvRXiaUpN43uL3A7dnr6u3jxbeakYCWr8orsfuxo1fWZ5Jt0K6FUApFxqN7W9Y4hYC6oBaq9WANiM10FDrNQCK2mB/bM0oVwT0s464F0uoB41I0hnqTH2eeGV182FaA4wo6wdyCzfZ4td0VHW5w/eoxuIGmrX5Nedq1+jZQzY5kOsJwab7cMNaeVF3dYiIROwN3o4W1Et60j7ZqEZESzAXGimtUROF7Tfcxuj+xk6YSuCAT+LGYxhBpSUNXrpbJtZ8BWybTfzqLfSrd6MINEjGCJPIy2iRy3G04rl8Fp6DU9D9oa/KN3uZyStWE6fsvHhcQxOPNCFCDNNkuhJHQbdr/t2kXHChD6FWrwDfsJhM/SWO4rYtayBdR9GRvC/RzGXo+RNJu6DjTYSkjwa2qzrlmC1K2N0LbJ7vWKKOmbvj1GTaD/IYibkK11SjbmKcoZOpwzIZuszWLUIH6I8G7RSWnbhgUHWwbga2p8FRhWcrIePkaUxKY7vS1VjGxbXR70fZU0xAY2bskUx66bGcAX+QPtHrZOsmKhCwIwahvDQ14s4FksH6W8Mg9CNnTuNYiGcVsUkhWNtPXBhfyyyKY9iMJvWLwdUOnnzvTlKYiVsRl6QhLUl9tJWyxbqRK0or+pQwyAbqYWOUrbfo8qhhR8o2qsZpW3DiF1kCA+aTQw/StkpPUMraRu9z6xXNbNWulza0vrEZDNAv6pcAn1we9zW/TEPUswzOijTBNEbH40g9rM51oHRHgYzA2lb5xVCFM6M14mEqLPBltlG0MfbNjD29hL3zY57lhqLwgHu3tovhjfbQWtqY+z/drcANMXheaPO3vq09xcK7++idMe77nFsRob40+ibj8jroBDu7Q3XgBXUqkEvN1su2QhdWT1m0wyD/o6oN54Wq8nfgVkWBw0K7WuMxdmXknQqevXV3Yrrr90bNhbuDVb2gy4wnj5eOCtVG/ZvZNnjpyI0DZNUNUWGJAXelNj7h2jcZ6f8yeuWftB7lvgBxjHpLhisHR4tTU6jvWwLzqH9SsVSGJ7zLjtruowXfacIVPm2xajHjJiFcwpC5820+dBPp7ThBukIIqJYKt8URWjJjYbtgncwBparEMuMheQQsD9pEI2CFE08CJu20YjYyVhnAIJTZB8NlH2nd7NeodIKHF9pjeNg2WU6IgT9qnl3CHJrH0A5aQrdIf4XWC1nAZo4MkDWBUdONXlLTxPo5iaN7ehlxdIv3oo7Ugt4OjdLfeTJzUb2qgVHveYPd8+XepmrVTlmtzQoz5hiNDW8diDNzPqBm2YaYCZsBeWGCvIJYRu7y/YHM7MN92Qt9RZOpznRtJJvP07F+07bPkhsQKIe76GrtX2632fVmBrbezV8YFN01ey4sdYz5p6hX21ooe0ItWnJtHc3oAuN8M63Fd0WhLS44QelpG1zd5a5RYlxbDvVSwWe3QDNY4J9xDaUiIsP2uuczBZ4+fMJZ2SOQ+ZbttPyQLasTNy/usSQuh3umzRQn4VzCJDxGEQq8sbtuxmOZdnsXo6MZzM3QTiXy09oA2dGN2yqTVl9lWS1cSYDxdU46jKHRPLhA7XTRYNlkPhmjRY6ohohbTS85H/8hw6ltdZAIfZaNmb6S20vMRxwLMLhltk385pJ7i9Fm2/dYXbg0kPXrpL914iGB1gpA2OyuLxcEbUcvB+w/g5eOsL53vAauW1d82NrgsvcasQwr3HiO8q9xFojGvcU2d2884Dn0G9xYZ9VZtqYmxb3H8P9gLa7e4k4OtnwLwr4TiMfmRIWbF5usJA17L6IZiEtxaQLL+BoSoI4qYSnsbPRzKzPeRucnXxpEMNlWumNedM7Rhunw9sZ4V8/mWClnf2Bg3T2NF6Sa1Veu+RXY4frS3Xg3Y8pdo1WQvTY4xqoqyN9oLcs8rGpyzAEVqJJ3Z/6Pxiu9eog9Xlvmd4w3/YJSM9WOUkLH5xntYxLvqRvCPQuC+tblxmVZ0h/oZ2dDL2/BA0Xmq5/TYlqSCNwuGGznUDlgViIYSazh1IQW4L7NtkYSoKwZG6sdS8W7G7NBrmNvQVE4VYNW9xzcDCk8a86y/gZEJCPpeCL7GQxsCQzbvq1B9fL6zMzNavjwfQfxYKJC8s2Z6ZUp4XwGPCGECnkDoeNV7NwYbrUzJ7bMoC3sRMcvb82uH/ROUG0C1lwmstdfTEe2CP3a5YCsikm5ntI8PnLUy7oEDRMNPmnAoz9ej/fR4FEleMxTmnwoqPmkOI2OK4IsCuUGHHfbCprQ4wA7a5atGQuarw8EUfEFw6cG07sTjWAGbc7UY/fwwK5/CjjGGXGI/mFkp1xUFC2mioze/041T2umo02GHgMMw3+LO3aiJrNwICJEo30x6huYPJLhmG3QmHant8Ed+nto3h2l1PVLPpJeCmaGElnfwpgCsIpB6b45lja9hzF5cWGS3EjagpC3zmy+3NrhrEcMLBZ68MA+WC0rD4nC9gJPyhNl8ECBkVgvIRqzjyxXqyftSJBr5PVrmtKbQCkGdq0rhmJpDab4TH7UeVqfb1c9Osn9drWsXVx1HqEAdOm2rgnLZOqiO3RI56odQI6pEnbX0VsWJ6P6Fi1jI69IzY6Rt+kMUDYqJjfo+mlXP5YZkQw4Q72GdBPWa8nF8nh+I21hbJsix6hJS3CKnvKHUWIpZ9sABRcRTHsWu57SlnFkUju5GkiIuQpocR2yFGpP9qN6nAArMcUTLxTPHqB00zxFObDM8WKeKU5F4zM7XG5YHEnhv8sMhtrqPNI6uMntXqPlQ0KQ0aTNDbtx/qvDCJvei3JNb2fd6tG6YIjaup+vWWL4/102hB8WPe6kmbuJwtjRGifeauCw2VxsVp0fHqBwjmBOZPDU1vr850nFH9fC9n2nrQwdOpMwIM5qnKtD32WcDCoFhEBzVkacVctCGOLQ1H8t4ULU1bJBcXr2Ftg7CyPRo3O1beN1W9eLXrebNrq+3Lp4CRMzLmPDo79fmr2T0SbJStmwx91vBfAVXk0s6YxPM5/WlKfKQYQ8YmJcZ8d0076vDhbEzlXLXioZPb85bmq5tdV7j3mxGVb2wNaB6ojnJN2vvP2Tvqc8iG7GLQ7IAZr9o2p46yh957e8pvf4oUJMw1rJDINcQG0ndEFUR6fw/w7R8ibXmWlg9CWvTqKNGbiks7uWQ2PMbZmiqJS27vOs3KBSedL8fn7+1yvEciCP8OkjHbz4buPVFO6u4cLVhWj9UhtszXz97r7O1zKOzTtbZVkHnxM9bAtNLfuykvT+8CMC2Fbr+3MyGmjGwu34Zhby6zaxACaE+moHMxPlJYLcMZte1JTBYNI9PniYjxS25Jc1o3WVE/dwdndy0b65Ct9qiehSDL90fysxflHYHCZyhbbNIP2uK3SThYx68kZ6WffUllit3QN7qzt1KK+qsDKOEagJ1lNraoNnmx9pdWFXuwo0RlGdfd4BarKzPfHsgvTUEZ0q0/LWmNAuMWhtXTE1oBDMyZaBBQiGWgIE3fu7j4DtbGf8tRIFrjs0zL477tK3aK7tQw+igZ0PAb7J9FMhdOjDUDt1PSahatLdk2u2njHQxpxsyIL4aid3c2BGYtbKGLU1znwX59HI+Dg9b6OoxWKwYZy/cyPGz3zbk8acCPRP46a8y9x+Tg9uIWzixO35tkk0jWZVony5sDN3gwbTHjgBhziYk4xqQRwfHz7Y9iI6Ta9E0TnRrTvAY+cMnoWnSY7z0TWJ26cGJl8V2B/HzXlUVvSODF4Sntjkxp9Q+KFi6+whboBZ8UVaViY18tqM31d04qy00Qu7MjACLpiZ3i4b/mMnd6X2DEsxhTwxeTEepsGleCQImbcXd0LRQEup1TLhQqbTJYVXXwYEbWzcc+GrQXacbqz9xzR4CGjH26sLtY11lec3U4YM30Afu1+rOQRIN0wsoZnZNcZ2wZ3I8oZWNxY9EjJirg2vy9GXtpKvS2hEC4Dqj6Zx9SROnzmzqzrgXtrB+N/zE3DjN61FdZO1suIWPDvIetlMrRDoaSQ8v/uDDtAv/r/gzrlFMl0Cbx6ffaxrr/cyBjFyK8/Nej5IiCoY2HRiuG5K803Rlzwr71pQUwvZH8WdJIOiT7Up2gOA2KRGXVCqqmh8o5x4chk3ivHgDwpbGq7PBUpgj+xUkZgUNUkmc/wj0Jrdf2W26mc13oe164+Pbo2LRzVES2D9GRoWdYq8uuyK4tF058wSR52wwy/j1iI6T7hlCR7BGltSDeqhp3iKaMhjjYyOxHGNkd+bVdc7VjDZrhAyneJsUAWWnvF53MVlaLDA/wzo68MjfabtNwAe5ItL34cJ/1cQbu1NjayE8o9GFlvcIhnzjysKyeoq9XlMU4b1igYN5ML223kPdu8RAX3ZvovH0GOR4ioj6LsOf1IR5+Fdj7yGbIqe8YxqVlsGW68f66YVomDXoV3yuhHKds6T2CT9JO9vXVzHtKcq01GhHZwjgFl2cMGJHA9CQZR4GPL14WCcweDHdaNyLW6VHYK0SkCOGtErSd+oRkHTXn4QvkwTZE4714mGL57S2OtC93SVG3V4M2RTSPXB+jlA1cUGFsskchENg9M5huMLbNpt30uOB9orTo7ryMKHc6C9jz2Gz2FUufBUA06yZ/8NLR6c6YrrYSKGF/jp9acae2KLDHNmkOq2on5y1NPDeoqjLTOu4n2dPoiSNahOgqnSa+g8MycVaWmswPWcPDKQod3bQmHZFw9d6mLSIzxOqhvVB/ZhodRZxBMDHaZodgxw+ZM+s5aGAy9CC0cNfzVLFMlMpIWBKbJR8aJwOFVGQ6CfCGBcrJovhjg1ItbbwNg72fATLFFmbFyLrKF2dxruQXDQJziATwOnqFJ9WbG7PjPacoda3TtZzG0MOaJyo+e4bpvQRwZZPMfORF8/Kgjg3EKA84OCNGROipg65djBHTdnbxPdGBGwww7DOsX3z7vBPHk/6+iio6vzhJpxV2HKi0YeaEzrSiurX7XaxZIIDnsxjEtRBuk6aPqPrgl1K/OiGHOb2rfIMlvHee0jX+mn/D27l/cIqfEGscqnxFzrGcZmOS3kRbOTDOm6gLrUAwexmz7Da55sa3W5WbWXZtdUxESF790wbh2VjQvtvmMOVMGv91v9GaW46DsUVP1KTpe6tqpmtKAoXZnjILTlFaOsOGhhI9aNxrsy2HCGeYMSiW3vA4ZRvPoyWHZh3tH6mlz4pCVsXeNYmaYK0vdmwzjGI+rPG3WvpAKdIWOCoIgOBs1h3wLq+vdOdSYkrNf2sbQw7ZrjysIwuVkwhzwEmPy8tofkNtA64sTMGjgb4Ox85w+DHJ6vHXY8nt9CIfpbTXD8Za/RPa6PosX0GA4vbCte6MfdTJrjPcxTlZysjwshbJbdZUZErSDvpNciVehkePP2nl3E2ZybFXDXemeA/Hy2mhY0QKZDhioymEK9el8cc+LHZqe4DpD+kkLdX2jLEIp9bUTsQeazHrT3wXsKxGM4Um1vo2cULeDmp96x5gFPL87S+yOTVp4Z/bTNrEghCgpWf3NGCWuc73hlLxa0yjGUqzVyBg50PRqFTV94XxyuMdHVmma0t+b8nsrrWBldbYem2SMCdZU2d3hawkjEEZqSq19T7endWr6m3Ikfuj4mO2Vo3TjcxGMldJQMVoy3t9FbjNX6+Wm40l4e5yyMS5TDj7XxvnI/IduyCJwA4MC0Q8Wlygj5buq1zP1qIqdqOOonfHpwcqbSFrrNldNHhhUDIdBqC+Lzt7fDjg3xDb40N8Rc61pf75FMthmiCLDt4Vxmyarrue0WC2WgvPIIaAkMtXp5B8Gru1cHe++vW4z//q1vjhX+Zmgv/nhVMzAgbBWiemObx9YJ0YRHS/jpIHjEd6Lw9cqLokFntrLrj9d3hdu7dgpqV60CiE9G8SIGLm3OKYUaNzR7Frp0JG62BTbU4cP2Pt1b8u0ED6zCDXN5mWn0xGFpBCFtef4nDhfuEQzDN6F79goRUKrMiWmK+O3l6gn9Y5eecQ0tuoqfwY+YUdMqnR3TtGp0c/1w7tqhJ0mm6LDtIjFiX6ycCZG8iGJOnmQxBFhmwzwy66uCsqxardG/RgYZ2G87f+M59aWgAql/te6MKqYTNi9fO+nrc4ZglLRt5bQL83gOcxtdlDpgAwHtrq2diO25EnfFBur6y5jEwHD57hwgPWovi5ozBQbFgiNC6+X/aGMae11cUFh69vHRzbwcFWr3H0Di5lRNel6cgoj2LoKwxlyFGfiDg2Rn42uxnzbQ5H5K30BjhyTo4QHrTaK9hG/7jKoqa19EAjja4xMzpEfiltahlHba3nB1wsoEPEDm+Wr/Izx4YdGOMjFbWiV06gYtJX0RtpxPVY4fisOy05bTjkSyew2q78cD6R2WlPXjJv9AzXz7Vxi7C2ev9O37nRqReN7OQiDZhw2fBdbpdC0JX6PgivfaIA9EkYL1MMV3HhfDMqmNH4844UXGLgQYh0CVnWcSwpirqx+MkjEy7COPxrCBDIvr3Yx4/HnV4GjajIggT8exXWbr7CfiS+u1KDWK7pbOL/6YIIMnpBz3DGT8TY6Iv7oMjNTjhXz/ZT8S46MyqZqfiwkRh2vBoulaq1nC49CCd/+EiHI4XlXsKOF7Sg9NvxiWgqq+jkRxAzHR9DSBa6BIkaEddJzxHqfV1eDh9Fggm8b12Unto8yM+xRIzdWiluXrTfX48qtVzaiUw0i4fQd3IEHsCiBthSzvCFVr6mLFrEXosIKxprqMjplvWM55GeyNYo2+W9Rj/la/ST15MwcNARVow3zpo83WXeZTE8uL2e7jR6MeiqOOaFZXtrCRcAQtz8V0txhcb8FNMdOUZ7F2cal013s5ZBcIY6hDwzXRsIMyUAY+IC5ExGHdQ/KJPCzeS4bWD3ZyMfdYfRteVzKHrxBsWx68otRavseSIGVpllMry6ngQsBDlc02gQ4Nz5ONWw8HCJUVkDwWm58St35OmNJdEFjFYLjGG3qDyDxvhI+H3i7lFuSHPilW0GYN9JSBluMx1W6JRjCEO/z3UV3mO82saEtNikxheSdYO7jvjzcDZtMMX1aFXI3jlt0+JLjrBODafxfa/Gb1vk0K2FpE8D/G2SDPLR2rjQPzQbvHjXQm9LfZFBiucOv7owgtYtm5244jtqOLWKg5cRNc8orNTLb4XjHUl26tC0/yR9t9XWDrEkKUnoht83o27kY3iTlekIT/pAX1+Y2uE9alJrByIZf4Lr9DOGRaY0GfoBQ27XE4S0fFBRXDYv8Xo41UibU10PfxdntM/rqDMyOIHXvifaxLro1A5n57XWQapP8HEW9bnJAui+B3ZQ7YuNVVGX1pbi7odaLSdbHWjGYO+FHIuem2/TyYG1HDsJuMQXb/um0/1ARZFsjahamMdQYdkrdwqOGCZtU+O619LPWjE0PutEUoclC6+6zO53mpwwzzYJhMsOOrOvNgOsKbTidG/QNr3xZrdQkXiPJ2KPqURCjmhdAI/4NiVILUIE4aMSo62j4yWAbrR0X9ajXCAuhWqjBY1jL/xQcaJpN90uBjnSRpk7IM/DbdBNiyObVtF3boEWJwWZjNckZh2e9B9VjxdxSLYNjNbR2fw9Uu9gA3RWK5lftt1WPIDOl0bwGIc8AZsMps+Bb9H+uoYtwo7qePDE1+xkY3O3mOaKVXaDnN4Hh9+zc88UfK3/+7I/ia9+g4/fE9olsIRBY3AdDdeVr9XZ0TfXQUq5tsje/Bm+pXZYYCT1FjHX6tEAJZB4rj0U2f1gAnHG8FNxXUPSA9qpAKSZ5UL9EB2gVtAjZm/eKj7oxmD6VeKE9RSXnOHRZFFfT8gjBu/naTTjMs0TD5xe9nGe6EHE1Ws2HQUOaeEMUQRmUXN6ttvSNWTbJS0Sg6SozE0RkOAyoA6dfjpdur+wnVQdKOJRXp55i50m/oLAbPohpzdyGp/0PTWow/L6vk8eUHnqM7tZkmyMo1EBudAz0F4qq0UBu3ldMYLlBPVLKEKATNB2KE9YU7BrQy7LKmTt4R6Rm/NRbsQ7SA0b6B9ti2qdTWY9mQI0l0YMN1aD6kHA1sNt5g0e9aIN1Rp+LFHZbsS+yzFUY/V1qIW8bDSBuqde25T7al14EhUDonUIY3zS+fHj51bGOWHDKdhiOYJGe4XvC3b6XTdfL+pLzSGTp7AtrEmxwLK62gZELURaYlNCBaMG9WaJld/3UrpyJ0s4WJBwmvdiH01Av4BwMOd++RfLGMRMD1lHYfzdF7ONIgmyuk63RfWFd60VWxmIDCp2hKaL21KX+jqPu4itP0XhAfXcj7Dkd3I+Wn3OqgbqVxjZYoNs23xoXonb0Yf6w3sFRs9EdRaUpe4CXXt3kcEum0iom2YzDBOqtQI447MSDr3x7eYuKdp2g2gAZ0O1D9xbb3IK5veIyJeE3oDlb66l3cF8SFTykBZnbDewRKMrLsngaJyRdbil8osmF//WJUelByvubfN0cT6OAzSfhr/bVFFrypcMF+534nRgAP7X4KaZTjpsoPyTCgPv+H1Qg6cjN8RhTnIl62rlw3N1ZvvJLm6ibvTd+nnzWHVCOUsJgRbCAuC+rNyxjubeydfWR4cjdyBugA10mFClidKhLSIrZofEw1wG5EOiVZagy/Z9Jgk9w3Tb2vC7kB1ZwrlVtcgM0OGI6NIE6h8PAR9pp30Z1Fy+NV0W129WxkmpMN2sHgxMP0hfHg4DBo28zNrH/51nmR6qQnnVglXTtfos8CKxhctHVjpsAoAtAkK2dwYmy5TOWzgg1370SbPC19+RkbcR8Y+WMZy4Hgj3QJMIQk4Lh9iNikYe81mz6MlLHgEc4cNDZp6tCoZ+nhXZUViTQOVFZvKsDiGLAIjBurlq3F27oDcOnBhqtagXujoKy6YVgsCBG/Etd2FmnQzsPZGr1eymirdQzhvK4zWBZjRc99y397cNYW7wM1qYP4i5fabKgvXNvOw2Y9oONshHhMiI64DozaMINjXfiaVRziI5qZssL3gTqR+NHo601PTK0f+42FTFdHVESBBdtQ6MVKrRx15HD03/mqm9Ad4LVQy0PZxqMqD+DL4ygGKRCxKnphrtSXmvFXMAhhfW3K7YPvcDdm/13Bv5iuoMD+7CKisx6t/XIdViLMLlqao0ici6HBnedtrwIzJHFO3c4YWLFojBIcdI3PraE1sZxhBkwgqltrcJVLrX7ClqW8qvI8MW6NzTVq3IjMxhJ/tY6RpwABYtGHQNmYerU7MezgGBIZ67Bt0wL68K9WltmMFzDAk1t0IwJyEExSWtGBPTtEaWjwJxSoNPzXsJOPIRGDE8Z4GBztAaZlY22g466xcHCWMG7AoPgTSxqNrxSMOnh6zHC3dovi0sbH1gTnHx2+jIbWqb8JjH5/W8Zf66TDUArimi0WSYr4NfMhvHLU0Lg9aNAvGY/sz9axX/GGZrcOMQTqDL9I+GB1onuwcfySGZSDR1fF6S2jCXzi531JMaz9cw0OV/wsVemP/XiYbK3jvl+OHPejli6ML3Xqbesuz61ZwgTVusP1wrF2/dOTGK2LOluj4Uzoqakstc3WfYI4qrkeMKFGE7oM5feErfavTvGW0sL6EZjsEGhdgiV8eibQ/5YcSkyOmcC/VD0fcbSbYYtI9o8mhajHMCbULxtVF1u1IJhsQrVujk5LUSbH2Njiyx0HLF99oHU2jOH4Jsj+BrQAhy+kvg2Q8GLIt43mu1rfawXKWPUEb8nC/9merIro2L69wa5LPD1ZTaUD4sUJrA+LGrav30EHxhpfZdRsRMKCtHEO80HxzoEiEti2t2yQbPpcyxG/qwncOl/eJleGXHdr3mOprFTTt/+32UZEb1Ut6a83eD5iC8x0OaF3cuqOsrGMK1o2b0KOayeNYJOJbTWifhBzViYbFEshFezxJSdUVyB0bnEZnDseMebo6i5ksqMJ/q7GMLC25Zwmhegt3yLGHGZ9zb2MrzOcpginRrMaMfs4BG/AzIoLp9Axy2bC7joxhHEpCXvn94KmaYliME4uOB7AWjrpzTfR5T5d586TUEm20fxHRnvpsjCCMGbXNfbmj7ELSlJer8XrhTiLN64dS4I+uEiuDBTGRQdUUPqUC2UdEZQTDc+/34+ZthdxlVt6X7CV5u8DFax8ZEzx3/qVi0Ro6zxbZ4QeJuJxtHhZNnu+dsgohujOyP6+4hY8rSx+VjCyJiy0HL+6Ux1/TmmcnEN5iOrSfq6wzN2tGt//GmCcoiJSBaXmiHrxmTDPksRbP3FyawCs+u6RGPJ7fko6z/RYglMCoJnGDKWLlzfTPR6E7sTdaup9aVDqOz2XdpqTDkBxk3HAyMbEVzff65jCgIJk348hEfQCKXMEKPiPGB7Z7N1llqo34BHFoDl/hCKtGGCXIr1Nu5QfciC+JSQssfrKfSnXbZu8r/2WcDTZpjJ70hYartdgSh0ktEO0Y2LTtoFUAiryeen/MFPqAIMldZ00N5fRVhnNrdr0SwQUauXcMOm4LfcModnZ3od71gc5r+YcLSr4Q9ePD+YEX06vaLsw+SLl4P2Gv5YyNIyOWoEoR4SecxQgkr69NfGtpg1jUqFp2kwaEltyvBoTwpSRoCrQhOHlqdoAxyCrXM+rREzwXb/tcS3KnCLYzusg/RYZ5D3MW++GkwnPOs2w0gNoWwSY1S2rA6sYeC9xs5HMAjHYJ/lbdKCQQT04BFPjDDOR7sEuUYV+eM7rJBf0oNG0gQjtmt051HWFKYNag+Lc3ZBevIbSTdEPTNfXOEp7XW+tx6RCMYp/N8UeZJ7fpVoKDx4Hr3htMTa8AbQ+emz330NahN1H4OQ/orkpj5eLM5oTfij1h8w3CZgXeRzAvrK2N0ARekbdQofLMPnHEIKcfrhqYHZhJt1g0vpa8TCK/OCQzGtboVbRs1YfY9o3GQL9MrrgnRwpxFvWks2xV0I1R9gKzxqfrr78S2GEuZc3ptO/w0dY56cX8xC4TOQEfq3QZN5awNu7aUxXV9hqtHQ4xZrd8t0hfUwy4esbryGmFPTdLuaHGjcaYW5+3ID61osYuGkmzGtusd11RZZP2NjWmt+4mjmiInQR2b7K9IRmG0w7FOhK11Nnw77ClY6KULA6YWJHWEfFcB9MjhZ0whK8fmwzlSYB21Ol+vQtJHrvdMKfdGPTCL4hDmtFLbioCIaLoDeMUU6VHwlFOid1wEJZ/TCvw2nldE23jSwx1PHMG0PqSBR9FTPqeXTrta/DMYZhSCdQnRpAgxh37Ycjc4JDqYttNqumNStrxesGr6mm9ZgBsgMLxmEryt0GeVSzOs4cTMIx8aW10yZhP1dZjMU0oypmEib0VZGE3TUP8Qi6xa47iXM2ZamPfVmYVmLT3e5M/sqGh2zPfV2kAA28eHV8tckmrIIlIRiWZxmZ4aOjcfu/dZSC/pg0OtAnGgi++hXwEmXuvgrTY84Iq9l3u2bDV/Eb990NVYHL0UdxmL9HiYUn90ijGVx1H+a5G3e8Rj8bUZ7qu/dcix/SEqlnkJr0kPHmr0pXB0kYt5UfiUL2Jbizcc0WcJ7fZCcRoNpEZ7ztvihIkI1InvdMwyvbMzMtaxwJDFMpoiw0iTYa1NBPGBB/VlJpqL1F1pw118MuGXfGBUeY3WO2aZvdiERZfo8WYfGBxdbqzcC7ZhmuvPD8c0Mx5XG9oMP76bswixZrSfSS1GM5cohelDjAuxseSwGyadB1wbmQRAwIEbMPU4TG/21w5h1wrB0Jrq+LREEGrD1qO8cwlxoZWz3gFreFdNE6gtImsrmQ6MTwZquj9s6I7tAKsZqYy4Sa7B1ZXhn2tJDkdCP22OHZR9BUJlcw7glrRq1H/oXXtsZasN/dz2mpg1sNbOOMT3+bcwhPnr1Q2o+HsUMisGFo3Df8c3E1WrHeF0DguSzjDe5kSfW89rjzD5ZGk8w7xCTPMLemF7sNl/Rj9TZ/0QKmwB7YVgSAxx+B7PqZpvMJTz6re0+KWcv7OobqJC2haFHzCADuKjZISZuz52eHqGEsPpGthnR0MXY0zbU6l/ciixaVXUvOkpfxMo5dvtVcxWhTa03ibaPWIbiFDEDaIqzFFhsFrTTtoOeASx6kQzEphkJGLUvGIfjuFeqCTS2sZTS1utY5dsED6mcLYvRp4XUlA62N190GTCjM8fiJ0yITYSOMzW6sAQ6+hm18O4QnD6c+rhxdA6H8Y3k2XYEEp8Sw6ATY2ihrIEIq3q1PDKhaordfZxnHTy717z/CG8o5anQnpu8CzCIa0Iia1GyGrJA0ZYHRzvYs80hAJ1N9JLsewvROw7Ey9Lg6eCzQm2jrPl68H/xiFAJN3wpQCe3gPgk53widbeTywhTtukmL3Q5n+9YQR1PrBBDpnzWf07J50zI6PtYmA+gNXx4brq2MOrOh19eqRvgwNkEZVvi2rhv9tLStsQGynKH2/jtrxyFY/RQdfHS/cb7gMLlahk3A/DoC2xYXoq2tg2mQDLECRvPwKGk6JJ0rCer+DWXTlcmypcEoDt2EujgHfSxoPMJc/H1H0PDaS6EmFxsCBMoiHdVD5BBB+QgrBpanxRTqogddhRpFtZp7ga+xf/F/md2YxOZtGV5rqV3Q0beQDabaR0nFGNraW0tC6AWMP9G+SdRnIcYAyXSFp6deMJ7l/dYFixrSOUHpzD/zaJQozGcf8t2z4Z8IjfD6F7wzpRqn2087GxyNoAGpSonuusfV3Hrr7wsP9Gh8DFYMQF5yx3Z2zdRkGf+9RwAdr/wlYF7ejfrahV9cCXsCfXDlZmYSY1SJmEtDwR+2xvVojzD1dhRKfIz8dp7UaQn+RcSAJ9L/DxrvgiLn7bf80jL6RRzfvXrZl00+Yn9su7m3ndfxut2hPSbZDncbze/poxd+hPnVlkFqu1raWp0dFawe3kJlR5fEiCZ2ws40eqPtqJEVpKVNIeG/U9HD2lA7yLcZgs9QqBb7NTsgZFv20gYnUifI6QhnELNsnYyS7YVV9yRWLhbCTruMFykpG6fMbDhgj/dTTlgmL9xZrACC2+RdA3DwZZ8yXFrygMLC6q2rUnZsuXycBalP0t4JJAE6q9hk+Nx/H1H18fxjrzWkFrgryUJImvjVtOqwtGsEXFnSEDoRx0G32cNzTRCR8PxjMFJXCQ3aar/W/hnF1xNdrc28y/BDmdbwJn5nSaYYZh00XWb/jBwekd/U2zpky0k4RAp/WutvUf0v9a8lix2eHnI1gwb0+P1H6AZ01MJCULDv0YUlxy+4hFDjiuKdvaZ8aPG3z96ev1DlavPIsqBsqLW1tHOjctZaWCHUCFq6F2Ne6v4NrMJEHZYdntL0CNmFMZ8a3BOaQ4QCULg3G0GYu0kC6Z/4xHelE3WJfGdtcLn2BugxWuuWvTP9GYoMw2esp7C51nCK1cr6nvs2za7r9cUFp7I1qwZbZCILxw9fXPNm0UMUNrdF0mcxY0Q/nCYNZ1TR7Ni0IG6d3zaCBkXD0Apa47DOzaOcojoplSJw4+ZKoMNFm3DmRLlnOUJ0B6cT1wRRuRQjcEVOq3/Y5bgdO4mHM7EH0SIwzTsZjC9NNa1GEpeQVXWx5MYFZtKMW9SPZrembhPAzEduiUR+LtdR/0SUrXwwkkHCBBaoIEpqCUj6V9Qn9Dci+6U19FvRmcZx8fpR0MvI2U25AguqW9zPbbf78arh1MZSR3gb6OhIYwasOla1u/BAqF2VwwiY/0N5YGMmDGx2jyvXX/pdYTI5Gxw7MxJkMA2FHG/wsBV6mvDS7xntfVdfrjYMwROt/NYX1t1t2MAmwFMPX6gzwob4bJ+345Yb688dBXhDFO0SqXS85HGVc1fRSEfThpqaR0N37W0duPe+8jNQJrafVBIEe495m2ty7YE8uMCMrSac0cXXOnzYs4euuyTO/HC7NiRhJefC2Me782MVH+n8AjhtQ/CiBkGSQsCbHg8/9+oQ7a9ZmWszeDYYd8HA6aZ9RslgQE3F97C5RFuOmRDLRQRZ6Mlm5d+N7+agIHVVWsotxnUZZB1QgmIC/DQgcxg0tT4bpDWX+96EgGPuXa3DlrPoSoHRBRTZWxoNZ0Cm6foS6Dxn34yM+r+hIBwk2/iW3GstHAAQf0BMoI6ib0FF2QJLA3cZLRwgwnes0oMJKRbVC5q36PsHYkHC9/eqCdJMWvIIK3O7DTMjDh+zLYSQW3XXGl7zjc8hOxbzAf0dpnQqE7PxD7zRLwdKR0Tl3RaREeH0Zvhvw4oP2oX+NUuGkTse1+rjoptxsFk1UuE6A9GJe/PtXIoWu+JnqEMvCu06q8QoF+ivI2Qtbs7CjH6V8TemLs0m0Yk60McGNB/do1wuq2UPiPpbmjmk2+9zWf8YIxw9B4v89OqG+uE1v8XtCMeAF7QjDdhgLrJPARbhPN9pVASkHuGjHBzgY862NMG2p0lyGLz4kj3jcw3yIa1X1T6mMvPRtFuf+JEAmisdSMJQe9QpHrBvR9ZZIW1tQ2bBEoGDoiBPCfGmnCnr+rjo9NOsFkzP/oCEStMGH1ff7sf6bXzWbrOD0GG5mErEtnBfR1Dome1ClBEgLdMunDiJwn4b6NarGsOEgnCfNhMJdHu/NPY6lC7bIcUPO0cfH5lt5q6OvrYhEeuH3bU5dWsTpBEbjDuEcCYJkt73T0R82mbNRf5lbII5CYH2N1Y+xFgqtOr2Q3lDZa2snwme/rQtlokY3dhFQCNIoxHeEuhNolSzBWaV0829Bzenevdrttwm2GsjjrUOWZbRU/vVhNQYE8pjq++DNHTGllSqzawnRFcOsJuiorrCVKfR6wmYT0vmGUrrd9HuaEKbG6ChsS2mwBrSOxlSAPcUZRJDqtWvr7QhRnaBOHpFCOMxzBRT49+IX7I1BwlHkN4bu097XqWi54Lwo47BsrNm69LGoBoxrQEzptW9frRB1zZ4tkrxxYXZf49CBhIjLVggSRn3FbZwK1YDhxHrb7jngazI8FeBih82TdzEqZhHizo86lgDXrOpfzNEhjowwDlq2c1HsJNAnL9BrcfTT5pvYTcyxtmXdc1rhAJHvGCBMVZxVyghAibBc1iAmR814gJf7ZF9FpMnRBwmT4Cdw6OqdRtfkkfQfsYwTs1bWrcDGCHv4kKc7HY81s7mtWDNU8czHWaLqz0c1omwNwqK2nSnWCv62xC/LOfaQozUsqgLytoReM1OWs1wpf2sBSyG5rxASxUm8zQuejjl/Tno7twNOlGADdCb0YHTwCwbXB1Q7ehIvcvISu8J7nwUo98vhT/owNetrg3/ebWp1Bou1EEhu5lyO1A+Z5Y8uJBQZJdzjqlgzoPbI90NIhJKvdwNr4kN9/rokN+LOQv/PDWpFRz6e72mt/dmYgAlLHi3/xSx73mtgtm3SnTMiYBexBob/1tmUmR9zHlhmV+MkwZzlivJuSCdKVjlAkIgb5MESi6ytNtf8TswA0Ru4QYccJx4L4g+eqtwxGHrs1shIeJKPWyeiSjw+J5jQMQDhoq43/NvWdyxwmN09D9WUGQ/Cxg0iKnzHNYsNpeVT9X7Vq4RJVFbECN51aKRbCECQRhPdJ4r6M93uKMXHwWsSGJTeEXaMHiJHg7HPXqXqwN1aX50B1WQvo1yJo962BHrp6dGdusn7VPJqdownVFm1jk4Wu8omtegCQzLa45f1ajeutbZBru37TF+FPh0aPmR0LE5sVdzTLd5wgDurR0rta+IbuXVFNb9ONmu6BFLSiriZ/xhB5jkMmxW5DYirQRyIINP7Y4j15xM3TEoATDqMRa797COZBgTDIhVkwKMLa5ls8sySsW3F1UY2GL0vGB9C7uObig75hrBl3EfpKPdYoG7oEpRNn+w2jTorwTlJhAB9f4HnLeM2cFMHtS02z9IzR4dny2uqYmTC4kJLGAsaBsKMLs9pFisVzWkQTXX/tMv3mgFu7igQ+Sn/ShERxCy6RFqisep0mYw+RwSEgx28FNQSkSW6dQ2lvss8xwXr4lNg0xEgI101rrzRk/YyAjOEKvZjZgnsmfWCtpGiMWyual3Gu4bFa3FmFjlDPdxOupAiFijC1/oasZ9b9GwwfWzCTOl1vaFz4Zqzh33HEJHij/zAn7KsjkGulfw9FctX8KzrGNJiDMGXPtNT9gAYzHzYWpcsFGNEYv8hrCnwgB64kiVNafQDWY9lWw2gfFat9mS6S1bKLOhhbz8GYQy8lJOdwowjsSOOMkq5J6MzDB6dQldmjFnQMVHKIs3q+MB7YhJhKrW0mFlqjYwOM8DFAEcxT2t+EW80VFxnAzeWegufxXgkRmdvxh1PrZ/7ianUfImjviFl2I1EpO0SNRLGbrUIjXUynVEvnYZi8z53pwATx0IID3Wg1qVMLbQ7GQjMZy5QPLZBio3ROEH8uNJ26rk3SeFhxKNN64c6Nfgex/XQHrksxxhP5eCNPsGrLzXhBnnuJF5Fpe9d9655XeTXhVNwumSr380v6xaooz+vUcOpBHb31VUBjeJHJAY5bVl+aUKc34Oz8DNCiCRRNlR72RN3++mItEYNgCPWBaYEjcF7GrBdQJ7j2aK2+Y+Vsd7R9ODHhWipP1mP7vIdmG2ueLeQ4X3hKbuZMhCXphUCEmz3t9MzIl46ItT2GE0tYb+mKI2IEZZENFwOFqrZPhmGa25Qna7CIgKEirGyrlsLVztpAhMU62ab3b3ceU+MeVqr0MozanG/QMMe9/24+4M0MTM2N2taWWqlLTNdG7BjavGmIDUiYYzvTgI6+c1IZRNNQgkOlYM1WuYmZsVhWRiE4yMXcHShQnzjd4yu/HtawEazTy5HH9MdckOdB7K8hqCaKs66bCsHfOg/GOg9iE7ydY7y6NJ0mwrPDJIQPhxKea+JCRiOWJDXXTj3/UqnG129bYh5yLPuJsfMJEx67HCtCB8sQyf5jTa07wZ1AiLlhbsI6rbgB2zNPYy1dKi6mWwijtij/0polTOj+iGC1EqfKE5+Pcto2S1DTGsE9CbMVgbXTBEZP8o1uQxDJ3IUZ/Uwi6r6MkGWFbnb4AQCYJCo46WsZN2AmjJiPjreK+f7mN1scGhqtTLhja3V/Z5OBsrkGagDTk8Sgj0/zFd+1xnRlw9GNulu2w4NGka83Gx7QjWhkZMi1+paIw9h9BDOgzNmqzqyut41CMys22KA3S1ijRKgYozG0lV6qEouFdsU2LD3G9UC3+QgG3cH2v++Jk04kTktJmcZTMOcYZ93nwlPTMoZG6dEk8YZr53cTrOV8ZnRFUoaC5t9sKtFpPsChWWIcPJchu9ry2FoeAj6eWClrW4oS031UgFHa9lK6j6jFVjsghy2IHnT9aza6DdEAtpsSJcQnWF0eLGA34riEctaNa1Ycmt1aBLhPEGNiHRMq1amVtxaJlU4qODin+No5G7ysyxANrnNqUfEfR9v6KNNkvhRxDGYQAUMwH/GMktDLR6ZjWZJhrgMANpz/ivJWfMLAvxq863LlHZktvPa7I/VMWoEoKZWbmoS1QxKwYw2ernm1nQkH11NAuKDEqDWlypzi7poUsgn+JawymrlGe0C5Yx315baxjA4dxoUhJApbRb0gUBmJHMzctlOJKDFhF90/xvXNb1fuOvSvSGim9ZY2RG3BAhhVOIwYn8uMVFmlX7TgAdfPXqnHbtsYR6TU4skBtH0NJNbeDt2pxV8gjeJl1OM5zEHINoQua3fHbbs/yMRUFTictbmtZnO/Fh4VyqwnanNyQu1mLDzIbNON5Laxj0FpxFuYsYfg64NWnHKGt1pxdUrOQ1ltOO0+YB+dzGJhdTeqNmnLUOnGrbNjpxO7Pb3MS0wyOjZJNCMG6V04hxXouWMLv5tPdrUO4eYly4X4xKjzF94iP2xz13B42qZdlqgbPBcw9GkgzBLFhth0hR5TkM7YxZSnTiVq+/Q9i5EasbVGfVDTAfoNQ2NAHho8ahawa9VnOsM2KKo6MAsDVRaYLZwVmkH2No4fTtty+pn7FqumK2JOrpLVcs8+NbdHTemIsx1Q4cS12pRMeAFp5ryEPjVF04MO7GAKbPipnyGxMQZmTjtW2dTgiJZqzzRstaBJsoGyzBXWVzj3YyzyYpwthiGRTzWW+ot71e3o+sD6PBZe3coRhwE2aB4WL1O92SxveNXgh2IZZ5XnN8yOASLcRLgl4MEiGhVDbGRGMPG4AVVT1iB68QN/12ANQzcXrCcw3loZNcjje+1ojAwX9gKaWGlnj1va/ndNJIVkGxSkbLGtHg6Og4w6usiKyEDqUUjV9O9/DPFVmLmMqPGxEca3Bn5/U5WskNybg6AC056OolYszDpECzvDYFs1Al2yYE7ttkCxzqFoCX9EjYcRdElCZJXRRQ6zGMqzOWQtDkBoeKWE+H9y1XIuQXjHqOh8Q3ih7CGiLZOWjLbgejdA20MZGaNI3W7WDQ2OhgSLDl4cLMr92O+bGZxhzoKnyYH31zr6KdzGQFgCJ0q0azrionOQgDWr1lZbR1NbpY8s5G2mDOZJpDt2qSZeeCXu22sLKgfsfrUPM6JC83d0Tq/Wr+mmYwmWaXN0ozapNjX/NvdUPAzaTx0uh+UTg86LuE61PTpqo8+pW5UTPGMnJV1KCEg78kIu4P9SwNo7PTVO5D6D3yxKrI9R6qXwIl+5y60PbmDUDBXbke3wT9oglMSDaVV7SFvldrQxH45wSOHuH89DUJpxHS8pb0DMWIW0RLKqTskRw4TFnei/LRiMDPdLjesLYaEOBMnRxS+rHTxmZzSNk670Cs/abjPfyUa4725e6Uf0BEujVA+a2pBRURgbtS18cxAd9Vjpg580H9rDdM9khVgQ4sETR9z67Gmt9Scx78Uf2+tIaMi9r6HjMKeNMQg+gZ9WyvZGej0oeOnlbdfrjSfXsoaHz8wW6mXPAoesOi1O24MW9YpReCIjwvr3p1Rv4HkTL3h4IHFnRlIEyfwZkSDyA+2rIsodhJhN2tpb5C9mxLCZVKbo733lA7LNd7B2k7QiAwcb61e06RG1mNWtVtek/gtiyCS6up9/YGeadG6Nli7RnDrhwNf7xdR7JWupCPSdVq+Vst76AeFZ/EW6Q1+N52DthBGJzQw4cY9fVsAEhRMZqGuBAvqnucvSmd6XAMFymQzIvD0V9kzC45ysSxMuPgtNmUVwwzE7aWJcjX6P9dHfekDRLVoa56NSXaj8E9dOiBUyta656MsDu5OLJHZuwqICvGpBtC7RYHzIQ0VoLRPVFi2M9umEWI30hqg53FEb6X00PxGXjJn0cC80Fp6uL8MfxtxtQhURocI+cbfv1cTRdnHaokew7VYr4rHsRIOtGow73soJ0UjHd+8xM+R+w9UtijHxz3rla0h+azDJeOYR4hPiEb0oTzwGUJ9bOYT+bTpTanMsgoRbII291jFxKSLbBQivyxJm3VqgVZ2Nk9o3+cBrGRIzEsgdG7W37ZxOil3B2PNI1uuvFC8caMwihP+yR4kmxlSBOfwbsTNnphxlDYYOjZrVf0YQtNUSu+5rElUTDA06qY3s17thxUfNyOpGoK2MGJI8dGynTOSe2h2mONXauRNUZWOntafAfFMMHHrTptPCu8nbYuYSP8OevGT6CE5eLyzKW5s5OPy3IDn021uaAYxZCc5zSasb2k9sAxAYAzZlskW1b5anGcLPaYNLDfOqDLQY2YZT8262/w7GtmtwcKjKaT8NdPmz7tDtmhlPQ6v4UyNpEOS+AgwMXt80cOblsSKAWZpnDCVoI0NNAaAuDK6GyH9FhdnzQzTxZ0ZjPgRRaHYpXmRL17/ZADjYomz0wha3iAaPC/5m4SQDRENLBVVrprQHkDh7cz/BsWDT1oZRO28LpllMtURBMtGdMea1x/LqbWNRgBltdHN8c0XTKIEpY915hiNYJvWrtnT84FF/9zJaMyLGIWmvBNcgaywcCxWE0+X9kUiwwkQmdi1yyRrB7Hjid1Fycnq9qNmDhfcrYT4fWcO+doCGMtBavejSCJiXszPuH3wi5ZeGlTVZlqby3um4B307rOL3Qmo4fvnTWjrKmCsTx53EzXXoeqw71pT31graDMbRnzk3/VqD6QndgJGSrvQPzggHQhS5mCtkkG+Ygp63k0PHsq77i0pgudtvUrhvEn0PWbxd9PYRUxtSuETyRNHTp70UPL+m9FB7Bg/kwxhYvu0NOJdBDbKISWELb646oNU7WAwnFvEZYkPRP6hNir7mlAg20TuwSyiI7rPDW58WZw94RmJGzm4m/pNBsJJerTnVh7x1dlpfktNMOoejEUAVZw3ponYMTnEJYaHJcWqEAzCfG8yDfJ6dawrS2hYswSzo/YCkd6MCDSEiQQHQJYk0IisIGt1dJvliie0qJETfiiahdjo/EuqwLU7JbN30ZvxShdFT8XDxNhjFPL04Dh6sjAs1lcQ0p+bVITjh+eMY+20U1CIvNZh7MmDmNxfdUujLP08PZo/Cej2fknNw9qAZ3DaZ1UMcgmOAjTBlqJgOP4l731MgePQLWeYaJB3nmGA0NXcJpUra1CXIYwQ4EHvsuDhBvTRmoWLvX6fZdBjYea9yPYiHh7039PoyMSR+RNwHT1CXPYO4qH/N1A6J4KtME5mHsOHwExqjKyG89tFqThEHS0iY/eD5YRc2fB0oTShz5H4Y21KYyXrjBv2n/w3gC6WSMql+6zjf/9uuvS7qZY8iAeukAzf1pnj0x7/ZcpMWCmMBjTPJqs63QZ5N5NGu+hbE7CyPWHVj/r4YTDNRMJEy4elQMKqf7vzsSaJR9Q+DOqFrQyuZQR1gaus59acev9MJp3bSejheJ20ffDCajKIRdHvF9aZeWtg+PbsV7Tzo7qt1ULmMctXHPqxGzg8aoJNBR+IT7aExqrLUWjGHAj1Kh0YjE4EbflDOBG0Rjzk6DoTC8OtwfxFOYM0MxI288/I4bgEC3XO6xH1nmRzStdB8bqyMsEa9ANxsmFRPGqTjxT3Q6ZVR89AmCXzVUAS9GLqxY2QN3oxssPW3MbguPK5pUe1FKm3/jT7ocZWStA5+6CsAxbKEnXhtDIwcEm+kMQdW5LTAKNvtUx41qWd1zbm16rYzngjYxzPGaoTbxWw8wvhjguCPiPrZBdvXR7Rg6j4fuuy3BGbgjtIm+dTPf/jtUzY+YXz0ZAW0kTOJdp0p1lwY1L1cuWDq9BiZsXSKFXZlcSVJaCHA1vRgxJ072EP/jW164L4hbZqmy3ALY5BN09h7UjLdgT0gxoDb03txBms/Qu44ZtPS0dqPHCxIxhznTH4HnyOcSbBftnA6VsnGmPt8cI17q/HCeDe/xw5YQDSIyMtaLdiYxB8S/NbmuCcM9DoXMjMgOtTLMLjFLI3V7qJstgQB7Q/CncXEc2CYZJ0MysJ+wtRh4RmTw5U41vjxHWrrzFYSQxG3z2EyQsHUBoi7Nv+vBGJ3VZ8iMONhlewwk5tXsNExEBZ9qNOyabBvYZsyMjcZ1Z9HUR3A+NvYcEcIFMahHCkwRpejFMEUZ/QvCZU58ApW6ZvX5PtgCzH2FdHUJ9hL1dKfYXq4ziElxLcSHRkyfMh0cYuwodEeUivgRa+wr3Jkpg032EyrNt9hY0PRodlpg1/DbBACSDaagQsdFnPbSFZYZnCYdG5urMk4bJK1kQZ37ClMGIkY5Exu0/Ws2YhCiH3OsmfRW9pyZ3AOHIy0pB6C3TUiOkHA2uqaLF9FThqXfIIMUn8NPNausMvRxBO/LsnsbGS74lg6YlAhMgPMg1muRKTzp/C06Bu0MtakLq7umvFZLaN8b6G1/IsPhMcNFBFHMdxQRYoIuY4aThMbZ6AgSndmixwr5wUKkISf4KSC2lBSOQkMFlS7V4Da0VdI9aVrLKStt4Xxts4coMkEuAQ9Mftu4RPkL5C8TY+6F5rIIiSEJ1Ek7n9slumChYgMpq5Wyg2Yea8jO20v7BtHqkP1YVatotKzRKKo+0gZE31CSFsqi6mJjwk0vsHS3XawnP+9pvaoAk44DrMIzbPasaNd/aCrXMBhg+oLi57wCT/uxn2QyNrrCczFyg4CDUARoboyziTQhNjHaEVt3A+2ZHLlzo9MKaxazoCGkWgGo2+niTeMdWZ/cDGYW8Nwvnxp3W1WoZkQMjIRlrIKUoYh/Ur25rSN4KmGq9ZpsmmCInvpEb1ytGUpPaZMd3zx09oFyMsv6gxY12OkeHx3ibQ+sbNG6OTQVsXJXUjkYpTDP66UGA4UcT3c317bjE8j5OuWUCywckbR7xF79sJM6cSY2jel4U0FdpWKtNYmt9nBfsSdcOdzpUjjU+OjpzAFzmnePN1bEcjMYmBnE50TuCHzYEY1wtrKWD9jLL1lXhyexZGCN+IBb/zZxhhYsy3LrIRsjphmZ9WSiQFt3N1bV91w/eUstBUpr0E2m7rUatTimSsnXsejCR04z7KPCxgecc3J22lM3RO/5isjouJvRwp8fnkDwDkHnKCZMJoV9ex8XdD2UQZZITMluNGPTuOhZGOEwaqGk7SOil9AzdmbRPpiZMCNdIWtvNTXpp0YJxIZ8FD2nu0FdES9sq812vaSWC7emmKQtXWjuKwG0ajLsfy6Di498QfjMKOZahRidgOCHAvPmgxJxJfEotMsp+jiEqS/pO81cUEqw9zgOaL3SRppP80WN5MzCTu2fAbTHvksI233Zl7sLx+09Eyznoc/zLH5r9CTnax8fX6VpIeJC/HRh1tUGrv3Rtxk2BMb9qOuM8y25sfdfKMoLVZNqsa0hEGzLdONPoiSw/TJXXCj1GoIYvIWkIm0C5YtgiwS2HIbeVHhs8I8bbkwcAX6yc9RqjnDBwv5oahco6WOpHPjwZ8D2gz5LCN3Ge34IrwUa3W3xy6xF108xnOY8CTnLFwSJ53AtsEyFhTe8CYjLTZVqNztoHxDYTLy8cse1wnEqgMuPBoULCE1oiI0avokPjSi67zDEUPuYbWzQnirMV6Kc3Q10ZoyJL/El7dsEjheaEukMQ08MQ/EMosYF6w3Yt68fgVzbrZRcT07e4YY4LRttD2Ss7hwiY8GWeDeVNo7dy2QY54DHzOgMbGV0dpxL7Ab2k8o2R/frKDhvbCNUvowkNZXmOkIs6MWaJMocGl6D/hRHODSJrhJZ1y5b3HCPy69Aojy1nhrUqJENFCEIG0XDapNq1RLL5pUT1WrBBZrM8IbcSzA5YJITbTWnvNPGMaXT1lHaQu0cgmzKDEtHunI2tuH5h0hrhVw4it5mjm3byFo5tj6JXigiCEXeKxfBFLS1Mf6dMrcPuhHC2xG5r+iGfxm+4oMgbIIJ7T54ySbPxwvgyKMUP3RzVbeD0Hj2wgdQUxsg4KbaFJtCK269BjEJlttgwsnF2X9NZRkAo4JCXmP3kn4SFs+126SdCAAayh19rZBA96IBA7gggBnSC34+6H4DAfW8xI3hbq+BQYEkn7BOoxPt7GDDhKA19dqrEdnm+tZrQ5nhcPzr4boY9QhmQFZGcOrA527vZI7Cg+W4RDGVFjlA3lbqKk8qM6zNjVutt1g1xGZ490OMhqwHWsIRfByKVqo0dOEKUsva8iVyIPnuEvSTXWG8Jw96SQjxPX5o8QiDAxAgtED1iWL0qn6ux1QExR/tXUEUQMIRXo/LN8iWJMZQiBmzgPoH5gOcKc2/VDa2EaEsM8HYv7jARJoRYkwHmzGzAJaG/jEX+mk3fqfiOoNbnatXtuWmL6vE3WmbnQNk73sizxGq5tLaZvyHXRAEXi0Irxq7LRpTqJxKey7EpcgQGWlY3SEVAaRV9F4STdOJuegxG+n++QgnpcrM21uPFguxem1HR2mEqTiYoWdjdJiScYhLD7YYoNEZJsBDDY8hDkNpYGPTCwgx5Mk5KCXxpxGe5EWccwJx9nNLmoahKDgZdDiM8OXkLSLHj2kPe3rsV1gBW7djc3MajGNdw50L12K624bLGQUES0IUm/htqDhk8PE70UtZzBmE7KDRYWGLbUWFrgd3BW47e05E68sQ8Unm4a3qQYHscKyJoUDdiZvQhPLlFjUtTlaY9E52EUHlC8klw+ixWJMGHTVLh+mQgfG6fNSeJ5opIO+uAVHEBFo1MLSuAJg9wdjMKKuN6mR0afO+mzMq/tg33sv4AK1o/WKoDY7vtNkyQXpTStSR6X4wgwXpSPWgrhWrj4N6LaQgBOrYU1wEEuJD8M6QswuxwTIIPm45sQi+uO4X4vdicZxIgm4dy0Bmxel3ahZkaPXrYFuP9z+ayMkypPqjJN/G42ISRFemMkjbYdjJK/AbnfChUh+MkjTOoTJOBEmebMFahH3wiBSY7BKgUnUyTYFJLwvEH0TAoFfeEbRspzek8TfPxqw0woFoPhtar+nMk5lIdBl2XDGL2dWbRBldOr0VnjwNKbCySXwm1XDMWSZrJOOu6XfjKoeeS7E/pnLJMMqZR8NFZJZqrZWSZKhLhVEYpDolJTSktasY1JPdQZB31bphOkk15kbHPXqwEcgNu6J5jfK8SXnT1lr7BP9In6I9DWe8RdxMWlob0dMpWdH9dAOl7JJO36HrMOGGl5HEvDiWzXUA6PZMvIumXtIriUvExzfFQsMG/Of7zWBdiXvUKq7YGNUtu9YfLfHtdXU7a7Nat13GU39KYOt+6ywFpUEsi+GR2jNm4ftBPObotldGQ6fXdYqvrBCO837G518Sh/ctTrceo2XbEkX10EpGVswiK9g54AQE4ksMRwm1ydZCprMEPZzpM8NGL+SNXEG5ttYz/Y5EjCJHG4JdbVXmou3RNr1TCTdaUuLIe4cjsNVCF8M8IOaxyw+CFu47S2dENsSP0Oh23B5sYi21/4n3ziXzG0MjbviWr6OjA56PDx2umAtH8zpIG0IOEK+kWpRwFtcFCX13zqB6cbtBq6mcwkWNll2IZFZ6oTL3+t9vdlDupGxH57RPdNCJ4cDU6fpCBwnNYadxRLWChEyWTiF7UdAaQzMwBWIXtGdCa5hOK+FRpNvs+e//Q9+uWJFOR4xH0dtONSEqvmnHP2QtoIGi9mJbcTY57izi2fv45Dtu3aCSPIvOuY3xljZugDNdelw9egNj57VnvH5/dUyWQ1JPUga5N1TMHWsS/yJLZvET3q3OzEz6V9Dw8hgtDVcDvMtzPEYaSNCCG91rSmpifCxzwENnjyLGDAHYGRlnWJ8zG1x0+3h2AA6bWj2owaGEnwcwnatbQ42OkwmMXon4y12Rm3uLB2eimXV+RYQms/JmFPI/eBtyONam4P8goYRJxEuktk9MyW9rdcTdJ2cXEnAnivKygnr8qTsFarokp7gUDYzrnwLv97uGVIQrGOqwuPe3bHEMVmBGVtIhTkzmLMtpLKjqD2N9fF0lmP+K03F/J1eOmBcwqyCasYzWo4ifMB9mUUI0+8eemx+3adx8dsBtoYoRRsE53yHZUHcrxaNTtC5BhuWzqXYlt0+C2gPXJR4UjBNzGYP2i4OWeIPNWJopsKf5bYL0VIR3zYtSEaVV2xuHqy8Nw+CPGDGSbpBJogkyjM30We9HPrYT7BINrH9ClRsxOOHaAQc/3xe1Gkq90RJ4N9P1/uCr1iO6Jjj8UeCK9DvVlvaP6CYDA8afx29TJJvpC82p7FwhNEN+Cc9W+iYH4ILsFat8jnaTfPNTWkBUPTDYefDc8+tQ7YNWhvgIHnaFKCdbxunJemiXOzyajZzsS4DhxkYkkYWRLWomGHp1AhuThPKi/kXnSCjYYn0aUJ4DEqQnjjJPfWYANlRKK3uEozWtmMzBS5FVMgfav7IzHKGHJNP9qh/Cj8+goAx6ERVB2ehG/N0mNRY95HyQRSHVkdAWKcoimOYLQ0+jzZ3+hHxsjpQxirHKBPhwrx7WYFGtSqhkJbOPcuE63NuYRatIAubG41HKDr0OHuF3f0K3eb7IkSCW+yOu6F3cMUPWgoXRvzuJa1ASG/RD/hePp9PULsUOO89rQpchfao8rDg1jVj0ODoZiS11JAIEj4IX7RPmbrB8M2WM/1fG5vn1Y0J4lG0cE6Jz99dXYf8YzyXaVnNSzm8V7fGjuolxPDqXD0qThdd9IUOldxK+bGNjCWTh5adPW0aHO2VBbAfIMrmEfLIbWq03TdpYOMChaWdBA8+2iQ8xhrYp+crJ6GUDA4Tpfdzq7HJENOm632PFPFuI/S8z5nm1g3OVAbZCXsPiwv3o0/8hrO7DDY5du843ueHaIsy/G7z4nNWqIEK7oYkwi1uaZzdSOBukwx+hHm78eiJApjJUZlib0XtK70SA4RhRY0HDgsXVzu5yJ1WCRCjEjuWlovjSbIVMll2aDodYEgQBzXZy6vy9mhuZHEkiLoKM1tFahR8UXOgLnVfVlfdx2ZZB6DzEei1DP7lkHyNXboH80kCOabnFFfuW2Jq+Eci0paGfgPEoITEowQvrybdIHRLEnX6Mob11VzIsGNw7Gy1TblujBxL21qFWDPLeORfQOYddgyD27/K0GJJX0XVqSW6JJxfpNV8bc641HAjpqNRz/F6/LtYgRs73DdUirSzQTFLDMXe6a9IjdenV2KBj7qeDoRGe47ewgfq0PFAaZ8CVb2ezZNIMsVDVWgHwL0dlmLI9fruiNHU36b9UjDRWxLLOjkQWHXzIpks8WWJgKzZ4fmpMz/w79IdThRzlEmCWjvGIOPpN71/b6iODEbjrkOy2MHKV1bpJlm43eJqO12DjZ9yd1Om9iTIs5qhQIGKYJc9ooeEOHUsZphCxn7LDOsgBxLT4onSfLw2n4Z0CSPN2GcLDs/thT1Tg6YtjpfWoW3bc+iceKiXoN/D5IhXpDMwsUwnToEkiI8icoKUdfwdl44073b99CF9aQADUjJu413iuFC/M9JeKHtIOMes41LFaFBszSWo7Q6pLg93TeuYp4tBgmbyHGT2kvG1Xtrkyc72ul+E03zvLAxcsFaTjG+aYCfIjepA73lDqDNl7O2CnvfiCSWx1Y0Z9KCBR6PyjRHQY4k2hWEKZtWceiTDB7BqK3VVSG66sd5JRRdN8wbiAzO0bh2MfeRQhdfS+sOuzi9pgv9avGdAghH/pKbQIL7WD1fFGZu7FbtoU+NkQaRstXlGIp3VXuhnWI2lZNZ9aMBDyAtTurFqzaNZIG1kymvbnHG3h+3Rc4Yq8tb9hMrQwtxj/f3ubFAgjeHOih9HPbgHfTzsYFEdAzaQ/g7Axi+pNGH7Nq0UdhKXXexIQE63vOZvl1ufOuT42sZoDkKIi4IgDV++AhbBhVnGG0I76Gv1SR2NEzfwJrdG1K3oIhNFX6oEjYtpmOOMUk74JNnZa0pnZgBrwG0nK4pa90XabQjMGWkGD1DnyKCNdWRCWvLcWojAyQvZmoi+w2xkrEdukQr2Qp6RCs1veaSrfrPv0kNgQFF3MTpJ0vHLDvjxR1o4YzL9ed21u9evmm3iLWU4oi1mI6wA42y5swrwXU4ovME0JAo3UJhj/wOkVEsn0nKJWTwrALorLXUlqZ29uEx7UdHd0Xj6OUd7dZstMxPpPFdepXpLsXyzWMoKuhUvHEjhDBNyiFFN1ZuGmVDMaWn/aLoGbtgCMUJatwjrEdKGKDLFZ5ivX6y0PYuFsiG2SdbtC0JaGnLw7fThHwwvZooa9+WyWMLdJsuSknMfoeq9SkBv7NR9LgrVx3/q82jRY6v1E3QcXWbRYvrGLsmdOYujXWLq11ygA5Za1mMGclbJ6wZ7j2DK5EO8PFONKk2CuvshyOwEUg84JyEOAvZofk6KM1Yvg9sN2GjjSvIQTaPUQbeV17ieKljUKhox90DpZCCTp76Yd3WyFrrYzl079N15k6NBbV5Xtw6N6lbWs98t6ph9CJNrEA27wYL4dDvGfhvKRXjCc2oQbuB0QT+nZ3f5WnoYwF0FFiMPrGeagzwvjKs0GYbJrsIJ6Zdw57/kcGIKS63k9lhAIujFOcTDUzqnwhNl6F8+7gpZQZxwx0mZCNtLDJs0ESjpiTXUNHBm71keujDvV4XtY1060azSs7S+/TjcD4QKoJgB6ijNN6JS8k6VOrYpP17qufd7txqQFIDei2lw9rb9N8ji6vytZqdift1vI6PwjYM6CB3LtliFzSwA6N4MQzmw+dTE2ndIzOlF5x9GI6E6pdA1k1PWSB6lhCVy+JITVETvy035/EmjiAKR0+HavIYE635M5ImS5rxXKvEMetzPQSbLMPsicm9f3GxOvI0y2vqNUNKgGCJvZuVoPu2YXGmjC7HuITXV/xrWLBJw525sH2aLnDYVPjvpKPPGKWMJjyI6DbfScIKIa+GWRNUMB7RsK+UcbHQ/jqCM8iR6zGwvGFken3lNrXL9zTGhvIjJAS5nQztpBLNFd+z/PQUZtf7RZ9JTvt9sxqUYiQ2tGoPEKboONbiRv1bO/Xu27Vh9HbR0d7WUgg1k4ZF+P5Fprp05zGKjPf+no2JPFWblideCmcGzThCZu3xBNoDL0UdhknXPWkS5329eHoYcw2WMpwk12vzOxxA5mTdY5e9B4ob4Qjyzeb65ccjr+2vdIG+qGryFK6gsCUHahiHW6YULjy+E5jJce9Ju7DNdvm1xxTVp8vcltB+HZFuTmpLQaNKeO8TvuPKDVUJla92zP73y8PFGM7NfT7rhhxLZp1N1WBa2oHU9ev4vUWeFm/D1c+35tLIyRLmS2k4hAdwXBaa3LQgZN3wnV7gi1I9JCOk3POivqzWW7g+Mc1YkSDK8ftHd2doE9dcjRmlFLYyVkOD1Ht4hGT+qGlyvbz7tGZNWMFW1dICWfP9cs9nmZOL75op92V241wrdVrx11l/pAMkRRmwEfHrvsoCwwskzNdLWB33/CdXvxr2MjZ+K8dix0FkpUyQIXTDVLaicHDOLEnKmPhMlyH4wSGSEHapQ/UHmmFKL7F47k9qIRY5vJq3pgt18+Zx6SQjJ2+vbUTlmY2AjovDt+I2glTSU7qD2NkMnbtUoLJwHyTwjqcyxqa7MR1cwWfHZML8pNDXClEEKDzp68HtKd1lbuJzGasn1YOxWePLXzqwPTm0muc1pQe0c3WlsWdrXmXYo4M0aBYWPCzuu8ixYvqBu1RPaGtzfzZqmiy8aYiZ1MNuKFkmxXvk2XKB4fmT1jaDk4uLwT9i1g27/9CMGxXSkzIoXP3VMMnqJdruBWL433hprCKkCZTs1DO6VnNLTmmdEw4lbLqtDNBy2E3oQfz/1bZ72RcaRWnwTAzlm5SxB0kRT4S4Bm4vOSbg+ZLajpPmS/K2UDAl+bsoC0zb7JvlPzJtlkn8yfG8z/Mk+qMFSunyPLSxhZgK9la2lIER+lRDaqplRWU0/ZWyc9VhSmXVsdqNr3764YUs/lWMWdDiSWGuwJT6hQtPxmmKzGxBkC+0uZK/+C7p6EATJyFpq4wGOZOotz1W2DolyoUlPkgDZL9j21RcnjOF+kKaNRpGIKiPBe7RbU1nlMgOK/6sWS9D+/U3NwOhnBLZjZRIMl4202DYCzmzw1D043DMT2WbN/XxScP4zZCELWd3HS5Fk/cgXRZPs1wMWTLpkP/DX+Ps2LQpzHHbN/8RRjYkkWr31ym2bku9bFhk8FRSljPV3Wa6i0N0KertA3LhtB3Q8XZPuD49JAAYiqyYdgLfMn8yDVaOYXbEU/vT8Kcloy8Nx2WOmdLwev6c3eJZiy1wVhw/ggHRtHFwsVJbnNbLakLZLZuj9+15n4+O9MBhfg9fw5mGMh9sYfdNyUkbVk0qyc1ZKPw7Z8d0yREvPIG3kyi1FD5OrNQ7xirbDL1hSJw0Zaft140W1u7ZXphuyKEIa9Od9769aQt0YdhZKmsnNpklTJcYTeQAEEV3FzEEr4u/eorJV0/oFuzIcEgOsl42sD7XOvo0IKyrbPH1mEGP1DdPZFarSg0ZKu1wPhrsXB9bpja3LXE7R0s3ep2HF6QRMLWSibsXjV4+I4rLzYeDnSoxZtKCXnuiCdfl2toSyBgZhGT03KJRkz/wXTZLsw7Pa8daRR09Gqmgm4wBV6lGSl42GH7OEtu1Jw9V4mWMNwmb1PcHMXF7X3Hr6Fi2d6DBvKiJmP0MBK6ITtNSGwDAZEYV6HWjW5tWS6K2FjXdZrnhKJZAnb49xTuoi7YIFuhZNPe7RLsC/a+rJZhpiQbQ3iYmf0ZKG9kTQ34eSQ14rFYnsvba11QhgTi7q0ISGWD1kNJoU3FYbnmcI+gYRkNBk2f/YvVkXGAKd9qw6sCIWcIQpQtpjZLgHZIXsbvG3LZAC0cWtyUUZN3sllmt5rDLzoub1ZiFAvDVDGiprG3Nl/61jubBm8TNuDlYuonkMrXMUbCqMNumqTdZVJo96zysYU+t5NO6MjS9NkWfWOV4ha0PHa8FPB3ehbkwaLaoljs9ObovBCejofX+yi1K1cJ6UXneN1nPh3kfbCN9cy2+Jbbf0QQ91VMGsdjThJ/XPJpcUdhLDP7zasgp23qbZTuuvPRhnoCH8bFe2abB5RhTwzh46bv1Yg27IzTBHodIPQ371GjEj615ktn2nlZPvMm1B1CrJ7prZ8yR2YPFWEUqlixmHlkniyd+ZNz1p258GRmRq/C2fKanS9c5oyjoWuVHXaoVtqMyfzZERdYBRuLjbNZvGNygnHxASdUKGqzRceumhIOK5qz8knWc0fYlsVq3WPwYAHCl8KqNnJeNnbqLNREZvCF2xleI79fulRKFgYTeNSJOOTDcZsT+LSiBa8WToz28atb5Qb74Pe3Ew+cYQWB5zP0kfdI0AIkpuDITJPhEDfpnvZLmXovDN7i2R9klDSXHN1PslaJ9dDGF9kukxiSMLi8bcdcM3299k7pco/ZMLvoM+8C58l93HXsdZo1lNolndgGJ/8fa7XgUfQ8dERfC3aa/t9GdMdmfxbR5AVkjhGJxjZXmjf129eZOJ0wXamhk3Z1rFEwZo5fbskL6wjHLzRmQkPVkY679EeJxfPBCBgBHR0B6IWiQAGdDotK+lk7QEJYi5MqX2IvDdfepjq1JSbCU9VvRmY/Z6/iq1yKlq4li/86y1zbqUclLXxI6e2TfHaUDk7PHgqDznvplrNtGmkbXdl/g5J1GjpnPsok6GlDCO8UEK32Ho05CA9haDDck/rNWWIQbo7M7hJgOvKWkdruKQK5wh8tHarRo7pTszjyFgkLMiQYeOGdFVut/v2B2Ho/NOtW/dwvvKI7GKG4bigc3eeoaLfEfhLmIe55CVcsjYpwbIk8vr/RruZwesgtalQtWqRiVhI5H58WcrNmxLQ14tgqQFtfYuU9xGeatg0kyfwrU/W48Ej1uOq6Xe6EYJZ14pYrXdlhOde7eJPsinR+sm5dio0GLFkndmrLpwgkZQDcuJa0NksoySnZOgfGHncjs6cnzMaDjoY3WdF21cFJONPbVfOvOY3TU5yINhRGN2jZ4kVEWMi9o//090WX9re4ejuk1fja320AG2nZzYVVky8wm/4Wa8tSRitvfLciuA2mxZ84NXiu1bvFH4bfg2TknhfitBmkEfI6ZpjcNUyYQ3ic7at+ImQhoVPQnXZJkMFhG/kHKiOh7Q3jMT4xdJ56sqzOjQdpnze3Aka8u0BGOE2mgW3pyh0HNa0UdGscLOjHikEPI2bp+DKh+YTgiQCcSp2ktHxJ8XhJSnrHl3tn4JiQFsMMO3OBFjRB0e0126P4arj1/GBe9QVboY5LB4z+Xd3A69KI3vWhjS2Rr4mXjuCoM9IxcehQXWRM6Rnc+Nmgl4iQYTWryzq425NWuuVsgirgUDGxtpGOOSR5SjRI95tgk2RNJFnz0icxXaIxVdvtNwZM4WIiw/aw/dKM4e8WPROEjWcOc2XsndhfCw31xAbWicG2GQSXTievInxEzqpG0cN6C9IhykYiPTZkbe61w06yw3DbHv413tp7+p1eTGwkvPlFr9YLD5ESPjnR2x/LTvprqa3Vjry7jcO8IJ4rw5keWxuw70hMsA+q3LWdJh2oJle5Ur0HX6g+7Z4hhJ3WeVHept/Jmc6LHqekia34Q4E4tGvB53jXotuMaIA47MicBaJVNzKUrp3y24MYEhN9b6MAjFfdnij08Z5bR0mua7WtQ2CScLQDt4kCZOh2NgHGJfq2ZPDlpEMMQNhaRAxevp6HV0oHLGsSX61pQ6P3l1Q3eU6Ah1uHmc8XAklsLU1yHrlKSRLOEqtTJHqJb3AE4kNEA7upExFb3jvoJponREcu7GrXE3yPs0Uyd5H/7cL52u9fNkfvooO0cFty84Gm0y9FfTnG53tw4FklpAGWHDKEEYqxNcgZi8TT9+CLdZhkby/yexbRriwPGMAzRfEf17wCHrV60bzBnI7HdrtjpKscnH3DVmW1yzTnDiwQxGG73RjRjmOztUbHnqBzzCaqEcFKuuUjbFxqBHQHcnNtsb2yDxiOQjpmzRsI6JMCE4m9hTZeFo+lzXbEQSD+w68ptBK1gs4OQd6LEVJJ69onDiiSA60xTHEO9RfWPq3DybqzHwjh7751QWOOHLPbXs4NyXjZi+t/LujYdW75ub11gv4nV9QNan0Ypcemt92UBb9/14GK4uzA5DlTrVZW5t20WUGoNcRKBqFIJ7s5lsj0auWDjToFq1RzpsmSeDwjGdEYlYfthG0gvrqQDklBzVkh/QanZOYMni2c9y+tZAniscSA3eyFQZlBH68lw3eursfQqBZfaNB8W8GAgNPpeZKus6HCiR9G2oLAkfivGLkvFPoc3J20SvNOyby5IRchL6NBLJLi3KMBoJUwx7H7A9xLJn1k3kZshDwFM75Ldk26rfXI5OhVI0q8E8Q8KOh5nrBqOu4O1XPoIMMcLh1j3caiXAI3JdZFM8ppueSDY5Wld5LFl4MOTCEBZy3fixlUuVB2FRZ1Tu+TmdWWrgeB37CYKIMYzeKfLSMRlpYwOoF/vlH3afJJGbyVRmWSG7VNNQdRm5tYo2vB7VJ8FclN1rBHDrNOhqRMX9rb81NeJ6nB3V62mYgzKdoxkiNRJTi9Xc+lOix9WQ9WS2huEZ5UmTsYqMoGblFdVx6l/LQCOiySO9e4xZIprJoJkkA4TEHW5JYbyNzVWH/g9Zxr4JPJNpcK1/TmZdHItYVdk2fz4Ij8+HJoXjXxyYE6zElYxodeOmM/ITznvpwymTp7rt0Ja+9w7gpty5LqHolVNdz6EjzTsQTTU358a0qTmBBUbdawsV9XwS3pUthkvy/0/D6Omdu2kGGFJ0LIB+ArbAjj9k19TqLANbQG14PfKtogbSgNZqLd/p2UxPbB+nYvUPgbNxD4lObGmI6rhZazLslo4Sq+hwiZBMyaBYL98nq0cRa6IGw7U3phsz7uZJq1QZ6gEY0Xxpjmxo7YoITzpulU3eorm1ZNKDo1NlSZOvR9P57su93u8llXj0nWk2vc6Xq/Y1e8l7ck636PpPWXnv3u3iAFPDNT46lFzOlgSVq0jkkyjNs5h5iIoXyXW8AnuZh9dz06uIzOP9oUgx5ValRszBxhWvO3ySZuU8Ho309dIx3WbOaUZdK2rnb7usRD2MLfHg0VP5L/Pr5LdZ/JbUFa8yTQQK+V7utcNn23btITbsrHRMQkDFNxy2yow/Mzt6bThPFGANdam19XIkySSl1RsmGi1nZaRJYnEbmFWMoGb3UcifJZHJfz5lzZNDNpG8tiEGHJrdXAZDj2FgZWaT+zJGvtDe9tnMLa1az+SRFaaZIpq+oFrSw7IhcDbvJeC+KLOmp305smarCsz2QXjMDvoWr1M3pdl9BABgfgvJnl3SLM5qGf9nKJw/nU9AX2N1VXp07NzWu29YuPYd/PWwYGvy93x6CAHapruSTiFGbn7Mp6RNYDaeprauO4V57U94J6/CbEfSY/BSLcm9/NIWyO7w31idWSIgmahU9IdunXdJVkcErwyTb1eTT/ytuAiK2l8nxQ9Yw2ThLaY+7dCnpa70SDanrc0h+b+TXarjw5PRXIHxN3G+0GXPG3hsLwns74sdOZyG0YwG2qI7wwk6Iy0CHG6AnAz1s/nxza6Hvdry6pIrPMyTLqyQsnog8mr6YLOCwKQp3mh8ku21nkhWILfDsiQsz+knMm8AsJapknXSVDX1xv7Rz0h7x3r3AXDmnpJuzocSSS4e8Ew8vWmALz0rbH69ZCeMzbfvzrU30axHIOSrjuX1PT2SWvOMlUGdhRt/m2fNBVFjoY1BIk2500yBzqghP1jnCPNMnbq9UqGr9zYXfqBNzh7E/CSvshRKomZ8XCuLf7GfEDdfWXYfN/2uFYLW5pdl0jra0ybLYeosnRm6ECH1vIJJMgrayc1g28V5qFd4ku0tfX+OgvzTpAYf6cr1agvnVDWnEFyRFp9DCYJ6PWbOrLkixONt5mFRjtmsOLPkvo4aUDkZhkNxNmDWEk2Pjp2Pk+62nk3k29MPd5sj7fWJDahj8JYOKkPPhxo3TyJtE7LcbeJpyEssoQK6KcT7JGDNcBITAs6UQugP+RZ0g9puOwHtDpJnAXwcb7YGNJhG6OrEwBpm7WAlb9UDMqGkfNSCxqYY1TZImo8qB6AAE8AeNCxMquZx5tL+65wHP/bt9HThFp+pi09+Y5rZ38adA2GUGR21SZOuO3Hd+M8Rym3IBBdOMGsibXhYSsY2w8k6W0IfmhnzTpuqB0wmAZhjDGHxy6DDjnpIm2gVrdIcWUGNlvR/mvZvWTfYP7irxGUI/MYhoJFxgfE7TjMJBDYbMXDo480/taQq0LsJbe9Tipuxvwta76mdk1aQkw9ZzjB0yUbGwxNDfJEno4DHoKF1wQZPdc5EG9zdC10eZ52Q+4ohC2EW/kvJN2vKQ0b07rQsPA2PAwzV+jjLRECZf8cw3WXhdfUzu3Q399Ft0Tsxa+3gz6CfEl2VGEdMSYfu04bS7LpR2xvHoTrdFpagk/H5VtTPV1GEmpN11+VNYhxyVd5L5pJ7ecHlGcvLNaRt2Q0lfYM/jZ7WbRtF2jhG6J5CmCm9DJ6EWHUNJk3ryETqrtDIHWdmXCinmkOyOQ48UD4xBNpzD0Rpm3SdMEeFN3HWx9jbcOjwqWMqbSkNmFOXVtKZutZi38ME0Chr/J/kXI5gb9Wybjq1EN2cm9DPWM5lO2JJck6Odx/hwmddfwYnkM5qYSP9J2JDX42qZn2Q3BNqhoMRkekvTRxbvxSJAH5/VDipWESokN0cW8y7aFhXdrS6bKdKf2mf7S0b7VnjCbe49o1dsVqfzvXYYZ99HhmZ3Bcdsg5IvFYzuSQ1BX2XDZvjx3UoClvLNc7mHLIk9YSWCNSpGju8n8BLJ9PvTiIENOeYMF9Iz+f67O4BlNdyPmGk9N4Om5oInchuWP105I3oDL02/t/Cm/s+D12lbaddu3mUPvVV2lA43LEG5vj25WEhInHhhWJEnCmJ4sCRu/tbKZOk5a0CAZ5Md8OGv6/TLxhPKxx1YcQND/moFbMDUbUaxfkHbqimbxM23KLMfaXR9zr+fcAsJjVXVc2jGLTarrUBNmHekS9GtJvkwyxHoDYMWVhTevciHope1gjqah9EmhiWHRwjqPWxJPYvq1PnuspvX2th31wTvqxk9hXRvsAv/jAPONsTr9T0sSWH/LO3Ucc40syZXH8VphW0HMnVnJh2t1a8adJheR8rYXhnIpJzCnJyge8OcdtRdemC8x5PphRD/XWejkoybo5JOdDqVz0W5+LJfE/1i/3SGSbzm1qIeA4klZCRUbwEAGFJce4usknFLmg/dwm1ZqVN9V+kzwzsKAIX0jPqNVd8oB3LZNfzvw81cz5n/10dmLijGW/mPQ3ps6JBtv36csXWHriAX0jRZJ6DG1Bb2QrQgSwuOt/EWRNWdBgDdGi1qNxNa3EKycdjUpzTSikcXTyrdE9p0ZnmxGLGdFltWz2nK6P01EejxYyXfrHE25c4//0C+uxQ9PgoeB+Ldclw0iZI+i4tKUNl3a1cBHdgMi/RN0tI1XlQFyHAY7j9MimShLKf2jRh3DQ7qRC3ZaaLdU9gWOn23YYqQ9Nl6JUUi6LjTaJbo4WCts26OxtRrwWUc2P+bIrMTf6wGvaU/p/Z2VB7nDdkX6gGbKC7soJ0fU5Gb0frJ4MHIzUjJFMn074xiULupWdYCWgCrxkjrJ2T1XBXetQZOgsB0RPpzTcxrhhV7X3FupL0JDGVn9mQ66gPEsfvRf0FX4w70AgGxcbS9usakJswFTl9kXOPHYmAwZI6T07qtddoZBFuTVDiTo7VFpbHs8y+6ijtKq7sB3Tn9G/Eip0OELiQ83gXyxNVEJnsNEGuK3YmumiEP5zqgeCmw+njdJAFpWGOuTEuLd46WdZZNGpgtKzuA7H3ciqhg6nWA3nS2IUsnTUC4Am9BbRsWlo7QZya+ktthO2o43o8duW2ShYz+MJv6wv4xGsZvHWabYBy1UOWs/YtjBkuUPIDH+0BgVGttQrKAT0Vw07ESL8JleI6pVJJn2I0apaib9gVGONLCOblZhzHObwSTEXOdkfRFZkeeJsBYwTd57Wd9Y2rEbXyyQkEbFgsl6ujYrSRjda1di5Ku1QE+GYdDuwfviLJSZYGCsHadD4+h7gffS4Dp8O8ZyWbkk//fucWJO8E+BN4uGwdHVphvdD31AlJJtjtWKqzYuVkr/0C9ZSD0KV+H0A/+XhJ0xtHbwr9ZpO4C/KUFv9uLpR4NG17JhzbTP0iYgCylknVC0GUmSBXPpwTKLQ3nYLO1+CmgwTKsbtFZNOVruVtY4xPyAsC1sYxPmXbyEtE7WCktDOccXjwXB7gi0g4xtPbHF2iBCKxjZmBMih+ezYyuumXuynqZ7a8TtJ2E/Fixuz823UZn49ZJ60yZE+5vT3RvdZls9yh66EPJ79q0Wy034WF8U3KeqDCDZjcZKp1bpp05zmRuYtU/vj3SLjFind5Nxql4+xfs6SwCPpRMsEiBYDDG/HovdyTtak3MPkRSMPYZksu60hjaNUDbIxWnDV4zkYKyzPGFyitcu2V9HwBlWkzDwmw7tYLOCSw0u7uqaMcnZnSjBx2UJg6LunjmPUrqT+t/9GiTrdHmmACOx5py81US+/ivdHmvvoInDZLO1EUhAWzY91gsGIr/Y1nCPTmJ2Emo+ovpNkIqJZjCApivlA/5lOl1cK64INxhWS/XcmMqcj3EFaTvM/4e8N/WNBmxxIR2HXHcRbWidjVFhjgU2sDpEFMkWGyIkgDkn2i0p87o6t+A2fgTI6Fq0oJPeb+fMouJD8tJ9XsAEzgcbA4iGzxjlkr9XsKOwLcnrmSFI6k9Y37cVjnVtl7Fc1CPaofjRm1kPwwT97wlC9Zxh6nMPMSA0094aaS11bJ8xXKW3r4aL+lpSp14+GYA3S3WkYC05cmFuSf96DnXaXJirGKJtEOgsgmOYbIgLVqMb2BXYwT1J9+O/kv3MQup2mt4i9cgj2aTZRiEfdbWpM4Y0d16hykrdsOo682bpHcBN1bRWffFZDsyZKHIZFINQ62cPDQAzk20wQDEL38Z7RoEjXIjrNwMV/rNxDKBR/ZtBX2i1MJIa5vmTKnaMzXVtwZBFJCNG3i9c8GddXaprqKXUo6aPLdRCoXQku37pgfTRlpu3cHHe7XfczJvyj0cQFp1t62yPrI/Fnn2xyOeYQXtFRuaBzA3vtfZPAc6w/jVS2X4LLqzhIywAbJxMiTU22l3DoZiVczBc6Zu90XOlO/OlEZ3vyKtZZa9YSW9/zW2HlxtxSJFlJ137mIBsFV8ZjHUybpUoiho+h1fSB9rLXQVz5r90IKWPJdNKuiX41FjYVZjRSe7t44+dm6rWI7a+l1Gj6efjeI+vXbWkvpL7CgORj27BuBsBNwaLphE8UCuJcw2vWrsHTS45h0sGi6orXF8+hna3Suasn1JPxTOLd9VrGq1LS5KAtagWDmLXGEfQnWG5o/8DEbWASUgn7hvOOM64QmxynRjNzaqPgtmPNl6c6N7ROjiAvgsZrFPSlFca80TmPdzTw+p+K1cK5CV0Qf2O5TUqiSIPz4PFo1MhjeFSUuNFhpoxxJZIosUNBc+TG4ukCCxYvoFAsTLurhzKxFl+syYHqAMSCySZZvaqVjxYJ/mHVeTf2+SbbSHXujk0ul6v+TzxONYbI/EbgxJHvpNtd8L2t+/ZIjgiPwQE7/J0uNuGybXG3r9xPxt5oXcPPurGvJeNo45KhVplijOkGiRtVbLq0nxXGap4tSke0jk3tETlnx38nLeNZfJ6Jk717pOnhqSlWuD85JfiHFzOvUkI5oFMbNSiScBDN0ZshDyTGaCT05nG1Xknl3pv/QnV59K14dJXDk86Wq+13AV60yNJEO9bQsxnqSgLvPbBld1JWwxk4cBu+yNVgYKOiQjJGbY5qyaUA337IDs1Cdm6wnRnurtKIY26EjtRomLRNOKgf4+L8JE1+0ZiJFGLF3MRr3WuI4t09QwhvQHAjUfYO2YY4tjsd7eMUtafjtRaO3tpeHMRzOyhk937tB0z8aan1D9DRryzFw9qDLzuIEot0EI2XWgwe2gi5GG1FX0lG6m60o2Tmkg10QQaVx0lTJdf/OnSfku1e0zLNdlKR5+bR1hrJJJMV6Pl0yjJMAoDOVt4lIOMacPssc6WkDAJKXHB3pZZs4Nm9GSRnPmdvG+Lhv7v7jjw+xA3GmHjRZJFAaOJThW6ziUqvJqfNx/x5uJSBimHiU0UyV4lLTroHGN93BJG3fxKZe7xzuaCr9SCmBadXvxmU3UcdoRJSvPhUXNIgAbRlLuMn6PcEkpCBvKyhtTHSDe5pJSkYpLIrYRxkrmSXaZYaT8WeW49FKyZ9qI1cld+NshGzEdU42qclO10mmtkzuhJVg50UahyzlL7uhT3R61lPagBstILqOaTrMmqGSmdApehV7VxTFbFsr0pWidKMhpchKF/E74ZqR+B/TXYksUHRxB7H7MmfuFiUz0OlYlK2v6VqseHm5Fk+jKRkNycSm62S4AOPXXZlyU6d3Yyn/ItPEpQlHHDKVcf0fbpEFN8NWIfvIJKUkV1+Cm6OSxMpfCXJ7rl0OytMFWLdYkp+5PSt+vJlPxjGnzdRo6ymUxtbuklLUykFpdnIxaDLWgvicOKDcluKsHVaW6nBAer2l2EtrGZTXDmpmU2QimUszDWb+RiWF68UXVGNl0xyy1qTJ02lW7Vvf9MWaHU2gZFScz4pMNYtZ0dM5369ak61Graiqojozl5FyT46N6c79xvJ7PzKdKnR19YjmcUYW3IrYuIfgvQ59ZIxNequ2qfFIfk02ID97dSij666jvCZuvFkPntYoNsPM+UfQhBDrkvW27GV+0NyWtf7HjnrVzXSimc2Dpse217Ed7mLEwUJF8a1TmG9gEx+phtPzzp6gOM1sJAqrLt3vQCOiEEQRtzLWZwDHkbl0m2WzoRu1i46BBQ4wNheaz1wEn909HmIZrRX0NeZJ3InruNnkhvckzt9iFr3s/rbCdBvO0yZSXuuScw7cbxBdVomYjLZyhqeBxtp47QsaVJSHw2JbvYOwd5Esjs1JuhkAv0KaAd1ZVGsod3FBcHtLvFn6K2cI4ab82QhZ7LNkbve4wPk6e0Dc7uHkY6dSQb3zcGZu7NOFmGbHfY+qqqxPlpMfMY1StTgzxek0gyy4krJsmUWiSjYRFponQqEaAR10ARHSoyOgdte2k9obStq5hidXFytqNEw2LAbaiatWfJXNmeulKz3HbSkMSfBHqLS9OhYKxabaj/1CcWdmzQ4+kjYNwZYdf1pxW8wde2zj/8IkSnJz49Sm0kTGLDp9cLfjaaPtD2xTi48/VokM2qEAJxtLIpTmA13Vkq2LelFyoc6xBlIowkdlp0zfSYxfNSIuZQPH52sQew92YMD0Gge5evba+t6RNaB7EecGnJopkiTViAOP997Dx8UHW0HraQ5lj0wUyaoG0Y5O+ZLdQ0Q+WxH4FODNbopewrXyRuUHXwSmxm0EQR2UUlQxmF3WTrrEWc2p63X3UA+kUR1u7FctduA0QsrL3KRKKIOTbgOdADyAoU0s8T292kYZ/+9/QWLGA+XOt0S2jym7Dl2yxvo4kP3jou1znq3+D/ZukY5ZY1hXSwfBbSkMDFW5TzSmOmph0dA6kZS/H6kM4wRPhvOLTVFhz1biBFfAieic6CyevoDpSo46CyU9LHiQPQdWYrJSVDeo/zSt+lYZJoEyTncFpWqe9UP5oDaP9fp6aSgAun1Y8vdubt0q1525Te5aseLaI2qVExIG4NQdaN6bZnL17nKsxi7rpYTgmG0vdDTuNCb2+G7MJdbrOxVfLXup6ixrQ7y/0yopzYXVPxteZOT3FABN7DeVQrctRhYSwtgZZsMA8OvTdJE7nv81Cu5vT1/BWtLTTkhtbo12VaocsjnWgsXYXVuRKzRgEScMyoh1ek25tuZH1HwZpx8/keb7LUHHl+S0bwbYMSw+hkiTS6LkpRwQEb7N9/f2gJXNFhlgaNJbJKp1z4hEUE8ukVjTz9o5aATouWGTLRSUSFzQwcl/gtN563L3dn7lGf0Ki7/7DOGmxnzXfEca5NJN6Xms8yGiwvaCuq+bW+ines0DHWFAjVNrtVUNROyvm1Hpe7/IMIqe/pzumaIT8yaGvtbblZhsCzploG+0TrOPuPP/ZrdWNBQbaFd/BGxL7ZCbmTiOQJ4Yfsb3umnzGS3heQ35G6ZoCwxxQb3M4bnNEyMDapJNVvObdgk12pTHQ/aFMRsaIGDLbeooTB7SLp54H1YMOUJDLMlvTG0WtFM0Ms/uq3ImL2lTs3PBabHMt0BMZg9wTl2P0aS5+XdY8o2XE6dWqaQLODo/49//O69tFFMeZ3zD9q+p1EYecfzIttmeA1AVrDqM3gevLwrcQWIUzxL7xG0x5xXR7avppLDwQE7C9dQ1W1Zfeh0cAhMtMFw8jh0ONGDCX3nGfVJS69NseZekagzbccrFKPa6KoNWHu3uoivgaCDyBg6fe0f6eoITbE8RuiKWJKG+StUu8ctOQLh1jwV+HeT0Ozx8XHfp+qxJxKQHe6igXW+KtSC1lrQw0EbhS104RnX3LMjoLSxb7p6H0zfu68tb3wUHhV5hEBNtfrR+Mg/dwRaAIa25ZYTwDmzvAvhphTaLtZHqk9bkGXVtfr1qEg3ojZ6ZTewpdHI74znnqI9NrRBS4hmLIUoG3rMexFkbKF0f5hvCTD1TsV5O/zHauMK/aHE/dp8WGSNLiG1yjKMxIsIyQFrTQzaG4hotrVOJH9KIFph5zCZHgCi4PaGaTRwjtby2bzpwstuh+QtA1RVoNy1gYE1FS2sp9fjEVfoo61NIErB0d9eEEg0n7h+sg4KlWuD5jaywnQivvIs1gz4FFNc0mcO3BXiQAvxTTrGpT6PO1CdRnLmDGxxvo8FTow26ytE3WpGzVR9GP90fueCx/V/2qcIx4g4LWltTGWCjSpyaXrQkp620D8OJTkzdx0vjqJRilJ2MDNaXZpVJOjMbUdw4nVtIamDIParkVyCyBin2a0+XJySzX32jED2pQGBd0f9hkH/a7ltkIyic7h/09I+ZkjP/Zrta3P7Ze0tYju/2XZt9qflNx/p0CT9hhPiwklMYCMP475iE9lGBw/HN5NtXCN+ma6mNTBJ/p9axbtvQ3fIGf3t426cX3EWWi5YIry5v9jRKgl6vRK2o2V1xHYoVCnVaP6LC5WiLwxfzpy/cR1+SkfbrbitSNp5GkTcP/6O8XUC2vUPwpHpYUdYuBglnb4gSfIMgLZ74SkZWPeUpMgVSYITzIaESEypaKXfcqQUrSLfZ150lzR06vQZ8I4gwzgZsYNHcOSQPRmeu6I0ln55U85DJnsremznQr1EOY2RkpoJnmfEKwYFI1iQbwIjs5xNno39Rt+3Rpv7P/DER6z7ffuSdnOOrU6OpTHN6Kq3c85lbJ2r/bAmMhrOzeUJ6kV8ZK3KGmcDoSJI03dtriYpGxq4fBT6BhdTbRKsYaHwnV5LOds6GyWU75XifLT2a6UdMTu2DCbWWocR6wBPGos8hypAW3JHbg8FKOrZVmSbA2d2taWcR1B2NQqowiMyWPSDJPjliY1LPq52So5RRlEgTXgq229IGLlS5g6mF3GU3jBMyDi7Pt8NvenWY9s2qNw21s5fpch78aFUw2kUdxOr6ZyldE22R5/dZ2ifYP+RZsxs3SuJ3tDY+vK9wJTqX/0PPuuS9WJKbQLXhzGZh1ehGQXXDscYJwK1lrTQdIVafLkl+7kCuQ4KnewSYOR2Tw+DZt/RI0LqYP1nJhsi9e+vjwcwHJaIZd9wRviXUc2pTnQU/ELFCXU65VHOLJmWeLmwk6W1cumCErE2iWClNaDYYaj5KpvHzBWKUpVIqKYead1WWMTI79uuf3x4qkPGIbipBuAyTriOyOtrEStNr5WGfdMEFt2VM5xEKR1oKpMFnambiSmIjxYt+09G+Ezw5EJlRVN85o0VS+q6HxPDL1kWJ1TbY+Os7dmHvzQcER24x0i6v086A6ZUXRrHguy2BiF4q1KUpQWjMllrkoL+AlAF1GLGSskgA/m0f0pqGtC1PaBJivUIWut7Tq/RZtk8qBcDDVdxtxaI+iYFYc4AepqU1vHiUXyLLFlGjssJUaDBOWldvSBYFK8ckBBVfIj9umQE1+J43Gtnl6BU3Hp0SLUwLQElKsfzO9yzGyQRGDzFT58e95IuKkzPNZrWwNcnG7NtyyWxKHV8KfgLXcCFqpd9geTAPTcXgbizB5HuuSQRG1lzQ07qAQKTdqd31gyxjqPHx0a9Z09a5MG0jA6ZadHDNuxKzIMFtGsKZBOgrM2egTKwKIbhcNa16Z33YPSUOLWDTFActvIBNY9SyyY/TwS3ZmT1WspUFLG6YfbozWc6vGcbuxzCtbOYW1+0NAb1tkeS2HELUCFtM62Nf4uvdHS2S2UiYliUA3aQ5nat+OaTxDDo+kO4O6SkfmtC/2Kd7eEOg7rTJFoYs9NoW7+vOAVj0uL/DbZu9BL6XKTEabnQOPhikZ8tNZWQqrGwAWsXxVa5ozd/qh1Qwus/tlsxKcZ0p0QvGyIvV/VuSlUVQF/I9rte2DnOEYUjVwPe5xO0jxxBPTaX7hZsyxWZqkw+OaPI9QgoRnpKA06aDss0mILtZKphkbwfI7zdDAPhMXfelWmI4zR1pYq139eC83bJhqkYMuk4HCNxqx0tnWB5sNGMf+FqwMkTuIAgyFWqihKGpaPjtwdaKmPTRRhxC1YA5Pe0PH25uTIrPuHLVjtp1Z1pZ6CPYwi4XbIzg+HmGC0zy+wPG/2o1ezsE4CF9YcWgtXBO1nNawSFqG+T56xa4LRATpTvwwCatdsOlGwJI+4li4mJ/dZFzDnnyLRvSwbhAjwX8mYj9BOe2mtbLgUhSRHcnIFgeiuTbAzIprIUMndZV98HB+/bDZYzjuA0NFaC+dBqGx1DR1hpKUxHL6vZtWrmh7dTPui3b10c7lRNdJ6sI1ZAJiY5wNrZg8AwwOzr/R4JgDlzrN4zm0fax0v3IpujFV3EhbBrNl5ap5jYTpjhcJ6p4OAdyI6HZjD31iZQ1/9bu+dSi6DvHBDOlX4Nm25sPtR4GjGLTOxi7gIcN5n/iE+uhhLe5RiHWJQbFqK9NfBiIrSAljACKEQYSkMS6u3bzJF0Qhv2DxYIUcGcO9CfEX4bdrRtkF/B9qd66Cwq/2l/D0uTEpL0LcmbnrbhCcXrUXqlZd01YGzfTK7ZpuzxlXq3wC5jawCUzNmogc0RkFI2CWbRfGtFCjmjnzTXa1aDTF+TqwgXSUIo2Ga7co8LqRqvgucer5CxJKlKtiv9eFKna7ETE/VbA7/hdT8pdDkUI9of8wyNpYwS7daElDHJxpNPUKhFIzdOC6N+fMNXpA9xB8lMOcWh+8PXEORslm3CjZtv8FJa2PgkifnrkyYj5yrtjXGgQtEUNhNtz0EGybMWPBuHQ3lRgWUJvXHfJCl7BvbtW1UTM4PbA6TQD4kOIz/KAgURlNv5FEJCQa+67EvrChUw27m4cV8YRuurlbEyQxvQBVE9ET5W+mBLUa/gs0L3kk9qDe4u0jkjYgVuSRj/pH2iybetj3A/CWOgMzX4IstWopA73W0lmZ6LpjpqD1a6GN+LWS0YxzzYakuBtDge6XNZs3jsIKyn6pbcuief2onKvh0P2YVpnAj7KmRW3SSjkE/R6oYq0MpdmGqQ8p9gmR124YoFDUDOrRbTcbs77XnP6Zu9AE2PjEhiyXrSW2NR/f8ouujl/HVQdfVPO8bT+cbUGSUPfOzD2h3b7HfO1blSEpHcTSeRkL0sn8rNXVuL3zDZESjXyQFpdS9k3REgdMyZnnQOhJYTXtyhG8yzfBenUsyCA5wINTLak7zcS3uwGgPaE9t1nA6Fqojn+ptAx2lp8S1v8JH79TilhNPjyAa6r8VgmBL41rSZGwNXAbejNE5JyLrWCKTCLTnI6MKQYXG+ndYdluzWOUsa4SM8gGXM/RRXhARy6ToWSNM26QyY+ZcTYp0+Lq3kdYk6ePzY/4eDD1iG55tdJ86BIvNUSRRzw+jEfekI+haZne4+uQ2M0nE9QSJmuz8XSfgaMh2LuauTiS1mgiTNrbphM1JHrUIdFrmTn9HsRqAFOl1ZKQNhrGkLZPvKEeR2CNEExCREu/HbekLtbGOH/rKsSQ/aiWwrKIdgmyaJbzFNXQO1SXMQsf5KPU361BSWbuL6dLPrj3+3JV4BNSA76vkLWJHsaQ3nt7qjMK+unWTdK1nb6zcEkMec6VmohLDlZru2z6alFH0uUWl8vRICVMr2SAl75sAgptX9dTms8P1S7YKvcSB+hPdLBqWMHU2gZEK0+JaoCtLEzu/pw1dYFY8BD+3g/I3ifQ92CVGqp8tdmUEwy/uoMh0QU73vD2vOME9BvBuZnVB84UrdXaBwqdf4ZhthOleGvstkGS1jvd5uvcS3mrphhTZ86njvXL+pdnR+YYZut9sxuIDJH+myxwEjaIz10W+Pc3SXsaZrWgpEk0CoUhidQ1mWjK0wYHqYRs8mGrsdGAQbQZMxLGG8i7sO9944rTn5NxVD6IcMVIRalfYzSWYvyxAlH69HIRWlXRTcS2oJp7HrddMKWcIggJ1v8aTRAmw91zyuQKwyFhgLSzKvQ3Wt3PWQSXDnCahCO0VrYq9ZcmCNEldbgiswQf52mjfnO6YAzcPjTqMX7E6uNNn2jWTDzJl8ZLZ5FcF85g6cSTIalvnb2HS76esLfBnltI3IdC1Ny7E9t0u/Wzo4sdqcvnwOUZTtSIrO5LjBbWnO1NZWYLtS/3O4rU+lLlaUNXamWxN12pm1k9LQe/VzXcYVm1b+uy+tOaEXTwyBg5JC1j2p13tVy/gxAOnJHlj8mlSV7Uv63mXSOxb6kqln46tp9R9qZ08LFDpHu9exmConEDgaHfU+cHRyjc0WcqdE4ZhFiKa4aTa9eR6iMtAG0SQgxjj6xlcsy2sUbL79kS1Jtd5Xk8yy6JOfLeFiM5Kg0kUjN+teHarS5Ce91197ockNFrGApAsphvRJ0Yg5qTMrsOtgrVx+nnixCZ7fCMuh6ofzRVoezc29TrAqsPCm5prbdobr+OvwGRCdJDxukvOFroQEKV94LbCGiGivDIJLtMZ1V1oBHNoEh8VDZ00a2eKsXFP4c4rRARvQbTvyUw7L7+DiJxOinNHrTt2bT1dZS/1tCWNZvVCZsGs2YU44b9IlaIdY1mLuQaKxzb32i6mUrSDRQ1hgE2VhaJ3czVyvftVf9gQ5K0AkDq8ww2MBjCTJsxLSR4bh20W+6G2tLDScxHV/O6Gm1JNObvXB5EUA7TDT7sk9AvJ7SYv4tnDMmbr5izcuchcfLF42mQPyFXpwgMMbRYHUipVkZXTZwaUpsvmpJkveVvl8n1xxb5usPApqsDXEZjEo3mgFm50+nGRF9BEJkJXT1dot2M44OTQDKFrvFZ2luZkU8IeWgzjNbBupA13lGVxsrRhwRvbukWBOMqmFuucmSGKMoy0egppA1dFFbdFjOF4HV7mpgkN6G67O0NkebfNKk7iDVNCSYXAjC5ua6/AX1uUr00roC8MoPeS5IxcOuOK2psnwFiuZ6z5who0XirQINa3mtDxmA+jOBetwswZ/G/BMgxm7nQs/TkRj1Tm4tMslxGxZAz3ulMg3OgYeUS8p6lefJFhiKkO4laYGtKCOTVHIH7tuqKvDEilc8QmFOHUG2oV91F06HIdGyWJAzFkqa4SKCyY78CweRAs7JkAWQoJsEEyl0r0m9S/CzprMMxQeFGu9mkOJf/cdycb0M0AHHM8RmR/47NEFj2zX2cYQG1fHmCRIl+jkm2LT8n+q9sH6FaoqX8QPHQPoZpgcKba7BPWuhuNw0z/aEiS3WhGclOvQbdRDb3pOj97v2cuDMnrrUPT0XrtONneaLfwxPBgGiJ8al4oi6ixYzXNsvsZA3PoZURCBJJzgY7R4Y8QJ1NYw2jgveF9Uo8QcsXSNK53V1OGGFHdFpFsTXRa3a4T08ueBh/IxiU2AzZFaca9EiRck9cGkcnAP8uHru88DuwQ3bO8df1xBeHbyj0Nuk/E12UW2zSdRam9t8zyiNdHQzrFHSsbq66tVjBA/TAMeqak2CJ42GtSqugqDAvlq0bUmHaj/8QzaKNPefrnrzxK6m6eNQqhaZXX0iWLuLlt5KvDaxBY0IrlpoezTk24DCDnoRrbXd4Ul811kqapRsLO6y6LWxuuLq1fUZPfNz1hhy3eq8fnEOJEbAb9fGS0+km0uvVIIHfE84jXwuWFZKyod6Vw8TGOdsf4mxSrKZOjqgwhf4S+SeQGbO/UJOn5ZySkE7X8EpG71Q1ehotYyS/Gzl9A0hIZtKrWs4zwGyjSlsL4BNqDRedmiI2jJ6hE9Pv+//UsGOsCTxtYHEMtRqR8KvbhppLgJ4FrBJMuPhU2HeIbvZLxblpq2M/Gp8D/SGoemGxNNGnideaWIHAxB2vyV3uVqBq9HT+fHDXvCTA2PsSZ331h2+jfHdnRvKRM8Ya6C0NE+/FHXMWp/gKbAnq9MKWGOKtSpCXRcMFx7lDikNe8GMf/+g/d0nlY59tzlO7ejTaFn2i0iR4cJN3eBbYLKPkXgK1gCbChsykGDU9SXhqy10LdprJ18tWdLdauBo8IwRgYCyTZJRtwTJECd7UxvMG2U9Xx69lPatnmG1O7/rhos28hNVzZjdn6LX+maPL8oCeYm3CMsfEyxtAEiy0kdJLAPRtIZ/zX+6njtTnumxb9XBfgE3SC6ZzsNK2ele9EV0Z19xHgZXMix2RbGopD5k9U1HFG+DiPnG4o3FVhizuOnv56rcJJOdSZfmgVKPWianbH0dRajjnBSXteAzyjo+S0gNadfdFlBvlGwEpYgq8Q4mSSXGZNhA8zuxZTh0S+WHSHEEIdLF0dgaMpDs58RzDbFulzJxJ7rjmsEJmvL3HfyWTUyRa4pkDcv+7IrNpxiq2IH6FG5D0VeD6nTGHnhLWwHrYpcMWpWC7MWxuGXyvFq5tdyl6e47CRuqR+I5W4LJCtT6pEIzEbmIn2LbYQm9jvO66dXtOhKuy7DblPsFpu4jUrjFlJh2K26F2DFvGotPdSPhUpyvs7UUsPL++QrcdCUnnXzh4x2DTCpA7g6y9pUNOf/EjTiofeGtQgdXo43yhEbGZdwZ2GIE1oaYOg0c/639s76OvTtXrnv45z7u6bxN/KuttbSGWqMVIvgHTEMnc60q4gdrmwBLLe7puVzwWgG3LP2r0nxYNqYIN1taE9/LD0d2twhvbOvizRaDnIgopreRxtHoeDdU9Jp1dJ59okSObrG4jMsmGqcjAhPsbAzXTpgmsu++SSDYHOnhLRzUEXd004hxQUugsUEcz0lYRy1jZWMFjEb2jgUw7bZaZ0R2B1SXQjWg9Xz7dHdMoMXxAZ3MzsfTLUE07/eiC9+x3NJE5uvpPrDFcSsJyGcB/P2LmlK1+0xs80jFRW+XayNjMBz1FaUoNMbmq6kho2JYbUsdZF2iGgO0YLKzZtIvWDIG9pc48eYxXQ3yQam0M6lFhs6RJN3wpaxp2qz2Gnbg8JFaRCnJOvmrbVFim7t8rDBkw9Hr0bB5J3w5OjTtCWYfXXwQXCK2467Fhcs36VmAmtsUKi0+9q46T5yOTfHUvic7vXaGbuKcHtuyk3GcLnsLwn0ml28r/a5ffd+ThK3XhCmVBZUmpwLkhkUXF32THqrpDXl+RbTJkkbQEykanmh9RVe1H3fqLOmR1UTrDh8PNunqTSyKTB1Pr756K88VBByk/TSV01KZEm3UcrG2VC3IdCe2X3kDFvZtn2RKvbYn0cPsOIEFxe0zThs+dMUoUl1KXQacti+M6BCvPwpkH11DW5HYML7e1iYl+kqiNPMPakT1XRGtDrBCNm+Mx2mZknjNreh27PExsFvVsT5JqN+sG3IbGfzn59xQWEsKiDVmQPzek5p2e1XlbFHc65G1Pk3skW3HyC1p/XCso+sTHYkPifiNlq64X1o5B0pgs8XotqX0+4ti1X0eMVkzFkhQJ0vqYyECmnhlzgz6Yd8UyW1o/bcuAp9WQ8zJnEYOSdrGnczTWza9AOztQi2mBGp0Mb9exM3RtFpXvT8/51w8+4p4bvRQ5lVJM6obEA9guODwrG9EXLQy5U5/hMBwu1EbQelpZdyfwHcjcZFBNQ0hpTjwPXqGkX70r+OTQ06w5t1SwRlp/4SORBwpDbmPgzZMSFZ1ki+zWhxDRYWmdnwtVGRu1RhpY/I2TqeTq1S5oRYdrZW0RDQ54cJV05L4Z2c9J6U8XfC7rLsP+iFDANt42tk9EyhuAfW8B6wdkt8OC/Ux+qbITxK7oUZtp+2tnPCM3pv1KpDGVkM6ZJu/U6D1sAvReIGleNYXmZ3XZesXfhIx7EB2smthrifR64CV2OqTG8u8bYpk09TZZiat1X5D1T9gBp/HTIxrrtqO2knIKteqOJ9HABLkEC1eQ6utCNsWpIdJf9gBOwydZ1m9aau3nXbiesKNOdL4yT1Vy2I0w0GsXZpMkfr4pCfIOISYxVpg/cO6pbxVs8uRyYAku0asT3qrpkWM0Oh8gopAPhmVPGalY4NVgphM+FywVRHURfFc+Shkxt7o7jPtX11hhZPfCvNuETI8L5uGsyT9rNdMkKmo7UnyWg6Tz/I7gjMpiWQQ0w4+iK7XRdba2dDlOM3dPZYceHT6Ya2ScV2puzdbhXnmaIqbq9jTt2pfofVRXiog27GlH2dTV6SnbafYfDD0HGmPStlie6+vIhTjj1MxQbAkiJrBF3PUi2sR/zHe4/e0Dq+0/Ynt3jB71g8kBedwb6WhPcrblGA1EaHdMjxWe/N9ZcFlFnVaU4588NahaKfclPk1fVy6l9XM5i2Ss9SMjqHaNZS4D7s8BWvQTaXFh25z4uEz+dNzavRvC35oUfwBD6GMDEV60+9JPkVuqwO54itj0rxcMtN5lh2LQnHb+20Yf+oDDegXgZfXQlpc21TJWEkzG/SfNXyn3ErqNfBeHL43ubvNX3Hq7CPt2GpOBfAUsYli0s9a6bcjsorXXTc+vbexxvY+FMMSGuSjDCvsXbUcj6el1hTa7kDXYRm8Xyf65P3ckCoxRvGTxmQrTr/pOpCnKWlktevmkGSPtP7SDTMrhystAxSfGMzT1HrL8VCG4Y/FUaSOY1XKkWW1sDR80Y5v/vskKZsZQoi6bhIffGKQSBtzjwkjqN/tGo+TBwumRrQ715F9SsSmTmrW0UWiO2Jw4OpDmx6rYAsVpifWLG04TO08AmC+za0ycob39Dq8p1GA+fitdTmq7e2DNFQbs26mHwnDhWsaRxdlH2OdTG+jaTcH+p9V03ebM0s+RxMhvaZphZj1eaZz0NDae1oDNfKROrz7VGdkTYRqfgDAqPgSnSM0Ep3tae6outRE5rCvVV+6NHMLf+bogpg2pqC2fxH5085U+wxUo2JtYK3AAZPXj156LQbDZ7nykyKtGMP8vIROW9I9AYKr27GkK7doRh0TwtOvnd5NW7rCzjtPG2Ojfzvi3+0ibY7oTJ7xmhPZfNvsP15aZ21cALJcXtQOjo12xeVHYSDxO+qH3Ck3uIaQrWExhjtOxGVE6/Vs1PgpoHhq8E+pxA0ymCQQPzRLqxGiITWBhA3KOlxw0nvEWrDvSOlrI+7yfk1IQskZIMfUmA7tU2uvoZKImnqndnCx9VdT7WlSOxv6lOGwAE61E06cvtDAziAb0TSmi+u4AwkfixNPh6nSUkpvm2mrBqmlA1PPID0mSlApr1IrI2kQnUI7bfT03p6B9LN1LkMqXSk4Bz1SLa5Xw0WaU0z1hcaN/9qipkVI0w5uU7RqAb/ZSmB254dG2qa3j2g8kFj15Qa887KoOvU+KefZky0iMGUAtXKaWgKxfA5DJ8ZpBpxzFriaNQMtiajJdaKRvtvAMVgl0yDy4lB1LJxO4LOtbu15wUEk5S82Zpq6U+evjAKC1HFzdtYyprC0s8hv2kxQgaqqMztWCh3BfwZsnRAUElTCTYuPxLbiTicwyNI5MZ8OU63/tLkTiajzZoaYPMwzGRl9SeVtHIyhBY5IU+++rzAkzbruMOsHp8zc02xkz9esbkLA0qBbJVtivuEALQI3ldgzj9YW5NB6Wd1g6VQX/XWWtrSAMDHWudTR5aTid1fA5Ur9QQG04YwIvuFrUDDaHSCBIGEy3cxejabTSbIOeAls6S3PNXSS4cOMJ7mgc6g6AjvM3VgCewHAb/Bt5hmFDYgwZoWd3xDEudTPvaho3O8oXZRM4Pqyq9/f+vVPJBwXW51ni5Du1HwWT4/eChriJMeNqyJ9Uex06QyHPnb+3mRHIQ8FUWDlDT7WmdSLA8aPOMjVRHFvM1cpcX0O1GmL0/7eATU76esyOyQ2Z6R8oiW5XdXJfmkoNkgbDh8apaL8bWkkUFCydFFQC1Lg2P3UsyOmdLUHCEGOdWX6VqzYoVpCbSCV7SrjMw+2xkwXBrnzQM9GIDtDEmqnTYNNgTawPHZk5NiYGSI4+7KVyM1WcabZ12CeennHJqZ6SW+H58PjYMBOGdKvvhNv0o3rGjCu6ezE0ncaY4QyIL6O8DDc+1JPSjkbehOouYCr1C9Rd2DbaiTBW1dw4flk95BGrtDyJnTHXXynIC0ZURi2o8JekKtLxYE8pdkixF4o/BCVSoK0ZHzvtuxpnDdYKdmEqOwba8D10G6IDLQJISrhIP0a9AtO36Bmg+c/smVIn6kT/9vlhYN/F4hprMIGda4psXA2wrdE1PkmD21SGzXcpbxjpQ/KiT8w2ea5ChdXmufa7GwJhue2Ajq1bC0q2s37XpaaYIPeNaJ0N4AmLFU3geus23bfHcW12/eBOAlf9K7q39X5RJCgeakUvAZwYmfyM3aTFCiKO3xIlpsSqsJ7zb+NtlJ+FPNVxpp1o1i2a7tdecGTAUmDkVcby/c4rTcoxJWyDOSQU1zXXzZnvt/DaXrjakhjUaMyY44Sd/hWHPoq7JiSk3ItES/c1CmIJ/eeFmhqzCeYxUdfJOPlPR6lqeb3ynadySr++rfzZtWmR7Wiq7CQiNZhcKQn6ZqWvXQ9FQh92AJIy9Zw5m/WyNvqiD1HvWF+dZ4JvRV0RLFt701DBkokw0Vi3hNh64GZQnwObcIpbfh3COdh7TtMrRat03IVlgnBK1lEpWCOZWW6XU3KG/vSXIaDu0qn6PFzRaRun3VXuGh20ANmrQzTtKSHpJPQ4b+tuWyddI9/ZpoL0Yh4dTSVFuCezPjThR+zK+aihNGeROZUvMyRa3TRT7ygSR46EbY21bm2HXvJ5Uk8co2UebFCZgzu391a2ScqRO7DAluSWBEL67rJ+c4Q+yGgwFPrkvR8qkH/tUjRbyzcTvvQO1kVE0KCPd+MZdV+FimnX54a11tWrWOSzZvvg5817vooFd6365bY7WWsZtLBAbJ9Ci0xM4rGWhsNIPMw7MNMBT2GjAw7/q6F1IMEu3N1aJB14zLsQa5SR7GGM8Kpa4R9VUrrZY0Rz4RK9IhOrlU9P/kJO3qbrlLN+9e7fzERsffwOzykziMTXWaQHE7qWmHxG84gUSR9G4UtcAOsm82r6YCKMnxWq23JmDlrJzw7rd/0f0OjT7Hgqc0NLU1ZgzMnixrxbW/tg2KwWHbfcd1FmqcDcHqSGxJVGnK/d2BG/xTb1ruRPRuo43NSxvWJazVSetKlxHUavfdgJR733YrQZL9wm9b94iKp2Dtg9YacRvxOwltD8Ic6pZkxUbmNxguT7Vltzu+Nede/cQKJz3m5Q9csleEitWRgSO5LrC48K9aoJzr4/+Lprww5+YcZ8DuJSjU7I1jm/zvykfeCZYG8LE7jujBtw0PrqINM+a6BgtfVvScIFJ6vr05w2OvrZNdiNm2vMlCFR486YgbQRYXRsy35oB4NEcOWjfZs5qBELi5pZiNAw2MOHdYsfNa25Gl4hsj+B2nIpblmPg2d94eTMjyW7ZfUN1p6gMHbGosSyNaLgnSNURnoNeq7yLCQV6ZDbR5RhdKyMroyrM3Rph+ktJqXVfR4FqMusyNafc7Fkeh+hNC+aPKN2UWiw3OXkcyH1F959PCoX+M9IpXju9y3ti6SPN6xWw5Au+cVs0KpU4y2suGh51giekVFlMsnrrgturWAVgNywfG6zOj7/kjLfRefLPoDmmr3ZCly08mnaDj7X73p7LTOf6Nv8c3+LvnMkQdimKpXpcH1A8Rad41jMaTr3yV67/8136iZ/Ws5khoPAOHFxDgyGMAgs8BnSUKyNbV1CF8OFxDJuzkRlzZEFwRD7YhcHg5tlnWlJ5tIPXchT+MkEu4ET5Uw2THlZiDb6fm3a8Ibo22ST5M91OjBVvzPGRnry3Db5Gr1UnBQBU/XYVcwy3eajHcjnaS1PP4MZuuKSGGdtsjlurG/I/BmG1O4RY3d1ju6IlLU/KRDFJxYa0LSvSWkgTZqNsMLUQkkxAcHHOr3jaY+uQK1Ry7n8NhPGuGnc3oBxpO0mG/+j5u2STdSUwVoIJSQbwlNutWeYE0WOuq1IM3pkqSSnuUHbfdbic8LMAHo/degGGadZuIZcCKAtGwyileOUX3JnDuwmPpNrExMh9hrM05OIQjlwLdapzTkMGQldAtwbEvQzTrX1d27W0hk/gDnEZx79akaT5apFqDXhxvaK2iR7jitFf6AeHMWerOdx/HEen90PhNPzC4uqTgMcrG6hiCVxbtUhgJlNA2mh5g5TFqRot/AfFgsO2VlrmZMlxW8LwiSPkigI0lElnMim+hmvabmkmB3vdZQD1cmRIa/OBgcXoyJu4qwCZiukfdNmzpwPQvGlxHtYe+wqDLnTr34POjEBEdpOGS6/THJhr80RgZ++sQza/rzOrLv5sJ9gldgcmbxCCTRvJsPx04LFaq1BXaRH3JKjtHlJ5p5vfNYgB6ZdZgwewGOnb6Xe0ympXDIxnZqVQJ+tGLoNjWG44HP41lJlLuI6OOdxTuBYnS0keaR2KvEWPiX6p90IyLEda2zcUH7517rm+CTNnvrW8KZyaPp95Uxq+rSmRi1a0bUks5N/O+e0jMbaZQtOn5FfbSPwpum3IRYdIT09i4d99I2uoU/IEWoMS0RXErdNHy+94jUWTgVOyJ0ZEm0Q2Gp89APJqiHRAr6Oc1s+a6A7RiAbcszoaZXe1qjxr0QnPOlItPG+GuLSCZOxA0sOQac4yELrzbdLu2YcbA59gGV1hMbIhCx+hSVPYSyXqa19ZGeJjHTaF3XbeobYmKJqa4xDlcmmS3OwgT12IklpvL81veaYHLFxuPnSGTplosuUGrhvQqka4tMOdoSRDabh2CZTXUejVJz0HXhsC9JMc7bLEc+G3odHtBj1qWBEvEz8WOKLIl6WhMTfaHIE72LnVYPcIEZ8tzABwIrY8pqIZxz35mjcdIeLJFIMbrFHQLZ4VT9woOSRPPHIbeaNr94LW8oXJ47XEn9itb0XO4ZQTDZBbbNQOekF9yyFZtATG8Rdh3Qu9nCoLXkm628A16PI3JAWtql29lqqySwrxSyU7EWnEe14vFeZTkpxElXPN/rXfybwnZVdmjpnPPYDUdJoxaAnMTi9Wp9yzKvUSg2MZoas4MEV+s1PPq/vE8yqS7F60ampSmgnmgTH4wS24rsCjZ6LbDXK8drkwXMFx3dAUmk2vbQrq2P2huHPjNMaW/ifY8jg8gO2ubmFi4++kL/KUepS/w/HHzr9PvxzyDdpCStcy5EmCD9Mau5nzCFSXzxz67pLgN/a2bzIh9xjAg1to7Gqtp/uwFtJ6kVXzUA870uNhDebbgpbsdQvWenZG5DM5RMsPUrzrvmx/FoghDveMRBtAdbgds0voF5jcmtmpVQmgqNeZP8IjqAtWOR1mXVpFlchyNGZDr9DFpreooPrjpWxImnD7Dt5RkzQwrOuWC1/hYQiti4217LWOQfznTX65Pfjk4JQY041eptNL1fHbW9H1GROUERBrKbRUjYxqdZTaYcrOvqY/BUVWFhkMvLxXt7AvlrtPRuIbFEs+cGagDO3/n3nUBaGclCPFGrerBKRlHD13iG3KjOJaq5jbJdrkRy1d5cf9OI+ZZ0m6OoxNJG8bJq0V1W+TdOZ5DNwI+jr49jkvy/J0sIssBHVdEbLeMe72VlIsH+s6ox9Sa8ttKq2McAnr0VNOTD67DqM5y+x7Lfanm0nyaFHrTlZNGhGTUf5mrOMT5LOLTOqktPnIOaSE126PYHLSGT2t4XURYftR3tDqBxtrlGhuPb3seahLunqw1tFwm11TMHOrFEOg6YWDix0m68rQHJleEKdOZyt832JLp5Wy8TKizw369nMZ5ewDzE4of/SOP4np50KQW4jfJbsbf93FiZzgjIOmR5fc4jtzWxjB5jyTbvOOHU1mlketKLsbenC8uuiE3To6Whm2wr59Rdf06V3XM42swyLZQlxMMfqG7U3Z+BuQAywW5jGs8s+QQ4unNrcUzt56L8i5k+pvfaEaX66JQ2nxDcmpuycDEucYzXwbfZylcbi6HJrNztmsYIA/Hw/Ny3mc43OEYWgUw/GkL9TbpBWLZB+Dv0n08Y4OTtGqme5fDDvobvyx4ZuAM6Yhz5g98iUbfV466VOtFTuH9TCKfIZlHSi4IxShyGAgTBBentbyKTFmiN9cOreU5cRiuP1U27YLjJx6ql9KuOpUo3Tg6T/0hhBdKvBHCWLwKMonYm9zdGJhPXUaYI6zLD4WrDvra7C+Md3nWCzR/bm9BpAGnnPFGHjXoMUI4QuTHgBgAU2WfpaSP3brinTQ/aL9UpHkem2Pq34MRMLJG4TzZj+sJIKQXqswd43WGtIoxDtfS1iOapEN+osxLjDzXorQ2wXGgETZiB0QYnN2i+r1llE0d9OZGpgAymCZVzxeBERrcYqODDnDfhsbHSOLoQAtppG5ikkATm0b3s14Gy0wL6S4teQdj8q2n4YreTjteWIjXBhieA1za6VWAGpRmE0hFyDv/X7H7yXde2Bj/XFIiNje2CJ44gd+521GIq2Pvq7T6Lpaa10OWtyAonOttEJbDbUuisOx9jIhZtu4Q11M4/O1FLahgfP7BnDgzFQYB80Ip6gZkzr7qTmNW7o2JD3pxnEnVw6qYz0Xro4/9neaU3otI2g4ox4+FAc0i9xfJzM5epeNy+J4GI9YaxPg0+rzgBiwADrET8n0+2LjA6TnpTzXSEb5N3jhZ6vGwrumPUhVqId1s+a9aEi6uqhtxYP4SO1kqe0GLVHmqP6wmkmSddiAO5ntCylikA2zr5HVTxoWleA+gMelQx8ZZ1FSiPat97NQkVmiLaf5a2d2vOXCbX0nqwJ0+LE8v0LgGOxTUBUUXwL/CaHDSe3eSbzFtBv/bXqqHfWSFLJPbIx9Pj/GwH6FJp8xyuNqDd3Ppy4MxxYLA8sLg9fdRM6VdvXQp4CuTnYmYivBPzhCdJTdE4htai+eeLesUX8m3cEmyViu5adpfEZnnRHQdQFZtcjEGGuojqaYZs2KeY8Ys0QhcJA7+vi/bU/74ehM2QpJD9PQ0dwUI9kGp4jre+xVtdxntXD2XUaE70M9G6EQi7tkSUOqLrHii2jpZHXC3Ac7z3xumG5NCUWTRbcYhkuEz2v4QnNAueB2/d26ZlHX0Wlmu1geJ2PXdfmjMdOVhzbyiRQwbo0h5AfNXTO0blZMwWGpw3CuBsKaL7yiTd9Cqubtoss6dbu0XX6jUdSfajytOGiUxZzfB6h4Cw/adSwuvPvEdIbRZTx1yguBJU5zjujO2OKnxad5DaPFY4h+rooxd/Yo3SqqexDI/OjvS7TcoZj7daqRdC9XmUQ8iM8kaRQjgfRTznRO+lPWJtFJXv0A5uHBfOniXUgzwNrwOMtjm9rLUI2pZyKNBGwuNlH6QzzMj3mDFwIsFlTT2h+2KDegOh0owPFoY4c62eunbDcJuMfV/xalbMs5pbhbOK/obmyM8kaN0u66SivRqZgx12IfY5dcMkxa7XOhlu5kJHclP1cOumnl0xqoSffSQb6D60f2a/uA1C1iFuLQW5MdcWWJxitV1bsCTyCrYhm0wieRNvGcwVMnUmfr+3N1kGLedBCesuby47E03MlvWKpLGKzoTG1MnHwld4H6TAYkZ4Zm+LHSk6D1+n6l6dAfbu2zxY7EQiMRQOtuY723gKz2DoDsr8OvJvNAkATn3hI8CYfcMdTBqhPX5DuaMyuQ4SK807eShXVORh+Ow2zZ5cCZuG159TXJg9n38I54ctaQhQbbKmaYjA0Qsat1M/lBgOtRTRu4KP1bocQ8RcmAeTYnesP+OJakL8hjDGdMTJxCe0k1UV4+EtTymn4TVD2qfb2cGnUBMpJOZKjFZthk9NRHYHkc6HpOu9HFCcAJy/DYDqdrX+/1DT1UQ/tNgx61/sJM+k9E1wIRM1KvFFJy0dB+czwwf4eGSzxI4/Ojd8RfWYx5QUAnx/x75RsmcmNIjIVPoLPWWFqO482R+gRk549opkMNO56W8R+++hQi5ZsOjwGaE06BaPOEcPXiSd550v4ZtrS+yGMJA7OnrMeV1lrcW80b6Ego4f/gpH1kkExFdW3xGQbYJBts5OGwZTRTLFB8zokHWqEqwhhHKO06J6eb7GuBqys3mDYXmSKDhGQbS5WnPfXAebrH0cZG2DLEc+puw1J1Z52dAGyB7tMBrkgnw6BacA94rhlKTbdoZZuIbZ7dMohqWLNtNlBqsvXbyFxEtCvRmuzNWMd+03Mt7tHdVQeM+LVg7jMRLFt4Fns30OSM4sVptvGw1y7wKcGLJJ45SC4Vtm0a8bgnMcTJPK4+7yQKi2yC5QS06LWAz/TUEdoOzYGnpKs/JWbIrCRfvUc1NokPNN5hWwsTQQVpBnygHpclMogulCUzWAVk8MDXrQm9WTOy4Ahp6Q4vQdIatBctIhtd7MXemRM0xnGeoTtO6NEDPUTlh8MLa58gswExiAHehqbsKwHa4VJCWRm8kI0iXhT5xNW5AmMbs68KEgTuowvxvzEXkdcS6FitcaCSUNzWh71RToA2XG9Ivga2x2GbFYwNwb6ydgwH+pgj3fZbSJshrhRLdSgpkfww9EndQMjg6IlnMSZjBvSl77X4jCrOMEbNBPqgkCTO59Nj3IGsmbMKvu8WIoa4lYTVgWaFrTdifWrzTppRnSVoeh/fEA7md6KplZEUNo+hHvg+jacFLy3A6a/iqEe7ytA9BhqQ3SMbdIcDlRQUo3denfA05PoqnMbW6f8XMg7o4rSwKnNxSF9a50vR7DubLwI8YbtMg/e/GTEP9lp5z2loEHdVpe6XvQv5qcaKF8bXp1oJmRqzdu5rgl2FxEmvCjOWVZnUqUY9uzcAnT4spzez/tFaei4oyXIaH9D17GQx/e2jjiv1KN4xSi35an2dRggSHN3HkER4itPBsIIvRDgqrVgVpd2MgXGafgz1Ts0NLgabwvtPLpr5Ij8PgBjxxG72uCUnae7k0NIfBZJD5EW7sDhRt2bBGqTh90ONFHgsGL6zrbSV+qalygjb/nd+jWQQdNs8RfUKAOZbMtGcuhrdBsodxrS3/HsND8ehrWrSIyaAG1WGYS+sG5+apDWfds93XAiaFq99apFOPRc4bpbVMPp27Note35tJahkTzQUzpUX8dyWzELaxRn9+yKhZQuTEcGKf9P0Vpm91bQ4+99pq6NH03zLmXeLfIYXmSxqGH1Lc7Lnuk2KY7kkt0FetO0rjpjUvRgA5gc0ynpgUrakhkKtKzDpCBMijmJco4NHv2qwHemeBCj5xv1oq/4XHaPaf6LzcavaLMPKa3quJySCHHRitM2tNrGfoV2nQxT7nwN1/SOudMWlps3yUnrI/1A3hIL005NpI33SslUL1MEuFf3GF6Sa7Thelvp0EXp//vLhertLQRxbrNtUgGxN9MYWtrix/1YAKd12BvlTZ1HguIxnKbXmTLMx7eArp6TdEyFjomxMJXecwdPr1p5zTAYGAAidqOBRbS0pGGB2h8EL60Nke5Q7DKTkEbXG97KPCBgBUnwlxvtSS0YA7rJ8myOr90wHjoZFLSJEOBciLBkNDGeCVVU0IQYF5jrE6Mbw4sgaZZJoB6VBso9xmJXQWeuxa33xGpkNKaRvy0rRPrIc3i86aINUuaQJrXijj2l3lf6f/8ilxgJLVyOsGQ0RK7v/M7CpGBg1tjpTu3hoa8rSPwmx/9aFFsJn18A5ba01B6UDLP9ejGpJT8y2L8nI2JErQcKbz02nLZdzCd1xS5JQ3yYX0OCvbys8V3aVvYpyEfefWx+H3n0pDu6KdfOOqeWLU8G+TCTchR/onWfK9Q1xGErT1xlxRcDIovoFI3Uh6l0Mee6FndDBLnmqLih48ViHKB6PDJeBgZM3FmnuRDKyGEkgtaLqPh3lqnj4dE7G709dAHtXHxMPGpESZDWxQXHGbj/fSjG7nvdsD+NBvdHVlr8zI8ZHF01TWKztcDJiuz30oYN5Nw3hhRJEZ6eYALncmAtMGXWgfCCdFnsLwnoagUjuv6zJdI4AZjzw3YnyRdAfx+LDY6QSwk3QLph+8uX24/QgOVpJQxD8Z3J0DJ6L0ggOVmEQ06Cb/8tNnOex9H9emlSzxNo4dsFpuq9tCxXgY1MyKbm7cU8m9orQFHlt6P6k5Catx2WrptNw9jAIwwgY6K1JCWnPHGYYQz/WuqaFHsYxG17Nbfet+u2TZ6KH1aUxaLIuVKa86zpmlQ3sF1p7Enf+oWlUwR2aIbMiLBqEwyUxpQvVmnGQ9klPat00jMBkBS0rwGPVcL+aKj7WHXvY+1kEYWyMT1uD8bOFnip136P5YPMND6rlzAThraCMmeZkzsH/WMrg8uoUgdJ7EbDis5Zebk7B9PmVcOB7oIN0nFBTxk6YEeqyNQSGAx84l28iLZ36cv4wamYUq0V5GTizF4Om/p2dF7W61Oza5TtXWjgTYy4I5ma0I/RkZ9J+dim3S1Faait0nR3LEmNUhbrR9HHAcj/zaZHIkniRBVPvPopBMgFu959Xaer7C19w4BwtzchdQYjuho9aOYVqocjEFOxgY7OydX5wzwYhwMRYpLAnACUdwKC22FitN06eD/tagFiADyWQaCMDVPpwnvCh5qXczODHg6ZuauoWUrtIf9fT0Jal/coy+l+nM9qeQA0cGZ1j8KdxKO9LN0WaQyQrYU+scTOxbI1VkjqJKUAY9mCOJ6CX079cfh3zCXFKZdVPJqazTdvnK8JE2HwJs7qRgeHNHEeYyTo7arXTD5xGuArQgXlgGWOZoX8xA+C3PGIiNfm3CpHlO0NH6v2I1h5pXN3ntpdHsxDhWNtaI2vh23h8FNkddFSvpLHcxhsm2loYk3M5aG08DJR1piE2i3pO7Muy6ucUoADpd9OWFqQhtmDuziDLKHsrc11HadANfiBr+DQggTCtLwGb9SdjyBKS08vZoldJcS5QG9FipmR9XVFp0UKoMmT/cFBhpn7WyLoMuPrCaKv8qF+pWtLMekhLVqtrQSMOk6eorURMTCEMui6yJdlq+FJbUACTshJuOHPL1oxmbFtV+PkSd1zJKr8Nff6vmrLa3mF7Q5br9qM9xuQMUn3/nr60I9amH1q4ud3NOfaT012nS7Ac08AZeyrC8wTC23zdauhMewWjELExkbqwwlwkcLdSZ6gKtLn9qfo1lsaMrClsBIcQ6hoUrJ2BEaY5M2AZmgolyOkbgwddroFSDvWrn0mQPkFqMuEkuvTAl+jZ7LmCcFHV0xY27jO16HILe01pPe359ZLOc+BMxf9XJsWbPVXBYQ70vXhfP9Y0ESRtxntqRvdcv2jgdIMkkhVL9rFaHT8EeJ6I21Jt+2yChaoosDNB8NeMlWsp7yhd6KaR72G+3Eqz2sQZMMF5t0cksOE7oxl6a+sIygZZLtq7xKPNep5j09x7gYxX0Dc2khLaH+qMUw0LoyLiLnWV7bZPdnePQQQY9aSZYR19EmHEXku1uT4op1m5B/kwo7/kAn0ZjZvCTw3JJHdaXYXgj1P7qpX9xjy3QtKDxq6fVdiF+FC9pxgTrfstuSG2I5rpecu5x+YXZ76S71xWqEbddiT2ikbA4BnHdzJTq9Odjx61WwqxfJO2KJT6uFc+QOJQMviiTgwKbNqkW1MzG54PVPqRqcyBx5lL0q+G8Vgh8NgiLzwC7FvTdyRpefe1wZs0PAhaV3MGSBaBUQnwWLEzlHrfz0B3efdLE5BtVJ0WCGiL1F0BDSHfvjmKA0HOYLN98IOH/0t/9mSrQ3MZz/9Q3aOO7Jh0aQHU5R6+M9BqhmHeWGTtGHVMZbLEsi4xzpwzprteQN6r4Xadr/pueLanulg5JgDoXrDLr2nPzUaJowbWuHpWwtGcm/M7JR9iHUyFKYJ59WnJctHKKqcbS0cOYlndIO+jd/DUvkH/XWbamOTsrOgQ3D9PoqnzhdpabjnLJhM02KFi3V1Z8EgNdelRl7oiJNghrR7gmf0T2lxnMTOLmmWVw/WHKp9hXpPL/Dc7sgpyNDqtI8yC27U9PuiVXXUuZbN+M8DGgyzcjdhLHQ+3GVu0rl6YwtZruhhzRPIYKB0EwewykytaaX4MJ/HTdj8yxyojSBAWghK4YE2qTbUeNu0yJaS2oIcoF08NPTOedXWtMhVezurFlC9mN2mKdWq8TP12lZ4qtkcBRdutZpul9oM6H6aAzrGeJFnYZuovn3rHYwIj0mWfIgwNnsoh3Ac5zPTciI3ZDa7lrJ/Q0pEXP9ZlxmDQychqHxgmfoiUs+TGeWTO3HhtlKFanB7N9IuMCAmQnlJ5P3VolEcPoBj0zd4Hu3gMgC7aZSYExPIzF4ATSUz4Ca54N45xqVbUy/iJEyXsZgHTkvmbPYgiHkgqTnfp8PT1725r0/EHvQtLmumfZ8bUGMA/YhJiCvWbQFDwczou9StA5tlxCId57iecJQJ4IrdlugZg1VO51VSmvGfQDa6kdhe0MmGKndozG52LKelnJ4Jj+Z2HTTuRHAnInpln339KZqjTmI8ZhteIGSM7WeLG29SBsxqFrDtFjdC00oYYDdH4ex+nNLXrnlAsc6qu0LE263Heh4cnYMneYu3Mid2rQw2lXifHSqwnzFiSpxOInPhobGdxtR4qgydC6+o7SI2oJe2sEHQ6t/khHeg/q5vGeI237RfdljyPSLAZ4Q5iyDdrJ30GJJTsgkiMWGd3l6kqfdOOm7yQkBYVcCIND62uSKkxmLJCCesEoycBZTtdzFBhvY0+rkWSyb7aRQCrDG7GtJGOl3CwFoYBd1AHaaQ9dNIdhnXlT7X8giipT/XDTpv4I2pZazW0Ccp4t7JRgXAV3PlYdsCENaIobfbofVMP/gYtD8TxJ4GrPvvmAQ1Bq7rFCx7JrLJCsRlldzX5rmR0V/ODUXKnAfjLQ7uEtfseT6uBwqNLgvHzYTYdEdzDW95wtupi05LFAGc+DqQ+SZU1BWlb1LsloTGc3u+sjQ0X5h4+JEXa5i1qpugvUn7Rrq62Rc5B4imtJbsk/oGXuWwDNYODdL06HVbD8QTFwwV3rkh0Xp+QVTFsHmK2wvVryGjlvp+KdRYBmWnXlCZ6l9qx+FuPKAelCe1J1Y1t0kbxltLKtFrRdP82aSudxba0tLEB+oXYLngn7QdNSOYDLC5oU1yPbRZHSDsgZ9B0rw9q1bUQBYJfTUy+XAMv4Ou41KIHq2x1uI6SLPRT3oEz0zm5wQ8jgu+Kg21Hm+D3OzG+yDIUBALOcDwRf3171bUAMrimptnNZae13RIBY1mDDDOEb9Ap5qQXRcakS2jEi+NWrG7hs+LRgjY/W0hw2oJA2oHhjWKYqnog9TIW7Eg3u+hkfVeVqwnsYQh6PQqE+hL617/YO68x66BdtO7FmQ23vNpjJj4JaBHrIcekmLSov4z/9xIeBrPX2Xp1y141bZHtrWpJBUQqRmuj2/rr5ijsKGvYtT+wXNU19uEhbixrhOg9R9gW/PT2+ZM4sGDOWboqc7tSkMjPrs+CI2e2Gos/RuWrVH5q7H8HD+ULzJGcXriMNo5Dfdv1+5zrQ55njBJcS41cimqOSpI0mPtC11n5Hnu0p3J9TtSAQa8uO/bYXakrPOaCdOjfkQn1K9oSGTYCwjddbg2kC42izG2ss3DacDTMGNrMfy3fpA7NS/WU6XRs3nKOJJB5q5jWzeIZLcXMYbj17LG7ucgkW3t7Yj3nnlMzcaYPDtXx9JjPmsb+314PExHtniWU7DOUxmHawkeb561P6BtoPCjYVBG1bFGsKD3K68tPWbYW2sPRka3niereoqDRbiZh1Kjzo7/Da9J2C7U1hqpQOBennL0BgZp6IkkNnE/TM6aY612chGELdRMcb2TWjbBiNJ4OOi7duwTWfUpDpakiTAmvzo9rvjiUxFs6QudGkWngLE4GV1oOQYa7asoqBWgLMErgqDLEu5KgykTuIjrQYjqx91C9Zw8tPKJ4CbKLsTiHTLvEcnMLzJlKTGiIUlkI4PrJsD2h+FDInzDkPWzZr5RxiDDe+Pwp90RoaLu4a1ri7uGLZ3EuYfFpIEhnkzCEwBVuEgQAbtd0yoFp89MTm/1dA4LidmwIUEKqtRdR0EDWU8SAA3spGZS1Ve2krAuK2vL/3FLo5i0Mlh3O9TEBi4fWUrq8scUseLefThGTxQBhbZ5A9m92Z/dH4+vxqSny6oadb3WZuwjQ7pANIsC6hpc9ep9mDBulqcm1id6JC8ogGt+k12LoFSPs1HroSe1RYIg9fTmZ1OJe7GJ1YUG6QXblBi/41DDZNsiHwZWBIz+MW1Nz2VEMYszQWOYLUOtnhbzydYkx0coWV5zU3liSyxUg71E8TVRZ5ZHkKSFL0nYll/cruaptItI7j8bVLH4AJdSnRFiDVWnr1zVFumUrS4Ee/7NXD7hOMxm96kykGE6qwkmVLuEWyyMmaFR486hT0lQZvi7RARbYktGrayFrJIHlSDL7or1miwXJA7Ex8WhkrxJvb3WcE26+yDIq1vtKNh8FwMstjJEE7LlRhRT3pdb3TdH26kEYxm1utd3+pbrXdVkZd3DB9uuvkzRMmrAchrG/pbQClgnQzud4RYcp5hwKjdjNmstzBfpc6cd/+aSo9b8e572uRl1zid/+EizR5GUmlPmlr7Z9IAG3eQ9hZm8jL/96bV8RxBoV9RucUSo0VL6zGNJ4e46Q2wCZyCN9D6dgSrCW/BTMTFhm3Tu4GCYsdFakvdbKxiqvxOro1WC5iu4JtW51tT/Ts+kWIMHPpyZ3adwUqSPifFQAz8axenzDz6YJ82helEG8PUGMVtaE7qwY2l3aLBdkXp4WrfOLkaCLjMYRfSsoe5SzaL6U/AJDc6Y3dmkZW94CQlrCg2phmkbcsKeICMr7Jr7LzuS6BTMi7mur/V/IUsEKhnZk5SO26b1nffuh1/UIdZrucllpfS/Y/Nlup2EJ42ysadpUDDWObpEbS42aCmcMvpboM1s3ptDw9UYEsNMzm3YUrGbqw8xIA72Tcwuh0C9Dt6bYvUz1EDLi4E2giHde1jud0jjoCiNvhGgcXAyDnAhyY+5CysQBpT7DRdTt0gK5Glsh0o+hmqtdchrYjKuvqK71fduBO49rHg++0Tx4fPt/luiMvW0Jrl/UGJYabckihNdTUHjpbSwLhnf8tHNhTkLCLWuogylDEnt8RcmffdIyUYWCInp4ny1ntmH4U0mGb8dM07B4S8gPGrlDfZPnWD3G/5dfSNzGzELavllGvUCgnC58Qa+MUovCVuRFLxTHHLsqkZtHfR1Fl2nT6xbZt0Wo+g7EiWTuH0NKy5IpDLQJ2gLBFlhi42vhY+d1jWWvbzTDZtVGyKAYdddrceTXNEvQc59J/p5QAySZ+rfvN9lviDPOH4BEidgZPaojqDszvWDrH/rtwippWo4qbtGHTuxbVXd1pyrzLOeVkmQOSeFgW0q06tHkuJ3sImV5R7lP874Rd9bFOhqyGxQdqnCsKk2aJfIlCTMCNzy6WbjXVWhpjIeLvLrVqoZrVcGwZJ67d3JrTH2G157Ace22lFDBtHn9A0sNq/+0mx+73goeGZEiyefrz9Dw4Gg0/dj5obSy9dpKe9SdR0p/S3KM5JyoA7X31xpOdegrpfJyjLvK75w94hOM8fBGpqoR09kagDim8hQD/OQOse73HPpHI9frO4zTSeJquGzK3oHOMUZGG/nPe0aDXGgPqQ5sTchsHDQYtmNxMp1qcr13haUxvX9zuvPzEhkV79ALm9ngpXWt+Q2NxYRBc3zmbF/SCoRUhxWu7i28lkety7a2+mZmMMPElOsDhx7CfE1nicYlW+YdlC8FpIlTBSHjCbWUr4etCi7BOCnEsAbLoyP4EkaiGDuIPHXujp0uMw+m9WkZLpucMpDtjqVJw6Gut8U8hhPdeGJsvJLqxa7bMMGWoQLMbzot9NrMaKv9eHGT5I9H9oF92jl5tatOwoPIApARve9MTB5UoMuvGbhbERHgRqzhy4SJTTiy8JqC/WnXDPu0nswNB1OeCA+r2itFJEXpFWs89WUUPfBzpszwpC4hTTikmHbgpARgFPRim6W+sP/+TOtdgBt4JLlc4Sp1Z+h0cQgWvuKfTwHFeUsGAOX+vNo5gLOyQrZyYcpe6cTgyUyewqO8h74uTw0OKwQ7Ipu9KyZ+4SO1EFGAZHPvYTAZJNsFdoyXJOTF7CSrimo3tNH+TNdNpFdffenooqL1hlmPCX7hGlIpEMSJzRu/6qoiHFBJy7cdAUbbXe2mXvSxVha+HJYxtYS1W4b2uD6/uIZobZybwPTBjYdGcdyWBfrWWjrVxwdDqKqjh2GbR3GLGUxJ11XHXzSXcOgSMspYUWC2pUmv3SlSOy+Yh3mvL+0heYhAzoiWRuwu3prqPX12ZKT1qsZfsMiXMicD2Rc6hn8X6yEegt8AUtSO81o2ZdAQOYGjIVOsWjI5+YF+N356Xj9XxyUr2TUjrkFiVn6j0TfdZi9E2vvrnZCOspJdvKmGTCELJqavusaMmKODTyNldC3fRmSYNvwmVpzMQhrXDPgJ7N8N+cZq8o/neqGD3ZkZywM2Ax8NeCUJhZrQ9+47QSa9WUGfXdLuDnz9sEmCtsTplFDM0RrEG0pzq9QspNmrU9UPZj6MygHqIC0ohW43TccLgfDKLnozjMyu2yeQnrHiHsPDoZo093xu0WvGBcYEcOHPGyw8SMyYxnCCOrBO1yAap5iBgZnyPDmGXt43DtE+uc0Ve3NDPy0VP7WaaZaN9XiO3X9EJNmPEN/xEcdDaWWdGjEvwQ9WPLx5gxN1DhcyEvG+shuzDvr7osjm6Jw9MPlnOIy+4EOqNOUZkng0jUbjX1/Sb3fsVopu9fITDrAu3625HjDY8ZfTU+WHvAZPEOk/1T0cOGU3Ja/guqzmylBHC7XSVxvTMqROJwnf7FuDxpugLtVyoYuL3z67R2CgFx3E9CRccX4JKg44EjZX+S+Xf5CX5iNTuZNwtN7hrN9EziRQG3SMkTL1vS2E7vBx3oEIMrclvUNMveU+YkA5jCgKp5YqOClOmyXLVf/lld2396XptCSBcNXAa2vjDJfYFU7TXmmESDEmGbuvT/lqaQyrfa6to1NSSy3V5KFdMiEouMqMg7Lv1VII86/28PW21jLB7vrXHUKlECajRLxTJLMuzrsqJRwZATcsoevfNIWgeThwNREdysudOJFQzPprurQzulXKDY5JSOnVrQWSs06joEvCc4ZUXYsC6WMBy164OltiXuNAPC35oN9OVuExSjhxW/89YA6SM/Q3W4Hls0BhNx3Sd/hK4LgZbSUdJXpZxjXwafPn11cq+X0Ub+QgTa1Trloxsdp1LNoJ+wpzVa7nuf0VhnJN9A8e4vEvejrXHSU8lM/NDpBX89FzblpI1MKaArNrAB4WTJIKd4OX7zaqCsZN6PtLSSWpGfVz1bfPDi7u3RE9s3sSvXEekhbj/3e0CjdvLoyn34aHFiNxSxz/LCqthAX2hlFn0tER6Oqkzz2n1i3ts43w9joer0MkWpkNzQYCboz5wYRt54yaLj8N0lc6HQdubWL/LMZGcmG3uEbOP1E1JD7zEoGTGqwAU4JLSw42hMTEPRlZgwRLGNbT8MGd09X5WgZo1Jt5rMsAxWYgzEtOmMrwfIkLxdiVOioQ9WBuDKyJDE5FS/shSlU0u9o8eLkh6d1NgYZBfvIvwZnCyanb6cdLQhg5te8lkjLxiK4cvtf5BmxbfZRvO7U6Fqxk8LLmGN3YiRmZ4LPHGqadBP6JidDl8VE31Oi4KttSY+fZwr8biblKHi6Ea0lBuHCbcXUmrdJVtp/hc+m6xqjOfAXIs0VgEhP9R16TGEjO6WNYwhvZrxsZ3J+ybQl5qNR10hYKw9iUxdjPOZWo0FxhsYU5jBbe9mo41nk8KRPsFMp1LLxD2XF96R521xFHy4yd4O5igwdXgLcP1rFX4zYzuxdLSu5r0cxuXpt/d8pOHojKhXjR0yQx43qcHIhIOPF0Bsnr3dQa+nSgauos04pNtAHROXF/QMM0mbhtF4XsXK1IS7nG0Ir2Lf9DyBmJd0OgY6AT0T2PIY+I7vDXlv1EMqcqXJWT3RffmQhIGaEBTNljylujd/+sWgySU4SgDO1mP8vPBnm0fUeE6sAjSuaqt3W6lijzSgforyMjh63BLW5Fjn7y/THq5tqmGJwrTUjhC2yT2EgUtyKOUz/ABERxO0aG6+aMmcWhok+LWtaRKHi4ons/buX9wmKlhf91iwmbS18t2v4rQ2jl+WKfx5Pucv3O2A9Y1VvzNyXybLWsfmxPRzJ0ptcExyrpZHdZ0ufkHA/ehqWQnalrc1CT2LJXQfKRe/1Dbajw9QW+Ei4qvts8uxHvZgxNQvhgP3A+4UdPXC4beCS7fa9JY8g7uMCMbDFWxiD8ZHco+X9g14wLo7xWNtQO1lk/MPhmnULIalt0DRmpPnDZMePaKpxk2ajiqOF3fMz5qWjNjm7lozmcZOBbF1KW6FzKzpsTcY8Bkepdy7nm3STO7q1TOsGm6fEQ5mBnX/s5AOslcesNDCRhpv5xJ7rgQz4h+xorZPoWpt3fdTa+8mUW+b0xn+nA825QZ9x0Tm6XHPZRfGcW3bN7jJTnXGnydDqtgZM39j6t+NAwh98MqzAVg2Nvq5GgRl3GGuMsWDpQlOael5fSk1BI/w/9unyp1vpbOW1z8GT5UzcLvu72GaGUZicYZ44rYoknlFJxxFhViZ/WDZzQA+rGzQxyhFMM6T2d6I9EEbBrRAW6gB1uNeMR7Scpo9kwTz4rGSC8ZM/HYiRgSfxKKmUYCJ1x3tvBctnDHyG1qo7cCfu2gXUqnoGFwVDEf6c/Kxovg6FkfPjNOTp/3MEUJWePSllkpEJLtbW0N23awoQ1cbl7uzHE6nTNepRghtaFhoGTKQTG7biUDODq4tecUomxKv4BB05/6QdbCoVs0jOP+4VAMmpBO1tWsKepfTBE5UlcIVeYj00e8TIK3+Voq1S0opjOHO+eiqw1lGZwgsYl67edJs/vqPx8v7sbCmApkEtb4fkwSzz848XcbQ+k7k4ZkVV+IyfaJVT0GIDztOnZgW+M7U6cb8f5GltDY9eqbU3gTrfu08qxQu/TK4e7rVe0YhAdrB6Bt02ZQeWbxwQZo+0u5p6sDXrTg3VNtOFQwyE1OJ5PRAWmvsylKkqy1XjJ+Y9KFYek1NVz6IdMTqxp+LRI1q4g3LJHCYMXmRSyU+fzhsGKjrEzq00nWp8DSJrkRCyQnrOiSfe+QULUJ1sNawJda3fdSsZFjomdDiC9LdcbsBD6vhgr7AoWudEwzeGuttsVeX0U5BvhGozyJ5kSjBgp8ztVysT7WMPtb2CDGHRw/fBq9jBRzPpG3lDHYGlt/Wo3v/F3gc6h9kGM6mNJefwbaWOxOkw7dBChjufUuOq121QaHqdjAHekNIrRNuW2Pyoao2SEVu9ZNax4ey3WzcFQlsdRG6KXNNweBZ06lrEd07w+60zUQer7g2B/oJTMd16OZk6yhs9Ex9For+cjw+PifLMxt6HUq67uRsWeuFZM2b9mK01jZa0wyi7arnw9YvgfQyoL5mgtLKJed9UQUX2ezILYvc02Y2gMLQU2kDXx5Imzh0XIhn0w8apmo+yLGaYek/v27H/GwGXaN0eO42m8c72vyLfpblMAwCBZVwixmhDxve9kcuHWeT4Nh9nNpr3kpHkhQVwKdrc51d6Gy9rRw5sRNyJe5+BMgEeUidQuHquvzEsm7udcbGuefQFKfWpJKbbVqTRQeR1zPeeml1JGEBKfcOxmCbrE9pgW62L2EaQM5SW4cnWgnkomwIVbjgtfbxttrHFIUR738rbvL9FvaXtDWizpkNKf45M60mPR3gI/H2owX3gbpiUyngeK/4pi/plcy6hYqXDZsBO0XQ92uDDJuxkgBCZMxiGY+65vRgwqrbEe11BaW+DLGVgT1PrJFxO0JoeyXfMbyUZf1P9pTt83DGKkDRbtr3PWXTr6X1uYWuPDGuxvpW1cP7sX0DRmgZHIsVpyVyCqFYH9WrGEevb84QKHzG8aJJ1z82W7VbaOoRaICO5Brt/3xDYTUlfl+/ReYkyDdhABh8PTpocrkyM6aWbT8/mCzDXWLoC0NIc4U0D4g6ah/HublsMyaM4U0ChZGiMrNleuwTw5cauj06I6AVUm2aXPbTt3Zrp0/F+6tIwVgaMZzmG5dGdnIZVm/J7vjWj0lKaxpMidGDCAwS8eIrX4S5m6tc42Er3UBqb2EOl+6Adt9SGMm7bpsWj2MPoki1iJ5xNILXgsbgrUhf6dP1CEmZq5AmFuv110+ZoE8Y4WwgHHzWuJUJAKG1MNG7ualA1LRlXmJGs5cP1myZ9YtUHfrxZPWpmaKtNqZ6XU4uluU23lmn0eCjRmjcApQyZftLhmGpuchIx6t7Vxdv9AIQt7nh88+Wn3/GIzixuwZNHL0tfdaEoDLmhgcY0qP5rMtXtM7LPU3xjCDxmRZGEtarGTHtTgiaFJzgnYIasb46ujUo/if7zVRpmXQNvp64dtPVRvVf3CjpozNbeGBz7aKHj0SyZE5OGitY6YoosPNjvYzAeY0TMmbWxcTHM3k242Yr69nS8CmtQnAgIVdvymslG8N25Grhzbx6SOyIQjHcT0WgBmz00QwfjTKVJH1XSKC6KOLXwEeoX2gFGaGDMKm0QjLlVlQCxUcbHws1RpXorFamaIXRtpHgQDZZeJR441zmYl37HEap1s+WA4XHa6V/zRG3qhvt5q6SCAk7BixdNF+6Q4MUiIJo0gWkmpXVCKa7fMH7JqlzQu+hTaLeFE5U8VYmvZzKWcfd63KgYZ8S0xWFCHYCRl1qyocaL8cDFm8iwqcJu9gzHMaq1sZO+65gmvznJo3gxj0n9Dy6WvdZ/xlbpyt+nq0tCa2H/As8KWnQxER7bZDGFROxYm69t1a2LX7jWczk6BcjcaFqopMMJbwk9jYBwJ5Kbuo0RPVraqr8g0RZEoqV2puMJ9zpDlMrv+RHdLK/g4eK7boNQcfWphTAgjjiQQxoDoO+9kUeizbE1vtgSI9ikPLj/3mgu3E/1m28y/Jaq1CykZ3QLN/5ln3yE2nQTMdWpGJgnoDnxp1st6wl9kGSnQtJxkT0HWAjo/YtRgJiojJTAXE9MzkZ8Otpu+9TtYVRm78MjUrJB0slGikzDO2hT0wG9E/CjTOB55AOzkU0/W4CnH7tydmv/fLqUUkYNj/o51SWmG8m3FKCWii01aaS/MrmGNDghyId06Mq077+cYeu357Uu6XxVMmYHeis6xOrjMtdDgJmw8ZkN3jZU6srfEXOvzKx4yHtS9nRmlljTnPssPxO7qyeM4JGiaw37TCm627Jbdn8+9hLj3TGxtpjLNyiqssguBpTzO01hSUKkfa4jj4kBc6rNVUR+Oy1DYxm9n/GqRTclRlgzPsXooVMBkBf9UhcCR9dKMl7ovC+Ypc5AvkvnJ4ylxbBq1ou2yV/VKtt2i0V1bNZjDB2mrdUZCX7pzD0YN+0hzBePIq6Os7JyS0bTPNtVe2utEd1r6Wwb+Evi05o+JerQybv0BwL0EApMi7pbhwiXgVgMPcSE7qixQO6pvClaZZUI7loeU9AHR7Z44CzlxINTH5mW9zsp4yEpoIcWSwfSmeQjr8JScXRuJoWpOpqaCmMP/Bev0qn3stYOx9brMzXoZL8Yz/YaDOxRBFc78l2RRNJZCXtlQKC7EXMM+2h7/dCQ+qvQ1n/q098KyGI+krnsR3HTKm4G0zY06MmjIZ5t5mOA1ZAc1w6JCM3EQfjs4zJ1pbf1BUpC20yeBkiY3r5q9ad6Am5ktXo+mMTNw97WYCH1GLY9bPmjizPzM6Nu0h62u2PWvyUSzM7hYXFNkq2nzU7Nys2TLf2b9i16yxvH0qVPh75P5E5VCNTOh0gdaelig7x5OYF80f0GQfvYsug3hIj14UZ8DbhNt7DOIdbPx6MkmecgnxZf/F8sVlnXQZkVCM95ROwQ5PoZB+1PD5QjMOcAvCDOOmd4zMsLFXUzEnJ6egmuxoafVcP4PItrqZ+bNEs2q9V1zpl6z9WrGPbDCIdmZTOLpl2JMGaOmCY/g9pqdxffpdoSGwm2BjVewfYfX5Ebx70o9eeB3RmnhbULbpmDusCBRAPLAH8ako0vWZ90zNsp8Y3KmJnlwIUPp4cyO2GNxDcang7PUnpmFwsb8x4p/IoKcLnwlNrbFT5ihtUY9tRiFuLmMaA98hJ60cI60OpCM2/H66vcwN+drkjDvqZV0JCZS/0Hw6Pstdwfsr+PYSZsQCjbm+C/JI9moQNQiFjkNaKO9m/NtrnKPSGboDhsUcGDVYrEtg5ozBEGmAMDwByCXYxoV4i00CY00NQX6JazYiwdEk3VOYHGNBNJutvLDpqfKP93rbv0TL6ywDN/rpH7WoUHHhsuQGVVA/WhhTbXvkYduD5Y2NPfE7eq77WAj6l1TO/OpX9GK6cBMwT5pQrdL5p2XAlphiZg0hGmfKsIVGE4jUeTpqvRa4lq7TssJWPGH5OosQNqYZG4i12Gq6nW9hk3DN+slI0ljtmgBvENtiXV3Mvp1Vcjc+lBteTaRfTOhr7GR0/I60Yo8rrhqjzWH41ICc+e0z00pqZckIWzZgBsF2eKFtFLPgx7zyF5u1sntWd9DYEaafULoElfL82rJRwMReVn60LnYYl+s6d+FsrULqUNII84YP0zuhe+9LEz1odMOTRaMQcUkGV2TFxIW5fygYrzV0hyOQL3CkMUHzS1PrOudpHxT8koQWmW7xFbHAn9H8B7ifEfeoOCybO5Jd9ez6dxHbIttKrwTCbkXCjlW/KMlkxnFyMdz4ktiZRmwUXPQNikExcoEx71d2hZTks5FgYkKxv64n13Upm7uODTvFTIGyhda1i52eYtM0ZgnYHbB6pq0uoGXttSz+lWHR3/pia1nh+M7NMHOjOzWWG5vmsVnJ1e/Zy+thi3WbrfP8+jpF4/Ornr5VM8fGZ+kQs6aQ3QbVn2CLTDoT9N5xm3QLP4FrE6yH+bQczn8prN0sWJrrLWYy798d/bmioYv5BrObQKq5Px05SBiuHPLCRd90HUaOkMpHeL07O1pvvK3spHc6tIl6u4grhmd/fTarqan0gQmyVU3dkmjJLJzbiuspRmkKMu0bs0jPpsnBMMqlW8T4lyXhtLx6nrfAj+t2NHXNUKdrZKmLad8s8K+uV03W1pGPVYA51WS76Og9g2j6a1Wxa9Ygxj8dJ2ZInIKY2v3zknxQyhIxiAUn6QfOC0Z55z0yZeGXyfBNOq06wAX5d0Tc/W8qrU6Mb0S12kb6vSPI6HljMNetsqzZVFlKwHUekM9dpQdQgLRJGcW1i0GDD01OWn4r3lwaj58Ag6pzYiENnQhQtVEHQMl86yU0uQWl5rVAr4VJNxeufR05SmQ53whslMH9uQZFGzAVsb+O01GmfrjvByXCgi9dvuvXwVYXrswpuhnnccWnygI0FZMDNMxmlm4gq9rLByn/anTD0FBIlQn/Jp+HX5imwjj7W65KMiwvo1+1bLZv4MbFOWoY67mWX/SlbrtSccxay1vE5OukKxfA6BBcr2WCjdfKIRrNLf+EA8yu2hcMwvdOgRLWDDEKIMykGahdWKumhzMJ9HNvcB461vktHyVmXxpgm2Tlr/hJurQhwdY+NbraTEidmpc7fcCWgFhKt0kzVTJ0BjH04HGWW3WnSF0gt8oRVAtHLDtC03ShG/u9a2BJzM5LwTFHWsL7w99cGmGj7XQQe8gFNIbjodh7O81YqAASrwIkGZnANpmGKkXXYmSryJ1AGjMSc6GD1TLrmTE1OX47NBtMEmgEtd98ciQ20ka76ToBQfEUlFzgP8OYC5i2Mtc2UTtKCZnWhw2DpOfsBGeU0bB5nkcN3gH7htdOZ+avM7oFvIpPk26DRj65aq2DPbUS1V2epGG8yTUeULrQ5LnrQLF7qCpcxEGklMnJ6TbzPjzapq95KZxF3M7wcnZIkSZdsMrNJkOfFyXqglzInYWUCdUpRltFkZgvS3hWmFncPuZDXbVqtpNzIEMbTczMoeFE9Co6fNzO0DbAR1hXxuVEvwCSbtzW5lGjNtXOm3Mp9RvWiwuvHon99uZ/lbQ7mZlsN1DEKLdqnp6sPTruiWsLSUaLAiwDEJnrKWcXVV0HK5IT0+6Z+WdHXfq+zyhomXtTmoGACdUgwdG50Ip7W+SrCB4ZHMfhsqWzsWm8dcg/mTiQt+gQtmwO5IFCy2py+ckucBuagzcBYUjMcF6DDLPLZrbmLoEmxBNgluZz9HLthDHUWsbxb1LQiE1/Cn/gXxnnmF00y1UmJv7VnPtXfVqVG5V92JeW405a1vzrUUcbXaM1WWyX5T8OvudMkCn/5llJa1QjZPOt2SwOcZo202km1c7QTQWFLVtP6T70AjhmM9MC1llPXsMaJeMaYJ2EjJd7u6GKF+FZT13amvU+Nn2qYv1e8lAi9/Q+5dXK8WhI+06glRCtbs2mBArIWTRPSumFJtMXZaurQlPmY9CNuQEQftzqJVE9U3aeGR3CekW5tI2ZP3M+xoW312INbjh1RXaOGDXtEdhgx18nwYwIWGvQMtTfrCY0SH5Y39tmO1vYlxTlFPRIBaXADbxpSSdW3FhfhNPeH6S04OphVtWRXvao3b7E5CkDaxoJkyxmUo8LHsnHyirUWPlncxJkUfWU+asUll6GwpQ5/Ohb7R6Mn3y9QohbyI49BjZr0Fs69pMGOatvMvwWdx3UuzqO8zieZwgHbwdq7zMonju8yvw2chUL3mZH2wPWay+St+ZhiI1q2pMLx97oxucCRZTY3Y8wW4dwoXZXTCjNWGAUtITr4vSNMmuXS0d+RurYracX30adYKaQi3OYibYBid9jxock9wyV9mZD/H5xqbzSwybuy0iVh7zAmr/llSKoP5UT0r7eNekugWu99Kf1FHBtuOuoJLVMLqndyAOlDIdw7Gmtgxo6Um3xLOaveScgyk8Te/sjGtOoKioz0n3S4UdbwBnZTO3mbSdMS36tvDNTycKlxSvopV0Ll6JitZE+lWHQbtEZc1xTxqNrecskGzQFNpBK0nE6DyIiSWlMNzg24p6jII+ULXHhme27QjA6EsN9rxi3A1ZMSLzOiIhEntpC6Hz9X5dlkpI65GBJiEs6lknVyWorw1jH5ZUNwl6ENrHQIRDCzsIYS/cvJ6SbUhCtq7FxTz5Rm1CEW9bE92JhTx3EN6XG8W0OPBQ9KNmDwxRc6F5C8NmOJ9bVyYFK2MfpZEyx+ZeQtfo7nCLOZsmFrtV1pE9kkmMnNSNtxbHJ1N4pBEjB9rnFwINFoZzjg0hciDGjcXD/SuJGDNckxGSGE/gdq5FIIkGAjSIhZ2VkyLRneV39FmKJT3YmQYso52lMb2/94W4jCRZQ/MqMWSSLPH07pltl0pSlUy7OvG3VhK5zKsz1uRgAw75uvHWgDqjO0lpx7RDP2OqRr3M/rxBcXo6Oc0ov4TUZ3oSEJ28cgBVRnTxgeYAP5VaZUTTiST3MyccQNgJ6Wn6XStsWfEY2sgQ1XU0mnWIM+7JW1PJSLBdTKX0YxocyIm0qvJOGU+P38T5oWScO+/aDXKQcZKzTn4IHCg0mJIzPQOsZK1Ffawzdoj+F1M/d0bDNy8vrTa9E+S3CQry+o7pOwfZ1Zc2u6f5vNI9i2nXV6Y2ZQEgBmnYW3Phr41ELoLd9jmZyuTEd/n7HTCA7rkjHT+qAXeH2rV4zLTpgTSPZ+lx9IXVhW6OV/EZ/9ixR7UdQhHkk60Vj7aB1m1aIWdNOeulG0ida1kNcaZrbMkQ6aAo3yT7XMzYdeFwYnu7oPnRfulQZN/0m9gIruadX7VSTrW8z0HaJPfclhgXAz+Jlvm9qdRq8TJzlsUwxMgE5a0QpJPKPT0Wb/V3e9E2OTErpdAk8BmX5EzQHImkiPTWip7OUQQ1rTqj6H9MTD6b7M23iUF+PsK7BDNXz6UdDFMbtmOylHrQx0Zja/gjcfhvO2zb+Y1dDWsGPdIx6NuKLzDt5480cgW4gLZWSdxW10fEfKMUdWMTXNNsZuvT9YZnsMcq2nztGNydhXx3Gk5ZSENJOBQ27ZkdNNdMkxhdPOO5m/MeWuoLXQUZ1o8jnaZiXfWJtIA1MBkxy88HBjRdUIOtqB1sEETT408GUV0yVZj/HwbHrKfTSXW9KTX0WTxa3SjbHAcV1+x0syPYRPazWpmCkciAZnWPGBmY2kx+rK3cMMzpuAjEAWd8CKGwaRF0G86YJvYtes2wz5QmPWMglmlzdVS4RtmzWQYzcMCbGyFdSf2g3I2u35q9lZw6aETXdVo3+yxElhG8eRJzxYoNrq9DKFWZb/Mh0x7Gzd14fgTKTboc/1N+hzHM7tmYfJ3zda8LCReZd9ZFXsZATy0T4eCdGwOi49GnmUby1s5qyziVVpgy9UVpi1TN4haMCMwWRTaDEnvkRLNsHasJdeRuZWvG/1tdEOXTpSVSOYxDuU5pTpqXSgmmvgyiBpubnXZIWaB1iXrVCyskmfSDPbXlmexoQZBSNs42RZ0lspuhNJq6aSqDExaKYHUH2tILMJZZwyyXEuc6wncxq19PulklRNHpZuKw9DFmC1wQPoyfMTQ23hjL6WQ+zR+lkv+t+s+9eXSyBk3vS2GaIjNxN2vdnSafr0LR32H35cRSunt9LtVhtA2BPIvgMqx6WHbXhzpTONC4k/wMuVmg1TFRyTb6xglor6dAcJ8FTedVnETxgQaRe1Gj6Acg8LsYl3x3Naz4jhzhITQtSLmwzLlyHuosMxeSRfdeCaTdKD9GLi112OBeLXvdoPPWB7FRNNxP+EibVAVh9oK/AYv91w5JDAIwWPttkJUk7Kb8hqxrWfdZfnJnTyz5XLMIpBPpvAfUQGNPLiHtl9d8RgyfQnVlGJwcBnHJM5ABIGPW45szN03EHegt9sJ6bTan1js7Ulj7ehDozGeiwk2EU0yJpUnCAcPlREvvY87jyvWl7qbosZ2xn8k8WhjhKNlCbN18QTGcYw3MkVyey59rYT1/8mbvUiYDgEmMgi458tvlWHF7ThMUYK1b77iG8Q4Wu6IvnqbmfWDsbmi0Fmxw4HY6Hj/n0+FmCu0yImS8LIuskDkN8BkLNsHkeERfTR+uPrXZgGKy8c2pLVrHcTj25PJLEecdvIZNrrQSoedLMBKERCy+uZPAnGIWUNzPQYHlPsTp6Y3M1bBhNzLOuY2Eyae2MfTTEVsTnXvV4w78EmSJXYrymUVnXuaYTcMCiuyyHcufsiWxFCZ0Nd2oGCdHSNlqszxjN4Tyz25Bf2IpWCQmtIx4FCSDwo2vtXSOQe9a2se4U6s0AuwBo3tiQje1gf5GIcusm5XYy0JgN6JKUZIS1num5JrZh6YcYyBfoge1phG3OFBziR9HSBCZUqtrNmjCQ/Kdq4wKJkY+PD5ouNVNM4OkxLQDcm8CN19GG8MspyZdPwo1IHN9/huHogxN1o2ixTIaFbN+8RNfdHFsUZ7TqNE1wMWKp1XPFcoa3mx2IbMfcjH6PywvqBiIczhEasZTRfGcMfNg2sub3VkHxUyH8RI+kugRo5qPyu6Zy0iDp8Lwujxqh6I8d67Ks/hOv4UmyEfsl3gWlfqCIyRYhM7xaRjTIrekHR01TRlb3dU+vTWxF5m6xlCaZzWElNZkZbU4ll8ojMa+g4wia/owaICMnoiTKhZyBdIuWeDNycCaAwsvOZl89P5FnKW1zsFlyi/wu9nTILCfzextl6olNjspWH3DsgTayISpmNQ8bohkAY4E8rjW1djHhxSaami83OZeghOyw1EOCTx46QuA0Pst/OPbdS1t1VMuqk9Pwcb4mOzA4rPSngOntk8Osb80xho6aWD1omw6A0rKciPX9q7QvMmGWDj0GZprnYwp6ZeGSVWJL0ItibiOXyLKEjT0uWxLNrM1Jnxw1VJ7wGTjY+6TtQBeiLNJT14yH0BTGti0vjJr/80aPELtt/uZKY3BuWcOtKQ0YzdsV/BiU3EXOoXhKJF4p4S8mZoTDU+/i2oNnClN8CK2ptdbVXPvhKJlOYJlttmetJ0o6UW3+x8PZyuN2xOidjChhrm8wbSaQDNHF6JBjRFTubFzzumRgcN5WCBdHjZhC4gXcYLx0gw2vDdUm5iq3QUnbnQd6RGMctfOjgsJ2ZU4vwcNGeE+tRMhmKzP7knZatAXmRqs7pVvBq3AwGXCCu4u+CErgttpt2iFmlktfVauJo/CRtyg2wlYAn0shWmLTKSTt7+MRf5SP9fCRfPTXwCZKFM3vZb/0XIBdf9WdcXZLSBcaB6D8J6NPtOS+hTkMh+6ur80/6rcfFeVkik29YY8PcCsmn2tM84UTG1d5rMo8zr2jnzQNxmODz3+neEllIeq201YZqw0zHWYGu1w1aunTBgtrZ8LLikX99sJ6pqjSEDqLkxkAlMn8sWmL89A4LsVP3pq4/7Mz2WRSnLY9kNhBr7I3+SxVhcBfGxJkNXQlTr6S9ea+p0XMEFseLVKw4HIjeMmkdfDcWXt+I94argtu/eG6zDLmoC0KyJFpLdJNG7Hkks5t/fSPjr7MD8aZE2XPmadcPSKrZAaCnsZcj0jrHgCFyVkanpTSjSyEvRAprH2w/snBL0UXJAVHVYpvet2YvaXF03C2iW3VWEU84wWm7fOI7KWGyreakTKuK0y6S90M1pZq9D8vmBD2KmmZXtnZaIw7Lz8Tq01vFoRcsnauB97e2Juf11r1qu59rbGSvDDjvmafTN3YWn13JZIXvf3VgU90vqYWUMlUGu8HMEySPgxlNIf115TuTAtTM3uimIKunSp1xdWj8HF5FohS0aPFUYiNRmy+tbPmbI6K+/YY4MSBOKJvPwycGVxyMFcujPHx599SfxsGvR2N7rODxUene06lQXOAzdxEHD1moxRjMrY7ryrOoXyugCChZmRsQyVt0ywSlnwf1P2ZqkAqfOn6M2265qpMmu+M/DcCWmt70UanJ219xe2TbRs6VxG22sFVy9IpynDvWTwdyaIWFrc1cozGghI2Vhv1YM2Jkni9OYWzZXcUrvPcxGF7Sdd8nhXIbf/fvvF1O2kTAd/hOVpUjZxlZpK8E51X0PiRToza1HpBPQziatLcANeJDQy4XqPeOMjqC31//xF1Mp0OkFLMcp4gCylE27ifIDdhj5PC+Z/czv22ZDo59vqG91976Lr9hUeERjLQfjv5KSOFOjMXDaT+zfYSah3xS3GcMNC3e9kfVDmt/Bx3JY6lSqdmsx3Vc+h1CM+Gmpj8cX67Bfe7huynX9w7EEcd6hManJveqO3xrJ4h7iyQmsIpbeOuB8ORWEAFMD4G5dktnPhicOarqPN0NG6WlYxYvtsq2OF7HbNBk2e9HeRxgqVIjQkmU9oa+rEbbbWpo3VV1FItd7XasD47EQf9yW9DHVBCLJGVVtcVwZLLMZ1lOhsfe2y0YgZbv64z8lmJ4SvuZii7FPmay6MixZ9xiFs2OWswtml1zKhr5Ouc44uSNkt7wVx3RxVkQmtr0mOM7NIgatTMQqHVayeDu5ekxO5o/Zwjx6eQDEfeieQ6N2t3u16EF751KOGJN4qNFjq5P7kBvosrhuuHDKA6aadPvC7kdC09Jy5facJmGL0Z9GJNddjptRo0u3oeL2CZltOMnkWyODS3Po+yPQZleqzHuhcAs7nRsJz2/dpPj9lu2wh/A0+lKWO6ZaN2Spvy5JdHKBkXhMDVHAmtXV6xktCzqXYSQ+e7MCCJcWo+/HfyaZ/VQd6niMLmuDIbLXOhBI1uo4Zgdi/2tGtDNdpnqMzlG7j0ozGU/wzWOrwnyY4b2Od9yp7F3X+kQKHVWtY/7DkCR2pYrx8cEtyq0kE8T1M2JNMkSJrE+Ojc6nUN63uJxEmHfsQa3dZZ3j9eNZJ2sz80Yx02EP4uj1PmZzSMpn9gFcKqVYlVtdpp9VwpXJtEtz4CZc6TxK6uE9AmrrD63CMbumNenO3gTNCyW7YIXn5kiyJuZ0ksmKASFLLYfFRLM9IeqNkh3zjTfxDdFSiMtshNDLMv+s1eMXZ5xX8SNuVSrHWmX2ZxGt7LGtyWZzyPPtmez50nHrDT8MoGCWouojhexPf1YwDsqOuopfGHydit0d7oTh8nROsUdBKJhm5yWSGDgsLBJXh3Nz9knt1Q4E48CCJ6Y9/GnkW4+KbGH/LcTzpM99KKeu3LWePFGizQ32OdjX/rmjePygaF6zdrJuCoiUWXHIwntaDASaeGVYjJjsdbZNqSFYykv9xp4jEy3haIxNGGowDkP63dLd/9qpkPf/Ywu0hPGBcA/CuuSo3kYG7TTHQBjPouGgdM1MSz4DCzAoGyEeBK2iPTNDgG1pSX1kvTnEB+sqwwjIYDiiDqZYiYy5us4RKLd6DPNxvJHV7cHenQMw/1l9GMP9ZRoLY7zhgIyq8Y28Cd2R1Ejdensfi0/ha6IiLlp4CvGnhjKyLhU4BDNlq69BkkWutAZIOz5EOiZNxys/KI+ufMKN+YMUtTSOei9N8UXFq0Cpao91JbRH2tavyR8WLMx6Gf0+kmfb9amTBfPQhlmgB0BPJQv7QfmbIBKgpLvpifM2pPkmKeszjIk9E2qDVuZGKTHOyQlbWNgYtYNPM21f/O6uj0nyL5nP4CBfJr2mVbvjv5Lf64IwcQumCdPF0yaQXVH85xXdG+ayzLXEBiuBzJ6lO8yhCoy99GGCdiY0elqLT1lzW1Gtb92gMNI+jp+LT14BHVDVCWQjPVVsY+a1TeZNCzQFgaFTOjNrH7sizB61Y9VurT0N7AYs8dL0u2ZbBv1oYS2uiHTr8ylYF7E702tRn1kfohgjQrGj+QjtqdZbxEOa8qs0BOB4tCFhkJXTwxnybcarxivMvyzlOzKMdqtqiecuh2k3mviupzf+buO0yMWLg9af7iN1xhtbD30pkejlY4IOomG0m2ncoNpKmH7NcDiZzpJ9lktp0QRmusdDqgQcY32JlUt1kwhh1rQkNrGozG1Go18CAG/SrHaYSJdLe1np6FQgecNzV3fl5tJSZYq8N9CBbStAqDpB8124GKi1iUexIsvwFrJb30LFVJiMuJNo0vxFvWkInbE6zToC+wjksLKUgLLZcYajNTsGc6I2bhiwo2yFYYH9Squ9NdVsvobVzm15ax1QAG5007q1hcmKZ1aPCNKderpDI6Pkm7UAEZdx8vX2nMHIJ8XqG3J0mjVMj5RPIdGEtkSZNSKnWJ89Zh1X9LydiRlNh9aM49UyRUHvbAKdhe2iy57R03x+QobLWaWNnyyFnGyyCJaVEAnHyZTHzVFkRgVV9Z3s+OWWq6m14LEpc92DexKXV+uhmFyypEL2cs0J1vk8pSdfrJyCloAyiDZ3Q9Y6kTT1MvTYV6TIsGm3dYAvr/pKr+kO7S3lRordQYemP7wE4ZSt0YXe3U9HB3k4/QEWYic8qVeXi/N3viYjximZc5Mt0efHTTRKa+DwAmb6XiOAJf+02hMeIzIx65h5tHlaXQsza6aTb0mokTFswJJSstGO7tgZKZFlqMiBV60mvAV2n1hJgFneztxdZTo0iveubn1MTKCOSqt2aAs2+rL/pIy3r4JNlZaA2UBaoYqAwY65Brc6zZ4YjaDVsHWkkc5CtiDfWZV9OrmTQswoQnnElQX65qrLSkaJUxZD4pL0SNp6AXR0lrrHU6bbWZdBI279YnY5uF/RwjEYXCZ2xsAHbLhqqxPxt7eCzFeaLdXNcWf+3TumYrW01epx9AyaWc7zTshH13sJbaOnLLS2tM/QOl7Vrc11GBA/a3GSJC03k6lhcm96h3g86dtTuIrRnPll7h2Ekg5Hvk6YIK7p79NuF6Lh7NuhgoMJVF7woN4bJcyDPcTmYtMHaYxdSGdJWaE9YwaMAOhTbEgSK3e58jKdunGO0c7b+/1k6ZXzdIu2rhOKeMYh5t+D+HsA6SelZMzmq5RO1Mvhtgs6SVg7J3q9rlntizehC9OSaUCSzFF4QgdTKZu3wq+wbGHVJ9HTBSiDZ87GSokSpA3WnpKYSAn6RO/fLelt/38wGWu0ty+1yDXU2uFVJ0iYgVNoaJ83QhhGZFaOjpHuTCYRG2Gsw1vq6WPaI5AjMZK+7c9Gc2myA0aLrQjiZWp6sDALzg+rMzu5Rz1nvOIfDBEQarAxh8kG3CA+ZnnnHMLgoCMh4G3UdS9R4q3K5BrjnWH25sr1BLuzbkoIFtr+1wSknhtBCRUODJARpgqNr9q/8s19ZjnPM/FkL31oEbQwNnI+SzHPz5mhDLPanKiMCEGark4luskfTSTYOtsWVRhE43r+pjw3gC6YLTgl+do7JduqeGP8VZXb0GOZav3OOjiXpOlToEfSEZOeGDSUNo5tLji6uySu/GC8bCE/kWnQq9Huj8bR2npXLfmg+nw0MbsNCsSBPYrSsWiZQPI6YpAsmQuwrdZIxjgxzUpHGL0rgmQozFWjrvgxxlpY9NPKO5QtWfwcJYynOmE21gTy4WjNhBun6wSGnmTTPPmWyDBXBnb9xkNbB0TAIuvY9SbWh2WMemYQNcMqe3ZzYBPl8qJ8bG4RSxGBjh3ac4ZqJI+pJt4CdfO55/FwZoiF0kDEBEs6pa249UEYTKFziua6DcMZ64lQulfirGJ/x6aaDEiJparKo2QFXQoNqCSS3k6A49VeJqVqyi9ZFJc4yODU9YwbmaHWYe7eCdLy+/KvWy5kbrSXL457TUR+qz7YHOg1rzpt5hyDNuGlWnTRuiSYwwnqh6ddBuIK9BKRsui14DH1K0SaOmAIhWvu4ny31mRmzlbm344jEWaDhwL55XAdymxP+IhhPiwl1YWlRw9/YuYKdU4phmj2p4ErwZkk2IDTBX4UxzRkVaxrN9b6dKgmIceVJKrHE/L9BreOJfV9BgcbQqAmWXNAUJ3+3PGekDAxmO7NKj5aO1ndFkQfTVNTGaZgdiQ2sDnR7Se98JBElIlcROaG0LDTwSiV27iku49lcoP8jDs+hhG1szo8O91i2mf7bGiWwULI/o7ysmxWyfnSU/s0jNfDH0bThYpkJbcR1n46xFymliszVBPTowWoY55w0BZrF9kKBocUm7UebvR1VogTcZlOeGPGPcTgQJ5d5giDlEBBVrCHugavz81Jkkdh3JXu09jfqDo0fPa0H00hRBHrLPfrnb1KNZIkjHrexiU+bRp3AzSmmxO0L6GIu9LWdL4PRPvr/w8wexvHwhMZpDuy1R51Ls8kZt8MueburS0i94VRDzDOSY9AOth3yz0MZuf8JfuVZM5OLr9LTHsbbudK9mTD4iLmqGEMzenez59p2zz7d+hscYwvCG0At766nQdO0eoQ/VQensu9/MODC3BYTrpwPXoZb61mWOt/Ipg0lyGIu5qm30KgBvPLbkWjWAyEu7JA9+4hPIzVSRlMsygnrVXSGNBmKPG03ltq2CW5nvSUCmw7wiQ6dE80lD72NC5N+3OPZD+ibmwxy47XirI6HIHKl7nNJMd77fjiBbREFQwSfoXGyMhHGQTNa2JMkx2qcw1xkObdEsQh6D4ooGvpwTMub62R04eG0gzO62f5J26LqPWzAfWMWtVsPso13ElEfWyLcmX1sq8BveDJs0mZK0IMBANsp6VrPb0ayhBS0kJ+fm/XvmcHQyIqaQ2y3g60Ns/INmGPTJVpRZMEbZEZggB0cjbMqCl34M2BWgw7JqBhX8z1pEVidt4Zlc7GnyWKfzUplJYjQ60rCnHhNiSKLBEEiyNc56iIjSm2XOA2ptmwMDabZ5RtSZ4cpnWZxljwcP+J4IrZbYTAiKwNpAaiGnmlA3EQNlYzwScGxPCT4pyUDYaTuCiwI4ZRFDaN6SKIwX0fkO0InHuN0trWvA9QjfiKc1NHrbJN3qGAfjE5Dn1l1SNrtqzIhOCcvNGcQgALWVqe9T6ly4nte7pjULUPRbBLNxMhbnggStq6gy3+41E8wZpiibS1JivuyFIkJtS2N+el4x6NhOP1rboY21pTatpXML/q/w1QaboV1hYJxUfPMsQZ3QKYEiGdaBG4VIoOev+czykbzn0qEeBaDazFlD81fbpq4CNbOXfrMqISPFNKU5alM2ymdrfQA+khzV5QGKBNCraMaXNJUQwgOfZpNwyPwhStDccqd87TpN4wBCNphUKzaatstvySpklHM4xhIZU0xKfZrThk6fwTcJOkJrCS5v4nUofohZNVWeQnLdjNnlz2qTZ6X0fPRQLjVeIRncMBobmONjjhG+jELZlyO3oAE2V1qq+latIEztzGywJaKct7pRlhrWrAeeWKGdlDed2mOMBMoIMXDcxWVrEmiCSmjL02wrps81oXrza9eTmW6nYjUQtV2ywYQstZUZCT3dw8VVzXrDHgIcAhaJ6In23ldALJdZrLdhNxeLjU2FrWQPgL7gpiflB/OdbbVhPuK7PFc0CjieiIvGbBmZTKI3pjKDmVZu4w9m0XovXYl6XvsU9a7HPEMEf7I0JGm2LDSRR50XUHRufy0MJZCicNshwvDVI2oSPxxBZ0R04NBkHzPfZiyH2e7rQ09kaxh+vE1/vntzQebuHDivWqFzMlej3HzJdbRG0fiupQ4jermvzN+5LqpSz2WWf0gQJlww2e77q+MoB25VrVczh1lPy7rPACtGJXiLch7l5zM/I5/mDOO6bCLPDGSdJzjVEqqyA1+ap7cw5qK91w25a4CC42n3TGq2ckwK5yaeEC8AmCFbcw/kkKOpxFhL9xE+9YXcHgdb+LbBbtdTFT6xxopu0UPxIblqQDiiWuT7ou+Brd/zg+50B1+MOeVtOv9gCDJwYSKctTJapzrT6Zgl+zG8bwYT4v2jPNeUNpBwMiJYcES7iJtRdUKpg0XXA6buft9P2fydc/DkSoz1qlRPD+buuhtLMRp7XQTvqa9NCQurNtQjqZ2K2SdaR3SbfWa2XeJOtgqxgg59UNi3mWkHVC4SEGx5i4CfcO+BQkdEYbobkMC3qMKiqrmN17aHaezAMV/ojKj6u6cBzeY7repwsH5fe0dzGmodT11pF61K8GGn9g8eCyLKrnlnA3iIGHu1T0xysbUDHgYkwF4lIpCrSpUIjXY0ihB37f4FYyhUO+dmOhRpGbWaQFMKDWImjnnYyNhCRzdinjiiMP+oxjW75urkOu1L7rN6dW5gHP6ScQiNb0aPJ9/tRyDJYiRs/ExfREs7tkNO1q/P8nrV02Im7GIM76xF4QhsUa8y1q4FZ4dOim/XvLlUTlvSC9pBm0ww6W4HL9Xo0C3rZbkX96apO3IvPut/0K6doPJsB9O2kMxTmv8ZJK8Gbky2ZJwiZXwenGLS6T7f7d4uGF4QrRge1iJH6ZVNCg60tk9YQxoV1N8+Y1mN0wpJfAmbOj430hcnpzTmLWxXUk7LlP5MZHESHSZbhqivf4xtLwwVN4xHMe7m/v9Ri6R4mw5kayNDLP2FJLYuNnzmIgqE60zBahGOdRtlntzw3QEgAsiU+FyY7JGcYb3b0Hg0Nt5xVBDfqlrJPRKumM1T8yZRsnXaUSFBx1QqWo8sHGLinPSeuCj1dCn8S8lXhHytcyemaMKzj5qO1bJ6F0/OTPpVt1iyGTuc/dGofZQi1l0aieWZnJtHlGEcdTGlsyoyYnrSHSjFWLoE/Enm0BIpJlvMdk9Reb3FcnvFxK/mEd4sNS6Egs1b2Urlw7PpAV9nehU/9QbJqgB10brLTtrueZ3vWaWnW7KN9r+u9IAZ09jAQ0Z/v3DS4Sv9aImM9TFAJpcJKHc6riNoW6bY9QchvG320Fq9StK1ONgPaD/qHWNF0kOu11EGvIrceGUcewg140QMm4u9RQiHATnE2ldYmRt+IR2YkjAwccY2RhlRs0mO2x+g5ynn5iN03bAOylN6KbLB0umMULGBHn3iRkmoA9LWzoHQ1XtY8LMS/W/SzcVHhBPQEgYyCti0GSCXaEiegvxnxmkwc4XmxgQymyVn+wcXpQjsy9meUdQR+qzq2QMZAuyzuhl0XLcGWJ0N2OmoOtsy6byorvOsObSiuEcDTX2+0nMyblk8v3/BF4c9g3eRuEiX1v/Zx6zoLCS5w2DoQ0+1hYSxaJZwRS69Wz17AZcTyX1JBlaT0E8yPMHIJKaFrXLuZG0t04OjoDfppqqlwCjKek9OOMhCIqrSTZD24T73oNzvaFiEuhESHHS34mr212gplBYkPGS8Q2Ku6IGCC5WmPwL7mgMMJd9oIgjSIGMz/YxNqCyw4tZGe9o4xTEQkxtq1HydtrwGtXK+JlDaGMdBvRfPrnPM9+6gg0u8VhnA0HfEbK8Yr6RKUxBFjGxyOIZaoczG2pEwwcMecaiPdlPsi1SZtYHAFwfOQ1qLpmEyXz6XN9JUicQ8MDOaFPCCs23bdTzJmONNhiHARM7/R7wDchWY4JIX9H9Ki/H6YKjKu2TzxP0Fo2Wz+3GKL7RWls6cxgk4URt/7WX9InLtpR00m4bEcjHiB85jKYOuoTxFAZJpTqHZB07WW2fgk36+bdT1c2G5mdaAhmsdIXT48BMHy6+Yk2JemcRwyRH/gc8hZk3M7VKX9sJJ+mhpCIzBzzIsaCeeC3P66CP0zXGgr0tbmmYgOKxk4c1VO2LG3NVCWqs26Ca2+zIe6xQXFwyR4+Nr1G3jSEk+BiUgD5uRSxrxEsR1jTZUr/JL+lPZx4dHdDwCpu8sdauGUm42WkFUUsSFxDsDK5VtmP1LlohdtHDmmoM+gmRD7xL44UBT7munJM5KjvNaMk0YDsCaRGRlg0Z4eiGzxTGZnd1b27s7DAoSp3Ad+nWe0Zop+ybDUplywwpgFz9N9fBNZgtSTitd1cHomGcetm0HfbnKLvRJDQ6sUt+u6mBLGVUbXnxp8Hv4cVkhjAjQcIYTyziSbGtNFBZOwQ6YBlCrJKcYDztveGHbDOpHoooNi2H/Dd6tezwU0iYrKaxOs5cEcNmeK0I11JmH+2kQ7LyT93azZHEUacG7UnsZqScvjaRgrUihnY0JlqHTDCJC+MwI0Q9tvhwHDFU21V/Znp9AlpoFl1TbaxbDnuBWC7caBmBi2H1rXu19FBvHTLfzpR0w/cYnlMcOhQTXUV4dK3WoI7S2ygxZ/Nsms6RNW1KQZ/f9fG2HJsnDwQQLO+hYhiMAS6ZxHY5jhGQ01rbsu9nSRG2XECCXwfWupFUd17m67yjaEISVbVokYIRte6WlwdKE9uhnWsi4RvSgnBXlHV7PkwK0o7Faosck2CYrJFbtZLQ0EbfON7FeRLjBPMow8ISA5d5NHcOTf/XwerVuK0bpbeyfTEL2rWKetwiwOmGl605FWkmMru0RgvQpZlBZDNNW3xHG1+pW9Pr+l+RTLeZsR7fFnmZDP4taXs1e0eyDs1jsWZDNAeaqktgn62A0jcMTyyPvylA5Smv2ev49AOuZFPQZYkf1z8RoSTGllrdAxhCFkGMIXm57w2bSTH1KR9LKv17rWQqk8Wxj9dPj+bLZD67+CUjXKWllP0Mj62IcxUB3x7Hvlqb41KxaeINYr6ZXjK7Nu4fxGfpD3ttZ6mRsRzrpug32k4k0dVURlf/KNoVne0Zy7ECj3feBPExETrO2XGTom9N0dmscI5bzjRB0peZBCt79GEKDe8MuPnwNlkbsNz2x949JLyXxTxjN50TiVyBZVEg1AYBQ0qTqur1uTGAuIy3YfHrz5Oac59jB2wZrLp1gtG0aJbRc8dRBz7w3A1tupPiT7UTjbx615M/e2TU9MBnrr20PV+fjUu9Ye4/zOZH0AT3KuhF4uA+vI23frHLbcJjy4yAlWBi4oy2en0sth+hVXNdPodznU0+lSqCxYmdv0i9cVGf1/M7IekOz6NMDcOVni3VPFrAu0/8GDvtP8qd3kNTHHiIS3dGstY+dXuFwIax6VbjzW6+q402VoZWJylZK+cgcpvELJG2azSyuO4a1S9XamG45GCdSDKs6aXpsfexSPEvD5twnziZaV6hmcZJpLfRDjJZ0Qolqqdie6zB9SBCZ8HLoOHNMSMlxiDsgDjtqR2FzpRpiQQ5vv9MEOResJN+m5nM7epkGsinCT3N0Shbx4zmjpVm7YDUcIwITLY4wcga2scrcGUcEJzRa4zOTy2exx0rqUal/25wa331XLZGXrVutp0HV35GqecP+OU1soG3pI+O5Sa5j0OnhU5M08OvKG2P0lY381QR0uItsvoJJPWmkqhytBO5h9U7SXJvxmllrhSYb6/9MwTqRx7M8hl4R8CGeHBIxzmp7I0u45oUM936cKnJvlq/Q3sb7dKdfQWhxPT8Vk263cCbFECuBZrJ9AXZlce2Oe7XCcsiuwUo8fesl8zxuZ3oiW7OAIzX+lt84x+R7Hjiu7ZqTgpA9pNrNjKH2ess6JqmgiSDiKy0SFaCfsE36lVgKX2erdKMtovC0gXZNKo0gRnzJwC34ioM5KRenMlhdoo230C5TEsiCGLlzY57jw6xYZZZfT7npmrstQRhyDx41qFotcFxCZ/SQiWnL2vCmaAsQdeoH9HpemCwIJgbsn8h7OlDHZbJmkd2U5ooSt81+BV4iO2Vu0KSb7gSC5/ep/DbYifnzR5d54yCUkOwZnXT2dca0YoHcUtodaT1bCtZt9xNG+kzrdYoptfdKQ4Wy0LjDl4Uy5EuToc+BjrWKPO9ozGTVu2sIc2qgM0jLRRFFGpO16oJEgQ3o2fXwJFwZ8q+m89jUSbgmFKTSlGRzlQ2kUAwGluRrVC+m1HTG9ONZg8vTkTEIfZqgFN1AGXETUn5lpHNR1Z2aSPjWny/WaCZ52yfDlTCcO0eYSTLT2aJu1OO4NYMiy+ut/ISrtbQx0toYc0So6EQHAvmpZGxt9r3XdJumE4MmJHmKtMdrG6AsicJ1NdB6vu1M2qe5nFdl6+iM4pWFqhjKQF5cfNR2R2VtZm2jQoMfllNUDF5+1F0qqIcbUw2voOf9Mpa5R0+aWhAXQQgY/ZsUqB1L9ERGfJXQzzYO9sb3ZKN9IAxu6UwJvqa30by6uxjT91mEoKS5qMoNRo6HWHI4bhy+z5LYgjNNgepm3Vx2eJOP5und4MeQGWazHrSbjrWhbFod4nR2erXI8IT92OeDmTa01IOCyTKU5mjAJgoYFkNm4udEXN5UY7w29CmdLirfZVQU2aEcP4zNIZW4iGvmoztOTeq0Cz5IbZp0f0OzKdSelqxt08RbsbS71h+GfEQ/j2bIfDYU4zvi23s+Omsbu8JddquEsmtRNUAuBetQ8KqwHV0ir3BViPCqOZyQ0vzppj9ugOZLrMwMbp3QFdK6ByEgGBk9Zw5lDD0KtkvecQmplSTaalplEPE6Ykd1/ZGRkcjrWQATMS254niLFxXRnI3aS6kxUJ7AesFRhpTXTzsfKRLlyl/BzQR6rrjDmUb6K241oJXsXW6HuzBZnqifVFe4AXs1JGIcchHuhefRPRlyIy/cmNQPTP3lHHKJVoAXsPr+eJfYcbgc1Mj4ayFiqum8JfTpSfjmOz/HJGd77hVMw2SDlKswb5Fdg8qkxz1wod/n2O2AdkKqMciuzQ00FBiyrW9vZ2FSUD+Yl3fc7rVSw144wRSiyWfSrWFxtPU2+h6NodAu6CTdVlftq+I4hZ+uit0RVhLICfjbgzoFrESMrgm9PLMnRkiiyhJGV1dXAuHZ9ELOsXK0pPbNsyCmG2e3Kpbg7pJY9nBg9ew5JkrPGfvNzWJz69lSyVmmDIpm+mKnRTRlb0MCNhK9DEsAaCu3M6l5/0LgxFbdU05tq6JcUaLctmzePZvNETtDq2yDrKGsaVpsLjEvZnq7R9RZkBz/12AJtPWHq9cIQL7/s1TfWqb3MzMXSM1m6YYDdbj+GJrNTDqFO3jB4RANkP6MI478US5HNuJm0AsGfmRhM2kYTG3Rh9kXONQcpF4Q1TTizbNeenalAynxXkAsrmqdI3gxlTxNlQ6sL3EffppaLt/aQ2MecBIGHb29lljJABnjpSDQORvfB2tnLEzTcHEAj50JVTzIPoa0TyJjrdhyCfe28cz2OtADE9uZHDjwL6dEzczdglkJg+Z80tp+WlO9L6fhZs2Tz5Qtl+ym22Uwg+u6IyoQ4Qjd3yxUa030OVjNxIAaT0NSbm8y3Dzuq4SwSoZWD85aGN+IgIoSlYPKT5ofcDTOCSde52VjKNXDmlOsvS2QSDFHhg2/S8+bpyNjGWVjEhSeoHlz0HpHWcknxEYrQy3t3vyQcn/5SgPW8QrCy2cnqMPU4by0eV+5sfXo5jDHLvF6lnDaN68WtKGzpan0GD6wQyAw5D7rNiFiDuwF2aqvjYtanSDT/IT/Viojomn9lTxH7nDHCnpfUYKZ5RiJnmJznJKJobDM6zoUhsoB2PGtV7FgnWM6XEkEzmCm0hzCSnkjwxrh6xqTtFRc/9IH7qGXx4AaL4ciuuYgfNZLryTFVm4RrMso5SCI83bkKMxDbaJg9rE2cc9GglrGS1F9GEzSLOZbXw4sZneiPC26o0TuRaHzghluqsLWEyYmtM0bRi/zJGDo97SQnoFniQzarTLDWvp3bK2P7wiSNfmlIdG28ZRPAJ0YE61s1mII02/qYwc0OpHpUMPgOe4Ykj+pBFNDLH8ctRJxaT9apLqj3SPGY9zdW369tzBujq5EKvrrIf0CPGyFXOPPnC7JQ+HGpSDYy8EvJgNJHa3ii6zYs1UejxLHhNlObyQx43DTNZRMc3eWqVrKxrYk3L0SS2EgPRWnudl2mDpORsEL2AWgpNtlo7JPFEmddSOeqgcrgeoIE0tJbdtttR+NfzMT+pc51f34xqlCk6skzCgTqRJ2S9qUesIra6iUphOR13VZM7CJytyy9lAopfgCSw46b4Xt3Txmkc+sOdw0LdnasRzEspNCQmoWg67Si5rf2TpoRFGffhOSlzR7DmHr0qFaUe9ZibjWy3OiaYUMScWPB4kW5ikcwF1H/4swC2rUffZKQeSyDrZzQjtRGwDzaAht+1xSxZV7DxtJaYjMigc+dwcd4cz0q3xXRQxczveFMCVoT0NKhOH/jA5HsLyMLSjoYjpHmPHwrJgZJEIpiHeh1ZFBd3HF18evg1ltamGiqmmWY9KXrsI83GbpKBdnJphmdFXJszRPIqaEn1B7aQW3aa7ism3iL5iHSaqy2NXZnfvgIKoFrJG0bShj7I1TTogLJ/5CjiNKS+kqzbj4XXiJVpGFz10fmjk/PmBlxTzgPoXC51Hq3tUkqSdry2V5p+TNreGQew0CwdDLP7O6dx1YUewbDJNeuGixZcaoUD3A5r4yXwziE4yaQ4BFsST2zP9fzrhDKwwB5YtNWBm4Cgw/1hGLSyjmvkjvimiaXdwpp54IVA7a8NtspfPXMwCUvVMl9HjuzcL6vOU2ayZyANpNZ1C1PM64dtH9DsYg34TZ+b9HaJw8jE5xtA9If5nr4N1Aeosnc09mcUItW4BC1sR2Xu9NPdubZ3nTklgio3aK7goX2aZMPytGqdtylB96nbBiSwa2l9l8QtMxBL3o4+OnxILEMniecg7xJtXNPidIq0H6FR5kDkeVqc6e7jrlzyBZ7YtBe6ezbBnvl3B2XEZlHSupRH6I3n2rPIyymY9p0rHJEEXSgSf5zLjlGXX9bI2yQ/P8KYUJw3XoPvjAhybu6fAenpDPcyYud8bAW+K0pOxgKeQiu7QMN4k5Jxjdyzj1yL+ikoSYKkZtLQ+CRlGUz08GcRip96Nmktm2Vm6z834+JCGj6paTMXOhq62xcY8xc0YGkKDN2hmTzwXQ7HGjjqGwYQ5YCbuVLlt5JlTye2J3A1XRkxiIBYZN81RdaEqdZrurxoPyeHfpzn8J5bQr3cVGD0Azl46DgfhuPdP0/tXFKyJmin0Blx/5TVc2QzjImTk4xyoQWDi/Z4ORqnPu9mrFixIJmSPUhzq97LPjkk+8dtmgWjJGziOdPbI51KcedOjezDHWuvS2fNqlh0JS24TsyJUdbcxHw4PJNiLWIYtYgBi7jPuAFwa8qPWc6tEYbm2yLdG4qgjv0hjT7O31i4rRlKZegcJxe6ogks0b6Q3rDYBH0rHJDjLJJJgNwIGM4wAd67mSWrbgtkWWLTjZPLT3kpTXNcbsWqBI9nqvc9J8Jjv4trmb5qK69ZJ99mQ5aHUvzyUXjzBuEblsIXxCRvZ25k8QwMj5E+d9wGsztONzvL4xUGlDT1mcZ89YlgerprS1DFCYMuY5Vm47zLgsCPZ357M8Cph9JjIsAZY+2y94dT0sgym/jVdoTB60UTn8CC3kp3NDGZQb5lLuJ4OFNv36G/baDUaQhIvjmcEyIhODYbWjPpU4yOz4ZEs2z+1EDDK/kdRMS6aQ0CWopRjLDt9u3a1ZLGVRsUdhNJAjBIbniJEH7PwsN82Hw3Dn1kp4JnE4aEsnFBPJfb94UedxC3GuVd4XmXb9eGJtnqP2FrMjMeBWM2o1rhgyQPXIFyp9zrZFa9ZvFir81Z4ZTRtz5efnjdk/lXbxaLrL4i0ZR097JnXtGQ3p+mrPiufm4U7elRtUM0yTmB1joApoO/PcTnWNyfy6zpzGOJgX7Eu8XVvQSlEVvTZfB20gmyMoRAwanpC99kiGJY0oCshLK1O9r4n1CpufaPdABpnvwQ5pJ+jRvW6FXQQJs+Fw0PpJ+dK2eAvY5OjgmE0g9bWQS936qcA2RWnK7P+CblOtzW67a9No5rb72Jg5zIsQ5eR9s/32QgVGaRnkO0ijUf0Qpnzhmz2MnbBKDqa6ZLXDoplVnPTZ71mzVX+3M7Bd3ogR0H7oSAN+Bm2oI6/jisNPBPZOn1roWadLLNDjtpM5lE0z0X+6r7dNyPkFcLb37Nf0+3m2nDEbOYssI8/7ypyak2iqc5bJp4WzToaJ5yhMue4nW/Jrb1KqNIMeiVN+OFQ8VzoYfyeYl1YSPHaFlLPbKQnlP5j7pvjGO+NHknjZjanM1KbXM8L5+KsdMEQaTH1iAbC2M7R66Nbfu4Rv9yn9o5WdaBOy83J9vjfVzgRn2gtG+hHeTOO3lQC1u+aPSNvu6+F7Sx/napLgua3V1Oq+R/otL5vlLVsp5+kSs9hK7suBaXeKzUNHDS0uuGIow9gnpLiKqWYnrtxP+0nTZJ/pf6ygPZvpcEUpgdPJ22pacxdTodKNs3hYU/f7Nsd0zNJ6rBt3mOK23UAsVpiyaUaGXiv7h95rJfJvO/XJnbMndoAYQTtGm5tLUBV15EB1P6G1Z9XhOpxeJHToz7soJehnXIucTRn1xFZ63D4sRIsDCBUSGHV2q5Yh08fODzYvxuiJOOF3ZPL115Jogs8+4atZ0Kpamwt18GjwMzhVlmh2UjEcCco8hxKLZP4VLiPoTntqtIoBRmHf8bqle2CN7qz1LR+zZvWOKQ/hzPGaqgyOSBEBzKMfqQKDUFk9m8ToukqfdQsXA6Mb3ZnMjYLWWdYuehih0yZ85jaSCyWb49VVHsey35+b829M9axODSyhqxAMq3q5+87r6BdDQdtgQy0CDnqiDnjaW0MtJ9sftzMJbOcTVmWWL9VrPvGq0Pn6UXshkpVcPahpuC33vAaWM88vR/tkvjmlyFLJMGLW9C/JuetLYlvDlJgBmkL8jIhGidHHTlsANpQbVzsA6GqVTfe2bdnJ3NrYmM1Hx6PjVymRwdLNEZPgihZWql9F+5siCOPB7HJtlk2T84u6+hz7O6nb92ymvWLYcuF+mEOI71nxi0x+6Bk9PDZt24NKtH7qjVBQtsPZR2R7vR/3aeyNZo2NRPRufpnCw+UGg10bHBufLdvkrfSL+QnoQCUs6njzKFriwHyTaFSTMrBGSeUv2Tt3k34Qbmo4M4B74k4Q2u+o1qoDCBdJk6YWnFNcVJ2OApmjT5JkGesre72q+sy8yZjXDf72RdZdVYX3szCdphqTkbJOBnbI/i77VwFZX49LkBRa4kbiS/PmJPGfiDqOW0bbeNDnkZwPWawo8F6G17zbCRpebVMvYGdiTtaN2/C1Uesqw6jYJ2BU4u0ck+O7n+HQZ040Bze/2el01SIVBHV+Vr5PNqAOAkDKZqRpL0kTaAkinG2dpAkIWYvl1atleb9BJJWQfEaVkwUyFFqSINoCGoDw4qHhbixyKn9AjDPpDGfNWDlYu2IXFQhdEwps8bCyRnZZ1205b8g4kBbdfe0OrDaOEvr9htQnOnRA+dWiUS37wYQTN0eBNn7K3WlSbWkBliLdWAW1MZb4ab7xJRoFPhihZS2MLMrATWgzpA4ysiLmu0+Q3tlkEN0H071B0E26+yHct1i/207VkuQzFrO+fw6eodVbLThk0QdLu6S0jdSRjhbT1e638Nx2R0TIiOwbweNt4ZzKtSd2tuTJe5p4cNLZbS5tPqenswwUtpKBKQeFXG82pZsWI1J1m5+wvEYWYc/Jpt0g0jGfJULZnwgKS0MWPmk/7RoJnSc5nbBtXKOPVbeh1m0O26MGu1s7Z2m1rPZYbG13An5V98+mWCn3DTpuhEKi9bR29DROS2HZIhuP5yxjaOMygepukzG3sYN3S1s4/116RGWY9JuzqF82cx7nvSZ/Wz6o1/xmA7UbEnR8CflmyYcwfcrvHKZ1aT1jWcetH9X8euiNMDK6QwNjD6Td/QypqGPWt2bOV0MEex/HXyOcd4PxtqyiyqNJxGzfK2mo3UKuGrdsRKhsRjRI4WQy2DRbFXsVUBZbzFY7pcQN8ukVS0SxeVctZsiUY71qJbt+SMlJDqAlcwZpbxCm436TdcBlurTXmjj1Ngb5L+dcYeyEfcCKcfGLRD5tK1Y0+muTcsqezzyGNovLcgMu1GXcH2azP1lX7Uxy3I5qWzdRBsIa0Ir6aPt3/mr7M9OWgrSTDhFiBDbhZ4LDKiPgcfQn9qyh0rrafzvTApjPoj47HHCMgdhkkjIi+j9LLrJbNztp/2sbLWVrigcNXgaDmNsO6dFc4JuveGyNLlUP1jkOWJXBSnuMAK3k6ET0tJGAQHIe0akQymRH3YTh5GUbdAFhoM3xoUHbKzk4Gx+zI5xjogL307MlM+cevxHQYdkJgIdjrEbttZB+U7DAZvsoyR4bPZ9LHGfN9RCbkf53p5Etp0EE60u06Jbges1U9nIYNI86YvfMMpis2JD/HoJNU/oZVvYSBm2MySB6Lj0XYG4eU6wAWwi0rdFxSsyjGWnHX9+ieAyUlkeVzBTWNfZWVnjoqMTYlrMC4TGAyvLbOouMzyIn+99B6eiKTbKOjGp3gSZ9ZC/CuPT/A3LnQqwOj5BSt6xmEaHeMbrIEMe6Epl1+HB+LnKYAb1LyeMbACCcO+9PPLM2ksqwNllfV0jVGSPTDK9gjw354YGckRiuOnNHTOh9I3JPob+C4YWU5o6kMTXY00LEaYCfd+wbAxyepRGIdG6XtNwzuWUM7dAXm53Obozx8zemxkcuAuhNbSWP79+NAi63b/YjiSC9KiPpKbCMymDWjKYpiWRP63qY38VSpNbotpDh4+JL2ZNYdtkmkInUJ2UfzNt4age0nWps/M8W3q6QObAY7P9CY5tVtboKSHmLpXpcPMQ8e/9k5sWsqa14Qa6J0fTWotw+Mbrn3SeDZTiN7HhEzneXAaEzJLLmtSChUuF4ZYfWq7k1tfGjF0Si5+Z5aZlog6NKMG0P0PfuOcEwYVu2F2oDmQJtKU+sFbScgWH6yIKa/fN5j2PFdQMUSJh3rua/rSyyB4i3Ew3hevxZuk46Me6RZFg5I5rnHXxdGWnce3x3ItLMtrovWSs4yydHIOLtU6NEDa9P664GDjoGpjYTJHhpVzRJnbq/dfEpOzrEQkcn/Wb74d8jW2pvuTf53hViyLT4em1RSBR10qmbnjpP/bqBa0kKyDJQ5WHiD4PjVFHodvRIYitf0Fki5K1RYCGNvqmK09efMW9rKAQYWGt9VRqZtfn5sUHKh/qTj0OPam0bfowRb4JWhFWeNIMxvbk/jObpOzfsFPH1kpOEjzRQOnSWzc8mQHNIsRxMUgLqb7H0xX7O5t8dWVLg4BehEw00v7lDCmCWWlbAmxt3C0Z0bSG8c+xLStafBpSZ13J4bEMLfmhUjW0YdCCKJJHymSeVm2zo6Q3pIm2B9n69jE0uVnjT6RuUHUJr5hicKTWn29FZIQBQxiubejc605lHbbJqTBgKrd7X7T4HmJ7vcxlgPQw2C7850XxabfNN2Jv3gzdpYoiDoPWwgvVA+sIrP1abSzchA27DQw0GcGIw4m7UC8mrxeSdI0rt5gwz7qAz8PXe5mfcDcekw3/ukCd92jBND7O7ZjRAxKPEjL0MCWi+Az0Fs8JNPPbEp0t+azNjeWBppVwWHoNcNqh6LcjaRZolTJGObcoMzRGXd/HTtlxc1CB63fT/3miQnG+BhVjIxA5Ji0lHWHJrdf9sPoJa3Yc5zTo5m1PbheuE+KQDoju8992DCbWMFpbrPMQ5H1MksG7iM60qUxnU9damN0G9OQoornwSvQNz2bPscJxB85IsJyYkG0ksa0PMoAWXUrKHxr/G2LMYQWdkkGE0nPHFpX02X1bwpyo82ZjnO5sX28xhUZlRD4dGXbIi46XCOKiR6+G0Ob2J4DJ0WZab3sWkXH0JOZh63GApmrA2iAEXqt4SeHAcy3ac8e3CEnD510o5Jw7ONFmnIPNl523NGHOVPXOBGZ7VwgMEQRt3NZejJZpGTcIzfDGKND7mmNpQmauYpbUtWbWh8xJGbZ9URARPPQEjYFy1d6+gIdBBsSI9OV5olj1qp2Npcs8hhwF0U/FGN11o+FAjRP0eemwt+ZRpN6gRNldT/ZnOu18fZSmj1xR4EYrxIdqK39YaA3MK06viQ4xriGJPKhZ1psx2R9RDM3Wof3RIVpenDi5O1BQp4CW6uO+yZD+9jY22VzeoepBc2YHqFANpAGjEvQBhqI7yyCF/XDT65F8DFMfjLtKhjY2u1+UBiHDHeDiAUJbs53b8sUuyh03P5gAU3e5YgUMH9WDSIn41ljM3ypG7Asng6xIrA7NrOTILTGSDNZT6GzcgiJhyI3lPHoJTgdMa3zUyZri3z5PZjFtVhZc5jLo9oz9w5da3tkPEWWq7cU9pqkxiem2H89vxZyAqH6Yk5Lr66yWyrCWGW9Q1rote16a7aRcfkeFCTWcpvEE3H7bC2NdzGxz9awOr9n09aYlKMHA6cUI3FJi00LqNmkQji5BMZ5bbttwY1MO6bGthbGb4LbeLr0jJj9GpJth1GrXNefWnxGWfxlDTNnHa9tjWxpnuowv74409QzOEkLZRTp48NjnppjcsmG6E0h/5tIHVK1qEHt6b64gzGWNgPIxEj5UPYWVaHXo9NevsdPm1aNwUXYxrnfYoIXjpLeV74qsCn2V7jGU5vyKSlRYGgV/FpS1ZFOvkS2N7m7jET2a6mMrfxbqeI05Y7ddin+2HXo/haQbjMTq7sAzFUJT8ghPnsiPVsY6eotXYWtl44LZh8PQutba4NzJ+opHWGMYy7xXybT217yOTSjMKPqxM1honbX0X4hqjE0UpqcxzHIb+JDmppyfcDqkRuxzqOkuN1/m6/89InMZ0A10jrTxthM5INzXiCV17W2DrK6sUfJkvnE1RrCV1XB6gls78hqlrBg/oV/UPvr3h9p56YmdDz0ZdlkN5H5JM+ReioDWGbkPIwDBGPsjsTWmqPDTifZJ1UlbFaj5W+6PIq8nrMd21omxEzQbuEEfB6bnM3M7NF2Di3DYcwA465uQkOHdY978wBxgbknOEcjQKmhYtIcPRZ750jMvukPWbe6xP1Fdp+3vRXaR9C0hq74/DNReZLdPFPtdC2INbTv0jZy6PLRY/sMvz4V609tjp8T5HQp4d1qyWXbfQtm96lrvQ1FsRyIhnbVW1p+xyw9BcoSlAytg7Dn06LusoUy4PrQzKxJYmZC74GRQTJZJorszU8Zu+NfoBS/bDmAatlzAqEca1m7hnw00GUTHrzGJ41SzKTGAdc901g/dxujqC+Cml+X4cvugf3nPWbZXccv2m/EfZziTMqMbWYEINnjxVgjT+YfJgzAtrnCNWymrBfKqEU8oNOq4F0crjewuHDEKXGD0rTYf3Dd0+hv/Xx5qqkJ7paiYN74+R/tCa2t5/Uwn7KrNqbWSlrbuOrzRJYc4LyTj1WStDF2ek3sJAm677tKRmPkdE3+l3xw26aMt1hbG7JLF/vjezIUXHUC8bzpZ9chbDvZ2LaqatvsetJV/vTe9gQrVg65hzt6/GxA3LMgSzbQJDY/7NvMuiTjEqBspwNOia56MyjGyqTOYBkVtLzSFUT1adhRP9ZYfjd3TFLnIjM7/JfTdCxDtDLSQP6FmyFSm64tIoIY1QzjTrnz0C7GdH3WEnqXYPC1os4DqYyqBzJepo3yLb665pNw+J+0A9yyVOv35E74Sz4++4zYlbGW6GyD2knVjVzZYYY6CWll82k3pE5MYDSc1svYESjZMvwb/di6gmrazTifjnFN3qmhoslz6DD49loQ1iJGGaDKCODxpJvVL5hbJ0t86AVsdCBXvUyh0amPx6zrgyDrFW8fPcZurvPxilaKNzUwW2SI4epnKWPbxnr+NbrWhmXNhUUf1M4VZR98fxJz9HC2uqYVPaNjB1822as8AoF2eoOLQiBp4NR7pc5bKwxo6S2P/4P+1AouWwEyjQb77MbxJcUDRqRLcsw7uUYTIWyb16DaH+C4Yz55iARxEWZpgc5imLoElNullq0+Qnsd1NbBYzdMuqUFu1UtYrN1Na6IwtfK6ZLWJc6n0Ciap8IFYtgqJNeKqXYW2M3t2abrGDGfFt2hiYpD1f0+/IEzXaZ4E1TBlnZ9bp25UDW1ZrU1Pytb6u0MB6HAI6nBhW7QeDlrkjex6FTDPQgVfQy1QYozSpOBOFc/0mcjZINg4XJsRSel5gzqhvl7OmhHusNIxRQKoxZnj1cI8ra1m0z56HoLBKWum0zqgFIRdUq2QCMm0UmFHWinbaXNtQuQbPHyPsaez8j7lD8f02rYdK5etrYKR0kkL8nQG8sXL9pvGUJij4ShiM7m8uwshmQ9mNfRnER1yHxaUfK6erng2QrpGO0UD6vtI7XXkDsw/lr4WMySuH0rTuwYQfz+/rktC0gWEnPa27p3WOwimj9DkrJr7wupGWiCKHO7DZjCra/t9ecxoSU0ppYfCjqfRMyo8IUYAOyjPIfR1ZRhyX5di+mD/XkGHxmNAee21Ah+liObBqnwBUltjUhP/EXuvbbSIKkFky+pOqL9KQvgdEMoUY14N7x+9otQS7hvpJlWbzR1F2uuQ46WpmFp2tbYP8TS/u8Q3RTMgCiJqcmQdTUF8OZPHPFlvQwC15z5NjMpr34/jWhPa1jtqPgNara1ELMAxp76IP0Z3cCLwh0wtGG2Z3v0AhG8E9QmZjkdTiemK13qMlpSSY7yaeM7hgd78waSbRgs22+xQbOrjhYGzPXp0ds4XW9/kjNSZpO3B1EPEMJxGWftU1mXKDxiNaJMC/7JQIchh1kJ8ImG7foMor+e7fNhBjz6xdOYEZ9dPWhu0o0egt7MIr6eRsfuuRtzUbhn8fXBt53rMc9BOFAi9fqMzOxEHCx89fZkOrPSeqctIQSanesf0mF4Tb8XvOLST0FGNigW6f2TEAQa9t0NXpkkDY8OKlPSAoc3EyzfqexdraOnT9SqHmXmOa3Fe6NTM67ddAHjk5PWeXZQJ8qbmElzLEieX/RNaZ2+sK/ZDkbcesS67Pmk71g9hLprqXc1TjTy0wAb6DsllWEO4lLxoTvSfsYLRsrqhFTMwhmdTcMVAm7gMMjpm40vTsYYc2sfE9/tCkGYKEvRXnoUJsVEkH1CKec9IjENjTr0cbl04j+A2IcPSxNg3HwPbrt3iVVZDus/DOeErJHlkEN8r+5llIqGGe5rLz754rDcV25LdTWtjEmznX68ucHZ6hudAJhnfAzEQZ2t1Wd6HHDKIOrJLWtebPx1QkmPyHKXVv2TxRFb17MSTGYKrIl9jqHy+LrjeS4QGsjdSfcV7dNv6lzp0srGjGDFCjttv1kqFZlCc/mddjCeofGi23o7PzSTVB/+LW58QLEPnBFpDC81JeXdQwNjhGM5O5cxT5wuiHDWtqZPuPylmNYTi9ZdJ0j3WU31OgfEjNCxGe8h4/LVpEXX3J6k+0B4Rq9PNZepqwwJI69mTztZD+HRG4Xn7NvqZdqiO8WxmPbjXjVS2FaZo6DMI57NM98KfX32pLkEc8FuhTdbTQafOs0iZkls1dT6th0kI/mEAzsUYRacW1aOws9l3tzOS896GTtjUhkfzdsBsJJ10VYb0DdFWIA/BTLtoiPYamQJ1mp2+oLEs3uwQzN1b/+9KkoudtFk9rrUI7br9iyVwpyws6yoctwL4kFpuDXyWBc+CDZnxoJAS7bTi21ah7XFQdvJv1m+Fp0t5u6VXdG0lgT8JLwZpV1D3OOzfJ9vkpK3yQlkmNKU6h44y7Pu3yypjEIE8mB5SbfERVsf4zU5nMWMWNhzuAjqekpj20v7OHjiI6RT7Ffum9p1+UZjIM0A2Yr3dFPlZzQ+ZmrXd4cpTR3FnmT6DIRsH/Xip3B++A7DHplsLMj6wMkERBCVDX7Rk7RxXCagIiKtu1UEvENuyfVUdmssl4PmYcbS57jgy2y14HX8tBmQQ5DbmdovgMm7WD0S8ZvKjdItsPv0m8GlYj/2RTrbcsWTSvSEPbt6MNMePzFdPWpkm2yEYcTdLXm8f4mtlow50kY5ChdYgZI54vFJggPJoNpvaTiPJ0mrVoXsShNAs6jzc8fEbZ/fDOuVIK6s7Z6zc5Z+CTcw1mh+P4ZbUJ9Y/OzifMGURqvXQbFzWsfFeSz4s1WtKDzr1aX99Bypmhc9lJn+h0GZlGfDUv+k1vCeRmuQPjXpr+DMW+TIM1B9u5A3ORYzrcyJa2g9N21sWfyhP4/EN4dh2LXG7OrqQwSrqDfjghOhk9K1XoeEO5tEC5c3VZ7c9SF5v0+yEKhfWyvRGCD7S/hknEI1L5QASPhpyXMgqdpd3IHq42QM7G5KVvLfHn5s3Udne4MMCGpEU/Q2CniwDtrjv18O5GbMmOpkIlJvfYvmtuiB443Y3+pB4xU5a/W0YJhzHHHSyalPQ537/eNnWZbMDDFHv4G012YoMCj9h5gA0POeYk3ifpuQMVlWwbAojetBI1t85o9y4a6pdcpXhmmNzHDYhS0hth+ObJBeoLtyD260a0bmhhpIy3wWbiI2trPktHZWOfzBY1lsjw35bitTkL62ybSErkn7zLZoicsJgRJjPd3dC8N32Fog7tEFGCR/GbevR7wkSYaf0bqG12PCgubxw2aRnRnSmY6kfTR3eotPXJYaw8CQkxUqA27biwPlrNr8asr5Wm40jClhJLXFcEPdNjc6WMzEumct51tn4bAsiTGOAEnn9vAnXTU6mbj7wWE17YV0ZYY35B7MrNH6OsdbR9uqgF28EltDzr/BHXcknRqDkzLg5TM8g3uZ9LIB1i4INF7mmWjxe5avzVeBlL3JnnFBR9ZMmqbfF+geFjwij72QCLDhRsjFQvnFHw17nAEMte5e3bFKPoPjPNNZ8oSSuJrucmOBs4nTkG6C9yTJJBUfJJev0tMZ1YEYML1e/dvK0ltdjKPw4IGyQeaF8fJ6/glcOSH57eNDCpqzrecngU32k7oMwThBh+l0+rVrs8PdNms8YwdMkUbWTMQTrLXboGsyPIZ7MvdRftX3yVlbr08wl2XH/XEBvIP18BFbDSg1ZcWjGuibdnTeLa/Kd3cpDYnIEKXuFx6EHwP1Gi+1p9SYJnEwwDn5PnNPwmvKgxTnkp/UCFobJ0fC6WBtN1jrXUIEwnP9do/O779Ak+v4IwJunERMTF6YV9XdifsWP/HYAnj8VWdoY+PWT03UNBYtptlVBrBdKjJjWU36nk1GcqTR6UdBPuXIuR9ZFToymfOkMc7X5j1lzEh7tm8YDG6nbfjehCcMJ9p2QtS42St7HZ3j+6I+lleZTJshRMfbWluwVFFboQwMSTGe8U9XhjhkzhRZY70y4emBfG/1qsP2jgYuJ15J+P1DL2fvwg3CNg150ZGJRv7NE8RKBwNPqescWQ5d3dJgxu2bP+YY3ZCM4WHGEpxSZAVQewZjkMKyhUIEppAV+XKOpZT7TqIJRjrGyus13TENpo8sO0eWCbJEbia7Sx9paEM5/e+6zejwYpbQQw4f1zBX6v33E6em+5zQPpDbN89+bhHQBuc9INqWm8QCUv6Z4XGvhoqn00bohRNtnawnNYtrgo7wms5dhTKxpPlzfHMR6jHaf7FEkM1eGkDY84WMex4LEJDzad+9JtVvcU/Y1xkbn8sXKZoqLIU0cZ1MAR4GjSdse1bDW3friA3dq4tf9qM+KSDODhqqfWcObn8sSyWSf9FU5nPT2EaEqhtKd2749VMznRq3Ilb1XcW85McUwc5lQJKTvFQd1qcZFuAhjlsgLwH+HCwMlOxzxElW8eIvxHDp+HtaRedqDFcFkriLbr53b9/DZb3bNZZrUaOW+bxm8w8ecDoot1gsmP5T4Wy9KVakBMmVxgVjJ7ZEKVc6QeBc3YjdtrULlc6qT8ve5D/Ibyrm49KfsbjC9PTJbytAByQLTMebGvm8LtG0PTA3LgaXTdNH/OiK2pti9JwWfqJx1pljiNXQm/RLOY1ijgybs76nM0zmdBUi/vhEbznNogoSTXas19aJzr2P1vFmNiDnWmR2ULFJvmry3fZ5k9Tu2iD3Zw2B2fyMWblxsV4BCoHVKRh4zOIPZLLs+9R0uXXnKcuG2hlrFxC/5aBJ9I/dlQNMe1mBxtXZ27Sc8/mseAzsSbRgt/OpPs7UkdnLk0taYzCjOhaO0A9O2dk+3tW7lcMx/BI79DkrsnU0BQYk3DRUxEujWZsTlPy/wl0Yd77RQ79PtIT7fzudYnHTweaoNLcH+mvhLcbptPMSCmKhzdgegNx3xV5xhsUbBQjzSrESKQMsUZVgNBNuH8s5SBmXX28bZ2j8vGOOvvEZumLLT9zrm+cQQmcJ/JcvpW2zyCZ5vNax62HArSOrSW2xxZzvNmI232feonkSe1M3pQzy/kefuQzXBltZ2zhnQxMdbOmfTFiQX483H4agkCqBWEFTQd5umnSVGbZt1CmOULvN5BslrLWWblEd0zO59gpJJqtgyDvH8h0aA5Tas9tOlww3CEm9uskYG6QbFQvl4hzLOadsNhw5AFHGgiXbIJuLqf9sG55vHQpAoV3POGLGYlNbY52NvODpngX1Ni7wyl66+VetK+Pqx3Q+Mkc4scQWtifQb8WEH1q9oKmsjEmy9/Hp6ecgzhGZpkMkxGkCHTOCR4+JFBGsVtfM5NgLPxiWa63Sg5Qh8mIGBmjSn7hVI3ICFyz8LlmbuDbDBgXA0Qma3NNfoGNPDHweWrbMjUqKjMML6v6zC6wWZTK+HbZv9p12d/Un2aWqH21C7ba1VD6vIDYqOgsI1BhaSh1JZ2mWLYMnsEWKC5lCOjEzuEtImbXsn6Kns6UP1yexxmEp4RgnlNo+Yf61pmWVLjOxFuMU0cE77K0IM2cMjSbesVKw58lMW13C5xxgjpGT9MxKA7QNtDgetfM4webBO1g4nNhTwVaPQHO9lu9eOIsHFE95VOky7A77jEtMR45OxjbxRnVQy6acPF29ynzwSZlpiAvEf9mxwM5Ebk1M3buDRzazrgMbSWCHX218nmrxM5ffgsaI+XpvqDNBxgwI2k1uAbS61ZmGNunB+LgwnpgPmLjZlGc8r8Wh9gmQcdwJ0pBkpK1fJR0Lkiz1rnAwTPpmU8X+BufY4SlmYiwz/pFNNuB6cfvfXaSfn2N3q3ZS+F5cnMwoaUTVzvOZZdd1XGGxbU75pF7TCJ4lJNbxyMhg01EbgNPpV7lQtBnWps+f8bie00LHp8+SQTB+bwfVXgCV2+jaS1dq1eeeUHfYXzywfHZOjsYPRcFTAGjq7HW9SlXJDvQh3mdUPkcYIzbBZlKsq2phgjYozjJo3G7rq/0QAuYVYnOCe1lI2fptntLNBQV40fNimsPMo6dCzFr+43ffWtq8+x+EE0htNGh46wxcwbncMgkYls0hxG8YHChvhPa3B1bIgsEfW1wnJoVuS4NnxEoqjJuWnHrfKhn+2QF8GwJ144uQ5k4P2udyxg6Fw3TV06yHMuE9l5kJNFoD0D5M6nEtS+riseNyW57P0oWux0tVOJo1u3bPoOz9R56gTDVRMfpsyb/pRwdPdByozBvesqw3KLkeezbVZDOUFrZi0h2OL6+11JpWwRfQW1hXvUI7oqn0qBWwWtQNQSLMO8AmDtNnyGTGPXXrrgBzkfFjj0CsmCV04BumPwKckmcac+yORd3RxWqeLVOOYW48BM62rTaX3pZ8PqyFZ0j4u+JoHR5viq3V1bp0ai6MGG5jf4wWDc1eKEYt1PJGz+9FfNganTPC7ebNNKu7G4gGIY9XLCvZhKlrOREhgF/FndlL2FZdpy0GWZLdRB2qJayCDrLW1ZXat5rI0FpjIM9qEy390UORELPt2Rsz0w4a9/10ShMadUDPlLsz8Eb/ayk8ZvmA83hrZKLlSk5vMrmGX03UvjhVLUITbiztHG6gS0r/7rqQP9L7u6d0SBrr7BScaQXzyWkLAND/WxbbQITqTY2aNrTJsRTGhhLN4HpvqySUFdtdIO6B+Ld7Bv2nUd26rpjkR+0Qgl+no752n67Qsi622aSvSuuf7fw/iZj7i6TO2RXZnGWfyETzHSz8dn+u4Y0sVrJ43Ft5XlyX8mWTvSJnkRg1GL7jfNg1GQF0oquodILRb49ei48m1jEqJWbdJIg4ntL8P3x1jE/40siXKsboGLNvwWCp0k2ef4RDv1aLmsY3OGbDSMBkZ3KUllW1sppyRdc6dWmXk2HUbgSSy/Gqlnb4uXZgySzqZD1zc+UT9elvjq21DiFIftAh+7SDaP1rCl2kVpj1dVsGYT9H4uU4U3CLZjht+AWpV9Lc+qNPIy7mFccde6kTjNALmCrKqCkM+NlpBl4wm1wR9QOUvFROM++ao1IpMOgiwIb8G+J8L9+yuTLJ5mKq1sDZR68GTuOD9AqOndpKuVnACsAfW5LTZUem6B02kFWb0MQGWZza/WbKHUwJbVk81URN9tXaqdGTyi2E+zTUkxlPMhAuQqEw4PouUjvse0ws0fevHfScGFgizs6ehxjcu5mVLJ0vppnSMRBmqE7mTs5fR3rlnjjyz2XxIgekWPaUS1rrQc8EmTkbVMgS4eNvKmJcDTNJrajXBjsOHWiKZnxjutZ5tdXrWe8fRnuYzccu7OrsTYRVjAdw2DkEPcjM6dC9BPfga3Jj+YHxseUGtskqoFlS4MoxaxB8i6eBnTfz2hv5Ob3rZRdGkZcwbV5pubj0i6HQF9cda3I/R42onD3//on+s6S5sxDeVOTHbwsFbmG83P+mhIrtoS34wWo4gucUqZWxbOfRne33Uj4Jy1lXh7ZArQ2e+gyG7koNiXTZ0igqlvr1kyEV6jVj1Ih9ntBY1mZsxWN5Jhd/UWy49MZ2g8sNJUEEXCdmhyVdYyXpwvJcrbiRsWnW6YorsTuq5PtYmQnCs5G0DQzw3lMXVk0ayfdwo6qrbAA6VVfwMX7GL1WC6ui9TE8ZYx1Oj71Ez+qhiUYigmUm3XeZKGbz7KBzdQgulv1jwzAGV10Lmh8sPKHpv/aKsw6oSDsAWcIrYsxta8yoc78dsmqxXHUpStgEFN416M9dQa6ybzEOQfwXR2Flyet1yBGN4msAf4xxwC7TmjwtaVJ/D3ebEcLtrm0IC2uxTKLeEKV2IJntnlkddgOxVHYtplfSxm6YGcDSNetHnEN5rGAOwObGJ07rZSOg/j2VSWKetlWktfHGG7dF4Ucg9z1GbOkc+I8husjNWF3JJjPJCuSrqBLI9BWYXhzKEPYkl1ib+pE9f8ARZVxZy5O506baJmUNIwRfbwSBE0aCSQ+TETRzmt6ZN/DZP0TjQha6Q9k5hpEPblHMP0cip9VEkSFuSt0E/pDysyYO3EolAZv5Jx8sno7zWV+mO8lfXoSPNMmaq+0pYmsNrEw2SG3SnH5rXs/5uHUskTmhwfyRE6UEsfpejyzHH4VXoKM24IJzu15je804ktS6O6wYUZ8NlpckLOrJq/XITFEpFDRT+9c4zI0ba/Uc+mEgyCB2ZdLaFWlNPyj96jCsEBJBuPblZp8pLb+aQCMetRIOIulnlyVI8XmXScyNeDHQg0ugetzJY7DVCoc+l6XVFuoSpwI45vUS48G8zw8KuqmP2EyaCfsOcRq74wlfiK1wTt4YhSolJ96c0JSTYvO+KbqL9WkenuDLrOrd5yb5kdqdJLRPZnUiBnKS1jo5CdczchIeEh3oXIe0Ul5gXS1txW8tRwUYQCOEybJ30M9Gm7Dfqjv00Pr6EWJzgdJrrM8W2XrzyagZBrTvQ6ANchfjvuZwYx7mVCrDOxhvMazp1rLRVFpHCu3BKDbIvAWmbSbhk3fjdsWfUA5KgUmKMbBnhT8gXJJsrOk+n3C3rJrnCMgL++zI/cOsB+N2drWPC6quBA0zvgrL0NydpLmNKs6lik/JZjmZOYdZNuND06XiDJRybbbyL1mkisQhSXcknnxkCMPsGqux0WeBrDTYBrK8SL+ygTbdxiJlNddZtlveG++bjJ1C7GmujWseiPgzanKsF1GCBkQje7YbfKO1C6zBMOa2Fe87gfJM6wdLlDtMK9ZxZbEhMeSZM7nahpyRsmGMPG2ScGEK5RZUUNPOGvS7G5RsUSQ3bHMJDa7GVyAncRkzt2oL4BYstPuDdMmPIT2N0Y37SS0afOkHTeGxuZ5L/1E6KMnpBWY9L/PpxXQPP5NFiSjeX1M8PRoSw1GMYu21M6hHSM+sYcPozXAEY/CtA68obd48U0w32eFtRzIz2KfmL+ecXa3lXqzyj3jhrJdKgJuNrVPJG+QcBNeFLYtuOt0/VeoZ5uMwXWQzsyRehmo16Jla1j2qZl6XAIplyy2rf6NwN0nWs4kkJbu7TNuFo5HjlFalU9In3iDOXa86sGNPFBK/jaMYQgNKhD7w0MGnGKMfc9XvBN0GI5inM76Ga/Q4Net6vTiUaCJd1WuF4rcVep85I66nBKi47aBbPHVcaywOIlYn2CCRBXmTJIQcmV2HL6OudEVpd2tPTsUP02vHaDwMjxJkMg31Win/Qr67N4tuu5is/HPQdgCyULbkOsxdpj9zM0ufURMLunm2zVmpEndPqLri71HVFglSPymkZfW1np96PBSFiDjYj2hhU6FuoOo0LuY2FMj2mBTAkKGdelOhrICukag+Pyo5a2YCrTayb1D8zZBZUkhVOhN7X/ObUF1v6xivzT/Oe8s3MXq089126l5nWbjp8rTqzrEr9/GuGXfR12cBuKg+Geb8yPp95zC/btS7TgHpOD9Vq2vePFp+iTyxiCbLp0dpmiG6Ii+ot52NgbOz8JtuhIwhE1uAgMd0kZzsx7y8TM4bbmi01D1qTKN4eegRw8jpqUrCfWaXNy886EMDO7RoNBw7Pn6G9MSZk87WOno3sz4lp9FC1hGaWQ2xWtD3yGk6CZ1tx6vStaWOTP8zg14wGt7MBOxQgHsYr5SWn61LSI+WCHLcbNspOQELF8JNCQhECdaZceQ7I+Tk5CkjI6BK4st3jeKLMD6Cy9Y7R0mHMVFreAJzs7gy1NtJ5NfTgVjW3UhdaiDc3O+COUlM4fkN0JWH+YCoz+KgEkk6RjiM2jp5aJj8xFSEgR5vMe3f0a0z0gDmL9ooWelDONHaF0YNZE6S4DDApkL8NF4ah3tpC6CtsliemkN0HQZmqDLgR2Eg6o8UhNNHm7iyybw5kF06rvn/PKXW517skU6OIbaSfj8AOIPbGJ0GYWzjtDn0UU7NZx4GezL4x/SLe12vrEwgwGbiCREGBScuk6TWQx+MlDfSlL+HlckqBnhcIHQGaoDEw+7btdMVh6GLbZGQR8fYGsCDCcqelUwIabijzZduK+Tc5ETzCyDgYiBNtmZpRvYePkeGKIlYc4NtBGN5coIQa3H1DL4BKs/ZuIsstalubMNg6aqjtDVGpjtAfdlZzWoTroc1AXuCwtE+JqwY2UCYAOtYL59S5Ie7kGfOtuauQNlGRj2HCKRoPQwNub8Issa6iTwsJrrzsNhVos1t3g+ZewvXLimJ3mc7rLyufe+rgu33mhRPHdnAyM4w++yrP3oZD8x9joHoie8ewI/Zonvv0wJOb+Xt7oZ2/vNO2lK7Orb5DTxsdajWneeHk1PgCrpXyMaHWrp8nqjrntx14ZV8M/NJm7E3Yni0AxR+7Mkk56hB8DBAxjl21Jzo0usYpB8p3QxkfUbOId7oqsZu2gh0/oCYZ7z4QoqetmGmWFA4e6UW41PEbjd14MhXS3dUBr7rVV8YYByyk6i9gudCUNny8cleZSA6ZSU3G8On8/wfZrlbC7k6URDNxBpR3wppZzHNmQ6weMyMYcCax4zkBfdBU5bbNJx1mX20BdGlpDpYZg2/D0oa4YwptqxTNw5WpUMhP0U2KQVfoSG11Ges37evZkuYw9ZE/OSe/eNXw9httH6LqrpAZdIcWTuLZY5mJPSxtnJ6tW2a6nLI9Rr8AwxoHIE8Kz+s8tdhaeh3Pqdop0NLvWQI3aWfm7Nyzyk6KikiZ5gMq93jNU1nbplLdlqh6fcuorqcNzvDlEb01nOmVHIVXhg52klI3sTZPZsJpJAVv7FPXR5kq0EopCTrJN7rIpnGpGLgs/W20HtBUzoJ6MuAbC3M8JxxpgjBnu7OWchEVXs+g6wBzbcRuFFIco6OFyYbhxDbbgevyg3gdGTa1lpRXOEnGvpYZyIr4VtTP7OEpA0lulvSM1SFtwCI6ZmGfeF8U0PE77FK8cDQul8A3hBln618BGj5tH55+XQpMXo2Xxf2lvK1qh5Bi/Wk6TB6yzdZZygzdeQuddaZrLYxVZaxKtUOWEnHVC5uymxhcYQtMf82e2LVRfn6Uzmckhh1ucREuA9m2Z1D1IKa/nNQvB8/kxvEYROOjubIv927WZOdG7WjUbR1Vo2I9Wn2SPA5LWtmcwCuEFdCPAGIQ7V9hvf3zcfGFcc875yn7LTsBy8J6EHL9DsfJWRHaQulmw0JAZTj8utpKhbDZDhHoLKo5E5N08pqp7PX8U6VJbLbFuci8WAidJgzs0SVVPE/ocEtGLx0rn6ZZuN2OlW19IkWdF9C2Xg+XRnW5np8nraEJrUuJg0gOa5H2WzUN6NEA4h3vaIIx4FpASkaZ+N8ofjv7B1kDFh0iAYpeS4ui/pVmP6h5nMkjXanF4zVOtEkw5Lo8w9fHaRPffBqTwPW/VphIdaoBAwPcmMpEDL9AZyASin+IOM4Q7n6K0+3qL+tVd++m8oMOeRYwR/ZAYiX0e90DeiFtdQ00w4nVjspJP6bNyKRQXW+M4ILCdAJVqnYrLvJ0KWsEoMCFE52HzZaNiZZNfJkv71fiWURfbCQVZgOGbEemscP+HtDV1AZEyOB2nBu0y4+MyokFgSBCyrcmOa8aBpJonPzTgPhKA8a1SytJGm/9DdprWpPg+7AajfEW/qdfIjq7LVFRb82C8VBmJHAKcbjtM87Zmzi2Dx/aPV8zhO6wgL6/LjIXm/CXBdDkFN1Z3rLDt3eBHlzUyrjfrwk3keXd88+AItQ7voHv0bs6j+SAGZ7PksY9q9Q0Gq7ZWN/D6AdAwb8aCzytyZKdynyZqUtbX2UkGOD/pu+jo1mKm49DqZgLXqeZ/TNFDBPItQoAef/xlcFngzXx2rGXEjPo5TPWKa/V0qF6LtjZwKWbbL4QKkgjdohAtfcROsKC1L1k1PTyBpORTC0uv9vNyonh+N/uZSBQ5HLhRlPS64hpyAjSA548KsVFqJ0dqRAD7dOtR4/rOroNLqjoCMlaNGinHPvESVnXyTo6wMnhWwvwh2NjW20ePGnTscROcWjBawUMnJRuGoT0OiOUSs0NDo41whX7aZc9R6pepNB5tWbKSI6Lj0dfWj5jL9HnHFPR4Ed29XteK4rXWobN6zwSY/d8yh58BHGbBtycIsaYPWtrCmGwvMSLhDe1XqER2CXm+Pf4lwOT+8JBukmBtTIW4JM3qNnrPKSDoQ2ydAWJ+3dThpxsxr36IFcKba0sddEAd6vRY4kBF0JteB/DQIdpabWwy7zmdHYB11/MMGdVJ0qXq+OszUZeGzLNeVtrWC/qzEsE06c6XceNpRq0jlHwG8vcBM2nbthgu+y4nIm0CYd6kgzGEtvRs1Ae47NcnLx67rD7/o7G00bp1l8ng265PTIIdqLSo2Eoy1Q9Rc5IsUPicSOanYLr0RtulxdYrsU9bx5d7YtSRYhBQsv+3qSLORGnA+0ucWP5s3Z2trwzMO6hBjut+fIk7EiaPAyobkXj8DVhbxLEnyVRz2BH5dccdiB77vX3CbU2NsbqiSCkp8cq3dvRmMWOdjELS8GxO+dk7K7rlnN75nFsjBimnDw5HRsGENFlqhRy012WDYgUZhnLTKRknvT7/ag3whAtjibxy3pFyi+sOqVPdORuR02brl5eiDbSg3wlpngbwLHhGDRNIZ66mo8YNvKc0mSEB71KIWdm/cx5rX02nvo3Yj91asAHdoAT+kyzHovSDIT6do8jXRrX7StJlPGd3uOBpja9Buk6PQX6UcCPC+fm/F3DuX/RHYbdD97zBkETLIep/DIK8HtW8klBl3DYSxhsKPJfaz4MfFa7HTWuOpMTK2ZkeQi33mRnXel3onQzrtHBxM/4BtxfDnnk+539/GYxjj9WiUTJAGWw0MMY7RdiP8moR4m7KQMDNcKZH71xO6P8fEF0ZkVzoImSDiqsJxkk6GToj6IRF74yz4fhSpdTGiYqONCa5G8NP/md1go2zgJ1KiRbg51kbaZW7Rl+XxnK9bLBuj3/mZgfCqbo+5JQGnQh8r4ZopbCj/i5rKvRlIa0wBxfkMpx+dfbV/7kIMTdy5zTfSKmQ5eMH46Qas/cGUypDkrkEs381Gk9TdphGs0xEKe9/zbTq1p8r4GzE86P1k9vyt/Y+tdav6SE9VvBjH30anmeBSU1h1+bWy8bbFODk5jgj6hxDj0PpMX6hxzSnLLNZjuFInQPUXyUOsuEo1jBkeaW4sznjT+MN5YkciEApK+/LX1jih3i0YBWtBZ6xL4tlUZ7wI/zGzpsZYxfrDYiRnd83Jr4JYdtAusBzDhZp4KPSM6o6dnrhnfBT+5vu1M74IoNs/boe4bE3Lmi3WmrYSId6SJu4jKzSTR0Jw+EQmsCzWPzdDp2vY5P1YZXbNna5njLHXkUcnQV2ZfT1SEeQ6na+Dkgp0PXqRGCCfeAm8mZQeeSxnqborCic6nuI6KsVOl3QMEt/sELkaXTNRQSu1MtTmov9q4mvO7ZpVv4KwlK75/Mhr5R4k1UQS1S2yj6U08J92lorEr0XvVIXLZiEy8I+Mcozw9LFBP46Yuj1h9OWAHDNSQ/7XCyYdEt9SRtqcrTDoZ9KMJmdRTMjmIG9bVLhMK0neaxPCwUOF5DIDQUx/QMfknGNlu61+bB+ejcmPvEZVic2D6SrHC1Vt7czOaGhsN7TRAx/D1psVm37A7uhcYgpEbcqn/l1X3UDkQW85gR7QtSqrgIY2esY/TNRBe9inFounMq0+QZkJivR65hvUVFtV9xz26j29ArAFs0p+xsKCx9F6SwNJu2XeLSXjpL32FYEdeTyk5uSvPGeq0zwdY5nRdwIJUM0rjoZDtPMGlFn1b7aFQjJlFr54ywZ5wm0FumzGMzPsR93y2mkgiMSpJ4Q5Ikjmfa2/vmppzzF6BBdc6tmsIL3zqJaNhIGbnrJvXt6W1ER5XViKARVfI6LegszwE4are0kmWI5LHQBohs3d94ngjy6RTttfJ7hQixSuEZ0TSi6qxAznOb+WNswYhV8LzJg/PL+oRqtMyvZ4DMedBAXdIkWnqHXv5pi/ygdmGnbCp5o4FwsvZ9+9N7mZPNEn1lc+KuCk3Piu4ucKY3TmbqKwC7FpV0SiOzfwsGfKPfIX14fRNljm8QXQkGan7NYRZWNDNVaL4U1EOZvrXZFrtYi/VRezU23jhV7xZM7OZ13XyaBbbjrvRE2+Rana9/dx+4vRDni0r1XulzptNs6NmrKkDoqkNVX6pHsY1eTl4vXeuQYxx1FjHs5R6zCDSFJoEJ0yobM1jepBo9XK+aWCrUKdGnlMMHxmL4vFgakZw1YH9c9I1ZdtslRtgAhPJBEnCCn7Bs0fY5Llcd2T6ETzyaexdbdAdmtp7zmNod6c08GYk9dm8a/B23n7L2s/AmFndIPbl/DxFyZgeshdWbsnTSbh3bVadYHFcQ4Wc4jZweQ2rzUdFJy9FW22rQzyrk3vQfT4O79gVpWpHPm4aHayzxYCTSZo2JtMiret1TP6dnsq1xbJKFQ0zAfmPQXSnE8C4cGQDwiXzjQmH9baLdyfe+HXo3H/liPWADY7RteTW3wzECwR3INRPkSGAIa2u6tZIwb631x/aOlt93WPZ3coOtog2rnGbpdW75Ay40jGRDzWBiZgjTbzak7gyflttMKCR6pWCIQGST80c5nFbTc4Hu/Do6B/9IudevuUKsAazs9FIGVodE3vmvw0pVpG8jwE29ts28KQ69JV5YYqCDAW1c858jqlL0PpYaidzbm8MDdDdl9T26IkHetL6ZSjwjuhtTVN0QGzdSJ9Oxh9En9hNWzHwmN7zjHSg34hZfqBHMr9pkkdhmWS7bPD3r7b33DFrFi/uWhv85j8t2Ly/gHVWzIN65EjfN0tw801z6SXizK5iurYcPrKvSObalRtjFGVYs+mWUJGPaxHkizoNJzCDZlvuhEMku6Aii5shCZokJfg8IxfYFZh0eNGWndXaPrx/JGm4xXttCmCIg/GrtarKx+k/pSayuMLAtaPoDbNVdoMSTfFWqYokq3gRg3EBmYkMQYWYOs1eegIAudjZNdzMr2kMLDQdrEt0gIHKLc3AG+QLVKJia/wJnrjfThVeqPDZhDjyHVoTao519cWcgLWAkZM/V4/qHpyDFWnrrMcLpZsz4Dob5zInhdC4gn+mY/IQfJe0cmq+fJjQJOqZMxvxF+Bt+e5+wQuQRrrsK5l4O+1AYJnPdCthkCNwZz7qiSTKOerDPDVt0WMIJbkHi/RBrTjWdNvSYzXQnR6NTla2bdOMCZweM+wk2uieABHx9HwhiuA2DNHS91kS+Fk3V3moBp0Vf6koNBHGBEsxU2s941AHrspjh7+pujOtrjW73G/khQJBo6T2dK8Xsx0MRcaRay1e2WFwR6AW6WMQVo8t1H1mfZbVxJimXUmRaWNT5YmnjXbFuYTvUSlm3s8nzpf2DH3FqdoyrPrsrzwI+vTHYWxvzY3rZqaqDwUGTpcwTBvmMzu6blcdOqG2aMmNobr42jGlWhM3U6UOtLkJpNY1scG1QC/W5nOTJM+pMnWYcGIQDRF6zaA59OrfPL3HlRlkcpa5ArAOBl1vV7KZmTDLSGxjA8APnqJ3YYbJcy5MWVmtH/zjfE34DaJKyf9aYu/W4/kFFxeibFztPk6NP/Vp/ohALUEZV8NyGZr4tA/echqMLgEiNDyjYoeHBNgcUewK1nTCdTDxRVszhwU73z3NLbTTWXxdebWjhutaxAJb7St9RBFfIqhvghc3mjoghznWGQqDfStqLvVYFoA1ss4h4aTA1YR0sMocETtt3/21n9CCnj6LyCvHX5cPcGnAzMkjk6JIBDlTT0jDaAnDME+rGaKxlGdx1BSu8v9LV3n8pNXClppNLt6tGnb4OVW+Lm17u/jw5a509ck+pPwxqOmfh0Ts+ZUEoZuSR4MlwEWIyTKOYYYxdUeu92AXpnj9KaW8xtdcJuAdLbnm2uDOwO3kLN+RoeB0jxkMFs8ihxRDWSDmL/MiVZTiNgXaAJ9DW2qvrWZjYMScQd2W4PY4OlBG2/J7em0DAOkqdXHvrXLQ2Dq821ANOu8DSlWl0e2TfbDW9s+64CtFdRuKrLe66TPyn7mkUY8AzoJeIXEaxcj0cmNtzT7cT6A0JCYG48NS6oVLPH2nQcN7RFQntUBO4mAv3+RvaI8YGXBdVLJzTrC0+R+B2XJ67K1JaGg9dXWcULPLkIbQbMSaBvjQumUf6Q1to7u0jUdazafM70T70MYdo0Ks+Xm/7zJEzuEHVVI4BOtD2xmOrfjmbHmLQg6eds6fOyWbF69s65xaJZkOjUk5qvsncYYhHTeo5X3CN2O/2dXhwsYozeHnKYc3mO0S/efru2H0vGFeX8KmpUO3OHnpyGIy8kMljlJyvEjYK9mf/RNiFOHyHd21XNY2AVPEzADYOud4SZ4xfMyTqgLNDzmRmzwLeFRw8OxnLg3SPahisScelo/Y3Dn8IxAsbjsy335ZNvOittxrUrMa5qcO5ak0vb18VX30Yl7fwtrDZbik9xPkQkO8+HPTNagZMnoh5Wl9Gw+7ldq8MuRDjg0qhvfU0W157hM2p5zks+xYWYkOScYiCD2s6NdtSqSUPIyQBYP0j+nGycrVk2j5ExUMHdVzskBzXItRBiTM20VqMMzDYuuHDW9uj5OLi5rDq1zCBT6LB9JnN21SZETt9PLBFDzaf2l75zuPmrWNomZ2+3NO+qsPIYC6ue9WphgkTQ6+ZG+N9oHhrD52Gi5kDnuarQ3QmnEE9yW67fDUL5tOoN2to5fc0Ku+mfEJYTFrWZVmnCT2bRmZzZHmSdRLTOnAMcu32k+UN9fsF/TXXm0z0VVGtoPMTeZQ4I6/qNXS7pRtu/LWDkazIFkaI9TjuWcAfGa+va7Q11mdDsxbRzQ1T+buzIyltYoT9Xf5ORTEAwQyKKYbYU4869eCXc0G4ZmrJoH6FS1g36e57f+rvsgw9qG8p1r1+nGrQ+/kp0JZTGoidlsZzLLB0TkHbIlOZp0sFS2pyjPVoYxqVwAbBW1qhm6arfn1kkywMyb6G0pHWLC0ilUb57IDua4Ey/fZF/LcKOn/c3axl/stnhJ7IExP/h4eJ97YRUCvIGJBTCVOmx3WKp48FTHWRopjTwFu/8z5rE7rjapuhk9I0hp7w1grpvkDAO53U048prGfSy/lzT1DlGJEw2UKYffOWdnCx1Rlej7zTD8cj3zODHmt0giGUPHFjwU8wP7B7a3zqRSaQdQ4hgjvy3FHaQcpAFON5UPJknP3sXkkCdJM+v1Pcf1rl3IPtH5dybqRVXvGCadfqIDGnTFyo6G+fdN5ftIj0y3llGi8iSJ0zXjVlOE27YG7H1feOFPI9XmmRzPyHagBTgTWr2QvjTikcOO86vSy8gm5Fwovln0BPRY56KNRyWXFtR3WkMnQAm5GfNgSOcm7bVpmuEzt9YXECUwBNH821lrj6MLMYmaNQGR5ao1uxsZVNStp8jiVdYR93NJ/uV3VvWbhjyamWbmjc/Zv2N2JJEdTsWpGwtU3c1gYDIiV675yJY6yirGOVsVMxIcYkhsKnaS+g1jwe1A27+bfccYJuHf7DvOZ8XVyzqlbcmfOSWTGx+eyWzp77zctL06HJnSMWfqfyquHvKdjTW5a9UkgWZFO+gkne9a46z7MnYHofE0zzEWwidtm3EChhmYcjzIX6qn9F4GnVnDd1naf3lG4FjTfeGuAbNTBvqBKjFZ6O9VnWFzwp82g4e3+wahBMP3GzVc3yjvYZKH1KOGTd+hb6vAFMb3PxnIGzf1tCRwsCi5KaYrLInoBN1FeaWxzPs7vzt121rsQKGepiIIuvNl1PW/0mZ5ip1aXJo4ZkrrNIoJnGz9J+hePUvzvpyD2PY7DKN9ZOTPw/RaTOfKUKbFMdUWGo8XNwUbdszdyESYz9W6wLk6aMSM/zl3ktRDcy+VJdYyVjkgI2LYSCDHlG4RTSWKWot30drpOTcnaH47Sr5h6syvtYv6SEiO9jM0w/pA6NWWYXTI/qOnH5XrYfjPJTN7Dz0I+OamvIwrhNe3T3q0RiqmmHBk1/kamvM/BbDXsIJxQfXMoAfGAJr+6/hyvsut+DI6zpF7VFb7Gfd7P614Pf3bmtfItZkcA9IAmpZY0tPvUP0XnqnwdOyxE+jCKDgB23S0bOOi09xJtHciKT9XXLuZZ0slhJjntLXPj56L8/l2e1TRuCEDFPuhUj0WV7N88FJ23qHPVBohrOpN4BbixR2aZU6Legf9xXYYwesrOmytTMJcYFm2NCFK20ycW717Qw7uXa0rZHd80H0OWtLGSprxX1PHEAxSkG6CuXfXDtAozBpmyPS1+h2Anf4Vu7x3XKmVVdRt2d1dJ9ernJIfEYJeMWZ58mdRruoDkxKVZy91IUmUqfEl9qPHJR1I+IDQe+BbdXe4Q3g1PvHQycccGWl0yBWmBc2tpYyiMQM2VprQVQbd7OzhHDniScZhcUbPgTijzNLlD/yLS5LiTIPHrEe2rHqb7sihWdsDECacSFIB5n3kyCpOLFnLQpnyywYuEDhChn5GnHAebvaL1Yjad28Vu6X001iad2w2PWEl7jJauTAXCGFnJc2YJa7LsFz67cpSfxm9d1T3pIGsqFGLqQ594QD63BObj+cUJa/fgoROtnEPYJ6CSdrx+s9kpyesKgw3Rb2rcCcRMqzYJDiPfLzfpMwMxYFA2DCWBYPhylgVFm81TmRQLEQ7sUNyDBajjTgQ5rRfYLIbJExpnpemSXjaUwE+WbgziwFlY0fNpwWFyDOtlkN93oT6ccycGeYRMwFASJ/M8z5jfCOmemm0m8ftlEzSYbmmyfQ+3+TP+fqpNOw37NcjO16PF3RtRqlI3p5ZWrjs+aZq/Ta1kFgzFjajd8GmxPsg6m+nM4NjhaodDChBwi9Gu2qDHPA/IQwytSgxezTWFpv/U1iEputngOSsrLgppxpNVwaw9Mf32bbXZuvvaZy1brETdmnupRYwlia59NDgVAbtcb5oyDH0QTd8Izta8R1h2B/ojNijkA4J0jpusMSE+DVM6s2uVx0MLaCpdVWShRLLFATcXwQvl2qM3Ehc6s2eQWDbWDSEPNMEpGrFTdrWZle3OI4iYyrPhD3PN06XsbNq9achjKVeWPGacLnfq1FVpg501AGmNfY7pmaYNIBFoUDYXuC59DHCh0EKVg5V5DJ1ZR11TOvlWAOhZHfxS0vZertXUJkivLw8FD/MNnGMOI9DHhp/Wsr7wEznfxzatSSFmSTNGh6JRjpp+aFbbH0XFx3oLE2H97DJrLM7j7ok+zhWGXWDPX25xsiG3nrZzeVogrSS58/kXLAOrogOYaaxWMmO5LcIk11tagtUC64htpzBC4PPFmV9PTwuEeyzucpdu42PMY9V1x/4lGcdDGzqUgCpnxSyMNm0IN6oJ5LAheFtAL0Nk7yt8LVe2/k6h0WluOk0ZtOSCJ6DpcqZOnUc3QEHYS1GdunODYk8ZjHyGTqBj13quKP7MhyVQL1jmELr0/55H2/PI1jNSz4KEusdCdW2K/CJjkUyzpx4ar8dU2wgslM0AOBylf7uBd0T2ppk072gC6OTk7Z/NU3WYEYqROqp1JjHqyk96ght1YgmBg5rOEIaXeMpp+uhMwCQWtzO9imbF09da28Ip5noXdy21EKydVHh6blLMRn+7I3aGlIc74eP+Q+RkWYT1LyF/1NoTaPPcvpsZA3SSIEjd1YIe43dXWBTK0IIAZCX07ZZddEup8aZ2IyOG+oi3E5Y4LCB5uDQ0nkm1ytA5554rNfduaS1snHyeNr+xkMkuWBgkfIA+En6sWhmgJtLP/hWU1Jf63Ts1wBnJ9F0IWiH0uAXNuDaHWQDXRXVpkdyXTboKygn6kQAuiOqJXKtoE94yULJ+K01qulMT1djq/+CqB6fU9FnuXjpJLskdNlRPaV+zbeThUEPSJYMkSz+ea3M3ueW13MF/ZI8j43mSzHBLcWF5JNuaeMcvFRh3Y3t1m0A1fs7kb1/4uCrQ7QxmYyzwCaOkMCDuEE9KLJqX4w7trNLDc5h7DtECBow/0vMbKgjtFaPavDkrjlo1yxFeL1sxZI13by/kpz0OW7zSM4gBAyfao9rZZ2z+mgNNOIWW9nYgunXhwH96k3tPnZvV0/pZjPayaQ6iVA6EuAadQn+ghbU7FFxi09SW2VrSS8Z80wN2ajhT4YmFUnJopvH+yLuYKpdCnRv+U1pJpk3V1Hqi0CvNB6gUx4mZADOCJl8uctcefyYsA4bOgszOaWfzzuukjnf04QRL1YNkGutD2OFr0yInn28wW5ocnCn4hzgClSHlQC35fmgQS4EZtk42jqZB7yju6kud7cWm2zMDsaSLM8wVZc16IFoe8+d1nom0KEm5CNFt5dWdFSNtQWLZLGiWdF3GbbIkp5vWyUgvlk3s/UZXEIyMWXO3XIbl95QWEBh5nQFzh+DISKnci1IemdirYl0RRXNMqb3+NKYGMMHOBhgWeL7zob4SC+SNpLScQQdX0oTl6ty0+6gU8nm2vH9NvRkOQjkV5XRgjkRoQuwCJaXB1qE2qcvDr9g+Ax7nz59dTKeiW08m6TaiID2Z3nMIIZ9XInNLkq5KV47Bf027GMVHA4dmv5OXQ6kf8PmuYv0mXhlr82clbsvzvLBufrJr+ayOy2Ibwa9Sj54B3H8xvc83mz6NoMJdGt/Pfu9uYzKfdJdNzWbGgntQ00W+bVdW7gONRA+cvrOdzox50yCY4YMS0eS+I9DOvaDOjIbuQdVS6SXvD6wRjWLvxHaqtGd6xo0ualgdxzd9E/AsOcGkq/Nr8ek3RKLai5sUcmHotcG8R9P3Lh4ZO00jZbNsuMXn0Q2GF6Ef0daJwAQq1NgznXtTamOdRNGtsfM8cVHVMMf5msEDPR8ltOMPplokVPFZ61JLxFdne8hv0g0Knyx1kL8+bu/ZFlgvPLEbl9W9zB6BTA8qnt/a33H5zQT1NaLP0u29qvtP7drRijcy+M3M6D4WAbPKvE6yzmRmqOnUtwfAYN/C4OaMvbGC7Yqx+nvQ1eVpoJBRauB2squuYI5JdqZbzkPm5oYIlNWnrhxWvYvfs3h6ETM0vCRhX3k44CaCKC6hs8185kS4Ike6YVNbHa1ks9xfvp7U6ilkCiYVGmGTZx4UK6yYu5oLcpYWLDrYeJqW+zl2FoptpgFQLzWYBSQdJHibtAtxTGrYTVxVsW9ynzGvfMC++ZLdU8WsQKIPZoRaM9p6xjA4AgfVPVp2F8ECvw50BDDLsY+xLxHlm6Maa+b8bdpeoypMaMFFYTjKuo3PWK4fuYyi/kUwK+cF+AQrHnlmqz9oGUhDjp2Lx0znUbCf3O/phIt8VGlZktXPjLfKkDoroiWYFtY095Lg0cxCEG0njvW+KtdHexjsXJERGaXTqBpOjdTZWWlWzKQZa50L6RdYHdodszwwQm7VSMYo5eAwmXAVzKPxm4DoN01WOUrUxDhuGPPh6cq0VKpBCM/j9qPLUkiltx0cSe0jo65Zuje1pPrYrCryGPqjHvse6rWxcZ0dNXl6MO9b7ltGcwop6MzCtIGS3rDlVkbyM9XHCtMrXuNcUmuepAJxEVbZgz7p5V2XTEniq9Lu5ovNsyd2kLzXf9iq9IhQWPGI12MPbPfGQTXiNNq4or0Q1OmZHIdeTcqwSjrHITJcBvr/QvFmQ7P9zrU71Aza7awlBVjAO3xGZuvNKa6ZJwggfkda3rTZcSSkmONWvOHmXdvKQFlZ6zp9ZyCsvT0R6LOT7itdcJKe4k8xcWSTrOVfb2jNCf67QvZmNg4ySjNrNmtOD66Oze2BTgXxcVEQJdeyBriTXumUC3J9yFzn1hW+U8ZWj+sHowBYYSQDjt5U8ZY8lvZIzP0Gm/1ZRZZ5DWo2JZbSbS6hQsiGZ4UnKb8iCnUNWagqj6DZcI1IeRpx8Ntoa/5cHtGvsLfgUewlOVyb6iTSuBoFdJiPpHAsSa7RKcrOaHw9ZnyYmNKCNr2n8mymphfYUEWdgOIzkIEMUZ+YpEgmhvhzUTbpH0z9ROlBHUfRvoLVz/ryAMef6uPc1Gcaobz48lOrMjlm9fwip/tVf3GMathN5k2JvHIa4Z0LTRRadq9hFW9m9S5pmYK22gYQnDi0G4og4HERGm1Wta7WTHl5T/sm9sRn/L9Lo84tqGpZRnZqXjGGViwl4kScZOBFDCF5vh2zr/rypNSbm9SDWnrrDguzrGmJ086WjK/P8gZ1k2WxagfsDSRMfzFfBeKEIr3Eft1/lem+peUeT6X0SQHb0TVQFyejNhBYMuVvvnuWyeuxrwg0tYdTnJ2lGhv07OR9L3bzWVe4MvoZR714HuU+AtnBpz3X6o5dnSRcmwj7e4QcQ7RfokcQ83AFGvc85TobN10xbj78sZa7ozEqCQw8zRtrbeTyJpz9EwqeoyhysTrwZddd2XCtGRIY9Ez636kOdKyF839CLeQwPV5NqHCDxEJ2MnJkNoZ4NQg6FnNeHxre9HpVsWAsDqGn6cNkeIVM86Wtl/w0tpigceBQuQ0o6zvy7XoR42u1kgB9RzWi3mL8zIgZ1Fs40FWrdUp+Rr6Q9jZhtN+nGxydUKQYHvTK2aWzcrJGlNXACUTcEx+vpKVN6rmXKnS/hkaqNwgHbWTa06vV8j9UqKeLQoEW2TGDOzh44++Tf8M73ljCyba+gWA/fOn7dKuwZnB8EM6BWXW7+R3wLoQYNfzdw2WmDVc+s7wLaHlPp0qzZmBzHSxjXnUY/4t9Tm7xTOtaPvlHhNRV4ar081ZzYtE3LriA0Dkakj13v+zpIunXsaAperpM6iTbmMK/LkWcshxaW6Yd9MFZYKXDOKTap22jFVG1ZIxtV3b7xlMmyF+FdD1WCuwyHOQ+lIj0AInjUNU2ZZyrIErr1zQn8GuWcvzGBRTf+Lj91wMoZUIdCV64XEkobs0R2k/pyuMab2SSnU8WQmaOyemDAMDpZ+QTBzXpxPOrinjg9e468bDBbIWEV3xulf3zur2sz8rsBfr3TI7GH+9qb6zNwt9Gciw2Kj4m2d8mu7DtaQ5uR1wWLHtGNj8xOr/LtOo3OMHgGEYK0VRrmUpJegZ11VwYlHcPDBa8reInmSQp/2HN/creWbcdUE2Y0+Kp8RRTd/kRgn9ISuoTKJGmGv1Sq5+U17Savotk0iVGI49Ea+6cbQHGaa6i6vGBW9HG6rbM+e5hU6NSuETxj54xTavaNPg2IN6gbWGp5kGntY9ODlgXXQO4hO1RqGD3Q94WlGbR+aZrl9SdROmbUVKQew2b25LfzlHaHQvVKcqOBKbvpEZDQKGzuAgp5gR53s8EjFtpxZUgYnVTrQy3n94Ef0JhZt/A5GyYWPzW8zX3SdAuR+Ep54WBgJfJkFudwZxI1/HoyZfrOf3H/KtFHROL5Ab0Unpy136VPy/Y6l24uQ1noTLyA5ukil/GT7bV9EQxTLX5r+X0Rs2e3DJHhtSkzVjY8VsTQZWRTRxnp78z9Ams8s/Y5H1Cy76d53WNT7W8CQv2u/tPGgRcRJQ+FM5shhBiADC5ZnHUzRrnsYTmVZ7EdK1BhvrLklqhWyZJ62o09lNqlbJC95D99oLBTLA6gqO8n09S5uftD2OjYnVDNuw0P3/Ie7CQJ50qdSVBhpMzcOFQqTVlWlYbXauTUVIUS4gVDvi+n+/WRhnZ6wsnb+utwG5oztKb6afnTQ340K03e5iQCpArkRWwuXrlacgVWwrbW0hlJGzsnYom1/u6dTdas2cPE3HdFwRCFGxirgpBWn1nWLeZkGTFjaESCsmuqi6xOS75AsXE2rzkophuvYyKDk80s9lh75srAMSHYN1Z5WMtiSpsvIqvmT1UM1wZtD9r02gdAl6ujT/X5LrxgS3L2PVPRA/s+U0pT6uB8SS2PUrGQ9hS2wpSGrijDQRgNHIyciERxb6Y2oS2iFCbzKP2fqH2gqkxz0Jupi4LKJIWgpwTtHmVdFU2kOzKLzqOzLyzluajx/W6wQh4nhymJq6beXYSpGOcffKYTR9wSH6cYL7rOkT4vctuKN2rekVSh0t+T7pdgpqXE3wIm5Tsj3RZqg6jTrePL58Y418qI6ve7AO2s62wqIleGchUh1JbHy7rdrSx3qtgs3n23jEnpSShp3Hsng5Dj8oKn9EjRvAlzqqZc2jt3aHlcjW2m37MRfrjIjff+3DDDP/qNSKOO6qHz3E6WqAwYEXm3WZi6pAc5MWBVndwqfoo3tL4QUM6g6RGooNtn6zONB61YjQVxtCPYQkbrZzae7iWsH2m+qov9iX6XS7lapgdX8GmtA7k2uLl0bgHzbi0UuzqUhnkUjvX43FnDjDzGuyPa2keUHz3SnhOtP1xLQ5YMHoLYz92lyw8dbWwR03hetOZxzZnHt0VHpq7Yi4OdpjOuO4FUd1O6q2rWnJtovN5+7LasDqhJiPIOoV1CJPzqzXzWUuRhcrcDoAF2xa7H8D6XW7dzAWjk10yrC7T58BRJCH4oOtl9MystrOOMt8WcgM6kdsj3zwImc6CHWeBxmEmPiG0LHs5/XcX422LPJVuhtLIIQZIL85uRWNdJrDkLNNOi4LDzLYFWmvGSVt5cP0v4M4K7OetS47LBuFnW5U4Mdd1ZuUy3G6+uenVXkFPRdJkpOedCWPvCVLMlEgd0ImO9xTfhPg/gyjobO8SJk+7CHOucZ+gq6sbTFDheO0UCqBhay71VZYdpc3aWPVbARLuWIzTKlF3NgR5LsrL72le03wy7hIdtkJycA1H6eAwzJvrmKNeAuutTTaYZDtxKwHvFjiEWRQ81I2cC1K507f4M7lmVOnUNWoWF3xe783s25umRJZCXkC/QXYkOYsmbeoDXG8hTaSRlUYvz1npOQ8TNEzhAXz/4HV3snIpjudGOWjwW1frHm4T1c+U5woUJgKb0GI7qANJA660PJMVjcEx/eZ7nzkBaf40pG8RuGJuBagPNpo+3CbY4SdQvRr/o9esj7akb0p1+cUpIZ1oW4NGih4QMonbru6jWFG4LsluWwirXjhi3QxQ8n+q1+RpKODTEFnlqNuvpR71V6GVh8mK6fht0iPbpKcY/R/ICi62gbMM+ZYov8wWZxPHchuZgLXA6a/nj/vpw3nTWWlTu3ih6TcMhZabg49wMQeUO0nb5z5rwZxHdDUDqZA1MD4u+iJrmFV8hCzhuWx4iGulDRY6jLdNRQdVtxFOYCmcZDWbGMnjWtNjK//ZzozMlRkYbFCQa9cJ9RbAODvOJAEk2CxksOz4i5/AtLimQsrX+hi6azaf72uNAvGMbdDIMak4M6QbpWtfHGr5gvcLuLcw8HqyFi0D6MHYvMVuUvL4vliWz4p5xrLXIcf5CzZy7fS0p2+gcve+jqgKMH1aB0yt56o38z5eQd93UE79d0yYxkOzfEVlvAwaXFYn8I/uXX8+yFnz5KfAXERjocpBoIk1Qf3yw0Jm+MSX4By6POdAa+h0Eh6rfNWUm1znAQNsM0xpFasJiTEGwMDLbWpcHT/i7+ICg/eUTnYuBna/X/tYe70YDmsn0gV2bXa1AoXQUMa/OUh/LGOv2CwtwEDIt+kmwsCpd9uft2G1bQntA0WnUtS3jgMrUYeEYLTimGJ7Uyg4SkUOjjFMBpXIxjYYqMxg/fV5lpByiJcGHlzM4OsmTJpAnneDGKZN3w7+OWxM048F/zjQEa0X9Dz/iOKJZh7VcMzH2al9IkAW6JOZpbbz0BBW0KjMfySnnzWDbcATkweuuo7GYRuXLHPqLYCs9aZHTBHZuQ12sWYTus/I5//47eNn6AKu5r8x0jiuqmbBCFnFCK+ZYksglcuoh9BKTivywe65uOSJSOMHsgDOWGZyEFbE31Om6Zf7HTWjOgK2Zls1S+qBdc4+AGfAnyb8ajN1McGlzjIHHiQbiOXGbO1xv5yfcaN5oTWxWbqGq0y/BiKjJtLsg7zMbK21je2Gedg2U2vhe2NgbRp9cRm0YXYkaS+pIiBZPEMyR+KrY/LOq/QzNPrQqyihWMuY42OkJq2nL4k+s3TB2Mw0U2sKrSJFqz3zxRGhLo2+IZeUwqC69mCDs63/kgT1oAe3y7meaiL2mWbtb3zi+q3yM7qGDkJ6KKLWL1gjJxfnpAWTI7O6FUnduQRZy8wXtp0tJOg/zHCzu/R0ePorTNTlB2jw7yMWOx3amloOMGVRGhdG2wdZ8wb+4RIjlgu8sjEshRtGw2PEhe0SlGw3XaOeoTkMRVoa7cGQFllrZYqb6KyLgnnV03C2EtdFAzmgyPr3qGBSHnGsmfKeATljMkaZw2ccJer05aRfGey3QtrilNgsmuGAid0eBy0CzG6BSp96I2MtSdpklwfIVFJ1nj6PTLNhyV3Z360bO6t7uGF93BiNmXsJC/HG/TPge+Ldak8SMvzgnpLHMLCZuUvOEqU1uOT07PjtDW6lVChhttc1L6FEMaM86OkKzfsVlzk0qQ7l59dhhS1U3s3oLj0QNbruNIeBQzE8PBgId0Kka+Sdp2WgvLPS9u3X1TEaPgt42Gd4vRrUcgqxM5HawsP221gnNd2ZZeMmAkVYT+DaF1I39YaZQLytq8hdezabi9L2Eb5W0U5ZAgtRuF+CLZ1Vstzy+Wa/Id0k2M8sjnAeArQYGHDs8v3uNxfcchRMDL41qDH1TiuY3nDB+llfPfnbW4M5w6EYUkYVgKmxbQVQn1bjm2gdAZegXLRfUnATdaamR6LfAmQ4lJ2OGXEy/jaLVzKGZsIEMUo62Bs1jGay/PXYflKIpkYH4d+tWdB7WNhWkyK42ageSjc681nIqOp2hIpIVcpTO/RQAdd8+qmHKSx6suckse6vNfIEfgvLdrrM+DHz54i5YRMoxnUqcaCYC2b+g/TWCMRQ9PXhb5X0t+pkUYtkDrlIJBVEUv1oSmtX9ON+gcLyGXqlF1Cj6jVTI+hfl7Nf4m8dcBwuAxfY/NjyPw1Toh5sNkuKr9DPlnSIwTpZJCdK56TOI1taYjq1cXzZjzsF2Elghf7rq5UIt4B8siu2ApApJJpZS3KdlQeNhuObQtXoKcYsLr1mOp19nGJ2bIRkcP9MCHae/S/feZTcxNMasow16kIQM36OzUTS4jgISxMekxX0AABg/0vacbcGzlHG1F1TTmDWDO1+stCKuYUmNyBx+VzC3UJn6vLkbaTbztWJIQbN3ekHU0Ve5Khi5JaYM/QALjmTJ6U4uQDiQ2jnEtCKbHyzoWmTgi4OGPmA5IxqT/TV3FxW1mABZQEhFev3OKFnn/LcfWGgntAfflxsJIVZpPyPNeAH88Itr5DTu7nzW84CJqjdR+Hq49KfJaAXsEMG1pPQzSW/PTJG57riY250JTMHOpUwovDoYzM0q25DDFxFrkDM+R7sQdbD6wmUhSCc8FJluHOM9iSJ1KAikjqfXVe6YCgTasBLijWmAcsDw0BmzXcTK2Z5LOS2lovNUEYwsLaS+sqdC/iWbVKh3mrJ07BOHtnF8ofLsMSVb3EyZy5KcbZI8cSt2qZGu+jJzWMhCzvBQQ00QAV0YdlMRYBDPNxpufTNwW4TyNQZBInTVIRCnOyoW6KNL4WGZLJfKb1fOATJEWtia6XqrBpFpQU2fOlCMt30uqvTPVbusdyHDp3oiXq6I4gpcCV6D14cKlbNPEuPOQ9vhcOlIAbIQr0lDG7DY2ysSAR0QgWVBZrfeKaTDlNlPMPlvpykzd7O7IIlf8UF9P85pRLsgluUT8mP5hZ6IRxZEp84w+aio9S5qWY3tFZTZ9q5Zy+Yq+xtrrRE3p5NcemxyCrDNVsiz0Do6gSdeWBj0TZyBp+ZwAP6xUMMsJoZnYQAdymI7Fa4YjkOW+pg4GvuUgvlL5r+iIPmaB7BAlhJwutzbObC6X5wDWdvCPWqJ/wG+wypmmb3dbD+TwOUfS7s68U7eskrT31geNPl+boujFKeLInYjdix/J2XbWOcwJ2ArcylXjoTxbYUY6SkraRQsrzrgtmwcBluUV9GWIc/SbHsgyVZq5IQLXq+6stYKOuN3SxCF+CCC1Oo5rZBEVyNzoT44hM5euuOrG/zsBuNA6Gey0rIpMofG3bg+/IeJ7FZDSju1HPds7rCCOHd5ZxNX+x9wnOm3iHeP4Q61HSrMRJfrQxloMhz/GkH2MMh+yZE/XcaB0xbH45+CO0OLqI23zLVbUQNGJoNLUGq7PSjmTfFypy59B12vB+LctSphQMOncHs5DhRWRyTHCIZpKInXlSu8EuR22MrUWnQMNF1G3Gj0YeYvEyiWegoxYBYGyM5ZSFFDIsOh7g1fDpW2Mh1OUJokoBpZlKUb5nkSgTW9tzPJLk3cPEVpu90CTpCVPeDiUTBwkcY30D8V5tvNAjxiUN2emE3O0DH5Tl9Yp+h9Y0fYVCHNrdeY+gxQhagwolc602jSKGa17UEieXYyQ7HsiCoWWXg4yGxpsAq+U6wlNRB6OtYwdCUePOwwVhsi3shpI02vabwkMgTq8NzssWRUC2BgWplGBfYMfC5cF6ekpScbMgvoukndsZXed9C+yVrtPQSNbEV8AE6cb9SSWcOHWpxaOAC+V6hNc5FVrkjMK2GzH0QMh3MgvG+soZ29eZYhNWT5rpo2fCWQG10KZ8O8N6mf/wmqxn6e3vNZ5I9kUpxQLeIuj691unwqL5U85OT7U6WvXqPz9r8GSArR+3NMSemV0xKJbdt1YNuYiTHagR+Y3TRYblzc0A4Icp2Ac7tNmpaBALkIW+eLBkmTO5P8Sl+BtKsFjRrVkekSIxCym750BOph9YluIa2wonEYgAcpm5ZT3FDhoSIxEdqW7DRfm9RUkWiZlvUot6xIdi7R5kddVqYewtJ0mBkD1uebh0wYjlYU1XnEnssIIZlNwvh/g5r2Ff4c9yAXGw4I/7iRBfVj5bq0NDeMR64hD8UpW1QNYXjiBnGWJUjE2vrowy5Effci86EfghRhnpOwdLnTuMNyGmfdAzHinO0DWHqlT7NeJpTVfXvHs1xukrEsgvGM6tBmhpr207a4iXNktGI6tQNOhGA2Evn6Dj0RJl/7GVAf2rIcxZm69X0pbAcwUsiw3yc7rykM/eWWvdLlMQd4yLlZ5/tX7G+vjW0RTjvWRO7Zj1p8pz3rYs+vU4yeHl6d1wG+dvzXOWjdhN5znwPM6lmdMTM96Z/9P49pTWcQIW4qg4jOeznXXlEpATSCZAbPRSrs9I1srrH8NviWiUc/Ivkd1MEOlbTzhmx500z6sddG2oRkUZdm/GDB9CEpu1SzktqylzAkZ9OovJNnsULLZo1Cs3qhsSXSA+uXQxEXpVFt5hRyBDbx2lY+2ALlPPSNna9SLDSaVfY1K44bsz40hJ0QrroX7vSom7bcK90pdYAxu2ldDKlKAACLlnuOS9PZ0U463p3lsw9LrOfUrDihu1E38yZwnts3e2fzd0Lo4HXhe6Kxz6KFGjUhohqpbKJPIt91v0mVsrc5oTWAsKN4rNjGUmIW4/KDlco0c4kP2N/T+zDXc4JrLXJCi6Izcr7hx0Ms6UbyIyRqkM3DV260CCmcuTWb2PBHHRTLLaILA6RZge5Pbq7DjtpwW4gPCz9o7axGWFCnZzyurvgsO+tfC2pdrW3Mj7Gp2jNosRS2KKAbgpMt7WYM0g4CRNLMpTmFHM4oRydcmNEebLxHR4+i0stepVfVJtFTxNSBYO4NKKJ2q/OW2qk41weFYALg9mCU9DefmiRxyMb08KdVm4yzHfmjBDMy2HbQtavBvNs60njc/0UXrOBiC/2BzEoULqlvTqlrkAibuatDYkNSc5fUrUYMPtFwJLDIh3AQikhZnlfR0Y76jYtWjRrSnyU1q8PdFPGribSzBYb/PtrL4D1Z8uZSY9IIXSd0aq4TdMTcpXv9R0RUWnQNHGsITqOFpVHCaqe3oKAT6d4MobmmuA/JWuIj2aHZQd9oSOr63dn5kYSyqD7W0trQZFa4guGTD/J5TEOi1fSGYXzDKDrUF0C3oN50ij67BzFpwfMKzDPH54MDImCMMv+UacCyWvZfmsoB+0/IMvYQwIKlNo7SjS+6HErbajtFzL9jYBP1Qvu+W5Jjxt/ZyRRELMz0xOP0rbvRhQKwv4Vrlkv6R4GfBcBQ0+IkLmwfk0N5RxTKtuhe81U05qA9jO20po1cBvqqLTpZBu9FSedeA3F/nWS1diEsr9d3Oc30o6Xu96K7Mbset4S2sPwgoaTTjN0EXr1lyCW4r/AzxjtLUdHrCRNdEm2JMvpzjQGxKG6fxMF0ZTkTK/OfoXNvx51r1orWYj7BNOsLUwVD7v/9OthBf7Dg8QT9z5TZxvMgb6Qbch4MWO03QfkIN16rOyH9Ky9hKALvRHHXNpUZXxbHWXgR90p3ZCwyvvW3NLJcSSia2Ti5ckMvjh8JEmk5jXvW3d4ft1UCmvuDGlJhvHXUAbj7dEEuSng8icZFlOE2GH4T5m6diskVlq/XSKvqSV8/5afYXS3ZioD3nfpnA87bGlyrW7Tikr0E/Hg7ttSgLmw3yYYDi2FeZLAtM3mfpEy89jHSMj3kySgUXBP3dTjpuuUx/5pjlNhPmWIdbwJi3Zz2omBr0lFZn4UknyYBoJAd5980LfRK0DCdidwVGe3o6a0FUWSmdVJ3lFwuknZ0x1TZFLjUgv0iSG2svbH3Ch2WdmtXO7gnJMt/nU1M9R65bshslgkPUHgZ0mj7S66fCvVDsvIvSC4o4MXOuOEHLPHlFyyM8Es0dl3pPvYkuKZFeOZnJSyNXspU59L50XNXx7h6kC1ZmJhYiqGWggpJL7oQZjGr2XigmEhqfXweX5ucsOG5Vj9axQOmyIAlGEp8MUW/UQnKWjMIu4YXfqs67R2K7CqtoCexdk54syCduVUAzH9j/WwMhHEzNtj+rx9ZqDoG7XgkFoKdfzGHtEn3jo5/V0p76gi/FJh4TGJ+vMHOHCbiSsdqm38HOi1o0wrqqnt+09lxog45IhWdrRpbGYwMTveby86a2Sh8NRRYVG0yVBnPIiXhc3oL7eaBCtGW6tfHA7xi63T3M5kI9IQRyhJf7jrIYyfyayIKSpWMqU6/MavbQDbaCADj2SVKHbo5hOnzVRmpOCfCZIGHAHFp1bJUUWtlTpBmiK4uSUR6d0QaHaSjqQG1GQrUAb9XQwkW/+s4XJXYzYzuYInzv+atFsvF6c2TRLsQrj3MJG3KMy/a4TrGOucjOSkMnhoMhaWDy9TBeg23KxlHJPdyU+VpY/o2i213owGMLzQtx990195vnEyCw6fl96b2o5nDx/tLDNf9rmJzGwBp0AnUlpbX1m6awbM27W3sTF4FuXeyhYnofdXh6dC+Ll3mslzSuFkrMZlO4cbQ7hakI12Fb6kN9be/K/O3mWZ72KMZ1PjcNOWkQ3wvmvyydfH7W1kK2+ljGY+mVEzHCZKvtwepYBLYEDssEzAobDcSviRGsYoU9rFK3jclod5VcZY8tdUscjCN9RaTaTtA6WRY/dhj+A0Cvll/cgHG9Kc6H+dt6xG+78ozdlxhnjZ/wY9I16yn9ULb32LBmOhLgHaPCQWkhjecBwkXdletcrzAkXmqdCzmBHDCDZkCwPHcEyvDkRWG+dHCzvPx1yU5/qTrPRHRbU+RTZ31jJaq3SlCSo3TErWiPWJfnx+isfsW9eQyuOt2z2iw61FT8S2WIvK5HrX5KfunA4z4ImcznbSFixK12wVrcSsiuiUfe7hvC1wMlFdO8OBab0dCSsaXUKP7Y7LsBJOxoPbidvEcwyOZ7LMxwB5OdFl7l2tKw8kbkz+ex8ILesXv0B1ncHq1CWzJo+HYWObgF01eHoRy/S5SefFjFu84xRtqHXMP160+EmKOVT1y2gmXD9HbZYeIzF8fZh2uZmyGNul6dtQ/O4YEHVS0F12yu32zo8o/GT+gPMl57kC2vZjhUoISf5IrcFmVkcG125gXHuxg2JKzgbapdIkBdZtOuJn3nULjnIIcVX5IEUyLmWqqx/j50XMtSOojPcpMRXQ24AEYDi2UOPLXN4flYvNZ0GlBdHwmDZ465NjmsJZnZH5zDGZfSA31+n0Ip41rSd1ME6RfvKEng5g341nkW0y9ubvCy0AQNIxUO4qlSc8ukP3HPZmAoI0Hbkt0knWQuXeCkZ92x2nz6i8UcG3BgJ2kQp2MLZatdcSQGujdNmid0uxRH5JpSzEZzIdZ95q6XyBLaiS1PhFKlg1maQJPTdEkjVsFfasptE6vuBZ1CEWlwV9fe5WdG+SaE9KSxYlDcaIuiAk3cBv9KxusG7lNsOFt+jPNxozQrL27dddwc+nYTQVBRxt0E3p9yseNpcRYqERqsVIdrZ2v0voFrNvA1Tieh1ZgEWx0mgWM7rJM7g1IrYEYQRM6+ZoZ/cBRYSKy2pZer07r66CjJWRW/C0dqGdJ9IJB4uzWVYS2U0H1llBld+2lmTH2gainQVXk2zlmH2Ingt32toPRa+bLJsBnOn6M27lnE7LkvGwwLvo6Umw8KWs8MyhAnXusw36mfTe/AWK5w5RaeutlM+aqAm9ug3fW9s6QAt5J6QCfMwHuGrMA+6pYd4kB0brO+BcuF1FKHKkjh7ZLwA9LubVHVX0H/R19TupzC3M+cNApjX5yld4eZao3azrkIPU4+Y/L8j0W0os2CzrbyKGjma6zvqGBu8oben7wLYo57cTlwJs+Mj2TkbmLt0HwJtx929aTfCxvixNr94ikyj3mwDIl3mr5HxHwWfL0utaYFzRY2uWAJWEbJgcQgmHgHFWYRQrwz84PlD+junw8ycRrHPWsSljI84IpLicp5kcMy3gxaSI9LcOEQQ0V+RxHLX4bspN/tumELf07lNIuu2FscynGGBEjHEJjofyybrzN1x2Ofa44mhZWfwvuH7J98NJHWPAFttzlyZ9Y/VzIieXf/QsGc7Z29oUeO0M+6RTPA0RVG/Q4WYvxcXKBGltFKTkR7INZ4Ahd17p1x3A0gb1dKiqmuEyRn6+V3Av0ZRS115aPRMtyFDKs4h+XwKKYtLNtNqPB3g0mUNv1UMPgYE5DneBQVDasjoNzTria1X0lvm8zjNIOZUyOWKlx7kyj+Q2nMzJorsK1vb9e8mf+aa7UiQY23S1XnbB1PQJP8bBgmcHl1Ek5cSsipW3vzHF2iXs1ZiaPlzj/Zs0wiFph/sMM+ZkdzSp8skzcJYR62Imrn/ZT3P5FpbVccS3BJt24neCKHmKblXjVtx/TP9rZt1Dh6pH49Xmj0DzXl64AdCguH/tI4bsrvzuJn1wLe8eUA9ZDQbVgIDnojAt0WmAFDTJvuZoIAEXiGkK+OGP0ozwRqkwXDGDySzyus0pIP4aqQolGaVN0J/Jip44Tet47TZ9bANMFDG8ltHk5kkhxYs5aHz7p6PqI6Adhxg2AtJwCKmjGX9IpVGZaN1PznYT9ekW9oHVRsWyNPyjZAL0Q8WwnzGiBUe3S9lktE1h9BY/krX6atZOE07oPT0RJnX9anHlZlMBlFFtNbMuKMo0w5ld7VJMZU9cqgpVrok0ri6BMnHp9ji4nZKHDYK2kYnSNjbhd8XZOaWHDBOqeGJAMbdGcmcmCCEkyiadczHNpbpM3rW+2o//YWvwzH9Y5xy8NmrrrOxRZyr3e0VYvd+aWq2XKOCe9w0WgYZ9MKZ2HdE7FwRtwrkLkFUj49psojDZLl3Ez9dqG31beaxNQtZOcILLO4X8v93IGaU7JgNgDIrFL6Gddt7Beitc2tuGFNiW55H0LzWeow2uOjy324T5sR1pwJJIjW0JnpSWwWkRQdM5aBkzNvSXHbWvV5kHcUu2/otR7GQa0MS6YqUchD500oq4Gf0hzZplWy1tHyE14mhQcl71BNQogiMvGKeMnMaX36ynZauHDPFaFWQnKRaI6xKAHAftpGeXKTAk+qeLRk9ZTcKUIudIPEkzjuX2uOa+7ikyB0stGU+fRqNlsZ+5TgTyGAzEJiVdLWO3qQBj57mBiLRJqZR71oHo6dTy+ZHaHC8mUj4KF4X2MsBjmZwHcu0S2b3pwqLqKOaGV6nTbUcRoNFIH2K0iwBI6vRRJnGpPgvGRY9IC69YM6xOcdqLekX1W9vpm4/DEphkc0JLP6kSDN8BDDzaL1tU02vu6rFCFABsFHDNhVA7JdoXa+j2hFW0XI5Wjqtyhxbjs1G6ehT88/2iwlMBLF+m13TB+vciAnuPpyynoGzswZ5+G3eGITWDzXAWCiMW+6+Co6BCZFs1cSGRYCxlxGOFNTBl311c5rwzNRwGepLVrmRDYweQbbK0Gx6Mz3Kw5tDY0iYV9TMYqmO7cgENkoXRYyFZ0slvmkhLFO5sTJN4VpsAMnwm3PNCvOlMOIn+lRLs/5aAHbTlHjEV3X374pNAiG5V/cD9h1tPS+lUisRu+hh/cBviWooDO6/78McRimwnQ3sIUM03aCP1L1GXnjSCQXQQpuVal79QOe5svOLxhaZ3cAYCwyi8Re7zEJeR5or9y5gCMyE5tYHXZ0e6MNL4FKzCkcGLYcpqRe5rVlr5FIykYJ5UMvxOfFD3WTrjtMmYe1Aw/jPgRyUfOZKT0da2kxtOrXgH0ToS7spthNZWX8jDBmxbVJzpy+CEXa0wony2mzoMVd4zLlQ1xhXCoBxrDVO49YdWzpbOS9jVoFgS6I75YwLSbzGSgC32Dr8dxuO7B6LPyZ3/CjLACZdwAnGdUcjhu1l7TUDtKK3MSYSUNPsFBLDbUqa5ox9kWvwcNKh5P3FydkPw3mtkL61c42O4csHkUGbUDAUKdiakeTsTYjtkCUxDZ59JDmEZOOYk3mj7QJF/qSjj5mJz6s6lJtQtzu5H0yi+PRl3TcJ/t0/T82awZdbSJ85ctuQeP6wAnqQKctz5ca0wjZrnMLJVrd6MVXW2s00jFibbyggn6FMFq2bgzcthmxcySUWAm0jkmNSPU2KSeawAEH74Td4uJikAOlkC8x8MX7vcayeMJrc1zm5+zlx7+Xs6aRx6I4AxQxSw3BkUzTMSpdqU7zuhJlwb1bv8LY5uD+I8n2VRrTaO6PsC9U6vGso5oTldJ7S59O13RRFa4w+DoM2R5ln9IsQsZ4b0rs5mjk2S0kdn0w2esd/Mq5nTSwzF78kKyWG2tArXzqJu0/FaCntGp6hfkjQupkY2u1G/gc2t6OFjUvxl8MzeYYb8KKyWGhXQuCS+FxZKrCG1Ax+FELMROVF21gy7+vM0QhKpi3CgcM3SJJHVUceCptz/YfHIqeMAzmGitxX5dMdfdBsScwCRnkFyUE+o+YoOnkEGNe4ZZzDfGpH1naaugDd3w3bhqLdB6n0MnC2qhCzKHpD71WDGt89AfJuU6O9OH4J1LO5x87DGjmrfVWC69gi//hDb8gARVEaNLrqRs1ckmOmHTvWTebVj9rMy0Sn+zGTbxOg7HRiT5KKL/PR7R3SJRtEf16kVuz1Vx6Hxg+/Vsgk1hBGXIMHPRP9ZLPDs33JvnEhyCnemKd8mGaaEwyabqCOSrCmI19ADqWqmKqKHwlNtG6KfwxUWaJUH4oVRZM6H6Zv0z9tvsixPz5s7j6Y2mhUjzLtwGiaT5kaLsAejjzbX2YBrxJPYOKtJWJ5JUq0RlBrTSWalks7qeEOYqXBbwywsPYA6KBORTPjYFqV/92KTbPj0AYF7xZGVhYbjPAIG6PCoYZTxE40PogmNv1pKDMxkpBsHVdvsgZ0ipkfAj35+KBgjn1gR/XVcZJOtV6RjYtUGWrcn1NVGN1iqb+fWA951pxkyIhZjfMJrOFTZbJeQtlIR67qPCS3GmxnIP+lfPXBfkFMLFzeE6pVTOi97Ku1HDKioA6fhvfozgQZOJTFMLkEh6GBHYp7v0SJFZb+s8KRFc4tNXRgLn23t6MkjCr2Jaw3ttivLw49ax7zocZ3ZpT4RZ8rwg1bcv8DD+36tPlbp8ByON6bjTjZ+kT01gadZCPK1aaYjqK2oV3KCwUWkzC84wg9/a2D1tDekai3WakHISzjFuNVDG+yXsB0767ju0PHxhHPNZTjGI2zM5hZ1ea+Q1HEyxcM8KD3lqv0HZh4UzAO7jdwyxTb7q0Iux1VLIR6TDYwx4YWjskF6ILA1IVt2A3MsW7HTHWufizFNafYeKoDZG+t8J5UWLX0/vZhLrwW6q8fzOtQgW1SdefOcl7RK8OAmG0vefATRP05bnQC19DuT3461+pWdJeJmCXDPGW+lfRdeg/lPUuHQIy+sGgXHdh2ddjKsbkxaccu26qLCN1parXbL6dBTsQ6ybvMP4XqAsDrGk6d/PJcvfSt+sOgDt75GGj+shOmdCfyWdK25JkZVs3vWa6dcPBhR3U55Fr9TeYRGvzfZBiTF1evk4x8bY5WWWPYyT8z2/BYyKsTkOM+gxa2YcJNdoVaJ95LRjYDIHkZ7LWh7r7wj9uWNdErPso7KIgBE3rdvFJymDCeRkzg3izipNTpouxVte/VhnY3Nr6QrM74GoBgy15vL/WdA4mRyHS6Sh8kHHqCPSyIho78A0BM7YgS9r6u3qcaZJMiMG7K9EFQeEr0SD5f68lgGOPI+6epgayyDrK9ydkx1uXJEJuwrOpFkPw9Q+OKnElKwXfA1sh7IoCrAZ4xpM2Hm1SyZwmoPTEIuMadAX+rLAsvDmbU8y0mlQDVfOoF3XcWEt4DeLFVSLa2LuQLQIn5lP8pJuPG8+1uqAFMkllf/t1wOnbXWSupip1fLZ6AL99Zd8UtQulxNzFKHDxji++8bUw9YUA4zY6lX6saqaaAAhMCZK8yFr74GNeRRoVbZOseQaLNsZBK9Lk2stfJGgVG3W1tkSTzc/aFqrMaxWrX0436VWL18eDwYkHBjrzKyZ6R0MkD6Dz0izNpdvOmT45zscHpPATDmRhUVLv9mu19adpTPDVxtl7Xx9WQ+199IBvhIhy+Qug1/872Ct7rxtfkqlbspdIDema5MLfZohnHxtlibOcakxyS8pOK2Il7GbuFzG+l9ySjSGPtst+0V3qyBbquMjXceWSreX1ihnWzzqYBMp86XqXaZqWvz2XObWwK4OFlViv+BdPY3Xp57Nd0Zef5zXiuQ/h3qnYl5DveezGUgeeXkU16eFzrSIP5OfnagHornMsqmwriJ3W4MPOmVk+TJ/UbK11dwuk3HdiQSABP4/ZYv1LphcBE6n1meqMHtEAnyosRb8bH19gpYueQb5fcQChNxdTtrmyXSEzbId0r7hvS3LkEd1PQPI5yzlv1x45fGJJj1KxIV40GlvRFxkI1i+bKJzeQaN80x160kQueWtknORBYsOsHX+uTtLHZi0UJP/YG5dU55Wwg3U7kDtOyO5mS9RkhF8Db8+ZkYIc27r09eEWu4fFqxYjAwMSZfFsuUxMFAgNaeNPDCT6M3SPHxLi4wQmR0k3/brCb04o5roi36uszp3W/not0HZB0w7LABhf4N9HEoNTFTm8kvZrxvu3SeGaCu1wf23ss1Swdap30FFaJ88pe7gTS5GTi/L3fpIyLTCSY97WgNiII3QPoB8NuNZuAzAw2oYB2y4729CGC2WQk/t+jUHTZr7NPTAZBSBXU/+pAJJbK6weSnsWwnDDUpuprxZuHqwTLQGh0g/Gfj6T2nfrTniJ9hGZik+WpSUxRZlYNMfA+JBfNIIY42OOFpkGSg/ZHgLVllhxLWGfZpQMaq5aivB2SbBwuXlrDJ9Fv6N9dCz/lgD13Qnq9zFlFF6zChHigZ1uhHrUySAODkQ8yJqyB00a6W4D5EGmucttOn071xL6AtTdzRCVi7KtrIfICn4k+zQLa+4jbz0XBq2jW59O9He6hI0jZfimSIq2lI512V5vcXCBqRYd0m1rLzydTu9sY7mmerS3gommcTh8cuFUztGY99K7149oMkaev4Q/RflixJbvlbu5HZRsqtMkMYVPTJ66fEzFJ+YX/EIsRnBMyH5t1NHLhQQddR2a6t1vbq8DzEfRFCY55Sa851unwi4DgLOBHUqcgcYIuSLlaV8PsmmsDERlgWXLW0Fy4sy96KWovMbuJew1G6t8dc2J8rtcGETgrIs2as4N8sWfTcy1aYrFwGDmzQj1T6Upk9GFicuNW17kAD2jaBpWBqmaXDzwxn7GcLA6R5MjsLpuqNaImF0SPdaNnY3oZkCf0rWZnQK8IxQgkiw4YkHyGWlqpC8sx4x3TZXhldMPA6a4MDyFEojADLiHXP0X6dRTt8RUpzX0cdYrRMFamVM+umcOXZ7KUF9ORq52CdHjZ2DKKhqfE6xXiYakMqZGygsnbDuaS21j4Pt0bzan/kssbpo4uQfraOK/E+LV8x7WsWYscTkcW1A/eThHNU0dGf2Vr7neMLHFOasqxxQY3RscUvC9wUW9NioZbhegzJx7JMM91+DbDWf3oThKDqk5xiUyGHq9RLFmFQxKpZThjwrFt9tKKSVEFxZH7pC1HG+jAM10UforOHt5RjD4Sue/kgOxUE4sUWkWFtweWc19TurqONPZm4yLl2kB5w9G0xb1oxQ9oON9FoeYzvP+OKWw1nVaAWN7d5/mipsPn4c3woUpPN17auFXTw9NO03CyZVedwKGGg/MZ2ga+MyUUbfTNXZ2SDVv5kmvTZCHqlsL6EvFipdBb4WxombfhMFDWqYgkqWYcDLwymiGtSraFbTSwDu6H1xf68gSCyWlDrD+ueCbySLoqIiJJpH0/d/ceH02XHkrWKlf5fbrQBkdjiJQw7NWMymWvyi2aTrPGyt2a0PM7X6dSzTC4fV/VbKm3KcciZAfNFFxcu3UH+Z6z89DWv6zWCznZy0h64oczoV+BDzWDhtIqJ/SnpGTjFuYIrToBS143cMlIR1mEmDnDbBZpZE25gb5gDzoOomDXEoUs/LeDZ9aDo9OzGDM1mUl0PRLGmXs8reSv4wUkcjl26BbFCs3DGhpDOqrnyHRu96loKYVpoJDR1Lhpp2J9nP2jjHOzFwlnuoxcPainI+zK0mYijNylk5zKdzEDxT73ubH4o5xsM8JRxG/4yHA6NfjWXiW7v2h7r2Wzs6F1BbUccRkQusDrbj1pKZxkozx2fXszIla/iM35x9HCqIlipCwPHaAiMx82/607BlM12MXebT3TNZpOw0n4kcSF0HrrPETJ0pg3Arm5l4DJA37GN8K2FhtYgTwWptxOTYC4sHJ20ubDvvprSMngqpRth/546fHejrO4qxvmYiSs8o6jsnEOcCN2hMYTBS7z+9Ao/jxZux2GtHnojIkGFQPGZevEbJbQHEd08bulZ7Mi7p8szOkYL9i785jBdVvvs04zLfohBN9cpv8LLIeu0i0fnoHYMW0BsE07raQguxV1oeaLdT2BsfX41k/VNK8Z54twCeXCDYcRuwvx99F1ktzFGxNdOlPkgvXCt5nedvOWgxvSasUF0J7VHQ1M6KmAI03qVuvvw0bbFmKglFu2k0MwUUc1735wjVhhWaltKOWvTvIq7FRJ84n6N0nFkea2YumRYfWs7KOHgLfjVir+wxVmrD1j1hG+0yoaRSP1Q5otD8XPFzzjGmpvivSxF62FdFp6ASrey7u8A1jdrpn0X5uTifP3mZgpLurpGoSgn6gC44XYS4vWgPnf5t9wZUn06E7gfbNEMkaFdboR0JU4Gcg16T4kbsO0fT6pIHCG+h4eJISZkBs94p9/oh6kaNbTqhGHLsz65QZ0rIMS+qyjaZ+gNrrusUnLWdNOFy7gZcICDGeLzU5kDgcGxEelm58F02gU83Eus8NI1SGJtcOsOKQnISLtXk3A6Y8DTOQ2gMk9/DgMRxbToUutrW2mP3IRIQVa3HzpWyDKvFq47D4bvG7SY1anH0dNaHW00GibdFKChYf4NAf6XBHVFpvIJ1OvYC0S3D2e7NOHWsPzVUzYaUNSbG0iHHehW9PSO7HRl0dx6KALNd3oBzxj9b8NyF9WmGdVp2rZ7PO8afb1WGpY0nCyBsHYLSoWujjzH2Mm4+MiU1RxnLGEELfXRiojAqBjcW1clFctdjKFowgrOeqXgNCg4WB0jn6QNM/JRhKfX5eHwddyS2eYrPI+vVXR7JE5wjaM+wN/TD1mNe0gJ4gRyUchEBtFEeT9U2wUblTjZ4eT/0rUxd6gpWxZgBCgaFgYPBacvIPSoVGhKNHiRIcdC0aWR5wHZHkk8MKFdv3ZcWj2tPZYYWJ9Me6gQXX3+nJtJUNand88G5zU+QktnQ13GLbwvMZZBpvHCehmB3V3D64GS665963UjaXEAPVa4GQS9wurODO1maEkym24HYyGje0eIotrpWk2PsVP3954mZAzSe8TLXVrm7ym06CO1TE56JmX2y1r634MOXGxRnD2Nhgfxela52N2Z6oFgxtGcxh2qDFMk9Cg+vgzWkNgt5OLibFmKPtGLAnHUwCJ3UwlpYa17PulXNYEhkVLU6QnaIsJCBS4nZQ3hdws9WmrOzQG6vOitVMdPHyJBaVR9EO6i89FSBR4/LV9ky90MrmU/rCx0d9M3m+aaxtqnaZnjcDaVE7Sb3pdrNMK5gAXUz2bVTOA05FksUHG+IArQ0fdNORoYTWcdc+q0tYYVmgnRJFr758KuxQQdcAfupsz1wE75cfGpG+si3Hm9HQb3qgaSvPxsmjavxatnX5cWSLz38mwzYsZPiIVOK27V9N8s6kXzMgNldm3kaEjEDtOmwndBrHk18OV/aKKc7sWr0XP7WiAiPNA6uySachP7NRGHjzB0H66ds8fOex+tbTvpMOyXqaMX8Krex3CvW8YZY2GLHAlzLdpV7ilwkUZrV1sY02sP42qFCwAeQKJwLtouMz5L5ojjdeMdKI3elHuu9s1ZAJI+0Vi4A1d/aGYzQBZsP8+FIQD51Vtbi8cu6F+dDRLWvlD3I7nvy8nYpk3nZpBkxJJEdqjYTWZZIKshJ8aiFwAEWaLj1fmIyvGVebb1MlV5aCgCQ6gE8l34RRmLlt4kiLHl+LVzY52pwnzGulmY9kGSmTdfohdqYKs8b0dMTJWRC3HBDkAbQhGkMyywAFK8veC8S0q1GY54sjaex2N/LjUcYY2DCZJ98TQmf2CjKYWaIwxEaRMtwC5FBco30Z8DLXyHPhsjGxcjrS0WYjJw0cXufC0+aRCtcmgQy4qFFpMuKYwWLLi2OXqbdw4k6n9jzHFoME6r+kkEL5cVC9TbHFZOcNUDspXMMdoMD8j0mTA/XbVis3V/95NUdPHFZeciyhoYSN8cXdDMklFld8j7zjI4yhJFOS97tpqL3KyXs4r2psn1EQWomRSi+26bc71Raltp1+IuiG4xYUZ0nw4xHsz0un5bJdGLOhz6MJy4qISDKhhJjdCIZQexORFvzz0j28fcgK+fq3WOE49ECUqZFiw63xfAZz3Y4w19q8moL9VkrrVdMjQGdvtT1ubJbGMBrP/NRx7dm0GLm02tH43nsyKDDEYMyJepa3zajWjS9IPBEyQNEMpbDs6KAfgwITJ7iFCWX6Nji6bKBjw2OiY95tAHa+KLLY4bWA1hdHioc4CujkfAC+gu3VinoLF1WdeSvdePWSvtyDrJ681eTajSsxJAVcP3FoqHzCm7mqWfTyelm+0hOFHm0HrJebjbUgSA/LNLlQV9/pROgXUqjv2OLHVoVrD0Dar29U2Rl161VLZbwNV0WDhdMORnum3v2HpWs8wRW4bIgxv6G0/6bcbTcwuyhvbcvug4wysbObjGZakG3fw8aV7z3eZmHd8YGKm/WJ0a+jOUaFkT1HJm6Mja/hsY7U3Uk+ANj5ei6tdQWvuFOu8UO8dtbGjudEu/qDS2ljrxUCjI6Zd/AhqZBhxf+lpjMFLByR7RAWkt8xu3oJc9+n2kSjePXrKg1Bh6s4NZK62IddKOvTcyDdYiaMYY5DvzMLnj7fKo8b1hdWF2S6A6OFoZHKB/E75jkrFAv0xnDoONIv9mYT8I6hFRtB5BvViPZ+Zif0Tu2TYU/hAKkIKOvH9yM0QlSy89DBueLzvsHGgKKJuPpjIVWbO5P+BFYANm5BpaLGXgQcnwNzJRWyuaGbd/XqOkseIgU7ggNkV5kUzRkkfYfxyMH1ACjsh8sbFGustkwpi6GrNPDGEUnBv2naK3h9lxEsR7OhordGGc0rP1Z76MKLWp4d9G5JlmHSrSntz5v1xBztHXBvat0d96o68Z4hcTtHBvkPDO4CWALDWGp6BEh1aTg6XbO6qSzSmua80xQBS+EuDLmKDyni+4RDeJ5kQ2NQi6pS1qqBsi7L7Pith1szH2mtPnOudDO1urnE1IDq9qdt2q9s3bIua4jwhTEWdCfO68Rs1OaQGkznrmCyMPsJe/w4DaWV52RMZJdchm2CDk1R2SxjyTM4SN9use3ICsUjrIWJcubUuMOauiQMteDn6HUv/r4c1BK+H6tDhbv+LPY9bi+iMKeggzE9JoE3yqj6prD8rB+43VF2oOTP3KFzcyzbWYkiilAdPYwcb5X6NoPmxoHc9YWvtID+5JGcoB6gY8kzQb43z6o7cui73evG4hCMeFu16bkpHMphpvGs95OZo71ib4Ai14m+GBYtuKWDK1mnYPdd0m+VtrXxHlsEtReZ7gKcH+hNDAhbgMZwqgXoZt3TJ3yk7KefC3VmwZZJ1Ye2Y5A4M6SeDN/uEqLSam+ZgdUlLtYvQQzoyetb1e4LAph3uMgqDrEdWdAKOJSZeAQUDVPxNFfk8cNp7MjZNOiFEszlqUVdAd5rUikHrs/tMtjmeR02Ae9rtBUubDXNeZ7jvjbUepppKnBh5ooS1Z9AM7SxdMbG9ocd/T5H7toK6BmkVo2xtjGXLKN43F8s45RLbHigWMa3q4YEDjJvOrTTbiTlVTw6VYNn0VXWpyfN9wQEg3zS5YbyeT6DhsxkHtnPgF8Z5GtaA27EY9+Xn2xwg5HBGjGPmxJg+2OnaUI7/phkDRwmyxrCdxQUX0K7bGrdWYhagcw6CdEZOCrnapjoVm5CncaejndyQAbukCogFup3ePiSQZz7p7msdeA5JprNBqdxQuw6n64smeuM+LMH1vy9MoNqc5dh2OwePbIucY7U4+ahncmDSXadR5WTv8NOTYmUKz+BI/w9B9km5OEmH3gN9beWbvHD6XFN2ZUEwPS2G2dfzCGYbMMLk5oplMkFab+/Ti8cl3QhBmHV19VOqhohfabkhAEC7r8jXhOq1EwgRnP30tIaiEwMbmZTDduvi8n0JoZsJ9Yc++x0p6Nkzgo19kET10/5/2UTDTgIXxL5kWxSky2a4jH52nPUMShZaa93iSo4HV9RoKYOeQZXUS/Q+6SdCwhf/wzojq32LWqmz1jBgekH7XSiEB3c5nhaovWhHqLf2uxaA49PaWEyLDydhzuwtK4cUcnNZpbfSGUR84z4KEyozERGYXbRKlpgA39eYJpM0ExMd/dWAUQ4tu7rETj78OrLLQf5nk1xOwnl1DzjWKv7Q+envfTnwbL4CXtm5KPZnnmd4Nf+HYujxYlqLzFwPn280cdbBb9J0pVjTJ0VjOrRkwHXb04zec4DL4YdxEM0D7zeKegu6i/NxQVMdMJrGOrcadZmWdYajmiXX+zoxnlkhuY5tBUrumL2fGlqCMA8FfpLBSJT3T0r3nMBjHla3kg7hrvyOyn15ODTNAlQMld9ybUPKYUGzIKdE+BBwoGFhsrTaLHDncydWandckCZzEuLEbC50dupcXA1rmrjYP9pEBy0bImfE01OkXUBJf4kGiKAlekcspyem1A0WU6w/CsAGcVAqahixtzlalCYtPopc1/NFLnhK1/H4DhcBsh5HdcM6SjpMkGYjBLFbmhqjIr9vW60gSb1DiKSOIcgzY1ga/SzjHcSdf16Cyc74RmRp2c8a6tygLm/T7Ejrn07whp7ukD7t+PSff0aZvEyxbI9+M/Q6ZmLdwdj86MzI4iVMWxabjkhYJWZ80DHYWIzHVxImU7FOsBb3mB7CsDnlhLPpDGWon/Pba5jO8Zo6LcQ4EnrpTJvs7RD06faKULTAFiPfIguQXNsbvWsNfZf8RaNLMqkzctBxJGqCkwIVqW3UwXssM6AlCb0jFBdhe3enoIrs4eOY2bFnxUbB0Tm5LKL7ZGTRCxmvhtl18Hr09MUwFbi/MWOhSPUT5nSrjSd2k2oizSavE3NaZ3ZNWuh4aI6wnnIrJ/MbjaNj5+snvQoWRVLWRxYmuMykGT1HYcgTkw1SNrhGstX5Rzi2D3i9NPxnpklSzdWF63KMOnfZOTG7R9yVVGQX3OTduIR0wQlNBK0Op6ALaUPkiLPMAGiDzzdJp14zTAfWH1qnpmt1MIB76bWyOoijyDpHhVDaaJwTfeJlgBvK0IFAOt2lZnHrKEubAwLEfF0y9QVxgcdNJgRARxBbn6XTFrGDMfSvxZTw15ubxhLI6GZHXeKdumXRCcXdU89LGOwbSrxWs2wwhaols8FpJGLRmhs5JO0VGGdcViuvPrZAzsqGxvAF1/1YoG1MtAN4cHbRg4WNn1J/u73gtKifTB15oVcjyh56xiHGsescG2IylNpTgBWa1Q7luZTv1pDawrTBSua4dJJxU2XNNekZfNzvGEcDAz1vsrylxbVfc8VOZW40Rzodj32nwM7ibHpd/rYnse0NKNS575j2WGHpfOqtuGdNOlk3ASYJ6f4TUB7t0/VMqHu7Sr/2CcvQs2axSwX/5iodvv29nTO8Hv+dzQQ7CEyGg6D0M9AYfL+3jXq9tN69GbK010NpqNPq9bdJ8NiGNiSqQZi0Pz6Q7o893XZX6E3jNugz24dnNrcxS6qi0rM6fr21sNkn18FMuqTQhi0UVXSoZYn2N+k+ldEgnBomAy5GYPOMQCOAk0sHzus1Jrd7Z5TUchdHjYFJQ7TN1YZhFce/WOVgwaBvOzTJVrBbNusRcvtApLodhLrDlE0NyW+fOo0M3syRNojY49iZzFdmFapJimzXUKEegNDFp1jk8ZgcVf24VaXQdDy6IZikdQZwEwB+606yPc6kjjYCLud43TzoJrNjUltNLL/bkzgqUekCkk+6B3efRpxgjizjLYJfDemFJqrD2lvC6IzobBu0CaWdUPE/iVSd34IUH8s9Ulexs0IFvtXRQ9piuKHdeGusmvOvoXSxxaSTyk/J5/LJPvq25OBVoW1dtNWOPUlXXv0mLiYbRFt8EmK0bBacizQNJhY0HiQdph2DW/KGxm2VGHYc1/RS1CfX7kiD6xXLLUDTS3gCMfMhJqmh2+ZaPV19Fhi2zGumSIeKqPnV6C8I28SSwCRsnwxc163Xc2VmzH4pNpkx6Pf3Hinsfl+Dsc1/uWnGLEP6hhzNeO8eTbRDqqZz2YmY5N2NxIVtetxYEkKoNpqL0D0Rohdd1pnCNOYyZ4T9lFpKLM4DaRW70GFrdrd3+QzIrJGIc21JupGHUi6Yu3ejUD4b74otg6ooK8J+zzU0++X8a1WDlfCMxumo1TbjxSxg3j4mgy0Aa29zC4relwwzJVaZ1dJ1+WAcp9bjhCPpkZzT1KDmWVTPY3pQNM1LbK+yiZ6oazJXhtJUxHpmkB0l/JAqo3DhvBvVq8aaJ9qAZvZLCGumgkM6L6WJ9UbexrnBU2kvUyUV7MXNGr6lpXAI6cwPSHvnUQNkRaCrXQlob/rS1oaS9NGbaxsszy2lq2To97S78tjRTySsrvtM1JYmbmJDbKZmCDDR4SXV3FU4p3zvd+nlij+KLPDxC8VjVt66GcpLBDhasByGM7jbyy4OyE8v4JuaR1JkXEH1Cg+a4LP3mnJE31zYzojGIO768syXuInTntrd1NzcWr8Etm1sewwtl7zmMORZWADIfyUo43jUY3gN6DGGwLASNpzjJlaZICMy2+enPO0+Qnbym5GNF1ZuWJR/N62atlFk6GboMLvW0kfXCejOaME0ZgmMkGGQ3IvFVvRLQfzpmS1z06phXbR+eRNMCzaYWiC7ax4SxOiugsygCW8oz3NZzj4jz2rhz2faaIRsAk54brU8OliorWsboOtYaFPwjdD0cE4pFvbVCtMK5y/NczqYgJxJx4pJt2ee4EE9o2oI0JJm6adM1lpYcbUrVhrQraInAB9ph2GUs0+xpFvMP95oyy9LGeW/ShPtRmLxHG2JjTB+WZfMUZlWsPK0EQhK3N5fOsiyRn5i2gtGlKjK/FiAs73WSkJxZOkrB8A2GsuA12zk003n2kYidYN2F5M20RefIrr34rx9RqOFq/LMujEs2866tbznWGrSs49CvmWNSrrzLNxtajSDTDZhFkxw942/cdpaF8Hbd+d/HLN+6+TtqXaE9zI0Tmj6PdZkASDxxW0qzTDxms1KXvbEmLHP+16Q3NqVgYqUCYGlCKE5w5ko0ru8F34Nlp31kwpRHdae3j4SKa8WjIcgKBfNXV6ep9qxKfivZKDXO6wC+V+QKE3U5pSbCv++fy7Ufmv2KI8qHTdcno2KI4ruTkBI0bKZCGiERWB1U/olrEorJ05TiTCZWpd7IbmSSK1sDaSD9VlOyPU8i4d/azhS6BDjqi6CXPXMJUpkIOfYxHMkGGlI4qfOkgl0MS70QDIeW+UcwjKWFd1UXaZiiEQpDXA6eia+VyZwFsj9xslnDvK4ftMgrQq79ct4e5Toi6sVooGwlR7id1ZcBL1/YXJZ3uPuUYPGzpk+i55MjPhbVxoq6gjTq1et2deodqihIEzb8kCICOxoYw5JfkLKlHoBIzHH+pU/OpaTY/QZOZIX0LR8BIHAgMd17TO8HYGd53mlUEjbpg4cwAEUMSBPROWUdSnhnsBIJV4jaTljW52LKMsWLa31pk4KyrE+TarGHek1cwpi4tMKlLpajHbyZsLMOH0Gv8K6aR1xtA4AXtC1N+kzYL4LJbAobJxUybQtc6M892eZWRtK+XiGNOhK44RjJB+SkC9PSQIArsunZ1Cd+xdj0gfOtLtJK8Ynd0B+GjnbB1bmLgzs5EnJCfTRzI0zRdgFILBS73ltiHJXkLLQTi7PXX5Hc8ihwFD7NBHxc09PyTrksKBaRffiqyzqq2x/2GId11OaE9U6lxcn7QP9ngddf05MHTamWqtj0VsXvl8mRF3Zit5KYaLTbakXd81Su/pXc5OtTn3WSVSMKP9+yvU7HliWazORbSBMjK6RuDHU6VikkWCXacM+f2KQSzJ+m/SxYaZ6idDY+uOrQiwRv4vtA7HCc3IOu2Ss/zsd7S2C6wr8Ai6fQipURorHw9sYLJLydOlv8y/uWd4r97qEJLkVeyaS4gfpt7TLb4p3zsAWE9rH5tqzHxkPaTUSD30AAitzQeZrW8ga7wMfs+eowsSRhwfymAGW90wVRaJCiFUedXlZlnRd1MRmbiA23Sa2HQesmANC/Bx/NQxE+UNfWBoWMx8hxmrIA9KJeoQswnnoa1NL5twAh4ZkaJ0o4neHN7OuvnnFU3uhp27/4uHiWiWqwLfz1oKY3gs7zHs5naKQXI6sQjEJPi6VLMrsmnQdOqhfMKPF77Vrd5ppeii32RjBDPbsVVgCP4OuA8l4+m9DzeXp9BNDB2frbWIdluaM9CYSiiuxmlEAmoWs1i1WBmyrNbp2330zlXt0P2mYUVEsSBGw2w1mlqDXF6EaMbCh6hPZilgaWDG2PwVHHychSZ4oyuicFxJZTF76zMqGY39QSKYIvPxLEiri3XFBHDI0trcJI19IKqzq8la3NSoJg30y+npeD1Y2JrErD+LlzPJOo4xg8WuGGlzGDAWXIssoYrKyhc5IpPMLmR8o2x9qZESIKej1isSaRzlKa5mykCvLBs2I4MfljXWpBG2dSnY6ou00WunlrSaAZHc93TWo5/CRCiCqN8cYMi8ZMBq2DOAdgQYxp5G8U9jNpXMZEhIaCZPJ8ZY3SjnG0oM4DOv44NxHLO3NHlmLHgzPpg6RKF84Vuc/xm2ejWeTpGpULZbZ0z4E6JfCsCJhc22loa0wDhP596w6ujijtzYA6T0NNfJSFA2TDgCl2K4b8BM6O+At8uK5qV43CM409t8/mPrDLUbgHzwBuly8iiy5aEnBFfi8INXd6jt9X2e2ODDpuX6o16c5IS1ZuZ/WfYsuqHwyWjbkqtViGgXNKRIYBx2CPYNG1s96KSAq19lhQL10GjSjvmWRkzRD5luXXgqZKHsgW6Dhiv6Pi1gwNPlL4NkQWpxLLuPkQeID5Z0q1mgGX6XAxPkwgsFp75CCUWJdozQovuEE1SSYZsMk3FvJSmi1mQkw3zHfMtT8m8tLS3dtmyJS2EX0Yf2a7sg24hsdnKY3G34Mex2ZztJ1jiqbJSbnzf0YGRIGbGQ1u4HyRnGhp8686nKjBkvu7gwjIYfCBJGmmnCuAiTbbLaO5hPTk9R78IpEaZbhxN/qpUMIV5XykgN5rvqIOflWYKyfFd7ip+xlRnKYbl93936uMPXTZ5oDz2mc4qH1prB2itE71v1yObnyb8tL0BjhXMiOSCyyigYSSsDPh8JispgUvQttzqs91OXmrCHLMgTKSOmCEShK+6RplPe8Br94Kbub/SsjB2hudISaZKIKg7ZISC252jJ9AxZn6W2mPZBsyVWZKYtBC+kC3SHCaz9iPVmjXtW6oS9KyIuGycciIuBOjcM3myvW817twskMGxySoo+R3LT9Q6Hl1SK2NBpLAPkMV16wUbhsIdGVeE0x2X/LyQcWQzkv6xVnDbPRhf+Mo0HLg8FQWSS7G4UWN4yKkZorMsL2/ecrGqYhOLU95S0MTdaQN8oq8W3UxhWCNFjkyFVTCxWTpSAyBamT2jldam7E0yFnO9x0cmsJLOl2vy89YASM9LC0VwETnt5nXLfJmZcXzW96NZ0w/JxxvFgpQbdxI9G6uy0q6Ysg/E7g51NYToClciXxLf3b4mS6rNYDk0kLSCu/xjdU3o1eyRQXh4CbjR9dPdiIUr1KfMZoX0jRGvFPK13o1PKMMm0l0Hje6/zb/mo1fSNflhjzZMxf4jDCTkiY1TjaJcMv76ApYkpVkAnyiXlC+cWZG2GAyM1kWS0QF63OC4Nh2145lWtzvz8/6RADlj6qOwxAeTNgypA79p8vX+4zdOHhkygprE7VCD515tpkhTQfhnKzlk2FyBTJ06EhkUR/B3G07tZTuGGIrQyV6cfw3rMlyFK/7e9A7fz3kWa1iUk6bj8j6Zq5NObqgoxWWFtky0ghWeIsj7iZ7y1Hq7Mcd/5F8gxPOqkRI5i6zVzaz2Guij8pvQGLqBYxoMd8RkprAoDtc5wMwav0NRVWr23CVOuN2MYtbCT91wpQEtacQe7WwOlrzNC03ufu44QlkcMNzOkTN8uthexTTJqRBcyJUEmzdFW2e+ta5yfgpL+UlJSMWCl9YtMazgROwOXmv/CnOeTT7SaDh+QyBj682dQgF/InEQIS0TVYP5HoL0d2yZEwg+kkJzPhbfpM1Yhoh8id3ihgqc85jDzutW9MjJcafBjH/W6Bc81kGGjdImRtRB3FJ7X9inUhzZzUiFv9II3Vb3iN8aRqTbb/JkcROwlr4c09W+1Hw9oIYjvSnMV3Ttt2ZSxEh/DhxAsZVpM81Ar5/PNR/zq+bUlabA2tUj5pCdIAZuB02VsZsN0GqSTlohIDrTN1J1GZ0dusG0gHTrFv1PXj64gTdgVJHskqFKUZ4NyMkU0NkzBiufCJOe5R3Yr7sq0M6GZvnNqrrGnVhC5qaNAEOS2rQSprCS3k3GSwzyDRllc4MNslbwwqH7NiUiJTB7AZgaCgyms6jHdGbeHP/ADLhDmPl/HolcpMxIPdcxJhVi05FGI5irOmdIPW1ydjpJLsmAf0MbxIHkgH3sgqzuxifCKOqe9Q4p0rhrQvR2k5a0nHRNF3YDCadyWHHYHoiKQRgdraEJjeKJeYWUHyv46mlc/6RYjfwSf78x1uL2Z/LLiTgH5xCm6GatOm6R0TLmwcsPUMR7O2cElGv5dY8+Qfy06j6ZZ8kOFvYbJSpucFzdxFb4Mo8RHctTnziO5MNNnefCnl+f3M3ZIUDtNaRadZDALJiPbfJVqsFKohlYVyzIJtgCnwRWVPgx25Ynsty6kQzEjJaBt1TFqL11bv23Fw9LWl13zD/qQtd5D6hk/L3BmMzNsWatOL+a5qKbLyeuNGLAHpgfz+R2qRtOUJS//SsIXH39wkmhXC72xiM/Ii6E7tsyPprj7cqFtvbVPjrQkSL46D0fAtxoQ7ISOFC911F+Ng8koUTlKyc1pCriQO6TfU/MOo0WOxLlFCClvR/kLLcSde3UrMkFvSsqGMUzYs+egjMVdHKVCh5F3RtSYGbnxMGR5yz1XYB79nR1RZQqMDb4wJ1k+BUcrax2tWK1tkFICMGRF/3A5S7nlXNZC4c/iFNOtGtI6FohfzBUYhyK5G2rebEZbkYP1xW467SOVOMX8kEgV6HTUQZ6bN5M+24MlM4a/tyP2Ezx91v5eADBWpVLZ1YC4O1TkeGyCbcROnuM0mb4R5cu1FZfDCIRe+xwHvbCzCARZ9ITWcSTkIDZqFz9tFVhistHDwfVq3KDnn1ychZ2grGAWWsa1YTGqIjK5u8urL9Fi5VzotE151k8m5mdJaQdIXRkNZckibe26tvAYdq061DUbNsdL6WmD3NEMeqrU9Hqy+tu55Jo8joocdAvr/lc68rt6qDTLXunLc3Pd4bQdZM64eUhEEcdcx+W6TRKLJuDqAgT4fYotbKX5wsEnBdxDSnsbhOK/paZ3scVuxSs9CegAD0Wz52Cdl6luUbYVumKh3QcX6JzxE+r/0gxOsH0L/F6AeSbEWDr/JARiLw3uSZOWD8J5Anc9fdhh/OcAnGIybwms0DSTsSLyy0GYOysv7hu7DM+IQVr28nEvn0cwBzjovv2QanVMh76rsvUe1EMkDUTVAr6MGQGsgJG6yXf5dmA7XeFbDstwmWOSI9chkV0M/loSsSycRGSS/vETFw069br0Dy9+A4MyDzg9pzvZFHvSxMpOJzf9/gvLSejYMCLVlm2CAv3ehqryK5Fbc9s4pE7ExwDjGFwJdp2xDQSBUkLCDPs9f0iSlA81VGWVwbfBuiVIMRNaUCLp86jRbSqNnixxsm5ea0JM6ySwwWXgbO3p2kbWtuBGtAMra3gjezOzFoKd+OuZxM00uXBs3ydGsJjArabQM1b+TsIPU0ndz4cdp91tOCzj053znnrUMQzaezXFe+r9I1YM7m1CDtGy7HAbukftzaHZ1B0jkJXo8+MjjgHIr6a7SiRQ27ojXLvr2c0tWbBSMld2gMDcMZltrX1e7bZcvm57to6a9iGVzf0lgaLD6mIA9DAjgWXIOGZSISSIhv98wuGVvLPe4XqhcO3GmjPDjng+0wTg7Ep1St2QsfCOnhnNwJhac8sIlei9YoptlFgIM4H59j7NO3g7K2eW2exiVk9sKOiuj0zAfvoS5MTqUD8dDem7qvbg/pAzyHAZIpdwCFRVw6dIR5uz1EnKm0yo+oGdKzJnSJOsEHpG0R3KK9i5s3umLMPCZu2snzmr/YhQsWc42IKU+UwoiGPuDVStr+XQD56mQN8jhtPPHE3hno3ckY0wjGbBlsnfcpV6p0PKUqMy0SeeuTUzxTqfSFpls9y1GRywDE20YY2w4hHB7snNWbLpSKOr64oXiHckNNcBGqY4pjgWly9XIKG9XTJQ7HNQsZta2h3qiZtC7JDRoxa3icgtGf6d98hY2NJ9MFxe/tO1YUI/sDe+LQ0uoOiDjyGME4dsZQuRBAmp8c+j1x1b8ydLnpz+4q+BjnvxDYmNqNTs5rADAPmuBD1kVkQi1Fwm0JEoDepMc0R0HHsKJVZ+eU02VoLnycH42ALUy5FmHd11qL9JARmsHyjrq2lPKYHuHf1yiawjM1laT9gvTBh9rMu7EPJyn7pls9IoLrqLLWgZYKCICxpO0grIavs1szrl4NgIhZfQv2XpoKAVqWpl8LOuKIQrweq4AN9to0/dLfuSnDYu7j6iNZ7p/cCXQp+k0xC3rW8wfalUP1UmGo8fJdxTO5N3FLkBCU+W8JrcNsYEcMOwa1yz/f6Yd3VNZrtHQiMaXi08q2xcQ668X4RyDuYQejn4JcWjC0uiRAydq5eXiIVuzE41p+TtnM/iaGmyk7Rqc8xVxnzaOLvlem8rhJRWzIG6anP3Chk5MdXXZzPw9D+Zr4O9TalatweO65Al4hspFnk0aBSt7R6ilHFAwdvwvg4H7fdoT+ihbXW8R9sxmu6+38hE6ehLeyBd0RL9j6N09FN8vlA4/5miwKwUZmuNsjOZLrKz+dtYMkTmmiKROhZLPHwhU/4omHlPFsQg2L0LaaPgS2KQrLVPTgGOCx7EmMmVHzS+5Y0KV6eZ6rGfppZUqH441SyRNOEVJVvLiT1KrMHBYdWOZdR/TuyTV5P/QXK3cPUQDobHCOj57Jd1b/0iPdZx6bL7IQh/2lx7c80f/60MYoAVqROwWMW3V0dyFTvDIgJshbUzvlgyz1o6JfjAaHv5PT+zpcj0WDhIbM1K/kIfPtVqAYMzG2PkbUvmoa40HY5zmyvla9Rozq2cQUq6tE7iNsvRinjIj1j6AzkwWRkti8mixc/fESlJyZVHvZD2yZbU+VTBYGuwDfkFSd0IOKks/r4TDLW/IaJEzQ9Gudgh32ie3QcvoHsD8F6po9NznjXrKAP4AxTvwGO1HZ5OZ6XWjT4szNM9mTw86kKVUcKHFnZPMMLZU5tAT6eWDJTImg30PmFUHtG2hpl4vinqStM+OaE78t/hePZzaK5obTb+Wby0pQ3uwGkTdoV4Dcv2q+nOQNmWJxTb7ndMMhJ8L7JufFcAvZ9qTL1yYmRE9DPOk1xz4n64CCkdWZ/XebwaK3Vo0aLuNzrZVyzLeBhAIMy34XZCaOh4cbHFEdRc0agGcgcS86frwidusy1zi1E8iDpVykn0yLztC2NDpZGZ1+ceO0faMzpQB1CvkIrcsfSLCdf8AYlC1zCFH6zuvms40uBwTNtMQ8bCvSCFea3PYHzspK1XNkHjT1rUP9jDbplNA0vu5EpdvO6W8vd95t3zJ2HGVmyLIOWmDZadi+VL394oOjqBBc4EgBstJ4uoMahk9aRuCXjA/lhEcyD57hL0Xz52GDKqKTCCzALYFX9+t5fTMqksWNYJfSncA8QbpNKQiVtv7p1emmPZDRwGk9TKkITvSwFUnKg9K8FcBE1zZgR8wDUF/4THmO+DTInmvGgxFlr9sMPtab4XdfEXXnO60UCJt5vuQDjciRvnPUs36IMMmnFnu0vLXsDA2vw4vts+PeejzOY1gpnTPEYSuCcNFp53U5RbHkoAEUMQLRBOYXUrbJcW6x50EXn8W2+PmbK2cU1P3fuZ+q9+W57hTWh1rurSh7anKCam+zrtWdBdiIzK2Eq9K502FuTKBqRMs2jzoR51Yox/hw+4KSzFOsgXg881G6DJAmyNlDwI7H6+aK0KW5QzSvVhbgNGxHAd06buJignWdpjl2xyUBpL1Zxo/7Gienxox7d7RvYmweUMQlCbj2n2fCX1EKKQ6vp8jslrQIM6mHvSdCsJ50THymDBB27lq9mNO/aeD45WNtEAyrnYWPRcrFGNbBiLtyFLsRlaks1A5AArPDRas8w1eG858yBBXrihLRhdv3QXlS0jJ8Gxk/E3uklELscFM7zl2R5x0gIfnC7VPZqaKCqAxSpDCl1seI13IXYAClaRBbApnRm1ROGY4aGDNY2pEzfxCZGwNY7EQGty7xBBAmYEU/eMSn5zYTiNeNZomExbhy0haFOs8SIm0S3NeubaoKPk5Mi1RZFF4Q7qZo5Y2qNoVlLer661jFscflH3z8yPdLI5Zrl7Nw8U1TKdQGztTMFmhFHSraUsmyf1rSW0eeh4/U3Y0iHZ0BR6eHy8/epvLEAhrb+yz3EDHMF+avMioohmYbSfe5/5izQWRCrTXvqLrW3u4HHscv2kBgn+Wj3mK3/qyGz4bhI00r3djTrO6Dl7YNiWuBpE3JVrd3SL5AjPiQJZ/2Ev+iSp3SkKnJm9RhA5woqkboTcJpIFmDyP5hm1TBnhcNsJQ4Y4isvjJ32ktoZrXf2K6l26NGIOgbirLtpJzXon52ad2s6IKiq1kQzX3AhaexckeSw+tSCAdeV3udmkds0ZaS5HXvHnzUxr4bv0dB+2grtSSBhg6LYFDdFjOW6s6Chc+gnUq5CWzILsOpSbdGxuTfXRma4v1T9j54EnUPsZ6tw946Y0CNUBxr4if+d20PaXL5HMbv+CfvIDetx/V4vlmpyZKh8qHTP0hBs0o74Gtsm6hdNfaPuZ3fQv2lyWNxZFh8XVjllfoK7ZZdK1RxxDgjXslvuoOvdr1AD7LGrXTPZ2WEowjzoIz1MsmZLjQg8TdGJReEK61cj6vA83e2ZwW2fDreBNVfxVQ4ho2uI/WuLFEd1F9u3vU/Z6RkhypZ4Vv0r3pVSwtoFrcT08NZrci1Na+JPUCXnoOK0sWu4cSpmv4UitVrE03RqWxL0XA2RxnNW5sWfXc/Zl9zcsGhMghkVoNQ3kSYA8M02mt77XwoUMkJ/TkyAT2PWDB9Eo7tqSxLBYpONUYZFcS2YLkZEqCjkAsN2NazjjZdugxvwAM5WHjB/mKCTWNLlMjJiD7jPCdRx/GrHrpofB34Fpt3z5wR6eSz/KfluW4/qmbMit6s/9dZ+tAFJjfl27yQSmyeDG7OfN4udp6Y0l1ce8fM2T+oEnSJA7XT06YOJP3eh7ikHRsfk6O9DOeTQraSpk4dxgsEoRtc4hYF9XVkcD/RSYZoRdiry5CCkX1r5rz7qYhvtGYh9DPPMySTGW3qGu2zEXGCZ/VoBrx/IUlkhQ8afG+RPDOFj1APdfKVCdg1aIQMqdVtOArZn7XpMMohwvo1BeT7fJPX4JX1UP5GHLDXsTtGPxlpeuz69FbQ/dd3r8g2LzYijLCfarvnfORlUmMXlHBL9OXBVprftVgmSxLxExFjp7R/YgmZztuezNBa9Mst6BJh8nQTLRh0iyaJkK33aFkfHrSSVUpKAFDwzZd6UMAhk4jQgoIx6vz9BChWqzBVLnEKIUHKIkK1Na5UDKy+n0BJOtow6Mh1RexTPDKeHGyQ0YaMi7G6xaEt10RJm0pAliJ0qEWUGg0XxR9w1ZbHCM874BuCSnPlh0bTmaW9x9k+lxNA9yDhxa04Tnh/Mc8uEo/fpRdgoOPUYRY8CGmTW4iHZrWDIJtpTSKe2RrXgkezgRK2SPHIb84IFNCiuB0Y7xzg8Yl51O0FdYHTpFhw3OhTYB3SVnWwEy78WT4bAZoZc8NjS58LdKUCdw3NqL5J181wBdM3HDviJP3qAHSoMdb59edBmjgQ42WBY6qdKZWOh7LCaSlfX5WZ0B9JTBvwDOeFpD3NsHmGH9I/OeOQib2lf72cXE/ctB4WEislG3lrELtV5ugcMO6TFcxMcQZLwDo6SYcAjaIhi8y1njJ11yjBk8vC5TkSi3vhwPWfom0z1gr6Massi+qSHMwfppYs5Nm4Z9TwpQGfWpEZyZDb9RpYTL4ttos2YalbBtgn6rO7L0OlH7VUCab3ty9+eIyzyRvsPIIjHlLtfxJ8GnDHxoRAwGPakBCG2JXgog6hjpuzCQHmmC4L6whjctRj1+NZvoOqjWbGrbtKo5otcwzlaWTMLq2bWDYUpnL30hB7vfcUPub8YkfhRVqW824pX05sZ06tYjeVR/Rt+a7qgRlWjTdY1Jr8A2DFFofsqT+xH7RvxZH81+FaAg8MJlBL9Gw+oaC1i57Kf82LxYXJSyESWbTRrlxz8N2Od2YoShV2I3oUXlm1/4phkDUFBldzJ4d516MHFuuOfE6+qAELkdrKh9U4ZWA7RGevig0hWbEDiJHaUjvLnJjyKzC17YMKboWXHbP3xsmLOml4DT0eyBSpTcGUUNzTOsV6+1mGZx70ubcg+nOMXoMTcoolJOLJNpvLLPIS6ypL+9h6mTM0+rJMz5wbyBNBgJxqPPfzlfB1SaEb6j3NZS388z+ZgYIyol0n10aFTobU7zjn2KePIGN9x0BYOdaT7t7i055lga8N/52DsyMZVz8yId4fOMiixL3rM1erOtLL+Z2pT3ARzhCzJWrEINbBGt8tPTpiWDJ0QdoE3We5DasilpNBddbYZcoIBy4oXT/VWA4XSUbv47xwMbL10/nmps+e/WhFfIPZ7l0iMPmYfS80MUJgzMeZhOSmL+g4zeIifm3yHM5X4TN/F2IwzBDhcb165qkxMciOuptFRun6bRZ9la51SYGb5YjQrhrnRMnGvKjG6GoNcSkpi9YJrnF3ODEpOMlnMl/qy1w1E6vZd6oxmbLWszpgAqIiadg8kBGZq/Kt5giIMgVr6iC03FW7bKgevc3XO9r5vTHTmL4y3exTvOUaqFNf0fRuiPHF/gbS3UHCHAZ97/5gBgkP+kwXyVa45ucjp6CDEuWznp0ncg5PDTz5xw/czYVifazWYZIkcqnBviAjAiWNoy60VuEctF5lyoxBhdFJPTQHmF8/NOZ3rHLQcO9Ojl5HtDeNWrBdRbSS3BMOubxHDRWuu9EgCVp9nQFI5YsNWo6qNUzheWmrQFYFPbdjRRpo/XI6UH/MzXFjeKY/mhNCp1JUQANH0ZH8T84BcPffbYSgPwZT62o8NT+Sk4oh9k3x15pH1nDyomqPzfMeYgwzNX7SCsGkpnsXRz4bAjIUhaJAdB6GOCtC6tmpw15c7sO1OTu/A9D9hrhn1Z8bmf89FhfMy6gGexPQXQa/mNm7pqonemxRioKDn6iZzlwej2s1qEY+gt3TrRd9o1O7unPEadbTMW/mK9SGHuLsfZ12VCM2DwmOQLACJNrsn1bpPYuNq79E8IAWyLjWaVpCq2ryYNIjnHp3hDNb1jxLUnqVgWt0y2Ri9QNyT6Qvy7IEn0FD248bUSPi8t29xaVizve6tcIl6obc80yYGP1tOZWNaDNeFiiePzLZZpCrMOL8jAr5qKMJr1aD4tVQGOaQo9elxMJa3bVCMPMWOUDPuusSMM/zq9gS4OWREIwW2vzw2DnYXFSrLOa3mQY9vGTyYWUbJNfP6xt7CyLulLNXoYcLKfiG/GXVVesmkKGpYSYD52aUmA6iCSAHVQUEfFidTAxXTB4+Sy22yfZdJcKnWLAUxhHn7HVd+7Zn8YAO7oAkolowoNIZmfZNi7mvn9HP1m8GwH1Y92LhBOMpSntQWAvWyq7GxkMvOG8k1w+TR3x1YbC6L1R5el3ZRxncbPe3B708AZRT4ypVeS+QKkRa+39vyeJ43aMLmFWzKq4zTDh6WabSrxgYqrREnGx+cFY55Qy0qfHch38CX8nYbaeTA9JYEcwAv7SXT+MgCpXg4+QCVYGwTVaEH1vAm2qTbApkdHz4G7t1LmnBSmo6ZmTdwwhT4Al01r2BNjfwua2MoWc7/kNKDRrLkqjepH3JAGZaFMtv5henbYerJxzDXoowdDq2fGjWJBmAJIE9bbIdYNWIB9X6UeOjLUKbuQdPpJHxPRtOhtNJvcaRuD2WRhVfRvRWqTDYUVDc90nmHnvfxnsej3SfasJjCuBS4rJ2riqAvw3qxiLe8lDn8922pCuzZ/YCm1f4JPtzMq4XSHJ6X7x30RqG3TLWczmGkKbI7IZSMP2CwjAPhr2E0GYaMZTiLaXiLU6flsg0agYKadIyR4o3QN6SpYrsvnmFcjgGQco2RQZ/zW9h4AwDapF0lU3Vjh44xOJao6jGJhOnLYF9ukUtiS6kyLjslQhzVIRvM3VE/oZ2soPZv1nPrftRQpR27UcK+R+H7HUtkQnbTcWW/Fs7rWC8je3EXu60mobr/dXiZtQdBLCcuZy/VqT5tJVmAiwgXGb8u1PU4+a0H42ujCi/hmIs1ykkQXdjRefcdAkhrUZye8Yz9sbk6rJTSM7l69yYgahSDvTaU3PRuETXLxXYEuYz7yxlwMtALgWhJxpY3a96fJVtvbgmbwEuipnkYNMdGbBbe3vosvPmXmVNStT6uoCzLbq0LNm2ZzKN7M6KatO75hzW1y56XVLDkRpSsBvJrpzTcc7JIDTvmWPMiGBkwoyp9rF/9WeBzV6Jnab4k2K9YpYNj7Wy9AlatlT/xkHlz71Jja4Ujf7uojoyRBaM8yRzpi5khxHi0szNxn87stB6EwI+ZNtN4zCr63os6cG7OzHJoWAnStTZwu1U+2vETX1ZrfYrdVo42iXD6cV7KFJi7CKeJ4ixsDDhufjc+/ugWLejroFiFlhNLwkSyUEGO11qLz1GeWvLInLRv0S2EIY5F0QShBqnQ9qeEOKxyWW9swP+IsHR2vkcBzfTrMxsoLhd2zNl8VvTJWhFr4NLkZ+qzNMZt+rM5qYhcMJrOgjvWPsdwl3ZvlFj8+9WWHPJyKb3rU4aHI/z4BGSwnU6ZmrvJN04dsMG0e8TXQqfhlYt8q4NI9M4WlLLOoukyfRFuYOS8I0WwS7MPvqwCwHjr7D1o5FxhnbgfIFUIZDZIos2dG1fLXa8SzgJYrHbZDQZe9Sg32RphTzyt6qmCt4RG4vV4EccEvZz7hsca+pIvHOMtj+lPjzZcYjkjmDGzfoZgTNwmrY+uNYWRkFzSoNpcv3wjZr8sHxmoTjXsJo5bSD9q+kN/Tat+UU3OUsAKN343wSY7BmfSt/ZvisqTtH8J9yLBRh9drcfwEI2TbiXs0w57iXH0GTGGUWjlFi1LyBkNPDIRrEtzvtEE2j+cFTF/Ey+rBoyVj6YEjb76r/E253mJD1zHFvYs/9edfM2U2SLY079o+tdespGW3UTiUGUxd2kuJNDtG+8vRbUpOPWCUZiFTSzGC5bE/5iV8NnmmUNsBZeAHc7kYc14Ll+aSwNTfZJ3UiczkcXX/DGeUdBE2ksoj4xZqyJA6VCC1bQRsvnLCJd50qb16LrCGgGrOisZBkVApf5bbAj0n2ArnTmQZ//XYbmvwdw1RW3wiRBbXkza/pX2CkQlpks4r2lTeK2cXrSja15LHM6z+rMOx1XZ06MFKBRA9NHMS8A163qTqKhlad4bf2+uBG1RtFUR19RBmhdPPqXWzzv0mvUz21OpWtO+eo05JMVrvv1B1a1R/BYdizCwCgb6rMY76Tk9aEcWR5ON8afs0ky65ArC4hhNK1ibbWaNhd6vSLYU0Wz/LFwmZl1RIpxCfd9BgbzLCv5IGwHAJqbC0Z5umwvER5HMcG6hzxQ4sxRuErM0XktDET5ObPeHJrO7IP0Zjc1IVluYjaFZXULVhWWU/jPwZCKymdRkisq9dZ0FMPdJMLzbh+RisrC5qdBMHal8xQ8KHjgVzo2UAViFpyMR85P+r3UwXyFCZs96G5xHJPJWWzwu4yCT0ScO+CzLMNpfKJfYkdWt3H5gnHey9oAIyrHpjrybHa0QrLE9rWPWZ25UT9NGhBI3U6+dEIys1qyj1Lw+f2DUW9oIiPP/4cnd81a51vQ0ntbvTRW6+6042Bx5PD+gbkMyJWEXkCWH+7PDURYch5IOWUp9jRCBhP3azWTYVK0gZIHsFpBm/i7LkfPa20YE9cCsza7nrLqBvJ43ux780dTRGwh3KRdgLmOjJ7ESNCIhXvTTxBiSeyNbEJSTVeBgItUt4JdhM9pFpQMCjGl/3PaujrfKyKZbDL97aAI9XuzjGALAHYiks51BoKM46ulg8Mfw5rc0uPBAkgwn2l/5KRplqji7MG+IbWAZn4y0sMFh4Uf5ZQ2Cxs3qss3sVpO6KeamWmdXfDi5fMhrowkKB2FC4zAnWmFa2fS4B0MukF6U3RE+VzQwysbzKLg82NxE58UmAK0k641e83v+cPtG3Ogo3wJHr5CsmIGeZU/DsRYKwKta89SvS5NIrWN+cD/UxQUQb1EkmOLTUu6TW3VXMafBdAqxW9opAofm6IKtFCMDwfZgDneW9vnUL72nqh1gI2c2i7yTjls2tpZOa16emd/De+biWRMDfmLKLCAlJt8/Kdjo0pJXmIN8ceGdko/nAf+p1m6b1G9NPGCRCwN4cO50zOFludC1RBPMgoltOOJleH4u9wbR8Y3fsBkPfPFuGr99nMluDPQQdjW2OeCXX1c63amWdT9BleYK1bYrVsD0RSebBTSfKzIAKH8a1Vc2WH3dx3PsPQLG6MNlPhFlmY1bZdYXXtS54OcFOZkRLTxHvBGKMvq0QsV2my1i428VSS2Z870ccB16gZ0tFoTk1P1mn5cdThuj03Sg2bf/J0rrGxk9qF1E5fFzgsIyVp5LwCotRJatGnhnZMNbraUt8cHR5EA0VulFbLJHG3gjx6uRMjD6njZbSGM5cRNwTe72HW8nvVdIgnYRATdP2yAQzwRoYH1yyFyeNh6+t8w57uqYU2TvZDlzDKlFjkuSfjsXLAoWNasfjhenrfBoUZCIiJlvkly8BMF/doFkLOJCHZvSLV3m1EDEGQdFYN6iWH3ijc6yLA9jlvokL2bL321AKuQ4jKBRqWI0+76gj9tl5ChjXSGdB63qsns6Mp2RH5LU3AY2d3rH78eC0lensPQivjsczuanmZM5ClT0be5xm73NSZ7tuzsOGYbUzSTjnRxb1pLmiGWeaQnBamRwPQtkUIdKIRavBI913rN+3AQkAX0WEmEMdOYQeoGJgZYw2Md+Z4sizItleL39Q5TtKnmW/+ym8oeVV1yb76oM/xmMPM+oAdJKzFVbzZL48JvZg0zgRJx1Ed7pL9ntpvVM+YpYGcJkKasMCYjGAQA7Vhghn2PtZjnMv2F5yEmrVhtYpixH9hDdZxJ2/d/MWdv1i44bUjrFmbvcvGQduqPDd6l3ttBJzuA3vwZDq3fvpfaMBG28zfDx4Wot0EXYYdD1LWlSwvJ9hGq31n6fVdBbW8n/P/pStssQukjtNwb2PgDMVWs472emH458oRpfhgu96d47RvPqCmD1/Zkf/WK+m1HSY27VMLYyhNRLedZoflGVx6zUNLKGofreS8X8iygHpLityEOandJpafWJMeAGLjMPNuFz3Eyvr/S3lzoKFSuVONfDGqORQJO7PG9idZNxwSYwqxc7uyQMEOYsQLGqKCjm/tEIIh54j5jgLOHECxgMZXBNXKZEOtvgmHvfIf6SvF3ni7/ZyJP+9jU0p7qbKLHNr17Ty/pJHvU0uSUSKwSbkZSi1pzsdb9JvsbXXPGUn0MD6uKXbxQZlnXYnpeeKF6esV4+oIVtgwAEU2r0FRlNMDGhRcS93gtbG5CCFF6ezOKVhIK1lXmzVkFD6QpC4IhZIky+UbHUUZhZnodJkZkpU10VapmDvj+5NDJBepenwqy7jyST7F7vjGhsWePJ9cYS+LvvBlkvXVydCrSWQ5xhSsp2TYk7VUkpUz9cntMpLhGBeUseXlD0uAMZfNjOIFlZTDfbvBYNKN7MkliJG/uPP5mdTj0GJZ068Q6+ucvSmOTFEOcUlK0N9/yLLE+KtkBPP1k46uSPs6qHSrwhtJWNmkEc8K1e+9aQ9Kud9RLgTGN6CLbJ/Y4iSNiL9MbxLXxc6EFUC7ZrkYiGNy5FblKFHJrCC63ZQ9ayQ0YZCMet25rk3ENr/ExLgU7PNJSeU29Z3AXVkPEQF3AjOBhKn9J1SfcaJljbeD0tNaUpol1YUE/NmGZqAMDpZKNtfCUb/RLJb7IZNeQueXS88ockYKY4aYLz40OmdDec/hhcwvuGDx8lKpcDHMv+nQe1kA6rjLP02Q6ynfOaeQPQBntlL4sWHazHu+o5C1/VEjgLtSg/7/OaIUT3X6WZzEj8cGCD9eGJk6HSNBYcNNdUWzjjVFlgNQwUOmi2CAr2t0+KufD01ji1lVfNT2hRTPIm2iWrOR+75Et+TWeHYgWWU51KtrFfKtkjZI8g0Q6dSLI84Y1F9pIFA1Q0k+mMNww/krczW5arzM4svj5starbOmsU+Zkiy9WBRCLKM2ZTfloa6p0jJswYy/RAI7bCtqkRuh7aPOmHJJqM4pYNV8eG6zJ7DgiP2xL6jWAiz58ISx3TraOwTvFyQDtL28+8kg+lgstI97tzc+0BL4tXjQfaK0hB4mv8DMZZc7ZnzhT/1YXGkslQQBPNDP4hexkofw4jstUQGG0TVHTjEfTlHrb917shalDaaOWjbS5d5rOzFfBinCgIRhrYKtCZSmMnMxNrLKThhxo1p/aI1hzT+IJiumvuVgqRUYWacLd+i7bc0oYdcOCUVDMde/OGRnLRicFZyrx78Gd9Q+C2st8Zhp3MRk4kjLhHht3nXfNsUpLs3EEEjzV6OXvWEAQf4yys6GRKCOSjM9HpZgz+Jxhlb5S1JWHBzLOAVyv1s+77nsFKeArkvm/mdCxdfEF+MlumymDDVnjVJwa3ZkgdUhBDRHH3uRV8I2ro9CNNWp6VHe5sarePjY6D7y4eG0vrAp2nKVwqabUuiUqGtjUiN+u1t37eYe602MGmoMsvyTND0LdK4LznoG9Nss0OrWsv6lZY5SqPONzC/AWnn11aC72DstNxkFzenloMvxLzpJLz0f21ksvKBkOY351qPqsu6Bfqw3kLmegyGkG9L0vJ6/bLO4ES/7WFTpz8MdexKzLZeurN6y1Was0Mwq+vutRhQYu734sZFER/9lp4SqrhRtewYL6M0dgQmM0Aqt7u0O2x9qmHsH+W9IUls5Vm6KNzaHwLtaWeZs5fNoFvWTK7satSXaM77bohUIPSYBmUHiNW+gqbWmTvUcpebpLSCXZ+AagyIRkubSGM5RTDxiGIyLSrTkjkq3vDSr0DpaCRClV5qvsIpSEcic2L28HHE+JmiXQIl7628qFRH+YqjnphbV3LoAuMH+WEHbS/loA4Ln5b6X1Aa+QxswMxFEAJRtbQZ9Bv233TOOgV5R003ayoyylhsCLQn4W65Od/FtYcpcleAbcSoQM335UGV7TGmBgc4mTIvPAwvt5E31DhGaXdZgnuP3XLt7/KDG+a0OQ+ktinVzRxmZU9HTORlSzJ/hnLwKVaKnD23GBFtWahp5QtyNZont5FJemQhf7mtsoV0b8tNnbGykS8UxYqB3F7m5/0elGjJCpA2ET303YYEgy1AmjUzQqJXb7xbI5gytxgm+gotwJd5lwmNYOEKRB+R7SzRKYKjy3A6vHDiy2HP4u+lgmqN9YkVo8rXZZtrUbBeCmNO3qfHjga+NO/GW4W9Pws57nijw8l5/sjD1grNIrv7ossJQBx03JJ1iCVNO8ZlskKt6n9jE0YWW/VS2GxfCqbR3QMpjJnA22XwHyf0sh+SZ4KjOti8zEn5qpMJuGtDfQdplFbIo8aEx8UDBcIjbFpU/nRxrFN5CU1aT4U8D8tvQNPEYqpc6epezZFCZq4vUWHmgW1Ktl268jJAWyg1XobgRstPaV2zXFufQgxPoYWdzUz6bVM8IthUyxsh4I7N4EuhOwwEHksXyDo7vvcbiebcLCU5pg/RD76nn8c/Jjf7Ae+sA/X6K4Nt1doRhQbATIcNcyWXYs2swluFp8hoenPcodCGASNxyFjpjEmeS2YpuXrS6LGAxF/8kwRV+vw7yazILHFljAMxoRmtnXXFqDGT7lZirHJRhoV80hsV3NTVfxAb9EgYclE0FrnUFTq6F/UU+iUSfkzBU45HTzh+Bf7cjzvmR3bG6uJspXWekgnl1rUQ19KbIMTr05yRzK39lneyqgVExdFVhpkzBeaS/QvWiVmc1jZlUGtPZVir4omp6qWjOEeSd8uCOQGQoLykDx8jqldMCyUXr7JNuyYSMKcs2pPPaXeWHUrxUk678aClJE5OdRsM2yZXnsviBNZdkCmwxthQtJ4bYAM07hl5TUbwZU/KeiFzaKTtG/g/CuuefszruFWFzubRiq9APWfQSL0AE/K0I/57jy9EScScuWqngwTaAWCtjJCsq2O2jOaU/cIZGDJHRiXj/SyVvbOQcY8JP/nDxaZYE3xCmUUiUGW7ekm2yThxJmbmP+98fmObcvW0VsAMyNoie0m6hkh4/XtspKwbplB4tpHxjYPYMfth6K1sYGV1y3GjL7IjenQex7hHwTs4rR1K4wx4RrdICH4+rSonakbrejrmGVKEDrkRcZVW7HfTEeTVczrQWcNNeqGLmjDkJsSlKVcVPMtMEWLX4w0oZykMmTqJQN5buQW7P4hUHMqrwEzAi6fuCxdHapj6L0RSkcg9CTG+Vk5w8SR1KX47ghdgPkr2LKq9j2+yiDo1o9lFFjgHPWieMr0/2aul90LGD3fKwJvfvU+5EyKjnTBsSo1TpRvSPmLHGoVqIWTRnINzjc/UOKa5G1pV+owU+tvpVHUA8ac91MqOF5TWZuTFovMMVVoS7C2OVE6DGU8fSoUYpOCOeOhR7O9NjQnVE9ZP7N6iJoNynXepzB1zendRs+kp+hiwC7lx3QznrUjNlbOGggprmhcixQLadsclD5Yas+Y5T9Z36caWQcb62msTLkzjj/P4H5xACX6eREXeDesXs0wG4qQNY+RAJg9KOi2YIGsU12MajO2wjPVhqHwwT0Z0sSUg6MHgjg5jBaIDmHPfNmpRbzc9hKb5wqXY5Y9dl/pjWs9NmtVwpYUk9z5rdxW2teP3qlj2NVZ9CKOCmUp3MsBhUsPRNG2CswaGjZDRTJnagN85ENtD6rGRq/Nt8Qv50trqvs8yrmBWtMpcSz537Rn6e0WuG/OI1cKYct1u/b8VKVTZIvzV8ep7PJdcWTX1nm+4xHBRnvM4obUkNEMc/Fxg8vL0SDEuGk7CPywc5bsyw8Dk0uPKToCL8nTu/2Qng7n8cuvlaaLMaM5mwMjZ2S2W14q7mZNY7etctfV+eBE1jmH/0DgGJudTeDASzHw9U69GDjY+16zKtho3c2rEZ5YdnV+THQ1uxg7J24/GYo9Q4FwSQqJ5e7PWlqA8n0fea9CzWFungtK006vm0LFmS99OBBsQnwDBbZXMNJpM8jQYWjsG0u6axR8rCpBZfI/wUmQNTMYoajanu0wdb2JtajNDykfY9XuJTijJipi5azaeloSsnd6BcrWSfgM/Qzr6dTsMrFxjg4EdgQkIXsauQLnhpYis8eBrz2NiWnsrTCzhpTTPbJfK/NoQ6nxKdAmb09ZhEat4O42Xgkz5s2ygjLLGZf31AJaIKjfHmvWtEIpQswJ5gX0YKlMh6nDWMoQ9bU23by+Nt8JqhcuRMbuIzAr6UrLuzxQInRP4ZcNI9Zacwc6ElpbPXoLhgYsM2ZMIdJqeyGtFhRjrrRZkYOtzxi6cqwh2DgfMNHIFAdi62GO+YzPmo/20lUHFBcUxZWK/AYjkSYy3WlyHi/M2Z43ITFumP0FOWFwyMgZv6TZbGUZ3R6VbjZN/oGtutA5pu7PQwSF3LCnTu5lU2BlpATMml4EBdDy5stMoH2tgPWLQn3j8T4uDl9Vc2uXV3JNo3zDwYRSZzd4sUmcxjukefLhVJttvO33p52NmYbfm0p4uAzgjndgm+KHi5InsY3u18TB1ztlL1IXk+VyrXaqc9aFKMKXLmdp+LTbc6vfdIKOlaXVHCXcoNw5FgBIiQVqbDMdsGotCNTm96w4piUiF2P4GBUdFwR/j/VNlgXJLAtqJEyJpmfJzZePiftwboYM+stxmNfrV32lHEOpDrX8jqQZ/wLG1GRIYIGXEHxtejYDGsibmqtHKTIHcQcVxS1OCr2HuMfVI/Hb9coC+Q0tHepWjkqGtq2BsNwZi4LDUPojA1Gr5/XNdjR21gmjock6L3TrAp8OZ+WgTcDetxj3apJLvt0t2KUi3UeS4Gw6lZ1P03oejVHKJllZ1yp2bstc/3Jkyg2J5mYKx8z7mh908pEjtTYTqhc2Hx7p+T+GhYkbK40Yz60KTL+wN79Fnf0xUhpjrQdI46kc6dOfDAraxSY8JcClaN0LFmlW/Bmhow/ziOGJH9nsJugzIe1s9EJoNkXqtCNaA4rJ6pQe9IXYbEr0EIuN93OV4cVl3bTp2CSeWuIWA6tYX2qJO2ZVLNfXmPubaTpimc1J/p1rid52bI/SV+ewFIUKg651W9W0YbRjpqfw2FKawUCSjmxw/EAphIHwN3lqsMXpR1K/CpIfc3W6p5jzjjIBu09CmpjSgzhCEc7tzupc8E4LIXVgBxlEZ80275z2dfoSVgA0uCEb9sNzuBaXEMpUCMyNA5+o89rOPiU7mdpnB05H62K9Mnl54nC5JXIuVqiocdNxIWAvHVAESr2wD8569MgjGI8XcMevCop5NnTiSPsJr7otsppmUzRdF/JtgXG7/7c9djWJz3XHDp8eBOSTzPR5WimNbakOcimfOq7cycRq291a85k3tGr25vbA+emc3UJ2G6m0YSeBiva1FlFb0NgokXSWLZeqfflfjqkxz2Gi+MWWZEhMx2Du6zzKL5bz1lAOeFLHs4Y7Ioop5cT03rOOJ3MB5rSd2xw5vyy/+MQcDWtofl7z7DZc0y75GVbE6ombF3VEYU281gp+L1ffq5jSYyWEXQm9EWGJlE0D5iLB0fmnK/95BOqqElGRrz1xXT7UDLBxmkwTCoFud/S15bLc8Pa5Vk4wQ1kS9y5dptFiNg6AVA/rLqyZz2w4BZcjwuaQdVVOqB4sg0Fpicx6K9T/CSMZJ6KjqakiDyU+QdU8EMQd8vjGHentROxJ1fOD9saIOeaaXT0qkh+CrCM1gh03Pw7HBzkXJO2Yt9mqEnXYHYwL12xWRizATOs4RKHSFn+9PaRzYCwnNuZhOXeUm7MOcG5+/UXmiLdyRlEEYNzppVXDeAJpDiMDVHKnMcPB9jnEQrmN/wc2ny7DgSheQy7geumRz9JZoysSiWt/YyAoaGhxwn64aKILmBcyskOk4Tyfaa9QM6lhFFvK56cAnLTHn9MTDVahlXazhUDPmx4XH4NSsmKbfKDXuggP2e4D+COXF2wDYnOXaQs3N5mkdikOX3Xd7ZuZHJVh45pTSOBv4PC8habJPXLERQc9sOh4zEjYZz5K7ll73ypWFh3NCjYfw6Kg5o+lDdqZE9Y4zBg18z81arItdfawArH+tqKcvvQ7IHKJUBUydV5lkK9yGS6qITE+ZxvfaMOtPSwN3l7sSZWJ5D3GonrqhN2fmWwzITORdYhw5YtPLfnoycNVRFMYZIkuu4K1d3ToYLALmzIDXV6a2CzvTahYSg8FGQSwzSQ9LOYZY4eysnaFWEvqpivlJBTGb9s+kBum0grDrgLymDoF5TJxejvff5IfL6yrV5XnNpU+VD9H2sS2cPMXqYbz23Gvl9ffriN/x80kAe8gFGX3DPDCY7507wUaWcNk6sU9AudhzKwMfm9UlcdpIQDcksZs5wU1rOLzdIu3TUj6BWvkxRhFdozUPOVdDEVLuHAqZeH43ze7ZSLTYQkWk/IGnqXXycPFc0ojpOstvTvxZUaTWgBh2rfQpScfK4rItB0mW226I0WHGonMqxG7cslLFVYXAjxtiwoS3Y16MXehQbbfGft3qPgMUFwSGbmZ/OdwTgOF38Lm7Ui5Vhti/bwJqO/RCAYjJ9JI290XXu4YPC09flWv82iuB+DKm5tvg2ty60f0Erme/rV9AQrsyFlYUzKq9hNJix9+eQA0QGnEA8p6hwjAuDzj58LnWYVwN5jGVX42kVsYMp3Eb5syS/WX3SrRcoA/QzRnrecBIGkwdQb1qMJNUApb/TmM61yIjhZg6+1PP5dONevmxiXGCGTLNNVV5C0CoqRD2C5kunu/ToI4Ub9axmk/ApCafRtPqIhacjxGluMPDq1l2xPe9nnlsp8xeb3AeEZTfScFYX8L6sl0LIziOZ+SPrYn4dicfWonY4lBf5eNFlJkXcTjWzP/evkfmWL/qZ/ptz7OmMdOG5o1A14/6rQMqUOcVjSNPvLI1bBZTgiIbJRl9aBSSABLxW5O+TmrBVM82uBifEzkMU4YKnbagdTG42iBAHAXEmRLuPWS+GM/pi3r2dKZMZjjbOHFdSixv2wJFhb8AsOr24GSgervRZMBXLQ5RvjGVcTeYaTDbRwYbvF963hRR0q8sQdRLCnkGdMw6hAT7FoOms53+0WVkNYPp/s3YbPpIgtwz5CqCdpOHYrfm1pk/UemG0ANF5Z6WvBp+bQZxVyWalsab5/cQ02xsiC2NyUkVs70W1YCmfvuG5IZoYPVy9n2EOjEoJsxcLAw7JwCoLag2MvK2pph0XCG3E80NhfVDD/Rs/CP5eZKHLZIJqlE5i7sd+LVgHlVTpnBxBckB2VrEvqR6yyNzruYwE9Fpr2bR+xZJY8MYmYz3aRRdSuObp7ymLPqWb6g9CuicX2L1HP49KgGZNE9Etlc/0Oy5i4LCAOPmAi0UWd5MZqGylCVEprT7d1oQW3U5z5zmc6qmg6jJkjmpAKwlFkbtvR21d7ew3rQa1W36JUTdtRDNk8M+Ss8Oo+5u5d4WJRQXUTKa3Jyo1oo+8W/68Hs/+pT0p3pDol+s8PmzkPaeJnJDIjDZ9hTUmWblCnzujtMNAc5r6ke8O2aHNr2gzUNiQ4C4MVauIPCqIBkoVMvPlm2cKPJPgM7JGYgMwwFowAyW46VE7EFTpSh3VpaeZNZjuOGjbjeq7C15kXY3kASe040535U+XxDn5yxyFJQhLbbAyX4h3PTrCGMhgGM1rNtOuSAord4KoskfJf402Inuz900WGLuMTCWLwvJIQSJdPK+aR2L0VWOtMl/piaHLSdaaT9dN+euTRKkfLJ3ybpPjzQa6m/7AKVoUhxbTZQLSmYJX+3WgkZMcqeAaHwKtEuuKirV8caAJ7toRLN2UmsZ8su+QrCw8ynoPSyKWQ4K9t2bzB13g51XyHhu+XvFkge6eKpWnvXDjDeDHC74ZrV92eWXjv9BVh3acn70UsVI2MazFyRT2FwYhm2u9szz96+mzaC5nyM7O2QWjyeAn4ENuHhqjgoz4eILwkPbnpsqvODlTQ8ZvdvIbFEw0cdEWa7vPUhlCj1sh5LFSOyZN/SyXiXZi3eimEH0WRxFBDJk2VulzwJGpAsQKhnfnadZrxBwg5qSBNS/GmZnahqa8B1wHYF3cJYJWCTJvlrKrSzDnh1zyBF7nwwNwaggPPVnqBz0YGcnDAudv8rXt5ZLeKt8ZV7yi0tvn+zWWktxtkS2G8U4QecQaw64F44syQFxjIke+fw+V8hr1h8ME+MXUqnRYNkpse7NrTIu2w2jTTJdZcvaflSx8ZblYVbWDpgxs2jbb8BCbj2Bi/MEkU383Kmm9s1FhF6kAgLuiuFyS7pD+zQYuJuUk2HkhWQavn8nZAAmBfctaeq6zLg5qrKK98B5ztIu5njL1JUmo/1/vGsp9WloBVpPMXr6+dk9OEm/Pf3jKwp/eYmXdSmeuRbEswfSTPfBlH8MpJB5vCpUaer8q+4aBRy5A2nC0taRhUsJim5WbNcI+Scnc45o87Rt7Fs0KRb2VEdNvxuSBPSoGD9zx45hwddnLrwpLKDIirTyppXJ7f9BuMCpJyjIht2hOgskmnBaCuKqYZBOCs3FClEnExqqr3wAFjYSL/GKztRlBqOqKbUXLstvnmV4TcWRRBwyFNGXUdN4ZcT3cDlicbTYMGEHyLaJqj0q3UZm6KBzm8B1aEBk4kuV1gUcNwdapFsKZZrvNU/5QpaKnFGw8L5/+AMTOz2pTfTvFbQAM/85IVddJCc5exSaWbfdTzW4Xy/bxZjBMzL5Uytoqm44FH7uXcksjyVD8SS72f4rSpbtCww9OXWBMTB2bs9JoDgMuXd3Sx7dayhd57RXBcknwa8Yh+CovmVfwmuhaZ0xkSYR1DwGmfMvdtthsH2kWbJG0BkOLu0h3nhgfXCzqkbiHy6lHvdjxuHj2sx4jsLPlagqnfQurfDzyCWsb99ZZi2ssY+fl1MqXpufyU7ODWHXe1hv12fkUrgTbtaTWLDYOka/KBda39d+pOUrdPg6WjaMKTZsQNqVe+SzLb+pUfMjE6L9s1qB7NXHCgYhfIUw4WetLMBRXS2O7shFxYjF1WsXpek1rBTsd/y231aQDySvpIpzKtZuUONgQ690z+CRbKI1dhtwGgczoi48tym0v7RMFtYFwaFFF4sd/GFVAnVrsk3SLNo6K1+WmW0LBTYWXJw6WGULd8RBuj9VehhUsPZbrEESpB6nNC85qeN60iYbog9RSBfBQ8XyXQXVT+bMN8nNSVl8nCdn1IyG4WWeNFrmv19N+uvobyhqmD2161ehE4qXum1/VdMHDZNT7Wwq8hqcZPK3CF6Q4srWxOP7D/xqn3O9Dm7at6YVfACGVgaSrxj97HhsCkZiV07LRVViInaEdisrPZrhwyktjWV00RVsx9U58ohUGlduV72eqlgwTgBGC6HT5Rj2fzQSDTfNcBBCh/NDOvk8LUKa0QysLgOMvREbvHCoHnmiUibXa27fDk2RuiItMlLkcw+udHbTEaVJJyN1ZXJyzY6CHCug2Z0FLA8bzDNyiW/Fok52QoNJ0VHCDKK76KIKyDuur7Rk665Ic6sFw/9TO5TT+M8l4Zo8rSpgh0l2gQwF2hwZTKT34VB+ImAWXOsK6doTIs+6hKUjKs+hf73wM5IPysZxvV8vRMq22y04Z5fDQ6xqsIrCuoz8sh9ojwDynFGn9G4JiNfTqnoiCtV9OuACsFtuaqJqk6OZTaN+wGIigqRZ3Ra3ogN1BpW40LKWIV7sIQP6bhdEuOg7rVyXrY/LadZQLSwfmCvtG4FZrdJsBY8PLFY5K0DbhuoR7SaM5MyMEK2mckhOPjKxLlKF0bN096woCxTVrX+y4SYbQqSWlwvS7ZWUwE00jZ2MzJnFdWHObfmfr0atq719efuURDZoFlWsOX+bPGD7TRuI0yfQcNIOHd76hzkD5b/XaNZpzsv3DFgx10HGz/NQtevdfJwkZVaN4sJlejHm+ZIfSq4aPosmD2fATew/gz7UPuWnwCrTaMvvephgPQPpVpdpNo2BKxZVZOjlAxRHZJj9NdGQoDG99vjHxSroLWN2GWc4S5gxR1hNPVr6iCsR2oZI2qFSKq2IKEWuTV0WJpQrMRfufIrdpPWjurRN6TL41M+6PGbm0rCwj5R8C+GeW4qyt0kuoyJ/BIb9QFtqzfIsSZA79jnGwEY/fuTWdLHopNNzY56c7LQkYV+m2O24/t8KAOuPLZ4+fO7VpbrK80ebmg8wvO5g+HRlkEHi8z0Z/e0i9GSPfUA1aGJyGnxJIK4Wlq7ouKSad0c9tuYw7akUZQ+ypFGJYcklGN3wyPUlRWTioE5QDi+pdIdMEOvy42rFaE2SoAx0MA+QCSl2KyHo2MMH+ZT2rcO+le8y15H59taame/zBqOjiCrs5gQXLWG2/N7NIFeyh0dqY/fC9E2UZM3S2ieQ0afbRtdtxGkwvctRRe01ykawIz1p6lXbAZcjgWykEkra9woOBMnBjpVPkxQalXxNvSxPS4uDurJB0Ucbgq08vBO8rB/HlOYvqJErm1qnp6PE7lZkG81KYYt2cwUeIHrRApZX7WDVYUz9b9+7kbUGKVzJzd+5M3Nb3u7cpe1keAfV3ZkZQiyOmCJTBpRjebS7bZ3Fy+sZ1PIkVltNFPwrEkHthx5v9TPUYW9HUYUHwAjXelbhsTFRc8v1Jh75sLxXO5pC1axRFKOnvrzFj7wewl/cfBhel341ZsFscPemA08fhnotL6gHeO0jy2cpTVA5hbKJdbreAcJQl9oS/ysdjA2s7pGy9DLJN8HG1EffNPYqa9qN/8+8v7M+eqyD3wwb0lju7mVazV9erTnLDUH9hClS8wvXBDVl6YzWoGh1tHjpLtsITSU6cx6fFe/Nw3G0+fa+MTGMrifbuzC/kOWVY1H+i1EP8Lk5ALUCW0xAppgUZCMVygzIrXaSRFrNIUcifVqnpHTKPaBZCo5PVrzSwsXZh18Tr2KuMg6vg77NVMHcL4kURgwHOiSbTPWU7qIOiVW6WS/LYgS3cI9wYUzs4kmWnDQBydz4MOilpxLAm++GYmUhmJGzy8HNtM4Bm4mCwznjGYtenpbv8Lc+q6TW0JXDqLQMZOTK+Ha90E7OfGOwqqJFjlNaAWpjc4HhcADI8HbUF9+V+jgXW+tsrawLHG+EtWna4Ii0gOhJsICYVpqiMGW7mLJWFeNj0sPZ41SLEutQdU+4fBS3LSYeVKl9BFgHDWVlp90M9qwyD2FGnyAiVkVBLILhngeyYixoeM7V4XTowKil/nth86CMA/MFQXfzbSa4rsem6zP9fLCasLXQLqg6LxMOul3VmJv83RhfoHB8X8BRP8z8FSRAuXEn8r8gzalEvN6UQOxJdPJ1fydLxsB7XKIegir0rl9aj5RxLYXD3BhaAoXiWi9LPX6hVfDYhnS10BbZz8cCfmFITeeWWSHXxP6W4SYhGwULcrucYc3NkbZntS2+42oua/i7Ivmy4e80prOPlTUkEZyowjgUPgtCsxfHvIE1mdvWcd6fOy9UOO1bBretSYo2J5ZJseyW4Jiqt4ajDxI4H3sSlP+aOizHIZ63MO0UkuS6A6n8Qv/OVDbTvdHRYSEgxdpCuuhq1HUFS7PjiRw5va4qs+hgRNZ0CFJ0UmRVFLaQZqOKPkBWvgcu6JyFY3o0RIUtKv4GJtFtpbU+Nosarc3xrEFvjm9G7uEgktrlbWCGn4YMN8o7/04uCeSn1M7qdZyjMWfeXWBDmJyIploLxzSXJPdTCdOXXIv1Xlmc1HYOVITdsoVnVOhimyw8eul8vzZgBVlXWisWx8CzhxYTzOpdonhw08FhxDkK2ZqzS6eXbaQw56ALtpzm0rHWSeYSSz4Ey3xyA5uFHAl3qW5yOb3rVwc2PWkvTd2ftDipEi4pEMM+6RqjXeumXB03NpnZcclZzAirb0T+H0dEE3KTvtxyDsvgoXWWSNjGma05SurMHZfxeUa1c57kmTqd663yv6ZSqt1o/EqYcvvpgOLch7gb4oUCbnwsr9aodEll4fID2kRDTVMQgmTEbP6iUBUrw54dIz8xlpaiiRJaFIuOal+59Aba/sMvqJdDtLJVk8rsH26DBTdvWvaYNkz7geDvpm+wfJMztx4O3/k2ejXaZKGXIGeojg2B+G+gtRWJh6U6kmfn3UWplAz46G6+oHRODteT0vHoIYqxIGVIKuy8Zq02Pj4AQ9qSGIw7NNUTx0sqkaCJtgNWX09FpJtol0XznymSB5JEYM+yjtWe1kkU1KcC9Fd+M6OKcN9Jzw61PTVXeN0MxkmeXqyzJ7k28A/BkVnDLThzjLMAn54skfBe2wqlOgHLP5AWVmj/ZezziohpgGvK1JE0es6tp8TrKKTrYUNLGXBjdA8Jrxwtd+uz8q/gW/qDraxflrFhFZ2r09qHGJ1biuGmM0zBhbOK/pmg0tUch5ZrT7SXP7Nz26XBCSvlZA8rk5gsrxeNolgsNgJ3NjTlBrP/RMUnsncBtxqEXGrTrQnOWq7MnjKOZF8PdzBnaRzv2Z8TjAnZFQ9FHnoefTMZkNaD1n207jE8htf/2Ifap4rzNxjCbahkXCkMbZYK4rrXmrYLQUnuVxzjCnIYq4Ap50dI9BlbvXGBWu6iN5+LLQInTi1W16paEIyO8GrMAgUUZXV0xf4BZd8YmWnIh7XjlBIUulafiAFODATfvREs2O7aaIIz6U+Z/jXFQdc6LU6YHXMg7xjhzZi8YSqL0Ho7Rs7SOeLHLr9gII1ldpDTDFtxi/tH9mvpHSxloBa0oY6bNsv2Bh6IIyF7dQM79mjeCsdmlwGyWY41gr9+6h9DcR5dIvRrSF6pNxVOUobHk+mVDPbkVvz8hU68CTGY/hgDNo0moJCcoB24DDu+VBrT6XG6l8QGGgHLQzft7Sw/zHfgzxxlKaCz6/ieUMrDrlaNRdOhrvP+piEwNms6w90jbWXCPT0PuDDxE2EV7sMHhTVDKb+nms16ullxMg+WcZHGT7l96w4G4k7NbYeZeHIFgd90OLu5qm9B/abs9Z1merDwRwH2vT0Q6V8XRjvpoqOkHEugNISZYBnPKRWRUM5elgSjoYVegnATVm7DwvHljnMZsp2lcpKBk4jNVbqV5147uBOQy8FqmbX2HF+e1ckOwxwjuDgJ5JuuamY8zy54pTViNnVy2mfqJILWaWfro+XFY/CwG1oXfKgOe0JvFURQF7POfmYL0peu6hcwW5p8vWtHl7/TTk28ntUEBf7Fx9yZqxtlW5ESbfLOgyItXW7plNj/m4bEvv5VHi2xmFB1CrB2ayw8WzoFKzenr1sS50ZR/fZu1pW/RXMnVbiCRRaovTTcexjPICb5b14YhSB/EHvgyi3cJV+vdy62BbgmtwZbhzVnpIOzSCmd6jcPjtSFPcu4oYdlf+FZtI4hqcUyEnHPqiKDhZoLFdWRycqV+VWldrHx0jsig+mfQ0Wu69n1Sg2m8TbAUMQ9Mo/psxM4TGRlDLZ+kb30MHbLVMw8ldmLaHnthQ2ZYULbjTtpIy7dlQXBKMYN5eN99rSfPyov5gynULR6Ni1wnO0DfWt2viKy5nmTj0u52J7UiqCY9IriEVtn087Rx9IqAFjCQ2utqZT13s+LdHO7pizUyRFoDIyjupBrPLrui8+VQKZC90pCpJiUvI+q+D13c4/r1hUhPYrQo4Z5p32K5OEyGY5FkLFxgakD1UEmD4s0gBHgPLw5hN4I9qVF1k1elT8AySKfge0cjqr0NegmcTLS8xp+q3oEHNJtLflWeUJgSbM8or2EXcL3/O8nc8tBU6+JrNpQuMFYWtfDcE+u6jKw84s9SYGhOgk9cntaEN7boXlMTVerevQ/YRQwzvx5it0EpxeAwsWPp7LSMFbs0csyVbkHSY5dvgIIXq1nMS/WCqLDAbv1E2Uqm13zr+lh4TUmqQLnzZnblGsIH5otHP97pqDLxobrr1jrmw9c0s+n2G38QGdk9nApz0I5FRlpEOFG7dQN/Y6qMvOkzvNQ02no23LapW2co70npKgvvL4YusBge7c7ch3vyy2B/rlgsd6FnXdc7Re13WULZF3NOrW3o3QiYeNTKBKFm/L8jWcySs55RIHMWBV0Mds/aqE8pTfgZbWsn61vMNfBkzclLmaeTNxe48UqPaONTbXxFVs3XsgbUhKG7uVHdII/uhIp9u6T2yHQWHlTZTkdBSxi15yVNfZ6GSbEhsjrfImjqtQDq46DRra2boYMuHgamyiXHu5acxVWneUwkaXFoKC9JueDaR6cm5PSr5cUMIpajvTTO3qC5zl/ZhptdemiJnNQpS8VMjFnT8hqcFcLXR1KaNVJhgZKqjOR2iM9LesbtGPh2UtZi3DSHuDcX9quSp9YVwp16TW3VIgdmlxJIej7rHTx+2X483wBf7XVmO7agMB+FGxstjzuZ/X0dYl6zi9+NU7fJmfxKJT5lqtcMhRq1zAlpgTSx1vFOXyjU6U5zCRPtHvz9h78mTGmGgdQuXsYvx0dKmJht6A6yPcsN1oUY3kjHpyt1aWOkbfKxa1E2wKWoeiv/JryPZYsW8YubAmnp9IkOXhCwAVr7lI+5qEw8SzWff9HGJtEP31L6Patq7WOqvHPfsoAygtZUrLEP6/ADZI8eP43l1rSd0zS29WMhidv76M1E7MANrnea0chBVlJM3kG7XKTCOau29G3OuMbISd7/cy7IB/pjNIuv5S0TfqiSzFmpOW9BmmXRKJN9EDWS74WDAU25RjiCyvRWxKcvYeMvUtptk+xJPRWKldZqybOvN6ASq11+QkRvzlwpjgHTShqLq2VTIzIqxx2jAI5K2vdu2EvGU81Wk6NatOwju+crY35kNL3bFAnIiK2mBLzCsVtwqFLhOLnQYlvOFPoVHTx9OqO49TRlhVV7U7B7SrcoFB5tzKlOmgnSYfG8jc6DhU/feKxj84yoUXI6tNtx6NSoY1vZU2H052MSmBaCIIp/uU6d0Z0XRAMsn+9jjSJFqRq3Kh5jk83cmmcAl5iS4o1AMHejdRvxj64n9cRCLUwVG95z6nFbCsgzVv0Cy3/rU9j/MOEb7XngYSqPJxlRwTD0mNzS6hxmhPKia76ytzgFWIsrt9koBOP26AYj9tx77jSzVnu0Px3mv+NPmW7GrQYJjqMyzlb3XN7qGIfvOURsatxwgVMUDKgm4cXbRYSoSrJhWP6s/7O7wMi9xgb5x9oFEU9vq+BEjIgpowcLkdl7eL4A6DFtbYRpiAy3uELNLlB6TttRf5lfX32HGeZNr/urtJOXluMozXqaCoTgkF959CCeuAWMGPrfUMo1GYPwh8pmAoqIsaM2Nud6gnk0gWrJ+0Apbost0QJEGLZk7r1SUAwF02DXsWco3LQdq5Ay0Aa/H1ndaYhS+IsX4fRTGnehLaAeImSqOidefQxH47/diPWh6nKistUPScj6jpTwKheyUlTrre+3iMXgNyDDFRQDPcfuwvNRgkXAjO8uq5jXyHqiHKQ7nA90EKGxprBiOcez0mV4orjxW2erPPupuk710XaMIT4dh8wc3aRfoso6xVlXDZSVAeUhJ7npIMNbpYUcCm+1sPEiqYnY0MvZZwsjHJ9SC6eWopSpxGX1l8h9m//9JZxqtiomEl8QNwOxHYEsM/vsBLvzavcjcaVsx9RiusP/Xqx6+fLW6GDN7FHKcGn0jf5HfiN7e990huBv5LzqhZwT8T2mkR3BfKcJ1LN+m82TRjmXOnOqHgLexJh5IOsJMmWz/NURT4S3k964qsfaBANMszDqLs0sZ7ptNYclVC7CaKWwOwYiHq9y1rWclHXG0eMCvRFnZwya2mbknflMcjxwDJXr8t/Q5VlTI4bnIUpyFaeHD1eaaQ3NSZkbrwEFY7MybvyIC04EKf8Cx/ea2Z1Cl5Bpyna5fa3WxGFwsK4bagHnS45sA3xc8ny1SsRe8xk0ZCRa3WvoX0q0b/OITAlprnG+Ks3aNaNw86rSIyepoaJOtpbhjjaABbhrU5pgkDNsFEboMVMm8tdBQxWn3NPNba9tnOxaSgyrRjPc2Uf7MmLHXajM9U3RmpLPNeHM2S/QJA6nMNltIyQeu55uMlqmfdcxnukIwwptr0+8GN+Le8ylXva3W4g6URNkzG/4ddRlodLRCTlozjAwliWKtk+SpyKieXRJTtUOIXzQvpef7NE3bI7cl8uFa9PzJhFuxkLqtJCJ4e2AyqyztJHL8eZeF1ZsxvjTKmlUBGzjsloRTap631bRjtjH8z6TrzCtgapWIA2rxjkC2wRH2K1fs6dei3SXmH0InKk/5L1l+dO9XO2iuLPbkZoNzGUO/PzVfTgqYsLfLvO8mhW8mXTfpcBDwJmV2pyKOmJ1jZhQU9Tx9IGR7CobO9lTcGbg3g3ePnXwzTKeGb03EOTC727uZ/xdKpJaIE9XJn+PVZR7fZR6xavGU01GfVd3CMHuxTUxmDOs0T+uYINY7alSCUXG3Ok47bjonzMwH++t1X+FMNFIJnwrxh7o4Xt422RaHM72sF+2z5ZZd98R+8xS+Leg2X1XiaoZMIepXWHUFdhuH2R4kyEyAPhE1S7gjrqrxH+YkLjsJyM03LvRkOA0br4sJ1OVR69/W0ep9nXAs6aINWnWYXYkSUdoTw+Ra4yl7gZLozW2ka+MiAFYBRSHRlV8FEj6WwHI0wXxtK4mhpHw6CNgO4MzTpHUT+wp4uAz9uSy12Ufl/J1hVOtIPdiBr6Fy/FEdVc4LRFAk+jXuWfKnMZmMrEGBAxY62en8zzg65v90KFa9HQzUtklnW41qXe1/cWE00pl5odgwiiWilSxXFZWzWbhmWex5drU+sKOWZcLMb2Sb/2riUstCTM6L4jexZtq7S42VpyKLWhGfLKPuvgQJ/GEjsDrCWfN4qaxv2rLCi4ZnK9tJHppXREe31MbImiezzzFXF46W5s6V0iEZke0W2RGHNPzOtMDyMk7ChCKFaytfftFmLLQGLGQkrNaODrtUUuorlIol5QCckwx8losVeo9rIj5EQat5tukhnKw7k202QL7hfdPYV9kDU82f4J1BAZo+D5XuH9tJLuh592M068BKnE+bHUt6jjSy0VaHAVd8NphEPC35fOLVkIk6uSwFpH3pG8EQTtzyIWWlC0X2ZNTFxJj7Tw0X67hd+G6LR9HhodZe3y1HZZSX/lleZNa+jAN0DLodqCriuFY9BmFQlDzSoXo8NJJ+Fj0Q9+rp92P0a5kkFshEMdQwWH3QPJZX/hcL9RiOTBvUonD08I5QWdSAp56LAyjnEmTHE4Bl0F4VKAwvCyc4opCToX580c58Z/fmeiya2cX45F0xUWkHQ3WlUSuzmOWBgSMCABR8mEIX+WyNcYt8MUIuhvTaS+WXEIk8W1Ft6t+LBIx7fsYvU2xVwGyejeteS4dBbHFKQOX2gdqZeCd8r3OfqZOG0Zwh0DbO0MrFcFb6oKU9b1KDLqyK49eq9r+fT7pKeysLO+ShJdEFrt5MOen3+NsVG5VnermWeMv3iEesLxgVN/k+j2nyytfna6fceFSjSDYhJbndwEjGXWTKAWdU3ZhZgKFwXQWZ8keb+907PbOsFyv01rfgD/OVVSLDsNiQ6026mE1SqwBuWdBnxnt8sxhEvG1CuZhH3TVUllB1OT6Bl12pODCpaixpRSMbgan+9g1pQn7CWdkJCMbElB7zAjGEh9CVWtdD3I2Y2ksO+66giiNrnwlMiKaHWzv3udH9ZA6XttNk9aFT0X5eF+EiflhBq1WTphzSWva2A9ErVv5yr1J5e20guVQbKzjWn83xmU4kZl+wVv2ddRCq8jxYOY/L1HAhKvNGXMUXKzIB7/AM8LJ7jqZFcgWBUntpkXsKuVSXtSUuvQKNy5qMO87OYK0M4oxnhZJL4UT6lCwViuHa7lT07RAN7+MNFY6y3cj8KUAwBgFY86dSMGYp/ZJOhxHKb6bGFMSVOZq/apJhNVOVn7ZEklC+8v3aRJmVUxogUpuj55+H5TUnDm/NNQ1ZjC0Vvx8InNI9jrSvQhnEEzwE+Q9jfWNhW3SVQmmQMgJ+RDbVXZiz7L/GWSacsAlvX9HelT4hxj+67GoDFyiPnShOstyv1NphsMaHOP8CnQFkeEv9OZmTDluV5NdOiySKBPtL54BMPFmdgU/MVjO/T01rYyKA1O/l3QzFV+uTX87TCCO6hAZo1JwQ4woBd61Q85OJkajGj5oBKzJoEuj9qfEBtY81FTdMPkM44vMSeeUOooikf5jMZhYzbiftGJGrHPRurXIbu6g7zMbazrtHsmcYkp2gVE1L5lu6qDHpLghnQ8cnMTSUg2w40nQekbl3cC7jwSiVakxHQ3+WsBTWvqSjdPuVNNC3NCZUtxczpz9NcEF5u8l8sa0dIKrEdf0eo5j5QjcNncDMI9qL+sEQRciSosvsNbRwTqVfcHE67OouTBQP01XPqjQcbi6cNIsyZvHg3HyY34iWhZ4/rIPHhgzMtZWD8Yzk+Aq3LgJmA52ECFu3NLn2MPnHTWvsPT1PGyGMUGpPKXWgWZQGLTSYWENxgVr4YgckR/UP1Wa+88jfB5X9R6ZmrWwYJk1bTDTxzfcxtJvxlDvgmfOjeaxBaEh6AW2V2aTpxfdlgBMvorzhc7ZKhGa7HTBGVtzjO+9nkJ3Se5PUNIce2FY4nAWMtPkZEOYMGrxJJg6hWjDow1+XJWsOJBOsMy/VrOvURVmg48yU2d3Au6sXuxwrVRY21vF+q9dbB+iHZOLlFO71nW2y13GlSbmR0YLrypt0rWzm42+xhSM0+8ZiotKd+D7dSHWem0oR5ohj0QAB7HzXrTiGCvG06EG0Vxl6krJPRkZyK1IXsVKbW+Bm43shtHb0QOYATjfCIMyK50EdQEycoG5EQFqul4wnwFSzXWeZF4qTnshTM3YyNkXV0mM6Qi86ieMw8w38Yt1JBdmZy8vwRoj9PUPiRoK3p7RN0OYm2/ox0yQwXyoKnV0NsdJObYHchWmHQ5NZQRidrmu9TfaOuL0zkxW/s12J5iXjdShdWSM2NlLcycqG+xLakqb7YOymZChSrPudInJKScPXwn8VAOSwepUSs/a0TR32s6bdZs/k6TL3RdScSrK6Ho0STS5GJmYxzmu4O25Tr+H0LBV0MKlmgQjw08kEP6t/uJVJPLNEUrW2ajr2WDaImHno3vmaKHRmvFv4cWTWlDCqqNpeYy984B+MG0l9MUz/4XuypmkEA3yhZZgoAgr8QWTMbr5uadTsOrdAm3FjOTzfS79d0BbWo+oqsyaGRNkrk0PMubmcArbo5hL4yT7EeCrlh2azLNrdiRnyKVZIzjkoR2WEnW/lWty/DrgtTD/RFSyqy5QXvKwzYy2tbVBjIMyHYeAqOPygeNy71Bb2nYgNpcwIJJVA30VFW5PtLz5lGBOy3ZjbjlLpJ3rIXOpE1yyFb5JcdsOAZbDxWvcrKePZeMsQ7BYSovq2vQQ0mzF2dMjoWEty2mjq9J0VZUBCrt7JQM+AeMfbez/8nQz4wU+MQ3CVoVWe3Q6nSaMpdJzwq51Hpea2HaHF8hh+Vi3KqzKbQKstyjC9cVNpe7rG6iWryKH2Y9WykZx/1taf2vx6x62naozCa+td9B2Thy3VSnou68d+ZX03JhqWvXx81lOMlU0lXr3TiduiMJc7Yfc10c5VbywCOanqxIGnqA9xXB+BDOxQa8g3fpYYz1kxpARfYGBfxHV/ZHAAKDyGHYTRCSVQKtW64sT0COWKbncqgaaUjAEXkHKBPeFj8uWPv82Mj3m2V1I8B6tTMAJm8RxqOk34cg/FoTDXn4RTStOGbkR1FVu7adfABh3KJnvHLm1/AB9rIwoRtKDwIaZ0ncyEuxHfKgVWfu0Yza+HcT1RguAlO9kUf3kt4Qr10/mJL/PaWvwrIU5kHhssNpBUkrcpfD0uDlEIuRPde5jkn+Ws7O1Yl7Gtt56l1S/JwrumKxp4GBOcAzZHuAtyBn4120XzC0jycxqG9Erdka7OzgE8eMNuBWXA76RpOEslWmeTCXje6nNCwpr/XLnCnQVs3iJzMk/eLmBz35eXcByAa6SrklpgQfVLUN6RON98JchchiPr0LSB8ZXLdD5GCL3Y9mlQKqVsE8wCksmkpcr7RVU3TwxX23yVWe2LnT4mW3ePl4ZJUN+RV+n7S9Omkq387ocDdG3x3DdIjebYnVY/kNiqyTOBrXdvOgYAMVO6IqjB6BC1gva9jEANxd7zoz+1WrwiyJMVYIKMJmd3dyHusC9YjbjTqxEO5D1zuaBSl4qyzmJQOH5VpadL/mpnCuHlWUQ1e6ZDb9J+BjW0gSmRN0wd0WrncmN6q8rbbKRcyLlFVs0qHcVfmSVqxRXLxgrFFPszDmWynduOhfgz3oZ7XjFL2l7LKgVQFXSSNbhcqAF+XTbae6UXi3Uck6z4jqGlIy7pcq6dLttlBl8EaZB+fAJfi+O0i/oXS8L0GuiXRD/jWTzUT5cz1vBpVrs/qoQmRz154G/dhqOzodURurXqwXhYs1TYvmsa5IA1qha3B9lnuMBExiiiivEdx5MOpURcK1z2jToyXZYdSu+47FKdPZGgqrCyGVAwqZUnbwc8Yl/xwtbcQY6zAbE9SKgR6m/HUFsVGAucfpR2z8GheknDGVn+3UyAEU4CIV51b031RsRULj3KyBSZMVTePITOqMCwbSGSxyieam1LJv+o5kw1fri4Dqva3ES3zrkk4xY3p4PDrGB/M9flphG2zr8YwnNHlejzcgiFRGSr47o2715tWHTPbyOr/orU8aK5dCsRcdkiszlwlLl0Hvdzrt6Sj7AQgXzNO70ZhvT9b5GBwhmyUHVO6gbOk9bxOgjZcYFRvF2Y44CwCE2W51A+VhhYTJ3yn+FLR9OLT7c2hhz1ywDbec8ik61yIqPhRP8yU5nj999I5dXYxsVkLEt0y7C+t8daMvSyF7pap1fhWdv0ZdJzjtPczk6KIfboy9Cc0VhFTaERY4lwccW4sye+WvsDHkuY27UGSXOqC+bJacg49ltevMqfozIr+r2aDk0Tcekgq4AXFAsjPBcB03URTS/KF0U1Xi8EBcQzZtOuvv2kW4RVz07evYUls6QwqLU35V0de45IHrHi5i2fMdIE/OiCray3yuX0ly71MdEmCsmgRaGXKV1tg/UpKaM0KeUB8dK2x4VZszfzqo/zGPZ81ReQJnxS0t5rWQdlqBP2XciPvfipp+YRPNUf5997dDphmI2o8kbhCWBmjRzXMjsvp2ylWhGdXOWNUcipGa2rOaR5gbNY45mfk8dGaa3SUqag60RTuepdYn7rAb2LVrtft/wptC0sLVuHNyi+ErcL66WeSzfkuXFA0gJ7owctkuVgDUaJihKyMRbiusYpOBuQtt2v1SyNdaSoDKcO47vERnpkROGZbkRtrSOY8AprEVm41Vfo5uMJ2RiHHZPgQc7SaYXNmx7gOAoyloVTck2VIlh30EteK9ZbKVZH2ynn7VQcuOhWxzIJUfPx2SKEBD8UnWvkzGfVifHMxdnRlKPfWc/TNF+ahHXdPYbmSrb6o+CvAZsZ2x7jl8O1zNuvo44K2kAd1SfYuqKQNRArpW9Lq4Ty2FpnADVh6xaDQnaUmfPO05xuKNbO1MtFxQVttJUmZ8fSF8ZRc41p7hm4O3l6UwMTWRUSdLVHtbwOgDqirKqLePerAxpXEMpPMFgJSiCZluIiCzger1894ah88Vadm0oSqbSnPP4YevTfjuEgqo4cY+uw7AFZSNnSBYyw92pqjSWbRHdct7lOHeE+AFqlXVB4UKR1tYc4eAspmVS/OSem+L0Y5lWL8yJZiC40Uc7fVMYqOG8jGjjpb7yOXr39sU3Zo3NO5xVl2N2JXU7jmZBpNDYzKRmgzmqnsMMbrZcJS3XQf8uySv5eoNb95R9LJIKfauQVH6lCNwIlbWHdFAccjw+Cb591s/mId4+HeqxSyH8lWd1gdprRHbNUTiD2V06LnCYDGiGcgXRaXGLivboZ8iOpXsUsOBQPYswC45fsCZFyZy2lOspCu+j6zFiDDmaFDfoFtKrNH6Wkxys8OiaklkHg8kyqbr4ANyRm3KS5QtpJQ1gc6Du0wW63zdR31uZePwnrnjK9aBcjtYWpauEP/SY5ncbKO3G06PdgqUy0FHVBdNVm0YnIDxvAqzs06QcrCRml7deXZkHKtjxH6d0/JmFrzRj2uzUPHaY3lydHOkezbptgxE3hTZliNlHmKXnXYZuRIwvf4ZXTAhhofSuoCdOjNOdYrKLfNGvu9eeNtMBzPrkmBNTwh7cQskhtkUzJiZk4zZ/BdbPUIhWpayABVQn1kVGiMw5eFSe83MuU8NNsl6K55I+ulhYqteaKpzsjOg/zfp2olILLoaSRsomBmkzQM/h5GLETlwx9//l3IdZllZDUyILH8+s6QWljLM5vhw/NiVVeSi/gehxoiVjteEt7imJms2D6/wLS7UeF6IZmnU31m2eYPNGZ6YUXJ0+F7DMrRRscY/YhnAXVIemVfK+chnMLffIe63I8Prqpc0qmVFrEyMWVmLQkbB8qeuJARECVHnFQJX3YKjiPgmtuouNQYhoJYKk1ssbxRXZLItyXXrVSB7usKadhWOdRG4clQpZh6p1ycfez6vYxDj/bNEu4gvyI8uWVCoooWv6wa3qHt8JtFCfnFH4b+vOJSYzNcnBOiXPV5fCpCx+2VNrkl32INzD4nGyzOeJIj2NkfJCfbKa2t8VJR6Y6K8TXOBi5P26FqMMZLbkXkmwez3LdCyaPCJyub0sMwulDZ3L5jpmnXVhHngrHU6uMjY0SXAB2/Nr2SN5cJc9K2oLoIC2URZWVTguVpDXS5lvXGwfaaXbsddazRTZkRiKCzO2l2DMP46FKPGBvp/6Ls2GXc1H9ad7o3TNtVMxcSbUsiFUhi2bEfuo5Z0RSGIgSpERUREjBOqzhKhF5fgMSgBLIIvk5WF0vGBWIOc8w6bPKpgunwaUCUl7+9auuIYLPCjjVN2kDbgpMAA6XxbXsuQyrR2lrKWL1GGqtHNGSZQe2OS6HvNagph8ShWRn9As0Q7Diq1laZFosI/nhV3i5Vtq01A6tyq5Llfcqqxt4g6TUaSKecyzcWu0wl/F4IDmslhw9S+AU10q+YWqkiCQOVJsvvXuksyS2YjfMMwJlG8kwwdmhLzV6gSqRvabG5ZoZUgFwijndaj/h+4rch5ZoQfTNMFSO1yS5cVM2wln7Dx2M5FDTerp2sU20GRAm2SJVAkrciplDC4jdiqZP+enqg8396Dsi4fvtNF3TToFUtNzal8LG2kXv82SUW710fsxsGtTv+oQWNtIUzf1CgmlL7AZOcsmzuSmKSc4Iulzg2CiVy/wWlZxrcv1yNBckCmW0GW7LbJuNhXpZu81n7jgfQpoajv0V92woHAbBg7n0bPHZoTgpeMlvEJVZ9zXYynvTtgCeAwLcIVWhRMIvG9808iZ/uonqPuYDLqvpGusb4Os6vHENitJ0ya5xdME1VdAtSA2WOIKHn4y4LsvaeFXflHgYHS2e6CxN2VVRsq7xAYfkvvZqdFM2vF4Uy5ELjsAww4b3dTpZhxRY58BeO0wQakwKzYcm9ntYoTuRs2qf4aGL2lZWcq3VubfXQj5XpAD9oxUgKk7McWR3eE6Ia95keOO874ZfwO3E84iQLQB6ClXVlsfNozoOGtDtcwmyF3Cy1qkfV4VHK+Nu8ZaCnIVZknPSvFa7jd87ZOUi1puvgA19ibE5SDFyHhQpthQc8y3A7iFsvSWvQ9Q75mMsN0QWjaiW3ZDO9aP0eOC1pPmt6NjzGzXw2alptZ06UlK+1Gjhd309cZU6fTUyWJ4NAYpsCM6qNj3iuAj7KpTtaBZFzfLRYxqsptFCeskqFUEEiHOjPex0Im6qc86mrxHZgNuYo1W+6zPcBexNQjAXQcl6zmv4EANj3p9NvZI4DMisnLm0Gtdh6EjDDkVVBQ3kbnPXyI42fPgr1ieZHTQsY5gtNIeQCq1uTgifXhbK7ic1+2jM7UZJXgnO2i77lCfg23dg/u5sU0qHzpjbjGfZs3A+AkaR1z4A4gJ8sbWrsQ8rBZhkpCoEXnsnle04LONVQ3IparYiUylJOLG9ex+Wp42rgaSJtSNJqpgwmWTyMtSnmiuc9XOhxo9DDoIQ07R4BvydrW2E7RMoX4KuY07wwMM+mY6qzgBbrRKQC7Fc1NuOTeHRhedVZ2kTnbKNaI26/7TbyciyI566cwM7o2FRvLADszGw61W9XsB1yK0PUfvkU9IasllHNqJGu0oyHKYpKqt8YEijrBBvK0tspm90OX1rbr0KVWUJtNieRYX2TBZ9qighJUHrHUzjei3buWecTKNpeOQrQ5bpct2s6URKUS2jQC0pPggTxuTbt/c0UJiGg6GBhubzbVY1U0AdmGEDSRep/ZN0UXwwsoY6FKrI7VkEr3rRZP10+i5E04sY8bN12NZ6gkrFVpn67Yaekcw0FQWovLMcGTtnbocbdB0Aq5HPc6FOCVAu1Rrlu1bUYOay++W4vXABNo+DxecaSnyscFQM+a9Qd8SzFL4c7dUh+dSfd42ugG1R8WWSrj2SBHLFzRnGDzXnE+BNa4JxzLVEgWd4KNNFLqdyxI4ntNGKcpRNrgqHv0KCxhFU720pyZPE9oJo9zAZaVw+mAQa6LDjG+qDyGWpdXHRxhah37WbTZ1NE6vldEkLmhjJmRUGptl2FJfkg3JQfnxQdZtAtsvOGCXRc3nHp0qlqvcMLla3F9O3Zi0+yYboo9NRBmE8fFgxes5N0UW8MKO8m11tArWucitD9q+/9FKprlU/x8upiOWBUaW0Znm279DpRtsvT1nGzwjqdhPRYqCPltctBrY44iZLhYDndC+sWVPTynDKqAQVEtnAxcjumOjem329WzeDBjO/Ho1bRciFALjjdm5N02gHmDEyzM75xcMPuqlgk/xluT2vxWE4tQLGzatfMBoFUPI+5frKgcp7urUHus3EKBx6nNNtHleMZJ4FgqwuL/p7BNPtGyPfECmWeHykV5S0qid6aPHHIqSoyo2dHbtt5qpiPA/sYZl3KhPqCmM8FuMGgxy2uFTKeR5H9dfTZzpXLkFhxhXQwFBs0WG+rQ3BvKPIKrwakeEDBRly0Ki9Lu2TOa8ElVyLq2yX3NvoQUXyB45IYdHVmhoTcTmgGQISS5rCivba+MDAvVeMCqcbk/stTimdqUxE+gp5z8fpOE8+9VCtUq5xqHfVFXYgryC06eKrMBaf+Fw3SE4a8YsWPwLenJZC8yEa5CuzyDWfcjA6lTDKU7FHixdaj6XFgiQ3i7YMuVXkNzr+SX+q79cVOCP7zkUo9lJaBWDdHAREMP2QZ630ndO78svdzvJKQnRbpOiJkeIq7fliWAu0fp4sGrXqpzvc+BdtSlNGRUc804xWMjzKAeumzxKoF76rFJR9zDc8Lo3nPkLFQnjL/Z2Q86OOhW3TMhWAaMqD6pN0mVGa/O1+FVo6Dv2uc+knI5rgAL2pHXidUSZwZDOnRgxzLIMV8qq3lR+lDFvVS1bR6bqyQdKk6RWXQ1OqncORgXDMDmPmKbCweFpnwsfJYGe19dVlLK7IDl692lnHGMskfBRuLHEDmmA1r1q/ODpHeI95FfKDlB1dZm+vTbo6IY9Ig1ap+xCA4OJ0fDBtkdMR2tnQwGmE++yJmVBVtLNMtHbLZ7ngY82e6OEgqXWtLZNozZP5zDnZirwrMuhI/W4YapGqYOl3rHaylf2dIRrLfQjiDpMns0pAZ0sOp8RxRCcQmU13E5kda3xLdqz4jHAx16LSaXsa/UQBHgP8sF5G/YnhbolK2EJYmXiAXEvTbGrcSjorNql7BsxhaADAtaOb3+zclZh1t0S+kMtQiBolWJMYlkHibAx4pysVulcq24gZOCy8sAOsI9yjueVwZw7katRW5zuja+fF9/IPW61+T0KRG+I1Y1ZjwuPXLky8jv6sYU7NGWnMO4zJf/crph37TTBLtRfO6k6fMrRImVAIwBulmBNQQV86zJl6oxDGQps7LSpQGbX188xtx9alFQJ+ICHag7yPCZdncr1BhJiu5wZi90w86qNXa4IaKRLKGn7SD5reyybXtBrMgt8THj6doqe55ACe5hFV0B9qHv0/6GGgbJlMbq2wj47jQsE/Gom/DGLlrSKiM6aJTO1BLjHXNVoAQvF2YomT8Hwgk9ExFioko+Ba60qsTa3+vXY2nSKq36hWHjO+WOhQt07t07Mg6UOHKpqWe4K82Ov5KrOwGkoKkecPjowMfl3RJewEAoDwz5V5vWeRmF80akYS9zyoW/iPSIJR4PWuSHUksnep5asL/VX69xvdm1odC1lejPa+puf7VdvoshsF6FrMzKhFQKY2RKl/xtQFFJSyw7Lkpm1gnY8C0wZeYqLXpLoM3WD85Pb9V3J2dU6egaQ6OK/lol13+Z4ideRJrKL1Mj64psukJC1zaXPvyLSAnkdF0FIhkHdcX1q0oJnE6kxM38GSc/TL2uVI20EYLySHJ2noDQjRVbvwdMWGgdUihSEzPZQVa93WQYR8tKgV5aTMVFvtU0aLpEjzf1uLcDb62WOl1f3GqeN41WucLL21mavxFnoB6itUWs3DEbZigvXoWk/NdVyZ49MhVZn13WlHoTXSyOJ68/KbQXfvQ8vY0U91o6hJ3f44eem0NNU0rsHnO/EjBX5SKd2vgYQcj8RBl/zABxl1+yG8YzEy4Xuo7LUoksRQxarnkZsQf21qPHXmdGh1V7GutLZPlCxbIaJmkk1AwUoyNwfF6ZtGrmVbS16pnugdIWGYYHOTmvnKxXFlsiLUlOFUoO3vp6gKbP7n21tnGcXC2bOemI28sGLN0+BVZJUt8jtqEtpF7MPMzf+waYmu7o3g2YS74sK+TmZ+g4MZRbKMxXqdADZNW0d/Fsvu6LRmRUB5sFRl8EfJ7uq4GNNIEXnsJD5aCtYMaQBw3wX4YlDKiBvH7YRVlEkouS5vK0zlGSJk/uWpum0Q/rCK8QTmGXNDl7gbzPwnogzzJX+FiElFVqOfTp4Hda9H/mOqnX5iSSXWQEF3Ed4/53HXRAQeGPzRJy8KdiYFKVM2YpS6+zJx4n1d0C62LnV7brLUtDQmH4SfguRQDTmTimH0aJL0+LgTaogLWdluNx3WcXpXdnbJxkkiY5e9Ii12kRnyTt+bndSUZbzyojlY+1jzHeV78jzks/f2vdbku8iwewfKs+fKEeyJq6Tm0E4mfvo3AxqtE2voY/mdDs6/3JLlEdHJLPibLEyXBWDQA3S9pc6yLvY6pyU4RIRMx4JgTL0r9q7U8T7uYJTOEOirg3hxlEYz53mVUSufMVEfykDpC3dj2Sv19bFejxao9/pAa1+LVLcLQS1WHC2EtUUfDBeB27kzC+k3UOV7a6bTA2pUivOS1ZUk19zZ0VMUiOuBzIkXmB3Vtk4F7jeGVWcLWa8uMCponnUV81Ah5ofcTVmRfX9xbjCThVez2LKU2YkwIzZX6O9iD6rJ08hxt8CP+wb5B91ARuIvOGuuZR1uwZS4shtZhOPbTVseTwMW4P0t9NpZvvTvhTRQtF3lKGDxOh0j0pbmU9MrgMEZJ9v7+1NTbujvYpxbjbzXzgq+CbkyfzsOZM2hajmTJzu+RbPGYcQ/ICIg1y1zNWboq33/qLN2T1HmEsTY5IiTWOJr35xr74ATcHTZ+8C0LwQjg1XA6UVdWwBHMcsJ2gpKJOlnCkCSU6BhY9omaIzwkXHl/iv6OFmdYD5aHwLq0FTrt7ZGGzdAZcvKMv1PnTfNx2xBwQ5tKfgLRvm6k21w+5lVXcv5uvjwGk4y+tOgWQmXMfBXP6T7xFTiM8YVro9ERyagJw54YdNzLElqh0/9Zq0ZM+IlVEQ12R8ZbRdBjKaXOZ6WPdIOZqOyzngTK8vHmk3KMGDe31Y292hkNztJZNHSgjWiDrd0lSXuIGskZNjFR67j3SvRc9LX105ZAsqLGz0tYTbnVuI2o4QEyRAuW+EiuRffQrUyVV10BJFtxqxaWiIeyW5pok5WJFeG5LaRkRfX/AEuhiWDOhsHdSsjdytpIYl9To+xk87OfccPS1pK5gMCdmGlPTE95oL113ZI26CF3u5U0/TztQGQrfIddNUaSxj4svHrPkPC2bAwLzRevjyijmrfGxPn7Fb088JPaPXv9pVRN5PqqbdXVlYzsxcoTpjLCnmQB9+naTyw8cjvH/1W/p4fd0UFgQtFe4aXYxVbHAR0GvB6PLPWToJ7xQCGRqD+UWeFEmwqXLaqWBVd2qqCWz9zcFSTaIoVhmpWdWp5dWkmYuWxLXus6YyqqpG3NvRgERBcuRL6m8LtxuuFqy0QbBku4hkAuc/jW08ishpbjKW4FYRPj2NWA2LJ0vhAS3xzZy8s/WZIUS6/ro7gtQ3oSeKIuVlrK61Ucq/Kp4G2qMqBBAODQyEY8g2bvHeuN706uUrFH7vg+BKpUJyq2wlxJfJhDrRTzjFrcgSrVR7UpALCcxILVnm0vyeKenIo+/+SnQwvDnTwzuKudVYmXRioAIPQUP6Lmfwo9PXnphNrwP8FYQstNeTjzLSUZCgMZIZ4C16QWfi0+bNiVasXNVOH9g4ulEvPBsiNapUOGluKziFgZs3W2UwPw0ZEw90kjg34PF0JbhmOge7W2qO7VPUEvuin6ez7C7eXNMruo/ChwMbLRNrP67Cs58GZA8lEoaZgNbzocnSyv2lUIn0bsgtIq+nAvsQmR7tq+cCexK1T3S4Wq39m1Nq8lbinzLokamRMhA+rSU0XNgkuM6UHZ1t5hmOZquIBg6FM5vp4q18OGiWPJPqbE0zyukm0806ODzTBkyb18xSg4eUrXUWPm0pbrt20zrKZEi8pGeq14k0abs4J9V7fuNrhRHyre8CfMszeTa0cDTExuFouTNoua261blkKWv+Gr7aO1WFySU6m2ZlYRq2c7CHQepY3WOk5PThgmGE9FiPsIHWVEbhCdeJpOWSvAXvZLKXiVTq1dLmV/YxbrgR0tcFFAFK1ORlggzPRtwwK5IZo6CC5am6nWMQcGEPMjbCvTGFRa4LYKlQr+M8tlNstyg6VEImPDpmX2wVY2hder6t5c1hOhcAzGMbzCsrcGsG84a1o38N+SSvcqYj5ZSK9R2k4kLUa7NItBNZ9Nq5ySZVksnI48t02O6dL0mnYRPatnsW41dG9OP+7GwDiJr2Ikb/VtCeWIvzZT3oQHIS2VqX0MBZPHUgVsYGR0HXYneNWcGDcsqUSSeNMboFVHL9a2PaDenfkp1JzxYXLdAAhfXdSynmLc0Pe4KUMoZ6dgEu8xk1Qz1UaRwM1EBDC4yd5iAILqDboPDDJBPHi/yZmCvKkxaWYjNDWus8gNDuK/2bWadqLNI5OAA+VSaVaqDu7lWq07VjDqgxcol9IsfHbAj77RfNdfMLgYYOg/m1MkZURY+7KuJjoGyAi5a78te6+7E5ZlgCPURhlBD1sGhsw3P32mX1KW7HuOtvJRDSQ/JNvoLXaPp/lNMb+E4rGSHu8I08UG6biceGKYnVMmeTSz5umZF1xmFBhguweufgyyv7epc77Z0hPDIVcT8vwN5tEzGp2tC8t5WqlXw2yUay8ZNaQHY9s3siRye64n1NVEuQ0k3bZhNlyr5kPW1aFWO2rA2ho13zbinOorAzEoFbDPulphLoXnGOy21a/RYoQ8ZgIrbkWtC8ZXBulihpCYCuQlJJ/WSGB60rjaNQfIdKsnq39yLMuy0yz+PpCipyDqU4jg9hM7S5Q0mHELZQ5rLDbARBlq3d1F/c1eXZsJSgylYkM1jZbqUKvQGMkNRnaG0XVp8dSpJodXbeNp3a8hKhh1auauCG7rmrz2W8HvYiwWlSMOymqejot5WZjXhIWQP0TdU4OMuX2pRTHGvj8tJfb63NjFQJf+zIU2nDhJjWYdOiVtm7MXCrxtPrTn4ZnYCthF9pC/48Xda2CoZWnMWrWHH3OyGau/yshlDONRsmxW00Gxf0bW1oxxuqaVRuBElE7mlvSFSVMnLG+6CaLIkwdPwOVcEyurjvJcXHAtSY4vVigatOtXw6KrquJ9kztNRA4aur+RpO1HLYthnmMbEku1MjY+J/AqNBunvLPpZKVseXh8F4mWug4DPKVlY5tnjVJwLAgWbvAqwAZKfdujuYe4v/uldGIQQbasj8SOfNA84oVaUvBfG1TzWkR1vXT67vkyLn5YHeT6M+p9fYrNjGI1/d64qNZkhcJo3P+t9wz+b7cTtNthFnQuxjrOgJlGbSkMKdZQQLU9lbwqOrtqTHKOWFB9jGzfrnbJBxUT8jmAFkj0hRHr03TZCZG+DBsVpmk19+qgk0bwYIDSZQmUa9N+tlaDOfcE91N73BQCUhPzmhazbza36qSjZImfERiRgPUFqGYuCw9BicdC0hpvQMAtkO/NOGGBFLUB3lhv2r1WP5DVrh9JjUEVQNHJ1oGzHllPJXpDbAep7Z3UdHUdLStB2RXS7PtHMJbHEMDNkSegGisxyaWuOV6WLDl4oZ6Po0dUa28BmRWyEdgNklpDDG+ZxeKrd7yKzvdeY4Aw08X+i3TFq7MyzKG17oiB5iLPUt25XFMmtJK+41X0eswMMQEgkNxZVkVIhxoSDOP3IEu0Kq66eKrOIljD93BgEjq0e/Jbyjc/WRwJxlNItUcicZtuy07aaPaPuf7SN0VN5bhUrORnDBzwW6QmsNj2/HY9vOgKoPRNZY0rHy6rkS4z5mxL3BsbwHLlglRsDL/aedrOnEan8rqjGlYSvzhlpqzl6VFJy0jJD/PSqZiSavbNok1cwLZJ+3CVcVVkMM/4fyyV+lkzw+k1V8pymp4+51xdmNlKocwem5UnKZYJCN5eqbqoVLmjq1fW44QLRzuRiPGFvtX61SzleerdhhXlq5h9qEJwZ4b8QNNh6J4cwq9mgkHoWZXl0Jg2ZzYs8UZWYJJMZIbLkC6lkjDRhX28MDtGOoNUhWS9sgRPlLDNSApfntg027IYr5ehW/P+xXKB8Xn6ukg7xBp3z37Zl4NCwAp3G5JupurqJGnxEb0tqJyzdNP2tMCLyl5Kkc3uhwCbP3DndbJtboYkiR76JuTf2VphrXGJmdOyVLewXHUCqTK/zqkV2pi7m6uhyhUefDFJHN5gMdwOJ8Nw2q2mIgxxfqxty1SmeT7ajsQsIwbwG+gTrr5nfLSqpWkQ2aoX5+ZuNlr8I6Q3qKT1LoXGhzkiG5EXXmeRVEI3TEAvCPGp5SsvqSVi2L45bUxNiYu5tg9+ll9g3Rzb9kctNy9YtTpQYZqxe+aglCglGCktOl6adawKFlTq1o5BzSnIzZsm+XB8ZseCG/WSiDSTZmo8JCSZl6NZUlGbtJAPtNrQTSVuu1kIhNp8rsThbAwQnGP/DVCpLGXHHhvCC06oYDoN3zVifM5mntCoJW3rPLiNUWQGtcfxk2K15TY08ZX7uIztVktp0HQCsGZ7MxZegqXDKweqsqovHCK8QZO1RktXhvwEpp8HuqsLImRfIInBkRfQSiapnSOQOPvqqkFm4E14QY02rn75+oDaeRU36p+voEnTlMxN+kjK1VPaueakK+sHbVG8/cRWvO50cRbShSU2+z8IiMPmutxnIlzWtE3J7ESoRAer9Nw/khG1uRaWssgbqfGWz5H6Jc9LP5/FS1o0eU2KOcXrFd625Wtso8BvuAxAVEI9TTOGYpy/kuvaJygwFJks4U2zLKsFSZSfSi5op4N83xgljfZ1kmDwnwV6ANv0BCO/LFJCOHlpdXNuDMVWUztZtqdNzP02UNirOwoD53C13i+BIwEYzkdO+WvZfD37mBUMVRb2PzfV2IZ3WyOZRiu8bYIBMIfWhedZkuvxJxjg6+/z6bVhz7QkUuzn1ptVfAiC6mt4tdzJsQfQc161qsv66OZbV7rqnxxutb008yHZpNDQh+TkozDUX5b9RHuM3i40KW4Y1GobYMCwfVFEHeVBtLFxqQai+Tv7pCJXPZ+sftMOfqBEMARB+aXF+Rile3cP50CdK2hzY/UuRQOANZ0nzdzwC5xJDGPvpkx119axWrGsOJ9UtjLtWAv+YHZsztoeBXPenVX/NONqHCjc63GJutDx3q+Mm4MGRx8DkRAHLIuwfIGvSTpjR07HGQLrEhBjwKyB8YoBCctJt4qvH9uY6vhXoCliyiuvi9DPrmdW03E4adMw/2uhQqRzr3tOo5pz2t8oOlA3KqNndHyG8aJxCVjBHoqxnds/eMutWEYDla2PC0vSEbBvUP14pHtPKytB9M/DhTUunGXPgS3657gncgnjfUrpo7v9Nlu2nXcqg5ToGtRCVHH9FdW/2ksuWf6KXGBUvsL2faJJXbN3nzq2rNrdqc3Ae7TPYcHtWfXTb5r0ka+BZJixxPoOgON9ZZ9z+sGqp7aekd+vz2SHr48Qyh1UwixVRV43A0bTYTaGxA3q1duY8UN+3qUD8g7ValnFkCZaQ01rYs3dY3RUAc41EYmyL7jlIMcaFeGjtYp+ZnBwD6ICF9mIhui/DCaWzf3JFnIiSJr5YZPZuvhzQLea7sBqEgh0dS6gaUsdNcMlgm89Opbv9BjphsHwISF6GNUe6ap3Kh+qzw3IQ6T2S/TWk5HM+1UK+JTuUvIiAsJWOLA1toLXMefrl+TCCJUa7D8Ucoh2hz71e0tNV5VzQ/xlN0pWcHANcerax+YqicRvdMKYlbWc92OoZ3IfEa2DPzsbMDtU+OQzdONuitbRobYj3yQd6gmc2TZtHaO8GZROqqYpbpksqJbN20C3b4rTpDe7+UQ61nhRwfsaK99zB2cZHUXpkmypetX8gNuFFjlYyh+hZKL5snVT8Cs64P9XqWkmG19/oZetuMp59AqzDrF/y1T64acykFla3XSvp6R2ldr88NMBurhrAfOrV/034ZsucFFOvi8kEZpRMK4SkEoKdUpHY7KtRVQd0yElEAcqu6jLLTwgf0aI11odOjvfBNejab+vdCJWbFXNzGdGG7jWM+e4Q2vW5gfzbklXWHXqkU+owaV7ceNVrVeqUxCZmiXQ8wk9bkZQh1pdSwnun72tF4pXL1vmAmnEqdtMqySmVZG1bLFjpTKDjhcowAulhpKWPBmAauk+mQ6Io5H6n0skp6D48viQg72sMZ1nto+VjfNdsBkRvQLskD4ybKJuyQmApg0P03X7yFMbhZb20rVyWJ4pus55TDLyVbO4mWbolv1afbQwtXchH7E4GnuvIJca4LirYnuUzcuROpWb3+3qU8MvXuUcIkZOmZ3yCplUOquXBkgjWv4SImKssWNp08Gp+VYvYfkxYyEhaGPs1RhwHtPCSVLAJKubuqK5T5s1ymsNbIIgMflH8Ysoq7AEwUjoarTKebc0ydM+es8ldPmwrA8/FIcZhuRXoTM0AZo5LQKkor1d1V7c9MFltXly7JkAe9Yj6pcPfsZu+Es6aEn8smwJQ39ZRdlr3QJo7DBt5XVteot7wYw7W4ZlMRzge6EGzeYzrMPL3C57p0kNuJhc/RZcA50X36q2txoWwFrKe2SqorLCbRFz7LOGXSyghkPX0/DVREqlx6SA0gZCbjLRmOYxyd9Fa58XKFxvKRwalr5oKYsZSFYm72qUSv5hW4Mtkg6aFHAQ+rbLUP7ZsI8UE5C3kyqPvKC1a5pglTuPup2UAJGe352XdbcHdHAObr03aTuvqIArljWMrP2JR3fOVmx5w/O4EHz8i+x95LuWhhHU5aa/4yl+OZYA6xGlqrwwSnsetl+Gm0rP7cq+fx497CZyqZJJ73IO1VIQqpqYkOcGI6JI3JBHnf6uFnG1pl6KVr3NNaep7qy1IEwxKL6hKp8qV4d9vOc86YJMZXmbCXYhGRBdP34U31y57Wfzs1IhtCL0RtZZPSdb5/2nA3VjzWxeQqrOrKW6XTtFiyUSgICdZdkygz5O+HLK3l5Rxz4l5NLQaW5mjbd+gPivXUGqjsjxmx2CkruRdEwSTr3RCeWu30UyCNQ4yTPrZUAc8yJ/BsoNGQwDPaXrI90ETa4WMw2umiNLz46/yMBaOQWnXZsfhTM4RW+ZMP2hMxtFBvjznNzBUtiKzcO258041T+w2pp60d9w1mXYI7U5g+9LcN7ZFTJuWeWi8ciRsvyrKUYjDPzaUZHIRTo9ewlOY+Z82zxUeM6ulWBYwJJbSri06OkDda25nCFOP4Gcd8qH64pDMYVq7LWMr7A8qgoGOisiHKcP0OHgHnRTGG+n0dB4JqQUwCGlzGtlPpc5zdGdo63RnWbiCtxCVYRvXf1bud1YhUpWdXwBBSirO0bQPInp6wGLcvWyW5MBmSUm194bjldSFZCaindWlknXYdpEN1NiV04jDERnCDy2KH0acsf2FUk1LQWIMwxg7cjLDWlCkTSX1vzvMhjl7ptlg6VHXROZdQnxS8U2nMOZGWp3RRHuF2xLY45Z0e9JU9qv11ZYD0vFo3d0CPprF42jTl8z2iNUxB8yreePrLBqev4w9NpxZdNb+XMa+hJqD/OXU6CCL45RNMa0/wdryOWM4jFzW5F/ds52XujrXmTp8ec7mmba7MoDq3YNGrpRn1S+l0FXHeJnyI2Y9by4qpQ1K95VWQWeoNYeYhb1pZ+hXi/4KWAUwchZXc1xoWtpYnx/msEw+E4gkcbbW6u02oWavnNFCFZjcBNlaYXZkpmvT2tDp+L8r5+BVrVyiTgYO0w7vOsHOZJwnSc7hFqsfNYLLteCVwQtKWZZ+f3uymxNK2Y6ZYjdTJgvjyeOaVB0anlDYUrFZgl3JBCG2nNn0eMcrPSer5JPhdVAUMV4WJw9QXqTG0v4GavWtDIeVUao6FXx9PsbrHUNb+uqZq4qHsJsOTbJfPTxW+W1KqgtkFKojgoFLCJUpzzIr7Rcx0zoaXZJTTLxVTzUeRcxl1CtXJUNer5aflYJ2iKcwUL71uSdp2724DV5iYkriQ649K5Rmmqo38ZspEqlNnPNSaNaDtqvwZgVbSvz6kRNY+ahJbTxwSdhKvz6g0S/TZgvPRi+kjWWELHSVMuIhIaqoFMe7dwwaEWPjOo5ts9EJ1ujC2+15GUc+7+2PHAL/kiR2Yg4yl8IXaMOzddVaiK3rsHKDtmWhg2PXhgeDavqTGV19V/GsWXX20QyrPvYVoHMZlVpNDawERer3mTo+WtGmG/lHWO1f4rVBDYAq8hxVsDA60ZpK/xcjbYCtFx+Muqyg+n0EsT9rspdNea6KYiepZQN0atpuCTpIxhv80O/oJnPKqXz3M5iZSZM4vZsdvPxkHYKsqm6Kn0qmJjwsNF67kxlmjObhiktYYaN0vDkx4yfVue0fBO5vRy30qWv1iT3JaVnThCRGQv6pWwRLrxRMSysL1Xno2Dwnm+iQwR5OckZxtkUJF2W+bj00WvGUs4On2gvrv60+9iDR/domKOUyYr28awH0VlhbHAg1RZKhJCb6ulLe9pzTSkqdpmJOlxWPX1cxJ/9Q50fjxv0eAGJjsKCGxE882DpOfXj+a88rx66ZrdRWdhhZ0Xj6Tzcu7GGbjNSlv24smAk0esXMh2KCzcFWJExswYppMeFmt1dShFgw7R1L4HzsyeOkPYwQDomSsqYaQhLEcJKSdI+uj6EwRsE7mNebpRrPScSVClMM8Z2z1nYe4prTrukILI9ZbgnsdiVssjCCGRwfRYFYx2rWbWuIw0t2X4y0St7nV8xc6Az3UO5U2jxP87XsDSOeHeo2h+teELS9570qFdxQnk3LmsJOOkRZ8HTvD6N83d0Oj9BLOzp5Qj6PG6bCtsxoKOxkfFO11BLG/f02FKdnnNb0Gjm1DahCX7SjleEyQ3GTLLM0KuFrvToOVw6omgllxTolu8K9ZSVpPOzp4X8uNxZe/2UBHjkAAzDr5Ku1bpu3WSj9unSoO19lZlDENRgy0pjFjl6uNgUINDnJJHsUtT1mpYL6Q6RjM/Qeh+q20pPZ50BVm9bzlG+GQE4n2ZmRw2kEFML7/aFfkrkYXpDOgq5v9sE7655zIfSbmV20b4wide9aa9HQd2un+zoG5ju8s+OgorBDwV5RxKoG7T09AA7C09V1jMuPYvYoG8WyOJA9EkTqUM09tXmWkZ/VwFJcphScLRu/6RWCE4mi6Aj1bsd4xDxYQ9ziXGACdL/PpPeJNGaWVdFTudPXB8jovOMS57QS0eQOrdnG5urA9P3Dqy6qWkWZwa6/MeAmr6bpyzT9dWJMsm6mfdKyEGFe615OZdvvaymMBH3EGGkOdO9uaNU3wwWXLMIDbC2z6LZeqHH9etPbQZKkSxDO4J21MkZJbxM05FpRhS7xV29TNyIVjTLUoakQ9E41vHtDt/jENxUm69XMNHx59LMXKAvnT5SkMmNHBOpUTHRkbG1MFXoFK0UMlknXPXpnwJzZG74nT6FeuYPfxUSbnw7YbHktsXOLVHM9Rti53/um3er31+1womsTmyz3RS7si9E6JVwbH7Nq0iML7plXMpNebZtbtOmYR0ssbI81yHxNqbMSidyA1X+EdvLx+2Mvgk5CShPWSpZD6NZdVh09GRVl+o2jeGcwyh1G0YnUTplH3XGRlIOTCTRc/dEUnlJ62sUXi5imkhguoswjgC7UpSEsRq8VVFF0vsJihEJWAl/5zdM2z9g8WujilNz7ZBP8EJ62O7NTmuGXVjRHmLCwXW9wqtGfMZiqAwEB21+SZLBcs6Wl8zzIvYhj0zsB/azfwNWZzWV5pdv0cyGqFAu9haEEygkk7fd9P2ntI3Azs8c3436JiT/3Z3+IuhGbCGyGjqDSLHbGc4szN+v582V8Uivjp0p08imOZTSnP7DUYQSqS6VrC0NQYvP2GI43dMzMl5tzHM+qOPSuJk3CcWNW4U0wjOUMRy5nYdhD5E2DJDaBNln0IiDrUYd4TuB97NUepqyy4paTG16c5Q141IKaoKp0XqjNimuaTtrIojhml2JVoHxMh1ahPdLIDsKkqg8bloTp8uIxtKf+lOCvcvHVitII11hbB0vhQ5OfvlMicpM1XAzPLnhJmrGc5oI9dCxys3bTgUlkP6v54kKSzmMTjObRbrdPvzprsz23VaAam/coVAPVQ6PSNPYOLOHd27soAsmeGJqDeYGYEamonkknSCAUMprfoeYnrX+CWt6yutbhDNDD603fLgVqLsvFTVuCMuH5he9Dg+qPLI9P5H31FbZfCtYVmYIvQ8UbE5LLmSjurZO1c/BNhy5Lc0k1hY5DSO+i2ZwiSn+/8nX5zVc77OdTWPJYGSMCOJlSUYoY6af2Nm0G62c8c+w5fa+lRsYJ+hl/vtO2uuostEJtG5OQdk+HLW8Vd900RnoGi0L7r4bd+elrD3IZ2sKgLuS5vR1L7Z3Q9LMmY4nzcJbTPNgmFUiPGZaa3OzWRavDNY85N7U/Xxi/VKawa6+0JLmAM7Y34VrlEtobjSzwJOndDdqNaTN3tm4rjCSiWN9o6PSaZazUOnGvCLve0Qg8KzlxmydWZQuLkYpjotPRNddsPUXk5a9bMuoXnS+TkmGrs7l46CILVXmTHY5l+7051YM5ScRVEwdUbTvSgqdkmfL8dcu7Ka6Vca9bS5TVE28Z2WQdQvqJSsmqvuliod/lmse0vAoW6T16jVTbD17aL/TKVNUhUx7aUf6LtJJ6WPHWzsCU2VTWbpStRJXsXdVNc57OVh7zfcE0BsgzOuZUPy2HHb0gs+pORqa+YLjRYJ9KUUw1zU1oMPdiVvut3h7rHQzJTmwNokb1nrQIFnafSCZiO0p/agMWC7KguGK1DPZW1OqwjNVnkKE+arKddgFFEA2JllAEIfinrkzAXmbUAYZ1gVrznS6Ed1yVJ9YrIklk3HTxbH0nNmj+WFTeK1fkGtB3miur/Lmvc4hmcas3zxOZn+CA42IHrTbwc471H/EoIyb6ljPA36KTjy199plbsygOluM/6GXp+xDFGFaCtvWSNbDhuRWvUCwk0TLd0uGQ9TgodzFGJzWByklpmWlQ9THupeL1Q4DLNHJJctctAFX7fXKGlsfdXoZxNUuIZu9wrSvaD/NWs1LuMsrNdHjN+SaA2dulu7kbT/ZSUcO/2XQ6SYgp/eiz/pjbqNTEZ3Kjh6xzePAWATiQyGboMndLKmluXDSFdAJORSHXs1kBxnardNmtKoI6e5b28Y45RBcve2QbgwRPq0L4FN6bkQpZRjzWy2ro9/M50R0RtavFv883vJYXRcDyhIWTZe7tvayaMa/ucT6RluIwnFTu3NMvpW0d4C6kkHD5+mBn0elrcIsiNllsgwyBj0mqjPoDrMh8FuxnIa7iJ73gHrvxqX6S9w7LUVr8b12AXmn0W6OvAAx2Wb6UO0SlGotGuBCDKpGBZikyhv5uOydbO/89PZ9teFLEPFdQK7Xl+GcsPGXeyyYokUmsyU1yogngvhVJLjGGguzWo5du9AvwRjLxqPFcfjwqW83UqX/gkfMu/4fyyy8pPKagXNfzT2VVYKutVzhgILUNOjcwoYbri2cNrlAh0zzlXaUI2yYow8egZWVPX4FTXow9eF/Lt0b+ejPHEAcKBPF6GjocLHo2iDRDQW423N8GFh95+eoWawhAfEHV0Xq8fz8k58xQ2Edtw5LlyVaUMs+m7ua7Dhp7mo9JZ5AchABwgi4UJh3DxLDHNP1U9R2Jo+EFrJSpxYZOqd2zaL/TVG9kXp0d5Xj+sKvOOWS3Fuln7NJToCxDeBx8ALHtoTIANrIGsdjXwF/I8khWbKI2RSn42SjTmRibXZhhti0rBbU1zvEOEL9A4LsFZJ5d7q+qDeZ0WtDqAdXHT+3pam9rU1aZi0mxc623egXx/NX6uiVDAejtorWSw7x4dcVutADctydCTKndlBxNnCeq7bSqRpC4MH1Y5xTJjWNu3EY/noaM1pa4OKdnG/nio3WZ0n09ylfiipmFaxtMz8qDlJ6Z7V4z6JWYRjNv/kXK3PYVC1DdpGV7CvLZbvOPeQ64rcwD6ycAs/ObGitAhnuvynk2K0/HJumVcxV4V0fTypW0kPbTJiuP1ncY9kr+4GXHTFfxgx8vR6Eq/MXq6ksc3eKcWwot6FnjKZxWm5DdlrsXfTwzlHzDauBJXvUsKWui1gbbr2Nu9GXG/WNkbO/Tgw51QcjZRaujAP1ufKz5CGk2LtHlObYPZVmTnUk+XUHt7WGmoYuq5itMo6RU/gsW5GRYnUJzhXYJM7aZKdRBBYMSuoWlg3I5yiVmjBM+cli7NFU7hyV2ZHuDcu66lTQdFa1uwt5nVXM3RaVNjYoiaBbXyIZ+o8RmGLALddlhrKqqto6AtYbuq+K13ZWLxIGq6M91PMxqRKrG8Urx0FLk/alYdO6GnN1cqpwvkWEQJLuBVfBnFFWsly3JB6BpKAha39/UXSUncy1AHD4NfNV66qqlsaGk3MUbMJrUbFrCaxL4Y37R7nzlXd6ZVOZ4hT0Z2ExFx4jGrW+uGdqiHckrywwiXOfL4c+RDrZpuo3yLigaOPMdBuqHLCwtnZYq5UWifCDJ6d37Cm0fy4xvUVsit56pqNbCjeR5cxMx6niC6qmgh0jekbBL2SoWVhzCeWhhq06+lyGvRg4QTty3pOAg4BdoWvNvrq5JT0wuERsQ5Do/8JcU5SUL116mCo0bTgrDP2Zm6tT3AmfPM/mqfmYLmvEZoNBdW4gSggoUwU3knqM8sctVf6jZy+TPCscybM9DteBfQIxI1turVWlkj5T/8Wq1zPhHonGvxx7axMtAmlydRZXqR722Mn+oNbYeMT7Rt/s8XJuM5Ca9gSW4EAt7DshI2hwa68Kc1aXKnTYDu9ou5Km2V0d/VODPOP2TS2Jbo4kKLg/Gt5a/vTlO8rOZGPCMbZVK4UyPGaFdxOWnw6s9VGFNo9LhfEjPYlpsoN2sFwfzQ72WMf0SJnfqjxwuIyzZiySshOlRlWRdnDxcPQyZKUcq2lAEG7NvYFz1AkaSQsWqg1k+blSiIfW3EhRfM0I/amujKeo2vbEw4bj+cyEOWHFTuaJcxI1qdgbPSMO5dLdAhuSgc5dmbSfQk4byCtgDlXhSnx5tYiva8GAB0VQRwFPTFAc+iz5RmMPMm3aXaCpq3mE61Q3QzCKPq2v/tOUpm/MMwLZhz1Us5zskpHbpvstYa7ShMtKhJcEitqWrEy+3HClSnI24wbOiWROuOANZzqyF1Z469TH7hbTyTdrgpz0fe0YdQX3iWCOem7OyLwUeIfjd2PiyeKHlbpV89Q+cMw2YpUVgtgpV9PyMjFoO0gAvtnrM6e4/lsbkRgQtIcvsKeJorXvZiOp2pTtNGxk3VKhvaBUdO9ZGGIhLOSq5Mm87Zwjbfxtz/ehaf9oP6WY/ADxMB0btRecbQj2CX706rNcuGB0moDq/tKyiWqCzbcWJ+gyD2qRX1nZk5prfO55ETHXLi3y1mPo/aM4meLT016GQpCxhb4LuNAJ+WPnQx0qADKhxHEIcHkmdDTYmqY6W2TPbg6YjCxzuU7PKRBWvmoUtlrbYeFCbcg+cnFIqAU+oze4OWDK4ohn8qIJcnQ1iV4WKftAyhRpp0u1r5qL/VWAYC2uel9QyzhGSILF16eJC9HJjph3czrL3i6NOIDDaeqTwE0LRZeMskDFtnPJI5pWsPoeE4bc92Oaw7cDWt9BMRQZutibdxZItNLGWbdOJ3ImkiZkZiE3WZsbBKLotkEr0te6Q/DMp5h/iNTZZN/8RweET0qejmWNLt9Fi81yR6tD3Xv0fnaqm/qMhdTR6nw4oTmlH/2en5XBts22anNR8xhEoI2e4nCtA+uVNtY6NkEeIVlUYn00zuGJ9PQ1brR0Us6rzs/7maZrF8VgM6Omg6tVS6i1bDzPr5mmCwiAENhz21OdhgrxZhW1Jv150Ij/VZDWghPNU/kKOBhoCMvEWpNo8TZgIZzOTr4WNrpF4yTFvbknBw4mYT/1G85NNzByhTn8zqPrjJLYeaKY8yAVjv4uQnnsjKONpOaaw5CWXLO9LnIbdic1mtHRynsnYIBLZDWdllVDdwfqRdLYy+LYlyc5I1JgrfQ1hW3Q6yZstKWCZP8bEU5ou9KNNklgNOnu+KMqX6RW7N8hZn1iRy1CwtY6HmbwyU6H5erV+W4lDGJNm4QuNqGR9D4JOI97H8HvXswzRXq9yJaxfePL1XkiIzx0EJpyh8GyqTdFlX9PS98Fh4t9u2kDXFqmWca0Q2lSJq5YB4s9LFmW7p3fFH9NLzphn5XMoXlLXw8kWM0MZeuphi/AVZtovOgbS5SF0Z2qqkSkuh3WJyVVhc3lWJQPd2YUqQ0ZVZRQNBqOHeXMwRqMl0VWFUGtTie2yKrN3giPSLNoIu1Vk6kUMuz5e6PRmBmF91mQhjlY412o8yvMFWNsCjRa+S/MOsQOFL14YbnLkZ2lqXeX6cPaKHUWmJ1jlZBRwmctW2quB3JPPNYI6vBTROJg280zpF4E8wdxbvjE20co0NR+UVijETZUaDGETjzAJlIYB/NHKxcHXEwUcEXyFymzITyw56jKm/DlLvyramccdFTuhbteinkGkOBJ6x1Du+mljMvA2oMnyxP5L1SXlhZOc5iiRs8y54YLr8rMlROy+4Lt0bSFtVPrtg7uUaDBwVaPEw3DG6VLc6GcAHJLrpxCOexZgUqw++Uz9JHwQDgIBWGqOrBQpFcLZphXSdMxSU3gMK8oSuXGNxQxBz0QYlgC4EmBNDKTSTiPO2yFaiyxQB3WY6j7mqWyhkYlsd4I+/QQiwZoXzPYPFkzM+rm+nAtr2rctK38ZDxN3t6Dy7MihrZqr+3J8qyaveZTs+0WorfKSalqjjIHJ9rs0YbgV3Wj14VhqP3RX3is3ZeZjwLOVmj1TrJcZ9VZ4Q9E1xxbnhdAq2ro9CYrmJjJojosJlm++uZy/sNfCqPn8E1UclwWYMEv+yTD7Sg3m+EiEuZmCrdDpgwW2fWFrrjX6GV2Uk9gdtjMs0kidSPJ5TUbKbmivkNW8ViSiU0+gsS7Z1R583pVZ1S1V0lKw9T7addHwQtrmgzkUZ7PnP4tTH713tk2SCcyWwrPXX2vfQtQPpj1qb/Jzcq72xfgk1zu4O+dGnWY5okk0UFIyktWyXTy/F4w3TaBdxs0+cWzfsrsht98/2oSACzXAYQejRNZS5fbx1nyfwe8mgLT5GG35/QieQsSMTsZnqN6+m8L0qhiTDRz6FoYCTGaW3D00tKZWtz2PpiG86Nmrbk1PpqcFKN66+LKWRhfbCncNgkstYOEp0iFUWN29XDWVKHX0t4CcjrzxjETdCDmwW2aeV6VD2Jh/oi+JDiOarxGlUKiRW678a6rtmTU34Gm3y1TVV+Xbem5X/mMCYZm4CFM2b6CzdifpBNmGW0jME9u6NdD4eqSCNCF42BTci+qZTTNSZoI2jC4JQDFtRkLsiw5pyEtq/nLoch+G80YvpfliGNoR48dz9AWqOrSGVmtYsGMH83sX3W/kLeY+iEYuEwFh7sby1uG3WWegcHT/cmhJ05KGhuvJKIY9LQBOb/f1bqFCPKvlls80rV3LXr16PawY7E7pZ23VCZVzBLhQp4xDfPIYEw0GTYp3coVu31ExNDqWoPinyUIq0/lnJit/sZDnw1xaFh8XfOFkUvEWvmUpA34dozJjJN5JLMEYtxINwHAnirHh4R82sDmD7Jze4cyDjVFtvvNDWeG9Os+6JwNII16+smyjiqyOj3ad7sbpeknvWyWcevwKi6ezDn66HgvdMtunHQvlEM4LfoBSrSsqpQKJxKpXxC9zhR2BjK0Vq93XyKHz+DQKFtbKx6ttMzPuhHJ80KsJvxTKJqTTPVyQ7iP0nK+MIIpJtfIpOT5G0mMN9e4QohpNZ1LUR2W2SKOSuGwLc00WnOy3OX49CYB2O39CLKZ97LMal7bDa6GLydSf+hIKJOTbT30JlJjUjce9ir2yeV4oFd68ha8ksradGzJgD4H6t1R5mC0kS5lJ0MGXFGOMilxatojO1nd02tTUSei8SJEpXWHSbO+2X95FVLoy+82yvFMdqILSA670S9uSrTtVW5mhrJd6bFzsBAmQDtHUFnA9J8CZVcMQ7WtI80eWsM2oGf6yG89s6ppzeMDqaWNonbxMsqAWRAs7sQch/UbD49w8QbehaLZExltytqpYN6lh/FjdUyymcIi0rOmBGrR1yiB4BFtYl0OGQ4DhdBVaMPdZnJmh2qCZWttS1jeU/s1Prv221e2XZOqnpaGGo1Tbubez7A50PCXwFPFixncnUy07LWCCS206ud3UjeqB2vQhGoCyO7e8FTPOMfNQpmK5n+1AxGzDcrPaVH0yn6l4/CpkRq8taGWtzAp7wlyUyU7hA29IzftiTOuN7gP1pJVyK8769g+mtJYU6c00DO0WddyBhBwqtzV/ENriO5QtFOJvMm2esVG+q0KJ/8CmujhsB3DbWOc8FYVjXvBDRsEaJhPkKADAjV+NkyhOtDAxENVyuNmzWeSbNhGQNCol953AyWWplQapqBchgrAMVBHdqS2ACdScpuEa2Jdq6PyqlFdQTCHmlQAyVQ7jVK77R4ybctBYjgNLWGESDEAueT7f3uTzk036ZjSsu32BnfIa6V9t3HEmc5j0nW/7zODHhNFJhxb2drPT65Nq9RlQGGp7qZ8srTTm1oCz64TsnSYQFNM8Mb6G69YkCap4slGYp3KJq2gRq8Rzk7gKnlZugNKIOb4XDUVRuA2xhXS/tqS11dsmvRku11kDGSNihwZtFgtc8twBzWkXjcCwZu0WFYVegfKrTSk4gKmqOjmsuY9laAssgaG/Cn1egY7CVvgmLUPGHVVMU1aIEsueAahQqlvbWFNVzpVFLRc6YV+KRsmvtivlOhLotEuUZY0BDoyqiU8WHHtCw1cVT08BWjIdNyG84jYXOpv0IzzrsZ1pNGCoo1TQbIBPABERyzhT60xHDqdmEvXnAl2Er2tek8DDUVfurWxhVR1MahW1STXI1QeMnQ5VShqdsWejM8ltdJFL7zrwesV/evfXLIHg67XWR6OVjKdmSZwzGJggvXl0b5K8iO1+mzNZboE/T3ZXb4sB9W0ui5djpB0rEVF70j/ilFlgrttYq23r2afLMqMJ1jQ4lDq8qJkb7UxkUTlwZCrvOt44xsQYRTMJIZktEumOj63QGGn+XcK2Rz0IjDRmv8MvDEDerJ5JfMUxq9rRnSuNVb3gx4OYZK7khfVd3sobtRtr8puPqty9unvMLv6Z7yboRYXDZLUZXiP3XGXRcVZxLU81E/izO265UO2zNludqjV12hbaJd+A9+M/0RGxYf9Bsn6Myl4CHKR2eutw0N4fMgscUk4BSUL5RkIsFMfNrL/9ZY117KhFZ0jdxpO0KhFYiKdemOeS9Z2JYLPI8+GxcCIG24rbM7lYTPg/CHe08LxlekE7HtUR6x5DpDzt8cGWmKgNXuzsziW76u129GXRwvlzuceLBh6Jl9TS5Fi4xu9tZex+oZ4UzHE+YU9e8dk9QM5RFTfKevlZtS8QZTHzPO5558qbqlFPaz97j0orPMmWlTmzGWLTeiVj2g3/U4lKtoGhKQLMRYXTV0meXwNii+ucA81H+b+NLe9VLkcrkOiuQlGRfTSQh27MZdE5eaDa5c7gdWMh2YnZ85y2+uffIrnj2vVSk+9rpYuCzTbYDu9Zz0wVe+LvsVSw8mXaaQbJVr7IeNjYxg902fkbfJOx3ro7tfk+TEPWgiZiaqnh6bwjKwuHHqiLZZlNwQL5wRDX0x6yLIE5osF1mqYYy1sfeGl8jRYa3mxQybsK8y2pcivK3bnXa1j3ku0csFBjgPJyNu9A1FLnkc8gEJ6mtUgOrcbKREZsKylG6zhggEulpM0W9ojpTlbue4cj2GT3PgDS7hRyqZV9xs5XOeI7RNb6JbTbSuXdnN9XgbXObQVmPiGrl3TnQVJpBGoL2ZDNr1GVsJdamlv17OzmE6wzwd6eTHfSttmAISNo429rgpioa96jgtgiJx5QpC+2pdtK2YpcsO0mEEjN9D+xmHExjfpoKu9159sMo2JYILCTFaGewVhaH+sq66qWLHJ6Q67Q2SZfWstg2sI47f7uc2qbV6drtafpkQA5fdpoj3+LZRCSefpAFvPPFgi/N6H70zcgku4Pg4CaaX0rPLJP7Me5FsP0r41S3yu5WZiQTth6UZLE3Jkn2JdDZAMq+BhxrsgQYdxxIT3JKrzLOOwsq+xurxTz95kIYLWNmIbzWLeTno0Xq5aa0PEloPrJk6Seb02Ln/CsB52vUvXJ2ntmyWcWpRMUXpYMLPm5WV62K9rPaKEWpY2rYUtquGzXiF3GsV3lVd/XX+aJivbimsb0lL2IO0mIKR3qwN6VSq9hoh7d/PZhSGTLqkUAHj1Dh/dAyu1Vskzw1U5JLAtWjdDV+EfY3TVoGSOyrYBKRjG0Zh7vTEr6djShK25hgyY5bVvQ9x5QeLT3eDVyz8DiKPNbiZYmM2k5tpCgrVanY1/5m1idx5lFrqkGWnAmv2s7FIz2l2m+o/SPltYNXykvCK6I1NG83EiBIOtlnZ9Cck6BVE9W73rY+LBDUWezb8oLHgzHBbZ92ot6xtz2GW6ZqikqVz4JGZXC0t3oF7V3Rt1cChNasWv2MIapBtbH3DhaQxfzY/pc5KOpgvCwtnzcz+3LsIj23Uu8rHbEb1ytr4ZQPdtwG6/I35RmM7KQS7GQDtk+DUHeYUXxazkAkRdNXmmGE7IHDqwnVO1bB5Kk+xJTdJN2m/dxidVQtl/PmZzrRq1YxJ14/lgb1yQp+OqrdpUxYPlB6GRSJclGR3BZhkqOPmy6RWz5oGp5jH2+Uh/JanZUGi+yGCoSx9iX31KJ25Kck+mRRYjObLlcb1c5ZziKdnBp3nFdHsYvUQOZmsyBOGNmrdEoV6sIa7U95Qm1uBN7YusVPnVconL3DU7ZUf8g/Edo1PFdVWfiVW1+94UnKdVZyPDH4At6bVFbym6kZOR2LjbSx04qOgdffwphZpw1TpWqr1NO694/spoA7WB4Vbr0U2+0W8oNIXh8sjHq0ZsHPADlLYMBjsMtP5oVrSv1eJaaxStfh2QyJHi29MpOqoU/thQwDILlahGx341SJLRehl4F0SeVmCTvna/udNv4cVp2VlEsDcS22ubg45CfkwK2LbRdkyxVwSvMQ8e2osm2mtTsTY1cY6xXKWzSvIBn+0qRCuWLYp3MfhQLXqHfqTF/ZoSdFh4bG5JZRlUW9WUmFG3eHDsMD2UbFSQKzAW6UI0xSLzw3Vk6mndjTaKrfaXtYCbwu4zlEMb8mgVbNlekPdOy1FY9zEXOJiI22jgiE1O4GU0zBFWyNLcp/g22PfvpvSD8Rx4wXbznjpoxJ/rgl18oe1rzPD5UJrS1tWv2NRn5GPfBK/qLbNXoat981LJQurN1hWm6uMoZtbDB3B3Y6xUpnomrPynpDdjU2QI3HR1mPaKchlnDdpOlVCAzZWToPQcYX60Ci86gPzTI1SDsq3aW+KNBJ6zwzNGdjtNLMnqRxS/Hei9qhiQEfWO9HWkBTlQ1bOs+OIXaj3fg5/JDuPuTjnep2kdn3fonI4ME7V1anOMUfjE3Vm5jZq87SnY6plpubz0FSn9BzXg14wrdvFhzosKSYL8rWM1KNXKmVYS6UUgben0FhGw4wlN1Yx1NJukc6N8J+gd/LXwYNaQlZEFC19DBYmq6gWrKtJf8a0PNly5+0IzzVTXDM8EVpRNFsBWG9SCNdlHLx9o3f9ypBnEberWSKV1lNrLH1S7pWvAzohftb0LJZxMMTjFcQDNeTjgJ16oaYjN7jhMg63fZcm6KGuY4p87WGwy/SeOpiq3zbWiD8lTFSTvIcWqhJOgSZo392nGYyDXJ2ur917t580N5EmB0dQKdU8Dw4nkwttGKWPqgmuVfrGOueXEfiEw+NTPSYQRJjzfjYP/8vi2InLWH0S8wI5sGVwMjlFF2rNpmSJ00dL5cvt/AhzjA6VOnnRw2dau3dP+m73fGFJT/1INCYskzx0pOGnTWyexZxXKbcsjAFOrPdYdCettPMtY7xrcGOOAA5/hvt0NUzbhoTAUmiCi+B4QC42GnruAjAGmUxKoadmrXSwVb1g8SNulFpTL4dm20r2a6wcSVug33ZMZscaODCENCyao5/vrHLIWLKMosU6ct28+DuAsj2VhvMbdoXvKz365P/DLLvtw1YT5IbtXtFRJa8/bsYG0foYiQLZUZAP7ZIhuWiv89V22C5e62h7D2hsG9J9zVdkkeqlpa0pjCRRTO2NnsPN6BuH59J9zoebTBbr9tSZmu+70vvkdLXyXNpXrzwqFIJDDhpmgIzI35etqPjV0sDSXVrf4IkQacgyzZ5pNc9+KDW0N6CkUByt6ONRPONFqw1zYybK1rJUO6PzGRVrXDzDRaYHN76VPaLEeFkanX7RbWsC9O173orlxgE41RPaz7iBDuDuHbrkRR0P3xkCkMXI2164xXWntt1hQHgy0VQW2AMkcabvnO+BGufDjdGtgS77RTWkL07q0tS8e1uP9IEsfDozNr55LSp7O3+IiRRQaCs5B7FiMdg54HQju1rgJPiC5FdtIxpN1rCvJXZ3Nho7y+NSN5f7Q1UJbbXO+9XCyrEvhVUExk7stW2feXrziln2A4M/v9h5ANUsGUKyXwJeRClFxUDvSa0VsRt0QePzzctJhpqPA1Y7kKxAu8gXFwvrtaz3wHhc0Wbmhay7stlGTNbFor3tOjGLsww66dCdyocbx7TGp14TbJxNvNSPmMY4ICGvGqck+A1ptGNloEd1TKMxAuauVDgcuyTrX1OMpfmTKzBQxi/6pYHzocrZIp7bSpmurPL0bN7bTrZmuq53LaZqLmr5JInkKOx5u49SiSRxYKkDr7dCbuVT7nZ7hk9O0L5at4CRC+XFtKp+mdo3AibvPM7TmP9jR9pZicvEOm74i0+VDCos4BhfGtg2b6V8E+6rjQ47ppSUOVKblerm0FKBi+pWUgfKiql0xClChUEfbBYQNgtkAFlv9+B2QZtJ8wdRWsxnyOc896+A1HWvQWIq0BUazTDKih+zjZeQZ6NxeNqKj9HpV1ggqzunLrxFPrd1j7i6sF/PfphXkxHFZquSC0GBYypeLjjD3D76+ECDs6VLzAslktCwR+G/BN2kl1PfQpNmSM0ZekKAMPBu/2M2HFRZ2z487jB824JGyPVw2rWzOd4E2n14XFz/ta5eVKhJKg4iaNp6mFIfLylgtTNkMZHNLovuO6HWlOal2sDwmJ+yhrW/sdVhxhjzSeV4MgrzxOKkTG/psTU3NjnYErtEp8aLRvlpaUkyk6VLdbaOdMHAbVXL02P8ZHfynoO4+7fA9jgXKZsZvz0Ix+TgAwI5ne/Q+bopvcMGGQeXLBceqJPxkV3718N+s+YjmFavy2F1WCxibOGNugh4bqVsz+TnRjMPxBSbs2VQRvfzWnoWpcEmu5W3Y/BiWPysM6LWqfH2sLtUlvso2zxT61figv+TFnOK1nbI2inULVrKzp09nah2Uk2rrZZqSrHl+/NHBAUZ+N0765E2KsjF+xgitITErRkGF/JziVBOmYyCNYg50QJ52WLydWMFw0TsWS12AKFhF8ybeqdC6/pRJ3UOkWE/Tc1RfWXEsJTB/O7LWpErQemJhw2ALrss3z1acY8b1mIxtcoca6tKxVqtjtBTJgg9f0qS9K36NbnIiXFGtRvJFxT/u0yA50BT2mZXSrGutVxwpYZ6OHNUCmIdQurhWWIy9t4fRMsHFZ6PGmhtEP0/V6Phijam9NfPHea+rOEVYFDN0YZYXTbT1bng3YqmBQCSyGY8UoQmak4NeZ5KUMnBuN3tSDns2yKkVrgcqmTWGOQjcJse0u2+59/d/E6dDsk3YVDasooW8/cC/hn+cl9/koiySikjs1DruftHfa7iGOKs64wINe5hD6rI6tRM8tidbbCtV8hJhzdjplhzR/un2gsxsGR9s8xabu+2xglmidKr5Qnym6BnaBwKo5Yc8xhWnXtBzFR9mo0zU4t1vyeDujSfWlEwuL6XN6z4Ip7YTJzqc6C1Go5yxsdreDEA8Nrtqwsn8Eszs9PGlLdRhtiRvxtTaIvMOf5AYc56ufCJImjkV49iaB6Cg5zlr3S3mcnhDCOJxiw9W/hbyu15NrGRdIZOURE+3CUjlKKHpCgtVZJCKa6uXo0U2iUUoIsQxaT7YnNSUuhLx7Xut1/EpZ53d8euKwuUZUuoyRTWpicnAkfE6yAxGS4L2vRh1jExWmT2r0a4wq07ghjlYxyttsKwfybQEMSk5Ml4oLtS+E0S55KP1CXuEJbQkZoTAsYOWtQtgmGzjLUCNUB7yo3o+1jOlVOPq56Og4BIs9YzOtLIWZUnJOFYr1LRV6BGqfjac8YMNxfLJ25WW9495Q2rYXHBCR7jKw3LGS8Aea4y6hNrndowwwl/C9Uo1/bYhYBUt2wsa639s5ZBj1CmbhnCp1ku5m8S7sOtcFW9ZoGOyFNoJD1/SpAlbHXuv8Fy85nEbM0q+t2rcgZgmHzz5XckiJt54MA+Ans4RBXXV4xs4HO9mU7JbkpdzKNHCXS6kuJkqjPOirRzuOWvgze8GEtQuoAIQIsNIk4pso0mpiw2c5oAXQYk5lksVf5w0tedjkRM3i9FnN8JY2BytdNkSAbAvr5bMdEEWN5tFkERNJ1+VVkcCra2Z5wvIWr2Uw/dol7t0Vx9uzPE2k3tKGg4NO0gWBD9zIk3u5qp2glZD0LxahQtDm7p7zT05HrYKGoFJK4mY8uMuu/XErB1vbFF0Ejy3k12oF+V1Ujc9hpdvUpGRNjwHcGFh9vGFC//ct6bLCJ+K6rGCEB2hQ3QZJrVn2ER55hK1+WQQAjX0mDWqrC4J2riGJFDdGjxhQYuudnim1Z+hqw9EI1aIbDNrUwUsdI20afKMFft4ITiXSNztpORzaxaeoG9yy9FMWCQM6JgQoidbl2MhsbVrrbfFuRqrWpaEs38lEd4ycgG5zDWTBgfOo6XrVW1MlGbm6jmdcK2wsnYqldOk5DwShPclDWoAT734dk11HvrPWHqMkvk97/xcLIVaGXZBNhEHMB/qGg8bi+Y/aiw4UWutz2WEttjg2hmqiXugHkvsHZzQs70p4asSDnn1qJNt7Je9KCpPYjH7ZvFXSngkbYsDvp5M/Tpul3j1IDpwMM3OxnO9AFZutWv/smZ8DBsphCHZWdWZNIb16LdSGnG3+vSJpZ3lzshaTAi09eiJtaFFXGIo2RWAiNApegaK6VOmxW0VtZs4Nk5147XcjeXxXLdVW6KMBcOGHGVJJtE6rwhVQ3yDJO4BUXaegV4Nx3aleT/9Jn23B62uwT1trrUDSoS5p1w8+mY5vxkwlEt0VqJXX3IY1rbUL6S7A5MM11+xq7ctvPVOUMYsmsg6uyf3WA3hkm15ZFJq15DhoG07eQQ20J+voxyrxX6fwjECxfGuqcAyJrqMt1j000xtUYkuexa5bqTdOcNzGigdLHJzXXOy0811R3a/OumKHSVKmimMqt1EfdGrdVVbNKlb1brCK+qXtJrdW6JJa3VCL8v1V7W6iCfr4q263WEod716C/7frdYi3UG3VUsKSxGbO9UbdaXspI7Ve28lmhJcbdehpIKsTDp2ZN90OxJ/HbUV7bOtN7eEzP2mL9KwGFQ+HI2LFj9q9728O6vyUd2aKxKZMijBS16HU1HdaZTzwsYY7q2Euvm66oicpHKjrH1ojCAxx9nKvLiE4PpiHksN6/ly4XQvERP6w5K7IgcXlxwnSkA9sZ03eDZsgrY/JznE57UpNrTbV4LJM3/B5jLSX9rrqsQ1Wkgrvhlk7soJ9sPMuVkbGvD846L3Y21Hm4VKQY54Qs62eYQk+1zjLNw15U5gLDSh/n9Cg8kzbMNaUgOd3HVLH9P2GVyOPANn8J88yGIbozF8VmHSKC4xUN+D5xyzIcVgY9OTvazkLjMuhDvJJxhSR1TQkghcA06cLkqMmbfCzYsbMDciAB/6HKTkdAAxchGdfsC9+WuU965ZlLTrQGDGNGd16eUurdbVvVrbqNO0F6xfJJMRWuwv0CpYvSdH/l4Dk15pmuV3qt53PCVChCSdcxBZnRwl8bpk880WFtsmNtQiysXU6yn8SxRn9c7TBoBAPWBXCdKEwG18qhn4WXwqsYFPxjSf6JgrUtZhaW2rs5wlT7PWQmHEmdo5S05gkuKNl02qpLBwmfeLWI2kb3925GD9jf9Fout3gPUOp9H5Z1HNHCurg6vGlo659rFG4tnfqeoMEuecWp7T4jVE8E1EVv7usLCbedCZdejJgp56RGSpgjpcedeIVHZ9ciLsRTId0VqWcAPeooTLdpu1PXbBmWyL59mVbywmBUtfUio6410IlhwuUKR5ZnO170HTEtII1WeqzMFl4wt785hZCDYeWEvLmGbd8q1t4BszbZVW7EnwLqPILCSYSaz5oG6Hkh47jeHWN3mJc1ypGyHipUGRo3wQg7+SMoO+6SHehPjjApY5F/GcTf6z2zdfrh7oqrbUOpjvOmkW65mdc9csV9qTWMWMhpGvLLXpT71fG6EqKT9Wd0bOd7lWZNZFHSQMMa1B2o1emQKEwEe4koDDchoh6wQFXIeWoXxxtM14B+ftFn+m8j13wVDi00JFarCynZveG0/WmVPSmh4Z70/FxnAg3pK7Hgcg611ibcoFckjLFjq41ssEOulzLOyVzuuQuGA7TqFubira5FoSvUoxbGriTk1WKM+GYRzTy6saWlyEQVD44js+okZ3xiZT/t9HROlndByT4SJGklVWdDqRyGErqtmpP3iwbYt0N6mZ/ymPUWj8xM96o60Y91XO3COwXdouPJk7NSax+HDLLBvt+uz8Um5wMwJaI+3RDWfah3jx5ou1noeOe7R5NmNAwFuHjqDOU5PrfKpWnWnXxkF1Jd5Q2Y9y/RRQX+zxOZCF0YBGmC/UoaTRXKZC5Dr1EMWwoy8PgXqfy+vqk7D7q5MrXeJ3gCVImrYW3N341wlQnE6YYpzJGYN1CdDBAYK2f+lRouQ0UR0sOyZlVA8RlruO2tnWvm0GNuBCcwaiYmqwQhn8yS4F28sDdBFptMOK3qAONLPGPadYIJo5034Bmt68qrm3JA9dli0bVSXVVn0X/WwL7QAwdpc1PeXNRtapWE0vIb5ezq0ALb0cTMjWZyws6ARsA1lHm03K9FWmRMv/haq7LRqYxD8C9Vi0U79NQwCqE4aPRNy6W6kLdNyoYpxhp7eh92Q6SZ3P9OTI6vyfmTo8eRp+fa7eMsG6Lj3EFjs11GvcfXWCW7qoywGHkN70GG6zS52lkVzxdHa/MlvmS8fVgNplkKpiXnMDEaFqB9R1Rq8B3J1VLIsMbaQCAsnFaByypzoed89mFrkM1Nugt3zG3VxlzkIu3mXLOsVw11BsUbKztjJ2oMv5OSTSpe9aOEMWy2MvTXdOkqHTBsmhWqrlhwkdeDOhBXzM+EAy041RUE9CDlYZbzxJVtt0zfhRE61UgYMuUeFrjz11hOU77W0sRYuqLekXMC2bOQxrcg1qFrT0HojJ17jBE9vQ1OcFdx+8aGJT361Vus0XumLMofZpm6968+M/3GSUT4S3wH5RjMNF8q3zGQgcCesS6FPK1O6eEZcxuit0P1d1pVn0oUhTYPcFZkDd0GeHZEtl7WeftAF1mlnR9BZMcTvr6r3Qr6JRjM3DDVYpI17Jc0qt95hY1PKDrNti5ypO2vYFFpeY3GJYDZ9ZpFtKTS1ekNcwHaac69yRpSwzDjZp5vyKfYVtz56l71naWcdcvhNMZ2zKhdG5hqxLWoRrInRZo985rxKYDQVWSw1ykkHeaNYzlmRQwDFir60b0UuQzpNRnZa/DVsp3Waa6crTKh+gQ7SF1dDswG8leHkOO1a8nMt/sdDKOElADjvJpyLPWtXqLQOSI7NnMXnR9b4s21tfeMTPpwEi/om1S/IMJdEas6YnCMrThV8zgg1ltjbXTt61uDmAVWhAuZaXgKqdabV8s9yejmyjs+t2SvnPV3vJtyVFinF05mVXJExVoHDsTRr2Qg63lhR3GHonyL3NyrzSxl5qblBxlaKcsxNV3PNGVFvgXKtgm6ckYIJJk4sVJqhTNodqb+MZdhuoTTQet6EuyXqaqiwVBjiMrTuX/qu8jL3UtNhO6Pw34edADNEs7RcyoM+ebjXlfh//XqebyhTCNVJYzKHeWbnVKabsFCdkmmmrY95Yd7Iw+GRx0bolbZ6im8dZpLRV7oQdB+MjCjRO8Wu/LdMXQzt0ch9G4jsPnM9xp1oPisZrW8//PoVg+/yY0DqYSrEGTu4rSlm2gzoNV0v8hhRIM+OEXlxHIZCE8a1pZxT6yrsNtsZJWCbfgdk/Jq3w+ILp3HQ8VZEOC/XapBXEBhnCFMZ3GKHDDIGQwg8QNlWHQPnVW30tXawfzPXmTNIP5FmVp1q/llftQDzuXcyxfadmjn9asQMkycaseqt1GAsKZjyO7ws9qWpZzGyGH+McKeNwc87TgGa0B77v6rTSk3cjJdmboAyrZqvwKP5OsA9FeNdvPKx7XPUCMKWVNjJYRrRGLNPXHxdOqBgoiwAlRkIwtAHq/MrPGfuYtJPh5apv84i4jrl64XPbyNdQ6KWXXPENZA2MT9ZPmcHAruFHduCDlO8GMWejn3GtY6lrrck/6ZFbWOVcoKwYHrqc0XCBzo4zHOiuJ33ukmjjyuGO90gCho5bW6Xr0Hdi6BzqUsmqVaiF945JxCVQe2YS603j15m4gG/X1wwWRwXNTXmtxKz8nWk9TXuwVtBkLgapwN75nmCok62PHRoHimqLtRkLu00FOEX8vupmDfVA3GEkyNw2e/AtcudofWveaLjMndGxEcn5ppNo3UCn3z0hh5RQ9Q3+aH+NKH4Xfc2sOBDUoynhv5N7mGI112BOaQnS4OmS0Kh05AbK5w6oKrecHvXUth+GbZ0K4V5EI1ktvmYrot5c8dhtGAmsuZJt54OUj7ZcN9vJ4bHaVoShSUV64e78uXB8oqo6RS3+y3VG0vtB7FWanDQ+o0mJylYkDjOMGEOQ1qOjPx1+8nfRspj1bUq491vpovlc4xKceS1fwLAgNoedz9r4PbD5+B+0Evjjrrp0qoGL8g4CGomo49wcSCrDdZbtNm+VlFDfdOSwkyIbq7Sj0Z2hOHCazkfOOq56h60d6FklIwWLvmlz4eFmrl0IGQDTVmvmQ3Pl1FMy9sI6XWnC95pyXMn6XRCT7W6sTrEohkawxXUbARSN666t6mo0u2WMHM6lh1tL61R8lHOsA6JYTXTILBsJUKPC/niG8I3olvUdctGU8dAMtrIbPJXU5VtRN+bsfAlesgJxAtmxnyB+l8AyyGDpSrN5VHdz89feHT5HsvhgPMLDoHai3IZUMq3nxv4S12B6bi91S2t6Ur8tnwO04hVs2CqoeMTzbvKUmYPb4kp61J4WC/PU3rq+zKABFYpD1PFMXwwwLr4l3jVHW0cPWxc8LArJTlK0BXYJnytLFjNUmIAcevVATbPTCucpvvtLpjs7r1XcbYvsITlPCbamNZnjOSrERK9/bZfSQgx+dMHXjzrYYds2G4W0j+TkcUpwzZpcSDVO1+PXMdjH51uCWUHNS6ljPDcUUYtMsFd4/98uLxTCjSUGcXHxbs4lILUxhLcPLPWv2mvRwmqR8RzGH4ZRfpSuXzPLYt9qtXZv7vKYusglxnW47t8EtOteK5aIfzCqw3FDwzpY6ICTYS2uzqOpX4Kdi8W559tcO8TF729u4OnLWd6gHKrIHhWZNOgEbCCC71OLI4whmQVKyfYibL4yZ6VdVHIeU6zlHFz3rQrOtNs4lWXfPWQH7bKM9HmJUU8wTkmg0cX7zb9+EuvmnRuJgAOIcE5d20utOgurNylv6zz9lkoO1fjOaCE+hdX8XUkjFBOCM/OwQnEz0ejmwfybAGDVHVW/dTZmc7urRXlVycXWWw07VCcsDp1Itqg6ct+auqXfwuoYM2h07m3rvLsb33ZN5oUJwTTrFCdasJR+E2ltsFV0qE6uqcu61O8LI0LtppKIvavY9tNJJ984NTo52zV+a40tCTesm3Svdh5f0mi5SLTcV6LrSrDyWTs3MH7YJlux64wnGe2WoZwGjlMVze+O2hneYTvDnJMLl4Z8rwW3obDdKf7vI1dZBLT7ceSbtbtLtnGuiFWESMoJObcaufcucJxs4aMPDCX5Flsz8BnoOP/FH7ri/51Hf3QOLkQuP/HEQL0vhODLTda9Rx2sbKluRSnLhkiPXd8chfWbF64rcnoBN8g1jUlfovi45cIceu+rMNU5pupvRKU6LnsurR1jtD7xhkMv2vUQlNR3pvInCAJbhYwjs6WWcsgFIpEjRtQapz8bWy/0zaBJqnc5MS2oy/44V31UUu9PDN/xSkrWsVHH2DfMpmRHQ92twZxSskIMc7pZkz65XttM+o5E7e2jjzOlAHcSlnVfz7yUyGdWEme7dbaIeBk2BwWzHkdn1S63StvjM4s0M6zCdJxeqI8+dAabx3CBFabqH7Z0KzTBGVpl0Ninc1KktFYu3fYTkJmNsM7PPrRIOH1yrjWUpCyJYmZ1raQVyNTD4Fu2aKhDkwwMcuW+lfTmmcTO1b67dyrocoqBURh9TGZye8H5oME+WYZAo6Wc/AyfHnuMzSfZs0CiwOv6PNBx4E6N4IWpOzR4AV/fUiB4iJ1rmuafy+PJlcR1qTVUKioOltRPbiTiqsuIk4nEjqi2BGnRH3qvmOUaWq8c6zeuQ3Zdemm22WMnn20ka1QcqsAGUJsL8DWIDdH6Oly4y/vpL6ywTkQ3N80mtI8v/Ji2LInwFpyKR22IGbRzKWV82JdqKz1bM6tFrNt6eKxOOdlDzCLHxRBouu2UzrSFqFZydzfVuB9LdtqsZzG7F5/sInOEzCrAkY5d0XfrJrM8g69Qg5xnsv/PU7ojq1HoGufTC7SdfvxGh7QMC0PpdNU3VbgRjy1AZINdmzej8HV0/rviLHMVJc8uf6q7bQQ2oQfSHt4gSKzoZANzbxOimHxixkz8TcIB0cq+ARvqWKaPI+Dk2vEkmzArTjHfO/46jnyPLmeovSKxlOb2BRniOKHe62HzYQphYwrekGv1NZcBeftcP4TR3WpU5IPq3+OpljBvWl9R2206AdcEDudvHFa1gZVKZNpVD9WlBVNrR8tpWJz38VLgM9i2P7K/Huma2obzrGH0AtpTgLM8bnQ8tH0VUZ0lxx8LC5Y8uz8K0nmTWcfU5LbdOt4HqCxj6YSX8Zb5YY6sHBZucrqfmY6tqXafYbehhkpArIh7UzLR+aIfA0iNpKO0XN7m0NW32XHdI1Dv9eq1oa2T0Ob1QMbGrWu0yUrnGhKc+IKN3K2rGWv3OVnrNlDLgBdbg3akaVpLiR6qeqTZVJAzYAIcDjOd9YLadhoWJSy+Cfmra2NvWgqzz0GJEPGHThCrzZ1ZdPqhP1jskhmNnIhPnh6Jh1hYOJUDIAVnZZ0iNpJuNeBGlI/HeRQATKDwa1dNjeGOotJ8ekJrVNUkKF0Zt6cjrWWAVei02U6nYMjFmPQIsXMbVR0yE65AcrX1dk4oyMSyIwYsU4Qj+da1BjCCRlrmyuKFutKD6O/cPbFQdPyA8FWr1DDwOuvDGDhjBT0Rm7PMdkHZIatGwuRo2uHTrFE9LxRaCKv42gOYxCCX7k8zxOoPQsjkj6+rlTp/msP355JCoPAfMYxa1Z0WCq6uMFLO+ztemKv5aWML6zmDhjdGBl8ivl6YDLK2kuDVapckc3p0TVlVZC43eBvAzE/g/h29noJxTF8GhDkwcTnSzzh3oNOj+VOnCPLU1Xb+3ms4jd0hSGj4QqJqSX4NcqbJ+MmdV+24tNJSgZyxfpT9shSu4xjaOVrAGyQ3YfkrR56iI8kNHtsg2yInhQdXaBi6kvpSZzrNBi5qxiet2jTzL6Dr1byUSm3QjbVxjsk387jb+1qDpbhMAvJjPTJlpoRmxte6rfqF6Z1prH7kQXvVYHVqcTtMGCKIxhRqS52qbknb92N5synJDhtJlM1rEi9yXnyUJ7UnzpunO+lp9Z15aZGF6lV4T3Qq7NGSJtYJO463ViutGtLyiFr5yMOWhqXKjpTAuIrSYPNjkLOLzjDosZTw3XV65EcYkZEAnHWsvMHxjU4vErRs69eKy6tplp0In5Eyc5U6WDjA3bhBMxqFnV6N90Guy9EOsU3urrIZJKdwD634shuVlnlzDrHw4CF2JUetWMubbCMykbG5dztOJJbDkHhYXUP4Yfe1pD6XjCpCZsrvyJ0bH3kzP1eBo7m9bwuobk7+h9HbuvDi3uibJDJ2JaN9N3JaEm0oJHogoruFFMY8aX1H1jT7Ts8+vczHMvqKjW2f6/12rU5IDwH0PrJWGRRqeifrm9JbK6VrdzQW+c86MZm2Z23HqTZ0tgeuV87rDur+uPD5R+MrH6ZcnerDs52tpU64ykX76MfTfcnqgyAt2WYWLwmWsSHALtXNI0u/LjccMuluM6p6yXehMLHV79sFHVHlteLCY4xwqfXbAcRBJXJvSCVj1OlXZl4ty7y5j7dA7WscMrbTqP8cwzGhO0xR8XYZ15UamzcUJ6+0EwsTr/x2iPoHXDaZOuQc/OIererQFpOc8qZGz5vOQnvgx1/NpRuNd8R6v6yank06uanxZa1o86tCIw9+sN0zWGnJJ9MS5lTLEQYdSfROFpeMrnbZVcXE0EXBsz0kYjSd71GBt/K0NSId3SM4OoCeT6n2jGL3pfYqsrpCDCmBVRv0z77vM+vYH6huiFARfo3D2xnJQzZfXx+KUjWeNyuTDn/G1XRWwqdNzxk9gw2kf//WYJ5R39aoBGcvZIaUMc25xFDy0k/a6ILGdmv93W8M71stlE5GXHKERvdKsD/WAD9Jy2oHkvkemgHXxqb8WSSUuq8vD64fEpwRRWM1N2V6+H4ju2sd3WbUYS5Tu0eMgfa+EaXrWcbr5PySBmE+LLq2ghQwMDXX30Il+Feqm9MrH+tOx7aB14re6Vk4E1rkG0QM5MBoWF2+dnQFNZt41w06ZmLOVaCkvLJWidstYfXmTyop6Lr9PJWj7pxiIbeXYr/1IGUyL9RuLTMNrvH9avF3m8kxOvWzXYZY/cjyAWSpav6ua+DJJFYCgtc2Vpy7WQzpMVzRnkEEimG2FUi7vWZ4IxzNaE8te9anqK0Adnp2uefWcc00am5na/h9WuJy2tYoGCdx661HM/wdLhyRU6UucObRhj6n5ui3DzdqFokTX4W4Pbci5Y732Qs60Hjy2VRZTeGFme23zU7dwL1HqBbzFezrLr03RUqDL6/hURfGfFa2zM8jW7c0AWJyFY3nAdRG0m7ZDXCpgOsf65ryZJWzwY5qbTYg+cxQ4lRYMO2PzbdjcDq+Meg3nJcj/Vc/VRCNA1OHn67XOchCsYkZu3T/C6Fqg0FLm0+uOtZJEd4fZuH6+DBQlcwrhbRAblvZrGixdRlhJz/CbukdGSelZ0jlsQoUuX2GxhqRJOwqfaqdeL73qMbNT8YzOHdnePetcsyymZRCNK4mm8a68Vn0nSXjZYizELpjInEdOoAj2V9XM/0SbJqmggyDkXrw8Mm6Ki3kG1pfNhtas026oXuSMsVOswDIoFd9GIxrlZAslWmjBdRAdgOYwYakd6crChW9DVWbouKMGbE1zKnKW1xaswQZ9sqMZX0LLb62sqtQ83j6w2P/aYrTqA1+/vKPeudgs+bEfojR+6b/68zKbrdIbYmyd8lCSJVCreutVAO8cEJGqoz60Sw4G5T7i2yH50p0ippwvIptlk9XxzPkpCcdIW4+TSXXuuRMarmKMd4o+Qr6rFSSQp2EM6g5SFH1Di8yZZtdR1rdlB1L/X6J7wiiqWt6Naf6DAcc6O/P6hbGdbHQpOmWZzI6eXQPNJtTEWw8QG8Yx3jGQKLRwzjC4ponqOzdngNO+Y89Tin+rDnbAtMF3uSXNVZvtbpz3M7mH8Wg6rl4pktt7c2QrnUWiJk+bT65cpsnXTJo5CjiiB6jHcskGaK9JiqW7HcocR2HDW7LsdPiryZvn8W95tGo/y+YUMMGw62P13vGvUE1mlVhuK4ZEerjL+WSunCMtl47J404WYLN6Jt0gy+xUJp2PcaGtKjSGg2HbsDeBCz0rXmaq8lWanTJhtdVtyhRlE0LgBeyG3FBFnuBtSdEHVsFHx4Cq4MIRqmxWgaHAsY91iwrYJSaerWNh65C0MIGkUXXsemN3WP45t/MWxuKMIukvrBh2aA2DZdimJiDbXENtoPQj3ZcnrAGuZsIyUroTCLs4HCNCh3OSaXMgmXOgOm34Wyj8SemizJ41veo3AgnD+MKI6N6E0SNfMW2A5YR+8D6GzTMobDiKvIAJlgF8/8+2b3MP9n5/x7fb2o53xOHdykDepdiJyUEE8tlIl8G42CbtKCNSLVgztYw17R9K+Dg7rVCzl0TMvcu9i9d1RZ9O161QVqKVj1t4DTycS9WxzjXSc0WuOFYy2V2iPD1OiZSUrqJ686vQtFSHmOwVZi801QNdFjCD9fgYylNYd/qEp1OpYv0Dec1K1aXKNDHzZx2snqIQVw1immixKOFujiylZsTsb2sCaHwN8axgnrQSWjZipnGYPej5/WIrS4o9fiaK+Wmha00tFRcdWBDqsJK1pF/JCF0G4gAoUJqlo036ZWCNK61jFGetWQ8jxcPbVGLX/BkFjDnNdPeyfTp0Q9zX5hWoub2uaiyLfZ3PtF8Z4CbUssQywzi56Pc0ZvpGaioslvNZ3emnzFNDveg3TFwliipwoJVjY9JPlO2zTHBsgasi+a7acbxOzVkg7TqJdyO07j6rjkegfM4A5jdSrkqaYyLrtOVdtVORaNuzc7ndVdNIeG1TSzVSBJze07nG8IJO8q/b7TnEbV7aX8rKrlBCEnC/lqJzLHbr6vr5EWVCDb7vrfYr0tUpMsp6GnYMyxjvy6zIuadFjTi1PrNOYBU2R19pWr8t2AGqscxVUemg138bfCNH1h7kbSm9SOlOxxGvvC3/1eZgowzuaz3QXkS+CglWWcjA4NrGR0eYWQTTQlpavrc4/in7O+p6CVN6J+hGK1xOf6L1r3Z1icRKFpek38tlsj13LqZsSWSeFWrFvSeaxya9qWeTejFH/NOPpmWVOroXjoSUG57VtcGsek+3CXHAWlhkBGMG++6RhTPSrp37t6+ZLUqxcDd4oLsz46o9XPaB6A6kyZHqsirYlKtOQNvTHJgwZUhw+S5YrLWgWGF7eGObIlwa8aOJzem6Ahwj33re3UBjU5OsUXFj2ksxeSXfLtLom1LxxWVRpBqFf+F3EpYvz0gSOXrtC+ydBqK2g5iJTD32fzTUKyT/A24vYAxM2DFsl4knFnaeyblFf901qxWqjLV+s9D0pHrrCD8qhIwqsIBriWMckXRF9VwGbDrXz1fSspEFnKYMeH2lYdbeJtA+zf2EJgD/IBsgE3G2QC83NQaJHSsgWjrIgwXk03RC+bklihlRfGdc3OXBPzhBUJN9pt+nsCx0SXd9MN1HDrMAkenR6ojSc3esuNm4EMKaGRqq5mfMJAM+jr219Sgl5Ta7Otn5ZyoaZE70+vOuBnWnAWtllcrGJQMRlWkp42CoWkY0f3bJQy62eeX0wMlqIDKmnUBXThPuObneNiRfz1JrU2u115eXqnQiVXaauNj6zcMsc25rMncIenY0GwHHfrUcppEbfjYbyJxgsbAB9ZfWH37BuxYUCodgGEGl/D64Qrd/+k89xGNrizs6+hMZdJV0kFbz/X68fzBup0vS7QNjXp0m5YnojmCZFzMrnKT0vVj3n0cs3KJ5sYtuTu1ZJVo5uHKqOhgyrblYeXQ2b+Z4gSf8emP9MZThOnSEDoBAcc2FRzs1mlqwqWiA2rSqL5ayFnNL5cLxPrYZhAbDp2N+y5dLua6t0UVYcrMhu0QshmAefywnOEMNkEv5yUPHxrpig3Wg2D08u9O9ktcYWv3y19/Zvgzt8Wz23bWPmlGyWYF6KKaOFmtzHylV3/3P4bTv09CWmF/MOflTf1wcnEzqSN+Dec6e0VLNwSTp6DDIgNfJXQDriouvqA0oIMxtpCxdAbaXJfwKRWpGsF7eRLaz5xe7so6s6uFKuBVKc/dsTvBgvsXEVS1O/lCOnLsyeQBoCvgtE1XY2ltAmItT2KWIn45JLIt67ADQBdkID0cybqEsKH1VEnOxPiQfNdznbFNr4NPIIhk5TwhsLwZ6lscGEJEwx0ui2X1ug2OusAIuuoGkdlecp0jzrzAM8HBD+bNQBSwByHg2ru8ex5NJPYXWko+tS9lILiqFmagvFztTycJRzZlicthBn8wptWfOGxsK6TOzCmOL/E813h0kzw5Y/BzQaWmbTKuLo4yybQ6hC06g1cgbEgtmTCtvm7zh1AW1nhI+KOZdKsGcZv8dWr5RlQl8nghfxHsbBfy49G4d/KsTiv4LQ9n44NHFOp54s3VjcPQ2SGYUToYORo/FqzpSx3HPlMzCnQxEtowL9YM+HdSWGw8SCVsDyrX7jBA0bR6yFst3lphJHSqSAfNImL8uMyURSjaqVZshj1mvrrQbFZW+eildFRFIyZX6s+KPX66Dg98uvQ+vFjn2mSFW60S3KgDZH61j8WI4s6ANnE3To5UTHSSEFyijvZOhwqsqIR2gz1Rn++sZXVDkGpW2mb9KpMGlMMlj+Rn60GPrs3wJvon0cMNGhQa0EOWEf3d2mF8C0FOnzajvFi7QIj/bzo9yveEkGzBoU+w0qHaBmcE5F568rjdc8rx1kbFjN/0VRv41c5mpwwuA1zkzj4BHukoOBhb+qBu6u5NOdapknCRTlK/P+Xr1p1CtO8E/b5SUgfT+7mdwtMf6dv8tRjjpGy8Q1D2tzaBSE4nacROHWpw6IYzxJGAJ7YGlhxYuDlbzIdBZl9TdF1nnEczTQHpXt9HWw47RlBjU2KZvWfcSUmxSOnJzFhbYq1u586NmRl1SE4Z1s0GLB6mLGsdI5PDrNGxZCIKs1XGh1BfZUStac5ir53v3oeDM20ZCQfFm1jTDzafUXCDz4G3JAjdnn/43fTblqzHy2/4UpfRRg+KPV44cto1BAanEy1SPfLf3Ka3rQN6UxLS61b7zzF/56/q256XtHFqDUh+v/IFUIbnC6aH6iPjmbv162HQ+yjUWGPtJrLjrAID6KvcNeR6tsglUTt4OyWtY80dDFOgNw7zukvQKYwkrZ80RWwIiv8IdD9Kw5XXAgtGpQgk18GXNL19g5HhsoxOr8EnGTk4Q2DgUCYsOxW/MnQ87hlO0bYlePMbW6ZeMtTWuDNy35o/N9pu+bdSoGNWco089rFmMUeR7v61AxRKrPmD4LS1TcVGeHT1HkjrXBNb78cf25TmqwyBgfmJxAGJJ1kR6ujrNnOvIDMqxU2/1UXVvRQ2dSZ9xIY4khIrmiZoOUnd5u9JxnxYnnydye6oUuouoUh3nE5MvDRYeokzLMqZCbQo2FfuSTZV3H9IHTglYOLDF409vFOT/HRJOhQo0nBFArrzKGXcK/0+XOesH/W5GNG0G2BzF1Timbzk7UQPq6Te0SLJY8rxxPOU4WMLqRFSVkqpcjgIqQXF2NMdAmsv07nhb9T2X6XH0dutmRQ67jvqakvB9rp51MHuJujVE3nhpLdXHqcclNpIkDR9GdlpwvMXKRZJmm60GikNrBJzBXpsdKvgVldSugqDcbN1L5qEKmpuINfaFkTplPS7V1495/x+inYvQUgfM1cnCg8OuRFSTTLRVCIzq+Ew+9aDRg7TR2DpQRLG1atWcjxOA/PV11uInUWV5nsdtJ62zszpXnC6tKTa5+qpDOTKIn2enW0oxP4dadRCYfIy+YKY4Z2zlCCOLA16geAqXxUzOxRlpzxDa5OFdDN2epAfV1sGrQdtHFtvDaN3t1BovKGXLrK6VL+A1w2g7nMvQ2CZ1abOG5JV2Ec9+r2Pqwqcgle936sb+rhXwcQ1tHke81l/fSIeiizKv96Ly0CJuDjLJRroP6qMHqhlMF7Gl/rDyjkdB17UU5vz7UNtOA5VtgBSpWGnOxsgJVZm7TzTvwHXmfkOd9uoejNtPlnr1HTOQnJELzjej1wcBYRno0boFN9LUx1FzLAR9ujC2qCWDDczwZzInM83mu8vpM5G3CR4NdP6roTj8z0Rk4tGc1SFpkHepduO0z1G4D2LVFabPw6IevxL1yNpFX9Lw6OmdYNZoDcPdIkgpyJD2QSi6zFk6SrLCnMjsLv6HErC3ZUQayx6bS0sKGJmJ8og+dj/NB5EfKMbZeTXg5rPqSMp2pIghq0z63KDbQxvvKzTt5HIa0p+7NzLFIezvwbPWDvtnKl/diyP0dv/OoDFKD98Om83rdCOYjWoXMV9lLuwpI9ffDzuJ0w8kbJe1Mu5U3gkhpRivJucHDVd7qGq4fWjOt3EslT4Ait4k+X+fT+UUeGwIZ5voSnj2IStYR1tIfQ5TGkEzK3eAADNRofKw26ZTPAdPOFAsEkdFn5D3YEkGYN73m9lTFm5rlGws8mwZdDDBKdAlYHq/lMbxFofLBhWKOzXTUfuuMpBXO3tb3ervvQRhjLrzES48iM7rmLVrbt2gLYtVP6sskJFml0Ynl3kLBPEbrqSMB9GqNSqvtq3OywwVcH0G2FYPGAPuujfVg6YLT9+q+wFTCq+pVP0n5onMKMjG8Q8r3HqzAp8q7dKdKKRUFnFcRifeyX07V3c3yVAb2f+Df1fLq05SZstLaIH4/1OiIhuap4Da8oJhuwrCmBVuWy4iFUFi721VafAj9qVqOxkXFoMVU1zYXCgOfNv0YjXleC4MBuza1GvpuGpYKZjiLSBJJjjP95vKG2phEmOy9fmJlfJWullL0O6Uqrr3p+K29TsBgvYzE1pKDNwANd/DZ9CdTUwpPH09MTTavD6gnvpNZ1Z0AEn0E+aXJrWG2QZg0wsXNL0vi2r+Uj9YZDtNZyURmt9TJ6c3buOnMCxyZZzqrY9FhFjcuro783bdZjT0WipvtMxSOfPKyjNL0PqJl1Sn4uD2mBO1wLGuI9BVmNTzBsAcoKxLy5yzLMhZzVtFn7jBWqoVZftSnPZGZnG1zszMuns7BDSB5ARECpkaX/BxQzr9TrS0mNrdDE1h9jx3lZoSzTPlby9fOJsohtyGXAoSm8G6sPLoenDcN5OZeNM1rBm5ciVARYBznXq/oCCZayvfY2tdt4prt7NFqWF2/HrYaehYqxulm7iNkFVCiY1l1V0o3HHWWcCc5e30bSpQeKIw8E68GT495928+JwfZCw3Akw0jzKFXmUyHFpdu3JZWwnkVn+RaGzJPvOguncFWuKuzmoanQYFrOyxGEHWFNAmO+kqvw5c1r0Cp6dvijX5GyytwmYlIM834klCCbOeIPFH+bvBykIFmUKIZaawta4VeB6yuNoCmdZIOoCHe/6daHUHnqNWcmZxPbTAZId8HSMDpn0dOlWaJbXlOtQm2ZTrCrT6cGvAktdGdfBpzbDj+Msy2Ajckduugo0As5H110QBmMCmFIY/R1LPo9fSk4J3VvYXsj2h3mMmkL9qtxsT9Iu2dJKTr2USGrpn1VgjF8DtcYMGUEZeNFk62uk6k8jILOVEbxb1hE2e/C/7wQV23Gnjb/qfBxSg/ZDHroHOxRnhljxNxAvo4iVtr7MdRbCfriiIIcUyRsRGa0XOFOgMDWl4pQ2E2ckQzOCEcLMf9hZoS8CfhrbRJHliv8+2RWsCjAZos/y8Z796KZI1L23fOhVHS3G9axAL40RTRLb7Wr9cw8gEpqDMpeienWhsbWKM2Glg80ycVDL9J1JQyZO+Do70KGAOMQPJ32neSqot5/+Nx32YWPee2gEyOuFVVbjG/GDmUlrdnBGIzQEMqD7W2e+GrEjtR5ywuGtsccn+i5w/2Qdyy11cp5ANLk61qkuElnTNM+LrtL0jOeppQxCwQNoPk5miizVxOYMKujZp9dPlIlvb9sM694DOO0dSTPDPnQu0rpmfg6hwKZZnMqb5lZJpaxqZ1IXetqcuzr5cyCZQOYOSoEesCj3TcocTdSHOeWS7QppWaIuBkjgq8HWzoigHvl/a2QebWDjtCpoVQ2pYcw4rM/UT6cg4uwsTJ72krgNjlWrgsoVmPvNePBuLbX9PW/EyJrm1uU+UFiRmq6bEpedKeWoB/CBHh9x1T7oiqdi2xx8tRI2Jo83KcYGW1nAG2h018KW/+voKGFPy/8WERcl+ldeILnHq/ndhslFVM5thWR0KQFAVPyyNBYeI6RgYjPTlfW6xdAE23xnIVei3Z2PmUP+0m2htn/YVRW6F3L1aMnMxwpgM9EvLmNeOUg6t6DaO+35akwdvJaM7RlgwSoSOdDi2fbnQ4wwGbe8MXr+KvTJvASS5NzO5EVqM7OcBPQ8JYkOwfTnWv1+OVazK455j3l3mAEaPLsQ2e1dE95t2nQGfpjT00ju+h9YQ5ufUyB3rZBrJopefsgAGcqkqpGavGTeau3v/WF2r8rWdJbC/1gjZPYnSrRmK8r24Z1MySOB07rIkhlLnyJIZDgSBXmbmjTTDfPGzfmGeocYdVnvA0txk9C2XtrVE9u+a8rqzzISHo09KUEdcwAOqAI85uoEWOeoFMKqlwe4sil4ZadLT6x7JniG2VH7LRBQXWDw7amGFSrfmlSdZjdnZ+qc5Ym5T0ylhxG431R21PgXaYJTlMGsRGrq7kkmznVn3oML9uDVyxBQbqGPJXb0hrDladwjJdJlMgxRyH+zzCpVDBrfllfXez8fnJqjxyxYE9JW2rSYIvlqCY9IyGSUDBh2hbd07No0QNOgJjdqpUiRilyVIlVM8DHGfsHQsBroIqLnwMj1g8N2DS5yKfvPwjw1ZPSlDpTeo4eUTZAO8laAxN9BmCCEkFLgkut/dbkwcW+WSTEgzRW9K2JHkTf1q21QUKjqHkfaz4J6LOiSaFbh894jUyn0LX5ckNVs1v6av3dg2Ap6+bwGisY19pLNqliVyxj6ZSEa9jOGZIzezq7sq3rUElMrFeedfNhqQmEwOaH5WdNIe1oazS+vluUUbVJwbvIOuktZkKVTX1tKFX5r5j12+TMqDYhf1EmHFOjAVGDAC4IjWJsNV5kg4rnP+gMU46sqy7JH/pNt0QalJMnaIiH063IjqfqcM3x0uG4/9S3Q3naWpKd3Mmmf6lvIf3ho6Q4rgtumlEEnbvDYk92vT5bLMIqNYcDPokcJST3w1A1Npm6ZUdK+5jyvQoVqWfzso64bHOcFjxrI2563mDk+hKJPBF9Wamykk4rVKOC2BgTRZ2h3g0DiUu4NrS6gj04qRenLTcAYuJyJM6l6fffZeJnOQUXhJCjQ10zwt02p3wziHoYzNyaOUw/HTuirPTSaZgCNZ9l0cLOWplkCxsYae0cWqSRLYsUhjr6rXDnfFMw/GyushQ9mWyKSnYWADE4VAArGhObQvT4HZcnr+beTJc2+2jpC3cnF6Qc57e/VC6v+fWzUNOaiCt5aOSD9Hg7nPe23Q3qdcGFxzJGj/GQedWiA2XVc+oyaabRObl5IOncExvr81mK5fNw6aL4zw4VMFMa4FnZQ5+1qHdMqTEQOsO8GYe049/ixxx3sby31G56PHomzdjC4OwPqQiju6V0/jR3mkhKzlUkd+89o5+NjOZQZzmy+UXPl0u5x+HqjT3nbY1SB5HDs0f18qkpTOrDsz/EWbyCi7mOp3WjrkM9OenFFDMkDFJCTUlhp4FxBkU+N9/iRej0wh1twzNb9oEcNUq+kKPfusWqq1m9bsvd7xaU+o8oRZPwvkqbVCq631Kpg+P5qxNz5pYGztGD1pDdDpefXepCx6F3KCbRy/DWJpbRMx8KZIEN2FhiCLIcpgFJMJzoDe8uZBlM4kQHmPEwrGF8MTmXhNIqzARnb2L+VWXfT5pZAwE7Y/rbzz3w26Cj8qhTnnWihmrUvMfEv8cUwGb/HZXxqT4v4fVmMdd7mdWnUrbvKkzZ/YpZKljuNh9HTToyZzuaa0DqX1Z+ycl2wQK+qJ0b0Tqvt6/3wnu5tnrxio7ZMtrP51FjRcpo1suoAb3WtBE1BxjEotbf7xz0VzfKH3W5kGvApRW3VAXWaiKv/GAqPTozn5hy49mqSMBWeyOjYKGVAAMSHXVEssnWZNCmajTOegBYmzVM3RVZ4nfEUQhNzqLoVdsD5ekqfAixinCOMDl5frxtOK4nMP9khLKgiVN/9N8lrpgs/wfvs1cs6Qj0GKlmE8pcjiihyF3qJIL7HON5LR1Ydsu0Ul5hLTN9R37gid3qouzRs6COtRsBfbg+jBVDRySGVlydVsm7W0t1HoqfWqfGVGLcIBHPM9JkbzksVRVk+1Qja7BG+2OqimrAV4JZtXDadPtTx3jINznDYz1iBX1oHtCPTqvJ2kfY+l1VIl7104XjgIRt7ybtTcjcp1WnPQboFT00BbHsNR82cokqBVWjTKnnoXxy3Ta0iGwunnH7K0o0TSiQ4VSuc/VRlkCxzM6YIaUxVj5vOo+rbHIKfmpFMefy0QGg1NvKeNfvrcCishG0knd3LrMp2bboxcNQFRWXtV2urWr12W5BydtC63ptR/LoCKQn+l7hdaCWkBLSWRYupIMbpkq1VP1Q7El5juL+0U5ZLUM4N1U7gkFiR2oN1EHvEyVA5RDreCJkHeMKPY8rLDLazhPcERQZPU7xGP2jv4GyuKnledy8u4+nGMswCxnt3KdDmdRp2R5Q8NCRGpoKy5OgJ0KhwZSwcr1hV/ckv7lXx30AnWVsj5W3ty0LhaaiMwFjZmlQlOIjLTzfgdip+NmDBCP5OM1zG2Ngxpz7Ym3njva136GlLzuQpx6pkq0dcLBc2TGvFvDKqxXqF2DUkmgl3O2ocSHSPQUklse/xULkmstYBTIXBa6TLh/1AWkvZoZGHyKpkhi1cCh1sdOUlgULSsKl62DsZ+CTGjgce881TA0y1CHyWgVgCmZoPs1EPp4XrVbWi/zEf+cUnKPQUu5zCmNlW0rWITXgz2bY1j1ymNyDbN/9Ry8LEjb52NxSxLcbZadtDD3/pVVp9y0mRuw9MmSDKsgYYHqNb4W+zDbbVm0d1jxkvOM8Qei5dAwFsECun0Y1GDpvWteIiUya93yP4b4DrDfB27gkE1KxXzTxZ90alo+LkK6sBRvCyP1YwgtDza3mKn+TshD0x7r3hrskZQBvXzVZyfON3VB2NWgN03fcdkbfBvbV4wt1Rg6RgrGOzgXZzXS5Z5K4vp4+DQALrZRpQg2b+rHKNylHcyJXhRwc4WoH1ZUNnlG0+jb1oN8o3kq8K9l/N7QKjcwJw0357yqIqNiRtW/jvh7WXtpK5ylJZ6Fk2bFRzLXio210dGOmg+G+dphFRvSMYBS8v5u8CPF/Wm0eSeCWI4N9hBIw9ejro3Uz34FueytIhK4qvpiYn+KKO7SwavN+YPAqDYdvK1b5FrEahQu8kXIVjYNlxBSXGutF36Nv6kc+ihRoejoSrc0Pu1pPbjBZX129ZZqasL72Xl6pIZTD/O0PaQmtwf6htjDsDcJUMCZ4PDzDy13g42gEWO0wyBWMn1y8ZtU5Oazrx0zVR6MwdJn6ZaTZiNRBoJgwGXtcMgZHxLK89UAMyjtbg1tGFZHpMqD2tGY2UimMc8F850JikQ5nsVPy8VExi7leX9wvlyd8RzNo7W39qMJr09IjZvU83/0YAtNrQuVLG5qwRSLRI4ElS0UU6BatBP6R+cv74lZCdXn1P2pXe+VFJyPlYXa1okO8/TQh2iIsNxnZJcsCEl6FikfDT9xP4T5JScT+BO4bKfDdg4qAPmP0qe96Tivam5tynPOM4r4bLlmSmK0kGZcjNgVZb3i0MWO+G5YYUseSObG0TzIiNS8KoxZrHYM0VF4g9ejmAb0r0lonH1zw1V8zCPOnNzJXbq47L7+7JhqzRab/8hVOtmWyufn6ACT45b4oqu+SXq1DOGIbd9cBi55T++VHSwHpFWkzkMR8V9RR2SVfWVwGpITBa5Isk2MHvt+NO5nyRNnUGEHG0J4XcHQZu6D0dZOGzVg2+9pTYwic6oTCQJu6FtXgdjjYxruZsAN9TOsonXDgWml0rZ4aSq4TxUunIPGRZp16O5DDyDNmK/4iaKdpFODvbvvtL3pM0gvcuo6nUkCZJ4cmIBwok5D9lkxPSnkg9CmaOwR4htWngWpuckCJ16l6gTG5UiQBBsDr6t6tH3Zs3y4+hRPIuYeZ8vMiO6WC6mM2ipE0ZY0UGKBRGSuQw4zoH+rm0Zkq0lVOlVgIMOmFRrf7a4xy0OW1xfA9VhrcyOtSQSDEJhJb/fkBbjHLDFY6fLCD18Lis+/kRgxRR5zdSetBr9TKh1usCqwbre5rHRuk87cPsaJ2K8LUSCjg2NhYs8vJl7vRw0WWjDTvVb1zNGNcQSsOynQhyC5WJ4isBhgsa0zCYHisLNOxAQ/kBUSrPvDYeiN6NB+pknmlsoO3bIk01SkSp6Hy6H9djkzNFmn0aPxadarWZjVJbXdpUKuD12GZG0hwJrJjKuNZ/prH3WsDzJ33tEbVxendpNYi1OUPANJgsa2S1GW4DnS23/MuvdlmvL3b7EHzngp3YUlBlvNH3jz45IzlCN1wIBJGVllKxXot/S73m14SvtOmsWuC/Hj996d6H0qzFbt/UoLwWbfTTJVYCjPmDeuj04WEMzKmruGerIw+eKN09aH/Gt9PleUjcnxUXL0U0b+1cHy1ScDfd6SsJ2cC4twc9vxxpU5Y4ZP/RiTpfJSkJReUfTPOfnyx2JmvMdUxGFa9SJxR3oLuPW8/NPgu6cDMKxuBRtH7qi+KyUh3q3RIqZlHXGRFGstk06aL7Gp+pEMxGH7gASASxzhY03RjgX0tCbRYTif6qapNIubeS38TqgysCjpa2HGaRv5nXcQ2VdC/RWoizYtkbNQoEdrHkjkSJlNUoE7mbPTb5X2UN4ha2Ei7OtlJQMxHrpcbxwVlB6kPCfQ+tnmbLSD+beToM8fbvAaxG1FtAM0n25+DcZpnzL3f7Z6ZsZBWYtI+bNo2vOThWna1gOVtvmLAuj+t1k3m04LVAFlDHJABjOFMIK5PHtSWG5+I6cJuF838ZWSvTxAFOifOUJq7lP4FmrcLZ7Vv0zXMfq11OTi57n1J4R2HA/Z+pvZyREa/kz5qiQL9QVAZLAyWK7GfqOna+BA5Yngh4MbQ5zrKJKO2ME4A1ng4PBJGOUKQehVr3fuJtu7VZWHY/9t+2CzXM19YKHRAskDoNLmmVYrJIlV2b1mrJd196x6mpI888TZYvtUbGlSMWOP2LZKng1jx9oaFxcWUG0M7cUMumJyzbGHtcR7mKYKqBQTViwnHoMMa39mVsg1gZbfyPdkVEUauYePVLK6seQhILQFWlcmX5u8HVjRv4S1Ex6yobUCWd2zOxJsACsuRl0ZCUeFEkYy0vsudyODq+8LVq2LvHewztb+tRjV61q1w5gmy1EVvOfUyAEO7ttnajrGjPDjBawgTnOitau6lTjc5Bqll2baYg6y1fpj1GqHTifGW5xEDmN+Q60n3I4zpN7QUI37GTsGyc2IvDjXAwsrzn0J8vIW5pHQYwc9XxoU45KrmGRYsbd5RnlpOqO5WUr5hFs13EvjdsItd3QkiMIqNH6IhDJRzxtTL7C7qoQWoBfBUDpJrKtrW9f1Mm25ow3e5pYs1JoalX1HkV7mA5oxSHuywbpHRztlhUEdbBifArUcE5ryDDTGBhwtSZi0sJDs7LDjENBZvg3ATebo23xGWpMcKmEVcpZHt/EpMSmj1SVmWblgnlLnai17NGv3rD9aFk3C0FX7fSLxYesqJjWlQDdZzv0Sw58lzQjJnkGqGss2onHIOV76nM2RW+qo+2JYTqL33JAEt/a2YAm2bppwZNolrRAa8LVAK62mAVYjPfHpVcrn0ppobZxJq3l1b40ieMIeRTCstH9uPhzLT56Id5o+L6krssWqwwFw5v2Dj9uRz9YZds5XJTW5Ik8q+2k+cyJAUIPTt94Se1WzG1S/WscRdbVBb5sxMjGFFm84HGW1isCWW+NCeYoeRChmYfawvzVWdqzSoulA4gmNcuyuTukaryO4uhy8hNprNZwqOFa/0pdxdrLTJlZSCyM1bDnMx+WkO/W2pfr/JuKZgHDJc1OTrWQZY/ZxCDZNisj5WfRQx58ZX/N7dY1DNHqFbBM1vVYZB0TDpEZ9dt1KN6z7wR7FNjt4lL9h6+W6PGcbqpLAKt5W4qLJu4YPGmhlvipJTFDq0p0lZLk+3BvhS3nFYdgSzUpAf7RYTW8c24VXYZchI+H8fFTGV1mIL+l3si8XFLN6rRKVbarQU65W1hQeZ3sn+tuWvJyImtwcj5ZzNs4QoZeVJhlI/6jvWarSdMuWhsxOZjYp0iddlW33Wk+fV7SbPmLosrEZtc8v2hXFPgYgWFCcx9G6yA8m3ghPUdY1Ak9DS1WJi6UufIsyMu5L8zRIG/+U2FlmAwMME1Vu8+H54h69aXsIw1unowiTnjuViMoDEV5NNGZWpLShs5PqgxneVanKO7HazCzVFI4U7YacUFwu1Xzk8MtFNePDdpjGnRoJYfLKDiVlgHVVcTHEs0nrf4a4Ae7d/OiQbPK21pUTHkh9utmauTDhBM2sg6U/djUmypG2QVYhnL06QTbqQCVg9o2olg6uI4g51gbNLuScGm3miPJJKNqtsceq2HfTFBjRl0u0DrocSPaN4gqnQzm3gsmel8Q9VAp7lM3yfkCxvuO67/snce6VjOEsT9zwHjVIX1B7lt4jf6YWWqy4hbbBsPfuzTDe6hqfarEY2BAMF/2of3DGFWXJ16Sb7c8dhapvC+r1bvhw7UFCANNHOIW4smzuoms9bYvq0NrWUEvFtOlFRPK/VRs19iVwZKgs1b9bQDRlD+TaPlx8tB7Oi7bXQ9pZL0AcZqNKoETYjM2hyg0TzUxmcm9Kh1ib3I5hnl7slkefxyoaknvgyZ6l+Eipo656Y5ETV0EyxLZliNUiOcNwn95SSKu1XUcV1BDFy6DNosbrUy9CbN71OsGg0kssOtrSyH7WpV9cqlbOdWRZjKhpnEG+Qj/KlolzbFOf8kssTX6QcQPWaqrOw+aYTNCqFtM9si1Fcq4ypi5WrtRn4uqB/GlvUxpiaApyiDYv2MDeBcBgno/tIt2wn7EOyBDRknYtsLsKQNRI7SM9g3FaUk60CR9YvekRU/yrcV43HCY7uzwKvcGV0DBCZ+QrQ1DYHzPWvqegMp6VCyE2D0f47KyKaB0DtmGIDtdSupTizyvVywdRlGuvnd9jq5X118bSpMarBaSdJD/hbe3LrYk8YGnJbnw5fAYcKMxuYESbxTWSH/coudahLrn6HVTmAZTJgjldo/rTSXoXfckBaeWDGXifFZ1z/rSAcSN1Hcir+1kWJs9lphMSoQ2xxjK+2r0LSpc6whcbb+ySg8AVk29yRnrsWSOYmWswo6jo1SyUGbPzctzV7McxGiZlzXBIYJoqwp5UGbNc5YXUN6SX4Vc035ncGpJRq6WwwNYvMTqKOEMPHMTT9aIJYZp1rIe5OIzCtbmxk0I3Fi8KEoV1cDCkUR0Jt8ykAEyLxN1BzN/+fLGq2A6xhrb42rdMzfSSNqOGqH00jFjuk+TdXWR2ZJChne2SoiZ2wfGlQbHYKwAE7aiIlRC6q+rhu2Z39CmzVkxuOQPIvSdgVa2ccU2AtVA5uuCrb3u8QpmI3FLiw6xIbtS99fcUJ7vmXLqJ6GWtrJu4bOMwsZ6Mad1b1/ZZbY1KHbTCeakVcm2V9s3NRBj5dLDsnsMMUdJZrTCnSR9cJrIHrGDc/h0XDCxTi5nRutasottFarzAhbmdnzOQdaEJDM36hl7Q3VpZkovFlUxDOc6QRq6z7vFvW5MaY2iMb1MUtZeHmAqq9/nkWSG3Jvy7WC6TmMw9waMFM8iFpFDeF+naFLm/rNeN/aVuP/a2lhYLJ5nbxJT38mWmql2ZR/4OuUaCwTX7O956hLwcbF3EHrIBMi56xKvAfRFoJoCro4ws6/mkwzdZafeCxXZGpIcsb535M0eSYUk3wDmHUsIih8USiz6a1ApmpZ7drnGh3IbDqtseE2R/oFNtu1eiJcnd2gI+Um75TRsiZmZFqsjcROvL1D6i8iFJelCdDlyUELJYRFgWT07Jx33cLicRfNTqUSPj0tunAXTRRpVfX+aUal01ss0hXAN+tRn3QLpbh9ZW6oO8pR9Vl8xw6lmtTIE50frQSetnDweMk11qIPWfg4+BVfqbLTcYspsMy5mMTBH9hJOzkY6m8sAcmN8Hc5vibr1n/oTtC3Taxl3VWKajzktR7sdLBrm2BTYmhVkHVf8EjzTOg6EedZllV/RtBVA8ZihbuUyHOEyUWrynLU8WTkTJj6KZ7ARWlLiylaa9Tlp/PPK7JuD7T20Y0vcuyVG9XPDroGcKrE2cTTSQxtdfCT9nqaxr6XaUcPI2reDaNpm7tJuCajGTdTOA6U8hVjM13mY7RAaXvpmPZSofpVf24Fr5q1IXVSMGxLBlCsIPyEKCy4GB7BYu0htqlxYPm/ls9zaZvDHM4SKWPpP5DuK3VRU5fWiqdlczAknhlt3LpOXA3ItU80xR3oTFkRf566DFGdhs80foZiMTY8x1mGrXNab7T9Jl33LreRPy9dn9gnJuoXyuDC4ZhguIoTlcwt2NjJSstvFeUek7hyfAxRMRZfmSyHBp73MUCV08LbDpn9DpuB0AXJnTpqsNY16gxLp+ubVTT/tSEfITI4rwi6TpToYguxvoXS68nS9TjTOz2A6XoBjZJY5XTGs8NmOEG1smSBbQHw7TMKCNRO/vC+hUbvPBSEnpS+J1/+TNk1pxEpVBmoichpx6r6mHBpgPSiDJl7MVpmlwU2EmbPXJpxk/YdWmuI8E8zOYuM0mWEcmT1ZNxgAJgkabfSLUXNPTS+GG+/dK3makzOgZQa8aO5KFakiBjROL2+GhLCQTJortT+YVBm1YLGTsTypNBd/VIKTHfSTu4duTDxejzdDygV9zP9aWtdsCgpyHw1drnLvNNkYKLSk3Zf4myoKb0DKoyXlYthH29QU9ibimSyKo7XfMoeOvftE71hZ2IebEayqyUFFO63oKWcAzSw4PTKzfGXGTTeJR/n0CWGLJccjam9cr1DseKqmblWWzlssFTyxYKWesInKkUQiZdpoFLGUleUl2BHoBLTm/auwU/OxraJwaLnePT90mUVi/wyU/BLUV46fK7sGJlkkurjcFMIKX5py976RM03uYa20xGXoQ91hZORQzZSOqmeXMgqE7MKYaUVYoBacMvTN3bLNdrZN4Nk22TZJZKTsmz/qwG6FE/QBhrj12YckBlioRWfDkj8sujZOjk10isGCyzFzQ7mfWU2e8lnB1g8JjVksPvvd5IiXZ5mS0l2shk8hdJJZKRUmwZTFQW5TDSuMvfbSiS56sjnL2RavOF2hFBpLGasTzejF30tAxyU3lMCNU28Z6H1cxHSR1kNSrB+F57toYGSHtIKBv/bWQi4uaL4P2Je9S8hiiK2Og0sa03zG6hjRWddTvXUMZ+Drr7JKQA5kSaDXTWnlQajLcmMFXZA5nmbVR1kDiNzd6DcjQvHkHxLrjnydinbWfQssFyRQP321Ft3jIXlC380POS3BPVYWVe9E7Zx6G/BHmWayaU6lr0AJu/N072Hp7o1H87FPqUupHALQoBktlOfglOJ9TOGNXG/zJdNU2eFlTvsjQpgpksJ1v5HR6jIjTdVCpdZtNvZmjhzsw20yqP4hr4ybVVVPGVdpZ3+TDPl/xa16WYob2OFpw68B0pJ9G2PSSErzcskfycW86RJYiPrtd/Vb8nil8MApM1iu3yVUaTKMk6T0i3J/hrJY8jgKKYcnvyaXFuRVklr2iVZLnk3vmSilN4Nk/XyRG8pPSX/mSINBjVkhXtuJLNAslc2Ts32Tm072yS6eW6skD6zdqONdkkVxXS2oaDWhiq6lNnqssayeHkwmsktKaOuli+S98lfspMOdnIE8uQ2JECzaHngyt4t5l/1gA2rjQshydtZM3rH2l0yplQj9MiPnnyqTvopHLkspp1kpbIaxZO6taXWTEEG11k53doD1zuskPO1JClkOnLK9s9ZKg6E2YaS5FNFkz6yeZkwhrVZnkl32OMHEmtgplJzPprSDbeuFIDMOyYvnxPBmzBzenVKImjoiWj20vgbA0jT8G9sdBDJVXJrmhm8pq/nFdam64fvZpOIn6xwMAgZ9oCzOxqcy1ARpY28zdGc7TXy/gOLxpvqwI8BYuraUicVX66qUPEP4i/kmVldIoIXGYwsHXeKy0Xu6R7BATgpHVasVv7q77GepTHEKTHQzEX4nc1RsGHQ0qwyZKIqhsls2SDVNH7woKFposPf9mO0zF7hdydD+urUb1li6BrD4HmcIjaSNvdUoRnobZsud2vHXA0CZnyNwfrOjtSxmaJ2N8yU5fXc7XQ5Raj6O9DCdXmXOzTaFjZqtDGbSm/cnp+YwYwEdVzxhZzFSg5pmB/I+lnaHyf6p5pijrWZ7g0h4X43Tk7ObXnbOxsYSwy1pysbRg+iGXZP/tqd3jE75fjms6fTdT5cWf/I+wEOJTb+24DClx+hupok3FQOsqwRkZIntuoiZNVimQ2Te/JFaU29ZskupVI79AzoxRSwyoatUC91cXw1NSzBZQmbDaPuQIOGYnjlt7UpdZ45lTb0QqqRHgSTenOCY7eiKVaelFLptWTwCoHyIjCvqNOLopFarNHuaPB9PcefyRJ7K52sNAVZwTg+Zvn5TJuUYy4Snn2MpDBTMRezS5WZmsj0yRADax+eio/JHDm9libOWatdTupdIFJivbDi99UmdF5TSCYXs3pCYT3LpaReLMj65r/Ms2vlJCD6z+RJ5EIoVXd0Q8ZbDDjc6ekLYTOQ4HXq35GGi/jJXpPRW8RYuOf1kjqhvz5ZOjQ9xqyPP8pVQgsRUNRXDDqlgXLMiwmdz8tPmqmSqoiCxfU+X5t0b6r+3l2dILnk3Wdl4jIbciIUx9eTmvipp5l6jAMFs1ZorMIPgrlwMlqI48mye8XLO3voT3xMYEEtttSkY97SmXrbU3FEZXX0BPlQj8j6tp0LVMHpYu1fE5h1pMvur510W6nVcMLR1kZDFthl50ujmWjX8mQu1EIvRpg5LIWynaPke1NY0mqSKa2HxHvnfxk54m/HXfYKUsKsOE4wtNo86YlDU2abURxtzYvkz+zhIbM/dyepYuwZmv2jiihE7QyyAdjbXqrqFSLmw2rTa7ejjvGqsebgFy9daGAkihdSZRzWubVIKZRZbPDdOOs7ktytlhiyB9F57U2HEekiuPDZTQtVV5sK3B3SaNVNbUZMKcd42ha3LPXjdSwPJYo8N6km5anKhqfaptkuaxm0tQRhis+qdh3hJ7VmdQT+iN53fdTLh+0rB7qRfrABFKblWJTbs2toNbma9IGGCJkyEfurZLY032yaZ6ucXKti3reSMMlVFVDmlNHSmhOtUryW6U0I21uHlfg6gZTRgUwo9VEZKEDu2b7AtyfSnTNRELfqA+i6ijecek88tc5YQDcmFmkqmr9XtKpvKsmx6S5VNFtq9N+dXTKEckP8rRHJxB7Z/nqRKJktkX/yg/FMjktmKQPZJExGE2iCpaSjkztFX6bPjHmPrKmzVWEahUXk2fUb/l5OjJIOq+o9qycrpvGU3rsZvPRo0HDuoa2pOL5lthr/+xubnTxTaK50/5n6E98jmVqrSGbm3ys9v6dZqWH5bPDb6+bAE3Og4XJLN9WkTdNDLgVQP6bXd2TmN2H0sh+XhDBN51rZV1Ttlcgtf3AXWS196WB6KHdhzW4hvDdftySBkFOssveY060hcelUpyYnILCBElx8jMPcWnywMhH8gzk/FsvvTr1ZIgtn8kwG1RPaoGC6vJilaMG9rhONiielF3FiLg72pYsawKsogB4IjNjJrM0MYiEtmKDOJ/m9BxrqOqNoeXAQiER6ExbY+3qXdM8zrrl9vz5E6cwYDtOZK0eW39r4I5eJE1CeXfArNbrfz0KqW2zCvZoZRKyqKFMyL0BGkGdenrl0j2bnbJFDGl5D5q195Z6p3JRXKNsU7h1jUmGac9MuCsVcXjOPmHusgAzuadNC9Vv6iJ3e8DUjQVdAmsSrqUa1kxuEfYxETtIspKQF56aWcZwBrdLyRsX0efpATM80m3KIzuuLN5IrfKfr1qi+nAo6hBaqHL8tEysSq1haXkoPSePHSz77iSNsvJzkU8bsZNnUQ7rfhd0+2YdkkrybUatrP7GKDKvJa0S2l2bV5NPu71eTU+2BfGMBxYFy3Srazgarz5xj0zD5kUWIo5FtDddFSfXkl58jJxsPPJUu8p6FDaSwJdowWK1rXTuTL++9bzQkZvpfTuAHtRSq028LqiV1nxS1srZlZJulyCnQ0d5lIoKTvE8/skolfpgw06eGnX+Zkkl1o5FkHzJGOnfa10sb8obAHan6DTUBqCYLaanDDLEzJ+PnN6ma8CPtGkkSTSXORqDIOPhLtKNy5cXijB+HXY97Dmnc1EEYZp1Ysx1Ac48uSXBuK8k1GTqjJ0PzRBJtuPS8A3BMMw5eQaUqlWtZc0y8ZwHMF0Zc4jE3AUxzXDaHIDSfshO1HWX9f7f39/q55iMwWD8jepDiVnR/CbTxcHgxg8Dc0MZ3z0MUY0u9u4WVGdbVVe9uFKca6b1315T+vaDuhObzUN5Gor6vJ8EPQb3r3/VJgaRprlohXHimYbklww9r5yNzDU5yO3GoiUk6ypA4QCSq8Jh6mp4ZlVZMwYHw39HRlJbXRJESyM2asndZtSfJYmZIPWk8fXFXpdqcvnJb7E56ZrDVOkWX7A8KDB/uM6d8Uha3uRZGOtzye+ktAfdig7TsSmfi02FaL2vLCbkFKv5iHjozytVyRakTZVRKKmx68qL6wZYOcjQ+l4eM1A5mV9HoWqXdcL7qA5wFFGT2tUsexLDHTNUOzRwdW7QrkcOEG/T2oTdeMDDpeuN9WG/EEm+Dn0J2yA5r1zMhlQAymYpWG1JMOE/fKyrWUJm112TMOtH8b/iykC1Fm0sefvo1Jp2md+rWOJwZXGJ6eFrR38aBjTqw6hv8ieWnqUzHAXQ98IhW/U3MYzYEGpsYbppShQJsqtZsBZa80FU4l8zytOcPkuH0ZyprF0ni+TeZBOnorw7vNYzSU2ED98GhuHeON2Y2/ySiFFNSgklTzSgWWXmDINU3Uu9992+AU3UwX7pK4Qb69sO7pIvXGLEYepsK87cy1k72NAde7BVwBvFIEmt90CpnhMi0VaWfVDK5/bNeGlciTTFZozyssL5v9cIUuMSXPO4TpCwc5qFWC0spHOknXvvRrOTOWVbifeZZxXVVel3k2mlYkfqwbJkjtEUze1uRC5ZJT5/cBeprHVkRy+NmAb95r/gmq6o6uOtOvUQ44qDMmyGtXHIqMU772VrUGwDoSOVW46Obtc4yq+XNO1b96DOEuW0Ssew0s6met1eWkQUgEqU35J257lZKOiBOI3fH0RkptENaHqbOrx+OtT0Beu0uLnHkpcOguFiYkptt4ZMdUVVNqo+h5ekvQZoXf2cfpZ/y9OxJfqwNxh7UJcSEP0t2MOg7TU74UgsIc8D8qjHIGRi0jrWdjI1w/UNyMt4RwRDBEas7/zlAU6Vy2DaJKKo2egqUt+RWN9ycYNZTkxF9WYvTrOGHBCe7GWPoqV5nPG1mrKk512pRZRkjzdqV5OWM0vEjBZeFfDEC9cOZvq8l1tjZjNjYkspRrq0OjenxbNyq+ZGkuBRWg3RhCZiE90/Z8XveA6Za41Zg7JyChbBSSfT/hnReXEpnebydqFg53LRkYZb1nClIOTRP6JAzFPBrsQxQo4n30p9OiwG6TWh76MRy5QsirPxHDCpSOofh2klWZF1m+pJrC2eOqFrV1DXR0A+rG3f3DARgQrULinpiT3YNvTarUvtdPSBwVnFswyViz7Pm6ZoovAAmPNy6AWEQLStPu0Ao9sEcINcal3dbUNoYMbI7wHf2TYmOlfjf4YUv7WTeZVst7HG526mwdt+w0LFnTdtP8mLccilBWX+MspWxlcxRRsYi1NptnrOhF7pSrzT5QyHQGroRpyThHS7sFSFY2C111f4zKbBktqb7EhiDUvXfib01+gb7MNP7Ga8nQ23qrRLCpJQZT0q545rD6xlZSoVeXPCaFO+KcXA1yjD5LgL6jXrXKOUxtRO4RKVyXnan1CEthr0QhZ9YzrKM8GRUL/hN9R7LwAY3sJeMHFmNCApLCBNKBtjdNigF9F8a0Ge2DSzlgJIP9N6nyCLxYOTg0w3oyxJ2qXBltUQ+uBTBT+f942Gjk9p1DWmdQLIX4UgN3za6IRcbrpj6XDMubzu2EfnNSgqM64uzLteouqMaYnZxtA++u2EkUzQ1EJ34WLY8xLhIKzO+jhinI7+5i4dt929tU/hFi/zW87rO1Ti6GjHdUBaSmMyQFa/XiCIe2F3DpDX7VIsAbBNtQ8xz4AkolRKzx6bXjtDodJkdUqyleCguMNWx1SyNa8dUyGXonVL5HZaHq8DR9WrC1yZ9x0bt5VNrYPyfpqtEbuxrQyPnw3TW9OQ9M4uqQ11KW6HVn0x5NOwzETNb53VrqkrizQHVC+dEzTV2+0sZEBLT2oOc868zJl3VMeFo91SHsNtVrct9Y1iOvBbS90y1eiS/NZKf7IzZpUgWa1ieDi9fbZpxVzOTaaedOaB0vQAU1dbSz32ar1Tu/ljYmneeb7i16jYCbzcl5+bjJbddOOol17fojj6psZm4Q5uvg3PqkJXkIDSGgy7Glrv1LX4bsiyKLWh8jD4OsqMzUAb5XjgU2TIwmU6UmcuwClQAtwHRtbwg2SYVVxlvazNygGpjN0/H6bq1MGMUAjjIGpApjVMubiA27wZlLLPah/zqvDVb6rxqzWoNSKtWCM4pBaa+GuwalGotWlZRz09MxsBpz2Prj2zeB6pDU6paRjb1r/70csUdFFH7DCzpNYPsD5V9spKBzDU4O/mtQp/mnzNsq6uKmLHdBrSl3YJ5l2M106eYXaFfgFt1R/rAlzbxp3V0knHqhywCMaRusZiBlqPb2Pi4cLmoWYX8gauIHrYevlZRufX6IFCN+2Hi8mctSWArpboPu9UcxXJmvQCbC4zIl5V2a29Jh/jTMBVghz54VcPCRjlcsA6ePiNeIcak5tSHCmQGPEZnm41JDBlt6dPGp/F4mQpln13Znra5iS2pZ0vb/QZ192U7mkCTLWeg8/dErpE1MkdbHWbrLWV7dfKaXCLS98lyuLy6pAc3OxWTibXUD50Jyc9GT93HsBhp1IFhXUzTyE5gdjNM7sW00Bw4Kdst2p9fzHdqSA01U3mVZLlklxrnYLlffGpOeFntTkv2aLU8ZzgyL3Mvr8rMeyuPbLJ2rseE19brcEi1Q1KndBV0avuoJUlKay9DltSTZG3tQc2Zb49QK/rh5uCu6SayU1LOn5JTbyeW3MqehlsP0u76mXL0upueI1pMqJYJkjWaLsAdpiYbEz1sCoxqM5l2yDpZi6q2jDWAEsMHobsKzpecELWNScyyxAQG1qag+FOs3eC/sjYOHIbOULAqWc6HcwHj790SA4HmSZqmUJagx+S8OUOa7kKc+fJqX/JWtowaNhs2ijiw4Re/nHcpTRkKldq7YMJglDgwj0fkT0OuyVbacgVGzWDLVpiizLSUaK7NotaY9jA4UbCNQGda7qbNbO3Cnb8bhAhyzaUP8h2taFPIjthnBUyf5W95dpR+jkdSfxn3N16abQqNDz2lGymjhQlfXVLZHySLJabE8gE+TWWIzs6YXsO3GHgIqOoUzpqRJYSdT23ScrGhrdZLlwWWYsIqdlmuojRbqYkHTalVDEd78BMaDf48YWALuo779jwoGy/UuqqZdNP07qBJ0X0G+UQyJIVNOpOQn9m9HRmtaLZZRnZVyDrSrotqoeeYi7NpXmZPyrlhbrfF6Zz3J38WNbSj5pDbqSTJsXPHoaRFqNjH75F97B118HXZzYmU1GGl2gtK01okDEHsb2KxgMaVYNgmpB4S2nxovNJWGmmrSd86GqdCi3qR21DfXJcNThVOvPEVzmFtwQP78OaGqSygTeN1ie8wnTZuN9RvWBX/Zjhf4w0MUa879FrmFWLNPlgsoytrrYzM0L+kBjNjBhFvRZhmRe0DqhovQ0fJvwppbU0Fx9ud+G63F7/kymxvz5+v8dL5kxnAsRbBh0OgmfoLzk5LztRlWUUXWkp4hm00ApTUqgjuZBkrWh5CINM4NMozIEpjlW2LC5JmiTCp5volgFYWyI7+6zfqjzudALfrTqQGLuNlSh9idJeC/GL+mCg1JPZh+MzBJAyG+FjiWW12Nq7r9x2h1k9aZ2t+IyZeY6qbFW2UEDTQkZTgqrqbCsb3Jp+ZbDVOhxJr8dCHNcu+ZWoAhxTbiu3JrVGFT2HplRfA9EWKLx/jYI6tzkhg7XTpcLEQz8zH1ddyJVMbbMR6VoxJkiHRXL/KVqivbhfBWWqPDaHBtFHp8vw4ACep3VPZaEOyJNlmj0uXjdo9PElYDWsTq2UfGv2+djAzkM0/7TlrWbGLcHPpY9P5WaQ1NHvJMhM+Rbij4Nq2U0F9D4VLQTGhwT3PKvG4eN9gtecDbSZpr49M8TpdKjqmGG3qlcbiE9I81H7FiwV69JMk0uWIPNifURuMyNNdwHYRuo9eJVFkXuNYRRlbDZH2njdK1nWRL1NqeJFGkqZr2Bu0eX0Xlin6H50h1zh3wwwNl0YSN0l3U08EVednNB/rbyjh4WuH9fxmVf81XGkpgrDVlG40wGzvmXw97lwHDcoRpfEuoORQBMXq4+2cqp+6YokE1nL1OZ87Yfyg32b8Egy6Q2G34MmJ/iFTab+DL46dQFzMl57FdSq2rbHb8aUwE1CFkS9sxhW1pbPxKZGH1F7q+GsI5uo2k/n2UnnS+zESxrfPG/FSkR2gN0o72FNAyo+1sWjRjFovVyOyFCOjG6xqR7a26dsLz7SY8+d9FNK102VuQfnXzHrpm9Au5mi0jhaaVIIomlH+10rxhy05M6XprwQt5V31nqufqZbeURYtMB9pWLS7+pw0rH3xcJLTLzakO04XmlNdBhEXrHwfLFoBLTDx9yjEVsQ7ktbVrAly0kBE1veDmaJ4tjbadrz72mGTI+dFuRPwfpZoiN62lWrcj5Vuxtye0y5H9uIljBkotpqsOxGH74a0/dx5NPQgeg590QbE+jdxZ6tjdMENoa7LZsVSED/xNU144A0R4+Nh9k3/NTb622cwVZdEHUZP49N1GTebmqtU3nRy2oIUclcba24Mog+PgXHREckxKNK9FbyCkc/gKdIt6G8BK001G53bFYRJir1YYBl9qR6QqTDy3n2FyxeUQ5dh6WPWCgdwVNINsNX7dSBVp6FTN3Rr9+s5B4d8N3tFVufVobj+8NpDqQdN+2pEpclsepyPKLoYhOb37NrcK+J2kUEurPoTlsBBGf9mw/mQ/bPuzpAOaXJ5xNrUBzRhgva0kQObvChZ79A7kSqALrzbMzTMTpVd0n31cmm0ibrOE8gt5IU8vIzkgTyGWmTt10Chq4jYGBcFh0mWkwKSxLhrGrXV+vMtKdZYjP1FUZnqXAdGTfn00DbonTNlpKBg+3DZF4z2WlcQiDlpIussJfl64whM2daM/6h9Ro279gVEvVNkWn0bDWBZPDY5vS33M6k0pDja1tcLYzHor31Eb44TyBF1qsPFe1l5Y22p6glqG8N4dsrBeS/VxOZGvGK9jZ4fnQehs2V0S4UOhC8c+3snIQegje1T8k6mzmq+TntWy2SX625QXP39t/mgkcxl6UslKrd6L0LIUB2HgerUW6dMQvmfitykxoirDqDknKyrhlX4qCs694A6JvvJrPum7untDg1L8qgxtT4A0uak2FSzmlWcnL7NT/ZwR+m9BTBEebyfWvrmujL3bbNysa6JdGnCjliAGPM54ysqFVx25bbtFqwPRt3rQWCyV1wEnXm1aC6zBYX2EjhixRkU6AOofyBnrXkki+3hNVIsr0fU12Os0amTDhpVb3Td6T4NJX17nDSf7NLEkjXPlcf2JtZxDMRpuLG/eMjR7MrDglH700KlYF3UDzrpLS+GnyTiwXpwOMjncSM6wnNm01NgRpsc3JS/t7ytKjWv5LRQ1cxvGEaVLgotWFiFCAU6a+0pEaRMdIJoZv51Hx26HzRWWViNKOwY4jSMOGortPdblGHRScVLhNiRpdkLBHNraRpG5mSRiqRp7dmhaeiotJZiFTrrDkFKzy5kaS1Ap3Eb+saB361orVRzkAEvKGm8jTbr6+zCmaNmEBLQPXCjTMNmfcio05SoByClWCespRpruHGUaXdwLecG2+8lQ6TyPZUaYsELCIFlOawGZg73PsaSzNKrukmmLhxpTxq97wUwtP1XFq18K5OzJdTdSYFzyMFZujT1QVe/U7apZvTLcK5jRLMRpzhnXdzYHrJ3GlWOS9OJzdfaZtUeNLbWldZCL3NVcag+SZM6yvGmDBd++lym0zU2SKL0fGnzIzb+eP/Ui2rr1h0HGmWXSElBRBfZlTm9+z/GkN4dmclPYrSoUaNf3DMaUObh554nPc8ptnLL8s4wTSCYRcffQ/Xp9hvrUksXyxIZPfnRerryBJp7aYTSWhluHPCnkRytyLtpRDzj7lRE06bmWBawTAbmLTl06HXdZ6xqE703jpnqikCoE6bA0+qY91ojriyNLz6puTT6SWVlw4mk99KdFpz5nJTsX4I2VaXw14BJpQWc7aoYeqPlyWeL8wE6yGWctxckKtIjoKS0ZJp6brA0STvD2r/ls9cEWBBMtXXiVNQxf0kaTSXQuUdMnSaVVF0fK7EFKv8+Im3IyaWeJvPvX2QsZBavytCyadxrSsmnc5Tsnatk0mhBgl91+l45+cYzxqRddMgQv3zAVWA2rXcpSJPQAGdzGMKEk7UkwUpoc3TvzflapCmn/XMwppPRGgfzQ0NPy8Vy29H++/rzeKaX2ExnzpJTT+SGlRtVKafGM3Smmr4LV6GnI8nKaassyMfqJjMR2pBU08eaQ2GxoJaGIa7tauLzeBJQrWqqmlCi1iJGi8cj6pVJQPl8aNTSn/ZZTms/dmsLX9T6D8z+EudiwlZac6OMDqkyK0hU6C2tMaDRs9wLm5VyjCnNQgXQl9tZBOsB4bZCbV5YnUpStseUssc3/NdFM6tmsxn6fQZKWgUE1K1zNCE9fh2YHMITwYlnz0PxFVPJTzV/NIoHEP4MGsOW4jAaGZoGseSbNBM2H253TC8OXZN1XWnPQjNxWUjvR/NiajwvNZfiiApVPWjUmETsLXaA4jhyDYxlLgrABlAKoLFrObjSuFi09KP1nqtIRrUbPdYW1qBTeytZa3IiWEr3zVIhhLowglTwP1RYZMiN85WitM/bRcE0tUsHWPylLOSgipJ5uO8sTm49/qrjamUnJF1VJuq/ubk5L/QZ5M/PcyYrJPs/pnEtucuKAtD28lwOxd8YMxTzGNmJ0ipviK2r4T4CzT/v5rODfYmedqPeUYCDNvxm8HTRGnkXl0JXW1Fq401twvPijkrNOsGVBmi1ZpdC9aWWfRfNQPp0iyAEFC0XQvCRKj2DmlexttzxRPUs2aSnhpkJkMGq8vRYj4+aZaem2bXqoBDHZpCW9Z2abudNdmlS6yS7Jc586a8YqXkVO5Lm1fZpc4g0CVqeqMHMEAVNHthOC3MOacECwjmk9WakLa0c02CJpsVwENrxzTNiFmFvcY+WWdJtJLHi93Uh8/XTOac1hKzArR51hgBg7tTiZrZ3NsdpaCjF1Rpc04zmSWbQrmll0yJWe1c0gSWrXNO9lHndKefGjc0+RIcwkNbFpEfjnqRioDDi1dpYy7mn6dDYmGg0tPuaU8+ybbFThqh5pBXda7ttByxv7WjtcVk2t5HKeaSazLKmmICzmXpBT/BxEaAvOXmmllCjQNXlHcJNkePy3mmwq0d5p6kjOvSVP3xOzqHzTMChha89gpj75MqQkErjSuZJVvYhzhsqMeUFL4ZLeOGjdQ10ZLA1yFqHNriS1MS0xaeoKquqKnMrTBzmeinNSaWTUyYHafn1RJ6NAnARLj9QvAWlYK1IFprZ8i4LrAtIgu40SLEFpEu3HkecgE1/kHanN2DG2xQia2QZZORSbIZ0IQtNJU/yTmRyp0UVLZ8gaZvf4jl0WU5to2Xsas8ap9u8xUZXRDLoWkd8NKi+VHa5had1NMlU4b9cOOe0d3ZxJdwtLNgV3cslLGTWLNQIaVIzjr46S1RFpd/9cRadQsofLoEd8iJ6WP3GNzgj6zMl7tLTYcGxq9I1BiotII82RNq8jOGi0uR+VY9NgXaZubtIF+i02dvj9Q1XOmti1ht2JE0sM2UwFpWH6UTTrFpbHm6gaeekKaDllMkeAtvrkuiGf2PNcWl3ex3FpDfUhStkT3R8Wn9Ji4NarNEgJaZxhvQJUhLTN6OhroqsSTA0oFDFb70THWdRUkLzt1HxLvW/zTklp9qjVJadeHXSWmiylMlpJBtbJafYVMG4n5LTsppN2ahbeiUtNKC1O/NmDuRmLSpaYyc3KplyFz4v6iVkhpad4DNmP6AHkWlpp/tNpaSzNNEbrJGkynNTNswFNsCjNn7m1trN9phIpcXVpKYM2v7D7CX9JACdbwpi6BLeFGyvL4SFJRqo/zhXuIsLotYa5eGdPjTANoF2zdDZshDxxxWvvRNWkP8MYMl8VruXBk74tsgWluNB4EAvzhxxNOPORyURvTnKGEN8FqBl4asbBuOgwC7ZfJK3tRWg7AOET4SLjt6zWtlW++1M+nsVCyxu8716M5GQ7LslyMbn0qpFXagCJ36ZoTB71Xm8IRK4u1zrHaa9HLTtk85tR34iyyWBaxU6ghHtYi2Ym7qVyXk6gz7eZOXB8rRV68AN08pLXHWzbp8U0x+6lYs97+ADvYTYUxzLk+kfRTu9BrbGi7VSZJp5ZEb1dZo2GB3FSNiCcqFsZ1qyXmp70WpUheKsxLk1tAMa16FWC0Kdb0MsaoFcBNa1WFFgnqVjRZMRs0LcC89BVr9dAwQuGwFXGrXNzhVwaYmoVux9Odca1WKDYljPvczfjpJLoFWEJLqyRHLGu+EYkvWZlqai15lNk3HK21WICrP5aIh03Rhr87Kc7tkQyIl4pAdU0+lm4/SZVqpPMPZHT85F5wkjY5YeyJoQd4sYCGhW6ZtWs6XSsOaRaRszw/mzPDBPfuu10O96liNzQGqnYpidYgOxVo4dWjP/5e2DFiOatfOBFa5Lt+55IokhbaWKB2WIE4a9vtOOFGqk2pN5snWmcRTZXlaytCuvqjAspDqLear+VXJi+HVVMtPW83iu1NvN3zvC/WXFi1e84pK087FHum36TYoqK2WmnebdlpzTwi7zSEvyUTZ/rkP1p8VDZusfPjzxt59iqwJO90mokxiY2r5im3CKaGFFsPZ5aT5CwtwZ3dLvraHy07+WsAB1geXoZ9bW+OxDBnhv5AyBWlsa1jHNSIbfdlkw+o9XqlJji2urktHvBfCWy3z6Xlq/IemILYQRrkJ3mGkGrTFhpdX0s7aQYbRmEUYUTnnN6M/eW3plDI1Xp4lcJ66vjCpT2QONKnq4Bac53NFFyhdzYgmOWWabqTJTBrGksFzcqBPWwZ+nj+SRx63LM2pkty+bm5asc6BVAW2+rEn8uT1kgqiknVS7fYaVlqHyDrJnN1jkWxcSuaVmZL2PNlu8qgRZxDLMiPpq7XO8ZZj0I1uHzSjCTudx2kNmniNMTeSa8hgvvoNK3L7t+NjgtDa9YEFqp5sZ8EcoqBSBa/te42gPTO/cWGnD9PNnBXQzzQnYHJ00meayZaZnm/yLQdzSgHE0CcW75Nnmgb2blaxOEkuTsnPNF/gq6BVCFvbU4x9MzdGnnmxyet55otjaM0tIVaHPDckuglEOhJF/dCCZ5pLmnqNj2qP0GnjEN+teqN3HaaakywQVYSOs2dWUHyqLkclowlil9+a8ZZEwbeRzUhAxmLE9mdtEFo7679xR8yunLbyGT4sGYmtQgYfslywS019sLVR1XmkxgWC+pFyi/kt8Z6jDzQgboemKYCX5XSZhla4dBFaQCdNcD4QXseeeaK0634RitP84Y4LdeL50qvVcxnitKfalVVCDIJajUt4paStNQFlQMMKTel0XaU+cOtM/jk76cEd+woHRlaUY62Z839Rd0rWv7nS2/lytKk6VfgtreljPq717oKtJjfEXxrRVp2mosvei0VKlWkqfTM56bk6+m5lJrVhjaKrSXeRGxDFVaQ54zVWlFPSvyOlaanFhouRouc3dEt9Vpx200K9hAYMp2HLzTleV93DK7aZatKmqaV2bIYOtq0pwacUsoDaU/n0gmGLIzVnen6ivP/oGtSQwNdEM71aUCnLI54jqtD/hjnbJDZgwyw+uZfJ89rlEIGlhRri7zBToX7cnfmz+U5lNdTVNESYvvrwG66bMtnNVZBxZZUl7Lxd5hK67NaZWqyZ00cu1PYuglgyVNtjbR4bosc0k0ZSuLfKdl4yqwqmUQsRmW+dErFUSXmpTf6bF1cPuHMSo6TZp4oYtEKcs22atH9fMvnAHPduknGbtCuoys4kaTrs3z0Fgx1vyF4+/cH2kH7V4pYenjsthqdEytfn7HUePET+13RG5L/P0tvuxKArV+hDiUBmLJLXFiosv6oHrFKEMY6XfFJWhjg0rGaEBdJHGMNorLzgtjKt6YQOTiVero3UGuhiwvAW6bPrYolK+C3aOj8U2rc5j98fsezamkmxXgq2uCYoGLhDGucdJiOdqT13BldJt+TWRH6+jDhUS3HgaiwTwlm+yvbwJvftLweGIySvqmIVw5iFVC9xBDFERdWfeaLmouqZQYP9BY/d0LNmhNE4jdg0MKBqUCO9B3l3RYwbeX6D181rHWbpOpfM3ErGSCvNR7qTJzvMp9uTMBepbJxX2n8Tyk/NxLdbG6UZwP2WGOdTKph+4DPfaT852jkZA28R8lpFw2XAWftL3g2Dpsp65wdaorbscnR+Om4XCMOlZeK8d0plXzjHnUK9Li2v7Ez/afxwwz0asKabXaixA94XmQxW9Gm7zrcLeUTkjDun4P2qtaoCcazBjuszm+W2q2Me7aCNa3RiB09oiT84orwlqeMgBWoia2algJqrnjo4HSwLGm1teg3suzP8VrPKyimFpB0txxuQdNUbrv69qDpqwDTPHs+6yvPXi1TqDm6Fk5g6c8N3wWlwd0nPeehXHb7rDs2UdpmW9+r1wSwv9IK3+pAm7CHTUTlqtSzvGf7eNv57ali106XG3OQ6csCKYWmiHtLYmmzEoFEahi0Oj4AMqDLa9sU7Q6YNoO63pOpaWgOmWnXFVdL+pK1Y0PMyeVjGfViem8XTC4Za/MEdFsoWpw2qV5yQFofe9zee8Jy5j/mLyq1aXgcdTlZqZKz8RZ9Z1TTrgYsX3JdMdUJ5tWRqDv4zuSAeVl+cvwZpfAuQTXnWrpdp6lre4RmgzKo7rzmMus6LurZ5WtNDLY6nbtsE82Qp4xb1bb00rxFB4S9r+5jgr+WqCZzcwaa+a67pK5ynBlkx01WIbXhq4RlmVDL/JS/XzJzZXRrWfFRny/Eru9U2ffrj5cgFOD6K/kbo8TIYBU1fzNjG0S9GoOhcIwsY1F1qTUeTn9bV+nrQN99oqAz2t++iWgN2vWmuTLFJ3iLtac8y4nviQkzmdq9h1uahbpakNyRV0NMa4kd1syB3qtGTzs7msXnHJtzDNeItswswc7UMX+bNoNIthNq/V+qZBQwNxY1vKZch5RLbSRtVzQ1s6A8N4apZim5VtX/HGMqZbELNDBTm3L4kemL3qK6xwtC863YPYXKWVsz8Klm/rbktIYHHn9oi7ytak5/MJJuZGrc2xXTG2ulqSKsBWZdYaqRBTxrzRGk7EbLfJnurbEabwEpHNHueKT7BCrPVUtgbc1Inoc+jMhWMWow9Ye5Eptt4G3Dg0lRfLL/Wds+oqVbpQjLk5mzU2IuWmYI2LGrYbR/m8kCn1zk2woTPqSdjCtW/T7Cb9RvkpArlN3Dy6lSVGhCUm6PLslGnz8RAhU0C84fusrM5cFBEDAo1H0nZm+fgvSMAYeadXGpyEKlXhqrPPRdZCo9vrWXrqiG8d2FP5q7fuKzAerdM7lNdhW2TjoTMKgzBxRs0UxkPF1s5oZP8KFlFg9cLmhoHxZvb6yM2JGqRDUXJo05L5j4QTNGJaCcDYHkYuJN7FYD+NQ0No8gocldG1ySS4bAbh7ZbPs4frvTgo2i6xbrgll8cLQ9DcdzWnC7HksNQOXtrGNHg8Q1tlbE909rabmahWtVLhvdyZzr1VnFmtMzEFtfC35DpbhKp/JluG+s+sVSzNxkAQzIDuJkPQLEWhKq3aHwlSFx2zrivjBRZqpIPqBRSCZ5rkvIW9aMr1ueEA0ydg2HZ9C2MWxKs+u6KfTnu6JLokyhYik3ckV8/kDDhoEvNs8VlhI2bH3YT3z2QSnR+OY3FqNNUNSbquGduMjKzggvQ+D70HSMF1QSvYFBsulvoH4orSorpZYfPZKcRHL1PHS/sREO+Os5K6YREuKXUMFtUot5o3LFxX811o8FqtLcrpoukwAFkR3SKuk361sRWpV0oOtsf1IqulKT031NyNHFGvh8EoSPqG0CrsOUXanVlbSsIUBETcdele/Tmzq6UMhu6ulTzdpZ6e9HAa6Rsj2K7W6BDT4xuWInAKd8pI69GWu0prpKI49pQQ8byDzZ22bAL6CbnUMnkGkLoBnO3Tm4lrifBYZltdP9amcx0U6+jXbAsRd+wObOULW8TrpGPjM66Vz439VFXH0CjGXF0266Xz1Puuk8K9HrpYSjZ66YdfMIdFnyi3QmD3qr66c3C06GapsM3la/10iZsTX/TE6nyWj/n5B2Dd9DhDdNvVpQ3SZH5Hgy/dib9LwRukKuCHrayN0ziJTLq28iavnLi2a4IjRl2jQ6IiIEZ098bpkS/WsEZjdILLG1D1Eg+fOo+/mqj3UpulJ8bqbpJk/B2uQkH2tgbmosdJR1iSnBfmVGvUFlET0ObpOxPS9DXtIJwUYigirtRfu9QW6Qg5OFumTwrtuZiBXaKhZADJwU7MD0u0VP9nD+abCZoVuk81clbp10PSq2l8ooPFX791OrWb3U+J1jrdLok31+MAwZw/a7JaXLKu2CmD8yX8ux2m03ng0aXpamB9dFEunYUzdtv6iwqJbaVsBMuM39SvCb0ZO/e7poaKWGA4G8qZU1X2JoXjscxKGPRXUK+UAwEPa5D6yR7B8gW/4xlkvJAw6y/qbGBxso7WzrzOO5f7OVTVTFEYcseMc2B3buYYQDByGtmLLq7nuhLh+Ewes6me6L3Sy5jTfSw3Hg8j4AmTjayjaZ/CxUg6z3SxOB4qvJOuSLnWQYbaKt086a10+C3pKoNZA5ja8QZpCvshilh8vwfP5XNdElaImdeVQVYuPoGkvOqkP56p9GTMaqfRuLpmS8CQR5Ni4RqbxRqVIUHya9lm9EWyWjdvdwtbXWp93vN2hAlRjXgFrBzmg2jkbVaB/S/GZ9iqqj5HYzl0RtRtK/BiwfUQ4YvWCYpBq4TV4VWo8IMmFzQdmep4lKrLgcQBKL81UXyGau+XcvI1Xao3JzmAe8pD5X09FtkRE9JFRaQ/tf2VARgx9+ViMKDekn61EMW+hHJgAcLYIxyjXbSvotMTfa9KdI1NSpVYmzJEFZ7dVtjmxEp5zoO/twrVf/81daRkh1cA7t1S1RegHI9tWlArRpAZCQtBzGoNk4LXsmtPE5p/zCSnxfOjD/fg/nMoublKCXMtQW0sxZssYNHkHblstXl/I3ItpbZWw0BmB4dpN6jMw09DRqjw5bmn4cHi+x1m3SdjpwxH7abfdF5+X0nIkcTV6tbnlxI8+R1iWDCxGWslwoebe08ffGmdnW4gZTXQClXPpcDkZ6qS5subFo2qrHx4C102l9TIbXqRoLu6Ffv0pwJdkDWuZZ/fVllnMzMZb6iiDfiDqhCMBNGg7ylc2spTNTQebTKBMFlNqGBuI760htqPWKQD4T0LZoZruQ864Zr6KavoBFS0cRjXjH/7kBoyY9oli8IyNdv40kzsEj3dVpDXq/FhQTm9eukL10U0YvK0551B0nd/2nKxsxPHdt1YbFNoC8IevTwOnk3GccwVuN/aicqbyHQuPIMl0sGNvCDDZHoBt3xJ5/jKvlFOxYvcMalw07kVpsTpaGfCS1lSdpWpri5VP0m9W7JalBtj+XL7No090aSJzCtbDDuo3QBV6SkMPJ1sS3FG/tnvWBaYAHdXYJ8kzeExbrGXuHFHQT/kRx9GmdZTT7WKJYru0HL6k3iufEe19JIu6qm0II1dF5E6pofcO1kHtId83p/9LE6QYFKxWXW9nNYvuPAm55ru1BwCGWmAalqunuC8fOZsFv48GmPyuwuaRSyM+foOv5bHfz18up9WawEbvsZxIGljR1NAliL/ZeDU3QwnRaaNNuSWM6i5YubDK01yVnq91TmxR3OxOgjRMgi4CcqFD5Pk8kSJqAU3FDqhACqp1UH6ipocXbWV+bYutBD+LPHFI1jQBrZ1WQP0JkZ9dLWuWZP43/WZAULYE29kDYZlii1wLwUMSruk25N7L8BqZD2eh5CCsqXOn86yOhio/XBEW/+0oyxg5LM1thya3KWVqutr1Obec8ROX2VPfpYpQ8UB+qkKlZCVIlwZoF5QTTk1YirYDGVpsx6qlc5cRvlgxm7/VaHCxzNWU2Nq16PXvfZ2twS29QW96KkmJRITFTuofQIm4a8P0OMWwXnRXaeLQq4jZ+9TkpaWbKvXpVmmRFybbPtsUJ2OG/eLsZ3QnRb8+9LQ+XhMwTFus4zkdqY2DSi6S+K4hGQVOKZ7pYJ1/AO8uHFgLliDJ1XqQZagtlfJgrcvvL/xsZ4z7rQ91Y5TS3YemMzBi3Qd9r92ncjNTuk/Fz4L5HZStj5XNmgWCT841Wy5MLq+6l51E0qEaFIMayHBXCKV6IvzA+cVs+o8DUQbrSANNyHBVepmzW/IWZ/zSYeQwDVhtoaPQm8afGsagpDftduhi6nLVMXnNLntuSrTd6QaDE0UtpkcKJq2epWw6eiXwxjg1Iedn9mwsGmd2WNpppGkuSsfb5EwrPQfj3ev2kVETjphubig74pvAG2LFakfqPfmYqAnKgZX/SL4HuOtxWN5dnbfVuxvV3Mb0UNlryn5vO1kTFbUFuGpENRpO12PGItqfwxTQncPzBJFTaTCv5tQDxx3mRG19bebnsxz1iFuI7eZFVdfQZVLPEAxQffXOrGlNKoyWaBq4YjR/eukB43ijYAxUQk6QcR2Jw6/UuBjuhNhgSiHkRzFMHn67E86ze1aTIIacux2dRldK8SQ61zXY4JhqJO4+70q1aZZLSPeRFpzhKBGWfRzcpVZfNbvRh170HW66fDtwp1NdYknhLLRTVaoa0ONZOWtLdRUwoJzhnKriC8lXGHELjfsm2P266hzhl2zkHQYRTfnP2cYJpMvLWlXqlcbpNVqhdZzeKMryQLfPBjqUC2MYV2sS87JkOfGJeaGd0P86rLS316yljOTsYEwx2uayN1EVGr/zYVPrhPXiDrM+LjLNf1Gu73gv2se8U8abUiOZOTVy9U1NKw7r6e9bupKmtH3GWKEqebE0MqTRFII7GdWdb0xwTqBPdyo1FFTLXHgUGtm9kmXN9LmNnU1vxbsDLpc7XJ1/d6iJvbbulXvPbfUVDNYAWVTjJHnii83Ul74JcP+2H7ghxwRX7w4rV9fL2sGjz9Q4ppy1yTg0Cutpj1WdjKqmaTDxi16m5db8B7FG4FDsA63yA5IgjBQ6TNXTYJXeDxCE3xWyUm2dGqg88h1T0G4Y52rye2utbUCJt00rP2Ep6sWQmJgnLLFWBu3dKW43dS9+msbEgBjO30dbp+stdoxVomjY8rRqyjXqRjNH4ZLPUwIaRdbLLt4lZi2npd+/fnjo1Sx3lbuMrVlF32c2QJagSN1HoFQdROxGycwZoTiP14dpJM9HVxNLbfZLsbgLkg3I4zoamiUPRd+uk01RAE+Oipg2zavXAkTi933daTtrKyGt3SjuDjdstVuYpbjvSVpUrCc1TOXxQWm7MNNXF8pKwWblkd2CtrYSs1O2oYQ9FdcpJ1snHZa9lJ6FWLH+ljWRrgTblZcp1ZjtYoGksY5s542gY839B6LYs9Hq7HXDRaHq9iQ2MI602BQXx2uHlMc1AzahpTGUZkdC2inVVGbOu2KYFOcNu031uCmLl1oRFZ5vMJlsCrTzuYJMde9etX42wppGp3YmlKHzEUVho9KZrodxpJqV7IDij5uva2fTWpvO5PbbMats6ny08ltoP+yQDEmPDhXhh5LZChu5yJcS6cbrUcmJDE64vhqcwD2UmL0mV+QaDShFcUEvZHYE4KGUeTRTRzJiXlzUtH7v87PaVQ/LxQT2o2qTZ4fMLn2B9DVULjPiwkRlOUss6WqIHFFprHoqAFFHcKZ+J/wbSgRZ7b06Al5c9nfpLBDArNs5Q0BdanHdI6mpBTVRjvKCxKkGricz8WzQPSldl6evqPqXJMnqlI9WmTBjWRpfoE2XT/Y6HZrXO6WbbP4yjZOiZ95U9Q6PAT/VvJ/Uz8hK/yGkMlexlpDM/n7JOsqEND4LCThqbOqQ+WkONoe6xCTV4+Tk0qLekpGscB2Qi3RAkX2ANfQ3Ajr8CBanSjiRRufPDWlaviL0uZZHDOdSxYxmqnH6cvON0RDcTcaSfx5J6UWSlx5rwcmPfpJQw++ES+MvdmggbNw1nqVLfFYoUdrdx+dwtaEW+zQ0RklAzAphOW9CibmtjKamFwEqJp13VCgG1mEDKehmqZiRnWaDdfq4R9DLEo4Rq1voZmjrGKof9DPlCHtw9meaovgrmEcPBzxJU/MNIYZhY8uyvteswb5UUq0Q36AFy+K4dyX19OnqAM3jm2QHCA7njDNmaYEwzHLZ1srH4mZ/jMsvGeeToUOHZW18kTglJwandBN18Fv0XcNjhipz+q7GVTT6WSksi6jb81yV0lu7tWS5zDJAwOVUMseZkVvS0FVUQ4tqDqG63fZbPcMn8e0z9PDLuLH0Ea5Y38vG5T0bH6+n72pF+bdvMKo2TRU1Qder/PNGX9Utg92Kaaih9g0YP8w2CALgstBzTSDeklGPJlVdLMZcupHUwHbj9PXqTXQpD49BVUzeudqpF01DEB20N+l1dQ0P5i9f3QNrnCKaBZAa/Xq0l8Yrzwa2XNQcW/1LZxxTwnKplYmnSzvBVnJYxzT90t8tnkttvOh84EvPziqe2xk5hp8scJNijK/+p5LRYkbUB16QtDdwEyFYGQJAw4QNrJ3ZdBwhmDi8IzKuEnw9QR1azGpK5pUKOZm7H6clYOaSG5kOn53MQ45vQzI7mW2dKTKYsn2APlKyqsdV7GtX6VZWzwbYUUitFfBcsqqQhcaFLocVSHqTiV9gW/tRkYKO1hb9vqElxgpvAAFeMhr8xmXQTBsxYlzMEZYHh3OiHOpzlSe1Ao+e3ileoG85h34mdNDEC0NlvZwOeh4KnsrMtdsbe+Oth2N2HnBs8ZLxrZmgBlfB0zGeGRLLWE1LGPTx2etbOJGbdhdghFYSTcZlQgxMVQ1DiaIfuRgrbFumjCooKZ9VS5mmG8QwiJvix3uk451icoWVK9L2xgA+qcBEwUDSNpHsPSNFpRN05CmAN0EehQ6Qr7KaHjK8g1xR1FjuiqUjPBZfusxdkBEKAKGQjIoeHpBz3lI6hA9Avemqszans3MIyHm8rLWKunhA/BerpPRfaFfqrqSZ35bRRdVWV1Rr5DhtNLBS/IyQtUvVLrDkUytY55W/4ljSQyGo5qFb1c462gHG3v1lDc0KLmIS8576PBHOv5uhBz4+k3Js8cxisTYrOp3fR3JbXvdxDpc889vAQW3R1iYQ71L++2yU754SSPSxHmGJ0/k6vGMvkxh4tw/8UaEDOMuwoQ3DkTgZoSEAW7iDGRlsKnwrrJmsUSmMwdrHV/7zOiOuwqy1jqXwsrkOdm8gO3if8N/uGGt1kSxaC3ZIxo2vwCpGVjdZdu4BDbefvND3xCl+WqBNuoUG2NpuRn1tx45m1eVVww8jL3gFUqc9mPisLtBTD8mLumeouWc36gjBv2clLfvIe0R3nyZb0qvy2vEm3cLkE+0B/YNmcGLm1tLabRr4awTvqI4rHjab4bVqOs6QKp0YOOrbgpWCcs12me3IzKapVtQABiJg47TWNmVCPaFsbLienTW6s+r8BPujoxX1tcWfrYs6Lognwnd5lAD5g5kRW4DpgxazAJmzudzcuVpGwxlbyURcjVo2Cm/GSVzFIFWHrQZ/p0KT2Ha+qaniAfZjOrQW+BKqyuxDg/+aT0fQngnkPNZzRViPe6KYrq01/rnccPl5whrQYufj8vw05aYNmfe5GY6mqWx9yU6a5nz/vGJiUqI1s0xNzvroOyobNVMfYYIatjOaelOb8jK1D7NA8WkcAMdTlcar4HG7lXA7GdiAMvGkFJ8bFeU8dWVxakVoXTWmQMpflXhzZx1uD7WJfZZPKk4RNEDVHYb4PUgEGqoiGG+MTiyhtsOSuK3reKd7T+L03Xe2ZZ1rTUXujjbbmMRXORse08337p4cCWlRzLq33hTwXQ/SU5pTM+x4L8xeelZpxwVrpGyFj+P2zUXwfbEKKg5+3MLL+VwbODGd9MIJ3oxX1Sm2M7rCbeblg2Wu4+V9VWtSbDWsNgqpvDQ72yj4JOGrsv1jW4QJUyWPpKEzJSPwhVttE4p4xnC1tQTuQzG2v5nem2zKUnPMkANFUoQaFcGjM3xHWwN87mPzPRIlU6pvOtlgqDnsVHVTdmRii1xionAa9vxlRLC9AtpS4NDCa4nMxkG5FHUYAXG32zw7t6z7iG7XmtJkYMHS2Q2tSKq3+z5DT97vlPnfp6Aui7iJNdHSDORaMyjJYuYMTCZGUHIUtstSIig4cBCs8mkVwkUzQRyP8fIF8yUk1EMbd6ToFhL5IlCr8LqZRELLa8XozOo4VNVyRbWYpvNi3lRZNlnVS9S8iljMS9GFs3jJqv4d9NbcWevzJlemjUzUH7Oacxr6NJtUAFSMVxaMZiXCse+b6XVSFXxOIneknCC8W6SN43D7ub3yTg7WpyoXGc0TXReT0izbuHfbjrfZQuM7xQSLU1GYnMlMXuRn1LPB9aBY33MVwyKHbBMgA6UcfYWN/todUMRe+bg6vyoWak2uiZY39dc1TKvVIRj4LJXOaDDth42di6xhtgoVP6vpllNXFBdeQ9pyYhQNjZ6+NTca1a8jDa+vjjOaLoOTM9zWTibArNg2s0ApZXBM4rGt89Pj9iRY0hFEWid9wRUcvZoulo0NVImPI9L+traHcPhhZqqJrqWAMqimkO9Wldb5wOKEZNJCC6NgsbcqDe+A2eOaNFtIOm76rZHcUhOwHPru/M7IGLacsh7odM3yLmHDcx9aP0K4s+qPA2OgbG+rS5RUuI/h0fqEu8aGsUqpVmrD0ipITl60eTbhkb+WWfB40CYUff1zjGzTCfcG9XPGw+rSF0n/Y4aS3yeAB0hLJVnbSyipv9avC+z0PUjUYhVpMdEyLMsmm8Vs13RX48zSfqypqryZ9itQeGUhnzFjpeFrliWCH8vk5k/p3gEZZOaf7JGq3OvBkx+PmzaLeS2BWVXTehJks5xdJWEfMRl6M5tTZ5TsTOB6nir9obmQ6okv6bSfUFB6XLMr6hf5DelYRGK2Rr5ruD7EV230hImYWczQJXRCCe2h6bfd/TWgmOa7pB7ry2tNxql90awQxJfoAz0/5aHyIuhLqoFr4f48ZC312wFDAyAeOQpwTrql8fM1suXF86d/UvmGnj3r/3mQogoppm8RsSDpSVq9AtJaK6UccspNiEb1Pqii1HYzETySzYKZK4g8jhRFCXgm/1Sdvx8RYLltVW2PcHKx+lhWwPyHQudkUliELPK/ohYo7+6xVqjQIHxPQ3OtqErZLaiSrw6GvgK6lSYwnLhR7it0vHBJw/LqKX8NxUMbbD0p2GEvYg56dKeyVOby4cepxqSC6uORGqyV07dmrnPWceWlXqeVjMBnU7srWKS4QWsUKSkms9klh/KK/ezHrSpuf6TNkRHJJ853OAPU7m8kNiNliF5RyfK+TojbneoLAz/3r4QtxM5ujK5jcQ3UPzjEexc6opJpHITDnkxrIdmwhy6m5I8DIE5fQIL/eZ7QssaVK6C29tuSwySEnh4Nx/lPJalqkSjkPj7aIw9hi2rMqo4blZexRa7v08yEpkn9OCYZoIoJYFyIDq/ZN0cn+1hKhN7xVeesM5uX/LDY1UoqK71oeR0TZFxFUuxGa/t2ro45L1X4pnvnVlrt6pNn4XKwc/mGYt60BuiAfTgYbbVc3xVVLq70gar+vC+bRNDoyxVjajK8txmNbZXgliQ6VLx08F6V2wxPRGTlteypueQrnORKDyilGals28pg7vRq7olXSZFEfAqRs5r4LAg7icUNfhkmNyJQGn6kljBsgJpeHZ7BrXoxc9qhOSSmjIAdpa7DdYms780ZaRqsKL95mb9skZ1E9WzZoFGoHUZZiNsKm4d/DoiZoXTZub3oyBNWRui/Dmn/F2/wG5qrSUp343FhxgqFzvVl72zvzaH1s/q+hIK1V0agoMFcGoO4y/RtXe0K6UwAaRmBPiAsThanVuv7pfDN8SOAaHfcViJwOhBk9QSoz2vnvFWSSpxxKLbZGyU2VmsIxLZoCoJm+XnpjMZB7L9c/mSqeysG3tfCBD+9Jy8Bxoaoz1FZYryPf6S8dCHvhUlq9aFqWSzu6p3PYxzYl9Le3kr/T4KtCFrYmQZm332T7xWCOHuFLXWsNsf4vuq0jitfq2bcS7xyeh+omznJutuRNLHU5wCfNaJUGGJBcZyuCFy4xersJPOCXizrh8RcoPVezayOIrCH+6btqVFbkiuBl9nKgE5TR1kPFdwM8axQSxI2sWHBrwI5qzrUg2vTcwNg3Wl8J6e9kbMS7pSYp2M6/XcOL117gwwbosZpybkj2dCPpyN8xcKXZzxG3bmULPi+W8ncqrTn40T/W/HLnDRKT/ImcctJ1tjpIPCHYtL30l6TciCo/Ckoj0M3e6cHGRVnBAPX+V18LhUe52m08/jk931Q1uajyoWw4rPmju4mv6NaZyTkP6UvXTGdrLj3W4XBQywVZaNWmMlYyjxMr57bcv8Vbxa5O4fVz1wgFalCYkFTLw6dhSxOJe3bpVd4T2Um4rQ7ogVNqlaYHy1olhfzSZ1Xwmpaua0tNCjm45PXMgV+o1LVVo/s9fmJGLQl0l270RtoOXKbduEf7Ws/h53QtTUQt85RR7ZWq28kry1N2GnnjCK+9kLPB1o4/OkoZBDcwDVkRvI3OR8K0R2l/iK/c6q/G6UDhkNL0+nwkdUpu+wEzKVrtItEXEs7C5HhKnjEeAYA3LDdpTqMPyB1+8iGaUfjLOI4Y4ytB6ChUqgsbhtz3xkMwKKSOJ87e1Pig/K0PliPz/fWCMI8Coau002dnQ4NTJRury6XGQyt1lxkjOyeUZbB9BbftUlwiHYAyb8h1KEPXgOVX7Rs1lrRdynF7LDZEmSw/VRJneP0ao6HVbR72mZ6ssb7aacoKZqD0+CzteV2nxaAld2bmSPTDuzcdhMrz5zErJouqj9IWOWWAp+x4lDLAw6axY8CMqw7L1hztja1W1HxLGGxiN11BV4m+r8E2BjK/JgdRPToyFNtc8yNk7zDPJlOsPngUpJqykxw004hNV3k0Eu5Up0h8GIB6pXdZs0IF1bXfzTlFt8w9ODotULzNWJhiUnQb3rJpPgM1r+00WRjwwunvSlrSZ6h1+LUcOcfGJlKHZkxT+WOztUo80gBVIQwslDvLIw8vVWIKxY+bYvCyVS5s2hm0O4Sc/aN5yqSKfIJuNv7M5caURO3Gg+FafYw8/GuPsfwmYXzMdcZKlwqmHGY8counHdbi9lqYwKlauAdoSWGfDSb1kwuzb0Wy0bafGMAk1g1bAGOFAZnZsLOhj89F3XiFN2TzoibqjclvfC9LMTrZ1GglZHcXh2uWc5OFbUSznkbfwMk4liVSgYef+zzbeZSt0ZWhQezRrJntOMd63MPte8Gr6wkN5ZLbVKtYmYSfPVhpEp1zW5Wr+BkkHSY/xyVC081gjwsMiaxzcX8lcPPOgyeYYrbfpCJ1xyuHJA9jNnDy2if4dvjELGCEDfwpkhmoa25L/9NcpShdHZesCaPT+YV5015BZ6DPRDeaH1n+ZCdNlk6OKMrzDkao3fo6ECinUVDZ86Hjbco383U+rcmVZVsU1yTszEuJn5z5Mt+6tibTu2dfust9mF0d3JV6yw+kOdcl3VekKVc8ZtoV3At1l163+7b7z1+8tKP3MNWTq62umUHLsTS5dvsydznJut8KXBYcCcp0Kg2+jYFK24haVSMzCOjJcxNelBYLlBamRtsr6kSTZC2nh5wgzZSvix4+CKzc9Nm9Ax+DZpQt/WW0qDKKEeF1sgYUgEz5vua1WzV4R1bQs+Wu1qdPVz4pWmrhZe0IDYcHScEGc2dWkhmNKIfa1B5TOpGHmM/ZYQfaOIIl3L1bStu4tbXaS8Ao1SWsQdmc2V7m/cNiK5KHAbwZK+z1DetbFGfpwMmNUoaihw2rOzFayQynPEuUgwSwr+73o3pdUfs2+d76DtzPBKrXFElkjTJ9YljesdgtrA9ea+jo9I6rmaiL5peeME+IboUKzKXrHPDDYmJOvdexiRKO3nnxhCxDOJI5EZhX+yIkHHTS0f4+PVjEVzkLXXSc0G/9N+OtJDTPhlcox/OHHTdJVJ+OSzKqfsU12ckHtrWQBOqdGvbn7ExpyEdgdFEuKkcnFZWmTMim2BnqMcZUc40FdbmTNxxlNd1c3erJqwnGbsn0I94k4yy26+H4ysmZTjKeTY1kyi0ZM4AktGQaWsbJm7r0SsZUN3BGWkvfMK4al/SX/ld2MJmBl9UMGub57qRUh5UjF+xUvus9x5h3deBVo6gkVfrm+wM97CgMmJe/RI4fRaZ3VU3H7tr7/uC0Io89eVVxKz5a7NdmG+x6qeHsl0P2PVuc88M2jgEneEVjWtLD61GLv6BnQTUKtpVI2F9Wob8mDFNhUon2VdaNYnqzB0/xeQ5kmHKceozo6ZE3Dwz6QZSlgLk8GqJ3pICM3V2OELDAOh2rxCTkw39k+hzxa6ztZ1g28oaJca1vOo77OfFp9+wgdl8tLvR+D64tgfoyJwau5m+MkQ6QVLHT2U1nN6qEzmDlC6GbymS4eFzIe24r8tIJR10Yj2KYeNq+qFpwbzZSeMbDpDWHy2bIHYCM6INbxoiARVgXXVYGq7T8mBMmMq2vssA2wo5ZZZBNabj0sZYa2/VUtbw+LpEhcfTfWtqRZqan6Yn9Cu5R63SKtWpfRF3lkzNKVOLNraque6dOW1E5LSeL+V2zKzPuivLNaa7iKsPhcDk//fiDWIeaVxttVxhFlDU8DqJv1cAZFdsAEJ5OzKldQ6MoAEEMus192rhveyudnyzcI3OdSoM60/rdU+rIG3/4a5GCTutenWzrblrmsC45h7rJxGQArYUprHX0vxk8DamlOo39QCLuFIvUXnWRtAI6rknKlpjqIqMvU6ja4t5FvLeGHgcG1q3oVh8q1udJbP42uFKKBKY8O8/uJd3tJKXk1PnbG1NWzfwG0rU56Huvvy0lVMDjBXZPNEmcLUPVyLzlG7DwE+mP3MTVV+jzK84Q8jjPlu53IAvqcounW7w29inRuRjd91OE6z1IU6a1OcZWnW2Ghj3j2oJ7SV8pKVctvDf7lFNKBg7CCa5bxf3NSHDqQMvIblZYzLC6bhbbWPsnnX6drQ2dylt9iLLEWgpOwKNomUTK71rSLGUtlPmvkr49z4CPGx7glBxlQdycam1ccWVOpetNPwUzpsYvGUWkRstGqfUfNmAEzEb4QLa/keQV4xv+jLw2oE00Wjnmmeekra0XGnQ1JFjLMxOhAWfB8Hp30ys9ogWbYYGjqK0dGSRAvkZa1/NId+L3QjHWhGTORNrKHcM/OmaMoNetCd1k/r3vNzmtkb01+GTGNK9+lYwzg4u35M1xNoGMsI9mEwyA+WxMMoPZV/jPyBng+zTS2fwW6gSUXiLmH4yUzS2BXXirzzkPWxpKHIpTuupzivN8ASg5NYRUUGtit1xLzMoFnG9IduW50NDA2gr7QhFfg6sCC03Oym1eTndYafm4v3uJliRsm3W81o8zRqIJ1MzrnLSj3BxCQzjOUGb16japV0IQ1FQjRT1m0OoAbYrZ1HJRpMQhYjQhg0gFm1vMqYuv8qgx3nM00i84SzbTou0IcmH+eLvwwg008tJTOX3q6nJbaBLvMXD2tXZFX8Somafwx2PmUC7SDH5F2BSdzcLwMBLUXatH2ZHKUvCFV+oKKUkMndxj2MR6tf5Z51qdZ7H60I7hQoYmowca0KvcGmfz9pZv4mh/vhMRxOzEMOKTzGSwIo9Djf4to0mcYsQ5e2D9aINonHUR/qeQjSiFgVLNqTqcbMnSVBLDpv6ecQp1ZllwLF60A/iUV66xSvWhgjdIBIZ2mK2BRx1zMN5SoEvViY9e0sd+zZzUUfs07S1kHuvD3N+C/bYVloAmz2bYzicSj2Su8650RttMId7vCtw7G7Y3RT8RpZrI+HhAdaVh32E8jVnsKzrYaQr9HYGq63Q4qbXoq0b6KG9CVFMFjMvUd+3Sxk6Qizq6Fq+gwDRXWIzAfaC0KvXWW4KnTdreB3JEEoqM5mJdDbMt5iPwNwI4LRTDpmI84zTxph2JgelnOiOr1QibJJRS3A1tzbazreCt9AEu1cQlJyh/lZBDm+BkX6up3izpqxT4t+L92VecbVimcGlsFUVsfdm7xJjA8ENWwkqHSEo6bCixcicxfjmgHW8H7X7c0ctEfvcvVUuYq0Om8HzNutGHrWZ7oaeMNG7G4aKdec6mjevqCg1FE7uF9X4NkyzU4xuHVzMYWPMcIAZDzDVjLo0vXTZqp9zHo5PUik/kXRipeDr8cKPHpq/WvuYWshI3/Hj1j6x2dRwwb+d3ONlUakIym3F7hcqdhkc7T27FbcL0KGfVDHNmjifUuk7IeDak5xUisqtUmlK2zX3QNPlJ0RDASTTOVM4SX/yNc35kXfaLXnoArOM1QmjVCu63nA11g2+whXpqK1xTa3F9GcehkOLVm6oa8wHehdg7DrcSmKrennJrEQBBsU7ChokM0cRUCpsOpOf6c4tYeafVBvr1XMn7lRRC1Krmwh3svEi/KzXGEJwgcsR7K2f6WGPqzRaRrzOH+bgpJbFHN8Mqxl3OK9vevUS3KEbISyx/WIOvU/RoxVxR+5IXMNsNFztV/+fh4L6CZEjQWtteNJLZhjfxOdr6A0NI/mLrc3wMWKBIcNbFFTQDx5p9a4bVe8phgZ3Dbezmbao4eGScxtRY3AdNF+6bw2/gDm61vx0nuB1vhtrMvFqdhSRxEp5Vpdfj6A+6rWqSMtOUiWtyiFjZb5K4eFXAF3fYWY9CNfarIbRhWnsGsf1piTNCuld19EWgSk4w55qC90UJNBkPANdaErQ0LolEdF6V0/K7/+mj71tTpNWsEIG8HfBCBqaPSkRlyKTm3xFOTWWhZYGJl/4v9N1aB5fzTR4egWzZeZ4WtPVWxgPXeafViOvCl9UMxwWYgEkTkY/DOClW/BdghG+hIkKnoPC06imo/TntuuAbIDlqsMspSZMyKAj6NG/VAmSTSwRBFjQyftxyBgsfQSnkwzm7UDa+ECcy2lzRsBqqeelUK8U26z9E9hznjvM/i7xTsDa2FhbWDXnSdwSP5jajzmpctvW0ccy3IyVHwZzp36pv4htlkktKAi3+Cb64ZZMzJMDq0k1XyGiFyi0OPHy1+Dji00hR5Ab13LOHCCrzHhSiqQAmVFbQoWj0TMogYCHztdJwMLh56OTrV5Fhp530+4q4aY/Jkbq1vlZwKLI34KIKs/aD8dHA+rzv0MiH/10AWGfXo5BPlaXMDE07fCy7x3ytC8ya1iI7NlNqjB0N22o41DgJRqE1UEztRe1xdC8XAfmLyAqU2Sa+bas3Azs5atrIBub+hd2qtJmk47UWkc3NpEEyya8BRhLao9fFRMnDqqC01FagETBUjhqX3zwYEmzfraUuG2/Nj2g2hO4TUtwfBks9Bqtk6s3esWnQCII2/WghGkWM63CPHnWLBptnA6oHxQ8YquEXFRjz+mNk3fBQb1h0NVayBjU7OYhvJuPhFp2nvZu/iypxxG2laNRJTI6nZSUz2wlpgPZIxddgyKx6qZtTOpFbzCPdn3rTjFbUbDEsOmmgwe4eyqI12mqc9jElyNmklJe1kKJ4bGUyMv+3fbVLhgQFr1jXV/tX5+xFdKwgcpLXspnG0MA4tFoWqQqeo/xz6YH2SPKZ1/HLymVbq1p3VCesPAZAVMs12terzrC1APMW2RFNmyKmWa41Eh4QKqG0+sVMx1Xnd+u3k5pX9kqZ7Xo0YZRzFoDwGzdLrdJ1r6+QOnZsv2MFp7KCqZVyjapjSz0vsV5glcef2BpGqnYWI7R/xVeOarAZl4HUfPlahxww4A5a//BrVM/hiQuzMVw4xS8vWZmBzHqmb4mrX3L9UygZRoO8oamX+VsS6amQtVwtZrWiamWzs0bWnTUywI2rak53+ipoIC7Ha7awGZplHQWWVY50BGmVc87atO1M/4OUejNCBZFLdkGZx1M5lTadTJAMGtoSAeZZGAtxMYXvXpGmst9csRfrZNH2oO3Sepnfu1zD+4TjBU/h9TKuS2FHMdg5T+CjnuUEHX+pmSAzsA1dmkkwNuTjLwykU6t0JxCMiyGmU6vWhpmHW1txZpm3WD1fXEKZ5pI0zSWx6VgtGmcALSBVm8MyELOdTyxbgZh8zKskiMyA5RPU3XhAaTTM5Xrk0yzElM3bSDZQ/q1ppl9ptkcGDNMxUWXv5L6Zks0yCaxVaE3PdZ6+sEaFeAMHIONMagnVubUJhf6BTcREmuKXe9EfTv0wzb7siR9GISTcr6crPxGUUwFDaier4AxnBsrTKlJ7bSM1aZ4MtDWmboRvDm4YdcZWp4Q3Kczpvkpl0VG0ybKZd2TNMAYgq0ShZTxz3DJ+Bq+QMbbTK0fJKiLNVZVTMoNwaRbS5mXZBtDRhmhPT+3i6BKaBaTtd7rGhmyz/2dsGwaRY7PN6hRFDpYsup/fSyrlTZ9xeREfksElnH+w4Z5lSyApmkwDfP5kO4tnG2izDSV2awTVNtd3czfRZBVtvoRB0dFO7tNrV5s72StFEGy4dQKzdxcvZkavqM22udCWoVLQZ50vm0etLFt+1xtB6jU2VPdlnX7rlAWyrQxUboo923l7z7LQJlOwUxMjlgdIAxVvW0ueZ++nNTjROlsGXqyNNijZ4yDf5Welx2cJ7ESyG01pw3ARmeGiJKpkE0yv4m2fNFwZl9WO7tl1NydS5E0ayXAd0RMWhZuHapbOWCtfSsXXjMfHp2wbKHB5l9baros0y9HnJhzKzeRwwgfYaoyNauZsmy45GefnFuSSKs3oMYd9yaPm2CInZaQYPMqakSh1B6R4Q3Xc2u/S2AgH6rMUQFS52mkBVDGoOMENWxjlpD3fN15ngA0HPXV49wpNmSteKtQt+NicXLAjyZ6hv8jDdN2L2VWYFYCsqlHMyqt5aBe2h9kexNjZpa09QLnhDoPnoFmjSbr5oWfZKkpQnyaX5g+tiVWU9/Kc0d3fyLtoIkCwlGmDsrGUhGoPdNYPMieD6AknYqLUdWyu83UmtQ2lOcIuhnlcdrX5Z/1sVKlR3QwOFk0MNeH7niiNI6yogotLhNfy3VHg20cpJ3+DMsUaeB0Bum7hdrkJ7G9MtunC7Sj9mHBD2gGF6o8apR/GyYcYzYMCDWwtXaF0YBHLwGGwOqdcliYy5LNrUOIJRFgDN61Rhk3eL1mq32uHqz9j9bOzlk4ZuhGVrrVEmRKCfVv8UnGlVm/Q13XjWtXYu37KwRLrQHKKbpbtNkFNsX9Ma+oek2Y/WW9jn95mrSq7Dri0OzdqQ6sTZxLStWwrQDzO4uZNuMyW2qq7Dm3i2zS9KEtsDjCZurTLhOTpr1wvF8Z17HOf/azGcvDUPudIvjqu+Z+YakGlQ0OxFMZ8H83A+l4dfwjuwgzRDWqZtAhZI3rJtBWPdLWTm55qLoeOM4xX2ZhjL20EuMyR75NfHb09vDqzl5rcp147VS4wimaVS0xsb5nEy0JpJStW7yWkr0GRUI5dmEG8NIgsoSSYx8GYHXSOWZk2vZwRtsyOukbW6bFkhVhgmuxuAEoe0aihd+LZQsDE5Oi4puwvYQsMZvG+pnU1TgK4vIZ4Px8WcuEGA8WyQHAq9hXZzaWdGLTPHyzRij1LNZ4qTcfN5fQptQTrkNgq7hQLuQ2PMi+F8XJWri0Zi6MXdaGRPWKwWw1LdqnOgtHdxg3zVWwWeLTmiH0q0NPJ5AggzmpykzxtoEaMSKZiY9StgdybTy0krbysx6CFDMpYZWOJLTqFfKQB2pqs9RmaTb3i253NSlMuo2S1pdeS32my2+ZLtFhNu0t3GQKJ0fTntCtUtButqvLse7xoJJZH8MVIhBA6nIsS1tolranSzvjtnQi347SZ6z/uYAnb4GZJOnEE7eW2IFuVvSKaXpHxbL7mUf8NrtqGKtOelqhPULVnwZM2nYIczfcFMjXP1FSfbzMllvsSlTtZ33c+RSLNx6dE+a9zZe4njGm1nduqk83BmrDzJeqm8kWbveOldqeBTjzJrH/P1WXtTMHTZEfzdwGzIkmTXv2f0+ZlUCi8hZ4c+LIWfbP1DNnsnTQ/Zj1jLWsZZ+1VfYQ0sRj5ofncZOj3c17fmfltVX2CXs7ahrYUvP8kLWMdAWZdWvSzTtkNbK64niadJMDispkuf7T8gbAYqbm54RDftmjLGxKXGoTLtHOdMa6hPlM2seC0whD1hBMA3ZyyZ3f3tFn4Gin9huz/MFWWA5KkTo5Hb3hSX4k0HIfzZJp1mS8yx+mFiDXaru6kuYebiqKHaWpVG6CZlzpLs5WkSrny17FLaCujnJsOuZv/NKpZ9lCpXMaRr22c3N7T0lBex2iXbuuFpXZnijdMkm4+XUQzqwY23ZlO6r2TFARkvmWT7HQFlmbXaCzN2CGg5vtuxyjb6w9dM/hWNE0hfq/43uubiZCtY+lR6oOmQEy0E1apG1DR+PEI9gzfqApiPbCZr/OeCM9cRzQbLP67oZyT+Naz1Mr2AdZ32dGHOzyTnmmRcg3Ht2/RuVWbNdLMlrvjD8fty3whdWBE9Wce10tO8iU3nXau7eviSP+XZog0FQpTyqk5PV9XOZmqHFB2oH8xqeXyx15i2OqTBQDXX/XVcbz20U3Gxbi9vAbQ6xhdaAUM6Hty3PK52QU60JEbRGDWYWFZc3komXs3HRZRuqdAVcrE6FtU7ysscmPDbzZZjuTNrWZNYrtam6d1FzlL0bJ1XqMkxEzmz/tuhuo/nInwVZ0oummqVzUwBukbA40fT8L9uGV9dvjRL2PTjnqdIL/s6VFKM7+EpWrA+kb1yR3pQ8ckKmEQjdUEcXxrjm6dzK3AlWFmmJ8eVgOVGUpUKK0Fe5oynzesP3RkXmZd0IeXOI9Sgd0JoPJZ+iK3UuMvpXqBtMa2C852pSWg6wBkmi7evPihZ59ZMbiuA/kt+ru0p2O2ZFaCdXJXsK50pUXhMtEakutSjBwksks2dZSwilnEyrhTZ43kvxFtpGLrsXCdzC3WD/Kh27fcIJWFm3BcUFW6CC43Os0Oqynlb+cwAmmPM8++vPN0ynpsUMsxGdem/W+YbC35DpRr0blZ1prbZtTmM2KsXWWd+OWAmdJzGTO0vIi6jq8YKuMhK5O1YlQqSFlISNcDpsYzfuBsn0sYCazr0yGpe+zTrGdbq2b/WvMifv+xyXOK/j7zLdPq2PllqZIN0nXpfC8OhlFOe1I46dsU0qZtUa1sG7wT0rDlMcIjfQRbrLAvlZcKsJenKE1peu3IsmzEWR1bmZxg7XhJqfdsQcXZXaL7ttsvMqIYhzWGvrxJc77tdiahYdvoh3b63P3aOqZEhW2ulWizLXZkEONKkRW7Mki2TFrX/u2ibjrdWQD2vVTclOIC61xMs/jtht2tKxcbdv2pnSyyuVarAHOWWfTNyj1m0IcYBZNt2oVrgyLMAIkGALz1uzt2nQNVx1KNXlC3y7Xmnt2q1flNZO1O5oOyMhF4gSrlwehB2aloW2SeNOo0gzP1eOOOd1n7OKOFWWVTOM3nji1IMG4mTwhm2fLFTZuGPQJo4cgdsYWBd2lCdqGbJDu7GR17iyRBs31gVKbO6L5ICzOqkT4/QB5e78v9e0Ueb3Gy8STfFJsZ1NqtoEOzR76Wus5kpcXrMkQIZE8oWmm9EgtudJ0IrC1J8s8WG0ZAztpQ8/IjVmOhtZLepNjexPnNbUppaewjdY6zmQlFzsnPgEhYX29pI6b+/GIxo9LSKbrnyMgwB7jc9+6STdLmXkKu0io6RejJ6Wj5yOHEVyjSpntzzfVt7SA9rN83xJd2SpIsPbF2i1kz78WidNA/GZPbDloRU0MUjZ6B8onaqGreTuvP+u3jpcnDzX1eB0+7KMoBx8lWBbrZdOPj/IielHlMO2kBmtr8mavMq4Tvj4sXx5fc8+wmpvLDolhVapxlldOtiuZAHsrJbsQdPLNa1wCI5Zhf9N6BZ8VuRmWPqtlhp+lwp1huzgoBs7NKyHU2qX00J2XABztomsDToYBwZfTBMVHUws7pazyPlW5lynWuis7TJ+YdqCd9e32ktu2uiu2NkaXhqdrp5XPAqllyUIOe19NSlXB2JjMwcQWUNO9boSNmuZmg0zGpsDlqS2mjIi7oG+n3HkeYeLKe35a1zIhOiV3XA6SmMxwo2bZRpCmq1M0QAXrdt2mk+wr/jt/L2ikZhP519TWHUywBZcDgyAlljJ0zsZpUNenOAhQqVWpUGPpEmx2jEPBpJy2u3jBfzKZJ06aTdmz8Ey3dW9TOsy1VqMr7Bqhs3Lgb7XXUgUXW1AlZuD9O4Dn0GU5uW5as2L28Z099cWt6zbe40BLWw6PhdSkcYOG3hia4iztaBHEPcEBZZFuvnlw/0lD2yktGe5gJk1uRFe/1pxZrc2vuOmHNPUVpSz1sYlrN9VydXOA1uVXtINW5pjgHLh/sFZOMQETSM4RZVFyznRhyisFtoCh9mZazrDAwJaEO247qG6tDTG6ZdA6yYsqPvFmcCCyK6Wvq1iesttuSMbF61w7a2KvCKmUIPXu7781TYba/K9DLmsV9w/VoXLMa328AHTwebEqKqXJLkdv515DLFhFey3ToU5UXMpk6UXnYi7ppBzCB5Cn0HXlLVMqCDbqWKDDZ0CdoDVrztb2qdG2tALlqL8kFpb925L7d5lw1dnLmLESemh0vcQQ87SO4ayP03jpu0va15o7BzD62iMyGbuI5sjEWf89r8fJQ6KVqZlpmglHmx9pcl68vaK01OWpXamfZpJNu1XBjkGZlIfApTeiYwjbExx81ZZLKWmEtu2bX7U2ZNqNo6VuzXq2b1KyUlki6iixWWKkgWho7Yo5f4lJSml+/HqmHxlQqPqPkmU9EvhdAktA2u5+MxZIF8yFm1N0kizNnM3NFbr1aNh02Efk2INVPQK9q4Ofy0uhUyzBvOlLk2x6ac7KolmZPTKMWWE+1Kam4gK1M2z+/F75oXdrULqqvsaOZBl9CPWcZfU5iFzgNSg15d2/DJSfQx/1nIm1V+ZHBA3rmab40UamhDzwp12vjF1Rlj+VinkeKMLRZyP29btoEGp7UkEPLPWuzSnZuQUhLP2kEDd0hcmmFEmnVvxZ2SBVDPtDvGL6ki6lixt0AXVMic/DemrQgE2b1dMD4VpO1kJZr8itHvtFv0cc6f3dsJZLZW4QFotSLTtoHna45ZJuci42XrzQz0HLqCU5ZVEs5oLUSG01FrWVqpoZxNMsQ6SELL9ZUByjqtBPosrR8iDy0sE3gRi9UWWLTMIhgQoOG5YopyWG6vhI4vxaqrx96Fs488hOK504RnjRCwtn7aUSeRmcY7M7Bgqky984BgC5jxadEhUoUQsthY5LZMutWdOzXTWjqwsH2GvwSDWeZVHQ4xlY3VmTF1Z0xsm81cgxWmCZM9kEFdjh6+/uLZVFnetxAs7OFKKLBGBIpXngVX1Ei7HJ8emNjTCjuDnhS2mZXwoDWnaUAc87Vok9IYQbBQDuO2LVrL+bpco3Z7EH9NMopsgPD5bpdFya6kXgtis6JP8wlBdGDwUTmmANjHa0wgV4VViisBRVlty9JWaVfGTBr+D0u+GOrcR5uAo2rkWjjNwYEFmbN5EmTHI/6mU2gLhaFKiyFJaGEvf0ZVhL1Tgl999e/Nlqs2KHjIZtSOkwcs0Dm9Nw3z4RSbxXR4Ot8OM57YUzKVkHRK0zXOwCUG2fXw/9OcfgyUfrUxrJyhFPyjf3oqIz8Wagntpg5mHgs9YaU2ofhkB0cGJaUuK9BzaUq2VClhbTc3xWhs/Mhjqltu86LvqRER45rJNoS8tP91Y7f1F9NAXApHPmIKBV4UhcDB4FO+y9LukJkOWc6B6TVzZohzGALjSxsqal9EdIVWOSYgpaYuDxmu1i6MRw5AcS4AhjNk3h5lPD914msXHTj1v/YzT64cQb2PWz7rOyTpLUK0z5HO0QRmJlvGOcadHIDFZF8boyZI1W077UNiOHpZzXM+V5aInaCOqw53sEZLltGkNHnUpO8ajsq200sj01u+77mwQgbPtPBIXkuTvYOCVQ4h2gjFzzMUBwc2m6+dq/CKVkbIQk1AOsvoBTCg4PtXArJQHXJn0GQGPwXSQ2cozMST5gADysmrMGw5OflEKBdqZtLyOmA1UvhNVYivTzqIFdks64yzeW+cdCpLMEl4DhLRozdDmfo+cJZ4nV+aritbGikaOrsQxHMEiiM31mmb3DTHkg+WcVn0Xb6pu58c/3ccs5xYu1/O02LtyozDCRZxdu3ma+8Nvso1CfP7KDctPLu0JHKlqy783UUOVLiy0PaBwsddBGs/YOfnFa0qv5HsspF23SWsn7d2MwMDYAK0epZYRZd+LZzKu2yHCoMhUVkCArqWqdLVKFoJUsZmVie9a2LbY80DDHd/yIiBhSW9ZmbPTM/e3Xuib/WoLA13HmFW0WuZ/SStNa4WdMOEdnyx67HOf8vN5AREVJmXGFqZ7Y4Z0CTe/tyhYgTwfJAqHF7CseOTUrICKfBLNiY7q8yrBZBtM+SerYLPH5r2Cz9eZVZDVQ+qacwz9quCz3fV5vM2aWV4LIWlmz3av6B4A/J0WQELNoHX5dN5rtpYSnjda7nO5hmEuLSWZKBMwk6e8I09gmhPlObWCK7IpFWIzOFO3HfauJZqqdI7IbxLLCEV+5zdqR4co6QBqHNJlHZ6ALdWRy0Ys7BgS2rZoF46zY2xPAaivtqnIyJja9nzaxGySDbB2qQNs+/5dDNjomP322VFX9c1S25X5TARRipday3li4JTNCI1bWcmNq2mBEUr+11+aEfNAo1AJdFY3t8LIHw53KzBTmXKtYI3k8rIY/5zEi9y2Dgsri1buIxJB3PFa6r65IOivOhbzIJTqH50MNZpCdEnvniS01b4p51R1R60syvpdJZp3abTTcd0GDfrNKCU8pyEHk4dTc4hQ2TGbxhq9qG0WwsTa8WyVLTVuQZqybBYWD9cAhy83CwedidtLJHeA8oZ8gGArO7cclqKIa8p0ppW56zY+2lZlO0Ml8+D14BLSE548eLlGW3pfL01NexLK2sRhKJwRc0dy1DNh4tsiTxVXZJjmWns0PcGmPYuM5YgUJH24qRt4ZFjqIspSS4SUzDobmNd66MYrH4SRQ3XssaPpNbWWKYUkGqaBjM/YZ1CSJYGAJtZ+Oqj8z7ZbWRyCbG6686KvnjcxVAajUNjrJLnWuArq8Z2JVZnuD7aG3fW/3VojLxL8VgDcFx2GamvLxUH3JaplgsN6XhMlM9AtnJaO8d44Zs5XGSHvMc/tytM+S3ZV8hw1ENqooQfbF3eFo8PSxPlMRbWTRlN5Ph54HjS1ZaWUDVGPogrSV4bKpNmsOx8Amq9RQspc1FhS1tSRLW23jGJgJl4zZS9dnB63z/M+kcknxnu04FaW2xxW0yAOU3VNcsaUxdvIttRaljjWN/wppEyC1LmeIqDfG1rYO3+Pm1j1f/BYkU66CZ2j2B0ZCm9JdhPlE4xDto62ABU280LtVgywxPLcM1NzMZTBiW+1upgmu1peUzWnbacqhNVgDbeg+hus2AKHgw90vJJAHGmaWrjKhIbe+Cim6OSbSUWTO1LPPZJTqPLOb6zM9RtsyJjq6//N4Nu/oAyTXiAZLREnRwTrwdFp9SvRqdg1/3aFnaG2ag+q5qBltjPouHKGbJsozcgu7IendpZ6kWDyDBeRHtS2sTHEvH1mS+9HRl39kwUgbk8p0zrhqi/cBV5PBFvn3OwjzaIcN6w+KMLBJjs31wpOagd1WyVKvNcKBlG/T8t49XMzQJkAK5F8l2wpItl8wNKnt9BQweBoKLOwBapZ8ZLV8XHHRkpK8LOGVTbk1+uolfRq1qTiJRJ62G92zZhreQciW730a6XXakMQmC+8iRBS6rJX008qtdFW6xff9BlQX35LrQSNo/h1nfJP+iHvUy2Fxrsbe6/pkx2TiUELGCaggLn+GXtjZBwaTE1+aHFGdckmjKrSoaeJ0yI9q4UzVnW4lDfyRTpIt5AXdljwFBVmA/xHtPaIKu0rB9Y9GjUOi2JUICMMJY11cCg6eitZu7guiPhDoUVseWV5xJP4Tlcdy5e6VsSnjxDz2iOCTmc1y/rlTMRDmZ2jGJvl1VzhhFmg8gjGRkjX/1s3+qGpLa4su7mHyU26OQf4uh36vG1l7m5dDafluB+LXd4bR9Uo6JSrPe+scEqhPbUJqCZB2/SwRbht2xNV55Xzp7aXVq2zAfg22Gvrns9OT+ON4rgvs1Du6EGTgbHhWZYmvrJpSUI21mVVcgMO5pInHPl9zIiY57vDNIFWOddxPlK9qyomLcyxZZFlmgkupHV3zN6leNdFWS6bL00TI10ogVjZimuOyGTRjYeSSLqvlPp0AXJEiffMyQB3UZFk0UKdFpLcE6yWQtYIW8ngaNkrVKFcv6sha51UJExVafjN+iC2ass5IsI04c0zkIVa9g+MFsTzIRi3WGa57t6BW0fRgmryBh3Ty0VZRcbTAH5QYoMgPrEm8bF+2zm7teutB0pPma7NANNa4s8ecUs6qdAYi4iwhWnWMs/2aXQ02O2B0qRN+QFEhRgdwRsSJa+XL8t+fUg285aiqo7y6lKCactt4PXLzqGD3UTWaiCP7eqdjTOFjuGtfHqvZqAO6+3m3PesiRveZa+60W+6xfK3WKbU+yb81kyDzgpmztYJbuG0qB8lBdjoa5XLgtyttHBresUA2jCkO4eUsdZcMxv/KZBVN+URzRakkOt1d3DKULMrkrhO5oxKdi1iqy+Hac9OLNnmfUJ4XP9p0l4duKXbJjswmspoSIyPj7C+ixD5vgTODpWvf3MbpS/1eJ6vpss30WGeuP/q7UbXkOZqCoNwaDCOnflOmDBdG1JrBIoWgMOhQEC2bGVWipHcSRgxfzznnYUtegdw9Xb4xmlkvZfYBva6RyM3DC9EZjaNUvrALKS0lsQrbuWhIsMIFnMnYTDljny8z7oIZwL1nOrSI7GyRrWvhqfoLb+YMxcKbaRQTJcWrqIJtlliExlzWOsmu0LYR9ptWWSv9UJGLCg1LttsAKw76UfamFmwN7MENtTjzZ5mJvDFqREi/VOLoKc2wNq87b69NXMW2X1tTLRQSb07DkCej//btTb3HWkVo5LLakG1m2hwLRd3yARaL+sl2NpaPY7WffNKPk4qh0Lpxg7EkRmWiXWQtYG3MeNm10q8zFgMqsf1ZtR109hiXjT3aSzZyITqY50Zt6IhqzPuk0UxeVlYa0DR6EN4nBlv+0OyjbVe0N1tnWMgzHu1NPrDZB6sLDN1SXbslRkSwXj4L9af22S59Oipd4FNMJJmfMXXuPV4/NpY4Mqep7GXycfGjMHFXhhe4K47rFjbgT+96goIpRmbKyNULz9JDxkr27zBe1G0QZn+p0nZ+O/K1bmYnfMNHqzcMYzxfR8zKjlaMxmwZjW8G+5OzU6pTe5c3mGaWsq8LFzEYgxMSG5utXkPecZsGrArWJzRvAw01Zyh84DNPkdLmxpwF0LXXBpLXc+Sz2mgjtclrT0kLwsMCuI0XcKOt/fQFRFcLSMy+W4tbnfi5LLZf5EGyj76Gs0pjJRkLLS2XCdyOv+KdMylYQvsKoh1HiCpKGPzTeMhrr6sFc4lGy4CeSYbLK4VAywIw643cSUBh6WpIZZjSX9qUwqzfl2ugTSsZgCosBGlK2ySGWmm3ZS6b+7Nnc18CdbPFZzdYrOW2HXOq1YTTV/RqNkucyWR0NYTEHFz6M+o4LNmfgHoM7aXzWqtCBs/kmjds3VOOU3RzTj/5PemsurvalJNaWlENS+p3JUn1zWOs3qKbExtJ8mW/dDIBpS2oEXkZEsH1uptIvgeckwIqHkR3yhMWlfjRAyezuITE65NCVFhEa8iQRiuAO6FZ221OthF26g+LoXfSOoVGf1dE6TKK5XSdLfWIyZJHKuHlzUDf/Djlt2sM6AjC3fxqlzVtJWrjId03fPr1ReQSWmHfvYEqZu7GFNfHmPstVhFWDC2K3oBed7rOz0tdyDkimJrDbuPdgF2ferU12vZ51d/XS3a8HZwKs74WWmk29RbpLNBrma5Uj3IQ8M0r01IsK4DmzdtKJVT9XJG7V3mSSC6qTIuaTeSHX1qnsw6bhpTJTYYFS3CK8/EdyrIVZC1HffKZ8JLOhbiiMDMosDcwixU6OqVj4Epqlptn0/cwISTMrr77P1cazeTqc3+load1LyGygsLJ6fpbKJJXwFJxYY+tDvwW9PTSkDQkkwkAYl/r7zeoEnJAoVYVxicaaR1CM2Xk2yLRfxsr3KalPldT2l5rS6FW0ypHO6OzsaXlvJat5KWJ9L73Znw8h5FWPS6teYqouQ+46m9ex2wsDeubeMXUhtmx4bu8Gb8Wz0iVDCv+OHinTbcx8F2nRaWIfXRXZ0orMRm6bc/YtgKbWvlEtLN7i2YXLRaerqFzKObkAiy9Fee9TyNVrv1EoG2bSH1agC9D3rljfMQT6uGS8f2h4ssyek50JRO58yTb46Oa3HPhfdw0n36uTcKu+l/deFSY2o09hElHjvDNRJ83yxjkGrtYFLCBJjZONPeOWvZEyjlqmbScBGmJTbx4XDYLVWGbe0FxFenfQqye/2qhhmYGsUsB5mLCKQbJ/V5s7/KbOot6zQ1TVg72o3sWcx0kJ6yf8zG0a4KOT3mbVzzPp9g7GW7Q+sO5WGoicYf51zspuzguZ1INaNStV0ZJPGPT1TfONh6ZFTiTJBpXM7iDoAuKb/qkVjw/mGpS8eade82Fsb30SzjhhZXahRvMKzkhYwu11lVFcG0Q2D9XKXUlAIisGmmB3dZTZOPXLJFrqNzhNz1snDiW5SysXUZ4CmY6FQLKrzkrBwAWF+0zkCNt2rJU1pelMv06+yz1cBGuKmOHhWUzJskQGKt8ezZzYz9WmAOveZuDdqYm2Kqkv5vUfwyYGtF8kUV/W05PNtDxP7Cbe3tJoZ5K9JC7Q6BNr4Y3GM3BFN7zGchafOST8kg1L6VWEHW7kJSFCJlvHJXiH5hULtR5RqKLU8Fnk0tNyl/m0y/Adj1Ne06habeQ2oH9BIkRc41QFl4E8Wge+KEhdOXXiLxJVXtr8jhhdq1FJaAwONdma+CtwOupDXSjp9rz2nJuYDm7ezu0tm2deXO4/6OT8vKWFS05kWquwuAIH1rrYr1vy7CaljMSzflkYHDvQ5AB6099hbFKr/moXCQINCp/UZrtVNoB85Ed1KY6CcipveuI/VilZykcwZBr43AFhZ75pZKaIFc5HZLW2kwJc96OF14A0KnZte8cn8upbnXaoEqQ9MrGa23KJDTqMvrq4QTKu5alQvAChTZ2vsHajhMRfafGE+swaXyr0ZEeC9V2W+Q0+/aWz9PuM1DF9HeOOs8nQlhiUP9LZIp1Obmqa07TgSocuUQZebD8wRTDMs8tm+nNlSFDbq9HhYk2mjuuwM2g9bbedBoWhcW2MdVCPWEMZuctxmNg89HAFR/+PpE7qyMgh55bG+jcV7QNOFI4ec+/hb4s918m9sNX2l7h15VFqEfWzwUFzM9g6x0sQOx/pIwH+l5GqYDRaD0+8uT4cstVVTlyOxb8udPSpLRU+Flry3TjNb8KqZJVYMLSArS/zM4IGnRTGS+qu2rsFngbVvflnHMRuW1TTcgSfOM1GqEEq0YNBakzJevqNlziMX99LdpGCQfeFlmVYPv1aeZ0n2m+UQospecP0DFr+QriAxOaK/xBc9PLL/qZZDB3tiRsisqXyJu/QYWzSEmZuv41LRtf1Nqs3EPrKxajdfUCtn38Lb23pe8zAeqiotNFlP1u8BUJQDbY6KrrMwVqXI2LoEWrdRRpIC61pmV4psrO24QcPsdgRrGk7etPWgw7Eu0YrmDmKiAAW8vWA8ZBsNY5leDc7mhvt1LWMaGhyTO6YdfRlui7iJMR5sja/9m5BuBiKQfQ0UFV0ON/blv4bSPxVXDJ+X4R5CM3VewMhcrT9bX4FUuVTpEGXyc0xbuTCPRbrW7zmA5ETG3R0c/pw5yh9DDHpaqFzVfVeW2o1g4S+qXfRGPEg7TpUBLprqQDSvQVwQDRz2n45wQgbTb9nnWk5THDRpGS0I5rwmsVP6wgoftZv6fQgmZuuCD5WToowc8bTEx+eW1TtteOY6LR1vlHwL2sa4I8SRpTPioyUcGN1igaJdapKVKI9J4Bjd9OfdbMmkPsdCu3TnLfUAvyzptXiDXZehLY9VmeWwf5B6dLmfGhmMqi5eYVLTybUCzLImRNytlblP2MEHpCMzQ36EHDE5BkWb0FOaZdDHKJpUa8e+cRoPCYYZgMjrWtnTY5OT0VNIGmfnyck2KwfdEOkEp1Q9EjHt3mhK3W0ZzVjmwhCk1bS4D6czLHCma+R25QYWNaVQ5r3I/J+WSfL7NaZI8f9WfQWyGlkB0wxVpGCsHu6EmOtiWpAiOwRmjLiTJ6YaUlEJomgu/X4GpLxaZ+vw/E5u9OpCm7vns+Tlx1nJcjs3Vuye1nHNbj+elA9vWt6JvKI2GFL+ABSPwzPmjjxrv3r7bjKd5brwnjNbOT1f/rLDike6eSK/EwURDsc/4qSdrO1vvGSp7cG6O3QXqYswbGvha2HbawYyjXoMzLffapsU2FbpdfMSMYOq0bgG+tUjUWcx8pyW0Wrcceak06ig+nzjzPZEyKsnKV4Py0yniIGpD2lGlzu7mMrjM1BQeHO1DGKUcvMOOBGmFiUyg3XI1jBt6B+pXm/Ftge8yrn7hcNvKGOutbJekKD1kGarHNxxmnM5OQyXHqsKEkDAs5lpOBapE2c+XNexYVSMDxmhN9MOOhN7ylwUDaN2bhWFs4fXmvUMTZbof0moWewajvOSKy0uSYyfrrmeNAA1DXs96vYxaSh1HWFdAyih5nhz2UxFqusU9lbei4mNXssPiDqG2c7YZSkPPtRp8TJHLUPSKunxnyartOf1bXt5qYk9qxWRYbFlcfZT0SE29fynP6QDnbEDis4IRfpRCzjY2OitImbdTDvWPaW6yTf62jyyCQZngPX5q8pKG5NyAEi/Ea3dKEHYJ5bIlG/LnRbtr5I1gY49+SjLV5s65LhmXHxUY7KUaj6eJFy+oFVk3WzY6DtN//6HDyt62pt/KpZ6hJbCsuLiPBkRmltqmA5z1M42pN8HSjhcGLJge7cA8ceNzucwZZssmwBrbEYtDUWRwrbTRg0jyoHlMbDCuVtba8CVTwKKkNbtlcq6tWGM7Axdz5II1b98NqEtrXzaiCaOg3j6at39p/ZZLSsPKRBh2SD7O/TKhOgLrHi5qvELY7qV+zRDRx59KKfg1MxxHmPf8RfeP1dKuOvfXwTQ23BsIA6jRTW/lRd+KzG3U11nUuBWbZBST68oOpZCwbLDWLOTIVdniNpd/5n7qc/ea4KtRHMoB11PHb6DklVaztHz5rcUwzUYniarg2/qPDJlbSHQPnYORz5n6wLra/ulBIxrVqXT0L5h2UiqNpt5utLwV3SymG6tjKveNUk7Tcy0l0slclV96ltJhIVv2VYkaTzFZPPHIYpp+Rw4U0c09fT27ik/9pXP/R2WkUBioKSGNzXlusdaxvMG7ucNfad6E93Jj4U0XVHcpKV2eklDM+Pk3r0JoXY6Sm02+b6xmYd0QO1yjEba5Za4kcvKOe96KI8Yn7di6++qcy83vCtvOHZNOzF5tixPN1tk+mJhb4PaKUl6KePKp6bk9qr/k9L1DupNXnGANZDsydta32zcohdnMQC2Vo31ZoZo/9wyBgOKrXAZ3EtNb6P5zI3u10yriQRY9F81baligN6B4tf/+mpaLEnqWNayAmu0TMMZXRkzz23yyMBp+EQw6NdSinS7foAQMA+WLcjB8qbZPQ0gZl+Sbcmt7dWqnrH8zH1EJHqjoFRsHAhhV0Cx0XocjK2WmdtQ8V1lN/2FYEOI8eodkWPd5cer/w1OZERzOqGQ73UiOazbJZpWAnsSE5Hd2217nXt12HU0W8m12Grmy2FcAnLuW0APM8Uuuvotu1VvaLaG2+eT1hZCq63RRsYaLRjmzETxsGu3raLOUAuKWV7P7NXDt8z5ZtwREUzzsGMFzmax9fdaH9hWc2NDaOwDASWJFa3CRvUeoH5p3cCSOG+PDVSRY22NsI2pN1Gc1ly2oWBonYpM+5R6NSF+qhW1fltgpvlj6eA89leJ6Ms7UTZTvKMEL2js/JRbrVMpvG01hK7ioDMbR+hq66nlcrPhJknVjRLO/kzItVRpVPs37JNboKBzRJZXHmmjwXkFitKaqy1Wm+CqbkqqgHbot09qe3cWs/FW7LOIeGTAcaOaj/7UrFhD5q5B7HiM40W3KzKRhlZ/SF05Az8Sa+eFama7k6OvwUXHqNv1FtT5BfXjhuqhtoRYNJINc0K1CGer8p83qzdLAkFLibaelvDMxHb5vHLncO98I4HZcPQwaR45W8k46+erPYLj03XoWZzNS7E2b3siSlQu2phE0d+s7juuOSuFBZgq2jgGPlzfeGWbcmkRRXBNJPZRMDVOp2Img8AQeswC6FADMMUuUaXFRNpLHJH+7CAcgY2hRIuQqak0q+4k6RN1VF59teudlC7yDKXDSC23FXJG4SlQHc1hvYanqJFazis8xliOs0by5eUS4geRO285pbidLBKlGgz+YNJF7MXlVjiNsEmCdi6/aXB8z+QXDGv/Y1b5Lh6BkBneWbWx+xlZVHHz1vFAVnIgLlZIpTg6LLqg8GkVOnbVlbItZ7nZaLbjtW/9Fufj9PXDVon+DoPWCyUvc2t2qOJRmC9K+PeUOY/X1qzXOFZZQn9l5BnrsmrxktbKABaNesxqBl4cyb2oKhq4t4y8NXT6m/SnIuROQ3WxbPiycAuAezexKdUAxRkaW8SZLhAzcsQRl1ULiSHL6iG9+FsUxZDS+tLt7n7rjpzmzfrf0Ic+h0YXkhFSijmReA40XubnI46GcEqNSG5YTGJlWUoviGaa6sEWVpDi/UPhZjM2nq8cNgJ2dS7RcprFNtyVXDdC0+a//3MAbQz4zoOmBezjBpcnTej3r9HSvPmjdaq26ZgPfAFlKkpWRYwAzWopkUAvf9ryv3MZYycbpkyRUA/relCDMHNoOMNeChKLXUCTrNgxacWJYMxxFFBc15ljlAK2m2WydYkutAOn3Jr4qqR6kExSceWXbnU8gWxiyfy7p/a03W7q20OaWUG3e+YQTrLlmk7YjlsTzq26c6WP1L6WlVOnQaTX2vs15EctjY6KizBUVZv7KAdl6ZKoM2skCjD2l/xuz8E6pt9RNjN2umnTbYuYuG6osRTOzFXUphu1g1PTrxrD88Ga88yi7SPRM4z4tbbQ4OJeCheRrPOxwYF4kqECezU2jkhd9bX2u3xSMNI1ApEmpSaBZpZQa1WDfxhZfNC8Jol3ShzKIbqU0eShdIYtVf9PbfkVBzyqeyIKuS7e7YOIVE0ICy6d7KTB7LvEHR1c7O/cIEpZu6i/vnQPS90ZCT0UYtNSY8bSdEQ2GZY6jMTKFOBnXEhftWtvKEjuNHE5gcwvPVfIsMAMHehjev18xtTNuryEqjMQ+tcdNaIidaKKfF33Vw2vTKgstkATbPOtII1LolxGqG+5QVMmYOWdiO4qW1yK46l5gEtI6TNt31VHemS+AOr4c3JJsogwv04Y7LtNB3RPekwbZpsQjpnDdDT5lx9MP+WhSNyTogRz3fammcvtIV3a0Sg3JJ1teNeDrJ+0XA9NAgZEJy0VRtLjL+ndlrMkCWlsLdzuq7TDsOdLS0dNqi0bS4xQ2tcKVi3A26Mmbzj0s5UdCsqDZo9JLh2Jh1H2FK9MiLGSVFJJDomvcxkGZe3cz2tQmxvPYtNdm3aze8v0sWJGzuames8eJp6zjD0+WZM0ZPrAJ1zGWQUjGbYcu6otjkwzi6lmRL/N6bcWbVxUbOrKkXWeGjODNjyxO5QZFTSR7FTlLeYVtujIchG7WsrtVG+26v9QunS/i5NYs+sWass4RoUSuzI6EjIMudOynzIzVprAqspFw91FTuw3/UXaduvXnT7YLs5w2XZSz4PmGtqQ6U9aj5LVcozDMNV9XRAwEIzTf2+sv6qwIf+lxrDU65cC1OoR0xCWWOvylzEbcYs9lgf9EQne9K3xWWuBzrmeJg27TxvWryCI16kb9SFTuMzTkem5UOHoSkL4jlxYfQw9Vs513gb8Ls8DpRhM8f1oswtwUmsPSOsVOlGk3+mFjtC655Ar63B5/Ik5xa+I0YnV3YjsOFiDDQf9k9oM+s1dMbVYxHNY0itW36o/A05/MXXuuWjTqPv7iJ9AZvXNTM5oPfePBjNHOHeFu6qyyxirXF8wU6Cr14a8pT+rFxZOo8DQdmwaKZKF0rD5htzFFxZ79PmKYXPsu/WxLst/2nZ7Rs7rQQMN/mUorZxxiLsPTzqI8TeZu6sjYQxkNY2lNHNw9DUWarOrbOp5yrh778gtK3eOn9Cglmx6tpZZ4u8F+6N8DR/rQtL2epYms7MqmieMiM5ieuppLrxgMAfRzTtM9NZSFIdFZGbDNYWpEsoJUViFvxPVrYLC3RIP9V1KQU0pnnlyATmp6WW6ldRRBayDvmmbdT8VNUbBEfno1xxg6/PabXNqlDC+BjrnRLzqj1NBbWtkHShrbCRrZZHTU9hg+dq0uTmdLAyl+bpJs9OeHaXUXJgeGwcdpZ6Kf8ZiXw0XLcm7Xms4+9i+6W38bFCjvuPXyZ63ezvB238bHJFW8syYAVZIbC2dDIWqGfAnkpWpke81wRWYLrPDVXqs3h8Z1LTDv1aA7dWliVIp9/5s8TDvGlA9MqIX0UNDvpU7DQ61T1a5PPuaoIup13wdUr29UcppdQyxx0Y0PlaxcZ/nc/a5Z+H19JY9s7ZoN0tLJuzjUYIWqYC7aSRt0oO5YHhwfQhS1GVtHJVAqbaITn43NY3mtWjZ8Z43LI5+Zo6yPenx71gBWT0fOado9GzMAY1Xr+Xuz9DC2RWAOLfk1X4CD4OzaslIjUdcyJvE5H1lVOCK9VADV3B0Vj50KjMw6hxDB99XlcNY3WsoDvWBUKQyfcSMustVlt6qjCZ4VnQC0cYqw1s5uas81V2EtHwOu1fTeuXsZaO9G7K8xA5oV5JAxZV0dmdOJADedAduzq260bCNE1WqxA6RZv03xnVpzXM8k+G8A8vUYfkPOe0qhz0IOikgyArdMc1Lx6VHD7eBy5m0FnffFK5GXvUMkHWbiUtuRmAy0LFHF6DfsFI6MtcUbw/Qu77XQ848p4gc3gJiPir2p4oirO2eGVGghOsfm1k1r+Ud/YVP8DW9pY6HPoOFJbt1gFPLOsSZvzzJn64bf0hyut5LMmDlLJskVYX5S15tYzK3o8V5UO2kZeuiCphKHgzaOr0DO5jHjsbPaFtW4mi7Q1EJQPXOtCAt+hXanWAWQVJc96HT0T5ZSHLNeWXseuklKVk8sU6DSjF+Jns1pivke6ind1IlbKZBgn9JAO4/V1IRmn6nS/MVC5PKS7B47raxE/3JbbaxZq9JZqqtuvZmQspt2bWFwJJZ0Oa4khn2w2IeouPWOqGArNav6nvjdcrWfeJDBGEatRj6MEHNjxZjesbEmdPc8BtrROwAdq4pN/nWeUsTGh9x3KCDUoI3HJ4F+MGtxkHTBpFSG0J0Hr/aDLg6OxTaSOmXULTHUY0zogGh42xsDi4p25Z5jkqYVN2gbPcuX5P14U6z21iNtZ2UVpGYeqppbbn8KLMuOOa0VRWW7Jx9nPKy+tadisvJ2jlR31vrc+zffBuc/QfUT3oqooatAc9tW5mCiilqovJp9bxnigqx+wPVJOan9ERSkR5zOTG1VLA9Ji1S0pZbHr0/DBN9SpO1t/LS3mFPwDjQ2GTkzgOdXQz3fmzk9oVux221U4Yn0Oq9HSn9pcGthEiUutYaMhBkmeDdnxdNUxV5ni3U16aFo9+J2FTAzU0UsOuDoD/2KLbZBCLNNdsdXJ/xGAMiPwW/u2lMOWDzQNpb4tCgaF3E87NKWGUNmA60eDHMd4hLXhtrMPRwamaq0FWugxfNMOia02iy2CIbw7RfGq625ks0LWgYhKa4fOIw64qXv+R3wB5NFjTDVw6CnDnVii2fdGZPqpEFUdsyWWXr828BHwXjkm1E69LoemNGNxe464sH/aOVDPCEQi7R8Nap5rpru2GdJKhs1Y1Tu78GNAE1nLg48gb4EK1DWLLc/JG1+6sfCViqNGBYe+ttIBgmY5ZVYNHzeoYuQbZPZftWu2wZbNwm5WwnsOsV5qtc8rj09LrS6R8bsfpC5i84de6/NZyUL1qCSdO5E5uoaw43g53DfKI5WL6kvZ/pKfMxHpjfrHMVZGrZ6Jalvz3g28YiC95t0O7nzszEvPk6c0dmDRXBMzb5r1vL0u7BJMZsG8MM9j2hBrV7lYyQcgY2m243YPmrH3VzXPQMwaNo5jbXAZUtPgBYoj03N66CkzV1i8WKep4oAKqpNZQbFTTnEbPii60RssNRFNtTPoYYBxcHma3TRGBPndUNVlCwu+6bXLss/aRYrFkbqKws1jpgXN9LexG26dgT01jnoaZ7c70eqSY0zeqXPTKiHQGtfgp9srN1IevbUgOXbZdIq+AJw35pl7S2sBGV1coGW5R0jP/glnNMlUCSCtwueA2opto+8zTH5RBdEVGybEsGHqMqMRp09mdkf6F2Y9k+WH0oao7O4iecuCfW0snreAO7Trc7iXfaDfw6F6Y1LOvgaHBCZ+WMHLaWTRGSvwOb6JzFMOui20m6aTnO2MmDPDWTlwatI/bp9dwVfZP2NQAO4yOuRjfo7Kl/VOLbxLVGpnB+1UmlLEVkzUssqGDAsrMOncE3afb0LzOm1uMdRtRi5nNPjnBJcv6hnmcvaVjdL0epYy3KTDma16jV8v/DJSN77O1qTaVKm0uepK/UWC73GN8p2jmDWYLjUJ1ZZnQbMfe57NfQE9kqrMMq0L0t2KmTe03AHoBEztSl1PclYZFd/dPDf3cPCYVFtK3bmwa7LqFsQ+zUAaUjj9aFKT20WbZSYpJNpAAKRRpnEDYgrhlwxQqGIqN/1uA+3Ii+pUJwkEHEvdtu+LErSLJcFJ0P9q+O1+36ntAxtXnKyw0Yk9S0HqNY0KhhHhmLy/WF9msyamJC2hjfrgLVtzaNWDEcOBWDXLriAgyCR4qSS6CmXwbLR5vlcxHGkJNytfaNlddFlueQA8fYVVc2t5eW64uPhqJ2tb7S/sJMtx/7RhhhGUxdel3stMcG5kajL1hBvzuvpZU7cd60A0ruzgPh2K9Hir1AT2u+7Z6baITrd3RP864y1z4g+qRYvPznc53ssRtaC7Y1YxuZFzAtoiqquNhvjs7uDnv62aRWNgaaE5u+nFhJkC4wh+ZzycVjujSitcYbmQP/K64h0y+mxzUpLmocPU4SV/G1NS1fS/ZKmT9xsqzn0XsWnZKlM6JnVJLPxbrBXdPIOwrnczLh5TFZdX5uql0Blf3U+SZ6XPRGk1cjytuVDixhvhJcIALaDUNWQR6P3a6WpcowY7nV0L2Dl4y/JePhbZpDi2ud84WuKbIr8aUkIwyAZjAtiLOI3tBEOeeO2lLGDRzn0xU3ddoSYsQLuMYP3DoimuNLOinjaapBY6dLyKk6HRkhW7m8ixdTqvhylbGvIvWv0T+yJIQqjw9lRmhay590S0ox7BbGqsIjWDL/OCydvvWvnrtRyfSJH5G5n1eiqKaUZv71mhJjb40wvm3Uy/02jzsUv5vYI1gxl7Czl3bxX1LbuHZTTBXqifRa22D7lvRW9/ND2LkvoOhfqgg9Z+lHttRn1RA2yOxnnw62MVrI9Qmpb2toHo2xCLw8moXSjzkSa1NnBU3ct0dWfHjAZmbZMxQqFOWSWstz63RIgb2kMrdrebLM4BemcjLDmRxPMW0yiyquG/mDLJtQsTzZLb+Ai4np+WdMYNm6PNGOWhCSET5Q8Kr3eejpO83ldQLkcGMhUwu0Rx/KClaQGd4PV526lMJkA3VyMnUp1rKWUmvO8NiUqJwz6JnNdkZO6K7qEZrwv6sGwQMNr6MDzD0nV4227KYyXMQWNLLwgFBhk4MXF0/ssoqm9e7Vo+pubyGHq72yV1OMuwrR+qGTLXlbGRMdpaDutU+VhSjLTGkrOceGulCqprwaOAPRA6EKcODpYSTIRaYjHOlc6spMjLB9rLTyTmb/SVTm7r04gZE3NQiVeDHOyrWq49ftRhgTafOU/7X97GeLjR3mJHLWTthZS12lEzmTdBx+t8y1OQ+GzIpWYFtZdGL9ApFPti+WOQ2QwMP0hwSa0IFfDyLD8HFvNYeVk1/f8HmI6MapbfQijH6dObLBRt2dOQ8G0A7d5Oeyw02emd7X6pnukNVxW59zAPybr/Mw607NLXF88utD0Hpk7KfVZ2FslsdbBW0BGU9lFxjkSlNWJWfHnJGBrE8NwRavNS7TV9iKzCPu58PkWbM/8FrFA+alkvhiFxmKGMYd2ppPaMyKTpKQxILYrZi46dO3Erm1qJc22HVtrtRLOgSmmncURhtw/q69jDIhvb/DJ5kBUudHXtkr9lRLyOoCycVjMHO63rDopNqaI8Xmp9115xb50TFMlFnXJtUY8sonSWlZNFpphT/GOVnTbQW3YzuKxIuXtzFXTmKfO7F2OtLZRlfj5LAshoMo0gZzpr8z5BB8pFuTmVv7IE8ZrN7RjtA5HugBU3AxEbV1jPZOtdEC0S45rgZ4hb1rBu46gj5zUkdsNZWWsi/41zYu4n3oW4w6gVaAtSV2o/W79nhwfRM5nME9cx+xdHO/ebiWqXvog5dIHtBSbeCQdVJLhLX6wzWReSXdbqMU9Ws1JYUK9yc1RQDZmlrv3MDjlCxL/Xe47rP0UkwHN7S5CfjRl1N1Wh1eRq7OeEFJ3MW2WQ2TAsph8x07GkSt09eeucDOxxk8m3zV7xYN/X2x4bFHyW4EpbYYERKcpmGyQtaBsl8si045d99Wh0Ltczfqi3S7Q6mTMXxBLzW9nqbCxupZ4EvMHROSHbUHpgouP4jWyf06GuRfYwxpb4opiAEFoMpM6FrjcfXsryJg+kp5cOLZbD41OubR80AC7TPr2PRuFc6Ymbr6u2Baui7OG695jJuoWp0wKZ26S0brFvYWuwdueswLx46jjE8Ri5iw/GbbCJWVqHm9mJdhYfTJVduXxdaF6/ipD+SLPOUWZ41pRv6n9todBU+XPxur9CrqUX8DsrK+Vmi8uLoOZpLlWsbrnRtVxTIxKVkSza+G+VqgFN3obGmhoNxpvSmuaM/a1aTMzNbcy6r4PFayrMzm1ImjFtfRlxmJWoTaJcmaPOtNxc3yLK56totPCppMPOkteB6w2EU587xklkW9NEFha+r1JqNKi+qWFUPbSTjEWwtN4zZNfoukh3T8FdSS2sr7a2TrrazJQ2ZWldFLKzksibMmutkdEbdeCbLZGkl4i/T6jLdIIeU/ztlnbSlDMR6ex7Qnoejh1/XnZaL1YOJ49VoFnrQN9waL1CdKdhQ4hOxti4wMp0N1DIW2xlOxIVqZTogF2SBysvWcpg/xeTpqy//ZdW01gFJcY74OUWQyJ6VZlrysOi64keWUgfI8bpWwDdrBNmpNNfmMRKOjnm0sVY6Y/6mqBfooJsB6lP9ylFxQnRAdRtz3G0npLNeR6iavTDViHmvBh4mcCqF1Ro4hVGYKMoJc0x4CFhmuFTTUptgqIK1aai9HeJIaW+IbqW83I6H7ZM4+pmxHWFWrynSFEHhzyDFuc165hTRDEtSZb2gLhxJUcDX+lgF9wQmaqIMgAep60pr9uVE1MFZs4Nd0dcffFDTaPhMhK4xHqlLW1bs94Pp01y1cnJ6iiANbEbINBdEWwVkbsE7Y/6usHRyftzzuAdnu11QUG1YDe9RZlL2gsbiDDf/2ymrIz+eDqIYdZQUcyauj2srK3nsQo+XkoOK9w5HACvP1VfJ26Rne7KNe6uNw55etK0vDilMzCeJ1ws9Xi3hI4yiokMwTXRdiEWktia+NwVe6HtCfgm98I4unnGrUgiYQldh96nrrLHep932ja4URKbKO/fCyc+n6fMqcaCqTu2JvGUw0VmUnTVXHHrj5JtJ2YlMJiIJoMVYXd97kOU7E31dpOR32YYICdakuVyjTN7mejySomxQ6C6OmdjeZ2e3A3U7pGxN1p5BZQg9iQz4J98EFCiMll9YWxpYYmGKXwo25KqdNLAXaauovcoGsk6xNqC6M70/Esc6ztvSZP8MCPpmujKVJp4GKSfo5AKf2JH+0n0xP+xMe7GAcSB46wHEsPtXubWKWVHF0216EJqjiljpCw9bZ+Zif+uZDstUtg58LnyYocTgnpeGqykUQ8QxMHW971sOJO2YmQhfquyZPrpw68Wm17jRwjiQ2xK228sNP5504jfWBoav0boa0cSjSeYHCruGVueuzLk0wNXYO7HEqrcRZ4y44lv7rG4Kt/jTijh51wy+XRCDCmWSC87bIereJ0jaOK913xQ6amXbhk/zMBXgt8bfZ9knQWjqSHObbG7SjYuln/w3GToKiyXFpwcSqS6ZM3FOmd7ZMS57qm9Had++7WSid6rwmqnmLb0emd1Wli+Y0Qrcmk9XLYDV46/EX2us4rYwYglcjkereE++trbsowkm+kNvWOL47O+5j3PRx9m2CtoDhYE3ZMXqVjKKvW3is6A6buDMIrl5F1Pm2+6yk1R3XChFlSuLuRV3AW0fVBErHfvxhemtKIUwQcriezrgtBulccpeSY1ZyK8NuOHCzDqcSIv9W11L0z6cA2mpethEKeHUF2NwPthyk+M8Vzk3zX54z1K/pH0Y+fVQJww6daQJTdQOdoPKPerw8wjzGUZckn+C7deITeUQvNQ5oqjs5xuD7EA4bZuxa230QMKU6f301PMVuawnh1O8043hgNDXDiYDQzXzYRHjRUxgMknFOlkRpSTrs3DxjGpv49Pbu1eK3J6AVzBs5WPHd1nkn0odKVi9Lr7Z9YXFxNbNq0ZR3j9sW0uxCUwcoXA/1jzlBSNtEOIVW36vm/LJJJk+5tsixmhOxzISDnzXxnDiMESeP8jDkJqKLUdAYV7S4shJf7ME+kjpO8j4ytsopazecrP3hesOPTZhQd/L6Bk9O/6UpTwBY4sEtbPmzBHfEuj3QOBiGXzaYr64FO7pyQAjq1ykiMEzxRqB6mwFoIAzXWEHKDFlug6Q391u1Y3IPkhTCBkZAT3VZRQE90CHGSitfuV9K4lDFq/9NHqbNealFR+GYss1VRvTjp1IT9fUZA9iyOKV1oKJt7aScgpmslHDvzWQStJ3EM1b9GVHp7LR8k3FtL52Pwtr8hFfOvkhlXzqtTnnIdesJ+Oatv9pDt0b51Ls894Nef/OmndV6UZT69F8VApSh7PHGf7bWdQYsqC8xNSTqsfnfYyWxnlZ+0eaJ8HGoaAXBp2wAGjLyTJaCiCo8cSQdpsZ2r4sofa1xyqNiRXhPJhWymc9O55xs7fUQ4oyrm3xQ8vrRu/DbU5mOe2sdpFS0FqujmUsdds07VeobNxifuNYVbP9euthOdVYadMLLmRCXCTkalZI/nGL3tybJWvU4Pegeav8davgzwiNvg28RgRsDNKwXmeSfJpSNpVXfqpOwPtEXJ9mLGbJQzfhiWL1h7EZQyR/VSCjIriVEyzRLWwQ8FpWZ7nDUWXg3Ks9pDGDsB+OTcyedjHLuadrpFL0jZxXo+MufnALc3auBbiLBYXbLqFt8ZpJgGNZQeT6RrfX7EVe2oG9VKdjqnaejazv9WDuI3hYowqKyhUc9J+xqz+N5D7BFtiNtJqqir7TEaqsZ5yM7arWMb4zpObW6ykU3J8DGAtEw7THljvdKiAYwtdbDJ+5yyb1avtyD0FIT8SjV8UPe0ZXRbwmZV7drNCmDdtS05dA6sHYG8ZQGjVqJgiIgRvPWeTGlN8x2pjNwu1DvUONncaiCqK6+kVsy5DfkEwGNVZ58UXGABPUY1UJqvGNWvO1JjV7U2hmkTMasGwGDH15jVTBtRY1QwJznIYwQcrdmaxqksQVTG28gWwTttjV40IyKJUHWzB3V2Cdt/mOGLE41SRgtAOmpQM4EGawPPPTUjWVbbaaOrRO62jq9r1Zs6pYU1derXjV2CIxV+QoD2ji7Lu1vjVTubRVpX8arI8U37T2vRwJqo/+rfbL3l1VE8gvVkJqqXxk0WxhNWoN8L26IKk0rweeyuRNU/1SV4taJq6hwW8ww9caCvtQsdTqIy9LviarWU4Lc0iTVmdY0k1dwByAO3nvqqOl+b6wPoVpK2OlWvoKGTVvN7WkXsyaq/7ZGvMHEeRvXFzzZyavkencmrnpRjfip1LgKaofbakeThTVngfIxHsoOzwHbtpdMaJx3U1M6iHZ1RhHymq+IewMfXOBt9e2vSbCPsABpBrrcYDWO5w2IbvAt+T+Bwm/U1Z5puxfKRtTq8GjAa7W2U9x3Q3rzXr87RmlvEVWSsP3KEF3EdPjRxuTaJBpGzomq4151BhNaqbQPwZEFynBVu1sk/B0HDepHZ6zLpJ4jqsoxOLuyxfDbFWxLdXORjCclnCqogtjHdPDm5QMC7yWfHZGgTrZswW11e2qCM1hOUd/KHzPT1PqBxcXPRPT9f4/tckLDQ5FFjd3J3Ys+tPnptKk5nI5d9Elvcg91Vea01Y0EYdzSd6MOgjMVVQ9n7kYe2T7XJk1tDEOt5ryqHqSrMYBuBt4jiHZSPQ6p0+Wz+wmyA9Hy2ad5yykbvUiG7aU58ncjecb1cfHG6rr56buUzzVRQOLqyXaaqSRhoy/V8pe/Cw+GmKBbk2pk224OoZjX3l/oqH1fLJlH6ldaW9EssPYssymYmJZrGt0WITwsYF+6zRvFu7PSmzrKrr9zUEWq7TlSfomdySRassnoPdKMCAi7U+YMfONuotW9FbM0mNQ6nSxYrW2YuYNaaWLVYD8s0euxat0c62V1m3VJx/ORRvQ6pXNUCWrjApgZHfgOiDAONI4u3iJLVf88w8aTz5zatXs6SnPaefa/kukSpwPhb6DN/LVSR7JJjmv2KJF4Pp9SXOzQo1b9eJUpXl60lMdnyygnImOoaLVcKXdlqZYuv+0xlHrOiztfqNe0TVd9lqz3dbzZKhNXZosfEOj47S21bKavaXGhc7NaO4EasfOajsM+O5gVzylJigW7VRmBLqsU5v3Tz4F6DHLsNeXlNJq4OMqlG5hUEgcNRSMyaC4lmynfm3XjT8ra7rr0Wkd6Tpw1NnS4TueHUtLdFfi93/2oGdZcNW5MzEW7Tt11w1fTdTcNb9K3gTbzEb8CZagjDOXXbG1ZtEkpNw4GDo61sySK4rPDVnPKbVNKH2hv5s0tw+B4JHDK1GD4auo7dvrrcUYvhq6O1iJs38xpj0JXq6aAzfmmygMv8NdcGqtfFhO0FZlwEax+Eew60g6XwaycB6q6unniRD61PUkgQSO8BVUqqxZhMwNFnEvBdilmESq00WSmcLE7oysTs/tENwiraUU337R24JqY+JFfXRxMeOQKS27WFMtuVXxqV4VcPcOwRHYBT7r5BwvRZvuNDO2PksHzww2LPg2GeoGbPALlEY7+osmz9MKnYpLS69pK1MtzlXu26rIZyqPbs4O8j0eFTFpZDXifdy+FpFP8VrON57Fm5lmPRnw6pyKPq1ZNzMkucVatxMZlWq23Vh+umMtfERVKcZoHddNxoMvdS1uYa10l6w2bOPGX0kwFzSrvwhSFfv1l+xD2jIcpvx3zZLZunjhxl6oc7TFmJKKyhZVK95j+fvypEWhcn0GCZg1d6ruPD05bfo/uPUflVxLH/6i/KktlXUXTvAZxrNJV5200wMsTsjz6yb91ysOp3GTTRupImzlFpfmrLJBMhTE41vxywWy5+5TVQ2eA89YxeViy1L7k7bOepYpYugKcx7zID491tTQeyHwmM0uQw3HaWpLqPkV+Gg9Y3h3OKurW18stIe+IUqywXOBvYqYQEDFONZyfXSmS5j3VHkpsyV2xcBvDD/t7ys8E3Nzy9/G8fzIGaSEEtW1aDSSYi2E0tTrxbOssaq5U1bhemBqbOmLv7aotd7xucuHVevmyLWorJKifHh2rOtpqTqvTrWmrRjtXEVbdba46tNHpknapbdW651U7VuWa4Y3Rg4MrQZuG7YsJYwXFwSUWTOa458QUXSO2g7ISnqUxMCN0RhtMdFKsdb6VuNUJP80YEBp2x5RXWjNg4KsNWWf2r/FGeZ0qIphNtwV7U0HiU3Rt7LD1xWTQoUZZ46TxgJqwM12OoArUv0mpya8zJWtqyOrk0RMGXpzPbZdu0n9UbfjWKt903ZP8e521VrD62eHgM+S5K5jKFRkL6qwJpf3RSJGbtdz4un7chyIfCTLD7rqgrVPOAtahIlks6qX22I5rsj6oXOp4JccHWgf6TgLOWp1dinMFkeDz6jVZyN2ChnDq3KOZUGsHV4+lzMdJpb0v8pjvw1/QW7krR5eBbzEAHoogx95qTjslam3XbJTJutWKdHaJPd+a29KtKKhmBoxvEWMs9evBHb04hifIestjYGK0kKmHenOXDutwp0HqGjaKxOt3vVq2lz7MTtawvdIipujnY5Jgt+slCGqm78slKi3NpoamGIax4PJSU86VAgxbWYLPyHvFQwcTCBtcdAZ/gxvweSm4tryxJGGYjYCRG7MueFEadEemvd3fL5fVkLsgGtu86jmS3XJ0euPXxIjouTM4U6ih8/cTveo2EnVy1M9tZ3GorkJVmFqeFq93adnVpwsie1R0IPU+1ZXsTY1pws4nmoebJhGolSiAmZZ+CH8ehNvIO5oqhDR2uwgQy9Hh2fSCv6xtzArOM7fYDbW8ArkhkLDNzI2pj8j9xpwWxLz7cL8sPpbsw6WbT9XzB4FTS6kMxjVHGVZYC9Nr8l6FaRCWObSgM1rknVrbWQvT8mtJQdPnRlOl2NP7VcciMdzU4DR1ebrqP5qW66rU1LW2+evgY6og5FIxNRqepjq7znh+QpDDXWyTMjVBnKqz+u5m2BvUItc/S2XVK+P9ljv1ij6EByin2DwjLQWqHUvHgYbesfI24fcyNCRFyrPc5bpKo/VqEtKEVsq1KV4YUcNtOB2oskmgXiBIS25+Tdjfh5SIkpxlYk3e60+BMeKWGojWT+Z9wsfnr0cS8gFV7/W/BWgmJXsXxUqRpVwHkiEDmM6o9Lof2aepF7GM+54TM6uQSlibcXCSkpjf7TkWmPZw1HeMtLRZZuvi2kt6pBNUGcddF2s2vDt6Uam14dGC6jqy25D0xyBco7WhPbNeixvG2BjLNJvLxvrTV30Nb2WG+vVcxjWH3dmGbxal6xQNEm5FhwGJAjrCsrAYRtkzT1kV4dzHjqKjCz7FkDkxhnrJHVA/E7XtRW67z43xJRbb02mYhhMWrdYNLcH2jBKKtI2lzL88d9jjBT1l163ZLY0jcw4RKGjD1TsnYMCkVBfyHZ6NWS7hruI50CWkgMNaaFKVqwpiS7zU6BEBitBA+/y2uB9UFZKaQ6dmyu/+sBKxarZiVv+7rk9CKihGW2mR8b/vNQDmKZCzgBDSS/fuYNQMybaYGai4hFbtT+DUQbIm5XPGrzgBpx9Wf3sOf3+l5rkjuN2g7U2TBsSePGlmfSdw6pl0MgQIXbI2k5rDjsdU+2MEn1RRB/V/trktjoXuWluvNad6EKKu6kt97PWatbFptYpuUtR6jS87Bpw6C6e6fGNwlM6X1NzrOB0zfV5vKbSWQ6gtDtUt+qKpZbmjxNb83LQiJABcI1NARqt1pXoW8TjRCFmZm/pDgZOMQSac+jJnZYokwweoeLPpdXc9LrBhwGrNu6ZY9vcdYAPb2e1UsggSbjHusi1lpAtXMpxGDWt1rtt0JCGjZ9RKOyhrbM8WG21I16Q/TljRCELBKAdz+N6n6TWMqwJYx4rrRoFjvu3X8YiR76VffA9pQYrx3xV6PaJsmBdjMQ/suStD/HEbbZ5mVHdQ9JrYdPynb866Nuu1COlNebmTy8EV2m7oaupLrF7/jOG1o4b3QyRy+ByDUMNjucLCc1QCzSmZ0DqmbeX1UtVJ6HptXzltNgjs9d/+vKvnd4sa9JABu66Gfrru+aaVprtUuxuurk3q7as7toteqBj2Dxq77BlpbthOGMnMwX6k5jfuJQcOMjVq4Js0FuGk2uShrZ02pHrYPzjVus1TflgbnrSmGEfdSBVultq6EmeGII3jFtn1PL1MkvWmNUaHw4dZnstj6BAgTeLhoU+1My0551izdNVuoG3rYdKCFY9ZN9GuQP7YewXVa1FmEYZLn4mCObCsXW+cwvinYLKALdqTy+0egoTuqFFB1cO2GnZTGmEbPOtHm4dAz8uNAntI/tchDwEbXyHDn5Ng28oLvoIwP7x2saicW6m9iiNpsJILYwaZvcJHZ43mtyivId1EDGJ9arfRLlbNw8RYssGMaI8qs+pYizX6AfYKIFOGqWd3c+s/vT0ZWE5pVnEvf86BOqf/TkBvfbqXCZBN9/eJfNXZpBrg5zrXpPSc9bd4WXLbOv78qHrZXBN+RFuvgoWIeKtMxsXCPzOvmKmtHgukrLIErojbiKRm8i/H/FkPKKkqVwfi8D+ctjMv+rCXT6u2CliFi21Poua+jlPy4smd+LaIOv6zbVzqv32Pn4jl86K2X46iMUqteLTzruiy7sO3G2jVySsEyPEXmbyCy2zodDIzj2ZxQSZGIsV3JQ8TTe3cbNvuIEnfbhemWfS6VXkN3yWt3u3c2aSIfqnbOmH6tW5kR+r7TdK/UmP1bNBDj9W8yMms1D0TJP1SWi3s75ENrj3W1ifWENcuToiNarTcO4+FiggQBbw4QL9WnwdU0msb7e5HaO11E6b00cOhp/pG6v1V6JNr9V40l6/VKUg/5ekMCyRI6t+q31WNp8sWxYaixeJb1e1C9Ovfqwycf36uaCZ5YaIolUHHa39tvNO0hwT+ro6BCFvHkZpByRa22sdbt6O/580Y+Z0g2XRax0cMuMjVIgwwRZ7yKrq2hqip+f+K2BNWuHLKVa5dTpVxdcC/o1q2pJ3IWGr1UqWKdjMElhBgtvrUJ28Ia2+SKjN1WnaKTt3GzDgyuGeYm/qS7UxdC7Y88MOMlFomfRFuH3mQHEIN/luKYnD3HjxzQQuS5jDpXGE/TfLOjW6zUX68yMpSh5/LG+xSbKTUFnc6yctNRQdfgdbduSQa6w7CO7d/hK5u7mfWMgsamxSA352B6gOqdiHT12GdYsxSFqYPbqeZ6qJ3Jkb6s4uOJWC8qHi0ZtvraNatzT+1IqpHXjakzyNaQU87cujCjSTDtujyDlpTe9sHZxcK/kWgNhr9nV7ED+UNwX/XDNpmnTj8bEbavLpFQDHeMZ2Ttwt3V8saG5PO4uCGbsLqw8VH0LLvmm0Il4vk9gPP14FqsXPF8CTH41V+SMNg5RmJ1ieUjssviZ0Xzydqlc9RoOytvUu3n3023PFdWsCCuaas5BeScLRD/mn7Srye2lSivxQ+zTEEG6dCeXh7QLPVkQjn3sMkEQzed2xZTXvBqL2o6pYQRz/T6zqPFScQo6j+zqVSrkROC3Mnn1gO5sSD5ZryBa1QdbW4jqgbS3QFw9DfqNohMp7AWYwvDQEO4aY0VtnPQqZh6Ltkh44tLmSm1qtQrEbaAwDeYpBdByWPG9N+1qO82HE2hv1McVXMo4SDbdiuCJYNId2x1EgDXb1mi/PGq2IobPqWR/jXUZRUwrVk5qa0YDmnDDcMuXC4qh2lW8ldZJnPAyCQYtnJHSlvNdDeN1dfIlhTiEO8d3cGNjtxxOTOgnYiBsChmXYa4Em72K2NJt2nyDt5y9LnIxq9mpl3QZixld16LM5g1817exhh+4o75krBrBk1awa4aTpAFyg7WkLztg1EIHXYNRCA3mbVcd1cDm//2k4NdirxoK7nBqYBhv79dxZtcGqNIa3BqU269waq0UZ8ysE4XPBrUkdbwa3q5h8GoB0amjKnfeTGvTcTj7nSO4njd0gQ1UWokENZUTy9Vl+Z9a6JKhHVXyTCGq4QZeW7uN2jP2xENYe4unHaa5NQ5G17YqTMQPiMBFomJTKVOoT6vENcCMtaQnF2qiQ1EFQq10R1ItcT4va8KQ1T0tKkNc9ioUJ0W6LPBpQ13RkNcDBpIeYFQ9wwBmjS9kNb9wMI25Fy8eQ13/Mx91gs0ytwbH6tAN2Qy9O4pjM6voGZEm1JQ1NF2p3rd2m3MHFjzTU7OWMDS7Ol7O0gfEU8LBje77avELTxevPsGmZ0lxaeG4xyVmGQLvCkgZs2EewiG/h1PF8LQu1YxspGW6fc1Ohb7CvoT7ds08ilrWishziGPTjpZZqcgjGbJSnPLV7dvB44RtNFaGBCjBtlnFq02k1BISozld6i2B3cZN3SWawA6Sf1UcIi5rmR6pSunIdrxjxVuXQ9roCPWlslKfMiRWy9gmvOvp/Uwe5LLybndU9A4nSaqCPxoYLEMdL6yuraNZXNb18THxoCgV+SM46wDWTIynQZmZNdbGa+ze8NdMCMtNYpfKSLOprbCIelZ9KA07zHr3mWgZ9fXKdTMIS2ltk8OL170DU5PreYqHRacPMCWdJso+jIU3a2NJnP5iIleEeQhJ2Wu3IutluAtnw6ED3HsdfV/SXL4i/NDr6AVgxBRUWPWWd1Z5D3jlyc2wa/me1JNa2XY9T6mkvkzS4Ul8x7g2BIaMMGiHzcyQXQWI6rUTkco5uJPDQFnfs7ohiVQeq1eJslPJXCRfesD/6ZXlgWuPXY8daRBstddoy6ttPpZ9LWwnU9fOg7rCtCzX6BUnc0hmCgoLl4WJi2t63/NKDAVwHUkXnKWbWPdU3NDHbi/lsRS6OSyxhmFnM5eJjjO2n+a+kLX+GYoDGeOvkmLAlocms8h6REC+25hnMKG633ojHHm3mYoaDqgkOHrmxQMMpmYdfMN1bYmrd27OuzHo+9N/QFfi2PJfNUK2z+omGKssfDZU/PwqFbvbAiWThg8JDpD1JHjlxU7dhd3nuzz3chY3xVrtusm/RLE7X90dbRzEnDdzCFtlryddciVxazOZJewNxfu7xsn7dmSPIa5aYTNxKh4xM36Fcoq2M3aRUrHsxPjol/5bS0L3GRxodHhWFTXb3sVCK1HVFubijK5DUPeFFWKfPR8aKgdgfJ/67cqNaV7QE+mx3tGgmldDUYLeqSzIE5bIbSyZV2jK/WXAROMsYf/DnomdGLHNpapDsVTlUwLHc6V3ancnl0gN7UUBZ8koeEvcvaDh2goXz47WMB01uKQ1jUjKpyb3bnzq7FZ6CPUM+TM80rfUFj0FfpbZzDFYZVHyHNFo07K2hzmfBR3ntSpk2EIs9DtNQUGgdKVL+OTrqNwDXautZm1TboiEJxZYEF00uOiHPXqjWXnIPgYEz8N02kxKrdQVC2UEr64CCaruwHbe+6eg5pIwGaNc7Jp88K1YwUYltspl11IKGG/YMi/BngYzEQHHe8+P1zWdDGJaxUo9oaWpMdDeJJswDTQRw24GkXlqUNlD9w36oU9qMGto9gtbPBmIzVsac+yIyFXi/0vUGIMOikbke5LKa4467kzlzTmsgBrOj3AxYy7drNB7AM2bHsCfMrc2X3bXipZe/dkXTsyp0HXI60Ha57bqYorag1xcDXceKO3abJm1JWmEQ1H5oPy8rmJhUDbZph/vx9fb0V1n7tezK9aep87NNoHi/DAnpw3OzzxY5Vxk8GY+1d9WS/Ktj7QV3V1F0nMDyymm2qm7Zob/O83prX0O9OLNuqlgUeD0GG6l9KzGysakipqQzEMF42/V01iOQ87HXun/GxpSZ1nacYhji6urtTWGxw2YWVKXHZ4pjZ19ixmu6vH+ScS96JhK4MOZoNtxFoCg8MIG038gncXzqxtvmHvih22kzjCg5tyOpRDrx874tBHxrNhFfCB0zQUA4S30V8SbIGembhs/VrTxj4XR3gHLrrTHuNsEVC+dzemOMg8pLvLeqnjqgo6Fhan9zY/7Q2dwsDqJbSXcue240cuSN7qmT7WdrMwlRQjVEVlNTxKw2mIsO2tnCugQSdFnXDhEfmMJC2O3IxHDqW5Lwfmf9aPZB1fTOEHrlRp4TV2dykYGm5bNCSUxTsKe1FBd0OBq4nUbhqw9Mx6YFZDn/1l84raVemv0BmGOR0zvlcfi9t9bpxMA8ba4tEVOJv9HD2u1LKkjVJpMGUZ++O/r9h7Dq7s7O2y78JHEmqVjFTtw/1p77N/Up8dk6jxYuNMmM2xLMvJV0GUxLmrU+vSqGu1Cp11mwohwwRj10lp5N8j8JpJjomYts87MPR6OaizRWfu0wWXomh1pMaY27qrpjJzWxxheJzqNUY2N1QezinaNbj+zNfXU3Elwd+WpzL/tnOzxdw7RupC4V8b3PtbiPfP7HlVUNIhGzFzGAZkNUwve4L7yUoJ8nPWGvi4UNB8UrfrZrVX9izmOTq5JEu6FDTowl1AXLLFutHTj24Rv19IFuM3THhk+oygtm5EdI++3a0kgBcaoxkaW0mLdQtrA9TSho9uzD2D7t8xbO9+YgPJRIruv86WN97RWt09ZZlnYH0hiX2+zci+AWcv0tj8ywgD1reaxUNSDK01fqyR0XxlgO19j1tvG9Q+nU83XQl2qMQZ+IG7CTnZGfxWPVM5CmQOIj7Fdli6B0fIYX6cBp6GTs8JXmilwTNa8D1mJuVC8nZnQQGMUm3MIdWf+NR/G7nfN8rYAlmqL8Se8dTFhNacZ0ixHcjcQh29fjeGhbo9I9NYIe8uFaqAmjs+iRawAU5cPcsihWcu5G7so9oEZIycbK/yGumhVWX5DxwiW2w80VlbrutFqawcOwyW0yyw7p/vUw71mHFJlu19AbY1xKuSwrDgV0M1z5ZzLB8GeUk61XWFcodFq1YcrqOacWsXpQQBtm7VEatTBeexW2r+uU7XewZRP9eAlvvK3hKcTjywI05Pt9idj/S2kVuGX0LkZ/JqK26NndLRpeLwpQkGyE6DeNUbi82ZZD7wzgkKDk5sm6zirk+djhtEw7RysdDJ3GfTeemRTPF/5mer6+aIjdUtJuT3yt5lanKkg9m6ESluiQMxrxaNvs/KBWJjVROeG6upD41M8n26onSkbGbaWPeObsb0756lvUgo5mQWxRI7+vMB0154amZaV5yxUyUikLrxFLAsmR+Q8ANWA79aNOYVF4ehEPTEfNfTH3+MakedZzCc9RLysp+UhgrGB5JAjFDpk/A16Xon+CRBWIQQj4FthKztSmeZ1orWWDbczjowwo91ramcoT29xbeKfnwa1oakaAC4EZ1aA/DBs2vxsPFEfs5ouRCo19OsGh0fh6yvL0WtQ+OQFNcUs1/VZSzSCIZLsk+quieuzfGbE6LVOV1tA1kZsw3J11I3oCg2lOUWuwFfqgw1pW7O0dfdTR8v+BcgdJqN5Mm8E6umCanNbbZpNrL7RtCI+OpRTaJjYv/MWsE8Viq/5p4w+iedrONJvbB7DtitMbSrxukcnQfelGQ9eXaIgemoheDyKfLGRCNpBm76fPysc9EzhqWanDpeFaSOnLBW4vJLY55RN1eWXRHSrzqDUKISa50Kmh+Oo4mBoVESzx4YXiNYjxvPTZX8ao6yAs2DPCWyGAPtPaGfhY128kAD9RlWqE3CQrYqxxMt4Z8iDvBuMMklPFHwOZBnBhskX6xBjKu1odlxYDHU7S8qFBW4x+ju99KgL5Ovim365e7NqAOG0tup1jIytjeRAQ/OhYEtPx7pfGsdolR2vcn2Z3wSU3l69CJGe9M69tulKnUWboTu8Mjp3G8w2ZUozwer4f+Nrp6Pm9Bn7sLMNPb42Tcrg5nLQ+JlgnLTmWG4esegZ+T9LAtaMh1+rpxCNFVp+2QoxgZzEpLoXFn0+ceTMA3UesZAM53o0wMPvORs2iUGQBCs5Pr2b9rHGRvusP2uwNw+R1JpTm41nOg0Ine68yHlYdZ9yQZl4MpOVm0H2jekv5KK8Ozatb2kVimJMYFgl8BytD3WiEWm77zaiYRMtDYeSpAmYTRYHUrKUKvcs7Gp9rXDHguC38dni4s0PBccG9tTqSQx6jIpa0W0WJq0mQCWbq1YLZN500KNy1ulFHcFf0FK6rN1kehMILVzrY5wK8cmzNM/8+XoTTpet/eJ0tocA9kuBAS2laerFZxI8lYLt5ha0QnLadjTWzUyWzITjsloy0sgeY7dwUdYLAKqWu5kPMm5opgOSikwrjQ9O5a9FuWiyrW6enJILCelP+Pb7ecaLwTzZfIqJmBCELJfRYZCO3wE0lNp6mKysjR7odDsnHqvHzldV3+ixZVfY+tOgGwbNh8JTjSyO2oCYx4622dMKX5kF3MXxbYvVXhHh87X36Vn7TBndLKt8gbzw9y2SrbbU1la3rzG5lDAM1flnFjLibrhPSWu4ZE802dSQqvlzoopKOzHJdKTCRlG8sPCnl3I0Lm4hsMzm9GC/ATssxOxmGgtTc5RKMjF+jd9CwOi40c1Om6dA3CYabSrI2mULDjDPBYcbTUKV72LK+bdt9bJFLuG2n8bMNubMmpfDDWdSoDR93vFVrOyasrD+TubQe1wXTeyxLz48XNE++jTOmv3q04JQh7FgKxnZyGTI50TQbWoH4r38Ibl4qMkR5dkou93oxqku8m88QnM2sTav4dQyXiBgRZOipj0XQtK+4beVtDf5bpSTREbcFIn4ks6CRN2pWKpM7QytKtRCgAMRluAoXErluLszEPFxkTAC2VC9adngaUKbTYUoDidFcKwpFJhv5y3I3sqi6YJznAgx+Woo2KfpjZtvCVCZbEuEZnuMqzoPAMWURDXArFeVRvXha5rQcldej1wVQTfqyMprpS3KkF63iq02aeK62z5YdLzcJ6kaHGrnsfNI8834gCgKG2HcusIWQ3PCFUVMTl8RXGDWYFez+wBMavMid1Bt76o+bqSApz1Ye0DthxTiKhYIcsHW/Sbkfd0969k3FnXpoqLS85Bx7NlGKjElq2O9ou1O2e4N1nlOmKuU3gERLx6bg/MbWlv2bNk0fbxPBE6H/9NbxRX4qTjaAFt+O4oTTHv26ADNb9ZgW3EsVQEj0+ed7WmTPg99tCa5PQi2+mlqXM1xh3yyadnx5Cb61wVS+cRsxgIqWHwY8FSBBhUq9vviwxmdbj9sEyWL/MiDlqohrKfFOJqAlWf0zM8LvS4yEbb6AsDzpFvuvzUijr1m2EssTKnxDGfWSurqiwa2WrPLGvlY9XYWxhna0xCWG0cbvlkRdbi+rVnPeAZGjiyx5MVS4fFUCNzVVaWHqNxNrzcjgoWrKJAqFJ1Ss9abRYnkFi4oyHq1mqqANRBH9fEbZ/Pw8OWPgsNG2NJ9E/3UScBs74I5tvZt1iDXars8ZzuQ3q9cFqORcY74VXP50vGHE2DoApkqSkBzuwvy2noBAtNhJkdDfPplxZIKOZ8z9NNWDmyuwnqKFoXDZvlyfVuJ9rdXAQ5L21ibm4yc15HTYgeVZX11OWFb91/z+T9Ss9ZhGf1kyZl2aCFG/+u3qqMfHp9lF8GkjPZKG06FnaiSJBM7KPySFaO8HdXGVhuTCNXOnrLPWf9vbg7tGiEMUYQOCQLJzK9fYDT3xxjZnNyqDohri88DDgkD1mwFsJitc5Kx7N7nUjWroL4fkyQfuId7EJtta1JIEZNuKWLm0hPPDlkrNzRlWLCr9+6qUjHIOXpK0P4aqFLYjmv4Pdurm0Ix2WESDNmlaWqHXk+qn3SaC5GQM43+Qk9If9ohmI5nqGp1l+WyxnNSNWdRyET3jwqC5NJscjQlogoqdGWL/KLaF7DLQsHlaF0VW2MS8N3VlOunM1mRLvUPWl28E6uNQdfR2pGo0J9pEx00IOu1k9nfsDsIKuWAK6zH54cE5A6Yop0opZoWrE/Om1GlH2XVHO8D1iDNXYl/DDOcemkWtQ8mAq1nPpjVWoXusQEwz8V3dLyiOXQejPaZ/7TgHVEhdslmXeo4L2bBDKKJnlAq5+6oknEote/b3Yk0fCbBFa3m6qUKTYG10emQkMin+ypPbFncnyO48Xa4s7Od1uzUkTTW23dG4SG6PAW2ybSIhQYGIj+Ex6rMkpSuDMaqeNkydFXN8smfmfMTBoPcLT15T39XzeZGqCrCRjd3izOEGIJMlWOTYG424YabRAx4V21+AebfUYsZhDK34zWk06mRGt1ahw9seC2TWZtZKDVBm6dCkBuSytcTpsRDX3eU8dXN+iZ6wrPEkIiHklxrLYzqXnkzyYbH+9Ql+BM7HSekSur33J1LDpAOeeLdv7r/EpcQbdx1RM6j6rU88b/I3XQ5kP0SAx60XQZBV44NG6WvZyGt+I6dPMmXtt0pvqNUswW6TTdUKtssZ1R75CS87KOLMPP9huYfXW/mr0CbKtCqojIPb/WvVxaHUjOS2vB9FoVrfo2QyYVrdPBGjVnZ4lQcDxEYJVTb8XVDJczMOgHyxvZYKqjScmAFDMxLqo5wgnrg+Dlk+q/HJqRs6ZxChHlR0iF5s2HCwns4KtxT7u4DGcR7EDQXSQmDPYWGicbLD2hKfY3YdtAywz1CJ6cC2qZK47rm7ct9T0E7KeRpoqnGJlhUAtSyWXBLh7V0edJU1kQZodT1zYbzMVUKc8JCRVILrpbgtStoRARTGjxn2N0rTUbaLiip+gLQq9qYew2jq7YSXah89zCvZcVm27zrJp7tUxBYbVWneKtK7JbtTyTbhyMMgA3SqIzbPbLvMvlFc6sv4jQoKx5tnxy6OFJK1nC0rheuJ5Z6YNTwK1yprBrxQmAz2rZIMclrOTQrOKgbBq0tj3EHK05FAyAgGJSwevwOaN3Kq92XoPSAzqxSuDL4bsLvnGGuHIEzixfyA7EG38/weqf0+Jkbr8MW4keL8AF6zQqkEXZB7T/8Y8yNqSx3o8gjOeEk2AT3iUzIiJY7NOG5qmNKjB7TPjMPlUaQrF5vlWJQvlL4t4XVBgnFUjXVopC/EtE0n4u0fG9xuhiQwwv5Zq1lw6G1febtsoEx+EG9Wc5llPHdM7Xr1PVN4bGyNmqN8hTLvju/yvB7YGFKbjtIhIvEAT0htsg2dz9BA+iV2gL9mhC0XSFM66lD5fVzTUDnKWxf5q3t97V1RR9P/utgy2WM7uQ97v6Pc3eGLvr3VdYXfKi4w5u+DFuNUOHTLX4o+sE9W58YpODtK8s0BHBRNUWuKjdbF5cpLup67zqcWkWuDm20JVW0ow7p/yLeX1T5DbxbRKUNBi5pMKKQdw/fKtpZnOp5VndgsX58rbbGkDoH7K7cqx4KR8pXRfSUCZ2M1vC4g7L1Y2AgS1MYVxEwmc5U3Mq+F2NuvPtpKFsRNHuJLPimGbc8JGU1WN6noIKtZ5+mT7Gntp/RzFlERnku2mVeHX+Jsm+PLI1kfSBWumW2uaRn1YxjYbhO13i52fsy2ejdQJ5y5ImSSWxt9PIg3jbLIsGashC7XuVFC+6Vq9yxEbkx+N7x5+wuoT8gVmt/nWbobeP1bVO6tTsQQNE96BMKGV5OmipkLvejrcXZpSSwoN4prMdpoxYslfHvnyA1xarqn2iaM6Wk3nW1S5eR3ZtHp+RFrsTT6o/9ke+k7LM12pjEIHXqO6LEaWeuihqCSD2ybo0rt0eyph8DPMpjZoo+XlYvzzUt7ZmqrjjZ+tUHq3fanVhULZLt+lqXxqT10CzSetdU3Mx7dhppDo4RTdHz1wcXckaWvrtCxW9CdzyAD6fJUqfgj0BuU0CdU0JQJW3HPor4oObmCx7BBBAAOxunhsA1K80U6swEpVfYpA5qPCqRz2X4r/kdPwmpdfrSTqcXHRcMESONHzJCpqpaxbJXbO6FxWMh9SI7Vs+oNIZbVCWLO4ZYy5Nn3eIQSlgBicnWBs8h/cfsaqopbzpNre6T5TMteswLqL+mkviwyBoLUzaLqVIyXyY+ECwf6JYdC5oanQw9mUxNtQYeTnIhbFpdE1FzauoNM6hIZjctdboPUL7E0PDChaeUignBpHgPg5pNnsAR+/biwYqY6awzm6hh6j+dxeg+d7k6dpUzVKBLwhFEVUk49rxMzb0XiUNeRFcQbRAmRjiKe1a34bRTmETnNsHRjdsAJUpNqX5u7galJtSJlOLj6dWsj2WnYY+BreTnVUj6NHS9KOhXzGW5YGPW9+Ual1s5uaHHI9xkw3NXd4+t0b6edyeroth3dLP5yN5q4HN8w3D83e4qp5D6fJqhvVK53UvtefcxFfEpUddDtuQrcX+vqbqyVHk57Vn5vkzXp3qw4whqWtgrr6VZqnO1iaNkOUF1B9qvJucBEmXrkx7XWEGE2Thq21oAlbtegHsQ7nGU9zWuzWvG/BaxatMp5fE7t9dmdtWWLdD31ko5KdS9aRQHjB0OpyWJ68yYvrCERSzq44xnNox8PbHS0BWGc4ml4ZkdWsw9IrlNBBGaQfF7TtIJrCAbVXzEGZ7dqrLgbLzzy0R+18UBOhlq5MiUUgxPZkf2iT1Vv0tFypr/qPhK5F10EcJLBepwDHRI12fpFz1IsVBjSit8m1BJnLkSuLTBFgxfL8fv8Dy+UZUDKhw1r7o0cjsGAwzsa+a66um+Ws8mrspGtwH5QKbjadbQm36DTon0ik4kZKzT2FnnU/pXI9JxE5y5bGYO1YjIjbmmPzClH630bX5+eLXqxUZhNOi4zRCFwVrrW0i6Rju0KrYd81QKBVJrRyPgg3z07HOOstgmHB9WOevhe3j247F6zidB7zXENkyfRok4BKsFKBTGEzxpc/7zmXXIfsoRl8CHfB5kQfWWSWDfbaFRnLm+ThopXNyQ4EeM+sefJDJWqTcNuz75lnD9e1e5pYWDtJPxig6uj0I2RFBuphpc+sOpz40Rt8iOe6PMqjVrmoaFpM6dWlFFJrQKjrY9JMPkeZMHYZeI06alqH6y6q4E3ScnWXPtJ1ic7VxzPYx8ttNF2Ji7ClirN1KGmgtTGP2yrgvfQdjAw9iHCwMbN2hP7SvLtvpoyHoGLyH0+VcMg3GQssyjlUi4qu61zbDTMJhm3OOUGEGt25FSlbGDjmEKuCGZ90s0256Gi+O8uBxt5HE8bavlGLg3GXBnjbw5YFtCBMSeW5Kw5vkrMPrV5m+rIwBQhcs9pRqooRrYA4iE1RYiS5gOk53RwxbUiiCaGYOrDVNRuqvtYZMIcs0diqMqgLg1VKjY0+EslndX0+eL8qER24s5yp929JydKh+trkbS9o4Lyry86UxQ1ldTKxwYUmjFdeMR5OLNUeiAROg+aRqacgdb+C9sBhPnwD5ovQKpxxYWbBJccj/y/m74cMpSBe4HHoPr1+KJ0kbCye/Jq3dKHtuVt0T8X1oaCMGLB4nkZWL3W8H4has+llSkfDL9jBvKmDHz4y6PVcqk8wHVs1o0iHaktyuGI98xewfgPXAlFmzc8PJgCa3d1BFiwhYUYxCw81G2DIMTqv9qUmHm6dIvatwPMbyXBR1RNZCOT52txzTDIjRjJ2JS3eAKLAesTSzpVp/8pE+4brDEzBHmfPPRcFVvuLGJXb1w+LQPPDAVJnp+JZ9CrMgmJkUsFXoyDJ8DZiGDs4VphOuX0vBnPfM3jTbVxmBwrDu2tqSyoAnDc1bDmhuGlKzgEDK0GY53DEeegD/e9OvY7NwXF8TLNLteUnTogTp0otyZtL18pl+xTZw+XKFvwdbn8tExOY5S3G2tvssMBXkKs2c6b7DbUcWOt2IQ4rA9Uv5B+fcvetkJyDT0GtaR9O48rAZIfge1MfreXMYvewZKl4ibu7pwLUYBd/RNqwHTvdU3RKOO5FH1fUZc2fKE2SFuJOBZYKswZ+ZBbQtpt1SweEXBkMBcx79A5huecHPFZ5bvCnS9Y47F1Kbaox01Ed/caLeOqPWqcfrfLd45fmqTbhdbg5qhshqVO56NDcN81/ye3gQSMergZbyZyYsGO201olh+ysk3mXPL7j+mUeigBm6Gwtjn1ptvxdac88SRl03VM6mMdc8cWmSPYSpcdivnWbPYs6c9t3dIUvYHgrorlHWNaJONI4xP8Vvgx1+mEpalpdIIU1Rqcc13KWU9gC1xxawE0pelCYoxzUyOsXjpgkqj4vsOI0Hzk+98ZkJWTSjs1ppWvFXUdLCqnGheMvOpidFO9tqTwcgEBpZ9LTmVgWqwwUIL1JeJ9Pyx/gWCusa5EXUagftGWXNEOpe3TW93nhspwJQJnZWdXTtpGvnwcaWEpMeAnGDsvQsjsV5NzMPGu6vbBdjRKy3S4py0uNmruysDzri7zEfVgtskp1v+LT9nt7bXc2njF1xI6hU+CC4W/Lple4U0MPwurCC+k0UGM0hA2GLcdr20q8o+Xbxk1XA3xOiP66iIjRu1e/ZPQ/pnJc+a2eeUKRtQdHVFs18nSX/+GQihWVaPE1Jv7sesPihYe7JVeuoFLjbaNVMtDRr77Zg+fYd1oXV7/D/PW3GKrp9sUbVj64/zzRDRA8bIRPdRDrPLarz08u6KItYnHnFPQId3QxtGb6tJygOkkP2Nz6Upp6ZLOzos2DLprL3PnHTIKPX6VJ6qFjRH1JAL6upDLk6GYChjoWsR20Pa09b/LG03zGXTicOORiadYy9UpfWde9LuevXCnH+Pl95to06wEOf9EMoyZ9kNSJt+tjHb5ikpxoqXzCqtTG3nspHkpYvRf+V6ZNcOdKOzNhrpUjxn84Y61WnWffAlYHrdrxrm2vUchv6nWSgspWYaoXub028+VpxNk6Z/obsIgiFvltDbWVjM33Dq1Ay2t6zfqquVAPkuZFmj53lDZQ2c8jxrKYpE+Zv2qxTYwKy6vOT6jYXrpaayt0ZSvCII569dXlRmzFoVU4+FadQNSjqoNFd59r7boj67J0R0v8vb5veis+3pODssBdX4o8QGf6IOvrVlfcSJGXtjAXXunHr1NXNWc/VmSSKzAKbBNyHs6lHceF1jl42CbkPWoVYWsojRSOMsXFNcQqjNUi6l0KI5aLYjTaCSPgxk7pSiNnKt4eG6Slncnty7H41SXDebEDM99UvTNxIm0Ai3Jx49K9vxi8ly5KWiRLRK23dyvgDviUOYa2IlTDmBOC9H0tdwT3xlq8E9BUdUUjdAziLYyl/atQTOb+zDLK7UXYKs0bkqh0yc2jhKvr9V0Qtok7JvNqBJfpLI6TmhQ0ch6iJdKIWefEzFUX+ItQ87OGDwCBMeTc0ObTFJGkkLtqpF5y1rfNTlfPzs3niP1SJu5FrOutSl2OYpmMa9BhV0C8rC4WlctbNUpYibtV5e/F2rUbxxfL10hrvqFxSClRRSiJyDNUxwbXq9ulGgRhvJYzAClib0E8eMzqoOLpLTMmNYIi9CclxhUcQBm2Zyc946LsoB6ZQgtLXkpIy0BnQKdhZtD1rOkYXL02My5MhqRnGNUcr+1jyIxQZWBhDRX5wYQuVoasQyKy4bsdE4WVkDbVVaL2Pf1q2n8oRpKsfJ42t7XotsWeZsSwBaH6teugk0vK/X960LqS8WkiaYfpLUo4lGsagRu25Qnkdcaislab4KDMDmAHgq5oW2q3Hg0xp0Q+Z8immLlZ9gMbkZeHT9BNzkUpMZq1FnT6HOKd5SGmvfRd7WYTotVYQuLxJNl+rHijrJ/NHZZl792TJtmvQKnnUYyxL131tuwVYEdTWbe7+poDbY4afzuyVrUPnZiZLywDAvtJi5/NanIWmAwpbL33sk2fmEHLDuJr2Q2uBmDpddQlKqvcndpl/PZ348fLUT2iNG+Dzjfb3WgkfcMlY2uo8ikeqFMM5958Xy17apQC1qrWnRNirFOLCuLxIV2uf6ZsiP0xXa7c2B2kqytE3iobuZE6YX0Uad9YfcPVcozJIL1jwbGZOtpSZ5TR6p3wAViEahtWC/mkgTjo/JdwUc6iojlANHB8XjUCxEcbaszcBe/fS2PManQ0DjZlWCmURAhfbU5WRbMdk4Gqq/A6HYLIURtcis8bZWejnoNYDDXpOZRqK/NV+3bqBhRTPRe8TyJsvRYMNqim2oLHV7hsYz2ytrtNrZohVZepbTUrMP7N5BWt50GNY9EhBix2vxZ6giralpKuUgiRkT0zHXHkR7wAJwhI31URPF3UlHZ1aeINlOA/A9tVgPqz08jSjtWwukj4xYDBstoGg17L2ZFVw+SlXDw2bxHyJ7zDhT0ClVuiI3R0JmPqK93mR8rHP5T9oNy0aBSs3TmIffH4XQbwNZ+4LoCgLZikc4bbaQCzu/p0Kd58ZMYjDavnYGuQJ7Uyai06d5zS+DvnovAK0+Mcx/Wle3cp4ZI53wAU1+99x5LinEFZjfr3ZXrLAMZ4ZRhHf+CfVd3GhagX8A3GW1KxnsYIiP7h1bLM7meTuOnr5U+vNVB5p7ty+upA/HMlo4VOpS3dN0N3WJ2wizleBb2kU1Hnre2JB4nCDdoiayETZf2sVmBQGwwQ7XcnO4PWZnqMGF7De3A3qnnIXOXKaKfBNfMPeuMQTay/+4z87I7F1Zk5/6Yn2wP+07Az79N4HrDZDe/3WuM26oTprWQQrPPsYhXxskWhKjbiR2QQhuxTHXqOAE36b575wBg2A4fBqyjbosPbmp2Sxo7eJkdkIGR6MmcjkJvw3RsXT48oTcaf6tqgeMYnY3aZmGoirbQMsFQlxq3QUGbl+xjFFyfdRTdvuc5llq9w3XHlbjii/WchTHaWkl3SewkSkd8z1c1em3xd5hy9KZfL1SIGE50/FZSOt1p1Z87iPoN/hdf2Rdkgqw35OjKKQ9+qMpZGd7D1Ku5TTbflduVLD2AVYvNDx2zDaHgZ0IXGQlTw60sfproaXTl3w6iUbYJ7orZ1eODCPWHH3BIriUa20Ja6gz+0WK8LCW4dlMNaR4Ugj4P2bd3Yq2pAJOk0U4XDQEdOODdSOVqfzIVETLsHwWQfnTxkfeKpllo9I8yKtwEndj5q6OpT+4b/0eZdPyHI94fA8zVLlOEsDHppNfFWnU6/IyOmDOs07OQdk6KpY+DMGnI97SIjY1Ee7ExcayyoQ3H3a0hWdsgwCIeVxoPwk/akg+dGuvaNFZ7boXBYPb0ld+/zarMzS5p1naUj9c6O9y9jVhrWT/UEfniSdH35FregATfriplS5CJ6TAlF9CkHJaIwJgpb4QNA0egKa7RDkZjoBTqouKIgmd8c/AbafKs3ZlOA9k9BFtsmjvqGdw+U0vwsad+E362sEXPk1/7Gf2sW3JbHemwFpgPxBY5u2CoyZ+VtCQQf3grqXYeb1K8eRibREtdGTPQfky5KJFmvhfT4Jg3Q2vB3VnMZWp0NfF8nY27TOrk9tqKNtKCHQRdh29NpJm3EzDup8WEq3TtluJgSXLcKsG+SzHBz0fCyscp64Dd8mByX8ha/kwnQbDnbeLmXNcPa29ppUuw2J2SCtnA+hLc+nug8vz+0bwvNB6GoazdgRTEi0ZpLFSp5ZmNnKLhfJvEjVmb1d7Yz4GszBaJksKhm8AnNQ8fGgzPLJzgQFjZwDEERJiGgGbBJzkAvkSc4Nd71G4zszW7JDeAHHmbi1tPZm6jUb2ZmggxOqYxzM45mNWZVMVDrMwhGFVxI9ZoE9QcuZtevU9mhCOhq5mpttChJO7NAK0aiZIoAAfczdOZrRWq+SQqAB25mu2TWGaI8vG7maw/lyxU08zf3Rm8U3oWixzMF5m6TAgVJMvM3E9GiZJ15mO6SVAWvZ7z7KjmpxriIHlUTeZo8aTUyi6s1inO9reYRGk21iAgr0M0Vl0RrNU6LKfMwUuBms1jrqXAoDeUuuSjAgpAeQfvyrBJTKfId+0asDHftEFmyX0Tb8v/+R2/Kus0L6aWxEEGjlsezPiZ9x0R8VhPnDQZpscNizVNRzAHmliG/1vlVxz+2bYfc5A6jgHF0rWVbrdTYLHtXZ6kr/YI5jADyYCEvWkoK6/TDYyOt5HwgF5fFiLnWf8Xcj1WGMlCy7tgi0MJvmjMK0Qw7X45FWl0HMh23Ta4lcqkyHLXZdywT5ZmajWsvFpOBdpWZrM4RiDXXtrUvup57nOkMxzaJmqvanSYJ3bS5oyaZ9uFeYhByXcmvdoF6kyFG1d3DaeOT09y1ebKBiHqmuNa/6ORl7QVY4YqrOL+m0cjzmgT+JC6WqptUN1Oubaf6QwXWbgagsJYkWL1YpXyvN+05uqCPVubq+Pe3BmkAsyKtiVOcAF83sNVqWItWC5goESBgIK4AAb3nGIln7XSsJwoYgDlBJAgB/+R1oI/fkM0o7bYpEfqQvIF+FIzjyi9UCSk5gRR8OJtVJBrEI251TUxhVfWsNWUsaynF6KZnRr3puj0sxE2QDcP6py7R4Jm0VzUxYTZ0xeFnWHViklVMymDme0ioH6RGPeLWss9LdsE8QapGBMtQvx5ogOyj8ZaxNU4+eiWqSlU4JzgHo7JNh/6N3uv4jf37vWo0KvSP11mX8lKdmpQ1Cr4cSNo/2vGdAV8e4d2m4npZ0Xc9VBHZqia/Oy+45QqsN5GT4/YAwfmVJWGmbNNpmGbXYy4aWsDN9wbX20pXee8Kkb5puI0HwbHV6K/luioiXectG2XoEZlDRMm9f28Rrl9GuFG2FgthJFHqbcZmZDDJPD5sz8+i6IWbaklf67WDYbZyTRPaaHiiifnZs1ekkE+8+n+WaIxwSR8q2zmHq9rgTtTSrTA8Wg8xAgYp70xQBkqDVZRUDKLXDkgm1aNaUDnE+GURppYBWUFjdOZeJ4rnThLvMJ1Za4DJGOvYrKt6U6NwJyjCncfGVk+OmlsdsTqajmOC8pr67VrHSOeXcLKnFYD7TNd1MwvPbghKtvqymucjIW3pGlXTuEY0dbb/KyNTtfM25EWmTyxZ071cCG25KT4xu3uKWJ/oERwUJWRQG9AbBjmV1wh4/cqi42PdqxrEesV1Bfll8SDi5yvHFffhZRNR5aoILBB6fzXFKUbitvG62ftMm72Nc2i0ts2vwTJLUiSiBB+AW6TMedixVAnFK8suBPHjQwUknMP5xHIzC52mZNXRwJbJswcLom6SNbO6QOxEoSROVkHGJm1JkOSPjIObeis2iebBuTBXRiocqCKWku2PsYInaymmph41wBpZYwalVIICIDF7sgjNqbSqwxq5kzNgr+jnWmSITuQyhHEOJ0h/Ja6rXJCU3exgyEKbC0Dm04Ase0pOFu7qFInaVptWYWqTHaANxUh55m0pr58tUouRrw4WP7a7ytFFuirPXhsQNLWOfXoHqmo5ryM4EnXsPrnQV0V1jJe4CDEG1vZwvn2krdjCsOCCdYf5QIKxfQGKxSvzO+jPcJkbUjwk1XL91B6WvTk7V+v05IGDaDOSBJxGXtehZsf3SEB7318IQ9BBEipNRtMxoSbMzi0K+aR7DsvTfwxuXbcRtCehdGfdQpnBfMcvp1bKb7lq+IqaeagIzwNrAQMsFF+BDIZ2S1tI7DqsNqzVy7A7RWmbUSI794JMiQMNiGi0F7kXE073HzFMFpWPSOnyzv2d27FZmktd+54BOkHaaYF1abqPTd2iNVs01ReryQOqh7utribmi7NVeNqBKuqUkMZDM/GT2rapWdLUyzPUk8DfqRppFRO/oZ9zpdpyGsR9O6hrYwWfnE07Xn04th1p+HPLlRQjmwutbj51FgJOvsxykU+nxcq4QraAlOqDimCHpWLWNg5fL1hM9996l/9hZsqMDZpBa0lWYsG9uPWUUuMIlqKcAUWGKXblOhJoopl2vL1QPJVAks0rg3p2ebULZySo+/hOvZTezXz5uHmANkcRltI0iYjkOyKlouSDwy5/BTPCjlfMIK17HxKb9GYOXEoXeKz033F1L01f6DZTCqgeIjOeK1gD00PVsLdBj5f2SqVQav0i85ROJYj/hfcXLfUlhWi2hWvlTYiZsLUrpeZvS7MuNVdTAcZgxdpp2YAvMsWx1vuqu5vDtM3X5lDzEIuZugqBmXSUw1tmaJ79ZloXulsJlMV2SWa0Etk82QbgvAwfobwGdUHBsJFB79/ZU+jgSJSAGEYb1omHVHdfPluXQgA0eD9MDu8GopjZqiOz/qaMWbq0tWoA3Woa7GqQqWXnLcxxR6egeHrsz1Bi4zvcGme0f7WMeg/b308YtcsN5tVDPGUdnL9tUV5a9sifeN6YvbtqeuKzCFI8MPDapTQzmOuDp3FkaST0a3JX2nUDJY4YO8Gl4DDvqunZ4wXnpXxm5q6V6r5vGPbQ0b/qIXRNTaRZcpBGnmg66iXV6ooHHULM0fdl3bHIRlc5zfS7j0dpo65QewE2rT00g9qfHLvIW+KMnJNh7bwgoH+u0Ti+cCLdKrW6cKvn63T8rrmT/0/xbWy1ys02llqdUmoronEpgQdq53bu8tZUVQigq3VpuqxXVbavirNaAZPMQqM+buS/Lg0i+e1XGc5d8f0QywUbWoiE0p/BTTz3jfozTbGz7s1LWp7dKnjhHULW95As7ZbJ/w6xNeRa0Kl+2hosk52bYw+UOS3t3mFlqvjuDJ07baM5WcOJYdqKScuT2ystLGBiJcq5y6YRlea2NEtRnmgKVpYXqTq0ObaZ/zDSfWQc1a0H9DKpVWb4SlSHpC/3Icb/6zOxmMYLEoxnrzU5oao+MWtlur3M0Le8DwgHLfo7DMoOCnU0HVgozwjqO6MATBxRgqqBrXHTAMn6Bd53SRbLNfzsnbUXClyF8zL+jl9EuDay5PH7pMEscoRIQii9PXOBNbj4/ZDn82j4Q3xle730WDW2BL4kl3REzcbrHrRkz2+z181OkDfLhmV49KI7oEx1Q+1lDIm3FqtZ37pUFDSBxN20jUL2aw6IKFXK7aFrNBjrG+eansuiRXGatoeBPwg1VHUC512mGbMdyv5bl7RM0ax92qzWmj0Hu+EAk9cHadmPvhEfwyVS2p2Izp7g3yoaXUkEC93dAv7EhDsqSxK2H+uLx3SKaW/y7YGWJ7JW1xbUe6QH0iGHtyG2vjbwaNVrJc7TLEcaUAPV1Yl2ynHdrzU6SrVLiuPDlzO1m/WPDdUhLq0XyTc4Y31OUGFOjfUhpZLIgZ24tN2N+KtLF6oUaw1ZLaXYLCGWFHQ4xdkJJI5dFfPr9JVH2zBKwX42001YTZzPxumRQojhiZIIb05IvqvjhNAYnl6YdK10JHx9ddV14OImqYaD9JUr3g30oD6fnW5J0dql07Qki1cQAFlwK+a9uxwsuCFXw91N+Wjw7YDie+qELZ3RbHjujP7Ng0fP72yTG27KhxuKP/H41cUpI+NVRs74ieVLTWGbu/3o6vW8t8OsZP/elm7VmQNKGXO1CMD65kc7A+i07Mqj14njfrFrCdPgbY33p0bavddp5hYSpYv+he+Oj8HyFSw3+J+g9dekZI13P6Eysw76JP61S5QdHRqpUdYCLGuhWWI0CIt4uJRHSAd0dm5Cun5KWjbPuF6uwddPmKY6hQ1kLKxRYbEK98DaRn62NSYLsun9r8Ns762b4y48Jmzc2sTG/5yPvS+GPXXPZG1whgl2frLLmHePTX5k9qoL3lfzdwIO1xHVkFuO+sfiGxvrzQuc7Sm5hny0LYDoux6GvmAAojyGep/XIU7Pc809aigjA3ViYAOqD5ZTTldufmpD7pn3QubCHl478aF9x28U1jKRPhKmqY9emGB0I5dMbqvQ2iacls266/rU/nMeAnW6a3JiT/s2muIhuJsrlqt7mHSibsRAgLZG2nP4Pl40Dj6/wG37jUYCUTUwtvGyC0w59R9nCAwbBszOU2OkMLUlNWEtdxTh3qTG6pwsj42wgdYVpmLmJzl32va9UGBHMhgXn1LNB4nPpdQPJ8jnAxHfZ7Q5H5d5sSnWNE06PHatPrZVlbZChgG+aTQNqTEJwtyaTRsFS9UAa64sYLawOk6wmdQ3a8v0mk1UFZxAsFsArgBlc22m4RQMDOMPqDRiVLGIjrZmPb+5MHVnjQtrix35zQ3jrJIyk/Wzm0lqRScXOdeo5OIpn5qYcAcVM+MrSHqFGu1FqnoMuKmmnS7+TffCImhafcK+wmi4zdINr0xoPQFd5Mm9WnlAiHPcgBsQtazQT2dOdGK8FUiAfMor0d6NMB+tYbexvgl80XKZ80cMc1rX83OkVF2Iwl0SAtJ7NONg7b/uNy3nuFt2btpBnX9SdzgMPU1C4sIS5a1eLbdN3oMIx0D6j0sLcBfdClIBl7BsWrkzhMf7+6X0hPNp4KLRS0PF1nqBePbW6jj3NMCu3gxNIP2YTitEGTX/ymqlNT8l3xdH9J4iba/0OBj0L5PoGEWI/SNe+fIG+FiAbgUW00dc+6f4qMom0qRKbUeDrZASjXEAOC44USr4yO39HWADZv2u4xHiYt/kWa2A8dCvsUq7uFCGzUKB+k+9+cYwIJxgYTnym85D2jBMloZvVZC6xTM4tBPW8qt+s30srIZCF9XGux1rW4OqDaNCwZ3i8dKmCoHeZfd460gzXVPSS021rUmw8aIVGlN41HNBuZ9aakkWT+zxhQ6Fh9omR7wrfQeltWP5XXZysYweh6SwioXXao+42hBMX5uS3zauDrv5uO4ZOgNyb6yOM330UnHUZI7yKsBk2FKtH+vjzOt26HNUKYORtA/Fmte0gMBX0+7MkLaUsXF/jhyzMm/G2YMAdJAPo/yeY/rRPIYaRMSZW56khGbmdLSXNpxi1r3WoscmIDcnDpyTU1qDmUZ53Iz3+i5SJVfHTX1pKOJDA3R0SfVu8+GI39fo1Y0a5ZPd5jys9ayV7/rdI3qsT+oSn3axVacM6FJD72nU3a8FidJlKc9v122w3AdBoOsyFFZ1eMlo1yvpTstrdnynS4IrKEF6pRkyYFo3HRlYWagD6NNSUDAxgelktb1o4Q9In2mSjdUBgJU0PnaChNpF6lljRi9oieyDVpKp0hOOZ3QwE9m5XROBUQCi5yx8DjMM8Q5rJXkYN8yT+R2w2vgPRH2Pozk4/NFF1qc+wm3tEH0NU5Fp9l66/ZLCPXqUU2NSHEu1e0JXyM/GKeKL0RH5Yp7NflpIXdeLk1bKxn5whDRzxpDtVVfeIOVhzWBkCqxNnZXbheXCLuKN6PprhSpZnzLWfanBrlimh0DpiSg1gjUvocS3ig7YP0hwOBEAIMxS2utKtUHG9kpp6vdTBHQwJ3ezphv9LixSvy+YmUTI158EtQt/BGt2fYFNa4PS9o6hr7aS14a+zaepGvvFyjRr7d1xtC+ZRZfGvuzGmNcCk19osYnc8amvvbX0DwytaWjd/D2jkIosBkabJ8BT6PIglNvhkfXTu6QRbdV9C2U+f7sTIpX14K2Mk6BczHWEdQB20H/YNtsSA2cqjXg1YO732I7a0csbaXOOz3bp831g70mnitG6/8DKG+opkyhvrsScbfJbowpaea0iKpVadJt319/7AqcDmksPRgm6wb6m61QSxhQXsYJWK7TsshOO7rdUaCWdS3NGkq6daBa9sjETaSwkyNDFdZ7Vr1JbnOU6Y9E2fGZk7a252dwjN1Zu6Oq/fqPSMNMBV7TEr3WLE15haf70C58zDzA+VYgoLq/7Qj6Uhei4DMzLWzfS9tbY9a86e96s0JHVoPUR6GFJMKDBpxJa1yZjhLnXFsorF/6LZg3aesRsu00FOGM9opkesyDxrhLXpJIUv0v8u94+4ARfWmtF1axWt5ctLJrLaVdDV14Tr1mDZjuONcvXhiofTADFrOMkUWC8Io2+nBCNpJ7RXC9w59B7AMOfVDw1XGGfSlMl7i8g5AYd9ukAatLM3YtqfWy0UR33p/oHJwMs+meoA8H+lIS138HwRrUceIzDBeVQIfU+vrgmtMQt72Qx5FYZLql+E3JyK0t/wLCNuhs+0vgUlfMK2lNindszq+owQolSPrvMuOjdT5hchwwo5HjKs9R6Wm9YsThDA1Zk1ckLL7Bg587y3scEzMdWPlyMItOQa9KNTp8zE4ETq1syxteQkadqed0zVFv1twR+LF7XWxl3606QYR+MiE62SMqOzRffRzzpCA9GVOiiXPGVvmLItYVh81AI2G/TRSZqO3yEDk8vypyGgZ2lfgQpyoAlGLp1eY50nZDEwSDN28Hpd7qzFd9zfXBgfciwt/bi46AUtWi/W6OpWdyCwY8a8FvWNeM0iBjDepnR1NZix1m3wjU8tgV82pfaYhCnRxNeo8kRsHAuOaZpi69KhL9oq6VoTpOw52KjcWapIsnBKjuD+z4K6qWDzLWhOS11bTcSWs0bjP1RwlsnoyKFYLGo9M2godOFB4urf4pZYIs+5oaXNsLdDUXduGQaLu1OZSdrqmmbRDDc9ZKjJvlYgqrIpyhevOW5i3V02NZJV9/0l9XdfNxuUa08Dk6D8L4ZX9dRJ2XUYO0Q7t3Dl3NPpXSshtvv3wgYTpMI46xprLoYTLFxlvVJbbWl5+Z5KKhpKcpk5Ybqat7BSNbM/WnCpx7rqrRM0BeN4A/BOvC/PUrpMNN2fJB9gkYjZBe1xIbuTDgwZfpwyi3Xrg02xl7O9bhmhUDZnbq7azzCGbItag+TYPTpTteRP1p5gj0Xr2OGA2MYTgbSjw5yj75aOLzgtF7X7dNApHPLjTLZppI4+1WHhViiaO77XP+gLrMHzsqzwt9HpZtTe+pebaL2tIUzy/4apzU1G8Qje4ES8YwffZCutwi55ck4spXRE2KGZGC72ouL8MwB9nBsyU2ae7TqlZmb9Wt1mGeKq96kzikjGXODBmNtLvrV26y771SpfxbOXfYhk1tiG4a0F59birBF8WYDyv1pHhCvd9RsLF4SWNXzjTpqs7tTdKfTNAUK/bXdUb05bEs1Q60/UsWQvnOallIL1JWHNQ4uxmFQ051mWpKXgFHGvIH9rPq2u33PMiCyRP6HIJZjNSsWq7j56vy6cNUlv4RRVKpNY/jKfYdU/Sxppr8/KV4nBedieGFdgz0kpsGuX6G629wyZoVYqnnTV8Ny14pXNDR6KZDQRTnMCxmA4xsNM1mVOXUn5tXG2ArH+X0ZuAXwvJY7djzUdg4qG01nNIpM4b8Y0Ssf6nYEKKWluYmpdjgSfVi2ZQG7DXBo0emkuhnoPFkFy3MYXBunPY+viO1P+zZq3STORaQARU4WrPJZR4rxs5/V/wSn1tinntK961Izd1tDWKt3fjh406r0jKiDwBVn7R6fXFHWw7kPJNb7auvzHoFdnMNRC3bSMcPWIsDALmU7bMjiZAHc0edHU4qt5e1XvgbZW7N2gx7gTeG8RwXwNVHYADgtORp/c1rZXHX03an3iXQGDMTdbkbqGziVqh1oOD2UQbTf/mcyMRJU7sqFrSinTUghY+mvA/ECHS+GdkkXU9AVHl29ZZxa7gx1Zuaw1ZhXnt8tr+Edrc1I1WgP8gqXWF3qed0qC6ce7Hh+tVVMAZkY5QVx6DdOijkZYfuORYXpqUJhNuzP+cWOfVvTWMwtLk6D6ahQ/bVHMi+axVqIX2WWEhcFidIK6Tar1dGvexydYyJsjVPpV65UstXxYh441Zu3KQFM6NJ1tla/NAqm2lBmt2DowZqDf+sveqUmXAfo7a104NbxByGa64xqhmufsEv6MzSeEVdB7hnro1GPrkq0kK6X+cuBfAIWI4nbindVe28ZHECVhyvXK5o2HtKg1fovb9hP2OxfGAcjtZEGrtdPRmRkWydGk/Ry5N9tS9HpjiNbxGrrZUbhMuGpCgFNpNBy6HHpL86+eK5dclNuWJybmFzN0OU2UsYlLpjTEKAZGbl0tTBTxdYIbjZU2CG4AMdTeewiIlrJVGx0EY6+Zte+aibrYtjt3f2xY7LZbLdmThu20uri+q01bGwjaJ6kldDO7tbzUNZG+l1HNuXQjK5jtrcK2rraEdb1pOzE5Eumx8xmOkeH0oj2sgvKH/urI3wzrzC8Rw6oz9fMukn/TXfF9m6nGOINdDNOQkL3vcnfcMSrewmbQ4ukm61cLq+a66y6WYE1Eugcf1DTY3SDzC60YHEwuvOKsrY0o+tcmOBotAhjrim3/Fa4ptbBeEZdPn1k5oz/XTupslA9BDHdtFYeWMsY6hZsHCGdcw6gxofz0vf7uga7BeVrHPBib04xgY6z88XBBvf6jlNoy6slAasMc+zddxdRZ2nCfrvzq4otK1aqJ+lfnkAxyeNGzl1e+hjaPL+3X4LyALr+kcpeeJJ+/uYZgCOB7ZxANnTaRfNOw3tgx3BP7NRMdR9qHHJrFuWL3TLpBl0aS6vmbL5Vp0m3shUnnxVTZ6To89OmiLyP6GYi8yuRTYvBy1gbm3atajd0SRejkde1jlsWz8YZ4QNet+jpdMd2h70xmY4kTD9S6ADdUKurAsscPYU0y+K6/JrRHNm5oKdtrPcygWOhDgsGhmmB3f71rvMWPRUidF1Nprzx756l9KqTayiMs/OjL/US6lVjd/hW33bc01iJjONLoa0K2IWxRqmzlrdX0xtFrV18xV/QqzuKT+o2hbaY7DW7G3WrAgXq4rVIF44VoiJ6aoteHtu01IZrUZN0dmJR5THGgTYfSJSly8N+TGi1dVwNew20hg53hCFxGqAzJCul9+y7P3Fy1zUJry/Ah5h2fpBpU1n6PU1xpdTwfemz2I7UZcsi42kDIySxlewxgq6uLs/RekpgpCdvjPX54Z+i8mZuYSE+yvYlxLD7Wc20zY6/abB9qbhRxArbFC8YaJiebSiYXKXXrFr4KSOp+VVdHLJdav1yrpXscLy6GD482hhhXJpF5vWi1/R1p9OMXjJ8qH1o0i9fMFOJ7Ee6a6xwEu6Ol0xrm8BoD1jvpbqIcbvsD5K6r+HY+WkvrTNrptj0fTh5/XVWuvaLxI/qoHrJaudKQ73JUuLtqE6G9sdJWDMiCC/W2XTizbwl0xy6s5dGSldBx04bmp88RDWewdJwuqRL0XBF3YMRL9EGrdRjnxfu/zZ2F1lFumLLVhjnBXXPWU6vsb9l9rHaxybwC1q2nqvyCeaeLXfDurxOxczqSWCeW6KKbL9zW/oyUW5ha0kK6xcbRqYKRfp9QYwsddnaWCDLkRQroxNb19c11GJeKvKi/UM/zfFapN0dIuyzI6UuiMRrReFUCCXOW8cDLFDK0HInYZJ18BOuMbHA79XdD0//bwC8YVuyuEz5WvRfsoo0gd1cNh8V+yjNlrmyrgZrlLsc2+D2p2IVzErlLqTZsTPlV/wgVjqB8PKrpO1dVa61jC4tNnekuFFZ54S4+a/LDIHxm2+KTmHNQqjUuV6k1ovk1frzd5XptO1OPYDOq/VaOvnG6kL7oM28/DGfnhqRKWLqmsythet/XK2tmKpNBcksX65sBchtT3PipXRgcFc4MQut1V+sPzc1mw1/Xay1KDhx0upKukMZ0KgWMccVhaU1+7l0bTOLzPkTX6IeeV6bEa/VlzTCpI4C8fm67QtGKuub8M0SmJc9cq6rwsXCdpJXRUbk23LXHBD1+hkXvcfrg1a2l0B8Ob783kdnqW31LoSPNCVV4Q/eA9oDcN0zZY4DfcmFLHIEBYSqoua7NH6Km+StdIAMc1m1r5ab7SCDYZ/clxVaJXXi2bOucXj9AkEmLur9nS2rq0DRDp+VTHZbXWCfu3lEx8M4hJYa62JullQIn57yyMwO6Zx+qMQalOKuP0OUbmfhDnHGmBQzfp1b4cGtzfZbx+mNzl/ENx57yV1o+x/ZDG5hoZK24zo/dKCEWsUdGNjpXcxTtFcNtkwu0pdAcKUlXV0jrFXNVx2bwtXljpiMwKrozJ7mK60QDZhklxftUlj988sJ6rfPfqPTeizsF6OsDFDavcXI7NrRCJF2GbFdDb9iNdACBhjX2DLpoR0pAWuE9Ki/qqfSb9nyDCNH2IuI5j2htkwei7+TC40FVF+82McCLxLz7W80m6WDfNNiCVqn1Iv1eNdBb9IZtdNngNkKe96gPbEhWRHNa4yagTP9vEm61QX6Z6PLRvorzq0UFK472h2JV/Sy1e17V3/aFx82yhtu3Hq2nge0hEVirCR95pXmkSdZTVpFT49SdoNmpN2vSbQM7190GG5To79JFnWu2SCUyDn2chTzgGIWO6cSbjiMlPHKFtPbaBadLgOr7qs62ZXvkIZx7KtJhbrgv3A5pxvSvpaxL6mwxe18wywaR36kD9cl09m5rHfuKF22Wqd6Vu6oFu/YWgPlo4r37yC2rd+1qbhPaUJ2HT4CIV5Exy4u/ZA2uWDUN2ty79oC0yu/VyGVD26brTp798UjFxZhtAyESkn1Mramid+j/fcwwxSkYNkDoOBeu0uJsS4SKdrqeVtE7xyOilmtTy6OTZY/MbUQJyFeoIMQs7RHB524z7HRL4wcN5TCNU3WkcN0L9RbGDfk8biKqx4x6ksBRh/6TIRsWUL1Wy79eqYVxgvnWkeQys24rZhm9RkVHTZUrsQ6SP0o7TyKkOeMCkqavTp5Ix7GmKKmqGkljOeLgutxGWZ7ptIsO0U/S5fWJRyVoZ9u9IJOg/jbtfYBo1Idq0N0MJhwEdHvkcUr0JOGLPNTbZpC/WtdQOIPbAbOO01C6qRTbBQQ1HRAb4SOND19LXwi/GcdiysA5habYuFx+/S9fQ2QucPHpDLnpxiEnc2OdEmzEJ7aktVHu2pScFfZ7Ppo0ULCc+WFZzIqKRnpRy2EGqbdyXlrxfRJWr2Pz6SmGH7fiRNTZLXeit7M655eedZ1x0RtE02qLxoJxaV3tYXdHwmpVJUCSsXhY9pd8kV0mMuOfX3PIpT4EP6MkOKVIxUborlN3/UafsIeaxlu+BCZB60cem7CbbGGso++HUoy9MDK50ccLPZ6Tastnqw/oR554dd9Wu/Ue9HbrnnQ3+VCYc2nRCD+wY1W7RuM9YC1a3NZ3lW0j+X5mped0DbbGAuSUwq+rtVe0dq7CzqlsNwuvRCNkJfR882P2r/FZvSmgBOrw3ScOEg+rMn9c43HIgVFIws9kuf0V6pCYyjcPtfc1aiyMedOOmsUIu/3nxYtGL7x4ik5hsq7KAAYnBKRH6PBrLtmPLdV/vWQMLoH34t6dJu3/eyBccmfWtvaCdC/r+Rc+aV+VwPsVXFqStkw2OeDHR6RXa0gW4aJLYJGmXWl22vAPuhVq1Z9TU5Swaz9vqgPuLdYvXiMB9yU3VQUNgPpeHK4D6mTaObXAgfS3ky/5UaY7oy9e47eKNcP3y25UKaQQbWJqsjx8aN42Of3SYifstjEDGEHtyltYH0QazmgWcrepXjtgvV2lFtxc+B9GlWv+LidW3VMGvP7RB9nOIwPTngVqiHX4fMRvmMg+6eeYwXXkH0OvsM4Ov9HZQfZ2izahWeUrPlNGg+z5rXXaSRD3pH0iZGgZ422xvpSMZ8lzdTYb2dC0zLulmY1Jzal5jXqODq+nSeTG8p2tour6+XWfLnd1faNkqt331ZCQ1NmrrSX+cAqMvRGLeiDgW4K634ZjEbXFrafrMc7ub76nyYWcyN/ek5/8IgdI1I3ZSZ7rtbW7e66VNaA6bSdVq4yP/67xGqg12u5w61MqHrv8Ijh66h5pYAUqbzrF9ph363Aj49dJe4oP8ZKN0I9pRv74AWaeuxWlbKWoqraJ4rcGN5lWloVoJKPPJZmkMiNWJRnW8jvJB0WZ2jLqOmyGMtSvXbMzKy00A6NuVFdeurnJg3rp3qn6XiK5uTbQxONvtlO+dmOU9Pq13eutjBr3rvA9qSstZCFEMTI23IldmJHzJXYcsarLxLvbME4VVIrJIsBsQJfeoDyDD3pNZpYnYEe9FXVMm7LBchFryo96px8Y7+vPvakcAFdiF97/nUHcGFYAJ/+WDAAw978q43gtMWLWKCsY5HjGSgWeYaHW5WXUAMja77ad3XR1yzJISRvIyN5FzkNsAF2ZTMFXh9801lYi81Wt6CM875uooQplYW3G0EX6Tl6pVtRfhMNAYRtqAgWgVK+03baWLM6ncZNDnV14q+J1uSLNQy6i1LllmAoPQILmmSyeo6p4aV6ev0nA7xS56qn+2TNNLD631TcUwdZEqit2tL1OAltuXBqhaOQqnd0macXyOn3XYDtfxRonD4YtzZEGODs2PlRA5Jk7rJCrq8+R/tY0zfX307ZGIf6Wc1unWx/IXSW1hNKYQqZ95F+W2xRufy2ZClNU9lle+H+lW/RTasLPX/O7aVJ5k6jyleo4xaDU3LKmlFs8jQFRuhkJQvnYTNUiugLunC2r+v0dMVW3KsQJ3O9W4hdzvSIVXRP8r2ZdBUSx+o68rjCk/l17tFYtdGq7k7zRDqYA/TuhNmgtGZkeSjIJ9XVGLWt2W9k4WzV2AsWU67HjWGNuwvREeageuZyEiCzs3eXn+reWf/XoZvYzPNAv9247EKYcilOT4aqZ1wJ+8Wkqmjh9Wwy3oadNrP6cibHDwWOjuQ3YcICNjkWAMllhmFeqOG4ImrgxWyk8vdFSCU2dbaWvMyRR64On2jhGqxY3oVFSVXJJ3LG4tf8troz6uP0he+OUrTCWTYIxTxZhGMuQRobC5gJSLIyLu29mT4KFs7PNybp6WOaGpD+j//RdSO1k/tTTK4yYUT9AxlvTnAkoYqdIuv5yljjDe8G4w8DsSIP4eU/c0aG24Zq68nlfs38hGEtDCih3yQqVPV8UvjLbru9TdWJMU+FVncRyLFb+z9VdeR1rSoATzww57m948lO+YRjBAruYFIHoHyw8jd2Fj4jNWlshLe3Ck6smFhI/O1DmfnQ28cZrtjiE2/3tYBicioN6XX+KShpm6do/bVutdMIa4a7ro5Jlf3UxWZXfPE7lBMrh7Z9xe4/di7KL/rZ4FtTXZ0tMz6ng/guN2Flbijl+gdAUKzoX81X+1kOMaI2UaXI7gTSvvz7qMh0RCdkmuo4bqxXrLSYu0dLH1gh+vVHfGfzKK6EuiCueV/PLFTpPHQYzUF1SAOh0Ye++6SlMwBd7OL97V5mbUyxJm/iLVJhfLDA0xwFpfShum4OdX0RStDwOZS6moxhkrqha4jusIvG4pE0NuhexI36nnuK5PZ7KtE5FtV93xdHvINsE1DDo6u5c8FLjPr9TLmq69Q/VtyQIisc5pio896pkCcifxe+ByWm7onsiu6ykjMBPuMf0Wp0sEae6Wr5tR74WSYMAb7psLNZRg9CvucbRhpWUYA3a2VGs9U++JgDQLC+Vp+17VaYX+l4tpOzUVeZLIbV0mVaPZWDVf3SxjYB0M58+PLEwzrtw+0VsWFj1tQGlkbc5OvdIrvpXKD1/PpA2egGeurjIED2RmKfnZEgszlBrNHLrZp+19g9RbUPXpjfLP1bhFSvyeS13stQTWuwz2DdazoKUFOZO7DQpqVvVehbmn9o6FEWMrd9TO4xPZlkgCxD68rjVxVbEH3Z+7gPMAwBQB3CmqbEqI75FRTbkhWSBaovjopOPi06L0LKK9oqyrPBhuYK6AXWI0ViGwYHaQpqhEtEJ5gmyrBtHDWu7WpI0K0/6agqsy1PebXshpR/peIkUM8W+hGMHT3rfRnPvOkADTWGWNhmmLBhkzNX9EddCnCWT6jQLCfKbOESaSXTA29nVoqzxdDRron30rzJ9RbHs7p+uUzqhKmwEiiPalEkgMRUPdwJg0a8McFVU506mUSe7IpDYP/TqGJIFLPHbc3Cuc5bn9rNgBI72hqcQV0J3qVpQye8oax7KsRpXoxD32vaMxhRWHfKWcQuErxNZj8M+6ZoRTUr+qenWz4b0Pdn/uZ97EZRpL4M522F0rtTWF/yxjZf8t1t42GatG1R5n9WWYcPLKeGZj8NAGBnCFAQIeu1yvmEhw9h3G2bK490fkSzClUl4t/mWcRPQj1qjSwsJExjyB31beLXodgk43ayGhmLsgl2WKy0WQdeNrOavCrtWRQIDRJ2kMEM45njT5F2aiEWgkwZEON65UzqM6VaZfg8dHvYjJSf6MS0ynmgnk8krSiPQh/Wp8d5rNwT9Z31lNPxZ73WBTT+BCdc0CRQ5fLG7kMQc3sllJIxBBkCHPugY02iStWkSiixkXQdroVagk7K1OENHTGme8w1l3VI+re/lsNmno4W5NyNk1mKD1k5FsOxgxgOxsGNgGzCk0VoYtILLuOTOloG5+cpuNWODUYjTecPpgEe/yBKmIFmu6ZcaFs8FmWTimLRN5jJ4pXv1z9jpKeCeD6tKfFZteiqPqeXfXDMTp+2I8D/jbvLxeaeVsqGuRHcuSaUJi3NAXMQi4PVj1Qs2JX7JK8HGnWTLtRUt9ClUeiIOBHERV6VrJz4Gjojl4OLPqX+3jAwViSzU7PSW4ydvYLJMgTVX7DSemZldz393Mk7Jq1YyYrOVmrupxYblCtpbOpXiqT7ifqsMPUUU926+NKiponYn6xCAUn5Rj8eFcE/J/e0UPXlrvQ98xl/h7JoHVehNreXJz0AdGz5A5tetMCzBCbDPNyW5bhQ+LWlXOLQ8FX3tCE29IyqWWZaKq7Wa81TD1atJawILp+1za8ZbCq9PegnvYjtUZlxfwWFj9VD5b6zD/HQx/tFhwR50M5Owsw9ATdizv6k1oSrOP9vk6+jZeDo1z6bxVs2veuH+/unUrE2r7obN1/ghLc/NW2g+EICVp/r6xn2yHI20lbWLML+4O7jV/Rg/o8eSd/YO8jJfoDys2tVDP58cUOI+Cb4s8+CVZotcKuYCwzcU19YM0DWHnmqLjuS3SFob6tc+7F1TdU5Bl1oM2wbAgGzlpys8j4FjUOLncbahsp4VLc/bbFjKEM2p6sKj4AWSl01z3m4ps/FakxtWq6WeyjCJii+qOunuurQS1L0sgTafy3WffkG6i9j5cTrEJNfcAKK756GsBL1N9si1DlSTIF6bt/9blWoV9XnwYIAzjb3zeiTjh1xDB8hQqAY0kZsB0VFGVV9Pa+nv/zOy63Bs/KmJeLW+7hSV3657SrMKflUVUzY3puzyKeHOgGUU+q5W8EVjVPI1zV3jStB2lV44KFfN8tLcWeXqLHeyVI74Fk+owwZah6dyHmrkUvOVg+Grlt4ywLztGkaLDRutBNrZoFIrDbQ2rSymtmim2yIFF2p6liGcdoqIUdAmO/d6PtD5f6PGun5xVvORYUUuhs3MBRNMzWGVCPQ3T5jHjM7G5CYo93mrZ2VNo/osqsuq1U0wAfNrMcDHUF1lR6oPPCVzWZAuwPamF0+6l9jXPrRlAsqnrUU4dOSWDf8ubdVocyQGGOq6gkuk928lfrN1o8b3QF8dslhcMpRHX/y3jqn3Wq2Dmi8a5+0bEQwwt40Bj7puiwQpE7mhnwVTqJfcMe6ALPBlWuQEPCMF1Q6wj5Eyq4/vqktpPZmmZioIl0OLIJBmXJwCQbXONC7BMBzIABhZFt5TooPS5ttIBi3cxRKutzJlWHMlJ62B9G5+ZYjLlQ7E/ikdOwJLApRUbSppkVBed44NMZtaeBvJ3ShJ7SL9npdrOIgU9WaIr9f4Q9rm5u/wc6ULjdLqc95IoLZIZuhdBPFjzE2NwXMbb0NhidwjzHWPhstuFzaD5XGXwnL/ltJgzufUqS7jytkge8ruY2huUM6ezy3jxsz+lCLsP1I0MGKetmQmKc/Uo9ngyvDY0nLa0BhY0dN42edNLK1ZI38dTAx3IorekvwzLnGX3LlFxIzwl2JWO0yU+YyEjsqmYxY6LBvQztERZCrDTihw7o8h5hAgKwMlzCsR0pBY6jqRe8LqYa39VCY6dbW62ADuMPXl5boID7yWMnIlpFZ33s5MEHjN9l9/CXHbiSfbqfa4o9q8chynC1jfh+XJpPE3GKsIOQGcj4Ta4B35TXW0br+6m2C3sEZs/XVm7ixcddeqatFbCYHOgL2bt7y71Ogyes4PcqSXLCHtUNE/lXQC3GUp+Lyxtkgn1w1+7VDFlZSqxOgJb3mpU1a2wrZZrpl6OIfYlKM1nOWtimYEQDd3QEbKs7xXa0ZG8SDhRbXgyl1MNCF8Z3Q63SVhlKflGYsNZKt+ntICxtEH1anbDBNudZl8a4DUTfoLmHl9Dxy/lepNN3Tiu+O+f2ZY9FwhnE7UqcaYKLVXoSwtIuaIsbDeho57W4/pYgrn15qk03Iluh3R1VajLSHFuwFrZcbuzNxOBZvfNgV24Zijk5TjbXIXkCNsnhuamS+ffVNXqZN0gHTEZ1UXaozFiPTKYa4A2sX5tf7jXeZTAP30HbMQcUYWDRE6y1fdaoIlbN0tYEpdk7a2YaupzkDqjC8qIhTq6/3KHe1oWbHnBdy1OJyLX0to5HVFZ01id2/1+SU1mvXg+sGQ5Dp94YeGdy8cifNyMaU7uib8BGJh+8SpRipwVj2vJqKld3JU977gD2qzBkaHSz0uA4OxZ9UMmM06Za7aLikgJQ8PziyWxE8VlXjsv51eTIQvoF7Pm7Ylq7VZ+YFatMeZaMJxO54RNyyWA0gjaPW+70dubp/6FiRRzzf0lj07SRREVWz/XWYis3mTmL71Q02FgKHq+HGXSWwVwhLxW2bSLoYOXWK1eTvYr01p63izSNe96fPmffhhVhTqc2t9DW1njH75UNazc24Jh9bdZ0DG6MefmnJvWW8yN44mFYsiN4VKMOIM3PbiERhNSOjcyemhsINlIHSAuNHWTOo9QGWoA3oIIdcAdgIkzOJth8M/2aW68mIBiIjAKepFzXQVrEjDiFlpkS8xJpFg1s4kz69UIZ6ctayKdR2tMs55NsgMGtkdWOtpknT3XH+79CfNlh7Q+VgBjyxXoQHr7Rah6eq7Dg7801rH0OjpsRG9tJflcSnISeUA76Zw1kU8wvSZFb3l3EnT0MBhOGE/G8bGKSnMH0W6m2hCr22Ejb46zBk4qQdlp9/QMk8OdQvV8Rallq3X+j0rAX5nhpKSjZRV0TcWEeAx7jpHowRRkzQL+o9YrwvQCdueMvQWAZc7la2JYmctuL5rkeWVZqrHJPt46gLsn5zmeWCMMw5VWNPTZdbM1xaB2CD6qLmCjPBvps6GrAWX1uaTF6+pAyjjdb+KsfqNMieTaPs01d1m+FzPUU/u1w2eAtEqnybh82U51/CarKFQnevm2bB/KgLY4AcuC2f4U5DzlU3WBQ2Xk6An6BsnSeFrM7SPF1vwt9eFuuQ/u1RKNvXtYCitelWgTzNhFlb0quHoe3NR5NUAdXohgjm2HqlPoTJCOIzdY8jmEApDvX8tMIJBNv9UbMaiCx66bc9y27lpkLP7OY2s06M77V0K+ZwSvX02cTiKYBZuiL8f6SstcppfJ/VEg5cri2TFkj9CixTnKvEN7gzcrVeYSfVgzrZdIv464psmT6SsbWPRaWuOSI60UMllh45zYHgVYivX7ozj17P6PajaKHjYwwhQ2eAtnsWI/7P3muyvxJEVQstE0OFektp2gHH2LfJZX8Q3Z2BjNiGRLLxP16vJjReZgmI5ryQbaUfIHF3DCQtgdKwKoRjrVxubL/s5+FKkByW/boy0COHNezWkeplDMWjjAByJnGVSM7ARHaW8N0R5e2fEY2ATErJeffKqqTnao4YmHe8bnmc/XM+WXhqxXH50216hGHhPW+nvWmqYr4Qz0OLGBZzLLFTUWp8E1sestYm/5/NrBXLKs5D3apjvAW9xnBZQeVSMWXGclzmQeH7QlFoZaKL6q39ZzwkZT4qjvJhfqrsNads06mJGum6IAXanxfzbcxzaTVd4So+Nnl8zRhVqd0dqmEPzOXlpwqNl+ECiinNR+NzAwRlVXrtsk8p9iqVLrTa+zRLGqsCGqZL1c+u9I1eDTTo3OOlfPyDPGEcPQNhjFTKFJlaCc0mF5e03jWQfnoz2kht1U6msiYlQtugbSo8GQCSkx1mCteEjmsnO57neuMnU10vPLBjcM/oQMlGjr7xm5eIpvOhP4ICYZpAD/0Ggbs8ROmvsw6n6GS9HOV8QAvmKWO3SDiYpHMhRNdMbI6Fq2mI7HEzkrQW+JDjfHBiJwL8LELh0keFARYtkFYBqx5nk9w9WtxWcUpnOam3SSH6V6rdXtbaqppKGqQPNi5vz0LED9bLE7PnQ5x4I3iFC7LRRqDctxsuiyI3rXV1k/5NPDQGrhPuwuZFwu6NgJlCo3S2qP/V+b571MhLmCiLcQZmn4yR0nVprbYZJTS8o5gFGrNQaVusxqV+LDeYBoDCobr43fr1s+x12qfpuVehkkWFA6kV1GH8/HlmWgeCz126D6v6R/AnhlubcOB0ke3NEuhAhTLYUVD6pyi0q5z+ee7BHRIWXl6Ph64uvs1EWFjk9CfZxP3rK4+7TkGJ5kU8ruc5dtnh0qGd/JF66dLcDaSusuPkh4sksxwwfM/2oKU1XuY7hiCht5DfBPHTOeIKCYdWrto1r8HcKWtKzsBgXooaSKl8D8ydzgBK1PEb6AbCr2zcwhcdVPwq+dnAUNvA9lxMz6OrsqOspXoiana2t5ilrpetyvvT2W8Nfg5Mt8xyUWQIITxk6p7jDN8Ga7aPqXgxGK7ZfTIC209cgE7qb3vNwF8xNfgt6HUlH+eA3QNZXoqN0LFh/jciLv5/ICgE2drF1Voo+3nyXQ42bObQp6bsZ33YpTEQNpzE6UYpcFj6yxLWAzQMDLXHKwp1fi2ZRSqZDRrLNQi6nXaOceHJo0L+rzaosoZirLh8usrSwenpchOA3qnXsDauFKTR0XR27KAcbOszkKGf67CKtmRsO00XvGtO16VPHUB9Q/zP9p2DRqN5GvaQrSfnQdpxzla1TsNpA501eESBGo88GIoGOTF0Qg6elZw02Lp6C6jdCutqLIuCYSs3osHa5DajFKmnG/1u+Usqfl23yM15w52oFSWBfWHD6TVN2d+/jfDJ/WkJvbd3Tw86C+ZKfI9GYKWw0E5WdNJ7G6dfZ92XccpO1FiQT01Jk0Os8mQY3Jwl7lW0iz1pAdUL2S/B2k73sdjrJ1ArPEBzvWGwauUW/NHyBVTipVOqwG1tGGsMbm2VCNw5ziR66vfyYNQGyKheS0+3rkgQpN741j7J/9QGIjpXeb+JLc0r6di89/l3ZL2s7SzyJbYO7WFmUtzNamQITr/PU+Esje9dcs1nZuZBosi3Zt13H1qfLYkNtq0z522FT9SEVfD3dEbY4B25cXLuiUSto2tTWVphk2Ee2/LSZlpUf61pPkvD2EqmUJ0huuuttZDDp/xNgAVstSWFSeCgrk3v9fWDbVTNNJ0889YxTJfEvvMCnAvyA8u7hTCxUX/wNRoHCGCfil7y82ymakk13voFf6iTy0ibG4zsZvtIQFlf7EDmFX+39QX0Eroz5R/NRJOGQkk2CVdlyve5ZACrLNSsfB01qr01Qvqvq1V/BxA3AZxqVeyai3OzLSbGUFrWpcfcIy8l28BiHM+nJJboNgYMxEBnGx0tTmOljKS7g5SNA9WjlaGZGmDzLPbiqluwBZm68E5RClGsQRqRJwaFrtwjPkV7wnbViZeCwRrb3XCJd1NTzODscjrWqQlAdjZAJcBIyBQaOMuzQEW78+BxZbS5xGZd3Rhb6upyPnmF70hRbhHo1oPq+ZNcoxCUMijzrfTuu1KEPbbeJ6uKkgDTOnorLmqbyH5pB8Y6/2bts2kD2LO1KFZW6/Np/pnAbh/ZJTrx1Faj8xefqrwwSHowq1aGJaa3ZcYXpsw4to890ctJVWEj8uYNB3gpZF91gSBaf3S/vu52r105fp16ChugO84znk+PecnCUtV0Z0HS32thmysdA1FX7fl+OurVN2rRTyuyE9ejx1dgh0p4iYRJJg8aWzS89t4PU7/RbuK0fa2KqtWuay0izN7ke23f1YN4jxLlXo8+LiRJOyby2jpsa2lxXU/GDnhgyuf6Jz18n5it87eje1FO/z5tIGi6yw5gnKhl+A1qxV/aaUd9/rzBFDmxv2Mq6EJLbj+yFO79uvUvoIbbPd0Eom9xbMamZh5J4rF8U76be0rnSirZmnXgVrhy1Kq+ap8m3ZR0WKFU23kKalytNXEpbaTG09ikNbcFiGgYXE0A0OtI8E7BDNDJ6UevLsKW5XqsHWkT0Mrm63+77AZO8yM0Zs0cj/pPIg33Zj0KwN22V/M4paFVAnXKUgOwXxaEj1hAdCoB7ebYJW1eXo910cVZGVtNxuWuT3Obb3Zcf66/cTeGrmMtvN+YHmqd6VIBBjb2sdXLyhbSoSup2tqdAYcUBWQdnEaZ0d+u3tA82Rb/8yl5Xpz6i4G2KHf53vAQegvYa7NVRViYLEwgYZT1QKZLwSYqJ7KbPXpdHrXG45YUcrPFeMvBZPmmvy3DZ/Sd3pNnhEAW5ql6PKIZADanFFeQBv0Xhss0bJ2aBLqBG6WuhJudZavHm0tQrx5t0qXQ+vns2P+zbbvKsxhjWzGkusZcOkF77LM9bu9kFeQ7t2SLTJ3VLCQUljRGsLHZK+qTAbOv19l+8G2mPxlL+tFPmzRsXGllRbC48Uk81nBU4bjLkN0KA0gOTQHNViZrBN7z55sdff1g/AygMbbDTrdmYxO/7pnnexXi1M3N6AFdZrP/Pqw8zyzUg0d4Hpm4y29dZ5OLYwageCirWU/7Z9dWnItfXVg68MUBusiqv2saS1lZ54brpRdiN+r1psVXRr32A0K7aO9xS7nmgKTxtF3ayThnaApcsMhmOQ1bBa1oS1baphqvAzSl2OJXpv6DH0d6CAqAerfPX1TpEmyJxu6h/TFplJsypR44psCsGpiwhm2qnz1DZYk61g+9dxLSlkaC+JyIMq/z6j9eV+zLQcISzqrq0EGU82t6fY6EfX0Ph7YR8duY2RoO4HNobLJUhXkidWmOXYtHQRb2G3GrqPn8IxJtfo53rndbQNY4Get9ReUXjTVYXn+rVhFIRKBT9zvUmlViIjJGrqxoK2mO7nstONpcQa7Glm0UdRe7XtKfhT1Mxuv3jJsmOGN6bPCIXPFIeAril0XY+56bLX5i28HPTacEH6DY2fnNDzk8yzm8QxQUzee64HPMXrY1wU/Fkj8k2edIHfZjm8R1ptpQltPXmZcMqRBdtsyYjElLLwZB1iBwPJi4A3yBUawc8e2qayiDjk8XWGuXJ7txD54gvNBgfIWo7vGKtiTf+zddZH2jjfoFGazJdCK6YSs3cvrafXyVoNq6Crp2AvCw/ZtawsbpROjt5pKebcMeSnfP/iZjWLThuD8jZX5pcS0x9qvEHgK6l+nfpjkmxzGz3bn1YRezC+JpRrY3UxF5hqMsXxAIXaR6RgnSDSF3hCZQuqNXQECSJnUmP3jeqrz95w67I/eF+MdIN6R0UBeIbs7IXrhb2Nza+X9ja6CKSl9jkncx/lpO20jZNbqtfFfjClJn7KJptKg16Dgnh2RAxvrpYgV0ESlFMTXUgxMx1xIltu1PqG8AGy8Vseut2rolRbRPad1+tuBiiq1s4ah/7cslZWjVxviYR3ZMb+2NG9aWPW/2xu46gJEZkC9qKNj/PJ7bsIx2oQ0dyNvPans0t5VSnm06l4wVifz9IXim+RUfloGlpDZ1lS68bzWYpVmAdpIPP5LluaA1dQWcRdfr3X7DsMY3ODvbA9ZkV5Ie5XKyaoS2lcekuyd3CwdFrL0TEdavXbG7pkCiM97bnBcuL9hYi8ldjHo1yv3I5tC7+ASS26cefMPTEVCJ1/L9FXjDnmvaxxm8afB0ewWKzHF1zZ6nRehEtZtFJ+2p4y2Nm1fr0D5apt2690ADFOA7dOPQBYjkGvt6Xk9Q5WptczppWiD8oRezhsu8Ia8xyAlpfZsUepGpwvqpuCx3+FZmk9vI2LzHX/9oWstiVYul1/7mutdQr5m3EzlIW1sc4ReInojuWjSQHmom9vd2mO/abcOxpo8NIoOSkHKdaXWG6DNgucxKLqYcclheRUur58QzTPOzYtIb9hAHYY3t7nEUy1SlC51dxa6qbEEJs8QcyqYvlQt721KnJCg8bavZcbddt/c2zvjBg4cRrRq5at3yYrGJqbFvNvYLwljbYh7B12ZIvN6cmEQ0JY7OqtlOOp1Eo9Ft2+OxlmSUHqbhelBzbWjJyxi9rUBMgbVuSDduRj822Cbp5BC7Z6kJexTA3LtPGh5SmkMb1vdvWPQSoQvbn58x83X+N94nPWq+qUOVaLlN/d6CuKw6Wuz/TUN7s6jT/myvHI99XhfN9xF076UVaaTusrrrK10vT5eIc01+F0bEFYQbVPkjrx5jQH+IUorK/ngnphRGa5qTbRR8ZD1rn0iy/QZv4d3da7V3NbjpcJKNbGwjUO5RRLY6ftR8c2bMb6xN6JWJ/yhFlZ8yoa1VZkjg25C1u81WQdaIyMla8MaVmwGWlsxRZI31fUQQGx/m08HVSWNnwJK1ZR4875R01c6Fyc+NPo51ax0n8phv+9Nyh/FybO3lWy+ApZNTD9el+arkEQhGr3qZ/2UJA2n1b2ccm9/KIGO7KTPzFiLmNznlAb0szxQKS4/5mQ1pAxHAOCTp6USG7fHu1ds/bb9PMXGO0pEoodo5wLHdmiL0Hj2NeDXeEWto12APsaizMlAhXLknqeDz9/YUEr63O4XHPi2kqtMY4GsSsD7GNuIy/Xe4IrFb2g70gnxRozUMfigjsYvmOKdAVhbX/PUhS2xp2+4BqbVCpZfHM77TanI25WOorEjdhY8/hLjmQqJt6gKqoFa06O+NWpyyxrKayU8EgRX/6gaPf1Srab6PfqbXaHPDNgndRaM7c1K1LYPBSCXMjFk3PSYBHkx0jnFuNuzjIeMaLIr0D674vylN4vgKfT8J3FKb4ckEROZi1JDX9U21bUwetVYttjCy1Joy3IAjqR7i4vaYZvRp4eBzPHyb6YblSJ3go0mZoo5wBoU2H0sxRPltJvloewvg25FDDGSZ8ULBSrV9gtADa4Sjlfm9Qe20tQ7xsUC02UxeYRtuHUxfpdF2lw2E3MRgRzXPDIxkN8u5Waf6CHIpu4AqMBRQLOLvrGVimtevno+gIVLSMCNUrnlDQGQoFO0xqgVqqCFTF1QA9CNoxBbc+1w6tUUwsELmHVcv9pUgDLFlnjD0kp1v2s93+awnvdFW8qKRy+h8oqLNUMnTZ36wGSsLgWtooCLucvLtdJMNcnUW2DDJpvg+gq5Qb3D1Ht1HlgwuuhDIqWnoIK8L8+N8dVPNRTTInxENcy0794+nRTjtZBPHTGPG1g0x4HTFtsXtGzDm2EW7LdadtI4dToSY2MwFJbrBiOvji+GkSR2vt/pkdrAN1nekgQ1l/NzUw4lG7MMByKzJPvrIOJG8V3Mdzv94ZBnk2lvOqbFIuZ0e01s8vNI6QfOq7U7R0HjwKO0rWxflWnX9s1eArpx6aR3BjxT+5uJZZSPds7etaDV7oSDJ2f66DN0JvBDL3BYRqkPwwiaDczJL5XM7JYMTnOqZHUsqTKGRv7NHe9mTaJO17QVsKmpxaO/yQcUTO/vrfXyJNGMGXK2ZRE7KbM4EatgIuTxDGfFrzMtMIMgzlnNxflzZdjntaoEtqLlKUJBmJPBZmQCxIoxbpdLmEmv/4xAWaxvQ1SFeZS6hlI1Yp7VkYpoqjlh98zy2ONB78NiEwOv6b8vd3ROY47FtmUcP0ieENUGCY9S7XbVWWjiOoy5uBcW/2/6m28fjT+2G7UMdrmzWz+ew5epN2rejp5lotQKVJDWuhsdNwH/UW+CIQDrU7JRg3OB2ydX+UH/1JvnaidkcaCI0MFF9rMtFJfazbAdIvo5oHn66M71bYdaLtRxDMFO5uls5OGC8jKLFTzoxS7WIEaGvm5Nq7PFk+o1zu7Hu4UR1fYDP4JfARz25Xe69ld+3afa7NWSrSaKYFIHh31hiLKrtRugA2k5JZLJ61/C0njtUrprTvGxd8wc2cUAjjHa+9pvenE0K2dJ/g7OVjeYf1IHX1hd4jFtQs/P3iaXTej7Su1kCVBgvN+ka4cPcb4Ndy/fR5ow9ltvs0LAu4lG1y9+AVBvxA6cp14zqKOM+9ed3gk9LmygwzlYj18etGXKDM0Xp/ktSUm2it0TJD77a8g/MHSOa4f5cpNaXW3f+BUx00tSbndqOpO93a5N9myvX7kbhRC8961H8oJmUhqxanBp6dHD+WBdck+lQF2h+XYrcMzOl2Quuzvg0JDO65S1f6l8YfW7qcHeNB7VvCq1B9cATWzYURutPnIs8ymA0qXbCgNuVx2zdkLvd4AFCVe9GEU15w+b2uArMe1SxB12/rj2sp27dCCRN2/cTe7LVngxJ7W1+8yt1wGUwFWZQnSn7WVjbCvxs/apegwz2oIdXsUHfpmjk6gPmk47Pid3NiTuw2A1QjGOZ1sPm+Y5+dVohsn+oXtbCONZEYyCqCw+vmvXF7i3yz1ZEodrnSeS7XWlwdQDIMEWSrNle1Fg7XSdfqi2WoUGl8oyl7hOu5aRQ1qCOGKe1EBhyJdc+uZc3TEnoOEC1zJvgU2hxkVPLXNnNxCHzZRNvYAxb66204bpdDPr6y6LL5iTQVwe7ExVywJ2LyohjaUSPVrxmj1KRh63CAi1Dn4+uNlFQhSjkmwRylY1R9WKPsZCNsNftqkAsFPu9XL+YXXnNyf+uwLc2RpVGOCsVdWNZE5au7Zw5T0qzOmmXfCyTNgPiszSYorwuRFyeMwQ2ccmiuXqcp0AfoYE7ni+8AIsZ5k4vv4702lc3K90y3YuueGvJ+rLWd8BylbTU561lfmN4rY2wHS8dgMCuyPUh23TU5DxcBnNW2wguWkl+tRHbgDNrQ2VCo62XXiirH1meCMA3ZrCCivA+reLytm5MNrOeLuukTOXCi2U7o8x1OO67KbXoXZ6aO/BlPxi3XJ57vCgdYp7QnlELiyEnBrG/KINei2q1l6KP9SRpcvaicjm1kLh/5re9hWVJtYwB9umL1BD24VcpeuUOklIAWPJPry3Oo9lslcpG8y/lGD1DbUkk5UtOtXagqhaALQynUuQzh+pY5ogskRXLP2WncK9IBGe3ayBA301OKNXzWjKHle+AsdgcZjxjVnKIHDct2EeyvZq3j3u24ZWqrIl6SG/GhsCm0fG5Px1/LuQnszztZd0qUE2MdqPf6/na2xg+sVP8THZPiP6pQICvsdZpQ0dJFx6a9B9EqPH7/jErUtr5fFMOoVIRvdd1SdM1nUE8QMTIWu2rXCMTHF0XB1oDCgtuKWnPU3iuhyC+4cVcsu1BDQnOZk7m0OR1dCNMb2+ZB2vuRQy1DclxWtxsllCKucNrEy22j711b0GISeO/M1Tvkr51b7usUPJY9CsCGeTYI7zpnwsPPmm52m05iFHRzh7HmiUiGdr2kK+bLVwGKYsttWjG6P0mjmuGiyxn5UxyWG1v7KjymBF/qmLX74LXwOUdSnsMTbB3gMXEFLNVaHVB23A0LgM69IsB1TXaMkDOa3cTvPJYNcyabRWQ0zQoQcbn1Aj7+ZLfOFPE/ROHgZgIXM6Aase+Z46tQDVjHZsVPrFmt72Gw/dJvmp96tBukGfT1HuzqPEBhv8Kv0Aa4xtgeBYB0qHzjzHU47kBIapHppwe0pNlSKt34bHNMHWJBgzc07VKNpe7maxMplaBBrOHhgvA2dR5DAahLemvbECLkuLy6mZIM8jx25/XURdov+y9GaAeNC2WRTfYNhSNWJI26E3L9IGBEY6Itm/BwGBa/dsB4RBMLCaxaeHy/bmQlcfK5n/UzDndAlqJmlxbd56WcUrU/hoUTMSP4XiL2Ah3ivRxA7Hjrns12Qd60tAZovLBfzW1pc7CMMjBuXeLF4pr3Qy7Ar80q1apkkHKTOtuNInXqkGNO8tmP3LrLUPFIfDXS91EJV9pk2jNkVYuBEbSgThy6S2Q6q9pSJMYuWNOt5PtEU6sgaZnZz/tHzk7kq5pL8t66cyQ0fpmnAS5u2Ah9TYrs4HpRT2n47ZqWZ9fURHmKetuyGWF7JzeJQ0gkFRsBNcs7v0Lr5WqydM7AWj9yd6bQligluLRLA6eiXDq/Po6WctzdVXDM97rohxT2X9n0Tot9/Ylv1SXLsfdYUgqof6hZLabuvrCu5Qb+IHOx6kxkluRXq9tiAVrh8BjmD3dVhxmxEsWlHeQDvaxJZfFt3d7yrMp1DMS7se3v3G7zayZ3qP7Ok6A1ZkEXaGvVX3zUQZttC23WgOK/ovQD1wjGnCHa1OtxZI8y+lxEJugbemTWTOW5nbkVS2Kt+V7qWDUo5vAjUprW+ts62k5GscyJFPKxSUW8v2kUW90imJ1LGfJntV/oz6WE9LyHIN46Boh1tFJOLxUSj8lkdZY6ngctzv1wnHmYbE+ZgeI/uIQ7IIl+GUa6zsRhoAxAWXuKuwxF6DteU5ZVurRfFmBR13pulqpnWYabQ7Ltomq9BkMH6BPVXCct6ySU6yfAEJjTa5x1IfPyNePrqFoEKAieO1uOomRXlGrxBuEyW8e5NKk4tY2hnJrGV6+ny+seja/C8PVWLsIK6fM7PT5LdPGuWdKstvMZ3wSStWHRwwi4ZBHTq9pe6soOOe6LXKZWCPNSAW9uV5XapFu4nyfSByxmFhjJaHRp47OwkSOfNmSXCRt3ce/89a08dDbXdzqCGzhFpy2zIqZgYYyP3otsibz2efQwzPcgor7w5iZ1kV5+b6wKDWOuuyUVmCsyRalic/bVUGAP0DZtn1geFa02hpRYd+seIEn2sIBWGWgt67viTJMNbV4DSFWX4evzpoV9vNs0yMarGhF5MomWaVJJ9ZpAt0quOdaTGKKaibwdQakn04/Nj+EupxlHpNVk2auKQ1pqmfd8ttaSsvWHfhCzsRcp8gbmrA72O3qu29566DjMpQ3jRBuKz1GPL9ZpKVPTeduGPKdPo5/9QPhj8/KwhngFJ9dXtRaRf9ePApwqXFo2CVoBya0gNzkjMCrYs/3TZlb5t5oudlrKxfShFxVTlH5THTG9yA4ZkUkrpUeZhpbTuDhLurLKT8wduO11SNJnGTigoqllreIKIg1HTSwe6gSujZRJcJkrmd4jIVNeio4+Tmavocylfy0yjmK4DDsHaw5pzhH95K63aOAkzVXvjPpwU0S7dVsGEzE4dPvhjzdqES+01qtvR4qlrsQBxO4FIki/45yAchRkaYIb1a6RaY6wBkK/BFOWBdy6hWxe1cdR6AGgNkTSsKMZXV2qTtOlKeo32vgGvI62m7rVBmqhEn+1iONy52HYD85IWlyTbOZaAM1TB50Jzd1Q7XzZgrov60EINTblbsBUWYgChtr+xT9qDmN1nBcRkq5RgAfvKYn4mjoeuLlw5taZsCOVdY2C7Enmb5LOckc6YOwLaBGtCPWbi9GcZkKMzd5oavlPJ1OwhunLVB+27glhIM5FWyMTNK3kXyN9NFEzax8GAmAjExVQvgWEMcrSODSywh2C7vHXQYbHkWyOe5GSo3qydPgOGEMw3thhDjGvQ4Q4tOWOEOLkNThDA9+84Qyu/Unz6uw7rhDgoo+wnYsIc5XFF4NYDOiREesWn8gKYjEzHCE9RoWreG5sPAyk7U15MvC60Ni68VpP512wPXrNHL5yXOnPdqJrPFBaSN6FZJgp7IYzlU3NIk4V3j2vmstvdwFvGxJcgZfRav5GqFAgYesLPvx0nrVab8eamowxfVbJ0xQYr188SZH+e7MRjqrwKfntFLtCOFPB0kA4JrRK37j77g7pE/qsgMbCrXT+ZvF09ft6GCpODW7t3NoWXurrTSdTbZ3nqFAPYoNwzDl6drE9Ak0eyeOE+3RlTToJxXA437aa7RA56AEK37u8nbGrwc8cxGVaRXTROGIyBzInnNn0i30jZ1rZ8VhUjNve2ZwR1msalneebC+AYtQmgywZVm7SKpu4OGhUoTb91VR3FsjExaUQ63pFtw2v8QUUz6d9xwh8qeLZF5woBVuu0MGVDYqxltaIRowvn9NSsohwjs0gTsYyL3bUa/M9wdWTu5HbWn6t5YF8zaJvmPLgi3bphgz2D5C7TU1tY1BsYxevjqMnGN4TNZ6jfymodk3QNk/lZfMnH5IRMyk+qYszgA5w7KWstoPBujzj723owHZxC67J4Y9ERnZctuLXpJis73JG9aiX5sQR1VW6z08G6x3JbRQRpJmKgkXtej9UpJXPVgNVEXrVAFSQy9paa2PBPKdjz30R0trrjuJNgXcVvW/BpYH6CrzxUNNRXZc+VKYPRp5jPNX/VJnXEtcu8wsUvlBHSq/B7s9TDOoIJsqDU/b8zldHjuu5ujzky4tlqj1AueEofbHnsQZvvimcOa2MVpxHXQqfKS0gHmTAzg15n/zOnXmZi3LonVrzrxDQw7W8Q9rguphb+0dz7GEQfAXoToHQeXVq1NbXNEwot/sV9AdbEU068z0x/0B0ZJt87SB6YHkaV4mC4KxRNg4a1Aboou8ECGyBTRQ2t0rThgOY0cqL9iMB+WRsjAb5v6Gmzok65r+6QphztO7u69vdwp1EqOvO+kOerBu4XJ0M1+msbcmgzpLzuT7xjKN92OYazIbjNcwC2m6kSTctzNBwVNqzQfrqXs0GTl2BDI6MVoSKW5caF4yWmGcETT/qaWl3Xa7YAGFbxSfgisDqaPnMAzGKQvo6QzBX0uAt+0DHhVDVlv2zAhHBmqB+FVhwZItbBarQ1CsWkO8A9OqOSG+LA1SgKxStj3vETjgKtNe4JDNYOgm050ddbEdaSQ24atSzxrNqzevbduqhB65Jwke/kwgJ48ZJpqL3B2eDBo7skQ2UCbfY9LAdbLGaGNtxcw3uFZDtntRwYnew9Yw+yA/l069DS6XDqwMZnj4jKmXA90M8Ok/jR1pbpuIi1koitvF62hIkxgVFbtUmGVJK5QlpUhtZbgA9wqkP7GDCem2ZnJONkVLpkbV8bzNVZAsy+k0QBiOu/mNjt8Y20f7VpkYA2TU6FbpqkoxufK2NaaEooBuZ4zC6slwpXa23Z3nIJG7ebKczh1A+3sxiGGsQwMw47gN1btvXRVqZvS6FF04biVZTc86vlpfC2TWn8a0rVaMIPaTxVuG1Ura9Odrq6YUs6x7YZBOj5Gft0/XdskrO2rjh3P3AZhLttmRQXi/ZZfNnxLxV5uclr1kY89+zsX33mkPjoVs9GNqi8VmZ1mtQnG1kCJJaRZSi9FkuM04UES5yfm2tbnBtlm1AwrdYM7rfdN37g/Y6XeSzAayi0MiBWDYS93IS6eP0/aT7z1qNPW84Y1U4gL3d3uYjAvpmOA1ujtB9M+20BOi6Ams9K+jDhHHPVCU7gdo7aHMhx24ZcrNTjm21d045neXMH6UgU1j/rKWKOd2KrLOfARzBODMUWY97ihIgK7i9VuCN+NbtnsZ01Y9KlpFq+IIJf6RP9t12Iccl/NbAfUdbmTMD846gshgXvrrRwEOaiyG3RJ4shrErhGq0bWZ3UDYBhZy0q7LskMKsNr/GSX21PKHLfxXs7rTE3D/iG+RqtrAg2r6bKaQWOL1vH6E94u3RYe0MKNGQIScHG/aLLIvgGXz5GbIIq8t1YLbYP2mm1NOgYXPT8Ba5uKpGScxlLiVq3yqT5x6n86T+uEt2NSWXe19NaM/tXHWlaiEg4atXa6GO86wjlwdQC3Ukku06yc4JS85CPtQgcR4bkm9Rle3Gkw4eiARxly28qao6DQwM8/wfEcOuy3BliYb6reuq5rVMnRMoYSBdevOQ1JNb9Ls5J9TZFGKAp5znHT7LmmFwedoNBbEw+i2fWtYfaaNrTm/pzdo1XWjRk9vmg0KZaePNhDxj1O+aLt4B3ssYWXtfguZqTdhTgih3dHJCACzv6w8kg3WmWKOPq4H28QClFNokUZrTwvzV7qq7RH1wNLcWJiMXvnUmlPMdc6XzMtMneMyo6MFqE7vLNIxUr4mS84w4eHdqiu16grk+zeqkmMcPqiVrchGLABwrLF7hMXBY3WTJHGjBA0NNYcBuFabv/axLhFkjIKdiy+o5RYU0N9x1kNmkAxRPnRGY338ragJC9K4k+kbgxS+Yq3bgRukEsi1xSpvLPPmcWM/WWxetHg5uHlMW+6wN19AV7crIHOWLb1EEYVu6Nr6sz44w+SgAbbiZe5ysR2DibOU9lfhMXimayHxFdRlLFdQXhEwv16K1NxjR0QfAnBsME35qUDd0Ot5fpraC8QZPU1LF8UdDlaRua19Vs6SrYAMGG87G647K/mflG/OWRXW87Ma5+pComNlflLbnZ2RqUbGHSHP0Job7q9a4lvCdgRTNKlxtaBVJIz7e4BCl+6w6mqWWraPSaa8O9QXWLfUj5OXMp3+66DdKmLu8dbccZm2HXIUaQR00OJ5EHQtPubh1sRn4Sign9xNU0GfWG/RdrZ3UNRPWwZYm6yb+CJL9UM4DO5WP5Q9uuQ5fPbyZTmcXDpwKE0wLmpLorubx4qZNGDOXEo1rhazx9X/w7bLVeM2/dpnsktF3V3trHiZwA89ogVCs3j/mOYdUpJLFOjZkaJUJ66Wve9BqGwojOG1aGV1gO7xd9Bha0bQxI/rZeLdAX8dqzsOUTs+O7eCc3Y7pUN8te5JHDWuqZ7XWYYNeGDCahpg4+smmvs0aIaXJ0MoeEjtSOBpJuLzGVmxqrF5KJG4eHoR90O2WHBtup9BvnH+5b5O0m6UFOzbbtaytbYRr+AsmVH4xMOm6WpIxGFYr2qbbpwjNOhR3zk37NjemWwZZ4mSu064GbFZOqE5NDda8z8KO6yGcxOpYnr0NSWjcMJ/uE69JrxaF9Ofq4d8tt/mAkDcYtnZrJmimaV7Ks1OVLPjGSjBNuHooStE5WVqHcZpQqYK5QEsYSzKNwT+ubaYrFzhmXfLKgsVMj4rYrXKn1HkY5Oj+NZLivC1huUHQX26PI9PT+jBG/JhS5IwVn2l9g0NBsva6yyZvOqY/1WijMOGKy9bZ+uez1buWuxMBPWLHrbBpcUx2dEOZRNX9aWfbbv4aimxkHolQNDtm3REg/A4ds3doUc1izlVtvtQqUSSWwTCH6GDWY2YkTYWzR8fsM2X9ntwE6jni79Ed8IunA4HGLDpRP99fp9mGkwLHZyFLIbGab5K1tVm638b0fqs/b2HILFquql7QVhaTSNNU1wa6kvFt96JNUO1JT7pWDxc23zEZy2057xMS+BxNrgkTYcugubsa0YahaGko4vXsbnezbDopR7Dy696KiPOvuKpM9ZRr1k95jiu8QoRSAJw/m31dU3OhKg8xtp27K3BndfrcH17rEpVsWCmIWoU4XNTfZ/BItgGVe7yMFVCqdBHls1AvidbxIpHlpS2jWqxo462qCVHjLNXqMj7+eOF+cqCCTBV0JJHswDTxhUJgmvhgewM9d57WclUW6jmxpfDY+uDvH+TNFfurP3RzKXFGwvhHvJ1T3BtV3eESc2yvTenMIqzS9vCokZla5ey6+U1UsM/pSTkonEc2tMkjZjD1FPua09LuPmIl2OTpbmrFx6zagrBQ5AK3mybxZdDPabdYktvp0Jt87lbSyIruKai7Q+RVazMcUcD1Gpmjfi1+nnz7WxkU0n0lvmt+CxjmZGks2GFJa6406Jv/OKdU0MMFAHppKnbu1Hu1SgyTbrDkHedMj5OvSnKkceI7qC+7cjrJI996+kCgzOnz3kX44NTFmkpi4p+crNJOMWdHTZO9CJ00qnVKOTT1qfNsZleneY3zHlA/0p4n9eTTW2n+rGMOUOeMFH5tECCEh/K2whmR8yMih3gtCbb2qog6CLuafQzU2jYtD2tVEXdsWtFg3V5nfDdzPW5EQkokXM23y5Ek9CY5eTNA+qA+sHRjBVn7bXBO/1fbZQYmbVVuaMAHdUJ2qk0DeYkB2IOkjHMUgmi+zPi2kNR0aX1MAsmB6Tzgss5lZayMe4hAdPaRkXzd5kY6kwItb2W1jA6yhrAAVgsQ1PE5WRte1hkSXAGfSBm3oAmFQKYLR0h7d3lsVOMBGZ+5jLpx0n7GmZurlJfCZlms6yNTaYztSTG8vAx1R08FGSdL445qWWepvBGIp8KFGs3AltsY5oZW5UdKaUtDmhzaWhoKVO1oEGCaOpuD2dUGBg5oaFVowt0QIArYLRzZpKJoeUHc+1xmNTrHP55sy/RbhXkB8oGBjoItdXV8QM1J4EGDwKGnOjGroUUAwR8G6ozCaeQwTPhXZ76yE9YoyHWuhAmHTmnnSeJ6kEEdCchxMykkAYXZ0Mq6E0Z8L5ZuqLFLOjsG2eGGfELHqBgjbWzDmExLa2YAQLEwGHlc6ltsMvzXPWy7TEsO3UOs8eUYPIpAMKAa+p5gKtcqQYy3UCzZlesR26uYo46tUcfJjenMT028586wp3RvL+zdLaHnzFVR9m/RxXtdqra1aiurhZt/ZO0iQRYByF8a/QS/R9x4ba8dSrzr4IVv8q/f2nMtf3aWdiLKfalIdJwNOodUerv1X3mhY57dlnVW+DRbvvkRzdeZvZNvLeYDI4ONqZ/OZnX0MbDBIjVzXX9lFtr9k12HbrD1MQC3R7Xgv3Nk4flMYDGIsjDhXmZ63CSFS8dcx+ViSn8aWZ1Idc5JBLEHWerLQXoZ9Ow8K221MIG2NF9ZVTaDGtCg7LPrPE1Zqg6hpksTsanamvzzW+r2IzbdWovXjiaRuTlEO5DjI5rnSVyJL1YptxtW4ugtpzUkytoC7wzcP/GIfXNhBlKbUEQakqcc2afOrTqIVp9wwm7h3CN+GNKfbDNrtcsNjnRK70hNYZK5fiYn1yBdWSdclFxTBmiqscS5z/yEH2Nwy2cS2iy8T4IwkAV4GdBSd5aLSaSQ8uwp311qCAaZvOnMsvngmSIgU+29oaG7tDEPQ6mew5UMVuCM+O7k2mxBg8Tsp+axRMHidLAtEl3iEuqUSbXfsqkuuehgg2oDLTJ26Vv1QzhBehhR1I+lyA/1mxtv1xQVHPbDrxwYNtIGHCUy6bts5HRVon2onWCt7DjWXy9XDVqnyvlsFnYCpCpO7PLxWYHY03wERKtBpW7S8tHPWHtPP9XhxswBmVuGwvNi3oZSiqi/90vaOYnGhBr/gb84EpEaY9hP8IgPzqWyMQJ6ORjBDWxTTeq1W/UveI5s8t7262bSiAja+kxKpGNib3RyAmdEkOlSE047Z5Xis6Ge47Tnuj6UN9toHfMAumow8hKcbFQLmyZc+NXleTHJaQ/Wgm0V9qi6qhlVUYA3ylkEm0Crry30tT9vyq5mQ7McuOBZjWjZvxesGzORRQW3OrrqadC9DhjpCz9QI+Tl5rlgTJx60tdbELgyCPen5dC7rwVJLm1eIawnxd70qNMm36b2I+v2fanQ3NYjV0iD1uUrHpSWTzUwXyukwcBeeqUr0Xnt4xuv0uNs6+eOHLMIXqjJ3KzaxZKUi6ljHVigyjzXb0YZ89zK5fFB4dZp72xnVaUi9WDZjUDYHxahXXMKluX7oK6EbE84gxMxyfYbThLrOORFB4nZgcR36p4k80i02WrgzEae7z10yX1C8rf2qvPMrZjIYcLxZ+iShiukx+ivtXeQY0EMXpCJ268ldV29Sh1xTKHZdRrY6Ohh1K6XqXX/LqaUGhgG97HD80U/O3JNorMdS3++1UysWuSmzVdVDJtQ2Fvl+sAlqzGzSsXHl1sr5mKUhSIUaL0xBaIkHzlmq7HL3qewXWDTY4Zrl2OeCwzsFisf0LIpAMcthBQ2bWuWd3+NFdqcG1+x2uCe+ig1KnqZmYBQri1d8h85Rjhd6xRToV6956uON+oDZWLa3h7ZwasdKmnfHKEXjznzWroxd0kqNZxDXczo6XVoHV+36UwKIwe1dJj2oN0S48gigS6zZtFAkqsXTd7DNHsV7FslqiNjs4rWFtEQkHBpIupBtsgJljyKsWB36zIWZ9cr79ioYZju7g+MnT9yNdPZrgIx2ug1EIzpy6bFbawXg5spwLq0kL6fm6OXMxBbEXTxFV6IyKNN2v9LntqChPSdFg50bmOC1mv7nmCtK8MM2/sGScC2jf6uvW5JHE4a88PDDqjDXkdu9PMzIOAi9AZWjBIocugDIwBTb/szh2u0lBjE7qXbwc1pLi7Vi6YHHFITpL20EY7K0iA3R/Z8xIumlSOUY6FjDViD2ZdBMxZ2xzCInzZyODVja8va/WEsr/TZNc8tK65re9GkiOQfIo0+e015hT9PGCg9pbTHrbuvl7mOeLM45hnFOt8zat/68T2WwfAgXv+L2gzYLR0IU2knInhGXXL1WLo77wTpx+p9JEuodK3iPpWP0+KDMOCj1jgCfrMKhVV1goVworFUVTGBNF71dprwEGmvmwq+qDg2gzZiS1bU6hIBsMncaYdHfG5drZC6wNdM1jjHr3YY6gHt16dYxdfC+o/zzz77DxtKaWwmoyEuuALwvo5hxbJK6310pgRmta0JXWgV1WsOXx+6othvIWVIUXDdfL98W9SMFRNWJUMX4csjDDGrqpJ4Qfy2uINc0MbZZf6bDPnrYKsmmaTF188lS7HZUsfHmMddYZXDAR9vXPMQ9pwQyMO7XkMwiNcVg+03Sk/pAgmPL9cjVGQQvdycmCzhGFrp1yvNmGgiDQ4Jb22RVBFrI0BLpLNK4bEaWI6GxV0emtQzi+9+fcTOMy5zBs1MD9Qu4RA4+/LRF0NIcFYWbVTbCxs10raQb76d9Ohe/w3zxlJ7oj0MS4DjYWdOsvZrp3vss9KiwK7ZBe2wigVtHiPyLW7TDMaVebnKY9b3zqg0MaxazOhh8PPRWcaGy6lojpTSjmfoPXT7qI/vp1Xfab0exXgioexTrH3qBms483+VUwUrsNsiEz2gmq3b372q4XOgnYp73m7WcHNsMVzOh90uUSP2MEVxODITG10fQ7lnHjIX6UsnjBEOqQKh0HSFCp1+aZZLD8Ov59RF/kSAZ1HHE48KBJ2GLEH3lzvtsWYj7tnL6DKYtd+sGs1CfG6czBEuGb0769Sf62gt4lctSaGgdbbVMasr0L77HL6XipmsW7U1bwQYe1Ei3CydDMppLWg7H6pbfZoY8zkNGNBz43h4Sr6brAG8gXeDYq2E0gYtzI34hrLwhRHco+A7dbzMKS3RWSNjFg/M8HNchLUe2mBF97kWA+zbsw1x2LeJWIGCW6+dXCp5ZlhVuLj5NFMfDmALm6FptjIqNtrTtNaW5OPuimTqlhvQD7ocq5fu70vDPDiP8084O4cqTXdfVdE/foRyt/HrEcr5fm4ajH2BsANyxoOwnCICO5KSHjtQhKtPnU7rjhWeewtQT+u9U0602m1bUi6w+y8kvjhKroHWiD18JVnG3QiVbrY2IlUQ5TcXt9nm3U2pkYybD7ZCMXGZSs/NCva+owX/b2594FelIFPyhu5YaSDXJe1oO1Nri94wx8VMEt7GSr/ylVvjTjlUxpwF6GnRiDIOtNo7x8QmHy4z36GbvK6TI08GXu/9r2Vn526s95xDy/yEZNbWf6E49CKcmdAk1KOUiAwODbThDmVuC2e/4aRgJIhOEhwtOSpG+7WbuvL+J+o1f88CTNxXtaiBoa9pr1WFdzrSeZR7PVcTQnu0Ja10NdUW+g29H9g06z2w32d6tzNF7Q2CPk0Urms6X0Dsvu+Q8n4lpTtyGRFXcrmrDUr3bh/ZTtyU9obsrPuVOtAlZJmDUoWeaooSGu192pGsNjZrKP5VQMDcO8CHnaQDozIJeSYy8rKNexlBzNhgD+2UxZOm1vBVXRiphhmptw564rKLgw2i1I1ilb44rHQY4O8iu2Tg/F/PgYKv4QZSy8yL2e+dQ4aXbI3yrYPaaN0Gs9qhyBpKxvU/UBdsPy1jQnMllfwp3QP11jNlxD+w4/lZlh3XJLpHetxFOeybYA2gq7JHr7JGNi7m96DFL3dRvXDWEFccsqxLpsssdQsVPjmGvb1wUl+kEvvDl9Tww/7g9tbpNsOWgNoQiYIKV2NiSaltKvzPcNiNh3cwNoGLc8+7FDNEYfcoIeDHa7jkiG6ZArEefa2onHW7IdM7+rWvUPlR9ytvFXtupnx2BZ0qr6dbzrPnpV9L0Y6MFvdgNRGCzZ0mWnSHQlvjKuUlsJeskgOrkKhFpMyXAULjowbtU77steaJOXtb+OrKPTeHqFWCqpmiGPcn7ixTOGU38C1pLNnA/Kn9uDsvvlL3694iIinteYwfC80V5W0HjleVKx61Xlfx2KGF69BSudxt/qiGATrytWuFQnTxl+1j8lEVkbyteTUm8q0T2C2Lf/HZ/Do+sPPYtNrOTu9bVJltWMvV6WudVZtzvKv4gY8mvCyWvaymhlfAW7YcT7yt1/YEuiBfdBGC1ZWpTty9EhNWGVxSUPrEGwzQP3gYqB0S8rD16jZbge2JP1tr6qrsNhvVezI4Vnd2Ew7B6zTLNW1CtZto4GI5D3vWCeNDYA9IMOfJ72wA6UCM2Zti/rd5VVjYZgg7Er1i5NgpAo8tk1p3bimjCcretBlHbalSllt+ha3ECDA2eFho6lahrrAq6ozqg8Z7n8/IBsLI1gi0jqsreNCQh7IoYGnIx/E8W1pZ8Viw2kkTuPXzs4c7025d2CkwcTUEaP17oP87p02n3K943hJwb/rqBtrGw6vvTT0OlvdMEB0bBirN+MTs8t/TJbXjaF30HuZ6D0FPUpiBku3blmrCpFezrTOoJkMsr7TYS06/9J1Mw88ll8GT5GZl8dSjSHSY+eCUNPKuvqaayBn6SuEvrznDUyubHdC8okZkxQjFYcDVxb6EE8HRBFbigouaRKcyAum0YcbUli3U5ukcMFM67Hpi8j5RCYDWTxipUt207bGr75Sc03XgpmxLyo7qLuM9uaGgshfEV8IzDv4jX8SjWwg7UyRYkMsFl5XGaR3KlQnBlev+83Sl567r16D2cUwv1u3jxKA1S5aPQDPqjMgNg4byOe7GsyQG1sctX9hV+YxHNbYXqswKcQQwXoUiav2cX34D8lpEEMhlLUL9zeokcKyhTmuxpWkjnUw2aq662MVjeMU3H1Lr6NpvC0/R12n+9bwyrhqvYsOBnTCCjX+saKhKHTqHqsIYHmrG6lcCK/telc00jwFgi9KY6KTu5F/XG0ptlkLzr/A2veDWVcbsLtV1HXjNlStWsc8T5V/JqqYacc1/uO8re3YsQ3c0WlErza0jOpVOoXHu7lzls272cpqx+qiutBfH0NU4OvXrpIV41hyeMR5Lx0uY2wt//2JPdOAZo1G29x32GCFJFDB0n9PemfNwX23nMx41/TdT03rvySkDY2pd1+RAZHMidbiwsvRb9BTIpy+byjULnNkIPLn4ByZ8FI9ZbfRenGN8w334TAY1dsg2zPqgO1quFZwNjhZVGDHf+kCazwDVJLLOXdz+UpV2mogeGHqkgikUWD9jOSxuyhPE/y5D8jnVOMtYVlSq3SZgn0yyvZOOe9c+egknXgBE/Jbos2RqzOKEWBUPJLl6kCddxHI0/TrYGoO942aNNCW2Kk6vptgnmPpHVXv7aBVubbNkdV9huTDbN9Na6l4QmseqfYSI2sl8YcgBlR8HNy7XFwLZ4bkVNWrWskQ47ZtjS2arrgTD4vt3tGgXXuQTr+n12EiINl8htPqLeMvx2D6XYMYnmj+w1oFRWbIRR7I4N0aVyRh3N1YB21lsPnnt3WmVlK/nbuVUu8V4yR02B2k4qolUaLFtbLkn+TZQ2P/BhZoaw6pE7l3la2H24ryrPTbWjsWnn5WG8B+SwMxJbf+8s/hb4GGRPFT5nCxhblR3Akabk9fBteyg9gAXCK3l0nGtcKzWU8WuYlfujOA94xdsA3mvrzeUFn1w3B/40WzxFa95MqdPWGQzOdoRh0lcJu+3OwaUBYwauH1BCSYy8jjNsZq5YvNc7Ww7EcefXUiWeraZuHZVBRtNrZGe9AyuZ1LQ54Z7jq2MFhKIs7EecZu8i7GU91zJvZjejukMOu9h25+DFXW7zY+GHo73y3t1n1SCpaLD8rqNo3dr/nprFM8y5n5M4TTiywbdOYBld7DtBXfToVtvbrgZlTLMu+9LyY9wLku3r+zlIdt/DpiHBwJ1jFs2YfHUyYax6px3P3BVPUMeV6QWMolafDk/gZTGgJN6aG69MmWJtzcPumTmum7qZ60P3B6LnX4jlGH1iMXLpalR2wV7Il3r3vX3U6uHM872ve9YuulYW3hxblg98PDzxcv4PSUp2B5boLMyPDi9S/Q2aCgKP1rxFt19Dn4YzfQ9700j27SSkDwA7FbWS9uUs1tHq9CiDlVjWh7SCdqXw4S1PMcCahbsbba5VKyUy0Opp1aERuBnHs2tgWyRgECetPCO08iqrlX17QYTnrssNLmniosydqGxPkN2qO6I3+BvLNAvuf5O5Lac2sWz9NQrTPQf4ALhfkMdcDM6sWShn8WXCxZV6UCN/hGnWm2UTvyoY/3HdDwVqeV7vAaMch9pnLW/fKrj64igokXhXnyVz2LZaKSOiHK2nds6T1hNJqU963Jsnhq8CvId1MhWQ2G+8xfXtAVnskuuf877SsfhxfG8vuptIgzp16jgNMGlwltZ+KWb3QNRG3iqNEGLg3RladuiI8I6BDtfhWxWatn9u8YueY7DSHSyl71dMhjdEwNUNIa6aMoulqXG/kc0Styi5OuD5f6QUTRwARVvWwvqEj0LqpCRhjs2lmj19cF8a82nBdUXUXCbAWKYJVhuCDl2bO3SNwV6PomFFcSGYc6AQXUOici/qW6Yar0zxtE0YklZmYPRO3UPNNw39VYdEf2oqNJfebEasd0G54i2YZgkrtd160Sdr2NVS3anJqDUOaE5aYMyrZTI0tXPirlLoV4U5teGerbHJgER6Kzvlbn0YUwWcp6WPvYbTXflYWQlXvQ8K6T8ivFtRT70RfdwRCSsFPmComPgsZQGvFH5m7pGPVwvGGD+8M/dh4V0vmiGb9u7zS+8PuXVabiALRByQ3Fak2/bfytOAYRqdKKolLRWj3SJWoR5KWfRfi9OPJRSQJ3DBAzCVrScegGrolzVio+HnkatykJb9nTcV/1y/UgeGaNcQZPvTM1njcpgLMZNMiRwQgAztDkNxKACBUDqqtATywIrQDclC6LwIRAc1WUXEuagH+CFjTiBf1Ib2ipTm9uFHU25i1n7lNI3eY2QQz3mPlC2c24xKZO8sdSvlMibbxUjAT5tbguNMVes0j2G+u1ju6cVjV5lnqFwxNad/jBrFO1oj9rTtaI3MahMdbZa1inHIJpC/IuIbClsjPx3zaoXNtky2Vq7MUroMm7IXeQ7kK01TcZo7sK51kJdIxttQas4draJM0q6XLDFQiYkxqwnbiV08Yx86jKuBjhQzOb7PStQtteq65WLgMZ1sGYjuT1JW4DDAwndD7yr2ZsCcFfDlQ3BFyAEcy5EF0yKE860Chkd0X7eMLlXaP00ouzcWlMAV3krOz5N/y5j2a+zGeAw23Xo4FTG1llR8+DMYbs7/0kTlYoLvn2qQTRS+o6eN2za5PKdrRRaij1jvGSPwUlRZj1TDHhG2BURs9LgK48q8lv1O1o+jhnelMHKliEwVSVoFw+WmZnwONo4cIaQ9alO3UdJmfi1rW10nNXC6Jhkna0eK9yX8OI59IS6DREzQiaK5MBn4mX09EW4t45L8p5W3xCXgD90We9JjUe9rDI0L8NJ6Mpe93aa5Y2QSxITl3VJi4C6xmohaomYbRF36h5LGt1jyvEqup1po38MUD1HBOkHh7XbhyNsgdIV8cDFhLsfEvIeH4ecU7Lpt49mrlmoAUdxgvkn3gbqLr2Yt7fOtpogbJeG+Hi8x9XAdOSrqKxtYf758bhyhvjzT2djKO0KUXrP06kltDIlpw0H1OESl06CPwmj6rRdXUWoz5v5SGq94VikzRhucn1Mw+VACN/RNOALJqbfvmxLDFlNbA8J8Ma0w5ZEhwBMWxgtk9OPiPAQBRuMsTaajwMgZpW/DPabdkrQEdUy6sxHt8EnbqJhg/I/GYmsrNfD2iw0pWJyj3WxnAdM1RhrDjO6HYKE2ZgaMwtygVZ00sojhmNLvSmheGNfSyqTFzgW84lop3fu1DdJee9egDmFXwkHY9pM5OxyR45RtjdvUZQPrHz15t6ZklXMUcr3QLrM3ypb5kiTZKXYXkIaKkf8y7kle59bJ7SZqqzB4byNr1OjtTT5Js8odj4HtyKv/u9jPUVcRz/VPbov51OamYRXD31ipwsUwUOcdvgta5+2SXlMcJh5F0jsI72bEE4kdhOzx9WTmaHOzGEUrIGhaZZzXKaf+G8StNC48aQWS2LRO1MCGRQwGKXC6lttIz3864RDZWuUXnQfqWqOJrwxwSy/cZ5De4TjXxxoyOH/h1jI5cYc2YsSvOsI9YJRNjX6FAkrViQ19tgvm/t9LhhHpDc3+nGP0UEMdEdSTuxPsjeZcUQ0c1VHAs74GGPwuCWTOTMlPnvaLQnWm5DCYI3FbSNzFRKDpIO59YgTVmu8LxTEPxM9Z12bqi4CWZxOtJ4YKT+tFkfh6E7jZXXt67tY9AH2yK8iC/YZn1SlVbGNjsoPhAyg4aLizxSEtArBuFTDKsjTdgn264y62MPQej3LIR1S9X01jb0PiCTm75fPBVqybz3Tot20tMG16nBZDg36vHC4aozGvFLU9Q9xrOoq1qkpB9RzWSF9YiAX3K27vogNzj2W9ezPtYbqXOZ/qmBH2DD2t2tC+uX8wtd0WXMkYOK3NUWOmvgB6rk7MSVqF4qbeT7fD20C7nO063kGEVtOvuYSi24bk1VcLnlioK/Ywa7IK05W74MpD2fuAvXaSVl1SeldRyutpJnmowumPLMvWHtBTyhecC+RFtRETJhcURecHHaCYDZAg+sjuW86hGtDb1rqsRW+ufCqCyzb5jMwp3U9PHWjBPTeCUXwNDkD9SHSQ+lWwYIP5r0dOhhDVbc/5h+UOnGmbNTYeOpX9H5tlIqwJm75LabVenYLSmEZf8y5M2TXNZ269hXZSbg6Jz9zpF4HtSB5fPKsg0o3JuF59C8PTDCTHcsuqFfwvFhg9tcxGovtVNnk3Au2VrsltyU2BHSil2X3UyX/Y36NGi6B49e1NpvR0hNH06yGa69l0xfnpe/2ZmasR0nLx8QKrP1Uyx3kVGPX9TtapNdB5SeCx12IHkpDjWZb97OFoTWm2Rzau7cow6yV+6w9gunVcgbcV147mvNdAbdomA2x3awasYSD05A90gd+RpjhVMscNGdDlTbHFlBGwGe475D6j6M3jXmNnw5tfP2S/7eZJ5CnVvRhgpP+nEeETH9Jn7HSoGfym0rBbeYNlkGVhdNStoHA3/pF0KsWs2ZK7XMumrm3bAZxOirkW2JBxAJfIxurBHcEsKyB7XzQr2qpvTrGbJ5s866UrPdB5iW4wAeGoV8eIR7aUuVHKbM2kop9+6RQms9HDMns93T3HWfizwVOPR03jQZjq1K/7qTiJbaYO7fUWWo3RAnag0D6RB91DPIlWA9wMrq7ydT/Dlmo5iekxUPwUlDw9YoGCbjevw0ovgfygxftgjetwQqVmUjoo0DkyxdJCeBi2gV3fLWr60FWRqyGm0mLGaDvQvNWkk8xj2hWUrWlFWvrvJggMyW8GleRWAoXVbbH3PtrcaK92tVpXWk2b+ntSN5pUK7clWfdSruWJR08E6QJy5ymnMK52USdYIDrqCFjpUNJn8qrAXZSQRMGvOTkYNvAhjxXX83yoylPcL6BRgmkmvpe0Rq5TbO2C3EDUv0qt0co2wK2bs1awCGj/7FIBlGK0ynq9J1ywhx4uyFab4VLUeUrIrnJ6u2LdWblqcwxeU/RKSudfx9FIVqh61kVKpYa7GeQJ3X83XrWItAFWYCSm1B2Sn+Oecp3IkNLSTVW64fYoQoWcjKkX6SYaSolqX+1lpgzjLd421k8DmFz94s2Wuu1yooGgVt3GV85mi7XSLPUibJxybnBunpupKAdIcuRKk1RHGAmM5eq37v/8KvtlH2bdRxN2tb3Gfkt0duZfStaxWvI3TP5nCapogYfkt+rd1ntbmWjbvzY0z7HLhL13EM2IlsfwNnr5GgNmPtvZbVCvtqZzovbvkcWpGiQbFBLsieILYFitq6Mu605TwHupgPUeo+WSHiVJ7zFEPWzG1T7YJt03P24hvJpufJe1Vm0iEMK/abW7UF1TYPqBgN9ibqx2y79dODi4U1uQ4JHSqemS4UyJARsgyiyZLvcl2R2RTOPrVkdz3/HJ/9uCV3WzbiDb1Kxxm3F/tJnBSYTKpPUSQetjoOQSzmtBg2zecchln3Q0Aiqa+adFjKRTUFUwTu5gN8mJ6hV7C1yUrkPYM7Xic7o2QSpPAwcZrzhebmm90RGoXbak7VeMNrEbpR11KWMEwjTds0pJ0uUQZiAx2dF49+tu5HTaHGpuyLI+B7HfIKeNLSZ4FoyCRo6FkY5LJow4ITzL3bdEVDaYB1cBYQLQ087xpNkZJlR4tXbgBbU1iNV97O5hQpXG92fS7z3r60bz6kezFzRxUZ3BSsrYm378NdpTUvpERm7zmK7k4Lx7BW7VSewXYaycE4mxHVJtkSot/oR4Lw/LmySzFR9xGtPsLlLBMdiNRF1zsKQ7hkAFvaMpI82am7rABcFTAKqRM3TQNbT2D6mSfdAuewedywnnqzz9l7Bv0hr9+pzg09oG0yac99KJKlg4dZ9yq5W6qHUDOqcRmF2qvEJxXFEU7xRWy/dRNup7EbEzFLP8x2WQ2+5PCUooyiFGczD2HBs8DEoQKqdNprEDGzNdlOMfPqfPHGz0Do2xshQ5ZIC6KQeZBgQFGlkKuoxo1Ipa8T2zRHcXSKiheRonTKOI9OCKTaEfNC+/ONtSyAVkQUzRFVnaCePVN0DOAZjE11svF/C1MCGN+Swd1jDnzip18SLB6xJIbd+I68Co7KaYdTGjDNobLVVigVo3c4keqYr6FbnSxrahJtW3Zc8CbblbUtEt2hR4Z5AFXpCTQDa1hn3MVGEOjTEqTd9GJAog+cbluf0UNp5dCHCJ1SQ2CVpd1Myg5zoKrG9lfAjonncotmaZ9wspWJvGzMnkemW2ot2o0NcRRnBkrfjkCg1XA5CB1DEF9jozU7QBcJKCFmqKB8WQeo7NKbie25EakRH/fm40gp6Xq34ZAH6u/9hJOnG/WcfoZE2spl/yC3TZG6ouwZkI6x3iFkpr1TDHH3P1po9AsoYnJmdGX2Mh7I7ZXyVz9JkzDjgstDNAufwdwNxOjUUBtaiZos+3aETKq0fIE3R6e6G/TovqtrxvJtp1EQzfcOI1bHMOcwIeWsP7osbDR5DcnCtVT0JQEY9pKH4hhnXRY+sL9xmEXsHNVE6myLDjZnnxoY3EPtNa72nVDZavmYA3QoblVi0bu41SgS9icwMxBYJ7NktGQgRxGTpGzsVmYZPtDym1iRkoOSZGzWS3K57imJgWvYgNZNnTHIauJGiLG7iRhfgZ4kYyaUorqB8+ZW+vxI+zKNgeVQIigkj1sMsrfXh1tzgXhJHBMOsHe/awYXFxBrHtWdX+x8SRsKhokkdmRbaudrzdtgGxqdn8ywEzZ4VKBm5UPi9rRWGWxlcE5GCD06PTe3F7sy3WRm1CqLCCWTZTWqHmhmp79a1JHnH6VhS7iLkbAb0wVrYdN+hkkA7VEdtZNuBkRbsZ0Z/5gyXdQw3qlo5i1y/yNjJbateX1UzSd3pJHaOM+3tL+IUzir3SHFIKziGT8QnpjsxYI5wYCgi4WOrLXJzjo66r5SHNO0Gamu/jbP8YE/3OF06ztkAx8fS7uuaiR03M6/pCozer5GwvRr/LxAyHc/6XHW7vLdLVtKE2lE4XKNeY6leHW+KWAQKDdrAMGOfBjBs9qOvprLnX4mEDUo2q/zfSbu7/LYQZhX7NN11yWt3XadIO0nXTh8mtZVwk7JWv6nURC4x6s6yGGkbJBQ4nSxTzpgkMGA1zU4m1w0PxJso7t45gAuBiQhbmUJkOsEEFpCkxa2MQkyhR/gskQXvh0fMp9e7Js9vTvXC3aZqrqUGILPJ7KD0Rsr30e9qNn2VKUg2Mnj90oOHx6LUS6+ngvnejdOJ5d4+97j45DRdOR7vXCouqZKF0XhG7GbMWec0pNvLq51sPV1ERdZrugZExaPYz6NF59HOY5w3Z46QTuG85DgdMdLDIg3t6L1KUl9SK54FouQmMbT18uz2kWoMgDxhIdClpWgYsAQZBIt/tN9vdMSzutW2qMbSwNTPZXf43/DRip2FfEF4KIcdwKEyD9j4FyQVYyDaTdhtBLGOIdVkMrNU6CSJXWhiQwKranEOn12wHayIx0lJJHVj2ms0m64gNushBcQ2JjjrDLDv090iN3eMYu0bIfJW2riEoX0C9xaio1D+bNkNtxZoUQFshwLvYMaR3EIXro3GNmy5UVOzbIeTsxRxYdMd2XxIjjUeIUr1LJWY038aUhPWo93VsRCqIP0Bt9I2lohB8WBpMfUOA4o80YBG3ro4tLlvELPF2RC8MwBrnHGckercxUDFAN1ij9zD3L+4QQb2iSGC5ddq6egyuSiZZJPviG7YHeK2YlbIWNjUqsySH/r6bmGDOKktwY5KP59p/xCMraACQ44hkAkKgSEgsCdo2Wjcom+uJIwVkOjdSMraBi9KxBW1sNaSHznjW4+Zto+yBegkOoF2trrVOVOCQsPtelcufgmmm0Z7Jhah73kVC5x8XoTzjKEhXidUm8Tw2N8sa6Sza2SJBy/rPs2vsOBEP5MqMOVxUnhkdpF24SHin1eEhlEcnsFkGSKESGtCClV6L0dIgNeAgJm+FXmybkhOesoQWhGO3te0zgdtkGfmQlRIVeWKLTGRsqXghWiQ9OifKl1XSPEqsJpGhiQzGpmUYxMSFcW14o2Im8klTlYkMYiE2JDDyGdiQ0b0e+M0RSHQcjkTar3MzHIRZw18SGOT10UhUjs9zIxF3wfSMby1vxWxyEkJIfE/Mbzqib80OBtTmlpRj+k1iSEzic/K+0s3MlHskkObn1MpMMR6R7q/mNlkkMJHrM+S+Uh5kQvIln6kaKSGwZGznOgCQ91Ix41MqSFV96qflUXm8pIfUkP59oW974EhNhtXDIzDczcvm78NvCWF5GnpIZ+rzzI6EV7/0hS5unXHvYtIhKFgZDJkhXcQ56aSM2I9yHzJDIqZdCQzKeexkdBxUoZC3khOHfCkSW1IyMbEuZ1TvdRZPAz3Qq0rXlp0XCJHxlnkmkpmqxsl1bzYirkh7d7CAgRurx8PYPJC5kxuvEq3SctkP3/7vJCrq9PStV1pVY+PJQPSUlaXuO+y5qDuVkOx0nVmCWzxXGS+WvSbHWLU4nt174+LuM4gyQikIKXxjBjnMjKKQl4OmikKmOEDKTfEhVco7zI4TkPxSHKNbkD2jJyklITgeLkkn6gi5wj61G2nNn1nTpSEHHsrYjrI86RsVMSxZSF5JzvMh+Twqa/TzkPSPrvkbckheGffmps14rMtbkqdvhmw5KvFbvofWoaa/JHi9akqQiI+poxL4F2HGL5UhT6Q1eoRifNs+WFQGK1NeYI8GzsqbVJz50cdg2p3qbL7BnJvsjN6a11x2+S24s1IfzC0tcYnOTn+uug3EF2nakOYIEmMCiTgTqQntJrSeyWXlJDi+LGnqQ0C0eDMh9SGC+M/Uh5E0nUfapAKDSH7H86i9Vyy9xzbpkJoyHveM+EJE080gwV5AM4FEyxtNMjQj+lNIf4ew0v5cP9CBWuT3PGnqZ6PTok67NzKJhaQxlwWv4IVSOqgjGOaQXbbLCQjdI2nkDyNXyJdaQwM2T1fQB1bNpDuudxqRuB0cakf6rZx5HvIWxmQkEKU+kcmY5LzCh0hq1faWEROrRMIPw5H+rmiORuVsU5kLkLWWCb0uJTdGnUiS/h1dTEvuas994ZrTdIb1MKyKbNK1t0hOVyoM2Z8kaylERiST0hoqQ/1IS4YdtHZesc/hWeK3DLfRix2FWYepNdp+vJSl9IYORSFnrfP09iNn6Q0DLa52wpNZLcShq6AGQmUJVdezFwaYfsusjQJ9CPfSDOUQnEH4tLDpVNza0nje0wCdH2pCmY+FojVDIaTeM0WaYZCH762GQ8udh2keoanJhdbhWjyjZmxnUlzgiZ0xDxHdDBulj1ne8OygZt1taMh63bT5dsOOK7fUc3jZcWrGQwE+k3kY7VpWF918jZ0c3jIbo3X4yEGitx7plSPUD7eJkL0z7ugcJMhH+CqTIYsbvXrKyZDsI+zHcvM+kfvR9PrsU84cZ4XYjdZrDMJHwaBQMk8jZuRhPI/EaT0yH5miwkJpNjOvfcC+Lr30WKiUd98kXCw8ZTkOOYPw5HT2x/5tBzIS6qxuk5j/8JpJbmQnKUUmEMRy2reifMhPddDsloKQd8QZFK1t/9orWlMlmFkNmtou6H5350WQwMPrLDMhsb1biR2JeVw5LIe96NSyFdpDTgxTkLEQ6WEftBnVKDzJOa+WQ84bnVsyKyFsVMLQ2kXe4zI/DpoonJjCdlkhIIaurIZelyJOD1pGg5tAWfGjze97yziGNrrOshV+RkgaTdg3i759ZD02ZsPKw3NsNkMnbFZwtxshWETXK3uMeIjSYNxCptBTcQhTSUcfTbiHafdobR9LglVrj3ELmC0Fz5ydmW7BvnwUpFn2yEBU7J2mG2sqxuZPGqNIOJajTvmi8rK7ISJmP56m7ZLhPmxxrR7IQX2Ox/m0I83shWuGj7IckawwJ3DhCVG6W9YibDtYIPjsUNcMQchKvy7jsccrMhyF/Tjtihd8HGL3mRfxDiEzui2iZLt+24pqf9wxU4BbCMch/2RrHIYDkZxyGA5GQcj+tMsHI7v/wcQWQ5H4uG0ORrDYdh3qcNUQ3NqUhvSnenIfSkM3BVo5HXUy4aR7+GVi7ygO7c5DQa+SgW4NI2umIvF1hpHilVo/gyNI+9cK8j4xpGFd9UuQ3zIUqmtgtrRXKzDh5j41v7qJGosA5/GN6NBqJHLXIWJ3rySU4k6/WZG+UqFevtCoSf5wv07qe5/0n91sE/2WO78Eq/k90uqzVUg7kMDa0JMqs0ZxmHakenUwutbrjVamE6SQWscBptuMEz7OIzA8hBrQ9SVZBys0TqRIsvS2W4u2vhqsuvXtoExHBXJJRHKLRgRHquzG+074Uh27tPfAU61y7WFyBlZtdbAdSQFW5XTDoaakSeIjbiQgA8VBMvfx2j8izTG0m6zMJTG6Pe4UYxD4iFJAo+2lQsQzZoY5i02xdAG3E8nocMxU8Yx0zmba0Mhw0iehIwKwaQqsUNhhArLF3uS/wDgZ2XNnpmbldICdcUH2lGESwtWlB/o/KnntG9ib5YBqTiwmygo8ACVaUbCnFXt1VUJWlKlhAnA7zB2GWMNOotANLM9uliKPJbaUxt1A50jid2vmxNJfG1D+ScOBhYi9oGZx7q32Z0h88WGc5QvqJhrvxfH2mSy5DWBZ2gz5hvsvQ6Fb7K6MtM+q6MtoX/QAQ6qMSprNhpetc7XyUYCyMllGMPRchTMzFvm4IrKbLQj9A2Pk9VQvbfYdMTFN07TTSwwohfXnxj1viU6hdw99/OQt8LhaUcW5om1Nb8GhlI0mcWKfMCqanEiBJd5LI1b7Zq/SLEbGZjwqdOe3aXvvy+sV0YtwqW+1p6owcA4V2KuOYT+04zWAvnTXWThIbSx3C7cxzllUjVA8VeHOR+3rc9neJkDo26rS6eNqFm311RSe3s7YplYouyov0mmMzmG4XLR8owEM3KnFTFceY2Wf424hoGsLO0kFQKOkJt+DLs9bUGtyG6w19NvW4BsrsLiU4atrqgYipGF3Gy3UgbYjODwnVpzbjxxxjVB2eA3p8ia4C1uSjia2gBfeKeLopGjXtpTxUTE1c5pJoMXj28ALKLt/17ZU8T+eu8NW9CjekWEFB54IdaiPzaYyvNu+Vobyz7aZ1fvihZ3r69u1LLbZ1WZaeM/R5Y9ddeJtp4jCJvaePJNZBCM35ROpRvfHsTD3J92eni8Hts/NH08fUfQPi2JWM6dR9Rhuzsb0wwaAasejQpxEZ42hMQSlKMHoxnitXmDwfExMdIkOjl4qH9O266xSh01pwNPai4AL71RRBXjNg4SYCpyFJCsH4varidOH6SKO33/YjDkPUxqZfVehgWl2L8OmEkdcpeTC38GcOO3pf1n6jUI2MOdSy0btnVHvY+OjoAj6Zq9RrkmXRdPZoc1wz2dTbTFIX5Uf9PYFm0QqjoZ7d4Dg2zNyIgyEcvVS3QfNsRXsjJxPoypyuJheo/FUBhBs1IX2K+Uz3Bj7C9ius382aTbLIztCJeI6zMuti4xWUZbITBUlyNdduWZoRM3YbaESrwtCXWgHbZEX2yb0tCcSo5FXtSM2cUF0MyjBed0qjJcTRvw6mezPLKRN0pF2l4OuArpcpNjVhp07m/DRWTBTvPnh3n8MkytkpBTDLBrFj7TxLjFBPqRq9ElPY7pirIYiI39Biobail9dwcUhO1r7aqJGxeWdiaoD3fhUqH3oGV1zQVKl4lAwVZZtJVYdMjrUyYcTS50huptcnU4RGgB2RkqqtKSC4nUnUMxLNJ1h8YhlUTa1I5d75JHtiucUPDWLcP4y2BYpVrOhdT0HXVPqZbz2b6EINakjVMgjUvmR7UaSMgWqqZBoSRvIZiDO0lI4dJGIt2pUPJnkUUa1g73iu8v2NSSR/xUWDO1SSOPJGvzxdGpHXejCrVMs61YjP/DUaDQzKEVQd/wUkMjWT9Voo+UUbpEw/zqXxsx2O5TzaMiQvlJfAYetscU6FiM7DdjiexwENbVGkJDBxhn1UbluxUlbmFcmUBHHLEuMUo8PATUkU8c59+QW3PAXMezAfH4wVvY6w1Ry9A8lPvnQnjVG+kO7/hu89qmyRmqOnjs5qjaArEgNdcRwyYGVAHql5pSip6vre50iTbg3sUrmUWzcf1uhO3zboHVHcttR1RwWxvgpNOqOfcMxRDF1RxouldUdpqPkPi5R+NNZQI1sU+NnHrE5H77WxB4yNcWCOKIQEZNb3CDwEI0opWvXRdsm0EtBFOz1TSDrVMeIgPkF29OKj/Vc+/SS0h09nlofsluR2cOxI/mfo0RaUi7Ddle24Q+JxSDi1hU23WiJYGMrzJrDks0JSwbtILOf++1e2iOqV4ZxDFU4UjjxAGCgvSfURBMNV2BKYt9DaPdu/vbi1qnFUQ8ndmlPatRdbpI2DDqBtNS85m/QlsHpRopkB6yDsHTh3vQisEdmKoGXGqNScO2iGrQ/w6sCotybnWG7KDqfwuSnsqsx/D0v2Kj8WG7k3ooXbxJNUOq3sDtDqe4kSRunuLlZ0DHiiZ4Qx4n1ESMeOgkOjpGXj2rqQlrJfYxNmPE7XtWpxk9wuIUSFn3fnFAzyude2Z9VNVhzfVk8GEMNHuNOx49gGS/YtZjZUWGklZDgE/FaTEk3hX6SWy5y2M3AwE4XiY1cXzEr97juNeIwpUaeRqvOavfNSiea/rMeuRGntO9Hs4Kd8VOAyorli5/ShUmiSdmDZQMlUMyfGzJy4GkG8/jW8kXFT2TH2MBgO2IMnleF77UvOjaSR5Po8gTEqJU8ZbkoeZBTdFFPv0jkesBYWNup6/oqlrhrdFGZcTQwF1oYhyt0HnzsFg5K7U05rV9HqcXGLLC97RFErcuhjAPRl7ZMYiZpBVxDdrrWanT/z55+9peJC1fUt7nJFwryPk5Db+pLVjQDxRi8JmtqZXNU96ZyA9I/c2kqdroPlj2UOUqK5XmqU2w2EbdcC6VhriTHF+v0X0Zy5RbymoBDxC1tnrXCJmybNRCz329fUj0OkXzzjqWPOshzVFNQyL8X+MOhLm1F0xsm4sg19ps5LMRfakHjSJVmWPCISchqVDqOZBzw6jRjLSOo40DLM5nRqa46jv5dBOo1svKTqNblHhz+qdR0ufunUdP5CZ1GoP22dRsjdoTuzzqNqvL98W8YuouozugxPGlRJKHvmxetHRfqEVJbqMRb7p6pjBdXpFnDioovnDCGNGGjlU4YhrJPwpPHS4ddehBgzLhllCl3pRHQENJ6eRmjN3ES2LVoW7lsdwamDjdVuVZBGO7xFr7iVIeolHKwJg4S3bFYzNHGi+6zR2S+hwt3MLK/bM4YG8+R17ZS1lwUgHj9NPIGLk43FpexLWHqWDPtNilrBjQOfSS/Tjn4f20WsGDli1rfhY4zCxGJAMajp/XvSSQdWYy5U4qbsyWFAzg6fRhC4L7U7ODMVq5oiLMqZcDP33y1GO04AJlAEUYUUsQ2cP0BPNb0eJRi7tWsyfJi5Za68ulamwSwrbiAiPnjqrCjDQlm6Evd5kfHU8/3eczdhR5l0tCBrf6uaLrbhzeoRzuk3w2IVOsFPG6bbInV6B4/nZfcKMQVbgxtmz+83k5YvuCYJfFoGlGvhRkDorEBv+eIMN5RKT2lGgIo1KccCKPSnGiYrnvhGAo/UIUJ7MSCGS8MxKjbJ/eEUZygpjzF6VDbImRJB0nMcSkMyD4lQM7PB5ABvbzm6ULrnxPZyxE10O/YImQEgK/nppBt04OljvInXcdqKJBVUHdgY+VzoUOEevCOBbVxd6DHpep4igSckHyC5kinMvEWSBTAKXpl4znxy7rjPPuf880M7lFrsXIWYbiSy2w6AwbJqJzUbSH8xqSgBYzdYBEZ8/NRSR9vi4Pl4Cuh8/g912TvYaNDxuOu4iwDyV9ptSIFgt1fsNqfGkTToktN40E0Mr2r1pwA2bLlNCt9XZh4GYF+ef7ajVrpU2RWVwqcNGhVdW0WsaJRzmk4J6GQVpsiFN/ZjeUcQTpm7th62nO4k7benXTtlLbDbKgh1goyHI5KYvK5H5ozhZmGrRgGNuiKJ19X6e0gyj2InJUAZZ10Zj7THjHoOQZfW+RcBUdHtG8kxNb2n9dayOg7aOSqa8VHZBakUTcSo8eUZr0ZFYsNzZqRjF08WpD08v0LTMmXSa7GfR/mlUdDGa3EK+uRloM7c6ZXgMH3L9CjSXGbes5hDiM91/CkVq1XC6ZVR4XnjG2tALoXo9yqjtVR1wuvVUc0ImNVGxsWzVRsL5q1UeJB6kKiOqjb7dTURk6Ht6qMXwdC/DYM+aL9vdbRpE7pCiOX+mUfLdVrGTxifav5dmF2Dp/b/w2TKxGH0g/9U7GHxKoGjcJQMvQkrgiAe25zo6Pw63kNA6MSGN4H25SXW6/Tnx3/aOXoH6RecLG6lBu8EcZqOiXd7v15D4vvWth0dc7Cjftg60R2SSb9qxgGm/YPWE1CSEhMGyQxesnnOq/eG9W4ejNY/Ek2mnOQCJj4yDkICzVPveAs2J9oZ96rGabiFWxmp4hTUYSC+H8+9y7+pnwKu/odQpCxgHEKE6QMvvVL4dy7FN+Dy5J0SjBtxjKjpmcEz2DGeZyig7cSchvy2oaCm7TZ+JdrKVubxdP3NnWqDsL5sZPAGtkZatLeDAg9WNpoDDGjRudQ0oPYlT1GYWRJ7Q+ei4EbnZUl31+42Res6YBW3+OILp7nCU6jO8PO2IRDUt8RbNJcyx6uyrUgNgizq6lGX/SKnmKwvKtltwbX5454siA7ZkkrKNdvyyw1EE+KTwpRMujQh6ZWMoueVdOHbV21KLX45mhKsS2l1uCfAm0TLWIBWPtwpoa6j0tZ5F6rDn0Vrm0giHcVlU4J/Fq47XRggrDMY6rdCADNJreZnXyF3inEYhtXIm6MvRMBhhJJYEGxR1gLBwHMs8pfAcquK4w6kYB2TkUmLI/YoonzXl7M3rFsPHSkoRcupX85G1T3m2Lyg/dlkbnWeiGZQKn7Ge4ey2WXpm1YQHNYiLwB6p2+FIcayzgeZJr1gUDesdenVX1Qw7AFpObmclieUrxpgYEdK1H6U9Sm98gWxs/Z1n27y2y48SBppG9Vjg3KoZQQO+uze1+EDkiprdIfITANvRKOjWufvUretri1YIXqyHsIZItagppYmTLuMaKdzU16eF28gwyyXPeoamM9gw9iykyzdrPJOJlEm7qjQtUpg0xJTDKVydoiN1oE934I/HFlG/IYjFDu1XPO/qClI0XOn3AOaY2iTKGXObEA+hN8MbfFXaGuXBeRA+w6QuxNY2HwKd2o6lvHJBo5MYePy0h5q4u2Z2Db1+RIwsF240usuV6Z3PDeASafVr/HYhif0pbnveQMZGlv3jWWbTca6aYQv5EVIpLmuUMWqoD13DXXpqXo9LowMu5NpsjqPI9drtOzpQ4b9bqvylHY0y3nW32Lb+ai0zMw6UyTWSjvmixEVEDPjO+Wz/raWQ7UaKkRXMz0R/u7G4rWjopet9dr3QqVtBoYbMKfrymL/jadYtYp61xHRPbhRwYPRWejDv222nNSN5s24LOUMwhsrU2KQdFd5k4h10B2HpyQWdcashr1luXSZI7RBrUTGxqQw/3cpIxE5m5lskI6yRR4rYbe+2nJ2H7N/Dezx/diXl2w2YvkJuDQOGRIvFQ+nYmPAW7e7rxZuFeolVMWCxN0no5FjeR5DJy3+9QVEx8kYEriXllhDkp6XXJArvQmwzy7Upo9ArFfjACK1/Xw/iKpaa9HOyDt1g0AlkvrrvoJP9zeZpuAcNPFWGpLwcFhma6Legpi3sQ7xXCAy2hcUg35uuIIgZWX0C/LmNiq1K+aQqr/nkuJcr21GuLUmrhcka4s2e/MdlWutXUHlgggN1zpzwTArasWvWIDmK92JB6E6MeuaPFXTWFS9HtyimTdNYTdXO61lfo+st4Q04e1TGhIk/fvyUVUvIZa2MHGDlkGHC1Ls+nvbbr3ed+5APBzJKDsYezGR3hnqJAGgpMh4aWcm1qU6O8cBnG49HCkxp5RywwkheK54tzRB6VXjH0wqa53GafnVpd7EcAzy305Y50hzjX1JVoySWj2kzRfmfa7hOlX7auOZeOY0ozXeEkZraLH3bJmSIBrVR0Nuywmxz28o+jmd4aIMZMfjJnFED9G05kniwSEFgMdpo6bxwiAwZofq6CHFkN3yen7iijbhhOI+8G5RTJcte7kgLbcYZLNsaNqNlkGy2LQini3YJLZ5Kssy46SFh/65tMb3JNr5qcfdulDPFwORTb2+0GZ58fZ63ySnLuYoSrSNowAjQa6w93PdNlR+smM7lico2dIEB/yVdmoLveUhWjwUhNdfEmVZ3awQjmAfd6w2rC6xEATcip3YVqUqz/BlIB/5Qx542AL34Eix6hADzAHRuK00TVaCtb+xtWqLZ+EfmNwAx4qPjTcVmenWbkbNnqaaVakL7R62EizPRv/CJlZX9u0MrJP0gsshoCq1fnWfZ0XbmqDCz06YTXV0QbumL6yx/nymLtqrgz290ndKc7migbXAJvMGpkKZq4713WHjUu1vsEO3kkaXSsH26HPvIIHuwxrt9kk6KGkesqAyGdWMNyIYFTvrbyOOBHb9hqmk2bP4DZ8SOZ7juM94dittHCbhsy4XuuPosOpVyJysbaZwsBuWtqbHX6b7rRtNpcm6PIlrhDeRYa4h0irGyxH7eJia817Bkjr2aslx8YYp57UdPwJpz0bFoOYr9jkmxMteTWkn2IprHBb0djaOREhzFqjQMx/0kTlHJuLWtIres/Ezrwbxa7o3ayogtgljgpygtVXZaoC+5Xsn+Rruw0PNrnfSpjhcORg45VVIIS7mtk7WT2u7tSzPnAJu1tpwtGjB6pVDXttvZPM5FEYgsft26d/C5eozgMhFYbR1ykZ664kk1g+AN22Wzo7b+aLfK6VupJiPzhaWqdmrJeT+6zZU/mOS65Rg9lARfZrRDVoivO97VKmzqzW//R6cFfX3xruVflz986gC6na/uyd2W127TTyRZjJSxgtix5ucQkMLC/8tOhUJ0+cv3ndfKaY7vXx5XHIjQwRXpDL3HxaYGx9GdC/Pm4nUSXr+otBzmtiWgu2jp73GnmXi0KOGqni2aaasUu8sHdQ79pBTqsvMrmNmITfVW4HGMG/h9TH3nKxtyXklCrhI1u0dTX3gVWOkWHmzL9qOzYnYqZZuBuu34e+Kia+eC+qdrQTJ3NVXETNI0WzxzN3fmxF18zUs5NVfRNqPB5ib1KwA3qAvzr2GGtUxcnRF6OZglWMtxGuI74gdgWKJMUEXRYjqRpzrfRW8Q6UK+o3/78Wn5HYDW/doOJMxnH4H7PwxE9vWQgwNwu7bZ2iGiXhuCc6ztjL/xw7aQcjayeCt3Y+IbHeM2jn7biHuG7OQgxOmBO3EN795S2Ju23Da7+jVmODEFVl7MsJO1QrG1icFPQ8GEAawi2OVWnBbufeLHLWi71a2O1C+LBGZ+Hp3q4YBzMzdCg82cOogM0AyG/UivCjenKyLBiYtMkmEGuyAzl20MjnQ9rn0p67XJ1jXRoT65IPln5vajnYWQdehSk88Cra2LquklJZMjBBXx21TJrhPVegGyls1eyHaali5ctrtf5rIdKaQFL5YoVFXqN2MQHiAL/dJ7MzayWbP81rIFLJ1rJZ0ahsphmKbWGSYgHbIqNOmejrNarn3RWY0Gyv2mhWDAkeZIIwNWlmLCEwmUrY0JzkYs1/TrJH9636re4txAWmBNEvrxzCLwmdUDd8da02uDK5y8ceVaQE80CuWJ4qD2a/PakxWxeSv01g4CraFn1gDMDRmgIjivUneJWs7K8Hk2xr9Tcfpeb9ruA1AsTii500Qum3vc3uITbCAHcla3mbW5HiiQqUr0HZ8Su63iq7KumGQNeMWNkzSD9YoolgrUXgxFqYLUcjOJpUrHZ2mwszhK6Kuqep6mO8k0dtDbS7tFTyysr5YHh46RqxXsgJnfEcBFFL0zU0uZPJI5DWknbAyWyFjd2lY0zMjWnQhcMQmh3si0dVy4NI3qMG0bbJ9wBvfxe+zKDJK0896sZez6inJvpnX1w1vFSfpe4lrbRFTIaLKeFCX9YyGdnbLiTQRx15yUOXaVq22M0jrWZ2m21P7jNs+3BNZA1lTTH61/PnMur5rV1fc1p/dCm3kT5J3dNXD4+m5itdOYMcsZHWsHBGTMS6C7XEaxk9kLYD5s5IBgiALvP+tpyOjOb6ojhTrMP3rQazJa7O/i0bDute/wqWxTs9oZyYrNd1b13btjvo2KsWVbPDQ0F9R/edlqr/r2x3tP9LbJs8dOzeYSewe/WWLMClp6gtLnmRIuI8SN6mGtJpWwK8zmn/fKDnrlvbVqRA43FMhbpco4h6a1bzMJAGgqkPlanpFXEKFSj1ltqOobOrOoLlPULejAfmpyg+e5klRsgob4d7vlmz1Y/5hkMgxiwYbZdT8ZMdCgwJuxU2AFYeD9OXBINzM8OSftJ6GU8di4vJUWdQz2jGluK2WXN0KFGVRAp0PnqUryF7g8yCcGSj1ARPnxPOMqFNyMQx1N0dTaBfkIIHHWFpLdbxsKjDeiQ+G0SlbI8yt+2rjmrZ4V3C1rR03E6qpe/pM3jJoB6Mj/EJKt/WGtT47heobNu1laAn77J2JWrF0Rso3swoMKAdSC2tGvPOzWbaz7G31oLCQ6PsHUuru0vWn/oFns3zFZcHbg6VXPy5foEzjkCOc2OxunWHArjfGTPDfojKxe1gXfC6shyGanagTar96xj1Q0fw746o3NT46KKHITqSDism9r3CGpaR1iciFpVHW2YeWgtL7R65xmo9qc4fLPgWhKiwNtHH8hg6fWZqD35REd1f6xYx58sgOlre6H/5Nm4m32TPIuhyoZvIFXj9XlazDy+byZhQrY5bEwK57VdAktW0SLwdlDWm76Fej2yDfZUeBq0adEPvC4GtccHKMVhaZJfx2sCGhsmOnbZvNcIur5QYZKK4fhirHYg7nV5uy16gX0v963/NTCxYlLXFqkseCHhldTe8gNr0ePoGYr9qr9u/MrYCzdFAzN86JH8CT6LuDLs0r4PXWVETzLQim6cyxvEidL31dqLNdVplrvNLJ5VND2ML47uSObDlVa1ndqE8MEIVJwbJb9J7GoTXZ3l2WaVJA8P2Zpz9GIvh7PW9V5rZNg4jx0yscvudxKJ9G/TyUMp9RfZZ5nLY3OIYoebkHauE9L8ZiQJ1VXap11EAuQ9kmePfi5r4RHgZ79a2ToGtKbutGJPKNmUMuv1gvzHYQTVmuEKm4UtiiZjQHH9JlMRIEF1rnK0D6uhrOtmt6VrgPatuN7lZqRjPO2oF9MmtqHdbzjG1d7e2oyjIzpo4fWy1P6RHksDkpRPXOINGQsoiuNe+raDkgtNRB5LL0aYVa4G37Wq/GJ8qFd2ja46Nr3dL7mJgu/eGCLcx9G4iWjjpuqgz3bo+HSI8JJiTd0yWElojD7FZsqbGVSh9FsRbTsBdWsmN+SxJ5vKLqQw/vbukX9c4Xdbt2/s2aQZMt+ZFqcJ+mvAwvFEbtK11qGP7LIO6Tfw4jyW5AYN4b6vyxkumBDMyZtHoLPmUO7zr0VLAxjWNk0kwjIbfIdQmW4x9KV1sWa2yS0U5TUIO1Y3RWJquSsLZaKrMbz2COdPvARRqTLVaQdzGwxuoCoppQkuwrwH/cyPmNd0PH2sZwM19jkC/M+ChAG80Idn2lw3LGV0NDQlFHNQVMdEbKjLrbYt1BxGb++HTikAtc7ZXHs4y53J7c0MToAYNb1eaMkPum/jNBlrJZzlak/bqZLpoSig3BTbyoCNKZ0G0cmTJLRXg+8Er9wZZjH1e6KY3S9xexotouEu2T98G/TjRZ7YooJuRXOrSWulsNCrFBSyhL1Vn+ms/6DFxXABZSCUzun5GZL5522Dg1xo1C1yJdlQtdjx1RHMmeCRHr1eXZtMM5gWaKXeq8V+fTZXoc7s4du4jugPDrlvU/FZQUCZPyEQcwp4bpLX6u6W3cRblkzmw60nGoxzsGmTNfF55Hy7lTkFa0d+a1cMjFJDcLKU2kQbTL304rHzr1wjbPfWlVpO/NU5SbDNGiiMhiRi4DyQtrchcOk6YIfLm+rWvRbzVDYN57lv1nVbzh56zd6a7wc+t+hLqguiVg7XP0l6AHhbJbEMp/bvghMtrFQb9VGdGkbJBfvf/NDMWicC1kJSh86jmjceNVE3yU9mdDgpja6Ve+e2L/b/9DiBj4P9Y+PkAzqATq8GrhIDNSPUK9psyuY25lKqlmOABrJPuZ8JI4XaJmKlJxiW07jvf+awlyXQIsDip93SoHtrIioJPEYFr2L9zc+JjXpZeMwzqZtLtnDxo/Nl1lMVwjlVaXzlllrH3Z9LhbLwLKaRCMSQOQkosFuq49LA0WC9iqc6TtnJ59klZ1rJ51ocJvBsrXcgEVUl0qQFCBi0Flbwo2OejIcwH70LHtY1YiJ9Y/2Tfwyl1kjijyEEFWzbNIQdLSe9pBIsnL6A0mpC2kdMZC+06ALTWysdS83QSF/yTk0mSyxlZ/5jNWox2LszT2ztMDxVg5Xc0zlRcqwmZ1qCXyjsI1bXppwHV0AMXzDBcpHR/cROmpfskC61X1AJW4qutFeSZTxUMZlkd13Gk6mgxKZrTMG9nEY99Ot25TXVCR/ux4FE5TsO4mEl9Dk7RgnT8LqMFzKVxchjTgOqxR3bfrRALNk+ZezNZY/u9xed4OmNJuWKY3Ow7fkUrq6aMwTWzeZI0oRxvU60++7E/LJs6bXKnGPhPYbFFaiKsfTubRzW+0QQoxsRYyJttWlKAytS+kyS0TVZgv9my2+XvDchpM/XMv03DdL1jgd3IekezWKr1nOsqEV+PGIlGTiBMwVLbQ90qnFGJLBeHZ2F38Fb06qqaGERB3gDkrmNDxHlIa/5NE69dW8XbH2296PlbDNl0v+81TSj1LDrT4rzyJpxUnd9+lPLNvuXPodKzJ5UPBRFhIA1VOFydMYouCXc+6McRoOIMXYUrZXZz5nRV+YcH0Wd3tPM7We71vY9+paPN89nnGcQD27M7CPpj5lptTYl4ap1ZIUTAYuVsmxoUXVJdv4+IiwsbVs8kKHY4fkKeeOSXdejFljjybyX0odhyBRwo0iGSaazoGMKbaYR9OcIyvejG1pYGPYaK2BjcbMjgY6VrS4GOZmyhSu9VdOvHqK9vhkaVKaT+Vp14jHZclDped3xadBxpuc+WaLZVYBg+HT70q3Z3wo3SnsrFpB6nRv6fdamXw9rBZc0zwHH3FDT1NfDcx+QTVkesLoCgCx42RlbT+/TvewS+YwBcCu+vCDRr2nbrzty5oFsiDGBfq+tyeOA0Cs5/s6RM9InTLlhuWJLDBZQKMtkG2QWoN+V3MLtQNnh0J9u3PI/5LmYQcIDGr2bsim8gY1SbWl/zSx2xLSk5mb+tHS5QlX3g/p5WcOX+XeTfTZcjGxu0lPT6WAuaDqi6OvvquONnzpsnTmE0cz+rmAzqjKZuHtStl5YEuQ1mf/2fn6U/9MJx/sHPg2Yz2y8pnSt0yTxwsRumFj4E0xnoazHHJGnDbHG9v0w3WtX8DM6iZOU8+JpU733fSOs398djwjWlXbaxwPiwFseje+B8R9FJcbcBu0RW2jdb+mo+jOM1lT7sOab7FjdzRVtkigljOcq715IuayVBPYIrwLm9RNgoOwbtrV+hpAvRDuyy2bHWWXilqj9qYvEXd+B1wi0i/NjXuGHmxx3jH1POHXUirAeuCK8yfQU7JJraUolqBDu8hzQXgx4XwLGlWV8agu277TLGfF4fZwMnxdL3DKX/Ggvu5tvizrt4NDR+mTk0PcT+LQdVkFSc95REcHaF/m2HSOgGwNbE3tPSHcJuhQ7XmFq329g5aOogm/mpdPWTenybrYE+egW90vgb+2CeXEycfT1OCDKuESlHs7D04c00Ghm+oze0X2QfQf3RZsSOWvinRLY0M4wYGPgoMNfFKctCIZVVx2HcGYWCmC5mK/GuBdwMdx85T5i0kdJlu5og7053Wa6pAaakW95owCSRW7ynvr0SrPXJ0rg7RfPTS2n3ra1DXXJhiuyyBpo9u7aFfCbtF5iWmuh5ok13nobtsiBra7l/Ey3XTAIBQWtpd/sJTDGurhtxENK/6r2CY32XSm7qib0yU0AmDHsLehxTZbuniE2Rm9YEm0KI2e77aORWfbQVDlOZGAJGB4y1Rnc7WzkU0EkSTdhDAHN77cMYP36MEITm1Ne30t8jcbiq7amM1S+9eBTDG4/nBGPfk5LXq5Wh3krWdA7Ip3GxFY6z+kJgEjbp/ag0wnNEmKDWi+5UuoycculMxCO2nK+B+cRsxqLWLPVkToNkatMuicq0IyRL4p1kaSEqRDu2adJvVs7XslJVYjywN5q43JiAR+ay8uzXftAYVhvvIWkWhepzHqLRrcGBCeutUwTgcqS25A9M5kjpsbYWWq6eKMY7+q8xaRvVPWNcUcWNgXHT0Nr+pKc8/YQfoM3kqXq1iGxlm9IiKJbjy3SplpltmK+vJAkCIc6yszG6E1jHkFxsjFcrS2J2nTFkYjoBpmys851mWBr8SnA70aEJaNLA8mV+lMzcaNVLZiG1u7LCQX+LwsFG28MJfWJGY30llxM0e6UpJKYJWTQIg7mv/EweemvWiDrhjkqjcBqoJwUVmO97QOaafnettRxnNbZW/RqS79WHXOfFs2GK52F0EDnxuTh4hZFhDOzeIEp3tzzeORHQaYfQFOLgkv8sw8pjgIrjA7ooulPlMPzwBmvLh77HuYHN1L6JSsIjtifbCGaSCvM0oafV7U7Go8tCR5ndE0J1bKhi065wlTSo9R70ddqFKoaWLGwCgVNOvSgPUv522SL0Gv6x794QtBunakqEL5QR+NzVEacC0eWwZwy0kD6QtAmrYwPnTSgEAJM1J2O4B32urZIxaNn61s0oGsmjBgLlR3WrgaSebcURXmU6CwQfwf4AqD+KM9GP+ky8tihJWQyZbQ6uNB2PYqVBRxvNmG5UZHInlX2DC5jrPVyUPGTytRZNL9KyI5o0FwcC2H+NteGba3QGxfofMfMOXT6fgt2EHcgtVbUeZr5O115+2sTbPm6eRoycMEGIK6w1L3wtMbXiEZCYG3Hd2zGuzRxZTVQvtB6bmOC38GYGC4JXiPgxTQ0KU9XjWptmuVfp0gMgOb84c+p1nxdE4BWpQfpWW116y6S0bzOs9kmcLvbXI201qWm2dSjpmtXXa9qP38vq687HPn9oCwwjy2KHayc1smvexFsWC1XAVrg7UnF+i26vVmAcqoUHcetV8BxJ7CtpXLHtOH6APi1Vmn/3F1KW27x8K07x0nAWihMu19mexwSX4CsGqwOzpsjugUNq3brb4My5d5P97ZLBbvX1csUirMQV6mLA0Ennaw1hm5yGsNqF3dAGKHawL24mZ5lcZPmZ5veZQ+PqJjHptXihGd4Fm1/cf9fU2+awiNo5Ff0dJArkYzoCuHRAT2iO8cksbIXj/vo2P1IT8LxulQu4Rq4tOV82WCip0FfoguJRqBsely003CVUmCZUmDbv3KwzLHfbSFiVkz/eUPV3YxPaFRH0CFaJfPJGce6XQ05n00q+sxu0jFmlk+Y1Au70pdQidzhdZWxsmgvpQFZ5D+Xax/6hqxUxCxL/YbUKpG6w00nUHZVksFo7+bdyHmtXU6FIUvKtsH2BH9CQd5xY/Y1Ukvyj3rcFiTujABTEeWgXKIoElnp8ucFHamxtIStkbV9XhDG6+lZ5cw32eN2KpgXiJ0Gc+k5m8FrmaUc6DmxpC0QlqF9Ic0V1MxG+bzR03rmXdrXWWjdhpF/kN6yuv5Ce7MvOf4u2Lq6YgN20967Cja2n3nXyilbkyP3BGedfQ+rx0smvpU68bKOjBo2Q2QqaJy5psGbkfu7T/SMBjAXMt8kEFT07tmDQ4tI/C3UJcV2KyDcedSHWKaTCUeH81KyN1+RoyAhPnUpwekVnW71HpDMpPMupZKQ0uBHjBdwxOQTDHkOvAEx91kzeNOYj3ru9qzVhlPI0FcQi6tZUowjGfbNDoTAZVstI/2OCy8o1qlvVox4ieT78Jm59YH4WAQ2lxaZ/6tUWzDR7JvUUuztfo0+0vGG0pogteTi9N0XZ6EqI+OBvEwdprhHzzzqLAtr4VcYTeZQc3WVyW6RQNBBj4DTCq+alloM7Zuv7m1xE7AhznU2ayRnEnJ1iGGR1Aovev0KsVNpK313n2dAo4Zxj7m3QAawqNxDGpssvEGeYGvpVXgfktu+TVKhsGZm4rPbpqbbhVWVE6ytueToxx7EIPKOrOVjG3TY0Uap8V3TIGESmiFUuxQ1H3X0DEnWNamVQMCpl5gb3xok1zub+Epk0TasSfcyuzXVZ0HLKVNzLb/5XQh1kkXJT80DlPWG5C5auuJ2zbxrdioaAIO5+Ovq4fC5aWOHcJpzzXcxJqpfOEZ6iJCbrt+Wy8tsbGKtLsaAkL+2xuwO2qQTFPkMqXzukWYVybMnvjvJnNCEkoAtfXFn1QwQ7vgF0UcVPNSJVWFnbMZoRJTzI+HC4cb8+V6EmyBT/ViocaBIz/IdW+9E3ZU9iLC8XrL8jVmQzink6c2FvxVpa8rq6pPgml9PnYt3X7Wqt1OsmL7mnKzTYdoY6WSlc1TuTvrK/HVCxwiSM4hr+UBg0y+1eo2FxAaZHkKrA2WvTSsOtejJOWMXuMo5jcQixwVo5+v5/YTtsPfeKHE0dto2Mu8EXLTjL/lJtXUs2uABpcsWBv6YeaWfI6BIbI3NW2msajhqWWWUnkRtynQZlaAuGbbmpcarhhoMkJwlqlEMl6j2PbAVhgFKzOYX0zG4cB7tRnwyRSLMZWWhgcastj23JxLrCjsakERCDzZSIc9J5tdH0KfwVbmGYPeN2TApTf6gyLDV2QdcluzOu38/amPyE832/slsBjz8q+Pp36q4Al5nyR0lCUOwOFryPQ/dElsdXn2URY+z7lZHy8h2OD1PT2AlY8jDbEWNPqG8NT/ZO9BEu89qjcvsOm2KL6jZBGoqpViFWrxwEFoL/IDxRSngQcA2xCNGWBaE/OTgYuo5im5Jr4OjdLzxmnDh9SPmU+wFLbUp1x0G18dHClS/2OeP7nXDiR+DPU0TiR6/S7zaxedGXRMVHY6oQvQOv7n0WaipR/ps+BNscpq1h2jQDXRjDn8idlvCkrmw5fetyLxVKsy1fjooeO1qRfcJhJ+9KjF4UdP3bIMaWjC6OaXdKU9hydu4+5IpNFruv0Kh5BUBg2Ifbgm1F1erktQmRTcrQqG5wF0iRZRzHHQsamwtv4GJgswAOK6Aio9marKnLm4ssqfBfzo6quoNCrhDkUNsLbFVinQmydgCyW+aHMLtgGgfIqRQRLIzPmG06HMCtb/Y+0+kPbSYJHozt49j1IfdNNZbJJhhaSHSdbNWE/GxVjMyyBn50WHjb+VM3HHNRpnzWg6PdK6fVLBOmcTsbnyedXFr0HVul/jGNDrfP3R65oqsCpayUg1bmQi5Hy1l1D6MBZSJ2wKmZd3N25moTzVvVpM3FwBaKj201b5Xck7e/z9OUg0X82Ye2Gp8CxFfV0xJRmVt06wYVWixPVGmrNowQvoqD/XK0y4jJk7O0bMZoUpA1Yw4q+k15TrTj2n9Cqkm1ogb2TxHF68fpUuF3wzm+oLWHtHSdbGrrAuz1EXWIGjOJwdjHZ7lrVKsV18H7z5GzyzMSucDoI6kYrT7d96i3XC+UVY2yIeEVpa19mpFYvoDTV9u0c745qYqlW6E9ldY9WsxzphWiq4m17XLbIauduSMb85MgNa/qtP0HSdWInoUetiNOZ9i3PQsWGVJxoaNEjy3ZWbUzNpf+FIqW3/z7hGGsd6xI5cec2BQ3BaDoTetbQxpBtD8yR15gEtIGjEeakPHqAYb931rc07vZxB9cAJo97I7GlA0Los9/RtJr5imWsdIYu2spDWEPdWcXhcT2Hd2oi1piVgPszxpeNOOW4nc4L2JVmNndOA8G32tynAeM4fZE0+b91XRfy+p7I+ygBmPyvWQlhV9N3SMjbMPsBrezeroUXnJho5ubHgvOp+TMlWksu3pva0Wdd0NFPs3bdjYAbwTnFn1loJBbAj9wV6ktoNY2vcrlWG2BgjUdunLI5bWCS7EOnnNAAVZ4Kp9nZBj7YcZZ002BpjBnJFZZwZzdwuCGc4JTq83WQzlnk6NaOvxbC8ja+Cx8Tlvs0/ejEoe3puikHS7ol5P7KsFALDSrqefQt+b3oocL3WP5DZvaeTKzNEb6faYuVAvzDWwbUdyeTZkcjQjJjcq/g9kr3yUi49mc7WtXMM2Fxh1qPG5bm0cJOVfTC/zDlAnNLeFWt0O5dpay8ABZdFx0eGcP0GEmlwizD0arlIM/2m566A6aCIzrhRJaxPq2GbGLe2+0/I8urFOw4vrHFD1iOqiQoOFnDHwZYbyAr3P2LxcxC5hhCzop4947Lt61PjU1neWAen/24gzffx8MfFnmmY3o3qGdkz3k5maR3NPcmXRiRb3yshmycnR77w49+SU6O6M0PV05jNJtNKobAuuAuSHf5WrQ1FmhljDGXVj9wQVOjQrxkFKFj3qac6496tmwArxo/EnK8Z40i8SlcuxveDGyiQOm2anbwzcTdJ63beFmbIspK8Z39slc90u8nPeqSYxB6mWMyoSGX0m8HoWFdzv0mSB0oYBKY9AU4S1o01A57QCfxus1xjI+rCo1i5oI9tGAJtl0r7Pj/IxNWbMhzD7lYobKu3q5E0StpuCSVCJckjTFIdM1IFUkn08p1ZaWWxe3axPVl2bUa1a2pjyBykVeb50hRZwFLfvFsHnE00Z8lrKOOzJLgDWO8SyQ2iOirdVpm8ip3OoCMxRNqFoYzs62ZGJ5lbx9esxoA+ImA545TDlGnAkg7NvRs10b6NHrIuZ+F7SrRcWgwnIFg0t0wF7zdXqya6tyVXoet8FOVgC2iYLhxiNi8Ehw9qOdTTfWp1cZtqSak8dStYWWJh3L5vELwCAWavCOq2NYbN+fcQRJEvn7IdW8VtBrZyRev1zLN6A1dYvBJttGkQ8SGxka3T86tV5Qo4owMewdrGvk1SdsOG23LFZZi8gx/jYspsg9u5GGoq/kt6MA8awCimqFffUjSOmDrIdV5ksdgS50Qqzwbq3Itp+GrIK5XWMFLWFFjB0zNuEy9zWcNY/Ior1ZfSt3i4zKbY7WRXQvnnYrOziDVNpMoNerIbPd1oWZ1VRZlx7j3VHWk9v9gd+tmV7tC8L/GN/LAGo6QoNu36FxbeStEovIOI8BCLI3b+sSnal7ORlHScKgw1n3rebTZp1SvGgQYcBIWWVuBKM2VP7c/K2iedNyD2lRtTCOYFvK8OmLh03TpP+M28lt+q1q9o3HJuFpYFd0TpQgwyNLRzIxsbm1Ra3GRJKnRtScs3VZx5RUNV7FaMA1l1vQbWqEG067qXRE33Dy7ctLtXGbMwTlpmi6LeG+d0/M0Dmk3SaIDKCo6oHZ72oXBa1f65Gd3qAmhcc3QIdTFo2yHLF7Usgi7nlcsoVmePqeEVOXKgPEZ1gsrdosJ1vAmgErBt9q3d1Ssl3PkGY9CB/T1+tqHSZrk8et0YNuMarItRHJ2sC7AwG/oDH2awQUOy7RuR0Lv9XP9KwcsGxtGy0tQ50rH2npBmi2Kg8+D1Xy6pBdXbRfo067Q7J42CGnonSno2OM3T6TtT9JLpm/CsVseRx2kATnlbzCCbltNYqGgDq1KFQYI1RKVL0S2npV4UhilqGLTSxbXDrq46meTPI1qajIClbVaLJXB6uKxcZm8pJjjUF8sFA+JspUyGfX3ooFZkt1WdWhPwsr9UbKPg4OhXcp05k6HHrUdjvP6qHs4LMdBh42prwU1dKIFYd4i75aU4KlTnnePNwVpdF6A4NWcxyfqdheoELGMn9lBmPsrMVaWqWLnwYv8MvSDwsuzvFjO4OzVmOjLOZByV4i+RQV0MaslWr9nX2IA9fRtjBNNHulyISC58BATXoNeUBrKlnxtGoANE6rAy2lkMp+eFe21nlOacClnpjzEfg/Zj+KT+WTtIlPhSfyzkNlLT94j1w8KkjMZcio9Z0Vz9woGSofbu1Vn2PwR4Rm0ImO53TWCVfiK36o65ka1n1qTghjxU1R0hN6t3LNPDEUjdelv6wsyHpwV6yEGAjzewMT2d3JX5euMHup6k/DvpU8JwnB2qHqhw6S+7H2CRyptcPngyGUiJvNjK57nV+oD/WlmDlAJwcMiFFnkQtDQYUlqgKVaJY52yULP2u2bk0rBMWp7DHWYegEJ7AFzGLtsWQXgtZhRooM/73sADgiehQE7aOloIbtXmLXMWTpohnGtthW3ubKULYS03GcmHSyRm99uFlb3gtFp5GcepESSOHTXK5Rw8qW648DYZg6nRqKeHfZswAtEEcnBHWTHIGsXq0tjFaW6w4VsXtNN60EOGMqFeiuLDZQfhm3S81W1snGe0Cgr9hlCUJ0g4Mkyyij5TzE2aYMq3uJ6oQqETlXctBkfinPpzlZzDd/SRkm67ienZWqYg38uNZF6SVsilRtZ2wU/b59baONSg/MZVTI/OieZT679r2kpk8OGSD6rOgn4Gizza4MfTD0r9Vx8rFYeSd81EiA1izd8bUkxndT7D89RHEgKeUCh3f31b2jM+mDVSufHXEirLaWXHyyYxzdrAjlhYCzwnnf3y7O2+aHACLmrAbY3lSuSSLGE+vKjeSPBqdv04/sS7djbs65YDRnJrIG2n0xwW8CEyp1qVQNChmz51eshW47bPRkaMymR7ZIryza7Qa40RgpHo+jqoCdvGBmdhqjMvNy19GW1SDHXjSdozjmf80qPN66VD1tedeW/auhAFy0ukfMdnLJquo775Zb9OLc77HN3Z6V7a0BGlLY3xOFj/zAzZgZG7TVS8nwkunjBCZKVyDDOaZXgqw3zbrOj3IGdwDHhdmRyRaq7LYsca2pNMnGBYwyxyyUUOGeHl2qR1tFQtwoQ0afD6dGA+Eiyz5jBK1tGZIJ0DZ6h+azchunnSZ+Vlp9KMWoKslIhu3213dGYH1235ZtR4h9r+V1qWnbu0cGW1do51rRXS2tj1lYcrRaJ1fVXxd0buBSULNMRlRtzonFLjhCO9M1kUKrG5menSrnrJi11ZF7zCX3dyHdGdTl+AZ4Y7/wzfFZQR23ZidyWsbWYNm9iLB6hitj6d7+1nz3+FKzcmr9XW/nuP0qN0nyPTIE1HYncJ5b+syaQNyTz82VnkbTqCSpG0DW5lO6fQJweExFJrnluE+6CdMKXWiXCpFFjss0sH5lfDvXZvjfZyyfX+pPN4Jx7jxeEr2j95ajnSP4YMFLnHG48bTL6fThRScYIC61c+iB3CrzazsaGtYJddQLa8CTZ8hndmq0jb7HNYrtpsrH61u0wamZkeOaqATA1kqmfuPR3FdGowHaH6Sv+ojfTNgwe76cRtnRusSnWkmaq0Pu/oQZssY27GEtZObEiNzfFBfL5QmWv8/Jxi8COMDHDa9luGujbQxMU6x2fX14V1X52bimznoW5822pa7/sODanWmptHTR+37gNc871oG3F/XX+QFZ0kFlmmtYoOhEHNp5kPBKEJkMYybNjg37fEnsknsNS7JVaImGNpLNQug5zyN5rbx1NATda26KQeBuPly1I51I652cWqCeXrNISgWRjSySeySc0W3RZgL7S1pqzEweWmCj0RrQzt8kUjtj+kOG9XLHFshGKjhEnVtOy+3E0zJWWggrS/6JodnsmjVx8l0q2vPIUHNtTzA1+G9TesXblxstl2QcTBD/w6v+yaLHyUNlk5sTYVIfa1H3TlUM4d4xC09fRf1YlkDgKH2WFrYTiRcV+nQmvuqTCzzK2Ucz7EOhUSnTXkRoLSbqxldGoGsn7bq+igkdMcbzcHiBGh8/JCdsGmyx5YcIcxcdgki0QhWexJM6nPN8/HG/SYz+Ycri3BInpa7ZpRcqHPGMief0dEF0Us9qOtO++JlvHC303m+gtWymGttRY4dFjJzjFbItv6BjUDToLoAi3yyO3OaM+FKsLY7ptZ/VPb4xNcDM6TbUztnuTrW9MX4hGgf2HMYtME7OjsQm1RWMpp+Mz03tGURYykS7H0L+Dp2tXdKTrYA2knr0BzQvF+cm9v1sMtIn3YEuty9ZhwMiQzQevSGB3R4DHplTUm0QRngY3MYbQRjEtG68dOGLl0y3Wmn2c1jq1VzcwV/cJUK4laOIN+02PI8vFParXX3Vobn7Co6QCsxGA2JnVCT1Z48D3maSdedLllTPn6UH/t/2ud3nGJ3XsttIRXzultTOj+goXjtVJOidEi3yXwNo4R1u5SvoLVNYri0gW6mHLSpTrAPWKeZfL0+YdttvTIjs+9Itg6PdKL6ZJgbTw6Z6rJSjHp5b1Npc/hzEbmkjvumN8Ja5Njl3Q/Z4fx4qHPa13C4imo4GuKVqIXRnLVelS6i6xO+kduvZuPMg7ZFqjSdjJQzCuTBzp8faYkqd+a/b9fpVQU4wF85tni5feZEtPPJmNiN5eXFRK/7xC1zCZ+iPsKEDoXV6cOJjCDamRfbMpCg2MIKPsmw/XPcOjArsH5kJbtVFmU4gOBfBrs3f+1ewbMZGabCz1hsk1LHjZD3dDlaB9jF/ngcJy7I4AI7OIR3LenArWRPq1fkRb7pymbwbPsg/bdNq7G3OMICOMPk7N5tf/Kaik2u0NoZruemwFso4zYfEBt6Nhef8HWnJtAn3j+YEibfxBhwMqIAwuGylkHbhzoZp2fmsTxU1fXkWWGbc3AjCW9RiXky+NInpz/Daceb6OsSbs32x2B387KOrj2XfBleTgNwtOPSjNqPt6VxxH/bUT3sXrzyHpT5XmTI4hsUm39FYjHDCiDO4E3r0eay1G9F2vtlfVhpc24oaOSNRv7TwqwD+y8g7xiS+EN5MG329jMOf0iv+bak4Nxya1sC/ueq3XLiBbu60inXxRcJ4yf/K/GfWFooPUaxX6kgJvrE1SLgRkcEZ40J6lV6flvK8JTn83gu1cmilMlnpq2eFsJVtKxkhbqsjVQncwdVl27tBna94zeopJCTC9pkDNLwtkzC0I6WE0cxzIUbhMQDa7DbY62quhsCTf7vyLvn5uiI2+W/mk9FjVYbQ8abwdEdNuUK1L4czHvFn1zJi44Fqa7ZJQYUG3vZG4R8S6l5DuxVVaDT3lLnjlKDghdJbFNPv9APwnp36T6iKhLm98adZkxf/oYvi2M61mXRPBQ8yIQ1pQgnJ3ZT0zO9xdU+O3bYLHr6tV9i/Qaw7CUKmLVs5qcWGKwfBwSRYqKdOPxqHrdj4e438HX/lqevlPaci/F+MzeRziNJqL5byyz8xjyKWrO2uq1KOLr+Vc4NWJCzSgQRbP01Gmg+L1sGqgQv3LRhXLHeMbUCtkRetKzG5Q/tL2LXGscUJKg0dDvunuMrd9H+f7Jym9eAtQJs1xNrhaKHtiAlR0Ew9bUrfLmZav9r8C9KCa0L9ikJwYB5SKtfPRsmRk4WuoYwEF0yzTzrVtFmyNCQ4lJvTZg6aWYRoxh7zeUosIt87g89A1FbhMmHgZZC1mK3Guyw5aBPq++ZeJ9OjaEvStRHj65U8kaf9YrFxaL9HQRpmz8iRNrx8uON1I0SiTp7LXOX9rqzrZBXyWd+FagWWyYAX4X2yvWoQdr+VOnMo+3hRnxKfF7X9x9FzuGtjec5qL2gYUd0TT+IWCxOjWPy1ifEPlDLFWuqx+w/UbhKV31u4MwWRBvU6e4ycPXfp6ICtMJ6dAnR3/v66hk2lrn0TZV/rGrG/jCrVPRanNrq3+kjdE0Nn+vQ4l22XNYlthxHdEgetEyQ7alQa0MulYJr4rq2zP1HqMG0QnDYl3WoGR9DuJKPqz9CUBow3P/Zn+toXhbxqdiue9J/NJhv8sZByVwbjIy2tIjCJqXL0y2B3jDGS7G83I3RTVmjrd4lwNNBnliVktdtRI/SeSneFNqeDWQg8pnVLoPGqYfkMmhaHP+2ushJVvluUPNcKtmNI9f81mP3qRyVj96II9UALPFnn3WUo+PhX0N/OwYW+sGdy/Udw5hzT+bpuOjEQLlB+3Znpwn1Ixa/MTTM+oN/VwWnvPYLTRG+RmKLh9BwcL5fvIQU6V7c30HrVLTIvbDn1+Pa3Ijaj4VpfQ31p9f8ySFWBfUbRorwM+wla5Hx5BkTk7lQSQwJcn2DRHreM4v61bkY+v2kFD0pN60lJ8cglZp+ON0mXvMy25ek4/TnpUmCy+cNMFz+b2t2MnvBXUWx6NUX4MNsjQQCusdtYb0+blXAC58MsZo/6db3HImHaU/zHZ1x2daPZjpy3ltqYrLVU2KvHRZ8SaU30RlQNNtua/N+i0dGWmLycYR69IHFQfI/z3T8jxxQWFFjwHJx0jPRrjNc0RXmRYqrdJkFTcBYUjuJHNUyB7HZhCVQ4Kzjp7Rohkz6JXT6hlxwr+ufW0s67YQ6hgmL3NLrfosfPWC5YpHEZG8XE2p0mseyhnnTd9jV27Ode54azi1iI5UyblD2ePk/KfArZLOz6KnSn5G16Si3VsV7V3fpW6GYKh33R9SPjNnzQFZLFLZ7tSl/ejYXU3Ti8aWRtwrNpUgvEBlHCrBllADLSum1OvWUdthmzQX7+lbH5BM7YgWds8vPjwY/x9yPuLwnC1DsbvQGYW8dqmsuWsq/2RqcDOn5Z++j1omYmyvYNnvwtZSFfotA/xjXLWxE3Qe2zF4dvK/C6d33bmti7JOFsa+gtTbWNRjMhRsNiqEuaDO62OWCw9GEDioDyI6a5tMo7eV3NBrLmdLuvxVKyyE76fYDEyiSkSW4zrvGCPNedKfWnrQnLxrM0/uSygZLJStrY2FVt+8aiQN83tTeEmb4cU0dZSNF+Lr7GnZah0zQRq1YFECH0zgRlter9pvAa03yEOUDgYFZoHXRhtfHz5bVjYiwiWhXzFNIw4314Q4s8L7FuKWdeqfuv32JTF9P9y25OLdPFmZB/0d0kiGtcgFukez16S56yEBm9vsbADqoPV8DrU0zmXokRG/Gp0FgyppZLLLKe7ICyw6xebK+tDQTgyYbZ7y6722hbrDezVFPSbIZRusRXRMozUvJgBdIVXH17s8K26MHK/1lUYOJ94hktlzuUmdBT2iERD+HonLTZleVeUi42YTGKSI7efGYP1XxuzG5TN40JIHtVsvGeNV08VulV11SomKRtkf+FKkhO4ymcp9kGYd9ygBQ5Cudpv1FowXWfWz79t6nS2KgQatueXE0612kpTGDXGVflHN73rymTvXhETQh7bg4crqcbpvdZhm+KW5icYKDP8SW/y6KC698OxZEb4TMkgVS46Glhw7IjwbvsqP8x2it9GApOHzPwlXlY2Us4bdjZERxAA+1EW3A2S3k/eiqcuj+tdHraM9zOeUfJq6j6snjXBuepqwtnFF66xrGV9A6Yufi21zZ1fzcRElAHszeiQkHq+p1teSyjVIO7VusSWRO626n3jOW65e7IBAwZQq8uzziGQ/BvcwzjUaCg2LO3np6OrW9MBnWDk8eRZRO+JLeI2JtPQhde9Z3S+1ELiQyjZCAjX0Z/FKiUNehz5fWv5HKVfeu33b1k8jt5HDhDbJjpuUhIaRZ2NspMJVw+1PXVWvIp473XMJI20KjRrWic41G3qU2Mcv+GTKsZZrfmvQz7RIiY6WIezW9fVKmP6MZpV6MXxbKymi6WrnwB2aHiNmT1RY5KwJl79uzwM1iszIGfeI5sxuGxwst5SOSz0pMY8vtA2pGwTcabsiD3pE5UnoQQ9nswaG+uada9bCsbsthvEK6oaW7rEX5Yc9QySTHn3Wtrlqdu3aJALDg+jIbp91pxJMSHm7e6uorUDdKCKndYqguu8JKtH9r4UMzT0Cu8HA2fE3d5zsc/zTEYOsj1W65QnYezYqfq2fFNUKcGlhaht1E5ziMDrY4rS/UBYYBtLDrgFOGs34BSWkpertWCE9H81VDVG5yn9WuF9NXJgsP0vuayp99WGvcbdwJpjo3u5EhJjKYG6229CxsOIv9DUPW8f4mT6fLI+QH6o1wX/oLUtpHF637/nssKLK3yCsRd+1uQxRgY2/LVqP8DLUp9JHRzjjdZ3xnNrUTDP9uVJk9/sQNAb4SYQv1b42HZrXTfUK/VDCHOnqcslYkhr/FpKKrQm3ZorBh5avHN0dpp4z3/YXL91HqwSHKbHWnytoPESCrM9Nu//UVzuP5ywSGufdqXuY83bs9XG8b6rpeXj/k+Ini5chfYvWxEYCukvgFKvxhepQc021hxwni7YOceqntVS+PKHmPG5yE+FA9u8yHr1zwmjkgr7+bl2MbVrQ34fTAyMK21fD6y8g8TtSCYvjpUue91omqHs06DRuvyIh5C70vgFqtuzTefIg1jPlBP7gLuAUrNdE9j0oxL7cAiDVZzgjDaUYLjxIzYRdbf2FaSxo9JkNau/Wkc2KmdpNRu5abqmP21/aD7zaClbXc4ADRAMvTM5G096M5YF23VhtafpBjbX+yAX5bhU7HtmMS1/LpVD8jJmFL8yfUaTKrULG6vL2atSvwi2KVb1rj9m/uMedWWs8/6llrVyf6YhpyrBOLGCq0ASmoNYXpAHjBLGGcIyEVvRbQd91p+6DDaTUHA3qc1i3xzmD/stO2OdPGODc0Fze949zLevmXCw21kZd2IueV8PKILu7bpDanfTvtXwWJLi4CJBzLdQ/qVBKJL7jmGFMWXH0psCSoZzXIbhWGeN5Zr/E0jo3wyOqkuwsdZxtJW+Z2TXasUD4GGjYqFWubW2DiafqNX4/rbGImB8JushoSWKmK4hTqOFj5ozBHzaMlObFpdFdnHNsySuMti7roqLnIXtLF8xi28lfkx8vdDX9djYu2RHLBmJSc7OxGmM/G69xOI3JcqTIN2kDoZ71/QuyCo1OFhK2qke4PdqMkR4RwtYpSLnXSd3AMbpoFct2qdfiOY0IbUlryF/hnfaoTNhdZokcbikM4P2AmdJeDn4V3/h1rhzg+13VeiEFSiPM9/1MDzjuhGgnGpHvgTw77bTSqnt2/pOrtE72jxANhNy7CqjBZq/yY0aHTWTZtBSDptEbbJMmXd6KVFlqRGul29KC7UMVUv2UnpfW8xkBMemkdgerxsmXrXE8qZ63w3ScfecwOPxOM5NJiBypTH7BYXFz0u7tWcmH5u/stFCSSUJh5b5ny4FuF5vV6+gM/Onb4DMbhLJnW6xdBuBby35mHMKysOvQrE5oUPHNQ8OM1ijyGcHXXBLnWn01xn9qMfmhH8smWJjH4w0468Cr5m2EWsqc2YzpK5dVbT69khbRvWe3TitKjTWIUKv7Vs4zQ5boo9KAeYGn8kDGndyyIBjCC3vs3C/Cy+uVXdYIAVaLXG7EMidiPNqashJjrCDsFhZV29bG67uo4zkVNOrddGEy73VjOvgo+WQQjMWE51XtdX10EvLsZhlEzC9q+5MDyFx9C1Wlkn0NORZSkdEhaRVTWfIc+mMD7XQ2DYsZRS47+WqCm1JebXscCbWR5c/3sdfwwgeach6OQDwSm5c44AfxrA7Laz2C9c0+JZ1fTcKKfmiWdry23TrTGju6lysyzHq0KlWD/6ggWVtLMzm5pbdU/pxZ09dQ1i4oWJ1SNDGltLkWyMlURRMzhML/Tw7+vM++thU6mp8/rMi6+l+Mk64t2mFWo0wX4Sipce10y0NCdnnRRtr3zKaEOPOqkj+Vfzz/RaldT3mN9vUlPSdalNjqXqr01zlwQXZrrjpfsUdFca18WuqRKkhxhW9MHXFH2s5Ed5sKuyxeHs2nxOcm9MBaZCnduhQ8vIB2aQEiPDjlBLfbw/XQ2CN4Hqqxpj4YnCbyS2pLbrVRKyzBlxLDeHqQXKRcJMaSs3CTSJW7CWraC2Esl7mr++9XLikx6XwEt1S1iw5hqG8jS9VvcjhMoP1u78m96qVfVJMWmS1Yt4c8qbD+cRQ6hcZfXIMoHknLtnhjWDSRpkxAyFxnNcbK/pOILfE5eX+q3KVndbE0lw/OxoeUwWwLdriC7GceW3M/RtjClqLf2hYLeHOsAO4OYSo/x8RMkpac52ZPU/DTrJdsXTmNUc85+2rrFUVqNBLMcXWB15bZiBjNYBqG712LlY2iws+xMQlq43mfKiCbTH0nS5KAfRl+tOX0NXZUT0kX+bIMhK2tedPsbJL+TVhZrV01y+sJky6PYrRTiEmtKBsbxgUP32oVq26ADjSve8YIYBQe3pZRS0BgG1qIhHNq9Nu8BF1j8vAFmRJuwzTB9vzS3C+7C5uRhXHG0b/itmpbN1yMAZu2KwUEfsrT+9FeRb81lx9KkA2HQnszG2yn6f1WPvszObjLVIotZM5N0nDYjLcbpVweJSuWuPsP82b69Y7ZnN131SXq29VFGYpm9Hzqbvsg3VQj00P10Xq1iZX4rP+7bCHcfc6FlLNPThVvQSY78wbcJ6upe/m48wx0M25tezftpSfK5KtpgKupSM5YKmvaMmLWo3rTPrtRZSM8SrFyPjI5xZVLvGyHaa9+vBWrq1x3fzEdArHXabdYdY2JrahUgcpRDX267ZMxE9AsAEzkKONU2zdqw86+oc9IyX80voWF43HGjumLXENietM3uSFUp0xrl3IU+dTvCQy16NZEcZRZx/jG0ru8guR/32mi0qZU4hkkuuV4d7rULzG4ETFuPfQJeWosOwafbqxLO744pGfQaF184ZBGTPwD1IW0iEXy50r7qhu1SbOLPwuv+SIioyibP4SW+Z3+8hvjX6WPO6bZ/1Vq2Px/AQ+kHvwT7Ei9KoXJuC4o4Yy0Mdys6I3zo/1cBEnmYcdnVl9X4K8ASWO19LHnn/c1ozqB9LtApO6Wuhpnq0wCw1g2sDPRM9YzS4Wo5q7zYPQasfF5T4sZXrQCKZPFrodgIWqtux31TDR1OlVhesb7tq3wwBWa/DteU0B39wz59hPP1EeeKyFOU0EyysuL7huWjaK+oKyXnKz/l+ARW9qTv89piPmVAs/WGR9Paq5ivlFgr12YmzrhPsvCjulcZOhWEK4H5ken2daPaViww8F2rxq7eN5RArFhqT7sUaWd6K1DjI6A6wOuGhO9zZNXCewhzxgrHHTWUwJq5poifLBWHuship+POEV5X/DYQ1bQ9ZCuoEfX51mReMka+/emuR+QEC29TrJuirFd728my2RUjvRp04VDcM+MfrXRnpnxrMX0Gs6KnBnSjBjpmVcxCA05NCfJmk6HKxXafY0Nd76WNQ/Giyk8mAbLKw5yF2zssKD1EPJI+nQpOsRMrpjc2lPR7ZJhZzAN21ZUU6F+d+nQjeZckR20Qb0+tuV+QAnJ0iUG9K5mWGhKJ7Wk8TV29YlAyIMYsnDITt0WbNewY1hJ49rUX0dPJyVTaSJq0ie+UnuDDQvdbhQ8XJnrFKce3X4jZup6ILTDDjmmqEcX4yaT+6RzdZxumPVsFfYdoNuaGYUo7fXTDzSoM4x68ezG2Ui6eBcb8sSnafZT7uOVGtQhbaRAcYLbQs6561q/mpsAX/NI1k6ic1wvOSFbGxrZM80G6ZVQ7ALZQC/dPet3lvB9qTECHomvYfJy8QBUrRXG2lqE1OeUi9ntSFd04Pr8UjXg+eue4ycd1UMERa6LsG0eREotwDdkqME3nRYC7tGCLTXJ8XaD2kyF9sKxyFRFYwjbTkptoPHCnSIhmIjolN1t/9rVD62vaFjp+ZjXLhqJFtwAkAh9aHGCKXZA1srAtQYNgaHSMVSDivzE7fbXS32m5KOLxc226c8SgtqSzESgdtuFO/KmU+Yfutn54n+tjI2l2i4/ZgeHL6CUeccvd6zyQ52NvGrS5yZ7IChd6ezw4ktXvRtPkO80dKT2gyrQ9lShhLsqEqIStPm3ztMhDdOeNjY47xKl9hjRQzt/UO7hQtpFOcCfDMsOJ2GpahTcZpxoAlMKFTnDnw1U5zT72BJkD9sqtJkFhM4LSKRZjvESkWxhxPWk+SqlFma266cYOw6nOhplpzNGEaje0R0T1cU02JiaxOGdngP0YchG42wwJdDLyId4jatZTBLAav3cW7WwjLHT0MFqBZjmvtQWdcqC25n5aZDNSmjPCRlxVKr11PXjHS2VckgyYUZ0zknk6QTYoW6FPLn4QBwK7e2JxNuluzWygoJqZIq8oYgFa71hxivX2RZUQPBUnExqwraqjSh7xnuSb5+l4OtLyZ19jQXHvGep4Hr22d/clkQSzEFlctziSZSzj6V6qFjJjSRAmxSjrO0SpnpSiHQvhViMrsiNKFKBD+jBzCCxgFzUItXfKLz6lIiraLBZ/NNA8HlhapKV0nXHILY682hTW5j6m2xre3JBvr2BuV80DIn5njH6LECLSF53hMVOKHOdtbFoxHQU2PydU1/ybDR6hj04T7r7CfJt5bqMuSmgqAvEOgTWyL97/ndrARQ1M6Siuy7QIxFpRHw0GGiTHm0p2DzPMkX4C5AOMD0tv9meF2nxkSx1ipmCK7Ietikg0MJHk4zWYu+nK1LnqIfWt1bn69A8JmBkgXLWEVufx6CcNekpOl+wXFo8gwl/FxFbxi+oADBQJhFrJ3FUpFb1G5JietDpfBgzcK5n2Np3Neggj2xqQTzmg7/MyIJ9wOxhH2sIFsrz45Tyh2uU3sgSXn0zMAnGeiLNxNEWo10Icz5zybljcy12JAcw+94QnPUE/VHScu3tcoo+UfVybweMHFRKpraDRc7JOeJzSrD7PpMkjJNDY6frkwDITqWM3ssb5vVHOoebJ93xwZxQsvjp/gDHmOjG1OHGl1oa2iJmKXN8xsVV1O5n9jSwAp8/cmU/Sp9JXJlCpNFBFwm2lFuixC09JVn48qk6n0ovQdcSssmH5wYCN+VMYZW19rfRyx5GF+s97NQxK/YtcBItTCZS9C9jFDxRiZpYakqnoYZWqfk63j9bCrrajJ/3WXH19ntIQ0wb2ZRvJTg1cntu2lhTx+WbRZQJlZXa36C5tcn62+jtSV3IPpbqSk/WnlrF8zgOTL2nosfGSWWCZLNgbpIdJZKZ0xCW+xQDWyfcf+hPzfZZjHC7+Rg8+wZR/Cey4bju0HBllXRnvNvYAYQ0mZBCIUuTxjGHqePvxZHoUlLIau8yA69E/EaSriEnA7j0ebd2hC3dTcr9joq+GVuh3bi/9BWDLwOp3aR8VKeRqWjwZTwe11i6YRsAsxJbNSM9UReKTQ7uObDtx42Q07zQTnUCbXFpaoChnUO/FEf3YuT0XPstKymEd4pFusTrURAHcIsgQGtnsoZDq0HsDraGIDJJ6/LXPcbcuTu4trzNSyCe5biuD5Wqsw7nbxgCK3xwC8oUITbJLVDHaiy/Q1zjtax8ShIvv9ab8ruKew9i8LmgcJ0a1FL0dunmiDtYNwd5gpPdolBDewtsfxxYjd4dyii0gQsV2plMrTEHXK7xPiUp9dR36507ZiWULQdhVnmF9MMZwoam6EQQp3Du44dTOAmMPs19nu8jqbqNKIcYWTrM0qrrnBsbqnbUQKeVupdRuE4ZItN9CZCLd+GlY/+uxJhlayr75O48k9JY42kpLd7DPk36w68VD9iJ9HYZgesa6losy7JYxN/rbBMQPAwftlWoHpfuU4CtNToLK3zHowjzmJxvGe3ZwetIaJLbn4DgyeEPrVpQQ5V3woVb8reHNtuLFi7SPSIccH23s7URYF2pArWWdOtU7iNTFZeDm/efwfyi2ga32KLLmldGy/11NeoIK7Z73iDUlkTLebZv/gcPWEanMMK5UI0xeyZwFyRgZDryWjtptdRfTaVsq3OkanS6DZz9M/RkSaaLUZPyLKu61xbNZZ+S61tzGH2tc5ktW1CyPqQ3NztZnspN0tu4bvGEYVKJ3nBb/OT15ZWU8vhqe/yz5GEd9NXL2n2W9RJVO3QtVpS47OYB0XbYwdutivl67kSCcpWdtzc6OsoJzICb3q7cf5nAi+wbs8gvGDYZ6GZXhwNsjg3tlEtY6mAvNY7ebrA2LzivRPi75GlsF9dh1hvkfmq5p7RYGJ8GvZAbcx27o01sMBWUCzhmpLTQooIZ4cu3jYXWsvjuYcU0b3lbKoMSmvG8X8OdG7eUhul9xFObMPNXQO5ijYDrgJ1qJbpKSaWEN7xrJe3vyNy6XabfLTDVmiSy7ttHb0cFYt9TRXhfmrYA2phoLrNp/MiW2pqsCssxqByxr2aw/izFdiBXXHFjNI3m26CO1Au5rykiJMXimLIcEoaDHkt9GalDNsuXwlTqPeMFlpM80j75iCpqA24aWTSJ5uFEvI2fsWu3nEMAziDWhzjeFafoBw3b70pKt0x+RdAIujOnp1jqgjSsJBNkm7UaY8KyjZ2yr0CL+bLfOjFUUKyAhOcNMA0TOk0+S4YQ5qaeET2qDseLdRoD0XjPP4iZd1qgDjl/LXiltUZP+/6RR7jY6ccfctxdWnyh1YWWapT9zu/b/acjJ1bn6QNannVUKh9W3jSKOQ6nFt6lktkzzGCeqGgx0llixNdE6WDq+MOaatzC14s11WMBr8nAyGTbG1W5a/b8mLO8FkkOHYDMuUW7yLN4Ptc0wvuOlPMboa5itcpupqd+rlRngqyLMG0ENf0mAi3IVgzZdIEfn6311upREChrdYQEwy+4q4MtgO6mugOsVmRzijorINZV1PEDbfZsj8LBn5Q7qKvD0GLHwhmLDp0FYCm8R3mVLdCMqQSVPVwEgZcnsRHsPNmduod0xdlR/NLTapSfOVHokTJa+bq5q73F583Y47kjazjaaKKsTx6g0k8ZEbkk1zE2bC1Cm2naDVfIbjhyWkG/0nFO9kUYjfJkNB0CT1jTcTeGvBtL6FSpmvMvqpQ8PfWGb/Mwho0zpd4wHNdBo6c7nE4sb+6NqNFPb9CppT3mjtHoiPU2W5/tGKs9kK06csXPg36IniTSAERPaMqidQW1sH84wECpKtdpo1IE+71tirqfiSpXawfnSH3QSguGAZhAs9VlAzJscti+i2rGYjMnTjxG+WpeaSPQLSakb21Uq6pDRtz3kTzO5rrsgMg+RSzJ9swaEP1WZO3SDOH2LPUzZk+3e22ZNbG6sau5KVdR5fviKAOOKVLwte8lbU5kwfCaQvr1kaBxx8BjICdd2J32VbAAb7mTHYBx5k/ucoFF7CM6bT5wbRuKnvp/162nbQboWRBvUiqfQHEMXjmyZ1qgmb4DC4ad3/stxaGr8j1usYCm6sQrW2yC4Q8rjgeS+u33laEgMY3oRMDka9aHnPp/cjiPVe7Yh01iOfB+xXHs50xilqfTaN4B5Oqsb2ZrG0yLnefC9F65OtO7XbH1PU9q9IKqo5sp0ovTVgowztrvQNwnGBnwwIzekLT6wmY0kzDGr0wgUjsB7s+A6tmil5ZwJcsiCaCsrRBNwbMAStDaa5F9qOAN/DXUT8qGp6Szd47uEr1eY40sm1w6Es/elk9LQyka2FbyYFxO5moaplHMvZFkgQb7lGO9LOw7ipdO0VYvktIwOaMxqC3SSLO0rUXH1+4WmGzNHZVSDMNWUNHNNxpqoWnveSyQIZ9GVDLUcGirS4XBhu4yCGl9tdIjJ0HDY2RjNA0qL6v11XZNhrq0rIes/z7T23NjPtx8CHb6+fhK2Z7nTsmnxR0Hm6Abj03LZdFd3TLGxSrqhsFovsOO8aLNTMPNYtjdc/hKSdgclUUKo7j09DGg8bmyuwoXv5tNh+zNDCNsZMw05jpz/DMrxW6rRDJf/mRBFmuxaess8kWtSLQRPXtXZF1dLPujPMqHrphUqehHZ/zDNlq8nMU2ZjGptU2HgNYoTTXHWOrgO4YkdFk6aYbp4UWoeGV72z/lpFujLm6mjqq6YQAnUEqmalbdJ+iRoriWqzePrrWi31vodxlPC3UQGbvqjWi48vIeFLBzBFcE1Ick0qrcSb5ChjdIk8GkolK7PGzoyZZ43Y6RlEa3JGbYd1KVaM7Lcb5fSvs6q1bfa/7VLRjbX5lTNMpDrCCNi/uUdTJtOvIi33iUofC6Cpz09FczmBIbdqkTGs8WJo7U2JTURjISf4kfazl6aL7OLKe1z3IJbeGNeQD0fmm1BgrqJxfXyDCbVGwr2npjVvKPfIWQ7dPyFVD9IVvhXFs3Gl2jTY1OS/k9ZmeD8eEgVuTHOJ6p2a6vJm/wKU5UQ1dm7u4jUy7OsZdNwbWyHKBBDpSOugqQlRysVbLFjjwT8kXGyQU3OO9pH+RqIQtLw24WDeEycGiZUeSs566mCiIuYFSwFP5ugsJD6pTk38KQlareEYHc1p4GWtcr7qR9Z2P3ZQn9JX+XAdDqUR4nz+XmbWMHOdbrO7/uRdyYLJKSO7Ky1U7zBytRhJzePWQjT5Fp0WBoD+b8u0Es722K0SZ6JTOxNbrP0Ia7MLT0IFwxrKw6duHQNmmnDcipeTo0wN3iyt3tX7Hh8VG5avq7eIz7rP7s0tWbbfFi4azEuipsuleGmqzsPNpuTEfYR6tM62EQVtrWZx8LMdTsd8aa82dHTUgtWZ63cvssXvq9WCoqate1wrLYdS6of+A5/MNiJ29uDeDtiiOy0HpJxCMdF1V60UWhMUxsIbhvSle5eTdAeoaGYINUXFM9j6ezgxv1laIGO+M5EJNesl2K/Xr9f/FymFOFZYgW+5oyloWYnduCcXvuaLixmFvFChYDqKIuNfCM8AhSR22T5TRP2Qrr0+iz+TukEtHSY90LEV4NiMmv+uy7LLOi7yR36lnDlOY6+QWib/S1lHzD2LHtRB+0+9Rq8damU/5Vjn0l+pO+y2JJqkBN+p4dX0N6JTGWyQzuR+OxKVjhCTW+e2StmY+Yk3yZMvuNYj1y9alGrdcls3+Yh1T+NDOrM08TmqHrUW52S1G6B+IOm2SfsSMMUnp0nHxjV4cxmlv3ZLVXlIT8wAxv+W66fYQh1zp67ar5QOKC01+CYsENo/37BCyvud9bVX8STesIPnaYc3RVFiMg8hfnE0c8HApLYNGOiK2QZiGd0Zu4ndjMH5dm+9vRaUNPJkORnbr1OGO9WoqWJcJgMYyOcn7uRfW8h/g933fFpSQMMB6W6TZ52jYjsn82j676rmj929nRlRjJ5XFsFyHz+HfU6C2tzUOqL6qT03BWPvfcZoSJCNJdqjdq2U5Mj86tOfPPuLe3UbtlpOKy/JktqH5ux8kdgC7oufoBjDqSU/LcN4wCnsbZV32yIrWLg2iK0T7jYitxaPGg3sKrXQ416EcFgjgQLbDqWaLSuW7KNtWbFYMOjPE7JcojtZzTT0b2/OcyZeleWvfS6oSi9Ku7uLdJQ4ZdKAOlRojsHp0aKjgLrkIoMR2wNSBOtxLtQxXYg7I2IHFus2Gu4jvJO5tO32iZ4kinXW6qkdLPk9zUOKNolBataWKE+5YzYXyczV4yLa2OTqGtOH9fM/TTdbGRMQ6+lIdF7mfQqxZZP18nIM6jfJujts3yfqoOL9c2+TYuDDvk9Tzy75OCsme+TqEW2fOin72BIEXdcc7jw/J2w2Z6zzv815+bYtaLA01X8Xdy0jjZy2TZAtIN8umBXspL/el1h6Iel3ia/zBVpCPM+l+na0yTo6bHrPUfJzPbpZwtieeE6mno1UI9JUZ5ZtdkfeyVO2HrsgtxcdaTp9/45qvx78KUeAqnjqWETQCeGrsrcnTvD12XZmRzNw6KrdWq2r4sf8L2rjbtD9RWJgBNnXWNhlGPWaGrFNQB5J6YS6IM7ZyT83FGc1zXbxhp/RekH4jrt22lgpk3XAJWKKYPNhbB+R/N7UA2rocthBYZgC5C5qxDKYxl9yOY7ERLNjMuvkjRztkh5xLq5DrqC/SCHnNk41uwO/5XLeMKJe+Gx4IDZ7ULORZFeyoUuqYm9zWVbXz467ssiO/pI3jVynXTJKnr6o68J0WiVLOviSY416U3w1LY8FEM0+6Y1DzvEIGO79oxGps09CZceKbanI+n0cfGyEitsOk3/Q81aqX1hbWx0dUt4Byg0fFN5JtiupbFx9GFkbPxvb7Wd9oNFuk+yobiaca5y4rqsQ2msgiJofWdermPZXG1dT6Yd9L0ZqUrQaX5+g918tQhUWzmsyL2Ah25t1/H931SgWqazjx2bW77sM/VUEpkJviI2ownp19KM4hFATCNzj8nTbP742tAYDknE+Czp1ox0p6BUyVzljGLdCZWvN36eU6pdoCBP32qcGZHZrZaWv11SpZkiC/ByZCbMZyVyScFR67TumL1RQu1NAGhJ1CctKP69Ugxj8bHt47rNkCljWJ6BPo2cPiOlO0dbEeBdG/0OsPSojlkxx0+UDw/Mu6AyMuxcRPRGjRGpCV/dU48RXXayEf88A4FX9qz80WmsNRGGZLc8WGtiYxRgUIrw2lO5bd4x2ioDd2ac+WNtUZyylIfdlcZBtbtTUaWlPJGGpjxHwojkA9Lzz+x5dmLnMZP+wldQRj627EHJWDVdRfsmueSVRif375yE7Yw6nKEpsPYeC0qh0sZjqF6TSTBt3YSvpde65S0aP1YGalwfoKMvf40n91Qw9T3xqLAQmQI9Jm+C0wuuEy4meeiegL222XqjhQeTnG9AA9gjoWHYWGTv+a8TzHnvVPPQ9nGaFNicutSDWCRvXSaGnY5rdF9j9S45WVZXxuOA70jT3QDEfYqN1gKt3CK2G89VqJGafQwFUV40m5lrinhLF0o7dQqQ0Gq5U2XnNpeecNvZnmf4H0y4XXfCjSBMLA7jeYnQzDzqRNSa/e+EowoJswaPF7V/6ztK2spSv9qQcFqx0ldgsumTAy3elLTGPWb5OdDdOueaVvJQGXGqKYo3f2tPRekbrF1kxYmNIy2C6No0tn8ywwLXxrNhkNXkC7BGQC42FRjVeM2joq3qlddtwPWgcUmsfdOmgscuRjMb1ZokfJ3THOMF21OnxT2egFfklazbqXjprOups2/RpiczlP5cbbj18t2ww6spuma6zDabYEsbJFAEk+aYV4IaR53/3s+S21Ewkenl5dmovqWU9Nj+TdOtsuYM9INpn3NCp360N47plJLdK983rKblJaQ9bPfboezP/qU689Ei9X1R90A2mlK35kLXSxhBKDJvkOnDXXRx4YMmxdJWDJmPXmuKaHyV5/1DkOjjx75FhinwBGMBtKRwDzZPDqfht5Pb56uHVGLh+0grruhmtpATlz/GinRyTshU1UEAeX4lf3Niwxpi/SEjlP3xAEO6TysFpGzOhfaSCZo0imNOjzfNYvK/OVqjL0BK6ExMqKVjdPB6vrju1pgWMa1jfh0+AKsPkLI0dU5DImXa+/VArXhtNnLqTIvErurpND05EqUtYxk7HSAivYd/7xsDpUCJrTXmLLdpkFyzTAojoty0wlYco7SadIjM7LKWoP2IbHUA6E1paYbTgA+rmtljFEMrL4FeffHVJp7VwjTYLYramhSPnBc4TNfzfdn/b8EW2YmnBeVgrUONT5ha9ne2R2y4DOvp/vfq60bjvmTffm5vaYQErZPovQCVKe/2U4duS/yzbqOPJjobNrQasBLaGib9K2bymdpm28p6nqdupqTt5CCm7ADE1y9fPU4bTHX7Z+jgeNL/3S1UemNq6v3fyzAB5ohjFM6ZSmJG8XLWj8EhbogsSzgSN3RtYnqj+L9dim8QHs/8wRIURGzoXjvvRpMxYOOtkAblKsw45F3DFYJoHsz51HufM10j4wY4okdJXOHP5gZaQ3tATagsNYBrzBRZwftv0+Yi+9nVnTP3vG5krGTX9RHTNLzaIc2Rl2Zn1IqOOB65zFVTsNbtFhzsy3phF8rnURoXKxgXRus6U9eLmsCOgtLtICkmtTFwmZfg3U2nz71WvH2Q9xuJ7QTETRiNRrw01lp9f12FmC8UIeRCyt6nTe0u364kHI9FYpS29B14Td+O2MkdObxSLAqbQ72RCOVp0Cpxs+nzDzgVMyGiPpTiCps7k3Bw24eZ20TJF5hLMzBU/z9oM5U8K7OnWAnXRh4Z2dPNrFVtdf2WpGmxcU/5kuI0195acJ9VCpsbJWkpy2XkS+dTvOepgqx5f1vzbDojcM0mGyu8y/2VEvNG9HV/yLXd3KXYG2fq9qS/oKny+Cdgg86lg41QJ9k0vBr/82VUre12rbXSbL7mKCszV2LA+D2qCq0gS3BmDWGDvIEz0uv7rND8Et+7f1mxl/ZS4Z4Xyz5oh0tk+hsAOzMJuq1Opl3BRDZ8hedQ9YA/s/XhLF0rDL852wXJISS1HPPU4+bdcKB+EG291UpnV0QMloNgh1u/i/HjQxB2qgHvGsbjmTSWjXow9AtvPm0oLCPO+OYwKljSppaKYFZSdYJ0r/R7+mN9oGoYfWbYuRU6W/+jSnXQzB31BrdydeZep7DsJYM96NHHH1OOYHDCTxdl6LytkiOSnDhrEYz9zdaaxAD31xaF4WfhU9Ayd5o3FkblqcQ0DYlknE+UJ6xEW6paaXshyyHFwBptGPQ0XCOrW5FEP8iroV3r2D/Zb2Nt7+UBfZocYw8rWeYrO1KztAgunrPslpo2l6gf06XJtC+QB+j52p+L7XUM+GGJnrc5BkA1tZ13uObE4mTOC8QpZny3zHr5PL8u5B4HMWWenHT3VFj56nl+KS8pvUYnIwaHlfe8wrxixXT8WgBwLcaE7HTFW+xTHBgHi8nMhBa7G02tNegzHGTuSI307qxuNao59Eg7zbhceUjxFi46dD6frvNg2jmGtZVo4m9501QyU+bE1P0xLabEGaMomSOdae7lwgzQpPv/troe6ObN5lSrPyq2lhuseN6FlG8LceJ2OQ/r1iGFCpdqLLaQeDKP4AHEBztApea81bMXQDyu6kYSnj0DiRbTHbZAcJ2XbRq1iqWIJWvz6Wfk326Gngix2a4NatQLuXoP4Vmz5CDfFyJszQWpcCaA3lvpMWPF+x6kqKeR2LepW3lCpCFljK9XHjpGzb4YsyrDClnDzYYyUGZxze6OX0Kw5k1LOMhVXWtiZXuKrlH+GQewyhmZ4s8AnJ3rtlOwurZklgEXpFb2E594QB8ftaLXnZRriF3Dh1cPO8ke+0hSIz2bWn0A9GLtqEcqt5RH/WjHpKWTz8GKbGjaCZOfVU25kTdfc6BvRuOXkCdN8vXaLco76YqRsJRhsWy5bakT0In278ypFLQejpNmO9m8L+2WJtKVI17zvVu0xDMg4OQgtfFLQN2PJ3n+TNyuaO0O+Licrq14FV6V0pzxfGnVkEdTnyI0PujSbNetZ/dJEQzqKpP0IOrUVZ8jhoNuamgwa+4PgjS41Iz+/kbnrlykt0k1Knzav7Gt9GYwgzjFrMvq22uorkusLbBOzjtYjp0eja3iq4glrSoYsKEZccwV6OLTK3FjdL1EPb9G0nKWF924Itfoxrbu4kNdzGNsb7cTptGTqzoVRhHzUVOdc785sYl3SV1P7TIwG+F6yRxpBANzkYGwn8POd/s9fjeTi2KE4smGn5V7BQ1ipQzAL5m47tNwR1IIpaI0Tzwtbf3FBTIlmwcjM65pxOzHXm6Mn7luHMS4ugysVybGEbdDjVloJgwPWXWSen4bRER5wDF/B6iUwIGgSIYdo9LRmf1vR8PtH3yDXaeiHxl50fXZ9o5+4xiJ4bxMRFuHcQwk4eYyzz85Vrj1sGiUHBMZXSM2gYPvttOVtrcbQCrjFPv+/kc71gImHsujCCf62rTjrUBs/haK7zZaZqEoMzQbdkz499Xo+90nZ8Sdr5NlVbbKuuCpykdVQ5Lt328gCE+uaewtaJbMgoC63sAMgKjSDMs0aU2lLRGmujchHGwBOmnthr9J69EhcGr4pztXMrUz5bUJcN71GlppFGp6sRlZ4qxDaxrMeAtSTa3lZUeU0RAGsINxHWXrW/E0fDJp4ea4oLWltAl45m7tAbWRyG8Z878Ri/Qg/BpMJpo07AY7RmWZcXBfRajlMq/kMydbj6Q3ffL7a6MZWfnAlzu8oK19fxyTSUwCjZgHTEa6lffIPWbKCqm4Y8SmSxZ9Opw6JX4M31WVFhq1jdW4p7UBQijubB0oRt9zZBPk8CFmzqfbHIFamGrYRqDB8sePTOrnbtKC5RGxrnJGXqxFthYFlMl835PU7D0DtWtLMtZJAmlluvzfc+/sGc3tamqBT5vhQTIlI6UICNhu7V7cKuNmp0jtrd/yqnbp2ArMMlghQuccUdJuZWkpCdwum1IzD55Utb2W+F+aGz7FTJIv1EwdjIaR1fetkiRowmhUsQmh124OaC9auuiWnYcaXNQt6p2OHzejOO7C4LjgtpoPQY3OawI2GTIjgen+OqkzYvf8C/dhK05/hsJq2WWZQWKZiT7+tdK6bASJHZPAEnqrFmms+6wyu5qHlPdP8NM1rKm6X9uDSPfGORaboAB9Hu+vngLAdb8kKvDtxpZ2DSGbig8djHl7E8tkldk7ZFqSoFPAC1CONFxmEjCohumrGrbNnEmSr662ALFyXQdIO1jkarGPshhJE9rgZh/qniipWzwfahJ4kpmX9qMrOn5g6YYxND+6xVmSm3HN0IhikGx/+S7yrg2CwY6kq3yZbmNifMA4/TqeMenXTKfVeVlI47kf8KMFBP06ngKKyTks0aaQ0f/TnYTNOLR95SjCptBaORFpNF8S3Onsg5IJbMAaB9o7osYKG5W/fyTlxXM/3U7oL8Smy8/CMY3DbRnA6Qfc/Vlr2hpcOpBfqG/5FzypL6M1dB9uR6pzKPGb0TCjxJmdRPLnVlyWbkaN1pGFuPYkmjll13lpbQjDDR5CS3Oa4IYyY18YESmkP6lA0+UBWeqN75Bfm7XgFJgh/UnvTqY2yjiQt2EGPjwpu9oEC1IlKbuat79gesnIMunyJDvqmRieCRDbDYnUUF9yXC6uWLwSG1kdea9p8owNenGWNJk6PazM/JoNhLHq4/N1keeidFaKfs/PheJYw8r1z24Y87TU/ySf+5MccMKVRVvTbrWT1+zaokDNzpCexBJ8MaRI7KtXEVPcnA50BK2jTtURqIcVZwMnC+MtG2gdtIfU9Ongltq1px4g783rR6wCB6VgM/sjgnrV+vh4jykBWSqCUMFCOXYOxSJ1w+PYNU9wua3m2g9YwGCzUgUtUz4lO4Q6/yLSNzWbaZhEDCXJtnm589sfxuaI4OOL+adfma2kPYTQy+Z7UcTCD5MQ0qxTk7xLFVlYlNoa5e/DFrhlKrr2TaCizPbeQzTWbYXaXr2I5eMtsy5kvXcfNawgMLqmHOKeX61kG55cRLhx5ZWJI7UOaP0taGATQ9yFDo8wC0raV5elEOX4NPOgbjdjippi5aniLpFKb053PgzX4pg5ky8FuQMykDZABKtMGIAPTllYM42NRk4879Ohw0OqDlQKyvX17TaMiitv4MkZ2lvRMljVR3GSC9rpauVPYNb0M24yN9S7NAzAxU7jNFx5lPLsn8RpUTzPjTsm21TkaWQctR9wY+yoLOq3XiAMrhTwAtllm69YaYqY55MritbxZBjo5KtjIVIk/YtiGH857T9EGqRr7VDbkDCdoHjCMHbTbuYAKQhMRpNtbe+KEkIrQ2XzwC2S8nrWlqi0lAk0uEyPblKfdMluemKhCyVRPyIuETHTmuRpXXH7JhfFvoNOq69qcWP+g4LBalAo4C1CiyH6R0op8EBoONOK1rkdCkLtrTBmR0bil2Hi6Oq74KGbfy98nQwKPvVXid97xZWNmqV2qF/RTt7Mciw9G57kz7CdoNITaFZL1gupCX24JZttHSzmGQR1P+ab6LTpOiEodmlmSI7VbjGgy+rrv2CeNs2BBc1baODo5FKULfSRZVg5roK52Rgyg07+IdZmVOD6oOlFXXC7ruQBz1UZVJdge6+CC8pg0qlsmPYXWsa/NyWC4TsSN4tFtZjGs40+TEpzkFTt/2AobeQmRqhBboztQfBQvonpNCsv3R46jBVwbSNPpb6A29YN9FMC9ovoFkrkkZnN1ZAhhUpk8o9Q4IGXmCOql3FEp091WrPlrmc2NWT1Q1cmvc9bpwNP+FHT5ayFlrl0+PWcBHR5okvXa0yeoFoyQaTSkbQt1Da0825w40xpTYYdITT46B1SeuQQ9G8XmIt0nygDXTAuZG6QwEU2Tb1tn30ddvTe2WK2VI3U8qdWYBAjh7mevDJtOnbG1l+4mP0xENVKLLVToc03cTVaZaxEdNCDAG1uj7TQ+5wCsHft1+rSqKWobzZ3WzQjYjm1o3EoLZSrxFqaQb9+RpWt04hE/pgusgmby8WgZBV2tArtWsrN6kBOtR0OoOPFQ5n/jtiCnuSK9+mPGm6iSTKM3v7rJu9pWRZKvVaNuh3Rl/156tJ5dMwh2i9afrI9+a9XNyveTRvZQYwGWLdC2WIjnWGvjMjJqeYYzHyXeKNzDpHV9H8tgk83LpXPUrlLZmHtWPtgVwr3ZP+Qdrypt7rIzXVcuu/tmSB7zAuQFjEfOXXZNBQ3OrTdh2i54+c3lWgfElMz50Pd2EQ9LDfo6ex/L4mW8wGRsY4uuhqZ33eXpzRCUV9WZtbjPrUAzDf7m68zpG1EcxiATAv2o8bW3zuwBBTU7hrrEN1YQK0VT6Ims+4r86fPbpMDF44nCtWh7rRVxml2OqJYeg9WfduqWsynRpVseF3wIzs8GvEwwDkw3t0J2Z1x1p9GRwDB+cZ1PwYM4/97NpddjdbkndLfyHIHJmNdTVRqdGhtjFRKuxmCpt8ehRYjKOemaMI7OlxHLptZxwAl3Pr+VybsW9isFvZ64rKt/jQCM75XcZ8MWJy5B20Hjj7LMFaoHN3Rup90zUDrd9Nlf4u8NphhWsk1hrYFDxuy1Km9+qWbWgg3HkGbRL+nPWmH+lnhS1XTjXHMg+7XNdpXxeKBmsRsZ0vqcajB85+m1pLOAlWDBMfJlehzB7FAmqoRbmnUJLQ4BZqPcptRRv9hvpuMF26ETyTSxtrLbKYSbD1O0ZYz70Hj4pfXBcTozMqp55jK9vtA9om+FuQ2LtfrL+tvQZ4Oa6WHq5Kd+DFBuGOIentIypZlcKwBHX8zd6Rt6SG2UaeoDPuLFs9qCXjHrCzQCX39xzuW2O1W89Mbikc2DU7x6awHrMljhYEknb+pc3XKjEh6CXhe6Ggmntl/NwEcaO50sRd71W2O7mkIzRW07UCE9TNdfUAWYKNvSWaTxKBOGgqDDVFrs0thym9VDxh5v6LZgbkOiojs4NgytyhcI2w5Y8TqrqVV9tbRIl2oc95wzCK3sPk5Aqr/h9OC5CRpOQbVrUE9cUxNYF3ePzfqAwZjZrI788GBoy37lrZ9MEiWBIy+4uhYBhJZTdae5xXBHNm2dMNq2RtjxRpu0VHYKxulKNiuFiW/Gy5OX9atXINbVOoYGem2MT6Eh50tMZk2nHCxo4SIJ1X7vN7zaMhHEvdZ0oy66PiQ9PtjdtCgdHm7d26IlH4zILjYhPYGrd+3Wug06oyQX5+AC79tmf21esU5riubjlB+3nNXsd03xE+tDhQGr/O1TPqdNrI22hKLSW9/GtC4/tCRLHtmFr8ynWpXna5weHRqPa3NlCT4RauanDWbIMzQI0ftMeIBvoncFDTTS2/45i8ryfp96dJrpRwr2lAHMfcyyu3mY/PWiG2LAd0Zli1R6ZDYpqOV9wZKzrkoiRsdK6nPsA+mczX6Ya6bGD6G2MtW6fj7wOxnres2GZzWiwzRUi3TLIanZqmIBs69EMxrFt0i/o4YNHN2xHdC2USbk3I2VxMHiJDLwza/1Su/M3JOqt0nMGw7Opg2sOPTV9rraN8bT8Q6ozwehlpJtM9d0ybTvc4im02OEyptMOFMyL6tNpnJJQwUMjD4c/jHjxBWE0eGf+DwToY50doHFDVY3Etu20ykN3q+s8yu20MkmE62ocx84Fxs/tpjW9XLqdbcw56U0iMOntUUo44zeN5M+tPNtTkjBCVIpW8Vm8L4sZWhzakdFVoh1LkDUO/RGiD17B9w6+8Zzek7Ueyk5QDi9lUcnKNBjoNNpTnWgSDPlKPDPW07I7tmF1vh6jbTb2avzAQOdzNtM8qcLbTNXkqPhjl93IvZovsncTln61rFbIQ0bHHLBqVf12C9MjdqpCLt1pe2mL/aPtpxk1GLUycaZZo6rGDfXRqF1go0a1YbkK0GjBQB3CsqZ1PMAC7q4DRZjQmHdS2T9xK8hltjyQAtVuKp+Tgud24Mn6w9FRNb5PS1lbFQJLc0gyM4E+GH+weiaPo1PnooYyAyZBUc6MupnMeHIUKuyx2m+MKu85mUsOaxG3jy+4BRhnWvWgJSZea2QsMICZai9Zp0zqZNa8XpfTzZ6P9jZHof1NstAlhJM245Mk9Xi7kU3X4+P++t0JBZMa5BhesyN+334ld1p683yzHWhagzquXZL6sRW0a0mGuRIezjg2ueTDQZf6zPjOS5GRgIPVnGe4ddQy5dOm24rSDXyeN3M2IeHFS7rfDNcdUDRdrXmLDsgZZftqvNsVqE7BbjQtkqklnSW3ndIFk78Z9ISWwdUT4w0o4Nh6MifpXpLJBOWqtvwzGSaNx9u8Z8oN+QXTsi3pn3Sil+7Swvpfj+Z0Cfr091KcpCqCt4CbX43OrVUKMRHBpL6yYCVA/pSaP2V1+lGH6bRC5sywziXY04aq12jV/G22if4uLJ3OaCFZJZ5w6Xrjho16w3w8Kwbj9nCuTtQGTuPGXps0epRNAtQQDj49wRc6/5rJX9WxJx4MS8PsKR5kLsWjx9j7VPbdEgsk+HwLscyZTrLcmznQrN442AHCAM5b+3ajUUnHVXu5VaSKMmASpvZKQzAojlpS1SniTmlXcl7nUuJi7rM1TIUeyxzAcpYkswzYMY3jL5VgZtEqTrwg2Wfqic8QTBbnva7Y+sbwill68M3VpsB7It1j2iKOt4ZgcrV1E7XaCQVRkZwZ4Cx0TBmjrraY4WlpIlFF32mFhJ3SMgkbVqjNU+7s4GZjaOxixp6fwO1ml5H6thZ6Lqu57WY3HOKl4W9L6ktn+wtwUZzvrftO9f1M8mX6Qm9lU3zuGm0qKa2jmmFbFlxrj7PZrba/cvvpKTTF4OmrQsdIO7MqiY5/cU2pBpeQd48kJY9iJFK+AxlxjsDIPVrRsc9PhtRdCJ7mWMJzYUSkz0ml3BK9Qk4cqvPdlayMQSxHu+0UAy8PpGEYk8TQ11ShdS45r2bQ2eN9Js/RWdFHGpMWcC05+YrINw0emLkoQIagAu9q1NVSpaDigdO0ofFFM2FpqqKNYhxU3R7KSsG1eQ0KejhadS6w9vWvSIy5KaFMLb1D9bs2tw/JPRgz4CcMzqlvxLeJZnOYaPUEldb/IO+FjCzutoCr7/X720wJjq23EwNkYZu1bbAEssc6BnLPLVU/kOEBNtObig9v+4gf5nVbSnvVZQ96EBuyzIDxiUsecTXWcsrvj9ucvhUyA2pB56fgGt/x4NpraMUe+1+3m9m90oT9JvMOdtO+xLgVgd1/jmyx5bNOsmQzT2b1YiaPprB8su8UG/QvMno1bs56x1sqruTfOJuSZCKcQ/ZgcU/8mRH7sXZEDqH9PlwBfZxkab/sSf18hjXE29QCn5RdHToAH2GwzBUpn9Gg0kwuMwbJEtTM3AZFM6x7bToJNFtpH6DhEycIQ8eVQakv+ZYGrcHsdSS3VpLeu/SQ3bTrzC4uRXjFTnivOPk010smULJ2DJwo48OCxggbaTrP1tSGx7XtSqE1Jw7e4aWPuv1LOSBgSdKjQbJ1zW6G7LW9t1rW0KG80WLax5db069jU2oTrq40+Y6DX1o2fY6mXr+LwAM40cxGNjnnEaKep1szlq/7jOY1v+fLQZf7Yq7fb5sGsJBlDDA5jrm5NxD2Fj8JE2pmS9MdT1Ys+80YunIhGcFY7KHaQMcROCQpjImtzJu/ahkTrthxmGtMDM5YlvUzWpaIa/Z79VSLYG8JMka+j7fxoTb9qNm9+nCLCwlSTmPXwO0wbzoGagDZpevqXxPW3+y6stW7EPXP41PiI7PpyJskD+3mM5mrVhewUZUyRiWhp7bKhRNgtF0v3oVZ9VE2Frq2yjceIOPzbaJsr81fPOiYxi1OxjT21jaHOdY13K+8ZFs1srlWJsuPTVKmqxjbOHJgGZl0cd+td+KphOW4mwp7r+N0cbt3ibcQaXDZNjm45g9BAVLMo5I6d+G1jI7E61P+p7bMx0sbHU3RZMz4zaLNjLqqEHUbutf+FGat53V6mG9A7v8KwonFZ+r4mdQ9eF70y+w384Urp1Ou63CusfHt3y0knq0SaRXp4Oc//xnRs10w1yFDX2uwMW8wCW/AzFS3XZctB26ImpCdjtUzCe6FN1uY2NAjD6Ccv/15YmxqK1ReGOR6f9Vhx3CqZC11srG9wE6AuqjY1F54zPc7ixuZOnxdrq2z6TaaHSOeagybOlHuFmPhyP4bM/vFmLTa/BpxhM95a39btouPbbakXkDm2Yvadz0Clmf3oznurmEI0Ebg0Gfy+HIaz8kWWJ0q/kWJbN7T9kLbI5ZGS3G8ULL8D/j3MYx7Vs/4MT45wAjiYZhogqWw7xK00H2HYVPohjdkjyEQs5ot3bh2n+PeMlKqO00ndxmin7Ui3sOLLMvskydXyZ+ZK3rIMpPuXJopX8oqxxGGeMc7mzpLFCBjJPXC71otdiTWmXW7s2oFBLgcXa8bQ/matrAQScLMNHPHykToBdNDimkJgALpHjWL3immZh1bTIoSTV2aAbMNdpwF4krQ1Wv/oNIPmAOrFq9hNDU3loJxL7CbEz0HwWYNMm7LviVzBEFYdMDkBSGPRURj2oycMHROzFZVojPXBuYO50quZiLtuY5sBm0UDha4a94WzsmHwZeejejVs4nVIlWw9c4Y++UXTirvJIpHQWzNN84ZyybVnnRUoOKV36XijPRI7rBbFsL/TNaZ79siFNv7fIjg0Wk2BePwAHcbV/cfXkbc7uvz7roAaLuFA0qkcfpBuweelpJ0rwdTZjdX2vZv2kgOKyrPcuEUayoNrVCaJPUiUswERGpjSzvXlY1OX3/7dbMGKBw1gTgXQebtOU8NW7TKKS2V+b7107tMd4DHN2679PyTiaNLVF7alaCa6JfR57CkCUuRK5/W754xP+rWN6ctJw2T6GD1O5RlwQ6FeVzSe4IWWEnB3gXG2hgBfYTpahYBwzXs5lnC+/Dczr3jm60Xqsh6R0rGR/r4OOy9PYsjBwNmN9fEYZMRNHnrTQdo86M+LXS6fr3sOCPxcM7DuLQa7zLh4PIsDM27imjTEnnONERP6fx5b/4np/TEmp2f05HacOy4L+m4K5y1rQodvVZ1CL72Zti06kYDK8cY1YdzLnWk9veVfibMUOlMxIOc492z1SGm67AnLojayYNK/rykK96XW6KHrq2o0qlBlz5UWbWkgdrb7HrClZ8lt+su0mfLfE+1wKqe77HNAFNGfEtabrmWrobXkUssA5Oq3edJm7SY2RVdqncfl4Fh4fTlo/Ia/1GDs0sxGiJqJVuMGz5wYWkaNPNCUMwMtQouwL454lM6N2wK9fVpucz0OSYwwnkKmTfjdKuWwm3yEG2/ja+5wePX6RvkNzv0H6HCqHsRfw/8GVuq0AhnjLyIQzLxDEYjUbu0ZoaSRbkKxuHMweEzBrpGfE3N6f6p7npjBOYlpv82lmKyGeFeB86gyaF6bXNOCj1+4VIhogYGXZdNn4Mr8mUexznG3hbnwVPG/5jlqHraIb7YPCcYivktaFbT+GVMfAkb5hRzUi6Xtw90jGvkffvhREy1+tP1RqySpvI3c9gSN2xoKnhZTWnpInvRIPmHSdCH2wo8QAz3v61j0wursfyVcJzt6OACbXfVqLPQKrlEKt4PaxBw1H44RUrbhUqs8bctukuvwlYnAO0Fr1Q8zUekGB40OdblxVRaTK9xsV3kAv1BY8oJEeU487KtpYedM57uINIZaZrzh1AWzMDHnOSzBO6m2NOb7i2n1O3xNfLgKKTXETGwROgGiiVzSYCdlVZ6QmZKmAUrLf8e4IfyG6qTcRiNLcp1LoeR/QNnqKwbIfl2mc8iIRHLWe9G6T1fttLtOoZIbfXQ4xUu8sJUergI4ifq9DNpBNxeCGxBWDs4hic2pqeI2dANhw+eB3A2tsNicE01DZjfCThYPY1lj5Rwv77xPq8Jx2oZ5KNQn3Qxl1+P77uBcz3RYVbSfRNDOdQbqMWMv7BZ5k1KZTzUjT5rJ+sqdbLRX87SePaQwTe5ha5M4Sxm9FOoj3q1TaDRGaHblBfk8KOolSmshuRJPWmULg7iIi3r7j1fv+iT4wB6W6uJEa0Twm1qNmpLaEmfUcxoYWEPaYoVINLeZtu64dfXEVDMDIOBmzUlvYE/0nw57fi3DSjeQyTWsbQadlZ5Ac2AmHgbGp2dEQzz1Wn6c6sZ77vHEY8UPOi+NNJ7JmD+q3fmBkGD3nENmdM3faz73GDpkC/VvukmT1d3Bo4Q+WjWVZvtNYjUzsBGB1aw7UWB/2tdE+xc4Ra+b3MW2tTKMPbmM4C8TmnrU8tPVeXNifXWUbIzBdw/ZBVjNcafBnueCdFa9uJgjFhtOoHw7VvSfGFxV3U/bSFEPzWZQAzIxp9ftRolnU9wC0N1yCsfai0jLP7tlrLrJmm+n/E2sAcrZFRsn3ElUjPNcipsA+ht1X8zxfhlqgyFOZfB46LfvHFM8RVrPsz/T7eq78FkOFPzJ6reSYuThhSvS8Rf+xQil81NNWtDq6knbl7SyWNLdKTUfN/MawVpo3OswGFkvD0aN+Mg/yM6HMvCyNR/6Oge3lG342oBSyjDZ8IzfCuAiMh/ukIjPxjZg1bZ9aG19VVOu9HLX63mhNN4h3zrUYSS8GPmgZxxyGqB08ixGWiRwN5j4buzfVmvyjArNtXe1YmaLptdU2FbPBouiFwqSLG7HCs3ea+E545rJOJUKPYwcNKmrFXcX9rNzyCRW+saXBmqNU63Bmx+x9o6+rsobVjybWgpv8DxrhnINY/wVDgB+UHqwoJQnWFBr0wmzBG57du3eosYFgDjbUDwzwzVyRpeInhlBZcCGeVxy7G0w4jLsTVroG3AlX0dOORU8odtkm3L4j/uSWS+KgQNR058FpSq5XxVZnWLCTTrUjbWidLYI6Rhm+Sniaj04G22T122tb63aIhgXKznZ6IYHjPBSGo1ndQlXKghOMArGr1TqLSZGQFdsuPZBerSw+tB4zd02J/Tm1Zq/9Jv1gGHKU9ofuO0Za1KM46WIfxm2+g/hpj/G0hrIr6uzYs58Sj/OSvqgYsOZDrlTLmQ2ljw1s6PucMBxUcc3oljHHJH7nXe0Tf6dQPINXclfVztVSAMkpW3O9TTntwS0nHp5+nVZDyV6wL9nUDuxSHnFj0YlihRlok68FmxBVJY8+SGYU7PadfxJOw+FzOMtdDK9zDbJr4EMYFGwd8jCpTHI2vdmQfqx97lPMTd6YkZ5vThab2AhV9sLtlJ1FzX+3qfmzd9qO69rcul6jE09oQDIRh1IcMCCpat0y0/tGY0xembU87w6fyp8fpUxNwWCMgRrqjGtbNIMHj7QmTRGiu7egziTLaHLfaB0w3FkT1Xoz8JuwVRTxkO3JnRqDCS2libC4Mb/4xjL4lvTgzuEx3B9ZuFWtMLnwQTV3GGc3Hz/owFIwpm9RCDl29heypOsB7yVIYnW8kSBqP88NPXmQz6yP546Q9pV8J5aIztGfyL44i6Q1dh22nzugjN1Y7F8isyw+SgrW12qqrIJ3GP38spG8qtUpLaPI3EfpZVLPGhMeXRWQ8sUJzJb1hn4jm2Ry5j0y270kFlEss+26CIXA8M5I8OF9OL1bsuxIwZFIOUSB3VwYLMze8ZoUzV/6SX9Nm1YJPc1O6dDDEkVRfNJk24QumlJO1l7O1tgwWznD3zjMcHVTFh+crojOpy3rLB01RO0MXQTbmU4rDLVSnNB/m5u3fmwXFgeiePPYKeA5mvfCXxtyHStz4Y60zF1J2E/F01y4NGk7A866oldYo4fxui7OJqahlD6g6hZTIChlZCOdjXz5Mr8NUZMruFnmwuhf5U5d7wOer02/PbcLXhDMBRmqx+ToDFXzgWczS16lZNTLxgZQoUOjjL2mlYyLaAa29u8ijGQUbxOi7HW1rFGeLdH3mlmxuZRkDEcMVOpzCiS7lLirrRnBLSA9mG/zTI49uwomYHnEcJb+UX88+dkDuO7p4pClHgee0BlsWpZYywSE1+6Be6tHa2C/qXWtRJMY/TBUWpWkna7TDwoRh4NUlJwRnpmyNzQ8Mb4SZzwmidl5VHATRvQSs9YmHemlMZ6AnZP/mOKbA1YQa86QDLCa674UxlpapHYA8MW2HJMgbDr9W2BKHQq0kmZf6fZA+Rt9JGA7NQ9TCSi5TF3sfBiwnnrFJGBIWTThuKHshIwh+n/4Ge65oYdev0/aaxnVop90LnJKCcks5lQW2AhnEEyblhiJrSGRs3a3h7EwT8zBBODqsv4+J2uTjkFLNO5xfJxim+YND07hNQzroXWweStObs8odNqFS4K9qtq/LF4VmvzJYCFp38egzDFtN0Rno/uUmU/us9gZnW6ygObrF2NL4fp6+vhc/9TMlsQAOZDr829B8mIjeg8wdPUytz5By6p1D5mzPuAeSTy4X48+a99O7UejEwURNtbi6WqioceLy6vXCdcVN7TkNmCePBNi2hZZi93RZr0zVtb3dcSjTa2cf41h6asbihJpscHDqlkpxw4cbjdirNdFigmGUVWgcjLb9HyvIlIWdbFXt6j37CHE4DvZlVAZ/GgW5o2Kr7blShUutS8njWh+krpiZshT0t1C/y5XKRjbPabUlgNYdu95tcmzt7ww4Pol8MHiuFMPeI+YSNvMG2rpjxsVW9rNl+WTPN9T2DsMgaFCN7EX0w4nTF9OcvCAk2dU+S9mV7vUQSVQrMBIG93rHckwoaqUp4qtD66NsZ6zfltc5Mh50baKW+Z72E7Sup02ul31tgCAS1JpUvLBoKWzTsEJAS0V1iZclGA86CwRYnqsLUQFio2p4ma/DKpn40Nz/lpI9WwDNr4dx72UQv0P8ZQ/pyy8WeGdDD6g3TBJamGq9URZj8OS8lIsqKEJAZnebxvEIcNEXsD0bZRUESpkATwIObKHIEtrvFYN9dvelkK0dtNEGDFtTrsO9MGfl2q4Vq3O6TdaP5Gv4XUmPOwg4SGSeOVaFDUkRm52NlNrIlDjGp3Z6qvxTeKJVU3St1Dj5banPodnbAq6dqQ7CMQODKu4UIb851+TP9A9oFG+gtbzRnCzNlu2fG6jBGU0ExRNkQeoR4UGp9FkpWl+w9FluJwjT2wmK5GGEO/BXZu6UOjVESpmtOGUqZhWLqX9wucOjU6Wu6OCbaG2vhZqp2kOO1VUzJ4ZiMPj/k3DW7IVCAvTS17FvOQPo0OY2ONdgpjyYzY1M+pVI2R5E4nzUzEy/KhXiL01xA64QttdjR4qsR2r5d14S5lnc2TegSimOVkQLUAfL9at/p2FGB+ROY5fSm2H0/Kkh+nHGQFwyplrk+4Zp1QkdL9fWNLglLxGeMtdy77ZZsTPYns/Vy7KkRH8u5DzxbczFiahslLENFz7OlISYrzprRVJdOb2b0a/OzuWmDXpG0bNaYr1zaDWTQwoeHmc7UNIZQanR2JBVGrsmSb6Ka1qG/yxldXVtaK07JUwisFa5gDmNvp04I5eYBySu6vY9xNdiQ2tr3VaSxGjPr6cFzB0ODCHThzbyYLEg49Dk1M1I86IdQXwqSG7mNsDum8Zt07kW9JPV5aIDyCxh5jdKhjLJ0ePFvsmtN1bmHRYwZGj2Rmn5h008tj/p39Ndbp0Tw48Unx1dy3I+4baJswCka55SJqltHLEAM1wb0dT6TO1ADN7sPE35bnE1wcVJDsfNWMeo3ro/hWPJubuW14jpjwR8L6YiRrrv3s/MG65wUnH62iRaobCmMkimwp7Be0V+ZiPoXLbYJdRlWJLtU99ZzicTU1gO7xY6PMXLHFftqMW+n1u1QrJVLdJz3g+9N82GKHcWY2CcMoWpmKrytOHotypSNfrB8liaR8wpUNv+yUQBruBy8lqiV0s9ZARM50WhbelYlVgd2mln+Sc0wZV94j/nQwVveHaVSL1NOQxgkxFUrJs3EM8FTm89jiolKUr5DSaTOubtRB61HOj1Vj7EvbVZnOLWiDbbS4WjmbbMTt39JnGY5tHcr9NSMmbfNpjJnML+dJa5YlvRgJxF0HXNuypnHTAg7rykN3Q7X5yxrdY5zclJlyU2H/61X0yym+RTJCjqY1uHjnL9b9Qhd0Zhf8Vi/1Hh6UMDosG8nC509qPSokvqvjdH9aT9erYjjlgPSP0OGqnZJDM4z46a1jyqHEPQSGse9nCupSd+vwT3HVNKREpPNtKPLl+WPGdVfn7/gjdevU+1uCqoLwWqKGNeDZ+3btzp8qZiK78J8tTJNAIotOvUyuI9mA/DQwmdCk7zut4qqwEHULMoAZOfrX06Xs8bdXXNbGQ6FcTrHWzQ7zVbUaqHtZC2bybG7yWCNKvZFRfsgSlvzckhgVwd24+6SDNWHpoobK3PtihvjLkdaquk2iNC6mHfK5ysy6+Nab+ljxk2L5c3qwlOY/kby6FK1WrE3ZBMaih5nGDl29dYCxyzUAi1bpmNlsBw9o+DVcUexJK7uWBIz0tF2L7D8QfUrJjO36FKIw2Pp8zQusOxOz3UKfsOVRvCBr50fAmPYjlKlDsrOzZvNPnZCQzwz4lTtPn15ETBDgRlapHB7o0SBvW9jrZMScSe0CVYEZnHWWq3QvJdguIOFCGZQSX9OeO9V82usJN/RPdKaGTaoP3Hm+TaoyKu4jdtffW3vrDf/fmtuztnHN8qi1EDnJjWRY+K+JblVt1EGrLYiipvBEyEYOyyNVHODZqyfuiN+2FvQN8kGJAIPexWk0oRWVpMqEVnIIahFZr0OLhU06Mp97DXK3Ph8LKJmMmNOpFYZtCKYuFIPUrvW1cFqvSVxiQZIgJvMxEzUcUSJj5RZmdI6jD4QslLWNVJx6bVd/5HWvhm6Vy44nVHzHFjvba8q/oFDJczXFZNLYRkgzR+/qeBJ5y4hb9XPd+LbGllmX2PzRnlYzaIW+kXWZOTWjxUPWUq9IzOhrS5Dvfvz20P399rKSdEdgvx1h62Mrr1E7t6Z9u3EusJtkgzyHqMJNlvuetwhAqcEJqFK6acGVAemydF52UIp2QI2A6zhima3/U0gQYc0kTEWtcBNmmWR4nQdP23vWOlh1ZKVeYZ2owUsy2xQ5y/CA8RTScsgFr3HrQobt5qnXmrXSp17jHJsYcaz8ndRhcfw2p1qxPUopEBR6Rf5C03XUGdxuMEGbW8yzQmi5vdrLqnDoODrh7ylFWggtRVLlhpscL12FDT4OiG+ugLpBg1Vm5BCywUBScDdEafk1prNb1XcqU+NGer4gensxydZ9mD3+m1qTOXdiLRuSpUGjMy/WFcCgIiUwTxdmFEgC1CGHtzHhzqBlsLO4uKNymeSeInMrSgwpj3GtKskPByCc/GRbl4L+ua3z1HoWU32mlWcIhNrhaWd0Mo28PmrGtdALskg6OF6eoOL9Y32jrtIw2dkditfse4UyiBcaPLUZP6SdiJHtHQ60MgWtZJ3cEJjzyeBtkGspTswSOm0axPMfNW3dSpmqXlI0HgPYFbywu94/cj7m0E3cUmkxGHKG7/EuOtqrrM6FqOUth9GhlPF8emmgcmbHSHdo6WQ+IqISSQVB73neKdEfpRAhujvU71Mdjrq90pB2BnbJmRqAIdrf7ZTSoKWiq/Gw3Yf/x6cNT2NPw1/mHZklTf6zxclC3yp8xFwTedlb3bPlo4J17KSxqJTMcRmmiv2S1yQcb82fuHI6vrLcw9ubsf0/bpet7MHqfsn01iWOudQKtWA3ITDshv3r3n5erRyO8/HWF+WeOoWWM9yjZh6zH+25ZZC4qdjmoyTQ6ZrcfUiEUGKwOE50xmAPZ/5dFznggzscUZbV0+jau4Gu/ee+w2IqXJAtJle1PyyrmpUDvkhOdo8+ST2wK47M473pY9Gb/GbcWpNAvEti+qIjLq0tdOzaZwXfNnneU08ybm9NyNmQ7LP58cHm08yZLITnN2b5A498WoRLEMUrfLr9DXQu4oLhzzSjXounDNuNb4xo3deDO0K/pDqqYPjcDSsnOvjCtxqmIbD63jVeq+nlQa7TRYzu0cee6rGjCwHZ02OcV4Cut1R1grXRNVl9wxtAEkFMylDfSa2ZduQuttfphY9tQRrUfWKge86w3ebsWDCAO2o/FzyVCI2J/1zTtJJx7f3OBDoMh0AdYoajMAuS53IXZdVyIHhatRShcmN9dHRPVRXztYmGkLM11BxqmhOhUJNL6aJwa/NOeG4xFpV3Fx/JZPAtWxapS4o83d3LTujpSUt2d6Edi97uvEasHGkciy5keb9zdYztcEwhY41hSpXhz+sz98ik0Lgn4wxLkj1Fxk2R6f/Jp920IXMUIzu+y58xgq+wBNr/GaR3aAazCdJg3zOdslqsatEBD63IU+kBvQyg216K1N143HMtaVKq3dV5ZlmIp5Psc+O3kkWIRxOK11bZlbMZgBNTp/v6VPwvHM81wRag7/l4QZ8no4k6FJB+SbMcbvccMdeVxc6/85x/mrFOp9UyYLrzBMF5G1b43zTlpGrvWV01CEBOAputjAczOvfWnHOTwD6cO9SgVr37Wljp/GzyY2RcLR11iJq1ulFRvT43mvwbTR4YQmylu7Njst4tKRbDn4xffqNq2mbsI9myiLD5OlevucBlA5nmKVQXysCmehowQEXdeiVHBPBq21HqRMxRlX/m0H3GckXFQVdJhMn4HOi8XUV2ZOlaBoBYNTtWg/y4SNyhXVcTvJSKJraJ8bmqRxbTBK5aQIYIGVJf6BAW799dsqcHKtC5H4TD9CluIyknPeQH2Fz21lTYgZXZKyXPde+r2bqrDTWvmbErZY3ZKkoLgVowDdxxSrYzhtbVytxLYN+CA5WXXXF6NrvRLpTUd2s0DloTdfiNVL/Vlg1DuymF1sAQsl0QHWMbDPfCMDMJC97IHztr9rILnOA6RPB35q0/vu1iy20lBzi7gxJlva4bjyOq39OfR7bqRzM/TA7styxo5qtki3elhCc7wfu2exrp5LysA910qQv7uRrgzc37ymiScJoxTfwNrIvRXjXgoH1AWCIXFMPcm2t863szHseNvGbCoZrhyflBamjL1CNxZdETnWLNL6A3nIKo+e+iPWlug3eqtZHBNd4QFYXp6YXT+42y/0KH1e49J7Dde0x9H22akSjdbj69nnVvBv+XJ9vVRVKPd++T+k/wS6wPttGy+segFCP3FTNT/wLAnZVXNZLD1zh3nxq5zuh7q8Isr5DCL+3dDhPCO1cYcuHEi14Kc/YIVBytxok2q8bl9qEolhfrRQsIBH5GylHhSfRyHeRTbSGTajIrPi5pAuy3mer/w9EbapKuszKGXcQ9Z8V0FpWSjsgZ+hvq82U90lOrN3NKcPYuAhokPgXedqKeZ7NCYvOzuDR/jcATvI/qYVtMH54O83ehWq5LP8ES49fRxLFTFKOkel2+MZXz8RXdJwmwkZko1qIJ6D4sntFxlK2wnYcwOX4bYML+7OcBcjgehDTqOQkbld0QB96684DfDIwde70BjSYNcbGh2ThKerbUN006HyZd+chBGZ1Yq1w5ysqes996m+BEU0RI/FXYrbPQZQbe7mMWJ3pm5NwNNphtkNLBqgderUS5ZnydmomwCh8uFXs7oIp1SHrn8dwM2iW/p62NgjlxjbUXtz22jajkxJyHE2XPNJA5jHEpUTfWAdEJYVxa+NVk54wpbsyIxrsHbabaYmbtg1kxQ87x0G5/C0mONbvsyqIalRzqYkKsT+DmXOGtztmPPyRG3WaHcczorLcu7vuWYhGUNSqcPjRQpxRFulAuH7ZUR0E4VCQC3orlOmrbHrzfLRfuJNbQgQZC8oPzqp9aVOTo+DLL3cFxLcq4lKsR6+IeeusRsnp32dmKSKmcD9NI1vwR5Ox6X5xq8mWt/eHLyDfqS3DykBKqqTZ3sLCwYU6v047rZRM5luOILbXhYgCNyONEkTo8xAUItpCfpabcm0eg8UWmIUZ/anax23GRESt6WJWwHs+n1gcuuMk6EYqXfRstqqqjTDvXF4PhQrIhFVDG0dluAosIHYVPNNDFUC03LLhcuO7PWqYKIyTjz++rBbbfM8Zakx9tGl1uUsAKRXc0JPUZytN1RkaIxLUQUfyx843CHz5xXuXesjog2yDFGUmjX8xZdm7+ntQeyYRV0bsgQGTtHeQMx7Hp6DMolaMZh7F7TGRvVRzuvoLrLW9lhbQ8c5tkXraPHOlLuUzXuk5C2k1800eHbJt/P9+/nCABhUHp4MU2JyRIWFN6mqnthhL7+6+0yk4lQhC0xei/ordi4QdyibFnvnCk+mToxsibnNT8ljtpZ6YnbLYxC41ZbKgrFqR3OHQ/iVwk7qwobg1m+ZLARAf56aFz6Qazu+V8PIjpmS4k1vbYMA9t19Bwo062aDivaJMTliwox62jaCBsI/QgbrJNLOZm6UZglUTvix7iOa2z30jDRzHoXcmKzndnPL7Jb2Xxx3DtrDMteDb1HqiHGDdpj70RRvKc0YL4DErG0Z3cz42Oot5O48jLq4zKAA2Ixec62A52CmNeLupprUfZRNzpfvYjibXUZF1fQAVpeQMsflFldjIBlZfLgGLxD05jNtzKKsD7kexFXfv9tUNr6kLpuVe6vHuXcpJ0xgXYSSqU61gHdl2mAYbQPq4a1yzlBqy+LTjNYwwcF8C1a7axKQ9JZmRAxp1N7kNp96fcayfU3oAfH1MhZyaEm5cgvInX+fXuKZdnynzpgtbckmT12TngkYdknnRfMKuURshbU5oY5Ft6Jmlwy+dVhIqqClaRRsNcF+nY0/AUz60txVuizet5tv4zhtb2hMAaO6+coc+0K3LBtswLLcUZ8z8oy5wP3VXA8q1r+sVWHNCh6em/WhRg3nx2VUfTtOnjiP03y+rxAvEEZmF9TKuyHnRJNSVHIOEEk7D1puf0043OvasNFLqeOGM7umE0n89WjfJtzF43snBx6OTeWptZ31TpbNXDSnZk6tHwrZjHyMsG3YMegdDHfda1tciKsHFRuGtW6K06k0rvKBywUbBpsW8WX5je/fgqnu94wnX6oa1Dnw8cbuxkypplcjrLQdqTi1SedDRz2QHeOsQ46uK4mpxcRxrSTaK874AtcDJoE3eAZ0fFnN2tNf6iIAqr0XHR3JEnNFnBdFS0fJ2s0i7sdk5JnKZWVimyhpXufYK01FeZ6U5tFoynisYJpOQvqK1q/kTt2k7TOqE0PTEUpStnE6jh49DdiXBwNToRzb1m+3bTFLpRZExoB489796Ous3H6I6r8ITHF/W651x8XnZQZvdvogz2cdCZXe+QdZYXusdPtmVTzHrweleJiwkyDu2j9YjlmEhR3WHLQxpJyd6h2clz9lR4NXRp0QQbIlwFR0MBNWlx40IZkWXsjLap5mKh1NyowQfkdIpiW4UsN6Oh/Lyo0dQWXV9Vodbyd46ys9J04zMQ0Z5Hq9iHejqbnfs0xMwKWnEdfGTpV38k1wgVXUtXuMSracRBNg8sjncvez67p9ESrye3gbbI4URvvVqUmxrtNlAy7NLcfOCKbcaufCGK1Tk/ZExvVALh+0dmjqAyEvilDDm0eK+87WZb74hM2TH3mpc5yxQ5MxmM+uWYJx7PdlOjJ13Z4GmuGOgk+340SspkiYo3sq+aE+s+e3lsO0nLMUJ6MiWr/3ChRUrF3ZkWi/dpux37M+SOg7EqzMlpSTpOxPwOpBVpVCoaKNt9GPRVFB7LB7TYlvmjE9Dyzr+MMLVMfm39sFrm46TwYJG9s2dbgP6xeToUJsxbO+z0/PDWEfra9qKO9pU6r0LTlnY4sLkgVSSzaSFqDZwO7vRfzdYmI6LqF6yjpvHQTJquocbH+zm4Byji6W9u8LXj8n2qNxrD2IC/khr8wq2jPByrC15g/SkcRXwg0xnVGcD+DNdBTR3ZZB5y6fl6wyQT6sRc/BJvzO0fxZvmchUlOrzBfXol9vmGmV3iJK6J7TQkvcSdxmBHustdh5l/rKjJncHPXYw4WM2L2DTClxbmJIc5B65QyXEeYDHN7nitQtTQU20SPduPXKiMM/3a2mc6TX0RbZrT/WKVXkzNDPVQTHBZeVNDWCY+b9MNvWm7rB2RK2LUY+c/ZMdSWi8md2z1vk2TSfAmVV+3ltiob50QLQYAej/SbmlYidyJpF+6lYBkl3UNLn0HciDJoySn9s8dgZuVXh8L3k2GxfJ1wcUXxpgmn9KkKFrNdY347WGtOZ1xRtSEFL0286Liyrshza1wVfMm6ObaD5VN6aHgPIVsKsORA7dX1Tm/1JmPrW8o4d1zC+q1jPIr8166H8p9aJejFTsybbX3e7BoNXNGoDu2mehBZtGE2g3DtnTdgAzQNj+MKz07QcqwBmBTfDvpTAKuG1bIydLwWHsbDktZtnRwjk9hCl+2N84j+3nWRzoc1VqHEgBXGqt4PfFDyAf4Yetxg+gnE0o7iHkJ6aFkGDd1VYnqpu/ZrKJEzNRPqQ3e6ELFm+UiostAGXY91HD8/QiGOqnkJXvFI61GiNmiEzWbfQ+MS6bK3M9Q+ZTJC1eVfvNy16xac4PGOOq8aDZmToEJO/z78CWEUilJJfkyNs2G+ws78WOCfLqjmeUKVl4PD9vn9/My5GNpaatD7VTMLnG2TmLFEjgeczMwbgvS+R+R5Mtmjfj0ypO5BVNViGflrZ7foZmqcv7yaiyXGhUmiwwbf1JeWMTj6cIRbLbSS+bu5JA3rkOCE6lRiHLxw1Bx1r2FFjHOwOt/xrUYUqQfLvqa88/DhKztB4LqY4MZ5m3Jy+epT0xz4WpOf1K92aR668RgmIrqNhjmcb4EdqdEI2UyjGu2jNsLttpU1yioGJutXXiQ57O/9V57DVSthVtM5FpbrIJN4/N9RGW1y0lSvUHO0Pk505r5zewI7HsdmxbQ8SHlX8kn5JbfD5Nd07RgHqhRbDPGt/LEF/b8UpOdF5QnpP6qyGutqbC9wPB79u1FJZkzjIW6XTGxktHVf0JpaiPG6BNuNvMszOtC8gbVqo9RGBgI3JWdosWaXIlIrPGF+iX6JLVbNzdus6rBxvylVCfSHhHRiSxJuvQXAAGQECzSYX6iGfSezrnONUGStOwYq8inXtMiQsua4HsL1sQ50jidmFQbs9ZCfYUud7PQDdrmjXWA7jOv8dIwQ69Hjc1usH3drdiPDr2v6LGCr3hHOk+tCZTCZLM3n5sf6pwWmlKWUU2O1fmYCmxbT6+/MGxfQINiebCy9tVNLN2vHpl8kJF+bsSmchuDrZwAE7V/TgFY3a7+FTx7raFkftBKRO50/ddkt7U0m4mcsT0fhGrKywKRwZDYQGdJidNjUVx6p3DMPvCAMw5VzzDbY1cReBifMkKZmKBIpsUIZ0vseINkl1MylTNSKWX8smCpol9fqehFpIclOnms7jFL7pnjfqeaxJyUemKUJVDayrtHuMGJym48Hb/hxHEjGd0Wrc2JPZwMd2ROH4WyweoizvAo1vv1tlu8qup0eeTfQRO5XNTQeV5+zBsKXGNL0mGbm10dVNHC3N+jpu3QHaRTy7O2CrEgLqezCqwt6139LcuT2mlRkZbUY9jb0/ztcjkGS4qMe/m3MP51nK5kTQQxjzo8ai04RFVs9uYxg8M2HacgPyio5kHcXMGBXan+CXSsxbp6+0nrfxmcHKpVl1yP2OkGWNa5u73jWPlexMZh35ktBcQGrJS2B7lkIJETrugC6Nmrz7EX9gpLJ+aEdK1UJFVTqrlBmHxJ23llG1HD+WZbYhHSiWML3pufaEt61n9QtltjANa/65ds1Jj8TvSpwXmc19rpjCLLkdztCljzeYfT2WXsNsNcm0l9cTxuA6Mg7bAjdwFZ1OPFmLde8xOz58Jsfnax7nO0ucxFylNJM9NBjRphB9j7ftQb2np+HbtfmLbItVDf17ObbFELMzBW/UshPXgB43ZTkU9nt9aXDZhJsXN1LRjYPXM6yDUpgmZWSk2JvQGcGCsltVwHH2OvIWxHjnsJ6oWTOLvNZRgUpMVEYuY7uAjHeLKkVm3i3PZGx21V8ZcSy2Mw747OXYm1Cn25ZXpA4aTvK6Ol93pCKapj1wA06syKxtyeaK9dIttYa4t8NvF1J4KmMi0WgZl2I6Svne2qnqGQnapOlsfMoYNYpKMSGUTutABl9so3hliVT28CZBxStLDXcdK0I4CAKbiXzu80w6PGG1qHUOLMLSOnqiSFDhV4p07sI5NrU3TULz1u4nYhAWfoAovFoUamH8Fekwl0zZfXXK4FmGn+7pyHS58ifsdKQ+0ONcwDBZYhkrOvr5MeQWUn1Ff6tualgpr56zl624yqmlt6eC32regOba8FRcr7L2PjctRHfV6fgGZFbc45dXMSxn8fDXPAAk1Gr8qZGq9Ol3iFvWr9Zyc1y5NjwWm5Olc/ynu3PQ8bb6RCdP++ZAkfUvrbF0Te5XtnE1/kJMYco6kyLHXNwtB/qY087RahWsJytXZk2M6gxtCoN46XMjsFFmqmMigLguH2rQMTLDd9h0n7J/+nkXQnrUSgDpvuASp53zoaWZ5WV0bsOrpFi8wGSQL8MC2WDn8mrtCP44IzbAzzI2XhBTZeMnvZxSbroewdwXqLDkepjRpyW2a3sbqBMPmaQ2WWwgvehqNwKiM6R66Pu2dgjLxUVxWK+X4cbqqL5XNJwrPoL4MU5UXjsq9Rs5exZJvUT33FYf7d4SzjFKx1OhefOdP3KN7E1G5BojmxbGIOvx4tds6ZlNjB0tetrH0/D1j10iU11DUz649+kud/GvIHMEBT63Helq32YuMZJs7VjGIS86OBYR70jr7k0CR3KWItG9vb2gq1aN2bzJO5l/UmbmrMeS05lMkCQsVe7knsPTVpu766hpc/lpCj+6XeXGKVb7nfp8cfdmqwz61dcOZ5uPacrgQpLhIxbLbO41/vWUxCs+z0rrVAfhCcN4gMq+772+cC+Pi2lFIyKjaeR0cxWbl5CeY/tU2DW552DhQdjR0h7ehWGpMsnxZ0Ls5dKCs1gd/PVD0G9D1lB1Wfs2btlzp019P5oHLmuMDWonbWlGZWTaikC001OtQ7vBkBhLb9k5GzQLdO2fIIJRIsrIbFHT9bn+xuG8/2dJUrp46ASrV1GrLzYvWsH8M0Ni9TDi069E0tKvfXs0/Q4uWaA76hwzBlnYtsoNTrny8x92CJTWxuhrXIvslzj0kO2z/7e/Howhxt+W9R6Xe5UHK53dVCRzULE8W94ZVjXtS2ZWNxOSH2PdnXdJwXUoHpkBqeGkHwXa1jjZ6OksNSGpNsumoXatklGJtfO+qNS1VbMPE6UFSMMJpWhlstMLYU8z95o6gLWqh3fuLy8Hm6m128GrCp//pYFqzhxXnsbUWFnkJndUfhgoCkEcgSpt5RQUgPUXBr0iHkg3HnpmpYitcleODrEhH2GnQxx0+8pFdeCGZtQnt10Cz+Cmw3d7rLCYqAZ9PcdgFj1c0tWnbo33z7DDH1Td16i0lnRttNmnYvBrLG+1rBmPfZwuvuZ27nNKhpBC9KVeXbxPs0l9QT6HB9xc1zbdDVxNy5dZHvN5foYsDicXQfMlYD8S2SeixfD2Nhiny6QGH3j46D0abekWfmeVkp7kWGf3j/6XWvpVsIPEEEXgGqvhEHTAypYtNLutWKX7BPtnU/Grw23b0sXmBHzrpV5LdTKZtJOoeTl2+9Oetwj8/f1fSbKs/aHhKDgZfmpawAVa+MWz6PXruud9RXEFTRYrpUD6pMzxPDk4yvA7ZFZNc75ub8eampV9SeVrlN0WIZsUcUoN8hcn1Wsns2ETKbUsKLZ620waiaqvT/3qwi8LR0lvtePKbtZKNtpU3zCZGfCB9vAf78tJdWcsCRpBD+66vqa7jOyRnYEjqjhBbdLBGQbjyq4HHkjsDJcVW/fHZj10K2lOx1nTJEp28nBcNVzMT7lCCa/FTJPIBpSbeMmv4lYruCxDbU2p5S9PkLOk4M6gEzQq65c7qYswxwrJxNMLaWB/VZdpEPJFuWSTm2Z8zdBlyEei2Ll8Hhk86TRysvVk0cCN1zqa2ps1q+BG/BEzo2y3NMEB+s3eubERzOdoaY2rZENlyVZyNGjcdTkEK0o6Zu7LiS6ZSw2wGbPadTVJSQtbneDztBpRtd8qxdp3mtYn6fntZrpvbWK/eS0x9TSjUsTcZ2tPgMpHlY/0e2+9l9J0oUgienD3Zv1tfpI6xtXll90w1CXYzyXdDCk5/Vrq2MLLF2Tod3CTiRo9jeouiyTDoDPzwH+DrnQuPv511y6Gts826lfGqzBGSiSJAQlSBtK9OzDk/F7rh9JoUledqvKJQyZ3zgcHksXxYsjqbdmR0I+RiXAey27ENIcxmOtfG44mU4sOESlQkN0V17SS+OEXU8cRHk9y6JyGxybRk7viF3Oo6VZmv5+Efm08tgadqTy4Cabr/9zFnE0NjcT07DrTJCEC6uw+nLBYUfXGXrE5jysmakA780Se9woD7NldGyV1MJldTj68f/hFzLzrWuKZPIkdhr4w475ilL04h2Dy4b5rV5Kmb4Y2teNBHQqiinXGqyRYF48aLqGkqMtRXhZD2ZnzltippyypbThI5m5t6lIX6TBfGih08iaRc3Nw6N8qDQoD4vNAYdq3Qs3ZY0GdF66u6tMeTSEUPL9WT8T/V+hzHCW+fhKMf1p9F0DH29m0lQ2nQFIHd77BtkVuQMu9h0T+KpE6b06KRpl10XdxqbiG3V6YJ7jYqhxAjKWOR0f0fy5oL8VK6ZJ8qM4ztvW2LoaPGISF7jZevukIHVp3YEimq09JdMng034DsK4WuLtENjSMa2GnmuAZtak2Ly6cxfGsjkQd7Y0aeNM+swOxANqkHo3EIpdNETNLiuFT3R8O3qI4JtwMaGD7Yd67GKwdnaa1I9b90jTrFc7enScZ5R1nXo7XtNslkQxwgdosENYxVbIMpjuRQprEcQNhyKEbyT04xp4hU1YDbiR2EH2rtNp42cmHM3JilT37FVV3D9a2KMOzUXq65IFGHkQCpf6c4HbOE/NUdhO2OsNr3uYyTAmI5coOe2acDN4tazdvEtvrCyft50yGjVHJgoivFZXSHqZnYPj924pOSFWU1pRfS/qbHit7UG2qCqawQv2e8KE4kCJfelIgwGtYyQw9NZMgcRDmC28nljcI0NISW6IrCU+n/J9YObqzOcYXw3i0fWTkbCfpq+a2co50TNGAzFS6lRFtomviA2IJMmOzXYdbeOnA32ndXsdnWf2FTaknHnAmeWQWFGrYLJE5u4EY8qW3DIWyLmRwDYtw0a6cMcfyXZ1bHB+OKIbPWTfYW2bV2b1ae3JBsw1PVp5qon2X8h1vcmrKc1NI6TP0Z3p2dNVvaRvIwzkzJUvP86luL6vWixAi6VpeNwR7OdaysTDfmY4oWVLgM4L4sNdzxWIBnVvFcE/X8CFgE7tMtwncmKUbtZ2eG23DnfZ6t8UvLZZuNvelr3sib9+zCYmn6aBYv3RO7yNmX9r2ymEHjDoMpGMs+dX8RyHwhpXkfYxbeX/f0BrpCfNO2Thlhp5qa9AMD/DnxWnVERr32Kgb1aNSwJEfknV9r4wLcQFtL6ImRBljR54bCawFC4QWtYUeD+TOKOn7Py/waHSnKeaG+wl8+va10hFGsKabUjUFCu1I9X2IjLr3L0qi2RO4h9Vh9WyQnZDesZmBoAdGNrRSMvq9nlldUFT5ZbcPBXVPq8qYyejrOm8+7LHg79AOidNh98tOmIkpokk1ASuefnfXcvH+eYmsSHujxKZ7qlcLt/OWom0FzQyaOaG1su7ml+wYsqJJWU81ydqn0CbYZu884O3R4X3zePl2cWgRD/kolOYq1p6pYfDc7Ae/K83gfXR4s0jbonDXlRTqspKOsOtJbYabXyzWzmlwpW1Q5yeTdEwqt/E+pYwuE7cpAve8baujXH9hafAd7a5l3/NZ++j3rNyGnGSqYWDzCDZBBdenGquzGazvxgqPy3lidAKmHOI7vOr7G2Ur1FZ7rSevQ5xLBjrh0n97F08Yv65mLMi3vR2fWYmMdn27+GXiljs8kc3q93whjU0+SS5iDSZrdJu1lpLnaKpLLG9ZfiycbkNYTbcwf64fnRtY9SkZtC0C1zwh5bN0792j00wFK1rVqJehJsrDALrEnVagWGXsPdZNvQ1a4z4CvQc1g7K8TmQ6AgI0YBhOrW5xwt7pOD3+zquY3OYiXaZ5cRl2RWo+jZi/wsQxaSQteIBSkrCKhdee0oxNiSM7Ja1EwzgZkVtxA3ljL6SbJm4dF3Phl6yiTXfhL5njqN7YG5i55vtNbn6tIba9MyvvHVNzpoB4oU7lztfAo6M40sEZIgXnwtNRT64teqdj96vz77OPDRzjAtPRonkr9tVjoLCnhB5K2GjJTeo10GXOtPTBdFiTzKaltO0KT6bOk6KQB0ay2T035crW77IGNn9pcWc0d6QZ2oRQaef6gSW8wtH4egrt1AKGWxmZgumDQp6ZSJdzDCZytnebO150lnkyuXyB6aeyi7p63EzFAwagvuDJ4u/1rdh4z8yBpfq51BwUpzyQReHRdMCni9UP4W4rs8ZdjqGbZ13YqEZL3F/gjb82yn3JoVpE6dMHM1W0UxhW9xt6I0Tsp6iUCSN+6yvCPKFOS0hN/TOmRC+l+9+0t65qzLLd0mBC0kBG6QO0RDsp2LVqUqsTnUFG+XDBpWvqcHRb4RsNUeBterVFleXOvcHoxz5OGo8y5ygUiRzRCHBY9UA9vhxuOyf/Hx1qHsgzNQhaRQ3yOW+53pkFNY92qdOQK/d6XNCMsP4Ld9iXJANo0VrhwHM6w44jKxeG2uJ3eEWOQyctVxI84YlzSrDt9ogYN8LYj+tXEj0O0hQpcdAKXDmxGKfUZqALLA7iva2hN4M+drrTUKkgeI5w40MPpCjMpY5Nk5igSW0cazd6v2jG0OnmC9k8YV7K3I2RO65pR8YHB9HUOEwzcHP8ilJj/04rSdsUMNee4Vu8kx+7o03RgQTo2tsZdojKx5QHy6zvkl2e0YFPcs1e+zEHHUeTY4xwN3rMnbljV+giHHbZRJGk2Xfy2Y2/Nm5Cxhvm3HMGv/0JpabYh49epgtOPuFzoGJpxSfTaOVY3HPhLYwC9GGmKhEuA7uqaNoLkvu6VhelAjR5fb2LxtTYKBsQUBflYszfQsKuOVn6mS471C92iRAU9HwcDUJI8w92kQXW0JYayuL91BESI0GG8W7p9QAz2+f6Bza09G7ComOuuZoeTQUnNqFvRLZ+l4RpsXUW0Y4pstSD7XtBhBniGaRYEvrNEENcMwp6ro5v1BhbCxm9jZMde7wDu4QvO86w1KMeNddK+YMUPMey1oaZqwkBAbK+cBSwCoUK2rOt10W2b3CchVfHxlvHo8LxPFDaTBpg4kaO1W5DazuEmJEDJqXjxFvns11WiX0FnfJlhk4bOJXmlZoS5y+9u7Iz7Y2adazaniM/7dnCFQMk/BHUJXlLr8LNGvIS/CugSBtmyPr7jLVZMFYmiOnhJIDiXsSiiXJYlp5cKaEMzkTpztNZa2IWdXO0eLVM0XYPHtpUhJ5XUQCc8CxwRaa5KY6mlJHaolmR7ROtmqO0H2TQLralDjrcxJuGDVn+UZEnNHeNV3gvRlV5KLe0J/vYzQ+d5DI+3HHGGevNiXus8Gccq2cJNFGoJNGeWohUhQKayQ3FMizpeN/+JjQBZTF0rGYSH0UIRK0DD3bV3wbmxW3WziXtYGTfyvVX1xEOaNpCTVWsbRhkzYsXyTqGBmzvbulGRqc8bxQaRMYQ6bvf5rlvec43kfS1eMoGDFD+IYTdzvmCn0Wb7ud8uBzs5Ih8fJOQPMgYuVsFej1w667BuNCt5anPI8gdjFwEyTRU0e1o1V4scEuW5r4wixSL02T8ZNMrZnpecLbYWQHUsqG7azHw26amMwXhrgaYMF5InGmpps/M8JFXLKog/0eC8BDGgvnWt3XdYP29nQIzrU587zE7UfiANRAXAZr9jR5v8xGbsCpLiM2dN8fGOzbDHfBmvPuQ7oiZavITsNc1mg7b4uQVkBhbq+24lkhCMVPdOWknm9t/QB0o5txaVeN3Eu09WL1H+600zcWdkxsF8YVSNbEO8qTHJOULPQ2SZXX1XzjDjtd8k6nWyw+N5fMTYhtzTZ38RWpybhYrl0TNFDIjE4hWxGKGPmiotyA+UbrABE/GdPHno4Ld97hpHstYaV0HLFcVybMHmOZW9ZarSV4pe77THyuBZabgncwVuqxlBYVWNy4Op7jNHxfwFsJXavrKDK6u99aj4b2EyR763UM1v6HKCotcg47q+YWKiTmXRKiIhE1hSoNfhYM5zjmVbBtFu+VkmuHo6ghMGJ9y0nNJHjWjzbDGvstKtGu2fZV5g4atqHYFjaif28qdLd5kTBy6dYkPMZ1mqTfKK3m+nQ+/5c59mjdEavA64WQQ2hNO/S1LlR3jvDJ3VRgPz0Yd+KfoBl8e93lkilxtWZ8WyN2yLEx5hsQk3UJJM4XtHco0lqiofQph2WxN4pK/+BSQnJaYcsZw3OWvzjRd5mjZ/jc7MuwFMYYrmcFTqTap7XR6ox7VF7CtKNa+O85vtrzPoICk1TnDjGJ44sEeQ/BNgXr2nGdCmjwO3WGQjp16U3gwCavuk0yq42oE10HZ1latXsO32q7X2bXL3a0k4EdyS1Zy2m2bqEv1Ki6ROG2eWM1srG7VPoLGiWGiM9o5YLdetM8nqaH2Y/DM6l2h4WufzQzyMVRlRTd+ue/Q6vuVp7B1IRPQiLTe6AbtMLMZrg3UKVx3s8A+HARs9BmxhykzNpMmuJuFrPDB3f90dzpVcAaIeBAluqgE2XHXqzl0F1wvOHBOqkc+Q9w5Fm8z8dr2dezIKrVh4pF6b5EdLPDQk/IaWjlRp6+UyYypcxmpTJ8Q6q+oTu59lqhHWWS5nX/ev6RjZVWwmO8Bj6g/gIQMIaLUHIu0jaDQXjWHVt0WJYTF/1iAUFGo3VAvtgY0Nm5icMll52v7Lyo8iGxKjaS1rUT+J08jW4yLUMyR3ost8Rmo5hoPmqtqr2PpJZNkOJFVHJvjq30y7v3sNczbhx9Jk8PQ3YbTAGrDNA8GjKHEXhuNo3In5MWNt4tDFOzQdgZeLt/FA3SlHGoffOwzZNdI/Bke6ymWBbdtJiucX3PO34RajAOFOSvG2E/YGcPYaeJiU9ZTIspRyZlMItn608NkwtekDQVFkLUsH+YVmnv0dWfnExOf5fTC3ZffT9+mW1dF4nf68r3c6HaqTa2eCAz9/sY/2Dm2xcD7PajUzI5Nn9xrWykRbM4ANHdxvW1h7/qIpHAHMt2ab5Uy4+m7iMitkhJmMDBUyi3welYfKWQ6sKt/zZvTmzt9q31KZpZv08yt90FR7vfTHmO3omznsht9/AQ7q8ZEeb70MYAdp4JoH8+wSb0WJPhko6HxDpS9Ut8oe4hptWPs0DDlJeDHEOHe/OxPbMOv80kVL7K2gdev7TOM07iTYg1iIapm8Yj9qtsl5+a4I20qvb84TubKbGGQIDllmVidDzhhuBIXQZN9sWk1ySDd1nuEifiC6Ud80dBUbnFceQPNzO119xKq5tASjb8ttUYw/mEXkacTJGcfP29fvrIjJVWP1DOBdApp/2uDabDfmj7HGi9z+xhSeiEqJzTnbnskZxhcc4Mc02Bu7vlJ4nDS5DyjRwBa+wxRQ7Y/b+/W4wQrjNhrG0022Lv0q4OuHw4SRkM3X/vGYHcm6ZwZDE+vmjYybGUkCTSHDiX2rRQZayfGlmCnzQranyyvm+vqCLK1GGK1B/6TN2wyUUJDqDe72eS9458DzJthrbN2d3o8ANbam3KSn3Dn6R1zmVN60WYuWvuyqhQ0tur63U577d6W6AzfKfVqasNWfXySKp61JCALgasIA3MbCG8dGHuvAJfJH3oo1JwEweXjaPhxnwxj4dz6K8C4Gw8Z1NCl9HqeiZaDms0mMsc+Gbs0uuSlvkAy4VZQ8M2wA2k3vWyNpMH1sTaT3eZ9QivkWF4lLWWsu+9pceis/bM7V4jkuaqzn9gsPQys2cEyqimqQii8V8x3GaLuWqqOEmVObFn1M0QmUiasGt+5OwOdpc2IEikM7tfk0okGyAzchjiw5FB7X7q3ABmpY9pZ6LvzK+aV6yo8qFHSDbc2MLfVBual72Mnaukx/IBGi8xztVYBqTRmEINMB+mOtE6vhZiN4VEl/HV8RGN2sY1pBv2JWaYTzZo1DH9IrupOnn+NKttsh5J1Y47BDpI2NDIleZN/guMkynazWGJqo3ru77c/mtbtLMRjcrNS55unbRjWf/XX91sM5tCboLAq5m9hltUSkwdCZeh3tPMuJa27/e2NabrV9Jb9tTgG9TlirnmVVJvfPmnEtk5FN8U3QZuOQ3r7MO5yZUxSgptWukkQODSXSAMLyGms4/zfoT7KsKU1cSKTx+GZsK1W5wPHD3gNN3m2z/OoJgc40qnMU9it4SZtUcn9Di07NPxnTqGZsF/DojOPbWTJCKVxq87vhJnyj2GWRxr4TWEIbklmH3LQUjmFZrYzUW3srHmXJzZI8Xvdo+gEH9DLGTKg9cnAUOGxG00bmM4IN4304JoVyn3bU7I86Spuq05tFPVJGPrC7g675iGCSBlceUQ/XU/6OHrtsh0oHKkieDo06+7Rdax9FnC3DROuL1yUOb0+Dn66xqShGfqhbLuo4PQMoiW3yWu+w7jaf8X4e1TZBxOE8nDTq7suauXhRT5w62utQpBQvqygRFmTsV+WLhQzJrhvFNTKlXVscyNduyiloUK7R/JalOMsV6/UIyRHnvEzO13TV1lY5F/g/31mGMsFW034Lxum5jLUJ45j6baCNtjLBRZVBG42dSaiwCtOSri/Yuj3rHJ+tE/Lqd2nTqWPuDvYwGbRDVqWYWOe1g4tFn+yu5tY0cbk4Qtt+YGtPOm91QOiwcNYO/0lO5bR44qbb8fXiQa72y36GVt3HfQQyqcBQ0ozKYP2w9R32ufsbr18ZDATeQV7f/KXJSyCK7W0LGM97RRjR3zfp8BICmOTsa1Mm/4Q+8uh2OYU3FjwTy7uJ5K1cuSU/VR3l1ALEXuGOa3AJaMXMfDMmAn+0WJjjfcoSg7W2YWEYyqgFzRugPZogQLQQn44LBEO7ibcdtvZNys2YS50vzuBCbYmZXunR3+48wzH6m/5c5myT+8MNUWEWMxF1sCMsnOpSy3cAHpq1dNG8lWsNWCYgb84PnzThBZRmOy3kcZ33Yp7mKDGBxfA9IZOQQcI2YFIRdX1jgNOu8UzwNrZB79AdP7BoMtIj2toFLLV4whbQdauRvLx0bJGpbUgj5C30mALLI7/icnUC5FjlcsLas+3FGMzO8soQajiddX1BpjXleUI4MUea02H7VWM5aob46091i17w3NME50L4lXyX5XwXPV37qtVWsUTOivrvSsu+kVUDSbacVjBuxjPRzgTU2pGLYBETRoZcfiXVZyk4HCVfdTSPXv8UKC2Q4OasrO6zEQTELVjIez4a1f6MSTmVSLL9YzQnti2aaNNosG4ky6UXdvM1XP4tI9bwO9ebVJVurI23HrPOtei5CHpzVVseBvMfN2a0fnpTb3MISQHEI3XPZ2SXKN4L7T8vdds2Z20KrNkH60iHWNUXwyHvVk8hNyP6RFcu89or2ev9oOmN9kmZ0BmP2XA2p5mFUb1t4VlefLJ+QzG2vTP5daBOTtpLcu7ipUPI56NcCzWDomHOcLZrWr/XIvPl1Nx5w3XSw9J0wXvauoNAHOpYJrlwXwtvnhVBunnN9Aool6g0JD1IlMo/SXppzGmvLuWwYaNF1+l0APDu8+v9I9K23bPb5lHyUpJsXapI7qn3IekH3DcF2EoYhNRX8gP9SOwlSRh6TT6sDpXt70Xj3gIG6AlYlDCAFvyZ2LslqQdYl6iCKyD5kcjIwVnZTCTTpAAreffYc7MtjkNJjNjGiJnZJ8zRmuuLbTRL0rl8C50U3jwy3DWl3dC6EVy8nY1LrCDqfENN2GpFuV4rORPr9NsM5VrGm7Omvyx/2I4JqsvtOykar4llE+jtJsrzIi75fLzC1J7VXP5FsS7RzS60jH1EN6mU2kYfN2q/BFrriy0ud/My0YX7ton6lTOM60ubyavVvd+ws5vGtpctLDVc7T7EcsyxXk4TMtqd53vy591uwLLE9nXksGNx2c+iy9jG1vzS4+MTYfmRKfXCTi2QxgeYfe0XUVgoYqy2jumd5DVqBNIY5Dw6oe81TLsiQ52adZEzEmujghni+bqYm6qqo+TDemuY2S1By9plhVCdnaAVq0OfiaZo0SVymbYRJvUbbFZY3vogA3fsnIdZiDs3MFQ+0yqx35d0YDGEmLXUjeit3H7afeN+ZW/VzWgzYfHUEPV8U683VUrs4V1k0DvoHYqJaSlehpzXiDd0ExS62YwtsU+2WTIB/e1CL6TXj/TjF+w0tIQncNLRh44+8MN6tdQus7M4YCpBgWXvs6U2ZCnXVjskQ0cUH/Uj9Q91kW37KdmzVcB7N57lRGg0SpweX4VyPXmVJ1Z0DSJbMvBVnDITG4tj1MJu/LLUWWpqF3S/2fF8OMhf39FtAxv002Nbbd8KTztYHWCuvFX1CUZr889NVPrssljvKuPq7owACE6OCNbCghslaIHFlUs9OAF389RPJsLwbLBlld0qjFWjKl6xuQvWQ2NmEmh2de2588xerKKLW7iytZR9yho2n08+UuQjrfvdlQBN6eodlh9F0SkWeQD8zOV+2/ro9ZYwGOantcTkJr8SjVjcKTt1g47n9HFtXSbaiXTz3S77kWhLlhVmcLMr/QQXSlpYIu00m9ddE7zdeh73G5ab3tRrZSOHSXdX+dxa9kZcSr5Wtvss51ipEINAYlrNuXObf21ZRS5/Q0eHzv0JAZi+Qne4//SxDR78kMJg9HpyqK88kG3HwZrycX0D+49OszqM+YNKHkANveFbRXSm5ktT1cAEPXCHeh67rb7iVkku304CZtC2JJxHbzoQNR32zOlrHPSmf69eyYUicztF3X31zhd+3DZj82HVPtvpUqMT4h6ABv76fI3Is/0YFCneapWchWSeBBNsRMU/SoqjaFjNXBRUAuNL3oVnWLxYU3AhnjLioc1aUHMm4TYMjBX9oJLVjdOp5TInhvDB01OZLpzO94vXsC4+iXa6TOTBx0R9F6vb4Kd6hbFYyYyDK4wkxH19Dx3PNcm9lnWxHS5J3myNp7mzVDFrvk1dXWVb8o4WNSjYNpm5ANEvpTlcgL2Y05lzkXg9xqWlm2yFO9HFtCCed77SuYVx6H/4uJjo0d5qIFJWZYKZ85fjORG59YRjmbE35iyi7gp9UekbtsCO0AYZpdNtPDyj+zPbosJzq9Vp1txc+Y7xrGLeetxaLERfNUEJFGpSpUR01PzIM9qT/bGKsrCU5lin2p7pwvClJxB+zMXoaAf3zQMaBMuUmdAg7Z5l+gsb8H5RslO+vwZxY+Ygot6NmfZNTs2ACtHaPbPvNrpWETSdAu58ix10xB7VqmHcjHMryNlddRPmvLKXm47AGGiuzfffVY96MKmc1rDsldjuNy2Qk3Re1Sa4Mq1dqTTILU9BsRI0HpZEYtRZph2J7FIekSfcwYzt0g5dQDjJvdXRD3jRka77KXh6CZhoTu5yMcL0wx8L/xpfPDMpmuuoJUOk3d7VNXD4252jYQY4xb3pMO9zXlZ3pxtgcrr6Xp6FHZRDCRv5Y8A8NHbM7+8jXGIFqxFs/YdwCNIia8AXdDXAlcVltPWf0UHlDM3RDLWqayf+HSgkOqC0U8W06zPyqcvUoYSPUlcdd6pJm9nM9yfJrgabfSJl+fVsy6PUmbrxNpqCMw7D+kgukrs1brfPkNIGCgWrSOqTmcnPIaV75ataJO6SI80NgKML5/FRgHVstW/HKmpd1jxhZ0W0z6dp8huvBaXK4qKkZnqNkvGWQfepxrQOOZZ2VScY6B9/NMbJs3HqptFYpDME2UaXdaydTh3qjbtC9Z4DyVbUq83m73c4P1CGPb1X3LGNToBoadVZhxKuKJvl/O5RpAkvZwVApaRH9J6hqcYVnryu0OSqC4Mt7OdXb6SN8OptYJi6hTZJ3841znXPt6fmheKPPhIZhqLzpn8bGeN8gnwl5ALXK94Uqsr4u2G78eo9kYi9zdpGWxr75lPTmAuu5jKlAY+AJ5ybFwyeJJFgLIf0R4w0mb77tbC7+cy0m2nQAwYR1XWZndRlY+Qox9lREPWDXk2cU05nX054IfBvQKJ1gZ9fL6L6kkJXXp1vCxmdZMm0ZjFQlXqSP1OpIZNNrJGdNy+0ttdFlJs3V7uiPRDOy8yyuRaHRDPU9B77A6MpI4kA2PBN0hM/T0qfz49tX4tqgKxO2ZACjCT1Z4rajMxBUyzvYBAbs4p93IzImbu2Po8W/Rqkc6WiA+Zes93wBm74Rnxhu1afNz3v7I34ibxbdbQ555nfOs3YhpTUFsD7uhtoZYxjdWWUyBYHZCMZFWMNbBkhi3nM3J47pG651x0rPbYbd1qqp0ir0ErFJf5unPi8WsAcWiqHNhtZl4jjvSMJunPapSKAX6oAAhs+qMuJ/07aoz1tJJzneydZXvV2i4oZ8mbO4S/Up7pCnuUkYhmNtFaiKXW5Bp70NfVoSWMYmOJttL0SHaiazzoOom0xGTqJ4Dui6iYjp3mYmX41ITnYok0iI3pW70i6+8lde482ni5YIQ5m+YNhG5tLgsj2bpYMyn1getdj6QmDEvCYhi0h3WK+LShpW8nX/LZ23XfLMfVtdyp4WZ8nlr+6NEjW6AXq7VuNrRePeIyzVz67QcGSltlPDUTqQttlz4Rzm4AdT6jIIlvaY1h9OBTmijZw7ynLyUm83v+NhpqJ7OxhWyz5owfTuQNbhsaPBQLdBCjTkU3+oYVASXrOHN7O7WiTqtpF7D6tXuxIvSm1TRkKulg5oWmwAezh8jtjrVEZqSYQFiX1l9BK9OE6zNM601Zxaw61Cx7aLdab0pS+YoRTXyegiLCu4X6V3aUOQUUGU6ZDtPIlpXvQmJ2Z5sTEuZqXRPNWzybKQZ6z8ZL+TAS0x+RzLxgM7OXt+nG2uegHlf0FPySlsfcOEmzUhhEOTELw+dOJvMVupTTfXHSYFYEYc5FutIwGDDDM/5iVJvtvbKvSeY6dPZyZPjxWK84PIRdRgd0S3W5jcdK1JtoxJK8EjUBTWRzZm/Wbwkj+tpZz6hhuvkS5gM5QWhEzid9T3s9+TQlKd1kHPE679VXesvCzmOtws0NpB1nJOG3dEDdkhRsz2aj4KmQGoSE3b7laVxgeaWK8xelC9qjUljk/yFzkxCdap6cPLOclmWzJHfOFgzmiJ84dZPEXGJtNDonlnj0D6dWwTA3RXOkQmr4DSxN5L7Xllpg5IXE3T8tqC+ryciu9TolojtknfGX9mqsbFCJkfF2NB6OPcPNJYS43ofcHwZj04jECKFW5ch8Vac4hL97aEkCeVuZfdGq6TRBNczNL+STmR2m0qmISFI157Zo+Nwx6x8wgWE3N4wdYZ4qcPAZzEHQcroCvwePmDbNiZ50w/fyE41fUiW4H6bYBF599HvEWyTyX+ONi7fA2v8HFTgUyVK3FXsH0iN9Z/wkonr54NzNlucMwGGF0xpadVcTKNfl3p6zQ5gj9IXCbGIa3baSqGYg6qHo14bqeitiMFXqLTxW7uQ8IVWaNpCbF7W84A64qs4mgbvgrxBnbNbIYGO74jEobsUN3mFsCsYk+OvGh2+tg50VfGv/clNdTsk8pZdi0IvF0PlNFRuGXrTbnX1Tylfb3WtlAmg0LVTyU1nX6Om+NDKHdLi/Y9VgghxC7OGmbmdFLXPONXhs+tMp69QnFWz4ykosjWTrwlyGlcNg+zGirGdWiLdzqqWGnqwnprPWtuxo1fOx7rPIKWBdmJtGTVVCofWl6TkHbUZbpq38SdgfIj14YsCxvherUzVZW7P3uFkMiS2Ze3SG3J2tJ9wP6UV6j5z6F9Qy4nu3fyoc3jij94u9hPPgUxMA2v6ntqtrw19nkkdg3VzsUp5aRC9v6YtjaZ9cnnXRc5Tk9SKOZsssEpdwCORf65za4cpcDSqsIYSeuYm7u+9HPN6fc+M47jceOEW2N0b9+GlfQAVrEKOZdW62q3fBCDq0htRSVv9O2DUMnKpCd9a2ZRiPtXaHpjNmKZhl9EUYd3+zKBEnvjYSzdITDw+gQ21FwavN7dDaHRdSnnarg0wTE5BMkV6KLTIbxdFBNj97r86sEBm+9UM9q5Q0nknnZmQbaZSqx0oYChtI6lbFdJVh5l0rRuihB00Qkq1a73jXdzP8fcuxvXm2iZ9KOZerGl2oZwEy1i7lm76Xu7XNNoNRmeptcVHSi3Ombusyp7rwgxbenCWTwBZFuUu5Bpu50qsVhkmNjero9BZo1gMLQOM+hCJGzNTWwd2h6lMWz69rbcfRo/qltDTg93HpnOsMzc6Rpw+WkXebJABPBb06STDlxiZeR9AfdMajvNkuGPQKi4gS5XOlD5Ud0qxaYqzWi4SgkKMBGOOb6d5m3R8rmUucrS/67UDh16HetLshl+/Q7CbBsDSn+PrxvRRk/7osSHaVtaIJf2TSE0REfXnA4p99VoGBwoxcETPyINymcaSPJGv4XITQ9I0rGabaCqpXpZSDXDQQ4e35M1jHLASRXDpyOA1ixLIkObimBpp+Wcmqc6artQhZ+bNzvzboZqo9mKtvShN7krYb69Ig8m7ZtuytTE+ViE1FwSPAJAWmHKNnGgct2321MWt3k85vp7c6yFq+FtKqk1MnsILISXGSnGoaGH0XHMqd5Or0hmD8LAO1i6mwp1lQqwCl5mLqucFKv6oWGfIUx5X50+1g0xv/WkTxeoTyg0Nm/GIG5sDrSL5dFApr9ZwyjzRFEH4l9ekmKPGHMZ99FfawBbAYgzLqYRtYt3Goj+61+k4bdY/Xp5paAnU5OwP4+RY8YfJwQGvgd1nlAPRxVNhI41FDEAMaGNGMwUyJ1qv12Uj66vGlqeNFdUDxsPzzx+5JUaSlWbotFRkdTDrTwbE61f+lKc/Ijxt93R/mFTNyubWWKSvvTodBMEv11AbQQ1neM+j3UwNLlfWFINxGuuPuhpFpT2d/P1TQLAqZX44/SGWXD1tc1a505OlvPfdY2s1wxy8O1HSXthndWwMOfaX14Q66VaUQhrjRneljBWKtr4A4Dv5T6FdeOM/q1rRV4ot0MKmcM3ZVJg0AcntmQF8ItF25TF4ERq+ZCBFYyaDIdD4FoEJrc/M2+6Iaip4h7NQ7lhjWhwBTMxbqEy6ddSGFRlbnKvp1R4qT7WsdEl8DpGw3D64RPDsR2FVY9jWs1tznAa6CzeOG2iLWK6ZmzOy0Vgr9Ms6Dri1rZj8a3G1M5UNRWl5I0oswT6PQ//bNejmo+yqOldnY2yz+RZdTabIDUdCsmZtmQIX9GnEDmKpo1LfsNT/Sq/5O93Sxslkk+wkJQQNJx5nI50goTz7I6CuGoNNmuO8unudlNqmhg48y6Pu32EODFcePoUlRWfY3TI61iKzFD6mak6lNbTzQD9MVqNqOz6Na6ZcbUyuL9XWZcm6deGYylE95XSA/Y+n1l5B2NumjOo+QwYVWUyLngh7GXVnDoHsZLOYDOdJITNOdczQ0gvwVtrL7DkiG34Xe7ztR8fB560fG2o2TyPXOLXyduyIbKtzID5eHm5+qS7MYpDNcfHViuZbPXj44rW34+OybNGHhKfqv4Aa4y11N0bxDvf6LB6643onv0rTWcetOtePqey9zgO/XiiGgrKTVhmBa4e+kYmsj/Wv5mKpacvNNv9ZKXw0jo2vSaCWjZDNChnOIx0XZpCrgQ6jASqVXj8spK2EFZ8k8TSgQxKlhQKdIfoE8DdB6ZhA/7lhDCfdWVpwsC0xCzE/K0wH/37SUqM9Y7W8kdHu1sAqPRTHbQyrZe2QjHFdYTq1fun0EN/guzzzNvHshztehk3+c22mGkDCnWcbGTAROhpbalTYh9SJybTCaSZX23T5LhSMHJglnmF0umVxxdW31aes/ajvrEZDNXyt8JBJ8DFAehp4YyEm5L+cgx19gyrlWv912fT7gTKpRt7Oh3KcSnxvOG4fd9jFjqaRxAwRi+P/TGVgzo6RED/ZniXRMpQKkE/dNTFpbXX69hn4e1+MPK01fTd/BrfeSlEvgTUIBNw0hm/S9zefsPymQVHycH4JjozJwBY+bKBBFFfjOWOGiEnNpTa7JGzplHdPwD1oHOU80fb2wP70Ft4hFEzY3D9X66pKo0Otmvgd2mk5B2Rwg2FtMslM+f2q4nM5VWSSw1nEARm8S2MHrQ1VoImeSdalkzpflkmA6xFq3Z3uO5Rh6/G1jKO1upjxCNIx1aUM6WD0trCteok+zZDYnnmleB+TUppFvjNorhMRwq6pa1VrTfIeaj2nLGgO17vOcZGmnet94qGmUI0MFKBnp3OUujWd3YvFlUtpHZC3B6w3eHsySsNBUMyL6g+Bl3OcmIHSbIuDNJgDHBg104R84KYwk1dnUIePCq9vxr97qaiEeL9xI9RPygvAW34O4ZlPqmpSGrKRrrNogSpNGbf/NhGeXlWiXoy9vtjGVTq7GHWhB27mWu/5zSv56X00lWZScykVRpe3c4Y8x0OD6S+wn0oQ+UZLDFm5HO1pbAoeRqa2vTHH00B9Nr+9ug3zOsJMuyV5iJi9zpTKFv7ldzlDaYbiTKICODe9fJg0RdzfyUXL1FhJQX2twbU+dNujZwn0v9+2Z9AQRnzOf99401kf21O+shciWRXTRj4oT61EceEjJnFUVQwlnMta7aqAaDHGH7rLG1a35XrHszRpSdK6gajCY9SbyWDijTTWc3qITwiecmb9Sl8Pzf8ccPluJc3+0Y3XCtKDYFDWdzk1Y3kyEb8G5YN46axNrptJKotVyI7hkd6iJ+ANusFuSOYmCsmcTAijUjadhP0IXrSLdzrN/5O35ySAcNCn7yen9FGOnk5jebPdqDzG1dNLsTL79Lm7pksKYPkUhTjmVe8coTjpVEtlelwOnr8eg+/EmKZ3R2LjbE1sy4hGdiyHgeSMzHYFXrMkgFeLzD12hKp2BB2cLja8tfSalVTTV0JrKap0s+AtD2jIcJo9TK+okqzHK7aIYx9A2kj7K03pCFRWX20cQpA2rXhh12V8IKtL69BgnKZaC0Lp+1uD7cjYbgpvBHcEFLR0lXUMD3ekkjalJRT9oT/rCdmPu5fCuhwSR5Izjc6NhNy0tHvE+Zutjoc/e3E5j7Rmr4skdaQLzvceWHbK76Gx1c5qpdYXVemNJ7NfdNl2ogM5RmWokKVqEaxK9AswufupnJInM5+zy7DOBLrJP+j3SyCS4j6cZPGbw7R+euCe3CV2epGfU9sN7KbYfwUxBDb34tyL9IRAh6/dz0MHNrWXcmaOq2dYr9R9P1OQGx/06FhbXdbKXl3/35XGQdN7qWDybV74V3AMSw5IYLeItkny4UC1Njya8YJ50gMKcC+HY7ikI1Lq74y61JN7N5d7U+4S09hNwCTQ6N0FdA1eirP2P87D9GJO+J9LanqYnBcv8ZEr1etzRdzO4IUvGbk8auNGoKOterNBiejhM97XdiNTGuqW7SEZQbCtNNaMSsgN6C/rDbWU42pALOMoXJnhf62xztggeuVGbz20gPVI8M7PWXmbL2ZWdqdTwZDFLQWHmKatvt7nkDL/lcJG20Thtc2aQFpXC2+xGHrHlHQD4rQR0/AG8nd+jbUlmcIrIT64XtrSq2U/Y+ahSGtO/OaTSspLBjVPC9E0zh3GMWLqnEVGgsGrH6dfOO/JYMYD7VO/XUzMpgV0IBs4khtXCNZT4zDDQrJ1AhOxL18Px84BgDpZzBdIuF7a8fmu1OLZi+tJwetcPpf9hhmQC7I3c6Ff1VbNFOq5x6x0g015utZ2qOmWlIqh+errVho75msTROzdMSgOeqDHlfkSS1wvGY7yCkjdwjChyWjAO8F414rMmplbK3eFuu93BE7TS9WEmY5XYyE/sh30Flsr1BK+auuvUs6Uh1Mf0qWaCA6J4xwHtYgXK0P6NQrvFR0wY+z83fnSivrKvNDND88+7qGYgYpfZbvdcfy5OWW51Pmi3ux9Y7sdwnhUTaltC2pDr6JOeAnq72JuXRmc8J4c8J6BAX1WuwQF9cVVRZ3Dro0rsh/B3QWoipnUfUABGzU9gTBGduttFhHrzTMbTMnHZ5BsdFxwSD8ycuNWYD/ne46kwuBawLXaXqhFHWR6E6pyFZQF3za0OvK1EO2GtjSPZi0rV33G0rCwa+hbNReKSrav6W7zlcThlhu6jb/kTZqLnrovMUoma/tAWurx+xPL41QrENmmCPPk8WvwN5wafun266i4Q+edr+A0aC1PmstwFBqgpMOhqIcKX270Mwmh8XJomdaEL0MIFWiTsrlEY81hXv1aoDOWTxrIClUmfKsDjkRroHohQMBDpV3fa0Ohj/TqqlRCCvqennq9WqZDNzcjFVlTPPVJl49K9Xjn1jaXMsrvcGWwcwhyWJCMg3YWQqHTmGMmphrUsivE8FpERug+seJjV2WJ/WOfnxCc+HRio9Rq4Xf+xIB6opG+luUFXMsphxKeKLEHuab95YX/RIkalOdiJWq/7cOlTVczTbcUhfRb6rfCazl0vo2qPtveCc20QOtLj+LuffSJmPSI1xOUirYbRGoch6EcGU2ioXKhrKKeNCTcho7ULyCElrR098jr/XZr6cbQzH7ZSLtD3O6WJvRLf3qa4a6HINMGJr1DWijtdUyBuZ52tCT+4vi6k0ycCwT+YgEbvGl9E8hcyRR0JN9NkQH0S2FQBzt2XSrypNmQTGM3zNk50Zcyysy1G6JxTj4Ro/3TVwxvOPJN2x28ZgVGXnDMob6r0UO5KX9bY5Zp5haIawkzjAPmxd6itsUJneZZE41EZ61hqnX5009VTpRW0okj5ZwHMflFpilPDvigxyaVb/H1lDg6JxF6VpyzsLZO8N8rhh1jfKdtxfXkGPuYHpZ10LKtJ3Yqcr4lGOnT3d5V9Uw2ZZEt0c1N/YWoXpAOF3RdkDhe/z1Ax9H/2YOFq9U6mUKFa54JN2vdM1zCwg5DiZ0r5ZltmRdgtrBL7qaqZaOVDKl/gdPkF86doy3XbdNrFSUelHQsqcPSt8bjm5/fyLJBgVCzImWaopYTrYStRYZXLh34eav0a01F/G1pa1jOoiGtivju5IEyjzoUNd9i5tWjh5M9r62Ynwj9jwdcNGRSqIn86//q2Z8ckFlvAT8VpWfkxVDpTRhdTMbsyNH1XTEd9aGAOmnc+sXustpykGqhjF79ooTb2jsP3oitoMPtF8FWNspF6c7e0xAU7HnpvFa1ZpqOsq5skno7qCBXR4u9NqlrOhtxo2tkyg9lxTrLhYVWDqgLPo4bVvhAMHbFbX7zJymZBj0WCmZMJmutXaz1YwO+Z1x0NbF3e1fhXXKUW5PPt3mlomDbX9jUZ1Mk5NhbyOlvwO9JIxrpp9la5vS8ADJ5PeRFsu4YeIG0fNvglX8fd26bYbO0K6NKnDx+80XEIo+XfWiz6m0MwWuRfwwiZZGpRT+XwXCyvJtdEuwhdVJN4iYe2Ncd9Co9bklhNw0op1Mm0sLpV/tE+pYfHUyu56SMwApmbTFSnYtlwlPo5ZNj895Jek5xZdudHNYGRd5hdtcbQMncBQaawaTejQDW48C3Edo4D2yqY5S8ypjkK9Qj0ZnO2bBkczsRBOtsIt7RdSgtCJmqOMZBh3zAtV+QCmKMxbbR9OqTJWwp1zjAEedG45o7srpv0elRTqV2P9Hkf4GuOpMEneME0O3Qrg0nxkGPlPjk3HxGtfUXdWMvytb5uvhtFqbFItjqVON9hQ1qejS6Viq3RXvaHr153hzCFzp4xJTwmtGqC6q4609He7KSTxmJr23G6uvavF87maaxfLzHpVIjmMWdyDNMboFzxnGFVRc7uWQbEkfoYdg0LD0PEzhUhVc/EP3eE90zZlQWCXqO+H898A8VTws6WsFd8iJleJwjwZTv35dr7yDGTps5tApwXHpqp+UIXNBfFGMag4ZnMMekR0S21vB+xWAxk1niHWfXOmv8y2BTRWtwCcy2vXEGv+1izjHedTy0dCqMym4Pf1TM60aM0JuVCL10EFepsNOmCra5F9WIZNJSEG/SchGQBJo7hvd/Ot9bfG6u/+q2JjJvc8PNWjrJlL92exRnBmdcflpr1Peiszna249cZqagvpULaSnch0OnGvUIHWNH06iU83yZ5TUobJLzfD+vd8bzJmDyW2+exraQSzvLaaWJ0bR1ATC7sdSHDrDVncbmO9OrPM4WufaNIlc36kD+0FbSyiZscreNi76lYnMS6EjOhukUMXxcVHsqadnN1vwzM07n9OuoZtd9KnGNbI74OmyM2xgmBSrIDFkh5+sMVhmsU0VCFKniZan8o/gQJZoWtLdqK5N1slhuZzmp+b4ZaqES0RB79x9GFgoc3kPlR3cm/GMGZ79oQmRcyvkGC8kKVpx40qOShGx7saca8sDTO2EsRbnCecMU5qZdSGDZ8HWPMxlT0p80RDmrPBHXLRDFu/E1HYW7+r7CdWAFuEVUSG2vK5QvsiDJBQmyMOrGGvW0lp6DxjOdghrSk2wZx8Oa2FLKyLyIjWFcQCfL0u6cVLvuzMixoSLe7n2k4kbNNry6T6LA5poHpJdfGtaDTea/ukiqtruLKMQFqdN3VF2F2rF3UGkw6dmUAwCs9SONWZuVAkfXAv8/9pUG2B5wARvX01SSP4kmbxJxsjYF+sCIOz83zrGULJw6oKpE1/Ua0DXcNyts6KiJuRIbnGMTwa8ECirhR99SjAzYrVerkMQX0gdyvnWLSVqTNTc423DAqZ37Bxdidq1I3W6urdVLViFg5QEYZOMQ1Yuvsa++PbrFgpsGvUYE2oJCvEuFxDEEpW6rQMn7aknnhphytfC+RQiy1JMu9TvKGA9bVTkaVfNmU7XsbWJW872mLRYSurDsabGN0AtkxJ2hWtMScU5Lx51spG3fdJSIU0wq7/Ve2NJ5xdRnW0blmasj871SsZv5rD/OK1gS+vcCWL0zVfZomc/hXvjbxp7YdXSCVBWOoj/xotPMuyNHAwyo+D2Q3rJh/XWMotuGS8ndjpzW7JUPmzqM1nRLA86/qvYNM1D7uGTY69HGBzu3Mo3AyORyK/6Q7GBQLVBphkNioZMcgaDdt0OZmm3SNdrOgsoUFQwsdWZBHUmZE8FHtPy1m/Lemh3hM5LRlZy0JF24wiEVmoxSqLxun2ftO3LVKzEmaFXJGJgHZpq8bmWzqwW4XDFD1bvwzSW1eJtjLlmA+3aaQ/nJHu4AW7rRDZprMwBjMYKuS2h0cRBtvPEzk8YpEtqeng/CtfBO+IrIju20zr8EkzsyhB5iPKG7i3i1IoGE31CZFQ9s57bgQ03L/qeks/T65JXIrI2A0OhF6YCHdZan9PLgs3/HJm7oB7NExpc/XJSY3R2tdP6Kv10MWzx5wTA+oPUjzoH30BR1RytWiRlZvz8U3Wy667ZFOreuOcWDr4zovTi6cT1b682AfGaLPgZjKs5A5U2/b7KSd7J8C59fqieeV1nIKjtm3VsKYUbdzYu8IelwJvd4z7pKY0MAWpQjjdPw62vJKy0cNzMY+MGS4+5tkUft+7pxnHo2B0W4QARUm0qxMUA6WuGIdHOJdR1GxGZbR5HQCVEfa+1XoBczj4lntsa3T2Ms3H0Ul/Lh54ohyjD6xejFRjsJFJWKV1Tsmg1TnnSuJZgN2fc3gu8R5RcnKveUW5iZTaXzNCy3aIxArSRir/XId4sqi8U98CkuLBimjONF23/cLAzbZtMlrujzRqUHH8zefaUHdf2+vqvyCQZLj9OETmqdcU0SpUdGOH/wjsORIVJnmtU2D1+NrrscvxT5QWhT0cj0NxtbHUUOjzkxrPks2UaKbH0NSGZxpY2Jwe0/euNFtnKo82SegSK1H5bnpw4CHIjHbM2A1R6JsfOKbKiWxcdAt2ujakqJRLH0evpOt1EwGlHrAqHYhP2SEHXOS9e9O702oepFjxUVZiXCkOd++fROhtZPRUVNj31xJdpHQmBOtVAIZRk7MqFJOprzXgRY9pIh27GPr/hpGI0jLhRUcZ8YPRGDikNK7g0VLbdLsrj6CsCtPxMki6zuuNxz/Fa/l6LQ5RLm93JhuDPTF674MoXV7q0qaHSdsbi7ZOYGCTNq9RuNUT9RqLKaHeiE067DTQsY6aXvh2bRkaJOp1TjfSSX+xwmtNgPqXNNxHo33nvCiYqJNrMt7vJKTi8YpanIxXn6aT9oaVwJdb3VWLrsxFoT+nbdWi6DRY6XKvVnb45KNLYmGBXdb+aPzwFUH2XsqodVvnI0vbv0JtEXE0nQPa9pUwmk9LAvbyZtotdWNi5K0BpavyxKfFA9GW3WRVh+FFUgcwC401SHjp9VzjJJ1h7ivwLWNpMftFhjnRf2eiT01LYP4LoEx2hQlx7SpBpZflNx9YGNqSBhNdpbPQ7wh55mRYcDdNUsLMa1Wkwp3SVBEaMtFRRatGeCCIL6tAKBSy9be29D/K2noCbtVFSKHkhxg+HybEQJImdGl39Ivhld/aTQA1Ipj4l+8zzvjVtxmCfspplhs8STR8t9e5ti6bvvYFfsGcaBY7s2GxlcUnuSF27MZL1KyjWbIfQ0wYbr8udW4GElpdviTQxMRxFNVH6lJALtdZJqWWqUPakantV2QE8rOwYHC10K7+V95S5yzjVjcXdG0OU0B3nE21HmnI0OWGQz4MlhkNY2jEfLQ/Wm0/OwZR9aNjm5kHshOekwUzhTbMQsWrWAFLCpGXxiY+R5820kDmapdJDA5krI55qcqsRxdR6TFYA+WrDEJZ2Ydv0ZAOytvXh2cxzVqd29u26Qo7SGofZ4zb14n5zcxa7R9KGJkPMILTlEQqgpuoYM7H9ZyDxNYle1mE1lBSrCRuq6pu3jowHiQvBNy+4D+kl8qBzpRKCeAOXG7BpRuvmxm7GNIiOrBRcHLkibyLwxHX959PbyX+nC51lywzY+Y0LKzCOrmM7mNinWugNHGYze16mMGyr+eJzLga0H9lOEWTQZAmowOuMKJku+1Xu+WWAnrup0P3KbNaN0G/lzSdHX7ae63cdRXc6fBaUTFqkTgrdzm7Eup0Yu+8t9ZhLhlfR9GN93NLWQxOC/9gWMe3ypYOqDFLalfjHHnCTZ1lcbH3DfMpb7yYiRnZ4ONhmy1MWoWxoLC/TtjBuImmJ8k/sO5yg+QSRc605/H9X0BWLONAxL9pSqtJVO8e0WGV9hsUS2qiVKgKZgb6d1eEXEzORaMMZcDprsCXT2yLh5asRvow2yhpQMbWLeP+4CTS942cNjjOSHULIB7Xh9msxaj/62cNmv+nrF3U41C4JwsaoEt4bjxPtNBI5dy3Dt4u+1gLZ2CtHtgWaCxm0al+M5kWSG7MiekDfTWjNL/Md7l6n9ATeSyRWn+nASszKmVja/vtuymM3nXHm0NDWqfvT28mio3E3rlxQBVuyqdezmBYWwO+Wx2NWj6cNAlGhdCxf+bZxQiKWB+B/GNqf+wIv9Zqc19M1B3DeC7RATwPnZeCDqChBHAxqBqc+amrqK0ypfa1QzYGtXEe0vlWi7sv9uN5LRtzeNTt3jbPAngy5sshjHAxgaJD6VxFz9XJVOKmY9eoHNQWNlIHGtew+y9Zlblar6obaSqLG5AO+3lOm1LJ7CEtDiCY1oTnW+1qZMyG6aPnsJvV+eXWFwTw70VxaaNNU6RgZQ9+tnsKRcAUvDcUiRW0Pf6tU5/I5bk2csKm1rikiBPa6nopos66HKi5JI0m2YyzZPNPXpdyhCV3v/YdXRLtz2OVafL/IOEL8gIes1cyJ2YSd0y55PEFteOi8f3F97x+yMZ6ff872IS4cuB6lpbm3d+HSjUTrpfkuyob72m2E9iHLRtJmCXxqzV6N1wL+OM9QFk2wR2gQbD+Gm3m6iM1vJjam0hm4uXtIADtcbEVepBbVwZ7/dbNZ13aQ2YbmHdwvUbqldV52xCBg7dlL5sZTGfYTNI2yujTXydmhzR/1srsOXNzPDDnmjJA0rN7jps3f61bFmJJlpxYkHoWsXA3RFGUbQPqfcO51VGcXQB6NCqklQ2HfVRKkETkX+JvAPFqTYJQ1qYsEC743qCkU6mRUyVKkCavwdmlh7TzQulYWi0kxHJtkJHaR/YhePosRejpaSwypfGfaTXYjTmzVX43wU8WRFFDR15uQmRznrqPnbt5OFfjdoHalA2LHPmJtNN1SmaqLAXOgYW7PgzdPMGIXfYB9l+Rpo74ml0uDGBhQ7fNmhB2HtrYqjSUGIjmS4NjHw09T7VH79/28qfbXzgbe3NpZgn698znw4iidmGz1XaO8uzV6LPubR3KEodJbYuhNCW2L0vR8vFiCU3cXaCXTye29oyi8VuH4Zz3OAKL/S1D+JpIxqYJPzkHet8BVmWha8KoXvmOfVEakNgU+4AfbphfVwrz45PQcr7d/p9HNiXQuIm/5YRSr664hwov9nDzvYDMkozV3WYIfaZgbmhYlrbJdNImeGX5pG0R8AxEm7WViPhRqH2r+I5WlsGR05Gs+u2i4+jnyTsxxe7Z9jcxtlq5/PTiU3+cRk4dnSEnFbC4pD9cxcMJ9obCiMcBWi+f7nhgg1FFMImtnxm0ERvb8UK8N/b4UM8hkxAwLYdBa872sHpANb025Frs/Q2URfSb/o7et2MuNPbUS1qmhKpJaRliSJy9OXOIoxSxbWQbcXt5MBXMRxnizdLRJGENUshb9UvvXIjtUPRwE6ZG8L2OQa7W3dmz/tZuOjVi37WIPbe9Bo20oifZUua+rpczEucNlplpRdHjcNYRejMdEMg0AuxPPjL3bTLRuO5xbNmfKPGXq1Zs+nGdII1WkS8xxgwEe6iZG8jPPV0XkC4urP3OqtSFDQLg3OeTxQaLJaqd96DY6VdfU5U1+ot2PbZtX4WSoNBLcYrxaRlqs9tj7EMjeU5OfZwqnzr0xjN86GTHYWBhBmV3TZsJ0KGePObDtMQyj2dtZxV0u2GclJKHNvrQLirr6AKUdmuVdFr/uXAzipGrL7UjSU4R6ni/IxsyP7O06wyj8ldAPcS5YSpSWU80B89cRdOa+gcXTZNZxMdev1nwJk83vOx1Tq6pUcYe284LFyNPSXRMIFapt6JG6tDF2/fcL1T543lkU759F+vyDVPzSaUb5ESZAeT3rdF41B0vLyhoSG1r6YLFhIkUbIftLr9X0aK+Xpwy0+dP9Nj/q/Di+pzid4xaem+kteDrt4D5UTHCJ2A9t52zzYvvNH96euwbbRQ0uypI5PMJcpeSp3FqRdiSPJnvF6RCXIJwsh7jXbrR2nXogEMzzpF4x3q9pcyWe7YQhNzdBX5Gyq2BSINxgFa5qJqpcckuBla5Y13s5zMSp8mkmy1Wrrsn3h3ltz9QhBUSCz0Ps8lihxWdz0deOXYIzEphDCe8pZz4Y4Q6MhrMJs2CbWKnbllTjNGCbF36IQ3hsWAWvDzmk6zsTNkXepa0uK7wur6Uxkt5jRo3EH0aRF3RtXWedLgsnmk0q1zzkKmiDuSe4yJfNsAVI2LAuNd1euxTpTpZT+wMtYvtRixN2gebY++ruIss4t8Ci9OL3XnFIkVwJaSSjipi465rAlg09uwJe4EtalAkCoYRPXrOqIJZ8dF8CXrl8RfQjNRvWUwwEvFUKGymBRsPqxoLQKxcHSW14rTwgKkZCehq2iE0nFmNpTVhy5LpvFWyqr7uFGnmGfvZjAS36aowEutF8veL5rIgEJlsYNExVavagmy2/Z55qcA+ZoSmLgi5TWOfNHz5rjt3wgt+sMZ4GsYWvvGRExZikETsMXlmWLxhFBTfxdjNV38WqH6jR9KQqaYJYR16DVGZDGlE9A/LgSxeGHOECXXb65QtcB6Y0xfzg5YCWhf1YsHOfPrHlAwjlgizwelh8TXp3gOYI/7rI7coEBG208+WiHemoj0x8NW7zbQljQZm8/QZYuXxMo/+PTvfCC30Iu6TZeEqkkL8eZ0Bfv3qzZoULMbokZMDPXMWiDpKynFdgVtoGFcvGLFthu0sEvO6GpvaNglqb2nYJecEug7THBLxq9Y4OS+sxeG7gajPPZHglv9i7vA28EuxcjwxBsT6/wS5oRPzAFsfMQhL2QTPB0XfxbxxYTsMixdec9Ig9q5tOTY4CesEhL1OPeW+prSzxAalDcfVk8wl4moyDyzcLEKGyzQWH8k0/Js0lJwEvsUMByTxrCi3M7V00lalfqtFe5NUnJVOe4MuYsPdMbvR2A9tLXzsWA2RoFw7NmPmZ5rXl2Xj7rB+n3Ns6tJk0TA29rY7K561rsCLwTSqjcdXZZQO0NNBhCO3lQ5tNwsUgQqyEtRfs458NhbNAJoJbRGMW5rdFT2dHEnVeoCgpby37MX50p7Rje6sQWc1OqFcbiu/hq7rFKRQuVF0UGGZRrQlFbq6mptyot5klyFKYVRTZNH9gWo3yCEutC1M0ljAl5/BS6nSyX3jOS0NBT7YuLgUcMxtUHVVGeq1ZGk6uw2LPlLZ6gYzRz6RLFsuDlVXwSQ7doD0O2uwl+gfpsJej/UT1zLb21glg3eQ/oIrj6fNyiu6eMvFwQYUeyOpaaqD9QhR2UG8ji6xcGYYxrqodmwlHI0S5pMLho32csmyaqURxeztJ4N8eaTxDCIuhBij4vqBjOYbNEsXDBaxFuaWZtPWyGuwDv6562qsFN8iiozWrzOa0ntOj3Ph1HWtoKEbzNlAB3f4uhKenmH5IcdZosHxlXjsjNfAkifW1PfoaFrMqm5h4zIHsseduklBit0zVG/jTtqQ3A2/WPKYT201dL/F02RjIKJ3b+LsFGzWrE+FU1bzXtVG1T0uFWKK3Ltfus01RFE7aSKpVZFurwen20a+02JjcCtRlnXBpJpE3PJaZG5si058Rmuo3WzDytr1/4HscRSpSjAkf+yvc9oMg8V0JgFDbCTWPHK2s0u/8jEhtpEoI9qHB0ThNkhdEQ6PR0vOnrUasdnFxoCsA6PtrYSA1KswITFcma6fNUtIh9BhDhOJp46itTkmGFfO55vkH3gksRYieyJ9Os3sEdGGd7BEu2SeyJCxdN9kfwfJP9E0V7UJLw5GtKUp873SdG/Eb0nR5kzQH9e3+weh5mHsX8xGnFpA/rVm13JXzJMWYZN0DchKaal0Wy3Wu1W2OMolyjVaYaW8VWE8sZRZWg9QO6QuJcMRkwylUJd+tm4K9tPQtmU7nEdpBSrNoryDrhMoyA0wCgV72NUMyvoQCptAeCuBimbOBKxu3pjyp18o4Zbiw/VNfXdEGYcwzZcV9iXSBWfYlz9emos1EgXoSWZyu6To+G42Kk2Hi6kSX0IhpElyuGWKkyUU4mYGDPt61tVHUzvgeVynah0zPGBzFvcIRW7WP7WxRNgIGIri/xo0IbQIzmKe0JhzZ9TAjoViidBDY0wtvxLRF3b8S8tXvwFqbhKQall4BhJUTs+1RLPNgcbhNoGG7MJopyxTXE+qHVdSWL7QjgWQ6u7XpDiXIe5qBwxc9vW/NmlKK3NHPmyAkkFugZm3rD7l9Nt8zBQo9ciSCSRbRUwS1/We5M+aAg6u+biIbjz7b+lQ4l85MRZ8zjFJ5e97AOzXkrBdfePu1u50L5w1BkvNWJi9y2tD2WZVMDbhWCdGAvYgYYjBNbLdWha/cTQ1iXjXyy6YbOipxd6aLBh+tqiwI3ZEgcVP6O3CkL83UkYD0XPusPRJyuXPL5fVuIOJM8iDWemu9nEGCdIgczk4ORLUYORNxgkOmnpycJ6qTH91lQ4HHsziOi3UI0bQtPKO4U2zofemUqaYu8TTxDdWGUszxn6qrHZaQtd5/jVRy+f412VzHzG2BqPyBSBpyKloI10ExleocduBNdmuKTWhPw1q4/Wc8azZuO85JmIyemI7EpbOqkropgQ3eTVxle6MnME+h/7zb4jsti236m0609ptOVB/qllMwtSnqyz0GOmOzrJz878833n1o1Sx42ODi+Fi7bD3XzY0mN1qWTD/Hc5T12R53mtIi3CZuC66kmYh03Hm0lS7WYxwmctzlrM8kKq7sYSYiFUWkp59sxTP0lW3k91YRQI44xDp7QNFqYiFRuRVJD6snzrizubcX9StBhGAMlnAATBmzZtrCTbm9e4G0j8gcNz3aLrW/t2Pm2Cmwn049NzHXE2713RTtta+82iAX1RpEaH0vt6e+6wbNmjTLowbTJbZLlg2nYhtQrwuADaoxrrPlSFawrPj2fR95VQYNoJTWmtM2szXXVg31m1nQDa02LUrfgLf1qNSIyyao6LX/amFaV+ehQFrIXZ99y9TEyntFcYX0NZBLLzJivq8Jdk0SwDoHrB95wOed7J2unzj2p9mnjNvSm4I7LC3irmxtbGdx8IjpQQYp+BtW+MVQbAaGJpLk6nI5Vq3AwGNiMXsWQRSvc9s9vG1ISDOZVNATlYFtIPRZZJMSnz4mzOza98kmZ7oTTucG3p4y5PxBNZ9iTkQfqYEZktA39605rHszv2oPeks79n8LmIRE7gtR6mzEX7yxaD6GgbE2bcVfPXUP300dQH1z8F6C/ZHcwdOblKd4yNaCcmQvn7G2kXpiKjjWmkoI71SbZJP79YWdqGZaTPIoI0RMKYlrY2N8mWOxMeicI+YEPONMSV0ULpP4tMVJdib20LoqkKAh+Mo++RgcsJcFYtbqtI9WYyDFo9mS0Bqq4fTM6OuswXXIjuCK0++4EnDWiBNP3C93g4B2XWMTU6jX5PcdIg/nREw19Ingc4BaHGekvOjSmx0Xw1hN4W6VQI2PcwQcwcZIj69sYmU+dcNbsOML/EbLIN39lV8s0vIR/h2r+6bZRmA2i4+s3A/kb0k6F/aSwhe1A06UFd813Vvo+tKUwjmjTCuJsoKYlgbGRsWh9GZffwiJN32qhkm7tDQThR4rFxtJMuDUY0NzxOJEfnFl3q/KN9OO/qyUZmP7p8nmcl+QGtZSUiEB1artBpHmSeKYR1dbsJcjDWB4iJsyIxkGMsR9wFlF6YtxS3iwzSckk8MdQ6AiI9fSRy8oJH50gdCmWYIvMNOhjKSgrrFkLI5Rv7HP+NgvRw0yZpdtMpa2ownk/U8rqH/5ax0m/ZfDRiJ2rP3UUuFVC8RUGF10oE/Vr/Snrre2S6uRX3/Wc856KfZmYHPscA2PZBxbNgQUyMMNu3KPi6jepogup0wI4FYNF0Dn2v6bGFutNTzv2ZjKswm6xRhwK5LFsryHZc9sgB6VG6vSVtfz1F7bEJCCmOtXjRc/pBvSic0vMdcamgmbWorv090vLo08Nvu28H9GJWabfsnEW7C9I9GqFdciaZzCcNv0OGNYNhXLfHD+beIL33kkCKYaJ/KbOjzSFYw1Olp3sCudFmQrVNlsWzzNpipNC6VA7dRvngPkyiv0MlLP36Hh9Pizu9bQZrU5f0NSgQPNE2DjGx2t2mTRMRB+4LDKEXjbq0je5m3LoiIH5B792ii01CKYKsdRtaAgoXmurqgJvKln1lH86qB20VBZZHRDIM39mB0TVrh7Uk9oa0ltqFz6A+2oYI6MXh6V0c2P1eGYv2z/at0Lq3yIJ05IziTCzFuez82QVeyAKl0EtVdSTNnWk+iGJvxaMNLs+JLHHZkCS3AiZ0eaQ89iJLV3YrS9Xl+IvdnedTRVLvYPGaS/2rIUMU9Dd+/Zw4HbnmouQs8ybABNSJ2PjhxSZjT7RpUuhNtvlSfeLJMmTwQLEBVmoC6b2xrCwFkilrwH2YQtMPA+dnmh1QyZOx6xG07d/GlAOQi92UTJcl5pUCXUJLPhyn9Hh/+K9H0mSXgwR/FdMkuuNCv/gZGaiwfpW3SmtdiEFthcaXO8oWjljdH70VTotkmYjEd5zO1z495caO6ORrqiuSuOB8DzK4hvy2xKCGPSN3mjQMI8i1rqpYJd42kl0O6aaZwqPUWepEbao89hUKgnXMkput7QTPaKT17KjagdbpFoGPwPwMxVGZpLnWmiOXsPsK9npSCWgDWPDKnOugA/TBC7wQ9I2OyPk2EtkZJZa473aiuyyNXbeCVk8SJn9pVcS+1LyFRtMJmumeCI7JVG0L20GzXUNTLV0E52h+D2plWcjJk+smUzQoWIh1MMljBTcR3uaxs6eEjdcQapcS65pwfE6JEsZ7qX5m+J+nUp8wjV02noFijeodgjKpw+m5rSskuX6S9aNVUsl3/qNfzto54FtpJaISB7uPj6COIkur09oYxVnChvsRqeOg2ZhxM5z2DnbOB7ilywXEsVMtIpL4+CpUIYAJakx5Lg9zcx+MrDVFUyTNDe2fACFdmutAoCrbl03Ye5bvza0Fff/ApcW+JZHRZaXqLC21tR0l45jcz2hEAnrDV9iRsTc9sdPlXJXfNMiWxsMlgQwRzrtMlLA0HZjTZujNEM2CGfRlazJLWNL9i9OZ5NAQ1mDoh3bOqkGsImwIwSUNirrCZnBOLEBFx8AQ22wLQa+H1Im1O3Snq9o7wJZWF8idG0e7fYoVo9Uga+daqizfd24f+t+hhQGs00tKobG42Gmayoun4+pGWnITnIld/8mgDbWROdEjZCfsBalzIDb/vUJ6w2bZF21bPt4a3G9i/YYx+3ZtWCTx60Np0mRo4aW0/o3nskLdct4+1ZjJy1d1Gtytbl5T766Wlq9Q3H6FC/1wOGrTa8RcVrVKKwZIUtPPmhaZ3mjpTg3+t29arX4pDhjT8hpJK3NuZauM+OlRSRsBOeyayWKm9877ylgnuupxlJYM8o7D6CQMlr9e1z1Y3hN4C6j/8MF6+h6jw+qfmLcsNyvMLKBkkWp2ugwiL2AVGN6L6MCD7evDoq+Ik3ZhM7NhWN0krIPk9rKcyP2q8MdjaMEsL9gH6OQ1Vru9CtW2SpsX446cwNQ7IrAr3jX9bHRdvnh3xQ6sGM1x1u9Z6IwStpfNYZ2+sY55VT9CwjsmOI75bpNsTkG+3O9uvrtK06jZjvrW8j/k7aJWUBe3rnPuLt99sfmllaHkYKIOc019s9OdHml1o4yT8ctvalp9dhdk6LLPo6apfQUZ5jqF+OwC3GizrEIy5dFu6q9LuJBwnZMXJqzR+WTrs/c6uDjEDM4Oe3rLY/zsKwutcbNIpmLQLy7HSntT5a2l+rgxro2JGbZQK6Ul2/vTeW2jsbUe0k46cSWQhlx345o9XVZuV6Kru22itYnWfKOk3s5H3GnkAV6yrdOY80LwR74iSm+ednaQtNRYVywxMEXhCRNO4qCs7DhPbJnynemMSZLFNDVHzrgvIZOkpqC7CFz3XZNaddO0hM5Dwb+zJXUbSQzvH/OucWyPzVrhKvmwPA7IU2gsH06XZUhMhHGnCu1gNXPYw+TSlpoLbLo+kXxf0iGWNte1OXn7HKsdMGI8fO3hHt564K3Tu9RJSZoDOXQqKHdxdO0Lo3XRrYEaaWjbIBPPWw8s27pYcoYBNGdP2l38ipliWWw4UsjzcwCmCgoK+U/FMMPwsM5zfsu2frXldmis0tTqAPGO+2KNTSZts2V3k0suVTgiOtWZtdjHfMJyumGnto7RZmHEnKBmpqdPb/e0Y2JWehwDAVr92ELEyWSd0z8XYovS6urwOYYNV1Gm2bRIzc9m5eX4cPxntar1FkpGTlid3qspWuNcXtLEpu5VBVsPReV4mntkimwe3Q8jkUajtjrwXscfZchvJp2q3pbSo2Mfs7tuvsDPQqRHyTubYsX1l9zd23F5XkXpY9ZpRbSX1kFpS20dgw7yBNpTnkAhmMT7Sg/luqz9Q5cttAPGesbfN5aDwIJuU7CCFi6w3TG47f83VJM2WQs7SNrg0hmk1fPWyJNWYze/lT5BloHo/prT2YvyyuzduibS1qY7DLXlZGJz8e5mEHBpsX6iJA3400LbrhS2choYwPq19AYRlntUDz+oiWpfNwIa4aRj07eBur4yVQT1OiAJYCl0C1SzAFgyXSfGyiwGohyaJlsO0i/Db+CxaebEXz88OwWKjoMoB33r7ZosCMgmj+mo0icPZtxamnRdbv1TpDCLnrDi2pwX8dGwRBucTaSS1Dybxw13ujvcGKkgteqdifXTck3zDnu6rn52u5tXpc6M4+ajYsGmNXO91c6ex+maHi6ww21cHINYY6LX8vq9U6GahIX884uklOLM7qGciXUZMRh724cfqsiVGUq0uaDUd7fdZpqHSSs1Ajrx3D8AMsydnjg29Umu5infaaIM9kodoWa5zoos7BBxroB+V1v77q5a0/+rr7pntLGn/vx2KXIYmk9RezYBLZkbaebVb0tJf8fFB5Rse2xkcQ3KNiNUSBP5Azg2O3vXA1SgW4vGYaxVLPHXNiE52kvoHickZhDmHb/HqMs3Hp5s+TPfaop62zzcrYy+B2Mo6veatVFjpDa6mNGxY2eij5aaZY4ttkefsOMNRKDKilq3tYGRr1SuieV9unMV2PRk4yLg0xYiwbBtTAv2GtRx0iVu1RGfGQZr/kWqBc/20zoJnmnMqoikyeHKu9uuS2HOwpNC0daczKJEr94R2p0aMshDsXBGIh3eRDdAhKcDGMqsGTueCW+drV861YcZHncQrGQ2okFNfU3KrL1odb7RWfzB/J0YFL0bnGUfNBm1VqErog7TaIPab0jts62LvYmNFqgKvqXJaYywjLF+9dktQqBxAv7qgyWXuUMZ9Z/k5cJKMva5cahaatI0pOlWWYmAWKrj87Vr9dPKxtp/pNjrCMdwjOxI9dwHjArWGHaaUq+7NoUmiN4fjvKt525F9CYWprzLwZqgwuFZJxrb1qGFGu7sJsxdy7fJq1rMjY7onJPOow+uc0vYUnM3DFDp2ibYkyOcH57Nsx2BxAek+S/7pYI+m2fbQpWwzF5Wjow8u5Zlk7L67FqFnXJg759oC/6ArSYQ+h9Sw+8WPJN/gueESvtBXpXWEhtBHx/RGCkTMmF+nJ9eTmoG24y0rdNTRzidikiuv2bLc2aqyNZwGu+LZT1uwXXZMuhaNC7eu7A+opqppcCQNyQ6HCO63PKRsQweMFJFcGMADLZWjQmtsmo2rs5Ia6JHeSGuywvlVTw1ylJGWNENiLE46fu/X1muXWJ8kLWPy9W9ET6vTd95qCzQI1YfU6FIRI3TffXIP8QN+A2UPa5dc2z8YWILsd0R7ZjaC9sdRUYfXlZsdcp1Ou4RWhwtxCFFjB0cnhtnmg3llYrxIMvLGW8T6r+luKVvv6PR+ZTV1vc2a7/NyYy6CoAMZGSTm1OHK6ygbuSRzGvmH5DPGz2gY9esPccIiwbPGX8CxwY29PbgLswjE6PXNfNGphFhrBgVqPwzWPGWGMmGqPTWRuKOdn9YIIN73eVLjYWAyLyxDa629iDDeDcJooI3ZeL5hZ28MAAGDOG7cy1OusYREyJy+duEtBn1kf+gqdtr8hslb6VEA6yWaeZZBf71pNSxp2binnNpSswU4s4/8FOLa7Y0qHURnuqAUVwKazGxmXe6RcvXNvxnuw9YBNnkvTrDh27M9i6vO9ud+K0/M3E4mgxTG62sXMu+uh7OdC2sMz7WZXSTUdjOZnU8y/LOI8JWDNj4IecC9UQJS+shLh7iYnuZprCtUMxkmTOZb42mCwhLm4l2ekSXFxfUusDcTUm/EAujfZKV3zmnJf7HlewbNQLSahUO537QxjsS+jrDalKQOOO4BaV9q9aNOHc4eS9nYb8w7xpiZpLCfXOavovTyi0k+d0qlm+9rXoUUgJ1znF6CdAT2IJJMDS9yqwg0vN69Inu52zUHcSpZe3xl1ySENLJpomKUcn3BQ0thK1fRLFRtDDS+iqsQRbfqycNLR6zPsS/hpYvdmEaXfed6Elt6DgZm0ZPbt/8okGN6l6jS3I/Vo0tW805ipkdkhpdmUwpqXIIziP8ledzbwJml4ZCNEzeNpMpfMF2qeuAItCstjkXQQ2mk/CCeh2yyZibKGt2hmOhsCydZbJZ5KFyWWBDBKaCqFlq2e0O0YOSWZMBdQEkSxcAvJ7/75nTiJLBT4gjS/G0PJF3mWWlseBmbNy8e3/wP9Oa9N6MBwSqkJiZh0cB+4aBHGrLtc6+8fjqz0YKY0Lj2rL8aylyS15KxP05ZQm1/l7u/M9+iG9w/iGpOmJL6OtQ7gFgQnXyXGlRqSpmPUlzz2ehJaQCVtvdeLLSQEsVJklcy7kueDcy1L2JfGFgWSEeasvVwiChRvuXafROqlNSbP4AnJ2jqEbAS/iOX1KM3F7NUue+ArFgnaC0JSumk5jT+5K53EuDWqitOssqUWDU6LEXdTSVQ2T8Xx4xkM4hWaLRGTj2vxtdr8AsDx2Y37TkJQS6TjfXQTrhPDXzTA9hpnifS+2amXUImnAzN6yz2pudPGRoyCOZfthyzmq2JN3FK7GHrThZfNPNRafkP2M0oei7Re13DBFgeS9uh8ZCQ8YAVK1ih3Sw13XKKOHtyy5JueXOS07XfzIHlRd9dg2s1jVE5hZhzBBnVp8TuDhas6U3UHC28JY+ejj8OLxZ2WITULwAzG+X7RMuR4pBMg/bzO0LrvWqnnpNLHNqbYz20+YV5YMgwV/x6smlT0lyCVppWDVq+gEB3GccTt0x7NVZiHMzIFOhsLlj6zmro+ZGfWahUjVzYbYqZXdk2GcWyzljsz3mj7+0lxGqBcnWLvKHKb7Aa6ZqV4pyqUQ9hbEuA4QeQbBplV5tUkmoA0Qb5qkFvH4av1dbtd98I3X5sghyehY2Rn8UzM8/LYOcFBtvdVOgM6bLdTx3l5TbgK2e6zxqHh21kBswzVT+2DLV7NrBqGnuklwjssMaignvzm7AOHf5F2y+v6WXCN37Cp+9LzHC3Hk6rWuPVrcJPEe57CkPAwrI3LK5u4MV0Daa7Q4fohZ0MCaOPzwJBcuAo6Fi07LvgagANE0GzlS57dZ/SObg0ZzqII9NS9ReeoG9zV4UTGHUu2ztOxvi+jKpkMnM/NRxSprHdGVXqJ0YcYzWLUCDC7Nc8PHWKXyiSOABFsASUqRbAIEGx+tLrioN7LmOAfey6L6lA7yPXBzcq4ceRJFnO1RsQrfkVth82Phletpki03ar6i0vGL0rx0E2ENUTbzP71t3BaOKyHqQN7ykQmjTp1Sh6DSbcDYy3pJl2Er9KbKzzU+Y3i0mR3xrrDoi0+5YKtAVWsQ6JQi2+MsL9TuQO7qetMeyY40issH2myXA5YSz5hsFlMwylCv6gywhiBnqdMsNreRLLf6DMSm6lR50N506Uit2au0COnSNrRCNEab9HSlH2PqjAZzn3hIvXM+Yad66+nDPvWv7PtSmEvyNoI+tfnWknX2LVDZmVfN2DDiLakc5RljuI4bVSTpSmAIWomNlCT2F1mKLSvEu200kTdpUjyKSUDXiEjaBXNapU3v5zIfoHTNwfRN9TbuZf4FJHsWmjiSqGrsE8n/pXCPv5XJOi2pyKJ4h5RrKEzuSnQK1wsocZzZBesztuULrIrizWBjP9UDUzovPUtYQOMCW57Lo176WFLU2HZHRrkqtSaXBLRJV3TEd5PZT/HLNESwulZBaw0wuy6N8+OlhfCvkkdAPmV7KF0BszW6G5kofdQzMnaD3tAqZYpPfS6WUgxnD6Ou0ki6E0F3EWaKq3CjonO1AXO+FXbl+iiw3+KWOWM5Ehe5bfO2nKXQkoNcAxBbW9zHBui5SXuBQlPTLu3xiMnXo/dpnTqcbrH6WAVf9k7t8arA0eP3GmnVy6UabKnOt6q15LayAiD66qWbE/Fvvs0Yv1TLtiQlgz3ZW2blm0Zw6VWBiO2+PDa1QwiMNmu37q0Oq5FbNMQg+TDXJz4c+T6N6ELbINIVgg0z3lyaHLHVSKlqKcvga1yY6hpiR02KHQu/eQkmyyOESitNReVObLTTg/zQxHrIYNpX98HQrUXuoJcHijG9i1j2OZxl1Rv1+Y8UEZnb6L9EQl5MpvJXVEUsYS0ui6fqQo10/8Pz9P1+/K+T97o0vUwyTVKn+Uoo63+eERdKu3Sa6ZXU7ZPsgLhHsCnAuufmL4x7DsqjBJcFB643tNOdvfbKUTNOO8Rk7aLphB1u6aZZtu5aXLfD05ozCwnY5fhNC2WFLIgsYdsGxBYvih0md6kYKjjZiUfuxXpLTjsO2qeE1kw0WmOnfqKtjX/D4hjMOtEKxNtHYrMdjH6cmmKTceS5fFsvwAThvOzSmhMqevlo58n40jA4O24k7XtpIfQjAu9rCa82/Epzp9nsPRrzZkDnplNyiLD5zcFfs5S35FNxclC1+xo9ctoZy7qAsMvohLx9O72Iuf2P2b921WHTZSzfTgdp4P+Em5uTY/p+W5ET+ki+s5GHx+DccRaCI1uZZEGpV/aMstLvjEi2lJNZPlGXl7R5rsUxS7pwBhVejxV6MgvyqsRUNqsNBSsb3dOVVTGR1us7E0cAe/5wK16pIyWNuxSugZds4316an9bTV6DRjU8cASF5P91YvRNTwdS/TRFxlbGKZdUNWTe/OY4hs8Myojv175szGE75GhAo2kap5zTwZvMMBnhd19F2BsdcpPpkCDqCgjjO7UYmUhq2s+OTmMIrNF1F8IU4G1vnJP+W6hH+17YhFBT1WLQe0XtdV2m80R8GjuJZomeFq2ssFzRZY7gfmdtNrHOxUDT46xdXWwVkaCzYk5CyLy5lLz01+vlDywa/Gw3tWld5dHEfkcP8wV9XoUNcEdwE7YVlgaoKqHErydMX6SvuwkfVIAIMxn1baJ5+/9su0LT5aMmi06h0cwdI/7FqedUUKX17hasr52zjgiJXmNYu2dXSemDBm5pg9K8S2VuRsljA7yV662uzzVr4o0dA4Z0y6MLxgbRnkbbKftTE+EsJXh4X86ko8nnTnQCdoaYsVMazQm3g9nusEHtD1xMR95zfLUTgVrbQ15EKWRxq9I/P3WYBJFLZvhmElBEGFzNFlrL33O7T1y9q2mdpxqlvbFLCg5FcLvp6a+HY8Rqb+ssvGvtnHpu2lHe6tuCbPCcNdx8Xq2ej6mR/R9WzKj7fVsZ61/FC/6tgA8pPV2PJnb6Nh6/Oa9urtsjdbQ1tjRuYqS3reQjW1BrlCc9fNJjO4tGtjEDN/QFzQrsa2Or2nilRWUwfpOCNDh5jCIQ0mtsDWIyo1z/n/m165uj41ix5LPO2YWza9py0dHK+UAw3Zra5siV6hg82n/NRC/OYO6wj9TD+cWx+P9oTwJZNqJoaQtFhgg25DSYYp8jqNuiOEmdwzN2BYhYIFona6MoOOUVzVICiRMqCz3CzKbEuh7HSZpu9XTNxa99ir16WUVOAvfclyWzOLvMpqxr4M0vZmhqK8zV6M94T1Oy26/JkQa1f/HnAXs3VCfzb7QThef/MFRaDInWMWg0Sba0O2FA2oML5/ZWCbIsToxrWS3PCe9MtBtpYrw9RF4vFbrR7TVtaQJnQrQbBrWO2l22CKjGVAHJVhorq1lUNmkKv6TtWgnWZVeR0a0HKniBgTLLZhanovitpUOdGKFdR3WgjWPocS1PA7/e8dDps7Shag/+1rG0GbH0LN66AtTcAXFD360HwBcBVTdY62XuqIyx4J7Hzj0hGziMiAxZCJIO3PUdDUhGPnGt01nt4zwM1a1SyIVntQ7BevTqJnSW3utWB2OPOvg+tRPTxZmewdx86DkQrLQSMcJ+VZjRsT66mTLNMhad4NXw1va7z0x/R4zVWUHougNX+2Dis9wStWAI2jntg8Hjknr0Be4+h1457/SMkbWkLl5xkUaz3+rfPUAJYuVGni1dIPZvs1Z033klxNdroxmV65rFnfFOyoHo70Av6XsYgIVWRboRt54HL+F5WyA148YwydbVrGH1cTxGyCl8zU0zqU6HMbtZBpL36/MLfGsYO0EyziDSxjEcuHeg0TyucG7taPrObuyhqVXkpwlN2W+W6kmDmLVDliG/TmEb9kNvBG6BUn149jBtJhb4uMVHGe/bD5czc/Vt9H49CzPGV8U7BHRNZcSPYNYK6GB3U7fcQUwwOBHMXq6tdeIms5B+RedrPJa3zmDHLoWtfeHvPXsx7XZWM5Kuth+22Scig01q0WcHyEZrAdeSVvz4JDbFPfTYmSYOk3AUcMSJm26RKMQjuZYQ95TQu+rZob6fKl/Blb07hcRfiKWEaCb8sTx1wnc2RsiSu4KNYRL9umeDPEUMIRCPmWboztAT+dHQzgdfHdxLDXjWs7uWEMrQb4QnzRg0HLicwNB5+SrGYWwcI8TbKPNRVmZtHHFprrI05wWUtHClVxZzfVVg8GN38sH9bRcGNOEro/ouRbZBUXEsxahXOgj/0cQwxAu7+WNQvZRnTaVfVinMvh7zwGgkJ7mp+1+pMDMhqbzFMWJW1/Ol22pFGxCx5Jgs4jelkfSSDa7bXnQkzTxXUJS5HZOzoNzxL3Fhb6Zru5re7fJjTJvuMGtGSLKRWXkkFUXOTvt3oQOCx7GB8rNC0TZ9Nwd6u5trcOoA0oTFkyR2sD4ermf22mNi/7OiAFb5Fl2YH3xaZVTU/fg1qq/0UXuNrINi/s/e7YcDPFLM3fDCXFqUK5xTt7oN10mTwUNFBu006vjg7AwPD54VCFnN75o65lToPKStVT5MCGeDODEdKZL6pFg5TLiGu6wo41b5jlYaeOWkJymdazCks6fmrbsXLFQKmFtFm6ShCOkKpc54451Hj/pWNrYp7oe8zbBZQxcIiNAXa/MgaADx6gmWz1Qn2qsB/EHiMPrU0aZScGYWiZl/52pld2AHkANtQ6h/AQhSIUs0cpx7cxj7pjTD8qmCd/tNj/lRFM4ezHObeZtbd3WXulHDCtQ9wdGx6Tr2cJ7Zot0H+2hIvJjH1TaHwX+N9xKvHJPrm9Dk/EgJtjiYtjlLmLLA4fqc1IYT/poIqg0LM0HQ97dxQo3Jks8j4WWfqrGlnVaAMVTPOlHeX+IJ9fDhRYtyLp69Or1LBO3DSRphQwqot56t9lTW6dotgE7pIcDT1fy7r7Gv18o+SVecxR1boA8Yzl+hnIRHajBsZu7Ab1Ai5+T8qslVt/TFp2MSTYsLVxsiU+qxuYgZ026nNOwgXg8Gw3izp9+E6AmzIDvlOnBTjbGL2d4Hbn+rRQlo1k9kGqMYIZHY9i4ZV15iSyRj+bw7Ga5cSZWfXGwWObckuYv70MNGnhTvZrtOTJu2GPpo4Mv99F404BkT6kpAtoMlz1HaqRy3J4ekMxBZLNWbZtxeuFoxNug2IJcUN+XdFlcioqeczhbtNim8dtwZeIhXdFuvQFftObNUsY2VgI67KJR/BwH+GPaydHphwzCiUWs0KzqUU0MKqhqRgj7od+wekYEElDnUGYYIoCpZXMeHVa2QDGDligrZSSWOrRx6G/iS06hJVQiFFijg0nHYE60RAtvnGs1SzmOZh82bx07feHz58fQVW6LOlGgjMXROr/bTNiZMnQ2MmtRLd8RrIPRiTtO4OPKYzVM8j+17tfwoXKrQe7FTWjSQZ0cLM+pfIuaM3HYkN8/aZq9MXHm0vWA1ZX+K/MeueQ0AmaT1t6PHPJsgQB9mwguwUx62OCHV4M7YxES6iNVjcfzaYldwDcWJVxEx+/eiDIzokMv8kAGltQpmUm5WOdCvBzaGLZboVqnFcjyOXCGvdMLoeg4euW0dKxoEo5nhSZcpUholU/mMxJAm21PGNHlVlsmRKWXIM9Cvsm0Q6Ruii76/ghyJWYnTos1mJtXi1c5psxOXcDbMTWnjfo4mh4Q1Iu/57IlqdS+HYdcofsW0oLJYSgKF5x1zEiVhjeUKaqFfgjdpOnxG7THfVbXW9pZVSz9a9FM/OevM4w68YRqKa7z8rXOj6dRYyr8GRY96RdY+HfDzrbZ0WgPi9KLC+eyZN9Ji+B2pBYD+cVDaBI+8L/XArsNt7Dy0v+GJLppO0wX5xRB5P8cGMs/DC8yejOKIDrX7qduqmnzElTNd8xLJYn50N7pBALE2cK0PDNVXGqMaJNjNUnE5Og9wt1V5ZQqqCVfTs8cScP4zPhbewNoM+0tKrnadl3oOXa42mM8RaX+26Fp6Fbuia5hW50lbL24lidxD1JYnwiScJNpusj/7tSxKUs5vpN9zpZQExmQ+7vy7saQgtWWJTJI9liZtCLa+lkwHsQJSJ8uUI9NfTjUX1x173VCgEzvBTL/06hY1NLTddcznUgqWhMPE6MyqN4taT2Yue1U4+fnlGLHmsJVqJAoRDnGUJFtlq4b1ZhTeDJLIcaL2TzMaCdKnjmmrLonQ1awLBPe2T8xzQIDGHE05eqqs1DmSeX6kljSP7g5prO9FqujkJmHnIxAk12wwKs7ZPsTPlQpekk7XV4MsyW0xKIAWe1sjnudt2dCYa24S0dZbvkwM05ZKaPWn3T1jRzTrxi2mSFxeEXZSoGhA6UvXKo86HiMcCmsAcDceHeDeW9UrvxSlafBn5JNpgXf4bf6UPdC4vsWl468WtA2IW4L1ZyUoiC2aj7mXK+ORnnz2t5RsqQx92NnYCk4UTK+LaGTdcmN62DJOzi7tL52V17rxvJf1y4yMcmPQFG0YAcf1tLFa3pLnDGq4NnoI9aOhX0dSt4dYUOIZWaHaDxOF1G0SWUx9JEt1kKsmNVBo/DziZ14y1vNRqM26mvBTRoWQyV1ijmOb8EKZmaDWiIR+Uzz4m2+iKXxvui1gI7NC0sPYuvcrtzO7A73qUEKNa9ajCaa3xGsdPGQUHj0ZCXBHbrHhhWZ9zs6MhKeSl6z9Ne+FVSofjVth1UuFEJd22zzvcxMBoCLX/VOVzcp6GvlenELsInS6vOjHMJuVnCukwVqanuwA29FSHq9quGjvs5KXKmXUEJ1gpRY6LU//j8JOp5EZtz++px9vBjDusFZBzL72HB6ZYbogjVrFMONjI7n0EphCikt/BUBJLcYk5HzrrgABogH3arab3HNZSS58pu9Axu4SMWf8Ctreb8pGAnx9RDsZGK8b4Q50P3OauFu4lpaMuLi5yIGK52LUwk4icB+2JUmdTDHapi09HqYe//oDS330j9A2siEzLGaI22jVF7VbqBh60Mz4ZaSexhMa9GL4CpLvwKkEYF+OIH3F7yKiFKXEjeYaEpP5QnGJj/dmxcw/4/cZCPx4lkckdcpyKOiKppuW0F8W57rV9af/A+hKROpbwI5DKSA1Wl34yS5nVGcIPZUvtmMudW3W6YYwpNITohGL0gRqU3Gp0XppJI7pRYqa4J7UnEpBtg+3CmGNWG+uJXQlzhCr5FtU01abdtwFF8FouHhNxKpDOj6ncpaelJ3DOQQOfKCmOeC8IBy3Ew7hatxNm87zoSUBhm3Es7iVrbtWObTBtpUOOho0kMT6csep6dEWzuJ4Ml+4uQUIY71o3cSHejVNjI61A9xKFcbtylnuJhTxkdkfzKXe4nc+TLPWcV6xX1UBLyhdmnbcoCOQjJWDSSDxKoaFg8Tn06EPEkpCfjRJU0ki8XAXWtKE76YUt+Jv2aPOD4s2qPEjcEXoFrddGiTiZwROPE9zBnjxLw1oE8TLUJlkis3CY/xLtQlDptmNDV4J2ZSbTxPokaT5Dxnax0RrwhoCS1Z4mtkKxphHPE/RQVSSOAdre4TN9ajlbJ60YQJvo9mNGqUXtP0LdEAeOYPcwEOlt+1GJndfQJlgjx2NprUcSvWSSvJnbkYZyB0kjVDuphd/DTwIza2rxSWXdsBilI9M2kicMmPUpMezTR2zSY7btkxxkx9CmWshjDGCGnFpXtwe1QE5+8Sqthi17RRWfmrS4nO35R4/56YI8S03whQX11dzzLdDcTtcJEx+O1JHoMMWqS6t8E2p5crDi85FrqW8LxnEE7dYWXMq4vpHXKVWl8mtR4tplJoYBWNgKjMx30tDgOVKOPF0k/8m8m6qZTX2JseDo9ZVjBdFu2EfCtwSdD/qWzURwSja+oYuu+VZCztYEVXQ9BXG0AoYviVjHVL4k5nCQw1+aEmYNnHFu32bxWWKge9fEsJ7YI1p89nNMt/6Rc6SmNQ3mo074l7cNuVJa85+Z7n3xNcHrdpKlC6HQEgrNqPxIQ9MgGiyieswvafiVnS1JoZolb5R2oBnHsCd7oZYPaEyi3D2EAGmydsnF0idHlGiyt9sIDY0JbCA1UXoLfmHiuikXR2IW0yvP4kjdq7neUVsiejrfxNO8738SbuJBpjfhiaRMxf4nfcqeVG+tEvbAzeFu/4mIQDw7af/E233fOj0AEkePsdbFHimrQWWMewARVWlt2Vans2ylw0by2t+7k3mTmNcvEiqsY2jICkb46KXK2w6SrLyc22ePgYjG0eNOqijIES7zxPhUmahDg1Jasw3tRSLxIsCvBHH4aBJcqkkciBBy0r0TJXJC9IR8qV3eOwr4S2q8SJOxhj/CuK09MyrisSKSSPe8sFAO7kipLdu7gFRF2puDR5NtSRI3Dbnn38rad+Nc9qKRL61M/MpEcVWW73PJ3iYxzXJQmWmdVdRnLFr+iR+qX5dpY71iHlGztS1kKLVwXXnkJW8ocIja664LmJp9QO2q9P72d1Q8y5T413oIlTxQXXDCgIgDycYxb7tbxwTTX1eqWlT0TxfIGflB1CZbTM7gqG0SUjL36GqzDDErc4AYxK8kpLMSvDQTK+J8H40IiDXxJtFJ18TEHaDfEhxKxY7Kckl/uy2+JPGDXzRu4lZdhETxWvEr7565R5uIqPqR4BJWfq6QSVrWRjPFeX7p0ySp+JLNh5qJpEleqC7R6XF+Jz5+77HvElcJmWrQMkkrlwYkWevk4xBr70HDPwGQCizcXmx0d2BPscCeoVp/E5RTjCfSKSvqpWILpzkelUxrVpN9ePMfnqkrxPtWpK6ALRZUZpr9VvaHATLlSbjKRaSv3x1r+J7SVpEsU1xPZit7vstPBuflwqjcGLoHElshSig1sAkiQi9y9wQEnoJzK59Y4vOPDhnv3QEkbPNMBJF+vQw+jpUKllFr4HyfV1fS5bbdUgtGZ6XB98wZ8v4gfjg6V0nz0FdbPAJMjiIuK17STOhEIATCulgakyqIfyyrRK1ddmhIeNVWpJBbiS3vH4k5dYMO29GyFlrIG2QIM8v0fdGV7h0aXWnJOcUlRSN3vFaTh4MJlqMydfk2uCjj5AWHRKYZYXMsUXarmRJzYVfRyYyEKQU+1+zt1nDI95eO7R2aZIfFISWRx5j7o3felrY1cibeL1i4mNNXeKYXM5shB3JTDnHha3fUe4bHhN4StwJbMbe0J26IuUDRKMtWsOH0LpCKFwYzrVzrSOHQT78qy7pE93qTIgdx1Z/D8c2x1cknSfjAhMjzrjtcMvG+yHP4Fu8aNJmb381DphQCoqpLWyCOfSvChCJ1JNkE/JsiUtvbBEDfLjvxf4xsVSagxNVOEABzR4pGN+u27aCkbnqE2wj+OFv19OcEVOp3jFaQRNJ+t+1OkfnrhqtcLo+bb+x2Pd44rHo6A2Kx6/ISTVJlTomDDhX8xWDF+4SrVJly8vLAaoQfxbOG8D2SmHv+hCTQgvWDT6betzlJTHWwrpb+aoK5lBtdzil9poyquv3VPWiMSdiiG6u2DRxWuplf8qXaiyOht+kXftfo/T3Zen5pWwHGgm3HxAX6QMBrM5JCN6e/5qrXsbI9pmAYMQi7tjA6jS+ugOpLjUaXkShiGoMfM+7QFhxz15lts2atER9Fc00et22iWS4CBBQmYUvdK3/zTC4EpGSj0rybnE9KyB/V/8HhyjZqheNcwrPgsPK0WkxP039R5w9Ozpf052JUkjnHeYVg6bOU+X1/L9hZ8PaCu+3WDU45kzZ0/sEunaE56bd8vzgdDxPykbb98JHRir0ueK+yyOJE1Vk7MgLTvAvdhqgvVn4m4tSxqJyFphueq/eOVmkrBiJ3OEY6u0lvI6lW+buuNOzWG/okDlkGRIpFbuccsdtsfhjIOQDvpcqalY8mcWpWPJrCVRfsoQl+0SUSVXigrgge+INkUUYdnEDhlo3B3htz8zbuPHgrX8J6hK7uiUMJMu/HhRiHWWCGtUAK7US1pNlw/6hMrELTQgttwl3/YZE/978J5ZM+peldCK0AaUNiZx+cmkh3oZLg2B/PA2mTBpR9LPfcZF7VRhEaVjEXRHFcyKMcmUxNO2TXLEBZYWF7KjqN2KgY1HKacxaFvnZAvQJmfMaGmfCNaLRTwraAxaBr/bnv0siCT4u/JCSw8yNFbruDs8OuVOhgeZmx4xxkmxtG1NJ/RPRkLmq7OEg6YqMMXl5UXK+fjnAyDE5NP9dGJTZjb1fqbZpynEtIsigxZoIkjgZlgbi0kn2rM6W5fslefdTXRFUsRk6YVVdWk2a046nWCFW2s6v9GFEksfBsoJzBjZRV0kX15xGmoxhdmbbZl9Id3GxF0Fq0CXxabL/oD+mnAhSsqh3qSyI2BAOWxNJwe2o0oGZr46cv5ZBItJvaVnUzSMWLi2l3MUc8HHdigI/SEQpmPslbOqiUE1odJveFlts2KM5+ICzDet1enJ7SRpLXwbd0cEwOaH50YnQbUdZX3jyTg/T9rdMbQVMpLpokvsTzizsD23PPq+1qyeXcSDmNRJ3Is6BswcKJKHhzjuKFyn+o0eoZ33d4lVyTaUJCw/YUcbGV06dWwMSA7B/8DK3SerQKa0nkBbcoTsmzKLSTHXUcXxajDqTOEeg3l03uNJbiamr13VJi0vWMJscaPiG4dQLp4Zc27QuPh2f0PL5pwHjolcsA9N6bS4eFJ7lgjy66uVBtNNTi7UKGlJGssWGBBdft015KrMYUpkTXD6ddvVpEWo8NiYZMqqZ9hzMY2/BtDGMpSUNF0FjeBQc7g2rwy3tJUotHyou81fcuBupFx4/aFDjUraIJU7z2pMEwXf5tiL0j6VNEzUia5hKBQ6DNacZe2YDayyfAzwdhFJYTHVLfQk7CZXhly1N2BMH9YGxaGtAlvepOUyvzSKRbpfaknoY8KHV4q7fP0U8rnatGSRRegbRvMZqiuAOPHG3Sw1Z0xkamv7nJNDtwTWW7c5JI8z5Wejn39rULKb85oZfT24HQtYXpBIdDx5kZ8OpKPKjy1XWjd9W6QTuBwt8aS1yyipyHwyGgS1rP3E5Qfj+5Zqj8soKS6fRJMnAWGFJGF38ibno3ozZd2jwNaM2XWkxbERocO0lq10j/ajv0hjQUV1ay5W7RVqaMmA1I9xMYC0oLTawld6Ml+lbGiRVNSKi01In8BceguAnubtvC0K+kC49pJTdUU/nOSwTK4yayCKJGdfDjEvcZJafGdHbbjQ2RSBQ/2/jRby8iU5VG/QT3vnA3Lt68P/J5m0iuvDXJm4HjquqLoZFdj9LLGmU09Plnrn0xNaUg7uM+a8tBLGdhEOz9k0VjH0uK8zYQFeELVCAGPJarkR/N2hTWkjStxV4wdMSx1qTTb2gXyHW7jMk3c311oITT9DtLHLnKaORdzxeSETAOhaVSyY6av9ssmGyTTCInTZQK8uUTlHIgGOJY+5QyYgIA0Fr2brOmvTFrBvgherQ7FFNr5ABMUS8+mWQ3vnVopCb+uhKn3Uh3dNcbzlkLvzmc9Ps7TcpeEgaDVl3aL3GlwlMkQrmKRsCQ79LTk3ukcaj+ERIi33AEadNdv5RGF/TPm9mJsXW28t4Em36M4K5cZnqvvE1SKInm4OrJ65p/DuvHZykiZyNSUtewLsWbo8KYZR6TaujnxsRFsHTzeh0HCr2dB00bYzQfmQbSN4FujjDBN8HSXJs1Vq32YEnalrDCzZo5XvfsI0r17qjjijPHO/3rend1drEbxdAv2YpzZoplWMI2rGQEHwZW7ke7mHuOjJR00sArvn5WZ8xvflZ8Zr0YsRiLqxFJHK6sXFWOtp3l+cvnJ1bW5PBY6kzrjn0YKc3jE3tQ3lkJMJ1aZMgDWbdldU7j1gXKyvIZS8C/huFYncyMVDx0ASaMwNlnBqkBwvTivmYjFJH2HU4tziw0gaQEfJL3mxKtYdDkRtZgdQ/jo9pVETsw6+i4rJhTfJGtwbG0oKuKeU9Qp0VQkJ20Q7kWyF4J6mTRFTs682uu3ZPSVrW64zOwfXZjM4AvlzKsjYBsw7RmRofUdMVUUDBL5o0erO2t93RmEslsWe1hizjUH7pRl0UXHJGdF7Zcc3KpYy+O3OZmHxq/bBHO/FB+vT/p7pYn7CcUzOoDK+K59E1UTryc8RV+cZAomVciJJS0aeCide+/Y4h6yTqsyhG69hMKNzegkpAHcPkyMlnXG7zgRF+vCtzrnpx3/qeVtfxx0VSnMegy4eBy5BZ9m7pPEY398XxGLCVn8M7V9hR0Yzqi2gFre2kqIXAZDvr7PKYYYEoQuQBuKcZDusMkc3uLHqnzrj4t2xhaUOzlBhTJLwYvtIskMGpIgqb/cDvPHR3eoiaJJP2LEJzhwfTja7mtrDCjpgk7mQ/nPQnUl5MGzDW334rDRnx4yGhEoDctg6SP4zkEdPePkdF5BjAm+UZ7Yyqai7KsQkBaTFb6I5LSu9hZ+bBGaBOiJ8x1Bwj6nZilPauYyRMbWtMTooBRTUCLmzbZTGaJ2br02r0bGxI/frdFzWLzQDtQnRiD+stYUf1y8oJwkjCZ+utxNQDHuoNX6BiOZyHA2hYoqh3wlDkLBAx/WzE+IKpYwuEJijWh27Crd3Egf1QWMSRXrpV6niraDpgvTAfERciZDGalvAj40DpKS/FQZC49+Hr2zg9gM7KNToOEabseMkagaRaAapBhbb/qtfebkdH7PhIJNyFVpOiLw6Mgk/PpSGgbMxV8RjXLGavZZQSeWXxP+ETbiNBJI7ZtBKyb/zOQHOrT57w+gkqsqzXnO6YsmCTcvmmYIgaoeo9KupM2CTGWWxwvRv+jTBN3W3OCTX0rl0Yy3nR4JOCEZzR98YRD0Y4JYaHiMv9nmFTtRtl2quQqcp5M8VMWb70Q++5WgAzdbuz3NVJFz2IJ11egcNaOaJSEmmk9JC1pJjSZKcAFeyEl/eiv9NdzvIDloPMNS3FuujBBWkl+nznRrzxtLNIF1/XR91+wpVTV2fP0ZFMWBva+ZOoo2VTbRaEkU1rcCBfObMCjTByJ2SlNKMehJ1gM2z8Wk6K9HF1RnhhJjjo2S0WrfXGEkLNLvyrjM8i6ucvNNPtZzCTiHaZvsz2ma8Wx15JEyTjgVyGhx+BcwJK2Ek6P0Wid1+O5XWXqoyKZ5HCSV3B7Tqgqg+cJL0lV6yCwThdpc/odi3EPuEl7vdm0Rtrosr8YPlYaNi0KmjB2EMQ+Dbt1sYZ22JwnbwOG7zfyeUzD0l0UTSSCFRdz9WOen6mwg8aNVLUSt7Ken53tclzDC7ZorFmzDsOjkgS5P380mwySlne7edVG0ZNxJ5dMxujLC5TnEuORhvHISXk4aTww2UojO9y3d+KI0knYrobVftMn2RcUJYy4XCSr3+tVnTBT3WGxs8VN1VaU1BFmM5OqSyxOyw6AL0Zrzxi3UY5aPhOYS5CNjMBe99rWNo7ufUrbkQv1QZ500I5I3nE1PNll1RLLpdj1Z4I0YFxLV9GW0L/T68DwvbpoUqzY86ePC3QBBtYxDK4trz0Qkglz6ilYaVmfsyzg2VlknZ1IGJmQctM2rwpPgxhHcTikrr2KzVK2rRLNrGQAMJqJDg06jNjzVrJYZf+cM/GSRugWVqHG1vibKqjcPRbavUREVby1XFYXzrapFT68wV+hyO1yQ6NQNAe+MxwtpBnDwptQVeUSOcG21YkWNiRvJDcHqyGtsrp8Vhq+mhO0c9pZq10CxR/4pIZipqdn4nfqDluxkomt9MbPMOKH3OqT6tJ7UwwvySdVZgJYeZX1krumyxo5kipLzolnAWvN5JFnGY8aneyxUkQms8Lhqbxvw7nTh0qmHJJChyrgBK7LK3rQyKytNMHKVJoL206zg7Ibn3LlhDkmxx3YwOzZnKofPlhY9WkrHKkytTsGlYayuvi1eVJrhHXDK4KpMC0loyDO46de+4TBi3lcYW38oSoORD3InDDfKpMYyuU7zlVJX0HTQiWqpNcLoaqT1TDJbxno/ZiJxD576qSRymPs4pThYjRJyUnKZX1X22sk3q7XdHMTqs1oGb2ZUao37kWnVcQVEZ1XbXRCdEi6q1JZuHuVQQaAf98jqTg4UdBPDSu4p0JyGa+fQXiaGpI1zPwBHnNNJpox7kUQSsXkm+hC37OpHUtR0yBYodhl1g9fbt5eo6POQJbu8J1vg7WENDQbPNSTuIwLUkInc6NZRZY6hxU6gMMkGjuDVDJsfzKWmaBxojdmEeCgTL6nx/12s2pKGclK3iR11X5EglcUGE27UlhOtkCr/akkmZp/+AnrYgPBCRSAo1WNStApWxcqbjZJriNe1cUoppkQb2pEuUAbCbY1FvagjlTb2pIvUGsaKL1alymjlRaxoDjVb7s2pRDrGiy5W9JrdY0R9qklEdGwoaNVcyJD8RbriuNhUMmhS9UseBk00gHswNRWl6trAnpeo000qbCnpRRMmvuNVdGrLY0/SiDZwZmmmDdTbWSzqUgASINxTmmrpFm5pqXBEu4Cf3sQdZJXAmHWR9wE2QibdWQeAojcTFppIAkUbiUtNByLKJTHQBLLrJMASZrhbAEgaNVwBLeRZVaaRNxGUIva4VuJqEOYFQii9WEn2Nc8VaLyedVtS03nVN5Kr51V/Ur+dVSHqgXVNFIsF1TwLiJ7Y3iaIk8QF4vQ9QJSKMPUYNK7q4M5KjhgmS6qVYw1/i09mckuNw9TZvz3JUObqOl5t+VtzdXZEqFzhspQWCgYAqvAbkBkqHqNJIosW2PiCjcJAgTjkQhpmrKaAV1bEf/BUBr0TEXaoru+WBUO7vmAoTMKwAxgSUgDKQgrZSMIKIUgBaAIO6NnWPnEC8MCLWEgdK6DAHnigPlj5sR48ZAQwDRABZ0KUYG2yBq6Vpi0JtGb6eMasHjOzAiA53wA3Wb06LKCBvADfNYOVEZI4I8gKrxTo1DFOFf9Q/zV6MYBbzA+atg4Q+ecJOgLsYHL1QIBDAZUUk874ADSIGvujXJrJAkLW0nKiTYkGvgFg6y+TBSCATMYH/Ai3FVaxzgmAVrEVtwQCms5AHO0SqQBiJAQkMbGANyPkD4Q9IBulAo18V+SCKlUYNgRZEYFYA2CJPgvXjTMsCvtASDY4lQWZYsA6CFatn0hflM/YBBZwDW8i5ZjAzU8+igYIVkSgncBefgFrhliiksoR3hOf8S+fgu8JNiilX2IcBEPDWBjCkoQUuIollDwmsqEDwSzH/AyDKxhVCtAqYVThfg/tAa0I4N8Ce4AXbEeKInPIsVA6WAf0UOy1e4FiRdxQIgBBxeKKIe8F8LQDjx2CischXdfHKHETkLeFVmZCKocSZGnJxFEKKKgke2YHuxFyUAhTUDCrilAiWKtKhOokApMTDeCo+VJ9gCP1NYAMVFB16Bu9xTc4H7FDsbAWTXMlCeLwNmrx5SATLANknhFDFsxzjAVcwbgAAW1furh0sZVwgoUkFglFJTR5oA+SEukARzhGFqy+5mOWIrpA9r4TbVj+ML0fn5SrElEDASDuGKBUBTsCVatw/wdHQj1MBT5AjSAsBJ5V4WI0mbVj9KiyCjLQxM4p/ZicMYbQKBCBhcOJ+wY6OqCexYvfOGhh4whA8R+2rIf2b6KDj5X3MhU40VnkjGcV3apaTDm8KfDxknMMshGVAhIoXhWqEuw1HAa3xLKvJjkBcIC79FPDs0PlPdQqzijbBwBCw02rh+2JAQKUaDCeSRhhmkC0kIAUBPYYEWSLKKBvGLMxCEuOFhoEPGwra4qdQbwAA24Eo0ilZr+sx2TqEoJYyvJ/oVMryO1xZQSHemBEoqqzXUKCLAIbTKsbVpWnN84G4oDXIF6/0XnRVwMFtFDb7Ciuw/e0YChXv6jjtkweAU74wcwtLViyUGgSBEUK3tW1vC8qBKRQi4HBkUKDr49FEXoNeCmkrTli0jEjh97AhWGMoAMVhjXxhEsx8USKHVgyvOCXklBIYdWLFC3+hbDq394RVZqg4k8xqhBxN1Ko+gWwriHtW42rYfRBNq4oGF37h4NZkMgC3FCu5MFBkJwDOoA02roYGMYwG+4hmau8P42zEUXRZFojnQADgg5UopSQkuiT62HbHDC2K1PVrJE+yhQVahelTaEKNfxnqwHliGSHG4GijXiY6ANicnEAYMsCp+AyQg1tX4tMaI8Vx3C0UFIAJXypsKa7vgVzsAc9UCngFsQxccVLFWSwEl9l3aRmZVwIwBMlCCEDdg3mABYKBnkMpc4EPyCiwEDtz841n4g9gAYmAJIYD4QCs81+kQOdAdBUESxAhviksQlNExfgJLXJdkQELhp0xaqY4KgSi/HriGc4IdVF7WrLL8KN0PNbBDMR3EBSjQJmwCyYhL5i6QC985sqkLMmSv2AiVHkaCD2A/l0kq2OxgHRGHw3wydX6XYP2JYRalCUQk4hsuxvvCftGEouKevlw6tS2gOQENXVhogJWgFVgGNdWdaQvNwXSqnMPAImpmcAXsqiYkHfRLYdRXupZ7U17qKBxfOuD1LCxQSdMEO6gRHVoYjLWfCUCwsdWux49swCYeCm2EogBDIh6TgLbV0GZLKqSa3JDzULi8i2AK4vHidXxVgEnVsv4RJ1TFKikxUk0Le5FyTqN2Jf3Iq0jUDyILM54eiqmhP1/HLBm6RqbM5I8i/C1Nk6rJ1ff0KcnUZVYTMhPHorydQJ6INMU1OrwmADsuIffGLyqFtVS8qZWmShaiJoVLared55xMyMMJ++ARtmxqIy0AJJCjl6KSQnHgl7YIbtX1u88khIPXK21VD1y+JFw9cnbVfPBIPlUO7zD5V+2qOkhTjbEO1XO7x8wxR2qZ+1NPXCZIVu7wfiZp1KpgAM1vNryFSUy1hZ0a86D2WG7M69krgzAsFQe9oLBUpzmgVVm6tkpVeHCPJ2XplKHfgzjpClhMDcQdAZ0KqNzCgKqsChJ9ToGCAZ8Dz+Qv5ADPgija+mofAUAf2W9ppzO5KGZXEcJOwDM7XNoQobpggi0dMUnQlTdhl9LU4B1IsCq8aBIDROloNyAggWXUe0OdZrFujFwljtEAfkAkHlDhANHiAsgDWMBCVAVIAOSYCJfHK4AhdAkJYGdiBrCDyKmDZBZE0Z8IGpVTsHPnVC3JpbDAiJqZzwADIuJxGFrxXGFuVMYANeCwCAgBDEryeF6N80S+bEQKcfg98AA3BC38qEAbB/C0wDNoBQEw6litbgcYUDa0HFeirYAzKaf0BMJKFO1ESXp86xeZKjaCBYyCTVWJjiYtBG/YO0sZf4DPOGjupFRBkkAV0wcXeJKcD3wQ4AARAAsfgDvIOdQk7OAKf4+YcHErLu+PNNGs6BXzAllgGvQPQDK3QAyUDIsAyyAC6NLxrM4gSr6C545IkaQPkThokBVTsaq7JwO50AwwagAChEGwkSB8wyhKugYJ+kL1TXiOxCI4twQDjKLnapIXFwhTJZAQk4QOOJZEPygAfxAFiZrpsXNMHlGsCxVuiCrHBGsSfA6MvDKqzEQgTHuBMOkkQBaLoPjmHnDASFwpWQ32WRIABm9FF6Cv9WhVAVbgDtAB6yACACGgAT4A28aN5iqcxUgGsP4FMBk73Ud5it2YGY7wXRgUBQE3gOMAP6UCbepVIQ21YWa8J/q3QnCViCx+ApgA//Vj7oIANdCvis4AeKoLYgPAgpQ4C1eiwDWhLcjGEKVkPrAF4GvJypqDcsCQN3oAK9EiQCYLh484jzgVxAG54QJwAuQ0ezYWOYLPSPTYiYdy5WBiwAUbFZllKIzho9j0g5OAsqIsM5gAPKGKCSf1V+aAE8OBfogN0FYrBAWA87Q0lAO03DrkAsXwRnAQQAViiRPDAHynK+i37o7NAAqAaMABUtlmGAmG5yEASZCLuTNKEB7TwdEAQrIOcwCfnO9jigsTSVx89AkEGEOZBm9A9vC38gdZAJ/QYHAMEenvczzRBIIMaTUYHAGCgGhEDrzw5jYyywNmFHTAG7njFgB2YUWwGQhTHNaA4iBzUYpgcMQ19EWMmomT0AoiBmhUOYAb/WFknHbMJSDAkcADqgGu4PEgAUgCGCBWAAbUNF4XErqC7kwu9pdGAE74aygBEJRIUzrmRN4gUwAYiIK2QAE4zhHgARKBg1w/bIzgDqnDl7xBhr73UEYa8FfGvmBDhAEukGKQLLSFynkyBzstXi68U18bcyJV8AE4zxIAyCkvFARAOEuuEvADj8gcsAAdAKFECnpF6cCcwAXyADMiR/6MMPnklBOxROAsTMEQJILr0iEqSoQAWzIzw1gEShJQFf6uHkA0moCyydGQM52F+/zR/Ur8km5AOVEFRFmBwAN4BOhr9LVJKAO91De8RQ7ZytYF8AJzwka9FAGu/NZqkI7RiWnpILkGxgCRbBPO0m4NWdtPC1iKWxGCA6SAy71M7jB/VQFHQ6XwM2wJIga7AAsMDXLCfyhKSw5LAePCFeAB1njwtWils9zgXUADH4DdNjpQ0RzwxHoboa+91Ax0Dqmgz/MZq+XhAKqQGVgANBBdeAbg17CKpL0n5jQs8xWxwGIABmRJC1nt1gjGJVQA9gAe9WLQAGqiABeB+74JaQSrrA9gEhwCFmAvfAURaJedD7KAooDH1wVsgWdyPdHP6NYQtgbkBOAsfo1mA+BE3jSCDDAA0WUo+WYMBP0NaiGt4LAsUg3UeOk2FcAl1XBCQAnhrWb8V4ay8NY+Gt2MwqVsc4ICi+PQyCFGusgARRrOHoF8nAcEElGtTvhG1AeQQdu+MsfAt2RqJVa8sHnkCY2KsbFonQzhB9M4Okad+1CSNaLwI69I+pM8Q1m98E4zQnhzTzocywJI1wegDpFWW1i0DQ2Y0gVae0a/GQXi4A2kIJxgZo19oa7LKi6GvcjXehroOENPkKioA5sAK4BWxrtqAUca3n1bd6BlLZxAAHn+A3APzOj/MAS7ZLDgImVGMAP61imBycBYGhrC41j4oIkNejRC4hB8gQ3mgdPYIjbhJGtAKhWViznkR8gLQVjFhiK7BKwASJRWwhKDwHWALMsg87QIVkSqAFNQgkZQPsAEYozmaaYHN+lTyBTC7hVrkuMmWicCSNbFwCXGAhJwiNuNLNKwKhNEDOMgMDU/eOFLq2lmgWeAOkB7JgbKoAV6PrABqNSNvBHBrRYSWKAIOjhwyATeBIkARuACsAIHgFJGtdIBZPMgqiKciBeECrQgRUA4s0co19oVOVAHsCAfm5PSgDC8GgAACNZMGtDhBeCQo6iJMayV1ZTwwVvg2YUakQbXpC2qEYSRZDWZDAucgIOQP8knfLwOZo+ygn5uTmAC7EC9YCJ8BYkIFI114a2DgBGwBRipp+EdY1jAUJ8NYxgAZLIRigvw14Ya+IABgiDiABuxryzaMd8NBYjg2CD1UlYAOvQGQQHFwH9ay3yIVOMiuwSEdJ2YikGDODWQ+gPd+c6IKmADkzg0ipFhgVE1p4oLfyCKGsi6A8gUFn4bFIMF+DXjTPkYOxwyo1quNDTnmgAzDQkVxr2SQNca+VrB24DvqZLyAJI1Kia13MBBzxfJooESIaSTSaw/xnIUAxvA4rgdVweUAhikHWCAhRB7ZM9Y18rWI2Nbn6tujWl9MKngckazWNcsoBvDWfyqhg1sQ8ElTjVUDJkBbxryU13PqzQbkfGuhRAR3Akk1vmAM8cRPQDy/ofHUxYlDFoE2ABJGpCkI+sAIaiZUazP2CEkA1novKwQ6mV9fAahnruCFTWsUgtmgA8AH0QFEmsXhB9hKwrALxkD2kD2mspyIH8kvlAGQwMJNbK5Do8ZAlErcmV2UKIdggmuYMhXxrVcaFca7ROAUwA4XwzHgD4NNZ6MbIC2URGUBPSgvLMGCGDT0hUmuaTW1JrMyIUwawdyEHYCqQBfRr/IYWaay8NbjfwVq4uXoNjYFAUFaRDscpwRhZTYXPQV80vLsBOYpjjAUXENpML5ipEgDCgAyDXeRYzDlRdREa9FSwBN/Ix78ynFTGRBTsF6SCOW5nKASR8SYUA58E7vwu9BxxrSzgKQYBF1hZzAwi4E8cUkMF4oHiUhfhAMtWmcIk7yYoqIbIUuVBkiAE/41koZl6DM1e1ms/l5VgC4R4aUQFq9CHPiJm5+ygoY13QXC7AFLehzihhXo00NYeWDpCCVSRtOBIIwnOBZ+IDAniFpxHMAbmIBUAOCIL8MAsWAeLAwyQcLVjwqEcNd6vg93oq60CIxOfzJrNdZPic9gdZr4plMcsHHXhmmu1EQzvkRewaLQL0EDSySg8AYG8YDBZ3ErGYEMZAwVxivQ8Q1xkaxQrHe6iyDB2sCDusTGAMV4HXGx3+VIkAE3gWzACkABBGgBRVoB0zHVjmbM5ABLdywlxGKk4MVNegFLNfSWAyzXL+gW01loYMwOEs6vCTWiKcL/QUHokqBiMWA/dXYsYcpmDglHbMic6s4CAfooQxGNbcK/1bnFCETWzqam1gNT/OJFVAhAg1xGUASI1sZoMCIDb1DuDWRhghAsPCdEpVlZBCY4gHZrhuAZ4a5bNc//CHjZiCAPk1wbrJA2hvGCFsIpMAgc152YEi0HcWDqXxM8MfkJYuLH0eA2ms545u8cR8YJYtKBEB7Bzu2BuAQp1oeCMOqCH4dgbNXTZrZtySWkCPdWYMDlupGK4rNCbXrBCRBW7AoYhS5rKnURAiNSNeSnB0jWAdQ281iutNhIhGGD4UVKAAxC0Y6QhtIU01DEiAecqNHSMTouMMAbqTsjWU28VUISmQN1YDcZACvQ12Ezc1iUNIJvjyZir4FZ788bwU86qUGgMoATHJIUat5ECY5EBSGA+h7/4phKHA1cp2H9mA/0CLgAswIr2sWUQGsABt/SMwoaFrOnMZIwrv8EY9ioQAsgaeZIfZpE2NeN7CrhBaQoj5KaicPkUBYqDu6ZH3iD1+b0KKbABUOQVFBN580gJPsFLICRnrb2CATFrILEAnIIuADjmCUiQYfDbtRSr4rv8DaCARhB7zICuwYoAO4tZAQCeLX0gA8EaDbZNR1fL3ihzBZAgRDACJayEtZmoBhLWYgQhEwGJa2zVSt/BIuBN3Adi1jawHw6BfjCZLXzFrT0ABioAyEF1Mr5Xp6Jg4HaPgvE6SC1uJRIFZvwL8YIXECR7AmtwKLWiZEfKMXngOvgngZh2jpZ+rTQQFdKl2VRW5ieNYM8MNUiRyECHhlihAUyUrsQW54XfqyqACy8CxFBnOQD9RZLuDpzFsKq6QBme0qxwc+4powGkwCnclskwptsV6IG31FtUCYCV1Wg6r6AbEhNXmUfwGLWMbYO8oQ+4AiNiKiArLX9Aoc7SDpa7dkXqtyeNY7OiHG+PryPUtYn6u0MotJKunsXxGE0tdoWvENpV0C4OoOUUDO5A+IJZYIacA0LiSKdBZ0HHYx+0h1mrDLV+VlKoSBYAB/XIao84pQPI0tX4H6DwLSBDDCaioQ3wA6AChWuhZ4YVrPEAalEFG5EX6uu9Wm+0N4gIuAO/IFDYRq8BoerKngWfsKVElUviCdAmRY3y19syNxKjpiBS94iu463V/+DM7vgU5xi4og/Q9oSYR3HShkNNgO4Zm7gGCYbv6OytaYAAGcJKyUbvearuAytYiAC3ZERCqL0AVL6AytfapAIBIFjwfiJTxcBkyHaqqQoQhVrp0YBla9fQCQjhiQhJVrGulVQABrkHFWvk4FhVrWq1qkStPMkNiKJ9xd2kMjoY/CBtgglWv0rWNdKpkBU6pLDZVLUDp8VHzCRm1DVa1ateSqpefQ0Jr+UmO1a9xlXkwj/IgJ54Tq10bkCstYT7gtVEjRAiEoS8yOyhHNHLBkBONYPp8C5TL+ZRqDDB6VPCwGy1tGIqFLCcDQhzoglgM6YJlMGGtaLQoRrXIpgdCcYiACD5l12JAQp41rT0wHyfDAgDWhDMsgpmEEKIVNa0mBBsDhj0Rw1rVXcIyqmqIBdSotJxNDgCa1kta+M+FgRCQtUv/k68kANaxDAGoeRfuoVEkuq15Za2GQD6UA9rXOw41O1AE2Etkn1SqOPAW1rzmIF+LI8pAyqKJbwBBCdGgcixLfpnxwB1Cg1xK81CBuQBeSGhODdrXDGkhaEeYSjSNFeMC3RUySa7DiTvnE/2iUoD24Fw9i6WCRK4rKWhIeQ8sVlBACagM9AFBwQb0DZXBBSgJy1y2LMl0Xlkh1VwdCE0610KWKgYCWURpEAWHkL02Qta/oAGLWszrXUj8GAYSdaxNEB/Wtpswir054KZNRF2taHWuBrWdIMWwAZLeE2tanWtFrXE1razIEv+JNABn+hpA0J8gta1yNa0KhnJIBZJwWMIPK1tla1qZlW+i0Xhldk9b4Sogp9hF5WsUbWorE4FAGT3D55BsGvtEIekiyomI7hEpAF3aR2ggyNro4SPla7MGnPFBkkAWDK0c1/nEkiwDJ0LAkIekAqPGKH7JztQRiImrW8zAkeAFKgFdTlYJSPxVL3ixfeqhpOrQBYmtOkAZ8iSc2aATP78F0kBnkYUzIxWsLCGs81eh6TXgBzt4IJ4JlpN54VBGSzzx/lQxhgGTPIDnjjGumSA2G8liVGxHKZgHw7zjzAaeYh1NXZq+fFUxtjugYkj0Yc119hKGAFR4yvNXd541AAKUrCJtYlpqeLhIEAq2QNMIFkGCkGq/uEJZgRGcGzq8W1foMSWdXoDEAPVxYrDaAQM2szNXTIgdiMRVEOVkBRzDF14ITggEQFlAKVAEOYxbIEJXESR6WEQlPGGc2shApP8C5KAeijGscFdBILOYMQA4jOOMaz5tYq2u3MpiUQAW1lj1EFtY3SRvNWwtr4AKJyiLpUBa2tVgBgtrWWOQ9RFcPldasqeB6XEGW1xBlOsyBi6sZxxmnK7FQDOAjaShzUjstXxiADy17FqyIfAP2BHDWFEAtC1ibpNltZS2sP9BnjUhRqElEEm8CuJBQph2KgrGQd7QELZFykz7EhVJED3WXdijeLRr4x/CVQm4JfMFaDGzxRbUhgLX0SAf8170APp+BBtSjGp0ZaqMQeVEG7ICVSRcU4BUank1azawfQCfmttqIWCIwO1+hwFIMAJUCg8AUggtiSZra3AwXGkSBjAKgkCaeQza/AtY/ThbrX4aQq21xLAjdtcWgAyNhxiAAq18A+F06kFgh75QSw05TNUe8BbvFMzhxJJOY0MxAYegMyIFxxwgk4SIgu3GUq3JhQBrICY7XcsqyEKGzIJ9teKWLG0ZjykihgbSsARQAx6Aem5zTYYu1qSpHCNabNzLCULVr2R4KE+A3wCOqpthAO2Q9NuJZ4M5KGMrhISA4p4biIBllG4gGSNAG7W0NrRAcESoOXaly2u5kBlgM+W16+PC2bG1WubgRuv89gucFAAVSEgcQaVAVdrrpIZ1vBDcmzcThxo/+AZMAFIkMhgGg0zrdAE8ApbgeXgDqiAxNBJBB8FCoYANkGrcbEY6Jb/p/Oifh8Lp6jd1ZJ/AC1RduM0racQiD5NdoGiAkwHlMkjVKMALDxgpDCWYgGBUixhLIZC30BHVC8sIeOMBOnEva0bQkinLl7WRGkmHGKva/rdErrq17WiqAVXNcva/dGmvKBC7XCyEfm19EgLFCVXnh8dFRAIYsAP8SquGA9MAWL4CDwXa4Ke/EM1hk/SB7VPrQ26ECM8GzxSHBRm7WHYIGaABPwJEMgVoBNSBgyA5KAZHACwEHtGvfNXjP8yqgLaRPi1fdjCm7XxH8gaGf7yhPDjwMTbxBAKAF5kAba2DQEEdxHtXiScWbVvxAolgSJ2svqJxQMcsmGUhLcbHI1iQjXVeQw5kaH2A6UFSBA7qwFcIqe1bwbFmvjZaszbXyDEZQUSYgKHYFHIAZo4Ftr8wCS8a2FoBjRzPvUQUIu/gOfa5KMnzQAWsJfgULE1pLAIqiC2WvKCAVPsn3MMe1DCtc72suiBqo4IBoIg6+/ak8Iw07BldrnYxEePARNarnSkHWvhraeGPHZM6lQjYDG7XSRspzUQ/a8bchRarjnpydkTB1/98ETHDZipf9Y0w0PSAfg69f8gh0Jh7WPL8AJlBphGkSHWZDjrXIEkNAAH6AkHxnOsxhaBUE0wlCF3a1Qdefii1uBVp0Sh1gM2JMJgZ7QHBA+DrgGVAQ69l9DHWsLmoJ1rLB1vGtH6lkg6IJ7WYEQIfGEDa7hQl4mskjV8x0KbQBSaz4GGVIRVyBNFrD0aQzazZtbzVQNvh4x81C2BMQPfwGLAD9fpsiQ121vPCLdtbJ2u1rhhkAgogA9a0mQH6Piuj50LUk3aMIlKq+nrwBOt5o5EO7GT81IhBCSQAxsJnGE9eAGDjGGfHPHzxHX1RAflAO51D1pUcEA+dFd4AWR10Q1HYhhDljJbWGWrUsCe/JH1ci9Nh9qJ7eUaogZvgBjAHngytppcdgz7CPd7I0rjF5i/MofeAh32do6xVrHg0zNHX6xA5EoRI629dnrwDyI5uBMOLVdbayAdbQzyhzAF6Ech8VxRBQIFsUDLBJnjY8SAXy1FObFTBDBFg0AA2XGXq+BxgU5EDVRwDC8X/WfXEsqUAOGt99B1oaVR4Eg6/JNXGABJj59hr1fgF+0K7qmEij3JwGsIV1OQuvBVEHafTiVJbx8EiAAlTKenBqOvl7wPaAlogH3ADaIDvLSWyIgTr1ogCrpE20XwOtOdWOpA4rVMiqtUimjWtJ6UQb0COOAGAHsdcmkQzeE5PAKa1kNjFoAGo3SAzh7eMmeybbjKo3g7BQ7sZGBMQiASyCG+xmU4xwFQ32MU3GTVEDt4igIi2iBbXAonGRpzI+onpgAt7WUQA+2iFbYBdEAyzT0bW1YwlsAYGHN9VTiWCHOgA8IIK1pBJJOAByeiWHWftr1KeXKYDfOiTATucYQfMuzAJUeDsddQABonWvW01eEctaxK1RsKz3QocTr806JzuDxxhDEAO2V1psTt8UamNNxn3ABnsZKTrgIeKAiPCiDbAy8QA7OMpTlc/jJKSh44wH8Y3MobJ1kHRJydYD2v+uIeTrEuAEzCJqIBBhyCnXFMI/BYEU6w89jFOve2xx8Abe17Y6232GVOtR6UvW09iAAkQEfiUa6wItI2icQ5kHdjPctS/8h2cZ1AkgrKM2hFjSDDOvBkokDr7B1yuUPr5h9WtASwut4Bn4Jzazaxhzcxy/RBWgPEmNbYHHtbwOtWHXZL4b4sEP0L4Tgzjh1bXiNEQqAaIgE7jnZspjgZs9rPR1gwMPv4DkIBtnXTCs+uJK/8NFQDfYy6OAyZAGKNRbjACCn7Nzt8xCdrFJgG0lP9ji8ACk7XqogNUuXqIPRojVDBDHX6QA40+M/fIbxBB3rbnX6QANvGPc65RaQ+QDc7JbcA+3+VpOHWdeo8BztX3g0c8YDaqBKmB4MQKYl1yaUgwaWa4dtdD2tN+BxDrwjQAiFFpoA4pwGEAPzriu1swyJQdYyeLUeAb/ocNyXDa6xhEJYDUUhX/YL9hA/az6oXRqQkyUrGcnUAPyfMkaEmFDEbWf1ApG1kQFI73Cn2sxuEdCEhZmZA64aoC7oAduJvDsb+oNnsDRtar0DYHoeCQX5oPC61tAFbGT/Q0/zrI4JOTwFQdbozxdt4Gi4+F1yePBOxgLMgOjXO6ATG1xZHFusUTQDQoguLrBKYHLq8seC1AgrbW5zrzu1s0oK7taUIBFQh/7EUm1ugxF/JkkWJwhwe0gDNGESAMJtba1jqTANSAMl13A6zmdfUADIHWU6AoRAZTa/4vDQqB78xWFAG1UAPa7V8m1GvWShazYim1lvAPpdeW2ty0hgDrOi152qg2hG3MiNoR/F4Fe6bPwA4dYf2uiXWn9rb5selxPf1f2CQ57BOegG01ru/PLNa/YTo7WErQPOgDqRNwAA62tWDgO9r8jUb8VEpCk2msuDXh5rvqAYZ0Al4mOWJtxEqkI1ZKBLazaABZYxj0QZmrd+BTZ0DvwW2jhuyoqVrsYRetoKldeKuvVRxSrropNRdoO7Ndi2twIhpUiTwBGHq8ChEORAg9XO5rlV1pHANVdZ/apm2AuRYkqxcQWLnIBhWtlXWMdr1tgL14h/oBKuuDXWarr6sRZIIJmUG4Cg04gL1ChllTHHHTGno0BoTWhGQ6nsdMjBctdigCAiBwY4QdoAXPAJlmzbxzbWe9Ybc1mHyp3NaSHTFOE2Yoe6hPL6pi0h06tK05tFgLn4ezIGx5gOuuD01PEQb6leYxHlth7avVwAy5gwmwNsYKgARiOsPVxVhQUHV15AsPKGOWtsd59pil9oNudj3gUC+wuMBBMCezMUzoBrTBITRNop7kIM11u4QBpAhYuK2YEdkYhagBruD6SAkADpgBq4wevgdV9E40kXCDx1x9lrc/VyxgHdlgIuvi4B7IAay1twABstb1ABY3XhQA5o5ORpMnph2iQCgA1lM96yGm61jSiZuuZ3o45w0kQT1oCkYQOWu3swfVr9YASm60UAHWWtFrXabrCTYem60WhXO6BurW+qQWymUbZAzdbzyDerWdrrxlaAoEtMteV2wgcgoaAHmAD/EMLdY96A03XvSQEt13sCJmtdB9C6XW3jr6VAM4jKzdfuiA2HWG00kNADWgLpThP+RYeh4VEM2uUBECp4A0HxJ/YqWa3r+YEagsACecCmo4CXYalwDZdD+0GrmLMoI7rCsRcTHIJ76DD6BnVBVBCDdMd2ANe4CUIA3QhmlrucOC7a7e+Cg3hgUwI3wy3Vv//IzoWWRIt0J9S4E9mAkguzoWNLiBbIvgEdTQXZEgMcQVauuLwcwowRACISsbGEmOvEgBXEA2CeeEwKS1dy6tVNxGkYMd1jqQBeNeqxBXjX4Dr9BiFruPqxn4usPegwAcZLV0rAs3dfgpCt3WYDr7d1uA6wHhH8SDMXWqLrYE1hX6AMOlxSABs41C0cCcdIgEpMRlusEUAUbrKQVFZ5NitfCAQiigW7r0B18REKZoHHuurcYUDrQpAC1hKh9BzoC6MYjnogGcdT2Ek8QO5wcdXBqgkihB9q3zAF6biqyF7ggRXaJgcGLkGOOtm0Yg1EvxATUTMvdYo2uxzASJAmmAYAuLl7Aw6oqvVPEwDyMEHDGStWfyqmoFCOqTgBLNbDUteHBDxWg5AAQv6OkyhtdYovgCIhzcQxkCVO7LngCFqqI6wOlAUqcAxNGxQSeLjjhURIA8RUC2QOz2nXED7cA+39fEKPZayL9H5us3UAYGY2pQEaPNPzBHeJW3W6yIAghOfq0PZn0iDQogbKgQmwD+a7AsDUvjKtBM8Ms6106a9SgDkADxcB7Lg95KGg4g6iDdCCTR5/4wVrwavq25wivUDl6oDlrbXhDuEB14ToSgMol1Qs2GAO/vLTyDoeucPXaX0CMhcx/BQXCf/xKyFqC4xLsN//JCZnH6saRBzEMovhVb6hNERn6toPXbncZ1QO/hI4MA0MpOPXejI5gWZDq/pXm26tCLVScYobMJMYOGzEKLiHdW+Iwx3VuV5Kd1bo3z5cBdHrSoQK8RM+nBEetW0BwPAx7kAMYJqAEqFBNghxNgZYgU9hBXoB8gCh3wKO8koOCqgKvilN7hz0BsHrJ0gWkAIjrF6wwEPXVRQRD1jAmKlwjIeujJQVg43D1wyIBsbCWmrkrW3Zgx018xAKI9fOmsyO50Q0N8IX3hApFhbLQBAFawQKy16S4DSKF/mAXmB5HCVN1vpiiBteIhCyiRtlrp86A26wzdfu2RWiYCKALiASnfGXoA2Wv0u5BzMMN1sVoIiCXIrS/yENlrHecbFgBM9b1uvy9J5nrUt1xZ638wGFvBlgxBpC0zMD5DO6OjGeuEuAPe80FKfWkG+tc2gArLWnCUzz190dKhIAbAheKFfg0XABTnEPotcmmvVmIrHr0l1r5yvlMT5usk3WUJ4wHAWZRA9EB4WvHLX3R0vWAO4QKXQA4IBPOg3swY/VrFq4trE7qDIvXI0AXBAc2mCkzDLZi7IgGrcU9+TUZJQtbSCAzWVZ/8at16YZBeQSmWvx3XHCqJ5+AJANyxT8mBbbXFtYZ/Vq5IE6gVU+qyNUskE+j1y5a4qtZDHTlVwu9rUDofpa1EAUgsCtsxAoQhL14e/DnJjpdwnSFXRKWaRD5DMRABJqqFaRF7rfL1xaqqmBhoqDF2ZiEwnSIfiRLLHkmMBvtVtNKJ0sSuIhtDHOap7AApzUkWaAeRO4ddFXi/XIFJgPMabBQEFxGqhCfYADPsYtlJ2MKHLBJECXhheq44zRHNoN8ejZjTR35I2gbrwG/kMRsnIGuRpEdGier1wfqpZ9C17B5AxhXrQy1ov1B66HkOszYgBu8iXmeR6+bDEx6orzBhlr9JBKXopFTTGWvxHgrbgbgsLO6v2LHfRoA6Ugbrr61sPDGhSHVAJh9AncYp/Vmb4Aq9d2eu8uQDR4QOOPrfLreB8yAzTXaPk961yF69Wmjp6zclxXFr/RgMN4FZdeFIBsEopkg9eQVokLc9cGMQIvXUEASL17MgNi9fGwBGZAPDkt8mQda+M9ZFuvU3WMNrVZsTEgLbdZxIDhEBUpA9oxeV6z/gTGkR9lwzlrOGVLMgCVTlmID/dh4br3YMJW63K9a40pnBA4Riq915aAHNdadRL9vW4Xrg71zLqy1IBmes4HXUOC7+AOm64bdZnIAVEAW3gSy11560OtYFus7XXjwScr18t64Q0TXjQKLXYZIMOWZja6uaA2mhX9XQroZ8EP9hDIyAU6CtywD6QgWICTEPuCUeITvZAFbrswWOXAMrdbX7jtvWA0Cc6xMm69RdfXPDVGhIfoWz10BQLPpkpauv8wHM0GZ8KJuEZYCHSBTvXv3rM713W62Ldd1DiKTBvTIHRwNd64B9fdErxyxyBg2XAWphCTSC0kxs3WxbrHN1qzNFzdf94rQJgJIwo+18N4Gp2HFWK9BUs/KAbsYswK3QCJsouBhrHri2sOzooEEA9gAGzEIuKsuMXwdOcVnsEx6qEiIgDqgGpeCW1YgfxzDWAJrXGKKTEuRgECuwIEgegwwSichALCvhjWvJRQjKEF7wDEDKmlRggDSGB2I04WGYbgrekQxXhHYFvp0Ix2UPQIgWkZQAroA6yC/e8WroFApgXrznlwzZAuaEWqgLUtWnliLzWhJUKJKcaRAVsC9bQ2rXFRcRduWnUG4YRyEhfLhLUAX6gZouHKNdMgIS7ZBzEUu2OZ4K55HWQIUy5KUCz3QfVxHxBDs6Iye4BKANiyTEyBTUnFYrnQASRqh2IJFwPOQG2nzfEBPE0IywSHIhzSHWLTsDExxgmZQQz4HwvCITBXDVovgcC1nApOgEh5pii4QJprTQQDQfLQMHtkpcMBJRExN1poIOx1YoDDyyEH7rqnaR9q5ewGNCCVUwyeI4BcSrrO+PGy4AMIk7EwcFwMtOE5yCIWRYmAdpilbsSreLt5B6kD3ZB0FApjNE+VM8AG5DRovWFFrHXoLTgC2BH8JDWD4l/iNVeBJjGmxGN2y2HhTdsSSoMvbKg8WPKDnA5/qgRiiepRGGCG7vRQ/ZD+KZ4IZf4IL4FvpDuEhqc0cJmUZAla9c13xXIRbFr+S1ugAP90DfESSHhqia4C13bwOUcS5NwcF5tuobb1rkEAMUEtesMxpI40B+1OkYJj9Zu2uugAcfrkK2NsSrDhjZFCrDALiEkWAfr6wEtbGkAqxpO0qBOQFpRIuNf5mBypg6froR1+1QLIvGF+unH5GfrIBMTysJOFWe+Aq5xxfrLWQadVJowHm2QS/WnMgRlASGYDT/AG+ulgBiZKrBQJHYEhMHiWvg/Ww5E7GAbIBGqYFJKCWBB9fr6I2UJa6ktcxQApPW5IAqwwQIFB30Gu3Dm/WdjrM1ARqEKCUGmCCK4AGnrx/2ITYOUQljpr6lA6qq2v172YD/XDidjdiVkfrwwBdoIM1siluvI7AIgaBdoaXUM7iCg+uSMggn8Y3CV1fOH9ZKIQWRAI3MNN1g7wAemmQTiMYE0B8Tr14Lwj1tQJ+u5kECJEQ7mHnOBKTFa+yqHZojgBB2HYuP9jFMSqMxxZBr+cQYv6yRUnCmAjCwSPsg7QV7/KbiFN6ShAEYgCNnMdsYnP/kPuCbtFqdQTDyN1q7NtRoGsoKAWFrqHQezoJtiBQYIozWEEERSsKwwD3mnL6CW6UzpYDxIQYNAHwlZEBO/Wolrni15y4i+tfa6CFvXoXA5GsDIIFDFV5BB92UoYQRqgET6ylWhMdg5CwhmKe9IQdjI5YEPpBBYgMOYccsMukKPSH0xAT0hIyAof16p6m2DQ5lT05ZRvCJ7VsgqoK9ei6Az6xqFscdAWb635IkNjiJ7x1vrFrEVIqEitSDuvVRg2dCt7wFrZPCgBo7DpD4AEqsL1gt63HgRfbj06FHN8UDxD+Av8TVqryG7Z6q8HD1M3bDYZTarzuD5cz88b10FsDbNYvms1RBwtKJU4cQ4M98A/7S2/QgB0YYARQyHH9BsHTR1pBhrl64QstF79BjqRT8VPsA/v0LgGy4AB4Bsf/WJkYvCKEdUN7cQoUAf4hn4oNeAUD6KU9AM/AlwgXtYXJ8eEJAvtcSTB4/R9trMy12+QOhYDAEBqaR30q151iZEGoDYpesCOIrzrekUU7crzICBauJZ4FsQNxBFuNL0fgoBvvjgKdrvZGJ78Jc6AbgDjSJshkIHVMnoGpgXretkjW05rzZGYfAGooQbevebWAOqFO10lgjiwkj+CHvXgvQ2QAP7a//YD3CqvD5yXrNL1uXMLtxjA7SRhwXvrE/VjoxM7eiUCz3EA65cg8gfJRLzdZwOz83W3wAA5qB8dB4ADuAAx4AewAgFMEREGnfnkWspA3YlA/ccGr+Ip8EtOiC25ltg5QNqx6+i9YtPx74R7FAhJgC/sCUDchAC41ovC40q1/UmIOLETuLqQxr/rKhICwkJ6zHR+DJjF4aQjT6eh3KHLCThrYCFrPo6v1SYG9D9bpMrOUhiI4Gxsen63QAGqBINkI+gbBN6N2WK1TGGBsSEg7/rSH14+kEctdfWsEVABego8AVCkN0Ej0kCMkomHkfVIY/6wqSgNQzZ/AWbkm4RL9mGf1YM+SX9WbWY1/Vy8EB8tc2IIo5ggWrX4lCOMCjmAt0AMWAnRryp4V5mOdujbgYB0AjeKcC1hOaz+XhEBvrI49wsSfwFMaz3AABBtYppgQbjo15JAC6NeQxDstWC+46c1tHEO0djmrQyQRu2rlnV4BMCrcFa2tVmgYoUJW13Ma+D/k7mBwLWP2rhbViXdK2QR+DS2A3gwilRodEG7FWExBu3HX/6iIN1mhQPvKANpxitAU7cwAWSoAKTJkYPiqyBIz8Tm1TIOJWFU+QihLZmWUzkeTBa9GFlCPhiDWhv8q5AK8gKz1ie/Qqg3SLAS64HsTMeQHWqhnkB/IgHFaU16OtVB7Rx78wyIAVl8PApNhIkHNrl9hqEoQr1lRQC4IBHdhNtJDoMCeaY3QM5QDU4LMKhb1rPGsIZ7KDSnbatt3E1WUmOwUyIP23m9GuaZphY0eiYRMANnYDrqIwBh4RsU5kC0IF/EGeeuSJVbVAvWGWjyMHmk+UzCfZz7rgJwDnXKgnE71hBywHyQO1VTfINwlS2JA28Bs1rUPVh7wBCNYi2v7qU2VguO12EG26YmsQDCfolAsbnsC6KjdCQNaKCiJPr4NPIFKqi5tbjpRibXXLiXgNn7qwXyClBSVvZu1qe4VfMGxFMH8qr7mZLewIy8HGgBTtedfDwOhULUtWEasG769ZsmDGJUmIMEpMDZYlNImsiQM7XbVrElVUp4MNdeN0JUeAaY0RzAVnaxxFSSUim3p8aUDb1sG4Jg7F09wYu4uvrV6YTroCq9a0ijcUEtZr4kKRiRNeDYWrxWLUd2k6oJU3kHzFHqgJQuVk8EsRQUYGDQtflPwbQJUww6i1/WQESuEF/hDXJzTAlgQGSDActcmMDVPx8ni2z1T3DE8XAMoBx3XaFru8QfcdN1aB3WtGn56dAZfqB9amusV3Uo/UY8mA36AM0QJ9TQq+J/xVj5gCt1wJvLP1bkao1/hs4qUENgZkO1gFcvS/Q4dAIxKMDiWNRYBpus95pxWABA1DuDPGQBnBBMvWvnYouQHD63kmmK6sbNWjTqPLONQMFxXGmULV2g8OCbTmLJijiHE9Ww6BAnWs4dub9oOMiVgBtFQ4ADIfcQSiGAUAlD0zY3AWuA3VMPbbHL3hYKKXkI4u8n+1FZ/PXbhGKKN25/EwqqJM/wDq9VZqLgTVh4Cf0gGHhNCdczABNAZc8svQAJ8EM5aAGiCetW9BAGhieCFK1QDW6tUVBduqgkNeUqi7wHP8Cx0hkwbkC6DCGBYpXe+j9QZpvQTWyaUsKNXn+2IErWgurAAGdboBF0EDOtyOV6yQ7oIBBSETsHhBuiXBZ9r+VRAqSlkmlIcAFXYse8UwRfYgOydcFAC1dZVDrTtlM3AFN8FvNCfNX97gczKUbIMCqDCrQIPXIMwXZ1r0ADntYPETvg3JcMY4Mde6ozoFZ2q2NUTSgC5168GG7fAI4Ckjge0aZGxRV61zIR2OvLrFUI8RGYcsEOJDeKhuxOR0+QZUN44AEBwhu2s8b5nIbj4IH7eG5DbZCCvg3+5sHi+HoG8F6CGAz9dE08EgXV3xDKSta2rRO/4Z6MXu2FqG9yZBgzxU/wZtQHigcDPBGeC6EpAuAGIc5ugLZ+OEoFadABcJFcSMBOT+aw30G/mAVoAnOrGEoYD6ykDYLFDP4QZiQjwsXzwKDDY0iBOLBNAbzK1pEqMYDZKig1tJAgQae1tZ7JzteLiwz1hbsi5BLY860s9gBqokixntriAMQkMF2lCuOCkAFE8IVIlZR3IUKT3wiUw2KSidgadbZH8iH4uvKAIwPrfQQHb8AJteUABCbWU6qLdSE269ZdcT/gZmRsDrvSAT4KAekD8iB7IBp0I+qgDaKJ+CB2ar+JUNOrFe6I9q8J1auSxIqUbksQjuLUzAuCHvdRE45C4wv+oX4AG06hwypg45dOAD5gdJPPgVEyWAKZw6eg1SwcuIr/31EOi3ZRM6gRYCQV1A5mhCqxQ9XIoA3zVj7LCFXSmataXJI8AO7AOQuIPPEydQ6gFXIbr+QV6mkhpkkLCd4AjYbu8ecuIn98mIbTmvXkooGxMeX67FABx+v8YFrAI04MXJa8r9d80D/dByHQIywTQAJr9fw0TBABk4bGv1rn6+kaCdKCPEhZZcApIVMG7UWkJ/LCJlbEaU5cKBSvHxBBep1jUJGr4o1S0mk2NVBpo2k1iXKgNhSGmmS5WhppbCFIzkhalVRq93tXUau97UsXqKNNYcagFjAxpp45UCXqhjV8fah9UTcyKk5UyXqxNNCxq33dHn2rk00bGr02NKmmqvtVX4jzY09xqLo1JbGp2THcat+wEx/UKneMsG5KWBGry9CRNJkcmiHTvOhFB4qq9gJpyYCT4CYSHOTEHAQ9jV9fqCNNczIlZ3kWEievU7O825MMSmrkrDTfTM2El8qrNheVwjtjTRqICvV9sa5+1XmwpftQxcr75VxXq0Rmc7GlK9SJqIyvUz8qT+1C/Kg+wUM2xv7Va38H+1J7Gv3IQAmqP5UGai0D197Gq/lRZqKlGYvsapmAEz+NeIXsog5tYMJCxr1LCQqbYRn1z5voDJKhb6JsosW+htsJi1E7Xqa7MTsoo69WlqLOvUJyirr1P16grUSHKI+2FlaiDHcb16uOUXVqK0SEb9cmeRUnoiXlT1/gTiZeerAPRSvKgL1bLSxC9Wv6MHbBGtqrApgl6vN5V48E7e4UBjB3lSHzx97gtu8I7BJXq2OwRV6tRwZu2qGkhXtqhr1cKxIDfxR8qc7BKbTAuwT16uXd4DerM+VCdqnPlQOYigHU/saME1YDgvPWwLhuZgBW4S7pcUxNDD1dfZj3dAbaiugoFTwNgyDtfQZZF5SMm3tJUmBG9gj6tgkwSWg6+2MbmC2HEeCwXuV+AYXioDtQIUIGPHAHPUhpq3y139omW0QPcLAOFRjq+8ITrXO4ZAQ+thBBT9QpT2JSHH0oBnISXOgbM4AScZ8YA4wDyrzJsU/7rTrxGFa4h8Gw9jjtovACzV1iVQLEsUnwBAcwR6Q+1QOvUARTHehuXt5HVCQ4KAsoAzmC2RwDI2Dfr6SYWz4mjKByeJGI18niDklFpgtElRKeKzVFQyQk3MIJzMVrigVgccwVXAB6hG0yj12Bh6vepUodQ4xoXLEHKzHdiIeWI/Y8YC1lDyJV1dnqKjgF3lCTuIaN9GKjC8IBT1wUXCoicK9AMW1dBdh+tXMTKFfwbEyqOPGGRqJyFHa8knEfrvDJxH0+hkmVAEgFJlfdEEGiAUSxHogqEQIK1xwgF6gBJWtZ/ZfoElPeQlglbmjThuNLXYvrjkNtSCBUUF6BT20x2ZrUkISXoMpWCegC9tAtWYi81hJa9EtcoKDETANTADqQEZeLMECmyASxBvAA2c8DwoH0tc8BuDGEOHrM31kgwsPAGnus4kJ6eKr11+abLyQBphJmRAA0ADtleAUCsJXpRtGLAyPkKbuYngK/kFW+grLX4TY5sIXlG8bGAG7j8w3WXr61eNvYHe9ZjwiMiAUMAcweN9ENUOir/zrEgh3rVNER96wLDf1RJ3g3WT4Q4KVH61T9fHkgM3Wzwgyekd1a2o8ioATJk04JA1NIeq/PCHBdYrU0hm8a7PAFSgutPBh6CD0gOkbXH1rpG2Y6B6Ru1OhKkcIKNjJmFdCEOpSg0pu1AyqIePwHhte2hBbiV9KCX46Os9I8sXi5BPHB05YdZ6Q74jpYG7ZhKLWUUbOINxt6w0biK8DPdBbiQsVAUHoL+ICIAhDCVHhYIU4BcEJhNaUmLVAApegsAgcymHzDfveuo/XGFAKxyFupFyjYLDTbXW5XrOIYdVJNSIH3ywLMxGpSirVAsUBWjZ16ChxAsTK6p2JugJ79aMiANBA5CIKwCdzEAdACJ6CMgAoCQ6omSTCMyQHRkqHRguPYVUgXzFGFRhmatG043EbNK2J4UDNNY51gacUy0b1eNBNqzhlCiiQ5gppM4lNwS4gLpABoQAx75pnrqTcW5LMI7jOSzT6Qi1rAhgXdGzSQDnesgbW+0gV6NozQII7mdJRT7BRkYF7MVT4D6bkSyp0GZqCQAZuWo8JXeHh+TPeYX0b2wNn9mAG2DoyDfDXWicOQgN1mPvSAKRveOgikbaT17P2IeiXyWvVWoEMbrcsIRCA78FgZA7b4JMQj9EXK6zJsCs6pGolVwYJqJPOGJQjfRJgWolM1CVqJaAYFOFhMRq4YB3q8iGRMqws6iQobCg7Yze0qYNuU8JvUiKFAuMAUbILC6F56+y1a0BhsVFHrijdYV4kODqBTWInAgmEwb+gENG85BBm/wzNXn0qqZ8b6az5LjWauQo2SwbYTcIAG92DbrRBc0AEGYwAN1emAwQFCYAUEhdQg2fgLshAkSGz6AoY314AxSNheVMGzUbkDfLXmiCsdAQWgGAUUFkrM0AXGAYVMXeUOqdVFeL9eZXEbS94Q52Cg9h3+sCBAkww5T8fzGwYZTQTA+0oAGADbNIRq+XDYHCiVw2xGrYL1auGxaTQlKI9X4WxqjcNuRq83Ddb2qOk1kXqm1xTuGy6TW7htuk1BxqfcN7Rq6ONS6xogfwesaBjVsfav1jTHhsmNWJ4bd1xcxq95kUsasRk054b+JGWxq9BemHUoAiEN9qY6lVnKu6qDcMwLu5GHss9bX+ZkO/vDVAkAwX4ocpeH3or0OC3JK+vZGos4GyFEmiYtX+zDQ5h5M07AkUgGNTIBgThEk1qnquuMJjMHf9UuUp70E1Aw01sQ5q2y4DDxRrOVfwiNdwAOGkLTGWgABr4TbQ6+yWi6yO9Fi0pwlBtQMOn4cV6CiwWUcpQ3UBcS0tMO0dLQ6BUBuxCB5Kwd2Nu9AA9jegILIyULtYWf4bdq3fcX9kjdgkJvoZgJHyDJDoRPExz4wPcYcw1HYGh0hgalBkDYZ6gZr4aVgvPDULczTBA35kBIsTXSpUYV3ognI4ZmAUWyb7ZNTNcO8ClvQkJ0ZAAEr5Jz9RHegx0AyqCOjV+NZBb/guJCVk0uVrbRKWnWPxEQbRAvuAFPktJIEwgkwXHjRsNPRLXoPlGP7G1f1hm1xRlI0hiV4GS28OUCW8xp5PJmkC+YMEqpFS9FXhD/DUMZEk3YO8SobgCGQB0AF5Xok4AMI8LoDZMBuxCBweoSeAZ8wKBYGIjS6wBGZExwYKeAMDgAxxt8vQMMCCiMZTa1BAGghoodZgZrKuNyigMMlmXfika5s6oGONvpsCtsQRKCWVI9cbAr0SPQprjamSyp6BaegctAPXG+8gBlhu6dX1ggVHVgGoFG5XVxy6w2tQCmNuJhax/CB+6vgA3S3o9INjmKIYNa5eg+lA8cbbQ13Fq1JiTIACK42jcM/L0CbwDt4GdmvpgYMnsv22Eg6sJpGRCi1E0BWiJlgRTQDjbjtoSMKAtAbQ9YRGG39YD0Bsow3o943gN3bdJ0wXGwTXoBAVQtkOJS8Br3R3mYsPwjSaf8OEUaoDTTFKI1w3Esb6alZLG7I1btJryNWOxqdWNda4pljZvht7OhLqiGL1dBHMjTS0auek0qcbeL1fRq4YrBHhsVY2jRq48N0l6jVjeQ/h2lE3hCVL1axq01jYXht2NXqaaa+1JnKqOpRZyp+OEusbcNRPBSs4tf+xqcvED5mPc10U4DTCWlmsOhU1u27EsDPyu6VB1kYrNXeuA/s1/jgqmNRLpSQbUr4qE4Jbnq2IjBMsCK5haDAQcVE0gheFQnnhezhO7AwBOI9a+TJBhgCcEQJvorfgcWsEqAE/EAn7ozvAfgJOoG/jThpoB4w14BCVkiRvpM9QCV4AHhEsU4Vb15ygMT0iVvjPPXsFsc1YBWQNurFoJvakIcU0sYEbHmLogAK9xzKA38b96AUEDJ2bj1+plIJtwiHsAVna6GDYU+tUsAAQbe1YDwADLQnbjB6KgGCbd2QHF8gLdnHkjHXxVxYjm+TsQK9Yh53AJ1wK8wtLmCfnIx2FFEDVgBOQb+jmWd+D60A+RB6mAngATDyKZ6KmFWrOKiYEI0AmZuKEAL4VHKVAvBVPCCfogM36IM5Qn6JEmEitsNLNYoGAtZEkPgbwRoJYAyOPYeP4TZR7gKwAfZrihwDVihXADS4A6QJkwsv9oZwIFSCHiACHpQkfESJwO1VLAih5awxtJYwbcfIfkGyYFHGcBBtA7cUE3cP6QJGfEAwBYgApIYqaRDKwB6yAK2sxTWZ+wxW1nMayHnAJcgwE3vSA95OeAm47kGsqr6E2QIqrG1r6MGqaB8nwiE2Qwb/biDFGvW1aJCo5jUIKaDHVaCmtNUXqJpWE33GA/s1lKBPSFUgdJF5nRYKc35YN6uD3o7AIUrA3AARJQUsS2E5lYFD0YUdocbBANCoCsTZ08CQuhHAwTOEL1oKV0C2JvLE2SAg7raC8QLxMAlwyFRxga8yg1lQgMy1e4MCFVB/kCwFeEP4knDfovxT2IRl4CNlN/MMPfHleJGbU+OAPv1l0gDwXmIgCeHB8lINcaUedBlkEJYRlU0IFcqsaEYa8sEELMBLE2QjYJAQB+eN0FjyBQ5x58Z01zMI1CrbGW0vP0+HX5Wdkhpnw4RcVDoBXIENaTH4yHo2CHJzAVhLI2p0iwgMcvAs0JUuYzw+AClKzU0Q0AKXdk+KhhAgP/wop0H9APXdmhIDFzYOzABIaDYG3kxTJthiDW0JkErsMVTGCgB6qAYIQK9ArFBMEqApkBvZDawA7HEvxAGFkKKQGZJuSIRWSbHgMKnqE4gEiII3sAVXk6oBOeMJ6pGt/iFZBHzATFQCN4uK9YEuAUlFODQP8ELNAgCQnUuCA5g7gAboKJTiDR3nOrB5mQvGAvDIIIAA6YR9iDUY4rwiRLFOoYHn+lfeifKZ7jMUTcYO4i0wHo6R6k2uMgJm4O7QPKTaWYSccIGIcGGcMl3JO4TvqJdIlG7EW9xNKgCgZiR8Rik2uEIashf0mxhdeoyB7dVhSbLFBRlAGxQXqwjciAb+QBHIDMmwmTdFJvZk2R9QIQBeBDJGTdBbAmLYNcCdpCZMwJ7Rj4WvpdF7rYJuIbzqJVeDZHB/vFXI4rK1WY9CL1UHiqb8URPicjlcVglH4h/HSifQ7IU8I2NwgodkS2cr03hpGAe68PqpHGjUiOjR+Fp0A64MQvYi9AFWswpk3G5Q3F+PIWLmTbm6vNABFybw7QMsmzJggrJtvaEMPYv5+BGaqwNU1UCZR4nzCvJhOd5COTYwtzTk3tybFbQDcmyaCTFUzNYh8DAEwgLOxLlwSP6Kziw+qktGsLlq0ItaFITpPJq/Ap71s2BK5TUAUCRpFJgqPBCCcwh6RE3sSzCxIZirmgdBxENoDasLOcQbZioPLV90HBkhdas7bAJ5Ai7RNKwkLrCcMoFYBZQA+vFL80PpZkzHy+VU0wAGHCW3iqGADv4xYU2PPc9aBXAytbYDwpswwAkx8gBlP25GoRCNWI5EhCssEaGQ9nIksV9+rJGgCKb6q2ThqrXEAq6SepFF2MJx+XzQHzqlsqqKogOqc5HGNWqoQZQ4wisU3ljK1VyfIwkfsHaNi3flfuilV+SBGl4dWgRrcw0XEaXORPmGucdTtapHPIkEa3iNEWGmk1Rr0Liw1tS0ASNdAIgeIWCkq4I1fWqUjFH46rZUT+Op7dFMjqFCNJRisd0SqaroQJ8jqesNLFIDRoToCIwvISjqki1tpqjkjQ6ap24IqjqHGhTF5Nm1WKliWMUazKnPVkbvD5MjERv4nUqFqL9GKRG62wVm7x15Vq2q9/hRvKoojfraqrd5Y4iAeuDbvPL1c0RtHiYdu8uiN/bvMgxk0kJ9tVjEb762BZiIO1XMRvDtVF2C2+4IyQo3glnyqmSEIO4H8N5rAHbNWRqL+NXUaiG+VU/aoK9QOxrCvVE1kD41A/KmAjcFpQQI3wZgxNRbTbJLYRAkKwI2Kai8CNpV6j+NVlRIoxZ4kQqCNn/ahq9XzqxM1FNbC7+VZCQjgGgIRuH8QiEbhthN0+MbYVNer1lFHyijn8YWota9Tc/itlFxai9r1Kt9KokAa7wsI3+Eb8tRE31IrUS4Rv21Yov4/thXsos13jYRvB2FEvMrr2R3q+HYT1qKREgr9Y8LAbVuMCQHB1BJRBjKAgPhrxgABHDJOtC0hQKQo7V4KyOo9eygSN1Zrag5DhfyyN8/G1au+6Eqvs/SJe5pP2sDhmIKaUYnMEL8EwqtPYG2+sRyYhkCPb1MGgDuZVX6QILhFXQUXAf1rBABiclTREBWYURwQYM4PqjR+IJLjx5IIJyaS3xNroFm8hA24lF0M6N/viL4oWo4BmigxgcLBwJi0FuAGvoDyFBWwMfOmAHPDtNTNyBB/XzEQtGNU3Ak59aDtg6aB31it2OUEojKzQ+RvydXycYtWYRTq4evhCeveOAlESJ3V1Tq3QPl1GSDBAJAba31FuNEc7lpHgPk1jmgprFVN63hCX+oDsqxaCqzRgDF3Ftukd2ocaxmR4DJBSZAv9QBK8AQABbyblhBIWCCSjVqWvqeM3ISfpxfC0LooUDeLvEhE04ueGF2m9J5CvIR3Q3H+gAIN5K4ldoHLnC1+UFlKSfIWDiikoR2Jrq3BZabhK2SfFGUXECYBk24/pQ89CRehN9QRc8hsUBUICVp1r5NCl4m6LhUUIFLUs80E9kIpogg1w/SkraYOmgTfMELnDtiSBiU6IYpu6aX2GzJVsILx4R4EA42CJPkN/rBbEAJEI0105iEeyArJkFiJDBeR1eQxDhVIGJLKAXeKuMUl3iYK4Fd4r7oXgWLE8Q8EgxHEPENLaaCBRRbDBT7cr2VJISGQSRSxpPU0v8AT+xXBwGKiDoXDi0oTWADqJTXEr+UVimROJx6TiHBhuhikKImsYvCnVDMwPvyZQiu70TkOLxWhjWan0VEZaiOtiLtDUQlD24ydCN/gkOjnh9xDqg3TccPejVmPY9CTDLvtB2OAgIDEOgAy2AaQAB2x2LAN+QL69LjYg+DQmmofwwQCQMBmzHDCe4R6LhlbYkWgPaJF31Dw4Sgogj4AhhgJ7JAwEgYYTHpJqw0O2Sc9JMEeifBxUxIlEkQbCb3wLHEldiSFLVKZAWHqCkLJ6ym9wANRJauMMiSDBaCHEl3iRdMB+Egs8SIhaPTKl/yQrMBbCQaiSePQFpQF4ZtX+5X+CMjNkzHHs7EEwCJoY6u9Ks0EOJGrwGK8AZuJJLULvIEYVFJDAK2v6KBBMcLKSaWIAxQDJyx5wQ1EkVJ0PDhHqGlkSSzMJVG4wPAKJJPAACIYS6mBFhUSzUTcVDmghbFTH5ZoLCAbKL0JFFrgvHwshY2roRDCan0CtNcpByiiwE8kEQeNjhDsAGtIRB7IckkVkQE+YFfTRfRB6Y4RW88TNvkgKCIBIpsCiBdYkyTN/MNOaAGZWrP1UIYAR2SNwQPEzbP8RuSpHisRDCSSGIYmiLlQDjhr8kQKSdeVDMcjR8RPC570AShSXQVFkcA6gCCoBjRU+8YWpm4EUjl+QUXhMibDz2HSaPzgA/6Jz8Ef3cwiSThhFWbjNwAxOofUIG+SWtJEsgCdHj2xIeAAT/KSsQBdyFKIQcg4fUALQqD+UD0ze+JQhNF6wAPk+PqrHOAD01g2O47WoBcqR+JPD4jUbREVR82U+ZNIBBIDKlmYTtWpDEk4TAVRvLOTgdSiN05HGbaxwIvvMmiABJiLvVu0wRmOXoiG81DuZtlnBnDKQiAXTWIOjlEiTXeoemb1nuXB0AxvCBmiespheMWxAJeeIhkgy1irmRgWboi0DNqJ/iGs9wT8EUHU6KSWZhHURDWAD0E5IF8FF4WUYG/2G05TTAhwoA8nGEKJGuzAIGA7iojhUugsS3UNEzdN0C6xJFtoDDCRJAAnkjyxzpsJVzr4agau9FBCBdKg/pIIs01KARFm7VNDxZvGMYGScwEaCUVJwwkGLRxw5uUbme6BJztrNAZZts+IWYbvgoWEPGnEmH7AMMIrewPSAAGVDqEiBlSQSpccAWszC+JHvenWiTzdY0acDlUbrcPZCgKyyAFIXxUOrNujpJ2allNhxb4NCkIQqI1m/NgVznD2xJYFUNVAJ7xC0zalACjY504AGhSBZm/ZCnk+vs9h3UkhUSCpm8nkmNZtoDQvQkFTNtpm7ckhPCT2Qpkow4H0EyzLotB7YQgK4BuUc6SQFm+7eAFSRypIKmb8CyRnHCt3t9ADTgAPuEnniBpmz6zaaADdN5DE0vkqcCVHEzeQlQ6ZZLJUtY0JsgE9MB+oDqrF7mb2d2ESqDYUkPYi1r5nOIH/RRxm2Zkk+Zt1YBrPcE6SGAAPk3nbZvHoArewvUAFtm7AkmVgCeSojYglwaV2hPd6i+YRjipJloDFAYwwPUHmeYgaFI++oNVAFKVGazcilQETQwpUsUAA81Gj4itZsOVRbEkXkqZIoluzZKZuJSoe2bKUqIwpGBKj5iTk3QlWbGF2ZE/GsanUlTuSp2ske7NpS7HoUkSlT4qQNwAL9qXsQEmtFw5hbzZ8xAu+WXWJCm8AYYTHB5AXQtbNgigK8zYHIR7epRWEAHN24uD9QHbZvVpJmzIZ6hFJm6YcVyZtxRIB+wAwqemVFvch+UoDio4OEdmARNm6BwCBmjzhIH1MD3Kf9pC2KkrZtb3IgObL5BWGaGd6gfUxgs3utiusSI3aKWMSiZueeIBWggOSBaJPitDMGg7ihOgAEbNjIVPGBCeZuKJITaEERaaDm3t6jHyxb3IvEk6Pwbjm18kmO4QRFoxDwZDwaPkLcknzZQSc3aNEz4wHQsHgknhZtAs3Y4keHN+QsCnckY5s1CpLMklvYCItHWajB2uU9gakk2HNxFm8EAHW9QzsIGur50VBFm/jkhnZvyFhH0UawAbHyDIzd0FRmc3bOb44ATxsEpVlPULUc3QckYIsM9QickmBDQEhxLObDOSL5hPwfAXjwJzNHOb/B8XqqtfQFuChBzMJskpwAcVvK03lF7hzdZ8mbCrN4IAGPll9ywVGp/oklLUBXhH83lN0AwMIiKoy6SVGVMM3gxlSDSoyAA9e0PXhL0NgaOz/TAFRU04AMEWM/aEeTTM4F0UkzZkGrmwUCFeOBZk5EWbuKAM71C2/FSATH0A3ObkWSDzm3QkhACQ5ioeSE5AAMdmwBGFhmjIs2YrAtNOPpm2GKgV4QaoAVE4CMAJNmyGVErGgmGohsAAbKPCJOolAbAATpIkAA4WSSjlGhygj+jfsIhnQRZgDMnH18CZED5L4lCkg4qC1m4aAG+ijvVhiCUbnaFlJPrKi0YQp3Jt2bEg0ddON+wjjuRp5IV2beeSBApMlXADZt2s3kuADrNxzJC9zYneRAH5c2bzwqUSVJlLhTuQL153WbbK0QXJHpzdDZtkLRvyIMPNmQgIfsRMKQuDR0W8yeSSNmx0LgFSTWxpzubrvwVSJEDkjrABGTFVUkjXCEim0cAGB5tazMxubKdyUnm00zeN8TIH552b040Z7m4YMBp5tJJZpxoFYSQwYK6KjQGgsZJozA8VAVpvCeEiMqzhvBf8kCSSa6aAeynwzS/s2Gub1nlA9hH1uENahzCoz00tYgfCADozeXkDXKBXu9tPCNKJDwVlLFTqM2/AA2sQTGADsHng5im5IaWbUnKNeZtVzbF5tjNBI0AaTeZ5pOozfwlTXQBDebpUAY3m75zc8+j+c26fUmUuZXmy+oElrx1so95oXoSWBpJ1KhCFRExxYysLsSY3xKrzaM5sw+oHebXtqlzm/HQlhmixRIrmJ/bAbHyCJzYLRwNZJjuExCSiy+LjGDhZv+82yfUWjCZzm5HzfTzwS82sZo0zedtruuwBLGsF8pBckLtsHFJNLED6KoQwlveb480JXm8iHnQJCic36FoqGSV/WFDchZSTZoBr704xmDVhMoIEPSTVMJIeQlLeX+ZMFzZ2yTdN5hubo8IaPm3UkgWZvp83q0Uw8AQdm18knWSTp83jtAyoyOlm6S3m/ZiJc2G+Q/OAYY1GxZmQVQPXRSOEH6gF4SkHElCYT8BYMAAP7gLQVPbEmvmgL82QT4Z7NngaNVzaXWuks2j+b4kANwQHKoiylCNxJbaol/N2ApJlKjl+TX3oEBsfDALpmwaACpFSTkIx0knEUfGVJfzfcrCTcJMmbrXYIuVBnzYauiScJKUYKvFCYgBOkh4AAnhIiti7q6IZm+iza6yTHJJFGALUNBlJKxzfKwIj8pLMk+bKNgAEVze7CT1khlKAbZAXIAHxmAu9y7N4dEiSZkI/IOdkgUDwOso3uARBSPpvNvEgJgDX0A+sk8p0PLcCW0AL5QQJJDJAbeSakAAdEjsiSWQBNUkm0SGgW8BDYehAF8pvyIwtIBOZoVEifzgOSArOUSXNpvsAtyjISTd82egMZDNuFwGCkg/iS8RU85grTecY8Dqym0iQvcAmxUpCmEXjKd6m5FRH8pL/cfIqe/3CCvhE4TiipbqoCXicwVEfNkISRSDAp4kmFgKhMPKKlgSQ8jQjBbnYAW+ePZkh4AAhCom+UC4QBKJFCiWsFscJIDObLkqYr3OUKiBSRN8pqhUZQueSgBAvljahv3A/BUEHaS/gJYLaPSQpRIiKABFwUcMKskgiACW9h/IkccANdJEZxT9aixC2bIknHNyMIHdQT9ag9xIUokJQqLIVHa1B1KCSWByzISoSSzJFjkkncTAoAw4kC40F5JNULeAyQLjQj8kk7iIUVD+KlxQBIpIV0kzdqCwW2vMx7iQDuIZ4kA8SW2qGYLb6FvG047WoXCeMoW72AGAMTZCo8NoklgAyIKJEnhuQKewmugCrNsvqE46gL5Si9xx80+UqLmJLfknbZQpNRUMkB8SUBfHskl5FTZJJq4kTzUPJJCX7j/ySZkoRzM1+SdrJAfEmP4I4UoF8kMi+WuJMIzefGACMJmMAAGSQ4WxxYFeEB7RJs4IVIWPhm8FEhWiQMpIKwkNwty73PoLb35uLs2gRbxcSKi7Lckj7SRoixQUw+UqGAACeEjkKyAC5P9UuAtkYVDDEkjACRJJFEkRvcJNAKw7E6lSEs3sRbk+OZFaB0LbC9yas3ACk5iSQIVAMKh/yS3HB1ub1+SWxJDCkkOAAeYAgBbTaSYFJHFFEOADtxIJGUH8SPLcG6nmAyS59QRewlKBfiJDKgB3SRTCpWF8p3N0kLH1kkpCyGsYCogrTeF1MDN3FSUCst4M4bi3Nmka78KnOFTuoAoGcGk4OwW8itFQyTiJImGblM0SOJGBIF0iqOM2Ykkuot7oW3I0RAoCt5YtebxoqRmnLsAAxFsNSoXuwr+SHJJE2Kg7QBcM3jhbI/YMkLCEkiO2jUeop2bMqATYVDNxEISRDVQ4vKY7RFsVE32BrZTDN4HWUHzeCeAN+QF1CRBi2Oz0X+qY4W2/cAdwh9N4UOUX5EO6JKdUnAoAspI72o7CSaLa5Ckk+lQugAOzIlRSb8iN9ela5snzRNEkhrKVpvAD/AUKTrCpELoOBqW5RIizfEiQ4Go3nA1aSXRJKgUgrFuFRJl8wjcSAjJLgsFsgCTioPBsA2SOKAH2QHCiSgIBrRb+K0WUVCzMifZsaYB2g4wqqZDm9aVF0iRwRU1kwMszMzJDqOB/zins3y2bQgAAmVIlliGAARSoPubVkqCfCHvcAYYQsZIS/4/eWPsqBfEi2kQ/xItUkx8SOaiO9KkcAD4qQ3iIU9wJDlMEAAGyR1N5Um4AbKNiaMGyjvqAfnhV2UQCIFEQPQLYkuieJJ/pURTeH8W2xKnkujrJJouEo4AdYVPEAA1ajSh55QABtmFwaEhKlmsxAKp+KAKFSBlABWEnU8BfJJ7d4T3iJcWw/kgzySoZIeLAwIeUr4OqLfxWiC5IA0A0cIARm2+VGsOjhiRFkQ0oqf6JHqtCZSTPCQE5meESLjJMMKjyuj/c3nDgLQqOC6KOKh2yDXggRKosESSIrIowFylQXgB8pUwOADiVKjEHHyR8GQyPc1+SE2hCT0gPwg7ZITMc8QtzKJERVC/BDt4QOJUnoAP7CN+kjgyRI2gwEkPTabmJPgwApCxneo6vAfTNhBSOFkj9Oz0SobqAbQqPjSMayi6SQLRYUdMDKSFnVIWzfP5uGNRTooLl2Rnm6OLYiABMi26mbicSBKVBMSB8KQzDZoRUmPqNoVA9kj/5vVxImQ86kIGnlBmzYZ5TbRJXT4QCyAbJNwUgzZsri2Xsk0XCIBZP9kgb9iMxJcUAPZWR9gA3gCAWTg5I0F8UrCZNlA3fF1SSx452FoKOSRgMJCLYuySDHhtJUG3N0UVArMAdcRxspB2UAUoHXoOD7mNZTTN5IebRFUbrcAqKBSQATxJCMkyOOL0AKVEgsXw9UQ5m8qoqZxmhGLYubyzN552UYkqN4VHXgAXZQS9heXAAEt0lJIVknSyRdFYrWM5V0fFSDVki1yQ8ZIHWUNWSOYrCVkjZFi6NwEkkNXewrJM79hSahY5IWvcAgkSnPNqAFdPi7ABEWb8QAJ0VPxZmhDDizxPAQLRqdtJE3VDNiBQt4B2U7fKA/fFqwDtZTiqJZCkBxqOApP7kkHZTpSocJbUVGO2JIokiPyRpaRkF86SSH2VIgADaKRVc3fTIHxWH8VH2VE8BDO4BMok04AfWJGsKj8SQ7pI0IgyLgfLJAv1FUABDHA2skWMtg6QFekmYqiOSpVgAg4triqOskiFwCXwANubiYSZfHBDLYkoDXRIeeUoIAdYVHe1HjiQbspNWUwOABZmyWygsgAOipEW8fiWTgyBnzZtOgL9QXUkGfNwVaJckgMIwmmosAAIfKEsVG0mnLFQ7dQsc4LQqacAA+Km+2uK0A9okgFUeOJFHEgvFSdzRCok9McWlhHRgG6uhkpIjgAGMt2BJPCsD1lsRXBjRUuuSSZGNSLbiGg6i39xguzeYHAGvyknZRFN5CMkN74D9HANLfb5T4eoNoksC+B3sMpLeV6iyipghbD1mcoVA6yl9lvvVhxUksM0GjlPXyiK5siY4cRAh4wSQpCnjn2IA/pIG4kIp6DxaGXklsMKTXBzkkUkMaiAqnAHWFRlOA0qQaMqEZvPzgApiTdEImSoaxwJ1lA03nMST9RBXmaFst1EaH2kjcACEeIJKA84SVUQN0UHolT/uhVJbhvNxuWzFchRipsXhreEwO4N9YIufDTpA695BecmuAPZDJLRmYDTB4F5Y05ACHCwEh2jpoB88U0GbNKOXBm+hgC3tC2gx8AsstGfjYDebitAC0Whn2Aeb4ffMN1AH1AAQCIOYIIvMVoiGXACdSiwA5a28QuMLEAMa9eJkLi4xxhs51uEcNEtSg5bQV4B6eYEnebk3JwXh0IAApw7lQ0nAXlGoVUBgRB/YAezCWFmTVEMaSHuEDxu5JpAThQDAOCUkXIbgxgg//AGMgC4aFz9Ajzx3dZH/AdbAd/vHLng5cyDfB4ZkeBgeBW4AcUXEC72Fe6QT0RbGRLhNmy1hoYI5u49Q+OKG0GYHLRT7YQG3gJwiE34rR8EQ/Dw2UO84jpmIhW5E3Dthi+3EWyCT3FFPTNBQWy6Bvg0LAQtH1OWjFSWjkoBK4wTdYAh0DWdDCnGOZTrAAW+A1I0HXWNYdDSoD5GVCEAdeQHqsEbpF+bjIHgQUoXZIfyknFO1LhsRNUalYhx1JxGnBkB5hqnHVtKb7iNXSm6tJFgCLCw1UmqsWJMWGhEdTdapRHVFuigSNPxiu8dVlhqhI10sS4SNH45KkdRyxIxI01YaquRRRilcwVKdzUI1VGK5WJagIhCdTSRrFHVoTqflRE2GrPoVyRpBU2umqHCNLWbCidVfEpcIAZTwHWJeU8PblW6vAiI2lZMY3ecRGzUjUkRvc2EkqbteVZcTKlTfEkLpU2n5KkvVvGGFlTZl6tNtVcqbLbVfKm+21T60wT7hI9cavVy8TGVTfYkxFYlKqb2vV6qm7r1drwT69WeqbWcGdPXMb1ZbwQcvVPDMXL1TbGiGUQXUphlEXxCf8Nt+jJjUUOxoivUr9qICNvGorftWFsIvjVxqbcr1PTbFT8ALWQzU2qaiyr1O/Kqp/DzKJrP49X8ME8dVEkhITpWrllFPGrhCNrmovtTZ5qKHU3+aiFCN//oPefFOptL65bbCK+uNsojm2iuptkSEbqbLthGWon2URokIPU2fPgT1Np+G113lVqJ8I3fXqX1NqkmCJJD1ZoLE3rMAGUQShoL14QhpuisYrT0gKNfKLNLpnB1BWtAfuquTBfI4O9SnDTi8aw7PAGoJZVq5EOFVaulZ4UabmrVtTRF8bgxpvh1ZwVq2NN7JBPJpVZBL402SdshNN5TSiTTbyGCpcVQ2I23yAxsCusBvpt/nI7SCJNuRdpB6VgkyoFWUmdC8TGDzSr3EVXKBvAIfNKWyJFeYoS4S7BTbXwkVbHYAWrqxQOgUJt1oFPgSa+YbqoPpkH1URb8BaeiPGcfgYl6AAoASESRqhgnygPMAPl3ExOqFuxipw7hcWtwP90CBOLJaIiMwoAAb9sIgBAwnhmpxY40l4GUhKLdNTLyojSFMOA9dCeIuMZog5mBWTELqAtJVFrXDmMGfey2Lgrfrn1lXxQJ2EDr8p8zB3xE9Oocigj6wHk7ghawxsUQguQqG0h4FXQDQzAFiA1KtiWYFHcQryC5LpBibqx1PxqiMTeLGr2wAQVbZ2idDmLqTWATJXHhGeQOY1P+oOLfFm5jxSAx6IqJgVrorTcFUiDlq25FQtUIMpIJW0RZpq+iAkvEvWkVlNCazCn0jIvhk4ADHqF4GrvfgB0iTMhjd4tIAIoqM7ICn4ATQEO1Ag6t0VTH6wGOCTqJZWdk86NlemqTXEOwg03BMQAvZxJu4qx6hR4BRkF33gMhQGJ0Ly9SvJgALhkUikyxEMkFUcCZEKX7B/5AD9GWauG2Ulf+C/2VCncJiN7I6g14nCESzPAPGQoiwBmRLd9c/tTtyJM6kfxgOagBuwBAGDMKh/o4ru4LheEbwBBoLfWJx4gMJeN4DKVBEOiJSYg4UAfn8FpUOkZGQqA3AYAHr2noblWBDwD82RH1BZ5AvCRV7EgkShM+gcIIbVELaSZdYBQnHD0DYqBk5oHmAFumKb7C1cBm3U9sUVjVLbPJsOE/ujayIS4bvawIbXAdnhDUQE+QHrQY/Aa/BFEeDL8hc+B5aaTZoDrPGRrZtQCV8AIH0Ksaej4HNIUrNgA7pfkQP28PEVLbTFo1tscBaS0CTALTIFUNlRLT/8BJeArFgP2kGAIEh4ClDxeO0pvAdjwNeqAWeooNJ5eApLIbktH2rbOnQ5IRRPYWDANJqG8QDy3hYBJ7MIRRUZEAP99ha1Dya2+eAlzAODgFvcSyULiMxzhgnSyLnwLYAE2gDTr48NbH8RfDgFMVDscD78AFYwaUgbZOGt1CX4CFqAGsAGZcDiYkt5CrHSx+AzAsaXSBj1Hj9XJQhUa2gSiADNMtRKKAAf6RDAZPNbGUgfdzAxrYn4BT8AqUI9t4d/gJAGk6Ww0Lw4+Av7wN43GFrco4CVoZE7K8VKSTW2z2hE2RCa3UIALkgCRKvYeDgAjUoF9MoZJMKWAOR0lTdA2sAN+s36od+AE9cHc1tWNVu/grAgNiwEHRAJ4B+8AT0iqXsbSqClUXWLwBgEO9sp41T+G+eNW/ht7sFdsa3VN/+GyMrb6pvKbZcaiP4hJ8atMrfv2qvjUJqb8r1BZWwZtgjgTX5VDIbyCN2moktTfVeroI3NXqwE1PT+KBNV1eo2Q28EbZDGTmotWURIRu1lEzH4pytj6/PPritepXK26EbDthBhGw69UeVtOvUfXqbEhQ/XJwjc+Vsq1ESZcd1N35W5rUS+6JRU3a2CNuuSAm/SNeSVvFMR+eraStitqsL1araqEbY0qb7sGOtqr7rgbarZU3ZerneVPKm4pITbaq95UTxMRVN9SQtHrhqVvnq2KqbFeCbBjDr1Ynyq1U2y2qbSto3qwwsDm/g+3on8bIoCQd/ZfZYVKQF0ApcgCPhaUVFUinVHgdfJyYA01IMxKPUKBH1Btb5/wcvH1XrwotHnZoCoKRuxE2iQSyAJnckb7D2o2VkAvOxb1atzUF4kTJAxICCUnIBbXEV9j07w9/wVOQSAiPg4g9Xmk0oRpwq9QBNNsRQh03Hvuv3tWNvrT913jqz3kCW4CUag020jH0EjYBYgiIuCucRW34qaEbKIEFkhSGA3DwpqARFwZsQJWreDxA+62n4YuPkFliJEiDZYh9yFsjMODcQeQs8jBHkK72hKVqIE1alaoLkFpWqZwJJH8e6kT5TJLwCLBJheYA9b3DoRK5OAyjYpCjNBhdbIygIgEF1AWVqCwOxoEIxDoNmAIl4QWTTI5ATbw6HMPSwMGwCr1ue62LRKe9SaVRIo5S3cicWAagaAEicdLApoixVuLvE0abooQHVq6ADYrKCZVprc4PtUZHgAnbAqozSoFVvrd7Vrjq4/dY0jAeBxZFCv4lBYQPqjVLuJ+Zgc9bMPhVEwFZ0Er1vZ4ErDAfut1gIGV4TLVvB62YTAujoYgUAScHD1uDwxI9bC1N+5GAagXHhhx63yVqCet9NbMnreJoCp63sA06eth3ahZlRLYRi2UJAappBONwNZAk3pD9HAk6MSQgF3YHUkFCMJCYIj9be9kDaLKduHVCBn62GqiVhgJz2FAbbgNurDxBcMRkGBZavHSCAZusVUyAc4V6PYXAYIlk5AQuVkECpX2I3Wxfzm05BrgZuH8/SJfAQNLSgS6IsZUXcQbGVG56B7nDj+DZxUZosSP4bx6x3cSGRpys08i40JRBnq7CUXx6KjPJyi4qiJN37F7rb/1svJA+eqqNlaIwGLrfy8CfoRxqgX0cEQ2yDQFagCZxAVcA/KlMp5Gfrdd1sywhlUQzh8WA25XrejQhoOgZmUZath20CGID4Rjpuxnqa24VDDGOSxR3VvIA1zA4xNodL2JWrc31tbME5acdetrW9BYbcNspOwB4Dblht3fW04bf1thHqJq7gFoAbdW+4Te9gCblE7iAlgQARFIAUCCxob8AIMAFGt+xsOekUgNsk4BOVKvhCMDXNoojB4AIKR2dibOYR9OMAbfK+CBZpJiolGMQnnP/yTvuCucBfVELkZYbBHQ6iT/SKQh1Db1gABvdPPInBNpJG3SGg86EanwyYbd5Lh1ehnmkLCGLxyvX+BgGCqjggjb6pqEI2yxQj41wI8BIjbbutqlkIHre2WQMeoyl8CRt+nYskbcANvJOA0jb+IwMjKKIgCyNsUxZ0IQuRt9jW2NJi9qgFQoijb8jgFh2KVmDKNuSKoKjbB7NKo2yKsBqNvk9A11qy6gbL3HN3EN+zSoZ/7YXr6Q7GxoQQE+JK62wESIYcHf4MFnjj4QDhgH4Yx+NKtBNEba+tDepA77gn30SY2/AEEH+uJQhkwoasIZGRKTiCNZitHEBjbYEsEEwESQFuRt+ZhOC0sDoUPW4IGDQdDBJQ/bQhxt+3AN0QHR+vd5gZkCDyBTyuModSyKCLRBmWQXMQdIWHooRBQyntWr0Mf3aMWQq0jeSrzcV5oAb1jGbZdLYxhccCj7EdJcW/mCmm13IU4DCrK3FEQMet+molA9cu1swPXNn8cD1rN0KWUHGKBvG2Oqi9CYYU8HLTj6NsQy28Rw++YZ/Yv5ZAK9DPtp83IwkeWJ2EHYntCCcIg/kojVEQX0HSbfjgBucgz6b6PeEYGtlEGaEL/dxMvCWbMAg6ptoHpBB+8IZEipxtvLNOcbbqoJdQEtSAxw+fmkIrreVQC3G3N6A9xt564B8Lj31uWG3g2ABb2IU2yRsE7+ufG2gDbPPmcr4KqyD3qTe8Bi9bZYxESCGW+D3qSBL5+VKxtoG/0LOglwSCOtl85Iv4EEMQK7rfZJr1hgBjbDhtmVOGnERbBg/gxEzbb7hNmANUaXjNtwG3OSaCRqWHkAYbc5JqPn50hAmX6BvW7YbafhRL2EqygdxcGE28TaFsmqi6o1+Auet2vW3G4H3kIZm2m0azZt/o23nrbEhCem3A9bHjpFg67c6DwOAlm2oMi9ylbs2wsmnHxo9ORowIu1cYt8OqEFPXBjewK/Cu7Iar4PgrFhkLgWE7hgIrQH02xMbb9Nu1ywmpi3ut+s203rephglGB3TbNKlN028qiFBNtVm3rDbgxtls2/YbbbNu/62h8AF5t88212bbsNuqRBOVKAptqmuNebZsNtPm2arrsZoMSPBZaFneIkOEF6bqxRQV4NkDC90Kr028IofuhJw29oNfwGwsNJxdbNpKT02xH8FFNvCm2bDb/JtqlkD/BFf8AzI398gSs6cjgAIDGZVtx8Budb4UIR1EDuPHIBgB9XhpIaBQCSoG38UeSp9SV2i8Q+RRZKps0WGkry9FvkqY0lKfIv8lQgWqApVZpKmvRCOIqClUVvzgpVRF0q0lfXohvkVhSqmBV4Uqg2cUc5ETdUWeLHSVlLcuC1TrQvYFW60K0LVetCV0lFwKtBeER6t51ByFqKPVrbOGj1buLw0LULpKozObHq2SdSuxKQ9FMmKLC1Kk6jkxVc2LsLUVNCz2JBk6hpoRYKKlMVUei5TFUEvKh1Z26vVMV/sSX+hQ9fHUxQ70wSLUEZKiJRNnq/wslumSQ4klkaHoOGHEqsjThxLOaF6eiZeRJAwtsjTTIioGEyS83mhLYRGz0SwMJHI1OeiX6sbnonjiV56Jt5FCcSCplYnEvcjVi0LgEw9aa0BReNDK8jWZ8OuthFG0SX133SLt1BagIAQwZxkqm4Ugmy8bn5ZgOsBMgbJ5NOSQBFQGodxRvBhuAygMSq24oFnw4wYJx4WgYpgc9NLsUVpcy26gk3YejgQ5YNn1VRHT4f4LuQJyWSo4oksCLdBkGY8zQjrQYNfC95i0Siu/AhXQitAV3UOZFT28xmRhfAEDCQaNwscIH7UoHHBWZK9CCdYFEFTQnWQpF4kkSxPQRhHMHwCSggSSU694hcIZ1iCDyBocAwtAzeoIutjGQIT4AyAB31wGxodgAI5AGpARFCDv3gUckaxUBnWJ/cAXJCJnF+bcQQlc2W6oajD1hQEgRAciRIR4nD81cOWAp6wh5iMCQA7mBTRmMRuPm4RhYpeIIqYA0XHi2AdFw1mQLT17+YOgNdcZCH0BN0ERMiQWhFizTAVsYZB0h81R1XkeNTcECgxQE0w6be+gRzqvG/kLoQ/KA7GszJyexzLS5ROABSxJ3frwpwIL9NnuD1PDqvWDJkEVeY4kFSiXL+rLeFzH8a31m3W05zCX1sb+AluALNt9F6uychLLwaSZH0AUvxW/2PdeERJA6IAQ9MisUIDGvYgmI8j4QYDiinCcXeKAROm6WSsloGfgSGIWMYkzpiw1h6bAcq88ywRyyidrfmNxsm20EbHJt1am6LWET1vXa2WUCQB1ObQBypHJmT9zx0TkozQWfomclisjzTcQFzijjAStYNyznw4hb4A0XQUrOBINDRlRCUKmcEdowghaAColgqDa6vuwFrugFQiOfqDX+GxYBHIw0XQNAUOIIIqjC8qLXW2YnQma6Db1G1phuxBbgER+EXL4OG2/ltm1zy0ahGbcnc6EpgLA7g6oBwjB0piFeAP0oF/wGWdT4PwJg4wLyQ9AA3gFzOCtAp9kIQ5xDFVLFfgK5DKHgPgEoXEEkjIOkB2PiVYgnpI2EsETiDqNTUfDM3gqds9QJO4dFKwAsrSrjwGbYTQAX6eM9PEPzTsywCJ0rSgC7YlpwHyGxrbElrEl0aObANtGFKJDqQ339AGtt5QZCr6FY+Bam2zAUxiEJE4GtbbYJCZ8AlfAAGNSNKPtPFgRSMsAz7bjKuRJAGYCh+4Cw4kIrbYnwcnCB+uliaDO4ZEAwOx6XhCKyQEvEDrW2swCchgZDyivgA+ttnmJB0UKByOXEE5Uk5bgNAgH7btkwTbgNpSm8fjU7Yg44zfCJganA7dixQB6pDEwUZtwW5GfBHgdtEO3pvQu9ti9OJxsTHBsd3hQroZWAc7hM9UE3PBxgBt0QhtoYebKN8DQduQO22CQyAiKh2/v8AzzSFqE18YMJmaNWILchx1S87oHVk6CJUvUCisDYejHtFYI0cXVU3gplsHLqDxsQpygyJRJkpCv8QDDBeAhF5i4dQJTKmSQSFVurSB3IEUUGNv+G1ogrxiG0ofhcS9NskvACLiN3glwwmpIBmBD3ap9CF6cQYJZTOCYN8XtfKlXkZQQ6+w+K8rKCayGIcPDvhsUeBDbb4kAQvSESoh4+hGGUIXiAH+G4KokxjuCqvNEHgqwP1qAAvSkT3egq9Ab0bSsN9c8M/1U/RsTW3xcApNsLaTLVam77QWSYINiGkNjW2z0glpWvKtEufgnzsa/CKpXH6tvcRw3/ghgebKYAF5gJuCVW2uSgSahZEmGUvkmrjHU2ZQQGahKFuBtwAEqoIDXO1ACuGaqOIardptvCYAXSqkNkGNWzeshU4gbuwurbWcIGlUFv4U7AQPRxkf4iqtqqgIFZAlrAh4wzlbI8UBYCKG/CCQwqrZyKCLhuUNSPbtSNPj7JxZyw3wISq23kwDUThME2e7csTyCmnNkABIQzXNVtq4qAkAtQk7jAuoBSyVWQUkjRH44AbCXu1CEaYjiQb5VPzUD6lU6lB0BBIXwxgQbFW+wEDq+qPFFg0aF1iax26GEB1Rr5CJBDbbXwWVyGobdKjAfRwW4gMht7ZdN85kgOR6r4Z3I/Nt9nUKrDhxfyC23m18LWAc1CON7EJfyFUwtX8OyMMGIvoPgH0yz2AwuqhK6SiUCLoBA+wnCJRRQy1ABglAO/hZNuoxY41A+LtoRDP9sDnvjYxZ7XImj8QR4tqREXhgzq4Xgg9owbHQLPKS++uMlIC9sP+kZGOPi8GF6rlWUaiAmMcFB4tE7YhJqytA70s74Gd+0KiUWICCJfWflI4NceaG81ZVSkQeFhVRq3jt2feJrgDwxgfcAWnCHqgnt/SzAmt2AGnF5ur/3MagEPAZjtJS8QpF3clkhZWClmTQXaqCw58LgkxcAlkKoJhaHxC8gfDb/nVIsErNkVMMIb0Y2LAcC1ZaSntdjK8BVK2bR0LYAO8+FbRm0kBxS4hpqC8hISeIRRkrgC65x9c4SDsI3OLN5EWwB/UZ35wkBkT22PpxBqMBGcQljYkwxJjIJW7FqgCLYRx7snZ8FuGpp7EoRCNlJI74Ur4am0s9TCb0BAJYoHYEaONVtFrsXddujFhXwCGYMKlGj8PA3oyKcgZ2KP2AZakGp7CTPQdjpBzSAx4Nn0J2fBnYr15x5sQ7nV7MlFKTUoTixc4TEojxcZ4uJeIAz6SjwZjtApbFOOqmxyDntjkCBlzATyaHU24vsRvDofw47bI8nRiVLHH3ry6ry/BJO8T8tlDis2tmX6CVXA9eg4gRR1KpRMAE7yNokbwb7I+EduPqrdV+sx6BpBw3kARL4KnJC02AJmAJ2gWZREN3CJ3jFZDwQ4F4QLn2BGAi8Td9cjX6RL54zxQb/a/jGj70gm/XVsIGVRVTCHX/Gy6DJ4g6Og8gQBGWEi2ngltTCwKMAONtjxYEgRkw9urCwSfrIRgAg8NvIi4bBvMgGCkbssUGhCGrZN3Tgdp8TAs0wYshLn1V/EoILgUprgywT2wInhgt4Ac1JXC4Gh2XkkK5YCwshfOizbcL11/vIlRbeN+T4PV5eC9FtghaoxbaUCrjSUwFqJgiaaShoFXGcjApUteiXFtkrIj5PBWkqiW5DAqAltlBanClTQWoiW3Ni8o2cLBaiilX2LxopUCLEGKVarUE4FXt6IrnI6noAKt36m7/yTLzON4kgaCasMVxBM27bxcicj4sgwSgJBAFDEzFVBzTfFYzis3xFCsAT3hyht5ywkdK76BPwuMKxBg6otNxm18gH0Ux66lXn9uuqAFlIb0JBIhUEzgRiCAR3WPAbcURbf/LN9lkcCP9xlPYcUNlJaql7fFByOQwpg01tt2R+DfrZKcA4dVrACb2NWBGLA9e9izEdV7h8CdN50EAmQA5wLqzXM4YTiMM6vI0ZF/Krz1BV2Kb5RcuGHR1bRyB8O33mk8+ttS4IitSpNt8V4aTbWRUfvnDbLBrfj/swWvq0chVguIYoTjkImKF0Ormn0JgoLrTZOZz9d5fvCp6+AFG/TKCBRs4Ah5xKVXQUkG+AZQfoLOLBrxcSURfOWHrxF9JvqPY4OYjyGZWgElhGI1wTrguK0jI+fnYnRgRGZjtHXz0qQXRW43BLIQS9teC4Bww1IxSdihIEBS1wt2horKlLNZUIHCgWP+CsZUQ5MFBlW56HOsDOFyhTx5lgRzIMgRHQATC8hwcx/bAyjRA5kOEsWKNzJPJ7+gh4YJVqtvTDxWq9yEivb/MmMCePfrYu1vDppE+CP7BA+0AvDDu1ssiFDvbQfhKoGBS6DHfikE1C7Q5O+HYBDQMHWLjy4h+aUodcNDEAUMS69vyeg34qR/sTfTKf7BbiCmtXMtsvukDgEJN9gBQDSs4HcbwP2DFEN0XEL0jwowtm0rBtjWmz08k8KrOW2Q2rjPV49fOG1bPXy4FBAiq8aN88Gl7jfX5wqfIbdgwd4e3+DdbDT5hMAFIyEpa1aG6+K0H2GDnQEnWKwKodPkv9lTiYqHBBOJCx9AUbvGXlWqRpI63Ulb9VN9JW5W1TkRuY62mtM2Ot6SQgUrdURs5U25erJStonW4r1cKpsVK21JCk7BdXqyXgk16snd4qqbLNgCxG80rasRutK3DerjVNjpW9ByF32pmvpZtbNP1i8alzTUW1tDK25xMPNhDj+KL1cn6IDU3QEbBKtyV6oTUVGptQI3H9qk1NybYHAjcO1sII3pH4YD179uB+wUs2xle3iyi/euHZW2nreAOrbU33ashyt270AdTbrKJva2Gyi+EhfmwiLUXOpuo03blbpEhZ2wgDrZ+VtA62vbC1HcJWoi9TY7fS8I33qb7thT6m1Dras9vF5mHpKYPe53q/Z7ePwRLTYAnswP6Ls1JFamI4SZcI6IaSVecqwAEaDVmI8oJiACeliXg5K5wDM4BEoIPKI7zt2dvO7XjUBgvAAh9AM3gIfQD/eDdKDfGxx/QDGUUlnEEAA3vAXUQ/Eo/AiGuSAzojXfiGbRdQATRcXvWwzAHFNsXrFjQS5k4LiohsjfGTS+fAPfqhlCP/AOnYHKfhLvBCpM3T0V2WD//k7Ajs6VknAkptwusAJ9F3jhB1JBognsBHAggonHFPR3n5GgEex8WgO3B1bezgMB3j9gNAd+ROCwHaFhCtAIo7b/ChRx20i4BAECLIAPQApmidGCIiZBvauz63OOr2nBW3W4vraVQKWPX9Vwjcuc3ijOTX0kyE/wTnqnetrwyAs/kQRuYdVX2Caytu228tTfUuDwSE3kYFXtxBGD7Fn4Bik23JNKN6oNKWJ+ZQlrCyEhx6Ig/wOBAGC7YFnC9hYAoYtxRdlGPcUVJ6vwoES24PKMXS4OhDXniI5e3NKEjYlFfGFmiA1pDqu3jZArshQgO8rQBI5CfY2BhkIBkTbqz49d+zgfI2ODbOPRURakDiRw6vG03sAQl+cKaAD4hGXiDJpp4tr2raUL4KlIH6OAfcR71gxaGCyOH0LGCdDGpxex4J1GAkAvfQSOMCrjw6k4cXFdWlNdMHOVA822Zl0wpcN/YOvGDSWBCB38bAmJIUQO6yZDILhwKE07YkXt7jq0S7D0LgkuwKgb3gBFFRGQmGUDsSeZo5YRAdvKmNJ1biDsivJqMQv1uAJ66GGCCeuuW3qFCfBtgIqtDnCaDsdJEvOIpY8C0gkTYDUwSWB3soafWRR34naQRpBqUIgN/8PWRfLDNMHcAhuoB3cEQFLNDwEGvjF2jjuB3gfbtBt0H24TTfB9sbSYwXrVwdib26bjdiPB3B2bqAdj13vnCEHaE2zwsAhCU73tgTkIK7fz2w1V4WdC1vBYEmri4S3kwyu3m7YxvtwiWwuDFAHjSVFPHqeegEPmLpIHIEQBEZmBE/XgWgRKbrFUwAEeJPICeeEcKAE0ZF38A4IB45I4M6eimj3AEuABCAZDOgEAiThAnrXkX9DutI5BAlogSYxGpAA2hqVI2WoakYQS4APSZTzqBIFJ1cqOwIUOiPhAHCPDBhA1gANIdj10JvLYjaCh4A5BAd3YGUO5lSha3gY7AJYAE2QXem2cqBcjB4B2y8aP0ONfojt1E1HRCqYrRMeCsBtfBi7ao8hmcwzh8/luY/2C47ZfKAC+3WUMqm4axMJgcRpdiAUxyD4DpgWupJrABORin9Fl3AjVodk3EgIDqEAdIBxykzrMM6moR9C6HQbsAL2UCNabv7EybaARj0u31AgLllKtZKTIXVsIUhBPLKnsWV22+YzEBIKgGBujAJwdtegCiPnODtvOZY6YSxuHCMB0bjB9t/OZ0rKKRhfYAvRlSoeQHEB7RgaoiZDBBoHZcTBIxZCvbaK6VrggWHaxqBOMBR9MPDxNl2xsbiwRucu3FWMzgBB6KFYiHMDsggFiTbMqthzQB0HcEDtt2ARA7OUEMQOzPrfsDhz62pA7Ett2QO1LbY0MrXB2AQ7/WgaYO556Fc4B5owuA7OpAAr27jDmj1sQPX2TbHft1lQM7bZ0ORexZjA7+hyUXnO/dBR9vOjwGcgqplZ1QMq1jRDtfsgGCUpjQH6HM3UlBLRG8wHcSiodw8fPUACazSTXBiUMiodsZCMqHf8pyqh3j0QdteIXJFjEmMxuBHWfk4rREY8pBLzBClyuj4wVUcggXrhAqhiykgAR2WKk19AD/ABB7l+FjdXJugA318FS1INNaQjvrfRfXCsBJGyAMFLcMOutuhVNQexAIe9MIDQjcSrRJNIg9hAL+pItFiioxqIBloAioANNsE7gAR9yNmwfGQBNsZJ2HhHaHGseIB23AmhAbiO+5iHdvB8R3yNAX/yPSxL3nnZgBvcBfCk48WbaG07ACD2Tm8QjeYCvYQUgMVwUHizjxgrkgt1hQBhIKHZZMBI4A5BA5RSGA1MpgHqACCdWhiMvsAVTOATADIIj93hpZ4d8qJiIgQbACTiaRAmkAbeJRyO/ZHfqACaoAUWqq3+QlJMZHbFgASCBK5gVMAA+SFRdcwjsSN5JzYGUOdXsPdgBzYDi8Ae9k3nuEQAIzZEt1A/h3m8ztKAZMMLY7DBzz365GaAeBURKO3isHPFB3gA8oAMUdhs2PQiDXqpphBhGEO+wDDWKSajWnSmT4eDClXwFmONSfizGDhHg4PcE5ofjYIeGlg8S1YA57SOCAWrAANSRajurbh+BA7UdkLmjVHd+YAIRBAlCrVNrNUBhCB5oADXJwaCp+AEMqs/UQtmv8sBhskzkAS1ALeZSRpR9fRSAAKk16QiBIXEaTii7hKAsm0IabApukjZDt8LAx8oDQABHZPnQTxiBuMoQ1rAHgYQ0CefFlgCDpgedbwRkICO15ThAjuxdAwI7CwpSCOyj8Ggjs7RhxeYuvMeCO05PjBVRKR2XgAMKcQ8QFfAG5ZDOB4M+AOkUL3IELQCIYDqmBpMgEiISygG9HfSTh24ZHQAHK+W1gPowD7hB1KI9Xb01tp/sL8LDIzBjvA0I7UQMAwAIFHaqRCvEQ5Vc86Of6bG3AGUMg5il3L4KhEJZBOMQEl1ivcIokgKl2bSKgJVkuACoRAJfDNUdp1JPvmFAtQ+oQ5BAIIqemO+k5gxxDuBBewAD/0KBEvvmE6muCh2BKsQO1+GagSHfcCBYHI1343qAd/7IArZUgyoR2edbWMdu6gFhHcpmv4x3IBYydkbUgJP6CiaQwpxPw7BMABUCDlAnYERGwBqyCRRaBjAElhmH+DpXACBc6CYZZGwZSGwohkxZsvb6Idmagg4KSaExqxg+VI54SIHmDDQTZWR24R1ZSPWYfGgt+RAKwI77wkUQcIgP07BLgR+Vwc5gZIbnigTTgvJDdGRIR255ZKyK1DYoKjHGsTDmOBnsCy2EW6LN3TCqAjrqBxZC9OwY1DBGIASspuhwx7Yq0mdOIPkAQ9XxQHIP38f88PDqNg7YXtu4O3BVcsaCTWIOOUkrjuYO21n0B2BX1KOiFTrjtnIg49UxaQXl+Fk/ABAjWWFy3bDs2afiinzGreJgqJ+tgIPWTp0Lt5S8YDpcFrFAPsgQtLGM5h24qY0Rwb0evYYWjKDkRYwyf23Q9Mw8dvxwCvHeb1zJ7VYg4ityYvmFqIj+Jq74xirKqmyCezHJ8BJLhEYIHdIJoibGOCplUuCrBO2/ZCqyJRJjDG1hxcLxtYSAbHRUMgG9DABlhLIKxZHk+6ATMO6UYCsDs5h2rlkLIJQqmIppTzjvQEBn3k49sHwO1PcSyARo/YWGAtGyZB213sSiFDYIhjbQO5+XjYCLFivAyUvwiA7UekUUtNoRlcrQRpEpawK+MQmQhaHd8cAX1A7TsUrNDIogbJR+xJa03SN870eBREvM3ENptyvJaUSb1gcZ5OAwDbawPh2MwifgdhglC9cCsRA2u3esb9ggZh7AqDYCjw2PEyurodt+AO67deeDvRPXgRq6elH26+sug0uCB3WPA7wd1z+GGCXDTLxWRxQ/s3+gXNq6VQjiWIIg1B00DBcSaQBGDfOWpEB2zqgMvt7RoJfrb7KTX620V0JXt2PW1iukf1sEdVWGYL+t2dtLgjcmkrIVU3+0a/cBxa0XSmDojN0QtWipit/UgkGCnbHxEAwzTc2P0aV6+PgGu/x5mBMTkNcyT2ANxAA8AALgw41AQSdlyUCLgAXBgafFBzCediAcwmHYF/juC+hRvbjQ18b20mQEtDtylB4msQOAazvEOgipKLxPZJwqfHsb+O3lTBQ3BcVgCiAhSdmwOw5NTEoDN41pbEQJCdH66msUxkKXRgvE7lYdl4G39gXmqDrBEnViUIdhoKOeSC2pr/AJvAC+waDpO0ncnhFAFJ3Tg72dtvIABEnd1CChJ2wR8O9EPK0KQgGJ6BdB2RA7VI6DzGgbsBzWDpgAmE7KXtu2O8q0XhMQVJ3SRMnSJP/6y8bcKwQOYImk7FxRTxis8HbGTshJ3/dIkyduTeFxXhSKjftB0q8ykN4b24EQCRKSgJgsgEYylGEOHKYDOTvs3IqTI9DgQ9oop8n39B2xYtA7cqJIaMAeHftttHh3DA73Jtyr2/A9Zhsi5J36HEwdVZrzGG2nOFzUVIuYsfgAXT6w4GBsnDYzh6HkZMIY6mk2igqtB8+BQXqtmCYGROcLn73jfJASk7jtAbMOzbgAcRJfx3hk75mEFnwpGhAvspM3wNa8fhgNHWGefHS6jDmJnNYo6gJ28OX9X8DsnNpBKI8JiVemjeoXMkx4DW2HkRf0IyUFqbiFcQzGV/XcjYlPzGh9oGorSKUYKlrnlQUlGqhrHg5CDA36jQVSlC36oacWC+hrxBws4EwAOQYn9QQYhtx8JYa0Ds8C5DCCMn4yqP9oe474XhOEUE+AHFNtNnwpTbDGxYNFJO7eo3C/pQppCg0xJL2Ie8CMVJdbU41kORaKipD+2igDv3m4PFwsgMZcxHWJk08izFAbPwfLiFaAE8LHOoSax2e4A8c6QotAtQCYSy3dBx1wARGMUqCedjXXCmgAV6cuId1PAPUWjOPyp4AsPcM3gIsKE5VAhTiqQByYAuoAawTJbqELcRrvwTkAGsdjFgEcind+g3MoUoCjwAcNtIkgEOAAuJwui0y3ud5lHdgEuerh2Azk7woYKU/AuMiuWT2UhQDidCsN9HK5HDDUTfn5fKq+ZAKZO5TEnxaBoyxVkAs8gLZO8uzmrBtyWBQXrGQAERmuRuk6RJ4Jo7HMc4wFmMGMYUVwBI3oax82KlOviqT+jHTtybwFvg4FKanqrBaBY8JVMBRFACY+RdOyFVSigjP6JV07qcVevxA65S+Tub0Bt072jaWU/Nn8CyoxyeY707RrSCyuHX4gdmwbp34k7oKgXgaG+nasqqGUA7zKcPAHFNAfxSnTuO/5Z07RwlSSfIuncCgg9p2QrE5lIEsVAnwgHTtoeEaH0YNCL+mpRTYcoCbCZv074yyDfgGIpFawj/p3UzCgGd6OkLK1dygIrp2f07H+JHhVLEzVFBQ7cUOOKdJBSKO/l/injv8U2xwid2lX2O3FlBPTsJrxyqQ56d3/TM7inyjg5cAJWgViIarBKeJTOLhtLEOFglXECm9MllSLhsGtdVWSVx4AckPvVntdvhuUBEYXQgA/OEfIG+qr0ZB1M7bOhfDYlwbZI2I/uUFLUNrifNPEe+jiKhMDQgMoWtANfYIrSBH1Dc9wR2MfISSPIORwiUhxwsEvyKdmdyLwA5nfA3DwIBi/8BKqEZQGg7E2HjbkBfA05HqOAiqoADYEDOGwSBiBFJS/lHfQEr1BPzQnrghjURYGJGlB9tQ2Z3JQEhgaRhQIUvm3TpWZwOhKMK+KVAGtqVz8SyMg0SI2ERRwUG2nhrTzJwAegg0oQULgIcAE3Tw24RcPUHFoC80sVndItSO+JrmMX/1A68uVnbQ4DrzI2uoF5pd81HgaGazsrzJfqAYnSX3kA74kXtTXMZ75giJEQmXOQIAydTRp4LcIaAgIbO6OCBbwCsR2mQUW6eYdgPgwB6zsioAfqsV1OXOVPLwBqzs9p4xs7BuEWg0ItnasThZw59ub8vAC9PAy6nxjCgJYGs7cd+WYYF2ng8wC1Z3+s7RaEPwAIQbB2zsSFJQiA+BqLIAN0gE2zvHIAzEG92d5bO9NncOXxHZ3z6oOjAKAGGdnbtAyRuINvgZWdxqQj9nYlwBwe1/s720SYi1JdndKzurZ2Rs7Dc2V7OxPdgWzsXmkOps7lpCtpEOwhO5ueGFA0QcHgG5fDIfggYSuBpFvEOoNpvsgJVhyzssX58M0yblV9AC6wgHcA4WQXM79JNyOQJyejiBiKUEu6Q3taFmQAxQWJIA38gyMYU5IZ7BAtDbCVLZ1QE4IEaWeUmuqqEntskgRHkAY/MIboDR9fOXT8AgSqkCKGXQUEc6hECjBIlZME+WdtdPKG4hI5C5CxfQ7Fc8J2eE+YWmOwcUAXEiLAiW+TB9OkAER8g09c7706dWEizvE/+x1wB+mArcof6Oxx8EC/AWzWOPgiYAYSQJ8ABZjvPABtVrvAiTXAMDfGN2rS52DHEYX1mBTMlIGyrCQzwo5sc/hDp2w6YHMzsonA+h8VittUuAW9C85TeZ2WpA+w+aMANblRwuDf6ghEIPmdhrzOi9UrWJnRFFaQCA0azO8doCNQCdJ2D6AYouE3/FF9eEhB8Mp4CIWtwZ3qrUcTVUIDWgrj8nS4QnItzeg0+sjlB9zAS7eR2eJOyEpmDN9BkU7ydkB/+CVMk2Rx2rXcZ4ZZAfGeCaeUeED0gA2ho0xCevO4LjDx/ihu4W87CCAf2eOjrBdXgtYYBjwbrGORNPoMVRjsq627Mqw1AeGZLNQWMPwxrXMNAD2aeNUkAnFqiCtmUEvgEsASCDEPXk+IBr1JQ8I0DgNAgKPnenIDj53uR0YdeOtO8zeCnzvt52587Rc2Pl2IB8V7f0CKAEiixshVLGGeYCvDJ6fVzhIg1scUGrTnbcztDpQzugVPOLk6rOLFQ5gboYl0qR+d+7pK0AVH4rkzwSbKsXccwTCCWk+8AHkgn87e2wbNjILBWD6JhQJAVbzvV7Q1DV4XyXygQVToAUxCLtoGuNhWUBKsUM9ASrAKbgGY7At1igLo9/sIHV2SEOB1bhhI07hfUC9JxMJfAtwXWxqI1FAhq7VNi8mHn7d/htSI2d8qQCNoF6t+IXPYKba3wEbVftnNYDX7dJqJ1+3vzA01Nxv27NTff2rzU3nsaZ2t17GgYHa2VvrU3ADqH+Vb7GkuJke1tGvVuaiJr1Yf2+Qjfe1uW2FqEbFXeWhG7a9R+1tO2F6u8TytiHWwv7fdepL+3nqbp+uXxQHx7FCfiA63JyiN+uXgIrMTb/ArzE3nerJ6d2nAP/ZGH6IVA5ug0q02edQLT7ZvAy6EhjACAveWtAGN7mzEr3JwdQiQDtsg4rAxl5gpIm5VtqhJoFXWwIujvsAxLh6DiYnwY9Su+CGTWqYoAaNY3LIa+QMhuEMZA9Uhqvc8ycDmAGnYRVbjIF3Y9A+2IEDa++YCjuDpQAfp4n3gY9tDPeCWgCrIAa543MiS9cHknFP7TrsFwi7G9lQ7glvZTl3wQbFjVCoeGXTajnLFyMAH2EXoiLA6HJDIK1YkbxnYQV+sIy8M0iNwOmtsCNbWgVqre+cBiMsXYd5D2VwnSYAX6Y4yAEXYrzt0F2zzQGwJXWvFRCFsThIp2yMA/VRYTzCwrdCsrg2gn+0QX1ghAMr8GtjjCnZLeEzTVDFgJ/PH19ttaUl/UZ5QMd8CFEE3EKGEB+fIaNcejiIK4FKkzvHoG1gxdwQaxNjSGJ5hujJdGAIGuGIuE9YC5ZDiIYHH4432AEXLY9byQgzTgVHACl1oZxI2UUqEy9VxkN4WZEUh8BCXZxghQl3xhE7KuBEu5xejG+xe6FMq8Lg8N63AW7Du6rW3QXR4Xx2VrgLtojkgAEUosqYksoOMAC2vE20S/zAprwkoxQXO1JVUvJgs7BZSAcfATEuMhMSFLvHfARS7bTt0YwBxACFOAAuYIdA6gcfr0PJ3CRQyd6xQS7cvMdlOOTvDMADOHxTcYvo2W8cIrWBRXhvGVdE7IH1Yw5Dj0A3IAR+oX4ALYEd5VKbvAINCap3hvIBMAUd1PuMATjIvrockENtGBvGGiXaHBDWpBIYgjn+KN1ENVBw+ruGIB2yBFMQHiEpxAqgRjNWcSbel58V0vqdieKBBJEONw2N2TXGm+mFxTtU25XQAbYMPehFAQhWsoIx44x0SqhNMgIFdkjLsw155xAAPyZOACpAFCJKf8xYtqNBKIcBJ1TSh0xpyJqEY5SAFpauH0l8QSBi5QZrGZQLwKGAwg3mRJFUsVrAC8elO8jvEihxcA3oocTedov6AzokKO53Vk97wz1ZPsu5jOXR+CDl3+KOH02dd0DPJB6AJJ/Qa3gxqqzftAz1iLqi3MgUdCOGmDYCLDwB0gBKSYU04NzCROwJi0SOPjSxop+89LoURKrDCFJNBwDBnXATrWHayvv8mPAC4A5OpKmJQHsfBeXfXf1IQRMcsRQxDUu1qXf83g6l2BBi6EANiUMnwhXgBDzAcfAGfAddgHaXdljAJRB3k4eGAKyNBw0VBhBZ2UhPq7uycVEDTnBbtAbgxpMAwpd7mcB7vBtVviABsWgup6W/4AtgHi+Bw4x4K7Epds/vCuNmakDSABrQA2T1bUEFjcC9QCkxR5S7v08Z6oCwQEuYC24BJ/q6ud7w5MTMGFLu4V39qEqhwT9XCFrHToRWkBuiixFdplfF6gGptS4EgwLA8LYFjgC+FUrVBZl2bE0VusIyUNQWn9OwhLx/z4Ugwf2ABjADidQ/aAAvYKJtqznMknAQxv0l2ngABWwWWMMHgFVaBO/RlnbdDAdiu2UHk4rtqV2eK7mldmUuxkAF1iJoRod5gZFdo2EhRXfpPjx24ngAx9CemXCDSiDyDsKBOnAS4xaMSgY0iAwBD5ANG4QCwctvJephhziv/Av2Yzz0O/ICAxEmDiS5AWYIPN13CIF0Tcx0AKa23HoKEcHx7FxIE4USP+BBK7c6qESu4pwCt1iNCAJK7OeyKSu5bCjUtyXiAePgT9MZ7AEpXYdUwAbhg204BhG1QFGpQXuIOgA2kA89tmThHcOjiKAcZxTEMfD8PuKIkIRbuKykRmUMCP6CfnC3cRGwgyM4XjrexiICu1V9AA5i+OItdCYiwNveAHPBigBVoQwUARwgP7AKlOmtljZL5x/QcQARO3NcxnbvDV54aY4g2EUyQLyVAvkzMCIOQg+8aexOCveE24Ah3QPpEmqSI4QITvHsEzFzwMUQO8aOmRGRgGYFCTV3sJcsHaVnAB0JULnhIf5YO0dsAB6u3IQH12BTMoHYgUTSHrwLiHbodt7xp37wEkAZ2gMllH/tQx4B77wAATUJkpveFIKjv3g97wxKkdbjKgAB1gBQSAF/Qw3gcJOLiHctQCXUQ5BADBRDPgJi3jPQDcsgYIYrtAf6O8xteEURqQBi5bcggB3CEbAHtltQrxEsAcggB8W0oAHZju/i2jYA1rqD+0EbAG9MjCKIrurNvoS4ABSgEuACvS3ChSB4SB0IPuMHcCBhy3qfi0K8exALH4BytDs12XMALNdh1xEbAAuZuWEBBJsv9AB0IB6Nf3GA1UAGzAg4NKbwFkABFQhq13OebqBgLpZJskhY0AAQBZ9Qwtd95CI6AATzi7Z2reYLpADFeMdJkk8SmAB+MAWuALhW39XYPjS9EFj+08cqIk62noC+rtRtojeY19AHUrLH4FnmRGwAAL4wLCCY8I47iBnT9fQwtAGAAS4ADk3l+AD/R3RcAUxwN1lIqHeKIw4IAQ2UGfAclvPMAEjrvpuoT8AlwAcSAPpHfZCxTYJwjwatd8YAMBkEFDvrN5+ag6FAGZvJ83hDrvbQA9sAgZqVTAEHXYzru7Z2h0gT0qW1gNoMidoQwkgnZbkddozsDjAHbkABCpNoiEESI2AFDKhlrvMt5g67oQOEf6EbADcwiqYAYubz7iFPIPLrGg7SfTp1JAPAiL3mA7wA1NwIpwRU7JwgHrigoCB2gB7DIQFU4uMHx1HFOBMhr7bXBZAd5gfFIO+He+jthA4j+0aadr6AArjFoEQ7V2x049gmUpVCvXZJ6TZJYN67eV8CP1E89kpkDvmA/kU51ds7wGqAC84qH12r/sm3AE+uxAHc7vAX12JEAIgAL74l9BgQsS6VpEScEv6Z2u+JNbNEAyGBZxoX1d3rwC6QA/rsCoIz7wQNdhhkPX9CRWDUChQmodGgUSGMdJnBKAroBxvAKNdjxkHgsHRrt5zBMa7CkARXRDjXcdxr413P+b6dYYmu4U3jJrvfSoKa7ydd6mu7awAkVwqs2HQgDNdnWkMwKE2iIZsoFL4DdQDmu8wAHTSTc13oZUvNdiyYB/gB1ruC121IAa+JEWu+nXe2gDi12Kpbla8a0ALYnAYERsLBDeY3vMSeu4t4GnrvPABZ673d4Beu8bQDnYBMs4lQkZBALzONE0kVIC8K2XZ4gVyRUAKUkzfruXGAi3AbOANe8D9XfTrym6wHG7NgQZXWIjUkIQBMyIsC0eusdJOCdJkcbu9yIhIAIMQDw+uS0hxGsTYx8ggkS8ZyLkbgGiaS2N22Ac7JoWipEbnYkJLXQBXG7p58dxu+Y3b04Bcqww9SpSTLxIoPsAcNj3VQH6McOsVU3P4AHG8DKUA5KAqmcIiIHWncx3gUCJDZ0mO8RbwKdgDKLTGx2B94vjdwkO5cYBcbuiK2jY79QAFpu+nTkX9A+N3TG7GdeE2O6IAG5UosCIGm7zjdooAIk3dabvCGg7zcHTdpGu0brG6bv0yJE8gI+AXXO/KQGt5g09A6wA7vAc4uxbXlUGjArwEPUwAKT6dJtvURwCXQBzi7a2WEDa7psS21AEGxvdM7Tdx5eCuuG9QDHN277wRDAM5u8MEhNjtQUpAmASP0ZgQEeXl/LsvAA3mgNrwaDBNthE3PAb1JLAc6n6KZyOfYi5ZgneIj2As6ARPIKk3czGT713Xp0DPAcbwOU3aKbtERANAA1+AFvgNfgHhbsiuoxgAyZADl6K8vE8bvLbFF/Qby8RVANHpC1nRCK3ja8gitn+8DCnFjrTtN3km7UvifItFc3dObuYt3zm7VwAF62yc3Zubs0t27m7X0GVakL6Ajc+xvVhcpg62sV+u0RDb5+pdnhCbEvHIPJjED4QJ6SLJJxwaHUNzZJAKVXD1QCCIbBMxId7WfKIgDJiC68wCBg5AoQTYDrEFlBt/AwoMCFFwMKu1KQCcbzUyI7eAt8ADe8FrKSIiCJ5AT0kQgiC6TAgoiEWwvToSW7Q0GTpu+OuGVACE7ww9ARDAIBu7TImsoCHXIloAK94aFOIJsEMoTwQhMVEA9UT6apYkR7AK5eYeyEHeeJ6uMLIh3ExsCBUoojJURdXAaAC7IRVqYzZgtSCfvxP5gAEgCwN327wK6AJ6IH03aPrt0ABZW7T1pd1u+AIiBgyXN2fCsBAWa1uxo3c+nRQAB1Z01hAaiIJrTBaXwFt2ka79gIcnwMe2jcTg5oQvjYc8eaJpOF0H0oDZpwNdg4tSZtu1lwDbvDHdJrG70wsfbwKdPGXXDPAAnKo+bdpWdLJADPvDpEQp+MyDd/3vB6AHHbvM8kQmAPcABBaIo3bbbvHdJFy7N1dg6TEUAELTtsLBUAARB8MjeJXAH2ruOCB5kAOAAQfaxKgA4WAjLxPy7H+gAauwJnGVUwN8BkRqtYAIWyByiE2IieOoqvES9Uc/QK9HffMDHt3NXsPLd9e6IxJnURghp3goQ3BIG9uyGDTvbsyNgH27WEuCnpPpnAn+jmiQD6Am0Aaxu4c3fniCxN22m7bzKQpEP43cSsADBJGSAag2VOqp5aH5buap3yeYjSMOYAGHbEfRCNK5aAAzr4KtABJQGOrtBJID20bRyBg+PknHMbtQHoBvE32ONePKoom0ITaNo3mUx7qVaaGe3d/bvvJwjmY17dnyAh6gHvbt30RS48yeAZau+tfHnrvAdpLl4JO8UbcLKDdF6BYS4LE4FSWZau69OkXIA6N2xO7Sk6SqTJG2n8AD7dxYO7ZBETsEF0WmvkxMp2yWUELdhvAJG2mIVhHt2jF8xQAU9uwNDfPbt/t3uO72wyQDu8tAD47sgd2BO7DfIJ9uy14khlzVg3VMAdvASdkEYvk/buOu4f27wadrju1e3Zs7u8d3gO7y510Du0ikgLnQQd36f81iAHEAGjkULnjeYIe4AUTd6rgDE3d4VuId2fW0yrdjdwIt4B8AACwV/nAYtVTdYu4/nwESH7ICAQlDgAj3IVeijOsZ5pOhsFF4StNJf9n/rv/V3bcADOiFs7FHLiY7uteInysV5WfV6P55FX/AZd2MO7Ax+I+hBqnd6rs+253YA+HdhYeIR3ejlTEd2NmAqmAMju0v5hD9jXm5D20kvgGju0DBnI0SPYA3O7eDd5hSGu3fGkCQpwr/sADdvZu8u3aRXhnlRto79icXrwANQB4VCLeBvMEW7dhbwETUEUMhneBRIAdvML6DB93B7cDHV2yBEKd8fbBLveDIIh6d29kAKnUV2uyE2FokDXd2i6od86HLu3F8V48AEUEEE4uyANLWJC1aK7uyywSu7K9YMru9n0hATxL1Qt+01YNx5RM+gArqhsYAcm7dq17Du713ajusliARW7MLgMVuyN3Znqg1lZoVUkndl1YFOAAVAgemAad41Xmf+QAD3a9LvgkhRoQoPdjnwOD3d6viQ939XouTNSHAJB3dfbt8KIfYAnndu1qNu3YipANF2jF87QiA4qORQQp7vjJxge7+6gGnu2eADp7unJIoWYRB8PHu/uVmmMA07wYwwqPdneeEK3f67uY92hu77IYBvtLivH3Kz9eIKPIKkaDCAJSNZurtIcA5+8C7Kbtu7tVF7bvIYJZy7iL/ftu94JjXbvN9ANdgw4KEdu0LQC3bsz3gOvgaxYIenOREGeAA7t3oU46bd45uyxtXS6gsNQ4G7OcgSf0CM3bS7vnrW/mAodgUVQPGNeD9CA5ZbKAHZBL3mD0SH7EgsvAoSAzwAOoAHp3HYER6t3Cd4Lbd9fAMcUEEER2IZqIgQVyKauy93bmRDb/Q4UIlzICJu99XZYEQot3DZ00wuOZEFEnENnT0XYEW743gc4XA23YEpBL9Rdu70KcDgAIjXdrIClhEV8g0oQdlWBBrnZVjayBPp0IgAOorHjVXVPgWJw2isogAO3mAq3cnXDt9286g2ndoluz73bjySpPQimbvHAXbu9URDSThyABjGYi3gMI6GknAW8BDIAKUMk/oIe1IoZC7ACrIJxvAcyGQLlGl3cfcRc2wzQEJndznu+Z3dE2v6eBOO7l7dpbWC2gFs7vohJW+MIXdxzuzJUk9gCZC5Ge7jHdsJ4Ou6FSwAQt2YU4JvABAAMDgF77vSxoGEAR+oBhACbwGeACGcQdZAs9UGX0HdoDAHvvrFH/gZG8c3u7xlGfvBXEBu045vdwEKLIgB59gn0ADGQO8acoIMdoFtwAnd2e4AKHd/EBLJUCLqg4Ihfu75MkcnuyNECF7tl6w8lgkpQWnu4Nxgh7tQswCFUz7dosKFB3cLwjmBw20A1HWPAkGLSGplRbtpzgAkScW+AOO4ghOvDfV2i0nSSIYJGYVlb7vLeB0tgusAfAAPQOgoHuyd2su7i8iAXuwwPcQTjC93mB7xXdtge/T3ahZiv6hhO7Sndxeu9wIhW8AE93f+70PdgGbJeVhkTgRt3FyAbHdu/u+HcXx0CWd3/O7z/dnFALe3ff7s45IBO7UHMcju5N3eXlvTd3qO7T0QObu5F3bsHtD93SnAELd6dtP7zDNrtboB2+73IgFwgNWQRXlu1wRPpsGXdt+u/A3cbniid3TB7iBaQfu28ADRqDHCBn40nEgM6a/OPjAYS7d2Wm7VgAKw0NMYHLtxKswXAAP/MZ4AIIrb+cACGgRcgx8AK3mBtYFPruFzxqu79tdplO/ogAVdAbmRp7wpTdiQAGpAFIPjt2o9hQT0QKge1pVA0HtR9FBe72g9pge7KgD0HsqnWGe76K8I7xM53aa7uJE5ZQbjPd28pCx3cW8BImp1gAIw93nu/QQFoHvPJVTLAkw9oHu9MPdF7sRoA5h7ULMCxOFsPYOAAVeIXO7xLODtHETJj/7s2Nh0V4+JqWmXAj3Y9MBI93MO7TdABXu4K3b67sY92CO7EHgIjuw32lyKTYmoRgA9w91Ye1pQlbZya92RLMhPdi4JDl0BaNRE0Yb+7J7dr9u6cYDm0AuD2n+7AHdoLu54PdYdif93k/oQ/weEe2CPbXKwxC4H3EBI9tYe6t2GrlQWsZQQA6sAb7ux8Pa67uLiBvh7EWcX4ewN3YX9wAj3hu7QI9xcgFRnhJHtEyZ1h75I9oWtFSPcR7vmupER7Znd5Ee7RcGcHuP93vy7AXdl/u5iPf47tcfYbW7zrGJYe3b2DuHvgj3Hh79kAeke3MgCV7t/D3Bu7LI9tXuyR3fZHtMcVnocLXibaO2MACeiC8dIGO7hI9rke2SPec8TJ5Y3h7f8kZHuxuDeEwCqj3cO7IooJke6K3cBHs6j2wh7EQuM0e8qPfJHtZBA+R77w9wVPJ8Pe67tjiU0e7eHdlXu1qPfr5Ruj2X/AnI9r0ezlEnXQIFWwjq7lMduXRDE0h9QjFYBLJQsINcxOJY6kQLT9vhHW7KLd7Me1ugFZmJcPJBbsNCKJM4nsQFJ7slD3VwA0Td5iEF6gBTHukQAPfQ6Y96vuyUWizHvTuJJ1wxwYXMe951Ef8BcPJD5AEt4UwEO52CUPTT3gAyAxXGHAtDPnY4tDUbpK272MAKlu9zvGxbs0t3K+7hsdrBuyFQVsEx0aBQvg+Ldv/hFrrEnuSFFpZx7Xvd6+QGNXcuFSmXxqvMjJBUmoLzvAtbtG8wYU4lrdlUAOOPYHQjjN3YW7vjdw1u2nXgS7vzN2X6oyXdxcgA6lG/rs192V/Mszd88e4jUkeXjsGgim76wAQLNEuPenAA3Lx0tgAp+B8e/S3eubsroApm7CHdgnwGePbJbuqN3YU4P/CU0AFP3drkg8EQAh7Jsd1TAF+Pc+8A/j2V/MCE9uxOEhPao7uqYBxvA6sAJXKrYnEXQDdLh+qYh58IU4POtRUvwa6Rh4s1nV94HO7SnATDYJRncUL9AI4e9myB0HszD2we7+g9iXu6ALHA7uq+56f8ZUEJ9Iu2iX+UQZ8AZaMQDd62uwg3e5EBtoBbx7jTd3xu79XYngBPmAEu7U4KTFu4BzDloxRD2bG70LdvFuzLrCO2gam4MQCHMEaFOA/JkKbuQQZFG7wDdm5mGtyiRwDkT2ehY1hEeI0PXiHNrRAQAGbAo4OO+6BkwFHbi/ABFkQo7QfYe0+7bjETDixbDAcDlJ4ezKgC1NxQN2bsgFzqaPuxLzC8AAry3ba7E8ALYiPwaANnRe5BdeY7GABtuxd0AVGvaJRqvMqkEW9IiquC0nuXLwXYAYx2fWRCd6HVzt5Fofq739dkARAM3e6buPER6+75f0a6ALfJm3bSUoh/x7qU9/uAEl3aMACwlAom7UHSMqe303f7vD5T2iQ7g3gQRWxuQEKbvoT3KFgB0mG+TDgiEkVuLMpZJ7mdeYG+BS9BgjyxhAzJ7WwsCye66CAvzuO0Z51qHJaBye5aXBKbw6FIom0dsMbeNGX3ZQVvAAB2a7G1gW+AP73lcjuUAB6gAQ1UaYREgAAPWAUtAQ+YLQ9v+u+fXZq7sNt2DwgEQ9kotDfJhGgDSD3qIgh4QWDu+UWm+nSlN2zI7OsmSHAIALju7tE7x2DQXFUO5eOUWimDDamVle7/w97Hu/v1m8kr3o1d64nq1KSIG8oGP6B1zJqCwtaiZRG9oIDyCqqiRmHbEnVqowKhsUlDBzagG47hGwHQQFQJV/xARzp5z8KwBHIYjmsHg0TZAho6gCPSffhBesUzpCC8FG9i55+endCyraSeqmBhYRMHoOXYXBRjfCUKM84JO0jO8BwtEc9AC8JkNJM80spQNG3NJZBFThi0YCEoZCQA77Gy4FkqSjAxlVMjf+JtOHxwCHPTTJxnYEisuXRsNZ9HzbQ92VUaMKVacuoJMyExoycu2HusNNGAnzCbCgW3TXBJ6Uc33yS3POQfgj/CLc4/JcHYKJ01IX7jnYoaAApDAHvodBDN4EW4zBVEhyvCSh1KPYt8wRUCr3DBD+4QSadjUKjcEScTvkJ99g4SIJfFHIKT6kAkdWfcA2BmAWe4ZcAlQizMAQ7KjI90Me6DPYz7jRG50/80s94v4JrTmw/TB22KjcONcdcQt6IW9MBeyI9EQS68D1O+usHXgA7UACEogk9l4AIBglvDtxcUp6Uei2fLFP63flPyTwxeog4Rod/W9yEUb/wD1RyGAtc9pue2TPEP+w4M2fTsPqUJtOAyUEnVSS1AB6oViuNEe+KPb87sDV2UOQNQwZLnJoCGlAQ0nY3gAmdqbH63P3Aiuyh4Qi0kUS8OZKOIAHTtAqiAcPQHGwOk2H9gDF5jgox4UYxuUXBHINJSEgiyYJmJ7bVIfLu/sPh/MyV6x3+Epr2XjEJP6GCUDiW4TJ7jGCFoSrncTgFCTT2Pgo8FhV07HyvDH3h4SFSbwMbiQ77C8AESuLgxhONkXzdlmCP2/EsBy+dX/m7XrVpOoPSXcGrvoE32O7XgkDWYh3UDjMyt+BGSo6MARBe2sIQwFAq+wYqA5bmEQRKtGGIAB0MBHB7zcN1sgCr7EIEB4L2fcb86d5MhMKPbFewFyRILAqC9ghe0QAB06g0L3qHgKwAR12IqgFe+AUL20F7X5oGjACwvYnhBIXI/FADC9uHu1H0CC6hjiQwQAb9xH8dFH0CEXuaVZL+KxC9wxTKFCDKzDK74tHg68AesSuKwVQ9hY+5cp0BCULSu94YiTqCVhhdPcrcQOr6JovelkDaL32bIt/II0cDtKBv3xC8UQ5knHAEOZCRVDVdsBdW8ZAOkgIGNK2QFanAz2JieydfAWBe/1baomoiJwkma5XIU+ywVDd9tA5PQqckDE1GwRLg8BrjyBcB2zIh8tnZ/ClmDCgS+d2VIAg5aKKuDCPaBZq0QRYl7iSN9pQJlURVQgDw5XewTw9xxmigiE9ABmNwanE9A9xRgL0rkZWtgN4wEARlCEH9NlfiuFQngIxtQYS9hWgqalgGFA6L3ck0ui9hGtAveEuxCUNRgsS+K14ZAOEvYBEy3ipjQ7MSIAbIOznlixviAARtgInCMrpPSpCWORgI1LWqu70ZMu25EAxADpVhqwbDDIEgYq5Pe4Ltn+F0rCbuAEEHNPeGtkDoT3kzM3XcQT6AJDelxjNlIRqCPBuYJNAuugtbvwd2Hx7jrd58eyveCm8BVT2G+75MWP8e7aACuXt0yIXx7VU9hjAHgWhhKQ2rVpEAh7kacuyJPYpHQ47pJBYXS9pMAOEvaO8RsiwHnKhYEPGksNrcUvTIMoy+AFEBawANyqCV9LtkEP67EA6aAdOWKA9LtUV3XuEujsE1bGCva+IDucFP+8Ls1tnUraPemXvjPRZl7iLINVkmcOEmjyst3BwYx5dk0MHsgHv+iPrp3/KTX+OUgA8nEKXhW6g9ioPypFkuz0vcqNBm8J0KkrQVcGgLsPcXkThT3PDE8pd+PuytDbAsAm9gEpKTfYMEkN+QFKZw72JVRrqOiRxewygD7krKZYw9YFqcXFEDqfmguxjgB2e7x7doUe3oIBxsCYXgexA80oIFe7/hiVXvlcg4Mkqq9sfhE11hjOytg0uEA7gQWhYLhMlIiod3xaFgrM8e8iuNXbspCPKIOV7wpd2rrNyvd+AT1RBNtEg1dzxe5lqSUpA7ZBBZCtG8EiaPB4VzKoPl3hKAHaUI2ErODTTwxdCUlycbpqDsgIIaBHLihRVOV79fYYhrG3lisID3mBwobynCD6sDZoEtoAvBRjMgTF1kSKFVIEysDTjIuQ7M18cEoHqvfZhzcl22WEzdqYse3tQm91CodAEv8zoAYgeweckqYAxr2ACAqmAN2hLoABvZDbRIHvAHldvy1GG2AZiC1r3DV7vjCRtHHXLG3cT3eFf6QQHCZrAGpJHYuBoFIl+7mAeXjgIwvEIED57FV1IXdAM8qF2vY7muxXYOpUOcAPNe4AVAYOtfmhhccFxqGxwK4yhe9wdVIzeEOIgJae8QrfgXveiQv4AVdOEiqAavYbhLXroblKolOcga2evZnXtbEBqqAZvCUPu0UPfdqj9kB2VYGfAVdSHIaA4WAvr2mV8bLCbrqAOveM0Cz0hMUQErYbRtPl1Copo/kAU17NdEL+ANuvZe2Tdr3MV7fLOUFkOUAHMZC0LB6oIPaGLde9Gvcw3u7r3y3E7S9iiOB6yAktSDr24N732WF2a5C1Ag3sfgB5pQNr1+IEMRhAueBF7Jv17VMAIDhDyvcFnTS6JZxkda912gndoGZADecIYN7LTiQhgK7QTu4Qtugh0gyZUPZAOmvfimgG3wuqwXZCBlAMsuHJiA4xA1K7JvYOyBKJvaHXt2bh1WI+FVQxoBMZhk3sTZoJS7ym9hTe+evaU3uS4AAIQ1qWUb3D8iHTXt8YQ7sQm30G9kFcVidgD4b26KbAOgCHWrJva9XuT25qugqNd9HjNHKiTeu/Cw/k04XAS7xEZoDE3su6BUoCXQlbce6mEjXXupr2bN7Xq9qfsKZvc43uXr2swEObGETCCPFUC3uLmxAN7669kDe2pABYbsdgBwN76m9j/Et1HF9vhGHx/iQGewQxAHavc1BS6LpeacbNuSmXImABdXs1eBEt73zGJFSJr4GFxx7FQUN7r3wNDew6EDBoAkb3WqQPa9gI0PuvYfzjcXXx/rAwwOZHLoug43saR5zN7pjFojgJJQFJ7ulM4tLKMrUDze8ZveHGSPXJxHrDtYLm2AFvbJRDLGpg2ALm9xtHCpvZAXR6CB1N7gm9gqW/ScG03sSb2ZzA4AxHdexZKFiuwUb3sQkMpdkWgpAFnsWAWr3z1rM1pBFADRvbZXApRUTpkDAAJwAJdvalACzg0aMAQkwRNwkBiFoWDGtZTn4ueWH7ez2vboptApJtt7QO94gACDvc0qzjcAt0iEvURjexgAGY3vDb3j2gCq97pe/Uvf3jBOr2pK0RISRTe7Ova4To8b3l3l0a9+kABMkFLMixb2lt7Tk+UrezavZrAAVb3DTK3HuIKECRQGfPAQ9w8d7Zm9gne7WzRS3sh93Ch7GU+CPu9TACj7uo1BhV7sa98je5tvemlR3b2UWEt/uarezFFRhgCOmxnyI3WULDJIDveppB7jIiywJDiRbezzQAKZBU73P17NO980ALODS19yM73JcAqcOQyzHAVFZ3uNb34U6RO98De0xeEfXsafB8t7da9rwAMavfCXs3b267bX/NiBUqDClv0wuRotBk629k8oCDxjt3tY73j0cNW93He8XqhN3uE724s4/G98de6iGHK3uzg11t7uCwaVezcxgi3sU721d7pOieze1rvbp3u672LV7kLeZne0bvYD3sTb32d7fwUfLoJoYnB3uir3tF7mKIane0zDhiio8qlvd7g9BU1LDjvaCrTG72s97P69oPe/l0DHTsCb2QnotSyYrXKrvcZoBOL2xV7OIAG5jFzMCgHSDhhDbwUe9txEILDYa3u172uN7ejlU5+GpvZt3svKBbV7VMd2gaK9gCflv1NBd3Avu9qXe9GcRC3unb3Fz400NKlgJcACR6u0GAkd7BW9qfe7TvZn3tPvh597B0RbHe/TbkHmSr73aN75XADfezSCAoGw3722gCRm9+Pe3ZveL3v773td7AtBXtRI7vcX7C+FZ5d7zm9mHe6MRFgXspwwAEAYDweaaCBvYw3u9b3Zwa+WuXDe8nASSwAlkBLIqMtgJ+uw7EE2yoPr2a6cetAYlSL/0BHoAKex2a7sfgRQAJxeh63sir2SyANylSA+y5vdHcT4VUjYAtQAXkqPnveF3sRvXFUQ0uoYLeydvdo3sZZQ5V7edQLfIOEeH03uucY4977e9hlAMvUDn6haogO/0r292De+9vfg3tdCUDmUpqUAXexQfeIAAQH3od7iu98Q+25vfsgSiixrd7469wFEMEgC03u0b3msAlkVd8nOwfergDq72njYmu9mW4N11Cc3t4b2Yd7xB92fgBofYKID272Et7I+9pLe3hbmm3vdEEaAA6I0VMgI/VCioJlkADioFB9macLGaH3TwEqFkd71t0IbwpIfegPsKbXXOw+q9w7e5KUG83seMgNfMtX0J9e/IfdfXugfomSwYmVDfe3ueCSYCc12VLbVLAbYkMMAC+3tpr24t7fm9nIm8ofYEPtT8J6N7ER9yDe52MmPXsyOghu82hwGw/Arvd8PsSrxdF7vA9qEqgIPfnFBCC3kN7yB9vI+0xvevXTHr3y97qKgRD3N3PCRT4f73kRKlggYXAOAhAbko3AhbZIOzocVAO51Af3scH2n97mu9gXAOHvYE/z6L2uuJeu93JKFNcGAoxruhe0gwRsbd8C9vYv3vZH2LvEkyRSge7sPfRTju1QG8AnNd1FaJ4fa73u38B/t7hB9mHe2CAD23s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",haveLinkedFilesChanged=(e,A,t,i,n)=>{if(e++>5)return!1;i.add(t);const s=n.app.metadataCache.resolvedLinks[t];if(!s)return!1;for(const a of Object.keys(s)){if(i.has(a))continue;const s=n.app.vault.getAbstractFileByPath(a);if(s&&s instanceof obsidian_module.TFile){if(console.log(t,{mtimeLinked:s.stat.mtime,mtimeSource:A,path:s.path}),s.stat.mtime>A)return!0;if(n.isExcalidrawFile(s)&&haveLinkedFilesChanged(e,A,s.path,i,n))return!0}}return!1},listOfOutOfSyncImgExports=async(e,A,t)=>{const i=e.app;if(!i.internalPlugins.plugins.publish.instance)return;const n=await i.internalPlugins.plugins.publish.instance.apiList();if(!n||!n.files)return;const s=new Set,a=n.files.filter((e=>e.path.endsWith(".svg")||e.path.endsWith(".png"))),o=a.length;return a.forEach(((n,a)=>{const r=getIMGFilename(n.path,"md"),l=i.vault.getAbstractFileByPath(n.path),c=i.vault.getAbstractFileByPath(r);if(t.innerText=`Status: ${a+1}/${o} ${l?l.name:n.path}`,c&&l&&c instanceof obsidian_module.TFile&&l instanceof obsidian_module.TFile){if(c.stat.mtime<=l.stat.mtime){if(!A)return;if(!haveLinkedFilesChanged(0,c.stat.mtime,c.path,new Set,e))return}s.add(c)}})),Array.from(s)};class PublishOutOfDateFilesDialog extends obsidian_module.Modal{constructor(e){super(e.app),this.plugin=e}async onClose(){}onOpen(){this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText("Out of Date SVG Files"),this.createForm(!1)}async createForm(e){const A=this.contentEl.createEl("details");A.createEl("summary",{text:"Video about Obsidian Publish support"}),A.createEl("br"),addIframe(A,"JC1E-jeiWhI");const t=this.contentEl.createEl("p",{text:"Collecting data..."}),i=this.contentEl.createEl("p",{text:"Status: "}),n=await listOfOutOfSyncImgExports(this.plugin,e,i);if(i.style.display="none",!n||0===n.length){t.innerText="No out of date files found.";const A=this.contentEl.createDiv({cls:"excalidraw-prompt-buttons-div"});return A.createEl("button",{text:"Close",cls:"excalidraw-prompt-button"}).onclick=()=>{this.close()},void(e||(A.createEl("button",{text:"Check Recursive",cls:"excalidraw-prompt-button"}).onclick=()=>{this.contentEl.empty(),this.createForm(!0)}))}const s=new Map;t.innerText="Select files to open.",n.forEach((e=>{s.set(e,!0),new obsidian_module.Setting(this.contentEl).setName(e.path).addToggle((A=>A.setValue(!0).onChange((A=>{s.set(e,A)}))))}));const a=this.contentEl.createDiv({cls:"excalidraw-prompt-buttons-div"});a.createEl("button",{text:"Close",cls:"excalidraw-prompt-button"}).onclick=()=>{this.close()},e||(a.createEl("button",{text:"Check Recursive",cls:"excalidraw-prompt-button"}).onclick=()=>{this.contentEl.empty(),this.createForm(!0)}),a.createEl("button",{text:"Open Selected",cls:"excalidraw-prompt-button"}).onclick=()=>{s.forEach(((e,A)=>{e&&this.plugin.openDrawing(A,"new-tab",!0)})),this.close()}}}class ExcalidrawPlugin extends obsidian_module.Plugin{constructor(e,A){super(e,A),this.excalidrawFiles=new Set,this.excalidrawFileModes={},this._loaded=!1,this.activeExcalidrawView=null,this.lastActiveExcalidrawFilePath=null,this.hover={linkText:null,sourcePath:null},this.opencount=0,this.filesMaster=null,this.equationsMaster=null,this.mermaidsMaster=null,this.mathjax=null,this.mathjaxLoaderFinished=!1,this.fourthFontDef=VIRGIL_FONT,this.packageMap=new WeakMap,this.leafChangeTimeout=null,this.removeEventLisnters=[],this.popScope=null,this.filesMaster=new Map,this.equationsMaster=new Map,this.mermaidsMaster=new Map}get locale(){return LOCALE}getPackage(e){if(e===window)return{react:react,reactDOM:reactDOM,excalidrawLib:excalidrawLib};if(this.packageMap.has(e))return this.packageMap.get(e);const{react:A,reactDOM:t,excalidrawLib:i}=e.eval.call(e,`(function() {\n ${lzStringExports.decompressFromBase64(EXCALIDRAW_PACKAGES)};\n return {react:React,reactDOM:ReactDOM,excalidrawLib:ExcalidrawLib};\n })()`);return this.packageMap.set(e,{react:A,reactDOM:t,excalidrawLib:i}),{react:A,reactDOM:t,excalidrawLib:i}}registerEvent(e){super.registerEvent(e)}async onload(){if(obsidian_module.addIcon(ICON_NAME,EXCALIDRAW_ICON),obsidian_module.addIcon("ScriptEngine",SCRIPTENGINE_ICON),obsidian_module.addIcon("export-img",EXPORT_IMG_ICON),await this.loadSettings({reEnableAutosave:!0}),await obsidian_module.loadMermaid(),this.addSettingTab(new ExcalidrawSettingTab(this.app,this)),this.ea=await initExcalidrawAutomate(this),this.registerView("excalidraw",(e=>new ExcalidrawView(e,this))),this.registerExtensions(["excalidraw"],"excalidraw"),this.addMarkdownPostProcessor(),this.registerInstallCodeblockProcessor(),this.addThemeObserver(),this.experimentalFileTypeDisplayToggle(this.settings.experimentalFileType),this.registerCommands(),this.registerEventListeners(),this.runStartupScript(),this.initializeFourthFont(),this.registerEditorSuggest(new FieldSuggester(this)),this.registerMonkeyPatches(),this.stylesManager=new StylesManager(this),this.settings.showReleaseNotes){const e="0.0.0"===this.settings.previousRelease;isVersionNewerThanOther(PLUGIN_VERSION,this.settings.previousRelease)&&new ReleaseNotes(this.app,this,e?null:PLUGIN_VERSION).open()}this.switchToExcalidarwAfterLoad(),this.loadMathJax();const e=this;this.app.workspace.onLayoutReady((()=>{this.scriptEngine=new ScriptEngine(e),imageCache.initializeDB(e)})),this.taskbone=new Taskbone(this)}initializeFourthFont(){this.app.workspace.onLayoutReady((async()=>{const e=await getFontDataURL(this.app,this.settings.experimantalFourthFont,"","LocalFont"),A=""===e.dataURL?VIRGIL_DATAURL:e.dataURL;this.fourthFontDef=e.fontDef;const t=new Set;app.workspace.iterateAllLeaves((e=>{const i=app.isMobile?document:e.view.containerEl.ownerDocument;if(!i)return;if(t.has(i))return;t.add(i);const n=i.createElement("style");n.id="local-font-stylesheet",n.textContent=`\n @font-face {\n font-family: 'LocalFont';\n src: url("${A}");\n font-display: swap;\n }\n `;const s=i.getElementById(n.id);i.head.appendChild(n),s&&i.head.removeChild(s),i.fonts.load("20px LocalFont")}))}))}removeMathJax(){"ExcalidrawMathJax"in window&&delete window.ExcalidrawMathJax;const e=document.getElementById("ExcalidrawMathJax");e&&e.parentNode.removeChild(e)}loadMathJax(){const e=this;this.app.workspace.onLayoutReady((async()=>{await obsidian_module.loadMathJax();try{this.removeMathJax();const A=document.createElement("script");A.setAttribute("id","ExcalidrawMathJax"),A.type="text/javascript",A.onload=()=>{window.ExcalidrawMathJax.startup.pagePromise.then((async()=>{window.ExcalidrawMathJax=Object.assign(Object.assign({},window.ExcalidrawMathJax),{options:Object.assign(Object.assign({},window.ExcalidrawMathJax.options),{tex:{packages:{"[+]":["all"]}}})});const A=this.app.vault.getAbstractFileByPath("preamble.sty"),t=A&&A instanceof obsidian_module.TFile?await this.app.vault.read(A):null;try{t&&await window.ExcalidrawMathJax.tex2svg(t)}catch(A){errorlog({where:e.loadMathJax,description:"Unexpected error while loading preamble.sty",error:A})}e.mathjax=window.ExcalidrawMathJax,e.mathjaxLoaderFinished=!0}))},A.src="data:text/javascript;base64,"+lzStringExports.decompressFromBase64(MATHJAX_SOURCE_LZCOMPRESSED),document.head.appendChild(A)}catch(A){new obsidian_module.Notice("Excalidraw: Error initializing LaTeX support"),e.mathjaxLoaderFinished=!0}}))}switchToExcalidarwAfterLoad(){const e=this;this.app.workspace.onLayoutReady((()=>{let A;for(A of app.workspace.getLeavesOfType("markdown"))A.view instanceof obsidian_module.MarkdownView&&e.isExcalidrawFile(A.view.file)&&(e.excalidrawFileModes[A.id||A.view.file.path]="excalidraw",e.setExcalidrawView(A))}))}forceSaveActiveView(e){if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(A.forceSave(),!0)}registerInstallCodeblockProcessor(){const e=async(e,A)=>{let t=null;try{const e=A.parentElement.querySelector(`a[href="#${A.previousElementSibling.getAttribute("data-heading")}"]`);e.style.paddingRight="10px",t=e.parentElement.createEl("button",null,(e=>{e.setText(t$d("UPDATE_SCRIPT")),e.addClass("mod-muted"),e.style.backgroundColor="var(--interactive-success)",e.style.display="none"}))}catch(A){errorlog({where:"this.registerInstallCodeblockProcessor",source:e,error:A})}e=e.trim(),A.createEl("button",null,(async A=>{var i;const n=e=>{switch(t&&(t.style.display="none"),e){case"CHECKING":A.setText(t$d("CHECKING_SCRIPT")),A.style.backgroundColor="var(--interactive-normal)";break;case"INSTALL":A.setText(t$d("INSTALL_SCRIPT")),A.style.backgroundColor="var(--interactive-accent)";break;case"UPTODATE":A.setText(t$d("UPTODATE_SCRIPT")),A.style.backgroundColor="var(--interactive-normal)";break;case"UPDATE":A.setText(t$d("UPDATE_SCRIPT")),A.style.backgroundColor="var(--interactive-success)",t&&(t.style.display=null);break;case"ERROR":A.setText(t$d("UNABLETOCHECK_SCRIPT")),A.style.backgroundColor="var(--interactive-normal)"}};A.addClass("mod-muted");let s=e;try{s=decodeURI(e)}catch(A){errorlog({where:"ExcalidrawPlugin.registerInstallCodeblockProcessor.codeblockProcessor.onClick",source:e,error:A})}const a=s.substring(s.lastIndexOf("/")+1),o=`${this.settings.scriptFolderPath}/Downloaded`,r=app.vault.getFiles().filter((e=>e.path.startsWith(o)&&e.name===a)).sort(((e,A)=>e.path>A.path?1:-1));let l=r[0];const c=null!==(i=null==l?void 0:l.path)&&void 0!==i?i:`${o}/${a}`,g=getIMGFilename(c,"svg");let d=this.app.vault.getAbstractFileByPath(g);if(n(l?"CHECKING":"INSTALL"),A.onclick=async()=>{const A=async(e,A,t)=>{const i=await obsidian_module.request({url:e});return!i||i.startsWith("404: Not Found")?null:(A?await this.app.vault.modify(A,i):(await checkAndCreateFolder(o),A=await this.app.vault.create(t,i)),A)};try{if(l=await A(e,l,c),!l)throw n("ERROR"),"File not found";d=await A(getIMGFilename(e,"svg"),d,g),n("UPTODATE"),0===Object.keys(this.scriptEngine.scriptIconMap).length&&this.scriptEngine.loadScripts(),new obsidian_module.Notice(`Installed: ${l.basename}`)}catch(e){new obsidian_module.Notice(`Error installing script: ${a}`),errorlog({where:"ExcalidrawPlugin.registerInstallCodeblockProcessor.codeblockProcessor.onClick",error:e})}},t&&(t.onclick=A.onclick),!(l&&l instanceof obsidian_module.TFile))return;const u=new Map;JSON.parse(await obsidian_module.request({url:"https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/directory-info.json"})).forEach((e=>u.set(e.fname,e.mtime)));const h=(e,A)=>{if(0===u.size||!u.has(e))return"ERROR";const t=u.get(e);return!A||t>A.stat.mtime?"UPDATE":"UPTODATE"},m=h(a,l),p=h(getIMGFilename(a,"svg"),d&&d instanceof obsidian_module.TFile?d:null);n("UPTODATE"===m&&"UPTODATE"===p||"UPTODATE"===m&&"ERROR"===p?"UPTODATE":"ERROR"===m?"ERROR":"UPDATE"===m||"UPDATE"===p?"UPDATE":"UPTODATE")}))};this.registerMarkdownCodeBlockProcessor(SCRIPT_INSTALL_CODEBLOCK,(async(A,t)=>{t.addEventListener(RERENDER_EVENT,(async i=>{i.stopPropagation(),t.empty(),e(A,t)})),e(A,t)}))}addMarkdownPostProcessor(){const e=this;this.app.workspace.onLayoutReady((()=>{initializeMarkdownPostProcessor(e),e.registerMarkdownPostProcessor(markdownPostProcessor),e.registerEvent(e.app.workspace.on("hover-link",hoverEvent)),e.observer=observer,e.observer.observe(document.body,{childList:!0,subtree:!1})}))}addThemeObserver(){this.themeObserver=new MutationObserver((async e=>{var A,t,i,n,s,a,o,r;if(!this.settings.matchThemeTrigger)return;if((null===(A=e[0])||void 0===A?void 0:A.oldValue)===(null===(i=null===(t=e[0])||void 0===t?void 0:t.target)||void 0===i?void 0:i.getAttribute("class")))return;if((null===(s=null===(n=e[0])||void 0===n?void 0:n.oldValue)||void 0===s?void 0:s.includes("theme-dark"))===(null===(r=null===(o=null===(a=e[0])||void 0===a?void 0:a.target)||void 0===o?void 0:o.classList)||void 0===r?void 0:r.contains("theme-dark")))return;const l=isObsidianThemeDark()?"dark":"light";this.app.workspace.getLeavesOfType("excalidraw").forEach((e=>{const A=e.view;A.file&&A.excalidrawAPI&&A.setTheme(l)}))})),this.themeObserver.observe(document.body,{attributeOldValue:!0,attributeFilter:["class"]})}experimentalFileTypeDisplayToggle(e){e?this.experimentalFileTypeDisplay():(this.fileExplorerObserver&&this.fileExplorerObserver.disconnect(),this.fileExplorerObserver=null)}experimentalFileTypeDisplay(){const e=e=>{if(1!=e.childElementCount)return;const A=e.getAttribute("data-path");if(!A)return;const t=this.app.vault.getAbstractFileByPath(A);t&&t instanceof obsidian_module.TFile&&this.isExcalidrawFile(t)&&e.insertBefore(createDiv({cls:"nav-file-tag",text:this.settings.experimentalFileTag}),e.firstChild)};this.fileExplorerObserver=new MutationObserver((A=>{A.filter((e=>e.addedNodes.length>0)).forEach((A=>{A.addedNodes.forEach((A=>{A instanceof Element&&A.querySelectorAll(".nav-file-title").forEach(e)}))}))}));const A=this;this.app.workspace.onLayoutReady((()=>{document.querySelectorAll(".nav-file-title").forEach(e);const t=document.querySelector(".nav-files-container");t&&A.fileExplorerObserver.observe(t,{childList:!0,subtree:!0})}))}registerCommands(){this.openDialog=new OpenFileDialog(this.app,this),this.insertLinkDialog=new InsertLinkDialog(this.app),this.insertCommandDialog=new InsertCommandDialog(this.app),this.insertImageDialog=new InsertImageDialog(this),this.importSVGDialog=new ImportSVGDialog(this),this.insertMDDialog=new InsertMDDialog(this),this.addRibbonIcon(ICON_NAME,t$d("CREATE_NEW"),(async e=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),linkClickModifierType(emulateCTRLClickForLinks(e)))})),this.registerEvent(this.app.workspace.on("file-menu",((e,A)=>{e.addItem((e=>{e.setTitle(t$d("CREATE_NEW")).setIcon(ICON_NAME).onClick((e=>{let t=A.path;A instanceof obsidian_module.TFile&&(t=obsidian_module.normalizePath(A.path.substr(0,A.path.lastIndexOf(A.name)))),this.createAndOpenDrawing(getDrawingFilename(this.settings),linkClickModifierType(emulateCTRLClickForLinks(e)),t)}))}))}))),this.registerEvent(this.app.workspace.on("file-menu",((e,A)=>{A instanceof obsidian_module.TFile&&"excalidraw"==A.extension&&e.addItem((e=>{e.setTitle(t$d("CONVERT_FILE_KEEP_EXT")).onClick((()=>{this.convertSingleExcalidrawToMD(A,!1,!1)}))}))}))),this.registerEvent(this.app.workspace.on("file-menu",((e,A)=>{A instanceof obsidian_module.TFile&&"excalidraw"==A.extension&&e.addItem((e=>{e.setTitle(t$d("CONVERT_FILE_REPLACE_EXT")).onClick((()=>{this.convertSingleExcalidrawToMD(A,!0,!0)}))}))}))),this.addCommand({id:"excalidraw-publish-svg-check",name:t$d("PUBLISH_SVG_CHECK"),checkCallback:e=>!!app.internalPlugins.plugins.publish.instance&&(!!e||void new PublishOutOfDateFilesDialog(this).open())}),this.addCommand({id:"excalidraw-embeddable-poroperties",name:t$d("EMBEDDABLE_PROPERTIES"),checkCallback:e=>{const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(!A)return!1;if(!A.excalidrawAPI)return!1;const t=A.getViewSelectedElements().filter((e=>"embeddable"===e.type));return 1!==t.length?(e||new obsidian_module.Notice("Select a single embeddable element and try again"),!1):!!e||void new EmbeddableSettings(A.plugin,A,(e=>{const t=REGEX_LINK.getRes(e.link).next();if(!t||!t.value&&t.done)return null;const i=REGEX_LINK.getLink(t),{file:n}=processLinkText(i,A);return n})(t[0]),t[0]).open()}}),this.addCommand({id:"excalidraw-embeddables-relative-scale",name:t$d("EMBEDDABLE_RELATIVE_ZOOM"),checkCallback:e=>{const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(!A)return!1;if(!A.excalidrawAPI)return!1;const t=A.getViewSelectedElements().filter((e=>"embeddable"===e.type));if(0===t.length)return e||new obsidian_module.Notice("Select at least one embeddable element and try again"),!1;if(e)return!0;const i=getEA(A),n=i.getExcalidrawAPI();i.copyViewElementsToEAforEditing(t);const s=1/n.getAppState().zoom.value;i.getElements().forEach((e=>{e.scale=[s,s]})),i.addElementsToView()}}),this.addCommand({id:"open-image-excalidraw-source",name:t$d("OPEN_IMAGE_SOURCE"),checkCallback:e=>{const A=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView);if(!A)return!1;if(A.leaf!==this.app.workspace.activeLeaf)return!1;const t=A.editor;if(!t)return!1;const i=t.getCursor(),n=t.getLine(i.line),s=extractSVGPNGFileName(n);if(!s)return!1;const a=this.app.metadataCache.getFirstLinkpathDest(s,A.file.path);if(!a)return!1;const o=getIMGFilename(a.path,"md");let r=this.app.metadataCache.getFirstLinkpathDest(o,A.file.path);return!(!r&&(o.endsWith(".dark.md")&&(r=this.app.metadataCache.getFirstLinkpathDest(o.replace(/\.dark\.md$/,".md"),A.file.path)),o.endsWith(".light.md")&&(r=this.app.metadataCache.getFirstLinkpathDest(o.replace(/\.light\.md$/,".md"),A.file.path)),!r))&&(!!e||void this.openDrawing(r,"new-tab",!0))}}),this.addCommand({id:"excalidraw-disable-autosave",name:t$d("TEMPORARY_DISABLE_AUTOSAVE"),checkCallback:e=>!!this.settings.autosave&&(e||(this.settings.autosave=!1),!0)}),this.addCommand({id:"excalidraw-enable-autosave",name:t$d("TEMPORARY_ENABLE_AUTOSAVE"),checkCallback:e=>!this.settings.autosave&&(e||(this.settings.autosave=!0),!0)}),this.addCommand({id:"excalidraw-download-lib",name:t$d("DOWNLOAD_LIBRARY"),callback:this.exportLibrary}),this.addCommand({id:"excalidraw-open",name:t$d("OPEN_EXISTING_NEW_PANE"),callback:()=>{this.openDialog.start(openDialogAction.openFile,!0)}}),this.addCommand({id:"excalidraw-open-on-current",name:t$d("OPEN_EXISTING_ACTIVE_PANE"),callback:()=>{this.openDialog.start(openDialogAction.openFile,!1)}}),this.addCommand({id:"excalidraw-insert-transclusion",name:t$d("TRANSCLUDE"),checkCallback:e=>e?Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(this.openDialog.start(openDialogAction.insertLinkToDrawing,!1),!0)}),this.addCommand({id:"excalidraw-insert-last-active-transclusion",name:t$d("TRANSCLUDE_MOST_RECENT"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView))&&null!=this.lastActiveExcalidrawFilePath;const A=this.app.vault.getAbstractFileByPath(this.lastActiveExcalidrawFilePath);return A instanceof obsidian_module.TFile&&(this.embedDrawing(A),!0)}}),this.addCommand({id:"excalidraw-autocreate",name:t$d("NEW_IN_NEW_PANE"),callback:()=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),"new-pane")}}),this.addCommand({id:"excalidraw-autocreate-newtab",name:t$d("NEW_IN_NEW_TAB"),callback:()=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),"new-tab")}}),this.addCommand({id:"excalidraw-autocreate-on-current",name:t$d("NEW_IN_ACTIVE_PANE"),callback:()=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),"active-pane")}}),this.addCommand({id:"excalidraw-autocreate-popout",name:t$d("NEW_IN_POPOUT_WINDOW"),checkCallback:e=>{if(e)return!app.isMobile;this.createAndOpenDrawing(getDrawingFilename(this.settings),"popout-window")}});const e=async e=>{const A=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView);if(!A)return;const t=getEmbedFilename(A.file.basename,this.settings),i=this.settings.embedUseExcalidrawFolder?null:(await getAttachmentsFolderAndFilePath(this.app,A.file.path,t)).folder,n=await this.createDrawing(t,i);await this.embedDrawing(n),this.openDrawing(n,e,!0,void 0,!0)};this.addCommand({id:"excalidraw-autocreate-and-embed",name:t$d("NEW_IN_NEW_PANE_EMBED"),checkCallback:A=>A?Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(e("new-pane"),!0)}),this.addCommand({id:"excalidraw-autocreate-and-embed-new-tab",name:t$d("NEW_IN_NEW_TAB_EMBED"),checkCallback:A=>A?Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(e("new-tab"),!0)}),this.addCommand({id:"excalidraw-autocreate-and-embed-on-current",name:t$d("NEW_IN_ACTIVE_PANE_EMBED"),checkCallback:A=>A?Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(e("active-pane"),!0)}),this.addCommand({id:"excalidraw-autocreate-and-embed-popout",name:t$d("NEW_IN_POPOUT_WINDOW_EMBED"),checkCallback:A=>A?!app.isMobile&&Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(e("popout-window"),!0)}),this.addCommand({id:"run-ocr",name:t$d("RUN_OCR"),checkCallback:e=>{const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return e?Boolean(A):!!A&&(this.settings.taskboneEnabled?(this.taskbone.getTextForView(A,!1),!0):(new obsidian_module.Notice("Taskbone OCR is not enabled. Please go to plugins settings to enable it.",4e3),!0))}}),this.addCommand({id:"search-text",name:t$d("SEARCH"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(search(A),!0)}}),this.addCommand({id:"fullscreen",name:t$d("TOGGLE_FULLSCREEN"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(A.isFullscreen()?A.exitFullscreen():A.gotoFullscreen(),!0)}}),this.addCommand({id:"disable-binding",name:t$d("TOGGLE_DISABLEBINDING"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(A.toggleDisableBinding(),!0)}}),this.addCommand({id:"disable-framerendering",name:t$d("TOGGLE_FRAME_RENDERING"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(A.toggleFrameRendering(),!0)}}),this.addCommand({id:"disable-frameclipping",name:t$d("TOGGLE_FRAME_CLIPPING"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(A.toggleFrameClipping(),!0)}}),this.addCommand({id:"export-image",name:t$d("EXPORT_IMAGE"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(A.exportDialog||(A.exportDialog=new ExportDialog(this,A,A.file),A.exportDialog.createForm()),A.exportDialog.open(),!0)}}),this.forceSaveCommand=this.addCommand({id:"save",hotkeys:[{modifiers:["Ctrl"],key:"s"}],name:t$d("FORCE_SAVE"),checkCallback:e=>this.forceSaveActiveView(e)}),this.addCommand({id:"toggle-lock",hotkeys:[{modifiers:["Ctrl","Shift"],key:"e"}],name:t$d("TOGGLE_LOCK"),checkCallback:e=>{if(e)return!!Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView))&&!this.app.workspace.getActiveViewOfType(ExcalidrawView).compatibilityMode;const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!(!A||A.compatibilityMode||(A.changeTextMode(A.textMode===TextMode.parsed?TextMode.raw:TextMode.parsed),0))}}),this.addCommand({id:"scriptengine-store",name:t$d("INSTALL_SCRIPT_BUTTON"),checkCallback:e=>e?Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView)):(new ScriptInstallPrompt(this).open(),!0)}),this.addCommand({id:"delete-file",name:t$d("DELETE_FILE"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(A){this.ea.reset(),this.ea.setView(A);const e=this.ea.getViewSelectedElement();if("image"!==e.type)return new obsidian_module.Notice("Please select an image or embedded markdown document",4e3),!0;const t=this.ea.getViewFileForImageElement(e);return t?(this.app.vault.delete(t),this.ea.deleteViewElements([e]),!0):(new obsidian_module.Notice("Please select an image or embedded markdown document",4e3),!0)}return!1}}),this.addCommand({id:"convert-text2MD",name:t$d("CONVERT_TO_MARKDOWN"),checkCallback:e=>{const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(!A)return!1;const t=A.getViewSelectedElements().filter((e=>"text"===e.type));if(1!==t.length)return!1;const i=t[0],n=A.getViewElements().find((e=>e.id===i.containerId));return(!n||"arrow"!==n.type)&&(!!e||void A.convertTextElementToMarkdown(i,n))}}),this.addCommand({id:"insert-link",hotkeys:[{modifiers:["Ctrl","Shift"],key:"k"}],name:t$d("INSERT_LINK"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(this.insertLinkDialog.start(A.file.path,A.addLink),!0)}}),this.addCommand({id:"insert-command",name:t$d("INSERT_COMMAND"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(this.insertCommandDialog.start(A.addText),!0)}}),this.addCommand({id:"insert-link-to-element",hotkeys:[{modifiers:["Ctrl","Shift"],key:"k"}],name:t$d("INSERT_LINK_TO_ELEMENT_NORMAL"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(A.copyLinkToSelectedElementToClipboard(""),!0)}}),this.addCommand({id:"insert-link-to-element-group",name:t$d("INSERT_LINK_TO_ELEMENT_GROUP"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(A.copyLinkToSelectedElementToClipboard("group="),!0)}}),this.addCommand({id:"insert-link-to-element-frame",name:t$d("INSERT_LINK_TO_ELEMENT_FRAME"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(A.copyLinkToSelectedElementToClipboard("frame="),!0)}}),this.addCommand({id:"insert-link-to-element-area",name:t$d("INSERT_LINK_TO_ELEMENT_AREA"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(A.copyLinkToSelectedElementToClipboard("area="),!0)}}),this.addCommand({id:"toggle-lefthanded-mode",name:t$d("TOGGLE_LEFTHANDED_MODE"),checkCallback:e=>{if(e){if(this.app.workspace.getActiveViewOfType(ExcalidrawView)){const e=this.app.workspace.getActiveViewOfType(ExcalidrawView),A=null==e?void 0:e.excalidrawAPI;return!!A&&!!A.getAppState().trayModeEnabled}return!1}return this.app.workspace.getActiveViewOfType(ExcalidrawView),(async()=>{const e=this.settings.isLeftHanded;await this.loadSettings({applyLefthandedMode:!1}),this.settings.isLeftHanded=!e,this.saveSettings(),setLeftHandedMode(!e),setTimeout((()=>setLeftHandedMode(!e)))})(),!0}}),this.addCommand({id:"reset-image-to-100",name:t$d("RESET_IMG_TO_100"),checkCallback:e=>{const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(!A)return!1;if(!A.excalidrawAPI)return!1;const t=A.getViewSelectedElements().filter((e=>"image"===e.type));if(1!==t.length)return e||new obsidian_module.Notice("Select a single image element and try again"),!1;const i=t[0];return A.excalidrawData.getFile(i.fileId)?!!e||void(async()=>{const e=new ExcalidrawAutomate(this,A),n=await e.getOriginalImageSize(i);if(n){e.copyViewElementsToEAforEditing(t);const A=e.getElement(i.id);A.width=n.width,A.height=n.height,e.addElementsToView(!1,!1,!1)}})():(e||new obsidian_module.Notice("Select a single image element and try again"),!1)}}),this.addCommand({id:"insert-image",name:t$d("INSERT_IMAGE"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(this.insertImageDialog.start(A),!0)}}),this.addCommand({id:"import-svg",name:t$d("IMPORT_SVG"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(this.importSVGDialog.start(A),!0)}}),this.addCommand({id:"release-notes",name:t$d("READ_RELEASE_NOTES"),checkCallback:e=>e?Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView)):(new ReleaseNotes(this.app,this,PLUGIN_VERSION).open(),!0)}),this.addCommand({id:"tray-mode",name:t$d("TRAY_MODE"),checkCallback:e=>{if(e){const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(!e||!e.excalidrawAPI)return!1;const A=e.excalidrawAPI.getAppState();return!A.zenModeEnabled&&!A.viewModeEnabled}const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!(!A||!A.excalidrawAPI||(A.toggleTrayMode(),0))}}),this.addCommand({id:"insert-md",name:t$d("INSERT_MD"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(this.insertMDDialog.start(A),!0)}}),this.addCommand({id:"insert-pdf",name:t$d("INSERT_PDF"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(new InsertPDFModal(this,A).open(),!0)}}),this.addCommand({id:"universal-add-file",name:t$d("UNIVERSAL_ADD_FILE"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(new UniversalInsertFileModal(this,A).open(),!0)}}),this.addCommand({id:"insert-LaTeX-symbol",name:t$d("INSERT_LATEX"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const A=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!A&&(insertLaTeXToView(A),!0)}}),this.addCommand({id:"toggle-excalidraw-view",name:t$d("TOGGLE_MODE"),checkCallback:e=>{const A=this.app.workspace.getActiveFile();if(!A)return!1;const t=this.isExcalidrawFile(A);if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView))?!this.app.workspace.getActiveViewOfType(ExcalidrawView).compatibilityMode:t;const i=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(i)return void i.openAsMarkdown();const n=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView);if(n&&t){const e=n.leaf;return this.excalidrawFileModes[e.id||A.path]="excalidraw",void this.setExcalidrawView(e)}}}),this.addCommand({id:"convert-to-excalidraw",name:t$d("CONVERT_NOTE_TO_EXCALIDRAW"),checkCallback:e=>{const A=this.app.workspace.getActiveFile(),t=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView);if(!A||!t)return!1;const i=0===A.stat.size;if(e)return i;i&&(async()=>{await this.app.vault.modify(A,await this.getBlankDrawing()),this.setExcalidrawView(t.leaf)})()}}),this.addCommand({id:"convert-excalidraw",name:t$d("CONVERT_EXCALIDRAW"),checkCallback:e=>{if(e){const e=this.app.vault.getFiles().filter((e=>"excalidraw"==e.extension));return e.length>0}return this.convertExcalidrawToMD(),!0}})}async convertSingleExcalidrawToMD(e,A=!1,t=!1){const i=await this.app.vault.read(e),n=e.name.substring(0,e.name.lastIndexOf(".excalidraw"))+(A?".md":".excalidraw.md"),s=getNewUniqueFilepath(this.app.vault,n,obsidian_module.normalizePath(e.path.substring(0,e.path.lastIndexOf(e.name))));log(s);const a=await this.app.vault.create(s,FRONTMATTER+await this.exportSceneToMD(i));return this.settings.keepInSync&&EXPORT_TYPES.forEach((A=>{const t=e.path.substring(0,e.path.lastIndexOf(".excalidraw"))+A,i=this.app.vault.getAbstractFileByPath(obsidian_module.normalizePath(t));if(i&&i instanceof obsidian_module.TFile){const e=s.substring(0,s.lastIndexOf(".md"))+A;this.app.fileManager.renameFile(i,e)}})),t||this.app.vault.delete(e),a}async convertExcalidrawToMD(e=!1,A=!1){const t=this.app.vault.getFiles().filter((e=>"excalidraw"==e.extension));for(const i of t)this.convertSingleExcalidrawToMD(i,e,A);new obsidian_module.Notice(`Converted ${t.length} files.`)}registerMonkeyPatches(){var e,A;this.register(around(obsidian_module.Workspace.prototype,{getActiveViewOfType:e=>dedupe("https://github.com/zsviczian/obsidian-excalidraw-plugin/issues",e,(function(...A){var t,i;const n=e&&e.apply(this,A),s=null===(i=null===(t=null===app||void 0===app?void 0:app.workspace)||void 0===t?void 0:t.activeLeaf)||void 0===i?void 0:i.view;if(!(s&&s instanceof ExcalidrawView))return n;const a=(new Error).stack;if(!isCallerFromTemplaterPlugin(a))return n;const o=s.getActiveEmbeddable();return o&&o.node&&o.node.isEditing?{file:o.node.file,editor:o.node.child.editor}:n}))})),(null===(A=null===(e=app.plugins)||void 0===e?void 0:e.plugins)||void 0===A?void 0:A["obsidian-hover-editor"])||this.register(around(obsidian_module.WorkspaceLeaf.prototype,{getRoot:e=>function(){const A=e.call(this);return A.getRoot===this.getRoot?A:A.getRoot()}})),this.registerEvent(app.workspace.on("editor-menu",((e,A,t)=>{if(!(t&&t instanceof obsidian_module.MarkdownView))return;const i=t.file,n=t.leaf;if(!t.file)return;const s=this.app.metadataCache.getFileCache(i);(null==s?void 0:s.frontmatter)&&s.frontmatter[FRONTMATTER_KEY]&&e.addItem((e=>e.setTitle(t$d("OPEN_AS_EXCALIDRAW")).setIcon(ICON_NAME).setSection("excalidraw").onClick((()=>{this.excalidrawFileModes[n.id||i.path]="excalidraw",this.setExcalidrawView(n)}))))}))),this.registerEvent(app.workspace.on("file-menu",((e,A,t,i)=>{if(!(i&&i.view instanceof obsidian_module.MarkdownView))return;if(!(A instanceof obsidian_module.TFile))return;const n=this.app.metadataCache.getFileCache(A);(null==n?void 0:n.frontmatter)&&n.frontmatter[FRONTMATTER_KEY]&&(e.addItem((e=>{e.setTitle(t$d("OPEN_AS_EXCALIDRAW")).setIcon(ICON_NAME).setSection("pane").onClick((()=>{this.excalidrawFileModes[i.id||A.path]="excalidraw",this.setExcalidrawView(i)}))})),e.items.unshift(e.items.pop()))})));const t=this;this.register(around(obsidian_module.WorkspaceLeaf.prototype,{detach:e=>function(){var A;const i=null===(A=this.view)||void 0===A?void 0:A.getState();return(null==i?void 0:i.file)&&t.excalidrawFileModes[this.id||i.file]&&delete t.excalidrawFileModes[this.id||i.file],e.apply(this)},setViewState:e=>function(A,...i){var n;if(t._loaded&&"markdown"===A.type&&(null===(n=A.state)||void 0===n?void 0:n.file)&&"markdown"!==t.excalidrawFileModes[this.id||A.state.file]){const n=app.metadataCache.getCache(A.state.file);if((null==n?void 0:n.frontmatter)&&n.frontmatter[FRONTMATTER_KEY]){const n=Object.assign(Object.assign({},A),{type:"excalidraw"});return t.excalidrawFileModes[A.state.file]="excalidraw",e.apply(this,[n,...i])}}return e.apply(this,[A,...i])}}))}runStartupScript(){if(!this.settings.startupScriptPath||""===this.settings.startupScriptPath)return;const e=this;this.app.workspace.onLayoutReady((async()=>{const A=e.settings.startupScriptPath.endsWith(".md")?e.settings.startupScriptPath:`${e.settings.startupScriptPath}.md`,t=e.app.vault.getAbstractFileByPath(A);if(!(t&&t instanceof obsidian_module.TFile))return void new obsidian_module.Notice(`Startup script not found: ${A}`);const i=await e.app.vault.read(t),n=Object.getPrototypeOf((async()=>{})).constructor;try{await new n("ea",i)(e.ea)}catch(e){new obsidian_module.Notice(`Error running startup script: ${e}`)}}))}registerEventListeners(){const e=this;this.app.workspace.onLayoutReady((async()=>{e.registerEvent(e.app.workspace.on("editor-paste",((A,t,i)=>{var n;if(A.defaultPrevented)return;const s=A.clipboardData.getData("text/plain");if(s&&s.startsWith('{"type":"excalidraw/clipboard"')){A.preventDefault();try{const A=JSON.parse(s),a=1===A.elements.filter((e=>"text"===e.type)).length;if(!a&&1!==(null===(n=A.elements)||void 0===n?void 0:n.length))return;const o=a?A.elements.filter((e=>"text"===e.type))[0]:A.elements[0];if("image"===o.type){const A=e.filesMaster.get(o.fileId);if(A&&A.path){let n=A.path;const s=i.file,a=e.app.vault.getAbstractFileByPath(n);s&&a&&a instanceof obsidian_module.TFile&&(n=e.app.metadataCache.fileToLinktext(a,s.path)),t.insertText(e.getLink({path:n}))}return}if("text"===o.type)return void t.insertText(o.text);if(o.link)return void t.insertText(`${o.link}`)}catch(e){}}}))),e.registerEvent(app.vault.on("rename",(async(A,t)=>{A instanceof obsidian_module.TFile&&e.isExcalidrawFile(A)&&e.settings.keepInSync&&[EXPORT_TYPES,"excalidraw"].flat().forEach((async e=>{const i=getIMGFilename(t,e),n=app.vault.getAbstractFileByPath(obsidian_module.normalizePath(i));if(n&&n instanceof obsidian_module.TFile){const t=getIMGFilename(A.path,e);await app.fileManager.renameFile(n,t)}}))}))),e.registerEvent(app.vault.on("modify",(async A=>{app.workspace.getLeavesOfType("excalidraw").forEach((async t=>{const i=t.view;if(i.file&&(i.file.path===A.path||"excalidraw"===A.extension&&`${A.path.substring(0,A.path.lastIndexOf(".excalidraw"))}.md`===i.file.path)){if(i.semaphores.preventReload)return void(i.semaphores.preventReload=!1);if(i.lastSaveTimestamp+3e5<Date.now())return void i.reload(!0,i.file);if("md"===A.extension){const t=new ExcalidrawData(e),n=await app.vault.read(A);await t.loadData(n,A,getTextMode(n)),i.synchronizeWithData(t),i.semaphores.dirty&&(i.autosaveTimer&&i.autosaveFunction&&clearTimeout(i.autosaveTimer),i.autosaveFunction&&i.autosaveFunction())}else i.reload(!0,i.file)}}))}))),e.registerEvent(app.vault.on("delete",(async A=>{if(!(A instanceof obsidian_module.TFile))return;const t=this.excalidrawFiles.has(A);if(this.updateFileCache(A,void 0,!0),!t)return;const i=this.app.workspace.getLeavesOfType("excalidraw");for(let e=0;e<i.length;e++)i[e].view.file.path==A.path&&await i[e].setViewState({type:"excalidraw",state:{file:null}});e.settings.keepInSync&&setTimeout((()=>{[EXPORT_TYPES,"excalidraw"].flat().forEach((async e=>{const t=getIMGFilename(A.path,e),i=app.vault.getAbstractFileByPath(obsidian_module.normalizePath(t));i&&i instanceof obsidian_module.TFile&&await app.vault.delete(i)}))}),500)}))),e.registerEvent(app.workspace.on("active-leaf-change",(async A=>{var t;e.leafChangeTimeout&&clearTimeout(e.leafChangeTimeout),e.leafChangeTimeout=setTimeout((()=>{e.leafChangeTimeout=null}),1e3);const i=e.activeExcalidrawView,n=A.view instanceof ExcalidrawView?A.view:null; +,renderTopRightUI:(e,t)=>this.obsidianMenu.renderButton(e,t),renderEmbeddableMenu:e=>this.embeddableMenu.renderButtons(e),onPaste:(e,t)=>this.onPaste(e,t),onThemeChange:async e=>this.onThemeChange(e),ownerDocument:this.ownerDocument,ownerWindow:this.ownerWindow,onDrop:e=>this.onDrop(e),onBeforeTextEdit:e=>this.onBeforeTextEdit(e),onBeforeTextSubmit:(e,t,n,r)=>this.onBeforeTextSubmit(e,t,n,r),onLinkOpen:(e,t)=>this.onLinkOpen(e,t),onLinkHover:(e,t)=>this.onLinkHover(e,t),onContextMenu:T,onViewModeChange:e=>this.onViewModeChange(e),validateEmbeddable:!0,renderWebview:DEVICE.isDesktop,renderEmbeddable:(e,t)=>Q(e,t),renderMermaid:shouldRenderMermaid(),obsidianHostPlugin:this.plugin},d(),t.createElement(a,{},t.createElement(a.Center,{},t.createElement(a.Center.Logo,{},t.createElement(LogoWrapper,{},ICONS.ExcalidrawSword)),t.createElement(a.Center.Heading,{},'Type "Excalidraw" in the Command Palette',t.createElement("br"),"Explore the Obsidian Menu in the top right",t.createElement("br"),"Visit the Script Library",t.createElement("br"),"Find help in the hamburger-menu"),t.createElement(a.Center.Menu,{},t.createElement(a.Center.MenuItemLink,{icon:ICONS.YouTube,href:"https://www.youtube.com/@VisualPKM",shortcut:null,"aria-label":"Visual PKM YouTube Channel"}," Check out the Visual PKM YouTube channel."),t.createElement(a.Center.MenuItemLink,{icon:ICONS.Discord,href:"https://discord.gg/DyfAXFwUHc",shortcut:null,"aria-label":"Join the Visual Thinking Discord Server"}," Join the Visual Thinking Discord Server"),t.createElement(a.Center.MenuItemLink,{icon:ICONS.twitter,href:"https://twitter.com/zsviczian",shortcut:null,"aria-label":"Follow me on Twitter"}," Follow me on Twitter"),t.createElement(a.Center.MenuItemLink,{icon:ICONS.heart,href:"https://ko-fi.com/zsolt",shortcut:null,"aria-label":"Donate to support Excalidraw-Obsidian"},' Say "Thank You" & support the plugin.')))),t.createElement(l,{onTextSubmit:async e=>{var t,n,r,i,o,a;try{const s=await postOpenAI({systemPrompt:"The user will provide you with a text prompt. Your task is to generate a mermaid diagram based on the prompt. Use the graph, sequenceDiagram, flowchart or classDiagram types based on what best fits the request. Return a single message containing only the mermaid diagram in a codeblock. Avoid the use of `()` parenthesis in the mermaid script.",text:e,instruction:"Return a single message containing only the mermaid diagram in a codeblock."});if(!s)return{error:new Error("Request failed")};const l=s.json;if(null==l?void 0:l.error)return console.log(s),{error:new Error(l.error.message)};if(!(null===(r=null===(n=null===(t=null==l?void 0:l.choices)||void 0===t?void 0:t[0])||void 0===n?void 0:n.message)||void 0===r?void 0:r.content))return console.log(s),{error:new Error("Generation failed... see console log for details")};let c=null===(a=extractCodeBlocks(null===(o=null===(i=l.choices[0])||void 0===i?void 0:i.message)||void 0===o?void 0:o.content)[0])||void 0===a?void 0:a.data;return c?(c.startsWith("mermaid")&&(c=c.replace(/^mermaid/,"").trim()),{generatedResponse:c,rateLimit:100,rateLimitRemaining:100}):(console.log(s),{error:new Error("Generation failed... see console log for details")})}catch(e){throw new Error("Request failed")}}}),t.createElement(s,{})),u());return t.createElement(t.Fragment,null,g)}));n.createRoot(this.contentEl).render(p)}updateContainerSize(e,t=!1){const n=this.excalidrawAPI;if(!n)return;const r=()=>{const t=e?n.getSceneElements().filter((t=>t.id===e&&"arrow"!==t.type)):n.getSceneElements().filter(isContainer);t.length>0&&(this.initialContainerSizeUpdate&&(this.semaphores.justLoaded=!0),n.updateContainerSize(t)),this.initialContainerSizeUpdate=!1};t?setTimeout((()=>r()),50):r()}zoomToFit(e=!0,t=!1){if(document.body.querySelector("div.modal-container"))return;const n=this.excalidrawAPI;if(!n||this.semaphores.isEditingText||this.semaphores.preventAutozoom)return;const r=this.plugin.settings.zoomToFitMaxLevel,i=n.getSceneElements().filter((e=>e.width<1e4&&e.height<1e4));app.isMobile&&i.length>1e3||i.length>2500?t&&n.scrollToContent():e?setTimeout((()=>n.zoomToFit(i,r,this.isFullscreen()?0:.05)),100):n.zoomToFit(i,r,this.isFullscreen()?0:.05)}updatePinnedScripts(){const e=this.excalidrawAPI;if(!e)return!1;e.updateScene({appState:{pinnedScripts:this.plugin.settings.pinnedScripts}})}updatePinnedCustomPens(){const e=this.excalidrawAPI;if(!e)return!1;e.updateScene({appState:{customPens:this.plugin.settings.customPens.slice(0,this.plugin.settings.numberOfCustomPens)}})}updatePinchZoom(){const e=this.excalidrawAPI;if(!e)return!1;e.updateScene({appState:{allowPinchZoom:this.plugin.settings.allowPinchZoom}})}updateWheelZoom(){const e=this.excalidrawAPI;if(!e)return!1;e.updateScene({appState:{allowWheelZoom:this.plugin.settings.allowWheelZoom}})}async toggleTrayMode(){const e=this.excalidrawAPI;if(!e)return!1;const t=e.getAppState();e.updateScene({appState:{trayModeEnabled:!t.trayModeEnabled}}),await this.plugin.loadSettings(),this.plugin.settings.defaultTrayMode=!t.trayModeEnabled,this.plugin.saveSettings()}selectElementsMatchingQuery(e,t,n=!0,r=!1,i=!1){let o=getTextElementsMatchingQuery(e.filter((e=>"text"===e.type)),t,r).concat(getFrameElementsMatchingQuery(e.filter((e=>"frame"===e.type)),t,r));if(0!==o.length){if(i){const t=this.plugin.ea.getElementsInTheSameGroupWithElement(o[0],e);t.length>0&&(o=t)}this.zoomToElements(n,o)}else new obsidian_module.Notice("I could not find a matching text element")}zoomToElements(e,t){const n=this.excalidrawAPI;if(!n)return;const r=this.plugin.settings.zoomToFitMaxLevel;e&&n.selectElements(t),n.zoomToFit(t,r,.05)}getViewElements(){const e=this.excalidrawAPI;return e?e.getSceneElements():[]}getViewSelectedElements(){var e;const t=this.excalidrawAPI;if(!t)return[];const n=null===(e=t.getAppState())||void 0===e?void 0:e.selectedElementIds;if(!n)return[];const r=Object.keys(n);if(!r)return[];const i=t.getSceneElements().filter((e=>r.includes(e.id))),o=i.filter((e=>e.boundElements&&e.boundElements.filter((e=>"text"===e.type)).length>0)).map((e=>e.boundElements.filter((e=>"text"===e.type)).map((e=>e.id))[0])),a=i.map((e=>e.id)).concat(o);return t.getSceneElements().filter((e=>a.contains(e.id)))}async copyLinkToSelectedElementToClipboard(e){const t=this.getViewSelectedElements();if(t.length<1)return void new obsidian_module.Notice(t$d("INSERT_LINK_TO_ELEMENT_ERROR"));let n;if(2===t.length){const e=t.filter((e=>"text"===e.type));1===e.length&&e[0].containerId&&1===t.filter((e=>e.boundElements.some((e=>"text"===e.type)))).length&&(n=e[0].id)}n||(n=1===t.length?t[0].id:this.plugin.ea.getLargestElement(t).id);let r=[];if(t.some((e=>e.id===n&&"frame"===e.type)))switch(e){case"area=":case"group=":case"frame=":r=[{caption:"Frame",action:()=>{e="frame="}},{caption:"Link",action:()=>{e=""}}];break;default:r=[{caption:"Link",action:()=>{e=""}},{caption:"Frame",action:()=>{e="frame="}}]}else switch(e){case"area=":r=[{caption:"Area",action:()=>{e="area="}},{caption:"Link",action:()=>{e=""}},{caption:"Group",action:()=>{e="group="}}];break;case"group=":r=[{caption:"Group",action:()=>{e="group="}},{caption:"Link",action:()=>{e=""}},{caption:"Area",action:()=>{e="area="}}];break;default:r=[{caption:"Link",action:()=>{e=""}},{caption:"Area",action:()=>{e="area="}},{caption:"Group",action:()=>{e="group="}}]}const i=await ScriptEngine.inputPrompt(this,this.plugin,app,"Set link alias","Leave empty if you do not want to set an alias","",r);navigator.clipboard.writeText(`${e.length>0?"!":""}[[${this.file.path}#^${e}${n}${i?`|${i}`:""}]]`),new obsidian_module.Notice(t$d("INSERT_LINK_TO_ELEMENT_READY"))}updateScene(e,t=!1){const n=this.excalidrawAPI;if(!n)return;const r=e.elements&&t;r&&(e.elements=restore(e,null,null).elements);try{n.updateScene(e)}catch(t){if(errorlog({where:"ExcalidrawView.updateScene 1st attempt",fn:this.updateScene,error:t,scene:e,willDoSecondAttempt:!r}),r)warningUnknowSeriousError();else try{e.elements=restore(e,null,null).elements,n.updateScene(e)}catch(t){errorlog({where:"ExcalidrawView.updateScene 2nd attempt",fn:this.updateScene,error:t,scene:e}),warningUnknowSeriousError()}}}updateEmbeddableRef(e,t){t&&this.embeddableRefs.set(e,t)}getEmbeddableElementById(e){return this.embeddableRefs.get(e)}updateEmbeddableLeafRef(e,t){t&&this.embeddableLeafRefs.set(e,t)}getEmbeddableLeafElementById(e){return this.embeddableLeafRefs.get(e)||null}get editor(){var e;const t=this.getActiveEmbeddable();if(t){if(t.node&&t.node.isEditing)return t.node.child.editor;if((null===(e=t.leaf)||void 0===e?void 0:e.view)instanceof obsidian_module.MarkdownView)return t.leaf.view.editor}return null}}function getTextMode(e){return e.search("excalidraw-plugin: parsed\n")>-1||e.search("excalidraw-plugin: locked\n")>-1?TextMode.parsed:TextMode.raw}const startupScript=()=>atob("LyoKI2V4Y2x1ZGUKYGBganMqLwovKioKICogSWYgc2V0LCB0aGlzIGNhbGxiYWNrIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGNsb3NlcyBhbiBFeGNhbGlkcmF3IHZpZXcuCiAqICAgb25WaWV3VW5sb2FkSG9vazogKHZpZXc6IEV4Y2FsaWRyYXdWaWV3KSA9PiB2b2lkID0gbnVsbDsKICovCi8vZWEub25WaWV3VW5sb2FkSG9vayA9ICh2aWV3KSA9PiB7fTsKCi8qKgogKiBJZiBzZXQsIHRoaXMgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkLCB3aGVuIHRoZSB1c2VyIGNoYW5nZXMgdGhlIHZpZXcgbW9kZS4KICogWW91IGNhbiB1c2UgdGhpcyBjYWxsYmFjayBpbiBjYXNlIHlvdSB3YW50IHRvIGRvIHNvbWV0aGluZyBhZGRpdGlvbmFsIHdoZW4gdGhlIHVzZXIgc3dpdGNoZXMgdG8gdmlldyBtb2RlIGFuZCBiYWNrLgogKiAgIG9uVmlld01vZGVDaGFuZ2VIb29rOiAoaXNWaWV3TW9kZUVuYWJsZWQ6Ym9vbGVhbiwgdmlldzogRXhjYWxpZHJhd1ZpZXcsIGVhOiBFeGNhbGlkcmF3QXV0b21hdGUpID0+IHZvaWQgPSBudWxsOwogKi8KLy9lYS5vblZpZXdNb2RlQ2hhbmdlSG9vayA9IChpc1ZpZXdNb2RlRW5hYmxlZCwgdmlldywgZWEpID0+IHt9OwoKLyoqCiAqIElmIHNldCwgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQsIHdoZW4gdGhlIHVzZXIgaG92ZXJzIGEgbGluayBpbiB0aGUgc2NlbmUuCiAqIFlvdSBjYW4gdXNlIHRoaXMgY2FsbGJhY2sgaW4gY2FzZSB5b3Ugd2FudCB0byBkbyBzb21ldGhpbmcgYWRkaXRpb25hbCB3aGVuIHRoZSBvbkxpbmtIb3ZlciBldmVudCBvY2N1cnMuCiAqIFRoaXMgY2FsbGJhY2sgbXVzdCByZXR1cm4gYSBib29sZWFuIHZhbHVlLgogKiBJbiBjYXNlIHlvdSB3YW50IHRvIHByZXZlbnQgdGhlIGV4Y2FsaWRyYXcgb25MaW5rSG92ZXIgYWN0aW9uIHlvdSBtdXN0IHJldHVybiBmYWxzZSwgaXQgd2lsbCBzdG9wIHRoZSBuYXRpdmUgZXhjYWxpZHJhdyBvbkxpbmtIb3ZlciBtYW5hZ2VtZW50IGZsb3cuCiAqICAgb25MaW5rSG92ZXJIb29rOiAoCiAqICAgICBlbGVtZW50OiBOb25EZWxldGVkRXhjYWxpZHJhd0VsZW1lbnQsCiAqICAgICBsaW5rVGV4dDogc3RyaW5nLAogKiAgICAgdmlldzogRXhjYWxpZHJhd1ZpZXcsCiAqICAgICBlYTogRXhjYWxpZHJhd0F1dG9tYXRlCiAqICAgKSA9PiBib29sZWFuID0gbnVsbDsKICovCi8vZWEub25MaW5rSG92ZXJIb29rID0gKGVsZW1lbnQsIGxpbmtUZXh0LCB2aWV3LCBlYSkgPT4ge307CiAgIAovKioKICogSWYgc2V0LCB0aGlzIGNhbGxiYWNrIGlzIHRyaWdnZXJlZCwgd2hlbiB0aGUgdXNlciBjbGlja3MgYSBsaW5rIGluIHRoZSBzY2VuZS4KICogWW91IGNhbiB1c2UgdGhpcyBjYWxsYmFjayBpbiBjYXNlIHlvdSB3YW50IHRvIGRvIHNvbWV0aGluZyBhZGRpdGlvbmFsIHdoZW4gdGhlIG9uTGlua0NsaWNrIGV2ZW50IG9jY3Vycy4KICogVGhpcyBjYWxsYmFjayBtdXN0IHJldHVybiBhIGJvb2xlYW4gdmFsdWUuCiAqIEluIGNhc2UgeW91IHdhbnQgdG8gcHJldmVudCB0aGUgZXhjYWxpZHJhdyBvbkxpbmtDbGljayBhY3Rpb24geW91IG11c3QgcmV0dXJuIGZhbHNlLCBpdCB3aWxsIHN0b3AgdGhlIG5hdGl2ZSBleGNhbGlkcmF3IG9uTGlua0NsaWNrIG1hbmFnZW1lbnQgZmxvdy4KICogICBvbkxpbmtDbGlja0hvb2s6KAogKiAgICAgZWxlbWVudDogRXhjYWxpZHJhd0VsZW1lbnQsCiAqICAgICBsaW5rVGV4dDogc3RyaW5nLAogKiAgICAgZXZlbnQ6IE1vdXNlRXZlbnQsCiAqICAgICB2aWV3OiBFeGNhbGlkcmF3VmlldywKICogICAgIGVhOiBFeGNhbGlkcmF3QXV0b21hdGUKICogICApID0+IGJvb2xlYW4gPSBudWxsOwogKi8KLy9lYS5vbkxpbmtDbGlja0hvb2sgPSAoZWxlbWVudCxsaW5rVGV4dCxldmVudCwgdmlldywgZWEpID0+IHt9OwogICAKLyoqCiAqIElmIHNldCwgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQsIHdoZW4gRXhjYWxpZHJhdyByZWNlaXZlcyBhbiBvbkRyb3AgZXZlbnQuIAogKiBZb3UgY2FuIHVzZSB0aGlzIGNhbGxiYWNrIGluIGNhc2UgeW91IHdhbnQgdG8gZG8gc29tZXRoaW5nIGFkZGl0aW9uYWwgd2hlbiB0aGUgb25Ecm9wIGV2ZW50IG9jY3Vycy4KICogVGhpcyBjYWxsYmFjayBtdXN0IHJldHVybiBhIGJvb2xlYW4gdmFsdWUuCiAqIEluIGNhc2UgeW91IHdhbnQgdG8gcHJldmVudCB0aGUgZXhjYWxpZHJhdyBvbkRyb3AgYWN0aW9uIHlvdSBtdXN0IHJldHVybiBmYWxzZSwgaXQgd2lsbCBzdG9wIHRoZSBuYXRpdmUgZXhjYWxpZHJhdyBvbkRyb3AgbWFuYWdlbWVudCBmbG93LgogKiAgIG9uRHJvcEhvb2s6IChkYXRhOiB7CiAqICAgICBlYTogRXhjYWxpZHJhd0F1dG9tYXRlOwogKiAgICAgZXZlbnQ6IFJlYWN0LkRyYWdFdmVudDxIVE1MRGl2RWxlbWVudD47CiAqICAgICBkcmFnZ2FibGU6IGFueTsgLy9PYnNpZGlhbiBkcmFnZ2FibGUgb2JqZWN0CiAqICAgICB0eXBlOiAiZmlsZSIgfCAidGV4dCIgfCAidW5rbm93biI7CiAqICAgICBwYXlsb2FkOiB7CiAqICAgICAgIGZpbGVzOiBURmlsZVtdOyAvL1RGaWxlW10gYXJyYXkgb2YgZHJvcHBlZCBmaWxlcwogKiAgICAgICB0ZXh0OiBzdHJpbmc7IC8vc3RyaW5nCiAqICAgICB9OwogKiAgICAgZXhjYWxpZHJhd0ZpbGU6IFRGaWxlOyAvL3RoZSBmaWxlIHJlY2VpdmluZyB0aGUgZHJvcCBldmVudAogKiAgICAgdmlldzogRXhjYWxpZHJhd1ZpZXc7IC8vdGhlIGV4Y2FsaWRyYXcgdmlldyByZWNlaXZpbmcgdGhlIGRyb3AKICogICAgIHBvaW50ZXJQb3NpdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9OyAvL3RoZSBwb2ludGVyIHBvc2l0aW9uIG9uIGNhbnZhcyBhdCB0aGUgdGltZSBvZiBkcm9wCiAqICAgfSkgPT4gYm9vbGVhbiA9IG51bGw7CiAqLwovL2VhLm9uRHJvcEhvb2sgPSAoZGF0YSkgPT4ge307CiAKLyoqCiAqIElmIHNldCwgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQsIHdoZW4gRXhjYWxpZHJhdyByZWNlaXZlcyBhbiBvblBhc3RlIGV2ZW50LgogKiBZb3UgY2FuIHVzZSB0aGlzIGNhbGxiYWNrIGluIGNhc2UgeW91IHdhbnQgdG8gZG8gc29tZXRoaW5nIGFkZGl0aW9uYWwgd2hlbiB0aGUKICogb25QYXN0ZSBldmVudCBvY2N1cnMuCiAqIFRoaXMgY2FsbGJhY2sgbXVzdCByZXR1cm4gYSBib29sZWFuIHZhbHVlLgogKiBJbiBjYXNlIHlvdSB3YW50IHRvIHByZXZlbnQgdGhlIGV4Y2FsaWRyYXcgb25QYXN0ZSBhY3Rpb24geW91IG11c3QgcmV0dXJuIGZhbHNlLAogKiBpdCB3aWxsIHN0b3AgdGhlIG5hdGl2ZSBleGNhbGlkcmF3IG9uUGFzdGUgbWFuYWdlbWVudCBmbG93LgogKiAgIG9uUGFzdGVIb29rOiAoZGF0YTogewogKiAgICAgZWE6IEV4Y2FsaWRyYXdBdXRvbWF0ZTsKICogICAgIHBheWxvYWQ6IENsaXBib2FyZERhdGE7CiAqICAgICBldmVudDogQ2xpcGJvYXJkRXZlbnQ7CiAqICAgICBleGNhbGlkcmF3RmlsZTogVEZpbGU7IC8vdGhlIGZpbGUgcmVjZWl2aW5nIHRoZSBwYXN0ZSBldmVudAogKiAgICAgdmlldzogRXhjYWxpZHJhd1ZpZXc7IC8vdGhlIGV4Y2FsaWRyYXcgdmlldyByZWNlaXZpbmcgdGhlIHBhc3RlCiAqICAgICBwb2ludGVyUG9zaXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfTsgLy90aGUgcG9pbnRlciBwb3NpdGlvbiBvbiBjYW52YXMKICogICB9KSA9PiBib29sZWFuID0gbnVsbDsKICovCi8vZWEub25QYXN0ZUhvb2sgPSAoZGF0YSkgPT4ge307CgovKioKICogaWYgc2V0LCB0aGlzIGNhbGxiYWNrIGlzIHRyaWdnZXJlZCwgd2hlbiBhbiBFeGNhbGlkcmF3IGZpbGUgaXMgb3BlbmVkCiAqIFlvdSBjYW4gdXNlIHRoaXMgY2FsbGJhY2sgaW4gY2FzZSB5b3Ugd2FudCB0byBkbyBzb21ldGhpbmcgYWRkaXRpb25hbCB3aGVuIHRoZSBmaWxlIGlzIG9wZW5lZC4KICogVGhpcyB3aWxsIHJ1biBiZWZvcmUgdGhlIGZpbGUgbGV2ZWwgc2NyaXB0IGRlZmluZWQgaW4gdGhlIGBleGNhbGlkcmF3LW9ubG9hZC1zY3JpcHRgIGZyb250bWF0dGVyLgogKiAgIG9uRmlsZU9wZW5Ib29rOiAoZGF0YTogewogKiAgICAgZWE6IEV4Y2FsaWRyYXdBdXRvbWF0ZTsKICogICAgIGV4Y2FsaWRyYXdGaWxlOiBURmlsZTsgLy90aGUgZmlsZSBiZWluZyBsb2FkZWQKICogICAgIHZpZXc6IEV4Y2FsaWRyYXdWaWV3OwogKiAgIH0pID0+IFByb21pc2U8dm9pZD47CiAqLwovL2VhLm9uRmlsZU9wZW5Ib29rID0gKGRhdGEpID0+IHt9OwoKLyoqCiAqIGlmIHNldCwgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQsIHdoZW4gYW4gRXhjYWxpZHJhdyBmaWxlIGlzIGNyZWF0ZWQKICogc2VlIGFsc286IGh0dHBzOi8vZ2l0aHViLmNvbS96c3ZpY3ppYW4vb2JzaWRpYW4tZXhjYWxpZHJhdy1wbHVnaW4vaXNzdWVzLzExMjQKICogICBvbkZpbGVDcmVhdGVIb29rOiAoZGF0YTogewogKiAgICAgZWE6IEV4Y2FsaWRyYXdBdXRvbWF0ZTsKICogICAgIGV4Y2FsaWRyYXdGaWxlOiBURmlsZTsgLy90aGUgZmlsZSBiZWluZyBjcmVhdGVkCiAqICAgICB2aWV3OiBFeGNhbGlkcmF3VmlldzsKICogICB9KSA9PiBQcm9taXNlPHZvaWQ+OwogKi8KLy9lYS5vbkZpbGVDcmVhdGVIb29rID0gKGRhdGEpID0+IHt9OyAKCi8qKgogKiBJZiBzZXQsIHRoaXMgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIHdoZW5ldmVyIHRoZSBhY3RpdmUgY2FudmFzIGNvbG9yIGNoYW5nZXMKICogICBvbkNhbnZhc0NvbG9yQ2hhbmdlSG9vazogKAogKiAgICAgZWE6IEV4Y2FsaWRyYXdBdXRvbWF0ZSwKICogICAgIHZpZXc6IEV4Y2FsaWRyYXdWaWV3LCAvL3RoZSBleGNhbGlkcmF3IHZpZXcgCiAqICAgICBjb2xvcjogc3RyaW5nLAogKiAgICkgPT4gdm9pZCA9IG51bGw7CiAqLwovL2VhLm9uQ2FudmFzQ29sb3JDaGFuZ2VIb29rID0gKGVhLCB2aWV3LCBjb2xvcikgPT4ge307CgovKioKKiBJZiBzZXQsIHRoaXMgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIHdoZW5ldmVyIGEgZHJhd2luZyBpcyBleHBvcnRlZCB0byBTVkcuCiogVGhlIHN0cmluZyByZXR1cm5lZCB3aWxsIHJlcGxhY2UgdGhlIGxpbmsgaW4gdGhlIGV4cG9ydGVkIFNWRy4KKiBUaGUgaG9vayBpcyBvbmx5IGV4ZWN1dGVkIGlmIHRoZSBsaW5rIGlzIHRvIGEgZmlsZSBpbnRlcm5hbCB0byBPYnNpZGlhbgoqIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL3pzdmljemlhbi9vYnNpZGlhbi1leGNhbGlkcmF3LXBsdWdpbi9pc3N1ZXMvMTYwNQoqICBvblVwZGF0ZUVsZW1lbnRMaW5rRm9yRXhwb3J0SG9vazogKGRhdGE6IHsKKiAgICBvcmlnaW5hbExpbms6IHN0cmluZywKKiAgICBvYnNpZGlhbkxpbms6IHN0cmluZywKKiAgICBsaW5rZWRGaWxlOiBURmlsZSB8IG51bGwsCiogICAgaG9zdEZpbGU6IFRGaWxlLAoqICB9KSA9PiBzdHJpbmcgPSBudWxsOwoqLwovL2VhLm9uVXBkYXRlRWxlbWVudExpbmtGb3JFeHBvcnRIb29rID0gKGRhdGEpID0+IHsKLy8gIGNvbnN0IGRlY29kZWRPYnNpZGlhblVSSSA9IGRlY29kZVVSSUNvbXBvbmVudChkYXRhLm9ic2lkaWFuTGluayk7Ci8vfTs="),CATEGORIES={WebBrowserDragAction:t$d("WEB_BROWSER_DRAG_ACTION"),LocalFileDragAction:t$d("LOCAL_FILE_DRAG_ACTION"),InternalDragAction:t$d("INTERNAL_DRAG_ACTION"),LinkClickAction:t$d("PANE_TARGET")};class ModifierKeySettingsComponent{constructor(e,t,n){this.contentEl=e,this.modifierKeyConfig=t,this.update=n,this.isMacOS=DEVICE.isMacOS||DEVICE.isIOS}render(){const e=this.isMacOS?"Mac":"Win",t=this.modifierKeyConfig[e];Object.entries(CATEGORIES).forEach((([e,n])=>{const r=this.contentEl.createEl("details");r.createEl("summary",{text:n,cls:"excalidraw-setting-h4"});const i=t[e];r.createDiv({text:t$d("DEFAULT_ACTION_DESC")+{WebBrowserDragAction:{"image-import":"Import Image to Vault","image-url":"Insert Image or YouTube Thumbnail with URL",link:"Insert Link",embeddable:"Insert Interactive-Frame"},LocalFileDragAction:{"image-import":"Insert Image: import external or reuse existing if path in Vault","image-url":"Insert Image: with local URI or internal-link if from Vault",link:"Insert Link: local URI or internal-link if from Vault",embeddable:"Insert Interactive-Frame: local URI or internal-link if from Vault"},InternalDragAction:{image:"Insert Image","image-fullsize":"Insert Image @100%",link:"Insert Link",embeddable:"Insert Interactive-Frame"},LinkClickAction:{"active-pane":"Open in current active window","new-pane":"Open in a new adjacent window","popout-window":"Open in a popout window","new-tab":"Open in a new tab","md-properties":"Show the Markdown image-properties dialog (only relevant if you have embedded a markdown document as an image)"}}[e][i.defaultAction],cls:"setting-item-description"}),Object.entries(i.rules).forEach((([t,n])=>{const i=new obsidian_module.Setting(r).setName({WebBrowserDragAction:{"image-import":"Import Image to Vault","image-url":"Insert Image or YouTube Thumbnail with URL",link:"Insert Link",embeddable:"Insert Interactive-Frame"},LocalFileDragAction:{"image-import":"Insert Image: import external or reuse existing if path in Vault","image-url":"Insert Image: with local URI or internal-link if from Vault",link:"Insert Link: local URI or internal-link if from Vault",embeddable:"Insert Interactive-Frame: local URI or internal-link if from Vault"},InternalDragAction:{image:"Insert Image","image-fullsize":"Insert Image @100%",link:"Insert Link",embeddable:"Insert Interactive-Frame"},LinkClickAction:{"active-pane":"Open in current active window","new-pane":"Open in a new adjacent window","popout-window":"Open in a popout window","new-tab":"Open in a new tab","md-properties":"Show the Markdown image-properties dialog (only relevant if you have embedded a markdown document as an image)"}}[e][n.result]);i.addToggle((e=>e.setValue(n.shift).setTooltip("SHIFT").onChange((e=>{n.shift=e,this.update()})))),i.addToggle((t=>{t.setValue(n.ctrl_cmd).setTooltip(this.isMacOS?"CMD":"CTRL").onChange((e=>{n.ctrl_cmd=e,this.update()})),this.isMacOS&&"LinkClickAction"!==e&&(t.setDisabled(!0),t.toggleEl.style.opacity="0.5")})),i.addToggle((e=>e.setValue(n.alt_opt).setTooltip(this.isMacOS?"OPT":"ALT").onChange((e=>{n.alt_opt=e,this.update()})))),i.addToggle((e=>e.setValue(n.meta_ctrl).setTooltip(this.isMacOS?"CTRL":"META").onChange((e=>{n.meta_ctrl=e,this.update()}))))}))}))}}const DEFAULT_SETTINGS={folder:"Excalidraw",cropFolder:"",annotateFolder:"",embedUseExcalidrawFolder:!1,templateFilePath:"Excalidraw/Template.excalidraw",scriptFolderPath:"Excalidraw/Scripts",compress:!1,autosave:!0,autosaveInterval:15e3,autosaveIntervalDesktop:15e3,autosaveIntervalMobile:1e4,drawingFilenamePrefix:"Drawing ",drawingEmbedPrefixWithFilename:!0,drawingFilnameEmbedPostfix:" ",drawingFilenameDateTime:"YYYY-MM-DD HH.mm.ss",useExcalidrawExtension:!0,cropPrefix:"cropped_",annotatePrefix:"annotated_",displaySVGInPreview:void 0,previewImageType:void 0,allowImageCache:!0,displayExportedImageIfAvailable:!1,previewMatchObsidianTheme:!1,width:"400",height:"",dynamicStyling:"colorful",isLeftHanded:!1,iframeMatchExcalidrawTheme:!0,matchTheme:!1,matchThemeAlways:!1,matchThemeTrigger:!1,defaultMode:"normal",defaultPenMode:"never",penModeCrosshairVisible:!1,allowPinchZoom:!1,allowWheelZoom:!1,zoomToFitOnOpen:!0,zoomToFitOnResize:!0,zoomToFitMaxLevel:2,linkPrefix:"📍",urlPrefix:"🌐",parseTODO:!1,todo:"☐",done:"🗹",hoverPreviewWithoutCTRL:!1,linkOpacity:1,openInAdjacentPane:!1,showSecondOrderLinks:!0,focusOnFileTab:!1,openInMainWorkspace:!0,showLinkBrackets:!0,allowCtrlClick:!0,forceWrap:!1,pageTransclusionCharLimit:200,wordWrappingDefault:0,removeTransclusionQuoteSigns:!0,iframelyAllowed:!0,pngExportScale:1,exportWithTheme:!0,exportWithBackground:!0,exportPaddingSVG:10,keepInSync:!1,autoexportSVG:!1,autoexportPNG:!1,autoExportLightAndDark:!1,autoexportExcalidraw:!1,embedType:"excalidraw",embedMarkdownCommentLinks:!0,embedWikiLink:!0,syncExcalidraw:!1,experimentalFileType:!1,experimentalFileTag:"✏️",experimentalLivePreview:!0,experimentalEnableFourthFont:!1,experimantalFourthFont:"Virgil",fieldSuggester:!0,compatibilityMode:!1,drawingOpenCount:0,library:"deprecated",library2:{type:"excalidrawlib",version:2,source:GITHUB_RELEASES+PLUGIN_VERSION,libraryItems:[]},imageElementNotice:!0,mdSVGwidth:500,mdSVGmaxHeight:800,mdFont:"Virgil",mdFontColor:"Black",mdBorderColor:"Black",mdCSS:"",scriptEngineSettings:{},defaultTrayMode:!0,previousRelease:"0.0.0",showReleaseNotes:!0,showNewVersionNotification:!0,latexBoilerplate:"\\color{blue}",taskboneEnabled:!1,taskboneAPIkey:"",pinnedScripts:[],customPens:[Object.assign({},PENS.default),Object.assign({},PENS.highlighter),Object.assign({},PENS.finetip),Object.assign({},PENS.fountain),Object.assign({},PENS.marker),Object.assign({},PENS["thick-thin"]),Object.assign({},PENS["thin-thick-thin"]),Object.assign({},PENS.default),Object.assign({},PENS.default),Object.assign({},PENS.default)],numberOfCustomPens:0,pdfScale:4,pdfBorderBox:!0,pdfGapSize:20,pdfGroupPages:!1,pdfLockAfterImport:!0,pdfNumColumns:1,pdfNumRows:1,pdfDirection:"right",pdfImportScale:.3,laserSettings:{DECAY_LENGTH:50,DECAY_TIME:1e3,COLOR:"#ff0000"},embeddableMarkdownDefaults:{useObsidianDefaults:!1,backgroundMatchCanvas:!1,backgroundMatchElement:!0,backgroundColor:"#fff",backgroundOpacity:60,borderMatchElement:!0,borderColor:"#fff",borderOpacity:0,filenameVisible:!1},canvasImmersiveEmbed:!0,startupScriptPath:"",openAIAPIToken:"",openAIDefaultTextModel:"gpt-3.5-turbo-1106",openAIDefaultVisionModel:"gpt-4-vision-preview",openAIDefaultImageGenerationModel:"dall-e-3",openAIURL:"https://api.openai.com/v1/chat/completions",openAIImageGenerationURL:"https://api.openai.com/v1/images/generations",openAIImageEditsURL:"https://api.openai.com/v1/images/edits",openAIImageVariationURL:"https://api.openai.com/v1/images/variations",modifierKeyConfig:{Mac:{LocalFileDragAction:{defaultAction:"image-import",rules:[{shift:!1,ctrl_cmd:!1,alt_opt:!1,meta_ctrl:!1,result:"image-import"},{shift:!0,ctrl_cmd:!1,alt_opt:!0,meta_ctrl:!1,result:"link"},{shift:!0,ctrl_cmd:!1,alt_opt:!1,meta_ctrl:!1,result:"image-url"},{shift:!1,ctrl_cmd:!1,alt_opt:!0,meta_ctrl:!1,result:"embeddable"}]},WebBrowserDragAction:{defaultAction:"image-url",rules:[{shift:!1,ctrl_cmd:!1,alt_opt:!1,meta_ctrl:!1,result:"image-url"},{shift:!0,ctrl_cmd:!1,alt_opt:!0,meta_ctrl:!1,result:"link"},{shift:!1,ctrl_cmd:!1,alt_opt:!0,meta_ctrl:!1,result:"embeddable"},{shift:!0,ctrl_cmd:!1,alt_opt:!1,meta_ctrl:!1,result:"image-import"}]},InternalDragAction:{defaultAction:"link",rules:[{shift:!1,ctrl_cmd:!1,alt_opt:!1,meta_ctrl:!1,result:"link"},{shift:!1,ctrl_cmd:!1,alt_opt:!1,meta_ctrl:!0,result:"embeddable"},{shift:!0,ctrl_cmd:!1,alt_opt:!1,meta_ctrl:!1,result:"image"},{shift:!0,ctrl_cmd:!1,alt_opt:!1,meta_ctrl:!0,result:"image-fullsize"}]},LinkClickAction:{defaultAction:"new-tab",rules:[{shift:!1,ctrl_cmd:!1,alt_opt:!1,meta_ctrl:!1,result:"active-pane"},{shift:!1,ctrl_cmd:!0,alt_opt:!1,meta_ctrl:!1,result:"new-tab"},{shift:!1,ctrl_cmd:!0,alt_opt:!0,meta_ctrl:!1,result:"new-pane"},{shift:!0,ctrl_cmd:!0,alt_opt:!0,meta_ctrl:!1,result:"popout-window"},{shift:!1,ctrl_cmd:!0,alt_opt:!1,meta_ctrl:!0,result:"md-properties"}]}},Win:{LocalFileDragAction:{defaultAction:"image-import",rules:[{shift:!1,ctrl_cmd:!1,alt_opt:!1,meta_ctrl:!1,result:"image-import"},{shift:!1,ctrl_cmd:!0,alt_opt:!1,meta_ctrl:!1,result:"link"},{shift:!0,ctrl_cmd:!1,alt_opt:!1,meta_ctrl:!1,result:"image-url"},{shift:!0,ctrl_cmd:!0,alt_opt:!1,meta_ctrl:!1,result:"embeddable"}]},WebBrowserDragAction:{defaultAction:"image-url",rules:[{shift:!1,ctrl_cmd:!1,alt_opt:!1,meta_ctrl:!1,result:"image-url"},{shift:!1,ctrl_cmd:!0,alt_opt:!1,meta_ctrl:!1,result:"link"},{shift:!0,ctrl_cmd:!0,alt_opt:!1,meta_ctrl:!1,result:"embeddable"},{shift:!0,ctrl_cmd:!1,alt_opt:!1,meta_ctrl:!1,result:"image-import"}]},InternalDragAction:{defaultAction:"link",rules:[{shift:!1,ctrl_cmd:!1,alt_opt:!1,meta_ctrl:!1,result:"link"},{shift:!0,ctrl_cmd:!0,alt_opt:!1,meta_ctrl:!1,result:"embeddable"},{shift:!0,ctrl_cmd:!1,alt_opt:!1,meta_ctrl:!1,result:"image"},{shift:!1,ctrl_cmd:!0,alt_opt:!0,meta_ctrl:!1,result:"image-fullsize"}]},LinkClickAction:{defaultAction:"new-tab",rules:[{shift:!1,ctrl_cmd:!1,alt_opt:!1,meta_ctrl:!1,result:"active-pane"},{shift:!1,ctrl_cmd:!0,alt_opt:!1,meta_ctrl:!1,result:"new-tab"},{shift:!1,ctrl_cmd:!0,alt_opt:!0,meta_ctrl:!1,result:"new-pane"},{shift:!0,ctrl_cmd:!0,alt_opt:!0,meta_ctrl:!1,result:"popout-window"},{shift:!1,ctrl_cmd:!0,alt_opt:!1,meta_ctrl:!0,result:"md-properties"}]}}},slidingPanesSupport:!1,areaZoomLimit:1,longPressDesktop:500,longPressMobile:500};class ExcalidrawSettingTab extends obsidian_module.PluginSettingTab{constructor(e,t){super(e,t),this.requestEmbedUpdate=!1,this.requestReloadDrawings=!1,this.requestUpdatePinnedPens=!1,this.requestUpdateDynamicStyling=!1,this.plugin=t}applySettingsUpdate(e=!1){e&&(this.requestReloadDrawings=!0)}async hide(){if(this.plugin.settings.scriptFolderPath=obsidian_module.normalizePath(this.plugin.settings.scriptFolderPath),"/"!==this.plugin.settings.scriptFolderPath&&""!==this.plugin.settings.scriptFolderPath||(this.plugin.settings.scriptFolderPath="Excalidraw/Scripts"),this.plugin.saveSettings(),this.requestUpdatePinnedPens&&app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinnedCustomPens()})),this.requestUpdateDynamicStyling&&app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&setDynamicStyle(this.plugin.ea,e.view,e.view.previousBackgroundColor,this.plugin.settings.dynamicStyling)})),this.requestReloadDrawings){const e=app.workspace.getLeavesOfType("excalidraw");for(const t of e)t.view instanceof ExcalidrawView&&(await t.view.save(!1),await t.view.reload(!0));this.requestEmbedUpdate=!0}this.requestEmbedUpdate&&this.plugin.triggerEmbedUpdates(),this.plugin.scriptEngine.updateScriptPath()}async display(){var e;let t;await this.plugin.loadSettings(),this.requestEmbedUpdate=!1,this.requestReloadDrawings=!1;const{containerEl:n}=this;n.addClass("excalidraw-settings"),this.containerEl.empty();const r=n.createDiv("coffee");r.addClass("ex-coffee-div"),r.createEl("a",{href:"https://ko-fi.com/zsolt"}).createEl("img",{attr:{src:"https://cdn.ko-fi.com/cdn/kofi3.png?v=3"}}).height=45,n.createEl("hr",{cls:"excalidraw-setting-hr"}),n.createDiv({text:t$d("BASIC_DESC"),cls:"setting-item-description"}),t=this.containerEl.createEl("details"),t.createEl("summary",{text:t$d("BASIC_HEAD"),cls:"excalidraw-setting-h1"}),new obsidian_module.Setting(t).setName(t$d("RELEASE_NOTES_NAME")).setDesc(fragWithHTML(t$d("RELEASE_NOTES_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.showReleaseNotes).onChange((async e=>{this.plugin.settings.showReleaseNotes=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("NEWVERSION_NOTIFICATION_NAME")).setDesc(fragWithHTML(t$d("NEWVERSION_NOTIFICATION_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.showNewVersionNotification).onChange((async e=>{this.plugin.settings.showNewVersionNotification=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FOLDER_NAME")).setDesc(fragWithHTML(t$d("FOLDER_DESC"))).addText((e=>e.setPlaceholder("e.g.: Excalidraw").setValue(this.plugin.settings.folder).onChange((async e=>{this.plugin.settings.folder=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FOLDER_EMBED_NAME")).setDesc(fragWithHTML(t$d("FOLDER_EMBED_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.embedUseExcalidrawFolder).onChange((async e=>{this.plugin.settings.embedUseExcalidrawFolder=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("CROP_FOLDER_NAME")).setDesc(fragWithHTML(t$d("CROP_FOLDER_DESC"))).addText((e=>e.setPlaceholder("e.g.: Excalidraw/Cropped").setValue(this.plugin.settings.cropFolder).onChange((async e=>{this.plugin.settings.cropFolder=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("ANNOTATE_FOLDER_NAME")).setDesc(fragWithHTML(t$d("ANNOTATE_FOLDER_DESC"))).addText((e=>e.setPlaceholder("e.g.: Excalidraw/Annotations").setValue(this.plugin.settings.annotateFolder).onChange((async e=>{this.plugin.settings.annotateFolder=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("TEMPLATE_NAME")).setDesc(fragWithHTML(t$d("TEMPLATE_DESC"))).addText((e=>e.setPlaceholder("e.g.: Excalidraw/Template").setValue(this.plugin.settings.templateFilePath).onChange((async e=>{this.plugin.settings.templateFilePath=e,this.applySettingsUpdate()})))),addIframe(t,"jgUpYznHP9A",216),new obsidian_module.Setting(t).setName(t$d("SCRIPT_FOLDER_NAME")).setDesc(fragWithHTML(t$d("SCRIPT_FOLDER_DESC"))).addText((e=>e.setPlaceholder("e.g.: Excalidraw/Scripts").setValue(this.plugin.settings.scriptFolderPath).onChange((async e=>{this.plugin.settings.scriptFolderPath=e,this.applySettingsUpdate()})))),n.createEl("hr",{cls:"excalidraw-setting-hr"}),n.createDiv({text:t$d("SAVING_DESC"),cls:"setting-item-description"}),t=this.containerEl.createEl("details");const i=t;t.createEl("summary",{text:t$d("SAVING_HEAD"),cls:"excalidraw-setting-h1"}),new obsidian_module.Setting(t).setName(t$d("COMPRESS_NAME")).setDesc(fragWithHTML(t$d("COMPRESS_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.compress).onChange((async e=>{this.plugin.settings.compress=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("AUTOSAVE_INTERVAL_DESKTOP_NAME")).setDesc(fragWithHTML(t$d("AUTOSAVE_INTERVAL_DESKTOP_DESC"))).addDropdown((e=>e.addOption("15000","Frequent (every 15 seconds)").addOption("60000","Moderate (every 60 seconds)").addOption("300000","Rare (every 5 minutes)").addOption("900000","Practically never (every 15 minutes)").setValue(this.plugin.settings.autosaveIntervalDesktop.toString()).onChange((async e=>{this.plugin.settings.autosaveIntervalDesktop=parseInt(e),this.plugin.settings.autosaveInterval=app.isMobile?this.plugin.settings.autosaveIntervalMobile:this.plugin.settings.autosaveIntervalDesktop,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("AUTOSAVE_INTERVAL_MOBILE_NAME")).setDesc(fragWithHTML(t$d("AUTOSAVE_INTERVAL_MOBILE_DESC"))).addDropdown((e=>e.addOption("10000","Frequent (every 10 seconds)").addOption("30000","Moderate (every 30 seconds)").addOption("60000","Rare (every 1 minute)").addOption("300000","Practically never (every 5 minutes)").setValue(this.plugin.settings.autosaveIntervalMobile.toString()).onChange((async e=>{this.plugin.settings.autosaveIntervalMobile=parseInt(e),this.plugin.settings.autosaveInterval=app.isMobile?this.plugin.settings.autosaveIntervalMobile:this.plugin.settings.autosaveIntervalDesktop,this.applySettingsUpdate()})))),t=i.createEl("details"),t.createEl("summary",{text:t$d("FILENAME_HEAD"),cls:"excalidraw-setting-h3"}),t.createDiv("",(e=>{e.innerHTML=t$d("FILENAME_DESC")}));const o=()=>`${t$d("FILENAME_SAMPLE")}<a href='https://www.youtube.com/channel/UCC0gns4a9fhVkGkngvSumAQ' target='_blank'>${getDrawingFilename(this.plugin.settings)}</a></b><br>${t$d("FILENAME_EMBED_SAMPLE")}<a href='https://www.youtube.com/channel/UCC0gns4a9fhVkGkngvSumAQ' target='_blank'>${getEmbedFilename("{NOTE_NAME}",this.plugin.settings)}</a></b>`,a=t.createEl("p",{text:""});a.innerHTML=o(),new obsidian_module.Setting(t).setName(t$d("FILENAME_PREFIX_NAME")).setDesc(fragWithHTML(t$d("FILENAME_PREFIX_DESC"))).addText((e=>e.setPlaceholder("e.g.: Drawing ").setValue(this.plugin.settings.drawingFilenamePrefix).onChange((async t=>{this.plugin.settings.drawingFilenamePrefix=t.replaceAll(/[<>:"/\\|?*]/g,"_"),e.setValue(this.plugin.settings.drawingFilenamePrefix),a.innerHTML=o(),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FILENAME_PREFIX_EMBED_NAME")).setDesc(fragWithHTML(t$d("FILENAME_PREFIX_EMBED_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.drawingEmbedPrefixWithFilename).onChange((async e=>{this.plugin.settings.drawingEmbedPrefixWithFilename=e,a.innerHTML=o(),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FILENAME_POSTFIX_NAME")).setDesc(fragWithHTML(t$d("FILENAME_POSTFIX_DESC"))).addText((e=>e.setPlaceholder("").setValue(this.plugin.settings.drawingFilnameEmbedPostfix).onChange((async t=>{this.plugin.settings.drawingFilnameEmbedPostfix=t.replaceAll(/[<>:"/\\|?*]/g,"_"),e.setValue(this.plugin.settings.drawingFilnameEmbedPostfix),a.innerHTML=o(),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FILENAME_DATE_NAME")).setDesc(fragWithHTML(t$d("FILENAME_DATE_DESC"))).addText((e=>e.setPlaceholder("YYYY-MM-DD HH.mm.ss").setValue(this.plugin.settings.drawingFilenameDateTime).onChange((async t=>{this.plugin.settings.drawingFilenameDateTime=t.replaceAll(/[<>:"/\\|?*]/g,"_"),e.setValue(this.plugin.settings.drawingFilenameDateTime),a.innerHTML=o(),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FILENAME_EXCALIDRAW_EXTENSION_NAME")).setDesc(fragWithHTML(t$d("FILENAME_EXCALIDRAW_EXTENSION_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.useExcalidrawExtension).onChange((async e=>{this.plugin.settings.useExcalidrawExtension=e,a.innerHTML=o(),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("CROP_PREFIX_NAME")).setDesc(fragWithHTML(t$d("CROP_PREFIX_DESC"))).addText((e=>e.setPlaceholder("e.g.: Cropped_ ").setValue(this.plugin.settings.cropPrefix).onChange((async t=>{this.plugin.settings.cropPrefix=t.replaceAll(/[<>:"/\\|?*]/g,"_"),e.setValue(this.plugin.settings.cropPrefix),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("ANNOTATE_PREFIX_NAME")).setDesc(fragWithHTML(t$d("ANNOTATE_PREFIX_DESC"))).addText((e=>e.setPlaceholder("e.g.: Annotated_ ").setValue(this.plugin.settings.annotatePrefix).onChange((async t=>{this.plugin.settings.annotatePrefix=t.replaceAll(/[<>:"/\\|?*]/g,"_"),e.setValue(this.plugin.settings.annotatePrefix),this.applySettingsUpdate()})))),n.createEl("hr",{cls:"excalidraw-setting-hr"}),n.createDiv({text:t$d("AI_DESC"),cls:"setting-item-description"}),t=this.containerEl.createEl("details"),t.createEl("summary",{text:t$d("AI_HEAD"),cls:"excalidraw-setting-h1"}),new obsidian_module.Setting(t).setName(t$d("AI_OPENAI_TOKEN_NAME")).setDesc(fragWithHTML(t$d("AI_OPENAI_TOKEN_DESC"))).addText((e=>e.setPlaceholder(t$d("AI_OPENAI_TOKEN_PLACEHOLDER")).setValue(this.plugin.settings.openAIAPIToken).onChange((async e=>{this.plugin.settings.openAIAPIToken=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("AI_OPENAI_DEFAULT_MODEL_NAME")).setDesc(fragWithHTML(t$d("AI_OPENAI_DEFAULT_MODEL_DESC"))).addText((e=>e.setPlaceholder(t$d("AI_OPENAI_DEFAULT_MODEL_PLACEHOLDER")).setValue(this.plugin.settings.openAIDefaultTextModel).onChange((async e=>{this.plugin.settings.openAIDefaultTextModel=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("AI_OPENAI_DEFAULT_VISION_MODEL_NAME")).setDesc(fragWithHTML(t$d("AI_OPENAI_DEFAULT_VISION_MODEL_DESC"))).addText((e=>e.setPlaceholder(t$d("AI_OPENAI_DEFAULT_VISION_MODEL_PLACEHOLDER")).setValue(this.plugin.settings.openAIDefaultVisionModel).onChange((async e=>{this.plugin.settings.openAIDefaultVisionModel=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("AI_OPENAI_DEFAULT_IMAGE_MODEL_NAME")).setDesc(fragWithHTML(t$d("AI_OPENAI_DEFAULT_IMAGE_MODEL_DESC"))).addText((e=>e.setPlaceholder(t$d("AI_OPENAI_DEFAULT_IMAGE_MODEL_PLACEHOLDER")).setValue(this.plugin.settings.openAIDefaultImageGenerationModel).onChange((async e=>{this.plugin.settings.openAIDefaultImageGenerationModel=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("AI_OPENAI_DEFAULT_API_URL_NAME")).setDesc(fragWithHTML(t$d("AI_OPENAI_DEFAULT_API_URL_DESC"))).addText((e=>e.setPlaceholder("e.g.: https://api.openai.com/v1/chat/completions").setValue(this.plugin.settings.openAIURL).onChange((async e=>{this.plugin.settings.openAIURL=e,this.applySettingsUpdate()})))),n.createEl("hr",{cls:"excalidraw-setting-hr"}),n.createDiv({text:t$d("DISPLAY_DESC"),cls:"setting-item-description"}),t=this.containerEl.createEl("details");const s=t;let l,c,T,Q,d,u,p,h;t.createEl("summary",{text:t$d("DISPLAY_HEAD"),cls:"excalidraw-setting-h1"}),new obsidian_module.Setting(t).setName(t$d("DEFAULT_PEN_MODE_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_PEN_MODE_DESC"))).addDropdown((e=>e.addOption("never","Never").addOption("mobile","On Obsidian Mobile").addOption("always","Always").setValue(this.plugin.settings.defaultPenMode).onChange((async e=>{this.plugin.settings.defaultPenMode=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("SHOW_PEN_MODE_FREEDRAW_CROSSHAIR_NAME")).setDesc(fragWithHTML(t$d("SHOW_PEN_MODE_FREEDRAW_CROSSHAIR_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.penModeCrosshairVisible).onChange((async e=>{this.plugin.settings.penModeCrosshairVisible=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("LEFTHANDED_MODE_NAME")).setDesc(fragWithHTML(t$d("LEFTHANDED_MODE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.isLeftHanded).onChange((async e=>{this.plugin.settings.isLeftHanded=e,setLeftHandedMode(e),setTimeout((()=>setLeftHandedMode(e))),this.applySettingsUpdate()})))),addIframe(t,"H8Njp7ZXYag",999),t=s.createEl("details"),t.createEl("summary",{text:t$d("THEME_HEAD"),cls:"excalidraw-setting-h3"}),new obsidian_module.Setting(t).setName(t$d("DYNAMICSTYLE_NAME")).setDesc(fragWithHTML(t$d("DYNAMICSTYLE_DESC"))).addDropdown((e=>e.addOption("none","Dynamic Styling OFF").addOption("colorful","Match color").addOption("gray","Gray, match tone").setValue(this.plugin.settings.dynamicStyling).onChange((async e=>{this.requestUpdateDynamicStyling=!0,this.plugin.settings.dynamicStyling=e,this.applySettingsUpdate()})))),addIframe(t,"fypDth_-8q0"),new obsidian_module.Setting(t).setName(t$d("IFRAME_MATCH_THEME_NAME")).setDesc(fragWithHTML(t$d("IFRAME_MATCH_THEME_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.iframeMatchExcalidrawTheme).onChange((async e=>{this.plugin.settings.iframeMatchExcalidrawTheme=e,this.applySettingsUpdate(!0)})))),addIframe(t,"ICpoyMv6KSs"),new obsidian_module.Setting(t).setName(t$d("MATCH_THEME_NAME")).setDesc(fragWithHTML(t$d("MATCH_THEME_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.matchTheme).onChange((async e=>{this.plugin.settings.matchTheme=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("MATCH_THEME_ALWAYS_NAME")).setDesc(fragWithHTML(t$d("MATCH_THEME_ALWAYS_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.matchThemeAlways).onChange((async e=>{this.plugin.settings.matchThemeAlways=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("MATCH_THEME_TRIGGER_NAME")).setDesc(fragWithHTML(t$d("MATCH_THEME_TRIGGER_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.matchThemeTrigger).onChange((async e=>{this.plugin.settings.matchThemeTrigger=e,e?this.plugin.addThemeObserver():this.plugin.removeThemeObserver(),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("DEFAULT_OPEN_MODE_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_OPEN_MODE_DESC"))).addDropdown((e=>e.addOption("normal","Always in normal-mode").addOption("zen","Always in zen-mode").addOption("view","Always in view-mode").addOption("view-mobile","Usually normal, but view-mode on Phone").setValue(this.plugin.settings.defaultMode).onChange((async e=>{this.plugin.settings.defaultMode=e,this.applySettingsUpdate()})))),t=s.createEl("details"),t.createEl("summary",{text:t$d("ZOOM_HEAD"),cls:"excalidraw-setting-h3"}),new obsidian_module.Setting(t).setName(t$d("DEFAULT_PINCHZOOM_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_PINCHZOOM_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.allowPinchZoom).onChange((async e=>{this.plugin.settings.allowPinchZoom=e,app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinchZoom()})),this.applySettingsUpdate()})))),addIframe(t,"rBarRfcSxNo",107),new obsidian_module.Setting(t).setName(t$d("DEFAULT_WHEELZOOM_NAME")).setDesc(fragWithHTML(t$d("DEFAULT_WHEELZOOM_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.allowWheelZoom).onChange((async e=>{this.plugin.settings.allowWheelZoom=e,app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updateWheelZoom()})),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("ZOOM_TO_FIT_ONOPEN_NAME")).setDesc(fragWithHTML(t$d("ZOOM_TO_FIT_ONOPEN_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.zoomToFitOnOpen).onChange((async e=>{this.plugin.settings.zoomToFitOnOpen=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("ZOOM_TO_FIT_NAME")).setDesc(fragWithHTML(t$d("ZOOM_TO_FIT_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.zoomToFitOnResize).onChange((async e=>{this.plugin.settings.zoomToFitOnResize=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("ZOOM_TO_FIT_MAX_LEVEL_NAME")).setDesc(fragWithHTML(t$d("ZOOM_TO_FIT_MAX_LEVEL_DESC"))).addSlider((e=>e.setLimits(.5,10,.5).setValue(this.plugin.settings.zoomToFitMaxLevel).onChange((async e=>{l.innerText=` ${e.toString()}`,this.plugin.settings.zoomToFitMaxLevel=e,this.applySettingsUpdate()})))).settingEl.createDiv("",(e=>{l=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.zoomToFitMaxLevel.toString()}`})),t=s.createEl("details"),t.createEl("summary",{text:t$d("LASER_HEAD"),cls:"excalidraw-setting-h3"}),new obsidian_module.Setting(t).setName(t$d("LASER_COLOR")).addColorPicker((e=>e.setValue(this.plugin.settings.laserSettings.COLOR).onChange((async e=>{this.plugin.settings.laserSettings.COLOR=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("LASER_DECAY_TIME_NAME")).setDesc(fragWithHTML(t$d("LASER_DECAY_TIME_DESC"))).addSlider((e=>e.setLimits(500,2e4,500).setValue(this.plugin.settings.laserSettings.DECAY_TIME).onChange((async e=>{c.innerText=` ${e.toString()}`,this.plugin.settings.laserSettings.DECAY_TIME=e,this.applySettingsUpdate()})))).settingEl.createDiv("",(e=>{c=e,e.style.minWidth="3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.laserSettings.DECAY_TIME.toString()}`})),new obsidian_module.Setting(t).setName(t$d("LASER_DECAY_LENGTH_NAME")).setDesc(fragWithHTML(t$d("LASER_DECAY_LENGTH_DESC"))).addSlider((e=>e.setLimits(25,2e3,25).setValue(this.plugin.settings.laserSettings.DECAY_LENGTH).onChange((async e=>{T.innerText=` ${e.toString()}`,this.plugin.settings.laserSettings.DECAY_LENGTH=e,this.applySettingsUpdate()})))).settingEl.createDiv("",(e=>{T=e,e.style.minWidth="3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.laserSettings.DECAY_LENGTH.toString()}`})),t=s.createEl("details"),t.createEl("summary",{text:t$d("DRAG_MODIFIER_NAME"),cls:"excalidraw-setting-h3"}),t.createDiv({text:t$d("DRAG_MODIFIER_DESC"),cls:"setting-item-description"}),new obsidian_module.Setting(t).setName(t$d("LONG_PRESS_DESKTOP_NAME")).setDesc(fragWithHTML(t$d("LONG_PRESS_DESKTOP_DESC"))).addSlider((e=>e.setLimits(300,3e3,100).setValue(this.plugin.settings.longPressDesktop).onChange((async e=>{Q.innerText=` ${e.toString()}`,this.plugin.settings.longPressDesktop=e,this.applySettingsUpdate(!0)})))).settingEl.createDiv("",(e=>{Q=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.longPressDesktop.toString()}`})),new obsidian_module.Setting(t).setName(t$d("LONG_PRESS_MOBILE_NAME")).setDesc(fragWithHTML(t$d("LONG_PRESS_MOBILE_DESC"))).addSlider((e=>e.setLimits(300,3e3,100).setValue(this.plugin.settings.longPressMobile).onChange((async e=>{d.innerText=` ${e.toString()}`,this.plugin.settings.longPressMobile=e,this.applySettingsUpdate(!0)})))).settingEl.createDiv("",(e=>{d=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.longPressMobile.toString()}`})),new ModifierKeySettingsComponent(t,this.plugin.settings.modifierKeyConfig,this.applySettingsUpdate).render(),n.createEl("hr",{cls:"excalidraw-setting-hr"}),n.createDiv({text:t$d("LINKS_HEAD_DESC"),cls:"setting-item-description"}),t=this.containerEl.createEl("details"),t.createEl("summary",{text:t$d("LINKS_HEAD"),cls:"excalidraw-setting-h1"}),t.createEl("span",void 0,(e=>e.innerHTML=t$d("LINKS_DESC"))),new obsidian_module.Setting(t).setName(t$d("SECOND_ORDER_LINKS_NAME")).setDesc(fragWithHTML(t$d("SECOND_ORDER_LINKS_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.showSecondOrderLinks).onChange((async e=>{this.plugin.settings.showSecondOrderLinks=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("ADJACENT_PANE_NAME")).setDesc(fragWithHTML(t$d("ADJACENT_PANE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.openInAdjacentPane).onChange((async e=>{this.plugin.settings.openInAdjacentPane=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FOCUS_ON_EXISTING_TAB_NAME")).setDesc(fragWithHTML(t$d("FOCUS_ON_EXISTING_TAB_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.focusOnFileTab).onChange((async e=>{this.plugin.settings.focusOnFileTab=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("MAINWORKSPACE_PANE_NAME")).setDesc(fragWithHTML(t$d("MAINWORKSPACE_PANE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.openInMainWorkspace).onChange((async e=>{this.plugin.settings.openInMainWorkspace=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(fragWithHTML(t$d("LINK_BRACKETS_NAME"))).setDesc(fragWithHTML(t$d("LINK_BRACKETS_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.showLinkBrackets).onChange((e=>{this.plugin.settings.showLinkBrackets=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("LINK_PREFIX_NAME")).setDesc(fragWithHTML(t$d("LINK_PREFIX_DESC"))).addText((e=>e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.linkPrefix).onChange((e=>{this.plugin.settings.linkPrefix=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("URL_PREFIX_NAME")).setDesc(fragWithHTML(t$d("URL_PREFIX_DESC"))).addText((e=>e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.urlPrefix).onChange((e=>{this.plugin.settings.urlPrefix=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("PARSE_TODO_NAME")).setDesc(fragWithHTML(t$d("PARSE_TODO_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.parseTODO).onChange((e=>{this.plugin.settings.parseTODO=e,u.setDisabled(!e),p.setDisabled(!e),this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("TODO_NAME")).setDesc(fragWithHTML(t$d("TODO_DESC"))).addText((e=>{u=e,e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.todo).onChange((e=>{this.plugin.settings.todo=e,this.applySettingsUpdate(!0)}))})),u.setDisabled(!this.plugin.settings.parseTODO),new obsidian_module.Setting(t).setName(t$d("DONE_NAME")).setDesc(fragWithHTML(t$d("DONE_DESC"))).setDisabled(!this.plugin.settings.parseTODO).addText((e=>{p=e,e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.done).onChange((e=>{this.plugin.settings.done=e,this.applySettingsUpdate(!0)}))})),p.setDisabled(!this.plugin.settings.parseTODO),new obsidian_module.Setting(t).setName(t$d("LINKOPACITY_NAME")).setDesc(fragWithHTML(t$d("LINKOPACITY_DESC"))).addSlider((e=>e.setLimits(0,1,.05).setValue(this.plugin.settings.linkOpacity).onChange((async e=>{h.innerText=` ${e.toString()}`,this.plugin.settings.linkOpacity=e,this.applySettingsUpdate(!0)})))).settingEl.createDiv("",(e=>{h=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.linkOpacity.toString()}`})),new obsidian_module.Setting(t).setName(t$d("HOVERPREVIEW_NAME")).setDesc(fragWithHTML(t$d("HOVERPREVIEW_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.hoverPreviewWithoutCTRL).onChange((async e=>{this.plugin.settings.hoverPreviewWithoutCTRL=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("LINK_CTRL_CLICK_NAME")).setDesc(fragWithHTML(t$d("LINK_CTRL_CLICK_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.allowCtrlClick).onChange((async e=>{this.plugin.settings.allowCtrlClick=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("TRANSCLUSION_WRAP_NAME")).setDesc(fragWithHTML(t$d("TRANSCLUSION_WRAP_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.forceWrap).onChange((async e=>{this.plugin.settings.forceWrap=e,this.applySettingsUpdate(!0)})))).descEl.innerHTML=`<code>![[doc#^ref]]{number}</code> ${t$d("TRANSCLUSION_WRAP_DESC")}`,new obsidian_module.Setting(t).setName(t$d("PAGE_TRANSCLUSION_CHARCOUNT_NAME")).setDesc(fragWithHTML(t$d("PAGE_TRANSCLUSION_CHARCOUNT_DESC"))).addText((e=>e.setPlaceholder("Enter a number").setValue(this.plugin.settings.pageTransclusionCharLimit.toString()).onChange((async t=>{const n=parseInt(t);if(isNaN(n)&&""!==t)e.setValue(this.plugin.settings.pageTransclusionCharLimit.toString());else{if(this.requestEmbedUpdate=!0,""===t)return this.plugin.settings.pageTransclusionCharLimit=10,void this.applySettingsUpdate(!0);this.plugin.settings.pageTransclusionCharLimit=n,e.setValue(this.plugin.settings.pageTransclusionCharLimit.toString()),this.applySettingsUpdate(!0)}})))),new obsidian_module.Setting(t).setName(t$d("TRANSCLUSION_DEFAULT_WRAP_NAME")).setDesc(fragWithHTML(t$d("TRANSCLUSION_DEFAULT_WRAP_DESC"))).addText((e=>e.setPlaceholder("Enter a number").setValue(this.plugin.settings.wordWrappingDefault.toString()).onChange((async t=>{const n=parseInt(t);if(isNaN(n)&&""!==t)e.setValue(this.plugin.settings.wordWrappingDefault.toString());else{if(this.requestEmbedUpdate=!0,""===t)return this.plugin.settings.wordWrappingDefault=0,void this.applySettingsUpdate(!0);this.plugin.settings.wordWrappingDefault=n,e.setValue(this.plugin.settings.wordWrappingDefault.toString()),this.applySettingsUpdate(!0)}})))),new obsidian_module.Setting(t).setName(t$d("QUOTE_TRANSCLUSION_REMOVE_NAME")).setDesc(fragWithHTML(t$d("QUOTE_TRANSCLUSION_REMOVE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.removeTransclusionQuoteSigns).onChange((e=>{this.plugin.settings.removeTransclusionQuoteSigns=e,this.requestEmbedUpdate=!0,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("GET_URL_TITLE_NAME")).setDesc(fragWithHTML(t$d("GET_URL_TITLE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.iframelyAllowed).onChange((async e=>{this.plugin.settings.iframelyAllowed=e,this.applySettingsUpdate()})))),n.createEl("hr",{cls:"excalidraw-setting-hr"}),n.createDiv({text:t$d("EMBED_DESC"),cls:"setting-item-description"}),t=this.containerEl.createEl("details");const m=t;let f,g;t.createEl("summary",{text:t$d("EMBED_HEAD"),cls:"excalidraw-setting-h1"}),new obsidian_module.Setting(t).setName(t$d("EMBED_PREVIEW_IMAGETYPE_NAME")).setDesc(fragWithHTML(t$d("EMBED_PREVIEW_IMAGETYPE_DESC"))).addDropdown((e=>e.addOption(PreviewImageType.PNG,"PNG Image").addOption(PreviewImageType.SVG,"Native SVG").addOption(PreviewImageType.SVGIMG,"SVG Image").setValue(this.plugin.settings.previewImageType).onChange((e=>{this.plugin.settings.previewImageType=e,this.requestEmbedUpdate=!0,this.applySettingsUpdate()})))),addIframe(t,"yZQoJg2RCKI"),addIframe(t,"opLd1SqaH_I",8),new obsidian_module.Setting(t).setName(t$d("EMBED_TYPE_NAME")).setDesc(fragWithHTML(t$d("EMBED_TYPE_DESC"))).addDropdown((async e=>{f=e,f.addOption("excalidraw","excalidraw"),this.plugin.settings.autoexportPNG?f.addOption("PNG","PNG"):"PNG"===this.plugin.settings.embedType&&(this.plugin.settings.embedType="excalidraw",this.applySettingsUpdate()),this.plugin.settings.autoexportSVG?f.addOption("SVG","SVG"):"SVG"===this.plugin.settings.embedType&&(this.plugin.settings.embedType="excalidraw",this.applySettingsUpdate()),f.setValue(this.plugin.settings.embedType).onChange((async e=>{this.plugin.settings.embedType=e,g.settingEl.style.display="excalidraw"===e?"none":"",this.applySettingsUpdate()}))})),g=new obsidian_module.Setting(t).setName(t$d("EMBED_MARKDOWN_COMMENT_NAME")).setDesc(fragWithHTML(t$d("EMBED_MARKDOWN_COMMENT_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.embedMarkdownCommentLinks).onChange((async e=>{this.plugin.settings.embedMarkdownCommentLinks=e,this.applySettingsUpdate()})))),g.settingEl.style.display="excalidraw"===this.plugin.settings.embedType?"none":"",new obsidian_module.Setting(t).setName(t$d("EMBED_WIKILINK_NAME")).setDesc(fragWithHTML(t$d("EMBED_WIKILINK_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.embedWikiLink).onChange((async e=>{this.plugin.settings.embedWikiLink=e,this.applySettingsUpdate()})))),t=m.createEl("details"),t.createEl("summary",{text:t$d("EMBED_CANVAS"),cls:"excalidraw-setting-h3"}),new obsidian_module.Setting(t).setName(t$d("EMBED_CANVAS_NAME")).setDesc(fragWithHTML(t$d("EMBED_CANVAS_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.canvasImmersiveEmbed).onChange((async e=>{this.plugin.settings.canvasImmersiveEmbed=e,this.applySettingsUpdate()})))),t=m.createEl("details"),t.createEl("summary",{text:t$d("EMBED_CACHING"),cls:"excalidraw-setting-h3"}),new obsidian_module.Setting(t).setName(t$d("EMBED_IMAGE_CACHE_NAME")).setDesc(fragWithHTML(t$d("EMBED_IMAGE_CACHE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.allowImageCache).onChange((e=>{this.plugin.settings.allowImageCache=e,this.applySettingsUpdate()})))).addButton((e=>e.setButtonText(t$d("EMBED_IMAGE_CACHE_CLEAR")).onClick((()=>{imageCache.clearImageCache()})))).addButton((e=>e.setButtonText(t$d("BACKUP_CACHE_CLEAR")).onClick((()=>{new ConfirmationPrompt(this.plugin,t$d("BACKUP_CACHE_CLEAR_CONFIRMATION")).waitForClose.then((e=>{e&&imageCache.clearBackupCache()}))})))),new obsidian_module.Setting(t).setName(t$d("EMBED_REUSE_EXPORTED_IMAGE_NAME")).setDesc(fragWithHTML(t$d("EMBED_REUSE_EXPORTED_IMAGE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.displayExportedImageIfAvailable).onChange((async e=>{this.plugin.settings.displayExportedImageIfAvailable=e,this.applySettingsUpdate()})))),t=m.createEl("details");const b=t;let y,L;t.createEl("summary",{text:t$d("EXPORT_SUBHEAD"),cls:"excalidraw-setting-h3"}),addIframe(t,"wTtaXmRJ7wg",171),t=b.createEl("details"),t.createEl("summary",{text:t$d("EMBED_SIZING"),cls:"excalidraw-setting-h4"}),new obsidian_module.Setting(t).setName(t$d("EMBED_WIDTH_NAME")).setDesc(fragWithHTML(t$d("EMBED_WIDTH_DESC"))).addText((e=>e.setPlaceholder("e.g.: 400").setValue(this.plugin.settings.width).onChange((async e=>{this.plugin.settings.width=e,this.applySettingsUpdate(),this.requestEmbedUpdate=!0})))),new obsidian_module.Setting(t).setName(t$d("EMBED_HEIGHT_NAME")).setDesc(fragWithHTML(t$d("EMBED_HEIGHT_DESC"))).addText((e=>e.setPlaceholder("e.g.: 400").setValue(this.plugin.settings.height).onChange((async e=>{this.plugin.settings.height=e,this.applySettingsUpdate(),this.requestEmbedUpdate=!0})))),new obsidian_module.Setting(t).setName(t$d("EXPORT_PNG_SCALE_NAME")).setDesc(fragWithHTML(t$d("EXPORT_PNG_SCALE_DESC"))).addSlider((e=>e.setLimits(1,5,.5).setValue(this.plugin.settings.pngExportScale).onChange((async e=>{y.innerText=` ${e.toString()}`,this.plugin.settings.pngExportScale=e,this.applySettingsUpdate()})))).settingEl.createDiv("",(e=>{y=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.pngExportScale.toString()}`})),new obsidian_module.Setting(t).setName(t$d("EXPORT_PADDING_NAME")).setDesc(fragWithHTML(t$d("EXPORT_PADDING_DESC"))).addSlider((e=>e.setLimits(0,50,5).setValue(this.plugin.settings.exportPaddingSVG).onChange((async e=>{L.innerText=` ${e.toString()}`,this.plugin.settings.exportPaddingSVG=e,this.applySettingsUpdate()})))).settingEl.createDiv("",(e=>{L=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.exportPaddingSVG.toString()}`})),t=b.createEl("details"),t.createEl("summary",{text:t$d("EMBED_THEME_BACKGROUND"),cls:"excalidraw-setting-h4"}),new obsidian_module.Setting(t).setName(t$d("EXPORT_BACKGROUND_NAME")).setDesc(fragWithHTML(t$d("EXPORT_BACKGROUND_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.exportWithBackground).onChange((async e=>{this.plugin.settings.exportWithBackground=e,this.applySettingsUpdate(),this.requestEmbedUpdate=!0})))),new obsidian_module.Setting(t).setName(t$d("EXPORT_THEME_NAME")).setDesc(fragWithHTML(t$d("EXPORT_THEME_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.exportWithTheme).onChange((async e=>{this.plugin.settings.exportWithTheme=e,this.applySettingsUpdate(),this.requestEmbedUpdate=!0})))),new obsidian_module.Setting(t).setName(t$d("PREVIEW_MATCH_OBSIDIAN_NAME")).setDesc(fragWithHTML(t$d("PREVIEW_MATCH_OBSIDIAN_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.previewMatchObsidianTheme).onChange((async e=>{this.plugin.settings.previewMatchObsidianTheme=e,this.applySettingsUpdate()})))),t=b.createEl("details"),t.createEl("summary",{text:t$d("EXPORT_HEAD"),cls:"excalidraw-setting-h4"}),new obsidian_module.Setting(t).setName(t$d("EXPORT_SYNC_NAME")).setDesc(fragWithHTML(t$d("EXPORT_SYNC_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.keepInSync).onChange((async e=>{this.plugin.settings.keepInSync=e,this.applySettingsUpdate()}))));const v=e=>{let t=0;for(t=0;t<f.selectEl.options.length;t++)f.selectEl.item(t).label===e&&f.selectEl.item(t).remove()};new obsidian_module.Setting(t).setName(t$d("EXPORT_SVG_NAME")).setDesc(fragWithHTML(t$d("EXPORT_SVG_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.autoexportSVG).onChange((async e=>{e?f.addOption("SVG","SVG"):("SVG"===this.plugin.settings.embedType&&(f.setValue("excalidraw"),this.plugin.settings.embedType="excalidraw"),v("SVG")),this.plugin.settings.autoexportSVG=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("EXPORT_PNG_NAME")).setDesc(fragWithHTML(t$d("EXPORT_PNG_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.autoexportPNG).onChange((async e=>{e?f.addOption("PNG","PNG"):("PNG"===this.plugin.settings.embedType&&(f.setValue("excalidraw"),this.plugin.settings.embedType="excalidraw"),v("PNG")),this.plugin.settings.autoexportPNG=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("EXPORT_BOTH_DARK_AND_LIGHT_NAME")).setDesc(fragWithHTML(t$d("EXPORT_BOTH_DARK_AND_LIGHT_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.autoExportLightAndDark).onChange((async e=>{this.plugin.settings.autoExportLightAndDark=e,this.applySettingsUpdate()})))),n.createEl("hr",{cls:"excalidraw-setting-hr"}),n.createDiv({text:t$d("EMBED_TOEXCALIDRAW_DESC"),cls:"setting-item-description"}),t=this.containerEl.createEl("details");const w=t;t.createEl("summary",{text:t$d("EMBED_TOEXCALIDRAW_HEAD"),cls:"excalidraw-setting-h1"}),t=w.createEl("details"),t.createEl("summary",{text:t$d("PDF_TO_IMAGE"),cls:"excalidraw-setting-h3"}),addIframe(t,"nB4cOfn0xAs"),new obsidian_module.Setting(t).setName(t$d("PDF_TO_IMAGE_SCALE_NAME")).setDesc(fragWithHTML(t$d("PDF_TO_IMAGE_SCALE_DESC"))).addDropdown((e=>e.addOption("0.5","0.5").addOption("1","1").addOption("2","2").addOption("3","3").addOption("4","4").addOption("5","5").addOption("6","6").setValue(`${this.plugin.settings.pdfScale}`).onChange((e=>{this.plugin.settings.pdfScale=parseFloat(e),this.applySettingsUpdate()})))),t=w.createEl("details"),t.createEl("summary",{text:t$d("MD_EMBED_CUSTOMDATA_HEAD_NAME"),cls:"excalidraw-setting-h3"}),t.createEl("span",{text:t$d("MD_EMBED_CUSTOMDATA_HEAD_DESC")}),new EmbeddalbeMDFileCustomDataSettingsComponent(t,this.plugin.settings.embeddableMarkdownDefaults,this.applySettingsUpdate).render(),t=w.createEl("details"),t.createEl("summary",{text:t$d("MD_HEAD"),cls:"excalidraw-setting-h3"}),new obsidian_module.Setting(t).setName(t$d("MD_TRANSCLUDE_WIDTH_NAME")).setDesc(fragWithHTML(t$d("MD_TRANSCLUDE_WIDTH_DESC"))).addText((e=>e.setPlaceholder("Enter a number e.g. 500").setValue(this.plugin.settings.mdSVGwidth.toString()).onChange((async t=>{const n=parseInt(t);if(isNaN(n)&&""!==t)e.setValue(this.plugin.settings.mdSVGwidth.toString());else{if(this.requestEmbedUpdate=!0,""===t)return this.plugin.settings.mdSVGwidth=500,void this.applySettingsUpdate(!0);this.plugin.settings.mdSVGwidth=n,this.requestReloadDrawings=!0,e.setValue(this.plugin.settings.mdSVGwidth.toString()),this.applySettingsUpdate(!0)}})))),new obsidian_module.Setting(t).setName(t$d("MD_TRANSCLUDE_HEIGHT_NAME")).setDesc(fragWithHTML(t$d("MD_TRANSCLUDE_HEIGHT_DESC"))).addText((e=>e.setPlaceholder("Enter a number e.g. 800").setValue(this.plugin.settings.mdSVGmaxHeight.toString()).onChange((async t=>{const n=parseInt(t);if(isNaN(n)&&""!==t)e.setValue(this.plugin.settings.mdSVGmaxHeight.toString());else{if(this.requestEmbedUpdate=!0,""===t)return this.plugin.settings.mdSVGmaxHeight=800,void this.applySettingsUpdate(!0);this.plugin.settings.mdSVGmaxHeight=n,this.requestReloadDrawings=!0,e.setValue(this.plugin.settings.mdSVGmaxHeight.toString()),this.applySettingsUpdate(!0)}})))),new obsidian_module.Setting(t).setName(t$d("MD_DEFAULT_FONT_NAME")).setDesc(fragWithHTML(t$d("MD_DEFAULT_FONT_DESC"))).addDropdown((async e=>{e.addOption("Virgil","Virgil"),e.addOption("Cascadia","Cascadia"),e.addOption("Assistant","Assistant"),this.app.vault.getFiles().filter((e=>["ttf","woff","woff2"].contains(e.extension))).forEach((t=>{e.addOption(t.path,t.name)})),e.setValue(this.plugin.settings.mdFont).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.mdFont=e,this.applySettingsUpdate(!0)}))})),new obsidian_module.Setting(t).setName(t$d("MD_DEFAULT_COLOR_NAME")).setDesc(fragWithHTML(t$d("MD_DEFAULT_COLOR_DESC"))).addText((e=>e.setPlaceholder("CSS Color-name|RGB-HEX").setValue(this.plugin.settings.mdFontColor).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.mdFontColor=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("MD_DEFAULT_BORDER_COLOR_NAME")).setDesc(fragWithHTML(t$d("MD_DEFAULT_BORDER_COLOR_DESC"))).addText((e=>e.setPlaceholder("CSS Color-name|RGB-HEX").setValue(this.plugin.settings.mdBorderColor).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.mdBorderColor=e,this.applySettingsUpdate(!0)})))),new obsidian_module.Setting(t).setName(t$d("MD_CSS_NAME")).setDesc(fragWithHTML(t$d("MD_CSS_DESC"))).addText((e=>e.setPlaceholder("filename of css file in vault").setValue(this.plugin.settings.mdCSS).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.mdCSS=e,this.applySettingsUpdate(!0)})))),n.createEl("hr",{cls:"excalidraw-setting-hr"}),n.createDiv({text:t$d("NONSTANDARD_DESC"),cls:"setting-item-description"}),t=this.containerEl.createEl("details");const E=t;let _;t.createEl("summary",{text:t$d("NONSTANDARD_HEAD"),cls:"excalidraw-setting-h1"}),t=E.createEl("details"),t.createEl("summary",{text:t$d("RENDER_TWEAK_HEAD"),cls:"excalidraw-setting-h3"}),new obsidian_module.Setting(t).setName(t$d("MAX_IMAGE_ZOOM_IN_NAME")).setDesc(fragWithHTML(t$d("MAX_IMAGE_ZOOM_IN_DESC"))).addSlider((e=>e.setLimits(1,10,.5).setValue(this.plugin.settings.areaZoomLimit).onChange((async e=>{_.innerText=` ${e.toString()}`,this.plugin.settings.areaZoomLimit=e,this.applySettingsUpdate(),this.plugin.excalidrawConfig.updateValues()})))).settingEl.createDiv("",(e=>{_=e,e.style.minWidth="2.3em",e.style.textAlign="right",e.innerText=` ${this.plugin.settings.areaZoomLimit.toString()}`})),t=E.createEl("details"),t.createEl("summary",{text:t$d("CUSTOM_PEN_HEAD"),cls:"excalidraw-setting-h3"}),addIframe(t,"OjNhjaH2KjI",69),new obsidian_module.Setting(t).setName(t$d("CUSTOM_PEN_NAME")).setDesc(t$d("CUSTOM_PEN_DESC")).addDropdown((e=>e.addOption("0","0").addOption("1","1").addOption("2","2").addOption("3","3").addOption("4","4").addOption("5","5").addOption("6","6").addOption("7","7").addOption("8","8").addOption("9","9").addOption("10","10").setValue(this.plugin.settings.numberOfCustomPens.toString()).onChange((e=>{this.plugin.settings.numberOfCustomPens=parseInt(e),this.requestUpdatePinnedPens=!0,this.applySettingsUpdate(!1)})))),t=E.createEl("details"),t.createEl("summary",{text:t$d("CUSTOM_FONT_HEAD"),cls:"excalidraw-setting-h3"}),addIframe(t,"eKFmrSQhFA4"),new obsidian_module.Setting(t).setName(t$d("ENABLE_FOURTH_FONT_NAME")).setDesc(fragWithHTML(t$d("ENABLE_FOURTH_FONT_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.experimentalEnableFourthFont).onChange((async e=>{this.requestReloadDrawings=!0,this.plugin.settings.experimentalEnableFourthFont=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FOURTH_FONT_NAME")).setDesc(fragWithHTML(t$d("FOURTH_FONT_DESC"))).addDropdown((async e=>{e.addOption("Virgil","Virgil"),this.app.vault.getFiles().filter((e=>["ttf","woff","woff2","otf"].contains(e.extension))).forEach((t=>{e.addOption(t.path,t.name)})),e.setValue(this.plugin.settings.experimantalFourthFont).onChange((e=>{this.requestReloadDrawings=!0,this.plugin.settings.experimantalFourthFont=e,this.applySettingsUpdate(!0),this.plugin.initializeFonts()}))})),n.createEl("hr",{cls:"excalidraw-setting-hr"}),n.createDiv({text:t$d("EXPERIMENTAL_DESC"),cls:"setting-item-description"}),t=n.createEl("details");const M=t;let x,H,S;t.createEl("summary",{text:t$d("EXPERIMENTAL_HEAD"),cls:"excalidraw-setting-h1"}),addIframe(t,"r08wk-58DPk"),new obsidian_module.Setting(t).setName(t$d("LATEX_DEFAULT_NAME")).setDesc(fragWithHTML(t$d("LATEX_DEFAULT_DESC"))).addText((e=>e.setValue(this.plugin.settings.latexBoilerplate).onChange((e=>{this.plugin.settings.latexBoilerplate=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FILETYPE_NAME")).setDesc(fragWithHTML(t$d("FILETYPE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.experimentalFileType).onChange((async e=>{this.plugin.settings.experimentalFileType=e,this.plugin.experimentalFileTypeDisplayToggle(e),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("FILETAG_NAME")).setDesc(fragWithHTML(t$d("FILETAG_DESC"))).addText((e=>e.setPlaceholder(t$d("INSERT_EMOJI")).setValue(this.plugin.settings.experimentalFileTag).onChange((async e=>{this.plugin.settings.experimentalFileTag=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("LIVEPREVIEW_NAME")).setDesc(fragWithHTML(t$d("LIVEPREVIEW_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.experimentalLivePreview).onChange((async e=>{this.plugin.settings.experimentalLivePreview=e,this.applySettingsUpdate()})))),t=M.createEl("details"),t.createEl("summary",{text:t$d("TASKBONE_HEAD"),cls:"excalidraw-setting-h3"}),t.createDiv({text:t$d("TASKBONE_DESC"),cls:"setting-item-description"}),addIframe(t,"7gu4ETx7zro"),new obsidian_module.Setting(t).setName(t$d("TASKBONE_ENABLE_NAME")).setDesc(fragWithHTML(t$d("TASKBONE_ENABLE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.taskboneEnabled).onChange((async e=>{if(x.setDisabled(!e),this.plugin.settings.taskboneEnabled=e,""===this.plugin.settings.taskboneAPIkey){const e=await this.plugin.taskbone.initialize(!1);e&&x.setValue(e)}this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("TASKBONE_APIKEY_NAME")).setDesc(fragWithHTML(t$d("TASKBONE_APIKEY_DESC"))).addText((e=>{x=e,x.setValue(this.plugin.settings.taskboneAPIkey).onChange((async e=>{this.plugin.settings.taskboneAPIkey=e,this.applySettingsUpdate()})).setDisabled(!this.plugin.settings.taskboneEnabled)})),n.createEl("hr",{cls:"excalidraw-setting-hr"}),n.createDiv({cls:"setting-item-description"},(e=>{e.innerHTML=t$d("EA_DESC")})),t=n.createEl("details"),t.createEl("summary",{text:t$d("EA_HEAD"),cls:"excalidraw-setting-h1"}),new obsidian_module.Setting(t).setName(t$d("FIELD_SUGGESTER_NAME")).setDesc(fragWithHTML(t$d("FIELD_SUGGESTER_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.fieldSuggester).onChange((async e=>{this.plugin.settings.fieldSuggester=e,this.applySettingsUpdate()}))));const A=()=>{const e=obsidian_module.normalizePath(this.plugin.settings.startupScriptPath.endsWith(".md")?this.plugin.settings.startupScriptPath:this.plugin.settings.startupScriptPath+".md");return Boolean(this.app.vault.getAbstractFileByPath(e))};new obsidian_module.Setting(t).setName(t$d("STARTUP_SCRIPT_NAME")).setDesc(fragWithHTML(t$d("STARTUP_SCRIPT_DESC"))).addText((e=>{H=e,e.setValue(this.plugin.settings.startupScriptPath).onChange((e=>{this.plugin.settings.startupScriptPath=e,S.setButtonText(A()?t$d("STARTUP_SCRIPT_BUTTON_OPEN"):t$d("STARTUP_SCRIPT_BUTTON_CREATE")),this.applySettingsUpdate()}))})).addButton((e=>{S=e,S.setButtonText(A()?t$d("STARTUP_SCRIPT_BUTTON_OPEN"):t$d("STARTUP_SCRIPT_BUTTON_CREATE")).onClick((async()=>{""===this.plugin.settings.startupScriptPath&&(this.plugin.settings.startupScriptPath=obsidian_module.normalizePath(obsidian_module.normalizePath(this.plugin.settings.folder)+"/ExcalidrawStartup"),H.setValue(this.plugin.settings.startupScriptPath),this.applySettingsUpdate());const e=obsidian_module.normalizePath(this.plugin.settings.startupScriptPath.endsWith(".md")?this.plugin.settings.startupScriptPath:this.plugin.settings.startupScriptPath+".md");let t=this.app.vault.getAbstractFileByPath(e);t||(t=await this.app.vault.create(e,atob("LyoKI2V4Y2x1ZGUKYGBganMqLwovKioKICogSWYgc2V0LCB0aGlzIGNhbGxiYWNrIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGNsb3NlcyBhbiBFeGNhbGlkcmF3IHZpZXcuCiAqICAgb25WaWV3VW5sb2FkSG9vazogKHZpZXc6IEV4Y2FsaWRyYXdWaWV3KSA9PiB2b2lkID0gbnVsbDsKICovCi8vZWEub25WaWV3VW5sb2FkSG9vayA9ICh2aWV3KSA9PiB7fTsKCi8qKgogKiBJZiBzZXQsIHRoaXMgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkLCB3aGVuIHRoZSB1c2VyIGNoYW5nZXMgdGhlIHZpZXcgbW9kZS4KICogWW91IGNhbiB1c2UgdGhpcyBjYWxsYmFjayBpbiBjYXNlIHlvdSB3YW50IHRvIGRvIHNvbWV0aGluZyBhZGRpdGlvbmFsIHdoZW4gdGhlIHVzZXIgc3dpdGNoZXMgdG8gdmlldyBtb2RlIGFuZCBiYWNrLgogKiAgIG9uVmlld01vZGVDaGFuZ2VIb29rOiAoaXNWaWV3TW9kZUVuYWJsZWQ6Ym9vbGVhbiwgdmlldzogRXhjYWxpZHJhd1ZpZXcsIGVhOiBFeGNhbGlkcmF3QXV0b21hdGUpID0+IHZvaWQgPSBudWxsOwogKi8KLy9lYS5vblZpZXdNb2RlQ2hhbmdlSG9vayA9IChpc1ZpZXdNb2RlRW5hYmxlZCwgdmlldywgZWEpID0+IHt9OwoKLyoqCiAqIElmIHNldCwgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQsIHdoZW4gdGhlIHVzZXIgaG92ZXJzIGEgbGluayBpbiB0aGUgc2NlbmUuCiAqIFlvdSBjYW4gdXNlIHRoaXMgY2FsbGJhY2sgaW4gY2FzZSB5b3Ugd2FudCB0byBkbyBzb21ldGhpbmcgYWRkaXRpb25hbCB3aGVuIHRoZSBvbkxpbmtIb3ZlciBldmVudCBvY2N1cnMuCiAqIFRoaXMgY2FsbGJhY2sgbXVzdCByZXR1cm4gYSBib29sZWFuIHZhbHVlLgogKiBJbiBjYXNlIHlvdSB3YW50IHRvIHByZXZlbnQgdGhlIGV4Y2FsaWRyYXcgb25MaW5rSG92ZXIgYWN0aW9uIHlvdSBtdXN0IHJldHVybiBmYWxzZSwgaXQgd2lsbCBzdG9wIHRoZSBuYXRpdmUgZXhjYWxpZHJhdyBvbkxpbmtIb3ZlciBtYW5hZ2VtZW50IGZsb3cuCiAqICAgb25MaW5rSG92ZXJIb29rOiAoCiAqICAgICBlbGVtZW50OiBOb25EZWxldGVkRXhjYWxpZHJhd0VsZW1lbnQsCiAqICAgICBsaW5rVGV4dDogc3RyaW5nLAogKiAgICAgdmlldzogRXhjYWxpZHJhd1ZpZXcsCiAqICAgICBlYTogRXhjYWxpZHJhd0F1dG9tYXRlCiAqICAgKSA9PiBib29sZWFuID0gbnVsbDsKICovCi8vZWEub25MaW5rSG92ZXJIb29rID0gKGVsZW1lbnQsIGxpbmtUZXh0LCB2aWV3LCBlYSkgPT4ge307CiAgIAovKioKICogSWYgc2V0LCB0aGlzIGNhbGxiYWNrIGlzIHRyaWdnZXJlZCwgd2hlbiB0aGUgdXNlciBjbGlja3MgYSBsaW5rIGluIHRoZSBzY2VuZS4KICogWW91IGNhbiB1c2UgdGhpcyBjYWxsYmFjayBpbiBjYXNlIHlvdSB3YW50IHRvIGRvIHNvbWV0aGluZyBhZGRpdGlvbmFsIHdoZW4gdGhlIG9uTGlua0NsaWNrIGV2ZW50IG9jY3Vycy4KICogVGhpcyBjYWxsYmFjayBtdXN0IHJldHVybiBhIGJvb2xlYW4gdmFsdWUuCiAqIEluIGNhc2UgeW91IHdhbnQgdG8gcHJldmVudCB0aGUgZXhjYWxpZHJhdyBvbkxpbmtDbGljayBhY3Rpb24geW91IG11c3QgcmV0dXJuIGZhbHNlLCBpdCB3aWxsIHN0b3AgdGhlIG5hdGl2ZSBleGNhbGlkcmF3IG9uTGlua0NsaWNrIG1hbmFnZW1lbnQgZmxvdy4KICogICBvbkxpbmtDbGlja0hvb2s6KAogKiAgICAgZWxlbWVudDogRXhjYWxpZHJhd0VsZW1lbnQsCiAqICAgICBsaW5rVGV4dDogc3RyaW5nLAogKiAgICAgZXZlbnQ6IE1vdXNlRXZlbnQsCiAqICAgICB2aWV3OiBFeGNhbGlkcmF3VmlldywKICogICAgIGVhOiBFeGNhbGlkcmF3QXV0b21hdGUKICogICApID0+IGJvb2xlYW4gPSBudWxsOwogKi8KLy9lYS5vbkxpbmtDbGlja0hvb2sgPSAoZWxlbWVudCxsaW5rVGV4dCxldmVudCwgdmlldywgZWEpID0+IHt9OwogICAKLyoqCiAqIElmIHNldCwgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQsIHdoZW4gRXhjYWxpZHJhdyByZWNlaXZlcyBhbiBvbkRyb3AgZXZlbnQuIAogKiBZb3UgY2FuIHVzZSB0aGlzIGNhbGxiYWNrIGluIGNhc2UgeW91IHdhbnQgdG8gZG8gc29tZXRoaW5nIGFkZGl0aW9uYWwgd2hlbiB0aGUgb25Ecm9wIGV2ZW50IG9jY3Vycy4KICogVGhpcyBjYWxsYmFjayBtdXN0IHJldHVybiBhIGJvb2xlYW4gdmFsdWUuCiAqIEluIGNhc2UgeW91IHdhbnQgdG8gcHJldmVudCB0aGUgZXhjYWxpZHJhdyBvbkRyb3AgYWN0aW9uIHlvdSBtdXN0IHJldHVybiBmYWxzZSwgaXQgd2lsbCBzdG9wIHRoZSBuYXRpdmUgZXhjYWxpZHJhdyBvbkRyb3AgbWFuYWdlbWVudCBmbG93LgogKiAgIG9uRHJvcEhvb2s6IChkYXRhOiB7CiAqICAgICBlYTogRXhjYWxpZHJhd0F1dG9tYXRlOwogKiAgICAgZXZlbnQ6IFJlYWN0LkRyYWdFdmVudDxIVE1MRGl2RWxlbWVudD47CiAqICAgICBkcmFnZ2FibGU6IGFueTsgLy9PYnNpZGlhbiBkcmFnZ2FibGUgb2JqZWN0CiAqICAgICB0eXBlOiAiZmlsZSIgfCAidGV4dCIgfCAidW5rbm93biI7CiAqICAgICBwYXlsb2FkOiB7CiAqICAgICAgIGZpbGVzOiBURmlsZVtdOyAvL1RGaWxlW10gYXJyYXkgb2YgZHJvcHBlZCBmaWxlcwogKiAgICAgICB0ZXh0OiBzdHJpbmc7IC8vc3RyaW5nCiAqICAgICB9OwogKiAgICAgZXhjYWxpZHJhd0ZpbGU6IFRGaWxlOyAvL3RoZSBmaWxlIHJlY2VpdmluZyB0aGUgZHJvcCBldmVudAogKiAgICAgdmlldzogRXhjYWxpZHJhd1ZpZXc7IC8vdGhlIGV4Y2FsaWRyYXcgdmlldyByZWNlaXZpbmcgdGhlIGRyb3AKICogICAgIHBvaW50ZXJQb3NpdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9OyAvL3RoZSBwb2ludGVyIHBvc2l0aW9uIG9uIGNhbnZhcyBhdCB0aGUgdGltZSBvZiBkcm9wCiAqICAgfSkgPT4gYm9vbGVhbiA9IG51bGw7CiAqLwovL2VhLm9uRHJvcEhvb2sgPSAoZGF0YSkgPT4ge307CiAKLyoqCiAqIElmIHNldCwgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQsIHdoZW4gRXhjYWxpZHJhdyByZWNlaXZlcyBhbiBvblBhc3RlIGV2ZW50LgogKiBZb3UgY2FuIHVzZSB0aGlzIGNhbGxiYWNrIGluIGNhc2UgeW91IHdhbnQgdG8gZG8gc29tZXRoaW5nIGFkZGl0aW9uYWwgd2hlbiB0aGUKICogb25QYXN0ZSBldmVudCBvY2N1cnMuCiAqIFRoaXMgY2FsbGJhY2sgbXVzdCByZXR1cm4gYSBib29sZWFuIHZhbHVlLgogKiBJbiBjYXNlIHlvdSB3YW50IHRvIHByZXZlbnQgdGhlIGV4Y2FsaWRyYXcgb25QYXN0ZSBhY3Rpb24geW91IG11c3QgcmV0dXJuIGZhbHNlLAogKiBpdCB3aWxsIHN0b3AgdGhlIG5hdGl2ZSBleGNhbGlkcmF3IG9uUGFzdGUgbWFuYWdlbWVudCBmbG93LgogKiAgIG9uUGFzdGVIb29rOiAoZGF0YTogewogKiAgICAgZWE6IEV4Y2FsaWRyYXdBdXRvbWF0ZTsKICogICAgIHBheWxvYWQ6IENsaXBib2FyZERhdGE7CiAqICAgICBldmVudDogQ2xpcGJvYXJkRXZlbnQ7CiAqICAgICBleGNhbGlkcmF3RmlsZTogVEZpbGU7IC8vdGhlIGZpbGUgcmVjZWl2aW5nIHRoZSBwYXN0ZSBldmVudAogKiAgICAgdmlldzogRXhjYWxpZHJhd1ZpZXc7IC8vdGhlIGV4Y2FsaWRyYXcgdmlldyByZWNlaXZpbmcgdGhlIHBhc3RlCiAqICAgICBwb2ludGVyUG9zaXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfTsgLy90aGUgcG9pbnRlciBwb3NpdGlvbiBvbiBjYW52YXMKICogICB9KSA9PiBib29sZWFuID0gbnVsbDsKICovCi8vZWEub25QYXN0ZUhvb2sgPSAoZGF0YSkgPT4ge307CgovKioKICogaWYgc2V0LCB0aGlzIGNhbGxiYWNrIGlzIHRyaWdnZXJlZCwgd2hlbiBhbiBFeGNhbGlkcmF3IGZpbGUgaXMgb3BlbmVkCiAqIFlvdSBjYW4gdXNlIHRoaXMgY2FsbGJhY2sgaW4gY2FzZSB5b3Ugd2FudCB0byBkbyBzb21ldGhpbmcgYWRkaXRpb25hbCB3aGVuIHRoZSBmaWxlIGlzIG9wZW5lZC4KICogVGhpcyB3aWxsIHJ1biBiZWZvcmUgdGhlIGZpbGUgbGV2ZWwgc2NyaXB0IGRlZmluZWQgaW4gdGhlIGBleGNhbGlkcmF3LW9ubG9hZC1zY3JpcHRgIGZyb250bWF0dGVyLgogKiAgIG9uRmlsZU9wZW5Ib29rOiAoZGF0YTogewogKiAgICAgZWE6IEV4Y2FsaWRyYXdBdXRvbWF0ZTsKICogICAgIGV4Y2FsaWRyYXdGaWxlOiBURmlsZTsgLy90aGUgZmlsZSBiZWluZyBsb2FkZWQKICogICAgIHZpZXc6IEV4Y2FsaWRyYXdWaWV3OwogKiAgIH0pID0+IFByb21pc2U8dm9pZD47CiAqLwovL2VhLm9uRmlsZU9wZW5Ib29rID0gKGRhdGEpID0+IHt9OwoKLyoqCiAqIGlmIHNldCwgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQsIHdoZW4gYW4gRXhjYWxpZHJhdyBmaWxlIGlzIGNyZWF0ZWQKICogc2VlIGFsc286IGh0dHBzOi8vZ2l0aHViLmNvbS96c3ZpY3ppYW4vb2JzaWRpYW4tZXhjYWxpZHJhdy1wbHVnaW4vaXNzdWVzLzExMjQKICogICBvbkZpbGVDcmVhdGVIb29rOiAoZGF0YTogewogKiAgICAgZWE6IEV4Y2FsaWRyYXdBdXRvbWF0ZTsKICogICAgIGV4Y2FsaWRyYXdGaWxlOiBURmlsZTsgLy90aGUgZmlsZSBiZWluZyBjcmVhdGVkCiAqICAgICB2aWV3OiBFeGNhbGlkcmF3VmlldzsKICogICB9KSA9PiBQcm9taXNlPHZvaWQ+OwogKi8KLy9lYS5vbkZpbGVDcmVhdGVIb29rID0gKGRhdGEpID0+IHt9OyAKCi8qKgogKiBJZiBzZXQsIHRoaXMgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIHdoZW5ldmVyIHRoZSBhY3RpdmUgY2FudmFzIGNvbG9yIGNoYW5nZXMKICogICBvbkNhbnZhc0NvbG9yQ2hhbmdlSG9vazogKAogKiAgICAgZWE6IEV4Y2FsaWRyYXdBdXRvbWF0ZSwKICogICAgIHZpZXc6IEV4Y2FsaWRyYXdWaWV3LCAvL3RoZSBleGNhbGlkcmF3IHZpZXcgCiAqICAgICBjb2xvcjogc3RyaW5nLAogKiAgICkgPT4gdm9pZCA9IG51bGw7CiAqLwovL2VhLm9uQ2FudmFzQ29sb3JDaGFuZ2VIb29rID0gKGVhLCB2aWV3LCBjb2xvcikgPT4ge307CgovKioKKiBJZiBzZXQsIHRoaXMgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIHdoZW5ldmVyIGEgZHJhd2luZyBpcyBleHBvcnRlZCB0byBTVkcuCiogVGhlIHN0cmluZyByZXR1cm5lZCB3aWxsIHJlcGxhY2UgdGhlIGxpbmsgaW4gdGhlIGV4cG9ydGVkIFNWRy4KKiBUaGUgaG9vayBpcyBvbmx5IGV4ZWN1dGVkIGlmIHRoZSBsaW5rIGlzIHRvIGEgZmlsZSBpbnRlcm5hbCB0byBPYnNpZGlhbgoqIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL3pzdmljemlhbi9vYnNpZGlhbi1leGNhbGlkcmF3LXBsdWdpbi9pc3N1ZXMvMTYwNQoqICBvblVwZGF0ZUVsZW1lbnRMaW5rRm9yRXhwb3J0SG9vazogKGRhdGE6IHsKKiAgICBvcmlnaW5hbExpbms6IHN0cmluZywKKiAgICBvYnNpZGlhbkxpbms6IHN0cmluZywKKiAgICBsaW5rZWRGaWxlOiBURmlsZSB8IG51bGwsCiogICAgaG9zdEZpbGU6IFRGaWxlLAoqICB9KSA9PiBzdHJpbmcgPSBudWxsOwoqLwovL2VhLm9uVXBkYXRlRWxlbWVudExpbmtGb3JFeHBvcnRIb29rID0gKGRhdGEpID0+IHsKLy8gIGNvbnN0IGRlY29kZWRPYnNpZGlhblVSSSA9IGRlY29kZVVSSUNvbXBvbmVudChkYXRhLm9ic2lkaWFuTGluayk7Ci8vfTs="))),S.setButtonText(t$d("STARTUP_SCRIPT_BUTTON_OPEN")),this.app.workspace.openLinkText(t.path,"",!0),this.hide()}))})),n.createEl("hr",{cls:"excalidraw-setting-hr"}),n.createDiv({text:t$d("COMPATIBILITY_DESC"),cls:"setting-item-description"}),t=this.containerEl.createEl("details"),t.createEl("summary",{text:t$d("COMPATIBILITY_HEAD"),cls:"excalidraw-setting-h1"}),new obsidian_module.Setting(t).setName(t$d("SLIDING_PANES_NAME")).setDesc(fragWithHTML(t$d("SLIDING_PANES_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.slidingPanesSupport).onChange((e=>{this.plugin.settings.slidingPanesSupport=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("COMPATIBILITY_MODE_NAME")).setDesc(fragWithHTML(t$d("COMPATIBILITY_MODE_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.compatibilityMode).onChange((async e=>{this.plugin.settings.compatibilityMode=e,a.innerHTML=o(),this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("EXPORT_EXCALIDRAW_NAME")).setDesc(fragWithHTML(t$d("EXPORT_EXCALIDRAW_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.autoexportExcalidraw).onChange((async e=>{this.plugin.settings.autoexportExcalidraw=e,this.applySettingsUpdate()})))),new obsidian_module.Setting(t).setName(t$d("SYNC_EXCALIDRAW_NAME")).setDesc(fragWithHTML(t$d("SYNC_EXCALIDRAW_DESC"))).addToggle((e=>e.setValue(this.plugin.settings.syncExcalidraw).onChange((async e=>{this.plugin.settings.syncExcalidraw=e,this.applySettingsUpdate()}))));const C=null===(e=this.plugin.scriptEngine.getListofScripts())||void 0===e?void 0:e.map((e=>this.plugin.scriptEngine.getScriptName(e)));if(Object.keys(this.plugin.settings.scriptEngineSettings).length>0&&C){const e=(e,t)=>{const n=this.plugin.settings.scriptEngineSettings[e][t];return"object"==typeof n?n.height:null},r=(e,t)=>{const n=this.plugin.settings.scriptEngineSettings[e][t];return"object"==typeof n?n.value:n},i=(e,t,n)=>{"object"==typeof this.plugin.settings.scriptEngineSettings[e][t]?this.plugin.settings.scriptEngineSettings[e][t].value=n:this.plugin.settings.scriptEngineSettings[e][t]=n},o=(e,n,o)=>{new obsidian_module.Setting(t).setName(n).setDesc(fragWithHTML(null!=o?o:"")).addToggle((t=>t.setValue(r(e,n)).onChange((async t=>{i(e,n,t),this.applySettingsUpdate()}))))},a=(n,o,a,s)=>{s&&"[object Array]"===Object.prototype.toString.call(s)&&s.length>0?new obsidian_module.Setting(t).setName(o).setDesc(fragWithHTML(null!=a?a:"")).addDropdown((e=>{s.forEach((t=>e.addOption(t.toString(),t.toString()))),e.setValue(r(n,o)).onChange((async e=>{i(n,o,e),this.applySettingsUpdate()}))})):e(n,o)?new obsidian_module.Setting(t).setName(o).setDesc(fragWithHTML(null!=a?a:"")).addTextArea((t=>{t.inputEl.style.minHeight=e(n,o),t.inputEl.style.minWidth="400px",t.inputEl.style.width="100%",t.setValue(r(n,o)).onChange((async e=>{i(n,o,e),this.applySettingsUpdate()}))})):new obsidian_module.Setting(t).setName(o).setDesc(fragWithHTML(null!=a?a:"")).addText((e=>e.setValue(r(n,o)).onChange((async e=>{i(n,o,e),this.applySettingsUpdate()}))))},s=(e,n,o)=>{new obsidian_module.Setting(t).setName(n).setDesc(fragWithHTML(null!=o?o:"")).addText((t=>t.setPlaceholder("Enter a number").setValue(r(e,n).toString()).onChange((async o=>{const a=parseFloat(o);isNaN(a)&&""!==o?t.setValue(r(e,n).toString()):(i(e,n,isNaN(a)?0:a),this.applySettingsUpdate())}))))};n.createEl("hr",{cls:"excalidraw-setting-hr"}),n.createDiv({text:t$d("SCRIPT_SETTINGS_DESC"),cls:"setting-item-description"}),t=this.containerEl.createEl("details");const l=t;t.createEl("summary",{text:t$d("SCRIPT_SETTINGS_HEAD"),cls:"excalidraw-setting-h1"}),addIframe(t,"H8Njp7ZXYag",52),Object.keys(this.plugin.settings.scriptEngineSettings).filter((e=>C.contains(e))).forEach((e=>{const n=this.plugin.settings.scriptEngineSettings[e],r=Object.values(n);0===r.length||r.length>0&&0===r.map((e=>e.hidden?0:1)).reduce(((e,t)=>e+t))||(t=l.createEl("details"),t.createEl("summary",{text:e,cls:"excalidraw-setting-h3"}),Object.keys(n).forEach((t=>{var r;const i=n[t];switch(typeof(null!==(r=i.value)&&void 0!==r?r:i)){case"boolean":i.hidden||o(e,t,i.description);break;case"string":i.hidden||a(e,t,i.description,i.valueset);break;case"number":i.hidden||s(e,t,i.description)}})))}))}}}var openDialogAction;!function(e){e[e.openFile=0]="openFile",e[e.insertLinkToDrawing=1]="insertLinkToDrawing"}(openDialogAction||(openDialogAction={}));class OpenFileDialog extends obsidian_module.FuzzySuggestModal{constructor(e,t){super(e),this.app=e,this.action=openDialogAction.openFile,this.plugin=t,this.onNewPane=!1,this.limit=20,this.setInstructions([{command:t$d("TYPE_FILENAME"),purpose:""}]),this.inputEl.onkeyup=e=>{"Enter"==e.key&&this.action==openDialogAction.openFile&&this.containerEl.innerText.includes(EMPTY_MESSAGE)&&(this.plugin.createAndOpenDrawing(`${this.plugin.settings.folder}/${this.inputEl.value}.excalidraw.md`,this.onNewPane?"new-pane":"active-pane"),this.close())}}getItems(){return(this.app.vault.getFiles()||[]).filter((e=>this.plugin.isExcalidrawFile(e)))}getItemText(e){return e.path}onChooseItem(e){switch(this.action){case openDialogAction.openFile:this.plugin.openDrawing(e,this.onNewPane?"new-pane":"active-pane",!0);break;case openDialogAction.insertLinkToDrawing:this.plugin.embedDrawing(e)}}start(e,t){switch(this.action=e,this.onNewPane=t,e){case openDialogAction.openFile:this.emptyStateText=EMPTY_MESSAGE,this.setPlaceholder(t$d("SELECT_FILE_OR_TYPE_NEW"));break;case openDialogAction.insertLinkToDrawing:this.emptyStateText=t$d("NO_MATCH"),this.setPlaceholder(t$d("SELECT_TO_EMBED"))}this.open()}}class InsertLinkDialog extends obsidian_module.FuzzySuggestModal{constructor(e){super(e.app),this.plugin=e,this.app=e.app,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_FILE_TO_LINK")),this.emptyStateText=t$d("NO_MATCH")}getItems(){return this.app.metadataCache.getLinkSuggestions().filter((e=>!e.path.match(REG_LINKINDEX_INVALIDCHARS)))}getItemText(e){return e.path+(e.alias?`|${e.alias}`:"")}onChooseItem(e){let t=e.path;e.file&&(t=this.app.metadataCache.fileToLinktext(e.file,this.drawingPath,!0)),getLink(this.plugin,{embed:!1,path:t,alias:e.alias}),this.addText(getLink(this.plugin,{embed:!1,path:t,alias:e.alias}),t,e.alias)}start(e,t){this.addText=t,this.drawingPath=e,this.open()}}class InsertCommandDialog extends obsidian_module.FuzzySuggestModal{constructor(e){super(e),this.app=e,this.limit=20,this.setInstructions([{command:t$d("SELECT_COMMAND"),purpose:""}]),this.setPlaceholder(t$d("SELECT_COMMAND_PLACEHOLDER")),this.emptyStateText=t$d("NO_MATCHING_COMMAND")}getItems(){return this.app.commands.listCommands()}getItemText(e){return e.name}onChooseItem(e){null==e||e.id,this.addText(`⚙️[${e.name}](cmd://${e.id})`)}start(e){this.addText=e,this.open()}}class InsertImageDialog extends obsidian_module.FuzzySuggestModal{constructor(e){super(e.app),this.plugin=e,this.app=e.app,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE_WITH_OPTION_TO_SCALE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_DRAWING")),this.emptyStateText=t$d("NO_MATCH"),this.inputEl.onkeyup=e=>{"Enter"===e.key&&scaleToFullsizeModifier(e)&&this.chooser.values&&(this.onChooseItem(this.chooser.values[this.chooser.selectedItem].item,new KeyboardEvent("keypress",{shiftKey:!0,metaKey:!(DEVICE.isIOS||DEVICE.isMacOS),ctrlKey:DEVICE.isIOS||DEVICE.isMacOS})),this.close())}}getItems(){return(this.app.vault.getFiles()||[]).filter((e=>(IMAGE_TYPES.contains(e.extension)||this.plugin.isExcalidrawFile(e))&&!e.path.match(REG_LINKINDEX_INVALIDCHARS)))}getItemText(e){return e.path}onChooseItem(e,t){const n=this.plugin.ea.getAPI(this.view);n.canvas.theme=this.view.excalidrawAPI.getAppState().theme;const r=scaleToFullsizeModifier(t);(async()=>{await n.addImage(0,0,e,!r),n.addElementsToView(!0,!0,!0)})()}start(e){this.view=e,this.open()}}class ImportSVGDialog extends obsidian_module.FuzzySuggestModal{constructor(e){super(e.app),this.plugin=e,this.app=e.app,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_DRAWING")),this.emptyStateText=t$d("NO_MATCH")}getItems(){return(this.app.vault.getFiles()||[]).filter((e=>"svg"===e.extension&&!e.path.match(REG_LINKINDEX_INVALIDCHARS)))}getItemText(e){return e.path}async onChooseItem(e,t){if(!e)return;const n=getEA(this.view),r=await app.vault.read(e);r&&""!==r&&(n.importSVG(r),n.addToGroup(n.getElements().map((e=>e.id))),n.addElementsToView(!0,!0,!0,!0))}start(e){this.view=e,this.open()}}class InsertMDDialog extends obsidian_module.FuzzySuggestModal{constructor(e){super(e.app),this.plugin=e,this.app=e.app,this.limit=20,this.setInstructions([{command:t$d("SELECT_FILE"),purpose:""}]),this.setPlaceholder(t$d("SELECT_MD")),this.emptyStateText=t$d("NO_MATCH")}getItems(){return(this.app.vault.getFiles()||[]).filter((e=>"md"===e.extension&&!this.plugin.isExcalidrawFile(e)))}getItemText(e){return e.path}onChooseItem(e){const t=this.plugin.ea;t.reset(),t.setView(this.view),(async()=>{await t.addImage(0,0,e),t.addElementsToView(!0,!1,!0)})()}start(e){this.view=e,this.open()}}function around(e,t){const n=Object.keys(t).map((n=>around1(e,n,t[n])));return 1===n.length?n[0]:function(){n.forEach((e=>e()))}}function around1(e,t,n){const r=e[t],i=e.hasOwnProperty(t);let o=n(r);return r&&Object.setPrototypeOf(o,r),Object.setPrototypeOf(a,o),e[t]=a,s;function a(...n){return o===r&&e[t]===a&&s(),o.apply(this,n)}function s(){e[t]===a&&(i?e[t]=r:delete e[t]),o!==r&&(o=r,Object.setPrototypeOf(a,r||Function))}}function dedupe(e,t,n){return r[e]=e,r;function r(...r){return(t[e]===e?t:n).apply(this,r)}}let plugin,vault,metadataCache;const getDefaultWidth=e=>{const t=parseInt(e.settings.width);return isNaN(t)||0===t||null===t?""!==getDefaultHeight(e)?"":"400":e.settings.width},getDefaultHeight=e=>{const t=parseInt(e.settings.height);return isNaN(t)||0===t||null===t?"":e.settings.height},initializeMarkdownPostProcessor=e=>{plugin=e,vault=e.app.vault,metadataCache=e.app.metadataCache},_getPNG=async({imgAttributes:e,filenameParts:t,theme:n,cacheReady:r,img:i,file:o,exportSettings:a,loader:s})=>{const l=parseInt(e.fwidth),c=l>=2400?5:l>=1800?4:l>=1200?3:l>=600?2:1,T=Object.assign(Object.assign({},t),{isDark:"dark"===n,previewImageType:PreviewImageType.PNG,scale:c});if(r){const e=await imageCache.getImageFromCache(T);if(e&&"string"==typeof e)return i.src=e,i}const Q=t.hasGroupref||t.hasFrameref?void 0:await getQuickImagePreview(plugin,o.path,"png"),d=null!=Q?Q:await createPNG(t.hasGroupref||t.hasFrameref?t.filepath+t.linkpartReference:o.path,c,a,s,n,null,null,[],plugin,0);return d?(i.src=URL.createObjectURL(d),r&&imageCache.addImageToCache(T,i.src,d),i):null},setStyle=({element:e,imgAttributes:t,onCanvas:n})=>{var r,i,o;let a="";a=t.fwidth?`max-width:${t.fwidth}${t.fwidth.match(/\d$/)?"px":""}; `:"width: fit-content;",t.fheight&&(a+=`${t.fwidth?"min-":"max-"}height:${t.fheight}px;`),n||e.setAttribute("style",a),e.classList.add(...Array.from(t.style)),e.hasClass("excalidraw-embedded-img")||e.addClass("excalidraw-embedded-img"),(null===(o=null===(i=null===(r=null===window||void 0===window?void 0:window.ExcalidrawAutomate)||void 0===r?void 0:r.plugin)||void 0===i?void 0:i.settings)||void 0===o?void 0:o.canvasImmersiveEmbed)&&!e.hasClass("excalidraw-canvas-immersive")&&e.addClass("excalidraw-canvas-immersive")},_getSVGIMG=async({filenameParts:e,theme:t,cacheReady:n,img:r,file:i,exportSettings:o,loader:a})=>{const s=Object.assign(Object.assign({},e),{isDark:"dark"===t,previewImageType:PreviewImageType.SVGIMG,scale:1});if(n){const e=await imageCache.getImageFromCache(s);if(e&&"string"==typeof e)return r.setAttribute("src",e),r}if(!e.hasBlockref&&!e.hasSectionref){const e=await getQuickImagePreview(plugin,i.path,"svg");if(e){const t=convertSVGStringToElement(e);if(t)return addSVGToImgSrc(r,t,n,s)}}let l=convertSVGStringToElement((await createSVG(e.hasGroupref||e.hasBlockref||e.hasSectionref||e.hasFrameref?e.filepath+e.linkpartReference:i.path,!0,o,a,t,null,null,[],plugin,0,getExportPadding(plugin,i))).outerHTML);return l?(l=embedFontsInSVG(l,plugin,!1),l.removeAttribute("width"),l.removeAttribute("height"),addSVGToImgSrc(r,l,n,s)):null},_getSVGNative=async({filenameParts:e,theme:t,cacheReady:n,containerElement:r,file:i,exportSettings:o,loader:a})=>{const s=Object.assign(Object.assign({},e),{isDark:"dark"===t,previewImageType:PreviewImageType.SVG,scale:1});let l;n&&(l=await imageCache.getImageFromCache(s));let c=l&&l instanceof SVGSVGElement?l:convertSVGStringToElement((await createSVG(e.hasGroupref||e.hasBlockref||e.hasSectionref||e.hasFrameref?e.filepath+e.linkpartReference:i.path,!1,o,a,t,null,null,[],plugin,0,getExportPadding(plugin,i),void 0,!0)).outerHTML);return c?(c=embedFontsInSVG(c,plugin,!0),c.removeAttribute("width"),c.removeAttribute("height"),r.append(c),n&&imageCache.addImageToCache(s,"",c),r):null},getIMG=async(e,t=!1)=>{var n;let r=e.file;if(!e.file){const t=vault.getAbstractFileByPath(null===(n=e.fname)||void 0===n?void 0:n.split("#")[0]);if(!(t&&t instanceof obsidian_module.TFile))return null;r=t}const i=getEmbeddedFilenameParts(e.fname);e.style=e.style.map((e=>e.replaceAll(" ","-")));const o=hasExportTheme(plugin,r)?getExportTheme(plugin,r,"light"):void 0,a={withBackground:getWithBackground(plugin,r),withTheme:!!o||plugin.settings.exportWithTheme,isMask:isMaskFile(plugin,r)},s=null!=o?o:plugin.settings.previewMatchObsidianTheme?isObsidianThemeDark()?"dark":"light":plugin.settings.exportWithTheme?void 0:"light";s&&(a.withTheme=!0);const l=new EmbeddedFilesLoader(plugin,s?"dark"===s:void 0),c=imageCache.isReady();switch(plugin.settings.previewImageType){case PreviewImageType.PNG:{const n=createEl("img");return setStyle({element:n,imgAttributes:e,onCanvas:t}),_getPNG({imgAttributes:e,filenameParts:i,theme:s,cacheReady:c,img:n,file:r,exportSettings:a,loader:l})}case PreviewImageType.SVGIMG:{const n=createEl("img");return setStyle({element:n,imgAttributes:e,onCanvas:t}),_getSVGIMG({filenameParts:i,theme:s,cacheReady:c,img:n,file:r,exportSettings:a,loader:l})}case PreviewImageType.SVG:{const n=createEl("div");return setStyle({element:n,imgAttributes:e,onCanvas:t}),_getSVGNative({filenameParts:i,theme:s,cacheReady:c,containerElement:n,file:r,exportSettings:a,loader:l})}}},addSVGToImgSrc=(e,t,n,r)=>{const i=(new XMLSerializer).serializeToString(t),o=new Blob([i],{type:"image/svg+xml"}),a=URL.createObjectURL(o);return e.setAttribute("src",a),n&&imageCache.addImageToCache(r,a,o),e},createImgElement=async(e,t=!1)=>{var n,r,i;const o=await getIMG(e,t);if(!o)return null;let a;o.setAttribute("fileSource",e.fname),e.fwidth&&o.setAttribute("w",e.fwidth),e.fheight&&o.setAttribute("h",e.fheight),o.setAttribute("draggable","false"),o.setAttribute("onCanvas",t?"true":"false");const s=e=>{if(!(e.target instanceof Element))return;if(!(e.target.hasClass("excalidraw-embedded-img")?e.target:getParentOfClass(e.target,"excalidraw-embedded-img")))return;const t=o.getAttribute("fileSource");if(t){const n=t.match(/([^#]*)(.*)/);if(!n)return;const r=vault.getAbstractFileByPath(n[1]),i=linkClickModifierType(e);if(plugin.isExcalidrawFile(r)&&isMaskFile(plugin,r))return void(async()=>{const e=`[[${r.path}${n[2]?"#"+n[2]:""}]] ${getExcalidrawFileForwardLinks(plugin.app,r,new Set)}`,t=await linkPrompt(e,plugin.app);if(!t)return;const[o,a,s]=t;if(plugin.isExcalidrawFile(o))return void plugin.openDrawing(o,i,!0,s);let l=!1;switch(i){case"active-pane":l=!1;break;case"new-pane":l="split";break;case"popout-window":l="window";break;case"new-tab":case"md-properties":l="tab"}plugin.app.workspace.openLinkText(a,"",l,s?{eState:{subpath:s}}:{})})();plugin.openDrawing(r,i,!0,n[2])}};let l;const c=o;return c.addEventListener("pointermove",(e=>{a&&(Math.abs(e.screenX-l.screenX)>10||Math.abs(e.screenY-l.screenY)>10)&&(clearTimeout(a),a=null)})),c.addEventListener("pointerdown",(e=>{var t;if(null===(t=null==o?void 0:o.parentElement)||void 0===t?void 0:t.hasClass("canvas-node-content"))return;const n=app.plugins.plugins["obsidian-excalidraw-plugin"],r=DEVICE.isDesktop?n.settings.longPressDesktop:n.settings.longPressMobile;a=setTimeout((()=>s(e)),r),l=e})),c.addEventListener("pointerup",(()=>{a&&clearTimeout(a),a=null})),c.addEventListener("dblclick",s),c.addEventListener(RERENDER_EVENT,(async e=>{e.stopPropagation();const t=o.parentElement,n=o.style.maxWidth,r=o.style.maxHeight,i=o.getAttribute("fileSource"),a="true"===o.getAttribute("onCanvas"),s=await createImgElement({fname:i,fwidth:o.getAttribute("w"),fheight:o.getAttribute("h"),style:[...Array.from(o.classList)]},a);s&&(t.empty(),a||(s.style.maxHeight=r,s.style.maxWidth=n),s.setAttribute("fileSource",i),t.append(s))})),getFileCSSClasses(e.file).forEach((e=>{o.hasClass(e)||o.addClass(e)})),(null===(i=null===(r=null===(n=null===window||void 0===window?void 0:window.ExcalidrawAutomate)||void 0===n?void 0:n.plugin)||void 0===r?void 0:r.settings)||void 0===i?void 0:i.canvasImmersiveEmbed)?o.hasClass("excalidraw-canvas-immersive")||o.addClass("excalidraw-canvas-immersive"):o.hasClass("excalidraw-canvas-immersive")&&o.removeClass("excalidraw-canvas-immersive"),o},createImageDiv=async(e,t=!1)=>{const n=await createImgElement(e,t);return createDiv(e.style.join(" "),(e=>e.append(n)))},processReadingMode=async(e,t)=>{var n;for(const r of e){const e=null===(n=r.getAttribute("src"))||void 0===n?void 0:n.split("#")[0];if(!e)continue;const i=metadataCache.getFirstLinkpathDest(e,t.sourcePath);if(i&&i instanceof obsidian_module.TFile&&plugin.isExcalidrawFile(i)){if(isTextOnlyEmbed(r))continue;r.parentElement.replaceChild(await processInternalEmbed(r,i),r)}}},processInternalEmbed=async(e,t)=>{const n={fname:"",fheight:"",fwidth:"",style:[]},r=e.getAttribute("src");if(!r)return;e.removeClass("markdown-embed"),e.removeClass("inline-embed"),e.addClass("media-embed"),e.addClass("image-embed"),n.fwidth=e.getAttribute("width")?e.getAttribute("width"):getDefaultWidth(plugin),n.fheight=e.getAttribute("height")?e.getAttribute("height"):getDefaultHeight(plugin);let i=e.getAttribute("alt");n.style=["excalidraw-svg"],processAltText(r.split("#")[0],i,n);const o=getEmbeddedFilenameParts(r);return n.fname=(null==t?void 0:t.path)+(o.hasBlockref||o.hasSectionref?o.linkpartReference:""),n.file=t,await createImageDiv(n)},processAltText=(e,t,n)=>{var r,i;if(t&&!t.startsWith(e)){const o=t.match(/[^\|\d]*\|?((\d*%?)x?(\d*%?))?\|?(.*)/);n.fwidth=null!==(r=o[2])&&void 0!==r?r:n.fwidth,n.fheight=null!==(i=o[3])&&void 0!==i?i:n.fheight,o[4]&&!o[4].startsWith(e)&&(n.style=[`excalidraw-svg-${o[4]}`]),o[4]&&""!==o[4]||o[2]&&""!==o[2]||!o[0]||""===o[0]||(n.style=[`excalidraw-svg-${o[0]}`])}},isTextOnlyEmbed=e=>{const t=e.getAttribute("src");if(!t)return!0;const n=getEmbeddedFilenameParts(t);return!(n.hasArearef||n.hasGroupref||n.hasFrameref)&&(n.hasBlockref||n.hasSectionref)},tmpObsidianWYSIWYG=async(e,t)=>{var n;const r=app.vault.getAbstractFileByPath(t.sourcePath);if(!(r instanceof obsidian_module.TFile))return;if(!plugin.isExcalidrawFile(r))return;if(t.remainingNestLevel<4)return;const i=t.containerEl;let o=i;for(;!o.hasClass("dataview")&&!o.hasClass("cm-preview-code-block")&&!o.hasClass("cm-embed-block")&&!o.hasClass("internal-embed")&&!o.hasClass("markdown-reading-view")&&!o.hasClass("markdown-embed")&&o.parentElement;)o=o.parentElement;if(o.hasClass("dataview")||o.hasClass("cm-preview-code-block")||o.hasClass("cm-embed-block"))return;const a={fname:t.sourcePath,fheight:getDefaultHeight(plugin),fwidth:getDefaultWidth(plugin),style:["excalidraw-svg"]};a.file=r;const s=o.hasClass("markdown-embed"),l=o.hasClass("markdown-reading-view");if(!o.hasClass("internal-embed")&&(s||l)){const l=Boolean(e.querySelector(".frontmatter"));let c=!1;if(Boolean(t.frontmatter))e.empty();else{const t=e.querySelector("div>h3[data-heading^='Unable to find section #^");if(t){const e=null===(n=t.getAttr("data-heading").match(/Unable to find section (#\^(?:group=|area=|frame=)[^ ]*)/))||void 0===n?void 0:n[1];e&&(a.fname=r.path+e,c=!0)}}if(!l&&!c)return void(e.parentElement===i&&i.removeChild(e));o.empty();const T=o.hasClass("canvas-node-content"),Q=await createImageDiv(a,T);return s?(o.removeClass("markdown-embed"),o.removeClass("inline-embed"),o.addClass("media-embed"),o.addClass("image-embed"),!T&&Q.firstChild instanceof HTMLElement&&(Q.firstChild.style.maxHeight="100%",Q.firstChild.style.maxWidth=null),void o.appendChild(Q.firstChild)):void o.appendChild(Q)}if(isTextOnlyEmbed(o))return;if(e.empty(),o.hasAttribute("ready"))return;o.setAttribute("ready",""),o.empty();const c=await processInternalEmbed(o,r);o.appendChild(c);let T=null;const Q=new MutationObserver((e=>{var t;["alt","width","height"].contains(null===(t=e[0])||void 0===t?void 0:t.attributeName)&&(T&&clearTimeout(T),T=setTimeout((async()=>{T=null,o.empty();const e=await processInternalEmbed(o,r);o.appendChild(e)}),500))}));Q.observe(o,{attributes:!0})},markdownPostProcessor=async(e,t)=>{var n;const r=e.querySelectorAll(".internal-embed");0!==r.length?Boolean(null===(n=t.frontmatter)||void 0===n?void 0:n.hasOwnProperty("excalidraw-plugin"))?e.style.display="none":await processReadingMode(r,t):tmpObsidianWYSIWYG(e,t)},hoverEvent=e=>{e.linktext?(plugin.hover.linkText=e.linktext,plugin.hover.sourcePath=e.sourcePath):plugin.hover.linkText=null},legacyExcalidrawPopoverObserverFn=async e=>{if(0===e.length)return;if(!plugin.hover.linkText)return;if(!plugin.hover.linkText.endsWith("excalidraw"))return;const t=metadataCache.getFirstLinkpathDest(plugin.hover.linkText,plugin.hover.sourcePath?plugin.hover.sourcePath:"");if(!t)return;if(!(t instanceof obsidian_module.TFile))return;if("excalidraw"!==t.extension)return;const n=getIMGFilename(t.path,"svg"),r=vault.getAbstractFileByPath(n);if(r&&r instanceof obsidian_module.TFile)return;const i=getIMGFilename(t.path,"png"),o=vault.getAbstractFileByPath(i);if(o&&o instanceof obsidian_module.TFile)return;if(!plugin.hover.linkText)return;if(1!=e.length)return;if(1!=e[0].addedNodes.length)return;if("popover hover-popover"!==e[0].addedNodes[0].className)return;const a=e[0].addedNodes[0];a.empty();const s=await getIMG({file:t,fname:t.path,fwidth:"300",fheight:null,style:["excalidraw-svg"]}),l=createDiv("",(async e=>{e.appendChild(s),e.setAttribute("src",t.path),e.onClickEvent((t=>{t.stopImmediatePropagation();const n=e.getAttribute("src");n&&plugin.openDrawing(vault.getAbstractFileByPath(n),linkClickModifierType(t))}))}));a.appendChild(l)},legacyExcalidrawPopoverObserver=new MutationObserver(legacyExcalidrawPopoverObserverFn);class FieldSuggester extends obsidian_module.EditorSuggest{constructor(e){super(e.app),this.getSuggestions=e=>{const t=e.query.toLowerCase();return("ea"===this.suggestType?EXCALIDRAW_AUTOMATE_INFO:"utils"===this.suggestType?EXCALIDRAW_SCRIPTENGINE_INFO:FRONTMATTER_KEYS_INFO).map((e=>e.field)).filter((e=>e.toLowerCase().includes(t)))},this.plugin=e}onTrigger(e,t,n){var r,i,o,a,s;if(this.plugin.settings.fieldSuggester){const n=t.getLine(e.line).substring(0,e.ch),l=null!==(a=null!==(i=null===(r=n.match(/^excalidraw-(.*)$/))||void 0===r?void 0:r[1])&&void 0!==i?i:null===(o=n.match(/(^ea|\Wea)\.([\w\.]*)$/))||void 0===o?void 0:o[2])&&void 0!==a?a:null===(s=n.match(/(^utils|\Wutils)\.([\w\.]*)$/))||void 0===s?void 0:s[2];if(void 0!==l)return this.suggestType=n.match(/^excalidraw-(.*)$/)?"excalidraw":n.match(/(^ea|\Wea)\.([\w\.]*)$/)?"ea":"utils",this.latestTriggerInfo={end:e,start:{ch:e.ch-l.length,line:e.line},query:l},this.latestTriggerInfo}return null}renderSuggestion(e,t){const n=e.replace("ea"===this.suggestType?"ea.":"utils"===this.suggestType?"utils.":"excalidraw-",""),r=("ea"===this.suggestType?EXCALIDRAW_AUTOMATE_INFO:"utils"===this.suggestType?EXCALIDRAW_SCRIPTENGINE_INFO:FRONTMATTER_KEYS_INFO).find((t=>t.field===e));t.createEl("b",{text:n}),t.createEl("br"),r.code&&t.createEl("code",{text:r.code}),r.desc&&t.createDiv("div",(e=>e.innerHTML=r.desc))}selectSuggestion(e){var t;const{context:n}=this;if(n){const r="ea"===this.suggestType?EXCALIDRAW_AUTOMATE_INFO:"utils"===this.suggestType?EXCALIDRAW_SCRIPTENGINE_INFO:FRONTMATTER_KEYS_INFO,i=`${e}${null===(t=r.find((t=>t.field===e)))||void 0===t?void 0:t.after}`;if(n.editor.replaceRange(i,this.latestTriggerInfo.start,this.latestTriggerInfo.end),this.latestTriggerInfo.start.ch===this.latestTriggerInfo.end.ch){const e=this.latestTriggerInfo.end;e.ch+=i.length,n.editor.setCursor(e)}}}}class FrontmatterEditor{constructor(e){this.initialized=!1,this.dataWOfrontmatter=e;const t=(e=e.replaceAll("\r\n","\n").replaceAll("\r","\n")).split(/^---(?:.|\n)*(?:^---\n)/gm);2===t.length&&(this.dataWOfrontmatter=t[1],this.frontmatterStr=e.match(/^---((?:.|\n)*)(?:^---\n)/gm)[0].replaceAll(/(^---\n|^\n)/gm,"").trim()+"\n",this.initialized=!0)}hasKey(e){if(!this.initialized)return!1;const t=new RegExp(`^${e}:`,"gm");return Boolean(this.frontmatterStr.match(t))}setKey(e,t){if(this.initialized)if(t=t.replaceAll("\r\n","\n").replaceAll("\r","\n").replaceAll(":",";").trim().split("\n").join(" "),this.hasKey(e)){const n=new RegExp(`^${e}:.*\\n(?:\\s\\s.*\\n)*`,"gm");this.frontmatterStr=this.frontmatterStr.split(n).join("\n").trim()+`\n${e}: ${t}`}else this.frontmatterStr=this.frontmatterStr.trim()+`\n${e}: ${t}`}get data(){return this.initialized?["---",this.frontmatterStr,"---",this.dataWOfrontmatter].join("\n"):this.dataWOfrontmatter}}const TASKBONE_URL="https://api.taskbone.com/",TASKBONE_OCR_FN="execute?id=60f394af-85f6-40bc-9613-5d26dc283cbb";class Taskbone{get apiKey(){return this.plugin.settings.taskboneAPIkey}constructor(e){this.plugin=e}async initialize(e=!0){var t;if(""!==this.plugin.settings.taskboneAPIkey)return;const n=await obsidian_module.requestUrl({url:`${TASKBONE_URL}users/excalidraw-obsidian/identities`,method:"post",contentType:"application/json",throw:!1});if(!n)return;const r=null===(t=n.json)||void 0===t?void 0:t.apiKey;return r&&"string"==typeof r&&(e&&await this.plugin.loadSettings(),this.plugin.settings.taskboneAPIkey=r,e&&await this.plugin.saveSettings()),r}async getTextForView(e,t){await e.forceSave(!0);const n=e.excalidrawAPI.getSceneElements().filter((t=>{var n;return"freedraw"===t.type||"image"===t.type&&!this.plugin.isExcalidrawFile(null===(n=e.excalidrawData.getFile(t.fileId))||void 0===n?void 0:n.file)}));if(0===n.length)return void new obsidian_module.Notice("Aborting OCR because there are no image or freedraw elements on the canvas.",4e3);const r=new FrontmatterEditor(e.data);if(r.hasKey("taskbone-ocr")&&!t)return void new obsidian_module.Notice("The drawing has already been processed, you will find the result in the frontmatter in markdown view mode. If you ran the command from the Obsidian Panel in Excalidraw then you can CTRL(CMD)+click the command to force the rescaning.",4e3);const i=this.plugin.ea.getBoundingBox(n),o=i.width*i.height,a=Math.sqrt(36e4/o),s=Math.sqrt(o/16e6),l=a>1?a:s>1?1/s:1,c=new EmbeddedFilesLoader(this.plugin,!1),T=await createPNG(e.file.path+"#^taskbone",l,{withBackground:!0,withTheme:!0,isMask:!1},c,"light",null,null,[],this.plugin,0),Q=await this.getTextForImage(T);Q&&(r.setKey("taskbone-ocr",Q),e.data=r.data,e.save(!1),window.navigator.clipboard.writeText(Q),new obsidian_module.Notice("I placed the recognized in the drawing's frontmatter and onto the system clipboard."))}async getTextForImage(e){const t=TASKBONE_URL+TASKBONE_OCR_FN;""===this.apiKey&&await this.initialize();const n={records:[{image:await blobToBase64(e)}]},r=await obsidian_module.requestUrl({url:t,method:"post",contentType:"application/json",body:JSON.stringify(n),headers:{authorization:`Bearer ${this.apiKey}`},throw:!1}),i=null==r?void 0:r.json;return i&&200===r.status?i.records[0].text:(new obsidian_module.Notice("Something went wrong while processing your request. Please check developer console for more information"),void log(r))}}const STYLE_VARIABLES=["--background-modifier-cover","--background-primary-alt","--background-secondary","--background-secondary-alt","--background-modifier-border","--text-normal","--text-muted","--text-accent","--text-accent-hover","--text-faint","--text-highlight-bg","--text-highlight-bg-active","--text-selection","--interactive-normal","--interactive-hover","--interactive-accent","--interactive-accent-hover","--scrollbar-bg","--scrollbar-thumb-bg","--scrollbar-active-thumb-bg"],EXCALIDRAW_CONTAINER_CLASS="excalidraw__embeddable__outer";class StylesManager{constructor(e){this.stylesMap=new Map,this.plugin=e,e.app.workspace.onLayoutReady((async()=>{await this.harvestStyles(),getAllWindowDocuments(e.app).forEach((e=>{this.copyPropertiesToTheme(e)})),e.registerEvent(e.app.workspace.on("css-change",(async()=>{await this.harvestStyles(),getAllWindowDocuments(e.app).forEach((e=>{this.copyPropertiesToTheme(e)}))}))),e.registerEvent(e.app.workspace.on("window-open",((e,t)=>{this.stylesMap.set(e.doc,{light:document.head.querySelector('style[id="excalidraw-embedded-light"]'),dark:document.head.querySelector('style[id="excalidraw-embedded-dark"]')})}))),e.registerEvent(e.app.workspace.on("window-open",((e,t)=>{this.stylesMap.delete(e.doc)})))}))}unload(){for(const[e,t]of this.stylesMap)e.head.removeChild(t.light),e.head.removeChild(t.dark)}async harvestStyles(){const e=document.body,t=document.createElement("iframe");t.style.display="none",e.appendChild(t);const n=new Promise((e=>{t.addEventListener("load",(()=>e()))})),r=t.contentWindow.document,i=t.contentWindow;r.open(),r.write(`<head>${document.head.innerHTML}</head>`),r.close(),await n;const o=t.contentWindow.document.body;o.setAttribute("style",e.getAttribute("style")),o.setAttribute("class",e.getAttribute("class"));const a=e=>{o.classList.remove("theme-light"),o.classList.remove("theme-dark"),o.classList.add(e)},s=()=>{const e=i.getComputedStyle(o),t={};for(const n of STYLE_VARIABLES)t[n]=e.getPropertyValue(n);const n=this.plugin.ea.getCM(e.getPropertyValue("--background-primary"));return n.alphaTo(.9),t["--background-primary"]=n.stringHEX(),Object.entries(t).map((([e,t])=>`${e}: ${t} !important;`)).join(" ")};a("theme-light"),this.styleLight=s(),a("theme-dark"),this.styleDark=s(),e.removeChild(t)}copyPropertiesToTheme(e){const t=this.stylesMap.get(e);if(t)t.light.innerHTML=`.${EXCALIDRAW_CONTAINER_CLASS} .theme-light {\n${this.styleLight}\n}`,t.dark.innerHTML=`.${EXCALIDRAW_CONTAINER_CLASS} .theme-dark {\n${this.styleDark}\n}`;else{const t=e.createElement("style");t.type="text/css",t.setAttribute("id","excalidraw-embedded-light"),t.innerHTML=`.${EXCALIDRAW_CONTAINER_CLASS} .theme-light {\n${this.styleLight}\n}`,e.head.appendChild(t);const n=e.createElement("style");n.type="text/css",n.setAttribute("id","excalidraw-embedded-dark"),n.innerHTML=`.${EXCALIDRAW_CONTAINER_CLASS} .theme-dark {\n${this.styleDark}\n}`,e.head.appendChild(n),this.stylesMap.set(e,{light:t,dark:n})}}}const haveLinkedFilesChanged=(e,t,n,r,i)=>{if(e++>5)return!1;r.add(n);const o=i.app.metadataCache.resolvedLinks[n];if(!o)return!1;for(const a of Object.keys(o)){if(r.has(a))continue;const o=i.app.vault.getAbstractFileByPath(a);if(o&&o instanceof obsidian_module.TFile){if(console.log(n,{mtimeLinked:o.stat.mtime,mtimeSource:t,path:o.path}),o.stat.mtime>t)return!0;if(i.isExcalidrawFile(o)&&haveLinkedFilesChanged(e,t,o.path,r,i))return!0}}return!1},listOfOutOfSyncImgExports=async(e,t,n)=>{const r=e.app;if(!r.internalPlugins.plugins.publish.instance)return;const i=await r.internalPlugins.plugins.publish.instance.apiList();if(!i||!i.files)return;const o=new Set,a=i.files.filter((e=>e.path.endsWith(".svg")||e.path.endsWith(".png"))),s=a.length;return a.forEach(((i,a)=>{const l=getIMGFilename(i.path,"md"),c=r.vault.getAbstractFileByPath(i.path),T=r.vault.getAbstractFileByPath(l);if(n.innerText=`Status: ${a+1}/${s} ${c?c.name:i.path}`,T&&c&&T instanceof obsidian_module.TFile&&c instanceof obsidian_module.TFile){if(T.stat.mtime<=c.stat.mtime){if(!t)return;if(!haveLinkedFilesChanged(0,T.stat.mtime,T.path,new Set,e))return}o.add(T)}})),Array.from(o)};class PublishOutOfDateFilesDialog extends obsidian_module.Modal{constructor(e){super(e.app),this.plugin=e}async onClose(){}onOpen(){this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText("Out of Date SVG Files"),this.createForm(!1)}async createForm(e){const t=this.contentEl.createEl("details");t.createEl("summary",{text:"Video about Obsidian Publish support"}),t.createEl("br"),addIframe(t,"JC1E-jeiWhI");const n=this.contentEl.createEl("p",{text:"Collecting data..."}),r=this.contentEl.createEl("p",{text:"Status: "}),i=await listOfOutOfSyncImgExports(this.plugin,e,r);if(r.style.display="none",!i||0===i.length){n.innerText="No out of date files found.";const t=this.contentEl.createDiv({cls:"excalidraw-prompt-buttons-div"});return t.createEl("button",{text:"Close",cls:"excalidraw-prompt-button"}).onclick=()=>{this.close()},void(e||(t.createEl("button",{text:"Check Recursive",cls:"excalidraw-prompt-button"}).onclick=()=>{this.contentEl.empty(),this.createForm(!0)}))}const o=new Map;n.innerText="Select files to open.",i.forEach((e=>{o.set(e,!0),new obsidian_module.Setting(this.contentEl).setName(e.path).addToggle((t=>t.setValue(!0).onChange((t=>{o.set(e,t)}))))}));const a=this.contentEl.createDiv({cls:"excalidraw-prompt-buttons-div"});a.createEl("button",{text:"Close",cls:"excalidraw-prompt-button"}).onclick=()=>{this.close()},e||(a.createEl("button",{text:"Check Recursive",cls:"excalidraw-prompt-button"}).onclick=()=>{this.contentEl.empty(),this.createForm(!0)}),a.createEl("button",{text:"Open Selected",cls:"excalidraw-prompt-button"}).onclick=()=>{o.forEach(((e,t)=>{e&&this.plugin.openDrawing(t,"new-tab",!0)})),this.close()}}}class ExcalidrawConfig{constructor(e){this.plugin=e,this.areaLimit=16777216,this.widthHeightLimit=32767,this.updateValues()}updateValues(){DEVICE.isIOS||(this.areaLimit=16777216*this.plugin.settings.areaZoomLimit,this.widthHeightLimit=32767*this.plugin.settings.areaZoomLimit)}}class ExcalidrawPlugin extends obsidian_module.Plugin{constructor(e,t){super(e,t),this.excalidrawFiles=new Set,this.excalidrawFileModes={},this._loaded=!1,this.activeExcalidrawView=null,this.lastActiveExcalidrawFilePath=null,this.hover={linkText:null,sourcePath:null},this.opencount=0,this.filesMaster=null,this.equationsMaster=null,this.mermaidsMaster=null,this.fourthFontDef=VIRGIL_FONT,this.packageMap=new WeakMap,this.leafChangeTimeout=null,this.removeEventLisnters=[],this.textMeasureDiv=null,this.popScope=null,this.filesMaster=new Map,this.equationsMaster=new Map,this.mermaidsMaster=new Map}get locale(){return LOCALE}get window(){return window}get document(){return document}getPackage(e){if(e===window)return{react:react,reactDOM:reactDOM,excalidrawLib:excalidrawLib};if(this.packageMap.has(e))return this.packageMap.get(e);const{react:t,reactDOM:n,excalidrawLib:r}=e.eval.call(e,`(function() {\n ${LZString.decompressFromBase64(EXCALIDRAW_PACKAGES)};\n return {react:React,reactDOM:ReactDOM,excalidrawLib:ExcalidrawLib};\n })()`);return this.packageMap.set(e,{react:t,reactDOM:n,excalidrawLib:r}),{react:t,reactDOM:n,excalidrawLib:r}}registerEvent(e){super.registerEvent(e)}async onload(){if(obsidian_module.addIcon(ICON_NAME,EXCALIDRAW_ICON),obsidian_module.addIcon("ScriptEngine",SCRIPTENGINE_ICON),obsidian_module.addIcon("export-img",EXPORT_IMG_ICON),await this.loadSettings({reEnableAutosave:!0}),this.excalidrawConfig=new ExcalidrawConfig(this),await obsidian_module.loadMermaid(),this.addSettingTab(new ExcalidrawSettingTab(this.app,this)),this.ea=await initExcalidrawAutomate(this),this.textMeasureDiv=document.createElement("div"),this.textMeasureDiv.setAttribute("id","excalidraw-measure-text"),document.body.appendChild(this.textMeasureDiv),this.registerView("excalidraw",(e=>new ExcalidrawView(e,this))),this.registerExtensions(["excalidraw"],"excalidraw"),this.addMarkdownPostProcessor(),this.registerInstallCodeblockProcessor(),this.addThemeObserver(),this.experimentalFileTypeDisplayToggle(this.settings.experimentalFileType),this.registerCommands(),this.registerEventListeners(),this.runStartupScript(),this.initializeFonts(),this.registerEditorSuggest(new FieldSuggester(this)),this.setPropertyTypes(),this.registerMonkeyPatches(),this.stylesManager=new StylesManager(this),this.settings.showReleaseNotes){const e="0.0.0"===this.settings.previousRelease;isVersionNewerThanOther(PLUGIN_VERSION,this.settings.previousRelease)&&new ReleaseNotes(this.app,this,e?null:PLUGIN_VERSION).open()}this.switchToExcalidarwAfterLoad();const e=this;this.app.workspace.onLayoutReady((()=>{this.scriptEngine=new ScriptEngine(e),imageCache.initializeDB(e)})),this.taskbone=new Taskbone(this)}setPropertyTypes(){const e=this.app;this.app.workspace.onLayoutReady((()=>{Object.keys(FRONTMATTER_KEYS).forEach((t=>{if(!0===FRONTMATTER_KEYS[t].depricated)return;const{name:n,type:r}=FRONTMATTER_KEYS[t];e.metadataTypeManager.setType(n,r)}))}))}initializeFonts(){this.app.workspace.onLayoutReady((async()=>{const e=await getFontDataURL(this.app,this.settings.experimantalFourthFont,"","LocalFont"),t=""===e.dataURL?VIRGIL_DATAURL:e.dataURL;this.fourthFontDef=e.fontDef,this.getOpenObsidianDocuments().forEach((e=>{this.addFonts([`@font-face{font-family:'LocalFont';src:url("${t}");font-display: swap;`],e)}))}))}addFonts(e,t=document){const n=t.createElement("style");n.id=FONTS_STYLE_ID,n.textContent=e.join("");const r=t.getElementById(FONTS_STYLE_ID);t.head.appendChild(n),r&&t.head.removeChild(r),t.fonts.load("20px LocalFont")}removeFonts(){this.getOpenObsidianDocuments().forEach((e=>{const t=e.getElementById(FONTS_STYLE_ID);t&&e.head.removeChild(t)}))}getOpenObsidianDocuments(){const e=new Set;return this.app.workspace.iterateAllLeaves((t=>{const n=this.app.isMobile?document:t.view.containerEl.ownerDocument;n&&(e.has(n)||e.add(n))})),Array.from(e)}switchToExcalidarwAfterLoad(){const e=this;this.app.workspace.onLayoutReady((()=>{var t;let n;for(n of this.app.workspace.getLeavesOfType("markdown"))n.view instanceof obsidian_module.MarkdownView&&e.isExcalidrawFile(n.view.file)&&fileShouldDefaultAsExcalidraw(null===(t=n.view.file)||void 0===t?void 0:t.path,e.app)&&(e.excalidrawFileModes[n.id||n.view.file.path]="excalidraw",e.setExcalidrawView(n))}))}forceSaveActiveView(e){if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.forceSave(),!0)}registerInstallCodeblockProcessor(){const e=async(e,t)=>{let n=null;try{const e=t.parentElement.querySelector(`a[href="#${t.previousElementSibling.getAttribute("data-heading")}"]`);e.style.paddingRight="10px",n=e.parentElement.createEl("button",null,(e=>{e.setText(t$d("UPDATE_SCRIPT")),e.addClass("mod-muted"),e.style.backgroundColor="var(--interactive-success)",e.style.display="none"}))}catch(t){errorlog({where:"this.registerInstallCodeblockProcessor",source:e,error:t})}e=e.trim(),t.createEl("button",null,(async t=>{var r;const i=e=>{switch(n&&(n.style.display="none"),e){case"CHECKING":t.setText(t$d("CHECKING_SCRIPT")),t.style.backgroundColor="var(--interactive-normal)";break;case"INSTALL":t.setText(t$d("INSTALL_SCRIPT")),t.style.backgroundColor="var(--interactive-accent)";break;case"UPTODATE":t.setText(t$d("UPTODATE_SCRIPT")),t.style.backgroundColor="var(--interactive-normal)";break;case"UPDATE":t.setText(t$d("UPDATE_SCRIPT")),t.style.backgroundColor="var(--interactive-success)",n&&(n.style.display=null);break;case"ERROR":t.setText(t$d("UNABLETOCHECK_SCRIPT")),t.style.backgroundColor="var(--interactive-normal)"}};t.addClass("mod-muted");let o=e;try{o=decodeURI(e)}catch(t){errorlog({where:"ExcalidrawPlugin.registerInstallCodeblockProcessor.codeblockProcessor.onClick",source:e,error:t})}const a=o.substring(o.lastIndexOf("/")+1),s=`${this.settings.scriptFolderPath}/Downloaded`,l=app.vault.getFiles().filter((e=>e.path.startsWith(s)&&e.name===a)).sort(((e,t)=>e.path>t.path?1:-1));let c=l[0];const T=null!==(r=null==c?void 0:c.path)&&void 0!==r?r:`${s}/${a}`,Q=getIMGFilename(T,"svg");let d=this.app.vault.getAbstractFileByPath(Q);if(i(c?"CHECKING":"INSTALL"),t.onclick=async()=>{const t=async(e,t,n)=>{const r=await obsidian_module.request({url:e});return!r||r.startsWith("404: Not Found")?null:(t?await this.app.vault.modify(t,r):(await checkAndCreateFolder(s),t=await this.app.vault.create(n,r)),t)};try{if(c=await t(e,c,T),!c)throw i("ERROR"),"File not found";d=await t(getIMGFilename(e,"svg"),d,Q),i("UPTODATE"),0===Object.keys(this.scriptEngine.scriptIconMap).length&&this.scriptEngine.loadScripts(),new obsidian_module.Notice(`Installed: ${c.basename}`)}catch(e){new obsidian_module.Notice(`Error installing script: ${a}`),errorlog({where:"ExcalidrawPlugin.registerInstallCodeblockProcessor.codeblockProcessor.onClick",error:e})}},n&&(n.onclick=t.onclick),!(c&&c instanceof obsidian_module.TFile))return;const u=new Map;JSON.parse(await obsidian_module.request({url:"https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/directory-info.json"})).forEach((e=>u.set(e.fname,e.mtime)));const p=(e,t)=>{if(0===u.size||!u.has(e))return"ERROR";const n=u.get(e);return!t||n>t.stat.mtime?"UPDATE":"UPTODATE"},h=p(a,c),m=p(getIMGFilename(a,"svg"),d&&d instanceof obsidian_module.TFile?d:null);i("UPTODATE"===h&&"UPTODATE"===m||"UPTODATE"===h&&"ERROR"===m?"UPTODATE":"ERROR"===h?"ERROR":"UPDATE"===h||"UPDATE"===m?"UPDATE":"UPTODATE")}))};this.registerMarkdownCodeBlockProcessor(SCRIPT_INSTALL_CODEBLOCK,(async(t,n)=>{n.addEventListener(RERENDER_EVENT,(async r=>{r.stopPropagation(),n.empty(),e(t,n)})),e(t,n)}))}addMarkdownPostProcessor(){const e=this;this.app.workspace.onLayoutReady((()=>{initializeMarkdownPostProcessor(e),e.registerMarkdownPostProcessor(markdownPostProcessor),e.registerEvent(e.app.workspace.on("hover-link",hoverEvent)),this.app.vault.getFiles().some((e=>"excalidraw"===e.extension))&&e.enableLegacyFilePopoverObserver()}))}enableLegacyFilePopoverObserver(){this.legacyExcalidrawPopoverObserver||(this.legacyExcalidrawPopoverObserver=legacyExcalidrawPopoverObserver,this.legacyExcalidrawPopoverObserver.observe(document.body,{childList:!0,subtree:!1}))}addThemeObserver(){if(this.themeObserver)return;const{matchThemeTrigger:e}=this.settings;e&&(this.themeObserver=new MutationObserver((async e=>{var t;const{matchThemeTrigger:n}=this.settings;if(!n)return;const r=document.body.classList,i=e[0];if((null==i?void 0:i.oldValue)===r.value)return;const o=r.contains("theme-dark");if((null===(t=null==i?void 0:i.oldValue)||void 0===t?void 0:t.includes("theme-dark"))===o)return;const a=this;setTimeout((()=>{const e=isObsidianThemeDark()?"dark":"light";a.app.workspace.getLeavesOfType("excalidraw").forEach((t=>{const n=t.view;n.file&&n.excalidrawAPI&&n.setTheme(e)}))}))})),this.themeObserver.observe(document.body,{attributeOldValue:!0,attributeFilter:["class"]}))}removeThemeObserver(){this.themeObserver&&(this.themeObserver.disconnect(),this.themeObserver=null)}experimentalFileTypeDisplayToggle(e){e?this.experimentalFileTypeDisplay():(this.fileExplorerObserver&&this.fileExplorerObserver.disconnect(),this.fileExplorerObserver=null)}experimentalFileTypeDisplay(){const e=e=>{if(1!=e.childElementCount)return;const t=e.getAttribute("data-path");if(!t)return;const n=this.app.vault.getAbstractFileByPath(t);n&&n instanceof obsidian_module.TFile&&this.isExcalidrawFile(n)&&e.insertBefore(createDiv({cls:"nav-file-tag",text:this.settings.experimentalFileTag}),e.firstChild)};this.fileExplorerObserver=new MutationObserver((t=>{t.filter((e=>e.addedNodes.length>0)).forEach((t=>{t.addedNodes.forEach((t=>{t instanceof Element&&t.querySelectorAll(".nav-file-title").forEach(e)}))}))}));const t=this;this.app.workspace.onLayoutReady((()=>{document.querySelectorAll(".nav-file-title").forEach(e);const n=document.querySelector(".nav-files-container");n&&t.fileExplorerObserver.observe(n,{childList:!0,subtree:!0})}))}registerCommands(){this.openDialog=new OpenFileDialog(this.app,this),this.insertLinkDialog=new InsertLinkDialog(this),this.insertCommandDialog=new InsertCommandDialog(this.app),this.insertImageDialog=new InsertImageDialog(this),this.importSVGDialog=new ImportSVGDialog(this),this.insertMDDialog=new InsertMDDialog(this),this.addRibbonIcon(ICON_NAME,t$d("CREATE_NEW"),(async e=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),linkClickModifierType(emulateCTRLClickForLinks(e)))}));const e=(e,t)=>{let n=t.path;t instanceof obsidian_module.TFile&&(n=obsidian_module.normalizePath(t.path.substr(0,t.path.lastIndexOf(t.name)))),this.createAndOpenDrawing(getDrawingFilename(this.settings),linkClickModifierType(emulateCTRLClickForLinks(e)),n)};this.registerEvent(this.app.workspace.on("file-menu",((t,n)=>{t.addItem((t=>{t.setTitle(t$d("CREATE_NEW")).setIcon(ICON_NAME).onClick((t=>{e(t,n)}))}))}))),this.registerEvent(this.app.workspace.on("file-menu",((e,t)=>{t instanceof obsidian_module.TFile&&"excalidraw"==t.extension&&e.addItem((e=>{e.setTitle(t$d("CONVERT_FILE_KEEP_EXT")).onClick((()=>{this.convertSingleExcalidrawToMD(t,!1,!1)}))}))}))),this.registerEvent(this.app.workspace.on("file-menu",((e,t)=>{t instanceof obsidian_module.TFile&&"excalidraw"==t.extension&&e.addItem((e=>{e.setTitle(t$d("CONVERT_FILE_REPLACE_EXT")).onClick((()=>{this.convertSingleExcalidrawToMD(t,!0,!0)}))}))}))),this.addCommand({id:"excalidraw-convert-image-from-url-to-local-file",name:t$d("CONVERT_URL_TO_FILE"),checkCallback:e=>{var t;const n=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(!n)return!1;const r=n.getSingleSelectedImage();return!(!r||!(null===(t=r.embeddedFile)||void 0===t?void 0:t.isHyperLink))&&(!!e||void n.convertImageElWithURLToLocalFile(r))}}),this.addCommand({id:"excalidraw-unzip-file",name:t$d("UNZIP_CURRENT_FILE"),checkCallback:e=>{const t=this.app.workspace.getActiveFile();return!!t&&(!!this.isExcalidrawFile(t)&&(!this.app.workspace.getActiveViewOfType(ExcalidrawView)&&(!!e||void(async()=>{const e=(await this.app.vault.read(t)).split("%%\n# Drawing\n```compressed-json\n");if(2!==e.length)return;const n=e[0]+"%%\n# Drawing\n```json\n",r=e[1].split("\n```\n%%");if(2!==r.length)return;const i=decompress(r[0]);i?await this.app.vault.modify(t,n+i+"\n```\n%%"):new obsidian_module.Notice("The compressed string is corrupted. Unable to decompress data.")})())))}}),this.addCommand({id:"excalidraw-publish-svg-check",name:t$d("PUBLISH_SVG_CHECK"),checkCallback:e=>!!app.internalPlugins.plugins.publish.instance&&(!!e||void new PublishOutOfDateFilesDialog(this).open())}),this.addCommand({id:"excalidraw-embeddable-poroperties",name:t$d("EMBEDDABLE_PROPERTIES"),checkCallback:e=>{const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(!t)return!1;if(!t.excalidrawAPI)return!1;const n=t.getViewSelectedElements().filter((e=>"embeddable"===e.type));return 1!==n.length?(e||new obsidian_module.Notice("Select a single embeddable element and try again"),!1):!!e||void new EmbeddableSettings(t.plugin,t,(e=>{const n=REGEX_LINK.getRes(e.link).next();if(!n||!n.value&&n.done)return null;const r=REGEX_LINK.getLink(n),{file:i}=processLinkText(r,t);return i})(n[0]),n[0]).open()}}),this.addCommand({id:"excalidraw-embeddables-relative-scale",name:t$d("EMBEDDABLE_RELATIVE_ZOOM"),checkCallback:e=>{const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(!t)return!1;if(!t.excalidrawAPI)return!1;const n=t.getViewSelectedElements().filter((e=>"embeddable"===e.type));if(0===n.length)return e||new obsidian_module.Notice("Select at least one embeddable element and try again"),!1;if(e)return!0;const r=getEA(t),i=r.getExcalidrawAPI();r.copyViewElementsToEAforEditing(n);const o=1/i.getAppState().zoom.value;r.getElements().forEach((e=>{e.scale=[o,o]})),r.addElementsToView()}}),this.addCommand({id:"open-image-excalidraw-source",name:t$d("OPEN_IMAGE_SOURCE"),checkCallback:e=>{const t=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView);if(!t)return!1;if(t.leaf!==this.app.workspace.activeLeaf)return!1;const n=t.editor;if(!n)return!1;const r=n.getCursor(),i=n.getLine(r.line),o=extractSVGPNGFileName(i);if(!o)return!1;const a=this.app.metadataCache.getFirstLinkpathDest(o,t.file.path);if(!a)return!1;const s=getIMGFilename(a.path,"md");let l=this.app.metadataCache.getFirstLinkpathDest(s,t.file.path);return!(!l&&(s.endsWith(".dark.md")&&(l=this.app.metadataCache.getFirstLinkpathDest(s.replace(/\.dark\.md$/,".md"),t.file.path)),s.endsWith(".light.md")&&(l=this.app.metadataCache.getFirstLinkpathDest(s.replace(/\.light\.md$/,".md"),t.file.path)),!l))&&(!!e||void this.openDrawing(l,"new-tab",!0))}}),this.addCommand({id:"excalidraw-disable-autosave",name:t$d("TEMPORARY_DISABLE_AUTOSAVE"),checkCallback:e=>!!this.settings.autosave&&(e||(this.settings.autosave=!1),!0)}),this.addCommand({id:"excalidraw-enable-autosave",name:t$d("TEMPORARY_ENABLE_AUTOSAVE"),checkCallback:e=>!this.settings.autosave&&(e||(this.settings.autosave=!0),!0)}),this.addCommand({id:"excalidraw-download-lib",name:t$d("DOWNLOAD_LIBRARY"),callback:this.exportLibrary}),this.addCommand({id:"excalidraw-open",name:t$d("OPEN_EXISTING_NEW_PANE"),callback:()=>{this.openDialog.start(openDialogAction.openFile,!0)}}),this.addCommand({id:"excalidraw-open-on-current",name:t$d("OPEN_EXISTING_ACTIVE_PANE"),callback:()=>{this.openDialog.start(openDialogAction.openFile,!1)}}),this.addCommand({id:"excalidraw-insert-transclusion",name:t$d("TRANSCLUDE"),checkCallback:e=>e?Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(this.openDialog.start(openDialogAction.insertLinkToDrawing,!1),!0)}),this.addCommand({id:"excalidraw-insert-last-active-transclusion",name:t$d("TRANSCLUDE_MOST_RECENT"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView))&&null!=this.lastActiveExcalidrawFilePath;const t=this.app.vault.getAbstractFileByPath(this.lastActiveExcalidrawFilePath);return t instanceof obsidian_module.TFile&&(this.embedDrawing(t),!0)}}),this.addCommand({id:"excalidraw-autocreate",name:t$d("NEW_IN_NEW_PANE"),callback:()=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),"new-pane")}}),this.addCommand({id:"excalidraw-autocreate-newtab",name:t$d("NEW_IN_NEW_TAB"),callback:()=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),"new-tab")}}),this.addCommand({id:"excalidraw-autocreate-on-current",name:t$d("NEW_IN_ACTIVE_PANE"),callback:()=>{this.createAndOpenDrawing(getDrawingFilename(this.settings),"active-pane")}}),this.addCommand({id:"excalidraw-autocreate-popout",name:t$d("NEW_IN_POPOUT_WINDOW"),checkCallback:e=>{if(e)return!app.isMobile;this.createAndOpenDrawing(getDrawingFilename(this.settings),"popout-window")}});const t=async e=>{const t=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView);if(!t)return;const n=getEmbedFilename(t.file.basename,this.settings),r=this.settings.embedUseExcalidrawFolder?null:(await getAttachmentsFolderAndFilePath(this.app,t.file.path,n)).folder,i=await this.createDrawing(n,r);await this.embedDrawing(i),this.openDrawing(i,e,!0,void 0,!0)};this.addCommand({id:"excalidraw-autocreate-and-embed",name:t$d("NEW_IN_NEW_PANE_EMBED"),checkCallback:e=>e?Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(t("new-pane"),!0)}),this.addCommand({id:"excalidraw-autocreate-and-embed-new-tab",name:t$d("NEW_IN_NEW_TAB_EMBED"),checkCallback:e=>e?Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(t("new-tab"),!0)}),this.addCommand({id:"excalidraw-autocreate-and-embed-on-current",name:t$d("NEW_IN_ACTIVE_PANE_EMBED"),checkCallback:e=>e?Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(t("active-pane"),!0)}),this.addCommand({id:"excalidraw-autocreate-and-embed-popout",name:t$d("NEW_IN_POPOUT_WINDOW_EMBED"),checkCallback:e=>e?!app.isMobile&&Boolean(this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView)):(t("popout-window"),!0)}),this.addCommand({id:"run-ocr",name:t$d("RUN_OCR"),checkCallback:e=>{const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return e?Boolean(t):!!t&&(this.settings.taskboneEnabled?(this.taskbone.getTextForView(t,!1),!0):(new obsidian_module.Notice("Taskbone OCR is not enabled. Please go to plugins settings to enable it.",4e3),!0))}}),this.addCommand({id:"search-text",name:t$d("SEARCH"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(search(t),!0)}}),this.addCommand({id:"fullscreen",name:t$d("TOGGLE_FULLSCREEN"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.isFullscreen()?t.exitFullscreen():t.gotoFullscreen(),!0)}}),this.addCommand({id:"disable-binding",name:t$d("TOGGLE_DISABLEBINDING"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.toggleDisableBinding(),!0)}}),this.addCommand({id:"disable-framerendering",name:t$d("TOGGLE_FRAME_RENDERING"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.toggleFrameRendering(),!0)}}),this.addCommand({id:"disable-frameclipping",name:t$d("TOGGLE_FRAME_CLIPPING"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.toggleFrameClipping(),!0)}}),this.addCommand({id:"export-image",name:t$d("EXPORT_IMAGE"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.exportDialog||(t.exportDialog=new ExportDialog(this,t,t.file),t.exportDialog.createForm()),t.exportDialog.open(),!0)}}),this.forceSaveCommand=this.addCommand({id:"save",hotkeys:[{modifiers:["Ctrl"],key:"s"}],name:t$d("FORCE_SAVE"),checkCallback:e=>this.forceSaveActiveView(e)}),this.addCommand({id:"toggle-lock",hotkeys:[{modifiers:["Ctrl","Shift"],key:"e"}],name:t$d("TOGGLE_LOCK"),checkCallback:e=>{if(e)return!!Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView))&&!this.app.workspace.getActiveViewOfType(ExcalidrawView).compatibilityMode;const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!(!t||t.compatibilityMode||(t.changeTextMode(t.textMode===TextMode.parsed?TextMode.raw:TextMode.parsed),0))}}),this.addCommand({id:"scriptengine-store",name:t$d("INSTALL_SCRIPT_BUTTON"),checkCallback:e=>e?Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView)):(new ScriptInstallPrompt(this).open(),!0)}),this.addCommand({id:"delete-file",name:t$d("DELETE_FILE"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(t){this.ea.reset(),this.ea.setView(t);const e=this.ea.getViewSelectedElement();if("image"!==e.type)return new obsidian_module.Notice("Please select an image or embedded markdown document",4e3),!0;const n=this.ea.getViewFileForImageElement(e);return n?(this.app.vault.delete(n),this.ea.deleteViewElements([e]),!0):(new obsidian_module.Notice("Please select an image or embedded markdown document",4e3),!0)}return!1}}),this.addCommand({id:"convert-text2MD",name:t$d("CONVERT_TO_MARKDOWN"),checkCallback:e=>{const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(!t)return!1;const n=t.getViewSelectedElements().filter((e=>"text"===e.type));if(1!==n.length)return!1;const r=n[0],i=t.getViewElements().find((e=>e.id===r.containerId));return(!i||"arrow"!==i.type)&&(!!e||void t.convertTextElementToMarkdown(r,i))}}),this.addCommand({id:"insert-link",hotkeys:[{modifiers:["Ctrl","Shift"],key:"k"}],name:t$d("INSERT_LINK"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(this.insertLinkDialog.start(t.file.path,((e,n,r)=>t.addLink(e,n,r))),!0)}}),this.addCommand({id:"insert-command",name:t$d("INSERT_COMMAND"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(this.insertCommandDialog.start(((e,n,r)=>t.addText(e,n,r))),!0)}}),this.addCommand({id:"insert-link-to-element",hotkeys:[{modifiers:["Ctrl","Shift"],key:"k"}],name:t$d("INSERT_LINK_TO_ELEMENT_NORMAL"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.copyLinkToSelectedElementToClipboard(""),!0)}}),this.addCommand({id:"insert-link-to-element-group",name:t$d("INSERT_LINK_TO_ELEMENT_GROUP"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.copyLinkToSelectedElementToClipboard("group="),!0)}}),this.addCommand({id:"insert-link-to-element-frame",name:t$d("INSERT_LINK_TO_ELEMENT_FRAME"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.copyLinkToSelectedElementToClipboard("frame="),!0)}}),this.addCommand({id:"insert-link-to-element-area",name:t$d("INSERT_LINK_TO_ELEMENT_AREA"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.copyLinkToSelectedElementToClipboard("area="),!0)}}),this.addCommand({id:"toggle-lefthanded-mode",name:t$d("TOGGLE_LEFTHANDED_MODE"),checkCallback:e=>{if(e){if(this.app.workspace.getActiveViewOfType(ExcalidrawView)){const e=this.app.workspace.getActiveViewOfType(ExcalidrawView),t=null==e?void 0:e.excalidrawAPI;return!!t&&!!t.getAppState().trayModeEnabled}return!1}return this.app.workspace.getActiveViewOfType(ExcalidrawView),(async()=>{const e=this.settings.isLeftHanded;await this.loadSettings({applyLefthandedMode:!1}),this.settings.isLeftHanded=!e,this.saveSettings(),setLeftHandedMode(!e),setTimeout((()=>setLeftHandedMode(!e)))})(),!0}}),this.addCommand({id:"reset-image-to-100",name:t$d("RESET_IMG_TO_100"),checkCallback:e=>{const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(!t)return!1;if(!t.excalidrawAPI)return!1;const n=t.getViewSelectedElements().filter((e=>"image"===e.type));if(1!==n.length)return e||new obsidian_module.Notice("Select a single image element and try again"),!1;const r=n[0];return t.excalidrawData.getFile(r.fileId)?!!e||void(async()=>{const e=new ExcalidrawAutomate(this,t),i=await e.getOriginalImageSize(r);if(i){e.copyViewElementsToEAforEditing(n);const t=e.getElement(r.id);t.width=i.width,t.height=i.height,e.addElementsToView(!1,!1,!1)}})():(e||new obsidian_module.Notice("Select a single image element and try again"),!1)}}),this.addCommand({id:"insert-active-pdfpage",name:t$d("INSERT_ACTIVE_PDF_PAGE_AS_IMAGE"),checkCallback:e=>{var t,n,r,i,o,a,s,l;const c=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(!c)return!1;const T=c.getViewSelectedElements().filter((e=>"embeddable"===e.type));if(1!==T.length)return e||new obsidian_module.Notice("Select a single PDF embeddable and try again"),!1;if("pdf"!==(null===(r=null===(n=null===(t=c.getEmbeddableLeafElementById(T[0].id))||void 0===t?void 0:t.leaf)||void 0===n?void 0:n.view)||void 0===r?void 0:r.getViewType()))return!1;const Q=getActivePDFPageNumberFromPDFView(null===(o=null===(i=c.getEmbeddableLeafElementById(T[0].id))||void 0===i?void 0:i.leaf)||void 0===o?void 0:o.view);if(!Q)return!1;if(e)return!0;const d=T[0],u=new ExcalidrawAutomate(this,c),p=null===(l=null===(s=null===(a=c.getEmbeddableLeafElementById(d.id))||void 0===a?void 0:a.leaf)||void 0===s?void 0:s.view)||void 0===l?void 0:l.file;(async()=>{const e=await u.addImage(d.x+d.width+10,d.y,`${null==p?void 0:p.path}#page=${Q}`,!1,!1),t=u.getElement(e),n=t.width/t.height;n>1?(t.width=d.width,t.height=d.width/n):(t.height=d.height,t.width=d.height*n),u.addElementsToView(!1,!0,!0)})()}}),this.addCommand({id:"crop-image",name:t$d("CROP_IMAGE"),checkCallback:e=>{var t,n,r,i,o,a,s,l,c;const T=this.app.workspace.getActiveViewOfType(ExcalidrawView),Q=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView),d=null===(t=this.app.workspace.activeLeaf)||void 0===t?void 0:t.view,u=d&&"canvas"===d.getViewType();if(!T&&!Q&&!u)return!1;if(T){if(!T.excalidrawAPI)return!1;const t=T.getViewSelectedElements().filter((e=>"embeddable"===e.type)),Q=T.getViewSelectedElements().filter((e=>"image"===e.type)),d=0===Q.length&&1===t.length&&"pdf"===(null===(i=null===(r=null===(n=T.getEmbeddableLeafElementById(t[0].id))||void 0===n?void 0:n.leaf)||void 0===r?void 0:r.view)||void 0===i?void 0:i.getViewType()),u=1===Q.length&&0===t.length;if(!d&&!u)return e||new obsidian_module.Notice("Select a single image element or single PDF embeddable and try again"),!1;const p=d?getActivePDFPageNumberFromPDFView(null===(a=null===(o=T.getEmbeddableLeafElementById(t[0].id))||void 0===o?void 0:o.leaf)||void 0===a?void 0:a.view):void 0;if(d&&!p)return!1;if(e)return!0;if(d){const e=t[0],n=new ExcalidrawAutomate(this,T),r=null===(c=null===(l=null===(s=T.getEmbeddableLeafElementById(e.id))||void 0===s?void 0:s.leaf)||void 0===l?void 0:l.view)||void 0===c?void 0:c.file;return void carveOutPDF(n,e,`${null==r?void 0:r.path}#page=${p}`,r)}const h=Q[0];(async()=>{let e=T.excalidrawData.getFile(h.fileId);if(!e&&(await T.save(),await sleep$1(500),e=T.excalidrawData.getFile(h.fileId),!e))return new obsidian_module.Notice("Select a single image element and try again"),!1;const t=new ExcalidrawAutomate(this,T);carveOutImage(t,h)})()}const p=async(e,t,n,r,i,o)=>{var a;const s=getEA(),l=await s.addImage(0,0,e?e&&"pdf"===n.extension&&o?`${n.path}#${o}`:n:r,!1,!1);if(!l)return void new obsidian_module.Notice(`Can't load image\n\n${r}`);let c="",T="";if(e)c=n.basename,T=o?`[[${n.path}#${o}]]`:`[[${n.path}]]`;else{T=r;const e=null===(a=r.match(/^.*\/([^?]*)\??.*$/))||void 0===a?void 0:a[1];c=e.substring(0,e.lastIndexOf("."))}const{folderpath:Q,filename:d}=await getCropFileNameAndFolder(this,t.path,c),u=await createImageCropperFile(s,l,T,Q,d);u&&i(this.app.metadataCache.fileToLinktext(u,t.path,!0),u)};if(u){const t=[];if(d.canvas.nodes.forEach((e=>{e.nodeEl.hasClass("is-focused")&&t.push(e)})),1!==t.length)return!1;const n=t[0];let r="",i=!1;n.file&&(r=n.file.extension,i=this.isExcalidrawFile(n.file)),n.url&&(r=getURLImageExtension(n.url));const o="pdf"===r?getActivePDFPageNumberFromPDFView(null==n?void 0:n.child):void 0;if(!o&&!IMAGE_TYPES.contains(r)&&!i)return!1;if(e)return!0;const a=(e,t)=>{n.file&&("pdf"===n.file.extension?n.canvas.createFileNode({pos:{x:n.x+n.width+10,y:n.y},file:t}):n.setFile(t)),n.url&&n.canvas.createFileNode({pos:{x:n.x+20,y:n.y+20},file:t})};p(Boolean(n.file),d.file,n.file,n.url,a,o?`page=${o}`:void 0)}if(Q){const t=Q.editor,n=t.getCursor(),r=t.getLine(n.line),i=REGEX_LINK.getResList(r);if(0===i.length)return!1;const o=REGEX_LINK.getLink(i[0]),a=o.split("#"),s=2===a.length,l=this.app.metadataCache.getFirstLinkpathDest(s?a[0]:o,Q.file.path),c=l&&l instanceof obsidian_module.TFile,T=!!c&&this.isExcalidrawFile(l);let d=c?l.path:"",u=c?l.extension:"";if(o.match(/^https?|file/)&&(d=o,u=getURLImageExtension(o)),""===d)return!1;if("pdf"!==u&&!IMAGE_TYPES.contains(u)&&!T)return!1;if(e)return!0;const h=a[1],m=e=>{const o=r.split(i[0].value[0]),a=c&&h?"\n"+getLink(this,{embed:!1,alias:`${l.basename}, ${h.replace("="," ")}`,path:`${l.path}#${h}`}):"";t.setLine(n.line,o[0]+getLink(this,{embed:!0,path:e})+a+o[1])};p(c,Q.file,l,d,m,h)}}}),this.addCommand({id:"annotate-image",name:t$d("ANNOTATE_IMAGE"),checkCallback:e=>{var t;const n=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView),r=null===(t=this.app.workspace.activeLeaf)||void 0===t?void 0:t.view,i=r&&"canvas"===r.getViewType();if(!n&&!i)return!1;const o=async(e,t,n,r,i,o)=>{var a;const s=getEA(),l=await s.addImage(0,0,e?e&&"pdf"===n.extension&&o?`${n.path}#${o}`:n:r,!1,!1);if(!l)return void new obsidian_module.Notice(`Can't load image\n\n${r}`);s.getElement(l).locked=!0;let c,T="";if(e)T=n.basename,n.path;else{const e=null===(a=r.match(/^.*\/([^?]*)\??.*$/))||void 0===a?void 0:a[1];T=e.substring(0,e.lastIndexOf("."))}const Q=getListOfTemplateFiles(this);Q&&(c=await templatePromt(Q,this.app));const{folderpath:d,filename:u}=await getAnnotationFileNameAndFolder(this,t.path,T),p=await s.create({templatePath:null==c?void 0:c.path,filename:u,foldername:d,onNewPane:!0,frontmatterKeys:Object.assign(Object.assign({},this.settings.matchTheme?{"excalidraw-export-dark":isObsidianThemeDark()}:{}),"pdf"===n.extension?{cssclasses:"excalidraw-cropped-pdfpage"}:{})});let h=this.app.vault.getAbstractFileByPath(p),m=0;for(;(!h||!this.isExcalidrawFile(h))&&m<50;)await sleep$1(100),h=this.app.vault.getAbstractFileByPath(p),m++;h&&h instanceof obsidian_module.TFile?h&&i(this.app.metadataCache.fileToLinktext(h,t.path,!0),h):new obsidian_module.Notice("File not found. NewExcalidraw Drawing is taking too long to create. Please try again.")};if(i){const t=[];if(r.canvas.nodes.forEach((e=>{e.nodeEl.hasClass("is-focused")&&t.push(e)})),1!==t.length)return!1;const n=t[0];let i="",a=!1;n.file&&(i=n.file.extension,a=this.isExcalidrawFile(n.file)),n.url&&(i=getURLImageExtension(n.url));const s="pdf"===i?getActivePDFPageNumberFromPDFView(null==n?void 0:n.child):void 0;if(!s&&!IMAGE_TYPES.contains(i)&&!a)return!1;if(e)return!0;const l=(e,t)=>{n.file&&("pdf"===n.file.extension?n.canvas.createFileNode({pos:{x:n.x+n.width+10,y:n.y},file:t}):n.setFile(t)),n.url&&n.canvas.createFileNode({pos:{x:n.x+20,y:n.y+20},file:t})};o(Boolean(n.file),r.file,n.file,n.url,l,s?`page=${s}`:void 0)}if(n){const t=n.editor,r=t.getCursor(),i=t.getLine(r.line),a=REGEX_LINK.getResList(i);if(0===a.length)return!1;const s=REGEX_LINK.getLink(a[0]),l=s.split("#"),c=2===l.length,T=this.app.metadataCache.getFirstLinkpathDest(c?l[0]:s,n.file.path),Q=T&&T instanceof obsidian_module.TFile,d=!!Q&&this.isExcalidrawFile(T);let u=Q?T.path:"",p=Q?T.extension:"";if(s.match(/^https?|file/)&&(u=s,p=getURLImageExtension(s)),""===u)return!1;if("pdf"!==p&&!IMAGE_TYPES.contains(p)&&!d)return!1;if(e)return!0;const h=l[1],m=e=>{const n=i.split(a[0].value[0]),o=Q&&h?"\n"+getLink(this,{embed:!1,alias:`${T.basename}, ${h.replace("="," ")}`,path:`${T.path}#${h}`}):"";t.setLine(r.line,n[0]+getLink(this,{embed:!0,path:e})+o+n[1])};o(Q,n.file,T,u,m,h)}}}),this.addCommand({id:"insert-image",name:t$d("INSERT_IMAGE"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(this.insertImageDialog.start(t),!0)}}),this.addCommand({id:"import-svg",name:t$d("IMPORT_SVG"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(this.importSVGDialog.start(t),!0)}}),this.addCommand({id:"release-notes",name:t$d("READ_RELEASE_NOTES"),checkCallback:e=>e?Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView)):(new ReleaseNotes(this.app,this,PLUGIN_VERSION).open(),!0)}),this.addCommand({id:"tray-mode",name:t$d("TRAY_MODE"),checkCallback:e=>{if(e){const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(!e||!e.excalidrawAPI)return!1;const t=e.excalidrawAPI.getAppState();return!t.zenModeEnabled&&!t.viewModeEnabled}const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!(!t||!t.excalidrawAPI||(t.toggleTrayMode(),0))}}),this.addCommand({id:"insert-md",name:t$d("INSERT_MD"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(this.insertMDDialog.start(t),!0)}}),this.addCommand({id:"insert-pdf",name:t$d("INSERT_PDF"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(new InsertPDFModal(this,t).open(),!0)}}),this.addCommand({id:"universal-add-file",name:t$d("UNIVERSAL_ADD_FILE"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(new UniversalInsertFileModal(this,t).open(),!0)}}),this.addCommand({id:"universal-add-file",name:t$d("INSERT_CARD"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(t.insertBackOfTheNoteCard(),!0)}}),this.addCommand({id:"insert-LaTeX-symbol",name:t$d("INSERT_LATEX"),checkCallback:e=>{if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView));const t=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!t&&(insertLaTeXToView(t),!0)}}),this.addCommand({id:"toggle-excalidraw-view",name:t$d("TOGGLE_MODE"),checkCallback:e=>{const t=this.app.workspace.getActiveFile();if(!t)return!1;const n=this.isExcalidrawFile(t);if(e)return Boolean(this.app.workspace.getActiveViewOfType(ExcalidrawView))?!this.app.workspace.getActiveViewOfType(ExcalidrawView).compatibilityMode:n;const r=this.app.workspace.getActiveViewOfType(ExcalidrawView);if(r)return void r.openAsMarkdown();const i=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView);if(i&&n){const e=i.leaf;return this.excalidrawFileModes[e.id||t.path]="excalidraw",void this.setExcalidrawView(e)}}}),this.addCommand({id:"convert-to-excalidraw",name:t$d("CONVERT_NOTE_TO_EXCALIDRAW"),checkCallback:e=>{const t=this.app.workspace.getActiveFile(),n=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView);return!(!t||!n)&&!this.isExcalidrawFile(t)&&(!!e||void(async()=>{const e=await this.getBlankDrawing(),r=await this.app.vault.read(t),i=mergeMarkdownFiles(e,r);await this.app.vault.modify(t,i),this.setExcalidrawView(n.leaf)})())}}),this.addCommand({id:"convert-excalidraw",name:t$d("CONVERT_EXCALIDRAW"),checkCallback:e=>{if(e){const e=this.app.vault.getFiles().filter((e=>"excalidraw"==e.extension));return e.length>0}return this.convertExcalidrawToMD(),!0}})}async convertSingleExcalidrawToMD(e,t=!1,n=!1){const r=await this.app.vault.read(e),i=e.name.substring(0,e.name.lastIndexOf(".excalidraw"))+(t?".md":".excalidraw.md"),o=getNewUniqueFilepath(this.app.vault,i,obsidian_module.normalizePath(e.path.substring(0,e.path.lastIndexOf(e.name))));log(o);const a=await this.app.vault.create(o,FRONTMATTER+await this.exportSceneToMD(r));return this.settings.keepInSync&&EXPORT_TYPES.forEach((t=>{const n=e.path.substring(0,e.path.lastIndexOf(".excalidraw"))+t,r=this.app.vault.getAbstractFileByPath(obsidian_module.normalizePath(n));if(r&&r instanceof obsidian_module.TFile){const e=o.substring(0,o.lastIndexOf(".md"))+t;this.app.fileManager.renameFile(r,e)}})),n||this.app.vault.delete(e),a}async convertExcalidrawToMD(e=!1,t=!1){const n=this.app.vault.getFiles().filter((e=>"excalidraw"==e.extension));for(const r of n)this.convertSingleExcalidrawToMD(r,e,t);new obsidian_module.Notice(`Converted ${n.length} files.`)}registerMonkeyPatches(){var e,t;this.register(around(obsidian_module.Workspace.prototype,{getActiveViewOfType:e=>dedupe("https://github.com/zsviczian/obsidian-excalidraw-plugin/issues",e,(function(...t){var n,r;const i=e&&e.apply(this,t),o=null===(r=null===(n=null===app||void 0===app?void 0:app.workspace)||void 0===n?void 0:n.activeLeaf)||void 0===r?void 0:r.view;if(!(o&&o instanceof ExcalidrawView))return i;const a=(new Error).stack;if(!isCallerFromTemplaterPlugin(a))return i;const s=o.getActiveEmbeddable();return s&&s.node&&s.node.isEditing?{file:s.node.file,editor:s.node.child.editor}:i}))})),(null===(t=null===(e=app.plugins)||void 0===e?void 0:e.plugins)||void 0===t?void 0:t["obsidian-hover-editor"])||this.register(around(obsidian_module.WorkspaceLeaf.prototype,{getRoot:e=>function(){const t=e.call(this);return t.getRoot===this.getRoot?t:t.getRoot()}})),this.registerEvent(app.workspace.on("editor-menu",((e,t,n)=>{if(!(n&&n instanceof obsidian_module.MarkdownView))return;const r=n.file,i=n.leaf;if(!n.file)return;const o=this.app.metadataCache.getFileCache(r);(null==o?void 0:o.frontmatter)&&o.frontmatter[FRONTMATTER_KEYS.plugin.name]&&e.addItem((e=>e.setTitle(t$d("OPEN_AS_EXCALIDRAW")).setIcon(ICON_NAME).setSection("excalidraw").onClick((()=>{this.excalidrawFileModes[i.id||r.path]="excalidraw",this.setExcalidrawView(i)}))))}))),this.registerEvent(app.workspace.on("file-menu",((e,t,n,r)=>{if(!(r&&r.view instanceof obsidian_module.MarkdownView))return;if(!(t instanceof obsidian_module.TFile))return;const i=this.app.metadataCache.getFileCache(t);(null==i?void 0:i.frontmatter)&&i.frontmatter[FRONTMATTER_KEYS.plugin.name]&&(e.addItem((e=>{e.setTitle(t$d("OPEN_AS_EXCALIDRAW")).setIcon(ICON_NAME).setSection("pane").onClick((()=>{this.excalidrawFileModes[r.id||t.path]="excalidraw",this.setExcalidrawView(r)}))})),e.items.unshift(e.items.pop()))})));const n=this;this.register(around(obsidian_module.WorkspaceLeaf.prototype,{detach:e=>function(){var t;const r=null===(t=this.view)||void 0===t?void 0:t.getState();return(null==r?void 0:r.file)&&n.excalidrawFileModes[this.id||r.file]&&delete n.excalidrawFileModes[this.id||r.file],e.apply(this)},setViewState:e=>function(t,...r){var i;if(n._loaded&&"markdown"===t.type&&(null===(i=t.state)||void 0===i?void 0:i.file)&&"markdown"!==n.excalidrawFileModes[this.id||t.state.file]&&fileShouldDefaultAsExcalidraw(t.state.file,this.app)){const i=Object.assign(Object.assign({},t),{type:"excalidraw"});return n.excalidrawFileModes[t.state.file]="excalidraw",e.apply(this,[i,...r])}return e.apply(this,[t,...r])}}))}runStartupScript(){if(!this.settings.startupScriptPath||""===this.settings.startupScriptPath)return;const e=this;this.app.workspace.onLayoutReady((async()=>{const t=e.settings.startupScriptPath.endsWith(".md")?e.settings.startupScriptPath:`${e.settings.startupScriptPath}.md`,n=e.app.vault.getAbstractFileByPath(t);if(!(n&&n instanceof obsidian_module.TFile))return void new obsidian_module.Notice(`Startup script not found: ${t}`);const r=await e.app.vault.read(n),i=Object.getPrototypeOf((async()=>{})).constructor;try{await new i("ea",r)(e.ea)}catch(e){new obsidian_module.Notice(`Error running startup script: ${e}`)}}))}registerEventListeners(){const e=this;this.app.workspace.onLayoutReady((async()=>{e.registerEvent(e.app.workspace.on("editor-paste",((t,n,r)=>{var i;if(t.defaultPrevented)return;const o=t.clipboardData.getData("text/plain");if(o&&o.startsWith('{"type":"excalidraw/clipboard"')){t.preventDefault();try{const t=JSON.parse(o),a=1===t.elements.filter((e=>"text"===e.type)).length;if(!a&&1!==(null===(i=t.elements)||void 0===i?void 0:i.length))return;const s=a?t.elements.filter((e=>"text"===e.type))[0]:t.elements[0];if("image"===s.type){const t=e.filesMaster.get(s.fileId);if(t&&t.path){let i=t.path;const o=r.file,a=e.app.vault.getAbstractFileByPath(i);o&&a&&a instanceof obsidian_module.TFile&&(i=e.app.metadataCache.fileToLinktext(a,o.path)),n.insertText(getLink(e,{path:i}))}return}if("text"===s.type)return void n.insertText(s.text);if(s.link)return void n.insertText(`${s.link}`)}catch(e){}}}))),e.registerEvent(app.vault.on("rename",(async(t,n)=>{t instanceof obsidian_module.TFile&&e.isExcalidrawFile(t)&&e.settings.keepInSync&&[EXPORT_TYPES,"excalidraw"].flat().forEach((async e=>{const r=getIMGFilename(n,e),i=app.vault.getAbstractFileByPath(obsidian_module.normalizePath(r));if(i&&i instanceof obsidian_module.TFile){const n=getIMGFilename(t.path,e);await app.fileManager.renameFile(i,n)}}))}))),e.registerEvent(app.vault.on("modify",(async t=>{this.app.workspace.getLeavesOfType("excalidraw").forEach((async n=>{const r=n.view;if(r.file&&(r.file.path===t.path||"excalidraw"===t.extension&&`${t.path.substring(0,t.path.lastIndexOf(".excalidraw"))}.md`===r.file.path)){if(r.semaphores.preventReload)return void(r.semaphores.preventReload=!1);if(r.lastSaveTimestamp+3e5<Date.now())return void r.reload(!0,r.file);if("md"===t.extension){if(r.semaphores.embeddableIsEditingSelf)return;const n=new ExcalidrawData(e),i=await this.app.vault.read(t);await n.loadData(i,t,getTextMode(i)),r.synchronizeWithData(n),r.semaphores.dirty&&(r.autosaveTimer&&r.autosaveFunction&&clearTimeout(r.autosaveTimer),r.autosaveFunction&&r.autosaveFunction())}else r.reload(!0,r.file)}}))}))),e.registerEvent(app.vault.on("delete",(async t=>{if(!(t instanceof obsidian_module.TFile))return;const n=this.excalidrawFiles.has(t);if(this.updateFileCache(t,void 0,!0),!n)return;const r=this.app.workspace.getLeavesOfType("excalidraw");for(let e=0;e<r.length;e++)r[e].view.file.path==t.path&&await r[e].setViewState({type:"excalidraw",state:{file:null}});e.settings.keepInSync&&setTimeout((()=>{[EXPORT_TYPES,"excalidraw"].flat().forEach((async e=>{const n=getIMGFilename(t.path,e),r=app.vault.getAbstractFileByPath(obsidian_module.normalizePath(n));r&&r instanceof obsidian_module.TFile&&await app.vault.delete(r)}))}),500)}))),e.registerEvent(app.workspace.on("active-leaf-change",(async t=>{var n;e.leafChangeTimeout&&clearTimeout(e.leafChangeTimeout),e.leafChangeTimeout=setTimeout((()=>{e.leafChangeTimeout=null}),1e3);const r=e.activeExcalidrawView,i=t.view instanceof ExcalidrawView?t.view:null; //!Temporary hack -if(e.activeExcalidrawView=n,n&&(e.lastActiveExcalidrawFilePath=null===(t=n.file)||void 0===t?void 0:t.path),this.app.isMobile&&n&&!i){const e=document.querySelector("body>.app-container>.mobile-navbar");e&&e instanceof HTMLDivElement&&(e.style.position="relative")}if(this.app.isMobile&&!n&&i){const e=document.querySelector("body>.app-container>.mobile-navbar");e&&e instanceof HTMLDivElement&&(e.style.position="")}if(i&&i!==n&&(i.leaf!==A&&i.semaphores.dirty&&!i.semaphores.viewunload&&await i.save(!0),i.file&&e.triggerEmbedUpdates(i.file.path)),n&&(!i||i.leaf!==A)){const e=n.file;n.file&&setTimeout((()=>{var A;n&&n._loaded&&(null===(A=n.file)||void 0===A?void 0:A.path)===(null==e?void 0:e.path)&&(n.activeLoader||n.loadSceneFiles())}),2e3)}if(n&&n._loaded&&n.isLoaded&&n.excalidrawAPI&&e.ea.onCanvasColorChangeHook&&e.ea.onCanvasColorChangeHook(e.ea,n,n.excalidrawAPI.getAppState().viewBackgroundColor),e.popScope&&(e.popScope(),e.popScope=null),n){const A=e.app.keymap.getRootScope(),t=A.register(["Mod"],"Enter",(()=>!0));A.keys.unshift(A.keys.pop());const i=A.register(["Mod"],"k",(()=>!0));A.keys.unshift(A.keys.pop());const n=A.register(["Mod"],"f",(()=>{const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(search(e),!0)}));A.keys.unshift(A.keys.pop());const s=e.forceSaveCommand&&"s"===e.forceSaveCommand.hotkeys[0].key&&e.forceSaveCommand.hotkeys[0].modifiers.includes("Ctrl")?A.register(["Ctrl"],"s",(()=>e.forceSaveActiveView(!1))):void 0;s&&A.keys.unshift(A.keys.pop()),e.popScope=()=>{A.unregister(t),A.unregister(i),A.unregister(n),Boolean(s)&&A.unregister(s)}}}))),e.addFileSaveTriggerEventHandlers();const A=app.metadataCache;A.getCachedFiles().forEach((t=>{var i;const n=null===(i=A.getCache(t))||void 0===i?void 0:i.frontmatter;(n&&void 0!==n[FRONTMATTER_KEY]||t.match(/\.excalidraw$/))&&e.updateFileCache(app.vault.getAbstractFileByPath(t),n)})),this.registerEvent(A.on("changed",((e,A,t)=>this.updateFileCache(e,null==t?void 0:t.frontmatter))))}))}addFileSaveTriggerEventHandlers(){const e=e=>{this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&(!e.target||"excalidraw__canvas"!==e.target.className&&!getParentOfClass(e.target,"excalidraw-wrapper"))&&this.activeExcalidrawView.save()};this.app.workspace.containerEl.addEventListener("click",e),this.removeEventLisnters.push((()=>{this.app.workspace.containerEl.removeEventListener("click",e)})),this.registerEvent(this.app.workspace.on("file-menu",(()=>{this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&this.activeExcalidrawView.save()}))),this.modalContainerObserver=new MutationObserver((async e=>{1===e.length&&"childList"===e[0].type&&1===e[0].addedNodes.length&&this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&this.activeExcalidrawView.save()})),this.modalContainerObserver.observe(document.body,{childList:!0});const A=document.querySelector(".workspace-drawer.mod-left"),t=document.querySelector(".workspace-drawer.mod-right");if(A||t){const e=async e=>{"display: none;"===e[0].oldValue&&this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&this.activeExcalidrawView.save()},i={attributeOldValue:!0,attributeFilter:["style"]};A&&(this.workspaceDrawerLeftObserver=new MutationObserver(e),this.workspaceDrawerLeftObserver.observe(A,i)),t&&(this.workspaceDrawerRightObserver=new MutationObserver(e),this.workspaceDrawerRightObserver.observe(t,i))}}updateFileCache(e,A,t=!1){A&&void 0!==A[FRONTMATTER_KEY]?this.excalidrawFiles.add(e):t||"excalidraw"!==e.extension?this.excalidrawFiles.delete(e):this.excalidrawFiles.add(e)}onunload(){this.stylesManager.unload(),this.removeEventLisnters.forEach((e=>e())),destroyExcalidrawAutomate(),this.popScope&&(this.popScope(),this.popScope=null),this.observer.disconnect(),this.themeObserver.disconnect(),this.modalContainerObserver.disconnect(),this.workspaceDrawerLeftObserver&&this.workspaceDrawerLeftObserver.disconnect(),this.workspaceDrawerRightObserver&&this.workspaceDrawerRightObserver.disconnect(),this.fileExplorerObserver&&this.fileExplorerObserver.disconnect(),this.app.workspace.getLeavesOfType("excalidraw").forEach((e=>{this.setMarkdownView(e)})),this.removeMathJax(),Object.values(this.packageMap).forEach((e=>{delete e.excalidrawLib,delete e.reactDOM,delete e.react}))}getLink({embed:e=!0,path:A,alias:t}){return this.settings.embedWikiLink?`${e?"!":""}[[${A}${t?`|${t}`:""}]]`:`${e?"!":""}[${null!=t?t:""}](${encodeURI(A)})`}async embedDrawing(e){const A=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView);if(A&&A.file){const t=this.app.metadataCache.fileToLinktext(e,A.file.path,"excalidraw"===this.settings.embedType),i=A.editor;if("excalidraw"===this.settings.embedType)return i.replaceSelection(this.getLink({path:t})),void i.focus();let n=this.settings.autoExportLightAndDark?getExportTheme(this,e,this.settings.exportWithTheme&&isObsidianThemeDark()?"dark":"light"):"";n=""===n?"":n+".";const s=getIMGFilename(t,n+this.settings.embedType.toLowerCase()),a=getIMGFilename(e.path,n+this.settings.embedType.toLowerCase()),o="dark."===n?"light.":"dark.",r=""===n?null:getIMGFilename(t,o+this.settings.embedType.toLowerCase());this.app.vault.getAbstractFileByPath(a)||(await this.app.vault.create(a,""),await sleep$1(200));const l=this.settings.embedMarkdownCommentLinks;i.replaceSelection(this.settings.embedWikiLink?`![[${s}]]\n`+(l?`%%[[${t}|🖋 Edit in Excalidraw]]${r?", and the [["+r+"|"+o.split(".")[0]+" exported image]]":""}%%`:""):`![](${encodeURI(s)})\n`+(l?`%%[🖋 Edit in Excalidraw](${encodeURI(t)})${r?", and the ["+o.split(".")[0]+" exported image]("+encodeURI(r)+")":""}%%`:"")),i.focus()}}async loadSettings(e={applyLefthandedMode:!0,reEnableAutosave:!1}){void 0===e.applyLefthandedMode&&(e.applyLefthandedMode=!0),void 0===e.reEnableAutosave&&(e.reEnableAutosave=!1),this.settings=Object.assign({},DEFAULT_SETTINGS,await this.loadData()),this.settings.previewImageType||(void 0===this.settings.displaySVGInPreview?this.settings.previewImageType=PreviewImageType.SVGIMG:this.settings.previewImageType=this.settings.displaySVGInPreview?PreviewImageType.SVGIMG:PreviewImageType.PNG),e.applyLefthandedMode&&setLeftHandedMode(this.settings.isLeftHanded),e.reEnableAutosave&&(this.settings.autosave=!0),this.settings.autosaveInterval=app.isMobile?this.settings.autosaveIntervalMobile:this.settings.autosaveIntervalDesktop}async saveSettings(){await this.saveData(this.settings)}getStencilLibrary(){return""===this.settings.library||"deprecated"===this.settings.library?this.settings.library2:JSON_parse(this.settings.library)}setStencilLibrary(e){this.settings.library="deprecated",this.settings.library2=e}triggerEmbedUpdates(e){const A=new Set;app.workspace.iterateAllLeaves((t=>{const i=app.isMobile?document:t.view.containerEl.ownerDocument;if(!i)return;if(A.has(i))return;A.add(i);const n=i.createEvent("Event");n.initEvent(RERENDER_EVENT,!0,!1),i.querySelectorAll(".excalidraw-embedded-img"+(e?`[fileSource='${e.replaceAll("'","\\'")}']`:"")).forEach((e=>e.dispatchEvent(n)))}))}openDrawing(e,A,t=!1,i,n=!1){let s;"md-properties"===A&&(A="new-tab"),"popout-window"===A&&(s=app.workspace.openPopoutLeaf()),"new-tab"===A&&(s=app.workspace.getLeaf("tab")),s||(s=this.app.workspace.getLeaf(!1),"empty"!==s.view.getViewType()&&"new-pane"===A&&(s=getNewOrAdjacentLeaf(this,s))),s.openFile(e,i&&""!==i?{active:t,eState:{subpath:i}}:{active:t}).then((()=>{if(n&&this.ea.onFileCreateHook)try{this.ea.onFileCreateHook({ea:this.ea,excalidrawFile:e,view:s.view})}catch(e){console.error(e)}}))}async getBlankDrawing(){const e=this.app.metadataCache.getFirstLinkpathDest(obsidian_module.normalizePath(this.settings.templateFilePath),"");if(e&&e instanceof obsidian_module.TFile&&("md"==e.extension&&!this.settings.compatibilityMode||"excalidraw"==e.extension&&this.settings.compatibilityMode)){const A=await this.app.vault.read(e);if(A)return this.settings.matchTheme?changeThemeOfExcalidrawMD(A):A}if(this.settings.compatibilityMode)return this.settings.matchTheme&&isObsidianThemeDark()?DARK_BLANK_DRAWING:BLANK_DRAWING;const A=this.settings.matchTheme&&isObsidianThemeDark()?DARK_BLANK_DRAWING:BLANK_DRAWING;return`${FRONTMATTER}\n${getMarkdownDrawingSection(A,this.settings.compress)}`}async exportSceneToMD(e){var A,t;if(!e)return"";const i=null===(A=JSON_parse(e).elements)||void 0===A?void 0:A.filter((e=>"text"==e.type));let n,s="# Text Elements\n";for(const A of i)n=A.id,A.id.length>8&&(n=nanoid(),e=e.replaceAll(A.id,n)),s+=`${null!==(t=A.originalText)&&void 0!==t?t:A.text} ^${n}\n\n`;return s+getMarkdownDrawingSection(JSON.stringify(JSON_parse(e),null,"\t"),this.settings.compress)}async createDrawing(e,A,t){const i=obsidian_module.normalizePath(A||this.settings.folder);await checkAndCreateFolder(i);const n=getNewUniqueFilepath(this.app.vault,e,i),s=await this.app.vault.create(n,null!=t?t:await this.getBlankDrawing());let a=0;for(;s instanceof obsidian_module.TFile&&!this.isExcalidrawFile(s)&&a++<10;)await sleep$1(50);return a>10&&errorlog({file:s,error:"new drawing not recognized as an excalidraw file",fn:this.createDrawing}),s}async createAndOpenDrawing(e,A,t,i){const n=await this.createDrawing(e,t,i);return this.openDrawing(n,A,!0,void 0,!0),n.path}async setMarkdownView(e){const A=e.view.getState();await e.setViewState({type:"excalidraw",state:{file:null}}),await e.setViewState({type:"markdown",state:A,popstate:!0},{focus:!0})}async setExcalidrawView(e){await e.setViewState({type:"excalidraw",state:e.view.getState(),popstate:!0})}isExcalidrawFile(e){if(!e)return!1;if("excalidraw"===e.extension)return!0;const A=e?this.app.metadataCache.getFileCache(e):null;return!!(null==A?void 0:A.frontmatter)&&!!A.frontmatter[FRONTMATTER_KEY]}async exportLibrary(){this.app.isMobile?new Prompt(this.app,"Please provide a filename","my-library","filename, leave blank to cancel action").openAndGetValue((async e=>{if(!e)return;e=`${e}.excalidrawlib`;const A=obsidian_module.normalizePath(this.settings.folder);await checkAndCreateFolder(A);const t=getNewUniqueFilepath(this.app.vault,e,A);this.app.vault.create(t,this.settings.library),new obsidian_module.Notice(`Exported library to ${t}`,6e3)})):download("data:text/plain;charset=utf-8",encodeURIComponent(JSON.stringify(this.settings.library2,null,"\t")),"my-obsidian-library.excalidrawlib")}}module.exports=ExcalidrawPlugin; +if(e.activeExcalidrawView=i,i?(e.addModalContainerObserver(),e.lastActiveExcalidrawFilePath=null===(n=i.file)||void 0===n?void 0:n.path):e.removeModalContainerObserver(),this.app.isMobile&&i&&!r){const e=document.querySelector("body>.app-container>.mobile-navbar");e&&e instanceof HTMLDivElement&&(e.style.position="relative")}if(this.app.isMobile&&!i&&r){const e=document.querySelector("body>.app-container>.mobile-navbar");e&&e instanceof HTMLDivElement&&(e.style.position="")}if(r&&r!==i&&(r.leaf!==t&&r.semaphores.dirty&&!r.semaphores.viewunload&&await r.save(!0),r.file&&e.triggerEmbedUpdates(r.file.path)),i&&(!r||r.leaf!==t)){const e=i.file;i.file&&setTimeout((()=>{var t;i&&i._loaded&&(null===(t=i.file)||void 0===t?void 0:t.path)===(null==e?void 0:e.path)&&(i.activeLoader||i.loadSceneFiles())}),2e3)}if(i&&i._loaded&&i.isLoaded&&i.excalidrawAPI&&e.ea.onCanvasColorChangeHook&&e.ea.onCanvasColorChangeHook(e.ea,i,i.excalidrawAPI.getAppState().viewBackgroundColor),e.popScope&&(e.popScope(),e.popScope=null),i){const t=e.app.keymap.getRootScope(),n=t.register(["Mod"],"Enter",(()=>!0));t.keys.unshift(t.keys.pop());const r=t.register(["Mod"],"k",(()=>!0));t.keys.unshift(t.keys.pop());const i=t.register(["Mod"],"f",(()=>{const e=this.app.workspace.getActiveViewOfType(ExcalidrawView);return!!e&&(search(e),!0)}));t.keys.unshift(t.keys.pop());const o=e.forceSaveCommand&&"s"===e.forceSaveCommand.hotkeys[0].key&&e.forceSaveCommand.hotkeys[0].modifiers.includes("Ctrl")?t.register(["Ctrl"],"s",(()=>e.forceSaveActiveView(!1))):void 0;o&&t.keys.unshift(t.keys.pop()),e.popScope=()=>{t.unregister(n),t.unregister(r),t.unregister(i),Boolean(o)&&t.unregister(o)}}}))),e.addFileSaveTriggerEventHandlers();const t=app.metadataCache;t.getCachedFiles().forEach((n=>{var r;const i=null===(r=t.getCache(n))||void 0===r?void 0:r.frontmatter;(i&&void 0!==i[FRONTMATTER_KEYS.plugin.name]||n.match(/\.excalidraw$/))&&e.updateFileCache(app.vault.getAbstractFileByPath(n),i)})),this.registerEvent(t.on("changed",((e,t,n)=>this.updateFileCache(e,null==n?void 0:n.frontmatter))))}))}addFileSaveTriggerEventHandlers(){const e=e=>{this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&(!e.target||"excalidraw__canvas"!==e.target.className&&!getParentOfClass(e.target,"excalidraw-wrapper"))&&this.activeExcalidrawView.save()};this.app.workspace.containerEl.addEventListener("click",e),this.removeEventLisnters.push((()=>{this.app.workspace.containerEl.removeEventListener("click",e)})),this.registerEvent(this.app.workspace.on("file-menu",(()=>{this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&this.activeExcalidrawView.save()}))),this.addModalContainerObserver();const t=document.querySelector(".workspace-drawer.mod-left"),n=document.querySelector(".workspace-drawer.mod-right");if(t||n){const e=async e=>{"display: none;"===e[0].oldValue&&this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&this.activeExcalidrawView.save()},r={attributeOldValue:!0,attributeFilter:["style"]};t&&(this.workspaceDrawerLeftObserver=new MutationObserver(e),this.workspaceDrawerLeftObserver.observe(t,r)),n&&(this.workspaceDrawerRightObserver=new MutationObserver(e),this.workspaceDrawerRightObserver.observe(n,r))}}addModalContainerObserver(){if(this.activeExcalidrawView){if(this.modalContainerObserver){if(this.activeViewDoc===this.activeExcalidrawView.ownerDocument)return;this.removeModalContainerObserver()}this.modalContainerObserver=new MutationObserver((async e=>{1===e.length&&"childList"===e[0].type&&1===e[0].addedNodes.length&&this.activeExcalidrawView&&this.activeExcalidrawView.semaphores.dirty&&this.activeExcalidrawView.save()})),this.activeViewDoc=this.activeExcalidrawView.ownerDocument,this.modalContainerObserver.observe(this.activeViewDoc.body,{childList:!0})}}removeModalContainerObserver(){this.modalContainerObserver&&(this.modalContainerObserver.disconnect(),this.activeViewDoc=null,this.modalContainerObserver=null)}updateFileCache(e,t,n=!1){t&&void 0!==t[FRONTMATTER_KEYS.plugin.name]?this.excalidrawFiles.add(e):n||"excalidraw"!==e.extension?this.excalidrawFiles.delete(e):this.excalidrawFiles.add(e)}onunload(){this.app.workspace.getLeavesOfType("excalidraw").forEach((async e=>{var t;const n=e.view;console.log(n.file.name,n.semaphores.dirty),await this.setMarkdownView(e),console.log(null===(t=null==e?void 0:e.view)||void 0===t?void 0:t.file)})),document.body.removeChild(this.textMeasureDiv),this.stylesManager.unload(),this.removeFonts(),this.removeEventLisnters.forEach((e=>e())),destroyExcalidrawAutomate(),this.popScope&&(this.popScope(),this.popScope=null),this.legacyExcalidrawPopoverObserver&&this.legacyExcalidrawPopoverObserver.disconnect(),this.removeThemeObserver(),this.removeModalContainerObserver(),this.workspaceDrawerLeftObserver&&this.workspaceDrawerLeftObserver.disconnect(),this.workspaceDrawerRightObserver&&this.workspaceDrawerRightObserver.disconnect(),this.fileExplorerObserver&&this.fileExplorerObserver.disconnect(),Object.values(this.packageMap).forEach((e=>{delete e.excalidrawLib,delete e.reactDOM,delete e.react}))}async embedDrawing(e){const t=this.app.workspace.getActiveViewOfType(obsidian_module.MarkdownView);if(t&&t.file){const n=this.app.metadataCache.fileToLinktext(e,t.file.path,"excalidraw"===this.settings.embedType),r=t.editor;if("excalidraw"===this.settings.embedType)return r.replaceSelection(getLink(this,{path:n})),void r.focus();let i=this.settings.autoExportLightAndDark?getExportTheme(this,e,this.settings.exportWithTheme&&isObsidianThemeDark()?"dark":"light"):"";i=""===i?"":i+".";const o=getIMGFilename(n,i+this.settings.embedType.toLowerCase()),a=getIMGFilename(e.path,i+this.settings.embedType.toLowerCase()),s="dark."===i?"light.":"dark.",l=""===i?null:getIMGFilename(n,s+this.settings.embedType.toLowerCase());this.app.vault.getAbstractFileByPath(a)||(await this.app.vault.create(a,""),await sleep$1(200));const c=this.settings.embedMarkdownCommentLinks;r.replaceSelection(this.settings.embedWikiLink?`![[${o}]]\n`+(c?`%%[[${n}|🖋 Edit in Excalidraw]]${l?", and the [["+l+"|"+s.split(".")[0]+" exported image]]":""}%%`:""):`![](${encodeURI(o)})\n`+(c?`%%[🖋 Edit in Excalidraw](${encodeURI(n)})${l?", and the ["+s.split(".")[0]+" exported image]("+encodeURI(l)+")":""}%%`:"")),r.focus()}}async loadSettings(e={applyLefthandedMode:!0,reEnableAutosave:!1}){void 0===e.applyLefthandedMode&&(e.applyLefthandedMode=!0),void 0===e.reEnableAutosave&&(e.reEnableAutosave=!1),this.settings=Object.assign({},DEFAULT_SETTINGS,await this.loadData()),this.settings.previewImageType||(void 0===this.settings.displaySVGInPreview?this.settings.previewImageType=PreviewImageType.SVGIMG:this.settings.previewImageType=this.settings.displaySVGInPreview?PreviewImageType.SVGIMG:PreviewImageType.PNG),e.applyLefthandedMode&&setLeftHandedMode(this.settings.isLeftHanded),e.reEnableAutosave&&(this.settings.autosave=!0),this.settings.autosaveInterval=app.isMobile?this.settings.autosaveIntervalMobile:this.settings.autosaveIntervalDesktop}async saveSettings(){await this.saveData(this.settings)}getStencilLibrary(){return""===this.settings.library||"deprecated"===this.settings.library?this.settings.library2:JSON_parse(this.settings.library)}setStencilLibrary(e){this.settings.library="deprecated",this.settings.library2=e}triggerEmbedUpdates(e){const t=new Set;app.workspace.iterateAllLeaves((n=>{const r=app.isMobile?document:n.view.containerEl.ownerDocument;if(!r)return;if(t.has(r))return;t.add(r);const i=r.createEvent("Event");i.initEvent(RERENDER_EVENT,!0,!1),r.querySelectorAll(".excalidraw-embedded-img"+(e?`[fileSource='${e.replaceAll("'","\\'")}']`:"")).forEach((e=>e.dispatchEvent(i)))}))}openDrawing(e,t,n=!1,r,i=!1){const o=()=>{let e;return"md-properties"===t&&(t="new-tab"),"popout-window"===t&&(e=app.workspace.openPopoutLeaf()),"new-tab"===t&&(e=app.workspace.getLeaf("tab")),e||(e=this.app.workspace.getLeaf(!1),"empty"!==e.view.getViewType()&&"new-pane"===t&&(e=getNewOrAdjacentLeaf(this,e))),e},{leaf:a,promise:s}=openLeaf({plugin:this,fnGetLeaf:()=>o(),file:e,openState:r&&""!==r?{active:n,eState:{subpath:r}}:{active:n}});s.then((()=>{if(i&&this.ea.onFileCreateHook)try{this.ea.onFileCreateHook({ea:this.ea,excalidrawFile:e,view:a.view})}catch(e){console.error(e)}}))}async getBlankDrawing(){const e=getListOfTemplateFiles(this);if(e){const t=await templatePromt(e,this.app);if(t&&t instanceof obsidian_module.TFile&&("md"==t.extension&&!this.settings.compatibilityMode||"excalidraw"==t.extension&&this.settings.compatibilityMode)){const e=await this.app.vault.read(t);if(e)return this.settings.matchTheme?changeThemeOfExcalidrawMD(e):e}}if(this.settings.compatibilityMode)return this.settings.matchTheme&&isObsidianThemeDark()?DARK_BLANK_DRAWING:BLANK_DRAWING;const t=this.settings.matchTheme&&isObsidianThemeDark()?DARK_BLANK_DRAWING:BLANK_DRAWING;return`${FRONTMATTER}\n${getMarkdownDrawingSection(t,this.settings.compress)}`}async exportSceneToMD(e){var t,n;if(!e)return"";const r=null===(t=JSON_parse(e).elements)||void 0===t?void 0:t.filter((e=>"text"==e.type));let i,o=`${MD_TEXTELEMENTS}\n`;for(const t of r)i=t.id,t.id.length>8&&(i=nanoid(),e=e.replaceAll(t.id,i)),o+=`${null!==(n=t.originalText)&&void 0!==n?n:t.text} ^${i}\n\n`;return o+getMarkdownDrawingSection(JSON.stringify(JSON_parse(e),null,"\t"),this.settings.compress)}async createDrawing(e,t,n){const r=obsidian_module.normalizePath(t||this.settings.folder);await checkAndCreateFolder(r);const i=getNewUniqueFilepath(this.app.vault,e,r),o=await this.app.vault.create(i,null!=n?n:await this.getBlankDrawing());let a=0;for(;o instanceof obsidian_module.TFile&&!this.isExcalidrawFile(o)&&a++<10;)await sleep$1(50);return a>10&&errorlog({file:o,error:"new drawing not recognized as an excalidraw file",fn:this.createDrawing}),o}async createAndOpenDrawing(e,t,n,r){const i=await this.createDrawing(e,n,r);return this.openDrawing(i,t,!0,void 0,!0),i.path}async setMarkdownView(e){const t=e.view.getState();await e.setViewState({type:"markdown",state:t,popstate:!0},{focus:!0})}async setExcalidrawView(e){await e.setViewState({type:"excalidraw",state:e.view.getState(),popstate:!0})}isExcalidrawFile(e){if(!e)return!1;if("excalidraw"===e.extension)return!0;const t=e?this.app.metadataCache.getFileCache(e):null;return!!(null==t?void 0:t.frontmatter)&&!!t.frontmatter[FRONTMATTER_KEYS.plugin.name]}async exportLibrary(){this.app.isMobile?new Prompt(this.app,"Please provide a filename","my-library","filename, leave blank to cancel action").openAndGetValue((async e=>{if(!e)return;e=`${e}.excalidrawlib`;const t=obsidian_module.normalizePath(this.settings.folder);await checkAndCreateFolder(t);const n=getNewUniqueFilepath(this.app.vault,e,t);this.app.vault.create(n,this.settings.library),new obsidian_module.Notice(`Exported library to ${n}`,6e3)})):download("data:text/plain;charset=utf-8",encodeURIComponent(JSON.stringify(this.settings.library2,null,"\t")),"my-obsidian-library.excalidrawlib")}}module.exports=ExcalidrawPlugin; diff --git a/.obsidian/plugins/obsidian-excalidraw-plugin/manifest.json b/.obsidian/plugins/obsidian-excalidraw-plugin/manifest.json index d1faace..4c544e3 100644 --- a/.obsidian/plugins/obsidian-excalidraw-plugin/manifest.json +++ b/.obsidian/plugins/obsidian-excalidraw-plugin/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-excalidraw-plugin", "name": "Excalidraw", - "version": "2.0.4", + "version": "2.1.0", "minAppVersion": "1.1.6", "description": "An Obsidian plugin to edit and view Excalidraw drawings", "author": "Zsolt Viczian", @@ -9,4 +9,4 @@ "fundingUrl": "https://ko-fi.com/zsolt", "helpUrl": "https://github.com/zsviczian/obsidian-excalidraw-plugin#readme", "isDesktopOnly": false -} +} \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-excalidraw-plugin/styles.css b/.obsidian/plugins/obsidian-excalidraw-plugin/styles.css index aa853cf..fd2b453 100644 --- a/.obsidian/plugins/obsidian-excalidraw-plugin/styles.css +++ b/.obsidian/plugins/obsidian-excalidraw-plugin/styles.css @@ -1,506 +1 @@ -.App { - font-family: sans-serif; - text-align: center; - } - - .excalidraw-wrapper { - height: 100%; - margin: 0px; - background-color: white; - } - - .context-menu-option__shortcut { - background-color: transparent !important; - } - -.block-language-excalidraw { - text-align:center; -} - -.excalidraw .github-corner { - display: none; -} - -.excalidraw-embedded-img { - width: 100%; -} - -.excalidraw-svg-right-wrap { - float: right; - margin: 0px 0px 20px 20px; - width: 100%; -} - -.excalidraw-svg-left-wrap { - float: left; - margin: 0px 35px 20px 0px; - width: 100%; -} - -.excalidraw-svg-right { - float: right; -} - -.excalidraw-svg-center { - text-align: center; - margin: auto; - width: 100%; -} - -.excalidraw-svg-left { - float: left; -} - -div.excalidraw-svg-right, -div.excalidraw-svg-left { - display: table; - width: 100%; -} - -button.ToolIcon_type_button[title="Export"] { - display:none; -} - -.excalidraw-prompt-div { - display: flex; - max-width: 800px; -} - -.excalidraw-prompt-form { - display: flex; - flex-grow: 1; -} - -.excalidraw-prompt-input { - flex-grow: 1; -} - -.excalidraw-prompt-button { - width: 9em; -} - -.excalidraw-prompt-buttons-div { - display: flex; - flex-direction: row; - flex-wrap: nowrap; - justify-content: space-evenly; -} - -li[data-testid] { - border: 0 !important; - margin: 0 !important; - padding: 0 !important; - width: 100% !important; -} - -.excalidraw .context-menu-option-separator { - margin: 4px !important; -} - -.excalidraw .popover { - padding: 0 !important; - border-color: transparent !important; - border: 0 !important; - box-shadow: 0 !important; - background-color: transparent !important; -} - -.excalidraw .popover { - position: fixed !important; -} - -.disable-zen-mode--visible { - color: var(--text-primary-color); -} - -.disable-zen-mode { - width: 9em !important; -} - -.ex-coffee-div { - text-align: center; - margin-bottom: 10px; -} - -.excalidraw-scriptengine-install td>img { - width: 100%; - max-width:800px; -} - -.excalidraw-scriptengine-install img.coffee { - width: 130px; -} - -.excalidraw-scriptengine-install tr { - vertical-align: top; -} - -.excalidraw-scriptengine-install table { - max-width: 130ch; -} - -.excalidraw-scriptengine-install td.label { - min-width: 11ch; - font-weight: bold; - padding-right: 5px; -} - -.excalidraw-scriptengine-install td.data { - width: 100%; -} - -.excalidraw-scriptengine-install .modal-content { - max-width: 130ch; - user-select: text; -} - -.excalidraw-scriptengine-install .modal { - max-height:90%; - width: auto; -} - -.excalidraw-prompt-center { - text-align: center !important; -} - -.excalidraw-prompt-center button { - margin: 0 10px; -} - -.excalidraw-prompt-center.filepath { - text-align: center; - font-weight: bold; - margin-bottom: 2em; -} - -.excalidraw-dirty { - color: red; -} - -.workspace-leaf-content .excalidraw-view { - padding: 0px 1px; /*1px so on ipad swipe in from left and right still works*/ - overflow: hidden; -} - -.excalidraw-videoWrapper { - max-width:600px; -} -.excalidraw-videoWrapper.settings { - max-width:340px; -} - -.excalidraw-videoWrapper div{ - position: relative; - padding-bottom: 56.25%; - height: 0; - margin: 0 auto; -} - -.excalidraw-videoWrapper.settings iframe { - position: relative; - margin-bottom: 1rem; -} - -.excalidraw-videoWrapper iframe { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; -} - -.excalidraw-release .modal-content{ - padding-right: 5px; - margin-right: -5px; - user-select: text; -} - -.excalidraw-release .modal { - max-height: 80%; - max-width: 42em; -} - -.excalidraw .Island .scrollbar { - --scrollbar-thumb-bg: silver; -} - -.excalidraw .ToolIcon__icon img{ - height: 1em; -} - -.excalidraw-scriptengine-install tbody>tr>td>div>img { - height:20px; - background-color: silver; - padding: 2px; -} - -.excalidraw-scriptengine-install tbody>tr>td>div { - width: 50px; - display: inline-block; -} - -.excalidraw-release p>a>img { - width: 100% -} - -.excalidraw .context-menu-option { - box-shadow: none; -} - -textarea.excalidraw-wysiwyg { - border: none; - outline: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - border-radius: 0; -} - -.is-tablet .excalidraw button, -.is-mobile .excalidraw button { - padding: initial; - height: 1.8rem; -} - -.excalidraw button, -.ToolIcon button { - box-shadow: none; - justify-content: initial; -} - -.excalidraw { - --default-button-size: 2rem !important; - --default-icon-size: 1rem !important; - --lg-button-size: 1.8rem !important; - --lg-icon-size: 1rem !important; -} - -.excalidraw .tray-zoom { - pointer-events: initial; - padding-bottom: 0.05rem; - padding-top: 0.05rem; -} - -.excalidraw-container.theme--dark { - background-color: #121212; - color: #fff; -} - -/* https://discordapp.com/channels/686053708261228577/989603365606531104/1041266507256184863 */ -/*.workspace-leaf { - contain: none !important; -}*/ - -.color-picker-content { - overflow-y: auto; - max-height: 10rem; -} - -.excalidraw .FixedSideContainer_side_top { - top: 0.3rem; -} - -.excalidraw .ToolIcon__keybinding { - font-size: 0.45rem !important; -} - -.Island > .Stack > .Stack { - padding:0.2rem; -} - -label.color-input-container > input { - max-width: 5rem; -} - -.excalidraw .FixedSideContainer_side_top { - left: 10px !important; - top: 10px !important; - right: 10px !important; - bottom: 10px !important; -} - -.excalidraw-hidden { - display: none !important; -} - -.excalidraw .panelColumn .buttonList { - max-width: 13rem; -} - -.excalidraw button { - width: initial; -} - -.excalidraw input[type="color"] { - width: 1.65rem; - height: 1.65rem; -} - -.excalidraw input[type="color"]::-webkit-color-swatch { - height: 1.65rem; -} - - -.excalidraw input[type="color"]::-webkit-color-swatch-wrapper { - padding: 0; -} - -.excalidraw-settings input:not([type="color"]) { - min-width: 10em; -} - -div.excalidraw-draginfo { - position: absolute; - z-index: 1000; - color: var(--text-normal); - padding: 3px; - background: var(--color-base-40); - display: block; - border-radius: 5px; -} - -.excalidraw [data-radix-popper-content-wrapper] { - position: absolute !important; -} - -.excalidraw__embeddable-container .view-header { - display: none !important; -} - -.excalidraw__embeddable-container input { - background: initial; -} - -.excalidraw .embeddable-menu { - width: fit-content; - height: fit-content; - position: absolute; - display: block; - z-index: var(--zIndex-layerUI); -} - -.excalidraw .welcome-screen-center__logo svg { - width: 5rem !important; -} - -.excalidraw-image-wrapper { - text-align: center; -} - -.excalidraw-image-wrapper img { - margin: auto; -} - -.modal-content.excalidraw-scriptengine-install .search-bar-wrapper { - position: sticky; - top: 1em; - margin-right: 1em; - display: flex; - align-items: center; - gap: 5px; - flex-wrap: nowrap; - z-index: 10; - background: var(--background-secondary); - padding: 0.5em; - border-bottom: 1px solid var(--background-modifier-border); - float: right; - max-width: 28em; -} - -.modal-content.excalidraw-scriptengine-install .hit-count { - margin-left: 0.5em; - white-space: nowrap; -} - -.modal-content.excalidraw-scriptengine-install .active-highlight { - border: 2px solid var(--color-accent-2); - background-color: var(--color-accent); -} - -.excalidraw-svg svg a { - text-decoration: none; -} - -.excalidraw .Modal { - background-color: initial; - border: initial; - max-width: initial; - max-height: initial; - width: initial; - height: initial; -} - -summary.excalidraw-setting-h1 { - font-variant: var(--h1-variant); - letter-spacing: -0.015em; - line-height: var(--h1-line-height); - font-size: var(--h1-size); - color: var(--h1-color); - font-weight: var(--h1-weight); - font-style: var(--h1-style); - font-family: var(--h1-font); - /*margin-block-start: var(--p-spacing);*/ - margin-block-end: var(--p-spacing); -} - -summary.excalidraw-setting-h3 { - font-variant: var(--h3-variant); - letter-spacing: -0.015em; - line-height: var(--h3-line-height); - font-size: var(--h3-size); - color: var(--h3-color); - font-weight: var(--h3-weight); - font-style: var(--h3-style); - font-family: var(--h3-font); - margin-block-start: var(--p-spacing); - margin-block-end: var(--p-spacing); -} - -summary.excalidraw-setting-h4 { - font-variant: var(--h4-variant); - letter-spacing: -0.015em; - line-height: var(--h4-line-height); - font-size: var(--h4-size); - color: var(--h4-color); - font-weight: var(--h4-weight); - font-style: var(--h4-style); - font-family: var(--h4-font); - margin-block-start: var(--p-spacing); - margin-block-end: var(--p-spacing); -} - -hr.excalidraw-setting-hr { - margin: 1rem 0rem 0rem 0rem; -} - -.excalidraw-mdEmbed-hideFilename .mod-header { - display: none; -} - -.excalidraw__embeddable-container .canvas-node:not(.is-editing).transparent { - ::-webkit-scrollbar, - ::-webkit-scrollbar-horizontal { - display: none; - } -} - -.canvas-node:not(.is-editing):has(.excalidraw-canvas-immersive) { - ::-webkit-scrollbar, - ::-webkit-scrollbar-horizontal { - display: none; - } - background-color: transparent !important; -} - -.canvas-node:not(.is-editing) .canvas-node-container:has(.excalidraw-canvas-immersive) { - border: unset; - box-shadow: unset; -} - -.excalidraw .canvas-node .ex-md-font-hand-drawn { - --font-text: "Virgil"; -} - -.excalidraw .canvas-node .ex-md-font-code { - --font-text: "Cascadia"; -} +.App{font-family:sans-serif;text-align:center}.excalidraw-wrapper{background-color:#fff;height:100%;margin:0;position:relative}.context-menu-option__shortcut{background-color:transparent!important}.block-language-excalidraw{text-align:center}.excalidraw .github-corner{display:none}.excalidraw-embedded-img{width:100%}.excalidraw-svg-right-wrap{float:right;margin:0 0 20px 20px;width:100%}.excalidraw-svg-left-wrap{float:left;margin:0 35px 20px 0;width:100%}.excalidraw-svg-right{float:right}.excalidraw-svg-center{margin:auto;text-align:center;width:100%}.excalidraw-svg-left{float:left}div.excalidraw-svg-left,div.excalidraw-svg-right{display:table;width:100%}button.ToolIcon_type_button[title=Export]{display:none}.excalidraw-prompt-div{display:flex;max-width:800px}.excalidraw-prompt-form{display:flex;flex-grow:1}.excalidraw-prompt-input{flex-grow:1}.excalidraw-prompt-button{width:9em}.excalidraw-prompt-buttons-div{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-evenly}li[data-testid]{border:0!important;margin:0!important;padding:0!important;width:100%!important}.excalidraw .context-menu-option-separator{margin:4px!important}.excalidraw .popover{background-color:transparent!important;border:0!important;box-shadow:0!important;padding:0!important;position:fixed!important}.disable-zen-mode--visible{color:var(--text-primary-color)}.disable-zen-mode{width:9em!important}.ex-coffee-div{margin-bottom:10px;text-align:center}.excalidraw-scriptengine-install td>img{max-width:800px;width:100%}.excalidraw-scriptengine-install img.coffee{width:130px}.excalidraw-scriptengine-install tr{vertical-align:top}.excalidraw-scriptengine-install table{max-width:130ch}.excalidraw-scriptengine-install td.label{font-weight:700;min-width:11ch;padding-right:5px}.excalidraw-scriptengine-install td.data{width:100%}.excalidraw-scriptengine-install .modal-content{max-width:130ch;user-select:text}.excalidraw-scriptengine-install .modal{max-height:90%;width:auto}.excalidraw-prompt-center{text-align:center!important}.excalidraw-prompt-center button{margin:0 10px}.excalidraw-prompt-center.filepath{font-weight:700;margin-bottom:2em;text-align:center}.excalidraw-dirty{color:red}.workspace-leaf-content .excalidraw-view{overflow:hidden;padding:0 1px}.excalidraw-videoWrapper{max-width:600px}.excalidraw-videoWrapper.settings{max-width:340px}.excalidraw-videoWrapper div{height:0;margin:0 auto;padding-bottom:56.25%;position:relative}.excalidraw-videoWrapper.settings iframe{margin-bottom:1rem;position:relative}.excalidraw-videoWrapper iframe{height:100%;left:0;position:absolute;top:0;width:100%}.excalidraw-release .modal-content{margin-right:-5px;padding-right:5px;user-select:text}.excalidraw-release .modal{max-height:80%;max-width:42em}.excalidraw .Island .scrollbar{--scrollbar-thumb-bg:silver}.excalidraw .ToolIcon__icon img{height:1em}.excalidraw-scriptengine-install tbody>tr>td>div>img{background-color:silver;height:20px;padding:2px}.excalidraw-scriptengine-install tbody>tr>td>div{display:inline-block;width:50px}.excalidraw-release p>a>img{width:100%}.excalidraw .context-menu-option{box-shadow:none}textarea.excalidraw-wysiwyg{border:none;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;outline:none}.is-mobile .excalidraw button,.is-tablet .excalidraw button{height:1.8rem;padding:initial}.ToolIcon button,.excalidraw button{box-shadow:none;justify-content:normal}.excalidraw{--default-button-size:2rem!important;--default-icon-size:1rem!important;--lg-button-size:1.8rem!important;--lg-icon-size:1rem!important}.excalidraw .tray-zoom{padding-bottom:.05rem;padding-top:.05rem;pointer-events:auto}.excalidraw-container.theme--dark{background-color:#121212;color:#fff}.color-picker-content{max-height:10rem;overflow-y:auto}.excalidraw .FixedSideContainer_side_top{top:.3rem}.excalidraw .ToolIcon__keybinding{font-size:.45rem!important}.Island>.Stack>.Stack{padding:.2rem}label.color-input-container>input{max-width:5rem}.excalidraw .FixedSideContainer_side_top{bottom:10px!important;left:10px!important;right:10px!important;top:10px!important}.excalidraw-hidden{display:none!important}.excalidraw .panelColumn .buttonList{max-width:13rem}.excalidraw button{width:auto}.excalidraw input[type=color]{height:1.65rem;width:1.65rem}.excalidraw input[type=color]::-webkit-color-swatch{height:1.65rem}.excalidraw input[type=color]::-webkit-color-swatch-wrapper{padding:0}.excalidraw-settings input:not([type=color]){min-width:10em}div.excalidraw-draginfo{background:var(--color-base-40);border-radius:5px;color:var(--text-normal);display:block;padding:3px;position:absolute;z-index:1000}.excalidraw [data-radix-popper-content-wrapper]{position:absolute!important}.excalidraw__embeddable-container .view-header{display:none!important}.excalidraw__embeddable-container input{background:initial}.excalidraw .embeddable-menu{display:block;height:fit-content;position:absolute;width:fit-content;z-index:var(--zIndex-layerUI)}.excalidraw .welcome-screen-center__logo svg{width:5rem!important}.excalidraw-image-wrapper{text-align:center}.excalidraw-image-wrapper img{margin:auto}.modal-content.excalidraw-scriptengine-install .search-bar-wrapper{align-items:center;background:var(--background-secondary);border-bottom:1px solid var(--background-modifier-border);display:flex;flex-wrap:nowrap;float:right;gap:5px;margin-right:1em;max-width:28em;padding:.5em;position:sticky;top:1em;z-index:10}.modal-content.excalidraw-scriptengine-install .hit-count{margin-left:.5em;white-space:nowrap}.modal-content.excalidraw-scriptengine-install .active-highlight{background-color:var(--color-accent);border:2px solid var(--color-accent-2)}.excalidraw-svg svg a{text-decoration:none}.excalidraw .Modal{background-color:initial;border:initial;height:auto;max-height:none;max-width:none;width:auto}summary.excalidraw-setting-h1{color:var(--h1-color);font-family:var(--h1-font);font-size:var(--h1-size);font-style:var(--h1-style);font-variant:var(--h1-variant);font-weight:var(--h1-weight);letter-spacing:-.015em;line-height:var(--h1-line-height);margin-block-end:var(--p-spacing)}summary.excalidraw-setting-h3{color:var(--h3-color);font-family:var(--h3-font);font-size:var(--h3-size);font-style:var(--h3-style);font-variant:var(--h3-variant);font-weight:var(--h3-weight);line-height:var(--h3-line-height)}summary.excalidraw-setting-h3,summary.excalidraw-setting-h4{letter-spacing:-.015em;margin-block-end:var(--p-spacing);margin-block-start:var(--p-spacing)}summary.excalidraw-setting-h4{color:var(--h4-color);font-family:var(--h4-font);font-size:var(--h4-size);font-style:var(--h4-style);font-variant:var(--h4-variant);font-weight:var(--h4-weight);line-height:var(--h4-line-height)}hr.excalidraw-setting-hr{margin:1rem 0 0}.excalidraw-mdEmbed-hideFilename .mod-header{display:none}.excalidraw__embeddable-container .canvas-node:not(.is-editing).transparent{::-webkit-scrollbar,::-webkit-scrollbar-horizontal{display:none}}.excalidraw .canvas-node .ex-md-font-hand-drawn{--font-text:"Virgil"}.excalidraw .canvas-node .ex-md-font-code{--font-text:"Cascadia"}.excalidraw__embeddable-container .workspace-leaf,.excalidraw__embeddable-container .workspace-leaf .view-content{background-color:transparent!important;::-webkit-scrollbar,::-webkit-scrollbar-horizontal{display:none}}.excalidraw__embeddable-container .workspace-leaf-content .view-content{padding:0 2px}.excalidraw__embeddable-container .workspace-leaf .view-content{align-items:center;display:flex;justify-content:center}.excalidraw__embeddable-container .workspace-leaf-content .audio-container,.excalidraw__embeddable-container .workspace-leaf-content .image-container,.excalidraw__embeddable-container .workspace-leaf-content .video-container{display:flex}.excalidraw__embeddable-container .canvas-node-container{border:2px solid var(--canvas-color)}.excalidraw__embeddable-container .canvas-node{--shadow-border-themed-inset:inset 0 0 0 1px rgb(var(--canvas-color));--shadow-border-themed:0 0 0 2px rgb(var(--canvas-color))}.excalidraw__embeddable-container .canvas-node.is-focused.is-themed .canvas-node-container,.excalidraw__embeddable-container .canvas-node.is-selected.is-themed .canvas-node-container{border-color:var(--canvas-color)}.excalidraw-cropped-pdfpage svg,img.excalidraw-cropped-pdfpage{background-color:#fff}.excalidraw .pdf-container,.excalidraw .pdf-toolbar{width:100%}@font-face{font-display:swap;font-family:Virgil;src:url(data:font/woff2;base64,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)}@font-face{font-display:swap;font-family:Cascadia;src:url(data:font/woff2;base64,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XVtdpV2uXdBeAV4OXmBecl6GXpteyl74X1Vfsl/PX+xgDWAtYDVgPWBQYGNga2B9YIZgj2CcYKlgtmDLYOFg7GElYVthfmGgYa1hwmHdYgNiN2JVYoli0GL6Yzpjc2PbZINkrGUYZUBlTWVeZaNl8GX9Zi9mPGZNZrdm/mdPZ59nq2e4Z8hoAWhDaE9oW2hoaMto12jnaPNo/2mBaipqmGqlarFrRWtSa79sG2wnbFRskGzBbM5s32z7bQ5tF20fbR9tH20fbX9tzm4ebp9u+W9jb75wGnBgcKRw1HEucZRx1nIxcoly1HMHc1Nzm3P+dEJ0rXTvdR11YXWIdcl2LHZrdnN2e3aidqp2zHbwdwd3LHc/d213qHfGd/14JHhLeHt4rnjWeON5EnkpeUd5nHnBefJ5+noCeiV6T3pyenp6hXqcewR7kXu5e+R8Dnw3fHF8qnztfPp9B30UfSF9Ln07fUh9VX1ifW99fH2JfZZ9o32wfb19yn3YfeZ9834Bfg5+Hn4yfkJ+U35hfnd+h37Vf2iAj4CrgNeBDYEzgVmBgIGmgbmBzYH4gh2CUoKHgr2C84M1g/iEM4SIhK6Ey4T9hR6FQIVbhXaFiYWcha+FwoXSheuGAoYZhjCGR4Zoho+GnYazhsGGzobjhviHBYcah0yHaIgsiE6IcIi1iNuJA4lciWqJgImViaqJvYnRie6KDIosikyKbIqBio+KpIqyir+KzIrZiueK+4sPiySLOYtdi3GLhIuRi5+Ls4vIi9aL44vxi/+MFIwojD2MUoxfjGyMeYyFjJiMq4y/jNKM840NjSeNO41bjXSNjo2ijc6N7o4PjieOPY5TjmaOd46Njp6OtI7NjuGO8o8JjxqPMY9Lj2WPe4+Rj6aPvI/Kj96P75AAkA6QHJAukE6QdJCCkJ6QvJDKkN6Q75ECkRORIZE7kU+RY5F+kZSRqZHCkdiR7pIIkiSSQJJckniSlJK3ksiS2JLrkwCTDpMhkzKTQ5NQk12TcJOMk6+TvJPVk/GT/5QSlCSUNJRElFKUa5R+lJGUrJTClNiU8ZUHlR2VN5VTlWqVf5WUla2VwJXWleaV/JYNlieWOpZQlmCWdpaHlqCWtJbJluyXBZcflziXTJdgl3qXjpeil8WX3Zf1mGqYsZkFmTmZg5mvmcaZ5Zpamr6bHZtFm7icHZyAnN6dG52EnbWdyp3pnf2eHJ5DnpGey58gn2iffJ+Zn7mfxp/Wn+Sf8qACoBCgHqAwoD6gTqBqoHigjKChoLagyqDdoPKhBaEloVGhZaF9oZWhsqHJofWiCaKvosyjNKNdo2qjpaPVpAekLqRVpMmk1qUgpS2lPqVPpW6lmKXPpgamUaaXptCm+qc/p0ynfKfAp/2oPaiCqJOoxqj6qUmpjqmbqfuqB6oYqkCqdKqwqsGrOqu3q8Sr1awDrD2sjazbrSStMa1vrbmuCa4arn2ujq8ir1Kvma/SsF+wm7D/sUuxerI3smiyaLJ/sqay3bMjs3mz37RVtNu1UbW3ti22lLbqt1C3xrgsuIK46Lk/uYa53LpDurm7H7t2u9y8M7x5vNC9Nr2MvdO+Kb5wvqa+7L9Cv6jAHsCEwNrBQMGWwd3CNMKbwvLDOMOOw9XEDMRTxKvFEsVpxbDGBsZNxoTGzMcjx2rHocfnyB7IRch7yMLJGcmAyffKXsq1yxzLdMu6zBDMdszMzRLNaM2vzefOLs6Gzu3PRM+Mz+PQK9Bh0KjQ/tFE0XvRwdH40h7SVdKc0vPTWtOx0/jUT9SW1M3VFNVr1bLV6NYu1mXWjNbD1wvXYtep1+HYKNhf2IbYvtkF2TzZY9mZ2cDZ19n+2jXafNrT2zrbsdwY3G/c1t0u3XXdzN4z3ore0d8o33Dfpt/s4ELgqOD+4UThmuHh4hjiX+K14vzjM+N547Dj1+QO5FXkrOUT5WrlseYI5k/mh+bP5yfnb+em5+3oJehL6ILoyekg6Wfpnenj6hrqQep56sDq9+se61Tre+uS67nr8Ow37I7s9e1M7ZPt6u4y7mnusO8H707vhe/M8ATwK/Bi8KnxAPFH8X7xxfH98iPyWfKf8tby/fM081vzcvOZ89D0F/Ru9LX07PUz9Wr1kfXI9g/2RvZt9qT2y/bi9wn3QPeH97735fgc+EP4WviB+Lj43/j1+Rv5Mfk5+UH5Sfld+WX5kvmu+cL51vnz+g76KfpO+nj6qfq7+un6/fsY+zT7SPtp+5P7m/uj+6v7s/u7+8P7y/vT+9v74/vr+/P7+/wo/ET8WPxs/Ij8pPzA/OH9C/0//VH9ff2Y/in+Pf5R/ln+Yf6a/rv+3P7c/twAAAABAAAGDACUACUAUQAGAAIAEAAvAJoAAALND4MAAwACeJytWMtyG1UQvU7CI+GxoigqxUKVYuFQsh2HRxVkpcjyg8hSkOyELEcjWZ5ElsTMKIo3LFjzI2z4Cj6ABR/AR7CgWNF9uu9jNJJjDOWydOfevv04fbrvHRlj3je/mOtm7cZNY0yf/mW8Zm7Tk4yvkcwPOr5udsxPOr5hPjW/6fgNUzF/6/hNs752W8dvmR/XHur4bfPx2q86vmk+WPtDx++Ye2t/6vjdYPzeh79f+0TH75svP/rL/ExW7pt7Ztt8RaNDk5jYpGZiMvo/MTnN1WmUmik+I5pJaDQ2m7RSMyP6q5gOzQ3NKa1leBrQ94CkX9JnnyTrtC8jvRE9JfQpOvu0yrJDMyMtEcmzD9v0t0kebZNPD0yXbHxD/w9KOqyGjQUdq21VFiSfwMdM46mUrP8fFhMgwnM50OPZM+x6QXOMMK+cQnYZ9kM8zwh9Kx3T9xk9R+RzAqQ3CaXIPIeVI3NOawMzR7Ze0GoN1iTCh7TCGeNM5ST3tdmiv0x356W9m2ptmWcZvJqStgRZrtA8W8nBjGfwuoJYz+l7BkZIrIKJlea5CeJKSYK9GJgqPfchNwXG55jhiNnOlCQT3RurloE+R9A9RWbPSCrHGu/qwQ+L9QgR8S7rl+zIgHNamjlxMVQvlbcpnvu0J6bnKvCSihC7VWdnMYIEmZoDp5g+l2M210hZOqZoZmBWfyn2vGeE0TrJ36Vv5mBPcVmmXXy4KrZeex+ahjSXgqk5Mhe7HrIsAmu97NeDgAMcicSSw57tTqxfYu3TzByRT1B3F3EvKrBqgLxM9FOikvEMVTPDTvbWZtPqOUV9TS/kqPTNsWbGa7cVkijKzB/2twekJbe3aOUW1bjgzFGMEN/c4VzkdRW5iTDuKxN8nrrmwDTpu42c8squw2WxPtZdz8hc14gR4xRdfxN9dETfjNuQ1tukrUkZksr1nSJzaJXzIdgIbyxHIpwwF9Wr5XnPoTJTlhTj3YPWfVrtKSOnqNkE/qTQceKqv8yVMgZD7D2FRtsrt1AbxX6whdMhPCM2IM0c2qK9nMMedkaoEo5ti9A7oJOkYVqUqQYhafP/2FVgFpxe4q2waaAVOURNjJU/VUTDq4PgNDlF1QyVLbYehJ9TPSHFAvuY01qCk0f4Fim/p8rnsC96NnUVhzlshZZ8T+W4uQdIr7c6q8jvIPDQdxdZmwDRE5VNsZK4XtNDtQ4K50emp2C4255hVoYZVF4VryyL/020GTjynJ7ioO/kF1SydI2wEph1woBtdL4W7U2CDvJ6Tyo0L/yOXAc6AXdy14vZIvc1Pruk9uyNg7VKD8sQk/TpNnAe4knkxcJhCb3ifSvT/IW1mwEHf6KIX5ytE8f++4j96lYvn7dF73raV0aOfavY5pm0pX75yOaaM5+DbAlfpP9LHvw5HcFPviXJzcBXnj1jpDqzIL6IvJrgJu7lU3dfF0bk7hyz/Pf9r9h5uUPL+ZOpxggs6OnZtXiWFxkqN4gMfrKdDeROeCU9/RV8OsFZMlCOcH89w44NvSP2EdUIu051RrJseeDvEAN3/qSIPkX/zV1+Y0TKHizTzr0n17kc3U6YxbnMgmxaezYC8aKn/LRni43KIiGxD90za5ooskU7RZwHkLc3nZeQnC+9i8303mmr5zPtHJNL1MpVKiW859s3rvBdMNTSoj2M7zpJ3NWeK/hkiPGV3hliYMxYp+7WOTbhTbR8DhZPvkVUYuRH7qRT12clE/UlNbKv1StISgWIneX32vDOvfruMzD2nngWcMSiM1Z0/L07VSx9VEVdNteZy/bnwNXeF8cLeBez+7q4/a7wrKmh451idrnei1iToafJWSx9yDJ85u6sEqNU7xlk7D1gjDt+qoyz51ofTEuRi8z1tPNL8L2qrItxMwzfDmJ6Gx7jdJbePyxw3PZefwKIvv+Gc9iJVyOdFk4UkU0we7X6scz5osCci+825XvSRN9oyncof2+YQoPvlf69dwKURfMM1WVZseqslZpI4NFI+9BY8Vx9loV3Qm+pyMNVFkP9/i7lT7pVp6Z0jO9pv3h7ZuzbtX3zsB3A9wqRixShy0Qmb7/Sb2w8tg+dB7weuzflGGes9SX8Laav1Wj74+vr2r+n7tN7C0u2qdcfQZLfCo/MU2JzB2sHNFehN5oOrTyhpx2a3aGZOyTR1fU7yNRTGrPGtjmGLtHRoU/W/cxUoLuCZ356RPIt0sV7G+Y72GiQti4kO9B9SLP8ltVQOd5Rp5ljeubxnuHfzMRei3bxdxP72Bfx9IjmvdWiVwewaD07pKcO6d/X1RrpPoA+9r8KpHjccn7uqqc1YMSaj/BOeEy7alh5TOMOfbbxjih+7Ki3LcSwS+sSSwMeSCbEozp9PybbLLFHfh3BC7Z0pJJVRMjx7GA/W32EWfGsrVnmsdeyqViKH4z/E2e5i/ib+OXBMqTsRwWZbsJqB1loKPaMWtPxqhNgXwcqnB32b4fG7O+ey8Giv1ZbMQfLOGAt7CGKBvBoQrpLfjdI/sDNCOsOwLa6Iig6hd2S+WaAYR254vx9S1YbypwaECpGIXXA/vsoBOeaftaxt40nn+OW5rDuMtoGl8qoPEXFNSBVQz66DoVdVOmhen4c8Mjm8VhZ2HaeFfG11WLlLtMhRJe1Xcwg41mDdvaw69B4vd7Nq/2e9Q9nNlrDeJx9PAd4HMXVs3unKSq2LMmy3A2hE4y0e2VESNGdTrZB2Ma2cEyKc5LW0qHTnbhiW07vgfRCAgkk9Bo6IaR3CBAIpFc66YH0QpI//+7Mmy2z59ifbvaVeW3evHm7V5CJxL//XowsdzCQ9g93ui9HoXsNEy/H/XgFHsAr0T14FV6N1+C1eB2axOvRjXiDsdToRlPGMnQTep/Rg45Gx6D/oP+iaaPX6EPHol8by41+dBxyjBXGAPomPgIfiZ+Hj8JHo/uMdfgYdD8+1jjCOBIfh45HJ6B/GEcZR+PjjWPRicZxxvHo+cYJ6FvGiegB9CB6Dp+Avo1PNDYaJxuD6CRjCG3Ez0cnG7aRwicZGfQEGkRDRtbgeKNxCj4Z7XP9esg4FT2MB/EQtrCNU2gGp9F3ccYYxVnM8TA+Bb/AOM04HZ+K3m+cgW5GtyAb/R6lUNrYamzDL0QZ40z0FPqXsQO/CL8YvwRljbOM3XgE5xBH3zPORt9HsziPfoBHjVfgAh7Dm/BmvMWYMqYNx9hnzKBhdIoxa5SMc4w59AJ0KvqtUUafw6cZFXw6HsdnoBcaNfQLo240jKax3zhgHDQW0SgqGYfwVrwNb8dn4h1oDu/Eu/AEPgvvRmX8UnQO3mO83XgHqhjnoXl0qXE+KqAx9H/uAlaNdxrvQpvQb4x3GwbajBaM9xjvRTV8Nn4Zfjl+BX4lqhsX4L3oXPwq40LjIlzEk2gLOg3907jYuARPGZ9ApxuXGpehcfRD1DCuQPvRATyNmtgxrjauMa41rkNn4H3GDWgrnjFuRNuMm4yb8axxK3oSbUdnGrcZtxt34JJxJz4HHUQ70KJxF3o1nsNlPI8ruIpegxfQIXyu8WVcw3XcwE2837jbuAcfQJcZ96LXolvRTvQM2oUmjPuM+/FBdJbxAHoa/dt4EC+i84yH0G7jYeM7+BB+NXopep3xffQG9Eb8GvR6/FrjR/h1+PX4DfiN+E3GI8ajxmPG48YTaA8623jSeMp42vgFehl6Ofqd8Uv0Wfxm49f4Lfit+G3oFcbv0S+NZ4xnjT8YfzT+ZPzZ+IvxV+Nv+O34HcY/jefQJejj+Dx8Pn4nfhd+N34Pfi9+H34//gD+IP4QvgB/GH8EX4gvwh/FH8MX40vwx/En8KX4Mnw5vgJfia/CV+Nr8LX4Onw9vgF/Et+Ib8I341vwrfg2fDu+A38K34k/je/Cn8GfxZ/Dn8dfwF/EX8Jfxl/BX8Vfw1/H38B343vwN/G9+D58P/4WfgA/iL+NH8IP4+/g7+Lv4e/jH+Af4h/hH+Of4J/in+Gf40fwo/gx/Dh+Aj+Jn8JP41/gX+Jf4V/j3+Df4t/h3+Nn8LP4D/iP+E/4z/gv+K/4b/jv+B/4n/g5/C/8b/wf/H/4vwQRg5gkQZKkjWBCCCWMtJMO0km6yBKylHSTZaSH9JI+spz0kxVkgKwkq8hqsoasNd9nvt/8AFlnftD8kHmB+WHzI+aF5kXmR82PmRebl5gfNz9hXmpeZl5uXmFeaV5F1ptXm9eY15rXmdebN5ifNG80byIbzFvMW83bzNvNO8xPmXeanzbvMj9jfpYcYX7O/Lz5BfQx84vkSPPL5lfMr5pfM79ufsO827zH/KZ5r3mfeb/5LfMB80Hz2+ZD5sPkeagX9aHlqB+tQANoJVqFVqM15nfJUeRocgw5lhxHjicnkBPJ88lJ5iPmo+Zj5uPmE+aT5lPm0+YvzF+avzJ/bf7G/K35O/P35jPms+YfzD+SjeRkMkiGiEVskiJpkiFZ9Hn0F/RX9Dfzn+Zz5r/Mf6NlaClai9ahG1ASXYGORJejr6G3oy7CESbDqAe9GHWgTvRK9Cr0IvQScgp5Aeomp6Lb0O3khSiXSKCvo2+gO9Cn0J3o04kkug5dj76IvoTaUHuCJGiCJdoTHYnORFdiSWJpojuxLNGT6E30JZYn+hMrEgOJlYlVidWJNYm1iXWJ9YkNiSMSRyaelzgqcXTimMSxieMSxydOSJyYeH7ipMTGxMmJwcRQwkrYiVQincgksgmeGE6cknhB4tTECxMvSryYvAglyIvJS8gIyaG3kDz6AiKJMTJKCuhq9HcyRjaRzWRL4gxyGjmdjCfOJGeQrWQb2U7ORG8lO8hOsgt9mEyQsxIvJ7sTr0zsJS9FS9Cz6A/oLrQBvRcdgdajC9CH0AfRNaiIrkQj6AOJIrqY7CFno4+ii9BV5GXowoSDKLqbvJy8gryS7CWvIkUySabINHHIPjJDZkmJnEPmSJnMkwqpkgVyLqmROmmQJtlPDpCDZJEcIq8mryGvJa8jrydvIG8kbyJvJm8hbyVvI28n7yDnkfPJO8m7yLvJe8h7yfvI+8kHyAfJh8gF5MPkI+RCchH5KPkYuZhcQj5OPkEuJZeRy8kV5EpyFbmaXIM+Q64l15HryQ3kk+RGchO5mdxCbiW3kdvJHeRT5E7yaXIX+Qz5LPkc+Tz5Avki+RL5MvkK+Sr5Gvk6+Qa5m9xDvknuJfeR+8m3yAPkQfJt8hB5mHyHfJd8j3yf/ID8kPyI/Jj8hPyU/Iz8nDxCHiWPkcfJE+RJ8hR5mvyC/JL8ivya/Ib8lvyO/J48Q54lfyB/JH8ifyZ/IX8lfyN/J/8g/yTPkX+Rf5P/kP8j/6WIGtSkCZqkbRRTQilltJ120E7aRZfQpbSbLqM9tJf20eW0n66gA3QlXUVX0zV0LV1H19MN9Ah6JH0ePYoeTY+hx9Lj6PH0BHoifT49iW6kJ9NBOkQtatMUTdMMzVJOh+kp9AX0VPpC+iL6YvoSOkJzNE9HaYGO0U10M91CT6On03F6Bt1Kt9Ht9Ey6g+6ku+gEPYvupi+le+jZ9GX05fQV9JV0L30VLdJJOkWnqUP30Rk6S0v0HDpHy3SeVmgVPQ8x9A70NvROdD5dQO+i56I3J1+TfC3ai36F3kRr6Ku0nnwDbdAm3U8P0IN0kR6ir6avoa+lr6Ovp2+gb6Rvom+mb6FvpW+jb6fvoOfR8+k76bvou+l76Hvp++j76QeSlyYvS16evCJ5ZfKq5NXJa5LXJq9LXp+8IfnJ5I3Jm5I3J29J3pq8LXl78o7kp5J3Jj+dvCv5meRnk59Lfj75heQXk19Kfjn5leRXk19Lfj35jeTdyXuS30zem7wveX/yW8kHkg8mv518KPlw8jvJ7ya/l/x+8gfJHyZ/lPxx8ifJnyZ/lvx58pHko8nHko8nn0g+mXwq+TT9IP0QvYB+mH6EXkgvoh+lH6MX00vox+kn6KX0Mno5vYJeSa+iV9Nr6LX0Ono9vYF+kt5Ib6I301vorfQ2eju9g36K3kk/Te+in6GfpZ+jn6dfoF+kX6Jfpl+hX6Vfo1+n36B303voN+m99D56P/0WfYA+SL9NH6IP0+/Q79Lv0e/TH9Af0h/RH9Of0J/Sn9Gf00foo/Qx+jh9gj5Jn6JP01/QX9Jf0V/T39Df0t/R39Nn6LP0D/SP9E/0z/Qv9K/0b/Tv9B/0n/Q5+i/6b/of+n/0vwwxg5kswZKsjWFGGGWMtbMO1sm62BK2lHWzZayH9bI+tpz1sxVsgK1kq9hqtoatZevYeraBHcGOZM9jR7Gj2THsWHYcO56dwE5kz2cnsY3sZDbIhpjFbJZiaZZhWcbZMDuFvYCdyl7IXsRezF7CRliO5dkoK7AxtoltZlvYaex0Ns7OYFvZNradncl2sJ1sF5tgZ7Hd7KVsDzubvYy9nL2CvZLtZa9iRTbJptg0c9g+NsNmWYmdw+ZYmc2zCquyBXYuq7E6a7Am288OsINskR1ir2avYa9lr2OvZ29gb2RvYm9mb2FvZW9jb2fvYOex89k72bvYu9l72HvZ+9j72QfYB9mH2AXsw+wj7EJ2Efto2zNtz7KPsYvZJezj7BNtf2WXtv2dXcYub3uOXcGuZFeh96CfoTx6N3oU/Qg9jn6Kfo5+jH6CHkGPsavZNRhhg13LrmPXsxvYJzFhN2LGbsIduBN34SV4Ke5mN7NbcC/uwyOTNWe/0yGH4lSz4SyR19PVxqRTrh4A0kytuN9ZKq9nq9W54mTVn9Yolaed7pGpUm2qOb+v7BwUcnpDCCUszCQk9oUQvtgwl5DNRpSA9hGfi4zMF6dq1QoZqc5UK85c+0itVJkRqslIQYwd+UBQe96VUZyacioNPDpVdCe6Q61abOCCcAIXBLK7oLtRaOFGQXej0MqNguZGe8E3gRV8jwqBRwXwqCA9wgUxDW8SlnVsCsR1bpqqzs8Xpaz2Tb7Y5ObJYq1jc8BobjkNbxH+sS2+xi2Bxi2gcQto3CI0dpwWUnV6SBUeFzHB48KizvEQKTnuysdbJX2rpG8N0ROFygzb6mkuO/saeJswqnubHu1tLaK9TY/2tlbR3qYnzTbf4W0+V5t7Wau0i1ehsEtchjlrFaFkibj0J0qKEOxOabqJVmvOl4vNBtkGIdwmQ9ixrV4u1mdlHHbAIMOxIxzJnTJDd4YivTOyqE5tvliZnizX23ZOzR4oJne5S4t3CUl015QzXSqXi527wiIn5EJP+N5MBH5PCL8nAr8nIn5PBH5PRP2eCPyeiPg9AX5PSL/bJrzthydkyu6W3u0OvGO7p0tOzamX6ni3UNSxJ0TcoyzBewSxfU+Qo3ukIrxHij5biG4/20/67i0Cs/e0jeXqVHnr+OiSvEAIcPv46Uu2RsFtUXBnFDw7AuKirI/FUH0sRutjMVQfi1p9LIbqY1FP9WKLVC/qqV5slepFPdWL/kIWg7gVYYGKUB+LQX0sSlc6pkL1cSqoj9OyPjqyMDqyMDq6/U4L+x3dfqeV/Y5eGJ2gMPqBbQ/iSBxwxYEyJUPaVvc2Bp6R5XEmtJNmwjtpJiiPs155nA0YacmllZ16HZfk3in52ku+drN0DimBASUwoCQMoOfA9I5zQsrnQso752ZqjlMpuzu5NIXLshyUZTkoh6tn2auecmt2VIoL1XqjVl2YdXBF8lbCldRxK2nFr6RVWUmr+vJUWyxPVV+eaqvlqerpVfWjUg0qSlVUlGpQUaqRilINKko1WlGqQUWpRipKFYJchUpaDVXSGgwyHLVw2avLqNVDS1AP0dvK1cpMPdnwymdDls+GKp+NsJymTIGm70IzcLYpnG0GzjYjzjYDZ5tRZ5uBs82Is01wtgnlsynKZ1PWuAPSpQOhCnnAL58HZPlcDBEX/fK5KMvnYrB3FqF8LkrRh2T5PORvina52zcWy43ukqyk5/iVdCpaHCtRsBoF61HwUARsP7hxvllulBbKi92V5vxe+NtYLs0U+0IIHzngAc3KtFPbu1CsuXvITXZBaD+w1/0vLpOV+ep0cuSkqcW2nOO9niVeN3mveNM53tC5adZpLjSatYpHGRX0Ld5r+xZZtAWi6k04e1YAZ0tUSfCU6u4CNuSlz3560WM/XchvK5TF67x49ZQkt3mX2yWxJl7r3usuD5OccF/YhJLaVtjnvW4WAvNCP95VF8POWQ9Jd85OiQsyekiQO3ZW9zXqpRlPU8fmYm0arskep9b05o0Ls/BWOYweEloLXiQKXn7X6s60h9ni6d3jOdl2msdCdtWl+1ua4lVYNOqH0KtHcx6w1I3StFN3M8ddGRdecnoxAhYqYbBzwp1YLM3Mes72+IAvbcnmyOyl+ahwsnNWON+xveim0eycjIhX9cWKyMz2Lre5u7smHGuf8LFdYrVFAuY27egSCxVA+0JQ0pPXNin8l0s8I6I3I/2fCafQtKCXRAqVghQqiRSSa9R2SKJECpWCFCoFKSRcwXMyhRyRQo5IIUekkCesbUESRQo5IoUaYjG9BWJNP4UckUIiTnhKplBDplBdplBdpdA0pFA9lEKzoRRahBQqy9ypyGFappCIhBNOIZE8i+JVcJIGpFBJpFBJWDTthzBIoUNaCs1FU8iJplAznELNeArNRlNoSkuhOqTQQiiF6iqFSkEKVYMUagYptD+SQjMRaDoMLZGx9YmHIpBIBQX1BCkRQqnU8OcIU33IiWTvQoSzETFELr4PyiRQYLdKBoXoDSWDjwslReBCMwxN+jp27si1jZQXZovJnNMotm0quicqKSzUS+65mzzbRSUKLnrXrHuV3OIeOm71XFgouneS85PTRfOMprm1ab605N5GlbyYm9tLiR2z1badpZn5YmJXsUkmpKjE9tlSIu/+ba+X2oW+RrVSrXeCJgFQV5O4YJ4iSQe5EpgIMbdvm3dmgMljV+frUmBSMDu9WNq5OD9ZLbcVhZuTnpsznptuLSg3isQBZw95znrEhnC25Dk7J5wtS2crTfNgyW1zhEWJ2my1ve65ua9UKZbbxGWi4XrcBI8XXG+n3D8XbKt6xrKS71YpZPGyMCDJzZCjS5tRh/o0WM6ohuLUXvVD014MQu2EQ+2oUM+p8LBDTq260Xvp9F5KlX1OrVStdbjtjX/dOODjuxqzbmusoM59Va8DUkBpfzCnXjroz6m75afiQ45XCPxJLt6fJG2ZrlTnqateXri6xUW7UCwumacVrlyVks/VJ/mEMnkpNElGT428EjrcLqUmdIgLT4d3ATq8S6lDXnk6BJ+nQ/BJHeJS6hCMQod3JSJZby4EMQoAV5gCvBipaxkjHxJS/UmeYAUw12pBne0U1srreocnGK47hSwFOAen3ESerjYnyw51W8ta2ZV2zLzbS7s9rdudLbhr2/DuMSszZffesTg15zS8hnne7TKPlWw1T9T/4mv3ytHsonvrU+lya2TpkJtvxbJbmrtEK+g29m6Nnix3ndusNvzDqGum6bbzzrzT8MxY4kNCW4+UtlcOom1cGUGFKauiFPfmreiqEaSlgHNtEXBvC57VUVyE1g00735RIJaHEAG2H7BF935G3mUKdI8XJ8dzzzdglUAJH72medINhVuyZUMNUY3wrwFkyxk9Iiemw7FQKDnIwEVQYcpAlOKc2yyWBWFFlOD72QeIc5tuY1CqSpXLYtO7p6puydkrXmV8QojDoWPTA0SPREQWVqJ8ywbqjlsLBc6/knPlBtgrBxmQCCockGWKEkQijAnh+1QIwtN7fWTIRx8XCVrAGsjsL9Zd90r1ub3qQqDXx9BR+nIfHQ5Qr48VN+TS8SB/tNuzMMVPWrk7NAokqNQcooU8DmFDUR8IoSOhWBUiaAkeVhDEKTwhKDDSa+FsND7dEheKcwgRzjKJjmx/iQoi2B9ChNDrAjO8natbtSpE1kisWHFrYtkpFbtUULyHT3OkMllfcNehyyvXdcddLffkriUni7ONpPcghIl4eyFITrtTkk7TPcG9l6mm2xBX3BZ6punOqZTIbG1xf6VUTMyVFpLlYq2ULJdqxQ7vZVezNuc2tW3zxUqx0VYpuii84Cpz2yB3qLbVvDPDfV1wnA7xusVtP4oV9w7FOdcpu/c1lRkHN5oztdJc4kC1smSy6VbwRtXdEJ6tXdOl/aW6648IU4cb59L+Ytk1zVkRnBGed85BV5LH2O6eMN69WXmy4V82FnrK1ZnSVLHsxmkHHB2dHtW9mPLCldg2O89Klama4x1FbaIjancb9VnvGU2x7DZmI7Va9UC7qKDikk1XD1TklZfK4mqJd7XDZ+loLowqpqXyerJYdwTcW64ecGrbKk5BHLE5t5+e61O4M92ou7YJZL9A7vKOaclaF+glAr25WN4nwOUCHHPP7zDTimAuiKyHZO70TvgwO9vnxl5Kby4shKT3CjBqbI/naxTVC6iw+cs9XMx6ETLw2b3S7e73J0XMFrJiVss1kQaIy6hRMlDjSt9SAe7wp0hPffKxPjhSmR5XM9V1MG11jC+gRWRMeNcyJUICBd9x/5svELi06RNDyv+X0BgtLrS97t09lz24Q1zKNo2J6+liba5jsuwW6nypNlV2Og7MlhoOXLv7fwauB7wVkWni8u4OmFaKlWhJCSWuRgklXZTSG1EjcX1RDRK5PBypgNUPdEjmGh/p5ti0W+QiRD9pWhDXBinUihqY0ILa49aehleIxtxGVaI6p6uNhjMtAbLPraXOokO9Mlh3L2Tkc6IodpUqonRJqAegkPTVfgS3xGl+3OO0Tn/eSG2q02f0gCBHa1NdodxyoSAM/ixg7BSpM1oqzrv3mp3CAwD6IisJyOXRpQRsr3sI6Lj+STdW1fkYq9C3pbI7pKlH4La7x5cbLLf614rzPcKSCGqZ4DoLFmWHexi07/NuIaa9Syb4vatl4irMJnfHTvfcr8EayeuVck7VO6Gn8+69jRtqSZHat1RywURYegn0BQealxwwKZwvwOceTXV3lzamZgPkerE0XnAbVbESIqQ6XSCBQdZdRV/jnsnipGslvFv6Ol/0EdLhABHdoGBndFUlcoOfT6OgUGM4Isiqw3BsUCHJlcThXZkZd8//3cESrBHWTejbO0wc17e3JK4NiJENHKZOxLa3pC6T9TNkB2BCpveHeYLo9YcZA7Rb9gVqV60k7pd7an5dU6hlXhMSxciTNYRxxQiFUTERlBATxZRVtVSYfk3M7lJjdrTaWNFcGA+vvSIPNBd2RNbflxx4sb0qWrBu32RALAssDLOEEX0QGxEuJXpFIDqC7/ejFEX7eiPoPnC0heg4vt+PXFx0Cyna8eTjw01JCN8f6l3C6FDPEs6PQLqPCgQHK6tk+hhfnMKsmqweHBUPe0T/Wpne7JemPp3kzVuuI4XGXh8bTB/wcRMLEbk9UYIntTeKEjKX+ThVjNfFMBG5A63InvSVrQhCxwZBOVCR1Ii0naUgPCEGT54krdZJQqKkrQPaZqe4fzEidtxjGtDInlBBWNWCMLEgSCs1ktAmKKtbUWDWBo02saCZoiwdhzYyIIspAxpZFACPsKoFwRXukVZqJFkcPMrqVhSYtUGjhS2NMMgIR0yVS7BKZxBnjyCt1kny1BG0NS5NKIC0dm8+A8mr4kSVQ50B6UBlZRiI2NarUTyj+jScsKZHIYO5vgqVxT7gCfImiZnrFUUcU80F3Ym1LenKjy5FFbL8aLgFIiZoVZyopLQr0sTCiuAyEollEbznRX8UI9fkQKUnghZmdSuU0rdWR0RUrWhB9RQOtMD7IZTp0nofrQV6hOan6+pWVJh5RCuaUh+RHdkVviGrW1FhzxzRiqZkCw7lF0yIWe6twDj09aEEXRFHi3l9Iby/ist1pGD1saq3y3vt5tE61u/ddlWDZqw1lzzbqn5Dt8bnOszG1Yjhjevn2sowENu4YYrauGGcv3EFMrpxBUptXB/wVPibbb2i/I+NG6eHN25QBPxoHG7jasTwxh2XOdUfXCozPT9XRNGR/RzgPed6Ihh/446H03KtjohtXJ2qNq6O90MY3TDRY3OtoodpkY0bo4Y2bowW27jBMRyS7W/cGDW0cWO02MYNb3Xdcu/cnlg4bN8yECUHXcvKKCHUs2wQFKVMuBFtFdZEGDTiqggxYmp/jOTH/nBlaUWc5rczsDwxGwX3mgiDRlwVIUYWqz9G8tcwQEfzbEWcJvByZQ7bpQxEyUGPsjJKCHUoR7kUlRyHXfF1rZiCdV/fihxa/SND9MMs8ZoWLP5qrm1BDNYtLP0wi7OmBYu/DmtbEIOIh+Nz2Liva8UURH99K3JoDTaot6F3eJ/OcKbHytWasLzWkM/o2vY7lWY9OV+s1ZfUF4rTjrzdbJYaXVPl5qQPLZkVcxTYPS2fYfkINjXrTM25YuYGaodRxRZci7yHh9N4qlhzqvvwfKnifXC27ky5oljZvRmt7SzNVHClOe/Uqsx7n2jeEyWf1m12DnrHar8E/DgVyuXSQh0eAY0HT35DCHhSJRBniCcZ8AhuXRjl7hB1e5l3Ko2aEyGH7z6BHBY4Xj3kvU+0PoSK3NTClDUh+sSCRuySDwRdwPNzWfBMC6wNYUBdX+ThIETCRy7Wg0c1y7XnkjJG/cETvVwoxH3+A9bQw6IB/7ZcI/SEH4PCQ2RAhbhWuCj/eUsILx++qrWVQGxt5VOv0FIKRGQpwyiITpd8mqriGTwSVNGLPDNV0VPIcPQGivNuJ1cvVqb3+lfy/XnvbdDQ5xJ6PTj47IN8d1fh1OcbBLZTYOHjDwMAiL/wO7M9Chl6S74V35IoT7dO752ulsv6nIVys77Xe5EsPhjglgkwPKlfvp2sf3RhBbzLrH+uoFt/97k/hAihB8LoSADiqFURVITUJ0nap1YkUn97vFcJCC3f6iguaomihT50oVChN+0jqKhxrSxerSEjH/jRaYGaNTop8na+8D8kaEUIEcYPhPFhCcvDBD+QSwU2cH+dgGHN49J7BDnyGYVVEVREZZcgqQ2xTEE+ZnkY0wIbD4BM+ZCjrfaAIPj53u+D0U/hSEf96C8P4BB2rY6NyFgRokayIoT3Iy3djxsafD7LB8MR7wuwoTwPkMEHnGAdIh/jWqMhI/rX60RtsgxR8FGRFQEcrR8hEeFcCUtuqM/7+KhQoTmMfasOb5pUKb+REq6jbh33vmOyF0ZZlb2PqZw036zLO9VysTJ3klu6vTfcuqarjfqQgpYIyFLgUgnaCu4GOKUQyxQirTA9PiajUL0BKqtwfSEcb8HI4/KycbZsCzYesy0TY8rEZWVayMrEZWVjTNk4E9fjldZZ0jGb0nGb0i1sSsdtSsdsSsdtSsdsyugsmZicTFxOJiYnq7NkYyxcy6eUxpDS45OKxScVj0+qRXxS8fikYvFJxeOTisUnpccnFYtPKh6fVCw+KT0+qVh8Unp80hpDWrclHbMlHbclHbMlrduSjtmS1m3JaAwZXUYmJiOjy8hqDFmdwYdl/bGjZFvLF1vPFzuWL3Y8X+wW+WLH88WO5Ysdzxc7li+2ni92LF/seL7YsXyx9XyxY/li6/lia/li6/lix/LFjueLHcsXW88XO5Yvtp4vtpYvtp4vdixfbD1fbC1fbD1fbC1fUlFySotHSo9HKhaPVDweqVg8Uno8UrF4pPR4pLR4pPR4pGLxSOnxSGnxSOnxSGnxSEfJac2GtG5DOmZDWrchrdmQ1m1IazZkouSMNj+jz89o87NRclYj+6DoX6wI0YrWD0urH5ZeP6xY/bDi9cNqUT+seP2wYvXDitcPK1Y/LL1+WLH6YcXrhxWrH5ZeP6xY/bD0+mFp9cPS64cVqx9WvH5Ysfph6fXDitUPS68fllY/LL1+WLH6Yen1w9Lqh6XXD0urH1a0flha/bD0+mHF6ocVrx9WrH5Yev2wYvXD0uuHpdUPS68fVqx+WHr9sLT6Yen1w9LqhxWtH5ZWPyy9flix+mHp9cPS6oel1w9Lqx9WtH5YWv2w9PphafXDitYPS6sfVrR+2BGiHc0HW8sHW88HO5YPdjwf7Fg+2Ho+2LF8sPV8sLV8sPV8sGP5YOv5YGv5YOv5YGv5YEfzwdbywdbzwY7lg63ng63lg63ng63lgx3NB1vLB1vPB1vLBzuaD7aWD3Y0H1IRYirqf0rzP6X7n4r5n9L9T2n+p3T/U5r/qaj/Kc3/lO5/SvM/FfU/pfmfivqfjhDTUd1pTXda153WdKejutOa7nRUdyZCzETnZrS5mejcbISYjRIDSLwRUyyfJL6rIz+qF0F1Bb8GM1+dXiJ+scT7LQJn2gW795Vq9UajWnGmZsW3ezrVt3pdvklPk/yRDw9i4hvm4kr8Mod31R3+TRIPsST4VRHBKX4bRFyJX0fxrqj3SyUCJZ7/eFft8gvzQqf/yyMe1Bcy10dS7zdRvAvvk8/iZ0s8YGnot1g8uAN+pEXIlz+S4l0uCzu4capYF0UumCZQS3xXJej7K8DlutMC2xv1XE703ZegHwMBdqlASKIfDQEuDUIirYzERc5XcRDQgHywFn/stiywHn5LpT/qj0K3yW9si1epIPoVb9/6k6YWl4UBwZwY37KJNCulwcHBYW8cKowU5JjLwDgIowVjCvjUmIcR+Ec4jCMwwvwRNR/k54E/D/Q80PMgNwdyciAnJ/QMDlmKD/B5LvF2BsacHFNpOQ6PSr5R0DMKckdBzijoG1X2gD95sHMU9BQUP9BHgV4YlHoKI3JMSzusIdAzXJB4PibHjAV0JRf0F0B/AeaNgb0FxQd6C6B3DOaNgT4b7BtT8R+DuGVhHILRhjENfGqEOI0A/4jKhxyMMH9EzQf5eeDPAz0P9DzIzYGcHMjJjUp708Ownoof6Plh8CcL66lGWP8U+JtV6wF6R0HPKMgbBf2jyj7wLw92j4K+guJXeQL0whCsK+RTOgvrBnZnbICVHNBXAH0FsGcM7CsoPtBTAD1jMG8M5Ntgz9hwnzuOZLMp9SffcNGQPsGbZQ1mZZalhgZhHILRglFanRqEcVjxpWBMAx3wg2p+BsYsjBzGYeAbBXgE4DzAORgVrPgKMIK9FuizQJ8F9lrKXuC3wE4L7LTAHgvss8AuS9ml5IN+C+yzwK5BxafsVv4rPWDvIMgfBH2DoGcQ5FjKPtA3CPYPqxHmD4OeEcCPwLwc+J8DfA74c8CfB/oo6C0AX0HBhaWwjurHWgDORWHLp8t5Nsi1Ie42yLUh7mmVJ4oOcbEhTmmYn1Z0sBt2bcoG+2yIcxriaYNfaVgXqNopW8GKD+JjQ1xToC8F+lJgb0rZC/wpsBNOgVQK7IHqkUqBXSlll5IP+lNgXwrsSis+ZbfyX+kBe6H6p6BauD00jCAnpewDfWmVHyrOMG8Y+EcAPwL8OfA7B/gc8OeAPw98o2BvAfgKCh5bCusczQvb1mAtj+yMBmc1mGvwcBROj2r0EQ3W8tQei8Ipzd6UZk9K05/S9KfyGqzpTxU0/UPqZ45E3Oxhuc62PBUHbYizDV2JLbuXQVueNtYgH4RxCEYLRhvGFIxpGDMwqvkcxmE5ZmXeD8rT1B0tGEFeFuRlQV4W5GVBXhbkZYcZ/KDLZFli5A6zspk8jDKTB2U/YA3CiWBnC4AHz6DSFuTOtAZz6S7xAYZ5t2dvFGuLyUKzVpUkNSUHQciBsUqFbAndcQTGPNDBiRwEMQf8I+BMDoIzouYBfgTkycWy4Mh2Rxkce2Ssy+2Dg58FENgheYRYFpR61yFS9L6u31xoF6P4hBETl943v+SV92UveTVZbcwymDBd6fSvJuuOkJuGVEhDKqTdVHCp3vexAU7DmIEx2wbUhRCXTESXOgZjAcZRUt4XlpaDcQTGYVJrhOWAtmHQJguPO3IYh2GE+cMgbzgP4yiMoH94jJQb4gvkbeKVTM/JUVDzY3hKfslZgAUwXvbk7gihGYXQyB7OHcE42FXpUXB+FIwfA3hMwcA/Bvx5MDIPRufBqXyhvbrgVOTvTbBSZX9wFTZzFHwfBd8LYG5BmQtiR0HNKMRiFNzLgzmyRbZysolyRwVzGJVZEPsc6IG8T48U4JvJNWeqAShQOTLGJGmyehAwahLEUp4grhJwZgRiNgIxg02WHoGYweZKw+ZJj6h5KgjAVwC+AvAVgK8AfGPgxBjYMwb2jMHajik+COIYeDRWII1aqTjTXIAgZCQ8XYEgqeCAnBzYk1NrDfoKILcA+ALIrTXkWN4H88COPMQDilM6pxYDFjUP9ucUH/idU4sN9hSAXgD+gsKrXIV5YzBvDOI2BvoysB5p8CsN89Lgdwbmp8GvNMxPg99Qx9MZ0JtR88CutJIPdBvoQ2CvBXoHwe8hsDMF8i2AhxQM9gyCPRbgUyAno+xX+kFPCvhTIC8L62CDXUMwDgJ9EOTCSZbOgn2DSj/Mz0I8BkHfINiRBT4b+IYUv/JH+Q16U0C31KjwINcC+22AbQWDfzbYkVKjWg+wOwP8GeU/rEMW+LIgJ6viCeuagvlwsqctwA/B/EGAB5U8iH9W4SF+g2AXdArpQeAbBBg6iXRW+QV0KFrpIcWv/AX5luJT9oI8C+y2AbYVDP7ZsD4pNYKcDOhLg7y0ooN/NtDh+E6rOjek8hfwKeCzVdwUH8izwA9oEtIZtf9g/dNqfwKcAf602h9q/yh7lH1At0DukFp30J8B/+Wdi5UZGsb7nPli2Ul6L23iqwNJ7xsDbeKLAgS+HyCYs7BJsmDsECTxECT/ENCH1MkDTuYgaXKwWDnYDDkwMgcnV06dXFAUcnBC5aBY5qA45KAI5CCoOVjsHDibyyv56jACOyCJcnmYN6ToIB+KSQ42W25I2a38AXsg2DlL6QG7hgod8JFD7+OHAsdhY3AoKBw2PIdCwaHgcPCNwwJyKBQcCjeHws8hATic+nwYRrCBwwbn0PTwERih8PE8jFzpBTsgUTlsdA5NDYcDj8MBwaE54tDBcVgrDjnB4cDmcMBzKMwc1pZz5XcO9MMIhZJDYeZwYHM4MDlsDA7dEYcOkcMacNgoHBoCDg0Eh8LKISc4V3phHeAA4FAIOTQMHA58DgcXhyaRD8MIucXh4ONw8HJogDgUYA4HNedq3dMwjoIdMEJB51AAOTQoHBoNDgcwh+6PQ0fMIVc5FHgODQiHlo3DwcehOeVc6QU74EDhUIA5NLccGg8OBymHJphDJ89h73I46Dk0IhwaPQ4HF4e9y7nyexj0wwiFmMOByaFh4dDwcCjAfBRGuFPgUAM4NCgcGkMOjSSHws6hCedc6YV9CAcBhwOPQ+PIoQvm0OBwuFngwzBCjeBQSDl05xwaYQ6NC4fGkHO17y0YMzAWwB4Y4YDi0GjwMRihIeRQsDl0/RzuhDjUPg4HPS/ACHelHA5wnoeRK71gBxyQHA5mDjc1PAcjNHAcbo443MFxqIkcGkhegBEafA4HMYfazrnyewT0wwiNC4dGikODyuHunEPDyeHuiMMdIofaz+Fg43BDwOEGgkMjxKHWc670wjpA48Sh8eFww8DhqQGHxpHDTSIfhhHONA4HMofGm8MNEIeDmUMDz7la9xSMebADRmhkODRMHG5QODyV4NCIcLj743BHzOFM5dCAc7gB4SMwQgPH4WaUc6UX7IAGi0PDxuHmlsMNCYcbAQ43wRyeBHA4wzk02hxuNDjc6HFopHgeRq785qAfRmikODTYHG5IONwIcWiA+CiM8KSAwxnMoVHjcGPI4UaSQ+PFoXfgXOmFcxhuQDg0wBxuHDncBXO48eHwsIAPwwhnPocbHA535xyeNnFoEDncMHL5SG7QzsKjPFlfBy14hGfBI1QL3oCy4RG/DY/8bXjUb8OjfRve4rDheZENbyHY8NaBDW+52PAWiA1vUdjwloVt8U7QI96JBSAbBnJhwAoD+TCQCQMjYSAVAoaktA7/PeCpxe7QtSD+PzXnEgl4nG2KaVOSYRSG3xcEyczMCnlluUFBhCcU4QkEocilRSpEfJAHbLOF9oX2/a2ZZvyi4ww/wy/Qp/oRfOgXnWAGm2qcM3Of61znztDXU4Qv6Sr0NOFzivApWcfHJOHDLOF9MoF3CcLbmTrezBBexwiv4rt4GSe8OEl4HkmjFtHxLEJ4GiU84YTH4RoehQkPwy08mCbcnyLcm2rh7mQd1UnCnUkdt0M6boUIN9t7I1TEjRBw/QThGiviKiNcYTWsBwiVIKEc1CEDUyhNENb8LRT9BOEjrI4TCr40Vrw68l7CsreInJfjsteNS2OEi6N1ZEcJSx7CBU8O5z0hnPO4cNZNWHRzLLgI86DML8xBxxknIeMgnHboSKeqSCWXMJusYSZWRzzGwaM5RCOLmA7nwAIcwYCOgNOurU/Yh+DXRrT18ZZP+Ext8GqEMe0YRj06PFaC22YFdl3CNUxwVh3C0XZ2rmkVW8q6URnp0HCHjmsL1rXyUT4kjvBBMSQH5SHeL0y8R/TLHnk4MSAO8j7Ry81C5YoYkH3SLBV5gFuEkRuERRrkoGLMZEzqT3VHWWXZH720km1YlisNdbPhK3Qyky83zJsNRZQrpaaqbstvW1uKcy7b2CmUvhuVNsqmwTCfLzV7jNtyTmEKY0zpDuvyXqp/Tfet7rU7xP7xXWJ/7v/UPnLfFrP9BvOls3wAAA==)}@font-face{font-display:swap;font-family:Assistant;font-weight:400;src:url(data:font/woff2;base64,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)}@font-face{font-display:swap;font-family:Assistant;font-weight:500;src:url(data:font/woff2;base64,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)}@font-face{font-display:swap;font-family:Assistant;font-weight:600;src:url(data:font/woff2;base64,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)}@font-face{font-display:swap;font-family:Assistant;font-weight:700;src:url(data:font/woff2;base64,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)}.excalidraw .Spinner{align-items:center;display:flex;height:100%;justify-content:center;margin-left:auto;margin-right:auto;--spinner-color:var(--icon-fill-color)}.excalidraw .Spinner svg{animation:rotate 1.6s linear infinite;animation-delay:var(--spinner-delay);transform-origin:center center}.excalidraw .Spinner circle{stroke:var(--spinner-color);animation:dash 1.6s linear 0s infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(1turn)}}@keyframes dash{0%{stroke-dasharray:1,300;stroke-dashoffset:0}50%{stroke-dasharray:150,300;stroke-dashoffset:-200}to{stroke-dasharray:1,300;stroke-dashoffset:-280}}.excalidraw .dialog-mermaid-title{font-size:1.25rem;font-weight:700;margin-block:.25rem;padding-inline:2.5rem}.excalidraw .excalidraw-button{align-items:center;background-color:var(--button-bg,var(--island-bg-color));border-color:var(--button-border,var(--default-border-color));border-radius:var(--border-radius-lg);border-style:solid;border-width:1px;box-sizing:border-box;color:var(--button-color,var(--color-on-surface));cursor:pointer;display:flex;font-family:var(--ui-font);height:var(--button-height,var(--default-button-size));justify-content:center;padding:.625rem;width:var(--button-width,var(--default-button-size))}.excalidraw .excalidraw-button svg{height:var(--button-height,var(--lg-icon-size));width:var(--button-width,var(--lg-icon-size))}.excalidraw .excalidraw-button:hover{background-color:var(--button-hover-bg,var(--island-bg-color));border-color:var(--button-hover-border,var(--button-border,var(--default-border-color)));color:var(--button-hover-color,var(--button-color,var(--text-primary-color,inherit)))}.excalidraw .excalidraw-button:active{background-color:var(--button-active-bg,var(--island-bg-color));border-color:var(--button-active-border,var(--color-primary-darkest))}.excalidraw .excalidraw-button.active{background-color:var(--button-selected-bg,var(--color-surface-primary-container));border-color:var(--button-selected-border,var(--color-surface-primary-container))}.excalidraw .excalidraw-button.active:hover{background-color:var(--button-selected-hover-bg,var(--color-surface-primary-container))}.excalidraw .excalidraw-button.active svg{color:var(--button-color,var(--color-on-primary-container))}.excalidraw .ToolIcon{align-items:center;border-radius:var(--border-radius-lg);cursor:pointer;display:inline-flex;position:relative;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;user-select:none}.excalidraw .ToolIcon__hidden{display:none!important}.excalidraw .ToolIcon.fillable .ToolIcon_type_checkbox:checked+.ToolIcon__icon,.excalidraw .ToolIcon.fillable .ToolIcon_type_radio:checked+.ToolIcon__icon{--icon-fill-color:var(--color-on-primary-container)}.excalidraw .ToolIcon.fillable .ToolIcon_type_checkbox:checked+.ToolIcon__icon svg,.excalidraw .ToolIcon.fillable .ToolIcon_type_radio:checked+.ToolIcon__icon svg{fill:var(--icon-fill-color)}.excalidraw .ToolIcon .ToolIcon_type_checkbox:checked+.ToolIcon__icon,.excalidraw .ToolIcon .ToolIcon_type_radio:checked+.ToolIcon__icon{background:var(--color-surface-primary-container);--keybinding-color:var(--color-on-primary-container);--icon-fill-color:var(--color-on-primary-container)}.excalidraw .ToolIcon .ToolIcon_type_checkbox:checked+.ToolIcon__icon svg,.excalidraw .ToolIcon .ToolIcon_type_radio:checked+.ToolIcon__icon svg{color:var(--color-on-primary-container)}.excalidraw .ToolIcon .ToolIcon__keybinding{bottom:4px;right:4px}.excalidraw .ToolIcon .ToolIcon__icon:hover{background:var(--button-hover-bg)}.excalidraw .ToolIcon .ToolIcon__icon:active{background:var(--button-hover-bg);border:1px solid var(--button-active-border)}.excalidraw .ToolIcon .ToolIcon__icon:active svg{color:var(--color-on-primary-container)}.excalidraw .ToolIcon--plain{background-color:transparent}.excalidraw .ToolIcon--plain .ToolIcon__icon{height:2rem;width:2rem}.excalidraw .ToolIcon_type_checkbox,.excalidraw .ToolIcon_type_radio{opacity:0;pointer-events:none;position:absolute}.excalidraw .ToolIcon__icon{align-items:center;border-radius:var(--border-radius-lg);box-sizing:border-box;color:var(--icon-fill-color);display:flex;height:var(--default-button-size);justify-content:center;width:var(--default-button-size)}.excalidraw .ToolIcon__icon+.ToolIcon__label{margin-inline-start:0}.excalidraw .ToolIcon__icon svg{color:var(--icon-fill-color);height:var(--default-icon-size);position:relative;width:var(--default-icon-size)}.excalidraw .ToolIcon__label{align-items:center;color:var(--icon-fill-color);display:flex;font-family:var(--ui-font);margin:0 .8em;text-overflow:ellipsis}.excalidraw .ToolIcon__label .Spinner{margin-left:.6em}.excalidraw .ToolIcon_size_small .ToolIcon__icon{font-size:.8em;height:2rem;width:2rem}.excalidraw .Modal .ToolIcon_type_button,.excalidraw .ToolIcon_type_button{background-color:initial;border:none;font-size:inherit;margin:0;padding:0}.excalidraw .Modal .ToolIcon_type_button:focus-visible,.excalidraw .ToolIcon_type_button:focus-visible{box-shadow:0 0 0 2px var(--focus-highlight-color)}.excalidraw .Modal .ToolIcon_type_button.ToolIcon--selected,.excalidraw .ToolIcon_type_button.ToolIcon--selected{background-color:var(--button-gray-2)}.excalidraw .Modal .ToolIcon_type_button.ToolIcon--selected:active,.excalidraw .Modal .ToolIcon_type_button:active,.excalidraw .ToolIcon_type_button.ToolIcon--selected:active,.excalidraw .ToolIcon_type_button:active{background-color:var(--button-gray-3)}.excalidraw .Modal .ToolIcon_type_button--show,.excalidraw .ToolIcon_type_button--show{visibility:visible}.excalidraw .Modal .ToolIcon_type_button--hide,.excalidraw .ToolIcon_type_button--hide{display:none!important}.excalidraw .ToolIcon_type_floating,.excalidraw .ToolIcon_type_floating:active,.excalidraw .ToolIcon_type_floating:hover{background-color:transparent}.excalidraw .ToolIcon_type_floating .ToolIcon__icon{background-color:var(--button-gray-1);height:2rem;width:2rem}.excalidraw .ToolIcon_type_floating .ToolIcon__icon:hover{background-color:var(--button-gray-2)}.excalidraw .ToolIcon_type_floating .ToolIcon__icon:active{background-color:var(--button-gray-3)}.excalidraw .ToolIcon__keybinding{bottom:2px;color:var(--keybinding-color);font-family:var(--ui-font);font-size:.625rem;position:absolute;right:3px;-webkit-user-select:none;user-select:none}:root[dir=ltr] .excalidraw .unlocked-icon{left:2px}:root[dir=rtl] .excalidraw .unlocked-icon{right:2px}.excalidraw .App-toolbar-container .ToolIcon__icon{height:var(--lg-button-size);width:var(--lg-button-size)}@media screen and (max-width:450px){.excalidraw .App-toolbar-container .ToolIcon__icon{height:1.8rem;width:1.8rem}}@media screen and (max-width:379px){.excalidraw .App-toolbar-container .ToolIcon__icon{height:1.5rem;width:1.5rem}}.excalidraw .App-toolbar-container .ToolIcon__icon svg{height:var(--lg-icon-size);width:var(--lg-icon-size)}.excalidraw .App-toolbar-container .ToolIcon__LaserPointer .ToolIcon__icon,.excalidraw .App-toolbar-container .ToolIcon__MagicButton .ToolIcon__icon{height:var(--default-button-size);width:var(--default-button-size)}.excalidraw .excalidraw-eye-dropper-backdrop,.excalidraw .excalidraw-eye-dropper-container{height:100%;position:absolute;touch-action:none;width:100%;z-index:var(--zIndex-eyeDropperBackdrop)}.excalidraw .excalidraw-eye-dropper-container{pointer-events:none}.excalidraw .excalidraw-eye-dropper-backdrop{pointer-events:all}.excalidraw .excalidraw-eye-dropper-preview{border:1px solid var(--default-border-color);border-radius:1rem;filter:var(--theme-filter);height:3rem;pointer-events:none;position:absolute;width:3rem;z-index:var(--zIndex-eyeDropperPreview)}.excalidraw .excalidraw-eye-dropper-trigger{border-radius:.5rem;color:var(--icon-fill-color);cursor:pointer;height:1.25rem;margin-left:-2px;margin-right:-4px;width:1.25rem}.excalidraw .excalidraw-eye-dropper-trigger:hover{background:var(--button-hover-bg)}.excalidraw .excalidraw-eye-dropper-trigger.selected{background:var(--color-primary-light);color:var(--color-primary)}.excalidraw .focus-visible-none:focus-visible{outline:none!important}.excalidraw .color-picker__heading{font-size:.75rem;padding:0 .5rem;text-align:left}.excalidraw .color-picker-container{align-items:center;display:grid;grid-template-columns:1fr 20px 1.625rem;padding:.25rem 0}.excalidraw--mobile.excalidraw .color-picker-container{max-width:175px}.excalidraw .color-picker__top-picks{display:flex;justify-content:space-between}.excalidraw .color-picker__button{--radius:0.25rem;background-color:var(--swatch-color);background-position:0;border:1px solid var(--color-gray-30);border-radius:var(--radius);box-sizing:border-box;filter:var(--theme-filter);font-family:inherit;height:1.35rem;margin:0;padding:0;position:relative;width:1.35rem}.excalidraw .color-picker__button:hover:after{box-shadow:0 0 0 1px var(--color-gray-30);content:""}.excalidraw .color-picker__button.active .color-picker__button-outline,.excalidraw .color-picker__button:hover:after{border-radius:calc(var(--radius) + 1px);bottom:-2px;filter:var(--theme-filter);left:-2px;position:absolute;right:-2px;top:-2px}.excalidraw .color-picker__button.active .color-picker__button-outline{box-shadow:0 0 0 1px var(--color-primary-darkest);z-index:1}.excalidraw .color-picker__button:focus-visible{outline:none}.excalidraw .color-picker__button:focus-visible:after{border:3px solid var(--focus-highlight-color);border-radius:calc(var(--radius) + 1px);bottom:-4px;content:"";left:-4px;position:absolute;right:-4px;top:-4px}.excalidraw .color-picker__button:focus-visible.active .color-picker__button-outline{display:none}.excalidraw .color-picker__button--large{--radius:0.5rem;height:1.875rem;width:1.875rem}.excalidraw .color-picker__button.is-transparent{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==)}.excalidraw .color-picker__button--no-focus-visible{border:0}.excalidraw .color-picker__button--no-focus-visible:after{display:none}.excalidraw .color-picker__button--no-focus-visible:focus-visible{outline:none!important}.excalidraw .color-picker__button.active-color{border-radius:calc(var(--radius) + 1px);height:1.625rem;width:1.625rem}.excalidraw .color-picker__button__hotkey-label{bottom:4px;filter:none;font-size:11px;position:absolute;right:4px}.excalidraw .color-picker{background:var(--popup-bg-color);border:0 solid hsla(0,0%,100%,.25);border-radius:4px;box-shadow:0 1px 4px rgba(0,0,0,.25);position:absolute}:root[dir=ltr] .excalidraw .color-picker{left:-5.5px}:root[dir=rtl] .excalidraw .color-picker{right:-5.5px}.excalidraw .color-picker-control-container{align-items:center;column-gap:.5rem;display:grid;grid-template-columns:auto 1fr}.excalidraw .color-picker-control-container+.popover{position:static}.excalidraw .color-picker-popover-container{margin-top:-.25rem}:root[dir=ltr] .excalidraw .color-picker-popover-container{margin-left:.5rem}:root[dir=rtl] .excalidraw .color-picker-popover-container{margin-left:-3rem}.excalidraw .color-picker-triangle{border-color:transparent transparent var(--popup-bg-color);border-style:solid;border-width:0 9px 10px;height:0;position:absolute;top:10px;width:0}:root[dir=ltr] .excalidraw .color-picker-triangle{left:-14px;transform:rotate(270deg)}:root[dir=rtl] .excalidraw .color-picker-triangle{right:-14px;transform:rotate(90deg)}.excalidraw .color-picker-triangle-shadow{border-color:transparent transparent rgba(0,0,0,.1)}:root[dir=ltr] .excalidraw .color-picker-triangle-shadow{left:-14px}:root[dir=rtl] .excalidraw .color-picker-triangle-shadow{right:-16px}.excalidraw .color-picker-content{display:flex;flex-direction:column;gap:.75rem;max-height:none;outline:none}.excalidraw .color-picker-content--default{display:grid;grid-template-columns:repeat(5,1.875rem);padding:.5rem;grid-gap:.25rem;border-radius:4px}.excalidraw .color-picker-content--default:focus{box-shadow:0 0 0 2px var(--focus-highlight-color);outline:none}.excalidraw .color-picker-content--canvas{display:flex;flex-direction:column;padding:.25rem}.excalidraw .color-picker-content--canvas-title{color:#868e96;font-size:12px;padding:0 .25rem}.excalidraw .color-picker-content--canvas-colors{padding:.5rem 0}.excalidraw .color-picker-content--canvas-colors .color-picker-swatch{margin:0 .25rem}.excalidraw .color-picker-content .color-input-container{grid-column:1/span 5}.excalidraw .color-picker-swatch{background-color:currentColor!important;border:1px solid #ddd;border-radius:4px;box-sizing:border-box;cursor:pointer;filter:var(--theme-filter);height:1.875rem;margin:0;position:relative;width:1.875rem}.excalidraw .color-picker-swatch:focus{border-color:var(--select-highlight-color);box-shadow:0 0 4px 1px currentColor}.excalidraw .color-picker-transparent{border-radius:4px;bottom:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);left:0;position:absolute;right:0;top:0}.excalidraw .color-picker-label-swatch,.excalidraw .color-picker-transparent{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==) 0}.excalidraw .color-picker-hash{align-items:center;border:1px solid var(--default-border-color);border-right:0;box-sizing:border-box;color:var(--input-label-color);display:flex;flex-shrink:0;height:var(--default-button-size);justify-content:center;padding:.5rem .5rem .5rem .75rem;position:relative}:root[dir=ltr] .excalidraw .color-picker-hash{border-radius:var(--border-radius-lg) 0 0 var(--border-radius-lg)}:root[dir=rtl] .excalidraw .color-picker-hash{border-left:0;border-radius:0 var(--border-radius-lg) var(--border-radius-lg) 0;border-right:1px solid var(--default-border-color)}.excalidraw .color-input-container{display:flex}.excalidraw .color-input-container:focus-within{border-radius:var(--border-radius-lg);box-shadow:0 0 0 1px var(--color-primary-darkest)}.excalidraw .color-picker__input-label{align-items:center;border:1px solid var(--default-border-color);border-radius:8px;box-sizing:border-box;display:grid;gap:8px;grid-template-columns:auto 1fr auto auto auto;margin:8px;padding:0 12px}.excalidraw .color-picker__input-label:focus-within{border-radius:var(--border-radius-lg);box-shadow:0 0 0 1px var(--color-primary-darkest)}.excalidraw .color-picker__input-hash{padding:0 .25rem}.excalidraw .color-picker-input{-webkit-appearance:none;appearance:none;background-color:transparent;border:0;border:1px solid var(--default-border-color);border-left:0;box-sizing:border-box;color:var(--text-primary-color);font-family:inherit;font-size:.875rem;height:var(--default-button-size);letter-spacing:.4px;margin:0;outline:none;padding:.5rem .5rem .5rem .25rem;width:100%}:root[dir=ltr] .excalidraw .color-picker-input{border-radius:0 var(--border-radius-lg) var(--border-radius-lg) 0}:root[dir=rtl] .excalidraw .color-picker-input{border-left:1px solid var(--default-border-color);border-radius:var(--border-radius-lg) 0 0 var(--border-radius-lg);border-right:0}.excalidraw .color-picker-input:focus-visible{box-shadow:none}.excalidraw .color-picker-label-swatch-container{border:1px solid var(--default-border-color);border-radius:var(--border-radius-lg);box-sizing:border-box;height:var(--default-button-size);overflow:hidden;width:var(--default-button-size)}.excalidraw .color-picker-label-swatch{align-items:center;background-color:var(--button-bg,var(--island-bg-color));background-color:var(--swatch-color)!important;border-color:var(--button-border,var(--default-border-color));border-radius:var(--border-radius-lg);border-style:solid;border-width:1px;border:0!important;box-sizing:border-box;color:var(--button-color,var(--color-on-surface));cursor:pointer;display:flex;filter:var(--theme-filter);font-family:var(--ui-font);height:var(--button-height,var(--default-button-size));justify-content:center;overflow:hidden;padding:.625rem;position:relative;width:var(--button-width,var(--default-button-size))}.excalidraw .color-picker-label-swatch svg{height:var(--button-height,var(--lg-icon-size));width:var(--button-width,var(--lg-icon-size))}.excalidraw .color-picker-label-swatch:hover{background-color:var(--button-hover-bg,var(--island-bg-color));border-color:var(--button-hover-border,var(--button-border,var(--default-border-color)));color:var(--button-hover-color,var(--button-color,var(--text-primary-color,inherit)))}.excalidraw .color-picker-label-swatch:active{background-color:var(--button-active-bg,var(--island-bg-color));border-color:var(--button-active-border,var(--color-primary-darkest))}.excalidraw .color-picker-label-swatch.active{background-color:var(--button-selected-bg,var(--color-surface-primary-container));border-color:var(--button-selected-border,var(--color-surface-primary-container))}.excalidraw .color-picker-label-swatch.active:hover{background-color:var(--button-selected-hover-bg,var(--color-surface-primary-container))}.excalidraw .color-picker-label-swatch.active svg{color:var(--button-color,var(--color-on-primary-container))}.excalidraw .color-picker-label-swatch:after{background:var(--swatch-color);content:"";height:100%;left:0;position:absolute;top:0;width:100%}.excalidraw .color-picker-keybinding{bottom:2px;font-size:.7em;position:absolute}:root[dir=ltr] .excalidraw .color-picker-keybinding{right:2px}:root[dir=rtl] .excalidraw .color-picker-keybinding{left:2px}.excalidraw--mobile.excalidraw .color-picker-keybinding{display:block}.excalidraw .color-picker-type-canvasBackground .color-picker-keybinding{color:#aaa}.excalidraw .color-picker-type-elementBackground .color-picker-keybinding{color:#fff}.excalidraw .color-picker-swatch[aria-label=transparent] .color-picker-keybinding{color:#aaa}.excalidraw .color-picker-type-elementStroke .color-picker-keybinding{color:#d4d4d4}.excalidraw.theme--dark .color-picker-swatch[aria-label=transparent] .color-picker-keybinding,.excalidraw.theme--dark .color-picker-type-elementBackground .color-picker-keybinding{color:#000}.excalidraw .popover{outline:none;padding:5px 0;position:absolute;z-index:10}.excalidraw .picker-container{box-sizing:border-box;display:inline-block;margin-right:.25rem}.excalidraw .picker{background:var(--popup-bg-color);border:0 solid hsla(0,0%,100%,.25);border-radius:4px;box-shadow:2px 2px 4px 2px rgba(0,0,0,.25);position:absolute}.excalidraw .picker button,.excalidraw .picker-container button{align-items:center;display:flex;justify-content:center;position:relative}.excalidraw .picker button:focus-visible,.excalidraw .picker-container button:focus-visible{background-color:var(--button-gray-2);outline:transparent}.excalidraw .picker button:focus-visible svg,.excalidraw .picker-container button:focus-visible svg{opacity:1}.excalidraw .picker button:hover,.excalidraw .picker-container button:hover{background-color:var(--button-gray-2)}.excalidraw .picker button:active,.excalidraw .picker-container button:active{background-color:var(--button-gray-3)}.excalidraw .picker button:disabled,.excalidraw .picker-container button:disabled{cursor:not-allowed}.excalidraw .picker button svg,.excalidraw .picker-container button svg{height:18px;margin:0;pointer-events:none;width:36px}.excalidraw .picker button{padding:.25rem .28rem .35rem .25rem}.excalidraw .picker-triangle{height:0;position:relative;top:-10px;width:0;z-index:10}:root[dir=ltr] .excalidraw .picker-triangle{left:12px}:root[dir=rtl] .excalidraw .picker-triangle{right:12px}.excalidraw .picker-triangle:before{border-color:transparent transparent rgba(0,0,0,.1);top:-1px}.excalidraw .picker-triangle:after,.excalidraw .picker-triangle:before{border-style:solid;border-width:0 9px 10px;content:"";position:absolute}.excalidraw .picker-triangle:after{border-color:transparent transparent var(--popup-bg-color)}.excalidraw .picker-content{display:grid;grid-template-columns:repeat(3,auto);padding:.5rem;grid-gap:.5rem;border-radius:4px}:root[dir=rtl] .excalidraw .picker-content{padding:.4rem}.excalidraw .picker-keybinding{bottom:2px;color:var(--keybinding-color);font-size:.7em;position:absolute}:root[dir=ltr] .excalidraw .picker-keybinding{right:2px}:root[dir=rtl] .excalidraw .picker-keybinding{left:2px}.excalidraw--mobile.excalidraw .picker-keybinding{display:none}.excalidraw .picker-type-canvasBackground .picker-keybinding{color:#aaa}.excalidraw .picker-type-elementBackground .picker-keybinding{color:#fff}.excalidraw .picker-swatch[aria-label=transparent] .picker-keybinding{color:#aaa}.excalidraw .picker-type-elementStroke .picker-keybinding{color:#d4d4d4}.excalidraw.theme--dark .picker-swatch[aria-label=transparent] .picker-keybinding,.excalidraw.theme--dark .picker-type-elementBackground .picker-keybinding{color:#000}.excalidraw .TextInput{display:inline-block}.ProjectName{align-items:center;display:flex;margin:auto}.ProjectName .TextInput{height:calc(1rem - 3px);margin-left:8px;overflow:hidden;text-align:center;text-overflow:ellipsis;width:200px}.ProjectName .TextInput--readonly{background:none;border:none;max-width:200px;padding-left:2px;width:auto}.ProjectName .TextInput--readonly:hover{background:none}.excalidraw-tooltip{--ui-font:Assistant,system-ui,BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;border-radius:6px;box-sizing:border-box;font-family:var(--ui-font);padding:8px;pointer-events:none;position:absolute;z-index:var(--zIndex-popup);word-wrap:break-word;background:#000;color:#fff;display:none;font-size:13px;font-weight:500;line-height:1.5;text-align:center}.excalidraw-tooltip.excalidraw-tooltip--visible{display:block}.excalidraw-tooltip-wrapper{display:flex}.excalidraw-tooltip-icon{display:flex;height:.9em;margin-left:5px;margin-top:1px;width:.9em}.excalidraw--mobile.excalidraw-tooltip-icon{display:none}.excalidraw .Checkbox{align-items:center;cursor:pointer;display:flex;margin:4px .3em;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.excalidraw .Checkbox:hover:not(.is-checked) .Checkbox-box:not(:focus){box-shadow:0 0 0 2px #4dabf7}.excalidraw .Checkbox:hover:not(.is-checked) .Checkbox-box:not(:focus) svg{display:block;opacity:.3}.excalidraw .Checkbox:active .Checkbox-box{box-shadow:inset 0 0 2px 1px #1c7ed6!important}.excalidraw .Checkbox:hover .Checkbox-box{background-color:rgba(208,235,255,.2)}.excalidraw .Checkbox.is-checked .Checkbox-box{background-color:#d0ebff}.excalidraw .Checkbox.is-checked .Checkbox-box svg{display:block}.excalidraw .Checkbox.is-checked:hover .Checkbox-box{background-color:#a5d8ff}.excalidraw .Checkbox .Checkbox-box{align-items:center;background-color:transparent;border:0;border-radius:4px;box-shadow:0 0 0 2px #1c7ed6;color:#1c7ed6;display:flex;flex:0 0 auto;height:22px;justify-content:center;margin:0 1em;padding:0;width:22px}.excalidraw .Checkbox .Checkbox-box:focus{box-shadow:0 0 0 3px #1c7ed6}.excalidraw .Checkbox .Checkbox-box svg{display:none;height:16px;width:16px;stroke-width:3px}.excalidraw .Checkbox .Checkbox-label{align-items:center;display:flex}.excalidraw .Checkbox .excalidraw-tooltip-icon{height:1em;width:1em}.excalidraw .Avatar{align-items:center;border-radius:100%;color:var(--color-gray-90);cursor:pointer;display:flex;flex:0 0 auto;font-size:.75rem;font-weight:800;height:1.25rem;justify-content:center;line-height:1;outline-offset:2px;position:relative;width:1.25rem}.excalidraw .Avatar-img{border-radius:100%;height:100%;width:100%}.excalidraw .Avatar:before{border:1px solid var(--avatar-border-color);border-radius:100%;bottom:-3px;content:"";left:-3px;position:absolute;right:-3px;top:-3px}.excalidraw .Avatar--is-followed:before{border-color:var(--color-primary-hover)}.excalidraw .Avatar--is-current-user{cursor:auto}.excalidraw-hyperlinkContainer{align-items:center;background:var(--island-bg-color);border-radius:var(--border-radius-md);box-shadow:0 2px 4px 0 rgba(0,0,0,.3);box-sizing:border-box;display:flex;justify-content:space-between;min-height:42px;position:absolute;z-index:var(--zIndex-hyperlinkContainer)}.excalidraw-hyperlinkContainer button,.excalidraw-hyperlinkContainer-input{z-index:100}.excalidraw-hyperlinkContainer-input,.excalidraw-hyperlinkContainer-link{font-family:var(--ui-font);font-size:.9rem;font-weight:500;height:24px;line-height:24px;padding:0 8px}.excalidraw-hyperlinkContainer-input{background-color:transparent;border:none;box-shadow:none!important;color:var(--text-primary-color);outline:none;width:18rem}.excalidraw-hyperlinkContainer-link{max-width:15rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.excalidraw-hyperlinkContainer button{background-color:transparent!important;color:#228be6;font-weight:500}.excalidraw-hyperlinkContainer button.excalidraw-hyperlinkContainer--remove{color:#c92a2a}.excalidraw-hyperlinkContainer--remove .ToolIcon__icon svg{color:#fa5252}.excalidraw-hyperlinkContainer .ToolIcon__icon{height:2rem;width:2rem}.excalidraw-hyperlinkContainer__buttons{flex:0 0 auto}.excalidraw .context-menu{background-color:var(--popup-secondary-bg-color);border:1px solid var(--button-gray-3);border-radius:4px;box-shadow:0 3px 10px rgba(0,0,0,.2);cursor:default;list-style:none;margin:-.25rem 0 0 .125rem;padding:.5rem 0;position:relative;-webkit-user-select:none;user-select:none}.excalidraw .context-menu button{color:var(--popup-text-color)}.excalidraw .context-menu-item{align-items:center;background-color:transparent;border:none;border-radius:0;display:grid;font-family:inherit;grid-template-columns:1fr .2fr;margin:0;min-width:9.5rem;padding:.25rem 1rem .25rem 1.25rem;position:relative;text-align:start;white-space:nowrap;width:100%}.excalidraw .context-menu-item.checkmark:before{content:"✓";left:6px;margin-bottom:1px;position:absolute}.excalidraw .context-menu-item.dangerous .context-menu-item__label{color:#f03e3e}.excalidraw .context-menu-item .context-menu-item__label{justify-self:start;margin-inline-end:20px}.excalidraw .context-menu-item .context-menu-item__shortcut{font-family:inherit;font-size:.7rem;justify-self:end;opacity:.6}.excalidraw .context-menu-item:hover{background-color:var(--select-highlight-color)}.excalidraw .context-menu-item:hover.dangerous{background-color:#fa5252}.excalidraw .context-menu-item:hover.dangerous .context-menu-item__label{color:var(--popup-bg-color)}.excalidraw .context-menu-item:focus{z-index:1}.excalidraw--mobile.excalidraw .context-menu-item{display:block}.excalidraw--mobile.excalidraw .context-menu-item .context-menu-item__label{margin-inline-end:0}.excalidraw--mobile.excalidraw .context-menu-item .context-menu-item__shortcut{display:none}.excalidraw .context-menu-item-separator{border:none;border-top:1px solid #adb5bd;margin:0}.excalidraw .Stack{--gap:0;display:grid;gap:calc(var(--space-factor)*var(--gap))}.excalidraw .Stack_vertical{grid-auto-flow:row;grid-auto-rows:-webkit-min-content;grid-auto-rows:min-content;grid-template-columns:auto}.excalidraw .Stack_horizontal{grid-auto-columns:-webkit-min-content;grid-auto-columns:min-content;grid-auto-flow:column;grid-template-rows:auto}.undo-redo-buttons,.zoom-actions{background-color:var(--island-bg-color);border-radius:var(--border-radius-lg);box-shadow:0 0 0 1px var(--color-surface-lowest)}.undo-redo-buttons button,.zoom-button{background-color:var(--color-surface-low)!important;border-radius:0!important;font-size:.875rem!important;height:var(--lg-button-size);width:var(--lg-button-size)}.undo-redo-buttons button svg,.zoom-button svg{height:var(--lg-icon-size)!important;width:var(--lg-icon-size)!important}.undo-redo-buttons button .ToolIcon__icon,.zoom-button .ToolIcon__icon{height:100%;width:100%}.reset-zoom-button{border-left:0!important;border-right:0!important;color:var(--text-primary-color);justify-content:center!important;padding:0 .625rem!important;width:3.25rem!important}.zoom-out-button{border-bottom-left-radius:var(--border-radius-lg)!important;border-top-left-radius:var(--border-radius-lg)!important}:root[dir=rtl] .zoom-out-button{transform:scaleX(-1)}.zoom-out-button .ToolIcon__icon{border-bottom-right-radius:0!important;border-top-right-radius:0!important}.zoom-in-button{border-bottom-right-radius:var(--border-radius-lg)!important;border-top-right-radius:var(--border-radius-lg)!important}:root[dir=rtl] .zoom-in-button{transform:scaleX(-1)}.zoom-in-button .ToolIcon__icon{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.undo-redo-buttons .undo-button-container button{border-bottom-left-radius:var(--border-radius-lg)!important;border-right:0!important;border-top-left-radius:var(--border-radius-lg)!important}:root[dir=rtl] .undo-redo-buttons .undo-button-container button{transform:scaleX(-1)}.undo-redo-buttons .undo-button-container button .ToolIcon__icon{border-bottom-right-radius:0!important;border-top-right-radius:0!important}.undo-redo-buttons .redo-button-container button{border-bottom-right-radius:var(--border-radius-lg)!important;border-top-right-radius:var(--border-radius-lg)!important}:root[dir=rtl] .undo-redo-buttons .redo-button-container button{transform:scaleX(-1)}.undo-redo-buttons .redo-button-container button .ToolIcon__icon{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.excalidraw .Island{--padding:0;background-color:var(--island-bg-color);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-island);box-sizing:border-box;padding:calc(var(--padding)*var(--space-factor));position:relative;transition:box-shadow .5s ease-in-out}.excalidraw .Island.zen-mode{box-shadow:none}.excalidraw .dropdown-menu{margin-top:.25rem;position:absolute;top:100%}.excalidraw .dropdown-menu--mobile{left:0;row-gap:.75rem;width:100%}.excalidraw .dropdown-menu--mobile .dropdown-menu-container{border-radius:var(--border-radius-lg);box-shadow:var(--shadow-island);box-sizing:border-box;padding:8px;position:relative;transition:box-shadow .5s ease-in-out}.excalidraw .dropdown-menu--mobile .dropdown-menu-container.zen-mode{box-shadow:none}.excalidraw .dropdown-menu .dropdown-menu-container{background-color:var(--island-bg-color);max-height:calc(100vh - 150px);overflow-y:auto;--gap:2}.excalidraw .dropdown-menu .dropdown-menu-item-base{box-sizing:border-box;color:var(--color-on-surface);column-gap:.625rem;display:flex;font-family:inherit;font-size:.875rem;font-weight:400;padding:0 .625rem;width:100%}.excalidraw .dropdown-menu .dropdown-menu-item{align-items:center;background-color:transparent;border:1px solid transparent;border-radius:var(--border-radius-md);cursor:pointer;height:2rem}@media screen and (min-width:1921px){.excalidraw .dropdown-menu .dropdown-menu-item{height:2.25rem}}.excalidraw .dropdown-menu .dropdown-menu-item--selected{background:var(--color-primary-light);--icon-fill-color:var(--color-primary-darker)}.excalidraw .dropdown-menu .dropdown-menu-item__text{align-items:center;display:flex;gap:.75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.excalidraw .dropdown-menu .dropdown-menu-item__shortcut{margin-inline-start:auto;opacity:.5}.excalidraw .dropdown-menu .dropdown-menu-item:hover{background-color:var(--button-hover)!important;text-decoration:none}.excalidraw .dropdown-menu .dropdown-menu-item:active{background-color:var(--button-hover-bg);border-color:var(--color-brand-active)}.excalidraw .dropdown-menu .dropdown-menu-item svg{display:block;height:1rem;width:1rem}.excalidraw .dropdown-menu .dropdown-menu-item-custom{margin-top:.5rem}.excalidraw .dropdown-menu .dropdown-menu-group-title{font-size:14px;font-weight:500;margin:10px 0;text-align:left}.excalidraw .dropdown-menu-button{align-items:center;background-color:var(--button-bg,var(--island-bg-color));border-color:var(--button-border,var(--default-border-color));border-radius:var(--border-radius-lg);border-style:solid;border-width:1px;box-sizing:border-box;color:var(--button-color,var(--color-on-surface));cursor:pointer;display:flex;font-family:var(--ui-font);height:var(--button-height,var(--default-button-size));height:var(--lg-button-size);justify-content:center;margin:0;padding:0;width:var(--button-width,var(--default-button-size));width:var(--lg-button-size);--background:var(--color-surface-mid);background-color:var(--background)}.excalidraw .dropdown-menu-button svg{height:var(--button-height,var(--lg-icon-size));width:var(--button-width,var(--lg-icon-size))}.excalidraw .dropdown-menu-button:hover{background-color:var(--button-hover-bg,var(--island-bg-color));border-color:var(--button-hover-border,var(--button-border,var(--default-border-color)));color:var(--button-hover-color,var(--button-color,var(--text-primary-color,inherit)))}.excalidraw .dropdown-menu-button:active{background-color:var(--button-active-bg,var(--island-bg-color));border-color:var(--button-active-border,var(--color-primary-darkest))}.excalidraw .dropdown-menu-button.active{background-color:var(--button-selected-bg,var(--color-surface-primary-container));border-color:var(--button-selected-border,var(--color-surface-primary-container))}.excalidraw .dropdown-menu-button.active:hover{background-color:var(--button-selected-hover-bg,var(--color-surface-primary-container))}.excalidraw .dropdown-menu-button.active svg{color:var(--button-color,var(--color-on-primary-container))}.excalidraw.theme--dark.excalidraw .dropdown-menu-button{--background:var(--color-surface-high)}.excalidraw.theme--dark.excalidraw .dropdown-menu-button:hover{--background:#363541}.excalidraw .dropdown-menu-button:hover{--background:var(--color-surface-high);background-color:var(--background);text-decoration:none}.excalidraw .dropdown-menu-button:active{border-color:var(--color-primary)}.excalidraw .dropdown-menu-button svg{height:var(--lg-icon-size);width:var(--lg-icon-size)}.excalidraw .dropdown-menu-button--mobile{border:none;height:var(--default-button-size);margin:0;padding:0;width:var(--default-button-size)}.excalidraw .Dialog{cursor:auto;-webkit-user-select:text;user-select:text}.excalidraw .Dialog__title{border-bottom:1px solid var(--dialog-border-color);font-size:1.25rem;margin:0 0 1.5rem;padding:0 0 .75rem;text-align:left}.excalidraw .Dialog__close{background-color:transparent;border:0;color:var(--color-gray-40);cursor:pointer;line-height:0;margin:0;position:absolute;right:.5rem;top:.75rem}.excalidraw .Dialog__close:hover{color:var(--color-gray-60)}.excalidraw .Dialog__close:active{color:var(--color-gray-40)}.excalidraw .Dialog__close svg{height:1.5rem;width:1.5rem}.excalidraw .Dialog--fullscreen .Dialog__close{right:1.25rem;top:1.25rem}.excalidraw.excalidraw-modal-container{position:absolute;z-index:var(--zIndex-modal)}.excalidraw .Modal{align-items:center;bottom:0;display:flex;flex-direction:column;justify-content:center;left:0;overflow:auto;padding:calc(var(--space-factor)*10);position:absolute;right:0;top:0}.excalidraw .Modal .Island{padding:2.5rem}.excalidraw .Modal__background{animation:Modal__background__fade-in .125s linear forwards;background-color:hsla(0,0%,7%,.2);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.excalidraw .Modal__content{animation:Modal__content_fade-in .1s ease-out .05s forwards;background:var(--island-bg-color);border:1px solid var(--dialog-border-color);border-radius:6px;box-shadow:var(--modal-shadow);box-sizing:border-box;max-height:100%;max-width:var(--max-width);opacity:0;overflow-y:auto;position:relative;transform:translateY(10px);width:100%;z-index:2}.excalidraw .Modal__content:focus{outline:none}@keyframes Modal__background__fade-in{0%{opacity:0}to{opacity:1}}@keyframes Modal__content_fade-in{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.excalidraw .Modal__close{background-color:transparent;border:0;color:var(--icon-fill-color);cursor:pointer;line-height:0;margin:0;padding:.375rem;position:absolute;right:1rem;top:1rem}.excalidraw .Modal__close svg{height:1.5rem;width:1.5rem}.excalidraw .Dialog--fullscreen .Modal{padding:0}.excalidraw .Dialog--fullscreen .Modal__content{border:0;border-radius:0;bottom:0;left:0;max-width:100%;position:absolute;right:0;top:0}.excalidraw .confirm-dialog-buttons{column-gap:.5rem;display:flex;justify-content:flex-end}.excalidraw .Dialog__action-button{align-items:center;background-color:transparent;border:1px solid var(--default-border-color);border-radius:var(--border-radius-lg);color:inherit;column-gap:.5rem;display:flex;font-family:inherit;font-size:.875rem;font-weight:600;height:3rem;letter-spacing:.4px;padding:.5rem 1.5rem;position:relative;-webkit-user-select:none;user-select:none}.excalidraw .Dialog__action-button svg{display:block;height:1rem;width:1rem}.excalidraw .Dialog__action-button--danger{background-color:var(--color-danger);border-color:var(--color-danger);color:#fff}.excalidraw .Dialog__action-button--primary{background-color:var(--color-primary);border-color:var(--color-primary);color:#fff}.excalidraw.theme--dark .Dialog__action-button--danger,.excalidraw.theme--dark .Dialog__action-button--primary{color:var(--color-gray-100)}.excalidraw .publish-library__fields{display:flex;flex-direction:column}.excalidraw .publish-library__fields label{align-items:center;display:flex;justify-content:space-between;padding:1em 0}.excalidraw .publish-library__fields label span{color:#868e96;font-size:1rem;font-weight:500}.excalidraw .publish-library__fields label input,.excalidraw .publish-library__fields label textarea{font-family:var(--ui-font);padding:.6em;width:70%}.excalidraw .publish-library__fields label .required{color:#e03131;margin:.2rem}.excalidraw .publish-library__buttons{display:flex;gap:.5rem;justify-content:flex-end;padding:.2rem 0}.excalidraw .publish-library__buttons .ToolIcon__icon{font-size:1rem;min-width:2.5rem;width:auto}.excalidraw .publish-library__buttons .ToolIcon_type_button{margin-left:1rem;padding:0 .5rem}.excalidraw .publish-library__buttons--confirm.ToolIcon_type_button{background-color:#228be6}.excalidraw .publish-library__buttons--confirm.ToolIcon_type_button:hover{background-color:#1971c2}.excalidraw .publish-library__buttons--cancel.ToolIcon_type_button{background-color:#adb5bd}.excalidraw .publish-library__buttons--cancel.ToolIcon_type_button:hover{background-color:#868e96}.excalidraw .publish-library__buttons .ToolIcon__icon{color:#fff}.excalidraw .publish-library__buttons .ToolIcon__icon .Spinner{--spinner-color:#fff}.excalidraw .publish-library__buttons .ToolIcon__icon .Spinner svg{padding:.5rem}.excalidraw .publish-library .selected-library-items{display:flex;flex-wrap:wrap}.excalidraw .publish-library .selected-library-items .single-library-item-wrapper{width:9rem}.excalidraw .publish-library-warning{color:#fa5252}.excalidraw .publish-library-note{display:block;font-size:14px;font-style:italic;padding:1em 0}.excalidraw .single-library-item{position:relative}.excalidraw .single-library-item-status{background:hsla(0,0%,100%,.9);border-radius:.2rem;color:#f03e3e;font-size:.7rem;left:.3rem;padding:.1rem .2rem;position:absolute;top:.3rem}.excalidraw .single-library-item__svg{background-color:#fff;border:1px solid var(--button-gray-2);height:7.5rem;padding:.3rem;width:7.5rem}.excalidraw .single-library-item__svg svg{height:100%;width:100%}.excalidraw .single-library-item .ToolIcon__icon{background-color:#fff;height:auto;margin:0 .5rem;width:auto}.excalidraw .single-library-item .ToolIcon,.excalidraw .single-library-item .ToolIcon_type_button:hover{background-color:#fff}.excalidraw .single-library-item .error,.excalidraw .single-library-item .required{color:#e03131;font-size:1rem;font-weight:700;margin:.2rem}.excalidraw .single-library-item .error{font-weight:500;margin:0;padding:.3em 0}.excalidraw .single-library-item--remove{position:absolute;right:1rem;top:.2rem}.excalidraw .single-library-item--remove .ToolIcon__icon{background-color:#fa5252;margin:0}.excalidraw .single-library-item--remove .ToolIcon__icon:hover{background-color:#f03e3e}.excalidraw .single-library-item--remove .ToolIcon__icon:active{background-color:#e03131}.excalidraw .single-library-item--remove svg{border-radius:.3em;color:#fff;height:1rem;padding:.26rem;width:1rem}.excalidraw .library-unit{align-items:center;border:1px solid transparent;border-radius:var(--border-radius-lg);box-sizing:border-box;display:flex;height:55px;justify-content:center;position:relative;width:55px}.excalidraw .library-unit svg{pointer-events:none}.excalidraw .library-unit--hover{border-color:var(--color-primary)}.excalidraw .library-unit--selected{border-color:var(--color-primary);border-width:1px}.excalidraw .library-unit--skeleton{animation:library-unit__skeleton-opacity-animation .2s linear;background:linear-gradient(-45deg,var(--color-gray-10),var(--color-gray-20),var(--color-gray-10));background-size:200% 200%;opacity:.5}.excalidraw.theme--dark .library-unit--skeleton{background-image:linear-gradient(-45deg,var(--color-gray-100),var(--color-gray-80),var(--color-gray-100))}.excalidraw .library-unit__dragger{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.excalidraw .library-unit__dragger>svg{filter:var(--theme-filter);flex-grow:1;max-height:100%;max-width:100%}.excalidraw .library-unit__checkbox-container,.excalidraw .library-unit__checkbox-container:active,.excalidraw .library-unit__checkbox-container:hover{align-items:center;background:none;border:none;bottom:2rem;color:var(--icon-fill-color);cursor:pointer;display:flex;justify-content:center;left:2rem;margin:0;padding:.5rem;position:absolute}.excalidraw .library-unit__checkbox-container input,.excalidraw .library-unit__checkbox-container:active input,.excalidraw .library-unit__checkbox-container:hover input{cursor:pointer}.excalidraw .library-unit__checkbox{margin:0;position:absolute;right:.125rem;top:.125rem}.excalidraw .library-unit__checkbox .Checkbox-box{background-color:var(--color-primary-light);border:1px solid var(--color-primary);border-radius:4px;box-shadow:none!important;height:1rem;margin:0;padding:2px;width:1rem}.excalidraw .library-unit__checkbox.Checkbox:hover .Checkbox-box{background-color:var(--color-primary-light)}.excalidraw .library-unit__checkbox.is-checked .Checkbox-box{background-color:var(--color-primary)!important}.excalidraw .library-unit__checkbox.is-checked .Checkbox-box svg{color:var(--color-primary-light)}.excalidraw .library-unit__removeFromLibrary>svg{height:16px;width:16px}.excalidraw .library-unit__adder{align-items:center;animation:library-unit__adder-animation 1s ease-in infinite;background-color:var(--color-primary);border-radius:var(--border-radius-md);display:flex;height:1.5rem;justify-content:center;pointer-events:none;position:absolute;transform:scale(1);width:1.5rem}.excalidraw .library-unit__adder svg{color:var(--color-primary-light);height:1rem;width:1rem}.excalidraw .library-unit:active .library-unit__adder{animation:none;transform:scale(.8)}.excalidraw .library-unit__active{cursor:pointer}@keyframes library-unit__adder-animation{0%{transform:scale(.85)}50%{transform:scale(1)}to{transform:scale(.85)}}@keyframes library-unit__skeleton-opacity-animation{0%{opacity:0}75%{opacity:0}to{opacity:.5}}.excalidraw{--container-padding-y:1.5rem;--container-padding-x:0.75rem}.excalidraw .library-menu-items__no-items{color:var(--color-gray-70);font-size:.875rem;line-height:1.5;text-align:center;width:100%}.excalidraw .library-menu-items__no-items__label{color:var(--color-primary);font-size:1.125rem;font-weight:700;margin-bottom:.75rem}.excalidraw.theme--dark .library-menu-items__no-items{color:var(--color-gray-40)}.excalidraw .library-menu-items-container{display:flex;flex-basis:0;flex-direction:column;flex-grow:1;flex-shrink:1;height:100%;justify-content:center;margin:0;overflow-y:auto;position:relative;width:100%}.excalidraw .library-menu-items-container>div{padding-left:.75rem;padding-right:.75rem}.excalidraw .library-menu-items-container__row{display:grid;gap:1rem;grid-template-columns:repeat(4,1fr)}.excalidraw .library-menu-items-container__items{flex:1;margin-bottom:1rem;overflow-x:hidden;overflow-y:auto;padding:var(--container-padding-y) 0;row-gap:.5rem}.excalidraw .library-menu-items-container__header{box-sizing:border-box;color:var(--color-primary);font-size:1.125rem;font-weight:700;margin-bottom:.75rem;padding-right:4rem;width:100%}.excalidraw .library-menu-items-container__header--excal{margin-top:2rem}.excalidraw .library-menu-items-container__grid{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;grid-gap:1rem}.excalidraw .library-menu-items-container .separator{align-items:center;color:var(--text-primary-color);display:flex;font-size:.9rem;font-weight:500;margin:.6em .2em;width:100%}.excalidraw .library-menu-items-private-library-container{min-height:3.75rem;width:100%}.excalidraw .layer-ui__library{display:flex;flex:1 1 auto;flex-direction:column}.excalidraw .library-actions-counter{align-items:center;background-color:var(--color-primary);border-radius:50%;bottom:-.25rem;color:var(--color-primary-light);display:flex;font-size:.625rem;font-weight:700;height:1rem;justify-content:center;pointer-events:none;position:absolute;right:-.25rem;width:1rem}.excalidraw .layer-ui__library-message{align-items:center;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-width:200px;padding:2rem}.excalidraw .layer-ui__library-message span{font-size:.8em}.excalidraw .publish-library-success .Dialog__content{display:flex;flex-direction:column}.excalidraw .publish-library-success-close.ToolIcon_type_button{align-self:flex-end;background-color:#228be6}.excalidraw .publish-library-success-close.ToolIcon_type_button:hover{background-color:#1971c2}.excalidraw .publish-library-success-close.ToolIcon_type_button .ToolIcon__icon{color:#fff;font-size:1rem;padding:0 .5rem;width:auto}.excalidraw .library-menu-control-buttons{align-items:center;display:flex;gap:.625rem;justify-content:center;position:relative}.excalidraw .library-menu-control-buttons--at-bottom:before{background:var(--sidebar-border-color);content:"";height:1px;position:absolute;top:-1px;width:calc(100% - 1.5rem)}.excalidraw .library-menu-browse-button{align-items:center;background-color:var(--color-primary);border-radius:var(--border-radius-lg);color:#fff;display:flex;flex:1;font-size:.75rem;font-weight:600;height:var(--lg-button-size);justify-content:center;overflow:hidden;position:relative;text-align:center;text-decoration:none!important;white-space:nowrap}.excalidraw .library-menu-browse-button:hover{background-color:var(--color-brand-hover)}.excalidraw .library-menu-browse-button:active{background-color:var(--color-brand-active)}.excalidraw.theme--dark .library-menu-browse-button{color:var(--color-gray-100)}.excalidraw.excalidraw--mobile .library-menu-browse-button{height:var(--default-button-size)}.excalidraw .layer-ui__library .dropdown-menu{bottom:100%;left:auto;margin-bottom:.625rem;right:0;top:auto;width:auto}.excalidraw .layer-ui__library .dropdown-menu .dropdown-menu-container{border-radius:var(--border-radius-lg);box-shadow:var(--library-dropdown-shadow);padding:.25rem .5rem;width:196px}.excalidraw .layer-ui__library .library-menu-dropdown-container{position:relative}.excalidraw .layer-ui__library .library-menu-dropdown-container--in-heading{padding:0;position:absolute;right:.75rem;top:1rem;z-index:1}.excalidraw .layer-ui__library .library-menu-dropdown-container--in-heading .dropdown-menu{top:100%}.excalidraw{--RadioGroup-background:var(--island-bg-color);--RadioGroup-border:var(--color-surface-high);--RadioGroup-choice-color-off:var(--color-primary);--RadioGroup-choice-color-off-hover:var(--color-brand-hover);--RadioGroup-choice-background-off:var(--island-bg-color);--RadioGroup-choice-background-off-active:var(--color-surface-high);--RadioGroup-choice-color-on:var(--color-surface-lowest);--RadioGroup-choice-background-on:var(--color-primary);--RadioGroup-choice-background-on-hover:var(--color-brand-hover);--RadioGroup-choice-background-on-active:var(--color-brand-active)}.excalidraw .RadioGroup{align-items:flex-start;background:var(--RadioGroup-background);border:1px solid var(--RadioGroup-border);border-radius:10px;box-sizing:border-box;display:flex;flex-direction:row;padding:3px}.excalidraw .RadioGroup__choice{align-items:center;background:var(--RadioGroup-choice-background-off);border-radius:8px;color:var(--RadioGroup-choice-color-off);display:flex;font-family:Assistant;font-size:.75rem;font-style:normal;font-weight:600;height:24px;justify-content:center;letter-spacing:.4px;line-height:100%;position:relative;transition:all 75ms ease-out;-webkit-user-select:none;user-select:none;width:32px}.excalidraw .RadioGroup__choice:hover{color:var(--RadioGroup-choice-color-off-hover)}.excalidraw .RadioGroup__choice:active{background:var(--RadioGroup-choice-background-off-active)}.excalidraw .RadioGroup__choice.active{background:var(--RadioGroup-choice-background-on);color:var(--RadioGroup-choice-color-on)}.excalidraw .RadioGroup__choice.active:hover{background:var(--RadioGroup-choice-background-on-hover)}.excalidraw .RadioGroup__choice.active:active{background:var(--RadioGroup-choice-background-on-active)}.excalidraw .RadioGroup__choice input{-webkit-appearance:none;appearance:none;border-radius:8px;cursor:pointer;height:100%;margin:0;padding:0;position:absolute;width:100%;z-index:1}.excalidraw{--Switch-disabled-color:var(--color-border-outline);--Switch-disabled-toggled-background:var(--color-border-outline-variant);--Switch-disabled-border:var(--color-border-outline-variant);--Switch-track-background:var(--island-bg-color);--Switch-thumb-background:var(--color-on-surface);--Switch-hover-background:var(--color-brand-hover);--Switch-active-background:var(--color-brand-active)}.excalidraw .Switch{background:var(--Switch-track-background);border:1px solid var(--Switch-disabled-color);border-radius:12px;box-sizing:border-box;height:20px;position:relative;transition-duration:.15s;transition-property:background,border;transition-timing-function:ease-out;width:40px}.excalidraw .Switch:hover{background:var(--Switch-track-background);border:1px solid var(--Switch-hover-background)}.excalidraw .Switch:active{border:1px solid var(--Switch-active-background)}.excalidraw .Switch.toggled{background:var(--color-primary);border:1px solid var(--color-primary)}.excalidraw .Switch.toggled:hover{background:var(--color-primary-darker);border:1px solid var(--color-primary-darker)}.excalidraw .Switch.disabled{background:var(--Switch-track-background);border:1px solid var(--Switch-disabled-border)}.excalidraw .Switch.disabled.toggled{background:var(--Switch-disabled-toggled-background);border:1px solid var(--Switch-disabled-toggled-background)}.excalidraw .Switch:before{background:var(--Switch-thumb-background);border-radius:100%;box-sizing:border-box;content:"";display:block;height:10px;left:4px;pointer-events:none;position:absolute;top:4px;transition:all .15s ease-out;width:10px}.excalidraw .Switch:active:before{width:12px}.excalidraw .Switch.toggled:before{background:var(--Switch-track-background);height:14px;left:22px;top:2px;width:14px}.excalidraw .Switch.toggled:active:before{left:20px;width:16px}.excalidraw .Switch.disabled.toggled:before,.excalidraw .Switch.disabled:before{background:var(--Switch-disabled-color)}.excalidraw .Switch input{-webkit-appearance:none;appearance:none;border-radius:12px;cursor:pointer;height:100%;margin:0;width:100%}.excalidraw .Switch input:disabled{cursor:unset}.excalidraw{--ImageExportModal-preview-border:#d6d6d6}.excalidraw.theme--dark{--ImageExportModal-preview-border:#5c5c5c}.excalidraw .ImageExportModal{display:flex;flex-direction:row;justify-content:space-between;-webkit-user-select:none;user-select:none}.excalidraw .ImageExportModal h3{font-family:Assistant;font-size:1.313rem;font-style:normal;font-weight:700;line-height:130%;margin:0;padding:0}.excalidraw .ImageExportModal>h3,.excalidraw--mobile.excalidraw .ImageExportModal h3{display:none}.excalidraw--mobile.excalidraw .ImageExportModal>h3{display:block}.excalidraw--mobile.excalidraw .ImageExportModal{flex-direction:column;height:calc(100vh - 5rem)}.excalidraw .ImageExportModal__preview{align-items:center;box-sizing:border-box;display:flex;flex-direction:column;height:360px;margin-right:1.5rem;width:55%}.excalidraw--mobile.excalidraw .ImageExportModal__preview{flex-grow:1;height:unset;margin-right:unset;max-width:unset;width:100%}.excalidraw .ImageExportModal__preview__filename>input{margin-top:1rem}.excalidraw .ImageExportModal__preview__canvas{align-items:center;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==) 0;border:1px solid var(--ImageExportModal-preview-border);border-radius:12px;box-sizing:border-box;display:flex;flex-grow:1;height:100%;justify-content:center;overflow:hidden;padding:1rem;width:100%}.excalidraw .ImageExportModal__preview__canvas>canvas{filter:none!important;max-height:calc(100% - 2rem);max-width:calc(100% - 2rem)}.excalidraw--mobile.excalidraw .ImageExportModal__preview__canvas>canvas{max-height:100%}.excalidraw--mobile.excalidraw .ImageExportModal__preview__canvas{margin-top:24px;max-width:unset}.excalidraw .ImageExportModal__settings{display:flex;flex-direction:column;flex-wrap:wrap;gap:18px}.excalidraw--mobile.excalidraw .ImageExportModal__settings{align-content:flex-start;flex-direction:row;gap:6px 34px;margin-left:unset;margin-top:1rem}.excalidraw .ImageExportModal__settings__setting{align-items:center;display:flex;flex-direction:row;justify-content:space-between}.excalidraw--mobile.excalidraw .ImageExportModal__settings__setting{align-items:start;flex-direction:column;height:52px;justify-content:unset}.excalidraw .ImageExportModal__settings__setting__label{align-items:center;display:flex;flex-direction:row;font-family:Assistant;font-size:1rem;font-weight:600;line-height:150%}.excalidraw .ImageExportModal__settings__setting__label svg{height:20px;margin-left:10px;width:20px}.excalidraw .ImageExportModal__settings__setting__content{align-items:center;display:flex;height:100%}.excalidraw .ImageExportModal__settings__buttons{align-content:flex-end;align-items:flex-end;display:flex;flex-direction:row;flex-grow:1;flex-wrap:wrap;gap:11px}.excalidraw--mobile.excalidraw .ImageExportModal__settings__buttons{flex-basis:100%;justify-content:center;padding-top:32px}.excalidraw .ExcButton{--text-color:transparent;--border-color:transparent;--back-color:transparent;background-color:var(--back-color);border-color:var(--border-color);border-radius:.5rem;border-style:solid;border-width:1px;color:var(--text-color);font-family:var(--font-family);transition:all .15s ease-out;-webkit-user-select:none;user-select:none}.excalidraw .ExcButton .Spinner{--spinner-color:var(--color-surface-lowest);position:absolute;visibility:visible}.excalidraw .ExcButton[disabled]{pointer-events:none}.excalidraw .ExcButton[disabled] .ExcButton__contents{visibility:hidden}.excalidraw .ExcButton,.excalidraw .ExcButton__contents{align-items:center;display:flex;flex-shrink:0;flex-wrap:nowrap;justify-content:center;position:relative}.excalidraw .ExcButton--color-primary.ExcButton--variant-filled{--text-color:var(--color-surface-lowest);--back-color:var(--color-primary)}.excalidraw .ExcButton--color-primary.ExcButton--variant-filled .Spinner{--spinner-color:var(--text-color)}.excalidraw .ExcButton--color-primary.ExcButton--variant-filled:hover{--back-color:var(--color-brand-hover)}.excalidraw .ExcButton--color-primary.ExcButton--variant-filled:active{--back-color:var(--color-brand-active)}.excalidraw .ExcButton--color-primary.ExcButton--variant-icon,.excalidraw .ExcButton--color-primary.ExcButton--variant-outlined{--text-color:var(--color-primary);--border-color:var(--color-primary);--back-color:transparent}.excalidraw .ExcButton--color-primary.ExcButton--variant-icon .Spinner,.excalidraw .ExcButton--color-primary.ExcButton--variant-outlined .Spinner{--spinner-color:var(--text-color)}.excalidraw .ExcButton--color-primary.ExcButton--variant-icon:hover,.excalidraw .ExcButton--color-primary.ExcButton--variant-outlined:hover{--text-color:var(--color-brand-hover);--border-color:var(--color-brand-hover)}.excalidraw .ExcButton--color-primary.ExcButton--variant-icon:active,.excalidraw .ExcButton--color-primary.ExcButton--variant-outlined:active{--text-color:var(--color-brand-active);--border-color:var(--color-brand-active)}.excalidraw .ExcButton--color-danger.ExcButton--variant-filled{--text-color:var(--color-danger-text);--back-color:var(--color-danger-dark)}.excalidraw .ExcButton--color-danger.ExcButton--variant-filled .Spinner{--spinner-color:var(--text-color)}.excalidraw .ExcButton--color-danger.ExcButton--variant-filled:hover{--back-color:var(--color-danger-darker)}.excalidraw .ExcButton--color-danger.ExcButton--variant-filled:active{--back-color:var(--color-danger-darkest)}.excalidraw .ExcButton--color-danger.ExcButton--variant-icon,.excalidraw .ExcButton--color-danger.ExcButton--variant-outlined{--text-color:var(--color-danger);--border-color:var(--color-danger);--back-color:transparent}.excalidraw .ExcButton--color-danger.ExcButton--variant-icon .Spinner,.excalidraw .ExcButton--color-danger.ExcButton--variant-outlined .Spinner{--spinner-color:var(--text-color)}.excalidraw .ExcButton--color-danger.ExcButton--variant-icon:hover,.excalidraw .ExcButton--color-danger.ExcButton--variant-outlined:hover{--text-color:var(--color-danger-darkest);--border-color:var(--color-danger-darkest)}.excalidraw .ExcButton--color-danger.ExcButton--variant-icon:active,.excalidraw .ExcButton--color-danger.ExcButton--variant-outlined:active{--text-color:var(--color-danger-darker);--border-color:var(--color-danger-darker)}.excalidraw .ExcButton--color-muted.ExcButton--variant-filled{--text-color:var(--island-bg-color);--back-color:var(--color-gray-50)}.excalidraw .ExcButton--color-muted.ExcButton--variant-filled .Spinner{--spinner-color:var(--text-color)}.excalidraw .ExcButton--color-muted.ExcButton--variant-filled:hover{--back-color:var(--color-gray-60)}.excalidraw .ExcButton--color-muted.ExcButton--variant-filled:active{--back-color:var(--color-gray-80)}.excalidraw .ExcButton--color-muted.ExcButton--variant-icon,.excalidraw .ExcButton--color-muted.ExcButton--variant-outlined{--text-color:var(--color-muted-background);--border-color:var(--color-muted);--back-color:var(--island-bg-color)}.excalidraw .ExcButton--color-muted.ExcButton--variant-icon .Spinner,.excalidraw .ExcButton--color-muted.ExcButton--variant-outlined .Spinner{--spinner-color:var(--text-color)}.excalidraw .ExcButton--color-muted.ExcButton--variant-icon:hover,.excalidraw .ExcButton--color-muted.ExcButton--variant-outlined:hover{--text-color:var(--color-muted-background-darker);--border-color:var(--color-muted-darker)}.excalidraw .ExcButton--color-muted.ExcButton--variant-icon:active,.excalidraw .ExcButton--color-muted.ExcButton--variant-outlined:active{--text-color:var(--color-muted-background-darker);--border-color:var(--color-muted-darkest)}.excalidraw .ExcButton--color-warning.ExcButton--variant-filled{--text-color:#000;--back-color:var(--color-warning-dark)}.excalidraw .ExcButton--color-warning.ExcButton--variant-filled .Spinner{--spinner-color:var(--text-color)}.excalidraw .ExcButton--color-warning.ExcButton--variant-filled:hover{--back-color:var(--color-warning-darker)}.excalidraw .ExcButton--color-warning.ExcButton--variant-filled:active{--back-color:var(--color-warning-darkest)}.excalidraw .ExcButton--color-warning.ExcButton--variant-icon,.excalidraw .ExcButton--color-warning.ExcButton--variant-outlined{--text-color:var(--color-warning-dark);--border-color:var(--color-warning-dark);--back-color:var(--input-bg-color)}.excalidraw .ExcButton--color-warning.ExcButton--variant-icon .Spinner,.excalidraw .ExcButton--color-warning.ExcButton--variant-outlined .Spinner{--spinner-color:var(--text-color)}.excalidraw .ExcButton--color-warning.ExcButton--variant-icon:hover,.excalidraw .ExcButton--color-warning.ExcButton--variant-outlined:hover{--text-color:var(--color-warning-darker);--border-color:var(--color-warning-darker)}.excalidraw .ExcButton--color-warning.ExcButton--variant-icon:active,.excalidraw .ExcButton--color-warning.ExcButton--variant-outlined:active{--text-color:var(--color-warning-darkest);--border-color:var(--color-warning-darkest)}.excalidraw .ExcButton--size-large{font-size:.875rem;font-weight:600;letter-spacing:.4px;min-height:3rem;padding:.5rem 1.5rem}.excalidraw .ExcButton--size-large .ExcButton__contents{gap:.75rem}.excalidraw .ExcButton--size-medium{font-size:.75rem;font-weight:600;letter-spacing:normal;min-height:2.5rem;padding:.5rem 1rem}.excalidraw .ExcButton--size-medium .ExcButton__contents{gap:.5rem}.excalidraw .ExcButton--variant-icon{padding:.5rem .75rem;width:3rem}.excalidraw .ExcButton--fullWidth{width:100%}.excalidraw .ExcButton__icon{height:1.25rem;width:1.25rem}.excalidraw .FixedSideContainer{pointer-events:none;position:absolute}.excalidraw .FixedSideContainer>*{pointer-events:var(--ui-pointerEvents)}.excalidraw .FixedSideContainer_side_top{bottom:var(--editor-container-padding);left:var(--editor-container-padding);right:var(--editor-container-padding);top:var(--editor-container-padding);z-index:2}.excalidraw .FixedSideContainer_side_top.zen-mode{right:42px}.excalidraw .HintViewer{box-sizing:border-box;color:var(--text-primary-color);display:flex;font-size:.75rem;justify-content:center;left:0;margin-top:.5rem;max-width:100%;pointer-events:none;position:absolute;text-align:center;top:100%;width:100%}.excalidraw--mobile.excalidraw .HintViewer{padding-right:2rem;position:static}.excalidraw .HintViewer>span{padding:.25rem}.excalidraw.theme--dark .HintViewer{color:var(--color-gray-60)}.excalidraw .Stats{font-size:12px;pointer-events:var(--ui-pointerEvents);position:absolute;right:12px;top:64px;z-index:10}.excalidraw .Stats h3{margin:0 24px 8px 0;white-space:nowrap}.excalidraw .Stats .close{cursor:pointer;float:right;height:16px;width:16px}.excalidraw .Stats .close svg{height:100%;width:100%}.excalidraw .Stats table{width:100%}.excalidraw .Stats table th{border-bottom:1px solid var(--input-border-color);padding:4px}.excalidraw .Stats table tr td:nth-child(2){min-width:24px;text-align:right}:root[dir=rtl] .excalidraw .Stats{left:12px;right:auto}:root[dir=rtl] .excalidraw .Stats h3{margin:0 0 8px 24px}:root[dir=rtl] .excalidraw .Stats .close{float:left}.excalidraw--mobile.excalidraw .PasteChartDialog .Island{display:flex;flex-direction:column}.excalidraw .PasteChartDialog .container{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-around}.excalidraw--mobile.excalidraw .PasteChartDialog .container{flex-direction:column;justify-content:center}.excalidraw .PasteChartDialog .ChartPreview{align-items:center;background:transparent;border:1px solid #ced4da;border-radius:2px;display:flex;height:128px;justify-content:center;margin:8px;padding:1px;text-align:center;width:192px}.excalidraw .PasteChartDialog .ChartPreview div{display:inline-block}.excalidraw .PasteChartDialog .ChartPreview svg{max-height:120px;max-width:186px}.excalidraw .PasteChartDialog .ChartPreview:hover{border:2px solid #339af0;padding:0}.excalidraw .HelpDialog .Modal__content{max-width:960px}.excalidraw .HelpDialog h3{font-size:1.125rem;font-weight:700;margin:1.5rem 0}.excalidraw .HelpDialog__header{display:flex;flex-wrap:wrap;gap:.75rem}.excalidraw .HelpDialog__btn{--background:var(--color-surface-mid);align-items:center;background-color:var(--background);border:1px solid var(--background);border-radius:var(--border-radius-lg);color:var(--text-primary-color);column-gap:.5rem;display:flex;font-size:.75rem;font-weight:600;letter-spacing:.4px;padding:.625rem 1rem}.excalidraw.theme--dark.excalidraw .HelpDialog__btn{--background:var(--color-surface-high)}.excalidraw.theme--dark.excalidraw .HelpDialog__btn:hover{--background:#363541}.excalidraw .HelpDialog__btn:hover{--background:var(--color-surface-high);text-decoration:none}.excalidraw .HelpDialog__btn:active{border-color:var(--color-primary)}.excalidraw .HelpDialog__link-icon{line-height:0}.excalidraw .HelpDialog__link-icon svg{height:1rem;width:1rem}.excalidraw .HelpDialog__islands-container{display:grid;grid-column-gap:1.5rem;grid-row-gap:2rem}@media screen and (min-width:1024px){.excalidraw .HelpDialog__islands-container{grid-template-columns:1fr 1fr}.excalidraw .HelpDialog__island--tools{grid-area:1/1/2/2}.excalidraw .HelpDialog__island--view{grid-area:2/1/3/2}.excalidraw .HelpDialog__island--editor{grid-area:1/2/3/3}}.excalidraw .HelpDialog__island h4{font-size:1rem;font-weight:700;margin:0 0 .625rem}.excalidraw .HelpDialog__island-content{border:1px solid var(--dialog-border-color);border-radius:var(--border-radius-lg)}.excalidraw .HelpDialog__shortcut{align-items:center;border-bottom:1px solid var(--dialog-border-color);column-gap:.5rem;display:flex;font-size:.875rem;justify-content:space-between;padding:.375rem .75rem}.excalidraw .HelpDialog__shortcut:last-child{border-bottom:none}.excalidraw .HelpDialog__key-container{align-items:center;column-gap:.25rem;display:flex;flex-shrink:0}.excalidraw .HelpDialog__key{align-items:center;background-color:var(--color-primary-light);border-radius:var(--border-radius-md);box-sizing:border-box;display:flex;font-family:inherit;font-size:.625rem;line-height:1;padding:.5rem;word-break:keep-all}.excalidraw{--userlist-hint-bg-color:var(--color-gray-10);--userlist-hint-heading-color:var(--color-gray-80);--userlist-hint-text-color:var(--color-gray-60);--userlist-collaborators-border-color:var(--color-gray-20)}.excalidraw .UserList{align-items:center;box-sizing:border-box;display:flex;flex-wrap:wrap;gap:.625rem;justify-content:flex-end;max-height:120px;max-width:120px;overflow:hidden;padding:var(--space-factor) var(--space-factor) var(--space-factor) var(--space-factor);pointer-events:none}.excalidraw .UserList:empty{display:none}.excalidraw .UserList>*{pointer-events:var(--ui-pointerEvents)}.excalidraw .UserList_mobile{justify-content:normal;margin:.5rem 0;max-height:none;max-width:none;padding:0}.excalidraw .UserList__more{align-items:center;background-color:var(--color-gray-20);border:0!important;border-radius:100%;color:var(--color-gray-90);color:var(--color-gray-100);cursor:pointer;display:flex;flex:0 0 auto;flex-shrink:0;font-size:.75rem;font-size:.5rem;font-weight:800;font-weight:400;height:1.25rem;justify-content:center;line-height:1;outline-offset:2px;position:relative;width:1.25rem}.excalidraw .UserList__more-img{border-radius:100%;height:100%;width:100%}.excalidraw .UserList__more:before{border:1px solid var(--avatar-border-color);border-radius:100%;bottom:-3px;content:"";left:-3px;position:absolute;right:-3px;top:-3px}.excalidraw .UserList__more--is-followed:before{border-color:var(--color-primary-hover)}.excalidraw .UserList__more--is-current-user{cursor:auto}.excalidraw .UserList__collaborator-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.excalidraw .UserList__collaborator-follow-status-icon{display:flex;flex:0 0 auto;margin-left:auto;width:1rem}.excalidraw.theme--dark{--userlist-hint-bg-color:var(--color-gray-90);--userlist-hint-heading-color:var(--color-gray-30);--userlist-hint-text-color:var(--color-gray-40);--userlist-collaborators-border-color:var(--color-gray-80)}.excalidraw .UserList__collaborators{border-bottom:1px solid var(--userlist-collaborators-border-color);border-top:1px solid var(--userlist-collaborators-border-color);margin-top:0;max-height:12rem;overflow-y:auto;padding:.25rem .5rem;position:static;top:auto}.excalidraw .UserList__collaborators__empty{color:var(--color-gray-60);font-size:.75rem;line-height:150%;padding:.5rem 0}.excalidraw .UserList__hint{color:var(--userlist-hint-text-color);font-size:.75rem;line-height:150%;overflow:hidden;padding:.5rem .75rem;text-align:center}.excalidraw .UserList__search-wrapper{height:2.5rem;position:relative}.excalidraw .UserList__search-wrapper svg{color:var(--color-gray-40);height:1.25rem;left:.75rem;position:absolute;top:50%;transform:translateY(-50%);width:1.25rem;z-index:1}.excalidraw .UserList__search{border:0!important;border-radius:0!important;box-sizing:border-box;font-size:.875rem;left:0;padding-left:2.5rem!important;padding-right:.75rem!important;position:absolute;top:0;width:100%}.excalidraw .UserList__search::placeholder{color:var(--color-gray-40)}.excalidraw .UserList__search:focus{box-shadow:none!important}.excalidraw .Card{align-items:center;display:flex;flex-direction:column;margin:1em;max-width:290px;text-align:center}.excalidraw .Card .Card-icon{background:var(--card-color);border-radius:50%;color:#fff;display:flex;flex:0 0 auto;font-size:2.6em;padding:1.4rem}.excalidraw .Card .Card-icon svg{height:2.8rem;width:2.8rem}.excalidraw .Card .Card-details{font-size:.96em;margin-bottom:auto;min-height:90px;padding:0 1em}.excalidraw .Card .Card-button.ToolIcon_type_button{background-color:var(--card-color);height:2.5rem;margin-bottom:.3em;margin-top:1em}.excalidraw .Card .Card-button.ToolIcon_type_button:hover{background-color:var(--card-color-darker)}.excalidraw .Card .Card-button.ToolIcon_type_button:active{background-color:var(--card-color-darkest)}.excalidraw .Card .Card-button.ToolIcon_type_button .ToolIcon__label{color:#fff}.excalidraw .Card .Card-button.ToolIcon_type_button .Spinner{--spinner-color:#fff}.excalidraw .ExportDialog__preview{--preview-padding:calc(var(--space-factor)*4);align-items:center;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==) 0;display:flex;justify-content:center;margin-bottom:calc(var(--space-factor)*3);padding:var(--preview-padding);text-align:center}.excalidraw .ExportDialog__preview canvas{max-height:25rem;max-width:calc(100% - var(--preview-padding)*2)}.excalidraw.theme--dark .ExportDialog__preview canvas{filter:none}.excalidraw .ExportDialog__actions{display:flex;width:100%;grid-gap:calc(var(--space-factor)*2);align-items:top;justify-content:space-between}.excalidraw--mobile.excalidraw .ExportDialog{display:flex;flex-direction:column}.excalidraw--mobile.excalidraw .ExportDialog__actions{align-items:center;flex-direction:column}.excalidraw--mobile.excalidraw .ExportDialog__actions>*{margin-bottom:calc(var(--space-factor)*3)}.excalidraw--mobile.excalidraw .ExportDialog__preview canvas{max-height:30vh}.excalidraw--mobile.excalidraw .ExportDialog__dialog,.excalidraw--mobile.excalidraw .ExportDialog__dialog .Island{box-sizing:border-box;height:100%}.excalidraw--mobile.excalidraw .ExportDialog__dialog .Island{overflow-y:auto}.excalidraw .ExportDialog--json .ExportDialog-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));justify-items:center;row-gap:2em}@media(max-width:460px){.excalidraw .ExportDialog--json .ExportDialog-cards{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.excalidraw .ExportDialog--json .ExportDialog-cards .Card-details{min-height:40px}}.excalidraw .ExportDialog--json .ExportDialog-cards .ProjectName{align-items:flex-start;flex-direction:column;margin:1em auto;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.excalidraw .ExportDialog--json .ExportDialog-cards .ProjectName .TextInput{width:auto}.excalidraw .ExportDialog--json .ExportDialog-cards .ProjectName-label{font-weight:700;margin:.625em 0}.excalidraw button.ExportDialog-imageExportButton{align-items:center;background-color:var(--button-color);border:0;border-radius:1rem;box-shadow:0 3px 5px -1px rgba(0,0,0,.28),0 6px 10px 0 rgba(0,0,0,.14);color:#fff;display:flex;font-family:Cascadia;font-size:1.8em;height:5rem;justify-content:center;margin:0 .2em;padding:0;width:5rem}.excalidraw button.ExportDialog-imageExportButton:hover{background-color:var(--button-color-darker)}.excalidraw button.ExportDialog-imageExportButton:active{background-color:var(--button-color-darkest);box-shadow:none}.excalidraw button.ExportDialog-imageExportButton svg{width:.9em}.excalidraw .sidebar-trigger{align-items:center;background-color:var(--button-bg,var(--island-bg-color));background-color:var(--color-surface-low);border:none;border-radius:var(--border-radius-lg);box-shadow:0 0 0 1px var(--color-surface-lowest);box-sizing:border-box;color:var(--button-color,var(--color-on-surface));cursor:pointer;display:flex;font-family:var(--ui-font);font-size:.75rem;gap:.5rem;height:var(--button-height,var(--default-button-size));height:var(--lg-button-size);justify-content:center;letter-spacing:.4px;line-height:0;padding:.625rem;width:var(--button-width,var(--default-button-size));width:auto}.excalidraw .sidebar-trigger svg{height:var(--button-height,var(--lg-icon-size));width:var(--button-width,var(--lg-icon-size))}.excalidraw .sidebar-trigger:hover{background-color:var(--button-hover-bg,var(--island-bg-color));border-color:var(--button-hover-border,var(--button-border,var(--default-border-color)));color:var(--button-hover-color,var(--button-color,var(--text-primary-color,inherit)))}.excalidraw .sidebar-trigger:active{background-color:var(--button-active-bg,var(--island-bg-color));border-color:var(--button-active-border,var(--color-primary-darkest))}.excalidraw .sidebar-trigger.active{background-color:var(--button-selected-bg,var(--color-surface-primary-container));border-color:var(--button-selected-border,var(--color-surface-primary-container))}.excalidraw .sidebar-trigger.active:hover{background-color:var(--button-selected-hover-bg,var(--color-surface-primary-container))}.excalidraw .sidebar-trigger.active svg{color:var(--button-color,var(--color-on-primary-container))}.excalidraw .sidebar-trigger:active{box-shadow:0 0 0 1px var(--color-brand-active)}.excalidraw .sidebar-trigger svg{height:var(--lg-icon-size);width:var(--lg-icon-size)}.excalidraw .sidebar-trigger__label-element{align-self:flex-start}.excalidraw .default-sidebar-trigger .sidebar-trigger__label{display:block;white-space:nowrap}.excalidraw.excalidraw--mobile .default-sidebar-trigger .sidebar-trigger__label{display:none}.excalidraw .sidebar{background-color:var(--sidebar-bg-color);border-left:1px solid var(--sidebar-border-color);border-radius:0;bottom:0;box-shadow:var(--sidebar-shadow);box-sizing:border-box;display:flex;flex-direction:column;margin:0;overflow:hidden;padding:0;pointer-events:var(--ui-pointerEvents);position:absolute;right:0;top:0;width:calc(302px - var(--space-factor)*2);z-index:5}:root[dir=rtl] .excalidraw .sidebar{left:0;right:auto}.excalidraw .sidebar--docked{box-shadow:none}:root[dir=rtl] .excalidraw .sidebar{border-left:0;border-right:1px solid var(--sidebar-border-color)}.excalidraw .sidebar__header{align-items:center;box-sizing:border-box;display:flex;justify-content:space-between;padding:1rem .75rem;position:relative;width:100%}.excalidraw .sidebar__header:after{background:var(--sidebar-border-color);bottom:-1px;content:"";height:1px;position:absolute;width:calc(100% - 1.5rem)}.excalidraw .sidebar__header__buttons{align-items:center;display:flex;gap:0;margin-left:auto}.excalidraw .sidebar__header__buttons button{align-items:center;background-color:var(--button-bg,var(--island-bg-color));border-color:var(--button-border,var(--default-border-color));border-radius:var(--border-radius-lg);border-style:solid;border-width:1px;box-sizing:border-box;color:var(--button-color,var(--color-on-surface));cursor:pointer;display:flex;font-family:var(--ui-font);height:var(--button-height,var(--default-button-size));justify-content:center;width:var(--button-width,var(--default-button-size));--button-bg:transparent;border:0!important;height:var(--lg-button-size);padding:0;width:var(--lg-button-size)}.excalidraw .sidebar__header__buttons button svg{height:var(--button-height,var(--lg-icon-size));width:var(--button-width,var(--lg-icon-size))}.excalidraw .sidebar__header__buttons button:hover{background-color:var(--button-hover-bg,var(--island-bg-color));border-color:var(--button-hover-border,var(--button-border,var(--default-border-color)));color:var(--button-hover-color,var(--button-color,var(--text-primary-color,inherit)))}.excalidraw .sidebar__header__buttons button:active{background-color:var(--button-active-bg,var(--island-bg-color));border-color:var(--button-active-border,var(--color-primary-darkest))}.excalidraw .sidebar__header__buttons button.active{background-color:var(--button-selected-bg,var(--color-surface-primary-container));border-color:var(--button-selected-border,var(--color-surface-primary-container))}.excalidraw .sidebar__header__buttons button.active:hover{background-color:var(--button-selected-hover-bg,var(--color-surface-primary-container))}.excalidraw .sidebar__header__buttons button.active svg{color:var(--button-color,var(--color-on-primary-container))}.excalidraw .sidebar__header__buttons button svg{height:var(--lg-icon-size);width:var(--lg-icon-size)}.excalidraw .sidebar__header__buttons button:hover{background:var(--button-hover-bg,var(--island-bg-color))}.excalidraw .sidebar__header__buttons .sidebar__dock.selected svg{stroke:var(--color-primary);fill:var(--color-primary)}.excalidraw .sidebar-tabs-root{display:flex;flex:1 1 auto;flex-direction:column;padding:1rem 0}.excalidraw .sidebar-tabs-root [role=tabpanel]{display:flex;flex:1;flex:1 1 auto;flex-direction:column;outline:none}.excalidraw .sidebar-tabs-root [role=tabpanel][data-state=inactive]{display:none!important}.excalidraw .sidebar-tabs-root [role=tablist]{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.excalidraw .sidebar-tabs-root>.sidebar__header{padding-bottom:1rem;padding-top:0}.excalidraw .sidebar-tab-trigger{--button-width:auto;--button-bg:transparent;--button-hover-bg:transparent;--button-active-bg:var(--color-primary);--button-hover-color:var(--color-primary);--button-hover-border:var(--color-primary)}.excalidraw .sidebar-tab-trigger[data-state=active]{--button-bg:var(--color-primary);--button-hover-bg:var(--color-primary-darker);--button-hover-color:var(--color-icon-white);--button-border:var(--color-primary);color:var(--color-icon-white)}.excalidraw .default-sidebar{display:flex;flex-direction:column}.excalidraw .default-sidebar .sidebar-triggers{background:var(--default-bg-color);border:1px solid var(--sidebar-border-color);border-radius:.625rem;display:flex;gap:0;margin-bottom:-3px;margin-top:-3px;padding:2px}.excalidraw .default-sidebar .sidebar-triggers .sidebar-tab-trigger{border:none;height:var(--lg-button-size);width:var(--lg-button-size)}.excalidraw .ActiveFile .ActiveFile__fileName{align-items:center;display:flex}.excalidraw .ActiveFile .ActiveFile__fileName span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:9.3em}.excalidraw .ActiveFile .ActiveFile__fileName svg{margin-inline-end:.3em;transform:scaleY(.9);width:1.15em}.excalidraw .OverwriteConfirm{align-items:center;display:flex;flex-direction:column;gap:.75rem;isolation:isolate}.excalidraw .OverwriteConfirm h3{align-self:flex-start;color:var(--text-primary-color);font-size:1.3125rem;font-weight:700;line-height:130%;margin:0}.excalidraw .OverwriteConfirm__Description{align-items:center;background:var(--color-danger-background);border-radius:.5rem;box-sizing:border-box;color:var(--color-danger-color);display:flex;flex-direction:row;font-family:Assistant;font-size:1rem;font-style:normal;font-weight:400;gap:1rem;line-height:150%;padding:2.5rem;width:100%}.excalidraw--mobile.excalidraw .OverwriteConfirm__Description{flex-direction:column;text-align:center}.excalidraw .OverwriteConfirm__Description__spacer{flex-grow:1}.excalidraw .OverwriteConfirm__Description__icon{align-items:center;background:var(--color-danger-icon-background);border-radius:2.5rem;box-sizing:border-box;display:flex;height:3.5rem;justify-content:center;padding:.75rem;width:3.5rem}.excalidraw .OverwriteConfirm__Description__icon svg{color:var(--color-danger-icon-color);height:1.5rem;width:1.5rem}.excalidraw .OverwriteConfirm__Description.OverwriteConfirm__Description--color-warning{background:var(--color-warning-background);color:var(--color-warning-color)}.excalidraw .OverwriteConfirm__Description.OverwriteConfirm__Description--color-warning .OverwriteConfirm__Description__icon{background:var(--color-warning-icon-background);flex:0 0 auto}.excalidraw .OverwriteConfirm__Description.OverwriteConfirm__Description--color-warning .OverwriteConfirm__Description__icon svg{color:var(--color-warning-icon-color)}.excalidraw .OverwriteConfirm__Actions{align-items:stretch;display:flex;flex-direction:row;gap:1.5rem;justify-content:center;justify-items:stretch}.excalidraw--mobile.excalidraw .OverwriteConfirm__Actions{flex-direction:column}.excalidraw .OverwriteConfirm__Actions__Action{align-items:center;display:flex;flex-basis:50%;flex-direction:column;flex-grow:0;gap:.75rem;padding:1.5rem}.excalidraw .OverwriteConfirm__Actions__Action__content{font-size:.875rem;height:100%;text-align:center}.excalidraw .OverwriteConfirm__Actions__Action h4{color:var(--text-primary-color);font-size:1.125rem;font-weight:700;line-height:130%;margin:0}.excalidraw .layer-ui__wrapper.animate{transition:width .1s ease-in-out}.excalidraw .layer-ui__wrapper{height:100%;pointer-events:none;position:absolute;width:100%;z-index:var(--zIndex-layerUI)}.excalidraw .layer-ui__wrapper__top-right{display:flex}.excalidraw .layer-ui__wrapper__footer{width:100%}.excalidraw .layer-ui__wrapper__footer-right{display:flex;z-index:100}.excalidraw .layer-ui__wrapper .zen-mode-transition{transition:transform .5s ease-in-out}:root[dir=ltr] .excalidraw .layer-ui__wrapper .zen-mode-transition.transition-left{transform:translate(-999px)}:root[dir=ltr] .excalidraw .layer-ui__wrapper .zen-mode-transition.transition-right,:root[dir=rtl] .excalidraw .layer-ui__wrapper .zen-mode-transition.transition-left{transform:translate(999px)}:root[dir=rtl] .excalidraw .layer-ui__wrapper .zen-mode-transition.transition-right{transform:translate(-999px)}.excalidraw .layer-ui__wrapper .zen-mode-transition.layer-ui__wrapper__footer-left--transition-bottom{transform:translateY(92px)}.excalidraw .layer-ui__wrapper .disable-zen-mode{background-color:var(--island-bg-color);border:1px solid var(--default-border-color);border-radius:var(--border-radius-lg);bottom:0;color:var(--text-primary-color);font-family:var(--ui-font);font-size:.75rem;font-weight:500;line-height:1;opacity:0;padding:10px;position:absolute;transition:visibility 0s linear 0s,opacity .5s;visibility:hidden}[dir=ltr] .excalidraw .layer-ui__wrapper .disable-zen-mode{right:1rem}[dir=rtl] .excalidraw .layer-ui__wrapper .disable-zen-mode{left:1rem}.excalidraw .layer-ui__wrapper .disable-zen-mode:hover{background-color:var(--button-hover-bg)}.excalidraw .layer-ui__wrapper .disable-zen-mode:active{border-color:var(--color-primary)}.excalidraw .layer-ui__wrapper .disable-zen-mode--visible{opacity:1;pointer-events:var(--ui-pointerEvents);transition:visibility 0s linear .3s,opacity .5s;transition-delay:.8s;visibility:visible}.excalidraw .layer-ui__wrapper .footer-center>*,.excalidraw .layer-ui__wrapper .layer-ui__wrapper__footer-left>*,.excalidraw .layer-ui__wrapper .layer-ui__wrapper__footer-right>*{pointer-events:var(--ui-pointerEvents)}.excalidraw .layer-ui__wrapper .layer-ui__wrapper__footer-right{margin-bottom:auto;margin-top:auto}.excalidraw .App-toolbar.zen-mode .HintViewer,.excalidraw .App-toolbar.zen-mode .ToolIcon__keybinding{display:none}.excalidraw .App-toolbar__divider{align-self:center;background-color:var(--default-border-color);height:1.5rem;margin:0 .25rem;width:1px}.excalidraw--mobile.excalidraw .App-toolbar__divider{margin:0}.excalidraw .App-toolbar__extra-tools-trigger{background-color:transparent;border:0;box-shadow:none}.excalidraw .App-toolbar__extra-tools-trigger:active{background-color:var(--button-hover-bg);box-shadow:0 0 0 1px var(--button-active-border,var(--color-primary-darkest)) inset}.excalidraw .App-toolbar__extra-tools-trigger--selected,.excalidraw .App-toolbar__extra-tools-trigger--selected:hover{background:var(--color-primary-light);color:var(--color-primary)}.excalidraw .App-toolbar__extra-tools-dropdown{margin-top:.375rem;min-width:11.875rem;right:0;z-index:1}.excalidraw{--ExcTextField--color:var(--color-on-surface);--ExcTextField--label-color:var(--color-on-surface);--ExcTextField--background:transparent;--ExcTextField--readonly--background:var(--color-surface-high);--ExcTextField--readonly--color:var(--color-on-surface);--ExcTextField--border:var(--color-border-outline);--ExcTextField--readonly--border:var(--color-border-outline-variant);--ExcTextField--border-hover:var(--color-brand-hover);--ExcTextField--border-active:var(--color-brand-active);--ExcTextField--placeholder:var(--color-border-outline-variant)}.excalidraw .ExcTextField--fullWidth{flex-grow:1;width:100%}.excalidraw .ExcTextField__label{color:var(--ExcTextField--label-color);font-family:Assistant;font-size:.875rem;font-style:normal;font-weight:600;line-height:150%;margin-bottom:.25rem;-webkit-user-select:none;user-select:none}.excalidraw .ExcTextField__input{align-items:center;background:var(--ExcTextField--background);border:1px solid var(--ExcTextField--border);border-radius:.5rem;box-sizing:border-box;display:flex;flex-direction:row;height:3rem;padding:0 1rem}.excalidraw .ExcTextField__input:not(.excalidraw .ExcTextField__input--readonly):hover{border-color:var(--ExcTextField--border-hover)}.excalidraw .ExcTextField__input:not(.excalidraw .ExcTextField__input--readonly):active,.excalidraw .ExcTextField__input:not(.excalidraw .ExcTextField__input--readonly):focus-within{border-color:var(--ExcTextField--border-active)}.excalidraw .ExcTextField__input input{align-items:center;background:transparent;border:none;color:var(--ExcTextField--color);display:flex;font-family:Assistant;font-size:1rem;font-style:normal;font-weight:400;height:1.5rem;line-height:150%;margin:0;outline:none;padding:0;text-overflow:ellipsis;width:100%}.excalidraw .ExcTextField__input input::placeholder{color:var(--ExcTextField--placeholder)}.excalidraw .ExcTextField__input input:not(:focus):hover{background-color:initial}.excalidraw .ExcTextField__input input:focus{box-shadow:none;outline:initial}.excalidraw .ExcTextField__input--readonly{background:var(--ExcTextField--readonly--background);border-color:var(--ExcTextField--readonly--border)}.excalidraw .ExcTextField__input--readonly input{color:var(--ExcTextField--readonly--color)}.excalidraw .MagicSettings .Island{display:flex;flex-direction:column;height:100%}.excalidraw .MagicSettings-confirm{padding:.5rem 1rem}.excalidraw .MagicSettings__confirm{margin-right:auto;margin-top:2rem}.excalidraw .Modal.Dialog.ttd-dialog{padding:1.25rem}.excalidraw .Modal.Dialog.ttd-dialog.Dialog--fullscreen{margin-top:0}.excalidraw .Modal.Dialog.ttd-dialog .Island{box-shadow:none;display:flex;flex:1 1 auto;flex-direction:column;height:100%;padding-inline:0!important}.excalidraw .Modal.Dialog.ttd-dialog .Modal__content{height:auto;max-height:100%}@media screen and (min-width:861px){.excalidraw .Modal.Dialog.ttd-dialog .Modal__content{height:100%;max-height:750px}}.excalidraw .Modal.Dialog.ttd-dialog .Dialog__content{flex:1 1 auto}.excalidraw .ttd-dialog-desc{font-size:15px;font-style:italic;font-weight:500;margin-bottom:1.5rem}.excalidraw .ttd-dialog-tabs-root{display:flex;flex-direction:column;height:100%;width:100%}.excalidraw .ttd-dialog-tab-trigger{background-color:transparent;border:0;color:var(--color-on-surface);font-family:inherit;font-size:.875rem;font-weight:600;height:2.875rem;letter-spacing:.4px;margin:0;padding:0 1rem}.excalidraw .ttd-dialog-tab-trigger[data-state=active]{border-bottom:2px solid var(--color-primary)}.excalidraw .ttd-dialog-triggers{border-bottom:1px solid var(--color-surface-high);margin-bottom:1.5rem;padding-inline:2.5rem}.excalidraw .ttd-dialog-content{display:flex;flex-direction:column;height:100%;padding-inline:2.5rem}.excalidraw .ttd-dialog-content[hidden]{display:none}.excalidraw .ttd-dialog-input{border:1px solid var(--dialog-border-color);border-radius:var(--border-radius-lg);box-sizing:border-box;font-family:monospace;height:10rem;padding:.85rem;resize:none;white-space:pre-wrap;width:auto;text-wrap:wrap!important}@media screen and (min-width:861px){.excalidraw .ttd-dialog-input{height:100%;width:100%}}.excalidraw .ttd-dialog-output-wrapper{align-items:center;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==) 0;border:1px solid var(--dialog-border-color);border-radius:var(--border-radius-lg);box-sizing:border-box;display:flex;flex-grow:1;height:400px;justify-content:center;padding:.85rem;position:relative;width:auto}@media screen and (min-width:861px){.excalidraw .ttd-dialog-output-wrapper{height:200px;width:100%}}.excalidraw .ttd-dialog-output-wrapper canvas{max-height:100%;max-width:100%}.excalidraw .ttd-dialog-output-canvas-container{align-items:center;display:flex;flex-grow:1;height:100%;justify-content:center;width:100%}.excalidraw .ttd-dialog-output-error{color:red;font-size:30px;font-weight:800;height:100%;max-height:100%;overflow:auto;position:absolute;text-align:center;width:100%;word-break:break-word;z-index:10}.excalidraw .ttd-dialog-output-error p{font-family:Cascadia;font-size:.875rem;font-weight:500;padding:0 10px;text-align:left;white-space:pre-wrap}.excalidraw .ttd-dialog-panels{height:100%}@media screen and (min-width:861px){.excalidraw .ttd-dialog-panels{display:grid;gap:4rem;grid-template-columns:1fr 1fr}}.excalidraw .ttd-dialog-panel{display:flex;flex-direction:column;width:100%}.excalidraw .ttd-dialog-panel__header{align-items:center;display:flex;gap:1rem;margin:0 4px 4px}.excalidraw .ttd-dialog-panel__header label{font-size:14px;font-style:normal;font-weight:600}.excalidraw .ttd-dialog-panel:first-child .ttd-dialog-panel-button-container:not(.invisible){margin-bottom:4rem}@media screen and (min-width:861px){.excalidraw .ttd-dialog-panel .ttd-dialog-panel-button-container:not(.invisible){margin-bottom:.5rem!important}}.excalidraw .ttd-dialog-panel textarea{border:1px solid var(--dialog-border-color);border-radius:var(--border-radius-lg);box-sizing:border-box;font-family:monospace;height:100%;padding:.85rem;resize:none;white-space:pre-wrap;width:100%}@media screen and (max-width:861px){.excalidraw .ttd-dialog-panel textarea{height:10rem;width:auto}}.excalidraw .ttd-dialog-panel-button-container{margin-bottom:.5rem;margin-top:1rem}.excalidraw .ttd-dialog-panel-button-container.invisible .ttd-dialog-panel-button{display:none}@media screen and (min-width:861px){.excalidraw .ttd-dialog-panel-button-container.invisible .ttd-dialog-panel-button{display:block;visibility:hidden}}.excalidraw .ttd-dialog-panel-button{position:relative}.excalidraw .ttd-dialog-panel-button.excalidraw-button{background-color:var(--color-primary);color:#fff;font-family:inherit;font-size:12px;font-weight:600;height:2.5rem;width:100%}.excalidraw .ttd-dialog-panel-button.excalidraw-button:hover{background-color:var(--color-primary-darker)}.excalidraw .ttd-dialog-panel-button.excalidraw-button:active{background-color:var(--color-primary-darkest)}.excalidraw .ttd-dialog-panel-button.excalidraw-button:disabled{cursor:not-allowed;opacity:.5}.excalidraw .ttd-dialog-panel-button.excalidraw-button:disabled:hover{background-color:var(--color-primary)}@media screen and (min-width:861px){.excalidraw .ttd-dialog-panel-button.excalidraw-button{min-width:7.5rem;width:auto}}.excalidraw.theme--dark.excalidraw .ttd-dialog-panel-button.excalidraw-button{color:var(--color-gray-100)}.excalidraw .ttd-dialog-panel-button div{display:contents}.excalidraw .ttd-dialog-panel-button div.invisible{visibility:hidden}.excalidraw .ttd-dialog-panel-button div.Spinner{display:flex!important;inset:0;position:absolute;--spinner-color:#fff}.excalidraw.theme--dark.excalidraw .ttd-dialog-panel-button div.Spinner{--spinner-color:var(--color-gray-100)}.excalidraw .ttd-dialog-panel-button div span{display:flex;padding-left:.5rem}.excalidraw .ttd-dialog-submit-shortcut{display:flex;font-size:.625rem;gap:.125rem;margin-inline-start:.5rem;opacity:.6}.excalidraw .ttd-dialog-submit-shortcut__key{border:1px solid gray;border-radius:4px;padding:2px 3px}.excalidraw .Toast{animation:fade-in .5s;background-color:var(--button-gray-1);border-radius:4px;bottom:10px;box-sizing:border-box;cursor:default;left:50%;margin-left:-150px;padding:4px 0;position:absolute;text-align:center;width:300px;z-index:999999}.excalidraw .Toast .Toast__message{color:var(--popup-text-color);padding:0 1.6rem;white-space:pre-wrap}.excalidraw .Toast .close{padding:.4rem;position:absolute;right:0;top:0}.excalidraw .Toast .close .ToolIcon__icon{height:1.2rem;width:1.2rem}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.excalidraw .SVGLayer{height:100vh;left:0;pointer-events:none;position:fixed;top:0;width:100vw;z-index:2}.excalidraw .SVGLayer svg{height:100%;image-rendering:auto;left:0;overflow:visible;position:absolute;top:0;width:100%}.excalidraw .excalidraw-canvas-buttons{background:var(--island-bg-color);border-radius:var(--border-radius-lg);box-shadow:0 2px 4px 0 rgba(0,0,0,.3);display:flex;flex-direction:column;gap:.375rem;position:absolute;z-index:var(--zIndex-canvasButtons)}.excalidraw .follow-mode{align-items:flex-end;border:2px solid var(--color-primary-hover);box-sizing:border-box;display:flex;justify-content:center;pointer-events:none;position:absolute;z-index:9999}.excalidraw .follow-mode__badge{align-items:center;background-color:var(--color-primary-hover);border-radius:.5rem;color:var(--color-primary-light);display:flex;font-size:.75rem;gap:.5rem;margin-bottom:.5rem;padding:.25rem .5rem;pointer-events:all}.excalidraw .follow-mode__badge__label{display:flex;line-height:1;white-space:pre-wrap}.excalidraw .follow-mode__badge__username{display:block;max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.excalidraw .follow-mode__disconnect-btn{all:unset;border-radius:.25rem;cursor:pointer}.excalidraw .follow-mode__disconnect-btn:hover{background-color:var(--color-primary-darker)}.excalidraw .follow-mode__disconnect-btn:active{background-color:var(--color-primary-darkest)}.excalidraw .follow-mode__disconnect-btn svg{display:block;height:1rem;width:1rem}.visually-hidden{height:1px;overflow:hidden;position:absolute!important;width:1px;clip:rect(1px,1px,1px,1px);-webkit-user-select:none;user-select:none;white-space:nowrap}.LoadingMessage{align-items:center;bottom:0;display:flex;flex-direction:column;justify-content:center;left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:999}.LoadingMessage .Spinner{font-size:2.8em}.LoadingMessage .LoadingMessage-text{font-size:.8em;margin-top:1em}.LoadingMessage--dark{background-color:#121212;color:#ced4da}.excalidraw{--theme-filter:none;--button-destructive-bg-color:#ffe3e3;--button-destructive-color:#c92a2a;--button-gray-1:#e9ecef;--button-gray-2:#ced4da;--button-gray-3:#adb5bd;--button-special-active-bg-color:#ebfbee;--dialog-border-color:var(--color-gray-20);--dropdown-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="292.4" height="292.4" viewBox="0 0 292 292"><path d="M287 197 159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13"/></svg>');--focus-highlight-color:#a5d8ff;--icon-fill-color:var(--color-on-surface);--icon-green-fill-color:#2b8a3e;--default-bg-color:#fff;--input-bg-color:#fff;--input-border-color:#ced4da;--input-hover-bg-color:#f1f3f5;--input-label-color:#495057;--island-bg-color:#fff;--keybinding-color:var(--color-gray-40);--link-color:#1c7ed6;--overlay-bg-color:hsla(0,0%,100%,.88);--popup-bg-color:var(--island-bg-color);--popup-secondary-bg-color:#f1f3f5;--popup-text-color:#000;--popup-text-inverted-color:#fff;--select-highlight-color:#339af0;--shadow-island:0px 0px 0.9310142993927002px 0px rgba(0,0,0,.17),0px 0px 3.1270833015441895px 0px rgba(0,0,0,.08),0px 7px 14px 0px rgba(0,0,0,.05);--button-hover-bg:var(--color-surface-high);--button-active-bg:var(--color-surface-high);--button-active-border:var(--color-brand-active);--default-border-color:var(--color-surface-high);--default-button-size:2rem;--default-icon-size:1rem;--lg-button-size:2.25rem;--lg-icon-size:1rem;--editor-container-padding:1rem;--scrollbar-thumb:var(--button-gray-2);--scrollbar-thumb-hover:var(--button-gray-3);--modal-shadow:0px 100px 80px rgba(0,0,0,.07),0px 41.7776px 33.4221px rgba(0,0,0,.05),0px 22.3363px 17.869px rgba(0,0,0,.042),0px 12.5216px 10.0172px rgba(0,0,0,.035),0px 6.6501px 5.32008px rgba(0,0,0,.028),0px 2.76726px 2.21381px rgba(0,0,0,.02);--avatar-border-color:var(--color-gray-20);--sidebar-shadow:0px 100px 80px rgba(0,0,0,.07),0px 41.7776px 33.4221px rgba(0,0,0,.05),0px 22.3363px 17.869px rgba(0,0,0,.042),0px 12.5216px 10.0172px rgba(0,0,0,.035),0px 6.6501px 5.32008px rgba(0,0,0,.028),0px 2.76726px 2.21381px rgba(0,0,0,.02);--sidebar-border-color:var(--color-surface-high);--sidebar-bg-color:var(--island-bg-color);--library-dropdown-shadow:0px 15px 6px rgba(0,0,0,.01),0px 8px 5px rgba(0,0,0,.05),0px 4px 4px rgba(0,0,0,.09),0px 1px 2px rgba(0,0,0,.1),0px 0px 0px rgba(0,0,0,.1);--space-factor:0.25rem;--text-primary-color:var(--color-on-surface);--color-selection:#6965db;--color-icon-white:#fff;--color-primary:#6965db;--color-primary-darker:#5b57d1;--color-primary-darkest:#4a47b1;--color-primary-light:#e3e2fe;--color-primary-light-darker:#d7d5ff;--color-primary-hover:#5753d0;--color-gray-10:#f5f5f5;--color-gray-20:#ebebeb;--color-gray-30:#d6d6d6;--color-gray-40:#b8b8b8;--color-gray-50:#999;--color-gray-60:#7a7a7a;--color-gray-70:#5c5c5c;--color-gray-80:#3d3d3d;--color-gray-85:#242424;--color-gray-90:#1e1e1e;--color-gray-100:#121212;--color-warning:#fceeca;--color-warning-dark:#f5c354;--color-warning-darker:#f3ab2c;--color-warning-darkest:#ec8b14;--color-text-warning:var(--text-primary-color);--color-danger:#db6965;--color-danger-dark:#db6965;--color-danger-darker:#d65550;--color-danger-darkest:#d1413c;--color-danger-text:#000;--color-danger-background:#fff0f0;--color-danger-icon-background:#ffdad6;--color-danger-color:#700000;--color-danger-icon-color:#700000;--color-warning-background:var(--color-warning);--color-warning-icon-background:var(--color-warning-dark);--color-warning-color:var(--text-primary-color);--color-warning-icon-color:var(--text-primary-color);--color-muted:var(--color-gray-30);--color-muted-darker:var(--color-gray-60);--color-muted-darkest:var(--color-gray-100);--color-muted-background:var(--color-gray-80);--color-muted-background-darker:var(--color-gray-100);--color-promo:#e70078;--color-success:#268029;--color-success-lighter:#cafccc;--color-logo-icon:var(--color-primary);--color-logo-text:#190064;--border-radius-md:0.375rem;--border-radius-lg:0.5rem;--color-surface-high:#f1f0ff;--color-surface-mid:#f2f2f7;--color-surface-low:#ececf4;--color-surface-lowest:#fff;--color-on-surface:#1b1b1f;--color-brand-hover:#5753d0;--color-on-primary-container:#030064;--color-brand-active:#4440bf;--color-border-outline:#767680;--color-border-outline-variant:#c5c5d0;--color-surface-primary-container:#e0dfff}@media screen and (min-device-width:1921px){.excalidraw{--lg-button-size:2.5rem;--lg-icon-size:1.25rem;--default-button-size:2.25rem;--default-icon-size:1.25rem}}.excalidraw.theme--dark.theme--dark-background-none{background:none}.excalidraw.theme--dark{--theme-filter:invert(93%) hue-rotate(180deg);--button-destructive-bg-color:#5a0000;--button-destructive-color:#ffa8a8;--button-gray-1:#363636;--button-gray-2:#272727;--button-gray-3:#222;--button-special-active-bg-color:#204624;--dialog-border-color:var(--color-gray-80);--dropdown-icon:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='292.4' height='292.4' viewBox='0 0 292 292'%3E%3Cpath fill='%23ced4da' d='M287 197 159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13'/%3E%3C/svg%3E");--focus-highlight-color:#228be6;--icon-green-fill-color:#69db7c;--default-bg-color:#121212;--input-bg-color:#121212;--input-border-color:#2e2e2e;--input-hover-bg-color:#181818;--input-label-color:#e9ecef;--island-bg-color:#232329;--keybinding-color:var(--color-gray-60);--link-color:#4dabf7;--overlay-bg-color:rgba(52,58,64,.12);--popup-secondary-bg-color:#222;--popup-text-color:#ced4da;--popup-text-inverted-color:#2c2c2c;--select-highlight-color:#4dabf7;--shadow-island:0px 0px 0.9310142993927002px 0px rgba(0,0,0,.17),0px 0px 3.1270833015441895px 0px rgba(0,0,0,.08),0px 7px 14px 0px rgba(0,0,0,.05);--modal-shadow:0px 100px 80px rgba(0,0,0,.07),0px 41.7776px 33.4221px rgba(0,0,0,.05),0px 22.3363px 17.869px rgba(0,0,0,.042),0px 12.5216px 10.0172px rgba(0,0,0,.035),0px 6.6501px 5.32008px rgba(0,0,0,.028),0px 2.76726px 2.21381px rgba(0,0,0,.02);--avatar-border-color:var(--color-gray-85);--scrollbar-thumb:#343a40;--scrollbar-thumb-hover:#495057;--color-selection:#3530c4;--color-icon-white:var(--color-gray-90);--color-primary:#a8a5ff;--color-primary-darker:#b2aeff;--color-primary-darkest:#beb9ff;--color-primary-light:#4f4d6f;--color-primary-light-darker:#43415e;--color-primary-hover:#bbb8ff;--color-text-warning:var(--color-gray-80);--color-danger:#ffa8a5;--color-danger-dark:#672120;--color-danger-darker:#8f2625;--color-danger-darkest:#ac2b29;--color-danger-text:#fbcbcc;--color-danger-background:#fbcbcc;--color-danger-icon-background:#672120;--color-danger-color:#261919;--color-danger-icon-color:#fbcbcc;--color-warning-background:var(--color-warning);--color-warning-icon-background:var(--color-warning-dark);--color-warning-color:var(--color-gray-80);--color-warning-icon-color:var(--color-gray-80);--color-muted:var(--color-gray-80);--color-muted-darker:var(--color-gray-60);--color-muted-darkest:var(--color-gray-20);--color-muted-background:var(--color-gray-40);--color-muted-background-darker:var(--color-gray-20);--color-promo:#d297ff;--color-logo-text:#e2dfff;--color-surface-high:#31303b;--color-surface-low:#232329;--color-surface-mid:#18181b;--color-surface-lowest:#121212;--color-on-surface:#e3e3e8;--color-brand-hover:#bbb8ff;--color-on-primary-container:#e0dfff;--color-brand-active:#d0ccff;--color-border-outline:#8e8d9c;--color-border-outline-variant:#46464f;--color-surface-primary-container:#403e6a}:root{--zIndex-canvas:1;--zIndex-interactiveCanvas:2;--zIndex-wysiwyg:3;--zIndex-canvasButtons:3;--zIndex-layerUI:4;--zIndex-eyeDropperBackdrop:5;--zIndex-eyeDropperPreview:6;--zIndex-hyperlinkContainer:7;--zIndex-modal:1000;--zIndex-popup:1001;--zIndex-toast:999999;--sab:env(safe-area-inset-bottom);--sal:env(safe-area-inset-left);--sar:env(safe-area-inset-right);--sat:env(safe-area-inset-top)}.excalidraw{--ui-font:Assistant,system-ui,BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;bottom:0;color:var(--text-primary-color);display:flex;font-family:var(--ui-font);height:100%;left:0;overflow:hidden;position:relative;right:0;top:0;width:100%}.excalidraw,.excalidraw button{-webkit-user-select:none;user-select:none}.excalidraw button{cursor:pointer}.excalidraw:focus{outline:none}.excalidraw .excalidraw-link,.excalidraw a{color:var(--link-color);cursor:pointer;font-weight:500;text-decoration:none;-webkit-user-select:none;user-select:none}.excalidraw .excalidraw-link:hover,.excalidraw a:hover{text-decoration:underline}.excalidraw .excalidraw-link:active,.excalidraw a:active{text-decoration:none}.excalidraw canvas{image-rendering:pixelated;image-rendering:-moz-crisp-edges;touch-action:none;z-index:var(--zIndex-canvas)}.excalidraw canvas.interactive{z-index:var(--zIndex-interactiveCanvas)}.excalidraw__canvas-wrapper,.excalidraw__canvas.static{pointer-events:none}.excalidraw__canvas{position:absolute}.excalidraw__embeddable{border:0;height:100%;width:100%}.excalidraw__embeddable-container{pointer-events:none;position:absolute;transform-origin:top left;z-index:2}.excalidraw.theme--dark canvas{filter:var(--theme-filter)}.excalidraw .FixedSideContainer{padding:var(--sat,0) var(--sar,0) var(--sab,0) var(--sal,0)}.excalidraw .panelRow{display:flex;justify-content:space-between}.excalidraw .panelColumn{display:flex;flex-direction:column;row-gap:.75rem}.excalidraw .panelColumn .control-label,.excalidraw .panelColumn h3,.excalidraw .panelColumn legend{color:var(--text-primary-color);display:block;font-size:.75rem;font-weight:400;margin:0 0 .25rem}.excalidraw .panelColumn .control-label input{display:block;width:100%}.excalidraw .panelColumn legend{padding:0}.excalidraw .panelColumn .iconSelectList{flex-wrap:wrap;position:relative}.excalidraw .panelColumn .buttonList{column-gap:.5rem;display:flex;flex-wrap:wrap;row-gap:.5rem}.excalidraw .panelColumn .buttonList label{font-size:.75rem}.excalidraw .panelColumn .buttonList input[type=button],.excalidraw .panelColumn .buttonList input[type=radio]{opacity:0;pointer-events:none;position:absolute}.excalidraw .panelColumn .buttonList .iconRow{margin-top:8px}.excalidraw .panelColumn fieldset{border:none;margin:0;padding:0}.excalidraw .divider{background-color:#e9ecef;margin:1px;width:1px}.excalidraw .buttonList label:focus-within,.excalidraw .dropdown-menu-item:focus-visible,.excalidraw .welcome-screen-menu-item:focus-visible,.excalidraw button:focus-visible,.excalidraw input:focus-visible{box-shadow:0 0 0 1px var(--color-brand-hover);outline:transparent}.excalidraw .buttonList .ToolIcon__icon{all:unset!important;display:flex!important}.excalidraw .buttonList button{background-color:transparent}.excalidraw .buttonList .zIndexButton,.excalidraw .buttonList button,.excalidraw .buttonList label{align-items:center;background-color:var(--button-bg,var(--island-bg-color));border-color:var(--button-border,var(--default-border-color));border-radius:var(--border-radius-lg);border-style:solid;border-width:1px;box-sizing:border-box;color:var(--button-color,var(--color-on-surface));cursor:pointer;display:flex;font-family:var(--ui-font);height:var(--button-height,var(--default-button-size));justify-content:center;padding:0;width:var(--button-width,var(--default-button-size))}.excalidraw .buttonList .zIndexButton svg,.excalidraw .buttonList button svg,.excalidraw .buttonList label svg{height:var(--button-height,var(--lg-icon-size));width:var(--button-width,var(--lg-icon-size))}.excalidraw .buttonList .zIndexButton:hover,.excalidraw .buttonList button:hover,.excalidraw .buttonList label:hover{background-color:var(--button-hover-bg,var(--island-bg-color));border-color:var(--button-hover-border,var(--button-border,var(--default-border-color)));color:var(--button-hover-color,var(--button-color,var(--text-primary-color,inherit)))}.excalidraw .buttonList .zIndexButton:active,.excalidraw .buttonList button:active,.excalidraw .buttonList label:active{background-color:var(--button-active-bg,var(--island-bg-color));border-color:var(--button-active-border,var(--color-primary-darkest))}.excalidraw .buttonList .zIndexButton.active,.excalidraw .buttonList button.active,.excalidraw .buttonList label.active{background-color:var(--button-selected-bg,var(--color-surface-primary-container));border-color:var(--button-selected-border,var(--color-surface-primary-container))}.excalidraw .buttonList .zIndexButton.active:hover,.excalidraw .buttonList button.active:hover,.excalidraw .buttonList label.active:hover{background-color:var(--button-selected-hover-bg,var(--color-surface-primary-container))}.excalidraw .buttonList .zIndexButton.active svg,.excalidraw .buttonList button.active svg,.excalidraw .buttonList label.active svg{color:var(--button-color,var(--color-on-primary-container))}.excalidraw .buttonList .zIndexButton svg,.excalidraw .buttonList button svg,.excalidraw .buttonList label svg{height:var(--default-icon-size);width:var(--default-icon-size)}.excalidraw .App-top-bar{align-items:center;display:flex;flex-direction:column;z-index:var(--zIndex-layerUI)}.excalidraw .App-bottom-bar{bottom:0;left:0;position:absolute;right:0;top:0;--bar-padding:calc(var(--space-factor)*4);align-items:flex-end;display:flex;padding:max(var(--bar-padding),var(--sat,0)) var(--sar,0) var(--sab,0) var(--sal,0);pointer-events:none;z-index:4}.excalidraw .App-bottom-bar>.Island{box-sizing:border-box;display:flex;flex-direction:column;max-height:100%;max-width:100%;pointer-events:var(--ui-pointerEvents)}.excalidraw .App-bottom-bar>.Island .panelColumn{padding:8px 8px 0}.excalidraw .App-toolbar{width:100%}.excalidraw .App-toolbar .eraser.ToolIcon:hover{--icon-fill-color:#fff;--keybinding-color:#fff}.excalidraw .App-toolbar .eraser.active{background-color:var(--color-primary)}.excalidraw .App-toolbar-content{align-items:center;display:flex;justify-content:space-between;padding:6px}.excalidraw .App-toolbar-content .dropdown-menu--mobile{bottom:55px;top:auto}.excalidraw .App-mobile-menu{box-sizing:border-box;margin-bottom:var(--bar-padding);overflow-x:visible;overflow-y:auto;width:100%}.excalidraw .App-menu{color:var(--icon-fill-color);display:grid}.excalidraw .shapes-section{display:flex;justify-content:center;pointer-events:none!important}.excalidraw .shapes-section>*{pointer-events:var(--ui-pointerEvents)}.excalidraw .App-menu_top{grid-template-columns:1fr 2fr 1fr;grid-gap:2rem;align-items:flex-start;cursor:default;pointer-events:none!important}.excalidraw .App-menu_top>*{pointer-events:var(--ui-pointerEvents)}@media(min-width:1536px){.excalidraw .App-menu_top{grid-template-columns:1fr 1fr 1fr;grid-gap:3rem}}.excalidraw .App-menu_top>:first-child{justify-self:flex-start}.excalidraw .App-menu_top>:last-child{justify-self:flex-end}.excalidraw .App-menu_bottom{align-items:flex-start;bottom:1rem;box-sizing:border-box;cursor:default;display:flex;justify-content:space-between;padding:0 1rem;pointer-events:none!important;position:absolute}.excalidraw .App-menu_bottom--transition-left section{width:185px}.excalidraw .App-menu_bottom section{display:flex}.excalidraw .App-menu_bottom>:first-child{justify-self:flex-start}.excalidraw .App-menu_bottom>:last-child{justify-self:flex-end}.excalidraw .App-menu_left{grid-template-rows:1fr auto 1fr;height:100%}.excalidraw .App-menu_right{grid-template-rows:1fr;height:100%}.excalidraw .App-menu__left{box-sizing:border-box;overflow-y:auto;padding:.75rem;position:absolute;width:202px}.excalidraw .dropdown-select{-webkit-appearance:none;appearance:none;background-color:var(--button-gray-1);background-image:var(--dropdown-icon);background-position:right .7rem top 50%,0 0;background-repeat:no-repeat;background-size:.65em auto,100%;border:1px solid var(--button-gray-2);border-radius:var(--space-factor);color:var(--icon-fill-color);font-family:inherit;font-size:.8rem;height:1.5rem;outline:none;padding:0;padding-inline-end:1.5rem;padding-inline-start:.5rem}:root[dir=rtl] .excalidraw .dropdown-select{background-position:left .7rem top 50%,0 0}.excalidraw .dropdown-select:focus{box-shadow:0 0 0 2px var(--focus-highlight-color)}.excalidraw .dropdown-select:active,.excalidraw .dropdown-select:hover{background-color:var(--button-gray-2)}.excalidraw .dropdown-select__language{border-color:var(--default-border-color)!important;cursor:pointer;height:2rem}.excalidraw .dropdown-select__language,.excalidraw .dropdown-select__language:hover,.excalidraw .scroll-back-to-content{background-color:var(--island-bg-color)}.excalidraw .scroll-back-to-content{border:1px solid var(--default-border-color);border-radius:var(--border-radius-lg);bottom:30px;color:var(--icon-fill-color);font-family:inherit;left:50%;padding:10px 20px;pointer-events:var(--ui-pointerEvents);position:absolute;transform:translateX(-50%)}.excalidraw .scroll-back-to-content:hover{background-color:var(--button-hover-bg)}.excalidraw .scroll-back-to-content:active{border:1px solid var(--button-active-border)}.excalidraw .help-icon{align-items:center;background-color:var(--button-bg,var(--island-bg-color));background-color:var(--color-surface-low);border:none;border-radius:var(--border-radius-lg);box-shadow:0 0 0 1px var(--color-surface-lowest);box-sizing:border-box;color:var(--button-color,var(--color-on-surface));cursor:pointer;display:flex;font-family:var(--ui-font);height:var(--button-height,var(--default-button-size));height:var(--lg-button-size);justify-content:center;padding:.625rem;width:var(--button-width,var(--default-button-size));width:var(--lg-button-size)}.excalidraw .help-icon svg{height:var(--button-height,var(--lg-icon-size));width:var(--button-width,var(--lg-icon-size))}.excalidraw .help-icon:hover{background-color:var(--button-hover-bg,var(--island-bg-color));border-color:var(--button-hover-border,var(--button-border,var(--default-border-color)));color:var(--button-hover-color,var(--button-color,var(--text-primary-color,inherit)))}.excalidraw .help-icon:active{background-color:var(--button-active-bg,var(--island-bg-color));border-color:var(--button-active-border,var(--color-primary-darkest))}.excalidraw .help-icon.active{background-color:var(--button-selected-bg,var(--color-surface-primary-container));border-color:var(--button-selected-border,var(--color-surface-primary-container))}.excalidraw .help-icon.active:hover{background-color:var(--button-selected-hover-bg,var(--color-surface-primary-container))}.excalidraw .help-icon.active svg{color:var(--button-color,var(--color-on-primary-container))}.excalidraw .help-icon:active{box-shadow:0 0 0 1px var(--color-brand-active)}.excalidraw .help-icon svg{height:var(--lg-icon-size);width:var(--lg-icon-size)}.excalidraw .reset-zoom-button{font-family:var(--ui-font)}.excalidraw .finalize-button{gap:.4em}.excalidraw .eraser-buttons,.excalidraw .finalize-button,.excalidraw .undo-redo-buttons{display:grid;grid-auto-flow:column;margin-bottom:auto;margin-top:auto;margin-inline-start:.6em}.excalidraw--mobile.excalidraw aside{display:none}.excalidraw--mobile.excalidraw .scroll-back-to-content{bottom:calc(80px + var(--sab, 0));z-index:-1}:root[dir=rtl] .excalidraw .rtl-mirror{transform:scaleX(-1)}.excalidraw .zen-mode-visibility{height:auto;opacity:1;transition:opacity .5s;visibility:visible;width:auto}.excalidraw .zen-mode-visibility.zen-mode-visibility--hidden{height:0;opacity:0;transition:opacity .5s;visibility:hidden;width:0}.excalidraw .disable-pointerEvents{pointer-events:none!important}.excalidraw.excalidraw--view-mode .App-menu{display:flex;justify-content:space-between}.excalidraw textarea.excalidraw-wysiwyg{border:none;border-radius:0;box-shadow:none;outline:none}.excalidraw input.is-redacted{-webkit-text-security:disc}.excalidraw input[type=text],.excalidraw textarea:not(.excalidraw-wysiwyg){background-color:var(--input-bg-color);border:1.5px solid var(--input-border-color);border-radius:var(--space-factor);color:var(--text-primary-color);padding:.75rem;white-space:nowrap}.excalidraw input[type=text]:not(:focus):hover,.excalidraw textarea:not(.excalidraw-wysiwyg):not(:focus):hover{border-color:var(--color-brand-hover)}.excalidraw input[type=text]:focus,.excalidraw textarea:not(.excalidraw-wysiwyg):focus{border-color:var(--color-brand-hover);outline:none}@media print{.excalidraw .App-bottom-bar,.excalidraw .FixedSideContainer,.excalidraw .layer-ui__wrapper{display:none}}.excalidraw ::-webkit-scrollbar{height:3px;width:3px}.excalidraw select::-webkit-scrollbar{width:10px}.excalidraw ::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:10px}.excalidraw ::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}.excalidraw ::-webkit-scrollbar-thumb:active{background:var(--scrollbar-thumb)}.excalidraw .mobile-misc-tools-container{background-color:var(--island-bg-color);border:1px solid var(--sidebar-border-color);border-bottom-left-radius:var(--border-radius-lg);border-right:0;border-top-left-radius:var(--border-radius-lg);display:flex;flex-direction:column;overflow:hidden;position:absolute;right:calc(var(--editor-container-padding)*-1);top:calc(5rem - var(--editor-container-padding))}.excalidraw .mobile-misc-tools-container .ToolIcon__icon{border-radius:0;height:2rem;width:2rem}.excalidraw .mobile-misc-tools-container .default-sidebar-trigger{border:0}.excalidraw .App-toolbar--mobile{max-width:98vw;overflow:visible}.excalidraw .App-toolbar--mobile .ToolIcon__keybinding{display:block}.excalidraw .UserList-Wrapper{border:none;margin:0;padding:0;text-align:left}.excalidraw .UserList-Wrapper legend{display:block;font-size:.75rem;font-weight:400;margin:0 0 .25rem;padding:0}.excalidraw .main-menu-trigger{background-color:var(--color-surface-low);border:none;box-shadow:0 0 0 1px var(--color-surface-lowest)}.excalidraw .main-menu-trigger:active{box-shadow:0 0 0 1px var(--color-brand-active)}.excalidraw .App-menu__left{--button-border:transparent;--button-bg:var(--color-surface-mid)}.excalidraw.theme--dark.excalidraw .App-menu__left{--button-hover-bg:#363541;--button-bg:var(--color-surface-high)}.excalidraw .excalidraw__paragraph{margin:1rem 0}.excalidraw .Modal__content .excalidraw__paragraph+.excalidraw__paragraph,.excalidraw .Modal__content .excalidraw__paragraph:first-child{margin-top:0}.ErrorSplash.excalidraw{align-items:center;display:flex;justify-content:center;min-height:100vh;overflow:auto;padding:20px 0;-webkit-user-select:text;user-select:text}.ErrorSplash.excalidraw .ErrorSplash-messageContainer{align-items:center;background-color:#ffe3e3;border:3px solid #c92a2a;display:flex;flex-direction:column;justify-content:center;padding:40px}.ErrorSplash.excalidraw .ErrorSplash-paragraph{margin:15px 0;max-width:600px}.ErrorSplash.excalidraw .ErrorSplash-paragraph.align-center{text-align:center}.ErrorSplash.excalidraw .bigger,.ErrorSplash.excalidraw .bigger button{font-size:1.1em}.ErrorSplash.excalidraw .smaller,.ErrorSplash.excalidraw .smaller button{font-size:.9em}.ErrorSplash.excalidraw .ErrorSplash-details{align-items:flex-start;display:flex;flex-direction:column}.ErrorSplash.excalidraw .ErrorSplash-details textarea{font-family:Cascadia;font-size:.8em;margin:10px 0;width:100%}.excalidraw__embeddable-container .excalidraw__embeddable-container__inner{align-items:center;border-radius:var(--embeddable-radius);display:flex;justify-content:center;overflow:hidden}.excalidraw__embeddable-container .excalidraw__embeddable__outer{height:100%;width:100%}.excalidraw__embeddable-container .excalidraw__embeddable__outer>*{border-radius:var(--embeddable-radius)}.excalidraw__embeddable-container .excalidraw__embeddable-hint{align-items:center;background:rgba(0,0,0,.5);border-radius:12px;color:#fff;display:flex;font-family:Assistant;font-weight:700;height:33%;justify-content:center;letter-spacing:.6px;padding:1rem 1.6rem;position:absolute;width:33%;z-index:1}.footer-center{display:flex;justify-content:flex-start;margin-inline-end:.6rem;pointer-events:none;width:100%}.footer-center>*{pointer-events:var(--ui-pointerEvents)}.excalidraw .ExcalidrawLogo{--logo-icon--xs:2rem;--logo-text--xs:1.5rem;--logo-icon--small:2.5rem;--logo-text--small:1.75rem;--logo-icon--normal:3rem;--logo-text--normal:2.2rem;--logo-icon--large:90px;--logo-text--large:65px;align-items:center;display:flex}.excalidraw .ExcalidrawLogo svg{flex:0 0 auto}.excalidraw .ExcalidrawLogo .ExcalidrawLogo-icon{color:var(--color-logo-icon);width:auto}.excalidraw .ExcalidrawLogo .ExcalidrawLogo-text{color:var(--color-logo-text);margin-left:.75rem;width:auto}.excalidraw .ExcalidrawLogo.is-xs .ExcalidrawLogo-icon{height:var(--logo-icon--xs)}.excalidraw .ExcalidrawLogo.is-xs .ExcalidrawLogo-text{height:var(--logo-text--xs)}.excalidraw .ExcalidrawLogo.is-small .ExcalidrawLogo-icon{height:var(--logo-icon--small)}.excalidraw .ExcalidrawLogo.is-small .ExcalidrawLogo-text{height:var(--logo-text--small)}.excalidraw .ExcalidrawLogo.is-normal .ExcalidrawLogo-icon{height:var(--logo-icon--normal)}.excalidraw .ExcalidrawLogo.is-normal .ExcalidrawLogo-text{height:var(--logo-text--normal)}.excalidraw .ExcalidrawLogo.is-large .ExcalidrawLogo-icon{height:var(--logo-icon--large)}.excalidraw .ExcalidrawLogo.is-large .ExcalidrawLogo-text{height:var(--logo-text--large)}.excalidraw .virgil{font-family:Virgil}.excalidraw .welcome-screen-decor{color:var(--color-gray-40);pointer-events:none}.excalidraw .welcome-screen-decor a{--color:var(--color-primary);color:var(--color);margin-bottom:-6px;text-decoration:none}.excalidraw.theme--dark .welcome-screen-decor{color:var(--color-gray-60)}@media(max-height:599px){.excalidraw .welcome-screen-decor-hint{display:none!important}}@media(max-width:1024px),(max-width:800px){.excalidraw .welcome-screen-decor-hint .welcome-screen-decor--help,.excalidraw .welcome-screen-decor-hint .welcome-screen-decor--menu{display:none}}.excalidraw .welcome-screen-decor-hint--help{bottom:100%;display:flex;position:absolute;right:0}:root[dir=rtl] .excalidraw .welcome-screen-decor-hint--help{left:0;right:auto}.excalidraw .welcome-screen-decor-hint--help svg{height:71px;margin-top:.5rem;transform:scaleX(-1) rotate(80deg);width:85px}:root[dir=rtl] .excalidraw .welcome-screen-decor-hint--help svg{transform:rotate(80deg)}.excalidraw .welcome-screen-decor-hint--toolbar{align-items:baseline;display:flex;left:50%;margin-top:2.5rem;position:absolute;top:100%;transform:translateX(-50%)}.excalidraw .welcome-screen-decor-hint--toolbar .welcome-screen-decor-hint__label{position:relative;top:-.5rem;width:120px}.excalidraw .welcome-screen-decor-hint--toolbar svg{height:78px;width:38px}:root[dir=rtl] .excalidraw .welcome-screen-decor-hint--toolbar svg{transform:scaleX(-1)}.excalidraw .welcome-screen-decor-hint--menu{align-items:flex-end;display:flex;font-size:1rem;gap:.5rem;margin-top:.25rem;margin-inline-start:.6rem;position:absolute;top:100%;width:320px}.excalidraw .welcome-screen-decor-hint--menu svg{height:94px;width:41px}:root[dir=rtl] .excalidraw .welcome-screen-decor-hint--menu svg{transform:scaleX(-1)}@media(max-width:860px){.excalidraw .welcome-screen-decor-hint--menu .welcome-screen-decor-hint__label{max-width:160px}}.excalidraw .welcome-screen-center{align-items:center;bottom:1rem;display:flex;flex-direction:column;gap:2rem;justify-content:center;left:1rem;pointer-events:none;position:absolute;right:1rem;top:1rem}.excalidraw .welcome-screen-center__logo{align-items:center;column-gap:.75rem;display:flex;font-size:2.25rem}.excalidraw .welcome-screen-center__heading{font-size:1.125rem;line-height:1.6;text-align:center}.excalidraw .welcome-screen-menu{align-items:center;display:flex;flex-direction:column;gap:2px;justify-content:center}.excalidraw .welcome-screen-menu-item{align-items:center;background:none;border:1px solid transparent;border-radius:var(--border-radius-md);box-sizing:border-box;color:var(--color-gray-50);display:grid;font-size:.875rem;grid-template-columns:calc(var(--default-icon-size) + .5rem) 1fr;justify-content:space-between;max-width:400px;min-width:300px;padding:.25rem;pointer-events:var(--ui-pointerEvents);width:100%}.excalidraw .welcome-screen-menu-item__text{align-items:center;column-gap:.5rem;display:flex;margin-right:auto;text-align:left}.excalidraw .welcome-screen-menu-item__icon{height:var(--default-icon-size);width:var(--default-icon-size)}.excalidraw .welcome-screen-menu-item__shortcut{color:var(--color-gray-40);font-size:.75rem;margin-left:auto}.excalidraw .welcome-screen-menu-item:hover{background:var(--button-hover-bg);text-decoration:none}.excalidraw .welcome-screen-menu-item:hover .welcome-screen-menu-item__shortcut{color:var(--color-gray-50)}.excalidraw .welcome-screen-menu-item:hover .welcome-screen-menu-item__text{color:var(--color-gray-100)}.excalidraw .welcome-screen-menu-item:active{background:var(--button-hover-bg);border-color:var(--color-brand-active)}.excalidraw .welcome-screen-menu-item:active .welcome-screen-menu-item__shortcut{color:var(--color-gray-50)}.excalidraw .welcome-screen-menu-item:active .welcome-screen-menu-item__text{color:var(--color-gray-100)}.excalidraw .welcome-screen-menu-item:active--promo{color:var(--color-promo)!important}.excalidraw .welcome-screen-menu-item:active--promo:hover .welcome-screen-menu-item__text{color:var(--color-promo)!important}.excalidraw.theme--dark .welcome-screen-menu-item,.excalidraw.theme--dark .welcome-screen-menu-item__shortcut{color:var(--color-gray-60)}.excalidraw.theme--dark .welcome-screen-menu-item:hover{background-color:var(--color-surface-low)}.excalidraw.theme--dark .welcome-screen-menu-item:hover .welcome-screen-menu-item__shortcut{color:var(--color-gray-50)}.excalidraw.theme--dark .welcome-screen-menu-item:active .welcome-screen-menu-item__text,.excalidraw.theme--dark .welcome-screen-menu-item:hover .welcome-screen-menu-item__text{color:var(--color-gray-10)}@media(max-height:599px){.excalidraw .welcome-screen-center{margin-top:4rem}}@media(min-height:600px)and (max-height:900px){.excalidraw .welcome-screen-center{margin-top:4rem}}@media(max-height:500px),(max-width:320px){.excalidraw .welcome-screen-center{display:none}}:export{themeFilter:invert(93%) hue-rotate(180deg);rightSidebarWidth:302px}.excalidraw .collab-button{--button-bg:var(--color-primary);--button-color:var(--color-surface-lowest);--button-border:var(--color-primary);--button-width:var(--lg-button-size);--button-height:var(--lg-button-size);--button-hover-bg:var(--color-primary-darker);--button-hover-border:var(--color-primary-darker);--button-active-bg:var(--color-primary-darker);box-shadow:0 0 0 1px var(--color-surface-lowest);flex-shrink:0}.excalidraw .collab-button.active.active{background-color:#0fb884;border-color:#0fb884}.excalidraw .collab-button.active.active svg{color:#fff}.excalidraw .collab-button.active.active:active,.excalidraw .collab-button.active.active:hover{background-color:#0fb884;border-color:#0fb884}.excalidraw .CollabButton.is-collaborating{background-color:var(--button-special-active-bg-color)}.excalidraw .CollabButton.is-collaborating .ToolIcon__icon svg,.excalidraw .CollabButton.is-collaborating .ToolIcon__label{color:var(--icon-green-fill-color)}.excalidraw .CollabButton-collaborators{background-color:#b2f2bb;border-radius:50%;bottom:-5px;color:#2b8a3e;font-family:Cascadia;font-size:.6rem;line-height:1;min-height:1em;min-width:1em;padding:3px;position:absolute}:root[dir=ltr] .excalidraw .CollabButton-collaborators{right:-5px}:root[dir=rtl] .excalidraw .CollabButton-collaborators{left:-5px} \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-git/main.js b/.obsidian/plugins/obsidian-git/main.js index dc70752..5b1b9f2 100644 --- a/.obsidian/plugins/obsidian-git/main.js +++ b/.obsidian/plugins/obsidian-git/main.js @@ -678,7 +678,7 @@ var require_buffer = __commonJS({ return slowToString.apply(this, arguments); }; Buffer2.prototype.toLocaleString = Buffer2.prototype.toString; - Buffer2.prototype.equals = function equals2(b) { + Buffer2.prototype.equals = function equals3(b) { if (!Buffer2.isBuffer(b)) throw new TypeError("Argument must be a Buffer"); if (this === b) @@ -1939,9 +1939,9 @@ var init_polyfill_buffer = __esm({ } }); -// node_modules/.pnpm/async-lock@1.4.0/node_modules/async-lock/lib/index.js +// node_modules/.pnpm/async-lock@1.4.1/node_modules/async-lock/lib/index.js var require_lib = __commonJS({ - "node_modules/.pnpm/async-lock@1.4.0/node_modules/async-lock/lib/index.js"(exports2, module2) { + "node_modules/.pnpm/async-lock@1.4.1/node_modules/async-lock/lib/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var AsyncLock2 = function(opts) { @@ -2078,12 +2078,13 @@ var require_lib = __commonJS({ if (self2.domainReentrant && !!process.domain) { exec = process.domain.bind(exec); } + var maxPending = opts.maxPending || self2.maxPending; if (!self2.queues[key2]) { self2.queues[key2] = []; exec(true); } else if (self2.domainReentrant && !!process.domain && process.domain === self2.domains[key2]) { exec(false); - } else if (self2.queues[key2].length >= self2.maxPending) { + } else if (self2.queues[key2].length >= maxPending) { done(false, new Error("Too many pending tasks in queue " + key2)); } else { var taskFn = function() { @@ -2164,9 +2165,9 @@ var require_lib = __commonJS({ } }); -// node_modules/.pnpm/async-lock@1.4.0/node_modules/async-lock/index.js +// node_modules/.pnpm/async-lock@1.4.1/node_modules/async-lock/index.js var require_async_lock = __commonJS({ - "node_modules/.pnpm/async-lock@1.4.0/node_modules/async-lock/index.js"(exports2, module2) { + "node_modules/.pnpm/async-lock@1.4.1/node_modules/async-lock/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); module2.exports = require_lib(); @@ -6800,9 +6801,9 @@ var require_pify = __commonJS({ } }); -// node_modules/.pnpm/ignore@5.2.4/node_modules/ignore/index.js +// node_modules/.pnpm/ignore@5.3.1/node_modules/ignore/index.js var require_ignore = __commonJS({ - "node_modules/.pnpm/ignore@5.2.4/node_modules/ignore/index.js"(exports2, module2) { + "node_modules/.pnpm/ignore@5.3.1/node_modules/ignore/index.js"(exports2, module2) { init_polyfill_buffer(); function makeArray(subject) { return Array.isArray(subject) ? subject : [subject]; @@ -6834,6 +6835,13 @@ var require_ignore = __commonJS({ return slashes.slice(0, length - length % 2); }; var REPLACERS = [ + [ + // remove BOM + // TODO: + // Other similar zero-width characters? + /^\uFEFF/, + () => EMPTY + ], // > Trailing spaces are ignored unless they are quoted with backslash ("\") [ // (a\ ) -> (a ) @@ -7344,14 +7352,14 @@ var require_diff3 = __commonJS({ init_polyfill_buffer(); var onp = require_onp(); function longestCommonSubsequence(file1, file2) { - var diff2 = new onp(file1, file2); - diff2.compose(); - var ses = diff2.getses(); + var diff3 = new onp(file1, file2); + diff3.compose(); + var ses = diff3.getses(); var root2; var prev; var file1RevIdx = file1.length - 1, file2RevIdx = file2.length - 1; for (var i = ses.length - 1; i >= 0; --i) { - if (ses[i].t === diff2.SES_COMMON) { + if (ses[i].t === diff3.SES_COMMON) { if (prev) { prev.chain = { file1index: file1RevIdx, @@ -7369,9 +7377,9 @@ var require_diff3 = __commonJS({ } file1RevIdx--; file2RevIdx--; - } else if (ses[i].t === diff2.SES_DELETE) { + } else if (ses[i].t === diff3.SES_DELETE) { file1RevIdx--; - } else if (ses[i].t === diff2.SES_ADD) { + } else if (ses[i].t === diff3.SES_ADD) { file2RevIdx--; } } @@ -7834,7 +7842,7 @@ var require_browser = __commonJS({ exports2.load = load; exports2.useColors = useColors; exports2.storage = localstorage(); - exports2.destroy = (() => { + exports2.destroy = /* @__PURE__ */ (() => { let warned = false; return () => { if (!warned) { @@ -8845,6 +8853,69 @@ var require_object_keys = __commonJS({ } }); +// node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/index.js +var require_es_errors = __commonJS({ + "node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + module2.exports = Error; + } +}); + +// node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/eval.js +var require_eval = __commonJS({ + "node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/eval.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + module2.exports = EvalError; + } +}); + +// node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/range.js +var require_range = __commonJS({ + "node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/range.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + module2.exports = RangeError; + } +}); + +// node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/ref.js +var require_ref = __commonJS({ + "node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/ref.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + module2.exports = ReferenceError; + } +}); + +// node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/syntax.js +var require_syntax = __commonJS({ + "node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/syntax.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + module2.exports = SyntaxError; + } +}); + +// node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/type.js +var require_type = __commonJS({ + "node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/type.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + module2.exports = TypeError; + } +}); + +// node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/uri.js +var require_uri = __commonJS({ + "node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/uri.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + module2.exports = URIError; + } +}); + // node_modules/.pnpm/has-symbols@1.0.3/node_modules/has-symbols/shams.js var require_shams = __commonJS({ "node_modules/.pnpm/has-symbols@1.0.3/node_modules/has-symbols/shams.js"(exports2, module2) { @@ -8938,45 +9009,71 @@ var require_has_proto = __commonJS({ } }); -// node_modules/.pnpm/function-bind@1.1.1/node_modules/function-bind/implementation.js +// node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/implementation.js var require_implementation2 = __commonJS({ - "node_modules/.pnpm/function-bind@1.1.1/node_modules/function-bind/implementation.js"(exports2, module2) { + "node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/implementation.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var ERROR_MESSAGE = "Function.prototype.bind called on incompatible "; - var slice = Array.prototype.slice; var toStr = Object.prototype.toString; + var max = Math.max; var funcType = "[object Function]"; + var concatty = function concatty2(a, b) { + var arr = []; + for (var i = 0; i < a.length; i += 1) { + arr[i] = a[i]; + } + for (var j = 0; j < b.length; j += 1) { + arr[j + a.length] = b[j]; + } + return arr; + }; + var slicy = function slicy2(arrLike, offset) { + var arr = []; + for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) { + arr[j] = arrLike[i]; + } + return arr; + }; + var joiny = function(arr, joiner) { + var str = ""; + for (var i = 0; i < arr.length; i += 1) { + str += arr[i]; + if (i + 1 < arr.length) { + str += joiner; + } + } + return str; + }; module2.exports = function bind(that) { var target = this; - if (typeof target !== "function" || toStr.call(target) !== funcType) { + if (typeof target !== "function" || toStr.apply(target) !== funcType) { throw new TypeError(ERROR_MESSAGE + target); } - var args = slice.call(arguments, 1); + var args = slicy(arguments, 1); var bound; var binder = function() { if (this instanceof bound) { var result = target.apply( this, - args.concat(slice.call(arguments)) + concatty(args, arguments) ); if (Object(result) === result) { return result; } return this; - } else { - return target.apply( - that, - args.concat(slice.call(arguments)) - ); } + return target.apply( + that, + concatty(args, arguments) + ); }; - var boundLength = Math.max(0, target.length - args.length); + var boundLength = max(0, target.length - args.length); var boundArgs = []; for (var i = 0; i < boundLength; i++) { - boundArgs.push("$" + i); + boundArgs[i] = "$" + i; } - bound = Function("binder", "return function (" + boundArgs.join(",") + "){ return binder.apply(this,arguments); }")(binder); + bound = Function("binder", "return function (" + joiny(boundArgs, ",") + "){ return binder.apply(this,arguments); }")(binder); if (target.prototype) { var Empty = function Empty2() { }; @@ -8989,9 +9086,9 @@ var require_implementation2 = __commonJS({ } }); -// node_modules/.pnpm/function-bind@1.1.1/node_modules/function-bind/index.js +// node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/index.js var require_function_bind = __commonJS({ - "node_modules/.pnpm/function-bind@1.1.1/node_modules/function-bind/index.js"(exports2, module2) { + "node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var implementation = require_implementation2(); @@ -8999,25 +9096,32 @@ var require_function_bind = __commonJS({ } }); -// node_modules/.pnpm/has@1.0.3/node_modules/has/src/index.js -var require_src2 = __commonJS({ - "node_modules/.pnpm/has@1.0.3/node_modules/has/src/index.js"(exports2, module2) { +// node_modules/.pnpm/hasown@2.0.1/node_modules/hasown/index.js +var require_hasown = __commonJS({ + "node_modules/.pnpm/hasown@2.0.1/node_modules/hasown/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); + var call = Function.prototype.call; + var $hasOwn = Object.prototype.hasOwnProperty; var bind = require_function_bind(); - module2.exports = bind.call(Function.call, Object.prototype.hasOwnProperty); + module2.exports = bind.call(call, $hasOwn); } }); -// node_modules/.pnpm/get-intrinsic@1.2.1/node_modules/get-intrinsic/index.js +// node_modules/.pnpm/get-intrinsic@1.2.4/node_modules/get-intrinsic/index.js var require_get_intrinsic = __commonJS({ - "node_modules/.pnpm/get-intrinsic@1.2.1/node_modules/get-intrinsic/index.js"(exports2, module2) { + "node_modules/.pnpm/get-intrinsic@1.2.4/node_modules/get-intrinsic/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var undefined2; - var $SyntaxError = SyntaxError; + var $Error = require_es_errors(); + var $EvalError = require_eval(); + var $RangeError = require_range(); + var $ReferenceError = require_ref(); + var $SyntaxError = require_syntax(); + var $TypeError = require_type(); + var $URIError = require_uri(); var $Function = Function; - var $TypeError = TypeError; var getEvalledConstructor = function(expressionSyntax) { try { return $Function('"use strict"; return (' + expressionSyntax + ").constructor;")(); @@ -9055,6 +9159,7 @@ var require_get_intrinsic = __commonJS({ var needsEval = {}; var TypedArray = typeof Uint8Array === "undefined" || !getProto ? undefined2 : getProto(Uint8Array); var INTRINSICS = { + __proto__: null, "%AggregateError%": typeof AggregateError === "undefined" ? undefined2 : AggregateError, "%Array%": Array, "%ArrayBuffer%": typeof ArrayBuffer === "undefined" ? undefined2 : ArrayBuffer, @@ -9075,10 +9180,10 @@ var require_get_intrinsic = __commonJS({ "%decodeURIComponent%": decodeURIComponent, "%encodeURI%": encodeURI, "%encodeURIComponent%": encodeURIComponent, - "%Error%": Error, + "%Error%": $Error, "%eval%": eval, // eslint-disable-line no-eval - "%EvalError%": EvalError, + "%EvalError%": $EvalError, "%Float32Array%": typeof Float32Array === "undefined" ? undefined2 : Float32Array, "%Float64Array%": typeof Float64Array === "undefined" ? undefined2 : Float64Array, "%FinalizationRegistry%": typeof FinalizationRegistry === "undefined" ? undefined2 : FinalizationRegistry, @@ -9100,8 +9205,8 @@ var require_get_intrinsic = __commonJS({ "%parseInt%": parseInt, "%Promise%": typeof Promise === "undefined" ? undefined2 : Promise, "%Proxy%": typeof Proxy === "undefined" ? undefined2 : Proxy, - "%RangeError%": RangeError, - "%ReferenceError%": ReferenceError, + "%RangeError%": $RangeError, + "%ReferenceError%": $ReferenceError, "%Reflect%": typeof Reflect === "undefined" ? undefined2 : Reflect, "%RegExp%": RegExp, "%Set%": typeof Set === "undefined" ? undefined2 : Set, @@ -9118,7 +9223,7 @@ var require_get_intrinsic = __commonJS({ "%Uint8ClampedArray%": typeof Uint8ClampedArray === "undefined" ? undefined2 : Uint8ClampedArray, "%Uint16Array%": typeof Uint16Array === "undefined" ? undefined2 : Uint16Array, "%Uint32Array%": typeof Uint32Array === "undefined" ? undefined2 : Uint32Array, - "%URIError%": URIError, + "%URIError%": $URIError, "%WeakMap%": typeof WeakMap === "undefined" ? undefined2 : WeakMap, "%WeakRef%": typeof WeakRef === "undefined" ? undefined2 : WeakRef, "%WeakSet%": typeof WeakSet === "undefined" ? undefined2 : WeakSet @@ -9155,6 +9260,7 @@ var require_get_intrinsic = __commonJS({ return value; }; var LEGACY_ALIASES = { + __proto__: null, "%ArrayBufferPrototype%": ["ArrayBuffer", "prototype"], "%ArrayPrototype%": ["Array", "prototype"], "%ArrayProto_entries%": ["Array", "prototype", "entries"], @@ -9208,7 +9314,7 @@ var require_get_intrinsic = __commonJS({ "%WeakSetPrototype%": ["WeakSet", "prototype"] }; var bind = require_function_bind(); - var hasOwn = require_src2(); + var hasOwn = require_hasown(); var $concat = bind.call(Function.call, Array.prototype.concat); var $spliceApply = bind.call(Function.apply, Array.prototype.splice); var $replace = bind.call(Function.call, String.prototype.replace); @@ -9317,9 +9423,9 @@ var require_get_intrinsic = __commonJS({ } }); -// node_modules/.pnpm/has-property-descriptors@1.0.0/node_modules/has-property-descriptors/index.js +// node_modules/.pnpm/has-property-descriptors@1.0.1/node_modules/has-property-descriptors/index.js var require_has_property_descriptors = __commonJS({ - "node_modules/.pnpm/has-property-descriptors@1.0.0/node_modules/has-property-descriptors/index.js"(exports2, module2) { + "node_modules/.pnpm/has-property-descriptors@1.0.1/node_modules/has-property-descriptors/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var GetIntrinsic = require_get_intrinsic(); @@ -9349,21 +9455,96 @@ var require_has_property_descriptors = __commonJS({ } }); -// node_modules/.pnpm/define-properties@1.2.0/node_modules/define-properties/index.js +// node_modules/.pnpm/gopd@1.0.1/node_modules/gopd/index.js +var require_gopd = __commonJS({ + "node_modules/.pnpm/gopd@1.0.1/node_modules/gopd/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var GetIntrinsic = require_get_intrinsic(); + var $gOPD = GetIntrinsic("%Object.getOwnPropertyDescriptor%", true); + if ($gOPD) { + try { + $gOPD([], "length"); + } catch (e) { + $gOPD = null; + } + } + module2.exports = $gOPD; + } +}); + +// node_modules/.pnpm/define-data-property@1.1.2/node_modules/define-data-property/index.js +var require_define_data_property = __commonJS({ + "node_modules/.pnpm/define-data-property@1.1.2/node_modules/define-data-property/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var hasPropertyDescriptors = require_has_property_descriptors()(); + var GetIntrinsic = require_get_intrinsic(); + var $defineProperty = hasPropertyDescriptors && GetIntrinsic("%Object.defineProperty%", true); + if ($defineProperty) { + try { + $defineProperty({}, "a", { value: 1 }); + } catch (e) { + $defineProperty = false; + } + } + var $SyntaxError = require_syntax(); + var $TypeError = require_type(); + var gopd = require_gopd(); + module2.exports = function defineDataProperty(obj, property, value) { + if (!obj || typeof obj !== "object" && typeof obj !== "function") { + throw new $TypeError("`obj` must be an object or a function`"); + } + if (typeof property !== "string" && typeof property !== "symbol") { + throw new $TypeError("`property` must be a string or a symbol`"); + } + if (arguments.length > 3 && typeof arguments[3] !== "boolean" && arguments[3] !== null) { + throw new $TypeError("`nonEnumerable`, if provided, must be a boolean or null"); + } + if (arguments.length > 4 && typeof arguments[4] !== "boolean" && arguments[4] !== null) { + throw new $TypeError("`nonWritable`, if provided, must be a boolean or null"); + } + if (arguments.length > 5 && typeof arguments[5] !== "boolean" && arguments[5] !== null) { + throw new $TypeError("`nonConfigurable`, if provided, must be a boolean or null"); + } + if (arguments.length > 6 && typeof arguments[6] !== "boolean") { + throw new $TypeError("`loose`, if provided, must be a boolean"); + } + var nonEnumerable = arguments.length > 3 ? arguments[3] : null; + var nonWritable = arguments.length > 4 ? arguments[4] : null; + var nonConfigurable = arguments.length > 5 ? arguments[5] : null; + var loose = arguments.length > 6 ? arguments[6] : false; + var desc = !!gopd && gopd(obj, property); + if ($defineProperty) { + $defineProperty(obj, property, { + configurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable, + enumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable, + value, + writable: nonWritable === null && desc ? desc.writable : !nonWritable + }); + } else if (loose || !nonEnumerable && !nonWritable && !nonConfigurable) { + obj[property] = value; + } else { + throw new $SyntaxError("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable."); + } + }; + } +}); + +// node_modules/.pnpm/define-properties@1.2.1/node_modules/define-properties/index.js var require_define_properties = __commonJS({ - "node_modules/.pnpm/define-properties@1.2.0/node_modules/define-properties/index.js"(exports2, module2) { + "node_modules/.pnpm/define-properties@1.2.1/node_modules/define-properties/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var keys = require_object_keys(); var hasSymbols = typeof Symbol === "function" && typeof Symbol("foo") === "symbol"; var toStr = Object.prototype.toString; var concat = Array.prototype.concat; - var origDefineProperty = Object.defineProperty; + var defineDataProperty = require_define_data_property(); var isFunction2 = function(fn) { return typeof fn === "function" && toStr.call(fn) === "[object Function]"; }; - var hasPropertyDescriptors = require_has_property_descriptors()(); - var supportsDescriptors = origDefineProperty && hasPropertyDescriptors; + var supportsDescriptors = require_has_property_descriptors()(); var defineProperty = function(object, name, value, predicate) { if (name in object) { if (predicate === true) { @@ -9375,14 +9556,9 @@ var require_define_properties = __commonJS({ } } if (supportsDescriptors) { - origDefineProperty(object, name, { - configurable: true, - enumerable: false, - value, - writable: true - }); + defineDataProperty(object, name, value, true); } else { - object[name] = value; + defineDataProperty(object, name, value); } }; var defineProperties = function(object, map) { @@ -9400,17 +9576,72 @@ var require_define_properties = __commonJS({ } }); -// node_modules/.pnpm/call-bind@1.0.2/node_modules/call-bind/index.js +// node_modules/.pnpm/set-function-length@1.2.1/node_modules/set-function-length/index.js +var require_set_function_length = __commonJS({ + "node_modules/.pnpm/set-function-length@1.2.1/node_modules/set-function-length/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var GetIntrinsic = require_get_intrinsic(); + var define2 = require_define_data_property(); + var hasDescriptors = require_has_property_descriptors()(); + var gOPD = require_gopd(); + var $TypeError = require_type(); + var $floor = GetIntrinsic("%Math.floor%"); + module2.exports = function setFunctionLength(fn, length) { + if (typeof fn !== "function") { + throw new $TypeError("`fn` is not a function"); + } + if (typeof length !== "number" || length < 0 || length > 4294967295 || $floor(length) !== length) { + throw new $TypeError("`length` must be a positive 32-bit integer"); + } + var loose = arguments.length > 2 && !!arguments[2]; + var functionLengthIsConfigurable = true; + var functionLengthIsWritable = true; + if ("length" in fn && gOPD) { + var desc = gOPD(fn, "length"); + if (desc && !desc.configurable) { + functionLengthIsConfigurable = false; + } + if (desc && !desc.writable) { + functionLengthIsWritable = false; + } + } + if (functionLengthIsConfigurable || functionLengthIsWritable || !loose) { + if (hasDescriptors) { + define2( + /** @type {Parameters<define>[0]} */ + fn, + "length", + length, + true, + true + ); + } else { + define2( + /** @type {Parameters<define>[0]} */ + fn, + "length", + length + ); + } + } + return fn; + }; + } +}); + +// node_modules/.pnpm/call-bind@1.0.6/node_modules/call-bind/index.js var require_call_bind = __commonJS({ - "node_modules/.pnpm/call-bind@1.0.2/node_modules/call-bind/index.js"(exports2, module2) { + "node_modules/.pnpm/call-bind@1.0.6/node_modules/call-bind/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var bind = require_function_bind(); var GetIntrinsic = require_get_intrinsic(); + var setFunctionLength = require_set_function_length(); + var $TypeError = require_type(); var $apply = GetIntrinsic("%Function.prototype.apply%"); var $call = GetIntrinsic("%Function.prototype.call%"); var $reflectApply = GetIntrinsic("%Reflect.apply%", true) || bind.call($call, $apply); - var $gOPD = GetIntrinsic("%Object.getOwnPropertyDescriptor%", true); var $defineProperty = GetIntrinsic("%Object.defineProperty%", true); var $max = GetIntrinsic("%Math.max%"); if ($defineProperty) { @@ -9421,18 +9652,15 @@ var require_call_bind = __commonJS({ } } module2.exports = function callBind(originalFunction) { - var func = $reflectApply(bind, $call, arguments); - if ($gOPD && $defineProperty) { - var desc = $gOPD(func, "length"); - if (desc.configurable) { - $defineProperty( - func, - "length", - { value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) } - ); - } + if (typeof originalFunction !== "function") { + throw new $TypeError("a function is required"); } - return func; + var func = $reflectApply(bind, $call, arguments); + return setFunctionLength( + func, + 1 + $max(0, originalFunction.length - (arguments.length - 1)), + true + ); }; var applyBind = function applyBind2() { return $reflectApply(bind, $apply, arguments); @@ -9445,9 +9673,9 @@ var require_call_bind = __commonJS({ } }); -// node_modules/.pnpm/call-bind@1.0.2/node_modules/call-bind/callBound.js +// node_modules/.pnpm/call-bind@1.0.6/node_modules/call-bind/callBound.js var require_callBound = __commonJS({ - "node_modules/.pnpm/call-bind@1.0.2/node_modules/call-bind/callBound.js"(exports2, module2) { + "node_modules/.pnpm/call-bind@1.0.6/node_modules/call-bind/callBound.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var GetIntrinsic = require_get_intrinsic(); @@ -9463,9 +9691,9 @@ var require_callBound = __commonJS({ } }); -// node_modules/.pnpm/object.assign@4.1.4/node_modules/object.assign/implementation.js +// node_modules/.pnpm/object.assign@4.1.5/node_modules/object.assign/implementation.js var require_implementation3 = __commonJS({ - "node_modules/.pnpm/object.assign@4.1.4/node_modules/object.assign/implementation.js"(exports2, module2) { + "node_modules/.pnpm/object.assign@4.1.5/node_modules/object.assign/implementation.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var objectKeys = require_object_keys(); @@ -9509,9 +9737,9 @@ var require_implementation3 = __commonJS({ } }); -// node_modules/.pnpm/object.assign@4.1.4/node_modules/object.assign/polyfill.js +// node_modules/.pnpm/object.assign@4.1.5/node_modules/object.assign/polyfill.js var require_polyfill = __commonJS({ - "node_modules/.pnpm/object.assign@4.1.4/node_modules/object.assign/polyfill.js"(exports2, module2) { + "node_modules/.pnpm/object.assign@4.1.5/node_modules/object.assign/polyfill.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var implementation = require_implementation3(); @@ -9559,9 +9787,9 @@ var require_polyfill = __commonJS({ } }); -// node_modules/.pnpm/object.assign@4.1.4/node_modules/object.assign/shim.js +// node_modules/.pnpm/object.assign@4.1.5/node_modules/object.assign/shim.js var require_shim = __commonJS({ - "node_modules/.pnpm/object.assign@4.1.4/node_modules/object.assign/shim.js"(exports2, module2) { + "node_modules/.pnpm/object.assign@4.1.5/node_modules/object.assign/shim.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var define2 = require_define_properties(); @@ -9580,9 +9808,9 @@ var require_shim = __commonJS({ } }); -// node_modules/.pnpm/object.assign@4.1.4/node_modules/object.assign/index.js +// node_modules/.pnpm/object.assign@4.1.5/node_modules/object.assign/index.js var require_object = __commonJS({ - "node_modules/.pnpm/object.assign@4.1.4/node_modules/object.assign/index.js"(exports2, module2) { + "node_modules/.pnpm/object.assign@4.1.5/node_modules/object.assign/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var defineProperties = require_define_properties(); @@ -9637,16 +9865,42 @@ var require_functions_have_names = __commonJS({ } }); -// node_modules/.pnpm/regexp.prototype.flags@1.5.0/node_modules/regexp.prototype.flags/implementation.js -var require_implementation4 = __commonJS({ - "node_modules/.pnpm/regexp.prototype.flags@1.5.0/node_modules/regexp.prototype.flags/implementation.js"(exports2, module2) { +// node_modules/.pnpm/set-function-name@2.0.1/node_modules/set-function-name/index.js +var require_set_function_name = __commonJS({ + "node_modules/.pnpm/set-function-name@2.0.1/node_modules/set-function-name/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); + var define2 = require_define_data_property(); + var hasDescriptors = require_has_property_descriptors()(); var functionsHaveConfigurableNames = require_functions_have_names().functionsHaveConfigurableNames(); - var $Object = Object; var $TypeError = TypeError; - module2.exports = function flags() { - if (this != null && this !== $Object(this)) { + module2.exports = function setFunctionName(fn, name) { + if (typeof fn !== "function") { + throw new $TypeError("`fn` is not a function"); + } + var loose = arguments.length > 2 && !!arguments[2]; + if (!loose || functionsHaveConfigurableNames) { + if (hasDescriptors) { + define2(fn, "name", name, true, true); + } else { + define2(fn, "name", name); + } + } + return fn; + }; + } +}); + +// node_modules/.pnpm/regexp.prototype.flags@1.5.2/node_modules/regexp.prototype.flags/implementation.js +var require_implementation4 = __commonJS({ + "node_modules/.pnpm/regexp.prototype.flags@1.5.2/node_modules/regexp.prototype.flags/implementation.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var setFunctionName = require_set_function_name(); + var $TypeError = require_type(); + var $Object = Object; + module2.exports = setFunctionName(function flags() { + if (this == null || this !== $Object(this)) { throw new $TypeError("RegExp.prototype.flags getter called on non-object"); } var result = ""; @@ -9675,16 +9929,13 @@ var require_implementation4 = __commonJS({ result += "y"; } return result; - }; - if (functionsHaveConfigurableNames && Object.defineProperty) { - Object.defineProperty(module2.exports, "name", { value: "get flags" }); - } + }, "get flags", true); } }); -// node_modules/.pnpm/regexp.prototype.flags@1.5.0/node_modules/regexp.prototype.flags/polyfill.js +// node_modules/.pnpm/regexp.prototype.flags@1.5.2/node_modules/regexp.prototype.flags/polyfill.js var require_polyfill2 = __commonJS({ - "node_modules/.pnpm/regexp.prototype.flags@1.5.0/node_modules/regexp.prototype.flags/polyfill.js"(exports2, module2) { + "node_modules/.pnpm/regexp.prototype.flags@1.5.2/node_modules/regexp.prototype.flags/polyfill.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var implementation = require_implementation4(); @@ -9716,9 +9967,9 @@ var require_polyfill2 = __commonJS({ } }); -// node_modules/.pnpm/regexp.prototype.flags@1.5.0/node_modules/regexp.prototype.flags/shim.js +// node_modules/.pnpm/regexp.prototype.flags@1.5.2/node_modules/regexp.prototype.flags/shim.js var require_shim2 = __commonJS({ - "node_modules/.pnpm/regexp.prototype.flags@1.5.0/node_modules/regexp.prototype.flags/shim.js"(exports2, module2) { + "node_modules/.pnpm/regexp.prototype.flags@1.5.2/node_modules/regexp.prototype.flags/shim.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var supportsDescriptors = require_define_properties().supportsDescriptors; @@ -9747,9 +9998,9 @@ var require_shim2 = __commonJS({ } }); -// node_modules/.pnpm/regexp.prototype.flags@1.5.0/node_modules/regexp.prototype.flags/index.js +// node_modules/.pnpm/regexp.prototype.flags@1.5.2/node_modules/regexp.prototype.flags/index.js var require_regexp_prototype = __commonJS({ - "node_modules/.pnpm/regexp.prototype.flags@1.5.0/node_modules/regexp.prototype.flags/index.js"(exports2, module2) { + "node_modules/.pnpm/regexp.prototype.flags@1.5.2/node_modules/regexp.prototype.flags/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var define2 = require_define_properties(); @@ -9767,9 +10018,9 @@ var require_regexp_prototype = __commonJS({ } }); -// node_modules/.pnpm/has-tostringtag@1.0.0/node_modules/has-tostringtag/shams.js +// node_modules/.pnpm/has-tostringtag@1.0.2/node_modules/has-tostringtag/shams.js var require_shams2 = __commonJS({ - "node_modules/.pnpm/has-tostringtag@1.0.0/node_modules/has-tostringtag/shams.js"(exports2, module2) { + "node_modules/.pnpm/has-tostringtag@1.0.2/node_modules/has-tostringtag/shams.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var hasSymbols = require_shams(); @@ -9807,16 +10058,16 @@ var require_is_arguments = __commonJS({ } }); -// (disabled):node_modules/.pnpm/object-inspect@1.12.3/node_modules/object-inspect/util.inspect +// (disabled):node_modules/.pnpm/object-inspect@1.13.1/node_modules/object-inspect/util.inspect var require_util = __commonJS({ - "(disabled):node_modules/.pnpm/object-inspect@1.12.3/node_modules/object-inspect/util.inspect"() { + "(disabled):node_modules/.pnpm/object-inspect@1.13.1/node_modules/object-inspect/util.inspect"() { init_polyfill_buffer(); } }); -// node_modules/.pnpm/object-inspect@1.12.3/node_modules/object-inspect/index.js +// node_modules/.pnpm/object-inspect@1.13.1/node_modules/object-inspect/index.js var require_object_inspect = __commonJS({ - "node_modules/.pnpm/object-inspect@1.12.3/node_modules/object-inspect/index.js"(exports2, module2) { + "node_modules/.pnpm/object-inspect@1.13.1/node_modules/object-inspect/index.js"(exports2, module2) { init_polyfill_buffer(); var hasMap = typeof Map === "function" && Map.prototype; var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, "size") : null; @@ -10031,6 +10282,12 @@ var require_object_inspect = __commonJS({ if (isString(obj)) { return markBoxed(inspect(String(obj))); } + if (typeof window !== "undefined" && obj === window) { + return "{ [object Window] }"; + } + if (obj === global) { + return "{ [object globalThis] }"; + } if (!isDate(obj) && !isRegExp(obj)) { var ys = arrObjKeys(obj, inspect); var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object; @@ -10324,15 +10581,15 @@ var require_object_inspect = __commonJS({ } }); -// node_modules/.pnpm/side-channel@1.0.4/node_modules/side-channel/index.js +// node_modules/.pnpm/side-channel@1.0.5/node_modules/side-channel/index.js var require_side_channel = __commonJS({ - "node_modules/.pnpm/side-channel@1.0.4/node_modules/side-channel/index.js"(exports2, module2) { + "node_modules/.pnpm/side-channel@1.0.5/node_modules/side-channel/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var GetIntrinsic = require_get_intrinsic(); var callBound = require_callBound(); var inspect = require_object_inspect(); - var $TypeError = GetIntrinsic("%TypeError%"); + var $TypeError = require_type(); var $WeakMap = GetIntrinsic("%WeakMap%", true); var $Map = GetIntrinsic("%Map%", true); var $weakMapGet = callBound("WeakMap.prototype.get", true); @@ -10436,15 +10693,14 @@ var require_side_channel = __commonJS({ } }); -// node_modules/.pnpm/internal-slot@1.0.5/node_modules/internal-slot/index.js +// node_modules/.pnpm/internal-slot@1.0.7/node_modules/internal-slot/index.js var require_internal_slot = __commonJS({ - "node_modules/.pnpm/internal-slot@1.0.5/node_modules/internal-slot/index.js"(exports2, module2) { + "node_modules/.pnpm/internal-slot@1.0.7/node_modules/internal-slot/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); - var GetIntrinsic = require_get_intrinsic(); - var has = require_src2(); + var hasOwn = require_hasown(); var channel = require_side_channel()(); - var $TypeError = GetIntrinsic("%TypeError%"); + var $TypeError = require_type(); var SLOT = { assert: function(O, slot) { if (!O || typeof O !== "object" && typeof O !== "function") { @@ -10476,7 +10732,7 @@ var require_internal_slot = __commonJS({ throw new $TypeError("`slot` must be a string"); } var slots = channel.get(O); - return !!slots && has(slots, "$" + slot); + return !!slots && hasOwn(slots, "$" + slot); }, set: function(O, slot, V) { if (!O || typeof O !== "object" && typeof O !== "function") { @@ -10896,352 +11152,19 @@ var require_object_is = __commonJS({ } }); -// node_modules/.pnpm/is-callable@1.2.7/node_modules/is-callable/index.js -var require_is_callable = __commonJS({ - "node_modules/.pnpm/is-callable@1.2.7/node_modules/is-callable/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var fnToStr = Function.prototype.toString; - var reflectApply = typeof Reflect === "object" && Reflect !== null && Reflect.apply; - var badArrayLike; - var isCallableMarker; - if (typeof reflectApply === "function" && typeof Object.defineProperty === "function") { - try { - badArrayLike = Object.defineProperty({}, "length", { - get: function() { - throw isCallableMarker; - } - }); - isCallableMarker = {}; - reflectApply(function() { - throw 42; - }, null, badArrayLike); - } catch (_) { - if (_ !== isCallableMarker) { - reflectApply = null; - } - } - } else { - reflectApply = null; - } - var constructorRegex = /^\s*class\b/; - var isES6ClassFn = function isES6ClassFunction(value) { - try { - var fnStr = fnToStr.call(value); - return constructorRegex.test(fnStr); - } catch (e) { - return false; - } - }; - var tryFunctionObject = function tryFunctionToStr(value) { - try { - if (isES6ClassFn(value)) { - return false; - } - fnToStr.call(value); - return true; - } catch (e) { - return false; - } - }; - var toStr = Object.prototype.toString; - var objectClass = "[object Object]"; - var fnClass = "[object Function]"; - var genClass = "[object GeneratorFunction]"; - var ddaClass = "[object HTMLAllCollection]"; - var ddaClass2 = "[object HTML document.all class]"; - var ddaClass3 = "[object HTMLCollection]"; - var hasToStringTag = typeof Symbol === "function" && !!Symbol.toStringTag; - var isIE68 = !(0 in [,]); - var isDDA = function isDocumentDotAll() { - return false; - }; - if (typeof document === "object") { - all = document.all; - if (toStr.call(all) === toStr.call(document.all)) { - isDDA = function isDocumentDotAll(value) { - if ((isIE68 || !value) && (typeof value === "undefined" || typeof value === "object")) { - try { - var str = toStr.call(value); - return (str === ddaClass || str === ddaClass2 || str === ddaClass3 || str === objectClass) && value("") == null; - } catch (e) { - } - } - return false; - }; - } - } - var all; - module2.exports = reflectApply ? function isCallable(value) { - if (isDDA(value)) { - return true; - } - if (!value) { - return false; - } - if (typeof value !== "function" && typeof value !== "object") { - return false; - } - try { - reflectApply(value, null, badArrayLike); - } catch (e) { - if (e !== isCallableMarker) { - return false; - } - } - return !isES6ClassFn(value) && tryFunctionObject(value); - } : function isCallable(value) { - if (isDDA(value)) { - return true; - } - if (!value) { - return false; - } - if (typeof value !== "function" && typeof value !== "object") { - return false; - } - if (hasToStringTag) { - return tryFunctionObject(value); - } - if (isES6ClassFn(value)) { - return false; - } - var strClass = toStr.call(value); - if (strClass !== fnClass && strClass !== genClass && !/^\[object HTML/.test(strClass)) { - return false; - } - return tryFunctionObject(value); - }; - } -}); - -// node_modules/.pnpm/for-each@0.3.3/node_modules/for-each/index.js -var require_for_each = __commonJS({ - "node_modules/.pnpm/for-each@0.3.3/node_modules/for-each/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var isCallable = require_is_callable(); - var toStr = Object.prototype.toString; - var hasOwnProperty = Object.prototype.hasOwnProperty; - var forEachArray = function forEachArray2(array, iterator, receiver) { - for (var i = 0, len = array.length; i < len; i++) { - if (hasOwnProperty.call(array, i)) { - if (receiver == null) { - iterator(array[i], i, array); - } else { - iterator.call(receiver, array[i], i, array); - } - } - } - }; - var forEachString = function forEachString2(string, iterator, receiver) { - for (var i = 0, len = string.length; i < len; i++) { - if (receiver == null) { - iterator(string.charAt(i), i, string); - } else { - iterator.call(receiver, string.charAt(i), i, string); - } - } - }; - var forEachObject = function forEachObject2(object, iterator, receiver) { - for (var k in object) { - if (hasOwnProperty.call(object, k)) { - if (receiver == null) { - iterator(object[k], k, object); - } else { - iterator.call(receiver, object[k], k, object); - } - } - } - }; - var forEach2 = function forEach3(list, iterator, thisArg) { - if (!isCallable(iterator)) { - throw new TypeError("iterator must be a function"); - } - var receiver; - if (arguments.length >= 3) { - receiver = thisArg; - } - if (toStr.call(list) === "[object Array]") { - forEachArray(list, iterator, receiver); - } else if (typeof list === "string") { - forEachString(list, iterator, receiver); - } else { - forEachObject(list, iterator, receiver); - } - }; - module2.exports = forEach2; - } -}); - -// node_modules/.pnpm/available-typed-arrays@1.0.5/node_modules/available-typed-arrays/index.js -var require_available_typed_arrays = __commonJS({ - "node_modules/.pnpm/available-typed-arrays@1.0.5/node_modules/available-typed-arrays/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var possibleNames = [ - "BigInt64Array", - "BigUint64Array", - "Float32Array", - "Float64Array", - "Int16Array", - "Int32Array", - "Int8Array", - "Uint16Array", - "Uint32Array", - "Uint8Array", - "Uint8ClampedArray" - ]; - var g = typeof globalThis === "undefined" ? global : globalThis; - module2.exports = function availableTypedArrays() { - var out = []; - for (var i = 0; i < possibleNames.length; i++) { - if (typeof g[possibleNames[i]] === "function") { - out[out.length] = possibleNames[i]; - } - } - return out; - }; - } -}); - -// node_modules/.pnpm/gopd@1.0.1/node_modules/gopd/index.js -var require_gopd = __commonJS({ - "node_modules/.pnpm/gopd@1.0.1/node_modules/gopd/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var GetIntrinsic = require_get_intrinsic(); - var $gOPD = GetIntrinsic("%Object.getOwnPropertyDescriptor%", true); - if ($gOPD) { - try { - $gOPD([], "length"); - } catch (e) { - $gOPD = null; - } - } - module2.exports = $gOPD; - } -}); - -// node_modules/.pnpm/which-typed-array@1.1.11/node_modules/which-typed-array/index.js -var require_which_typed_array = __commonJS({ - "node_modules/.pnpm/which-typed-array@1.1.11/node_modules/which-typed-array/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var forEach2 = require_for_each(); - var availableTypedArrays = require_available_typed_arrays(); - var callBind = require_call_bind(); - var callBound = require_callBound(); - var gOPD = require_gopd(); - var $toString = callBound("Object.prototype.toString"); - var hasToStringTag = require_shams2()(); - var g = typeof globalThis === "undefined" ? global : globalThis; - var typedArrays = availableTypedArrays(); - var $slice = callBound("String.prototype.slice"); - var getPrototypeOf = Object.getPrototypeOf; - var $indexOf = callBound("Array.prototype.indexOf", true) || function indexOf(array, value) { - for (var i = 0; i < array.length; i += 1) { - if (array[i] === value) { - return i; - } - } - return -1; - }; - var cache = { __proto__: null }; - if (hasToStringTag && gOPD && getPrototypeOf) { - forEach2(typedArrays, function(typedArray) { - var arr = new g[typedArray](); - if (Symbol.toStringTag in arr) { - var proto = getPrototypeOf(arr); - var descriptor = gOPD(proto, Symbol.toStringTag); - if (!descriptor) { - var superProto = getPrototypeOf(proto); - descriptor = gOPD(superProto, Symbol.toStringTag); - } - cache["$" + typedArray] = callBind(descriptor.get); - } - }); - } else { - forEach2(typedArrays, function(typedArray) { - var arr = new g[typedArray](); - cache["$" + typedArray] = callBind(arr.slice); - }); - } - var tryTypedArrays = function tryAllTypedArrays(value) { - var found = false; - forEach2(cache, function(getter, typedArray) { - if (!found) { - try { - if ("$" + getter(value) === typedArray) { - found = $slice(typedArray, 1); - } - } catch (e) { - } - } - }); - return found; - }; - var trySlices = function tryAllSlices(value) { - var found = false; - forEach2(cache, function(getter, name) { - if (!found) { - try { - getter(value); - found = $slice(name, 1); - } catch (e) { - } - } - }); - return found; - }; - module2.exports = function whichTypedArray(value) { - if (!value || typeof value !== "object") { - return false; - } - if (!hasToStringTag) { - var tag2 = $slice($toString(value), 8, -1); - if ($indexOf(typedArrays, tag2) > -1) { - return tag2; - } - if (tag2 !== "Object") { - return false; - } - return trySlices(value); - } - if (!gOPD) { - return null; - } - return tryTypedArrays(value); - }; - } -}); - -// node_modules/.pnpm/is-typed-array@1.1.12/node_modules/is-typed-array/index.js -var require_is_typed_array = __commonJS({ - "node_modules/.pnpm/is-typed-array@1.1.12/node_modules/is-typed-array/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var whichTypedArray = require_which_typed_array(); - module2.exports = function isTypedArray(value) { - return !!whichTypedArray(value); - }; - } -}); - -// node_modules/.pnpm/is-array-buffer@3.0.2/node_modules/is-array-buffer/index.js +// node_modules/.pnpm/is-array-buffer@3.0.4/node_modules/is-array-buffer/index.js var require_is_array_buffer = __commonJS({ - "node_modules/.pnpm/is-array-buffer@3.0.2/node_modules/is-array-buffer/index.js"(exports2, module2) { + "node_modules/.pnpm/is-array-buffer@3.0.4/node_modules/is-array-buffer/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var callBind = require_call_bind(); var callBound = require_callBound(); var GetIntrinsic = require_get_intrinsic(); - var isTypedArray = require_is_typed_array(); - var $ArrayBuffer = GetIntrinsic("ArrayBuffer", true); - var $Float32Array = GetIntrinsic("Float32Array", true); + var $ArrayBuffer = GetIntrinsic("%ArrayBuffer%", true); var $byteLength = callBound("ArrayBuffer.prototype.byteLength", true); - var abSlice = $ArrayBuffer && !$byteLength && new $ArrayBuffer().slice; - var $abSlice = abSlice && callBind(abSlice); + var $toString = callBound("Object.prototype.toString"); + var abSlice = !!$ArrayBuffer && !$byteLength && new $ArrayBuffer(0).slice; + var $abSlice = !!abSlice && callBind(abSlice); module2.exports = $byteLength || $abSlice ? function isArrayBuffer(obj) { if (!obj || typeof obj !== "object") { return false; @@ -11256,12 +11179,8 @@ var require_is_array_buffer = __commonJS({ } catch (e) { return false; } - } : $Float32Array ? function IsArrayBuffer(obj) { - try { - return new $Float32Array(obj).buffer === obj && !isTypedArray(obj); - } catch (e) { - return typeof obj === "object" && e.name === "RangeError"; - } + } : $ArrayBuffer ? function isArrayBuffer(obj) { + return $toString(obj) === "[object ArrayBuffer]"; } : function isArrayBuffer(obj) { return false; }; @@ -11657,9 +11576,328 @@ var require_which_collection = __commonJS({ } }); -// node_modules/.pnpm/array-buffer-byte-length@1.0.0/node_modules/array-buffer-byte-length/index.js +// node_modules/.pnpm/is-callable@1.2.7/node_modules/is-callable/index.js +var require_is_callable = __commonJS({ + "node_modules/.pnpm/is-callable@1.2.7/node_modules/is-callable/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var fnToStr = Function.prototype.toString; + var reflectApply = typeof Reflect === "object" && Reflect !== null && Reflect.apply; + var badArrayLike; + var isCallableMarker; + if (typeof reflectApply === "function" && typeof Object.defineProperty === "function") { + try { + badArrayLike = Object.defineProperty({}, "length", { + get: function() { + throw isCallableMarker; + } + }); + isCallableMarker = {}; + reflectApply(function() { + throw 42; + }, null, badArrayLike); + } catch (_) { + if (_ !== isCallableMarker) { + reflectApply = null; + } + } + } else { + reflectApply = null; + } + var constructorRegex = /^\s*class\b/; + var isES6ClassFn = function isES6ClassFunction(value) { + try { + var fnStr = fnToStr.call(value); + return constructorRegex.test(fnStr); + } catch (e) { + return false; + } + }; + var tryFunctionObject = function tryFunctionToStr(value) { + try { + if (isES6ClassFn(value)) { + return false; + } + fnToStr.call(value); + return true; + } catch (e) { + return false; + } + }; + var toStr = Object.prototype.toString; + var objectClass = "[object Object]"; + var fnClass = "[object Function]"; + var genClass = "[object GeneratorFunction]"; + var ddaClass = "[object HTMLAllCollection]"; + var ddaClass2 = "[object HTML document.all class]"; + var ddaClass3 = "[object HTMLCollection]"; + var hasToStringTag = typeof Symbol === "function" && !!Symbol.toStringTag; + var isIE68 = !(0 in [,]); + var isDDA = function isDocumentDotAll() { + return false; + }; + if (typeof document === "object") { + all = document.all; + if (toStr.call(all) === toStr.call(document.all)) { + isDDA = function isDocumentDotAll(value) { + if ((isIE68 || !value) && (typeof value === "undefined" || typeof value === "object")) { + try { + var str = toStr.call(value); + return (str === ddaClass || str === ddaClass2 || str === ddaClass3 || str === objectClass) && value("") == null; + } catch (e) { + } + } + return false; + }; + } + } + var all; + module2.exports = reflectApply ? function isCallable(value) { + if (isDDA(value)) { + return true; + } + if (!value) { + return false; + } + if (typeof value !== "function" && typeof value !== "object") { + return false; + } + try { + reflectApply(value, null, badArrayLike); + } catch (e) { + if (e !== isCallableMarker) { + return false; + } + } + return !isES6ClassFn(value) && tryFunctionObject(value); + } : function isCallable(value) { + if (isDDA(value)) { + return true; + } + if (!value) { + return false; + } + if (typeof value !== "function" && typeof value !== "object") { + return false; + } + if (hasToStringTag) { + return tryFunctionObject(value); + } + if (isES6ClassFn(value)) { + return false; + } + var strClass = toStr.call(value); + if (strClass !== fnClass && strClass !== genClass && !/^\[object HTML/.test(strClass)) { + return false; + } + return tryFunctionObject(value); + }; + } +}); + +// node_modules/.pnpm/for-each@0.3.3/node_modules/for-each/index.js +var require_for_each = __commonJS({ + "node_modules/.pnpm/for-each@0.3.3/node_modules/for-each/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var isCallable = require_is_callable(); + var toStr = Object.prototype.toString; + var hasOwnProperty = Object.prototype.hasOwnProperty; + var forEachArray = function forEachArray2(array, iterator, receiver) { + for (var i = 0, len = array.length; i < len; i++) { + if (hasOwnProperty.call(array, i)) { + if (receiver == null) { + iterator(array[i], i, array); + } else { + iterator.call(receiver, array[i], i, array); + } + } + } + }; + var forEachString = function forEachString2(string, iterator, receiver) { + for (var i = 0, len = string.length; i < len; i++) { + if (receiver == null) { + iterator(string.charAt(i), i, string); + } else { + iterator.call(receiver, string.charAt(i), i, string); + } + } + }; + var forEachObject = function forEachObject2(object, iterator, receiver) { + for (var k in object) { + if (hasOwnProperty.call(object, k)) { + if (receiver == null) { + iterator(object[k], k, object); + } else { + iterator.call(receiver, object[k], k, object); + } + } + } + }; + var forEach2 = function forEach3(list, iterator, thisArg) { + if (!isCallable(iterator)) { + throw new TypeError("iterator must be a function"); + } + var receiver; + if (arguments.length >= 3) { + receiver = thisArg; + } + if (toStr.call(list) === "[object Array]") { + forEachArray(list, iterator, receiver); + } else if (typeof list === "string") { + forEachString(list, iterator, receiver); + } else { + forEachObject(list, iterator, receiver); + } + }; + module2.exports = forEach2; + } +}); + +// node_modules/.pnpm/available-typed-arrays@1.0.6/node_modules/available-typed-arrays/index.js +var require_available_typed_arrays = __commonJS({ + "node_modules/.pnpm/available-typed-arrays@1.0.6/node_modules/available-typed-arrays/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var possibleNames = [ + "BigInt64Array", + "BigUint64Array", + "Float32Array", + "Float64Array", + "Int16Array", + "Int32Array", + "Int8Array", + "Uint16Array", + "Uint32Array", + "Uint8Array", + "Uint8ClampedArray" + ]; + var g = typeof globalThis === "undefined" ? global : globalThis; + module2.exports = function availableTypedArrays() { + var out = []; + for (var i = 0; i < possibleNames.length; i++) { + if (typeof g[possibleNames[i]] === "function") { + out[out.length] = possibleNames[i]; + } + } + return out; + }; + } +}); + +// node_modules/.pnpm/which-typed-array@1.1.14/node_modules/which-typed-array/index.js +var require_which_typed_array = __commonJS({ + "node_modules/.pnpm/which-typed-array@1.1.14/node_modules/which-typed-array/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var forEach2 = require_for_each(); + var availableTypedArrays = require_available_typed_arrays(); + var callBind = require_call_bind(); + var callBound = require_callBound(); + var gOPD = require_gopd(); + var $toString = callBound("Object.prototype.toString"); + var hasToStringTag = require_shams2()(); + var g = typeof globalThis === "undefined" ? global : globalThis; + var typedArrays = availableTypedArrays(); + var $slice = callBound("String.prototype.slice"); + var getPrototypeOf = Object.getPrototypeOf; + var $indexOf = callBound("Array.prototype.indexOf", true) || /** @type {(array: readonly unknown[], value: unknown) => keyof array} */ + function indexOf(array, value) { + for (var i = 0; i < array.length; i += 1) { + if (array[i] === value) { + return i; + } + } + return -1; + }; + var cache = { __proto__: null }; + if (hasToStringTag && gOPD && getPrototypeOf) { + forEach2(typedArrays, function(typedArray) { + var arr = new g[typedArray](); + if (Symbol.toStringTag in arr) { + var proto = getPrototypeOf(arr); + var descriptor = gOPD(proto, Symbol.toStringTag); + if (!descriptor) { + var superProto = getPrototypeOf(proto); + descriptor = gOPD(superProto, Symbol.toStringTag); + } + cache["$" + typedArray] = callBind(descriptor.get); + } + }); + } else { + forEach2(typedArrays, function(typedArray) { + var arr = new g[typedArray](); + var fn = arr.slice || arr.set; + if (fn) { + cache["$" + typedArray] = callBind(fn); + } + }); + } + var tryTypedArrays = function tryAllTypedArrays(value) { + var found = false; + forEach2( + // eslint-disable-next-line no-extra-parens + /** @type {Record<`\$${TypedArrayName}`, typeof cache>} */ + /** @type {any} */ + cache, + /** @type {(getter: typeof cache, name: `\$${TypedArrayName}`) => void} */ + function(getter, typedArray) { + if (!found) { + try { + if ("$" + getter(value) === typedArray) { + found = $slice(typedArray, 1); + } + } catch (e) { + } + } + } + ); + return found; + }; + var trySlices = function tryAllSlices(value) { + var found = false; + forEach2( + // eslint-disable-next-line no-extra-parens + /** @type {any} */ + cache, + /** @type {(getter: typeof cache, name: `\$${TypedArrayName}`) => void} */ + function(getter, name) { + if (!found) { + try { + getter(value); + found = $slice(name, 1); + } catch (e) { + } + } + } + ); + return found; + }; + module2.exports = function whichTypedArray(value) { + if (!value || typeof value !== "object") { + return false; + } + if (!hasToStringTag) { + var tag2 = $slice($toString(value), 8, -1); + if ($indexOf(typedArrays, tag2) > -1) { + return tag2; + } + if (tag2 !== "Object") { + return false; + } + return trySlices(value); + } + if (!gOPD) { + return null; + } + return tryTypedArrays(value); + }; + } +}); + +// node_modules/.pnpm/array-buffer-byte-length@1.0.1/node_modules/array-buffer-byte-length/index.js var require_array_buffer_byte_length = __commonJS({ - "node_modules/.pnpm/array-buffer-byte-length@1.0.0/node_modules/array-buffer-byte-length/index.js"(exports2, module2) { + "node_modules/.pnpm/array-buffer-byte-length@1.0.1/node_modules/array-buffer-byte-length/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var callBound = require_callBound(); @@ -11674,9 +11912,9 @@ var require_array_buffer_byte_length = __commonJS({ } }); -// node_modules/.pnpm/deep-equal@2.2.2/node_modules/deep-equal/index.js +// node_modules/.pnpm/deep-equal@2.2.3/node_modules/deep-equal/index.js var require_deep_equal = __commonJS({ - "node_modules/.pnpm/deep-equal@2.2.2/node_modules/deep-equal/index.js"(exports2, module2) { + "node_modules/.pnpm/deep-equal@2.2.3/node_modules/deep-equal/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var assign2 = require_object(); @@ -12915,7 +13153,7 @@ var require_template = __commonJS({ v: hoganEscape, // triple stache t: coerceToString, - render: function render2(context, partials, indent2) { + render: function render(context, partials, indent2) { return this.ri([context], partials || {}, indent2); }, // render internal -- a hook for overrides that catches partials too @@ -13654,7 +13892,7 @@ var require_feather = __commonJS({ "./node_modules/core-js/internals/well-known-symbol.js" ); var TO_STRING_TAG = wellKnownSymbol("toStringTag"); - var CORRECT_ARGUMENTS = classofRaw(function() { + var CORRECT_ARGUMENTS = classofRaw(/* @__PURE__ */ function() { return arguments; }()) == "Arguments"; var tryGet = function(it, key2) { @@ -15468,7 +15706,7 @@ var require_feather = __commonJS({ /***/ function(module3, exports3) { var g; - g = function() { + g = /* @__PURE__ */ function() { return this; }(); try { @@ -15514,7 +15752,7 @@ var require_feather = __commonJS({ } return target; }; - var _createClass = function() { + var _createClass = /* @__PURE__ */ function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; @@ -15802,7 +16040,7 @@ __export(main_exports, { module.exports = __toCommonJS(main_exports); init_polyfill_buffer(); -// node_modules/.pnpm/isomorphic-git@1.24.5/node_modules/isomorphic-git/index.js +// node_modules/.pnpm/isomorphic-git@1.25.3/node_modules/isomorphic-git/index.js init_polyfill_buffer(); var import_async_lock = __toESM(require_async_lock(), 1); var import_sha1 = __toESM(require_sha1(), 1); @@ -16713,8 +16951,30 @@ function compareRefNames(a, b) { } return tmp; } +var memo = /* @__PURE__ */ new Map(); function normalizePath(path2) { - return path2.replace(/\/\.\//g, "/").replace(/\/{2,}/g, "/").replace(/^\/\.$/, "/").replace(/^\.\/$/, ".").replace(/^\.\//, "").replace(/\/\.$/, "").replace(/(.+)\/$/, "$1").replace(/^$/, "."); + let normalizedPath = memo.get(path2); + if (!normalizedPath) { + normalizedPath = normalizePathInternal(path2); + memo.set(path2, normalizedPath); + } + return normalizedPath; +} +function normalizePathInternal(path2) { + path2 = path2.split("/./").join("/").replace(/\/{2,}/g, "/"); + if (path2 === "/.") + return "/"; + if (path2 === "./") + return "."; + if (path2.startsWith("./")) + path2 = path2.slice(2); + if (path2.endsWith("/.")) + path2 = path2.slice(0, -2); + if (path2.length > 1 && path2.endsWith("/")) + path2 = path2.slice(0, -1); + if (path2 === "") + return "."; + return path2; } function join(...parts) { return normalizePath(parts.map(normalizePath).join("/")); @@ -17539,6 +17799,8 @@ var StreamReader = class { let { done, value } = await this.stream.next(); if (done) { this._ended = true; + if (!value) + return Buffer.alloc(0); } if (value) { value = Buffer.from(value); @@ -18248,13 +18510,16 @@ MergeNotSupportedError.code = "MergeNotSupportedError"; var MergeConflictError = class _MergeConflictError extends BaseError { /** * @param {Array<string>} filepaths + * @param {Array<string>} bothModified + * @param {Array<string>} deleteByUs + * @param {Array<string>} deleteByTheirs */ - constructor(filepaths) { + constructor(filepaths, bothModified, deleteByUs, deleteByTheirs) { super( `Automatic merge failed with one or more merge conflicts in the following files: ${filepaths.toString()}. Fix conflicts then commit the result.` ); this.code = this.name = _MergeConflictError.code; - this.data = { filepaths }; + this.data = { filepaths, bothModified, deleteByUs, deleteByTheirs }; } }; MergeConflictError.code = "MergeConflictError"; @@ -20799,7 +21064,7 @@ var GitPktLine = class { return true; return buffer2; } catch (err) { - console.log("error", err); + stream.error = err; return true; } }; @@ -21174,8 +21439,8 @@ function filterCapabilities(server, client) { } var pkg = { name: "isomorphic-git", - version: "1.24.5", - agent: "git/isomorphic-git@1.24.5" + version: "1.25.3", + agent: "git/isomorphic-git@1.25.3" }; var FIFO = class { constructor() { @@ -21202,8 +21467,8 @@ var FIFO = class { } } destroy(err) { - this._ended = true; this.error = err; + this.end(); } async next() { if (this._queue.length > 0) { @@ -21270,7 +21535,7 @@ var GitSideBand = class { if (line === true) { packetlines.end(); progress.end(); - packfile.end(); + input.error ? packfile.destroy(input.error) : packfile.end(); return; } switch (line[0]) { @@ -21285,11 +21550,13 @@ var GitSideBand = class { case 3: { const error = line.slice(1); progress.write(error); + packetlines.end(); + progress.end(); packfile.destroy(new Error(error.toString("utf8"))); return; } default: { - packetlines.write(line.slice(0)); + packetlines.write(line); } } nextBit(); @@ -21399,9 +21666,16 @@ async function parseUploadPackResponse(stream) { } else if (line.startsWith("NAK")) { nak = true; done = true; + } else { + done = true; + nak = true; } if (done) { - resolve({ shallows, unshallows, acks, nak, packfile, progress }); + stream.error ? reject(stream.error) : resolve({ shallows, unshallows, acks, nak, packfile, progress }); + } + }).finally(() => { + if (!done) { + stream.error ? reject(stream.error) : resolve({ shallows, unshallows, acks, nak, packfile, progress }); } }); }); @@ -21690,6 +21964,8 @@ async function _fetch({ }); } const packfile = Buffer.from(await collect(response.packfile)); + if (raw.body.error) + throw raw.body.error; const packfileSha = packfile.slice(-20).toString("hex"); const res = { defaultBranch: response.HEAD, @@ -22220,6 +22496,9 @@ async function mergeTree({ const baseTree = TREE({ ref: baseOid }); const theirTree = TREE({ ref: theirOid }); const unmergedFiles = []; + const bothModified = []; + const deleteByUs = []; + const deleteByTheirs = []; const results = await _walk({ fs, cache, @@ -22271,6 +22550,7 @@ async function mergeTree({ }).then(async (r) => { if (!r.cleanMerge) { unmergedFiles.push(filepath); + bothModified.push(filepath); if (!abortOnConflict) { const baseOid2 = await base.oid(); const ourOid2 = await ours.oid(); @@ -22286,6 +22566,43 @@ async function mergeTree({ return r.mergeResult; }); } + if (base && !ours && theirs && await base.type() === "blob" && await theirs.type() === "blob") { + unmergedFiles.push(filepath); + deleteByUs.push(filepath); + if (!abortOnConflict) { + const baseOid2 = await base.oid(); + const theirOid2 = await theirs.oid(); + index2.delete({ filepath }); + index2.insert({ filepath, oid: baseOid2, stage: 1 }); + index2.insert({ filepath, oid: theirOid2, stage: 3 }); + } + return { + mode: await theirs.mode(), + oid: await theirs.oid(), + type: "blob", + path: path2 + }; + } + if (base && ours && !theirs && await base.type() === "blob" && await ours.type() === "blob") { + unmergedFiles.push(filepath); + deleteByTheirs.push(filepath); + if (!abortOnConflict) { + const baseOid2 = await base.oid(); + const ourOid2 = await ours.oid(); + index2.delete({ filepath }); + index2.insert({ filepath, oid: baseOid2, stage: 1 }); + index2.insert({ filepath, oid: ourOid2, stage: 2 }); + } + return { + mode: await ours.mode(), + oid: await ours.oid(), + type: "blob", + path: path2 + }; + } + if (base && !ours && !theirs && await base.type() === "blob") { + return void 0; + } throw new MergeNotSupportedError(); } } @@ -22334,7 +22651,12 @@ async function mergeTree({ } }); } - return new MergeConflictError(unmergedFiles); + return new MergeConflictError( + unmergedFiles, + bothModified, + deleteByUs, + deleteByTheirs + ); } return results.oid; } @@ -25403,7 +25725,7 @@ var index = { var isomorphic_git_default = index; // src/main.ts -var import_obsidian30 = require("obsidian"); +var import_obsidian31 = require("obsidian"); // src/lineAuthor/lineAuthorIntegration.ts init_polyfill_buffer(); @@ -28014,7 +28336,7 @@ var init_scheduler = __esm2({ "src/lib/runners/scheduler.ts"() { init_utils(); init_git_logger(); - createScheduledTask = (() => { + createScheduledTask = /* @__PURE__ */ (() => { let id = 0; return () => { id++; @@ -28607,9 +28929,9 @@ var init_TagList = __esm2({ return singleSorted(toNumber(partsA[0]), toNumber(partsB[0])); } for (let i = 0, l = Math.max(partsA.length, partsB.length); i < l; i++) { - const diff2 = sorted(toNumber(partsA[i]), toNumber(partsB[i])); - if (diff2) { - return diff2; + const diff3 = sorted(toNumber(partsA[i]), toNumber(partsB[i])); + if (diff3) { + return diff3; } } return 0; @@ -29274,6 +29596,7 @@ var DEFAULT_SETTINGS = { disablePush: false, pullBeforePush: true, disablePopups: false, + disablePopupsForNoChanges: false, listChangedFilesInMessageBody: false, showStatusBar: true, updateSubmodules: false, @@ -29292,6 +29615,8 @@ var DEFAULT_SETTINGS = { submoduleRecurseCheckout: false, gitDir: "", showFileMenu: true, + authorInHistoryView: "hide", + dateInHistoryView: false, lineAuthor: { show: false, followMovement: "inactive", @@ -29417,6 +29742,11 @@ function getDisplayPath(path2) { return path2; return path2.split("/").last().replace(".md", ""); } +function formatMinutes(minutes) { + if (minutes === 1) + return "1 minute"; + return `${minutes} minutes`; +} // src/gitManager/gitManager.ts init_polyfill_buffer(); @@ -29425,15 +29755,24 @@ var GitManager = class { this.plugin = plugin; this.app = plugin.app; } - getVaultPath(path2) { + // Constructs a path relative to the vault from a path relative to the git repository + getRelativeVaultPath(path2) { if (this.plugin.settings.basePath) { return this.plugin.settings.basePath + "/" + path2; } else { return path2; } } - asRepositoryRelativePath(path2, relativeToVault) { - return relativeToVault && this.plugin.settings.basePath.length > 0 ? path2.substring(this.plugin.settings.basePath.length + 1) : path2; + // Constructs a path relative to the git repository from a path relative to the vault + // + // @param doConversion - If false, the path is returned as is. This is added because that parameter is often passed on to functions where this method is called. + getRelativeRepoPath(path2, doConversion = true) { + if (doConversion) { + if (this.plugin.settings.basePath.length > 0) { + return path2.substring(this.plugin.settings.basePath.length + 1); + } + } + return path2; } _getTreeStructure(children2, beginLength = 0) { const list = []; @@ -29454,7 +29793,7 @@ var GitManager = class { list.push({ title, path: path2, - vaultPath: this.getVaultPath(path2), + vaultPath: this.getRelativeVaultPath(path2), children: this._getTreeStructure( childrenWithSameTitle, (beginLength > 0 ? beginLength + title.length : title.length) + 1 @@ -29465,7 +29804,7 @@ var GitManager = class { title: restPath, data: first2, path: first2.path, - vaultPath: this.getVaultPath(first2.path) + vaultPath: this.getRelativeVaultPath(first2.path) }); children2.remove(first2); } @@ -29545,10 +29884,10 @@ var GitManager = class { const files = chunks.join(", "); template = template.replace("{{files}}", files); } - const moment5 = window.moment; + const moment6 = window.moment; template = template.replace( "{{date}}", - moment5().format(this.plugin.settings.commitDateFormat) + moment6().format(this.plugin.settings.commitDateFormat) ); if (this.plugin.settings.listChangedFilesInMessageBody) { template = template + "\n\nAffected files:\n" + (status2 != null ? status2 : await this.status()).staged.map((e) => e.path).join("\n"); @@ -29606,32 +29945,29 @@ var SimpleGit = class extends GitManager { this.plugin.setState(1 /* status */); const status2 = await this.git.status((err) => this.onError(err)); this.plugin.setState(0 /* idle */); + const allFilesFormatted = status2.files.map((e) => { + const res = this.formatPath(e); + return { + path: res.path, + from: res.from, + index: e.index === "?" ? "U" : e.index, + working_dir: e.working_dir === "?" ? "U" : e.working_dir, + vault_path: this.getRelativeVaultPath(res.path) + }; + }); return { - changed: status2.files.filter((e) => e.working_dir !== " ").map((e) => { - const res = this.formatPath(e); - return { - path: res.path, - from: res.from, - working_dir: e.working_dir === "?" ? "U" : e.working_dir, - vault_path: this.getVaultPath(res.path) - }; - }), - staged: status2.files.filter((e) => e.index !== " " && e.index != "?").map((e) => { - const res = this.formatPath(e, e.index === "R"); - return { - path: res.path, - from: res.from, - index: e.index, - vault_path: this.getVaultPath(res.path) - }; - }), + all: allFilesFormatted, + changed: allFilesFormatted.filter((e) => e.working_dir !== " "), + staged: allFilesFormatted.filter( + (e) => e.index !== " " && e.index != "U" + ), conflicted: status2.conflicted.map( (path2) => this.formatPath({ path: path2 }).path ) }; } async submoduleAwareHeadRevisonInContainingDirectory(filepath) { - const repoPath = this.asRepositoryRelativePath(filepath, true); + const repoPath = this.getRelativeRepoPath(filepath); const containingDirectory = path.dirname(repoPath); const args = ["-C", containingDirectory, "rev-parse", "HEAD"]; const result = this.git.raw(args); @@ -29691,7 +30027,7 @@ var SimpleGit = class extends GitManager { } } async blame(path2, trackMovement, ignoreWhitespace) { - path2 = this.asRepositoryRelativePath(path2, true); + path2 = this.getRelativeRepoPath(path2); if (!await this.isTracked(path2)) return "untracked"; const inSubmodule = await this.getSubmoduleOfFile(path2); @@ -29749,10 +30085,14 @@ var SimpleGit = class extends GitManager { dispatchEvent(new CustomEvent("git-head-update")); return res.summary.changes; } - async commit(message) { + async commit({ + message, + amend + }) { this.plugin.setState(4 /* commit */); const res = (await this.git.commit( await this.formatCommitMessage(message), + amend ? ["--amend"] : [], (err) => this.onError(err) )).summary.changes; dispatchEvent(new CustomEvent("git-head-update")); @@ -29761,7 +30101,7 @@ var SimpleGit = class extends GitManager { } async stage(path2, relativeToVault) { this.plugin.setState(3 /* add */); - path2 = this.asRepositoryRelativePath(path2, relativeToVault); + path2 = this.getRelativeRepoPath(path2, relativeToVault); await this.git.add(["--", path2], (err) => this.onError(err)); this.plugin.setState(0 /* idle */); } @@ -29780,7 +30120,7 @@ var SimpleGit = class extends GitManager { } async unstage(path2, relativeToVault) { this.plugin.setState(3 /* add */); - path2 = this.asRepositoryRelativePath(path2, relativeToVault); + path2 = this.getRelativeRepoPath(path2, relativeToVault); await this.git.reset(["--", path2], (err) => this.onError(err)); this.plugin.setState(0 /* idle */); } @@ -29790,7 +30130,7 @@ var SimpleGit = class extends GitManager { this.plugin.setState(0 /* idle */); } async hashObject(filepath) { - filepath = this.asRepositoryRelativePath(filepath, true); + filepath = this.getRelativeRepoPath(filepath); const inSubmodule = await this.getSubmoduleOfFile(filepath); const args = inSubmodule ? ["-C", inSubmodule.submodule] : []; const relativeFilepath = inSubmodule ? inSubmodule.relativeFilepath : filepath; @@ -29816,6 +30156,12 @@ var SimpleGit = class extends GitManager { [branchInfo.current], (err) => this.onError(err) ); + if (!branchInfo.tracking && this.plugin.settings.updateSubmodules) { + this.plugin.log( + "No tracking branch found. Ignoring pull of main repo and updating submodules only." + ); + return; + } await this.git.fetch((err) => this.onError(err)); const upstreamCommit = await this.git.revparse( [branchInfo.tracking], @@ -29867,7 +30213,7 @@ var SimpleGit = class extends GitManager { return { path: e, working_dir: "P", - vault_path: this.getVaultPath(e) + vault_path: this.getRelativeVaultPath(e) }; }); } else { @@ -29875,17 +30221,9 @@ var SimpleGit = class extends GitManager { } } async push() { - this.plugin.setState(1 /* status */); - const status2 = await this.git.status(); - const trackingBranch = status2.tracking; - const currentBranch2 = status2.current; - const remoteChangedFiles = (await this.git.diffSummary( - [currentBranch2, trackingBranch, "--"], - (err) => this.onError(err) - )).changed; this.plugin.setState(5 /* push */); if (this.plugin.settings.updateSubmodules) { - await this.git.env({ ...process.env, OBSIDIAN_GIT: 1 }).subModule( + const res = await this.git.env({ ...process.env, OBSIDIAN_GIT: 1 }).subModule( [ "foreach", "--recursive", @@ -29893,7 +30231,21 @@ var SimpleGit = class extends GitManager { ], (err) => this.onError(err) ); + console.log(res); } + const status2 = await this.git.status(); + const trackingBranch = status2.tracking; + const currentBranch2 = status2.current; + if (!trackingBranch && this.plugin.settings.updateSubmodules) { + this.plugin.log( + "No tracking branch found. Ignoring push of main repo and updating submodules only." + ); + return void 0; + } + const remoteChangedFiles = (await this.git.diffSummary( + [currentBranch2, trackingBranch, "--"], + (err) => this.onError(err) + )).changed; await this.git.env({ ...process.env, OBSIDIAN_GIT: 1 }).push((err) => this.onError(err)); return remoteChangedFiles; } @@ -29942,16 +30294,21 @@ var SimpleGit = class extends GitManager { }; } async getRemoteUrl(remote) { - return await this.git.remote( - ["get-url", remote], - (err, url) => this.onError(err) - ) || void 0; + try { + return await this.git.remote(["get-url", remote]) || void 0; + } catch (error) { + if (error.toString().contains(remote)) { + return void 0; + } else { + this.onError(error); + } + } } // https://github.com/kometenstaub/obsidian-version-history-diff/issues/3 async log(file, relativeToVault = true, limit) { let path2; if (file) { - path2 = this.asRepositoryRelativePath(file, relativeToVault); + path2 = this.getRelativeRepoPath(file, relativeToVault); } const res = await this.git.log( { @@ -29966,7 +30323,11 @@ var SimpleGit = class extends GitManager { var _a2, _b, _c, _d; return { ...e, - refs: e.refs.split(", "), + author: { + name: e.author_name, + email: e.author_email + }, + refs: e.refs.split(", ").filter((e2) => e2.length > 0), diff: { ...e.diff, files: (_b = (_a2 = e.diff) == null ? void 0 : _a2.files.map((f) => ({ @@ -29974,7 +30335,7 @@ var SimpleGit = class extends GitManager { status: f.status, path: f.file, hash: e.hash, - vault_path: this.getVaultPath(f.file) + vault_path: this.getRelativeVaultPath(f.file) }))) != null ? _b : [] }, fileName: (_d = (_c = e.diff) == null ? void 0 : _c.files.first()) == null ? void 0 : _d.file @@ -29982,7 +30343,7 @@ var SimpleGit = class extends GitManager { }); } async show(commitHash, file, relativeToVault = true) { - const path2 = this.asRepositoryRelativePath(file, relativeToVault); + const path2 = this.getRelativeRepoPath(file, relativeToVault); return this.git.show( [commitHash + ":" + path2], (err) => this.onError(err) @@ -30071,8 +30432,6 @@ var SimpleGit = class extends GitManager { ["-r", "--list", `${remote}*`], (err) => this.onError(err) ); - console.log(remote); - console.log(res); const list = []; for (const item in res.branches) { list.push(res.branches[item].name); @@ -30383,12 +30742,13 @@ var import_obsidian8 = require("obsidian"); // src/gitManager/isomorphicGit.ts init_polyfill_buffer(); -// node_modules/.pnpm/diff@5.1.0/node_modules/diff/lib/index.mjs +// node_modules/.pnpm/diff@5.2.0/node_modules/diff/lib/index.mjs init_polyfill_buffer(); function Diff() { } Diff.prototype = { diff: function diff(oldString, newString) { + var _options$timeout; var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; var callback = options.callback; if (typeof options === "function") { @@ -30417,42 +30777,53 @@ Diff.prototype = { if (options.maxEditLength) { maxEditLength = Math.min(maxEditLength, options.maxEditLength); } + var maxExecutionTime = (_options$timeout = options.timeout) !== null && _options$timeout !== void 0 ? _options$timeout : Infinity; + var abortAfterTimestamp = Date.now() + maxExecutionTime; var bestPath = [{ - newPos: -1, - components: [] + oldPos: -1, + lastComponent: void 0 }]; - var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); - if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) { + var newPos = this.extractCommon(bestPath[0], newString, oldString, 0); + if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) { return done([{ value: this.join(newString), count: newString.length }]); } + var minDiagonalToConsider = -Infinity, maxDiagonalToConsider = Infinity; function execEditLength() { - for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) { + for (var diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) { var basePath = void 0; - var addPath = bestPath[diagonalPath - 1], removePath = bestPath[diagonalPath + 1], _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; - if (addPath) { + var removePath = bestPath[diagonalPath - 1], addPath = bestPath[diagonalPath + 1]; + if (removePath) { bestPath[diagonalPath - 1] = void 0; } - var canAdd = addPath && addPath.newPos + 1 < newLen, canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen; + var canAdd = false; + if (addPath) { + var addPathNewPos = addPath.oldPos - diagonalPath; + canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen; + } + var canRemove = removePath && removePath.oldPos + 1 < oldLen; if (!canAdd && !canRemove) { bestPath[diagonalPath] = void 0; continue; } - if (!canAdd || canRemove && addPath.newPos < removePath.newPos) { - basePath = clonePath(removePath); - self2.pushComponent(basePath.components, void 0, true); + if (!canRemove || canAdd && removePath.oldPos + 1 < addPath.oldPos) { + basePath = self2.addToPath(addPath, true, void 0, 0); } else { - basePath = addPath; - basePath.newPos++; - self2.pushComponent(basePath.components, true, void 0); + basePath = self2.addToPath(removePath, void 0, true, 1); } - _oldPos = self2.extractCommon(basePath, newString, oldString, diagonalPath); - if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) { - return done(buildValues(self2, basePath.components, newString, oldString, self2.useLongestToken)); + newPos = self2.extractCommon(basePath, newString, oldString, diagonalPath); + if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) { + return done(buildValues(self2, basePath.lastComponent, newString, oldString, self2.useLongestToken)); } else { bestPath[diagonalPath] = basePath; + if (basePath.oldPos + 1 >= oldLen) { + maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1); + } + if (newPos + 1 >= newLen) { + minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1); + } } } editLength++; @@ -30460,7 +30831,7 @@ Diff.prototype = { if (callback) { (function exec() { setTimeout(function() { - if (editLength > maxEditLength) { + if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) { return callback(); } if (!execEditLength()) { @@ -30469,7 +30840,7 @@ Diff.prototype = { }, 0); })(); } else { - while (editLength <= maxEditLength) { + while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) { var ret = execEditLength(); if (ret) { return ret; @@ -30477,36 +30848,45 @@ Diff.prototype = { } } }, - pushComponent: function pushComponent(components, added, removed) { - var last2 = components[components.length - 1]; + addToPath: function addToPath(path2, added, removed, oldPosInc) { + var last2 = path2.lastComponent; if (last2 && last2.added === added && last2.removed === removed) { - components[components.length - 1] = { - count: last2.count + 1, - added, - removed + return { + oldPos: path2.oldPos + oldPosInc, + lastComponent: { + count: last2.count + 1, + added, + removed, + previousComponent: last2.previousComponent + } }; } else { - components.push({ - count: 1, - added, - removed - }); + return { + oldPos: path2.oldPos + oldPosInc, + lastComponent: { + count: 1, + added, + removed, + previousComponent: last2 + } + }; } }, extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) { - var newLen = newString.length, oldLen = oldString.length, newPos = basePath.newPos, oldPos = newPos - diagonalPath, commonCount = 0; + var newLen = newString.length, oldLen = oldString.length, oldPos = basePath.oldPos, newPos = oldPos - diagonalPath, commonCount = 0; while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) { newPos++; oldPos++; commonCount++; } if (commonCount) { - basePath.components.push({ - count: commonCount - }); + basePath.lastComponent = { + count: commonCount, + previousComponent: basePath.lastComponent + }; } - basePath.newPos = newPos; - return oldPos; + basePath.oldPos = oldPos; + return newPos; }, equals: function equals(left, right) { if (this.options.comparator) { @@ -30534,7 +30914,16 @@ Diff.prototype = { return chars.join(""); } }; -function buildValues(diff2, components, newString, oldString, useLongestToken) { +function buildValues(diff3, lastComponent, newString, oldString, useLongestToken) { + var components = []; + var nextComponent; + while (lastComponent) { + components.push(lastComponent); + nextComponent = lastComponent.previousComponent; + delete lastComponent.previousComponent; + lastComponent = nextComponent; + } + components.reverse(); var componentPos = 0, componentLen = components.length, newPos = 0, oldPos = 0; for (; componentPos < componentLen; componentPos++) { var component = components[componentPos]; @@ -30545,16 +30934,16 @@ function buildValues(diff2, components, newString, oldString, useLongestToken) { var oldValue = oldString[oldPos + i]; return oldValue.length > value2.length ? oldValue : value2; }); - component.value = diff2.join(value); + component.value = diff3.join(value); } else { - component.value = diff2.join(newString.slice(newPos, newPos + component.count)); + component.value = diff3.join(newString.slice(newPos, newPos + component.count)); } newPos += component.count; if (!component.added) { oldPos += component.count; } } else { - component.value = diff2.join(oldString.slice(oldPos, oldPos + component.count)); + component.value = diff3.join(oldString.slice(oldPos, oldPos + component.count)); oldPos += component.count; if (componentPos && components[componentPos - 1].added) { var tmp = components[componentPos - 1]; @@ -30563,23 +30952,14 @@ function buildValues(diff2, components, newString, oldString, useLongestToken) { } } } - var lastComponent = components[componentLen - 1]; - if (componentLen > 1 && typeof lastComponent.value === "string" && (lastComponent.added || lastComponent.removed) && diff2.equals("", lastComponent.value)) { - components[componentLen - 2].value += lastComponent.value; + var finalComponent = components[componentLen - 1]; + if (componentLen > 1 && typeof finalComponent.value === "string" && (finalComponent.added || finalComponent.removed) && diff3.equals("", finalComponent.value)) { + components[componentLen - 2].value += finalComponent.value; components.pop(); } return components; } -function clonePath(path2) { - return { - newPos: path2.newPos, - components: path2.components.slice(0) - }; -} var characterDiff = new Diff(); -function diffChars(oldStr, newStr, options) { - return characterDiff.diff(oldStr, newStr, options); -} var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/; var reWhitespace = /\S/; var wordDiff = new Diff(); @@ -30601,11 +30981,11 @@ wordDiff.tokenize = function(value) { } return tokens; }; -function diffWordsWithSpace(oldStr, newStr, options) { - return wordDiff.diff(oldStr, newStr, options); -} var lineDiff = new Diff(); lineDiff.tokenize = function(value) { + if (this.options.stripTrailingCr) { + value = value.replace(/\r\n/g, "\n"); + } var retLines = [], linesAndNewlines = value.split(/(\n|\r\n)/); if (!linesAndNewlines[linesAndNewlines.length - 1]) { linesAndNewlines.pop(); @@ -30757,11 +31137,11 @@ function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, ne if (typeof options.context === "undefined") { options.context = 4; } - var diff2 = diffLines(oldStr, newStr, options); - if (!diff2) { + var diff3 = diffLines(oldStr, newStr, options); + if (!diff3) { return; } - diff2.push({ + diff3.push({ value: "", lines: [] }); @@ -30773,12 +31153,12 @@ function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, ne var hunks = []; var oldRangeStart = 0, newRangeStart = 0, curRange = [], oldLine = 1, newLine = 1; var _loop = function _loop2(i2) { - var current = diff2[i2], lines = current.lines || current.value.replace(/\n$/, "").split("\n"); + var current = diff3[i2], lines = current.lines || current.value.replace(/\n$/, "").split("\n"); current.lines = lines; if (current.added || current.removed) { var _curRange; if (!oldRangeStart) { - var prev = diff2[i2 - 1]; + var prev = diff3[i2 - 1]; oldRangeStart = oldLine; newRangeStart = newLine; if (prev) { @@ -30797,7 +31177,7 @@ function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, ne } } else { if (oldRangeStart) { - if (lines.length <= options.context * 2 && i2 < diff2.length - 2) { + if (lines.length <= options.context * 2 && i2 < diff3.length - 2) { var _curRange2; (_curRange2 = curRange).push.apply(_curRange2, _toConsumableArray(contextLines(lines))); } else { @@ -30811,7 +31191,7 @@ function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, ne newLines: newLine - newRangeStart + contextSize, lines: curRange }; - if (i2 >= diff2.length - 2 && lines.length <= options.context) { + if (i2 >= diff3.length - 2 && lines.length <= options.context) { var oldEOFNewline = /\n$/.test(oldStr); var newEOFNewline = /\n$/.test(newStr); var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines; @@ -30832,7 +31212,7 @@ function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, ne newLine += lines.length; } }; - for (var i = 0; i < diff2.length; i++) { + for (var i = 0; i < diff3.length; i++) { _loop(i); } return { @@ -30843,16 +31223,19 @@ function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, ne hunks }; } -function formatPatch(diff2) { +function formatPatch(diff3) { + if (Array.isArray(diff3)) { + return diff3.map(formatPatch).join("\n"); + } var ret = []; - if (diff2.oldFileName == diff2.newFileName) { - ret.push("Index: " + diff2.oldFileName); + if (diff3.oldFileName == diff3.newFileName) { + ret.push("Index: " + diff3.oldFileName); } ret.push("==================================================================="); - ret.push("--- " + diff2.oldFileName + (typeof diff2.oldHeader === "undefined" ? "" : " " + diff2.oldHeader)); - ret.push("+++ " + diff2.newFileName + (typeof diff2.newHeader === "undefined" ? "" : " " + diff2.newHeader)); - for (var i = 0; i < diff2.hunks.length; i++) { - var hunk = diff2.hunks[i]; + ret.push("--- " + diff3.oldFileName + (typeof diff3.oldHeader === "undefined" ? "" : " " + diff3.oldHeader)); + ret.push("+++ " + diff3.newFileName + (typeof diff3.newHeader === "undefined" ? "" : " " + diff3.newHeader)); + for (var i = 0; i < diff3.hunks.length; i++) { + var hunk = diff3.hunks[i]; if (hunk.oldLines === 0) { hunk.oldStart -= 1; } @@ -31105,7 +31488,9 @@ var MyAdapter = class { async saveAndClear() { if (this.index !== void 0) { await this.adapter.writeBinary( - this.plugin.gitManager.getVaultPath(this.gitDir + "/index"), + this.plugin.gitManager.getRelativeVaultPath( + this.gitDir + "/index" + ), this.index, { ctime: this.indexctime, @@ -31253,7 +31638,7 @@ var IsomorphicGit = class extends GitManager { const conflicted = []; window.clearTimeout(timeout); notice == null ? void 0 : notice.hide(); - return { changed, staged, conflicted }; + return { all: status2, changed, staged, conflicted }; } catch (error) { window.clearTimeout(timeout); notice == null ? void 0 : notice.hide(); @@ -31269,18 +31654,20 @@ var IsomorphicGit = class extends GitManager { try { await this.checkAuthorInfo(); await this.stageAll({ status: status2, unstagedFiles }); - return this.commit(message); + return this.commit({ message }); } catch (error) { this.plugin.displayError(error); throw error; } } - async commit(message) { + async commit({ + message + }) { try { await this.checkAuthorInfo(); this.plugin.setState(4 /* commit */); const formatMessage = await this.formatCommitMessage(message); - const hadConflict = this.plugin.localStorage.getConflict() === "true"; + const hadConflict = this.plugin.localStorage.getConflict(); let parent = void 0; if (hadConflict) { const branchInfo = await this.branchInfo(); @@ -31293,7 +31680,7 @@ var IsomorphicGit = class extends GitManager { parent }) ); - this.plugin.localStorage.setConflict("false"); + this.plugin.localStorage.setConflict(false); return; } catch (error) { this.plugin.displayError(error); @@ -31301,15 +31688,12 @@ var IsomorphicGit = class extends GitManager { } } async stage(filepath, relativeToVault) { - const gitPath = this.asRepositoryRelativePath( - filepath, - relativeToVault - ); + const gitPath = this.getRelativeRepoPath(filepath, relativeToVault); let vaultPath; if (relativeToVault) { vaultPath = filepath; } else { - vaultPath = this.getVaultPath(filepath); + vaultPath = this.getRelativeVaultPath(filepath); } try { this.plugin.setState(3 /* add */); @@ -31365,7 +31749,7 @@ var IsomorphicGit = class extends GitManager { async unstage(filepath, relativeToVault) { try { this.plugin.setState(3 /* add */); - filepath = this.asRepositoryRelativePath(filepath, relativeToVault); + filepath = this.getRelativeRepoPath(filepath, relativeToVault); await this.wrapFS( isomorphic_git_default.resetIndex({ ...this.getRepo(), filepath }) ); @@ -31499,13 +31883,15 @@ var IsomorphicGit = class extends GitManager { path: file.path, working_dir: "P", index: "P", - vault_path: this.getVaultPath(file.path) + vault_path: this.getRelativeVaultPath(file.path) })); } catch (error) { progressNotice == null ? void 0 : progressNotice.hide(); if (error instanceof Errors.MergeConflictError) { this.plugin.handleConflict( - error.data.filepaths.map((file) => this.getVaultPath(file)) + error.data.filepaths.map( + (file) => this.getRelativeVaultPath(file) + ) ); } this.plugin.displayError(error); @@ -31631,7 +32017,7 @@ var IsomorphicGit = class extends GitManager { throw error; } } - async branchIsMerged(branch2) { + async branchIsMerged(_) { return true; } async init() { @@ -31761,6 +32147,10 @@ var IsomorphicGit = class extends GitManager { const completeMessage = log2.commit.message.split("\n\n"); return { message: completeMessage[0], + author: { + name: log2.commit.author.name, + email: log2.commit.author.email + }, body: completeMessage.slice(1).join("\n\n"), date: new Date( log2.commit.committer.timestamp @@ -31774,7 +32164,9 @@ var IsomorphicGit = class extends GitManager { return { path: item.path, status: item.type, - vault_path: this.getVaultPath(item.path), + vault_path: this.getRelativeVaultPath( + item.path + ), hash: log2.oid, binary: void 0 }; @@ -31798,7 +32190,7 @@ var IsomorphicGit = class extends GitManager { ); await this.setConfig(`branch.${branch2}.remote`, remote); } - updateGitPath(gitPath) { + updateGitPath(_) { return; } async getFileChangesCount(commitHash1, commitHash2) { @@ -31860,7 +32252,7 @@ var IsomorphicGit = class extends GitManager { }); return res.map((file) => { return { - vault_path: this.getVaultPath(file.path), + vault_path: this.getRelativeVaultPath(file.path), filepath: file.path }; }); @@ -31940,7 +32332,7 @@ var IsomorphicGit = class extends GitManager { } } async getDiffString(filePath, stagedChanges = false, hash2) { - const vaultPath = this.getVaultPath(filePath); + const vaultPath = this.getRelativeVaultPath(filePath); const map = async (file, [A]) => { if (filePath == file) { const oid = await A.oid(); @@ -31974,12 +32366,12 @@ var IsomorphicGit = class extends GitManager { return void 0; throw err; }); - const diff2 = createPatch( + const diff3 = createPatch( vaultPath, previousContent != null ? previousContent : "", commitContent != null ? commitContent : "" ); - return diff2; + return diff3; } const stagedBlob = (await isomorphic_git_default.walk({ ...this.getRepo(), @@ -31999,21 +32391,21 @@ var IsomorphicGit = class extends GitManager { return void 0; throw err; }); - const diff2 = createPatch( + const diff3 = createPatch( vaultPath, headContent != null ? headContent : "", stagedContent ); - return diff2; + return diff3; } else { let workdirContent; - if (await app.vault.adapter.exists(vaultPath)) { - workdirContent = await app.vault.adapter.read(vaultPath); + if (await this.app.vault.adapter.exists(vaultPath)) { + workdirContent = await this.app.vault.adapter.read(vaultPath); } else { workdirContent = ""; } - const diff2 = createPatch(vaultPath, stagedContent, workdirContent); - return diff2; + const diff3 = createPatch(vaultPath, stagedContent, workdirContent); + return diff3; } } async getLastCommitTime() { @@ -32029,7 +32421,7 @@ var IsomorphicGit = class extends GitManager { index: status2[0] == "?" ? "U" : status2[0], working_dir: status2[1] == "?" ? "U" : status2[1], path: row[this.FILE], - vault_path: this.getVaultPath(row[this.FILE]) + vault_path: this.getRelativeVaultPath(row[this.FILE]) }; } async checkAuthorInfo() { @@ -32167,7 +32559,9 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { plugin.settings.autoSaveInterval ); new import_obsidian8.Notice( - `Automatic ${commitOrBackup} enabled! Every ${plugin.settings.autoSaveInterval} minutes.` + `Automatic ${commitOrBackup} enabled! Every ${formatMinutes( + plugin.settings.autoSaveInterval + )}.` ); } else if (plugin.settings.autoSaveInterval <= 0) { plugin.clearAutoBackup() && new import_obsidian8.Notice( @@ -32180,8 +32574,12 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { }) ); if (!plugin.settings.setLastSaveToLastCommit) - new import_obsidian8.Setting(containerEl).setName(`Auto Backup after stop editing any file`).setDesc( - `Requires the ${commitOrBackup} interval not to be 0. If turned on, do auto ${commitOrBackup} every ${plugin.settings.autoSaveInterval} minutes after stop editing any file. This also prevents auto ${commitOrBackup} while editing a file. If turned off, it's independent from the last change.` + new import_obsidian8.Setting(containerEl).setName(`Auto Backup after stopping file edits`).setDesc( + `Requires the ${commitOrBackup} interval not to be 0. + If turned on, do auto ${commitOrBackup} every ${formatMinutes( + plugin.settings.autoSaveInterval + )} after stopping file edits. + This also prevents auto ${commitOrBackup} while editing a file. If turned off, it's independent from the last change.` ).addToggle( (toggle) => toggle.setValue(plugin.settings.autoBackupAfterFileChange).onChange((value) => { plugin.settings.autoBackupAfterFileChange = value; @@ -32221,7 +32619,9 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { plugin.settings.autoPushInterval ); new import_obsidian8.Notice( - `Automatic push enabled! Every ${plugin.settings.autoPushInterval} minutes.` + `Automatic push enabled! Every ${formatMinutes( + plugin.settings.autoPushInterval + )}.` ); } else if (plugin.settings.autoPushInterval <= 0) { plugin.clearAutoPush() && new import_obsidian8.Notice( @@ -32249,7 +32649,9 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { plugin.settings.autoPullInterval ); new import_obsidian8.Notice( - `Automatic pull enabled! Every ${plugin.settings.autoPullInterval} minutes.` + `Automatic pull enabled! Every ${formatMinutes( + plugin.settings.autoPullInterval + )}.` ); } else if (plugin.settings.autoPullInterval <= 0) { plugin.clearAutoPull() && new import_obsidian8.Notice("Automatic pull disabled!"); @@ -32285,14 +32687,14 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { plugin.saveSettings(); }) ); - new import_obsidian8.Setting(containerEl).setName("{{date}} placeholder format").setDesc( - `Specify custom date format. E.g. "${DATE_TIME_FORMAT_SECONDS}"` - ).addText( + const datePlaceholderSetting = new import_obsidian8.Setting(containerEl).setName("{{date}} placeholder format").addText( (text2) => text2.setPlaceholder(plugin.settings.commitDateFormat).setValue(plugin.settings.commitDateFormat).onChange(async (value) => { plugin.settings.commitDateFormat = value; await plugin.saveSettings(); }) ); + datePlaceholderSetting.descEl.innerHTML = ` + Specify custom date format. E.g. "${DATE_TIME_FORMAT_SECONDS}. See <a href="https://momentjs.com">Moment.js</a> for more formats.`; new import_obsidian8.Setting(containerEl).setName("{{hostname}} placeholder replacement").setDesc("Specify custom hostname for every device.").addText( (text2) => { var _a2; @@ -32358,7 +32760,32 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { } } containerEl.createEl("br"); - containerEl.createEl("h3", { text: "Miscellaneous" }); + containerEl.createEl("h3", { text: "History View" }); + new import_obsidian8.Setting(containerEl).setName("Show Author").setDesc("Show the author of the commit in the history view").addDropdown((dropdown) => { + const options = { + hide: "Hide", + full: "Full", + initials: "Initials" + }; + dropdown.addOptions(options); + dropdown.setValue(plugin.settings.authorInHistoryView); + dropdown.onChange(async (option) => { + plugin.settings.authorInHistoryView = option; + plugin.saveSettings(); + plugin.refresh(); + }); + }); + new import_obsidian8.Setting(containerEl).setName("Show Date").setDesc( + "Show the date of the commit in the history view. The {{date}} placeholder format is used to display the date." + ).addToggle( + (toggle) => toggle.setValue(plugin.settings.dateInHistoryView).onChange((value) => { + plugin.settings.dateInHistoryView = value; + plugin.saveSettings(); + plugin.refresh(); + }) + ); + containerEl.createEl("br"); + containerEl.createEl("h3", { text: "Source Control View" }); new import_obsidian8.Setting(containerEl).setName( "Automatically refresh Source Control View on file changes" ).setDesc( @@ -32383,14 +32810,26 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { plugin.setRefreshDebouncer(); }) ); + containerEl.createEl("br"); + containerEl.createEl("h3", { text: "Miscellaneous" }); new import_obsidian8.Setting(containerEl).setName("Disable notifications").setDesc( "Disable notifications for git operations to minimize distraction (refer to status bar for updates). Errors are still shown as notifications even if you enable this setting" ).addToggle( (toggle) => toggle.setValue(plugin.settings.disablePopups).onChange((value) => { plugin.settings.disablePopups = value; + this.display(); plugin.saveSettings(); }) ); + if (!plugin.settings.disablePopups) + new import_obsidian8.Setting(containerEl).setName("Hide notifications for no changes").setDesc( + "Don't show notifications when there are no changes to commit/push" + ).addToggle( + (toggle) => toggle.setValue(plugin.settings.disablePopupsForNoChanges).onChange((value) => { + plugin.settings.disablePopupsForNoChanges = value; + plugin.saveSettings(); + }) + ); new import_obsidian8.Setting(containerEl).setName("Show status bar").setDesc( "Obsidian must be restarted for the changes to take affect" ).addToggle( @@ -32413,7 +32852,7 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { plugin.saveSettings(); }) ); - new import_obsidian8.Setting(containerEl).setName("Show changes files count in status bar").addToggle( + new import_obsidian8.Setting(containerEl).setName("Show the count of modified files in the status bar").addToggle( (toggle) => toggle.setValue(plugin.settings.changedFilesInStatusBar).onChange((value) => { plugin.settings.changedFilesInStatusBar = value; plugin.saveSettings(); @@ -32553,7 +32992,9 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { plugin.saveSettings(); }); }); - new import_obsidian8.Setting(containerEl).setName("Disable on this device").addToggle( + new import_obsidian8.Setting(containerEl).setName("Disable on this device").setDesc( + "Disables the plugin on this device. This setting is not synced." + ).addToggle( (toggle) => toggle.setValue(plugin.localStorage.getPluginDisabled()).onChange((value) => { plugin.localStorage.setPluginDisabled(value); if (value) { @@ -32977,7 +33418,7 @@ var LineAuthoringSubscriber = class { async notifyLineAuthoring(id, la) { if (this.view === void 0) { console.warn( - `Obsidian Git: View is not defined for editor cache key. Unforeseen situation. id: ${id}` + `Git: View is not defined for editor cache key. Unforeseen situation. id: ${id}` ); return; } @@ -33420,9 +33861,9 @@ var LineAuthoringGutter = class extends import_view.GutterMarker { break; case "natural language": dateTimeFormatting = (time) => { - const diff2 = time.diff((0, import_obsidian10.moment)()); + const diff3 = time.diff((0, import_obsidian10.moment)()); const addFluentSuffix = true; - return import_obsidian10.moment.duration(diff2).humanize(addFluentSuffix); + return import_obsidian10.moment.duration(diff3).humanize(addFluentSuffix); }; break; default: @@ -33727,7 +34168,7 @@ var LineAuthorProvider = class { } async trackChanged(file) { this.trackChangedHelper(file).catch((reason) => { - console.warn("Obsidian Git: Error in trackChanged." + reason); + console.warn("Git: Error in trackChanged." + reason); return Promise.reject(reason); }); } @@ -33736,7 +34177,7 @@ var LineAuthorProvider = class { return; if (file.path === void 0) { console.warn( - "Obsidian Git: Attempted to track change of undefined filepath. Unforeseen situation." + "Git: Attempted to track change of undefined filepath. Unforeseen situation." ); return; } @@ -33793,7 +34234,7 @@ var LineAuthoringFeature = class { const file = obsView == null ? void 0 : obsView.file; if (!this.lineAuthorInfoProvider) { console.warn( - "Obsidian Git: undefined lineAuthorInfoProvider. Unexpected situation." + "Git: undefined lineAuthorInfoProvider. Unexpected situation." ); return; } @@ -33820,7 +34261,7 @@ var LineAuthoringFeature = class { } activateFeature() { try { - if (!this.isAvailableOnCurrentPlatform()) + if (!this.isAvailableOnCurrentPlatform().available) return; setTextColorCssBasedOnSetting(this.plg.settings.lineAuthor); this.lineAuthorInfoProvider = new LineAuthorProvider(this.plg); @@ -33828,10 +34269,7 @@ var LineAuthoringFeature = class { this.activateCodeMirrorExtensions(); console.log(this.plg.manifest.name + ": Enabled line authoring."); } catch (e) { - console.warn( - "Obsidian Git: Error while loading line authoring feature.", - e - ); + console.warn("Git: Error while loading line authoring feature.", e); this.deactivateFeature(); } } @@ -33971,7 +34409,7 @@ var StatusBar = class { this.plugin = plugin; this.messages = []; this.base = "obsidian-git-statusbar-"; - this.statusBarEl.setAttribute("aria-label-position", "top"); + this.statusBarEl.setAttribute("data-tooltip-position", "top"); addEventListener("git-refresh", this.refreshCommitTimestamp.bind(this)); } displayMessage(message, timeout) { @@ -34052,8 +34490,8 @@ var StatusBar = class { var _a2; const timestamp = this.lastCommitTimestamp; if (timestamp) { - const moment5 = window.moment; - const fromNow = moment5(timestamp).fromNow(); + const moment6 = window.moment; + const fromNow = moment6(timestamp).fromNow(); this.statusBarEl.ariaLabel = `${this.plugin.offlineMode ? "Offline: " : ""}Last Commit: ${fromNow}`; if ((_a2 = this.unPushedCommits) != null ? _a2 : 0 > 0) { this.statusBarEl.ariaLabel += ` @@ -34102,7 +34540,7 @@ var ChangedFilesModal = class extends import_obsidian14.FuzzySuggestModal { let working_dir = ""; let index2 = ""; if (item.working_dir != " ") - working_dir = `Working dir: ${item.working_dir} `; + working_dir = `Working Dir: ${item.working_dir} `; if (item.index != " ") index2 = `Index: ${item.index}`; return `${working_dir}${index2} | ${item.vault_path}`; @@ -34171,7 +34609,7 @@ async function openLineInGitHub(editor, file, manager) { } const { isGitHub, branch: branch2, repo, user } = data; if (isGitHub) { - const path2 = manager.asRepositoryRelativePath(file.path, true); + const path2 = manager.getRelativeRepoPath(file.path); const from = editor.getCursor("from").line + 1; const to = editor.getCursor("to").line + 1; if (from === to) { @@ -34194,7 +34632,7 @@ async function openHistoryInGitHub(file, manager) { return; } const { isGitHub, branch: branch2, repo, user } = data; - const path2 = manager.asRepositoryRelativePath(file.path, true); + const path2 = manager.getRelativeRepoPath(file.path); if (isGitHub) { window.open( `https://github.com/${user}/${repo}/commits/${branch2}/${path2}` @@ -34224,7 +34662,7 @@ async function getData(manager) { `remote.${remote}.url` ); const [isGitHub, httpsUser, httpsRepo, sshUser, sshRepo] = remoteUrl.match( - /(?:^https:\/\/github\.com\/(.*)\/(.*)\.git$)|(?:^git@github\.com:(.*)\/(.*)\.git$)/ + /(?:^https:\/\/github\.com\/(.*)\/(.*)\.git$)|(?:^[a-zA-Z]+@github\.com:(.*)\/(.*)\.git$)/ ); return { result: "success", @@ -34282,10 +34720,10 @@ var LocalStorageSettings = class { return app.saveLocalStorage(this.prefix + "hostname", value); } getConflict() { - return app.loadLocalStorage(this.prefix + "conflict"); + return app.loadLocalStorage(this.prefix + "conflict") == "true"; } setConflict(value) { - return app.saveLocalStorage(this.prefix + "conflict", value); + return app.saveLocalStorage(this.prefix + "conflict", `${value}`); } getLastAutoPull() { return app.loadLocalStorage(this.prefix + "lastAutoPull"); @@ -34341,13 +34779,13 @@ var LocalStorageSettings = class { // src/ui/diff/diffView.ts init_polyfill_buffer(); -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/diff2html.js +// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/diff2html.js init_polyfill_buffer(); -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/diff-parser.js +// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/diff-parser.js init_polyfill_buffer(); -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/types.js +// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/types.js init_polyfill_buffer(); var LineType; (function(LineType2) { @@ -34368,8 +34806,14 @@ var DiffStyleType = { WORD: "word", CHAR: "char" }; +var ColorSchemeType; +(function(ColorSchemeType2) { + ColorSchemeType2["AUTO"] = "auto"; + ColorSchemeType2["DARK"] = "dark"; + ColorSchemeType2["LIGHT"] = "light"; +})(ColorSchemeType || (ColorSchemeType = {})); -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/utils.js +// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/utils.js init_polyfill_buffer(); var specials = [ "-", @@ -34407,7 +34851,7 @@ function hashCode(text2) { return hash2; } -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/diff-parser.js +// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/diff-parser.js function getExtension(filename, language) { const filenameParts = filename.split("."); return filenameParts.length > 1 ? filenameParts[filenameParts.length - 1] : language; @@ -34698,13 +35142,344 @@ function parse(diffInput, config = {}) { return files; } -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/file-list-renderer.js +// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/file-list-renderer.js init_polyfill_buffer(); -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/render-utils.js +// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/render-utils.js init_polyfill_buffer(); -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/rematch.js +// node_modules/.pnpm/diff@5.1.0/node_modules/diff/lib/index.mjs +init_polyfill_buffer(); +function Diff2() { +} +Diff2.prototype = { + diff: function diff2(oldString, newString) { + var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + var callback = options.callback; + if (typeof options === "function") { + callback = options; + options = {}; + } + this.options = options; + var self2 = this; + function done(value) { + if (callback) { + setTimeout(function() { + callback(void 0, value); + }, 0); + return true; + } else { + return value; + } + } + oldString = this.castInput(oldString); + newString = this.castInput(newString); + oldString = this.removeEmpty(this.tokenize(oldString)); + newString = this.removeEmpty(this.tokenize(newString)); + var newLen = newString.length, oldLen = oldString.length; + var editLength = 1; + var maxEditLength = newLen + oldLen; + if (options.maxEditLength) { + maxEditLength = Math.min(maxEditLength, options.maxEditLength); + } + var bestPath = [{ + newPos: -1, + components: [] + }]; + var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); + if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) { + return done([{ + value: this.join(newString), + count: newString.length + }]); + } + function execEditLength() { + for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) { + var basePath = void 0; + var addPath = bestPath[diagonalPath - 1], removePath = bestPath[diagonalPath + 1], _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; + if (addPath) { + bestPath[diagonalPath - 1] = void 0; + } + var canAdd = addPath && addPath.newPos + 1 < newLen, canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen; + if (!canAdd && !canRemove) { + bestPath[diagonalPath] = void 0; + continue; + } + if (!canAdd || canRemove && addPath.newPos < removePath.newPos) { + basePath = clonePath(removePath); + self2.pushComponent(basePath.components, void 0, true); + } else { + basePath = addPath; + basePath.newPos++; + self2.pushComponent(basePath.components, true, void 0); + } + _oldPos = self2.extractCommon(basePath, newString, oldString, diagonalPath); + if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) { + return done(buildValues2(self2, basePath.components, newString, oldString, self2.useLongestToken)); + } else { + bestPath[diagonalPath] = basePath; + } + } + editLength++; + } + if (callback) { + (function exec() { + setTimeout(function() { + if (editLength > maxEditLength) { + return callback(); + } + if (!execEditLength()) { + exec(); + } + }, 0); + })(); + } else { + while (editLength <= maxEditLength) { + var ret = execEditLength(); + if (ret) { + return ret; + } + } + } + }, + pushComponent: function pushComponent(components, added, removed) { + var last2 = components[components.length - 1]; + if (last2 && last2.added === added && last2.removed === removed) { + components[components.length - 1] = { + count: last2.count + 1, + added, + removed + }; + } else { + components.push({ + count: 1, + added, + removed + }); + } + }, + extractCommon: function extractCommon2(basePath, newString, oldString, diagonalPath) { + var newLen = newString.length, oldLen = oldString.length, newPos = basePath.newPos, oldPos = newPos - diagonalPath, commonCount = 0; + while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) { + newPos++; + oldPos++; + commonCount++; + } + if (commonCount) { + basePath.components.push({ + count: commonCount + }); + } + basePath.newPos = newPos; + return oldPos; + }, + equals: function equals2(left, right) { + if (this.options.comparator) { + return this.options.comparator(left, right); + } else { + return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase(); + } + }, + removeEmpty: function removeEmpty2(array) { + var ret = []; + for (var i = 0; i < array.length; i++) { + if (array[i]) { + ret.push(array[i]); + } + } + return ret; + }, + castInput: function castInput2(value) { + return value; + }, + tokenize: function tokenize2(value) { + return value.split(""); + }, + join: function join4(chars) { + return chars.join(""); + } +}; +function buildValues2(diff3, components, newString, oldString, useLongestToken) { + var componentPos = 0, componentLen = components.length, newPos = 0, oldPos = 0; + for (; componentPos < componentLen; componentPos++) { + var component = components[componentPos]; + if (!component.removed) { + if (!component.added && useLongestToken) { + var value = newString.slice(newPos, newPos + component.count); + value = value.map(function(value2, i) { + var oldValue = oldString[oldPos + i]; + return oldValue.length > value2.length ? oldValue : value2; + }); + component.value = diff3.join(value); + } else { + component.value = diff3.join(newString.slice(newPos, newPos + component.count)); + } + newPos += component.count; + if (!component.added) { + oldPos += component.count; + } + } else { + component.value = diff3.join(oldString.slice(oldPos, oldPos + component.count)); + oldPos += component.count; + if (componentPos && components[componentPos - 1].added) { + var tmp = components[componentPos - 1]; + components[componentPos - 1] = components[componentPos]; + components[componentPos] = tmp; + } + } + } + var lastComponent = components[componentLen - 1]; + if (componentLen > 1 && typeof lastComponent.value === "string" && (lastComponent.added || lastComponent.removed) && diff3.equals("", lastComponent.value)) { + components[componentLen - 2].value += lastComponent.value; + components.pop(); + } + return components; +} +function clonePath(path2) { + return { + newPos: path2.newPos, + components: path2.components.slice(0) + }; +} +var characterDiff2 = new Diff2(); +function diffChars(oldStr, newStr, options) { + return characterDiff2.diff(oldStr, newStr, options); +} +var extendedWordChars2 = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/; +var reWhitespace2 = /\S/; +var wordDiff2 = new Diff2(); +wordDiff2.equals = function(left, right) { + if (this.options.ignoreCase) { + left = left.toLowerCase(); + right = right.toLowerCase(); + } + return left === right || this.options.ignoreWhitespace && !reWhitespace2.test(left) && !reWhitespace2.test(right); +}; +wordDiff2.tokenize = function(value) { + var tokens = value.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/); + for (var i = 0; i < tokens.length - 1; i++) { + if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars2.test(tokens[i]) && extendedWordChars2.test(tokens[i + 2])) { + tokens[i] += tokens[i + 2]; + tokens.splice(i + 1, 2); + i--; + } + } + return tokens; +}; +function diffWordsWithSpace(oldStr, newStr, options) { + return wordDiff2.diff(oldStr, newStr, options); +} +var lineDiff2 = new Diff2(); +lineDiff2.tokenize = function(value) { + var retLines = [], linesAndNewlines = value.split(/(\n|\r\n)/); + if (!linesAndNewlines[linesAndNewlines.length - 1]) { + linesAndNewlines.pop(); + } + for (var i = 0; i < linesAndNewlines.length; i++) { + var line = linesAndNewlines[i]; + if (i % 2 && !this.options.newlineIsToken) { + retLines[retLines.length - 1] += line; + } else { + if (this.options.ignoreWhitespace) { + line = line.trim(); + } + retLines.push(line); + } + } + return retLines; +}; +var sentenceDiff2 = new Diff2(); +sentenceDiff2.tokenize = function(value) { + return value.split(/(\S.+?[.!?])(?=\s+|$)/); +}; +var cssDiff2 = new Diff2(); +cssDiff2.tokenize = function(value) { + return value.split(/([{}:;,]|\s+)/); +}; +function _typeof2(obj) { + "@babel/helpers - typeof"; + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof2 = function(obj2) { + return typeof obj2; + }; + } else { + _typeof2 = function(obj2) { + return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; + }; + } + return _typeof2(obj); +} +var objectPrototypeToString2 = Object.prototype.toString; +var jsonDiff2 = new Diff2(); +jsonDiff2.useLongestToken = true; +jsonDiff2.tokenize = lineDiff2.tokenize; +jsonDiff2.castInput = function(value) { + var _this$options = this.options, undefinedReplacement = _this$options.undefinedReplacement, _this$options$stringi = _this$options.stringifyReplacer, stringifyReplacer = _this$options$stringi === void 0 ? function(k, v) { + return typeof v === "undefined" ? undefinedReplacement : v; + } : _this$options$stringi; + return typeof value === "string" ? value : JSON.stringify(canonicalize2(value, null, null, stringifyReplacer), stringifyReplacer, " "); +}; +jsonDiff2.equals = function(left, right) { + return Diff2.prototype.equals.call(jsonDiff2, left.replace(/,([\r\n])/g, "$1"), right.replace(/,([\r\n])/g, "$1")); +}; +function canonicalize2(obj, stack, replacementStack, replacer, key2) { + stack = stack || []; + replacementStack = replacementStack || []; + if (replacer) { + obj = replacer(key2, obj); + } + var i; + for (i = 0; i < stack.length; i += 1) { + if (stack[i] === obj) { + return replacementStack[i]; + } + } + var canonicalizedObj; + if ("[object Array]" === objectPrototypeToString2.call(obj)) { + stack.push(obj); + canonicalizedObj = new Array(obj.length); + replacementStack.push(canonicalizedObj); + for (i = 0; i < obj.length; i += 1) { + canonicalizedObj[i] = canonicalize2(obj[i], stack, replacementStack, replacer, key2); + } + stack.pop(); + replacementStack.pop(); + return canonicalizedObj; + } + if (obj && obj.toJSON) { + obj = obj.toJSON(); + } + if (_typeof2(obj) === "object" && obj !== null) { + stack.push(obj); + canonicalizedObj = {}; + replacementStack.push(canonicalizedObj); + var sortedKeys = [], _key; + for (_key in obj) { + if (obj.hasOwnProperty(_key)) { + sortedKeys.push(_key); + } + } + sortedKeys.sort(); + for (i = 0; i < sortedKeys.length; i += 1) { + _key = sortedKeys[i]; + canonicalizedObj[_key] = canonicalize2(obj[_key], stack, replacementStack, replacer, _key); + } + stack.pop(); + replacementStack.pop(); + } else { + canonicalizedObj = obj; + } + return canonicalizedObj; +} +var arrayDiff2 = new Diff2(); +arrayDiff2.tokenize = function(value) { + return value.slice(); +}; +arrayDiff2.join = arrayDiff2.removeEmpty = function(value) { + return value; +}; + +// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/rematch.js init_polyfill_buffer(); function levenshtein(a, b) { if (a.length === 0) { @@ -34789,7 +35564,7 @@ function newMatcherFn(distance2) { return group; } -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/render-utils.js +// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/render-utils.js var CSSLineClass = { INSERTS: "d2h-ins", DELETES: "d2h-del", @@ -34802,7 +35577,8 @@ var defaultRenderConfig = { matching: LineMatchingType.NONE, matchWordsThreshold: 0.25, maxLineLengthHighlight: 1e4, - diffStyle: DiffStyleType.WORD + diffStyle: DiffStyleType.WORD, + colorScheme: ColorSchemeType.LIGHT }; var separator = "/"; var distance = newDistanceFn((change) => change.value); @@ -34826,6 +35602,17 @@ function toCSSClass(lineType) { return CSSLineClass.DELETES; } } +function colorSchemeToCss(colorScheme) { + switch (colorScheme) { + case ColorSchemeType.DARK: + return "d2h-dark-color-scheme"; + case ColorSchemeType.AUTO: + return "d2h-auto-color-scheme"; + case ColorSchemeType.LIGHT: + default: + return "d2h-light-color-scheme"; + } +} function prefixLength(isCombined) { return isCombined ? 2 : 1; } @@ -34921,11 +35708,11 @@ function diffHighlight(diffLine1, diffLine2, isCombined, config = {}) { } }; } - const diff2 = diffStyle === "char" ? diffChars(line1.content, line2.content) : diffWordsWithSpace(line1.content, line2.content); + const diff3 = diffStyle === "char" ? diffChars(line1.content, line2.content) : diffWordsWithSpace(line1.content, line2.content); const changedWords = []; if (diffStyle === "word" && matching === "words") { - const removed = diff2.filter((element2) => element2.removed); - const added = diff2.filter((element2) => element2.added); + const removed = diff3.filter((element2) => element2.removed); + const added = diff3.filter((element2) => element2.added); const chunks = matcher(added, removed); chunks.forEach((chunk) => { if (chunk[0].length === 1 && chunk[1].length === 1) { @@ -34937,7 +35724,7 @@ function diffHighlight(diffLine1, diffLine2, isCombined, config = {}) { } }); } - const highlightedLine = diff2.reduce((highlightedLine2, part) => { + const highlightedLine = diff3.reduce((highlightedLine2, part) => { const elemType = part.added ? "ins" : part.removed ? "del" : null; const addClass = changedWords.indexOf(part) > -1 ? ' class="d2h-change"' : ""; const escapedValue = escapeForHtml(part.value); @@ -34955,27 +35742,37 @@ function diffHighlight(diffLine1, diffLine2, isCombined, config = {}) { }; } -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/file-list-renderer.js +// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/file-list-renderer.js var baseTemplatesPath = "file-summary"; var iconsBaseTemplatesPath = "icon"; -function render(diffFiles, hoganUtils) { - const files = diffFiles.map((file) => hoganUtils.render(baseTemplatesPath, "line", { - fileHtmlId: getHtmlId(file), - oldName: file.oldName, - newName: file.newName, - fileName: filenameDiff(file), - deletedLines: "-" + file.deletedLines, - addedLines: "+" + file.addedLines - }, { - fileIcon: hoganUtils.template(iconsBaseTemplatesPath, getFileIcon(file)) - })).join("\n"); - return hoganUtils.render(baseTemplatesPath, "wrapper", { - filesNumber: diffFiles.length, - files - }); -} +var defaultFileListRendererConfig = { + colorScheme: defaultRenderConfig.colorScheme +}; +var FileListRenderer = class { + constructor(hoganUtils, config = {}) { + this.hoganUtils = hoganUtils; + this.config = Object.assign(Object.assign({}, defaultFileListRendererConfig), config); + } + render(diffFiles) { + const files = diffFiles.map((file) => this.hoganUtils.render(baseTemplatesPath, "line", { + fileHtmlId: getHtmlId(file), + oldName: file.oldName, + newName: file.newName, + fileName: filenameDiff(file), + deletedLines: "-" + file.deletedLines, + addedLines: "+" + file.addedLines + }, { + fileIcon: this.hoganUtils.template(iconsBaseTemplatesPath, getFileIcon(file)) + })).join("\n"); + return this.hoganUtils.render(baseTemplatesPath, "wrapper", { + colorScheme: colorSchemeToCss(this.config.colorScheme), + filesNumber: diffFiles.length, + files + }); + } +}; -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/line-by-line-renderer.js +// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/line-by-line-renderer.js init_polyfill_buffer(); var defaultLineByLineRendererConfig = Object.assign(Object.assign({}, defaultRenderConfig), { renderNothingWhenEmpty: false, matchingMaxComparisons: 2500, maxLineSizeInBlockForComparison: 200 }); var genericTemplatesPath = "generic"; @@ -34997,7 +35794,10 @@ var LineByLineRenderer = class { } return this.makeFileDiffHtml(file, diffs); }).join("\n"); - return this.hoganUtils.render(genericTemplatesPath, "wrapper", { content: diffsHtml }); + return this.hoganUtils.render(genericTemplatesPath, "wrapper", { + colorScheme: colorSchemeToCss(this.config.colorScheme), + content: diffsHtml + }); } makeFileDiffHtml(file, diffs) { if (this.config.renderNothingWhenEmpty && Array.isArray(file.blocks) && file.blocks.length === 0) @@ -35105,15 +35905,15 @@ var LineByLineRenderer = class { for (let i = 0; i < maxLinesNumber; i++) { const oldLine = oldLines[i]; const newLine = newLines[i]; - const diff2 = oldLine !== void 0 && newLine !== void 0 ? diffHighlight(oldLine.content, newLine.content, isCombined, this.config) : void 0; - const preparedOldLine = oldLine !== void 0 && oldLine.oldNumber !== void 0 ? Object.assign(Object.assign({}, diff2 !== void 0 ? { - prefix: diff2.oldLine.prefix, - content: diff2.oldLine.content, + const diff3 = oldLine !== void 0 && newLine !== void 0 ? diffHighlight(oldLine.content, newLine.content, isCombined, this.config) : void 0; + const preparedOldLine = oldLine !== void 0 && oldLine.oldNumber !== void 0 ? Object.assign(Object.assign({}, diff3 !== void 0 ? { + prefix: diff3.oldLine.prefix, + content: diff3.oldLine.content, type: CSSLineClass.DELETE_CHANGES } : Object.assign(Object.assign({}, deconstructLine(oldLine.content, isCombined)), { type: toCSSClass(oldLine.type) })), { oldNumber: oldLine.oldNumber, newNumber: oldLine.newNumber }) : void 0; - const preparedNewLine = newLine !== void 0 && newLine.newNumber !== void 0 ? Object.assign(Object.assign({}, diff2 !== void 0 ? { - prefix: diff2.newLine.prefix, - content: diff2.newLine.content, + const preparedNewLine = newLine !== void 0 && newLine.newNumber !== void 0 ? Object.assign(Object.assign({}, diff3 !== void 0 ? { + prefix: diff3.newLine.prefix, + content: diff3.newLine.content, type: CSSLineClass.INSERT_CHANGES } : Object.assign(Object.assign({}, deconstructLine(newLine.content, isCombined)), { type: toCSSClass(newLine.type) })), { oldNumber: newLine.oldNumber, newNumber: newLine.newNumber }) : void 0; const { left, right } = this.generateLineHtml(file, preparedOldLine, preparedNewLine); @@ -35148,7 +35948,7 @@ var LineByLineRenderer = class { } }; -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/side-by-side-renderer.js +// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/side-by-side-renderer.js init_polyfill_buffer(); var defaultSideBySideRendererConfig = Object.assign(Object.assign({}, defaultRenderConfig), { renderNothingWhenEmpty: false, matchingMaxComparisons: 2500, maxLineSizeInBlockForComparison: 200 }); var genericTemplatesPath2 = "generic"; @@ -35170,7 +35970,10 @@ var SideBySideRenderer = class { } return this.makeFileDiffHtml(file, diffs); }).join("\n"); - return this.hoganUtils.render(genericTemplatesPath2, "wrapper", { content: diffsHtml }); + return this.hoganUtils.render(genericTemplatesPath2, "wrapper", { + colorScheme: colorSchemeToCss(this.config.colorScheme), + content: diffsHtml + }); } makeFileDiffHtml(file, diffs) { if (this.config.renderNothingWhenEmpty && Array.isArray(file.blocks) && file.blocks.length === 0) @@ -35295,15 +36098,15 @@ var SideBySideRenderer = class { for (let i = 0; i < maxLinesNumber; i++) { const oldLine = oldLines[i]; const newLine = newLines[i]; - const diff2 = oldLine !== void 0 && newLine !== void 0 ? diffHighlight(oldLine.content, newLine.content, isCombined, this.config) : void 0; - const preparedOldLine = oldLine !== void 0 && oldLine.oldNumber !== void 0 ? Object.assign(Object.assign({}, diff2 !== void 0 ? { - prefix: diff2.oldLine.prefix, - content: diff2.oldLine.content, + const diff3 = oldLine !== void 0 && newLine !== void 0 ? diffHighlight(oldLine.content, newLine.content, isCombined, this.config) : void 0; + const preparedOldLine = oldLine !== void 0 && oldLine.oldNumber !== void 0 ? Object.assign(Object.assign({}, diff3 !== void 0 ? { + prefix: diff3.oldLine.prefix, + content: diff3.oldLine.content, type: CSSLineClass.DELETE_CHANGES } : Object.assign(Object.assign({}, deconstructLine(oldLine.content, isCombined)), { type: toCSSClass(oldLine.type) })), { number: oldLine.oldNumber }) : void 0; - const preparedNewLine = newLine !== void 0 && newLine.newNumber !== void 0 ? Object.assign(Object.assign({}, diff2 !== void 0 ? { - prefix: diff2.newLine.prefix, - content: diff2.newLine.content, + const preparedNewLine = newLine !== void 0 && newLine.newNumber !== void 0 ? Object.assign(Object.assign({}, diff3 !== void 0 ? { + prefix: diff3.newLine.prefix, + content: diff3.newLine.content, type: CSSLineClass.INSERT_CHANGES } : Object.assign(Object.assign({}, deconstructLine(newLine.content, isCombined)), { type: toCSSClass(newLine.type) })), { number: newLine.newNumber }) : void 0; const { left, right } = this.generateLineHtml(preparedOldLine, preparedNewLine); @@ -35332,11 +36135,11 @@ var SideBySideRenderer = class { } }; -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/hoganjs-utils.js +// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/hoganjs-utils.js init_polyfill_buffer(); var Hogan3 = __toESM(require_hogan()); -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/diff2html-templates.js +// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/diff2html-templates.js init_polyfill_buffer(); var Hogan2 = __toESM(require_hogan()); var defaultTemplates = {}; @@ -35374,7 +36177,9 @@ defaultTemplates["file-summary-line"] = new Hogan2.Template({ code: function(c, defaultTemplates["file-summary-wrapper"] = new Hogan2.Template({ code: function(c, p, i) { var t = this; t.b(i = i || ""); - t.b('<div class="d2h-file-list-wrapper">'); + t.b('<div class="d2h-file-list-wrapper '); + t.b(t.v(t.f("colorScheme", c, p, 0))); + t.b('">'); t.b("\n" + i); t.b(' <div class="d2h-file-list-header">'); t.b("\n" + i); @@ -35539,7 +36344,9 @@ defaultTemplates["generic-line"] = new Hogan2.Template({ code: function(c, p, i) defaultTemplates["generic-wrapper"] = new Hogan2.Template({ code: function(c, p, i) { var t = this; t.b(i = i || ""); - t.b('<div class="d2h-wrapper">'); + t.b('<div class="d2h-wrapper '); + t.b(t.v(t.f("colorScheme", c, p, 0))); + t.b('">'); t.b("\n" + i); t.b(" "); t.b(t.t(t.f("content", c, p, 0))); @@ -35741,7 +36548,7 @@ defaultTemplates["tag-file-renamed"] = new Hogan2.Template({ code: function(c, p return t.fl(); }, partials: {}, subs: {} }); -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/hoganjs-utils.js +// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/hoganjs-utils.js var HoganJsUtils = class { constructor({ compiledTemplates = {}, rawTemplates = {} }) { const compiledRawTemplates = Object.entries(rawTemplates).reduce((previousTemplates, [name, templateString]) => { @@ -35770,13 +36577,15 @@ var HoganJsUtils = class { } }; -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/diff2html.js +// node_modules/.pnpm/diff2html@3.4.47/node_modules/diff2html/lib-esm/diff2html.js var defaultDiff2HtmlConfig = Object.assign(Object.assign(Object.assign({}, defaultLineByLineRendererConfig), defaultSideBySideRendererConfig), { outputFormat: OutputFormatType.LINE_BY_LINE, drawFileList: true }); function html(diffInput, configuration = {}) { const config = Object.assign(Object.assign({}, defaultDiff2HtmlConfig), configuration); const diffJson = typeof diffInput === "string" ? parse(diffInput, config) : diffInput; const hoganUtils = new HoganJsUtils(config); - const fileList = config.drawFileList ? render(diffJson, hoganUtils) : ""; + const { colorScheme } = config; + const fileListRendererConfig = { colorScheme }; + const fileList = config.drawFileList ? new FileListRenderer(hoganUtils, fileListRendererConfig).render(diffJson) : ""; const diffOutput = config.outputFormat === "side-by-side" ? new SideBySideRenderer(hoganUtils, config).render(diffJson) : new LineByLineRenderer(hoganUtils, config).render(diffJson); return fileList + diffOutput; } @@ -35835,35 +36644,37 @@ var DiffView = class extends import_obsidian17.ItemView { if (((_a2 = this.state) == null ? void 0 : _a2.file) && !this.gettingDiff && this.plugin.gitManager) { this.gettingDiff = true; try { - let diff2 = await this.plugin.gitManager.getDiffString( + let diff3 = await this.plugin.gitManager.getDiffString( this.state.file, this.state.staged, this.state.hash ); this.contentEl.empty(); - if (!diff2) { + if (!diff3) { if (this.plugin.gitManager instanceof SimpleGit && await this.plugin.gitManager.isTracked( this.state.file )) { - diff2 = [ + diff3 = [ `--- ${this.state.file}`, `+++ ${this.state.file}`, "" ].join("\n"); } else { const content = await this.app.vault.adapter.read( - this.plugin.gitManager.getVaultPath(this.state.file) + this.plugin.gitManager.getRelativeVaultPath( + this.state.file + ) ); const header = `--- /dev/null +++ ${this.state.file} @@ -0,0 +1,${content.split("\n").length} @@`; - diff2 = [ + diff3 = [ ...header.split("\n"), ...content.split("\n").map((line) => `+${line}`) ].join("\n"); } } - const diffEl = this.parser.parseFromString(html(diff2), "text/html").querySelector(".d2h-file-diff"); + const diffEl = this.parser.parseFromString(html(diff3), "text/html").querySelector(".d2h-file-diff"); this.contentEl.append(diffEl); } finally { this.gettingDiff = false; @@ -35874,18 +36685,18 @@ var DiffView = class extends import_obsidian17.ItemView { // src/ui/history/historyView.ts init_polyfill_buffer(); -var import_obsidian20 = require("obsidian"); +var import_obsidian21 = require("obsidian"); // src/ui/history/historyView.svelte init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/index.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/index.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/animations.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/animations.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/utils.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/utils.js init_polyfill_buffer(); function noop() { } @@ -35909,13 +36720,13 @@ function is_empty(obj) { return Object.keys(obj).length === 0; } -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/environment.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/environment.js init_polyfill_buffer(); var is_client = typeof window !== "undefined"; var now = is_client ? () => window.performance.now() : () => Date.now(); var raf = is_client ? (cb) => requestAnimationFrame(cb) : noop; -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/loop.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/loop.js init_polyfill_buffer(); var tasks = /* @__PURE__ */ new Set(); function run_tasks(now2) { @@ -35942,23 +36753,23 @@ function loop(callback) { }; } -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/style_manager.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/style_manager.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/dom.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/dom.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/ResizeObserverSingleton.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/ResizeObserverSingleton.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/globals.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/globals.js init_polyfill_buffer(); var globals = typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : ( // @ts-ignore Node typings have this global ); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/ResizeObserverSingleton.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/ResizeObserverSingleton.js var ResizeObserverSingleton = class _ResizeObserverSingleton { /** @param {ResizeObserverOptions} options */ constructor(options) { @@ -36006,7 +36817,7 @@ var ResizeObserverSingleton = class _ResizeObserverSingleton { }; ResizeObserverSingleton.entries = "WeakMap" in globals ? /* @__PURE__ */ new WeakMap() : void 0; -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/dom.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/dom.js var is_hydrating = false; function start_hydrating() { is_hydrating = true; @@ -36132,7 +36943,7 @@ function get_custom_elements_slots(element2) { return result; } -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/style_manager.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/style_manager.js var managed_styles = /* @__PURE__ */ new Map(); var active = 0; function hash(str) { @@ -36196,16 +37007,16 @@ function clear_rules() { }); } -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/await_block.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/await_block.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/transitions.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/transitions.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/scheduler.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/scheduler.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/lifecycle.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/lifecycle.js init_polyfill_buffer(); var current_component; function set_current_component(component) { @@ -36226,7 +37037,7 @@ function bubble(component, event) { } } -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/scheduler.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/scheduler.js var dirty_components = []; var binding_callbacks = []; var render_callbacks = []; @@ -36301,7 +37112,7 @@ function flush_render_callbacks(fns) { render_callbacks = filtered; } -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/transitions.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/transitions.js var promise; function wait() { if (!promise) { @@ -36482,19 +37293,19 @@ function create_bidirectional_transition(node, fn, params, intro) { }; } -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/each.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/each.js init_polyfill_buffer(); function ensure_array_like(array_like_or_iterator) { return (array_like_or_iterator == null ? void 0 : array_like_or_iterator.length) !== void 0 ? array_like_or_iterator : Array.from(array_like_or_iterator); } -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/spread.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/spread.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/ssr.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/ssr.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/shared/boolean_attributes.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/shared/boolean_attributes.js init_polyfill_buffer(); var _boolean_attributes = ( /** @type {const} */ @@ -36528,10 +37339,10 @@ var _boolean_attributes = ( ); var boolean_attributes = /* @__PURE__ */ new Set([..._boolean_attributes]); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/shared/utils/names.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/shared/utils/names.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/Component.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/Component.js init_polyfill_buffer(); function create_component(block) { block && block.c(); @@ -36568,7 +37379,7 @@ function make_dirty(component, i) { } component.$$.dirty[i / 31 | 0] |= 1 << i % 31; } -function init2(component, options, instance10, create_fragment10, not_equal, props, append_styles2, dirty = [-1]) { +function init2(component, options, instance10, create_fragment10, not_equal, props, append_styles2 = null, dirty = [-1]) { const parent_component = current_component; set_current_component(component); const $$ = component.$$ = { @@ -36719,6 +37530,12 @@ if (typeof HTMLElement === "function") { this.$$d[name] = get_custom_element_value(name, attribute.value, this.$$p_d, "toProp"); } } + for (const key2 in this.$$p_d) { + if (!(key2 in this.$$d) && this[key2] !== void 0) { + this.$$d[key2] = this[key2]; + delete this[key2]; + } + } this.$$c = new this.$$ctor({ target: this.shadowRoot || this, props: { @@ -36741,7 +37558,7 @@ if (typeof HTMLElement === "function") { "toAttribute" ); if (attribute_value == null) { - this.removeAttribute(key2); + this.removeAttribute(this.$$p_d[key2].attribute || key2); } else { this.setAttribute(this.$$p_d[key2].attribute || key2, attribute_value); } @@ -36873,14 +37690,14 @@ var SvelteComponent = class { } }; -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/dev.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/dev.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/shared/version.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/shared/version.js init_polyfill_buffer(); var PUBLIC_VERSION = "4"; -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/disclose-version/index.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/internal/disclose-version/index.js init_polyfill_buffer(); if (typeof window !== "undefined") (window.__svelte || (window.__svelte = { v: /* @__PURE__ */ new Set() })).v.add(PUBLIC_VERSION); @@ -36916,25 +37733,26 @@ function __awaiter(thisArg, _arguments, P, generator) { } // src/ui/history/historyView.svelte -var import_obsidian19 = require("obsidian"); +var import_obsidian20 = require("obsidian"); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/index.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/index.js init_polyfill_buffer(); // src/ui/history/components/logComponent.svelte init_polyfill_buffer(); +var import_obsidian19 = require("obsidian"); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/transition/index.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/transition/index.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/easing/index.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/easing/index.js init_polyfill_buffer(); function cubicOut(t) { const f = t - 1; return f * f * f + 1; } -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/transition/index.js +// node_modules/.pnpm/svelte@4.2.10/node_modules/svelte/src/runtime/transition/index.js function slide(node, { delay: delay2 = 0, duration = 400, easing = cubicOut, axis = "y" } = {}) { const style = getComputedStyle(node); const opacity = +style.opacity; @@ -37065,7 +37883,7 @@ function create_fragment(ctx) { ctx[0].vault_path); attr( div3, - "aria-label-position", + "data-tooltip-position", /*side*/ ctx[3] ); @@ -37159,7 +37977,7 @@ function create_fragment(ctx) { 8) { attr( div3, - "aria-label-position", + "data-tooltip-position", /*side*/ ctx2[3] ); @@ -37196,13 +38014,13 @@ function create_fragment(ctx) { } function instance($$self, $$props, $$invalidate) { let side; - let { diff: diff2 } = $$props; + let { diff: diff3 } = $$props; let { view } = $$props; let buttons = []; window.setTimeout(() => buttons.forEach((b) => (0, import_obsidian18.setIcon)(b, b.getAttr("data-icon"))), 0); function open(event) { var _a2; - const file = view.app.vault.getAbstractFileByPath(diff2.vault_path); + const file = view.app.vault.getAbstractFileByPath(diff3.vault_path); if (file instanceof import_obsidian18.TFile) { (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.openFile(file); } @@ -37213,9 +38031,9 @@ function instance($$self, $$props, $$invalidate) { type: DIFF_VIEW_CONFIG.type, active: true, state: { - file: diff2.path, + file: diff3.path, staged: false, - hash: diff2.hash + hash: diff3.hash } }); } @@ -37230,7 +38048,7 @@ function instance($$self, $$props, $$invalidate) { } $$self.$$set = ($$props2) => { if ("diff" in $$props2) - $$invalidate(0, diff2 = $$props2.diff); + $$invalidate(0, diff3 = $$props2.diff); if ("view" in $$props2) $$invalidate(1, view = $$props2.view); }; @@ -37241,7 +38059,7 @@ function instance($$self, $$props, $$invalidate) { $$invalidate(3, side = view.leaf.getRoot().side == "left" ? "right" : "left"); } }; - return [diff2, view, buttons, side, open, showDiff, focus_handler, div_binding]; + return [diff3, view, buttons, side, open, showDiff, focus_handler, div_binding]; } var LogFileComponent = class extends SvelteComponent { constructor(options) { @@ -37326,7 +38144,7 @@ function create_else_block(ctx) { attr(div3, "class", "tree-item-self is-clickable nav-folder-title"); attr( div3, - "aria-label-position", + "data-tooltip-position", /*side*/ ctx[5] ); @@ -37384,7 +38202,7 @@ function create_else_block(ctx) { 32) { attr( div3, - "aria-label-position", + "data-tooltip-position", /*side*/ ctx[5] ); @@ -37808,15 +38626,12 @@ var LogTreeComponent = class extends SvelteComponent { var logTreeComponent_default = LogTreeComponent; // src/ui/history/components/logComponent.svelte -function add_css3(target) { - append_styles(target, "svelte-1t6egnt", ".git-ref.svelte-1t6egnt{color:var(--text-accent)}"); -} function get_each_context2(ctx, list, i) { const child_ctx = ctx.slice(); - child_ctx[8] = list[i]; + child_ctx[9] = list[i]; return child_ctx; } -function create_if_block_2(ctx) { +function create_if_block_4(ctx) { let div; let t_value = ( /*log*/ @@ -37827,7 +38642,7 @@ function create_if_block_2(ctx) { c() { div = element("div"); t = text(t_value); - attr(div, "class", "git-ref svelte-1t6egnt"); + attr(div, "class", "git-ref"); }, m(target, anchor) { insert(target, div, anchor); @@ -37846,6 +38661,80 @@ function create_if_block_2(ctx) { } }; } +function create_if_block_3(ctx) { + let div; + let t_value = ( + /*authorToString*/ + ctx[7]( + /*log*/ + ctx[0] + ) + "" + ); + let t; + return { + c() { + div = element("div"); + t = text(t_value); + attr(div, "class", "git-author"); + }, + m(target, anchor) { + insert(target, div, anchor); + append2(div, t); + }, + p(ctx2, dirty) { + if (dirty & /*log*/ + 1 && t_value !== (t_value = /*authorToString*/ + ctx2[7]( + /*log*/ + ctx2[0] + ) + "")) + set_data(t, t_value); + }, + d(detaching) { + if (detaching) { + detach(div); + } + } + }; +} +function create_if_block_2(ctx) { + let div; + let t_value = (0, import_obsidian19.moment)( + /*log*/ + ctx[0].date + ).format( + /*plugin*/ + ctx[3].settings.commitDateFormat + ) + ""; + let t; + return { + c() { + div = element("div"); + t = text(t_value); + attr(div, "class", "git-date"); + }, + m(target, anchor) { + insert(target, div, anchor); + append2(div, t); + }, + p(ctx2, dirty) { + if (dirty & /*log, plugin*/ + 9 && t_value !== (t_value = (0, import_obsidian19.moment)( + /*log*/ + ctx2[0].date + ).format( + /*plugin*/ + ctx2[3].settings.commitDateFormat + ) + "")) + set_data(t, t_value); + }, + d(detaching) { + if (detaching) { + detach(div); + } + } + }; +} function create_if_block3(ctx) { let div; let current_block_type_index; @@ -38081,7 +38970,7 @@ function create_each_block2(ctx) { ), diff: ( /*file*/ - ctx[8] + ctx[9] ) } }); @@ -38102,7 +38991,7 @@ function create_each_block2(ctx) { if (dirty & /*log*/ 1) logfilecomponent_changes.diff = /*file*/ - ctx2[8]; + ctx2[9]; logfilecomponent.$set(logfilecomponent_changes); }, i(local) { @@ -38121,6 +39010,7 @@ function create_each_block2(ctx) { }; } function create_fragment3(ctx) { + var _a2; let main; let div4; let div3; @@ -38128,25 +39018,37 @@ function create_fragment3(ctx) { let t0; let div2; let t1; + let t2; + let t3; let div1; - let t2_value = ( + let t4_value = ( /*log*/ ctx[0].message + "" ); - let t2; - let div1_aria_label_value; - let t3; + let t4; + let div3_aria_label_value; + let t5; let current; let mounted; let dispose; let if_block0 = ( /*log*/ - ctx[0].refs.length > 0 && create_if_block_2(ctx) + ctx[0].refs.length > 0 && create_if_block_4(ctx) ); - let if_block1 = !/*isCollapsed*/ + let if_block1 = ( + /*plugin*/ + ctx[3].settings.authorInHistoryView != "hide" && /*log*/ + ((_a2 = ctx[0].author) == null ? void 0 : _a2.name) && create_if_block_3(ctx) + ); + let if_block2 = ( + /*plugin*/ + ctx[3].settings.dateInHistoryView && create_if_block_2(ctx) + ); + let if_block3 = !/*isCollapsed*/ ctx[4] && create_if_block3(ctx); return { c() { + var _a3; main = element("main"); div4 = element("div"); div3 = element("div"); @@ -38157,11 +39059,17 @@ function create_fragment3(ctx) { if (if_block0) if_block0.c(); t1 = space(); - div1 = element("div"); - t2 = text(t2_value); - t3 = space(); if (if_block1) if_block1.c(); + t2 = space(); + if (if_block2) + if_block2.c(); + t3 = space(); + div1 = element("div"); + t4 = text(t4_value); + t5 = space(); + if (if_block3) + if_block3.c(); attr(div0, "class", "tree-item-icon nav-folder-collapse-indicator collapse-icon"); toggle_class( div0, @@ -38170,15 +39078,28 @@ function create_fragment3(ctx) { ctx[4] ); attr(div1, "class", "tree-item-inner nav-folder-title-content"); - attr(div1, "aria-label", div1_aria_label_value = /*log*/ - ctx[0].message); + attr(div3, "class", "tree-item-self is-clickable nav-folder-title"); + attr(div3, "aria-label", div3_aria_label_value = `${/*log*/ + ctx[0].refs.length > 0 ? ( + /*log*/ + ctx[0].refs.join(", ") + "\n" + ) : ""}${/*log*/ + (_a3 = ctx[0].author) == null ? void 0 : _a3.name} +${(0, import_obsidian19.moment)( + /*log*/ + ctx[0].date + ).format( + /*plugin*/ + ctx[3].settings.commitDateFormat + )} +${/*log*/ + ctx[0].message}`); attr( - div1, - "aria-label-position", + div3, + "data-tooltip-position", /*side*/ ctx[5] ); - attr(div3, "class", "tree-item-self is-clickable nav-folder-title"); attr(div4, "class", "tree-item nav-folder"); toggle_class( div4, @@ -38197,23 +39118,30 @@ function create_fragment3(ctx) { if (if_block0) if_block0.m(div2, null); append2(div2, t1); - append2(div2, div1); - append2(div1, t2); - append2(div4, t3); if (if_block1) - if_block1.m(div4, null); + if_block1.m(div2, null); + append2(div2, t2); + if (if_block2) + if_block2.m(div2, null); + append2(div2, t3); + append2(div2, div1); + append2(div1, t4); + append2(div4, t5); + if (if_block3) + if_block3.m(div4, null); current = true; if (!mounted) { dispose = listen( div3, "click", /*click_handler*/ - ctx[7] + ctx[8] ); mounted = true; } }, p(ctx2, [dirty]) { + var _a3, _b; if (!current || dirty & /*isCollapsed*/ 16) { toggle_class( @@ -38230,7 +39158,7 @@ function create_fragment3(ctx) { if (if_block0) { if_block0.p(ctx2, dirty); } else { - if_block0 = create_if_block_2(ctx2); + if_block0 = create_if_block_4(ctx2); if_block0.c(); if_block0.m(div2, t1); } @@ -38238,42 +39166,86 @@ function create_fragment3(ctx) { if_block0.d(1); if_block0 = null; } + if ( + /*plugin*/ + ctx2[3].settings.authorInHistoryView != "hide" && /*log*/ + ((_a3 = ctx2[0].author) == null ? void 0 : _a3.name) + ) { + if (if_block1) { + if_block1.p(ctx2, dirty); + } else { + if_block1 = create_if_block_3(ctx2); + if_block1.c(); + if_block1.m(div2, t2); + } + } else if (if_block1) { + if_block1.d(1); + if_block1 = null; + } + if ( + /*plugin*/ + ctx2[3].settings.dateInHistoryView + ) { + if (if_block2) { + if_block2.p(ctx2, dirty); + } else { + if_block2 = create_if_block_2(ctx2); + if_block2.c(); + if_block2.m(div2, t3); + } + } else if (if_block2) { + if_block2.d(1); + if_block2 = null; + } if ((!current || dirty & /*log*/ - 1) && t2_value !== (t2_value = /*log*/ + 1) && t4_value !== (t4_value = /*log*/ ctx2[0].message + "")) - set_data(t2, t2_value); - if (!current || dirty & /*log*/ - 1 && div1_aria_label_value !== (div1_aria_label_value = /*log*/ - ctx2[0].message)) { - attr(div1, "aria-label", div1_aria_label_value); + set_data(t4, t4_value); + if (!current || dirty & /*log, plugin*/ + 9 && div3_aria_label_value !== (div3_aria_label_value = `${/*log*/ + ctx2[0].refs.length > 0 ? ( + /*log*/ + ctx2[0].refs.join(", ") + "\n" + ) : ""}${/*log*/ + (_b = ctx2[0].author) == null ? void 0 : _b.name} +${(0, import_obsidian19.moment)( + /*log*/ + ctx2[0].date + ).format( + /*plugin*/ + ctx2[3].settings.commitDateFormat + )} +${/*log*/ + ctx2[0].message}`)) { + attr(div3, "aria-label", div3_aria_label_value); } if (!current || dirty & /*side*/ 32) { attr( - div1, - "aria-label-position", + div3, + "data-tooltip-position", /*side*/ ctx2[5] ); } if (!/*isCollapsed*/ ctx2[4]) { - if (if_block1) { - if_block1.p(ctx2, dirty); + if (if_block3) { + if_block3.p(ctx2, dirty); if (dirty & /*isCollapsed*/ 16) { - transition_in(if_block1, 1); + transition_in(if_block3, 1); } } else { - if_block1 = create_if_block3(ctx2); - if_block1.c(); - transition_in(if_block1, 1); - if_block1.m(div4, null); + if_block3 = create_if_block3(ctx2); + if_block3.c(); + transition_in(if_block3, 1); + if_block3.m(div4, null); } - } else if (if_block1) { + } else if (if_block3) { group_outros(); - transition_out(if_block1, 1, 1, () => { - if_block1 = null; + transition_out(if_block3, 1, 1, () => { + if_block3 = null; }); check_outros(); } @@ -38290,11 +39262,11 @@ function create_fragment3(ctx) { i(local) { if (current) return; - transition_in(if_block1); + transition_in(if_block3); current = true; }, o(local) { - transition_out(if_block1); + transition_out(if_block3); current = false; }, d(detaching) { @@ -38305,6 +39277,10 @@ function create_fragment3(ctx) { if_block0.d(); if (if_block1) if_block1.d(); + if (if_block2) + if_block2.d(); + if (if_block3) + if_block3.d(); mounted = false; dispose(); } @@ -38318,6 +39294,15 @@ function instance3($$self, $$props, $$invalidate) { let { showTree } = $$props; let { plugin } = $$props; let isCollapsed = true; + function authorToString(log3) { + const name = log3.author.name; + if (plugin.settings.authorInHistoryView == "full") { + return name; + } else if (plugin.settings.authorInHistoryView == "initials") { + const words = name.split(" ").filter((word) => word.length > 0); + return words.map((word) => word[0].toUpperCase()).join(""); + } + } const click_handler = () => $$invalidate(4, isCollapsed = !isCollapsed); $$self.$$set = ($$props2) => { if ("log" in $$props2) @@ -38346,12 +39331,22 @@ function instance3($$self, $$props, $$invalidate) { $$invalidate(5, side = view.leaf.getRoot().side == "left" ? "right" : "left"); } }; - return [log2, view, showTree, plugin, isCollapsed, side, logsHierarchy, click_handler]; + return [ + log2, + view, + showTree, + plugin, + isCollapsed, + side, + logsHierarchy, + authorToString, + click_handler + ]; } var LogComponent = class extends SvelteComponent { constructor(options) { super(); - init2(this, options, instance3, create_fragment3, safe_not_equal, { log: 0, view: 1, showTree: 2, plugin: 3 }, add_css3); + init2(this, options, instance3, create_fragment3, safe_not_equal, { log: 0, view: 1, showTree: 2, plugin: 3 }); } }; var logComponent_default = LogComponent; @@ -38659,8 +39654,8 @@ function instance4($$self, $$props, $$invalidate) { plugin.app.workspace.onLayoutReady(() => { window.setTimeout( () => { - buttons.forEach((btn) => (0, import_obsidian19.setIcon)(btn, btn.getAttr("data-icon"), 16)); - (0, import_obsidian19.setIcon)(layoutBtn, showTree ? "list" : "folder", 16); + buttons.forEach((btn) => (0, import_obsidian20.setIcon)(btn, btn.getAttr("data-icon"))); + (0, import_obsidian20.setIcon)(layoutBtn, showTree ? "list" : "folder"); }, 0 ); @@ -38705,7 +39700,7 @@ function instance4($$self, $$props, $$invalidate) { $: { if (layoutBtn) { layoutBtn.empty(); - (0, import_obsidian19.setIcon)(layoutBtn, showTree ? "list" : "folder", 16); + (0, import_obsidian20.setIcon)(layoutBtn, showTree ? "list" : "folder"); } } } @@ -38732,7 +39727,7 @@ var HistoryView = class extends SvelteComponent { var historyView_default = HistoryView; // src/ui/history/historyView.ts -var HistoryView2 = class extends import_obsidian20.ItemView { +var HistoryView2 = class extends import_obsidian21.ItemView { constructor(leaf, plugin) { super(leaf); this.plugin = plugin; @@ -38764,8 +39759,8 @@ var HistoryView2 = class extends import_obsidian20.ItemView { // src/ui/modals/branchModal.ts init_polyfill_buffer(); -var import_obsidian21 = require("obsidian"); -var BranchModal = class extends import_obsidian21.FuzzySuggestModal { +var import_obsidian22 = require("obsidian"); +var BranchModal = class extends import_obsidian22.FuzzySuggestModal { constructor(branches) { super(app); this.branches = branches; @@ -38795,8 +39790,8 @@ var BranchModal = class extends import_obsidian21.FuzzySuggestModal { // src/ui/modals/ignoreModal.ts init_polyfill_buffer(); -var import_obsidian22 = require("obsidian"); -var IgnoreModal = class extends import_obsidian22.Modal { +var import_obsidian23 = require("obsidian"); +var IgnoreModal = class extends import_obsidian23.Modal { constructor(app2, content) { super(app2); this.content = content; @@ -38834,16 +39829,16 @@ var IgnoreModal = class extends import_obsidian22.Modal { // src/ui/sourceControl/sourceControl.ts init_polyfill_buffer(); -var import_obsidian29 = require("obsidian"); +var import_obsidian30 = require("obsidian"); // src/ui/sourceControl/sourceControl.svelte init_polyfill_buffer(); -var import_obsidian28 = require("obsidian"); +var import_obsidian29 = require("obsidian"); // src/ui/modals/discardModal.ts init_polyfill_buffer(); -var import_obsidian23 = require("obsidian"); -var DiscardModal = class extends import_obsidian23.Modal { +var import_obsidian24 = require("obsidian"); +var DiscardModal = class extends import_obsidian24.Modal { constructor(app2, deletion, filename) { super(app2); this.deletion = deletion; @@ -38899,15 +39894,15 @@ var DiscardModal = class extends import_obsidian23.Modal { // src/ui/sourceControl/components/fileComponent.svelte init_polyfill_buffer(); -var import_obsidian25 = require("obsidian"); +var import_obsidian26 = require("obsidian"); -// node_modules/.pnpm/github.com+Vinzent03+obsidian-community-lib@e663de4f95c879b40613090da78ea599ff621d24_@codemir_kbfcpig3uak7df3ohthcqq53p4/node_modules/obsidian-community-lib/dist/index.js +// node_modules/.pnpm/github.com+Vinzent03+obsidian-community-lib@e663de4f95c879b40613090da78ea599ff621d24_@codemir_xyncsguozhhawq25qkwtwp76my/node_modules/obsidian-community-lib/dist/index.js init_polyfill_buffer(); -// node_modules/.pnpm/github.com+Vinzent03+obsidian-community-lib@e663de4f95c879b40613090da78ea599ff621d24_@codemir_kbfcpig3uak7df3ohthcqq53p4/node_modules/obsidian-community-lib/dist/utils.js +// node_modules/.pnpm/github.com+Vinzent03+obsidian-community-lib@e663de4f95c879b40613090da78ea599ff621d24_@codemir_xyncsguozhhawq25qkwtwp76my/node_modules/obsidian-community-lib/dist/utils.js init_polyfill_buffer(); var feather = __toESM(require_feather()); -var import_obsidian24 = require("obsidian"); +var import_obsidian25 = require("obsidian"); function hoverPreview(event, view, to) { const targetEl = event.target; app.workspace.trigger("hover-link", { @@ -38920,7 +39915,7 @@ function hoverPreview(event, view, to) { } // src/ui/sourceControl/components/fileComponent.svelte -function add_css4(target) { +function add_css3(target) { append_styles(target, "svelte-1wbh8tp", "main.svelte-1wbh8tp .nav-file-title.svelte-1wbh8tp{align-items:center}"); } function create_if_block5(ctx) { @@ -39034,7 +40029,7 @@ function create_fragment5(ctx) { ctx[0].vault_path); attr( div6, - "aria-label-position", + "data-tooltip-position", /*side*/ ctx[3] ); @@ -39149,7 +40144,7 @@ function create_fragment5(ctx) { 8) { attr( div6, - "aria-label-position", + "data-tooltip-position", /*side*/ ctx2[3] ); @@ -39193,7 +40188,7 @@ function instance5($$self, $$props, $$invalidate) { let { view } = $$props; let { manager } = $$props; let buttons = []; - window.setTimeout(() => buttons.forEach((b) => (0, import_obsidian25.setIcon)(b, b.getAttr("data-icon"))), 0); + window.setTimeout(() => buttons.forEach((b) => (0, import_obsidian26.setIcon)(b, b.getAttr("data-icon"))), 0); function hover(event) { if (app.vault.getAbstractFileByPath(change.vault_path)) { hoverPreview(event, view, change.vault_path); @@ -39203,7 +40198,7 @@ function instance5($$self, $$props, $$invalidate) { var _a2; const file = view.app.vault.getAbstractFileByPath(change.vault_path); console.log(event); - if (file instanceof import_obsidian25.TFile) { + if (file instanceof import_obsidian26.TFile) { (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.openFile(file); } } @@ -39292,15 +40287,15 @@ function instance5($$self, $$props, $$invalidate) { var FileComponent = class extends SvelteComponent { constructor(options) { super(); - init2(this, options, instance5, create_fragment5, safe_not_equal, { change: 0, view: 1, manager: 9 }, add_css4); + init2(this, options, instance5, create_fragment5, safe_not_equal, { change: 0, view: 1, manager: 9 }, add_css3); } }; var fileComponent_default = FileComponent; // src/ui/sourceControl/components/pulledFileComponent.svelte init_polyfill_buffer(); -var import_obsidian26 = require("obsidian"); -function add_css5(target) { +var import_obsidian27 = require("obsidian"); +function add_css4(target) { append_styles(target, "svelte-1wbh8tp", "main.svelte-1wbh8tp .nav-file-title.svelte-1wbh8tp{align-items:center}"); } function create_fragment6(ctx) { @@ -39345,7 +40340,7 @@ function create_fragment6(ctx) { ctx[0].vault_path); attr( div2, - "aria-label-position", + "data-tooltip-position", /*side*/ ctx[1] ); @@ -39413,7 +40408,7 @@ function create_fragment6(ctx) { 2) { attr( div2, - "aria-label-position", + "data-tooltip-position", /*side*/ ctx2[1] ); @@ -39447,7 +40442,7 @@ function instance6($$self, $$props, $$invalidate) { function open(event) { var _a2; const file = view.app.vault.getAbstractFileByPath(change.vault_path); - if (file instanceof import_obsidian26.TFile) { + if (file instanceof import_obsidian27.TFile) { (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.openFile(file); } } @@ -39472,15 +40467,15 @@ function instance6($$self, $$props, $$invalidate) { var PulledFileComponent = class extends SvelteComponent { constructor(options) { super(); - init2(this, options, instance6, create_fragment6, safe_not_equal, { change: 0, view: 4 }, add_css5); + init2(this, options, instance6, create_fragment6, safe_not_equal, { change: 0, view: 4 }, add_css4); } }; var pulledFileComponent_default = PulledFileComponent; // src/ui/sourceControl/components/stagedFileComponent.svelte init_polyfill_buffer(); -var import_obsidian27 = require("obsidian"); -function add_css6(target) { +var import_obsidian28 = require("obsidian"); +function add_css5(target) { append_styles(target, "svelte-1wbh8tp", "main.svelte-1wbh8tp .nav-file-title.svelte-1wbh8tp{align-items:center}"); } function create_if_block6(ctx) { @@ -39581,7 +40576,7 @@ function create_fragment7(ctx) { ctx[0].vault_path); attr( div5, - "aria-label-position", + "data-tooltip-position", /*side*/ ctx[3] ); @@ -39689,7 +40684,7 @@ function create_fragment7(ctx) { 8) { attr( div5, - "aria-label-position", + "data-tooltip-position", /*side*/ ctx2[3] ); @@ -39727,13 +40722,12 @@ function create_fragment7(ctx) { }; } function instance7($$self, $$props, $$invalidate) { - let formattedPath; let side; let { change } = $$props; let { view } = $$props; let { manager } = $$props; let buttons = []; - window.setTimeout(() => buttons.forEach((b) => (0, import_obsidian27.setIcon)(b, b.getAttr("data-icon"), 16)), 0); + window.setTimeout(() => buttons.forEach((b) => (0, import_obsidian28.setIcon)(b, b.getAttr("data-icon"))), 0); function hover(event) { if (app.vault.getAbstractFileByPath(change.vault_path)) { hoverPreview(event, view, change.vault_path); @@ -39742,7 +40736,7 @@ function instance7($$self, $$props, $$invalidate) { function open(event) { var _a2; const file = view.app.vault.getAbstractFileByPath(change.vault_path); - if (file instanceof import_obsidian27.TFile) { + if (file instanceof import_obsidian28.TFile) { (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.openFile(file); } } @@ -39783,11 +40777,6 @@ function instance7($$self, $$props, $$invalidate) { $$invalidate(8, manager = $$props2.manager); }; $$self.$$.update = () => { - if ($$self.$$.dirty & /*change*/ - 1) { - $: - formattedPath = change.vault_path; - } if ($$self.$$.dirty & /*view*/ 2) { $: @@ -39812,14 +40801,14 @@ function instance7($$self, $$props, $$invalidate) { var StagedFileComponent = class extends SvelteComponent { constructor(options) { super(); - init2(this, options, instance7, create_fragment7, safe_not_equal, { change: 0, view: 1, manager: 8 }, add_css6); + init2(this, options, instance7, create_fragment7, safe_not_equal, { change: 0, view: 1, manager: 8 }, add_css5); } }; var stagedFileComponent_default = StagedFileComponent; // src/ui/sourceControl/components/treeComponent.svelte init_polyfill_buffer(); -function add_css7(target) { +function add_css6(target) { append_styles(target, "svelte-hup5mn", "main.svelte-hup5mn .nav-folder-title.svelte-hup5mn{align-items:center}"); } function get_each_context4(ctx, list, i) { @@ -39865,7 +40854,7 @@ function create_else_block3(ctx) { ctx[5][ /*entity*/ ctx[15].title - ] && create_if_block_4(ctx); + ] && create_if_block_42(ctx); function click_handler_3() { return ( /*click_handler_3*/ @@ -39916,7 +40905,7 @@ function create_else_block3(ctx) { attr(div6, "class", "tree-item-self is-clickable nav-folder-title svelte-hup5mn"); attr( div6, - "aria-label-position", + "data-tooltip-position", /*side*/ ctx[6] ); @@ -39954,7 +40943,7 @@ function create_else_block3(ctx) { append2(div7, t6); current = true; if (!mounted) { - dispose = listen(div7, "click", click_handler_3); + dispose = listen(div7, "click", stop_propagation(click_handler_3)); mounted = true; } }, @@ -39990,7 +40979,7 @@ function create_else_block3(ctx) { 64) { attr( div6, - "aria-label-position", + "data-tooltip-position", /*side*/ ctx[6] ); @@ -40012,7 +41001,7 @@ function create_else_block3(ctx) { transition_in(if_block1, 1); } } else { - if_block1 = create_if_block_4(ctx); + if_block1 = create_if_block_42(ctx); if_block1.c(); transition_in(if_block1, 1); if_block1.m(div7, t6); @@ -40065,7 +41054,7 @@ function create_if_block7(ctx) { let if_block; let t; let current; - const if_block_creators = [create_if_block_13, create_if_block_22, create_if_block_3]; + const if_block_creators = [create_if_block_13, create_if_block_22, create_if_block_32]; const if_blocks = []; function select_block_type_1(ctx2, dirty) { if ( @@ -40257,7 +41246,7 @@ function create_if_block_5(ctx) { } }; } -function create_if_block_4(ctx) { +function create_if_block_42(ctx) { let div; let treecomponent; let div_transition; @@ -40347,7 +41336,7 @@ function create_if_block_4(ctx) { } }; } -function create_if_block_3(ctx) { +function create_if_block_32(ctx) { let pulledfilecomponent; let current; pulledfilecomponent = new pulledFileComponent_default({ @@ -40766,15 +41755,15 @@ var TreeComponent = class extends SvelteComponent { fileType: 3, topLevel: 4 }, - add_css7 + add_css6 ); } }; var treeComponent_default = TreeComponent; // src/ui/sourceControl/sourceControl.svelte -function add_css8(target) { - append_styles(target, "svelte-1bvmxec", `.commit-msg-input.svelte-1bvmxec.svelte-1bvmxec{width:100%;overflow:hidden;resize:none;padding:7px 5px;background-color:var(--background-modifier-form-field)}.git-commit-msg.svelte-1bvmxec.svelte-1bvmxec{position:relative;padding:0;width:calc(100% - var(--size-4-8));margin:4px auto}main.svelte-1bvmxec .git-tools .files-count.svelte-1bvmxec{padding-left:var(--size-2-1);width:11px;display:flex;align-items:center;justify-content:center}.nav-folder-title.svelte-1bvmxec.svelte-1bvmxec{align-items:center}.git-commit-msg-clear-button.svelte-1bvmxec.svelte-1bvmxec{position:absolute;background:transparent;border-radius:50%;color:var(--search-clear-button-color);cursor:var(--cursor);top:-4px;right:2px;bottom:0px;line-height:0;height:var(--input-height);width:28px;margin:auto;padding:0 0;text-align:center;display:flex;justify-content:center;align-items:center;transition:color 0.15s ease-in-out}.git-commit-msg-clear-button.svelte-1bvmxec.svelte-1bvmxec:after{content:"";height:var(--search-clear-button-size);width:var(--search-clear-button-size);display:block;background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,<svg viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M6 12C9.31371 12 12 9.31371 12 6C12 2.68629 9.31371 0 6 0C2.68629 0 0 2.68629 0 6C0 9.31371 2.68629 12 6 12ZM3.8705 3.09766L6.00003 5.22718L8.12955 3.09766L8.9024 3.8705L6.77287 6.00003L8.9024 8.12955L8.12955 8.9024L6.00003 6.77287L3.8705 8.9024L3.09766 8.12955L5.22718 6.00003L3.09766 3.8705L3.8705 3.09766Z' fill='currentColor'/></svg>");-webkit-mask-repeat:no-repeat}`); +function add_css7(target) { + append_styles(target, "svelte-11adhly", `.commit-msg-input.svelte-11adhly.svelte-11adhly{width:100%;overflow:hidden;resize:none;padding:7px 5px;background-color:var(--background-modifier-form-field)}.git-commit-msg.svelte-11adhly.svelte-11adhly{position:relative;padding:0;width:calc(100% - var(--size-4-8));margin:4px auto}main.svelte-11adhly .git-tools .files-count.svelte-11adhly{padding-left:var(--size-2-1);width:11px;display:flex;align-items:center;justify-content:center}.nav-folder-title.svelte-11adhly.svelte-11adhly{align-items:center}.git-commit-msg-clear-button.svelte-11adhly.svelte-11adhly{position:absolute;background:transparent;border-radius:50%;color:var(--search-clear-button-color);cursor:var(--cursor);top:-4px;right:2px;bottom:0px;line-height:0;height:var(--input-height);width:28px;margin:auto;padding:0 0;text-align:center;display:flex;justify-content:center;align-items:center;transition:color 0.15s ease-in-out}.git-commit-msg-clear-button.svelte-11adhly.svelte-11adhly:after{content:"";height:var(--search-clear-button-size);width:var(--search-clear-button-size);display:block;background-color:currentColor;mask-image:url("data:image/svg+xml,<svg viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M6 12C9.31371 12 12 9.31371 12 6C12 2.68629 9.31371 0 6 0C2.68629 0 0 2.68629 0 6C0 9.31371 2.68629 12 6 12ZM3.8705 3.09766L6.00003 5.22718L8.12955 3.09766L8.9024 3.8705L6.77287 6.00003L8.9024 8.12955L8.12955 8.9024L6.00003 6.77287L3.8705 8.9024L3.09766 8.12955L5.22718 6.00003L3.09766 3.8705L3.8705 3.09766Z' fill='currentColor'/></svg>");mask-repeat:no-repeat;-webkit-mask-image:url("data:image/svg+xml,<svg viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M6 12C9.31371 12 12 9.31371 12 6C12 2.68629 9.31371 0 6 0C2.68629 0 0 2.68629 0 6C0 9.31371 2.68629 12 6 12ZM3.8705 3.09766L6.00003 5.22718L8.12955 3.09766L8.9024 3.8705L6.77287 6.00003L8.9024 8.12955L8.12955 8.9024L6.00003 6.77287L3.8705 8.9024L3.09766 8.12955L5.22718 6.00003L3.09766 3.8705L3.8705 3.09766Z' fill='currentColor'/></svg>");-webkit-mask-repeat:no-repeat}`); } function get_each_context5(ctx, list, i) { const child_ctx = ctx.slice(); @@ -40799,7 +41788,7 @@ function create_if_block_8(ctx) { return { c() { div = element("div"); - attr(div, "class", "git-commit-msg-clear-button svelte-1bvmxec"); + attr(div, "class", "git-commit-msg-clear-button svelte-11adhly"); attr(div, "aria-label", div_aria_label_value = "Clear"); }, m(target, anchor) { @@ -40874,7 +41863,7 @@ function create_if_block8(ctx) { ); let if_block1 = ( /*changesOpen*/ - ctx[12] && create_if_block_42(ctx) + ctx[12] && create_if_block_43(ctx) ); let if_block2 = ( /*lastPulledFiles*/ @@ -40935,9 +41924,9 @@ function create_if_block8(ctx) { attr(div2, "aria-label", "Unstage"); attr(div2, "class", "clickable-icon"); attr(div3, "class", "buttons"); - attr(div4, "class", "files-count svelte-1bvmxec"); + attr(div4, "class", "files-count svelte-11adhly"); attr(div5, "class", "git-tools"); - attr(div6, "class", "tree-item-self is-clickable nav-folder-title svelte-1bvmxec"); + attr(div6, "class", "tree-item-self is-clickable nav-folder-title svelte-11adhly"); attr(div7, "class", "staged tree-item nav-folder"); toggle_class(div7, "is-collapsed", !/*stagedOpen*/ ctx[13]); @@ -40952,9 +41941,9 @@ function create_if_block8(ctx) { attr(div11, "aria-label", "Stage"); attr(div11, "class", "clickable-icon"); attr(div12, "class", "buttons"); - attr(div13, "class", "files-count svelte-1bvmxec"); + attr(div13, "class", "files-count svelte-11adhly"); attr(div14, "class", "git-tools"); - attr(div15, "class", "tree-item-self is-clickable nav-folder-title svelte-1bvmxec"); + attr(div15, "class", "tree-item-self is-clickable nav-folder-title svelte-11adhly"); attr(div16, "class", "changes tree-item nav-folder"); toggle_class(div16, "is-collapsed", !/*changesOpen*/ ctx[12]); @@ -41091,7 +42080,7 @@ function create_if_block8(ctx) { transition_in(if_block1, 1); } } else { - if_block1 = create_if_block_42(ctx2); + if_block1 = create_if_block_43(ctx2); if_block1.c(); transition_in(if_block1, 1); if_block1.m(div16, null); @@ -41446,7 +42435,7 @@ function create_each_block_2(ctx) { } }; } -function create_if_block_42(ctx) { +function create_if_block_43(ctx) { let div; let current_block_type_index; let if_block; @@ -41769,7 +42758,7 @@ function create_if_block_14(ctx) { attr(div0, "class", "tree-item-icon nav-folder-collapse-indicator collapse-icon"); attr(div1, "class", "tree-item-inner nav-folder-title-content"); attr(span, "class", "tree-item-flair"); - attr(div2, "class", "tree-item-self is-clickable nav-folder-title svelte-1bvmxec"); + attr(div2, "class", "tree-item-self is-clickable nav-folder-title svelte-11adhly"); attr(div3, "class", "pulled nav-folder"); toggle_class(div3, "is-collapsed", !/*lastPulledFilesOpen*/ ctx[14]); @@ -41858,7 +42847,7 @@ function create_if_block_23(ctx) { let if_block; let div_transition; let current; - const if_block_creators = [create_if_block_32, create_else_block4]; + const if_block_creators = [create_if_block_33, create_else_block4]; const if_blocks = []; function select_block_type_2(ctx2, dirty) { if ( @@ -42017,7 +43006,7 @@ function create_else_block4(ctx) { } }; } -function create_if_block_32(ctx) { +function create_if_block_33(ctx) { let treecomponent; let current; treecomponent = new treeComponent_default({ @@ -42243,14 +43232,14 @@ function create_fragment9(ctx) { /*rows*/ ctx[15] ); - attr(textarea, "class", "commit-msg-input svelte-1bvmxec"); + attr(textarea, "class", "commit-msg-input svelte-11adhly"); attr(textarea, "spellcheck", "true"); attr(textarea, "placeholder", "Commit Message"); - attr(div10, "class", "git-commit-msg svelte-1bvmxec"); + attr(div10, "class", "git-commit-msg svelte-11adhly"); attr(div11, "class", "nav-files-container"); set_style(div11, "position", "relative"); attr(main, "data-type", main_data_type_value = SOURCE_CONTROL_VIEW_CONFIG.type); - attr(main, "class", "svelte-1bvmxec"); + attr(main, "class", "svelte-11adhly"); }, m(target, anchor) { insert(target, main, anchor); @@ -42473,8 +43462,8 @@ function instance9($$self, $$props, $$invalidate) { plugin.app.workspace.onLayoutReady(() => { window.setTimeout( () => { - buttons.forEach((btn) => (0, import_obsidian28.setIcon)(btn, btn.getAttr("data-icon"))); - (0, import_obsidian28.setIcon)(layoutBtn, showTree ? "list" : "folder"); + buttons.forEach((btn) => (0, import_obsidian29.setIcon)(btn, btn.getAttr("data-icon"))); + (0, import_obsidian29.setIcon)(layoutBtn, showTree ? "list" : "folder"); }, 0 ); @@ -42490,7 +43479,7 @@ function instance9($$self, $$props, $$invalidate) { plugin.setState(0 /* idle */); return false; } - plugin.promiseQueue.addTask(() => plugin.gitManager.commit(commitMessage).then(() => { + plugin.promiseQueue.addTask(() => plugin.gitManager.commit({ message: commitMessage }).then(() => { if (commitMessage !== plugin.settings.commitMessage) { $$invalidate(2, commitMessage = ""); } @@ -42520,7 +43509,7 @@ function instance9($$self, $$props, $$invalidate) { const unPushedCommits = yield plugin.gitManager.getUnpushedCommits(); buttons.forEach((btn) => { var _a2, _b; - if (import_obsidian28.Platform.isMobile) { + if (import_obsidian29.Platform.isMobile) { btn.removeClass("button-border"); if (btn.id == "push" && unPushedCommits > 0) { btn.addClass("button-border"); @@ -42591,7 +43580,7 @@ function instance9($$self, $$props, $$invalidate) { plugin.promiseQueue.addTask(() => plugin.pullChangesFromRemote().finally(triggerRefresh2)); } function discard() { - new DiscardModal(view.app, false, plugin.gitManager.getVaultPath("/")).myOpen().then((shouldDiscard) => { + new DiscardModal(view.app, false, plugin.gitManager.getRelativeVaultPath("/")).myOpen().then((shouldDiscard) => { if (shouldDiscard === true) { plugin.promiseQueue.addTask(() => plugin.gitManager.discardAll({ status: plugin.cachedStatus }).finally(() => { dispatchEvent(new CustomEvent("git-refresh")); @@ -42684,7 +43673,7 @@ function instance9($$self, $$props, $$invalidate) { $: { if (layoutBtn) { layoutBtn.empty(); - (0, import_obsidian28.setIcon)(layoutBtn, showTree ? "list" : "folder"); + (0, import_obsidian29.setIcon)(layoutBtn, showTree ? "list" : "folder"); } } } @@ -42739,13 +43728,13 @@ function instance9($$self, $$props, $$invalidate) { var SourceControl = class extends SvelteComponent { constructor(options) { super(); - init2(this, options, instance9, create_fragment9, safe_not_equal, { plugin: 0, view: 1 }, add_css8, [-1, -1]); + init2(this, options, instance9, create_fragment9, safe_not_equal, { plugin: 0, view: 1 }, add_css7, [-1, -1]); } }; var sourceControl_default = SourceControl; // src/ui/sourceControl/sourceControl.ts -var GitView = class extends import_obsidian29.ItemView { +var GitView = class extends import_obsidian30.ItemView { constructor(leaf, plugin) { super(leaf); this.plugin = plugin; @@ -42801,7 +43790,7 @@ var BranchStatusBar = class { }; // src/main.ts -var ObsidianGit = class extends import_obsidian30.Plugin { +var ObsidianGit = class extends import_obsidian31.Plugin { constructor() { super(...arguments); this.gitReady = false; @@ -42876,7 +43865,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { id: "edit-gitignore", name: "Edit .gitignore", callback: async () => { - const path2 = this.gitManager.getVaultPath(".gitignore"); + const path2 = this.gitManager.getRelativeVaultPath(".gitignore"); if (!await this.app.vault.adapter.exists(path2)) { this.app.vault.adapter.write(path2, ""); } @@ -42943,7 +43932,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { active: true, state: { staged: false, - file: this.gitManager.asRepositoryRelativePath( + file: this.gitManager.getRelativeRepoPath( file.path, true ) @@ -42987,13 +43976,13 @@ var ObsidianGit = class extends import_obsidian30.Plugin { id: "add-to-gitignore", name: "Add file to gitignore", checkCallback: (checking) => { - const file = app.workspace.getActiveFile(); + const file = this.app.workspace.getActiveFile(); if (checking) { return file !== null; } else { - app.vault.adapter.append( - this.gitManager.getVaultPath(".gitignore"), - "\n" + this.gitManager.asRepositoryRelativePath( + this.app.vault.adapter.append( + this.gitManager.getRelativeVaultPath(".gitignore"), + "\n" + this.gitManager.getRelativeRepoPath( file.path, true ) @@ -43049,6 +44038,20 @@ var ObsidianGit = class extends import_obsidian30.Plugin { }) ) }); + if (import_obsidian31.Platform.isDesktopApp) { + this.addCommand({ + id: "commit-amend-staged-specified-message", + name: "Commit Amend", + callback: () => this.promiseQueue.addTask( + () => this.commit({ + fromAutoBackup: false, + requestCustomMessage: true, + onlyStaged: true, + amend: true + }) + ) + }); + } this.addCommand({ id: "commit-staged-specified-message", name: "Commit staged with specific message", @@ -43099,6 +44102,11 @@ var ObsidianGit = class extends import_obsidian30.Plugin { name: "Remove remote", callback: async () => this.removeRemote() }); + this.addCommand({ + id: "set-upstream-branch", + name: "Set upstream branch", + callback: async () => this.setUpsreamBranch() + }); this.addCommand({ id: "delete-repo", name: "CAUTION: Delete repository", @@ -43118,14 +44126,14 @@ var ObsidianGit = class extends import_obsidian30.Plugin { `${this.settings.basePath}/.git`, true ); - new import_obsidian30.Notice( + new import_obsidian31.Notice( "Successfully deleted repository. Reloading plugin..." ); this.unloadPlugin(); this.init(); } } else { - new import_obsidian30.Notice("No repository found"); + new import_obsidian31.Notice("No repository found"); } } }); @@ -43146,12 +44154,13 @@ var ObsidianGit = class extends import_obsidian30.Plugin { if (!await this.isAllInitialized()) return; const status2 = await this.gitManager.status(); + console.log(status2); this.setState(0 /* idle */); if (status2.changed.length + status2.staged.length > 500) { this.displayError("Too many changes to display"); return; } - new ChangedFilesModal(this, status2.changed).open(); + new ChangedFilesModal(this, status2.all).open(); } }); this.addCommand({ @@ -43217,7 +44226,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { }, 1e3) ); } - if (import_obsidian30.Platform.isDesktop && this.settings.showBranchStatusBar) { + if (import_obsidian31.Platform.isDesktop && this.settings.showBranchStatusBar) { const branchStatusBarEl = this.addStatusBarItem(); this.branchBar = new BranchStatusBar(branchStatusBarEl, this); this.registerInterval( @@ -43232,7 +44241,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { setRefreshDebouncer() { var _a2; (_a2 = this.debRefresh) == null ? void 0 : _a2.cancel(); - this.debRefresh = (0, import_obsidian30.debounce)( + this.debRefresh = (0, import_obsidian31.debounce)( () => { if (this.settings.refreshSourceControl) { this.refresh(); @@ -43244,17 +44253,17 @@ var ObsidianGit = class extends import_obsidian30.Plugin { } async showNotices() { const length = 1e4; - if (this.manifest.id === "obsidian-git" && import_obsidian30.Platform.isDesktopApp && !this.settings.showedMobileNotice) { - new import_obsidian30.Notice( - "Obsidian Git is now available on mobile! Please read the plugin's README for more information.", + if (this.manifest.id === "obsidian-git" && import_obsidian31.Platform.isDesktopApp && !this.settings.showedMobileNotice) { + new import_obsidian31.Notice( + "Git is now available on mobile! Please read the plugin's README for more information.", length ); this.settings.showedMobileNotice = true; await this.saveSettings(); } if (this.manifest.id === "obsidian-git-isomorphic") { - new import_obsidian30.Notice( - "Obsidian Git Mobile is now deprecated. Please uninstall it and install Obsidian Git instead.", + new import_obsidian31.Notice( + "Git Mobile is now deprecated. Please uninstall it and install Git instead.", length ); } @@ -43273,11 +44282,11 @@ var ObsidianGit = class extends import_obsidian30.Plugin { menu.addItem((item) => { item.setTitle(`Git: Stage`).setIcon("plus-circle").setSection("action").onClick((_) => { this.promiseQueue.addTask(async () => { - if (file instanceof import_obsidian30.TFile) { + if (file instanceof import_obsidian31.TFile) { await this.gitManager.stage(file.path, true); } else { await this.gitManager.stageAll({ - dir: this.gitManager.asRepositoryRelativePath( + dir: this.gitManager.getRelativeRepoPath( file.path, true ) @@ -43290,11 +44299,11 @@ var ObsidianGit = class extends import_obsidian30.Plugin { menu.addItem((item) => { item.setTitle(`Git: Unstage`).setIcon("minus-circle").setSection("action").onClick((_) => { this.promiseQueue.addTask(async () => { - if (file instanceof import_obsidian30.TFile) { + if (file instanceof import_obsidian31.TFile) { await this.gitManager.unstage(file.path, true); } else { await this.gitManager.unstageAll({ - dir: this.gitManager.asRepositoryRelativePath( + dir: this.gitManager.getRelativeRepoPath( file.path, true ) @@ -43382,7 +44391,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { }; } get useSimpleGit() { - return import_obsidian30.Platform.isDesktopApp; + return import_obsidian31.Platform.isDesktopApp; } async init() { var _a2; @@ -43400,7 +44409,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { this.displayError("Cannot run git command"); break; case "missing-repo": - new import_obsidian30.Notice( + new import_obsidian31.Notice( "Can't find a valid git repository. Please create one via the given command or clone an existing repo.", 1e4 ); @@ -43450,7 +44459,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { } async createNewRepo() { await this.gitManager.init(); - new import_obsidian30.Notice("Initialized new repo"); + new import_obsidian31.Notice("Initialized new repo"); await this.init(); } async cloneNewRepo() { @@ -43467,7 +44476,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { if (dir === confirmOption) { dir = "."; } - dir = (0, import_obsidian30.normalizePath)(dir); + dir = (0, import_obsidian31.normalizePath)(dir); if (dir === "/") { dir = "."; } @@ -43479,7 +44488,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { }); const containsConflictDir = await modal2.open(); if (containsConflictDir === void 0) { - new import_obsidian30.Notice("Aborted clone"); + new import_obsidian31.Notice("Aborted clone"); return; } else if (containsConflictDir === "YES") { const confirmOption2 = "DELETE ALL YOUR LOCAL CONFIG AND PLUGINS"; @@ -43495,7 +44504,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { true ); } else { - new import_obsidian30.Notice("Aborted clone"); + new import_obsidian31.Notice("Aborted clone"); return; } } @@ -43508,11 +44517,11 @@ var ObsidianGit = class extends import_obsidian30.Plugin { if (depth !== "") { depthInt = parseInt(depth); if (isNaN(depthInt)) { - new import_obsidian30.Notice("Invalid depth. Aborting clone."); + new import_obsidian31.Notice("Invalid depth. Aborting clone."); return; } } - new import_obsidian30.Notice(`Cloning new repo into "${dir}"`); + new import_obsidian31.Notice(`Cloning new repo into "${dir}"`); const oldBase = this.settings.basePath; const customDir = dir && dir !== "."; if (customDir) { @@ -43525,8 +44534,8 @@ var ObsidianGit = class extends import_obsidian30.Plugin { this.saveSettings(); throw error; } - new import_obsidian30.Notice("Cloned new repo."); - new import_obsidian30.Notice("Please restart Obsidian"); + new import_obsidian31.Notice("Cloned new repo."); + new import_obsidian31.Notice("Please restart Obsidian"); if (customDir) { this.saveSettings(); } @@ -43549,6 +44558,9 @@ var ObsidianGit = class extends import_obsidian30.Plugin { return; const filesUpdated = await this.pull(); this.setUpAutoBackup(); + if (filesUpdated === false) { + return; + } if (!filesUpdated) { this.displayMessage("Everything is up-to-date"); } @@ -43593,11 +44605,12 @@ var ObsidianGit = class extends import_obsidian30.Plugin { fromAutoBackup, requestCustomMessage = false, onlyStaged = false, - commitMessage + commitMessage, + amend = false }) { if (!await this.isAllInitialized()) return false; - let hadConflict = this.localStorage.getConflict() === "true"; + let hadConflict = this.localStorage.getConflict(); let changedFiles; let status2; let unstagedFiles; @@ -43605,7 +44618,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { this.mayDeleteConflictFile(); status2 = await this.updateCachedStatus(); if (status2.conflicted.length == 0) { - this.localStorage.setConflict("false"); + this.localStorage.setConflict(false); hadConflict = false; } if (fromAutoBackup && status2.conflicted.length > 0) { @@ -43632,7 +44645,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { } else { unstagedFiles = await this.gitManager.getUnstagedFiles(); changedFiles = unstagedFiles.map(({ filepath }) => ({ - vault_path: this.gitManager.getVaultPath(filepath) + vault_path: this.gitManager.getRelativeVaultPath(filepath) })); } } @@ -43644,7 +44657,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { let cmtMessage = commitMessage != null ? commitMessage : commitMessage = fromAutoBackup ? this.settings.autoCommitMessage : this.settings.commitMessage; if (fromAutoBackup && this.settings.customMessageOnAutoBackup || requestCustomMessage) { if (!this.settings.disablePopups && fromAutoBackup) { - new import_obsidian30.Notice( + new import_obsidian31.Notice( "Auto backup: Please enter a custom commit message. Leave empty to abort" ); } @@ -43661,17 +44674,21 @@ var ObsidianGit = class extends import_obsidian30.Plugin { } let committedFiles; if (onlyStaged) { - committedFiles = await this.gitManager.commit(cmtMessage); + committedFiles = await this.gitManager.commit({ + message: cmtMessage, + amend + }); } else { committedFiles = await this.gitManager.commitAll({ message: cmtMessage, status: status2, - unstagedFiles + unstagedFiles, + amend }); } if (this.gitManager instanceof SimpleGit) { if ((await this.updateCachedStatus()).conflicted.length == 0) { - this.localStorage.setConflict("false"); + this.localStorage.setConflict(false); } } let roughly = false; @@ -43700,7 +44717,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { const file = this.app.vault.getAbstractFileByPath( f.vault_path ); - if (file instanceof import_obsidian30.TFile) { + if (file instanceof import_obsidian31.TFile) { return file.stat.size >= 1e8; } return false; @@ -43723,7 +44740,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { if (!await this.remotesAreSet()) { return false; } - const hadConflict = this.localStorage.getConflict() === "true"; + const hadConflict = this.localStorage.getConflict(); if (this.gitManager instanceof SimpleGit) await this.mayDeleteConflictFile(); let status2; @@ -43738,9 +44755,9 @@ var ObsidianGit = class extends import_obsidian30.Plugin { this.setState(6 /* conflicted */); return false; } - { - console.log("Pushing...."); - const pushedFiles = await this.gitManager.push(); + console.log("Pushing...."); + const pushedFiles = await this.gitManager.push(); + if (pushedFiles !== void 0) { console.log("Pushed!", pushedFiles); if (pushedFiles > 0) { this.displayMessage( @@ -43749,14 +44766,16 @@ var ObsidianGit = class extends import_obsidian30.Plugin { } else { this.displayMessage(`No changes to push`); } - this.offlineMode = false; - this.setState(0 /* idle */); - dispatchEvent(new CustomEvent("git-refresh")); - return true; } + this.offlineMode = false; + this.setState(0 /* idle */); + dispatchEvent(new CustomEvent("git-refresh")); + return true; } - /// Used for internals - /// Returns whether the pull added a commit or not. + /** Used for internals + Returns whether the pull added a commit or not. + + See {@link pullChangesFromRemote} for the command version. */ async pull() { if (!await this.remotesAreSet()) { return false; @@ -43769,7 +44788,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { ); this.lastPulledFiles = pulledFiles; } - return pulledFiles.length != 0; + return pulledFiles.length; } async fetch() { if (!await this.remotesAreSet()) { @@ -43786,7 +44805,8 @@ var ObsidianGit = class extends import_obsidian30.Plugin { ); if (file) { this.app.workspace.iterateAllLeaves((leaf) => { - if (leaf.view instanceof import_obsidian30.MarkdownView && leaf.view.file.path == file.path) { + var _a2; + if (leaf.view instanceof import_obsidian31.MarkdownView && ((_a2 = leaf.view.file) == null ? void 0 : _a2.path) == file.path) { leaf.detach(); } }); @@ -43885,21 +44905,35 @@ var ObsidianGit = class extends import_obsidian30.Plugin { return branch2; } } + // Ensures that the upstream branch is set. + // If not, it will prompt the user to set it. + // + // An exception is when the user has submodules enabled. + // In this case, the upstream branch is not required, + // to allow pulling/pushing only the submodules and not the outer repo. async remotesAreSet() { + if (this.settings.updateSubmodules) { + return true; + } if (!(await this.gitManager.branchInfo()).tracking) { - new import_obsidian30.Notice("No upstream branch is set. Please select one."); - const remoteBranch = await this.selectRemoteBranch(); - if (remoteBranch == void 0) { - this.displayError("Aborted. No upstream-branch is set!", 1e4); - this.setState(0 /* idle */); - return false; - } else { - await this.gitManager.updateUpstreamBranch(remoteBranch); - return true; - } + new import_obsidian31.Notice("No upstream branch is set. Please select one."); + return await this.setUpsreamBranch(); } return true; } + async setUpsreamBranch() { + const remoteBranch = await this.selectRemoteBranch(); + if (remoteBranch == void 0) { + this.displayError("Aborted. No upstream-branch is set!", 1e4); + this.setState(0 /* idle */); + return false; + } else { + await this.gitManager.updateUpstreamBranch(remoteBranch); + this.displayMessage(`Set upstream branch to ${remoteBranch}`); + this.setState(0 /* idle */); + return true; + } + } async setUpAutoBackup() { if (this.settings.setLastSaveToLastCommit) { this.clearAutoBackup(); @@ -43909,39 +44943,39 @@ var ObsidianGit = class extends import_obsidian30.Plugin { } } if (!this.timeoutIDBackup && !this.onFileModifyEventRef) { - const lastAutos = await this.loadLastAuto(); + const lastAutos = this.loadLastAuto(); if (this.settings.autoSaveInterval > 0) { const now2 = /* @__PURE__ */ new Date(); - const diff2 = this.settings.autoSaveInterval - Math.round( + const diff3 = this.settings.autoSaveInterval - Math.round( (now2.getTime() - lastAutos.backup.getTime()) / 1e3 / 60 ); - this.startAutoBackup(diff2 <= 0 ? 0 : diff2); + this.startAutoBackup(diff3 <= 0 ? 0 : diff3); } } } async setUpAutos() { this.setUpAutoBackup(); - const lastAutos = await this.loadLastAuto(); + const lastAutos = this.loadLastAuto(); if (this.settings.differentIntervalCommitAndPush && this.settings.autoPushInterval > 0) { const now2 = /* @__PURE__ */ new Date(); - const diff2 = this.settings.autoPushInterval - Math.round( + const diff3 = this.settings.autoPushInterval - Math.round( (now2.getTime() - lastAutos.push.getTime()) / 1e3 / 60 ); - this.startAutoPush(diff2 <= 0 ? 0 : diff2); + this.startAutoPush(diff3 <= 0 ? 0 : diff3); } if (this.settings.autoPullInterval > 0) { const now2 = /* @__PURE__ */ new Date(); - const diff2 = this.settings.autoPullInterval - Math.round( + const diff3 = this.settings.autoPullInterval - Math.round( (now2.getTime() - lastAutos.pull.getTime()) / 1e3 / 60 ); - this.startAutoPull(diff2 <= 0 ? 0 : diff2); + this.startAutoPull(diff3 <= 0 ? 0 : diff3); } } async discardAll() { await this.gitManager.discardAll({ status: this.cachedStatus }); - new import_obsidian30.Notice( + new import_obsidian31.Notice( "All local changes have been discarded. New files remain untouched." ); } @@ -43960,7 +44994,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { "modify", () => this.autoBackupDebouncer() ); - this.autoBackupDebouncer = (0, import_obsidian30.debounce)( + this.autoBackupDebouncer = (0, import_obsidian31.debounce)( () => this.doAutoBackup(), time, true @@ -44044,18 +45078,18 @@ var ObsidianGit = class extends import_obsidian30.Plugin { } async handleConflict(conflicted) { this.setState(6 /* conflicted */); - this.localStorage.setConflict("true"); + this.localStorage.setConflict(true); let lines; if (conflicted !== void 0) { lines = [ "# Conflicts", - "Please resolve them and commit them using the commands `Obsidian Git: Commit all changes` followed by `Obsidian Git: Push`", + "Please resolve them and commit them using the commands `Git: Commit all changes` followed by `Git: Push`", "(This file will automatically be deleted before commit)", "[[#Additional Instructions]] available below file list", "", ...conflicted.map((e) => { const file = this.app.vault.getAbstractFileByPath(e); - if (file instanceof import_obsidian30.TFile) { + if (file instanceof import_obsidian31.TFile) { const link = this.app.metadataCache.fileToLinktext( file, "/" @@ -44116,9 +45150,7 @@ I strongly recommend to use "Source mode" for viewing the conflicted files. For if (remoteName) { this.displayMessage("Fetching remote branches"); await this.gitManager.fetch(remoteName); - const branches = await this.gitManager.getRemoteBranches( - remoteName - ); + const branches = await this.gitManager.getRemoteBranches(remoteName); const branchModal = new GeneralModal({ options: branches, placeholder: "Select or create a new remote branch by typing its name and selecting it" @@ -44188,21 +45220,26 @@ I strongly recommend to use "Source mode" for viewing the conflicted files. For var _a2; (_a2 = this.statusBar) == null ? void 0 : _a2.displayMessage(message.toLowerCase(), timeout); if (!this.settings.disablePopups) { - new import_obsidian30.Notice(message, 5 * 1e3); + if (!this.settings.disablePopupsForNoChanges || !message.startsWith("No changes")) { + new import_obsidian31.Notice(message, 5 * 1e3); + } } - console.log(`git obsidian message: ${message}`); + this.log(message); } displayError(message, timeout = 10 * 1e3) { var _a2; if (message instanceof Errors.UserCanceledError) { - new import_obsidian30.Notice("Aborted"); + new import_obsidian31.Notice("Aborted"); return; } message = message.toString(); - new import_obsidian30.Notice(message, timeout); + new import_obsidian31.Notice(message, timeout); console.log(`git obsidian error: ${message}`); (_a2 = this.statusBar) == null ? void 0 : _a2.displayMessage(message.toLowerCase(), timeout); } + log(message) { + console.log(`${this.manifest.id}: ` + message); + } }; /*! Bundled license information: diff --git a/.obsidian/plugins/obsidian-git/manifest.json b/.obsidian/plugins/obsidian-git/manifest.json index a771a54..79dc19c 100644 --- a/.obsidian/plugins/obsidian-git/manifest.json +++ b/.obsidian/plugins/obsidian-git/manifest.json @@ -1,9 +1,9 @@ { "id": "obsidian-git", - "name": "Obsidian Git", + "name": "Git", "description": "Backup your vault with Git.", "isDesktopOnly": false, "fundingUrl": "https://ko-fi.com/vinzent", "js": "main.js", - "version": "2.22.0" + "version": "2.24.1" } diff --git a/.obsidian/plugins/obsidian-git/styles.css b/.obsidian/plugins/obsidian-git/styles.css index c1d5065..226dbe9 100644 --- a/.obsidian/plugins/obsidian-git/styles.css +++ b/.obsidian/plugins/obsidian-git/styles.css @@ -8,20 +8,20 @@ } } -.workspace-leaf-content[data-type='git-view'] .button-border { +.workspace-leaf-content[data-type="git-view"] .button-border { border: 2px solid var(--interactive-accent); border-radius: var(--radius-s); } -.workspace-leaf-content[data-type='git-view'] .view-content { +.workspace-leaf-content[data-type="git-view"] .view-content { padding: 0; } -.workspace-leaf-content[data-type='git-history-view'] .view-content { +.workspace-leaf-content[data-type="git-history-view"] .view-content { padding: 0; } -.loading>svg { +.loading > svg { animation: 2s linear infinite loading; transform-origin: 50% 50%; display: inline-block; @@ -77,6 +77,18 @@ height: auto; } +.git-author { + color: var(--text-accent); +} + +.git-date { + color: var(--text-accent); +} + +.git-ref { + color: var(--text-accent); +} + .workspace-leaf-content[data-type="diff-view"] .d2h-d-none { display: none; } @@ -228,12 +240,18 @@ } .theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del, -.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line del { +.theme-light + .workspace-leaf-content[data-type="diff-view"] + .d2h-code-side-line + del { background-color: #ffb6ba; } .theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del, -.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line del { +.theme-dark + .workspace-leaf-content[data-type="diff-view"] + .d2h-code-side-line + del { background-color: #8d232881; } @@ -249,13 +267,19 @@ } .theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins, -.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line ins { +.theme-light + .workspace-leaf-content[data-type="diff-view"] + .d2h-code-side-line + ins { background-color: #97f295; text-align: left; } .theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins, -.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line ins { +.theme-dark + .workspace-leaf-content[data-type="diff-view"] + .d2h-code-side-line + ins { background-color: #1d921996; text-align: left; } @@ -376,19 +400,31 @@ color: var(--text-normal); } -.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-file-diff .d2h-del.d2h-change { +.theme-light + .workspace-leaf-content[data-type="diff-view"] + .d2h-file-diff + .d2h-del.d2h-change { background-color: #fdf2d0; } -.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-file-diff .d2h-del.d2h-change { +.theme-dark + .workspace-leaf-content[data-type="diff-view"] + .d2h-file-diff + .d2h-del.d2h-change { background-color: #55492480; } -.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-file-diff .d2h-ins.d2h-change { +.theme-light + .workspace-leaf-content[data-type="diff-view"] + .d2h-file-diff + .d2h-ins.d2h-change { background-color: #ded; } -.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-file-diff .d2h-ins.d2h-change { +.theme-dark + .workspace-leaf-content[data-type="diff-view"] + .d2h-file-diff + .d2h-ins.d2h-change { background-color: rgba(37, 78, 37, 0.418); } @@ -401,7 +437,9 @@ text-decoration: none; } -.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper a:visited { +.workspace-leaf-content[data-type="diff-view"] + .d2h-file-list-wrapper + a:visited { color: #3572b0; } @@ -427,13 +465,13 @@ padding: 0; } -.workspace-leaf-content[data-type="diff-view"] .d2h-file-list>li { +.workspace-leaf-content[data-type="diff-view"] .d2h-file-list > li { border-bottom: 1px solid var(--background-modifier-border); margin: 0; padding: 5px 10px; } -.workspace-leaf-content[data-type="diff-view"] .d2h-file-list>li:last-child { +.workspace-leaf-content[data-type="diff-view"] .d2h-file-list > li:last-child { border-bottom: none; } @@ -501,9 +539,10 @@ background-color: var(--background-secondary); } -.cm-gutterElement.obs-git-blame-gutter > div, .line-author-settings-preview { +.cm-gutterElement.obs-git-blame-gutter > div, +.line-author-settings-preview { /* delegate text color to settings */ - color: var(--obs-git-gutter-text); + color: var(--obs-git-gutter-text); font-family: monospace; height: 100%; /* ensure, that age-based background color occupies entire parent */ text-align: right; diff --git a/.obsidian/plugins/obsidian-linter/main.js b/.obsidian/plugins/obsidian-linter/main.js index adce9de..0c97db3 100644 --- a/.obsidian/plugins/obsidian-linter/main.js +++ b/.obsidian/plugins/obsidian-linter/main.js @@ -3,118 +3,158 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD if you want to view the source, please visit the github repository of this plugin */ -var Qp=Object.create;var Sn=Object.defineProperty;var Xl=Object.getOwnPropertyDescriptor;var Zp=Object.getOwnPropertyNames;var Jp=Object.getPrototypeOf,Xp=Object.prototype.hasOwnProperty;var ca=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),ec=(e,t)=>{for(var i in t)Sn(e,i,{get:t[i],enumerable:!0})},ic=(e,t,i,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Zp(t))!Xp.call(e,r)&&r!==i&&Sn(e,r,{get:()=>t[r],enumerable:!(n=Xl(t,r))||n.enumerable});return e};var da=(e,t,i)=>(i=e!=null?Qp(Jp(e)):{},ic(t||!e||!e.__esModule?Sn(i,"default",{value:e,enumerable:!0}):i,e)),em=e=>ic(Sn({},"__esModule",{value:!0}),e),A=(e,t,i,n)=>{for(var r=n>1?void 0:n?Xl(t,i):t,a=e.length-1,s;a>=0;a--)(s=e[a])&&(r=(n?s(t,i,r):s(r))||r);return n&&r&&Sn(t,i,r),r};var tc=(e,t,i)=>{if(!t.has(e))throw TypeError("Cannot "+i)};var Ve=(e,t,i)=>(tc(e,t,"read from private field"),i?i.call(e):t.get(e)),Yt=(e,t,i)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,i)},nc=(e,t,i,n)=>(tc(e,t,"write to private field"),n?n.call(e,i):t.set(e,i),i);var xo=ca((Vc,ya)=>{(function(e,t){"use strict";typeof define=="function"&&define.amd?define(t):typeof ya=="object"&&ya.exports?ya.exports=t():e.log=t()})(Vc,function(){"use strict";var e=function(){},t="undefined",i=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),n=["trace","debug","info","warn","error"];function r(h,x){var b=h[x];if(typeof b.bind=="function")return b.bind(h);try{return Function.prototype.bind.call(b,h)}catch{return function(){return Function.prototype.apply.apply(b,[h,arguments])}}}function a(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function s(h){return h==="debug"&&(h="log"),typeof console===t?!1:h==="trace"&&i?a:console[h]!==void 0?r(console,h):console.log!==void 0?r(console,"log"):e}function o(h,x){for(var b=0;b<n.length;b++){var v=n[b];this[v]=b<h?e:this.methodFactory(v,h,x)}this.log=this.debug}function l(h,x,b){return function(){typeof console!==t&&(o.call(this,x,b),this[h].apply(this,arguments))}}function d(h,x,b){return s(h)||l.apply(this,arguments)}function c(h,x,b){var v=this,S;x=x??"WARN";var L="loglevel";typeof h=="string"?L+=":"+h:typeof h=="symbol"&&(L=void 0);function M(q){var D=(n[q]||"silent").toUpperCase();if(!(typeof window===t||!L)){try{window.localStorage[L]=D;return}catch{}try{window.document.cookie=encodeURIComponent(L)+"="+D+";"}catch{}}}function B(){var q;if(!(typeof window===t||!L)){try{q=window.localStorage[L]}catch{}if(typeof q===t)try{var D=window.document.cookie,H=D.indexOf(encodeURIComponent(L)+"=");H!==-1&&(q=/^([^;]+)/.exec(D.slice(H))[1])}catch{}return v.levels[q]===void 0&&(q=void 0),q}}function T(){if(!(typeof window===t||!L)){try{window.localStorage.removeItem(L);return}catch{}try{window.document.cookie=encodeURIComponent(L)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch{}}}v.name=h,v.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},v.methodFactory=b||d,v.getLevel=function(){return S},v.setLevel=function(q,D){if(typeof q=="string"&&v.levels[q.toUpperCase()]!==void 0&&(q=v.levels[q.toUpperCase()]),typeof q=="number"&&q>=0&&q<=v.levels.SILENT){if(S=q,D!==!1&&M(q),o.call(v,q,h),typeof console===t&&q<v.levels.SILENT)return"No console available for logging"}else throw"log.setLevel() called with invalid level: "+q},v.setDefaultLevel=function(q){x=q,B()||v.setLevel(q,!1)},v.resetLevel=function(){v.setLevel(x,!1),T()},v.enableAll=function(q){v.setLevel(v.levels.TRACE,q)},v.disableAll=function(q){v.setLevel(v.levels.SILENT,q)};var _=B();_==null&&(_=x),v.setLevel(_,!1)}var u=new c,m={};u.getLogger=function(x){if(typeof x!="symbol"&&typeof x!="string"||x==="")throw new TypeError("You must supply a name when creating a logger.");var b=m[x];return b||(b=m[x]=new c(x,u.getLevel(),u.methodFactory)),b};var g=typeof window!==t?window.log:void 0;return u.noConflict=function(){return typeof window!==t&&window.log===u&&(window.log=g),u},u.getLoggers=function(){return m},u.default=u,u})});var np=ca((OT,sn)=>{var C=function(){this.Diff_Timeout=1,this.Diff_EditCost=4,this.Match_Threshold=.5,this.Match_Distance=1e3,this.Patch_DeleteThreshold=.5,this.Patch_Margin=4,this.Match_MaxBits=32},ee=-1,te=1,W=0;C.Diff=function(e,t){return[e,t]};C.prototype.diff_main=function(e,t,i,n){typeof n>"u"&&(this.Diff_Timeout<=0?n=Number.MAX_VALUE:n=new Date().getTime()+this.Diff_Timeout*1e3);var r=n;if(e==null||t==null)throw new Error("Null input. (diff_main)");if(e==t)return e?[new C.Diff(W,e)]:[];typeof i>"u"&&(i=!0);var a=i,s=this.diff_commonPrefix(e,t),o=e.substring(0,s);e=e.substring(s),t=t.substring(s),s=this.diff_commonSuffix(e,t);var l=e.substring(e.length-s);e=e.substring(0,e.length-s),t=t.substring(0,t.length-s);var d=this.diff_compute_(e,t,a,r);return o&&d.unshift(new C.Diff(W,o)),l&&d.push(new C.Diff(W,l)),this.diff_cleanupMerge(d),d};C.prototype.diff_compute_=function(e,t,i,n){var r;if(!e)return[new C.Diff(te,t)];if(!t)return[new C.Diff(ee,e)];var a=e.length>t.length?e:t,s=e.length>t.length?t:e,o=a.indexOf(s);if(o!=-1)return r=[new C.Diff(te,a.substring(0,o)),new C.Diff(W,s),new C.Diff(te,a.substring(o+s.length))],e.length>t.length&&(r[0][0]=r[2][0]=ee),r;if(s.length==1)return[new C.Diff(ee,e),new C.Diff(te,t)];var l=this.diff_halfMatch_(e,t);if(l){var d=l[0],c=l[1],u=l[2],m=l[3],g=l[4],h=this.diff_main(d,u,i,n),x=this.diff_main(c,m,i,n);return h.concat([new C.Diff(W,g)],x)}return i&&e.length>100&&t.length>100?this.diff_lineMode_(e,t,n):this.diff_bisect_(e,t,n)};C.prototype.diff_lineMode_=function(e,t,i){var n=this.diff_linesToChars_(e,t);e=n.chars1,t=n.chars2;var r=n.lineArray,a=this.diff_main(e,t,!1,i);this.diff_charsToLines_(a,r),this.diff_cleanupSemantic(a),a.push(new C.Diff(W,""));for(var s=0,o=0,l=0,d="",c="";s<a.length;){switch(a[s][0]){case te:l++,c+=a[s][1];break;case ee:o++,d+=a[s][1];break;case W:if(o>=1&&l>=1){a.splice(s-o-l,o+l),s=s-o-l;for(var u=this.diff_main(d,c,!1,i),m=u.length-1;m>=0;m--)a.splice(s,0,u[m]);s=s+u.length}l=0,o=0,d="",c="";break}s++}return a.pop(),a};C.prototype.diff_bisect_=function(e,t,i){for(var n=e.length,r=t.length,a=Math.ceil((n+r)/2),s=a,o=2*a,l=new Array(o),d=new Array(o),c=0;c<o;c++)l[c]=-1,d[c]=-1;l[s+1]=0,d[s+1]=0;for(var u=n-r,m=u%2!=0,g=0,h=0,x=0,b=0,v=0;v<a&&!(new Date().getTime()>i);v++){for(var S=-v+g;S<=v-h;S+=2){var L=s+S,M;S==-v||S!=v&&l[L-1]<l[L+1]?M=l[L+1]:M=l[L-1]+1;for(var B=M-S;M<n&&B<r&&e.charAt(M)==t.charAt(B);)M++,B++;if(l[L]=M,M>n)h+=2;else if(B>r)g+=2;else if(m){var T=s+u-S;if(T>=0&&T<o&&d[T]!=-1){var _=n-d[T];if(M>=_)return this.diff_bisectSplit_(e,t,M,B,i)}}}for(var q=-v+x;q<=v-b;q+=2){var T=s+q,_;q==-v||q!=v&&d[T-1]<d[T+1]?_=d[T+1]:_=d[T-1]+1;for(var D=_-q;_<n&&D<r&&e.charAt(n-_-1)==t.charAt(r-D-1);)_++,D++;if(d[T]=_,_>n)b+=2;else if(D>r)x+=2;else if(!m){var L=s+u-q;if(L>=0&&L<o&&l[L]!=-1){var M=l[L],B=s+M-L;if(_=n-_,M>=_)return this.diff_bisectSplit_(e,t,M,B,i)}}}}return[new C.Diff(ee,e),new C.Diff(te,t)]};C.prototype.diff_bisectSplit_=function(e,t,i,n,r){var a=e.substring(0,i),s=t.substring(0,n),o=e.substring(i),l=t.substring(n),d=this.diff_main(a,s,!1,r),c=this.diff_main(o,l,!1,r);return d.concat(c)};C.prototype.diff_linesToChars_=function(e,t){var i=[],n={};i[0]="";function r(l){for(var d="",c=0,u=-1,m=i.length;u<l.length-1;){u=l.indexOf(` -`,c),u==-1&&(u=l.length-1);var g=l.substring(c,u+1);(n.hasOwnProperty?n.hasOwnProperty(g):n[g]!==void 0)?d+=String.fromCharCode(n[g]):(m==a&&(g=l.substring(c),u=l.length),d+=String.fromCharCode(m),n[g]=m,i[m++]=g),c=u+1}return d}var a=4e4,s=r(e);a=65535;var o=r(t);return{chars1:s,chars2:o,lineArray:i}};C.prototype.diff_charsToLines_=function(e,t){for(var i=0;i<e.length;i++){for(var n=e[i][1],r=[],a=0;a<n.length;a++)r[a]=t[n.charCodeAt(a)];e[i][1]=r.join("")}};C.prototype.diff_commonPrefix=function(e,t){if(!e||!t||e.charAt(0)!=t.charAt(0))return 0;for(var i=0,n=Math.min(e.length,t.length),r=n,a=0;i<r;)e.substring(a,r)==t.substring(a,r)?(i=r,a=i):n=r,r=Math.floor((n-i)/2+i);return r};C.prototype.diff_commonSuffix=function(e,t){if(!e||!t||e.charAt(e.length-1)!=t.charAt(t.length-1))return 0;for(var i=0,n=Math.min(e.length,t.length),r=n,a=0;i<r;)e.substring(e.length-r,e.length-a)==t.substring(t.length-r,t.length-a)?(i=r,a=i):n=r,r=Math.floor((n-i)/2+i);return r};C.prototype.diff_commonOverlap_=function(e,t){var i=e.length,n=t.length;if(i==0||n==0)return 0;i>n?e=e.substring(i-n):i<n&&(t=t.substring(0,i));var r=Math.min(i,n);if(e==t)return r;for(var a=0,s=1;;){var o=e.substring(r-s),l=t.indexOf(o);if(l==-1)return a;s+=l,(l==0||e.substring(r-s)==t.substring(0,s))&&(a=s,s++)}};C.prototype.diff_halfMatch_=function(e,t){if(this.Diff_Timeout<=0)return null;var i=e.length>t.length?e:t,n=e.length>t.length?t:e;if(i.length<4||n.length*2<i.length)return null;var r=this;function a(h,x,b){for(var v=h.substring(b,b+Math.floor(h.length/4)),S=-1,L="",M,B,T,_;(S=x.indexOf(v,S+1))!=-1;){var q=r.diff_commonPrefix(h.substring(b),x.substring(S)),D=r.diff_commonSuffix(h.substring(0,b),x.substring(0,S));L.length<D+q&&(L=x.substring(S-D,S)+x.substring(S,S+q),M=h.substring(0,b-D),B=h.substring(b+q),T=x.substring(0,S-D),_=x.substring(S+q))}return L.length*2>=h.length?[M,B,T,_,L]:null}var s=a(i,n,Math.ceil(i.length/4)),o=a(i,n,Math.ceil(i.length/2)),l;if(!s&&!o)return null;o?s?l=s[4].length>o[4].length?s:o:l=o:l=s;var d,c,u,m;e.length>t.length?(d=l[0],c=l[1],u=l[2],m=l[3]):(u=l[0],m=l[1],d=l[2],c=l[3]);var g=l[4];return[d,c,u,m,g]};C.prototype.diff_cleanupSemantic=function(e){for(var t=!1,i=[],n=0,r=null,a=0,s=0,o=0,l=0,d=0;a<e.length;)e[a][0]==W?(i[n++]=a,s=l,o=d,l=0,d=0,r=e[a][1]):(e[a][0]==te?l+=e[a][1].length:d+=e[a][1].length,r&&r.length<=Math.max(s,o)&&r.length<=Math.max(l,d)&&(e.splice(i[n-1],0,new C.Diff(ee,r)),e[i[n-1]+1][0]=te,n--,n--,a=n>0?i[n-1]:-1,s=0,o=0,l=0,d=0,r=null,t=!0)),a++;for(t&&this.diff_cleanupMerge(e),this.diff_cleanupSemanticLossless(e),a=1;a<e.length;){if(e[a-1][0]==ee&&e[a][0]==te){var c=e[a-1][1],u=e[a][1],m=this.diff_commonOverlap_(c,u),g=this.diff_commonOverlap_(u,c);m>=g?(m>=c.length/2||m>=u.length/2)&&(e.splice(a,0,new C.Diff(W,u.substring(0,m))),e[a-1][1]=c.substring(0,c.length-m),e[a+1][1]=u.substring(m),a++):(g>=c.length/2||g>=u.length/2)&&(e.splice(a,0,new C.Diff(W,c.substring(0,g))),e[a-1][0]=te,e[a-1][1]=u.substring(0,u.length-g),e[a+1][0]=ee,e[a+1][1]=c.substring(g),a++),a++}a++}};C.prototype.diff_cleanupSemanticLossless=function(e){function t(g,h){if(!g||!h)return 6;var x=g.charAt(g.length-1),b=h.charAt(0),v=x.match(C.nonAlphaNumericRegex_),S=b.match(C.nonAlphaNumericRegex_),L=v&&x.match(C.whitespaceRegex_),M=S&&b.match(C.whitespaceRegex_),B=L&&x.match(C.linebreakRegex_),T=M&&b.match(C.linebreakRegex_),_=B&&g.match(C.blanklineEndRegex_),q=T&&h.match(C.blanklineStartRegex_);return _||q?5:B||T?4:v&&!L&&M?3:L||M?2:v||S?1:0}for(var i=1;i<e.length-1;){if(e[i-1][0]==W&&e[i+1][0]==W){var n=e[i-1][1],r=e[i][1],a=e[i+1][1],s=this.diff_commonSuffix(n,r);if(s){var o=r.substring(r.length-s);n=n.substring(0,n.length-s),r=o+r.substring(0,r.length-s),a=o+a}for(var l=n,d=r,c=a,u=t(n,r)+t(r,a);r.charAt(0)===a.charAt(0);){n+=r.charAt(0),r=r.substring(1)+a.charAt(0),a=a.substring(1);var m=t(n,r)+t(r,a);m>=u&&(u=m,l=n,d=r,c=a)}e[i-1][1]!=l&&(l?e[i-1][1]=l:(e.splice(i-1,1),i--),e[i][1]=d,c?e[i+1][1]=c:(e.splice(i+1,1),i--))}i++}};C.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;C.whitespaceRegex_=/\s/;C.linebreakRegex_=/[\r\n]/;C.blanklineEndRegex_=/\n\r?\n$/;C.blanklineStartRegex_=/^\r?\n\r?\n/;C.prototype.diff_cleanupEfficiency=function(e){for(var t=!1,i=[],n=0,r=null,a=0,s=!1,o=!1,l=!1,d=!1;a<e.length;)e[a][0]==W?(e[a][1].length<this.Diff_EditCost&&(l||d)?(i[n++]=a,s=l,o=d,r=e[a][1]):(n=0,r=null),l=d=!1):(e[a][0]==ee?d=!0:l=!0,r&&(s&&o&&l&&d||r.length<this.Diff_EditCost/2&&s+o+l+d==3)&&(e.splice(i[n-1],0,new C.Diff(ee,r)),e[i[n-1]+1][0]=te,n--,r=null,s&&o?(l=d=!0,n=0):(n--,a=n>0?i[n-1]:-1,l=d=!1),t=!0)),a++;t&&this.diff_cleanupMerge(e)};C.prototype.diff_cleanupMerge=function(e){e.push(new C.Diff(W,""));for(var t=0,i=0,n=0,r="",a="",s;t<e.length;)switch(e[t][0]){case te:n++,a+=e[t][1],t++;break;case ee:i++,r+=e[t][1],t++;break;case W:i+n>1?(i!==0&&n!==0&&(s=this.diff_commonPrefix(a,r),s!==0&&(t-i-n>0&&e[t-i-n-1][0]==W?e[t-i-n-1][1]+=a.substring(0,s):(e.splice(0,0,new C.Diff(W,a.substring(0,s))),t++),a=a.substring(s),r=r.substring(s)),s=this.diff_commonSuffix(a,r),s!==0&&(e[t][1]=a.substring(a.length-s)+e[t][1],a=a.substring(0,a.length-s),r=r.substring(0,r.length-s))),t-=i+n,e.splice(t,i+n),r.length&&(e.splice(t,0,new C.Diff(ee,r)),t++),a.length&&(e.splice(t,0,new C.Diff(te,a)),t++),t++):t!==0&&e[t-1][0]==W?(e[t-1][1]+=e[t][1],e.splice(t,1)):t++,n=0,i=0,r="",a="";break}e[e.length-1][1]===""&&e.pop();var o=!1;for(t=1;t<e.length-1;)e[t-1][0]==W&&e[t+1][0]==W&&(e[t][1].substring(e[t][1].length-e[t-1][1].length)==e[t-1][1]?(e[t][1]=e[t-1][1]+e[t][1].substring(0,e[t][1].length-e[t-1][1].length),e[t+1][1]=e[t-1][1]+e[t+1][1],e.splice(t-1,1),o=!0):e[t][1].substring(0,e[t+1][1].length)==e[t+1][1]&&(e[t-1][1]+=e[t+1][1],e[t][1]=e[t][1].substring(e[t+1][1].length)+e[t+1][1],e.splice(t+1,1),o=!0)),t++;o&&this.diff_cleanupMerge(e)};C.prototype.diff_xIndex=function(e,t){var i=0,n=0,r=0,a=0,s;for(s=0;s<e.length&&(e[s][0]!==te&&(i+=e[s][1].length),e[s][0]!==ee&&(n+=e[s][1].length),!(i>t));s++)r=i,a=n;return e.length!=s&&e[s][0]===ee?a:a+(t-r)};C.prototype.diff_prettyHtml=function(e){for(var t=[],i=/&/g,n=/</g,r=/>/g,a=/\n/g,s=0;s<e.length;s++){var o=e[s][0],l=e[s][1],d=l.replace(i,"&").replace(n,"<").replace(r,">").replace(a,"¶<br>");switch(o){case te:t[s]='<ins style="background:#e6ffe6;">'+d+"</ins>";break;case ee:t[s]='<del style="background:#ffe6e6;">'+d+"</del>";break;case W:t[s]="<span>"+d+"</span>";break}}return t.join("")};C.prototype.diff_text1=function(e){for(var t=[],i=0;i<e.length;i++)e[i][0]!==te&&(t[i]=e[i][1]);return t.join("")};C.prototype.diff_text2=function(e){for(var t=[],i=0;i<e.length;i++)e[i][0]!==ee&&(t[i]=e[i][1]);return t.join("")};C.prototype.diff_levenshtein=function(e){for(var t=0,i=0,n=0,r=0;r<e.length;r++){var a=e[r][0],s=e[r][1];switch(a){case te:i+=s.length;break;case ee:n+=s.length;break;case W:t+=Math.max(i,n),i=0,n=0;break}}return t+=Math.max(i,n),t};C.prototype.diff_toDelta=function(e){for(var t=[],i=0;i<e.length;i++)switch(e[i][0]){case te:t[i]="+"+encodeURI(e[i][1]);break;case ee:t[i]="-"+e[i][1].length;break;case W:t[i]="="+e[i][1].length;break}return t.join(" ").replace(/%20/g," ")};C.prototype.diff_fromDelta=function(e,t){for(var i=[],n=0,r=0,a=t.split(/\t/g),s=0;s<a.length;s++){var o=a[s].substring(1);switch(a[s].charAt(0)){case"+":try{i[n++]=new C.Diff(te,decodeURI(o))}catch{throw new Error("Illegal escape in diff_fromDelta: "+o)}break;case"-":case"=":var l=parseInt(o,10);if(isNaN(l)||l<0)throw new Error("Invalid number in diff_fromDelta: "+o);var d=e.substring(r,r+=l);a[s].charAt(0)=="="?i[n++]=new C.Diff(W,d):i[n++]=new C.Diff(ee,d);break;default:if(a[s])throw new Error("Invalid diff operation in diff_fromDelta: "+a[s])}}if(r!=e.length)throw new Error("Delta length ("+r+") does not equal source text length ("+e.length+").");return i};C.prototype.match_main=function(e,t,i){if(e==null||t==null||i==null)throw new Error("Null input. (match_main)");return i=Math.max(0,Math.min(i,e.length)),e==t?0:e.length?e.substring(i,i+t.length)==t?i:this.match_bitap_(e,t,i):-1};C.prototype.match_bitap_=function(e,t,i){if(t.length>this.Match_MaxBits)throw new Error("Pattern too long for this browser.");var n=this.match_alphabet_(t),r=this;function a(M,B){var T=M/t.length,_=Math.abs(i-B);return r.Match_Distance?T+_/r.Match_Distance:_?1:T}var s=this.Match_Threshold,o=e.indexOf(t,i);o!=-1&&(s=Math.min(a(0,o),s),o=e.lastIndexOf(t,i+t.length),o!=-1&&(s=Math.min(a(0,o),s)));var l=1<<t.length-1;o=-1;for(var d,c,u=t.length+e.length,m,g=0;g<t.length;g++){for(d=0,c=u;d<c;)a(g,i+c)<=s?d=c:u=c,c=Math.floor((u-d)/2+d);u=c;var h=Math.max(1,i-c+1),x=Math.min(i+c,e.length)+t.length,b=Array(x+2);b[x+1]=(1<<g)-1;for(var v=x;v>=h;v--){var S=n[e.charAt(v-1)];if(g===0?b[v]=(b[v+1]<<1|1)&S:b[v]=(b[v+1]<<1|1)&S|((m[v+1]|m[v])<<1|1)|m[v+1],b[v]&l){var L=a(g,v-1);if(L<=s)if(s=L,o=v-1,o>i)h=Math.max(1,2*i-o);else break}}if(a(g+1,i)>s)break;m=b}return o};C.prototype.match_alphabet_=function(e){for(var t={},i=0;i<e.length;i++)t[e.charAt(i)]=0;for(var i=0;i<e.length;i++)t[e.charAt(i)]|=1<<e.length-i-1;return t};C.prototype.patch_addContext_=function(e,t){if(t.length!=0){if(e.start2===null)throw Error("patch not initialized");for(var i=t.substring(e.start2,e.start2+e.length1),n=0;t.indexOf(i)!=t.lastIndexOf(i)&&i.length<this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)n+=this.Patch_Margin,i=t.substring(e.start2-n,e.start2+e.length1+n);n+=this.Patch_Margin;var r=t.substring(e.start2-n,e.start2);r&&e.diffs.unshift(new C.Diff(W,r));var a=t.substring(e.start2+e.length1,e.start2+e.length1+n);a&&e.diffs.push(new C.Diff(W,a)),e.start1-=r.length,e.start2-=r.length,e.length1+=r.length+a.length,e.length2+=r.length+a.length}};C.prototype.patch_make=function(e,t,i){var n,r;if(typeof e=="string"&&typeof t=="string"&&typeof i>"u")n=e,r=this.diff_main(n,t,!0),r.length>2&&(this.diff_cleanupSemantic(r),this.diff_cleanupEfficiency(r));else if(e&&typeof e=="object"&&typeof t>"u"&&typeof i>"u")r=e,n=this.diff_text1(r);else if(typeof e=="string"&&t&&typeof t=="object"&&typeof i>"u")n=e,r=t;else if(typeof e=="string"&&typeof t=="string"&&i&&typeof i=="object")n=e,r=i;else throw new Error("Unknown call format to patch_make.");if(r.length===0)return[];for(var a=[],s=new C.patch_obj,o=0,l=0,d=0,c=n,u=n,m=0;m<r.length;m++){var g=r[m][0],h=r[m][1];switch(!o&&g!==W&&(s.start1=l,s.start2=d),g){case te:s.diffs[o++]=r[m],s.length2+=h.length,u=u.substring(0,d)+h+u.substring(d);break;case ee:s.length1+=h.length,s.diffs[o++]=r[m],u=u.substring(0,d)+u.substring(d+h.length);break;case W:h.length<=2*this.Patch_Margin&&o&&r.length!=m+1?(s.diffs[o++]=r[m],s.length1+=h.length,s.length2+=h.length):h.length>=2*this.Patch_Margin&&o&&(this.patch_addContext_(s,c),a.push(s),s=new C.patch_obj,o=0,c=u,l=d);break}g!==te&&(l+=h.length),g!==ee&&(d+=h.length)}return o&&(this.patch_addContext_(s,c),a.push(s)),a};C.prototype.patch_deepCopy=function(e){for(var t=[],i=0;i<e.length;i++){var n=e[i],r=new C.patch_obj;r.diffs=[];for(var a=0;a<n.diffs.length;a++)r.diffs[a]=new C.Diff(n.diffs[a][0],n.diffs[a][1]);r.start1=n.start1,r.start2=n.start2,r.length1=n.length1,r.length2=n.length2,t[i]=r}return t};C.prototype.patch_apply=function(e,t){if(e.length==0)return[t,[]];e=this.patch_deepCopy(e);var i=this.patch_addPadding(e);t=i+t+i,this.patch_splitMax(e);for(var n=0,r=[],a=0;a<e.length;a++){var s=e[a].start2+n,o=this.diff_text1(e[a].diffs),l,d=-1;if(o.length>this.Match_MaxBits?(l=this.match_main(t,o.substring(0,this.Match_MaxBits),s),l!=-1&&(d=this.match_main(t,o.substring(o.length-this.Match_MaxBits),s+o.length-this.Match_MaxBits),(d==-1||l>=d)&&(l=-1))):l=this.match_main(t,o,s),l==-1)r[a]=!1,n-=e[a].length2-e[a].length1;else{r[a]=!0,n=l-s;var c;if(d==-1?c=t.substring(l,l+o.length):c=t.substring(l,d+this.Match_MaxBits),o==c)t=t.substring(0,l)+this.diff_text2(e[a].diffs)+t.substring(l+o.length);else{var u=this.diff_main(o,c,!1);if(o.length>this.Match_MaxBits&&this.diff_levenshtein(u)/o.length>this.Patch_DeleteThreshold)r[a]=!1;else{this.diff_cleanupSemanticLossless(u);for(var m=0,g,h=0;h<e[a].diffs.length;h++){var x=e[a].diffs[h];x[0]!==W&&(g=this.diff_xIndex(u,m)),x[0]===te?t=t.substring(0,l+g)+x[1]+t.substring(l+g):x[0]===ee&&(t=t.substring(0,l+g)+t.substring(l+this.diff_xIndex(u,m+x[1].length))),x[0]!==ee&&(m+=x[1].length)}}}}}return t=t.substring(i.length,t.length-i.length),[t,r]};C.prototype.patch_addPadding=function(e){for(var t=this.Patch_Margin,i="",n=1;n<=t;n++)i+=String.fromCharCode(n);for(var n=0;n<e.length;n++)e[n].start1+=t,e[n].start2+=t;var r=e[0],a=r.diffs;if(a.length==0||a[0][0]!=W)a.unshift(new C.Diff(W,i)),r.start1-=t,r.start2-=t,r.length1+=t,r.length2+=t;else if(t>a[0][1].length){var s=t-a[0][1].length;a[0][1]=i.substring(a[0][1].length)+a[0][1],r.start1-=s,r.start2-=s,r.length1+=s,r.length2+=s}if(r=e[e.length-1],a=r.diffs,a.length==0||a[a.length-1][0]!=W)a.push(new C.Diff(W,i)),r.length1+=t,r.length2+=t;else if(t>a[a.length-1][1].length){var s=t-a[a.length-1][1].length;a[a.length-1][1]+=i.substring(0,s),r.length1+=s,r.length2+=s}return i};C.prototype.patch_splitMax=function(e){for(var t=this.Match_MaxBits,i=0;i<e.length;i++)if(!(e[i].length1<=t)){var n=e[i];e.splice(i--,1);for(var r=n.start1,a=n.start2,s="";n.diffs.length!==0;){var o=new C.patch_obj,l=!0;for(o.start1=r-s.length,o.start2=a-s.length,s!==""&&(o.length1=o.length2=s.length,o.diffs.push(new C.Diff(W,s)));n.diffs.length!==0&&o.length1<t-this.Patch_Margin;){var d=n.diffs[0][0],c=n.diffs[0][1];d===te?(o.length2+=c.length,a+=c.length,o.diffs.push(n.diffs.shift()),l=!1):d===ee&&o.diffs.length==1&&o.diffs[0][0]==W&&c.length>2*t?(o.length1+=c.length,r+=c.length,l=!1,o.diffs.push(new C.Diff(d,c)),n.diffs.shift()):(c=c.substring(0,t-o.length1-this.Patch_Margin),o.length1+=c.length,r+=c.length,d===W?(o.length2+=c.length,a+=c.length):l=!1,o.diffs.push(new C.Diff(d,c)),c==n.diffs[0][1]?n.diffs.shift():n.diffs[0][1]=n.diffs[0][1].substring(c.length))}s=this.diff_text2(o.diffs),s=s.substring(s.length-this.Patch_Margin);var u=this.diff_text1(n.diffs).substring(0,this.Patch_Margin);u!==""&&(o.length1+=u.length,o.length2+=u.length,o.diffs.length!==0&&o.diffs[o.diffs.length-1][0]===W?o.diffs[o.diffs.length-1][1]+=u:o.diffs.push(new C.Diff(W,u))),l||e.splice(++i,0,o)}}};C.prototype.patch_toText=function(e){for(var t=[],i=0;i<e.length;i++)t[i]=e[i];return t.join("")};C.prototype.patch_fromText=function(e){var t=[];if(!e)return t;for(var i=e.split(` -`),n=0,r=/^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/;n<i.length;){var a=i[n].match(r);if(!a)throw new Error("Invalid patch string: "+i[n]);var s=new C.patch_obj;for(t.push(s),s.start1=parseInt(a[1],10),a[2]===""?(s.start1--,s.length1=1):a[2]=="0"?s.length1=0:(s.start1--,s.length1=parseInt(a[2],10)),s.start2=parseInt(a[3],10),a[4]===""?(s.start2--,s.length2=1):a[4]=="0"?s.length2=0:(s.start2--,s.length2=parseInt(a[4],10)),n++;n<i.length;){var o=i[n].charAt(0);try{var l=decodeURI(i[n].substring(1))}catch{throw new Error("Illegal escape in patch_fromText: "+l)}if(o=="-")s.diffs.push(new C.Diff(ee,l));else if(o=="+")s.diffs.push(new C.Diff(te,l));else if(o==" ")s.diffs.push(new C.Diff(W,l));else{if(o=="@")break;if(o!=="")throw new Error('Invalid patch mode "'+o+'" in: '+l)}n++}}return t};C.patch_obj=function(){this.diffs=[],this.start1=null,this.start2=null,this.length1=0,this.length2=0};C.patch_obj.prototype.toString=function(){var e,t;this.length1===0?e=this.start1+",0":this.length1==1?e=this.start1+1:e=this.start1+1+","+this.length1,this.length2===0?t=this.start2+",0":this.length2==1?t=this.start2+1:t=this.start2+1+","+this.length2;for(var i=["@@ -"+e+" +"+t+` @@ -`],n,r=0;r<this.diffs.length;r++){switch(this.diffs[r][0]){case te:n="+";break;case ee:n="-";break;case W:n=" ";break}i[r+1]=n+encodeURI(this.diffs[r][1])+` -`}return i.join("").replace(/%20/g," ")};sn.exports=C;sn.exports.diff_match_patch=C;sn.exports.DIFF_DELETE=ee;sn.exports.DIFF_INSERT=te;sn.exports.DIFF_EQUAL=W});var dp=ca((ZI,cp)=>{cp.exports=rx;var ev=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],iv=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],tv=["Su","Mo","Tu","We","Th","Fr","Sa"],Cs=["January","February","March","April","May","June","July","August","September","October","November","December"],nv=["ACDT","ACST","ACWT","ADT","ACT","AEDT","AEST","AFT","AKDT","AKST","ALMT","AMT","AMST","ANAT","ANAST","AQTT","ART","AST","AWDT","AWST","AZOT","AZOST","AZT","AZST","BNT","BDT","BOT","BRT","BRST","BST","BTT","B","CAST","CAT","CCT","CDT","CEDT","CEST","CET","CHADT","CHAST","CHOT","CHOST","CHsT","CHUT","CIT","CKT","CLST","CLT","COT","CST","CVT","CWST","CXT","C","DAVT","DDUT","DST","EASST","EAST","EAT","ECT","EDT","EEDT","EEST","EET","EGT","EGST","EST","E","EIT","FET","FJT","FJST","FKST","FKT","FNT","F","GALT","GAMT","GET","GFT","GILT","GMT","GST","GYT","G","HADT","HAST","HKT","HOVT","HOVST","HST","ICT","IDT","IOT","IRDT","IRKT","IRKST","IRST","IST","JST","KGT","KOST","KRAT","KRAST","KST","KUYT","LHDT","LHST","LINT","L","MAGT","MAGST","MART","MAWT","MDT","MeST","MHT","MIST","MMT","MSD","MSK","MST","MUT","MVT","MYT","NCT","NDT","NFT","N","NOVT","NOVST","NPT","NRT","NST","NT","NUT","NZDT","NZST","OMST","OMSST","ORAT","O","PDT","PET","PETT","PETST","PGT","PHT","PHOT","PKT","PMDT","PMST","PONT","PST","PWT","PYT","PYST","P","QYZT","RET","ROTT","R","SAKT","SAMT","SAST","SBT","SCT","SGT","SRT","SLT","SLST","SRET","SST","SYOT","TAHT","TFT","TJT","TKT","TLT","TMT","TOT","TRUT","TVT","T","ULAT","ULAST","UTC","UYST","UYT","UZT","U","VET","VLAT","VLAST","VOLT","VUT","V","WAKT","WAT","WAST","WDT","WEDT","WEST","WET","WFT","WGT","WGST","WIB","WIT","WITA","WST","WT","YAKT","YAKST","YAP","YEK","YEKS"],Ms=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],rv=new RegExp(ev.join("|"),"i"),av=new RegExp(iv.join("|"),"i"),sv=new RegExp("\\b("+tv.join("|")+")\\b","i"),ov=new RegExp(Cs.join("|"),"i"),lv=new RegExp(Ms.join("|"),"i"),cv=new RegExp("\\b("+nv.join("|")+")\\b","i"),dv=/(\d+)(st|nd|rd|th)\b/i,uv=/(\d{1,4})([/.-])(\d{1,2})[/.-](\d{1,4})/,pv=/((\+|-)(12:00|11:00|10:00|09:30|09:00|08:00|07:00|06:00|05:00|04:00|03:30|03:00|02:00|01:00|00:00|01:00|02:00|03:00|03:30|04:00|04:30|05:00|05:30|05:45|06:00|06:30|07:00|08:00|08:45|09:00|09:30|10:00|10:30|11:00|12:00|12:45|13:00|14:00))$/,mv=/((\+|-)(1200|1100|1000|0930|0900|0800|0700|0600|0500|0400|0330|0300|0200|0100|0000|0100|0200|0300|0330|0400|0430|0500|0530|0545|0600|0630|0700|0800|0845|0900|0930|1000|1030|1100|1200|1245|1300|1400))$/,cn="("+["AM?","PM?"].join("|")+")",gv=new RegExp("0\\d\\:\\d{1,2}\\:\\d{1,2}(\\s*)"+cn,"i"),hv=new RegExp("0\\d\\:\\d{1,2}(\\s*)"+cn,"i"),fv=new RegExp("0\\d(\\s*)"+cn,"i"),yv=new RegExp("\\d{1,2}\\:\\d{1,2}\\:\\d{1,2}(\\s*)"+cn,"i"),bv=new RegExp("\\d{1,2}\\:\\d{1,2}(\\s*)"+cn,"i"),vv=new RegExp("\\d{1,2}(\\s*)"+cn,"i"),xv=new RegExp("\\d{1,2}"),wv=new RegExp(Cs.join("|")+"-\\d{2}","i"),kv=new RegExp(Ms.join("|")+"-\\d{2}","i"),Bl=new RegExp("(\\d{1,2})(\\D+)("+Cs.join("|")+"|"+Ms.join("|")+")(\\2)('?\\d{2,4})"),zv=/\d{2}:\d{2}:\d{2}\.\d{3}/,Sv=/\d{2}:\d{2}:\d{2}\.\d{2}/,Av=/\d{2}:\d{2}:\d{2}\.\d{1}/,Tv=/T\d{2}:\d{2}:\d{2}/,Lv=/0\d:\d{2}:\d{2}/,Ev=/0\d:\d{2}/,Ov=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}/,Cv=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}\.\d{3}/,Mv=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}\.\d{2}/,qv=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}\.\d{1}/,Iv=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]/,Bv=/24:00:\d{2}/,Fv=/24:00:\d{2}\.\d{3}/,_v=/24:00:\d{2}\.\d{2}/,Rv=/24:00:\d{2}\.\d{1}/,Dv=/24:00/,Nv=/\d{4}/,jv=/\d{2}/,Kv=/'\d{2}/,rp=/0\d/,ap=/\d{1,2}/,Yv=/0\d/,Pv=/\d{1,2}/,Hv=/^([1-9])\/([1-9]|0[1-9])$/,$v=/^([1-9])\/(1[012])$/,Wv=/^(0[1-9]|[12][0-9]|3[01])\/([1-9])$/,Vv=/^(0[1-9]|[12][0-9]|3[01])\/(1[012]|0[1-9])$/,Uv=/^([1-9])(\D)([1-9][0-9])$/,Gv=/^([1-9])(\D)([0][0-9])$/,Qv=/^(0[1-9]|1[012])(\D)([1-9][0-9])$/,Zv=/^(0[1-9]|1[012])(\D)([0][0-9])$/,Fl=/([/][M]|[M][/]|[MM]|[MMMM])/,sp=/(D)/,_l=/(Y)/,op=/\d+\D.+$/,lp=/\D+(\d+)($|Z)/,Jv=/M\s*\d{1,2}\b.+$/,Xv=/M\D+(0[1-9])\b.+$/,Os=/\d+\s+(H|h|k)/,ex=/\b(at)\b/i,ix=/\d{13}/,tx=/\d{10}/,nx={"/":"MDY",".":"DMY","-":"YMD"};function rx(e,t){var i=e.toString();if(t=t||{},t.preferredOrder=t.preferredOrder||nx,i=i.replace(ix,"x"),i=i.replace(tx,"X"),i=i.replace(ex,"[$1]"),i.match(Bl)){let[,d,c,u,m,g]=i.match(Bl),h=[];d.length===2&&d[0]==="0"||t.preferLongFormat?h.push("DD"):h.push("D"),h.push(c),u.match(Cs)?h.push("MMMM"):u.match(Ms)?h.push("MMM"):h.push(u),h.push(m),g[0]==="'"?h.push("'YY"):g.length===2?h.push("YY"):(g.length,h.push("YYYY"));var n=h.join("");i=i.replace(Bl,n)}i=i.replace(rv,"dddd"),i=i.replace(av,"ddd"),i=i.replace(sv,"dd"),i=i.replace(dv,"Do"),i=i.replace(ov,"MMMM"),i=i.replace(lv,"MMM"),i=i.replace(uv,ax.bind(null,t)),i=i.replace(cv,d=>"["+d+"]"),i=i.replace(pv,"Z"),i=i.replace(mv,"ZZ"),i=i.replace(zv,"HH:mm:ss.SSS"),i=i.replace(Sv,"HH:mm:ss.SS"),i=i.replace(Av,"HH:mm:ss.S"),i=i.replace(Tv,"THH:mm:ss");function r(d){return function(c,u,m){return d+u+(m[0].toUpperCase()===m[0]?"A":"a")}}if(i=i.replace(gv,r("hh:mm:ss")),i=i.replace(yv,r("h:mm:ss")),i=i.replace(hv,r("hh:mm")),i=i.replace(bv,r("h:mm")),i=i.replace(fv,r("hh")),i=i.replace(vv,r("h")),i=i.replace(Lv,"HH:mm:ss"),i=i.replace(Cv,"H:mm:ss.SSS"),i=i.replace(Fv,(t.preferLongFormat?"kk":"k")+":mm:ss.SSS"),i=i.replace(Mv,"H:mm:ss.SS"),i=i.replace(_v,(t.preferLongFormat?"kk":"k")+":mm:ss.SS"),i=i.replace(qv,"H:mm:ss.S"),i=i.replace(Rv,(t.preferLongFormat?"kk":"k")+":mm:ss.S"),i=i.replace(Ov,"H:mm:ss"),i=i.replace(Bv,(t.preferLongFormat?"kk":"k")+":mm:ss"),i=i.replace(Ev,"HH:mm"),i=i.replace(Iv,"H:mm"),i=i.replace(Dv,(t.preferLongFormat?"kk":"k")+":mm"),i=i.replace(Nv,"YYYY"),i=i.replace(Kv,"'YY"),i=i.replace(wv,"MMMM-YY"),i=i.replace(kv,"MMM-YY"),i=i.replace(Hv,"D/M"),i=i.replace($v,"D/MM"),i=i.replace(Wv,"DD/M"),i=i.replace(Vv,"DD/MM"),i=i.replace(Uv,"M$2YY"),i=i.replace(Qv,"MM$2YY"),i=i.replace(Gv,"M$2DD"),i=i.replace(Zv,"MM$2DD"),i.match(Fl)){var a=/0\d\.\d{2}|\d{2}\.\d{2}/,s=/\d{1}\.\d{2}/;i=i.replace(a,"H.mm"),i=i.replace(s,"h.mm")}if(!i.match(Fl)&&i.match(_l)&&(i=i.replace(Yv,"MM")),!i.match(Fl)&&i.match(_l)&&(i=i.replace(Pv,t.preferLongFormat?"MM":"M")),i.match(Xv)&&!i.match(Os)&&(i=i.replace(rp,"DD")),i.match(Jv)&&!i.match(Os)&&(i=i.replace(ap,t.preferLongFormat?"DD":"D")),!i.match(sp)&&i.match(op)&&!i.match(Os)&&(i=i.replace(rp,"DD")),!i.match(sp)&&i.match(op)&&!i.match(Os)&&(i=i.replace(ap,t.preferLongFormat?"DD":"D")),i.match(_l)||(i=i.replace(jv,"YY")),i.match(lp)){var o=i.match(lp)[1],l;o==="00"?l="HH":o==="24"?l=t.preferLongFormat?"kk":"k":o>12?l=t.preferLongFormat?"HH":"H":o[0]==="0"?l=t.preferLongFormat?"hh":"h":l=t.preferLongFormat?"hh":"k",i=i.replace(xv,l)}return i.length<1&&(i=void 0),i}function ax(e,t,i,n,r,a){var s,o=0,l=1,d=2,c=[i.length===1,r.length===1,a.length===1],u=[i[0]==="0",r[0]==="0",a[0]==="0"],m=i.length===4,g=r.length===4,h=a.length===4,x=typeof e.preferredOrder=="string"?e.preferredOrder:e.preferredOrder[n];i=parseInt(i,10),r=parseInt(r,10),a=parseInt(a,10),s=[i,r,a],x=x.toUpperCase();var b=function(S,L){c[S]!==c[L]&&!u[S]&&!u[L]&&(c[S]=!0,c[L]=!0)};if(i>31)return b(l,d),s[0]=m?"YYYY":"YY",s[1]=c[l]?"M":"MM",s[2]=c[d]?"D":"DD",s.join(n);if(i>12)return b(o,l),s[0]=c[o]?"D":"DD",s[1]=c[l]?"M":"MM",s[2]=h?"YYYY":"YY",s.join(n);if(r>12)return b(o,l),s[0]=c[o]?"M":"MM",s[1]=c[l]?"D":"DD",s[2]=h?"YYYY":"YY",s.join(n);if(a>31)return s[2]=h?"YYYY":"YY",x[0]==="M"&&i<13?(b(o,l),s[0]=c[o]?"M":"MM",s[1]=c[l]?"D":"DD",s.join(n)):(b(o,l),s[0]=c[o]?"D":"DD",s[1]=c[l]?"M":"MM",s.join(n));let v=[m,g,h];return b(x.indexOf("D"),x.indexOf("M")),s[x.indexOf("D")]=c[x.indexOf("D")]?"D":"DD",s[x.indexOf("M")]=c[x.indexOf("M")]?"M":"MM",s[x.indexOf("Y")]=v[x.indexOf("Y")]?"YYYY":"YY",s.join(n)}});var mp=ca((JI,pp)=>{var up=dp();pp.exports=up;typeof window<"u"&&window.moment&&(window.moment.parseFormat=up)});var uw={};ec(uw,{default:()=>Js});module.exports=em(uw);var oe=require("obsidian");function vc(e){return typeof e>"u"||e===null}function im(e){return typeof e=="object"&&e!==null}function tm(e){return Array.isArray(e)?e:vc(e)?[]:[e]}function nm(e,t){var i,n,r,a;if(t)for(a=Object.keys(t),i=0,n=a.length;i<n;i+=1)r=a[i],e[r]=t[r];return e}function rm(e,t){var i="",n;for(n=0;n<t;n+=1)i+=e;return i}function am(e){return e===0&&Number.NEGATIVE_INFINITY===1/e}var sm=vc,om=im,lm=tm,cm=rm,dm=am,um=nm,xe={isNothing:sm,isObject:om,toArray:lm,repeat:cm,isNegativeZero:dm,extend:um};function xc(e,t){var i="",n=e.reason||"(unknown reason)";return e.mark?(e.mark.name&&(i+='in "'+e.mark.name+'" '),i+="("+(e.mark.line+1)+":"+(e.mark.column+1)+")",!t&&e.mark.snippet&&(i+=` +var Cm=Object.create;var $n=Object.defineProperty;var _c=Object.getOwnPropertyDescriptor;var Mm=Object.getOwnPropertyNames;var qm=Object.getPrototypeOf,Im=Object.prototype.hasOwnProperty;var cn=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Fc=(e,t)=>{for(var i in t)$n(e,i,{get:t[i],enumerable:!0})},Rc=(e,t,i,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Mm(t))!Im.call(e,r)&&r!==i&&$n(e,r,{get:()=>t[r],enumerable:!(n=_c(t,r))||n.enumerable});return e};var dn=(e,t,i)=>(i=e!=null?Cm(qm(e)):{},Rc(t||!e||!e.__esModule?$n(i,"default",{value:e,enumerable:!0}):i,e)),Bm=e=>Rc($n({},"__esModule",{value:!0}),e),A=(e,t,i,n)=>{for(var r=n>1?void 0:n?_c(t,i):t,a=e.length-1,s;a>=0;a--)(s=e[a])&&(r=(n?s(t,i,r):s(r))||r);return n&&r&&$n(t,i,r),r};var Mo=(e,t,i)=>{if(!t.has(e))throw TypeError("Cannot "+i)};var K=(e,t,i)=>(Mo(e,t,"read from private field"),i?i.call(e):t.get(e)),ve=(e,t,i)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,i)},qe=(e,t,i,n)=>(Mo(e,t,"write to private field"),n?n.call(e,i):t.set(e,i),i);var qo=(e,t,i,n)=>({set _(r){qe(e,t,r,i)},get _(){return K(e,t,n)}}),he=(e,t,i)=>(Mo(e,t,"access private method"),i);var Wa=cn((Ld,$a)=>{(function(e,t){"use strict";typeof define=="function"&&define.amd?define(t):typeof $a=="object"&&$a.exports?$a.exports=t():e.log=t()})(Ld,function(){"use strict";var e=function(){},t="undefined",i=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),n=["trace","debug","info","warn","error"];function r(f,w){var x=f[w];if(typeof x.bind=="function")return x.bind(f);try{return Function.prototype.bind.call(x,f)}catch{return function(){return Function.prototype.apply.apply(x,[f,arguments])}}}function a(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function s(f){return f==="debug"&&(f="log"),typeof console===t?!1:f==="trace"&&i?a:console[f]!==void 0?r(console,f):console.log!==void 0?r(console,"log"):e}function o(f,w){for(var x=0;x<n.length;x++){var v=n[x];this[v]=x<f?e:this.methodFactory(v,f,w)}this.log=this.debug}function l(f,w,x){return function(){typeof console!==t&&(o.call(this,w,x),this[f].apply(this,arguments))}}function c(f,w,x){return s(f)||l.apply(this,arguments)}function d(f,w,x){var v=this,z;w=w??"WARN";var L="loglevel";typeof f=="string"?L+=":"+f:typeof f=="symbol"&&(L=void 0);function C(q){var _=(n[q]||"silent").toUpperCase();if(!(typeof window===t||!L)){try{window.localStorage[L]=_;return}catch{}try{window.document.cookie=encodeURIComponent(L)+"="+_+";"}catch{}}}function R(){var q;if(!(typeof window===t||!L)){try{q=window.localStorage[L]}catch{}if(typeof q===t)try{var _=window.document.cookie,P=_.indexOf(encodeURIComponent(L)+"=");P!==-1&&(q=/^([^;]+)/.exec(_.slice(P))[1])}catch{}return v.levels[q]===void 0&&(q=void 0),q}}function T(){if(!(typeof window===t||!L)){try{window.localStorage.removeItem(L);return}catch{}try{window.document.cookie=encodeURIComponent(L)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch{}}}v.name=f,v.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},v.methodFactory=x||c,v.getLevel=function(){return z},v.setLevel=function(q,_){if(typeof q=="string"&&v.levels[q.toUpperCase()]!==void 0&&(q=v.levels[q.toUpperCase()]),typeof q=="number"&&q>=0&&q<=v.levels.SILENT){if(z=q,_!==!1&&C(q),o.call(v,q,f),typeof console===t&&q<v.levels.SILENT)return"No console available for logging"}else throw"log.setLevel() called with invalid level: "+q},v.setDefaultLevel=function(q){w=q,R()||v.setLevel(q,!1)},v.resetLevel=function(){v.setLevel(w,!1),T()},v.enableAll=function(q){v.setLevel(v.levels.TRACE,q)},v.disableAll=function(q){v.setLevel(v.levels.SILENT,q)};var B=R();B==null&&(B=w),v.setLevel(B,!1)}var u=new d,g={};u.getLogger=function(w){if(typeof w!="symbol"&&typeof w!="string"||w==="")throw new TypeError("You must supply a name when creating a logger.");var x=g[w];return x||(x=g[w]=new d(w,u.getLevel(),u.methodFactory)),x};var m=typeof window!==t?window.log:void 0;return u.noConflict=function(){return typeof window!==t&&window.log===u&&(window.log=m),u},u.getLoggers=function(){return g},u.default=u,u})});var Mp=cn((p0,Ln)=>{var M=function(){this.Diff_Timeout=1,this.Diff_EditCost=4,this.Match_Threshold=.5,this.Match_Distance=1e3,this.Patch_DeleteThreshold=.5,this.Patch_Margin=4,this.Match_MaxBits=32},re=-1,oe=1,G=0;M.Diff=function(e,t){return[e,t]};M.prototype.diff_main=function(e,t,i,n){typeof n>"u"&&(this.Diff_Timeout<=0?n=Number.MAX_VALUE:n=new Date().getTime()+this.Diff_Timeout*1e3);var r=n;if(e==null||t==null)throw new Error("Null input. (diff_main)");if(e==t)return e?[new M.Diff(G,e)]:[];typeof i>"u"&&(i=!0);var a=i,s=this.diff_commonPrefix(e,t),o=e.substring(0,s);e=e.substring(s),t=t.substring(s),s=this.diff_commonSuffix(e,t);var l=e.substring(e.length-s);e=e.substring(0,e.length-s),t=t.substring(0,t.length-s);var c=this.diff_compute_(e,t,a,r);return o&&c.unshift(new M.Diff(G,o)),l&&c.push(new M.Diff(G,l)),this.diff_cleanupMerge(c),c};M.prototype.diff_compute_=function(e,t,i,n){var r;if(!e)return[new M.Diff(oe,t)];if(!t)return[new M.Diff(re,e)];var a=e.length>t.length?e:t,s=e.length>t.length?t:e,o=a.indexOf(s);if(o!=-1)return r=[new M.Diff(oe,a.substring(0,o)),new M.Diff(G,s),new M.Diff(oe,a.substring(o+s.length))],e.length>t.length&&(r[0][0]=r[2][0]=re),r;if(s.length==1)return[new M.Diff(re,e),new M.Diff(oe,t)];var l=this.diff_halfMatch_(e,t);if(l){var c=l[0],d=l[1],u=l[2],g=l[3],m=l[4],f=this.diff_main(c,u,i,n),w=this.diff_main(d,g,i,n);return f.concat([new M.Diff(G,m)],w)}return i&&e.length>100&&t.length>100?this.diff_lineMode_(e,t,n):this.diff_bisect_(e,t,n)};M.prototype.diff_lineMode_=function(e,t,i){var n=this.diff_linesToChars_(e,t);e=n.chars1,t=n.chars2;var r=n.lineArray,a=this.diff_main(e,t,!1,i);this.diff_charsToLines_(a,r),this.diff_cleanupSemantic(a),a.push(new M.Diff(G,""));for(var s=0,o=0,l=0,c="",d="";s<a.length;){switch(a[s][0]){case oe:l++,d+=a[s][1];break;case re:o++,c+=a[s][1];break;case G:if(o>=1&&l>=1){a.splice(s-o-l,o+l),s=s-o-l;for(var u=this.diff_main(c,d,!1,i),g=u.length-1;g>=0;g--)a.splice(s,0,u[g]);s=s+u.length}l=0,o=0,c="",d="";break}s++}return a.pop(),a};M.prototype.diff_bisect_=function(e,t,i){for(var n=e.length,r=t.length,a=Math.ceil((n+r)/2),s=a,o=2*a,l=new Array(o),c=new Array(o),d=0;d<o;d++)l[d]=-1,c[d]=-1;l[s+1]=0,c[s+1]=0;for(var u=n-r,g=u%2!=0,m=0,f=0,w=0,x=0,v=0;v<a&&!(new Date().getTime()>i);v++){for(var z=-v+m;z<=v-f;z+=2){var L=s+z,C;z==-v||z!=v&&l[L-1]<l[L+1]?C=l[L+1]:C=l[L-1]+1;for(var R=C-z;C<n&&R<r&&e.charAt(C)==t.charAt(R);)C++,R++;if(l[L]=C,C>n)f+=2;else if(R>r)m+=2;else if(g){var T=s+u-z;if(T>=0&&T<o&&c[T]!=-1){var B=n-c[T];if(C>=B)return this.diff_bisectSplit_(e,t,C,R,i)}}}for(var q=-v+w;q<=v-x;q+=2){var T=s+q,B;q==-v||q!=v&&c[T-1]<c[T+1]?B=c[T+1]:B=c[T-1]+1;for(var _=B-q;B<n&&_<r&&e.charAt(n-B-1)==t.charAt(r-_-1);)B++,_++;if(c[T]=B,B>n)x+=2;else if(_>r)w+=2;else if(!g){var L=s+u-q;if(L>=0&&L<o&&l[L]!=-1){var C=l[L],R=s+C-L;if(B=n-B,C>=B)return this.diff_bisectSplit_(e,t,C,R,i)}}}}return[new M.Diff(re,e),new M.Diff(oe,t)]};M.prototype.diff_bisectSplit_=function(e,t,i,n,r){var a=e.substring(0,i),s=t.substring(0,n),o=e.substring(i),l=t.substring(n),c=this.diff_main(a,s,!1,r),d=this.diff_main(o,l,!1,r);return c.concat(d)};M.prototype.diff_linesToChars_=function(e,t){var i=[],n={};i[0]="";function r(l){for(var c="",d=0,u=-1,g=i.length;u<l.length-1;){u=l.indexOf(` +`,d),u==-1&&(u=l.length-1);var m=l.substring(d,u+1);(n.hasOwnProperty?n.hasOwnProperty(m):n[m]!==void 0)?c+=String.fromCharCode(n[m]):(g==a&&(m=l.substring(d),u=l.length),c+=String.fromCharCode(g),n[m]=g,i[g++]=m),d=u+1}return c}var a=4e4,s=r(e);a=65535;var o=r(t);return{chars1:s,chars2:o,lineArray:i}};M.prototype.diff_charsToLines_=function(e,t){for(var i=0;i<e.length;i++){for(var n=e[i][1],r=[],a=0;a<n.length;a++)r[a]=t[n.charCodeAt(a)];e[i][1]=r.join("")}};M.prototype.diff_commonPrefix=function(e,t){if(!e||!t||e.charAt(0)!=t.charAt(0))return 0;for(var i=0,n=Math.min(e.length,t.length),r=n,a=0;i<r;)e.substring(a,r)==t.substring(a,r)?(i=r,a=i):n=r,r=Math.floor((n-i)/2+i);return r};M.prototype.diff_commonSuffix=function(e,t){if(!e||!t||e.charAt(e.length-1)!=t.charAt(t.length-1))return 0;for(var i=0,n=Math.min(e.length,t.length),r=n,a=0;i<r;)e.substring(e.length-r,e.length-a)==t.substring(t.length-r,t.length-a)?(i=r,a=i):n=r,r=Math.floor((n-i)/2+i);return r};M.prototype.diff_commonOverlap_=function(e,t){var i=e.length,n=t.length;if(i==0||n==0)return 0;i>n?e=e.substring(i-n):i<n&&(t=t.substring(0,i));var r=Math.min(i,n);if(e==t)return r;for(var a=0,s=1;;){var o=e.substring(r-s),l=t.indexOf(o);if(l==-1)return a;s+=l,(l==0||e.substring(r-s)==t.substring(0,s))&&(a=s,s++)}};M.prototype.diff_halfMatch_=function(e,t){if(this.Diff_Timeout<=0)return null;var i=e.length>t.length?e:t,n=e.length>t.length?t:e;if(i.length<4||n.length*2<i.length)return null;var r=this;function a(f,w,x){for(var v=f.substring(x,x+Math.floor(f.length/4)),z=-1,L="",C,R,T,B;(z=w.indexOf(v,z+1))!=-1;){var q=r.diff_commonPrefix(f.substring(x),w.substring(z)),_=r.diff_commonSuffix(f.substring(0,x),w.substring(0,z));L.length<_+q&&(L=w.substring(z-_,z)+w.substring(z,z+q),C=f.substring(0,x-_),R=f.substring(x+q),T=w.substring(0,z-_),B=w.substring(z+q))}return L.length*2>=f.length?[C,R,T,B,L]:null}var s=a(i,n,Math.ceil(i.length/4)),o=a(i,n,Math.ceil(i.length/2)),l;if(!s&&!o)return null;o?s?l=s[4].length>o[4].length?s:o:l=o:l=s;var c,d,u,g;e.length>t.length?(c=l[0],d=l[1],u=l[2],g=l[3]):(u=l[0],g=l[1],c=l[2],d=l[3]);var m=l[4];return[c,d,u,g,m]};M.prototype.diff_cleanupSemantic=function(e){for(var t=!1,i=[],n=0,r=null,a=0,s=0,o=0,l=0,c=0;a<e.length;)e[a][0]==G?(i[n++]=a,s=l,o=c,l=0,c=0,r=e[a][1]):(e[a][0]==oe?l+=e[a][1].length:c+=e[a][1].length,r&&r.length<=Math.max(s,o)&&r.length<=Math.max(l,c)&&(e.splice(i[n-1],0,new M.Diff(re,r)),e[i[n-1]+1][0]=oe,n--,n--,a=n>0?i[n-1]:-1,s=0,o=0,l=0,c=0,r=null,t=!0)),a++;for(t&&this.diff_cleanupMerge(e),this.diff_cleanupSemanticLossless(e),a=1;a<e.length;){if(e[a-1][0]==re&&e[a][0]==oe){var d=e[a-1][1],u=e[a][1],g=this.diff_commonOverlap_(d,u),m=this.diff_commonOverlap_(u,d);g>=m?(g>=d.length/2||g>=u.length/2)&&(e.splice(a,0,new M.Diff(G,u.substring(0,g))),e[a-1][1]=d.substring(0,d.length-g),e[a+1][1]=u.substring(g),a++):(m>=d.length/2||m>=u.length/2)&&(e.splice(a,0,new M.Diff(G,d.substring(0,m))),e[a-1][0]=oe,e[a-1][1]=u.substring(0,u.length-m),e[a+1][0]=re,e[a+1][1]=d.substring(m),a++),a++}a++}};M.prototype.diff_cleanupSemanticLossless=function(e){function t(m,f){if(!m||!f)return 6;var w=m.charAt(m.length-1),x=f.charAt(0),v=w.match(M.nonAlphaNumericRegex_),z=x.match(M.nonAlphaNumericRegex_),L=v&&w.match(M.whitespaceRegex_),C=z&&x.match(M.whitespaceRegex_),R=L&&w.match(M.linebreakRegex_),T=C&&x.match(M.linebreakRegex_),B=R&&m.match(M.blanklineEndRegex_),q=T&&f.match(M.blanklineStartRegex_);return B||q?5:R||T?4:v&&!L&&C?3:L||C?2:v||z?1:0}for(var i=1;i<e.length-1;){if(e[i-1][0]==G&&e[i+1][0]==G){var n=e[i-1][1],r=e[i][1],a=e[i+1][1],s=this.diff_commonSuffix(n,r);if(s){var o=r.substring(r.length-s);n=n.substring(0,n.length-s),r=o+r.substring(0,r.length-s),a=o+a}for(var l=n,c=r,d=a,u=t(n,r)+t(r,a);r.charAt(0)===a.charAt(0);){n+=r.charAt(0),r=r.substring(1)+a.charAt(0),a=a.substring(1);var g=t(n,r)+t(r,a);g>=u&&(u=g,l=n,c=r,d=a)}e[i-1][1]!=l&&(l?e[i-1][1]=l:(e.splice(i-1,1),i--),e[i][1]=c,d?e[i+1][1]=d:(e.splice(i+1,1),i--))}i++}};M.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;M.whitespaceRegex_=/\s/;M.linebreakRegex_=/[\r\n]/;M.blanklineEndRegex_=/\n\r?\n$/;M.blanklineStartRegex_=/^\r?\n\r?\n/;M.prototype.diff_cleanupEfficiency=function(e){for(var t=!1,i=[],n=0,r=null,a=0,s=!1,o=!1,l=!1,c=!1;a<e.length;)e[a][0]==G?(e[a][1].length<this.Diff_EditCost&&(l||c)?(i[n++]=a,s=l,o=c,r=e[a][1]):(n=0,r=null),l=c=!1):(e[a][0]==re?c=!0:l=!0,r&&(s&&o&&l&&c||r.length<this.Diff_EditCost/2&&s+o+l+c==3)&&(e.splice(i[n-1],0,new M.Diff(re,r)),e[i[n-1]+1][0]=oe,n--,r=null,s&&o?(l=c=!0,n=0):(n--,a=n>0?i[n-1]:-1,l=c=!1),t=!0)),a++;t&&this.diff_cleanupMerge(e)};M.prototype.diff_cleanupMerge=function(e){e.push(new M.Diff(G,""));for(var t=0,i=0,n=0,r="",a="",s;t<e.length;)switch(e[t][0]){case oe:n++,a+=e[t][1],t++;break;case re:i++,r+=e[t][1],t++;break;case G:i+n>1?(i!==0&&n!==0&&(s=this.diff_commonPrefix(a,r),s!==0&&(t-i-n>0&&e[t-i-n-1][0]==G?e[t-i-n-1][1]+=a.substring(0,s):(e.splice(0,0,new M.Diff(G,a.substring(0,s))),t++),a=a.substring(s),r=r.substring(s)),s=this.diff_commonSuffix(a,r),s!==0&&(e[t][1]=a.substring(a.length-s)+e[t][1],a=a.substring(0,a.length-s),r=r.substring(0,r.length-s))),t-=i+n,e.splice(t,i+n),r.length&&(e.splice(t,0,new M.Diff(re,r)),t++),a.length&&(e.splice(t,0,new M.Diff(oe,a)),t++),t++):t!==0&&e[t-1][0]==G?(e[t-1][1]+=e[t][1],e.splice(t,1)):t++,n=0,i=0,r="",a="";break}e[e.length-1][1]===""&&e.pop();var o=!1;for(t=1;t<e.length-1;)e[t-1][0]==G&&e[t+1][0]==G&&(e[t][1].substring(e[t][1].length-e[t-1][1].length)==e[t-1][1]?(e[t][1]=e[t-1][1]+e[t][1].substring(0,e[t][1].length-e[t-1][1].length),e[t+1][1]=e[t-1][1]+e[t+1][1],e.splice(t-1,1),o=!0):e[t][1].substring(0,e[t+1][1].length)==e[t+1][1]&&(e[t-1][1]+=e[t+1][1],e[t][1]=e[t][1].substring(e[t+1][1].length)+e[t+1][1],e.splice(t+1,1),o=!0)),t++;o&&this.diff_cleanupMerge(e)};M.prototype.diff_xIndex=function(e,t){var i=0,n=0,r=0,a=0,s;for(s=0;s<e.length&&(e[s][0]!==oe&&(i+=e[s][1].length),e[s][0]!==re&&(n+=e[s][1].length),!(i>t));s++)r=i,a=n;return e.length!=s&&e[s][0]===re?a:a+(t-r)};M.prototype.diff_prettyHtml=function(e){for(var t=[],i=/&/g,n=/</g,r=/>/g,a=/\n/g,s=0;s<e.length;s++){var o=e[s][0],l=e[s][1],c=l.replace(i,"&").replace(n,"<").replace(r,">").replace(a,"¶<br>");switch(o){case oe:t[s]='<ins style="background:#e6ffe6;">'+c+"</ins>";break;case re:t[s]='<del style="background:#ffe6e6;">'+c+"</del>";break;case G:t[s]="<span>"+c+"</span>";break}}return t.join("")};M.prototype.diff_text1=function(e){for(var t=[],i=0;i<e.length;i++)e[i][0]!==oe&&(t[i]=e[i][1]);return t.join("")};M.prototype.diff_text2=function(e){for(var t=[],i=0;i<e.length;i++)e[i][0]!==re&&(t[i]=e[i][1]);return t.join("")};M.prototype.diff_levenshtein=function(e){for(var t=0,i=0,n=0,r=0;r<e.length;r++){var a=e[r][0],s=e[r][1];switch(a){case oe:i+=s.length;break;case re:n+=s.length;break;case G:t+=Math.max(i,n),i=0,n=0;break}}return t+=Math.max(i,n),t};M.prototype.diff_toDelta=function(e){for(var t=[],i=0;i<e.length;i++)switch(e[i][0]){case oe:t[i]="+"+encodeURI(e[i][1]);break;case re:t[i]="-"+e[i][1].length;break;case G:t[i]="="+e[i][1].length;break}return t.join(" ").replace(/%20/g," ")};M.prototype.diff_fromDelta=function(e,t){for(var i=[],n=0,r=0,a=t.split(/\t/g),s=0;s<a.length;s++){var o=a[s].substring(1);switch(a[s].charAt(0)){case"+":try{i[n++]=new M.Diff(oe,decodeURI(o))}catch{throw new Error("Illegal escape in diff_fromDelta: "+o)}break;case"-":case"=":var l=parseInt(o,10);if(isNaN(l)||l<0)throw new Error("Invalid number in diff_fromDelta: "+o);var c=e.substring(r,r+=l);a[s].charAt(0)=="="?i[n++]=new M.Diff(G,c):i[n++]=new M.Diff(re,c);break;default:if(a[s])throw new Error("Invalid diff operation in diff_fromDelta: "+a[s])}}if(r!=e.length)throw new Error("Delta length ("+r+") does not equal source text length ("+e.length+").");return i};M.prototype.match_main=function(e,t,i){if(e==null||t==null||i==null)throw new Error("Null input. (match_main)");return i=Math.max(0,Math.min(i,e.length)),e==t?0:e.length?e.substring(i,i+t.length)==t?i:this.match_bitap_(e,t,i):-1};M.prototype.match_bitap_=function(e,t,i){if(t.length>this.Match_MaxBits)throw new Error("Pattern too long for this browser.");var n=this.match_alphabet_(t),r=this;function a(C,R){var T=C/t.length,B=Math.abs(i-R);return r.Match_Distance?T+B/r.Match_Distance:B?1:T}var s=this.Match_Threshold,o=e.indexOf(t,i);o!=-1&&(s=Math.min(a(0,o),s),o=e.lastIndexOf(t,i+t.length),o!=-1&&(s=Math.min(a(0,o),s)));var l=1<<t.length-1;o=-1;for(var c,d,u=t.length+e.length,g,m=0;m<t.length;m++){for(c=0,d=u;c<d;)a(m,i+d)<=s?c=d:u=d,d=Math.floor((u-c)/2+c);u=d;var f=Math.max(1,i-d+1),w=Math.min(i+d,e.length)+t.length,x=Array(w+2);x[w+1]=(1<<m)-1;for(var v=w;v>=f;v--){var z=n[e.charAt(v-1)];if(m===0?x[v]=(x[v+1]<<1|1)&z:x[v]=(x[v+1]<<1|1)&z|((g[v+1]|g[v])<<1|1)|g[v+1],x[v]&l){var L=a(m,v-1);if(L<=s)if(s=L,o=v-1,o>i)f=Math.max(1,2*i-o);else break}}if(a(m+1,i)>s)break;g=x}return o};M.prototype.match_alphabet_=function(e){for(var t={},i=0;i<e.length;i++)t[e.charAt(i)]=0;for(var i=0;i<e.length;i++)t[e.charAt(i)]|=1<<e.length-i-1;return t};M.prototype.patch_addContext_=function(e,t){if(t.length!=0){if(e.start2===null)throw Error("patch not initialized");for(var i=t.substring(e.start2,e.start2+e.length1),n=0;t.indexOf(i)!=t.lastIndexOf(i)&&i.length<this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)n+=this.Patch_Margin,i=t.substring(e.start2-n,e.start2+e.length1+n);n+=this.Patch_Margin;var r=t.substring(e.start2-n,e.start2);r&&e.diffs.unshift(new M.Diff(G,r));var a=t.substring(e.start2+e.length1,e.start2+e.length1+n);a&&e.diffs.push(new M.Diff(G,a)),e.start1-=r.length,e.start2-=r.length,e.length1+=r.length+a.length,e.length2+=r.length+a.length}};M.prototype.patch_make=function(e,t,i){var n,r;if(typeof e=="string"&&typeof t=="string"&&typeof i>"u")n=e,r=this.diff_main(n,t,!0),r.length>2&&(this.diff_cleanupSemantic(r),this.diff_cleanupEfficiency(r));else if(e&&typeof e=="object"&&typeof t>"u"&&typeof i>"u")r=e,n=this.diff_text1(r);else if(typeof e=="string"&&t&&typeof t=="object"&&typeof i>"u")n=e,r=t;else if(typeof e=="string"&&typeof t=="string"&&i&&typeof i=="object")n=e,r=i;else throw new Error("Unknown call format to patch_make.");if(r.length===0)return[];for(var a=[],s=new M.patch_obj,o=0,l=0,c=0,d=n,u=n,g=0;g<r.length;g++){var m=r[g][0],f=r[g][1];switch(!o&&m!==G&&(s.start1=l,s.start2=c),m){case oe:s.diffs[o++]=r[g],s.length2+=f.length,u=u.substring(0,c)+f+u.substring(c);break;case re:s.length1+=f.length,s.diffs[o++]=r[g],u=u.substring(0,c)+u.substring(c+f.length);break;case G:f.length<=2*this.Patch_Margin&&o&&r.length!=g+1?(s.diffs[o++]=r[g],s.length1+=f.length,s.length2+=f.length):f.length>=2*this.Patch_Margin&&o&&(this.patch_addContext_(s,d),a.push(s),s=new M.patch_obj,o=0,d=u,l=c);break}m!==oe&&(l+=f.length),m!==re&&(c+=f.length)}return o&&(this.patch_addContext_(s,d),a.push(s)),a};M.prototype.patch_deepCopy=function(e){for(var t=[],i=0;i<e.length;i++){var n=e[i],r=new M.patch_obj;r.diffs=[];for(var a=0;a<n.diffs.length;a++)r.diffs[a]=new M.Diff(n.diffs[a][0],n.diffs[a][1]);r.start1=n.start1,r.start2=n.start2,r.length1=n.length1,r.length2=n.length2,t[i]=r}return t};M.prototype.patch_apply=function(e,t){if(e.length==0)return[t,[]];e=this.patch_deepCopy(e);var i=this.patch_addPadding(e);t=i+t+i,this.patch_splitMax(e);for(var n=0,r=[],a=0;a<e.length;a++){var s=e[a].start2+n,o=this.diff_text1(e[a].diffs),l,c=-1;if(o.length>this.Match_MaxBits?(l=this.match_main(t,o.substring(0,this.Match_MaxBits),s),l!=-1&&(c=this.match_main(t,o.substring(o.length-this.Match_MaxBits),s+o.length-this.Match_MaxBits),(c==-1||l>=c)&&(l=-1))):l=this.match_main(t,o,s),l==-1)r[a]=!1,n-=e[a].length2-e[a].length1;else{r[a]=!0,n=l-s;var d;if(c==-1?d=t.substring(l,l+o.length):d=t.substring(l,c+this.Match_MaxBits),o==d)t=t.substring(0,l)+this.diff_text2(e[a].diffs)+t.substring(l+o.length);else{var u=this.diff_main(o,d,!1);if(o.length>this.Match_MaxBits&&this.diff_levenshtein(u)/o.length>this.Patch_DeleteThreshold)r[a]=!1;else{this.diff_cleanupSemanticLossless(u);for(var g=0,m,f=0;f<e[a].diffs.length;f++){var w=e[a].diffs[f];w[0]!==G&&(m=this.diff_xIndex(u,g)),w[0]===oe?t=t.substring(0,l+m)+w[1]+t.substring(l+m):w[0]===re&&(t=t.substring(0,l+m)+t.substring(l+this.diff_xIndex(u,g+w[1].length))),w[0]!==re&&(g+=w[1].length)}}}}}return t=t.substring(i.length,t.length-i.length),[t,r]};M.prototype.patch_addPadding=function(e){for(var t=this.Patch_Margin,i="",n=1;n<=t;n++)i+=String.fromCharCode(n);for(var n=0;n<e.length;n++)e[n].start1+=t,e[n].start2+=t;var r=e[0],a=r.diffs;if(a.length==0||a[0][0]!=G)a.unshift(new M.Diff(G,i)),r.start1-=t,r.start2-=t,r.length1+=t,r.length2+=t;else if(t>a[0][1].length){var s=t-a[0][1].length;a[0][1]=i.substring(a[0][1].length)+a[0][1],r.start1-=s,r.start2-=s,r.length1+=s,r.length2+=s}if(r=e[e.length-1],a=r.diffs,a.length==0||a[a.length-1][0]!=G)a.push(new M.Diff(G,i)),r.length1+=t,r.length2+=t;else if(t>a[a.length-1][1].length){var s=t-a[a.length-1][1].length;a[a.length-1][1]+=i.substring(0,s),r.length1+=s,r.length2+=s}return i};M.prototype.patch_splitMax=function(e){for(var t=this.Match_MaxBits,i=0;i<e.length;i++)if(!(e[i].length1<=t)){var n=e[i];e.splice(i--,1);for(var r=n.start1,a=n.start2,s="";n.diffs.length!==0;){var o=new M.patch_obj,l=!0;for(o.start1=r-s.length,o.start2=a-s.length,s!==""&&(o.length1=o.length2=s.length,o.diffs.push(new M.Diff(G,s)));n.diffs.length!==0&&o.length1<t-this.Patch_Margin;){var c=n.diffs[0][0],d=n.diffs[0][1];c===oe?(o.length2+=d.length,a+=d.length,o.diffs.push(n.diffs.shift()),l=!1):c===re&&o.diffs.length==1&&o.diffs[0][0]==G&&d.length>2*t?(o.length1+=d.length,r+=d.length,l=!1,o.diffs.push(new M.Diff(c,d)),n.diffs.shift()):(d=d.substring(0,t-o.length1-this.Patch_Margin),o.length1+=d.length,r+=d.length,c===G?(o.length2+=d.length,a+=d.length):l=!1,o.diffs.push(new M.Diff(c,d)),d==n.diffs[0][1]?n.diffs.shift():n.diffs[0][1]=n.diffs[0][1].substring(d.length))}s=this.diff_text2(o.diffs),s=s.substring(s.length-this.Patch_Margin);var u=this.diff_text1(n.diffs).substring(0,this.Patch_Margin);u!==""&&(o.length1+=u.length,o.length2+=u.length,o.diffs.length!==0&&o.diffs[o.diffs.length-1][0]===G?o.diffs[o.diffs.length-1][1]+=u:o.diffs.push(new M.Diff(G,u))),l||e.splice(++i,0,o)}}};M.prototype.patch_toText=function(e){for(var t=[],i=0;i<e.length;i++)t[i]=e[i];return t.join("")};M.prototype.patch_fromText=function(e){var t=[];if(!e)return t;for(var i=e.split(` +`),n=0,r=/^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/;n<i.length;){var a=i[n].match(r);if(!a)throw new Error("Invalid patch string: "+i[n]);var s=new M.patch_obj;for(t.push(s),s.start1=parseInt(a[1],10),a[2]===""?(s.start1--,s.length1=1):a[2]=="0"?s.length1=0:(s.start1--,s.length1=parseInt(a[2],10)),s.start2=parseInt(a[3],10),a[4]===""?(s.start2--,s.length2=1):a[4]=="0"?s.length2=0:(s.start2--,s.length2=parseInt(a[4],10)),n++;n<i.length;){var o=i[n].charAt(0);try{var l=decodeURI(i[n].substring(1))}catch{throw new Error("Illegal escape in patch_fromText: "+l)}if(o=="-")s.diffs.push(new M.Diff(re,l));else if(o=="+")s.diffs.push(new M.Diff(oe,l));else if(o==" ")s.diffs.push(new M.Diff(G,l));else{if(o=="@")break;if(o!=="")throw new Error('Invalid patch mode "'+o+'" in: '+l)}n++}}return t};M.patch_obj=function(){this.diffs=[],this.start1=null,this.start2=null,this.length1=0,this.length2=0};M.patch_obj.prototype.toString=function(){var e,t;this.length1===0?e=this.start1+",0":this.length1==1?e=this.start1+1:e=this.start1+1+","+this.length1,this.length2===0?t=this.start2+",0":this.length2==1?t=this.start2+1:t=this.start2+1+","+this.length2;for(var i=["@@ -"+e+" +"+t+` @@ +`],n,r=0;r<this.diffs.length;r++){switch(this.diffs[r][0]){case oe:n="+";break;case re:n="-";break;case G:n=" ";break}i[r+1]=n+encodeURI(this.diffs[r][1])+` +`}return i.join("").replace(/%20/g," ")};Ln.exports=M;Ln.exports.diff_match_patch=M;Ln.exports.DIFF_DELETE=re;Ln.exports.DIFF_INSERT=oe;Ln.exports.DIFF_EQUAL=G});var Dp=cn((y2,Rp)=>{Rp.exports=Qx;var Wv=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],Uv=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],Vv=["Su","Mo","Tu","We","Th","Fr","Sa"],oo=["January","February","March","April","May","June","July","August","September","October","November","December"],Gv=["ACDT","ACST","ACWT","ADT","ACT","AEDT","AEST","AFT","AKDT","AKST","ALMT","AMT","AMST","ANAT","ANAST","AQTT","ART","AST","AWDT","AWST","AZOT","AZOST","AZT","AZST","BNT","BDT","BOT","BRT","BRST","BST","BTT","B","CAST","CAT","CCT","CDT","CEDT","CEST","CET","CHADT","CHAST","CHOT","CHOST","CHsT","CHUT","CIT","CKT","CLST","CLT","COT","CST","CVT","CWST","CXT","C","DAVT","DDUT","DST","EASST","EAST","EAT","ECT","EDT","EEDT","EEST","EET","EGT","EGST","EST","E","EIT","FET","FJT","FJST","FKST","FKT","FNT","F","GALT","GAMT","GET","GFT","GILT","GMT","GST","GYT","G","HADT","HAST","HKT","HOVT","HOVST","HST","ICT","IDT","IOT","IRDT","IRKT","IRKST","IRST","IST","JST","KGT","KOST","KRAT","KRAST","KST","KUYT","LHDT","LHST","LINT","L","MAGT","MAGST","MART","MAWT","MDT","MeST","MHT","MIST","MMT","MSD","MSK","MST","MUT","MVT","MYT","NCT","NDT","NFT","N","NOVT","NOVST","NPT","NRT","NST","NT","NUT","NZDT","NZST","OMST","OMSST","ORAT","O","PDT","PET","PETT","PETST","PGT","PHT","PHOT","PKT","PMDT","PMST","PONT","PST","PWT","PYT","PYST","P","QYZT","RET","ROTT","R","SAKT","SAMT","SAST","SBT","SCT","SGT","SRT","SLT","SLST","SRET","SST","SYOT","TAHT","TFT","TJT","TKT","TLT","TMT","TOT","TRUT","TVT","T","ULAT","ULAST","UTC","UYST","UYT","UZT","U","VET","VLAT","VLAST","VOLT","VUT","V","WAKT","WAT","WAST","WDT","WEDT","WEST","WET","WFT","WGT","WGST","WIB","WIT","WITA","WST","WT","YAKT","YAKST","YAP","YEK","YEKS"],lo=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Qv=new RegExp(Wv.join("|"),"i"),Zv=new RegExp(Uv.join("|"),"i"),Jv=new RegExp("\\b("+Vv.join("|")+")\\b","i"),Xv=new RegExp(oo.join("|"),"i"),ex=new RegExp(lo.join("|"),"i"),ix=new RegExp("\\b("+Gv.join("|")+")\\b","i"),tx=/(\d+)(st|nd|rd|th)\b/i,nx=/(\d{1,4})([/.-])(\d{1,2})[/.-](\d{1,4})/,rx=/((\+|-)(12:00|11:00|10:00|09:30|09:00|08:00|07:00|06:00|05:00|04:00|03:30|03:00|02:00|01:00|00:00|01:00|02:00|03:00|03:30|04:00|04:30|05:00|05:30|05:45|06:00|06:30|07:00|08:00|08:45|09:00|09:30|10:00|10:30|11:00|12:00|12:45|13:00|14:00))$/,ax=/((\+|-)(1200|1100|1000|0930|0900|0800|0700|0600|0500|0400|0330|0300|0200|0100|0000|0100|0200|0300|0330|0400|0430|0500|0530|0545|0600|0630|0700|0800|0845|0900|0930|1000|1030|1100|1200|1245|1300|1400))$/,Mn="("+["AM?","PM?"].join("|")+")",sx=new RegExp("0\\d\\:\\d{1,2}\\:\\d{1,2}(\\s*)"+Mn,"i"),ox=new RegExp("0\\d\\:\\d{1,2}(\\s*)"+Mn,"i"),lx=new RegExp("0\\d(\\s*)"+Mn,"i"),cx=new RegExp("\\d{1,2}\\:\\d{1,2}\\:\\d{1,2}(\\s*)"+Mn,"i"),dx=new RegExp("\\d{1,2}\\:\\d{1,2}(\\s*)"+Mn,"i"),ux=new RegExp("\\d{1,2}(\\s*)"+Mn,"i"),px=new RegExp("\\d{1,2}"),mx=new RegExp(oo.join("|")+"-\\d{2}","i"),gx=new RegExp(lo.join("|")+"-\\d{2}","i"),fc=new RegExp("(\\d{1,2})(\\D+)("+oo.join("|")+"|"+lo.join("|")+")(\\2)('?\\d{2,4})"),hx=/\d{2}:\d{2}:\d{2}\.\d{3}/,fx=/\d{2}:\d{2}:\d{2}\.\d{2}/,yx=/\d{2}:\d{2}:\d{2}\.\d{1}/,bx=/T\d{2}:\d{2}:\d{2}/,vx=/0\d:\d{2}:\d{2}/,xx=/0\d:\d{2}/,wx=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}/,kx=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}\.\d{3}/,Sx=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}\.\d{2}/,zx=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}\.\d{1}/,Ax=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]/,Tx=/24:00:\d{2}/,Lx=/24:00:\d{2}\.\d{3}/,Ex=/24:00:\d{2}\.\d{2}/,Ox=/24:00:\d{2}\.\d{1}/,Cx=/24:00/,Mx=/\d{4}/,qx=/\d{2}/,Ix=/'\d{2}/,qp=/0\d/,Ip=/\d{1,2}/,Bx=/0\d/,_x=/\d{1,2}/,Fx=/^([1-9])\/([1-9]|0[1-9])$/,Rx=/^([1-9])\/(1[012])$/,Dx=/^(0[1-9]|[12][0-9]|3[01])\/([1-9])$/,Nx=/^(0[1-9]|[12][0-9]|3[01])\/(1[012]|0[1-9])$/,Kx=/^([1-9])(\D)([1-9][0-9])$/,Yx=/^([1-9])(\D)([0][0-9])$/,jx=/^(0[1-9]|1[012])(\D)([1-9][0-9])$/,Px=/^(0[1-9]|1[012])(\D)([0][0-9])$/,yc=/([/][M]|[M][/]|[MM]|[MMMM])/,Bp=/(D)/,bc=/(Y)/,_p=/\d+\D.+$/,Fp=/\D+(\d+)($|Z)/,Hx=/M\s*\d{1,2}\b.+$/,$x=/M\D+(0[1-9])\b.+$/,so=/\d+\s+(H|h|k)/,Wx=/\b(at)\b/i,Ux=/\d{13}/,Vx=/\d{10}/,Gx={"/":"MDY",".":"DMY","-":"YMD"};function Qx(e,t){var i=e.toString();if(t=t||{},t.preferredOrder=t.preferredOrder||Gx,i=i.replace(Ux,"x"),i=i.replace(Vx,"X"),i=i.replace(Wx,"[$1]"),i.match(fc)){let[,c,d,u,g,m]=i.match(fc),f=[];c.length===2&&c[0]==="0"||t.preferLongFormat?f.push("DD"):f.push("D"),f.push(d),u.match(oo)?f.push("MMMM"):u.match(lo)?f.push("MMM"):f.push(u),f.push(g),m[0]==="'"?f.push("'YY"):m.length===2?f.push("YY"):(m.length,f.push("YYYY"));var n=f.join("");i=i.replace(fc,n)}i=i.replace(Qv,"dddd"),i=i.replace(Zv,"ddd"),i=i.replace(Jv,"dd"),i=i.replace(tx,"Do"),i=i.replace(Xv,"MMMM"),i=i.replace(ex,"MMM"),i=i.replace(nx,Zx.bind(null,t)),i=i.replace(ix,c=>"["+c+"]"),i=i.replace(rx,"Z"),i=i.replace(ax,"ZZ"),i=i.replace(hx,"HH:mm:ss.SSS"),i=i.replace(fx,"HH:mm:ss.SS"),i=i.replace(yx,"HH:mm:ss.S"),i=i.replace(bx,"THH:mm:ss");function r(c){return function(d,u,g){return c+u+(g[0].toUpperCase()===g[0]?"A":"a")}}if(i=i.replace(sx,r("hh:mm:ss")),i=i.replace(cx,r("h:mm:ss")),i=i.replace(ox,r("hh:mm")),i=i.replace(dx,r("h:mm")),i=i.replace(lx,r("hh")),i=i.replace(ux,r("h")),i=i.replace(vx,"HH:mm:ss"),i=i.replace(kx,"H:mm:ss.SSS"),i=i.replace(Lx,(t.preferLongFormat?"kk":"k")+":mm:ss.SSS"),i=i.replace(Sx,"H:mm:ss.SS"),i=i.replace(Ex,(t.preferLongFormat?"kk":"k")+":mm:ss.SS"),i=i.replace(zx,"H:mm:ss.S"),i=i.replace(Ox,(t.preferLongFormat?"kk":"k")+":mm:ss.S"),i=i.replace(wx,"H:mm:ss"),i=i.replace(Tx,(t.preferLongFormat?"kk":"k")+":mm:ss"),i=i.replace(xx,"HH:mm"),i=i.replace(Ax,"H:mm"),i=i.replace(Cx,(t.preferLongFormat?"kk":"k")+":mm"),i=i.replace(Mx,"YYYY"),i=i.replace(Ix,"'YY"),i=i.replace(mx,"MMMM-YY"),i=i.replace(gx,"MMM-YY"),i=i.replace(Fx,"D/M"),i=i.replace(Rx,"D/MM"),i=i.replace(Dx,"DD/M"),i=i.replace(Nx,"DD/MM"),i=i.replace(Kx,"M$2YY"),i=i.replace(jx,"MM$2YY"),i=i.replace(Yx,"M$2DD"),i=i.replace(Px,"MM$2DD"),i.match(yc)){var a=/0\d\.\d{2}|\d{2}\.\d{2}/,s=/\d{1}\.\d{2}/;i=i.replace(a,"H.mm"),i=i.replace(s,"h.mm")}if(!i.match(yc)&&i.match(bc)&&(i=i.replace(Bx,"MM")),!i.match(yc)&&i.match(bc)&&(i=i.replace(_x,t.preferLongFormat?"MM":"M")),i.match($x)&&!i.match(so)&&(i=i.replace(qp,"DD")),i.match(Hx)&&!i.match(so)&&(i=i.replace(Ip,t.preferLongFormat?"DD":"D")),!i.match(Bp)&&i.match(_p)&&!i.match(so)&&(i=i.replace(qp,"DD")),!i.match(Bp)&&i.match(_p)&&!i.match(so)&&(i=i.replace(Ip,t.preferLongFormat?"DD":"D")),i.match(bc)||(i=i.replace(qx,"YY")),i.match(Fp)){var o=i.match(Fp)[1],l;o==="00"?l="HH":o==="24"?l=t.preferLongFormat?"kk":"k":o>12?l=t.preferLongFormat?"HH":"H":o[0]==="0"?l=t.preferLongFormat?"hh":"h":l=t.preferLongFormat?"hh":"k",i=i.replace(px,l)}return i.length<1&&(i=void 0),i}function Zx(e,t,i,n,r,a){var s,o=0,l=1,c=2,d=[i.length===1,r.length===1,a.length===1],u=[i[0]==="0",r[0]==="0",a[0]==="0"],g=i.length===4,m=r.length===4,f=a.length===4,w=typeof e.preferredOrder=="string"?e.preferredOrder:e.preferredOrder[n];i=parseInt(i,10),r=parseInt(r,10),a=parseInt(a,10),s=[i,r,a],w=w.toUpperCase();var x=function(z,L){d[z]!==d[L]&&!u[z]&&!u[L]&&(d[z]=!0,d[L]=!0)};if(i>31)return x(l,c),s[0]=g?"YYYY":"YY",s[1]=d[l]?"M":"MM",s[2]=d[c]?"D":"DD",s.join(n);if(i>12)return x(o,l),s[0]=d[o]?"D":"DD",s[1]=d[l]?"M":"MM",s[2]=f?"YYYY":"YY",s.join(n);if(r>12)return x(o,l),s[0]=d[o]?"M":"MM",s[1]=d[l]?"D":"DD",s[2]=f?"YYYY":"YY",s.join(n);if(a>31)return s[2]=f?"YYYY":"YY",w[0]==="M"&&i<13?(x(o,l),s[0]=d[o]?"M":"MM",s[1]=d[l]?"D":"DD",s.join(n)):(x(o,l),s[0]=d[o]?"D":"DD",s[1]=d[l]?"M":"MM",s.join(n));let v=[g,m,f];return x(w.indexOf("D"),w.indexOf("M")),s[w.indexOf("D")]=d[w.indexOf("D")]?"D":"DD",s[w.indexOf("M")]=d[w.indexOf("M")]?"M":"MM",s[w.indexOf("Y")]=v[w.indexOf("Y")]?"YYYY":"YY",s.join(n)}});var Yp=cn((b2,Kp)=>{var Np=Dp();Kp.exports=Np;typeof window<"u"&&window.moment&&(window.moment.parseFormat=Np)});var Am=cn((wY,zm)=>{"use strict";var ci=function(e){if(e=e||{},this.Promise=e.Promise||Promise,this.queues=Object.create(null),this.domainReentrant=e.domainReentrant||!1,this.domainReentrant){if(typeof process>"u"||typeof process.domain>"u")throw new Error("Domain-reentrant locks require `process.domain` to exist. Please flip `opts.domainReentrant = false`, use a NodeJS version that still implements Domain, or install a browser polyfill.");this.domains=Object.create(null)}this.timeout=e.timeout||ci.DEFAULT_TIMEOUT,this.maxOccupationTime=e.maxOccupationTime||ci.DEFAULT_MAX_OCCUPATION_TIME,this.maxExecutionTime=e.maxExecutionTime||ci.DEFAULT_MAX_EXECUTION_TIME,e.maxPending===1/0||Number.isInteger(e.maxPending)&&e.maxPending>=0?this.maxPending=e.maxPending:this.maxPending=ci.DEFAULT_MAX_PENDING};ci.DEFAULT_TIMEOUT=0;ci.DEFAULT_MAX_OCCUPATION_TIME=0;ci.DEFAULT_MAX_EXECUTION_TIME=0;ci.DEFAULT_MAX_PENDING=1e3;ci.prototype.acquire=function(e,t,i,n){if(Array.isArray(e))return this._acquireBatch(e,t,i,n);if(typeof t!="function")throw new Error("You must pass a function to execute");var r=null,a=null,s=null;typeof i!="function"&&(n=i,i=null,s=new this.Promise(function(v,z){r=v,a=z})),n=n||{};var o=!1,l=null,c=null,d=null,u=this,g=function(v,z,L){c&&(clearTimeout(c),c=null),d&&(clearTimeout(d),d=null),v&&(u.queues[e]&&u.queues[e].length===0&&delete u.queues[e],u.domainReentrant&&delete u.domains[e]),o||(s?z?a(z):r(L):typeof i=="function"&&i(z,L),o=!0),v&&u.queues[e]&&u.queues[e].length>0&&u.queues[e].shift()()},m=function(v){if(o)return g(v);l&&(clearTimeout(l),l=null),u.domainReentrant&&v&&(u.domains[e]=process.domain);var z=n.maxExecutionTime||u.maxExecutionTime;if(z&&(d=setTimeout(function(){u.queues[e]&&g(v,new Error("Maximum execution time is exceeded "+e))},z)),t.length===1){var L=!1;try{t(function(C,R){L||(L=!0,g(v,C,R))})}catch(C){L||(L=!0,g(v,C))}}else u._promiseTry(function(){return t()}).then(function(C){g(v,void 0,C)},function(C){g(v,C)})};if(u.domainReentrant&&process.domain&&(m=process.domain.bind(m)),!u.queues[e])u.queues[e]=[],m(!0);else if(u.domainReentrant&&process.domain&&process.domain===u.domains[e])m(!1);else if(u.queues[e].length>=u.maxPending)g(!1,new Error("Too many pending tasks in queue "+e));else{var f=function(){m(!0)};n.skipQueue?u.queues[e].unshift(f):u.queues[e].push(f);var w=n.timeout||u.timeout;w&&(l=setTimeout(function(){l=null,g(!1,new Error("async-lock timed out in queue "+e))},w))}var x=n.maxOccupationTime||u.maxOccupationTime;if(x&&(c=setTimeout(function(){u.queues[e]&&g(!1,new Error("Maximum occupation time is exceeded in queue "+e))},x)),s)return s};ci.prototype._acquireBatch=function(e,t,i,n){typeof i!="function"&&(n=i,i=null);var r=this,a=function(o,l){return function(c){r.acquire(o,l,c,n)}},s=e.reduceRight(function(o,l){return a(l,o)},t);if(typeof i=="function")s(i);else return new this.Promise(function(o,l){s.length===1?s(function(c,d){c?l(c):o(d)}):o(s())})};ci.prototype.isBusy=function(e){return e?!!this.queues[e]:Object.keys(this.queues).length>0};ci.prototype._promiseTry=function(e){try{return this.Promise.resolve(e())}catch(t){return this.Promise.reject(t)}};zm.exports=ci});var Lm=cn((kY,Tm)=>{"use strict";Tm.exports=Am()});var nk={};Fc(nk,{default:()=>Co});module.exports=Bm(nk);var pe=require("obsidian");function Xc(e){return typeof e>"u"||e===null}function _m(e){return typeof e=="object"&&e!==null}function Fm(e){return Array.isArray(e)?e:Xc(e)?[]:[e]}function Rm(e,t){var i,n,r,a;if(t)for(a=Object.keys(t),i=0,n=a.length;i<n;i+=1)r=a[i],e[r]=t[r];return e}function Dm(e,t){var i="",n;for(n=0;n<t;n+=1)i+=e;return i}function Nm(e){return e===0&&Number.NEGATIVE_INFINITY===1/e}var Km=Xc,Ym=_m,jm=Fm,Pm=Dm,Hm=Nm,$m=Rm,Te={isNothing:Km,isObject:Ym,toArray:jm,repeat:Pm,isNegativeZero:Hm,extend:$m};function ed(e,t){var i="",n=e.reason||"(unknown reason)";return e.mark?(e.mark.name&&(i+='in "'+e.mark.name+'" '),i+="("+(e.mark.line+1)+":"+(e.mark.column+1)+")",!t&&e.mark.snippet&&(i+=` -`+e.mark.snippet),n+" "+i):n}function Tn(e,t){Error.call(this),this.name="YAMLException",this.reason=e,this.mark=t,this.message=xc(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}Tn.prototype=Object.create(Error.prototype);Tn.prototype.constructor=Tn;Tn.prototype.toString=function(t){return this.name+": "+xc(this,t)};var De=Tn;function no(e,t,i,n,r){var a="",s="",o=Math.floor(r/2)-1;return n-t>o&&(a=" ... ",t=n-o+a.length),i-n>o&&(s=" ...",i=n+o-s.length),{str:a+e.slice(t,i).replace(/\t/g,"\u2192")+s,pos:n-t+a.length}}function ro(e,t){return xe.repeat(" ",t-e.length)+e}function pm(e,t){if(t=Object.create(t||null),!e.buffer)return null;t.maxLength||(t.maxLength=79),typeof t.indent!="number"&&(t.indent=1),typeof t.linesBefore!="number"&&(t.linesBefore=3),typeof t.linesAfter!="number"&&(t.linesAfter=2);for(var i=/\r?\n|\r|\0/g,n=[0],r=[],a,s=-1;a=i.exec(e.buffer);)r.push(a.index),n.push(a.index+a[0].length),e.position<=a.index&&s<0&&(s=n.length-2);s<0&&(s=n.length-1);var o="",l,d,c=Math.min(e.line+t.linesAfter,r.length).toString().length,u=t.maxLength-(t.indent+c+3);for(l=1;l<=t.linesBefore&&!(s-l<0);l++)d=no(e.buffer,n[s-l],r[s-l],e.position-(n[s]-n[s-l]),u),o=xe.repeat(" ",t.indent)+ro((e.line-l+1).toString(),c)+" | "+d.str+` -`+o;for(d=no(e.buffer,n[s],r[s],e.position,u),o+=xe.repeat(" ",t.indent)+ro((e.line+1).toString(),c)+" | "+d.str+` -`,o+=xe.repeat("-",t.indent+c+3+d.pos)+`^ -`,l=1;l<=t.linesAfter&&!(s+l>=r.length);l++)d=no(e.buffer,n[s+l],r[s+l],e.position-(n[s]-n[s+l]),u),o+=xe.repeat(" ",t.indent)+ro((e.line+l+1).toString(),c)+" | "+d.str+` -`;return o.replace(/\n$/,"")}var mm=pm,gm=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],hm=["scalar","sequence","mapping"];function fm(e){var t={};return e!==null&&Object.keys(e).forEach(function(i){e[i].forEach(function(n){t[String(n)]=i})}),t}function ym(e,t){if(t=t||{},Object.keys(t).forEach(function(i){if(gm.indexOf(i)===-1)throw new De('Unknown option "'+i+'" is met in definition of "'+e+'" YAML type.')}),this.options=t,this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(i){return i},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.representName=t.representName||null,this.defaultStyle=t.defaultStyle||null,this.multi=t.multi||!1,this.styleAliases=fm(t.styleAliases||null),hm.indexOf(this.kind)===-1)throw new De('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}var qe=ym;function rc(e,t){var i=[];return e[t].forEach(function(n){var r=i.length;i.forEach(function(a,s){a.tag===n.tag&&a.kind===n.kind&&a.multi===n.multi&&(r=s)}),i[r]=n}),i}function bm(){var e={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},t,i;function n(r){r.multi?(e.multi[r.kind].push(r),e.multi.fallback.push(r)):e[r.kind][r.tag]=e.fallback[r.tag]=r}for(t=0,i=arguments.length;t<i;t+=1)arguments[t].forEach(n);return e}function so(e){return this.extend(e)}so.prototype.extend=function(t){var i=[],n=[];if(t instanceof qe)n.push(t);else if(Array.isArray(t))n=n.concat(t);else if(t&&(Array.isArray(t.implicit)||Array.isArray(t.explicit)))t.implicit&&(i=i.concat(t.implicit)),t.explicit&&(n=n.concat(t.explicit));else throw new De("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");i.forEach(function(a){if(!(a instanceof qe))throw new De("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(a.loadKind&&a.loadKind!=="scalar")throw new De("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(a.multi)throw new De("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),n.forEach(function(a){if(!(a instanceof qe))throw new De("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var r=Object.create(so.prototype);return r.implicit=(this.implicit||[]).concat(i),r.explicit=(this.explicit||[]).concat(n),r.compiledImplicit=rc(r,"implicit"),r.compiledExplicit=rc(r,"explicit"),r.compiledTypeMap=bm(r.compiledImplicit,r.compiledExplicit),r};var vm=so,xm=new qe("tag:yaml.org,2002:str",{kind:"scalar",construct:function(e){return e!==null?e:""}}),wm=new qe("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(e){return e!==null?e:[]}}),km=new qe("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return e!==null?e:{}}}),zm=new vm({explicit:[xm,wm,km]});function Sm(e){if(e===null)return!0;var t=e.length;return t===1&&e==="~"||t===4&&(e==="null"||e==="Null"||e==="NULL")}function Am(){return null}function Tm(e){return e===null}var Lm=new qe("tag:yaml.org,2002:null",{kind:"scalar",resolve:Sm,construct:Am,predicate:Tm,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"});function Em(e){if(e===null)return!1;var t=e.length;return t===4&&(e==="true"||e==="True"||e==="TRUE")||t===5&&(e==="false"||e==="False"||e==="FALSE")}function Om(e){return e==="true"||e==="True"||e==="TRUE"}function Cm(e){return Object.prototype.toString.call(e)==="[object Boolean]"}var Mm=new qe("tag:yaml.org,2002:bool",{kind:"scalar",resolve:Em,construct:Om,predicate:Cm,represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"});function qm(e){return 48<=e&&e<=57||65<=e&&e<=70||97<=e&&e<=102}function Im(e){return 48<=e&&e<=55}function Bm(e){return 48<=e&&e<=57}function Fm(e){if(e===null)return!1;var t=e.length,i=0,n=!1,r;if(!t)return!1;if(r=e[i],(r==="-"||r==="+")&&(r=e[++i]),r==="0"){if(i+1===t)return!0;if(r=e[++i],r==="b"){for(i++;i<t;i++)if(r=e[i],r!=="_"){if(r!=="0"&&r!=="1")return!1;n=!0}return n&&r!=="_"}if(r==="x"){for(i++;i<t;i++)if(r=e[i],r!=="_"){if(!qm(e.charCodeAt(i)))return!1;n=!0}return n&&r!=="_"}if(r==="o"){for(i++;i<t;i++)if(r=e[i],r!=="_"){if(!Im(e.charCodeAt(i)))return!1;n=!0}return n&&r!=="_"}}if(r==="_")return!1;for(;i<t;i++)if(r=e[i],r!=="_"){if(!Bm(e.charCodeAt(i)))return!1;n=!0}return!(!n||r==="_")}function _m(e){var t=e,i=1,n;if(t.indexOf("_")!==-1&&(t=t.replace(/_/g,"")),n=t[0],(n==="-"||n==="+")&&(n==="-"&&(i=-1),t=t.slice(1),n=t[0]),t==="0")return 0;if(n==="0"){if(t[1]==="b")return i*parseInt(t.slice(2),2);if(t[1]==="x")return i*parseInt(t.slice(2),16);if(t[1]==="o")return i*parseInt(t.slice(2),8)}return i*parseInt(t,10)}function Rm(e){return Object.prototype.toString.call(e)==="[object Number]"&&e%1===0&&!xe.isNegativeZero(e)}var Dm=new qe("tag:yaml.org,2002:int",{kind:"scalar",resolve:Fm,construct:_m,predicate:Rm,represent:{binary:function(e){return e>=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),Nm=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function jm(e){return!(e===null||!Nm.test(e)||e[e.length-1]==="_")}function Km(e){var t,i;return t=e.replace(/_/g,"").toLowerCase(),i=t[0]==="-"?-1:1,"+-".indexOf(t[0])>=0&&(t=t.slice(1)),t===".inf"?i===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:t===".nan"?NaN:i*parseFloat(t,10)}var Ym=/^[-+]?[0-9]+e/;function Pm(e,t){var i;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(xe.isNegativeZero(e))return"-0.0";return i=e.toString(10),Ym.test(i)?i.replace("e",".e"):i}function Hm(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!==0||xe.isNegativeZero(e))}var $m=new qe("tag:yaml.org,2002:float",{kind:"scalar",resolve:jm,construct:Km,predicate:Hm,represent:Pm,defaultStyle:"lowercase"}),Wm=zm.extend({implicit:[Lm,Mm,Dm,$m]}),Vm=Wm,wc=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),kc=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function Um(e){return e===null?!1:wc.exec(e)!==null||kc.exec(e)!==null}function Gm(e){var t,i,n,r,a,s,o,l=0,d=null,c,u,m;if(t=wc.exec(e),t===null&&(t=kc.exec(e)),t===null)throw new Error("Date resolve error");if(i=+t[1],n=+t[2]-1,r=+t[3],!t[4])return new Date(Date.UTC(i,n,r));if(a=+t[4],s=+t[5],o=+t[6],t[7]){for(l=t[7].slice(0,3);l.length<3;)l+="0";l=+l}return t[9]&&(c=+t[10],u=+(t[11]||0),d=(c*60+u)*6e4,t[9]==="-"&&(d=-d)),m=new Date(Date.UTC(i,n,r,a,s,o,l)),d&&m.setTime(m.getTime()-d),m}function Qm(e){return e.toISOString()}var Zm=new qe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:Um,construct:Gm,instanceOf:Date,represent:Qm});function Jm(e){return e==="<<"||e===null}var Xm=new qe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:Jm}),po=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= -\r`;function eg(e){if(e===null)return!1;var t,i,n=0,r=e.length,a=po;for(i=0;i<r;i++)if(t=a.indexOf(e.charAt(i)),!(t>64)){if(t<0)return!1;n+=6}return n%8===0}function ig(e){var t,i,n=e.replace(/[\r\n=]/g,""),r=n.length,a=po,s=0,o=[];for(t=0;t<r;t++)t%4===0&&t&&(o.push(s>>16&255),o.push(s>>8&255),o.push(s&255)),s=s<<6|a.indexOf(n.charAt(t));return i=r%4*6,i===0?(o.push(s>>16&255),o.push(s>>8&255),o.push(s&255)):i===18?(o.push(s>>10&255),o.push(s>>2&255)):i===12&&o.push(s>>4&255),new Uint8Array(o)}function tg(e){var t="",i=0,n,r,a=e.length,s=po;for(n=0;n<a;n++)n%3===0&&n&&(t+=s[i>>18&63],t+=s[i>>12&63],t+=s[i>>6&63],t+=s[i&63]),i=(i<<8)+e[n];return r=a%3,r===0?(t+=s[i>>18&63],t+=s[i>>12&63],t+=s[i>>6&63],t+=s[i&63]):r===2?(t+=s[i>>10&63],t+=s[i>>4&63],t+=s[i<<2&63],t+=s[64]):r===1&&(t+=s[i>>2&63],t+=s[i<<4&63],t+=s[64],t+=s[64]),t}function ng(e){return Object.prototype.toString.call(e)==="[object Uint8Array]"}var rg=new qe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:eg,construct:ig,predicate:ng,represent:tg}),ag=Object.prototype.hasOwnProperty,sg=Object.prototype.toString;function og(e){if(e===null)return!0;var t=[],i,n,r,a,s,o=e;for(i=0,n=o.length;i<n;i+=1){if(r=o[i],s=!1,sg.call(r)!=="[object Object]")return!1;for(a in r)if(ag.call(r,a))if(!s)s=!0;else return!1;if(!s)return!1;if(t.indexOf(a)===-1)t.push(a);else return!1}return!0}function lg(e){return e!==null?e:[]}var cg=new qe("tag:yaml.org,2002:omap",{kind:"sequence",resolve:og,construct:lg}),dg=Object.prototype.toString;function ug(e){if(e===null)return!0;var t,i,n,r,a,s=e;for(a=new Array(s.length),t=0,i=s.length;t<i;t+=1){if(n=s[t],dg.call(n)!=="[object Object]"||(r=Object.keys(n),r.length!==1))return!1;a[t]=[r[0],n[r[0]]]}return!0}function pg(e){if(e===null)return[];var t,i,n,r,a,s=e;for(a=new Array(s.length),t=0,i=s.length;t<i;t+=1)n=s[t],r=Object.keys(n),a[t]=[r[0],n[r[0]]];return a}var mg=new qe("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:ug,construct:pg}),gg=Object.prototype.hasOwnProperty;function hg(e){if(e===null)return!0;var t,i=e;for(t in i)if(gg.call(i,t)&&i[t]!==null)return!1;return!0}function fg(e){return e!==null?e:{}}var yg=new qe("tag:yaml.org,2002:set",{kind:"mapping",resolve:hg,construct:fg}),zc=Vm.extend({implicit:[Zm,Xm],explicit:[rg,cg,mg,yg]}),Ni=Object.prototype.hasOwnProperty,ua=1,Sc=2,Ac=3,pa=4,ao=1,bg=2,ac=3,vg=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,xg=/[\x85\u2028\u2029]/,wg=/[,\[\]\{\}]/,Tc=/^(?:!|!!|![a-z\-]+!)$/i,Lc=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function sc(e){return Object.prototype.toString.call(e)}function fi(e){return e===10||e===13}function nt(e){return e===9||e===32}function $e(e){return e===9||e===32||e===10||e===13}function Ht(e){return e===44||e===91||e===93||e===123||e===125}function kg(e){var t;return 48<=e&&e<=57?e-48:(t=e|32,97<=t&&t<=102?t-97+10:-1)}function zg(e){return e===120?2:e===117?4:e===85?8:0}function Sg(e){return 48<=e&&e<=57?e-48:-1}function oc(e){return e===48?"\0":e===97?"\x07":e===98?"\b":e===116||e===9?" ":e===110?` -`:e===118?"\v":e===102?"\f":e===114?"\r":e===101?"\x1B":e===32?" ":e===34?'"':e===47?"/":e===92?"\\":e===78?"\x85":e===95?"\xA0":e===76?"\u2028":e===80?"\u2029":""}function Ag(e){return e<=65535?String.fromCharCode(e):String.fromCharCode((e-65536>>10)+55296,(e-65536&1023)+56320)}var Ec=new Array(256),Oc=new Array(256);for(tt=0;tt<256;tt++)Ec[tt]=oc(tt)?1:0,Oc[tt]=oc(tt);var tt;function Tg(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||zc,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function Cc(e,t){var i={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return i.snippet=mm(i),new De(t,i)}function K(e,t){throw Cc(e,t)}function ma(e,t){e.onWarning&&e.onWarning.call(null,Cc(e,t))}var lc={YAML:function(t,i,n){var r,a,s;t.version!==null&&K(t,"duplication of %YAML directive"),n.length!==1&&K(t,"YAML directive accepts exactly one argument"),r=/^([0-9]+)\.([0-9]+)$/.exec(n[0]),r===null&&K(t,"ill-formed argument of the YAML directive"),a=parseInt(r[1],10),s=parseInt(r[2],10),a!==1&&K(t,"unacceptable YAML version of the document"),t.version=n[0],t.checkLineBreaks=s<2,s!==1&&s!==2&&ma(t,"unsupported YAML version of the document")},TAG:function(t,i,n){var r,a;n.length!==2&&K(t,"TAG directive accepts exactly two arguments"),r=n[0],a=n[1],Tc.test(r)||K(t,"ill-formed tag handle (first argument) of the TAG directive"),Ni.call(t.tagMap,r)&&K(t,'there is a previously declared suffix for "'+r+'" tag handle'),Lc.test(a)||K(t,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch{K(t,"tag prefix is malformed: "+a)}t.tagMap[r]=a}};function Di(e,t,i,n){var r,a,s,o;if(t<i){if(o=e.input.slice(t,i),n)for(r=0,a=o.length;r<a;r+=1)s=o.charCodeAt(r),s===9||32<=s&&s<=1114111||K(e,"expected valid JSON character");else vg.test(o)&&K(e,"the stream contains non-printable characters");e.result+=o}}function cc(e,t,i,n){var r,a,s,o;for(xe.isObject(i)||K(e,"cannot merge mappings; the provided source object is unacceptable"),r=Object.keys(i),s=0,o=r.length;s<o;s+=1)a=r[s],Ni.call(t,a)||(t[a]=i[a],n[a]=!0)}function $t(e,t,i,n,r,a,s,o,l){var d,c;if(Array.isArray(r))for(r=Array.prototype.slice.call(r),d=0,c=r.length;d<c;d+=1)Array.isArray(r[d])&&K(e,"nested arrays are not supported inside keys"),typeof r=="object"&&sc(r[d])==="[object Object]"&&(r[d]="[object Object]");if(typeof r=="object"&&sc(r)==="[object Object]"&&(r="[object Object]"),r=String(r),t===null&&(t={}),n==="tag:yaml.org,2002:merge")if(Array.isArray(a))for(d=0,c=a.length;d<c;d+=1)cc(e,t,a[d],i);else cc(e,t,a,i);else!e.json&&!Ni.call(i,r)&&Ni.call(t,r)&&(e.line=s||e.line,e.lineStart=o||e.lineStart,e.position=l||e.position,K(e,"duplicated mapping key")),r==="__proto__"?Object.defineProperty(t,r,{configurable:!0,enumerable:!0,writable:!0,value:a}):t[r]=a,delete i[r];return t}function mo(e){var t;t=e.input.charCodeAt(e.position),t===10?e.position++:t===13?(e.position++,e.input.charCodeAt(e.position)===10&&e.position++):K(e,"a line break is expected"),e.line+=1,e.lineStart=e.position,e.firstTabInLine=-1}function fe(e,t,i){for(var n=0,r=e.input.charCodeAt(e.position);r!==0;){for(;nt(r);)r===9&&e.firstTabInLine===-1&&(e.firstTabInLine=e.position),r=e.input.charCodeAt(++e.position);if(t&&r===35)do r=e.input.charCodeAt(++e.position);while(r!==10&&r!==13&&r!==0);if(fi(r))for(mo(e),r=e.input.charCodeAt(e.position),n++,e.lineIndent=0;r===32;)e.lineIndent++,r=e.input.charCodeAt(++e.position);else break}return i!==-1&&n!==0&&e.lineIndent<i&&ma(e,"deficient indentation"),n}function fa(e){var t=e.position,i;return i=e.input.charCodeAt(t),!!((i===45||i===46)&&i===e.input.charCodeAt(t+1)&&i===e.input.charCodeAt(t+2)&&(t+=3,i=e.input.charCodeAt(t),i===0||$e(i)))}function go(e,t){t===1?e.result+=" ":t>1&&(e.result+=xe.repeat(` -`,t-1))}function Lg(e,t,i){var n,r,a,s,o,l,d,c,u=e.kind,m=e.result,g;if(g=e.input.charCodeAt(e.position),$e(g)||Ht(g)||g===35||g===38||g===42||g===33||g===124||g===62||g===39||g===34||g===37||g===64||g===96||(g===63||g===45)&&(r=e.input.charCodeAt(e.position+1),$e(r)||i&&Ht(r)))return!1;for(e.kind="scalar",e.result="",a=s=e.position,o=!1;g!==0;){if(g===58){if(r=e.input.charCodeAt(e.position+1),$e(r)||i&&Ht(r))break}else if(g===35){if(n=e.input.charCodeAt(e.position-1),$e(n))break}else{if(e.position===e.lineStart&&fa(e)||i&&Ht(g))break;if(fi(g))if(l=e.line,d=e.lineStart,c=e.lineIndent,fe(e,!1,-1),e.lineIndent>=t){o=!0,g=e.input.charCodeAt(e.position);continue}else{e.position=s,e.line=l,e.lineStart=d,e.lineIndent=c;break}}o&&(Di(e,a,s,!1),go(e,e.line-l),a=s=e.position,o=!1),nt(g)||(s=e.position+1),g=e.input.charCodeAt(++e.position)}return Di(e,a,s,!1),e.result?!0:(e.kind=u,e.result=m,!1)}function Eg(e,t){var i,n,r;if(i=e.input.charCodeAt(e.position),i!==39)return!1;for(e.kind="scalar",e.result="",e.position++,n=r=e.position;(i=e.input.charCodeAt(e.position))!==0;)if(i===39)if(Di(e,n,e.position,!0),i=e.input.charCodeAt(++e.position),i===39)n=e.position,e.position++,r=e.position;else return!0;else fi(i)?(Di(e,n,r,!0),go(e,fe(e,!1,t)),n=r=e.position):e.position===e.lineStart&&fa(e)?K(e,"unexpected end of the document within a single quoted scalar"):(e.position++,r=e.position);K(e,"unexpected end of the stream within a single quoted scalar")}function Og(e,t){var i,n,r,a,s,o;if(o=e.input.charCodeAt(e.position),o!==34)return!1;for(e.kind="scalar",e.result="",e.position++,i=n=e.position;(o=e.input.charCodeAt(e.position))!==0;){if(o===34)return Di(e,i,e.position,!0),e.position++,!0;if(o===92){if(Di(e,i,e.position,!0),o=e.input.charCodeAt(++e.position),fi(o))fe(e,!1,t);else if(o<256&&Ec[o])e.result+=Oc[o],e.position++;else if((s=zg(o))>0){for(r=s,a=0;r>0;r--)o=e.input.charCodeAt(++e.position),(s=kg(o))>=0?a=(a<<4)+s:K(e,"expected hexadecimal character");e.result+=Ag(a),e.position++}else K(e,"unknown escape sequence");i=n=e.position}else fi(o)?(Di(e,i,n,!0),go(e,fe(e,!1,t)),i=n=e.position):e.position===e.lineStart&&fa(e)?K(e,"unexpected end of the document within a double quoted scalar"):(e.position++,n=e.position)}K(e,"unexpected end of the stream within a double quoted scalar")}function Cg(e,t){var i=!0,n,r,a,s=e.tag,o,l=e.anchor,d,c,u,m,g,h=Object.create(null),x,b,v,S;if(S=e.input.charCodeAt(e.position),S===91)c=93,g=!1,o=[];else if(S===123)c=125,g=!0,o={};else return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=o),S=e.input.charCodeAt(++e.position);S!==0;){if(fe(e,!0,t),S=e.input.charCodeAt(e.position),S===c)return e.position++,e.tag=s,e.anchor=l,e.kind=g?"mapping":"sequence",e.result=o,!0;i?S===44&&K(e,"expected the node content, but found ','"):K(e,"missed comma between flow collection entries"),b=x=v=null,u=m=!1,S===63&&(d=e.input.charCodeAt(e.position+1),$e(d)&&(u=m=!0,e.position++,fe(e,!0,t))),n=e.line,r=e.lineStart,a=e.position,Wt(e,t,ua,!1,!0),b=e.tag,x=e.result,fe(e,!0,t),S=e.input.charCodeAt(e.position),(m||e.line===n)&&S===58&&(u=!0,S=e.input.charCodeAt(++e.position),fe(e,!0,t),Wt(e,t,ua,!1,!0),v=e.result),g?$t(e,o,h,b,x,v,n,r,a):u?o.push($t(e,null,h,b,x,v,n,r,a)):o.push(x),fe(e,!0,t),S=e.input.charCodeAt(e.position),S===44?(i=!0,S=e.input.charCodeAt(++e.position)):i=!1}K(e,"unexpected end of the stream within a flow collection")}function Mg(e,t){var i,n,r=ao,a=!1,s=!1,o=t,l=0,d=!1,c,u;if(u=e.input.charCodeAt(e.position),u===124)n=!1;else if(u===62)n=!0;else return!1;for(e.kind="scalar",e.result="";u!==0;)if(u=e.input.charCodeAt(++e.position),u===43||u===45)ao===r?r=u===43?ac:bg:K(e,"repeat of a chomping mode identifier");else if((c=Sg(u))>=0)c===0?K(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?K(e,"repeat of an indentation width identifier"):(o=t+c-1,s=!0);else break;if(nt(u)){do u=e.input.charCodeAt(++e.position);while(nt(u));if(u===35)do u=e.input.charCodeAt(++e.position);while(!fi(u)&&u!==0)}for(;u!==0;){for(mo(e),e.lineIndent=0,u=e.input.charCodeAt(e.position);(!s||e.lineIndent<o)&&u===32;)e.lineIndent++,u=e.input.charCodeAt(++e.position);if(!s&&e.lineIndent>o&&(o=e.lineIndent),fi(u)){l++;continue}if(e.lineIndent<o){r===ac?e.result+=xe.repeat(` -`,a?1+l:l):r===ao&&a&&(e.result+=` -`);break}for(n?nt(u)?(d=!0,e.result+=xe.repeat(` -`,a?1+l:l)):d?(d=!1,e.result+=xe.repeat(` -`,l+1)):l===0?a&&(e.result+=" "):e.result+=xe.repeat(` -`,l):e.result+=xe.repeat(` -`,a?1+l:l),a=!0,s=!0,l=0,i=e.position;!fi(u)&&u!==0;)u=e.input.charCodeAt(++e.position);Di(e,i,e.position,!1)}return!0}function dc(e,t){var i,n=e.tag,r=e.anchor,a=[],s,o=!1,l;if(e.firstTabInLine!==-1)return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=a),l=e.input.charCodeAt(e.position);l!==0&&(e.firstTabInLine!==-1&&(e.position=e.firstTabInLine,K(e,"tab characters must not be used in indentation")),!(l!==45||(s=e.input.charCodeAt(e.position+1),!$e(s))));){if(o=!0,e.position++,fe(e,!0,-1)&&e.lineIndent<=t){a.push(null),l=e.input.charCodeAt(e.position);continue}if(i=e.line,Wt(e,t,Ac,!1,!0),a.push(e.result),fe(e,!0,-1),l=e.input.charCodeAt(e.position),(e.line===i||e.lineIndent>t)&&l!==0)K(e,"bad indentation of a sequence entry");else if(e.lineIndent<t)break}return o?(e.tag=n,e.anchor=r,e.kind="sequence",e.result=a,!0):!1}function qg(e,t,i){var n,r,a,s,o,l,d=e.tag,c=e.anchor,u={},m=Object.create(null),g=null,h=null,x=null,b=!1,v=!1,S;if(e.firstTabInLine!==-1)return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=u),S=e.input.charCodeAt(e.position);S!==0;){if(!b&&e.firstTabInLine!==-1&&(e.position=e.firstTabInLine,K(e,"tab characters must not be used in indentation")),n=e.input.charCodeAt(e.position+1),a=e.line,(S===63||S===58)&&$e(n))S===63?(b&&($t(e,u,m,g,h,null,s,o,l),g=h=x=null),v=!0,b=!0,r=!0):b?(b=!1,r=!0):K(e,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),e.position+=1,S=n;else{if(s=e.line,o=e.lineStart,l=e.position,!Wt(e,i,Sc,!1,!0))break;if(e.line===a){for(S=e.input.charCodeAt(e.position);nt(S);)S=e.input.charCodeAt(++e.position);if(S===58)S=e.input.charCodeAt(++e.position),$e(S)||K(e,"a whitespace character is expected after the key-value separator within a block mapping"),b&&($t(e,u,m,g,h,null,s,o,l),g=h=x=null),v=!0,b=!1,r=!1,g=e.tag,h=e.result;else if(v)K(e,"can not read an implicit mapping pair; a colon is missed");else return e.tag=d,e.anchor=c,!0}else if(v)K(e,"can not read a block mapping entry; a multiline key may not be an implicit key");else return e.tag=d,e.anchor=c,!0}if((e.line===a||e.lineIndent>t)&&(b&&(s=e.line,o=e.lineStart,l=e.position),Wt(e,t,pa,!0,r)&&(b?h=e.result:x=e.result),b||($t(e,u,m,g,h,x,s,o,l),g=h=x=null),fe(e,!0,-1),S=e.input.charCodeAt(e.position)),(e.line===a||e.lineIndent>t)&&S!==0)K(e,"bad indentation of a mapping entry");else if(e.lineIndent<t)break}return b&&$t(e,u,m,g,h,null,s,o,l),v&&(e.tag=d,e.anchor=c,e.kind="mapping",e.result=u),v}function Ig(e){var t,i=!1,n=!1,r,a,s;if(s=e.input.charCodeAt(e.position),s!==33)return!1;if(e.tag!==null&&K(e,"duplication of a tag property"),s=e.input.charCodeAt(++e.position),s===60?(i=!0,s=e.input.charCodeAt(++e.position)):s===33?(n=!0,r="!!",s=e.input.charCodeAt(++e.position)):r="!",t=e.position,i){do s=e.input.charCodeAt(++e.position);while(s!==0&&s!==62);e.position<e.length?(a=e.input.slice(t,e.position),s=e.input.charCodeAt(++e.position)):K(e,"unexpected end of the stream within a verbatim tag")}else{for(;s!==0&&!$e(s);)s===33&&(n?K(e,"tag suffix cannot contain exclamation marks"):(r=e.input.slice(t-1,e.position+1),Tc.test(r)||K(e,"named tag handle cannot contain such characters"),n=!0,t=e.position+1)),s=e.input.charCodeAt(++e.position);a=e.input.slice(t,e.position),wg.test(a)&&K(e,"tag suffix cannot contain flow indicator characters")}a&&!Lc.test(a)&&K(e,"tag name cannot contain such characters: "+a);try{a=decodeURIComponent(a)}catch{K(e,"tag name is malformed: "+a)}return i?e.tag=a:Ni.call(e.tagMap,r)?e.tag=e.tagMap[r]+a:r==="!"?e.tag="!"+a:r==="!!"?e.tag="tag:yaml.org,2002:"+a:K(e,'undeclared tag handle "'+r+'"'),!0}function Bg(e){var t,i;if(i=e.input.charCodeAt(e.position),i!==38)return!1;for(e.anchor!==null&&K(e,"duplication of an anchor property"),i=e.input.charCodeAt(++e.position),t=e.position;i!==0&&!$e(i)&&!Ht(i);)i=e.input.charCodeAt(++e.position);return e.position===t&&K(e,"name of an anchor node must contain at least one character"),e.anchor=e.input.slice(t,e.position),!0}function Fg(e){var t,i,n;if(n=e.input.charCodeAt(e.position),n!==42)return!1;for(n=e.input.charCodeAt(++e.position),t=e.position;n!==0&&!$e(n)&&!Ht(n);)n=e.input.charCodeAt(++e.position);return e.position===t&&K(e,"name of an alias node must contain at least one character"),i=e.input.slice(t,e.position),Ni.call(e.anchorMap,i)||K(e,'unidentified alias "'+i+'"'),e.result=e.anchorMap[i],fe(e,!0,-1),!0}function Wt(e,t,i,n,r){var a,s,o,l=1,d=!1,c=!1,u,m,g,h,x,b;if(e.listener!==null&&e.listener("open",e),e.tag=null,e.anchor=null,e.kind=null,e.result=null,a=s=o=pa===i||Ac===i,n&&fe(e,!0,-1)&&(d=!0,e.lineIndent>t?l=1:e.lineIndent===t?l=0:e.lineIndent<t&&(l=-1)),l===1)for(;Ig(e)||Bg(e);)fe(e,!0,-1)?(d=!0,o=a,e.lineIndent>t?l=1:e.lineIndent===t?l=0:e.lineIndent<t&&(l=-1)):o=!1;if(o&&(o=d||r),(l===1||pa===i)&&(ua===i||Sc===i?x=t:x=t+1,b=e.position-e.lineStart,l===1?o&&(dc(e,b)||qg(e,b,x))||Cg(e,x)?c=!0:(s&&Mg(e,x)||Eg(e,x)||Og(e,x)?c=!0:Fg(e)?(c=!0,(e.tag!==null||e.anchor!==null)&&K(e,"alias node should not have any properties")):Lg(e,x,ua===i)&&(c=!0,e.tag===null&&(e.tag="?")),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):l===0&&(c=o&&dc(e,b))),e.tag===null)e.anchor!==null&&(e.anchorMap[e.anchor]=e.result);else if(e.tag==="?"){for(e.result!==null&&e.kind!=="scalar"&&K(e,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+e.kind+'"'),u=0,m=e.implicitTypes.length;u<m;u+=1)if(h=e.implicitTypes[u],h.resolve(e.result)){e.result=h.construct(e.result),e.tag=h.tag,e.anchor!==null&&(e.anchorMap[e.anchor]=e.result);break}}else if(e.tag!=="!"){if(Ni.call(e.typeMap[e.kind||"fallback"],e.tag))h=e.typeMap[e.kind||"fallback"][e.tag];else for(h=null,g=e.typeMap.multi[e.kind||"fallback"],u=0,m=g.length;u<m;u+=1)if(e.tag.slice(0,g[u].tag.length)===g[u].tag){h=g[u];break}h||K(e,"unknown tag !<"+e.tag+">"),e.result!==null&&h.kind!==e.kind&&K(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+h.kind+'", not "'+e.kind+'"'),h.resolve(e.result,e.tag)?(e.result=h.construct(e.result,e.tag),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):K(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return e.listener!==null&&e.listener("close",e),e.tag!==null||e.anchor!==null||c}function _g(e){var t=e.position,i,n,r,a=!1,s;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);(s=e.input.charCodeAt(e.position))!==0&&(fe(e,!0,-1),s=e.input.charCodeAt(e.position),!(e.lineIndent>0||s!==37));){for(a=!0,s=e.input.charCodeAt(++e.position),i=e.position;s!==0&&!$e(s);)s=e.input.charCodeAt(++e.position);for(n=e.input.slice(i,e.position),r=[],n.length<1&&K(e,"directive name must not be less than one character in length");s!==0;){for(;nt(s);)s=e.input.charCodeAt(++e.position);if(s===35){do s=e.input.charCodeAt(++e.position);while(s!==0&&!fi(s));break}if(fi(s))break;for(i=e.position;s!==0&&!$e(s);)s=e.input.charCodeAt(++e.position);r.push(e.input.slice(i,e.position))}s!==0&&mo(e),Ni.call(lc,n)?lc[n](e,n,r):ma(e,'unknown document directive "'+n+'"')}if(fe(e,!0,-1),e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45?(e.position+=3,fe(e,!0,-1)):a&&K(e,"directives end mark is expected"),Wt(e,e.lineIndent-1,pa,!1,!0),fe(e,!0,-1),e.checkLineBreaks&&xg.test(e.input.slice(t,e.position))&&ma(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&fa(e)){e.input.charCodeAt(e.position)===46&&(e.position+=3,fe(e,!0,-1));return}if(e.position<e.length-1)K(e,"end of the stream or a document separator is expected");else return}function Mc(e,t){e=String(e),t=t||{},e.length!==0&&(e.charCodeAt(e.length-1)!==10&&e.charCodeAt(e.length-1)!==13&&(e+=` -`),e.charCodeAt(0)===65279&&(e=e.slice(1)));var i=new Tg(e,t),n=e.indexOf("\0");for(n!==-1&&(i.position=n,K(i,"null byte is not allowed in input")),i.input+="\0";i.input.charCodeAt(i.position)===32;)i.lineIndent+=1,i.position+=1;for(;i.position<i.length-1;)_g(i);return i.documents}function Rg(e,t,i){t!==null&&typeof t=="object"&&typeof i>"u"&&(i=t,t=null);var n=Mc(e,i);if(typeof t!="function")return n;for(var r=0,a=n.length;r<a;r+=1)t(n[r])}function Dg(e,t){var i=Mc(e,t);if(i.length!==0){if(i.length===1)return i[0];throw new De("expected a single document in the stream, but found more")}}var Ng=Rg,jg=Dg,qc={loadAll:Ng,load:jg},Ic=Object.prototype.toString,Bc=Object.prototype.hasOwnProperty,ho=65279,Kg=9,Ln=10,Yg=13,Pg=32,Hg=33,$g=34,oo=35,Wg=37,Vg=38,Ug=39,Gg=42,Fc=44,Qg=45,ga=58,Zg=61,Jg=62,Xg=63,eh=64,_c=91,Rc=93,ih=96,Dc=123,th=124,Nc=125,Ie={};Ie[0]="\\0";Ie[7]="\\a";Ie[8]="\\b";Ie[9]="\\t";Ie[10]="\\n";Ie[11]="\\v";Ie[12]="\\f";Ie[13]="\\r";Ie[27]="\\e";Ie[34]='\\"';Ie[92]="\\\\";Ie[133]="\\N";Ie[160]="\\_";Ie[8232]="\\L";Ie[8233]="\\P";var nh=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],rh=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;function ah(e,t){var i,n,r,a,s,o,l;if(t===null)return{};for(i={},n=Object.keys(t),r=0,a=n.length;r<a;r+=1)s=n[r],o=String(t[s]),s.slice(0,2)==="!!"&&(s="tag:yaml.org,2002:"+s.slice(2)),l=e.compiledTypeMap.fallback[s],l&&Bc.call(l.styleAliases,o)&&(o=l.styleAliases[o]),i[s]=o;return i}function sh(e){var t,i,n;if(t=e.toString(16).toUpperCase(),e<=255)i="x",n=2;else if(e<=65535)i="u",n=4;else if(e<=4294967295)i="U",n=8;else throw new De("code point within a string may not be greater than 0xFFFFFFFF");return"\\"+i+xe.repeat("0",n-t.length)+t}var oh=1,En=2;function lh(e){this.schema=e.schema||zc,this.indent=Math.max(1,e.indent||2),this.noArrayIndent=e.noArrayIndent||!1,this.skipInvalid=e.skipInvalid||!1,this.flowLevel=xe.isNothing(e.flowLevel)?-1:e.flowLevel,this.styleMap=ah(this.schema,e.styles||null),this.sortKeys=e.sortKeys||!1,this.lineWidth=e.lineWidth||80,this.noRefs=e.noRefs||!1,this.noCompatMode=e.noCompatMode||!1,this.condenseFlow=e.condenseFlow||!1,this.quotingType=e.quotingType==='"'?En:oh,this.forceQuotes=e.forceQuotes||!1,this.replacer=typeof e.replacer=="function"?e.replacer:null,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function uc(e,t){for(var i=xe.repeat(" ",t),n=0,r=-1,a="",s,o=e.length;n<o;)r=e.indexOf(` +`+e.mark.snippet),n+" "+i):n}function Un(e,t){Error.call(this),this.name="YAMLException",this.reason=e,this.mark=t,this.message=ed(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}Un.prototype=Object.create(Error.prototype);Un.prototype.constructor=Un;Un.prototype.toString=function(t){return this.name+": "+ed(this,t)};var Ue=Un;function Io(e,t,i,n,r){var a="",s="",o=Math.floor(r/2)-1;return n-t>o&&(a=" ... ",t=n-o+a.length),i-n>o&&(s=" ...",i=n+o-s.length),{str:a+e.slice(t,i).replace(/\t/g,"\u2192")+s,pos:n-t+a.length}}function Bo(e,t){return Te.repeat(" ",t-e.length)+e}function Wm(e,t){if(t=Object.create(t||null),!e.buffer)return null;t.maxLength||(t.maxLength=79),typeof t.indent!="number"&&(t.indent=1),typeof t.linesBefore!="number"&&(t.linesBefore=3),typeof t.linesAfter!="number"&&(t.linesAfter=2);for(var i=/\r?\n|\r|\0/g,n=[0],r=[],a,s=-1;a=i.exec(e.buffer);)r.push(a.index),n.push(a.index+a[0].length),e.position<=a.index&&s<0&&(s=n.length-2);s<0&&(s=n.length-1);var o="",l,c,d=Math.min(e.line+t.linesAfter,r.length).toString().length,u=t.maxLength-(t.indent+d+3);for(l=1;l<=t.linesBefore&&!(s-l<0);l++)c=Io(e.buffer,n[s-l],r[s-l],e.position-(n[s]-n[s-l]),u),o=Te.repeat(" ",t.indent)+Bo((e.line-l+1).toString(),d)+" | "+c.str+` +`+o;for(c=Io(e.buffer,n[s],r[s],e.position,u),o+=Te.repeat(" ",t.indent)+Bo((e.line+1).toString(),d)+" | "+c.str+` +`,o+=Te.repeat("-",t.indent+d+3+c.pos)+`^ +`,l=1;l<=t.linesAfter&&!(s+l>=r.length);l++)c=Io(e.buffer,n[s+l],r[s+l],e.position-(n[s]-n[s+l]),u),o+=Te.repeat(" ",t.indent)+Bo((e.line+l+1).toString(),d)+" | "+c.str+` +`;return o.replace(/\n$/,"")}var Um=Wm,Vm=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],Gm=["scalar","sequence","mapping"];function Qm(e){var t={};return e!==null&&Object.keys(e).forEach(function(i){e[i].forEach(function(n){t[String(n)]=i})}),t}function Zm(e,t){if(t=t||{},Object.keys(t).forEach(function(i){if(Vm.indexOf(i)===-1)throw new Ue('Unknown option "'+i+'" is met in definition of "'+e+'" YAML type.')}),this.options=t,this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(i){return i},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.representName=t.representName||null,this.defaultStyle=t.defaultStyle||null,this.multi=t.multi||!1,this.styleAliases=Qm(t.styleAliases||null),Gm.indexOf(this.kind)===-1)throw new Ue('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}var Ye=Zm;function Dc(e,t){var i=[];return e[t].forEach(function(n){var r=i.length;i.forEach(function(a,s){a.tag===n.tag&&a.kind===n.kind&&a.multi===n.multi&&(r=s)}),i[r]=n}),i}function Jm(){var e={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},t,i;function n(r){r.multi?(e.multi[r.kind].push(r),e.multi.fallback.push(r)):e[r.kind][r.tag]=e.fallback[r.tag]=r}for(t=0,i=arguments.length;t<i;t+=1)arguments[t].forEach(n);return e}function Fo(e){return this.extend(e)}Fo.prototype.extend=function(t){var i=[],n=[];if(t instanceof Ye)n.push(t);else if(Array.isArray(t))n=n.concat(t);else if(t&&(Array.isArray(t.implicit)||Array.isArray(t.explicit)))t.implicit&&(i=i.concat(t.implicit)),t.explicit&&(n=n.concat(t.explicit));else throw new Ue("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");i.forEach(function(a){if(!(a instanceof Ye))throw new Ue("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(a.loadKind&&a.loadKind!=="scalar")throw new Ue("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(a.multi)throw new Ue("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),n.forEach(function(a){if(!(a instanceof Ye))throw new Ue("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var r=Object.create(Fo.prototype);return r.implicit=(this.implicit||[]).concat(i),r.explicit=(this.explicit||[]).concat(n),r.compiledImplicit=Dc(r,"implicit"),r.compiledExplicit=Dc(r,"explicit"),r.compiledTypeMap=Jm(r.compiledImplicit,r.compiledExplicit),r};var Xm=Fo,eg=new Ye("tag:yaml.org,2002:str",{kind:"scalar",construct:function(e){return e!==null?e:""}}),ig=new Ye("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(e){return e!==null?e:[]}}),tg=new Ye("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return e!==null?e:{}}}),ng=new Xm({explicit:[eg,ig,tg]});function rg(e){if(e===null)return!0;var t=e.length;return t===1&&e==="~"||t===4&&(e==="null"||e==="Null"||e==="NULL")}function ag(){return null}function sg(e){return e===null}var og=new Ye("tag:yaml.org,2002:null",{kind:"scalar",resolve:rg,construct:ag,predicate:sg,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"});function lg(e){if(e===null)return!1;var t=e.length;return t===4&&(e==="true"||e==="True"||e==="TRUE")||t===5&&(e==="false"||e==="False"||e==="FALSE")}function cg(e){return e==="true"||e==="True"||e==="TRUE"}function dg(e){return Object.prototype.toString.call(e)==="[object Boolean]"}var ug=new Ye("tag:yaml.org,2002:bool",{kind:"scalar",resolve:lg,construct:cg,predicate:dg,represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"});function pg(e){return 48<=e&&e<=57||65<=e&&e<=70||97<=e&&e<=102}function mg(e){return 48<=e&&e<=55}function gg(e){return 48<=e&&e<=57}function hg(e){if(e===null)return!1;var t=e.length,i=0,n=!1,r;if(!t)return!1;if(r=e[i],(r==="-"||r==="+")&&(r=e[++i]),r==="0"){if(i+1===t)return!0;if(r=e[++i],r==="b"){for(i++;i<t;i++)if(r=e[i],r!=="_"){if(r!=="0"&&r!=="1")return!1;n=!0}return n&&r!=="_"}if(r==="x"){for(i++;i<t;i++)if(r=e[i],r!=="_"){if(!pg(e.charCodeAt(i)))return!1;n=!0}return n&&r!=="_"}if(r==="o"){for(i++;i<t;i++)if(r=e[i],r!=="_"){if(!mg(e.charCodeAt(i)))return!1;n=!0}return n&&r!=="_"}}if(r==="_")return!1;for(;i<t;i++)if(r=e[i],r!=="_"){if(!gg(e.charCodeAt(i)))return!1;n=!0}return!(!n||r==="_")}function fg(e){var t=e,i=1,n;if(t.indexOf("_")!==-1&&(t=t.replace(/_/g,"")),n=t[0],(n==="-"||n==="+")&&(n==="-"&&(i=-1),t=t.slice(1),n=t[0]),t==="0")return 0;if(n==="0"){if(t[1]==="b")return i*parseInt(t.slice(2),2);if(t[1]==="x")return i*parseInt(t.slice(2),16);if(t[1]==="o")return i*parseInt(t.slice(2),8)}return i*parseInt(t,10)}function yg(e){return Object.prototype.toString.call(e)==="[object Number]"&&e%1===0&&!Te.isNegativeZero(e)}var bg=new Ye("tag:yaml.org,2002:int",{kind:"scalar",resolve:hg,construct:fg,predicate:yg,represent:{binary:function(e){return e>=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),vg=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function xg(e){return!(e===null||!vg.test(e)||e[e.length-1]==="_")}function wg(e){var t,i;return t=e.replace(/_/g,"").toLowerCase(),i=t[0]==="-"?-1:1,"+-".indexOf(t[0])>=0&&(t=t.slice(1)),t===".inf"?i===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:t===".nan"?NaN:i*parseFloat(t,10)}var kg=/^[-+]?[0-9]+e/;function Sg(e,t){var i;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Te.isNegativeZero(e))return"-0.0";return i=e.toString(10),kg.test(i)?i.replace("e",".e"):i}function zg(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!==0||Te.isNegativeZero(e))}var Ag=new Ye("tag:yaml.org,2002:float",{kind:"scalar",resolve:xg,construct:wg,predicate:zg,represent:Sg,defaultStyle:"lowercase"}),Tg=ng.extend({implicit:[og,ug,bg,Ag]}),Lg=Tg,id=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),td=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function Eg(e){return e===null?!1:id.exec(e)!==null||td.exec(e)!==null}function Og(e){var t,i,n,r,a,s,o,l=0,c=null,d,u,g;if(t=id.exec(e),t===null&&(t=td.exec(e)),t===null)throw new Error("Date resolve error");if(i=+t[1],n=+t[2]-1,r=+t[3],!t[4])return new Date(Date.UTC(i,n,r));if(a=+t[4],s=+t[5],o=+t[6],t[7]){for(l=t[7].slice(0,3);l.length<3;)l+="0";l=+l}return t[9]&&(d=+t[10],u=+(t[11]||0),c=(d*60+u)*6e4,t[9]==="-"&&(c=-c)),g=new Date(Date.UTC(i,n,r,a,s,o,l)),c&&g.setTime(g.getTime()-c),g}function Cg(e){return e.toISOString()}var Mg=new Ye("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:Eg,construct:Og,instanceOf:Date,represent:Cg});function qg(e){return e==="<<"||e===null}var Ig=new Ye("tag:yaml.org,2002:merge",{kind:"scalar",resolve:qg}),Yo=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function Bg(e){if(e===null)return!1;var t,i,n=0,r=e.length,a=Yo;for(i=0;i<r;i++)if(t=a.indexOf(e.charAt(i)),!(t>64)){if(t<0)return!1;n+=6}return n%8===0}function _g(e){var t,i,n=e.replace(/[\r\n=]/g,""),r=n.length,a=Yo,s=0,o=[];for(t=0;t<r;t++)t%4===0&&t&&(o.push(s>>16&255),o.push(s>>8&255),o.push(s&255)),s=s<<6|a.indexOf(n.charAt(t));return i=r%4*6,i===0?(o.push(s>>16&255),o.push(s>>8&255),o.push(s&255)):i===18?(o.push(s>>10&255),o.push(s>>2&255)):i===12&&o.push(s>>4&255),new Uint8Array(o)}function Fg(e){var t="",i=0,n,r,a=e.length,s=Yo;for(n=0;n<a;n++)n%3===0&&n&&(t+=s[i>>18&63],t+=s[i>>12&63],t+=s[i>>6&63],t+=s[i&63]),i=(i<<8)+e[n];return r=a%3,r===0?(t+=s[i>>18&63],t+=s[i>>12&63],t+=s[i>>6&63],t+=s[i&63]):r===2?(t+=s[i>>10&63],t+=s[i>>4&63],t+=s[i<<2&63],t+=s[64]):r===1&&(t+=s[i>>2&63],t+=s[i<<4&63],t+=s[64],t+=s[64]),t}function Rg(e){return Object.prototype.toString.call(e)==="[object Uint8Array]"}var Dg=new Ye("tag:yaml.org,2002:binary",{kind:"scalar",resolve:Bg,construct:_g,predicate:Rg,represent:Fg}),Ng=Object.prototype.hasOwnProperty,Kg=Object.prototype.toString;function Yg(e){if(e===null)return!0;var t=[],i,n,r,a,s,o=e;for(i=0,n=o.length;i<n;i+=1){if(r=o[i],s=!1,Kg.call(r)!=="[object Object]")return!1;for(a in r)if(Ng.call(r,a))if(!s)s=!0;else return!1;if(!s)return!1;if(t.indexOf(a)===-1)t.push(a);else return!1}return!0}function jg(e){return e!==null?e:[]}var Pg=new Ye("tag:yaml.org,2002:omap",{kind:"sequence",resolve:Yg,construct:jg}),Hg=Object.prototype.toString;function $g(e){if(e===null)return!0;var t,i,n,r,a,s=e;for(a=new Array(s.length),t=0,i=s.length;t<i;t+=1){if(n=s[t],Hg.call(n)!=="[object Object]"||(r=Object.keys(n),r.length!==1))return!1;a[t]=[r[0],n[r[0]]]}return!0}function Wg(e){if(e===null)return[];var t,i,n,r,a,s=e;for(a=new Array(s.length),t=0,i=s.length;t<i;t+=1)n=s[t],r=Object.keys(n),a[t]=[r[0],n[r[0]]];return a}var Ug=new Ye("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:$g,construct:Wg}),Vg=Object.prototype.hasOwnProperty;function Gg(e){if(e===null)return!0;var t,i=e;for(t in i)if(Vg.call(i,t)&&i[t]!==null)return!1;return!0}function Qg(e){return e!==null?e:{}}var Zg=new Ye("tag:yaml.org,2002:set",{kind:"mapping",resolve:Gg,construct:Qg}),nd=Lg.extend({implicit:[Mg,Ig],explicit:[Dg,Pg,Ug,Zg]}),Qi=Object.prototype.hasOwnProperty,Na=1,rd=2,ad=3,Ka=4,_o=1,Jg=2,Nc=3,Xg=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,eh=/[\x85\u2028\u2029]/,ih=/[,\[\]\{\}]/,sd=/^(?:!|!!|![a-z\-]+!)$/i,od=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function Kc(e){return Object.prototype.toString.call(e)}function Li(e){return e===10||e===13}function vt(e){return e===9||e===32}function ii(e){return e===9||e===32||e===10||e===13}function pn(e){return e===44||e===91||e===93||e===123||e===125}function th(e){var t;return 48<=e&&e<=57?e-48:(t=e|32,97<=t&&t<=102?t-97+10:-1)}function nh(e){return e===120?2:e===117?4:e===85?8:0}function rh(e){return 48<=e&&e<=57?e-48:-1}function Yc(e){return e===48?"\0":e===97?"\x07":e===98?"\b":e===116||e===9?" ":e===110?` +`:e===118?"\v":e===102?"\f":e===114?"\r":e===101?"\x1B":e===32?" ":e===34?'"':e===47?"/":e===92?"\\":e===78?"\x85":e===95?"\xA0":e===76?"\u2028":e===80?"\u2029":""}function ah(e){return e<=65535?String.fromCharCode(e):String.fromCharCode((e-65536>>10)+55296,(e-65536&1023)+56320)}var ld=new Array(256),cd=new Array(256);for(bt=0;bt<256;bt++)ld[bt]=Yc(bt)?1:0,cd[bt]=Yc(bt);var bt;function sh(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||nd,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function dd(e,t){var i={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return i.snippet=Um(i),new Ue(t,i)}function Y(e,t){throw dd(e,t)}function Ya(e,t){e.onWarning&&e.onWarning.call(null,dd(e,t))}var jc={YAML:function(t,i,n){var r,a,s;t.version!==null&&Y(t,"duplication of %YAML directive"),n.length!==1&&Y(t,"YAML directive accepts exactly one argument"),r=/^([0-9]+)\.([0-9]+)$/.exec(n[0]),r===null&&Y(t,"ill-formed argument of the YAML directive"),a=parseInt(r[1],10),s=parseInt(r[2],10),a!==1&&Y(t,"unacceptable YAML version of the document"),t.version=n[0],t.checkLineBreaks=s<2,s!==1&&s!==2&&Ya(t,"unsupported YAML version of the document")},TAG:function(t,i,n){var r,a;n.length!==2&&Y(t,"TAG directive accepts exactly two arguments"),r=n[0],a=n[1],sd.test(r)||Y(t,"ill-formed tag handle (first argument) of the TAG directive"),Qi.call(t.tagMap,r)&&Y(t,'there is a previously declared suffix for "'+r+'" tag handle'),od.test(a)||Y(t,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch{Y(t,"tag prefix is malformed: "+a)}t.tagMap[r]=a}};function Gi(e,t,i,n){var r,a,s,o;if(t<i){if(o=e.input.slice(t,i),n)for(r=0,a=o.length;r<a;r+=1)s=o.charCodeAt(r),s===9||32<=s&&s<=1114111||Y(e,"expected valid JSON character");else Xg.test(o)&&Y(e,"the stream contains non-printable characters");e.result+=o}}function Pc(e,t,i,n){var r,a,s,o;for(Te.isObject(i)||Y(e,"cannot merge mappings; the provided source object is unacceptable"),r=Object.keys(i),s=0,o=r.length;s<o;s+=1)a=r[s],Qi.call(t,a)||(t[a]=i[a],n[a]=!0)}function mn(e,t,i,n,r,a,s,o,l){var c,d;if(Array.isArray(r))for(r=Array.prototype.slice.call(r),c=0,d=r.length;c<d;c+=1)Array.isArray(r[c])&&Y(e,"nested arrays are not supported inside keys"),typeof r=="object"&&Kc(r[c])==="[object Object]"&&(r[c]="[object Object]");if(typeof r=="object"&&Kc(r)==="[object Object]"&&(r="[object Object]"),r=String(r),t===null&&(t={}),n==="tag:yaml.org,2002:merge")if(Array.isArray(a))for(c=0,d=a.length;c<d;c+=1)Pc(e,t,a[c],i);else Pc(e,t,a,i);else!e.json&&!Qi.call(i,r)&&Qi.call(t,r)&&(e.line=s||e.line,e.lineStart=o||e.lineStart,e.position=l||e.position,Y(e,"duplicated mapping key")),r==="__proto__"?Object.defineProperty(t,r,{configurable:!0,enumerable:!0,writable:!0,value:a}):t[r]=a,delete i[r];return t}function jo(e){var t;t=e.input.charCodeAt(e.position),t===10?e.position++:t===13?(e.position++,e.input.charCodeAt(e.position)===10&&e.position++):Y(e,"a line break is expected"),e.line+=1,e.lineStart=e.position,e.firstTabInLine=-1}function ze(e,t,i){for(var n=0,r=e.input.charCodeAt(e.position);r!==0;){for(;vt(r);)r===9&&e.firstTabInLine===-1&&(e.firstTabInLine=e.position),r=e.input.charCodeAt(++e.position);if(t&&r===35)do r=e.input.charCodeAt(++e.position);while(r!==10&&r!==13&&r!==0);if(Li(r))for(jo(e),r=e.input.charCodeAt(e.position),n++,e.lineIndent=0;r===32;)e.lineIndent++,r=e.input.charCodeAt(++e.position);else break}return i!==-1&&n!==0&&e.lineIndent<i&&Ya(e,"deficient indentation"),n}function Ha(e){var t=e.position,i;return i=e.input.charCodeAt(t),!!((i===45||i===46)&&i===e.input.charCodeAt(t+1)&&i===e.input.charCodeAt(t+2)&&(t+=3,i=e.input.charCodeAt(t),i===0||ii(i)))}function Po(e,t){t===1?e.result+=" ":t>1&&(e.result+=Te.repeat(` +`,t-1))}function oh(e,t,i){var n,r,a,s,o,l,c,d,u=e.kind,g=e.result,m;if(m=e.input.charCodeAt(e.position),ii(m)||pn(m)||m===35||m===38||m===42||m===33||m===124||m===62||m===39||m===34||m===37||m===64||m===96||(m===63||m===45)&&(r=e.input.charCodeAt(e.position+1),ii(r)||i&&pn(r)))return!1;for(e.kind="scalar",e.result="",a=s=e.position,o=!1;m!==0;){if(m===58){if(r=e.input.charCodeAt(e.position+1),ii(r)||i&&pn(r))break}else if(m===35){if(n=e.input.charCodeAt(e.position-1),ii(n))break}else{if(e.position===e.lineStart&&Ha(e)||i&&pn(m))break;if(Li(m))if(l=e.line,c=e.lineStart,d=e.lineIndent,ze(e,!1,-1),e.lineIndent>=t){o=!0,m=e.input.charCodeAt(e.position);continue}else{e.position=s,e.line=l,e.lineStart=c,e.lineIndent=d;break}}o&&(Gi(e,a,s,!1),Po(e,e.line-l),a=s=e.position,o=!1),vt(m)||(s=e.position+1),m=e.input.charCodeAt(++e.position)}return Gi(e,a,s,!1),e.result?!0:(e.kind=u,e.result=g,!1)}function lh(e,t){var i,n,r;if(i=e.input.charCodeAt(e.position),i!==39)return!1;for(e.kind="scalar",e.result="",e.position++,n=r=e.position;(i=e.input.charCodeAt(e.position))!==0;)if(i===39)if(Gi(e,n,e.position,!0),i=e.input.charCodeAt(++e.position),i===39)n=e.position,e.position++,r=e.position;else return!0;else Li(i)?(Gi(e,n,r,!0),Po(e,ze(e,!1,t)),n=r=e.position):e.position===e.lineStart&&Ha(e)?Y(e,"unexpected end of the document within a single quoted scalar"):(e.position++,r=e.position);Y(e,"unexpected end of the stream within a single quoted scalar")}function ch(e,t){var i,n,r,a,s,o;if(o=e.input.charCodeAt(e.position),o!==34)return!1;for(e.kind="scalar",e.result="",e.position++,i=n=e.position;(o=e.input.charCodeAt(e.position))!==0;){if(o===34)return Gi(e,i,e.position,!0),e.position++,!0;if(o===92){if(Gi(e,i,e.position,!0),o=e.input.charCodeAt(++e.position),Li(o))ze(e,!1,t);else if(o<256&&ld[o])e.result+=cd[o],e.position++;else if((s=nh(o))>0){for(r=s,a=0;r>0;r--)o=e.input.charCodeAt(++e.position),(s=th(o))>=0?a=(a<<4)+s:Y(e,"expected hexadecimal character");e.result+=ah(a),e.position++}else Y(e,"unknown escape sequence");i=n=e.position}else Li(o)?(Gi(e,i,n,!0),Po(e,ze(e,!1,t)),i=n=e.position):e.position===e.lineStart&&Ha(e)?Y(e,"unexpected end of the document within a double quoted scalar"):(e.position++,n=e.position)}Y(e,"unexpected end of the stream within a double quoted scalar")}function dh(e,t){var i=!0,n,r,a,s=e.tag,o,l=e.anchor,c,d,u,g,m,f=Object.create(null),w,x,v,z;if(z=e.input.charCodeAt(e.position),z===91)d=93,m=!1,o=[];else if(z===123)d=125,m=!0,o={};else return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=o),z=e.input.charCodeAt(++e.position);z!==0;){if(ze(e,!0,t),z=e.input.charCodeAt(e.position),z===d)return e.position++,e.tag=s,e.anchor=l,e.kind=m?"mapping":"sequence",e.result=o,!0;i?z===44&&Y(e,"expected the node content, but found ','"):Y(e,"missed comma between flow collection entries"),x=w=v=null,u=g=!1,z===63&&(c=e.input.charCodeAt(e.position+1),ii(c)&&(u=g=!0,e.position++,ze(e,!0,t))),n=e.line,r=e.lineStart,a=e.position,gn(e,t,Na,!1,!0),x=e.tag,w=e.result,ze(e,!0,t),z=e.input.charCodeAt(e.position),(g||e.line===n)&&z===58&&(u=!0,z=e.input.charCodeAt(++e.position),ze(e,!0,t),gn(e,t,Na,!1,!0),v=e.result),m?mn(e,o,f,x,w,v,n,r,a):u?o.push(mn(e,null,f,x,w,v,n,r,a)):o.push(w),ze(e,!0,t),z=e.input.charCodeAt(e.position),z===44?(i=!0,z=e.input.charCodeAt(++e.position)):i=!1}Y(e,"unexpected end of the stream within a flow collection")}function uh(e,t){var i,n,r=_o,a=!1,s=!1,o=t,l=0,c=!1,d,u;if(u=e.input.charCodeAt(e.position),u===124)n=!1;else if(u===62)n=!0;else return!1;for(e.kind="scalar",e.result="";u!==0;)if(u=e.input.charCodeAt(++e.position),u===43||u===45)_o===r?r=u===43?Nc:Jg:Y(e,"repeat of a chomping mode identifier");else if((d=rh(u))>=0)d===0?Y(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?Y(e,"repeat of an indentation width identifier"):(o=t+d-1,s=!0);else break;if(vt(u)){do u=e.input.charCodeAt(++e.position);while(vt(u));if(u===35)do u=e.input.charCodeAt(++e.position);while(!Li(u)&&u!==0)}for(;u!==0;){for(jo(e),e.lineIndent=0,u=e.input.charCodeAt(e.position);(!s||e.lineIndent<o)&&u===32;)e.lineIndent++,u=e.input.charCodeAt(++e.position);if(!s&&e.lineIndent>o&&(o=e.lineIndent),Li(u)){l++;continue}if(e.lineIndent<o){r===Nc?e.result+=Te.repeat(` +`,a?1+l:l):r===_o&&a&&(e.result+=` +`);break}for(n?vt(u)?(c=!0,e.result+=Te.repeat(` +`,a?1+l:l)):c?(c=!1,e.result+=Te.repeat(` +`,l+1)):l===0?a&&(e.result+=" "):e.result+=Te.repeat(` +`,l):e.result+=Te.repeat(` +`,a?1+l:l),a=!0,s=!0,l=0,i=e.position;!Li(u)&&u!==0;)u=e.input.charCodeAt(++e.position);Gi(e,i,e.position,!1)}return!0}function Hc(e,t){var i,n=e.tag,r=e.anchor,a=[],s,o=!1,l;if(e.firstTabInLine!==-1)return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=a),l=e.input.charCodeAt(e.position);l!==0&&(e.firstTabInLine!==-1&&(e.position=e.firstTabInLine,Y(e,"tab characters must not be used in indentation")),!(l!==45||(s=e.input.charCodeAt(e.position+1),!ii(s))));){if(o=!0,e.position++,ze(e,!0,-1)&&e.lineIndent<=t){a.push(null),l=e.input.charCodeAt(e.position);continue}if(i=e.line,gn(e,t,ad,!1,!0),a.push(e.result),ze(e,!0,-1),l=e.input.charCodeAt(e.position),(e.line===i||e.lineIndent>t)&&l!==0)Y(e,"bad indentation of a sequence entry");else if(e.lineIndent<t)break}return o?(e.tag=n,e.anchor=r,e.kind="sequence",e.result=a,!0):!1}function ph(e,t,i){var n,r,a,s,o,l,c=e.tag,d=e.anchor,u={},g=Object.create(null),m=null,f=null,w=null,x=!1,v=!1,z;if(e.firstTabInLine!==-1)return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=u),z=e.input.charCodeAt(e.position);z!==0;){if(!x&&e.firstTabInLine!==-1&&(e.position=e.firstTabInLine,Y(e,"tab characters must not be used in indentation")),n=e.input.charCodeAt(e.position+1),a=e.line,(z===63||z===58)&&ii(n))z===63?(x&&(mn(e,u,g,m,f,null,s,o,l),m=f=w=null),v=!0,x=!0,r=!0):x?(x=!1,r=!0):Y(e,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),e.position+=1,z=n;else{if(s=e.line,o=e.lineStart,l=e.position,!gn(e,i,rd,!1,!0))break;if(e.line===a){for(z=e.input.charCodeAt(e.position);vt(z);)z=e.input.charCodeAt(++e.position);if(z===58)z=e.input.charCodeAt(++e.position),ii(z)||Y(e,"a whitespace character is expected after the key-value separator within a block mapping"),x&&(mn(e,u,g,m,f,null,s,o,l),m=f=w=null),v=!0,x=!1,r=!1,m=e.tag,f=e.result;else if(v)Y(e,"can not read an implicit mapping pair; a colon is missed");else return e.tag=c,e.anchor=d,!0}else if(v)Y(e,"can not read a block mapping entry; a multiline key may not be an implicit key");else return e.tag=c,e.anchor=d,!0}if((e.line===a||e.lineIndent>t)&&(x&&(s=e.line,o=e.lineStart,l=e.position),gn(e,t,Ka,!0,r)&&(x?f=e.result:w=e.result),x||(mn(e,u,g,m,f,w,s,o,l),m=f=w=null),ze(e,!0,-1),z=e.input.charCodeAt(e.position)),(e.line===a||e.lineIndent>t)&&z!==0)Y(e,"bad indentation of a mapping entry");else if(e.lineIndent<t)break}return x&&mn(e,u,g,m,f,null,s,o,l),v&&(e.tag=c,e.anchor=d,e.kind="mapping",e.result=u),v}function mh(e){var t,i=!1,n=!1,r,a,s;if(s=e.input.charCodeAt(e.position),s!==33)return!1;if(e.tag!==null&&Y(e,"duplication of a tag property"),s=e.input.charCodeAt(++e.position),s===60?(i=!0,s=e.input.charCodeAt(++e.position)):s===33?(n=!0,r="!!",s=e.input.charCodeAt(++e.position)):r="!",t=e.position,i){do s=e.input.charCodeAt(++e.position);while(s!==0&&s!==62);e.position<e.length?(a=e.input.slice(t,e.position),s=e.input.charCodeAt(++e.position)):Y(e,"unexpected end of the stream within a verbatim tag")}else{for(;s!==0&&!ii(s);)s===33&&(n?Y(e,"tag suffix cannot contain exclamation marks"):(r=e.input.slice(t-1,e.position+1),sd.test(r)||Y(e,"named tag handle cannot contain such characters"),n=!0,t=e.position+1)),s=e.input.charCodeAt(++e.position);a=e.input.slice(t,e.position),ih.test(a)&&Y(e,"tag suffix cannot contain flow indicator characters")}a&&!od.test(a)&&Y(e,"tag name cannot contain such characters: "+a);try{a=decodeURIComponent(a)}catch{Y(e,"tag name is malformed: "+a)}return i?e.tag=a:Qi.call(e.tagMap,r)?e.tag=e.tagMap[r]+a:r==="!"?e.tag="!"+a:r==="!!"?e.tag="tag:yaml.org,2002:"+a:Y(e,'undeclared tag handle "'+r+'"'),!0}function gh(e){var t,i;if(i=e.input.charCodeAt(e.position),i!==38)return!1;for(e.anchor!==null&&Y(e,"duplication of an anchor property"),i=e.input.charCodeAt(++e.position),t=e.position;i!==0&&!ii(i)&&!pn(i);)i=e.input.charCodeAt(++e.position);return e.position===t&&Y(e,"name of an anchor node must contain at least one character"),e.anchor=e.input.slice(t,e.position),!0}function hh(e){var t,i,n;if(n=e.input.charCodeAt(e.position),n!==42)return!1;for(n=e.input.charCodeAt(++e.position),t=e.position;n!==0&&!ii(n)&&!pn(n);)n=e.input.charCodeAt(++e.position);return e.position===t&&Y(e,"name of an alias node must contain at least one character"),i=e.input.slice(t,e.position),Qi.call(e.anchorMap,i)||Y(e,'unidentified alias "'+i+'"'),e.result=e.anchorMap[i],ze(e,!0,-1),!0}function gn(e,t,i,n,r){var a,s,o,l=1,c=!1,d=!1,u,g,m,f,w,x;if(e.listener!==null&&e.listener("open",e),e.tag=null,e.anchor=null,e.kind=null,e.result=null,a=s=o=Ka===i||ad===i,n&&ze(e,!0,-1)&&(c=!0,e.lineIndent>t?l=1:e.lineIndent===t?l=0:e.lineIndent<t&&(l=-1)),l===1)for(;mh(e)||gh(e);)ze(e,!0,-1)?(c=!0,o=a,e.lineIndent>t?l=1:e.lineIndent===t?l=0:e.lineIndent<t&&(l=-1)):o=!1;if(o&&(o=c||r),(l===1||Ka===i)&&(Na===i||rd===i?w=t:w=t+1,x=e.position-e.lineStart,l===1?o&&(Hc(e,x)||ph(e,x,w))||dh(e,w)?d=!0:(s&&uh(e,w)||lh(e,w)||ch(e,w)?d=!0:hh(e)?(d=!0,(e.tag!==null||e.anchor!==null)&&Y(e,"alias node should not have any properties")):oh(e,w,Na===i)&&(d=!0,e.tag===null&&(e.tag="?")),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):l===0&&(d=o&&Hc(e,x))),e.tag===null)e.anchor!==null&&(e.anchorMap[e.anchor]=e.result);else if(e.tag==="?"){for(e.result!==null&&e.kind!=="scalar"&&Y(e,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+e.kind+'"'),u=0,g=e.implicitTypes.length;u<g;u+=1)if(f=e.implicitTypes[u],f.resolve(e.result)){e.result=f.construct(e.result),e.tag=f.tag,e.anchor!==null&&(e.anchorMap[e.anchor]=e.result);break}}else if(e.tag!=="!"){if(Qi.call(e.typeMap[e.kind||"fallback"],e.tag))f=e.typeMap[e.kind||"fallback"][e.tag];else for(f=null,m=e.typeMap.multi[e.kind||"fallback"],u=0,g=m.length;u<g;u+=1)if(e.tag.slice(0,m[u].tag.length)===m[u].tag){f=m[u];break}f||Y(e,"unknown tag !<"+e.tag+">"),e.result!==null&&f.kind!==e.kind&&Y(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+f.kind+'", not "'+e.kind+'"'),f.resolve(e.result,e.tag)?(e.result=f.construct(e.result,e.tag),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):Y(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return e.listener!==null&&e.listener("close",e),e.tag!==null||e.anchor!==null||d}function fh(e){var t=e.position,i,n,r,a=!1,s;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);(s=e.input.charCodeAt(e.position))!==0&&(ze(e,!0,-1),s=e.input.charCodeAt(e.position),!(e.lineIndent>0||s!==37));){for(a=!0,s=e.input.charCodeAt(++e.position),i=e.position;s!==0&&!ii(s);)s=e.input.charCodeAt(++e.position);for(n=e.input.slice(i,e.position),r=[],n.length<1&&Y(e,"directive name must not be less than one character in length");s!==0;){for(;vt(s);)s=e.input.charCodeAt(++e.position);if(s===35){do s=e.input.charCodeAt(++e.position);while(s!==0&&!Li(s));break}if(Li(s))break;for(i=e.position;s!==0&&!ii(s);)s=e.input.charCodeAt(++e.position);r.push(e.input.slice(i,e.position))}s!==0&&jo(e),Qi.call(jc,n)?jc[n](e,n,r):Ya(e,'unknown document directive "'+n+'"')}if(ze(e,!0,-1),e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45?(e.position+=3,ze(e,!0,-1)):a&&Y(e,"directives end mark is expected"),gn(e,e.lineIndent-1,Ka,!1,!0),ze(e,!0,-1),e.checkLineBreaks&&eh.test(e.input.slice(t,e.position))&&Ya(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&Ha(e)){e.input.charCodeAt(e.position)===46&&(e.position+=3,ze(e,!0,-1));return}if(e.position<e.length-1)Y(e,"end of the stream or a document separator is expected");else return}function ud(e,t){e=String(e),t=t||{},e.length!==0&&(e.charCodeAt(e.length-1)!==10&&e.charCodeAt(e.length-1)!==13&&(e+=` +`),e.charCodeAt(0)===65279&&(e=e.slice(1)));var i=new sh(e,t),n=e.indexOf("\0");for(n!==-1&&(i.position=n,Y(i,"null byte is not allowed in input")),i.input+="\0";i.input.charCodeAt(i.position)===32;)i.lineIndent+=1,i.position+=1;for(;i.position<i.length-1;)fh(i);return i.documents}function yh(e,t,i){t!==null&&typeof t=="object"&&typeof i>"u"&&(i=t,t=null);var n=ud(e,i);if(typeof t!="function")return n;for(var r=0,a=n.length;r<a;r+=1)t(n[r])}function bh(e,t){var i=ud(e,t);if(i.length!==0){if(i.length===1)return i[0];throw new Ue("expected a single document in the stream, but found more")}}var vh=yh,xh=bh,pd={loadAll:vh,load:xh},md=Object.prototype.toString,gd=Object.prototype.hasOwnProperty,Ho=65279,wh=9,Vn=10,kh=13,Sh=32,zh=33,Ah=34,Ro=35,Th=37,Lh=38,Eh=39,Oh=42,hd=44,Ch=45,ja=58,Mh=61,qh=62,Ih=63,Bh=64,fd=91,yd=93,_h=96,bd=123,Fh=124,vd=125,je={};je[0]="\\0";je[7]="\\a";je[8]="\\b";je[9]="\\t";je[10]="\\n";je[11]="\\v";je[12]="\\f";je[13]="\\r";je[27]="\\e";je[34]='\\"';je[92]="\\\\";je[133]="\\N";je[160]="\\_";je[8232]="\\L";je[8233]="\\P";var Rh=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],Dh=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;function Nh(e,t){var i,n,r,a,s,o,l;if(t===null)return{};for(i={},n=Object.keys(t),r=0,a=n.length;r<a;r+=1)s=n[r],o=String(t[s]),s.slice(0,2)==="!!"&&(s="tag:yaml.org,2002:"+s.slice(2)),l=e.compiledTypeMap.fallback[s],l&&gd.call(l.styleAliases,o)&&(o=l.styleAliases[o]),i[s]=o;return i}function Kh(e){var t,i,n;if(t=e.toString(16).toUpperCase(),e<=255)i="x",n=2;else if(e<=65535)i="u",n=4;else if(e<=4294967295)i="U",n=8;else throw new Ue("code point within a string may not be greater than 0xFFFFFFFF");return"\\"+i+Te.repeat("0",n-t.length)+t}var Yh=1,Gn=2;function jh(e){this.schema=e.schema||nd,this.indent=Math.max(1,e.indent||2),this.noArrayIndent=e.noArrayIndent||!1,this.skipInvalid=e.skipInvalid||!1,this.flowLevel=Te.isNothing(e.flowLevel)?-1:e.flowLevel,this.styleMap=Nh(this.schema,e.styles||null),this.sortKeys=e.sortKeys||!1,this.lineWidth=e.lineWidth||80,this.noRefs=e.noRefs||!1,this.noCompatMode=e.noCompatMode||!1,this.condenseFlow=e.condenseFlow||!1,this.quotingType=e.quotingType==='"'?Gn:Yh,this.forceQuotes=e.forceQuotes||!1,this.replacer=typeof e.replacer=="function"?e.replacer:null,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function $c(e,t){for(var i=Te.repeat(" ",t),n=0,r=-1,a="",s,o=e.length;n<o;)r=e.indexOf(` `,n),r===-1?(s=e.slice(n),n=o):(s=e.slice(n,r+1),n=r+1),s.length&&s!==` -`&&(a+=i),a+=s;return a}function lo(e,t){return` -`+xe.repeat(" ",e.indent*t)}function ch(e,t){var i,n,r;for(i=0,n=e.implicitTypes.length;i<n;i+=1)if(r=e.implicitTypes[i],r.resolve(t))return!0;return!1}function ha(e){return e===Pg||e===Kg}function On(e){return 32<=e&&e<=126||161<=e&&e<=55295&&e!==8232&&e!==8233||57344<=e&&e<=65533&&e!==ho||65536<=e&&e<=1114111}function pc(e){return On(e)&&e!==ho&&e!==Yg&&e!==Ln}function mc(e,t,i){var n=pc(e),r=n&&!ha(e);return(i?n:n&&e!==Fc&&e!==_c&&e!==Rc&&e!==Dc&&e!==Nc)&&e!==oo&&!(t===ga&&!r)||pc(t)&&!ha(t)&&e===oo||t===ga&&r}function dh(e){return On(e)&&e!==ho&&!ha(e)&&e!==Qg&&e!==Xg&&e!==ga&&e!==Fc&&e!==_c&&e!==Rc&&e!==Dc&&e!==Nc&&e!==oo&&e!==Vg&&e!==Gg&&e!==Hg&&e!==th&&e!==Zg&&e!==Jg&&e!==Ug&&e!==$g&&e!==Wg&&e!==eh&&e!==ih}function uh(e){return!ha(e)&&e!==ga}function An(e,t){var i=e.charCodeAt(t),n;return i>=55296&&i<=56319&&t+1<e.length&&(n=e.charCodeAt(t+1),n>=56320&&n<=57343)?(i-55296)*1024+n-56320+65536:i}function jc(e){var t=/^\n* /;return t.test(e)}var Kc=1,co=2,Yc=3,Pc=4,Pt=5;function ph(e,t,i,n,r,a,s,o){var l,d=0,c=null,u=!1,m=!1,g=n!==-1,h=-1,x=dh(An(e,0))&&uh(An(e,e.length-1));if(t||s)for(l=0;l<e.length;d>=65536?l+=2:l++){if(d=An(e,l),!On(d))return Pt;x=x&&mc(d,c,o),c=d}else{for(l=0;l<e.length;d>=65536?l+=2:l++){if(d=An(e,l),d===Ln)u=!0,g&&(m=m||l-h-1>n&&e[h+1]!==" ",h=l);else if(!On(d))return Pt;x=x&&mc(d,c,o),c=d}m=m||g&&l-h-1>n&&e[h+1]!==" "}return!u&&!m?x&&!s&&!r(e)?Kc:a===En?Pt:co:i>9&&jc(e)?Pt:s?a===En?Pt:co:m?Pc:Yc}function mh(e,t,i,n,r){e.dump=function(){if(t.length===0)return e.quotingType===En?'""':"''";if(!e.noCompatMode&&(nh.indexOf(t)!==-1||rh.test(t)))return e.quotingType===En?'"'+t+'"':"'"+t+"'";var a=e.indent*Math.max(1,i),s=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-a),o=n||e.flowLevel>-1&&i>=e.flowLevel;function l(d){return ch(e,d)}switch(ph(t,o,e.indent,s,l,e.quotingType,e.forceQuotes&&!n,r)){case Kc:return t;case co:return"'"+t.replace(/'/g,"''")+"'";case Yc:return"|"+gc(t,e.indent)+hc(uc(t,a));case Pc:return">"+gc(t,e.indent)+hc(uc(gh(t,s),a));case Pt:return'"'+hh(t)+'"';default:throw new De("impossible error: invalid scalar style")}}()}function gc(e,t){var i=jc(e)?String(t):"",n=e[e.length-1]===` +`&&(a+=i),a+=s;return a}function Do(e,t){return` +`+Te.repeat(" ",e.indent*t)}function Ph(e,t){var i,n,r;for(i=0,n=e.implicitTypes.length;i<n;i+=1)if(r=e.implicitTypes[i],r.resolve(t))return!0;return!1}function Pa(e){return e===Sh||e===wh}function Qn(e){return 32<=e&&e<=126||161<=e&&e<=55295&&e!==8232&&e!==8233||57344<=e&&e<=65533&&e!==Ho||65536<=e&&e<=1114111}function Wc(e){return Qn(e)&&e!==Ho&&e!==kh&&e!==Vn}function Uc(e,t,i){var n=Wc(e),r=n&&!Pa(e);return(i?n:n&&e!==hd&&e!==fd&&e!==yd&&e!==bd&&e!==vd)&&e!==Ro&&!(t===ja&&!r)||Wc(t)&&!Pa(t)&&e===Ro||t===ja&&r}function Hh(e){return Qn(e)&&e!==Ho&&!Pa(e)&&e!==Ch&&e!==Ih&&e!==ja&&e!==hd&&e!==fd&&e!==yd&&e!==bd&&e!==vd&&e!==Ro&&e!==Lh&&e!==Oh&&e!==zh&&e!==Fh&&e!==Mh&&e!==qh&&e!==Eh&&e!==Ah&&e!==Th&&e!==Bh&&e!==_h}function $h(e){return!Pa(e)&&e!==ja}function Wn(e,t){var i=e.charCodeAt(t),n;return i>=55296&&i<=56319&&t+1<e.length&&(n=e.charCodeAt(t+1),n>=56320&&n<=57343)?(i-55296)*1024+n-56320+65536:i}function xd(e){var t=/^\n* /;return t.test(e)}var wd=1,No=2,kd=3,Sd=4,un=5;function Wh(e,t,i,n,r,a,s,o){var l,c=0,d=null,u=!1,g=!1,m=n!==-1,f=-1,w=Hh(Wn(e,0))&&$h(Wn(e,e.length-1));if(t||s)for(l=0;l<e.length;c>=65536?l+=2:l++){if(c=Wn(e,l),!Qn(c))return un;w=w&&Uc(c,d,o),d=c}else{for(l=0;l<e.length;c>=65536?l+=2:l++){if(c=Wn(e,l),c===Vn)u=!0,m&&(g=g||l-f-1>n&&e[f+1]!==" ",f=l);else if(!Qn(c))return un;w=w&&Uc(c,d,o),d=c}g=g||m&&l-f-1>n&&e[f+1]!==" "}return!u&&!g?w&&!s&&!r(e)?wd:a===Gn?un:No:i>9&&xd(e)?un:s?a===Gn?un:No:g?Sd:kd}function Uh(e,t,i,n,r){e.dump=function(){if(t.length===0)return e.quotingType===Gn?'""':"''";if(!e.noCompatMode&&(Rh.indexOf(t)!==-1||Dh.test(t)))return e.quotingType===Gn?'"'+t+'"':"'"+t+"'";var a=e.indent*Math.max(1,i),s=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-a),o=n||e.flowLevel>-1&&i>=e.flowLevel;function l(c){return Ph(e,c)}switch(Wh(t,o,e.indent,s,l,e.quotingType,e.forceQuotes&&!n,r)){case wd:return t;case No:return"'"+t.replace(/'/g,"''")+"'";case kd:return"|"+Vc(t,e.indent)+Gc($c(t,a));case Sd:return">"+Vc(t,e.indent)+Gc($c(Vh(t,s),a));case un:return'"'+Gh(t)+'"';default:throw new Ue("impossible error: invalid scalar style")}}()}function Vc(e,t){var i=xd(e)?String(t):"",n=e[e.length-1]===` `,r=n&&(e[e.length-2]===` `||e===` `),a=r?"+":n?"":"-";return i+a+` -`}function hc(e){return e[e.length-1]===` -`?e.slice(0,-1):e}function gh(e,t){for(var i=/(\n+)([^\n]*)/g,n=function(){var d=e.indexOf(` -`);return d=d!==-1?d:e.length,i.lastIndex=d,fc(e.slice(0,d),t)}(),r=e[0]===` +`}function Gc(e){return e[e.length-1]===` +`?e.slice(0,-1):e}function Vh(e,t){for(var i=/(\n+)([^\n]*)/g,n=function(){var c=e.indexOf(` +`);return c=c!==-1?c:e.length,i.lastIndex=c,Qc(e.slice(0,c),t)}(),r=e[0]===` `||e[0]===" ",a,s;s=i.exec(e);){var o=s[1],l=s[2];a=l[0]===" ",n+=o+(!r&&!a&&l!==""?` -`:"")+fc(l,t),r=a}return n}function fc(e,t){if(e===""||e[0]===" ")return e;for(var i=/ [^ ]/g,n,r=0,a,s=0,o=0,l="";n=i.exec(e);)o=n.index,o-r>t&&(a=s>r?s:o,l+=` +`:"")+Qc(l,t),r=a}return n}function Qc(e,t){if(e===""||e[0]===" ")return e;for(var i=/ [^ ]/g,n,r=0,a,s=0,o=0,l="";n=i.exec(e);)o=n.index,o-r>t&&(a=s>r?s:o,l+=` `+e.slice(r,a),r=a+1),s=o;return l+=` `,e.length-r>t&&s>r?l+=e.slice(r,s)+` -`+e.slice(s+1):l+=e.slice(r),l.slice(1)}function hh(e){for(var t="",i=0,n,r=0;r<e.length;i>=65536?r+=2:r++)i=An(e,r),n=Ie[i],!n&&On(i)?(t+=e[r],i>=65536&&(t+=e[r+1])):t+=n||sh(i);return t}function fh(e,t,i){var n="",r=e.tag,a,s,o;for(a=0,s=i.length;a<s;a+=1)o=i[a],e.replacer&&(o=e.replacer.call(i,String(a),o)),(Ci(e,t,o,!1,!1)||typeof o>"u"&&Ci(e,t,null,!1,!1))&&(n!==""&&(n+=","+(e.condenseFlow?"":" ")),n+=e.dump);e.tag=r,e.dump="["+n+"]"}function yc(e,t,i,n){var r="",a=e.tag,s,o,l;for(s=0,o=i.length;s<o;s+=1)l=i[s],e.replacer&&(l=e.replacer.call(i,String(s),l)),(Ci(e,t+1,l,!0,!0,!1,!0)||typeof l>"u"&&Ci(e,t+1,null,!0,!0,!1,!0))&&((!n||r!=="")&&(r+=lo(e,t)),e.dump&&Ln===e.dump.charCodeAt(0)?r+="-":r+="- ",r+=e.dump);e.tag=a,e.dump=r||"[]"}function yh(e,t,i){var n="",r=e.tag,a=Object.keys(i),s,o,l,d,c;for(s=0,o=a.length;s<o;s+=1)c="",n!==""&&(c+=", "),e.condenseFlow&&(c+='"'),l=a[s],d=i[l],e.replacer&&(d=e.replacer.call(i,l,d)),Ci(e,t,l,!1,!1)&&(e.dump.length>1024&&(c+="? "),c+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),Ci(e,t,d,!1,!1)&&(c+=e.dump,n+=c));e.tag=r,e.dump="{"+n+"}"}function bh(e,t,i,n){var r="",a=e.tag,s=Object.keys(i),o,l,d,c,u,m;if(e.sortKeys===!0)s.sort();else if(typeof e.sortKeys=="function")s.sort(e.sortKeys);else if(e.sortKeys)throw new De("sortKeys must be a boolean or a function");for(o=0,l=s.length;o<l;o+=1)m="",(!n||r!=="")&&(m+=lo(e,t)),d=s[o],c=i[d],e.replacer&&(c=e.replacer.call(i,d,c)),Ci(e,t+1,d,!0,!0,!0)&&(u=e.tag!==null&&e.tag!=="?"||e.dump&&e.dump.length>1024,u&&(e.dump&&Ln===e.dump.charCodeAt(0)?m+="?":m+="? "),m+=e.dump,u&&(m+=lo(e,t)),Ci(e,t+1,c,!0,u)&&(e.dump&&Ln===e.dump.charCodeAt(0)?m+=":":m+=": ",m+=e.dump,r+=m));e.tag=a,e.dump=r||"{}"}function bc(e,t,i){var n,r,a,s,o,l;for(r=i?e.explicitTypes:e.implicitTypes,a=0,s=r.length;a<s;a+=1)if(o=r[a],(o.instanceOf||o.predicate)&&(!o.instanceOf||typeof t=="object"&&t instanceof o.instanceOf)&&(!o.predicate||o.predicate(t))){if(i?o.multi&&o.representName?e.tag=o.representName(t):e.tag=o.tag:e.tag="?",o.represent){if(l=e.styleMap[o.tag]||o.defaultStyle,Ic.call(o.represent)==="[object Function]")n=o.represent(t,l);else if(Bc.call(o.represent,l))n=o.represent[l](t,l);else throw new De("!<"+o.tag+'> tag resolver accepts not "'+l+'" style');e.dump=n}return!0}return!1}function Ci(e,t,i,n,r,a,s){e.tag=null,e.dump=i,bc(e,i,!1)||bc(e,i,!0);var o=Ic.call(e.dump),l=n,d;n&&(n=e.flowLevel<0||e.flowLevel>t);var c=o==="[object Object]"||o==="[object Array]",u,m;if(c&&(u=e.duplicates.indexOf(i),m=u!==-1),(e.tag!==null&&e.tag!=="?"||m||e.indent!==2&&t>0)&&(r=!1),m&&e.usedDuplicates[u])e.dump="*ref_"+u;else{if(c&&m&&!e.usedDuplicates[u]&&(e.usedDuplicates[u]=!0),o==="[object Object]")n&&Object.keys(e.dump).length!==0?(bh(e,t,e.dump,r),m&&(e.dump="&ref_"+u+e.dump)):(yh(e,t,e.dump),m&&(e.dump="&ref_"+u+" "+e.dump));else if(o==="[object Array]")n&&e.dump.length!==0?(e.noArrayIndent&&!s&&t>0?yc(e,t-1,e.dump,r):yc(e,t,e.dump,r),m&&(e.dump="&ref_"+u+e.dump)):(fh(e,t,e.dump),m&&(e.dump="&ref_"+u+" "+e.dump));else if(o==="[object String]")e.tag!=="?"&&mh(e,e.dump,t,a,l);else{if(o==="[object Undefined]")return!1;if(e.skipInvalid)return!1;throw new De("unacceptable kind of an object to dump "+o)}e.tag!==null&&e.tag!=="?"&&(d=encodeURI(e.tag[0]==="!"?e.tag.slice(1):e.tag).replace(/!/g,"%21"),e.tag[0]==="!"?d="!"+d:d.slice(0,18)==="tag:yaml.org,2002:"?d="!!"+d.slice(18):d="!<"+d+">",e.dump=d+" "+e.dump)}return!0}function vh(e,t){var i=[],n=[],r,a;for(uo(e,i,n),r=0,a=n.length;r<a;r+=1)t.duplicates.push(i[n[r]]);t.usedDuplicates=new Array(a)}function uo(e,t,i){var n,r,a;if(e!==null&&typeof e=="object")if(r=t.indexOf(e),r!==-1)i.indexOf(r)===-1&&i.push(r);else if(t.push(e),Array.isArray(e))for(r=0,a=e.length;r<a;r+=1)uo(e[r],t,i);else for(n=Object.keys(e),r=0,a=n.length;r<a;r+=1)uo(e[n[r]],t,i)}function xh(e,t){t=t||{};var i=new lh(t);i.noRefs||vh(e,i);var n=e;return i.replacer&&(n=i.replacer.call({"":n},"",n)),Ci(i,0,n,!0,!0)?i.dump+` -`:""}var wh=xh,kh={dump:wh};function fo(e,t){return function(){throw new Error("Function yaml."+e+" is removed in js-yaml 4. Use yaml."+t+" instead, which is now safe by default.")}}var yo=qc.load,mw=qc.loadAll,bo=kh.dump,Hc=De;var gw=fo("safeLoad","load"),hw=fo("safeLoadAll","loadAll"),fw=fo("safeDump","dump");function Cn(e,t){if(e==null)return null;let i=vo(e,t);return typeof i=="string"?i:null}function $c(e,t){if(e==null)return null;let i=vo(e,t);return typeof i=="number"?i:null}function Wc(e,t){if(e==null)return null;let i=vo(e,t);return typeof i=="boolean"?i:null}function vo(e,t){t=t.replace("..",".");let i=t.split(".");i!=null&&i[i.length-1]==""&&(i[i.length-1]=".");let n=e;for(let r of i)if(n=n[r],n==null)return null;return n}var ie=da(xo());var ba="[Obsidian Linter]",wo=new Map,Mn=!1;var va=[];function Uc(e,t){let i=`${ba} ${e}: +`+e.slice(s+1):l+=e.slice(r),l.slice(1)}function Gh(e){for(var t="",i=0,n,r=0;r<e.length;i>=65536?r+=2:r++)i=Wn(e,r),n=je[i],!n&&Qn(i)?(t+=e[r],i>=65536&&(t+=e[r+1])):t+=n||Kh(i);return t}function Qh(e,t,i){var n="",r=e.tag,a,s,o;for(a=0,s=i.length;a<s;a+=1)o=i[a],e.replacer&&(o=e.replacer.call(i,String(a),o)),(ji(e,t,o,!1,!1)||typeof o>"u"&&ji(e,t,null,!1,!1))&&(n!==""&&(n+=","+(e.condenseFlow?"":" ")),n+=e.dump);e.tag=r,e.dump="["+n+"]"}function Zc(e,t,i,n){var r="",a=e.tag,s,o,l;for(s=0,o=i.length;s<o;s+=1)l=i[s],e.replacer&&(l=e.replacer.call(i,String(s),l)),(ji(e,t+1,l,!0,!0,!1,!0)||typeof l>"u"&&ji(e,t+1,null,!0,!0,!1,!0))&&((!n||r!=="")&&(r+=Do(e,t)),e.dump&&Vn===e.dump.charCodeAt(0)?r+="-":r+="- ",r+=e.dump);e.tag=a,e.dump=r||"[]"}function Zh(e,t,i){var n="",r=e.tag,a=Object.keys(i),s,o,l,c,d;for(s=0,o=a.length;s<o;s+=1)d="",n!==""&&(d+=", "),e.condenseFlow&&(d+='"'),l=a[s],c=i[l],e.replacer&&(c=e.replacer.call(i,l,c)),ji(e,t,l,!1,!1)&&(e.dump.length>1024&&(d+="? "),d+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),ji(e,t,c,!1,!1)&&(d+=e.dump,n+=d));e.tag=r,e.dump="{"+n+"}"}function Jh(e,t,i,n){var r="",a=e.tag,s=Object.keys(i),o,l,c,d,u,g;if(e.sortKeys===!0)s.sort();else if(typeof e.sortKeys=="function")s.sort(e.sortKeys);else if(e.sortKeys)throw new Ue("sortKeys must be a boolean or a function");for(o=0,l=s.length;o<l;o+=1)g="",(!n||r!=="")&&(g+=Do(e,t)),c=s[o],d=i[c],e.replacer&&(d=e.replacer.call(i,c,d)),ji(e,t+1,c,!0,!0,!0)&&(u=e.tag!==null&&e.tag!=="?"||e.dump&&e.dump.length>1024,u&&(e.dump&&Vn===e.dump.charCodeAt(0)?g+="?":g+="? "),g+=e.dump,u&&(g+=Do(e,t)),ji(e,t+1,d,!0,u)&&(e.dump&&Vn===e.dump.charCodeAt(0)?g+=":":g+=": ",g+=e.dump,r+=g));e.tag=a,e.dump=r||"{}"}function Jc(e,t,i){var n,r,a,s,o,l;for(r=i?e.explicitTypes:e.implicitTypes,a=0,s=r.length;a<s;a+=1)if(o=r[a],(o.instanceOf||o.predicate)&&(!o.instanceOf||typeof t=="object"&&t instanceof o.instanceOf)&&(!o.predicate||o.predicate(t))){if(i?o.multi&&o.representName?e.tag=o.representName(t):e.tag=o.tag:e.tag="?",o.represent){if(l=e.styleMap[o.tag]||o.defaultStyle,md.call(o.represent)==="[object Function]")n=o.represent(t,l);else if(gd.call(o.represent,l))n=o.represent[l](t,l);else throw new Ue("!<"+o.tag+'> tag resolver accepts not "'+l+'" style');e.dump=n}return!0}return!1}function ji(e,t,i,n,r,a,s){e.tag=null,e.dump=i,Jc(e,i,!1)||Jc(e,i,!0);var o=md.call(e.dump),l=n,c;n&&(n=e.flowLevel<0||e.flowLevel>t);var d=o==="[object Object]"||o==="[object Array]",u,g;if(d&&(u=e.duplicates.indexOf(i),g=u!==-1),(e.tag!==null&&e.tag!=="?"||g||e.indent!==2&&t>0)&&(r=!1),g&&e.usedDuplicates[u])e.dump="*ref_"+u;else{if(d&&g&&!e.usedDuplicates[u]&&(e.usedDuplicates[u]=!0),o==="[object Object]")n&&Object.keys(e.dump).length!==0?(Jh(e,t,e.dump,r),g&&(e.dump="&ref_"+u+e.dump)):(Zh(e,t,e.dump),g&&(e.dump="&ref_"+u+" "+e.dump));else if(o==="[object Array]")n&&e.dump.length!==0?(e.noArrayIndent&&!s&&t>0?Zc(e,t-1,e.dump,r):Zc(e,t,e.dump,r),g&&(e.dump="&ref_"+u+e.dump)):(Qh(e,t,e.dump),g&&(e.dump="&ref_"+u+" "+e.dump));else if(o==="[object String]")e.tag!=="?"&&Uh(e,e.dump,t,a,l);else{if(o==="[object Undefined]")return!1;if(e.skipInvalid)return!1;throw new Ue("unacceptable kind of an object to dump "+o)}e.tag!==null&&e.tag!=="?"&&(c=encodeURI(e.tag[0]==="!"?e.tag.slice(1):e.tag).replace(/!/g,"%21"),e.tag[0]==="!"?c="!"+c:c.slice(0,18)==="tag:yaml.org,2002:"?c="!!"+c.slice(18):c="!<"+c+">",e.dump=c+" "+e.dump)}return!0}function Xh(e,t){var i=[],n=[],r,a;for(Ko(e,i,n),r=0,a=n.length;r<a;r+=1)t.duplicates.push(i[n[r]]);t.usedDuplicates=new Array(a)}function Ko(e,t,i){var n,r,a;if(e!==null&&typeof e=="object")if(r=t.indexOf(e),r!==-1)i.indexOf(r)===-1&&i.push(r);else if(t.push(e),Array.isArray(e))for(r=0,a=e.length;r<a;r+=1)Ko(e[r],t,i);else for(n=Object.keys(e),r=0,a=n.length;r<a;r+=1)Ko(e[n[r]],t,i)}function ef(e,t){t=t||{};var i=new jh(t);i.noRefs||Xh(e,i);var n=e;return i.replacer&&(n=i.replacer.call({"":n},"",n)),ji(i,0,n,!0,!0)?i.dump+` +`:""}var tf=ef,nf={dump:tf};function $o(e,t){return function(){throw new Error("Function yaml."+e+" is removed in js-yaml 4. Use yaml."+t+" instead, which is now safe by default.")}}var Wo=pd.load,ak=pd.loadAll,Uo=nf.dump,zd=Ue;var sk=$o("safeLoad","load"),ok=$o("safeLoadAll","loadAll"),lk=$o("safeDump","dump");function Zn(e,t){if(e==null)return null;let i=Vo(e,t);return typeof i=="string"?i:null}function Ad(e,t){if(e==null)return null;let i=Vo(e,t);return typeof i=="number"?i:null}function Td(e,t){if(e==null)return null;let i=Vo(e,t);return typeof i=="boolean"?i:null}function Vo(e,t){t=t.replace("..",".");let i=t.split(".");i!=null&&i[i.length-1]==""&&(i[i.length-1]=".");let n=e;for(let r of i)if(n=n[r],n==null)return null;return n}var ae=dn(Wa());var Ua="[Obsidian Linter]",Go=new Map,Jn=!1;var Va=[];function Ed(e,t){let i=`${Ua} ${e}: `;i+=`${t.name} ${t.message}`,t.stack&&(i+=` -`+t.stack),ie.default.error(i),Mn&&xa(i.substring(i.indexOf("]")+2),ie.default.levels.TRACE)}function Vt(e){ie.default.info(`${ba} ${e}`),Mn&&xa(e,ie.default.levels.INFO)}function oi(e){ie.default.debug(`${ba} ${e}`),Mn&&xa(e,ie.default.levels.DEBUG)}function rt(e){ie.default.warn(`${ba} ${e}`),Mn&&xa(e,ie.default.levels.WARN)}function at(e){ie.default.getLevel()>ie.default.levels.DEBUG||wo.set(e,performance.now())}function ji(e){if(ie.default.getLevel()>ie.default.levels.DEBUG)return;wo.has(e)||rt(E("logs.timing-key-not-found").replace("{TIMING_KEY}",e));let t=performance.now()-wo.get(e);oi(`${e}: ${t} `+E("logs.milliseconds-abbreviation"))}function xa(e,t){ie.default.getLevel()<=t&&va.push(e)}function Gc(){va=[]}function ko(e){Mn=e}function wa(e){switch(e){case"INFO":{ie.default.setLevel("info");break}case"TRACE":{ie.default.setLevel("trace");break}case"DEBUG":{ie.default.setLevel("debug");break}case"SILENT":{ie.default.setLevel("silent");break}case"ERROR":{ie.default.setLevel("error");break}case"WARN":{ie.default.setLevel("warn");break}}}function Qc(e){switch(e){case ie.default.levels.INFO:return"INFO";case ie.default.levels.TRACE:return"TRACE";case ie.default.levels.DEBUG:return"DEBUG";case ie.default.levels.SILENT:return"SILENT";case ie.default.levels.ERROR:return"ERROR";case ie.default.levels.WARN:return"WARN"}}var Zc={};var Jc={};var Xc={};var ed={commands:{"lint-file":{name:"Linten Sie die aktuelle Datei","error-message":"Lint-Datei-Fehler in der Datei"},"lint-file-unless-ignored":{name:"Linten Sie die aktuelle Datei, es sei denn, sie wird ignoriert"},"lint-all-files":{name:"Linten Sie alle Dateien im Vault","error-message":"Beim Linten aller Dateien Fehler in der Datei","success-message":"Alle Dateien gelinted","errors-message-singular":"Beim Linten aller Dateien gab es einen Fehler.","errors-message-plural":"Beim Linten aller Dateien gab es {NUM} Fehler.","start-message":"Dadurch werden alle Ihre Dateien ver\xE4ndert und es k\xF6nnen Fehler entstehen.","submit-button-text":"Linte alle","submit-button-notice-text":"Linte alle Dateien..."},"lint-all-files-in-folder":{name:"Linte alle Dateien im aktuellen Ordner","start-message":"Dadurch werden alle Ihre Dateien in {FOLDER_NAME} bearbeitet, einschlie\xDFlich der Dateien in den Unterordnern, was zu Fehlern f\xFChren kann.","submit-button-text":"Linte alle Dateien in {FOLDER_NAME}","submit-button-notice-text":"Linten aller Dateien in {FOLDER_NAME}...","error-message":"Beim Linten aller Dateien im Ordner gab es Fehler in der Datei","success-message":"Alle {NUM}-Dateien in {FOLDER_NAME} wurden gelinted.","message-singular":"Alle {NUM}-Dateien in {FOLDER_NAME} wurden gelinted und es trat ein Fehler auf.","message-plural":"Alle {FILE_COUNT}-Dateien in {FOLDER_NAME} wurden gelinted und es gab {ERROR_COUNT} Fehler."},"paste-as-plain-text":{name:"Einf\xFCgen als reiner Text und ohne \xC4nderungen"},"lint-file-pop-up-menu-text":{name:"Linte Datei"},"lint-folder-pop-up-menu-text":{name:"Linte Ordner"}},logs:{"plugin-load":"Plugin wird geladen","plugin-unload":"Plugin entladen","folder-lint":"Linting-Ordner ","linter-run":"Laufender Linter","paste-link-warning":"Abgebrochenes Einf\xFCgen des Lints, da der Inhalt der Zwischenablage ein Link ist, wodurch Konflikte mit anderen Plugins vermieden werden, die das Einf\xFCgen \xE4ndern.","see-console":"Weitere Informationen finden Sie in der Konsole.","unknown-error":"Beim Linten ist ein unbekannter Fehler aufgetreten.","moment-locale-not-found":"Beim Versuch, Moment.js locale auf {MOMENT_LOCALE} umzustellen, wurde {CURRENT_LOCALE} angezeigt","file-change-lint-message-start":"Linted","pre-rules":"Regeln vor regul\xE4ren Regeln","post-rules":"Regeln nach regul\xE4ren Regeln","rule-running":"Laufende Regeln","custom-regex":"Benutzerdefinierte Regex-Regeln","running-custom-regex":"Ausf\xFChren von benutzerdefinierten Regex","running-custom-lint-command":"Ausf\xFChren von benutzerdefinierten Lint-Befehlen","custom-lint-duplicate-warning":'Sie k\xF6nnen denselben Befehl ("{COMMAND_NAME}") nicht zweimal als benutzerdefinierte Lint-Regel ausf\xFChren.',"custom-lint-error-message":"Benutzerdefinierter Lint-Befehl","disabled-text":"ist deaktiviert","run-rule-text":"L\xE4uft","timing-key-not-found":"Der Timing-Schl\xFCssel '{TIMING_KEY}' ist in der Timing-Info-Liste nicht vorhanden, daher wurde er ignoriert","milliseconds-abbreviation":"ms","invalid-date-format-error":"Das Format des Erstellungsdatums '{DATE}' konnte nicht analysiert oder bestimmt werden, sodass das Erstellungsdatum in '{FILE_NAME}","invalid-delimiter-error-message":"Trennzeichen darf nur ein einzelnes Zeichen sein","missing-footnote-error-message":"Die Fu\xDFnote '{FOOTNOTE}' hat keinen entsprechenden Fu\xDFnotenverweis vor dem Fu\xDFnoteninhalt und kann nicht verarbeitet werden. Bitte achten Sie darauf, dass alle Fu\xDFnoten vor dem Inhalt der Fu\xDFnote einen entsprechenden Verweis haben.","too-many-footnotes-error-message":"Der Fu\xDFnotenschl\xFCssel '{FOOTNOTE_KEY}' hat mehr als 1 Fu\xDFnote, die darauf verweist. Bitte aktualisieren Sie die Fu\xDFnoten so, dass es nur noch eine Fu\xDFnote pro Fu\xDFnotenschl\xFCssel gibt.","wrapper-yaml-error":"Fehler in der YAML: {ERROR_MESSAGE}","wrapper-unknown-error":"Unbekannter Fehler: {ERROR_MESSAGE}"},"notice-text":{"empty-clipboard":"Es gibt keinen Inhalt in der Zwischenablage.","characters-added":"Zeichen hinzugef\xFCgt","characters-removed":"Zeichen entfernt","copy-to-clipboard-failed":"Kopieren des Textes in die Zwischenablage fehlgeschlagen: "},"all-rules-option":"Alle","linter-title":"Linter","empty-search-results-text":"Keine Einstellungen stimmen mit der Suche \xFCberein","warning-text":"Warnung","file-backup-text":"Stellen Sie sicher, dass Sie Ihre Dateien gesichert haben.",tabs:{names:{general:"Allgemein",custom:"Individuell",yaml:"YAML",heading:"\xDCberschrift",content:"Inhalt",footnote:"Fu\xDFnote",spacing:"Abstand",paste:"Einf\xFCgen",debug:"Debuggen"},"default-search-bar-text":"Alle Einstellungen durchsuchen",general:{"lint-on-save":{name:"Linten beim Speichern",description:"Linten der Datei beim manuellen Speichern (wenn `Strg + S` gedr\xFCckt wird oder wenn `:w` ausgef\xFChrt wird, w\xE4hrend vim-Tastenkombinationen verwendet werden)"},"display-message":{name:"Meldung beim Linten anzeigen",description:"Zeigen Sie die Anzahl der Zeichen an, die sich nach dem Linten ge\xE4ndert haben"},"lint-on-file-change":{name:"Linten bei Datei\xE4nderungen",description:"Wenn eine Datei geschlossen oder zu einer neuen Datei gewechselt wird, wird die vorherige Datei gelinted."},"display-lint-on-file-change-message":{name:"Nachricht beim Linten nach einer Datei\xE4nderung anzeigen",description:"Zeigt eine Meldung an, wenn `Linten bei Datei\xE4nderungen` ausgel\xF6st wurde"},"folders-to-ignore":{name:"Ordner, die ignoriert werden sollen",description:"Ordner, die ignoriert werden sollen, wenn alle Dateien gelinted oder beim Speichern gelinted werden. Geben Sie Ordnerpfade ein, die durch Zeilenumbr\xFCche getrennt sind","folder-search-placeholder-text":"Ordner-Name","add-input-button-text":"Einen anderen zu ignorierenden Ordner hinzuf\xFCgen","delete-tooltip":"L\xF6schen"},"override-locale":{name:"Gebietsschema \xFCberschreiben",description:"Legen Sie diese Option fest, wenn Sie ein anderes Gebietsschema als das Standardgebietsschema verwenden m\xF6chten"},"same-as-system-locale":"Identisch mit System ({SYS_LOCALE})","yaml-aliases-section-style":{name:"YAML-Aliase-Abschnittsstil",description:"Der Stil des YAML-Aliasabschnitts"},"yaml-tags-section-style":{name:"Abschnittsstil f\xFCr YAML-Tags",description:"Der Stil des YAML-Tags-Abschnitts"},"default-escape-character":{name:"Standard-Escape-Zeichen",description:"Das Standardzeichen, das zum Maskieren von YAML-Werten verwendet werden soll, wenn ein einfaches Anf\xFChrungszeichen und kein doppeltes Anf\xFChrungszeichen vorhanden sind."},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"Entfernen Sie unn\xF6tige Escape-Zeichen im mehrzeiligen Array-Format",description:"Escape-Zeichen f\xFCr mehrzeilige YAML-Arrays ben\xF6tigen nicht die gleiche Escape-Funktion wie einzeilige Arrays. Entfernen Sie also im mehrzeiligen Format zus\xE4tzliche Escapezeichen, die nicht erforderlich sind"},"number-of-dollar-signs-to-indicate-math-block":{name:"Anzahl der Dollarzeichen, die den Matheblock anzeigen",description:"Die Anzahl der Dollarzeichen, um den mathematischen Inhalt als mathematischen Block anstelle von Inline-Mathematik zu betrachten"}},debug:{"log-level":{name:"Log-Ebene",description:"Die Arten von Logmeldungen, die vom Dienst protokolliert werden d\xFCrfen. Der Standardwert ist Fehler."},"linter-config":{name:"Linter-Konfiguration",description:"Der Inhalt der data.json f\xFCr den Linter zum Zeitpunkt des Ladens der Einstellungsseite"},"log-collection":{name:"Sammeln Sie Protokolle bei aktiviertem `Linten beim Speichern` und dem Linten der aktuellen Datei",description:"Sammelt die Log-Meldungen, wenn Sie `Linten beim Speichern` aktiviert haben und die aktuelle Datei linten. Diese Protokolle k\xF6nnen beim Debuggen und Erstellen von Fehlerberichten hilfreich sein."},"linter-logs":{name:"Linter-Protokolle",description:"Die Protokolle des letzten `Linten beim Speichern`-Durchlaufes oder dem letzten Linten der aktuellen Datei werden gesammelt, wenn die Option aktiviert ist."}}},options:{"custom-command":{name:"Benutzerdefinierte Befehle",description:"Benutzerdefinierte Befehle sind Obsidian-Befehle, die ausgef\xFChrt werden, nachdem der Linter seine regul\xE4ren Regeln ausgef\xFChrt hat. Dies bedeutet, dass sie nicht ausgef\xFChrt werden, bevor die YAML-Zeitstempellogik ausgef\xFChrt wird, sodass sie dazu f\xFChren k\xF6nnen, dass der YAML-Zeitstempel bei der n\xE4chsten Ausf\xFChrung des Linters ausgel\xF6st wird. Sie k\xF6nnen einen Obsidian-Befehl nur einmal ausw\xE4hlen. **_Beachten Sie, dass dies derzeit nur beim Linten der aktuellen Datei funktioniert._**",warning:"Wenn Sie eine Option ausw\xE4hlen, stellen Sie sicher, dass Sie die Option entweder mit der Maus oder durch Dr\xFCcken der Eingabetaste ausw\xE4hlen. Andere Auswahlmethoden funktionieren m\xF6glicherweise nicht und es werden nur Auswahlen eines tats\xE4chlichen Obsidian-Befehls oder einer leeren Zeichenfolge gespeichert.","add-input-button-text":"Neuen Befehl hinzuf\xFCgen","command-search-placeholder-text":"Obsidian-Befehl","move-up-tooltip":"Aufr\xFCcken","move-down-tooltip":"Bewegen Sie sich nach unten","delete-tooltip":"L\xF6schen"},"custom-replace":{name:"Benutzerdefinierter Regex-Ersatz",description:"Der benutzerdefinierte Regex-Ersatz kann verwendet werden, um alles zu ersetzen, was mit dem Such-Regex mit dem Ersatzwert \xFCbereinstimmt. Bei den Werten replace und find muss es sich um g\xFCltige Regex-Werte handeln.",warning:"Verwenden Sie dies mit Vorsicht, wenn Sie Regex nicht kennen. Stellen Sie au\xDFerdem sicher, dass Sie keine Lookbehinds in Ihrem regul\xE4ren Ausdruck auf iOS-Mobilger\xE4ten verwenden, da dies dazu f\xFChrt, dass Lints fehlschlagen, da dies auf dieser Plattform nicht unterst\xFCtzt wird.","add-input-button-text":"Neuen Regex-Ersatz hinzuf\xFCgen","regex-to-find-placeholder-text":"Regex zu finden","flags-placeholder-text":"Flaggen","regex-to-replace-placeholder-text":"Regex zu ersetzen","label-placeholder-text":"Etikett","move-up-tooltip":"Aufr\xFCcken","move-down-tooltip":"Bewegen Sie sich nach unten","delete-tooltip":"L\xF6schen"}},rules:{"auto-correct-common-misspellings":{name:"H\xE4ufige Rechtschreibfehler automatisch korrigieren",description:"Verwendet ein W\xF6rterbuch mit h\xE4ufigen Rechtschreibfehlern, um sie automatisch in die richtige Schreibweise umzuwandeln. Siehe [Autokorrekturkarte](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts) f\xFCr die vollst\xE4ndige Liste der automatisch korrigierten W\xF6rter.","ignore-words":{name:"Ignorieren Sie W\xF6rter",description:"Eine durch Kommas getrennte Liste von W\xF6rtern in Kleinbuchstaben, die bei der automatischen Korrektur ignoriert werden sollen"}},"add-blockquote-indentation-on-paste":{name:"Blockquote-Einr\xFCckung beim Einf\xFCgen hinzuf\xFCgen",description:"F\xFCgt Blockzitate zu allen au\xDFer der ersten Zeile hinzu, wenn sich der Cursor w\xE4hrend des Einf\xFCgens in einer Blockquote/Callout-Zeile befindet"},"blockquote-style":{name:"Blockquote-Stil",description:"Stellt sicher, dass der Blockquote-Stil konsistent ist.",style:{name:"Stil",description:"Der f\xFCr Blockquote-Indikatoren verwendete Stil"}},"capitalize-headings":{name:"\xDCberschriften gro\xDF schreiben",description:"\xDCberschriften sollten mit Gro\xDF- und Kleinschreibung formatiert werden",style:{name:"Stil",description:"Die Art der zu verwendenden Gro\xDFschreibung"},"ignore-case-words":{name:"Ignore Cased Words",description:"Only apply title case style to words that are all lowercase"},"ignore-words":{name:"Ignorieren Sie Gro\xDF-/Kleinschreibungsw\xF6rter",description:"Eine durch Kommas getrennte Liste von W\xF6rtern, die bei der Gro\xDFschreibung ignoriert werden sollen"},"lowercase-words":{name:"W\xF6rter in Kleinbuchstaben",description:"Eine durch Kommas getrennte Liste von W\xF6rtern, um Kleinbuchstaben zu behalten"}},"compact-yaml":{name:"YAML komprimieren",description:"Entfernt f\xFChrende und nachfolgende Leerzeilen im YAML-Frontmatter.","inner-new-lines":{name:"Innere neue Zeilen",description:"Entfernen Sie neue Zeilen, die sich nicht am Anfang oder am Ende der YAML befinden"}},"consecutive-blank-lines":{name:"aufeinanderfolgende Leerzeilen zusammenfassen",description:"Es sollte h\xF6chstens eine aufeinanderfolgende Leerzeile geben."},"convert-bullet-list-markers":{name:"Konvertiere Aufz\xE4hlungszeichen",description:"Konvertiert g\xE4ngige Symbole f\xFCr Aufz\xE4hlungslisten in Markdown-Listenmarkierungen."},"convert-spaces-to-tabs":{name:"Leerzeichen in Tabulatoren konvertieren",description:"Konvertiert f\xFChrende Leerzeichen in Tabulatoren.",tabsize:{name:"Tabgr\xF6\xDFe",description:"Anzahl der Leerzeichen, die in einen Tabulator umgewandelt werden"}},"emphasis-style":{name:"Hervorhebungsstil",description:"Stellt sicher, dass der Hervorhebungsstil konsistent ist.",style:{name:"Stil",description:"Der Stil, der verwendet wird, um hervorgehobene Inhalte zu kennzeichnen"}},"empty-line-around-blockquotes":{name:"Leere Zeile um Blockquotes",description:"Stellt sicher, dass Blockzitate in einer leeren Zeile stehen, es sei denn, sie beginnen oder beenden ein Dokument. **Beachten Sie, dass eine leere Zeile entweder eine Verschachtelungsebene weniger f\xFCr Blockzitate oder ein Zeilenumbruchzeichen ist.**"},"empty-line-around-code-fences":{name:"Leere Zeile um Code-Bereiche",description:"Stellt sicher, dass Codebereiche mit einer leeren Zeile versehen sind, es sei denn, sie beginnen oder beenden ein Dokument."},"empty-line-around-math-blocks":{name:"Leere Zeile um mathematische Bl\xF6cke",description:"Stellt sicher, dass es eine leere Zeile um mathematische Bl\xF6cke gibt, indem `Anzahl der Dollarzeichen, die einen mathematischen Block anzeigen` verwendet wird, um zu bestimmen, wie viele Dollarzeichen einen mathematischen Block f\xFCr einzeilige Mathematik anzeigen."},"empty-line-around-tables":{name:"Leere Zeile um Tabellen",description:"Stellt sicher, dass es eine leere Zeile um Github-formatierte Tabellen gibt, es sei denn, sie beginnen oder beenden ein Dokument."},"escape-yaml-special-characters":{name:"Escape-YAML-Sonderzeichen",description:`Maskiert Doppelpunkte mit einem Leerzeichen nach ihnen (: ), einfache Anf\xFChrungszeichen (') und doppelte Anf\xFChrungszeichen (") in YAML.`,"try-to-escape-single-line-arrays":{name:"Versucht, Single-Line-Arrays zu vermeiden",description:'Versucht, Arraywerte zu maskieren, wobei davon ausgegangen wird, dass ein Array mit "[" beginnt, mit "]" endet und Elemente enth\xE4lt, die durch "," getrennt sind.'}},"file-name-heading":{name:"\xDCberschrift des Dateinamens",description:"F\xFCgt den Dateinamen als H1-\xDCberschrift ein, wenn keine H1-\xDCberschrift vorhanden ist."},"footnote-after-punctuation":{name:"Fu\xDFnote nach Interpunktion",description:"Stellt sicher, dass Fu\xDFnotenverweise nach der Interpunktion und nicht davor platziert werden."},"force-yaml-escape":{name:"YAML-Escape erzwingen",description:"Maskiert die Werte f\xFCr die angegebenen YAML-Schl\xFCssel.","force-yaml-escape-keys":{name:"Erzwingen Sie die YAML-Escape-Klausel f\xFCr Schl\xFCssel",description:"Verwendet das YAML-Escapezeichen f\xFCr die angegebenen YAML-Schl\xFCssel, die durch ein Zeilenumbruchzeichen getrennt sind, wenn es nicht bereits mit Escapezeichen versehen ist. Nicht auf YAML-Arrays verwenden."}},"format-tags-in-yaml":{name:"Formatieren von Tags in YAML",description:"Entfernen Sie Hashtags aus Tags im YAML-Frontmatter, da sie die Tags dort ung\xFCltig machen."},"format-yaml-array":{name:"Formatieren des YAML-Arrays",description:"Erm\xF6glicht die Formatierung von regul\xE4ren YAML-Arrays als mehrzeilig oder einzeilig und `tags` und `aliases` d\xFCrfen einige Obsidian-spezifische YAML-Formate haben. Beachten Sie, dass eine einzelne Zeichenfolge zu einer einzelnen Zeile von einem einzelnen Zeichenfolgeneintrag zu einem einzeiligen Array wechselt, wenn mehr als 1 Eintrag vorhanden ist. Das Gleiche gilt f\xFCr eine einzelne Zeichenfolge bis zu einer mehrzeiligen Zeichenfolge, mit der Ausnahme, dass sie zu einem mehrzeiligen Array wird.","alias-key":{name:'Abschnitt "YAML-Aliase" formatieren',description:"Aktiviert die Formatierung f\xFCr den Abschnitt YAML-Aliase. Sie sollten diese Option nicht zusammen mit der Regel `YAML-Titel-Alias` aktivieren, da sie m\xF6glicherweise nicht gut zusammenarbeiten oder unterschiedliche Formatstile ausgew\xE4hlt haben, was zu unerwarteten Ergebnissen f\xFChrt."},"tag-key":{name:'Abschnitt "YAML-Tags formatieren"',description:"Aktiviert die Formatierung f\xFCr den Abschnitt YAML-Tags."},"default-array-style":{name:"Standardm\xE4\xDFiger YAML-Array-Abschnittsstil",description:"Der Stil anderer YAML-Arrays, die nicht `tags` oder `aliases` sind oder bei `Erzwingt f\xFCr Schl\xFCsselwerte einzeilige Arrays` und `Erzwingt f\xFCr Schl\xFCsselwerte mehrzeilige Arrays`"},"default-array-keys":{name:"Formatieren von YAML-Array-Abschnitten",description:"Aktiviert die Formatierung f\xFCr regul\xE4re YAML-Arrays"},"force-single-line-array-style":{name:"Erzwingt f\xFCr Schl\xFCsselwerte einzeilige Arrays",description:"Erzwingt, dass das YAML-Array f\xFCr die neuen zeilengetrennten Schl\xFCssel im einzeiligen Format vorliegt (leer lassen, um diese Option zu deaktivieren)"},"force-multi-line-array-style":{name:"Erzwingt f\xFCr Schl\xFCsselwerte mehrzeilige Arrays",description:"Erzwingt, dass das YAML-Array f\xFCr die neuen zeilengetrennten Schl\xFCssel im mehrzeiligen Format vorliegt (leer lassen, um diese Option zu deaktivieren)"}},"header-increment":{name:"Header-Inkrement",description:"\xDCberschriftenebenen sollten jeweils nur um eine Ebene erh\xF6ht werden","start-at-h2":{name:"Start-Header-Inkrement auf \xDCberschriftenebene 2",description:"Legt die \xDCberschriftenebene 2 als minimale \xDCberschriftenebene in einer Datei f\xFCr das Kopfzeileninkrement fest und verschiebt alle \xDCberschriften entsprechend, sodass sie beginnend mit einer \xDCberschrift der Ebene 2 inkrementiert werden."}},"heading-blank-lines":{name:"\xDCberschriften mit Leerzeilen",description:"Alle \xDCberschriften haben sowohl davor als auch danach eine Leerzeile (au\xDFer wenn sich die \xDCberschrift am Anfang oder Ende des Dokuments befindet).",bottom:{name:"Darunter",description:"Einf\xFCgen einer Leerzeile unter \xDCberschriften"},"empty-line-after-yaml":{name:"Leere Zeile zwischen YAML und Header",description:"Behalten Sie die leere Zeile zwischen dem YAML-Frontmatter und dem Header bei"}},"headings-start-line":{name:"\xDCberschriften am Zeilenbeginn",description:"Bei \xDCberschriften, die keine Zeile beginnen, wird der vorangehende Leerraum entfernt, um sicherzustellen, dass sie als \xDCberschriften erkannt werden."},"insert-yaml-attributes":{name:"Einf\xFCgen von YAML-Attributen",description:"F\xFCgt die angegebenen YAML-Attribute in den YAML-Frontmatter ein. Setzen Sie jedes Attribut in eine einzelne Zeile.","text-to-insert":{name:"Text zum Einf\xFCgen",description:"Text, der in den YAML-Frontmatter eingef\xFCgt werden soll"}},"line-break-at-document-end":{name:"Zeilenumbruch am Dokumentende",description:"Stellt sicher, dass am Ende eines Dokuments genau ein Zeilenumbruch steht."},"move-footnotes-to-the-bottom":{name:"Fu\xDFnoten nach unten verschieben",description:"Verschieben Sie alle Fu\xDFnoten an das Ende des Dokuments."},"move-math-block-indicators-to-their-own-line":{name:"Verschieben Sie mathematische Blockindikatoren in eine eigene Zeile",description:"Verschieben Sie alle Anfangs- und Endindikatoren f\xFCr mathematische Bl\xF6cke in ihre eigenen Zeilen, indem Sie `Anzahl der Dollarzeichen, die einen mathematischen Block anzeigen` verwenden, um zu bestimmen, wie viele Dollarzeichen einen mathematischen Block f\xFCr einzeilige Mathematik anzeigen."},"move-tags-to-yaml":{name:"Tags nach YAML verschieben",description:"Verschieben Sie alle Tags in den YAML-Frontmatter des Dokuments.","how-to-handle-existing-tags":{name:"Body-Tag-Operation",description:"Die Aktion, die mit nicht ignorierten Tags im Hauptteil der Datei ausgef\xFChrt werden soll, nachdem sie in den Frontmatter verschoben wurden"},"tags-to-ignore":{name:"ignorierte Tags",description:"Die Tags, die nicht in das Tags-Array verschoben oder aus dem Textinhalt entfernt werden, wenn `Entfernen Sie den Hashtag aus Tags im Inhaltstext` aktiviert ist. Jedes Tag sollte in einer neuen Zeile und ohne das `#`` stehen. **Stellen Sie sicher, dass Sie den Hashtag nicht in den Tag-Namen aufnehmen.**"}},"no-bare-urls":{name:"Keine blo\xDFen URLs",description:"Umschlie\xDFt blo\xDFe URLs mit spitzen Klammern, es sei denn, sie sind in Back-Ticks, eckige Klammern oder einfache oder doppelte Anf\xFChrungszeichen eingeschlossen."},"ordered-list-style":{name:"Geordneter Listenstil",description:"Stellt sicher, dass geordnete Listen dem angegebenen Stil entsprechen. Beachten Sie, dass 2 Leerzeichen oder 1 Tabulator als Einr\xFCckungsebene betrachtet werden.","number-style":{name:"Zahlen-Stil",description:"Der Zahlenstil, der in geordneten Listenindikatoren verwendet wird"},"list-end-style":{name:"Endestil des Indikators f\xFCr eine geordnete Liste",description:"Das Endezeichen eines geordneten Listenkennzeichens"}},"paragraph-blank-lines":{name:"Leere Absatzzeilen",description:"Alle Abs\xE4tze sollten sowohl davor als auch danach genau eine Leerzeile haben."},"prevent-double-checklist-indicator-on-paste":{name:"Verhindern Sie eine doppelte Checklistenanzeige beim Einf\xFCgen",description:"Entfernt die Start-Checklisten-Anzeige aus dem Text, um sie einzuf\xFCgen, wenn die Zeile, auf der sich der Cursor in der Datei befindet, \xFCber eine Checklistenanzeige verf\xFCgt"},"prevent-double-list-item-indicator-on-paste":{name:"Verhindern Sie die Anzeige f\xFCr doppelte Listenelemente beim Einf\xFCgen",description:"Entfernt den Startlistenindikator aus dem Text, der eingef\xFCgt werden soll, wenn die Zeile, auf der sich der Cursor in der Datei befindet, einen Listenindikator hat"},"proper-ellipsis-on-paste":{name:"Richtige Auslassungspunkte auf Paste",description:"Ersetzt drei aufeinanderfolgende Punkte durch Auslassungspunkte, auch wenn sie im Text ein Leerzeichen zum Einf\xFCgen haben"},"proper-ellipsis":{name:"Richtige Auslassungspunkte",description:"Ersetzt drei aufeinanderfolgende Punkte durch Auslassungspunkte."},"quote-style":{name:"Zitatstil",description:"Aktualisiert die Anf\xFChrungszeichen im Textk\xF6rperinhalt, sodass sie auf die angegebenen einfachen und doppelten Anf\xFChrungszeichenstile aktualisiert werden.","single-quote-enabled":{name:"Aktivieren Sie `Stil f\xFCr einfache Anf\xFChrungszeichen`",description:"Gibt an, dass der ausgew\xE4hlte einfache Anf\xFChrungszeichenstil verwendet werden soll."},"single-quote-style":{name:"Stil f\xFCr einfache Anf\xFChrungszeichen",description:"Der Stil der zu verwendenden einfachen Anf\xFChrungszeichen."},"double-quote-enabled":{name:"Aktivieren Sie `Stil f\xFCr doppelte Anf\xFChrungszeichen`",description:"Gibt an, dass der ausgew\xE4hlte doppelte Anf\xFChrungszeichenstil verwendet werden soll."},"double-quote-style":{name:"Stil f\xFCr doppelte Anf\xFChrungszeichen",description:"Der zu verwendende Stil der doppelten Anf\xFChrungszeichen."}},"re-index-footnotes":{name:"Fu\xDFnoten neu indizieren",description:"Indiziert Fu\xDFnotenschl\xFCssel und Fu\xDFnoten basierend auf der Reihenfolge des Auftretens neu (HINWEIS: Diese Regel funktioniert *nicht*, wenn es mehr als eine Fu\xDFnote f\xFCr einen Schl\xFCssel gibt.)"},"remove-consecutive-list-markers":{name:"Entfernen Sie aufeinanderfolgende Listenmarkierungen",description:"Entfernt aufeinanderfolgende Listenmarkierungen. N\xFCtzlich beim Kopieren und Einf\xFCgen von Listenelementen."},"remove-empty-lines-between-list-markers-and-checklists":{name:"Entfernen Sie leere Zeilen zwischen Listenmarkierungen und Checklisten",description:"Es sollten keine leeren Zeilen zwischen Listenmarkierungen und Checklisten stehen."},"remove-empty-list-markers":{name:"Entfernen Sie leere Listenmarkierungen",description:"Entfernt leere Listenmarkierungen, d.h. Listenelemente ohne Inhalt."},"remove-hyphenated-line-breaks":{name:"Entfernen Sie Zeilenumbr\xFCche mit Bindestrich",description:"Entfernt Zeilenumbr\xFCche mit Bindestrich. N\xFCtzlich beim Einf\xFCgen von Text aus Lehrb\xFCchern."},"remove-hyphens-on-paste":{name:"Entfernen Sie Bindestriche auf Paste",description:"Entfernt Bindestriche aus dem Text zum Einf\xFCgen"},"remove-leading-or-trailing-whitespace-on-paste":{name:"Entfernen Sie f\xFChrende oder nachgestellte Leerzeichen beim Einf\xFCgen",description:"Entfernt alle f\xFChrenden Leerzeichen ohne Tabulatoren und alle nachgestellten Leerzeichen, die der Text einf\xFCgen kann"},"remove-leftover-footnotes-from-quote-on-paste":{name:"Entfernen Sie \xFCbrig gebliebene Fu\xDFnoten aus dem Zitat beim Einf\xFCgen",description:"Entfernt alle \xFCbrig gebliebenen Fu\xDFnotenverweise, die der Text einf\xFCgen kann"},"remove-link-spacing":{name:"Linkabstand entfernen",description:"Entfernt den Abstand um den Linktext."},"remove-multiple-blank-lines-on-paste":{name:"Entfernen Sie mehrfache Leerzeilen beim Einf\xFCgen",description:"Verdichtet mehrere Leerzeilen zu einer Leerzeile, damit der Text eingef\xFCgt werden kann"},"remove-multiple-spaces":{name:"Entfernen Sie mehrfache Leerzeichen",description:"Entfernt zwei oder mehr aufeinanderfolgende Leerzeichen. Ignoriert Leerzeichen am Anfang und am Ende der Zeile."},"remove-space-around-characters":{name:"Entfernen Sie den Abstand um die Zeichen",description:"Stellt sicher, dass bestimmte Zeichen nicht von Leerzeichen umgeben sind (entweder einzelne Leerzeichen oder ein Tabulator). Beachten Sie, dass dies in einigen F\xE4llen zu Problemen mit dem Markdown-Format f\xFChren kann.","include-fullwidth-forms":{name:"Einf\xFCgen von Formularen in voller Breite",description:'Einschlie\xDFen <a href="https://de.wikipedia.org/wiki/Unicodeblock_Halbbreite_und_vollbreite_Formen">Unicode-Block "Formulare" in voller Breite</a>'},"include-cjk-symbols-and-punctuation":{name:"CJK-Symbole und Satzzeichen einschlie\xDFen",description:'Einschlie\xDFen <a href="https://de.wikipedia.org/wiki/Unicodeblock_CJK-Symbole_und_-Interpunktion">CJK-Symbole und Satzzeichen Unicode-Block</a>'},"include-dashes":{name:"Bindestriche einschlie\xDFen",description:"F\xFCgen Sie den Gedankenstrich (\u2013) und den Gedankenstrich (\u2014) ein"},"other-symbols":{name:"Andere Symbole",description:"Andere Symbole, die enthalten sind"}},"remove-space-before-or-after-characters":{name:"Entfernen Sie Leerzeichen vor oder nach Zeichen",description:"Entfernt Leerzeichen vor und nach den angegebenen Zeichen. Beachten Sie, dass dies in einigen F\xE4llen zu Problemen mit dem Markdown-Format f\xFChren kann.","characters-to-remove-space-before":{name:"Leerzeichen vor Zeichen entfernen",description:"Entfernt Leerzeichen vor den angegebenen Zeichen. **Hinweis: Die Verwendung von `{` oder `}` in der Zeichenliste wirkt sich unerwartet auf Dateien aus, da es in der Ignoriersyntax hinter den Kulissen verwendet wird.**"},"characters-to-remove-space-after":{name:"Leerzeichen nach Zeichen entfernen",description:"Entfernt Leerzeichen vor den angegebenen Zeichen. **Hinweis: Die Verwendung von `{` oder `}` in der Zeichenliste wirkt sich unerwartet auf Dateien aus, da es in der Ignoriersyntax hinter den Kulissen verwendet wird.**"}},"remove-trailing-punctuation-in-heading":{name:"Entfernen Sie nachgestellte Satzzeichen in der \xDCberschrift",description:"Entfernt die angegebene Interpunktion am Ende von \xDCberschriften, wobei darauf zu achten ist, dass das Semikolon am Ende von [HTML-Entit\xE4tsreferenzen](https://de.wikipedia.org/wiki/Typografische_Zeichen_in_XML_und_HTML) ignoriert wird.","punctuation-to-remove":{name:"Nachfolgende Interpunktion",description:"Das nachfolgende Satzzeichen, das aus den \xDCberschriften in der Datei entfernt werden soll."}},"remove-yaml-keys":{name:"Entfernen von YAML-Schl\xFCsseln",description:"Entfernt die angegebenen YAML-Schl\xFCssel","yaml-keys-to-remove":{name:"Zu entfernende YAML-Schl\xFCssel",description:"Die zu entfernenden YAML-Schl\xFCssel aus dem YAML-Frontmatter mit oder ohne Doppelpunkt"}},"space-after-list-markers":{name:"Leerzeichen nach Listenmarkierungen",description:"Es sollte ein einzelnes Leerzeichen nach Listenmarkierungen und Kontrollk\xE4stchen geben."},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"Leerzeichen zwischen Chinesisch, Japanisch oder Koreanisch und Englisch oder Zahlen",description:"Stellt sicher, dass Chinesisch, Japanisch oder Koreanisch und Englisch oder Zahlen durch ein einziges Leerzeichen getrennt werden. Folgt diesen [Richtlinien](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"Starker Stil",description:"Stellt sicher, dass der starke Stil konsistent ist.",style:{name:"Stil",description:"Der Stil, der verwendet wird, um starke/fettgedruckte Inhalte zu kennzeichnen"}},"trailing-spaces":{name:"Nachgestellte Leerzeichen",description:"Entfernt zus\xE4tzliche Leerzeichen nach jeder Zeile.","twp-space-line-break":{name:"Zwei Leerzeichen Zeilenumbruch",description:'Ignorieren Sie zwei Leerzeichen, gefolgt von einem Zeilenumbruch ("Zwei-Leerzeichen-Regel").'}},"two-spaces-between-lines-with-content":{name:"Zwei Leerzeichen zwischen Zeilen mit Inhalt",description:"Stellt sicher, dass zwei Leerzeichen an den Zeilenenden hinzugef\xFCgt werden, wobei der Inhalt in der n\xE4chsten Zeile f\xFCr Abs\xE4tze, Blockzitate und Listenelemente fortgesetzt wird"},"unordered-list-style":{name:"Ungeordneter Listenstil",description:"Stellt sicher, dass ungeordnete Listen dem angegebenen Stil folgen.","list-style":{name:"Stil des Listenelements",description:"Das Listenelementformat, das in ungeordneten Listen verwendet werden soll"}},"yaml-key-sort":{name:"Sortierung von YAML-Schl\xFCsseln",description:"Sortiert die YAML-Schl\xFCssel basierend auf der angegebenen Reihenfolge und Priorit\xE4t. Hinweis: Kann auch Leerzeilen entfernen.","yaml-key-priority-sort-order":{name:"Priorit\xE4tssortierreihenfolge der YAML-Schl\xFCssel",description:"Die Reihenfolge, in der die Schl\xFCssel sortiert werden sollen, wobei in jeder Zeile ein Schl\xFCssel in der Reihenfolge der Liste sortiert wird"},"priority-keys-at-start-of-yaml":{name:"Priorit\xE4tsschl\xFCssel am Anfang von YAML",description:"Die priorisierte Sortierreihenfolge der YAML-Schl\xFCssel wird am Anfang des YAML-Frontmatters platziert"},"yaml-sort-order-for-other-keys":{name:"YAML-Sortierreihenfolge f\xFCr andere Schl\xFCssel",description:"Die Art und Weise, wie die Schl\xFCssel sortiert werden, die nicht im Textbereich der priorisierten Sortierreihenfolge von YAML-Keys vorhanden sind"}},"yaml-timestamp":{name:"YAML-Zeitstempel",description:"Verfolgen Sie das Datum, an dem die Datei zuletzt bearbeitet wurde, im YAML-Frontmatter. Ruft Datumsangaben aus Dateimetadaten ab.","date-created":{name:"Erstellungsdatum",description:"Geben Sie das Datum ein, an dem die Datei erstellt wurde"},"date-created-key":{name:"Schl\xFCssel f\xFCr das Erstellungsdatum",description:"Der YAML-Schl\xFCssel, der f\xFCr das Erstellungsdatum verwendet werden soll"},"force-retention-of-create-value":{name:"Erzwinge die Beibehaltung des Schl\xFCsselwertes f\xFCr das Erstellungsdatum",description:"Verwendet den Wert im YAML-Frontmatter f\xFCr das Erstellungsdatum anstelle den Dateimetadaten, was n\xFCtzlich ist, um zu verhindern, dass \xC4nderungen an Dateimetadaten dazu f\xFChren, dass der Wert in einen anderen Wert ge\xE4ndert wird."},"date-modified":{name:"\xC4nderungsdatum",description:"Geben Sie das Datum ein, an dem die Datei zuletzt ge\xE4ndert wurde"},"date-modified-key":{name:"Schl\xFCssel f\xFCr das \xC4nderungsdatum",description:"Der YAML-Schl\xFCssel, der f\xFCr das \xC4nderungsdatum verwendet werden soll"},format:{name:"Format",description:"Zu verwendendes Datumsformat f\xFCr Moment.js (siehe [Momentformatoptionen](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))"}},"yaml-title-alias":{name:"YAML-Titel-Alias",description:"F\xFCgt den Titel der Datei in den Aliasabschnitt des YAML-Frontmatters ein. Ruft den Titel aus dem ersten H1- oder Dateinamen ab.","preserve-existing-alias-section-style":{name:"Vorhandenes Alias-Abschnittsformat beibehalten",description:"Wenn diese Option festgelegt ist, gilt die Einstellung `YAML-Aliase-Abschnittsstil` nur f\xFCr die neu erstellten Abschnitte"},"keep-alias-that-matches-the-filename":{name:"Behalten Sie einen Alias bei, der mit dem Dateinamen \xFCbereinstimmt",description:"Solche Aliase sind in der Regel redundant"},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"Verwenden Sie den YAML-Schl\xFCssel `linter-yaml-title-alias`, um bei \xC4nderungen von Dateinamen und \xDCberschriften zu helfen",description:"Wenn sich die erste H1-\xDCberschrift \xE4ndert oder der Dateiname ge\xE4ndert wird, wenn der erste H1 nicht vorhanden ist, wird der alte Alias, der in diesem Schl\xFCssel gespeichert ist, durch den neuen Wert ersetzt, anstatt nur einen neuen Eintrag in das Alias-Array einzuf\xFCgen"}},"yaml-title":{name:"YAML-Titel",description:"F\xFCgt den Titel der Datei in das YAML-Frontmatter ein. Ruft den Titel basierend auf dem ausgew\xE4hlten Modus ab.","title-key":{name:"Titel-Schl\xFCssel",description:"Der YAML-Schl\xFCssel, der f\xFCr den Titel verwendet werden soll"},mode:{name:"Modus",description:"Die zum Abrufen des Titels zu verwendende Methode"}}},enums:{"Title Case":"Titel Gro\xDF- und Kleinschreibung","ALL CAPS":"GROSSBUCHSTABEN","First letter":"Anfangsbuchstabe",".":".",")":")",ERROR:"Fehler",TRACE:"Spur",DEBUG:"Debuggen",INFO:"Info",WARN:"Warnen",SILENT:"Leise",ascending:"aufsteigend",lazy:"lazy",Nothing:"Faul","Remove hashtag":"Hashtag entfernen","Remove whole tag":"Ganzes Tag entfernen",asterisk:"Sternchen",underscore:"unterstreichen",consistent:"folgerichtig","-":"-","*":"*","+":"+",space:"Raum","no space":"kein Platz",None:"Nichts","Ascending Alphabetical":"Aufsteigend Alphabetisch","Descending Alphabetical":"Absteigend Alphabetisch","multi-line":"mehrzeilig","single-line":"einzeilig","single string to single-line":"Single String zu Single-Line","single string to multi-line":"Single String zu Multi-Line","single string comma delimited":"Komma mit Trennzeichen f\xFCr eine Zeichenfolge","single string space delimited":"Einzelzeichenfolgenabstand durch Trennzeichen","single-line space delimited":"einzeiliger Abstand durch Trennzeichen","first-h1":"erste \xDCberschrift der Ebene 1","first-h1-or-filename-if-h1-missing":"Erste \xDCberschrift der Ebene 1 oder Dateiname, wenn die \xDCberschrift der Ebene 1 fehlt",filename:"Dateinamen","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var zo={commands:{"lint-file":{name:"Lint the current file","error-message":"Lint File Error in File"},"lint-file-unless-ignored":{name:"Lint the current file unless ignored"},"lint-all-files":{name:"Lint all files in the vault","error-message":"Lint All Files Error in File","success-message":"Linted all files","errors-message-singular":"Linted all files and there was 1 error.","errors-message-plural":"Linted all files and there were {NUM} errors.","start-message":"This will edit all of your files and may introduce errors.","submit-button-text":"Lint All","submit-button-notice-text":"Linting all files..."},"lint-all-files-in-folder":{name:"Lint all files in the current folder","start-message":"This will edit all of your files in {FOLDER_NAME} including files in its subfolders which may introduce errors.","submit-button-text":"Lint All Files in {FOLDER_NAME}","submit-button-notice-text":"Linting all files in {FOLDER_NAME}...","error-message":"Lint All Files in Folder Error in File","success-message":"Linted all {NUM} files in {FOLDER_NAME}.","message-singular":"Linted all {NUM} files in {FOLDER_NAME} and there was 1 error.","message-plural":"Linted all {FILE_COUNT} files in {FOLDER_NAME} and there were {ERROR_COUNT} error."},"paste-as-plain-text":{name:"Paste as Plain Text & without Modifications"},"lint-file-pop-up-menu-text":{name:"Lint file"},"lint-folder-pop-up-menu-text":{name:"Lint folder"}},logs:{"plugin-load":"Loading plugin","plugin-unload":"Unloading plugin","folder-lint":"Linting folder ","linter-run":"Running linter","paste-link-warning":"aborted paste lint as the clipboard content is a link and doing so will avoid conflicts with other plugins that modify pasting.","see-console":"See console for more details.","unknown-error":"An unknown error occurred during linting.","moment-locale-not-found":"Trying to switch Moment.js locale to {MOMENT_LOCALE}, got {CURRENT_LOCALE}","file-change-lint-message-start":"Linted","pre-rules":"rules before regular rules","post-rules":"rules after regular rules","rule-running":"rules running","custom-regex":"custom regex rules","running-custom-regex":"Running Custom Regex","running-custom-lint-command":"Running Custom Lint Commands","custom-lint-duplicate-warning":'You cannot run the same command ("{COMMAND_NAME}") as a custom lint rule twice.',"custom-lint-error-message":"Custom Lint Command","disabled-text":"is disabled","run-rule-text":"Running","timing-key-not-found":"timing key '{TIMING_KEY}' does not exist in the timing info list, so it was ignored","milliseconds-abbreviation":"ms","invalid-date-format-error":"The format of the created date '{DATE}' could not be parsed or determined so the created date was left alone in '{FILE_NAME}'","invalid-delimiter-error-message":"delimiter is only allowed to be a single character","missing-footnote-error-message":"Footnote '{FOOTNOTE}' has no corresponding footnote reference before the footnote contents and cannot be processed. Please make sure that all footnotes have a corresponding reference before the content of the footnote.","too-many-footnotes-error-message":"Footnote key '{FOOTNOTE_KEY}' has more than 1 footnote referencing it. Please update the footnotes so that there is only one footnote per footnote key.","wrapper-yaml-error":"error in the YAML: {ERROR_MESSAGE}","wrapper-unknown-error":"unknown error: {ERROR_MESSAGE}"},"notice-text":{"empty-clipboard":"There is no clipboard content.","characters-added":"characters added","characters-removed":"characters removed","copy-to-clipboard-failed":"Failed to copy text to clipboard: "},"all-rules-option":"All","linter-title":"Linter","empty-search-results-text":"No settings match search","warning-text":"Warning","file-backup-text":"Make sure you have backed up your files.","copy-aria-label":"Copy",tabs:{names:{general:"General",custom:"Custom",yaml:"YAML",heading:"Heading",content:"Content",footnote:"Footnote",spacing:"Spacing",paste:"Paste",debug:"Debug"},"default-search-bar-text":"Search all settings",general:{"lint-on-save":{name:"Lint on save",description:"Lint the file on manual save (when `Ctrl + S` is pressed or when `:w` is executed while using vim keybindings)"},"display-message":{name:"Display message on lint",description:"Display the number of characters changed after linting"},"lint-on-file-change":{name:"Lint on File Change",description:"When the a file is closed or a new file is swapped to, the previous file is linted."},"display-lint-on-file-change-message":{name:"Display Lint on File Change Message",description:"Displays a message when `Lint on File Change` occurs"},"folders-to-ignore":{name:"Folders to ignore",description:"Folders to ignore when linting all files or linting on save.","folder-search-placeholder-text":"Folder name","add-input-button-text":"Add another folder to ignore","delete-tooltip":"Delete"},"override-locale":{name:"Override locale",description:"Set this if you want to use a locale different from the default"},"same-as-system-locale":"Same as system ({SYS_LOCALE})","yaml-aliases-section-style":{name:"YAML aliases section style",description:"The style of the YAML aliases section"},"yaml-tags-section-style":{name:"YAML tags section style",description:"The style of the YAML tags section"},"default-escape-character":{name:"Default Escape Character",description:"The default character to use to escape YAML values when a single quote and double quote are not present."},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"Remove Unnecessary Escape Characters when in Multi-Line Array Format",description:"Escape characters for multi-line YAML arrays don't need the same escaping as single-line arrays, so when in multi-line format remove extra escapes that are not necessary"},"number-of-dollar-signs-to-indicate-math-block":{name:"Number of Dollar Signs to Indicate Math Block",description:"The amount of dollar signs to consider the math content to be a math block instead of inline math"}},debug:{"log-level":{name:"Log Level",description:"The types of logs that will be allowed to be logged by the service. The default is ERROR."},"linter-config":{name:"Linter Config",description:"The contents of the data.json for the Linter as of the setting page loading"},"log-collection":{name:"Collect logs when linting on save and linting the current file",description:"Goes ahead and collects logs when you `Lint on save` and linting the current file. These logs can be helpful for debugging and create bug reports."},"linter-logs":{name:"Linter Logs",description:"The logs from the last `Lint on save` or the last lint current file run if enabled."}}},options:{"custom-command":{name:"Custom Commands",description:"Custom commands are Obsidian commands that get run after the linter is finished running its regular rules. This means that they do not run before the YAML timestamp logic runs, so they can cause YAML timestamp to be triggered on the next run of the linter. You may only select an Obsidian command once. **_Note that this currently only works on linting the current file._**",warning:"When selecting an option, make sure to select the option either by using the mouse or by hitting the enter key. Other selection methods may not work and only selections of an actual Obsidian command or an empty string will be saved.","add-input-button-text":"Add new command","command-search-placeholder-text":"Obsidian command","move-up-tooltip":"Move up","move-down-tooltip":"Move down","delete-tooltip":"Delete"},"custom-replace":{name:"Custom Regex Replacement",description:"Custom regex replacement can be used to replace anything that matches the find regex with the replacement value. The replace and find values will need to be valid regex values.",warning:"Use this with caution if you do not know regex. Also, please make sure that you do not use lookbehinds in your regex on iOS mobile as that will cause linting to fail since that is not supported on that platform.","add-input-button-text":"Add new regex replacement","regex-to-find-placeholder-text":"regex to find","flags-placeholder-text":"flags","regex-to-replace-placeholder-text":"regex to replace","label-placeholder-text":"label","move-up-tooltip":"Move up","move-down-tooltip":"Move down","delete-tooltip":"Delete"}},rules:{"auto-correct-common-misspellings":{name:"Auto-correct Common Misspellings",description:"Uses a dictionary of common misspellings to automatically convert them to their proper spellings. See [auto-correct map](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts) for the full list of auto-corrected words.","ignore-words":{name:"Ignore Words",description:"A comma separated list of lowercased words to ignore when auto-correcting"}},"add-blockquote-indentation-on-paste":{name:"Add Blockquote Indentation on Paste",description:"Adds blockquotes to all but the first line, when the cursor is in a blockquote/callout line during pasting"},"blockquote-style":{name:"Blockquote Style",description:"Makes sure the blockquote style is consistent.",style:{name:"Style",description:"The style used on blockquote indicators"}},"capitalize-headings":{name:"Capitalize Headings",description:"Headings should be formatted with capitalization",style:{name:"Style",description:"The style of capitalization to use"},"ignore-case-words":{name:"Ignore Cased Words",description:"Only apply title case style to words that are all lowercase"},"ignore-words":{name:"Ignore Words",description:"A comma separated list of words to ignore when capitalizing"},"lowercase-words":{name:"Lowercase Words",description:"A comma separated list of words to keep lowercase"}},"compact-yaml":{name:"Compact YAML",description:"Removes leading and trailing blank lines in the YAML front matter.","inner-new-lines":{name:"Inner New Lines",description:"Remove new lines that are not at the start or the end of the YAML"}},"consecutive-blank-lines":{name:"Consecutive blank lines",description:"There should be at most one consecutive blank line."},"convert-bullet-list-markers":{name:"Convert Bullet List Markers",description:"Converts common bullet list marker symbols to markdown list markers."},"convert-spaces-to-tabs":{name:"Convert Spaces to Tabs",description:"Converts leading spaces to tabs.",tabsize:{name:"Tabsize",description:"Number of spaces that will be converted to a tab"}},"emphasis-style":{name:"Emphasis Style",description:"Makes sure the emphasis style is consistent.",style:{name:"Style",description:"The style used to denote emphasized content"}},"empty-line-around-blockquotes":{name:"Empty Line Around Blockquotes",description:"Ensures that there is an empty line around blockquotes unless they start or end a document. **Note: an empty line is either one less level of nesting for blockquotes or a newline character.**"},"empty-line-around-code-fences":{name:"Empty Line Around Code Fences",description:"Ensures that there is an empty line around code fences unless they start or end a document."},"empty-line-around-math-blocks":{name:"Empty Line Around Math Blocks",description:"Ensures that there is an empty line around math blocks using `Number of Dollar Signs to Indicate a Math Block` to determine how many dollar signs indicates a math block for single-line math."},"empty-line-around-tables":{name:"Empty Line Around Tables",description:"Ensures that there is an empty line around github flavored tables unless they start or end a document."},"escape-yaml-special-characters":{name:"Escape YAML Special Characters",description:`Escapes colons with a space after them (: ), single quotes ('), and double quotes (") in YAML.`,"try-to-escape-single-line-arrays":{name:"Try to Escape Single Line Arrays",description:'Tries to escape array values assuming that an array starts with "[", ends with "]", and has items that are delimited by ",".'}},"file-name-heading":{name:"File Name Heading",description:"Inserts the file name as a H1 heading if no H1 heading exists."},"footnote-after-punctuation":{name:"Footnote after Punctuation",description:"Ensures that footnote references are placed after punctuation, not before."},"force-yaml-escape":{name:"Force YAML Escape",description:"Escapes the values for the specified YAML keys.","force-yaml-escape-keys":{name:"Force YAML Escape on Keys",description:"Uses the YAML escape character on the specified YAML keys separated by a new line character if it is not already escaped. Do not use on YAML arrays."}},"format-tags-in-yaml":{name:"Format Tags in YAML",description:"Remove Hashtags from tags in the YAML frontmatter, as they make the tags there invalid."},"format-yaml-array":{name:"Format YAML Array",description:"Allows for the formatting of regular YAML arrays as either multi-line or single-line and `tags` and `aliases` are allowed to have some Obsidian specific YAML formats. **Note: that single string to single-line goes from a single string entry to a single-line array if more than 1 entry is present. The same is true for single string to multi-line except it becomes a multi-line array.**","alias-key":{name:"Format YAML aliases section",description:"Turns on formatting for the YAML aliases section. You should not enable this option alongside the rule `YAML Title Alias` as they may not work well together or they may have different format styles selected causing unexpected results."},"tag-key":{name:"Format YAML tags section",description:"Turns on formatting for the YAML tags section."},"default-array-style":{name:"Default YAML array section style",description:"The style of other YAML arrays that are not `tags`, `aliases` or in `Force key values to be single-line arrays` and `Force key values to be multi-line arrays`"},"default-array-keys":{name:"Format YAML array sections",description:"Turns on formatting for regular YAML arrays"},"force-single-line-array-style":{name:"Force key values to be single-line arrays",description:"Forces the YAML array for the new line separated keys to be in single-line format (leave empty to disable this option)"},"force-multi-line-array-style":{name:"Force key values to be multi-line arrays",description:"Forces the YAML array for the new line separated keys to be in multi-line format (leave empty to disable this option)"}},"header-increment":{name:"Header Increment",description:"Heading levels should only increment by one level at a time","start-at-h2":{name:"Start Header Increment at Heading Level 2",description:"Makes heading level 2 the minimum heading level in a file for header increment and shifts all headings accordingly so they increment starting with a level 2 heading."}},"heading-blank-lines":{name:"Heading blank lines",description:"All headings have a blank line both before and after (except where the heading is at the beginning or end of the document).",bottom:{name:"Bottom",description:"Insert a blank line after headings"},"empty-line-after-yaml":{name:"Empty Line Between YAML and Header",description:"Keep the empty line between the YAML frontmatter and header"}},"headings-start-line":{name:"Headings Start Line",description:"Headings that do not start a line will have their preceding whitespace removed to make sure they get recognized as headers."},"insert-yaml-attributes":{name:"Insert YAML attributes",description:"Inserts the given YAML attributes into the YAML frontmatter. Put each attribute on a single line.","text-to-insert":{name:"Text to insert",description:"Text to insert into the YAML frontmatter"}},"line-break-at-document-end":{name:"Line Break at Document End",description:"Ensures that there is exactly one line break at the end of a document."},"move-footnotes-to-the-bottom":{name:"Move Footnotes to the bottom",description:"Move all footnotes to the bottom of the document."},"move-math-block-indicators-to-their-own-line":{name:"Move Math Block Indicators to Their Own Line",description:"Move all starting and ending math block indicators to their own lines using `Number of Dollar Signs to Indicate a Math Block` to determine how many dollar signs indicates a math block for single-line math."},"move-tags-to-yaml":{name:"Move Tags to YAML",description:"Move all tags to YAML frontmatter of the document.","how-to-handle-existing-tags":{name:"Body tag operation",description:"What to do with non-ignored tags in the body of the file once they have been moved to the frontmatter"},"tags-to-ignore":{name:"Tags to ignore",description:"The tags that will not be moved to the tags array or removed from the body content if `Remove the hashtag from tags in content body` is enabled. Each tag should be on a new line and without the `#`. **Make sure not to include the hashtag in the tag name.**"}},"no-bare-urls":{name:"No Bare URLs",description:"Encloses bare URLs with angle brackets except when enclosed in back ticks, square braces, or single or double quotes.","no-bare-uris":{name:"No Bare URIs",description:"Attempts to enclose bare URIs with angle brackets except when enclosed in back ticks, square braces, or single or double quotes."}},"ordered-list-style":{name:"Ordered List Style",description:"Makes sure that ordered lists follow the style specified. **Note: that 2 spaces or 1 tab is considered to be an indentation level.**","number-style":{name:"Number Style",description:"The number style used in ordered list indicators"},"list-end-style":{name:"Ordered List Indicator End Style",description:"The ending character of an ordered list indicator"}},"paragraph-blank-lines":{name:"Paragraph blank lines",description:"All paragraphs should have exactly one blank line both before and after."},"prevent-double-checklist-indicator-on-paste":{name:"Prevent Double Checklist Indicator on Paste",description:"Removes starting checklist indicator from the text to paste if the line the cursor is on in the file has a checklist indicator"},"prevent-double-list-item-indicator-on-paste":{name:"Prevent Double List Item Indicator on Paste",description:"Removes starting list indicator from the text to paste if the line the cursor is on in the file has a list indicator"},"proper-ellipsis-on-paste":{name:"Proper Ellipsis on Paste",description:"Replaces three consecutive dots with an ellipsis even if they have a space between them in the text to paste"},"proper-ellipsis":{name:"Proper Ellipsis",description:"Replaces three consecutive dots with an ellipsis."},"quote-style":{name:"Quote Style",description:"Updates the quotes in the body content to be updated to the specified single and double quote styles.","single-quote-enabled":{name:"Enable `Single Quote Style`",description:"Specifies that the selected single quote style should be used."},"single-quote-style":{name:"Single Quote Style",description:"The style of single quotes to use."},"double-quote-enabled":{name:"Enable `Double Quote Style`",description:"Specifies that the selected double quote style should be used."},"double-quote-style":{name:"Double Quote Style",description:"The style of double quotes to use."}},"re-index-footnotes":{name:"Re-Index Footnotes",description:"Re-indexes footnote keys and footnote, based on the order of occurrence. **Note: This rule does _not_ work if there is more than one footnote for a key.**"},"remove-consecutive-list-markers":{name:"Remove Consecutive List Markers",description:"Removes consecutive list markers. Useful when copy-pasting list items."},"remove-empty-lines-between-list-markers-and-checklists":{name:"Remove Empty Lines Between List Markers and Checklists",description:"There should not be any empty lines between list markers and checklists."},"remove-empty-list-markers":{name:"Remove Empty List Markers",description:"Removes empty list markers, i.e. list items without content."},"remove-hyphenated-line-breaks":{name:"Remove Hyphenated Line Breaks",description:"Removes hyphenated line breaks. Useful when pasting text from textbooks."},"remove-hyphens-on-paste":{name:"Remove Hyphens on Paste",description:"Removes hyphens from the text to paste"},"remove-leading-or-trailing-whitespace-on-paste":{name:"Remove Leading or Trailing Whitespace on Paste",description:"Removes any leading non-tab whitespace and all trailing whitespace for the text to paste"},"remove-leftover-footnotes-from-quote-on-paste":{name:"Remove Leftover Footnotes from Quote on Paste",description:"Removes any leftover footnote references for the text to paste"},"remove-link-spacing":{name:"Remove link spacing",description:"Removes spacing around link text."},"remove-multiple-blank-lines-on-paste":{name:"Remove Multiple Blank Lines on Paste",description:"Condenses multiple blank lines down into one blank line for the text to paste"},"remove-multiple-spaces":{name:"Remove Multiple Spaces",description:"Removes two or more consecutive spaces. Ignores spaces at the beginning and ending of the line. "},"remove-space-around-characters":{name:"Remove Space around Characters",description:"Ensures that certain characters are not surrounded by whitespace (either single spaces or a tab). **Note: this may causes issues with markdown format in some cases.**","include-fullwidth-forms":{name:"Include Fullwidth Forms",description:'Include <a href="https://en.wikipedia.org/wiki/Halfwidth_and_Fullwidth_Forms_(Unicode_block)">Fullwidth Forms Unicode block</a>'},"include-cjk-symbols-and-punctuation":{name:"Include CJK Symbols and Punctuation",description:'Include <a href="https://en.wikipedia.org/wiki/CJK_Symbols_and_Punctuation">CJK Symbols and Punctuation Unicode block</a>'},"include-dashes":{name:"Include Dashes",description:"Include en dash (\u2013) and em dash (\u2014)"},"other-symbols":{name:"Other symbols",description:"Other symbols to include"}},"remove-space-before-or-after-characters":{name:"Remove Space Before or After Characters",description:"Removes space before the specified characters and after the specified characters. **Note: this may causes issues with markdown format in some cases.**","characters-to-remove-space-before":{name:"Remove Space Before Characters",description:"Removes space before the specified characters. **Note: using `{` or `}` in the list of characters will unexpectedly affect files as it is used in the ignore syntax behind the scenes.**"},"characters-to-remove-space-after":{name:"Remove Space After Characters",description:"Removes space after the specified characters. **Note: using `{` or `}` in the list of characters will unexpectedly affect files as it is used in the ignore syntax behind the scenes.**"}},"remove-trailing-punctuation-in-heading":{name:"Remove Trailing Punctuation in Heading",description:"Removes the specified punctuation from the end of headings making sure to ignore the semicolon at the end of [HTML entity references](https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references).","punctuation-to-remove":{name:"Trailing Punctuation",description:"The trailing punctuation to remove from the headings in the file."}},"remove-yaml-keys":{name:"Remove YAML Keys",description:"Removes the YAML keys specified","yaml-keys-to-remove":{name:"YAML Keys to Remove",description:"The YAML keys to remove from the YAML frontmatter with or without colons"}},"space-after-list-markers":{name:"Space after list markers",description:"There should be a single space after list markers and checkboxes."},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"Space between Chinese Japanese or Korean and English or numbers",description:"Ensures that Chinese, Japanese, or Korean and English or numbers are separated by a single space. Follows these [guidelines](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"Strong Style",description:"Makes sure the strong style is consistent.",style:{name:"Style",description:"The style used to denote strong/bolded content"}},"trailing-spaces":{name:"Trailing spaces",description:"Removes extra spaces after every line.","twp-space-line-break":{name:"Two Space Linebreak",description:'Ignore two spaces followed by a line break ("Two Space Rule").'}},"two-spaces-between-lines-with-content":{name:"Two Spaces Between Lines with Content",description:"Makes sure that two spaces are added to the ends of lines with content continued on the next line for paragraphs, blockquotes, and list items"},"unordered-list-style":{name:"Unordered List Style",description:"Makes sure that unordered lists follow the style specified.","list-style":{name:"List item style",description:"The list item style to use in unordered lists"}},"yaml-key-sort":{name:"YAML Key Sort",description:"Sorts the YAML keys based on the order and priority specified. **Note: may remove blank lines as well.**","yaml-key-priority-sort-order":{name:"YAML Key Priority Sort Order",description:"The order in which to sort keys with one on each line where it sorts in the order found in the list"},"priority-keys-at-start-of-yaml":{name:"Priority Keys at Start of YAML",description:"YAML Key Priority Sort Order is placed at the start of the YAML frontmatter"},"yaml-sort-order-for-other-keys":{name:"YAML Sort Order for Other Keys",description:"The way in which to sort the keys that are not found in the YAML Key Priority Sort Order text area"}},"yaml-timestamp":{name:"YAML Timestamp",description:"Keep track of the date the file was last edited in the YAML front matter. Gets dates from file metadata.","date-created":{name:"Date Created",description:"Insert the file creation date"},"date-created-key":{name:"Date Created Key",description:"Which YAML key to use for creation date"},"force-retention-of-create-value":{name:"Force Date Created Key Value Retention",description:"Reuses the value in the YAML frontmatter for date created instead of the file metadata which is useful for preventing file metadata changes from causing the value to change to a different value."},"date-modified":{name:"Date Modified",description:"Insert the date the file was last modified"},"date-modified-key":{name:"Date Modified Key",description:"Which YAML key to use for modification date"},format:{name:"Format",description:"Moment date format to use (see [Moment format options](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))"}},"yaml-title-alias":{name:"YAML Title Alias",description:"Inserts the title of the file into the YAML frontmatter's aliases section. Gets the title from the first H1 or filename.","preserve-existing-alias-section-style":{name:"Preserve existing aliases section style",description:"If set, the `YAML aliases section style` setting applies only to the newly created sections"},"keep-alias-that-matches-the-filename":{name:"Keep alias that matches the filename",description:"Such aliases are usually redundant"},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"Use the YAML key `linter-yaml-title-alias` to help with filename and heading changes",description:"If set, when the first H1 heading changes or filename if first H1 is not present changes, then the old alias stored in this key will be replaced with the new value instead of just inserting a new entry in the aliases array"}},"yaml-title":{name:"YAML Title",description:"Inserts the title of the file into the YAML frontmatter. Gets the title based on the selected mode.","title-key":{name:"Title Key",description:"Which YAML key to use for title"},mode:{name:"Mode",description:"The method to use to get the title"}}},enums:{"Title Case":"Title Case","ALL CAPS":"ALL CAPS","First letter":"First letter",".":".",")":")",ERROR:"error",TRACE:"trace",DEBUG:"debug",INFO:"info",WARN:"warn",SILENT:"silent",ascending:"ascending",lazy:"lazy",Nothing:"Nothing","Remove hashtag":"Remove hashtag","Remove whole tag":"Remove whole tag",asterisk:"asterisk",underscore:"underscore",consistent:"consistent","-":"-","*":"*","+":"+",space:"space","no space":"no space",None:"None","Ascending Alphabetical":"Ascending Alphabetical","Descending Alphabetical":"Descending Alphabetical","multi-line":"multi-line","single-line":"single-line","single string to single-line":"single string to single-line","single string to multi-line":"single string to multi-line","single string comma delimited":"single string comma delimited","single string space delimited":"single string space delimited","single-line space delimited":"single-line space delimited","first-h1":"First H1","first-h1-or-filename-if-h1-missing":"First H1 or Filename if H1 is Missing",filename:"Filename","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var id={commands:{"lint-file":{name:"Analizar este archivo","error-message":"Error Analizando un Archivooccuri\xF3 en el Archivo"},"lint-file-unless-ignored":{name:"Analizar este archivo si no es ignorado"},"lint-all-files":{name:"Analizar todos los archivos en la b\xF3veda","error-message":"Error Analizando Todos los Archivos en Archivo","success-message":"Analiz\xF3 todos los archivos","errors-message-singular":"Analiz\xF3 todos los archivos y un error ocurri\xF3.","errors-message-plural":"Analiz\xF3 todos los archivos y {NUM} errores ocurrieron","start-message":"Esto editar\xE1 todos de sus archivos y es possible que introduzca errores","submit-button-text":"Analizar Todo","submit-button-notice-text":"Analizando todos los archivos..."},"lint-all-files-in-folder":{name:"Analizar todos los archivos en esta carpeta","start-message":"Esto editar\xE1 todos de sus archivos en {FOLDER_NAME} incluyendo los archivos que existen en las subcarpetas y es possible que introduzca errores.","submit-button-text":"Analizar Todos los Archivos en {FOLDER_NAME}","submit-button-notice-text":"Analizando todos los archivos en {FOLDER_NAME}...","error-message":"Error Analizando Todos los Archivos en Carpeta en Archivo","success-message":"Analiz\xF3 los {NUM} archivos en {FOLDER_NAME}.","message-singular":"Analiz\xF3 los {NUM} archivos en {FOLDER_NAME} y un error ocurri\xF3.","message-plural":"Analiz\xF3 los {FILE_COUNT} archivos en {FOLDER_NAME} y {ERROR_COUNT} errores ocurrieron."},"paste-as-plain-text":{name:"Pegar como texto sin formato y sin modificaciones"},"lint-file-pop-up-menu-text":{name:"Analizar el archivo"},"lint-folder-pop-up-menu-text":{name:"Analizar la carpeta"}},logs:{"plugin-load":"Cargando el programa adicional","plugin-unload":"Descargando el programa adicional","folder-lint":"Analizando la carpeta ","linter-run":"Usando linter","paste-link-warning":"abort\xF3 lint de pagar porque el contento del portapapeles es un enlace y no lo hizo para evitar conflictos con otros programas adicionales que modifican lo que hace el pegar.","see-console":"Consulte la consola para obtener m\xE1s detalles.","unknown-error":"Se ha producido un error desconocido durante el linting.","moment-locale-not-found":"Intentando cambiar la zona de Moment.js a {MOMENT_LOCALE}, el resulto fue {CURRENT_LOCALE}","file-change-lint-message-start":"Analiz\xF3","pre-rules":"Las reglas antes de las reglas normales","post-rules":"las reglas despu\xE9s de las reglas normales","rule-running":"usando las reglas","custom-regex":"las reglas regex personalizadas","running-custom-regex":"Usando regex personalizada","running-custom-lint-command":"Usando comandos de lint personalizados","custom-lint-duplicate-warning":'No se puede usar el mismo comando ("{COMMAND_NAME}") dos veces como un comando de lint.',"custom-lint-error-message":"El commando de lint personalizado","disabled-text":"es inhabilitado","run-rule-text":"Usando","timing-key-not-found":"clave de ritmo '{TIMING_KEY}' no ya existe en la lista de claves de ritmo y fue ignorado por eso","milliseconds-abbreviation":"ms","invalid-date-format-error":"No se pudo analizar ni identificar el formato de la fech de creaci\xF3n `{DATE}` entonces la fecha de creaci\xF3n se dej\xF3 sola en `{FILE_NAME}`","invalid-delimiter-error-message":"El delimitador solo puede ser de un solo car\xE1cter","missing-footnote-error-message":"La nota al pie `{FOOTNOTE}` no tiene ninguna referencia de nota al pie correspondiente antes del contenido de la nota al pie y no se puede procesar. Aseg\xFArese de que todas las notas a pie de p\xE1gina tengan una referencia correspondiente antes del contenido de la nota al pie de p\xE1gina.","too-many-footnotes-error-message":"La clave de nota al pie '{FOOTNOTE_KEY}' tiene m\xE1s de 1 nota al pie que hace referencia a ella. Actualice las notas al pie para que solo haya una nota al pie por clave de nota al pie.","wrapper-yaml-error":"hubo un error en el YAML: {ERROR_MESSAGE}","wrapper-unknown-error":"huno un error desconocido: {ERROR_MESSAGE}"},"notice-text":{"empty-clipboard":"No hay contenido del portapapeles.","characters-added":"Caracteres a\xF1adidos","characters-removed":"Caracteres eliminados"},"all-rules-option":"Todo","linter-title":"Linter","empty-search-results-text":"No hay configuraci\xF3n que coincida con la b\xFAsqueda","warning-text":"Advertencia","file-backup-text":"Aseg\xFArese de haber realizado una copia de seguridad de sus archivos.","copy-aria-label":"Copiar",tabs:{names:{general:"General",custom:"Personalizado",yaml:"YAML",heading:"Encabezado",content:"Contenido",footnote:"Notas al pie",spacing:"Espacio en blanco",paste:"Pegar",debug:"Depurar"},"default-search-bar-text":"Buscar en todos los ajustes",general:{"lint-on-save":{name:"Analizar en guardar",description:"Analizar el archivo en el guardado manual (cuando se presiona `Ctrl + S` o cuando se ejecuta `:w` mientras se usan combinaciones de claves de vim)"},"display-message":{name:"Mostrar mensaje en analizar",description:"Mostrar el n\xFAmero de caracteres modificados despu\xE9s de analizar"},"folders-to-ignore":{name:"Carpetas para omitir",description:"Carpetas que se deben omitir al analizar todos los archivos o al guardar en l\xEDnea.","folder-search-placeholder-text":"El nombre de la carpeta","add-input-button-text":"Agregar otra carpeta para ignorar","delete-tooltip":"Borrar"},"lint-on-file-change":{name:"Analizar archivo en cambiar",description:"Cuando se cierra un archivo o se cambia a un nuevo archivo, el archivo anterior se analiza."},"display-lint-on-file-change-message":{name:"Mostrar mensaje en cambiar el archivo",description:"Muestra un mensaje cuando se produce `Analizar archivo en cambiar`"},"override-locale":{name:"Anular configuraci\xF3n regional",description:"Establezca esta opci\xF3n si desea utilizar una configuraci\xF3n regional diferente de la predeterminada"},"same-as-system-locale":"Igual que el sistema ({SYS_LOCALE})","yaml-aliases-section-style":{name:"Estilo de secci\xF3n de alias de YAML",description:"El estilo de la secci\xF3n de alias de YAML"},"yaml-tags-section-style":{name:"Estilo de secci\xF3n de etiquetas de YAML",description:"El estilo de la secci\xF3n de etiquetas de YAML"},"default-escape-character":{name:"Car\xE1cter de escape predeterminado",description:"El car\xE1cter predeterminado que se va a usar para escapar de los valores YAML cuando no hay comillas simples y comillas dobles."},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"Eliminaci\xF3n de caracteres de escape innecesarios cuando est\xE1 en formato de matriz multil\xEDnea",description:"Los caracteres de escape para matrices de YAML multil\xEDnea no necesitan el mismo escape que las matrices de una sola l\xEDnea, por lo que cuando est\xE1n en formato multil\xEDnea, elimine los escapes adicionales que no son necesarios"},"number-of-dollar-signs-to-indicate-math-block":{name:"N\xFAmero de signos de d\xF3lar para indicar el bloque matem\xE1tico",description:"La cantidad de signos de d\xF3lar para considerar el contenido matem\xE1tico como un bloque matem\xE1tico en lugar de matem\xE1ticas en l\xEDnea"}},debug:{"log-level":{name:"Nivel de registro",description:"Los tipos de registros que el servicio permitir\xE1 registrar. El valor predeterminado es error."},"linter-config":{name:"Configuraci\xF3n de Linter",description:"El contenido del archivo data.json para Linter a partir de la carga de la p\xE1gina de configuraci\xF3n"},"log-collection":{name:"Recopilar registros al activar y desactivar el archivo actual",description:"Contin\xFAa y recopila registros cuando `Analizar en guardar` y analizar el archivo actual. Estos registros pueden ser \xFAtiles para depurar y crear informes de errores."},"linter-logs":{name:"Registros de Linter",description:"Los registros del \xFAltimo `Analizar en guardar` o del \xFAltimo archivo actual de analizar se ejecutan si est\xE1n habilitados."}}},options:{"custom-command":{name:"Comandos personalizados",description:"Los comandos personalizados son comandos de Obsidian que se ejecutan despu\xE9s de que Linter termina de ejecutar sus reglas regulares. Esto significa que no se ejecutan antes de que se ejecute la l\xF3gica de marca de tiempo YAML, por lo que pueden hacer que la marca de tiempo de YAML se active en la siguiente ejecuci\xF3n del Linter. Solo puede seleccionar un comando de Obsidian una vez. **_Note que esto actualmente solo funciona para analizar el archivo actual._**",warning:"Al seleccionar una opci\xF3n, aseg\xFArese de seleccionar la opci\xF3n usando el rat\xF3n o presionando la clave Intro. Es posible que otros m\xE9todos de selecci\xF3n no funcionen y solo se guardar\xE1n las selecciones de un comando de Obsidian real o una cadena vac\xEDa.","add-input-button-text":"Agregar nuevo comando","command-search-placeholder-text":"Comando de Obsidian","move-up-tooltip":"Desplazar hacia arriba","move-down-tooltip":"Desplazar hacia abajo","delete-tooltip":"Borrar"},"custom-replace":{name:"Reemplazo regex personalizado",description:"El reemplazo de regex personalizado se puede usar para reemplazar cualquier cosa que coincida con el valor de b\xFAsqueda de regex con el valor de reemplazo. Los valores de reemplazo y b\xFAsqueda deber\xE1n ser valores regex v\xE1lidos.",warning:"Use esto con precauci\xF3n si no conoce regex. Adem\xE1s, aseg\xFArese de no usar lookbehinds en su regex en dispositivos m\xF3viles iOS, ya que eso har\xE1 que falle analizar ya que no es compatible con esa plataforma.","add-input-button-text":"Agregar nuevo reemplazo de regex","regex-to-find-placeholder-text":"Regex para encontrar","flags-placeholder-text":"Marcas","regex-to-replace-placeholder-text":"Regex para reemplazar","label-placeholder-text":"etiqueta","move-up-tooltip":"Desplazar hacia arriba","move-down-tooltip":"Desplazar hacia abajo","delete-tooltip":"Borrar"}},rules:{"auto-correct-common-misspellings":{name:"Correcci\xF3n autom\xE1tica de errores ortogr\xE1ficos comunes",description:"Utiliza un diccionario de errores ortogr\xE1ficos comunes para convertirlos autom\xE1ticamente a su ortograf\xEDa correcta. Consulte [mapa de autocorrecci\xF3n](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts) para obtener la lista completa de palabras corregidas autom\xE1ticamente.","ignore-words":{name:"Ignorar palabras",description:"Una lista separada por comas de palabras en min\xFAsculas para ignorar al corregir autom\xE1ticamente"}},"add-blockquote-indentation-on-paste":{name:"Agregar sangr\xEDa de blockquote en pegar",description:"Agrega blockquotes a todas menos a la primera l\xEDnea, cuando el cursor est\xE1 en una l\xEDnea blockquote/callout durante el pegado"},"blockquote-style":{name:"Estilo de cotizaci\xF3n en bloque",description:"Se asegura de que el estilo de la cita en bloque sea consistente.",style:{name:"Estilo",description:"El estilo utilizado en los indicadores de cotizaci\xF3n en bloque"}},"capitalize-headings":{name:"Poner may\xFAsculas en los encabezados",description:"Los encabezados deben estar formateados con may\xFAsculas",style:{name:"Estilo",description:"El estilo de may\xFAsculas que se va a utilizar"},"ignore-case-words":{name:"Ignorar palabras en may\xFAsculas y min\xFAsculas",description:"Solo aplique el estilo de may\xFAsculas y min\xFAsculas a las palabras que est\xE9n todas en min\xFAsculas"},"ignore-words":{name:"Ignorar palabras",description:"Una lista de palabras separadas por comas para ignorar al poner en may\xFAsculas"},"lowercase-words":{name:"Palabras en min\xFAsculas",description:"Una lista de palabras separadas por comas para mantener min\xFAsculas"}},"compact-yaml":{name:"YAML compacto",description:"Elimina las l\xEDneas en blanco iniciales y finales en la materia frontal de YAML.","inner-new-lines":{name:"Nuevas l\xEDneas internas",description:"Quitar nuevas l\xEDneas que no est\xE9n al principio o al final del YAML"}},"consecutive-blank-lines":{name:"L\xEDneas en blanco consecutivas",description:"Debe haber como m\xE1ximo una l\xEDnea en blanco consecutiva."},"convert-bullet-list-markers":{name:"Convertir marcadores de lista de vi\xF1etas",description:"Convierte s\xEDmbolos de marcador de lista de vi\xF1etas comunes en marcadores de lista de rebajas."},"convert-spaces-to-tabs":{name:"Convertir espacios en pesta\xF1as",description:"Convierte los espacios iniciales en pesta\xF1as.",tabsize:{name:"Tama\xF1o de la pesta\xF1a",description:"N\xFAmero de espacios que se convertir\xE1n en una pesta\xF1a"}},"emphasis-style":{name:"Estilo de \xE9nfasis",description:"Se asegura de que el estilo de \xE9nfasis sea consistente.",style:{name:"Estilo",description:"El estilo utilizado para denotar el contenido enfatizado"}},"empty-line-around-blockquotes":{name:"L\xEDnea vac\xEDa alrededor de blockquotes",description:"Asegura que haya una l\xEDnea vac\xEDa alrededor de blockquotes a menos que inicien o finalicen un documento. **Tenga en cuenta que una l\xEDnea vac\xEDa es un nivel menos de anidamiento para blockquotes o un car\xE1cter de nueva l\xEDnea.**"},"empty-line-around-code-fences":{name:"L\xEDnea vac\xEDa alrededor de las vallas de c\xF3digo",description:"Garantiza que haya una l\xEDnea vac\xEDa alrededor de las vallas de c\xF3digo a menos que inicien o finalicen un documento."},"empty-line-around-math-blocks":{name:"L\xEDnea vac\xEDa alrededor de los bloques matem\xE1ticos",description:"Asegura que haya una l\xEDnea vac\xEDa alrededor de los bloques matem\xE1ticos usando `N\xFAmero de signos de d\xF3lar para indicar un bloque matem\xE1tico` para determinar cu\xE1ntos signos de d\xF3lar indica un bloque matem\xE1tico para matem\xE1ticas de una sola l\xEDnea."},"empty-line-around-tables":{name:"L\xEDnea vac\xEDa alrededor de las tablas",description:"Asegura que haya una l\xEDnea vac\xEDa alrededor de las tablas con sabor a github a menos que inicien o finalicen un documento."},"escape-yaml-special-characters":{name:"Evitar los caracteres especiales de YAML",description:`Escapa dos puntos con un espacio despu\xE9s de ellos (:), comillas simples (') y comillas dobles (") en YAML.`,"try-to-escape-single-line-arrays":{name:"Intente escapar las matrices de una sola l\xEDnea",description:'Intenta escapar de los valores de matriz suponiendo que una matriz comienza con "[", termina con "]" y tiene elementos que est\xE1n delimitados por ",".'}},"file-name-heading":{name:"Encabezado de nombre de archivo",description:"Inserta el nombre de archivo como un encabezado H1 si no existe ning\xFAn encabezado H1."},"footnote-after-punctuation":{name:"Nota al pie despu\xE9s de la puntuaci\xF3n",description:"Asegura que las referencias de notas al pie se coloquen despu\xE9s de la puntuaci\xF3n, no antes."},"force-yaml-escape":{name:"Forzar escape de YAML",description:"Escapa los valores de las claves YAML especificadas.","force-yaml-escape-keys":{name:"Forzar escape de YAML en las claves",description:"Utiliza el car\xE1cter de escape de YAML en las claves de YAML especificadas separadas por un nuevo car\xE1cter de l\xEDnea si a\xFAn no est\xE1 escapado. No lo use en matrices de YAML."}},"format-tags-in-yaml":{name:"Dar formato a las etiquetas de formato en YAML",description:"Elimine los hashtags de las etiquetas en el frontmatter del YAML, ya que hacen que las etiquetas no sean v\xE1lidas."},"format-yaml-array":{name:"Dar formato a las matrices de YAML",description:"Permite el formato de matrices regulares de YAML como multil\xEDnea o de una sola l\xEDnea y las `etiquetas` y `alias` pueden tener algunos formatos espec\xEDficos de YAML de Obsidian. Tenga en cuenta que una sola cadena a una sola l\xEDnea pasa de una sola entrada de cadena a una matriz de una sola l\xEDnea si hay m\xE1s de 1 entrada presente. Lo mismo es cierto para una sola cadena a multil\xEDnea, excepto que se convierte en una matriz multil\xEDnea.","alias-key":{name:"Dar formato a la secci\xF3n de alias de YAML",description:"Activa el formato para la secci\xF3n de alias YAML. No debe habilitar esta opci\xF3n junto con la regla `Alias de t\xEDtulo YAML`, ya que es posible que no funcionen bien juntos o que tengan diferentes estilos de formato seleccionados que causen resultados inesperados."},"tag-key":{name:"Dar formato a la secci\xF3n de etiquetas de YAML",description:"Activa el formato para la secci\xF3n de etiquetas de YAML."},"default-array-style":{name:"Estilo de secci\xF3n de matriz predeterminado de YAML",description:"El estilo de otras matrices de YAML que no son `etiquetas`, `alias` o en `Forzar valores de clave para que sean matrices de una sola l\xEDnea` y `Forzar valores de clave para que sean matrices multil\xEDnea`"},"default-array-keys":{name:"Dar formato a las secciones de matrices de YAML",description:"Activa el formato para matrices normales de YAML"},"force-single-line-array-style":{name:"Forzar que los valores de clave sean matrices de una sola l\xEDnea",description:"Fuerza la matriz de YAML para que las nuevas claves separadas por l\xEDnea est\xE9n en formato de una sola l\xEDnea (deje vac\xEDo para deshabilitar esta opci\xF3n)"},"force-multi-line-array-style":{name:"Forzar que los valores de las claves sean matrices multil\xEDneas",description:"Fuerza la matriz de YAML para que las nuevas claves separadas por l\xEDnea est\xE9n en formato multil\xEDnea (deje vac\xEDa para deshabilitar esta opci\xF3n)"}},"header-increment":{name:"Incremento de encabezado",description:"Los niveles de encabezado solo deben aumentar en un nivel a la vez","start-at-h2":{name:"Iniciar el incremento de encabezado en el nivel de encabezado 2",description:"Hace que el nivel de encabezado 2 sea el nivel de t\xEDtulo m\xEDnimo en un archivo para el incremento de encabezado y desplaza todos los encabezados en consecuencia para que se incrementen a partir de un encabezado de nivel 2."}},"heading-blank-lines":{name:"L\xEDneas en blanco de encabezado",description:"Todos los encabezados tienen una l\xEDnea en blanco antes y despu\xE9s (excepto cuando el encabezado est\xE1 al principio o al final del documento).",bottom:{name:"Abajo",description:"Insertar una l\xEDnea en blanco despu\xE9s de los encabezados"},"empty-line-after-yaml":{name:"L\xEDnea vac\xEDa entre el YAML y el encabezado",description:"Mantenga la l\xEDnea vac\xEDa entre el frontmatter del YAML y el encabezado"}},"headings-start-line":{name:"Comenzar los encabezados al principio de la l\xEDnea",description:"Los encabezados que no inician una l\xEDnea tendr\xE1n su espacio en blanco anterior eliminado para asegurarse de que se reconozcan como encabezados."},"insert-yaml-attributes":{name:"Insertar atributos de YAML",description:"Inserta los atributos especificados de YAML en el frontmatter del YAML. Coloque cada atributo en una sola l\xEDnea.","text-to-insert":{name:"Texto a insertar",description:"Texto para insertar en el frontmatter del YAML"}},"line-break-at-document-end":{name:"Salto de l\xEDnea al final del documento",description:"Asegura que haya exactamente un salto de l\xEDnea al final de un documento."},"move-footnotes-to-the-bottom":{name:"Mover las notas al pie a la parte inferior",description:"Mueva todas las notas al pie de p\xE1gina a la parte inferior del documento."},"move-math-block-indicators-to-their-own-line":{name:"Mover los indicadores de bloques matem\xE1ticos a su propia l\xEDnea",description:"Mueva todos los indicadores de bloques matem\xE1ticos iniciales y finales a sus propias l\xEDneas usando `N\xFAmero de signos de d\xF3lar para indicar un bloque matem\xE1tico` para determinar cu\xE1ntos signos de d\xF3lar indica un bloque matem\xE1tico para matem\xE1ticas de una sola l\xEDnea."},"move-tags-to-yaml":{name:"Mover etiquetas a YAML",description:"Mueva todas las etiquetas al frontmatter del YAML del documento.","how-to-handle-existing-tags":{name:"Operaci\xF3n de etiqueta corporal",description:"Lo qur se debe hacer con las etiquetas no ignoradas en el cuerpo del archivo una vez que se han movido al frontmatter"},"tags-to-ignore":{name:"Etiquetas para omitir",description:"Las etiquetas que no se mover\xE1n a la matriz de etiquetas ni se eliminar\xE1n del contenido del cuerpo si est\xE1 habilitado `Eliminar el hashtag de las etiquetas en el cuerpo del contenido`. Cada etiqueta debe estar en una nueva l\xEDnea y sin el `#`. **Aseg\xFArese de no incluir el hashtag en el nombre de la etiqueta.**"}},"no-bare-urls":{name:"Sin URL desnuda",description:"Encierra las direcciones URL desnudas con corchetes angulares, excepto cuando est\xE1n encerradas en marcas traseras, llaves cuadradas o comillas simples o dobles.","no-bare-uris":{name:"Sin URI desnuda",description:"Encierra las direcciones URI desnudas con corchetes angulares, excepto cuando est\xE1n encerradas en marcas traseras, llaves cuadradas o comillas simples o dobles."}},"ordered-list-style":{name:"Estilo de lista ordenada",description:"Se asegura de que las listas ordenadas siguen el estilo especificado. Tenga en cuenta que 2 espacios o 1 tabulaci\xF3n se considera un nivel de sangr\xEDa.","number-style":{name:"Estilo num\xE9rico",description:"El estilo num\xE9rico utilizado en los indicadores de lista ordenada"},"list-end-style":{name:"Estilo final del indicador de lista ordenada",description:"El car\xE1cter final de un indicador de lista ordenada"}},"paragraph-blank-lines":{name:"L\xEDneas en blanco del p\xE1rrafo",description:"Todos los p\xE1rrafos deben tener exactamente una l\xEDnea en blanco antes y despu\xE9s."},"prevent-double-checklist-indicator-on-paste":{name:"Evitar el indicador de doble lista de verificaci\xF3n en pegar",description:"Elimina el indicador de lista de verificaci\xF3n inicial del texto para pegar si la l\xEDnea en la que se encuentra el cursor en el archivo tiene un indicador de lista de verificaci\xF3n"},"prevent-double-list-item-indicator-on-paste":{name:"Prevenir el indicador de elemento de lista doble al pegar",description:"Elimina el indicador de lista inicial del texto para pegar si la l\xEDnea en la que se encuentra el cursor en el archivo tiene un indicador de lista"},"proper-ellipsis-on-paste":{name:"Puntos suspensivos adecuados al pegar",description:"Reemplaza tres puntos consecutivos por puntos suspensivos aunque tengan un espacio entre ellos en el texto a pegar"},"proper-ellipsis":{name:"Puntos suspensivos propios",description:"Reemplaza tres puntos consecutivos con puntos suspensivos."},"quote-style":{name:"Estilo de cotizaci\xF3n",description:"Actualiza las comillas en el contenido del cuerpo para que se actualicen a los estilos de comillas simples y dobles especificados.","single-quote-enabled":{name:"Habilitar `Estilo de comillas simples`",description:"Especifica que se debe utilizar el estilo de comillas simples seleccionado."},"single-quote-style":{name:"Estilo de comillas simples",description:"El estilo de las comillas simples a utilizar."},"double-quote-enabled":{name:"Habilitar `Estilo de comillas dobles`",description:"Especifica que se debe utilizar el estilo de comillas dobles seleccionado."},"double-quote-style":{name:"Estilo de comillas dobles",description:"El estilo de comillas dobles a utilizar."}},"re-index-footnotes":{name:"Volver a indexar notas al pie",description:"Vuelve a indexar las notas al pie de p\xE1gina y las notas al pie, seg\xFAn el orden de aparici\xF3n (NOTA: esta regla *no* funciona si hay m\xE1s de una nota al pie para una clave)."},"remove-consecutive-list-markers":{name:"Eliminar marcadores de lista consecutiva",description:"Elimina marcadores de lista consecutivos. \xDAtil al copiar y pegar elementos de la lista."},"remove-empty-lines-between-list-markers-and-checklists":{name:"Eliminar l\xEDneas vac\xEDas entre marcadores de lista y listas de verificaci\xF3n",description:"No debe haber l\xEDneas vac\xEDas entre los marcadores de lista y las listas de verificaci\xF3n."},"remove-empty-list-markers":{name:"Eliminar marcadores de lista vac\xEDa",description:"Elimina marcadores de listas vac\xEDas, es decir, lista de elementos sin contenido."},"remove-hyphenated-line-breaks":{name:"Eliminar saltos de l\xEDnea con gui\xF3n",description:"Elimina los saltos de l\xEDnea con gui\xF3n. \xDAtil al pegar texto de libros de texto."},"remove-hyphens-on-paste":{name:"Eliminar guiones al pegar",description:"Elimina guiones del texto al pegar"},"remove-leading-or-trailing-whitespace-on-paste":{name:"Eliminar espacios en blanco iniciales o finales al pegar",description:"Elimina cualquier espacio en blanco inicial que no sea una pesta\xF1a y todos los espacios en blanco finales para que el texto se pegue"},"remove-leftover-footnotes-from-quote-on-paste":{name:"Eliminar las notas al pie sobrantes de la cita al pegar",description:"Elimina las referencias de notas al pie sobrantes para que el texto se pegue"},"remove-link-spacing":{name:"Quitar el espacio entre enlaces",description:"Elimina el espacio alrededor del texto del enlace."},"remove-multiple-blank-lines-on-paste":{name:"Eliminar varias l\xEDneas en blanco al pegar",description:"Condensa varias l\xEDneas en blanco en una l\xEDnea en blanco para que el texto se pegue"},"remove-multiple-spaces":{name:"Quitar varios espacios",description:"Elimina dos o m\xE1s espacios consecutivos. Ignora los espacios al principio y al final de la l\xEDnea."},"remove-space-around-characters":{name:"Quitar el espacio alrededor de los caracteres",description:"Garantiza que determinados caracteres no est\xE9n rodeados de espacios en blanco (ya sean espacios individuales o tabulaciones). Tenga en cuenta que esto puede causar problemas con el formato de descuento en algunos casos.","include-fullwidth-forms":{name:"Incluir formularios de ancho completo",description:'Incluir <a href="https://en.wikipedia.org/wiki/Halfwidth_and_Fullwidth_Forms_(Unicode_block)">bloque Unicode de formularios de ancho completo</a>'},"include-cjk-symbols-and-punctuation":{name:"Incluir s\xEDmbolos de CJK y puntuaci\xF3n",description:'Incluir <a href="https://en.wikipedia.org/wiki/CJK_Symbols_and_Punctuation">Bloque Unicode de s\xEDmbolos y puntuaci\xF3n de CJK</a>'},"include-dashes":{name:"Incluir guiones",description:"Incluir gui\xF3n corto (\u2013) y gui\xF3n largo (\u2014)"},"other-symbols":{name:"Otros s\xEDmbolos",description:"Otros s\xEDmbolos para incluir"}},"remove-space-before-or-after-characters":{name:"Quitar el espacio antes o despu\xE9s de los caracteres",description:"Elimina el espacio antes de los caracteres especificados y despu\xE9s de los caracteres especificados. Tenga en cuenta que esto puede causar problemas con el formato de descuento en algunos casos.","characters-to-remove-space-before":{name:"Eliminar espacio antes de los caracteres",description:"Elimina el espacio antes de los caracteres especificados. **Nota: el uso de `{` o `}` en la lista de caracteres afectar\xE1 inesperadamente a los archivos, ya que se usa en la sintaxis de ignorar en segundo plano.**"},"characters-to-remove-space-after":{name:"Eliminar espacio despu\xE9s de los caracteres",description:"Elimina el espacio despu\xE9s de los caracteres especificados. **Nota: el uso de `{` o `}` en la lista de caracteres afectar\xE1 inesperadamente a los archivos, ya que se usa en la sintaxis de ignorar en segundo plano.**"}},"remove-trailing-punctuation-in-heading":{name:"Eliminar la puntuaci\xF3n final en el encabezado",description:"Elimina la puntuaci\xF3n especificada al final de los encabezados, asegur\xE1ndose de ignorar el punto y coma al final de [referencias de entidades de HTML](https://es.wikipedia.org/wiki/Anexo:Referencias_a_entidades_de_caracteres_XML_y_HTML).","punctuation-to-remove":{name:"Puntuaci\xF3n final",description:"La puntuaci\xF3n final que se eliminar\xE1 de los encabezados del archivo."}},"remove-yaml-keys":{name:"Eliminar claves de YAML",description:"Elimina las claves especificadas de YAML","yaml-keys-to-remove":{name:"Claves de YAML para eliminar",description:"Las claves de YAML para eliminar del frontmatter del YAML con o sin dos puntos"}},"space-after-list-markers":{name:"Espacio despu\xE9s de los marcadores de lista",description:"Debe haber un solo espacio despu\xE9s de los marcadores de lista y las casillas de verificaci\xF3n."},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"Espacio entre chino japon\xE9s o coreano e ingl\xE9s o n\xFAmeros",description:"Garantiza que el chino, el japon\xE9s o el coreano y el ingl\xE9s o los n\xFAmeros est\xE9n separados por un solo espacio. Sigue estas [directrices](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"Estilo fuerte",description:"Se asegura de que el estilo fuerte sea consistente.",style:{name:"Estilo",description:"El estilo utilizado para denotar contenido fuerte/en negrita"}},"trailing-spaces":{name:"Espacios finales",description:"Elimina espacios adicionales despu\xE9s de cada l\xEDnea.","twp-space-line-break":{name:"Salto de l\xEDnea de dos espacios",description:'Ignore dos espacios seguidos de un salto de l\xEDnea ("Regla de dos espacios").'}},"two-spaces-between-lines-with-content":{name:"Dos espacios entre l\xEDneas con contenido",description:"Se asegura de que se agreguen dos espacios al final de las l\xEDneas con contenido que contin\xFAa en la siguiente l\xEDnea para p\xE1rrafos, comillas y elementos de lista"},"unordered-list-style":{name:"Estilo de lista desordenada",description:"Se asegura de que las listas desordenadas sigan el estilo especificado.","list-style":{name:"Estilo de elemento de lista",description:"El estilo de elemento de lista para usar en listas desordenadas"}},"yaml-key-sort":{name:"Clasificaci\xF3n de clave de YAML",description:"Ordena las claves de YAML seg\xFAn el orden y la prioridad especificados. Nota: tambi\xE9n puede eliminar las l\xEDneas en blanco.","yaml-key-priority-sort-order":{name:"Orden de clasificaci\xF3n de prioridad de clave de YAML",description:"El orden en el que se ordenan las claves con una en cada l\xEDnea donde se ordena en el orden que se encuentra en la lista"},"priority-keys-at-start-of-yaml":{name:"Claves de prioridad al inicio del YAML",description:"El orden de clasificaci\xF3n de prioridad clave de YAML se coloca al comienzo del frontmatter del YAML"},"yaml-sort-order-for-other-keys":{name:"Orden de clasificaci\xF3n de YAML para otras claves",description:"La forma en que ordenar las claves que no se encuentran en el \xE1rea de texto `Orden de clasificaci\xF3n de prioridad de clave de YAML`"}},"yaml-timestamp":{name:"Marca de tiempo de YAML",description:"Lleve un registro de la fecha en que se edit\xF3 el archivo por \xFAltima vez en el frente del YAML. Obtiene las fechas de los metadatos del archivo.","date-created":{name:"Fecha de creaci\xF3n",description:"Inserte la fecha de creaci\xF3n del archivo"},"date-created-key":{name:"Clave de fecha de creaci\xF3n",description:"La clave de YAML para usar para la fecha de creaci\xF3n"},"force-retention-of-create-value":{name:"Forzar la fecha de creaci\xF3n de la retenci\xF3n del valor clave",description:"Reutiliza el valor en el frontmatter del YAML para la fecha de creaci\xF3n en lugar de los metadatos del archivo, lo que es \xFAtil para evitar que los cambios en los metadatos del archivo provoquen que el valor cambie a un valor diferente."},"date-modified":{name:"Fecha modificada",description:"Inserte la fecha en que se modific\xF3 el archivo por \xFAltima vez"},"date-modified-key":{name:"Clave de fecha modificada",description:"La clave de YAML para usar para la fecha de modificaci\xF3n"},format:{name:"Formato",description:"Formato de fecha de Moment a usar (ver [Opciones de formato de Moment](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))"}},"yaml-title-alias":{name:"Alias de t\xEDtulo de YAML",description:"Inserta el t\xEDtulo del archivo en la secci\xF3n de alias de YAML frontmatter. Obtiene el t\xEDtulo del primer H1 o nombre de archivo.","preserve-existing-alias-section-style":{name:"Conservar el estilo de secci\xF3n de alias existente",description:"Si se establece, la configuraci\xF3n `Estilo de secci\xF3n de alias de YAML` se aplica solo a las secciones reci\xE9n creadas"},"keep-alias-that-matches-the-filename":{name:"Mantenga el alias que coincida con el nombre del archivo",description:"Estos alias suelen ser redundantes."},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"Use la clave de YAML `linter-yaml-title-alias` para ayudar con los cambios de nombre de archivo y encabezado",description:"Si se establece, cuando cambia el primer encabezado H1 o cambia el nombre de archivo si el primer H1 no est\xE1 presente, el alias anterior almacenado en esta clave se reemplazar\xE1 con el nuevo valor en lugar de simplemente insertar una nueva entrada en la matriz de alias."}},"yaml-title":{name:"T\xEDtulo de YAML",description:"Inserta el t\xEDtulo del archivo en el frontmatter de YAML. Obtiene el t\xEDtulo seg\xFAn el modo seleccionado.","title-key":{name:"Clave de t\xEDtulo",description:"La clave de YAML para usar para el t\xEDtulo"},mode:{name:"Modo",description:"El m\xE9todo a utilizar para obtener el t\xEDtulo"}}},enums:{"Title Case":"Titulo del Caso","ALL CAPS":"TODO MAY\xDASCULAS","First letter":"Primera letra",".":".",")":")",ERROR:"error",TRACE:"trazar",DEBUG:"depurar",INFO:"informaci\xF3n",WARN:"advertencia",SILENT:"silencio",ascending:"ascendente",lazy:"perezoso",Nothing:"nada","Remove hashtag":"Remove hashtag","Remove whole tag":"Remove whole tag",asterisk:"asterisco",underscore:"guion bajo",consistent:"congruente","-":"-","*":"*","+":"+",space:"espacio","no space":"sin espacio",None:"nada","Ascending Alphabetical":"Ascendente alfab\xE9tico","Descending Alphabetical":"Descendiente alfab\xE9tico","multi-line":"multil\xEDnea","single-line":"linea sola","single string to single-line":"una sola cadena a una sola l\xEDnea","single string to multi-line":"cadena \xFAnica a multil\xEDnea","single string comma delimited":"cadena \xFAnica delimitada por comas","single string space delimited":"espacio de una sola cadena delimitado","single-line space delimited":"espacio de una sola l\xEDnea delimitado","first-h1":"primer encabezado de nivel 1","first-h1-or-filename-if-h1-missing":"primer encabezado de nivel 1 o nombre de archivo si falta el encabezado de primer nivel 1",filename:"nombre del archivo","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var td={};var nd={};var rd={};var ad={};var sd={};var od={};var ld={};var cd={};var dd={};var ud={};var pd={};var md={};var gd={};var hd={};var fd={commands:{"lint-file":{name:"Ge\xE7erli dosyay\u0131 lintle","error-message":"Dosyada Lintleme Hatas\u0131"},"lint-file-unless-ignored":{name:"Yoksay\u0131lmad\u0131k\xE7a ge\xE7erli dosyay\u0131 lintle"},"lint-all-files":{name:"Kasadaki t\xFCm dosyalar\u0131 lintle","error-message":"Dosyada T\xFCm Dosyalar\u0131 Lintleme Hatas\u0131","success-message":"T\xFCm dosyalar lintlendi","errors-message-singular":"T\xFCm dosyalar lintlendi ve 1 hata vard\u0131.","errors-message-plural":"T\xFCm dosyalar lintlendi ve {NUM} hata vard\u0131.","start-message":"Bu, t\xFCm dosyalar\u0131n\u0131z\u0131 d\xFCzenler ve hatalara yol a\xE7abilir.","submit-button-text":"T\xFCm\xFCn\xFC Lintle","submit-button-notice-text":"T\xFCm dosyalar lintleniyor..."},"lint-all-files-in-folder":{name:"Ge\xE7erli klas\xF6rdeki t\xFCm dosyalar\u0131 lintle","start-message":"Bu, {FOLDER_NAME} dahilindeki t\xFCm dosyalar\u0131n\u0131z\u0131 ve alt klas\xF6rlerini d\xFCzenler ve hatalara yol a\xE7abilir.","submit-button-text":"{FOLDER_NAME} i\xE7indeki T\xFCm Dosyalar\u0131 Lintle","submit-button-notice-text":"{FOLDER_NAME} i\xE7indeki t\xFCm dosyalar lintleniyor...","error-message":"Klas\xF6rdeki T\xFCm Dosyalar\u0131 Lintleme Hatas\u0131 Dosyada","success-message":"{FOLDER_NAME} i\xE7indeki t\xFCm {NUM} dosya lintlendi.","message-singular":"{FOLDER_NAME} i\xE7indeki t\xFCm {NUM} dosya lintlendi ve 1 hata vard\u0131.","message-plural":"{FOLDER_NAME} i\xE7indeki t\xFCm {FILE_COUNT} dosya lintlendi ve {ERROR_COUNT} hata vard\u0131."},"paste-as-plain-text":{name:"D\xFCz Metin Olarak & Modifikasyonsuz Yap\u0131\u015Ft\u0131r"},"lint-file-pop-up-menu-text":{name:"Dosyay\u0131 lintle"},"lint-folder-pop-up-menu-text":{name:"Klas\xF6r\xFC lintle"}},logs:{"plugin-load":"Eklenti y\xFCkleniyor","plugin-unload":"Eklenti kald\u0131r\u0131l\u0131yor","folder-lint":"Klas\xF6r lintleniyor ","linter-run":"Lintleme \xE7al\u0131\u015Ft\u0131r\u0131l\u0131yor","paste-link-warning":"pano i\xE7eri\u011Fi bir link oldu\u011Fu ve yap\u0131\u015Ft\u0131rmay\u0131 de\u011Fi\u015Ftiren di\u011Fer eklentilerle \xE7ak\u0131\u015Fmay\u0131 \xF6nlemek i\xE7in lintleme yap\u0131\u015Ft\u0131rmas\u0131 iptal edildi.","see-console":"Daha fazla detay i\xE7in konsolu kontrol edin.","unknown-error":"Lintleme s\u0131ras\u0131nda bilinmeyen bir hata olu\u015Ftu.","moment-locale-not-found":"Moment.js yerelini {MOMENT_LOCALE} olarak de\u011Fi\u015Ftirmeye \xE7al\u0131\u015F\u0131yor, elde edilen {CURRENT_LOCALE}","file-change-lint-message-start":"Lintlendi","pre-rules":"normal kurallardan \xF6nceki kurallar","post-rules":"normal kurallardan sonraki kurallar","rule-running":"kurallar \xE7al\u0131\u015Ft\u0131r\u0131l\u0131yor","custom-regex":"\xF6zel regex kurallar\u0131","running-custom-regex":"\xD6zel Regex \xC7al\u0131\u015Ft\u0131r\u0131l\u0131yor","running-custom-lint-command":"\xD6zel Lint Komutlar\u0131 \xC7al\u0131\u015Ft\u0131r\u0131l\u0131yor","custom-lint-duplicate-warning":'Ayn\u0131 komutu ("{COMMAND_NAME}") \xF6zel bir lint kural\u0131 olarak iki kez \xE7al\u0131\u015Ft\u0131ramazs\u0131n\u0131z.',"custom-lint-error-message":"\xD6zel Lint Komutu Hatas\u0131","disabled-text":"devre d\u0131\u015F\u0131","run-rule-text":"\xC7al\u0131\u015Ft\u0131r\u0131l\u0131yor","timing-key-not-found":"'{TIMING_KEY}' zamanlama anahtar\u0131 zamanlama bilgisi listesinde bulunamad\u0131, bu y\xFCzden yoksay\u0131ld\u0131","milliseconds-abbreviation":"ms","invalid-date-format-error":"Olu\u015Fturulan tarih format\u0131 '{DATE}' ayr\u0131\u015Ft\u0131r\u0131lamad\u0131 veya belirlenemedi, bu y\xFCzden '{FILE_NAME}' dosyas\u0131ndaki olu\u015Fturulan tarih ayn\u0131 b\u0131rak\u0131ld\u0131","invalid-delimiter-error-message":"ayra\xE7 sadece tek bir karakter olabilir","missing-footnote-error-message":"'{FOOTNOTE}' dipnotunun i\xE7eri\u011Finden \xF6nce kar\u015F\u0131l\u0131k gelen bir dipnot referans\u0131 yok ve i\u015Flenemez. L\xFCtfen t\xFCm dipnotlar\u0131n, dipnot i\xE7eri\u011Finden \xF6nce kar\u015F\u0131l\u0131k gelen bir referans\u0131 oldu\u011Fundan emin olun.","too-many-footnotes-error-message":"'{FOOTNOTE_KEY}' dipnot anahtar\u0131 birden fazla dipnota at\u0131fta bulunuyor. L\xFCtfen dipnotlar\u0131 g\xFCncelleyin, b\xF6ylece her dipnot anahtar\u0131 i\xE7in yaln\u0131zca bir dipnot olur.","wrapper-yaml-error":"YAML'da hata: {ERROR_MESSAGE}","wrapper-unknown-error":"bilinmeyen hata: {ERROR_MESSAGE}"},"notice-text":{"empty-clipboard":"Panoda i\xE7erik yok.","characters-added":"karakterler eklendi","characters-removed":"karakterler kald\u0131r\u0131ld\u0131"},"all-rules-option":"T\xFCm\xFC","linter-title":"Linter","empty-search-results-text":"Arama ile e\u015Fle\u015Fen ayar bulunamad\u0131","warning-text":"Uyar\u0131","file-backup-text":"Dosyalar\u0131n\u0131z\u0131n yede\u011Fini ald\u0131\u011F\u0131n\u0131zdan emin olun.",tabs:{names:{general:"Genel",custom:"\xD6zel",yaml:"YAML",heading:"Ba\u015Fl\u0131k",content:"\u0130\xE7erik",footnote:"Dipnot",spacing:"Bo\u015Fluk",paste:"Yap\u0131\u015Ft\u0131r",debug:"Hata ay\u0131kla"},"default-search-bar-text":"T\xFCm ayarlar\u0131 ara",general:{"lint-on-save":{name:"Kaydederken d\xFCzelt",description:"Manuel kaydetme (Ctrl + S tu\u015Funa bas\u0131ld\u0131\u011F\u0131nda veya vim tu\u015F ba\u011Flamalar\u0131n\u0131 kullan\u0131rken :w komutu \xE7al\u0131\u015Ft\u0131r\u0131ld\u0131\u011F\u0131nda) dosyay\u0131 d\xFCzeltir"},"display-message":{name:"D\xFCzeltme sonras\u0131 mesaj\u0131 g\xF6ster",description:"D\xFCzeltme sonras\u0131 de\u011Fi\u015Fen karakter say\u0131s\u0131n\u0131 g\xF6sterir"},"lint-on-file-change":{name:"Dosya De\u011Fi\u015Fikli\u011Finde D\xFCzeltme",description:"Bir dosya kapat\u0131ld\u0131\u011F\u0131nda veya yeni bir dosya a\xE7\u0131ld\u0131\u011F\u0131nda, \xF6nceki dosya d\xFCzeltilir."},"display-lint-on-file-change-message":{name:"Dosya De\u011Fi\u015Fikli\u011Finde D\xFCzeltme Mesaj\u0131n\u0131 G\xF6ster",description:"`Dosya De\u011Fi\u015Fikli\u011Finde D\xFCzeltme` oldu\u011Funda bir mesaj g\xF6sterir"},"folders-to-ignore":{name:"Yoksay\u0131lacak klas\xF6rler",description:"T\xFCm dosyalar\u0131 d\xFCzeltirken veya kaydederken d\xFCzeltme i\u015Fleminin yoksay\u0131laca\u011F\u0131 klas\xF6rler. Klas\xF6r yollar\u0131n\u0131 yeni sat\u0131rlarla ay\u0131rarak girin"},"override-locale":{name:"Yerel ayarlar\u0131n \xFCzerine yaz",description:"Varsay\u0131lan\u0131n d\u0131\u015F\u0131nda bir yerel ayar kullanmak istiyorsan\u0131z bunu ayarlay\u0131n"},"same-as-system-locale":"Sistemle ayn\u0131 ({SYS_LOCALE})","yaml-aliases-section-style":{name:"YAML takma adlar\u0131 b\xF6l\xFCm\xFC stili",description:"YAML takma adlar\u0131 b\xF6l\xFCm\xFCn\xFCn stili"},"yaml-tags-section-style":{name:"YAML etiketleri b\xF6l\xFCm\xFC stili",description:"YAML etiketleri b\xF6l\xFCm\xFCn\xFCn stili"},"default-escape-character":{name:"Varsay\u0131lan Ka\xE7\u0131\u015F Karakteri",description:"Tek t\u0131rnak ve \xE7ift t\u0131rnak bulunmayan YAML de\u011Ferlerinden ka\xE7mak i\xE7in kullan\u0131lacak varsay\u0131lan karakter."},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"\xC7ok Sat\u0131rl\u0131 Dizi Format\u0131ndayken Gereksiz Ka\xE7\u0131\u015F Karakterlerini Kald\u0131r",description:"\xC7ok sat\u0131rl\u0131 YAML dizileri i\xE7in ka\xE7\u0131\u015F karakterleri tek sat\u0131rl\u0131 dizilere g\xF6re ayn\u0131 ka\xE7\u0131\u015Fa ihtiya\xE7 duymaz, bu y\xFCzden \xE7ok sat\u0131rl\u0131 format i\xE7erisinde gerekli olmayan ekstra ka\xE7\u0131\u015Flar\u0131 kald\u0131r\u0131r"},"number-of-dollar-signs-to-indicate-math-block":{name:"Matematiksel Blo\u011Fu Belirtmek \u0130\xE7in Dolar \u0130\u015Fareti Say\u0131s\u0131",description:"Matematik i\xE7eri\u011Finin bir matematiksel blok yerine inline matematik olup olmad\u0131\u011F\u0131n\u0131 belirlemek i\xE7in kullan\u0131lacak dolar i\u015Fareti say\u0131s\u0131"}},debug:{"log-level":{name:"Log D\xFCzeyi",description:"Hizmetin loglamaya izin verdi\u011Fi log t\xFCrleri. Varsay\u0131lan ERROR'dur."},"linter-config":{name:"Linter Yap\u0131land\u0131rmas\u0131",description:"Ayar sayfas\u0131n\u0131n y\xFCklenmesi s\u0131ras\u0131nda Linter i\xE7in data.json i\xE7eri\u011Fi"},"log-collection":{name:"Kaydetme d\xFCzeltmesi ve mevcut dosyan\u0131n d\xFCzeltilmesi s\u0131ras\u0131nda loglar\u0131 topla",description:"`Kaydetme d\xFCzeltmesi` yapt\u0131\u011F\u0131n\u0131zda ve mevcut dosyay\u0131 d\xFCzeltirken loglar\u0131 toplar. Bu loglar hata ay\u0131klama ve hata raporlar\u0131 olu\u015Fturma i\xE7in yard\u0131mc\u0131 olabilir."},"linter-logs":{name:"Linter Loglar\u0131",description:"Son `Kaydetme d\xFCzeltmesi` veya son mevcut dosya \xE7al\u0131\u015Ft\u0131rmas\u0131ndan elde edilen loglar (e\u011Fer etkinle\u015Ftirilmi\u015Fse)."}}},options:{"custom-command":{name:"\xD6zel Komutlar",description:"\xD6zel komutlar, linter normal kurallar\u0131n\u0131 \xE7al\u0131\u015Ft\u0131rmay\u0131 bitirdikten sonra \xE7al\u0131\u015Ft\u0131r\u0131lan Obsidyen komutlard\u0131r. Bu, YAML zaman damgas\u0131 mant\u0131\u011F\u0131 \xE7al\u0131\u015Fmadan \xF6nce \xE7al\u0131\u015Fmad\u0131klar\u0131 anlam\u0131na gelir, dolay\u0131s\u0131yla linterin bir sonraki \xE7al\u0131\u015Fmas\u0131nda YAML zaman damgas\u0131n\u0131n tetiklenmesine neden olabilirler. Bir Obsidyen komutunu yaln\u0131zca bir kez se\xE7ebilirsiniz. **_Bunun \u015Fu anda yaln\u0131zca ge\xE7erli dosyaya sat\u0131r dizilirken \xE7al\u0131\u015Ft\u0131\u011F\u0131n\u0131 unutmay\u0131n._**",warning:"Bir se\xE7ene\u011Fi se\xE7erken, se\xE7ene\u011Fi fareyi kullanarak veya enter tu\u015Funa basarak se\xE7ti\u011Finizden emin olun. Di\u011Fer se\xE7im y\xF6ntemleri \xE7al\u0131\u015Fmayabilir ve yaln\u0131zca ger\xE7ek bir Obsidian komutunun veya bo\u015F bir dizinin se\xE7imleri kaydedilir.","add-input-button-text":"Yeni komut ekle","command-search-placeholder-text":"Obsidian komutu","move-up-tooltip":"Yukar\u0131","move-down-tooltip":"A\u015Fa\u011F\u0131","delete-tooltip":"Sil"},"custom-replace":{name:"\xD6zel Regex De\u011Fi\u015Ftirme",description:"\xD6zel regex de\u011Fi\u015Ftirme, bulunan regex ile e\u015Fle\u015Fen her \u015Feyi de\u011Fi\u015Ftirme de\u011Feri ile de\u011Fi\u015Ftirmek i\xE7in kullan\u0131labilir. De\u011Fi\u015Ftirme ve bulma de\u011Ferleri ge\xE7erli regex de\u011Ferleri olmal\u0131d\u0131r.",warning:"Regex hakk\u0131nda bilginiz yoksa dikkatli kullan\u0131n. Ayr\u0131ca, l\xFCtle iOS mobil platformunda regexinizde geriye d\xF6n\xFCk aramalar\u0131 kullanmay\u0131n \xE7\xFCnk\xFC bu, o platformda desteklenmedi\u011Fi i\xE7in lint i\u015Fleminin ba\u015Far\u0131s\u0131z olmas\u0131na neden olur.","add-input-button-text":"Yeni regex de\u011Fi\u015Ftirme ekle","regex-to-find-placeholder-text":"bulunacak regex","flags-placeholder-text":"bayraklar","regex-to-replace-placeholder-text":"de\u011Fi\u015Ftirilecek regex","label-placeholder-text":"etiket","move-up-tooltip":"Yukar\u0131 ta\u015F\u0131","move-down-tooltip":"A\u015Fa\u011F\u0131 ta\u015F\u0131","delete-tooltip":"Sil"}},rules:{"auto-correct-common-misspellings":{name:"Yayg\u0131n Yanl\u0131\u015F Yaz\u0131mlar\u0131 Otomatik D\xFCzelt",description:"Yayg\u0131n yanl\u0131\u015F yaz\u0131mlar\u0131n s\xF6zl\xFC\u011F\xFCn\xFC kullanarak bunlar\u0131 do\u011Fru yaz\u0131mlar\u0131na otomatik olarak d\xF6n\xFC\u015Ft\xFCr\xFCr. Otomatik d\xFCzeltilen kelimelerin tam listesi i\xE7in [otomatik-d\xFCzeltme haritas\u0131na](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts) bak\u0131n.","ignore-words":{name:"Kelimeleri Yoksay",description:"Otomatik d\xFCzeltme s\u0131ras\u0131nda yoksay\u0131lacak k\xFC\xE7\xFCk harfli kelimelerin virg\xFClle ayr\u0131lm\u0131\u015F listesi"}},"add-blockquote-indentation-on-paste":{name:"Yap\u0131\u015Ft\u0131rma S\u0131ras\u0131nda Blok Al\u0131nt\u0131 Girintisini Ekle",description:"\u0130mle\xE7 bir blok al\u0131nt\u0131/callout sat\u0131r\u0131nda oldu\u011Funda, t\xFCm sat\u0131rlara, ilk sat\u0131r hari\xE7, blok al\u0131nt\u0131lar ekler"},"blockquote-style":{name:"Blok Al\u0131nt\u0131 Stili",description:"Blok al\u0131nt\u0131 stili tutarl\u0131 olmal\u0131d\u0131r.",style:{name:"Stil",description:"Blok al\u0131nt\u0131 g\xF6stergelerinde kullan\u0131lan stil"}},"capitalize-headings":{name:"B\xFCy\xFCk Harfli Ba\u015Fl\u0131klar",description:"Ba\u015Fl\u0131klar b\xFCy\xFCk harfle bi\xE7imlendirilmelidir",style:{name:"Stil",description:"Kullan\u0131lacak b\xFCy\xFCk harfle ba\u015Flatma stili"},"ignore-case-words":{name:"Durum S\xF6zc\xFCklerini Yoksay",description:"Ba\u015Fl\u0131k durum stilini sadece t\xFCm k\xFC\xE7\xFCk harfli s\xF6zc\xFCklere uygula"},"ignore-words":{name:"S\xF6zc\xFCkleri Yoksay",description:"B\xFCy\xFCk harfle ba\u015Flat\u0131rken yoksay\u0131lacak s\xF6zc\xFCklerin virg\xFClle ayr\u0131lm\u0131\u015F listesi"},"lowercase-words":{name:"K\xFC\xE7\xFCk Harfli S\xF6zc\xFCkler",description:"K\xFC\xE7\xFCk harfli tutulacak s\xF6zc\xFCklerin virg\xFClle ayr\u0131lm\u0131\u015F listesi"}},"compact-yaml":{name:"S\u0131k\u0131\u015Ft\u0131r\u0131lm\u0131\u015F YAML",description:"YAML \xF6n bilgisindeki ba\u015Ftaki ve sondaki bo\u015F sat\u0131rlar\u0131 kald\u0131r\u0131r.","inner-new-lines":{name:"\u0130\xE7 Yeni Sat\u0131rlar",description:"YAML'\u0131n ba\u015F\u0131nda veya sonunda olmayan yeni sat\u0131rlar\u0131 kald\u0131r\u0131r."}},"consecutive-blank-lines":{name:"Ard\u0131\u015F\u0131k bo\u015F sat\u0131rlar",description:"En fazla bir ard\u0131\u015F\u0131k bo\u015F sat\u0131r olmal\u0131d\u0131r."},"convert-bullet-list-markers":{name:"Bullet List Markerlar\u0131n\u0131 D\xF6n\xFC\u015Ft\xFCr",description:"Bullet list marker sembollerini markdown list markerlar\u0131na d\xF6n\xFC\u015Ft\xFCr\xFCr."},"convert-spaces-to-tabs":{name:"Bo\u015Fluklar\u0131 Sekmeye D\xF6n\xFC\u015Ft\xFCr",description:"Ba\u015Ftaki bo\u015Fluklar\u0131 sekmeye d\xF6n\xFC\u015Ft\xFCr\xFCr.",tabsize:{name:"Sekme Boyutu",description:"Bir sekme haline d\xF6n\xFC\u015Ft\xFCr\xFClecek bo\u015Fluk say\u0131s\u0131"}},"emphasis-style":{name:"Vurgu Stili",description:"Vurgu stilinin tutarl\u0131 olmas\u0131n\u0131 sa\u011Flar.",style:{name:"Stil",description:"Vurgulanan i\xE7eri\u011Fi belirtmek i\xE7in kullan\u0131lan stil"}},"empty-line-around-blockquotes":{name:"Al\u0131nt\u0131 Bloklar\u0131n\u0131n Etraf\u0131nda Bo\u015F Sat\u0131r",description:"Bir belgenin ba\u015F\u0131n\u0131 veya sonunu ba\u015Flatmayan al\u0131nt\u0131 bloklar\u0131n etraf\u0131nda bo\u015F bir sat\u0131r olmal\u0131d\u0131r. **Not: bo\u015F bir sat\u0131r ya al\u0131nt\u0131 bloklar i\xE7in bir seviye daha az girinti veya yeni bir sat\u0131r karakteri demektir.**"},"empty-line-around-code-fences":{name:"Kod \xC7itlerinin Etraf\u0131nda Bo\u015F Sat\u0131r",description:"Bir belgenin ba\u015F\u0131n\u0131 veya sonunu ba\u015Flatmayan kod \xE7itlerinin etraf\u0131nda bo\u015F bir sat\u0131r olmal\u0131d\u0131r."},"empty-line-around-math-blocks":{name:"Matematik Bloklar\u0131n\u0131n Etraf\u0131nda Bo\u015F Sat\u0131r",description:"Tek sat\u0131rl\u0131k matematik i\xE7in bir matematik blo\u011Funu belirtmek i\xE7in ka\xE7 dolar i\u015Fareti oldu\u011Funu belirleyen `Dolar \u0130\u015Faretlerinin Say\u0131s\u0131yla Matematik Blo\u011Funu Belirt` kullan\u0131larak matematik bloklar\u0131n\u0131n etraf\u0131nda bo\u015F bir sat\u0131r olmal\u0131d\u0131r."},"empty-line-around-tables":{name:"Tablolar\u0131n Etraf\u0131nda Bo\u015F Sat\u0131r",description:"Bir belgenin ba\u015F\u0131n\u0131 veya sonunu ba\u015Flatmayan github flavored tablolar\u0131n etraf\u0131nda bo\u015F bir sat\u0131r olmal\u0131d\u0131r."},"escape-yaml-special-characters":{name:"YAML \xD6zel Karakterlerine Ka\xE7\u0131\u015F \u0130\u015Flemi Yap",description:`YAML i\xE7indeki bo\u015Flukla beraber gelen iki nokta \xFCst \xFCste (:), tek t\u0131rnak (') ve \xE7ift t\u0131rnak (") karakterlerini ka\xE7\u0131\u015F i\u015Flemine tabi tutar.`,"try-to-escape-single-line-arrays":{name:"Tek Sat\u0131rl\u0131k Listeleri Ka\xE7\u0131\u015F Denemesi",description:'Bir dizinin "[" ile ba\u015Flad\u0131\u011F\u0131n\u0131, "]" ile bitti\u011Fini ve \xF6\u011Felerin "," ile ayr\u0131ld\u0131\u011F\u0131n\u0131 varsayarak dizi de\u011Ferlerini ka\xE7\u0131\u015F i\u015Flemine tabi tutmaya \xE7al\u0131\u015F\u0131r.'}},"file-name-heading":{name:"Dosya Ad\u0131 Ba\u015Fl\u0131\u011F\u0131",description:"E\u011Fer hi\xE7 H1 ba\u015Fl\u0131\u011F\u0131 yoksa dosya ad\u0131n\u0131 H1 ba\u015Fl\u0131\u011F\u0131 olarak ekler."},"footnote-after-punctuation":{name:"Noktalama \u0130\u015Faretinden Sonra Dipnot",description:"Dipnot referanslar\u0131n\u0131n noktalama i\u015Faretinden \xF6nce de\u011Fil, sonra yerle\u015Ftirildi\u011Finden emin olur."},"force-yaml-escape":{name:"YAML Ka\xE7\u0131\u015F\u0131n\u0131 Zorla",description:"Belirtilen YAML anahtarlar\u0131 i\xE7in ka\xE7\u0131\u015F de\u011Ferleri.","force-yaml-escape-keys":{name:"Anahtarlarda YAML Ka\xE7\u0131\u015F\u0131n\u0131 Zorla",description:"Yeni bir sat\u0131r karakteri ile ayr\u0131lm\u0131\u015F belirtilen YAML anahtarlar\u0131nda YAML ka\xE7\u0131\u015F karakterini kullan\u0131r, e\u011Fer zaten ka\xE7\u0131\u015F yap\u0131lmam\u0131\u015Fsa. YAML dizilerinde kullanmay\u0131n"}},"format-tags-in-yaml":{name:"YAML Etiketlerini Bi\xE7imlendir",description:"YAML \xF6n madde i\xE7indeki etiketlerden hashtagleri kald\u0131r\u0131r, \xE7\xFCnk\xFC bunlar etiketleri ge\xE7ersiz k\u0131lar."},"format-yaml-array":{name:"YAML Dizisini Bi\xE7imlendir",description:"Normal YAML dizilerinin \xE7ok sat\u0131rl\u0131 veya tek sat\u0131rl\u0131 olarak bi\xE7imlendirilmesine izin verir ve `tags` ve `aliases` baz\u0131 Obsidian \xF6zg\xFC \xF6zelliklerine sahip YAML formatlar\u0131nda bulunabilir. **Not: Tek giri\u015Fli bir diziden birden fazla giri\u015Fi olan tek sat\u0131rl\u0131 bir diziye ge\xE7mek ayn\u0131d\u0131r, tek fark \xE7ok sat\u0131rl\u0131 bir dizi olmas\u0131d\u0131r.**","alias-key":{name:"YAML takma adlar\u0131 b\xF6l\xFCm\xFCn\xFC bi\xE7imlendir",description:"YAML takma adlar\u0131 b\xF6l\xFCm\xFC i\xE7in bi\xE7imlendirmeyi a\xE7ar. Bu se\xE7ene\u011Fi `YAML Title Alias` kural\u0131yla birlikte kullanmaman\u0131z \xF6nerilir \xE7\xFCnk\xFC birlikte d\xFCzg\xFCn \xE7al\u0131\u015Fmayabilir veya farkl\u0131 bi\xE7imlendirme stilleri se\xE7ilmi\u015F olabilir, bu beklenmeyen sonu\xE7lara yol a\xE7abilir."},"tag-key":{name:"YAML etiketleri b\xF6l\xFCm\xFCn\xFC bi\xE7imlendir",description:"YAML etiketleri b\xF6l\xFCm\xFC i\xE7in bi\xE7imlendirmeyi a\xE7ar."},"default-array-style":{name:"Varsay\u0131lan YAML dizi b\xF6l\xFCm\xFC stili",description:"`tags`, `aliases` veya `Force key values to be single-line arrays` ve `Force key values to be multi-line arrays` olmayan di\u011Fer YAML dizilerinin stili"},"default-array-keys":{name:"YAML dizi b\xF6l\xFCmlerini bi\xE7imlendir",description:"Normal YAML dizileri i\xE7in bi\xE7imlendirmeyi a\xE7ar"},"force-single-line-array-style":{name:"Anahtar de\u011Ferlerini tek sat\u0131rl\u0131 dizilere zorla",description:"Yeni sat\u0131r ile ayr\u0131lan anahtarlar i\xE7in YAML dizisini tek sat\u0131rl\u0131 formatta olmaya zorlar (bu se\xE7ene\u011Fi devre d\u0131\u015F\u0131 b\u0131rakmak i\xE7in bo\u015F b\u0131rak\u0131n)"},"force-multi-line-array-style":{name:"Anahtar de\u011Ferlerini \xE7ok sat\u0131rl\u0131 dizilere zorla",description:"Yeni sat\u0131r ile ayr\u0131lan anahtarlar i\xE7in YAML dizisini \xE7ok sat\u0131rl\u0131 formatta olmaya zorlar (bu se\xE7ene\u011Fi devre d\u0131\u015F\u0131 b\u0131rakmak i\xE7in bo\u015F b\u0131rak\u0131n)"}},"header-increment":{name:"Ba\u015Fl\u0131k Art\u0131r\u0131m\u0131",description:"Ba\u015Fl\u0131k seviyeleri bir seferde sadece bir seviye artmal\u0131d\u0131r","start-at-h2":{name:"Ba\u015Fl\u0131k Art\u0131r\u0131m\u0131n\u0131 Ba\u015Fl\u0131k Seviyesi 2\u2019de Ba\u015Flat",description:"Bir dosyadaki minimum ba\u015Fl\u0131k seviyesini ba\u015Fl\u0131k seviyesi 2 yapar ve buna g\xF6re t\xFCm ba\u015Fl\u0131klar\u0131 kayd\u0131r\u0131r, b\xF6ylece ba\u015Fl\u0131k art\u0131\u015F\u0131 seviye 2 ba\u015Fl\u0131\u011F\u0131 ile ba\u015Flar."}},"heading-blank-lines":{name:"Ba\u015Fl\u0131k Bo\u015F Sat\u0131rlar\u0131",description:"T\xFCm ba\u015Fl\u0131klar\u0131n hem \xF6ncesinde hem de sonras\u0131nda birer bo\u015F sat\u0131r olmal\u0131d\u0131r (ba\u015Fl\u0131k belgenin ba\u015F\u0131nda veya sonunda oldu\u011Funda bu durum ge\xE7erli de\u011Fildir).",bottom:{name:"Alt",description:"Ba\u015Fl\u0131klar\u0131n sonras\u0131na bo\u015F sat\u0131r ekler"},"empty-line-after-yaml":{name:"YAML ve Ba\u015Fl\u0131k Aras\u0131nda Bo\u015F Sat\u0131r",description:"YAML \xF6n madde ve ba\u015Fl\u0131k aras\u0131ndaki bo\u015F sat\u0131r\u0131 korur"}},"headings-start-line":{name:"Ba\u015Fl\u0131klar Sat\u0131r\u0131 Ba\u015Flat\u0131r",description:"Bir sat\u0131r\u0131 ba\u015Flatmayan ba\u015Fl\u0131klar\u0131n \xF6ncesi bo\u015Fluklar\u0131 kald\u0131r\u0131l\u0131r ki ba\u015Fl\u0131klar ba\u015Fl\u0131k olarak tan\u0131nabilsin."},"insert-yaml-attributes":{name:"YAML \xD6zniteliklerini Ekle",description:"Verilen YAML \xF6zniteliklerini YAML \xF6n maddesine ekler. Her \xF6zniteli\u011Fi tek bir sat\u0131ra koyun.","text-to-insert":{name:"Eklenecek metin",description:"YAML \xF6n maddesine eklenen metin"}},"line-break-at-document-end":{name:"Belge Sonunda Sat\u0131r Sonu",description:"Bir belgenin sonunda tam olarak bir sat\u0131r sonu oldu\u011Funu garanti eder."},"move-footnotes-to-the-bottom":{name:"Dipnotlar\u0131 Altbilgiye Ta\u015F\u0131",description:"T\xFCm dipnotlar\u0131 belgenin alt\u0131na ta\u015F\u0131r."},"move-math-block-indicators-to-their-own-line":{name:"Matematik Blok G\xF6stergelerini Kendi Sat\u0131rlar\u0131na Ta\u015F\u0131",description:'Tek sat\u0131rl\u0131 matematik i\xE7in ka\xE7 dolar i\u015Faretinin bir matematik blo\u011Funu g\xF6sterdi\u011Fini belirlemek i\xE7in "Bir Matematik Blo\u011Fu G\xF6stermek \u0130\xE7in Dolar \u0130\u015Fareti Say\u0131s\u0131"n\u0131 kullanarak t\xFCm ba\u015Flang\u0131\xE7 ve biti\u015F matematik blo\u011Fu g\xF6stergelerini kendi sat\u0131rlar\u0131na ta\u015F\u0131y\u0131n.'},"move-tags-to-yaml":{name:"Etiketleri YAML'a Ta\u015F\u0131",description:"T\xFCm etiketleri belgenin YAML \xF6n maddesine ta\u015F\u0131r.","how-to-handle-existing-tags":{name:"Metin i\xE7indeki etiket i\u015Flemi",description:"\xD6n maddeye ta\u015F\u0131nd\u0131ktan sonra dosyan\u0131n i\xE7eri\u011Finde bulunan ve yoksay\u0131lmayan etiketlerle ne yap\u0131laca\u011F\u0131"},"tags-to-ignore":{name:"Yoksay\u0131lacak etiketler",description:"\u0130\xE7erik g\xF6vdesindeki hashtag'lerden kald\u0131rma etkinle\u015Ftirilmi\u015Fse, etiketler dizisine ta\u015F\u0131nmayacak veya i\xE7erik g\xF6vdesinden kald\u0131r\u0131lmayacak etiketler. Her etiket yeni bir sat\u0131rda ve `#` olmadan olmal\u0131d\u0131r. **Etiket ad\u0131nda hashtag i\xE7ermedi\u011Finizden emin olun.**"}},"no-bare-urls":{name:"Yal\u0131n URL'ler Olmas\u0131n",description:"Yal\u0131n URL'leri a\xE7\u0131l\u0131 ayra\xE7lar ile ku\u015Fat\u0131r, tek veya \xE7ift t\u0131rnak, k\xF6\u015Feli parantez veya e\u011Fik kesme i\u015Fareti i\xE7inde de\u011Filse."},"ordered-list-style":{name:"S\u0131ral\u0131 Liste Stili",description:"S\u0131ral\u0131 listelerin belirtilen stili izlemesini sa\u011Flar. **Not: 2 bo\u015Fluk veya 1 sekme bir girinti seviyesi olarak kabul edilir.**","number-style":{name:"Numara Stili",description:"S\u0131ral\u0131 liste g\xF6stergelerinde kullan\u0131lan numara stili"},"list-end-style":{name:"S\u0131ral\u0131 Liste G\xF6sterge Sonu Stili",description:"Bir s\u0131ral\u0131 liste g\xF6stergesinin biti\u015F karakteri"}},"paragraph-blank-lines":{name:"Paragraf Bo\u015F Sat\u0131rlar\u0131",description:"T\xFCm paragraflar\u0131n hem \xF6nce hem sonra tam olarak bir bo\u015F sat\u0131r\u0131 olmal\u0131d\u0131r."},"prevent-double-checklist-indicator-on-paste":{name:"Yap\u0131\u015Ft\u0131rmada \xC7ift Kontrol Listesi G\xF6stergesini \xD6nle",description:"Kurs\xF6r\xFCn dosyadaki sat\u0131rda bir kontrol listesi g\xF6stergesi varsa, yap\u0131\u015Ft\u0131r\u0131lacak metinden ba\u015Flang\u0131\xE7 kontrol listesi g\xF6stergesini kald\u0131r\u0131r"},"prevent-double-list-item-indicator-on-paste":{name:"Yap\u0131\u015Ft\u0131rmada \xC7ift Liste \xD6\u011Fesi G\xF6stergesini \xD6nle",description:"Kurs\xF6r\xFCn dosyadaki sat\u0131rda bir liste g\xF6stergesi varsa, yap\u0131\u015Ft\u0131r\u0131lacak metinden ba\u015Flang\u0131\xE7 listesi g\xF6stergesini kald\u0131r\u0131r"},"proper-ellipsis-on-paste":{name:"Yap\u0131\u015Ft\u0131rmada Uygun \xDC\xE7 Nokta",description:"Yap\u0131\u015Ft\u0131r\u0131lacak metinde aralar\u0131nda bo\u015Fluk olsa bile ard\u0131\u015F\u0131k \xFC\xE7 noktay\u0131, \xFC\xE7 nokta karakteriyle ile de\u011Fi\u015Ftirir"},"proper-ellipsis":{name:"Uygun \xDC\xE7 Nokta",description:"Ard\u0131\u015F\u0131k \xFC\xE7 tane noktay\u0131, \xFC\xE7 nokta karakteriyle de\u011Fi\u015Ftirir."},"quote-style":{name:"\xFC\xE7 nokta karakteriyle",description:"G\xF6vde i\xE7eri\u011Findeki al\u0131nt\u0131lar\u0131 belirtilen tek ve \xE7ift al\u0131nt\u0131 stillerine g\xFCnceller.","single-quote-enabled":{name:"`Tek Al\u0131nt\u0131 Stili` Kullan\u0131m\u0131",description:"Se\xE7ilen tek al\u0131nt\u0131 stilinin kullan\u0131laca\u011F\u0131n\u0131 belirtir."},"single-quote-style":{name:"Tek Al\u0131nt\u0131 Stili",description:"Kullan\u0131lacak tek al\u0131nt\u0131 stilidir."},"double-quote-enabled":{name:"`\xC7ift Al\u0131nt\u0131 Stili` Kullan\u0131m\u0131",description:"Se\xE7ilen \xE7ift al\u0131nt\u0131 stilinin kullan\u0131laca\u011F\u0131n\u0131 belirtir."},"double-quote-style":{name:"\xC7ift Al\u0131nt\u0131 Stili",description:"Kullan\u0131lacak \xE7ift al\u0131nt\u0131 stilidir."}},"re-index-footnotes":{name:"Dipnotlar\u0131 Yeniden \u0130ndeksle",description:"Dipnot anahtarlar\u0131n\u0131 ve dipnotlar\u0131, olu\u015Fum s\u0131ras\u0131na g\xF6re yeniden indeksler. **Not: Bir anahtar i\xE7in birden fazla dipnot varsa, bu kural \xE7al\u0131\u015Fmaz.**"},"remove-consecutive-list-markers":{name:"Ard\u0131\u015F\u0131k Liste \u0130\u015Faretlerini Kald\u0131r",description:"Ard\u0131\u015F\u0131k liste i\u015Faretlerini kald\u0131r\u0131r. Liste \xF6\u011Felerini kopyala-yap\u0131\u015Ft\u0131r yaparken kullan\u0131\u015Fl\u0131d\u0131r."},"remove-empty-lines-between-list-markers-and-checklists":{name:"Liste \u0130\u015Faretleri ve Kontrol Listeleri Aras\u0131ndaki Bo\u015F Sat\u0131rlar\u0131 Kald\u0131r",description:"Liste i\u015Faretleri ve kontrol listeleri aras\u0131nda bo\u015F sat\u0131r olmamal\u0131d\u0131r."},"remove-empty-list-markers":{name:"Bo\u015F Liste \u0130\u015Faret\xE7ilerini Kald\u0131r",description:"Bo\u015F liste i\u015Faret\xE7ilerini, yani i\xE7eriksiz liste \xF6\u011Felerini kald\u0131r\u0131r."},"remove-hyphenated-line-breaks":{name:"Tireli Sat\u0131r Sonlar\u0131n\u0131 Kald\u0131r",description:"Removes hyphenated line breaks. Useful when pasting text from textbooks."},"remove-hyphens-on-paste":{name:"Yap\u0131\u015Ft\u0131r\u0131rken Tireleri Kald\u0131r",description:"Yap\u0131\u015Ft\u0131r\u0131lacak metindeki tireleri kald\u0131r\u0131r"},"remove-leading-or-trailing-whitespace-on-paste":{name:"Yap\u0131\u015Ft\u0131rda \xD6ndeki veya Sondaki Bo\u015Fluklar\u0131 Kald\u0131r",description:"Yap\u0131\u015Ft\u0131r\u0131lacak metnin ba\u015F\u0131ndaki sekme olmayan bo\u015Fluklar\u0131 ve sonundaki t\xFCm bo\u015Fluklar\u0131 kald\u0131r\u0131r"},"remove-leftover-footnotes-from-quote-on-paste":{name:"Yap\u0131\u015Ft\u0131rmada Al\u0131nt\u0131dan Kalan Dipnotlar\u0131 Kald\u0131r",description:"Yap\u0131\u015Ft\u0131r\u0131lacak metinden herhangi bir kal\u0131nt\u0131 dipnot referanslar\u0131n\u0131 kald\u0131r\u0131r"},"remove-link-spacing":{name:"Link Aral\u0131\u011F\u0131n\u0131 Kald\u0131r",description:"Link metninin etraf\u0131ndaki bo\u015Fluklar\u0131 kald\u0131r\u0131r."},"remove-multiple-blank-lines-on-paste":{name:"Yap\u0131\u015Ft\u0131r\u0131rken Birden Fazla Bo\u015F Sat\u0131r\u0131 Kald\u0131r",description:"Metnin yap\u0131\u015Ft\u0131r\u0131lmas\u0131 i\xE7in birden \xE7ok bo\u015F sat\u0131r\u0131 tek bir bo\u015F sat\u0131ra s\u0131k\u0131\u015Ft\u0131r\u0131r"},"remove-multiple-spaces":{name:"Birden Fazla Bo\u015Flu\u011Fu Kald\u0131r",description:"\u0130ki veya daha fazla ard\u0131\u015F\u0131k bo\u015Flu\u011Fu kald\u0131r\u0131r. Sat\u0131r\u0131n ba\u015F\u0131ndaki ve sonundaki bo\u015Fluklar\u0131 g\xF6rmezden gelir. "},"remove-space-around-characters":{name:"Karakterler Etraf\u0131ndaki Bo\u015Flu\u011Fu Kald\u0131r",description:"Belirli karakterlerin bo\u015Fluklarla (tek bo\u015Fluk veya sekme) \xE7evrelenmemesini sa\u011Flar. **Not: Bu, baz\u0131 durumlarda indirim bi\xE7imiyle ilgili sorunlara neden olabilir.**","include-fullwidth-forms":{name:"Tam Geni\u015Flikte Formlar\u0131 Dahil Et",description:'<a href="https://en.wikipedia.org/wiki/Halfwidth_and_Fullwidth_Forms_(Unicode_block)">Tam Geni\u015Flikte Formlar Unicode blo\u011Funu</a> dahil eder'},"include-cjk-symbols-and-punctuation":{name:"CJK Sembol ve Noktalama \u0130\u015Faretlerini Dahil Et",description:'<a href="https://en.wikipedia.org/wiki/CJK_Symbols_and_Punctuation">CJK Sembol ve Noktalama Unicode blo\u011Funu</a> dahil eder'},"include-dashes":{name:"Tireleri Dahil Et",description:"En tire (\u2013) ve em tireyi (\u2014) dahil eder"},"other-symbols":{name:"Di\u011Fer Semboller",description:"Dahil edilecek di\u011Fer semboller"}},"remove-space-before-or-after-characters":{name:"Karakterlerden \xD6nce veya Sonra Bo\u015Flu\u011Fu Kald\u0131r",description:"Belirtilen karakterlerden \xF6nceki ve sonraki bo\u015Flu\u011Fu kald\u0131r\u0131r. **Not: bu durum baz\u0131 durumlarda markdown format\u0131nda sorunlara neden olabilir.**","characters-to-remove-space-before":{name:"\xD6nceki Bo\u015Flu\u011Fu Kald\u0131r\u0131lacak Karakterler",description:"Belirtilen karakterlerden \xF6nceki bo\u015Flu\u011Fu kald\u0131r\u0131r. **Not: karakter listesinde `{` veya `}` kullanmak, sahne arkas\u0131nda yoksayma s\xF6zdizimi kullan\u0131ld\u0131\u011F\u0131 i\xE7in dosyalar\u0131 beklenmedik \u015Fekilde etkiler.**"},"characters-to-remove-space-after":{name:"Sonraki Bo\u015Flu\u011Fu Kald\u0131r\u0131lacak Karakterler",description:"Belirtilen karakterlerden sonraki bo\u015Flu\u011Fu kald\u0131r\u0131r. **Not: karakter listesinde `{` veya `}` kullanmak, sahne arkas\u0131nda yoksayma s\xF6zdizimi kullan\u0131ld\u0131\u011F\u0131 i\xE7in dosyalar\u0131 beklenmedik \u015Fekilde etkiler.**"}},"remove-trailing-punctuation-in-heading":{name:"Ba\u015Fl\u0131klardaki Son Noktalama \u0130\u015Faretlerini Kald\u0131r",description:"Belirtilen noktalama i\u015Faretlerini ba\u015Fl\u0131klar\u0131n sonundan kald\u0131r\u0131r ve [HTML varl\u0131k referanslar\u0131n\u0131n](https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references) sonundaki noktal\u0131 virg\xFCl\xFC yoksayar.","punctuation-to-remove":{name:"Sondaki Noktalama",description:"Dosyadaki ba\u015Fl\u0131klardan kald\u0131r\u0131lacak noktalama i\u015Faretleri."}},"remove-yaml-keys":{name:"YAML Anahtarlar\u0131n\u0131 Kald\u0131r",description:"Belirtilen YAML anahtarlar\u0131n\u0131 kald\u0131r\u0131r","yaml-keys-to-remove":{name:"Kald\u0131r\u0131lacak YAML Anahtarlar\u0131",description:"YAML \xF6n maddesinden iki nokta \xFCst \xFCste ile veya olmadan kald\u0131r\u0131lacak YAML anahtarlar\u0131"}},"space-after-list-markers":{name:"Liste \u0130\u015Faretlerinden Sonra Bo\u015Fluk",description:"Liste i\u015Faretleri ve onay kutular\u0131ndan sonra tek bir bo\u015Fluk olmal\u0131d\u0131r"},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"\xC7ince, Japonca veya Korece ve \u0130ngilizce veya Say\u0131lar Aras\u0131nda Bo\u015Fluk",description:"\xC7ince, Japonca veya Korece ve \u0130ngilizce veya say\u0131lar aras\u0131nda tek bir bo\u015Fluk olmas\u0131 gerekti\u011Fini sa\u011Flar. Bu [kurallar\u0131](https://github.com/sparanoid/chinese-copywriting-guidelines) takip eder"},"strong-style":{name:"Kal\u0131n Stil",description:"Kal\u0131n stilin tutarl\u0131 oldu\u011Funu garanti eder.",style:{name:"Stil",description:"Kal\u0131n/yo\u011Fun i\xE7eri\u011Fi belirtmek i\xE7in kullan\u0131lan stil"}},"trailing-spaces":{name:"Sondaki bo\u015Fluklar",description:"Her sat\u0131r\u0131n sonundaki fazladan bo\u015Fluklar\u0131 kald\u0131r\u0131r.","twp-space-line-break":{name:"\u0130ki Bo\u015Fluklu Sat\u0131r Sonu",description:'Bir sat\u0131r sonunu takiben iki bo\u015Flu\u011Fu g\xF6z ard\u0131 et ("\u0130ki Bo\u015Fluk Kural\u0131").'}},"two-spaces-between-lines-with-content":{name:"\u0130\xE7eri\u011Fi Olan Sat\u0131rlar Aras\u0131nda \u0130ki Bo\u015Fluk",description:"\u0130\xE7eri\u011Fi devam eden sat\u0131rlar\u0131n sonuna paragraflar, blok al\u0131nt\u0131lar\u0131 ve liste \xF6\u011Feleri i\xE7in iki bo\u015Fluk eklenmesini sa\u011Flar"},"unordered-list-style":{name:"S\u0131ras\u0131z Liste Stili",description:"S\u0131ras\u0131z listelerin belirtilen stili takip etti\u011Finden emin olur.","list-style":{name:"Liste \xF6\u011Fesi stili",description:"S\u0131ras\u0131z listelerde kullan\u0131lacak liste \xF6\u011Fesi stili"}},"yaml-key-sort":{name:"YAML Anahtar S\u0131ralamas\u0131",description:"YAML anahtarlar\u0131n\u0131 belirtilen s\u0131ra ve \xF6nceli\u011Fe g\xF6re s\u0131ralar. **Not: bo\u015F sat\u0131rlar\u0131 da kald\u0131rabilir.**","yaml-key-priority-sort-order":{name:"YAML Anahtar \xD6ncelik S\u0131ralama D\xFCzeni",description:"Her sat\u0131rda bir tane olacak \u015Fekilde anahtarlar\u0131n hangi s\u0131rayla s\u0131ralanaca\u011F\u0131"},"priority-keys-at-start-of-yaml":{name:"\xD6ncelikli Anahtarlar YAML'\u0131n Ba\u015F\u0131nda",description:"YAML Anahtar \xD6ncelik S\u0131ralama D\xFCzeni, YAML \xF6n maddesinin ba\u015F\u0131nda yer al\u0131r"},"yaml-sort-order-for-other-keys":{name:"Di\u011Fer Anahtarlar \u0130\xE7in YAML S\u0131ralama D\xFCzeni",description:"YAML Anahtar \xD6ncelik S\u0131ralama D\xFCzeni metin alan\u0131nda bulunmayan anahtarlar\u0131 nas\u0131l s\u0131ralayaca\u011F\u0131"}},"yaml-timestamp":{name:"YAML Zaman Damgas\u0131",description:"Dosyan\u0131n son d\xFCzenlendi\u011Fi tarihi YAML \xF6n maddesinde takip eder. Tarihler dosya metadatas\u0131ndan al\u0131n\u0131r.","date-created":{name:"Olu\u015Fturma Tarihi",description:"Dosyan\u0131n olu\u015Fturma tarihini ekler"},"date-created-key":{name:"Olu\u015Fturma Tarihi Anahtar\u0131",description:"Olu\u015Fturma tarihi i\xE7in hangi YAML anahtar\u0131n\u0131 kullanaca\u011F\u0131"},"force-retention-of-create-value":{name:"Olu\u015Fturma Tarihi Anahtar De\u011Ferinin Korunmas\u0131n\u0131 Zorla",description:"Dosya metadatas\u0131 yerine YAML \xF6n maddesindeki tarihi yeniden kullan\u0131r, bu da dosya metadatas\u0131ndaki de\u011Fi\u015Fikliklerin de\u011Ferin farkl\u0131 bir de\u011Fere de\u011Fi\u015Fmesine neden olmas\u0131n\u0131 \xF6nler."},"date-modified":{name:"De\u011Fi\u015Ftirme Tarihi",description:"Dosyan\u0131n son de\u011Fi\u015Ftirildi\u011Fi tarihi ekler"},"date-modified-key":{name:"De\u011Fi\u015Ftirme Tarihi Anahtar\u0131",description:"De\u011Fi\u015Ftirme tarihi i\xE7in hangi YAML anahtar\u0131n\u0131 kullanaca\u011F\u0131"},format:{name:"Format",description:"Kullan\u0131lacak Zaman format\u0131 (bak\u0131n\u0131z [Moment format options](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))"}},"yaml-title-alias":{name:"YAML Ba\u015Fl\u0131k Takma Ad\u0131",description:"Dosyan\u0131n ba\u015Fl\u0131\u011F\u0131n\u0131 YAML \xF6n maddesinin takma adlar\u0131 b\xF6l\xFCm\xFCne ekler. Ba\u015Fl\u0131\u011F\u0131 ilk H1 veya dosya ad\u0131ndan al\u0131r.","preserve-existing-alias-section-style":{name:"Mevcut takma adlar b\xF6l\xFCm stilini koru",description:"Ayarlan\u0131rsa, `YAML takma adlar b\xF6l\xFCm\xFC stili` ayar\u0131 yaln\u0131zca yeni olu\u015Fturulan b\xF6l\xFCmlere uygulan\u0131r"},"keep-alias-that-matches-the-filename":{name:"Dosya ad\u0131na uyan takma ad\u0131 koru",description:"Bu t\xFCr takma adlar genellikle gereksizdir"},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"`linter-yaml-title-alias` YAML anahtar\u0131n\u0131 kullanarak eski dosya ad\u0131 ve ba\u015Fl\u0131k de\u011Fi\u015Fikliklerini takip et",description:"Ayarlan\u0131rsa, ilk H1 ba\u015Fl\u0131\u011F\u0131 de\u011Fi\u015Fti\u011Finde veya ilk H1 yoksa dosya ad\u0131 de\u011Fi\u015Fti\u011Finde, bu anahtarda saklanan eski takma ad, takma adlar dizisine yeni bir giri\u015F eklemek yerine yeni de\u011Ferle de\u011Fi\u015Ftirilir"}},"yaml-title":{name:"YAML Ba\u015Fl\u0131k",description:"Dosyan\u0131n ba\u015Fl\u0131\u011F\u0131n\u0131 YAML \xF6n maddesine ekler. Ba\u015Fl\u0131k se\xE7ilen moda g\xF6re al\u0131n\u0131r.","title-key":{name:"Ba\u015Fl\u0131k Anahtar\u0131",description:"Ba\u015Fl\u0131k i\xE7in hangi YAML anahtar\u0131n\u0131 kullanaca\u011F\u0131"},mode:{name:"Mod",description:"Ba\u015Fl\u0131\u011F\u0131 almak i\xE7in kullan\u0131lacak y\xF6ntem"}}},enums:{"Title Case":"Ba\u015F Harfleri B\xFCy\xFCk","ALL CAPS":"T\xDCM\xDC B\xDCY\xDCK HARF","First letter":"\u0130lk Harf",".":".",")":")",ERROR:"hata",TRACE:"i\u015Faret",DEBUG:"hata ay\u0131klama",INFO:"bilgi",WARN:"uyar\u0131",SILENT:"sessiz",ascending:"artan",lazy:"tembel",Nothing:"Hi\xE7biri","Remove hashtag":"Hashtagi Kald\u0131r","Remove whole tag":"T\xFCm Etiketi Kald\u0131r",asterisk:"y\u0131ld\u0131z",underscore:"alt \xE7izgi",consistent:"tutarl\u0131","-":"-","*":"*","+":"+",space:"bo\u015Fluk","no space":"bo\u015Fluk yok",None:"Yok","Ascending Alphabetical":"Artan Alfabetik","Descending Alphabetical":"Azalan Alfabetik","multi-line":"\xE7oklu-sat\u0131r","single-line":"tek-sat\u0131r","single string to single-line":"tek dizeden tek sat\u0131ra","single string to multi-line":"tek dizeden \xE7ok sat\u0131ra","single string comma delimited":"virg\xFClle ayr\u0131lm\u0131\u015F tek dize","single string space delimited":"bo\u015Flukla ayr\u0131lm\u0131\u015F tek dize","single-line space delimited":"bo\u015Flukla ayr\u0131lm\u0131\u015F tek sat\u0131r","first-h1":"\u0130lk H1","first-h1-or-filename-if-h1-missing":"\u0130lk H1 veya H1 Eksikse Dosya Ad\u0131",filename:"Dosya Ad\u0131","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var yd={};var bd={commands:{"lint-file":{name:"\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6","error-message":"\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6\u65F6\u51FA\u9519"},"lint-file-unless-ignored":{name:"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\uFF08\u9664\u4E86\u88AB\u5FFD\u7565\u7684\u6587\u4EF6\uFF09"},"lint-all-files":{name:"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6","error-message":"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\u65F6\u51FA\u9519","success-message":"\u5DF2\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6","errors-message-singular":"\u5DF2\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\uFF0C\u5176\u4E2D\u6709 1 \u4E2A\u9519\u8BEF","errors-message-plural":"\u5DF2\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\uFF0C\u5176\u4E2D\u6709 {NUM} \u4E2A\u9519\u8BEF","start-message":"\u8FD9\u5C06\u6539\u52A8\u6240\u6709\u6587\u4EF6\uFF0C\u5305\u62EC\u5B50\u6587\u4EF6\u5939\u4E2D\u7684\u6587\u4EF6\uFF0C\u53EF\u80FD\u4F1A\u5F15\u5165\u9519\u8BEF","submit-button-text":"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6","submit-button-notice-text":"\u6B63\u5728\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6..."},"lint-all-files-in-folder":{name:"\u683C\u5F0F\u5316\u6587\u4EF6\u5939\u4E2D\u7684\u6240\u6709\u6587\u4EF6","start-message":"\u8FD9\u5C06\u6539\u52A8\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684\u6240\u6709\u6587\u4EF6\uFF0C\u5305\u62EC\u5B50\u6587\u4EF6\u5939\u4E2D\u7684\u6587\u4EF6\uFF0C\u53EF\u80FD\u4F1A\u5F15\u5165\u9519\u8BEF","submit-button-text":"\u683C\u5F0F\u5316\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684\u6240\u6709\u6587\u4EF6","submit-button-notice-text":"\u6B63\u5728\u683C\u5F0F\u5316\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684\u6240\u6709\u6587\u4EF6...","error-message":"\u683C\u5F0F\u5316\u6587\u4EF6\u5939\u4E2D\u7684\u6240\u6709\u6587\u4EF6\u65F6\u51FA\u9519","success-message":"\u5DF2\u683C\u5F0F\u5316\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684\u6240\u6709 {NUM} \u4E2A\u6587\u4EF6","message-singular":"\u5DF2\u683C\u5F0F\u5316\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684\u6240\u6709 {NUM} \u4E2A\u6587\u4EF6\uFF0C\u5176\u4E2D\u6709 1 \u4E2A\u9519\u8BEF","message-plural":"\u5DF2\u683C\u5F0F\u5316\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684 {FILE_COUNT} \u4E2A\u6587\u4EF6\uFF0C\u5176\u4E2D\u6709 {ERROR_COUNT} \u4E2A\u9519\u8BEF."},"paste-as-plain-text":{name:"\u7C98\u8D34\u4E3A\u7EAF\u6587\u672C\u4E14\u4E0D\u63D0\u9192"},"lint-file-pop-up-menu-text":{name:"\u683C\u5F0F\u5316\u6587\u4EF6"},"lint-folder-pop-up-menu-text":{name:"\u683C\u5F0F\u5316\u6587\u4EF6\u5939"}},logs:{"plugin-load":"\u6B63\u5728\u52A0\u8F7D\u63D2\u4EF6","plugin-unload":"\u6B63\u5728\u5378\u8F7D\u63D2\u4EF6","folder-lint":"\u6B63\u5728\u683C\u5F0F\u5316\u6587\u4EF6\u5939","linter-run":"\u6B63\u5728\u8FD0\u884C Linter","paste-link-warning":"\u4E2D\u6B62\u7C98\u8D34\u683C\u5F0F\u5316 \uFF0C\u56E0\u4E3A\u526A\u8D34\u677F\u5185\u5BB9\u662F\u4E00\u4E2A\u94FE\u63A5\uFF0C\u8FD9\u6837\u505A\u5C06\u907F\u514D\u4E0E\u5176\u4ED6\u4FEE\u6539\u7C98\u8D34\u884C\u4E3A\u7684\u63D2\u4EF6\u53D1\u751F\u51B2\u7A81","see-console":"\u8BF7\u67E5\u770B\u63A7\u5236\u53F0\u4EE5\u83B7\u53D6\u66F4\u591A\u4FE1\u606F","unknown-error":"\u683C\u5F0F\u5316\u8FC7\u7A0B\u53D1\u751F\u672A\u77E5\u9519\u8BEF","moment-locale-not-found":"\u5C1D\u8BD5\u5C06 Moment.js \u7684\u9ED8\u8BA4\u5730\u533A\u8BED\u8A00\u5207\u6362\u5230 {MOMENT_LOCALE}, \u5B9E\u9645\u5207\u6362\u5230 {CURRENT_LOCALE}","file-change-lint-message-start":"\u683C\u5F0F\u5316\u5DF2\u5B8C\u6210","pre-rules":"\u6BD4\u6B63\u5E38\u89C4\u5219\u4F18\u5148\u7EA7\u66F4\u9AD8\u7684\u89C4\u5219","post-rules":"\u6BD4\u6B63\u5E38\u89C4\u5219\u4F18\u5148\u7EA7\u66F4\u4F4E\u7684\u89C4\u5219","rule-running":"\u6B63\u5728\u8FD0\u884C\u89C4\u5219","custom-regex":"\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u89C4\u5219","running-custom-regex":"\u6B63\u5728\u8FD0\u884C\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u89C4\u5219","running-custom-lint-command":"\u6B63\u5728\u8FD0\u884C\u81EA\u5B9A\u4E49\u683C\u5F0F\u5316\u547D\u4EE4","custom-lint-duplicate-warning":'\u4F60\u4E0D\u80FD\u8FD0\u884C\u540C\u4E00\u4E2A\u81EA\u5B9A\u4E49\u89C4\u5219 ("{COMMAND_NAME}") \u4E24\u6B21',"custom-lint-error-message":"\u81EA\u5B9A\u4E49\u683C\u5F0F\u5316\u547D\u4EE4","disabled-text":"\u5DF2\u7981\u7528","run-rule-text":"\u8FD0\u884C\u4E2D","timing-key-not-found":"\u8BA1\u65F6\u952E '{TIMING_KEY}' \u5728\u8BA1\u65F6\u4FE1\u606F\u5217\u8868\u4E2D\u4E0D\u5B58\u5728\uFF0C\u5DF2\u5FFD\u7565","milliseconds-abbreviation":"\u6BEB\u79D2","invalid-date-format-error":"\u65E0\u6CD5\u89E3\u6790\u6216\u786E\u5B9A'{FILE_NAME}'\u4E2D\u7684\u521B\u5EFA\u65E5\u671F'{DATE}'\u7684\u683C\u5F0F\uFF0C\u521B\u5EFA\u65E5\u671F\u672A\u8FDB\u884C\u4FEE\u6539","invalid-delimiter-error-message":"\u5206\u9694\u7B26\u53EA\u80FD\u4E3A\u5355\u4E2A\u5B57\u7B26","missing-footnote-error-message":"\u811A\u6CE8 '{FOOTNOTE}' \u6CA1\u6709\u5BF9\u5E94\u7684\u5F15\u7528\uFF0C\u65E0\u6CD5\u5904\u7406\u3002\u8BF7\u786E\u4FDD\u6240\u6709\u811A\u6CE8\u90FD\u6709\u76F8\u5E94\u7684\u5F15\u7528\u3002","too-many-footnotes-error-message":"\u811A\u6CE8\u7F16\u53F7 '{FOOTNOTE_KEY}' \u6709\u8D85\u8FC71\u4E2A\u811A\u6CE8\u5728\u4F7F\u7528\uFF0C\u8BF7\u4FEE\u6539\u811A\u6CE8\u4F7F\u5F97\u4E00\u4E2A\u811A\u6CE8\u7F16\u53F7\u5BF9\u5E94\u4E00\u4E2A\u811A\u6CE8","wrapper-yaml-error":"yaml\u51FA\u73B0\u9519\u8BEF: {ERROR_MESSAGE}","wrapper-unknown-error":"\u672A\u77E5\u9519\u8BEF: {ERROR_MESSAGE}"},"notice-text":{"empty-clipboard":"\u526A\u8D34\u677F\u4E3A\u7A7A","characters-added":"\u4E2A\u5B57\u7B26\u88AB\u6DFB\u52A0","characters-removed":"\u4E2A\u5B57\u7B26\u88AB\u79FB\u9664"},"all-rules-option":"\u5168\u90E8","linter-title":"Linter","empty-search-results-text":"\u6CA1\u6709\u5339\u914D\u7684\u8BBE\u7F6E\u9879","warning-text":"\u8B66\u544A","file-backup-text":"\u8BF7\u786E\u4FDD\u4F60\u5DF2\u5907\u4EFD\u6587\u4EF6",tabs:{names:{general:"\u57FA\u7840",custom:"\u81EA\u5B9A\u4E49",yaml:"YAML",heading:"\u6807\u9898",content:"\u5185\u5BB9",footnote:"\u811A\u6CE8",spacing:"\u7A7A\u884C",paste:"\u7C98\u8D34",debug:"Debug"},"default-search-bar-text":"\u641C\u7D22\u8BBE\u7F6E\u9879",general:{"lint-on-save":{name:"\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u6587\u4EF6",description:"\u624B\u52A8\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u6587\u4EF6\uFF08\u5F53\u6309 `Ctrl + S` \u65F6\u6216\u5728 vim \u6A21\u5F0F\u4E2D\u4F7F\u7528 `:w` \u65F6\uFF09"},"display-message":{name:"\u683C\u5F0F\u5316\u540E\u663E\u793A\u6D88\u606F",description:"\u683C\u5F0F\u5316\u540E\u663E\u793A\u4FEE\u6539\u4E86\u591A\u5C11\u5B57\u7B26"},"lint-on-file-change":{name:"\u6587\u4EF6\u4FEE\u6539\u65F6\u683C\u5F0F\u5316",description:"\u5F53\u6587\u4EF6\u5173\u95ED\u6216\u662F\u5207\u6362\u5230\u65B0\u6587\u4EF6\u65F6\uFF0C\u683C\u5F0F\u5316\u4E4B\u524D\u7684\u6587\u4EF6"},"display-lint-on-file-change-message":{name:"\u63D0\u9192\u6587\u4EF6\u4FEE\u6539\u65F6\u683C\u5F0F\u5316",description:"\u5F53`\u6587\u4EF6\u4FEE\u6539\u65F6\u683C\u5F0F\u5316`\u89E6\u53D1\u65F6\uFF0C\u5F39\u51FA\u4E00\u6761\u63D0\u793A\u4FE1\u606F"},"folders-to-ignore":{name:"\u5FFD\u7565\u6587\u4EF6\u5939",description:"\u9700\u8981\u5FFD\u7565\u7684\u6587\u4EF6\u5939\uFF08\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\u6216\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u65F6\u751F\u6548\uFF09\uFF0C\u6BCF\u884C\u8F93\u5165\u4E00\u4E2A\u6587\u4EF6\u5939\u8DEF\u5F84"},"override-locale":{name:"\u8986\u76D6\u9ED8\u8BA4\u5730\u533A\u8BED\u8A00",description:"\u4F7F\u7528\u4E0D\u540C\u4E8E\u9ED8\u8BA4\u5730\u533A\u8BED\u8A00\u65F6\u9700\u8981\u8BBE\u7F6E\u6B64\u9879"},"same-as-system-locale":"\u9ED8\u8BA4 ({SYS_LOCALE}) ","yaml-aliases-section-style":{name:"YAML aliases \u6837\u5F0F",description:"YAML aliases \u6837\u5F0F"},"yaml-tags-section-style":{name:"YAML tags \u6837\u5F0F",description:"YAML tags \u6837\u5F0F"},"default-escape-character":{name:"\u9ED8\u8BA4\u8F6C\u4E49\u5B57\u7B26",description:"\u5F53\u5355\u5F15\u53F7\u6216\u53CC\u5F15\u53F7\u4E0D\u5B58\u5728\u65F6\u7528\u4E8E\u8F6C\u4E49 YAML \u503C\u7684\u9ED8\u8BA4\u5B57\u7B26"},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"\u5F53\u4F7F\u7528 YAML \u591A\u884C\u6570\u7EC4\u65F6\u5220\u9664\u4E0D\u5FC5\u8981\u7684\u8F6C\u4E49\u5B57\u7B26",description:"YAML \u591A\u884C\u6570\u7EC4\u7684\u8F6C\u4E49\u5B57\u7B26\u548C YAML \u5355\u884C\u6570\u7EC4\u4E0D\u540C\uFF0C\u56E0\u6B64\u5728\u4F7F\u7528\u591A\u884C\u6570\u7EC4\u65F6\uFF0C\u5220\u9664\u4E0D\u5FC5\u8981\u7684\u8F6C\u4E49\u5B57\u7B26"},"number-of-dollar-signs-to-indicate-math-block":{name:"\u6307\u793A Latex \u5757\u7684 $ \u7B26\u53F7\u6570\u91CF",description:"\u5C06 Latex \u5185\u5BB9\u89C6\u4E3A Latex \u5757\u800C\u4E0D\u662F\u884C\u5185 Latex \u7684 $ \u7B26\u53F7\u7684\u6570\u91CF"}},debug:{"log-level":{name:"\u65E5\u5FD7\u7EA7\u522B",description:"\u5141\u8BB8\u6253\u5370\u7684\u65E5\u5FD7\u7C7B\u578B\uFF0C\u9ED8\u8BA4\u662F ERROR"},"linter-config":{name:"\u683C\u5F0F\u5316\u914D\u7F6E",description:"\u5728\u8BBE\u7F6E\u9875\u9762\u52A0\u8F7D\u65F6\uFF0CLinter \u4E2D data.json \u7684\u5185\u5BB9"},"log-collection":{name:"\u5728\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u548C\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6\u65F6\u6536\u96C6\u65E5\u5FD7",description:"\u5728\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u548C\u683C\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6\u65F6\u6536\u96C6\u65E5\u5FD7\u3002\u8FD9\u4E9B\u65E5\u5FD7\u6709\u52A9\u4E8E\u8C03\u8BD5\u548C\u521B\u5EFA\u9519\u8BEF\u62A5\u544A"},"linter-logs":{name:"Linter \u65E5\u5FD7",description:"\u5982\u679C\u5F00\u542F\uFF0C\u5219\u663E\u793A\u6700\u540E\u4E00\u6B21\u683C\u5F0F\u5316\u65F6\u4FDD\u5B58\u6216\u8005\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6\u65F6\u751F\u6210\u7684\u65E5\u5FD7"}}},options:{"custom-command":{name:"\u81EA\u5B9A\u4E49\u547D\u4EE4",description:"\u81EA\u5B9A\u4E49\u547D\u4EE4\u662F\u5728 Linter \u5B8C\u6210\u683C\u5F0F\u5316\u540E\u8FD0\u884C\u7684 Obsidian \u547D\u4EE4\u3002\u8FD9\u610F\u5473\u7740 Obsidian \u547D\u4EE4\u4F1A\u5728 YAML \u65F6\u95F4\u6233\u4FEE\u6539\u4E4B\u540E\u8FD0\u884C\uFF0C\u56E0\u6B64\u5B83\u4EEC\u53EF\u80FD\u4F1A\u5BFC\u81F4\u5728\u4E0B\u6B21\u8FD0\u884C Linter \u65F6\u89E6\u53D1 YAML \u65F6\u95F4\u6233\u4FEE\u6539\u3002\u4E00\u4E2A Obsidian \u547D\u4EE4\u53EA\u80FD\u9009\u62E9\u4E00\u6B21\u3002**_\u6CE8\u610F\uFF0C\u8FD9\u76EE\u524D\u4EC5\u9002\u7528\u4E8E\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6_**",warning:"\u9009\u62E9\u547D\u4EE4\u65F6\uFF0C\u8BF7\u786E\u4FDD\u4F7F\u7528\u9F20\u6807\u6216\u6309\u56DE\u8F66\u952E\u9009\u62E9\u8BE5\u9009\u9879\uFF0C\u5176\u4ED6\u9009\u62E9\u65B9\u6CD5\u53EF\u80FD\u4E0D\u8D77\u4F5C\u7528\u3002\u53EA\u6709 Obsidian \u547D\u4EE4\u6216\u7A7A\u5B57\u7B26\u4E32\u4F1A\u88AB\u4FDD\u5B58","add-input-button-text":"\u6DFB\u52A0\u65B0\u547D\u4EE4","command-search-placeholder-text":"Obsidian \u547D\u4EE4","move-up-tooltip":"\u4E0A\u79FB","move-down-tooltip":"\u4E0B\u79FB","delete-tooltip":"\u5220\u9664"},"custom-replace":{name:"\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u66FF\u6362",description:"\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u66FF\u6362\u53EF\u5C06\u4EFB\u610F\u7684\u6B63\u5219\u5339\u914D\u5185\u5BB9\u66FF\u6362\u4E3A\u6307\u5B9A\u503C\u3002\u67E5\u627E\u503C\u548C\u66FF\u6362\u503C\u5FC5\u987B\u662F\u6709\u6548\u7684\u6B63\u5219\u8868\u8FBE\u5F0F",warning:"\u5982\u679C\u60A8\u4E0D\u77E5\u9053\u6B63\u5219\u8868\u8FBE\u5F0F\u662F\u4EC0\u4E48\uFF0C\u8BF7\u8C28\u614E\u4F7F\u7528\u3002\u53E6\u5916\uFF0C\u8BF7\u786E\u4FDD\u60A8\u4E0D\u8981\u5728 iOS \u79FB\u52A8\u8BBE\u5907\u4E0A\u4F7F\u7528\u540E\u884C\u65AD\u8A00\uFF0C\u7531\u4E8E\u8BE5\u5E73\u53F0\u4E0D\u652F\u6301\uFF0C\u4F1A\u5BFC\u81F4\u683C\u5F0F\u5316\u5931\u8D25","add-input-button-text":"\u6DFB\u52A0\u65B0\u7684\u6B63\u5219\u66FF\u6362\u89C4\u5219","regex-to-find-placeholder-text":"\u67E5\u627E\u6B63\u5219\u5F0F","flags-placeholder-text":"\u53C2\u6570","regex-to-replace-placeholder-text":"\u66FF\u6362\u6B63\u5219\u5F0F","label-placeholder-text":"\u7B80\u79F0","move-up-tooltip":"\u4E0A\u79FB","move-down-tooltip":"\u4E0B\u79FB","delete-tooltip":"\u5220\u9664"}},rules:{"auto-correct-common-misspellings":{name:"\u81EA\u52A8\u66F4\u6B63\u5E38\u89C1\u7684\u62FC\u5199\u9519\u8BEF",description:"\u901A\u8FC7\u5E38\u89C1\u62FC\u5199\u9519\u8BEF\u5B57\u5178\u81EA\u52A8\u5C06\u9519\u8BEF\u62FC\u5199\u66F4\u6B63\u4E3A\u6B63\u786E\u62FC\u5199\u3002\u6709\u5173\u81EA\u52A8\u66F4\u6B63\u5355\u8BCD\u7684\u5B8C\u6574\u5217\u8868\uFF0C\u8BF7\u53C2\u9605 [auto-correct map](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts)","ignore-words":{name:"\u5FFD\u7565\u5355\u8BCD",description:"\u4EE5\u9017\u53F7\u5206\u9694\u7684\u5C0F\u5199\u5355\u8BCD\u5217\u8868\uFF0C\u5728\u81EA\u52A8\u66F4\u6B63\u65F6\u4F1A\u5FFD\u7565"}},"add-blockquote-indentation-on-paste":{name:"\u6DFB\u52A0\u5F15\u7528\u5757\u7F29\u8FDB",description:"\u7C98\u8D34\u65F6\uFF0C\u5982\u679C\u5149\u6807\u4F4D\u4E8E\u5F15\u7528\u884C\u6216\u6807\u6CE8\u884C\uFF0C\u5219\u5C06\u5F15\u7528\u6DFB\u52A0\u5230\u9664\u7B2C\u4E00\u884C\u4EE5\u5916\u7684\u6240\u6709\u884C"},"blockquote-style":{name:"\u5F15\u7528\u5757\u6837\u5F0F",description:"\u786E\u4FDD\u5F15\u7528\u5757\u6837\u5F0F\u4E00\u81F4",style:{name:"\u6837\u5F0F",description:"\u5F15\u7528\u5757\u6807\u5FD7\u5B57\u7B26\u7684\u6837\u5F0F"}},"capitalize-headings":{name:"\u5927\u5199\u6807\u9898",description:"\u6807\u9898\u4F1A\u5728\u683C\u5F0F\u5316\u540E\u5927\u5199",style:{name:"\u6837\u5F0F",description:"\u5927\u5199\u7684\u65B9\u5F0F"},"ignore-case-words":{name:"\u5FFD\u7565\u5927\u5199\u5355\u8BCD",description:"\u5728\u6837\u5F0F\u8BBE\u4E3A\u6BCF\u8BCD\u9996\u5B57\u6BCD\u5927\u5199\u65F6\uFF0C\u4EC5\u683C\u5F0F\u5316\u5168\u5C0F\u5199\u7684\u5355\u8BCD"},"ignore-words":{name:"\u5FFD\u7565\u5355\u8BCD",description:"\u4E0D\u683C\u5F0F\u5316\u7684\u5355\u8BCD\uFF0C\u4EE5\u9017\u53F7\u5206\u9694"},"lowercase-words":{name:"\u5C0F\u5199\u5355\u8BCD",description:"\u4FDD\u6301\u5C0F\u5199\u7684\u5355\u8BCD\uFF0C\u4EE5\u9017\u53F7\u5206\u9694"}},"compact-yaml":{name:"\u7CBE\u7B80 YAML",description:"\u79FB\u9664 YAML Front-matter \u5F00\u5934\u7ED3\u5C3E\u7684\u7A7A\u884C","inner-new-lines":{name:"\u5185\u90E8\u7A7A\u884C",description:"\u79FB\u9664 YAML Front-matter \u5185\u90E8\u7684\u7A7A\u884C"}},"consecutive-blank-lines":{name:"\u8FDE\u7EED\u7A7A\u884C",description:"\u6700\u591A\u5141\u8BB8\u4E00\u4E2A\u8FDE\u7EED\u7A7A\u884C"},"convert-bullet-list-markers":{name:"\u8F6C\u6362\u65E0\u5E8F\u5217\u8868\u6807\u5FD7",description:"\u5C06\u5176\u4ED6\u683C\u5F0F\u65E0\u5E8F\u5217\u8868\u6807\u5FD7\u8F6C\u6362\u4E3A Markdown \u683C\u5F0F\u65E0\u5E8F\u5217\u8868\u6807\u5FD7"},"convert-spaces-to-tabs":{name:"\u8F6C\u6362\u7A7A\u683C\u4E3A\u5236\u8868\u7B26",description:"\u5C06\u524D\u5BFC\u7A7A\u683C\u8F6C\u6362\u4E3A\u5236\u8868\u7B26",tabsize:{name:"\u5236\u8868\u7B26\u5BBD\u5EA6",description:"\u5236\u8868\u7B26\u5BF9\u5E94\u7684\u7A7A\u683C\u5BBD\u5EA6"}},"emphasis-style":{name:"\u7A81\u51FA\u6837\u5F0F",description:"\u4FDD\u6301\u7A81\u51FA\u6837\u5F0F\u4E00\u81F4\u6027",style:{name:"\u6837\u5F0F",description:"\u7528\u4E8E\u8868\u793A\u7A81\u51FA\u5185\u5BB9\u7684\u6837\u5F0F"}},"empty-line-around-blockquotes":{name:"\u5F15\u7528\u5757\u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDD\u5F15\u7528\u5757\u524D\u540E\u6709\u7A7A\u884C\uFF0C\u9664\u975E\u5B83\u5728\u6587\u6863\u7684\u5F00\u5934\u6216\u7ED3\u5C3E\u3002**\u6CE8\u610F\uFF0C\u8FD9\u91CC\u5D4C\u5957\u5F15\u7528\u5757\u4E5F\u4F1A\u6709\u5BF9\u5E94\u7684\u7A7A\u884C**"},"empty-line-around-code-fences":{name:"\u4EE3\u7801\u5757\u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDD\u4EE3\u7801\u5757\u524D\u540E\u6709\u7A7A\u884C\uFF0C\u9664\u975E\u5B83\u5728\u6587\u6863\u7684\u5F00\u5934\u6216\u7ED3\u5C3E"},"empty-line-around-math-blocks":{name:"Latex \u5757\u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDDLatex \u5757\u524D\u540E\u6709\u7A7A\u884C\u3002\u4F7F\u7528**\u6307\u793A Latex \u5757\u7684 `$` \u7B26\u53F7\u6570\u91CF**\u6765\u786E\u5B9A\u5355\u884C Latex \u662F\u5426\u88AB\u8BA4\u5B9A\u4E3A Latex \u5757"},"empty-line-around-tables":{name:"\u8868\u683C\u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDD\u8868\u683C\u524D\u540E\u6709\u7A7A\u884C\uFF0C\u9664\u975E\u5B83\u5728\u6587\u6863\u7684\u5F00\u5934\u6216\u7ED3\u5C3E"},"escape-yaml-special-characters":{name:"\u8F6C\u4E49 YAML \u7279\u6B8A\u5B57\u7B26",description:`\u8F6C\u4E49 YAML \u4E2D\u7684\u5192\u53F7(: )\uFF0C\u5355\u5F15\u53F7 (') \u548C\u53CC\u5F15\u53F7 (")`,"try-to-escape-single-line-arrays":{name:"\u5C1D\u8BD5\u8F6C\u4E49\u5355\u884C\u6570\u7EC4",description:"\u5C1D\u8BD5\u8F6C\u4E49\u6570\u7EC4\u503C\uFF0C\u5047\u8BBE\u6570\u7EC4\u4EE5`[`\u5F00\u5934\uFF0C`]`\u7ED3\u5C3E\uFF0C\u5E76\u4E14\u7531`,`\u5206\u9694"}},"file-name-heading":{name:"\u6587\u4EF6\u540D\u4F5C\u4E3A\u6807\u9898",description:"\u5982\u679C\u6CA1\u6709 H1 \u6807\u9898\uFF0C\u5219\u63D2\u5165\u6587\u4EF6\u540D\u4F5C\u4E3A H1 \u6807\u9898"},"footnote-after-punctuation":{name:"\u811A\u6CE8\u5728\u6807\u70B9\u7B26\u53F7\u540E",description:"\u786E\u4FDD\u811A\u6CE8\u5F15\u7528\u7F6E\u4E8E\u6807\u70B9\u7B26\u53F7\u4E4B\u540E\uFF0C\u800C\u4E0D\u662F\u4E4B\u524D"},"force-yaml-escape":{name:"\u5F3A\u5236 YAML \u8F6C\u4E49",description:"\u8F6C\u4E49\u6307\u5B9A YAML \u952E\u7684\u503C","force-yaml-escape-keys":{name:"\u8981\u5F3A\u5236\u8F6C\u79FB\u7684 YAML \u952E",description:"\u5982\u679C\u672A\u8F6C\u4E49\uFF0C\u5219\u4F7F\u7528 YAML \u8F6C\u4E49\u5B57\u7B26\u5BF9\u6307\u5B9A YAML \u952E\u8FDB\u884C\u8F6C\u4E49\uFF0C\u6BCF\u4E2A\u952E\u4E00\u884C\u3002 \u4E0D\u8981\u5BF9 YAML \u6570\u7EC4\u4F7F\u7528"}},"format-tags-in-yaml":{name:"\u683C\u5F0F\u5316 YAML \u4E2D\u7684 tags",description:"\u628A YAML Front-matter \u4E2D tag \u7684\u4E95\u53F7\u5220\u9664\uFF0C\u56E0\u4E3A\u4E95\u53F7\u4F1A\u4F7F tag \u65E0\u6548"},"format-yaml-array":{name:"\u683C\u5F0F\u5316 YAML \u6570\u7EC4",description:"\u5141\u8BB8\u5C06\u5E38\u89C4 YAML \u6570\u7EC4\u683C\u5F0F\u5316\u4E3A\u591A\u884C\u6216\u5355\u884C\uFF0C\u5E76\u5141\u8BB8\u90E8\u5206\u6570\u7EC4(`tags`, `aliases`) \u4FDD\u7559 Obsidian \u539F\u6709\u7684 YAML \u683C\u5F0F\u3002\u8BF7\u6CE8\u610F\uFF0C\u5355\u5B57\u7B26\u4E32\u8F6C\u6362\u4E3A\u5355\u884C\uFF0C\u5982\u679C\u5B58\u5728\u591A\u4E2A\u6761\u76EE\uFF0C\u5219\u4F1A\u53D8\u4E3A\u5355\u884C\u6570\u7EC4\u3002\u5BF9\u4E8E\u5355\u5B57\u7B26\u4E32\u8F6C\u6362\u4E3A\u591A\u884C\uFF0C\u60C5\u51B5\u4E5F\u662F\u5982\u6B64\uFF0C\u53EA\u662F\u5B83\u53D8\u6210\u4E86\u591A\u884C\u6570\u7EC4","alias-key":{name:"\u683C\u5F0F\u5316 YAML aliases",description:"\u6253\u5F00 YAML aliases \u90E8\u5206\u7684\u683C\u5F0F\u8BBE\u7F6E\u3002\u4E0D\u5E94\u4E0E\u89C4\u5219`YAML \u6807\u9898\u522B\u540D`\u540C\u65F6\u542F\u7528\uFF0C\u56E0\u4E3A\u5B83\u4EEC\u53EF\u80FD\u4E0D\u4F1A\u5F88\u597D\u5730\u534F\u540C\u5DE5\u4F5C\uFF0C\u6216\u8005\u5B83\u4EEC\u53EF\u80FD\u6709\u4E0D\u540C\u7684\u683C\u5F0F\u6837\u5F0F\u9009\u62E9\uFF0C\u4ECE\u800C\u5BFC\u81F4\u610F\u5916\u7ED3\u679C"},"tag-key":{name:"\u683C\u5F0F\u5316 YAML tags",description:"\u6253\u5F00 YAML tags \u90E8\u5206\u7684\u683C\u5F0F\u8BBE\u7F6E"},"default-array-style":{name:"\u9ED8\u8BA4\u7684 YAML \u6570\u7EC4\u683C\u5F0F",description:"\u9664\u4E86 tags, aliases \u6216\u5C06\u952E\u503C\u5F3A\u5236\u4E3A\u5355\u884C\u6570\u7EC4\u548C\u5C06\u952E\u503C\u5F3A\u5236\u4E3A\u591A\u884C\u6570\u7EC4\u4E4B\u5916\uFF0C\u5176\u4ED6\u4E3A\u5E38\u89C4 YAML \u6570\u7EC4\u7684\u6837\u5F0F"},"default-array-keys":{name:"\u683C\u5F0F\u5316 YAML \u6570\u7EC4",description:"\u5BF9 YAML \u6570\u7EC4\u8FDB\u884C\u683C\u5F0F\u5316"},"force-single-line-array-style":{name:"\u5F3A\u5236\u8F6C\u4E3A\u5355\u884C\u6570\u7EC4",description:"\u5F3A\u5236\u5C06\u6307\u5B9A\u952E\u7684 YAML \u6570\u7EC4\u8F6C\u4E3A\u5355\u884C\u6570\u7EC4\uFF0C\u6309\u884C\u5206\u9694\uFF08\u7559\u7A7A\u4EE5\u7981\u7528\u6B64\u9009\u9879\uFF09"},"force-multi-line-array-style":{name:"\u5F3A\u5236\u8F6C\u4E3A\u591A\u884C\u6570\u7EC4",description:"\u5F3A\u5236\u5C06\u6307\u5B9A\u952E\u7684 YAML \u6570\u7EC4\u8F6C\u4E3A\u591A\u884C\u6570\u7EC4\uFF0C\u6309\u884C\u5206\u9694\uFF08\u7559\u7A7A\u4EE5\u7981\u7528\u6B64\u9009\u9879\uFF09"}},"header-increment":{name:"\u6807\u9898\u7EA7\u522B\u9012\u589E",description:"\u6807\u9898\u4E00\u6B21\u4EC5\u9012\u589E\u4E00\u4E2A\u7EA7\u522B","start-at-h2":{name:"\u4ECE H2 \u6807\u9898\u5F00\u59CB\u9012\u589E",description:"\u4F7F H2 \u6807\u9898\u6210\u4E3A\u6587\u4EF6\u4E2D\u7684\u6700\u5C0F\u6807\u9898\u7EA7\u522B\uFF0C\u5176\u4ED6\u7EA7\u522B\u7684\u6807\u9898\u8FDB\u884C\u76F8\u5E94\u7684\u9012\u63A8"}},"heading-blank-lines":{name:"\u6807\u9898\u7A7A\u884C",description:"\u4FDD\u8BC1\u6240\u6709\u6807\u9898\u524D\u540E\u5747\u6709\u4E00\u4E2A\u7A7A\u884C\uFF08\u9664\u975E\u6807\u9898\u4F4D\u4E8E\u6587\u6863\u5F00\u5934\u6216\u7ED3\u5C3E\u5904\uFF09",bottom:{name:"\u5E95\u90E8",description:"\u5728\u6807\u9898\u540E\u63D2\u5165\u4E00\u4E2A\u7A7A\u884C"},"empty-line-after-yaml":{name:"YAML \u4E0E\u6807\u9898\u4E4B\u95F4\u7684\u7A7A\u884C",description:"\u4FDD\u7559 YAML Front-matter \u548C\u6807\u9898\u4E4B\u95F4\u7684\u7A7A\u884C"}},"headings-start-line":{name:"\u6807\u9898\u5BF9\u9F50\u884C\u9996",description:"\u5C06\u4E0D\u4EE5\u884C\u9996\u5F00\u59CB\u7684\u6807\u9898\u524D\u9762\u7684\u7A7A\u767D\u5220\u9664\uFF0C\u6807\u9898\u80FD\u88AB\u6B63\u786E\u8BC6\u522B"},"insert-yaml-attributes":{name:"\u63D2\u5165 YAML \u5C5E\u6027",description:"\u628A\u6307\u5B9A\u7684 YAML \u952E\u63D2\u5165\u5230 YAML Front-matter \u4E2D\u3002\u6BCF\u4E2A\u952E\u5360\u4E00\u884C","text-to-insert":{name:"\u8981\u63D2\u5165\u7684\u952E",description:"\u8981\u63D2\u5165\u5230 YAML Front-matter \u4E2D\u7684\u952E"}},"line-break-at-document-end":{name:"\u6587\u4EF6\u7ED3\u5C3E\u6362\u884C",description:"\u786E\u4FDD\u6587\u6863\u7ED3\u5C3E\u6709\u4E00\u884C\u7A7A\u884C"},"move-footnotes-to-the-bottom":{name:"\u79FB\u52A8\u811A\u6CE8\u81F3\u5E95\u90E8",description:"\u5C06\u6240\u6709\u811A\u6CE8\u79FB\u52A8\u5230\u6587\u6863\u5E95\u90E8"},"move-math-block-indicators-to-their-own-line":{name:"\u683C\u5F0F\u5316 Latex \u5757\u6807\u5FD7",description:"\u5C06 Latex \u5757\u6807\u5FD7\u79FB\u5230\u65B0\u884C\u3002\u4F7F\u7528**\u6307\u793A Latex \u5757\u7684 `$` \u7B26\u53F7\u6570\u91CF**\u6765\u786E\u5B9A\u5355\u884C Latex \u662F\u5426\u88AB\u8BA4\u5B9A\u4E3A Latex \u5757"},"move-tags-to-yaml":{name:"\u5C06 tags \u79FB\u81F3 YAML",description:"\u5C06\u6587\u6863\u5185\u6240\u6709\u7684 tags \u79FB\u52A8\u5230 YAML Front-matter \u5185","how-to-handle-existing-tags":{name:"\u5982\u4F55\u5904\u7406\u539F\u6709\u7684 tag",description:"\u5BF9\u4E8E\u6587\u6863\u4E2D\u975E\u88AB\u5FFD\u7565\u7684 tag\uFF0C\u79FB\u52A8\u5230 YAML Front-matter \u540E\u5E94\u8BE5\u91C7\u53D6\u4F55\u79CD\u64CD\u4F5C\uFF1F"},"tags-to-ignore":{name:"\u5FFD\u7565\u7684 tag",description:"\u8FD9\u4E9B tags \u4E0D\u4F1A\u88AB\u79FB\u52A8 YAML Front-matter \u4E2D\u3002\u6BCF\u4E2A tag \u6309\u884C\u5206\u9694\uFF0C\u4E0D\u8981\u5305\u542B`#`"}},"no-bare-urls":{name:"\u7981\u6B62\u539F\u59CB URL",description:"\u9664\u975E\u88AB\u53CD\u5F15\u53F7\u3001\u65B9\u62EC\u53F7\u6216\u5355\u5F15\u53F7/\u53CC\u5F15\u53F7\u5305\u56F4\uFF0C\u5426\u5219\u5C06\u539F\u59CB URL \u7528\u5C16\u62EC\u53F7\u5305\u56F4"},"ordered-list-style":{name:"\u6709\u5E8F\u5217\u8868\u6837\u5F0F",description:"\u786E\u4FDD\u6709\u5E8F\u5217\u8868\u9075\u5FAA\u6307\u5B9A\u7684\u6837\u5F0F\u3002\u8BF7\u6CE8\u610F\uFF0C2\u4E2A\u7A7A\u683C\u62161\u4E2A\u5236\u8868\u7B26\u88AB\u89C6\u4E3A\u4E00\u4E2A\u7F29\u8FDB\u7EA7\u522B","number-style":{name:"\u6392\u5E8F\u65B9\u5F0F",description:"\u6709\u5E8F\u5217\u8868\u5E8F\u53F7\u683C\u5F0F\u5316\u65B9\u5F0F"},"list-end-style":{name:"\u6709\u5E8F\u5217\u8868\u6807\u5FD7\u6837\u5F0F",description:"\u6709\u5E8F\u5217\u8868\u6807\u5FD7\u6837\u5F0F"}},"paragraph-blank-lines":{name:"\u6BB5\u843D\u7A7A\u884C",description:"\u6BCF\u4E2A\u6BB5\u843D\u524D\u540E\u4FDD\u8BC1\u6709\u4E14\u4EC5\u6709\u4E00\u884C\u7A7A\u884C"},"prevent-double-checklist-indicator-on-paste":{name:"\u9632\u6B62\u91CD\u590D\u7684 checklist \u6807\u5FD7",description:"\u7C98\u8D34\u65F6\uFF0C\u5982\u679C\u5149\u6807\u6240\u5728\u884C\u6709 checklist \u6807\u5FD7\uFF0C\u5219\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664 checklist \u6807\u5FD7"},"prevent-double-list-item-indicator-on-paste":{name:"\u9632\u6B62\u91CD\u590D\u7684\u5217\u8868\u6807\u5FD7",description:"\u7C98\u8D34\u65F6\uFF0C\u5982\u679C\u5149\u6807\u6240\u5728\u884C\u6709\u5217\u8868\u6807\u5FD7\uFF0C\u5219\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u5217\u8868\u6807\u5FD7"},"proper-ellipsis-on-paste":{name:"\u6B63\u786E\u7684\u7701\u7565\u53F7",description:"\u7C98\u8D34\u65F6\uFF0C\u5373\u4F7F\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u6709\u7A7A\u683C\uFF0C\u4E5F\u7528\u7701\u7565\u53F7\u66FF\u6362\u4E09\u4E2A\u8FDE\u7EED\u7684\u70B9"},"proper-ellipsis":{name:"\u6B63\u786E\u7684\u7701\u7565\u53F7",description:"\u7528\u7701\u7565\u53F7\u66FF\u6362\u4E09\u4E2A\u8FDE\u7EED\u7684\u70B9"},"quote-style":{name:"\u5F15\u53F7\u6837\u5F0F",description:"\u683C\u5F0F\u5316\u6B63\u6587\u5185\u5BB9\u4E2D\u7684\u5F15\u53F7\u6837\u5F0F\u4E3A\u5355\u5F15\u53F7\u6216\u53CC\u5F15\u53F7","single-quote-enabled":{name:"\u542F\u7528\u5355\u5F15\u53F7\u6837\u5F0F",description:"\u6307\u5B9A\u5E94\u4F7F\u7528\u9009\u5B9A\u7684\u5355\u5F15\u53F7\u6837\u5F0F"},"single-quote-style":{name:"\u5355\u5F15\u53F7\u6837\u5F0F",description:"\u8981\u4F7F\u7528\u7684\u5355\u5F15\u53F7\u6837\u5F0F"},"double-quote-enabled":{name:"\u542F\u7528\u53CC\u5F15\u53F7\u6837\u5F0F",description:"\u6307\u5B9A\u5E94\u4F7F\u7528\u9009\u5B9A\u7684\u53CC\u5F15\u53F7\u6837\u5F0F"},"double-quote-style":{name:"\u53CC\u5F15\u53F7\u6837\u5F0F",description:"\u8981\u4F7F\u7528\u7684\u53CC\u5F15\u53F7\u6837\u5F0F"}},"re-index-footnotes":{name:"\u91CD\u65B0\u7D22\u5F15\u811A\u6CE8",description:"\u57FA\u4E8E\u51FA\u73B0\u7684\u987A\u5E8F\u91CD\u65B0\u7D22\u5F15\u811A\u6CE8\u3002**\u6CE8\u610F\uFF0C\u5982\u679C\u4E00\u4E2A\u952E\u5BF9\u5E94\u591A\u4E2A\u811A\u6CE8\uFF0C\u5219\u6B64\u89C4\u5219\u4E0D\u9002\u7528**"},"remove-consecutive-list-markers":{name:"\u79FB\u9664\u91CD\u590D\u7684\u5217\u8868\u6807\u5FD7",description:"\u79FB\u9664\u91CD\u590D\u7684\u5217\u8868\u6807\u5FD7\u3002\u590D\u5236\u7C98\u8D34\u5217\u8868\u9879\u65F6\u5F88\u6709\u7528"},"remove-empty-lines-between-list-markers-and-checklists":{name:"\u79FB\u9664\u5217\u8868\u548C checklist \u9879\u76EE\u4E4B\u95F4\u7684\u7A7A\u884C",description:"\u5217\u8868\u548C checklist \u9879\u76EE\u4E4B\u95F4\u4E0D\u5E94\u6709\u7A7A\u884C"},"remove-empty-list-markers":{name:"\u79FB\u9664\u7A7A\u7684\u5217\u8868\u6807\u5FD7",description:"\u79FB\u9664\u7A7A\u7684\u5217\u8868\u6807\u5FD7\uFF0C\u6BD4\u5982\u5217\u8868\u540E\u6CA1\u5185\u5BB9"},"remove-hyphenated-line-breaks":{name:"\u79FB\u9664\u8FDE\u5B57\u7B26",description:"\u79FB\u9664\u4E2D\u5212\u7EBF\u8FDE\u5B57\u7B26\u3002\u4ECE\u6587\u7AE0\u4E2D\u7C98\u8D34\u65F6\u5F88\u6709\u7528"},"remove-hyphens-on-paste":{name:"\u79FB\u9664\u8FDE\u5B57\u7B26",description:"\u7C98\u8D34\u65F6\uFF0C\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u8FDE\u5B57\u7B26"},"remove-leading-or-trailing-whitespace-on-paste":{name:"\u79FB\u9664\u524D\u5BFC\u6216\u5C3E\u968F\u7A7A\u683C",description:"\u7C98\u8D34\u65F6\uFF0C\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u4EFB\u4F55\u524D\u5BFC\u975E\u5236\u8868\u7B26\u7A7A\u683C\u548C\u6240\u6709\u5C3E\u968F\u7A7A\u683C"},"remove-leftover-footnotes-from-quote-on-paste":{name:"\u79FB\u9664\u591A\u4F59\u811A\u6CE8",description:"\u7C98\u8D34\u65F6\uFF0C\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u591A\u4F59\u811A\u6CE8"},"remove-link-spacing":{name:"\u79FB\u9664\u94FE\u63A5\u7A7A\u683C",description:"\u79FB\u9664\u94FE\u63A5\u6587\u672C\u9996\u5C3E\u7684\u7A7A\u683C"},"remove-multiple-blank-lines-on-paste":{name:"\u79FB\u9664\u91CD\u590D\u7A7A\u884C",description:"\u7C98\u8D34\u65F6\uFF0C\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u5C06\u591A\u4E2A\u7A7A\u884C\u538B\u7F29\u4E3A\u4E00\u4E2A\u7A7A\u884C"},"remove-multiple-spaces":{name:"\u79FB\u9664\u91CD\u590D\u7A7A\u683C",description:"\u79FB\u9664\u4E24\u4E2A\u6216\u66F4\u591A\u8FDE\u7EED\u7684\u7A7A\u683C\uFF0C\u5FFD\u7565\u884C\u9996\u548C\u884C\u5C3E\u7684\u7A7A\u683C"},"remove-space-around-characters":{name:"\u79FB\u9664\u5B57\u7B26\u5468\u56F4\u7684\u7A7A\u683C",description:"\u786E\u4FDD\u67D0\u4E9B\u5B57\u7B26\u5468\u56F4\u6CA1\u6709\u7A7A\u683C\uFF08\u5305\u62EC\u5355\u4E2A\u7A7A\u683C\u6216\u5236\u8868\u7B26\uFF09\u3002**\u6CE8\u610F\uFF0C\u8FD9\u53EF\u80FD\u4F1A\u5728\u67D0\u4E9B\u60C5\u51B5\u4E0B\u5F71\u54CD markdown \u683C\u5F0F**","include-fullwidth-forms":{name:"\u5305\u62EC\u5168\u89D2\u5F62\u5F0F",description:'\u5305\u62EC<a href="https://en.wikipedia.org/wiki/Halfwidth_and_Fullwidth_Forms_(Unicode_block)">\u5168\u89D2\u5F62\u5F0FUnicode\u5757</a>'},"include-cjk-symbols-and-punctuation":{name:"\u5305\u62ECCJK\u7B26\u53F7\u548C\u6807\u70B9",description:'\u5305\u62EC<a href="https://en.wikipedia.org/wiki/CJK_Symbols_and_Punctuation">CJK\u7B26\u53F7\u548C\u6807\u70B9Unicode\u5757</a>'},"include-dashes":{name:"\u5305\u62EC\u7834\u6298\u53F7",description:"\u5305\u62EC en dash (\u2013) \u548C em dash (\u2014)"},"other-symbols":{name:"\u5176\u4ED6\u7B26\u53F7",description:"\u8981\u5305\u62EC\u7684\u5176\u4ED6\u7B26\u53F7"}},"remove-space-before-or-after-characters":{name:"\u79FB\u9664\u5B57\u7B26\u524D\u540E\u7684\u7A7A\u683C",description:"\u79FB\u9664\u6307\u5B9A\u5B57\u7B26\u4E4B\u524D\u548C\u6307\u5B9A\u5B57\u7B26\u4E4B\u540E\u7684\u7A7A\u683C\u3002 **\u6CE8\u610F\uFF0C\u5728\u67D0\u4E9B\u60C5\u51B5\u4E0B\uFF0C\u8FD9\u53EF\u80FD\u4F1A\u5BFC\u81F4 markdown \u683C\u5F0F\u51FA\u73B0\u95EE\u9898**","characters-to-remove-space-before":{name:"\u79FB\u9664\u5B57\u7B26\u524D\u7684\u7A7A\u683C",description:"\u79FB\u9664\u6307\u5B9A\u5B57\u7B26\u524D\u7684\u7A7A\u683C\u3002 **\u6CE8\u610F\uFF0C\u5728\u5B57\u7B26\u5217\u8868\u4E2D\u4F7F\u7528`{`\u6216`}`\u4F1A\u610F\u5916\u5F71\u54CD\u6587\u4EF6\uFF0C\u56E0\u4E3A\u5B83\u5728\u7A0B\u5E8F\u540E\u53F0\u7684\u5FFD\u7565\u8BED\u6CD5\u4E2D\u4F7F\u7528**"},"characters-to-remove-space-after":{name:"\u79FB\u9664\u5B57\u7B26\u540E\u7684\u7A7A\u683C",description:"\u79FB\u9664\u6307\u5B9A\u5B57\u7B26\u540E\u7684\u7A7A\u683C\u3002 **\u6CE8\u610F\uFF0C\u5728\u5B57\u7B26\u5217\u8868\u4E2D\u4F7F\u7528`{`\u6216`}`\u4F1A\u610F\u5916\u5F71\u54CD\u6587\u4EF6\uFF0C\u56E0\u4E3A\u5B83\u5728\u7A0B\u5E8F\u540E\u53F0\u7684\u5FFD\u7565\u8BED\u6CD5\u4E2D\u4F7F\u7528**"}},"remove-trailing-punctuation-in-heading":{name:"\u79FB\u9664\u6807\u9898\u4E2D\u7684\u7ED3\u5C3E\u6807\u70B9\u7B26\u53F7",description:"\u4ECE\u6807\u9898\u7684\u672B\u5C3E\u5220\u9664\u6307\u5B9A\u7684\u6807\u70B9\u7B26\u53F7\uFF0C\u786E\u4FDD\u5FFD\u7565[HTML \u5B57\u7B26\u5B9E\u4F53](https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references)\u672B\u5C3E\u7684\u5206\u53F7","punctuation-to-remove":{name:"\u8981\u5220\u9664\u7684\u7ED3\u5C3E\u6807\u70B9\u7B26\u53F7",description:"\u8981\u4ECE\u6587\u4EF6\u6807\u9898\u7ED3\u5C3E\u4E2D\u5220\u9664\u7684\u6807\u70B9\u7B26\u53F7"}},"remove-yaml-keys":{name:"\u79FB\u9664 YAML \u952E",description:"\u79FB\u9664\u6307\u5B9A\u7684 YAML \u952E","yaml-keys-to-remove":{name:"\u9700\u8981\u79FB\u9664\u7684 YAML \u952E",description:"\u8981\u4ECE YAML Front-matter \u4E2D\u5220\u9664\u7684 YAML \u952E \uFF08\u53EF\u5E26\u6216\u4E0D\u5E26\u5192\u53F7\uFF09"}},"space-after-list-markers":{name:"\u5217\u8868\u6807\u5FD7\u7A7A\u683C",description:"\u5217\u8868\u6807\u5FD7\u548C checkbox \u540E\u5E94\u6709\u4E00\u4E2A\u7A7A\u683C"},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"\u4E2D\u65E5\u97E9\u8BED\u4E0E\u82F1\u8BED\u6216\u6570\u5B57\u4E4B\u95F4\u7684\u7A7A\u683C",description:"\u786E\u4FDD\u4E2D\u6587\u3001\u65E5\u6587\u6216\u97E9\u6587\u548C\u82F1\u6587\u6216\u6570\u5B57\u7531\u5355\u4E2A\u7A7A\u683C\u5206\u9694. [\u53C2\u8003\u94FE\u63A5](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"\u7C97\u4F53\u6837\u5F0F",description:"\u786E\u4FDD\u7C97\u4F53\u6837\u5F0F\u4E00\u81F4",style:{name:"\u6837\u5F0F",description:"\u7528\u4E8E\u8868\u793A\u7C97\u4F53\u7684\u6837\u5F0F"}},"trailing-spaces":{name:"\u672B\u5C3E\u7A7A\u683C",description:"\u79FB\u9664\u6BCF\u884C\u672B\u5C3E\u591A\u4F59\u7684\u7A7A\u683C","twp-space-line-break":{name:"\u4E24\u7A7A\u683C\u6362\u884C",description:'\u5FFD\u7565\u4E24\u4E2A\u7A7A\u683C\u540E\u63A5\u6362\u884C\u7B26\u7684\u60C5\u51B5\uFF08"\u4E24\u7A7A\u683C\u89C4\u5219"\uFF09'}},"two-spaces-between-lines-with-content":{name:"\u5185\u5BB9\u95F4\u9694\u4E24\u4E2A\u7A7A\u683C",description:"\u786E\u4FDD\u5728\u6BB5\u843D\u3001\u5F15\u7528\u548C\u5217\u8868\u9879\u4E2D\uFF0C\u6700\u540E\u4E00\u884C\u5185\u5BB9\u7684\u884C\u672B\u6DFB\u52A0\u4E24\u4E2A\u7A7A\u683C"},"unordered-list-style":{name:"\u65E0\u5E8F\u5217\u8868\u6837\u5F0F",description:"\u786E\u4FDD\u65E0\u5E8F\u5217\u8868\u7B26\u5408\u6307\u5B9A\u7684\u6837\u5F0F","list-style":{name:"\u5217\u8868\u9879\u6837\u5F0F",description:"\u5217\u8868\u9879\u9700\u8981\u6307\u5B9A\u7684\u6837\u5F0F"}},"yaml-key-sort":{name:"YAML \u952E\u6392\u5E8F",description:"\u6839\u636E\u6307\u5B9A\u7684\u987A\u5E8F\u548C\u4F18\u5148\u7EA7\u5BF9 YAML \u952E\u8FDB\u884C\u6392\u5E8F\u3002**\u6CE8\u610F\uFF0C\u4E5F\u8BB8\u4E5F\u4F1A\u5220\u9664\u7A7A\u884C**","yaml-key-priority-sort-order":{name:"YAML \u952E\u4F18\u5148\u7EA7\u6392\u5E8F\u987A\u5E8F",description:"\u5BF9\u952E\u8FDB\u884C\u6392\u5E8F\u7684\u987A\u5E8F\uFF0C\u6BCF\u884C\u4E00\u4E2A\u952E\uFF0C\u6309\u5217\u8868\u4E2D\u7684\u987A\u5E8F\u8FDB\u884C\u6392\u5E8F"},"priority-keys-at-start-of-yaml":{name:"\u6392\u5E8F\u952E\u653E\u5728 YAML \u5F00\u5934",description:"\u6309\u7167 `YAML \u952E\u4F18\u5148\u7EA7\u6392\u5E8F\u987A\u5E8F`\u5C06\u952E\u653E\u4E8E YAML Front-matter \u5F00\u5934"},"yaml-sort-order-for-other-keys":{name:"YAML \u5176\u5B83\u952E\u7684\u6392\u5E8F\u987A\u5E8F",description:"\u5BF9 `YAML \u952E\u4F18\u5148\u7EA7\u6392\u5E8F\u987A\u5E8F`\u4E2D\u672A\u627E\u5230\u7684\u952E\u8FDB\u884C\u6392\u5E8F"}},"yaml-timestamp":{name:"YAML \u65F6\u95F4\u6233",description:"\u5728 YAML Front-matter \u4E2D\u8BB0\u5F55\u4E0A\u6B21\u7F16\u8F91\u6587\u6863\u7684\u65E5\u671F\u3002\u4ECE\u6587\u6863\u5143\u6570\u636E\u4E2D\u83B7\u53D6\u65E5\u671F\u6570\u636E","date-created":{name:"\u521B\u5EFA\u65E5\u671F",description:"\u63D2\u5165\u6587\u4EF6\u7684\u521B\u5EFA\u65E5\u671F"},"date-created-key":{name:"\u521B\u5EFA\u65E5\u671F\u952E\u540D",description:"\u4F7F\u7528\u54EA\u4E2A YAML \u952E\u6765\u8868\u793A\u521B\u5EFA\u65E5\u671F"},"force-retention-of-create-value":{name:"\u5F3A\u5236\u4FDD\u7559\u521B\u5EFA\u65E5\u671F\u503C",description:"\u6CBF\u7528 YAML Front-matter \u4E2D\u5DF2\u6709\u7684\u521B\u5EFA\u65E5\u671F\uFF0C\u5FFD\u7565\u6587\u6863\u5143\u6570\u636E\u3002\u5BF9\u4E8E\u6587\u6863\u5143\u6570\u636E\u66F4\u6539\uFF08\u6BD4\u5982\u590D\u5236\u6587\u4EF6\uFF09\u5BFC\u81F4\u7684\u521B\u5EFA\u65F6\u95F4\u66F4\u6539\u975E\u5E38\u6709\u7528"},"date-modified":{name:"\u4FEE\u6539\u65E5\u671F",description:"\u63D2\u5165\u6587\u4EF6\u7684\u6700\u8FD1\u4E00\u6B21\u7684\u4FEE\u6539\u65E5\u671F"},"date-modified-key":{name:"\u4FEE\u6539\u65E5\u671F\u952E\u540D",description:"\u4F7F\u7528\u54EA\u4E2A YAML \u952E\u6765\u8868\u793A\u4FEE\u6539\u65E5\u671F"},format:{name:"\u683C\u5F0F",description:"Moment.js \u8BED\u6CD5\u683C\u5F0F\uFF08\u8BE6\u60C5\u8BBE\u7F6E\u89C1[Moment format options](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/)"}},"yaml-title-alias":{name:"YAML \u6807\u9898\u522B\u540D",description:"\u5C06\u6587\u6863\u7684\u6807\u9898\u63D2\u5165 YAML Front-matter \u7684 aliases \u90E8\u5206\u3002\u4ECE\u7B2C\u4E00\u4E2A H1 \u6807\u9898\u6216\u6587\u6863\u540D\u4E2D\u83B7\u53D6\u503C","preserve-existing-alias-section-style":{name:"\u4FDD\u7559\u73B0\u6709\u522B\u540D\u90E8\u5206\u6837\u5F0F",description:"\u5982\u679C\u8BBE\u7F6E\uFF0C\u6B64\u9879\u4EC5\u5728\u65B0\u521B\u5EFA\u7684\u522B\u540D\u90E8\u5206\u751F\u6548"},"keep-alias-that-matches-the-filename":{name:"\u786E\u4FDD\u522B\u540D\u4E0E\u6587\u4EF6\u540D\u5339\u914D",description:"\u8FD9\u6837\u7684\u522B\u540D\u901A\u5E38\u662F\u5197\u4F59\u7684"},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"\u4F7F\u7528 YAML \u952E `linter-yaml-title-alias` \u6765\u4FDD\u7559\u6807\u9898\u4FEE\u6539\u8BB0\u5F55",description:"\u5982\u679C\u8BBE\u7F6E\uFF0C\u5F53\u7B2C\u4E00\u4E2A H1 \u6807\u9898\u66F4\u6539\u6216\u6587\u6863\u540D\u66F4\u6539\u65F6\uFF0C\u6B64\u952E\u4E2D\u5B58\u50A8\u7684\u65E7 aliases \u5C06\u66FF\u6362\u4E3A\u65B0\u503C\uFF0C\u800C\u4E0D\u4EC5\u4EC5\u662F\u5728 aliases \u4E2D\u63D2\u5165\u65B0\u6761\u76EE"}},"yaml-title":{name:"YAML \u6807\u9898",description:"\u5C06\u6587\u4EF6\u7684\u6807\u9898\u63D2\u5165\u5230 YAML Front-matter \u4E2D\u3002 \u6839\u636E\u6240\u9009\u6A21\u5F0F\u83B7\u53D6\u6807\u9898","title-key":{name:"\u6807\u9898\u952E",description:"\u6807\u9898\u4F7F\u7528\u54EA\u4E00\u4E2A YAML \u952E"},mode:{name:"\u6A21\u5F0F",description:"\u7528\u4E8E\u83B7\u53D6\u6807\u9898\u7684\u65B9\u6CD5"}}},enums:{"Title Case":"\u6BCF\u8BCD\u9996\u5B57\u6BCD\u5927\u5199","ALL CAPS":"\u5168\u90E8\u5927\u5199","First letter":"\u4EC5\u9996\u5B57\u6BCD\u5927\u5199",".":".",")":")",ERROR:"ERROR",TRACE:"TRACE",DEBUG:"DEBUG",INFO:"INFO",WARN:"WARN",SILENT:"SILENT",ascending:"\u5347\u5E8F",lazy:"\u5168\u4E3A1",Nothing:"\u65E0","Remove hashtag":"\u79FB\u9664hashtag","Remove whole tag":"\u79FB\u9664\u6574\u4E2A tag",asterisk:"\u661F\u53F7(*)",underscore:"\u4E0B\u5212\u7EBF(_)",consistent:"\u4FDD\u6301\u4E00\u81F4","-":"-","*":"*","+":"+",space:"\u6709\u7A7A\u683C","no space":"\u65E0\u7A7A\u683C",None:"\u65E0","Ascending Alphabetical":"\u6309\u5B57\u6BCD\u987A\u5E8F\u5347\u5E8F","Descending Alphabetical":"\u6309\u5B57\u6BCD\u987A\u5E8F\u964D\u5E8F","multi-line":"\u591A\u884C\u6570\u7EC4","single-line":"\u5355\u884C\u6570\u7EC4","single string to single-line":"\u5B57\u7B26\u4E32\u8F6C\u5355\u884C\u6570\u7EC4","single string to multi-line":"\u5B57\u7B26\u4E32\u8F6C\u591A\u884C\u6570\u7EC4","single string comma delimited":"\u9017\u53F7\u5206\u9694\u5B57\u7B26\u4E32","single string space delimited":"\u7A7A\u683C\u5206\u9694\u5B57\u7B26\u4E32","single-line space delimited":"\u7A7A\u683C\u5206\u9694\u5355\u884C\u6570\u7EC4","first-h1":"\u7B2C\u4E00\u4E2A H1 \u6807\u9898","first-h1-or-filename-if-h1-missing":"\u7B2C\u4E00\u4E2A H1 \u6807\u9898\u6216\u6587\u4EF6\u540D\uFF08\u7B2C\u4E00\u4E2A H1 \u6807\u9898\u4E0D\u5B58\u5728\u65F6\uFF09",filename:"\u6587\u4EF6\u540D","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var vd={};var xd={ar:Zc,cz:Jc,da:Xc,de:ed,en:zo,es:id,fr:td,hi:nd,id:rd,it:ad,ja:sd,ko:od,nl:ld,no:cd,pl:dd,"pt-BR":pd,pt:ud,ro:md,ru:gd,sq:hd,tr:fd,uk:yd,"zh-TW":vd,zh:bd},za="en",ka=xd[za];function Sa(e){za=e,ka=xd[za||"en"]}function E(e){return ka||rt(`locale not found for '${za}'`),ka&&Cn(ka,e)||Cn(zo,e)}var Aa=function(e){if(e==null)return Th;if(typeof e=="string")return Ah(e);if(typeof e=="object")return Array.isArray(e)?zh(e):Sh(e);if(typeof e=="function")return Ta(e);throw new Error("Expected function, string, or object as test")};function zh(e){let t=[],i=-1;for(;++i<e.length;)t[i]=Aa(e[i]);return Ta(n);function n(...r){let a=-1;for(;++a<t.length;)if(t[a].call(this,...r))return!0;return!1}}function Sh(e){return Ta(t);function t(i){let n;for(n in e)if(i[n]!==e[n])return!1;return!0}}function Ah(e){return Ta(t);function t(i){return i&&i.type===e}}function Ta(e){return t;function t(i,...n){return Boolean(i&&typeof i=="object"&&"type"in i&&Boolean(e.call(this,i,...n)))}}function Th(){return!0}var So=!0,La=!1,Ao="skip",To=function(e,t,i,n){typeof t=="function"&&typeof i!="function"&&(n=i,i=t,t=null);let r=Aa(t),a=n?-1:1;s(e,void 0,[])();function s(o,l,d){let c=o&&typeof o=="object"?o:{};if(typeof c.type=="string"){let m=typeof c.tagName=="string"?c.tagName:typeof c.name=="string"?c.name:void 0;Object.defineProperty(u,"name",{value:"node ("+(o.type+(m?"<"+m+">":""))+")"})}return u;function u(){let m=[],g,h,x;if((!t||r(o,l,d[d.length-1]||null))&&(m=Lh(i(o,d)),m[0]===La))return m;if(o.children&&m[0]!==Ao)for(h=(n?o.children.length:-1)+a,x=d.concat(o);h>-1&&h<o.children.length;){if(g=s(o.children[h],h,x)(),g[0]===La)return g;h=typeof g[1]=="number"?g[1]:h+a}return m}}};function Lh(e){return Array.isArray(e)?e:typeof e=="number"?[So,e]:[e]}var Ea=function(e,t,i,n){typeof t=="function"&&typeof i!="function"&&(n=i,i=t,t=null),To(e,t,r,n);function r(a,s){let o=s[s.length-1];return i(a,o?o.children.indexOf(a):null,o)}};function st(e,t,i){return e.substring(0,t)+i+e.substring(t)}function pe(e,t,i,n){return e.substring(0,t)+n+e.substring(i)}function wd(e){return e.replace(/\r/g,"")}function kd(e,t){if(t===0)return["",0];let i="",n=t;for(;n>=0;){let r=e.charAt(n);if(r===` -`)break;r.trim()===""||r===">"?i=r+i:i="",n--}return[i,n]}function Lo(e=""){let[t]=kd(e,e.length);return` -`+t.trim()}function zd(e="",t=!1,i=1){let n=Lo(e),r=Ut(n,">");return(t||Eo.test(e))&&i===r?n.substring(0,n.lastIndexOf(">")):n}function Eh(e,t){if(t===0)return e;let i=t,n=t;for(;i>=0;){let r=e.charAt(i);if(r.trim()!=="")break;r===` +`+t.stack),ae.default.error(i),Jn&&Ga(i.substring(i.indexOf("]")+2),ae.default.levels.TRACE)}function hn(e){ae.default.info(`${Ua} ${e}`),Jn&&Ga(e,ae.default.levels.INFO)}function ni(e){ae.default.debug(`${Ua} ${e}`),Jn&&Ga(e,ae.default.levels.DEBUG)}function xt(e){ae.default.warn(`${Ua} ${e}`),Jn&&Ga(e,ae.default.levels.WARN)}function wt(e){ae.default.getLevel()>ae.default.levels.DEBUG||Go.set(e,performance.now())}function Zi(e){if(ae.default.getLevel()>ae.default.levels.DEBUG)return;Go.has(e)||xt(E("logs.timing-key-not-found").replace("{TIMING_KEY}",e));let t=performance.now()-Go.get(e);ni(`${e}: ${t} `+E("logs.milliseconds-abbreviation"))}function Ga(e,t){ae.default.getLevel()<=t&&Va.push(e)}function Od(){Va=[]}function Qo(e){Jn=e}function Qa(e){switch(e){case"INFO":{ae.default.setLevel("info");break}case"TRACE":{ae.default.setLevel("trace");break}case"DEBUG":{ae.default.setLevel("debug");break}case"SILENT":{ae.default.setLevel("silent");break}case"ERROR":{ae.default.setLevel("error");break}case"WARN":{ae.default.setLevel("warn");break}}}function Cd(e){switch(e){case ae.default.levels.INFO:return"INFO";case ae.default.levels.TRACE:return"TRACE";case ae.default.levels.DEBUG:return"DEBUG";case ae.default.levels.SILENT:return"SILENT";case ae.default.levels.ERROR:return"ERROR";case ae.default.levels.WARN:return"WARN"}}var Md={};var qd={};var Id={};var Bd={commands:{"lint-file":{name:"Linten Sie die aktuelle Datei","error-message":"Lint-Datei-Fehler in der Datei"},"lint-file-unless-ignored":{name:"Linten Sie die aktuelle Datei, es sei denn, sie wird ignoriert"},"lint-all-files":{name:"Linten Sie alle Dateien im Vault","error-message":"Beim Linten aller Dateien Fehler in der Datei","success-message":"Alle Dateien gelinted","errors-message-singular":"Beim Linten aller Dateien gab es einen Fehler.","errors-message-plural":"Beim Linten aller Dateien gab es {NUM} Fehler.","start-message":"Dadurch werden alle Ihre Dateien ver\xE4ndert und es k\xF6nnen Fehler entstehen.","submit-button-text":"Linte alle","submit-button-notice-text":"Linte alle Dateien..."},"lint-all-files-in-folder":{name:"Linte alle Dateien im aktuellen Ordner","start-message":"Dadurch werden alle Ihre Dateien in {FOLDER_NAME} bearbeitet, einschlie\xDFlich der Dateien in den Unterordnern, was zu Fehlern f\xFChren kann.","submit-button-text":"Linte alle Dateien in {FOLDER_NAME}","submit-button-notice-text":"Linten aller Dateien in {FOLDER_NAME}...","error-message":"Beim Linten aller Dateien im Ordner gab es Fehler in der Datei","success-message":"Alle {NUM}-Dateien in {FOLDER_NAME} wurden gelinted.","message-singular":"Alle {NUM}-Dateien in {FOLDER_NAME} wurden gelinted und es trat ein Fehler auf.","message-plural":"Alle {FILE_COUNT}-Dateien in {FOLDER_NAME} wurden gelinted und es gab {ERROR_COUNT} Fehler."},"paste-as-plain-text":{name:"Einf\xFCgen als reiner Text und ohne \xC4nderungen"},"lint-file-pop-up-menu-text":{name:"Linte Datei"},"lint-folder-pop-up-menu-text":{name:"Linte Ordner"}},logs:{"plugin-load":"Plugin wird geladen","plugin-unload":"Plugin entladen","folder-lint":"Linting-Ordner ","linter-run":"Laufender Linter","paste-link-warning":"Abgebrochenes Einf\xFCgen des Lints, da der Inhalt der Zwischenablage ein Link ist, wodurch Konflikte mit anderen Plugins vermieden werden, die das Einf\xFCgen \xE4ndern.","see-console":"Weitere Informationen finden Sie in der Konsole.","unknown-error":"Beim Linten ist ein unbekannter Fehler aufgetreten.","moment-locale-not-found":"Beim Versuch, Moment.js locale auf {MOMENT_LOCALE} umzustellen, wurde {CURRENT_LOCALE} angezeigt","file-change-lint-message-start":"Linted","pre-rules":"Regeln vor regul\xE4ren Regeln","post-rules":"Regeln nach regul\xE4ren Regeln","rule-running":"Laufende Regeln","custom-regex":"Benutzerdefinierte Regex-Regeln","running-custom-regex":"Ausf\xFChren von benutzerdefinierten Regex","running-custom-lint-command":"Ausf\xFChren von benutzerdefinierten Lint-Befehlen","custom-lint-duplicate-warning":'Sie k\xF6nnen denselben Befehl ("{COMMAND_NAME}") nicht zweimal als benutzerdefinierte Lint-Regel ausf\xFChren.',"custom-lint-error-message":"Benutzerdefinierter Lint-Befehl","disabled-text":"ist deaktiviert","run-rule-text":"L\xE4uft","timing-key-not-found":"Der Timing-Schl\xFCssel '{TIMING_KEY}' ist in der Timing-Info-Liste nicht vorhanden, daher wurde er ignoriert","milliseconds-abbreviation":"ms","invalid-date-format-error":"Das Format des Erstellungsdatums '{DATE}' konnte nicht analysiert oder bestimmt werden, sodass das Erstellungsdatum in '{FILE_NAME}","invalid-delimiter-error-message":"Trennzeichen darf nur ein einzelnes Zeichen sein","missing-footnote-error-message":"Die Fu\xDFnote '{FOOTNOTE}' hat keinen entsprechenden Fu\xDFnotenverweis vor dem Fu\xDFnoteninhalt und kann nicht verarbeitet werden. Bitte achten Sie darauf, dass alle Fu\xDFnoten vor dem Inhalt der Fu\xDFnote einen entsprechenden Verweis haben.","too-many-footnotes-error-message":"Der Fu\xDFnotenschl\xFCssel '{FOOTNOTE_KEY}' hat mehr als 1 Fu\xDFnote, die darauf verweist. Bitte aktualisieren Sie die Fu\xDFnoten so, dass es nur noch eine Fu\xDFnote pro Fu\xDFnotenschl\xFCssel gibt.","wrapper-yaml-error":"Fehler in der YAML: {ERROR_MESSAGE}","wrapper-unknown-error":"Unbekannter Fehler: {ERROR_MESSAGE}"},"notice-text":{"empty-clipboard":"Es gibt keinen Inhalt in der Zwischenablage.","characters-added":"Zeichen hinzugef\xFCgt","characters-removed":"Zeichen entfernt","copy-to-clipboard-failed":"Kopieren des Textes in die Zwischenablage fehlgeschlagen: "},"all-rules-option":"Alle","linter-title":"Linter","empty-search-results-text":"Keine Einstellungen stimmen mit der Suche \xFCberein","warning-text":"Warnung","file-backup-text":"Stellen Sie sicher, dass Sie Ihre Dateien gesichert haben.",tabs:{names:{general:"Allgemein",custom:"Individuell",yaml:"YAML",heading:"\xDCberschrift",content:"Inhalt",footnote:"Fu\xDFnote",spacing:"Abstand",paste:"Einf\xFCgen",debug:"Debuggen"},"default-search-bar-text":"Alle Einstellungen durchsuchen",general:{"lint-on-save":{name:"Linten beim Speichern",description:"Linten der Datei beim manuellen Speichern (wenn `Strg + S` gedr\xFCckt wird oder wenn `:w` ausgef\xFChrt wird, w\xE4hrend vim-Tastenkombinationen verwendet werden)"},"display-message":{name:"Meldung beim Linten anzeigen",description:"Zeigen Sie die Anzahl der Zeichen an, die sich nach dem Linten ge\xE4ndert haben"},"lint-on-file-change":{name:"Linten bei Datei\xE4nderungen",description:"Wenn eine Datei geschlossen oder zu einer neuen Datei gewechselt wird, wird die vorherige Datei gelinted."},"display-lint-on-file-change-message":{name:"Nachricht beim Linten nach einer Datei\xE4nderung anzeigen",description:"Zeigt eine Meldung an, wenn `Linten bei Datei\xE4nderungen` ausgel\xF6st wurde"},"folders-to-ignore":{name:"Ordner, die ignoriert werden sollen",description:"Ordner, die ignoriert werden sollen, wenn alle Dateien gelinted oder beim Speichern gelinted werden. Geben Sie Ordnerpfade ein, die durch Zeilenumbr\xFCche getrennt sind","folder-search-placeholder-text":"Ordner-Name","add-input-button-text":"Einen anderen zu ignorierenden Ordner hinzuf\xFCgen","delete-tooltip":"L\xF6schen"},"override-locale":{name:"Gebietsschema \xFCberschreiben",description:"Legen Sie diese Option fest, wenn Sie ein anderes Gebietsschema als das Standardgebietsschema verwenden m\xF6chten"},"same-as-system-locale":"Identisch mit System ({SYS_LOCALE})","yaml-aliases-section-style":{name:"YAML-Aliase-Abschnittsstil",description:"Der Stil des YAML-Aliasabschnitts"},"yaml-tags-section-style":{name:"Abschnittsstil f\xFCr YAML-Tags",description:"Der Stil des YAML-Tags-Abschnitts"},"default-escape-character":{name:"Standard-Escape-Zeichen",description:"Das Standardzeichen, das zum Maskieren von YAML-Werten verwendet werden soll, wenn ein einfaches Anf\xFChrungszeichen und kein doppeltes Anf\xFChrungszeichen vorhanden sind."},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"Entfernen Sie unn\xF6tige Escape-Zeichen im mehrzeiligen Array-Format",description:"Escape-Zeichen f\xFCr mehrzeilige YAML-Arrays ben\xF6tigen nicht die gleiche Escape-Funktion wie einzeilige Arrays. Entfernen Sie also im mehrzeiligen Format zus\xE4tzliche Escapezeichen, die nicht erforderlich sind"},"number-of-dollar-signs-to-indicate-math-block":{name:"Anzahl der Dollarzeichen, die den Matheblock anzeigen",description:"Die Anzahl der Dollarzeichen, um den mathematischen Inhalt als mathematischen Block anstelle von Inline-Mathematik zu betrachten"}},debug:{"log-level":{name:"Log-Ebene",description:"Die Arten von Logmeldungen, die vom Dienst protokolliert werden d\xFCrfen. Der Standardwert ist Fehler."},"linter-config":{name:"Linter-Konfiguration",description:"Der Inhalt der data.json f\xFCr den Linter zum Zeitpunkt des Ladens der Einstellungsseite"},"log-collection":{name:"Sammeln Sie Protokolle bei aktiviertem `Linten beim Speichern` und dem Linten der aktuellen Datei",description:"Sammelt die Log-Meldungen, wenn Sie `Linten beim Speichern` aktiviert haben und die aktuelle Datei linten. Diese Protokolle k\xF6nnen beim Debuggen und Erstellen von Fehlerberichten hilfreich sein."},"linter-logs":{name:"Linter-Protokolle",description:"Die Protokolle des letzten `Linten beim Speichern`-Durchlaufes oder dem letzten Linten der aktuellen Datei werden gesammelt, wenn die Option aktiviert ist."}}},options:{"custom-command":{name:"Benutzerdefinierte Befehle",description:"Benutzerdefinierte Befehle sind Obsidian-Befehle, die ausgef\xFChrt werden, nachdem der Linter seine regul\xE4ren Regeln ausgef\xFChrt hat. Dies bedeutet, dass sie nicht ausgef\xFChrt werden, bevor die YAML-Zeitstempellogik ausgef\xFChrt wird, sodass sie dazu f\xFChren k\xF6nnen, dass der YAML-Zeitstempel bei der n\xE4chsten Ausf\xFChrung des Linters ausgel\xF6st wird. Sie k\xF6nnen einen Obsidian-Befehl nur einmal ausw\xE4hlen. **_Beachten Sie, dass dies derzeit nur beim Linten der aktuellen Datei funktioniert._**",warning:"Wenn Sie eine Option ausw\xE4hlen, stellen Sie sicher, dass Sie die Option entweder mit der Maus oder durch Dr\xFCcken der Eingabetaste ausw\xE4hlen. Andere Auswahlmethoden funktionieren m\xF6glicherweise nicht und es werden nur Auswahlen eines tats\xE4chlichen Obsidian-Befehls oder einer leeren Zeichenfolge gespeichert.","add-input-button-text":"Neuen Befehl hinzuf\xFCgen","command-search-placeholder-text":"Obsidian-Befehl","move-up-tooltip":"Aufr\xFCcken","move-down-tooltip":"Bewegen Sie sich nach unten","delete-tooltip":"L\xF6schen"},"custom-replace":{name:"Benutzerdefinierter Regex-Ersatz",description:"Der benutzerdefinierte Regex-Ersatz kann verwendet werden, um alles zu ersetzen, was mit dem Such-Regex mit dem Ersatzwert \xFCbereinstimmt. Bei den Werten replace und find muss es sich um g\xFCltige Regex-Werte handeln.",warning:"Verwenden Sie dies mit Vorsicht, wenn Sie Regex nicht kennen. Stellen Sie au\xDFerdem sicher, dass Sie keine Lookbehinds in Ihrem regul\xE4ren Ausdruck auf iOS-Mobilger\xE4ten verwenden, da dies dazu f\xFChrt, dass Lints fehlschlagen, da dies auf dieser Plattform nicht unterst\xFCtzt wird.","add-input-button-text":"Neuen Regex-Ersatz hinzuf\xFCgen","regex-to-find-placeholder-text":"Regex zu finden","flags-placeholder-text":"Flaggen","regex-to-replace-placeholder-text":"Regex zu ersetzen","label-placeholder-text":"Etikett","move-up-tooltip":"Aufr\xFCcken","move-down-tooltip":"Bewegen Sie sich nach unten","delete-tooltip":"L\xF6schen"}},rules:{"auto-correct-common-misspellings":{name:"H\xE4ufige Rechtschreibfehler automatisch korrigieren",description:"Verwendet ein W\xF6rterbuch mit h\xE4ufigen Rechtschreibfehlern, um sie automatisch in die richtige Schreibweise umzuwandeln. Siehe [Autokorrekturkarte](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts) f\xFCr die vollst\xE4ndige Liste der automatisch korrigierten W\xF6rter.","ignore-words":{name:"Ignorieren Sie W\xF6rter",description:"Eine durch Kommas getrennte Liste von W\xF6rtern in Kleinbuchstaben, die bei der automatischen Korrektur ignoriert werden sollen"}},"add-blockquote-indentation-on-paste":{name:"Blockquote-Einr\xFCckung beim Einf\xFCgen hinzuf\xFCgen",description:"F\xFCgt Blockzitate zu allen au\xDFer der ersten Zeile hinzu, wenn sich der Cursor w\xE4hrend des Einf\xFCgens in einer Blockquote/Callout-Zeile befindet"},"blockquote-style":{name:"Blockquote-Stil",description:"Stellt sicher, dass der Blockquote-Stil konsistent ist.",style:{name:"Stil",description:"Der f\xFCr Blockquote-Indikatoren verwendete Stil"}},"capitalize-headings":{name:"\xDCberschriften gro\xDF schreiben",description:"\xDCberschriften sollten mit Gro\xDF- und Kleinschreibung formatiert werden",style:{name:"Stil",description:"Die Art der zu verwendenden Gro\xDFschreibung"},"ignore-case-words":{name:"Ignore Cased Words",description:"Only apply title case style to words that are all lowercase"},"ignore-words":{name:"Ignorieren Sie Gro\xDF-/Kleinschreibungsw\xF6rter",description:"Eine durch Kommas getrennte Liste von W\xF6rtern, die bei der Gro\xDFschreibung ignoriert werden sollen"},"lowercase-words":{name:"W\xF6rter in Kleinbuchstaben",description:"Eine durch Kommas getrennte Liste von W\xF6rtern, um Kleinbuchstaben zu behalten"}},"compact-yaml":{name:"YAML komprimieren",description:"Entfernt f\xFChrende und nachfolgende Leerzeilen im YAML-Frontmatter.","inner-new-lines":{name:"Innere neue Zeilen",description:"Entfernen Sie neue Zeilen, die sich nicht am Anfang oder am Ende der YAML befinden"}},"consecutive-blank-lines":{name:"aufeinanderfolgende Leerzeilen zusammenfassen",description:"Es sollte h\xF6chstens eine aufeinanderfolgende Leerzeile geben."},"convert-bullet-list-markers":{name:"Konvertiere Aufz\xE4hlungszeichen",description:"Konvertiert g\xE4ngige Symbole f\xFCr Aufz\xE4hlungslisten in Markdown-Listenmarkierungen."},"convert-spaces-to-tabs":{name:"Leerzeichen in Tabulatoren konvertieren",description:"Konvertiert f\xFChrende Leerzeichen in Tabulatoren.",tabsize:{name:"Tabgr\xF6\xDFe",description:"Anzahl der Leerzeichen, die in einen Tabulator umgewandelt werden"}},"emphasis-style":{name:"Hervorhebungsstil",description:"Stellt sicher, dass der Hervorhebungsstil konsistent ist.",style:{name:"Stil",description:"Der Stil, der verwendet wird, um hervorgehobene Inhalte zu kennzeichnen"}},"empty-line-around-blockquotes":{name:"Leere Zeile um Blockquotes",description:"Stellt sicher, dass Blockzitate in einer leeren Zeile stehen, es sei denn, sie beginnen oder beenden ein Dokument. **Beachten Sie, dass eine leere Zeile entweder eine Verschachtelungsebene weniger f\xFCr Blockzitate oder ein Zeilenumbruchzeichen ist.**"},"empty-line-around-code-fences":{name:"Leere Zeile um Code-Bereiche",description:"Stellt sicher, dass Codebereiche mit einer leeren Zeile versehen sind, es sei denn, sie beginnen oder beenden ein Dokument."},"empty-line-around-math-blocks":{name:"Leere Zeile um mathematische Bl\xF6cke",description:"Stellt sicher, dass es eine leere Zeile um mathematische Bl\xF6cke gibt, indem `Anzahl der Dollarzeichen, die einen mathematischen Block anzeigen` verwendet wird, um zu bestimmen, wie viele Dollarzeichen einen mathematischen Block f\xFCr einzeilige Mathematik anzeigen."},"empty-line-around-tables":{name:"Leere Zeile um Tabellen",description:"Stellt sicher, dass es eine leere Zeile um Github-formatierte Tabellen gibt, es sei denn, sie beginnen oder beenden ein Dokument."},"escape-yaml-special-characters":{name:"Escape-YAML-Sonderzeichen",description:`Maskiert Doppelpunkte mit einem Leerzeichen nach ihnen (: ), einfache Anf\xFChrungszeichen (') und doppelte Anf\xFChrungszeichen (") in YAML.`,"try-to-escape-single-line-arrays":{name:"Versucht, Single-Line-Arrays zu vermeiden",description:'Versucht, Arraywerte zu maskieren, wobei davon ausgegangen wird, dass ein Array mit "[" beginnt, mit "]" endet und Elemente enth\xE4lt, die durch "," getrennt sind.'}},"file-name-heading":{name:"\xDCberschrift des Dateinamens",description:"F\xFCgt den Dateinamen als H1-\xDCberschrift ein, wenn keine H1-\xDCberschrift vorhanden ist."},"footnote-after-punctuation":{name:"Fu\xDFnote nach Interpunktion",description:"Stellt sicher, dass Fu\xDFnotenverweise nach der Interpunktion und nicht davor platziert werden."},"force-yaml-escape":{name:"YAML-Escape erzwingen",description:"Maskiert die Werte f\xFCr die angegebenen YAML-Schl\xFCssel.","force-yaml-escape-keys":{name:"Erzwingen Sie die YAML-Escape-Klausel f\xFCr Schl\xFCssel",description:"Verwendet das YAML-Escapezeichen f\xFCr die angegebenen YAML-Schl\xFCssel, die durch ein Zeilenumbruchzeichen getrennt sind, wenn es nicht bereits mit Escapezeichen versehen ist. Nicht auf YAML-Arrays verwenden."}},"format-tags-in-yaml":{name:"Formatieren von Tags in YAML",description:"Entfernen Sie Hashtags aus Tags im YAML-Frontmatter, da sie die Tags dort ung\xFCltig machen."},"format-yaml-array":{name:"Formatieren des YAML-Arrays",description:"Erm\xF6glicht die Formatierung von regul\xE4ren YAML-Arrays als mehrzeilig oder einzeilig und `tags` und `aliases` d\xFCrfen einige Obsidian-spezifische YAML-Formate haben. Beachten Sie, dass eine einzelne Zeichenfolge zu einer einzelnen Zeile von einem einzelnen Zeichenfolgeneintrag zu einem einzeiligen Array wechselt, wenn mehr als 1 Eintrag vorhanden ist. Das Gleiche gilt f\xFCr eine einzelne Zeichenfolge bis zu einer mehrzeiligen Zeichenfolge, mit der Ausnahme, dass sie zu einem mehrzeiligen Array wird.","alias-key":{name:'Abschnitt "YAML-Aliase" formatieren',description:"Aktiviert die Formatierung f\xFCr den Abschnitt YAML-Aliase. Sie sollten diese Option nicht zusammen mit der Regel `YAML-Titel-Alias` aktivieren, da sie m\xF6glicherweise nicht gut zusammenarbeiten oder unterschiedliche Formatstile ausgew\xE4hlt haben, was zu unerwarteten Ergebnissen f\xFChrt."},"tag-key":{name:'Abschnitt "YAML-Tags formatieren"',description:"Aktiviert die Formatierung f\xFCr den Abschnitt YAML-Tags."},"default-array-style":{name:"Standardm\xE4\xDFiger YAML-Array-Abschnittsstil",description:"Der Stil anderer YAML-Arrays, die nicht `tags` oder `aliases` sind oder bei `Erzwingt f\xFCr Schl\xFCsselwerte einzeilige Arrays` und `Erzwingt f\xFCr Schl\xFCsselwerte mehrzeilige Arrays`"},"default-array-keys":{name:"Formatieren von YAML-Array-Abschnitten",description:"Aktiviert die Formatierung f\xFCr regul\xE4re YAML-Arrays"},"force-single-line-array-style":{name:"Erzwingt f\xFCr Schl\xFCsselwerte einzeilige Arrays",description:"Erzwingt, dass das YAML-Array f\xFCr die neuen zeilengetrennten Schl\xFCssel im einzeiligen Format vorliegt (leer lassen, um diese Option zu deaktivieren)"},"force-multi-line-array-style":{name:"Erzwingt f\xFCr Schl\xFCsselwerte mehrzeilige Arrays",description:"Erzwingt, dass das YAML-Array f\xFCr die neuen zeilengetrennten Schl\xFCssel im mehrzeiligen Format vorliegt (leer lassen, um diese Option zu deaktivieren)"}},"header-increment":{name:"Header-Inkrement",description:"\xDCberschriftenebenen sollten jeweils nur um eine Ebene erh\xF6ht werden","start-at-h2":{name:"Start-Header-Inkrement auf \xDCberschriftenebene 2",description:"Legt die \xDCberschriftenebene 2 als minimale \xDCberschriftenebene in einer Datei f\xFCr das Kopfzeileninkrement fest und verschiebt alle \xDCberschriften entsprechend, sodass sie beginnend mit einer \xDCberschrift der Ebene 2 inkrementiert werden."}},"heading-blank-lines":{name:"\xDCberschriften mit Leerzeilen",description:"Alle \xDCberschriften haben sowohl davor als auch danach eine Leerzeile (au\xDFer wenn sich die \xDCberschrift am Anfang oder Ende des Dokuments befindet).",bottom:{name:"Darunter",description:"Einf\xFCgen einer Leerzeile unter \xDCberschriften"},"empty-line-after-yaml":{name:"Leere Zeile zwischen YAML und Header",description:"Behalten Sie die leere Zeile zwischen dem YAML-Frontmatter und dem Header bei"}},"headings-start-line":{name:"\xDCberschriften am Zeilenbeginn",description:"Bei \xDCberschriften, die keine Zeile beginnen, wird der vorangehende Leerraum entfernt, um sicherzustellen, dass sie als \xDCberschriften erkannt werden."},"insert-yaml-attributes":{name:"Einf\xFCgen von YAML-Attributen",description:"F\xFCgt die angegebenen YAML-Attribute in den YAML-Frontmatter ein. Setzen Sie jedes Attribut in eine einzelne Zeile.","text-to-insert":{name:"Text zum Einf\xFCgen",description:"Text, der in den YAML-Frontmatter eingef\xFCgt werden soll"}},"line-break-at-document-end":{name:"Zeilenumbruch am Dokumentende",description:"Stellt sicher, dass am Ende eines Dokuments genau ein Zeilenumbruch steht."},"move-footnotes-to-the-bottom":{name:"Fu\xDFnoten nach unten verschieben",description:"Verschieben Sie alle Fu\xDFnoten an das Ende des Dokuments."},"move-math-block-indicators-to-their-own-line":{name:"Verschieben Sie mathematische Blockindikatoren in eine eigene Zeile",description:"Verschieben Sie alle Anfangs- und Endindikatoren f\xFCr mathematische Bl\xF6cke in ihre eigenen Zeilen, indem Sie `Anzahl der Dollarzeichen, die einen mathematischen Block anzeigen` verwenden, um zu bestimmen, wie viele Dollarzeichen einen mathematischen Block f\xFCr einzeilige Mathematik anzeigen."},"move-tags-to-yaml":{name:"Tags nach YAML verschieben",description:"Verschieben Sie alle Tags in den YAML-Frontmatter des Dokuments.","how-to-handle-existing-tags":{name:"Body-Tag-Operation",description:"Die Aktion, die mit nicht ignorierten Tags im Hauptteil der Datei ausgef\xFChrt werden soll, nachdem sie in den Frontmatter verschoben wurden"},"tags-to-ignore":{name:"ignorierte Tags",description:"Die Tags, die nicht in das Tags-Array verschoben oder aus dem Textinhalt entfernt werden, wenn `Entfernen Sie den Hashtag aus Tags im Inhaltstext` aktiviert ist. Jedes Tag sollte in einer neuen Zeile und ohne das `#`` stehen. **Stellen Sie sicher, dass Sie den Hashtag nicht in den Tag-Namen aufnehmen.**"}},"no-bare-urls":{name:"Keine blo\xDFen URLs",description:"Umschlie\xDFt blo\xDFe URLs mit spitzen Klammern, es sei denn, sie sind in Back-Ticks, eckige Klammern oder einfache oder doppelte Anf\xFChrungszeichen eingeschlossen."},"ordered-list-style":{name:"Geordneter Listenstil",description:"Stellt sicher, dass geordnete Listen dem angegebenen Stil entsprechen. Beachten Sie, dass 2 Leerzeichen oder 1 Tabulator als Einr\xFCckungsebene betrachtet werden.","number-style":{name:"Zahlen-Stil",description:"Der Zahlenstil, der in geordneten Listenindikatoren verwendet wird"},"list-end-style":{name:"Endestil des Indikators f\xFCr eine geordnete Liste",description:"Das Endezeichen eines geordneten Listenkennzeichens"}},"paragraph-blank-lines":{name:"Leere Absatzzeilen",description:"Alle Abs\xE4tze sollten sowohl davor als auch danach genau eine Leerzeile haben."},"prevent-double-checklist-indicator-on-paste":{name:"Verhindern Sie eine doppelte Checklistenanzeige beim Einf\xFCgen",description:"Entfernt die Start-Checklisten-Anzeige aus dem Text, um sie einzuf\xFCgen, wenn die Zeile, auf der sich der Cursor in der Datei befindet, \xFCber eine Checklistenanzeige verf\xFCgt"},"prevent-double-list-item-indicator-on-paste":{name:"Verhindern Sie die Anzeige f\xFCr doppelte Listenelemente beim Einf\xFCgen",description:"Entfernt den Startlistenindikator aus dem Text, der eingef\xFCgt werden soll, wenn die Zeile, auf der sich der Cursor in der Datei befindet, einen Listenindikator hat"},"proper-ellipsis-on-paste":{name:"Richtige Auslassungspunkte auf Paste",description:"Ersetzt drei aufeinanderfolgende Punkte durch Auslassungspunkte, auch wenn sie im Text ein Leerzeichen zum Einf\xFCgen haben"},"proper-ellipsis":{name:"Richtige Auslassungspunkte",description:"Ersetzt drei aufeinanderfolgende Punkte durch Auslassungspunkte."},"quote-style":{name:"Zitatstil",description:"Aktualisiert die Anf\xFChrungszeichen im Textk\xF6rperinhalt, sodass sie auf die angegebenen einfachen und doppelten Anf\xFChrungszeichenstile aktualisiert werden.","single-quote-enabled":{name:"Aktivieren Sie `Stil f\xFCr einfache Anf\xFChrungszeichen`",description:"Gibt an, dass der ausgew\xE4hlte einfache Anf\xFChrungszeichenstil verwendet werden soll."},"single-quote-style":{name:"Stil f\xFCr einfache Anf\xFChrungszeichen",description:"Der Stil der zu verwendenden einfachen Anf\xFChrungszeichen."},"double-quote-enabled":{name:"Aktivieren Sie `Stil f\xFCr doppelte Anf\xFChrungszeichen`",description:"Gibt an, dass der ausgew\xE4hlte doppelte Anf\xFChrungszeichenstil verwendet werden soll."},"double-quote-style":{name:"Stil f\xFCr doppelte Anf\xFChrungszeichen",description:"Der zu verwendende Stil der doppelten Anf\xFChrungszeichen."}},"re-index-footnotes":{name:"Fu\xDFnoten neu indizieren",description:"Indiziert Fu\xDFnotenschl\xFCssel und Fu\xDFnoten basierend auf der Reihenfolge des Auftretens neu (HINWEIS: Diese Regel funktioniert *nicht*, wenn es mehr als eine Fu\xDFnote f\xFCr einen Schl\xFCssel gibt.)"},"remove-consecutive-list-markers":{name:"Entfernen Sie aufeinanderfolgende Listenmarkierungen",description:"Entfernt aufeinanderfolgende Listenmarkierungen. N\xFCtzlich beim Kopieren und Einf\xFCgen von Listenelementen."},"remove-empty-lines-between-list-markers-and-checklists":{name:"Entfernen Sie leere Zeilen zwischen Listenmarkierungen und Checklisten",description:"Es sollten keine leeren Zeilen zwischen Listenmarkierungen und Checklisten stehen."},"remove-empty-list-markers":{name:"Entfernen Sie leere Listenmarkierungen",description:"Entfernt leere Listenmarkierungen, d.h. Listenelemente ohne Inhalt."},"remove-hyphenated-line-breaks":{name:"Entfernen Sie Zeilenumbr\xFCche mit Bindestrich",description:"Entfernt Zeilenumbr\xFCche mit Bindestrich. N\xFCtzlich beim Einf\xFCgen von Text aus Lehrb\xFCchern."},"remove-hyphens-on-paste":{name:"Entfernen Sie Bindestriche auf Paste",description:"Entfernt Bindestriche aus dem Text zum Einf\xFCgen"},"remove-leading-or-trailing-whitespace-on-paste":{name:"Entfernen Sie f\xFChrende oder nachgestellte Leerzeichen beim Einf\xFCgen",description:"Entfernt alle f\xFChrenden Leerzeichen ohne Tabulatoren und alle nachgestellten Leerzeichen, die der Text einf\xFCgen kann"},"remove-leftover-footnotes-from-quote-on-paste":{name:"Entfernen Sie \xFCbrig gebliebene Fu\xDFnoten aus dem Zitat beim Einf\xFCgen",description:"Entfernt alle \xFCbrig gebliebenen Fu\xDFnotenverweise, die der Text einf\xFCgen kann"},"remove-link-spacing":{name:"Linkabstand entfernen",description:"Entfernt den Abstand um den Linktext."},"remove-multiple-blank-lines-on-paste":{name:"Entfernen Sie mehrfache Leerzeilen beim Einf\xFCgen",description:"Verdichtet mehrere Leerzeilen zu einer Leerzeile, damit der Text eingef\xFCgt werden kann"},"remove-multiple-spaces":{name:"Entfernen Sie mehrfache Leerzeichen",description:"Entfernt zwei oder mehr aufeinanderfolgende Leerzeichen. Ignoriert Leerzeichen am Anfang und am Ende der Zeile."},"remove-space-around-characters":{name:"Entfernen Sie den Abstand um die Zeichen",description:"Stellt sicher, dass bestimmte Zeichen nicht von Leerzeichen umgeben sind (entweder einzelne Leerzeichen oder ein Tabulator). Beachten Sie, dass dies in einigen F\xE4llen zu Problemen mit dem Markdown-Format f\xFChren kann.","include-fullwidth-forms":{name:"Einf\xFCgen von Formularen in voller Breite",description:'Einschlie\xDFen <a href="https://de.wikipedia.org/wiki/Unicodeblock_Halbbreite_und_vollbreite_Formen">Unicode-Block "Formulare" in voller Breite</a>'},"include-cjk-symbols-and-punctuation":{name:"CJK-Symbole und Satzzeichen einschlie\xDFen",description:'Einschlie\xDFen <a href="https://de.wikipedia.org/wiki/Unicodeblock_CJK-Symbole_und_-Interpunktion">CJK-Symbole und Satzzeichen Unicode-Block</a>'},"include-dashes":{name:"Bindestriche einschlie\xDFen",description:"F\xFCgen Sie den Gedankenstrich (\u2013) und den Gedankenstrich (\u2014) ein"},"other-symbols":{name:"Andere Symbole",description:"Andere Symbole, die enthalten sind"}},"remove-space-before-or-after-characters":{name:"Entfernen Sie Leerzeichen vor oder nach Zeichen",description:"Entfernt Leerzeichen vor und nach den angegebenen Zeichen. Beachten Sie, dass dies in einigen F\xE4llen zu Problemen mit dem Markdown-Format f\xFChren kann.","characters-to-remove-space-before":{name:"Leerzeichen vor Zeichen entfernen",description:"Entfernt Leerzeichen vor den angegebenen Zeichen. **Hinweis: Die Verwendung von `{` oder `}` in der Zeichenliste wirkt sich unerwartet auf Dateien aus, da es in der Ignoriersyntax hinter den Kulissen verwendet wird.**"},"characters-to-remove-space-after":{name:"Leerzeichen nach Zeichen entfernen",description:"Entfernt Leerzeichen vor den angegebenen Zeichen. **Hinweis: Die Verwendung von `{` oder `}` in der Zeichenliste wirkt sich unerwartet auf Dateien aus, da es in der Ignoriersyntax hinter den Kulissen verwendet wird.**"}},"remove-trailing-punctuation-in-heading":{name:"Entfernen Sie nachgestellte Satzzeichen in der \xDCberschrift",description:"Entfernt die angegebene Interpunktion am Ende von \xDCberschriften, wobei darauf zu achten ist, dass das Semikolon am Ende von [HTML-Entit\xE4tsreferenzen](https://de.wikipedia.org/wiki/Typografische_Zeichen_in_XML_und_HTML) ignoriert wird.","punctuation-to-remove":{name:"Nachfolgende Interpunktion",description:"Das nachfolgende Satzzeichen, das aus den \xDCberschriften in der Datei entfernt werden soll."}},"remove-yaml-keys":{name:"Entfernen von YAML-Schl\xFCsseln",description:"Entfernt die angegebenen YAML-Schl\xFCssel","yaml-keys-to-remove":{name:"Zu entfernende YAML-Schl\xFCssel",description:"Die zu entfernenden YAML-Schl\xFCssel aus dem YAML-Frontmatter mit oder ohne Doppelpunkt"}},"space-after-list-markers":{name:"Leerzeichen nach Listenmarkierungen",description:"Es sollte ein einzelnes Leerzeichen nach Listenmarkierungen und Kontrollk\xE4stchen geben."},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"Leerzeichen zwischen Chinesisch, Japanisch oder Koreanisch und Englisch oder Zahlen",description:"Stellt sicher, dass Chinesisch, Japanisch oder Koreanisch und Englisch oder Zahlen durch ein einziges Leerzeichen getrennt werden. Folgt diesen [Richtlinien](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"Starker Stil",description:"Stellt sicher, dass der starke Stil konsistent ist.",style:{name:"Stil",description:"Der Stil, der verwendet wird, um starke/fettgedruckte Inhalte zu kennzeichnen"}},"trailing-spaces":{name:"Nachgestellte Leerzeichen",description:"Entfernt zus\xE4tzliche Leerzeichen nach jeder Zeile.","twp-space-line-break":{name:"Zwei Leerzeichen Zeilenumbruch",description:'Ignorieren Sie zwei Leerzeichen, gefolgt von einem Zeilenumbruch ("Zwei-Leerzeichen-Regel").'}},"two-spaces-between-lines-with-content":{name:"Zwei Leerzeichen zwischen Zeilen mit Inhalt",description:"Stellt sicher, dass zwei Leerzeichen an den Zeilenenden hinzugef\xFCgt werden, wobei der Inhalt in der n\xE4chsten Zeile f\xFCr Abs\xE4tze, Blockzitate und Listenelemente fortgesetzt wird"},"unordered-list-style":{name:"Ungeordneter Listenstil",description:"Stellt sicher, dass ungeordnete Listen dem angegebenen Stil folgen.","list-style":{name:"Stil des Listenelements",description:"Das Listenelementformat, das in ungeordneten Listen verwendet werden soll"}},"yaml-key-sort":{name:"Sortierung von YAML-Schl\xFCsseln",description:"Sortiert die YAML-Schl\xFCssel basierend auf der angegebenen Reihenfolge und Priorit\xE4t. Hinweis: Kann auch Leerzeilen entfernen.","yaml-key-priority-sort-order":{name:"Priorit\xE4tssortierreihenfolge der YAML-Schl\xFCssel",description:"Die Reihenfolge, in der die Schl\xFCssel sortiert werden sollen, wobei in jeder Zeile ein Schl\xFCssel in der Reihenfolge der Liste sortiert wird"},"priority-keys-at-start-of-yaml":{name:"Priorit\xE4tsschl\xFCssel am Anfang von YAML",description:"Die priorisierte Sortierreihenfolge der YAML-Schl\xFCssel wird am Anfang des YAML-Frontmatters platziert"},"yaml-sort-order-for-other-keys":{name:"YAML-Sortierreihenfolge f\xFCr andere Schl\xFCssel",description:"Die Art und Weise, wie die Schl\xFCssel sortiert werden, die nicht im Textbereich der priorisierten Sortierreihenfolge von YAML-Keys vorhanden sind"}},"yaml-timestamp":{name:"YAML-Zeitstempel",description:"Verfolgen Sie das Datum, an dem die Datei zuletzt bearbeitet wurde, im YAML-Frontmatter. Ruft Datumsangaben aus Dateimetadaten ab.","date-created":{name:"Erstellungsdatum",description:"Geben Sie das Datum ein, an dem die Datei erstellt wurde"},"date-created-key":{name:"Schl\xFCssel f\xFCr das Erstellungsdatum",description:"Der YAML-Schl\xFCssel, der f\xFCr das Erstellungsdatum verwendet werden soll"},"force-retention-of-create-value":{name:"Erzwinge die Beibehaltung des Schl\xFCsselwertes f\xFCr das Erstellungsdatum",description:"Verwendet den Wert im YAML-Frontmatter f\xFCr das Erstellungsdatum anstelle den Dateimetadaten, was n\xFCtzlich ist, um zu verhindern, dass \xC4nderungen an Dateimetadaten dazu f\xFChren, dass der Wert in einen anderen Wert ge\xE4ndert wird."},"date-modified":{name:"\xC4nderungsdatum",description:"Geben Sie das Datum ein, an dem die Datei zuletzt ge\xE4ndert wurde"},"date-modified-key":{name:"Schl\xFCssel f\xFCr das \xC4nderungsdatum",description:"Der YAML-Schl\xFCssel, der f\xFCr das \xC4nderungsdatum verwendet werden soll"},format:{name:"Format",description:"Zu verwendendes Datumsformat f\xFCr Moment.js (siehe [Momentformatoptionen](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))"}},"yaml-title-alias":{name:"YAML-Titel-Alias",description:"F\xFCgt den Titel der Datei in den Aliasabschnitt des YAML-Frontmatters ein. Ruft den Titel aus dem ersten H1- oder Dateinamen ab.","preserve-existing-alias-section-style":{name:"Vorhandenes Alias-Abschnittsformat beibehalten",description:"Wenn diese Option festgelegt ist, gilt die Einstellung `YAML-Aliase-Abschnittsstil` nur f\xFCr die neu erstellten Abschnitte"},"keep-alias-that-matches-the-filename":{name:"Behalten Sie einen Alias bei, der mit dem Dateinamen \xFCbereinstimmt",description:"Solche Aliase sind in der Regel redundant"},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"Verwenden Sie den YAML-Schl\xFCssel `linter-yaml-title-alias`, um bei \xC4nderungen von Dateinamen und \xDCberschriften zu helfen",description:"Wenn sich die erste H1-\xDCberschrift \xE4ndert oder der Dateiname ge\xE4ndert wird, wenn der erste H1 nicht vorhanden ist, wird der alte Alias, der in diesem Schl\xFCssel gespeichert ist, durch den neuen Wert ersetzt, anstatt nur einen neuen Eintrag in das Alias-Array einzuf\xFCgen"}},"yaml-title":{name:"YAML-Titel",description:"F\xFCgt den Titel der Datei in das YAML-Frontmatter ein. Ruft den Titel basierend auf dem ausgew\xE4hlten Modus ab.","title-key":{name:"Titel-Schl\xFCssel",description:"Der YAML-Schl\xFCssel, der f\xFCr den Titel verwendet werden soll"},mode:{name:"Modus",description:"Die zum Abrufen des Titels zu verwendende Methode"}}},enums:{"Title Case":"Titel Gro\xDF- und Kleinschreibung","ALL CAPS":"GROSSBUCHSTABEN","First letter":"Anfangsbuchstabe",".":".",")":")",ERROR:"Fehler",TRACE:"Spur",DEBUG:"Debuggen",INFO:"Info",WARN:"Warnen",SILENT:"Leise",ascending:"aufsteigend",lazy:"lazy",Nothing:"Faul","Remove hashtag":"Hashtag entfernen","Remove whole tag":"Ganzes Tag entfernen",asterisk:"Sternchen",underscore:"unterstreichen",consistent:"folgerichtig","-":"-","*":"*","+":"+",space:"Raum","no space":"kein Platz",None:"Nichts","Ascending Alphabetical":"Aufsteigend Alphabetisch","Descending Alphabetical":"Absteigend Alphabetisch","multi-line":"mehrzeilig","single-line":"einzeilig","single string to single-line":"Single String zu Single-Line","single string to multi-line":"Single String zu Multi-Line","single string comma delimited":"Komma mit Trennzeichen f\xFCr eine Zeichenfolge","single string space delimited":"Einzelzeichenfolgenabstand durch Trennzeichen","single-line space delimited":"einzeiliger Abstand durch Trennzeichen","first-h1":"erste \xDCberschrift der Ebene 1","first-h1-or-filename-if-h1-missing":"Erste \xDCberschrift der Ebene 1 oder Dateiname, wenn die \xDCberschrift der Ebene 1 fehlt",filename:"Dateinamen","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var Zo={commands:{"lint-file":{name:"Lint the current file","error-message":"Lint File Error in File"},"lint-file-unless-ignored":{name:"Lint the current file unless ignored"},"lint-all-files":{name:"Lint all files in the vault","error-message":"Lint All Files Error in File","success-message":"Linted all files","errors-message-singular":"Linted all files and there was 1 error.","errors-message-plural":"Linted all files and there were {NUM} errors.","start-message":"This will edit all of your files and may introduce errors.","submit-button-text":"Lint All","submit-button-notice-text":"Linting all files..."},"lint-all-files-in-folder":{name:"Lint all files in the current folder","start-message":"This will edit all of your files in {FOLDER_NAME} including files in its subfolders which may introduce errors.","submit-button-text":"Lint All Files in {FOLDER_NAME}","submit-button-notice-text":"Linting all files in {FOLDER_NAME}...","error-message":"Lint All Files in Folder Error in File","success-message":"Linted all {NUM} files in {FOLDER_NAME}.","message-singular":"Linted all {NUM} files in {FOLDER_NAME} and there was 1 error.","message-plural":"Linted all {FILE_COUNT} files in {FOLDER_NAME} and there were {ERROR_COUNT} error."},"paste-as-plain-text":{name:"Paste as Plain Text & without Modifications"},"lint-file-pop-up-menu-text":{name:"Lint file"},"lint-folder-pop-up-menu-text":{name:"Lint folder"}},logs:{"plugin-load":"Loading plugin","plugin-unload":"Unloading plugin","folder-lint":"Linting folder ","linter-run":"Running linter","paste-link-warning":"aborted paste lint as the clipboard content is a link and doing so will avoid conflicts with other plugins that modify pasting.","see-console":"See console for more details.","unknown-error":"An unknown error occurred during linting.","moment-locale-not-found":"Trying to switch Moment.js locale to {MOMENT_LOCALE}, got {CURRENT_LOCALE}","file-change-lint-message-start":"Linted","custom-command-callback-warning":"Please only set the custom command callback for integration tests.","pre-rules":"rules before regular rules","post-rules":"rules after regular rules","rule-running":"rules running","custom-regex":"custom regex rules","running-custom-regex":"Running Custom Regex","running-custom-lint-command":"Running Custom Lint Commands","custom-lint-duplicate-warning":'You cannot run the same command ("{COMMAND_NAME}") as a custom lint rule twice.',"custom-lint-error-message":"Custom Lint Command","disabled-text":"is disabled","run-rule-text":"Running","timing-key-not-found":"timing key '{TIMING_KEY}' does not exist in the timing info list, so it was ignored","milliseconds-abbreviation":"ms","invalid-date-format-error":"The format of the created date '{DATE}' could not be parsed or determined so the created date was left alone in '{FILE_NAME}'","invalid-delimiter-error-message":"delimiter is only allowed to be a single character","missing-footnote-error-message":"Footnote '{FOOTNOTE}' has no corresponding footnote reference before the footnote contents and cannot be processed. Please make sure that all footnotes have a corresponding reference before the content of the footnote.","too-many-footnotes-error-message":"Footnote key '{FOOTNOTE_KEY}' has more than 1 footnote referencing it. Please update the footnotes so that there is only one footnote per footnote key.","wrapper-yaml-error":"error in the YAML: {ERROR_MESSAGE}","wrapper-unknown-error":"unknown error: {ERROR_MESSAGE}"},"notice-text":{"empty-clipboard":"There is no clipboard content.","characters-added":"characters added","characters-removed":"characters removed","copy-to-clipboard-failed":"Failed to copy text to clipboard: "},"all-rules-option":"All","linter-title":"Linter","empty-search-results-text":"No settings match search","warning-text":"Warning","file-backup-text":"Make sure you have backed up your files.","custom-command-warning":"Linting multiple files with custom commands enabled is a slow process that requires the ability to open panes in the side panel. It is noticeably slower than running without custom commands enabled. Please proceed with caution.","copy-aria-label":"Copy",tabs:{names:{general:"General",custom:"Custom",yaml:"YAML",heading:"Heading",content:"Content",footnote:"Footnote",spacing:"Spacing",paste:"Paste",debug:"Debug"},"default-search-bar-text":"Search all settings",general:{"lint-on-save":{name:"Lint on save",description:"Lint the file on manual save (when `Ctrl + S` is pressed or when `:w` is executed while using vim keybindings)"},"display-message":{name:"Display message on lint",description:"Display the number of characters changed after linting"},"lint-on-file-change":{name:"Lint on File Change",description:"When the a file is closed or a new file is swapped to, the previous file is linted."},"display-lint-on-file-change-message":{name:"Display Lint on File Change Message",description:"Displays a message when `Lint on File Change` occurs"},"folders-to-ignore":{name:"Folders to ignore",description:"Folders to ignore when linting all files or linting on save.","folder-search-placeholder-text":"Folder name","add-input-button-text":"Add another folder to ignore","delete-tooltip":"Delete"},"override-locale":{name:"Override locale",description:"Set this if you want to use a locale different from the default"},"same-as-system-locale":"Same as system ({SYS_LOCALE})","yaml-aliases-section-style":{name:"YAML aliases section style",description:"The style of the YAML aliases section"},"yaml-tags-section-style":{name:"YAML tags section style",description:"The style of the YAML tags section"},"default-escape-character":{name:"Default Escape Character",description:"The default character to use to escape YAML values when a single quote and double quote are not present."},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"Remove Unnecessary Escape Characters when in Multi-Line Array Format",description:"Escape characters for multi-line YAML arrays don't need the same escaping as single-line arrays, so when in multi-line format remove extra escapes that are not necessary"},"number-of-dollar-signs-to-indicate-math-block":{name:"Number of Dollar Signs to Indicate Math Block",description:"The amount of dollar signs to consider the math content to be a math block instead of inline math"}},debug:{"log-level":{name:"Log Level",description:"The types of logs that will be allowed to be logged by the service. The default is ERROR."},"linter-config":{name:"Linter Config",description:"The contents of the data.json for the Linter as of the setting page loading"},"log-collection":{name:"Collect logs when linting on save and linting the current file",description:"Goes ahead and collects logs when you `Lint on save` and linting the current file. These logs can be helpful for debugging and create bug reports."},"linter-logs":{name:"Linter Logs",description:"The logs from the last `Lint on save` or the last lint current file run if enabled."}}},options:{"custom-command":{name:"Custom Commands",description:"Custom commands are Obsidian commands that get run after the linter is finished running its regular rules. This means that they do not run before the YAML timestamp logic runs, so they can cause YAML timestamp to be triggered on the next run of the linter. You may only select an Obsidian command once. **_Note that this currently only works on linting the current file._**",warning:"When selecting an option, make sure to select the option either by using the mouse or by hitting the enter key. Other selection methods may not work and only selections of an actual Obsidian command or an empty string will be saved.","add-input-button-text":"Add new command","command-search-placeholder-text":"Obsidian command","move-up-tooltip":"Move up","move-down-tooltip":"Move down","delete-tooltip":"Delete"},"custom-replace":{name:"Custom Regex Replacement",description:"Custom regex replacement can be used to replace anything that matches the find regex with the replacement value. The replace and find values will need to be valid regex values.",warning:"Use this with caution if you do not know regex. Also, please make sure that you do not use lookbehinds in your regex on iOS mobile as that will cause linting to fail since that is not supported on that platform.","add-input-button-text":"Add new regex replacement","regex-to-find-placeholder-text":"regex to find","flags-placeholder-text":"flags","regex-to-replace-placeholder-text":"regex to replace","label-placeholder-text":"label","move-up-tooltip":"Move up","move-down-tooltip":"Move down","delete-tooltip":"Delete"}},rules:{"auto-correct-common-misspellings":{name:"Auto-correct Common Misspellings",description:"Uses a dictionary of common misspellings to automatically convert them to their proper spellings. See [auto-correct map](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts) for the full list of auto-corrected words.","ignore-words":{name:"Ignore Words",description:"A comma separated list of lowercased words to ignore when auto-correcting"}},"add-blank-line-after-yaml":{name:"Add Blank Line After YAML",description:"Adds a blank line after the YAML block if it does not end the current file or it is not already followed by at least 1 blank line"},"add-blockquote-indentation-on-paste":{name:"Add Blockquote Indentation on Paste",description:"Adds blockquotes to all but the first line, when the cursor is in a blockquote/callout line during pasting"},"blockquote-style":{name:"Blockquote Style",description:"Makes sure the blockquote style is consistent.",style:{name:"Style",description:"The style used on blockquote indicators"}},"capitalize-headings":{name:"Capitalize Headings",description:"Headings should be formatted with capitalization",style:{name:"Style",description:"The style of capitalization to use"},"ignore-case-words":{name:"Ignore Cased Words",description:"Only apply title case style to words that are all lowercase"},"ignore-words":{name:"Ignore Words",description:"A comma separated list of words to ignore when capitalizing"},"lowercase-words":{name:"Lowercase Words",description:"A comma separated list of words to keep lowercase"}},"compact-yaml":{name:"Compact YAML",description:"Removes leading and trailing blank lines in the YAML front matter.","inner-new-lines":{name:"Inner New Lines",description:"Remove new lines that are not at the start or the end of the YAML"}},"consecutive-blank-lines":{name:"Consecutive blank lines",description:"There should be at most one consecutive blank line."},"convert-bullet-list-markers":{name:"Convert Bullet List Markers",description:"Converts common bullet list marker symbols to markdown list markers."},"convert-spaces-to-tabs":{name:"Convert Spaces to Tabs",description:"Converts leading spaces to tabs.",tabsize:{name:"Tabsize",description:"Number of spaces that will be converted to a tab"}},"dedupe-yaml-array-values":{name:"Dedupe YAML Array Values",description:"Removes duplicate array values in a case sensitive manner.","dedupe-alias-key":{name:"Dedupe YAML aliases section",description:"Turns on removing duplicate aliases."},"dedupe-tag-key":{name:"Dedupe YAML tags section",description:"Turns on removing duplicate tags."},"dedupe-array-keys":{name:"Dedupe YAML array sections",description:"Turns on removing duplicate values for regular YAML arrays"},"ignore-keys":{name:"YAML Keys to Ignore",description:"A list of YAML keys without the ending colon on their own lines that are not meant to have duplicate values removed from them."}},"default-language-for-code-fences":{name:"Default Language For Code Fences",description:"Add a default language to code fences that do not have a language specified.","default-language":{name:"Programming Language",description:"Leave empty to do nothing. Languages tags can be found [here](https://prismjs.com/#supported-languages)."}},"emphasis-style":{name:"Emphasis Style",description:"Makes sure the emphasis style is consistent.",style:{name:"Style",description:"The style used to denote emphasized content"}},"empty-line-around-blockquotes":{name:"Empty Line Around Blockquotes",description:"Ensures that there is an empty line around blockquotes unless they start or end a document. **Note: an empty line is either one less level of nesting for blockquotes or a newline character.**"},"empty-line-around-code-fences":{name:"Empty Line Around Code Fences",description:"Ensures that there is an empty line around code fences unless they start or end a document."},"empty-line-around-math-blocks":{name:"Empty Line Around Math Blocks",description:"Ensures that there is an empty line around math blocks using `Number of Dollar Signs to Indicate a Math Block` to determine how many dollar signs indicates a math block for single-line math."},"empty-line-around-tables":{name:"Empty Line Around Tables",description:"Ensures that there is an empty line around github flavored tables unless they start or end a document."},"escape-yaml-special-characters":{name:"Escape YAML Special Characters",description:`Escapes colons with a space after them (: ), single quotes ('), and double quotes (") in YAML.`,"try-to-escape-single-line-arrays":{name:"Try to Escape Single Line Arrays",description:'Tries to escape array values assuming that an array starts with "[", ends with "]", and has items that are delimited by ",".'}},"file-name-heading":{name:"File Name Heading",description:"Inserts the file name as a H1 heading if no H1 heading exists."},"footnote-after-punctuation":{name:"Footnote after Punctuation",description:"Ensures that footnote references are placed after punctuation, not before."},"force-yaml-escape":{name:"Force YAML Escape",description:"Escapes the values for the specified YAML keys.","force-yaml-escape-keys":{name:"Force YAML Escape on Keys",description:"Uses the YAML escape character on the specified YAML keys separated by a new line character if it is not already escaped. Do not use on YAML arrays."}},"format-tags-in-yaml":{name:"Format Tags in YAML",description:"Remove Hashtags from tags in the YAML frontmatter, as they make the tags there invalid."},"format-yaml-array":{name:"Format YAML Array",description:"Allows for the formatting of regular YAML arrays as either multi-line or single-line and `tags` and `aliases` are allowed to have some Obsidian specific YAML formats. **Note: that single string to single-line goes from a single string entry to a single-line array if more than 1 entry is present. The same is true for single string to multi-line except it becomes a multi-line array.**","alias-key":{name:"Format YAML aliases section",description:"Turns on formatting for the YAML aliases section. You should not enable this option alongside the rule `YAML Title Alias` as they may not work well together or they may have different format styles selected causing unexpected results."},"tag-key":{name:"Format YAML tags section",description:"Turns on formatting for the YAML tags section."},"default-array-style":{name:"Default YAML array section style",description:"The style of other YAML arrays that are not `tags`, `aliases` or in `Force key values to be single-line arrays` and `Force key values to be multi-line arrays`"},"default-array-keys":{name:"Format YAML array sections",description:"Turns on formatting for regular YAML arrays"},"force-single-line-array-style":{name:"Force key values to be single-line arrays",description:"Forces the YAML array for the new line separated keys to be in single-line format (leave empty to disable this option)"},"force-multi-line-array-style":{name:"Force key values to be multi-line arrays",description:"Forces the YAML array for the new line separated keys to be in multi-line format (leave empty to disable this option)"}},"header-increment":{name:"Header Increment",description:"Heading levels should only increment by one level at a time","start-at-h2":{name:"Start Header Increment at Heading Level 2",description:"Makes heading level 2 the minimum heading level in a file for header increment and shifts all headings accordingly so they increment starting with a level 2 heading."}},"heading-blank-lines":{name:"Heading blank lines",description:"All headings have a blank line both before and after (except where the heading is at the beginning or end of the document).",bottom:{name:"Bottom",description:"Insert a blank line after headings"},"empty-line-after-yaml":{name:"Empty Line Between YAML and Header",description:"Keep the empty line between the YAML frontmatter and header"}},"headings-start-line":{name:"Headings Start Line",description:"Headings that do not start a line will have their preceding whitespace removed to make sure they get recognized as headers."},"insert-yaml-attributes":{name:"Insert YAML attributes",description:"Inserts the given YAML attributes into the YAML frontmatter. Put each attribute on a single line.","text-to-insert":{name:"Text to insert",description:"Text to insert into the YAML frontmatter"}},"line-break-at-document-end":{name:"Line Break at Document End",description:"Ensures that there is exactly one line break at the end of a document."},"move-footnotes-to-the-bottom":{name:"Move Footnotes to the bottom",description:"Move all footnotes to the bottom of the document and makes sure they are sorted based on the order they are referenced in the file's body."},"move-math-block-indicators-to-their-own-line":{name:"Move Math Block Indicators to Their Own Line",description:"Move all starting and ending math block indicators to their own lines using `Number of Dollar Signs to Indicate a Math Block` to determine how many dollar signs indicates a math block for single-line math."},"move-tags-to-yaml":{name:"Move Tags to YAML",description:"Move all tags to YAML frontmatter of the document.","how-to-handle-existing-tags":{name:"Body tag operation",description:"What to do with non-ignored tags in the body of the file once they have been moved to the frontmatter"},"tags-to-ignore":{name:"Tags to ignore",description:"The tags that will not be moved to the tags array or removed from the body content if `Remove the hashtag from tags in content body` is enabled. Each tag should be on a new line and without the `#`. **Make sure not to include the hashtag in the tag name.**"}},"no-bare-urls":{name:"No Bare URLs",description:"Encloses bare URLs with angle brackets except when enclosed in back ticks, square braces, or single or double quotes.","no-bare-uris":{name:"No Bare URIs",description:"Attempts to enclose bare URIs with angle brackets except when enclosed in back ticks, square braces, or single or double quotes."}},"ordered-list-style":{name:"Ordered List Style",description:"Makes sure that ordered lists follow the style specified. **Note: that 2 spaces or 1 tab is considered to be an indentation level.**","number-style":{name:"Number Style",description:"The number style used in ordered list indicators"},"list-end-style":{name:"Ordered List Indicator End Style",description:"The ending character of an ordered list indicator"}},"paragraph-blank-lines":{name:"Paragraph blank lines",description:"All paragraphs should have exactly one blank line both before and after."},"prevent-double-checklist-indicator-on-paste":{name:"Prevent Double Checklist Indicator on Paste",description:"Removes starting checklist indicator from the text to paste if the line the cursor is on in the file has a checklist indicator"},"prevent-double-list-item-indicator-on-paste":{name:"Prevent Double List Item Indicator on Paste",description:"Removes starting list indicator from the text to paste if the line the cursor is on in the file has a list indicator"},"proper-ellipsis-on-paste":{name:"Proper Ellipsis on Paste",description:"Replaces three consecutive dots with an ellipsis even if they have a space between them in the text to paste"},"proper-ellipsis":{name:"Proper Ellipsis",description:"Replaces three consecutive dots with an ellipsis."},"quote-style":{name:"Quote Style",description:"Updates the quotes in the body content to be updated to the specified single and double quote styles.","single-quote-enabled":{name:"Enable `Single Quote Style`",description:"Specifies that the selected single quote style should be used."},"single-quote-style":{name:"Single Quote Style",description:"The style of single quotes to use."},"double-quote-enabled":{name:"Enable `Double Quote Style`",description:"Specifies that the selected double quote style should be used."},"double-quote-style":{name:"Double Quote Style",description:"The style of double quotes to use."}},"re-index-footnotes":{name:"Re-Index Footnotes",description:"Re-indexes footnote keys and footnote, based on the order of occurrence. **Note: This rule does _not_ work if there is more than one footnote for a key.**"},"remove-consecutive-list-markers":{name:"Remove Consecutive List Markers",description:"Removes consecutive list markers. Useful when copy-pasting list items."},"remove-empty-lines-between-list-markers-and-checklists":{name:"Remove Empty Lines Between List Markers and Checklists",description:"There should not be any empty lines between list markers and checklists."},"remove-empty-list-markers":{name:"Remove Empty List Markers",description:"Removes empty list markers, i.e. list items without content."},"remove-hyphenated-line-breaks":{name:"Remove Hyphenated Line Breaks",description:"Removes hyphenated line breaks. Useful when pasting text from textbooks."},"remove-hyphens-on-paste":{name:"Remove Hyphens on Paste",description:"Removes hyphens from the text to paste"},"remove-leading-or-trailing-whitespace-on-paste":{name:"Remove Leading or Trailing Whitespace on Paste",description:"Removes any leading non-tab whitespace and all trailing whitespace for the text to paste"},"remove-leftover-footnotes-from-quote-on-paste":{name:"Remove Leftover Footnotes from Quote on Paste",description:"Removes any leftover footnote references for the text to paste"},"remove-link-spacing":{name:"Remove link spacing",description:"Removes spacing around link text."},"remove-multiple-blank-lines-on-paste":{name:"Remove Multiple Blank Lines on Paste",description:"Condenses multiple blank lines down into one blank line for the text to paste"},"remove-multiple-spaces":{name:"Remove Multiple Spaces",description:"Removes two or more consecutive spaces. Ignores spaces at the beginning and ending of the line. "},"remove-space-around-characters":{name:"Remove Space around Characters",description:"Ensures that certain characters are not surrounded by whitespace (either single spaces or a tab). **Note: this may causes issues with markdown format in some cases.**","include-fullwidth-forms":{name:"Include Fullwidth Forms",description:'Include <a href="https://en.wikipedia.org/wiki/Halfwidth_and_Fullwidth_Forms_(Unicode_block)">Fullwidth Forms Unicode block</a>'},"include-cjk-symbols-and-punctuation":{name:"Include CJK Symbols and Punctuation",description:'Include <a href="https://en.wikipedia.org/wiki/CJK_Symbols_and_Punctuation">CJK Symbols and Punctuation Unicode block</a>'},"include-dashes":{name:"Include Dashes",description:"Include en dash (\u2013) and em dash (\u2014)"},"other-symbols":{name:"Other symbols",description:"Other symbols to include"}},"remove-space-before-or-after-characters":{name:"Remove Space Before or After Characters",description:"Removes space before the specified characters and after the specified characters. **Note: this may causes issues with markdown format in some cases.**","characters-to-remove-space-before":{name:"Remove Space Before Characters",description:"Removes space before the specified characters. **Note: using `{` or `}` in the list of characters will unexpectedly affect files as it is used in the ignore syntax behind the scenes.**"},"characters-to-remove-space-after":{name:"Remove Space After Characters",description:"Removes space after the specified characters. **Note: using `{` or `}` in the list of characters will unexpectedly affect files as it is used in the ignore syntax behind the scenes.**"}},"remove-trailing-punctuation-in-heading":{name:"Remove Trailing Punctuation in Heading",description:"Removes the specified punctuation from the end of headings making sure to ignore the semicolon at the end of [HTML entity references](https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references).","punctuation-to-remove":{name:"Trailing Punctuation",description:"The trailing punctuation to remove from the headings in the file."}},"remove-yaml-keys":{name:"Remove YAML Keys",description:"Removes the YAML keys specified","yaml-keys-to-remove":{name:"YAML Keys to Remove",description:"The YAML keys to remove from the YAML frontmatter with or without colons"}},"sort-yaml-array-values":{name:"Sort YAML Array Values",description:"Sorts YAML array values based on the specified sort order.","sort-alias-key":{name:"Sort YAML aliases section",description:"Turns on sorting aliases."},"sort-tag-key":{name:"Sort YAML tags section",description:"Turns on sorting tags."},"sort-array-keys":{name:"Sort YAML array sections",description:"Turns on sorting values for regular YAML arrays"},"ignore-keys":{name:"YAML Keys to Ignore",description:"A list of YAML keys without the ending colon on their own lines that are not meant to have their values sorted."},"sort-order":{name:"Sort Order",description:"The way to sort the YAML array values."}},"space-after-list-markers":{name:"Space after list markers",description:"There should be a single space after list markers and checkboxes."},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"Space between Chinese Japanese or Korean and English or numbers",description:"Ensures that Chinese, Japanese, or Korean and English or numbers are separated by a single space. Follows these [guidelines](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"Strong Style",description:"Makes sure the strong style is consistent.",style:{name:"Style",description:"The style used to denote strong/bolded content"}},"trailing-spaces":{name:"Trailing spaces",description:"Removes extra spaces after every line.","twp-space-line-break":{name:"Two Space Linebreak",description:'Ignore two spaces followed by a line break ("Two Space Rule").'}},"two-spaces-between-lines-with-content":{name:"Two Spaces Between Lines with Content",description:"Makes sure that two spaces are added to the ends of lines with content continued on the next line for paragraphs, blockquotes, and list items"},"unordered-list-style":{name:"Unordered List Style",description:"Makes sure that unordered lists follow the style specified.","list-style":{name:"List item style",description:"The list item style to use in unordered lists"}},"yaml-key-sort":{name:"YAML Key Sort",description:"Sorts the YAML keys based on the order and priority specified. **Note: may remove blank lines as well. Only works on non-nested keys.**","yaml-key-priority-sort-order":{name:"YAML Key Priority Sort Order",description:"The order in which to sort keys with one on each line where it sorts in the order found in the list"},"priority-keys-at-start-of-yaml":{name:"Priority Keys at Start of YAML",description:"YAML Key Priority Sort Order is placed at the start of the YAML frontmatter"},"yaml-sort-order-for-other-keys":{name:"YAML Sort Order for Other Keys",description:"The way in which to sort the keys that are not found in the YAML Key Priority Sort Order text area"}},"yaml-timestamp":{name:"YAML Timestamp",description:"Keep track of the date the file was last edited in the YAML front matter. Gets dates from file metadata.","date-created":{name:"Date Created",description:"Insert the file creation date"},"date-created-key":{name:"Date Created Key",description:"Which YAML key to use for creation date"},"force-retention-of-create-value":{name:"Force Date Created Key Value Retention",description:"Reuses the value in the YAML frontmatter for date created instead of the file metadata which is useful for preventing file metadata changes from causing the value to change to a different value."},"date-modified":{name:"Date Modified",description:"Insert the date the file was last modified"},"date-modified-key":{name:"Date Modified Key",description:"Which YAML key to use for modification date"},format:{name:"Format",description:"Moment date format to use (see [Moment format options](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))"}},"yaml-title-alias":{name:"YAML Title Alias",description:"Inserts the title of the file into the YAML frontmatter's aliases section. Gets the title from the first H1 or filename.","preserve-existing-alias-section-style":{name:"Preserve existing aliases section style",description:"If set, the `YAML aliases section style` setting applies only to the newly created sections"},"keep-alias-that-matches-the-filename":{name:"Keep alias that matches the filename",description:"Such aliases are usually redundant"},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"Use the YAML key `linter-yaml-title-alias` to help with filename and heading changes",description:"If set, when the first H1 heading changes or filename if first H1 is not present changes, then the old alias stored in this key will be replaced with the new value instead of just inserting a new entry in the aliases array"}},"yaml-title":{name:"YAML Title",description:"Inserts the title of the file into the YAML frontmatter. Gets the title based on the selected mode.","title-key":{name:"Title Key",description:"Which YAML key to use for title"},mode:{name:"Mode",description:"The method to use to get the title"}}},enums:{"Title Case":"Title Case","ALL CAPS":"ALL CAPS","First letter":"First letter",".":".",")":")",ERROR:"error",TRACE:"trace",DEBUG:"debug",INFO:"info",WARN:"warn",SILENT:"silent",ascending:"ascending",lazy:"lazy",Nothing:"Nothing","Remove hashtag":"Remove hashtag","Remove whole tag":"Remove whole tag",asterisk:"asterisk",underscore:"underscore",consistent:"consistent","-":"-","*":"*","+":"+",space:"space","no space":"no space",None:"None","Ascending Alphabetical":"Ascending Alphabetical","Descending Alphabetical":"Descending Alphabetical","multi-line":"multi-line","single-line":"single-line","single string to single-line":"single string to single-line","single string to multi-line":"single string to multi-line","single string comma delimited":"single string comma delimited","single string space delimited":"single string space delimited","single-line space delimited":"single-line space delimited","first-h1":"First H1","first-h1-or-filename-if-h1-missing":"First H1 or Filename if H1 is Missing",filename:"Filename","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var _d={commands:{"lint-file":{name:"Analizar este archivo","error-message":"Error Analizando un Archivooccuri\xF3 en el Archivo"},"lint-file-unless-ignored":{name:"Analizar este archivo si no es ignorado"},"lint-all-files":{name:"Analizar todos los archivos en la b\xF3veda","error-message":"Error Analizando Todos los Archivos en Archivo","success-message":"Analiz\xF3 todos los archivos","errors-message-singular":"Analiz\xF3 todos los archivos y un error ocurri\xF3.","errors-message-plural":"Analiz\xF3 todos los archivos y {NUM} errores ocurrieron","start-message":"Esto editar\xE1 todos de sus archivos y es possible que introduzca errores","submit-button-text":"Analizar Todo","submit-button-notice-text":"Analizando todos los archivos..."},"lint-all-files-in-folder":{name:"Analizar todos los archivos en esta carpeta","start-message":"Esto editar\xE1 todos de sus archivos en {FOLDER_NAME} incluyendo los archivos que existen en las subcarpetas y es possible que introduzca errores.","submit-button-text":"Analizar Todos los Archivos en {FOLDER_NAME}","submit-button-notice-text":"Analizando todos los archivos en {FOLDER_NAME}...","error-message":"Error Analizando Todos los Archivos en Carpeta en Archivo","success-message":"Analiz\xF3 los {NUM} archivos en {FOLDER_NAME}.","message-singular":"Analiz\xF3 los {NUM} archivos en {FOLDER_NAME} y un error ocurri\xF3.","message-plural":"Analiz\xF3 los {FILE_COUNT} archivos en {FOLDER_NAME} y {ERROR_COUNT} errores ocurrieron."},"paste-as-plain-text":{name:"Pegar como texto sin formato y sin modificaciones"},"lint-file-pop-up-menu-text":{name:"Analizar el archivo"},"lint-folder-pop-up-menu-text":{name:"Analizar la carpeta"}},logs:{"plugin-load":"Cargando el programa adicional","plugin-unload":"Descargando el programa adicional","folder-lint":"Analizando la carpeta ","linter-run":"Usando linter","paste-link-warning":"abort\xF3 lint de pagar porque el contento del portapapeles es un enlace y no lo hizo para evitar conflictos con otros programas adicionales que modifican lo que hace el pegar.","see-console":"Consulte la consola para obtener m\xE1s detalles.","unknown-error":"Se ha producido un error desconocido durante el linting.","moment-locale-not-found":"Intentando cambiar la zona de Moment.js a {MOMENT_LOCALE}, el resulto fue {CURRENT_LOCALE}","file-change-lint-message-start":"Analiz\xF3","pre-rules":"Las reglas antes de las reglas normales","post-rules":"las reglas despu\xE9s de las reglas normales","rule-running":"usando las reglas","custom-regex":"las reglas regex personalizadas","running-custom-regex":"Usando regex personalizada","running-custom-lint-command":"Usando comandos de lint personalizados","custom-lint-duplicate-warning":'No se puede usar el mismo comando ("{COMMAND_NAME}") dos veces como un comando de lint.',"custom-lint-error-message":"El commando de lint personalizado","disabled-text":"es inhabilitado","run-rule-text":"Usando","timing-key-not-found":"clave de ritmo '{TIMING_KEY}' no ya existe en la lista de claves de ritmo y fue ignorado por eso","milliseconds-abbreviation":"ms","invalid-date-format-error":"No se pudo analizar ni identificar el formato de la fech de creaci\xF3n `{DATE}` entonces la fecha de creaci\xF3n se dej\xF3 sola en `{FILE_NAME}`","invalid-delimiter-error-message":"El delimitador solo puede ser de un solo car\xE1cter","missing-footnote-error-message":"La nota al pie `{FOOTNOTE}` no tiene ninguna referencia de nota al pie correspondiente antes del contenido de la nota al pie y no se puede procesar. Aseg\xFArese de que todas las notas a pie de p\xE1gina tengan una referencia correspondiente antes del contenido de la nota al pie de p\xE1gina.","too-many-footnotes-error-message":"La clave de nota al pie '{FOOTNOTE_KEY}' tiene m\xE1s de 1 nota al pie que hace referencia a ella. Actualice las notas al pie para que solo haya una nota al pie por clave de nota al pie.","wrapper-yaml-error":"hubo un error en el YAML: {ERROR_MESSAGE}","wrapper-unknown-error":"huno un error desconocido: {ERROR_MESSAGE}"},"notice-text":{"empty-clipboard":"No hay contenido del portapapeles.","characters-added":"Caracteres a\xF1adidos","characters-removed":"Caracteres eliminados"},"all-rules-option":"Todo","linter-title":"Linter","empty-search-results-text":"No hay configuraci\xF3n que coincida con la b\xFAsqueda","warning-text":"Advertencia","file-backup-text":"Aseg\xFArese de haber realizado una copia de seguridad de sus archivos.","copy-aria-label":"Copiar",tabs:{names:{general:"General",custom:"Personalizado",yaml:"YAML",heading:"Encabezado",content:"Contenido",footnote:"Notas al pie",spacing:"Espacio en blanco",paste:"Pegar",debug:"Depurar"},"default-search-bar-text":"Buscar en todos los ajustes",general:{"lint-on-save":{name:"Analizar en guardar",description:"Analizar el archivo en el guardado manual (cuando se presiona `Ctrl + S` o cuando se ejecuta `:w` mientras se usan combinaciones de claves de vim)"},"display-message":{name:"Mostrar mensaje en analizar",description:"Mostrar el n\xFAmero de caracteres modificados despu\xE9s de analizar"},"folders-to-ignore":{name:"Carpetas para omitir",description:"Carpetas que se deben omitir al analizar todos los archivos o al guardar en l\xEDnea.","folder-search-placeholder-text":"El nombre de la carpeta","add-input-button-text":"Agregar otra carpeta para ignorar","delete-tooltip":"Borrar"},"lint-on-file-change":{name:"Analizar archivo en cambiar",description:"Cuando se cierra un archivo o se cambia a un nuevo archivo, el archivo anterior se analiza."},"display-lint-on-file-change-message":{name:"Mostrar mensaje en cambiar el archivo",description:"Muestra un mensaje cuando se produce `Analizar archivo en cambiar`"},"override-locale":{name:"Anular configuraci\xF3n regional",description:"Establezca esta opci\xF3n si desea utilizar una configuraci\xF3n regional diferente de la predeterminada"},"same-as-system-locale":"Igual que el sistema ({SYS_LOCALE})","yaml-aliases-section-style":{name:"Estilo de secci\xF3n de alias de YAML",description:"El estilo de la secci\xF3n de alias de YAML"},"yaml-tags-section-style":{name:"Estilo de secci\xF3n de etiquetas de YAML",description:"El estilo de la secci\xF3n de etiquetas de YAML"},"default-escape-character":{name:"Car\xE1cter de escape predeterminado",description:"El car\xE1cter predeterminado que se va a usar para escapar de los valores YAML cuando no hay comillas simples y comillas dobles."},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"Eliminaci\xF3n de caracteres de escape innecesarios cuando est\xE1 en formato de matriz multil\xEDnea",description:"Los caracteres de escape para matrices de YAML multil\xEDnea no necesitan el mismo escape que las matrices de una sola l\xEDnea, por lo que cuando est\xE1n en formato multil\xEDnea, elimine los escapes adicionales que no son necesarios"},"number-of-dollar-signs-to-indicate-math-block":{name:"N\xFAmero de signos de d\xF3lar para indicar el bloque matem\xE1tico",description:"La cantidad de signos de d\xF3lar para considerar el contenido matem\xE1tico como un bloque matem\xE1tico en lugar de matem\xE1ticas en l\xEDnea"}},debug:{"log-level":{name:"Nivel de registro",description:"Los tipos de registros que el servicio permitir\xE1 registrar. El valor predeterminado es error."},"linter-config":{name:"Configuraci\xF3n de Linter",description:"El contenido del archivo data.json para Linter a partir de la carga de la p\xE1gina de configuraci\xF3n"},"log-collection":{name:"Recopilar registros al activar y desactivar el archivo actual",description:"Contin\xFAa y recopila registros cuando `Analizar en guardar` y analizar el archivo actual. Estos registros pueden ser \xFAtiles para depurar y crear informes de errores."},"linter-logs":{name:"Registros de Linter",description:"Los registros del \xFAltimo `Analizar en guardar` o del \xFAltimo archivo actual de analizar se ejecutan si est\xE1n habilitados."}}},options:{"custom-command":{name:"Comandos personalizados",description:"Los comandos personalizados son comandos de Obsidian que se ejecutan despu\xE9s de que Linter termina de ejecutar sus reglas regulares. Esto significa que no se ejecutan antes de que se ejecute la l\xF3gica de marca de tiempo YAML, por lo que pueden hacer que la marca de tiempo de YAML se active en la siguiente ejecuci\xF3n del Linter. Solo puede seleccionar un comando de Obsidian una vez. **_Note que esto actualmente solo funciona para analizar el archivo actual._**",warning:"Al seleccionar una opci\xF3n, aseg\xFArese de seleccionar la opci\xF3n usando el rat\xF3n o presionando la clave Intro. Es posible que otros m\xE9todos de selecci\xF3n no funcionen y solo se guardar\xE1n las selecciones de un comando de Obsidian real o una cadena vac\xEDa.","add-input-button-text":"Agregar nuevo comando","command-search-placeholder-text":"Comando de Obsidian","move-up-tooltip":"Desplazar hacia arriba","move-down-tooltip":"Desplazar hacia abajo","delete-tooltip":"Borrar"},"custom-replace":{name:"Reemplazo regex personalizado",description:"El reemplazo de regex personalizado se puede usar para reemplazar cualquier cosa que coincida con el valor de b\xFAsqueda de regex con el valor de reemplazo. Los valores de reemplazo y b\xFAsqueda deber\xE1n ser valores regex v\xE1lidos.",warning:"Use esto con precauci\xF3n si no conoce regex. Adem\xE1s, aseg\xFArese de no usar lookbehinds en su regex en dispositivos m\xF3viles iOS, ya que eso har\xE1 que falle analizar ya que no es compatible con esa plataforma.","add-input-button-text":"Agregar nuevo reemplazo de regex","regex-to-find-placeholder-text":"Regex para encontrar","flags-placeholder-text":"Marcas","regex-to-replace-placeholder-text":"Regex para reemplazar","label-placeholder-text":"etiqueta","move-up-tooltip":"Desplazar hacia arriba","move-down-tooltip":"Desplazar hacia abajo","delete-tooltip":"Borrar"}},rules:{"auto-correct-common-misspellings":{name:"Correcci\xF3n autom\xE1tica de errores ortogr\xE1ficos comunes",description:"Utiliza un diccionario de errores ortogr\xE1ficos comunes para convertirlos autom\xE1ticamente a su ortograf\xEDa correcta. Consulte [mapa de autocorrecci\xF3n](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts) para obtener la lista completa de palabras corregidas autom\xE1ticamente.","ignore-words":{name:"Ignorar palabras",description:"Una lista separada por comas de palabras en min\xFAsculas para ignorar al corregir autom\xE1ticamente"}},"add-blockquote-indentation-on-paste":{name:"Agregar sangr\xEDa de blockquote en pegar",description:"Agrega blockquotes a todas menos a la primera l\xEDnea, cuando el cursor est\xE1 en una l\xEDnea blockquote/callout durante el pegado"},"blockquote-style":{name:"Estilo de cotizaci\xF3n en bloque",description:"Se asegura de que el estilo de la cita en bloque sea consistente.",style:{name:"Estilo",description:"El estilo utilizado en los indicadores de cotizaci\xF3n en bloque"}},"capitalize-headings":{name:"Poner may\xFAsculas en los encabezados",description:"Los encabezados deben estar formateados con may\xFAsculas",style:{name:"Estilo",description:"El estilo de may\xFAsculas que se va a utilizar"},"ignore-case-words":{name:"Ignorar palabras en may\xFAsculas y min\xFAsculas",description:"Solo aplique el estilo de may\xFAsculas y min\xFAsculas a las palabras que est\xE9n todas en min\xFAsculas"},"ignore-words":{name:"Ignorar palabras",description:"Una lista de palabras separadas por comas para ignorar al poner en may\xFAsculas"},"lowercase-words":{name:"Palabras en min\xFAsculas",description:"Una lista de palabras separadas por comas para mantener min\xFAsculas"}},"compact-yaml":{name:"YAML compacto",description:"Elimina las l\xEDneas en blanco iniciales y finales en la materia frontal de YAML.","inner-new-lines":{name:"Nuevas l\xEDneas internas",description:"Quitar nuevas l\xEDneas que no est\xE9n al principio o al final del YAML"}},"consecutive-blank-lines":{name:"L\xEDneas en blanco consecutivas",description:"Debe haber como m\xE1ximo una l\xEDnea en blanco consecutiva."},"convert-bullet-list-markers":{name:"Convertir marcadores de lista de vi\xF1etas",description:"Convierte s\xEDmbolos de marcador de lista de vi\xF1etas comunes en marcadores de lista de rebajas."},"convert-spaces-to-tabs":{name:"Convertir espacios en pesta\xF1as",description:"Convierte los espacios iniciales en pesta\xF1as.",tabsize:{name:"Tama\xF1o de la pesta\xF1a",description:"N\xFAmero de espacios que se convertir\xE1n en una pesta\xF1a"}},"emphasis-style":{name:"Estilo de \xE9nfasis",description:"Se asegura de que el estilo de \xE9nfasis sea consistente.",style:{name:"Estilo",description:"El estilo utilizado para denotar el contenido enfatizado"}},"empty-line-around-blockquotes":{name:"L\xEDnea vac\xEDa alrededor de blockquotes",description:"Asegura que haya una l\xEDnea vac\xEDa alrededor de blockquotes a menos que inicien o finalicen un documento. **Tenga en cuenta que una l\xEDnea vac\xEDa es un nivel menos de anidamiento para blockquotes o un car\xE1cter de nueva l\xEDnea.**"},"empty-line-around-code-fences":{name:"L\xEDnea vac\xEDa alrededor de las vallas de c\xF3digo",description:"Garantiza que haya una l\xEDnea vac\xEDa alrededor de las vallas de c\xF3digo a menos que inicien o finalicen un documento."},"empty-line-around-math-blocks":{name:"L\xEDnea vac\xEDa alrededor de los bloques matem\xE1ticos",description:"Asegura que haya una l\xEDnea vac\xEDa alrededor de los bloques matem\xE1ticos usando `N\xFAmero de signos de d\xF3lar para indicar un bloque matem\xE1tico` para determinar cu\xE1ntos signos de d\xF3lar indica un bloque matem\xE1tico para matem\xE1ticas de una sola l\xEDnea."},"empty-line-around-tables":{name:"L\xEDnea vac\xEDa alrededor de las tablas",description:"Asegura que haya una l\xEDnea vac\xEDa alrededor de las tablas con sabor a github a menos que inicien o finalicen un documento."},"escape-yaml-special-characters":{name:"Evitar los caracteres especiales de YAML",description:`Escapa dos puntos con un espacio despu\xE9s de ellos (:), comillas simples (') y comillas dobles (") en YAML.`,"try-to-escape-single-line-arrays":{name:"Intente escapar las matrices de una sola l\xEDnea",description:'Intenta escapar de los valores de matriz suponiendo que una matriz comienza con "[", termina con "]" y tiene elementos que est\xE1n delimitados por ",".'}},"file-name-heading":{name:"Encabezado de nombre de archivo",description:"Inserta el nombre de archivo como un encabezado H1 si no existe ning\xFAn encabezado H1."},"footnote-after-punctuation":{name:"Nota al pie despu\xE9s de la puntuaci\xF3n",description:"Asegura que las referencias de notas al pie se coloquen despu\xE9s de la puntuaci\xF3n, no antes."},"force-yaml-escape":{name:"Forzar escape de YAML",description:"Escapa los valores de las claves YAML especificadas.","force-yaml-escape-keys":{name:"Forzar escape de YAML en las claves",description:"Utiliza el car\xE1cter de escape de YAML en las claves de YAML especificadas separadas por un nuevo car\xE1cter de l\xEDnea si a\xFAn no est\xE1 escapado. No lo use en matrices de YAML."}},"format-tags-in-yaml":{name:"Dar formato a las etiquetas de formato en YAML",description:"Elimine los hashtags de las etiquetas en el frontmatter del YAML, ya que hacen que las etiquetas no sean v\xE1lidas."},"format-yaml-array":{name:"Dar formato a las matrices de YAML",description:"Permite el formato de matrices regulares de YAML como multil\xEDnea o de una sola l\xEDnea y las `etiquetas` y `alias` pueden tener algunos formatos espec\xEDficos de YAML de Obsidian. Tenga en cuenta que una sola cadena a una sola l\xEDnea pasa de una sola entrada de cadena a una matriz de una sola l\xEDnea si hay m\xE1s de 1 entrada presente. Lo mismo es cierto para una sola cadena a multil\xEDnea, excepto que se convierte en una matriz multil\xEDnea.","alias-key":{name:"Dar formato a la secci\xF3n de alias de YAML",description:"Activa el formato para la secci\xF3n de alias YAML. No debe habilitar esta opci\xF3n junto con la regla `Alias de t\xEDtulo YAML`, ya que es posible que no funcionen bien juntos o que tengan diferentes estilos de formato seleccionados que causen resultados inesperados."},"tag-key":{name:"Dar formato a la secci\xF3n de etiquetas de YAML",description:"Activa el formato para la secci\xF3n de etiquetas de YAML."},"default-array-style":{name:"Estilo de secci\xF3n de matriz predeterminado de YAML",description:"El estilo de otras matrices de YAML que no son `etiquetas`, `alias` o en `Forzar valores de clave para que sean matrices de una sola l\xEDnea` y `Forzar valores de clave para que sean matrices multil\xEDnea`"},"default-array-keys":{name:"Dar formato a las secciones de matrices de YAML",description:"Activa el formato para matrices normales de YAML"},"force-single-line-array-style":{name:"Forzar que los valores de clave sean matrices de una sola l\xEDnea",description:"Fuerza la matriz de YAML para que las nuevas claves separadas por l\xEDnea est\xE9n en formato de una sola l\xEDnea (deje vac\xEDo para deshabilitar esta opci\xF3n)"},"force-multi-line-array-style":{name:"Forzar que los valores de las claves sean matrices multil\xEDneas",description:"Fuerza la matriz de YAML para que las nuevas claves separadas por l\xEDnea est\xE9n en formato multil\xEDnea (deje vac\xEDa para deshabilitar esta opci\xF3n)"}},"header-increment":{name:"Incremento de encabezado",description:"Los niveles de encabezado solo deben aumentar en un nivel a la vez","start-at-h2":{name:"Iniciar el incremento de encabezado en el nivel de encabezado 2",description:"Hace que el nivel de encabezado 2 sea el nivel de t\xEDtulo m\xEDnimo en un archivo para el incremento de encabezado y desplaza todos los encabezados en consecuencia para que se incrementen a partir de un encabezado de nivel 2."}},"heading-blank-lines":{name:"L\xEDneas en blanco de encabezado",description:"Todos los encabezados tienen una l\xEDnea en blanco antes y despu\xE9s (excepto cuando el encabezado est\xE1 al principio o al final del documento).",bottom:{name:"Abajo",description:"Insertar una l\xEDnea en blanco despu\xE9s de los encabezados"},"empty-line-after-yaml":{name:"L\xEDnea vac\xEDa entre el YAML y el encabezado",description:"Mantenga la l\xEDnea vac\xEDa entre el frontmatter del YAML y el encabezado"}},"headings-start-line":{name:"Comenzar los encabezados al principio de la l\xEDnea",description:"Los encabezados que no inician una l\xEDnea tendr\xE1n su espacio en blanco anterior eliminado para asegurarse de que se reconozcan como encabezados."},"insert-yaml-attributes":{name:"Insertar atributos de YAML",description:"Inserta los atributos especificados de YAML en el frontmatter del YAML. Coloque cada atributo en una sola l\xEDnea.","text-to-insert":{name:"Texto a insertar",description:"Texto para insertar en el frontmatter del YAML"}},"line-break-at-document-end":{name:"Salto de l\xEDnea al final del documento",description:"Asegura que haya exactamente un salto de l\xEDnea al final de un documento."},"move-footnotes-to-the-bottom":{name:"Mover las notas al pie a la parte inferior",description:"Mueva todas las notas al pie de p\xE1gina a la parte inferior del documento."},"move-math-block-indicators-to-their-own-line":{name:"Mover los indicadores de bloques matem\xE1ticos a su propia l\xEDnea",description:"Mueva todos los indicadores de bloques matem\xE1ticos iniciales y finales a sus propias l\xEDneas usando `N\xFAmero de signos de d\xF3lar para indicar un bloque matem\xE1tico` para determinar cu\xE1ntos signos de d\xF3lar indica un bloque matem\xE1tico para matem\xE1ticas de una sola l\xEDnea."},"move-tags-to-yaml":{name:"Mover etiquetas a YAML",description:"Mueva todas las etiquetas al frontmatter del YAML del documento.","how-to-handle-existing-tags":{name:"Operaci\xF3n de etiqueta corporal",description:"Lo qur se debe hacer con las etiquetas no ignoradas en el cuerpo del archivo una vez que se han movido al frontmatter"},"tags-to-ignore":{name:"Etiquetas para omitir",description:"Las etiquetas que no se mover\xE1n a la matriz de etiquetas ni se eliminar\xE1n del contenido del cuerpo si est\xE1 habilitado `Eliminar el hashtag de las etiquetas en el cuerpo del contenido`. Cada etiqueta debe estar en una nueva l\xEDnea y sin el `#`. **Aseg\xFArese de no incluir el hashtag en el nombre de la etiqueta.**"}},"no-bare-urls":{name:"Sin URL desnuda",description:"Encierra las direcciones URL desnudas con corchetes angulares, excepto cuando est\xE1n encerradas en marcas traseras, llaves cuadradas o comillas simples o dobles.","no-bare-uris":{name:"Sin URI desnuda",description:"Encierra las direcciones URI desnudas con corchetes angulares, excepto cuando est\xE1n encerradas en marcas traseras, llaves cuadradas o comillas simples o dobles."}},"ordered-list-style":{name:"Estilo de lista ordenada",description:"Se asegura de que las listas ordenadas siguen el estilo especificado. Tenga en cuenta que 2 espacios o 1 tabulaci\xF3n se considera un nivel de sangr\xEDa.","number-style":{name:"Estilo num\xE9rico",description:"El estilo num\xE9rico utilizado en los indicadores de lista ordenada"},"list-end-style":{name:"Estilo final del indicador de lista ordenada",description:"El car\xE1cter final de un indicador de lista ordenada"}},"paragraph-blank-lines":{name:"L\xEDneas en blanco del p\xE1rrafo",description:"Todos los p\xE1rrafos deben tener exactamente una l\xEDnea en blanco antes y despu\xE9s."},"prevent-double-checklist-indicator-on-paste":{name:"Evitar el indicador de doble lista de verificaci\xF3n en pegar",description:"Elimina el indicador de lista de verificaci\xF3n inicial del texto para pegar si la l\xEDnea en la que se encuentra el cursor en el archivo tiene un indicador de lista de verificaci\xF3n"},"prevent-double-list-item-indicator-on-paste":{name:"Prevenir el indicador de elemento de lista doble al pegar",description:"Elimina el indicador de lista inicial del texto para pegar si la l\xEDnea en la que se encuentra el cursor en el archivo tiene un indicador de lista"},"proper-ellipsis-on-paste":{name:"Puntos suspensivos adecuados al pegar",description:"Reemplaza tres puntos consecutivos por puntos suspensivos aunque tengan un espacio entre ellos en el texto a pegar"},"proper-ellipsis":{name:"Puntos suspensivos propios",description:"Reemplaza tres puntos consecutivos con puntos suspensivos."},"quote-style":{name:"Estilo de cotizaci\xF3n",description:"Actualiza las comillas en el contenido del cuerpo para que se actualicen a los estilos de comillas simples y dobles especificados.","single-quote-enabled":{name:"Habilitar `Estilo de comillas simples`",description:"Especifica que se debe utilizar el estilo de comillas simples seleccionado."},"single-quote-style":{name:"Estilo de comillas simples",description:"El estilo de las comillas simples a utilizar."},"double-quote-enabled":{name:"Habilitar `Estilo de comillas dobles`",description:"Especifica que se debe utilizar el estilo de comillas dobles seleccionado."},"double-quote-style":{name:"Estilo de comillas dobles",description:"El estilo de comillas dobles a utilizar."}},"re-index-footnotes":{name:"Volver a indexar notas al pie",description:"Vuelve a indexar las notas al pie de p\xE1gina y las notas al pie, seg\xFAn el orden de aparici\xF3n (NOTA: esta regla *no* funciona si hay m\xE1s de una nota al pie para una clave)."},"remove-consecutive-list-markers":{name:"Eliminar marcadores de lista consecutiva",description:"Elimina marcadores de lista consecutivos. \xDAtil al copiar y pegar elementos de la lista."},"remove-empty-lines-between-list-markers-and-checklists":{name:"Eliminar l\xEDneas vac\xEDas entre marcadores de lista y listas de verificaci\xF3n",description:"No debe haber l\xEDneas vac\xEDas entre los marcadores de lista y las listas de verificaci\xF3n."},"remove-empty-list-markers":{name:"Eliminar marcadores de lista vac\xEDa",description:"Elimina marcadores de listas vac\xEDas, es decir, lista de elementos sin contenido."},"remove-hyphenated-line-breaks":{name:"Eliminar saltos de l\xEDnea con gui\xF3n",description:"Elimina los saltos de l\xEDnea con gui\xF3n. \xDAtil al pegar texto de libros de texto."},"remove-hyphens-on-paste":{name:"Eliminar guiones al pegar",description:"Elimina guiones del texto al pegar"},"remove-leading-or-trailing-whitespace-on-paste":{name:"Eliminar espacios en blanco iniciales o finales al pegar",description:"Elimina cualquier espacio en blanco inicial que no sea una pesta\xF1a y todos los espacios en blanco finales para que el texto se pegue"},"remove-leftover-footnotes-from-quote-on-paste":{name:"Eliminar las notas al pie sobrantes de la cita al pegar",description:"Elimina las referencias de notas al pie sobrantes para que el texto se pegue"},"remove-link-spacing":{name:"Quitar el espacio entre enlaces",description:"Elimina el espacio alrededor del texto del enlace."},"remove-multiple-blank-lines-on-paste":{name:"Eliminar varias l\xEDneas en blanco al pegar",description:"Condensa varias l\xEDneas en blanco en una l\xEDnea en blanco para que el texto se pegue"},"remove-multiple-spaces":{name:"Quitar varios espacios",description:"Elimina dos o m\xE1s espacios consecutivos. Ignora los espacios al principio y al final de la l\xEDnea."},"remove-space-around-characters":{name:"Quitar el espacio alrededor de los caracteres",description:"Garantiza que determinados caracteres no est\xE9n rodeados de espacios en blanco (ya sean espacios individuales o tabulaciones). Tenga en cuenta que esto puede causar problemas con el formato de descuento en algunos casos.","include-fullwidth-forms":{name:"Incluir formularios de ancho completo",description:'Incluir <a href="https://en.wikipedia.org/wiki/Halfwidth_and_Fullwidth_Forms_(Unicode_block)">bloque Unicode de formularios de ancho completo</a>'},"include-cjk-symbols-and-punctuation":{name:"Incluir s\xEDmbolos de CJK y puntuaci\xF3n",description:'Incluir <a href="https://en.wikipedia.org/wiki/CJK_Symbols_and_Punctuation">Bloque Unicode de s\xEDmbolos y puntuaci\xF3n de CJK</a>'},"include-dashes":{name:"Incluir guiones",description:"Incluir gui\xF3n corto (\u2013) y gui\xF3n largo (\u2014)"},"other-symbols":{name:"Otros s\xEDmbolos",description:"Otros s\xEDmbolos para incluir"}},"remove-space-before-or-after-characters":{name:"Quitar el espacio antes o despu\xE9s de los caracteres",description:"Elimina el espacio antes de los caracteres especificados y despu\xE9s de los caracteres especificados. Tenga en cuenta que esto puede causar problemas con el formato de descuento en algunos casos.","characters-to-remove-space-before":{name:"Eliminar espacio antes de los caracteres",description:"Elimina el espacio antes de los caracteres especificados. **Nota: el uso de `{` o `}` en la lista de caracteres afectar\xE1 inesperadamente a los archivos, ya que se usa en la sintaxis de ignorar en segundo plano.**"},"characters-to-remove-space-after":{name:"Eliminar espacio despu\xE9s de los caracteres",description:"Elimina el espacio despu\xE9s de los caracteres especificados. **Nota: el uso de `{` o `}` en la lista de caracteres afectar\xE1 inesperadamente a los archivos, ya que se usa en la sintaxis de ignorar en segundo plano.**"}},"remove-trailing-punctuation-in-heading":{name:"Eliminar la puntuaci\xF3n final en el encabezado",description:"Elimina la puntuaci\xF3n especificada al final de los encabezados, asegur\xE1ndose de ignorar el punto y coma al final de [referencias de entidades de HTML](https://es.wikipedia.org/wiki/Anexo:Referencias_a_entidades_de_caracteres_XML_y_HTML).","punctuation-to-remove":{name:"Puntuaci\xF3n final",description:"La puntuaci\xF3n final que se eliminar\xE1 de los encabezados del archivo."}},"remove-yaml-keys":{name:"Eliminar claves de YAML",description:"Elimina las claves especificadas de YAML","yaml-keys-to-remove":{name:"Claves de YAML para eliminar",description:"Las claves de YAML para eliminar del frontmatter del YAML con o sin dos puntos"}},"space-after-list-markers":{name:"Espacio despu\xE9s de los marcadores de lista",description:"Debe haber un solo espacio despu\xE9s de los marcadores de lista y las casillas de verificaci\xF3n."},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"Espacio entre chino japon\xE9s o coreano e ingl\xE9s o n\xFAmeros",description:"Garantiza que el chino, el japon\xE9s o el coreano y el ingl\xE9s o los n\xFAmeros est\xE9n separados por un solo espacio. Sigue estas [directrices](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"Estilo fuerte",description:"Se asegura de que el estilo fuerte sea consistente.",style:{name:"Estilo",description:"El estilo utilizado para denotar contenido fuerte/en negrita"}},"trailing-spaces":{name:"Espacios finales",description:"Elimina espacios adicionales despu\xE9s de cada l\xEDnea.","twp-space-line-break":{name:"Salto de l\xEDnea de dos espacios",description:'Ignore dos espacios seguidos de un salto de l\xEDnea ("Regla de dos espacios").'}},"two-spaces-between-lines-with-content":{name:"Dos espacios entre l\xEDneas con contenido",description:"Se asegura de que se agreguen dos espacios al final de las l\xEDneas con contenido que contin\xFAa en la siguiente l\xEDnea para p\xE1rrafos, comillas y elementos de lista"},"unordered-list-style":{name:"Estilo de lista desordenada",description:"Se asegura de que las listas desordenadas sigan el estilo especificado.","list-style":{name:"Estilo de elemento de lista",description:"El estilo de elemento de lista para usar en listas desordenadas"}},"yaml-key-sort":{name:"Clasificaci\xF3n de clave de YAML",description:"Ordena las claves de YAML seg\xFAn el orden y la prioridad especificados. Nota: tambi\xE9n puede eliminar las l\xEDneas en blanco.","yaml-key-priority-sort-order":{name:"Orden de clasificaci\xF3n de prioridad de clave de YAML",description:"El orden en el que se ordenan las claves con una en cada l\xEDnea donde se ordena en el orden que se encuentra en la lista"},"priority-keys-at-start-of-yaml":{name:"Claves de prioridad al inicio del YAML",description:"El orden de clasificaci\xF3n de prioridad clave de YAML se coloca al comienzo del frontmatter del YAML"},"yaml-sort-order-for-other-keys":{name:"Orden de clasificaci\xF3n de YAML para otras claves",description:"La forma en que ordenar las claves que no se encuentran en el \xE1rea de texto `Orden de clasificaci\xF3n de prioridad de clave de YAML`"}},"yaml-timestamp":{name:"Marca de tiempo de YAML",description:"Lleve un registro de la fecha en que se edit\xF3 el archivo por \xFAltima vez en el frente del YAML. Obtiene las fechas de los metadatos del archivo.","date-created":{name:"Fecha de creaci\xF3n",description:"Inserte la fecha de creaci\xF3n del archivo"},"date-created-key":{name:"Clave de fecha de creaci\xF3n",description:"La clave de YAML para usar para la fecha de creaci\xF3n"},"force-retention-of-create-value":{name:"Forzar la fecha de creaci\xF3n de la retenci\xF3n del valor clave",description:"Reutiliza el valor en el frontmatter del YAML para la fecha de creaci\xF3n en lugar de los metadatos del archivo, lo que es \xFAtil para evitar que los cambios en los metadatos del archivo provoquen que el valor cambie a un valor diferente."},"date-modified":{name:"Fecha modificada",description:"Inserte la fecha en que se modific\xF3 el archivo por \xFAltima vez"},"date-modified-key":{name:"Clave de fecha modificada",description:"La clave de YAML para usar para la fecha de modificaci\xF3n"},format:{name:"Formato",description:"Formato de fecha de Moment a usar (ver [Opciones de formato de Moment](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))"}},"yaml-title-alias":{name:"Alias de t\xEDtulo de YAML",description:"Inserta el t\xEDtulo del archivo en la secci\xF3n de alias de YAML frontmatter. Obtiene el t\xEDtulo del primer H1 o nombre de archivo.","preserve-existing-alias-section-style":{name:"Conservar el estilo de secci\xF3n de alias existente",description:"Si se establece, la configuraci\xF3n `Estilo de secci\xF3n de alias de YAML` se aplica solo a las secciones reci\xE9n creadas"},"keep-alias-that-matches-the-filename":{name:"Mantenga el alias que coincida con el nombre del archivo",description:"Estos alias suelen ser redundantes."},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"Use la clave de YAML `linter-yaml-title-alias` para ayudar con los cambios de nombre de archivo y encabezado",description:"Si se establece, cuando cambia el primer encabezado H1 o cambia el nombre de archivo si el primer H1 no est\xE1 presente, el alias anterior almacenado en esta clave se reemplazar\xE1 con el nuevo valor en lugar de simplemente insertar una nueva entrada en la matriz de alias."}},"yaml-title":{name:"T\xEDtulo de YAML",description:"Inserta el t\xEDtulo del archivo en el frontmatter de YAML. Obtiene el t\xEDtulo seg\xFAn el modo seleccionado.","title-key":{name:"Clave de t\xEDtulo",description:"La clave de YAML para usar para el t\xEDtulo"},mode:{name:"Modo",description:"El m\xE9todo a utilizar para obtener el t\xEDtulo"}}},enums:{"Title Case":"Titulo del Caso","ALL CAPS":"TODO MAY\xDASCULAS","First letter":"Primera letra",".":".",")":")",ERROR:"error",TRACE:"trazar",DEBUG:"depurar",INFO:"informaci\xF3n",WARN:"advertencia",SILENT:"silencio",ascending:"ascendente",lazy:"perezoso",Nothing:"nada","Remove hashtag":"Remove hashtag","Remove whole tag":"Remove whole tag",asterisk:"asterisco",underscore:"guion bajo",consistent:"congruente","-":"-","*":"*","+":"+",space:"espacio","no space":"sin espacio",None:"nada","Ascending Alphabetical":"Ascendente alfab\xE9tico","Descending Alphabetical":"Descendiente alfab\xE9tico","multi-line":"multil\xEDnea","single-line":"linea sola","single string to single-line":"una sola cadena a una sola l\xEDnea","single string to multi-line":"cadena \xFAnica a multil\xEDnea","single string comma delimited":"cadena \xFAnica delimitada por comas","single string space delimited":"espacio de una sola cadena delimitado","single-line space delimited":"espacio de una sola l\xEDnea delimitado","first-h1":"primer encabezado de nivel 1","first-h1-or-filename-if-h1-missing":"primer encabezado de nivel 1 o nombre de archivo si falta el encabezado de primer nivel 1",filename:"nombre del archivo","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var Fd={};var Rd={};var Dd={};var Nd={};var Kd={};var Yd={};var jd={};var Pd={};var Hd={};var $d={};var Wd={};var Ud={};var Vd={};var Gd={};var Qd={commands:{"lint-file":{name:"Ge\xE7erli dosyay\u0131 lintle","error-message":"Dosyada Lintleme Hatas\u0131"},"lint-file-unless-ignored":{name:"Yoksay\u0131lmad\u0131k\xE7a ge\xE7erli dosyay\u0131 lintle"},"lint-all-files":{name:"Kasadaki t\xFCm dosyalar\u0131 lintle","error-message":"Dosyada T\xFCm Dosyalar\u0131 Lintleme Hatas\u0131","success-message":"T\xFCm dosyalar lintlendi","errors-message-singular":"T\xFCm dosyalar lintlendi ve 1 hata vard\u0131.","errors-message-plural":"T\xFCm dosyalar lintlendi ve {NUM} hata vard\u0131.","start-message":"Bu, t\xFCm dosyalar\u0131n\u0131z\u0131 d\xFCzenler ve hatalara yol a\xE7abilir.","submit-button-text":"T\xFCm\xFCn\xFC Lintle","submit-button-notice-text":"T\xFCm dosyalar lintleniyor..."},"lint-all-files-in-folder":{name:"Ge\xE7erli klas\xF6rdeki t\xFCm dosyalar\u0131 lintle","start-message":"Bu, {FOLDER_NAME} dahilindeki t\xFCm dosyalar\u0131n\u0131z\u0131 ve alt klas\xF6rlerini d\xFCzenler ve hatalara yol a\xE7abilir.","submit-button-text":"{FOLDER_NAME} i\xE7indeki T\xFCm Dosyalar\u0131 Lintle","submit-button-notice-text":"{FOLDER_NAME} i\xE7indeki t\xFCm dosyalar lintleniyor...","error-message":"Klas\xF6rdeki T\xFCm Dosyalar\u0131 Lintleme Hatas\u0131 Dosyada","success-message":"{FOLDER_NAME} i\xE7indeki t\xFCm {NUM} dosya lintlendi.","message-singular":"{FOLDER_NAME} i\xE7indeki t\xFCm {NUM} dosya lintlendi ve 1 hata vard\u0131.","message-plural":"{FOLDER_NAME} i\xE7indeki t\xFCm {FILE_COUNT} dosya lintlendi ve {ERROR_COUNT} hata vard\u0131."},"paste-as-plain-text":{name:"D\xFCz Metin Olarak & Modifikasyonsuz Yap\u0131\u015Ft\u0131r"},"lint-file-pop-up-menu-text":{name:"Dosyay\u0131 lintle"},"lint-folder-pop-up-menu-text":{name:"Klas\xF6r\xFC lintle"}},logs:{"plugin-load":"Eklenti y\xFCkleniyor","plugin-unload":"Eklenti kald\u0131r\u0131l\u0131yor","folder-lint":"Klas\xF6r lintleniyor ","linter-run":"Lintleme \xE7al\u0131\u015Ft\u0131r\u0131l\u0131yor","paste-link-warning":"pano i\xE7eri\u011Fi bir link oldu\u011Fu ve yap\u0131\u015Ft\u0131rmay\u0131 de\u011Fi\u015Ftiren di\u011Fer eklentilerle \xE7ak\u0131\u015Fmay\u0131 \xF6nlemek i\xE7in lintleme yap\u0131\u015Ft\u0131rmas\u0131 iptal edildi.","see-console":"Daha fazla detay i\xE7in konsolu kontrol edin.","unknown-error":"Lintleme s\u0131ras\u0131nda bilinmeyen bir hata olu\u015Ftu.","moment-locale-not-found":"Moment.js yerelini {MOMENT_LOCALE} olarak de\u011Fi\u015Ftirmeye \xE7al\u0131\u015F\u0131yor, elde edilen {CURRENT_LOCALE}","file-change-lint-message-start":"Lintlendi","pre-rules":"normal kurallardan \xF6nceki kurallar","post-rules":"normal kurallardan sonraki kurallar","rule-running":"kurallar \xE7al\u0131\u015Ft\u0131r\u0131l\u0131yor","custom-regex":"\xF6zel regex kurallar\u0131","running-custom-regex":"\xD6zel Regex \xC7al\u0131\u015Ft\u0131r\u0131l\u0131yor","running-custom-lint-command":"\xD6zel Lint Komutlar\u0131 \xC7al\u0131\u015Ft\u0131r\u0131l\u0131yor","custom-lint-duplicate-warning":'Ayn\u0131 komutu ("{COMMAND_NAME}") \xF6zel bir lint kural\u0131 olarak iki kez \xE7al\u0131\u015Ft\u0131ramazs\u0131n\u0131z.',"custom-lint-error-message":"\xD6zel Lint Komutu Hatas\u0131","disabled-text":"devre d\u0131\u015F\u0131","run-rule-text":"\xC7al\u0131\u015Ft\u0131r\u0131l\u0131yor","timing-key-not-found":"'{TIMING_KEY}' zamanlama anahtar\u0131 zamanlama bilgisi listesinde bulunamad\u0131, bu y\xFCzden yoksay\u0131ld\u0131","milliseconds-abbreviation":"ms","invalid-date-format-error":"Olu\u015Fturulan tarih format\u0131 '{DATE}' ayr\u0131\u015Ft\u0131r\u0131lamad\u0131 veya belirlenemedi, bu y\xFCzden '{FILE_NAME}' dosyas\u0131ndaki olu\u015Fturulan tarih ayn\u0131 b\u0131rak\u0131ld\u0131","invalid-delimiter-error-message":"ayra\xE7 sadece tek bir karakter olabilir","missing-footnote-error-message":"'{FOOTNOTE}' dipnotunun i\xE7eri\u011Finden \xF6nce kar\u015F\u0131l\u0131k gelen bir dipnot referans\u0131 yok ve i\u015Flenemez. L\xFCtfen t\xFCm dipnotlar\u0131n, dipnot i\xE7eri\u011Finden \xF6nce kar\u015F\u0131l\u0131k gelen bir referans\u0131 oldu\u011Fundan emin olun.","too-many-footnotes-error-message":"'{FOOTNOTE_KEY}' dipnot anahtar\u0131 birden fazla dipnota at\u0131fta bulunuyor. L\xFCtfen dipnotlar\u0131 g\xFCncelleyin, b\xF6ylece her dipnot anahtar\u0131 i\xE7in yaln\u0131zca bir dipnot olur.","wrapper-yaml-error":"YAML'da hata: {ERROR_MESSAGE}","wrapper-unknown-error":"bilinmeyen hata: {ERROR_MESSAGE}"},"notice-text":{"empty-clipboard":"Panoda i\xE7erik yok.","characters-added":"karakterler eklendi","characters-removed":"karakterler kald\u0131r\u0131ld\u0131"},"all-rules-option":"T\xFCm\xFC","linter-title":"Linter","empty-search-results-text":"Arama ile e\u015Fle\u015Fen ayar bulunamad\u0131","warning-text":"Uyar\u0131","file-backup-text":"Dosyalar\u0131n\u0131z\u0131n yede\u011Fini ald\u0131\u011F\u0131n\u0131zdan emin olun.",tabs:{names:{general:"Genel",custom:"\xD6zel",yaml:"YAML",heading:"Ba\u015Fl\u0131k",content:"\u0130\xE7erik",footnote:"Dipnot",spacing:"Bo\u015Fluk",paste:"Yap\u0131\u015Ft\u0131r",debug:"Hata ay\u0131kla"},"default-search-bar-text":"T\xFCm ayarlar\u0131 ara",general:{"lint-on-save":{name:"Kaydederken d\xFCzelt",description:"Manuel kaydetme (Ctrl + S tu\u015Funa bas\u0131ld\u0131\u011F\u0131nda veya vim tu\u015F ba\u011Flamalar\u0131n\u0131 kullan\u0131rken :w komutu \xE7al\u0131\u015Ft\u0131r\u0131ld\u0131\u011F\u0131nda) dosyay\u0131 d\xFCzeltir"},"display-message":{name:"D\xFCzeltme sonras\u0131 mesaj\u0131 g\xF6ster",description:"D\xFCzeltme sonras\u0131 de\u011Fi\u015Fen karakter say\u0131s\u0131n\u0131 g\xF6sterir"},"lint-on-file-change":{name:"Dosya De\u011Fi\u015Fikli\u011Finde D\xFCzeltme",description:"Bir dosya kapat\u0131ld\u0131\u011F\u0131nda veya yeni bir dosya a\xE7\u0131ld\u0131\u011F\u0131nda, \xF6nceki dosya d\xFCzeltilir."},"display-lint-on-file-change-message":{name:"Dosya De\u011Fi\u015Fikli\u011Finde D\xFCzeltme Mesaj\u0131n\u0131 G\xF6ster",description:"`Dosya De\u011Fi\u015Fikli\u011Finde D\xFCzeltme` oldu\u011Funda bir mesaj g\xF6sterir"},"folders-to-ignore":{name:"Yoksay\u0131lacak klas\xF6rler",description:"T\xFCm dosyalar\u0131 d\xFCzeltirken veya kaydederken d\xFCzeltme i\u015Fleminin yoksay\u0131laca\u011F\u0131 klas\xF6rler. Klas\xF6r yollar\u0131n\u0131 yeni sat\u0131rlarla ay\u0131rarak girin"},"override-locale":{name:"Yerel ayarlar\u0131n \xFCzerine yaz",description:"Varsay\u0131lan\u0131n d\u0131\u015F\u0131nda bir yerel ayar kullanmak istiyorsan\u0131z bunu ayarlay\u0131n"},"same-as-system-locale":"Sistemle ayn\u0131 ({SYS_LOCALE})","yaml-aliases-section-style":{name:"YAML takma adlar\u0131 b\xF6l\xFCm\xFC stili",description:"YAML takma adlar\u0131 b\xF6l\xFCm\xFCn\xFCn stili"},"yaml-tags-section-style":{name:"YAML etiketleri b\xF6l\xFCm\xFC stili",description:"YAML etiketleri b\xF6l\xFCm\xFCn\xFCn stili"},"default-escape-character":{name:"Varsay\u0131lan Ka\xE7\u0131\u015F Karakteri",description:"Tek t\u0131rnak ve \xE7ift t\u0131rnak bulunmayan YAML de\u011Ferlerinden ka\xE7mak i\xE7in kullan\u0131lacak varsay\u0131lan karakter."},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"\xC7ok Sat\u0131rl\u0131 Dizi Format\u0131ndayken Gereksiz Ka\xE7\u0131\u015F Karakterlerini Kald\u0131r",description:"\xC7ok sat\u0131rl\u0131 YAML dizileri i\xE7in ka\xE7\u0131\u015F karakterleri tek sat\u0131rl\u0131 dizilere g\xF6re ayn\u0131 ka\xE7\u0131\u015Fa ihtiya\xE7 duymaz, bu y\xFCzden \xE7ok sat\u0131rl\u0131 format i\xE7erisinde gerekli olmayan ekstra ka\xE7\u0131\u015Flar\u0131 kald\u0131r\u0131r"},"number-of-dollar-signs-to-indicate-math-block":{name:"Matematiksel Blo\u011Fu Belirtmek \u0130\xE7in Dolar \u0130\u015Fareti Say\u0131s\u0131",description:"Matematik i\xE7eri\u011Finin bir matematiksel blok yerine inline matematik olup olmad\u0131\u011F\u0131n\u0131 belirlemek i\xE7in kullan\u0131lacak dolar i\u015Fareti say\u0131s\u0131"}},debug:{"log-level":{name:"Log D\xFCzeyi",description:"Hizmetin loglamaya izin verdi\u011Fi log t\xFCrleri. Varsay\u0131lan ERROR'dur."},"linter-config":{name:"Linter Yap\u0131land\u0131rmas\u0131",description:"Ayar sayfas\u0131n\u0131n y\xFCklenmesi s\u0131ras\u0131nda Linter i\xE7in data.json i\xE7eri\u011Fi"},"log-collection":{name:"Kaydetme d\xFCzeltmesi ve mevcut dosyan\u0131n d\xFCzeltilmesi s\u0131ras\u0131nda loglar\u0131 topla",description:"`Kaydetme d\xFCzeltmesi` yapt\u0131\u011F\u0131n\u0131zda ve mevcut dosyay\u0131 d\xFCzeltirken loglar\u0131 toplar. Bu loglar hata ay\u0131klama ve hata raporlar\u0131 olu\u015Fturma i\xE7in yard\u0131mc\u0131 olabilir."},"linter-logs":{name:"Linter Loglar\u0131",description:"Son `Kaydetme d\xFCzeltmesi` veya son mevcut dosya \xE7al\u0131\u015Ft\u0131rmas\u0131ndan elde edilen loglar (e\u011Fer etkinle\u015Ftirilmi\u015Fse)."}}},options:{"custom-command":{name:"\xD6zel Komutlar",description:"\xD6zel komutlar, linter normal kurallar\u0131n\u0131 \xE7al\u0131\u015Ft\u0131rmay\u0131 bitirdikten sonra \xE7al\u0131\u015Ft\u0131r\u0131lan Obsidyen komutlard\u0131r. Bu, YAML zaman damgas\u0131 mant\u0131\u011F\u0131 \xE7al\u0131\u015Fmadan \xF6nce \xE7al\u0131\u015Fmad\u0131klar\u0131 anlam\u0131na gelir, dolay\u0131s\u0131yla linterin bir sonraki \xE7al\u0131\u015Fmas\u0131nda YAML zaman damgas\u0131n\u0131n tetiklenmesine neden olabilirler. Bir Obsidyen komutunu yaln\u0131zca bir kez se\xE7ebilirsiniz. **_Bunun \u015Fu anda yaln\u0131zca ge\xE7erli dosyaya sat\u0131r dizilirken \xE7al\u0131\u015Ft\u0131\u011F\u0131n\u0131 unutmay\u0131n._**",warning:"Bir se\xE7ene\u011Fi se\xE7erken, se\xE7ene\u011Fi fareyi kullanarak veya enter tu\u015Funa basarak se\xE7ti\u011Finizden emin olun. Di\u011Fer se\xE7im y\xF6ntemleri \xE7al\u0131\u015Fmayabilir ve yaln\u0131zca ger\xE7ek bir Obsidian komutunun veya bo\u015F bir dizinin se\xE7imleri kaydedilir.","add-input-button-text":"Yeni komut ekle","command-search-placeholder-text":"Obsidian komutu","move-up-tooltip":"Yukar\u0131","move-down-tooltip":"A\u015Fa\u011F\u0131","delete-tooltip":"Sil"},"custom-replace":{name:"\xD6zel Regex De\u011Fi\u015Ftirme",description:"\xD6zel regex de\u011Fi\u015Ftirme, bulunan regex ile e\u015Fle\u015Fen her \u015Feyi de\u011Fi\u015Ftirme de\u011Feri ile de\u011Fi\u015Ftirmek i\xE7in kullan\u0131labilir. De\u011Fi\u015Ftirme ve bulma de\u011Ferleri ge\xE7erli regex de\u011Ferleri olmal\u0131d\u0131r.",warning:"Regex hakk\u0131nda bilginiz yoksa dikkatli kullan\u0131n. Ayr\u0131ca, l\xFCtle iOS mobil platformunda regexinizde geriye d\xF6n\xFCk aramalar\u0131 kullanmay\u0131n \xE7\xFCnk\xFC bu, o platformda desteklenmedi\u011Fi i\xE7in lint i\u015Fleminin ba\u015Far\u0131s\u0131z olmas\u0131na neden olur.","add-input-button-text":"Yeni regex de\u011Fi\u015Ftirme ekle","regex-to-find-placeholder-text":"bulunacak regex","flags-placeholder-text":"bayraklar","regex-to-replace-placeholder-text":"de\u011Fi\u015Ftirilecek regex","label-placeholder-text":"etiket","move-up-tooltip":"Yukar\u0131 ta\u015F\u0131","move-down-tooltip":"A\u015Fa\u011F\u0131 ta\u015F\u0131","delete-tooltip":"Sil"}},rules:{"auto-correct-common-misspellings":{name:"Yayg\u0131n Yanl\u0131\u015F Yaz\u0131mlar\u0131 Otomatik D\xFCzelt",description:"Yayg\u0131n yanl\u0131\u015F yaz\u0131mlar\u0131n s\xF6zl\xFC\u011F\xFCn\xFC kullanarak bunlar\u0131 do\u011Fru yaz\u0131mlar\u0131na otomatik olarak d\xF6n\xFC\u015Ft\xFCr\xFCr. Otomatik d\xFCzeltilen kelimelerin tam listesi i\xE7in [otomatik-d\xFCzeltme haritas\u0131na](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts) bak\u0131n.","ignore-words":{name:"Kelimeleri Yoksay",description:"Otomatik d\xFCzeltme s\u0131ras\u0131nda yoksay\u0131lacak k\xFC\xE7\xFCk harfli kelimelerin virg\xFClle ayr\u0131lm\u0131\u015F listesi"}},"add-blockquote-indentation-on-paste":{name:"Yap\u0131\u015Ft\u0131rma S\u0131ras\u0131nda Blok Al\u0131nt\u0131 Girintisini Ekle",description:"\u0130mle\xE7 bir blok al\u0131nt\u0131/callout sat\u0131r\u0131nda oldu\u011Funda, t\xFCm sat\u0131rlara, ilk sat\u0131r hari\xE7, blok al\u0131nt\u0131lar ekler"},"blockquote-style":{name:"Blok Al\u0131nt\u0131 Stili",description:"Blok al\u0131nt\u0131 stili tutarl\u0131 olmal\u0131d\u0131r.",style:{name:"Stil",description:"Blok al\u0131nt\u0131 g\xF6stergelerinde kullan\u0131lan stil"}},"capitalize-headings":{name:"B\xFCy\xFCk Harfli Ba\u015Fl\u0131klar",description:"Ba\u015Fl\u0131klar b\xFCy\xFCk harfle bi\xE7imlendirilmelidir",style:{name:"Stil",description:"Kullan\u0131lacak b\xFCy\xFCk harfle ba\u015Flatma stili"},"ignore-case-words":{name:"Durum S\xF6zc\xFCklerini Yoksay",description:"Ba\u015Fl\u0131k durum stilini sadece t\xFCm k\xFC\xE7\xFCk harfli s\xF6zc\xFCklere uygula"},"ignore-words":{name:"S\xF6zc\xFCkleri Yoksay",description:"B\xFCy\xFCk harfle ba\u015Flat\u0131rken yoksay\u0131lacak s\xF6zc\xFCklerin virg\xFClle ayr\u0131lm\u0131\u015F listesi"},"lowercase-words":{name:"K\xFC\xE7\xFCk Harfli S\xF6zc\xFCkler",description:"K\xFC\xE7\xFCk harfli tutulacak s\xF6zc\xFCklerin virg\xFClle ayr\u0131lm\u0131\u015F listesi"}},"compact-yaml":{name:"S\u0131k\u0131\u015Ft\u0131r\u0131lm\u0131\u015F YAML",description:"YAML \xF6n bilgisindeki ba\u015Ftaki ve sondaki bo\u015F sat\u0131rlar\u0131 kald\u0131r\u0131r.","inner-new-lines":{name:"\u0130\xE7 Yeni Sat\u0131rlar",description:"YAML'\u0131n ba\u015F\u0131nda veya sonunda olmayan yeni sat\u0131rlar\u0131 kald\u0131r\u0131r."}},"consecutive-blank-lines":{name:"Ard\u0131\u015F\u0131k bo\u015F sat\u0131rlar",description:"En fazla bir ard\u0131\u015F\u0131k bo\u015F sat\u0131r olmal\u0131d\u0131r."},"convert-bullet-list-markers":{name:"Bullet List Markerlar\u0131n\u0131 D\xF6n\xFC\u015Ft\xFCr",description:"Bullet list marker sembollerini markdown list markerlar\u0131na d\xF6n\xFC\u015Ft\xFCr\xFCr."},"convert-spaces-to-tabs":{name:"Bo\u015Fluklar\u0131 Sekmeye D\xF6n\xFC\u015Ft\xFCr",description:"Ba\u015Ftaki bo\u015Fluklar\u0131 sekmeye d\xF6n\xFC\u015Ft\xFCr\xFCr.",tabsize:{name:"Sekme Boyutu",description:"Bir sekme haline d\xF6n\xFC\u015Ft\xFCr\xFClecek bo\u015Fluk say\u0131s\u0131"}},"emphasis-style":{name:"Vurgu Stili",description:"Vurgu stilinin tutarl\u0131 olmas\u0131n\u0131 sa\u011Flar.",style:{name:"Stil",description:"Vurgulanan i\xE7eri\u011Fi belirtmek i\xE7in kullan\u0131lan stil"}},"empty-line-around-blockquotes":{name:"Al\u0131nt\u0131 Bloklar\u0131n\u0131n Etraf\u0131nda Bo\u015F Sat\u0131r",description:"Bir belgenin ba\u015F\u0131n\u0131 veya sonunu ba\u015Flatmayan al\u0131nt\u0131 bloklar\u0131n etraf\u0131nda bo\u015F bir sat\u0131r olmal\u0131d\u0131r. **Not: bo\u015F bir sat\u0131r ya al\u0131nt\u0131 bloklar i\xE7in bir seviye daha az girinti veya yeni bir sat\u0131r karakteri demektir.**"},"empty-line-around-code-fences":{name:"Kod \xC7itlerinin Etraf\u0131nda Bo\u015F Sat\u0131r",description:"Bir belgenin ba\u015F\u0131n\u0131 veya sonunu ba\u015Flatmayan kod \xE7itlerinin etraf\u0131nda bo\u015F bir sat\u0131r olmal\u0131d\u0131r."},"empty-line-around-math-blocks":{name:"Matematik Bloklar\u0131n\u0131n Etraf\u0131nda Bo\u015F Sat\u0131r",description:"Tek sat\u0131rl\u0131k matematik i\xE7in bir matematik blo\u011Funu belirtmek i\xE7in ka\xE7 dolar i\u015Fareti oldu\u011Funu belirleyen `Dolar \u0130\u015Faretlerinin Say\u0131s\u0131yla Matematik Blo\u011Funu Belirt` kullan\u0131larak matematik bloklar\u0131n\u0131n etraf\u0131nda bo\u015F bir sat\u0131r olmal\u0131d\u0131r."},"empty-line-around-tables":{name:"Tablolar\u0131n Etraf\u0131nda Bo\u015F Sat\u0131r",description:"Bir belgenin ba\u015F\u0131n\u0131 veya sonunu ba\u015Flatmayan github flavored tablolar\u0131n etraf\u0131nda bo\u015F bir sat\u0131r olmal\u0131d\u0131r."},"escape-yaml-special-characters":{name:"YAML \xD6zel Karakterlerine Ka\xE7\u0131\u015F \u0130\u015Flemi Yap",description:`YAML i\xE7indeki bo\u015Flukla beraber gelen iki nokta \xFCst \xFCste (:), tek t\u0131rnak (') ve \xE7ift t\u0131rnak (") karakterlerini ka\xE7\u0131\u015F i\u015Flemine tabi tutar.`,"try-to-escape-single-line-arrays":{name:"Tek Sat\u0131rl\u0131k Listeleri Ka\xE7\u0131\u015F Denemesi",description:'Bir dizinin "[" ile ba\u015Flad\u0131\u011F\u0131n\u0131, "]" ile bitti\u011Fini ve \xF6\u011Felerin "," ile ayr\u0131ld\u0131\u011F\u0131n\u0131 varsayarak dizi de\u011Ferlerini ka\xE7\u0131\u015F i\u015Flemine tabi tutmaya \xE7al\u0131\u015F\u0131r.'}},"file-name-heading":{name:"Dosya Ad\u0131 Ba\u015Fl\u0131\u011F\u0131",description:"E\u011Fer hi\xE7 H1 ba\u015Fl\u0131\u011F\u0131 yoksa dosya ad\u0131n\u0131 H1 ba\u015Fl\u0131\u011F\u0131 olarak ekler."},"footnote-after-punctuation":{name:"Noktalama \u0130\u015Faretinden Sonra Dipnot",description:"Dipnot referanslar\u0131n\u0131n noktalama i\u015Faretinden \xF6nce de\u011Fil, sonra yerle\u015Ftirildi\u011Finden emin olur."},"force-yaml-escape":{name:"YAML Ka\xE7\u0131\u015F\u0131n\u0131 Zorla",description:"Belirtilen YAML anahtarlar\u0131 i\xE7in ka\xE7\u0131\u015F de\u011Ferleri.","force-yaml-escape-keys":{name:"Anahtarlarda YAML Ka\xE7\u0131\u015F\u0131n\u0131 Zorla",description:"Yeni bir sat\u0131r karakteri ile ayr\u0131lm\u0131\u015F belirtilen YAML anahtarlar\u0131nda YAML ka\xE7\u0131\u015F karakterini kullan\u0131r, e\u011Fer zaten ka\xE7\u0131\u015F yap\u0131lmam\u0131\u015Fsa. YAML dizilerinde kullanmay\u0131n"}},"format-tags-in-yaml":{name:"YAML Etiketlerini Bi\xE7imlendir",description:"YAML \xF6n madde i\xE7indeki etiketlerden hashtagleri kald\u0131r\u0131r, \xE7\xFCnk\xFC bunlar etiketleri ge\xE7ersiz k\u0131lar."},"format-yaml-array":{name:"YAML Dizisini Bi\xE7imlendir",description:"Normal YAML dizilerinin \xE7ok sat\u0131rl\u0131 veya tek sat\u0131rl\u0131 olarak bi\xE7imlendirilmesine izin verir ve `tags` ve `aliases` baz\u0131 Obsidian \xF6zg\xFC \xF6zelliklerine sahip YAML formatlar\u0131nda bulunabilir. **Not: Tek giri\u015Fli bir diziden birden fazla giri\u015Fi olan tek sat\u0131rl\u0131 bir diziye ge\xE7mek ayn\u0131d\u0131r, tek fark \xE7ok sat\u0131rl\u0131 bir dizi olmas\u0131d\u0131r.**","alias-key":{name:"YAML takma adlar\u0131 b\xF6l\xFCm\xFCn\xFC bi\xE7imlendir",description:"YAML takma adlar\u0131 b\xF6l\xFCm\xFC i\xE7in bi\xE7imlendirmeyi a\xE7ar. Bu se\xE7ene\u011Fi `YAML Title Alias` kural\u0131yla birlikte kullanmaman\u0131z \xF6nerilir \xE7\xFCnk\xFC birlikte d\xFCzg\xFCn \xE7al\u0131\u015Fmayabilir veya farkl\u0131 bi\xE7imlendirme stilleri se\xE7ilmi\u015F olabilir, bu beklenmeyen sonu\xE7lara yol a\xE7abilir."},"tag-key":{name:"YAML etiketleri b\xF6l\xFCm\xFCn\xFC bi\xE7imlendir",description:"YAML etiketleri b\xF6l\xFCm\xFC i\xE7in bi\xE7imlendirmeyi a\xE7ar."},"default-array-style":{name:"Varsay\u0131lan YAML dizi b\xF6l\xFCm\xFC stili",description:"`tags`, `aliases` veya `Force key values to be single-line arrays` ve `Force key values to be multi-line arrays` olmayan di\u011Fer YAML dizilerinin stili"},"default-array-keys":{name:"YAML dizi b\xF6l\xFCmlerini bi\xE7imlendir",description:"Normal YAML dizileri i\xE7in bi\xE7imlendirmeyi a\xE7ar"},"force-single-line-array-style":{name:"Anahtar de\u011Ferlerini tek sat\u0131rl\u0131 dizilere zorla",description:"Yeni sat\u0131r ile ayr\u0131lan anahtarlar i\xE7in YAML dizisini tek sat\u0131rl\u0131 formatta olmaya zorlar (bu se\xE7ene\u011Fi devre d\u0131\u015F\u0131 b\u0131rakmak i\xE7in bo\u015F b\u0131rak\u0131n)"},"force-multi-line-array-style":{name:"Anahtar de\u011Ferlerini \xE7ok sat\u0131rl\u0131 dizilere zorla",description:"Yeni sat\u0131r ile ayr\u0131lan anahtarlar i\xE7in YAML dizisini \xE7ok sat\u0131rl\u0131 formatta olmaya zorlar (bu se\xE7ene\u011Fi devre d\u0131\u015F\u0131 b\u0131rakmak i\xE7in bo\u015F b\u0131rak\u0131n)"}},"header-increment":{name:"Ba\u015Fl\u0131k Art\u0131r\u0131m\u0131",description:"Ba\u015Fl\u0131k seviyeleri bir seferde sadece bir seviye artmal\u0131d\u0131r","start-at-h2":{name:"Ba\u015Fl\u0131k Art\u0131r\u0131m\u0131n\u0131 Ba\u015Fl\u0131k Seviyesi 2\u2019de Ba\u015Flat",description:"Bir dosyadaki minimum ba\u015Fl\u0131k seviyesini ba\u015Fl\u0131k seviyesi 2 yapar ve buna g\xF6re t\xFCm ba\u015Fl\u0131klar\u0131 kayd\u0131r\u0131r, b\xF6ylece ba\u015Fl\u0131k art\u0131\u015F\u0131 seviye 2 ba\u015Fl\u0131\u011F\u0131 ile ba\u015Flar."}},"heading-blank-lines":{name:"Ba\u015Fl\u0131k Bo\u015F Sat\u0131rlar\u0131",description:"T\xFCm ba\u015Fl\u0131klar\u0131n hem \xF6ncesinde hem de sonras\u0131nda birer bo\u015F sat\u0131r olmal\u0131d\u0131r (ba\u015Fl\u0131k belgenin ba\u015F\u0131nda veya sonunda oldu\u011Funda bu durum ge\xE7erli de\u011Fildir).",bottom:{name:"Alt",description:"Ba\u015Fl\u0131klar\u0131n sonras\u0131na bo\u015F sat\u0131r ekler"},"empty-line-after-yaml":{name:"YAML ve Ba\u015Fl\u0131k Aras\u0131nda Bo\u015F Sat\u0131r",description:"YAML \xF6n madde ve ba\u015Fl\u0131k aras\u0131ndaki bo\u015F sat\u0131r\u0131 korur"}},"headings-start-line":{name:"Ba\u015Fl\u0131klar Sat\u0131r\u0131 Ba\u015Flat\u0131r",description:"Bir sat\u0131r\u0131 ba\u015Flatmayan ba\u015Fl\u0131klar\u0131n \xF6ncesi bo\u015Fluklar\u0131 kald\u0131r\u0131l\u0131r ki ba\u015Fl\u0131klar ba\u015Fl\u0131k olarak tan\u0131nabilsin."},"insert-yaml-attributes":{name:"YAML \xD6zniteliklerini Ekle",description:"Verilen YAML \xF6zniteliklerini YAML \xF6n maddesine ekler. Her \xF6zniteli\u011Fi tek bir sat\u0131ra koyun.","text-to-insert":{name:"Eklenecek metin",description:"YAML \xF6n maddesine eklenen metin"}},"line-break-at-document-end":{name:"Belge Sonunda Sat\u0131r Sonu",description:"Bir belgenin sonunda tam olarak bir sat\u0131r sonu oldu\u011Funu garanti eder."},"move-footnotes-to-the-bottom":{name:"Dipnotlar\u0131 Altbilgiye Ta\u015F\u0131",description:"T\xFCm dipnotlar\u0131 belgenin alt\u0131na ta\u015F\u0131r."},"move-math-block-indicators-to-their-own-line":{name:"Matematik Blok G\xF6stergelerini Kendi Sat\u0131rlar\u0131na Ta\u015F\u0131",description:'Tek sat\u0131rl\u0131 matematik i\xE7in ka\xE7 dolar i\u015Faretinin bir matematik blo\u011Funu g\xF6sterdi\u011Fini belirlemek i\xE7in "Bir Matematik Blo\u011Fu G\xF6stermek \u0130\xE7in Dolar \u0130\u015Fareti Say\u0131s\u0131"n\u0131 kullanarak t\xFCm ba\u015Flang\u0131\xE7 ve biti\u015F matematik blo\u011Fu g\xF6stergelerini kendi sat\u0131rlar\u0131na ta\u015F\u0131y\u0131n.'},"move-tags-to-yaml":{name:"Etiketleri YAML'a Ta\u015F\u0131",description:"T\xFCm etiketleri belgenin YAML \xF6n maddesine ta\u015F\u0131r.","how-to-handle-existing-tags":{name:"Metin i\xE7indeki etiket i\u015Flemi",description:"\xD6n maddeye ta\u015F\u0131nd\u0131ktan sonra dosyan\u0131n i\xE7eri\u011Finde bulunan ve yoksay\u0131lmayan etiketlerle ne yap\u0131laca\u011F\u0131"},"tags-to-ignore":{name:"Yoksay\u0131lacak etiketler",description:"\u0130\xE7erik g\xF6vdesindeki hashtag'lerden kald\u0131rma etkinle\u015Ftirilmi\u015Fse, etiketler dizisine ta\u015F\u0131nmayacak veya i\xE7erik g\xF6vdesinden kald\u0131r\u0131lmayacak etiketler. Her etiket yeni bir sat\u0131rda ve `#` olmadan olmal\u0131d\u0131r. **Etiket ad\u0131nda hashtag i\xE7ermedi\u011Finizden emin olun.**"}},"no-bare-urls":{name:"Yal\u0131n URL'ler Olmas\u0131n",description:"Yal\u0131n URL'leri a\xE7\u0131l\u0131 ayra\xE7lar ile ku\u015Fat\u0131r, tek veya \xE7ift t\u0131rnak, k\xF6\u015Feli parantez veya e\u011Fik kesme i\u015Fareti i\xE7inde de\u011Filse."},"ordered-list-style":{name:"S\u0131ral\u0131 Liste Stili",description:"S\u0131ral\u0131 listelerin belirtilen stili izlemesini sa\u011Flar. **Not: 2 bo\u015Fluk veya 1 sekme bir girinti seviyesi olarak kabul edilir.**","number-style":{name:"Numara Stili",description:"S\u0131ral\u0131 liste g\xF6stergelerinde kullan\u0131lan numara stili"},"list-end-style":{name:"S\u0131ral\u0131 Liste G\xF6sterge Sonu Stili",description:"Bir s\u0131ral\u0131 liste g\xF6stergesinin biti\u015F karakteri"}},"paragraph-blank-lines":{name:"Paragraf Bo\u015F Sat\u0131rlar\u0131",description:"T\xFCm paragraflar\u0131n hem \xF6nce hem sonra tam olarak bir bo\u015F sat\u0131r\u0131 olmal\u0131d\u0131r."},"prevent-double-checklist-indicator-on-paste":{name:"Yap\u0131\u015Ft\u0131rmada \xC7ift Kontrol Listesi G\xF6stergesini \xD6nle",description:"Kurs\xF6r\xFCn dosyadaki sat\u0131rda bir kontrol listesi g\xF6stergesi varsa, yap\u0131\u015Ft\u0131r\u0131lacak metinden ba\u015Flang\u0131\xE7 kontrol listesi g\xF6stergesini kald\u0131r\u0131r"},"prevent-double-list-item-indicator-on-paste":{name:"Yap\u0131\u015Ft\u0131rmada \xC7ift Liste \xD6\u011Fesi G\xF6stergesini \xD6nle",description:"Kurs\xF6r\xFCn dosyadaki sat\u0131rda bir liste g\xF6stergesi varsa, yap\u0131\u015Ft\u0131r\u0131lacak metinden ba\u015Flang\u0131\xE7 listesi g\xF6stergesini kald\u0131r\u0131r"},"proper-ellipsis-on-paste":{name:"Yap\u0131\u015Ft\u0131rmada Uygun \xDC\xE7 Nokta",description:"Yap\u0131\u015Ft\u0131r\u0131lacak metinde aralar\u0131nda bo\u015Fluk olsa bile ard\u0131\u015F\u0131k \xFC\xE7 noktay\u0131, \xFC\xE7 nokta karakteriyle ile de\u011Fi\u015Ftirir"},"proper-ellipsis":{name:"Uygun \xDC\xE7 Nokta",description:"Ard\u0131\u015F\u0131k \xFC\xE7 tane noktay\u0131, \xFC\xE7 nokta karakteriyle de\u011Fi\u015Ftirir."},"quote-style":{name:"\xFC\xE7 nokta karakteriyle",description:"G\xF6vde i\xE7eri\u011Findeki al\u0131nt\u0131lar\u0131 belirtilen tek ve \xE7ift al\u0131nt\u0131 stillerine g\xFCnceller.","single-quote-enabled":{name:"`Tek Al\u0131nt\u0131 Stili` Kullan\u0131m\u0131",description:"Se\xE7ilen tek al\u0131nt\u0131 stilinin kullan\u0131laca\u011F\u0131n\u0131 belirtir."},"single-quote-style":{name:"Tek Al\u0131nt\u0131 Stili",description:"Kullan\u0131lacak tek al\u0131nt\u0131 stilidir."},"double-quote-enabled":{name:"`\xC7ift Al\u0131nt\u0131 Stili` Kullan\u0131m\u0131",description:"Se\xE7ilen \xE7ift al\u0131nt\u0131 stilinin kullan\u0131laca\u011F\u0131n\u0131 belirtir."},"double-quote-style":{name:"\xC7ift Al\u0131nt\u0131 Stili",description:"Kullan\u0131lacak \xE7ift al\u0131nt\u0131 stilidir."}},"re-index-footnotes":{name:"Dipnotlar\u0131 Yeniden \u0130ndeksle",description:"Dipnot anahtarlar\u0131n\u0131 ve dipnotlar\u0131, olu\u015Fum s\u0131ras\u0131na g\xF6re yeniden indeksler. **Not: Bir anahtar i\xE7in birden fazla dipnot varsa, bu kural \xE7al\u0131\u015Fmaz.**"},"remove-consecutive-list-markers":{name:"Ard\u0131\u015F\u0131k Liste \u0130\u015Faretlerini Kald\u0131r",description:"Ard\u0131\u015F\u0131k liste i\u015Faretlerini kald\u0131r\u0131r. Liste \xF6\u011Felerini kopyala-yap\u0131\u015Ft\u0131r yaparken kullan\u0131\u015Fl\u0131d\u0131r."},"remove-empty-lines-between-list-markers-and-checklists":{name:"Liste \u0130\u015Faretleri ve Kontrol Listeleri Aras\u0131ndaki Bo\u015F Sat\u0131rlar\u0131 Kald\u0131r",description:"Liste i\u015Faretleri ve kontrol listeleri aras\u0131nda bo\u015F sat\u0131r olmamal\u0131d\u0131r."},"remove-empty-list-markers":{name:"Bo\u015F Liste \u0130\u015Faret\xE7ilerini Kald\u0131r",description:"Bo\u015F liste i\u015Faret\xE7ilerini, yani i\xE7eriksiz liste \xF6\u011Felerini kald\u0131r\u0131r."},"remove-hyphenated-line-breaks":{name:"Tireli Sat\u0131r Sonlar\u0131n\u0131 Kald\u0131r",description:"Removes hyphenated line breaks. Useful when pasting text from textbooks."},"remove-hyphens-on-paste":{name:"Yap\u0131\u015Ft\u0131r\u0131rken Tireleri Kald\u0131r",description:"Yap\u0131\u015Ft\u0131r\u0131lacak metindeki tireleri kald\u0131r\u0131r"},"remove-leading-or-trailing-whitespace-on-paste":{name:"Yap\u0131\u015Ft\u0131rda \xD6ndeki veya Sondaki Bo\u015Fluklar\u0131 Kald\u0131r",description:"Yap\u0131\u015Ft\u0131r\u0131lacak metnin ba\u015F\u0131ndaki sekme olmayan bo\u015Fluklar\u0131 ve sonundaki t\xFCm bo\u015Fluklar\u0131 kald\u0131r\u0131r"},"remove-leftover-footnotes-from-quote-on-paste":{name:"Yap\u0131\u015Ft\u0131rmada Al\u0131nt\u0131dan Kalan Dipnotlar\u0131 Kald\u0131r",description:"Yap\u0131\u015Ft\u0131r\u0131lacak metinden herhangi bir kal\u0131nt\u0131 dipnot referanslar\u0131n\u0131 kald\u0131r\u0131r"},"remove-link-spacing":{name:"Link Aral\u0131\u011F\u0131n\u0131 Kald\u0131r",description:"Link metninin etraf\u0131ndaki bo\u015Fluklar\u0131 kald\u0131r\u0131r."},"remove-multiple-blank-lines-on-paste":{name:"Yap\u0131\u015Ft\u0131r\u0131rken Birden Fazla Bo\u015F Sat\u0131r\u0131 Kald\u0131r",description:"Metnin yap\u0131\u015Ft\u0131r\u0131lmas\u0131 i\xE7in birden \xE7ok bo\u015F sat\u0131r\u0131 tek bir bo\u015F sat\u0131ra s\u0131k\u0131\u015Ft\u0131r\u0131r"},"remove-multiple-spaces":{name:"Birden Fazla Bo\u015Flu\u011Fu Kald\u0131r",description:"\u0130ki veya daha fazla ard\u0131\u015F\u0131k bo\u015Flu\u011Fu kald\u0131r\u0131r. Sat\u0131r\u0131n ba\u015F\u0131ndaki ve sonundaki bo\u015Fluklar\u0131 g\xF6rmezden gelir. "},"remove-space-around-characters":{name:"Karakterler Etraf\u0131ndaki Bo\u015Flu\u011Fu Kald\u0131r",description:"Belirli karakterlerin bo\u015Fluklarla (tek bo\u015Fluk veya sekme) \xE7evrelenmemesini sa\u011Flar. **Not: Bu, baz\u0131 durumlarda indirim bi\xE7imiyle ilgili sorunlara neden olabilir.**","include-fullwidth-forms":{name:"Tam Geni\u015Flikte Formlar\u0131 Dahil Et",description:'<a href="https://en.wikipedia.org/wiki/Halfwidth_and_Fullwidth_Forms_(Unicode_block)">Tam Geni\u015Flikte Formlar Unicode blo\u011Funu</a> dahil eder'},"include-cjk-symbols-and-punctuation":{name:"CJK Sembol ve Noktalama \u0130\u015Faretlerini Dahil Et",description:'<a href="https://en.wikipedia.org/wiki/CJK_Symbols_and_Punctuation">CJK Sembol ve Noktalama Unicode blo\u011Funu</a> dahil eder'},"include-dashes":{name:"Tireleri Dahil Et",description:"En tire (\u2013) ve em tireyi (\u2014) dahil eder"},"other-symbols":{name:"Di\u011Fer Semboller",description:"Dahil edilecek di\u011Fer semboller"}},"remove-space-before-or-after-characters":{name:"Karakterlerden \xD6nce veya Sonra Bo\u015Flu\u011Fu Kald\u0131r",description:"Belirtilen karakterlerden \xF6nceki ve sonraki bo\u015Flu\u011Fu kald\u0131r\u0131r. **Not: bu durum baz\u0131 durumlarda markdown format\u0131nda sorunlara neden olabilir.**","characters-to-remove-space-before":{name:"\xD6nceki Bo\u015Flu\u011Fu Kald\u0131r\u0131lacak Karakterler",description:"Belirtilen karakterlerden \xF6nceki bo\u015Flu\u011Fu kald\u0131r\u0131r. **Not: karakter listesinde `{` veya `}` kullanmak, sahne arkas\u0131nda yoksayma s\xF6zdizimi kullan\u0131ld\u0131\u011F\u0131 i\xE7in dosyalar\u0131 beklenmedik \u015Fekilde etkiler.**"},"characters-to-remove-space-after":{name:"Sonraki Bo\u015Flu\u011Fu Kald\u0131r\u0131lacak Karakterler",description:"Belirtilen karakterlerden sonraki bo\u015Flu\u011Fu kald\u0131r\u0131r. **Not: karakter listesinde `{` veya `}` kullanmak, sahne arkas\u0131nda yoksayma s\xF6zdizimi kullan\u0131ld\u0131\u011F\u0131 i\xE7in dosyalar\u0131 beklenmedik \u015Fekilde etkiler.**"}},"remove-trailing-punctuation-in-heading":{name:"Ba\u015Fl\u0131klardaki Son Noktalama \u0130\u015Faretlerini Kald\u0131r",description:"Belirtilen noktalama i\u015Faretlerini ba\u015Fl\u0131klar\u0131n sonundan kald\u0131r\u0131r ve [HTML varl\u0131k referanslar\u0131n\u0131n](https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references) sonundaki noktal\u0131 virg\xFCl\xFC yoksayar.","punctuation-to-remove":{name:"Sondaki Noktalama",description:"Dosyadaki ba\u015Fl\u0131klardan kald\u0131r\u0131lacak noktalama i\u015Faretleri."}},"remove-yaml-keys":{name:"YAML Anahtarlar\u0131n\u0131 Kald\u0131r",description:"Belirtilen YAML anahtarlar\u0131n\u0131 kald\u0131r\u0131r","yaml-keys-to-remove":{name:"Kald\u0131r\u0131lacak YAML Anahtarlar\u0131",description:"YAML \xF6n maddesinden iki nokta \xFCst \xFCste ile veya olmadan kald\u0131r\u0131lacak YAML anahtarlar\u0131"}},"space-after-list-markers":{name:"Liste \u0130\u015Faretlerinden Sonra Bo\u015Fluk",description:"Liste i\u015Faretleri ve onay kutular\u0131ndan sonra tek bir bo\u015Fluk olmal\u0131d\u0131r"},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"\xC7ince, Japonca veya Korece ve \u0130ngilizce veya Say\u0131lar Aras\u0131nda Bo\u015Fluk",description:"\xC7ince, Japonca veya Korece ve \u0130ngilizce veya say\u0131lar aras\u0131nda tek bir bo\u015Fluk olmas\u0131 gerekti\u011Fini sa\u011Flar. Bu [kurallar\u0131](https://github.com/sparanoid/chinese-copywriting-guidelines) takip eder"},"strong-style":{name:"Kal\u0131n Stil",description:"Kal\u0131n stilin tutarl\u0131 oldu\u011Funu garanti eder.",style:{name:"Stil",description:"Kal\u0131n/yo\u011Fun i\xE7eri\u011Fi belirtmek i\xE7in kullan\u0131lan stil"}},"trailing-spaces":{name:"Sondaki bo\u015Fluklar",description:"Her sat\u0131r\u0131n sonundaki fazladan bo\u015Fluklar\u0131 kald\u0131r\u0131r.","twp-space-line-break":{name:"\u0130ki Bo\u015Fluklu Sat\u0131r Sonu",description:'Bir sat\u0131r sonunu takiben iki bo\u015Flu\u011Fu g\xF6z ard\u0131 et ("\u0130ki Bo\u015Fluk Kural\u0131").'}},"two-spaces-between-lines-with-content":{name:"\u0130\xE7eri\u011Fi Olan Sat\u0131rlar Aras\u0131nda \u0130ki Bo\u015Fluk",description:"\u0130\xE7eri\u011Fi devam eden sat\u0131rlar\u0131n sonuna paragraflar, blok al\u0131nt\u0131lar\u0131 ve liste \xF6\u011Feleri i\xE7in iki bo\u015Fluk eklenmesini sa\u011Flar"},"unordered-list-style":{name:"S\u0131ras\u0131z Liste Stili",description:"S\u0131ras\u0131z listelerin belirtilen stili takip etti\u011Finden emin olur.","list-style":{name:"Liste \xF6\u011Fesi stili",description:"S\u0131ras\u0131z listelerde kullan\u0131lacak liste \xF6\u011Fesi stili"}},"yaml-key-sort":{name:"YAML Anahtar S\u0131ralamas\u0131",description:"YAML anahtarlar\u0131n\u0131 belirtilen s\u0131ra ve \xF6nceli\u011Fe g\xF6re s\u0131ralar. **Not: bo\u015F sat\u0131rlar\u0131 da kald\u0131rabilir.**","yaml-key-priority-sort-order":{name:"YAML Anahtar \xD6ncelik S\u0131ralama D\xFCzeni",description:"Her sat\u0131rda bir tane olacak \u015Fekilde anahtarlar\u0131n hangi s\u0131rayla s\u0131ralanaca\u011F\u0131"},"priority-keys-at-start-of-yaml":{name:"\xD6ncelikli Anahtarlar YAML'\u0131n Ba\u015F\u0131nda",description:"YAML Anahtar \xD6ncelik S\u0131ralama D\xFCzeni, YAML \xF6n maddesinin ba\u015F\u0131nda yer al\u0131r"},"yaml-sort-order-for-other-keys":{name:"Di\u011Fer Anahtarlar \u0130\xE7in YAML S\u0131ralama D\xFCzeni",description:"YAML Anahtar \xD6ncelik S\u0131ralama D\xFCzeni metin alan\u0131nda bulunmayan anahtarlar\u0131 nas\u0131l s\u0131ralayaca\u011F\u0131"}},"yaml-timestamp":{name:"YAML Zaman Damgas\u0131",description:"Dosyan\u0131n son d\xFCzenlendi\u011Fi tarihi YAML \xF6n maddesinde takip eder. Tarihler dosya metadatas\u0131ndan al\u0131n\u0131r.","date-created":{name:"Olu\u015Fturma Tarihi",description:"Dosyan\u0131n olu\u015Fturma tarihini ekler"},"date-created-key":{name:"Olu\u015Fturma Tarihi Anahtar\u0131",description:"Olu\u015Fturma tarihi i\xE7in hangi YAML anahtar\u0131n\u0131 kullanaca\u011F\u0131"},"force-retention-of-create-value":{name:"Olu\u015Fturma Tarihi Anahtar De\u011Ferinin Korunmas\u0131n\u0131 Zorla",description:"Dosya metadatas\u0131 yerine YAML \xF6n maddesindeki tarihi yeniden kullan\u0131r, bu da dosya metadatas\u0131ndaki de\u011Fi\u015Fikliklerin de\u011Ferin farkl\u0131 bir de\u011Fere de\u011Fi\u015Fmesine neden olmas\u0131n\u0131 \xF6nler."},"date-modified":{name:"De\u011Fi\u015Ftirme Tarihi",description:"Dosyan\u0131n son de\u011Fi\u015Ftirildi\u011Fi tarihi ekler"},"date-modified-key":{name:"De\u011Fi\u015Ftirme Tarihi Anahtar\u0131",description:"De\u011Fi\u015Ftirme tarihi i\xE7in hangi YAML anahtar\u0131n\u0131 kullanaca\u011F\u0131"},format:{name:"Format",description:"Kullan\u0131lacak Zaman format\u0131 (bak\u0131n\u0131z [Moment format options](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))"}},"yaml-title-alias":{name:"YAML Ba\u015Fl\u0131k Takma Ad\u0131",description:"Dosyan\u0131n ba\u015Fl\u0131\u011F\u0131n\u0131 YAML \xF6n maddesinin takma adlar\u0131 b\xF6l\xFCm\xFCne ekler. Ba\u015Fl\u0131\u011F\u0131 ilk H1 veya dosya ad\u0131ndan al\u0131r.","preserve-existing-alias-section-style":{name:"Mevcut takma adlar b\xF6l\xFCm stilini koru",description:"Ayarlan\u0131rsa, `YAML takma adlar b\xF6l\xFCm\xFC stili` ayar\u0131 yaln\u0131zca yeni olu\u015Fturulan b\xF6l\xFCmlere uygulan\u0131r"},"keep-alias-that-matches-the-filename":{name:"Dosya ad\u0131na uyan takma ad\u0131 koru",description:"Bu t\xFCr takma adlar genellikle gereksizdir"},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"`linter-yaml-title-alias` YAML anahtar\u0131n\u0131 kullanarak eski dosya ad\u0131 ve ba\u015Fl\u0131k de\u011Fi\u015Fikliklerini takip et",description:"Ayarlan\u0131rsa, ilk H1 ba\u015Fl\u0131\u011F\u0131 de\u011Fi\u015Fti\u011Finde veya ilk H1 yoksa dosya ad\u0131 de\u011Fi\u015Fti\u011Finde, bu anahtarda saklanan eski takma ad, takma adlar dizisine yeni bir giri\u015F eklemek yerine yeni de\u011Ferle de\u011Fi\u015Ftirilir"}},"yaml-title":{name:"YAML Ba\u015Fl\u0131k",description:"Dosyan\u0131n ba\u015Fl\u0131\u011F\u0131n\u0131 YAML \xF6n maddesine ekler. Ba\u015Fl\u0131k se\xE7ilen moda g\xF6re al\u0131n\u0131r.","title-key":{name:"Ba\u015Fl\u0131k Anahtar\u0131",description:"Ba\u015Fl\u0131k i\xE7in hangi YAML anahtar\u0131n\u0131 kullanaca\u011F\u0131"},mode:{name:"Mod",description:"Ba\u015Fl\u0131\u011F\u0131 almak i\xE7in kullan\u0131lacak y\xF6ntem"}}},enums:{"Title Case":"Ba\u015F Harfleri B\xFCy\xFCk","ALL CAPS":"T\xDCM\xDC B\xDCY\xDCK HARF","First letter":"\u0130lk Harf",".":".",")":")",ERROR:"hata",TRACE:"i\u015Faret",DEBUG:"hata ay\u0131klama",INFO:"bilgi",WARN:"uyar\u0131",SILENT:"sessiz",ascending:"artan",lazy:"tembel",Nothing:"Hi\xE7biri","Remove hashtag":"Hashtagi Kald\u0131r","Remove whole tag":"T\xFCm Etiketi Kald\u0131r",asterisk:"y\u0131ld\u0131z",underscore:"alt \xE7izgi",consistent:"tutarl\u0131","-":"-","*":"*","+":"+",space:"bo\u015Fluk","no space":"bo\u015Fluk yok",None:"Yok","Ascending Alphabetical":"Artan Alfabetik","Descending Alphabetical":"Azalan Alfabetik","multi-line":"\xE7oklu-sat\u0131r","single-line":"tek-sat\u0131r","single string to single-line":"tek dizeden tek sat\u0131ra","single string to multi-line":"tek dizeden \xE7ok sat\u0131ra","single string comma delimited":"virg\xFClle ayr\u0131lm\u0131\u015F tek dize","single string space delimited":"bo\u015Flukla ayr\u0131lm\u0131\u015F tek dize","single-line space delimited":"bo\u015Flukla ayr\u0131lm\u0131\u015F tek sat\u0131r","first-h1":"\u0130lk H1","first-h1-or-filename-if-h1-missing":"\u0130lk H1 veya H1 Eksikse Dosya Ad\u0131",filename:"Dosya Ad\u0131","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var Zd={};var Jd={commands:{"lint-file":{name:"\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6","error-message":"\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6\u65F6\u51FA\u9519"},"lint-file-unless-ignored":{name:"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\uFF08\u9664\u4E86\u88AB\u5FFD\u7565\u7684\u6587\u4EF6\uFF09"},"lint-all-files":{name:"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6","error-message":"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\u65F6\u51FA\u9519","success-message":"\u5DF2\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6","errors-message-singular":"\u5DF2\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\uFF0C\u5176\u4E2D\u6709 1 \u4E2A\u9519\u8BEF","errors-message-plural":"\u5DF2\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\uFF0C\u5176\u4E2D\u6709 {NUM} \u4E2A\u9519\u8BEF","start-message":"\u8FD9\u5C06\u6539\u52A8\u6240\u6709\u6587\u4EF6\uFF0C\u5305\u62EC\u5B50\u6587\u4EF6\u5939\u4E2D\u7684\u6587\u4EF6\uFF0C\u53EF\u80FD\u4F1A\u5F15\u5165\u9519\u8BEF","submit-button-text":"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6","submit-button-notice-text":"\u6B63\u5728\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6..."},"lint-all-files-in-folder":{name:"\u683C\u5F0F\u5316\u6587\u4EF6\u5939\u4E2D\u7684\u6240\u6709\u6587\u4EF6","start-message":"\u8FD9\u5C06\u6539\u52A8\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684\u6240\u6709\u6587\u4EF6\uFF0C\u5305\u62EC\u5B50\u6587\u4EF6\u5939\u4E2D\u7684\u6587\u4EF6\uFF0C\u53EF\u80FD\u4F1A\u5F15\u5165\u9519\u8BEF","submit-button-text":"\u683C\u5F0F\u5316\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684\u6240\u6709\u6587\u4EF6","submit-button-notice-text":"\u6B63\u5728\u683C\u5F0F\u5316\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684\u6240\u6709\u6587\u4EF6...","error-message":"\u683C\u5F0F\u5316\u6587\u4EF6\u5939\u4E2D\u7684\u6240\u6709\u6587\u4EF6\u65F6\u51FA\u9519","success-message":"\u5DF2\u683C\u5F0F\u5316\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684\u6240\u6709 {NUM} \u4E2A\u6587\u4EF6","message-singular":"\u5DF2\u683C\u5F0F\u5316\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684\u6240\u6709 {NUM} \u4E2A\u6587\u4EF6\uFF0C\u5176\u4E2D\u6709 1 \u4E2A\u9519\u8BEF","message-plural":"\u5DF2\u683C\u5F0F\u5316\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684 {FILE_COUNT} \u4E2A\u6587\u4EF6\uFF0C\u5176\u4E2D\u6709 {ERROR_COUNT} \u4E2A\u9519\u8BEF."},"paste-as-plain-text":{name:"\u7C98\u8D34\u4E3A\u7EAF\u6587\u672C\u4E14\u4E0D\u63D0\u9192"},"lint-file-pop-up-menu-text":{name:"\u683C\u5F0F\u5316\u6587\u4EF6"},"lint-folder-pop-up-menu-text":{name:"\u683C\u5F0F\u5316\u6587\u4EF6\u5939"}},logs:{"plugin-load":"\u6B63\u5728\u52A0\u8F7D\u63D2\u4EF6","plugin-unload":"\u6B63\u5728\u5378\u8F7D\u63D2\u4EF6","folder-lint":"\u6B63\u5728\u683C\u5F0F\u5316\u6587\u4EF6\u5939","linter-run":"\u6B63\u5728\u8FD0\u884C Linter","paste-link-warning":"\u4E2D\u6B62\u7C98\u8D34\u683C\u5F0F\u5316 \uFF0C\u56E0\u4E3A\u526A\u8D34\u677F\u5185\u5BB9\u662F\u4E00\u4E2A\u94FE\u63A5\uFF0C\u8FD9\u6837\u505A\u5C06\u907F\u514D\u4E0E\u5176\u4ED6\u4FEE\u6539\u7C98\u8D34\u884C\u4E3A\u7684\u63D2\u4EF6\u53D1\u751F\u51B2\u7A81","see-console":"\u8BF7\u67E5\u770B\u63A7\u5236\u53F0\u4EE5\u83B7\u53D6\u66F4\u591A\u4FE1\u606F","unknown-error":"\u683C\u5F0F\u5316\u8FC7\u7A0B\u53D1\u751F\u672A\u77E5\u9519\u8BEF","moment-locale-not-found":"\u5C1D\u8BD5\u5C06 Moment.js \u7684\u9ED8\u8BA4\u5730\u533A\u8BED\u8A00\u5207\u6362\u5230 {MOMENT_LOCALE}, \u5B9E\u9645\u5207\u6362\u5230 {CURRENT_LOCALE}","file-change-lint-message-start":"\u683C\u5F0F\u5316\u5DF2\u5B8C\u6210","pre-rules":"\u6BD4\u6B63\u5E38\u89C4\u5219\u4F18\u5148\u7EA7\u66F4\u9AD8\u7684\u89C4\u5219","post-rules":"\u6BD4\u6B63\u5E38\u89C4\u5219\u4F18\u5148\u7EA7\u66F4\u4F4E\u7684\u89C4\u5219","rule-running":"\u6B63\u5728\u8FD0\u884C\u89C4\u5219","custom-regex":"\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u89C4\u5219","running-custom-regex":"\u6B63\u5728\u8FD0\u884C\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u89C4\u5219","running-custom-lint-command":"\u6B63\u5728\u8FD0\u884C\u81EA\u5B9A\u4E49\u683C\u5F0F\u5316\u547D\u4EE4","custom-lint-duplicate-warning":'\u4F60\u4E0D\u80FD\u8FD0\u884C\u540C\u4E00\u4E2A\u81EA\u5B9A\u4E49\u89C4\u5219 ("{COMMAND_NAME}") \u4E24\u6B21',"custom-lint-error-message":"\u81EA\u5B9A\u4E49\u683C\u5F0F\u5316\u547D\u4EE4","disabled-text":"\u5DF2\u7981\u7528","run-rule-text":"\u8FD0\u884C\u4E2D","timing-key-not-found":"\u8BA1\u65F6\u952E '{TIMING_KEY}' \u5728\u8BA1\u65F6\u4FE1\u606F\u5217\u8868\u4E2D\u4E0D\u5B58\u5728\uFF0C\u5DF2\u5FFD\u7565","milliseconds-abbreviation":"\u6BEB\u79D2","invalid-date-format-error":"\u65E0\u6CD5\u89E3\u6790\u6216\u786E\u5B9A'{FILE_NAME}'\u4E2D\u7684\u521B\u5EFA\u65E5\u671F'{DATE}'\u7684\u683C\u5F0F\uFF0C\u521B\u5EFA\u65E5\u671F\u672A\u8FDB\u884C\u4FEE\u6539","invalid-delimiter-error-message":"\u5206\u9694\u7B26\u53EA\u80FD\u4E3A\u5355\u4E2A\u5B57\u7B26","missing-footnote-error-message":"\u811A\u6CE8 '{FOOTNOTE}' \u6CA1\u6709\u5BF9\u5E94\u7684\u5F15\u7528\uFF0C\u65E0\u6CD5\u5904\u7406\u3002\u8BF7\u786E\u4FDD\u6240\u6709\u811A\u6CE8\u90FD\u6709\u76F8\u5E94\u7684\u5F15\u7528\u3002","too-many-footnotes-error-message":"\u811A\u6CE8\u7F16\u53F7 '{FOOTNOTE_KEY}' \u6709\u8D85\u8FC71\u4E2A\u811A\u6CE8\u5728\u4F7F\u7528\uFF0C\u8BF7\u4FEE\u6539\u811A\u6CE8\u4F7F\u5F97\u4E00\u4E2A\u811A\u6CE8\u7F16\u53F7\u5BF9\u5E94\u4E00\u4E2A\u811A\u6CE8","wrapper-yaml-error":"yaml\u51FA\u73B0\u9519\u8BEF: {ERROR_MESSAGE}","wrapper-unknown-error":"\u672A\u77E5\u9519\u8BEF: {ERROR_MESSAGE}"},"notice-text":{"empty-clipboard":"\u526A\u8D34\u677F\u4E3A\u7A7A","characters-added":"\u4E2A\u5B57\u7B26\u88AB\u6DFB\u52A0","characters-removed":"\u4E2A\u5B57\u7B26\u88AB\u79FB\u9664"},"all-rules-option":"\u5168\u90E8","linter-title":"Linter","empty-search-results-text":"\u6CA1\u6709\u5339\u914D\u7684\u8BBE\u7F6E\u9879","warning-text":"\u8B66\u544A","file-backup-text":"\u8BF7\u786E\u4FDD\u4F60\u5DF2\u5907\u4EFD\u6587\u4EF6",tabs:{names:{general:"\u57FA\u7840",custom:"\u81EA\u5B9A\u4E49",yaml:"YAML",heading:"\u6807\u9898",content:"\u5185\u5BB9",footnote:"\u811A\u6CE8",spacing:"\u7A7A\u884C",paste:"\u7C98\u8D34",debug:"Debug"},"default-search-bar-text":"\u641C\u7D22\u8BBE\u7F6E\u9879",general:{"lint-on-save":{name:"\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u6587\u4EF6",description:"\u624B\u52A8\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u6587\u4EF6\uFF08\u5F53\u6309 `Ctrl + S` \u65F6\u6216\u5728 vim \u6A21\u5F0F\u4E2D\u4F7F\u7528 `:w` \u65F6\uFF09"},"display-message":{name:"\u683C\u5F0F\u5316\u540E\u663E\u793A\u6D88\u606F",description:"\u683C\u5F0F\u5316\u540E\u663E\u793A\u4FEE\u6539\u4E86\u591A\u5C11\u5B57\u7B26"},"lint-on-file-change":{name:"\u6587\u4EF6\u4FEE\u6539\u65F6\u683C\u5F0F\u5316",description:"\u5F53\u6587\u4EF6\u5173\u95ED\u6216\u662F\u5207\u6362\u5230\u65B0\u6587\u4EF6\u65F6\uFF0C\u683C\u5F0F\u5316\u4E4B\u524D\u7684\u6587\u4EF6"},"display-lint-on-file-change-message":{name:"\u63D0\u9192\u6587\u4EF6\u4FEE\u6539\u65F6\u683C\u5F0F\u5316",description:"\u5F53`\u6587\u4EF6\u4FEE\u6539\u65F6\u683C\u5F0F\u5316`\u89E6\u53D1\u65F6\uFF0C\u5F39\u51FA\u4E00\u6761\u63D0\u793A\u4FE1\u606F"},"folders-to-ignore":{name:"\u5FFD\u7565\u6587\u4EF6\u5939",description:"\u9700\u8981\u5FFD\u7565\u7684\u6587\u4EF6\u5939\uFF08\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\u6216\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u65F6\u751F\u6548\uFF09\uFF0C\u6BCF\u884C\u8F93\u5165\u4E00\u4E2A\u6587\u4EF6\u5939\u8DEF\u5F84"},"override-locale":{name:"\u8986\u76D6\u9ED8\u8BA4\u5730\u533A\u8BED\u8A00",description:"\u4F7F\u7528\u4E0D\u540C\u4E8E\u9ED8\u8BA4\u5730\u533A\u8BED\u8A00\u65F6\u9700\u8981\u8BBE\u7F6E\u6B64\u9879"},"same-as-system-locale":"\u9ED8\u8BA4 ({SYS_LOCALE}) ","yaml-aliases-section-style":{name:"YAML aliases \u6837\u5F0F",description:"YAML aliases \u6837\u5F0F"},"yaml-tags-section-style":{name:"YAML tags \u6837\u5F0F",description:"YAML tags \u6837\u5F0F"},"default-escape-character":{name:"\u9ED8\u8BA4\u8F6C\u4E49\u5B57\u7B26",description:"\u5F53\u5355\u5F15\u53F7\u6216\u53CC\u5F15\u53F7\u4E0D\u5B58\u5728\u65F6\u7528\u4E8E\u8F6C\u4E49 YAML \u503C\u7684\u9ED8\u8BA4\u5B57\u7B26"},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"\u5F53\u4F7F\u7528 YAML \u591A\u884C\u6570\u7EC4\u65F6\u5220\u9664\u4E0D\u5FC5\u8981\u7684\u8F6C\u4E49\u5B57\u7B26",description:"YAML \u591A\u884C\u6570\u7EC4\u7684\u8F6C\u4E49\u5B57\u7B26\u548C YAML \u5355\u884C\u6570\u7EC4\u4E0D\u540C\uFF0C\u56E0\u6B64\u5728\u4F7F\u7528\u591A\u884C\u6570\u7EC4\u65F6\uFF0C\u5220\u9664\u4E0D\u5FC5\u8981\u7684\u8F6C\u4E49\u5B57\u7B26"},"number-of-dollar-signs-to-indicate-math-block":{name:"\u6307\u793A Latex \u5757\u7684 $ \u7B26\u53F7\u6570\u91CF",description:"\u5C06 Latex \u5185\u5BB9\u89C6\u4E3A Latex \u5757\u800C\u4E0D\u662F\u884C\u5185 Latex \u7684 $ \u7B26\u53F7\u7684\u6570\u91CF"}},debug:{"log-level":{name:"\u65E5\u5FD7\u7EA7\u522B",description:"\u5141\u8BB8\u6253\u5370\u7684\u65E5\u5FD7\u7C7B\u578B\uFF0C\u9ED8\u8BA4\u662F ERROR"},"linter-config":{name:"\u683C\u5F0F\u5316\u914D\u7F6E",description:"\u5728\u8BBE\u7F6E\u9875\u9762\u52A0\u8F7D\u65F6\uFF0CLinter \u4E2D data.json \u7684\u5185\u5BB9"},"log-collection":{name:"\u5728\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u548C\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6\u65F6\u6536\u96C6\u65E5\u5FD7",description:"\u5728\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u548C\u683C\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6\u65F6\u6536\u96C6\u65E5\u5FD7\u3002\u8FD9\u4E9B\u65E5\u5FD7\u6709\u52A9\u4E8E\u8C03\u8BD5\u548C\u521B\u5EFA\u9519\u8BEF\u62A5\u544A"},"linter-logs":{name:"Linter \u65E5\u5FD7",description:"\u5982\u679C\u5F00\u542F\uFF0C\u5219\u663E\u793A\u6700\u540E\u4E00\u6B21\u683C\u5F0F\u5316\u65F6\u4FDD\u5B58\u6216\u8005\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6\u65F6\u751F\u6210\u7684\u65E5\u5FD7"}}},options:{"custom-command":{name:"\u81EA\u5B9A\u4E49\u547D\u4EE4",description:"\u81EA\u5B9A\u4E49\u547D\u4EE4\u662F\u5728 Linter \u5B8C\u6210\u683C\u5F0F\u5316\u540E\u8FD0\u884C\u7684 Obsidian \u547D\u4EE4\u3002\u8FD9\u610F\u5473\u7740 Obsidian \u547D\u4EE4\u4F1A\u5728 YAML \u65F6\u95F4\u6233\u4FEE\u6539\u4E4B\u540E\u8FD0\u884C\uFF0C\u56E0\u6B64\u5B83\u4EEC\u53EF\u80FD\u4F1A\u5BFC\u81F4\u5728\u4E0B\u6B21\u8FD0\u884C Linter \u65F6\u89E6\u53D1 YAML \u65F6\u95F4\u6233\u4FEE\u6539\u3002\u4E00\u4E2A Obsidian \u547D\u4EE4\u53EA\u80FD\u9009\u62E9\u4E00\u6B21\u3002**_\u6CE8\u610F\uFF0C\u8FD9\u76EE\u524D\u4EC5\u9002\u7528\u4E8E\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6_**",warning:"\u9009\u62E9\u547D\u4EE4\u65F6\uFF0C\u8BF7\u786E\u4FDD\u4F7F\u7528\u9F20\u6807\u6216\u6309\u56DE\u8F66\u952E\u9009\u62E9\u8BE5\u9009\u9879\uFF0C\u5176\u4ED6\u9009\u62E9\u65B9\u6CD5\u53EF\u80FD\u4E0D\u8D77\u4F5C\u7528\u3002\u53EA\u6709 Obsidian \u547D\u4EE4\u6216\u7A7A\u5B57\u7B26\u4E32\u4F1A\u88AB\u4FDD\u5B58","add-input-button-text":"\u6DFB\u52A0\u65B0\u547D\u4EE4","command-search-placeholder-text":"Obsidian \u547D\u4EE4","move-up-tooltip":"\u4E0A\u79FB","move-down-tooltip":"\u4E0B\u79FB","delete-tooltip":"\u5220\u9664"},"custom-replace":{name:"\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u66FF\u6362",description:"\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u66FF\u6362\u53EF\u5C06\u4EFB\u610F\u7684\u6B63\u5219\u5339\u914D\u5185\u5BB9\u66FF\u6362\u4E3A\u6307\u5B9A\u503C\u3002\u67E5\u627E\u503C\u548C\u66FF\u6362\u503C\u5FC5\u987B\u662F\u6709\u6548\u7684\u6B63\u5219\u8868\u8FBE\u5F0F",warning:"\u5982\u679C\u60A8\u4E0D\u77E5\u9053\u6B63\u5219\u8868\u8FBE\u5F0F\u662F\u4EC0\u4E48\uFF0C\u8BF7\u8C28\u614E\u4F7F\u7528\u3002\u53E6\u5916\uFF0C\u8BF7\u786E\u4FDD\u60A8\u4E0D\u8981\u5728 iOS \u79FB\u52A8\u8BBE\u5907\u4E0A\u4F7F\u7528\u540E\u884C\u65AD\u8A00\uFF0C\u7531\u4E8E\u8BE5\u5E73\u53F0\u4E0D\u652F\u6301\uFF0C\u4F1A\u5BFC\u81F4\u683C\u5F0F\u5316\u5931\u8D25","add-input-button-text":"\u6DFB\u52A0\u65B0\u7684\u6B63\u5219\u66FF\u6362\u89C4\u5219","regex-to-find-placeholder-text":"\u67E5\u627E\u6B63\u5219\u5F0F","flags-placeholder-text":"\u53C2\u6570","regex-to-replace-placeholder-text":"\u66FF\u6362\u6B63\u5219\u5F0F","label-placeholder-text":"\u7B80\u79F0","move-up-tooltip":"\u4E0A\u79FB","move-down-tooltip":"\u4E0B\u79FB","delete-tooltip":"\u5220\u9664"}},rules:{"auto-correct-common-misspellings":{name:"\u81EA\u52A8\u66F4\u6B63\u5E38\u89C1\u7684\u62FC\u5199\u9519\u8BEF",description:"\u901A\u8FC7\u5E38\u89C1\u62FC\u5199\u9519\u8BEF\u5B57\u5178\u81EA\u52A8\u5C06\u9519\u8BEF\u62FC\u5199\u66F4\u6B63\u4E3A\u6B63\u786E\u62FC\u5199\u3002\u6709\u5173\u81EA\u52A8\u66F4\u6B63\u5355\u8BCD\u7684\u5B8C\u6574\u5217\u8868\uFF0C\u8BF7\u53C2\u9605 [auto-correct map](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts)","ignore-words":{name:"\u5FFD\u7565\u5355\u8BCD",description:"\u4EE5\u9017\u53F7\u5206\u9694\u7684\u5C0F\u5199\u5355\u8BCD\u5217\u8868\uFF0C\u5728\u81EA\u52A8\u66F4\u6B63\u65F6\u4F1A\u5FFD\u7565"}},"add-blockquote-indentation-on-paste":{name:"\u6DFB\u52A0\u5F15\u7528\u5757\u7F29\u8FDB",description:"\u7C98\u8D34\u65F6\uFF0C\u5982\u679C\u5149\u6807\u4F4D\u4E8E\u5F15\u7528\u884C\u6216\u6807\u6CE8\u884C\uFF0C\u5219\u5C06\u5F15\u7528\u6DFB\u52A0\u5230\u9664\u7B2C\u4E00\u884C\u4EE5\u5916\u7684\u6240\u6709\u884C"},"blockquote-style":{name:"\u5F15\u7528\u5757\u6837\u5F0F",description:"\u786E\u4FDD\u5F15\u7528\u5757\u6837\u5F0F\u4E00\u81F4",style:{name:"\u6837\u5F0F",description:"\u5F15\u7528\u5757\u6807\u5FD7\u5B57\u7B26\u7684\u6837\u5F0F"}},"capitalize-headings":{name:"\u5927\u5199\u6807\u9898",description:"\u6807\u9898\u4F1A\u5728\u683C\u5F0F\u5316\u540E\u5927\u5199",style:{name:"\u6837\u5F0F",description:"\u5927\u5199\u7684\u65B9\u5F0F"},"ignore-case-words":{name:"\u5FFD\u7565\u5927\u5199\u5355\u8BCD",description:"\u5728\u6837\u5F0F\u8BBE\u4E3A\u6BCF\u8BCD\u9996\u5B57\u6BCD\u5927\u5199\u65F6\uFF0C\u4EC5\u683C\u5F0F\u5316\u5168\u5C0F\u5199\u7684\u5355\u8BCD"},"ignore-words":{name:"\u5FFD\u7565\u5355\u8BCD",description:"\u4E0D\u683C\u5F0F\u5316\u7684\u5355\u8BCD\uFF0C\u4EE5\u9017\u53F7\u5206\u9694"},"lowercase-words":{name:"\u5C0F\u5199\u5355\u8BCD",description:"\u4FDD\u6301\u5C0F\u5199\u7684\u5355\u8BCD\uFF0C\u4EE5\u9017\u53F7\u5206\u9694"}},"compact-yaml":{name:"\u7CBE\u7B80 YAML",description:"\u79FB\u9664 YAML Front-matter \u5F00\u5934\u7ED3\u5C3E\u7684\u7A7A\u884C","inner-new-lines":{name:"\u5185\u90E8\u7A7A\u884C",description:"\u79FB\u9664 YAML Front-matter \u5185\u90E8\u7684\u7A7A\u884C"}},"consecutive-blank-lines":{name:"\u8FDE\u7EED\u7A7A\u884C",description:"\u6700\u591A\u5141\u8BB8\u4E00\u4E2A\u8FDE\u7EED\u7A7A\u884C"},"convert-bullet-list-markers":{name:"\u8F6C\u6362\u65E0\u5E8F\u5217\u8868\u6807\u5FD7",description:"\u5C06\u5176\u4ED6\u683C\u5F0F\u65E0\u5E8F\u5217\u8868\u6807\u5FD7\u8F6C\u6362\u4E3A Markdown \u683C\u5F0F\u65E0\u5E8F\u5217\u8868\u6807\u5FD7"},"convert-spaces-to-tabs":{name:"\u8F6C\u6362\u7A7A\u683C\u4E3A\u5236\u8868\u7B26",description:"\u5C06\u524D\u5BFC\u7A7A\u683C\u8F6C\u6362\u4E3A\u5236\u8868\u7B26",tabsize:{name:"\u5236\u8868\u7B26\u5BBD\u5EA6",description:"\u5236\u8868\u7B26\u5BF9\u5E94\u7684\u7A7A\u683C\u5BBD\u5EA6"}},"default-language-for-code-fences":{name:"\u4EE3\u7801\u5757\u9ED8\u8BA4\u8BED\u8A00",description:"\u4E3A\u6CA1\u6709\u6307\u5B9A\u8BED\u8A00\u7684\u4EE3\u7801\u5757\u6DFB\u52A0\u9ED8\u8BA4\u8BED\u8A00\u3002","default-language":{name:"\u7F16\u7A0B\u8BED\u8A00",description:"\u7559\u7A7A\u4E0D\u8FDB\u884C\u4EFB\u4F55\u64CD\u4F5C\u3002\u53EF\u4EE5\u5728[\u8FD9\u91CC](https://prismjs.com/#supported-languages)\u627E\u5230\u8BED\u8A00\u6807\u7B7E\u3002"}},"emphasis-style":{name:"\u7A81\u51FA\u6837\u5F0F",description:"\u4FDD\u6301\u7A81\u51FA\u6837\u5F0F\u4E00\u81F4\u6027",style:{name:"\u6837\u5F0F",description:"\u7528\u4E8E\u8868\u793A\u7A81\u51FA\u5185\u5BB9\u7684\u6837\u5F0F"}},"empty-line-around-blockquotes":{name:"\u5F15\u7528\u5757\u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDD\u5F15\u7528\u5757\u524D\u540E\u6709\u7A7A\u884C\uFF0C\u9664\u975E\u5B83\u5728\u6587\u6863\u7684\u5F00\u5934\u6216\u7ED3\u5C3E\u3002**\u6CE8\u610F\uFF0C\u8FD9\u91CC\u5D4C\u5957\u5F15\u7528\u5757\u4E5F\u4F1A\u6709\u5BF9\u5E94\u7684\u7A7A\u884C**"},"empty-line-around-code-fences":{name:"\u4EE3\u7801\u5757\u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDD\u4EE3\u7801\u5757\u524D\u540E\u6709\u7A7A\u884C\uFF0C\u9664\u975E\u5B83\u5728\u6587\u6863\u7684\u5F00\u5934\u6216\u7ED3\u5C3E"},"empty-line-around-math-blocks":{name:"Latex \u5757\u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDDLatex \u5757\u524D\u540E\u6709\u7A7A\u884C\u3002\u4F7F\u7528**\u6307\u793A Latex \u5757\u7684 `$` \u7B26\u53F7\u6570\u91CF**\u6765\u786E\u5B9A\u5355\u884C Latex \u662F\u5426\u88AB\u8BA4\u5B9A\u4E3A Latex \u5757"},"empty-line-around-tables":{name:"\u8868\u683C\u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDD\u8868\u683C\u524D\u540E\u6709\u7A7A\u884C\uFF0C\u9664\u975E\u5B83\u5728\u6587\u6863\u7684\u5F00\u5934\u6216\u7ED3\u5C3E"},"escape-yaml-special-characters":{name:"\u8F6C\u4E49 YAML \u7279\u6B8A\u5B57\u7B26",description:`\u8F6C\u4E49 YAML \u4E2D\u7684\u5192\u53F7(: )\uFF0C\u5355\u5F15\u53F7 (') \u548C\u53CC\u5F15\u53F7 (")`,"try-to-escape-single-line-arrays":{name:"\u5C1D\u8BD5\u8F6C\u4E49\u5355\u884C\u6570\u7EC4",description:"\u5C1D\u8BD5\u8F6C\u4E49\u6570\u7EC4\u503C\uFF0C\u5047\u8BBE\u6570\u7EC4\u4EE5`[`\u5F00\u5934\uFF0C`]`\u7ED3\u5C3E\uFF0C\u5E76\u4E14\u7531`,`\u5206\u9694"}},"file-name-heading":{name:"\u6587\u4EF6\u540D\u4F5C\u4E3A\u6807\u9898",description:"\u5982\u679C\u6CA1\u6709 H1 \u6807\u9898\uFF0C\u5219\u63D2\u5165\u6587\u4EF6\u540D\u4F5C\u4E3A H1 \u6807\u9898"},"footnote-after-punctuation":{name:"\u811A\u6CE8\u5728\u6807\u70B9\u7B26\u53F7\u540E",description:"\u786E\u4FDD\u811A\u6CE8\u5F15\u7528\u7F6E\u4E8E\u6807\u70B9\u7B26\u53F7\u4E4B\u540E\uFF0C\u800C\u4E0D\u662F\u4E4B\u524D"},"force-yaml-escape":{name:"\u5F3A\u5236 YAML \u8F6C\u4E49",description:"\u8F6C\u4E49\u6307\u5B9A YAML \u952E\u7684\u503C","force-yaml-escape-keys":{name:"\u8981\u5F3A\u5236\u8F6C\u79FB\u7684 YAML \u952E",description:"\u5982\u679C\u672A\u8F6C\u4E49\uFF0C\u5219\u4F7F\u7528 YAML \u8F6C\u4E49\u5B57\u7B26\u5BF9\u6307\u5B9A YAML \u952E\u8FDB\u884C\u8F6C\u4E49\uFF0C\u6BCF\u4E2A\u952E\u4E00\u884C\u3002 \u4E0D\u8981\u5BF9 YAML \u6570\u7EC4\u4F7F\u7528"}},"format-tags-in-yaml":{name:"\u683C\u5F0F\u5316 YAML \u4E2D\u7684 tags",description:"\u628A YAML Front-matter \u4E2D tag \u7684\u4E95\u53F7\u5220\u9664\uFF0C\u56E0\u4E3A\u4E95\u53F7\u4F1A\u4F7F tag \u65E0\u6548"},"format-yaml-array":{name:"\u683C\u5F0F\u5316 YAML \u6570\u7EC4",description:"\u5141\u8BB8\u5C06\u5E38\u89C4 YAML \u6570\u7EC4\u683C\u5F0F\u5316\u4E3A\u591A\u884C\u6216\u5355\u884C\uFF0C\u5E76\u5141\u8BB8\u90E8\u5206\u6570\u7EC4(`tags`, `aliases`) \u4FDD\u7559 Obsidian \u539F\u6709\u7684 YAML \u683C\u5F0F\u3002\u8BF7\u6CE8\u610F\uFF0C\u5355\u5B57\u7B26\u4E32\u8F6C\u6362\u4E3A\u5355\u884C\uFF0C\u5982\u679C\u5B58\u5728\u591A\u4E2A\u6761\u76EE\uFF0C\u5219\u4F1A\u53D8\u4E3A\u5355\u884C\u6570\u7EC4\u3002\u5BF9\u4E8E\u5355\u5B57\u7B26\u4E32\u8F6C\u6362\u4E3A\u591A\u884C\uFF0C\u60C5\u51B5\u4E5F\u662F\u5982\u6B64\uFF0C\u53EA\u662F\u5B83\u53D8\u6210\u4E86\u591A\u884C\u6570\u7EC4","alias-key":{name:"\u683C\u5F0F\u5316 YAML aliases",description:"\u6253\u5F00 YAML aliases \u90E8\u5206\u7684\u683C\u5F0F\u8BBE\u7F6E\u3002\u4E0D\u5E94\u4E0E\u89C4\u5219`YAML \u6807\u9898\u522B\u540D`\u540C\u65F6\u542F\u7528\uFF0C\u56E0\u4E3A\u5B83\u4EEC\u53EF\u80FD\u4E0D\u4F1A\u5F88\u597D\u5730\u534F\u540C\u5DE5\u4F5C\uFF0C\u6216\u8005\u5B83\u4EEC\u53EF\u80FD\u6709\u4E0D\u540C\u7684\u683C\u5F0F\u6837\u5F0F\u9009\u62E9\uFF0C\u4ECE\u800C\u5BFC\u81F4\u610F\u5916\u7ED3\u679C"},"tag-key":{name:"\u683C\u5F0F\u5316 YAML tags",description:"\u6253\u5F00 YAML tags \u90E8\u5206\u7684\u683C\u5F0F\u8BBE\u7F6E"},"default-array-style":{name:"\u9ED8\u8BA4\u7684 YAML \u6570\u7EC4\u683C\u5F0F",description:"\u9664\u4E86 tags, aliases \u6216\u5C06\u952E\u503C\u5F3A\u5236\u4E3A\u5355\u884C\u6570\u7EC4\u548C\u5C06\u952E\u503C\u5F3A\u5236\u4E3A\u591A\u884C\u6570\u7EC4\u4E4B\u5916\uFF0C\u5176\u4ED6\u4E3A\u5E38\u89C4 YAML \u6570\u7EC4\u7684\u6837\u5F0F"},"default-array-keys":{name:"\u683C\u5F0F\u5316 YAML \u6570\u7EC4",description:"\u5BF9 YAML \u6570\u7EC4\u8FDB\u884C\u683C\u5F0F\u5316"},"force-single-line-array-style":{name:"\u5F3A\u5236\u8F6C\u4E3A\u5355\u884C\u6570\u7EC4",description:"\u5F3A\u5236\u5C06\u6307\u5B9A\u952E\u7684 YAML \u6570\u7EC4\u8F6C\u4E3A\u5355\u884C\u6570\u7EC4\uFF0C\u6309\u884C\u5206\u9694\uFF08\u7559\u7A7A\u4EE5\u7981\u7528\u6B64\u9009\u9879\uFF09"},"force-multi-line-array-style":{name:"\u5F3A\u5236\u8F6C\u4E3A\u591A\u884C\u6570\u7EC4",description:"\u5F3A\u5236\u5C06\u6307\u5B9A\u952E\u7684 YAML \u6570\u7EC4\u8F6C\u4E3A\u591A\u884C\u6570\u7EC4\uFF0C\u6309\u884C\u5206\u9694\uFF08\u7559\u7A7A\u4EE5\u7981\u7528\u6B64\u9009\u9879\uFF09"}},"header-increment":{name:"\u6807\u9898\u7EA7\u522B\u9012\u589E",description:"\u6807\u9898\u4E00\u6B21\u4EC5\u9012\u589E\u4E00\u4E2A\u7EA7\u522B","start-at-h2":{name:"\u4ECE H2 \u6807\u9898\u5F00\u59CB\u9012\u589E",description:"\u4F7F H2 \u6807\u9898\u6210\u4E3A\u6587\u4EF6\u4E2D\u7684\u6700\u5C0F\u6807\u9898\u7EA7\u522B\uFF0C\u5176\u4ED6\u7EA7\u522B\u7684\u6807\u9898\u8FDB\u884C\u76F8\u5E94\u7684\u9012\u63A8"}},"heading-blank-lines":{name:"\u6807\u9898\u7A7A\u884C",description:"\u4FDD\u8BC1\u6240\u6709\u6807\u9898\u524D\u540E\u5747\u6709\u4E00\u4E2A\u7A7A\u884C\uFF08\u9664\u975E\u6807\u9898\u4F4D\u4E8E\u6587\u6863\u5F00\u5934\u6216\u7ED3\u5C3E\u5904\uFF09",bottom:{name:"\u5E95\u90E8",description:"\u5728\u6807\u9898\u540E\u63D2\u5165\u4E00\u4E2A\u7A7A\u884C"},"empty-line-after-yaml":{name:"YAML \u4E0E\u6807\u9898\u4E4B\u95F4\u7684\u7A7A\u884C",description:"\u4FDD\u7559 YAML Front-matter \u548C\u6807\u9898\u4E4B\u95F4\u7684\u7A7A\u884C"}},"headings-start-line":{name:"\u6807\u9898\u5BF9\u9F50\u884C\u9996",description:"\u5C06\u4E0D\u4EE5\u884C\u9996\u5F00\u59CB\u7684\u6807\u9898\u524D\u9762\u7684\u7A7A\u767D\u5220\u9664\uFF0C\u6807\u9898\u80FD\u88AB\u6B63\u786E\u8BC6\u522B"},"insert-yaml-attributes":{name:"\u63D2\u5165 YAML \u5C5E\u6027",description:"\u628A\u6307\u5B9A\u7684 YAML \u952E\u63D2\u5165\u5230 YAML Front-matter \u4E2D\u3002\u6BCF\u4E2A\u952E\u5360\u4E00\u884C","text-to-insert":{name:"\u8981\u63D2\u5165\u7684\u952E",description:"\u8981\u63D2\u5165\u5230 YAML Front-matter \u4E2D\u7684\u952E"}},"line-break-at-document-end":{name:"\u6587\u4EF6\u7ED3\u5C3E\u6362\u884C",description:"\u786E\u4FDD\u6587\u6863\u7ED3\u5C3E\u6709\u4E00\u884C\u7A7A\u884C"},"move-footnotes-to-the-bottom":{name:"\u79FB\u52A8\u811A\u6CE8\u81F3\u5E95\u90E8",description:"\u5C06\u6240\u6709\u811A\u6CE8\u79FB\u52A8\u5230\u6587\u6863\u5E95\u90E8"},"move-math-block-indicators-to-their-own-line":{name:"\u683C\u5F0F\u5316 Latex \u5757\u6807\u5FD7",description:"\u5C06 Latex \u5757\u6807\u5FD7\u79FB\u5230\u65B0\u884C\u3002\u4F7F\u7528**\u6307\u793A Latex \u5757\u7684 `$` \u7B26\u53F7\u6570\u91CF**\u6765\u786E\u5B9A\u5355\u884C Latex \u662F\u5426\u88AB\u8BA4\u5B9A\u4E3A Latex \u5757"},"move-tags-to-yaml":{name:"\u5C06 tags \u79FB\u81F3 YAML",description:"\u5C06\u6587\u6863\u5185\u6240\u6709\u7684 tags \u79FB\u52A8\u5230 YAML Front-matter \u5185","how-to-handle-existing-tags":{name:"\u5982\u4F55\u5904\u7406\u539F\u6709\u7684 tag",description:"\u5BF9\u4E8E\u6587\u6863\u4E2D\u975E\u88AB\u5FFD\u7565\u7684 tag\uFF0C\u79FB\u52A8\u5230 YAML Front-matter \u540E\u5E94\u8BE5\u91C7\u53D6\u4F55\u79CD\u64CD\u4F5C\uFF1F"},"tags-to-ignore":{name:"\u5FFD\u7565\u7684 tag",description:"\u8FD9\u4E9B tags \u4E0D\u4F1A\u88AB\u79FB\u52A8 YAML Front-matter \u4E2D\u3002\u6BCF\u4E2A tag \u6309\u884C\u5206\u9694\uFF0C\u4E0D\u8981\u5305\u542B`#`"}},"no-bare-urls":{name:"\u7981\u6B62\u539F\u59CB URL",description:"\u9664\u975E\u88AB\u53CD\u5F15\u53F7\u3001\u65B9\u62EC\u53F7\u6216\u5355\u5F15\u53F7/\u53CC\u5F15\u53F7\u5305\u56F4\uFF0C\u5426\u5219\u5C06\u539F\u59CB URL \u7528\u5C16\u62EC\u53F7\u5305\u56F4"},"ordered-list-style":{name:"\u6709\u5E8F\u5217\u8868\u6837\u5F0F",description:"\u786E\u4FDD\u6709\u5E8F\u5217\u8868\u9075\u5FAA\u6307\u5B9A\u7684\u6837\u5F0F\u3002\u8BF7\u6CE8\u610F\uFF0C2\u4E2A\u7A7A\u683C\u62161\u4E2A\u5236\u8868\u7B26\u88AB\u89C6\u4E3A\u4E00\u4E2A\u7F29\u8FDB\u7EA7\u522B","number-style":{name:"\u6392\u5E8F\u65B9\u5F0F",description:"\u6709\u5E8F\u5217\u8868\u5E8F\u53F7\u683C\u5F0F\u5316\u65B9\u5F0F"},"list-end-style":{name:"\u6709\u5E8F\u5217\u8868\u6807\u5FD7\u6837\u5F0F",description:"\u6709\u5E8F\u5217\u8868\u6807\u5FD7\u6837\u5F0F"}},"paragraph-blank-lines":{name:"\u6BB5\u843D\u7A7A\u884C",description:"\u6BCF\u4E2A\u6BB5\u843D\u524D\u540E\u4FDD\u8BC1\u6709\u4E14\u4EC5\u6709\u4E00\u884C\u7A7A\u884C"},"prevent-double-checklist-indicator-on-paste":{name:"\u9632\u6B62\u91CD\u590D\u7684 checklist \u6807\u5FD7",description:"\u7C98\u8D34\u65F6\uFF0C\u5982\u679C\u5149\u6807\u6240\u5728\u884C\u6709 checklist \u6807\u5FD7\uFF0C\u5219\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664 checklist \u6807\u5FD7"},"prevent-double-list-item-indicator-on-paste":{name:"\u9632\u6B62\u91CD\u590D\u7684\u5217\u8868\u6807\u5FD7",description:"\u7C98\u8D34\u65F6\uFF0C\u5982\u679C\u5149\u6807\u6240\u5728\u884C\u6709\u5217\u8868\u6807\u5FD7\uFF0C\u5219\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u5217\u8868\u6807\u5FD7"},"proper-ellipsis-on-paste":{name:"\u6B63\u786E\u7684\u7701\u7565\u53F7",description:"\u7C98\u8D34\u65F6\uFF0C\u5373\u4F7F\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u6709\u7A7A\u683C\uFF0C\u4E5F\u7528\u7701\u7565\u53F7\u66FF\u6362\u4E09\u4E2A\u8FDE\u7EED\u7684\u70B9"},"proper-ellipsis":{name:"\u6B63\u786E\u7684\u7701\u7565\u53F7",description:"\u7528\u7701\u7565\u53F7\u66FF\u6362\u4E09\u4E2A\u8FDE\u7EED\u7684\u70B9"},"quote-style":{name:"\u5F15\u53F7\u6837\u5F0F",description:"\u683C\u5F0F\u5316\u6B63\u6587\u5185\u5BB9\u4E2D\u7684\u5F15\u53F7\u6837\u5F0F\u4E3A\u5355\u5F15\u53F7\u6216\u53CC\u5F15\u53F7","single-quote-enabled":{name:"\u542F\u7528\u5355\u5F15\u53F7\u6837\u5F0F",description:"\u6307\u5B9A\u5E94\u4F7F\u7528\u9009\u5B9A\u7684\u5355\u5F15\u53F7\u6837\u5F0F"},"single-quote-style":{name:"\u5355\u5F15\u53F7\u6837\u5F0F",description:"\u8981\u4F7F\u7528\u7684\u5355\u5F15\u53F7\u6837\u5F0F"},"double-quote-enabled":{name:"\u542F\u7528\u53CC\u5F15\u53F7\u6837\u5F0F",description:"\u6307\u5B9A\u5E94\u4F7F\u7528\u9009\u5B9A\u7684\u53CC\u5F15\u53F7\u6837\u5F0F"},"double-quote-style":{name:"\u53CC\u5F15\u53F7\u6837\u5F0F",description:"\u8981\u4F7F\u7528\u7684\u53CC\u5F15\u53F7\u6837\u5F0F"}},"re-index-footnotes":{name:"\u91CD\u65B0\u7D22\u5F15\u811A\u6CE8",description:"\u57FA\u4E8E\u51FA\u73B0\u7684\u987A\u5E8F\u91CD\u65B0\u7D22\u5F15\u811A\u6CE8\u3002**\u6CE8\u610F\uFF0C\u5982\u679C\u4E00\u4E2A\u952E\u5BF9\u5E94\u591A\u4E2A\u811A\u6CE8\uFF0C\u5219\u6B64\u89C4\u5219\u4E0D\u9002\u7528**"},"remove-consecutive-list-markers":{name:"\u79FB\u9664\u91CD\u590D\u7684\u5217\u8868\u6807\u5FD7",description:"\u79FB\u9664\u91CD\u590D\u7684\u5217\u8868\u6807\u5FD7\u3002\u590D\u5236\u7C98\u8D34\u5217\u8868\u9879\u65F6\u5F88\u6709\u7528"},"remove-empty-lines-between-list-markers-and-checklists":{name:"\u79FB\u9664\u5217\u8868\u548C checklist \u9879\u76EE\u4E4B\u95F4\u7684\u7A7A\u884C",description:"\u5217\u8868\u548C checklist \u9879\u76EE\u4E4B\u95F4\u4E0D\u5E94\u6709\u7A7A\u884C"},"remove-empty-list-markers":{name:"\u79FB\u9664\u7A7A\u7684\u5217\u8868\u6807\u5FD7",description:"\u79FB\u9664\u7A7A\u7684\u5217\u8868\u6807\u5FD7\uFF0C\u6BD4\u5982\u5217\u8868\u540E\u6CA1\u5185\u5BB9"},"remove-hyphenated-line-breaks":{name:"\u79FB\u9664\u8FDE\u5B57\u7B26",description:"\u79FB\u9664\u4E2D\u5212\u7EBF\u8FDE\u5B57\u7B26\u3002\u4ECE\u6587\u7AE0\u4E2D\u7C98\u8D34\u65F6\u5F88\u6709\u7528"},"remove-hyphens-on-paste":{name:"\u79FB\u9664\u8FDE\u5B57\u7B26",description:"\u7C98\u8D34\u65F6\uFF0C\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u8FDE\u5B57\u7B26"},"remove-leading-or-trailing-whitespace-on-paste":{name:"\u79FB\u9664\u524D\u5BFC\u6216\u5C3E\u968F\u7A7A\u683C",description:"\u7C98\u8D34\u65F6\uFF0C\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u4EFB\u4F55\u524D\u5BFC\u975E\u5236\u8868\u7B26\u7A7A\u683C\u548C\u6240\u6709\u5C3E\u968F\u7A7A\u683C"},"remove-leftover-footnotes-from-quote-on-paste":{name:"\u79FB\u9664\u591A\u4F59\u811A\u6CE8",description:"\u7C98\u8D34\u65F6\uFF0C\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u591A\u4F59\u811A\u6CE8"},"remove-link-spacing":{name:"\u79FB\u9664\u94FE\u63A5\u7A7A\u683C",description:"\u79FB\u9664\u94FE\u63A5\u6587\u672C\u9996\u5C3E\u7684\u7A7A\u683C"},"remove-multiple-blank-lines-on-paste":{name:"\u79FB\u9664\u91CD\u590D\u7A7A\u884C",description:"\u7C98\u8D34\u65F6\uFF0C\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u5C06\u591A\u4E2A\u7A7A\u884C\u538B\u7F29\u4E3A\u4E00\u4E2A\u7A7A\u884C"},"remove-multiple-spaces":{name:"\u79FB\u9664\u91CD\u590D\u7A7A\u683C",description:"\u79FB\u9664\u4E24\u4E2A\u6216\u66F4\u591A\u8FDE\u7EED\u7684\u7A7A\u683C\uFF0C\u5FFD\u7565\u884C\u9996\u548C\u884C\u5C3E\u7684\u7A7A\u683C"},"remove-space-around-characters":{name:"\u79FB\u9664\u5B57\u7B26\u5468\u56F4\u7684\u7A7A\u683C",description:"\u786E\u4FDD\u67D0\u4E9B\u5B57\u7B26\u5468\u56F4\u6CA1\u6709\u7A7A\u683C\uFF08\u5305\u62EC\u5355\u4E2A\u7A7A\u683C\u6216\u5236\u8868\u7B26\uFF09\u3002**\u6CE8\u610F\uFF0C\u8FD9\u53EF\u80FD\u4F1A\u5728\u67D0\u4E9B\u60C5\u51B5\u4E0B\u5F71\u54CD markdown \u683C\u5F0F**","include-fullwidth-forms":{name:"\u5305\u62EC\u5168\u89D2\u5F62\u5F0F",description:'\u5305\u62EC<a href="https://en.wikipedia.org/wiki/Halfwidth_and_Fullwidth_Forms_(Unicode_block)">\u5168\u89D2\u5F62\u5F0FUnicode\u5757</a>'},"include-cjk-symbols-and-punctuation":{name:"\u5305\u62ECCJK\u7B26\u53F7\u548C\u6807\u70B9",description:'\u5305\u62EC<a href="https://en.wikipedia.org/wiki/CJK_Symbols_and_Punctuation">CJK\u7B26\u53F7\u548C\u6807\u70B9Unicode\u5757</a>'},"include-dashes":{name:"\u5305\u62EC\u7834\u6298\u53F7",description:"\u5305\u62EC en dash (\u2013) \u548C em dash (\u2014)"},"other-symbols":{name:"\u5176\u4ED6\u7B26\u53F7",description:"\u8981\u5305\u62EC\u7684\u5176\u4ED6\u7B26\u53F7"}},"remove-space-before-or-after-characters":{name:"\u79FB\u9664\u5B57\u7B26\u524D\u540E\u7684\u7A7A\u683C",description:"\u79FB\u9664\u6307\u5B9A\u5B57\u7B26\u4E4B\u524D\u548C\u6307\u5B9A\u5B57\u7B26\u4E4B\u540E\u7684\u7A7A\u683C\u3002 **\u6CE8\u610F\uFF0C\u5728\u67D0\u4E9B\u60C5\u51B5\u4E0B\uFF0C\u8FD9\u53EF\u80FD\u4F1A\u5BFC\u81F4 markdown \u683C\u5F0F\u51FA\u73B0\u95EE\u9898**","characters-to-remove-space-before":{name:"\u79FB\u9664\u5B57\u7B26\u524D\u7684\u7A7A\u683C",description:"\u79FB\u9664\u6307\u5B9A\u5B57\u7B26\u524D\u7684\u7A7A\u683C\u3002 **\u6CE8\u610F\uFF0C\u5728\u5B57\u7B26\u5217\u8868\u4E2D\u4F7F\u7528`{`\u6216`}`\u4F1A\u610F\u5916\u5F71\u54CD\u6587\u4EF6\uFF0C\u56E0\u4E3A\u5B83\u5728\u7A0B\u5E8F\u540E\u53F0\u7684\u5FFD\u7565\u8BED\u6CD5\u4E2D\u4F7F\u7528**"},"characters-to-remove-space-after":{name:"\u79FB\u9664\u5B57\u7B26\u540E\u7684\u7A7A\u683C",description:"\u79FB\u9664\u6307\u5B9A\u5B57\u7B26\u540E\u7684\u7A7A\u683C\u3002 **\u6CE8\u610F\uFF0C\u5728\u5B57\u7B26\u5217\u8868\u4E2D\u4F7F\u7528`{`\u6216`}`\u4F1A\u610F\u5916\u5F71\u54CD\u6587\u4EF6\uFF0C\u56E0\u4E3A\u5B83\u5728\u7A0B\u5E8F\u540E\u53F0\u7684\u5FFD\u7565\u8BED\u6CD5\u4E2D\u4F7F\u7528**"}},"remove-trailing-punctuation-in-heading":{name:"\u79FB\u9664\u6807\u9898\u4E2D\u7684\u7ED3\u5C3E\u6807\u70B9\u7B26\u53F7",description:"\u4ECE\u6807\u9898\u7684\u672B\u5C3E\u5220\u9664\u6307\u5B9A\u7684\u6807\u70B9\u7B26\u53F7\uFF0C\u786E\u4FDD\u5FFD\u7565[HTML \u5B57\u7B26\u5B9E\u4F53](https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references)\u672B\u5C3E\u7684\u5206\u53F7","punctuation-to-remove":{name:"\u8981\u5220\u9664\u7684\u7ED3\u5C3E\u6807\u70B9\u7B26\u53F7",description:"\u8981\u4ECE\u6587\u4EF6\u6807\u9898\u7ED3\u5C3E\u4E2D\u5220\u9664\u7684\u6807\u70B9\u7B26\u53F7"}},"remove-yaml-keys":{name:"\u79FB\u9664 YAML \u952E",description:"\u79FB\u9664\u6307\u5B9A\u7684 YAML \u952E","yaml-keys-to-remove":{name:"\u9700\u8981\u79FB\u9664\u7684 YAML \u952E",description:"\u8981\u4ECE YAML Front-matter \u4E2D\u5220\u9664\u7684 YAML \u952E \uFF08\u53EF\u5E26\u6216\u4E0D\u5E26\u5192\u53F7\uFF09"}},"space-after-list-markers":{name:"\u5217\u8868\u6807\u5FD7\u7A7A\u683C",description:"\u5217\u8868\u6807\u5FD7\u548C checkbox \u540E\u5E94\u6709\u4E00\u4E2A\u7A7A\u683C"},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"\u4E2D\u65E5\u97E9\u8BED\u4E0E\u82F1\u8BED\u6216\u6570\u5B57\u4E4B\u95F4\u7684\u7A7A\u683C",description:"\u786E\u4FDD\u4E2D\u6587\u3001\u65E5\u6587\u6216\u97E9\u6587\u548C\u82F1\u6587\u6216\u6570\u5B57\u7531\u5355\u4E2A\u7A7A\u683C\u5206\u9694. [\u53C2\u8003\u94FE\u63A5](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"\u7C97\u4F53\u6837\u5F0F",description:"\u786E\u4FDD\u7C97\u4F53\u6837\u5F0F\u4E00\u81F4",style:{name:"\u6837\u5F0F",description:"\u7528\u4E8E\u8868\u793A\u7C97\u4F53\u7684\u6837\u5F0F"}},"trailing-spaces":{name:"\u672B\u5C3E\u7A7A\u683C",description:"\u79FB\u9664\u6BCF\u884C\u672B\u5C3E\u591A\u4F59\u7684\u7A7A\u683C","twp-space-line-break":{name:"\u4E24\u7A7A\u683C\u6362\u884C",description:'\u5FFD\u7565\u4E24\u4E2A\u7A7A\u683C\u540E\u63A5\u6362\u884C\u7B26\u7684\u60C5\u51B5\uFF08"\u4E24\u7A7A\u683C\u89C4\u5219"\uFF09'}},"two-spaces-between-lines-with-content":{name:"\u5185\u5BB9\u95F4\u9694\u4E24\u4E2A\u7A7A\u683C",description:"\u786E\u4FDD\u5728\u6BB5\u843D\u3001\u5F15\u7528\u548C\u5217\u8868\u9879\u4E2D\uFF0C\u6700\u540E\u4E00\u884C\u5185\u5BB9\u7684\u884C\u672B\u6DFB\u52A0\u4E24\u4E2A\u7A7A\u683C"},"unordered-list-style":{name:"\u65E0\u5E8F\u5217\u8868\u6837\u5F0F",description:"\u786E\u4FDD\u65E0\u5E8F\u5217\u8868\u7B26\u5408\u6307\u5B9A\u7684\u6837\u5F0F","list-style":{name:"\u5217\u8868\u9879\u6837\u5F0F",description:"\u5217\u8868\u9879\u9700\u8981\u6307\u5B9A\u7684\u6837\u5F0F"}},"yaml-key-sort":{name:"YAML \u952E\u6392\u5E8F",description:"\u6839\u636E\u6307\u5B9A\u7684\u987A\u5E8F\u548C\u4F18\u5148\u7EA7\u5BF9 YAML \u952E\u8FDB\u884C\u6392\u5E8F\u3002**\u6CE8\u610F\uFF0C\u4E5F\u8BB8\u4E5F\u4F1A\u5220\u9664\u7A7A\u884C**","yaml-key-priority-sort-order":{name:"YAML \u952E\u4F18\u5148\u7EA7\u6392\u5E8F\u987A\u5E8F",description:"\u5BF9\u952E\u8FDB\u884C\u6392\u5E8F\u7684\u987A\u5E8F\uFF0C\u6BCF\u884C\u4E00\u4E2A\u952E\uFF0C\u6309\u5217\u8868\u4E2D\u7684\u987A\u5E8F\u8FDB\u884C\u6392\u5E8F"},"priority-keys-at-start-of-yaml":{name:"\u6392\u5E8F\u952E\u653E\u5728 YAML \u5F00\u5934",description:"\u6309\u7167 `YAML \u952E\u4F18\u5148\u7EA7\u6392\u5E8F\u987A\u5E8F`\u5C06\u952E\u653E\u4E8E YAML Front-matter \u5F00\u5934"},"yaml-sort-order-for-other-keys":{name:"YAML \u5176\u5B83\u952E\u7684\u6392\u5E8F\u987A\u5E8F",description:"\u5BF9 `YAML \u952E\u4F18\u5148\u7EA7\u6392\u5E8F\u987A\u5E8F`\u4E2D\u672A\u627E\u5230\u7684\u952E\u8FDB\u884C\u6392\u5E8F"}},"yaml-timestamp":{name:"YAML \u65F6\u95F4\u6233",description:"\u5728 YAML Front-matter \u4E2D\u8BB0\u5F55\u4E0A\u6B21\u7F16\u8F91\u6587\u6863\u7684\u65E5\u671F\u3002\u4ECE\u6587\u6863\u5143\u6570\u636E\u4E2D\u83B7\u53D6\u65E5\u671F\u6570\u636E","date-created":{name:"\u521B\u5EFA\u65E5\u671F",description:"\u63D2\u5165\u6587\u4EF6\u7684\u521B\u5EFA\u65E5\u671F"},"date-created-key":{name:"\u521B\u5EFA\u65E5\u671F\u952E\u540D",description:"\u4F7F\u7528\u54EA\u4E2A YAML \u952E\u6765\u8868\u793A\u521B\u5EFA\u65E5\u671F"},"force-retention-of-create-value":{name:"\u5F3A\u5236\u4FDD\u7559\u521B\u5EFA\u65E5\u671F\u503C",description:"\u6CBF\u7528 YAML Front-matter \u4E2D\u5DF2\u6709\u7684\u521B\u5EFA\u65E5\u671F\uFF0C\u5FFD\u7565\u6587\u6863\u5143\u6570\u636E\u3002\u5BF9\u4E8E\u6587\u6863\u5143\u6570\u636E\u66F4\u6539\uFF08\u6BD4\u5982\u590D\u5236\u6587\u4EF6\uFF09\u5BFC\u81F4\u7684\u521B\u5EFA\u65F6\u95F4\u66F4\u6539\u975E\u5E38\u6709\u7528"},"date-modified":{name:"\u4FEE\u6539\u65E5\u671F",description:"\u63D2\u5165\u6587\u4EF6\u7684\u6700\u8FD1\u4E00\u6B21\u7684\u4FEE\u6539\u65E5\u671F"},"date-modified-key":{name:"\u4FEE\u6539\u65E5\u671F\u952E\u540D",description:"\u4F7F\u7528\u54EA\u4E2A YAML \u952E\u6765\u8868\u793A\u4FEE\u6539\u65E5\u671F"},format:{name:"\u683C\u5F0F",description:"Moment.js \u8BED\u6CD5\u683C\u5F0F\uFF08\u8BE6\u60C5\u8BBE\u7F6E\u89C1[Moment format options](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/)"}},"yaml-title-alias":{name:"YAML \u6807\u9898\u522B\u540D",description:"\u5C06\u6587\u6863\u7684\u6807\u9898\u63D2\u5165 YAML Front-matter \u7684 aliases \u90E8\u5206\u3002\u4ECE\u7B2C\u4E00\u4E2A H1 \u6807\u9898\u6216\u6587\u6863\u540D\u4E2D\u83B7\u53D6\u503C","preserve-existing-alias-section-style":{name:"\u4FDD\u7559\u73B0\u6709\u522B\u540D\u90E8\u5206\u6837\u5F0F",description:"\u5982\u679C\u8BBE\u7F6E\uFF0C\u6B64\u9879\u4EC5\u5728\u65B0\u521B\u5EFA\u7684\u522B\u540D\u90E8\u5206\u751F\u6548"},"keep-alias-that-matches-the-filename":{name:"\u786E\u4FDD\u522B\u540D\u4E0E\u6587\u4EF6\u540D\u5339\u914D",description:"\u8FD9\u6837\u7684\u522B\u540D\u901A\u5E38\u662F\u5197\u4F59\u7684"},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"\u4F7F\u7528 YAML \u952E `linter-yaml-title-alias` \u6765\u4FDD\u7559\u6807\u9898\u4FEE\u6539\u8BB0\u5F55",description:"\u5982\u679C\u8BBE\u7F6E\uFF0C\u5F53\u7B2C\u4E00\u4E2A H1 \u6807\u9898\u66F4\u6539\u6216\u6587\u6863\u540D\u66F4\u6539\u65F6\uFF0C\u6B64\u952E\u4E2D\u5B58\u50A8\u7684\u65E7 aliases \u5C06\u66FF\u6362\u4E3A\u65B0\u503C\uFF0C\u800C\u4E0D\u4EC5\u4EC5\u662F\u5728 aliases \u4E2D\u63D2\u5165\u65B0\u6761\u76EE"}},"yaml-title":{name:"YAML \u6807\u9898",description:"\u5C06\u6587\u4EF6\u7684\u6807\u9898\u63D2\u5165\u5230 YAML Front-matter \u4E2D\u3002 \u6839\u636E\u6240\u9009\u6A21\u5F0F\u83B7\u53D6\u6807\u9898","title-key":{name:"\u6807\u9898\u952E",description:"\u6807\u9898\u4F7F\u7528\u54EA\u4E00\u4E2A YAML \u952E"},mode:{name:"\u6A21\u5F0F",description:"\u7528\u4E8E\u83B7\u53D6\u6807\u9898\u7684\u65B9\u6CD5"}}},enums:{"Title Case":"\u6BCF\u8BCD\u9996\u5B57\u6BCD\u5927\u5199","ALL CAPS":"\u5168\u90E8\u5927\u5199","First letter":"\u4EC5\u9996\u5B57\u6BCD\u5927\u5199",".":".",")":")",ERROR:"ERROR",TRACE:"TRACE",DEBUG:"DEBUG",INFO:"INFO",WARN:"WARN",SILENT:"SILENT",ascending:"\u5347\u5E8F",lazy:"\u5168\u4E3A1",Nothing:"\u65E0","Remove hashtag":"\u79FB\u9664hashtag","Remove whole tag":"\u79FB\u9664\u6574\u4E2A tag",asterisk:"\u661F\u53F7(*)",underscore:"\u4E0B\u5212\u7EBF(_)",consistent:"\u4FDD\u6301\u4E00\u81F4","-":"-","*":"*","+":"+",space:"\u6709\u7A7A\u683C","no space":"\u65E0\u7A7A\u683C",None:"\u65E0","Ascending Alphabetical":"\u6309\u5B57\u6BCD\u987A\u5E8F\u5347\u5E8F","Descending Alphabetical":"\u6309\u5B57\u6BCD\u987A\u5E8F\u964D\u5E8F","multi-line":"\u591A\u884C\u6570\u7EC4","single-line":"\u5355\u884C\u6570\u7EC4","single string to single-line":"\u5B57\u7B26\u4E32\u8F6C\u5355\u884C\u6570\u7EC4","single string to multi-line":"\u5B57\u7B26\u4E32\u8F6C\u591A\u884C\u6570\u7EC4","single string comma delimited":"\u9017\u53F7\u5206\u9694\u5B57\u7B26\u4E32","single string space delimited":"\u7A7A\u683C\u5206\u9694\u5B57\u7B26\u4E32","single-line space delimited":"\u7A7A\u683C\u5206\u9694\u5355\u884C\u6570\u7EC4","first-h1":"\u7B2C\u4E00\u4E2A H1 \u6807\u9898","first-h1-or-filename-if-h1-missing":"\u7B2C\u4E00\u4E2A H1 \u6807\u9898\u6216\u6587\u4EF6\u540D\uFF08\u7B2C\u4E00\u4E2A H1 \u6807\u9898\u4E0D\u5B58\u5728\u65F6\uFF09",filename:"\u6587\u4EF6\u540D","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var Xd={};var eu={ar:Md,cz:qd,da:Id,de:Bd,en:Zo,es:_d,fr:Fd,hi:Rd,id:Dd,it:Nd,ja:Kd,ko:Yd,nl:jd,no:Pd,pl:Hd,"pt-BR":Wd,pt:$d,ro:Ud,ru:Vd,sq:Gd,tr:Qd,uk:Zd,"zh-TW":Xd,zh:Jd};var Ja="en",Za=eu[Ja];function Xa(e){Ja=e,Za=eu[Ja||"en"]}function E(e){return Za||xt(`locale not found for '${Ja}'`),Za&&Zn(Za,e)||Zn(Zo,e)}var es=function(e){if(e==null)return of;if(typeof e=="function")return is(e);if(typeof e=="object")return Array.isArray(e)?rf(e):af(e);if(typeof e=="string")return sf(e);throw new Error("Expected function, string, or object as test")};function rf(e){let t=[],i=-1;for(;++i<e.length;)t[i]=es(e[i]);return is(n);function n(...r){let a=-1;for(;++a<t.length;)if(t[a].apply(this,r))return!0;return!1}}function af(e){let t=e;return is(i);function i(n){let r=n,a;for(a in e)if(r[a]!==t[a])return!1;return!0}}function sf(e){return is(t);function t(i){return i&&i.type===e}}function is(e){return t;function t(i,n,r){return!!(lf(i)&&e.call(this,i,typeof n=="number"?n:void 0,r||void 0))}}function of(){return!0}function lf(e){return e!==null&&typeof e=="object"&&"type"in e}var iu=[],Jo=!0,ts=!1,Xo="skip";function el(e,t,i,n){let r;typeof t=="function"&&typeof i!="function"?(n=i,i=t):r=t;let a=es(r),s=n?-1:1;o(e,void 0,[])();function o(l,c,d){let u=l&&typeof l=="object"?l:{};if(typeof u.type=="string"){let m=typeof u.tagName=="string"?u.tagName:typeof u.name=="string"?u.name:void 0;Object.defineProperty(g,"name",{value:"node ("+(l.type+(m?"<"+m+">":""))+")"})}return g;function g(){let m=iu,f,w,x;if((!t||a(l,c,d[d.length-1]||void 0))&&(m=cf(i(l,d)),m[0]===ts))return m;if("children"in l&&l.children){let v=l;if(v.children&&m[0]!==Xo)for(w=(n?v.children.length:-1)+s,x=d.concat(v);w>-1&&w<v.children.length;){let z=v.children[w];if(f=o(z,w,x)(),f[0]===ts)return f;w=typeof f[1]=="number"?f[1]:w+s}}return m}}}function cf(e){return Array.isArray(e)?e:typeof e=="number"?[Jo,e]:e==null?iu:[e]}function ns(e,t,i,n){let r,a,s;typeof t=="function"&&typeof i!="function"?(a=void 0,s=t,r=i):(a=t,s=i,r=n),el(e,a,o,r);function o(l,c){let d=c[c.length-1],u=d?d.children.indexOf(l):void 0;return s(l,u,d)}}function kt(e,t,i){return e.substring(0,t)+i+e.substring(t)}function ce(e,t,i,n){return e.substring(0,t)+n+e.substring(i)}function tu(e){return e.replace(/\r/g,"")}function fn(e,t){if(t===0)return["",0];let i="",n=t;for(;n>=0;){let r=e.charAt(n);if(r===` +`)break;r.trim()===""||r===">"?i=r+i:i="",n--}return[i,n]}function rs(e=""){let[t]=fn(e,e.length);return` +`+t.trim()}function df(e="",t=!1,i=1){let n=rs(e),r=Ji(n,">");return(t||ss.test(e))&&i===r||i<r?n.substring(0,n.lastIndexOf(">")):n}function uf(e="",t=!1,i=1){let n=rs(e),r=Ji(n,">");return(t||ss.test(e))&&i===r?n.substring(0,n.lastIndexOf(">")):i>=r?n:n.substring(0,n.lastIndexOf(">"))}function pf(e,t){if(t===0)return e;let i=t,n=t;for(;i>=0;){let r=e.charAt(i);if(r.trim()!=="")break;r===` `&&(n=i),i--}return i<0||n===0?e.substring(t+1):e.substring(0,n)+` -`+e.substring(t)}function Oh(e,t,i,n=!1,r=!1){if(i===0)return e;let a=t.split(">").length-1,s=i,o=i,l=0,d=!1,c="";for(;s>=0;){let b=e.charAt(s);if(b.trim()!==""&&b!==">")break;if(b===">"){if(d)break;l++}else if(b===` -`)if(l===0||l===a||l+1===a)o=s,l=0,c===` -`&&(d=!0);else break;s--,c=b}if(s<0||o===0)return e.substring(i+1);let u=e.substring(o,i);if(u===` +`+e.substring(t)}function mf(e,t,i,n=!1,r=!1){if(i===0)return e;let a=t.split(">").length-1,s=i,o=i,l=0,c=!1,d="";for(;s>=0;){let x=e.charAt(s);if(x.trim()!==""&&x!==">")break;if(x===">"){if(c)break;l++}else if(x===` +`)if(l===0||l===a||l+1===a)o=s,l=0,d===` +`&&(c=!0);else break;s--,d=x}if(s<0||o===0)return e.substring(i+1);let u=e.substring(o,i);if(u===` `||u.startsWith(` `))return e.substring(0,o)+` -`+e.substring(i);let g=e.lastIndexOf(` -`,o-1),h="";g===-1?h=e.substring(0,o):h=e.substring(g,o);let x=r?zd(h,n,a):Lo(h);return e.substring(0,o)+x+e.substring(i)}function Ch(e,t){if(t===e.length-1)return e;let i=t,n=t,r=!0;for(;i<e.length;){let a=e.charAt(i);if(a.trim()!=="")break;a===` +`+e.substring(i);let m=e.lastIndexOf(` +`,o-1),f="";m===-1?f=e.substring(0,o):f=e.substring(m,o);let w=r?uf(f,n,a):rs(f);return e.substring(0,o)+w+e.substring(i)}function gf(e,t){if(t===e.length-1)return e;let i=t,n=t,r=!0;for(;i<e.length;){let a=e.charAt(i);if(a.trim()!=="")break;a===` `&&(r?r=!1:n=i),i++}return i===e.length||n===e.length-1?e.substring(0,t):e.substring(0,t)+` -`+e.substring(n)}function Mh(e,t,i,n=!1,r=!1){if(i===e.length-1)return e;let a=t.split(">").length-1,s=i,o=i,l=!0,d=0,c=!1,u="";for(;s<e.length;){let v=e.charAt(s);if(v.trim()!==""&&v!==">")break;if(v===">"){if(c)break;d++}else if(v===` -`)if(d===0||d===a||d+1===a)d=0,l?l=!1:o=s,u===` -`&&(c=!0);else break;s++,u=v}if(s===e.length||o===e.length-1)return e.substring(0,i);let m=e.substring(i,o);if(m===` -`||m.endsWith(` +`+e.substring(n)}function hf(e,t,i,n=!1,r=!1){if(i===e.length-1)return e;let a=t.split(">").length-1,s=i,o=i,l=!0,c=0,d=!1,u="",g=!0,m=e.charAt(s-1);for(;s<e.length;){let L=e.charAt(s);if(L.trim()!==""&&L!==">")break;if(L===">"){if(d)break;c++}else if(L===` +`)if(c===0||c===a||c+1===a)c=0,l?l=!1:o=s,u===` +`&&(d=!0);else break;if(s++,u=L,g&&L===` +`&&r&&m===` +`){o=s;break}g=!1}if(s===e.length||o===e.length-1)return e.substring(0,i);let f=e.substring(i,o);if(f===` +`||f.endsWith(` `))return e.substring(0,i)+` -`+e.substring(o);let h=e.indexOf(` -`,o+1),x="";h===-1?x=e.substring(o):x=e.substring(o+1,h);let b=r?zd(x,n,a):Lo(x);return e.substring(0,i)+b+e.substring(o)}function ot(e,t,i,n=!1){let[r,a]=kd(e,t);if(r.trim()!==""){let o=Eo.test(e.substring(t,i)),l=Mh(e,r,i,o,n);return Oh(l,r,a,o,n)}let s=Ch(e,i);return Eh(s,a)}function Sd(e,t=0){let i=3735928559^t,n=1103547991^t;for(let r=0,a;r<e.length;r++)a=e.charCodeAt(r),i=Math.imul(i^a,2654435761),n=Math.imul(n^a,1597334677);return i=Math.imul(i^i>>>16,2246822507)^Math.imul(n^n>>>13,3266489909),n=Math.imul(n^n>>>16,2246822507)^Math.imul(i^i>>>13,3266489909),4294967296*(2097151&n)+(i>>>0)}function Ad(e){return e=e.replaceAll("\\b","\b"),e=e.replaceAll("\\f","\f"),e=e.replaceAll("\\n",` -`),e=e.replaceAll("\\r","\r"),e=e.replaceAll("\\t"," "),e=e.replaceAll("\\v","\v"),e}function qn(e,t){if(t==0)return t;let i=t;for(;i>0&&e.charAt(i-1)!==` -`;)i--;return i}function Td(e,t,i,n){return n>e.length-1?e:e.slice(0,n)+e.slice(n,e.length).replace(t,i)}function Ut(e,t){let i=0;for(let n=0,r=e.length;n<r;n++){let a=e.indexOf(t,n);a>-1&&(i++,n=a)}return i}function Oa(e){let t=typeof e;return t!="string"?t==="number":!isNaN(e)&&!isNaN(parseFloat(e))}function Ld(e,t){let i=[],n=-1;for(;(n=t.indexOf(e,n+1))>=0;)i.push(n);return i}function Oe(e,t,i,n){let r=e.length,a=0,s;if(t<0?t=-t>r?0:r+t:t=t>r?r:t,i=i>0?i:0,n.length<1e4)s=Array.from(n),s.unshift(t,i),[].splice.apply(e,s);else for(i&&[].splice.apply(e,[t,i]);a<n.length;)s=n.slice(a,a+1e4),s.unshift(t,0),[].splice.apply(e,s),a+=1e4,t+=1e4}function Ne(e,t){return e.length>0?(Oe(e,e.length,0,t),e):t}var Ed=/[!-/:-@[-`{-~\u00A1\u00A7\u00AB\u00B6\u00B7\u00BB\u00BF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/;var Ue=Ki(/[A-Za-z]/),In=Ki(/\d/),Od=Ki(/[\dA-Fa-f]/),je=Ki(/[\dA-Za-z]/),Cd=Ki(/[!-/:-@[-`{-~]/),Oo=Ki(/[#-'*+\--9=?A-Z^-~]/);function Bn(e){return e!==null&&(e<32||e===127)}function X(e){return e!==null&&(e<0||e===32)}function F(e){return e!==null&&e<-2}function G(e){return e===-2||e===-1||e===32}var Md=Ki(/\s/),qd=Ki(Ed);function Ki(e){return t;function t(i){return i!==null&&e.test(String.fromCharCode(i))}}function Co(e){if(e===null||X(e)||Md(e))return 1;if(qd(e))return 2}function Gt(e,t,i){let n=[],r=-1;for(;++r<e.length;){let a=e[r].resolveAll;a&&!n.includes(a)&&(t=a(t,i),n.push(a))}return t}var Fn={name:"attention",tokenize:Ih,resolveAll:qh};function qh(e,t){let i=-1,n,r,a,s,o,l,d,c;for(;++i<e.length;)if(e[i][0]==="enter"&&e[i][1].type==="attentionSequence"&&e[i][1]._close){for(n=i;n--;)if(e[n][0]==="exit"&&e[n][1].type==="attentionSequence"&&e[n][1]._open&&t.sliceSerialize(e[n][1]).charCodeAt(0)===t.sliceSerialize(e[i][1]).charCodeAt(0)){if((e[n][1]._close||e[i][1]._open)&&(e[i][1].end.offset-e[i][1].start.offset)%3&&!((e[n][1].end.offset-e[n][1].start.offset+e[i][1].end.offset-e[i][1].start.offset)%3))continue;l=e[n][1].end.offset-e[n][1].start.offset>1&&e[i][1].end.offset-e[i][1].start.offset>1?2:1;let u=Object.assign({},e[n][1].end),m=Object.assign({},e[i][1].start);Id(u,-l),Id(m,l),s={type:l>1?"strongSequence":"emphasisSequence",start:u,end:Object.assign({},e[n][1].end)},o={type:l>1?"strongSequence":"emphasisSequence",start:Object.assign({},e[i][1].start),end:m},a={type:l>1?"strongText":"emphasisText",start:Object.assign({},e[n][1].end),end:Object.assign({},e[i][1].start)},r={type:l>1?"strong":"emphasis",start:Object.assign({},s.start),end:Object.assign({},o.end)},e[n][1].end=Object.assign({},s.start),e[i][1].start=Object.assign({},o.end),d=[],e[n][1].end.offset-e[n][1].start.offset&&(d=Ne(d,[["enter",e[n][1],t],["exit",e[n][1],t]])),d=Ne(d,[["enter",r,t],["enter",s,t],["exit",s,t],["enter",a,t]]),d=Ne(d,Gt(t.parser.constructs.insideSpan.null,e.slice(n+1,i),t)),d=Ne(d,[["exit",a,t],["enter",o,t],["exit",o,t],["exit",r,t]]),e[i][1].end.offset-e[i][1].start.offset?(c=2,d=Ne(d,[["enter",e[i][1],t],["exit",e[i][1],t]])):c=0,Oe(e,n-1,i-n+3,d),i=n+d.length-c-2;break}}for(i=-1;++i<e.length;)e[i][1].type==="attentionSequence"&&(e[i][1].type="data");return e}function Ih(e,t){let i=this.parser.constructs.attentionMarkers.null,n=this.previous,r=Co(n),a;return s;function s(l){return e.enter("attentionSequence"),a=l,o(l)}function o(l){if(l===a)return e.consume(l),o;let d=e.exit("attentionSequence"),c=Co(l),u=!c||c===2&&r||i.includes(l),m=!r||r===2&&c||i.includes(n);return d._open=Boolean(a===42?u:u&&(r||!m)),d._close=Boolean(a===42?m:m&&(c||!u)),t(l)}}function Id(e,t){e.column+=t,e.offset+=t,e._bufferIndex+=t}var Mo={name:"autolink",tokenize:Bh};function Bh(e,t,i){let n=1;return r;function r(h){return e.enter("autolink"),e.enter("autolinkMarker"),e.consume(h),e.exit("autolinkMarker"),e.enter("autolinkProtocol"),a}function a(h){return Ue(h)?(e.consume(h),s):Oo(h)?d(h):i(h)}function s(h){return h===43||h===45||h===46||je(h)?o(h):d(h)}function o(h){return h===58?(e.consume(h),l):(h===43||h===45||h===46||je(h))&&n++<32?(e.consume(h),o):d(h)}function l(h){return h===62?(e.exit("autolinkProtocol"),g(h)):h===null||h===32||h===60||Bn(h)?i(h):(e.consume(h),l)}function d(h){return h===64?(e.consume(h),n=0,c):Oo(h)?(e.consume(h),d):i(h)}function c(h){return je(h)?u(h):i(h)}function u(h){return h===46?(e.consume(h),n=0,c):h===62?(e.exit("autolinkProtocol").type="autolinkEmail",g(h)):m(h)}function m(h){return(h===45||je(h))&&n++<63?(e.consume(h),h===45?m:u):i(h)}function g(h){return e.enter("autolinkMarker"),e.consume(h),e.exit("autolinkMarker"),e.exit("autolink"),t}}function Y(e,t,i,n){let r=n?n-1:Number.POSITIVE_INFINITY,a=0;return s;function s(l){return G(l)?(e.enter(i),o(l)):t(l)}function o(l){return G(l)&&a++<r?(e.consume(l),o):(e.exit(i),t(l))}}var yi={tokenize:Fh,partial:!0};function Fh(e,t,i){return Y(e,n,"linePrefix");function n(r){return r===null||F(r)?t(r):i(r)}}var Ca={name:"blockQuote",tokenize:_h,continuation:{tokenize:Rh},exit:Dh};function _h(e,t,i){let n=this;return r;function r(s){if(s===62){let o=n.containerState;return o.open||(e.enter("blockQuote",{_container:!0}),o.open=!0),e.enter("blockQuotePrefix"),e.enter("blockQuoteMarker"),e.consume(s),e.exit("blockQuoteMarker"),a}return i(s)}function a(s){return G(s)?(e.enter("blockQuotePrefixWhitespace"),e.consume(s),e.exit("blockQuotePrefixWhitespace"),e.exit("blockQuotePrefix"),t):(e.exit("blockQuotePrefix"),t(s))}}function Rh(e,t,i){return Y(e,e.attempt(Ca,t,i),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function Dh(e){e.exit("blockQuote")}var Ma={name:"characterEscape",tokenize:Nh};function Nh(e,t,i){return n;function n(a){return e.enter("characterEscape"),e.enter("escapeMarker"),e.consume(a),e.exit("escapeMarker"),r}function r(a){return Cd(a)?(e.enter("characterEscapeValue"),e.consume(a),e.exit("characterEscapeValue"),e.exit("characterEscape"),t):i(a)}}var Bd=document.createElement("i");function Qt(e){let t="&"+e+";";Bd.innerHTML=t;let i=Bd.textContent;return i.charCodeAt(i.length-1)===59&&e!=="semi"||i===t?!1:i}var qa={name:"characterReference",tokenize:jh};function jh(e,t,i){let n=this,r=0,a,s;return o;function o(u){return e.enter("characterReference"),e.enter("characterReferenceMarker"),e.consume(u),e.exit("characterReferenceMarker"),l}function l(u){return u===35?(e.enter("characterReferenceMarkerNumeric"),e.consume(u),e.exit("characterReferenceMarkerNumeric"),d):(e.enter("characterReferenceValue"),a=31,s=je,c(u))}function d(u){return u===88||u===120?(e.enter("characterReferenceMarkerHexadecimal"),e.consume(u),e.exit("characterReferenceMarkerHexadecimal"),e.enter("characterReferenceValue"),a=6,s=Od,c):(e.enter("characterReferenceValue"),a=7,s=In,c(u))}function c(u){let m;return u===59&&r?(m=e.exit("characterReferenceValue"),s===je&&!Qt(n.sliceSerialize(m))?i(u):(e.enter("characterReferenceMarker"),e.consume(u),e.exit("characterReferenceMarker"),e.exit("characterReference"),t)):s(u)&&r++<a?(e.consume(u),c):i(u)}}var Ia={name:"codeFenced",tokenize:Kh,concrete:!0};function Kh(e,t,i){let n=this,r={tokenize:B,partial:!0},a={tokenize:M,partial:!0},s=this.events[this.events.length-1],o=s&&s[1].type==="linePrefix"?s[2].sliceSerialize(s[1],!0).length:0,l=0,d;return c;function c(T){return e.enter("codeFenced"),e.enter("codeFencedFence"),e.enter("codeFencedFenceSequence"),d=T,u(T)}function u(T){return T===d?(e.consume(T),l++,u):(e.exit("codeFencedFenceSequence"),l<3?i(T):Y(e,m,"whitespace")(T))}function m(T){return T===null||F(T)?b(T):(e.enter("codeFencedFenceInfo"),e.enter("chunkString",{contentType:"string"}),g(T))}function g(T){return T===null||X(T)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),Y(e,h,"whitespace")(T)):T===96&&T===d?i(T):(e.consume(T),g)}function h(T){return T===null||F(T)?b(T):(e.enter("codeFencedFenceMeta"),e.enter("chunkString",{contentType:"string"}),x(T))}function x(T){return T===null||F(T)?(e.exit("chunkString"),e.exit("codeFencedFenceMeta"),b(T)):T===96&&T===d?i(T):(e.consume(T),x)}function b(T){return e.exit("codeFencedFence"),n.interrupt?t(T):v(T)}function v(T){return T===null?L(T):F(T)?e.attempt(a,e.attempt(r,L,o?Y(e,v,"linePrefix",o+1):v),L)(T):(e.enter("codeFlowValue"),S(T))}function S(T){return T===null||F(T)?(e.exit("codeFlowValue"),v(T)):(e.consume(T),S)}function L(T){return e.exit("codeFenced"),t(T)}function M(T,_,q){let D=this;return H;function H(V){return T.enter("lineEnding"),T.consume(V),T.exit("lineEnding"),j}function j(V){return D.parser.lazy[D.now().line]?q(V):_(V)}}function B(T,_,q){let D=0;return Y(T,H,"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4);function H(R){return T.enter("codeFencedFence"),T.enter("codeFencedFenceSequence"),j(R)}function j(R){return R===d?(T.consume(R),D++,j):D<l?q(R):(T.exit("codeFencedFenceSequence"),Y(T,V,"whitespace")(R))}function V(R){return R===null||F(R)?(T.exit("codeFencedFence"),_(R)):q(R)}}}var _n={name:"codeIndented",tokenize:Ph},Yh={tokenize:Hh,partial:!0};function Ph(e,t,i){let n=this;return r;function r(d){return e.enter("codeIndented"),Y(e,a,"linePrefix",4+1)(d)}function a(d){let c=n.events[n.events.length-1];return c&&c[1].type==="linePrefix"&&c[2].sliceSerialize(c[1],!0).length>=4?s(d):i(d)}function s(d){return d===null?l(d):F(d)?e.attempt(Yh,s,l)(d):(e.enter("codeFlowValue"),o(d))}function o(d){return d===null||F(d)?(e.exit("codeFlowValue"),s(d)):(e.consume(d),o)}function l(d){return e.exit("codeIndented"),t(d)}}function Hh(e,t,i){let n=this;return r;function r(s){return n.parser.lazy[n.now().line]?i(s):F(s)?(e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),r):Y(e,a,"linePrefix",4+1)(s)}function a(s){let o=n.events[n.events.length-1];return o&&o[1].type==="linePrefix"&&o[2].sliceSerialize(o[1],!0).length>=4?t(s):F(s)?r(s):i(s)}}var qo={name:"codeText",tokenize:Vh,resolve:$h,previous:Wh};function $h(e){let t=e.length-4,i=3,n,r;if((e[i][1].type==="lineEnding"||e[i][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(n=i;++n<t;)if(e[n][1].type==="codeTextData"){e[i][1].type="codeTextPadding",e[t][1].type="codeTextPadding",i+=2,t-=2;break}}for(n=i-1,t++;++n<=t;)r===void 0?n!==t&&e[n][1].type!=="lineEnding"&&(r=n):(n===t||e[n][1].type==="lineEnding")&&(e[r][1].type="codeTextData",n!==r+2&&(e[r][1].end=e[n-1][1].end,e.splice(r+2,n-r-2),t-=n-r-2,n=r+2),r=void 0);return e}function Wh(e){return e!==96||this.events[this.events.length-1][1].type==="characterEscape"}function Vh(e,t,i){let n=this,r=0,a,s;return o;function o(m){return e.enter("codeText"),e.enter("codeTextSequence"),l(m)}function l(m){return m===96?(e.consume(m),r++,l):(e.exit("codeTextSequence"),d(m))}function d(m){return m===null?i(m):m===96?(s=e.enter("codeTextSequence"),a=0,u(m)):m===32?(e.enter("space"),e.consume(m),e.exit("space"),d):F(m)?(e.enter("lineEnding"),e.consume(m),e.exit("lineEnding"),d):(e.enter("codeTextData"),c(m))}function c(m){return m===null||m===32||m===96||F(m)?(e.exit("codeTextData"),d(m)):(e.consume(m),c)}function u(m){return m===96?(e.consume(m),a++,u):a===r?(e.exit("codeTextSequence"),e.exit("codeText"),t(m)):(s.type="codeTextData",c(m))}}function Ba(e){let t={},i=-1,n,r,a,s,o,l,d;for(;++i<e.length;){for(;i in t;)i=t[i];if(n=e[i],i&&n[1].type==="chunkFlow"&&e[i-1][1].type==="listItemPrefix"&&(l=n[1]._tokenizer.events,a=0,a<l.length&&l[a][1].type==="lineEndingBlank"&&(a+=2),a<l.length&&l[a][1].type==="content"))for(;++a<l.length&&l[a][1].type!=="content";)l[a][1].type==="chunkText"&&(l[a][1]._isInFirstContentOfListItem=!0,a++);if(n[0]==="enter")n[1].contentType&&(Object.assign(t,Uh(e,i)),i=t[i],d=!0);else if(n[1]._container){for(a=i,r=void 0;a--&&(s=e[a],s[1].type==="lineEnding"||s[1].type==="lineEndingBlank");)s[0]==="enter"&&(r&&(e[r][1].type="lineEndingBlank"),s[1].type="lineEnding",r=a);r&&(n[1].end=Object.assign({},e[r][1].start),o=e.slice(r,i),o.unshift(n),Oe(e,r,i-r+1,o))}}return!d}function Uh(e,t){let i=e[t][1],n=e[t][2],r=t-1,a=[],s=i._tokenizer||n.parser[i.contentType](i.start),o=s.events,l=[],d={},c,u,m=-1,g=i,h=0,x=0,b=[x];for(;g;){for(;e[++r][1]!==g;);a.push(r),g._tokenizer||(c=n.sliceStream(g),g.next||c.push(null),u&&s.defineSkip(g.start),g._isInFirstContentOfListItem&&(s._gfmTasklistFirstContentOfListItem=!0),s.write(c),g._isInFirstContentOfListItem&&(s._gfmTasklistFirstContentOfListItem=void 0)),u=g,g=g.next}for(g=i;++m<o.length;)o[m][0]==="exit"&&o[m-1][0]==="enter"&&o[m][1].type===o[m-1][1].type&&o[m][1].start.line!==o[m][1].end.line&&(x=m+1,b.push(x),g._tokenizer=void 0,g.previous=void 0,g=g.next);for(s.events=[],g?(g._tokenizer=void 0,g.previous=void 0):b.pop(),m=b.length;m--;){let v=o.slice(b[m],b[m+1]),S=a.pop();l.unshift([S,S+v.length-1]),Oe(e,S,2,v)}for(m=-1;++m<l.length;)d[h+l[m][0]]=h+l[m][1],h+=l[m][1]-l[m][0]-1;return d}var Io={tokenize:Zh,resolve:Qh},Gh={tokenize:Jh,partial:!0};function Qh(e){return Ba(e),e}function Zh(e,t){let i;return n;function n(o){return e.enter("content"),i=e.enter("chunkContent",{contentType:"content"}),r(o)}function r(o){return o===null?a(o):F(o)?e.check(Gh,s,a)(o):(e.consume(o),r)}function a(o){return e.exit("chunkContent"),e.exit("content"),t(o)}function s(o){return e.consume(o),e.exit("chunkContent"),i.next=e.enter("chunkContent",{contentType:"content",previous:i}),i=i.next,r}}function Jh(e,t,i){let n=this;return r;function r(s){return e.exit("chunkContent"),e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),Y(e,a,"linePrefix")}function a(s){if(s===null||F(s))return i(s);let o=n.events[n.events.length-1];return!n.parser.constructs.disable.null.includes("codeIndented")&&o&&o[1].type==="linePrefix"&&o[2].sliceSerialize(o[1],!0).length>=4?t(s):e.interrupt(n.parser.constructs.flow,i,t)(s)}}function Fa(e,t,i,n,r,a,s,o,l){let d=l||Number.POSITIVE_INFINITY,c=0;return u;function u(v){return v===60?(e.enter(n),e.enter(r),e.enter(a),e.consume(v),e.exit(a),m):v===null||v===41||Bn(v)?i(v):(e.enter(n),e.enter(s),e.enter(o),e.enter("chunkString",{contentType:"string"}),x(v))}function m(v){return v===62?(e.enter(a),e.consume(v),e.exit(a),e.exit(r),e.exit(n),t):(e.enter(o),e.enter("chunkString",{contentType:"string"}),g(v))}function g(v){return v===62?(e.exit("chunkString"),e.exit(o),m(v)):v===null||v===60||F(v)?i(v):(e.consume(v),v===92?h:g)}function h(v){return v===60||v===62||v===92?(e.consume(v),g):g(v)}function x(v){return v===40?++c>d?i(v):(e.consume(v),x):v===41?c--?(e.consume(v),x):(e.exit("chunkString"),e.exit(o),e.exit(s),e.exit(n),t(v)):v===null||X(v)?c?i(v):(e.exit("chunkString"),e.exit(o),e.exit(s),e.exit(n),t(v)):Bn(v)?i(v):(e.consume(v),v===92?b:x)}function b(v){return v===40||v===41||v===92?(e.consume(v),x):x(v)}}function _a(e,t,i,n,r,a){let s=this,o=0,l;return d;function d(g){return e.enter(n),e.enter(r),e.consume(g),e.exit(r),e.enter(a),c}function c(g){return g===null||g===91||g===93&&!l||g===94&&!o&&"_hiddenFootnoteSupport"in s.parser.constructs||o>999?i(g):g===93?(e.exit(a),e.enter(r),e.consume(g),e.exit(r),e.exit(n),t):F(g)?(e.enter("lineEnding"),e.consume(g),e.exit("lineEnding"),c):(e.enter("chunkString",{contentType:"string"}),u(g))}function u(g){return g===null||g===91||g===93||F(g)||o++>999?(e.exit("chunkString"),c(g)):(e.consume(g),l=l||!G(g),g===92?m:u)}function m(g){return g===91||g===92||g===93?(e.consume(g),o++,u):u(g)}}function Ra(e,t,i,n,r,a){let s;return o;function o(m){return e.enter(n),e.enter(r),e.consume(m),e.exit(r),s=m===40?41:m,l}function l(m){return m===s?(e.enter(r),e.consume(m),e.exit(r),e.exit(n),t):(e.enter(a),d(m))}function d(m){return m===s?(e.exit(a),l(s)):m===null?i(m):F(m)?(e.enter("lineEnding"),e.consume(m),e.exit("lineEnding"),Y(e,d,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),c(m))}function c(m){return m===s||m===null||F(m)?(e.exit("chunkString"),d(m)):(e.consume(m),m===92?u:c)}function u(m){return m===s||m===92?(e.consume(m),c):c(m)}}function lt(e,t){let i;return n;function n(r){return F(r)?(e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),i=!0,n):G(r)?Y(e,n,i?"linePrefix":"lineSuffix")(r):t(r)}}function Be(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}var Bo={name:"definition",tokenize:ef},Xh={tokenize:tf,partial:!0};function ef(e,t,i){let n=this,r;return a;function a(l){return e.enter("definition"),_a.call(n,e,s,i,"definitionLabel","definitionLabelMarker","definitionLabelString")(l)}function s(l){return r=Be(n.sliceSerialize(n.events[n.events.length-1][1]).slice(1,-1)),l===58?(e.enter("definitionMarker"),e.consume(l),e.exit("definitionMarker"),lt(e,Fa(e,e.attempt(Xh,Y(e,o,"whitespace"),Y(e,o,"whitespace")),i,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString"))):i(l)}function o(l){return l===null||F(l)?(e.exit("definition"),n.parser.defined.includes(r)||n.parser.defined.push(r),t(l)):i(l)}}function tf(e,t,i){return n;function n(s){return X(s)?lt(e,r)(s):i(s)}function r(s){return s===34||s===39||s===40?Ra(e,Y(e,a,"whitespace"),i,"definitionTitle","definitionTitleMarker","definitionTitleString")(s):i(s)}function a(s){return s===null||F(s)?t(s):i(s)}}var Fo={name:"hardBreakEscape",tokenize:nf};function nf(e,t,i){return n;function n(a){return e.enter("hardBreakEscape"),e.enter("escapeMarker"),e.consume(a),r}function r(a){return F(a)?(e.exit("escapeMarker"),e.exit("hardBreakEscape"),t(a)):i(a)}}var _o={name:"headingAtx",tokenize:af,resolve:rf};function rf(e,t){let i=e.length-2,n=3,r,a;return e[n][1].type==="whitespace"&&(n+=2),i-2>n&&e[i][1].type==="whitespace"&&(i-=2),e[i][1].type==="atxHeadingSequence"&&(n===i-1||i-4>n&&e[i-2][1].type==="whitespace")&&(i-=n+1===i?2:4),i>n&&(r={type:"atxHeadingText",start:e[n][1].start,end:e[i][1].end},a={type:"chunkText",start:e[n][1].start,end:e[i][1].end,contentType:"text"},Oe(e,n,i-n+1,[["enter",r,t],["enter",a,t],["exit",a,t],["exit",r,t]])),e}function af(e,t,i){let n=this,r=0;return a;function a(c){return e.enter("atxHeading"),e.enter("atxHeadingSequence"),s(c)}function s(c){return c===35&&r++<6?(e.consume(c),s):c===null||X(c)?(e.exit("atxHeadingSequence"),n.interrupt?t(c):o(c)):i(c)}function o(c){return c===35?(e.enter("atxHeadingSequence"),l(c)):c===null||F(c)?(e.exit("atxHeading"),t(c)):G(c)?Y(e,o,"whitespace")(c):(e.enter("atxHeadingText"),d(c))}function l(c){return c===35?(e.consume(c),l):(e.exit("atxHeadingSequence"),o(c))}function d(c){return c===null||c===35||X(c)?(e.exit("atxHeadingText"),o(c)):(e.consume(c),d)}}var Fd=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],Ro=["pre","script","style","textarea"];var Do={name:"htmlFlow",tokenize:lf,resolveTo:of,concrete:!0},sf={tokenize:cf,partial:!0};function of(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function lf(e,t,i){let n=this,r,a,s,o,l;return d;function d(k){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(k),c}function c(k){return k===33?(e.consume(k),u):k===47?(e.consume(k),h):k===63?(e.consume(k),r=3,n.interrupt?t:ue):Ue(k)?(e.consume(k),s=String.fromCharCode(k),a=!0,x):i(k)}function u(k){return k===45?(e.consume(k),r=2,m):k===91?(e.consume(k),r=5,s="CDATA[",o=0,g):Ue(k)?(e.consume(k),r=4,n.interrupt?t:ue):i(k)}function m(k){return k===45?(e.consume(k),n.interrupt?t:ue):i(k)}function g(k){return k===s.charCodeAt(o++)?(e.consume(k),o===s.length?n.interrupt?t:j:g):i(k)}function h(k){return Ue(k)?(e.consume(k),s=String.fromCharCode(k),x):i(k)}function x(k){return k===null||k===47||k===62||X(k)?k!==47&&a&&Ro.includes(s.toLowerCase())?(r=1,n.interrupt?t(k):j(k)):Fd.includes(s.toLowerCase())?(r=6,k===47?(e.consume(k),b):n.interrupt?t(k):j(k)):(r=7,n.interrupt&&!n.parser.lazy[n.now().line]?i(k):a?S(k):v(k)):k===45||je(k)?(e.consume(k),s+=String.fromCharCode(k),x):i(k)}function b(k){return k===62?(e.consume(k),n.interrupt?t:j):i(k)}function v(k){return G(k)?(e.consume(k),v):D(k)}function S(k){return k===47?(e.consume(k),D):k===58||k===95||Ue(k)?(e.consume(k),L):G(k)?(e.consume(k),S):D(k)}function L(k){return k===45||k===46||k===58||k===95||je(k)?(e.consume(k),L):M(k)}function M(k){return k===61?(e.consume(k),B):G(k)?(e.consume(k),M):S(k)}function B(k){return k===null||k===60||k===61||k===62||k===96?i(k):k===34||k===39?(e.consume(k),l=k,T):G(k)?(e.consume(k),B):(l=null,_(k))}function T(k){return k===null||F(k)?i(k):k===l?(e.consume(k),q):(e.consume(k),T)}function _(k){return k===null||k===34||k===39||k===60||k===61||k===62||k===96||X(k)?M(k):(e.consume(k),_)}function q(k){return k===47||k===62||G(k)?S(k):i(k)}function D(k){return k===62?(e.consume(k),H):i(k)}function H(k){return G(k)?(e.consume(k),H):k===null||F(k)?j(k):i(k)}function j(k){return k===45&&r===2?(e.consume(k),re):k===60&&r===1?(e.consume(k),Q):k===62&&r===4?(e.consume(k),ae):k===63&&r===3?(e.consume(k),ue):k===93&&r===5?(e.consume(k),de):F(k)&&(r===6||r===7)?e.check(sf,ae,V)(k):k===null||F(k)?V(k):(e.consume(k),j)}function V(k){return e.exit("htmlFlowData"),R(k)}function R(k){return k===null?z(k):F(k)?e.attempt({tokenize:$,partial:!0},R,z)(k):(e.enter("htmlFlowData"),j(k))}function $(k,mi,He){return _e;function _e(Re){return k.enter("lineEnding"),k.consume(Re),k.exit("lineEnding"),ri}function ri(Re){return n.parser.lazy[n.now().line]?He(Re):mi(Re)}}function re(k){return k===45?(e.consume(k),ue):j(k)}function Q(k){return k===47?(e.consume(k),s="",ce):j(k)}function ce(k){return k===62&&Ro.includes(s.toLowerCase())?(e.consume(k),ae):Ue(k)&&s.length<8?(e.consume(k),s+=String.fromCharCode(k),ce):j(k)}function de(k){return k===93?(e.consume(k),ue):j(k)}function ue(k){return k===62?(e.consume(k),ae):k===45&&r===2?(e.consume(k),ue):j(k)}function ae(k){return k===null||F(k)?(e.exit("htmlFlowData"),z(k)):(e.consume(k),ae)}function z(k){return e.exit("htmlFlow"),t(k)}}function cf(e,t,i){return n;function n(r){return e.exit("htmlFlowData"),e.enter("lineEndingBlank"),e.consume(r),e.exit("lineEndingBlank"),e.attempt(yi,t,i)}}var No={name:"htmlText",tokenize:df};function df(e,t,i){let n=this,r,a,s,o;return l;function l(z){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(z),d}function d(z){return z===33?(e.consume(z),c):z===47?(e.consume(z),_):z===63?(e.consume(z),B):Ue(z)?(e.consume(z),H):i(z)}function c(z){return z===45?(e.consume(z),u):z===91?(e.consume(z),a="CDATA[",s=0,b):Ue(z)?(e.consume(z),M):i(z)}function u(z){return z===45?(e.consume(z),m):i(z)}function m(z){return z===null||z===62?i(z):z===45?(e.consume(z),g):h(z)}function g(z){return z===null||z===62?i(z):h(z)}function h(z){return z===null?i(z):z===45?(e.consume(z),x):F(z)?(o=h,de(z)):(e.consume(z),h)}function x(z){return z===45?(e.consume(z),ae):h(z)}function b(z){return z===a.charCodeAt(s++)?(e.consume(z),s===a.length?v:b):i(z)}function v(z){return z===null?i(z):z===93?(e.consume(z),S):F(z)?(o=v,de(z)):(e.consume(z),v)}function S(z){return z===93?(e.consume(z),L):v(z)}function L(z){return z===62?ae(z):z===93?(e.consume(z),L):v(z)}function M(z){return z===null||z===62?ae(z):F(z)?(o=M,de(z)):(e.consume(z),M)}function B(z){return z===null?i(z):z===63?(e.consume(z),T):F(z)?(o=B,de(z)):(e.consume(z),B)}function T(z){return z===62?ae(z):B(z)}function _(z){return Ue(z)?(e.consume(z),q):i(z)}function q(z){return z===45||je(z)?(e.consume(z),q):D(z)}function D(z){return F(z)?(o=D,de(z)):G(z)?(e.consume(z),D):ae(z)}function H(z){return z===45||je(z)?(e.consume(z),H):z===47||z===62||X(z)?j(z):i(z)}function j(z){return z===47?(e.consume(z),ae):z===58||z===95||Ue(z)?(e.consume(z),V):F(z)?(o=j,de(z)):G(z)?(e.consume(z),j):ae(z)}function V(z){return z===45||z===46||z===58||z===95||je(z)?(e.consume(z),V):R(z)}function R(z){return z===61?(e.consume(z),$):F(z)?(o=R,de(z)):G(z)?(e.consume(z),R):j(z)}function $(z){return z===null||z===60||z===61||z===62||z===96?i(z):z===34||z===39?(e.consume(z),r=z,re):F(z)?(o=$,de(z)):G(z)?(e.consume(z),$):(e.consume(z),r=void 0,ce)}function re(z){return z===r?(e.consume(z),Q):z===null?i(z):F(z)?(o=re,de(z)):(e.consume(z),re)}function Q(z){return z===62||z===47||X(z)?j(z):i(z)}function ce(z){return z===null||z===34||z===39||z===60||z===61||z===96?i(z):z===62||X(z)?j(z):(e.consume(z),ce)}function de(z){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(z),e.exit("lineEnding"),Y(e,ue,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function ue(z){return e.enter("htmlTextData"),o(z)}function ae(z){return z===62?(e.consume(z),e.exit("htmlTextData"),e.exit("htmlText"),t):i(z)}}var ct={name:"labelEnd",tokenize:ff,resolveTo:hf,resolveAll:gf},uf={tokenize:yf},pf={tokenize:bf},mf={tokenize:vf};function gf(e){let t=-1,i;for(;++t<e.length;)i=e[t][1],(i.type==="labelImage"||i.type==="labelLink"||i.type==="labelEnd")&&(e.splice(t+1,i.type==="labelImage"?4:2),i.type="data",t++);return e}function hf(e,t){let i=e.length,n=0,r,a,s,o;for(;i--;)if(r=e[i][1],a){if(r.type==="link"||r.type==="labelLink"&&r._inactive)break;e[i][0]==="enter"&&r.type==="labelLink"&&(r._inactive=!0)}else if(s){if(e[i][0]==="enter"&&(r.type==="labelImage"||r.type==="labelLink")&&!r._balanced&&(a=i,r.type!=="labelLink")){n=2;break}}else r.type==="labelEnd"&&(s=i);let l={type:e[a][1].type==="labelLink"?"link":"image",start:Object.assign({},e[a][1].start),end:Object.assign({},e[e.length-1][1].end)},d={type:"label",start:Object.assign({},e[a][1].start),end:Object.assign({},e[s][1].end)},c={type:"labelText",start:Object.assign({},e[a+n+2][1].end),end:Object.assign({},e[s-2][1].start)};return o=[["enter",l,t],["enter",d,t]],o=Ne(o,e.slice(a+1,a+n+3)),o=Ne(o,[["enter",c,t]]),o=Ne(o,Gt(t.parser.constructs.insideSpan.null,e.slice(a+n+4,s-3),t)),o=Ne(o,[["exit",c,t],e[s-2],e[s-1],["exit",d,t]]),o=Ne(o,e.slice(s+1)),o=Ne(o,[["exit",l,t]]),Oe(e,a,e.length,o),e}function ff(e,t,i){let n=this,r=n.events.length,a,s;for(;r--;)if((n.events[r][1].type==="labelImage"||n.events[r][1].type==="labelLink")&&!n.events[r][1]._balanced){a=n.events[r][1];break}return o;function o(c){return a?a._inactive?d(c):(s=n.parser.defined.includes(Be(n.sliceSerialize({start:a.end,end:n.now()}))),e.enter("labelEnd"),e.enter("labelMarker"),e.consume(c),e.exit("labelMarker"),e.exit("labelEnd"),l):i(c)}function l(c){return c===40?e.attempt(uf,t,s?t:d)(c):c===91?e.attempt(pf,t,s?e.attempt(mf,t,d):d)(c):s?t(c):d(c)}function d(c){return a._balanced=!0,i(c)}}function yf(e,t,i){return n;function n(l){return e.enter("resource"),e.enter("resourceMarker"),e.consume(l),e.exit("resourceMarker"),lt(e,r)}function r(l){return l===41?o(l):Fa(e,a,i,"resourceDestination","resourceDestinationLiteral","resourceDestinationLiteralMarker","resourceDestinationRaw","resourceDestinationString",32)(l)}function a(l){return X(l)?lt(e,s)(l):o(l)}function s(l){return l===34||l===39||l===40?Ra(e,lt(e,o),i,"resourceTitle","resourceTitleMarker","resourceTitleString")(l):o(l)}function o(l){return l===41?(e.enter("resourceMarker"),e.consume(l),e.exit("resourceMarker"),e.exit("resource"),t):i(l)}}function bf(e,t,i){let n=this;return r;function r(s){return _a.call(n,e,a,i,"reference","referenceMarker","referenceString")(s)}function a(s){return n.parser.defined.includes(Be(n.sliceSerialize(n.events[n.events.length-1][1]).slice(1,-1)))?t(s):i(s)}}function vf(e,t,i){return n;function n(a){return e.enter("reference"),e.enter("referenceMarker"),e.consume(a),e.exit("referenceMarker"),r}function r(a){return a===93?(e.enter("referenceMarker"),e.consume(a),e.exit("referenceMarker"),e.exit("reference"),t):i(a)}}var jo={name:"labelStartImage",tokenize:xf,resolveAll:ct.resolveAll};function xf(e,t,i){let n=this;return r;function r(o){return e.enter("labelImage"),e.enter("labelImageMarker"),e.consume(o),e.exit("labelImageMarker"),a}function a(o){return o===91?(e.enter("labelMarker"),e.consume(o),e.exit("labelMarker"),e.exit("labelImage"),s):i(o)}function s(o){return o===94&&"_hiddenFootnoteSupport"in n.parser.constructs?i(o):t(o)}}var Ko={name:"labelStartLink",tokenize:wf,resolveAll:ct.resolveAll};function wf(e,t,i){let n=this;return r;function r(s){return e.enter("labelLink"),e.enter("labelMarker"),e.consume(s),e.exit("labelMarker"),e.exit("labelLink"),a}function a(s){return s===94&&"_hiddenFootnoteSupport"in n.parser.constructs?i(s):t(s)}}var Rn={name:"lineEnding",tokenize:kf};function kf(e,t){return i;function i(n){return e.enter("lineEnding"),e.consume(n),e.exit("lineEnding"),Y(e,t,"linePrefix")}}var dt={name:"thematicBreak",tokenize:zf};function zf(e,t,i){let n=0,r;return a;function a(l){return e.enter("thematicBreak"),r=l,s(l)}function s(l){return l===r?(e.enter("thematicBreakSequence"),o(l)):G(l)?Y(e,s,"whitespace")(l):n<3||l!==null&&!F(l)?i(l):(e.exit("thematicBreak"),t(l))}function o(l){return l===r?(e.consume(l),n++,o):(e.exit("thematicBreakSequence"),s(l))}}var Fe={name:"list",tokenize:Tf,continuation:{tokenize:Lf},exit:Of},Sf={tokenize:Cf,partial:!0},Af={tokenize:Ef,partial:!0};function Tf(e,t,i){let n=this,r=n.events[n.events.length-1],a=r&&r[1].type==="linePrefix"?r[2].sliceSerialize(r[1],!0).length:0,s=0;return o;function o(g){let h=n.containerState.type||(g===42||g===43||g===45?"listUnordered":"listOrdered");if(h==="listUnordered"?!n.containerState.marker||g===n.containerState.marker:In(g)){if(n.containerState.type||(n.containerState.type=h,e.enter(h,{_container:!0})),h==="listUnordered")return e.enter("listItemPrefix"),g===42||g===45?e.check(dt,i,d)(g):d(g);if(!n.interrupt||g===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),l(g)}return i(g)}function l(g){return In(g)&&++s<10?(e.consume(g),l):(!n.interrupt||s<2)&&(n.containerState.marker?g===n.containerState.marker:g===41||g===46)?(e.exit("listItemValue"),d(g)):i(g)}function d(g){return e.enter("listItemMarker"),e.consume(g),e.exit("listItemMarker"),n.containerState.marker=n.containerState.marker||g,e.check(yi,n.interrupt?i:c,e.attempt(Sf,m,u))}function c(g){return n.containerState.initialBlankLine=!0,a++,m(g)}function u(g){return G(g)?(e.enter("listItemPrefixWhitespace"),e.consume(g),e.exit("listItemPrefixWhitespace"),m):i(g)}function m(g){return n.containerState.size=a+n.sliceSerialize(e.exit("listItemPrefix"),!0).length,t(g)}}function Lf(e,t,i){let n=this;return n.containerState._closeFlow=void 0,e.check(yi,r,a);function r(o){return n.containerState.furtherBlankLines=n.containerState.furtherBlankLines||n.containerState.initialBlankLine,Y(e,t,"listItemIndent",n.containerState.size+1)(o)}function a(o){return n.containerState.furtherBlankLines||!G(o)?(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,s(o)):(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,e.attempt(Af,t,s)(o))}function s(o){return n.containerState._closeFlow=!0,n.interrupt=void 0,Y(e,e.attempt(Fe,t,i),"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(o)}}function Ef(e,t,i){let n=this;return Y(e,r,"listItemIndent",n.containerState.size+1);function r(a){let s=n.events[n.events.length-1];return s&&s[1].type==="listItemIndent"&&s[2].sliceSerialize(s[1],!0).length===n.containerState.size?t(a):i(a)}}function Of(e){e.exit(this.containerState.type)}function Cf(e,t,i){let n=this;return Y(e,r,"listItemPrefixWhitespace",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4+1);function r(a){let s=n.events[n.events.length-1];return!G(a)&&s&&s[1].type==="listItemPrefixWhitespace"?t(a):i(a)}}var Da={name:"setextUnderline",tokenize:qf,resolveTo:Mf};function Mf(e,t){let i=e.length,n,r,a;for(;i--;)if(e[i][0]==="enter"){if(e[i][1].type==="content"){n=i;break}e[i][1].type==="paragraph"&&(r=i)}else e[i][1].type==="content"&&e.splice(i,1),!a&&e[i][1].type==="definition"&&(a=i);let s={type:"setextHeading",start:Object.assign({},e[r][1].start),end:Object.assign({},e[e.length-1][1].end)};return e[r][1].type="setextHeadingText",a?(e.splice(r,0,["enter",s,t]),e.splice(a+1,0,["exit",e[n][1],t]),e[n][1].end=Object.assign({},e[a][1].end)):e[n][1]=s,e.push(["exit",s,t]),e}function qf(e,t,i){let n=this,r=n.events.length,a,s;for(;r--;)if(n.events[r][1].type!=="lineEnding"&&n.events[r][1].type!=="linePrefix"&&n.events[r][1].type!=="content"){s=n.events[r][1].type==="paragraph";break}return o;function o(c){return!n.parser.lazy[n.now().line]&&(n.interrupt||s)?(e.enter("setextHeadingLine"),e.enter("setextHeadingLineSequence"),a=c,l(c)):i(c)}function l(c){return c===a?(e.consume(c),l):(e.exit("setextHeadingLineSequence"),Y(e,d,"lineSuffix")(c))}function d(c){return c===null||F(c)?(e.exit("setextHeadingLine"),t(c)):i(c)}}var If={tokenize:jf,partial:!0};function Yo(){return{document:{[91]:{tokenize:Rf,continuation:{tokenize:Df},exit:Nf}},text:{[91]:{tokenize:_f},[93]:{add:"after",tokenize:Bf,resolveTo:Ff}}}}function Bf(e,t,i){let n=this,r=n.events.length,a=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]),s;for(;r--;){let l=n.events[r][1];if(l.type==="labelImage"){s=l;break}if(l.type==="gfmFootnoteCall"||l.type==="labelLink"||l.type==="label"||l.type==="image"||l.type==="link")break}return o;function o(l){if(!s||!s._balanced)return i(l);let d=Be(n.sliceSerialize({start:s.end,end:n.now()}));return d.codePointAt(0)!==94||!a.includes(d.slice(1))?i(l):(e.enter("gfmFootnoteCallLabelMarker"),e.consume(l),e.exit("gfmFootnoteCallLabelMarker"),t(l))}}function Ff(e,t){let i=e.length,n;for(;i--;)if(e[i][1].type==="labelImage"&&e[i][0]==="enter"){n=e[i][1];break}e[i+1][1].type="data",e[i+3][1].type="gfmFootnoteCallLabelMarker";let r={type:"gfmFootnoteCall",start:Object.assign({},e[i+3][1].start),end:Object.assign({},e[e.length-1][1].end)},a={type:"gfmFootnoteCallMarker",start:Object.assign({},e[i+3][1].end),end:Object.assign({},e[i+3][1].end)};a.end.column++,a.end.offset++,a.end._bufferIndex++;let s={type:"gfmFootnoteCallString",start:Object.assign({},a.end),end:Object.assign({},e[e.length-1][1].start)},o={type:"chunkString",contentType:"string",start:Object.assign({},s.start),end:Object.assign({},s.end)},l=[e[i+1],e[i+2],["enter",r,t],e[i+3],e[i+4],["enter",a,t],["exit",a,t],["enter",s,t],["enter",o,t],["exit",o,t],["exit",s,t],e[e.length-2],e[e.length-1],["exit",r,t]];return e.splice(i,e.length-i+1,...l),e}function _f(e,t,i){let n=this,r=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]),a=0,s;return o;function o(u){return e.enter("gfmFootnoteCall"),e.enter("gfmFootnoteCallLabelMarker"),e.consume(u),e.exit("gfmFootnoteCallLabelMarker"),l}function l(u){return u!==94?i(u):(e.enter("gfmFootnoteCallMarker"),e.consume(u),e.exit("gfmFootnoteCallMarker"),e.enter("gfmFootnoteCallString"),e.enter("chunkString").contentType="string",d)}function d(u){if(a>999||u===93&&!s||u===null||u===91||X(u))return i(u);if(u===93){e.exit("chunkString");let m=e.exit("gfmFootnoteCallString");return r.includes(Be(n.sliceSerialize(m)))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(u),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),t):i(u)}return X(u)||(s=!0),a++,e.consume(u),u===92?c:d}function c(u){return u===91||u===92||u===93?(e.consume(u),a++,d):d(u)}}function Rf(e,t,i){let n=this,r=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]),a,s=0,o;return l;function l(h){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(h),e.exit("gfmFootnoteDefinitionLabelMarker"),d}function d(h){return h===94?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(h),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),e.enter("chunkString").contentType="string",c):i(h)}function c(h){if(s>999||h===93&&!o||h===null||h===91||X(h))return i(h);if(h===93){e.exit("chunkString");let x=e.exit("gfmFootnoteDefinitionLabelString");return a=Be(n.sliceSerialize(x)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(h),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),m}return X(h)||(o=!0),s++,e.consume(h),h===92?u:c}function u(h){return h===91||h===92||h===93?(e.consume(h),s++,c):c(h)}function m(h){return h===58?(e.enter("definitionMarker"),e.consume(h),e.exit("definitionMarker"),r.includes(a)||r.push(a),Y(e,g,"gfmFootnoteDefinitionWhitespace")):i(h)}function g(h){return t(h)}}function Df(e,t,i){return e.check(yi,t,e.attempt(If,t,i))}function Nf(e){e.exit("gfmFootnoteDefinition")}function jf(e,t,i){let n=this;return Y(e,r,"gfmFootnoteDefinitionIndent",4+1);function r(a){let s=n.events[n.events.length-1];return s&&s[1].type==="gfmFootnoteDefinitionIndent"&&s[2].sliceSerialize(s[1],!0).length===4?t(a):i(a)}}var Kf={tokenize:Yf},Po={text:{[91]:Kf}};function Yf(e,t,i){let n=this;return r;function r(l){return n.previous!==null||!n._gfmTasklistFirstContentOfListItem?i(l):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),a)}function a(l){return X(l)?(e.enter("taskListCheckValueUnchecked"),e.consume(l),e.exit("taskListCheckValueUnchecked"),s):l===88||l===120?(e.enter("taskListCheckValueChecked"),e.consume(l),e.exit("taskListCheckValueChecked"),s):i(l)}function s(l){return l===93?(e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),o):i(l)}function o(l){return F(l)?t(l):G(l)?e.check({tokenize:Pf},t,i)(l):i(l)}}function Pf(e,t,i){return Y(e,n,"whitespace");function n(r){return r===null?i(r):t(r)}}var _d={}.hasOwnProperty;function Na(e){let t={},i=-1;for(;++i<e.length;)Hf(t,e[i]);return t}function Hf(e,t){let i;for(i in t){let r=(_d.call(e,i)?e[i]:void 0)||(e[i]={}),a=t[i],s;for(s in a){_d.call(r,s)||(r[s]=[]);let o=a[s];$f(r[s],Array.isArray(o)?o:o?[o]:[])}}}function $f(e,t){let i=-1,n=[];for(;++i<t.length;)(t[i].add==="after"?e:n).push(t[i]);Oe(e,0,0,n)}var Dd={tokenize:Wf,concrete:!0},Rd={tokenize:Vf,partial:!0};function Wf(e,t,i){let n=this,r=n.events[n.events.length-1],a=r&&r[1].type==="linePrefix"?r[2].sliceSerialize(r[1],!0).length:0,s=0;return o;function o(S){return e.enter("mathFlow"),e.enter("mathFlowFence"),e.enter("mathFlowFenceSequence"),l(S)}function l(S){return S===36?(e.consume(S),s++,l):s<2?i(S):(e.exit("mathFlowFenceSequence"),Y(e,d,"whitespace")(S))}function d(S){return S===null||F(S)?u(S):(e.enter("mathFlowFenceMeta"),e.enter("chunkString",{contentType:"string"}),c(S))}function c(S){return S===null||F(S)?(e.exit("chunkString"),e.exit("mathFlowFenceMeta"),u(S)):S===36?i(S):(e.consume(S),c)}function u(S){return e.exit("mathFlowFence"),n.interrupt?t(S):e.attempt(Rd,m,b)(S)}function m(S){return e.attempt({tokenize:v,partial:!0},b,g)(S)}function g(S){return(a?Y(e,h,"linePrefix",a+1):h)(S)}function h(S){return S===null?b(S):F(S)?e.attempt(Rd,m,b)(S):(e.enter("mathFlowValue"),x(S))}function x(S){return S===null||F(S)?(e.exit("mathFlowValue"),h(S)):(e.consume(S),x)}function b(S){return e.exit("mathFlow"),t(S)}function v(S,L,M){let B=0;return Y(S,T,"linePrefix",4);function T(D){return S.enter("mathFlowFence"),S.enter("mathFlowFenceSequence"),_(D)}function _(D){return D===36?(B++,S.consume(D),_):B<s?M(D):(S.exit("mathFlowFenceSequence"),Y(S,q,"whitespace")(D))}function q(D){return D===null||F(D)?(S.exit("mathFlowFence"),L(D)):M(D)}}}function Vf(e,t,i){let n=this;return r;function r(s){return s===null?t(s):(e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),a)}function a(s){return n.parser.lazy[n.now().line]?i(s):t(s)}}function Nd(e){let i=(e||{}).singleDollarTextMath;return i==null&&(i=!0),{tokenize:n,resolve:Uf,previous:Gf};function n(r,a,s){let o=this,l=0,d,c;return u;function u(b){return r.enter("mathText"),r.enter("mathTextSequence"),m(b)}function m(b){return b===36?(r.consume(b),l++,m):l<2&&!i?s(b):(r.exit("mathTextSequence"),g(b))}function g(b){return b===null?s(b):b===36?(c=r.enter("mathTextSequence"),d=0,x(b)):b===32?(r.enter("space"),r.consume(b),r.exit("space"),g):F(b)?(r.enter("lineEnding"),r.consume(b),r.exit("lineEnding"),g):(r.enter("mathTextData"),h(b))}function h(b){return b===null||b===32||b===36||F(b)?(r.exit("mathTextData"),g(b)):(r.consume(b),h)}function x(b){return b===36?(r.consume(b),d++,x):d===l?(r.exit("mathTextSequence"),r.exit("mathText"),a(b)):(c.type="mathTextData",h(b))}}}function Uf(e){let t=e.length-4,i=3,n,r;if((e[i][1].type==="lineEnding"||e[i][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(n=i;++n<t;)if(e[n][1].type==="mathTextData"){e[t][1].type="mathTextPadding",e[i][1].type="mathTextPadding",i+=2,t-=2;break}}for(n=i-1,t++;++n<=t;)r===void 0?n!==t&&e[n][1].type!=="lineEnding"&&(r=n):(n===t||e[n][1].type==="lineEnding")&&(e[r][1].type="mathTextData",n!==r+2&&(e[r][1].end=e[n-1][1].end,e.splice(r+2,n-r-2),t-=n-r-2,n=r+2),r=void 0);return e}function Gf(e){return e!==36||this.events[this.events.length-1][1].type==="characterEscape"}function Ho(e){return{flow:{[36]:Dd},text:{[36]:Nd(e)}}}function jd(e){if(!e._compiled){let t=(e.atBreak?"[\\r\\n][\\t ]*":"")+(e.before?"(?:"+e.before+")":"");e._compiled=new RegExp((t?"("+t+")":"")+(/[|\\{}()[\]^$+*?.-]/.test(e.character)?"\\":"")+e.character+(e.after?"(?:"+e.after+")":""),"g")}return e._compiled}function Yd(e,t){return Kd(e,t.inConstruct,!0)&&!Kd(e,t.notInConstruct,!1)}function Kd(e,t,i){if(typeof t=="string"&&(t=[t]),!t||t.length===0)return i;let n=-1;for(;++n<t.length;)if(e.includes(t[n]))return!0;return!1}function Hd(e,t,i){let n=(i.before||"")+(t||"")+(i.after||""),r=[],a=[],s={},o=-1;for(;++o<e.unsafe.length;){let c=e.unsafe[o];if(!Yd(e.stack,c))continue;let u=jd(c),m;for(;m=u.exec(n);){let g="before"in c||Boolean(c.atBreak),h="after"in c,x=m.index+(g?m[1].length:0);r.includes(x)?(s[x].before&&!g&&(s[x].before=!1),s[x].after&&!h&&(s[x].after=!1)):(r.push(x),s[x]={before:g,after:h})}}r.sort(Qf);let l=i.before?i.before.length:0,d=n.length-(i.after?i.after.length:0);for(o=-1;++o<r.length;){let c=r[o];c<l||c>=d||c+1<d&&r[o+1]===c+1&&s[c].after&&!s[c+1].before&&!s[c+1].after||r[o-1]===c-1&&s[c].before&&!s[c-1].before&&!s[c-1].after||(l!==c&&a.push(Pd(n.slice(l,c),"\\")),l=c,/[!-/:-@[-`{-~]/.test(n.charAt(c))&&(!i.encode||!i.encode.includes(n.charAt(c)))?a.push("\\"):(a.push("&#x"+n.charCodeAt(c).toString(16).toUpperCase()+";"),l++))}return a.push(Pd(n.slice(l,d),i.after)),a.join("")}function Qf(e,t){return e-t}function Pd(e,t){let i=/\\(?=[!-/:-@[-`{-~])/g,n=[],r=[],a=e+t,s=-1,o=0,l;for(;l=i.exec(a);)n.push(l.index);for(;++s<n.length;)o!==n[s]&&r.push(e.slice(o,n[s])),r.push("\\"),o=n[s];return r.push(e.slice(o)),r.join("")}function $d(e){let t=e||{},i=t.now||{},n=t.lineShift||0,r=i.line||1,a=i.column||1;return{move:l,current:s,shift:o};function s(){return{now:{line:r,column:a},lineShift:n}}function o(d){n+=d}function l(d){let c=d||"",u=c.split(/\r?\n|\r/g),m=u[u.length-1];return r+=u.length-1,a=u.length===1?a+m.length:1+m.length+n,c}}function $o(){return{enter:{mathFlow:e,mathFlowFenceMeta:t,mathText:a},exit:{mathFlow:r,mathFlowFence:n,mathFlowFenceMeta:i,mathFlowValue:o,mathText:s,mathTextData:o}};function e(l){this.enter({type:"math",meta:null,value:"",data:{hName:"div",hProperties:{className:["math","math-display"]},hChildren:[{type:"text",value:""}]}},l)}function t(){this.buffer()}function i(){let l=this.resume(),d=this.stack[this.stack.length-1];d.meta=l}function n(){this.getData("mathFlowInside")||(this.buffer(),this.setData("mathFlowInside",!0))}function r(l){let d=this.resume().replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),c=this.exit(l);c.value=d,c.data.hChildren[0].value=d,this.setData("mathFlowInside")}function a(l){this.enter({type:"inlineMath",value:"",data:{hName:"span",hProperties:{className:["math","math-inline"]},hChildren:[{type:"text",value:""}]}},l),this.buffer()}function s(l){let d=this.resume(),c=this.exit(l);c.value=d,c.data.hChildren[0].value=d}function o(l){this.config.enter.data.call(this,l),this.config.exit.data.call(this,l)}}var Zf={};function Wo(e,t){let i=t||Zf,n=typeof i.includeImageAlt=="boolean"?i.includeImageAlt:!0,r=typeof i.includeHtml=="boolean"?i.includeHtml:!0;return Vd(e,n,r)}function Vd(e,t,i){if(Jf(e)){if("value"in e)return e.type==="html"&&!i?"":e.value;if(t&&"alt"in e&&e.alt)return e.alt;if("children"in e)return Wd(e.children,t,i)}return Array.isArray(e)?Wd(e,t,i):""}function Wd(e,t,i){let n=[],r=-1;for(;++r<e.length;)n[r]=Vd(e[r],t,i);return n.join("")}function Jf(e){return Boolean(e&&typeof e=="object")}var Ud={tokenize:Xf};function Xf(e){let t=e.attempt(this.parser.constructs.contentInitial,n,r),i;return t;function n(o){if(o===null){e.consume(o);return}return e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),Y(e,t,"linePrefix")}function r(o){return e.enter("paragraph"),a(o)}function a(o){let l=e.enter("chunkText",{contentType:"text",previous:i});return i&&(i.next=l),i=l,s(o)}function s(o){if(o===null){e.exit("chunkText"),e.exit("paragraph"),e.consume(o);return}return F(o)?(e.consume(o),e.exit("chunkText"),a):(e.consume(o),s)}}var Qd={tokenize:ey},Gd={tokenize:iy};function ey(e){let t=this,i=[],n=0,r,a,s;return o;function o(L){if(n<i.length){let M=i[n];return t.containerState=M[1],e.attempt(M[0].continuation,l,d)(L)}return d(L)}function l(L){if(n++,t.containerState._closeFlow){t.containerState._closeFlow=void 0,r&&S();let M=t.events.length,B=M,T;for(;B--;)if(t.events[B][0]==="exit"&&t.events[B][1].type==="chunkFlow"){T=t.events[B][1].end;break}v(n);let _=M;for(;_<t.events.length;)t.events[_][1].end=Object.assign({},T),_++;return Oe(t.events,B+1,0,t.events.slice(M)),t.events.length=_,d(L)}return o(L)}function d(L){if(n===i.length){if(!r)return m(L);if(r.currentConstruct&&r.currentConstruct.concrete)return h(L);t.interrupt=Boolean(r.currentConstruct&&!r._gfmTableDynamicInterruptHack)}return t.containerState={},e.check(Gd,c,u)(L)}function c(L){return r&&S(),v(n),m(L)}function u(L){return t.parser.lazy[t.now().line]=n!==i.length,s=t.now().offset,h(L)}function m(L){return t.containerState={},e.attempt(Gd,g,h)(L)}function g(L){return n++,i.push([t.currentConstruct,t.containerState]),m(L)}function h(L){if(L===null){r&&S(),v(0),e.consume(L);return}return r=r||t.parser.flow(t.now()),e.enter("chunkFlow",{contentType:"flow",previous:a,_tokenizer:r}),x(L)}function x(L){if(L===null){b(e.exit("chunkFlow"),!0),v(0),e.consume(L);return}return F(L)?(e.consume(L),b(e.exit("chunkFlow")),n=0,t.interrupt=void 0,o):(e.consume(L),x)}function b(L,M){let B=t.sliceStream(L);if(M&&B.push(null),L.previous=a,a&&(a.next=L),a=L,r.defineSkip(L.start),r.write(B),t.parser.lazy[L.start.line]){let T=r.events.length;for(;T--;)if(r.events[T][1].start.offset<s&&(!r.events[T][1].end||r.events[T][1].end.offset>s))return;let _=t.events.length,q=_,D,H;for(;q--;)if(t.events[q][0]==="exit"&&t.events[q][1].type==="chunkFlow"){if(D){H=t.events[q][1].end;break}D=!0}for(v(n),T=_;T<t.events.length;)t.events[T][1].end=Object.assign({},H),T++;Oe(t.events,q+1,0,t.events.slice(_)),t.events.length=T}}function v(L){let M=i.length;for(;M-- >L;){let B=i[M];t.containerState=B[1],B[0].exit.call(t,e)}i.length=L}function S(){r.write([null]),a=void 0,r=void 0,t.containerState._closeFlow=void 0}}function iy(e,t,i){return Y(e,e.attempt(this.parser.constructs.document,t,i),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}var Zd={tokenize:ty};function ty(e){let t=this,i=e.attempt(yi,n,e.attempt(this.parser.constructs.flowInitial,r,Y(e,e.attempt(this.parser.constructs.flow,r,e.attempt(Io,r)),"linePrefix")));return i;function n(a){if(a===null){e.consume(a);return}return e.enter("lineEndingBlank"),e.consume(a),e.exit("lineEndingBlank"),t.currentConstruct=void 0,i}function r(a){if(a===null){e.consume(a);return}return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),t.currentConstruct=void 0,i}}var Jd={resolveAll:tu()},Xd=iu("string"),eu=iu("text");function iu(e){return{tokenize:t,resolveAll:tu(e==="text"?ny:void 0)};function t(i){let n=this,r=this.parser.constructs[e],a=i.attempt(r,s,o);return s;function s(c){return d(c)?a(c):o(c)}function o(c){if(c===null){i.consume(c);return}return i.enter("data"),i.consume(c),l}function l(c){return d(c)?(i.exit("data"),a(c)):(i.consume(c),l)}function d(c){if(c===null)return!0;let u=r[c],m=-1;if(u)for(;++m<u.length;){let g=u[m];if(!g.previous||g.previous.call(n,n.previous))return!0}return!1}}}function tu(e){return t;function t(i,n){let r=-1,a;for(;++r<=i.length;)a===void 0?i[r]&&i[r][1].type==="data"&&(a=r,r++):(!i[r]||i[r][1].type!=="data")&&(r!==a+2&&(i[a][1].end=i[r-1][1].end,i.splice(a+2,r-a-2),r=a+2),a=void 0);return e?e(i,n):i}}function ny(e,t){let i=0;for(;++i<=e.length;)if((i===e.length||e[i][1].type==="lineEnding")&&e[i-1][1].type==="data"){let n=e[i-1][1],r=t.sliceStream(n),a=r.length,s=-1,o=0,l;for(;a--;){let d=r[a];if(typeof d=="string"){for(s=d.length;d.charCodeAt(s-1)===32;)o++,s--;if(s)break;s=-1}else if(d===-2)l=!0,o++;else if(d!==-1){a++;break}}if(o){let d={type:i===e.length||l||o<2?"lineSuffix":"hardBreakTrailing",start:{line:n.end.line,column:n.end.column-o,offset:n.end.offset-o,_index:n.start._index+a,_bufferIndex:a?s:n.start._bufferIndex+s},end:Object.assign({},n.end)};n.end=Object.assign({},d.start),n.start.offset===n.end.offset?Object.assign(n,d):(e.splice(i,0,["enter",d,t],["exit",d,t]),i+=2)}i++}return e}function nu(e,t,i){let n=Object.assign(i?Object.assign({},i):{line:1,column:1,offset:0},{_index:0,_bufferIndex:-1}),r={},a=[],s=[],o=[],l=!0,d={consume:M,enter:B,exit:T,attempt:D(_),check:D(q),interrupt:D(q,{interrupt:!0})},c={previous:null,code:null,containerState:{},events:[],parser:e,sliceStream:x,sliceSerialize:h,now:b,defineSkip:v,write:g},u=t.tokenize.call(c,d),m;return t.resolveAll&&a.push(t),c;function g(R){return s=Ne(s,R),S(),s[s.length-1]!==null?[]:(H(t,0),c.events=Gt(a,c.events,c),c.events)}function h(R,$){return ay(x(R),$)}function x(R){return ry(s,R)}function b(){return Object.assign({},n)}function v(R){r[R.line]=R.column,V()}function S(){let R;for(;n._index<s.length;){let $=s[n._index];if(typeof $=="string")for(R=n._index,n._bufferIndex<0&&(n._bufferIndex=0);n._index===R&&n._bufferIndex<$.length;)L($.charCodeAt(n._bufferIndex));else L($)}}function L(R){l=void 0,m=R,u=u(R)}function M(R){F(R)?(n.line++,n.column=1,n.offset+=R===-3?2:1,V()):R!==-1&&(n.column++,n.offset++),n._bufferIndex<0?n._index++:(n._bufferIndex++,n._bufferIndex===s[n._index].length&&(n._bufferIndex=-1,n._index++)),c.previous=R,l=!0}function B(R,$){let re=$||{};return re.type=R,re.start=b(),c.events.push(["enter",re,c]),o.push(re),re}function T(R){let $=o.pop();return $.end=b(),c.events.push(["exit",$,c]),$}function _(R,$){H(R,$.from)}function q(R,$){$.restore()}function D(R,$){return re;function re(Q,ce,de){let ue,ae,z,k;return Array.isArray(Q)?He(Q):"tokenize"in Q?He([Q]):mi(Q);function mi(se){return Ti;function Ti(ai){let gi=ai!==null&&se[ai],Li=ai!==null&&se.null,Kt=[...Array.isArray(gi)?gi:gi?[gi]:[],...Array.isArray(Li)?Li:Li?[Li]:[]];return He(Kt)(ai)}}function He(se){return ue=se,ae=0,se.length===0?de:_e(se[ae])}function _e(se){return Ti;function Ti(ai){return k=j(),z=se,se.partial||(c.currentConstruct=se),se.name&&c.parser.constructs.disable.null.includes(se.name)?Re(ai):se.tokenize.call($?Object.assign(Object.create(c),$):c,d,ri,Re)(ai)}}function ri(se){return l=!0,R(z,k),ce}function Re(se){return l=!0,k.restore(),++ae<ue.length?_e(ue[ae]):de}}}function H(R,$){R.resolveAll&&!a.includes(R)&&a.push(R),R.resolve&&Oe(c.events,$,c.events.length-$,R.resolve(c.events.slice($),c)),R.resolveTo&&(c.events=R.resolveTo(c.events,c))}function j(){let R=b(),$=c.previous,re=c.currentConstruct,Q=c.events.length,ce=Array.from(o);return{restore:de,from:Q};function de(){n=R,c.previous=$,c.currentConstruct=re,c.events.length=Q,o=ce,V()}}function V(){n.line in r&&n.column<2&&(n.column=r[n.line],n.offset+=r[n.line]-1)}}function ry(e,t){let i=t.start._index,n=t.start._bufferIndex,r=t.end._index,a=t.end._bufferIndex,s;return i===r?s=[e[i].slice(n,a)]:(s=e.slice(i,r),n>-1&&(s[0]=s[0].slice(n)),a>0&&s.push(e[r].slice(0,a))),s}function ay(e,t){let i=-1,n=[],r;for(;++i<e.length;){let a=e[i],s;if(typeof a=="string")s=a;else switch(a){case-5:{s="\r";break}case-4:{s=` +`+e.substring(o);let x=e.indexOf(` +`,o+1),v="";x===-1?v=e.substring(o):v=e.substring(o+1,x);let z=r?df(v,n,a):rs(v);return e.substring(0,i)+z+e.substring(o)}function St(e,t,i,n=!1){let[r,a]=fn(e,t);if(r.trim()!==""){let o=ss.test(e.substring(t,i)),l=Ji(r,">"),c=yf(e,i,l),d=hf(e,r,c,o,n);return a=ff(d,a,l),mf(d,r,a,o,n)}let s=gf(e,i);return pf(s,a)}function nu(e,t=0){let i=3735928559^t,n=1103547991^t;for(let r=0,a;r<e.length;r++)a=e.charCodeAt(r),i=Math.imul(i^a,2654435761),n=Math.imul(n^a,1597334677);return i=Math.imul(i^i>>>16,2246822507)^Math.imul(n^n>>>13,3266489909),n=Math.imul(n^n>>>16,2246822507)^Math.imul(i^i>>>13,3266489909),4294967296*(2097151&n)+(i>>>0)}function ru(e){return e=e.replaceAll("\\b","\b"),e=e.replaceAll("\\f","\f"),e=e.replaceAll("\\n",` +`),e=e.replaceAll("\\r","\r"),e=e.replaceAll("\\t"," "),e=e.replaceAll("\\v","\v"),e}function Xn(e,t){if(t==0)return t;let i=t;for(;i>0&&e.charAt(i-1)!==` +`;)i--;return i}function au(e,t,i,n){return n>e.length-1?e:e.slice(0,n)+e.slice(n,e.length).replace(t,i)}function Ji(e,t){let i=0;for(let n=0,r=e.length;n<r;n++){let a=e.indexOf(t,n);a>-1&&(i++,n=a)}return i}function as(e){let t=typeof e;return t!="string"?t==="number":!isNaN(e)&&!isNaN(parseFloat(e))}function su(e,t){let i=[],n=-1;for(;(n=t.indexOf(e,n+1))>=0;)i.push(n);return i}function ff(e,t,i){let n=t,r=t+1,a="",s=!1,o=0;for(;r<e.length;){if(a=e.charAt(r),a.trim()!==""&&a!==">"){s=!0;break}else if(a===` +`){if(o!==i)break;o=0,n=r}else a===">"&&o++;r++}return s?n:t}function yf(e,t,i){let n=t,r=t-1,a="",s=!1,o=0;for(;r>=0;){if(a=e.charAt(r),a.trim()!==""&&a!==">"){s=!0;break}else if(a===` +`){if(o!==i)break;o=0,n=r}else a===">"&&o++;r--}return s?n:t}function Fe(e,t,i,n){let r=e.length,a=0,s;if(t<0?t=-t>r?0:r+t:t=t>r?r:t,i=i>0?i:0,n.length<1e4)s=Array.from(n),s.unshift(t,i),e.splice(...s);else for(i&&e.splice(t,i);a<n.length;)s=n.slice(a,a+1e4),s.unshift(t,0),e.splice(...s),a+=1e4,t+=1e4}function Ve(e,t){return e.length>0?(Fe(e,e.length,0,t),e):t}var bf=Xi(/\p{P}/u),ri=Xi(/[A-Za-z]/),Ge=Xi(/[\dA-Za-z]/),ou=Xi(/[#-'*+\--9=?A-Z^-~]/);function er(e){return e!==null&&(e<32||e===127)}var ir=Xi(/\d/),lu=Xi(/[\dA-Fa-f]/),il=Xi(/[!-/:-@[-`{-~]/);function F(e){return e!==null&&e<-2}function te(e){return e!==null&&(e<0||e===32)}function W(e){return e===-2||e===-1||e===32}function cu(e){return il(e)||bf(e)}var du=Xi(/\s/);function Xi(e){return t;function t(i){return i!==null&&i>-1&&e.test(String.fromCharCode(i))}}function tl(e){if(e===null||te(e)||du(e))return 1;if(cu(e))return 2}function yn(e,t,i){let n=[],r=-1;for(;++r<e.length;){let a=e[r].resolveAll;a&&!n.includes(a)&&(t=a(t,i),n.push(a))}return t}var tr={name:"attention",tokenize:xf,resolveAll:vf};function vf(e,t){let i=-1,n,r,a,s,o,l,c,d;for(;++i<e.length;)if(e[i][0]==="enter"&&e[i][1].type==="attentionSequence"&&e[i][1]._close){for(n=i;n--;)if(e[n][0]==="exit"&&e[n][1].type==="attentionSequence"&&e[n][1]._open&&t.sliceSerialize(e[n][1]).charCodeAt(0)===t.sliceSerialize(e[i][1]).charCodeAt(0)){if((e[n][1]._close||e[i][1]._open)&&(e[i][1].end.offset-e[i][1].start.offset)%3&&!((e[n][1].end.offset-e[n][1].start.offset+e[i][1].end.offset-e[i][1].start.offset)%3))continue;l=e[n][1].end.offset-e[n][1].start.offset>1&&e[i][1].end.offset-e[i][1].start.offset>1?2:1;let u=Object.assign({},e[n][1].end),g=Object.assign({},e[i][1].start);uu(u,-l),uu(g,l),s={type:l>1?"strongSequence":"emphasisSequence",start:u,end:Object.assign({},e[n][1].end)},o={type:l>1?"strongSequence":"emphasisSequence",start:Object.assign({},e[i][1].start),end:g},a={type:l>1?"strongText":"emphasisText",start:Object.assign({},e[n][1].end),end:Object.assign({},e[i][1].start)},r={type:l>1?"strong":"emphasis",start:Object.assign({},s.start),end:Object.assign({},o.end)},e[n][1].end=Object.assign({},s.start),e[i][1].start=Object.assign({},o.end),c=[],e[n][1].end.offset-e[n][1].start.offset&&(c=Ve(c,[["enter",e[n][1],t],["exit",e[n][1],t]])),c=Ve(c,[["enter",r,t],["enter",s,t],["exit",s,t],["enter",a,t]]),c=Ve(c,yn(t.parser.constructs.insideSpan.null,e.slice(n+1,i),t)),c=Ve(c,[["exit",a,t],["enter",o,t],["exit",o,t],["exit",r,t]]),e[i][1].end.offset-e[i][1].start.offset?(d=2,c=Ve(c,[["enter",e[i][1],t],["exit",e[i][1],t]])):d=0,Fe(e,n-1,i-n+3,c),i=n+c.length-d-2;break}}for(i=-1;++i<e.length;)e[i][1].type==="attentionSequence"&&(e[i][1].type="data");return e}function xf(e,t){let i=this.parser.constructs.attentionMarkers.null,n=this.previous,r=tl(n),a;return s;function s(l){return a=l,e.enter("attentionSequence"),o(l)}function o(l){if(l===a)return e.consume(l),o;let c=e.exit("attentionSequence"),d=tl(l),u=!d||d===2&&r||i.includes(l),g=!r||r===2&&d||i.includes(n);return c._open=!!(a===42?u:u&&(r||!g)),c._close=!!(a===42?g:g&&(d||!u)),t(l)}}function uu(e,t){e.column+=t,e.offset+=t,e._bufferIndex+=t}var nl={name:"autolink",tokenize:wf};function wf(e,t,i){let n=0;return r;function r(m){return e.enter("autolink"),e.enter("autolinkMarker"),e.consume(m),e.exit("autolinkMarker"),e.enter("autolinkProtocol"),a}function a(m){return ri(m)?(e.consume(m),s):c(m)}function s(m){return m===43||m===45||m===46||Ge(m)?(n=1,o(m)):c(m)}function o(m){return m===58?(e.consume(m),n=0,l):(m===43||m===45||m===46||Ge(m))&&n++<32?(e.consume(m),o):(n=0,c(m))}function l(m){return m===62?(e.exit("autolinkProtocol"),e.enter("autolinkMarker"),e.consume(m),e.exit("autolinkMarker"),e.exit("autolink"),t):m===null||m===32||m===60||er(m)?i(m):(e.consume(m),l)}function c(m){return m===64?(e.consume(m),d):ou(m)?(e.consume(m),c):i(m)}function d(m){return Ge(m)?u(m):i(m)}function u(m){return m===46?(e.consume(m),n=0,d):m===62?(e.exit("autolinkProtocol").type="autolinkEmail",e.enter("autolinkMarker"),e.consume(m),e.exit("autolinkMarker"),e.exit("autolink"),t):g(m)}function g(m){if((m===45||Ge(m))&&n++<63){let f=m===45?g:u;return e.consume(m),f}return i(m)}}function j(e,t,i,n){let r=n?n-1:Number.POSITIVE_INFINITY,a=0;return s;function s(l){return W(l)?(e.enter(i),o(l)):t(l)}function o(l){return W(l)&&a++<r?(e.consume(l),o):(e.exit(i),t(l))}}var Ei={tokenize:kf,partial:!0};function kf(e,t,i){return n;function n(a){return W(a)?j(e,r,"linePrefix")(a):r(a)}function r(a){return a===null||F(a)?t(a):i(a)}}var os={name:"blockQuote",tokenize:Sf,continuation:{tokenize:zf},exit:Af};function Sf(e,t,i){let n=this;return r;function r(s){if(s===62){let o=n.containerState;return o.open||(e.enter("blockQuote",{_container:!0}),o.open=!0),e.enter("blockQuotePrefix"),e.enter("blockQuoteMarker"),e.consume(s),e.exit("blockQuoteMarker"),a}return i(s)}function a(s){return W(s)?(e.enter("blockQuotePrefixWhitespace"),e.consume(s),e.exit("blockQuotePrefixWhitespace"),e.exit("blockQuotePrefix"),t):(e.exit("blockQuotePrefix"),t(s))}}function zf(e,t,i){let n=this;return r;function r(s){return W(s)?j(e,a,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(s):a(s)}function a(s){return e.attempt(os,t,i)(s)}}function Af(e){e.exit("blockQuote")}var ls={name:"characterEscape",tokenize:Tf};function Tf(e,t,i){return n;function n(a){return e.enter("characterEscape"),e.enter("escapeMarker"),e.consume(a),e.exit("escapeMarker"),r}function r(a){return il(a)?(e.enter("characterEscapeValue"),e.consume(a),e.exit("characterEscapeValue"),e.exit("characterEscape"),t):i(a)}}var pu=document.createElement("i");function bn(e){let t="&"+e+";";pu.innerHTML=t;let i=pu.textContent;return i.charCodeAt(i.length-1)===59&&e!=="semi"||i===t?!1:i}var cs={name:"characterReference",tokenize:Lf};function Lf(e,t,i){let n=this,r=0,a,s;return o;function o(u){return e.enter("characterReference"),e.enter("characterReferenceMarker"),e.consume(u),e.exit("characterReferenceMarker"),l}function l(u){return u===35?(e.enter("characterReferenceMarkerNumeric"),e.consume(u),e.exit("characterReferenceMarkerNumeric"),c):(e.enter("characterReferenceValue"),a=31,s=Ge,d(u))}function c(u){return u===88||u===120?(e.enter("characterReferenceMarkerHexadecimal"),e.consume(u),e.exit("characterReferenceMarkerHexadecimal"),e.enter("characterReferenceValue"),a=6,s=lu,d):(e.enter("characterReferenceValue"),a=7,s=ir,d(u))}function d(u){if(u===59&&r){let g=e.exit("characterReferenceValue");return s===Ge&&!bn(n.sliceSerialize(g))?i(u):(e.enter("characterReferenceMarker"),e.consume(u),e.exit("characterReferenceMarker"),e.exit("characterReference"),t)}return s(u)&&r++<a?(e.consume(u),d):i(u)}}var mu={tokenize:Of,partial:!0},ds={name:"codeFenced",tokenize:Ef,concrete:!0};function Ef(e,t,i){let n=this,r={tokenize:R,partial:!0},a=0,s=0,o;return l;function l(T){return c(T)}function c(T){let B=n.events[n.events.length-1];return a=B&&B[1].type==="linePrefix"?B[2].sliceSerialize(B[1],!0).length:0,o=T,e.enter("codeFenced"),e.enter("codeFencedFence"),e.enter("codeFencedFenceSequence"),d(T)}function d(T){return T===o?(s++,e.consume(T),d):s<3?i(T):(e.exit("codeFencedFenceSequence"),W(T)?j(e,u,"whitespace")(T):u(T))}function u(T){return T===null||F(T)?(e.exit("codeFencedFence"),n.interrupt?t(T):e.check(mu,w,C)(T)):(e.enter("codeFencedFenceInfo"),e.enter("chunkString",{contentType:"string"}),g(T))}function g(T){return T===null||F(T)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),u(T)):W(T)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),j(e,m,"whitespace")(T)):T===96&&T===o?i(T):(e.consume(T),g)}function m(T){return T===null||F(T)?u(T):(e.enter("codeFencedFenceMeta"),e.enter("chunkString",{contentType:"string"}),f(T))}function f(T){return T===null||F(T)?(e.exit("chunkString"),e.exit("codeFencedFenceMeta"),u(T)):T===96&&T===o?i(T):(e.consume(T),f)}function w(T){return e.attempt(r,C,x)(T)}function x(T){return e.enter("lineEnding"),e.consume(T),e.exit("lineEnding"),v}function v(T){return a>0&&W(T)?j(e,z,"linePrefix",a+1)(T):z(T)}function z(T){return T===null||F(T)?e.check(mu,w,C)(T):(e.enter("codeFlowValue"),L(T))}function L(T){return T===null||F(T)?(e.exit("codeFlowValue"),z(T)):(e.consume(T),L)}function C(T){return e.exit("codeFenced"),t(T)}function R(T,B,q){let _=0;return P;function P(H){return T.enter("lineEnding"),T.consume(H),T.exit("lineEnding"),X}function X(H){return T.enter("codeFencedFence"),W(H)?j(T,Q,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(H):Q(H)}function Q(H){return H===o?(T.enter("codeFencedFenceSequence"),N(H)):q(H)}function N(H){return H===o?(_++,T.consume(H),N):_>=s?(T.exit("codeFencedFenceSequence"),W(H)?j(T,V,"whitespace")(H):V(H)):q(H)}function V(H){return H===null||F(H)?(T.exit("codeFencedFence"),B(H)):q(H)}}}function Of(e,t,i){let n=this;return r;function r(s){return s===null?i(s):(e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),a)}function a(s){return n.parser.lazy[n.now().line]?i(s):t(s)}}var nr={name:"codeIndented",tokenize:Mf},Cf={tokenize:qf,partial:!0};function Mf(e,t,i){let n=this;return r;function r(c){return e.enter("codeIndented"),j(e,a,"linePrefix",4+1)(c)}function a(c){let d=n.events[n.events.length-1];return d&&d[1].type==="linePrefix"&&d[2].sliceSerialize(d[1],!0).length>=4?s(c):i(c)}function s(c){return c===null?l(c):F(c)?e.attempt(Cf,s,l)(c):(e.enter("codeFlowValue"),o(c))}function o(c){return c===null||F(c)?(e.exit("codeFlowValue"),s(c)):(e.consume(c),o)}function l(c){return e.exit("codeIndented"),t(c)}}function qf(e,t,i){let n=this;return r;function r(s){return n.parser.lazy[n.now().line]?i(s):F(s)?(e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),r):j(e,a,"linePrefix",4+1)(s)}function a(s){let o=n.events[n.events.length-1];return o&&o[1].type==="linePrefix"&&o[2].sliceSerialize(o[1],!0).length>=4?t(s):F(s)?r(s):i(s)}}var rl={name:"codeText",tokenize:_f,resolve:If,previous:Bf};function If(e){let t=e.length-4,i=3,n,r;if((e[i][1].type==="lineEnding"||e[i][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(n=i;++n<t;)if(e[n][1].type==="codeTextData"){e[i][1].type="codeTextPadding",e[t][1].type="codeTextPadding",i+=2,t-=2;break}}for(n=i-1,t++;++n<=t;)r===void 0?n!==t&&e[n][1].type!=="lineEnding"&&(r=n):(n===t||e[n][1].type==="lineEnding")&&(e[r][1].type="codeTextData",n!==r+2&&(e[r][1].end=e[n-1][1].end,e.splice(r+2,n-r-2),t-=n-r-2,n=r+2),r=void 0);return e}function Bf(e){return e!==96||this.events[this.events.length-1][1].type==="characterEscape"}function _f(e,t,i){let n=this,r=0,a,s;return o;function o(g){return e.enter("codeText"),e.enter("codeTextSequence"),l(g)}function l(g){return g===96?(e.consume(g),r++,l):(e.exit("codeTextSequence"),c(g))}function c(g){return g===null?i(g):g===32?(e.enter("space"),e.consume(g),e.exit("space"),c):g===96?(s=e.enter("codeTextSequence"),a=0,u(g)):F(g)?(e.enter("lineEnding"),e.consume(g),e.exit("lineEnding"),c):(e.enter("codeTextData"),d(g))}function d(g){return g===null||g===32||g===96||F(g)?(e.exit("codeTextData"),c(g)):(e.consume(g),d)}function u(g){return g===96?(e.consume(g),a++,u):a===r?(e.exit("codeTextSequence"),e.exit("codeText"),t(g)):(s.type="codeTextData",d(g))}}function us(e){let t={},i=-1,n,r,a,s,o,l,c;for(;++i<e.length;){for(;i in t;)i=t[i];if(n=e[i],i&&n[1].type==="chunkFlow"&&e[i-1][1].type==="listItemPrefix"&&(l=n[1]._tokenizer.events,a=0,a<l.length&&l[a][1].type==="lineEndingBlank"&&(a+=2),a<l.length&&l[a][1].type==="content"))for(;++a<l.length&&l[a][1].type!=="content";)l[a][1].type==="chunkText"&&(l[a][1]._isInFirstContentOfListItem=!0,a++);if(n[0]==="enter")n[1].contentType&&(Object.assign(t,Ff(e,i)),i=t[i],c=!0);else if(n[1]._container){for(a=i,r=void 0;a--&&(s=e[a],s[1].type==="lineEnding"||s[1].type==="lineEndingBlank");)s[0]==="enter"&&(r&&(e[r][1].type="lineEndingBlank"),s[1].type="lineEnding",r=a);r&&(n[1].end=Object.assign({},e[r][1].start),o=e.slice(r,i),o.unshift(n),Fe(e,r,i-r+1,o))}}return!c}function Ff(e,t){let i=e[t][1],n=e[t][2],r=t-1,a=[],s=i._tokenizer||n.parser[i.contentType](i.start),o=s.events,l=[],c={},d,u,g=-1,m=i,f=0,w=0,x=[w];for(;m;){for(;e[++r][1]!==m;);a.push(r),m._tokenizer||(d=n.sliceStream(m),m.next||d.push(null),u&&s.defineSkip(m.start),m._isInFirstContentOfListItem&&(s._gfmTasklistFirstContentOfListItem=!0),s.write(d),m._isInFirstContentOfListItem&&(s._gfmTasklistFirstContentOfListItem=void 0)),u=m,m=m.next}for(m=i;++g<o.length;)o[g][0]==="exit"&&o[g-1][0]==="enter"&&o[g][1].type===o[g-1][1].type&&o[g][1].start.line!==o[g][1].end.line&&(w=g+1,x.push(w),m._tokenizer=void 0,m.previous=void 0,m=m.next);for(s.events=[],m?(m._tokenizer=void 0,m.previous=void 0):x.pop(),g=x.length;g--;){let v=o.slice(x[g],x[g+1]),z=a.pop();l.unshift([z,z+v.length-1]),Fe(e,z,2,v)}for(g=-1;++g<l.length;)c[f+l[g][0]]=f+l[g][1],f+=l[g][1]-l[g][0]-1;return c}var al={tokenize:Nf,resolve:Df},Rf={tokenize:Kf,partial:!0};function Df(e){return us(e),e}function Nf(e,t){let i;return n;function n(o){return e.enter("content"),i=e.enter("chunkContent",{contentType:"content"}),r(o)}function r(o){return o===null?a(o):F(o)?e.check(Rf,s,a)(o):(e.consume(o),r)}function a(o){return e.exit("chunkContent"),e.exit("content"),t(o)}function s(o){return e.consume(o),e.exit("chunkContent"),i.next=e.enter("chunkContent",{contentType:"content",previous:i}),i=i.next,r}}function Kf(e,t,i){let n=this;return r;function r(s){return e.exit("chunkContent"),e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),j(e,a,"linePrefix")}function a(s){if(s===null||F(s))return i(s);let o=n.events[n.events.length-1];return!n.parser.constructs.disable.null.includes("codeIndented")&&o&&o[1].type==="linePrefix"&&o[2].sliceSerialize(o[1],!0).length>=4?t(s):e.interrupt(n.parser.constructs.flow,i,t)(s)}}function ps(e,t,i,n,r,a,s,o,l){let c=l||Number.POSITIVE_INFINITY,d=0;return u;function u(v){return v===60?(e.enter(n),e.enter(r),e.enter(a),e.consume(v),e.exit(a),g):v===null||v===32||v===41||er(v)?i(v):(e.enter(n),e.enter(s),e.enter(o),e.enter("chunkString",{contentType:"string"}),w(v))}function g(v){return v===62?(e.enter(a),e.consume(v),e.exit(a),e.exit(r),e.exit(n),t):(e.enter(o),e.enter("chunkString",{contentType:"string"}),m(v))}function m(v){return v===62?(e.exit("chunkString"),e.exit(o),g(v)):v===null||v===60||F(v)?i(v):(e.consume(v),v===92?f:m)}function f(v){return v===60||v===62||v===92?(e.consume(v),m):m(v)}function w(v){return!d&&(v===null||v===41||te(v))?(e.exit("chunkString"),e.exit(o),e.exit(s),e.exit(n),t(v)):d<c&&v===40?(e.consume(v),d++,w):v===41?(e.consume(v),d--,w):v===null||v===32||v===40||er(v)?i(v):(e.consume(v),v===92?x:w)}function x(v){return v===40||v===41||v===92?(e.consume(v),w):w(v)}}function ms(e,t,i,n,r,a){let s=this,o=0,l;return c;function c(m){return e.enter(n),e.enter(r),e.consume(m),e.exit(r),e.enter(a),d}function d(m){return o>999||m===null||m===91||m===93&&!l||m===94&&!o&&"_hiddenFootnoteSupport"in s.parser.constructs?i(m):m===93?(e.exit(a),e.enter(r),e.consume(m),e.exit(r),e.exit(n),t):F(m)?(e.enter("lineEnding"),e.consume(m),e.exit("lineEnding"),d):(e.enter("chunkString",{contentType:"string"}),u(m))}function u(m){return m===null||m===91||m===93||F(m)||o++>999?(e.exit("chunkString"),d(m)):(e.consume(m),l||(l=!W(m)),m===92?g:u)}function g(m){return m===91||m===92||m===93?(e.consume(m),o++,u):u(m)}}function gs(e,t,i,n,r,a){let s;return o;function o(g){return g===34||g===39||g===40?(e.enter(n),e.enter(r),e.consume(g),e.exit(r),s=g===40?41:g,l):i(g)}function l(g){return g===s?(e.enter(r),e.consume(g),e.exit(r),e.exit(n),t):(e.enter(a),c(g))}function c(g){return g===s?(e.exit(a),l(s)):g===null?i(g):F(g)?(e.enter("lineEnding"),e.consume(g),e.exit("lineEnding"),j(e,c,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),d(g))}function d(g){return g===s||g===null||F(g)?(e.exit("chunkString"),c(g)):(e.consume(g),g===92?u:d)}function u(g){return g===s||g===92?(e.consume(g),d):d(g)}}function zt(e,t){let i;return n;function n(r){return F(r)?(e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),i=!0,n):W(r)?j(e,n,i?"linePrefix":"lineSuffix")(r):t(r)}}function Pe(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}var sl={name:"definition",tokenize:jf},Yf={tokenize:Pf,partial:!0};function jf(e,t,i){let n=this,r;return a;function a(m){return e.enter("definition"),s(m)}function s(m){return ms.call(n,e,o,i,"definitionLabel","definitionLabelMarker","definitionLabelString")(m)}function o(m){return r=Pe(n.sliceSerialize(n.events[n.events.length-1][1]).slice(1,-1)),m===58?(e.enter("definitionMarker"),e.consume(m),e.exit("definitionMarker"),l):i(m)}function l(m){return te(m)?zt(e,c)(m):c(m)}function c(m){return ps(e,d,i,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(m)}function d(m){return e.attempt(Yf,u,u)(m)}function u(m){return W(m)?j(e,g,"whitespace")(m):g(m)}function g(m){return m===null||F(m)?(e.exit("definition"),n.parser.defined.push(r),t(m)):i(m)}}function Pf(e,t,i){return n;function n(o){return te(o)?zt(e,r)(o):i(o)}function r(o){return gs(e,a,i,"definitionTitle","definitionTitleMarker","definitionTitleString")(o)}function a(o){return W(o)?j(e,s,"whitespace")(o):s(o)}function s(o){return o===null||F(o)?t(o):i(o)}}var ol={name:"hardBreakEscape",tokenize:Hf};function Hf(e,t,i){return n;function n(a){return e.enter("hardBreakEscape"),e.consume(a),r}function r(a){return F(a)?(e.exit("hardBreakEscape"),t(a)):i(a)}}var ll={name:"headingAtx",tokenize:Wf,resolve:$f};function $f(e,t){let i=e.length-2,n=3,r,a;return e[n][1].type==="whitespace"&&(n+=2),i-2>n&&e[i][1].type==="whitespace"&&(i-=2),e[i][1].type==="atxHeadingSequence"&&(n===i-1||i-4>n&&e[i-2][1].type==="whitespace")&&(i-=n+1===i?2:4),i>n&&(r={type:"atxHeadingText",start:e[n][1].start,end:e[i][1].end},a={type:"chunkText",start:e[n][1].start,end:e[i][1].end,contentType:"text"},Fe(e,n,i-n+1,[["enter",r,t],["enter",a,t],["exit",a,t],["exit",r,t]])),e}function Wf(e,t,i){let n=0;return r;function r(d){return e.enter("atxHeading"),a(d)}function a(d){return e.enter("atxHeadingSequence"),s(d)}function s(d){return d===35&&n++<6?(e.consume(d),s):d===null||te(d)?(e.exit("atxHeadingSequence"),o(d)):i(d)}function o(d){return d===35?(e.enter("atxHeadingSequence"),l(d)):d===null||F(d)?(e.exit("atxHeading"),t(d)):W(d)?j(e,o,"whitespace")(d):(e.enter("atxHeadingText"),c(d))}function l(d){return d===35?(e.consume(d),l):(e.exit("atxHeadingSequence"),o(d))}function c(d){return d===null||d===35||te(d)?(e.exit("atxHeadingText"),o(d)):(e.consume(d),c)}}var gu=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],cl=["pre","script","style","textarea"];var dl={name:"htmlFlow",tokenize:Qf,resolveTo:Gf,concrete:!0},Uf={tokenize:Jf,partial:!0},Vf={tokenize:Zf,partial:!0};function Gf(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function Qf(e,t,i){let n=this,r,a,s,o,l;return c;function c(S){return d(S)}function d(S){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(S),u}function u(S){return S===33?(e.consume(S),g):S===47?(e.consume(S),a=!0,w):S===63?(e.consume(S),r=3,n.interrupt?t:k):ri(S)?(e.consume(S),s=String.fromCharCode(S),x):i(S)}function g(S){return S===45?(e.consume(S),r=2,m):S===91?(e.consume(S),r=5,o=0,f):ri(S)?(e.consume(S),r=4,n.interrupt?t:k):i(S)}function m(S){return S===45?(e.consume(S),n.interrupt?t:k):i(S)}function f(S){let Se="CDATA[";return S===Se.charCodeAt(o++)?(e.consume(S),o===Se.length?n.interrupt?t:Q:f):i(S)}function w(S){return ri(S)?(e.consume(S),s=String.fromCharCode(S),x):i(S)}function x(S){if(S===null||S===47||S===62||te(S)){let Se=S===47,Ke=s.toLowerCase();return!Se&&!a&&cl.includes(Ke)?(r=1,n.interrupt?t(S):Q(S)):gu.includes(s.toLowerCase())?(r=6,Se?(e.consume(S),v):n.interrupt?t(S):Q(S)):(r=7,n.interrupt&&!n.parser.lazy[n.now().line]?i(S):a?z(S):L(S))}return S===45||Ge(S)?(e.consume(S),s+=String.fromCharCode(S),x):i(S)}function v(S){return S===62?(e.consume(S),n.interrupt?t:Q):i(S)}function z(S){return W(S)?(e.consume(S),z):P(S)}function L(S){return S===47?(e.consume(S),P):S===58||S===95||ri(S)?(e.consume(S),C):W(S)?(e.consume(S),L):P(S)}function C(S){return S===45||S===46||S===58||S===95||Ge(S)?(e.consume(S),C):R(S)}function R(S){return S===61?(e.consume(S),T):W(S)?(e.consume(S),R):L(S)}function T(S){return S===null||S===60||S===61||S===62||S===96?i(S):S===34||S===39?(e.consume(S),l=S,B):W(S)?(e.consume(S),T):q(S)}function B(S){return S===l?(e.consume(S),l=null,_):S===null||F(S)?i(S):(e.consume(S),B)}function q(S){return S===null||S===34||S===39||S===47||S===60||S===61||S===62||S===96||te(S)?R(S):(e.consume(S),q)}function _(S){return S===47||S===62||W(S)?L(S):i(S)}function P(S){return S===62?(e.consume(S),X):i(S)}function X(S){return S===null||F(S)?Q(S):W(S)?(e.consume(S),X):i(S)}function Q(S){return S===45&&r===2?(e.consume(S),J):S===60&&r===1?(e.consume(S),ee):S===62&&r===4?(e.consume(S),Ne):S===63&&r===3?(e.consume(S),k):S===93&&r===5?(e.consume(S),Me):F(S)&&(r===6||r===7)?(e.exit("htmlFlowData"),e.check(Uf,We,N)(S)):S===null||F(S)?(e.exit("htmlFlowData"),N(S)):(e.consume(S),Q)}function N(S){return e.check(Vf,V,We)(S)}function V(S){return e.enter("lineEnding"),e.consume(S),e.exit("lineEnding"),H}function H(S){return S===null||F(S)?N(S):(e.enter("htmlFlowData"),Q(S))}function J(S){return S===45?(e.consume(S),k):Q(S)}function ee(S){return S===47?(e.consume(S),s="",De):Q(S)}function De(S){if(S===62){let Se=s.toLowerCase();return cl.includes(Se)?(e.consume(S),Ne):Q(S)}return ri(S)&&s.length<8?(e.consume(S),s+=String.fromCharCode(S),De):Q(S)}function Me(S){return S===93?(e.consume(S),k):Q(S)}function k(S){return S===62?(e.consume(S),Ne):S===45&&r===2?(e.consume(S),k):Q(S)}function Ne(S){return S===null||F(S)?(e.exit("htmlFlowData"),We(S)):(e.consume(S),Ne)}function We(S){return e.exit("htmlFlow"),t(S)}}function Zf(e,t,i){let n=this;return r;function r(s){return F(s)?(e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),a):i(s)}function a(s){return n.parser.lazy[n.now().line]?i(s):t(s)}}function Jf(e,t,i){return n;function n(r){return e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),e.attempt(Ei,t,i)}}var ul={name:"htmlText",tokenize:Xf};function Xf(e,t,i){let n=this,r,a,s;return o;function o(k){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(k),l}function l(k){return k===33?(e.consume(k),c):k===47?(e.consume(k),R):k===63?(e.consume(k),L):ri(k)?(e.consume(k),q):i(k)}function c(k){return k===45?(e.consume(k),d):k===91?(e.consume(k),a=0,f):ri(k)?(e.consume(k),z):i(k)}function d(k){return k===45?(e.consume(k),m):i(k)}function u(k){return k===null?i(k):k===45?(e.consume(k),g):F(k)?(s=u,ee(k)):(e.consume(k),u)}function g(k){return k===45?(e.consume(k),m):u(k)}function m(k){return k===62?J(k):k===45?g(k):u(k)}function f(k){let Ne="CDATA[";return k===Ne.charCodeAt(a++)?(e.consume(k),a===Ne.length?w:f):i(k)}function w(k){return k===null?i(k):k===93?(e.consume(k),x):F(k)?(s=w,ee(k)):(e.consume(k),w)}function x(k){return k===93?(e.consume(k),v):w(k)}function v(k){return k===62?J(k):k===93?(e.consume(k),v):w(k)}function z(k){return k===null||k===62?J(k):F(k)?(s=z,ee(k)):(e.consume(k),z)}function L(k){return k===null?i(k):k===63?(e.consume(k),C):F(k)?(s=L,ee(k)):(e.consume(k),L)}function C(k){return k===62?J(k):L(k)}function R(k){return ri(k)?(e.consume(k),T):i(k)}function T(k){return k===45||Ge(k)?(e.consume(k),T):B(k)}function B(k){return F(k)?(s=B,ee(k)):W(k)?(e.consume(k),B):J(k)}function q(k){return k===45||Ge(k)?(e.consume(k),q):k===47||k===62||te(k)?_(k):i(k)}function _(k){return k===47?(e.consume(k),J):k===58||k===95||ri(k)?(e.consume(k),P):F(k)?(s=_,ee(k)):W(k)?(e.consume(k),_):J(k)}function P(k){return k===45||k===46||k===58||k===95||Ge(k)?(e.consume(k),P):X(k)}function X(k){return k===61?(e.consume(k),Q):F(k)?(s=X,ee(k)):W(k)?(e.consume(k),X):_(k)}function Q(k){return k===null||k===60||k===61||k===62||k===96?i(k):k===34||k===39?(e.consume(k),r=k,N):F(k)?(s=Q,ee(k)):W(k)?(e.consume(k),Q):(e.consume(k),V)}function N(k){return k===r?(e.consume(k),r=void 0,H):k===null?i(k):F(k)?(s=N,ee(k)):(e.consume(k),N)}function V(k){return k===null||k===34||k===39||k===60||k===61||k===96?i(k):k===47||k===62||te(k)?_(k):(e.consume(k),V)}function H(k){return k===47||k===62||te(k)?_(k):i(k)}function J(k){return k===62?(e.consume(k),e.exit("htmlTextData"),e.exit("htmlText"),t):i(k)}function ee(k){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(k),e.exit("lineEnding"),De}function De(k){return W(k)?j(e,Me,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(k):Me(k)}function Me(k){return e.enter("htmlTextData"),s(k)}}var At={name:"labelEnd",tokenize:ay,resolveTo:ry,resolveAll:ny},ey={tokenize:sy},iy={tokenize:oy},ty={tokenize:ly};function ny(e){let t=-1;for(;++t<e.length;){let i=e[t][1];(i.type==="labelImage"||i.type==="labelLink"||i.type==="labelEnd")&&(e.splice(t+1,i.type==="labelImage"?4:2),i.type="data",t++)}return e}function ry(e,t){let i=e.length,n=0,r,a,s,o;for(;i--;)if(r=e[i][1],a){if(r.type==="link"||r.type==="labelLink"&&r._inactive)break;e[i][0]==="enter"&&r.type==="labelLink"&&(r._inactive=!0)}else if(s){if(e[i][0]==="enter"&&(r.type==="labelImage"||r.type==="labelLink")&&!r._balanced&&(a=i,r.type!=="labelLink")){n=2;break}}else r.type==="labelEnd"&&(s=i);let l={type:e[a][1].type==="labelLink"?"link":"image",start:Object.assign({},e[a][1].start),end:Object.assign({},e[e.length-1][1].end)},c={type:"label",start:Object.assign({},e[a][1].start),end:Object.assign({},e[s][1].end)},d={type:"labelText",start:Object.assign({},e[a+n+2][1].end),end:Object.assign({},e[s-2][1].start)};return o=[["enter",l,t],["enter",c,t]],o=Ve(o,e.slice(a+1,a+n+3)),o=Ve(o,[["enter",d,t]]),o=Ve(o,yn(t.parser.constructs.insideSpan.null,e.slice(a+n+4,s-3),t)),o=Ve(o,[["exit",d,t],e[s-2],e[s-1],["exit",c,t]]),o=Ve(o,e.slice(s+1)),o=Ve(o,[["exit",l,t]]),Fe(e,a,e.length,o),e}function ay(e,t,i){let n=this,r=n.events.length,a,s;for(;r--;)if((n.events[r][1].type==="labelImage"||n.events[r][1].type==="labelLink")&&!n.events[r][1]._balanced){a=n.events[r][1];break}return o;function o(g){return a?a._inactive?u(g):(s=n.parser.defined.includes(Pe(n.sliceSerialize({start:a.end,end:n.now()}))),e.enter("labelEnd"),e.enter("labelMarker"),e.consume(g),e.exit("labelMarker"),e.exit("labelEnd"),l):i(g)}function l(g){return g===40?e.attempt(ey,d,s?d:u)(g):g===91?e.attempt(iy,d,s?c:u)(g):s?d(g):u(g)}function c(g){return e.attempt(ty,d,u)(g)}function d(g){return t(g)}function u(g){return a._balanced=!0,i(g)}}function sy(e,t,i){return n;function n(u){return e.enter("resource"),e.enter("resourceMarker"),e.consume(u),e.exit("resourceMarker"),r}function r(u){return te(u)?zt(e,a)(u):a(u)}function a(u){return u===41?d(u):ps(e,s,o,"resourceDestination","resourceDestinationLiteral","resourceDestinationLiteralMarker","resourceDestinationRaw","resourceDestinationString",32)(u)}function s(u){return te(u)?zt(e,l)(u):d(u)}function o(u){return i(u)}function l(u){return u===34||u===39||u===40?gs(e,c,i,"resourceTitle","resourceTitleMarker","resourceTitleString")(u):d(u)}function c(u){return te(u)?zt(e,d)(u):d(u)}function d(u){return u===41?(e.enter("resourceMarker"),e.consume(u),e.exit("resourceMarker"),e.exit("resource"),t):i(u)}}function oy(e,t,i){let n=this;return r;function r(o){return ms.call(n,e,a,s,"reference","referenceMarker","referenceString")(o)}function a(o){return n.parser.defined.includes(Pe(n.sliceSerialize(n.events[n.events.length-1][1]).slice(1,-1)))?t(o):i(o)}function s(o){return i(o)}}function ly(e,t,i){return n;function n(a){return e.enter("reference"),e.enter("referenceMarker"),e.consume(a),e.exit("referenceMarker"),r}function r(a){return a===93?(e.enter("referenceMarker"),e.consume(a),e.exit("referenceMarker"),e.exit("reference"),t):i(a)}}var pl={name:"labelStartImage",tokenize:cy,resolveAll:At.resolveAll};function cy(e,t,i){let n=this;return r;function r(o){return e.enter("labelImage"),e.enter("labelImageMarker"),e.consume(o),e.exit("labelImageMarker"),a}function a(o){return o===91?(e.enter("labelMarker"),e.consume(o),e.exit("labelMarker"),e.exit("labelImage"),s):i(o)}function s(o){return o===94&&"_hiddenFootnoteSupport"in n.parser.constructs?i(o):t(o)}}var ml={name:"labelStartLink",tokenize:dy,resolveAll:At.resolveAll};function dy(e,t,i){let n=this;return r;function r(s){return e.enter("labelLink"),e.enter("labelMarker"),e.consume(s),e.exit("labelMarker"),e.exit("labelLink"),a}function a(s){return s===94&&"_hiddenFootnoteSupport"in n.parser.constructs?i(s):t(s)}}var rr={name:"lineEnding",tokenize:uy};function uy(e,t){return i;function i(n){return e.enter("lineEnding"),e.consume(n),e.exit("lineEnding"),j(e,t,"linePrefix")}}var Tt={name:"thematicBreak",tokenize:py};function py(e,t,i){let n=0,r;return a;function a(c){return e.enter("thematicBreak"),s(c)}function s(c){return r=c,o(c)}function o(c){return c===r?(e.enter("thematicBreakSequence"),l(c)):n>=3&&(c===null||F(c))?(e.exit("thematicBreak"),t(c)):i(c)}function l(c){return c===r?(e.consume(c),n++,l):(e.exit("thematicBreakSequence"),W(c)?j(e,o,"whitespace")(c):o(c))}}var He={name:"list",tokenize:hy,continuation:{tokenize:fy},exit:by},my={tokenize:vy,partial:!0},gy={tokenize:yy,partial:!0};function hy(e,t,i){let n=this,r=n.events[n.events.length-1],a=r&&r[1].type==="linePrefix"?r[2].sliceSerialize(r[1],!0).length:0,s=0;return o;function o(m){let f=n.containerState.type||(m===42||m===43||m===45?"listUnordered":"listOrdered");if(f==="listUnordered"?!n.containerState.marker||m===n.containerState.marker:ir(m)){if(n.containerState.type||(n.containerState.type=f,e.enter(f,{_container:!0})),f==="listUnordered")return e.enter("listItemPrefix"),m===42||m===45?e.check(Tt,i,c)(m):c(m);if(!n.interrupt||m===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),l(m)}return i(m)}function l(m){return ir(m)&&++s<10?(e.consume(m),l):(!n.interrupt||s<2)&&(n.containerState.marker?m===n.containerState.marker:m===41||m===46)?(e.exit("listItemValue"),c(m)):i(m)}function c(m){return e.enter("listItemMarker"),e.consume(m),e.exit("listItemMarker"),n.containerState.marker=n.containerState.marker||m,e.check(Ei,n.interrupt?i:d,e.attempt(my,g,u))}function d(m){return n.containerState.initialBlankLine=!0,a++,g(m)}function u(m){return W(m)?(e.enter("listItemPrefixWhitespace"),e.consume(m),e.exit("listItemPrefixWhitespace"),g):i(m)}function g(m){return n.containerState.size=a+n.sliceSerialize(e.exit("listItemPrefix"),!0).length,t(m)}}function fy(e,t,i){let n=this;return n.containerState._closeFlow=void 0,e.check(Ei,r,a);function r(o){return n.containerState.furtherBlankLines=n.containerState.furtherBlankLines||n.containerState.initialBlankLine,j(e,t,"listItemIndent",n.containerState.size+1)(o)}function a(o){return n.containerState.furtherBlankLines||!W(o)?(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,s(o)):(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,e.attempt(gy,t,s)(o))}function s(o){return n.containerState._closeFlow=!0,n.interrupt=void 0,j(e,e.attempt(He,t,i),"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(o)}}function yy(e,t,i){let n=this;return j(e,r,"listItemIndent",n.containerState.size+1);function r(a){let s=n.events[n.events.length-1];return s&&s[1].type==="listItemIndent"&&s[2].sliceSerialize(s[1],!0).length===n.containerState.size?t(a):i(a)}}function by(e){e.exit(this.containerState.type)}function vy(e,t,i){let n=this;return j(e,r,"listItemPrefixWhitespace",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4+1);function r(a){let s=n.events[n.events.length-1];return!W(a)&&s&&s[1].type==="listItemPrefixWhitespace"?t(a):i(a)}}var hs={name:"setextUnderline",tokenize:wy,resolveTo:xy};function xy(e,t){let i=e.length,n,r,a;for(;i--;)if(e[i][0]==="enter"){if(e[i][1].type==="content"){n=i;break}e[i][1].type==="paragraph"&&(r=i)}else e[i][1].type==="content"&&e.splice(i,1),!a&&e[i][1].type==="definition"&&(a=i);let s={type:"setextHeading",start:Object.assign({},e[r][1].start),end:Object.assign({},e[e.length-1][1].end)};return e[r][1].type="setextHeadingText",a?(e.splice(r,0,["enter",s,t]),e.splice(a+1,0,["exit",e[n][1],t]),e[n][1].end=Object.assign({},e[a][1].end)):e[n][1]=s,e.push(["exit",s,t]),e}function wy(e,t,i){let n=this,r;return a;function a(c){let d=n.events.length,u;for(;d--;)if(n.events[d][1].type!=="lineEnding"&&n.events[d][1].type!=="linePrefix"&&n.events[d][1].type!=="content"){u=n.events[d][1].type==="paragraph";break}return!n.parser.lazy[n.now().line]&&(n.interrupt||u)?(e.enter("setextHeadingLine"),r=c,s(c)):i(c)}function s(c){return e.enter("setextHeadingLineSequence"),o(c)}function o(c){return c===r?(e.consume(c),o):(e.exit("setextHeadingLineSequence"),W(c)?j(e,l,"lineSuffix")(c):l(c))}function l(c){return c===null||F(c)?(e.exit("setextHeadingLine"),t(c)):i(c)}}var ky={tokenize:Oy,partial:!0};function gl(){return{document:{91:{tokenize:Ty,continuation:{tokenize:Ly},exit:Ey}},text:{91:{tokenize:Ay},93:{add:"after",tokenize:Sy,resolveTo:zy}}}}function Sy(e,t,i){let n=this,r=n.events.length,a=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]),s;for(;r--;){let l=n.events[r][1];if(l.type==="labelImage"){s=l;break}if(l.type==="gfmFootnoteCall"||l.type==="labelLink"||l.type==="label"||l.type==="image"||l.type==="link")break}return o;function o(l){if(!s||!s._balanced)return i(l);let c=Pe(n.sliceSerialize({start:s.end,end:n.now()}));return c.codePointAt(0)!==94||!a.includes(c.slice(1))?i(l):(e.enter("gfmFootnoteCallLabelMarker"),e.consume(l),e.exit("gfmFootnoteCallLabelMarker"),t(l))}}function zy(e,t){let i=e.length,n;for(;i--;)if(e[i][1].type==="labelImage"&&e[i][0]==="enter"){n=e[i][1];break}e[i+1][1].type="data",e[i+3][1].type="gfmFootnoteCallLabelMarker";let r={type:"gfmFootnoteCall",start:Object.assign({},e[i+3][1].start),end:Object.assign({},e[e.length-1][1].end)},a={type:"gfmFootnoteCallMarker",start:Object.assign({},e[i+3][1].end),end:Object.assign({},e[i+3][1].end)};a.end.column++,a.end.offset++,a.end._bufferIndex++;let s={type:"gfmFootnoteCallString",start:Object.assign({},a.end),end:Object.assign({},e[e.length-1][1].start)},o={type:"chunkString",contentType:"string",start:Object.assign({},s.start),end:Object.assign({},s.end)},l=[e[i+1],e[i+2],["enter",r,t],e[i+3],e[i+4],["enter",a,t],["exit",a,t],["enter",s,t],["enter",o,t],["exit",o,t],["exit",s,t],e[e.length-2],e[e.length-1],["exit",r,t]];return e.splice(i,e.length-i+1,...l),e}function Ay(e,t,i){let n=this,r=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]),a=0,s;return o;function o(u){return e.enter("gfmFootnoteCall"),e.enter("gfmFootnoteCallLabelMarker"),e.consume(u),e.exit("gfmFootnoteCallLabelMarker"),l}function l(u){return u!==94?i(u):(e.enter("gfmFootnoteCallMarker"),e.consume(u),e.exit("gfmFootnoteCallMarker"),e.enter("gfmFootnoteCallString"),e.enter("chunkString").contentType="string",c)}function c(u){if(a>999||u===93&&!s||u===null||u===91||te(u))return i(u);if(u===93){e.exit("chunkString");let g=e.exit("gfmFootnoteCallString");return r.includes(Pe(n.sliceSerialize(g)))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(u),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),t):i(u)}return te(u)||(s=!0),a++,e.consume(u),u===92?d:c}function d(u){return u===91||u===92||u===93?(e.consume(u),a++,c):c(u)}}function Ty(e,t,i){let n=this,r=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]),a,s=0,o;return l;function l(f){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(f),e.exit("gfmFootnoteDefinitionLabelMarker"),c}function c(f){return f===94?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(f),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),e.enter("chunkString").contentType="string",d):i(f)}function d(f){if(s>999||f===93&&!o||f===null||f===91||te(f))return i(f);if(f===93){e.exit("chunkString");let w=e.exit("gfmFootnoteDefinitionLabelString");return a=Pe(n.sliceSerialize(w)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(f),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),g}return te(f)||(o=!0),s++,e.consume(f),f===92?u:d}function u(f){return f===91||f===92||f===93?(e.consume(f),s++,d):d(f)}function g(f){return f===58?(e.enter("definitionMarker"),e.consume(f),e.exit("definitionMarker"),r.includes(a)||r.push(a),j(e,m,"gfmFootnoteDefinitionWhitespace")):i(f)}function m(f){return t(f)}}function Ly(e,t,i){return e.check(Ei,t,e.attempt(ky,t,i))}function Ey(e){e.exit("gfmFootnoteDefinition")}function Oy(e,t,i){let n=this;return j(e,r,"gfmFootnoteDefinitionIndent",4+1);function r(a){let s=n.events[n.events.length-1];return s&&s[1].type==="gfmFootnoteDefinitionIndent"&&s[2].sliceSerialize(s[1],!0).length===4?t(a):i(a)}}var Cy={tokenize:My};function hl(){return{text:{91:Cy}}}function My(e,t,i){let n=this;return r;function r(l){return n.previous!==null||!n._gfmTasklistFirstContentOfListItem?i(l):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),a)}function a(l){return te(l)?(e.enter("taskListCheckValueUnchecked"),e.consume(l),e.exit("taskListCheckValueUnchecked"),s):l===88||l===120?(e.enter("taskListCheckValueChecked"),e.consume(l),e.exit("taskListCheckValueChecked"),s):i(l)}function s(l){return l===93?(e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),o):i(l)}function o(l){return F(l)?t(l):W(l)?e.check({tokenize:qy},t,i)(l):i(l)}}function qy(e,t,i){return j(e,n,"whitespace");function n(r){return r===null?i(r):t(r)}}var hu={}.hasOwnProperty;function fs(e){let t={},i=-1;for(;++i<e.length;)Iy(t,e[i]);return t}function Iy(e,t){let i;for(i in t){let r=(hu.call(e,i)?e[i]:void 0)||(e[i]={}),a=t[i],s;if(a)for(s in a){hu.call(r,s)||(r[s]=[]);let o=a[s];By(r[s],Array.isArray(o)?o:o?[o]:[])}}}function By(e,t){let i=-1,n=[];for(;++i<t.length;)(t[i].add==="after"?e:n).push(t[i]);Fe(e,0,0,n)}var yu={tokenize:_y,concrete:!0},fu={tokenize:Fy,partial:!0};function _y(e,t,i){let n=this,r=n.events[n.events.length-1],a=r&&r[1].type==="linePrefix"?r[2].sliceSerialize(r[1],!0).length:0,s=0;return o;function o(z){return e.enter("mathFlow"),e.enter("mathFlowFence"),e.enter("mathFlowFenceSequence"),l(z)}function l(z){return z===36?(e.consume(z),s++,l):s<2?i(z):(e.exit("mathFlowFenceSequence"),j(e,c,"whitespace")(z))}function c(z){return z===null||F(z)?u(z):(e.enter("mathFlowFenceMeta"),e.enter("chunkString",{contentType:"string"}),d(z))}function d(z){return z===null||F(z)?(e.exit("chunkString"),e.exit("mathFlowFenceMeta"),u(z)):z===36?i(z):(e.consume(z),d)}function u(z){return e.exit("mathFlowFence"),n.interrupt?t(z):e.attempt(fu,g,x)(z)}function g(z){return e.attempt({tokenize:v,partial:!0},x,m)(z)}function m(z){return(a?j(e,f,"linePrefix",a+1):f)(z)}function f(z){return z===null?x(z):F(z)?e.attempt(fu,g,x)(z):(e.enter("mathFlowValue"),w(z))}function w(z){return z===null||F(z)?(e.exit("mathFlowValue"),f(z)):(e.consume(z),w)}function x(z){return e.exit("mathFlow"),t(z)}function v(z,L,C){let R=0;return j(z,T,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4);function T(_){return z.enter("mathFlowFence"),z.enter("mathFlowFenceSequence"),B(_)}function B(_){return _===36?(R++,z.consume(_),B):R<s?C(_):(z.exit("mathFlowFenceSequence"),j(z,q,"whitespace")(_))}function q(_){return _===null||F(_)?(z.exit("mathFlowFence"),L(_)):C(_)}}}function Fy(e,t,i){let n=this;return r;function r(s){return s===null?t(s):(e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),a)}function a(s){return n.parser.lazy[n.now().line]?i(s):t(s)}}function bu(e){let i=(e||{}).singleDollarTextMath;return i==null&&(i=!0),{tokenize:n,resolve:Ry,previous:Dy};function n(r,a,s){let o=this,l=0,c,d;return u;function u(x){return r.enter("mathText"),r.enter("mathTextSequence"),g(x)}function g(x){return x===36?(r.consume(x),l++,g):l<2&&!i?s(x):(r.exit("mathTextSequence"),m(x))}function m(x){return x===null?s(x):x===36?(d=r.enter("mathTextSequence"),c=0,w(x)):x===32?(r.enter("space"),r.consume(x),r.exit("space"),m):F(x)?(r.enter("lineEnding"),r.consume(x),r.exit("lineEnding"),m):(r.enter("mathTextData"),f(x))}function f(x){return x===null||x===32||x===36||F(x)?(r.exit("mathTextData"),m(x)):(r.consume(x),f)}function w(x){return x===36?(r.consume(x),c++,w):c===l?(r.exit("mathTextSequence"),r.exit("mathText"),a(x)):(d.type="mathTextData",f(x))}}}function Ry(e){let t=e.length-4,i=3,n,r;if((e[i][1].type==="lineEnding"||e[i][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(n=i;++n<t;)if(e[n][1].type==="mathTextData"){e[t][1].type="mathTextPadding",e[i][1].type="mathTextPadding",i+=2,t-=2;break}}for(n=i-1,t++;++n<=t;)r===void 0?n!==t&&e[n][1].type!=="lineEnding"&&(r=n):(n===t||e[n][1].type==="lineEnding")&&(e[r][1].type="mathTextData",n!==r+2&&(e[r][1].end=e[n-1][1].end,e.splice(r+2,n-r-2),t-=n-r-2,n=r+2),r=void 0);return e}function Dy(e){return e!==36||this.events[this.events.length-1][1].type==="characterEscape"}function fl(e){return{flow:{36:yu},text:{36:bu(e)}}}function yl(){return{enter:{mathFlow:e,mathFlowFenceMeta:t,mathText:a},exit:{mathFlow:r,mathFlowFence:n,mathFlowFenceMeta:i,mathFlowValue:o,mathText:s,mathTextData:o}};function e(l){let c={type:"element",tagName:"code",properties:{className:["language-math","math-display"]},children:[]};this.enter({type:"math",meta:null,value:"",data:{hName:"pre",hChildren:[c]}},l)}function t(){this.buffer()}function i(){let l=this.resume(),c=this.stack[this.stack.length-1];c.type,c.meta=l}function n(){this.data.mathFlowInside||(this.buffer(),this.data.mathFlowInside=!0)}function r(l){let c=this.resume().replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),d=this.stack[this.stack.length-1];d.type,this.exit(l),d.value=c;let u=d.data.hChildren[0];u.type,u.tagName,u.children.push({type:"text",value:c}),this.data.mathFlowInside=void 0}function a(l){this.enter({type:"inlineMath",value:"",data:{hName:"code",hProperties:{className:["language-math","math-inline"]},hChildren:[]}},l),this.buffer()}function s(l){let c=this.resume(),d=this.stack[this.stack.length-1];d.type,this.exit(l),d.value=c,d.data.hChildren.push({type:"text",value:c})}function o(l){this.config.enter.data.call(this,l),this.config.exit.data.call(this,l)}}var Ny={};function bl(e,t){let i=t||Ny,n=typeof i.includeImageAlt=="boolean"?i.includeImageAlt:!0,r=typeof i.includeHtml=="boolean"?i.includeHtml:!0;return xu(e,n,r)}function xu(e,t,i){if(Ky(e)){if("value"in e)return e.type==="html"&&!i?"":e.value;if(t&&"alt"in e&&e.alt)return e.alt;if("children"in e)return vu(e.children,t,i)}return Array.isArray(e)?vu(e,t,i):""}function vu(e,t,i){let n=[],r=-1;for(;++r<e.length;)n[r]=xu(e[r],t,i);return n.join("")}function Ky(e){return!!(e&&typeof e=="object")}function ys(e,t){let i=Number.parseInt(e,t);return i<9||i===11||i>13&&i<32||i>126&&i<160||i>55295&&i<57344||i>64975&&i<65008||(i&65535)===65535||(i&65535)===65534||i>1114111?"\uFFFD":String.fromCodePoint(i)}var wu={tokenize:Yy};function Yy(e){let t=e.attempt(this.parser.constructs.contentInitial,n,r),i;return t;function n(o){if(o===null){e.consume(o);return}return e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),j(e,t,"linePrefix")}function r(o){return e.enter("paragraph"),a(o)}function a(o){let l=e.enter("chunkText",{contentType:"text",previous:i});return i&&(i.next=l),i=l,s(o)}function s(o){if(o===null){e.exit("chunkText"),e.exit("paragraph"),e.consume(o);return}return F(o)?(e.consume(o),e.exit("chunkText"),a):(e.consume(o),s)}}var Su={tokenize:jy},ku={tokenize:Py};function jy(e){let t=this,i=[],n=0,r,a,s;return o;function o(L){if(n<i.length){let C=i[n];return t.containerState=C[1],e.attempt(C[0].continuation,l,c)(L)}return c(L)}function l(L){if(n++,t.containerState._closeFlow){t.containerState._closeFlow=void 0,r&&z();let C=t.events.length,R=C,T;for(;R--;)if(t.events[R][0]==="exit"&&t.events[R][1].type==="chunkFlow"){T=t.events[R][1].end;break}v(n);let B=C;for(;B<t.events.length;)t.events[B][1].end=Object.assign({},T),B++;return Fe(t.events,R+1,0,t.events.slice(C)),t.events.length=B,c(L)}return o(L)}function c(L){if(n===i.length){if(!r)return g(L);if(r.currentConstruct&&r.currentConstruct.concrete)return f(L);t.interrupt=!!(r.currentConstruct&&!r._gfmTableDynamicInterruptHack)}return t.containerState={},e.check(ku,d,u)(L)}function d(L){return r&&z(),v(n),g(L)}function u(L){return t.parser.lazy[t.now().line]=n!==i.length,s=t.now().offset,f(L)}function g(L){return t.containerState={},e.attempt(ku,m,f)(L)}function m(L){return n++,i.push([t.currentConstruct,t.containerState]),g(L)}function f(L){if(L===null){r&&z(),v(0),e.consume(L);return}return r=r||t.parser.flow(t.now()),e.enter("chunkFlow",{contentType:"flow",previous:a,_tokenizer:r}),w(L)}function w(L){if(L===null){x(e.exit("chunkFlow"),!0),v(0),e.consume(L);return}return F(L)?(e.consume(L),x(e.exit("chunkFlow")),n=0,t.interrupt=void 0,o):(e.consume(L),w)}function x(L,C){let R=t.sliceStream(L);if(C&&R.push(null),L.previous=a,a&&(a.next=L),a=L,r.defineSkip(L.start),r.write(R),t.parser.lazy[L.start.line]){let T=r.events.length;for(;T--;)if(r.events[T][1].start.offset<s&&(!r.events[T][1].end||r.events[T][1].end.offset>s))return;let B=t.events.length,q=B,_,P;for(;q--;)if(t.events[q][0]==="exit"&&t.events[q][1].type==="chunkFlow"){if(_){P=t.events[q][1].end;break}_=!0}for(v(n),T=B;T<t.events.length;)t.events[T][1].end=Object.assign({},P),T++;Fe(t.events,q+1,0,t.events.slice(B)),t.events.length=T}}function v(L){let C=i.length;for(;C-- >L;){let R=i[C];t.containerState=R[1],R[0].exit.call(t,e)}i.length=L}function z(){r.write([null]),a=void 0,r=void 0,t.containerState._closeFlow=void 0}}function Py(e,t,i){return j(e,e.attempt(this.parser.constructs.document,t,i),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}var zu={tokenize:Hy};function Hy(e){let t=this,i=e.attempt(Ei,n,e.attempt(this.parser.constructs.flowInitial,r,j(e,e.attempt(this.parser.constructs.flow,r,e.attempt(al,r)),"linePrefix")));return i;function n(a){if(a===null){e.consume(a);return}return e.enter("lineEndingBlank"),e.consume(a),e.exit("lineEndingBlank"),t.currentConstruct=void 0,i}function r(a){if(a===null){e.consume(a);return}return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),t.currentConstruct=void 0,i}}var Au={resolveAll:Ou()},Tu=Eu("string"),Lu=Eu("text");function Eu(e){return{tokenize:t,resolveAll:Ou(e==="text"?$y:void 0)};function t(i){let n=this,r=this.parser.constructs[e],a=i.attempt(r,s,o);return s;function s(d){return c(d)?a(d):o(d)}function o(d){if(d===null){i.consume(d);return}return i.enter("data"),i.consume(d),l}function l(d){return c(d)?(i.exit("data"),a(d)):(i.consume(d),l)}function c(d){if(d===null)return!0;let u=r[d],g=-1;if(u)for(;++g<u.length;){let m=u[g];if(!m.previous||m.previous.call(n,n.previous))return!0}return!1}}}function Ou(e){return t;function t(i,n){let r=-1,a;for(;++r<=i.length;)a===void 0?i[r]&&i[r][1].type==="data"&&(a=r,r++):(!i[r]||i[r][1].type!=="data")&&(r!==a+2&&(i[a][1].end=i[r-1][1].end,i.splice(a+2,r-a-2),r=a+2),a=void 0);return e?e(i,n):i}}function $y(e,t){let i=0;for(;++i<=e.length;)if((i===e.length||e[i][1].type==="lineEnding")&&e[i-1][1].type==="data"){let n=e[i-1][1],r=t.sliceStream(n),a=r.length,s=-1,o=0,l;for(;a--;){let c=r[a];if(typeof c=="string"){for(s=c.length;c.charCodeAt(s-1)===32;)o++,s--;if(s)break;s=-1}else if(c===-2)l=!0,o++;else if(c!==-1){a++;break}}if(o){let c={type:i===e.length||l||o<2?"lineSuffix":"hardBreakTrailing",start:{line:n.end.line,column:n.end.column-o,offset:n.end.offset-o,_index:n.start._index+a,_bufferIndex:a?s:n.start._bufferIndex+s},end:Object.assign({},n.end)};n.end=Object.assign({},c.start),n.start.offset===n.end.offset?Object.assign(n,c):(e.splice(i,0,["enter",c,t],["exit",c,t]),i+=2)}i++}return e}function Cu(e,t,i){let n=Object.assign(i?Object.assign({},i):{line:1,column:1,offset:0},{_index:0,_bufferIndex:-1}),r={},a=[],s=[],o=[],l=!0,c={consume:C,enter:R,exit:T,attempt:_(B),check:_(q),interrupt:_(q,{interrupt:!0})},d={previous:null,code:null,containerState:{},events:[],parser:e,sliceStream:w,sliceSerialize:f,now:x,defineSkip:v,write:m},u=t.tokenize.call(d,c),g;return t.resolveAll&&a.push(t),d;function m(N){return s=Ve(s,N),z(),s[s.length-1]!==null?[]:(P(t,0),d.events=yn(a,d.events,d),d.events)}function f(N,V){return Uy(w(N),V)}function w(N){return Wy(s,N)}function x(){let{line:N,column:V,offset:H,_index:J,_bufferIndex:ee}=n;return{line:N,column:V,offset:H,_index:J,_bufferIndex:ee}}function v(N){r[N.line]=N.column,Q()}function z(){let N;for(;n._index<s.length;){let V=s[n._index];if(typeof V=="string")for(N=n._index,n._bufferIndex<0&&(n._bufferIndex=0);n._index===N&&n._bufferIndex<V.length;)L(V.charCodeAt(n._bufferIndex));else L(V)}}function L(N){l=void 0,g=N,u=u(N)}function C(N){F(N)?(n.line++,n.column=1,n.offset+=N===-3?2:1,Q()):N!==-1&&(n.column++,n.offset++),n._bufferIndex<0?n._index++:(n._bufferIndex++,n._bufferIndex===s[n._index].length&&(n._bufferIndex=-1,n._index++)),d.previous=N,l=!0}function R(N,V){let H=V||{};return H.type=N,H.start=x(),d.events.push(["enter",H,d]),o.push(H),H}function T(N){let V=o.pop();return V.end=x(),d.events.push(["exit",V,d]),V}function B(N,V){P(N,V.from)}function q(N,V){V.restore()}function _(N,V){return H;function H(J,ee,De){let Me,k,Ne,We;return Array.isArray(J)?Se(J):"tokenize"in J?Se([J]):S(J);function S(le){return Di;function Di(di){let Ti=di!==null&&le[di],Vi=di!==null&&le.null,sn=[...Array.isArray(Ti)?Ti:Ti?[Ti]:[],...Array.isArray(Vi)?Vi:Vi?[Vi]:[]];return Se(sn)(di)}}function Se(le){return Me=le,k=0,le.length===0?De:Ke(le[k])}function Ke(le){return Di;function Di(di){return We=X(),Ne=le,le.partial||(d.currentConstruct=le),le.name&&d.parser.constructs.disable.null.includes(le.name)?Ri(di):le.tokenize.call(V?Object.assign(Object.create(d),V):d,c,Fi,Ri)(di)}}function Fi(le){return l=!0,N(Ne,We),ee}function Ri(le){return l=!0,We.restore(),++k<Me.length?Ke(Me[k]):De}}}function P(N,V){N.resolveAll&&!a.includes(N)&&a.push(N),N.resolve&&Fe(d.events,V,d.events.length-V,N.resolve(d.events.slice(V),d)),N.resolveTo&&(d.events=N.resolveTo(d.events,d))}function X(){let N=x(),V=d.previous,H=d.currentConstruct,J=d.events.length,ee=Array.from(o);return{restore:De,from:J};function De(){n=N,d.previous=V,d.currentConstruct=H,d.events.length=J,o=ee,Q()}}function Q(){n.line in r&&n.column<2&&(n.column=r[n.line],n.offset+=r[n.line]-1)}}function Wy(e,t){let i=t.start._index,n=t.start._bufferIndex,r=t.end._index,a=t.end._bufferIndex,s;if(i===r)s=[e[i].slice(n,a)];else{if(s=e.slice(i,r),n>-1){let o=s[0];typeof o=="string"?s[0]=o.slice(n):s.shift()}a>0&&s.push(e[r].slice(0,a))}return s}function Uy(e,t){let i=-1,n=[],r;for(;++i<e.length;){let a=e[i],s;if(typeof a=="string")s=a;else switch(a){case-5:{s="\r";break}case-4:{s=` `;break}case-3:{s=`\r -`;break}case-2:{s=t?" ":" ";break}case-1:{if(!t&&r)continue;s=" ";break}default:s=String.fromCharCode(a)}r=a===-2,n.push(s)}return n.join("")}var Vo={};ec(Vo,{attentionMarkers:()=>my,contentInitial:()=>oy,disable:()=>gy,document:()=>sy,flow:()=>cy,flowInitial:()=>ly,insideSpan:()=>py,string:()=>dy,text:()=>uy});var sy={[42]:Fe,[43]:Fe,[45]:Fe,[48]:Fe,[49]:Fe,[50]:Fe,[51]:Fe,[52]:Fe,[53]:Fe,[54]:Fe,[55]:Fe,[56]:Fe,[57]:Fe,[62]:Ca},oy={[91]:Bo},ly={[-2]:_n,[-1]:_n,[32]:_n},cy={[35]:_o,[42]:dt,[45]:[Da,dt],[60]:Do,[61]:Da,[95]:dt,[96]:Ia,[126]:Ia},dy={[38]:qa,[92]:Ma},uy={[-5]:Rn,[-4]:Rn,[-3]:Rn,[33]:jo,[38]:qa,[42]:Fn,[60]:[Mo,No],[91]:Ko,[92]:[Fo,Ma],[93]:ct,[95]:Fn,[96]:qo},py={null:[Fn,Jd]},my={null:[42,95]},gy={null:[]};function ru(e={}){let t=Na([Vo].concat(e.extensions||[])),i={defined:[],lazy:{},constructs:t,content:n(Ud),document:n(Qd),flow:n(Zd),string:n(Xd),text:n(eu)};return i;function n(r){return a;function a(s){return nu(i,r,s)}}}var au=/[\0\t\n\r]/g;function su(){let e=1,t="",i=!0,n;return r;function r(a,s,o){let l=[],d,c,u,m,g;for(a=t+a.toString(s),u=0,t="",i&&(a.charCodeAt(0)===65279&&u++,i=void 0);u<a.length;){if(au.lastIndex=u,d=au.exec(a),m=d&&d.index!==void 0?d.index:a.length,g=a.charCodeAt(m),!d){t=a.slice(u);break}if(g===10&&u===m&&n)l.push(-3),n=void 0;else switch(n&&(l.push(-5),n=void 0),u<m&&(l.push(a.slice(u,m)),e+=m-u),g){case 0:{l.push(65533),e++;break}case 9:{for(c=Math.ceil(e/4)*4,l.push(-2);e++<c;)l.push(-1);break}case 10:{l.push(-4),e=1;break}default:n=!0,e=1}u=m+1}return o&&(n&&l.push(-5),t&&l.push(t),l.push(null)),l}}function ou(e){for(;!Ba(e););return e}function ja(e,t){let i=Number.parseInt(e,t);return i<9||i===11||i>13&&i<32||i>126&&i<160||i>55295&&i<57344||i>64975&&i<65008||(i&65535)===65535||(i&65535)===65534||i>1114111?"\uFFFD":String.fromCharCode(i)}var hy=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function Ka(e){return e.replace(hy,fy)}function fy(e,t,i){if(t)return t;if(i.charCodeAt(0)===35){let r=i.charCodeAt(1),a=r===120||r===88;return ja(i.slice(a?2:1),a?16:10)}return Qt(i)||e}function Zt(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?lu(e.position):"start"in e||"end"in e?lu(e):"line"in e||"column"in e?Uo(e):""}function Uo(e){return cu(e&&e.line)+":"+cu(e&&e.column)}function lu(e){return Uo(e&&e.start)+"-"+Uo(e&&e.end)}function cu(e){return e&&typeof e=="number"?e:1}var uu={}.hasOwnProperty,Go=function(e,t,i){return typeof t!="string"&&(i=t,t=void 0),yy(i)(ou(ru(i).document().write(su()(e,t,!0))))};function yy(e){let t={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:o(hi),autolinkProtocol:j,autolinkEmail:j,atxHeading:o(vn),blockQuote:o(gi),characterEscape:j,characterReference:j,codeFenced:o(Li),codeFencedFenceInfo:l,codeFencedFenceMeta:l,codeIndented:o(Li,l),codeText:o(Kt,l),codeTextData:j,data:j,codeFlowValue:j,definition:o(Xs),definitionDestinationString:l,definitionLabelString:l,definitionTitleString:l,emphasis:o(eo),hardBreakEscape:o(xn),hardBreakTrailing:o(xn),htmlFlow:o(ra,l),htmlFlowData:j,htmlText:o(ra,l),htmlTextData:j,image:o(io),label:l,link:o(hi),listItem:o(aa),listItemValue:h,listOrdered:o(it,g),listUnordered:o(it),paragraph:o(sa),reference:_e,referenceString:l,resourceDestinationString:l,resourceTitleString:l,setextHeading:o(vn),strong:o(wn),thematicBreak:o(la)},exit:{atxHeading:c(),atxHeadingSequence:_,autolink:c(),autolinkEmail:ai,autolinkProtocol:Ti,blockQuote:c(),characterEscapeValue:V,characterReferenceMarkerHexadecimal:Re,characterReferenceMarkerNumeric:Re,characterReferenceValue:se,codeFenced:c(S),codeFencedFence:v,codeFencedFenceInfo:x,codeFencedFenceMeta:b,codeFlowValue:V,codeIndented:c(L),codeText:c(ce),codeTextData:V,data:V,definition:c(),definitionDestinationString:T,definitionLabelString:M,definitionTitleString:B,emphasis:c(),hardBreakEscape:c($),hardBreakTrailing:c($),htmlFlow:c(re),htmlFlowData:V,htmlText:c(Q),htmlTextData:V,image:c(ue),label:z,labelText:ae,lineEnding:R,link:c(de),listItem:c(),listOrdered:c(),listUnordered:c(),paragraph:c(),referenceString:ri,resourceDestinationString:k,resourceTitleString:mi,resource:He,setextHeading:c(H),setextHeadingLineSequence:D,setextHeadingText:q,strong:c(),thematicBreak:c()}};pu(t,(e||{}).mdastExtensions||[]);let i={};return n;function n(O){let I={type:"root",children:[]},P={stack:[I],tokenStack:[],config:t,enter:d,exit:u,buffer:l,resume:m,setData:a,getData:s},Z=[],J=-1;for(;++J<O.length;)if(O[J][1].type==="listOrdered"||O[J][1].type==="listUnordered")if(O[J][0]==="enter")Z.push(J);else{let si=Z.pop();J=r(O,si,J)}for(J=-1;++J<O.length;){let si=t[O[J][0]];uu.call(si,O[J][1].type)&&si[O[J][1].type].call(Object.assign({sliceSerialize:O[J][2].sliceSerialize},P),O[J][1])}if(P.tokenStack.length>0){let si=P.tokenStack[P.tokenStack.length-1];(si[1]||du).call(P,void 0,si[0])}for(I.position={start:Yi(O.length>0?O[0][1].start:{line:1,column:1,offset:0}),end:Yi(O.length>0?O[O.length-2][1].end:{line:1,column:1,offset:0})},J=-1;++J<t.transforms.length;)I=t.transforms[J](I)||I;return I}function r(O,I,P){let Z=I-1,J=-1,si=!1,Ri,Ei,kn,zn;for(;++Z<=P;){let ge=O[Z];if(ge[1].type==="listUnordered"||ge[1].type==="listOrdered"||ge[1].type==="blockQuote"?(ge[0]==="enter"?J++:J--,zn=void 0):ge[1].type==="lineEndingBlank"?ge[0]==="enter"&&(Ri&&!zn&&!J&&!kn&&(kn=Z),zn=void 0):ge[1].type==="linePrefix"||ge[1].type==="listItemValue"||ge[1].type==="listItemMarker"||ge[1].type==="listItemPrefix"||ge[1].type==="listItemPrefixWhitespace"||(zn=void 0),!J&&ge[0]==="enter"&&ge[1].type==="listItemPrefix"||J===-1&&ge[0]==="exit"&&(ge[1].type==="listUnordered"||ge[1].type==="listOrdered")){if(Ri){let to=Z;for(Ei=void 0;to--;){let Oi=O[to];if(Oi[1].type==="lineEnding"||Oi[1].type==="lineEndingBlank"){if(Oi[0]==="exit")continue;Ei&&(O[Ei][1].type="lineEndingBlank",si=!0),Oi[1].type="lineEnding",Ei=to}else if(!(Oi[1].type==="linePrefix"||Oi[1].type==="blockQuotePrefix"||Oi[1].type==="blockQuotePrefixWhitespace"||Oi[1].type==="blockQuoteMarker"||Oi[1].type==="listItemIndent"))break}kn&&(!Ei||kn<Ei)&&(Ri._spread=!0),Ri.end=Object.assign({},Ei?O[Ei][1].start:ge[1].end),O.splice(Ei||Z,0,["exit",Ri,ge[2]]),Z++,P++}ge[1].type==="listItemPrefix"&&(Ri={type:"listItem",_spread:!1,start:Object.assign({},ge[1].start)},O.splice(Z,0,["enter",Ri,ge[2]]),Z++,P++,kn=void 0,zn=!0)}}return O[I][1]._spread=si,P}function a(O,I){i[O]=I}function s(O){return i[O]}function o(O,I){return P;function P(Z){d.call(this,O(Z),Z),I&&I.call(this,Z)}}function l(){this.stack.push({type:"fragment",children:[]})}function d(O,I,P){return this.stack[this.stack.length-1].children.push(O),this.stack.push(O),this.tokenStack.push([I,P]),O.position={start:Yi(I.start)},O}function c(O){return I;function I(P){O&&O.call(this,P),u.call(this,P)}}function u(O,I){let P=this.stack.pop(),Z=this.tokenStack.pop();if(Z)Z[0].type!==O.type&&(I?I.call(this,O,Z[0]):(Z[1]||du).call(this,O,Z[0]));else throw new Error("Cannot close `"+O.type+"` ("+Zt({start:O.start,end:O.end})+"): it\u2019s not open");return P.position.end=Yi(O.end),P}function m(){return Wo(this.stack.pop())}function g(){a("expectingFirstListItemValue",!0)}function h(O){if(s("expectingFirstListItemValue")){let I=this.stack[this.stack.length-2];I.start=Number.parseInt(this.sliceSerialize(O),10),a("expectingFirstListItemValue")}}function x(){let O=this.resume(),I=this.stack[this.stack.length-1];I.lang=O}function b(){let O=this.resume(),I=this.stack[this.stack.length-1];I.meta=O}function v(){s("flowCodeInside")||(this.buffer(),a("flowCodeInside",!0))}function S(){let O=this.resume(),I=this.stack[this.stack.length-1];I.value=O.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),a("flowCodeInside")}function L(){let O=this.resume(),I=this.stack[this.stack.length-1];I.value=O.replace(/(\r?\n|\r)$/g,"")}function M(O){let I=this.resume(),P=this.stack[this.stack.length-1];P.label=I,P.identifier=Be(this.sliceSerialize(O)).toLowerCase()}function B(){let O=this.resume(),I=this.stack[this.stack.length-1];I.title=O}function T(){let O=this.resume(),I=this.stack[this.stack.length-1];I.url=O}function _(O){let I=this.stack[this.stack.length-1];if(!I.depth){let P=this.sliceSerialize(O).length;I.depth=P}}function q(){a("setextHeadingSlurpLineEnding",!0)}function D(O){let I=this.stack[this.stack.length-1];I.depth=this.sliceSerialize(O).charCodeAt(0)===61?1:2}function H(){a("setextHeadingSlurpLineEnding")}function j(O){let I=this.stack[this.stack.length-1],P=I.children[I.children.length-1];(!P||P.type!=="text")&&(P=oa(),P.position={start:Yi(O.start)},I.children.push(P)),this.stack.push(P)}function V(O){let I=this.stack.pop();I.value+=this.sliceSerialize(O),I.position.end=Yi(O.end)}function R(O){let I=this.stack[this.stack.length-1];if(s("atHardBreak")){let P=I.children[I.children.length-1];P.position.end=Yi(O.end),a("atHardBreak");return}!s("setextHeadingSlurpLineEnding")&&t.canContainEols.includes(I.type)&&(j.call(this,O),V.call(this,O))}function $(){a("atHardBreak",!0)}function re(){let O=this.resume(),I=this.stack[this.stack.length-1];I.value=O}function Q(){let O=this.resume(),I=this.stack[this.stack.length-1];I.value=O}function ce(){let O=this.resume(),I=this.stack[this.stack.length-1];I.value=O}function de(){let O=this.stack[this.stack.length-1];if(s("inReference")){let I=s("referenceType")||"shortcut";O.type+="Reference",O.referenceType=I,delete O.url,delete O.title}else delete O.identifier,delete O.label;a("referenceType")}function ue(){let O=this.stack[this.stack.length-1];if(s("inReference")){let I=s("referenceType")||"shortcut";O.type+="Reference",O.referenceType=I,delete O.url,delete O.title}else delete O.identifier,delete O.label;a("referenceType")}function ae(O){let I=this.sliceSerialize(O),P=this.stack[this.stack.length-2];P.label=Ka(I),P.identifier=Be(I).toLowerCase()}function z(){let O=this.stack[this.stack.length-1],I=this.resume(),P=this.stack[this.stack.length-1];if(a("inReference",!0),P.type==="link"){let Z=O.children;P.children=Z}else P.alt=I}function k(){let O=this.resume(),I=this.stack[this.stack.length-1];I.url=O}function mi(){let O=this.resume(),I=this.stack[this.stack.length-1];I.title=O}function He(){a("inReference")}function _e(){a("referenceType","collapsed")}function ri(O){let I=this.resume(),P=this.stack[this.stack.length-1];P.label=I,P.identifier=Be(this.sliceSerialize(O)).toLowerCase(),a("referenceType","full")}function Re(O){a("characterReferenceType",O.type)}function se(O){let I=this.sliceSerialize(O),P=s("characterReferenceType"),Z;P?(Z=ja(I,P==="characterReferenceMarkerNumeric"?10:16),a("characterReferenceType")):Z=Qt(I);let J=this.stack.pop();J.value+=Z,J.position.end=Yi(O.end)}function Ti(O){V.call(this,O);let I=this.stack[this.stack.length-1];I.url=this.sliceSerialize(O)}function ai(O){V.call(this,O);let I=this.stack[this.stack.length-1];I.url="mailto:"+this.sliceSerialize(O)}function gi(){return{type:"blockquote",children:[]}}function Li(){return{type:"code",lang:null,meta:null,value:""}}function Kt(){return{type:"inlineCode",value:""}}function Xs(){return{type:"definition",identifier:"",label:null,title:null,url:""}}function eo(){return{type:"emphasis",children:[]}}function vn(){return{type:"heading",depth:void 0,children:[]}}function xn(){return{type:"break"}}function ra(){return{type:"html",value:""}}function io(){return{type:"image",title:null,url:"",alt:null}}function hi(){return{type:"link",title:null,url:"",children:[]}}function it(O){return{type:"list",ordered:O.type==="listOrdered",start:null,spread:O._spread,children:[]}}function aa(O){return{type:"listItem",spread:O._spread,checked:null,children:[]}}function sa(){return{type:"paragraph",children:[]}}function wn(){return{type:"strong",children:[]}}function oa(){return{type:"text",value:""}}function la(){return{type:"thematicBreak"}}}function Yi(e){return{line:e.line,column:e.column,offset:e.offset}}function pu(e,t){let i=-1;for(;++i<t.length;){let n=t[i];Array.isArray(n)?pu(e,n):by(e,n)}}function by(e,t){let i;for(i in t)if(uu.call(t,i)){if(i==="canContainEols"){let n=t[i];n&&e[i].push(...n)}else if(i==="transforms"){let n=t[i];n&&e[i].push(...n)}else if(i==="enter"||i==="exit"){let n=t[i];n&&Object.assign(e[i],n)}}}function du(e,t){throw e?new Error("Cannot close `"+e.type+"` ("+Zt({start:e.start,end:e.end})+"): a different token (`"+t.type+"`, "+Zt({start:t.start,end:t.end})+") is open"):new Error("Cannot close document, a token (`"+t.type+"`, "+Zt({start:t.start,end:t.end})+") is still open")}function mu(e){return e.label||!e.identifier?e.label||"":Ka(e.identifier)}Ly.peek=Ey;function Qo(){return{enter:{gfmFootnoteDefinition:vy,gfmFootnoteDefinitionLabelString:xy,gfmFootnoteCall:zy,gfmFootnoteCallString:Sy},exit:{gfmFootnoteDefinition:ky,gfmFootnoteDefinitionLabelString:wy,gfmFootnoteCall:Ty,gfmFootnoteCallString:Ay}}}function vy(e){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},e)}function xy(){this.buffer()}function wy(e){let t=this.resume(),i=this.stack[this.stack.length-1];i.label=t,i.identifier=Be(this.sliceSerialize(e)).toLowerCase()}function ky(e){this.exit(e)}function zy(e){this.enter({type:"footnoteReference",identifier:"",label:""},e)}function Sy(){this.buffer()}function Ay(e){let t=this.resume(),i=this.stack[this.stack.length-1];i.label=t,i.identifier=Be(this.sliceSerialize(e)).toLowerCase()}function Ty(e){this.exit(e)}function Ly(e,t,i,n){let r=$d(n),a=r.move("[^"),s=i.enter("footnoteReference"),o=i.enter("reference");return a+=r.move(Hd(i,mu(e),{...r.current(),before:a,after:"]"})),o(),s(),a+=r.move("]"),a}function Ey(){return"["}var Zo={exit:{taskListCheckValueChecked:gu,taskListCheckValueUnchecked:gu,paragraph:Oy}};function gu(e){let t=this.stack[this.stack.length-2];t.checked=e.type==="taskListCheckValueChecked"}function Oy(e){let t=this.stack[this.stack.length-2];if(t&&t.type==="listItem"&&typeof t.checked=="boolean"){let i=this.stack[this.stack.length-1],n=i.children[0];if(n&&n.type==="text"){let r=t.children,a=-1,s;for(;++a<r.length;){let o=r[a];if(o.type==="paragraph"){s=o;break}}s===i&&(n.value=n.value.slice(1),n.value.length===0?i.children.shift():i.position&&n.position&&typeof n.position.start.offset=="number"&&(n.position.start.column++,n.position.start.offset++,i.position.start=Object.assign({},n.position.start)))}}this.exit(e)}var Dn=class extends Map{constructor(t={}){if(super(),!(t.maxSize&&t.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");if(typeof t.maxAge=="number"&&t.maxAge===0)throw new TypeError("`maxAge` must be a number greater than 0");this.maxSize=t.maxSize,this.maxAge=t.maxAge||Number.POSITIVE_INFINITY,this.onEviction=t.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_emitEvictions(t){if(typeof this.onEviction=="function")for(let[i,n]of t)this.onEviction(i,n.value)}_deleteIfExpired(t,i){return typeof i.expiry=="number"&&i.expiry<=Date.now()?(typeof this.onEviction=="function"&&this.onEviction(t,i.value),this.delete(t)):!1}_getOrDeleteIfExpired(t,i){if(this._deleteIfExpired(t,i)===!1)return i.value}_getItemValue(t,i){return i.expiry?this._getOrDeleteIfExpired(t,i):i.value}_peek(t,i){let n=i.get(t);return this._getItemValue(t,n)}_set(t,i){this.cache.set(t,i),this._size++,this._size>=this.maxSize&&(this._size=0,this._emitEvictions(this.oldCache),this.oldCache=this.cache,this.cache=new Map)}_moveToRecent(t,i){this.oldCache.delete(t),this._set(t,i)}*_entriesAscending(){for(let t of this.oldCache){let[i,n]=t;this.cache.has(i)||this._deleteIfExpired(i,n)===!1&&(yield t)}for(let t of this.cache){let[i,n]=t;this._deleteIfExpired(i,n)===!1&&(yield t)}}get(t){if(this.cache.has(t)){let i=this.cache.get(t);return this._getItemValue(t,i)}if(this.oldCache.has(t)){let i=this.oldCache.get(t);if(this._deleteIfExpired(t,i)===!1)return this._moveToRecent(t,i),i.value}}set(t,i,{maxAge:n=this.maxAge}={}){let r=typeof n=="number"&&n!==Number.POSITIVE_INFINITY?Date.now()+n:void 0;this.cache.has(t)?this.cache.set(t,{value:i,expiry:r}):this._set(t,{value:i,expiry:r})}has(t){return this.cache.has(t)?!this._deleteIfExpired(t,this.cache.get(t)):this.oldCache.has(t)?!this._deleteIfExpired(t,this.oldCache.get(t)):!1}peek(t){if(this.cache.has(t))return this._peek(t,this.cache);if(this.oldCache.has(t))return this._peek(t,this.oldCache)}delete(t){let i=this.cache.delete(t);return i&&this._size--,this.oldCache.delete(t)||i}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}resize(t){if(!(t&&t>0))throw new TypeError("`maxSize` must be a number greater than 0");let i=[...this._entriesAscending()],n=i.length-t;n<0?(this.cache=new Map(i),this.oldCache=new Map,this._size=i.length):(n>0&&this._emitEvictions(i.slice(0,n)),this.oldCache=new Map(i.slice(n)),this.cache=new Map,this._size=0),this.maxSize=t}*keys(){for(let[t]of this)yield t}*values(){for(let[,t]of this)yield t}*[Symbol.iterator](){for(let t of this.cache){let[i,n]=t;this._deleteIfExpired(i,n)===!1&&(yield[i,n.value])}for(let t of this.oldCache){let[i,n]=t;this.cache.has(i)||this._deleteIfExpired(i,n)===!1&&(yield[i,n.value])}}*entriesDescending(){let t=[...this.cache];for(let i=t.length-1;i>=0;--i){let n=t[i],[r,a]=n;this._deleteIfExpired(r,a)===!1&&(yield[r,a.value])}t=[...this.oldCache];for(let i=t.length-1;i>=0;--i){let n=t[i],[r,a]=n;this.cache.has(r)||this._deleteIfExpired(r,a)===!1&&(yield[r,a.value])}}*entriesAscending(){for(let[t,i]of this._entriesAscending())yield[t,i.value]}get size(){if(!this._size)return this.oldCache.size;let t=0;for(let i of this.oldCache.keys())this.cache.has(i)||t++;return Math.min(this._size+t,this.maxSize)}entries(){return this.entriesAscending()}forEach(t,i=this){for(let[n,r]of this.entriesAscending())t.call(i,r,n,this)}get[Symbol.toStringTag](){return JSON.stringify([...this.entriesAscending()])}};var Jo=new Dn({maxSize:200});function fu(e){let t=Sd(e);if(Jo.has(t))return Jo.get(t);let i=Go(e,{extensions:[Na([Yo(),Po]),Ho()],mdastExtensions:[[Qo(),Zo],$o()]});return Jo.set(t,i),i}function ye(e,t){let i=fu(t),n=[];return Ea(i,e,r=>{n.push(r.position)}),n.sort((r,a)=>a.start.offset-r.start.offset),n}function Cy(e){let t=fu(e),i=[];return Ea(t,"listItem",n=>{if(n.children)for(let r of n.children)r.type==="paragraph"&&i.push(r.position)}),i.sort((n,r)=>r.start.offset-n.start.offset),i}function yu(e){let t=ye("footnoteDefinition",e),i=[],n=new Map,r=new Map;e=vu(t,e,i,function(s,o,l){let d=o.match(/\[\^.*?\]/)[0];if(n.has(d)){let g=n.get(d);g.footnotesReferencingKey.push(o),n.set(d,g);return}let c,u=[];do c=s.lastIndexOf(d,l),c!==-1&&(u.push(c),l=c-1);while(c>0);let m={key:d,referencePositions:u,footnotesReferencingKey:[o]};n.set(d,m)});for(let s of n){let o=s[1],l=o.referencePositions.length-o.footnotesReferencingKey.length;l=l>=0?l:0;let d=0;for(let c of o.footnotesReferencingKey){if(d+l>=o.referencePositions.length)throw new Error(E("logs.missing-footnote-error-message").replace("{FOOTNOTE}",c));r.set(c,o.referencePositions[l+d++])}}i=i.sort((s,o)=>r.get(s)-r.get(o)),i.length>0&&(e=e.trimEnd()+` +`;break}case-2:{s=t?" ":" ";break}case-1:{if(!t&&r)continue;s=" ";break}default:s=String.fromCharCode(a)}r=a===-2,n.push(s)}return n.join("")}var vl={};Fc(vl,{attentionMarkers:()=>ib,contentInitial:()=>Gy,disable:()=>tb,document:()=>Vy,flow:()=>Zy,flowInitial:()=>Qy,insideSpan:()=>eb,string:()=>Jy,text:()=>Xy});var Vy={42:He,43:He,45:He,48:He,49:He,50:He,51:He,52:He,53:He,54:He,55:He,56:He,57:He,62:os},Gy={91:sl},Qy={[-2]:nr,[-1]:nr,32:nr},Zy={35:ll,42:Tt,45:[hs,Tt],60:dl,61:hs,95:Tt,96:ds,126:ds},Jy={38:cs,92:ls},Xy={[-5]:rr,[-4]:rr,[-3]:rr,33:pl,38:cs,42:tr,60:[nl,ul],91:ml,92:[ol,ls],93:At,95:tr,96:rl},eb={null:[tr,Au]},ib={null:[42,95]},tb={null:[]};function xl(e){let i=fs([vl,...(e||{}).extensions||[]]),n={defined:[],lazy:{},constructs:i,content:r(wu),document:r(Su),flow:r(zu),string:r(Tu),text:r(Lu)};return n;function r(a){return s;function s(o){return Cu(n,a,o)}}}function wl(e){for(;!us(e););return e}var Mu=/[\0\t\n\r]/g;function kl(){let e=1,t="",i=!0,n;return r;function r(a,s,o){let l=[],c,d,u,g,m;for(a=t+(typeof a=="string"?a.toString():new TextDecoder(s||void 0).decode(a)),u=0,t="",i&&(a.charCodeAt(0)===65279&&u++,i=void 0);u<a.length;){if(Mu.lastIndex=u,c=Mu.exec(a),g=c&&c.index!==void 0?c.index:a.length,m=a.charCodeAt(g),!c){t=a.slice(u);break}if(m===10&&u===g&&n)l.push(-3),n=void 0;else switch(n&&(l.push(-5),n=void 0),u<g&&(l.push(a.slice(u,g)),e+=g-u),m){case 0:{l.push(65533),e++;break}case 9:{for(d=Math.ceil(e/4)*4,l.push(-2);e++<d;)l.push(-1);break}case 10:{l.push(-4),e=1;break}default:n=!0,e=1}u=g+1}return o&&(n&&l.push(-5),t&&l.push(t),l.push(null)),l}}var nb=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function qu(e){return e.replace(nb,rb)}function rb(e,t,i){if(t)return t;if(i.charCodeAt(0)===35){let r=i.charCodeAt(1),a=r===120||r===88;return ys(i.slice(a?2:1),a?16:10)}return bn(i)||e}function vn(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?Iu(e.position):"start"in e||"end"in e?Iu(e):"line"in e||"column"in e?Sl(e):""}function Sl(e){return Bu(e&&e.line)+":"+Bu(e&&e.column)}function Iu(e){return Sl(e&&e.start)+"-"+Sl(e&&e.end)}function Bu(e){return e&&typeof e=="number"?e:1}var Fu={}.hasOwnProperty;function zl(e,t,i){return typeof t!="string"&&(i=t,t=void 0),ab(i)(wl(xl(i).document().write(kl()(e,t,!0))))}function ab(e){let t={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:a(_a),autolinkProtocol:_,autolinkEmail:_,atxHeading:a(qa),blockQuote:a(Di),characterEscape:_,characterReference:_,codeFenced:a(di),codeFencedFenceInfo:s,codeFencedFenceMeta:s,codeIndented:a(di,s),codeText:a(Ti,s),codeTextData:_,data:_,codeFlowValue:_,definition:a(Vi),definitionDestinationString:s,definitionLabelString:s,definitionTitleString:s,emphasis:a(sn),hardBreakEscape:a(Ia),hardBreakTrailing:a(Ia),htmlFlow:a(Yn,s),htmlFlowData:_,htmlText:a(Yn,s),htmlTextData:_,image:a(Ba),label:s,link:a(_a),listItem:a(Ni),listItemValue:g,listOrdered:a(Fa,u),listUnordered:a(Fa),paragraph:a(on),reference:S,referenceString:s,resourceDestinationString:s,resourceTitleString:s,setextHeading:a(qa),strong:a(Ra),thematicBreak:a(jn)},exit:{atxHeading:l(),atxHeadingSequence:R,autolink:l(),autolinkEmail:le,autolinkProtocol:Ri,blockQuote:l(),characterEscapeValue:P,characterReferenceMarkerHexadecimal:Ke,characterReferenceMarkerNumeric:Ke,characterReferenceValue:Fi,codeFenced:l(x),codeFencedFence:w,codeFencedFenceInfo:m,codeFencedFenceMeta:f,codeFlowValue:P,codeIndented:l(v),codeText:l(H),codeTextData:P,data:P,definition:l(),definitionDestinationString:C,definitionLabelString:z,definitionTitleString:L,emphasis:l(),hardBreakEscape:l(Q),hardBreakTrailing:l(Q),htmlFlow:l(N),htmlFlowData:P,htmlText:l(V),htmlTextData:P,image:l(ee),label:Me,labelText:De,lineEnding:X,link:l(J),listItem:l(),listOrdered:l(),listUnordered:l(),paragraph:l(),referenceString:Se,resourceDestinationString:k,resourceTitleString:Ne,resource:We,setextHeading:l(q),setextHeadingLineSequence:B,setextHeadingText:T,strong:l(),thematicBreak:l()}};Ru(t,(e||{}).mdastExtensions||[]);let i={};return n;function n(O){let I={type:"root",children:[]},$={stack:[I],tokenStack:[],config:t,enter:o,exit:c,buffer:s,resume:d,data:i},Z=[],ie=-1;for(;++ie<O.length;)if(O[ie][1].type==="listOrdered"||O[ie][1].type==="listUnordered")if(O[ie][0]==="enter")Z.push(ie);else{let yi=Z.pop();ie=r(O,yi,ie)}for(ie=-1;++ie<O.length;){let yi=t[O[ie][0]];Fu.call(yi,O[ie][1].type)&&yi[O[ie][1].type].call(Object.assign({sliceSerialize:O[ie][2].sliceSerialize},$),O[ie][1])}if($.tokenStack.length>0){let yi=$.tokenStack[$.tokenStack.length-1];(yi[1]||_u).call($,void 0,yi[0])}for(I.position={start:et(O.length>0?O[0][1].start:{line:1,column:1,offset:0}),end:et(O.length>0?O[O.length-2][1].end:{line:1,column:1,offset:0})},ie=-1;++ie<t.transforms.length;)I=t.transforms[ie](I)||I;return I}function r(O,I,$){let Z=I-1,ie=-1,yi=!1,yt,Ki,Pn,Hn;for(;++Z<=$;){let ti=O[Z];switch(ti[1].type){case"listUnordered":case"listOrdered":case"blockQuote":{ti[0]==="enter"?ie++:ie--,Hn=void 0;break}case"lineEndingBlank":{ti[0]==="enter"&&(yt&&!Hn&&!ie&&!Pn&&(Pn=Z),Hn=void 0);break}case"linePrefix":case"listItemValue":case"listItemMarker":case"listItemPrefix":case"listItemPrefixWhitespace":break;default:Hn=void 0}if(!ie&&ti[0]==="enter"&&ti[1].type==="listItemPrefix"||ie===-1&&ti[0]==="exit"&&(ti[1].type==="listUnordered"||ti[1].type==="listOrdered")){if(yt){let ln=Z;for(Ki=void 0;ln--;){let Yi=O[ln];if(Yi[1].type==="lineEnding"||Yi[1].type==="lineEndingBlank"){if(Yi[0]==="exit")continue;Ki&&(O[Ki][1].type="lineEndingBlank",yi=!0),Yi[1].type="lineEnding",Ki=ln}else if(!(Yi[1].type==="linePrefix"||Yi[1].type==="blockQuotePrefix"||Yi[1].type==="blockQuotePrefixWhitespace"||Yi[1].type==="blockQuoteMarker"||Yi[1].type==="listItemIndent"))break}Pn&&(!Ki||Pn<Ki)&&(yt._spread=!0),yt.end=Object.assign({},Ki?O[Ki][1].start:ti[1].end),O.splice(Ki||Z,0,["exit",yt,ti[2]]),Z++,$++}if(ti[1].type==="listItemPrefix"){let ln={type:"listItem",_spread:!1,start:Object.assign({},ti[1].start),end:void 0};yt=ln,O.splice(Z,0,["enter",ln,ti[2]]),Z++,$++,Pn=void 0,Hn=!0}}}return O[I][1]._spread=yi,$}function a(O,I){return $;function $(Z){o.call(this,O(Z),Z),I&&I.call(this,Z)}}function s(){this.stack.push({type:"fragment",children:[]})}function o(O,I,$){this.stack[this.stack.length-1].children.push(O),this.stack.push(O),this.tokenStack.push([I,$]),O.position={start:et(I.start),end:void 0}}function l(O){return I;function I($){O&&O.call(this,$),c.call(this,$)}}function c(O,I){let $=this.stack.pop(),Z=this.tokenStack.pop();if(Z)Z[0].type!==O.type&&(I?I.call(this,O,Z[0]):(Z[1]||_u).call(this,O,Z[0]));else throw new Error("Cannot close `"+O.type+"` ("+vn({start:O.start,end:O.end})+"): it\u2019s not open");$.position.end=et(O.end)}function d(){return bl(this.stack.pop())}function u(){this.data.expectingFirstListItemValue=!0}function g(O){if(this.data.expectingFirstListItemValue){let I=this.stack[this.stack.length-2];I.start=Number.parseInt(this.sliceSerialize(O),10),this.data.expectingFirstListItemValue=void 0}}function m(){let O=this.resume(),I=this.stack[this.stack.length-1];I.lang=O}function f(){let O=this.resume(),I=this.stack[this.stack.length-1];I.meta=O}function w(){this.data.flowCodeInside||(this.buffer(),this.data.flowCodeInside=!0)}function x(){let O=this.resume(),I=this.stack[this.stack.length-1];I.value=O.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),this.data.flowCodeInside=void 0}function v(){let O=this.resume(),I=this.stack[this.stack.length-1];I.value=O.replace(/(\r?\n|\r)$/g,"")}function z(O){let I=this.resume(),$=this.stack[this.stack.length-1];$.label=I,$.identifier=Pe(this.sliceSerialize(O)).toLowerCase()}function L(){let O=this.resume(),I=this.stack[this.stack.length-1];I.title=O}function C(){let O=this.resume(),I=this.stack[this.stack.length-1];I.url=O}function R(O){let I=this.stack[this.stack.length-1];if(!I.depth){let $=this.sliceSerialize(O).length;I.depth=$}}function T(){this.data.setextHeadingSlurpLineEnding=!0}function B(O){let I=this.stack[this.stack.length-1];I.depth=this.sliceSerialize(O).codePointAt(0)===61?1:2}function q(){this.data.setextHeadingSlurpLineEnding=void 0}function _(O){let $=this.stack[this.stack.length-1].children,Z=$[$.length-1];(!Z||Z.type!=="text")&&(Z=Da(),Z.position={start:et(O.start),end:void 0},$.push(Z)),this.stack.push(Z)}function P(O){let I=this.stack.pop();I.value+=this.sliceSerialize(O),I.position.end=et(O.end)}function X(O){let I=this.stack[this.stack.length-1];if(this.data.atHardBreak){let $=I.children[I.children.length-1];$.position.end=et(O.end),this.data.atHardBreak=void 0;return}!this.data.setextHeadingSlurpLineEnding&&t.canContainEols.includes(I.type)&&(_.call(this,O),P.call(this,O))}function Q(){this.data.atHardBreak=!0}function N(){let O=this.resume(),I=this.stack[this.stack.length-1];I.value=O}function V(){let O=this.resume(),I=this.stack[this.stack.length-1];I.value=O}function H(){let O=this.resume(),I=this.stack[this.stack.length-1];I.value=O}function J(){let O=this.stack[this.stack.length-1];if(this.data.inReference){let I=this.data.referenceType||"shortcut";O.type+="Reference",O.referenceType=I,delete O.url,delete O.title}else delete O.identifier,delete O.label;this.data.referenceType=void 0}function ee(){let O=this.stack[this.stack.length-1];if(this.data.inReference){let I=this.data.referenceType||"shortcut";O.type+="Reference",O.referenceType=I,delete O.url,delete O.title}else delete O.identifier,delete O.label;this.data.referenceType=void 0}function De(O){let I=this.sliceSerialize(O),$=this.stack[this.stack.length-2];$.label=qu(I),$.identifier=Pe(I).toLowerCase()}function Me(){let O=this.stack[this.stack.length-1],I=this.resume(),$=this.stack[this.stack.length-1];if(this.data.inReference=!0,$.type==="link"){let Z=O.children;$.children=Z}else $.alt=I}function k(){let O=this.resume(),I=this.stack[this.stack.length-1];I.url=O}function Ne(){let O=this.resume(),I=this.stack[this.stack.length-1];I.title=O}function We(){this.data.inReference=void 0}function S(){this.data.referenceType="collapsed"}function Se(O){let I=this.resume(),$=this.stack[this.stack.length-1];$.label=I,$.identifier=Pe(this.sliceSerialize(O)).toLowerCase(),this.data.referenceType="full"}function Ke(O){this.data.characterReferenceType=O.type}function Fi(O){let I=this.sliceSerialize(O),$=this.data.characterReferenceType,Z;$?(Z=ys(I,$==="characterReferenceMarkerNumeric"?10:16),this.data.characterReferenceType=void 0):Z=bn(I);let ie=this.stack.pop();ie.value+=Z,ie.position.end=et(O.end)}function Ri(O){P.call(this,O);let I=this.stack[this.stack.length-1];I.url=this.sliceSerialize(O)}function le(O){P.call(this,O);let I=this.stack[this.stack.length-1];I.url="mailto:"+this.sliceSerialize(O)}function Di(){return{type:"blockquote",children:[]}}function di(){return{type:"code",lang:null,meta:null,value:""}}function Ti(){return{type:"inlineCode",value:""}}function Vi(){return{type:"definition",identifier:"",label:null,title:null,url:""}}function sn(){return{type:"emphasis",children:[]}}function qa(){return{type:"heading",depth:0,children:[]}}function Ia(){return{type:"break"}}function Yn(){return{type:"html",value:""}}function Ba(){return{type:"image",title:null,url:"",alt:null}}function _a(){return{type:"link",title:null,url:"",children:[]}}function Fa(O){return{type:"list",ordered:O.type==="listOrdered",start:null,spread:O._spread,children:[]}}function Ni(O){return{type:"listItem",spread:O._spread,checked:null,children:[]}}function on(){return{type:"paragraph",children:[]}}function Ra(){return{type:"strong",children:[]}}function Da(){return{type:"text",value:""}}function jn(){return{type:"thematicBreak"}}}function et(e){return{line:e.line,column:e.column,offset:e.offset}}function Ru(e,t){let i=-1;for(;++i<t.length;){let n=t[i];Array.isArray(n)?Ru(e,n):sb(e,n)}}function sb(e,t){let i;for(i in t)if(Fu.call(t,i))switch(i){case"canContainEols":{let n=t[i];n&&e[i].push(...n);break}case"transforms":{let n=t[i];n&&e[i].push(...n);break}case"enter":case"exit":{let n=t[i];n&&Object.assign(e[i],n);break}}}function _u(e,t){throw e?new Error("Cannot close `"+e.type+"` ("+vn({start:e.start,end:e.end})+"): a different token (`"+t.type+"`, "+vn({start:t.start,end:t.end})+") is open"):new Error("Cannot close document, a token (`"+t.type+"`, "+vn({start:t.start,end:t.end})+") is still open")}hb.peek=fb;function Al(){return{enter:{gfmFootnoteDefinition:ob,gfmFootnoteDefinitionLabelString:lb,gfmFootnoteCall:ub,gfmFootnoteCallString:pb},exit:{gfmFootnoteDefinition:db,gfmFootnoteDefinitionLabelString:cb,gfmFootnoteCall:gb,gfmFootnoteCallString:mb}}}function ob(e){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},e)}function lb(){this.buffer()}function cb(e){let t=this.resume(),i=this.stack[this.stack.length-1];i.type,i.label=t,i.identifier=Pe(this.sliceSerialize(e)).toLowerCase()}function db(e){this.exit(e)}function ub(e){this.enter({type:"footnoteReference",identifier:"",label:""},e)}function pb(){this.buffer()}function mb(e){let t=this.resume(),i=this.stack[this.stack.length-1];i.type,i.label=t,i.identifier=Pe(this.sliceSerialize(e)).toLowerCase()}function gb(e){this.exit(e)}function hb(e,t,i,n){let r=i.createTracker(n),a=r.move("[^"),s=i.enter("footnoteReference"),o=i.enter("reference");return a+=r.move(i.safe(i.associationId(e),{...r.current(),before:a,after:"]"})),o(),s(),a+=r.move("]"),a}function fb(){return"["}function Tl(){return{exit:{taskListCheckValueChecked:Du,taskListCheckValueUnchecked:Du,paragraph:yb}}}function Du(e){let t=this.stack[this.stack.length-2];t.type,t.checked=e.type==="taskListCheckValueChecked"}function yb(e){let t=this.stack[this.stack.length-2];if(t&&t.type==="listItem"&&typeof t.checked=="boolean"){let i=this.stack[this.stack.length-1];i.type;let n=i.children[0];if(n&&n.type==="text"){let r=t.children,a=-1,s;for(;++a<r.length;){let o=r[a];if(o.type==="paragraph"){s=o;break}}s===i&&(n.value=n.value.slice(1),n.value.length===0?i.children.shift():i.position&&n.position&&typeof n.position.start.offset=="number"&&(n.position.start.column++,n.position.start.offset++,i.position.start=Object.assign({},n.position.start)))}}this.exit(e)}var ui,de,fe,it,sr,tt,or,Ll,ai,bi,bs,Nu,lr,El,cr,Ol,dr,Cl,vs,Ku,ur,Ml,ar=class extends Map{constructor(i={}){super();ve(this,or);ve(this,ai);ve(this,bs);ve(this,lr);ve(this,cr);ve(this,dr);ve(this,vs);ve(this,ur);ve(this,ui,0);ve(this,de,new Map);ve(this,fe,new Map);ve(this,it,void 0);ve(this,sr,void 0);ve(this,tt,void 0);if(!(i.maxSize&&i.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");if(typeof i.maxAge=="number"&&i.maxAge===0)throw new TypeError("`maxAge` must be a number greater than 0");qe(this,it,i.maxSize),qe(this,sr,i.maxAge||Number.POSITIVE_INFINITY),qe(this,tt,i.onEviction)}get __oldCache(){return K(this,fe)}get(i){if(K(this,de).has(i)){let n=K(this,de).get(i);return he(this,lr,El).call(this,i,n)}if(K(this,fe).has(i)){let n=K(this,fe).get(i);if(he(this,ai,bi).call(this,i,n)===!1)return he(this,vs,Ku).call(this,i,n),n.value}}set(i,n,{maxAge:r=K(this,sr)}={}){let a=typeof r=="number"&&r!==Number.POSITIVE_INFINITY?Date.now()+r:void 0;return K(this,de).has(i)?K(this,de).set(i,{value:n,expiry:a}):he(this,dr,Cl).call(this,i,{value:n,expiry:a}),this}has(i){return K(this,de).has(i)?!he(this,ai,bi).call(this,i,K(this,de).get(i)):K(this,fe).has(i)?!he(this,ai,bi).call(this,i,K(this,fe).get(i)):!1}peek(i){if(K(this,de).has(i))return he(this,cr,Ol).call(this,i,K(this,de));if(K(this,fe).has(i))return he(this,cr,Ol).call(this,i,K(this,fe))}delete(i){let n=K(this,de).delete(i);return n&&qo(this,ui)._--,K(this,fe).delete(i)||n}clear(){K(this,de).clear(),K(this,fe).clear(),qe(this,ui,0)}resize(i){if(!(i&&i>0))throw new TypeError("`maxSize` must be a number greater than 0");let n=[...he(this,ur,Ml).call(this)],r=n.length-i;r<0?(qe(this,de,new Map(n)),qe(this,fe,new Map),qe(this,ui,n.length)):(r>0&&he(this,or,Ll).call(this,n.slice(0,r)),qe(this,fe,new Map(n.slice(r))),qe(this,de,new Map),qe(this,ui,0)),qe(this,it,i)}*keys(){for(let[i]of this)yield i}*values(){for(let[,i]of this)yield i}*[Symbol.iterator](){for(let i of K(this,de)){let[n,r]=i;he(this,ai,bi).call(this,n,r)===!1&&(yield[n,r.value])}for(let i of K(this,fe)){let[n,r]=i;K(this,de).has(n)||he(this,ai,bi).call(this,n,r)===!1&&(yield[n,r.value])}}*entriesDescending(){let i=[...K(this,de)];for(let n=i.length-1;n>=0;--n){let r=i[n],[a,s]=r;he(this,ai,bi).call(this,a,s)===!1&&(yield[a,s.value])}i=[...K(this,fe)];for(let n=i.length-1;n>=0;--n){let r=i[n],[a,s]=r;K(this,de).has(a)||he(this,ai,bi).call(this,a,s)===!1&&(yield[a,s.value])}}*entriesAscending(){for(let[i,n]of he(this,ur,Ml).call(this))yield[i,n.value]}get size(){if(!K(this,ui))return K(this,fe).size;let i=0;for(let n of K(this,fe).keys())K(this,de).has(n)||i++;return Math.min(K(this,ui)+i,K(this,it))}get maxSize(){return K(this,it)}entries(){return this.entriesAscending()}forEach(i,n=this){for(let[r,a]of this.entriesAscending())i.call(n,a,r,this)}get[Symbol.toStringTag](){return JSON.stringify([...this.entriesAscending()])}};ui=new WeakMap,de=new WeakMap,fe=new WeakMap,it=new WeakMap,sr=new WeakMap,tt=new WeakMap,or=new WeakSet,Ll=function(i){if(typeof K(this,tt)=="function")for(let[n,r]of i)K(this,tt).call(this,n,r.value)},ai=new WeakSet,bi=function(i,n){return typeof n.expiry=="number"&&n.expiry<=Date.now()?(typeof K(this,tt)=="function"&&K(this,tt).call(this,i,n.value),this.delete(i)):!1},bs=new WeakSet,Nu=function(i,n){if(he(this,ai,bi).call(this,i,n)===!1)return n.value},lr=new WeakSet,El=function(i,n){return n.expiry?he(this,bs,Nu).call(this,i,n):n.value},cr=new WeakSet,Ol=function(i,n){let r=n.get(i);return he(this,lr,El).call(this,i,r)},dr=new WeakSet,Cl=function(i,n){K(this,de).set(i,n),qo(this,ui)._++,K(this,ui)>=K(this,it)&&(qe(this,ui,0),he(this,or,Ll).call(this,K(this,fe)),qe(this,fe,K(this,de)),qe(this,de,new Map))},vs=new WeakSet,Ku=function(i,n){K(this,fe).delete(i),he(this,dr,Cl).call(this,i,n)},ur=new WeakSet,Ml=function*(){for(let i of K(this,fe)){let[n,r]=i;K(this,de).has(n)||he(this,ai,bi).call(this,n,r)===!1&&(yield i)}for(let i of K(this,de)){let[n,r]=i;he(this,ai,bi).call(this,n,r)===!1&&(yield i)}};var ql=new ar({maxSize:200});function Pu(e){let t=nu(e);if(ql.has(t))return ql.get(t);let i=zl(e,{extensions:[fs([gl(),hl()]),fl()],mdastExtensions:[[Al(),Tl],yl()]});return ql.set(t,i),i}function xe(e,t){let i=Pu(t),n=[];return ns(i,e,r=>{n.push(r.position)}),n.sort((r,a)=>a.start.offset-r.start.offset),n}function bb(e){let t=Pu(e),i=[];return ns(t,"listItem",n=>{if(n.children)for(let r of n.children)r.type==="paragraph"&&i.push(r.position)}),i.sort((n,r)=>r.start.offset-n.start.offset),i}function Hu(e){let t=xe("footnoteDefinition",e),i=[],n=new Map,r=new Map,a=function(s,o,l){let c=o.match(/\[\^.*?\]/)[0];if(n.has(c)){let m=n.get(c);m.footnotesReferencingKey.push(o),n.set(c,m);return}let d,u=[];do d=s.lastIndexOf(c,l),d!==-1&&(u.push(d),l=d-1);while(d>0);let g={key:c,referencePositions:u,footnotesReferencingKey:[o]};n.set(c,g)};for(let s of t){let o=e.substring(s.start.offset,s.end.offset);i.push(o),s.end.offset<e.length&&e[s.end.offset]===` +`&&(e=e.substring(0,s.end.offset)+e.substring(s.end.offset+1)),s.end.offset<e.length&&e[s.end.offset]===` +`&&(e=e.substring(0,s.end.offset)+e.substring(s.end.offset+1)),e=e.substring(0,s.start.offset)+e.substring(s.end.offset),a(e,o,s.start.offset)}for(let s of n){let o=s[1],l=o.referencePositions.length-o.footnotesReferencingKey.length;l=l>=0?l:0;let c=0;for(let d of o.footnotesReferencingKey){if(c+l>=o.referencePositions.length)throw new Error(E("logs.missing-footnote-error-message").replace("{FOOTNOTE}",d));r.set(d,o.referencePositions[l+c++])}}i=i.sort((s,o)=>r.get(s)-r.get(o)),i.length>0&&(e=e.trimEnd()+` `);for(let s of i)e+=` -`+s;return e}function bu(e){let t=ye("footnoteDefinition",e),i=[],n=new Map,r=new Map,a=new Map,s=[],o=new Set,l=function(u,m,g){let h=m.match(/\[\^.*?\]/)[0];r.set(m,h);let x=o.has(h);if(x&&n.has(m))return n.get(m);if(x)throw new Error(E("logs.too-many-footnotes-error-message").replace("{FOOTNOTE_KEY}",h));let b,v=-1;do b=u.lastIndexOf(h,g),b!==-1&&(s.push({key:h,position:b}),v=b,g=b-1);while(b>0);return o.add(h),v};e=vu(t,e,i,(u,m,g)=>{n.set(m,l(u,m,g))}),i=i.sort((u,m)=>n.get(u)-n.get(m)),s=s.sort((u,m)=>m.position-u.position),i.length>0&&(e=e.trimEnd()+` -`);let d=1,c=new Set;for(let u of i){if(c.has(u))continue;c.add(u);let m=r.get(u),g=`[^${d++}]`;a.set(m,g),e+=` -`+u.replace(m,g)}for(let u of s){let m=a.get(u.key);e=Td(e,u.key,m,u.position)}return e}function vu(e,t,i,n){for(let r of e){let a=t.substring(r.start.offset,r.end.offset);i.push(a),r.end.offset<t.length&&t[r.end.offset]===` -`&&(t=t.substring(0,r.end.offset)+t.substring(r.end.offset+1)),r.end.offset<t.length&&t[r.end.offset]===` -`&&(t=t.substring(0,r.end.offset)+t.substring(r.end.offset+1)),t=t.substring(0,r.start.offset)+t.substring(r.end.offset),n(t,a,r.start.offset)}return t}function Ya(e,t,i){let n=ye(i,e);if(n.length===0)return e;let r="";if(t==="underscore")r="_";else if(t==="asterisk")r="*";else{let a=n[n.length-1];r=e.substring(a.start.offset,a.start.offset+1)}i==="strong"&&(r+=r);for(let a of n){let s=r+e.substring(a.start.offset+r.length,a.end.offset-r.length)+r;e=pe(e,a.start.offset,a.end.offset,s)}return e}function xu(e){let t=ye("paragraph",e);if(t.length===0)return e;for(let i of t){let n=e.substring(i.start.offset,i.end.offset).split(` -`),r=n.length-1;if(!(r<1)){for(let a=0;a<r;a++){let s=n[a].trimEnd();s.endsWith("<br>")||s.endsWith("<br/>")||(n[a]=s+" ")}e=pe(e,i.start.offset,i.end.offset,n.join(` -`))}}return e}function wu(e){let t=e.endsWith(` -`),i=ye("paragraph",e);if(i.length===0)return e;for(let n of i){let r=n.start.offset;for(r>0&&r--;r>=0&&e.charAt(r)!=` +`+s;return e}function $u(e){let t=xe("footnoteDefinition",e),i=[],n=new Map,r=new Map,a=[],s=new Set,o=[],l=function(u,g,m){let f=g.match(/\[\^.*?\]/)[0];n.set(g,f);let w=s.has(f);if(w&&i.includes(g)){o.unshift(g);return}else if(w)throw new Error(E("logs.too-many-footnotes-error-message").replace("{FOOTNOTE_KEY}",f));let x;do x=u.lastIndexOf(f,m),x!==-1&&((x+g.length>u.length||u.substring(x,x+g.length)!==g)&&a.push({key:f,position:x}),m=x-1);while(x>0);s.add(f)};for(let u of t){let g=e.substring(u.start.offset,u.end.offset);i.unshift(g),l(e,g,u.start.offset)}let c=1,d=new Set;for(let u of i){if(d.has(u))continue;d.add(u);let g=n.get(u),m=`[^${c++}]`;r.set(g,m)}a.sort((u,g)=>g.position-u.position);for(let u of a){let g=r.get(u.key);e=au(e,u.key,g,u.position)}for(let u of d){let g=n.get(u),m=r.get(g);e=e.replace(u,u.replace(g,m))}for(let u of o){let g=e.replace(` +${u} +`,` +`);e===g&&(g=e.replace(u,"")),e=g}return e}function xs(e,t,i){let n=xe(i,e);if(n.length===0)return e;let r="";if(t==="underscore")r="_";else if(t==="asterisk")r="*";else{let a=n[n.length-1];r=e.substring(a.start.offset,a.start.offset+1)}i==="strong"&&(r+=r);for(let a of n){let s=r+e.substring(a.start.offset+r.length,a.end.offset-r.length)+r;e=ce(e,a.start.offset,a.end.offset,s)}return e}function Wu(e){let t=xe("paragraph",e);if(t.length===0)return e;for(let i of t){let n=e.substring(i.start.offset,i.end.offset).split(` +`),r=n.length-1;if(!(r<1)){for(let a=0;a<r;a++){let s=n[a].trimEnd();s.endsWith("<br>")||s.endsWith("<br/>")||(n[a]=s+" ")}e=ce(e,i.start.offset,i.end.offset,n.join(` +`))}}return e}function Uu(e){let t=e.endsWith(` +`),i=xe("paragraph",e);if(i.length===0)return e;for(let n of i){let r=n.start.offset;for(r>0&&r--;r>=0&&e.charAt(r)!=` `;)r--;r++;let a=e.substring(r,n.end.offset).split(` -`),s=a[0].trimStart();if(s.startsWith(">")||s.startsWith("- ")||s.startsWith("- ")||s.match(/^[0-9]+\.( |\t)+/)||s.match($a))continue;let o=a.length,l=[],d=!1;for(let h=0;h<o;h++){let x=a[h];if(d){let b=l.length-1;l[b]+=` -`+x}else l.push(x);d=x.endsWith("<br>")||x.endsWith("<br/>")||x.endsWith(" ")}for(;r>0&&e.charAt(r-1)==` -`;)r--;let c=e.length,u=n.end.offset;for(u<c&&u++;u<c&&e.charAt(u)==` -`;)u++;let m=` +`),s=a[0].trimStart();if(s.startsWith(">")||s.match(Ss)||s.match(zs))continue;let o=a.length,l=[],c=!1;for(let f=0;f<o;f++){let w=a[f];if(c){let x=l.length-1;l[x]+=` +`+w}else l.push(w);c=w.endsWith("<br>")||w.endsWith("<br/>")||w.endsWith(" ")}for(;r>0&&e.charAt(r-1)==` +`;)r--;let d=e.length,u=n.end.offset;for(u<d&&u++;u<d&&e.charAt(u)==` +`;)u++;let g=` -`;r==0&&(m="");let g=` +`;r==0&&(g="");let m=` -`;u==c&&(g=""),e=pe(e,r,u,m+l.join(` +`;u==d&&(m=""),e=ce(e,r,u,g+l.join(` -`)+g)}return t&&!e.endsWith(` +`)+m)}return t&&!e.endsWith(` `)&&(e+=` -`),e}function ku(e){let t=ye("link",e);for(let i of t){if(i==null)continue;let n=e.substring(i.start.offset,i.end.offset);if(!n.match(Nn))continue;let r=n.indexOf("]"),a=n.substring(0,1)+n.substring(1,r).trim()+n.substring(r);e=pe(e,i.start.offset,i.end.offset,a)}return e}function zu(e,t){let i=ye("emphasis",e);for(let n of i){let r=e.substring(n.start.offset+1,n.end.offset-1);r=t(r),e=pe(e,n.start.offset+1,n.end.offset-1,r)}return e}function Su(e,t){let i=ye("strong",e);for(let n of i){let r=e.substring(n.start.offset+2,n.end.offset-2);r=t(r),e=pe(e,n.start.offset+2,n.end.offset-2,r)}return e}function Pa(e,t){let i=Cy(e);for(let n of i){let r=n.start.offset;for(;r>0&&e.charAt(r-1).trim()==="";)r--;(r===0||e.charAt(r-1).trim()!="")&&r++;let a=e.substring(r,n.end.offset);_u.test(a)&&(r+=4,a=a.substring(4)),a=t(a),e=pe(e,r,n.end.offset,a)}return e}function Au(e){let t=ye("code",e);for(let i of t)e.substring(i.start.offset,i.end.offset).startsWith("```")&&(e=ot(e,i.start.offset,i.end.offset));return e}function Tu(e,t){let i=ye("math",e);for(let n of i)e=ot(e,n.start.offset,n.end.offset);i=ye("inlineMath",e);for(let n of i)e.substring(n.start.offset,n.end.offset).startsWith("$".repeat(t))&&(e=ot(e,n.start.offset,n.end.offset));return e}function Lu(e){let t=ye("blockquote",e);for(let i of t){let n=i.end.offset;for(;n<e.length-1&&e.charAt(n)!==` -`;)n++;e=ot(e,i.start.offset,n,!0)}return e}function Eu(e,t,i){let n=ye("list",e);if(!n)return e;for(let r of n){let a=r.start.offset;for(;a>0&&e.charAt(a-1)!==` -`;)a--;let s=e.substring(a,r.end.offset),o=function(u){let m=u.lastIndexOf("> ");return m!==-1&&(u=u.substring(m+2)),u=u.replaceAll(" "," "),Math.floor((u.split(" ").length-1)/2)+1},l=new Map,d=function(u,m){let g=m;for(;g>u;)l.delete(g--)},c=-1;s=s.replace(/^(( |\t|> )*)((\d+(\.|\)))|[-*+])([^\n]*)$/gm,(u,m="",g,h,x,b,v)=>{let S=1,L=o(m);if(!/^\d/.test(h)){let M=L>c?L:c;return d(L,M),u}return l.has(L)?t==="ascending"&&(S=l.get(L)+1,l.set(L,S)):l.set(L,1),c>L&&d(L,c),c=L,`${m}${S}${i}${v}`}),e=pe(e,a,r.end.offset,s)}return e}function Ou(e,t){let i=ye("listItem",e);if(!i)return e;let n=/^((\d+[.)])|(- \[[ x]\]))/m,r=t;if(t=="consistent"){let a=i.length-1;for(;a>=0;){let s=e.substring(i[a].start.offset,i[a].end.offset);if(a--,!s.match(n)){r=s.charAt(0);break}}if(a==-1)return e}for(let a of i){let s=e.substring(a.start.offset,a.end.offset);s.match(n)||(s=r+s.substring(1),e=pe(e,a.start.offset,a.end.offset,s))}return e}function el(e,t){let i=ye("blockquote",e);for(let n of i){let r=n.end.offset;for(;r<e.length-1&&e.charAt(r)!==` -`;)r++;let a=e.substring(n.start.offset,r);a=t(a),e=pe(e,n.start.offset,r,a)}return e}function Cu(e,t){let i=ye("math",e),n=new RegExp("^(\\${"+t+",})(\\n*)"),r=new RegExp("(\\n*)(\\${"+t+",})([^\\$]*)$");for(let a of i){let s=e.substring(a.start.offset,a.end.offset),o=My(s,t,a.start.offset);for(let l of o)e=hu(e,l.startIndex,l.endIndex,n,r)}i=ye("inlineMath",e);for(let a of i)e.substring(a.start.offset,a.end.offset).startsWith("$".repeat(t))&&(e=hu(e,a.start.offset,a.end.offset,n,r));return e}function My(e,t,i){let n="$".repeat(t),r=t;for(;e.charAt(r)==="$";)n+="$",r++;let a=[],s=Ut(e,n);if(s<=1)return[];if(s===2)return a.unshift({startIndex:i,endIndex:i+e.length}),a;s===3&&a.unshift({startIndex:i,endIndex:i+e.indexOf(n,n.length)+n.length}),s%2===1&&s--;let o=i,l=n.length;for(;s>2;){let d=e.indexOf(n,l)+n.length;a.unshift({startIndex:o,endIndex:i+d}),o=i+d+1,l=d+1,s-=2}return a.unshift({startIndex:i+e.indexOf(n,l),endIndex:i+e.length}),a}function hu(e,t,i,n,r){let a=e.substring(qn(e,t),t)??"",s=e.substring(qn(e,i),i)??"",o=/^(>( |\t)*)+\$+$/m,l=e.substring(t,i);return l=l.replace(n,(d,c,u="")=>u===""?c+` -`+a:c+` -`),l=l.replace(r,(d,c="",u,m)=>{let g=c==="";return g&&o.test(s.trim())?d:g?` -`+a+u+m:` -`+u+m}),pe(e,t,i,l)}function Ha(e){let t=[...e.matchAll(qu)],i=[];for(let n of t){let r=qn(e,n.index);if(r===0)continue;let a=qn(e,r-1),s=n[0],o=e.substring(r,n.index+s.length);if(qy(o,s))continue;let l=a,d=e.substring(a,r-1);if(!s.includes("|")&&!d.includes("|"))continue;d=d.replace(Xo,h=>{let x=h.trim();return x===""||x==="|"||(l+=h.length-1),""});let c=s.replace(Xo,"");if(d.endsWith("|")&&(d=d.slice(0,-1)),c.endsWith("|")&&(c=c.slice(0,-1)),d.split("|").length!==c.split("|").length)continue;let u=n.index+n[0].length;if(u>=e.length-1){i.push({startIndex:l,endIndex:e.length});continue}let m=e.substring(u+1).split(` -`),g=0;for(;g<m.length&&Iu.test(m[g]);)u+=m[g].length+1,g++;i.push({startIndex:l,endIndex:u})}return i.reverse()}function qy(e,t){if(e.trim()===""||t.includes("||"))return!0;let i=e.replace(t,"");return/[^\s>]/.test(i)}function Mu(e){let t=0,i=[],n=[...e.matchAll(Bu)];if(!n||n.length===0)return i;let r=[...e.matchAll(Fu)];return n.forEach(a=>{t=a.index;let s=!1,o=e.length-1;for(;r&&r.length!==0&&!s;)if(r[0].index<=t)r.shift();else{s=!0;let l=r[0];o=l.index+l[0].length}i.push({startIndex:t,endIndex:o}),!r||r.length}),i.reverse()}var Pi=/^([ \t]*)(#+)([ \t]+)([^\n\r]*?)([ \t]+#+)?$/gm,Ru=`^XXX\\.*? +`),e}function Vu(e){let t=xe("link",e);for(let i of t){if(i==null)continue;let n=e.substring(i.start.offset,i.end.offset);if(!n.match(pr))continue;let r=n.indexOf("]"),a=n.substring(0,1)+n.substring(1,r).trim()+n.substring(r);e=ce(e,i.start.offset,i.end.offset,a)}return e}function Gu(e,t){let i=xe("emphasis",e);for(let n of i){let r=e.substring(n.start.offset+1,n.end.offset-1);r=t(r),e=ce(e,n.start.offset+1,n.end.offset-1,r)}return e}function Qu(e,t){let i=xe("strong",e);for(let n of i){let r=e.substring(n.start.offset+2,n.end.offset-2);r=t(r),e=ce(e,n.start.offset+2,n.end.offset-2,r)}return e}function ws(e,t){let i=bb(e);for(let n of i){let r=n.start.offset;for(;r>0&&e.charAt(r-1).trim()==="";)r--;(r===0||e.charAt(r-1).trim()!="")&&r++;let a=e.substring(r,n.end.offset);dp.test(a)&&(r+=4,a=a.substring(4)),a=t(a),e=ce(e,r,n.end.offset,a)}return e}function Zu(e){let t=xe("code",e);for(let i of t)e.substring(i.start.offset,i.end.offset).startsWith("```")&&(e=St(e,i.start.offset,i.end.offset));return e}function Ju(e,t){let i=xe("math",e);for(let n of i)e=St(e,n.start.offset,n.end.offset);i=xe("inlineMath",e);for(let n of i)e.substring(n.start.offset,n.end.offset).startsWith("$".repeat(t))&&(e=St(e,n.start.offset,n.end.offset));return e}function Xu(e){let t=xe("blockquote",e);for(let i of t){let n=i.end.offset;for(;n<e.length-1&&e.charAt(n)!==` +`;)n++;e=St(e,i.start.offset,n,!0)}return e}function ep(e,t,i){let n=xe("list",e);if(!n)return e;for(let r of n){let a=r.start.offset;for(;a>0&&e.charAt(a-1)!==` +`;)a--;let s=e.substring(a,r.end.offset),o=function(u){let g=u.lastIndexOf("> ");return g!==-1&&(u=u.substring(g+2)),u=u.replaceAll(" "," "),Math.floor((u.split(" ").length-1)/2)+1},l=new Map,c=function(u,g){let m=g;for(;m>u;)l.delete(m--)},d=-1;s=s.replace(/^(( |\t|> )*)((\d+(\.|\)))|[-*+])([^\n]*)$/gm,(u,g="",m,f,w,x,v)=>{let z=1,L=o(g);if(!/^\d/.test(f)){let C=L>d?L:d;return c(L,C),u}return l.has(L)?t==="ascending"&&(z=l.get(L)+1,l.set(L,z)):l.set(L,1),d>L&&c(L,d),d=L,`${g}${z}${i}${v}`}),e=ce(e,a,r.end.offset,s)}return e}function ip(e,t){let i=xe("listItem",e);if(!i)return e;let n=/^((\d+[.)])|(- \[[ x]\]))/m,r=t;if(t=="consistent"){let a=i.length-1;for(;a>=0;){let s=e.substring(i[a].start.offset,i[a].end.offset);if(a--,!s.match(n)){r=s.charAt(0);break}}if(a==-1)return e}for(let a of i){let s=e.substring(a.start.offset,a.end.offset);s.match(n)||(s=r+s.substring(1),e=ce(e,a.start.offset,a.end.offset,s))}return e}function _l(e,t){let i=xe("blockquote",e);for(let n of i){let r=n.end.offset;for(;r<e.length-1&&e.charAt(r)!==` +`;)r++;let a=e.substring(n.start.offset,r);a=t(a),e=ce(e,n.start.offset,r,a)}return e}function tp(e,t){let i=xe("math",e),n=new RegExp("^(\\${"+t+",})(\\n*)"),r=new RegExp("(\\n*)(\\${"+t+",})([^\\$]*)$");for(let a of i){let s=e.substring(a.start.offset,a.end.offset),o=vb(s,t,a.start.offset);for(let l of o)e=Yu(e,l.startIndex,l.endIndex,n,r)}i=xe("inlineMath",e);for(let a of i)e.substring(a.start.offset,a.end.offset).startsWith("$".repeat(t))&&(e=Yu(e,a.start.offset,a.end.offset,n,r));return e}function vb(e,t,i){let n="$".repeat(t),r=t;for(;e.charAt(r)==="$";)n+="$",r++;let a=[],s=Ji(e,n);if(s<=1)return[];if(s===2)return a.unshift({startIndex:i,endIndex:i+e.length}),a;s===3&&a.unshift({startIndex:i,endIndex:i+e.indexOf(n,n.length)+n.length}),s%2===1&&s--;let o=i,l=n.length;for(;s>2;){let c=e.indexOf(n,l)+n.length;a.unshift({startIndex:o,endIndex:i+c}),o=i+c+1,l=c+1,s-=2}return a.unshift({startIndex:i+e.indexOf(n,l),endIndex:i+e.length}),a}function Yu(e,t,i,n,r){let a=e.substring(Xn(e,t),t)??"",[s]=fn(a,a.length),o=e.substring(Xn(e,i),i)??"",l=e.substring(t,i),c=ap.test(a.trim()),d=!1;for(l=l.replace(n,(u,g,m="")=>{let f="";return!c&&a.trim()!=""?(f+=` +`,d=!0):c&&!Il.test(a)&&(f+=` +`+s,d=!0),f+=g+` +`,m===""&&c&&(f+=s),f}),l=l.replace(r,(u,g="",m,f)=>{let w=g==="";return w&&c&&Il.test(o.trim())?u:w&&c?` +`+s+m+f:` +`+m+f});d&&t>0;){let u=e[t-1];if(u!==" "&&u!==" ")break;t--}return ce(e,t,i,l)}function ks(e){let t=[...e.matchAll(sp)],i=[];for(let n of t){let r=Xn(e,n.index);if(r===0)continue;let a=Xn(e,r-1),s=n[0],o=e.substring(r,n.index+s.length);if(xb(o,s))continue;let l=a,c=e.substring(a,r-1);if(!s.includes("|")&&!c.includes("|"))continue;c=c.replace(Bl,f=>{let w=f.trim();return w===""||w==="|"||(l+=f.length-1),""});let d=s.replace(Bl,"");if(c.endsWith("|")&&(c=c.slice(0,-1)),d.endsWith("|")&&(d=d.slice(0,-1)),ju(c)!==ju(d))continue;let u=n.index+n[0].length;if(u>=e.length-1){i.push({startIndex:l,endIndex:e.length});continue}let g=e.substring(u+1).split(` +`),m=0;for(;m<g.length&&op.test(g[m]);)u+=g[m].length+1,m++;i.push({startIndex:l,endIndex:u})}return i.reverse()}function xb(e,t){if(e.trim()===""||t.includes("||"))return!0;let i=e.replace(t,"");return/[^\s>]/.test(i)}function ju(e){let t=!1,i=0,n=0,r="";for(let a=0;a<e.length;a++)r=e[a],r==="\\"?(i++,t=i%2==1):(i=0,r==="|"&&!t&&n++,t=!1);return n}function np(e){let t=0,i=[],n=[...e.matchAll(lp)];if(!n||n.length===0)return i;let r=[...e.matchAll(cp)];return n.forEach(a=>{t=a.index;let s=!1,o=e.length-1;for(;r&&r.length!==0&&!s;)if(r[0].index<=t)r.shift();else{s=!0;let l=r[0];o=l.index+l[0].length}i.push({startIndex:t,endIndex:o}),!r||r.length}),i.reverse()}function rp(e,t){let i=xe("code",e);for(let n of i){let r=e.substring(n.start.offset,n.end.offset);!r.startsWith("```")||r.substring(3,r.indexOf(` +`)).trim()!==""||(e=ce(e,n.start.offset+3,n.start.offset+3,t))}return e}var nt=/^([ \t]*)(#+)([ \t]+)([^\n\r]*?)([ \t]+#+)?$/gm,up=`^XXX\\.*? (?:((?:.| )*?) -)?XXX(?=\\s|$)$`,Ge=/^---\n((?:(((?!---)(?:.|\n)*?)\n)?))---(?=\n|$)/,Iy=Ru.replaceAll("X","`"),By=Ru.replaceAll("X","~"),Fy=`^(( |( {4})).* -)+`,iT=new RegExp(`${Iy}|${By}|${Fy}`,"gm"),Wa=/(!?)\[{2}([^\][\n|]+)(\|([^\][\n|]+))?(\|([^\][\n|]+))?\]{2}/g,Nn=/(!?)\[([^[]*)\](\(.*\))/g,jn=/(\s|^)(#[^\s#;.,><?!=+]+)/g,Du=/^%%\n[^%]*\n%%/gm,Kn=/[,\s]+/,Va=/(\. ?){2}\./g,Yn="\\s*(>\\s*)*",qu=/(\|? *:?-{1,}:? *\|?)(\| *:?-{1,}:? *\|?)*( |\t)*$/gm,Xo=/^(((>[ ]?)*)|([ ]{0,3}))\|/m,Iu=/[^\n]*?\|[^\n]*?(\n|$)/m,Nu=/(([a-z\-0-9]+:)\/{2})([^\s/?#]*[^\s")'.?!/]|[/])?(([/?#][^\s")']*[^\s")'.?!])|[/])?/gi,Jt=/(?:(?:(?:[a-z]+:)?\/\/)|www\.)(?:localhost|(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?:(?:[a-fA-F\d]{1,4}:){7}(?:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,2}|:)|(?:[a-fA-F\d]{1,4}:){4}(?:(?::[a-fA-F\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,3}|:)|(?:[a-fA-F\d]{1,4}:){3}(?:(?::[a-fA-F\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,4}|:)|(?:[a-fA-F\d]{1,4}:){2}(?:(?::[a-fA-F\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,5}|:)|(?:[a-fA-F\d]{1,4}:){1}(?:(?::[a-fA-F\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,6}|:)|(?::(?:(?::[a-fA-F\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,7}|:)))(?:%[0-9a-zA-Z]{1,})?|(?:(?:[a-z\u00a1-\uffff0-9][-_]*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:(?:[/?#][^\s")']*[^\s")'.])|[/])?/gi,ju=/<a[\s]+([^>]+)>((?:.(?!<\/a>))*.)<\/a>/g,Ku=/[\p{L}\p{N}\p{Pc}\p{M}\-'’`]+/gu,Yu=/&[^\s]+;$/mi,Bu=Qu(!0),Fu=Qu(!1),Pu=/[“”„«»]/g,Hu=/[‘’‚‹›]/g,$u=/<%[^]*?%>/g,Xt="\\[.\\]",_u=new RegExp(`^${Xt}`),Wu=new RegExp(`^${Yn}- ${Xt} `),Ua=new RegExp(`^\\s*- ${Xt} `),$a=/^(\[\^\w+\]) ?([,.;!:?])/gm,Eo=/^(>\s*)+\[![^\s]*\]/m,il=RegExp(/\p{L}/,"u");function Ke(e){return e.replace(/\$/g,"$$$$")}function Pn(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Vu(e){let t=e.match(Wa);if(t){for(let i of t)if(i.includes("|")){let n=i.indexOf("|"),r=i.substring(0,n+1)+i.substring(n+1,i.length-2).trim()+"]]";e=e.replace(i,r)}}return e}function Uu(e){let t=Ha(e);if(t.length===0)return e;for(let i of t)e=ot(e,i.startIndex,i.endIndex);return e}function Ga(e){let t=e.match(/^#\s+(.*)/m);if(t&&t[1]){let i=t[1];return i=i.replaceAll(Wa,(n,r,a,s)=>s!=null?s.replace("|",""):a),i.replaceAll(Nn,"$2")}return""}function Gu(e){return[...e.matchAll(jn)].map(t=>t[2])}function Qu(e){let t="<!-{2,} *linter-{ENDING_TEXT} *-{2,}>",i="";return e?i+="disable":i+="enable",new RegExp(t.replace("{ENDING_TEXT}",i),"g")}var tl="tag",Hn="tags",$n=[tl,Hn],_y="alias",nl="aliases",Wn=[_y,nl],Za="linter-yaml-title-alias",en="disabled rules";function bi(e){return e.match(Ge)===null&&(e=`--- +)?XXX(?=\\s|$)$`,Qe=/^---\n((?:(((?!---)(?:.|\n)*?)\n)?))---(?=\n|$)/,wb=up.replaceAll("X","`"),kb=up.replaceAll("X","~"),Sb=`^(( |( {4})).* +)+`,DL=new RegExp(`${wb}|${kb}|${Sb}`,"gm"),As=/(!?)\[{2}([^\][\n|]+)(\|([^\][\n|]+))?(\|([^\][\n|]+))?\]{2}/g,pr=/(!?)\[([^[]*)\](\(.*\))/g,mr=/(\s|^)(#[^\s#;.,><?!=+{\]]+)/g,pp=/^%%\n[^%]*\n%%/gm,gr=/[,\s]+/,Ts=/(\. ?){2}\./g,hr="\\s*(>\\s*)*",Il=/^(>( |\t)*)+\$*?$/m,ap=/^\s*(>\s*)+/m,sp=/(\|? *:?-{1,}:? *\|?)(\| *:?-{1,}:? *\|?)*( |\t)*$/gm,Bl=/^(((>[ ]?)*)|([ ]{0,3}))\|/m,op=/[^\n]*?\|[^\n]*?(\n|$)/m,mp=/(([a-z\-0-9]+:)\/{2,3})([^\s/?#]*[^\s")'.?!/]|[/])?(([/?#][^\s")']*[^\s")'.?!])|[/])?/gi,xn=/(?:(?:(?:[a-z]+:)?\/\/)|www\.)(?:localhost|(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?:(?:[a-fA-F\d]{1,4}:){7}(?:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,2}|:)|(?:[a-fA-F\d]{1,4}:){4}(?:(?::[a-fA-F\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,3}|:)|(?:[a-fA-F\d]{1,4}:){3}(?:(?::[a-fA-F\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,4}|:)|(?:[a-fA-F\d]{1,4}:){2}(?:(?::[a-fA-F\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,5}|:)|(?:[a-fA-F\d]{1,4}:){1}(?:(?::[a-fA-F\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,6}|:)|(?::(?:(?::[a-fA-F\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,7}|:)))(?:%[0-9a-zA-Z]{1,})?|(?:(?:[a-z0-9][-_]*)*[a-z0-9]+)(?:\.(?:[a-z0-9]-*)*[a-z0-9]+)*(?:\.(?:[a-z]{2,})))(?::\d{2,5})?(?:(?:[/?#][a-z0-9-_%/&=?$.+!*‘(,#]*[a-z0-9-%_/$+!*‘(,])|[/])?/gi,gp=/<a[\s]+([^>]+)>((?:.(?!<\/a>))*.)<\/a>/g,hp=/[\p{L}\p{N}\p{Pc}\p{M}\-'’`]+/gu,fp=/&[^\s]+;$/mi,lp=zp(!0),cp=zp(!1),yp=/[“”„«»]/g,bp=/[‘’‚‹›]/g,vp=/<%[^]*?%>/g,Lt="\\[.\\]",dp=new RegExp(`^${Lt}`),xp=new RegExp(`^${hr}- ${Lt} `),Ls=new RegExp(`^\\s*- ${Lt} `),Ss=new RegExp(`^\\s*(-|\\*|\\+|\\d+[.)]|- (${Lt}))`,"m"),zs=/^(\[\^[^\]]*\]) ?([,.;!:?])/gm,ss=/^(>\s*)+\[![^\s]*\]/m,Fl=RegExp(/\p{L}/,"u");function Ze(e){return e.replace(/\$/g,"$$$$")}function fr(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function wp(e){let t=e.match(As);if(t){for(let i of t)if(i.includes("|")){let n=i.indexOf("|"),r=i.substring(0,n+1)+i.substring(n+1,i.length-2).trim()+"]]";e=e.replace(i,r)}}return e}function kp(e){let t=ks(e);if(t.length===0)return e;for(let i of t)e=St(e,i.startIndex,i.endIndex);return e}function Es(e){let t=e.match(/^#\s+(.*)/m);if(t&&t[1]){let i=t[1];return i=i.replaceAll(As,(n,r,a,s)=>s!=null?s.replace("|",""):a),i.replaceAll(pr,"$2")}return""}function Sp(e){return[...e.matchAll(mr)].map(t=>t[2])}function zp(e){let t="<!-{2,} *linter-{ENDING_TEXT} *-{2,}>",i="";return e?i+="disable":i+="enable",new RegExp(t.replace("{ENDING_TEXT}",i),"g")}var Rl="tag",yr="tags",vi=[Rl,yr],zb="alias",Dl="aliases",xi=[zb,Dl],Cs="linter-yaml-title-alias",wn="disabled rules";function Oi(e){return e.match(Qe)===null&&(e=`--- --- -`+e),e}function tn(e){let t=e.match(Ge);return t?t[1]:null}function Ae(e,t){if(!e.match(Ge))return e;let i=e.match(Ge)[0],n=t(i);return e=e.replace(i,Ke(n)),e}function rl(e){return new RegExp(`^([\\t ]*)${e}:[ \\t]*(\\S.*|(?:(?:\\n *- \\S.*)|((?:\\n *- *))*|(\\n([ \\t]+[^\\n]*))*)*)\\n`,"m")}function Te(e,t,i){let n=`${t}:${i} -`,r=!1,a=e.replace(rl(t),(s,o)=>(r=!0,o+n));return r||(a=`${e}${n}`),a}function Ce(e,t){let i=e.match(rl(t));return i==null?null:i[2]}function ut(e,t){return e.replace(rl(t),"")}function Mi(e){if(e==null)return null;let t=yo(e.replace(/\n(\t)+/g,` - `));return t??{}}function Qe(e,t,i,n,r=!1){if(typeof e=="string"&&(e=[e]),e==null||e.length===0)return Ry(t);let a=n&&(t=="multi-line"||t=="single string to multi-line"&&e.length>1);if(r||a)for(let s=0;s<e.length;s++){let o=e[s],l=nn(o);l&&(o=o.substring(1,o.length-1));let d=r&&Oa(o);l&&d||(d||l&&a)&&(e[s]=li(o,i,d))}switch(t){case"single string to single-line":if(e.length===1)return" "+e[0];case"single-line":return" "+Zu(e);case"single string to multi-line":if(e.length===1)return" "+e[0];case"multi-line":return Dy(e);case"single string space delimited":return e.length===1?" "+e[0]:" "+e.join(" ");case"single string comma delimited":return e.length===1?" "+e[0]:" "+e.join(", ");case"single-line space delimited":return e.length===1?" "+e[0]:" "+Zu(e).replaceAll(", "," ")}}function Ry(e){switch(e){case"single-line":case"single-line space delimited":case"multi-line":return" []";case"single string to single-line":case"single string to multi-line":case"single string space delimited":case"single string comma delimited":return" "}}function Zu(e){return e==null||e.length===0?"[]":"["+e.join(", ")+"]"}function Dy(e){return e==null||e.length===0?"[]":` +`+e),e}function kn(e){let t=e.match(Qe);return t?t[1]:null}function ye(e,t){if(!e.match(Qe))return e;let i=e.match(Qe)[0],n=t(i);return e=e.replace(i,Ze(n)),e}function Nl(e,t=!0){return t?new RegExp(`^([\\t ]*)${e}:[ \\t]*(\\S.*|(?:(?:\\n *- \\S.*)|((?:\\n *- *))*|(\\n([ \\t]+[^\\n]*))*)*)\\n`,"m"):new RegExp(`^${e}:[ \\t]*(\\S.*|(?:(?:\\n *- \\S.*)|((?:\\n *- *))*|(\\n([ \\t]+[^\\n]*))*)*)\\n`,"m")}function se(e,t,i){let n=`${t}:${i} +`,r=!1,a=e.replace(Nl(t),(s,o)=>(r=!0,o+n));return r||(a=`${e}${n}`),a}function ue(e,t,i=!0){let n=e.match(Nl(t,i));if(n==null)return null;let r=n[2];return i||(r=n[1]),r}function Et(e,t,i=!0){return e.replace(Nl(t,i),"")}function si(e){if(e==null)return null;let t=Wo(e.replace(/\n(\t)+/g,` + `));return t??{}}function we(e,t,i,n,r=!1){if(typeof e=="string"&&(e=[e]),e==null||e.length===0)return Ab(t);let a=n&&(t=="multi-line"||t=="single string to multi-line"&&e.length>1);if(r||a)for(let s=0;s<e.length;s++){let o=e[s],l=Sn(o);l&&(o=o.substring(1,o.length-1));let c=r&&as(o);l&&c||(c||l&&a)&&(e[s]=wi(o,i,c))}switch(t){case"single string to single-line":if(e.length===1)return" "+e[0];case"single-line":return" "+Ap(e);case"single string to multi-line":if(e.length===1)return" "+e[0];case"multi-line":return Tb(e);case"single string space delimited":return e.length===1?" "+e[0]:" "+e.join(" ");case"single string comma delimited":return e.length===1?" "+e[0]:" "+e.join(", ");case"single-line space delimited":return e.length===1?" "+e[0]:" "+Ap(e).replaceAll(", "," ")}}function Ab(e){switch(e){case"single-line":case"single-line space delimited":case"multi-line":return" []";case"single string to single-line":case"single string to multi-line":case"single string space delimited":case"single string comma delimited":return" "}}function Ap(e){return e==null||e.length===0?"[]":"["+e.join(", ")+"]"}function Tb(e){return e==null||e.length===0?"[]":` - `+e.join(` - - `)}function vi(e){if(e==null||e.length===0)return null;if(e=e.trimEnd(),e.startsWith("["))return e=e.substring(1),e.endsWith("]")&&(e=e.substring(0,e.length-1)),e.length===0?null:Qa(e,",").filter(i=>i!="");if(e.includes(` -`)){let t=e.split(/[ \t]*\n[ \t]*-[ \t]*/);return t.splice(0,1),t=t.filter(i=>i!=""),t==null||t.length===0?null:t}return e}function Ja(e){if(e==null)return[];let t=[],i=[];Array.isArray(e)?i=e:e.includes(",")?i=Qa(e,","):i=Qa(e," ");for(let n of i)t.push(n.trim());return t}function Xa(e){return typeof e=="string"?Qa(e,","):e}function Qa(e,t=","){if(e==""||e==null)return null;if(t.length>1)throw new Error(E("logs.invalid-delimiter-error-message"));let i=[],n="",r=0;for(;r<e.length;){let a=e.charAt(r);if(a===t)i.push(n.trim()),n="";else if(a==='"'||a==="'"){let s=e.indexOf(a,r+1);s!=-1?(n+=e.substring(r,s+1),r=s):n+=a}else n+=a;r++}return n.trim()!=""&&i.push(n.trim()),i}function nn(e){return e.length>1&&(e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"'))}function li(e,t,i=!1,n=!1){let r=Ny(e,t,i);if(n)return r;try{if(yo(r)===e)return r}catch{}let a=bo(e,{lineWidth:-1,quotingType:t,forceQuotes:i}).slice(0,-1),s=bo(e,{lineWidth:-1,quotingType:t=='"'?"'":'"',forceQuotes:i}).slice(0,-1);return s===e||s.length<a.length?s:a}function Ny(e,t,i=!1){if(nn(e))return e;let n=e.includes("'"),r=e.includes('"'),a=e.includes(": ");return!n&&!r&&!a&&!i||n&&r?e:n?`"${e}"`:r?`'${e}'`:`${t}${e}${t}`}function Ju(e){let t=Ce(e,en);if(t==null)return[];let i=t.includes(` -`)?`${en}: -`:`${en}: `;i+=t;let r=Mi(i)["disabled rules"];return r?(typeof r=="string"&&(r=[r]),r):[]}var an=require("obsidian");var Xu=require("obsidian");function xi(e,t,i){Xu.MarkdownRenderer.renderMarkdown(e,t,"",i);let n=t.innerHTML.trim();n.startsWith("<p>")&&(n=n.substring(3)),n.endsWith("</p>")&&(n=n.substring(0,n.length-4)),t.innerHTML=n}function Xe(e){e.addClass("linter-visually-hidden")}function wi(e){e.removeClass("linter-visually-hidden")}var pt=class{constructor(t,i,n,r,a){this.configKey=t;this.nameKey=i;this.descriptionKey=n;this.defaultValue=r;a&&(this.ruleAlias=a)}getName(){return E(this.nameKey)??""}getDescription(){return E(this.descriptionKey)??""}getSearchInfo(){return{name:this.getName(),description:this.getDescription()}}setOption(t,i){i.ruleConfigs[this.ruleAlias][this.configKey]=t}parseNameAndDescriptionAndRemoveSettingBorder(t,i){xi(this.getName(),t.nameEl,i.settingsTab.component),xi(this.getDescription(),t.descEl,i.settingsTab.component),t.settingEl.addClass("linter-no-border")}},rn=class extends pt{display(i,n,r){let a=new an.Setting(i).addToggle(s=>{s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveSettings()})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}},Vn=class extends pt{display(i,n,r){let a=new an.Setting(i).addText(s=>{s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveSettings()})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}},es=class extends pt{display(i,n,r){let a=new an.Setting(i).addTextArea(s=>{s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveSettings()})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}},is=class extends pt{display(i,n,r){let a=new an.Setting(i).addMomentFormat(s=>{s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.setPlaceholder("dddd, MMMM Do YYYY, h:mm:ss a"),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveSettings()})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}},ts=class{constructor(t,i){this.value=t,this.description=i}getDisplayValue(){return E(this.value)??""}},ns=class extends pt{constructor(i,n,r,a,s,o){super(i,n,r,a,o);this.options=s}getSearchInfo(){return{name:this.getName(),description:this.getDescription(),options:this.options}}display(i,n,r){let a=new an.Setting(i).addDropdown(s=>{for(let o of this.options)s.addOption(o.value.replace("enums.",""),o.getDisplayValue());s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveSettings()})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}};var Hi=class extends Error{constructor(t,i){super(t),this.cause=i??null,this.stack=i.stack??null,Object.setPrototypeOf(this,Hi.prototype)}};var f={code:{replaceAction:"code",placeholder:"{CODE_BLOCK_PLACEHOLDER}"},inlineCode:{replaceAction:"inlineCode",placeholder:"{INLINE_CODE_BLOCK_PLACEHOLDER}"},image:{replaceAction:"image",placeholder:"{IMAGE_PLACEHOLDER}"},thematicBreak:{replaceAction:"thematicBreak",placeholder:"{HORIZONTAL_RULE_PLACEHOLDER}"},italics:{replaceAction:"emphasis",placeholder:"{ITALICS_PLACEHOLDER}"},bold:{replaceAction:"strong",placeholder:"{STRONG_PLACEHOLDER}"},list:{replaceAction:"list",placeholder:"{LIST_PLACEHOLDER}"},blockquote:{replaceAction:"blockquote",placeholder:"{BLOCKQUOTE_PLACEHOLDER}"},math:{replaceAction:"math",placeholder:"{MATH_PLACEHOLDER}"},inlineMath:{replaceAction:"inlineMath",placeholder:"{INLINE_MATH_PLACEHOLDER}"},html:{replaceAction:"html",placeholder:"{HTML_PLACEHOLDER}"},yaml:{replaceAction:Ge,placeholder:Ke(`--- ----`)},wikiLink:{replaceAction:Wa,placeholder:"{WIKI_LINK_PLACEHOLDER}"},obsidianMultiLineComments:{replaceAction:Du,placeholder:"{OBSIDIAN_COMMENT_PLACEHOLDER}"},footnoteAtStartOfLine:{replaceAction:$a,placeholder:"{FOOTNOTE_AT_START_OF_LINE_PLACEHOLDER}"},footnoteAfterATask:{replaceAction:/- \[.] (\[\^\w+\]) ?([,.;!:?])/gm,placeholder:"{FOOTNOTE_AFTER_A_TASK_PLACEHOLDER}"},url:{replaceAction:Jt,placeholder:"{URL_PLACEHOLDER}"},anchorTag:{replaceAction:ju,placeholder:"{ANCHOR_PLACEHOLDER}"},templaterCommand:{replaceAction:$u,placeholder:"{TEMPLATER_PLACEHOLDER}"},link:{replaceAction:Yy,placeholder:"{REGULAR_LINK_PLACEHOLDER}"},tag:{replaceAction:Py,placeholder:"#tag-placeholder"},table:{replaceAction:Hy,placeholder:"{TABLE_PLACEHOLDER}"},customIgnore:{replaceAction:$y,placeholder:"{CUSTOM_IGNORE_PLACEHOLDER}"}};function we(e,t,i){let n=[];for(let r of e){let a;if(typeof r.replaceAction=="string")a=jy(t,r.placeholder,r.replaceAction);else if(r.replaceAction instanceof RegExp)a=Ky(t,r.placeholder,r.replaceAction);else if(typeof r.replaceAction=="function"){let s=r.replaceAction;a=s(t,r.placeholder)}t=a.newText,n.push({replacedValues:a.replacedValues,placeholder:r.placeholder})}return t=i(t),n=n.reverse(),n!=null&&n.length>0&&n.forEach(r=>{r.replacedValues.forEach(a=>{t=t.replace(new RegExp(r.placeholder,"i"),Ke(a))})}),t}function jy(e,t,i){let n=ye(i,e),r=[];for(let a of n){let s=e.substring(a.start.offset,a.end.offset);r.push(s),e=pe(e,a.start.offset,a.end.offset,t)}return r.reverse(),{newText:e,replacedValues:r}}function Ky(e,t,i){let n=e.match(i),r=[];if(i.flags.includes("g")){if(e=e.replaceAll(i,t),n)for(let a of n)r.push(a)}else e=e.replace(i,t),n&&r.push(n[0]);return{newText:e,replacedValues:r}}function Yy(e,t){let i=ye("link",e),n=[];for(let r of i){if(r==null)continue;let a=e.substring(r.start.offset,r.end.offset);a.match(Nn)&&(n.push(a),e=pe(e,r.start.offset,r.end.offset,t))}return n.reverse(),{newText:e,replacedValues:n}}function Py(e,t){let i=[];return e=e.replace(jn,(n,r,a)=>(i.push(a),r+t)),{newText:e,replacedValues:i}}function Hy(e,t){let i=Ha(e),n=new Array(i.length),r=0,a=n.length;for(let s of i)n[a-1-r++]=e.substring(s.startIndex,s.endIndex),e=pe(e,s.startIndex,s.endIndex,t);return{newText:e,replacedValues:n}}function $y(e,t){let i=Mu(e),n=new Array(i.length),r=0,a=n.length;for(let s of i)n[a-1-r++]=e.substring(s.startIndex,s.endIndex),e=pe(e,s.startIndex,s.endIndex,t);return{newText:e,replacedValues:n}}var N=(s=>(s.YAML="YAML",s.HEADING="Heading",s.FOOTNOTE="Footnote",s.CONTENT="Content",s.SPACING="Spacing",s.PASTE="Paste",s))(N||{}),rs=class{constructor(t,i,n,r,a,s,o,l=[],d=!1,c=[]){this.nameKey=t;this.descriptionKey=i;this.settingsKey=n;this.alias=r;this.type=a;this.applyAfterIgnore=s;this.examples=o;this.options=l;this.hasSpecialExecutionOrder=d;this.ignoreTypes=c;this.ruleHeading=this.getName().toLowerCase().replaceAll(" ","-"),l.unshift(new rn("enabled",this.descriptionKey,"",!1));for(let u of l)u.ruleAlias=r}getDefaultOptions(){let t={};for(let i of this.options)t[i.configKey]=i.defaultValue;return t}getOptions(t){return t.ruleConfigs[this.settingsKey]}getName(){return E(this.nameKey)}getDescription(){return E(this.descriptionKey)}getURL(){return"https://platers.github.io/obsidian-linter/settings/"+this.type.toLowerCase()+"-rules/#"+this.ruleHeading}enabledOptionName(){return this.options[0].configKey}apply(t,i){return we(this.ignoreTypes,t,n=>this.applyAfterIgnore(n,i))}},as=class{constructor(t,i,n,r={}){this.description=t,this.options=r,this.before=i,this.after=n}},ip=Object.values(N);function ss(e){let t=tn(e);if(t===null)return[[],!1];let i=Ju(t);return i.includes("all")?[ki.map(n=>n.alias),!0]:[i,!1]}var ki=[],Wy={},mt=new Map;function tp(e){ki.push(e),ki.sort((t,i)=>ip.indexOf(t.type)-ip.indexOf(i.type)||t.settingsKey.localeCompare(i.settingsKey)),Wy[e.alias]=e,mt.has(e.type)?mt.get(e.type).push(e):mt.set(e.type,[e])}function os(e,t){let i;throw e instanceof Hc?(i=e.toString(),i=E("logs.wrapper-yaml-error").replace("{ERROR_MESSAGE}",i.substring(i.indexOf(":")+1))):i=E("logs.wrapper-unknown-error").replace("{ERROR_MESSAGE}",e.message),new Hi(`"${t}" encountered an ${i}`,e)}var bn=da(np());function Vy(e){for(var t=[],i=1;i<arguments.length;i++)t[i-1]=arguments[i];var n=Array.from(typeof e=="string"?[e]:e);n[n.length-1]=n[n.length-1].replace(/\r?\n([\t ]*)$/,"");var r=n.reduce(function(o,l){var d=l.match(/\n([\t ]+|(?!\s).)/g);return d?o.concat(d.map(function(c){var u,m;return(m=(u=c.match(/[\t ]/g))===null||u===void 0?void 0:u.length)!==null&&m!==void 0?m:0})):o},[]);if(r.length){var a=new RegExp(` + - `)}function Ie(e){if(e==null||e.length===0)return null;if(e=e.trimEnd(),e.startsWith("["))return e=e.substring(1),e.endsWith("]")&&(e=e.substring(0,e.length-1)),e.length===0?null:Os(e,",").filter(i=>i!="");if(e.includes(` +`)){let t=e.split(/[ \t]*\n[ \t]*-[ \t]*/);return t.splice(0,1),t=t.filter(i=>i!=""),t==null||t.length===0?null:t}return e}function rt(e){if(e==null)return[];let t=[],i=[];Array.isArray(e)?i=e:e.includes(",")?i=Os(e,","):i=Os(e," ");for(let n of i)t.push(n.trim());return t}function at(e){return typeof e=="string"?Os(e,","):e}function Os(e,t=","){if(e==""||e==null)return null;if(t.length>1)throw new Error(E("logs.invalid-delimiter-error-message"));let i=[],n="",r=0;for(;r<e.length;){let a=e.charAt(r);if(a===t)i.push(n.trim()),n="";else if(a==='"'||a==="'"){let s=e.indexOf(a,r+1);s!=-1?(n+=e.substring(r,s+1),r=s):n+=a}else n+=a;r++}return n.trim()!=""&&i.push(n.trim()),i}function Sn(e){return e.length>1&&(e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"'))}function wi(e,t,i=!1,n=!1){let r=Lb(e,t,i);if(n)return r;try{if(Wo(r)===e)return r}catch{}let a=Uo(e,{lineWidth:-1,quotingType:t,forceQuotes:i}).slice(0,-1),s=Uo(e,{lineWidth:-1,quotingType:t=='"'?"'":'"',forceQuotes:i}).slice(0,-1);return s===e||s.length<a.length?s:a}function Lb(e,t,i=!1){if(Sn(e))return e;let n=e.includes("'"),r=e.includes('"'),a=e.includes(": ");return!n&&!r&&!a&&!i||n&&r?e:n?`"${e}"`:r?`'${e}'`:`${t}${e}${t}`}function Tp(e){let t=ue(e,wn);if(t==null)return[];let i=t.includes(` +`)?`${wn}: +`:`${wn}: `;i+=t;let r=si(i)["disabled rules"];return r?(typeof r=="string"&&(r=[r]),r):[]}var An=require("obsidian");var Lp=require("obsidian");function Ci(e,t,i){Lp.MarkdownRenderer.renderMarkdown(e,t,"",i);let n=t.innerHTML.trim();n.startsWith("<p>")&&(n=n.substring(3)),n.endsWith("</p>")&&(n=n.substring(0,n.length-4)),t.innerHTML=n}function pi(e){e.addClass("linter-visually-hidden")}function Mi(e){e.removeClass("linter-visually-hidden")}var Ot=class{constructor(t,i,n,r,a){this.configKey=t;this.nameKey=i;this.descriptionKey=n;this.defaultValue=r;a&&(this.ruleAlias=a)}getName(){return E(this.nameKey)??""}getDescription(){return E(this.descriptionKey)??""}getSearchInfo(){return{name:this.getName(),description:this.getDescription()}}setOption(t,i){i.ruleConfigs[this.ruleAlias][this.configKey]=t}parseNameAndDescriptionAndRemoveSettingBorder(t,i){Ci(this.getName(),t.nameEl,i.settingsTab.component),Ci(this.getDescription(),t.descEl,i.settingsTab.component),t.settingEl.addClass("linter-no-border")}},zn=class extends Ot{display(i,n,r){let a=new An.Setting(i).addToggle(s=>{s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveSettings()})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}},br=class extends Ot{display(i,n,r){let a=new An.Setting(i).addText(s=>{s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveSettings()})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}},Ms=class extends Ot{display(i,n,r){let a=new An.Setting(i).addTextArea(s=>{s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveSettings()})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}},qs=class extends Ot{display(i,n,r){let a=new An.Setting(i).addMomentFormat(s=>{s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.setPlaceholder("dddd, MMMM Do YYYY, h:mm:ss a"),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveSettings()})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}},Is=class{constructor(t,i){this.value=t,this.description=i}getDisplayValue(){return E(this.value)??""}},Bs=class extends Ot{constructor(i,n,r,a,s,o){super(i,n,r,a,o);this.options=s}getSearchInfo(){return{name:this.getName(),description:this.getDescription(),options:this.options}}display(i,n,r){let a=new An.Setting(i).addDropdown(s=>{for(let o of this.options)s.addOption(o.value.replace("enums.",""),o.getDisplayValue());s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveSettings()})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}};var Tn=class e extends Error{constructor(t,i){super(t),this.cause=i??null,this.stack=i.stack??null,Object.setPrototypeOf(this,e.prototype)}};var h={code:{replaceAction:"code",placeholder:"{CODE_BLOCK_PLACEHOLDER}"},inlineCode:{replaceAction:"inlineCode",placeholder:"{INLINE_CODE_BLOCK_PLACEHOLDER}"},image:{replaceAction:"image",placeholder:"{IMAGE_PLACEHOLDER}"},thematicBreak:{replaceAction:"thematicBreak",placeholder:"{HORIZONTAL_RULE_PLACEHOLDER}"},italics:{replaceAction:"emphasis",placeholder:"{ITALICS_PLACEHOLDER}"},bold:{replaceAction:"strong",placeholder:"{STRONG_PLACEHOLDER}"},list:{replaceAction:"list",placeholder:"{LIST_PLACEHOLDER}"},blockquote:{replaceAction:"blockquote",placeholder:"{BLOCKQUOTE_PLACEHOLDER}"},math:{replaceAction:"math",placeholder:"{MATH_PLACEHOLDER}"},inlineMath:{replaceAction:"inlineMath",placeholder:"{INLINE_MATH_PLACEHOLDER}"},html:{replaceAction:"html",placeholder:"{HTML_PLACEHOLDER}"},yaml:{replaceAction:Qe,placeholder:Ze(`--- +---`)},wikiLink:{replaceAction:As,placeholder:"{WIKI_LINK_PLACEHOLDER}"},obsidianMultiLineComments:{replaceAction:pp,placeholder:"{OBSIDIAN_COMMENT_PLACEHOLDER}"},footnoteAtStartOfLine:{replaceAction:zs,placeholder:"{FOOTNOTE_AT_START_OF_LINE_PLACEHOLDER}"},footnoteAfterATask:{replaceAction:/- \[.] (\[\^\w+\]) ?([,.;!:?])/gm,placeholder:"{FOOTNOTE_AFTER_A_TASK_PLACEHOLDER}"},url:{replaceAction:xn,placeholder:"{URL_PLACEHOLDER}"},anchorTag:{replaceAction:gp,placeholder:"{ANCHOR_PLACEHOLDER}"},templaterCommand:{replaceAction:vp,placeholder:"{TEMPLATER_PLACEHOLDER}"},link:{replaceAction:Cb,placeholder:"{REGULAR_LINK_PLACEHOLDER}"},tag:{replaceAction:Mb,placeholder:"#tag-placeholder"},table:{replaceAction:qb,placeholder:"{TABLE_PLACEHOLDER}"},customIgnore:{replaceAction:Ib,placeholder:"{CUSTOM_IGNORE_PLACEHOLDER}"}};function Le(e,t,i){let n=[];for(let r of e){let a;if(typeof r.replaceAction=="string")a=Eb(t,r.placeholder,r.replaceAction);else if(r.replaceAction instanceof RegExp)a=Ob(t,r.placeholder,r.replaceAction);else if(typeof r.replaceAction=="function"){let s=r.replaceAction;a=s(t,r.placeholder)}t=a.newText,n.push({replacedValues:a.replacedValues,placeholder:r.placeholder})}return t=i(t),n=n.reverse(),n!=null&&n.length>0&&n.forEach(r=>{r.replacedValues.forEach(a=>{t=t.replace(new RegExp(r.placeholder,"i"),Ze(a))})}),t}function Eb(e,t,i){let n=xe(i,e),r=[];for(let a of n){let s=e.substring(a.start.offset,a.end.offset);r.push(s),e=ce(e,a.start.offset,a.end.offset,t)}return r.reverse(),{newText:e,replacedValues:r}}function Ob(e,t,i){let n=e.match(i),r=[];if(i.flags.includes("g")){if(e=e.replaceAll(i,t),n)for(let a of n)r.push(a)}else e=e.replace(i,t),n&&r.push(n[0]);return{newText:e,replacedValues:r}}function Cb(e,t){let i=xe("link",e),n=[];for(let r of i){if(r==null)continue;let a=e.substring(r.start.offset,r.end.offset);a.match(pr)&&(n.push(a),e=ce(e,r.start.offset,r.end.offset,t))}return n.reverse(),{newText:e,replacedValues:n}}function Mb(e,t){let i=[];return e=e.replace(mr,(n,r,a)=>(i.push(a),r+t)),{newText:e,replacedValues:i}}function qb(e,t){let i=ks(e),n=new Array(i.length),r=0,a=n.length;for(let s of i)n[a-1-r++]=e.substring(s.startIndex,s.endIndex),e=ce(e,s.startIndex,s.endIndex,t);return{newText:e,replacedValues:n}}function Ib(e,t){let i=np(e),n=new Array(i.length),r=0,a=n.length;for(let s of i)n[a-1-r++]=e.substring(s.startIndex,s.endIndex),e=ce(e,s.startIndex,s.endIndex,t);return{newText:e,replacedValues:n}}var D=(s=>(s.YAML="YAML",s.HEADING="Heading",s.FOOTNOTE="Footnote",s.CONTENT="Content",s.SPACING="Spacing",s.PASTE="Paste",s))(D||{}),_s=class{constructor(t,i,n,r,a,s,o,l=[],c=!1,d=[]){this.nameKey=t;this.descriptionKey=i;this.settingsKey=n;this.alias=r;this.type=a;this.applyAfterIgnore=s;this.examples=o;this.options=l;this.hasSpecialExecutionOrder=c;this.ignoreTypes=d;this.ruleHeading=this.getName().toLowerCase().replaceAll(" ","-"),l.unshift(new zn("enabled",this.descriptionKey,"",!1));for(let u of l)u.ruleAlias=r}getDefaultOptions(){let t={};for(let i of this.options)t[i.configKey]=i.defaultValue;return t}getOptions(t){return t.ruleConfigs[this.settingsKey]}getName(){return E(this.nameKey)}getDescription(){return E(this.descriptionKey)}getURL(){return"https://platers.github.io/obsidian-linter/settings/"+this.type.toLowerCase()+"-rules/#"+this.ruleHeading}enabledOptionName(){return this.options[0].configKey}apply(t,i){return Le(this.ignoreTypes,t,n=>this.applyAfterIgnore(n,i))}},Fs=class{constructor(t,i,n,r={}){this.description=t,this.options=r,this.before=i,this.after=n}},Op=Object.values(D);function Rs(e){let t=kn(e);if(t===null)return[[],!1];let i=Tp(t);return i.includes("all")?[qi.map(n=>n.alias),!0]:[i,!1]}var qi=[],Bb={},Ct=new Map;function Cp(e){qi.push(e),qi.sort((t,i)=>Op.indexOf(t.type)-Op.indexOf(i.type)||t.settingsKey.localeCompare(i.settingsKey)),Bb[e.alias]=e,Ct.has(e.type)?Ct.get(e.type).push(e):Ct.set(e.type,[e])}function Ds(e,t){let i;throw e instanceof zd?(i=e.toString(),i=E("logs.wrapper-yaml-error").replace("{ERROR_MESSAGE}",i.substring(i.indexOf(":")+1))):i=E("logs.wrapper-unknown-error").replace("{ERROR_MESSAGE}",e.message),new Tn(`"${t}" encountered an ${i}`,e)}var Kn=dn(Mp());function _b(e){for(var t=[],i=1;i<arguments.length;i++)t[i-1]=arguments[i];var n=Array.from(typeof e=="string"?[e]:e);n[n.length-1]=n[n.length-1].replace(/\r?\n([\t ]*)$/,"");var r=n.reduce(function(o,l){var c=l.match(/\n([\t ]+|(?!\s).)/g);return c?o.concat(c.map(function(d){var u,g;return(g=(u=d.match(/[\t ]/g))===null||u===void 0?void 0:u.length)!==null&&g!==void 0?g:0})):o},[]);if(r.length){var a=new RegExp(` [ ]{`+Math.min.apply(Math,r)+"}","g");n=n.map(function(o){return o.replace(a,` -`)})}n[0]=n[0].replace(/^\r?\n/,"");var s=n[0];return t.forEach(function(o,l){var d=s.match(/(?:^|\n)( *)$/),c=d?d[1]:"",u=o;typeof o=="string"&&o.includes(` +`)})}n[0]=n[0].replace(/^\r?\n/,"");var s=n[0];return t.forEach(function(o,l){var c=s.match(/(?:^|\n)( *)$/),d=c?c[1]:"",u=o;typeof o=="string"&&o.includes(` `)&&(u=String(o).split(` -`).map(function(m,g){return g===0?m:""+c+m}).join(` -`)),s+=u+n[l+1]}),s}var p=Vy;var Zs=require("obsidian");var on,Un,$i,ei=class{static getRule(){if(!Ve(ei,on).has(this.name)){let t=new this,i=new rs(t.nameKey,t.descriptionKey,t.settingsKey,t.alias,t.type,t.safeApply.bind(t),t.exampleBuilders.map(n=>n.example),t.optionBuilders.map(n=>n.option),t.hasSpecialExecutionOrder,t.ignoreTypes);Ve(ei,on).set(this.name,i),Ve(ei,Un).set(t.alias,t)}return Ve(ei,on).get(this.name)}static applyIfEnabledBase(t,i,n,r){let a=t.getOptions(n);if(a[t.enabledOptionName()]){at(t.alias);let s=Object.assign({},a,r);oi(`${E("logs.run-rule-text")} ${t.getName()}`);try{let o=t.apply(i,s);return ji(t.alias),oi(o),[o,!0]}catch(o){ji(t.alias),os(o,t.getName())}}else return[i,!1]}static getBuilderByName(t){return Ve(ei,Un).get(t)}static setNoSettingControl(t,i){Ve(ei,$i).has(t)||Ve(ei,$i).set(t,[]),Ve(ei,$i).get(t).push(i)}static hasSettingControl(t,i){return!Ve(ei,$i).has(t)||!Ve(ei,$i).get(t).includes(i)}},ci=ei;on=new WeakMap,Un=new WeakMap,$i=new WeakMap,Yt(ci,on,new Map),Yt(ci,Un,new Map),Yt(ci,$i,new Map);var w=class extends ci{constructor(i){super();this.alias=i.nameKey.replace(/rules\.(.*)\.name/,"$1"),this.settingsKey=i.nameKey.replace(/rules\.(.*)\.name/,"$1"),this.nameKey=i.nameKey,this.descriptionKey=i.descriptionKey,this.type=i.type,this.hasSpecialExecutionOrder=i.hasSpecialExecutionOrder??!1,i.ruleIgnoreTypes?this.ignoreTypes=[f.customIgnore,...i.ruleIgnoreTypes]:this.ignoreTypes=[f.customIgnore]}static register(i){let n=i.getRule();tp(n)}safeApply(i,n){return this.apply(i,this.buildRuleOptions(n))}buildRuleOptions(i){i=i??{};let n=new this.OptionsClass,r=Object.assign(n,i);for(let a of this.optionBuilders)a.setRuleOption(r,i);return r}static applyIfEnabled(i,n,r,a){let s=this.getRule();return r.includes(s.alias)?(oi(s.alias+" "+E("logs.disabled-text")),[i,!1]):ci.applyIfEnabledBase(s,i,n,a)}static getRuleOptions(i){let n=ci.getRule.bind(this)(),r=new this,a=n.getOptions(i);return r.buildRuleOptions(a)}static noSettingControl(){return(i,n)=>{let r=i.constructor.name;ci.setNoSettingControl(r,n)}}},al,y=class{constructor(t){Yt(this,al,void 0);this.example=new as(t.description,t.before,t.after,t.options)}};al=new WeakMap;var ln,Wi=class{constructor(t){Yt(this,ln,void 0);this.OptionsClass=t.OptionsClass;let i=t.nameKey.split(".");i.length==1?this.configKey=i[0]:this.configKey=i[i.length-2],this.nameKey=t.nameKey,this.descriptionKey=t.descriptionKey,this.optionsKey=t.optionsKey}get defaultValue(){return new this.OptionsClass()[this.optionsKey]}get option(){return Ve(this,ln)||nc(this,ln,this.buildOption()),Ve(this,ln)}setRuleOption(t,i){let n=i[this.configKey];n!==void 0&&(t[this.optionsKey]=n)}};ln=new WeakMap;var U=class extends Wi{buildOption(){return new rn(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}},ls=class extends Wi{buildOption(){return new Vn(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}},ne=class extends Wi{constructor(i){super(i);this.records=i.records.map(n=>new ts("enums."+n.value,n.description))}buildOption(){return new ns(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue,this.records)}},be=class extends Wi{constructor(i){super(i);this.separator=i.separator??` -`,this.splitter=i.splitter??/\n/}buildOption(){return new es(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue.join(this.separator))}setRuleOption(i,n){if(n[this.configKey]!==void 0){let r=n[this.configKey].split(this.splitter).filter(function(a){return a!=""});i[this.optionsKey]=r}}},We=class extends Wi{buildOption(){return new Vn(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}},cs=class extends Wi{buildOption(){return new is(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}};var sl=new Map([["1nd","1st"],["2rd","2nd"],["2st","2nd"],["3nd","3rd"],["3st","3rd"],["4rd","4th"],["a-diaerers","a-diaereses"],["aaccess","access"],["aaccessibility","accessibility"],["aaccession","accession"],["aack","ack"],["aactual","actual"],["aactually","actually"],["aadd","add"],["aagain","again"],["aaggregation","aggregation"],["aanother","another"],["aapply","apply"],["aaproximate","approximate"],["aaproximated","approximated"],["aaproximately","approximately"],["aaproximates","approximates"],["aaproximating","approximating"],["aare","are"],["aassign","assign"],["aassignment","assignment"],["aassignments","assignments"],["aassociated","associated"],["aassumed","assumed"],["aautomatic","automatic"],["aautomatically","automatically"],["abailable","available"],["abanden","abandon"],["abandonded","abandoned"],["abandone","abandon"],["abandonned","abandoned"],["abandonning","abandoning"],["abbbreviated","abbreviated"],["abberation","aberration"],["abberations","aberrations"],["abberivates","abbreviates"],["abberration","aberration"],["abborted","aborted"],["abborting","aborting"],["abbrevate","abbreviate"],["abbrevation","abbreviation"],["abbrevations","abbreviations"],["abbreviaton","abbreviation"],["abbreviatons","abbreviations"],["abbriviate","abbreviate"],["abbriviation","abbreviation"],["abbriviations","abbreviations"],["aberation","aberration"],["abigious","ambiguous"],["abiguity","ambiguity"],["abilityes","abilities"],["abilties","abilities"],["abilty","ability"],["abiss","abyss"],["abitrarily","arbitrarily"],["abitrary","arbitrary"],["abitrate","arbitrate"],["abitration","arbitration"],["abizmal","abysmal"],["abnoramlly","abnormally"],["abnormalty","abnormally"],["abnormaly","abnormally"],["abnornally","abnormally"],["abnove","above"],["abnrormal","abnormal"],["aboluste","absolute"],["abolustely","absolutely"],["abolute","absolute"],["abondon","abandon"],["abondoned","abandoned"],["abondoning","abandoning"],["abondons","abandons"],["aboout","about"],["aborigene","aborigine"],["abortificant","abortifacient"],["aboslute","absolute"],["aboslutely","absolutely"],["abosulte","absolute"],["abosultely","absolutely"],["abosulute","absolute"],["abosulutely","absolutely"],["abotu","about"],["abount","about"],["aboutit","about it"],["aboutthe","about the"],["abouve","above"],["abov","above"],["aboved","above"],["abovemtioned","abovementioned"],["aboves","above"],["abovmentioned","abovementioned"],["abreviate","abbreviate"],["abreviated","abbreviated"],["abreviates","abbreviates"],["abreviating","abbreviating"],["abreviation","abbreviation"],["abreviations","abbreviations"],["abritrarily","arbitrarily"],["abritrary","arbitrary"],["abriviate","abbreviate"],["absail","abseil"],["absailing","abseiling"],["absance","absence"],["abscence","absence"],["abscound","abscond"],["abselutely","absolutely"],["abselutly","absolutely"],["absense","absence"],["absodefly","absolute"],["absodeflyly","absolutely"],["absolate","absolute"],["absolately","absolutely"],["absolaute","absolute"],["absolautely","absolutely"],["absoleted","obsoleted"],["absoletely","absolutely"],["absoliute","absolute"],["absoliutely","absolutely"],["absoloute","absolute"],["absoloutely","absolutely"],["absolte","absolute"],["absoltely","absolutely"],["absoltue","absolute"],["absoltuely","absolutely"],["absoluate","absolute"],["absoluately","absolutely"],["absolue","absolute"],["absoluely","absolutely"],["absoluet","absolute"],["absoluetly","absolutely"],["absolule","absolute"],["absolulte","absolute"],["absolultely","absolutely"],["absolune","absolute"],["absolunely","absolutely"],["absolure","absolute"],["absolurely","absolutely"],["absolut","absolute"],["absolutelly","absolutely"],["absoluth","absolute"],["absoluthe","absolute"],["absoluthely","absolutely"],["absoluthly","absolutely"],["absolutley","absolutely"],["absolutly","absolutely"],["absolutlye","absolutely"],["absoluute","absolute"],["absoluutely","absolutely"],["absoluve","absolute"],["absoluvely","absolutely"],["absoolute","absolute"],["absoolutely","absolutely"],["absorbant","absorbent"],["absorbsion","absorption"],["absorbtion","absorption"],["absorve","absorb"],["absould","absolute"],["absouldly","absolutely"],["absoule","absolute"],["absoulely","absolutely"],["absouletely","absolutely"],["absoult","absolute"],["absoulte","absolute"],["absoultely","absolutely"],["absoultly","absolutely"],["absoulute","absolute"],["absoulutely","absolutely"],["absout","absolute"],["absoute","absolute"],["absoutely","absolutely"],["absoutly","absolutely"],["abstact","abstract"],["abstacted","abstracted"],["abstacter","abstracter"],["abstacting","abstracting"],["abstaction","abstraction"],["abstactions","abstractions"],["abstactly","abstractly"],["abstactness","abstractness"],["abstactor","abstractor"],["abstacts","abstracts"],["abstanence","abstinence"],["abstrac","abstract"],["abstraced","abstracted"],["abstracer","abstracter"],["abstracing","abstracting"],["abstracion","abstraction"],["abstracions","abstractions"],["abstracly","abstractly"],["abstracness","abstractness"],["abstracor","abstractor"],["abstracs","abstracts"],["abstrat","abstract"],["abstrated","abstracted"],["abstrater","abstracter"],["abstrating","abstracting"],["abstration","abstraction"],["abstrations","abstractions"],["abstratly","abstractly"],["abstratness","abstractness"],["abstrator","abstractor"],["abstrats","abstracts"],["abstrct","abstract"],["abstrcted","abstracted"],["abstrcter","abstracter"],["abstrcting","abstracting"],["abstrction","abstraction"],["abstrctions","abstractions"],["abstrctly","abstractly"],["abstrctness","abstractness"],["abstrctor","abstractor"],["abstrcts","abstracts"],["absulute","absolute"],["absymal","abysmal"],["abtract","abstract"],["abtracted","abstracted"],["abtracter","abstracter"],["abtracting","abstracting"],["abtraction","abstraction"],["abtractions","abstractions"],["abtractly","abstractly"],["abtractness","abstractness"],["abtractor","abstractor"],["abtracts","abstracts"],["abudance","abundance"],["abudances","abundances"],["abundacies","abundances"],["abundancies","abundances"],["abundand","abundant"],["abundence","abundance"],["abundent","abundant"],["abundunt","abundant"],["abutts","abuts"],["abvailable","available"],["abvious","obvious"],["acadamy","academy"],["acadimy","academy"],["acadmic","academic"],["acale","scale"],["acatemy","academy"],["accademic","academic"],["accademy","academy"],["accapt","accept"],["accapted","accepted"],["accapts","accepts"],["acccept","accept"],["acccepted","accepted"],["acccepting","accepting"],["acccepts","accepts"],["accces","access"],["acccess","access"],["acccessd","accessed"],["acccessed","accessed"],["acccesses","accesses"],["acccessibility","accessibility"],["acccessible","accessible"],["acccessing","accessing"],["acccession","accession"],["acccessor","accessor"],["acccessors","accessors"],["acccord","accord"],["acccordance","accordance"],["acccordances","accordances"],["acccorded","accorded"],["acccording","according"],["acccordingly","accordingly"],["acccords","accords"],["acccount","account"],["acccumulate","accumulate"],["acccuracy","accuracy"],["acccurate","accurate"],["acccurately","accurately"],["acccused","accused"],["accecpt","accept"],["accecpted","accepted"],["accees","access"],["acceess","access"],["accelarate","accelerate"],["accelaration","acceleration"],["accelarete","accelerate"],["accelearion","acceleration"],["accelearte","accelerate"],["accelearted","accelerated"],["acceleartes","accelerates"],["acceleartion","acceleration"],["acceleartor","accelerator"],["acceleated","accelerated"],["acceleratoin","acceleration"],["acceleraton","acceleration"],["acceleratrion","acceleration"],["accelerte","accelerate"],["accelertion","acceleration"],["accellerate","accelerate"],["accellerated","accelerated"],["accellerating","accelerating"],["accelleration","acceleration"],["accellerator","accelerator"],["accending","ascending"],["acceot","accept"],["accepatble","acceptable"],["accepect","accept"],["accepected","accepted"],["accepeted","accepted"],["acceppt","accept"],["acceptence","acceptance"],["acceptible","acceptable"],["acceptted","accepted"],["acces","access"],["accesed","accessed"],["acceses","accesses"],["accesibility","accessibility"],["accesible","accessible"],["accesiblity","accessibility"],["accesiibility","accessibility"],["accesiiblity","accessibility"],["accesing","accessing"],["accesnt","accent"],["accesor","accessor"],["accesories","accessories"],["accesors","accessors"],["accesory","accessory"],["accessability","accessibility"],["accessable","accessible"],["accessbile","accessible"],["accessiable","accessible"],["accessibile","accessible"],["accessibiliity","accessibility"],["accessibilitiy","accessibility"],["accessibiltiy","accessibility"],["accessibilty","accessibility"],["accessiblilty","accessibility"],["accessiblity","accessibility"],["accessiibility","accessibility"],["accessiiblity","accessibility"],["accessile","accessible"],["accessintg","accessing"],["accessisble","accessible"],["accessoire","accessory"],["accessort","accessor"],["accesss","access"],["accesssibility","accessibility"],["accesssible","accessible"],["accesssiblity","accessibility"],["accesssiiblity","accessibility"],["accesssing","accessing"],["accesssor","accessor"],["accesssors","accessors"],["accet","accept"],["accetable","acceptable"],["accets","accepts"],["acchiev","achieve"],["acchievable","achievable"],["acchieve","achieve"],["acchieveable","achievable"],["acchieved","achieved"],["acchievement","achievement"],["acchievements","achievements"],["acchiever","achiever"],["acchieves","achieves"],["accidant","accident"],["acciddently","accidentally"],["accidentaly","accidentally"],["accidential","accidental"],["accidentially","accidentally"],["accidentically","accidentally"],["accidentilly","accidentally"],["accidentily","accidentally"],["accidently","accidentally"],["accidentually","accidentally"],["accidetly","accidentally"],["acciedential","accidental"],["acciednetally","accidentally"],["accient","accident"],["acciental","accidental"],["acclerated","accelerated"],["acclerates","accelerates"],["accleration","acceleration"],["acclerometers","accelerometers"],["acclimitization","acclimatization"],["accociate","associate"],["accociated","associated"],["accociates","associates"],["accociating","associating"],["accociation","association"],["accociations","associations"],["accoding","according"],["accodingly","accordingly"],["accodr","accord"],["accodrance","accordance"],["accodred","accorded"],["accodring","according"],["accodringly","accordingly"],["accodrs","accords"],["accointing","accounting"],["accoird","accord"],["accoirding","according"],["accomadate","accommodate"],["accomadated","accommodated"],["accomadates","accommodates"],["accomadating","accommodating"],["accomadation","accommodation"],["accomadations","accommodations"],["accomdate","accommodate"],["accomidate","accommodate"],["accommadate","accommodate"],["accommadates","accommodates"],["accommadating","accommodating"],["accommdated","accommodated"],["accomodata","accommodate"],["accomodate","accommodate"],["accomodated","accommodated"],["accomodates","accommodates"],["accomodating","accommodating"],["accomodation","accommodation"],["accomodations","accommodations"],["accompagned","accompanied"],["accompagnied","accompanied"],["accompagnies","accompanies"],["accompagniment","accompaniment"],["accompagning","accompanying"],["accompagny","accompany"],["accompagnying","accompanying"],["accompained","accompanied"],["accompanyed","accompanied"],["accompt","account"],["acconding","according"],["accont","account"],["accontant","accountant"],["acconted","accounted"],["acconting","accounting"],["accoording","according"],["accoordingly","accordingly"],["accoount","account"],["accopunt","account"],["accordding","according"],["accordeon","accordion"],["accordian","accordion"],["accordign","according"],["accordiingly","accordingly"],["accordinag","according"],["accordind","according"],["accordinly","accordingly"],["accordint","according"],["accordintly","accordingly"],["accordling","according"],["accordlingly","accordingly"],["accordng","according"],["accordngly","accordingly"],["accoriding","according"],["accoridng","according"],["accoridngly","accordingly"],["accoringly","accordingly"],["accorndingly","accordingly"],["accort","accord"],["accortance","accordance"],["accorted","accorded"],["accortind","according"],["accorting","according"],["accound","account"],["accouned","accounted"],["accoustic","acoustic"],["accoustically","acoustically"],["accoustics","acoustics"],["accout","account"],["accouting","accounting"],["accoutn","account"],["accpet","accept"],["accpets","accepts"],["accquainted","acquainted"],["accquire","acquire"],["accquired","acquired"],["accquires","acquires"],["accquiring","acquiring"],["accracy","accuracy"],["accrate","accurate"],["accrding","according"],["accrdingly","accordingly"],["accrediation","accreditation"],["accredidation","accreditation"],["accress","access"],["accroding","according"],["accrodingly","accordingly"],["accronym","acronym"],["accronyms","acronyms"],["accrording","according"],["accros","across"],["accrose","across"],["accross","across"],["accsess","access"],["accss","access"],["accssible","accessible"],["accssor","accessor"],["acctual","actual"],["accuarcy","accuracy"],["accuarte","accurate"],["accuartely","accurately"],["accumalate","accumulate"],["accumalates","accumulates"],["accumalator","accumulator"],["accumalte","accumulate"],["accumalted","accumulated"],["accumilated","accumulated"],["accumlate","accumulate"],["accumlated","accumulated"],["accumlates","accumulates"],["accumlating","accumulating"],["accumlator","accumulator"],["accummulating","accumulating"],["accummulators","accumulators"],["accumualte","accumulate"],["accumualtion","accumulation"],["accupied","occupied"],["accupts","accepts"],["accurable","accurate"],["accuraccies","accuracies"],["accuraccy","accuracy"],["accurancy","accuracy"],["accurarcy","accuracy"],["accuratelly","accurately"],["accuratley","accurately"],["accuratly","accurately"],["accurences","occurrences"],["accurracy","accuracy"],["accurring","occurring"],["accussed","accused"],["acditionally","additionally"],["acecess","access"],["acedemic","academic"],["acelerated","accelerated"],["acend","ascend"],["acendance","ascendance"],["acendancey","ascendancy"],["acended","ascended"],["acendence","ascendance"],["acendencey","ascendancy"],["acendency","ascendancy"],["acender","ascender"],["acending","ascending"],["acent","ascent"],["aceptable","acceptable"],["acerage","acreage"],["acess","access"],["acessable","accessible"],["acessed","accessed"],["acesses","accesses"],["acessible","accessible"],["acessing","accessing"],["acessor","accessor"],["acheive","achieve"],["acheived","achieved"],["acheivement","achievement"],["acheivements","achievements"],["acheives","achieves"],["acheiving","achieving"],["acheivment","achievement"],["acheivments","achievements"],["achievment","achievement"],["achievments","achievements"],["achitecture","architecture"],["achitectures","architectures"],["achivable","achievable"],["achivement","achievement"],["achivements","achievements"],["achor","anchor"],["achored","anchored"],["achoring","anchoring"],["achors","anchors"],["ACI","ACPI"],["acident","accident"],["acidental","accidental"],["acidentally","accidentally"],["acidents","accidents"],["acient","ancient"],["acients","ancients"],["ACII","ASCII"],["acition","action"],["acitions","actions"],["acitivate","activate"],["acitivation","activation"],["acitivity","activity"],["acitvate","activate"],["acitve","active"],["acivate","activate"],["acive","active"],["acknodledgment","acknowledgment"],["acknodledgments","acknowledgments"],["acknoledge","acknowledge"],["acknoledged","acknowledged"],["acknoledges","acknowledges"],["acknoledging","acknowledging"],["acknoledgment","acknowledgment"],["acknoledgments","acknowledgments"],["acknowldeged","acknowledged"],["acknowldegement","acknowledgement"],["acknowldegements","acknowledgements"],["acknowledgeing","acknowledging"],["acknowleding","acknowledging"],["acknowlege","acknowledge"],["acknowleged","acknowledged"],["acknowlegement","acknowledgement"],["acknowlegements","acknowledgements"],["acknowleges","acknowledges"],["acknowleging","acknowledging"],["acknowlegment","acknowledgment"],["ackowledge","acknowledge"],["ackowledged","acknowledged"],["ackowledgement","acknowledgement"],["ackowledgements","acknowledgements"],["ackowledges","acknowledges"],["ackowledging","acknowledging"],["acnowledge","acknowledge"],["acocunt","account"],["acommodate","accommodate"],["acommodated","accommodated"],["acommodates","accommodates"],["acommodating","accommodating"],["acommodation","accommodation"],["acommpany","accompany"],["acommpanying","accompanying"],["acomodate","accommodate"],["acomodated","accommodated"],["acompanies","accompanies"],["acomplish","accomplish"],["acomplished","accomplished"],["acomplishment","accomplishment"],["acomplishments","accomplishments"],["acontiguous","a contiguous"],["acoording","according"],["acoordingly","accordingly"],["acording","according"],["acordingly","accordingly"],["acordinng","according"],["acorss","across"],["acorting","according"],["acount","account"],["acounts","accounts"],["acquaintence","acquaintance"],["acquaintences","acquaintances"],["acquiantence","acquaintance"],["acquiantences","acquaintances"],["acquiesence","acquiescence"],["acquisiton","acquisition"],["acquisitons","acquisitions"],["acquited","acquitted"],["acquition","acquisition"],["acqure","acquire"],["acqured","acquired"],["acqures","acquires"],["acquring","acquiring"],["acqusition","acquisition"],["acqusitions","acquisitions"],["acrage","acreage"],["acroos","across"],["acrosss","across"],["acrue","accrue"],["acrued","accrued"],["acssume","assume"],["acssumed","assumed"],["actal","actual"],["actally","actually"],["actaly","actually"],["actaul","actual"],["actaully","actually"],["actial","actual"],["actially","actually"],["actialy","actually"],["actiavte","activate"],["actiavted","activated"],["actiavtes","activates"],["actiavting","activating"],["actiavtion","activation"],["actiavtions","activations"],["actiavtor","activator"],["actibity","activity"],["acticate","activate"],["actice","active"],["actine","active"],["actiual","actual"],["activ","active"],["activaed","activated"],["activationg","activating"],["actived","activated"],["activeta","activate"],["activete","activate"],["activeted","activated"],["activetes","activates"],["activiate","activate"],["activies","activities"],["activites","activities"],["activitis","activities"],["activitites","activities"],["activitiy","activity"],["activley","actively"],["activly","actively"],["activste","activate"],["activsted","activated"],["activstes","activates"],["activtes","activates"],["activties","activities"],["activtion","activation"],["activty","activity"],["activw","active"],["activy","activity"],["actove","active"],["actuaal","actual"],["actuaally","actually"],["actuak","actual"],["actuakly","actually"],["actuallin","actually"],["actualy","actually"],["actualyl","actually"],["actuell","actual"],["actuion","action"],["actuionable","actionable"],["actul","actual"],["actullay","actually"],["actully","actually"],["actural","actual"],["acturally","actually"],["actusally","actually"],["actve","active"],["actzal","actual"],["acual","actual"],["acually","actually"],["acuired","acquired"],["acuires","acquires"],["acumulate","accumulate"],["acumulated","accumulated"],["acumulates","accumulates"],["acumulating","accumulating"],["acumulation","accumulation"],["acumulative","accumulative"],["acumulator","accumulator"],["acuqire","acquire"],["acuracy","accuracy"],["acurate","accurate"],["acused","accused"],["acustom","accustom"],["acustommed","accustomed"],["acutal","actual"],["acutally","actually"],["acutual","actual"],["adapated","adapted"],["adapater","adapter"],["adapaters","adapters"],["adapative","adaptive"],["adapdive","adaptive"],["adapive","adaptive"],["adaptaion","adaptation"],["adaptare","adapter"],["adapte","adapter"],["adaptee","adapted"],["adaptes","adapters"],["adaptibe","adaptive"],["adaquate","adequate"],["adaquately","adequately"],["adatper","adapter"],["adatpers","adapters"],["adavance","advance"],["adavanced","advanced"],["adbandon","abandon"],["addapt","adapt"],["addaptation","adaptation"],["addaptations","adaptations"],["addapted","adapted"],["addapting","adapting"],["addapts","adapts"],["addd","add"],["addded","added"],["addding","adding"],["adddress","address"],["adddresses","addresses"],["addds","adds"],["addedd","added"],["addeed","added"],["addersses","addresses"],["addert","assert"],["adderted","asserted"],["addess","address"],["addessed","addressed"],["addesses","addresses"],["addessing","addressing"],["addied","added"],["addig","adding"],["addiional","additional"],["addiiton","addition"],["addiitonall","additional"],["addional","additional"],["addionally","additionally"],["addiotion","addition"],["addiotional","additional"],["addiotionally","additionally"],["addiotions","additions"],["additianal","additional"],["additianally","additionally"],["additinal","additional"],["additinally","additionally"],["additioanal","additional"],["additioanally","additionally"],["additioanlly","additionally"],["additiona","additional"],["additionallly","additionally"],["additionals","additional"],["additionaly","additionally"],["additionalyy","additionally"],["additionnal","additional"],["additionnally","additionally"],["additionnaly","additionally"],["additoin","addition"],["additoinal","additional"],["additoinally","additionally"],["additoinaly","additionally"],["additon","addition"],["additonal","additional"],["additonally","additionally"],["additonaly","additionally"],["addjust","adjust"],["addjusted","adjusted"],["addjusting","adjusting"],["addjusts","adjusts"],["addmission","admission"],["addmit","admit"],["addopt","adopt"],["addopted","adopted"],["addpress","address"],["addrass","address"],["addrees","address"],["addreess","address"],["addrerss","address"],["addrerssed","addressed"],["addrersser","addresser"],["addrersses","addresses"],["addrerssing","addressing"],["addrersss","address"],["addrersssed","addressed"],["addrerssser","addresser"],["addrerssses","addresses"],["addrersssing","addressing"],["addres","address"],["addresable","addressable"],["addresed","addressed"],["addreses","addresses"],["addresess","addresses"],["addresing","addressing"],["addressess","addresses"],["addressings","addressing"],["addresss","address"],["addresssed","addressed"],["addressses","addresses"],["addresssing","addressing"],["addrress","address"],["addrss","address"],["addrssed","addressed"],["addrsses","addresses"],["addrssing","addressing"],["addted","added"],["addtion","addition"],["addtional","additional"],["addtionally","additionally"],["addtitional","additional"],["adecuate","adequate"],["aded","added"],["adequit","adequate"],["adevnture","adventure"],["adevntured","adventured"],["adevnturer","adventurer"],["adevnturers","adventurers"],["adevntures","adventures"],["adevnturing","adventuring"],["adhearing","adhering"],["adherance","adherence"],["adiacent","adjacent"],["adiditon","addition"],["adin","admin"],["ading","adding"],["adition","addition"],["aditional","additional"],["aditionally","additionally"],["aditionaly","additionally"],["aditionnal","additional"],["adivsories","advisories"],["adivsoriyes","advisories"],["adivsory","advisory"],["adjacentsy","adjacency"],["adjactend","adjacent"],["adjancent","adjacent"],["adjascent","adjacent"],["adjasence","adjacence"],["adjasencies","adjacencies"],["adjasensy","adjacency"],["adjasent","adjacent"],["adjast","adjust"],["adjcence","adjacence"],["adjcencies","adjacencies"],["adjcent","adjacent"],["adjcentcy","adjacency"],["adjsence","adjacence"],["adjsencies","adjacencies"],["adjsuted","adjusted"],["adjuscent","adjacent"],["adjusment","adjustment"],["adjustement","adjustment"],["adjustements","adjustments"],["adjustificat","justification"],["adjustification","justification"],["adjustmant","adjustment"],["adjustmants","adjustments"],["adjustmenet","adjustment"],["admendment","amendment"],["admi","admin"],["admininistrative","administrative"],["admininistrator","administrator"],["admininistrators","administrators"],["admininstrator","administrator"],["administation","administration"],["administator","administrator"],["administor","administrator"],["administraively","administratively"],["adminitrator","administrator"],["adminssion","admission"],["adminstered","administered"],["adminstrate","administrate"],["adminstration","administration"],["adminstrative","administrative"],["adminstrator","administrator"],["adminstrators","administrators"],["admisible","admissible"],["admissability","admissibility"],["admissable","admissible"],["admited","admitted"],["admitedly","admittedly"],["admn","admin"],["admnistrator","administrator"],["admnistrators","administrators"],["adn","and"],["adobted","adopted"],["adolecent","adolescent"],["adpapted","adapted"],["adpat","adapt"],["adpated","adapted"],["adpater","adapter"],["adpaters","adapters"],["adpats","adapts"],["adpter","adapter"],["adquire","acquire"],["adquired","acquired"],["adquires","acquires"],["adquiring","acquiring"],["adrea","area"],["adrerss","address"],["adrerssed","addressed"],["adrersser","addresser"],["adrersses","addresses"],["adrerssing","addressing"],["adres","address"],["adresable","addressable"],["adresing","addressing"],["adress","address"],["adressable","addressable"],["adresse","address"],["adressed","addressed"],["adresses","addresses"],["adressing","addressing"],["adresss","address"],["adressses","addresses"],["adrress","address"],["adrresses","addresses"],["adtodetect","autodetect"],["adusted","adjusted"],["adustment","adjustment"],["advanatage","advantage"],["advanatages","advantages"],["advanatge","advantage"],["advandced","advanced"],["advane","advance"],["advaned","advanced"],["advantagous","advantageous"],["advanved","advanced"],["adventages","advantages"],["adventrous","adventurous"],["adverised","advertised"],["advertice","advertise"],["adverticed","advertised"],["advertisment","advertisement"],["advertisments","advertisements"],["advertistment","advertisement"],["advertistments","advertisements"],["advertize","advertise"],["advertized","advertised"],["advertizes","advertises"],["advesary","adversary"],["advetise","advertise"],["adviced","advised"],["adviseable","advisable"],["advisoriyes","advisories"],["advizable","advisable"],["adwances","advances"],["aequidistant","equidistant"],["aequivalent","equivalent"],["aeriel","aerial"],["aeriels","aerials"],["aesily","easily"],["aesy","easy"],["aexs","axes"],["afair","affair"],["afaraid","afraid"],["afe","safe"],["afecting","affecting"],["afer","after"],["aferwards","afterwards"],["afetr","after"],["affecfted","affected"],["afficianados","aficionados"],["afficionado","aficionado"],["afficionados","aficionados"],["affilate","affiliate"],["affilates","affiliates"],["affilation","affiliation"],["affilations","affiliations"],["affilliate","affiliate"],["affinitied","affinities"],["affinitiy","affinity"],["affinitze","affinitize"],["affinties","affinities"],["affintiy","affinity"],["affintize","affinitize"],["affinty","affinity"],["affitnity","affinity"],["afforementioned","aforementioned"],["affortable","affordable"],["afforts","affords"],["affraid","afraid"],["afinity","affinity"],["afor","for"],["aforememtioned","aforementioned"],["aforementiond","aforementioned"],["aforementionned","aforementioned"],["aformentioned","aforementioned"],["afterall","after all"],["afterw","after"],["aftrer","after"],["aftzer","after"],["againnst","against"],["againsg","against"],["againt","against"],["againts","against"],["agaisnt","against"],["agaist","against"],["agancies","agencies"],["agancy","agency"],["aganist","against"],["agant","agent"],["aggaravates","aggravates"],["aggegate","aggregate"],["aggessive","aggressive"],["aggessively","aggressively"],["agggregate","aggregate"],["aggragate","aggregate"],["aggragator","aggregator"],["aggrated","aggregated"],["aggreagate","aggregate"],["aggreataon","aggregation"],["aggreate","aggregate"],["aggreated","aggregated"],["aggreation","aggregation"],["aggreations","aggregations"],["aggreed","agreed"],["aggreement","agreement"],["aggregatet","aggregated"],["aggregetor","aggregator"],["aggreggate","aggregate"],["aggregious","egregious"],["aggregrate","aggregate"],["aggregrated","aggregated"],["aggresive","aggressive"],["aggresively","aggressively"],["aggrevate","aggravate"],["aggrgate","aggregate"],["agian","again"],["agianst","against"],["agin","again"],["aginst","against"],["aglorithm","algorithm"],["aglorithms","algorithms"],["agorithm","algorithm"],["agrain","again"],["agravate","aggravate"],["agre","agree"],["agred","agreed"],["agreeement","agreement"],["agreemnet","agreement"],["agreemnets","agreements"],["agreemnt","agreement"],["agregate","aggregate"],["agregated","aggregated"],["agregates","aggregates"],["agregation","aggregation"],["agregator","aggregator"],["agreing","agreeing"],["agrement","agreement"],["agression","aggression"],["agressive","aggressive"],["agressively","aggressively"],["agressiveness","aggressiveness"],["agressivity","aggressivity"],["agressor","aggressor"],["agresssive","aggressive"],["agrgument","argument"],["agrguments","arguments"],["agricultue","agriculture"],["agriculure","agriculture"],["agricuture","agriculture"],["agrieved","aggrieved"],["agrresive","aggressive"],["agrument","argument"],["agruments","arguments"],["agsinst","against"],["agument","argument"],["agumented","augmented"],["aguments","arguments"],["aheared","adhered"],["ahev","have"],["ahlpa","alpha"],["ahlpas","alphas"],["ahppen","happen"],["ahve","have"],["aicraft","aircraft"],["aiffer","differ"],["ailgn","align"],["aiport","airport"],["airator","aerator"],["airbourne","airborne"],["aircaft","aircraft"],["aircrafts'","aircraft's"],["aircrafts","aircraft"],["airfow","airflow"],["airlfow","airflow"],["airloom","heirloom"],["airporta","airports"],["airrcraft","aircraft"],["aisian","Asian"],["aixs","axis"],["aizmuth","azimuth"],["ajacence","adjacence"],["ajacencies","adjacencies"],["ajacency","adjacency"],["ajacent","adjacent"],["ajacentcy","adjacency"],["ajasence","adjacence"],["ajasencies","adjacencies"],["ajative","adjective"],["ajcencies","adjacencies"],["ajsencies","adjacencies"],["ajurnment","adjournment"],["ajust","adjust"],["ajusted","adjusted"],["ajustement","adjustment"],["ajusting","adjusting"],["ajustment","adjustment"],["ajustments","adjustments"],["ake","ache"],["akkumulate","accumulate"],["akkumulated","accumulated"],["akkumulates","accumulates"],["akkumulating","accumulating"],["akkumulation","accumulation"],["akkumulative","accumulative"],["akkumulator","accumulator"],["aknowledge","acknowledge"],["aks","ask"],["aksed","asked"],["aktivate","activate"],["aktivated","activated"],["aktivates","activates"],["aktivating","activating"],["aktivation","activation"],["akumulate","accumulate"],["akumulated","accumulated"],["akumulates","accumulates"],["akumulating","accumulating"],["akumulation","accumulation"],["akumulative","accumulative"],["akumulator","accumulator"],["alaready","already"],["albiet","albeit"],["albumns","albums"],["alcemy","alchemy"],["alchohol","alcohol"],["alchoholic","alcoholic"],["alchol","alcohol"],["alcholic","alcoholic"],["alcohal","alcohol"],["alcoholical","alcoholic"],["aleady","already"],["aleays","always"],["aledge","allege"],["aledged","alleged"],["aledges","alleges"],["alegance","allegiance"],["alege","allege"],["aleged","alleged"],["alegience","allegiance"],["alegorical","allegorical"],["alernate","alternate"],["alernated","alternated"],["alernately","alternately"],["alernates","alternates"],["alers","alerts"],["aleviate","alleviate"],["aleviates","alleviates"],["aleviating","alleviating"],["alevt","alert"],["algebraical","algebraic"],["algebric","algebraic"],["algebrra","algebra"],["algee","algae"],["alghorithm","algorithm"],["alghoritm","algorithm"],["alghoritmic","algorithmic"],["alghoritmically","algorithmically"],["alghoritms","algorithms"],["algined","aligned"],["alginment","alignment"],["alginments","alignments"],["algohm","algorithm"],["algohmic","algorithmic"],["algohmically","algorithmically"],["algohms","algorithms"],["algoirthm","algorithm"],["algoirthmic","algorithmic"],["algoirthmically","algorithmically"],["algoirthms","algorithms"],["algoithm","algorithm"],["algoithmic","algorithmic"],["algoithmically","algorithmically"],["algoithms","algorithms"],["algolithm","algorithm"],["algolithmic","algorithmic"],["algolithmically","algorithmically"],["algolithms","algorithms"],["algoorithm","algorithm"],["algoorithmic","algorithmic"],["algoorithmically","algorithmically"],["algoorithms","algorithms"],["algoprithm","algorithm"],["algoprithmic","algorithmic"],["algoprithmically","algorithmically"],["algoprithms","algorithms"],["algorgithm","algorithm"],["algorgithmic","algorithmic"],["algorgithmically","algorithmically"],["algorgithms","algorithms"],["algorhithm","algorithm"],["algorhithmic","algorithmic"],["algorhithmically","algorithmically"],["algorhithms","algorithms"],["algorhitm","algorithm"],["algorhitmic","algorithmic"],["algorhitmically","algorithmically"],["algorhitms","algorithms"],["algorhtm","algorithm"],["algorhtmic","algorithmic"],["algorhtmically","algorithmically"],["algorhtms","algorithms"],["algorhythm","algorithm"],["algorhythmic","algorithmic"],["algorhythmically","algorithmically"],["algorhythms","algorithms"],["algorhytm","algorithm"],["algorhytmic","algorithmic"],["algorhytmically","algorithmically"],["algorhytms","algorithms"],["algorightm","algorithm"],["algorightmic","algorithmic"],["algorightmically","algorithmically"],["algorightms","algorithms"],["algorihm","algorithm"],["algorihmic","algorithmic"],["algorihmically","algorithmically"],["algorihms","algorithms"],["algorihtm","algorithm"],["algorihtmic","algorithmic"],["algorihtmically","algorithmically"],["algorihtms","algorithms"],["algoristhms","algorithms"],["algorith","algorithm"],["algorithem","algorithm"],["algorithemic","algorithmic"],["algorithemically","algorithmically"],["algorithems","algorithms"],["algorithic","algorithmic"],["algorithically","algorithmically"],["algorithim","algorithm"],["algorithimes","algorithms"],["algorithimic","algorithmic"],["algorithimically","algorithmically"],["algorithims","algorithms"],["algorithmes","algorithms"],["algorithmi","algorithm"],["algorithmical","algorithmically"],["algorithmm","algorithm"],["algorithmmic","algorithmic"],["algorithmmically","algorithmically"],["algorithmms","algorithms"],["algorithmn","algorithm"],["algorithmnic","algorithmic"],["algorithmnically","algorithmically"],["algorithmns","algorithms"],["algoriths","algorithms"],["algorithsmic","algorithmic"],["algorithsmically","algorithmically"],["algorithsms","algorithms"],["algoritm","algorithm"],["algoritmic","algorithmic"],["algoritmically","algorithmically"],["algoritms","algorithms"],["algoroithm","algorithm"],["algoroithmic","algorithmic"],["algoroithmically","algorithmically"],["algoroithms","algorithms"],["algororithm","algorithm"],["algororithmic","algorithmic"],["algororithmically","algorithmically"],["algororithms","algorithms"],["algorothm","algorithm"],["algorothmic","algorithmic"],["algorothmically","algorithmically"],["algorothms","algorithms"],["algorrithm","algorithm"],["algorrithmic","algorithmic"],["algorrithmically","algorithmically"],["algorrithms","algorithms"],["algorritm","algorithm"],["algorritmic","algorithmic"],["algorritmically","algorithmically"],["algorritms","algorithms"],["algorthim","algorithm"],["algorthimic","algorithmic"],["algorthimically","algorithmically"],["algorthims","algorithms"],["algorthin","algorithm"],["algorthinic","algorithmic"],["algorthinically","algorithmically"],["algorthins","algorithms"],["algorthm","algorithm"],["algorthmic","algorithmic"],["algorthmically","algorithmically"],["algorthms","algorithms"],["algorthn","algorithm"],["algorthnic","algorithmic"],["algorthnically","algorithmically"],["algorthns","algorithms"],["algorthym","algorithm"],["algorthymic","algorithmic"],["algorthymically","algorithmically"],["algorthyms","algorithms"],["algorthyn","algorithm"],["algorthynic","algorithmic"],["algorthynically","algorithmically"],["algorthyns","algorithms"],["algortihm","algorithm"],["algortihmic","algorithmic"],["algortihmically","algorithmically"],["algortihms","algorithms"],["algortim","algorithm"],["algortimic","algorithmic"],["algortimically","algorithmically"],["algortims","algorithms"],["algortism","algorithm"],["algortismic","algorithmic"],["algortismically","algorithmically"],["algortisms","algorithms"],["algortithm","algorithm"],["algortithmic","algorithmic"],["algortithmically","algorithmically"],["algortithms","algorithms"],["algoruthm","algorithm"],["algoruthmic","algorithmic"],["algoruthmically","algorithmically"],["algoruthms","algorithms"],["algorwwithm","algorithm"],["algorwwithmic","algorithmic"],["algorwwithmically","algorithmically"],["algorwwithms","algorithms"],["algorythem","algorithm"],["algorythemic","algorithmic"],["algorythemically","algorithmically"],["algorythems","algorithms"],["algorythm","algorithm"],["algorythmic","algorithmic"],["algorythmically","algorithmically"],["algorythms","algorithms"],["algothitm","algorithm"],["algothitmic","algorithmic"],["algothitmically","algorithmically"],["algothitms","algorithms"],["algotighm","algorithm"],["algotighmic","algorithmic"],["algotighmically","algorithmically"],["algotighms","algorithms"],["algotihm","algorithm"],["algotihmic","algorithmic"],["algotihmically","algorithmically"],["algotihms","algorithms"],["algotirhm","algorithm"],["algotirhmic","algorithmic"],["algotirhmically","algorithmically"],["algotirhms","algorithms"],["algotithm","algorithm"],["algotithmic","algorithmic"],["algotithmically","algorithmically"],["algotithms","algorithms"],["algotrithm","algorithm"],["algotrithmic","algorithmic"],["algotrithmically","algorithmically"],["algotrithms","algorithms"],["alha","alpha"],["alhabet","alphabet"],["alhabetical","alphabetical"],["alhabetically","alphabetically"],["alhabeticaly","alphabetically"],["alhabets","alphabets"],["alhapet","alphabet"],["alhapetical","alphabetical"],["alhapetically","alphabetically"],["alhapeticaly","alphabetically"],["alhapets","alphabets"],["alhough","although"],["alhpa","alpha"],["alhpabet","alphabet"],["alhpabetical","alphabetical"],["alhpabetically","alphabetically"],["alhpabeticaly","alphabetically"],["alhpabets","alphabets"],["aliagn","align"],["aliasas","aliases"],["aliasses","aliases"],["alientating","alienating"],["aliged","aligned"],["alighned","aligned"],["alighnment","alignment"],["aligin","align"],["aligined","aligned"],["aligining","aligning"],["aliginment","alignment"],["aligins","aligns"],["aligment","alignment"],["aligments","alignments"],["alignation","alignment"],["alignd","aligned"],["aligne","align"],["alignement","alignment"],["alignemnt","alignment"],["alignemnts","alignments"],["alignemt","alignment"],["alignes","aligns"],["alignmant","alignment"],["alignmen","alignment"],["alignmenet","alignment"],["alignmenets","alignments"],["alignmenton","alignment on"],["alignmet","alignment"],["alignmets","alignments"],["alignmment","alignment"],["alignmments","alignments"],["alignmnet","alignment"],["alignmnt","alignment"],["alignrigh","alignright"],["alined","aligned"],["alinged","aligned"],["alinging","aligning"],["alingment","alignment"],["alinment","alignment"],["alinments","alignments"],["alising","aliasing"],["allcate","allocate"],["allcateing","allocating"],["allcater","allocator"],["allcaters","allocators"],["allcating","allocating"],["allcation","allocation"],["allcator","allocator"],["allcoate","allocate"],["allcoated","allocated"],["allcoateing","allocating"],["allcoateng","allocating"],["allcoater","allocator"],["allcoaters","allocators"],["allcoating","allocating"],["allcoation","allocation"],["allcoator","allocator"],["allcoators","allocators"],["alledge","allege"],["alledged","alleged"],["alledgedly","allegedly"],["alledges","alleges"],["allegedely","allegedly"],["allegedy","allegedly"],["allegely","allegedly"],["allegence","allegiance"],["allegience","allegiance"],["allif","all if"],["allign","align"],["alligned","aligned"],["allignement","alignment"],["allignemnt","alignment"],["alligning","aligning"],["allignment","alignment"],["allignmenterror","alignmenterror"],["allignments","alignments"],["alligns","aligns"],["alliviate","alleviate"],["allk","all"],["alllocate","allocate"],["alllocation","allocation"],["alllow","allow"],["alllowed","allowed"],["alllows","allows"],["allmost","almost"],["alloacate","allocate"],["allocae","allocate"],["allocaed","allocated"],["allocaes","allocates"],["allocagtor","allocator"],["allocaiing","allocating"],["allocaing","allocating"],["allocaion","allocation"],["allocaions","allocations"],["allocaite","allocate"],["allocaites","allocates"],["allocaiting","allocating"],["allocaition","allocation"],["allocaitions","allocations"],["allocaiton","allocation"],["allocaitons","allocations"],["allocal","allocate"],["allocarion","allocation"],["allocat","allocate"],["allocatbale","allocatable"],["allocatedi","allocated"],["allocatedp","allocated"],["allocateing","allocating"],["allocateng","allocating"],["allocaton","allocation"],["allocatoor","allocator"],["allocatote","allocate"],["allocatrd","allocated"],["allocattion","allocation"],["alloco","alloc"],["allocos","allocs"],["allocte","allocate"],["allocted","allocated"],["allocting","allocating"],["alloction","allocation"],["alloctions","allocations"],["alloctor","allocator"],["alloews","allows"],["allong","along"],["alloocates","allocates"],["allopone","allophone"],["allopones","allophones"],["allos","allows"],["alloted","allotted"],["allowence","allowance"],["allowences","allowances"],["allpication","application"],["allpications","applications"],["allso","also"],["allthough","although"],["alltough","although"],["allways","always"],["allwo","allow"],["allwos","allows"],["allws","allows"],["allwys","always"],["almoast","almost"],["almostly","almost"],["almsot","almost"],["alo","also"],["alocatable","allocatable"],["alocate","allocate"],["alocated","allocated"],["alocates","allocates"],["alocating","allocating"],["alocations","allocations"],["alochol","alcohol"],["alog","along"],["alogirhtm","algorithm"],["alogirhtmic","algorithmic"],["alogirhtmically","algorithmically"],["alogirhtms","algorithms"],["alogirthm","algorithm"],["alogirthmic","algorithmic"],["alogirthmically","algorithmically"],["alogirthms","algorithms"],["alogned","aligned"],["alogorithms","algorithms"],["alogrithm","algorithm"],["alogrithmic","algorithmic"],["alogrithmically","algorithmically"],["alogrithms","algorithms"],["alomst","almost"],["aloows","allows"],["alorithm","algorithm"],["alos","also"],["alotted","allotted"],["alow","allow"],["alowed","allowed"],["alowing","allowing"],["alows","allows"],["alpabet","alphabet"],["alpabetic","alphabetic"],["alpabetical","alphabetical"],["alpabets","alphabets"],["alpah","alpha"],["alpahabetical","alphabetical"],["alpahbetically","alphabetically"],["alph","alpha"],["alpha-numeric","alphanumeric"],["alphabeticaly","alphabetically"],["alphabeticly","alphabetical"],["alphapeicall","alphabetical"],["alphapeticaly","alphabetically"],["alrady","already"],["alraedy","already"],["alread","already"],["alreadly","already"],["alreadt","already"],["alreasy","already"],["alreay","already"],["alreayd","already"],["alreday","already"],["alredy","already"],["alrelady","already"],["alrms","alarms"],["alrogithm","algorithm"],["alrteady","already"],["als","also"],["alsmost","almost"],["alsot","also"],["alsready","already"],["altenative","alternative"],["alterated","altered"],["alterately","alternately"],["alterative","alternative"],["alteratives","alternatives"],["alterior","ulterior"],["alternaive","alternative"],["alternaives","alternatives"],["alternarive","alternative"],["alternarives","alternatives"],["alternatievly","alternatively"],["alternativey","alternatively"],["alternativley","alternatively"],["alternativly","alternatively"],["alternatve","alternative"],["alternavtely","alternatively"],["alternavtive","alternative"],["alternavtives","alternatives"],["alternetive","alternative"],["alternetives","alternatives"],["alternitive","alternative"],["alternitively","alternatively"],["alternitiveness","alternativeness"],["alternitives","alternatives"],["alternitivly","alternatively"],["altetnative","alternative"],["altho","although"],["althogh","although"],["althorithm","algorithm"],["althorithmic","algorithmic"],["althorithmically","algorithmically"],["althorithms","algorithms"],["althoug","although"],["althought","although"],["althougth","although"],["althouth","although"],["altitide","altitude"],["altitute","altitude"],["altogehter","altogether"],["altough","although"],["altought","although"],["altready","already"],["alue","value"],["alvorithm","algorithm"],["alvorithmic","algorithmic"],["alvorithmically","algorithmically"],["alvorithms","algorithms"],["alwais","always"],["alwas","always"],["alwast","always"],["alwasy","always"],["alwasys","always"],["alwauys","always"],["alway","always"],["alwyas","always"],["alwys","always"],["alyways","always"],["amacing","amazing"],["amacingly","amazingly"],["amalgomated","amalgamated"],["amatuer","amateur"],["amazaing","amazing"],["ambedded","embedded"],["ambibuity","ambiguity"],["ambien","ambient"],["ambigious","ambiguous"],["ambigous","ambiguous"],["ambiguious","ambiguous"],["ambiguitiy","ambiguity"],["ambiguos","ambiguous"],["ambitous","ambitious"],["ambuguity","ambiguity"],["ambulence","ambulance"],["ambulences","ambulances"],["amdgput","amdgpu"],["amendement","amendment"],["amendmant","amendment"],["Amercia","America"],["amerliorate","ameliorate"],["amgle","angle"],["amgles","angles"],["amiguous","ambiguous"],["amke","make"],["amking","making"],["ammend","amend"],["ammended","amended"],["ammending","amending"],["ammendment","amendment"],["ammendments","amendments"],["ammends","amends"],["ammong","among"],["ammongst","amongst"],["ammortizes","amortizes"],["ammoung","among"],["ammoungst","amongst"],["ammount","amount"],["ammused","amused"],["amny","many"],["amongs","among"],["amonst","amongst"],["amonut","amount"],["amound","amount"],["amounds","amounts"],["amoung","among"],["amoungst","amongst"],["amout","amount"],["amoutn","amount"],["amoutns","amounts"],["amouts","amounts"],["amperstands","ampersands"],["amphasis","emphasis"],["amplifer","amplifier"],["amplifyer","amplifier"],["amplitud","amplitude"],["ampty","empty"],["amuch","much"],["amung","among"],["amunition","ammunition"],["amunt","amount"],["analagous","analogous"],["analagus","analogous"],["analaog","analog"],["analgous","analogous"],["analig","analog"],["analise","analyse"],["analised","analysed"],["analiser","analyser"],["analising","analysing"],["analisis","analysis"],["analitic","analytic"],["analitical","analytical"],["analitically","analytically"],["analiticaly","analytically"],["analize","analyze"],["analized","analyzed"],["analizer","analyzer"],["analizes","analyzes"],["analizing","analyzing"],["analogeous","analogous"],["analogicaly","analogically"],["analoguous","analogous"],["analoguously","analogously"],["analogus","analogous"],["analouge","analogue"],["analouges","analogues"],["analsye","analyse"],["analsyed","analysed"],["analsyer","analyser"],["analsyers","analysers"],["analsyes","analyses"],["analsying","analysing"],["analsyis","analysis"],["analsyt","analyst"],["analsyts","analysts"],["analyis","analysis"],["analysator","analyser"],["analysus","analysis"],["analysy","analysis"],["analyticaly","analytically"],["analyticly","analytically"],["analyzator","analyzer"],["analzye","analyze"],["analzyed","analyzed"],["analzyer","analyzer"],["analzyers","analyzers"],["analzyes","analyzes"],["analzying","analyzing"],["ananlog","analog"],["anarchim","anarchism"],["anarchistm","anarchism"],["anarquism","anarchism"],["anarquist","anarchist"],["anaylse","analyse"],["anaylsed","analysed"],["anaylser","analyser"],["anaylses","analyses"],["anaylsis","analysis"],["anaylsises","analysises"],["anayltic","analytic"],["anayltical","analytical"],["anayltically","analytically"],["anayltics","analytics"],["anaylze","analyze"],["anaylzed","analyzed"],["anaylzer","analyzer"],["anaylzes","analyzes"],["anbd","and"],["ancapsulate","encapsulate"],["ancapsulated","encapsulated"],["ancapsulates","encapsulates"],["ancapsulating","encapsulating"],["ancapsulation","encapsulation"],["ancesetor","ancestor"],["ancesetors","ancestors"],["ancester","ancestor"],["ancesteres","ancestors"],["ancesters","ancestors"],["ancestore","ancestor"],["ancestores","ancestors"],["ancestory","ancestry"],["anchestor","ancestor"],["anchestors","ancestors"],["anchord","anchored"],["ancilliary","ancillary"],["andd","and"],["andoid","android"],["andoids","androids"],["andorid","android"],["andorids","androids"],["andriod","android"],["andriods","androids"],["androgenous","androgynous"],["androgeny","androgyny"],["androidextra","androidextras"],["androind","android"],["androinds","androids"],["andthe","and the"],["ane","and"],["anevironment","environment"],["anevironments","environments"],["angluar","angular"],["anhoter","another"],["anid","and"],["anihilation","annihilation"],["animaing","animating"],["animaite","animate"],["animaiter","animator"],["animaiters","animators"],["animaiton","animation"],["animaitons","animations"],["animaitor","animator"],["animaitors","animators"],["animaton","animation"],["animatonic","animatronic"],["animete","animate"],["animeted","animated"],["animetion","animation"],["animetions","animations"],["animets","animates"],["animore","anymore"],["aninate","animate"],["anination","animation"],["aniother","any other"],["anisotrophically","anisotropically"],["anitaliasing","antialiasing"],["anithing","anything"],["anitialising","antialiasing"],["anitime","anytime"],["anitrez","antirez"],["aniversary","anniversary"],["aniway","anyway"],["aniwhere","anywhere"],["anlge","angle"],["anlysis","analysis"],["anlyzing","analyzing"],["annayed","annoyed"],["annaying","annoying"],["annd","and"],["anniversery","anniversary"],["annnounce","announce"],["annoation","annotation"],["annoint","anoint"],["annointed","anointed"],["annointing","anointing"],["annoints","anoints"],["annonate","annotate"],["annonated","annotated"],["annonates","annotates"],["annonce","announce"],["annonced","announced"],["annoncement","announcement"],["annoncements","announcements"],["annonces","announces"],["annoncing","announcing"],["annonymous","anonymous"],["annotaion","annotation"],["annotaions","annotations"],["annoted","annotated"],["annother","another"],["annouce","announce"],["annouced","announced"],["annoucement","announcement"],["annoucements","announcements"],["annouces","announces"],["annoucing","announcing"],["annouing","annoying"],["announcment","announcement"],["announcments","announcements"],["announed","announced"],["announement","announcement"],["announements","announcements"],["annoymous","anonymous"],["annoyying","annoying"],["annualy","annually"],["annuled","annulled"],["annyoingly","annoyingly"],["anoher","another"],["anohter","another"],["anologon","analogon"],["anomally","anomaly"],["anomolies","anomalies"],["anomolous","anomalous"],["anomoly","anomaly"],["anonimity","anonymity"],["anononymous","anonymous"],["anonther","another"],["anonymouse","anonymous"],["anonyms","anonymous"],["anonymus","anonymous"],["anormalies","anomalies"],["anormaly","abnormally"],["anotate","annotate"],["anotated","annotated"],["anotates","annotates"],["anotating","annotating"],["anotation","annotation"],["anotations","annotations"],["anoter","another"],["anothe","another"],["anothers","another"],["anothr","another"],["anounce","announce"],["anounced","announced"],["anouncement","announcement"],["anount","amount"],["anoying","annoying"],["anoymous","anonymous"],["anroid","android"],["ansalisation","nasalisation"],["ansalization","nasalization"],["anser","answer"],["ansester","ancestor"],["ansesters","ancestors"],["ansestor","ancestor"],["ansestors","ancestors"],["answhare","answer"],["answhared","answered"],["answhareing","answering"],["answhares","answers"],["answharing","answering"],["answhars","answers"],["ansynchronous","asynchronous"],["antaliasing","antialiasing"],["antartic","antarctic"],["antecedant","antecedent"],["anteena","antenna"],["anteenas","antennas"],["anthing","anything"],["anthings","anythings"],["anthor","another"],["anthromorphization","anthropomorphization"],["anthropolgist","anthropologist"],["anthropolgy","anthropology"],["antialialised","antialiased"],["antialising","antialiasing"],["antiapartheid","anti-apartheid"],["anticpate","anticipate"],["antry","entry"],["antyhing","anything"],["anual","annual"],["anually","annually"],["anulled","annulled"],["anumber","a number"],["anuwhere","anywhere"],["anway","anyway"],["anways","anyway"],["anwhere","anywhere"],["anwser","answer"],["anwsered","answered"],["anwsering","answering"],["anwsers","answers"],["anyawy","anyway"],["anyhing","anything"],["anyhting","anything"],["anyhwere","anywhere"],["anylsing","analysing"],["anylzing","analyzing"],["anynmore","anymore"],["anyother","any other"],["anytghing","anything"],["anythig","anything"],["anythign","anything"],["anythimng","anything"],["anytiem","anytime"],["anytihng","anything"],["anyting","anything"],["anytning","anything"],["anytrhing","anything"],["anytthing","anything"],["anytying","anything"],["anywere","anywhere"],["anyy","any"],["aoache","apache"],["aond","and"],["aoto","auto"],["aotomate","automate"],["aotomated","automated"],["aotomatic","automatic"],["aotomatical","automatic"],["aotomaticall","automatically"],["aotomatically","automatically"],["aotomation","automation"],["aovid","avoid"],["apach","apache"],["apapted","adapted"],["aparant","apparent"],["aparantly","apparently"],["aparent","apparent"],["aparently","apparently"],["aparment","apartment"],["apdated","updated"],["apeal","appeal"],["apealed","appealed"],["apealing","appealing"],["apeals","appeals"],["apear","appear"],["apeared","appeared"],["apears","appears"],["apect","aspect"],["apects","aspects"],["apeends","appends"],["apend","append"],["apendage","appendage"],["apended","appended"],["apender","appender"],["apendices","appendices"],["apending","appending"],["apendix","appendix"],["apenines","Apennines"],["aperatures","apertures"],["aperure","aperture"],["aperures","apertures"],["apeture","aperture"],["apetures","apertures"],["apilogue","epilogue"],["aplha","alpha"],["aplication","application"],["aplications","applications"],["aplied","applied"],["aplies","applies"],["apllicatin","application"],["apllicatins","applications"],["apllication","application"],["apllications","applications"],["apllied","applied"],["apllies","applies"],["aplly","apply"],["apllying","applying"],["aply","apply"],["aplyed","applied"],["aplying","applying"],["apointed","appointed"],["apointing","appointing"],["apointment","appointment"],["apoints","appoints"],["apolegetic","apologetic"],["apolegetics","apologetics"],["aportionable","apportionable"],["apostrophie","apostrophe"],["apostrophies","apostrophes"],["appar","appear"],["apparant","apparent"],["apparantly","apparently"],["appared","appeared"],["apparence","appearance"],["apparenlty","apparently"],["apparenly","apparently"],["appares","appears"],["apparoches","approaches"],["appars","appears"],["appart","apart"],["appartment","apartment"],["appartments","apartments"],["appearaing","appearing"],["appearantly","apparently"],["appeareance","appearance"],["appearence","appearance"],["appearences","appearances"],["appearently","apparently"],["appeares","appears"],["appearning","appearing"],["appearrs","appears"],["appeciate","appreciate"],["appeded","appended"],["appeding","appending"],["appedn","append"],["appen","append"],["appendend","appended"],["appendent","appended"],["appendex","appendix"],["appendig","appending"],["appendign","appending"],["appendt","append"],["appeneded","appended"],["appenines","Apennines"],["appens","appends"],["appent","append"],["apperance","appearance"],["apperances","appearances"],["apperar","appear"],["apperarance","appearance"],["apperarances","appearances"],["apperared","appeared"],["apperaring","appearing"],["apperars","appears"],["appereance","appearance"],["appereances","appearances"],["appered","appeared"],["apperent","apparent"],["apperently","apparently"],["appers","appears"],["apperture","aperture"],["appicability","applicability"],["appicable","applicable"],["appicaliton","application"],["appicalitons","applications"],["appicant","applicant"],["appication","application"],["appication-specific","application-specific"],["appications","applications"],["appicative","applicative"],["appied","applied"],["appies","applies"],["applay","apply"],["applcation","application"],["applcations","applications"],["appliable","applicable"],["appliacable","applicable"],["appliaction","application"],["appliactions","applications"],["appliation","application"],["appliations","applications"],["applicabel","applicable"],["applicaion","application"],["applicaions","applications"],["applicaiton","application"],["applicaitons","applications"],["applicance","appliance"],["applicapility","applicability"],["applicaple","applicable"],["applicatable","applicable"],["applicaten","application"],["applicatin","application"],["applicatins","applications"],["applicatio","application"],["applicationb","application"],["applicatios","applications"],["applicatiosn","applications"],["applicaton","application"],["applicatons","applications"],["appliction","application"],["applictions","applications"],["applide","applied"],["applikation","application"],["applikations","applications"],["appllied","applied"],["applly","apply"],["applyable","applicable"],["applycable","applicable"],["applyed","applied"],["applyes","applies"],["applyied","applied"],["applyig","applying"],["applys","applies"],["applyting","applying"],["appned","append"],["appologies","apologies"],["appology","apology"],["appon","upon"],["appopriate","appropriate"],["apporach","approach"],["apporached","approached"],["apporaches","approaches"],["apporaching","approaching"],["apporiate","appropriate"],["apporoximate","approximate"],["apporoximated","approximated"],["apporpiate","appropriate"],["apporpriate","appropriate"],["apporpriated","appropriated"],["apporpriately","appropriately"],["apporpriates","appropriates"],["apporpriating","appropriating"],["apporpriation","appropriation"],["apporpriations","appropriations"],["apporval","approval"],["apporve","approve"],["apporved","approved"],["apporves","approves"],["apporving","approving"],["appoval","approval"],["appove","approve"],["appoved","approved"],["appoves","approves"],["appoving","approving"],["appoximate","approximate"],["appoximately","approximately"],["appoximates","approximates"],["appoximation","approximation"],["appoximations","approximations"],["apppear","appear"],["apppears","appears"],["apppend","append"],["apppends","appends"],["appplet","applet"],["appplication","application"],["appplications","applications"],["appplying","applying"],["apppriate","appropriate"],["appproach","approach"],["apppropriate","appropriate"],["appraoch","approach"],["appraochable","approachable"],["appraoched","approached"],["appraoches","approaches"],["appraoching","approaching"],["apprearance","appearance"],["apprently","apparently"],["appreteate","appreciate"],["appreteated","appreciated"],["appretiate","appreciate"],["appretiated","appreciated"],["appretiates","appreciates"],["appretiating","appreciating"],["appretiation","appreciation"],["appretiative","appreciative"],["apprieciate","appreciate"],["apprieciated","appreciated"],["apprieciates","appreciates"],["apprieciating","appreciating"],["apprieciation","appreciation"],["apprieciative","appreciative"],["appriopriate","appropriate"],["appripriate","appropriate"],["appriproate","appropriate"],["apprixamate","approximate"],["apprixamated","approximated"],["apprixamately","approximately"],["apprixamates","approximates"],["apprixamating","approximating"],["apprixamation","approximation"],["apprixamations","approximations"],["appriximate","approximate"],["appriximated","approximated"],["appriximately","approximately"],["appriximates","approximates"],["appriximating","approximating"],["appriximation","approximation"],["appriximations","approximations"],["approachs","approaches"],["approbiate","appropriate"],["approch","approach"],["approche","approach"],["approched","approached"],["approches","approaches"],["approching","approaching"],["approiate","appropriate"],["approopriate","appropriate"],["approoximate","approximate"],["approoximately","approximately"],["approoximates","approximates"],["approoximation","approximation"],["approoximations","approximations"],["approperiate","appropriate"],["appropiate","appropriate"],["appropiately","appropriately"],["approppriately","appropriately"],["appropraite","appropriate"],["appropraitely","appropriately"],["approprate","appropriate"],["approprated","appropriated"],["approprately","appropriately"],["appropration","appropriation"],["approprations","appropriations"],["appropriage","appropriate"],["appropriatedly","appropriately"],["appropriatee","appropriate"],["appropriatly","appropriately"],["appropriatness","appropriateness"],["appropriete","appropriate"],["appropritae","appropriate"],["appropritate","appropriate"],["appropritately","appropriately"],["approprite","appropriate"],["approproate","appropriate"],["appropropiate","appropriate"],["appropropiately","appropriately"],["appropropreate","appropriate"],["appropropriate","appropriate"],["approproximate","approximate"],["approproximately","approximately"],["approproximates","approximates"],["approproximation","approximation"],["approproximations","approximations"],["approprpiate","appropriate"],["approriate","appropriate"],["approriately","appropriately"],["approrpriate","appropriate"],["approrpriately","appropriately"],["approuval","approval"],["approuve","approve"],["approuved","approved"],["approuves","approves"],["approuving","approving"],["approvement","approval"],["approxamate","approximate"],["approxamately","approximately"],["approxamates","approximates"],["approxamation","approximation"],["approxamations","approximations"],["approxamatly","approximately"],["approxametely","approximately"],["approxiamte","approximate"],["approxiamtely","approximately"],["approxiamtes","approximates"],["approxiamtion","approximation"],["approxiamtions","approximations"],["approxiate","approximate"],["approxiately","approximately"],["approxiates","approximates"],["approxiation","approximation"],["approxiations","approximations"],["approximatively","approximately"],["approximatly","approximately"],["approximed","approximated"],["approximetely","approximately"],["approximitely","approximately"],["approxmate","approximate"],["approxmately","approximately"],["approxmates","approximates"],["approxmation","approximation"],["approxmations","approximations"],["approxmimation","approximation"],["apprpriate","appropriate"],["apprpriately","appropriately"],["appy","apply"],["appying","applying"],["apreciate","appreciate"],["apreciated","appreciated"],["apreciates","appreciates"],["apreciating","appreciating"],["apreciation","appreciation"],["apreciative","appreciative"],["aprehensive","apprehensive"],["apreteate","appreciate"],["apreteated","appreciated"],["apreteating","appreciating"],["apretiate","appreciate"],["apretiated","appreciated"],["apretiates","appreciates"],["apretiating","appreciating"],["apretiation","appreciation"],["apretiative","appreciative"],["aproach","approach"],["aproached","approached"],["aproaches","approaches"],["aproaching","approaching"],["aproch","approach"],["aproched","approached"],["aproches","approaches"],["aproching","approaching"],["aproove","approve"],["aprooved","approved"],["apropiate","appropriate"],["apropiately","appropriately"],["apropriate","appropriate"],["apropriately","appropriately"],["aproval","approval"],["aproximate","approximate"],["aproximately","approximately"],["aproximates","approximates"],["aproximation","approximation"],["aproximations","approximations"],["aprrovement","approval"],["aprroximate","approximate"],["aprroximately","approximately"],["aprroximates","approximates"],["aprroximation","approximation"],["aprroximations","approximations"],["aprtment","apartment"],["aqain","again"],["aqcuire","acquire"],["aqcuired","acquired"],["aqcuires","acquires"],["aqcuiring","acquiring"],["aquaduct","aqueduct"],["aquaint","acquaint"],["aquaintance","acquaintance"],["aquainted","acquainted"],["aquainting","acquainting"],["aquaints","acquaints"],["aquiantance","acquaintance"],["aquire","acquire"],["aquired","acquired"],["aquires","acquires"],["aquiring","acquiring"],["aquisition","acquisition"],["aquisitions","acquisitions"],["aquit","acquit"],["aquitted","acquitted"],["arameters","parameters"],["aranged","arranged"],["arangement","arrangement"],["araound","around"],["ararbic","arabic"],["aray","array"],["arays","arrays"],["arbiatraily","arbitrarily"],["arbiatray","arbitrary"],["arbibtarily","arbitrarily"],["arbibtary","arbitrary"],["arbibtrarily","arbitrarily"],["arbibtrary","arbitrary"],["arbiitrarily","arbitrarily"],["arbiitrary","arbitrary"],["arbirarily","arbitrarily"],["arbirary","arbitrary"],["arbiratily","arbitrarily"],["arbiraty","arbitrary"],["arbirtarily","arbitrarily"],["arbirtary","arbitrary"],["arbirtrarily","arbitrarily"],["arbirtrary","arbitrary"],["arbitarary","arbitrary"],["arbitarily","arbitrarily"],["arbitary","arbitrary"],["arbitiarily","arbitrarily"],["arbitiary","arbitrary"],["arbitiraly","arbitrarily"],["arbitiray","arbitrary"],["arbitrailly","arbitrarily"],["arbitraily","arbitrarily"],["arbitraion","arbitration"],["arbitrairly","arbitrarily"],["arbitrairy","arbitrary"],["arbitral","arbitrary"],["arbitralily","arbitrarily"],["arbitrally","arbitrarily"],["arbitralrily","arbitrarily"],["arbitralry","arbitrary"],["arbitraly","arbitrary"],["arbitrarion","arbitration"],["arbitraryily","arbitrarily"],["arbitraryly","arbitrary"],["arbitratily","arbitrarily"],["arbitratiojn","arbitration"],["arbitraton","arbitration"],["arbitratrily","arbitrarily"],["arbitratrion","arbitration"],["arbitratry","arbitrary"],["arbitraty","arbitrary"],["arbitray","arbitrary"],["arbitriarily","arbitrarily"],["arbitriary","arbitrary"],["arbitrily","arbitrarily"],["arbitrion","arbitration"],["arbitriraly","arbitrarily"],["arbitriray","arbitrary"],["arbitrition","arbitration"],["arbitrtily","arbitrarily"],["arbitrty","arbitrary"],["arbitry","arbitrary"],["arbitryarily","arbitrarily"],["arbitryary","arbitrary"],["arbitual","arbitrary"],["arbitually","arbitrarily"],["arbitualy","arbitrary"],["arbituarily","arbitrarily"],["arbituary","arbitrary"],["arbiturarily","arbitrarily"],["arbiturary","arbitrary"],["arbort","abort"],["arborted","aborted"],["arborting","aborting"],["arborts","aborts"],["arbritary","arbitrary"],["arbritrarily","arbitrarily"],["arbritrary","arbitrary"],["arbtirarily","arbitrarily"],["arbtirary","arbitrary"],["arbtrarily","arbitrarily"],["arbtrary","arbitrary"],["arbutrarily","arbitrarily"],["arbutrary","arbitrary"],["arch-dependet","arch-dependent"],["arch-independet","arch-independent"],["archaelogical","archaeological"],["archaelogists","archaeologists"],["archaelogy","archaeology"],["archetect","architect"],["archetects","architects"],["archetectural","architectural"],["archetecturally","architecturally"],["archetecture","architecture"],["archiac","archaic"],["archictect","architect"],["archictecture","architecture"],["archictectures","architectures"],["archicture","architecture"],["archiecture","architecture"],["archiectures","architectures"],["archimedian","archimedean"],["architct","architect"],["architcts","architects"],["architcture","architecture"],["architctures","architectures"],["architecht","architect"],["architechts","architects"],["architechturally","architecturally"],["architechture","architecture"],["architechtures","architectures"],["architectual","architectural"],["architectur","architecture"],["architecturs","architectures"],["architecturse","architectures"],["architecure","architecture"],["architecures","architectures"],["architecutre","architecture"],["architecutres","architectures"],["architecuture","architecture"],["architecutures","architectures"],["architetcure","architecture"],["architetcures","architectures"],["architeture","architecture"],["architetures","architectures"],["architure","architecture"],["architures","architectures"],["archiv","archive"],["archivel","archival"],["archor","anchor"],["archtecture","architecture"],["archtectures","architectures"],["archtiecture","architecture"],["archtiectures","architectures"],["archtitecture","architecture"],["archtitectures","architectures"],["archtype","archetype"],["archtypes","archetypes"],["archvie","archive"],["archvies","archives"],["archving","archiving"],["arcitecture","architecture"],["arcitectures","architectures"],["arcive","archive"],["arcived","archived"],["arciver","archiver"],["arcives","archives"],["arciving","archiving"],["arcticle","article"],["Ardiuno","Arduino"],["are'nt","aren't"],["aready","already"],["areea","area"],["aren's","aren't"],["aren;t","aren't"],["arent'","aren't"],["arent","aren't"],["arent;","aren't"],["areodynamics","aerodynamics"],["argement","argument"],["argements","arguments"],["argemnt","argument"],["argemnts","arguments"],["argment","argument"],["argments","arguments"],["argmument","argument"],["argmuments","arguments"],["argreement","agreement"],["argreements","agreements"],["argubly","arguably"],["arguement","argument"],["arguements","arguments"],["arguemnt","argument"],["arguemnts","arguments"],["arguemtn","argument"],["arguemtns","arguments"],["arguents","arguments"],["argumant","argument"],["argumants","arguments"],["argumeent","argument"],["argumeents","arguments"],["argumement","argument"],["argumements","arguments"],["argumemnt","argument"],["argumemnts","arguments"],["argumeng","argument"],["argumengs","arguments"],["argumens","arguments"],["argumenst","arguments"],["argumentents","arguments"],["argumeny","argument"],["argumet","argument"],["argumetn","argument"],["argumetns","arguments"],["argumets","arguments"],["argumnet","argument"],["argumnets","arguments"],["argumnt","argument"],["argumnts","arguments"],["arhive","archive"],["arhives","archives"],["aribitary","arbitrary"],["aribiter","arbiter"],["aribrary","arbitrary"],["aribtrarily","arbitrarily"],["aribtrary","arbitrary"],["ariflow","airflow"],["arised","arose"],["arithemetic","arithmetic"],["arithemtic","arithmetic"],["arithmatic","arithmetic"],["arithmentic","arithmetic"],["arithmetc","arithmetic"],["arithmethic","arithmetic"],["arithmitic","arithmetic"],["aritmetic","arithmetic"],["aritrary","arbitrary"],["aritst","artist"],["arival","arrival"],["arive","arrive"],["arlready","already"],["armamant","armament"],["armistace","armistice"],["armonic","harmonic"],["arn't","aren't"],["arne't","aren't"],["arogant","arrogant"],["arogent","arrogant"],["aronud","around"],["aroud","around"],["aroudn","around"],["arouind","around"],["arounf","around"],["aroung","around"],["arount","around"],["arquitecture","architecture"],["arquitectures","architectures"],["arraay","array"],["arragement","arrangement"],["arraival","arrival"],["arral","array"],["arranable","arrangeable"],["arrance","arrange"],["arrane","arrange"],["arraned","arranged"],["arranement","arrangement"],["arranements","arrangements"],["arranent","arrangement"],["arranents","arrangements"],["arranes","arranges"],["arrang","arrange"],["arrangable","arrangeable"],["arrangaeble","arrangeable"],["arrangaelbe","arrangeable"],["arrangd","arranged"],["arrangde","arranged"],["arrangemenet","arrangement"],["arrangemenets","arrangements"],["arrangent","arrangement"],["arrangents","arrangements"],["arrangmeent","arrangement"],["arrangmeents","arrangements"],["arrangmenet","arrangement"],["arrangmenets","arrangements"],["arrangment","arrangement"],["arrangments","arrangements"],["arrangnig","arranging"],["arrangs","arranges"],["arrangse","arranges"],["arrangt","arrangement"],["arrangte","arrange"],["arrangteable","arrangeable"],["arrangted","arranged"],["arrangtement","arrangement"],["arrangtements","arrangements"],["arrangtes","arranges"],["arrangting","arranging"],["arrangts","arrangements"],["arraning","arranging"],["arranment","arrangement"],["arranments","arrangements"],["arrants","arrangements"],["arraows","arrows"],["arrary","array"],["arrayes","arrays"],["arre","are"],["arreay","array"],["arrengement","arrangement"],["arrengements","arrangements"],["arriveis","arrives"],["arrivial","arrival"],["arround","around"],["arrray","array"],["arrrays","arrays"],["arrrive","arrive"],["arrrived","arrived"],["arrrives","arrives"],["arrtibute","attribute"],["arrya","array"],["arryas","arrays"],["arrys","arrays"],["artcile","article"],["articaft","artifact"],["articafts","artifacts"],["artical","article"],["articals","articles"],["articat","artifact"],["articats","artifacts"],["artice","article"],["articel","article"],["articels","articles"],["artifac","artifact"],["artifacs","artifacts"],["artifcat","artifact"],["artifcats","artifacts"],["artifical","artificial"],["artifically","artificially"],["artihmetic","arithmetic"],["artilce","article"],["artillary","artillery"],["artuments","arguments"],["arugment","argument"],["arugments","arguments"],["arument","argument"],["aruments","arguments"],["arund","around"],["arvg","argv"],["asai","Asia"],["asain","Asian"],["asbolute","absolute"],["asbolutelly","absolutely"],["asbolutely","absolutely"],["asbtract","abstract"],["asbtracted","abstracted"],["asbtracter","abstracter"],["asbtracting","abstracting"],["asbtraction","abstraction"],["asbtractions","abstractions"],["asbtractly","abstractly"],["asbtractness","abstractness"],["asbtractor","abstractor"],["asbtracts","abstracts"],["ascconciated","associated"],["asceding","ascending"],["ascpect","aspect"],["ascpects","aspects"],["asdignment","assignment"],["asdignments","assignments"],["asemble","assemble"],["asembled","assembled"],["asembler","assembler"],["asemblers","assemblers"],["asembles","assembles"],["asemblies","assemblies"],["asembling","assembling"],["asembly","assembly"],["asendance","ascendance"],["asendancey","ascendancy"],["asendancy","ascendancy"],["asendence","ascendance"],["asendencey","ascendancy"],["asendency","ascendancy"],["asending","ascending"],["asent","ascent"],["aserted","asserted"],["asertion","assertion"],["asess","assess"],["asessment","assessment"],["asessments","assessments"],["asetic","ascetic"],["asfar","as far"],["asign","assign"],["asigned","assigned"],["asignee","assignee"],["asignees","assignees"],["asigning","assigning"],["asignmend","assignment"],["asignmends","assignments"],["asignment","assignment"],["asignor","assignor"],["asigns","assigns"],["asii","ascii"],["asisstant","assistant"],["asisstants","assistants"],["asistance","assistance"],["aske","ask"],["askes","asks"],["aslo","also"],["asnwer","answer"],["asnwered","answered"],["asnwerer","answerer"],["asnwerers","answerers"],["asnwering","answering"],["asnwers","answers"],["asny","any"],["asnychronoue","asynchronous"],["asociated","associated"],["asolute","absolute"],["asorbed","absorbed"],["aspected","expected"],["asphyxation","asphyxiation"],["assasin","assassin"],["assasinate","assassinate"],["assasinated","assassinated"],["assasinates","assassinates"],["assasination","assassination"],["assasinations","assassinations"],["assasined","assassinated"],["assasins","assassins"],["assassintation","assassination"],["asscciated","associated"],["assciated","associated"],["asscii","ASCII"],["asscociated","associated"],["asscoitaed","associated"],["assebly","assembly"],["assebmly","assembly"],["assembe","assemble"],["assembed","assembled"],["assembeld","assembled"],["assember","assembler"],["assemblys","assemblies"],["assemby","assembly"],["assemly","assembly"],["assemnly","assembly"],["assemple","assemble"],["assending","ascending"],["asser","assert"],["assersion","assertion"],["assertation","assertion"],["assertio","assertion"],["assertting","asserting"],["assesmenet","assessment"],["assesment","assessment"],["assesments","assessments"],["assessmant","assessment"],["assessmants","assessments"],["assgin","assign"],["assgined","assigned"],["assgining","assigning"],["assginment","assignment"],["assginments","assignments"],["assgins","assigns"],["assicate","associate"],["assicated","associated"],["assicates","associates"],["assicating","associating"],["assication","association"],["assications","associations"],["assiciate","associate"],["assiciated","associated"],["assiciates","associates"],["assiciation","association"],["assiciations","associations"],["asside","aside"],["assiged","assigned"],["assigend","assigned"],["assigh","assign"],["assighed","assigned"],["assighee","assignee"],["assighees","assignees"],["assigher","assigner"],["assighers","assigners"],["assighing","assigning"],["assighor","assignor"],["assighors","assignors"],["assighs","assigns"],["assiging","assigning"],["assigment","assignment"],["assigments","assignments"],["assigmnent","assignment"],["assignalble","assignable"],["assignement","assignment"],["assignements","assignments"],["assignemnt","assignment"],["assignemnts","assignments"],["assignemtn","assignment"],["assignend","assigned"],["assignenment","assignment"],["assignenmentes","assignments"],["assignenments","assignments"],["assignenmet","assignment"],["assignes","assigns"],["assignmenet","assignment"],["assignmens","assignments"],["assignmet","assignment"],["assignmetns","assignments"],["assignmnet","assignment"],["assignt","assign"],["assigntment","assignment"],["assihnment","assignment"],["assihnments","assignments"],["assime","assume"],["assined","assigned"],["assing","assign"],["assinged","assigned"],["assinging","assigning"],["assingled","assigned"],["assingment","assignment"],["assingned","assigned"],["assingnment","assignment"],["assings","assigns"],["assinment","assignment"],["assiocate","associate"],["assiocated","associated"],["assiocates","associates"],["assiocating","associating"],["assiocation","association"],["assiociate","associate"],["assiociated","associated"],["assiociates","associates"],["assiociating","associating"],["assiociation","association"],["assisance","assistance"],["assisant","assistant"],["assisants","assistants"],["assising","assisting"],["assisnate","assassinate"],["assistence","assistance"],["assistent","assistant"],["assit","assist"],["assitant","assistant"],["assition","assertion"],["assmbler","assembler"],["assmeble","assemble"],["assmebler","assembler"],["assmebles","assembles"],["assmebling","assembling"],["assmebly","assembly"],["assmelber","assembler"],["assmption","assumption"],["assmptions","assumptions"],["assmume","assume"],["assmumed","assumed"],["assmumes","assumes"],["assmuming","assuming"],["assmumption","assumption"],["assmumptions","assumptions"],["assoaiate","associate"],["assoaiated","associated"],["assoaiates","associates"],["assoaiating","associating"],["assoaiation","association"],["assoaiations","associations"],["assoaiative","associative"],["assocaited","associated"],["assocate","associate"],["assocated","associated"],["assocates","associates"],["assocating","associating"],["assocation","association"],["assocations","associations"],["assocciated","associated"],["assocciation","association"],["assocciations","associations"],["assocciative","associative"],["associatated","associated"],["associatd","associated"],["associatied","associated"],["associcate","associate"],["associcated","associated"],["associcates","associates"],["associcating","associating"],["associdated","associated"],["associeate","associate"],["associeated","associated"],["associeates","associates"],["associeating","associating"],["associeation","association"],["associeations","associations"],["associeted","associated"],["associte","associate"],["associted","associated"],["assocites","associates"],["associting","associating"],["assocition","association"],["associtions","associations"],["associtive","associative"],["associuated","associated"],["assoction","association"],["assoiated","associated"],["assoicate","associate"],["assoicated","associated"],["assoicates","associates"],["assoication","association"],["assoiciative","associative"],["assomption","assumption"],["assosciate","associate"],["assosciated","associated"],["assosciates","associates"],["assosciating","associating"],["assosiacition","association"],["assosiacitions","associations"],["assosiacted","associated"],["assosiate","associate"],["assosiated","associated"],["assosiates","associates"],["assosiating","associating"],["assosiation","association"],["assosiations","associations"],["assosiative","associative"],["assosication","assassination"],["assotiated","associated"],["assoziated","associated"],["asssassans","assassins"],["asssembler","assembler"],["asssembly","assembly"],["asssert","assert"],["asssertion","assertion"],["asssociate","associated"],["asssociated","associated"],["asssociation","association"],["asssume","assume"],["asssumes","assumes"],["asssuming","assuming"],["assualt","assault"],["assualted","assaulted"],["assuembly","assembly"],["assum","assume"],["assuma","assume"],["assumad","assumed"],["assumang","assuming"],["assumas","assumes"],["assumbe","assume"],["assumbed","assumed"],["assumbes","assumes"],["assumbing","assuming"],["assumend","assumed"],["assumking","assuming"],["assumme","assume"],["assummed","assumed"],["assummes","assumes"],["assumming","assuming"],["assumne","assume"],["assumned","assumed"],["assumnes","assumes"],["assumning","assuming"],["assumong","assuming"],["assumotion","assumption"],["assumotions","assumptions"],["assumpation","assumption"],["assumpted","assumed"],["assums","assumes"],["assumse","assumes"],["assumtion","assumption"],["assumtions","assumptions"],["assumtpion","assumption"],["assumtpions","assumptions"],["assumu","assume"],["assumud","assumed"],["assumue","assume"],["assumued","assumed"],["assumues","assumes"],["assumuing","assuming"],["assumung","assuming"],["assumuption","assumption"],["assumuptions","assumptions"],["assumus","assumes"],["assupmption","assumption"],["assuption","assumption"],["assuptions","assumptions"],["assurred","assured"],["assymetric","asymmetric"],["assymetrical","asymmetrical"],["assymetries","asymmetries"],["assymetry","asymmetry"],["assymmetric","asymmetric"],["assymmetrical","asymmetrical"],["assymmetries","asymmetries"],["assymmetry","asymmetry"],["assymptote","asymptote"],["assymptotes","asymptotes"],["assymptotic","asymptotic"],["assymptotically","asymptotically"],["assymthotic","asymptotic"],["assymtote","asymptote"],["assymtotes","asymptotes"],["assymtotic","asymptotic"],["assymtotically","asymptotically"],["asterices","asterisks"],["asteriod","asteroid"],["astethic","aesthetic"],["astethically","aesthetically"],["astethicism","aestheticism"],["astethics","aesthetics"],["asthetic","aesthetic"],["asthetical","aesthetical"],["asthetically","aesthetically"],["asthetics","aesthetics"],["astiimate","estimate"],["astiimation","estimation"],["asume","assume"],["asumed","assumed"],["asumes","assumes"],["asuming","assuming"],["asumption","assumption"],["asure","assure"],["aswell","as well"],["asychronize","asynchronize"],["asychronized","asynchronized"],["asychronous","asynchronous"],["asychronously","asynchronously"],["asycn","async"],["asycnhronous","asynchronous"],["asycnhronously","asynchronously"],["asycronous","asynchronous"],["asymetic","asymmetric"],["asymetric","asymmetric"],["asymetrical","asymmetrical"],["asymetricaly","asymmetrically"],["asymmeric","asymmetric"],["asynchnous","asynchronous"],["asynchonous","asynchronous"],["asynchonously","asynchronously"],["asynchornous","asynchronous"],["asynchoronous","asynchronous"],["asynchrnous","asynchronous"],["asynchrnously","asynchronously"],["asynchromous","asynchronous"],["asynchron","asynchronous"],["asynchroneously","asynchronously"],["asynchronious","asynchronous"],["asynchronlous","asynchronous"],["asynchrons","asynchronous"],["asynchroous","asynchronous"],["asynchrounous","asynchronous"],["asynchrounsly","asynchronously"],["asyncronous","asynchronous"],["asyncronously","asynchronously"],["asynnc","async"],["asynschron","asynchronous"],["atach","attach"],["atached","attached"],["ataching","attaching"],["atachment","attachment"],["atachments","attachments"],["atack","attack"],["atain","attain"],["atatch","attach"],["atatchable","attachable"],["atatched","attached"],["atatches","attaches"],["atatching","attaching"],["atatchment","attachment"],["atatchments","attachments"],["atempt","attempt"],["atempting","attempting"],["atempts","attempts"],["atendance","attendance"],["atended","attended"],["atendee","attendee"],["atends","attends"],["atention","attention"],["atheistical","atheistic"],["athenean","Athenian"],["atheneans","Athenians"],["ather","other"],["athiesm","atheism"],["athiest","atheist"],["athough","although"],["athron","athlon"],["athros","atheros"],["atleast","at least"],["atll","all"],["atmoic","atomic"],["atmoically","atomically"],["atomatically","automatically"],["atomical","atomic"],["atomicly","atomically"],["atomiticity","atomicity"],["atomtical","automatic"],["atomtically","automatically"],["atomticaly","automatically"],["atomticlly","automatically"],["atomticly","automatically"],["atorecovery","autorecovery"],["atorney","attorney"],["atquired","acquired"],["atribs","attribs"],["atribut","attribute"],["atribute","attribute"],["atributed","attributed"],["atributes","attributes"],["atrribute","attribute"],["atrributes","attributes"],["atrtribute","attribute"],["atrtributes","attributes"],["attaced","attached"],["attachd","attached"],["attachement","attachment"],["attachements","attachments"],["attachemnt","attachment"],["attachemnts","attachments"],["attachen","attach"],["attachged","attached"],["attachmant","attachment"],["attachmants","attachments"],["attachs","attaches"],["attachted","attached"],["attacs","attacks"],["attacthed","attached"],["attampt","attempt"],["attatch","attach"],["attatched","attached"],["attatches","attaches"],["attatching","attaching"],["attatchment","attachment"],["attatchments","attachments"],["attch","attach"],["attched","attached"],["attches","attaches"],["attching","attaching"],["attchment","attachment"],["attement","attempt"],["attemented","attempted"],["attementing","attempting"],["attements","attempts"],["attemp","attempt"],["attemped","attempted"],["attemping","attempting"],["attemppt","attempt"],["attemps","attempts"],["attemptes","attempts"],["attemptting","attempting"],["attemt","attempt"],["attemted","attempted"],["attemting","attempting"],["attemtp","attempt"],["attemtped","attempted"],["attemtping","attempting"],["attemtps","attempts"],["attemtpted","attempted"],["attemtpts","attempts"],["attemts","attempts"],["attendence","attendance"],["attendent","attendant"],["attendents","attendants"],["attened","attended"],["attennuation","attenuation"],["attension","attention"],["attented","attended"],["attentuation","attenuation"],["attentuations","attenuations"],["attepmpt","attempt"],["attept","attempt"],["attetntion","attention"],["attibute","attribute"],["attibuted","attributed"],["attibutes","attributes"],["attirbute","attribute"],["attirbutes","attributes"],["attiribute","attribute"],["attitide","attitude"],["attmept","attempt"],["attmpt","attempt"],["attnetion","attention"],["attosencond","attosecond"],["attosenconds","attoseconds"],["attrbiute","attribute"],["attrbute","attribute"],["attrbuted","attributed"],["attrbutes","attributes"],["attrbution","attribution"],["attrbutions","attributions"],["attribbute","attribute"],["attribiute","attribute"],["attribiutes","attributes"],["attribte","attribute"],["attribted","attributed"],["attribting","attributing"],["attribtue","attribute"],["attribtutes","attributes"],["attribude","attribute"],["attribue","attribute"],["attribues","attributes"],["attribuets","attributes"],["attribuite","attribute"],["attribuites","attributes"],["attribuition","attribution"],["attribure","attribute"],["attribured","attributed"],["attribures","attributes"],["attriburte","attribute"],["attriburted","attributed"],["attriburtes","attributes"],["attriburtion","attribution"],["attribut","attribute"],["attributei","attribute"],["attributen","attribute"],["attributess","attributes"],["attributred","attributed"],["attributs","attributes"],["attribye","attribute"],["attribyes","attributes"],["attribyte","attribute"],["attribytes","attributes"],["attriebute","attribute"],["attriebuted","attributed"],["attriebutes","attributes"],["attriebuting","attributing"],["attrirbute","attribute"],["attrirbuted","attributed"],["attrirbutes","attributes"],["attrirbution","attribution"],["attritube","attribute"],["attritubed","attributed"],["attritubes","attributes"],["attriubtes","attributes"],["attriubute","attribute"],["attrocities","atrocities"],["attrribute","attribute"],["attrributed","attributed"],["attrributes","attributes"],["attrribution","attribution"],["attrubite","attribute"],["attrubites","attributes"],["attrubte","attribute"],["attrubtes","attributes"],["attrubure","attribute"],["attrubures","attributes"],["attrubute","attribute"],["attrubutes","attributes"],["attrubyte","attribute"],["attrubytes","attributes"],["attruibute","attribute"],["attruibutes","attributes"],["atttached","attached"],["atttribute","attribute"],["atttributes","attributes"],["atuhenticate","authenticate"],["atuhenticated","authenticated"],["atuhenticates","authenticates"],["atuhenticating","authenticating"],["atuhentication","authentication"],["atuhenticator","authenticator"],["atuhenticators","authenticators"],["auccess","success"],["auccessive","successive"],["audeince","audience"],["audiance","audience"],["augest","August"],["augmnet","augment"],["augmnetation","augmentation"],["augmneted","augmented"],["augmneter","augmenter"],["augmneters","augmenters"],["augmnetes","augments"],["augmneting","augmenting"],["augmnets","augments"],["auguest","august"],["auhtor","author"],["auhtors","authors"],["aunthenticate","authenticate"],["aunthenticated","authenticated"],["aunthenticates","authenticates"],["aunthenticating","authenticating"],["aunthentication","authentication"],["aunthenticator","authenticator"],["aunthenticators","authenticators"],["auospacing","autospacing"],["auot","auto"],["auotmatic","automatic"],["auromated","automated"],["austrailia","Australia"],["austrailian","Australian"],["Australien","Australian"],["Austrlaian","Australian"],["autasave","autosave"],["autasaves","autosaves"],["autenticate","authenticate"],["autenticated","authenticated"],["autenticates","authenticates"],["autenticating","authenticating"],["autentication","authentication"],["autenticator","authenticator"],["autenticators","authenticators"],["authecate","authenticate"],["authecated","authenticated"],["authecates","authenticates"],["authecating","authenticating"],["authecation","authentication"],["authecator","authenticator"],["authecators","authenticators"],["authenaticate","authenticate"],["authenaticated","authenticated"],["authenaticates","authenticates"],["authenaticating","authenticating"],["authenatication","authentication"],["authenaticator","authenticator"],["authenaticators","authenticators"],["authencate","authenticate"],["authencated","authenticated"],["authencates","authenticates"],["authencating","authenticating"],["authencation","authentication"],["authencator","authenticator"],["authencators","authenticators"],["authenciate","authenticate"],["authenciated","authenticated"],["authenciates","authenticates"],["authenciating","authenticating"],["authenciation","authentication"],["authenciator","authenticator"],["authenciators","authenticators"],["authencicate","authenticate"],["authencicated","authenticated"],["authencicates","authenticates"],["authencicating","authenticating"],["authencication","authentication"],["authencicator","authenticator"],["authencicators","authenticators"],["authencity","authenticity"],["authencticate","authenticate"],["authencticated","authenticated"],["authencticates","authenticates"],["authencticating","authenticating"],["authenctication","authentication"],["authencticator","authenticator"],["authencticators","authenticators"],["authendicate","authenticate"],["authendicated","authenticated"],["authendicates","authenticates"],["authendicating","authenticating"],["authendication","authentication"],["authendicator","authenticator"],["authendicators","authenticators"],["authenenticate","authenticate"],["authenenticated","authenticated"],["authenenticates","authenticates"],["authenenticating","authenticating"],["authenentication","authentication"],["authenenticator","authenticator"],["authenenticators","authenticators"],["authenfie","authenticate"],["authenfied","authenticated"],["authenfies","authenticates"],["authenfiing","authenticating"],["authenfiion","authentication"],["authenfior","authenticator"],["authenfiors","authenticators"],["authenicae","authenticate"],["authenicaed","authenticated"],["authenicaes","authenticates"],["authenicaing","authenticating"],["authenicaion","authentication"],["authenicaor","authenticator"],["authenicaors","authenticators"],["authenicate","authenticate"],["authenicated","authenticated"],["authenicates","authenticates"],["authenicating","authenticating"],["authenication","authentication"],["authenicator","authenticator"],["authenicators","authenticators"],["authenificate","authenticate"],["authenificated","authenticated"],["authenificates","authenticates"],["authenificating","authenticating"],["authenification","authentication"],["authenificator","authenticator"],["authenificators","authenticators"],["authenitcate","authenticate"],["authenitcated","authenticated"],["authenitcates","authenticates"],["authenitcating","authenticating"],["authenitcation","authentication"],["authenitcator","authenticator"],["authenitcators","authenticators"],["autheniticate","authenticate"],["autheniticated","authenticated"],["autheniticates","authenticates"],["autheniticating","authenticating"],["authenitication","authentication"],["autheniticator","authenticator"],["autheniticators","authenticators"],["authenricate","authenticate"],["authenricated","authenticated"],["authenricates","authenticates"],["authenricating","authenticating"],["authenrication","authentication"],["authenricator","authenticator"],["authenricators","authenticators"],["authentation","authentication"],["authentcated","authenticated"],["authentciate","authenticate"],["authentciated","authenticated"],["authentciates","authenticates"],["authentciating","authenticating"],["authentciation","authentication"],["authentciator","authenticator"],["authentciators","authenticators"],["authenticaiton","authentication"],["authenticateion","authentication"],["authentiction","authentication"],["authentification","authentication"],["auther","author"],["autherisation","authorisation"],["autherise","authorise"],["autherization","authorization"],["autherize","authorize"],["authers","authors"],["authethenticate","authenticate"],["authethenticated","authenticated"],["authethenticates","authenticates"],["authethenticating","authenticating"],["authethentication","authentication"],["authethenticator","authenticator"],["authethenticators","authenticators"],["authethicate","authenticate"],["authethicated","authenticated"],["authethicates","authenticates"],["authethicating","authenticating"],["authethication","authentication"],["authethicator","authenticator"],["authethicators","authenticators"],["autheticate","authenticate"],["autheticated","authenticated"],["autheticates","authenticates"],["autheticating","authenticating"],["authetication","authentication"],["autheticator","authenticator"],["autheticators","authenticators"],["authetnicate","authenticate"],["authetnicated","authenticated"],["authetnicates","authenticates"],["authetnicating","authenticating"],["authetnication","authentication"],["authetnicator","authenticator"],["authetnicators","authenticators"],["authetnticate","authenticate"],["authetnticated","authenticated"],["authetnticates","authenticates"],["authetnticating","authenticating"],["authetntication","authentication"],["authetnticator","authenticator"],["authetnticators","authenticators"],["authobiographic","autobiographic"],["authobiography","autobiography"],["authoer","author"],["authoratative","authoritative"],["authorative","authoritative"],["authorded","authored"],["authorites","authorities"],["authorithy","authority"],["authoritiers","authorities"],["authorititive","authoritative"],["authoritive","authoritative"],["authorizeed","authorized"],["authror","author"],["authrored","authored"],["authrorisation","authorisation"],["authrorities","authorities"],["authrorization","authorization"],["authrors","authors"],["autimatic","automatic"],["autimatically","automatically"],["autmatically","automatically"],["auto-dependancies","auto-dependencies"],["auto-destrcut","auto-destruct"],["auto-genrated","auto-generated"],["auto-genratet","auto-generated"],["auto-genration","auto-generation"],["auto-negatiotiation","auto-negotiation"],["auto-negatiotiations","auto-negotiations"],["auto-negoatiation","auto-negotiation"],["auto-negoatiations","auto-negotiations"],["auto-negoation","auto-negotiation"],["auto-negoations","auto-negotiations"],["auto-negociation","auto-negotiation"],["auto-negociations","auto-negotiations"],["auto-negogtiation","auto-negotiation"],["auto-negogtiations","auto-negotiations"],["auto-negoitation","auto-negotiation"],["auto-negoitations","auto-negotiations"],["auto-negoptionsotiation","auto-negotiation"],["auto-negoptionsotiations","auto-negotiations"],["auto-negosiation","auto-negotiation"],["auto-negosiations","auto-negotiations"],["auto-negotaiation","auto-negotiation"],["auto-negotaiations","auto-negotiations"],["auto-negotaition","auto-negotiation"],["auto-negotaitions","auto-negotiations"],["auto-negotatiation","auto-negotiation"],["auto-negotatiations","auto-negotiations"],["auto-negotation","auto-negotiation"],["auto-negotations","auto-negotiations"],["auto-negothiation","auto-negotiation"],["auto-negothiations","auto-negotiations"],["auto-negotication","auto-negotiation"],["auto-negotications","auto-negotiations"],["auto-negotioation","auto-negotiation"],["auto-negotioations","auto-negotiations"],["auto-negotion","auto-negotiation"],["auto-negotionation","auto-negotiation"],["auto-negotionations","auto-negotiations"],["auto-negotions","auto-negotiations"],["auto-negotiotation","auto-negotiation"],["auto-negotiotations","auto-negotiations"],["auto-negotitaion","auto-negotiation"],["auto-negotitaions","auto-negotiations"],["auto-negotitation","auto-negotiation"],["auto-negotitations","auto-negotiations"],["auto-negotition","auto-negotiation"],["auto-negotitions","auto-negotiations"],["auto-negoziation","auto-negotiation"],["auto-negoziations","auto-negotiations"],["auto-realease","auto-release"],["auto-realeased","auto-released"],["autochtonous","autochthonous"],["autocmplete","autocomplete"],["autocmpleted","autocompleted"],["autocmpletes","autocompletes"],["autocmpleting","autocompleting"],["autocommiting","autocommitting"],["autoconplete","autocomplete"],["autoconpleted","autocompleted"],["autoconpletes","autocompletes"],["autoconpleting","autocompleting"],["autoconpletion","autocompletion"],["autocoomit","autocommit"],["autoctonous","autochthonous"],["autoeselect","autoselect"],["autofilt","autofilter"],["autofomat","autoformat"],["autoformating","autoformatting"],["autogenrated","autogenerated"],["autogenratet","autogenerated"],["autogenration","autogeneration"],["autogroping","autogrouping"],["autohorized","authorized"],["autoincrememnt","autoincrement"],["autoincrementive","autoincrement"],["automaatically","automatically"],["automagicaly","automagically"],["automaitc","automatic"],["automaitcally","automatically"],["automanifactured","automanufactured"],["automatcally","automatically"],["automatially","automatically"],["automaticallly","automatically"],["automaticaly","automatically"],["automaticalyl","automatically"],["automaticalyy","automatically"],["automaticlly","automatically"],["automaticly","automatically"],["autometic","automatic"],["autometically","automatically"],["automibile","automobile"],["automical","automatic"],["automically","automatically"],["automicaly","automatically"],["automicatilly","automatically"],["automiclly","automatically"],["automicly","automatically"],["automonomous","autonomous"],["automtic","automatic"],["automtically","automatically"],["autonagotiation","autonegotiation"],["autonegatiotiation","autonegotiation"],["autonegatiotiations","autonegotiations"],["autonegoatiation","autonegotiation"],["autonegoatiations","autonegotiations"],["autonegoation","autonegotiation"],["autonegoations","autonegotiations"],["autonegociated","autonegotiated"],["autonegociation","autonegotiation"],["autonegociations","autonegotiations"],["autonegogtiation","autonegotiation"],["autonegogtiations","autonegotiations"],["autonegoitation","autonegotiation"],["autonegoitations","autonegotiations"],["autonegoptionsotiation","autonegotiation"],["autonegoptionsotiations","autonegotiations"],["autonegosiation","autonegotiation"],["autonegosiations","autonegotiations"],["autonegotaiation","autonegotiation"],["autonegotaiations","autonegotiations"],["autonegotaition","autonegotiation"],["autonegotaitions","autonegotiations"],["autonegotatiation","autonegotiation"],["autonegotatiations","autonegotiations"],["autonegotation","autonegotiation"],["autonegotations","autonegotiations"],["autonegothiation","autonegotiation"],["autonegothiations","autonegotiations"],["autonegotication","autonegotiation"],["autonegotications","autonegotiations"],["autonegotioation","autonegotiation"],["autonegotioations","autonegotiations"],["autonegotion","autonegotiation"],["autonegotionation","autonegotiation"],["autonegotionations","autonegotiations"],["autonegotions","autonegotiations"],["autonegotiotation","autonegotiation"],["autonegotiotations","autonegotiations"],["autonegotitaion","autonegotiation"],["autonegotitaions","autonegotiations"],["autonegotitation","autonegotiation"],["autonegotitations","autonegotiations"],["autonegotition","autonegotiation"],["autonegotitions","autonegotiations"],["autonegoziation","autonegotiation"],["autonegoziations","autonegotiations"],["autoneogotiation","autonegotiation"],["autoneotiation","autonegotiation"],["autonogotiation","autonegotiation"],["autonymous","autonomous"],["autoonf","autoconf"],["autopsec","autospec"],["autor","author"],["autorealease","autorelease"],["autorisation","authorisation"],["autoritative","authoritative"],["autority","authority"],["autorization","authorization"],["autoropeat","autorepeat"],["autors","authors"],["autosae","autosave"],["autosavegs","autosaves"],["autosaveperodical","autosaveperiodical"],["autosence","autosense"],["autum","autumn"],["auxialiary","auxiliary"],["auxilaries","auxiliaries"],["auxilary","auxiliary"],["auxileries","auxiliaries"],["auxilery","auxiliary"],["auxiliar","auxiliary"],["auxillaries","auxiliaries"],["auxillary","auxiliary"],["auxilleries","auxiliaries"],["auxillery","auxiliary"],["auxilliaries","auxiliaries"],["auxilliary","auxiliary"],["auxiluary","auxiliary"],["auxliliary","auxiliary"],["avaiable","available"],["avaialable","available"],["avaialbale","available"],["avaialbe","available"],["avaialbel","available"],["avaialbility","availability"],["avaialble","available"],["avaiblable","available"],["avaible","available"],["avaiiability","availability"],["avaiiable","available"],["avaiibility","availability"],["avaiible","available"],["avaiilable","available"],["availaable","available"],["availabable","available"],["availabal","available"],["availabale","available"],["availabality","availability"],["availabble","available"],["availabe","available"],["availabed","available"],["availabel","available"],["availabele","available"],["availabelity","availability"],["availabillity","availability"],["availabilty","availability"],["availabke","available"],["availabl","available"],["availabled","available"],["availablen","available"],["availablity","availability"],["availabyl","available"],["availaiable","available"],["availaibility","availability"],["availaible","available"],["availailability","availability"],["availaility","availability"],["availalable","available"],["availalbe","available"],["availalble","available"],["availale","available"],["availaliable","available"],["availality","availability"],["availanle","available"],["availavble","available"],["availavility","availability"],["availavle","available"],["availbable","available"],["availbale","available"],["availbe","available"],["availble","available"],["availeable","available"],["availebilities","availabilities"],["availebility","availability"],["availeble","available"],["availiable","available"],["availibility","availability"],["availibilty","availability"],["availible","available"],["availlable","available"],["avalable","available"],["avalaible","available"],["avalance","avalanche"],["avaliable","available"],["avalibale","available"],["avalible","available"],["avaloable","available"],["avaluate","evaluate"],["avaluated","evaluated"],["avaluates","evaluates"],["avaluating","evaluating"],["avance","advance"],["avanced","advanced"],["avances","advances"],["avancing","advancing"],["avaoid","avoid"],["avaoidable","avoidable"],["avaoided","avoided"],["avarage","average"],["avarageing","averaging"],["avarege","average"],["avation","aviation"],["avcoid","avoid"],["avcoids","avoids"],["avdisories","advisories"],["avdisoriyes","advisories"],["avdisory","advisory"],["avengence","a vengeance"],["averageed","averaged"],["averagine","averaging"],["averload","overload"],["averloaded","overloaded"],["averloads","overloads"],["avertising","advertising"],["avgerage","average"],["aviable","available"],["avialable","available"],["avilability","availability"],["avilable","available"],["aviod","avoid"],["avioded","avoided"],["avioding","avoiding"],["aviods","avoids"],["avisories","advisories"],["avisoriyes","advisories"],["avisory","advisory"],["avod","avoid"],["avoded","avoided"],["avoding","avoiding"],["avods","avoids"],["avoidence","avoidance"],["avoind","avoid"],["avoinded","avoided"],["avoinding","avoiding"],["avoinds","avoids"],["avriable","variable"],["avriables","variables"],["avriant","variant"],["avriants","variants"],["avtive","active"],["awared","awarded"],["aweful","awful"],["awefully","awfully"],["awkard","awkward"],["awming","awning"],["awmings","awnings"],["awnser","answer"],["awnsered","answered"],["awnsers","answers"],["awoid","avoid"],["awsome","awesome"],["awya","away"],["axises","axes"],["axissymmetric","axisymmetric"],["axix","axis"],["axixsymmetric","axisymmetric"],["axpressed","expressed"],["aysnc","async"],["ayways","always"],["bacause","because"],["baceause","because"],["bacground","background"],["bacic","basic"],["backards","backwards"],["backbround","background"],["backbrounds","backgrounds"],["backedn","backend"],["backedns","backends"],["backgorund","background"],["backgorunds","backgrounds"],["backgound","background"],["backgounds","backgrounds"],["backgournd","background"],["backgournds","backgrounds"],["backgrond","background"],["backgronds","backgrounds"],["backgroound","background"],["backgroounds","backgrounds"],["backgroud","background"],["backgroudn","background"],["backgroudns","backgrounds"],["backgrouds","backgrounds"],["backgroun","background"],["backgroung","background"],["backgroungs","backgrounds"],["backgrouns","backgrounds"],["backgrount","background"],["backgrounts","backgrounds"],["backgrouund","background"],["backgrund","background"],["backgrunds","backgrounds"],["backgruond","background"],["backgruonds","backgrounds"],["backlght","backlight"],["backlghting","backlighting"],["backlghts","backlights"],["backned","backend"],["backneds","backends"],["backound","background"],["backounds","backgrounds"],["backpsace","backspace"],["backrefence","backreference"],["backrgound","background"],["backrgounds","backgrounds"],["backround","background"],["backrounds","backgrounds"],["backsapce","backspace"],["backslase","backslash"],["backslases","backslashes"],["backslashs","backslashes"],["backwad","backwards"],["backwardss","backwards"],["backware","backward"],["backwark","backward"],["backwrad","backward"],["bactracking","backtracking"],["bacup","backup"],["baed","based"],["bage","bag"],["bahaving","behaving"],["bahavior","behavior"],["bahavioral","behavioral"],["bahaviors","behaviors"],["bahaviour","behaviour"],["baisc","basic"],["baised","raised"],["bakc","back"],["bakcrefs","backrefs"],["bakends","backends"],["bakground","background"],["bakgrounds","backgrounds"],["bakup","backup"],["bakups","backups"],["bakward","backward"],["bakwards","backwards"],["balacing","balancing"],["balence","balance"],["baloon","balloon"],["baloons","balloons"],["balse","false"],["banannas","bananas"],["bandwdith","bandwidth"],["bandwdiths","bandwidths"],["bandwidht","bandwidth"],["bandwidthm","bandwidth"],["bandwitdh","bandwidth"],["bandwith","bandwidth"],["bankrupcy","bankruptcy"],["banlance","balance"],["banruptcy","bankruptcy"],["barbedos","barbados"],["bariier","barrier"],["barnch","branch"],["barnched","branched"],["barncher","brancher"],["barnchers","branchers"],["barnches","branches"],["barnching","branching"],["barriors","barriers"],["barrriers","barriers"],["barycentic","barycentric"],["basci","basic"],["bascially","basically"],["bascktrack","backtrack"],["basf","base"],["basicallly","basically"],["basicaly","basically"],["basiclly","basically"],["basicly","basically"],["basline","baseline"],["baslines","baselines"],["bassic","basic"],["bassically","basically"],["bastract","abstract"],["bastracted","abstracted"],["bastracter","abstracter"],["bastracting","abstracting"],["bastraction","abstraction"],["bastractions","abstractions"],["bastractly","abstractly"],["bastractness","abstractness"],["bastractor","abstractor"],["bastracts","abstracts"],["bateries","batteries"],["batery","battery"],["battaries","batteries"],["battary","battery"],["bbefore","before"],["bboolean","boolean"],["bbooleans","booleans"],["bcak","back"],["bcause","because"],["beable","be able"],["beacaon","beacon"],["beacause","because"],["beachead","beachhead"],["beacuse","because"],["beaon","beacon"],["bearword","bareword"],["beastiality","bestiality"],["beatiful","beautiful"],["beauracracy","bureaucracy"],["beaurocracy","bureaucracy"],["beaurocratic","bureaucratic"],["beause","because"],["beauti","beauty"],["beautiy","beauty"],["beautyfied","beautified"],["beautyfull","beautiful"],["beaviour","behaviour"],["bebongs","belongs"],["becaause","because"],["becacdd","because"],["becahse","because"],["becamae","became"],["becaouse","because"],["becase","because"],["becasue","because"],["becasuse","because"],["becauae","because"],["becauce","because"],["becaue","because"],["becaues","because"],["becaus","because"],["becausee","because"],["becauseq","because"],["becauses","because"],["becausw","because"],["beccause","because"],["bechmark","benchmark"],["bechmarked","benchmarked"],["bechmarking","benchmarking"],["bechmarks","benchmarks"],["becoem","become"],["becomeing","becoming"],["becomme","become"],["becommes","becomes"],["becomming","becoming"],["becoms","becomes"],["becouse","because"],["becoz","because"],["bector","vector"],["bectors","vectors"],["becuase","because"],["becuse","because"],["becxause","because"],["bedore","before"],["beeings","beings"],["beetween","between"],["beetwen","between"],["beffer","buffer"],["befoer","before"],["befor","before"],["beforehands","beforehand"],["beforere","before"],["befores","before"],["beforing","before"],["befure","before"],["begginer","beginner"],["begginers","beginners"],["beggingin","beginning"],["begginging","beginning"],["begginig","beginning"],["beggining","beginning"],["begginings","beginnings"],["begginnig","beginning"],["begginning","beginning"],["beggins","begins"],["beghavior","behavior"],["beghaviors","behaviors"],["begiinning","beginning"],["beginer","beginner"],["begines","begins"],["begining","beginning"],["beginining","beginning"],["begininings","beginnings"],["begininng","beginning"],["begininngs","beginnings"],["beginn","begin"],["beginnig","beginning"],["beginnin","beginning"],["beginnning","beginning"],["beginnnings","beginnings"],["behabior","behavior"],["behabiors","behaviors"],["behabiour","behaviour"],["behabiours","behaviours"],["behabviour","behaviour"],["behaivior","behavior"],["behaiviour","behaviour"],["behaiviuor","behaviour"],["behaivor","behavior"],["behaivors","behaviors"],["behaivour","behaviour"],["behaivoural","behavioural"],["behaivours","behaviours"],["behavioutr","behaviour"],["behaviro","behavior"],["behaviuor","behaviour"],["behavoir","behavior"],["behavoirs","behaviors"],["behavour","behaviour"],["behavriour","behaviour"],["behavriours","behaviours"],["behinde","behind"],["behvaiour","behaviour"],["behviour","behaviour"],["beigin","begin"],["beiginning","beginning"],["beind","behind"],["beinning","beginning"],["bejond","beyond"],["beleagured","beleaguered"],["beleif","belief"],["beleifable","believable"],["beleifed","believed"],["beleifing","believing"],["beleivable","believable"],["beleive","believe"],["beleived","believed"],["beleives","believes"],["beleiving","believing"],["beliefable","believable"],["beliefed","believed"],["beliefing","believing"],["beligum","belgium"],["beling","belong"],["belivable","believable"],["belive","believe"],["beliveable","believable"],["beliveably","believably"],["beliveble","believable"],["belivebly","believably"],["beliving","believing"],["belligerant","belligerent"],["bellweather","bellwether"],["belog","belong"],["beloging","belonging"],["belogs","belongs"],["belond","belong"],["beloning","belonging"],["belown","belong"],["belwo","below"],["bemusemnt","bemusement"],["benchamarked","benchmarked"],["benchamarking","benchmarking"],["benchamrk","benchmark"],["benchamrked","benchmarked"],["benchamrking","benchmarking"],["benchamrks","benchmarks"],["benchmkar","benchmark"],["benchmkared","benchmarked"],["benchmkaring","benchmarking"],["benchmkars","benchmarks"],["benchs","benches"],["benckmark","benchmark"],["benckmarked","benchmarked"],["benckmarking","benchmarking"],["benckmarks","benchmarks"],["benechmark","benchmark"],["benechmarked","benchmarked"],["benechmarking","benchmarking"],["benechmarks","benchmarks"],["beneeth","beneath"],["benefical","beneficial"],["beneficary","beneficiary"],["benefied","benefited"],["benefitial","beneficial"],["beneits","benefits"],["benetifs","benefits"],["beng","being"],["benhind","behind"],["benificial","beneficial"],["benifit","benefit"],["benifite","benefit"],["benifited","benefited"],["benifitial","beneficial"],["benifits","benefits"],["benig","being"],["beond","beyond"],["berforming","performing"],["bergamont","bergamot"],["Berkley","Berkeley"],["Bernouilli","Bernoulli"],["berween","between"],["besed","based"],["beseige","besiege"],["beseiged","besieged"],["beseiging","besieging"],["besure","be sure"],["beteeen","between"],["beteen","between"],["beter","better"],["beteween","between"],["betrween","between"],["bettern","better"],["bettween","between"],["betwean","between"],["betwee","between"],["betweed","between"],["betweeen","between"],["betweem","between"],["betweend","between"],["betweeness","betweenness"],["betweent","between"],["betwen","between"],["betwene","between"],["betwenn","between"],["betwern","between"],["betwween","between"],["beucase","because"],["beuracracy","bureaucracy"],["beutification","beautification"],["beutiful","beautiful"],["beutifully","beautifully"],["bever","never"],["bevore","before"],["bevorehand","beforehand"],["bevorhand","beforehand"],["beweeen","between"],["beween","between"],["bewteen","between"],["bewteeness","betweenness"],["beyone","beyond"],["beyong","beyond"],["beyound","beyond"],["bffer","buffer"],["bginning","beginning"],["bi-langual","bi-lingual"],["bianries","binaries"],["bianry","binary"],["biappicative","biapplicative"],["biddings","bidding"],["bidimentionnal","bidimensional"],["bidning","binding"],["bidnings","bindings"],["bigallic","bigalloc"],["bigining","beginning"],["biginning","beginning"],["biinary","binary"],["bilangual","bilingual"],["bilateraly","bilaterally"],["billingualism","bilingualism"],["billon","billion"],["bimask","bitmask"],["bimillenia","bimillennia"],["bimillenial","bimillennial"],["bimillenium","bimillennium"],["bimontly","bimonthly"],["binairy","binary"],["binanary","binary"],["binar","binary"],["binay","binary"],["bindins","bindings"],["binidng","binding"],["binominal","binomial"],["binraries","binaries"],["binrary","binary"],["bion","bio"],["birght","bright"],["birghten","brighten"],["birghter","brighter"],["birghtest","brightest"],["birghtness","brightness"],["biridectionality","bidirectionality"],["bisct","bisect"],["bisines","business"],["bisiness","business"],["bisnes","business"],["bisness","business"],["bistream","bitstream"],["bisunes","business"],["bisuness","business"],["bitamps","bitmaps"],["bitap","bitmap"],["bitfileld","bitfield"],["bitfilelds","bitfields"],["bitis","bits"],["bitmast","bitmask"],["bitnaps","bitmaps"],["bitwise-orring","bitwise-oring"],["bizare","bizarre"],["bizarely","bizarrely"],["bizzare","bizarre"],["bject","object"],["bjects","objects"],["blackslashes","backslashes"],["blaclist","blacklist"],["blaim","blame"],["blaimed","blamed"],["blanace","balance"],["blancked","blanked"],["blatent","blatant"],["blatently","blatantly"],["blbos","blobs"],["blcok","block"],["blcoks","blocks"],["bleading","bleeding"],["blessd","blessed"],["blessure","blessing"],["bletooth","bluetooth"],["bleutooth","bluetooth"],["blindy","blindly"],["Blitzkreig","Blitzkrieg"],["bload","bloat"],["bloaded","bloated"],["blocack","blockack"],["bloccks","blocks"],["blocekd","blocked"],["blockhain","blockchain"],["blockhains","blockchains"],["blockin","blocking"],["blockse","blocks"],["bloddy","bloody"],["blodk","block"],["bloek","bloke"],["bloekes","blokes"],["bloeks","blokes"],["bloekss","blokes"],["blohted","bloated"],["blokcer","blocker"],["blokchain","blockchain"],["blokchains","blockchains"],["blokcing","blocking"],["bloked","blocked"],["bloker","blocker"],["bloking","blocking"],["blong","belong"],["blonged","belonged"],["blonging","belonging"],["blongs","belongs"],["bloock","block"],["bloocks","blocks"],["bloted","bloated"],["bluestooth","bluetooth"],["bluetooh","bluetooth"],["bluetoot","bluetooth"],["bluetootn","bluetooth"],["blured","blurred"],["blutooth","bluetooth"],["bnecause","because"],["boads","boards"],["boardcast","broadcast"],["bocome","become"],["boddy","body"],["bodiese","bodies"],["bodydbuilder","bodybuilder"],["boelean","boolean"],["boeleans","booleans"],["boffer","buffer"],["bofore","before"],["bofy","body"],["boggus","bogus"],["bogos","bogus"],["bointer","pointer"],["bolean","boolean"],["boleen","boolean"],["bolor","color"],["bombardement","bombardment"],["bombarment","bombardment"],["bondary","boundary"],["Bonnano","Bonanno"],["bood","boot"],["bookeeping","bookkeeping"],["bookkeeing","bookkeeping"],["bookkeeiping","bookkeeping"],["bookkepp","bookkeep"],["bookmakr","bookmark"],["bookmar","bookmark"],["booleam","boolean"],["booleamn","boolean"],["booleamns","booleans"],["booleams","booleans"],["booleanss","booleans"],["booleen","boolean"],["booleens","booleans"],["boolen","boolean"],["boolens","booleans"],["booltloader","bootloader"],["booltloaders","bootloaders"],["boomark","bookmark"],["boomarks","bookmarks"],["boook","book"],["booolean","boolean"],["boooleans","booleans"],["booshelf","bookshelf"],["booshelves","bookshelves"],["boostrap","bootstrap"],["boostrapped","bootstrapped"],["boostrapping","bootstrapping"],["boostraps","bootstraps"],["booteek","boutique"],["bootlaoder","bootloader"],["bootlaoders","bootloaders"],["bootoloader","bootloader"],["bootom","bottom"],["bootraping","bootstrapping"],["bootsram","bootram"],["bootsrap","bootstrap"],["bootstap","bootstrap"],["bootstapped","bootstrapped"],["bootstapping","bootstrapping"],["bootstaps","bootstraps"],["booundaries","boundaries"],["booundary","boundary"],["boquet","bouquet"],["borad","board"],["boradcast","broadcast"],["bording","boarding"],["bordreline","borderline"],["bordrelines","borderlines"],["borgwasy","bourgeoisie"],["borke","broke"],["borken","broken"],["borow","borrow"],["borwser","browsers"],["borwsers","browsers"],["bothe","both"],["boths","both"],["botifies","notifies"],["bottem","bottom"],["bottlenck","bottleneck"],["bottlencks","bottlenecks"],["bottlenect","bottleneck"],["bottlenects","bottlenecks"],["bottlneck","bottleneck"],["bottlnecks","bottlenecks"],["bottomborde","bottomborder"],["bottome","bottom"],["bottomn","bottom"],["bottonm","bottom"],["botttom","bottom"],["bouce","bounce"],["bouces","bounces"],["boudaries","boundaries"],["boudary","boundary"],["bouding","bounding"],["boudnaries","boundaries"],["boudnary","boundary"],["bouds","bounds"],["bouind","bound"],["bouinded","bounded"],["bouinding","bounding"],["bouinds","bounds"],["boun","bound"],["bounaaries","boundaries"],["bounaary","boundary"],["bounad","bound"],["bounadaries","boundaries"],["bounadary","boundary"],["bounaded","bounded"],["bounading","bounding"],["bounadries","boundaries"],["bounadry","boundary"],["bounads","bounds"],["bounardies","boundaries"],["bounardy","boundary"],["bounaries","boundaries"],["bounary","boundary"],["bounbdaries","boundaries"],["bounbdary","boundary"],["boundares","boundaries"],["boundaryi","boundary"],["boundarys","boundaries"],["bounday","boundary"],["boundays","boundaries"],["bounderies","boundaries"],["boundery","boundary"],["boundig","bounding"],["boundimg","bounding"],["boundin","bounding"],["boundrary","boundary"],["boundries","boundaries"],["boundry","boundary"],["bounduaries","boundaries"],["bouned","bounded"],["boungaries","boundaries"],["boungary","boundary"],["boungin","bounding"],["boungind","bounding"],["bounhdaries","boundaries"],["bounhdary","boundary"],["bounidng","bounding"],["bouning","bounding"],["bounnd","bound"],["bounndaries","boundaries"],["bounndary","boundary"],["bounnded","bounded"],["bounnding","bounding"],["bounnds","bounds"],["bounradies","boundaries"],["bounrady","boundary"],["bounraies","boundaries"],["bounraries","boundaries"],["bounrary","boundary"],["bounray","boundary"],["bouns","bounds"],["bounsaries","boundaries"],["bounsary","boundary"],["bounsd","bounds"],["bount","bound"],["bountries","boundaries"],["bountry","boundary"],["bounudaries","boundaries"],["bounudary","boundary"],["bounus","bonus"],["bouqet","bouquet"],["bouund","bound"],["bouunded","bounded"],["bouunding","bounding"],["bouunds","bounds"],["bouy","buoy"],["bouyancy","buoyancy"],["bouyant","buoyant"],["boyant","buoyant"],["boycot","boycott"],["bracese","braces"],["brach","branch"],["brackeds","brackets"],["bracketwith","bracket with"],["brackground","background"],["bradcast","broadcast"],["brakpoint","breakpoint"],["brakpoints","breakpoints"],["branchces","branches"],["brancheswith","branches with"],["branchs","branches"],["branchsi","branches"],["branck","branch"],["branckes","branches"],["brancket","bracket"],["branckets","brackets"],["brane","brain"],["braodcast","broadcast"],["braodcasted","broadcasted"],["braodcasts","broadcasts"],["Brasillian","Brazilian"],["brazeer","brassiere"],["brazillian","Brazilian"],["breakes","breaks"],["breakthough","breakthrough"],["breakthroughts","breakthroughs"],["breakthruogh","breakthrough"],["breakthruoghs","breakthroughs"],["breal","break"],["breefly","briefly"],["brefore","before"],["breif","brief"],["breifly","briefly"],["brekpoint","breakpoint"],["brekpoints","breakpoints"],["breshed","brushed"],["breshes","brushes"],["breshing","brushing"],["brethen","brethren"],["bretheren","brethren"],["brfore","before"],["bridg","bridge"],["brievely","briefly"],["brievety","brevity"],["brigde","bridge"],["brige","bridge"],["briges","bridges"],["brighness","brightness"],["brightnesss","brightness"],["brigth","bright"],["brigthnes","brightness"],["brigthness","brightness"],["briliant","brilliant"],["brilinear","bilinear"],["brillant","brilliant"],["brimestone","brimstone"],["bringin","bringing"],["bringtofont","bringtofront"],["brite","bright"],["briten","brighten"],["britened","brightened"],["britener","brightener"],["briteners","brighteners"],["britenes","brightenes"],["britening","brightening"],["briter","brighter"],["Britian","Britain"],["Brittish","British"],["brnach","branch"],["brnaches","branches"],["broacast","broadcast"],["broacasted","broadcast"],["broacasting","broadcasting"],["broacasts","broadcasts"],["broadacasting","broadcasting"],["broadcas","broadcast"],["broadcase","broadcast"],["broadcasti","broadcast"],["broadcat","broadcast"],["broady","broadly"],["broardcast","broadcast"],["broblematic","problematic"],["brocher","brochure"],["brocken","broken"],["brockend","broken"],["brockened","broken"],["brocolee","broccoli"],["brodcast","broadcast"],["broked","broken"],["brokem","broken"],["brokend","broken"],["brokened","broken"],["brokeness","brokenness"],["bronken","broken"],["brosable","browsable"],["broser","browser"],["brosers","browsers"],["brosing","browsing"],["broswable","browsable"],["broswe","browse"],["broswed","browsed"],["broswer","browser"],["broswers","browsers"],["broswing","browsing"],["brower","browser"],["browers","browsers"],["browing","browsing"],["browseable","browsable"],["browswable","browsable"],["browswe","browse"],["browswed","browsed"],["browswer","browser"],["browswers","browsers"],["browswing","browsing"],["brutaly","brutally"],["brwosable","browsable"],["brwose","browse"],["brwosed","browsed"],["brwoser","browser"],["brwosers","browsers"],["brwosing","browsing"],["btye","byte"],["btyes","bytes"],["buad","baud"],["bubbless","bubbles"],["Buddah","Buddha"],["Buddist","Buddhist"],["bufefr","buffer"],["bufer","buffer"],["bufers","buffers"],["buffereed","buffered"],["bufferent","buffered"],["bufferes","buffers"],["bufferred","buffered"],["buffeur","buffer"],["bufffer","buffer"],["bufffers","buffers"],["buffor","buffer"],["buffors","buffers"],["buffr","buffer"],["buffred","buffered"],["buffring","buffering"],["bufufer","buffer"],["buggest","biggest"],["bugous","bogus"],["buguous","bogus"],["bugus","bogus"],["buid","build"],["buider","builder"],["buiders","builders"],["buiding","building"],["buidl","build"],["buidling","building"],["buidlings","buildings"],["buidls","builds"],["buiild","build"],["buik","bulk"],["build-dependancies","build-dependencies"],["build-dependancy","build-dependency"],["build-in","built-in"],["builded","built"],["buildpackge","buildpackage"],["buildpackges","buildpackages"],["builing","building"],["builings","buildings"],["buillt","built"],["built-time","build-time"],["builter","builder"],["builters","builders"],["buinseses","businesses"],["buinsess","business"],["buinsesses","businesses"],["buipd","build"],["buisness","business"],["buisnessman","businessman"],["buissiness","business"],["buissinesses","businesses"],["buit","built"],["buitin","builtin"],["buitins","builtins"],["buitlin","builtin"],["buitlins","builtins"],["buitton","button"],["buittons","buttons"],["buld","build"],["bulding","building"],["bulds","builds"],["bulid","build"],["buliding","building"],["bulids","builds"],["bulit","built"],["bulitin","built-in"],["bulle","bullet"],["bulletted","bulleted"],["bulnerabilities","vulnerabilities"],["bulnerability","vulnerability"],["bulnerable","vulnerable"],["bult","built"],["bult-in","built-in"],["bultin","builtin"],["bumby","bumpy"],["bumpded","bumped"],["bumpt","bump"],["bumpted","bumped"],["bumpter","bumper"],["bumpting","bumping"],["bundel","bundle"],["bundeled","bundled"],["bundels","bundles"],["buoancy","buoyancy"],["bureauracy","bureaucracy"],["burocratic","bureaucratic"],["burried","buried"],["burtst","burst"],["busines","business"],["busness","business"],["bussiness","business"],["bussy","busy"],["buton","button"],["butons","buttons"],["butterly","butterfly"],["buttong","button"],["buttonn","button"],["buttonns","buttons"],["buttosn","buttons"],["buttton","button"],["butttons","buttons"],["buufers","buffers"],["buuild","build"],["buuilds","builds"],["bve","be"],["bwtween","between"],["bypas","bypass"],["bypased","bypassed"],["bypasing","bypassing"],["bytetream","bytestream"],["bytetreams","bytestreams"],["cabint","cabinet"],["cabints","cabinets"],["cacahe","cache"],["cacahes","caches"],["cace","cache"],["cachable","cacheable"],["cacheed","cached"],["cacheing","caching"],["cachline","cacheline"],["cacl","calc"],["caclate","calculate"],["cacluate","calculate"],["cacluated","calculated"],["cacluater","calculator"],["cacluates","calculates"],["cacluating","calculating"],["cacluation","calculation"],["cacluations","calculations"],["cacluator","calculator"],["caclucate","calculate"],["caclucation","calculation"],["caclucations","calculations"],["caclucator","calculator"],["caclulate","calculate"],["caclulated","calculated"],["caclulates","calculates"],["caclulating","calculating"],["caclulation","calculation"],["caclulations","calculations"],["caculate","calculate"],["caculated","calculated"],["caculater","calculator"],["caculates","calculates"],["caculating","calculating"],["caculation","calculation"],["caculations","calculations"],["caculator","calculator"],["cacuses","caucuses"],["cadidate","candidate"],["caefully","carefully"],["Caesarian","Caesarean"],["cahacter","character"],["cahacters","characters"],["cahange","change"],["cahanged","changed"],["cahanges","changes"],["cahanging","changing"],["cahannel","channel"],["caharacter","character"],["caharacters","characters"],["caharcter","character"],["caharcters","characters"],["cahc","cache"],["cahce","cache"],["cahced","cached"],["cahces","caches"],["cahche","cache"],["cahchedb","cachedb"],["cahches","caches"],["cahcing","caching"],["cahcs","caches"],["cahdidate","candidate"],["cahdidates","candidates"],["cahe","cache"],["cahes","caches"],["cahgne","change"],["cahgned","changed"],["cahgner","changer"],["cahgners","changers"],["cahgnes","changes"],["cahgning","changing"],["cahhel","channel"],["cahhels","channels"],["cahined","chained"],["cahing","caching"],["cahining","chaining"],["cahnge","change"],["cahnged","changed"],["cahnges","changes"],["cahnging","changing"],["cahnnel","channel"],["cahnnels","channels"],["cahr","char"],["cahracter","character"],["cahracters","characters"],["cahrging","charging"],["cahrs","chars"],["calaber","caliber"],["calalog","catalog"],["calback","callback"],["calbirate","calibrate"],["calbirated","calibrated"],["calbirates","calibrates"],["calbirating","calibrating"],["calbiration","calibration"],["calbirations","calibrations"],["calbirator","calibrator"],["calbirators","calibrators"],["calcable","calculable"],["calcalate","calculate"],["calciulate","calculate"],["calciulating","calculating"],["calclation","calculation"],["calcluate","calculate"],["calcluated","calculated"],["calcluates","calculates"],["calclulate","calculate"],["calclulated","calculated"],["calclulates","calculates"],["calclulating","calculating"],["calclulation","calculation"],["calclulations","calculations"],["calcualate","calculate"],["calcualated","calculated"],["calcualates","calculates"],["calcualating","calculating"],["calcualation","calculation"],["calcualations","calculations"],["calcualte","calculate"],["calcualted","calculated"],["calcualter","calculator"],["calcualtes","calculates"],["calcualting","calculating"],["calcualtion","calculation"],["calcualtions","calculations"],["calcualtor","calculator"],["calcuate","calculate"],["calcuated","calculated"],["calcuates","calculates"],["calcuation","calculation"],["calcuations","calculations"],["calculaion","calculation"],["calculataed","calculated"],["calculater","calculator"],["calculatted","calculated"],["calculatter","calculator"],["calculattion","calculation"],["calculattions","calculations"],["calculaution","calculation"],["calculautions","calculations"],["calculcate","calculate"],["calculcation","calculation"],["calculed","calculated"],["calculs","calculus"],["calcultate","calculate"],["calcultated","calculated"],["calcultater","calculator"],["calcultating","calculating"],["calcultator","calculator"],["calculting","calculating"],["calculuations","calculations"],["calcurate","calculate"],["calcurated","calculated"],["calcurates","calculates"],["calcurating","calculating"],["calcutate","calculate"],["calcutated","calculated"],["calcutates","calculates"],["calcutating","calculating"],["caleed","called"],["caleee","callee"],["calees","callees"],["caler","caller"],["calescing","coalescing"],["caliased","aliased"],["calibraiton","calibration"],["calibraitons","calibrations"],["calibrte","calibrate"],["calibrtion","calibration"],["caligraphy","calligraphy"],["calilng","calling"],["caliming","claiming"],["callabck","callback"],["callabcks","callbacks"],["callack","callback"],["callbacl","callback"],["callbacsk","callback"],["callbak","callback"],["callbakc","callback"],["callbakcs","callbacks"],["callbck","callback"],["callcack","callback"],["callcain","callchain"],["calld","called"],["calle","called"],["callef","called"],["callibrate","calibrate"],["callibrated","calibrated"],["callibrates","calibrates"],["callibrating","calibrating"],["callibration","calibration"],["callibrations","calibrations"],["callibri","calibri"],["callig","calling"],["callint","calling"],["callled","called"],["calllee","callee"],["calloed","called"],["callsr","calls"],["calsses","classes"],["calucalte","calculate"],["calucalted","calculated"],["calucaltes","calculates"],["calucalting","calculating"],["calucaltion","calculation"],["calucaltions","calculations"],["calucate","calculate"],["caluclate","calculate"],["caluclated","calculated"],["caluclater","calculator"],["caluclates","calculates"],["caluclating","calculating"],["caluclation","calculation"],["caluclations","calculations"],["caluclator","calculator"],["caluculate","calculate"],["caluculated","calculated"],["caluculates","calculates"],["caluculating","calculating"],["caluculation","calculation"],["caluculations","calculations"],["calue","value"],["calulate","calculate"],["calulated","calculated"],["calulater","calculator"],["calulates","calculates"],["calulating","calculating"],["calulation","calculation"],["calulations","calculations"],["Cambrige","Cambridge"],["camoflage","camouflage"],["camoflague","camouflage"],["campagin","campaign"],["campain","campaign"],["campaing","campaign"],["campains","campaigns"],["camparing","comparing"],["can;t","can't"],["canadan","canadian"],["canbe","can be"],["cancelaltion","cancellation"],["cancelation","cancellation"],["cancelations","cancellations"],["canceles","cancels"],["cancell","cancel"],["cancelles","cancels"],["cances","cancel"],["cancl","cancel"],["cancle","cancel"],["cancled","canceled"],["candadate","candidate"],["candadates","candidates"],["candiate","candidate"],["candiates","candidates"],["candidat","candidate"],["candidats","candidates"],["candidiate","candidate"],["candidiates","candidates"],["candinate","candidate"],["candinates","candidates"],["canditate","candidate"],["canditates","candidates"],["cange","change"],["canged","changed"],["canges","changes"],["canging","changing"],["canidate","candidate"],["canidates","candidates"],["cann't","can't"],["cann","can"],["cannister","canister"],["cannisters","canisters"],["cannnot","cannot"],["cannobt","cannot"],["cannonical","canonical"],["cannonicalize","canonicalize"],["cannont","cannot"],["cannotation","connotation"],["cannotations","connotations"],["cannott","cannot"],["canonalize","canonicalize"],["canonalized","canonicalized"],["canonalizes","canonicalizes"],["canonalizing","canonicalizing"],["canoncial","canonical"],["canonicalizations","canonicalization"],["canonival","canonical"],["canot","cannot"],["cant'","can't"],["cant't","can't"],["cant;","can't"],["cantact","contact"],["cantacted","contacted"],["cantacting","contacting"],["cantacts","contacts"],["canvase","canvas"],["caost","coast"],["capabable","capable"],["capabicity","capability"],["capabiities","capabilities"],["capabiity","capability"],["capabilies","capabilities"],["capabiliites","capabilities"],["capabilites","capabilities"],["capabilitieis","capabilities"],["capabilitiies","capabilities"],["capabilitires","capabilities"],["capabilitiy","capability"],["capabillity","capability"],["capabilties","capabilities"],["capabiltity","capability"],["capabilty","capability"],["capabitilies","capabilities"],["capablilities","capabilities"],["capablities","capabilities"],["capablity","capability"],["capaciy","capacity"],["capalize","capitalize"],["capalized","capitalized"],["capapbilities","capabilities"],["capatibilities","capabilities"],["capbability","capability"],["capbale","capable"],["capela","capella"],["caperbility","capability"],["Capetown","Cape Town"],["capibilities","capabilities"],["capible","capable"],["capitolize","capitalize"],["cappable","capable"],["captable","capable"],["captial","capital"],["captrure","capture"],["captued","captured"],["capturd","captured"],["caputre","capture"],["caputred","captured"],["caputres","captures"],["caputure","capture"],["carachter","character"],["caracter","character"],["caractere","character"],["caracteristic","characteristic"],["caracterized","characterized"],["caracters","characters"],["carbus","cardbus"],["carefuly","carefully"],["careing","caring"],["carfull","careful"],["cariage","carriage"],["caridge","carriage"],["cariier","carrier"],["carismatic","charismatic"],["Carmalite","Carmelite"],["Carnagie","Carnegie"],["Carnagie-Mellon","Carnegie-Mellon"],["Carnigie","Carnegie"],["Carnigie-Mellon","Carnegie-Mellon"],["carniverous","carnivorous"],["caronavirus","coronavirus"],["caronaviruses","coronaviruses"],["carreer","career"],["carreid","carried"],["carrers","careers"],["carret","caret"],["carriadge","carriage"],["Carribbean","Caribbean"],["Carribean","Caribbean"],["carrien","carrier"],["carrige","carriage"],["carrrier","carrier"],["carryintg","carrying"],["carryng","carrying"],["cartain","certain"],["cartdridge","cartridge"],["cartensian","Cartesian"],["Carthagian","Carthaginian"],["carthesian","cartesian"],["carthographer","cartographer"],["cartiesian","cartesian"],["cartilege","cartilage"],["cartilidge","cartilage"],["cartrige","cartridge"],["caryy","carry"],["cascace","cascade"],["case-insensative","case-insensitive"],["case-insensetive","case-insensitive"],["case-insensistive","case-insensitive"],["case-insensitiv","case-insensitive"],["case-insensitivy","case-insensitivity"],["case-insensitve","case-insensitive"],["case-insenstive","case-insensitive"],["case-insentive","case-insensitive"],["case-insentivite","case-insensitive"],["case-insesitive","case-insensitive"],["case-intensitive","case-insensitive"],["case-sensative","case-sensitive"],["case-sensetive","case-sensitive"],["case-sensistive","case-sensitive"],["case-sensitiv","case-sensitive"],["case-sensitve","case-sensitive"],["case-senstive","case-sensitive"],["case-sentive","case-sensitive"],["case-sentivite","case-sensitive"],["case-sesitive","case-sensitive"],["case-unsensitive","case-insensitive"],["caseinsensative","case-insensitive"],["caseinsensetive","case-insensitive"],["caseinsensistive","case-insensitive"],["caseinsensitiv","case-insensitive"],["caseinsensitve","case-insensitive"],["caseinsenstive","case-insensitive"],["caseinsentive","case-insensitive"],["caseinsentivite","case-insensitive"],["caseinsesitive","case-insensitive"],["caseintensitive","case-insensitive"],["caselessely","caselessly"],["casesensative","case-sensitive"],["casesensetive","casesensitive"],["casesensistive","case-sensitive"],["casesensitiv","case-sensitive"],["casesensitve","case-sensitive"],["casesenstive","case-sensitive"],["casesentive","case-sensitive"],["casesentivite","case-sensitive"],["casesesitive","case-sensitive"],["casette","cassette"],["cashe","cache"],["casion","caisson"],["caspule","capsule"],["caspules","capsules"],["cassawory","cassowary"],["cassowarry","cassowary"],["casue","cause"],["casued","caused"],["casues","causes"],["casuing","causing"],["casulaties","casualties"],["casulaty","casualty"],["cataalogue","catalogue"],["catagori","category"],["catagories","categories"],["catagorization","categorization"],["catagorizations","categorizations"],["catagorized","categorized"],["catagory","category"],["catapillar","caterpillar"],["catapillars","caterpillars"],["catapiller","caterpillar"],["catapillers","caterpillars"],["catastronphic","catastrophic"],["catastropic","catastrophic"],["catastropically","catastrophically"],["catastrphic","catastrophic"],["catche","catch"],["catched","caught"],["catchi","catch"],["catchs","catches"],["categogical","categorical"],["categogically","categorically"],["categogies","categories"],["categogy","category"],["cateogrical","categorical"],["cateogrically","categorically"],["cateogries","categories"],["cateogry","category"],["catepillar","caterpillar"],["catepillars","caterpillars"],["catergorize","categorize"],["catergorized","categorized"],["caterpilar","caterpillar"],["caterpilars","caterpillars"],["caterpiller","caterpillar"],["caterpillers","caterpillars"],["catgorical","categorical"],["catgorically","categorically"],["catgories","categories"],["catgory","category"],["cathlic","catholic"],["catholocism","catholicism"],["catloag","catalog"],["catloaged","cataloged"],["catloags","catalogs"],["catory","factory"],["catpture","capture"],["catpure","capture"],["catpured","captured"],["catpures","captures"],["catterpilar","caterpillar"],["catterpilars","caterpillars"],["catterpillar","caterpillar"],["catterpillars","caterpillars"],["cattleship","battleship"],["caucasion","caucasian"],["cauched","caught"],["caugt","caught"],["cauhgt","caught"],["cauing","causing"],["causees","causes"],["causion","caution"],["causioned","cautioned"],["causions","cautions"],["causious","cautious"],["cavaet","caveat"],["cavaets","caveats"],["ccahe","cache"],["ccale","scale"],["ccertificate","certificate"],["ccertificated","certificated"],["ccertificates","certificates"],["ccertification","certification"],["ccessible","accessible"],["cche","cache"],["cconfiguration","configuration"],["ccordinate","coordinate"],["ccordinates","coordinates"],["ccordinats","coordinates"],["ccoutant","accountant"],["ccpcheck","cppcheck"],["ccurred","occurred"],["ccustom","custom"],["ccustoms","customs"],["cdecompress","decompress"],["ceartype","cleartype"],["Ceasar","Caesar"],["ceate","create"],["ceated","created"],["ceates","creates"],["ceating","creating"],["ceation","creation"],["ceck","check"],["cecked","checked"],["cecker","checker"],["cecking","checking"],["cecks","checks"],["cedential","credential"],["cedentials","credentials"],["cehck","check"],["cehcked","checked"],["cehcker","checker"],["cehcking","checking"],["cehcks","checks"],["Celcius","Celsius"],["celles","cells"],["cellpading","cellpadding"],["cellst","cells"],["cellxs","cells"],["celsuis","celsius"],["cementary","cemetery"],["cemetarey","cemetery"],["cemetaries","cemeteries"],["cemetary","cemetery"],["cenario","scenario"],["cenarios","scenarios"],["cencter","center"],["cencus","census"],["cengter","center"],["censequence","consequence"],["centain","certain"],["cententenial","centennial"],["centerd","centered"],["centisencond","centisecond"],["centisenconds","centiseconds"],["centrifugeable","centrifugable"],["centrigrade","centigrade"],["centriod","centroid"],["centriods","centroids"],["centruies","centuries"],["centruy","century"],["centuties","centuries"],["centuty","century"],["cerain","certain"],["cerainly","certainly"],["cerainty","certainty"],["cerate","create"],["cereates","creates"],["cerimonial","ceremonial"],["cerimonies","ceremonies"],["cerimonious","ceremonious"],["cerimony","ceremony"],["ceromony","ceremony"],["certaily","certainly"],["certaincy","certainty"],["certainity","certainty"],["certaint","certain"],["certaion","certain"],["certan","certain"],["certficate","certificate"],["certficated","certificated"],["certficates","certificates"],["certfication","certification"],["certfications","certifications"],["certficiate","certificate"],["certficiated","certificated"],["certficiates","certificates"],["certficiation","certification"],["certficiations","certifications"],["certfied","certified"],["certfy","certify"],["certian","certain"],["certianly","certainly"],["certicate","certificate"],["certicated","certificated"],["certicates","certificates"],["certication","certification"],["certicicate","certificate"],["certifacte","certificate"],["certifacted","certificated"],["certifactes","certificates"],["certifaction","certification"],["certifcate","certificate"],["certifcated","certificated"],["certifcates","certificates"],["certifcation","certification"],["certifciate","certificate"],["certifciated","certificated"],["certifciates","certificates"],["certifciation","certification"],["certifiate","certificate"],["certifiated","certificated"],["certifiates","certificates"],["certifiating","certificating"],["certifiation","certification"],["certifiations","certifications"],["certificat","certificate"],["certificatd","certificated"],["certificaton","certification"],["certificats","certificates"],["certifice","certificate"],["certificed","certificated"],["certifices","certificates"],["certificion","certification"],["certificste","certificate"],["certificsted","certificated"],["certificstes","certificates"],["certificsting","certificating"],["certificstion","certification"],["certifificate","certificate"],["certifificated","certificated"],["certifificates","certificates"],["certifification","certification"],["certiticate","certificate"],["certiticated","certificated"],["certiticates","certificates"],["certitication","certification"],["cetain","certain"],["cetainly","certainly"],["cetainty","certainty"],["cetrainly","certainly"],["cetting","setting"],["Cgywin","Cygwin"],["chaarges","charges"],["chacacter","character"],["chacacters","characters"],["chache","cache"],["chached","cached"],["chacheline","cacheline"],["chaeck","check"],["chaecked","checked"],["chaecker","checker"],["chaecking","checking"],["chaecks","checks"],["chagne","change"],["chagned","changed"],["chagnes","changes"],["chahged","changed"],["chahging","changing"],["chaied","chained"],["chaing","chain"],["chalenging","challenging"],["challanage","challenge"],["challange","challenge"],["challanged","challenged"],["challanges","challenges"],["challege","challenge"],["chambre","chamber"],["chambres","chambers"],["Champange","Champagne"],["chanage","change"],["chanaged","changed"],["chanager","changer"],["chanages","changes"],["chanaging","changing"],["chanceled","canceled"],["chanceling","canceling"],["chanched","changed"],["chaneged","changed"],["chaneging","changing"],["chanel","channel"],["chanell","channel"],["chanels","channels"],["changable","changeable"],["changeble","changeable"],["changeing","changing"],["changge","change"],["changged","changed"],["changgeling","changeling"],["changges","changes"],["changlog","changelog"],["changuing","changing"],["chanined","chained"],["chaninging","changing"],["chanllenge","challenge"],["chanllenging","challenging"],["channael","channel"],["channe","channel"],["channeles","channels"],["channl","channel"],["channle","channel"],["channles","channels"],["channnel","channel"],["channnels","channels"],["chanses","chances"],["chaper","chapter"],["characaters","characters"],["characer","character"],["characers","characters"],["characeter","character"],["characeters","characters"],["characetrs","characters"],["characher","character"],["charachers","characters"],["charachter","character"],["charachters","characters"],["characstyle","charstyle"],["charactar","character"],["charactaristic","characteristic"],["charactaristics","characteristics"],["charactars","characters"],["characte","character"],["charactear","character"],["charactears","characters"],["characted","character"],["characteds","characters"],["characteer","character"],["characteers","characters"],["characteisation","characterisation"],["characteization","characterization"],["characteor","character"],["characteors","characters"],["characterclasses","character classes"],["characteres","characters"],["characterisic","characteristic"],["characterisically","characteristically"],["characterisicly","characteristically"],["characterisics","characteristics"],["characterisitic","characteristic"],["characterisitics","characteristics"],["characteristicly","characteristically"],["characteritic","characteristic"],["characteritics","characteristics"],["characteritisc","characteristic"],["characteritiscs","characteristics"],["charactersistic","characteristic"],["charactersistically","characteristically"],["charactersistics","characteristics"],["charactersitic","characteristic"],["charactersm","characters"],["characterss","characters"],["characterstic","characteristic"],["characterstically","characteristically"],["characterstics","characteristics"],["charactertistic","characteristic"],["charactertistically","characteristically"],["charactertistics","characteristics"],["charactes","characters"],["charactet","character"],["characteter","character"],["characteteristic","characteristic"],["characteteristics","characteristics"],["characteters","characters"],["charactetistic","characteristic"],["charactetistics","characteristics"],["charactetr","character"],["charactetrs","characters"],["charactets","characters"],["characther","character"],["charactiristic","characteristic"],["charactiristically","characteristically"],["charactiristics","characteristics"],["charactor","character"],["charactors","characters"],["charactristic","characteristic"],["charactristically","characteristically"],["charactristics","characteristics"],["charactrs","characters"],["characts","characters"],["characture","character"],["charakter","character"],["charakters","characters"],["chararacter","character"],["chararacters","characters"],["chararcter","character"],["chararcters","characters"],["charas","chars"],["charascter","character"],["charascters","characters"],["charasmatic","charismatic"],["charater","character"],["charaterize","characterize"],["charaterized","characterized"],["charaters","characters"],["charator","character"],["charators","characters"],["charcater","character"],["charcter","character"],["charcteristic","characteristic"],["charcteristics","characteristics"],["charcters","characters"],["charctor","character"],["charctors","characters"],["charecter","character"],["charecters","characters"],["charector","character"],["chargind","charging"],["charicter","character"],["charicters","characters"],["charictor","character"],["charictors","characters"],["chariman","chairman"],["charistics","characteristics"],["charizma","charisma"],["chartroose","chartreuse"],["chassy","chassis"],["chatacter","character"],["chatacters","characters"],["chatch","catch"],["chater","chapter"],["chawk","chalk"],["chcek","check"],["chceked","checked"],["chceking","checking"],["chceks","checks"],["chck","check"],["chckbox","checkbox"],["cheapeast","cheapest"],["cheatta","cheetah"],["chec","check"],["checbox","checkbox"],["checboxes","checkboxes"],["checg","check"],["checged","checked"],["checheckpoit","checkpoint"],["checheckpoits","checkpoints"],["cheched","checked"],["cheching","checking"],["chechk","check"],["chechs","checks"],["checkalaises","checkaliases"],["checkcsum","checksum"],["checkd","checked"],["checkes","checks"],["checket","checked"],["checkk","check"],["checkng","checking"],["checkoslovakia","czechoslovakia"],["checkox","checkbox"],["checkpoing","checkpoint"],["checkstum","checksum"],["checkstuming","checksumming"],["checkstumming","checksumming"],["checkstums","checksums"],["checksume","checksum"],["checksumed","checksummed"],["checksuming","checksumming"],["checkt","checked"],["checkum","checksum"],["checkums","checksums"],["checkuot","checkout"],["checl","check"],["checled","checked"],["checling","checking"],["checls","checks"],["cheduling","scheduling"],["cheeper","cheaper"],["cheeta","cheetah"],["cheif","chief"],["cheifs","chiefs"],["chek","check"],["chekc","check"],["chekcing","checking"],["chekd","checked"],["cheked","checked"],["chekers","checkers"],["cheking","checking"],["cheks","checks"],["cheksum","checksum"],["cheksums","checksums"],["chello","cello"],["chemcial","chemical"],["chemcially","chemically"],["chemestry","chemistry"],["chemicaly","chemically"],["chenged","changed"],["chennel","channel"],["cherch","church"],["cherchs","churches"],["cherck","check"],["chercking","checking"],["chercks","checks"],["chescksums","checksums"],["chgange","change"],["chganged","changed"],["chganges","changes"],["chganging","changing"],["chidren","children"],["childbird","childbirth"],["childen","children"],["childeren","children"],["childern","children"],["childlren","children"],["chiledren","children"],["chilren","children"],["chineese","Chinese"],["chinense","Chinese"],["chinesse","Chinese"],["chipersuite","ciphersuite"],["chipersuites","ciphersuites"],["chipertext","ciphertext"],["chipertexts","ciphertexts"],["chipet","chipset"],["chipslect","chipselect"],["chipstes","chipsets"],["chiuldren","children"],["chked","checked"],["chnage","change"],["chnaged","changed"],["chnages","changes"],["chnaging","changing"],["chnge","change"],["chnged","changed"],["chnges","changes"],["chnging","changing"],["chnnel","channel"],["choclate","chocolate"],["choicing","choosing"],["choise","choice"],["choises","choices"],["choising","choosing"],["chooose","choose"],["choos","choose"],["choosen","chosen"],["chopipng","chopping"],["choronological","chronological"],["chosed","chose"],["choseen","chosen"],["choser","chooser"],["chosing","choosing"],["chossen","chosen"],["chowsing","choosing"],["chracter","character"],["chracters","characters"],["chractor","character"],["chractors","characters"],["chrminance","chrominance"],["chromum","chromium"],["chuch","church"],["chuks","chunks"],["chunaks","chunks"],["chunc","chunk"],["chunck","chunk"],["chuncked","chunked"],["chuncking","chunking"],["chuncks","chunks"],["chuncksize","chunksize"],["chuncs","chunks"],["chuned","chunked"],["churchs","churches"],["cick","click"],["cicrle","circle"],["cicruit","circuit"],["cicruits","circuits"],["cicular","circular"],["ciculars","circulars"],["cihpher","cipher"],["cihphers","ciphers"],["cilinder","cylinder"],["cilinders","cylinders"],["cilindrical","cylindrical"],["cilyndre","cylinder"],["cilyndres","cylinders"],["cilyndrs","cylinders"],["Cincinatti","Cincinnati"],["Cincinnatti","Cincinnati"],["cinfiguration","configuration"],["cinfigurations","configurations"],["cintaner","container"],["ciontrol","control"],["ciper","cipher"],["cipers","ciphers"],["cipersuite","ciphersuite"],["cipersuites","ciphersuites"],["cipertext","ciphertext"],["cipertexts","ciphertexts"],["ciphe","cipher"],["cipherntext","ciphertext"],["ciphersuit","ciphersuite"],["ciphersuits","ciphersuites"],["ciphersute","ciphersuite"],["ciphersutes","ciphersuites"],["cipheruite","ciphersuite"],["cipheruites","ciphersuites"],["ciphes","ciphers"],["ciphr","cipher"],["ciphrs","ciphers"],["cips","chips"],["circluar","circular"],["circluarly","circularly"],["circluars","circulars"],["circomvent","circumvent"],["circomvented","circumvented"],["circomvents","circumvents"],["circual","circular"],["circuitery","circuitry"],["circulaton","circulation"],["circumferance","circumference"],["circumferencial","circumferential"],["circumsicion","circumcision"],["circumstancial","circumstantial"],["circumstansial","circumstantial"],["circumstnce","circumstance"],["circumstnces","circumstances"],["circumstncial","circumstantial"],["circumstntial","circumstantial"],["circumvernt","circumvent"],["circunference","circumference"],["circunferences","circumferences"],["circunstance","circumstance"],["circunstances","circumstances"],["circunstantial","circumstantial"],["circustances","circumstances"],["circut","circuit"],["circuts","circuits"],["ciricle","circle"],["ciricles","circles"],["ciricuit","circuit"],["ciricuits","circuits"],["ciricular","circular"],["ciricularise","circularise"],["ciricularize","circularize"],["ciriculum","curriculum"],["cirilic","Cyrillic"],["cirillic","Cyrillic"],["ciritc","critic"],["ciritcal","critical"],["ciritcality","criticality"],["ciritcals","criticals"],["ciritcs","critics"],["ciriteria","criteria"],["ciritic","critic"],["ciritical","critical"],["ciriticality","criticality"],["ciriticals","criticals"],["ciritics","critics"],["cirlce","circle"],["cirle","circle"],["cirles","circles"],["cirsumstances","circumstances"],["cirtcuit","circuit"],["cirucal","circular"],["cirucit","circuit"],["cirucits","circuits"],["ciruclar","circular"],["ciruclation","circulation"],["ciruclator","circulator"],["cirucmflex","circumflex"],["cirucular","circular"],["cirucumstance","circumstance"],["cirucumstances","circumstances"],["ciruit","circuit"],["ciruits","circuits"],["cirumflex","circumflex"],["cirumstance","circumstance"],["cirumstances","circumstances"],["civillian","civilian"],["civillians","civilians"],["cjange","change"],["cjanged","changed"],["cjanges","changes"],["cjoice","choice"],["cjoices","choices"],["ckecksum","checksum"],["claaes","classes"],["claculate","calculate"],["claculation","calculation"],["claer","clear"],["claerer","clearer"],["claerly","clearly"],["claibscale","calibscale"],["claime","claim"],["claimes","claims"],["clame","claim"],["claread","cleared"],["clared","cleared"],["clarety","clarity"],["claring","clearing"],["clasic","classic"],["clasical","classical"],["clasically","classically"],["clasification","classification"],["clasified","classified"],["clasifies","classifies"],["clasify","classify"],["clasifying","classifying"],["clasroom","classroom"],["clasrooms","classrooms"],["classess","classes"],["classesss","classes"],["classifcation","classification"],["classifed","classified"],["classifer","classifier"],["classifers","classifiers"],["classificaion","classification"],["classrom","classroom"],["classroms","classrooms"],["classs","class"],["classses","classes"],["clatified","clarified"],["claus","clause"],["clcoksource","clocksource"],["clcosed","closed"],["clea","clean"],["cleaered","cleared"],["cleaing","cleaning"],["cleancacne","cleancache"],["cleaness","cleanness"],["cleanning","cleaning"],["cleannup","cleanup"],["cleanpu","cleanup"],["cleanpus","cleanups"],["cleantup","cleanup"],["cleareance","clearance"],["cleares","clears"],["clearified","clarified"],["clearifies","clarifies"],["clearify","clarify"],["clearifying","clarifying"],["clearling","clearing"],["clearnance","clearance"],["clearnances","clearances"],["clearouput","clearoutput"],["clearted","cleared"],["cleary","clearly"],["cleaup","cleanup"],["cleaups","cleanups"],["cleck","check"],["cleean","clean"],["cleen","clean"],["cleened","cleaned"],["cleens","cleans"],["cleff","clef"],["cleint's","client's"],["cleint","client"],["cleints","clients"],["clened","cleaned"],["clener","cleaner"],["clening","cleaning"],["cler","clear"],["clese","close"],["cleses","closes"],["clevely","cleverly"],["cliboard","clipboard"],["cliboards","clipboards"],["clibpoard","clipboard"],["clibpoards","clipboards"],["cliens","clients"],["cliensite","client-side"],["clienta","client"],["clientelle","clientele"],["clik","click"],["cliks","clicks"],["climer","climber"],["climers","climbers"],["climing","climbing"],["clincial","clinical"],["clinets","clients"],["clinicaly","clinically"],["clipboad","clipboard"],["clipboads","clipboards"],["clipoard","clipboard"],["clipoards","clipboards"],["clipoing","clipping"],["cliuent","client"],["cliuents","clients"],["clloud","cloud"],["cllouded","clouded"],["clloudes","clouds"],["cllouding","clouding"],["cllouds","clouds"],["cloack","cloak"],["cloacks","cloaks"],["cloberring","clobbering"],["clocksourc","clocksource"],["clockw\xEDse","clockwise"],["clock_getttime","clock_gettime"],["cloding","closing"],["cloes","close"],["cloesd","closed"],["cloesed","closed"],["cloesing","closing"],["clonning","cloning"],["clory","glory"],["clos","close"],["closeing","closing"],["closesly","closely"],["closig","closing"],["clossed","closed"],["clossing","closing"],["clossion","collision"],["clossions","collisions"],["cloude","cloud"],["cloudes","clouds"],["cloumn","column"],["cloumns","columns"],["clousre","closure"],["clsoe","close"],["clssroom","classroom"],["clssrooms","classrooms"],["cluase","clause"],["clumn","column"],["clumsly","clumsily"],["cluser","cluster"],["clusetr","cluster"],["clustred","clustered"],["cmak","cmake"],["cmmand","command"],["cmmanded","commanded"],["cmmanding","commanding"],["cmmands","commands"],["cmobination","combination"],["cmoputer","computer"],["cmoputers","computers"],["cna","can"],["cnannel","channel"],["cnat'","can't"],["cnat","can't"],["cnfiguration","configuration"],["cnfigure","configure"],["cnfigured","configured"],["cnfigures","configures"],["cnfiguring","configuring"],["cnosole","console"],["cnosoles","consoles"],["cntain","contain"],["cntains","contains"],["cnter","center"],["co-incided","coincided"],["co-opearte","co-operate"],["co-opeartes","co-operates"],["co-ordinate","coordinate"],["co-ordinates","coordinates"],["coalace","coalesce"],["coalaced","coalesced"],["coalacence","coalescence"],["coalacing","coalescing"],["coalaesce","coalesce"],["coalaesced","coalesced"],["coalaescence","coalescence"],["coalaescing","coalescing"],["coalascece","coalescence"],["coalascence","coalescence"],["coalase","coalesce"],["coalasece","coalescence"],["coalased","coalesced"],["coalasence","coalescence"],["coalases","coalesces"],["coalasing","coalescing"],["coalcece","coalescence"],["coalcence","coalescence"],["coalesc","coalesce"],["coalescsing","coalescing"],["coalesed","coalesced"],["coalesence","coalescence"],["coalessing","coalescing"],["coallate","collate"],["coallates","collates"],["coallating","collating"],["coallece","coalesce"],["coalleced","coalesced"],["coallecence","coalescence"],["coalleces","coalesces"],["coallecing","coalescing"],["coallee","coalesce"],["coalleed","coalesced"],["coalleence","coalescence"],["coallees","coalesces"],["coalleing","coalescing"],["coallesce","coalesce"],["coallesced","coalesced"],["coallesceing","coalescing"],["coallescence","coalescence"],["coallesces","coalesces"],["coallescing","coalescing"],["coallese","coalesce"],["coallesed","coalesced"],["coallesence","coalescence"],["coalleses","coalesces"],["coallesing","coalescing"],["coallesse","coalesce"],["coallessed","coalesced"],["coallessence","coalescence"],["coallesses","coalesces"],["coallessing","coalescing"],["coallision","collision"],["coallisions","collisions"],["coalsce","coalesce"],["coalscece","coalescence"],["coalsced","coalesced"],["coalscence","coalescence"],["coalscing","coalescing"],["coalsece","coalescence"],["coalseced","coalesced"],["coalsecense","coalescence"],["coalsence","coalescence"],["coaslescing","coalescing"],["cobining","combining"],["cobvers","covers"],["coccinele","coccinelle"],["coctail","cocktail"],["cocument","document"],["cocumentation","documentation"],["cocuments","document"],["codeing","coding"],["codepoitn","codepoint"],["codesc","codecs"],["codespel","codespell"],["codesream","codestream"],["codition","condition"],["coditioned","conditioned"],["coditions","conditions"],["codo","code"],["codos","codes"],["coduct","conduct"],["coducted","conducted"],["coducter","conductor"],["coducting","conducting"],["coductor","conductor"],["coducts","conducts"],["coeffcient","coefficient"],["coeffcients","coefficients"],["coefficeint","coefficient"],["coefficeints","coefficients"],["coefficent","coefficient"],["coefficents","coefficients"],["coefficiens","coefficients"],["coefficientss","coefficients"],["coeffiecient","coefficient"],["coeffiecients","coefficients"],["coeffient","coefficient"],["coeffients","coefficients"],["coeficent","coefficient"],["coeficents","coefficients"],["coeficient","coefficient"],["coeficients","coefficients"],["coelesce","coalesce"],["coercable","coercible"],["coerceion","coercion"],["cofeee","coffee"],["cofficient","coefficient"],["cofficients","coefficients"],["cofidence","confidence"],["cofiguration","configuration"],["cofigure","configure"],["cofigured","configured"],["cofigures","configures"],["cofiguring","configuring"],["cofirm","confirm"],["cofirmation","confirmation"],["cofirmations","confirmations"],["cofirmed","confirmed"],["cofirming","confirming"],["cofirms","confirms"],["coform","conform"],["cofrim","confirm"],["cofrimation","confirmation"],["cofrimations","confirmations"],["cofrimed","confirmed"],["cofriming","confirming"],["cofrims","confirms"],["cognizent","cognizant"],["coherance","coherence"],["coherancy","coherency"],["coherant","coherent"],["coherantly","coherently"],["coice","choice"],["coincedentally","coincidentally"],["coinitailize","coinitialize"],["coinside","coincide"],["coinsided","coincided"],["coinsidence","coincidence"],["coinsident","coincident"],["coinsides","coincides"],["coinsiding","coinciding"],["cointain","contain"],["cointained","contained"],["cointaining","containing"],["cointains","contains"],["cokies","cookies"],["colaboration","collaboration"],["colaborations","collaborations"],["colateral","collateral"],["coldplg","coldplug"],["colected","collected"],["colection","collection"],["colections","collections"],["colelction","collection"],["colelctive","collective"],["colerscheme","colorscheme"],["colescing","coalescing"],["colision","collision"],["colission","collision"],["collaberative","collaborative"],["collaction","collection"],["collaobrative","collaborative"],["collaps","collapse"],["collapsable","collapsible"],["collasion","collision"],["collaspe","collapse"],["collasped","collapsed"],["collaspes","collapses"],["collaspible","collapsible"],["collasping","collapsing"],["collationg","collation"],["collborative","collaborative"],["collecing","collecting"],["collecion","collection"],["collecions","collections"],["colleciton","collection"],["collecitons","collections"],["collectin","collection"],["collecton","collection"],["collectons","collections"],["colleection","collection"],["collegue","colleague"],["collegues","colleagues"],["collektion","collection"],["colletion","collection"],["collidies","collides"],["collissions","collisions"],["collistion","collision"],["collistions","collisions"],["colllapses","collapses"],["collocalized","colocalized"],["collonade","colonnade"],["collonies","colonies"],["collony","colony"],["collorscheme","colorscheme"],["collosal","colossal"],["collpase","collapse"],["collpased","collapsed"],["collpases","collapses"],["collpasing","collapsing"],["collsion","collision"],["collsions","collisions"],["collumn","column"],["collumns","columns"],["colmn","column"],["colmns","columns"],["colmuned","columned"],["coloer","color"],["coloeration","coloration"],["coloered","colored"],["coloering","coloring"],["coloers","colors"],["coloful","colorful"],["colomn","column"],["colomns","columns"],["colon-seperated","colon-separated"],["colonizators","colonizers"],["coloringh","coloring"],["colorizoer","colorizer"],["colorpsace","colorspace"],["colorpsaces","colorspaces"],["colose","close"],["coloum","column"],["coloumn","column"],["coloumns","columns"],["coloums","columns"],["colourpsace","colourspace"],["colourpsaces","colourspaces"],["colsed","closed"],["colum","column"],["columm","column"],["colummn","column"],["colummns","columns"],["columms","columns"],["columnn","column"],["columnns","columns"],["columnss","columns"],["columnular","columnar"],["colums","columns"],["columsn","columns"],["colunns","columns"],["comammand","command"],["comamnd","command"],["comamnd-line","command-line"],["comamnded","commanded"],["comamnding","commanding"],["comamndline","commandline"],["comamnds","commands"],["comand","command"],["comand-line","command-line"],["comanded","commanded"],["comanding","commanding"],["comandline","commandline"],["comando","commando"],["comandos","commandos"],["comands","commands"],["comany","company"],["comapany","company"],["comapared","compared"],["comapatibility","compatibility"],["comapatible","compatible"],["comapletion","completion"],["comapnies","companies"],["comapny","company"],["comapre","compare"],["comapring","comparing"],["comaprison","comparison"],["comaptibele","compatible"],["comaptibelities","compatibilities"],["comaptibelity","compatibility"],["comaptible","compatible"],["comarators","comparators"],["comback","comeback"],["combained","combined"],["combanations","combinations"],["combatibility","compatibility"],["combatible","compatible"],["combiantion","combination"],["combiation","combination"],["combiations","combinations"],["combinate","combine"],["combinateion","combination"],["combinateions","combinations"],["combinatins","combinations"],["combinatio","combination"],["combinatios","combinations"],["combinaton","combination"],["combinatorical","combinatorial"],["combinbe","combined"],["combind","combined"],["combinded","combined"],["combiniation","combination"],["combiniations","combinations"],["combinine","combine"],["combintaion","combination"],["combintaions","combinations"],["combusion","combustion"],["comceptually","conceptually"],["comdemnation","condemnation"],["comect","connect"],["comected","connected"],["comecting","connecting"],["comectivity","connectivity"],["comedlib","comedilib"],["comemmorates","commemorates"],["comemoretion","commemoration"],["coment","comment"],["comented","commented"],["comenting","commenting"],["coments","comments"],["comfirm","confirm"],["comflicting","conflicting"],["comformance","conformance"],["comiled","compiled"],["comilers","compilers"],["comination","combination"],["comision","commission"],["comisioned","commissioned"],["comisioner","commissioner"],["comisioning","commissioning"],["comisions","commissions"],["comission","commission"],["comissioned","commissioned"],["comissioner","commissioner"],["comissioning","commissioning"],["comissions","commissions"],["comit","commit"],["comited","committed"],["comitee","committee"],["comiting","committing"],["comits","commits"],["comitted","committed"],["comittee","committee"],["comittees","committees"],["comitter","committer"],["comitting","committing"],["comittish","committish"],["comlain","complain"],["comlained","complained"],["comlainer","complainer"],["comlaining","complaining"],["comlains","complains"],["comlaint","complaint"],["comlaints","complaints"],["comlete","complete"],["comleted","completed"],["comletely","completely"],["comletion","completion"],["comletly","completely"],["comlex","complex"],["comlexity","complexity"],["comlpeter","completer"],["comma-separeted","comma-separated"],["commad","command"],["commadn","command"],["commadn-line","command-line"],["commadnline","commandline"],["commadns","commands"],["commads","commands"],["commandi","command"],["commandoes","commandos"],["commannd","command"],["commans","commands"],["commansd","commands"],["commect","connect"],["commected","connected"],["commecting","connecting"],["commectivity","connectivity"],["commedic","comedic"],["commemerative","commemorative"],["commemmorate","commemorate"],["commemmorating","commemorating"],["commenet","comment"],["commenetd","commented"],["commeneted","commented"],["commenstatus","commentstatus"],["commerical","commercial"],["commerically","commercially"],["commericial","commercial"],["commericially","commercially"],["commerorative","commemorative"],["comming","coming"],["comminication","communication"],["comminity","community"],["comminucating","communicating"],["comminucation","communication"],["commision","commission"],["commisioned","commissioned"],["commisioner","commissioner"],["commisioning","commissioning"],["commisions","commissions"],["commitable","committable"],["commited","committed"],["commitee","committee"],["commiter","committer"],["commiters","committers"],["commitin","committing"],["commiting","committing"],["commitish","committish"],["committ","commit"],["committe","committee"],["committi","committee"],["committis","committees"],["committment","commitment"],["committments","commitments"],["committy","committee"],["commma","comma"],["commma-separated","comma-separated"],["commmand","command"],["commmand-line","command-line"],["commmandline","commandline"],["commmands","commands"],["commmemorated","commemorated"],["commment","comment"],["commmented","commented"],["commmenting","commenting"],["commments","comments"],["commmet","comment"],["commmets","comments"],["commmit","commit"],["commmited","committed"],["commmiting","committing"],["commmits","commits"],["commmitted","committed"],["commmitter","committer"],["commmitters","committers"],["commmitting","committing"],["commmon","common"],["commmunicate","communicate"],["commmunicated","communicated"],["commmunicates","communicates"],["commmunicating","communicating"],["commmunication","communication"],["commmunity","community"],["commna","comma"],["commna-separated","comma-separated"],["commnad","command"],["commnad-line","command-line"],["commnadline","commandline"],["commnads","commands"],["commnand","command"],["commnand-line","command-line"],["commnandline","commandline"],["commnands","commands"],["commnd","command"],["commnd-line","command-line"],["commndline","commandline"],["commnds","commands"],["commnent","comment"],["commnents","comments"],["commnet","comment"],["commnetaries","commentaries"],["commnetary","commentary"],["commnetator","commentator"],["commnetators","commentators"],["commneted","commented"],["commneting","commenting"],["commnets","comments"],["commnication","communication"],["commnities","communities"],["commnity","community"],["commnt","comment"],["commnted","commented"],["commnuative","commutative"],["commnunicating","communicating"],["commnunication","communication"],["commnunity","community"],["commoditiy","commodity"],["commom","common"],["commond","command"],["commongly","commonly"],["commontly","commonly"],["commonweath","commonwealth"],["commpact","compact"],["commpaction","compaction"],["commpare","compare"],["commparisons","comparisons"],["commpatibility","compatibility"],["commpatible","compatible"],["commpessed","compressed"],["commpilation","compilation"],["commpile","compile"],["commpiled","compiled"],["commpiling","compiling"],["commplain","complain"],["commplete","complete"],["commpleted","completed"],["commpletely","completely"],["commpletes","completes"],["commpletion","completion"],["commplex","complex"],["commpliant","compliant"],["commplied","complied"],["commpn","common"],["commponent","component"],["commponents","components"],["commpound","compound"],["commpresd","compressed"],["commpresed","compressed"],["commpresion","compression"],["commpress","compress"],["commpressd","compressed"],["commpressed","compressed"],["commpression","compression"],["commpute","compute"],["commputed","computed"],["commputer","computer"],["commputes","computes"],["commputing","computing"],["commtited","committed"],["commtted","committed"],["commuication","communication"],["commuications","communications"],["commuinications","communications"],["communcated","communicated"],["communcation","communication"],["communcations","communications"],["communciation","communication"],["communiation","communication"],["communicaion","communication"],["communicatie","communication"],["communicaton","communication"],["communitcate","communicate"],["communitcated","communicated"],["communitcates","communicates"],["communitcation","communication"],["communitcations","communications"],["communites","communities"],["communiy","community"],["communiyt","community"],["communuication","communication"],["commutated","commuted"],["commutating","commuting"],["commutive","commutative"],["comnmand","command"],["comnnected","connected"],["comnparing","comparing"],["comnpletion","completion"],["comnpresion","compression"],["comnpress","compress"],["comobobox","combo-box"],["comon","common"],["comonent","component"],["comor","color"],["compability","compatibility"],["compabillity","compatibility"],["compabitiliby","compatibility"],["compabitility","compatibility"],["compagnion","companion"],["compagny","company"],["compaibility","compatibility"],["compain","complain"],["compair","compare"],["compaire","compare"],["compaired","compared"],["compairing","comparing"],["compairison","comparison"],["compairisons","comparisons"],["compairs","compares"],["compansate","compensate"],["compansated","compensated"],["compansates","compensates"],["compansating","compensating"],["compansation","compensation"],["compansations","compensations"],["comparaison","comparison"],["comparare","compare"],["comparasion","comparison"],["comparasions","comparisons"],["comparater","comparator"],["comparation","comparison"],["comparations","comparisons"],["compareable","comparable"],["compareing","comparing"],["compareison","comparison"],["compareisons","comparisons"],["comparements","compartments"],["compariable","comparable"],["comparied","compared"],["comparign","comparing"],["comparigon","comparison"],["comparigons","comparisons"],["compariing","comparing"],["comparion","comparison"],["comparions","comparisons"],["comparios","comparison"],["comparioss","comparisons"],["comparisaion","comparison"],["comparisaions","comparisons"],["comparisation","comparison"],["comparisations","comparisons"],["comparisement","comparison"],["comparisements","comparisons"],["comparisin","comparison"],["comparising","comparing"],["comparisins","comparisons"],["comparision","comparison"],["comparisions","comparisons"],["comparism","comparison"],["comparisment","comparison"],["comparisments","comparisons"],["comparisms","comparisons"],["comparisn","comparison"],["comparisns","comparisons"],["comparispon","comparison"],["comparispons","comparisons"],["comparission","comparison"],["comparissions","comparisons"],["comparisson","comparison"],["comparissons","comparisons"],["comparistion","comparison"],["comparistions","comparisons"],["compariston","comparison"],["comparistons","comparisons"],["comparition","comparison"],["comparitions","comparisons"],["comparititive","comparative"],["comparititively","comparatively"],["comparitive","comparative"],["comparitively","comparatively"],["comparitor","comparator"],["comparitors","comparators"],["comparizon","comparison"],["comparizons","comparisons"],["comparment","compartment"],["comparotor","comparator"],["comparotors","comparators"],["comparre","compare"],["comparsion","comparison"],["comparsions","comparisons"],["compatabable","compatible"],["compatabiity","compatibility"],["compatabile","compatible"],["compatabilities","compatibilities"],["compatability","compatibility"],["compatabillity","compatibility"],["compatabilty","compatibility"],["compatabily","compatibility"],["compatable","compatible"],["compatablility","compatibility"],["compatablities","compatibilities"],["compatablitiy","compatibility"],["compatablity","compatibility"],["compatably","compatibly"],["compataibility","compatibility"],["compataible","compatible"],["compataility","compatibility"],["compatatbility","compatibility"],["compatatble","compatible"],["compatatible","compatible"],["compatator","comparator"],["compatators","comparators"],["compatbile","compatible"],["compatbility","compatibility"],["compatiability","compatibility"],["compatiable","compatible"],["compatiablity","compatibility"],["compatibel","compatible"],["compatibile","compatible"],["compatibiliy","compatibility"],["compatibiltiy","compatibility"],["compatibilty","compatibility"],["compatibily","compatibility"],["compatibity","compatibility"],["compatiblilty","compatibility"],["compatiblities","compatibilities"],["compatiblity","compatibility"],["compation","compaction"],["compatitbility","compatibility"],["compativle","compatible"],["compaytibility","compatibility"],["compeitions","competitions"],["compeletely","completely"],["compelte","complete"],["compeltelyt","completely"],["compeltion","completion"],["compeltly","completely"],["compelx","complex"],["compelxes","complexes"],["compelxities","complexities"],["compelxity","complexity"],["compensantion","compensation"],["compenstate","compensate"],["compenstated","compensated"],["compenstates","compensates"],["competance","competence"],["competant","competent"],["competative","competitive"],["competetive","competitive"],["competions","completions"],["competitiion","competition"],["competive","competitive"],["competiveness","competitiveness"],["compex","complex"],["compfortable","comfortable"],["comphrehensive","comprehensive"],["compiant","compliant"],["compicated","complicated"],["compications","complications"],["compied","compiled"],["compilability","compatibility"],["compilant","compliant"],["compilaton","compilation"],["compilatons","compilations"],["compilcate","complicate"],["compilcated","complicated"],["compilcatedly","complicatedly"],["compilcates","complicates"],["compilcating","complicating"],["compilcation","complication"],["compilcations","complications"],["compileable","compilable"],["compiletime","compile time"],["compiliant","compliant"],["compiliation","compilation"],["compilier","compiler"],["compiliers","compilers"],["compitability","compatibility"],["compitable","compatible"],["compitent","competent"],["compitible","compatible"],["complaing","complaining"],["complanied","complained"],["complate","complete"],["complated","completed"],["complates","completes"],["complating","completing"],["complatly","completely"],["complatness","completeness"],["complats","completes"],["complcated","complicated"],["compleate","complete"],["compleated","completed"],["compleates","completes"],["compleating","completing"],["compleatly","completely"],["compleete","complete"],["compleeted","completed"],["compleetly","completely"],["compleetness","completeness"],["complelely","completely"],["complelte","complete"],["complementt","complement"],["compleness","completeness"],["complession","compression"],["complet","complete"],["completedthe","completed the"],["completeion","completion"],["completelly","completely"],["completelty","completely"],["completelyl","completely"],["completetion","completion"],["completetly","completely"],["completiom","completion"],["completition","completion"],["completley","completely"],["completly","completely"],["completness","completeness"],["complette","complete"],["complettly","completely"],["complety","completely"],["complext","complexity"],["compliace","compliance"],["complianse","compliance"],["compliation","compilation"],["compliations","compilations"],["complied-in","compiled-in"],["complience","compliance"],["complient","compliant"],["complile","compile"],["compliled","compiled"],["compliler","compiler"],["compliles","compiles"],["compliling","compiling"],["compling","compiling"],["complitely","completely"],["complmenet","complement"],["complted","completed"],["compluter","computer"],["compnent","component"],["compnents","components"],["compoennt","component"],["compoent","component"],["compoents","components"],["compoesd","composed"],["compoment","component"],["compoments","components"],["componant","component"],["componants","components"],["componbents","components"],["componding","compounding"],["componeent","component"],["componeents","components"],["componemt","component"],["componemts","components"],["componenet","component"],["componenets","components"],["componens","components"],["componentes","components"],["componet","component"],["componets","components"],["componnents","components"],["componoent","component"],["componoents","components"],["componsites","composites"],["compontent","component"],["compontents","components"],["composablity","composability"],["composibility","composability"],["composiblity","composability"],["composit","composite"],["compositong","compositing"],["composits","composites"],["compount","compound"],["comppatible","compatible"],["comppiler","compiler"],["comppilers","compilers"],["comppliance","compliance"],["comprable","comparable"],["compredded","compressed"],["compresed","compressed"],["compreser","compressor"],["compresers","compressors"],["compreses","compresses"],["compresible","compressible"],["compresing","compressing"],["compresion","compression"],["compresions","compressions"],["compresor","compressor"],["compresors","compressors"],["compressable","compressible"],["compresser","compressor"],["compressers","compressors"],["compresss","compress"],["compresssed","compressed"],["compresssion","compression"],["comprimise","compromise"],["compromize","compromise"],["compromized","compromised"],["compsable","composable"],["compsite","composite"],["comptabile","compatible"],["comptible","compatible"],["comptue","compute"],["compuatation","computation"],["compuation","computation"],["compulsary","compulsory"],["compulsery","compulsory"],["compund","compound"],["compunds","compounds"],["computaion","computation"],["computarized","computerized"],["computaton","computation"],["computtaion","computation"],["computtaions","computations"],["comress","compress"],["comressed","compressed"],["comresses","compresses"],["comressing","compressing"],["comression","compression"],["comrpess","compress"],["comrpessed","compressed"],["comrpesses","compresses"],["comrpessing","compressing"],["comrpession","compression"],["comstraint","constraint"],["comsume","consume"],["comsumed","consumed"],["comsumer","consumer"],["comsumers","consumers"],["comsumes","consumes"],["comsuming","consuming"],["comsumption","consumption"],["comtain","contain"],["comtained","contained"],["comtainer","container"],["comtains","contains"],["comunicate","communicate"],["comunication","communication"],["comunity","community"],["comventions","conventions"],["comverted","converted"],["conain","contain"],["conained","contained"],["conainer","container"],["conainers","containers"],["conaines","contains"],["conaining","containing"],["conains","contains"],["conaint","contain"],["conainted","contained"],["conainter","container"],["conatain","contain"],["conatainer","container"],["conatainers","containers"],["conatains","contains"],["conatin","contain"],["conatined","contained"],["conatiner","container"],["conatiners","containers"],["conatining","containing"],["conatins","contains"],["conbination","combination"],["conbinations","combinations"],["conbtrols","controls"],["concaneted","concatenated"],["concantenated","concatenated"],["concatenaded","concatenated"],["concatenaion","concatenation"],["concatened","concatenated"],["concatentaion","concatenation"],["concatentate","concatenate"],["concatentated","concatenated"],["concatentates","concatenates"],["concatentating","concatenating"],["concatentation","concatenation"],["concatentations","concatenations"],["concatented","concatenated"],["concatinate","concatenate"],["concatinated","concatenated"],["concatination","concatenation"],["concatinations","concatenations"],["concating","concatenating"],["concatonate","concatenate"],["concatonated","concatenated"],["concatonates","concatenates"],["concatonating","concatenating"],["conceed","concede"],["conceedd","conceded"],["concensors","consensus"],["concensus","consensus"],["concentate","concentrate"],["concentated","concentrated"],["concentates","concentrates"],["concentating","concentrating"],["concentation","concentration"],["concentic","concentric"],["concentraze","concentrate"],["concered","concerned"],["concerened","concerned"],["concering","concerning"],["concerntrating","concentrating"],["concicely","concisely"],["concider","consider"],["concidered","considered"],["concidering","considering"],["conciders","considers"],["concieted","conceited"],["concieve","conceive"],["concieved","conceived"],["concious","conscious"],["conciously","consciously"],["conciousness","consciousness"],["concurence","concurrence"],["concurency","concurrency"],["concurent","concurrent"],["concurently","concurrently"],["concurrect","concurrent"],["condamned","condemned"],["condem","condemn"],["condemmed","condemned"],["condfiguration","configuration"],["condfigurations","configurations"],["condfigure","configure"],["condfigured","configured"],["condfigures","configures"],["condfiguring","configuring"],["condict","conduct"],["condicted","conducted"],["condidate","candidate"],["condidates","candidates"],["condident","confident"],["condidential","confidential"],["condidional","conditional"],["condidtion","condition"],["condidtioning","conditioning"],["condidtions","conditions"],["condifurable","configurable"],["condifuration","configuration"],["condifure","configure"],["condifured","configured"],["condig","config"],["condigdialog","configdialog"],["condiiton","condition"],["condionally","conditionally"],["conditial","conditional"],["conditially","conditionally"],["conditialy","conditionally"],["conditianal","conditional"],["conditianally","conditionally"],["conditianaly","conditionally"],["conditionaly","conditionally"],["conditionn","condition"],["conditionnal","conditional"],["conditionnaly","conditionally"],["conditionned","conditioned"],["conditionsof","conditions of"],["conditoinal","conditional"],["conditon","condition"],["conditonal","conditional"],["conditons","conditions"],["condntional","conditional"],["condtiion","condition"],["condtiions","conditions"],["condtion","condition"],["condtional","conditional"],["condtionally","conditionally"],["condtionals","conditionals"],["condtioned","conditioned"],["condtions","conditions"],["condtition","condition"],["condtitional","conditional"],["condtitionals","conditionals"],["condtitions","conditions"],["conecct","connect"],["coneccted","connected"],["coneccting","connecting"],["conecction","connection"],["conecctions","connections"],["conecctivities","connectivities"],["conecctivity","connectivity"],["conecctor","connector"],["conecctors","connectors"],["coneccts","connects"],["conecept","concept"],["conecepts","concepts"],["conecjture","conjecture"],["conecjtures","conjectures"],["conecntrate","concentrate"],["conecntrated","concentrated"],["conecntrates","concentrates"],["conecpt","concept"],["conecpts","concepts"],["conect","connect"],["conected","connected"],["conecting","connecting"],["conection","connection"],["conections","connections"],["conectivities","connectivities"],["conectivity","connectivity"],["conectix","connectix"],["conector","connector"],["conectors","connectors"],["conects","connects"],["conecurrency","concurrency"],["conecutive","consecutive"],["coneect","connect"],["coneected","connected"],["coneecting","connecting"],["coneection","connection"],["coneections","connections"],["coneectivities","connectivities"],["coneectivity","connectivity"],["coneector","connector"],["coneectors","connectors"],["coneects","connects"],["conenct","connect"],["conencted","connected"],["conencting","connecting"],["conenction","connection"],["conenctions","connections"],["conenctivities","connectivities"],["conenctivity","connectivity"],["conenctor","connector"],["conenctors","connectors"],["conencts","connects"],["conenience","convenience"],["conenient","convenient"],["coneninece","convenience"],["coneninet","convenient"],["conent","content"],["conents","contents"],["conergence","convergence"],["conern","concern"],["conerning","concerning"],["conersion","conversion"],["conersions","conversions"],["conert","convert"],["conerted","converted"],["conerter","converter"],["conerters","converters"],["conerting","converting"],["conervative","conservative"],["conesencus","consensus"],["conet","connect"],["coneted","connected"],["coneting","connecting"],["conetion","connection"],["conetions","connections"],["conetivities","connectivities"],["conetivity","connectivity"],["conetnt","content"],["conetor","connector"],["conetors","connectors"],["conets","connects"],["conexant","connexant"],["conferene","conference"],["conferrencing","conferencing"],["confert","convert"],["confety","confetti"],["conffiguration","configuration"],["confgiuration","configuration"],["confgiure","configure"],["confgiured","configured"],["confguration","configuration"],["confgure","configure"],["confgured","configured"],["confict","conflict"],["conficted","conflicted"],["conficts","conflicts"],["confidance","confidence"],["confidantal","confidential"],["confidantally","confidentially"],["confidantals","confidentials"],["confidantial","confidential"],["confidantially","confidentially"],["confidental","confidential"],["confidentally","confidentially"],["confids","confides"],["confifurable","configurable"],["confifuration","configuration"],["confifure","configure"],["confifured","configured"],["configaration","configuration"],["configed","configured"],["configer","configure"],["configiration","configuration"],["configire","configure"],["configiuration","configuration"],["configration","configuration"],["configrations","configurations"],["configred","configured"],["configruation","configuration"],["configruations","configurations"],["configrued","configured"],["configuaration","configuration"],["configuarble","configurable"],["configuare","configure"],["configuared","configured"],["configuarion","configuration"],["configuarions","configurations"],["configuartion","configuration"],["configuartions","configurations"],["configuation","configuration"],["configuations","configurations"],["configue","configure"],["configued","configured"],["configuerd","configured"],["configuered","configured"],["configues","configures"],["configulate","configurate"],["configulation","configuration"],["configulations","configurations"],["configuraion","configuration"],["configuraiton","configuration"],["configuratiens","configurations"],["configuratiom","configuration"],["configurationn","configuration"],["configuratioon","configuration"],["configuratoin","configuration"],["configuratoins","configurations"],["configuraton","configuration"],["configuratons","configurations"],["configuratrions","configurations"],["configuratuion","configuration"],["configureable","configurable"],["configureing","configuring"],["configuretion","configuration"],["configurres","configures"],["configurring","configuring"],["configurses","configures"],["configurtation","configuration"],["configurting","configuring"],["configurtion","configuration"],["configurtoin","configuration"],["configury","configurable"],["configutation","configuration"],["configutations","configurations"],["configute","configure"],["configuted","configured"],["configutes","configures"],["configutration","configuration"],["confim","confirm"],["confimation","confirmation"],["confimations","confirmations"],["confimed","confirmed"],["confiming","confirming"],["confimred","confirmed"],["confims","confirms"],["confiramtion","confirmation"],["confirmacion","confirmation"],["confirmaed","confirmed"],["confirmas","confirms"],["confirmatino","confirmation"],["confirmatinon","confirmation"],["confirmd","confirmed"],["confirmedd","confirmed"],["confirmeed","confirmed"],["confirmming","confirming"],["confiug","config"],["confiugrable","configurable"],["confiugration","configuration"],["confiugrations","configurations"],["confiugre","configure"],["confiugred","configured"],["confiugres","configures"],["confiugring","configuring"],["confiugure","configure"],["conflictin","conflicting"],["conflift","conflict"],["conflit","conflict"],["confoguration","configuration"],["confort","comfort"],["confortable","comfortable"],["confrim","confirm"],["confrimation","confirmation"],["confrimations","confirmations"],["confrimed","confirmed"],["confriming","confirming"],["confrims","confirms"],["confucing","confusing"],["confucion","confusion"],["confuction","conjunction"],["confudion","confusion"],["confue","confuse"],["confued","confused"],["confues","confuses"],["confugiration","configuration"],["confugirble","configurable"],["confugire","configure"],["confugired","configured"],["confugires","configures"],["confugiring","configuring"],["confugrable","configurable"],["confugration","configuration"],["confugre","configure"],["confugred","configured"],["confugres","configures"],["confugring","configuring"],["confugurable","configurable"],["confuguration","configuration"],["confugure","configure"],["confugured","configured"],["confugures","configures"],["confuguring","configuring"],["confuigration","configuration"],["confuigrations","configurations"],["confuing","confusing"],["confunction","conjunction"],["confunder","confounder"],["confunse","confuse"],["confunsed","confused"],["confunses","confuses"],["confunsing","confusing"],["confurable","configurable"],["confuration","configuration"],["confure","configure"],["confured","configured"],["confures","configures"],["confuring","configuring"],["confurse","confuse"],["confursed","confused"],["confurses","confuses"],["confursing","confusing"],["confusting","confusing"],["confuze","confuse"],["confuzed","confused"],["confuzes","confuses"],["confuzing","confusing"],["confuzze","confuse"],["confuzzed","confused"],["confuzzes","confuses"],["confuzzing","confusing"],["congifurable","configurable"],["congifuration","configuration"],["congifure","configure"],["congifured","configured"],["congig","config"],["congigs","configs"],["congiguration","configuration"],["congigurations","configurations"],["congigure","configure"],["congnition","cognition"],["congnitive","cognitive"],["congradulations","congratulations"],["congresional","congressional"],["conider","consider"],["conifguration","configuration"],["conifiguration","configuration"],["conig","config"],["conigurable","configurable"],["conigured","configured"],["conincide","coincide"],["conincidence","coincidence"],["conincident","coincident"],["conincides","coincides"],["coninciding","coinciding"],["coninient","convenient"],["coninstallable","coinstallable"],["coninuation","continuation"],["coninue","continue"],["coninues","continues"],["coninuity","continuity"],["coninuous","continuous"],["conitinue","continue"],["conived","connived"],["conjecutre","conjecture"],["conjonction","conjunction"],["conjonctive","conjunctive"],["conjuction","conjunction"],["conjuctions","conjunctions"],["conjuncion","conjunction"],["conjuntion","conjunction"],["conjuntions","conjunctions"],["conlcude","conclude"],["conlcuded","concluded"],["conlcudes","concludes"],["conlcuding","concluding"],["conlcusion","conclusion"],["conlcusions","conclusions"],["conly","only"],["conmnection","connection"],["conmpress","compress"],["conmpression","compression"],["connaect","connect"],["conncection","connection"],["conncetion","connection"],["connction","connection"],["conncurrent","concurrent"],["connecetd","connected"],["connecion","connection"],["connecions","connections"],["conneciton","connection"],["connecitons","connections"],["connecor","connector"],["connecotr","connector"],["connecstatus","connectstatus"],["connectd","connected"],["connecte","connected"],["connectec","connected"],["connectes","connects"],["connectet","connected"],["connectibity","connectivity"],["connectino","connection"],["connectinos","connections"],["connectins","connections"],["connectiom","connection"],["connectioms","connections"],["connectiona","connection"],["connectionas","connections"],["connectiviy","connectivity"],["connectivty","connectivity"],["connecto","connect"],["connectted","connected"],["connecttion","connection"],["conneection","connection"],["conneiction","connection"],["connektors","connectors"],["connetced","connected"],["connetcion","connection"],["conneted","connected"],["Conneticut","Connecticut"],["connetion","connection"],["connetor","connector"],["connexion","connection"],["connnect","connect"],["connnected","connected"],["connnecting","connecting"],["connnection","connection"],["connnections","connections"],["connnects","connects"],["connot","cannot"],["connstrain","constrain"],["connstrained","constrained"],["connstraint","constraint"],["conntents","contents"],["conntroller","controller"],["conosuer","connoisseur"],["conotation","connotation"],["conotations","connotations"],["conotrol","control"],["conotroled","controlled"],["conotroling","controlling"],["conotrolled","controlled"],["conotrols","controls"],["conpares","compares"],["conplete","complete"],["conpleted","completed"],["conpletes","completes"],["conpleting","completing"],["conpletion","completion"],["conquerd","conquered"],["conquerer","conqueror"],["conquerers","conquerors"],["conqured","conquered"],["conrete","concrete"],["conrol","control"],["conroller","controller"],["conrrespond","correspond"],["conrrespondence","correspondence"],["conrrespondences","correspondences"],["conrrespondent","correspondent"],["conrrespondents","correspondents"],["conrresponding","corresponding"],["conrrespondingly","correspondingly"],["conrresponds","corresponds"],["conrrol","control"],["conrrupt","corrupt"],["conrruptable","corruptible"],["conrrupted","corrupted"],["conrruptible","corruptible"],["conrruption","corruption"],["conrruptions","corruptions"],["conrrupts","corrupts"],["conrtib","contrib"],["conrtibs","contribs"],["consants","constants"],["conscent","consent"],["consciencious","conscientious"],["consciouness","consciousness"],["consctruct","construct"],["consctructed","constructed"],["consctructing","constructing"],["consctruction","construction"],["consctructions","constructions"],["consctructive","constructive"],["consctructor","constructor"],["consctructors","constructors"],["consctructs","constructs"],["consdider","consider"],["consdidered","considered"],["consdiered","considered"],["consdired","considered"],["conseat","conceit"],["conseated","conceited"],["consective","consecutive"],["consectively","consecutively"],["consectutive","consecutive"],["consectuve","consecutive"],["consecuitively","consecutively"],["conseed","concede"],["conseedd","conceded"],["conseeded","conceded"],["conseeds","concedes"],["consenquently","consequently"],["consensis","consensus"],["consentrate","concentrate"],["consentrated","concentrated"],["consentrates","concentrates"],["consept","concept"],["consepts","concepts"],["consequentely","consequently"],["consequentually","consequently"],["consequeseces","consequences"],["consequetive","consecutive"],["consequtive","consecutive"],["consequtively","consecutively"],["consern","concern"],["conserned","concerned"],["conserning","concerning"],["conservativeky","conservatively"],["conservitive","conservative"],["consestently","consistently"],["consevible","conceivable"],["consiciousness","consciousness"],["consicousness","consciousness"],["considder","consider"],["considderation","consideration"],["considdered","considered"],["considdering","considering"],["considerd","considered"],["consideren","considered"],["considerion","consideration"],["considerions","considerations"],["considred","considered"],["consier","consider"],["consiers","considers"],["consifer","consider"],["consifered","considered"],["consious","conscious"],["consisant","consistent"],["consisent","consistent"],["consisently","consistently"],["consisntency","consistency"],["consistancy","consistency"],["consistant","consistent"],["consistantly","consistently"],["consisten","consistent"],["consistend","consistent"],["consistendly","consistently"],["consistendt","consistent"],["consistendtly","consistently"],["consistenly","consistently"],["consistuents","constituents"],["consit","consist"],["consitant","consistent"],["consited","consisted"],["consitency","consistency"],["consitent","consistent"],["consitently","consistently"],["consiting","consisting"],["consitional","conditional"],["consits","consists"],["consituencies","constituencies"],["consituency","constituency"],["consituent","constituent"],["consituents","constituents"],["consitute","constitute"],["consituted","constituted"],["consitutes","constitutes"],["consituting","constituting"],["consitution","constitution"],["consitutional","constitutional"],["consitutuent","constituent"],["consitutuents","constituents"],["consitutute","constitute"],["consitututed","constituted"],["consitututes","constitutes"],["consitututing","constituting"],["consntant","constant"],["consntantly","constantly"],["consntants","constants"],["consol","console"],["consolodate","consolidate"],["consolodated","consolidated"],["consonent","consonant"],["consonents","consonants"],["consorcium","consortium"],["conspiracys","conspiracies"],["conspiriator","conspirator"],["consquence","consequence"],["consquences","consequences"],["consquent","consequent"],["consquently","consequently"],["consrtuct","construct"],["consrtucted","constructed"],["consrtuctor","constructor"],["consrtuctors","constructors"],["consrtucts","constructs"],["consruction","construction"],["consructions","constructions"],["consructor","constructor"],["consructors","constructors"],["constaint","constraint"],["constainted","constrained"],["constaints","constraints"],["constallation","constellation"],["constallations","constellations"],["constan","constant"],["constanly","constantly"],["constantsm","constants"],["constarin","constrain"],["constarint","constraint"],["constarints","constraints"],["constarnation","consternation"],["constatn","constant"],["constatnt","constant"],["constatnts","constants"],["constcurts","constructs"],["constext","context"],["consting","consisting"],["constinually","continually"],["constistency","consistency"],["constists","consists"],["constitently","consistently"],["constituant","constituent"],["constituants","constituents"],["constitue","constitute"],["constitues","constitutes"],["constituion","constitution"],["constituional","constitutional"],["constitutent","constituent"],["constitutents","constituents"],["constly","costly"],["constract","construct"],["constracted","constructed"],["constractor","constructor"],["constractors","constructors"],["constrainsts","constraints"],["constrainted","constrained"],["constraintes","constraints"],["constrainting","constraining"],["constrait","constraint"],["constraits","constraints"],["constrans","constrains"],["constrant","constraint"],["constrants","constraints"],["constrast","contrast"],["constrasts","contrasts"],["constratints","constraints"],["constraucts","constructs"],["constrcuct","construct"],["constrcut","construct"],["constrcuted","constructed"],["constrcution","construction"],["constrcutor","constructor"],["constrcutors","constructors"],["constrcuts","constructs"],["constriants","constraints"],["constrint","constraint"],["constrints","constraints"],["constrollers","controllers"],["construc","construct"],["construces","constructs"],["construcing","constructing"],["construcion","construction"],["construciton","construction"],["construcor","constructor"],["construcs","constructs"],["constructcor","constructor"],["constructer","constructor"],["constructers","constructors"],["constructes","constructs"],["constructred","constructed"],["constructt","construct"],["constructted","constructed"],["constructting","constructing"],["constructtor","constructor"],["constructtors","constructors"],["constructts","constructs"],["constructued","constructed"],["constructur","constructor"],["constructure","constructor"],["constructurs","constructors"],["construktor","constructor"],["construnctor","constructor"],["construrtors","constructors"],["construst","construct"],["construsts","constructs"],["construt","construct"],["construtced","constructed"],["construter","constructor"],["construters","constructors"],["constrution","construction"],["construtor","constructor"],["construtors","constructors"],["consttruct","construct"],["consttructer","constructor"],["consttructers","constructors"],["consttruction","construction"],["consttructor","constructor"],["consttructors","constructors"],["constuct","construct"],["constucted","constructed"],["constucter","constructor"],["constucters","constructors"],["constucting","constructing"],["constuction","construction"],["constuctions","constructions"],["constuctor","constructor"],["constuctors","constructors"],["constucts","constructs"],["consturct","construct"],["consturctor","constructor"],["consuder","consider"],["consuemr","consumer"],["consulant","consultant"],["consultunt","consultant"],["consumate","consummate"],["consumated","consummated"],["consumating","consummating"],["consummed","consumed"],["consummer","consumer"],["consummers","consumers"],["consumtion","consumption"],["contacentaion","concatenation"],["contagen","contagion"],["contaienr","container"],["contaier","container"],["contails","contains"],["contaiminate","contaminate"],["contaiminated","contaminated"],["contaiminating","contaminating"],["containa","contain"],["containees","containers"],["containerr","container"],["containg","containing"],["containging","containing"],["containig","containing"],["containings","containing"],["containining","containing"],["containint","containing"],["containn","contain"],["containner","container"],["containners","containers"],["containns","contains"],["containr","container"],["containrs","containers"],["containted","contained"],["containter","container"],["containters","containers"],["containting","containing"],["containts","contains"],["containuations","continuations"],["contais","contains"],["contaisn","contains"],["contaiun","contain"],["contamporaries","contemporaries"],["contamporary","contemporary"],["contan","contain"],["contaned","contained"],["contanined","contained"],["contaning","containing"],["contanins","contains"],["contans","contains"],["contary","contrary"],["contatenated","concatenated"],["contatining","containing"],["contein","contain"],["conteined","contained"],["conteining","containing"],["conteins","contains"],["contempoary","contemporary"],["contemporaneus","contemporaneous"],["contempory","contemporary"],["conten","contain"],["contence","contents"],["contendor","contender"],["contener","container"],["conteners","containers"],["contenht","content"],["content-negatiotiation","content-negotiation"],["content-negoatiation","content-negotiation"],["content-negoation","content-negotiation"],["content-negociation","content-negotiation"],["content-negogtiation","content-negotiation"],["content-negoitation","content-negotiation"],["content-negoptionsotiation","content-negotiation"],["content-negosiation","content-negotiation"],["content-negotaiation","content-negotiation"],["content-negotaition","content-negotiation"],["content-negotatiation","content-negotiation"],["content-negotation","content-negotiation"],["content-negothiation","content-negotiation"],["content-negotication","content-negotiation"],["content-negotioation","content-negotiation"],["content-negotion","content-negotiation"],["content-negotionation","content-negotiation"],["content-negotiotation","content-negotiation"],["content-negotitaion","content-negotiation"],["content-negotitation","content-negotiation"],["content-negotition","content-negotiation"],["content-negoziation","content-negotiation"],["contentended","contended"],["contentn","content"],["contentss","contents"],["contermporaneous","contemporaneous"],["conterpart","counterpart"],["conterparts","counterparts"],["contersink","countersink"],["contex","context"],["contexta","context"],["contexual","contextual"],["contiains","contains"],["contian","contain"],["contianed","contained"],["contianer","container"],["contianers","containers"],["contianing","containing"],["contians","contains"],["contibute","contribute"],["contibuted","contributed"],["contibutes","contributes"],["contibutor","contributor"],["contigent","contingent"],["contigious","contiguous"],["contigiously","contiguously"],["contignuous","contiguous"],["contigous","contiguous"],["contiguious","contiguous"],["contiguities","continuities"],["contiguos","contiguous"],["contiguous-non","non-contiguous"],["continaing","containing"],["contination","continuation"],["contined","continued"],["continential","continental"],["continging","containing"],["contingous","contiguous"],["continguous","contiguous"],["continious","continuous"],["continiously","continuously"],["continoue","continue"],["continouos","continuous"],["continous","continuous"],["continously","continuously"],["continueing","continuing"],["continuely","continually"],["continuem","continuum"],["continuos","continuous"],["continuosly","continuously"],["continure","continue"],["continusly","continuously"],["continuting","continuing"],["contious","continuous"],["contiously","continuously"],["contiuation","continuation"],["contiue","continue"],["contiuguous","contiguous"],["contiuing","continuing"],["contniue","continue"],["contniued","continued"],["contniues","continues"],["contnt","content"],["contol","control"],["contoler","controller"],["contoller","controller"],["contollers","controllers"],["contolls","controls"],["contols","controls"],["contongency","contingency"],["contorl","control"],["contorled","controlled"],["contorls","controls"],["contoroller","controller"],["contraciction","contradiction"],["contracictions","contradictions"],["contracition","contradiction"],["contracitions","contradictions"],["contracter","contractor"],["contracters","contractors"],["contradically","contradictory"],["contradictary","contradictory"],["contrain","constrain"],["contrainers","containers"],["contraining","constraining"],["contraint","constraint"],["contrainted","constrained"],["contraints","constraints"],["contraitns","constraints"],["contraveining","contravening"],["contravercial","controversial"],["contraversy","controversy"],["contrbution","contribution"],["contribte","contribute"],["contribted","contributed"],["contribtes","contributes"],["contributer","contributor"],["contributers","contributors"],["contries","countries"],["contrinution","contribution"],["contrinutions","contributions"],["contritutions","contributions"],["contriubte","contribute"],["contriubted","contributed"],["contriubtes","contributes"],["contriubting","contributing"],["contriubtion","contribution"],["contriubtions","contributions"],["contrl","control"],["contrller","controller"],["contro","control"],["controlable","controllable"],["controled","controlled"],["controlelrs","controllers"],["controler","controller"],["controlers","controllers"],["controling","controlling"],["controll","control"],["controllerd","controlled"],["controllled","controlled"],["controlller","controller"],["controlllers","controllers"],["controllling","controlling"],["controllor","controller"],["controlls","controls"],["contronl","control"],["contronls","controls"],["controoler","controller"],["controvercial","controversial"],["controvercy","controversy"],["controveries","controversies"],["controversal","controversial"],["controversey","controversy"],["controversials","controversial"],["controvertial","controversial"],["controvery","controversy"],["contrrol","control"],["contrrols","controls"],["contrst","contrast"],["contrsted","contrasted"],["contrsting","contrasting"],["contrsts","contrasts"],["contrtoller","controller"],["contruct","construct"],["contructed","constructed"],["contructing","constructing"],["contruction","construction"],["contructions","constructions"],["contructor","constructor"],["contructors","constructors"],["contructs","constructs"],["contry","country"],["contryie","countryie"],["contsruction","construction"],["contsructor","constructor"],["contstant","constant"],["contstants","constants"],["contstraint","constraint"],["contstructing","constructing"],["contstruction","construction"],["contstructor","constructor"],["contstructors","constructors"],["contur","contour"],["contzains","contains"],["conuntry","country"],["conusmer","consumer"],["convaless","convalesce"],["convax","convex"],["convaxiity","convexity"],["convaxly","convexly"],["convaxness","convexness"],["conveinence","convenience"],["conveinences","conveniences"],["conveinent","convenient"],["conveinience","convenience"],["conveinient","convenient"],["convenant","covenant"],["conveneince","convenience"],["conveniance","convenience"],["conveniant","convenient"],["conveniantly","conveniently"],["convenince","convenience"],["conveninent","convenient"],["convense","convince"],["convential","conventional"],["conventient","convenient"],["convenvient","convenient"],["conver","convert"],["convereted","converted"],["convergance","convergence"],["converion","conversion"],["converions","conversions"],["converison","conversion"],["converitble","convertible"],["conversly","conversely"],["conversoin","conversion"],["converson","conversion"],["conversons","conversions"],["converssion","conversion"],["converst","convert"],["convertable","convertible"],["convertables","convertibles"],["convertet","converted"],["convertion","conversion"],["convertions","conversions"],["convery","convert"],["convesion","conversion"],["convesions","conversions"],["convet","convert"],["conveted","converted"],["conveter","converter"],["conveters","converters"],["conveting","converting"],["convetion","convention"],["convetions","conventions"],["convets","converts"],["conveyer","conveyor"],["conviced","convinced"],["conviencece","convenience"],["convienence","convenience"],["convienent","convenient"],["convienience","convenience"],["convienient","convenient"],["convieniently","conveniently"],["conviently","conveniently"],["conviguration","configuration"],["convigure","configure"],["convination","combination"],["convine","combine"],["convineance","convenience"],["convineances","conveniences"],["convineient","convenient"],["convinence","convenience"],["convinences","conveniences"],["convinent","convenient"],["convinently","conveniently"],["conviniance","convenience"],["conviniances","conveniences"],["convinience","convenience"],["conviniences","conveniences"],["conviniency","convenience"],["conviniencys","conveniences"],["convinient","convenient"],["conviniently","conveniently"],["convining","combining"],["convinve","convince"],["convinved","convinced"],["convinving","convincing"],["convirted","converted"],["convirting","converting"],["convised","convinced"],["convoultion","convolution"],["convoultions","convolutions"],["convovle","convolve"],["convovled","convolved"],["convovling","convolving"],["convrt","convert"],["convserion","conversion"],["conyak","cognac"],["coodinate","coordinate"],["coodinates","coordinates"],["coodrinate","coordinate"],["coodrinates","coordinates"],["cooefficient","coefficient"],["cooefficients","coefficients"],["cooger","cougar"],["cookoo","cuckoo"],["coolent","coolant"],["coolot","culotte"],["coolots","culottes"],["coomand","command"],["coommand","command"],["coomon","common"],["coonstantly","constantly"],["coonstructed","constructed"],["cooordinate","coordinate"],["cooordinates","coordinates"],["coopearte","cooperate"],["coopeartes","cooperates"],["cooporative","cooperative"],["coordanate","coordinate"],["coordanates","coordinates"],["coordenate","coordinate"],["coordenates","coordinates"],["coordiante","coordinate"],["coordiantes","coordinates"],["coordiantion","coordination"],["coordiate","coordinate"],["coordiates","coordinates"],["coordiinates","coordinates"],["coordinatess","coordinates"],["coordinats","coordinates"],["coordindate","coordinate"],["coordindates","coordinates"],["coordine","coordinate"],["coordines","coordinates"],["coording","according"],["coordingate","coordinate"],["coordingates","coordinates"],["coordingly","accordingly"],["coordiniate","coordinate"],["coordiniates","coordinates"],["coordinite","coordinate"],["coordinites","coordinates"],["coordinnate","coordinate"],["coordinnates","coordinates"],["coordintae","coordinate"],["coordintaes","coordinates"],["coordintate","coordinate"],["coordintates","coordinates"],["coordinte","coordinate"],["coordintes","coordinates"],["coorditate","coordinate"],["coordonate","coordinate"],["coordonated","coordinated"],["coordonates","coordinates"],["coorespond","correspond"],["cooresponded","corresponded"],["coorespondend","correspondent"],["coorespondent","correspondent"],["cooresponding","corresponding"],["cooresponds","corresponds"],["cooridate","coordinate"],["cooridated","coordinated"],["cooridates","coordinates"],["cooridnate","coordinate"],["cooridnated","coordinated"],["cooridnates","coordinates"],["coorinate","coordinate"],["coorinates","coordinates"],["coorination","coordination"],["cootdinate","coordinate"],["cootdinated","coordinated"],["cootdinates","coordinates"],["cootdinating","coordinating"],["cootdination","coordination"],["copeing","copying"],["copiese","copies"],["copiing","copying"],["copiler","compiler"],["coplete","complete"],["copleted","completed"],["copletely","completely"],["copletes","completes"],["copmetitors","competitors"],["copmilation","compilation"],["copmonent","component"],["copmutations","computations"],["copntroller","controller"],["coponent","component"],["copoying","copying"],["coppermines","coppermine"],["coppied","copied"],["copright","copyright"],["coprighted","copyrighted"],["coprights","copyrights"],["coproccessor","coprocessor"],["coproccessors","coprocessors"],["coprocesor","coprocessor"],["coprorate","corporate"],["coprorates","corporates"],["coproration","corporation"],["coprorations","corporations"],["coprright","copyright"],["coprrighted","copyrighted"],["coprrights","copyrights"],["copstruction","construction"],["copuright","copyright"],["copurighted","copyrighted"],["copurights","copyrights"],["copute","compute"],["coputed","computed"],["coputer","computer"],["coputes","computes"],["copver","cover"],["copyed","copied"],["copyeight","copyright"],["copyeighted","copyrighted"],["copyeights","copyrights"],["copyied","copied"],["copyrigth","copyright"],["copyrigthed","copyrighted"],["copyrigths","copyrights"],["copyritght","copyright"],["copyritghted","copyrighted"],["copyritghts","copyrights"],["copyrught","copyright"],["copyrughted","copyrighted"],["copyrughts","copyrights"],["copys","copies"],["copytight","copyright"],["copytighted","copyrighted"],["copytights","copyrights"],["copyting","copying"],["corale","chorale"],["cordinate","coordinate"],["cordinates","coordinates"],["cordoroy","corduroy"],["cordump","coredump"],["corecct","correct"],["corecctly","correctly"],["corect","correct"],["corected","corrected"],["corecting","correcting"],["corection","correction"],["corectly","correctly"],["corectness","correctness"],["corects","corrects"],["coreespond","correspond"],["coregated","corrugated"],["corelate","correlate"],["corelated","correlated"],["corelates","correlates"],["corellation","correlation"],["coreolis","Coriolis"],["corerct","correct"],["corerctly","correctly"],["corespond","correspond"],["coresponded","corresponded"],["corespondence","correspondence"],["coresponding","corresponding"],["coresponds","corresponds"],["corfirms","confirms"],["coridal","cordial"],["corispond","correspond"],["cornmitted","committed"],["corordinate","coordinate"],["corordinates","coordinates"],["corordination","coordination"],["corosbonding","corresponding"],["corosion","corrosion"],["corospond","correspond"],["corospondance","correspondence"],["corosponded","corresponded"],["corospondence","correspondence"],["corosponding","corresponding"],["corosponds","corresponds"],["corousel","carousel"],["corparate","corporate"],["corperations","corporations"],["corpration","corporation"],["corproration","corporation"],["corprorations","corporations"],["corrcect","correct"],["corrct","correct"],["corrdinate","coordinate"],["corrdinated","coordinated"],["corrdinates","coordinates"],["corrdinating","coordinating"],["corrdination","coordination"],["corrdinator","coordinator"],["corrdinators","coordinators"],["correclty","correctly"],["correcly","correctly"],["correcpond","correspond"],["correcponded","corresponded"],["correcponding","corresponding"],["correcponds","corresponds"],["correcs","corrects"],["correctably","correctable"],["correctely","correctly"],["correcters","correctors"],["correctlly","correctly"],["correctnes","correctness"],["correcton","correction"],["correctons","corrections"],["correcttness","correctness"],["correctures","correctors"],["correcty","correctly"],["correctyly","correctly"],["correcxt","correct"],["correcy","correct"],["correect","correct"],["correectly","correctly"],["correespond","correspond"],["correesponded","corresponded"],["correespondence","correspondence"],["correespondences","correspondences"],["correespondent","correspondent"],["correesponding","corresponding"],["correesponds","corresponds"],["correlasion","correlation"],["correlatd","correlated"],["correllate","correlate"],["correllation","correlation"],["correllations","correlations"],["correnspond","correspond"],["corrensponded","corresponded"],["correnspondence","correspondence"],["correnspondences","correspondences"],["correnspondent","correspondent"],["correnspondents","correspondents"],["corrensponding","corresponding"],["corrensponds","corresponds"],["correograph","choreograph"],["correponding","corresponding"],["correponds","corresponds"],["correponsing","corresponding"],["correposding","corresponding"],["correpsondence","correspondence"],["correpsonding","corresponding"],["corresond","correspond"],["corresonded","corresponded"],["corresonding","corresponding"],["corresonds","corresponds"],["correspdoning","corresponding"],["correspending","corresponding"],["correspinding","corresponding"],["correspnding","corresponding"],["correspodence","correspondence"],["correspoding","corresponding"],["correspoinding","corresponding"],["correspomd","correspond"],["correspomded","corresponded"],["correspomdence","correspondence"],["correspomdences","correspondences"],["correspomdent","correspondent"],["correspomdents","correspondents"],["correspomding","corresponding"],["correspomds","corresponds"],["correspon","correspond"],["correspondance","correspondence"],["correspondances","correspondences"],["correspondant","correspondent"],["correspondants","correspondents"],["correspondd","corresponded"],["correspondend","correspondent"],["correspondes","corresponds"],["correspondg","corresponding"],["correspondig","corresponding"],["corresponed","corresponded"],["corresponging","corresponding"],["corresponing","corresponding"],["correspons","corresponds"],["corresponsding","corresponding"],["corresponsing","corresponding"],["correspont","correspond"],["correspontence","correspondence"],["correspontences","correspondences"],["correspontend","correspondent"],["correspontent","correspondent"],["correspontents","correspondents"],["corresponting","corresponding"],["corresponts","corresponds"],["correspoond","correspond"],["corressponding","corresponding"],["corret","correct"],["correted","corrected"],["corretion","correction"],["corretly","correctly"],["corridoor","corridor"],["corridoors","corridors"],["corrispond","correspond"],["corrispondant","correspondent"],["corrispondants","correspondents"],["corrisponded","corresponded"],["corrispondence","correspondence"],["corrispondences","correspondences"],["corrisponding","corresponding"],["corrisponds","corresponds"],["corrleation","correlation"],["corrleations","correlations"],["corrolated","correlated"],["corrolates","correlates"],["corrolation","correlation"],["corrolations","correlations"],["corrrect","correct"],["corrrected","corrected"],["corrrecting","correcting"],["corrrection","correction"],["corrrections","corrections"],["corrrectly","correctly"],["corrrectness","correctness"],["corrrects","corrects"],["corrresponding","corresponding"],["corrresponds","corresponds"],["corrrupt","corrupt"],["corrrupted","corrupted"],["corrruption","corruption"],["corrseponding","corresponding"],["corrspond","correspond"],["corrsponded","corresponded"],["corrsponding","corresponding"],["corrsponds","corresponds"],["corrupeted","corrupted"],["corruptable","corruptible"],["corruptiuon","corruption"],["cors-site","cross-site"],["cors-sute","cross-site"],["corse","course"],["corsor","cursor"],["corss-compiling","cross-compiling"],["corss-site","cross-site"],["corss-sute","cross-site"],["corsshair","crosshair"],["corsshairs","crosshairs"],["corssite","cross-site"],["corsssite","cross-site"],["corsssute","cross-site"],["corssute","cross-site"],["corupt","corrupt"],["corupted","corrupted"],["coruption","corruption"],["coruptions","corruptions"],["corupts","corrupts"],["corus","chorus"],["corvering","covering"],["cosed","closed"],["cosnsrain","constrain"],["cosnsrained","constrained"],["cosntitutive","constitutive"],["cosntrain","constrain"],["cosntrained","constrained"],["cosntraining","constraining"],["cosntraint","constraint"],["cosntraints","constraints"],["cosntructed","constructed"],["cosntructor","constructor"],["cosnumer","consumer"],["cosolation","consolation"],["cosole","console"],["cosoled","consoled"],["cosoles","consoles"],["cosoling","consoling"],["costant","constant"],["costexpr","constexpr"],["costitution","constitution"],["costruct","construct"],["costructer","constructor"],["costructor","constructor"],["costumary","customary"],["costumize","customize"],["cotain","contain"],["cotained","contained"],["cotainer","container"],["cotains","contains"],["cotave","octave"],["cotaves","octaves"],["cotnain","contain"],["cotnained","contained"],["cotnainer","container"],["cotnainers","containers"],["cotnaining","containing"],["cotnains","contains"],["cotranser","cotransfer"],["cotrasferred","cotransferred"],["cotrasfers","cotransfers"],["cotrol","control"],["cotroll","control"],["cotrolled","controlled"],["cotroller","controller"],["cotrolles","controls"],["cotrolling","controlling"],["cotrolls","controls"],["cotrols","controls"],["cotten","cotton"],["coucil","council"],["coud","could"],["coudn't","couldn't"],["coudnt","couldn't"],["coul","could"],["could'nt","couldn't"],["could't","couldn't"],["couldent","couldn't"],["coulden`t","couldn't"],["couldn;t","couldn't"],["couldnt'","couldn't"],["couldnt","couldn't"],["couldnt;","couldn't"],["coulmns","columns"],["couln't","couldn't"],["couloumb","coulomb"],["coult","could"],["coummunities","communities"],["coummunity","community"],["coumpound","compound"],["coumpounds","compounds"],["counded","counted"],["counding","counting"],["coundition","condition"],["counds","counts"],["counld","could"],["counpound","compound"],["counpounds","compounds"],["countain","contain"],["countainer","container"],["countainers","containers"],["countains","contains"],["counterfit","counterfeit"],["counterfits","counterfeits"],["counterintuive","counter intuitive"],["countermeausure","countermeasure"],["countermeausures","countermeasures"],["counterpar","counterpart"],["counterpoart","counterpart"],["counterpoarts","counterparts"],["countinue","continue"],["courtesey","courtesy"],["cousing","cousin"],["couted","counted"],["couter","counter"],["coutermeasuere","countermeasure"],["coutermeasueres","countermeasures"],["coutermeasure","countermeasure"],["coutermeasures","countermeasures"],["couterpart","counterpart"],["couting","counting"],["coutner","counter"],["coutners","counters"],["couuld","could"],["couuldn't","couldn't"],["covarage","coverage"],["covarages","coverages"],["covarege","coverage"],["covection","convection"],["covention","convention"],["coventions","conventions"],["coverd","covered"],["covere","cover"],["coveres","covers"],["covergence","convergence"],["coverred","covered"],["coversion","conversion"],["coversions","conversions"],["coverting","converting"],["covnersion","conversion"],["covnert","convert"],["covnerted","converted"],["covnerter","converter"],["covnerters","converters"],["covnertible","convertible"],["covnerting","converting"],["covnertor","converter"],["covnertors","converters"],["covnerts","converts"],["covriance","covariance"],["covriate","covariate"],["covriates","covariates"],["coyp","copy"],["coypright","copyright"],["coyprighted","copyrighted"],["coyprights","copyrights"],["coyright","copyright"],["coyrighted","copyrighted"],["coyrights","copyrights"],["cpacities","capacities"],["cpacity","capacity"],["cpation","caption"],["cpcheck","cppcheck"],["cpontent","content"],["cppp","cpp"],["cpuld","could"],["craced","graced"],["craceful","graceful"],["cracefully","gracefully"],["cracefulness","gracefulness"],["craceless","graceless"],["cracing","gracing"],["crahed","crashed"],["crahes","crashes"],["crahses","crashes"],["crashaes","crashes"],["crasheed","crashed"],["crashees","crashes"],["crashess","crashes"],["crashign","crashing"],["crashs","crashes"],["crationist","creationist"],["crationists","creationists"],["creaate","create"],["creadential","credential"],["creadentialed","credentialed"],["creadentials","credentials"],["creaed","created"],["creaeted","created"],["creasoat","creosote"],["creastor","creator"],["creatation","creation"],["createa","create"],["createable","creatable"],["createdd","created"],["createing","creating"],["createive","creative"],["creatning","creating"],["creatre","create"],["creatred","created"],["creats","creates"],["credate","created"],["credetial","credential"],["credetials","credentials"],["credidential","credential"],["credidentials","credentials"],["credintial","credential"],["credintials","credentials"],["credis","credits"],["credists","credits"],["creditted","credited"],["creedence","credence"],["cresent","crescent"],["cresits","credits"],["cretae","create"],["cretaed","created"],["cretaes","creates"],["cretaing","creating"],["cretate","create"],["cretated","created"],["cretates","creates"],["cretating","creating"],["cretator","creator"],["cretators","creators"],["creted","created"],["creteria","criteria"],["crewsant","croissant"],["cricital","critical"],["cricitally","critically"],["cricitals","criticals"],["crirical","critical"],["crirically","critically"],["criricals","criticals"],["critcal","critical"],["critcally","critically"],["critcals","criticals"],["critcial","critical"],["critcially","critically"],["critcials","criticals"],["criteak","critique"],["critera","criteria"],["critereon","criterion"],["criterias","criteria"],["criteriom","criterion"],["criticial","critical"],["criticially","critically"],["criticials","criticals"],["criticists","critics"],["critiera","criteria"],["critiical","critical"],["critiically","critically"],["critiicals","criticals"],["critisising","criticising"],["critisism","criticism"],["critisisms","criticisms"],["critized","criticized"],["critizing","criticizing"],["croch","crotch"],["crockadile","crocodile"],["crockodiles","crocodiles"],["cronological","chronological"],["cronologically","chronologically"],["croppped","cropped"],["cros","cross"],["cros-site","cross-site"],["cros-sute","cross-site"],["croshet","crochet"],["crosreference","cross-reference"],["crosreferenced","cross-referenced"],["crosreferences","cross-references"],["cross-commpilation","cross-compilation"],["cross-orgin","cross-origin"],["crossgne","crossgen"],["crossin","crossing"],["crossite","cross-site"],["crossreference","cross-reference"],["crossreferenced","cross-referenced"],["crossreferences","cross-references"],["crosssite","cross-site"],["crosssute","cross-site"],["crossute","cross-site"],["crowdsigna","crowdsignal"],["crowkay","croquet"],["crowm","crown"],["crrespond","correspond"],["crsytal","crystal"],["crsytalline","crystalline"],["crsytallisation","crystallisation"],["crsytallise","crystallise"],["crsytallization","crystallization"],["crsytallize","crystallize"],["crsytallographic","crystallographic"],["crsytals","crystals"],["crtical","critical"],["crtically","critically"],["crticals","criticals"],["crticised","criticised"],["crucialy","crucially"],["crucifiction","crucifixion"],["cruncing","crunching"],["crurrent","current"],["crusies","cruises"],["crusor","cursor"],["crutial","crucial"],["crutially","crucially"],["crutialy","crucially"],["crypted","encrypted"],["cryptocraphic","cryptographic"],["cryptograpic","cryptographic"],["crystalisation","crystallisation"],["cryto","crypto"],["crytpo","crypto"],["csae","case"],["csaes","cases"],["cteate","create"],["cteateing","creating"],["cteater","creator"],["cteates","creates"],["cteating","creating"],["cteation","creation"],["cteations","creations"],["cteator","creator"],["ctificate","certificate"],["ctificated","certificated"],["ctificates","certificates"],["ctification","certification"],["cuasality","causality"],["cuasation","causation"],["cuase","cause"],["cuased","caused"],["cuases","causes"],["cuasing","causing"],["cuestion","question"],["cuestioned","questioned"],["cuestions","questions"],["cuileoga","cuileog"],["culiminating","culminating"],["cumlative","cumulative"],["cummand","command"],["cummulated","cumulated"],["cummulative","cumulative"],["cummunicate","communicate"],["cumulatative","cumulative"],["cumulattive","cumulative"],["cuncurency","concurrency"],["curch","church"],["curcuit","circuit"],["curcuits","circuits"],["curcumstance","circumstance"],["curcumstances","circumstances"],["cureful","careful"],["curefully","carefully"],["curefuly","carefully"],["curent","current"],["curentfilter","currentfilter"],["curently","currently"],["curernt","current"],["curerntly","currently"],["curev","curve"],["curevd","curved"],["curevs","curves"],["curiousities","curiosities"],["curiousity's","curiosity's"],["curiousity","curiosity"],["curnilinear","curvilinear"],["currecnies","currencies"],["currecny","currency"],["currected","corrected"],["currecting","correcting"],["curreent","current"],["curreents","currents"],["curremt","current"],["curremtly","currently"],["curremts","currents"],["curren","current"],["currenlty","currently"],["currenly","currently"],["currennt","current"],["currenntly","currently"],["currennts","currents"],["currentl","currently"],["currentlly","currently"],["currentry","currently"],["currenty","currently"],["curresponding","corresponding"],["curretly","currently"],["curretnly","currently"],["curriculem","curriculum"],["currious","curious"],["currnet","current"],["currnt","current"],["currntly","currently"],["curros","cursor"],["currrency","currency"],["currrent","current"],["currrently","currently"],["curruent","current"],["currupt","corrupt"],["curruptable","corruptible"],["currupted","corrupted"],["curruptible","corruptible"],["curruption","corruption"],["curruptions","corruptions"],["currupts","corrupts"],["currus","cirrus"],["curser","cursor"],["cursot","cursor"],["cursro","cursor"],["curvatrue","curvature"],["curvatrues","curvatures"],["curvelinear","curvilinear"],["cusstom","custom"],["cusstomer","customer"],["cusstomers","customers"],["cusstomizable","customizable"],["cusstomization","customization"],["cusstomize","customize"],["cusstomized","customized"],["cusstoms","customs"],["custoisable","customisable"],["custoisation","customisation"],["custoise","customise"],["custoised","customised"],["custoiser","customiser"],["custoisers","customisers"],["custoising","customising"],["custoizable","customizable"],["custoization","customization"],["custoize","customize"],["custoized","customized"],["custoizer","customizer"],["custoizers","customizers"],["custoizing","customizing"],["customable","customizable"],["customie","customize"],["customied","customized"],["customisaton","customisation"],["customisatons","customisations"],["customizaton","customization"],["customizatons","customizations"],["customizeble","customizable"],["customn","custom"],["customns","customs"],["customsied","customised"],["customzied","customized"],["custon","custom"],["custonary","customary"],["custoner","customer"],["custoners","customers"],["custonisable","customisable"],["custonisation","customisation"],["custonise","customise"],["custonised","customised"],["custoniser","customiser"],["custonisers","customisers"],["custonising","customising"],["custonizable","customizable"],["custonization","customization"],["custonize","customize"],["custonized","customized"],["custonizer","customizer"],["custonizers","customizers"],["custonizing","customizing"],["custons","customs"],["custormer","customer"],["custum","custom"],["custumer","customer"],["custumised","customised"],["custumized","customized"],["custums","customs"],["cutom","custom"],["cutted","cut"],["cuurently","currently"],["cuurrent","current"],["cuurrents","currents"],["cvignore","cvsignore"],["cxan","cyan"],["cycic","cyclic"],["cyclinder","cylinder"],["cyclinders","cylinders"],["cycular","circular"],["cygin","cygwin"],["cylcic","cyclic"],["cylcical","cyclical"],["cyle","cycle"],["cylic","cyclic"],["cylider","cylinder"],["cyliders","cylinders"],["cylindical","cylindrical"],["cylindre","cylinder"],["cyllinder","cylinder"],["cyllinders","cylinders"],["cylnder","cylinder"],["cylnders","cylinders"],["cylynders","cylinders"],["cymk","CMYK"],["cyphersuite","ciphersuite"],["cyphersuites","ciphersuites"],["cyphertext","ciphertext"],["cyphertexts","ciphertexts"],["cyprt","crypt"],["cyprtic","cryptic"],["cyprto","crypto"],["Cyrllic","Cyrillic"],["cyrpto","crypto"],["cyrrent","current"],["cyrrilic","Cyrillic"],["cyrstal","crystal"],["cyrstalline","crystalline"],["cyrstallisation","crystallisation"],["cyrstallise","crystallise"],["cyrstallization","crystallization"],["cyrstallize","crystallize"],["cyrstals","crystals"],["cyrto","crypto"],["cywgin","Cygwin"],["daa","data"],["dabase","database"],["daclaration","declaration"],["dacquiri","daiquiri"],["dadlock","deadlock"],["daed","dead"],["dafault","default"],["dafaults","defaults"],["dafaut","default"],["dafualt","default"],["dafualted","defaulted"],["dafualts","defaults"],["daita","data"],["dake","take"],["dalmation","Dalmatian"],["dalta","delta"],["damamge","damage"],["damamged","damaged"],["damamges","damages"],["damamging","damaging"],["damange","damage"],["damanged","damaged"],["damanges","damages"],["damanging","damaging"],["damenor","demeanor"],["damge","damage"],["dammage","damage"],["dammages","damages"],["danceing","dancing"],["dandidates","candidates"],["daplicating","duplicating"],["Dardenelles","Dardanelles"],["dasboard","dashboard"],["dasboards","dashboards"],["dasdot","dashdot"],["dashbaord","dashboard"],["dashbaords","dashboards"],["dashboad","dashboard"],["dashboads","dashboards"],["dashboar","dashboard"],["dashboars","dashboards"],["dashbord","dashboard"],["dashbords","dashboards"],["dashs","dashes"],["data-strcuture","data-structure"],["data-strcutures","data-structures"],["databaase","database"],["databaases","databases"],["databae","database"],["databaes","database"],["databaeses","databases"],["databas","database"],["databsae","database"],["databsaes","databases"],["databse","database"],["databses","databases"],["datadsir","datadir"],["dataet","dataset"],["dataets","datasets"],["datas","data"],["datastrcuture","datastructure"],["datastrcutures","datastructures"],["datastrem","datastream"],["datatbase","database"],["datatbases","databases"],["datatgram","datagram"],["datatgrams","datagrams"],["datatore","datastore"],["datatores","datastores"],["datatpe","datatype"],["datatpes","datatypes"],["datatpye","datatype"],["datatpyes","datatypes"],["datatset","dataset"],["datatsets","datasets"],["datatstructure","datastructure"],["datatstructures","datastructures"],["datattype","datatype"],["datattypes","datatypes"],["datatye","datatype"],["datatyep","datatype"],["datatyepe","datatype"],["datatyepes","datatypes"],["datatyeps","datatypes"],["datatyes","datatypes"],["datatyoe","datatype"],["datatyoes","datatypes"],["datatytpe","datatype"],["datatytpes","datatypes"],["dataum","datum"],["datbase","database"],["datbases","databases"],["datecreatedd","datecreated"],["datection","detection"],["datections","detections"],["datee","date"],["dateset","dataset"],["datesets","datasets"],["datset","dataset"],["datsets","datasets"],["daugher","daughter"],["daugther","daughter"],["daugthers","daughters"],["dbeian","Debian"],["DCHP","DHCP"],["dcok","dock"],["dcoked","docked"],["dcoker","docker"],["dcoking","docking"],["dcoks","docks"],["dcument","document"],["dcumented","documented"],["dcumenting","documenting"],["dcuments","documents"],["ddelete","delete"],["de-actived","deactivated"],["de-duplacate","de-duplicate"],["de-duplacated","de-duplicated"],["de-duplacates","de-duplicates"],["de-duplacation","de-duplication"],["de-duplacte","de-duplicate"],["de-duplacted","de-duplicated"],["de-duplactes","de-duplicates"],["de-duplaction","de-duplication"],["de-duplaicate","de-duplicate"],["de-duplaicated","de-duplicated"],["de-duplaicates","de-duplicates"],["de-duplaication","de-duplication"],["de-duplate","de-duplicate"],["de-duplated","de-duplicated"],["de-duplates","de-duplicates"],["de-duplation","de-duplication"],["de-fualt","default"],["de-fualts","defaults"],["de-registeres","de-registers"],["deacitivation","deactivation"],["deacitvated","deactivated"],["deactivatiion","deactivation"],["deactive","deactivate"],["deactiveate","deactivate"],["deactived","deactivated"],["deactivete","deactivate"],["deactiveted","deactivated"],["deactivetes","deactivates"],["deactiviate","deactivate"],["deactiviates","deactivates"],["deactiving","deactivating"],["deaemon","daemon"],["deafault","default"],["deafualt","default"],["deafualts","defaults"],["deafult","default"],["deafulted","defaulted"],["deafults","defaults"],["deail","deal"],["deailing","dealing"],["deaktivate","deactivate"],["deaktivated","deactivated"],["dealed","dealt"],["dealilng","dealing"],["dealloacte","deallocate"],["deallocaed","deallocated"],["dealocate","deallocate"],["dealte","delete"],["deamand","demand"],["deamanding","demanding"],["deamands","demands"],["deambigate","disambiguate"],["deambigates","disambiguates"],["deambigation","disambiguation"],["deambiguage","disambiguate"],["deambiguages","disambiguates"],["deambiguate","disambiguate"],["deambiguates","disambiguates"],["deambiguation","disambiguation"],["deamiguate","disambiguate"],["deamiguates","disambiguates"],["deamiguation","disambiguation"],["deamon","daemon"],["deamonisation","daemonisation"],["deamonise","daemonise"],["deamonised","daemonised"],["deamonises","daemonises"],["deamonising","daemonising"],["deamonization","daemonization"],["deamonize","daemonize"],["deamonized","daemonized"],["deamonizes","daemonizes"],["deamonizing","daemonizing"],["deamons","daemons"],["deassering","deasserting"],["deatch","detach"],["deatched","detached"],["deatches","detaches"],["deatching","detaching"],["deatil","detail"],["deatiled","detailed"],["deatiling","detailing"],["deatils","details"],["deativate","deactivate"],["deativated","deactivated"],["deativates","deactivates"],["deativation","deactivation"],["deattach","detach"],["deattached","detached"],["deattaches","detaches"],["deattaching","detaching"],["deattachment","detachment"],["deault","default"],["deaults","defaults"],["deauthenication","deauthentication"],["debain","Debian"],["debateable","debatable"],["debbuger","debugger"],["debehlper","debhelper"],["debgu","debug"],["debgug","debug"],["debguging","debugging"],["debhlper","debhelper"],["debia","Debian"],["debiab","Debian"],["debians","Debian's"],["debina","Debian"],["debloking","deblocking"],["debnia","Debian"],["debth","depth"],["debths","depths"],["debudg","debug"],["debudgged","debugged"],["debudgger","debugger"],["debudgging","debugging"],["debudgs","debugs"],["debufs","debugfs"],["debugee","debuggee"],["debuger","debugger"],["debugg","debug"],["debuggg","debug"],["debuggge","debuggee"],["debuggged","debugged"],["debugggee","debuggee"],["debuggger","debugger"],["debuggging","debugging"],["debugggs","debugs"],["debugginf","debugging"],["debuggs","debugs"],["debuging","debugging"],["decaffinated","decaffeinated"],["decalare","declare"],["decalared","declared"],["decalares","declares"],["decalaring","declaring"],["decalration","declaration"],["decalrations","declarations"],["decalratiosn","declarations"],["decapsulting","decapsulating"],["decathalon","decathlon"],["deccelerate","decelerate"],["deccelerated","decelerated"],["deccelerates","decelerates"],["deccelerating","decelerating"],["decceleration","deceleration"],["deccrement","decrement"],["deccremented","decremented"],["deccrements","decrements"],["Decemer","December"],["decend","descend"],["decendant","descendant"],["decendants","descendants"],["decendentant","descendant"],["decendentants","descendants"],["decending","descending"],["deciaml","decimal"],["deciamls","decimals"],["decices","decides"],["decidate","dedicate"],["decidated","dedicated"],["decidates","dedicates"],["decideable","decidable"],["decidely","decidedly"],["decie","decide"],["deciedd","decided"],["deciede","decide"],["decieded","decided"],["deciedes","decides"],["decieding","deciding"],["decieds","decides"],["deciemal","decimal"],["decies","decides"],["decieve","deceive"],["decieved","deceived"],["decieves","deceives"],["decieving","deceiving"],["decimials","decimals"],["decison","decision"],["decission","decision"],["declar","declare"],["declaraion","declaration"],["declaraions","declarations"],["declarated","declared"],["declaratinos","declarations"],["declaratiom","declaration"],["declaraton","declaration"],["declaratons","declarations"],["declarayion","declaration"],["declarayions","declarations"],["declard","declared"],["declarded","declared"],["declaritive","declarative"],["declaritively","declaratively"],["declarnig","declaring"],["declartated","declared"],["declartation","declaration"],["declartations","declarations"],["declartative","declarative"],["declartator","declarator"],["declartators","declarators"],["declarted","declared"],["declartion","declaration"],["declartions","declarations"],["declartiuon","declaration"],["declartiuons","declarations"],["declartiuve","declarative"],["declartive","declarative"],["declartor","declarator"],["declartors","declarators"],["declataions","declarations"],["declatation","declaration"],["declatations","declarations"],["declated","declared"],["declation","declaration"],["declations","declarations"],["declatory","declaratory"],["decleration","declaration"],["declerations","declarations"],["declration","declaration"],["decocde","decode"],["decocded","decoded"],["decocder","decoder"],["decocders","decoders"],["decocdes","decodes"],["decocding","decoding"],["decocdings","decodings"],["decodded","decoded"],["decodding","decoding"],["decodeing","decoding"],["decomissioned","decommissioned"],["decomissioning","decommissioning"],["decommissionn","decommission"],["decommissionned","decommissioned"],["decommpress","decompress"],["decomoposition","decomposition"],["decomposion","decomposition"],["decomposit","decompose"],["decomposited","decomposed"],["decompositing","decomposing"],["decompositon","decomposition"],["decompositons","decompositions"],["decomposits","decomposes"],["decompostion","decomposition"],["decompostition","decomposition"],["decompres","decompress"],["decompresed","decompressed"],["decompreser","decompressor"],["decompreses","decompresses"],["decompresing","decompressing"],["decompresion","decompression"],["decompresor","decompressor"],["decompressd","decompressed"],["decompresser","decompressor"],["decompresssion","decompression"],["decompse","decompose"],["decond","decode"],["deconde","decode"],["deconded","decoded"],["deconder","decoder"],["deconders","decoders"],["decondes","decodes"],["deconding","decoding"],["decondings","decodings"],["deconstract","deconstruct"],["deconstracted","deconstructed"],["deconstrcutor","deconstructor"],["decopose","decompose"],["decoposes","decomposes"],["decoraded","decorated"],["decoratrion","decoration"],["decorde","decode"],["decorded","decoded"],["decorder","decoder"],["decorders","decoders"],["decordes","decodes"],["decording","decoding"],["decordings","decodings"],["decorrellation","decorrelation"],["decortator","decorator"],["decortive","decorative"],["decose","decode"],["decosed","decoded"],["decoser","decoder"],["decosers","decoders"],["decoses","decodes"],["decosing","decoding"],["decosings","decodings"],["decration","decoration"],["decreace","decrease"],["decreas","decrease"],["decremenet","decrement"],["decremenetd","decremented"],["decremeneted","decremented"],["decrese","decrease"],["decress","decrees"],["decribe","describe"],["decribed","described"],["decribes","describes"],["decribing","describing"],["decriptive","descriptive"],["decriptor","descriptor"],["decriptors","descriptors"],["decrmenet","decrement"],["decrmenetd","decremented"],["decrmeneted","decremented"],["decrment","decrement"],["decrmented","decremented"],["decrmenting","decrementing"],["decrments","decrements"],["decroation","decoration"],["decrpt","decrypt"],["decrpted","decrypted"],["decrption","decryption"],["decrytion","decryption"],["decscription","description"],["decsion","decision"],["decsions","decisions"],["decsiptors","descriptors"],["decsribed","described"],["decsriptor","descriptor"],["decsriptors","descriptors"],["decstiption","description"],["decstiptions","descriptions"],["dectect","detect"],["dectected","detected"],["dectecting","detecting"],["dectection","detection"],["dectections","detections"],["dectector","detector"],["dectivate","deactivate"],["decutable","deductible"],["decutables","deductibles"],["decypher","decipher"],["decyphered","deciphered"],["ded","dead"],["dedault","default"],["dedections","detections"],["dedented","indented"],["dedfined","defined"],["dedidate","dedicate"],["dedidated","dedicated"],["dedidates","dedicates"],["dedly","deadly"],["deductable","deductible"],["deductables","deductibles"],["deduplacate","deduplicate"],["deduplacated","deduplicated"],["deduplacates","deduplicates"],["deduplacation","deduplication"],["deduplacte","deduplicate"],["deduplacted","deduplicated"],["deduplactes","deduplicates"],["deduplaction","deduplication"],["deduplaicate","deduplicate"],["deduplaicated","deduplicated"],["deduplaicates","deduplicates"],["deduplaication","deduplication"],["deduplate","deduplicate"],["deduplated","deduplicated"],["deduplates","deduplicates"],["deduplation","deduplication"],["dedupliate","deduplicate"],["dedupliated","deduplicated"],["deecorator","decorator"],["deeep","deep"],["deelte","delete"],["deendencies","dependencies"],["deendency","dependency"],["defail","detail"],["defailt","default"],["defalt","default"],["defalts","defaults"],["defalut","default"],["defargkey","defragkey"],["defatult","default"],["defaukt","default"],["defaul","default"],["defaulat","default"],["defaulats","defaults"],["defauld","default"],["defaulds","defaults"],["defaule","default"],["defaules","defaults"],["defaulf","default"],["defaulfs","defaults"],["defaulg","default"],["defaulgs","defaults"],["defaulh","default"],["defaulhs","defaults"],["defauling","defaulting"],["defaulit","default"],["defaulits","defaults"],["defaulkt","default"],["defaulkts","defaults"],["defaull","default"],["defaulls","defaults"],["defaullt","default"],["defaullts","defaults"],["defaulr","default"],["defaulrs","defaults"],["defaulrt","default"],["defaulrts","defaults"],["defaultet","defaulted"],["defaulty","default"],["defauly","default"],["defaulys","defaults"],["defaut","default"],["defautl","default"],["defautled","defaulted"],["defautling","defaulting"],["defautls","defaults"],["defautlt","default"],["defautly","default"],["defauts","defaults"],["defautt","default"],["defautted","defaulted"],["defautting","defaulting"],["defautts","defaults"],["defeault","default"],["defeaulted","defaulted"],["defeaulting","defaulting"],["defeaults","defaults"],["defecit","deficit"],["defeine","define"],["defeines","defines"],["defenate","definite"],["defenately","definitely"],["defendent","defendant"],["defendents","defendants"],["defenitely","definitely"],["defenition","definition"],["defenitions","definitions"],["defenitly","definitely"],["deferal","deferral"],["deferals","deferrals"],["deferance","deference"],["defered","deferred"],["deferencing","dereferencing"],["deferentiating","differentiating"],["defering","deferring"],["deferreal","deferral"],["deffensively","defensively"],["defferently","differently"],["deffering","differing"],["defferred","deferred"],["deffine","define"],["deffined","defined"],["deffinition","definition"],["deffinitively","definitively"],["deffirent","different"],["defiantely","defiantly"],["defice","device"],["defien","define"],["defiend","defined"],["defiened","defined"],["defin","define"],["definad","defined"],["definance","defiance"],["definate","definite"],["definately","definitely"],["defination","definition"],["definations","definitions"],["definatly","definitely"],["definding","defining"],["defineas","defines"],["defineed","defined"],["definend","defined"],["definete","definite"],["definetelly","definitely"],["definetely","definitely"],["definetly","definitely"],["definiation","definition"],["definied","defined"],["definietly","definitely"],["definifiton","definition"],["definining","defining"],["defininition","definition"],["defininitions","definitions"],["definintion","definition"],["definit","definite"],["definitian","definition"],["definitiion","definition"],["definitiions","definitions"],["definitio","definition"],["definitios","definitions"],["definitivly","definitively"],["definitly","definitely"],["definitoin","definition"],["definiton","definition"],["definitons","definitions"],["definned","defined"],["definnition","definition"],["defintian","definition"],["defintiion","definition"],["defintiions","definitions"],["defintion","definition"],["defintions","definitions"],["defintition","definition"],["defintivly","definitively"],["defition","definition"],["defitions","definitions"],["deflaut","default"],["defninition","definition"],["defninitions","definitions"],["defnitions","definitions"],["defore","before"],["defqault","default"],["defragmenation","defragmentation"],["defualt","default"],["defualtdict","defaultdict"],["defualts","defaults"],["defult","default"],["defulted","defaulted"],["defulting","defaulting"],["defults","defaults"],["degenarate","degenerate"],["degenarated","degenerated"],["degenarating","degenerating"],["degenaration","degeneration"],["degenracy","degeneracy"],["degenrate","degenerate"],["degenrated","degenerated"],["degenrates","degenerates"],["degenratet","degenerated"],["degenrating","degenerating"],["degenration","degeneration"],["degerate","degenerate"],["degeree","degree"],["degnerate","degenerate"],["degnerated","degenerated"],["degnerates","degenerates"],["degrads","degrades"],["degration","degradation"],["degredation","degradation"],["degreee","degree"],["degreeee","degree"],["degreeees","degrees"],["degreees","degrees"],["deifne","define"],["deifned","defined"],["deifnes","defines"],["deifning","defining"],["deimiter","delimiter"],["deine","define"],["deinitailse","deinitialise"],["deinitailze","deinitialize"],["deinitalized","deinitialized"],["deinstantating","deinstantiating"],["deintialize","deinitialize"],["deintialized","deinitialized"],["deintializing","deinitializing"],["deisgn","design"],["deisgned","designed"],["deisgner","designer"],["deisgners","designers"],["deisgning","designing"],["deisgns","designs"],["deivative","derivative"],["deivatives","derivatives"],["deivce","device"],["deivces","devices"],["deivices","devices"],["deklaration","declaration"],["dekstop","desktop"],["dekstops","desktops"],["dektop","desktop"],["dektops","desktops"],["delagate","delegate"],["delagates","delegates"],["delaloc","delalloc"],["delalyed","delayed"],["delapidated","dilapidated"],["delaraction","declaration"],["delaractions","declarations"],["delarations","declarations"],["delare","declare"],["delared","declared"],["delares","declares"],["delaring","declaring"],["delate","delete"],["delayis","delays"],["delcarations","declarations"],["delcare","declare"],["delcared","declared"],["delcares","declares"],["delclaration","declaration"],["delele","delete"],["delelete","delete"],["deleleted","deleted"],["deleletes","deletes"],["deleleting","deleting"],["delelte","delete"],["delemeter","delimiter"],["delemiter","delimiter"],["delerious","delirious"],["delet","delete"],["deletd","deleted"],["deleteable","deletable"],["deleteed","deleted"],["deleteing","deleting"],["deleteion","deletion"],["deleteting","deleting"],["deletiong","deletion"],["delets","deletes"],["delevopment","development"],["delevopp","develop"],["delgate","delegate"],["delgated","delegated"],["delgates","delegates"],["delgating","delegating"],["delgation","delegation"],["delgations","delegations"],["delgator","delegator"],["delgators","delegators"],["deliberatey","deliberately"],["deliberatly","deliberately"],["deliberite","deliberate"],["deliberitely","deliberately"],["delibery","delivery"],["delibrate","deliberate"],["delibrately","deliberately"],["delievering","delivering"],["delievery","delivery"],["delievred","delivered"],["delievries","deliveries"],["delievry","delivery"],["delimeted","delimited"],["delimeter","delimiter"],["delimeters","delimiters"],["delimiited","delimited"],["delimiiter","delimiter"],["delimiiters","delimiters"],["delimitiaion","delimitation"],["delimitiaions","delimitations"],["delimitiation","delimitation"],["delimitiations","delimitations"],["delimitied","delimited"],["delimitier","delimiter"],["delimitiers","delimiters"],["delimitiing","delimiting"],["delimitimg","delimiting"],["delimition","delimitation"],["delimitions","delimitations"],["delimitis","delimits"],["delimititation","delimitation"],["delimititations","delimitations"],["delimitited","delimited"],["delimititer","delimiter"],["delimititers","delimiters"],["delimititing","delimiting"],["delimitor","delimiter"],["delimitors","delimiters"],["delimitted","delimited"],["delimma","dilemma"],["delimted","delimited"],["delimters","delimiter"],["delink","unlink"],["delivared","delivered"],["delivative","derivative"],["delivatives","derivatives"],["deliverate","deliberate"],["delivermode","deliverymode"],["deliverying","delivering"],["delte","delete"],["delted","deleted"],["deltes","deletes"],["delting","deleting"],["deltion","deletion"],["delusionally","delusively"],["delvery","delivery"],["demaind","demand"],["demenor","demeanor"],["demension","dimension"],["demensional","dimensional"],["demensions","dimensions"],["demodualtor","demodulator"],["demog","demo"],["demographical","demographic"],["demolishon","demolition"],["demolision","demolition"],["demoninator","denominator"],["demoninators","denominators"],["demonstates","demonstrates"],["demonstrat","demonstrate"],["demonstrats","demonstrates"],["demorcracy","democracy"],["demostrate","demonstrate"],["demostrated","demonstrated"],["demostrates","demonstrates"],["demostrating","demonstrating"],["demostration","demonstration"],["demudulator","demodulator"],["denegrating","denigrating"],["denisty","density"],["denomitator","denominator"],["denomitators","denominators"],["densitity","density"],["densly","densely"],["denstiy","density"],["deocde","decode"],["deocded","decoded"],["deocder","decoder"],["deocders","decoders"],["deocdes","decodes"],["deocding","decoding"],["deocdings","decodings"],["deoes","does"],["deoesn't","doesn't"],["deompression","decompression"],["depandance","dependence"],["depandancies","dependencies"],["depandancy","dependency"],["depandent","dependent"],["deparment","department"],["deparmental","departmental"],["deparments","departments"],["depcrecated","deprecated"],["depden","depend"],["depdence","dependence"],["depdencente","dependence"],["depdencentes","dependences"],["depdences","dependences"],["depdencies","dependencies"],["depdency","dependency"],["depdend","depend"],["depdendancies","dependencies"],["depdendancy","dependency"],["depdendant","dependent"],["depdendants","dependents"],["depdended","depended"],["depdendence","dependence"],["depdendences","dependences"],["depdendencies","dependencies"],["depdendency","dependency"],["depdendent","dependent"],["depdendents","dependents"],["depdendet","dependent"],["depdendets","dependents"],["depdending","depending"],["depdends","depends"],["depdenence","dependence"],["depdenences","dependences"],["depdenencies","dependencies"],["depdenency","dependency"],["depdenent","dependent"],["depdenents","dependents"],["depdening","depending"],["depdenncies","dependencies"],["depdenncy","dependency"],["depdens","depends"],["depdent","dependent"],["depdents","dependents"],["depecated","deprecated"],["depedencies","dependencies"],["depedency","dependency"],["depedencys","dependencies"],["depedent","dependent"],["depeding","depending"],["depencencies","dependencies"],["depencency","dependency"],["depencendencies","dependencies"],["depencendency","dependency"],["depencendencys","dependencies"],["depencent","dependent"],["depencies","dependencies"],["depency","dependency"],["dependance","dependence"],["dependancies","dependencies"],["dependancy","dependency"],["dependancys","dependencies"],["dependand","dependent"],["dependcies","dependencies"],["dependcy","dependency"],["dependding","depending"],["dependecies","dependencies"],["dependecy","dependency"],["dependecys","dependencies"],["dependedn","dependent"],["dependees","dependencies"],["dependeing","depending"],["dependenceis","dependencies"],["dependencey","dependency"],["dependencie","dependency"],["dependencied","dependency"],["dependenciens","dependencies"],["dependencis","dependencies"],["dependencys","dependencies"],["dependendencies","dependencies"],["dependendency","dependency"],["dependendent","dependent"],["dependenies","dependencies"],["dependening","depending"],["dependeny","dependency"],["dependet","dependent"],["dependices","dependencies"],["dependicy","dependency"],["dependig","depending"],["dependncies","dependencies"],["dependncy","dependency"],["depened","depend"],["depenedecies","dependencies"],["depenedecy","dependency"],["depenedent","dependent"],["depenencies","dependencies"],["depenencis","dependencies"],["depenency","dependency"],["depenencys","dependencies"],["depenend","depend"],["depenendecies","dependencies"],["depenendecy","dependency"],["depenendence","dependence"],["depenendencies","dependencies"],["depenendency","dependency"],["depenendent","dependent"],["depenending","depending"],["depenent","dependent"],["depenently","dependently"],["depennding","depending"],["depent","depend"],["deperecate","deprecate"],["deperecated","deprecated"],["deperecates","deprecates"],["deperecating","deprecating"],["deploied","deployed"],["deploiment","deployment"],["deploiments","deployments"],["deployement","deployment"],["deploymenet","deployment"],["deploymenets","deployments"],["depndant","dependent"],["depnds","depends"],["deporarily","temporarily"],["deposint","deposing"],["depracated","deprecated"],["depreacte","deprecate"],["depreacted","deprecated"],["depreacts","deprecates"],["depreate","deprecate"],["depreated","deprecated"],["depreates","deprecates"],["depreating","deprecating"],["deprecatedf","deprecated"],["deprectaed","deprecated"],["deprectat","deprecate"],["deprectate","deprecate"],["deprectated","deprecated"],["deprectates","deprecates"],["deprectating","deprecating"],["deprectation","deprecation"],["deprectats","deprecates"],["deprected","deprecated"],["depricate","deprecate"],["depricated","deprecated"],["depricates","deprecates"],["depricating","deprecating"],["dequed","dequeued"],["dequeing","dequeuing"],["deques","dequeues"],["derageable","dirigible"],["derective","directive"],["derectory","directory"],["derefence","dereference"],["derefenced","dereferenced"],["derefencing","dereferencing"],["derefenrence","dereference"],["dereferance","dereference"],["dereferanced","dereferenced"],["dereferances","dereferences"],["dereferencable","dereferenceable"],["dereferencce","dereference"],["dereferencced","dereferenced"],["dereferencces","dereferences"],["dereferenccing","dereferencing"],["derefernce","dereference"],["derefernced","dereferenced"],["dereferncence","dereference"],["dereferncencer","dereferencer"],["dereferncencers","dereferencers"],["dereferncences","dereferences"],["dereferncer","dereferencer"],["dereferncers","dereferencers"],["derefernces","dereferences"],["dereferncing","dereferencing"],["derefernece","dereference"],["derefrencable","dereferenceable"],["derefrence","dereference"],["deregistartion","deregistration"],["deregisted","deregistered"],["deregisteres","deregisters"],["deregistrated","deregistered"],["deregistred","deregistered"],["deregiter","deregister"],["deregiters","deregisters"],["derevative","derivative"],["derevatives","derivatives"],["derferencing","dereferencing"],["derfien","define"],["derfiend","defined"],["derfine","define"],["derfined","defined"],["dergeistered","deregistered"],["dergistration","deregistration"],["deriair","derriere"],["dericed","derived"],["dericteries","directories"],["derictery","directory"],["dericteryes","directories"],["dericterys","directories"],["deriffed","derived"],["derivaties","derivatives"],["derivatio","derivation"],["derivativ","derivative"],["derivativs","derivatives"],["deriviated","derived"],["derivitive","derivative"],["derivitives","derivatives"],["derivitivs","derivatives"],["derivtive","derivative"],["derivtives","derivatives"],["dermine","determine"],["dermined","determined"],["dermines","determines"],["dermining","determining"],["derogitory","derogatory"],["derprecated","deprecated"],["derrivatives","derivatives"],["derrive","derive"],["derrived","derived"],["dertermine","determine"],["derterming","determining"],["derth","dearth"],["derviative","derivative"],["derviatives","derivatives"],["dervie","derive"],["dervied","derived"],["dervies","derives"],["dervived","derived"],["desactivate","deactivate"],["desactivated","deactivated"],["desallocate","deallocate"],["desallocated","deallocated"],["desallocates","deallocates"],["desaster","disaster"],["descallocate","deallocate"],["descallocated","deallocated"],["descchedules","deschedules"],["desccription","description"],["descencing","descending"],["descendands","descendants"],["descibe","describe"],["descibed","described"],["descibes","describes"],["descibing","describing"],["descide","decide"],["descided","decided"],["descides","decides"],["desciding","deciding"],["desciption","description"],["desciptions","descriptions"],["desciptor","descriptor"],["desciptors","descriptors"],["desciribe","describe"],["desciribed","described"],["desciribes","describes"],["desciribing","describing"],["desciription","description"],["desciriptions","descriptions"],["descirption","description"],["descirptor","descriptor"],["descision","decision"],["descisions","decisions"],["descize","disguise"],["descized","disguised"],["descktop","desktop"],["descktops","desktops"],["desconstructed","deconstructed"],["descover","discover"],["descovered","discovered"],["descovering","discovering"],["descovery","discovery"],["descrease","decrease"],["descreased","decreased"],["descreases","decreases"],["descreasing","decreasing"],["descrementing","decrementing"],["descrete","discrete"],["describ","describe"],["describbed","described"],["describibg","describing"],["describng","describing"],["describtion","description"],["describtions","descriptions"],["descrice","describe"],["descriced","described"],["descrices","describes"],["descricing","describing"],["descrie","describe"],["descriibes","describes"],["descriminant","discriminant"],["descriminate","discriminate"],["descriminated","discriminated"],["descriminates","discriminates"],["descriminating","discriminating"],["descriont","description"],["descriotor","descriptor"],["descripe","describe"],["descriped","described"],["descripes","describes"],["descriping","describing"],["descripition","description"],["descripor","descriptor"],["descripors","descriptors"],["descripter","descriptor"],["descripters","descriptors"],["descriptio","description"],["descriptiom","description"],["descriptionm","description"],["descriptior","descriptor"],["descriptiors","descriptors"],["descripto","descriptor"],["descriptoin","description"],["descriptoins","descriptions"],["descripton","description"],["descriptons","descriptions"],["descriptot","descriptor"],["descriptoy","descriptor"],["descriptuve","descriptive"],["descrition","description"],["descritpion","description"],["descritpions","descriptions"],["descritpiton","description"],["descritpitons","descriptions"],["descritpor","descriptor"],["descritpors","descriptors"],["descritpr","descriptor"],["descritpro","descriptor"],["descritpros","descriptors"],["descritprs","descriptors"],["descritption","description"],["descritptions","descriptions"],["descritptive","descriptive"],["descritptor","descriptor"],["descritptors","descriptors"],["descrption","description"],["descrptions","descriptions"],["descrptor","descriptor"],["descrptors","descriptors"],["descrtiption","description"],["descrtiptions","descriptions"],["descrutor","destructor"],["descrybe","describe"],["descrybing","describing"],["descryption","description"],["descryptions","descriptions"],["desctiption","description"],["desctiptor","descriptor"],["desctiptors","descriptors"],["desctop","desktop"],["desctructed","destructed"],["desctruction","destruction"],["desctructive","destructive"],["desctructor","destructor"],["desctructors","destructors"],["descuss","discuss"],["descvription","description"],["descvriptions","descriptions"],["deselct","deselect"],["deselctable","deselectable"],["deselctables","deselectable"],["deselcted","deselected"],["deselcting","deselecting"],["desepears","disappears"],["deserailise","deserialise"],["deserailize","deserialize"],["deserialisazion","deserialisation"],["deserializaed","deserialized"],["deserializazion","deserialization"],["deserialsiation","deserialisation"],["deserialsie","deserialise"],["deserialsied","deserialised"],["deserialsies","deserialises"],["deserialsing","deserialising"],["deserialze","deserialize"],["deserialzed","deserialized"],["deserialzes","deserializes"],["deserialziation","deserialization"],["deserialzie","deserialize"],["deserialzied","deserialized"],["deserialzies","deserializes"],["deserialzing","deserializing"],["desgin","design"],["desgin-mode","design-mode"],["desgined","designed"],["desginer","designer"],["desiar","desire"],["desicate","desiccate"],["desicion","decision"],["desicions","decisions"],["deside","decide"],["desided","decided"],["desides","decides"],["desig","design"],["desigern","designer"],["desigining","designing"],["designd","designed"],["desination","destination"],["desinations","destinations"],["desine","design"],["desing","design"],["desingable","designable"],["desinged","designed"],["desinger","designer"],["desinging","designing"],["desingn","design"],["desingned","designed"],["desingner","designer"],["desingning","designing"],["desingns","designs"],["desings","designs"],["desintaiton","destination"],["desintaitons","destinations"],["desintation","destination"],["desintations","destinations"],["desintegrated","disintegrated"],["desintegration","disintegration"],["desipite","despite"],["desireable","desirable"],["desision","decision"],["desisions","decisions"],["desitable","desirable"],["desitination","destination"],["desitinations","destinations"],["desition","decision"],["desitions","decisions"],["desitned","destined"],["deskop","desktop"],["deskops","desktops"],["desktiop","desktop"],["deskys","disguise"],["deslected","deselected"],["deslects","deselects"],["desltop","desktop"],["desltops","desktops"],["desn't","doesn't"],["desne","dense"],["desnse","dense"],["desogn","design"],["desogned","designed"],["desogner","designer"],["desogning","designing"],["desogns","designs"],["desolve","dissolve"],["desorder","disorder"],["desoriented","disoriented"],["desparately","desperately"],["despatch","dispatch"],["despict","depict"],["despiration","desperation"],["desplay","display"],["desplayed","displayed"],["desplays","displays"],["desposition","disposition"],["desrciption","description"],["desrciptions","descriptions"],["desribe","describe"],["desribed","described"],["desribes","describes"],["desribing","describing"],["desription","description"],["desriptions","descriptions"],["desriptor","descriptor"],["desriptors","descriptors"],["desrire","desire"],["desrired","desired"],["desroyer","destroyer"],["desscribe","describe"],["desscribing","describing"],["desscription","description"],["dessicate","desiccate"],["dessicated","desiccated"],["dessication","desiccation"],["dessigned","designed"],["desstructor","destructor"],["destablized","destabilized"],["destanation","destination"],["destanations","destinations"],["destiantion","destination"],["destiantions","destinations"],["destiation","destination"],["destiations","destinations"],["destinaion","destination"],["destinaions","destinations"],["destinaiton","destination"],["destinaitons","destinations"],["destinarion","destination"],["destinarions","destinations"],["destinataion","destination"],["destinataions","destinations"],["destinatin","destination"],["destinatino","destination"],["destinatinos","destinations"],["destinatins","destinations"],["destinaton","destination"],["destinatons","destinations"],["destinguish","distinguish"],["destintation","destination"],["destintations","destinations"],["destionation","destination"],["destionations","destinations"],["destop","desktop"],["destops","desktops"],["destoried","destroyed"],["destort","distort"],["destory","destroy"],["destoryed","destroyed"],["destorying","destroying"],["destorys","destroys"],["destoy","destroy"],["destoyed","destroyed"],["destrcut","destruct"],["destrcuted","destructed"],["destrcutor","destructor"],["destrcutors","destructors"],["destribute","distribute"],["destributed","distributed"],["destroi","destroy"],["destroied","destroyed"],["destroing","destroying"],["destrois","destroys"],["destroyes","destroys"],["destruciton","destruction"],["destructro","destructor"],["destructros","destructors"],["destruktor","destructor"],["destruktors","destructors"],["destrutor","destructor"],["destrutors","destructors"],["destry","destroy"],["destryed","destroyed"],["destryer","destroyer"],["destrying","destroying"],["destryiong","destroying"],["destryoed","destroyed"],["destryoing","destroying"],["destryong","destroying"],["destrys","destroys"],["destuction","destruction"],["destuctive","destructive"],["destuctor","destructor"],["destuctors","destructors"],["desturcted","destructed"],["desturtor","destructor"],["desturtors","destructors"],["desychronize","desynchronize"],["desychronized","desynchronized"],["detabase","database"],["detachs","detaches"],["detahced","detached"],["detaild","detailed"],["detailled","detailed"],["detais","details"],["detals","details"],["detatch","detach"],["detatched","detached"],["detatches","detaches"],["detatching","detaching"],["detault","default"],["detaulted","defaulted"],["detaulting","defaulting"],["detaults","defaults"],["detction","detection"],["detctions","detections"],["deteced","detected"],["detecing","detecting"],["detecion","detection"],["detecions","detections"],["detectected","detected"],["detectes","detects"],["detectetd","detected"],["detectsion","detection"],["detectsions","detections"],["detemine","determine"],["detemined","determined"],["detemines","determines"],["detemining","determining"],["deteoriated","deteriorated"],["deterant","deterrent"],["deteremine","determine"],["deteremined","determined"],["deteriate","deteriorate"],["deterimined","determined"],["deterine","determine"],["deterioriating","deteriorating"],["determaine","determine"],["determenant","determinant"],["determenistic","deterministic"],["determiens","determines"],["determimnes","determines"],["determin","determine"],["determinated","determined"],["determind","determined"],["determinded","determined"],["determinee","determine"],["determineing","determining"],["determinining","determining"],["deterministinc","deterministic"],["determinne","determine"],["determins","determines"],["determinse","determines"],["determinstic","deterministic"],["determinstically","deterministically"],["determintes","determines"],["determnine","determine"],["deternine","determine"],["detetmine","determine"],["detial","detail"],["detialed","detailed"],["detialing","detailing"],["detials","details"],["detination","destination"],["detinations","destinations"],["detremental","detrimental"],["detremining","determining"],["detrmine","determine"],["detrmined","determined"],["detrmines","determines"],["detrmining","determining"],["detroy","destroy"],["detroyed","destroyed"],["detroying","destroying"],["detroys","destroys"],["detructed","destructed"],["dettach","detach"],["dettaching","detaching"],["detur","detour"],["deturance","deterrence"],["deubug","debug"],["deubuging","debugging"],["deug","debug"],["deugging","debugging"],["devasted","devastated"],["devation","deviation"],["devce","device"],["devcent","decent"],["devcie","device"],["devcies","devices"],["develoers","developers"],["develoment","development"],["develoments","developments"],["develompent","development"],["develompental","developmental"],["develompents","developments"],["develope","develop"],["developement","development"],["developements","developments"],["developmemt","development"],["developmet","development"],["developmetns","developments"],["developmets","developments"],["developp","develop"],["developpe","develop"],["developped","developed"],["developpement","development"],["developper","developer"],["developpers","developers"],["developpment","development"],["develp","develop"],["develped","developed"],["develper","developer"],["develpers","developers"],["develping","developing"],["develpment","development"],["develpments","developments"],["develps","develops"],["devels","delves"],["deveolpment","development"],["deveopers","developers"],["deverloper","developer"],["deverlopers","developers"],["devestated","devastated"],["devestating","devastating"],["devfine","define"],["devfined","defined"],["devfines","defines"],["devic","device"],["devicde","device"],["devicdes","devices"],["device-dependend","device-dependent"],["devicec","device"],["devicecoordiinates","devicecoordinates"],["deviceremoveable","deviceremovable"],["devicesr","devices"],["devicess","devices"],["devicest","devices"],["devide","divide"],["devided","divided"],["devider","divider"],["deviders","dividers"],["devides","divides"],["deviding","dividing"],["deviece","device"],["devied","device"],["deviiate","deviate"],["deviiated","deviated"],["deviiates","deviates"],["deviiating","deviating"],["deviiation","deviation"],["deviiations","deviations"],["devined","defined"],["devired","derived"],["devirtualisaion","devirtualisation"],["devirtualisaiton","devirtualisation"],["devirtualizaion","devirtualization"],["devirtualizaiton","devirtualization"],["devirutalisation","devirtualisation"],["devirutalise","devirtualise"],["devirutalised","devirtualised"],["devirutalization","devirtualization"],["devirutalize","devirtualize"],["devirutalized","devirtualized"],["devisible","divisible"],["devision","division"],["devistating","devastating"],["devive","device"],["devleop","develop"],["devleoped","developed"],["devleoper","developer"],["devleopers","developers"],["devleoping","developing"],["devleopment","development"],["devleopper","developer"],["devleoppers","developers"],["devlop","develop"],["devloped","developed"],["devloper's","developer's"],["devloper","developer"],["devlopers","developers"],["devloping","developing"],["devlopment","development"],["devlopments","developments"],["devlopper","developer"],["devloppers","developers"],["devlops","develops"],["devolopement","development"],["devritualisation","devirtualisation"],["devritualization","devirtualization"],["devuce","device"],["dewrapping","unwrapping"],["dezert","dessert"],["dezibel","decibel"],["dezine","design"],["dezinens","denizens"],["dfine","define"],["dfined","defined"],["dfines","defines"],["dfinition","definition"],["dfinitions","definitions"],["dgetttext","dgettext"],["diable","disable"],["diabled","disabled"],["diabler","disabler"],["diablers","disablers"],["diables","disables"],["diablical","diabolical"],["diabling","disabling"],["diaciritc","diacritic"],["diaciritcs","diacritics"],["diagnistic","diagnostic"],["diagnoal","diagonal"],["diagnoals","diagonals"],["diagnol","diagonal"],["diagnosics","diagnostics"],["diagnositc","diagnostic"],["diagnotic","diagnostic"],["diagnotics","diagnostics"],["diagnxostic","diagnostic"],["diagonale","diagonal"],["diagonales","diagonals"],["diagramas","diagrams"],["diagramm","diagram"],["dialaog","dialog"],["dialate","dilate"],["dialgo","dialog"],["dialgos","dialogs"],["dialig","dialog"],["dialigs","dialogs"],["diamater","diameter"],["diamaters","diameters"],["diamon","diamond"],["diamons","diamonds"],["diamter","diameter"],["diamters","diameters"],["diangose","diagnose"],["dianostic","diagnostic"],["dianostics","diagnostics"],["diaplay","display"],["diaplays","displays"],["diappeares","disappears"],["diarea","diarrhea"],["diaresis","diaeresis"],["diasble","disable"],["diasbled","disabled"],["diasbles","disables"],["diasbling","disabling"],["diaspra","diaspora"],["diaster","disaster"],["diatance","distance"],["diatancing","distancing"],["dicard","discard"],["dicarded","discarded"],["dicarding","discarding"],["dicards","discards"],["dicates","dictates"],["dicationaries","dictionaries"],["dicationary","dictionary"],["dicergence","divergence"],["dichtomy","dichotomy"],["dicionaries","dictionaries"],["dicionary","dictionary"],["dicipline","discipline"],["dicitonaries","dictionaries"],["dicitonary","dictionary"],["dicline","decline"],["diconnected","disconnected"],["diconnection","disconnection"],["diconnects","disconnects"],["dicover","discover"],["dicovered","discovered"],["dicovering","discovering"],["dicovers","discovers"],["dicovery","discovery"],["dicrectory","directory"],["dicrete","discrete"],["dicretion","discretion"],["dicretionary","discretionary"],["dicriminate","discriminate"],["dicriminated","discriminated"],["dicriminates","discriminates"],["dicriminating","discriminating"],["dicriminator","discriminator"],["dicriminators","discriminators"],["dicsriminated","discriminated"],["dictaionaries","dictionaries"],["dictaionary","dictionary"],["dictinary","dictionary"],["dictioanries","dictionaries"],["dictioanry","dictionary"],["dictionarys","dictionaries"],["dictionay","dictionary"],["dictionnaries","dictionaries"],["dictionnary","dictionary"],["dictionries","dictionaries"],["dictionry","dictionary"],["dictoinaries","dictionaries"],["dictoinary","dictionary"],["dictonaries","dictionaries"],["dictonary","dictionary"],["dictrionaries","dictionaries"],["dictrionary","dictionary"],["dicussed","discussed"],["dicussions","discussions"],["did'nt","didn't"],["didi","did"],["didn;t","didn't"],["didnt'","didn't"],["didnt't","didn't"],["didnt","didn't"],["didnt;","didn't"],["diect","direct"],["diectly","directly"],["dielectirc","dielectric"],["dielectircs","dielectrics"],["diemsion","dimension"],["dieties","deities"],["diety","deity"],["diference","difference"],["diferences","differences"],["diferent","different"],["diferentiate","differentiate"],["diferentiated","differentiated"],["diferentiates","differentiates"],["diferentiating","differentiating"],["diferently","differently"],["diferrent","different"],["diffcult","difficult"],["diffculties","difficulties"],["diffculty","difficulty"],["diffeent","different"],["diffence","difference"],["diffenet","different"],["diffenrence","difference"],["diffenrences","differences"],["differance","difference"],["differances","differences"],["differant","different"],["differantiate","differentiate"],["differantiation","differentiation"],["differantiator","differentiator"],["differantion","differentiation"],["differate","differentiate"],["differece","difference"],["differect","different"],["differen","different"],["differencess","differences"],["differencial","differential"],["differenciate","differentiate"],["differenciated","differentiated"],["differenciates","differentiates"],["differenciating","differentiating"],["differenciation","differentiation"],["differencies","differences"],["differenct","different"],["differend","different"],["differene","difference"],["differenes","differences"],["differenly","differently"],["differens","difference"],["differense","difference"],["differentiatiations","differentiations"],["differentiaton","differentiation"],["differentl","differently"],["differernt","different"],["differes","differs"],["differetnt","different"],["differnce","difference"],["differnces","differences"],["differnciate","differentiate"],["differnec","difference"],["differnece","difference"],["differneces","differences"],["differnecs","differences"],["differnence","difference"],["differnences","differences"],["differnencing","differencing"],["differnent","different"],["differnet","different"],["differnetiate","differentiate"],["differnetiated","differentiated"],["differnetly","differently"],["differnt","different"],["differntiable","differentiable"],["differntial","differential"],["differntials","differentials"],["differntiate","differentiate"],["differntiated","differentiated"],["differntiates","differentiates"],["differntiating","differentiating"],["differntly","differently"],["differred","differed"],["differrence","difference"],["differrent","different"],["difffered","differed"],["diffferent","different"],["diffferently","differently"],["difffers","differs"],["difficault","difficult"],["difficaulties","difficulties"],["difficaulty","difficulty"],["difficulity","difficulty"],["difficutl","difficult"],["difficutly","difficulty"],["diffreences","differences"],["diffreent","different"],["diffrence","difference"],["diffrences","differences"],["diffrent","different"],["diffrential","differential"],["diffrentiate","differentiate"],["diffrentiated","differentiated"],["diffrently","differently"],["diffrerence","difference"],["diffrerences","differences"],["diffult","difficult"],["diffussion","diffusion"],["diffussive","diffusive"],["dificulties","difficulties"],["dificulty","difficulty"],["difinition","definition"],["difinitions","definitions"],["difract","diffract"],["difracted","diffracted"],["difraction","diffraction"],["difractive","diffractive"],["difussion","diffusion"],["difussive","diffusive"],["digesty","digest"],["diggit","digit"],["diggital","digital"],["diggits","digits"],["digial","digital"],["digist","digits"],["digitalise","digitize"],["digitalising","digitizing"],["digitalize","digitize"],["digitalizing","digitizing"],["digitial","digital"],["digitis","digits"],["dignostics","diagnostics"],["dilema","dilemma"],["dilemas","dilemmas"],["dilineate","delineate"],["dillema","dilemma"],["dillemas","dilemmas"],["dilligence","diligence"],["dilligent","diligent"],["dilligently","diligently"],["dillimport","dllimport"],["dimansion","dimension"],["dimansional","dimensional"],["dimansions","dimensions"],["dimemsions","dimensions"],["dimenional","dimensional"],["dimenionalities","dimensionalities"],["dimenionality","dimensionality"],["dimenions","dimensions"],["dimenionsal","dimensional"],["dimenionsalities","dimensionalities"],["dimenionsality","dimensionality"],["dimenison","dimension"],["dimensinal","dimensional"],["dimensinoal","dimensional"],["dimensinos","dimensions"],["dimensionaility","dimensionality"],["dimensiones","dimensions"],["dimensonal","dimensional"],["dimenstion","dimension"],["dimenstions","dimensions"],["dimention","dimension"],["dimentional","dimensional"],["dimentionnal","dimensional"],["dimentionnals","dimensional"],["dimentions","dimensions"],["dimesions","dimensions"],["dimesnion","dimension"],["dimesnional","dimensional"],["dimesnions","dimensions"],["diminsh","diminish"],["diminshed","diminished"],["diminuitive","diminutive"],["dimissed","dismissed"],["dimmension","dimension"],["dimmensioned","dimensioned"],["dimmensioning","dimensioning"],["dimmensions","dimensions"],["dimnension","dimension"],["dimnention","dimension"],["dimunitive","diminutive"],["dinamic","dynamic"],["dinamically","dynamically"],["dinamicaly","dynamically"],["dinamiclly","dynamically"],["dinamicly","dynamically"],["dinmaic","dynamic"],["dinteractively","interactively"],["diong","doing"],["diosese","diocese"],["diphtong","diphthong"],["diphtongs","diphthongs"],["diplacement","displacement"],["diplay","display"],["diplayed","displayed"],["diplaying","displaying"],["diplays","displays"],["diplomancy","diplomacy"],["dipthong","diphthong"],["dipthongs","diphthongs"],["dircet","direct"],["dircetories","directories"],["dircetory","directory"],["dirctly","directly"],["dirctories","directories"],["dirctory","directory"],["direccion","direction"],["direcctly","directly"],["direcctory","directory"],["direcctorys","directories"],["direcctries","directories"],["direcdories","directories"],["direcdory","directory"],["direcdorys","directories"],["direcion","direction"],["direcions","directions"],["direciton","direction"],["direcitonal","directional"],["direcitons","directions"],["direclty","directly"],["direcly","directly"],["direcories","directories"],["direcory","directory"],["direcotories","directories"],["direcotory","directory"],["direcotries","directories"],["direcotry","directory"],["direcoty","directory"],["directd","directed"],["directely","directly"],["directes","directs"],["directgories","directories"],["directgory","directory"],["directiories","directories"],["directiory","directory"],["directoies","directories"],["directon","direction"],["directoories","directories"],["directoory","directory"],["directores","directories"],["directoris","directories"],["directort","directory"],["directorty","directory"],["directorys","directories"],["directoty","directory"],["directove","directive"],["directoves","directives"],["directoy","directory"],["directpries","directories"],["directpry","directory"],["directries","directories"],["directrive","directive"],["directrives","directives"],["directrly","directly"],["directroies","directories"],["directrories","directories"],["directrory","directory"],["directroy","directory"],["directry","directory"],["directsion","direction"],["directsions","directions"],["directtories","directories"],["directtory","directory"],["directy","directly"],["direectly","directly"],["diregard","disregard"],["direktly","directly"],["direrctor","director"],["direrctories","directories"],["direrctors","directors"],["direrctory","directory"],["diretive","directive"],["diretly","directly"],["diretories","directories"],["diretory","directory"],["direvctory","directory"],["dirived","derived"],["dirrectly","directly"],["dirtectory","directory"],["dirtyed","dirtied"],["dirtyness","dirtiness"],["dirver","driver"],["disabe","disable"],["disabeling","disabling"],["disabels","disables"],["disabes","disables"],["disabilitiles","disabilities"],["disabilitily","disability"],["disabiltities","disabilities"],["disabiltitiy","disability"],["disabing","disabling"],["disabl","disable"],["disablle","disable"],["disadvantadge","disadvantage"],["disagreeed","disagreed"],["disagress","disagrees"],["disalb","disable"],["disalbe","disable"],["disalbed","disabled"],["disalbes","disables"],["disale","disable"],["disaled","disabled"],["disalow","disallow"],["disambigouate","disambiguate"],["disambiguaiton","disambiguation"],["disambiguiation","disambiguation"],["disapear","disappear"],["disapeard","disappeared"],["disapeared","disappeared"],["disapearing","disappearing"],["disapears","disappears"],["disapline","discipline"],["disapoint","disappoint"],["disapointed","disappointed"],["disapointing","disappointing"],["disappared","disappeared"],["disappearaing","disappearing"],["disappeard","disappeared"],["disappearred","disappeared"],["disapper","disappear"],["disapperar","disappear"],["disapperarance","disappearance"],["disapperared","disappeared"],["disapperars","disappears"],["disappered","disappeared"],["disappering","disappearing"],["disappers","disappears"],["disapporval","disapproval"],["disapporve","disapprove"],["disapporved","disapproved"],["disapporves","disapproves"],["disapporving","disapproving"],["disapprouval","disapproval"],["disapprouve","disapprove"],["disapprouved","disapproved"],["disapprouves","disapproves"],["disapprouving","disapproving"],["disaproval","disapproval"],["disard","discard"],["disariable","desirable"],["disassebled","disassembled"],["disassocate","disassociate"],["disassocation","disassociation"],["disasssembler","disassembler"],["disasterous","disastrous"],["disatisfaction","dissatisfaction"],["disatisfied","dissatisfied"],["disatrous","disastrous"],["disbale","disable"],["disbaled","disabled"],["disbales","disables"],["disbaling","disabling"],["disble","disable"],["disbled","disabled"],["discared","discarded"],["discareded","discarded"],["discarge","discharge"],["discconecct","disconnect"],["discconeccted","disconnected"],["discconeccting","disconnecting"],["discconecction","disconnection"],["discconecctions","disconnections"],["discconeccts","disconnects"],["discconect","disconnect"],["discconected","disconnected"],["discconecting","disconnecting"],["discconection","disconnection"],["discconections","disconnections"],["discconects","disconnects"],["discconeect","disconnect"],["discconeected","disconnected"],["discconeecting","disconnecting"],["discconeection","disconnection"],["discconeections","disconnections"],["discconeects","disconnects"],["discconenct","disconnect"],["discconencted","disconnected"],["discconencting","disconnecting"],["discconenction","disconnection"],["discconenctions","disconnections"],["discconencts","disconnects"],["discconet","disconnect"],["discconeted","disconnected"],["discconeting","disconnecting"],["discconetion","disconnection"],["discconetions","disconnections"],["discconets","disconnects"],["disccuss","discuss"],["discernable","discernible"],["dischare","discharge"],["discimenation","dissemination"],["disciplins","disciplines"],["disclamer","disclaimer"],["disconecct","disconnect"],["disconeccted","disconnected"],["disconeccting","disconnecting"],["disconecction","disconnection"],["disconecctions","disconnections"],["disconeccts","disconnects"],["disconect","disconnect"],["disconected","disconnected"],["disconecting","disconnecting"],["disconection","disconnection"],["disconections","disconnections"],["disconects","disconnects"],["disconeect","disconnect"],["disconeected","disconnected"],["disconeecting","disconnecting"],["disconeection","disconnection"],["disconeections","disconnections"],["disconeects","disconnects"],["disconenct","disconnect"],["disconencted","disconnected"],["disconencting","disconnecting"],["disconenction","disconnection"],["disconenctions","disconnections"],["disconencts","disconnects"],["disconet","disconnect"],["disconeted","disconnected"],["disconeting","disconnecting"],["disconetion","disconnection"],["disconetions","disconnections"],["disconets","disconnects"],["disconnec","disconnect"],["disconneced","disconnected"],["disconnet","disconnect"],["disconneted","disconnected"],["disconneting","disconnecting"],["disconnets","disconnects"],["disconnnect","disconnect"],["discontigious","discontiguous"],["discontigous","discontiguous"],["discontiguities","discontinuities"],["discontinous","discontinuous"],["discontinuos","discontinuous"],["discoraged","discouraged"],["discouranged","discouraged"],["discourarged","discouraged"],["discourrage","discourage"],["discourraged","discouraged"],["discove","discover"],["discoved","discovered"],["discovereability","discoverability"],["discoveribility","discoverability"],["discovey","discovery"],["discovr","discover"],["discovred","discovered"],["discovring","discovering"],["discovrs","discovers"],["discrace","disgrace"],["discraced","disgraced"],["discraceful","disgraceful"],["discracefully","disgracefully"],["discracefulness","disgracefulness"],["discraces","disgraces"],["discracing","disgracing"],["discrards","discards"],["discreminates","discriminates"],["discrepencies","discrepancies"],["discrepency","discrepancy"],["discrepicies","discrepancies"],["discribe","describe"],["discribed","described"],["discribes","describes"],["discribing","describing"],["discription","description"],["discriptions","descriptions"],["discriptor's","descriptor's"],["discriptor","descriptor"],["discriptors","descriptors"],["disctinction","distinction"],["disctinctive","distinctive"],["disctinguish","distinguish"],["disctionaries","dictionaries"],["disctionary","dictionary"],["discuassed","discussed"],["discused","discussed"],["discusion","discussion"],["discusions","discussions"],["discusson","discussion"],["discussons","discussions"],["discusting","disgusting"],["discuusion","discussion"],["disdvantage","disadvantage"],["disecting","dissecting"],["disection","dissection"],["diselect","deselect"],["disemination","dissemination"],["disenchanged","disenchanted"],["disencouraged","discouraged"],["disertation","dissertation"],["disfunctional","dysfunctional"],["disfunctionality","dysfunctionality"],["disgn","design"],["disgned","designed"],["disgner","designer"],["disgning","designing-"],["disgnostic","diagnostic"],["disgnostics","diagnostics"],["disgns","designs"],["disguisting","disgusting"],["disharge","discharge"],["disign","design"],["disignated","designated"],["disinguish","distinguish"],["disiplined","disciplined"],["disired","desired"],["disitributions","distributions"],["diskrete","discrete"],["diskretion","discretion"],["diskretization","discretization"],["diskretize","discretize"],["diskretized","discretized"],["diskrimination","discrimination"],["dislaimer","disclaimer"],["dislay","display"],["dislayed","displayed"],["dislaying","displaying"],["dislays","displays"],["dislpay","display"],["dislpayed","displayed"],["dislpaying","displaying"],["dislpays","displays"],["disnabled","disabled"],["disobediance","disobedience"],["disobediant","disobedient"],["disokay","display"],["disolve","dissolve"],["disolved","dissolved"],["disonnect","disconnect"],["disonnected","disconnected"],["disover","discover"],["disovered","discovered"],["disovering","discovering"],["disovery","discovery"],["dispached","dispatched"],["dispair","despair"],["dispalcement","displacement"],["dispalcements","displacements"],["dispaly","display"],["dispalyable","displayable"],["dispalyed","displayed"],["dispalyes","displays"],["dispalying","displaying"],["dispalys","displays"],["disparingly","disparagingly"],["disparite","disparate"],["dispatcgh","dispatch"],["dispatchs","dispatches"],["dispath","dispatch"],["dispathed","dispatched"],["dispathes","dispatches"],["dispathing","dispatching"],["dispay","display"],["dispayed","displayed"],["dispayes","displays"],["dispayport","displayport"],["dispays","displays"],["dispbibute","distribute"],["dispell","dispel"],["dispence","dispense"],["dispenced","dispensed"],["dispencing","dispensing"],["dispertion","dispersion"],["dispicable","despicable"],["dispite","despite"],["displa","display"],["displacemnt","displacement"],["displacemnts","displacements"],["displacment","displacement"],["displacments","displacements"],["displayd","displayed"],["displayied","displayed"],["displayig","displaying"],["disply","display"],["displyed","displayed"],["displying","displaying"],["displys","displays"],["dispode","dispose"],["disporue","disparue"],["disporve","disprove"],["disporved","disproved"],["disporves","disproves"],["disporving","disproving"],["disposel","disposal"],["dispossable","disposable"],["dispossal","disposal"],["disposse","dispose"],["dispossing","disposing"],["dispostion","disposition"],["disproportiate","disproportionate"],["disproportionatly","disproportionately"],["disputandem","disputandum"],["disregrad","disregard"],["disrete","discrete"],["disretion","discretion"],["disribution","distribution"],["disricts","districts"],["disrm","disarm"],["dissable","disable"],["dissabled","disabled"],["dissables","disables"],["dissabling","disabling"],["dissadvantage","disadvantage"],["dissadvantages","disadvantages"],["dissagreement","disagreement"],["dissagregation","dissaggregation"],["dissallow","disallow"],["dissallowed","disallowed"],["dissallowing","disallowing"],["dissallows","disallows"],["dissalow","disallow"],["dissalowed","disallowed"],["dissalowing","disallowing"],["dissalows","disallows"],["dissambiguate","disambiguate"],["dissamble","disassemble"],["dissambled","disassembled"],["dissambler","disassembler"],["dissambles","disassembles"],["dissamblies","disassemblies"],["dissambling","disassembling"],["dissambly","disassembly"],["dissapate","dissipate"],["dissapates","dissipates"],["dissapear","disappear"],["dissapearance","disappearance"],["dissapeard","disappeared"],["dissapeared","disappeared"],["dissapearing","disappearing"],["dissapears","disappears"],["dissaper","disappear"],["dissaperd","disappeared"],["dissapered","disappeared"],["dissapering","disappearing"],["dissapers","disappears"],["dissapoint","disappoint"],["dissapointed","disappointed"],["dissapointing","disappointing"],["dissapoints","disappoints"],["dissappear","disappear"],["dissappeard","disappeared"],["dissappeared","disappeared"],["dissappearing","disappearing"],["dissappears","disappears"],["dissapper","disappear"],["dissapperd","disappeared"],["dissappered","disappeared"],["dissappering","disappearing"],["dissappers","disappears"],["dissappointed","disappointed"],["dissapprove","disapprove"],["dissapproves","disapproves"],["dissarray","disarray"],["dissasemble","disassemble"],["dissasembled","disassembled"],["dissasembler","disassembler"],["dissasembles","disassembles"],["dissasemblies","disassemblies"],["dissasembling","disassembling"],["dissasembly","disassembly"],["dissasociate","disassociate"],["dissasociated","disassociated"],["dissasociates","disassociates"],["dissasociation","disassociation"],["dissassemble","disassemble"],["dissassembled","disassembled"],["dissassembler","disassembler"],["dissassembles","disassembles"],["dissassemblies","disassemblies"],["dissassembling","disassembling"],["dissassembly","disassembly"],["dissassociate","disassociate"],["dissassociated","disassociated"],["dissassociates","disassociates"],["dissassociating","disassociating"],["dissaster","disaster"],["dissasters","disasters"],["dissble","disable"],["dissbled","disabled"],["dissbles","disables"],["dissbling","disabling"],["dissconect","disconnect"],["dissconnect","disconnect"],["dissconnected","disconnected"],["dissconnects","disconnects"],["disscover","discover"],["disscovered","discovered"],["disscovering","discovering"],["disscovers","discovers"],["disscovery","discovery"],["dissct","dissect"],["disscted","dissected"],["disscting","dissecting"],["dissctor","dissector"],["dissctors","dissectors"],["disscts","dissects"],["disscuesed","discussed"],["disscus","discuss"],["disscused","discussed"],["disscuses","discusses"],["disscusing","discussing"],["disscusion","discussion"],["disscuss","discuss"],["disscussed","discussed"],["disscusses","discusses"],["disscussing","discussing"],["disscussion","discussion"],["disscussions","discussions"],["disshearteningly","dishearteningly"],["dissimialr","dissimilar"],["dissimialrity","dissimilarity"],["dissimialrly","dissimilarly"],["dissimiar","dissimilar"],["dissimilarily","dissimilarly"],["dissimilary","dissimilarly"],["dissimilat","dissimilar"],["dissimilia","dissimilar"],["dissimiliar","dissimilar"],["dissimiliarity","dissimilarity"],["dissimiliarly","dissimilarly"],["dissimiliarty","dissimilarity"],["dissimiliary","dissimilarity"],["dissimillar","dissimilar"],["dissimlar","dissimilar"],["dissimlarlity","dissimilarity"],["dissimlarly","dissimilarly"],["dissimliar","dissimilar"],["dissimliarly","dissimilarly"],["dissimmetric","dissymmetric"],["dissimmetrical","dissymmetrical"],["dissimmetry","dissymmetry"],["dissmantle","dismantle"],["dissmantled","dismantled"],["dissmantles","dismantles"],["dissmantling","dismantling"],["dissmis","dismiss"],["dissmised","dismissed"],["dissmises","dismisses"],["dissmising","dismissing"],["dissmiss","dismiss"],["dissmissed","dismissed"],["dissmisses","dismisses"],["dissmissing","dismissing"],["dissobediance","disobedience"],["dissobediant","disobedient"],["dissobedience","disobedience"],["dissobedient","disobedient"],["dissplay","display"],["dissrupt","disrupt"],["dissrupted","disrupted"],["dissrupting","disrupting"],["dissrupts","disrupts"],["disssemble","disassemble"],["disssembled","disassembled"],["disssembler","disassembler"],["disssembles","disassembles"],["disssemblies","disassemblies"],["disssembling","disassembling"],["disssembly","disassembly"],["disssociate","dissociate"],["disssociated","dissociated"],["disssociates","dissociates"],["disssociating","dissociating"],["distaced","distanced"],["distange","distance"],["distanse","distance"],["distantce","distance"],["distarct","distract"],["distater","disaster"],["distengish","distinguish"],["distibute","distribute"],["distibuted","distributed"],["distibutes","distributes"],["distibuting","distributing"],["distibution","distribution"],["distibutions","distributions"],["distiction","distinction"],["distictly","distinctly"],["distiguish","distinguish"],["distiguished","distinguished"],["distinative","distinctive"],["distingish","distinguish"],["distingished","distinguished"],["distingishes","distinguishes"],["distingishing","distinguishing"],["distingiush","distinguish"],["distingquished","distinguished"],["distinguise","distinguish"],["distinguised","distinguished"],["distinguises","distinguishes"],["distingush","distinguish"],["distingushed","distinguished"],["distingushes","distinguishes"],["distingushing","distinguishing"],["distingusih","distinguish"],["distinquish","distinguish"],["distinquishable","distinguishable"],["distinquished","distinguished"],["distinquishes","distinguishes"],["distinquishing","distinguishing"],["distintions","distinctions"],["distirbute","distribute"],["distirbuted","distributed"],["distirbutes","distributes"],["distirbuting","distributing"],["distirbution","distribution"],["distirbutions","distributions"],["distirted","distorted"],["distnace","distance"],["distnaces","distances"],["distnce","distance"],["distnces","distances"],["distnct","distinct"],["distncte","distance"],["distnctes","distances"],["distnguish","distinguish"],["distnguished","distinguished"],["distniguish","distinguish"],["distniguished","distinguished"],["distorsion","distortion"],["distorsional","distortional"],["distorsions","distortions"],["distrbute","distribute"],["distrbuted","distributed"],["distrbutes","distributes"],["distrbuting","distributing"],["distrbution","distribution"],["distrbutions","distributions"],["distrct","district"],["distrcts","districts"],["distrebuted","distributed"],["distribtion","distribution"],["distribtions","distributions"],["distribtuion","distribution"],["distribtuions","distributions"],["distribtution","distributions"],["distribue","distribute"],["distribued","distributed"],["distribues","distributes"],["distribuion","distribution"],["distribuite","distribute"],["distribuited","distributed"],["distribuiting","distributing"],["distribuition","distribution"],["distribuitng","distributing"],["distribure","distribute"],["districct","district"],["distrobute","distribute"],["distrobuted","distributed"],["distrobutes","distributes"],["distrobuting","distributing"],["distrobution","distribution"],["distrobutions","distributions"],["distrobuts","distributes"],["distroname","distro name"],["distroying","destroying"],["distrub","disturb"],["distrubiotion","distribution"],["distrubite","distribute"],["distrubtion","distribution"],["distrubute","distribute"],["distrubuted","distributed"],["distrubution","distribution"],["distrubutions","distributions"],["distrubutor","distributor"],["distrubutors","distributors"],["distruction","destruction"],["distructive","destructive"],["distructor","destructor"],["distructors","destructors"],["distuingish","distinguish"],["disuade","dissuade"],["disucssion","discussion"],["disucssions","discussions"],["disucussion","discussion"],["disussion","discussion"],["disussions","discussions"],["disutils","distutils"],["ditance","distance"],["ditial","digital"],["ditinguishes","distinguishes"],["ditorconfig","editorconfig"],["ditribute","distribute"],["ditributed","distributed"],["ditribution","distribution"],["ditributions","distributions"],["divde","divide"],["divded","divided"],["divdes","divides"],["divding","dividing"],["divertion","diversion"],["divertions","diversions"],["divet","divot"],["divice","device"],["divicer","divider"],["divion","division"],["divisable","divisible"],["divisior","divisor"],["divison","division"],["divisons","divisions"],["divrese","diverse"],["divsion","division"],["divsions","divisions"],["divsiors","divisors"],["dloating","floating"],["dnamically","dynamically"],["dne","done"],["dnymaic","dynamic"],["do'nt","don't"],["doagonal","diagonal"],["doagonals","diagonals"],["doalog","dialog"],["doamins","domains"],["doasn't","doesn't"],["doble","double"],["dobled","doubled"],["dobles","doubles"],["dobling","doubling"],["doccument","document"],["doccumented","documented"],["doccuments","documents"],["dockson","dachshund"],["docmenetation","documentation"],["docmuent","document"],["docmunet","document"],["docmunetation","documentation"],["docmuneted","documented"],["docmuneting","documenting"],["docmunets","documents"],["docoment","document"],["docomentation","documentation"],["docomented","documented"],["docomenting","documenting"],["docoments","documents"],["docrines","doctrines"],["docstatistik","docstatistic"],["docsund","dachshund"],["doctines","doctrines"],["doctorial","doctoral"],["docucument","document"],["docuement","document"],["docuements","documents"],["docuemnt","document"],["docuemnts","documents"],["docuemtn","document"],["docuemtnation","documentation"],["docuemtned","documented"],["docuemtning","documenting"],["docuemtns","documents"],["docuent","document"],["docuentation","documentation"],["documant","document"],["documantation","documentation"],["documants","documents"],["documation","documentation"],["documemt","document"],["documen","document"],["documenatation","documentation"],["documenation","documentation"],["documenatry","documentary"],["documenet","document"],["documenetation","documentation"],["documeneted","documented"],["documeneter","documenter"],["documeneters","documenters"],["documeneting","documenting"],["documenets","documents"],["documentaion","documentation"],["documentaiton","documentation"],["documentataion","documentation"],["documentataions","documentations"],["documentaton","documentation"],["documentes","documents"],["documention","documentation"],["documetation","documentation"],["documetnation","documentation"],["documment","document"],["documments","documents"],["documnet","document"],["documnetation","documentation"],["documument","document"],["docunment","document"],["doed","does"],["doen's","doesn't"],["doen't","doesn't"],["doen","done"],["doens't","doesn't"],["doens","does"],["doensn't","doesn't"],["does'nt","doesn't"],["does't","doesn't"],["doese't","doesn't"],["doese","does"],["doesen't","doesn't"],["doesent'","doesn't"],["doesent","doesn't"],["doesits","does its"],["doesn'","doesn't"],["doesn't't","doesn't"],["doesn;t","doesn't"],["doesnexist","doesn't exist"],["doesnt'","doesn't"],["doesnt't","doesn't"],["doesnt;","doesn't"],["doess","does"],["doestn't","doesn't"],["doign","doing"],["doiing","doing"],["doiuble","double"],["doiubled","doubled"],["dokc","dock"],["dokced","docked"],["dokcer","docker"],["dokcing","docking"],["dokcre","docker"],["dokcs","docks"],["doller","dollar"],["dollers","dollars"],["dollor","dollar"],["dollors","dollars"],["domait","domain"],["doman","domain"],["domans","domains"],["domension","dimension"],["domensions","dimensions"],["domian","domain"],["domians","domains"],["dominanted","dominated"],["dominanting","dominating"],["dominantion","domination"],["dominaton","domination"],["dominent","dominant"],["dominiant","dominant"],["domonstrate","demonstrate"],["domonstrates","demonstrates"],["domonstrating","demonstrating"],["domonstration","demonstration"],["domonstrations","demonstrations"],["donain","domain"],["donains","domains"],["donejun","dungeon"],["donejuns","dungeons"],["donig","doing"],["donn't","don't"],["donnot","do not"],["dont'","don't"],["dont't","don't"],["donwload","download"],["donwloaded","downloaded"],["donwloading","downloading"],["donwloads","downloads"],["doocument","document"],["doocumentaries","documentaries"],["doocumentary","documentary"],["doocumentation","documentation"],["doocumentations","documentations"],["doocumented","documented"],["doocumenting","documenting"],["doocuments","documents"],["doorjam","doorjamb"],["dorce","force"],["dorced","forced"],["dorceful","forceful"],["dordered","ordered"],["dorment","dormant"],["dorp","drop"],["dosclosed","disclosed"],["doscloses","discloses"],["dosclosing","disclosing"],["dosclosure","disclosure"],["dosclosures","disclosures"],["dosen't","doesn't"],["dosen;t","doesn't"],["dosens","dozens"],["dosent'","doesn't"],["dosent","doesn't"],["dosent;","doesn't"],["dosn't","doesn't"],["dosn;t","doesn't"],["dosnt","doesn't"],["dosposing","disposing"],["dosument","document"],["dosuments","documents"],["dota","data"],["doube","double"],["doube-click","double-click"],["doube-clicked","double-clicked"],["doube-clicks","double-clicks"],["doube-quote","double-quote"],["doube-quoted","double-quoted"],["doube-word","double-word"],["doube-wprd","double-word"],["doubeclick","double-click"],["doubeclicked","double-clicked"],["doubeclicks","double-clicks"],["doubel","double"],["doubele-click","double-click"],["doubele-clicked","double-clicked"],["doubele-clicks","double-clicks"],["doubeleclick","double-click"],["doubeleclicked","double-clicked"],["doubeleclicks","double-clicks"],["doubely","doubly"],["doubes","doubles"],["doublde","double"],["doublded","doubled"],["doubldes","doubles"],["doubleclick","double-click"],["doublely","doubly"],["doubletquote","doublequote"],["doubth","doubt"],["doubthed","doubted"],["doubthing","doubting"],["doubths","doubts"],["doucment","document"],["doucmentated","documented"],["doucmentation","documentation"],["doucmented","documented"],["doucmenter","documenter"],["doucmenters","documenters"],["doucmentes","documents"],["doucmenting","documenting"],["doucments","documents"],["douible","double"],["douibled","doubled"],["doulbe","double"],["doumentc","document"],["dout","doubt"],["dowgrade","downgrade"],["dowlink","downlink"],["dowlinks","downlinks"],["dowload","download"],["dowloaded","downloaded"],["dowloader","downloader"],["dowloaders","downloaders"],["dowloading","downloading"],["dowloads","downloads"],["downagrade","downgrade"],["downagraded","downgraded"],["downagrades","downgrades"],["downagrading","downgrading"],["downgade","downgrade"],["downgaded","downgraded"],["downgades","downgrades"],["downgading","downgrading"],["downgarade","downgrade"],["downgaraded","downgraded"],["downgarades","downgrades"],["downgarading","downgrading"],["downgarde","downgrade"],["downgarded","downgraded"],["downgardes","downgrades"],["downgarding","downgrading"],["downgarte","downgrade"],["downgarted","downgraded"],["downgartes","downgrades"],["downgarting","downgrading"],["downgradde","downgrade"],["downgradded","downgraded"],["downgraddes","downgrades"],["downgradding","downgrading"],["downgradei","downgrade"],["downgradingn","downgrading"],["downgrate","downgrade"],["downgrated","downgraded"],["downgrates","downgrades"],["downgrating","downgrading"],["downlad","download"],["downladed","downloaded"],["downlading","downloading"],["downlads","downloads"],["downlaod","download"],["downlaoded","downloaded"],["downlaodes","downloads"],["downlaoding","downloading"],["downlaods","downloads"],["downloadmanger","downloadmanager"],["downlod","download"],["downloded","downloaded"],["downloding","downloading"],["downlods","downloads"],["downlowd","download"],["downlowded","downloaded"],["downlowding","downloading"],["downlowds","downloads"],["downoad","download"],["downoaded","downloaded"],["downoading","downloading"],["downoads","downloads"],["downoload","download"],["downoloaded","downloaded"],["downoloading","downloading"],["downoloads","downloads"],["downrade","downgrade"],["downraded","downgraded"],["downrades","downgrades"],["downrading","downgrading"],["downrgade","downgrade"],["downrgaded","downgraded"],["downrgades","downgrades"],["downrgading","downgrading"],["downsteram","downstream"],["downsteramed","downstreamed"],["downsteramer","downstreamer"],["downsteramers","downstreamers"],["downsteraming","downstreaming"],["downsterams","downstreams"],["dows","does"],["dowt","doubt"],["doxgen","doxygen"],["doygen","doxygen"],["dpeends","depends"],["dpendent","dependent"],["dpkg-buildpackge","dpkg-buildpackage"],["dpkg-buildpackges","dpkg-buildpackages"],["dpuble","double"],["dpubles","doubles"],["draconain","draconian"],["dragable","draggable"],["draged","dragged"],["draging","dragging"],["draing","drawing"],["drammatic","dramatic"],["dramtic","dramatic"],["dran","drawn"],["drastical","drastically"],["drasticaly","drastically"],["drats","drafts"],["draughtman","draughtsman"],["Dravadian","Dravidian"],["draview","drawview"],["drawack","drawback"],["drawacks","drawbacks"],["drawm","drawn"],["drawng","drawing"],["dreasm","dreams"],["dreawn","drawn"],["dregee","degree"],["dregees","degrees"],["dregree","degree"],["dregrees","degrees"],["drescription","description"],["drescriptions","descriptions"],["driagram","diagram"],["driagrammed","diagrammed"],["driagramming","diagramming"],["driagrams","diagrams"],["driectly","directly"],["drity","dirty"],["driveing","driving"],["drivr","driver"],["drnik","drink"],["drob","drop"],["dropabel","droppable"],["dropable","droppable"],["droped","dropped"],["droping","dropping"],["droppend","dropped"],["droppped","dropped"],["dropse","drops"],["droput","dropout"],["druing","during"],["druming","drumming"],["drummless","drumless"],["drvier","driver"],["drwaing","drawing"],["drwawing","drawing"],["drwawings","drawings"],["dscrete","discrete"],["dscretion","discretion"],["dscribed","described"],["dsiable","disable"],["dsiabled","disabled"],["dsplays","displays"],["dstination","destination"],["dstinations","destinations"],["dthe","the"],["dtoring","storing"],["dubios","dubious"],["dublicade","duplicate"],["dublicat","duplicate"],["dublicate","duplicate"],["dublicated","duplicated"],["dublicates","duplicates"],["dublication","duplication"],["ducment","document"],["ducument","document"],["duirng","during"],["dulicate","duplicate"],["dum","dumb"],["dumplicate","duplicate"],["dumplicated","duplicated"],["dumplicates","duplicates"],["dumplicating","duplicating"],["duoblequote","doublequote"],["dupicate","duplicate"],["duplacate","duplicate"],["duplacated","duplicated"],["duplacates","duplicates"],["duplacation","duplication"],["duplacte","duplicate"],["duplacted","duplicated"],["duplactes","duplicates"],["duplaction","duplication"],["duplaicate","duplicate"],["duplaicated","duplicated"],["duplaicates","duplicates"],["duplaication","duplication"],["duplate","duplicate"],["duplated","duplicated"],["duplates","duplicates"],["duplation","duplication"],["duplcate","duplicate"],["duplciate","duplicate"],["dupliacate","duplicate"],["dupliacates","duplicates"],["dupliace","duplicate"],["dupliacte","duplicate"],["dupliacted","duplicated"],["dupliactes","duplicates"],["dupliagte","duplicate"],["dupliate","duplicate"],["dupliated","duplicated"],["dupliates","duplicates"],["dupliating","duplicating"],["dupliation","duplication"],["dupliations","duplications"],["duplicat","duplicate"],["duplicatd","duplicated"],["duplicats","duplicates"],["dupplicate","duplicate"],["dupplicated","duplicated"],["dupplicates","duplicates"],["dupplicating","duplicating"],["dupplication","duplication"],["dupplications","duplications"],["durationm","duration"],["durectories","directories"],["durectory","directory"],["dureing","during"],["durig","during"],["durining","during"],["durning","during"],["durring","during"],["duting","during"],["dyanamically","dynamically"],["dyanmic","dynamic"],["dyanmically","dynamically"],["dyas","dryas"],["dymamically","dynamically"],["dynamc","dynamic"],["dynamcly","dynamically"],["dynamcs","dynamics"],["dynamicaly","dynamically"],["dynamiclly","dynamically"],["dynamicly","dynamically"],["dynaminc","dynamic"],["dynamincal","dynamical"],["dynamincally","dynamically"],["dynamincs","dynamics"],["dynamlic","dynamic"],["dynamlically","dynamically"],["dynically","dynamically"],["dynmaic","dynamic"],["dynmaically","dynamically"],["dynmic","dynamic"],["dynmically","dynamically"],["dynmics","dynamics"],["eabled","enabled"],["eacf","each"],["eacg","each"],["eachother","each other"],["eachs","each"],["eactly","exactly"],["eagrely","eagerly"],["eahc","each"],["eailier","earlier"],["eaiser","easier"],["ealier","earlier"],["ealiest","earliest"],["eample","example"],["eamples","examples"],["eanable","enable"],["eanble","enable"],["earleir","earlier"],["earler","earlier"],["earliear","earlier"],["earlies","earliest"],["earlist","earliest"],["earlyer","earlier"],["earnt","earned"],["earpeice","earpiece"],["easely","easily"],["easili","easily"],["easiliy","easily"],["easilly","easily"],["easist","easiest"],["easiy","easily"],["easly","easily"],["easyer","easier"],["eaxct","exact"],["ebale","enable"],["ebaled","enabled"],["EBCIDC","EBCDIC"],["ebedded","embedded"],["eccessive","excessive"],["ecclectic","eclectic"],["eceonomy","economy"],["ecept","except"],["eception","exception"],["eceptions","exceptions"],["ecidious","deciduous"],["eclise","eclipse"],["eclispe","eclipse"],["ecnetricity","eccentricity"],["ecognized","recognized"],["ecomonic","economic"],["ecounter","encounter"],["ecountered","encountered"],["ecountering","encountering"],["ecounters","encounters"],["ecplicit","explicit"],["ecplicitly","explicitly"],["ecspecially","especially"],["ect","etc"],["ecxept","except"],["ecxite","excite"],["ecxited","excited"],["ecxites","excites"],["ecxiting","exciting"],["ecxtracted","extracted"],["EDCDIC","EBCDIC"],["eddge","edge"],["eddges","edges"],["edditable","editable"],["ede","edge"],["ediable","editable"],["edige","edge"],["ediges","edges"],["ediit","edit"],["ediiting","editing"],["ediitor","editor"],["ediitors","editors"],["ediits","edits"],["editedt","edited"],["editiing","editing"],["editoro","editor"],["editot","editor"],["editots","editors"],["editt","edit"],["editted","edited"],["editter","editor"],["editting","editing"],["edittor","editor"],["edn","end"],["ednif","endif"],["edxpected","expected"],["eearly","early"],["eeeprom","EEPROM"],["eescription","description"],["eevery","every"],["eeverything","everything"],["eeverywhere","everywhere"],["eextract","extract"],["eextracted","extracted"],["eextracting","extracting"],["eextraction","extraction"],["eextracts","extracts"],["efect","effect"],["efective","effective"],["efectively","effectively"],["efel","evil"],["eferences","references"],["efetivity","effectivity"],["effciency","efficiency"],["effcient","efficient"],["effciently","efficiently"],["effctive","effective"],["effctively","effectively"],["effeciency","efficiency"],["effecient","efficient"],["effeciently","efficiently"],["effecitvely","effectively"],["effeck","effect"],["effecked","effected"],["effecks","effects"],["effeckt","effect"],["effectice","effective"],["effecticely","effectively"],["effectiviness","effectiveness"],["effectivness","effectiveness"],["effectly","effectively"],["effedts","effects"],["effekt","effect"],["effexts","effects"],["efficcient","efficient"],["efficencty","efficiency"],["efficency","efficiency"],["efficent","efficient"],["efficently","efficiently"],["effiency","efficiency"],["effient","efficient"],["effiently","efficiently"],["effulence","effluence"],["eforceable","enforceable"],["egal","equal"],["egals","equals"],["egde","edge"],["egdes","edges"],["ege","edge"],["egenral","general"],["egenralise","generalise"],["egenralised","generalised"],["egenralises","generalises"],["egenralize","generalize"],["egenralized","generalized"],["egenralizes","generalizes"],["egenrally","generally"],["ehance","enhance"],["ehanced","enhanced"],["ehancement","enhancement"],["ehancements","enhancements"],["ehenever","whenever"],["ehough","enough"],["ehr","her"],["ehternet","Ethernet"],["ehthernet","ethernet"],["eighter","either"],["eihter","either"],["einstance","instance"],["eisntance","instance"],["eiter","either"],["eith","with"],["elaspe","elapse"],["elasped","elapsed"],["elaspes","elapses"],["elasping","elapsing"],["elction","election"],["elctromagnetic","electromagnetic"],["elease","release"],["eleased","released"],["eleases","releases"],["eleate","relate"],["electical","electrical"],["electirc","electric"],["electircal","electrical"],["electrial","electrical"],["electricly","electrically"],["electricty","electricity"],["electrinics","electronics"],["electriv","electric"],["electrnoics","electronics"],["eleemnt","element"],["eleent","element"],["elegible","eligible"],["elelement","element"],["elelements","elements"],["elelment","element"],["elelmental","elemental"],["elelmentary","elementary"],["elelments","elements"],["elemant","element"],["elemantary","elementary"],["elemement","element"],["elemements","elements"],["elememt","element"],["elemen","element"],["elemenent","element"],["elemenental","elemental"],["elemenents","elements"],["elemenet","element"],["elemenets","elements"],["elemens","elements"],["elemenst","elements"],["elementay","elementary"],["elementry","elementary"],["elemet","element"],["elemetal","elemental"],["elemetn","element"],["elemetns","elements"],["elemets","elements"],["eleminate","eliminate"],["eleminated","eliminated"],["eleminates","eliminates"],["eleminating","eliminating"],["elemnets","elements"],["elemnt","element"],["elemntal","elemental"],["elemnts","elements"],["elemt","element"],["elemtary","elementary"],["elemts","elements"],["elenment","element"],["eles","else"],["eletricity","electricity"],["eletromagnitic","electromagnetic"],["eletronic","electronic"],["elgible","eligible"],["elicided","elicited"],["eligable","eligible"],["elimentary","elementary"],["elimiante","eliminate"],["elimiate","eliminate"],["eliminetaion","elimination"],["elimintate","eliminate"],["eliminte","eliminate"],["elimnated","eliminated"],["eliptic","elliptic"],["eliptical","elliptical"],["elipticity","ellipticity"],["ellapsed","elapsed"],["ellected","elected"],["ellement","element"],["ellemental","elemental"],["ellementals","elementals"],["ellements","elements"],["elliminate","eliminate"],["elliminated","eliminated"],["elliminates","eliminates"],["elliminating","eliminating"],["ellipsises","ellipsis"],["ellision","elision"],["elmenet","element"],["elmenets","elements"],["elment","element"],["elments","elements"],["elminate","eliminate"],["elminated","eliminated"],["elminates","eliminates"],["elminating","eliminating"],["elphant","elephant"],["elsef","elseif"],["elsehwere","elsewhere"],["elseof","elseif"],["elseswhere","elsewhere"],["elsewehere","elsewhere"],["elsewere","elsewhere"],["elsewhwere","elsewhere"],["elsiof","elseif"],["elsof","elseif"],["emabaroged","embargoed"],["emable","enable"],["emabled","enabled"],["emables","enables"],["emabling","enabling"],["emailling","emailing"],["embarass","embarrass"],["embarassed","embarrassed"],["embarasses","embarrasses"],["embarassing","embarrassing"],["embarassment","embarrassment"],["embargos","embargoes"],["embarras","embarrass"],["embarrased","embarrassed"],["embarrasing","embarrassing"],["embarrasingly","embarrassingly"],["embarrasment","embarrassment"],["embbedded","embedded"],["embbeded","embedded"],["embdder","embedder"],["embdedded","embedded"],["embebbed","embedded"],["embedd","embed"],["embeddded","embedded"],["embeddeding","embedding"],["embedds","embeds"],["embeded","embedded"],["embededded","embedded"],["embeed","embed"],["embezelled","embezzled"],["emblamatic","emblematic"],["embold","embolden"],["embrodery","embroidery"],["emcompass","encompass"],["emcompassed","encompassed"],["emcompassing","encompassing"],["emedded","embedded"],["emegrency","emergency"],["emenet","element"],["emenets","elements"],["emiited","emitted"],["eminate","emanate"],["eminated","emanated"],["emision","emission"],["emited","emitted"],["emiting","emitting"],["emlation","emulation"],["emmediately","immediately"],["emminently","eminently"],["emmisaries","emissaries"],["emmisarries","emissaries"],["emmisarry","emissary"],["emmisary","emissary"],["emmision","emission"],["emmisions","emissions"],["emmit","emit"],["emmited","emitted"],["emmiting","emitting"],["emmits","emits"],["emmitted","emitted"],["emmitting","emitting"],["emnity","enmity"],["emoty","empty"],["emough","enough"],["emought","enough"],["emperical","empirical"],["emperically","empirically"],["emphaised","emphasised"],["emphsis","emphasis"],["emphysyma","emphysema"],["empiracally","empirically"],["empiricaly","empirically"],["emplyed","employed"],["emplyee","employee"],["emplyees","employees"],["emplyer","employer"],["emplyers","employers"],["emplying","employing"],["emplyment","employment"],["emplyments","employments"],["emporer","emperor"],["emprically","empirically"],["emprisoned","imprisoned"],["emprove","improve"],["emproved","improved"],["emprovement","improvement"],["emprovements","improvements"],["emproves","improves"],["emproving","improving"],["emptniess","emptiness"],["emptry","empty"],["emptyed","emptied"],["emptyy","empty"],["empy","empty"],["emtied","emptied"],["emties","empties"],["emtpies","empties"],["emtpy","empty"],["emty","empty"],["emtying","emptying"],["emultor","emulator"],["emultors","emulators"],["enabe","enable"],["enabel","enable"],["enabeled","enabled"],["enabeling","enabling"],["enabing","enabling"],["enabledi","enabled"],["enableing","enabling"],["enablen","enabled"],["enalbe","enable"],["enalbed","enabled"],["enalbes","enables"],["enameld","enameled"],["enaugh","enough"],["enbable","enable"],["enbabled","enabled"],["enbabling","enabling"],["enbale","enable"],["enbaled","enabled"],["enbales","enables"],["enbaling","enabling"],["enbedding","embedding"],["enble","enable"],["encapsualtes","encapsulates"],["encapsulatzion","encapsulation"],["encapsultion","encapsulation"],["encaspulate","encapsulate"],["encaspulated","encapsulated"],["encaspulates","encapsulates"],["encaspulating","encapsulating"],["encaspulation","encapsulation"],["enchanced","enhanced"],["enclosng","enclosing"],["enclosue","enclosure"],["enclosung","enclosing"],["enclude","include"],["encluding","including"],["encocde","encode"],["encocded","encoded"],["encocder","encoder"],["encocders","encoders"],["encocdes","encodes"],["encocding","encoding"],["encocdings","encodings"],["encodingt","encoding"],["encodning","encoding"],["encodnings","encodings"],["encompas","encompass"],["encompased","encompassed"],["encompases","encompasses"],["encompasing","encompassing"],["enconde","encode"],["enconded","encoded"],["enconder","encoder"],["enconders","encoders"],["encondes","encodes"],["enconding","encoding"],["encondings","encodings"],["encorded","encoded"],["encorder","encoder"],["encorders","encoders"],["encording","encoding"],["encordings","encodings"],["encorporating","incorporating"],["encoser","encoder"],["encosers","encoders"],["encosure","enclosure"],["encounterd","encountered"],["encountres","encounters"],["encouraing","encouraging"],["encouter","encounter"],["encoutered","encountered"],["encouters","encounters"],["encoutner","encounter"],["encoutners","encounters"],["encouttering","encountering"],["encrcypt","encrypt"],["encrcypted","encrypted"],["encrcyption","encryption"],["encrcyptions","encryptions"],["encrcypts","encrypts"],["encript","encrypt"],["encripted","encrypted"],["encription","encryption"],["encriptions","encryptions"],["encripts","encrypts"],["encrpt","encrypt"],["encrpted","encrypted"],["encrption","encryption"],["encrptions","encryptions"],["encrpts","encrypts"],["encrupted","encrypted"],["encrypiton","encryption"],["encryptiion","encryption"],["encryptio","encryption"],["encryptiong","encryption"],["encrytion","encryption"],["encrytped","encrypted"],["encrytption","encryption"],["encupsulates","encapsulates"],["encylopedia","encyclopedia"],["encypted","encrypted"],["encyption","encryption"],["endcoded","encoded"],["endcoder","encoder"],["endcoders","encoders"],["endcodes","encodes"],["endcoding","encoding"],["endcodings","encodings"],["endding","ending"],["ende","end"],["endevors","endeavors"],["endevour","endeavour"],["endfi","endif"],["endianes","endianness"],["endianess","endianness"],["endianity","endianness"],["endiannes","endianness"],["endig","ending"],["endiness","endianness"],["endnoden","endnode"],["endoint","endpoint"],["endolithes","endoliths"],["endpints","endpoints"],["endpiont","endpoint"],["endpionts","endpoints"],["endpont","endpoint"],["endponts","endpoints"],["endsup","ends up"],["enduce","induce"],["eneables","enables"],["enebale","enable"],["enebaled","enabled"],["eneble","enable"],["ened","need"],["enegeries","energies"],["enegery","energy"],["enehanced","enhanced"],["enery","energy"],["eneter","enter"],["enetered","entered"],["enetities","entities"],["enetity","entity"],["eneumeration","enumeration"],["eneumerations","enumerations"],["eneumretaion","enumeration"],["eneumretaions","enumerations"],["enew","new"],["enflamed","inflamed"],["enforcable","enforceable"],["enforceing","enforcing"],["enforcmement","enforcement"],["enforcment","enforcement"],["enfore","enforce"],["enfored","enforced"],["enfores","enforces"],["enforncing","enforcing"],["engagment","engagement"],["engeneer","engineer"],["engeneering","engineering"],["engery","energy"],["engieer","engineer"],["engieneer","engineer"],["engieneers","engineers"],["enginee","engine"],["enginge","engine"],["enginin","engine"],["enginineer","engineer"],["engoug","enough"],["enhabce","enhance"],["enhabced","enhanced"],["enhabces","enhances"],["enhabcing","enhancing"],["enhace","enhance"],["enhaced","enhanced"],["enhacement","enhancement"],["enhacements","enhancements"],["enhancd","enhanced"],["enhancment","enhancement"],["enhancments","enhancements"],["enhaned","enhanced"],["enhence","enhance"],["enhenced","enhanced"],["enhencement","enhancement"],["enhencements","enhancements"],["enhencment","enhancement"],["enhencments","enhancements"],["enironment","environment"],["enironments","environments"],["enities","entities"],["enitities","entities"],["enitity","entity"],["enitre","entire"],["enivornment","environment"],["enivornments","environments"],["enivronment","environment"],["enlargment","enlargement"],["enlargments","enlargements"],["enlightnment","enlightenment"],["enlose","enclose"],["enmpty","empty"],["enmum","enum"],["ennpoint","endpoint"],["enntries","entries"],["enocde","encode"],["enocded","encoded"],["enocder","encoder"],["enocders","encoders"],["enocdes","encodes"],["enocding","encoding"],["enocdings","encodings"],["enogh","enough"],["enoght","enough"],["enoguh","enough"],["enouch","enough"],["enoucnter","encounter"],["enoucntered","encountered"],["enoucntering","encountering"],["enoucnters","encounters"],["enouf","enough"],["enoufh","enough"],["enought","enough"],["enoughts","enough"],["enougth","enough"],["enouh","enough"],["enouhg","enough"],["enouncter","encounter"],["enounctered","encountered"],["enounctering","encountering"],["enouncters","encounters"],["enoung","enough"],["enoungh","enough"],["enounter","encounter"],["enountered","encountered"],["enountering","encountering"],["enounters","encounters"],["enouph","enough"],["enourage","encourage"],["enouraged","encouraged"],["enourages","encourages"],["enouraging","encouraging"],["enourmous","enormous"],["enourmously","enormously"],["enouth","enough"],["enouugh","enough"],["enpoint","endpoint"],["enpoints","endpoints"],["enque","enqueue"],["enqueing","enqueuing"],["enrties","entries"],["enrtries","entries"],["enrtry","entry"],["enrty","entry"],["ensconsed","ensconced"],["entaglements","entanglements"],["entended","intended"],["entension","extension"],["entensions","extensions"],["ententries","entries"],["enterance","entrance"],["enteratinment","entertainment"],["entereing","entering"],["enterie","entry"],["enteries","entries"],["enterily","entirely"],["enterprice","enterprise"],["enterprices","enterprises"],["entery","entry"],["enteties","entities"],["entety","entity"],["enthaplies","enthalpies"],["enthaply","enthalpy"],["enthousiasm","enthusiasm"],["enthusiam","enthusiasm"],["enthusiatic","enthusiastic"],["entierly","entirely"],["entireity","entirety"],["entires","entries"],["entirey","entirely"],["entirity","entirety"],["entirly","entirely"],["entitee","entity"],["entitees","entities"],["entites","entities"],["entiti","entity"],["entitie","entity"],["entitites","entities"],["entitities","entities"],["entitity","entity"],["entitiy","entity"],["entitiys","entities"],["entitlied","entitled"],["entitys","entities"],["entoties","entities"],["entoty","entity"],["entrace","entrance"],["entraced","entranced"],["entraces","entrances"],["entrepeneur","entrepreneur"],["entrepeneurs","entrepreneurs"],["entriess","entries"],["entrophy","entropy"],["enttries","entries"],["enttry","entry"],["enulation","emulation"],["enumarate","enumerate"],["enumarated","enumerated"],["enumarates","enumerates"],["enumarating","enumerating"],["enumation","enumeration"],["enumearate","enumerate"],["enumearation","enumeration"],["enumerble","enumerable"],["enumertaion","enumeration"],["enusre","ensure"],["envaluation","evaluation"],["enveloppe","envelope"],["envelopped","enveloped"],["enveloppes","envelopes"],["envelopping","enveloping"],["enver","never"],["envioment","environment"],["enviomental","environmental"],["envioments","environments"],["envionment","environment"],["envionmental","environmental"],["envionments","environments"],["enviorement","environment"],["envioremental","environmental"],["enviorements","environments"],["enviorenment","environment"],["enviorenmental","environmental"],["enviorenments","environments"],["enviorment","environment"],["enviormental","environmental"],["enviormentally","environmentally"],["enviorments","environments"],["enviornemnt","environment"],["enviornemntal","environmental"],["enviornemnts","environments"],["enviornment","environment"],["enviornmental","environmental"],["enviornmentalist","environmentalist"],["enviornmentally","environmentally"],["enviornments","environments"],["envioronment","environment"],["envioronmental","environmental"],["envioronments","environments"],["envireonment","environment"],["envirionment","environment"],["envirnment","environment"],["envirnmental","environmental"],["envirnments","environments"],["envirnoment","environment"],["envirnoments","environments"],["enviroiment","environment"],["enviroment","environment"],["enviromental","environmental"],["enviromentalist","environmentalist"],["enviromentally","environmentally"],["enviroments","environments"],["enviromnent","environment"],["enviromnental","environmental"],["enviromnentally","environmentally"],["enviromnents","environments"],["environement","environment"],["environemnt","environment"],["environemntal","environmental"],["environemnts","environments"],["environent","environment"],["environmane","environment"],["environmenet","environment"],["environmenets","environments"],["environmet","environment"],["environmets","environments"],["environmnet","environment"],["environmont","environment"],["environnement","environment"],["environtment","environment"],["envolutionary","evolutionary"],["envolved","involved"],["envorce","enforce"],["envrion","environ"],["envrionment","environment"],["envrionmental","environmental"],["envrionments","environments"],["envrions","environs"],["envriron","environ"],["envrironment","environment"],["envrironmental","environmental"],["envrironments","environments"],["envrirons","environs"],["envvironment","environment"],["enxt","next"],["enything","anything"],["enyway","anyway"],["epecifica","especifica"],["epect","expect"],["epected","expected"],["epectedly","expectedly"],["epecting","expecting"],["epects","expects"],["ephememeral","ephemeral"],["ephememeris","ephemeris"],["epidsodes","episodes"],["epigramic","epigrammatic"],["epilgoue","epilogue"],["episdoe","episode"],["episdoes","episodes"],["eploit","exploit"],["eploits","exploits"],["epmty","empty"],["epressions","expressions"],["epsiode","episode"],["eptied","emptied"],["eptier","emptier"],["epties","empties"],["eptrapolate","extrapolate"],["eptrapolated","extrapolated"],["eptrapolates","extrapolates"],["epty","empty"],["epxanded","expanded"],["epxected","expected"],["epxiressions","expressions"],["epxlicit","explicit"],["eqaul","equal"],["eqaulity","equality"],["eqaulizer","equalizer"],["eqivalent","equivalent"],["eqivalents","equivalents"],["equailateral","equilateral"],["equalibrium","equilibrium"],["equallity","equality"],["equalls","equals"],["equaly","equally"],["equeation","equation"],["equeations","equations"],["equel","equal"],["equelibrium","equilibrium"],["equialent","equivalent"],["equil","equal"],["equilavalent","equivalent"],["equilibium","equilibrium"],["equilibrum","equilibrium"],["equilvalent","equivalent"],["equilvalently","equivalently"],["equilvalents","equivalents"],["equiped","equipped"],["equipmentd","equipment"],["equipments","equipment"],["equippment","equipment"],["equiptment","equipment"],["equitorial","equatorial"],["equivalance","equivalence"],["equivalant","equivalent"],["equivelant","equivalent"],["equivelent","equivalent"],["equivelents","equivalents"],["equivilant","equivalent"],["equivilent","equivalent"],["equivivalent","equivalent"],["equivlalent","equivalent"],["equivlantly","equivalently"],["equivlent","equivalent"],["equivlently","equivalently"],["equivlents","equivalents"],["equivqlent","equivalent"],["eqution","equation"],["equtions","equations"],["equvalent","equivalent"],["equvivalent","equivalent"],["erasablocks","eraseblocks"],["eratic","erratic"],["eratically","erratically"],["eraticly","erratically"],["erformance","performance"],["erliear","earlier"],["erlier","earlier"],["erly","early"],["ermergency","emergency"],["eroneous","erroneous"],["eror","error"],["erorneus","erroneous"],["erorneusly","erroneously"],["erorr","error"],["erorrs","errors"],["erors","errors"],["erraneously","erroneously"],["erro","error"],["erroneus","erroneous"],["erroneusly","erroneously"],["erronous","erroneous"],["erronously","erroneously"],["errorneous","erroneous"],["errorneously","erroneously"],["errorneus","erroneous"],["errornous","erroneous"],["errornously","erroneously"],["errorprone","error-prone"],["errorr","error"],["erros","errors"],["errot","error"],["errots","errors"],["errro","error"],["errror","error"],["errrors","errors"],["errros","errors"],["errupted","erupted"],["ertoneous","erroneous"],["ertoneously","erroneously"],["ervery","every"],["erverything","everything"],["esacpe","escape"],["esacped","escaped"],["esacpes","escapes"],["escalte","escalate"],["escalted","escalated"],["escaltes","escalates"],["escalting","escalating"],["escaltion","escalation"],["escapeable","escapable"],["escapemant","escapement"],["escased","escaped"],["escation","escalation"],["esccape","escape"],["esccaped","escaped"],["escpae","escape"],["escpaed","escaped"],["esecute","execute"],["esential","essential"],["esentially","essentially"],["esge","edge"],["esger","edger"],["esgers","edgers"],["esges","edges"],["esging","edging"],["esiest","easiest"],["esimate","estimate"],["esimated","estimated"],["esimates","estimates"],["esimating","estimating"],["esimation","estimation"],["esimations","estimations"],["esimator","estimator"],["esimators","estimators"],["esists","exists"],["esitmate","estimate"],["esitmated","estimated"],["esitmates","estimates"],["esitmating","estimating"],["esitmation","estimation"],["esitmations","estimations"],["esitmator","estimator"],["esitmators","estimators"],["esle","else"],["esnure","ensure"],["esnured","ensured"],["esnures","ensures"],["espacally","especially"],["espace","escape"],["espaced","escaped"],["espaces","escapes"],["espacially","especially"],["espacing","escaping"],["espcially","especially"],["especailly","especially"],["especally","especially"],["especialy","especially"],["especialyl","especially"],["especiially","especially"],["espect","expect"],["espeically","especially"],["esseintially","essentially"],["essencial","essential"],["essense","essence"],["essentail","essential"],["essentailly","essentially"],["essentaily","essentially"],["essental","essential"],["essentally","essentially"],["essentals","essentials"],["essentialy","essentially"],["essentual","essential"],["essentually","essentially"],["essentualy","essentially"],["essesital","essential"],["essesitally","essentially"],["essesitaly","essentially"],["essiential","essential"],["esssential","essential"],["estabilish","establish"],["estabish","establish"],["estabishd","established"],["estabished","established"],["estabishes","establishes"],["estabishing","establishing"],["establised","established"],["establishs","establishes"],["establising","establishing"],["establsihed","established"],["estbalishment","establishment"],["estimage","estimate"],["estimages","estimates"],["estiomator","estimator"],["estiomators","estimators"],["esy","easy"],["etablish","establish"],["etablishd","established"],["etablished","established"],["etablishing","establishing"],["etcc","etc"],["etcp","etc"],["etensible","extensible"],["etension","extension"],["etensions","extensions"],["ethe","the"],["etherenet","Ethernet"],["ethernal","eternal"],["ethnocentricm","ethnocentrism"],["etiher","either"],["etroneous","erroneous"],["etroneously","erroneously"],["etsablishment","establishment"],["etsbalishment","establishment"],["etst","test"],["etsts","tests"],["etxt","text"],["euclidian","euclidean"],["euivalent","equivalent"],["euivalents","equivalents"],["euqivalent","equivalent"],["euqivalents","equivalents"],["euristic","heuristic"],["euristics","heuristics"],["Europian","European"],["Europians","Europeans"],["Eurpean","European"],["Eurpoean","European"],["evalation","evaluation"],["evalite","evaluate"],["evalited","evaluated"],["evalites","evaluates"],["evaluataion","evaluation"],["evaluataions","evaluations"],["evalueate","evaluate"],["evalueated","evaluated"],["evaluete","evaluate"],["evalueted","evaluated"],["evalulates","evaluates"],["evalutae","evaluate"],["evalutaed","evaluated"],["evalutaeing","evaluating"],["evalutaes","evaluates"],["evalutaing","evaluating"],["evalutaion","evaluation"],["evalutaions","evaluations"],["evalutaor","evaluator"],["evalutate","evaluate"],["evalutated","evaluated"],["evalutates","evaluates"],["evalutating","evaluating"],["evalutation","evaluation"],["evalutations","evaluations"],["evalute","evaluate"],["evaluted","evaluated"],["evalutes","evaluates"],["evaluting","evaluating"],["evalutions","evaluations"],["evalutive","evaluative"],["evalutor","evaluator"],["evalutors","evaluators"],["evaulate","evaluate"],["evaulated","evaluated"],["evaulates","evaluates"],["evaulating","evaluating"],["evaulation","evaluation"],["evaulator","evaluator"],["evaulted","evaluated"],["evauluate","evaluate"],["evauluated","evaluated"],["evauluates","evaluates"],["evauluation","evaluation"],["eveluate","evaluate"],["eveluated","evaluated"],["eveluates","evaluates"],["eveluating","evaluating"],["eveluation","evaluation"],["eveluations","evaluations"],["eveluator","evaluator"],["eveluators","evaluators"],["evenhtually","eventually"],["eventally","eventually"],["eventaully","eventually"],["eventhanders","event handlers"],["eventhough","even though"],["eventially","eventually"],["eventuall","eventually"],["eventualy","eventually"],["evenually","eventually"],["eveolution","evolution"],["eveolutionary","evolutionary"],["eveolve","evolve"],["eveolved","evolved"],["eveolves","evolves"],["eveolving","evolving"],["everage","average"],["everaged","averaged"],["everbody","everybody"],["everithing","everything"],["everone","everyone"],["everthing","everything"],["evertyhign","everything"],["evertyhing","everything"],["evertything","everything"],["everwhere","everywhere"],["everyhing","everything"],["everyhting","everything"],["everythig","everything"],["everythign","everything"],["everythin","everything"],["everythings","everything"],["everytime","every time"],["everyting","everything"],["everytone","everyone"],["evey","every"],["eveyone","everyone"],["eveyr","every"],["evidentally","evidently"],["evironment","environment"],["evironments","environments"],["evition","eviction"],["evluate","evaluate"],["evluated","evaluated"],["evluates","evaluates"],["evluating","evaluating"],["evluation","evaluation"],["evluations","evaluations"],["evluative","evaluative"],["evluator","evaluator"],["evluators","evaluators"],["evnet","event"],["evnts","events"],["evoluate","evaluate"],["evoluated","evaluated"],["evoluates","evaluates"],["evoluation","evaluations"],["evovler","evolver"],["evovling","evolving"],["evrithing","everything"],["evry","every"],["evrythign","everything"],["evrything","everything"],["evrywhere","everywhere"],["evyrthing","everything"],["ewhwer","where"],["exaclty","exactly"],["exacly","exactly"],["exactely","exactly"],["exacty","exactly"],["exacutable","executable"],["exagerate","exaggerate"],["exagerated","exaggerated"],["exagerates","exaggerates"],["exagerating","exaggerating"],["exagerrate","exaggerate"],["exagerrated","exaggerated"],["exagerrates","exaggerates"],["exagerrating","exaggerating"],["exameple","example"],["exameples","examples"],["examied","examined"],["examinated","examined"],["examing","examining"],["examinining","examining"],["examle","example"],["examles","examples"],["examlpe","example"],["examlpes","examples"],["examnple","example"],["examnples","examples"],["exampel","example"],["exampeles","examples"],["exampels","examples"],["examplees","examples"],["examplifies","exemplifies"],["exampple","example"],["exampples","examples"],["exampt","exempt"],["exand","expand"],["exansive","expansive"],["exapansion","expansion"],["exapend","expand"],["exaplain","explain"],["exaplaination","explanation"],["exaplained","explained"],["exaplaining","explaining"],["exaplains","explains"],["exaplanation","explanation"],["exaplanations","explanations"],["exaple","example"],["exaples","examples"],["exapmle","example"],["exapmles","examples"],["exapnsion","expansion"],["exat","exact"],["exatcly","exactly"],["exatctly","exactly"],["exatly","exactly"],["exausted","exhausted"],["excact","exact"],["excactly","exactly"],["excahcnge","exchange"],["excahnge","exchange"],["excahnges","exchanges"],["excange","exchange"],["excape","escape"],["excaped","escaped"],["excapes","escapes"],["excat","exact"],["excating","exacting"],["excatly","exactly"],["exccute","execute"],["excecise","exercise"],["excecises","exercises"],["excecpt","except"],["excecption","exception"],["excecptional","exceptional"],["excecptions","exceptions"],["excectable","executable"],["excectables","executables"],["excecte","execute"],["excectedly","expectedly"],["excectes","executes"],["excecting","executing"],["excectional","exceptional"],["excective","executive"],["excectives","executives"],["excector","executor"],["excectors","executors"],["excects","expects"],["excecutable","executable"],["excecutables","executables"],["excecute","execute"],["excecuted","executed"],["excecutes","executes"],["excecuting","executing"],["excecution","execution"],["excecutions","executions"],["excecutive","executive"],["excecutives","executives"],["excecutor","executor"],["excecutors","executors"],["excecuts","executes"],["exced","exceed"],["excedded","exceeded"],["excedding","exceeding"],["excede","exceed"],["exceded","exceeded"],["excedeed","exceeded"],["excedes","exceeds"],["exceding","exceeding"],["exceeed","exceed"],["exceirpt","excerpt"],["exceirpts","excerpts"],["excelent","excellent"],["excell","excel"],["excellance","excellence"],["excellant","excellent"],["excells","excels"],["excempt","exempt"],["excempted","exempted"],["excemption","exemption"],["excemptions","exemptions"],["excempts","exempts"],["excentric","eccentric"],["excentricity","eccentricity"],["excentuating","accentuating"],["exceopt","exempt"],["exceopted","exempted"],["exceopts","exempts"],["exceotion","exemption"],["exceotions","exemptions"],["excepetion","exception"],["excepion","exception"],["excepional","exceptional"],["excepionally","exceptionally"],["excepions","exceptions"],["exceprt","excerpt"],["exceprts","excerpts"],["exceptation","expectation"],["exceptionnal","exceptional"],["exceptionss","exceptions"],["exceptionts","exceptions"],["excercise","exercise"],["excercised","exercised"],["excerciser","exerciser"],["excercises","exercises"],["excercising","exercising"],["excerise","exercise"],["exces","excess"],["excesed","exceeded"],["excesive","excessive"],["excesively","excessively"],["excesss","excess"],["excesv","excessive"],["excesvly","excessively"],["excetion","exception"],["excetional","exceptional"],["excetions","exceptions"],["excetpion","exception"],["excetpional","exceptional"],["excetpions","exceptions"],["excetption","exception"],["excetptional","exceptional"],["excetptions","exceptions"],["excetra","etcetera"],["excetutable","executable"],["excetutables","executables"],["excetute","execute"],["excetuted","executed"],["excetutes","executes"],["excetuting","executing"],["excetution","execution"],["excetutions","executions"],["excetutive","executive"],["excetutives","executives"],["excetutor","executor"],["excetutors","executors"],["exceuctable","executable"],["exceuctables","executables"],["exceucte","execute"],["exceucted","executed"],["exceuctes","executes"],["exceucting","executing"],["exceuction","execution"],["exceuctions","executions"],["exceuctive","executive"],["exceuctives","executives"],["exceuctor","executor"],["exceuctors","executors"],["exceutable","executable"],["exceutables","executables"],["exceute","execute"],["exceuted","executed"],["exceutes","executes"],["exceuting","executing"],["exceution","execution"],["exceutions","executions"],["exceutive","executive"],["exceutives","executives"],["exceutor","executor"],["exceutors","executors"],["excewption","exception"],["excewptional","exceptional"],["excewptions","exceptions"],["exchage","exchange"],["exchaged","exchanged"],["exchages","exchanges"],["exchaging","exchanging"],["exchagne","exchange"],["exchagned","exchanged"],["exchagnes","exchanges"],["exchagnge","exchange"],["exchagnged","exchanged"],["exchagnges","exchanges"],["exchagnging","exchanging"],["exchagning","exchanging"],["exchanage","exchange"],["exchanaged","exchanged"],["exchanages","exchanges"],["exchanaging","exchanging"],["exchance","exchange"],["exchanced","exchanged"],["exchances","exchanges"],["exchanche","exchange"],["exchanched","exchanged"],["exchanches","exchanges"],["exchanching","exchanging"],["exchancing","exchanging"],["exchane","exchange"],["exchaned","exchanged"],["exchanes","exchanges"],["exchangable","exchangeable"],["exchaning","exchanging"],["exchaust","exhaust"],["exchausted","exhausted"],["exchausting","exhausting"],["exchaustive","exhaustive"],["exchausts","exhausts"],["exchenge","exchange"],["exchenged","exchanged"],["exchenges","exchanges"],["exchenging","exchanging"],["exchnage","exchange"],["exchnaged","exchanged"],["exchnages","exchanges"],["exchnaging","exchanging"],["exchng","exchange"],["exchngd","exchanged"],["exchnge","exchange"],["exchnged","exchanged"],["exchnges","exchanges"],["exchnging","exchanging"],["exchngng","exchanging"],["exchngs","exchanges"],["exciation","excitation"],["excipt","except"],["exciption","exception"],["exciptions","exceptions"],["excist","exist"],["excisted","existed"],["excisting","existing"],["excitment","excitement"],["exclamantion","exclamation"],["excludde","exclude"],["excludind","excluding"],["exclusiv","exclusive"],["exclusivelly","exclusively"],["exclusivly","exclusively"],["exclusivs","exclusives"],["excluslvely","exclusively"],["exclusuive","exclusive"],["exclusuively","exclusively"],["exclusuives","exclusives"],["excpect","expect"],["excpected","expected"],["excpecting","expecting"],["excpects","expects"],["excpeption","exception"],["excpet","except"],["excpetion","exception"],["excpetional","exceptional"],["excpetions","exceptions"],["excplicit","explicit"],["excplicitly","explicitly"],["excplict","explicit"],["excplictly","explicitly"],["excract","extract"],["exctacted","extracted"],["exctract","extract"],["exctracted","extracted"],["exctracting","extracting"],["exctraction","extraction"],["exctractions","extractions"],["exctractor","extractor"],["exctractors","extractors"],["exctracts","extracts"],["exculde","exclude"],["exculding","excluding"],["exculsive","exclusive"],["exculsively","exclusively"],["exculsivly","exclusively"],["excutable","executable"],["excutables","executables"],["excute","execute"],["excuted","executed"],["excutes","executes"],["excuting","executing"],["excution","execution"],["execeed","exceed"],["execeeded","exceeded"],["execeeds","exceeds"],["exeception","exception"],["execeptions","exceptions"],["execising","exercising"],["execption","exception"],["execptions","exceptions"],["exectable","executable"],["exection","execution"],["exections","executions"],["exectuable","executable"],["exectuableness","executableness"],["exectuables","executables"],["exectued","executed"],["exectuion","execution"],["exectuions","executions"],["execture","execute"],["exectured","executed"],["exectures","executes"],["execturing","executing"],["exectute","execute"],["exectuted","executed"],["exectutes","executes"],["exectution","execution"],["exectutions","executions"],["execuable","executable"],["execuables","executables"],["execuatable","executable"],["execuatables","executables"],["execuatble","executable"],["execuatbles","executables"],["execuate","execute"],["execuated","executed"],["execuates","executes"],["execuation","execution"],["execuations","executions"],["execubale","executable"],["execubales","executables"],["execucte","execute"],["execucted","executed"],["execuctes","executes"],["execuction","execution"],["execuctions","executions"],["execuctor","executor"],["execuctors","executors"],["execude","execute"],["execuded","executed"],["execudes","executes"],["execue","execute"],["execued","executed"],["execues","executes"],["execuet","execute"],["execuetable","executable"],["execuetd","executed"],["execuete","execute"],["execueted","executed"],["execuetes","executes"],["execuets","executes"],["execuing","executing"],["execuion","execution"],["execuions","executions"],["execuitable","executable"],["execuitables","executables"],["execuite","execute"],["execuited","executed"],["execuites","executes"],["execuiting","executing"],["execuition","execution"],["execuitions","executions"],["execulatble","executable"],["execulatbles","executables"],["execultable","executable"],["execultables","executables"],["execulusive","exclusive"],["execune","execute"],["execuned","executed"],["execunes","executes"],["execunting","executing"],["execurable","executable"],["execurables","executables"],["execure","execute"],["execured","executed"],["execures","executes"],["execusion","execution"],["execusions","executions"],["execusive","exclusive"],["execustion","execution"],["execustions","executions"],["execut","execute"],["executabable","executable"],["executabables","executables"],["executabe","executable"],["executabel","executable"],["executabels","executables"],["executabes","executables"],["executablble","executable"],["executabnle","executable"],["executabnles","executables"],["executation","execution"],["executations","executions"],["executbale","executable"],["executbales","executables"],["executble","executable"],["executbles","executables"],["executd","executed"],["executding","executing"],["executeable","executable"],["executeables","executables"],["executible","executable"],["executign","executing"],["executng","executing"],["executre","execute"],["executred","executed"],["executres","executes"],["executs","executes"],["executting","executing"],["executtion","execution"],["executtions","executions"],["executuable","executable"],["executuables","executables"],["executuble","executable"],["executubles","executables"],["executue","execute"],["executued","executed"],["executues","executes"],["executuing","executing"],["executuion","execution"],["executuions","executions"],["executung","executing"],["executuon","execution"],["executuons","executions"],["executute","execute"],["execututed","executed"],["execututes","executes"],["executution","execution"],["execututions","executions"],["exeed","exceed"],["exeeding","exceeding"],["exeedingly","exceedingly"],["exeeds","exceeds"],["exelent","excellent"],["exellent","excellent"],["exempel","example"],["exempels","examples"],["exemple","example"],["exemples","examples"],["exended","extended"],["exension","extension"],["exensions","extensions"],["exent","extent"],["exentended","extended"],["exepct","expect"],["exepcted","expected"],["exepcts","expects"],["exepect","expect"],["exepectation","expectation"],["exepectations","expectations"],["exepected","expected"],["exepectedly","expectedly"],["exepecting","expecting"],["exepects","expects"],["exepriment","experiment"],["exeprimental","experimental"],["exeptional","exceptional"],["exeptions","exceptions"],["exeqution","execution"],["exerbate","exacerbate"],["exerbated","exacerbated"],["exerciese","exercise"],["exerciesed","exercised"],["exercieses","exercises"],["exerciesing","exercising"],["exercize","exercise"],["exerimental","experimental"],["exerpt","excerpt"],["exerpts","excerpts"],["exersize","exercise"],["exersizes","exercises"],["exerternal","external"],["exeucte","execute"],["exeucted","executed"],["exeuctes","executes"],["exeution","execution"],["exexutable","executable"],["exhalted","exalted"],["exhange","exchange"],["exhanged","exchanged"],["exhanges","exchanges"],["exhanging","exchanging"],["exhaused","exhausted"],["exhautivity","exhaustivity"],["exhcuast","exhaust"],["exhcuasted","exhausted"],["exhibtion","exhibition"],["exhist","exist"],["exhistance","existence"],["exhisted","existed"],["exhistence","existence"],["exhisting","existing"],["exhists","exists"],["exhostive","exhaustive"],["exhustiveness","exhaustiveness"],["exibition","exhibition"],["exibitions","exhibitions"],["exicting","exciting"],["exinct","extinct"],["exipration","expiration"],["exipre","expire"],["exipred","expired"],["exipres","expires"],["exising","existing"],["exisit","exist"],["exisited","existed"],["exisitent","existent"],["exisiting","existing"],["exisitng","existing"],["exisits","exists"],["existance","existence"],["existant","existent"],["existatus","exitstatus"],["existencd","existence"],["existend","existed"],["existense","existence"],["existin","existing"],["existince","existence"],["existng","existing"],["existsing","existing"],["existting","existing"],["existung","existing"],["existy","exist"],["existying","existing"],["exitance","existence"],["exitation","excitation"],["exitations","excitations"],["exitt","exit"],["exitted","exited"],["exitting","exiting"],["exitts","exits"],["exixst","exist"],["exixt","exist"],["exlamation","exclamation"],["exlcude","exclude"],["exlcuding","excluding"],["exlcusion","exclusion"],["exlcusions","exclusions"],["exlcusive","exclusive"],["exlicit","explicit"],["exlicite","explicit"],["exlicitely","explicitly"],["exlicitly","explicitly"],["exliled","exiled"],["exlpoit","exploit"],["exlpoited","exploited"],["exlpoits","exploits"],["exlusion","exclusion"],["exlusionary","exclusionary"],["exlusions","exclusions"],["exlusive","exclusive"],["exlusively","exclusively"],["exmaine","examine"],["exmained","examined"],["exmaines","examines"],["exmaple","example"],["exmaples","examples"],["exmple","example"],["exmport","export"],["exnternal","external"],["exnternalities","externalities"],["exnternality","externality"],["exnternally","externally"],["exntry","entry"],["exolicit","explicit"],["exolicitly","explicitly"],["exonorate","exonerate"],["exort","export"],["exoskelaton","exoskeleton"],["expalin","explain"],["expaning","expanding"],["expanion","expansion"],["expanions","expansions"],["expanshion","expansion"],["expanshions","expansions"],["expanssion","expansion"],["exparation","expiration"],["expasion","expansion"],["expatriot","expatriate"],["expception","exception"],["expcetation","expectation"],["expcetations","expectations"],["expceted","expected"],["expceting","expecting"],["expcets","expects"],["expct","expect"],["expcted","expected"],["expctedly","expectedly"],["expcting","expecting"],["expeced","expected"],["expeceted","expected"],["expecially","especially"],["expectaion","expectation"],["expectaions","expectations"],["expectatoins","expectations"],["expectatons","expectations"],["expectd","expected"],["expecte","expected"],["expectes","expects"],["expection","exception"],["expections","exceptions"],["expeditonary","expeditionary"],["expeect","expect"],["expeected","expected"],["expeectedly","expectedly"],["expeecting","expecting"],["expeects","expects"],["expeense","expense"],["expeenses","expenses"],["expeensive","expensive"],["expeience","experience"],["expeienced","experienced"],["expeiences","experiences"],["expeiencing","experiencing"],["expeiment","experiment"],["expeimental","experimental"],["expeimentally","experimentally"],["expeimentation","experimentation"],["expeimentations","experimentations"],["expeimented","experimented"],["expeimentel","experimental"],["expeimentelly","experimentally"],["expeimenter","experimenter"],["expeimenters","experimenters"],["expeimenting","experimenting"],["expeiments","experiments"],["expeiriment","experiment"],["expeirimental","experimental"],["expeirimentally","experimentally"],["expeirimentation","experimentation"],["expeirimentations","experimentations"],["expeirimented","experimented"],["expeirimentel","experimental"],["expeirimentelly","experimentally"],["expeirimenter","experimenter"],["expeirimenters","experimenters"],["expeirimenting","experimenting"],["expeiriments","experiments"],["expell","expel"],["expells","expels"],["expement","experiment"],["expemental","experimental"],["expementally","experimentally"],["expementation","experimentation"],["expementations","experimentations"],["expemented","experimented"],["expementel","experimental"],["expementelly","experimentally"],["expementer","experimenter"],["expementers","experimenters"],["expementing","experimenting"],["expements","experiments"],["expemplar","exemplar"],["expemplars","exemplars"],["expemplary","exemplary"],["expempt","exempt"],["expempted","exempted"],["expemt","exempt"],["expemted","exempted"],["expemtion","exemption"],["expemtions","exemptions"],["expemts","exempts"],["expence","expense"],["expences","expenses"],["expencive","expensive"],["expendeble","expendable"],["expepect","expect"],["expepected","expected"],["expepectedly","expectedly"],["expepecting","expecting"],["expepects","expects"],["expepted","expected"],["expeptedly","expectedly"],["expepting","expecting"],["expeption","exception"],["expeptions","exceptions"],["expepts","expects"],["experament","experiment"],["experamental","experimental"],["experamentally","experimentally"],["experamentation","experimentation"],["experamentations","experimentations"],["experamented","experimented"],["experamentel","experimental"],["experamentelly","experimentally"],["experamenter","experimenter"],["experamenters","experimenters"],["experamenting","experimenting"],["experaments","experiments"],["experation","expiration"],["expercting","expecting"],["expercts","expects"],["expereince","experience"],["expereinced","experienced"],["expereinces","experiences"],["expereincing","experiencing"],["experement","experiment"],["experemental","experimental"],["experementally","experimentally"],["experementation","experimentation"],["experementations","experimentations"],["experemented","experimented"],["experementel","experimental"],["experementelly","experimentally"],["experementer","experimenter"],["experementers","experimenters"],["experementing","experimenting"],["experements","experiments"],["experence","experience"],["experenced","experienced"],["experences","experiences"],["experencing","experiencing"],["experes","express"],["experesed","expressed"],["experesion","expression"],["experesions","expressions"],["experess","express"],["experessed","expressed"],["experesses","expresses"],["experessing","expressing"],["experession's","expression's"],["experession","expression"],["experessions","expressions"],["experiance","experience"],["experianced","experienced"],["experiances","experiences"],["experiancial","experiential"],["experiancing","experiencing"],["experiansial","experiential"],["experiantial","experiential"],["experiation","expiration"],["experiations","expirations"],["experice","experience"],["expericed","experienced"],["experices","experiences"],["expericing","experiencing"],["experiement","experiment"],["experienshial","experiential"],["experiensial","experiential"],["experies","expires"],["experim","experiment"],["experimal","experimental"],["experimally","experimentally"],["experimanent","experiment"],["experimanental","experimental"],["experimanentally","experimentally"],["experimanentation","experimentation"],["experimanentations","experimentations"],["experimanented","experimented"],["experimanentel","experimental"],["experimanentelly","experimentally"],["experimanenter","experimenter"],["experimanenters","experimenters"],["experimanenting","experimenting"],["experimanents","experiments"],["experimanet","experiment"],["experimanetal","experimental"],["experimanetally","experimentally"],["experimanetation","experimentation"],["experimanetations","experimentations"],["experimaneted","experimented"],["experimanetel","experimental"],["experimanetelly","experimentally"],["experimaneter","experimenter"],["experimaneters","experimenters"],["experimaneting","experimenting"],["experimanets","experiments"],["experimant","experiment"],["experimantal","experimental"],["experimantally","experimentally"],["experimantation","experimentation"],["experimantations","experimentations"],["experimanted","experimented"],["experimantel","experimental"],["experimantelly","experimentally"],["experimanter","experimenter"],["experimanters","experimenters"],["experimanting","experimenting"],["experimants","experiments"],["experimation","experimentation"],["experimations","experimentations"],["experimdnt","experiment"],["experimdntal","experimental"],["experimdntally","experimentally"],["experimdntation","experimentation"],["experimdntations","experimentations"],["experimdnted","experimented"],["experimdntel","experimental"],["experimdntelly","experimentally"],["experimdnter","experimenter"],["experimdnters","experimenters"],["experimdnting","experimenting"],["experimdnts","experiments"],["experimed","experimented"],["experimel","experimental"],["experimelly","experimentally"],["experimen","experiment"],["experimenal","experimental"],["experimenally","experimentally"],["experimenat","experiment"],["experimenatal","experimental"],["experimenatally","experimentally"],["experimenatation","experimentation"],["experimenatations","experimentations"],["experimenated","experimented"],["experimenatel","experimental"],["experimenatelly","experimentally"],["experimenater","experimenter"],["experimenaters","experimenters"],["experimenating","experimenting"],["experimenation","experimentation"],["experimenations","experimentations"],["experimenats","experiments"],["experimened","experimented"],["experimenel","experimental"],["experimenelly","experimentally"],["experimener","experimenter"],["experimeners","experimenters"],["experimening","experimenting"],["experimens","experiments"],["experimentaal","experimental"],["experimentaally","experimentally"],["experimentaat","experiment"],["experimentaatl","experimental"],["experimentaatlly","experimentally"],["experimentaats","experiments"],["experimentaed","experimented"],["experimentaer","experimenter"],["experimentaing","experimenting"],["experimentaion","experimentation"],["experimentaions","experimentations"],["experimentait","experiment"],["experimentaital","experimental"],["experimentaitally","experimentally"],["experimentaited","experimented"],["experimentaiter","experimenter"],["experimentaiters","experimenters"],["experimentaitng","experimenting"],["experimentaiton","experimentation"],["experimentaitons","experimentations"],["experimentat","experimental"],["experimentatal","experimental"],["experimentatally","experimentally"],["experimentatation","experimentation"],["experimentatations","experimentations"],["experimentated","experimented"],["experimentater","experimenter"],["experimentatl","experimental"],["experimentatlly","experimentally"],["experimentatly","experimentally"],["experimentel","experimental"],["experimentelly","experimentally"],["experimentt","experiment"],["experimentted","experimented"],["experimentter","experimenter"],["experimentters","experimenters"],["experimentts","experiments"],["experimer","experimenter"],["experimers","experimenters"],["experimet","experiment"],["experimetal","experimental"],["experimetally","experimentally"],["experimetation","experimentation"],["experimetations","experimentations"],["experimeted","experimented"],["experimetel","experimental"],["experimetelly","experimentally"],["experimetent","experiment"],["experimetental","experimental"],["experimetentally","experimentally"],["experimetentation","experimentation"],["experimetentations","experimentations"],["experimetented","experimented"],["experimetentel","experimental"],["experimetentelly","experimentally"],["experimetenter","experimenter"],["experimetenters","experimenters"],["experimetenting","experimenting"],["experimetents","experiments"],["experimeter","experimenter"],["experimeters","experimenters"],["experimeting","experimenting"],["experimetn","experiment"],["experimetnal","experimental"],["experimetnally","experimentally"],["experimetnation","experimentation"],["experimetnations","experimentations"],["experimetned","experimented"],["experimetnel","experimental"],["experimetnelly","experimentally"],["experimetner","experimenter"],["experimetners","experimenters"],["experimetning","experimenting"],["experimetns","experiments"],["experimets","experiments"],["experiming","experimenting"],["experimint","experiment"],["experimintal","experimental"],["experimintally","experimentally"],["experimintation","experimentation"],["experimintations","experimentations"],["experiminted","experimented"],["experimintel","experimental"],["experimintelly","experimentally"],["experiminter","experimenter"],["experiminters","experimenters"],["experiminting","experimenting"],["experimints","experiments"],["experimment","experiment"],["experimmental","experimental"],["experimmentally","experimentally"],["experimmentation","experimentation"],["experimmentations","experimentations"],["experimmented","experimented"],["experimmentel","experimental"],["experimmentelly","experimentally"],["experimmenter","experimenter"],["experimmenters","experimenters"],["experimmenting","experimenting"],["experimments","experiments"],["experimnet","experiment"],["experimnetal","experimental"],["experimnetally","experimentally"],["experimnetation","experimentation"],["experimnetations","experimentations"],["experimneted","experimented"],["experimnetel","experimental"],["experimnetelly","experimentally"],["experimneter","experimenter"],["experimneters","experimenters"],["experimneting","experimenting"],["experimnets","experiments"],["experimnt","experiment"],["experimntal","experimental"],["experimntally","experimentally"],["experimntation","experimentation"],["experimntations","experimentations"],["experimnted","experimented"],["experimntel","experimental"],["experimntelly","experimentally"],["experimnter","experimenter"],["experimnters","experimenters"],["experimnting","experimenting"],["experimnts","experiments"],["experims","experiments"],["experimten","experiment"],["experimtenal","experimental"],["experimtenally","experimentally"],["experimtenation","experimentation"],["experimtenations","experimentations"],["experimtened","experimented"],["experimtenel","experimental"],["experimtenelly","experimentally"],["experimtener","experimenter"],["experimteners","experimenters"],["experimtening","experimenting"],["experimtens","experiments"],["experinece","experience"],["experineced","experienced"],["experinement","experiment"],["experinemental","experimental"],["experinementally","experimentally"],["experinementation","experimentation"],["experinementations","experimentations"],["experinemented","experimented"],["experinementel","experimental"],["experinementelly","experimentally"],["experinementer","experimenter"],["experinementers","experimenters"],["experinementing","experimenting"],["experinements","experiments"],["experiration","expiration"],["experirations","expirations"],["expermenet","experiment"],["expermenetal","experimental"],["expermenetally","experimentally"],["expermenetation","experimentation"],["expermenetations","experimentations"],["expermeneted","experimented"],["expermenetel","experimental"],["expermenetelly","experimentally"],["expermeneter","experimenter"],["expermeneters","experimenters"],["expermeneting","experimenting"],["expermenets","experiments"],["experment","experiment"],["expermental","experimental"],["expermentally","experimentally"],["expermentation","experimentation"],["expermentations","experimentations"],["expermented","experimented"],["expermentel","experimental"],["expermentelly","experimentally"],["expermenter","experimenter"],["expermenters","experimenters"],["expermenting","experimenting"],["experments","experiments"],["expermient","experiment"],["expermiental","experimental"],["expermientally","experimentally"],["expermientation","experimentation"],["expermientations","experimentations"],["expermiented","experimented"],["expermientel","experimental"],["expermientelly","experimentally"],["expermienter","experimenter"],["expermienters","experimenters"],["expermienting","experimenting"],["expermients","experiments"],["expermiment","experiment"],["expermimental","experimental"],["expermimentally","experimentally"],["expermimentation","experimentation"],["expermimentations","experimentations"],["expermimented","experimented"],["expermimentel","experimental"],["expermimentelly","experimentally"],["expermimenter","experimenter"],["expermimenters","experimenters"],["expermimenting","experimenting"],["expermiments","experiments"],["experminent","experiment"],["experminental","experimental"],["experminentally","experimentally"],["experminentation","experimentation"],["experminentations","experimentations"],["experminents","experiments"],["expernal","external"],["expers","express"],["expersed","expressed"],["expersing","expressing"],["expersion","expression"],["expersions","expressions"],["expersive","expensive"],["experss","express"],["experssed","expressed"],["expersses","expresses"],["experssing","expressing"],["experssion","expression"],["experssions","expressions"],["expese","expense"],["expeses","expenses"],["expesive","expensive"],["expesnce","expense"],["expesnces","expenses"],["expesncive","expensive"],["expess","express"],["expessed","expressed"],["expesses","expresses"],["expessing","expressing"],["expession","expression"],["expessions","expressions"],["expest","expect"],["expested","expected"],["expestedly","expectedly"],["expesting","expecting"],["expetancy","expectancy"],["expetation","expectation"],["expetc","expect"],["expetced","expected"],["expetcedly","expectedly"],["expetcing","expecting"],["expetcs","expects"],["expetct","expect"],["expetcted","expected"],["expetctedly","expectedly"],["expetcting","expecting"],["expetcts","expects"],["expetect","expect"],["expetected","expected"],["expetectedly","expectedly"],["expetecting","expecting"],["expetectly","expectedly"],["expetects","expects"],["expeted","expected"],["expetedly","expectedly"],["expetiment","experiment"],["expetimental","experimental"],["expetimentally","experimentally"],["expetimentation","experimentation"],["expetimentations","experimentations"],["expetimented","experimented"],["expetimentel","experimental"],["expetimentelly","experimentally"],["expetimenter","experimenter"],["expetimenters","experimenters"],["expetimenting","experimenting"],["expetiments","experiments"],["expeting","expecting"],["expetion","exception"],["expetional","exceptional"],["expetions","exceptions"],["expets","expects"],["expewriment","experiment"],["expewrimental","experimental"],["expewrimentally","experimentally"],["expewrimentation","experimentation"],["expewrimentations","experimentations"],["expewrimented","experimented"],["expewrimentel","experimental"],["expewrimentelly","experimentally"],["expewrimenter","experimenter"],["expewrimenters","experimenters"],["expewrimenting","experimenting"],["expewriments","experiments"],["expexct","expect"],["expexcted","expected"],["expexctedly","expectedly"],["expexcting","expecting"],["expexcts","expects"],["expexnasion","expansion"],["expexnasions","expansions"],["expext","expect"],["expexted","expected"],["expextedly","expectedly"],["expexting","expecting"],["expexts","expects"],["expicit","explicit"],["expicitly","explicitly"],["expidition","expedition"],["expiditions","expeditions"],["expierence","experience"],["expierenced","experienced"],["expierences","experiences"],["expierience","experience"],["expieriences","experiences"],["expilicitely","explicitly"],["expireitme","expiretime"],["expiriation","expiration"],["expirie","expire"],["expiried","expired"],["expirience","experience"],["expiriences","experiences"],["expirimental","experimental"],["expiriy","expiry"],["explaination","explanation"],["explainations","explanations"],["explainatory","explanatory"],["explaind","explained"],["explanaiton","explanation"],["explanaitons","explanations"],["explane","explain"],["explaned","explained"],["explanes","explains"],["explaning","explaining"],["explantion","explanation"],["explantions","explanations"],["explcit","explicit"],["explecit","explicit"],["explecitely","explicitly"],["explecitily","explicitly"],["explecitly","explicitly"],["explenation","explanation"],["explicat","explicate"],["explicilt","explicit"],["explicilty","explicitly"],["explicitelly","explicitly"],["explicitely","explicitly"],["explicitily","explicitly"],["explicity","explicitly"],["explicityly","explicitly"],["explict","explicit"],["explictely","explicitly"],["explictily","explicitly"],["explictly","explicitly"],["explin","explain"],["explination","explanation"],["explinations","explanations"],["explined","explained"],["explins","explains"],["explit","explicit"],["explitictly","explicitly"],["explitit","explicit"],["explitly","explicitly"],["explizit","explicit"],["explizitly","explicitly"],["exploititive","exploitative"],["expoed","exposed"],["expoent","exponent"],["expoential","exponential"],["expoentially","exponentially"],["expoentntial","exponential"],["expoerted","exported"],["expoit","exploit"],["expoitation","exploitation"],["expoited","exploited"],["expoits","exploits"],["expolde","explode"],["exponant","exponent"],["exponantation","exponentiation"],["exponantially","exponentially"],["exponantialy","exponentially"],["exponants","exponents"],["exponentation","exponentiation"],["exponentialy","exponentially"],["exponentiel","exponential"],["exponentiell","exponential"],["exponetial","exponential"],["exporession","expression"],["expors","exports"],["expport","export"],["exppressed","expressed"],["expres","express"],["expresed","expressed"],["expresing","expressing"],["expresion","expression"],["expresions","expressions"],["expressable","expressible"],["expressino","expression"],["expresso","espresso"],["expresss","express"],["expresssion","expression"],["expresssions","expressions"],["exprience","experience"],["exprienced","experienced"],["expriences","experiences"],["exprimental","experimental"],["expropiated","expropriated"],["expropiation","expropriation"],["exprot","export"],["exproted","exported"],["exproting","exporting"],["exprots","exports"],["exprted","exported"],["exptected","expected"],["exra","extra"],["exract","extract"],["exressed","expressed"],["exression","expression"],["exsistence","existence"],["exsistent","existent"],["exsisting","existing"],["exsists","exists"],["exsiting","existing"],["exspect","expect"],["exspected","expected"],["exspectedly","expectedly"],["exspecting","expecting"],["exspects","expects"],["exspense","expense"],["exspensed","expensed"],["exspenses","expenses"],["exstacy","ecstasy"],["exsted","existed"],["exsting","existing"],["exstream","extreme"],["exsts","exists"],["extaction","extraction"],["extactly","exactly"],["extacy","ecstasy"],["extarnal","external"],["extarnally","externally"],["extatic","ecstatic"],["extedn","extend"],["extedned","extended"],["extedner","extender"],["extedners","extenders"],["extedns","extends"],["extemely","extremely"],["exten","extent"],["extenal","external"],["extendded","extended"],["extendet","extended"],["extendsions","extensions"],["extened","extended"],["exteneded","extended"],["extenisble","extensible"],["extennsions","extensions"],["extensability","extensibility"],["extensiable","extensible"],["extensibity","extensibility"],["extensilbe","extensible"],["extensiones","extensions"],["extensivly","extensively"],["extenson","extension"],["extenstion","extension"],["extenstions","extensions"],["extented","extended"],["extention","extension"],["extentions","extensions"],["extepect","expect"],["extepecting","expecting"],["extepects","expects"],["exteral","external"],["extered","exerted"],["extereme","extreme"],["exterme","extreme"],["extermest","extremest"],["extermist","extremist"],["extermists","extremists"],["extermly","extremely"],["extermporaneous","extemporaneous"],["externaly","externally"],["externel","external"],["externelly","externally"],["externels","externals"],["extesion","extension"],["extesions","extensions"],["extesnion","extension"],["extesnions","extensions"],["extimate","estimate"],["extimated","estimated"],["extimates","estimates"],["extimating","estimating"],["extimation","estimation"],["extimations","estimations"],["extimator","estimator"],["extimators","estimators"],["extist","exist"],["extit","exit"],["extnesion","extension"],["extrac","extract"],["extraced","extracted"],["extracing","extracting"],["extracter","extractor"],["extractet","extracted"],["extractino","extracting"],["extractins","extractions"],["extradiction","extradition"],["extraenous","extraneous"],["extranous","extraneous"],["extrapoliate","extrapolate"],["extrat","extract"],["extrated","extracted"],["extraterrestial","extraterrestrial"],["extraterrestials","extraterrestrials"],["extrates","extracts"],["extrating","extracting"],["extration","extraction"],["extrator","extractor"],["extrators","extractors"],["extrats","extracts"],["extravagent","extravagant"],["extraversion","extroversion"],["extravert","extrovert"],["extraverts","extroverts"],["extraxt","extract"],["extraxted","extracted"],["extraxting","extracting"],["extraxtors","extractors"],["extraxts","extracts"],["extream","extreme"],["extreamely","extremely"],["extreamily","extremely"],["extreamly","extremely"],["extreams","extremes"],["extreem","extreme"],["extreemly","extremely"],["extremaly","extremely"],["extremeley","extremely"],["extremelly","extremely"],["extrememe","extreme"],["extrememely","extremely"],["extrememly","extremely"],["extremeophile","extremophile"],["extremitys","extremities"],["extremly","extremely"],["extrenal","external"],["extrenally","externally"],["extrenaly","externally"],["extrime","extreme"],["extrimely","extremely"],["extrimly","extremely"],["extrmities","extremities"],["extrodinary","extraordinary"],["extrordinarily","extraordinarily"],["extrordinary","extraordinary"],["extry","entry"],["exturd","extrude"],["exturde","extrude"],["exturded","extruded"],["exturdes","extrudes"],["exturding","extruding"],["exuberent","exuberant"],["exucuted","executed"],["eyt","yet"],["ezdrop","eavesdrop"],["fability","facility"],["fabircate","fabricate"],["fabircated","fabricated"],["fabircates","fabricates"],["fabircatings","fabricating"],["fabircation","fabrication"],["facce","face"],["faciliate","facilitate"],["faciliated","facilitated"],["faciliates","facilitates"],["faciliating","facilitating"],["facilites","facilities"],["facilitiate","facilitate"],["facilitiates","facilitates"],["facilititate","facilitate"],["facillitate","facilitate"],["facillities","facilities"],["faciltate","facilitate"],["facilties","facilities"],["facinated","fascinated"],["facirity","facility"],["facist","fascist"],["facorite","favorite"],["facorites","favorites"],["facourite","favourite"],["facourites","favourites"],["facours","favours"],["factization","factorization"],["factorizaiton","factorization"],["factorys","factories"],["fadind","fading"],["faeture","feature"],["faetures","features"],["Fahrenheight","Fahrenheit"],["faield","failed"],["faild","failed"],["failded","failed"],["faile","failed"],["failer","failure"],["failes","fails"],["failicies","facilities"],["failicy","facility"],["failied","failed"],["failiure","failure"],["failiures","failures"],["failiver","failover"],["faill","fail"],["failled","failed"],["faillure","failure"],["failng","failing"],["failre","failure"],["failrue","failure"],["failture","failure"],["failue","failure"],["failuer","failure"],["failues","failures"],["failured","failed"],["faireness","fairness"],["fairoh","pharaoh"],["faiway","fairway"],["faiways","fairways"],["faktor","factor"],["faktored","factored"],["faktoring","factoring"],["faktors","factors"],["falg","flag"],["falgs","flags"],["falied","failed"],["faliure","failure"],["faliures","failures"],["fallabck","fallback"],["fallbck","fallback"],["fallhrough","fallthrough"],["fallthruogh","fallthrough"],["falltrough","fallthrough"],["falshed","flashed"],["falshes","flashes"],["falshing","flashing"],["falsly","falsely"],["falt","fault"],["falure","failure"],["familar","familiar"],["familes","families"],["familiies","families"],["familiy","family"],["familliar","familiar"],["familly","family"],["famlilies","families"],["famlily","family"],["famoust","famous"],["fanatism","fanaticism"],["fancyness","fanciness"],["Farenheight","Fahrenheit"],["Farenheit","Fahrenheit"],["faries","fairies"],["farmework","framework"],["fasade","facade"],["fasion","fashion"],["fasle","false"],["fassade","facade"],["fassinate","fascinate"],["fasterner","fastener"],["fasterners","fasteners"],["fastner","fastener"],["fastners","fasteners"],["fastr","faster"],["fatc","fact"],["fater","faster"],["fatig","fatigue"],["fatser","faster"],["fature","feature"],["faught","fought"],["fauilure","failure"],["fauilures","failures"],["fauture","feature"],["fautured","featured"],["fautures","features"],["fauturing","featuring"],["favoutrable","favourable"],["favuourites","favourites"],["faymus","famous"],["fcound","found"],["feasabile","feasible"],["feasability","feasibility"],["feasable","feasible"],["featchd","fetched"],["featched","fetched"],["featching","fetching"],["featchs","fetches"],["featchss","fetches"],["featchure","feature"],["featchured","featured"],["featchures","features"],["featchuring","featuring"],["featre","feature"],["featue","feature"],["featued","featured"],["featues","features"],["featur","feature"],["featurs","features"],["feautre","feature"],["feauture","feature"],["feautures","features"],["febbruary","February"],["febewary","February"],["februar","February"],["Febuary","February"],["Feburary","February"],["fecthing","fetching"],["fedality","fidelity"],["fedreally","federally"],["feeback","feedback"],["feeded","fed"],["feek","feel"],["feeks","feels"],["feetur","feature"],["feeture","feature"],["feild","field"],["feld","field"],["felisatus","felicitous"],["femminist","feminist"],["fempto","femto"],["feonsay","fianc\xE9e"],["fequency","frequency"],["feromone","pheromone"],["fertil","fertile"],["fertily","fertility"],["fetaure","feature"],["fetaures","features"],["fetchs","fetches"],["feture","feature"],["fetures","features"],["fewsha","fuchsia"],["fezent","pheasant"],["fhurter","further"],["fials","fails"],["fianite","finite"],["fianlly","finally"],["fibonaacci","Fibonacci"],["ficticious","fictitious"],["fictious","fictitious"],["fidality","fidelity"],["fiddley","fiddly"],["fidn","find"],["fied","field"],["fiedl","field"],["fiedled","fielded"],["fiedls","fields"],["fieid","field"],["fieldlst","fieldlist"],["fieled","field"],["fielesystem","filesystem"],["fielesystems","filesystems"],["fielname","filename"],["fielneame","filename"],["fiercly","fiercely"],["fightings","fighting"],["figurestyle","figurestyles"],["filal","final"],["fileand","file and"],["fileds","fields"],["fileld","field"],["filelds","fields"],["filenae","filename"],["filese","files"],["fileshystem","filesystem"],["fileshystems","filesystems"],["filesnames","filenames"],["filess","files"],["filesstem","filesystem"],["filessytem","filesystem"],["filessytems","filesystems"],["fileststem","filesystem"],["filesysems","filesystems"],["filesysthem","filesystem"],["filesysthems","filesystems"],["filesystmes","filesystems"],["filesystyem","filesystem"],["filesystyems","filesystems"],["filesytem","filesystem"],["filesytems","filesystems"],["filesytsem","filesystem"],["fileter","filter"],["filetest","file test"],["filetests","file tests"],["fileystem","filesystem"],["fileystems","filesystems"],["filiament","filament"],["fillay","fillet"],["fillement","filament"],["fillowing","following"],["fillung","filling"],["filnal","final"],["filname","filename"],["filp","flip"],["filpped","flipped"],["filpping","flipping"],["filps","flips"],["filse","files"],["filsystem","filesystem"],["filsystems","filesystems"],["filterd","filtered"],["filterig","filtering"],["filterin","filtering"],["filterring","filtering"],["filtersing","filtering"],["filterss","filters"],["filtype","filetype"],["filtypes","filetypes"],["fimilies","families"],["fimrware","firmware"],["fimware","firmware"],["finacial","financial"],["finailse","finalise"],["finailze","finalize"],["finallly","finally"],["finanace","finance"],["finanaced","financed"],["finanaces","finances"],["finanacially","financially"],["finanacier","financier"],["financialy","financially"],["finanize","finalize"],["finanlize","finalize"],["fincally","finally"],["finctionalities","functionalities"],["finctionality","functionality"],["finde","find"],["findn","find"],["findout","find out"],["finelly","finally"],["finess","finesse"],["fingeprint","fingerprint"],["finialization","finalization"],["finializing","finalizing"],["finilizes","finalizes"],["finisched","finished"],["finised","finished"],["finishied","finished"],["finishs","finishes"],["finitel","finite"],["finness","finesse"],["finnished","finished"],["finshed","finished"],["finshing","finishing"],["finsih","finish"],["finsihed","finished"],["finsihes","finishes"],["finsihing","finishing"],["finsished","finished"],["finxed","fixed"],["finxing","fixing"],["fiorget","forget"],["firday","Friday"],["firends","friends"],["firey","fiery"],["firmare","firmware"],["firmaware","firmware"],["firmawre","firmware"],["firmeare","firmware"],["firmeware","firmware"],["firmnware","firmware"],["firmwart","firmware"],["firmwear","firmware"],["firmwqre","firmware"],["firmwre","firmware"],["firmwware","firmware"],["firsr","first"],["firsth","first"],["firware","firmware"],["firwmare","firmware"],["fisionable","fissionable"],["fisisist","physicist"],["fisist","physicist"],["fisrt","first"],["fitering","filtering"],["fitler","filter"],["fitlers","filters"],["fivety","fifty"],["fixel","pixel"],["fixels","pixels"],["fixeme","fixme"],["fixwd","fixed"],["fizeek","physique"],["flacor","flavor"],["flacored","flavored"],["flacoring","flavoring"],["flacorings","flavorings"],["flacors","flavors"],["flacour","flavour"],["flacoured","flavoured"],["flacouring","flavouring"],["flacourings","flavourings"],["flacours","flavours"],["flaged","flagged"],["flages","flags"],["flagg","flag"],["flahsed","flashed"],["flahses","flashes"],["flahsing","flashing"],["flakyness","flakiness"],["flamable","flammable"],["flaot","float"],["flaoting","floating"],["flashflame","flashframe"],["flashig","flashing"],["flasing","flashing"],["flate","flat"],["flatened","flattened"],["flattend","flattened"],["flattenning","flattening"],["flawess","flawless"],["fle","file"],["flem","phlegm"],["Flemmish","Flemish"],["flewant","fluent"],["flexability","flexibility"],["flexable","flexible"],["flexibel","flexible"],["flexibele","flexible"],["flexibilty","flexibility"],["flext","flex"],["flie","file"],["fliter","filter"],["flitered","filtered"],["flitering","filtering"],["fliters","filters"],["floading-add","floating-add"],["floatation","flotation"],["floride","fluoride"],["floting","floating"],["flouride","fluoride"],["flourine","fluorine"],["flourishment","flourishing"],["flter","filter"],["fluctuand","fluctuant"],["flud","flood"],["fluorish","flourish"],["fluoroscent","fluorescent"],["fluroescent","fluorescent"],["flushs","flushes"],["flusing","flushing"],["focu","focus"],["focued","focused"],["focument","document"],["focuse","focus"],["focusf","focus"],["focuss","focus"],["focussed","focused"],["focusses","focuses"],["fof","for"],["foget","forget"],["fogot","forgot"],["fogotten","forgotten"],["fointers","pointers"],["foler","folder"],["folers","folders"],["folfer","folder"],["folfers","folders"],["folled","followed"],["foller","follower"],["follers","followers"],["follew","follow"],["follewed","followed"],["follewer","follower"],["follewers","followers"],["follewin","following"],["follewind","following"],["follewing","following"],["follewinwg","following"],["follewiong","following"],["follewiwng","following"],["follewong","following"],["follews","follows"],["follfow","follow"],["follfowed","followed"],["follfower","follower"],["follfowers","followers"],["follfowin","following"],["follfowind","following"],["follfowing","following"],["follfowinwg","following"],["follfowiong","following"],["follfowiwng","following"],["follfowong","following"],["follfows","follows"],["follin","following"],["follind","following"],["follinwg","following"],["folliong","following"],["folliw","follow"],["folliwed","followed"],["folliwer","follower"],["folliwers","followers"],["folliwin","following"],["folliwind","following"],["folliwing","following"],["folliwinwg","following"],["folliwiong","following"],["folliwiwng","following"],["folliwng","following"],["folliwong","following"],["folliws","follows"],["folllow","follow"],["folllowed","followed"],["folllower","follower"],["folllowers","followers"],["folllowin","following"],["folllowind","following"],["folllowing","following"],["folllowinwg","following"],["folllowiong","following"],["folllowiwng","following"],["folllowong","following"],["follod","followed"],["folloeing","following"],["folloing","following"],["folloiwng","following"],["follolwing","following"],["follong","following"],["follos","follows"],["followes","follows"],["followig","following"],["followign","following"],["followin","following"],["followind","following"],["followint","following"],["followng","following"],["followwing","following"],["followwings","followings"],["folls","follows"],["follw","follow"],["follwed","followed"],["follwer","follower"],["follwers","followers"],["follwin","following"],["follwind","following"],["follwing","following"],["follwinwg","following"],["follwiong","following"],["follwiwng","following"],["follwo","follow"],["follwoe","follow"],["follwoed","followed"],["follwoeed","followed"],["follwoeer","follower"],["follwoeers","followers"],["follwoein","following"],["follwoeind","following"],["follwoeing","following"],["follwoeinwg","following"],["follwoeiong","following"],["follwoeiwng","following"],["follwoeong","following"],["follwoer","follower"],["follwoers","followers"],["follwoes","follows"],["follwoin","following"],["follwoind","following"],["follwoing","following"],["follwoinwg","following"],["follwoiong","following"],["follwoiwng","following"],["follwong","following"],["follwoong","following"],["follwos","follows"],["follwow","follow"],["follwowed","followed"],["follwower","follower"],["follwowers","followers"],["follwowin","following"],["follwowind","following"],["follwowing","following"],["follwowinwg","following"],["follwowiong","following"],["follwowiwng","following"],["follwowong","following"],["follwows","follows"],["follws","follows"],["follww","follow"],["follwwed","followed"],["follwwer","follower"],["follwwers","followers"],["follwwin","following"],["follwwind","following"],["follwwing","following"],["follwwinwg","following"],["follwwiong","following"],["follwwiwng","following"],["follwwong","following"],["follwws","follows"],["foloow","follow"],["foloowed","followed"],["foloower","follower"],["foloowers","followers"],["foloowin","following"],["foloowind","following"],["foloowing","following"],["foloowinwg","following"],["foloowiong","following"],["foloowiwng","following"],["foloowong","following"],["foloows","follows"],["folow","follow"],["folowed","followed"],["folower","follower"],["folowers","followers"],["folowin","following"],["folowind","following"],["folowing","following"],["folowinwg","following"],["folowiong","following"],["folowiwng","following"],["folowong","following"],["folows","follows"],["foloww","follow"],["folowwed","followed"],["folowwer","follower"],["folowwers","followers"],["folowwin","following"],["folowwind","following"],["folowwing","following"],["folowwinwg","following"],["folowwiong","following"],["folowwiwng","following"],["folowwong","following"],["folowws","follows"],["folse","false"],["folwo","follow"],["folwoed","followed"],["folwoer","follower"],["folwoers","followers"],["folwoin","following"],["folwoind","following"],["folwoing","following"],["folwoinwg","following"],["folwoiong","following"],["folwoiwng","following"],["folwoong","following"],["folwos","follows"],["folx","folks"],["fom","from"],["fomat","format"],["fomated","formatted"],["fomater","formatter"],["fomates","formats"],["fomating","formatting"],["fomats","formats"],["fomatted","formatted"],["fomatter","formatter"],["fomatting","formatting"],["fomed","formed"],["fomrat","format"],["fomrated","formatted"],["fomrater","formatter"],["fomrating","formatting"],["fomrats","formats"],["fomratted","formatted"],["fomratter","formatter"],["fomratting","formatting"],["fomula","formula"],["fomulas","formula"],["fonction","function"],["fonctional","functional"],["fonctionalities","functionalities"],["fonctionality","functionality"],["fonctioning","functioning"],["fonctionnalies","functionalities"],["fonctionnalities","functionalities"],["fonctionnality","functionality"],["fonctions","functions"],["fonetic","phonetic"],["fontier","frontier"],["fontonfig","fontconfig"],["fontrier","frontier"],["fonud","found"],["foontnotes","footnotes"],["foootball","football"],["foorter","footer"],["footnoes","footnotes"],["footprinst","footprints"],["foound","found"],["foppy","floppy"],["foppys","floppies"],["foramatting","formatting"],["foramt","format"],["forat","format"],["forbad","forbade"],["forbbiden","forbidden"],["forbiden","forbidden"],["forbit","forbid"],["forbiten","forbidden"],["forbitten","forbidden"],["forcably","forcibly"],["forcast","forecast"],["forcasted","forecasted"],["forcaster","forecaster"],["forcasters","forecasters"],["forcasting","forecasting"],["forcasts","forecasts"],["forcot","forgot"],["forece","force"],["foreced","forced"],["foreces","forces"],["foregrond","foreground"],["foregronds","foregrounds"],["foreing","foreign"],["forementionned","aforementioned"],["forermly","formerly"],["forfiet","forfeit"],["forgeround","foreground"],["forgoten","forgotten"],["forground","foreground"],["forhead","forehead"],["foriegn","foreign"],["forld","fold"],["forlder","folder"],["forlders","folders"],["Formalhaut","Fomalhaut"],["formallize","formalize"],["formallized","formalized"],["formate","format"],["formated","formatted"],["formater","formatter"],["formaters","formatters"],["formates","formats"],["formath","format"],["formaths","formats"],["formating","formatting"],["formatteded","formatted"],["formattgin","formatting"],["formattind","formatting"],["formattings","formatting"],["formattring","formatting"],["formattted","formatted"],["formattting","formatting"],["formelly","formerly"],["formely","formerly"],["formend","formed"],["formidible","formidable"],["formmatted","formatted"],["formost","foremost"],["formt","format"],["formua","formula"],["formual","formula"],["formuale","formulae"],["formuals","formulas"],["fornat","format"],["fornated","formatted"],["fornater","formatter"],["fornats","formats"],["fornatted","formatted"],["fornatter","formatter"],["forot","forgot"],["forotten","forgotten"],["forr","for"],["forsaw","foresaw"],["forse","force"],["forseeable","foreseeable"],["fortan","fortran"],["fortat","format"],["forteen","fourteen"],["fortelling","foretelling"],["forthcominng","forthcoming"],["forthcomming","forthcoming"],["fortunaly","fortunately"],["fortunat","fortunate"],["fortunatelly","fortunately"],["fortunatly","fortunately"],["fortunetly","fortunately"],["forula","formula"],["forulas","formulas"],["forumla","formula"],["forumlas","formulas"],["forumula","formula"],["forumulas","formulas"],["forunate","fortunate"],["forunately","fortunately"],["forunner","forerunner"],["forutunate","fortunate"],["forutunately","fortunately"],["forver","forever"],["forwad","forward"],["forwaded","forwarded"],["forwading","forwarding"],["forwads","forwards"],["forwardig","forwarding"],["forwaring","forwarding"],["forwwarded","forwarded"],["foto","photo"],["fotograf","photograph"],["fotografic","photographic"],["fotografical","photographical"],["fotografy","photography"],["fotograph","photograph"],["fotography","photography"],["foucs","focus"],["foudn","found"],["foudning","founding"],["fougth","fought"],["foult","fault"],["foults","faults"],["foundaries","foundries"],["foundary","foundry"],["Foundland","Newfoundland"],["fourties","forties"],["fourty","forty"],["fouth","fourth"],["fouund","found"],["foward","forward"],["fowarded","forwarded"],["fowarding","forwarding"],["fowards","forwards"],["fprmat","format"],["fracional","fractional"],["fragement","fragment"],["fragementation","fragmentation"],["fragements","fragments"],["fragmant","fragment"],["fragmantation","fragmentation"],["fragmants","fragments"],["fragmenet","fragment"],["fragmenetd","fragmented"],["fragmeneted","fragmented"],["fragmeneting","fragmenting"],["fragmenets","fragments"],["fragmnet","fragment"],["frambuffer","framebuffer"],["framebufer","framebuffer"],["framei","frame"],["frament","fragment"],["framented","fragmented"],["framents","fragments"],["frametyp","frametype"],["framewoek","framework"],["framewoeks","frameworks"],["frameworkk","framework"],["framlayout","framelayout"],["framming","framing"],["framwework","framework"],["framwork","framework"],["framworks","frameworks"],["frane","frame"],["frankin","franklin"],["Fransiscan","Franciscan"],["Fransiscans","Franciscans"],["franzise","franchise"],["frecuencies","frequencies"],["frecuency","frequency"],["frecuent","frequent"],["frecuented","frequented"],["frecuently","frequently"],["frecuents","frequents"],["freecallrelpy","freecallreply"],["freedon","freedom"],["freedons","freedoms"],["freedum","freedom"],["freedums","freedoms"],["freee","free"],["freeed","freed"],["freezs","freezes"],["freind","friend"],["freindly","friendly"],["freqencies","frequencies"],["freqency","frequency"],["freqeuncies","frequencies"],["freqeuncy","frequency"],["freqiencies","frequencies"],["freqiency","frequency"],["freqquencies","frequencies"],["freqquency","frequency"],["frequancies","frequencies"],["frequancy","frequency"],["frequant","frequent"],["frequantly","frequently"],["frequences","frequencies"],["frequencey","frequency"],["frequenies","frequencies"],["frequentily","frequently"],["frequncies","frequencies"],["frequncy","frequency"],["freze","freeze"],["frezes","freezes"],["frgament","fragment"],["fricton","friction"],["fridey","Friday"],["frimware","firmware"],["frisday","Friday"],["frist","first"],["frition","friction"],["fritional","frictional"],["fritions","frictions"],["frmat","format"],["frmo","from"],["froce","force"],["frok","from"],["fromal","formal"],["fromat","format"],["fromated","formatted"],["fromates","formats"],["fromating","formatting"],["fromation","formation"],["fromats","formats"],["frome","from"],["fromed","formed"],["fromm","from"],["froms","forms"],["fromt","from"],["fromthe","from the"],["fronend","frontend"],["fronends","frontends"],["froniter","frontier"],["frontent","frontend"],["frontents","frontends"],["frop","drop"],["fropm","from"],["frops","drops"],["frowarded","forwarded"],["frowrad","forward"],["frowrading","forwarding"],["frowrads","forwards"],["frozee","frozen"],["fschk","fsck"],["FTBS","FTBFS"],["ftrunacate","ftruncate"],["fualt","fault"],["fualts","faults"],["fucntion","function"],["fucntional","functional"],["fucntionality","functionality"],["fucntioned","functioned"],["fucntioning","functioning"],["fucntions","functions"],["fuction","function"],["fuctionality","functionality"],["fuctiones","functioned"],["fuctioning","functioning"],["fuctionoid","functionoid"],["fuctions","functions"],["fuetherst","furthest"],["fuethest","furthest"],["fufill","fulfill"],["fufilled","fulfilled"],["fugure","figure"],["fugured","figured"],["fugures","figures"],["fule","file"],["fulfiled","fulfilled"],["fullfiled","fulfilled"],["fullfiling","fulfilling"],["fullfilled","fulfilled"],["fullfilling","fulfilling"],["fullfills","fulfills"],["fullly","fully"],["fulsh","flush"],["fuly","fully"],["fumction","function"],["fumctional","functional"],["fumctionally","functionally"],["fumctioned","functioned"],["fumctions","functions"],["funcation","function"],["funchtion","function"],["funchtional","functional"],["funchtioned","functioned"],["funchtioning","functioning"],["funchtionn","function"],["funchtionnal","functional"],["funchtionned","functioned"],["funchtionning","functioning"],["funchtionns","functions"],["funchtions","functions"],["funcion","function"],["funcions","functions"],["funciotn","function"],["funciotns","functions"],["funciton","function"],["funcitonal","functional"],["funcitonality","functionality"],["funcitonally","functionally"],["funcitoned","functioned"],["funcitoning","functioning"],["funcitons","functions"],["funcstions","functions"],["functiion","function"],["functiional","functional"],["functiionality","functionality"],["functiionally","functionally"],["functiioning","functioning"],["functiions","functions"],["functin","function"],["functinality","functionality"],["functino","function"],["functins","functions"],["functio","function"],["functionability","functionality"],["functionaility","functionality"],["functionailty","functionality"],["functionaily","functionality"],["functionallities","functionalities"],["functionallity","functionality"],["functionaltiy","functionality"],["functionalty","functionality"],["functionionalities","functionalities"],["functionionality","functionality"],["functionnal","functional"],["functionnalities","functionalities"],["functionnality","functionality"],["functionnaly","functionally"],["functionning","functioning"],["functionon","function"],["functionss","functions"],["functios","functions"],["functiosn","functions"],["functiton","function"],["functitonal","functional"],["functitonally","functionally"],["functitoned","functioned"],["functitons","functions"],["functon","function"],["functonal","functional"],["functonality","functionality"],["functoning","functioning"],["functons","functions"],["functtion","function"],["functtional","functional"],["functtionalities","functionalities"],["functtioned","functioned"],["functtioning","functioning"],["functtions","functions"],["funczion","function"],["fundametal","fundamental"],["fundametals","fundamentals"],["fundation","foundation"],["fundemantal","fundamental"],["fundemental","fundamental"],["fundementally","fundamentally"],["fundementals","fundamentals"],["funguses","fungi"],["funktion","function"],["funnnily","funnily"],["funtion","function"],["funtional","functional"],["funtionalities","functionalities"],["funtionality","functionality"],["funtionallity","functionality"],["funtionally","functionally"],["funtionalty","functionality"],["funtioning","functioning"],["funtions","functions"],["funvtion","function"],["funvtional","functional"],["funvtionalities","functionalities"],["funvtionality","functionality"],["funvtioned","functioned"],["funvtioning","functioning"],["funvtions","functions"],["funxtion","function"],["funxtional","functional"],["funxtionalities","functionalities"],["funxtionality","functionality"],["funxtioned","functioned"],["funxtioning","functioning"],["funxtions","functions"],["furether","further"],["furethermore","furthermore"],["furethest","furthest"],["furfill","fulfill"],["furher","further"],["furhermore","furthermore"],["furhest","furthest"],["furhter","further"],["furhtermore","furthermore"],["furhtest","furthest"],["furmalae","formulae"],["furmula","formula"],["furmulae","formulae"],["furnction","function"],["furnctional","functional"],["furnctions","functions"],["furneture","furniture"],["furser","further"],["fursermore","furthermore"],["furst","first"],["fursther","further"],["fursthermore","furthermore"],["fursthest","furthest"],["furter","further"],["furthemore","furthermore"],["furthermor","furthermore"],["furtherst","furthest"],["furthremore","furthermore"],["furthrest","furthest"],["furthur","further"],["furture","future"],["furure","future"],["furuther","further"],["furutre","future"],["furzzer","fuzzer"],["fuschia","fuchsia"],["fushed","flushed"],["fushing","flushing"],["futher","further"],["futherize","further"],["futhermore","furthermore"],["futrue","future"],["futrure","future"],["futture","future"],["fwe","few"],["fwirte","fwrite"],["fxed","fixed"],["fysical","physical"],["fysisist","physicist"],["fysisit","physicist"],["gabage","garbage"],["galatic","galactic"],["Galations","Galatians"],["gallaries","galleries"],["gallary","gallery"],["gallaxies","galaxies"],["gallleries","galleries"],["galllery","gallery"],["galllerys","galleries"],["galvinized","galvanized"],["Gameboy","Game Boy"],["ganbia","gambia"],["ganerate","generate"],["ganes","games"],["ganster","gangster"],["garabge","garbage"],["garantee","guarantee"],["garanteed","guaranteed"],["garanteeed","guaranteed"],["garantees","guarantees"],["garantied","guaranteed"],["garanty","guarantee"],["garbadge","garbage"],["garbage-dollected","garbage-collected"],["garbagge","garbage"],["garbarge","garbage"],["gard","guard"],["gardai","garda\xED"],["garentee","guarantee"],["garnison","garrison"],["garuantee","guarantee"],["garuanteed","guaranteed"],["garuantees","guarantees"],["garuantied","guaranteed"],["gatable","gateable"],["gateing","gating"],["gatherig","gathering"],["gatway","gateway"],["gauage","gauge"],["gauarana","guaran\xE1"],["gauarantee","guarantee"],["gauaranteed","guaranteed"],["gauarentee","guarantee"],["gauarenteed","guaranteed"],["gaurantee","guarantee"],["gauranteed","guaranteed"],["gauranteeing","guaranteeing"],["gaurantees","guarantees"],["gaurentee","guarantee"],["gaurenteed","guaranteed"],["gaurentees","guarantees"],["gaus'","Gauss'"],["gaus's","Gauss'"],["gausian","gaussian"],["geeneric","generic"],["geenrate","generate"],["geenrated","generated"],["geenrates","generates"],["geenration","generation"],["geenrational","generational"],["geeoteen","guillotine"],["geeral","general"],["gemetrical","geometrical"],["gemetry","geometry"],["gemoetry","geometry"],["gemometric","geometric"],["genarate","generate"],["genarated","generated"],["genarating","generating"],["genaration","generation"],["genearal","general"],["genearally","generally"],["genearted","generated"],["geneate","generate"],["geneated","generated"],["geneates","generates"],["geneating","generating"],["geneation","generation"],["geneological","genealogical"],["geneologies","genealogies"],["geneology","genealogy"],["generaates","generates"],["generaly","generally"],["generalyl","generally"],["generalyse","generalise"],["generater","generator"],["generaters","generators"],["generatig","generating"],["generatng","generating"],["generatting","generating"],["genereate","generate"],["genereated","generated"],["genereates","generates"],["genereating","generating"],["genered","generated"],["genereic","generic"],["generell","general"],["generelly","generally"],["genererate","generate"],["genererated","generated"],["genererater","generator"],["genererating","generating"],["genereration","generation"],["genereted","generated"],["generilise","generalise"],["generilised","generalised"],["generilises","generalises"],["generilize","generalize"],["generilized","generalized"],["generilizes","generalizes"],["generiously","generously"],["generla","general"],["generlaizes","generalizes"],["generlas","generals"],["generted","generated"],["generting","generating"],["genertion","generation"],["genertor","generator"],["genertors","generators"],["genialia","genitalia"],["genral","general"],["genralisation","generalisation"],["genralisations","generalisations"],["genralise","generalise"],["genralised","generalised"],["genralises","generalises"],["genralization","generalization"],["genralizations","generalizations"],["genralize","generalize"],["genralized","generalized"],["genralizes","generalizes"],["genrally","generally"],["genrals","generals"],["genrate","generate"],["genrated","generated"],["genrates","generates"],["genratet","generated"],["genrating","generating"],["genration","generation"],["genrations","generations"],["genrator","generator"],["genrators","generators"],["genreate","generate"],["genreated","generated"],["genreates","generates"],["genreating","generating"],["genreic","generic"],["genric","generic"],["genrics","generics"],["gental","gentle"],["genuin","genuine"],["geocentic","geocentric"],["geoemtries","geometries"],["geoemtry","geometry"],["geogcountry","geocountry"],["geographich","geographic"],["geographicial","geographical"],["geoio","geoip"],["geomertic","geometric"],["geomerties","geometries"],["geomerty","geometry"],["geomery","geometry"],["geometites","geometries"],["geometrician","geometer"],["geometricians","geometers"],["geometrie","geometry"],["geometrys","geometries"],["geomety","geometry"],["geometyr","geometry"],["geomitrically","geometrically"],["geomoetric","geometric"],["geomoetrically","geometrically"],["geomoetry","geometry"],["geomtery","geometry"],["geomtries","geometries"],["geomtry","geometry"],["geomtrys","geometries"],["georeferncing","georeferencing"],["geraff","giraffe"],["geraphics","graphics"],["gerat","great"],["gereating","generating"],["gerenate","generate"],["gerenated","generated"],["gerenates","generates"],["gerenating","generating"],["gerenation","generation"],["gerenations","generations"],["gerenic","generic"],["gerenics","generics"],["gererate","generate"],["gererated","generated"],["gerilla","guerrilla"],["gerneral","general"],["gernerally","generally"],["gerneraly","generally"],["gernerate","generate"],["gernerated","generated"],["gernerates","generates"],["gernerating","generating"],["gerneration","generation"],["gernerator","generator"],["gernerators","generators"],["gerneric","generic"],["gernerics","generics"],["gess","guess"],["get's","gets"],["get;s","gets"],["getfastproperyvalue","getfastpropertyvalue"],["getimezone","gettimezone"],["geting","getting"],["getlael","getlabel"],["getoe","ghetto"],["getoject","getobject"],["gettetx","gettext"],["gettter","getter"],["gettters","getters"],["getttext","gettext"],["getttime","gettime"],["getttimeofday","gettimeofday"],["gettting","getting"],["ggogled","Googled"],["Ghandi","Gandhi"],["ghostcript","ghostscript"],["ghostscritp","ghostscript"],["ghraphic","graphic"],["gien","given"],["gigibit","gigabit"],["gilotine","guillotine"],["gilty","guilty"],["ginee","guinea"],["gingam","gingham"],["gioen","given"],["gir","git"],["giser","geyser"],["gisers","geysers"],["git-buildpackge","git-buildpackage"],["git-buildpackges","git-buildpackages"],["gitar","guitar"],["gitars","guitars"],["gitatributes","gitattributes"],["giveing","giving"],["givveing","giving"],["givven","given"],["givving","giving"],["glamourous","glamorous"],["glight","flight"],["gloab","globe"],["gloabal","global"],["gloabl","global"],["gloassaries","glossaries"],["gloassary","glossary"],["globablly","globally"],["globaly","globally"],["globbal","global"],["globel","global"],["glorfied","glorified"],["glpyh","glyph"],["glpyhs","glyphs"],["glyh","glyph"],["glyhs","glyphs"],["glyped","glyphed"],["glyphes","glyphs"],["glyping","glyphing"],["glyserin","glycerin"],["gnawwed","gnawed"],["gneral","general"],["gnerally","generally"],["gnerals","generals"],["gnerate","generate"],["gnerated","generated"],["gnerates","generates"],["gnerating","generating"],["gneration","generation"],["gnerations","generations"],["gneric","generic"],["gnorung","ignoring"],["gobal","global"],["gocde","gcode"],["godess","goddess"],["godesses","goddesses"],["Godounov","Godunov"],["goemetries","geometries"],["goess","goes"],["gogether","together"],["goign","going"],["goin","going"],["goind","going"],["golbal","global"],["golbally","globally"],["golbaly","globally"],["gonig","going"],["gool","ghoul"],["gord","gourd"],["gormay","gourmet"],["gorry","gory"],["gorup","group"],["goruped","grouped"],["goruping","grouping"],["gorups","groups"],["gost","ghost"],["Gothenberg","Gothenburg"],["Gottleib","Gottlieb"],["goup","group"],["gouped","grouped"],["goups","groups"],["gouvener","governor"],["govement","government"],["govenment","government"],["govenor","governor"],["govenrment","government"],["goverance","governance"],["goverment","government"],["govermental","governmental"],["govermnment","government"],["governer","governor"],["governmnet","government"],["govorment","government"],["govormental","governmental"],["govornment","government"],["grabage","garbage"],["grabed","grabbed"],["grabing","grabbing"],["gracefull","graceful"],["gracefuly","gracefully"],["gradiants","gradients"],["gradualy","gradually"],["graet","great"],["grafics","graphics"],["grafitti","graffiti"],["grahic","graphic"],["grahical","graphical"],["grahics","graphics"],["grahpic","graphic"],["grahpical","graphical"],["grahpics","graphics"],["gramar","grammar"],["gramatically","grammatically"],["grammartical","grammatical"],["grammaticaly","grammatically"],["grammer","grammar"],["grammers","grammars"],["granchildren","grandchildren"],["granilarity","granularity"],["granuality","granularity"],["granualtiry","granularity"],["granulatiry","granularity"],["grapgics","graphics"],["graphcis","graphics"],["graphis","graphics"],["grapic","graphic"],["grapical","graphical"],["grapics","graphics"],["grat","great"],["gratefull","grateful"],["gratuitious","gratuitous"],["grbber","grabber"],["greatful","grateful"],["greatfully","gratefully"],["greather","greater"],["greif","grief"],["grephic","graphic"],["grestest","greatest"],["greysacles","greyscales"],["gridles","griddles"],["grigorian","Gregorian"],["grobal","global"],["grobally","globally"],["grometry","geometry"],["grooup","group"],["groouped","grouped"],["groouping","grouping"],["grooups","groups"],["gropu","group"],["groubpy","groupby"],["groupd","grouped"],["groupping","grouping"],["groupt","grouped"],["grranted","granted"],["gruop","group"],["gruopd","grouped"],["gruops","groups"],["grup","group"],["gruped","grouped"],["gruping","grouping"],["grups","groups"],["grwo","grow"],["guage","gauge"],["guarante","guarantee"],["guaranted","guaranteed"],["guaranteey","guaranty"],["guaranteing","guaranteeing"],["guarantes","guarantees"],["guarantie","guarantee"],["guarbage","garbage"],["guareded","guarded"],["guareente","guarantee"],["guareented","guaranteed"],["guareentee","guarantee"],["guareenteed","guaranteed"],["guareenteeing","guaranteeing"],["guareentees","guarantees"],["guareenteing","guaranteeing"],["guareentes","guarantees"],["guareenty","guaranty"],["guarente","guarantee"],["guarented","guaranteed"],["guarentee","guarantee"],["guarenteed","guaranteed"],["guarenteede","guarantee"],["guarenteeded","guaranteed"],["guarenteedeing","guaranteeing"],["guarenteedes","guarantees"],["guarenteedy","guaranty"],["guarenteeing","guaranteeing"],["guarenteer","guarantee"],["guarenteerd","guaranteed"],["guarenteering","guaranteeing"],["guarenteers","guarantees"],["guarentees","guarantees"],["guarenteing","guaranteeing"],["guarentes","guarantees"],["guarentie","guarantee"],["guarentied","guaranteed"],["guarentieing","guaranteeing"],["guarenties","guarantees"],["guarenty","guaranty"],["guarentyd","guaranteed"],["guarentying","guarantee"],["guarentyinging","guaranteeing"],["guarentys","guarantees"],["guarging","guarding"],["guarnante","guarantee"],["guarnanted","guaranteed"],["guarnantee","guarantee"],["guarnanteed","guaranteed"],["guarnanteeing","guaranteeing"],["guarnantees","guarantees"],["guarnanteing","guaranteeing"],["guarnantes","guarantees"],["guarnanty","guaranty"],["guarnate","guarantee"],["guarnated","guaranteed"],["guarnatee","guarantee"],["guarnateed","guaranteed"],["guarnateee","guarantee"],["guarnateeed","guaranteed"],["guarnateeeing","guaranteeing"],["guarnateees","guarantees"],["guarnateeing","guaranteeing"],["guarnatees","guarantees"],["guarnateing","guaranteeing"],["guarnates","guarantees"],["guarnatey","guaranty"],["guarnaty","guaranty"],["guarnete","guarantee"],["guarneted","guaranteed"],["guarnetee","guarantee"],["guarneteed","guaranteed"],["guarneteeing","guaranteeing"],["guarnetees","guarantees"],["guarneteing","guaranteeing"],["guarnetes","guarantees"],["guarnety","guaranty"],["guarnte","guarantee"],["guarnted","guaranteed"],["guarntee","guarantee"],["guarnteed","guaranteed"],["guarnteeing","guaranteeing"],["guarntees","guarantees"],["guarnteing","guaranteeing"],["guarntes","guarantees"],["guarnty","guaranty"],["guarrante","guarantee"],["guarranted","guaranteed"],["guarrantee","guarantee"],["guarranteed","guaranteed"],["guarranteeing","guaranteeing"],["guarrantees","guarantees"],["guarranteing","guaranteeing"],["guarrantes","guarantees"],["guarrantie","guarantee"],["guarrantied","guaranteed"],["guarrantieing","guaranteeing"],["guarranties","guarantees"],["guarranty","guaranty"],["guarrantyd","guaranteed"],["guarrantying","guaranteeing"],["guarrantys","guarantees"],["guarrente","guarantee"],["guarrented","guaranteed"],["guarrentee","guarantee"],["guarrenteed","guaranteed"],["guarrenteeing","guaranteeing"],["guarrentees","guarantees"],["guarrenteing","guaranteeing"],["guarrentes","guarantees"],["guarrenty","guaranty"],["guaruante","guarantee"],["guaruanted","guaranteed"],["guaruantee","guarantee"],["guaruanteed","guaranteed"],["guaruanteeing","guaranteeing"],["guaruantees","guarantees"],["guaruanteing","guaranteeing"],["guaruantes","guarantees"],["guaruanty","guaranty"],["guarunte","guarantee"],["guarunted","guaranteed"],["guaruntee","guarantee"],["guarunteed","guaranteed"],["guarunteeing","guaranteeing"],["guaruntees","guarantees"],["guarunteing","guaranteeing"],["guaruntes","guarantees"],["guarunty","guaranty"],["guas'","Gauss'"],["guas's","Gauss'"],["guas","Gauss"],["guass'","Gauss'"],["guass","Gauss"],["guassian","Gaussian"],["Guatamala","Guatemala"],["Guatamalan","Guatemalan"],["gud","good"],["guerrila","guerrilla"],["guerrilas","guerrillas"],["gueswork","guesswork"],["guideded","guided"],["guidence","guidance"],["guidline","guideline"],["guidlines","guidelines"],["Guilia","Giulia"],["Guilio","Giulio"],["Guiness","Guinness"],["Guiseppe","Giuseppe"],["gunanine","guanine"],["gurantee","guarantee"],["guranteed","guaranteed"],["guranteeing","guaranteeing"],["gurantees","guarantees"],["gurrantee","guarantee"],["guttaral","guttural"],["gutteral","guttural"],["gylph","glyph"],["gziniflate","gzinflate"],["gziped","gzipped"],["haa","has"],["haave","have"],["habaeus","habeas"],["habbit","habit"],["habeus","habeas"],["hability","ability"],["Habsbourg","Habsburg"],["hace","have"],["hachish","hackish"],["hadling","handling"],["hadnler","handler"],["haeder","header"],["haemorrage","haemorrhage"],["halarious","hilarious"],["hald","held"],["halfs","halves"],["halp","help"],["halpoints","halfpoints"],["hammmer","hammer"],["hampster","hamster"],["handel","handle"],["handeler","handler"],["handeles","handles"],["handeling","handling"],["handels","handles"],["hander","handler"],["handfull","handful"],["handhake","handshake"],["handker","handler"],["handleer","handler"],["handleing","handling"],["handlig","handling"],["handlling","handling"],["handsake","handshake"],["handshacke","handshake"],["handshackes","handshakes"],["handshacking","handshaking"],["handshage","handshake"],["handshages","handshakes"],["handshaging","handshaking"],["handshak","handshake"],["handshakng","handshaking"],["handshakre","handshake"],["handshakres","handshakes"],["handshakring","handshaking"],["handshaks","handshakes"],["handshale","handshake"],["handshales","handshakes"],["handshaling","handshaking"],["handshare","handshake"],["handshares","handshakes"],["handsharing","handshaking"],["handshk","handshake"],["handshke","handshake"],["handshkes","handshakes"],["handshking","handshaking"],["handshkng","handshaking"],["handshks","handshakes"],["handskake","handshake"],["handwirting","handwriting"],["hanel","handle"],["hangig","hanging"],["hanlde","handle"],["hanlded","handled"],["hanlder","handler"],["hanlders","handlers"],["hanldes","handles"],["hanlding","handling"],["hanldle","handle"],["hanle","handle"],["hanled","handled"],["hanles","handles"],["hanling","handling"],["hanshake","handshake"],["hanshakes","handshakes"],["hansome","handsome"],["hapen","happen"],["hapend","happened"],["hapends","happens"],["hapened","happened"],["hapening","happening"],["hapenn","happen"],["hapenned","happened"],["hapenning","happening"],["hapenns","happens"],["hapens","happens"],["happaned","happened"],["happended","happened"],["happenned","happened"],["happenning","happening"],["happennings","happenings"],["happenns","happens"],["happilly","happily"],["happne","happen"],["happpen","happen"],["happpened","happened"],["happpening","happening"],["happpenings","happenings"],["happpens","happens"],["harased","harassed"],["harases","harasses"],["harasment","harassment"],["harasments","harassments"],["harassement","harassment"],["harcoded","hardcoded"],["harcoding","hardcoding"],["hard-wirted","hard-wired"],["hardare","hardware"],["hardocde","hardcode"],["hardward","hardware"],["hardwdare","hardware"],["hardwirted","hardwired"],["harge","charge"],["harras","harass"],["harrased","harassed"],["harrases","harasses"],["harrasing","harassing"],["harrasment","harassment"],["harrasments","harassments"],["harrass","harass"],["harrassed","harassed"],["harrasses","harassed"],["harrassing","harassing"],["harrassment","harassment"],["harrassments","harassments"],["harth","hearth"],["harware","hardware"],["harwdare","hardware"],["has'nt","hasn't"],["hases","hashes"],["hashi","hash"],["hashreference","hash reference"],["hashs","hashes"],["hashses","hashes"],["hask","hash"],["hasn;t","hasn't"],["hasnt'","hasn't"],["hasnt","hasn't"],["hass","hash"],["hastable","hashtable"],["hastables","hashtables"],["Hatian","Haitian"],["hauty","haughty"],["have'nt","haven't"],["haveing","having"],["haven;t","haven't"],["havent'","haven't"],["havent't","haven't"],["havent","haven't"],["havew","have"],["haviest","heaviest"],["havn't","haven't"],["havnt","haven't"],["hax","hex"],["haynus","heinous"],["hazzle","hassle"],["hda","had"],["headder","header"],["headders","headers"],["headerr","header"],["headerrs","headers"],["headle","handle"],["headong","heading"],["headquarer","headquarter"],["headquater","headquarter"],["headquatered","headquartered"],["headquaters","headquarters"],["heaer","header"],["healthercare","healthcare"],["heathy","healthy"],["hefer","heifer"],["Heidelburg","Heidelberg"],["heigest","highest"],["heigher","higher"],["heighest","highest"],["heighit","height"],["heighteen","eighteen"],["heigt","height"],["heigth","height"],["heirachies","hierarchies"],["heirachy","hierarchy"],["heirarchic","hierarchic"],["heirarchical","hierarchical"],["heirarchically","hierarchically"],["heirarchies","hierarchies"],["heirarchy","hierarchy"],["heiroglyphics","hieroglyphics"],["helerps","helpers"],["hellow","hello"],["helment","helmet"],["heloer","helper"],["heloers","helpers"],["helpe","helper"],["helpfull","helpful"],["helpfuly","helpfully"],["helpped","helped"],["hemipshere","hemisphere"],["hemipsheres","hemispheres"],["hemishpere","hemisphere"],["hemishperes","hemispheres"],["hemmorhage","hemorrhage"],["hemorage","haemorrhage"],["henc","hence"],["henderence","hindrance"],["hendler","handler"],["hense","hence"],["hepler","helper"],["herarchy","hierarchy"],["herat","heart"],["heree","here"],["heridity","heredity"],["heroe","hero"],["heros","heroes"],["herselv","herself"],["hertiage","heritage"],["hertically","hectically"],["hertzs","hertz"],["hese","these"],["hesiate","hesitate"],["hesistant","hesitant"],["hesistate","hesitate"],["hesistated","hesitated"],["hesistates","hesitates"],["hesistating","hesitating"],["hesistation","hesitation"],["hesistations","hesitations"],["hestiate","hesitate"],["hetrogeneous","heterogeneous"],["heuristc","heuristic"],["heuristcs","heuristics"],["heursitics","heuristics"],["hevy","heavy"],["hexademical","hexadecimal"],["hexdecimal","hexadecimal"],["hexgaon","hexagon"],["hexgaonal","hexagonal"],["hexgaons","hexagons"],["hexidecimal","hexadecimal"],["hge","he"],["hiarchical","hierarchical"],["hiarchy","hierarchy"],["hiddden","hidden"],["hidded","hidden"],["hideen","hidden"],["hiden","hidden"],["hiearchies","hierarchies"],["hiearchy","hierarchy"],["hieght","height"],["hiena","hyena"],["hierachical","hierarchical"],["hierachies","hierarchies"],["hierachries","hierarchies"],["hierachry","hierarchy"],["hierachy","hierarchy"],["hierarachical","hierarchical"],["hierarachy","hierarchy"],["hierarchichal","hierarchical"],["hierarchichally","hierarchically"],["hierarchie","hierarchy"],["hierarcical","hierarchical"],["hierarcy","hierarchy"],["hierarhcical","hierarchical"],["hierarhcically","hierarchically"],["hierarhcies","hierarchies"],["hierarhcy","hierarchy"],["hierchy","hierarchy"],["hieroglph","hieroglyph"],["hieroglphs","hieroglyphs"],["hietus","hiatus"],["higeine","hygiene"],["higer","higher"],["higest","highest"],["high-affort","high-effort"],["highight","highlight"],["highighted","highlighted"],["highighter","highlighter"],["highighters","highlighters"],["highights","highlights"],["highjack","hijack"],["highligh","highlight"],["highlighed","highlighted"],["highligher","highlighter"],["highlighers","highlighters"],["highlighing","highlighting"],["highlighs","highlights"],["highlightin","highlighting"],["highlightning","highlighting"],["highligjt","highlight"],["highligjted","highlighted"],["highligjtes","highlights"],["highligjting","highlighting"],["highligjts","highlights"],["highligt","highlight"],["highligted","highlighted"],["highligth","highlight"],["highligting","highlighting"],["highligts","highlights"],["highter","higher"],["hightest","highest"],["hightlight","highlight"],["hightlighted","highlighted"],["hightlighting","highlighting"],["hightlights","highlights"],["hights","heights"],["higlight","highlight"],["higlighted","highlighted"],["higlighting","highlighting"],["higlights","highlights"],["higly","highly"],["higth","height"],["higway","highway"],["hijkack","hijack"],["hijkacked","hijacked"],["hijkacking","hijacking"],["hijkacks","hijacks"],["hilight","highlight"],["hilighted","highlighted"],["hilighting","highlighting"],["hilights","highlights"],["hillarious","hilarious"],["himselv","himself"],["hinderance","hindrance"],["hinderence","hindrance"],["hindrence","hindrance"],["hipopotamus","hippopotamus"],["hipotetical","hypothetical"],["hirachy","hierarchy"],["hirarchies","hierarchies"],["hirarchy","hierarchy"],["hirarcies","hierarchies"],["hirearchy","hierarchy"],["hirearcy","hierarchy"],["hismelf","himself"],["hisory","history"],["histgram","histogram"],["histocompatability","histocompatibility"],["historgram","histogram"],["historgrams","histograms"],["historicians","historians"],["historyan","historian"],["historyans","historians"],["historycal","historical"],["historycally","historically"],["historycaly","historically"],["histroian","historian"],["histroians","historians"],["histroic","historic"],["histroical","historical"],["histroically","historically"],["histroicaly","historically"],["histroies","histories"],["histroy","history"],["histry","history"],["hitogram","histogram"],["hitories","histories"],["hitory","history"],["hitsingles","hit singles"],["hiygeine","hygiene"],["hmdi","hdmi"],["hnalder","handler"],["hoeks","hoax"],["hoever","however"],["hokay","okay"],["holf","hold"],["holliday","holiday"],["hollowcost","holocaust"],["homapage","homepage"],["homegeneous","homogeneous"],["homestate","home state"],["homogeneize","homogenize"],["homogeneized","homogenized"],["homogenious","homogeneous"],["homogeniously","homogeneously"],["homogenity","homogeneity"],["homogenius","homogeneous"],["homogeniusly","homogeneously"],["homogenoues","homogeneous"],["homogenous","homogeneous"],["homogenously","homogeneously"],["homogenuous","homogeneous"],["honory","honorary"],["hoook","hook"],["hoooks","hooks"],["hootsba","chutzpah"],["hopefulle","hopefully"],["hopefullly","hopefully"],["hopefullt","hopefully"],["hopefullu","hopefully"],["hopefuly","hopefully"],["hopeing","hoping"],["hopful","hopeful"],["hopfully","hopefully"],["hopmepage","homepage"],["hopmepages","homepages"],["hoppefully","hopefully"],["hopyfully","hopefully"],["horicontal","horizontal"],["horicontally","horizontally"],["horinzontal","horizontal"],["horizntal","horizontal"],["horizonal","horizontal"],["horizonally","horizontally"],["horizontale","horizontal"],["horiztonal","horizontal"],["horiztonally","horizontally"],["horphan","orphan"],["horrable","horrible"],["horrifing","horrifying"],["horyzontally","horizontally"],["horziontal","horizontal"],["horziontally","horizontally"],["horzontal","horizontal"],["horzontally","horizontally"],["hosited","hoisted"],["hospitible","hospitable"],["hostanme","hostname"],["hostorical","historical"],["hostories","histories"],["hostory","history"],["hostspot","hotspot"],["hostspots","hotspots"],["hotizontal","horizontal"],["hotname","hostname"],["hounour","honour"],["houres","hours"],["housand","thousand"],["houskeeping","housekeeping"],["hovever","however"],["hovewer","however"],["howeever","however"],["howerver","however"],["howeverm","however"],["howewer","however"],["howver","however"],["hradware","hardware"],["hradwares","hardwares"],["hrlp","help"],["hrlped","helped"],["hrlper","helper"],["hrlpers","helpers"],["hrlping","helping"],["hrlps","helps"],["hrough","through"],["hsa","has"],["hsell","shell"],["hsi","his"],["hsitorians","historians"],["hsotname","hostname"],["hsould'nt","shouldn't"],["hsould","should"],["hsouldn't","shouldn't"],["hstory","history"],["htacccess","htaccess"],["hte","the"],["htey","they"],["htikn","think"],["hting","thing"],["htink","think"],["htis","this"],["htmp","html"],["htting","hitting"],["hueristic","heuristic"],["humber","number"],["huminoid","humanoid"],["humoural","humoral"],["humurous","humorous"],["hunderd","hundred"],["hundreths","hundredths"],["hundrets","hundreds"],["hunrgy","hungry"],["huricane","hurricane"],["huristic","heuristic"],["husban","husband"],["hvae","have"],["hvaing","having"],["hve","have"],["hwihc","which"],["hwile","while"],["hwole","whole"],["hybernate","hibernate"],["hydogen","hydrogen"],["hydrolic","hydraulic"],["hydrolics","hydraulics"],["hydropile","hydrophile"],["hydropilic","hydrophilic"],["hydropobe","hydrophobe"],["hydropobic","hydrophobic"],["hyerarchy","hierarchy"],["hyerlink","hyperlink"],["hygeine","hygiene"],["hygene","hygiene"],["hygenic","hygienic"],["hygine","hygiene"],["hyjack","hijack"],["hyjacking","hijacking"],["hypen","hyphen"],["hypenate","hyphenate"],["hypenated","hyphenated"],["hypenates","hyphenates"],["hypenating","hyphenating"],["hypenation","hyphenation"],["hypens","hyphens"],["hyperboly","hyperbole"],["Hyperldger","Hyperledger"],["hypervior","hypervisor"],["hypocracy","hypocrisy"],["hypocrasy","hypocrisy"],["hypocricy","hypocrisy"],["hypocrit","hypocrite"],["hypocrits","hypocrites"],["hyposeses","hypotheses"],["hyposesis","hypothesis"],["hypoteses","hypotheses"],["hypotesis","hypothesis"],["hypotethically","hypothetically"],["hypothenuse","hypotenuse"],["hypothenuses","hypotenuses"],["hypter","hyper"],["hyptothetical","hypothetical"],["hyptothetically","hypothetically"],["hypvervisor","hypervisor"],["hypvervisors","hypervisors"],["hypvisor","hypervisor"],["hypvisors","hypervisors"],["I'sd","I'd"],["i;ll","I'll"],["iamge","image"],["ibject","object"],["ibjects","objects"],["ibrary","library"],["icesickle","icicle"],["iclude","include"],["icluded","included"],["icludes","includes"],["icluding","including"],["iconclastic","iconoclastic"],["iconifie","iconify"],["icrease","increase"],["icreased","increased"],["icreases","increases"],["icreasing","increasing"],["icrement","increment"],["icrementally","incrementally"],["icremented","incremented"],["icrementing","incrementing"],["icrements","increments"],["idae","idea"],["idaeidae","idea"],["idaes","ideas"],["idealogies","ideologies"],["idealogy","ideology"],["idefinite","indefinite"],["idel","idle"],["idelogy","ideology"],["idemopotent","idempotent"],["idendified","identified"],["idendifier","identifier"],["idendifiers","identifiers"],["idenfied","identified"],["idenfifier","identifier"],["idenfifiers","identifiers"],["idenfitifer","identifier"],["idenfitifers","identifiers"],["idenfitify","identify"],["idenitfy","identify"],["idenitify","identify"],["identation","indentation"],["identcial","identical"],["identfied","identified"],["identfier","identifier"],["identfiers","identifiers"],["identiable","identifiable"],["idential","identical"],["identic","identical"],["identicial","identical"],["identidier","identifier"],["identies","identities"],["identifaction","identification"],["identifcation","identification"],["identifeir","identifier"],["identifeirs","identifiers"],["identifer","identifier"],["identifers","identifiers"],["identificable","identifiable"],["identifictaion","identification"],["identifieer","identifier"],["identifiler","identifier"],["identifilers","identifiers"],["identifing","identifying"],["identifiy","identify"],["identifyable","identifiable"],["identifyed","identified"],["identiviert","identifiers"],["identtation","indentation"],["identties","identities"],["identtifier","identifier"],["identty","identity"],["ideosyncracies","ideosyncrasies"],["ideosyncratic","idiosyncratic"],["idetifier","identifier"],["idetifiers","identifiers"],["idetifies","identifies"],["idicate","indicate"],["idicated","indicated"],["idicates","indicates"],["idicating","indicating"],["idices","indices"],["idiosyncracies","idiosyncrasies"],["idiosyncracy","idiosyncrasy"],["idividual","individual"],["idividually","individually"],["idividuals","individuals"],["idons","icons"],["iechart","piechart"],["ifself","itself"],["ifset","if set"],["ignest","ingest"],["ignested","ingested"],["ignesting","ingesting"],["ignests","ingests"],["ignnore","ignore"],["ignoded","ignored"],["ignonre","ignore"],["ignora","ignore"],["ignord","ignored"],["ignoreing","ignoring"],["ignorence","ignorance"],["ignorgable","ignorable"],["ignorgd","ignored"],["ignorge","ignore"],["ignorged","ignored"],["ignorgg","ignoring"],["ignorgig","ignoring"],["ignorging","ignoring"],["ignorgs","ignores"],["ignormable","ignorable"],["ignormd","ignored"],["ignorme","ignore"],["ignormed","ignored"],["ignormg","ignoring"],["ignormig","ignoring"],["ignorming","ignoring"],["ignorms","ignores"],["ignornable","ignorable"],["ignornd","ignored"],["ignorne","ignore"],["ignorned","ignored"],["ignorng","ignoring"],["ignornig","ignoring"],["ignorning","ignoring"],["ignorns","ignores"],["ignorrable","ignorable"],["ignorrd","ignored"],["ignorre","ignore"],["ignorred","ignored"],["ignorrg","ignoring"],["ignorrig","ignoring"],["ignorring","ignoring"],["ignorrs","ignores"],["ignors","ignores"],["ignortable","ignorable"],["ignortd","ignored"],["ignorte","ignore"],["ignorted","ignored"],["ignortg","ignoring"],["ignortig","ignoring"],["ignorting","ignoring"],["ignorts","ignores"],["ignory","ignore"],["ignroed","ignored"],["ignroing","ignoring"],["igoned","ignored"],["igonorando","ignorando"],["igonore","ignore"],["igore","ignore"],["igored","ignored"],["igores","ignores"],["igoring","ignoring"],["igrnore","ignore"],["Ihaca","Ithaca"],["ihs","his"],["iif","if"],["iimmune","immune"],["iinclude","include"],["iinterval","interval"],["iiterator","iterator"],["iland","island"],["ileagle","illegal"],["ilegal","illegal"],["ilegle","illegal"],["iligal","illegal"],["illegimacy","illegitimacy"],["illegitmate","illegitimate"],["illess","illness"],["illgal","illegal"],["illiegal","illegal"],["illigal","illegal"],["illigitament","illegitimate"],["illistrate","illustrate"],["illustrasion","illustration"],["illution","illusion"],["ilness","illness"],["ilogical","illogical"],["iluminate","illuminate"],["iluminated","illuminated"],["iluminates","illuminates"],["ilumination","illumination"],["iluminations","illuminations"],["ilustrate","illustrate"],["ilustrated","illustrated"],["ilustration","illustration"],["imagenary","imaginary"],["imaghe","image"],["imagin","imagine"],["imapct","impact"],["imapcted","impacted"],["imapcting","impacting"],["imapcts","impacts"],["imapge","image"],["imbaress","embarrass"],["imbed","embed"],["imbedded","embedded"],["imbedding","embedding"],["imblance","imbalance"],["imbrase","embrace"],["imcoming","incoming"],["imcomming","incoming"],["imcompatibility","incompatibility"],["imcompatible","incompatible"],["imcomplete","incomplete"],["imedatly","immediately"],["imedialy","immediately"],["imediate","immediate"],["imediately","immediately"],["imediatly","immediately"],["imense","immense"],["imfamus","infamous"],["imgage","image"],["imidiately","immediately"],["imilar","similar"],["imlement","implement"],["imlementation","implementation"],["imlemented","implemented"],["imlementing","implementing"],["imlements","implements"],["imlicit","implicit"],["imlicitly","implicitly"],["imliment","implement"],["imlimentation","implementation"],["imlimented","implemented"],["imlimenting","implementing"],["imliments","implements"],["immadiate","immediate"],["immadiately","immediately"],["immadiatly","immediately"],["immeadiate","immediate"],["immeadiately","immediately"],["immedaite","immediate"],["immedate","immediate"],["immedately","immediately"],["immedeate","immediate"],["immedeately","immediately"],["immedially","immediately"],["immedialty","immediately"],["immediantely","immediately"],["immediatelly","immediately"],["immediatelty","immediately"],["immediatley","immediately"],["immediatlly","immediately"],["immediatly","immediately"],["immediatlye","immediately"],["immeditaly","immediately"],["immeditately","immediately"],["immeidate","immediate"],["immeidately","immediately"],["immenantly","eminently"],["immidately","immediately"],["immidatly","immediately"],["immidiate","immediate"],["immidiatelly","immediately"],["immidiately","immediately"],["immidiatly","immediately"],["immitate","imitate"],["immitated","imitated"],["immitating","imitating"],["immitator","imitator"],["immmediate","immediate"],["immmediately","immediately"],["immsersive","immersive"],["immsersively","immersively"],["immuniy","immunity"],["immunosupressant","immunosuppressant"],["immutible","immutable"],["imolicit","implicit"],["imolicitly","implicitly"],["imort","import"],["imortable","importable"],["imorted","imported"],["imortes","imports"],["imorting","importing"],["imorts","imports"],["imovable","immovable"],["impcat","impact"],["impcated","impacted"],["impcating","impacting"],["impcats","impacts"],["impecabbly","impeccably"],["impedence","impedance"],["impeed","impede"],["impelement","implement"],["impelementation","implementation"],["impelemented","implemented"],["impelementing","implementing"],["impelements","implements"],["impelentation","implementation"],["impelment","implement"],["impelmentation","implementation"],["impelmentations","implementations"],["impement","implement"],["impementaion","implementation"],["impementaions","implementations"],["impementated","implemented"],["impementation","implementation"],["impementations","implementations"],["impemented","implemented"],["impementing","implementing"],["impementling","implementing"],["impementor","implementer"],["impements","implements"],["imperiaal","imperial"],["imperically","empirically"],["imperitive","imperative"],["impermable","impermeable"],["impiled","implied"],["implace","inplace"],["implament","implement"],["implamentation","implementation"],["implamented","implemented"],["implamenting","implementing"],["implaments","implements"],["implcit","implicit"],["implcitly","implicitly"],["implct","implicit"],["implemantation","implementation"],["implemataion","implementation"],["implemataions","implementations"],["implemememnt","implement"],["implemememntation","implementation"],["implemement","implement"],["implemementation","implementation"],["implemementations","implementations"],["implememented","implemented"],["implemementing","implementing"],["implemements","implements"],["implememetation","implementation"],["implememntation","implementation"],["implememt","implement"],["implememtation","implementation"],["implememtations","implementations"],["implememted","implemented"],["implememting","implementing"],["implememts","implements"],["implemen","implement"],["implemenatation","implementation"],["implemenation","implementation"],["implemenationa","implementation"],["implemenationd","implementation"],["implemenations","implementations"],["implemencted","implemented"],["implemend","implement"],["implemends","implements"],["implemened","implemented"],["implemenet","implement"],["implemenetaion","implementation"],["implemenetaions","implementations"],["implemenetation","implementation"],["implemenetations","implementations"],["implemenetd","implemented"],["implemeneted","implemented"],["implemeneter","implementer"],["implemeneting","implementing"],["implemenetions","implementations"],["implemenets","implements"],["implemenrt","implement"],["implementaed","implemented"],["implementaion","implementation"],["implementaions","implementations"],["implementaiton","implementation"],["implementaitons","implementations"],["implementantions","implementations"],["implementastion","implementation"],["implementataion","implementation"],["implementatation","implementation"],["implementated","implemented"],["implementates","implements"],["implementating","implementing"],["implementatins","implementations"],["implementation-spacific","implementation-specific"],["implementatition","implementation"],["implementatoin","implementation"],["implementatoins","implementations"],["implementatoion","implementation"],["implementaton","implementation"],["implementator","implementer"],["implementators","implementers"],["implementattion","implementation"],["implementd","implemented"],["implementes","implements"],["implementet","implemented"],["implemention","implementation"],["implementtaion","implementation"],["implemet","implement"],["implemetation","implementation"],["implemetations","implementations"],["implemeted","implemented"],["implemeting","implementing"],["implemetnation","implementation"],["implemets","implements"],["implemnt","implement"],["implemntation","implementation"],["implemntations","implementations"],["implemt","implement"],["implemtation","implementation"],["implemtations","implementations"],["implemted","implemented"],["implemtentation","implementation"],["implemtentations","implementations"],["implemting","implementing"],["implemts","implements"],["impleneted","implemented"],["implenment","implement"],["implenmentation","implementation"],["implent","implement"],["implentation","implementation"],["implentations","implementations"],["implented","implemented"],["implenting","implementing"],["implentors","implementers"],["implents","implements"],["implet","implement"],["impletation","implementation"],["impletations","implementations"],["impleted","implemented"],["impleter","implementer"],["impleting","implementing"],["impletment","implement"],["implets","implements"],["implicitely","implicitly"],["implicitley","implicitly"],["implict","implicit"],["implictly","implicitly"],["implimcit","implicit"],["implimcitly","implicitly"],["impliment","implement"],["implimentaion","implementation"],["implimentaions","implementations"],["implimentation","implementation"],["implimentation-spacific","implementation-specific"],["implimentations","implementations"],["implimented","implemented"],["implimenting","implementing"],["implimention","implementation"],["implimentions","implementations"],["implimentor","implementor"],["impliments","implements"],["implmenet","implement"],["implmenetaion","implementation"],["implmenetaions","implementations"],["implmenetation","implementation"],["implmenetations","implementations"],["implmenetd","implemented"],["implmeneted","implemented"],["implmeneter","implementer"],["implmeneting","implementing"],["implmenets","implements"],["implment","implement"],["implmentation","implementation"],["implmentations","implementations"],["implmented","implemented"],["implmenting","implementing"],["implments","implements"],["imploys","employs"],["imporing","importing"],["imporot","import"],["imporoted","imported"],["imporoting","importing"],["imporots","imports"],["imporove","improve"],["imporoved","improved"],["imporovement","improvement"],["imporovements","improvements"],["imporoves","improves"],["imporoving","improving"],["imporsts","imports"],["importamt","important"],["importat","important"],["importd","imported"],["importent","important"],["importnt","important"],["imporve","improve"],["imporved","improved"],["imporvement","improvement"],["imporvements","improvements"],["imporves","improves"],["imporving","improving"],["imporvment","improvement"],["imposible","impossible"],["impossiblble","impossible"],["impot","import"],["impove","improve"],["impoved","improved"],["impovement","improvement"],["impovements","improvements"],["impoves","improves"],["impoving","improving"],["impplement","implement"],["impplementating","implementing"],["impplementation","implementation"],["impplemented","implemented"],["impremented","implemented"],["impres","impress"],["impresive","impressive"],["impressario","impresario"],["imprioned","imprisoned"],["imprisonned","imprisoned"],["improbe","improve"],["improbement","improvement"],["improbements","improvements"],["improbes","improves"],["improbing","improving"],["improbment","improvement"],["improbments","improvements"],["improof","improve"],["improofement","improvement"],["improofing","improving"],["improofment","improvement"],["improofs","improves"],["improove","improve"],["improoved","improved"],["improovement","improvement"],["improovements","improvements"],["improoves","improves"],["improoving","improving"],["improovment","improvement"],["improovments","improvements"],["impropely","improperly"],["improssible","impossible"],["improt","import"],["improtance","importance"],["improtant","important"],["improtantly","importantly"],["improtation","importation"],["improtations","importations"],["improted","imported"],["improter","importer"],["improters","importers"],["improting","importing"],["improts","imports"],["improvemen","improvement"],["improvemenet","improvement"],["improvemenets","improvements"],["improvemens","improvements"],["improvision","improvisation"],["improvmenet","improvement"],["improvmenets","improvements"],["improvment","improvement"],["improvments","improvements"],["imput","input"],["imrovement","improvement"],["in-memeory","in-memory"],["inablility","inability"],["inacccessible","inaccessible"],["inaccesible","inaccessible"],["inaccessable","inaccessible"],["inaccuraccies","inaccuracies"],["inaccuraccy","inaccuracy"],["inacessible","inaccessible"],["inacurate","inaccurate"],["inacurracies","inaccuracies"],["inacurrate","inaccurate"],["inadiquate","inadequate"],["inadquate","inadequate"],["inadvertant","inadvertent"],["inadvertantly","inadvertently"],["inadvertedly","inadvertently"],["inagurated","inaugurated"],["inaguration","inauguration"],["inaktively","inactively"],["inalid","invalid"],["inappropiate","inappropriate"],["inappropreate","inappropriate"],["inapropriate","inappropriate"],["inapropriately","inappropriately"],["inate","innate"],["inaugures","inaugurates"],["inavlid","invalid"],["inbalance","imbalance"],["inbalanced","imbalanced"],["inbed","embed"],["inbedded","embedded"],["inbility","inability"],["incalid","invalid"],["incarcirated","incarcerated"],["incase","in case"],["incatation","incantation"],["incatations","incantations"],["incative","inactive"],["incement","increment"],["incemental","incremental"],["incementally","incrementally"],["incemented","incremented"],["incements","increments"],["incerase","increase"],["incerased","increased"],["incerasing","increasing"],["incidential","incidental"],["incidentially","incidentally"],["incidently","incidentally"],["inclding","including"],["incldue","include"],["incldued","included"],["incldues","includes"],["inclinaison","inclination"],["inclode","include"],["inclreased","increased"],["includ","include"],["includea","include"],["includee","include"],["includeing","including"],["includied","included"],["includig","including"],["includign","including"],["includng","including"],["inclue","include"],["inclued","included"],["inclues","includes"],["incluging","including"],["incluide","include"],["incluing","including"],["inclused","included"],["inclusing","including"],["inclusinve","inclusive"],["inclution","inclusion"],["inclutions","inclusions"],["incmrement","increment"],["incoherance","incoherence"],["incoherancy","incoherency"],["incoherant","incoherent"],["incoherantly","incoherently"],["incomapatibility","incompatibility"],["incomapatible","incompatible"],["incomaptibele","incompatible"],["incomaptibelities","incompatibilities"],["incomaptibelity","incompatibility"],["incomaptible","incompatible"],["incombatibilities","incompatibilities"],["incombatibility","incompatibility"],["incomfortable","uncomfortable"],["incomming","incoming"],["incommplete","incomplete"],["incompatabable","incompatible"],["incompatabiity","incompatibility"],["incompatabile","incompatible"],["incompatabilities","incompatibilities"],["incompatability","incompatibility"],["incompatabillity","incompatibility"],["incompatabilty","incompatibility"],["incompatabily","incompatibility"],["incompatable","incompatible"],["incompatablility","incompatibility"],["incompatablities","incompatibilities"],["incompatablitiy","incompatibility"],["incompatablity","incompatibility"],["incompatably","incompatibly"],["incompataibility","incompatibility"],["incompataible","incompatible"],["incompataility","incompatibility"],["incompatatbility","incompatibility"],["incompatatble","incompatible"],["incompatatible","incompatible"],["incompatbility","incompatibility"],["incompatble","incompatible"],["incompatiability","incompatibility"],["incompatiable","incompatible"],["incompatibile","incompatible"],["incompatibilies","incompatibilities"],["incompatiblities","incompatibilities"],["incompatiblity","incompatibility"],["incompetance","incompetence"],["incompetant","incompetent"],["incompete","incomplete"],["incomping","incoming"],["incompleate","incomplete"],["incompleete","incomplete"],["incompletd","incomplete"],["incomptable","incompatible"],["incomptetent","incompetent"],["incomptible","incompatible"],["inconcistencies","inconsistencies"],["inconcistency","inconsistency"],["inconcistent","inconsistent"],["inconditional","unconditional"],["inconditionally","unconditionally"],["inconfortable","uncomfortable"],["inconisistent","inconsistent"],["inconistencies","inconsistencies"],["inconlusive","inconclusive"],["inconsisent","inconsistent"],["inconsisently","inconsistently"],["inconsisntency","inconsistency"],["inconsistance","inconsistency"],["inconsistancies","inconsistencies"],["inconsistancy","inconsistency"],["inconsistant","inconsistent"],["inconsisten","inconsistent"],["inconsistend","inconsistent"],["inconsistendly","inconsistently"],["inconsistendt","inconsistent"],["inconsistendtly","inconsistently"],["inconsistenly","inconsistently"],["inconsistented","inconsistent"],["inconsitant","inconsistent"],["inconsitency","inconsistency"],["inconsitent","inconsistent"],["inconveniant","inconvenient"],["inconveniantly","inconveniently"],["inconvertable","inconvertible"],["inconvienience","inconvenience"],["inconvienient","inconvenient"],["inconvineance","inconvenience"],["inconvineances","inconveniences"],["inconvinence","inconvenience"],["inconvinences","inconveniences"],["inconviniance","inconvenience"],["inconviniances","inconveniences"],["inconvinience","inconvenience"],["inconviniences","inconveniences"],["inconviniency","inconvenience"],["inconviniencys","inconveniences"],["incooperates","incorporates"],["incoperate","incorporate"],["incoperated","incorporated"],["incoperates","incorporates"],["incoperating","incorporating"],["incoporate","incorporate"],["incoporated","incorporated"],["incoporates","incorporates"],["incoporating","incorporating"],["incoprorate","incorporate"],["incoprorated","incorporated"],["incoprorates","incorporates"],["incoprorating","incorporating"],["incorect","incorrect"],["incorectly","incorrectly"],["incoropate","incorporate"],["incoropates","incorporates"],["incoroporated","incorporated"],["incorparates","incorporates"],["incorperate","incorporate"],["incorperated","incorporated"],["incorperates","incorporates"],["incorperating","incorporating"],["incorperation","incorporation"],["incorportaed","incorporated"],["incorported","incorporated"],["incorprates","incorporates"],["incorreclty","incorrectly"],["incorrecly","incorrectly"],["incorrecty","incorrectly"],["incorreect","incorrect"],["incorreectly","incorrectly"],["incorrent","incorrect"],["incorret","incorrect"],["incorrrect","incorrect"],["incorrrectly","incorrectly"],["incorruptable","incorruptible"],["incosistencies","inconsistencies"],["incosistency","inconsistency"],["incosistent","inconsistent"],["incosistente","inconsistent"],["incramentally","incrementally"],["increadible","incredible"],["increading","increasing"],["increaing","increasing"],["increament","increment"],["increas","increase"],["incredable","incredible"],["incremantal","incremental"],["incremeantal","incremental"],["incremenet","increment"],["incremenetd","incremented"],["incremeneted","incremented"],["incrementaly","incrementally"],["incremet","increment"],["incremetal","incremental"],["incremeted","incremented"],["incremnet","increment"],["increse","increase"],["incresed","increased"],["increses","increases"],["incresing","increasing"],["incrfemental","incremental"],["incrmenet","increment"],["incrmenetd","incremented"],["incrmeneted","incremented"],["incrment","increment"],["incrmental","incremental"],["incrmentally","incrementally"],["incrmented","incremented"],["incrmenting","incrementing"],["incrments","increments"],["inctance","instance"],["inctroduce","introduce"],["inctroduced","introduced"],["incude","include"],["incuded","included"],["incudes","includes"],["incuding","including"],["inculde","include"],["inculded","included"],["inculdes","includes"],["inculding","including"],["incunabla","incunabula"],["incure","incur"],["incurruptable","incorruptible"],["incurruptible","incorruptible"],["incvalid","invalid"],["indcates","indicates"],["indciate","indicate"],["inddex","index"],["inddividual","individual"],["inddividually","individually"],["inddividuals","individuals"],["indecate","indicate"],["indeces","indices"],["indecies","indices"],["indefinate","indefinite"],["indefinately","indefinitely"],["indefineable","undefinable"],["indefinetly","indefinitely"],["indefinitiley","indefinitely"],["indefinitively","indefinitely"],["indefinitly","indefinitely"],["indefintly","indefinitely"],["indempotent","idempotent"],["indendation","indentation"],["indentaction","indentation"],["indentaion","indentation"],["indentended","indented"],["indentical","identical"],["indentically","identically"],["indentifer","identifier"],["indentification","identification"],["indentified","identified"],["indentifier","identifier"],["indentifies","identifies"],["indentifing","identifying"],["indentify","identify"],["indentifying","identifying"],["indentit","identity"],["indentity","identity"],["indentleveal","indentlevel"],["indenx","index"],["indepandance","independence"],["indepdence","independence"],["indepdencente","independence"],["indepdendance","independence"],["indepdendant","independent"],["indepdendantly","independently"],["indepdendence","independence"],["indepdendency","independency"],["indepdendent","independent"],["indepdendently","independently"],["indepdendet","independent"],["indepdendetly","independently"],["indepdenence","independence"],["indepdenent","independent"],["indepdenently","independently"],["indepdent","independent"],["indepdented","independent"],["indepdentedly","independently"],["indepdently","independently"],["indepedantly","independently"],["indepedence","independence"],["indepedent","independent"],["indepedently","independently"],["independ","independent"],["independance","independence"],["independant","independent"],["independantly","independently"],["independece","independence"],["independed","independent"],["independedly","independently"],["independend","independent"],["independendet","independent"],["independet","independent"],["independly","independently"],["independnent","independent"],["independnet","independent"],["independnt","independent"],["independntly","independently"],["independt","independent"],["independtly","independently"],["indepenedent","independent"],["indepenendence","independence"],["indepenent","independent"],["indepenently","independently"],["indepent","independent"],["indepentent","independent"],["indepently","independently"],["inderect","indirect"],["inderts","inserts"],["indes","index"],["indespensable","indispensable"],["indespensible","indispensable"],["indexig","indexing"],["indiactor","indicator"],["indiate","indicate"],["indiated","indicated"],["indiates","indicates"],["indiating","indicating"],["indicaite","indicate"],["indicat","indicate"],["indicees","indices"],["indiciate","indicate"],["indiciated","indicated"],["indiciates","indicates"],["indiciating","indicating"],["indicies","indices"],["indicte","indicate"],["indictement","indictment"],["indictes","indicates"],["indictor","indicator"],["indigineous","indigenous"],["indipendence","independence"],["indipendent","independent"],["indipendently","independently"],["indiquate","indicate"],["indiquates","indicates"],["indirecty","indirectly"],["indispensible","indispensable"],["indisputible","indisputable"],["indisputibly","indisputably"],["indistiguishable","indistinguishable"],["indivdual","individual"],["indivdually","individually"],["indivdualy","individually"],["individal","individual"],["individally","individually"],["individals","individuals"],["individaul","individual"],["individaully","individually"],["individauls","individuals"],["individauly","individually"],["individial","individual"],["individualy","individually"],["individuel","individual"],["individuelly","individually"],["individuely","individually"],["indivisual","individual"],["indivisuality","individuality"],["indivisually","individually"],["indivisuals","individuals"],["indiviual","individual"],["indiviually","individually"],["indiviuals","individuals"],["indivual","individual"],["indivudual","individual"],["indivudually","individually"],["indizies","indices"],["indpendent","independent"],["indpendently","independently"],["indrect","indirect"],["indulgue","indulge"],["indure","endure"],["indutrial","industrial"],["indvidual","individual"],["indviduals","individuals"],["indxes","indexes"],["inearisation","linearisation"],["ineffciency","inefficiency"],["ineffcient","inefficient"],["ineffciently","inefficiently"],["inefficency","inefficiency"],["inefficent","inefficient"],["inefficently","inefficiently"],["inefficenty","inefficiently"],["inefficienty","inefficiently"],["ineffiecent","inefficient"],["ineffient","inefficient"],["ineffiently","inefficiently"],["ineficient","inefficient"],["inegrate","integrate"],["inegrated","integrated"],["ineqality","inequality"],["inequalitiy","inequality"],["inerface","interface"],["inerit","inherit"],["ineritance","inheritance"],["inerited","inherited"],["ineriting","inheriting"],["ineritor","inheritor"],["ineritors","inheritors"],["inerits","inherits"],["inernal","internal"],["inerrupt","interrupt"],["inershia","inertia"],["inershial","inertial"],["inersia","inertia"],["inersial","inertial"],["inertion","insertion"],["ines","lines"],["inestart","linestart"],["inetrrupts","interrupts"],["inevatible","inevitable"],["inevitible","inevitable"],["inevititably","inevitably"],["inexistant","inexistent"],["inexperiance","inexperience"],["inexperianced","inexperienced"],["inexpierence","inexperience"],["inexpierenced","inexperienced"],["inexpirience","inexperience"],["inexpirienced","inexperienced"],["infact","in fact"],["infalability","infallibility"],["infallable","infallible"],["infalte","inflate"],["infalted","inflated"],["infaltes","inflates"],["infalting","inflating"],["infectuous","infectious"],["infered","inferred"],["inferface","interface"],["infering","inferring"],["inferrable","inferable"],["inferrence","inference"],["infex","index"],["infilitrate","infiltrate"],["infilitrated","infiltrated"],["infilitration","infiltration"],["infinate","infinite"],["infinately","infinitely"],["infininte","infinite"],["infinit","infinite"],["infinitie","infinity"],["infinitly","infinitely"],["infinte","infinite"],["infintesimal","infinitesimal"],["infinty","infinity"],["infite","infinite"],["inflamation","inflammation"],["inflatoin","inflation"],["inflexable","inflexible"],["inflight","in-flight"],["influece","influence"],["influeced","influenced"],["influeces","influences"],["influecing","influencing"],["influencial","influential"],["influencin","influencing"],["influented","influenced"],["infoemation","information"],["infomation","information"],["infomational","informational"],["infomed","informed"],["infomer","informer"],["infomration","information"],["infoms","informs"],["infor","info"],["inforamtion","information"],["inforation","information"],["inforational","informational"],["inforce","enforce"],["inforced","enforced"],["informacion","information"],["informaion","information"],["informaiton","information"],["informatation","information"],["informatations","information"],["informatikon","information"],["informatins","information"],["informatio","information"],["informatiom","information"],["informations","information"],["informatoin","information"],["informatoins","information"],["informaton","information"],["informfation","information"],["informtion","information"],["inforrmation","information"],["infrantryman","infantryman"],["infrasctructure","infrastructure"],["infrastrcuture","infrastructure"],["infrastruture","infrastructure"],["infrastucture","infrastructure"],["infrastuctures","infrastructures"],["infreqency","infrequency"],["infreqentcy","infrequency"],["infreqeuncy","infrequency"],["infreqeuntcy","infrequency"],["infrequancies","infrequencies"],["infrequancy","infrequency"],["infrequantcies","infrequencies"],["infrequantcy","infrequency"],["infrequentcies","infrequencies"],["infrigement","infringement"],["infromation","information"],["infromatoin","information"],["infrormation","information"],["infrustructure","infrastructure"],["ingegral","integral"],["ingenius","ingenious"],["ingnore","ignore"],["ingnored","ignored"],["ingnores","ignores"],["ingnoring","ignoring"],["ingore","ignore"],["ingored","ignored"],["ingores","ignores"],["ingoring","ignoring"],["ingration","integration"],["ingreediants","ingredients"],["inh","in"],["inhabitans","inhabitants"],["inherantly","inherently"],["inheratance","inheritance"],["inheret","inherit"],["inherets","inherits"],["inheritablility","inheritability"],["inheritence","inheritance"],["inherith","inherit"],["inherithed","inherited"],["inherithing","inheriting"],["inheriths","inherits"],["inheritted","inherited"],["inherrit","inherit"],["inherritance","inheritance"],["inherrited","inherited"],["inherriting","inheriting"],["inherrits","inherits"],["inhert","inherit"],["inhertance","inheritance"],["inhertances","inheritances"],["inherted","inherited"],["inhertiance","inheritance"],["inherting","inheriting"],["inherts","inherits"],["inhomogenous","inhomogeneous"],["inialized","initialized"],["iniate","initiate"],["inidicate","indicate"],["inidicated","indicated"],["inidicates","indicates"],["inidicating","indicating"],["inidication","indication"],["inidications","indications"],["inidividual","individual"],["inidvidual","individual"],["inifinite","infinite"],["inifinity","infinity"],["inifinte","infinite"],["inifite","infinite"],["iniitial","initial"],["iniitialization","initialization"],["iniitializations","initializations"],["iniitialize","initialize"],["iniitialized","initialized"],["iniitializes","initializes"],["iniitializing","initializing"],["inintialisation","initialisation"],["inintialization","initialization"],["inisialise","initialise"],["inisialised","initialised"],["inisialises","initialises"],["iniside","inside"],["inisides","insides"],["initail","initial"],["initailisation","initialisation"],["initailise","initialise"],["initailised","initialised"],["initailiser","initialiser"],["initailisers","initialisers"],["initailises","initialises"],["initailising","initialising"],["initailization","initialization"],["initailize","initialize"],["initailized","initialized"],["initailizer","initializer"],["initailizers","initializers"],["initailizes","initializes"],["initailizing","initializing"],["initailly","initially"],["initails","initials"],["initailsation","initialisation"],["initailse","initialise"],["initailsed","initialised"],["initailsiation","initialisation"],["initaily","initially"],["initailzation","initialization"],["initailze","initialize"],["initailzed","initialized"],["initailziation","initialization"],["inital","initial"],["initalialisation","initialisation"],["initalialization","initialization"],["initalisation","initialisation"],["initalise","initialise"],["initalised","initialised"],["initaliser","initialiser"],["initalises","initialises"],["initalising","initialising"],["initalization","initialization"],["initalize","initialize"],["initalized","initialized"],["initalizer","initializer"],["initalizes","initializes"],["initalizing","initializing"],["initally","initially"],["initals","initials"],["initiailize","initialize"],["initiailized","initialized"],["initiailizes","initializes"],["initiailizing","initializing"],["initiaitive","initiative"],["initiaitives","initiatives"],["initialialise","initialise"],["initialialize","initialize"],["initialiasation","initialisation"],["initialiase","initialise"],["initialiased","initialised"],["initialiation","initialization"],["initialiazation","initialization"],["initialiaze","initialize"],["initialiazed","initialized"],["initialied","initialized"],["initialilsing","initialising"],["initialilzing","initializing"],["initialisaing","initialising"],["initialisaiton","initialisation"],["initialisated","initialised"],["initialisatin","initialisation"],["initialisationg","initialisation"],["initialisaton","initialisation"],["initialisatons","initialisations"],["initialiseing","initialising"],["initialisiation","initialisation"],["initialisong","initialising"],["initialiting","initializing"],["initialitse","initialise"],["initialitsing","initialising"],["initialitze","initialize"],["initialitzing","initializing"],["initializa","initialize"],["initializad","initialized"],["initializaed","initialized"],["initializaing","initializing"],["initializaiton","initialization"],["initializate","initialize"],["initializated","initialized"],["initializates","initializes"],["initializatin","initialization"],["initializating","initializing"],["initializationg","initialization"],["initializaton","initialization"],["initializatons","initializations"],["initializedd","initialized"],["initializeing","initializing"],["initializiation","initialization"],["initializong","initializing"],["initialsation","initialisation"],["initialse","initialise"],["initialsed","initialised"],["initialses","initialises"],["initialsing","initialising"],["initialy","initially"],["initialyl","initially"],["initialyse","initialise"],["initialysed","initialised"],["initialyses","initialises"],["initialysing","initialising"],["initialyze","initialize"],["initialyzed","initialized"],["initialyzes","initializes"],["initialyzing","initializing"],["initialzation","initialization"],["initialze","initialize"],["initialzed","initialized"],["initialzes","initializes"],["initialzing","initializing"],["initiatiate","initiate"],["initiatiated","initiated"],["initiatiater","initiator"],["initiatiating","initiating"],["initiatiator","initiator"],["initiatiats","initiates"],["initiatie","initiate"],["initiatied","initiated"],["initiaties","initiates"],["initiialise","initialise"],["initiialize","initialize"],["initilialised","initialised"],["initilialization","initialization"],["initilializations","initializations"],["initilialize","initialize"],["initilialized","initialized"],["initilializes","initializes"],["initilializing","initializing"],["initiliase","initialise"],["initiliased","initialised"],["initiliases","initialises"],["initiliasing","initialising"],["initiliaze","initialize"],["initiliazed","initialized"],["initiliazes","initializes"],["initiliazing","initializing"],["initilisation","initialisation"],["initilisations","initialisations"],["initilise","initialise"],["initilised","initialised"],["initilises","initialises"],["initilising","initialising"],["initilization","initialization"],["initilizations","initializations"],["initilize","initialize"],["initilized","initialized"],["initilizes","initializes"],["initilizing","initializing"],["inititalisation","initialisation"],["inititalisations","initialisations"],["inititalise","initialise"],["inititalised","initialised"],["inititaliser","initialiser"],["inititalising","initialising"],["inititalization","initialization"],["inititalizations","initializations"],["inititalize","initialize"],["inititate","initiate"],["inititator","initiator"],["inititialization","initialization"],["inititializations","initializations"],["initliasation","initialisation"],["initliase","initialise"],["initliased","initialised"],["initliaser","initialiser"],["initliazation","initialization"],["initliaze","initialize"],["initliazed","initialized"],["initliazer","initializer"],["inituialisation","initialisation"],["inituialization","initialization"],["inivisible","invisible"],["inizialize","initialize"],["inizialized","initialized"],["inizializes","initializes"],["inlalid","invalid"],["inlclude","include"],["inlcluded","included"],["inlcludes","includes"],["inlcluding","including"],["inlcludion","inclusion"],["inlclusive","inclusive"],["inlcude","include"],["inlcuded","included"],["inlcudes","includes"],["inlcuding","including"],["inlcusion","inclusion"],["inlcusive","inclusive"],["inlin","inline"],["inlude","include"],["inluded","included"],["inludes","includes"],["inluding","including"],["inludung","including"],["inluence","influence"],["inlusive","inclusive"],["inmediate","immediate"],["inmediatelly","immediately"],["inmediately","immediately"],["inmediatily","immediately"],["inmediatly","immediately"],["inmense","immense"],["inmigrant","immigrant"],["inmigrants","immigrants"],["inmmediately","immediately"],["inmplementation","implementation"],["innactive","inactive"],["innacurate","inaccurate"],["innacurately","inaccurately"],["innappropriate","inappropriate"],["innecesarily","unnecessarily"],["innecesary","unnecessary"],["innecessarily","unnecessarily"],["innecessary","unnecessary"],["inneffectual","ineffectual"],["innocous","innocuous"],["innoculate","inoculate"],["innoculated","inoculated"],["innosense","innocence"],["inocence","innocence"],["inofficial","unofficial"],["inofrmation","information"],["inoperant","inoperative"],["inoquous","innocuous"],["inot","into"],["inouts","inputs"],["inpact","impact"],["inpacted","impacted"],["inpacting","impacting"],["inpacts","impacts"],["inpeach","impeach"],["inpecting","inspecting"],["inpection","inspection"],["inpections","inspections"],["inpending","impending"],["inpenetrable","impenetrable"],["inplementation","implementation"],["inplementations","implementations"],["inplemented","implemented"],["inplicit","implicit"],["inplicitly","implicitly"],["inpolite","impolite"],["inport","import"],["inportant","important"],["inposible","impossible"],["inpossible","impossible"],["inpout","input"],["inpouts","inputs"],["inpractical","impractical"],["inpracticality","impracticality"],["inpractically","impractically"],["inprisonment","imprisonment"],["inproove","improve"],["inprooved","improved"],["inprooves","improves"],["inprooving","improving"],["inproovment","improvement"],["inproovments","improvements"],["inproper","improper"],["inproperly","improperly"],["inproving","improving"],["inpsection","inspection"],["inpterpreter","interpreter"],["inpu","input"],["inputed","inputted"],["inputsream","inputstream"],["inpuut","input"],["inrement","increment"],["inrements","increments"],["inreractive","interactive"],["inrerface","interface"],["inresponsive","unresponsive"],["inro","into"],["ins't","isn't"],["insallation","installation"],["insalled","installed"],["inscpeting","inspecting"],["insctuction","instruction"],["insctuctional","instructional"],["insctuctions","instructions"],["insde","inside"],["insead","instead"],["insectiverous","insectivorous"],["insensative","insensitive"],["insensetive","insensitive"],["insensistive","insensitive"],["insensistively","insensitively"],["insensitiv","insensitive"],["insensitivy","insensitivity"],["insensitve","insensitive"],["insenstive","insensitive"],["insenstively","insensitively"],["insentives","incentives"],["insentivite","insensitive"],["insepect","inspect"],["insepected","inspected"],["insepection","inspection"],["insepects","inspects"],["insependent","independent"],["inseperable","inseparable"],["insepsion","inception"],["inser","insert"],["insering","inserting"],["insersect","intersect"],["insersected","intersected"],["insersecting","intersecting"],["insersects","intersects"],["inserst","insert"],["insersted","inserted"],["inserster","inserter"],["insersting","inserting"],["inserstor","inserter"],["insersts","inserts"],["insertin","inserting"],["insertino","inserting"],["insesitive","insensitive"],["insesitively","insensitively"],["insesitiveness","insensitiveness"],["insesitivity","insensitivity"],["insetad","instead"],["insetead","instead"],["inseted","inserted"],["insid","inside"],["insidde","inside"],["insiddes","insides"],["insided","inside"],["insignificat","insignificant"],["insignificatly","insignificantly"],["insigt","insight"],["insigth","insight"],["insigths","insights"],["insigts","insights"],["insistance","insistence"],["insititute","institute"],["insitution","institution"],["insitutions","institutions"],["insonsistency","inconsistency"],["instaance","instance"],["instabce","instance"],["instace","instance"],["instaces","instances"],["instaciate","instantiate"],["instad","instead"],["instade","instead"],["instaead","instead"],["instaed","instead"],["instal","install"],["instalation","installation"],["instalations","installations"],["instaled","installed"],["instaler","installer"],["instaling","installing"],["installaion","installation"],["installaiton","installation"],["installaitons","installations"],["installataion","installation"],["installataions","installations"],["installatation","installation"],["installationa","installation"],["installes","installs"],["installtion","installation"],["instals","installs"],["instancd","instance"],["instanciate","instantiate"],["instanciated","instantiated"],["instanciates","instantiates"],["instanciating","instantiating"],["instanciation","instantiation"],["instanciations","instantiations"],["instane","instance"],["instanes","instances"],["instanseation","instantiation"],["instansiate","instantiate"],["instansiated","instantiated"],["instansiates","instantiates"],["instansiation","instantiation"],["instantate","instantiate"],["instantating","instantiating"],["instantation","instantiation"],["instantations","instantiations"],["instantiaties","instantiates"],["instanze","instance"],["instatance","instance"],["instatiate","instantiate"],["instatiation","instantiation"],["instatiations","instantiations"],["insteance","instance"],["insted","instead"],["insteead","instead"],["inster","insert"],["insterad","instead"],["insterrupts","interrupts"],["instersction","intersection"],["instersctions","intersections"],["instersectioned","intersection"],["instert","insert"],["insterted","inserted"],["instertion","insertion"],["institue","institute"],["instlal","install"],["instlalation","installation"],["instlalations","installations"],["instlaled","installed"],["instlaler","installer"],["instlaling","installing"],["instlals","installs"],["instller","installer"],["instnace","instance"],["instnaces","instances"],["instnance","instance"],["instnances","instances"],["instnat","instant"],["instnatiated","instantiated"],["instnatiation","instantiation"],["instnatiations","instantiations"],["instnce","instance"],["instnces","instances"],["instnsiated","instantiated"],["instnsiation","instantiation"],["instnsiations","instantiations"],["instnt","instant"],["instntly","instantly"],["instrace","instance"],["instralled","installed"],["instrction","instruction"],["instrctional","instructional"],["instrctions","instructions"],["instrcut","instruct"],["instrcutino","instruction"],["instrcutinoal","instructional"],["instrcutinos","instructions"],["instrcution","instruction"],["instrcutional","instructional"],["instrcutions","instructions"],["instrcuts","instructs"],["instread","instead"],["instrinsic","intrinsic"],["instruccion","instruction"],["instruccional","instructional"],["instruccions","instructions"],["instrucion","instruction"],["instrucional","instructional"],["instrucions","instructions"],["instruciton","instruction"],["instrucitonal","instructional"],["instrucitons","instructions"],["instrumenet","instrument"],["instrumenetation","instrumentation"],["instrumenetd","instrumented"],["instrumeneted","instrumented"],["instrumentaion","instrumentation"],["instrumnet","instrument"],["instrumnets","instruments"],["instsall","install"],["instsallation","installation"],["instsallations","installations"],["instsalled","installed"],["instsalls","installs"],["instuction","instruction"],["instuctional","instructional"],["instuctions","instructions"],["instuments","instruments"],["insturment","instrument"],["insturments","instruments"],["instutionalized","institutionalized"],["instutions","intuitions"],["insuffciency","insufficiency"],["insuffcient","insufficient"],["insuffciently","insufficiently"],["insufficency","insufficiency"],["insufficent","insufficient"],["insufficently","insufficiently"],["insuffiency","insufficiency"],["insuffient","insufficient"],["insuffiently","insufficiently"],["insurasnce","insurance"],["insurence","insurance"],["intaces","instance"],["intack","intact"],["intall","install"],["intallation","installation"],["intallationpath","installationpath"],["intallations","installations"],["intalled","installed"],["intalleing","installing"],["intaller","installer"],["intalles","installs"],["intalling","installing"],["intalls","installs"],["intances","instances"],["intantiate","instantiate"],["intantiating","instantiating"],["inteaction","interaction"],["intead","instead"],["inteded","intended"],["intedned","intended"],["inteface","interface"],["intefere","interfere"],["intefered","interfered"],["inteference","interference"],["integarte","integrate"],["integarted","integrated"],["integartes","integrates"],["integated","integrated"],["integates","integrates"],["integating","integrating"],["integation","integration"],["integations","integrations"],["integeral","integral"],["integere","integer"],["integreated","integrated"],["integrety","integrity"],["integrey","integrity"],["intelectual","intellectual"],["intelegence","intelligence"],["intelegent","intelligent"],["intelegently","intelligently"],["inteligability","intelligibility"],["inteligable","intelligible"],["inteligance","intelligence"],["inteligantly","intelligently"],["inteligence","intelligence"],["inteligent","intelligent"],["intelisense","intellisense"],["intelligable","intelligible"],["intemediary","intermediary"],["intenal","internal"],["intenational","international"],["intendet","intended"],["inteneded","intended"],["intenisty","intensity"],["intension","intention"],["intensional","intentional"],["intensionally","intentionally"],["intensionaly","intentionally"],["intentation","indentation"],["intentended","intended"],["intentially","intentionally"],["intentialy","intentionally"],["intentionaly","intentionally"],["intentionly","intentionally"],["intepolate","interpolate"],["intepolated","interpolated"],["intepolates","interpolates"],["intepret","interpret"],["intepretable","interpretable"],["intepretation","interpretation"],["intepretations","interpretations"],["intepretator","interpreter"],["intepretators","interpreters"],["intepreted","interpreted"],["intepreter","interpreter"],["intepreter-based","interpreter-based"],["intepreters","interpreters"],["intepretes","interprets"],["intepreting","interpreting"],["intepretor","interpreter"],["intepretors","interpreters"],["inteprets","interprets"],["inter-operability","interoperability"],["interace","interface"],["interaces","interfaces"],["interacive","interactive"],["interacively","interactively"],["interacsion","interaction"],["interacsions","interactions"],["interactionn","interaction"],["interactionns","interactions"],["interactiv","interactive"],["interactivly","interactively"],["interactuable","interactive"],["interafce","interface"],["interakt","interact"],["interaktion","interaction"],["interaktions","interactions"],["interaktive","interactively"],["interaktively","interactively"],["interaktivly","interactively"],["interaly","internally"],["interanl","internal"],["interanlly","internally"],["interate","iterate"],["interational","international"],["interative","interactive"],["interatively","interactively"],["interator","iterator"],["interators","iterators"],["interaxction","interaction"],["interaxctions","interactions"],["interaxtion","interaction"],["interaxtions","interactions"],["intercahnge","interchange"],["intercahnged","interchanged"],["intercation","interaction"],["interchage","interchange"],["interchangable","interchangeable"],["interchangably","interchangeably"],["interchangeble","interchangeable"],["intercollegate","intercollegiate"],["intercontinential","intercontinental"],["intercontinetal","intercontinental"],["interdependant","interdependent"],["interecptor","interceptor"],["intereested","interested"],["intereference","interference"],["intereferences","interferences"],["interelated","interrelated"],["interelaved","interleaved"],["interepolate","interpolate"],["interepolated","interpolated"],["interepolates","interpolates"],["interepolating","interpolating"],["interepolation","interpolation"],["interepret","interpret"],["interepretation","interpretation"],["interepretations","interpretations"],["interepreted","interpreted"],["interepreting","interpreting"],["intereprets","interprets"],["interept","intercept"],["interesct","intersect"],["interescted","intersected"],["interescting","intersecting"],["interesction","intersection"],["interesctions","intersections"],["interescts","intersects"],["interesect","intersect"],["interesected","intersected"],["interesecting","intersecting"],["interesection","intersection"],["interesections","intersections"],["interesects","intersects"],["intereset","interest"],["intereseted","interested"],["intereseting","interesting"],["interesing","interesting"],["interespersed","interspersed"],["interesseted","interested"],["interesst","interest"],["interessted","interested"],["interessting","interesting"],["intereview","interview"],["interfal","interval"],["interfals","intervals"],["interfave","interface"],["interfaves","interfaces"],["interfcae","interface"],["interfcaes","interfaces"],["interfear","interfere"],["interfearence","interference"],["interfearnce","interference"],["interfer","interfere"],["interferance","interference"],["interferd","interfered"],["interfereing","interfering"],["interfernce","interference"],["interferred","interfered"],["interferring","interfering"],["interfers","interferes"],["intergated","integrated"],["interger's","integer's"],["interger","integer"],["intergerated","integrated"],["intergers","integers"],["intergrate","integrate"],["intergrated","integrated"],["intergrates","integrates"],["intergrating","integrating"],["intergration","integration"],["intergrations","integrations"],["interit","inherit"],["interitance","inheritance"],["interited","inherited"],["interiting","inheriting"],["interits","inherits"],["interliveing","interleaving"],["interlly","internally"],["intermediat","intermediate"],["intermeidate","intermediate"],["intermidiate","intermediate"],["intermitent","intermittent"],["intermittant","intermittent"],["intermperance","intemperance"],["internaly","internally"],["internatinal","international"],["internatioanl","international"],["internation","international"],["internel","internal"],["internels","internals"],["internface","interface"],["interogators","interrogators"],["interopeable","interoperable"],["interoprability","interoperability"],["interperated","interpreted"],["interpert","interpret"],["interpertation","interpretation"],["interpertations","interpretations"],["interperted","interpreted"],["interperter","interpreter"],["interperters","interpreters"],["interperting","interpreting"],["interpertive","interpretive"],["interperts","interprets"],["interpet","interpret"],["interpetation","interpretation"],["interpeted","interpreted"],["interpeter","interpreter"],["interpeters","interpreters"],["interpeting","interpreting"],["interpets","interprets"],["interploate","interpolate"],["interploated","interpolated"],["interploates","interpolates"],["interploatin","interpolating"],["interploation","interpolation"],["interpolaed","interpolated"],["interpolaion","interpolation"],["interpolaiton","interpolation"],["interpolar","interpolator"],["interpolayed","interpolated"],["interporation","interpolation"],["interporations","interpolations"],["interprate","interpret"],["interprated","interpreted"],["interpreation","interpretation"],["interprerter","interpreter"],["interpretated","interpreted"],["interprete","interpret"],["interpretes","interprets"],["interpretet","interpreted"],["interpretion","interpretation"],["interpretions","interpretations"],["interpretor","interpreter"],["interprett","interpret"],["interpretted","interpreted"],["interpretter","interpreter"],["interpretting","interpreting"],["interract","interact"],["interracting","interacting"],["interractive","interactive"],["interracts","interacts"],["interrest","interest"],["interrested","interested"],["interresting","interesting"],["interrface","interface"],["interrim","interim"],["interript","interrupt"],["interrput","interrupt"],["interrputed","interrupted"],["interrrupt","interrupt"],["interrrupted","interrupted"],["interrrupting","interrupting"],["interrrupts","interrupts"],["interrtups","interrupts"],["interrugum","interregnum"],["interrum","interim"],["interrup","interrupt"],["interruped","interrupted"],["interruping","interrupting"],["interrups","interrupts"],["interruptable","interruptible"],["interruptors","interrupters"],["interruptted","interrupted"],["interrut","interrupt"],["interrutps","interrupts"],["interscetion","intersection"],["intersecct","intersect"],["interseccted","intersected"],["interseccting","intersecting"],["intersecction","intersection"],["interseccts","intersects"],["intersecrion","intersection"],["intersecton","intersection"],["intersectons","intersections"],["intersparsed","interspersed"],["interst","interest"],["intersted","interested"],["intersting","interesting"],["intersts","interests"],["intertaining","entertaining"],["intertia","inertia"],["intertial","inertial"],["interupt","interrupt"],["interupted","interrupted"],["interupting","interrupting"],["interupts","interrupts"],["interuupt","interrupt"],["intervall","interval"],["intervalls","intervals"],["interveening","intervening"],["intervines","intervenes"],["intesity","intensity"],["inteval","interval"],["intevals","intervals"],["intevene","intervene"],["intger","integer"],["intgers","integers"],["intgral","integral"],["inthe","in the"],["intiailise","initialise"],["intiailised","initialised"],["intiailiseing","initialising"],["intiailiser","initialiser"],["intiailises","initialises"],["intiailising","initialising"],["intiailize","initialize"],["intiailized","initialized"],["intiailizeing","initializing"],["intiailizer","initializer"],["intiailizes","initializes"],["intiailizing","initializing"],["intial","initial"],["intiale","initial"],["intialisation","initialisation"],["intialise","initialise"],["intialised","initialised"],["intialiser","initialiser"],["intialisers","initialisers"],["intialises","initialises"],["intialising","initialising"],["intialistion","initialisation"],["intializating","initializing"],["intialization","initialization"],["intializaze","initialize"],["intialize","initialize"],["intialized","initialized"],["intializer","initializer"],["intializers","initializers"],["intializes","initializes"],["intializing","initializing"],["intializtion","initialization"],["intialled","initialled"],["intiallisation","initialisation"],["intiallisations","initialisations"],["intiallised","initialised"],["intiallization","initialization"],["intiallizations","initializations"],["intiallized","initialized"],["intiallly","initially"],["intially","initially"],["intials","initials"],["intialse","initialise"],["intialsed","initialised"],["intialsing","initialising"],["intialte","initialise"],["intialy","initially"],["intialze","initialize"],["intialzed","initialized"],["intialzing","initializing"],["inticement","enticement"],["intiger","integer"],["intiial","initial"],["intiialise","initialise"],["intiialize","initialize"],["intilising","initialising"],["intilizing","initializing"],["intimite","intimate"],["intinite","infinite"],["intitial","initial"],["intitialization","initialization"],["intitialize","initialize"],["intitialized","initialized"],["intitials","initials"],["intity","entity"],["intot","into"],["intoto","into"],["intpreter","interpreter"],["intput","input"],["intputs","inputs"],["intraversion","introversion"],["intravert","introvert"],["intraverts","introverts"],["intrduced","introduced"],["intreeg","intrigue"],["intreeged","intrigued"],["intreeging","intriguing"],["intreegued","intrigued"],["intreeguing","intriguing"],["intreface","interface"],["intregral","integral"],["intrerrupt","interrupt"],["intresst","interest"],["intressted","interested"],["intressting","interesting"],["intrested","interested"],["intresting","interesting"],["intriduce","introduce"],["intriduced","introduced"],["intriduction","introduction"],["intrisinc","intrinsic"],["intrisincs","intrinsics"],["introducted","introduced"],["introductionary","introductory"],["introdued","introduced"],["introduse","introduce"],["introdused","introduced"],["introduses","introduces"],["introdusing","introducing"],["introsepectable","introspectable"],["introsepection","introspection"],["intrrupt","interrupt"],["intrrupted","interrupted"],["intrrupting","interrupting"],["intrrupts","interrupts"],["intruction","instruction"],["intructional","instructional"],["intructions","instructions"],["intruduced","introduced"],["intruducing","introducing"],["intrument","instrument"],["intrumental","instrumental"],["intrumented","instrumented"],["intrumenting","instrumenting"],["intruments","instruments"],["intrusted","entrusted"],["intstead","instead"],["intstructed","instructed"],["intstructer","instructor"],["intstructing","instructing"],["intstruction","instruction"],["intstructional","instructional"],["intstructions","instructions"],["intstructor","instructor"],["intstructs","instructs"],["intterrupt","interrupt"],["intterupt","interrupt"],["intterupted","interrupted"],["intterupting","interrupting"],["intterupts","interrupts"],["intuative","intuitive"],["inturpratasion","interpretation"],["inturpratation","interpretation"],["inturprett","interpret"],["intutive","intuitive"],["intutively","intuitively"],["inudstry","industry"],["inut","input"],["invaid","invalid"],["invaild","invalid"],["invaildate","invalidate"],["invailid","invalid"],["invalaid","invalid"],["invald","invalid"],["invaldates","invalidates"],["invalde","invalid"],["invalidatiopn","invalidation"],["invalide","invalid"],["invalidiate","invalidate"],["invalidte","invalidate"],["invalidted","invalidated"],["invalidtes","invalidates"],["invalidting","invalidating"],["invalidtion","invalidation"],["invalied","invalid"],["invalud","invalid"],["invarient","invariant"],["invarients","invariants"],["invarinat","invariant"],["invarinats","invariants"],["inventer","inventor"],["inverded","inverted"],["inverion","inversion"],["inverions","inversions"],["invertedd","inverted"],["invertibrates","invertebrates"],["invertion","inversion"],["invertions","inversions"],["inverval","interval"],["inveryed","inverted"],["invesitgated","investigated"],["invesitgating","investigating"],["invesitgation","investigation"],["invesitgations","investigations"],["investingate","investigate"],["inveting","inverting"],["invetory","inventory"],["inviation","invitation"],["invididual","individual"],["invidivual","individual"],["invidual","individual"],["invidually","individually"],["invisble","invisible"],["invisblity","invisibility"],["invisiable","invisible"],["invisibile","invisible"],["invisivble","invisible"],["invlaid","invalid"],["invlid","invalid"],["invlisible","invisible"],["invlove","involve"],["invloved","involved"],["invloves","involves"],["invocaition","invocation"],["invokable","invocable"],["invokation","invocation"],["invokations","invocations"],["invokve","invoke"],["invokved","invoked"],["invokves","invokes"],["invokving","invoking"],["involvment","involvement"],["invovle","involve"],["invovled","involved"],["invovles","involves"],["invovling","involving"],["ioclt","ioctl"],["iomaped","iomapped"],["ionde","inode"],["iplementation","implementation"],["ipmrovement","improvement"],["ipmrovements","improvements"],["iput","input"],["ireelevant","irrelevant"],["irelevent","irrelevant"],["iresistable","irresistible"],["iresistably","irresistibly"],["iresistible","irresistible"],["iresistibly","irresistibly"],["iritable","irritable"],["iritate","irritate"],["iritated","irritated"],["iritating","irritating"],["ironicly","ironically"],["irradate","irradiate"],["irradated","irradiated"],["irradates","irradiates"],["irradating","irradiating"],["irradation","irradiation"],["irraditate","irradiate"],["irraditated","irradiated"],["irraditates","irradiates"],["irraditating","irradiating"],["irregularties","irregularities"],["irregulier","irregular"],["irregulierties","irregularities"],["irrelavent","irrelevant"],["irrelevent","irrelevant"],["irrelvant","irrelevant"],["irreplacable","irreplaceable"],["irreplacalbe","irreplaceable"],["irreproducable","irreproducible"],["irresepective","irrespective"],["irresistable","irresistible"],["irresistably","irresistibly"],["irreversable","irreversible"],["is'nt","isn't"],["isalha","isalpha"],["isconnection","isconnected"],["iscrated","iscreated"],["iself","itself"],["iselfe","itself"],["iserting","inserting"],["isimilar","similar"],["isloation","isolation"],["ismas","isthmus"],["isn;t","isn't"],["isnpiron","inspiron"],["isnt'","isn't"],["isnt","isn't"],["isnt;","isn't"],["isntalation","installation"],["isntalations","installations"],["isntallation","installation"],["isntallations","installations"],["isntance","instance"],["isntances","instances"],["isotrophically","isotropically"],["ispatches","dispatches"],["isplay","display"],["Israelies","Israelis"],["isse","issue"],["isses","issues"],["isssue","issue"],["isssued","issued"],["isssues","issues"],["issueing","issuing"],["istalling","installing"],["istance","instance"],["istead","instead"],["istened","listened"],["istener","listener"],["isteners","listeners"],["istening","listening"],["isue","issue"],["iteartor","iterator"],["iteator","iterator"],["iteger","integer"],["itegral","integral"],["itegrals","integrals"],["iten","item"],["itens","items"],["itention","intention"],["itentional","intentional"],["itentionally","intentionally"],["itentionaly","intentionally"],["iteraion","iteration"],["iteraions","iterations"],["iteratable","iterable"],["iterater","iterator"],["iteraterate","iterate"],["iteratered","iterated"],["iteratior","iterator"],["iteratiors","iterators"],["iteratons","iterations"],["itereating","iterating"],["iterface","interface"],["iterfaces","interfaces"],["iternations","iterations"],["iterpreter","interpreter"],["iterration","iteration"],["iterrations","iterations"],["iterrupt","interrupt"],["iterstion","iteration"],["iterstions","iterations"],["itertation","iteration"],["iteself","itself"],["itesm","items"],["itheir","their"],["itheirs","theirs"],["itialise","initialise"],["itialised","initialised"],["itialises","initialises"],["itialising","initialising"],["itialize","initialize"],["itialized","initialized"],["itializes","initializes"],["itializing","initializing"],["itnerest","interest"],["itnerface","interface"],["itnerfaces","interfaces"],["itnernal","internal"],["itnerprelation","interpretation"],["itnerpret","interpret"],["itnerpretation","interpretation"],["itnerpretaton","interpretation"],["itnerpreted","interpreted"],["itnerpreter","interpreter"],["itnerpreting","interpreting"],["itnerprets","interprets"],["itnervals","intervals"],["itnroduced","introduced"],["itsef","itself"],["itsel","itself"],["itselfs","itself"],["itselt","itself"],["itselv","itself"],["itsems","items"],["itslef","itself"],["itslev","itself"],["itsself","itself"],["itterate","iterate"],["itterated","iterated"],["itterates","iterates"],["itterating","iterating"],["itteration","iteration"],["itterations","iterations"],["itterative","iterative"],["itterator","iterator"],["itterators","iterators"],["iunior","junior"],["ivalid","invalid"],["ivocation","invocation"],["ivoked","invoked"],["iwithout","without"],["iwll","will"],["iwth","with"],["jagid","jagged"],["jagwar","jaguar"],["januar","January"],["janurary","January"],["Januray","January"],["japanease","japanese"],["japaneese","Japanese"],["Japanes","Japanese"],["japanses","Japanese"],["jaques","jacques"],["javacript","javascript"],["javascipt","javascript"],["javasciript","javascript"],["javascritp","javascript"],["javascropt","javascript"],["javasript","javascript"],["javasrript","javascript"],["javescript","javascript"],["javsscript","javascript"],["jeapardy","jeopardy"],["jeffies","jiffies"],["jekins","Jenkins"],["jelous","jealous"],["jelousy","jealousy"],["jelusey","jealousy"],["jenkin","Jenkins"],["jenkkins","Jenkins"],["jenkns","Jenkins"],["jepordize","jeopardize"],["jewllery","jewellery"],["jhondoe","johndoe"],["jist","gist"],["jitterr","jitter"],["jitterring","jittering"],["jodpers","jodhpurs"],["Johanine","Johannine"],["joineable","joinable"],["joinning","joining"],["jont","joint"],["jonts","joints"],["jornal","journal"],["jorunal","journal"],["Jospeh","Joseph"],["jossle","jostle"],["jouney","journey"],["journied","journeyed"],["journies","journeys"],["joystik","joystick"],["jscipt","jscript"],["jstu","just"],["jsut","just"],["juadaism","Judaism"],["juadism","Judaism"],["judical","judicial"],["judisuary","judiciary"],["juducial","judicial"],["juge","judge"],["juipter","Jupiter"],["jumo","jump"],["jumoed","jumped"],["jumpimng","jumping"],["jupyther","Jupyter"],["juristiction","jurisdiction"],["juristictions","jurisdictions"],["jus","just"],["justfied","justified"],["justication","justification"],["justifed","justified"],["justs","just"],["juxt","just"],["juxtification","justification"],["juxtifications","justifications"],["juxtified","justified"],["juxtifies","justifies"],["juxtifying","justifying"],["kakfa","Kafka"],["kazakstan","Kazakhstan"],["keep-alives","keep-alive"],["keept","kept"],["kenerl","kernel"],["kenerls","kernels"],["kenrel","kernel"],["kenrels","kernels"],["kepping","keeping"],["kepps","keeps"],["kerenl","kernel"],["kerenls","kernels"],["kernal","kernel"],["kernals","kernels"],["kernerl","kernel"],["kernerls","kernels"],["keword","keyword"],["kewords","keywords"],["kewword","keyword"],["kewwords","keywords"],["keybaord","keyboard"],["keybaords","keyboards"],["keyboaard","keyboard"],["keyboaards","keyboards"],["keyboad","keyboard"],["keyboads","keyboards"],["keybooard","keyboard"],["keybooards","keyboards"],["keyborad","keyboard"],["keyborads","keyboards"],["keybord","keyboard"],["keybords","keyboards"],["keybroad","keyboard"],["keybroads","keyboards"],["keyevente","keyevent"],["keyords","keywords"],["keyoutch","keytouch"],["keyowrd","keyword"],["keypair","key pair"],["keypairs","key pairs"],["keyservers","key servers"],["keystokes","keystrokes"],["keyward","keyword"],["keywoards","keywords"],["keywork","keyword"],["keyworkd","keyword"],["keyworkds","keywords"],["keywors","keywords"],["keywprd","keyword"],["kindergarden","kindergarten"],["kindgergarden","kindergarten"],["kindgergarten","kindergarten"],["kinf","kind"],["kinfs","kinds"],["kinnect","Kinect"],["klenex","kleenex"],["klick","click"],["klicked","clicked"],["klicks","clicks"],["klunky","clunky"],["knive","knife"],["kno","know"],["knowladge","knowledge"],["knowlage","knowledge"],["knowlageable","knowledgeable"],["knowlegde","knowledge"],["knowlege","knowledge"],["knowlegeabel","knowledgeable"],["knowlegeable","knowledgeable"],["knwo","know"],["knwoing","knowing"],["knwoingly","knowingly"],["knwon","known"],["knwos","knows"],["kocalized","localized"],["konstant","constant"],["konstants","constants"],["konw","know"],["konwn","known"],["konws","knows"],["koordinate","coordinate"],["koordinates","coordinates"],["kown","known"],["kubenates","Kubernetes"],["kubenernetes","Kubernetes"],["kubenertes","Kubernetes"],["kubenetes","Kubernetes"],["kubenretes","Kubernetes"],["kuberenetes","Kubernetes"],["kuberentes","Kubernetes"],["kuberetes","Kubernetes"],["kubermetes","Kubernetes"],["kubernates","Kubernetes"],["kubernests","Kubernetes"],["kubernete","Kubernetes"],["kuberntes","Kubernetes"],["kwno","know"],["kwoledgebase","knowledge base"],["kyrillic","cyrillic"],["labbel","label"],["labbeled","labeled"],["labbels","labels"],["labed","labeled"],["labeld","labelled"],["labirinth","labyrinth"],["lable","label"],["lablel","label"],["lablels","labels"],["lables","labels"],["labouriously","laboriously"],["labratory","laboratory"],["lagacies","legacies"],["lagacy","legacy"],["laguage","language"],["laguages","languages"],["laguague","language"],["laguagues","languages"],["laiter","later"],["lamda","lambda"],["lamdas","lambdas"],["lanaguage","language"],["lanaguge","language"],["lanaguges","languages"],["lanagugs","languages"],["lanauge","language"],["langage","language"],["langauage","language"],["langauge","language"],["langauges","languages"],["langeuage","language"],["langeuagesection","languagesection"],["langht","length"],["langhts","lengths"],["langth","length"],["langths","lengths"],["languace","language"],["languaces","languages"],["languae","language"],["languaes","languages"],["language-spacific","language-specific"],["languahe","language"],["languahes","languages"],["languaje","language"],["languajes","languages"],["langual","lingual"],["languale","language"],["languales","languages"],["langualge","language"],["langualges","languages"],["languange","language"],["languanges","languages"],["languaqe","language"],["languaqes","languages"],["languate","language"],["languates","languages"],["languauge","language"],["languauges","languages"],["languege","language"],["langueges","languages"],["langugae","language"],["langugaes","languages"],["langugage","language"],["langugages","languages"],["languge","language"],["languges","languages"],["langugue","language"],["langugues","languages"],["lanich","launch"],["lanuage","language"],["lanuch","launch"],["lanuched","launched"],["lanuches","launches"],["lanuching","launching"],["lanugage","language"],["lanugages","languages"],["laod","load"],["laoded","loaded"],["laoding","loading"],["laods","loads"],["laout","layout"],["larg","large"],["largst","largest"],["larrry","larry"],["lastes","latest"],["lastr","last"],["latets","latest"],["lating","latin"],["latitide","latitude"],["latitue","latitude"],["latitute","latitude"],["latops","laptops"],["latset","latest"],["lattitude","latitude"],["lauch","launch"],["lauched","launched"],["laucher","launcher"],["lauches","launches"],["lauching","launching"],["lauguage","language"],["launck","launch"],["launhed","launched"],["lavae","larvae"],["layed","laid"],["layou","layout"],["lazer","laser"],["laziliy","lazily"],["lazyness","laziness"],["lcoally","locally"],["lcoation","location"],["lcuase","clause"],["leaast","least"],["leace","leave"],["leack","leak"],["leagacy","legacy"],["leagal","legal"],["leagalise","legalise"],["leagality","legality"],["leagalize","legalize"],["leagcy","legacy"],["leage","league"],["leagel","legal"],["leagelise","legalise"],["leagelity","legality"],["leagelize","legalize"],["leageue","league"],["leagl","legal"],["leaglise","legalise"],["leaglity","legality"],["leaglize","legalize"],["leapyear","leap year"],["leapyears","leap years"],["leary","leery"],["leaset","least"],["leasy","least"],["leathal","lethal"],["leats","least"],["leaveing","leaving"],["leavong","leaving"],["lefted","left"],["legac","legacy"],["legact","legacy"],["legalimate","legitimate"],["legasy","legacy"],["legel","legal"],["leggacies","legacies"],["leggacy","legacy"],["leght","length"],["leghts","lengths"],["legitamate","legitimate"],["legitimiately","legitimately"],["legitmate","legitimate"],["legnth","length"],["legth","length"],["legths","lengths"],["leibnitz","leibniz"],["leightweight","lightweight"],["lene","lens"],["lenggth","length"],["lengh","length"],["lenghs","lengths"],["lenght","length"],["lenghten","lengthen"],["lenghtend","lengthened"],["lenghtened","lengthened"],["lenghtening","lengthening"],["lenghth","length"],["lenghthen","lengthen"],["lenghths","lengths"],["lenghthy","lengthy"],["lenghtly","lengthy"],["lenghts","lengths"],["lenghty","lengthy"],["lengt","length"],["lengten","lengthen"],["lengtext","longtext"],["lengthes","lengths"],["lengthh","length"],["lengts","lengths"],["leniant","lenient"],["leninent","lenient"],["lentgh","length"],["lentghs","lengths"],["lenth","length"],["lenths","lengths"],["leran","learn"],["leraned","learned"],["lerans","learns"],["lessson","lesson"],["lesssons","lessons"],["lesstiff","LessTif"],["letgitimate","legitimate"],["letmost","leftmost"],["leutenant","lieutenant"],["levaridge","leverage"],["levetate","levitate"],["levetated","levitated"],["levetates","levitates"],["levetating","levitating"],["levl","level"],["levle","level"],["lexial","lexical"],["lexigraphic","lexicographic"],["lexigraphical","lexicographical"],["lexigraphically","lexicographically"],["leyer","layer"],["leyered","layered"],["leyering","layering"],["leyers","layers"],["liares","liars"],["liasion","liaison"],["liason","liaison"],["liasons","liaisons"],["libarary","library"],["libaries","libraries"],["libary","library"],["libell","libel"],["liberaries","libraries"],["liberary","library"],["liberoffice","libreoffice"],["liberry","library"],["libgng","libpng"],["libguistic","linguistic"],["libguistics","linguistics"],["libitarianisn","libertarianism"],["libraarie","library"],["libraaries","libraries"],["libraary","library"],["librabarie","library"],["librabaries","libraries"],["librabary","library"],["librabie","library"],["librabies","libraries"],["librabrie","library"],["librabries","libraries"],["librabry","library"],["libraby","library"],["libraie","library"],["libraier","library"],["libraies","libraries"],["libraiesr","libraries"],["libraire","library"],["libraires","libraries"],["librairies","libraries"],["librairy","library"],["libralie","library"],["libralies","libraries"],["libraly","library"],["libraray","library"],["libraris","libraries"],["librarries","libraries"],["librarry","library"],["libraryes","libraries"],["libratie","library"],["libraties","libraries"],["libraty","library"],["libray","library"],["librayr","library"],["libreoffie","libreoffice"],["libreoficekit","libreofficekit"],["libreries","libraries"],["librery","library"],["libries","libraries"],["librraies","libraries"],["librraries","libraries"],["librrary","library"],["librray","library"],["libstc++","libstdc++"],["licate","locate"],["licated","located"],["lication","location"],["lications","locations"],["licenceing","licencing"],["licese","license"],["licesne","license"],["licesnes","licenses"],["licesning","licensing"],["licesnse","license"],["licesnses","licenses"],["licesnsing","licensing"],["licsense","license"],["licsenses","licenses"],["licsensing","licensing"],["lieing","lying"],["liek","like"],["liekd","liked"],["lient","client"],["lients","clients"],["liesure","leisure"],["lieuenant","lieutenant"],["liev","live"],["lieved","lived"],["lifceycle","lifecycle"],["lifecyle","lifecycle"],["lifes","lives"],["lifeycle","lifecycle"],["liftime","lifetime"],["lighing","lighting"],["lightbulp","lightbulb"],["lightweigh","lightweight"],["lightwieght","lightweight"],["lightwight","lightweight"],["lightyear","light year"],["lightyears","light years"],["ligth","light"],["ligthing","lighting"],["ligths","lights"],["ligthweight","lightweight"],["ligthweights","lightweights"],["liitle","little"],["likeley","likely"],["likelly","likely"],["likelyhood","likelihood"],["likewis","likewise"],["likey","likely"],["liklelihood","likelihood"],["likley","likely"],["likly","likely"],["lileral","literal"],["limiation","limitation"],["limiations","limitations"],["liminted","limited"],["limitaion","limitation"],["limite","limit"],["limitiaion","limitation"],["limitiaions","limitations"],["limitiation","limitation"],["limitiations","limitations"],["limitied","limited"],["limitier","limiter"],["limitiers","limiters"],["limitiing","limiting"],["limitimg","limiting"],["limition","limitation"],["limitions","limitations"],["limitis","limits"],["limititation","limitation"],["limititations","limitations"],["limitited","limited"],["limititer","limiter"],["limititers","limiters"],["limititing","limiting"],["limitted","limited"],["limitter","limiter"],["limitting","limiting"],["limitts","limits"],["limk","link"],["limted","limited"],["limti","limit"],["limts","limits"],["linaer","linear"],["linar","linear"],["linarly","linearly"],["lincese","license"],["lincesed","licensed"],["linceses","licenses"],["lineary","linearly"],["linerisation","linearisation"],["linerisations","linearisations"],["lineseach","linesearch"],["lineseaches","linesearches"],["liness","lines"],["linewdith","linewidth"],["linez","lines"],["lingth","length"],["linheight","lineheight"],["linkfy","linkify"],["linnaena","linnaean"],["lintain","lintian"],["linz","lines"],["lippizaner","lipizzaner"],["liquify","liquefy"],["lisetning","listening"],["lising","listing"],["listapck","listpack"],["listbbox","listbox"],["listeing","listening"],["listeneing","listening"],["listeneres","listeners"],["listenes","listens"],["listensers","listeners"],["listenter","listener"],["listenters","listeners"],["listernes","listeners"],["listner","listener"],["listners","listeners"],["litaral","literal"],["litarally","literally"],["litarals","literals"],["litature","literature"],["liteautrue","literature"],["literaly","literally"],["literture","literature"],["litle","little"],["litquid","liquid"],["litquids","liquids"],["lits","list"],["litte","little"],["littel","little"],["littel-endian","little-endian"],["littele","little"],["littelry","literally"],["litteral","literal"],["litterally","literally"],["litterals","literals"],["litterate","literate"],["litterature","literature"],["liuke","like"],["liveing","living"],["livel","level"],["livetime","lifetime"],["livley","lively"],["lizens","license"],["lizense","license"],["lizensing","licensing"],["lke","like"],["llinear","linear"],["lmits","limits"],["loaader","loader"],["loacal","local"],["loacality","locality"],["loacally","locally"],["loacation","location"],["loaction","location"],["loactions","locations"],["loadig","loading"],["loadin","loading"],["loadning","loading"],["locae","locate"],["locaes","locates"],["locahost","localhost"],["locaiing","locating"],["locailty","locality"],["locaing","locating"],["locaion","location"],["locaions","locations"],["locaise","localise"],["locaised","localised"],["locaiser","localiser"],["locaises","localises"],["locaite","locate"],["locaites","locates"],["locaiting","locating"],["locaition","location"],["locaitions","locations"],["locaiton","location"],["locaitons","locations"],["locaize","localize"],["locaized","localized"],["locaizer","localizer"],["locaizes","localizes"],["localation","location"],["localed","located"],["localtion","location"],["localtions","locations"],["localy","locally"],["localzation","localization"],["locatins","locations"],["loccked","locked"],["locgical","logical"],["lockingf","locking"],["lodable","loadable"],["loded","loaded"],["loder","loader"],["loders","loaders"],["loding","loading"],["loev","love"],["logarithimic","logarithmic"],["logarithmical","logarithmically"],["logaritmic","logarithmic"],["logcal","logical"],["loggging","logging"],["logial","logical"],["logially","logically"],["logicaly","logically"],["logictech","logitech"],["logile","logfile"],["logitude","longitude"],["logitudes","longitudes"],["logoic","logic"],["logorithm","logarithm"],["logorithmic","logarithmic"],["logorithms","logarithms"],["logrithm","logarithm"],["logrithms","logarithms"],["logwritter","logwriter"],["loign","login"],["loigns","logins"],["lokal","local"],["lokale","locale"],["lokales","locales"],["lokaly","locally"],["lolal","total"],["lolerant","tolerant"],["lond","long"],["lonelyness","loneliness"],["long-runnign","long-running"],["longers","longer"],["longitudonal","longitudinal"],["longitue","longitude"],["longitutde","longitude"],["longitute","longitude"],["longst","longest"],["longuer","longer"],["longuest","longest"],["lonley","lonely"],["looback","loopback"],["loobacks","loopbacks"],["loobpack","loopback"],["loockdown","lockdown"],["lookes","looks"],["looknig","looking"],["looop","loop"],["loopup","lookup"],["loosley","loosely"],["loosly","loosely"],["losely","loosely"],["losen","loosen"],["losened","loosened"],["lotharingen","Lothringen"],["lpatform","platform"],["luckly","luckily"],["luminose","luminous"],["luminousity","luminosity"],["lveo","love"],["lvoe","love"],["Lybia","Libya"],["maake","make"],["mabe","maybe"],["mabye","maybe"],["macack","macaque"],["macason","moccasin"],["macasons","moccasins"],["maccro","macro"],["maccros","macros"],["machanism","mechanism"],["machanisms","mechanisms"],["mached","matched"],["maches","matches"],["machettie","machete"],["machinary","machinery"],["machine-dependend","machine-dependent"],["machiness","machines"],["mackeral","mackerel"],["maco","macro"],["macor","macro"],["macors","macros"],["macpakge","package"],["macroses","macros"],["macrow","macro"],["macthing","matching"],["madantory","mandatory"],["madatory","mandatory"],["maddness","madness"],["maesure","measure"],["maesured","measured"],["maesurement","measurement"],["maesurements","measurements"],["maesures","measures"],["maesuring","measuring"],["magasine","magazine"],["magincian","magician"],["magisine","magazine"],["magizine","magazine"],["magnatiude","magnitude"],["magnatude","magnitude"],["magnificient","magnificent"],["magolia","magnolia"],["mahcine","machine"],["maibe","maybe"],["maibox","mailbox"],["mailformed","malformed"],["mailling","mailing"],["maillinglist","mailing list"],["maillinglists","mailing lists"],["mailny","mainly"],["mailstrum","maelstrom"],["mainenance","maintenance"],["maininly","mainly"],["mainling","mailing"],["maintainance","maintenance"],["maintaince","maintenance"],["maintainces","maintenances"],["maintainence","maintenance"],["maintaing","maintaining"],["maintan","maintain"],["maintanance","maintenance"],["maintance","maintenance"],["maintane","maintain"],["maintanence","maintenance"],["maintaner","maintainer"],["maintaners","maintainers"],["maintans","maintains"],["maintenace","maintenance"],["maintenence","maintenance"],["maintiain","maintain"],["maintians","maintains"],["maintinaing","maintaining"],["maintioned","mentioned"],["mairabd","MariaDB"],["mairadb","MariaDB"],["maitain","maintain"],["maitainance","maintenance"],["maitained","maintained"],["maitainers","maintainers"],["majoroty","majority"],["maka","make"],["makefle","makefile"],["makeing","making"],["makign","making"],["makretplace","marketplace"],["makro","macro"],["makros","macros"],["Malcom","Malcolm"],["maliciousally","maliciously"],["malicius","malicious"],["maliciusally","maliciously"],["maliciusly","maliciously"],["malicous","malicious"],["malicousally","maliciously"],["malicously","maliciously"],["maline","malign"],["malined","maligned"],["malining","maligning"],["malins","maligns"],["malless","malice"],["malplace","misplace"],["malplaced","misplaced"],["maltesian","Maltese"],["mamagement","management"],["mamal","mammal"],["mamalian","mammalian"],["mamento","memento"],["mamentos","mementos"],["mamory","memory"],["mamuth","mammoth"],["manafacturer","manufacturer"],["manafacturers","manufacturers"],["managament","management"],["manageed","managed"],["managemenet","management"],["managenment","management"],["managet","manager"],["managets","managers"],["managmenet","management"],["managment","management"],["manaise","mayonnaise"],["manal","manual"],["manange","manage"],["manangement","management"],["mananger","manager"],["manangers","managers"],["manaul","manual"],["manaully","manually"],["manauls","manuals"],["manaze","mayonnaise"],["mandatatory","mandatory"],["mandetory","mandatory"],["manement","management"],["maneouvre","manoeuvre"],["maneouvred","manoeuvred"],["maneouvres","manoeuvres"],["maneouvring","manoeuvring"],["manetain","maintain"],["manetained","maintained"],["manetainer","maintainer"],["manetainers","maintainers"],["manetaining","maintaining"],["manetains","maintains"],["mangaed","managed"],["mangaement","management"],["mangager","manager"],["mangagers","managers"],["mangement","management"],["mangementt","management"],["manifacture","manufacture"],["manifactured","manufactured"],["manifacturer","manufacturer"],["manifacturers","manufacturers"],["manifactures","manufactures"],["manifect","manifest"],["manipluate","manipulate"],["manipluated","manipulated"],["manipulatin","manipulating"],["manipulaton","manipulation"],["manipute","manipulate"],["maniputed","manipulated"],["maniputing","manipulating"],["manipution","manipulation"],["maniputions","manipulations"],["maniputor","manipulator"],["manisfestations","manifestations"],["maniuplate","manipulate"],["maniuplated","manipulated"],["maniuplates","manipulates"],["maniuplating","manipulating"],["maniuplation","manipulation"],["maniuplations","manipulations"],["maniuplator","manipulator"],["maniuplators","manipulators"],["mannor","manner"],["mannual","manual"],["mannually","manually"],["mannualy","manually"],["manoeuverability","maneuverability"],["manoeuvering","maneuvering"],["manouevring","manoeuvring"],["mantain","maintain"],["mantainable","maintainable"],["mantained","maintained"],["mantainer","maintainer"],["mantainers","maintainers"],["mantaining","maintaining"],["mantains","maintains"],["mantanine","maintain"],["mantanined","maintained"],["mantatory","mandatory"],["mantenance","maintenance"],["manualy","manually"],["manualyl","manually"],["manualyy","manually"],["manuell","manual"],["manuelly","manually"],["manufactuerd","manufactured"],["manufacturedd","manufactured"],["manufature","manufacture"],["manufatured","manufactured"],["manufaturing","manufacturing"],["manufaucturing","manufacturing"],["manulally","manually"],["manule","manual"],["manuley","manually"],["manully","manually"],["manuly","manually"],["manupilations","manipulations"],["manupulate","manipulate"],["manupulated","manipulated"],["manupulates","manipulates"],["manupulating","manipulating"],["manupulation","manipulation"],["manupulations","manipulations"],["manuver","maneuver"],["manyal","manual"],["manyally","manually"],["manyals","manuals"],["mapable","mappable"],["mape","map"],["maped","mapped"],["maping","mapping"],["mapings","mappings"],["mapp","map"],["mappeds","mapped"],["mappeed","mapped"],["mappping","mapping"],["mapppings","mappings"],["margings","margins"],["mariabd","MariaDB"],["mariage","marriage"],["marjority","majority"],["marketting","marketing"],["markey","marquee"],["markeys","marquees"],["marmelade","marmalade"],["marrage","marriage"],["marraige","marriage"],["marrtyred","martyred"],["marryied","married"],["marshmellow","marshmallow"],["marshmellows","marshmallows"],["marter","martyr"],["masakist","masochist"],["mashetty","machete"],["mashine","machine"],["mashined","machined"],["mashines","machines"],["masia","messiah"],["masicer","massacre"],["masiff","massif"],["maskerading","masquerading"],["maskeraid","masquerade"],["masos","macos"],["masquarade","masquerade"],["masqurade","masquerade"],["Massachusettes","Massachusetts"],["Massachussets","Massachusetts"],["Massachussetts","Massachusetts"],["massagebox","messagebox"],["massectomy","mastectomy"],["massewer","masseur"],["massmedia","mass media"],["massoose","masseuse"],["masster","master"],["masteer","master"],["masterbation","masturbation"],["mastquerade","masquerade"],["mata-data","meta-data"],["matadata","metadata"],["matainer","maintainer"],["matainers","maintainers"],["mataphysical","metaphysical"],["matatable","metatable"],["matc","match"],["matchies","matches"],["matchign","matching"],["matchin","matching"],["matchs","matches"],["matchter","matcher"],["matcing","matching"],["mateiral","material"],["mateirals","materials"],["matemathical","mathematical"],["materaial","material"],["materaials","materials"],["materail","material"],["materails","materials"],["materalists","materialist"],["materil","material"],["materilism","materialism"],["materilize","materialize"],["materils","materials"],["materla","material"],["materlas","materials"],["mathamatics","mathematics"],["mathces","matches"],["mathch","match"],["mathched","matched"],["mathches","matches"],["mathching","matching"],["mathcing","matching"],["mathed","matched"],["mathematicaly","mathematically"],["mathematican","mathematician"],["mathematicas","mathematics"],["mathes","matches"],["mathetician","mathematician"],["matheticians","mathematicians"],["mathimatic","mathematic"],["mathimatical","mathematical"],["mathimatically","mathematically"],["mathimatician","mathematician"],["mathimaticians","mathematicians"],["mathimatics","mathematics"],["mathing","matching"],["mathmatical","mathematical"],["mathmatically","mathematically"],["mathmatician","mathematician"],["mathmaticians","mathematicians"],["mathod","method"],["matinay","matinee"],["matix","matrix"],["matreial","material"],["matreials","materials"],["matresses","mattresses"],["matrial","material"],["matrials","materials"],["matser","master"],["matzch","match"],["mavrick","maverick"],["mawsoleum","mausoleum"],["maximice","maximize"],["maximim","maximum"],["maximimum","maximum"],["maximium","maximum"],["maximnum","maximum"],["maximnums","maximums"],["maximun","maximum"],["maxinum","maximum"],["maxium","maximum"],["maxiumum","maximum"],["maxmimum","maximum"],["maxmium","maximum"],["maxmiums","maximums"],["maxosx","macosx"],["maxumum","maximum"],["maybee","maybe"],["mayonase","mayonnaise"],["mayority","majority"],["mayu","may"],["mayybe","maybe"],["mazilla","Mozilla"],["mccarthyst","mccarthyist"],["mchanic","mechanic"],["mchanical","mechanical"],["mchanically","mechanically"],["mchanicals","mechanicals"],["mchanics","mechanics"],["mchanism","mechanism"],["mchanisms","mechanisms"],["mcroscope","microscope"],["mcroscopes","microscopes"],["mcroscopic","microscopic"],["mcroscopies","microscopies"],["mcroscopy","microscopy"],["mdification","modification"],["mdifications","modifications"],["mdified","modified"],["mdifier","modifier"],["mdifiers","modifiers"],["mdifies","modifies"],["mdify","modify"],["mdifying","modifying"],["mdoel","model"],["mdoeled","modeled"],["mdoeling","modeling"],["mdoelled","modelled"],["mdoelling","modelling"],["mdoels","models"],["meaasure","measure"],["meaasured","measured"],["meaasures","measures"],["meachanism","mechanism"],["meachanisms","mechanisms"],["meachinism","mechanism"],["meachinisms","mechanisms"],["meachnism","mechanism"],["meachnisms","mechanisms"],["meading","meaning"],["meaing","meaning"],["mealflur","millefleur"],["meanigfull","meaningful"],["meanign","meaning"],["meanin","meaning"],["meaninful","meaningful"],["meaningfull","meaningful"],["meanining","meaning"],["meaninless","meaningless"],["meaninng","meaning"],["meassurable","measurable"],["meassurably","measurably"],["meassure","measure"],["meassured","measured"],["meassurement","measurement"],["meassurements","measurements"],["meassures","measures"],["meassuring","measuring"],["measue","measure"],["measued","measured"],["measuement","measurement"],["measuements","measurements"],["measuer","measurer"],["measues","measures"],["measuing","measuring"],["measuremenet","measurement"],["measuremenets","measurements"],["measurmenet","measurement"],["measurmenets","measurements"],["measurment","measurement"],["measurments","measurements"],["meatadata","metadata"],["meatfile","metafile"],["meathod","method"],["meaure","measure"],["meaured","measured"],["meaurement","measurement"],["meaurements","measurements"],["meaurer","measurer"],["meaurers","measurers"],["meaures","measures"],["meauring","measuring"],["meausure","measure"],["meausures","measures"],["meber","member"],["mebmer","member"],["mebrain","membrane"],["mebrains","membranes"],["mebran","membrane"],["mebrans","membranes"],["mecahinsm","mechanism"],["mecahinsms","mechanisms"],["mecahnic","mechanic"],["mecahnics","mechanics"],["mecahnism","mechanism"],["mecanical","mechanical"],["mecanism","mechanism"],["mecanisms","mechanisms"],["meccob","macabre"],["mechamism","mechanism"],["mechamisms","mechanisms"],["mechananism","mechanism"],["mechancial","mechanical"],["mechandise","merchandise"],["mechanim","mechanism"],["mechanims","mechanisms"],["mechanis","mechanism"],["mechansim","mechanism"],["mechansims","mechanisms"],["mechine","machine"],["mechines","machines"],["mechinism","mechanism"],["mechnanism","mechanism"],["mechnism","mechanism"],["mechnisms","mechanisms"],["medacine","medicine"],["medai","media"],["meddo","meadow"],["meddos","meadows"],["medeival","medieval"],["medevial","medieval"],["medhod","method"],["medhods","methods"],["medievel","medieval"],["medifor","metaphor"],["medifors","metaphors"],["medioker","mediocre"],["mediphor","metaphor"],["mediphors","metaphors"],["medisinal","medicinal"],["mediterainnean","mediterranean"],["Mediteranean","Mediterranean"],["medow","meadow"],["medows","meadows"],["meeds","needs"],["meens","means"],["meerkrat","meerkat"],["meerly","merely"],["meetign","meeting"],["meganism","mechanism"],["mege","merge"],["mehcanic","mechanic"],["mehcanical","mechanical"],["mehcanically","mechanically"],["mehcanics","mechanics"],["mehod","method"],["mehodical","methodical"],["mehodically","methodically"],["mehods","methods"],["mehtod","method"],["mehtodical","methodical"],["mehtodically","methodically"],["mehtods","methods"],["meida","media"],["melancoly","melancholy"],["melieux","milieux"],["melineum","millennium"],["melineumms","millennia"],["melineums","millennia"],["melinneum","millennium"],["melinneums","millennia"],["mellineum","millennium"],["mellineums","millennia"],["mellinneum","millennium"],["mellinneums","millennia"],["membran","membrane"],["membranaphone","membranophone"],["membrans","membranes"],["memcahe","memcache"],["memcahed","memcached"],["memeasurement","measurement"],["memeber","member"],["memebered","remembered"],["memebers","members"],["memebership","membership"],["memeberships","memberships"],["memebr","member"],["memebrof","memberof"],["memebrs","members"],["mememory","memory"],["mememto","memento"],["memeory","memory"],["memer","member"],["memership","membership"],["memerships","memberships"],["memery","memory"],["memick","mimic"],["memicked","mimicked"],["memicking","mimicking"],["memics","mimics"],["memmber","member"],["memmick","mimic"],["memmicked","mimicked"],["memmicking","mimicking"],["memmics","mimics"],["memmory","memory"],["memoery","memory"],["memomry","memory"],["memor","memory"],["memoty","memory"],["memove","memmove"],["mempry","memory"],["memroy","memory"],["memwar","memoir"],["memwars","memoirs"],["memwoir","memoir"],["memwoirs","memoirs"],["menally","mentally"],["menas","means"],["menetion","mention"],["menetioned","mentioned"],["menetioning","mentioning"],["menetions","mentions"],["meni","menu"],["menioned","mentioned"],["mensioned","mentioned"],["mensioning","mentioning"],["ment","meant"],["menthods","methods"],["mentiond","mentioned"],["mentione","mentioned"],["mentionned","mentioned"],["mentionning","mentioning"],["mentionnned","mentioned"],["menual","manual"],["menue","menu"],["menues","menus"],["menutitems","menuitems"],["meraj","mirage"],["merajes","mirages"],["merang","meringue"],["mercahnt","merchant"],["mercentile","mercantile"],["merchantibility","merchantability"],["merecat","meerkat"],["merecats","meerkats"],["mergable","mergeable"],["merget","merge"],["mergge","merge"],["mergged","merged"],["mergging","merging"],["mermory","memory"],["merory","memory"],["merrors","mirrors"],["mesage","message"],["mesages","messages"],["mesaureed","measured"],["meskeeto","mosquito"],["meskeetos","mosquitoes"],["mesoneen","mezzanine"],["mesoneens","mezzanines"],["messaes","messages"],["messag","message"],["messagetqueue","messagequeue"],["messagin","messaging"],["messagoe","message"],["messags","messages"],["messagses","messages"],["messanger","messenger"],["messangers","messengers"],["messave","message"],["messeges","messages"],["messenging","messaging"],["messgae","message"],["messgaed","messaged"],["messgaes","messages"],["messge","message"],["messges","messages"],["messsage","message"],["messsages","messages"],["messure","measure"],["messured","measured"],["messurement","measurement"],["messures","measures"],["messuring","measuring"],["messurment","measurement"],["mesure","measure"],["mesured","measured"],["mesurement","measurement"],["mesurements","measurements"],["mesures","measures"],["mesuring","measuring"],["mesurment","measurement"],["meta-attrubute","meta-attribute"],["meta-attrubutes","meta-attributes"],["meta-progamming","meta-programming"],["metacharater","metacharacter"],["metacharaters","metacharacters"],["metalic","metallic"],["metalurgic","metallurgic"],["metalurgical","metallurgical"],["metalurgy","metallurgy"],["metamorphysis","metamorphosis"],["metapackge","metapackage"],["metapackges","metapackages"],["metaphore","metaphor"],["metaphoricial","metaphorical"],["metaprogamming","metaprogramming"],["metatdata","metadata"],["metdata","metadata"],["meterial","material"],["meterials","materials"],["meterologist","meteorologist"],["meterology","meteorology"],["methaphor","metaphor"],["methaphors","metaphors"],["methd","method"],["methdos","methods"],["methds","methods"],["methid","method"],["methids","methods"],["methjod","method"],["methodd","method"],["methode","method"],["methoden","methods"],["methodss","methods"],["methon","method"],["methons","methods"],["methot","method"],["methots","methods"],["metifor","metaphor"],["metifors","metaphors"],["metion","mention"],["metioned","mentioned"],["metiphor","metaphor"],["metiphors","metaphors"],["metod","method"],["metodologies","methodologies"],["metodology","methodology"],["metods","methods"],["metrig","metric"],["metrigal","metrical"],["metrigs","metrics"],["mey","may"],["meybe","maybe"],["mezmorise","mesmerise"],["mezmorised","mesmerised"],["mezmoriser","mesmeriser"],["mezmorises","mesmerises"],["mezmorising","mesmerising"],["mezmorize","mesmerize"],["mezmorized","mesmerized"],["mezmorizer","mesmerizer"],["mezmorizes","mesmerizes"],["mezmorizing","mesmerizing"],["miagic","magic"],["miagical","magical"],["mial","mail"],["mices","mice"],["Michagan","Michigan"],["micorcode","microcode"],["micorcodes","microcodes"],["Micorsoft","Microsoft"],["micoscope","microscope"],["micoscopes","microscopes"],["micoscopic","microscopic"],["micoscopies","microscopies"],["micoscopy","microscopy"],["Micosoft","Microsoft"],["micrcontroller","microcontroller"],["micrcontrollers","microcontrollers"],["microcontroler","microcontroller"],["microcontrolers","microcontrollers"],["Microfost","Microsoft"],["microntroller","microcontroller"],["microntrollers","microcontrollers"],["microoseconds","microseconds"],["micropone","microphone"],["micropones","microphones"],["microprocesspr","microprocessor"],["microprocessprs","microprocessors"],["microseond","microsecond"],["microseonds","microseconds"],["Microsft","Microsoft"],["microship","microchip"],["microships","microchips"],["Microsof","Microsoft"],["Microsofot","Microsoft"],["Micrsft","Microsoft"],["Micrsoft","Microsoft"],["middlware","middleware"],["midevil","medieval"],["midified","modified"],["midpints","midpoints"],["midpiont","midpoint"],["midpionts","midpoints"],["midpont","midpoint"],["midponts","midpoints"],["mige","midge"],["miges","midges"],["migh","might"],["migrateable","migratable"],["migth","might"],["miht","might"],["miinimisation","minimisation"],["miinimise","minimise"],["miinimised","minimised"],["miinimises","minimises"],["miinimising","minimising"],["miinimization","minimization"],["miinimize","minimize"],["miinimized","minimized"],["miinimizes","minimizes"],["miinimizing","minimizing"],["miinimum","minimum"],["mikrosecond","microsecond"],["mikroseconds","microseconds"],["milage","mileage"],["milages","mileages"],["mileau","milieu"],["milennia","millennia"],["milennium","millennium"],["mileu","milieu"],["miliary","military"],["milicious","malicious"],["miliciousally","maliciously"],["miliciously","maliciously"],["milicous","malicious"],["milicousally","maliciously"],["milicously","maliciously"],["miligram","milligram"],["milimeter","millimeter"],["milimeters","millimeters"],["milimetre","millimetre"],["milimetres","millimetres"],["milimiters","millimeters"],["milion","million"],["miliraty","military"],["milisecond","millisecond"],["miliseconds","milliseconds"],["milisecons","milliseconds"],["milivolts","millivolts"],["milktoast","milquetoast"],["milktoasts","milquetoasts"],["milleneum","millennium"],["millenia","millennia"],["millenial","millennial"],["millenialism","millennialism"],["millenials","millennials"],["millenium","millennium"],["millepede","millipede"],["milliescond","millisecond"],["milliesconds","milliseconds"],["millimiter","millimeter"],["millimiters","millimeters"],["millimitre","millimetre"],["millimitres","millimetres"],["millioniare","millionaire"],["millioniares","millionaires"],["millisencond","millisecond"],["millisenconds","milliseconds"],["milliseond","millisecond"],["milliseonds","milliseconds"],["millitant","militant"],["millitary","military"],["millon","million"],["millsecond","millisecond"],["millseconds","milliseconds"],["millsencond","millisecond"],["millsenconds","milliseconds"],["miltary","military"],["miltisite","multisite"],["milyew","milieu"],["mimach","mismatch"],["mimachd","mismatched"],["mimached","mismatched"],["mimaches","mismatches"],["mimaching","mismatching"],["mimatch","mismatch"],["mimatchd","mismatched"],["mimatched","mismatched"],["mimatches","mismatches"],["mimatching","mismatching"],["mimicing","mimicking"],["mimick","mimic"],["mimicks","mimics"],["mimimal","minimal"],["mimimum","minimum"],["mimimun","minimum"],["miminal","minimal"],["miminally","minimally"],["miminaly","minimally"],["miminise","minimise"],["miminised","minimised"],["miminises","minimises"],["miminising","minimising"],["miminize","minimize"],["miminized","minimized"],["miminizes","minimizes"],["miminizing","minimizing"],["mimmick","mimic"],["mimmicked","mimicked"],["mimmicking","mimicking"],["mimmics","mimics"],["minature","miniature"],["minerial","mineral"],["MingGW","MinGW"],["minimam","minimum"],["minimial","minimal"],["minimium","minimum"],["minimsation","minimisation"],["minimse","minimise"],["minimsed","minimised"],["minimses","minimises"],["minimsing","minimising"],["minimumm","minimum"],["minimumn","minimum"],["minimun","minimum"],["minimzation","minimization"],["minimze","minimize"],["minimzed","minimized"],["minimzes","minimizes"],["minimzing","minimizing"],["mininal","minimal"],["mininise","minimise"],["mininised","minimised"],["mininises","minimises"],["mininising","minimising"],["mininize","minimize"],["mininized","minimized"],["mininizes","minimizes"],["mininizing","minimizing"],["mininum","minimum"],["miniscule","minuscule"],["miniscully","minusculely"],["miniture","miniature"],["minium","minimum"],["miniums","minimums"],["miniumum","minimum"],["minmal","minimal"],["minmum","minimum"],["minnimum","minimum"],["minnimums","minimums"],["minsitry","ministry"],["minstries","ministries"],["minstry","ministry"],["minum","minimum"],["minumum","minimum"],["minuscle","minuscule"],["minuts","minutes"],["miplementation","implementation"],["mirconesia","micronesia"],["mircophone","microphone"],["mircophones","microphones"],["mircoscope","microscope"],["mircoscopes","microscopes"],["mircoservice","microservice"],["mircoservices","microservices"],["mircosoft","Microsoft"],["mirgate","migrate"],["mirgated","migrated"],["mirgates","migrates"],["mirometer","micrometer"],["mirometers","micrometers"],["mirored","mirrored"],["miroring","mirroring"],["mirorr","mirror"],["mirorred","mirrored"],["mirorring","mirroring"],["mirorrs","mirrors"],["mirro","mirror"],["mirroed","mirrored"],["mirrorn","mirror"],["mirrorred","mirrored"],["mis-alignement","misalignment"],["mis-alignment","misalignment"],["mis-intepret","mis-interpret"],["mis-intepreted","mis-interpreted"],["mis-match","mismatch"],["misalignement","misalignment"],["misalinged","misaligned"],["misbehaive","misbehave"],["miscallenous","miscellaneous"],["misceancellous","miscellaneous"],["miscelaneous","miscellaneous"],["miscellanious","miscellaneous"],["miscellanous","miscellaneous"],["miscelleneous","miscellaneous"],["mischeivous","mischievous"],["mischevious","mischievous"],["mischevus","mischievous"],["mischevusly","mischievously"],["mischieveous","mischievous"],["mischieveously","mischievously"],["mischievious","mischievous"],["misconfiged","misconfigured"],["Miscrosoft","Microsoft"],["misdameanor","misdemeanor"],["misdameanors","misdemeanors"],["misdemenor","misdemeanor"],["misdemenors","misdemeanors"],["miselaneous","miscellaneous"],["miselaneously","miscellaneously"],["misellaneous","miscellaneous"],["misellaneously","miscellaneously"],["misformed","malformed"],["misfourtunes","misfortunes"],["misile","missile"],["mising","missing"],["misintepret","misinterpret"],["misintepreted","misinterpreted"],["misinterpert","misinterpret"],["misinterperted","misinterpreted"],["misinterperting","misinterpreting"],["misinterperts","misinterprets"],["misinterprett","misinterpret"],["misinterpretted","misinterpreted"],["misisng","missing"],["mismach","mismatch"],["mismached","mismatched"],["mismaches","mismatches"],["mismaching","mismatching"],["mismactch","mismatch"],["mismatchd","mismatched"],["mismatich","mismatch"],["Misouri","Missouri"],["mispell","misspell"],["mispelled","misspelled"],["mispelling","misspelling"],["mispellings","misspellings"],["mispelt","misspelt"],["mispronounciation","mispronunciation"],["misquito","mosquito"],["misquitos","mosquitos"],["missable","miscible"],["missconfiguration","misconfiguration"],["missconfigure","misconfigure"],["missconfigured","misconfigured"],["missconfigures","misconfigures"],["missconfiguring","misconfiguring"],["misscounted","miscounted"],["missen","mizzen"],["missign","missing"],["missingassignement","missingassignment"],["missings","missing"],["Missisipi","Mississippi"],["Missisippi","Mississippi"],["missle","missile"],["missleading","misleading"],["missletow","mistletoe"],["missmanaged","mismanaged"],["missmatch","mismatch"],["missmatchd","mismatched"],["missmatched","mismatched"],["missmatches","mismatches"],["missmatching","mismatching"],["missonary","missionary"],["misspel","misspell"],["misssing","missing"],["misstake","mistake"],["misstaken","mistaken"],["misstakes","mistakes"],["misstype","mistype"],["misstypes","mistypes"],["missunderstood","misunderstood"],["missuse","misuse"],["missused","misused"],["missusing","misusing"],["mistatch","mismatch"],["mistatchd","mismatched"],["mistatched","mismatched"],["mistatches","mismatches"],["mistatching","mismatching"],["misteek","mystique"],["misteeks","mystiques"],["misterious","mysterious"],["mistery","mystery"],["misteryous","mysterious"],["mistic","mystic"],["mistical","mystical"],["mistics","mystics"],["mistmatch","mismatch"],["mistmatched","mismatched"],["mistmatches","mismatches"],["mistmatching","mismatching"],["mistro","maestro"],["mistros","maestros"],["mistrow","maestro"],["mistrows","maestros"],["misue","misuse"],["misued","misused"],["misuing","misusing"],["miticate","mitigate"],["miticated","mitigated"],["miticateing","mitigating"],["miticates","mitigates"],["miticating","mitigating"],["miticator","mitigator"],["mittigate","mitigate"],["miximum","maximum"],["mixted","mixed"],["mixure","mixture"],["mjor","major"],["mkae","make"],["mkaes","makes"],["mkaing","making"],["mke","make"],["mkea","make"],["mmaped","mapped"],["mmatching","matching"],["mmbers","members"],["mmnemonic","mnemonic"],["mnay","many"],["mobify","modify"],["mocrochip","microchip"],["mocrochips","microchips"],["mocrocode","microcode"],["mocrocodes","microcodes"],["mocrocontroller","microcontroller"],["mocrocontrollers","microcontrollers"],["mocrophone","microphone"],["mocrophones","microphones"],["mocroprocessor","microprocessor"],["mocroprocessors","microprocessors"],["mocrosecond","microsecond"],["mocroseconds","microseconds"],["Mocrosoft","Microsoft"],["mocule","module"],["mocules","modules"],["moddel","model"],["moddeled","modeled"],["moddelled","modelled"],["moddels","models"],["modee","mode"],["modelinng","modeling"],["modell","model"],["modellinng","modelling"],["modernination","modernization"],["moderninations","modernizations"],["moderninationz","modernizations"],["modernizationz","modernizations"],["modesettting","modesetting"],["modeul","module"],["modeuls","modules"],["modfel","model"],["modfiable","modifiable"],["modfication","modification"],["modfications","modifications"],["modfide","modified"],["modfided","modified"],["modfider","modifier"],["modfiders","modifiers"],["modfides","modifies"],["modfied","modified"],["modfieid","modified"],["modfieir","modifier"],["modfieirs","modifiers"],["modfieis","modifies"],["modfier","modifier"],["modfiers","modifiers"],["modfies","modifies"],["modfifiable","modifiable"],["modfification","modification"],["modfifications","modifications"],["modfified","modified"],["modfifier","modifier"],["modfifiers","modifiers"],["modfifies","modifies"],["modfify","modify"],["modfifying","modifying"],["modfiiable","modifiable"],["modfiication","modification"],["modfiications","modifications"],["modfitied","modified"],["modfitier","modifier"],["modfitiers","modifiers"],["modfities","modifies"],["modfity","modify"],["modfitying","modifying"],["modfiy","modify"],["modfiying","modifying"],["modfy","modify"],["modfying","modifying"],["modications","modifications"],["modidfication","modification"],["modidfications","modifications"],["modidfied","modified"],["modidfier","modifier"],["modidfiers","modifiers"],["modidfies","modifies"],["modidfy","modify"],["modidfying","modifying"],["modifable","modifiable"],["modifaction","modification"],["modifactions","modifications"],["modifation","modification"],["modifations","modifications"],["modifcation","modification"],["modifcations","modifications"],["modifciation","modification"],["modifciations","modifications"],["modifcication","modification"],["modifcications","modifications"],["modifdied","modified"],["modifdy","modify"],["modifed","modified"],["modifer","modifier"],["modifers","modifiers"],["modifes","modifies"],["modiffer","modifier"],["modiffers","modifiers"],["modifiation","modification"],["modifiations","modifications"],["modificatioon","modification"],["modificatioons","modifications"],["modificaton","modification"],["modificatons","modifications"],["modifid","modified"],["modifified","modified"],["modifify","modify"],["modifing","modifying"],["modifires","modifiers"],["modifiy","modify"],["modifiying","modifying"],["modifiyng","modifying"],["modifled","modified"],["modifler","modifier"],["modiflers","modifiers"],["modift","modify"],["modifty","modify"],["modifu","modify"],["modifuable","modifiable"],["modifued","modified"],["modifx","modify"],["modifyable","modifiable"],["modiration","moderation"],["modle","model"],["modlue","module"],["modprobbing","modprobing"],["modprobeing","modprobing"],["modtified","modified"],["modue","module"],["moduel","module"],["moduels","modules"],["moduile","module"],["modukles","modules"],["modul","module"],["modules's","modules'"],["moduless","modules"],["modulie","module"],["modulu","modulo"],["modulues","modules"],["modyfy","modify"],["moent","moment"],["moeny","money"],["mofdified","modified"],["mofification","modification"],["mofified","modified"],["mofifies","modifies"],["mofify","modify"],["mohammedan","muslim"],["mohammedans","muslims"],["moint","mount"],["mointor","monitor"],["mointored","monitored"],["mointoring","monitoring"],["mointors","monitors"],["moleclues","molecules"],["momement","moment"],["momementarily","momentarily"],["momements","moments"],["momemtarily","momentarily"],["momemtary","momentary"],["momemtn","moment"],["momentarely","momentarily"],["momento","memento"],["momery","memory"],["momoent","moment"],["momoment","moment"],["momomentarily","momentarily"],["momoments","moments"],["momory","memory"],["monarkey","monarchy"],["monarkeys","monarchies"],["monarkies","monarchies"],["monestaries","monasteries"],["monestic","monastic"],["monickers","monikers"],["monitary","monetary"],["moniter","monitor"],["monitoing","monitoring"],["monkies","monkeys"],["monochorome","monochrome"],["monochromo","monochrome"],["monocrome","monochrome"],["monolite","monolithic"],["monontonicity","monotonicity"],["monopace","monospace"],["monotir","monitor"],["monotired","monitored"],["monotiring","monitoring"],["monotirs","monitors"],["monsday","Monday"],["Monserrat","Montserrat"],["monstrum","monster"],["montains","mountains"],["montaj","montage"],["montajes","montages"],["montanous","mountainous"],["monthe","month"],["monthes","months"],["montly","monthly"],["Montnana","Montana"],["monts","months"],["montypic","monotypic"],["moodify","modify"],["moounting","mounting"],["mopdule","module"],["mopre","more"],["mor","more"],["mordern","modern"],["morever","moreover"],["morg","morgue"],["morgage","mortgage"],["morges","morgues"],["morgs","morgues"],["morisette","morissette"],["mormalise","normalise"],["mormalised","normalised"],["mormalises","normalises"],["mormalize","normalize"],["mormalized","normalized"],["mormalizes","normalizes"],["morrisette","morissette"],["morroccan","moroccan"],["morrocco","morocco"],["morroco","morocco"],["mortage","mortgage"],["morter","mortar"],["moslty","mostly"],["mostlky","mostly"],["mosture","moisture"],["mosty","mostly"],["moteef","motif"],["moteefs","motifs"],["moteur","motor"],["moteured","motored"],["moteuring","motoring"],["moteurs","motors"],["mothing","nothing"],["motiviated","motivated"],["motiviation","motivation"],["motononic","monotonic"],["motoroloa","motorola"],["moudle","module"],["moudule","module"],["mountian","mountain"],["mountpiont","mountpoint"],["mountpionts","mountpoints"],["mouspointer","mousepointer"],["moutn","mount"],["moutned","mounted"],["moutning","mounting"],["moutnpoint","mountpoint"],["moutnpoints","mountpoints"],["moutns","mounts"],["mouvement","movement"],["mouvements","movements"],["movebackwrd","movebackward"],["moveble","movable"],["movemement","movement"],["movemements","movements"],["movememnt","movement"],["movememnts","movements"],["movememt","movement"],["movememts","movements"],["movemet","movement"],["movemets","movements"],["movemment","movement"],["movemments","movements"],["movemnet","movement"],["movemnets","movements"],["movemnt","movement"],["movemnts","movements"],["movment","movement"],["moziila","Mozilla"],["mozila","Mozilla"],["mozzilla","mozilla"],["mroe","more"],["msbild","MSBuild"],["msbilds","MSBuild's"],["msbuid","MSBuild"],["msbuids","MSBuild's"],["msbuld","MSBuild"],["msbulds","MSBuild's"],["msbulid","MSBuild"],["msbulids","MSBuild's"],["mssing","missing"],["msssge","message"],["mthod","method"],["mtuually","mutually"],["mucuous","mucous"],["muder","murder"],["mudering","murdering"],["mudule","module"],["mudules","modules"],["muext","mutex"],["muiltiple","multiple"],["muiltiples","multiples"],["muliple","multiple"],["muliples","multiples"],["mulithread","multithread"],["mulitiplier","multiplier"],["mulitipliers","multipliers"],["mulitpart","multipart"],["mulitpath","multipath"],["mulitple","multiple"],["mulitplication","multiplication"],["mulitplicative","multiplicative"],["mulitplied","multiplied"],["mulitplier","multiplier"],["mulitpliers","multipliers"],["mulitply","multiply"],["multi-dimenional","multi-dimensional"],["multi-dimenionsal","multi-dimensional"],["multi-langual","multi-lingual"],["multi-presistion","multi-precision"],["multi-threded","multi-threaded"],["multible","multiple"],["multibye","multibyte"],["multicat","multicast"],["multicultralism","multiculturalism"],["multidimenional","multi-dimensional"],["multidimenionsal","multi-dimensional"],["multidimensinal","multidimensional"],["multidimension","multidimensional"],["multidimensionnal","multidimensional"],["multidimentionnal","multidimensional"],["multiecast","multicast"],["multifuction","multifunction"],["multilangual","multilingual"],["multile","multiple"],["multilpe","multiple"],["multipe","multiple"],["multipes","multiples"],["multipiler","multiplier"],["multipilers","multipliers"],["multipled","multiplied"],["multiplers","multipliers"],["multipliciaton","multiplication"],["multiplicites","multiplicities"],["multiplicty","multiplicity"],["multiplikation","multiplication"],["multipling","multiplying"],["multipllication","multiplication"],["multiplyed","multiplied"],["multipresistion","multiprecision"],["multipul","multiple"],["multipy","multiply"],["multipyling","multiplying"],["multithreded","multithreaded"],["multitute","multitude"],["multivriate","multivariate"],["multixsite","multisite"],["multline","multiline"],["multliple","multiple"],["multliples","multiples"],["multliplied","multiplied"],["multliplier","multiplier"],["multlipliers","multipliers"],["multliplies","multiplies"],["multliply","multiply"],["multliplying","multiplying"],["multple","multiple"],["multples","multiples"],["multplied","multiplied"],["multplier","multiplier"],["multpliers","multipliers"],["multplies","multiplies"],["multply","multiply"],["multplying","multiplying"],["multy","multi"],["multy-thread","multithread"],["mumber","number"],["mumbers","numbers"],["munbers","numbers"],["muncipalities","municipalities"],["muncipality","municipality"],["municiple","municipal"],["munnicipality","municipality"],["munute","minute"],["murr","myrrh"],["muscial","musical"],["muscician","musician"],["muscicians","musicians"],["musn't","mustn't"],["must't","mustn't"],["mustator","mutator"],["muste","must"],["mutablity","mutability"],["mutbale","mutable"],["mutch","much"],["mutches","matches"],["mutecies","mutexes"],["mutexs","mutexes"],["muti","multi"],["muticast","multicast"],["mutices","mutexes"],["mutilcast","multicast"],["mutiliated","mutilated"],["mutimarked","multimarked"],["mutipath","multipath"],["mutiple","multiple"],["mutiply","multiply"],["mutli","multi"],["mutli-threaded","multi-threaded"],["mutlipart","multipart"],["mutliple","multiple"],["mutliples","multiples"],["mutliplication","multiplication"],["mutliplicites","multiplicities"],["mutliplier","multiplier"],["mutlipliers","multipliers"],["mutliply","multiply"],["mutully","mutually"],["mutux","mutex"],["mutuxes","mutexes"],["mutuxs","mutexes"],["muyst","must"],["myabe","maybe"],["mybe","maybe"],["myitereator","myiterator"],["myraid","myriad"],["mysef","myself"],["mysefl","myself"],["mysekf","myself"],["myselfe","myself"],["myselfes","myself"],["myselv","myself"],["myselve","myself"],["myselves","myself"],["myslef","myself"],["mysogynist","misogynist"],["mysogyny","misogyny"],["mysterous","mysterious"],["mystql","mysql"],["mystrow","maestro"],["mystrows","maestros"],["Mythraic","Mithraic"],["myu","my"],["nadly","badly"],["nagative","negative"],["nagatively","negatively"],["nagatives","negatives"],["nagivation","navigation"],["naieve","naive"],["nam","name"],["namaed","named"],["namaes","names"],["nameing","naming"],["namemespace","namespace"],["namepace","namespace"],["namepsace","namespace"],["namepsaces","namespaces"],["namesapce","namespace"],["namesapced","namespaced"],["namesapces","namespaces"],["namess","names"],["namesspaces","namespaces"],["namme","name"],["namne","name"],["namned","named"],["namnes","names"],["namnespace","namespace"],["namnespaces","namespaces"],["nams","names"],["nane","name"],["nanosencond","nanosecond"],["nanosenconds","nanoseconds"],["nanoseond","nanosecond"],["nanoseonds","nanoseconds"],["Naploeon","Napoleon"],["Napolean","Napoleon"],["Napoleonian","Napoleonic"],["nasted","nested"],["nasting","nesting"],["nastly","nasty"],["nastyness","nastiness"],["natched","matched"],["natches","matches"],["nativelyx","natively"],["natrual","natural"],["naturaly","naturally"],["naturely","naturally"],["naturual","natural"],["naturually","naturally"],["natvigation","navigation"],["navagate","navigate"],["navagating","navigating"],["navagation","navigation"],["navagitation","navigation"],["naviagte","navigate"],["naviagted","navigated"],["naviagtes","navigates"],["naviagting","navigating"],["naviagtion","navigation"],["navitvely","natively"],["navtive","native"],["navtives","natives"],["naxima","maxima"],["naximal","maximal"],["naximum","maximum"],["Nazereth","Nazareth"],["nclude","include"],["ndoe","node"],["ndoes","nodes"],["neady","needy"],["neagtive","negative"],["neares","nearest"],["nearset","nearest"],["necassery","necessary"],["necassry","necessary"],["necause","because"],["neccecarily","necessarily"],["neccecary","necessary"],["neccesarily","necessarily"],["neccesary","necessary"],["neccessarily","necessarily"],["neccessarry","necessary"],["neccessary","necessary"],["neccessities","necessities"],["neccessity","necessity"],["neccisary","necessary"],["neccsessary","necessary"],["necesarily","necessarily"],["necesarrily","necessarily"],["necesarry","necessary"],["necesary","necessary"],["necessaery","necessary"],["necessairly","necessarily"],["necessar","necessary"],["necessarilly","necessarily"],["necessarly","necessarily"],["necessarry","necessary"],["necessaryly","necessarily"],["necessay","necessary"],["necesserily","necessarily"],["necessery","necessary"],["necessesary","necessary"],["necessiate","necessitate"],["nechanism","mechanism"],["necssary","necessary"],["nedd","need"],["nedded","needed"],["neded","needed"],["nedia","media"],["nedium","medium"],["nediums","mediums"],["nedle","needle"],["neds","needs"],["needeed","needed"],["neeed","need"],["neeeded","needed"],["neeeding","needing"],["neeedle","needle"],["neeedn't","needn't"],["neeeds","needs"],["nees","needs"],["neesd","needs"],["neesds","needs"],["neested","nested"],["neesting","nesting"],["negaive","negative"],["negarive","negative"],["negatiotiable","negotiable"],["negatiotiate","negotiate"],["negatiotiated","negotiated"],["negatiotiates","negotiates"],["negatiotiating","negotiating"],["negatiotiation","negotiation"],["negatiotiations","negotiations"],["negatiotiator","negotiator"],["negatiotiators","negotiators"],["negativ","negative"],["negatve","negative"],["negible","negligible"],["negitiable","negotiable"],["negitiate","negotiate"],["negitiated","negotiated"],["negitiates","negotiates"],["negitiating","negotiating"],["negitiation","negotiation"],["negitiations","negotiations"],["negitiator","negotiator"],["negitiators","negotiators"],["negitive","negative"],["neglible","negligible"],["negligable","negligible"],["negligble","negligible"],["negoable","negotiable"],["negoate","negotiate"],["negoated","negotiated"],["negoates","negotiates"],["negoatiable","negotiable"],["negoatiate","negotiate"],["negoatiated","negotiated"],["negoatiates","negotiates"],["negoatiating","negotiating"],["negoatiation","negotiation"],["negoatiations","negotiations"],["negoatiator","negotiator"],["negoatiators","negotiators"],["negoating","negotiating"],["negoation","negotiation"],["negoations","negotiations"],["negoator","negotiator"],["negoators","negotiators"],["negociable","negotiable"],["negociate","negotiate"],["negociated","negotiated"],["negociates","negotiates"],["negociating","negotiating"],["negociation","negotiation"],["negociations","negotiations"],["negociator","negotiator"],["negociators","negotiators"],["negogtiable","negotiable"],["negogtiate","negotiate"],["negogtiated","negotiated"],["negogtiates","negotiates"],["negogtiating","negotiating"],["negogtiation","negotiation"],["negogtiations","negotiations"],["negogtiator","negotiator"],["negogtiators","negotiators"],["negoitable","negotiable"],["negoitate","negotiate"],["negoitated","negotiated"],["negoitates","negotiates"],["negoitating","negotiating"],["negoitation","negotiation"],["negoitations","negotiations"],["negoitator","negotiator"],["negoitators","negotiators"],["negoptionsotiable","negotiable"],["negoptionsotiate","negotiate"],["negoptionsotiated","negotiated"],["negoptionsotiates","negotiates"],["negoptionsotiating","negotiating"],["negoptionsotiation","negotiation"],["negoptionsotiations","negotiations"],["negoptionsotiator","negotiator"],["negoptionsotiators","negotiators"],["negosiable","negotiable"],["negosiate","negotiate"],["negosiated","negotiated"],["negosiates","negotiates"],["negosiating","negotiating"],["negosiation","negotiation"],["negosiations","negotiations"],["negosiator","negotiator"],["negosiators","negotiators"],["negotable","negotiable"],["negotaiable","negotiable"],["negotaiate","negotiate"],["negotaiated","negotiated"],["negotaiates","negotiates"],["negotaiating","negotiating"],["negotaiation","negotiation"],["negotaiations","negotiations"],["negotaiator","negotiator"],["negotaiators","negotiators"],["negotaible","negotiable"],["negotaite","negotiate"],["negotaited","negotiated"],["negotaites","negotiates"],["negotaiting","negotiating"],["negotaition","negotiation"],["negotaitions","negotiations"],["negotaitor","negotiator"],["negotaitors","negotiators"],["negotate","negotiate"],["negotated","negotiated"],["negotates","negotiates"],["negotatiable","negotiable"],["negotatiate","negotiate"],["negotatiated","negotiated"],["negotatiates","negotiates"],["negotatiating","negotiating"],["negotatiation","negotiation"],["negotatiations","negotiations"],["negotatiator","negotiator"],["negotatiators","negotiators"],["negotatible","negotiable"],["negotatie","negotiate"],["negotatied","negotiated"],["negotaties","negotiates"],["negotating","negotiating"],["negotation","negotiation"],["negotations","negotiations"],["negotatior","negotiator"],["negotatiors","negotiators"],["negotator","negotiator"],["negotators","negotiators"],["negothiable","negotiable"],["negothiate","negotiate"],["negothiated","negotiated"],["negothiates","negotiates"],["negothiating","negotiating"],["negothiation","negotiation"],["negothiations","negotiations"],["negothiator","negotiator"],["negothiators","negotiators"],["negotible","negotiable"],["negoticable","negotiable"],["negoticate","negotiate"],["negoticated","negotiated"],["negoticates","negotiates"],["negoticating","negotiating"],["negotication","negotiation"],["negotications","negotiations"],["negoticator","negotiator"],["negoticators","negotiators"],["negotinate","negotiate"],["negotioable","negotiable"],["negotioate","negotiate"],["negotioated","negotiated"],["negotioates","negotiates"],["negotioating","negotiating"],["negotioation","negotiation"],["negotioations","negotiations"],["negotioator","negotiator"],["negotioators","negotiators"],["negotioble","negotiable"],["negotion","negotiation"],["negotionable","negotiable"],["negotionate","negotiate"],["negotionated","negotiated"],["negotionates","negotiates"],["negotionating","negotiating"],["negotionation","negotiation"],["negotionations","negotiations"],["negotionator","negotiator"],["negotionators","negotiators"],["negotions","negotiations"],["negotiotable","negotiable"],["negotiotate","negotiate"],["negotiotated","negotiated"],["negotiotates","negotiates"],["negotiotating","negotiating"],["negotiotation","negotiation"],["negotiotations","negotiations"],["negotiotator","negotiator"],["negotiotators","negotiators"],["negotiote","negotiate"],["negotioted","negotiated"],["negotiotes","negotiates"],["negotioting","negotiating"],["negotiotion","negotiation"],["negotiotions","negotiations"],["negotiotor","negotiator"],["negotiotors","negotiators"],["negotitable","negotiable"],["negotitae","negotiate"],["negotitaed","negotiated"],["negotitaes","negotiates"],["negotitaing","negotiating"],["negotitaion","negotiation"],["negotitaions","negotiations"],["negotitaor","negotiator"],["negotitaors","negotiators"],["negotitate","negotiate"],["negotitated","negotiated"],["negotitates","negotiates"],["negotitating","negotiating"],["negotitation","negotiation"],["negotitations","negotiations"],["negotitator","negotiator"],["negotitators","negotiators"],["negotite","negotiate"],["negotited","negotiated"],["negotites","negotiates"],["negotiting","negotiating"],["negotition","negotiation"],["negotitions","negotiations"],["negotitor","negotiator"],["negotitors","negotiators"],["negoziable","negotiable"],["negoziate","negotiate"],["negoziated","negotiated"],["negoziates","negotiates"],["negoziating","negotiating"],["negoziation","negotiation"],["negoziations","negotiations"],["negoziator","negotiator"],["negoziators","negotiators"],["negtive","negative"],["neibhbors","neighbors"],["neibhbours","neighbours"],["neibor","neighbor"],["neiborhood","neighborhood"],["neiborhoods","neighborhoods"],["neibors","neighbors"],["neigbhor","neighbor"],["neigbhorhood","neighborhood"],["neigbhorhoods","neighborhoods"],["neigbhors","neighbors"],["neigbhour","neighbour"],["neigbhours","neighbours"],["neigbor","neighbor"],["neigborhood","neighborhood"],["neigboring","neighboring"],["neigbors","neighbors"],["neigbourhood","neighbourhood"],["neighbar","neighbor"],["neighbarhood","neighborhood"],["neighbarhoods","neighborhoods"],["neighbaring","neighboring"],["neighbars","neighbors"],["neighbbor","neighbor"],["neighbborhood","neighborhood"],["neighbborhoods","neighborhoods"],["neighbboring","neighboring"],["neighbbors","neighbors"],["neighbeard","neighborhood"],["neighbeards","neighborhoods"],["neighbehood","neighborhood"],["neighbehoods","neighborhoods"],["neighbeing","neighboring"],["neighbeod","neighborhood"],["neighbeods","neighborhoods"],["neighbeor","neighbor"],["neighbeordhood","neighborhood"],["neighbeordhoods","neighborhoods"],["neighbeorhod","neighborhood"],["neighbeorhods","neighborhoods"],["neighbeorhood","neighborhood"],["neighbeorhoods","neighborhoods"],["neighbeors","neighbors"],["neighber","neighbor"],["neighbergh","neighbor"],["neighberghs","neighbors"],["neighberhhod","neighborhood"],["neighberhhods","neighborhoods"],["neighberhhood","neighborhood"],["neighberhhoods","neighborhoods"],["neighberhing","neighboring"],["neighberhod","neighborhood"],["neighberhodd","neighborhood"],["neighberhodds","neighborhoods"],["neighberhods","neighborhoods"],["neighberhood","neighborhood"],["neighberhooding","neighboring"],["neighberhoods","neighborhoods"],["neighberhoof","neighborhood"],["neighberhoofs","neighborhoods"],["neighberhoood","neighborhood"],["neighberhooods","neighborhoods"],["neighberhoor","neighbor"],["neighberhoors","neighbors"],["neighberhoud","neighborhood"],["neighberhouds","neighborhoods"],["neighbering","neighboring"],["neighbers","neighbors"],["neighbes","neighbors"],["neighbet","neighbor"],["neighbethood","neighborhood"],["neighbethoods","neighborhoods"],["neighbets","neighbors"],["neighbeuing","neighbouring"],["neighbeurgh","neighbour"],["neighbeurghs","neighbours"],["neighbeurhing","neighbouring"],["neighbeurhooding","neighbouring"],["neighbeurhoor","neighbour"],["neighbeurhoors","neighbours"],["neighbeus","neighbours"],["neighbeut","neighbour"],["neighbeuthood","neighbourhood"],["neighbeuthoods","neighbourhoods"],["neighbeuts","neighbours"],["neighbhor","neighbor"],["neighbhorhood","neighborhood"],["neighbhorhoods","neighborhoods"],["neighbhoring","neighboring"],["neighbhors","neighbors"],["neighboard","neighborhood"],["neighboards","neighborhoods"],["neighbohood","neighborhood"],["neighbohoods","neighborhoods"],["neighboing","neighboring"],["neighbood","neighborhood"],["neighboods","neighborhoods"],["neighboordhood","neighborhood"],["neighboordhoods","neighborhoods"],["neighboorhod","neighborhood"],["neighboorhods","neighborhoods"],["neighboorhood","neighborhood"],["neighboorhoods","neighborhoods"],["neighbooring","neighboring"],["neighborgh","neighbor"],["neighborghs","neighbors"],["neighborhhod","neighborhood"],["neighborhhods","neighborhoods"],["neighborhhood","neighborhood"],["neighborhhoods","neighborhoods"],["neighborhing","neighboring"],["neighborhod","neighborhood"],["neighborhodd","neighborhood"],["neighborhodds","neighborhoods"],["neighborhods","neighborhoods"],["neighborhooding","neighboring"],["neighborhoof","neighborhood"],["neighborhoofs","neighborhoods"],["neighborhoood","neighborhood"],["neighborhooods","neighborhoods"],["neighborhoor","neighbor"],["neighborhoors","neighbors"],["neighborhoud","neighborhood"],["neighborhouds","neighborhoods"],["neighbos","neighbors"],["neighbot","neighbor"],["neighbothood","neighborhood"],["neighbothoods","neighborhoods"],["neighbots","neighbors"],["neighbouing","neighbouring"],["neighbourgh","neighbour"],["neighbourghs","neighbours"],["neighbourhhod","neighbourhood"],["neighbourhhods","neighbourhoods"],["neighbourhhood","neighbourhood"],["neighbourhhoods","neighbourhoods"],["neighbourhing","neighbouring"],["neighbourhod","neighbourhood"],["neighbourhodd","neighbourhood"],["neighbourhodds","neighbourhoods"],["neighbourhods","neighbourhoods"],["neighbourhooding","neighbouring"],["neighbourhoof","neighbourhood"],["neighbourhoofs","neighbourhoods"],["neighbourhoood","neighbourhood"],["neighbourhooods","neighbourhoods"],["neighbourhoor","neighbour"],["neighbourhoors","neighbours"],["neighbourhoud","neighbourhood"],["neighbourhouds","neighbourhoods"],["neighbous","neighbours"],["neighbout","neighbour"],["neighbouthood","neighbourhood"],["neighbouthoods","neighbourhoods"],["neighbouts","neighbours"],["neighbr","neighbor"],["neighbrs","neighbors"],["neighbur","neighbor"],["neighburhood","neighborhood"],["neighburhoods","neighborhoods"],["neighburing","neighboring"],["neighburs","neighbors"],["neigher","neither"],["neighobr","neighbor"],["neighobrhood","neighborhood"],["neighobrhoods","neighborhoods"],["neighobring","neighboring"],["neighobrs","neighbors"],["neighor","neighbor"],["neighorhood","neighborhood"],["neighorhoods","neighborhoods"],["neighoring","neighboring"],["neighors","neighbors"],["neighour","neighbour"],["neighourhood","neighbourhood"],["neighourhoods","neighbourhoods"],["neighouring","neighbouring"],["neighours","neighbours"],["neighror","neighbour"],["neighrorhood","neighbourhood"],["neighrorhoods","neighbourhoods"],["neighroring","neighbouring"],["neighrors","neighbours"],["neighrour","neighbour"],["neighrourhood","neighbourhood"],["neighrourhoods","neighbourhoods"],["neighrouring","neighbouring"],["neighrours","neighbours"],["neight","neither"],["neightbor","neighbor"],["neightborhood","neighborhood"],["neightborhoods","neighborhoods"],["neightboring","neighboring"],["neightbors","neighbors"],["neightbour","neighbour"],["neightbourhood","neighbourhood"],["neightbourhoods","neighbourhoods"],["neightbouring","neighbouring"],["neightbours","neighbours"],["neighter","neither"],["neightobr","neighbor"],["neightobrhood","neighborhood"],["neightobrhoods","neighborhoods"],["neightobring","neighboring"],["neightobrs","neighbors"],["neiter","neither"],["nelink","netlink"],["nenviroment","environment"],["neolitic","neolithic"],["nerver","never"],["nescesaries","necessaries"],["nescesarily","necessarily"],["nescesarrily","necessarily"],["nescesarry","necessary"],["nescessarily","necessarily"],["nescessary","necessary"],["nesesarily","necessarily"],["nessary","necessary"],["nessasarily","necessarily"],["nessasary","necessary"],["nessecarilt","necessarily"],["nessecarily","necessarily"],["nessecarry","necessary"],["nessecary","necessary"],["nesseccarily","necessarily"],["nesseccary","necessary"],["nessesarily","necessarily"],["nessesary","necessary"],["nessessarily","necessarily"],["nessessary","necessary"],["nestin","nesting"],["nestwork","network"],["netacpe","netscape"],["netcape","netscape"],["nethods","methods"],["netiher","neither"],["netowrk","network"],["netowrks","networks"],["netscpe","netscape"],["netwplit","netsplit"],["netwrok","network"],["netwroked","networked"],["netwroks","networks"],["netwrork","network"],["neumeric","numeric"],["nevelope","envelope"],["nevelopes","envelopes"],["nevere","never"],["neveretheless","nevertheless"],["nevers","never"],["neverthless","nevertheless"],["newine","newline"],["newines","newlines"],["newletters","newsletters"],["nework","network"],["neworks","networks"],["newslines","newlines"],["newthon","newton"],["newtork","network"],["Newyorker","New Yorker"],["niear","near"],["niearest","nearest"],["niether","neither"],["nighbor","neighbor"],["nighborhood","neighborhood"],["nighboring","neighboring"],["nighlties","nightlies"],["nighlty","nightly"],["nightfa;;","nightfall"],["nightime","nighttime"],["nimutes","minutes"],["nineth","ninth"],["ninima","minima"],["ninimal","minimal"],["ninimum","minimum"],["ninjs","ninja"],["ninteenth","nineteenth"],["nither","neither"],["nknown","unknown"],["nkow","know"],["nkwo","know"],["nmae","name"],["nned","need"],["nneeded","needed"],["nnumber","number"],["no-overide","no-override"],["nodels","models"],["nodess","nodes"],["nodulated","modulated"],["nofified","notified"],["nofity","notify"],["nohypen","nohyphen"],["nomber","number"],["nombered","numbered"],["nombering","numbering"],["nombers","numbers"],["nomimal","nominal"],["non-alphanumunder","non-alphanumeric"],["non-asii","non-ascii"],["non-assiged","non-assigned"],["non-bloking","non-blocking"],["non-compleeted","non-completed"],["non-complient","non-compliant"],["non-corelated","non-correlated"],["non-existant","non-existent"],["non-exluded","non-excluded"],["non-indentended","non-indented"],["non-inmediate","non-immediate"],["non-inreractive","non-interactive"],["non-instnat","non-instant"],["non-meausure","non-measure"],["non-negatiotiable","non-negotiable"],["non-negatiotiated","non-negotiated"],["non-negativ","non-negative"],["non-negoable","non-negotiable"],["non-negoated","non-negotiated"],["non-negoatiable","non-negotiable"],["non-negoatiated","non-negotiated"],["non-negociable","non-negotiable"],["non-negociated","non-negotiated"],["non-negogtiable","non-negotiable"],["non-negogtiated","non-negotiated"],["non-negoitable","non-negotiable"],["non-negoitated","non-negotiated"],["non-negoptionsotiable","non-negotiable"],["non-negoptionsotiated","non-negotiated"],["non-negosiable","non-negotiable"],["non-negosiated","non-negotiated"],["non-negotable","non-negotiable"],["non-negotaiable","non-negotiable"],["non-negotaiated","non-negotiated"],["non-negotaible","non-negotiable"],["non-negotaited","non-negotiated"],["non-negotated","non-negotiated"],["non-negotatiable","non-negotiable"],["non-negotatiated","non-negotiated"],["non-negotatible","non-negotiable"],["non-negotatied","non-negotiated"],["non-negothiable","non-negotiable"],["non-negothiated","non-negotiated"],["non-negotible","non-negotiable"],["non-negoticable","non-negotiable"],["non-negoticated","non-negotiated"],["non-negotioable","non-negotiable"],["non-negotioated","non-negotiated"],["non-negotioble","non-negotiable"],["non-negotionable","non-negotiable"],["non-negotionated","non-negotiated"],["non-negotiotable","non-negotiable"],["non-negotiotated","non-negotiated"],["non-negotiote","non-negotiated"],["non-negotitable","non-negotiable"],["non-negotitaed","non-negotiated"],["non-negotitated","non-negotiated"],["non-negotited","non-negotiated"],["non-negoziable","non-negotiable"],["non-negoziated","non-negotiated"],["non-priviliged","non-privileged"],["non-referenced-counted","non-reference-counted"],["non-replacable","non-replaceable"],["non-replacalbe","non-replaceable"],["non-reproducable","non-reproducible"],["non-seperable","non-separable"],["non-trasparent","non-transparent"],["non-useful","useless"],["non-usefull","useless"],["non-virutal","non-virtual"],["nonbloking","non-blocking"],["noncombatents","noncombatants"],["noncontigous","non-contiguous"],["nonesense","nonsense"],["nonesensical","nonsensical"],["nonexistance","nonexistence"],["nonexistant","nonexistent"],["nonnegarive","nonnegative"],["nonneighboring","non-neighboring"],["nonsence","nonsense"],["nonsens","nonsense"],["nonseperable","non-separable"],["nonte","note"],["nontheless","nonetheless"],["noo","no"],["noone","no one"],["noralize","normalize"],["noralized","normalized"],["noramal","normal"],["noramalise","normalise"],["noramalised","normalised"],["noramalises","normalises"],["noramalising","normalising"],["noramalize","normalize"],["noramalized","normalized"],["noramalizes","normalizes"],["noramalizing","normalizing"],["noramals","normals"],["noraml","normal"],["norhern","northern"],["norifications","notifications"],["normailzation","normalization"],["normaized","normalized"],["normale","normal"],["normales","normals"],["normaly","normally"],["normalyl","normally"],["normalyly","normally"],["normalysed","normalised"],["normalyy","normally"],["normalyzation","normalization"],["normalyze","normalize"],["normalyzed","normalized"],["normlly","normally"],["normnal","normal"],["normol","normal"],["normolise","normalise"],["normolize","normalize"],["northen","northern"],["northereastern","northeastern"],["nortmally","normally"],["notabley","notably"],["notaion","notation"],["notaly","notably"],["notasion","notation"],["notatin","notation"],["noteable","notable"],["noteably","notably"],["noteboook","notebook"],["noteboooks","notebooks"],["noteriety","notoriety"],["notfication","notification"],["notfications","notifications"],["notfy","notify"],["noth","north"],["nothern","northern"],["nothign","nothing"],["nothigng","nothing"],["nothihg","nothing"],["nothin","nothing"],["nothind","nothing"],["nothink","nothing"],["noticable","noticeable"],["noticably","noticeably"],["notication","notification"],["notications","notifications"],["noticeing","noticing"],["noticiable","noticeable"],["noticible","noticeable"],["notifaction","notification"],["notifactions","notifications"],["notifcation","notification"],["notifcations","notifications"],["notifed","notified"],["notifer","notifier"],["notifes","notifies"],["notifiation","notification"],["notificaction","notification"],["notificaiton","notification"],["notificaitons","notifications"],["notificaton","notification"],["notificatons","notifications"],["notificiation","notification"],["notificiations","notifications"],["notifiy","notify"],["notifiying","notifying"],["notifycation","notification"],["notity","notify"],["notmalize","normalize"],["notmalized","normalized"],["notmutch","notmuch"],["notning","nothing"],["nott","not"],["nottaion","notation"],["nottaions","notations"],["notwhithstanding","notwithstanding"],["noveau","nouveau"],["novemeber","November"],["Novemer","November"],["Novermber","November"],["nowadys","nowadays"],["nowdays","nowadays"],["nowe","now"],["ntification","notification"],["nuber","number"],["nubering","numbering"],["nubmer","number"],["nubmers","numbers"],["nucular","nuclear"],["nuculear","nuclear"],["nuisanse","nuisance"],["nuissance","nuisance"],["nulk","null"],["Nullabour","Nullarbor"],["nulll","null"],["numbber","number"],["numbbered","numbered"],["numbbering","numbering"],["numbbers","numbers"],["numberal","numeral"],["numberals","numerals"],["numberic","numeric"],["numberous","numerous"],["numberr","number"],["numberred","numbered"],["numberring","numbering"],["numberrs","numbers"],["numberss","numbers"],["numbert","number"],["numbet","number"],["numbets","numbers"],["numbres","numbers"],["numearate","numerate"],["numearation","numeration"],["numeber","number"],["numebering","numbering"],["numebers","numbers"],["numebr","number"],["numebrs","numbers"],["numer","number"],["numeraotr","numerator"],["numerbering","numbering"],["numercial","numerical"],["numercially","numerically"],["numering","numbering"],["numers","numbers"],["nummber","number"],["nummbers","numbers"],["nummeric","numeric"],["numnber","number"],["numnbered","numbered"],["numnbering","numbering"],["numnbers","numbers"],["numner","number"],["numners","numbers"],["numver","number"],["numvers","numbers"],["nunber","number"],["nunbers","numbers"],["Nuremburg","Nuremberg"],["nusance","nuisance"],["nutritent","nutrient"],["nutritents","nutrients"],["nuturing","nurturing"],["nwe","new"],["nwo","now"],["o'caml","OCaml"],["oaram","param"],["obay","obey"],["obect","object"],["obediance","obedience"],["obediant","obedient"],["obejct","object"],["obejcted","objected"],["obejction","objection"],["obejctions","objections"],["obejctive","objective"],["obejctively","objectively"],["obejctives","objectives"],["obejcts","objects"],["obeject","object"],["obejection","objection"],["obejects","objects"],["oberflow","overflow"],["oberflowed","overflowed"],["oberflowing","overflowing"],["oberflows","overflows"],["oberv","observe"],["obervant","observant"],["obervation","observation"],["obervations","observations"],["oberve","observe"],["oberved","observed"],["oberver","observer"],["obervers","observers"],["oberves","observes"],["oberving","observing"],["obervs","observes"],["obeservation","observation"],["obeservations","observations"],["obeserve","observe"],["obeserved","observed"],["obeserver","observer"],["obeservers","observers"],["obeserves","observes"],["obeserving","observing"],["obession","obsession"],["obessions","obsessions"],["obgect","object"],["obgects","objects"],["obhect","object"],["obhectification","objectification"],["obhectifies","objectifies"],["obhectify","objectify"],["obhectifying","objectifying"],["obhecting","objecting"],["obhection","objection"],["obhects","objects"],["obious","obvious"],["obiously","obviously"],["obivous","obvious"],["obivously","obviously"],["objec","object"],["objecs","objects"],["objectss","objects"],["objejct","object"],["objekt","object"],["objet","object"],["objetc","object"],["objetcs","objects"],["objets","objects"],["objtain","obtain"],["objtained","obtained"],["objtains","obtains"],["objump","objdump"],["oblitque","oblique"],["obnject","object"],["obscur","obscure"],["obselete","obsolete"],["obseravtion","observation"],["obseravtions","observations"],["observ","observe"],["observered","observed"],["obsevrer","observer"],["obsevrers","observers"],["obsolate","obsolete"],["obsolesence","obsolescence"],["obsolite","obsolete"],["obsolited","obsoleted"],["obsolte","obsolete"],["obsolted","obsoleted"],["obssessed","obsessed"],["obstacal","obstacle"],["obstancles","obstacles"],["obstruced","obstructed"],["obsure","obscure"],["obtaiend","obtained"],["obtaiens","obtains"],["obtainig","obtaining"],["obtaion","obtain"],["obtaioned","obtained"],["obtaions","obtains"],["obtrain","obtain"],["obtrained","obtained"],["obtrains","obtains"],["obusing","abusing"],["obvioulsy","obviously"],["obvisious","obvious"],["obvisous","obvious"],["obvisously","obviously"],["obyect","object"],["obyekt","object"],["ocasion","occasion"],["ocasional","occasional"],["ocasionally","occasionally"],["ocasionaly","occasionally"],["ocasioned","occasioned"],["ocasions","occasions"],["ocassion","occasion"],["ocassional","occasional"],["ocassionally","occasionally"],["ocassionaly","occasionally"],["ocassioned","occasioned"],["ocassions","occasions"],["occaisionally","occasionally"],["occaison","occasion"],["occasinal","occasional"],["occasinally","occasionally"],["occasioanlly","occasionally"],["occasionaly","occasionally"],["occassion","occasion"],["occassional","occasional"],["occassionally","occasionally"],["occassionaly","occasionally"],["occassioned","occasioned"],["occassions","occasions"],["occational","occasional"],["occationally","occasionally"],["occcur","occur"],["occcured","occurred"],["occcurs","occurs"],["occour","occur"],["occoured","occurred"],["occouring","occurring"],["occourring","occurring"],["occours","occurs"],["occrrance","occurrence"],["occrrances","occurrences"],["occrred","occurred"],["occrring","occurring"],["occsionally","occasionally"],["occucence","occurrence"],["occucences","occurrences"],["occulusion","occlusion"],["occuped","occupied"],["occupided","occupied"],["occuracy","accuracy"],["occurance","occurrence"],["occurances","occurrences"],["occurately","accurately"],["occurded","occurred"],["occured","occurred"],["occurence","occurrence"],["occurences","occurrences"],["occures","occurs"],["occuring","occurring"],["occurr","occur"],["occurrance","occurrence"],["occurrances","occurrences"],["occurrencs","occurrences"],["occurrs","occurs"],["oclock","o'clock"],["ocntext","context"],["ocorrence","occurrence"],["ocorrences","occurrences"],["octect","octet"],["octects","octets"],["octohedra","octahedra"],["octohedral","octahedral"],["octohedron","octahedron"],["ocuntries","countries"],["ocuntry","country"],["ocupied","occupied"],["ocupies","occupies"],["ocupy","occupy"],["ocupying","occupying"],["ocur","occur"],["ocurr","occur"],["ocurrance","occurrence"],["ocurred","occurred"],["ocurrence","occurrence"],["ocurrences","occurrences"],["ocurring","occurring"],["ocurrred","occurred"],["ocurrs","occurs"],["odly","oddly"],["ody","body"],["oen","one"],["ofcource","of course"],["offcers","officers"],["offcial","official"],["offcially","officially"],["offcials","officials"],["offerd","offered"],["offereings","offerings"],["offest","offset"],["offests","offsets"],["offfence","offence"],["offfences","offences"],["offfense","offense"],["offfenses","offenses"],["offfset","offset"],["offfsets","offsets"],["offic","office"],["offical","official"],["offically","officially"],["officals","officials"],["officaly","officially"],["officeal","official"],["officeally","officially"],["officeals","officials"],["officealy","officially"],["officialy","officially"],["offloded","offloaded"],["offred","offered"],["offsence","offence"],["offsense","offense"],["offsenses","offenses"],["offser","offset"],["offseted","offsetted"],["offseting","offsetting"],["offsetp","offset"],["offsett","offset"],["offstets","offsets"],["offten","often"],["oficial","official"],["oficially","officially"],["ofmodule","of module"],["ofo","of"],["ofrom","from"],["ofsetted","offsetted"],["ofsset","offset"],["oftenly","often"],["ofthe","of the"],["oherwise","otherwise"],["ohter","other"],["ohters","others"],["ohterwise","otherwise"],["oigin","origin"],["oiginal","original"],["oiginally","originally"],["oiginals","originals"],["oiginating","originating"],["oigins","origins"],["ois","is"],["ojbect","object"],["oje","one"],["oject","object"],["ojection","objection"],["ojective","objective"],["ojects","objects"],["ojekts","objects"],["okat","okay"],["oldes","oldest"],["olny","only"],["olt","old"],["olther","other"],["oly","only"],["omision","omission"],["omited","omitted"],["omiting","omitting"],["omitt","omit"],["omlette","omelette"],["ommision","omission"],["ommission","omission"],["ommit","omit"],["ommited","omitted"],["ommiting","omitting"],["ommits","omits"],["ommitted","omitted"],["ommitting","omitting"],["omniverous","omnivorous"],["omniverously","omnivorously"],["omplementaion","implementation"],["omplementation","implementation"],["omre","more"],["onchage","onchange"],["ond","one"],["one-dimenional","one-dimensional"],["one-dimenionsal","one-dimensional"],["onece","once"],["onedimenional","one-dimensional"],["onedimenionsal","one-dimensional"],["oneliners","one-liners"],["oneyway","oneway"],["ongly","only"],["onl","only"],["onliene","online"],["onlly","only"],["onlye","only"],["onlyonce","only once"],["onoly","only"],["onother","another"],["ons","owns"],["onself","oneself"],["ontain","contain"],["ontained","contained"],["ontainer","container"],["ontainers","containers"],["ontainging","containing"],["ontaining","containing"],["ontainor","container"],["ontainors","containers"],["ontains","contains"],["ontext","context"],["onthe","on the"],["ontop","on top"],["ontrolled","controlled"],["onw","own"],["onwed","owned"],["onwer","owner"],["onwership","ownership"],["onwing","owning"],["onws","owns"],["onyl","only"],["oommits","commits"],["ooutput","output"],["ooutputs","outputs"],["opactity","opacity"],["opactiy","opacity"],["opacy","opacity"],["opague","opaque"],["opatque","opaque"],["opbject","object"],["opbjective","objective"],["opbjects","objects"],["opeaaration","operation"],["opeaarations","operations"],["opeabcration","operation"],["opeabcrations","operations"],["opearand","operand"],["opearands","operands"],["opearate","operate"],["opearates","operates"],["opearating","operating"],["opearation","operation"],["opearations","operations"],["opearatios","operations"],["opearator","operator"],["opearators","operators"],["opearion","operation"],["opearions","operations"],["opearios","operations"],["opeariton","operation"],["opearitons","operations"],["opearitos","operations"],["opearnd","operand"],["opearnds","operands"],["opearor","operator"],["opearors","operators"],["opearte","operate"],["opearted","operated"],["opeartes","operates"],["opearting","operating"],["opeartion","operation"],["opeartions","operations"],["opeartios","operations"],["opeartor","operator"],["opeartors","operators"],["opeate","operate"],["opeates","operates"],["opeation","operation"],["opeational","operational"],["opeations","operations"],["opeatios","operations"],["opeator","operator"],["opeators","operators"],["opeatror","operator"],["opeatrors","operators"],["opeg","open"],["opeging","opening"],["opeing","opening"],["opeinging","opening"],["opeings","openings"],["opem","open"],["opemed","opened"],["opemess","openness"],["opeming","opening"],["opems","opens"],["openbrower","openbrowser"],["opended","opened"],["openeing","opening"],["openend","opened"],["openened","opened"],["openening","opening"],["openess","openness"],["openin","opening"],["openned","opened"],["openning","opening"],["operaand","operand"],["operaands","operands"],["operaion","operation"],["operaions","operations"],["operaiton","operation"],["operandes","operands"],["operaror","operator"],["operatation","operation"],["operatations","operations"],["operater","operator"],["operatings","operating"],["operatio","operation"],["operatione","operation"],["operatior","operator"],["operatng","operating"],["operato","operator"],["operaton","operation"],["operatons","operations"],["operattion","operation"],["operattions","operations"],["opereation","operation"],["opertaion","operation"],["opertaions","operations"],["opertion","operation"],["opertional","operational"],["opertions","operations"],["opertor","operator"],["opertors","operators"],["opetional","optional"],["ophan","orphan"],["ophtalmology","ophthalmology"],["opion","option"],["opionally","optionally"],["opions","options"],["opitionally","optionally"],["opiton","option"],["opitons","options"],["opject","object"],["opjected","objected"],["opjecteing","objecting"],["opjectification","objectification"],["opjectifications","objectifications"],["opjectified","objectified"],["opjecting","objecting"],["opjection","objection"],["opjections","objections"],["opjective","objective"],["opjectively","objectively"],["opjects","objects"],["opne","open"],["opned","opened"],["opnegroup","opengroup"],["opnssl","openssl"],["oponent","opponent"],["oportunity","opportunity"],["opose","oppose"],["oposed","opposed"],["oposite","opposite"],["oposition","opposition"],["oppenly","openly"],["opperate","operate"],["opperated","operated"],["opperates","operates"],["opperation","operation"],["opperational","operational"],["opperations","operations"],["oppertunist","opportunist"],["oppertunities","opportunities"],["oppertunity","opportunity"],["oppinion","opinion"],["oppinions","opinions"],["opponant","opponent"],["oppononent","opponent"],["opportunisticly","opportunistically"],["opportunistly","opportunistically"],["opportunties","opportunities"],["oppositition","opposition"],["oppossed","opposed"],["opprotunity","opportunity"],["opproximate","approximate"],["opps","oops"],["oppsofite","opposite"],["oppurtunity","opportunity"],["opration","operation"],["oprations","operations"],["opreating","operating"],["opreation","operation"],["opreations","operations"],["opression","oppression"],["opressive","oppressive"],["oprimization","optimization"],["oprimizations","optimizations"],["oprimize","optimize"],["oprimized","optimized"],["oprimizes","optimizes"],["optain","obtain"],["optained","obtained"],["optains","obtains"],["optaionl","optional"],["optening","opening"],["optet","opted"],["opthalmic","ophthalmic"],["opthalmologist","ophthalmologist"],["opthalmology","ophthalmology"],["opthamologist","ophthalmologist"],["optiional","optional"],["optimasation","optimization"],["optimazation","optimization"],["optimial","optimal"],["optimiality","optimality"],["optimisim","optimism"],["optimisitc","optimistic"],["optimisitic","optimistic"],["optimissm","optimism"],["optimitation","optimization"],["optimizaing","optimizing"],["optimizaton","optimization"],["optimizier","optimizer"],["optimiztion","optimization"],["optimiztions","optimizations"],["optimsitic","optimistic"],["optimyze","optimize"],["optimze","optimize"],["optimzie","optimize"],["optin","option"],["optinal","optional"],["optinally","optionally"],["optins","options"],["optio","option"],["optioanl","optional"],["optioin","option"],["optioinal","optional"],["optioins","options"],["optionalliy","optionally"],["optionallly","optionally"],["optionaly","optionally"],["optionel","optional"],["optiones","options"],["optionial","optional"],["optionn","option"],["optionnal","optional"],["optionnally","optionally"],["optionnaly","optionally"],["optionss","options"],["optios","options"],["optismied","optimised"],["optizmied","optimized"],["optmisation","optimisation"],["optmisations","optimisations"],["optmization","optimization"],["optmizations","optimizations"],["optmize","optimize"],["optmized","optimized"],["optoin","option"],["optoins","options"],["optomism","optimism"],["opton","option"],["optonal","optional"],["optonally","optionally"],["optons","options"],["opyion","option"],["opyions","options"],["orcale","oracle"],["orded","ordered"],["orderd","ordered"],["ordert","ordered"],["ording","ordering"],["ordner","order"],["orede","order"],["oredes","orders"],["oreding","ordering"],["oredred","ordered"],["orgamise","organise"],["organim","organism"],["organisaion","organisation"],["organisaions","organisations"],["organistion","organisation"],["organistions","organisations"],["organizaion","organization"],["organizaions","organizations"],["organiztion","organization"],["organiztions","organizations"],["organsiation","organisation"],["organsiations","organisations"],["organsied","organised"],["organsier","organiser"],["organsiers","organisers"],["organsies","organises"],["organsiing","organising"],["organziation","organization"],["organziations","organizations"],["organzied","organized"],["organzier","organizer"],["organziers","organizers"],["organzies","organizes"],["organziing","organizing"],["orgiginal","original"],["orgiginally","originally"],["orgiginals","originals"],["orginal","original"],["orginally","originally"],["orginals","originals"],["orginate","originate"],["orginated","originated"],["orginates","originates"],["orginating","originating"],["orginial","original"],["orginially","originally"],["orginials","originals"],["orginiate","originate"],["orginiated","originated"],["orginiates","originates"],["orgininal","original"],["orgininals","originals"],["orginisation","organisation"],["orginisations","organisations"],["orginised","organised"],["orginization","organization"],["orginizations","organizations"],["orginized","organized"],["orginx","originx"],["orginy","originy"],["orhpan","orphan"],["oriant","orient"],["oriantate","orientate"],["oriantated","orientated"],["oriantation","orientation"],["oridinarily","ordinarily"],["orieation","orientation"],["orieations","orientations"],["orienatate","orientate"],["orienatated","orientated"],["orienatation","orientation"],["orienation","orientation"],["orientaion","orientation"],["orientatied","orientated"],["oriente","oriented"],["orientiation","orientation"],["orientied","oriented"],["orientned","oriented"],["orietation","orientation"],["orietations","orientations"],["origanaly","originally"],["origial","original"],["origially","originally"],["origianal","original"],["origianally","originally"],["origianaly","originally"],["origianl","original"],["origianls","originals"],["origigin","origin"],["origiginal","original"],["origiginally","originally"],["origiginals","originals"],["originaly","originally"],["originial","original"],["originially","originally"],["originiated","originated"],["originiating","originating"],["origininal","original"],["origininate","originate"],["origininated","originated"],["origininates","originates"],["origininating","originating"],["origining","originating"],["originnally","originally"],["origion","origin"],["origional","original"],["origionally","originally"],["orign","origin"],["orignal","original"],["orignally","originally"],["orignate","originate"],["orignated","originated"],["orignates","originates"],["orignial","original"],["orignially","originally"],["origninal","original"],["oringal","original"],["oringally","originally"],["orpan","orphan"],["orpanage","orphanage"],["orpaned","orphaned"],["orpans","orphans"],["orriginal","original"],["orthagnal","orthogonal"],["orthagonal","orthogonal"],["orthagonalize","orthogonalize"],["orthoganal","orthogonal"],["orthoganalize","orthogonalize"],["orthognal","orthogonal"],["orthonormalizatin","orthonormalization"],["ortogonal","orthogonal"],["ortogonality","orthogonality"],["osbscure","obscure"],["osciallator","oscillator"],["oscilate","oscillate"],["oscilated","oscillated"],["oscilating","oscillating"],["oscilator","oscillator"],["oscilliscope","oscilloscope"],["oscilliscopes","oscilloscopes"],["osffset","offset"],["osffsets","offsets"],["osffsetting","offsetting"],["osicllations","oscillations"],["otain","obtain"],["otained","obtained"],["otains","obtains"],["otehr","other"],["otehrwice","otherwise"],["otehrwise","otherwise"],["otehrwize","otherwise"],["oterwice","otherwise"],["oterwise","otherwise"],["oterwize","otherwise"],["othe","other"],["othere","other"],["otherewise","otherwise"],["otherise","otherwise"],["otheriwse","otherwise"],["otherwaise","otherwise"],["otherways","otherwise"],["otherweis","otherwise"],["otherweise","otherwise"],["otherwhere","elsewhere"],["otherwhile","otherwise"],["otherwhise","otherwise"],["otherwice","otherwise"],["otherwide","otherwise"],["otherwis","otherwise"],["otherwize","otherwise"],["otherwordly","otherworldly"],["otherwose","otherwise"],["otherwrite","overwrite"],["otherws","otherwise"],["otherwse","otherwise"],["otherwsie","otherwise"],["otherwsise","otherwise"],["otherwuise","otherwise"],["otherwwise","otherwise"],["otherwyse","otherwise"],["othewice","otherwise"],["othewise","otherwise"],["othewize","otherwise"],["otho","otoh"],["othographic","orthographic"],["othwerise","otherwise"],["othwerwise","otherwise"],["othwhise","otherwise"],["otification","notification"],["otiginal","original"],["otion","option"],["otionally","optionally"],["otions","options"],["otpion","option"],["otpions","options"],["otput","output"],["otu","out"],["oublisher","publisher"],["ouer","outer"],["ouevre","oeuvre"],["oultinenodes","outlinenodes"],["oultiner","outliner"],["oultline","outline"],["oultlines","outlines"],["ountline","outline"],["ouptut","output"],["ouptuted","outputted"],["ouptuting","outputting"],["ouptuts","outputs"],["ouput","output"],["ouputarea","outputarea"],["ouputs","outputs"],["ouputted","outputted"],["ouputting","outputting"],["ourselfes","ourselves"],["ourselfs","ourselves"],["ourselvs","ourselves"],["ouside","outside"],["oustanding","outstanding"],["oustide","outside"],["outbut","output"],["outbuts","outputs"],["outgoign","outgoing"],["outisde","outside"],["outllook","outlook"],["outoign","outgoing"],["outout","output"],["outperfoem","outperform"],["outperfoeming","outperforming"],["outperfom","outperform"],["outperfome","outperform"],["outperfomeing","outperforming"],["outperfoming","outperforming"],["outperfomr","outperform"],["outperfomring","outperforming"],["outpout","output"],["outpouts","outputs"],["outpupt","output"],["outpusts","outputs"],["outputed","outputted"],["outputing","outputting"],["outselves","ourselves"],["outsid","outside"],["outter","outer"],["outtermost","outermost"],["outupt","output"],["outupts","outputs"],["outuput","output"],["outut","output"],["oututs","outputs"],["outweight","outweigh"],["outweights","outweighs"],["ouur","our"],["ouurs","ours"],["oveerun","overrun"],["oveflow","overflow"],["oveflowed","overflowed"],["oveflowing","overflowing"],["oveflows","overflows"],["ovelap","overlap"],["ovelapping","overlapping"],["over-engeneer","over-engineer"],["over-engeneering","over-engineering"],["overaall","overall"],["overal","overall"],["overcompansate","overcompensate"],["overcompansated","overcompensated"],["overcompansates","overcompensates"],["overcompansating","overcompensating"],["overcompansation","overcompensation"],["overcompansations","overcompensations"],["overengeneer","overengineer"],["overengeneering","overengineering"],["overfl","overflow"],["overfow","overflow"],["overfowed","overflowed"],["overfowing","overflowing"],["overfows","overflows"],["overhread","overhead"],["overiddden","overridden"],["overidden","overridden"],["overide","override"],["overiden","overridden"],["overides","overrides"],["overiding","overriding"],["overlaped","overlapped"],["overlaping","overlapping"],["overlapp","overlap"],["overlayed","overlaid"],["overlflow","overflow"],["overlflowed","overflowed"],["overlflowing","overflowing"],["overlflows","overflows"],["overlfow","overflow"],["overlfowed","overflowed"],["overlfowing","overflowing"],["overlfows","overflows"],["overlodaded","overloaded"],["overloded","overloaded"],["overlodes","overloads"],["overlow","overflow"],["overlowing","overflowing"],["overlows","overflows"],["overreidden","overridden"],["overreide","override"],["overreides","overrides"],["overriabled","overridable"],["overriddable","overridable"],["overriddden","overridden"],["overriddes","overrides"],["overridding","overriding"],["overrideable","overridable"],["overriden","overridden"],["overrident","overridden"],["overridiing","overriding"],["overrids","overrides"],["overrriddden","overridden"],["overrridden","overridden"],["overrride","override"],["overrriden","overridden"],["overrrides","overrides"],["overrriding","overriding"],["overrrun","overrun"],["overshaddowed","overshadowed"],["oversubcribe","oversubscribe"],["oversubcribed","oversubscribed"],["oversubcribes","oversubscribes"],["oversubcribing","oversubscribing"],["oversubscibe","oversubscribe"],["oversubscibed","oversubscribed"],["oversubscirbe","oversubscribe"],["oversubscirbed","oversubscribed"],["overthere","over there"],["overun","overrun"],["overvise","otherwise"],["overvize","otherwise"],["overvride","override"],["overvrides","overrides"],["overvrite","overwrite"],["overvrites","overwrites"],["overwelm","overwhelm"],["overwelming","overwhelming"],["overwheliming","overwhelming"],["overwiew","overview"],["overwirte","overwrite"],["overwirting","overwriting"],["overwirtten","overwritten"],["overwise","otherwise"],["overwite","overwrite"],["overwites","overwrites"],["overwitten","overwritten"],["overwize","otherwise"],["overwride","overwrite"],["overwriteable","overwritable"],["overwriten","overwritten"],["overwritren","overwritten"],["overwrittes","overwrites"],["overwrittin","overwriting"],["overwritting","overwriting"],["ovewrite","overwrite"],["ovewrites","overwrites"],["ovewriting","overwriting"],["ovewritten","overwritten"],["ovewrote","overwrote"],["ovride","override"],["ovrides","overrides"],["ovrlapped","overlapped"],["ovrridable","overridable"],["ovrridables","overridables"],["ovrwrt","overwrite"],["ovservable","observable"],["ovservation","observation"],["ovserve","observe"],["ovveride","override"],["ovverridden","overridden"],["ovverride","override"],["ovverrides","overrides"],["ovverriding","overriding"],["owener","owner"],["owerflow","overflow"],["owerflowed","overflowed"],["owerflowing","overflowing"],["owerflows","overflows"],["owership","ownership"],["owervrite","overwrite"],["owervrites","overwrites"],["owerwrite","overwrite"],["owerwrites","overwrites"],["owful","awful"],["ownder","owner"],["ownerhsip","ownership"],["ownner","owner"],["ownward","onward"],["ownwer","owner"],["ownwership","ownership"],["owrk","work"],["owudl","would"],["oxigen","oxygen"],["oximoron","oxymoron"],["oxzillary","auxiliary"],["oyu","you"],["p0enis","penis"],["paackage","package"],["pacakge","package"],["pacakges","packages"],["pacakging","packaging"],["paceholder","placeholder"],["pachage","package"],["paches","patches"],["pacht","patch"],["pachtches","patches"],["pachtes","patches"],["pacjage","package"],["pacjages","packages"],["packacge","package"],["packaeg","package"],["packaege","package"],["packaeges","packages"],["packaegs","packages"],["packag","package"],["packags","packages"],["packaing","packaging"],["packats","packets"],["packege","package"],["packge","package"],["packged","packaged"],["packgement","packaging"],["packges'","packages'"],["packges","packages"],["packgs","packages"],["packhage","package"],["packhages","packages"],["packtes","packets"],["pactch","patch"],["pactched","patched"],["pactches","patches"],["padam","param"],["padds","pads"],["pading","padding"],["paermission","permission"],["paermissions","permissions"],["paeth","path"],["pagagraph","paragraph"],["pahses","phases"],["paide","paid"],["painiting","painting"],["paintile","painttile"],["paintin","painting"],["paitience","patience"],["paiting","painting"],["pakage","package"],["pakageimpl","packageimpl"],["pakages","packages"],["pakcage","package"],["paket","packet"],["pakge","package"],["pakvage","package"],["palatte","palette"],["paleolitic","paleolithic"],["palete","palette"],["paliamentarian","parliamentarian"],["Palistian","Palestinian"],["Palistinian","Palestinian"],["Palistinians","Palestinians"],["pallete","palette"],["pallette","palette"],["palletted","paletted"],["paltette","palette"],["paltform","platform"],["pamflet","pamphlet"],["pamplet","pamphlet"],["paniced","panicked"],["panicing","panicking"],["pannel","panel"],["pannels","panels"],["pantomine","pantomime"],["paoition","position"],["paor","pair"],["Papanicalou","Papanicolaou"],["paradime","paradigm"],["paradym","paradigm"],["paraemeter","parameter"],["paraemeters","parameters"],["paraeters","parameters"],["parafanalia","paraphernalia"],["paragaph","paragraph"],["paragaraph","paragraph"],["paragarapha","paragraph"],["paragarph","paragraph"],["paragarphs","paragraphs"],["paragph","paragraph"],["paragpraph","paragraph"],["paragraphy","paragraph"],["paragrphs","paragraphs"],["parahaps","perhaps"],["paralel","parallel"],["paralelising","parallelising"],["paralelism","parallelism"],["paralelizing","parallelizing"],["paralell","parallel"],["paralelle","parallel"],["paralellism","parallelism"],["paralellization","parallelization"],["paralelly","parallelly"],["paralely","parallelly"],["paralle","parallel"],["parallell","parallel"],["parallely","parallelly"],["paralles","parallels"],["parallization","parallelization"],["parallize","parallelize"],["parallized","parallelized"],["parallizes","parallelizes"],["parallizing","parallelizing"],["paralllel","parallel"],["paralllels","parallels"],["paramameter","parameter"],["paramameters","parameters"],["paramater","parameter"],["paramaters","parameters"],["paramemeter","parameter"],["paramemeters","parameters"],["paramemter","parameter"],["paramemters","parameters"],["paramenet","parameter"],["paramenets","parameters"],["paramenter","parameter"],["paramenters","parameters"],["paramer","parameter"],["paramert","parameter"],["paramerters","parameters"],["paramerts","parameters"],["paramete","parameter"],["parameteras","parameters"],["parameteres","parameters"],["parameterical","parametrical"],["parameterts","parameters"],["parametes","parameters"],["parametised","parametrised"],["parametr","parameter"],["parametre","parameter"],["parametreless","parameterless"],["parametres","parameters"],["parametrs","parameters"],["parametter","parameter"],["parametters","parameters"],["paramss","params"],["paramter","parameter"],["paramterer","parameter"],["paramterers","parameters"],["paramteres","parameters"],["paramterize","parameterize"],["paramterless","parameterless"],["paramters","parameters"],["paramtrical","parametrical"],["parana","piranha"],["paraniac","paranoiac"],["paranoya","paranoia"],["parant","parent"],["parantheses","parentheses"],["paranthesis","parenthesis"],["parants","parents"],["paraphanalia","paraphernalia"],["paraphenalia","paraphernalia"],["pararagraph","paragraph"],["pararaph","paragraph"],["parareter","parameter"],["parargaph","paragraph"],["parargaphs","paragraphs"],["pararmeter","parameter"],["pararmeters","parameters"],["parastic","parasitic"],["parastics","parasitics"],["paratheses","parentheses"],["paratmers","parameters"],["paravirutalisation","paravirtualisation"],["paravirutalise","paravirtualise"],["paravirutalised","paravirtualised"],["paravirutalization","paravirtualization"],["paravirutalize","paravirtualize"],["paravirutalized","paravirtualized"],["parctical","practical"],["parctically","practically"],["pard","part"],["parellelogram","parallelogram"],["parellels","parallels"],["parem","param"],["paremeter","parameter"],["paremeters","parameters"],["paremter","parameter"],["paremters","parameters"],["parenthese","parentheses"],["parenthesed","parenthesized"],["parenthesies","parentheses"],["parenthises","parentheses"],["parenthsis","parenthesis"],["parge","large"],["parial","partial"],["parially","partially"],["paricular","particular"],["paricularly","particularly"],["parisitic","parasitic"],["paritally","partially"],["paritals","partials"],["paritial","partial"],["parition","partition"],["paritioning","partitioning"],["paritions","partitions"],["paritition","partition"],["parititioned","partitioned"],["parititioner","partitioner"],["parititiones","partitions"],["parititioning","partitioning"],["parititions","partitions"],["paritiy","parity"],["parituclar","particular"],["parliment","parliament"],["parmaeter","parameter"],["parmaeters","parameters"],["parmameter","parameter"],["parmameters","parameters"],["parmaters","parameters"],["parmeter","parameter"],["parmeters","parameters"],["parmter","parameter"],["parmters","parameters"],["parnoia","paranoia"],["parnter","partner"],["parntered","partnered"],["parntering","partnering"],["parnters","partners"],["parntership","partnership"],["parnterships","partnerships"],["parrakeets","parakeets"],["parralel","parallel"],["parrallel","parallel"],["parrallell","parallel"],["parrallelly","parallelly"],["parrallely","parallelly"],["parrent","parent"],["parseing","parsing"],["parsering","parsing"],["parsin","parsing"],["parstree","parse tree"],["partaining","pertaining"],["partcular","particular"],["partcularity","particularity"],["partcularly","particularly"],["parth","path"],["partialy","partially"],["particalar","particular"],["particalarly","particularly"],["particale","particle"],["particales","particles"],["partically","partially"],["particals","particles"],["particaluar","particular"],["particaluarly","particularly"],["particalur","particular"],["particalurly","particularly"],["particant","participant"],["particaular","particular"],["particaularly","particularly"],["particaulr","particular"],["particaulrly","particularly"],["particlar","particular"],["particlars","particulars"],["particually","particularly"],["particualr","particular"],["particuar","particular"],["particuarly","particularly"],["particulaly","particularly"],["particularily","particularly"],["particulary","particularly"],["particuliar","particular"],["partifular","particular"],["partiiton","partition"],["partiitoned","partitioned"],["partiitoning","partitioning"],["partiitons","partitions"],["partioned","partitioned"],["partirion","partition"],["partirioned","partitioned"],["partirioning","partitioning"],["partirions","partitions"],["partision","partition"],["partisioned","partitioned"],["partisioning","partitioning"],["partisions","partitions"],["partitial","partial"],["partiticipant","participant"],["partiticipants","participants"],["partiticular","particular"],["partitinioning","partitioning"],["partitioing","partitioning"],["partitiones","partitions"],["partitionned","partitioned"],["partitionning","partitioning"],["partitionns","partitions"],["partitionss","partitions"],["partiton","partition"],["partitoned","partitioned"],["partitoning","partitioning"],["partitons","partitions"],["partiula","particular"],["partiular","particular"],["partiularly","particularly"],["partiulars","particulars"],["pasengers","passengers"],["paser","parser"],["pasesd","passed"],["pash","hash"],["pasitioning","positioning"],["pasive","passive"],["pasre","parse"],["pasred","parsed"],["pasres","parses"],["passerbys","passersby"],["passin","passing"],["passiv","passive"],["passowrd","password"],["passs","pass"],["passsed","passed"],["passsing","passing"],["passthrought","passthrough"],["passthruogh","passthrough"],["passtime","pastime"],["passtrough","passthrough"],["passwird","password"],["passwirds","passwords"],["passwrod","password"],["passwrods","passwords"],["pasteing","pasting"],["pasttime","pastime"],["pastural","pastoral"],["pasword","password"],["paswords","passwords"],["patameter","parameter"],["patameters","parameters"],["patcket","packet"],["patckets","packets"],["patern","pattern"],["paterns","patterns"],["pathalogical","pathological"],["pathame","pathname"],["pathames","pathnames"],["pathane","pathname"],["pathced","patched"],["pathes","paths"],["pathign","pathing"],["pathnme","pathname"],["patholgoical","pathological"],["patial","spatial"],["paticular","particular"],["paticularly","particularly"],["patition","partition"],["pattented","patented"],["pattersn","patterns"],["pavillion","pavilion"],["pavillions","pavilions"],["pa\xEDnt","paint"],["pblisher","publisher"],["pbulisher","publisher"],["peacd","peace"],["peacefuland","peaceful and"],["peacify","pacify"],["peageant","pageant"],["peaple","people"],["peaples","peoples"],["pecentage","percentage"],["pecularities","peculiarities"],["pecularity","peculiarity"],["peculure","peculiar"],["pedestrain","pedestrian"],["peding","pending"],["pedning","pending"],["pefer","prefer"],["peferable","preferable"],["peferably","preferably"],["pefered","preferred"],["peference","preference"],["peferences","preferences"],["peferential","preferential"],["peferentially","preferentially"],["peferred","preferred"],["peferring","preferring"],["pefers","prefers"],["peform","perform"],["peformance","performance"],["peformed","performed"],["peforming","performing"],["pege","page"],["pehaps","perhaps"],["peice","piece"],["peicemeal","piecemeal"],["peices","pieces"],["peirod","period"],["peirodical","periodical"],["peirodicals","periodicals"],["peirods","periods"],["penalities","penalties"],["penality","penalty"],["penatly","penalty"],["pendantic","pedantic"],["pendig","pending"],["pendning","pending"],["penerator","penetrator"],["penisula","peninsula"],["penisular","peninsular"],["pennal","panel"],["pennals","panels"],["penninsula","peninsula"],["penninsular","peninsular"],["pennisula","peninsula"],["Pennyslvania","Pennsylvania"],["pensinula","peninsula"],["pensle","pencil"],["penultimante","penultimate"],["peom","poem"],["peoms","poems"],["peopel","people"],["peopels","peoples"],["peopl","people"],["peotry","poetry"],["pepare","prepare"],["peprocessor","preprocessor"],["per-interpeter","per-interpreter"],["perade","parade"],["peraphs","perhaps"],["percentange","percentage"],["percentanges","percentages"],["percentil","percentile"],["percepted","perceived"],["percetage","percentage"],["percetages","percentages"],["percievable","perceivable"],["percievabley","perceivably"],["percievably","perceivably"],["percieve","perceive"],["percieved","perceived"],["percise","precise"],["percisely","precisely"],["percision","precision"],["perenially","perennially"],["peretrator","perpetrator"],["perfec","perfect"],["perfecct","perfect"],["perfecctly","perfectly"],["perfeclty","perfectly"],["perfecly","perfectly"],["perfectably","perfectly"],["perfer","prefer"],["perferable","preferable"],["perferably","preferably"],["perferance","preference"],["perferances","preferences"],["perferct","perfect"],["perferctly","perfectly"],["perferect","perfect"],["perferectly","perfectly"],["perfered","preferred"],["perference","preference"],["perferences","preferences"],["perferm","perform"],["perfermance","performance"],["perfermances","performances"],["perfermence","performance"],["perfermences","performances"],["perferr","prefer"],["perferrable","preferable"],["perferrably","preferably"],["perferrance","preference"],["perferrances","preferences"],["perferred","preferred"],["perferrence","preference"],["perferrences","preferences"],["perferrm","perform"],["perferrmance","performance"],["perferrmances","performances"],["perferrmence","performance"],["perferrmences","performances"],["perferrs","prefers"],["perfers","prefers"],["perfix","prefix"],["perfmormance","performance"],["perfoem","perform"],["perfoemamce","performance"],["perfoemamces","performances"],["perfoemance","performance"],["perfoemanse","performance"],["perfoemanses","performances"],["perfoemant","performant"],["perfoemative","performative"],["perfoemed","performed"],["perfoemer","performer"],["perfoemers","performers"],["perfoeming","performing"],["perfoemnace","performance"],["perfoemnaces","performances"],["perfoems","performs"],["perfom","perform"],["perfomamce","performance"],["perfomamces","performances"],["perfomance","performance"],["perfomanse","performance"],["perfomanses","performances"],["perfomant","performant"],["perfomative","performative"],["perfome","perform"],["perfomeamce","performance"],["perfomeamces","performances"],["perfomeance","performance"],["perfomeanse","performance"],["perfomeanses","performances"],["perfomeant","performant"],["perfomeative","performative"],["perfomed","performed"],["perfomeed","performed"],["perfomeer","performer"],["perfomeers","performers"],["perfomeing","performing"],["perfomenace","performance"],["perfomenaces","performances"],["perfomer","performer"],["perfomers","performers"],["perfomes","performs"],["perfoming","performing"],["perfomnace","performance"],["perfomnaces","performances"],["perfomr","perform"],["perfomramce","performance"],["perfomramces","performances"],["perfomrance","performance"],["perfomranse","performance"],["perfomranses","performances"],["perfomrant","performant"],["perfomrative","performative"],["perfomred","performed"],["perfomrer","performer"],["perfomrers","performers"],["perfomring","performing"],["perfomrnace","performance"],["perfomrnaces","performances"],["perfomrs","performs"],["perfoms","performs"],["perfor","perform"],["perforam","perform"],["perforamed","performed"],["perforaming","performing"],["perforamnce","performance"],["perforamnces","performances"],["perforams","performs"],["perford","performed"],["perforemd","performed"],["performace","performance"],["performaed","performed"],["performamce","performance"],["performane","performance"],["performence","performance"],["performnace","performance"],["perfors","performs"],["perfro","perform"],["perfrom","perform"],["perfromance","performance"],["perfromed","performed"],["perfroming","performing"],["perfroms","performs"],["perhabs","perhaps"],["perhas","perhaps"],["perhasp","perhaps"],["perheaps","perhaps"],["perhpas","perhaps"],["peridic","periodic"],["perihperal","peripheral"],["perihperals","peripherals"],["perimetre","perimeter"],["perimetres","perimeters"],["periode","period"],["periodicaly","periodically"],["periodioc","periodic"],["peripathetic","peripatetic"],["peripherial","peripheral"],["peripherials","peripherals"],["perisist","persist"],["perisisted","persisted"],["perisistent","persistent"],["peristent","persistent"],["perjery","perjury"],["perjorative","pejorative"],["perlciritc","perlcritic"],["permable","permeable"],["permament","permanent"],["permamently","permanently"],["permanant","permanent"],["permanantly","permanently"],["permanentely","permanently"],["permanenty","permanently"],["permantly","permanently"],["permenant","permanent"],["permenantly","permanently"],["permessioned","permissioned"],["permision","permission"],["permisions","permissions"],["permisison","permission"],["permisisons","permissions"],["permissable","permissible"],["permissiosn","permissions"],["permisson","permission"],["permissons","permissions"],["permisssion","permission"],["permisssions","permissions"],["permited","permitted"],["permition","permission"],["permitions","permissions"],["permmission","permission"],["permmissions","permissions"],["permormance","performance"],["permssion","permission"],["permssions","permissions"],["permuatate","permutate"],["permuatated","permutated"],["permuatates","permutates"],["permuatating","permutating"],["permuatation","permutation"],["permuatations","permutations"],["permuation","permutation"],["permuations","permutations"],["permutaion","permutation"],["permutaions","permutations"],["permution","permutation"],["permutions","permutations"],["peroendicular","perpendicular"],["perogative","prerogative"],["peroid","period"],["peroidic","periodic"],["peroidical","periodical"],["peroidically","periodically"],["peroidicals","periodicals"],["peroidicity","periodicity"],["peroids","periods"],["peronal","personal"],["peroperly","properly"],["perosnality","personality"],["perpandicular","perpendicular"],["perpandicularly","perpendicularly"],["perperties","properties"],["perpertrated","perpetrated"],["perperty","property"],["perphas","perhaps"],["perpindicular","perpendicular"],["perpsective","perspective"],["perpsectives","perspectives"],["perrror","perror"],["persan","person"],["persepctive","perspective"],["persepective","perspective"],["persepectives","perspectives"],["perserve","preserve"],["perserved","preserved"],["perserverance","perseverance"],["perservere","persevere"],["perservered","persevered"],["perserveres","perseveres"],["perservering","persevering"],["perserves","preserves"],["perserving","preserving"],["perseverence","perseverance"],["persisit","persist"],["persisited","persisted"],["persistance","persistence"],["persistant","persistent"],["persistantly","persistently"],["persisten","persistent"],["persistented","persisted"],["persited","persisted"],["persitent","persistent"],["personalitie","personality"],["personalitites","personalities"],["personalitity","personality"],["personalitys","personalities"],["personaly","personally"],["personell","personnel"],["personnal","personal"],["personnaly","personally"],["personnell","personnel"],["perspecitve","perspective"],["persuded","persuaded"],["persue","pursue"],["persued","pursued"],["persuing","pursuing"],["persuit","pursuit"],["persuits","pursuits"],["persumably","presumably"],["perticular","particular"],["perticularly","particularly"],["perticulars","particulars"],["pertrub","perturb"],["pertrubation","perturbation"],["pertrubations","perturbations"],["pertrubing","perturbing"],["pertub","perturb"],["pertubate","perturb"],["pertubated","perturbed"],["pertubates","perturbs"],["pertubation","perturbation"],["pertubations","perturbations"],["pertubing","perturbing"],["perturbate","perturb"],["perturbates","perturbs"],["pervious","previous"],["perviously","previously"],["pessiary","pessary"],["petetion","petition"],["pevent","prevent"],["pevents","prevents"],["pezier","bezier"],["phanthom","phantom"],["Pharoah","Pharaoh"],["phasepsace","phasespace"],["phasis","phases"],["phenomenom","phenomenon"],["phenomenonal","phenomenal"],["phenomenonly","phenomenally"],["phenomonenon","phenomenon"],["phenomonon","phenomenon"],["phenonmena","phenomena"],["pheriparials","peripherals"],["Philipines","Philippines"],["philisopher","philosopher"],["philisophical","philosophical"],["philisophy","philosophy"],["Phillipine","Philippine"],["phillipines","philippines"],["Phillippines","Philippines"],["phillosophically","philosophically"],["philospher","philosopher"],["philosphies","philosophies"],["philosphy","philosophy"],["phisical","physical"],["phisically","physically"],["phisicaly","physically"],["phisics","physics"],["phisosophy","philosophy"],["Phonecian","Phoenecian"],["phoneticly","phonetically"],["phongraph","phonograph"],["phote","photo"],["photografic","photographic"],["photografical","photographical"],["photografy","photography"],["photograpic","photographic"],["photograpical","photographical"],["phsical","physical"],["phsyically","physically"],["phtread","pthread"],["phtreads","pthreads"],["phyiscal","physical"],["phyiscally","physically"],["phyiscs","physics"],["phylosophical","philosophical"],["physcial","physical"],["physial","physical"],["physicaly","physically"],["physisist","physicist"],["phython","python"],["phyton","python"],["phy_interace","phy_interface"],["piblisher","publisher"],["pice","piece"],["picoseond","picosecond"],["picoseonds","picoseconds"],["piggypack","piggyback"],["piggypacked","piggybacked"],["pilgrimmage","pilgrimage"],["pilgrimmages","pilgrimages"],["pimxap","pixmap"],["pimxaps","pixmaps"],["pinapple","pineapple"],["pinnaple","pineapple"],["pinoneered","pioneered"],["piont","point"],["pionter","pointer"],["pionts","points"],["piority","priority"],["pipeine","pipeline"],["pipeines","pipelines"],["pipelien","pipeline"],["pipeliens","pipelines"],["pipelin","pipeline"],["pipelinining","pipelining"],["pipelins","pipelines"],["pipepline","pipeline"],["pipeplines","pipelines"],["pipiline","pipeline"],["pipilines","pipelines"],["pipleine","pipeline"],["pipleines","pipelines"],["pipleline","pipeline"],["piplelines","pipelines"],["pitty","pity"],["pivott","pivot"],["pivotting","pivoting"],["pixes","pixels"],["placeemnt","placement"],["placeemnts","placements"],["placehoder","placeholder"],["placeholde","placeholder"],["placeholdes","placeholders"],["placeholer","placeholder"],["placeholers","placeholders"],["placemenet","placement"],["placemenets","placements"],["placholder","placeholder"],["placholders","placeholders"],["placmenet","placement"],["placmenets","placements"],["plaform","platform"],["plaforms","platforms"],["plaftorm","platform"],["plaftorms","platforms"],["plagarism","plagiarism"],["plalform","platform"],["plalforms","platforms"],["planation","plantation"],["plantext","plaintext"],["plantiff","plaintiff"],["plasement","placement"],["plasements","placements"],["plateu","plateau"],["platfarm","platform"],["platfarms","platforms"],["platfform","platform"],["platfforms","platforms"],["platflorm","platform"],["platflorms","platforms"],["platfoem","platform"],["platfom","platform"],["platfomr","platform"],["platfomrs","platforms"],["platfoms","platforms"],["platform-spacific","platform-specific"],["platforma","platforms"],["platformt","platforms"],["platfrom","platform"],["platfroms","platforms"],["plathome","platform"],["platofmr","platform"],["platofmrs","platforms"],["platofms","platforms"],["platofmss","platforms"],["platoform","platform"],["platoforms","platforms"],["platofrm","platform"],["platofrms","platforms"],["plattform","platform"],["plattforms","platforms"],["plausability","plausibility"],["plausable","plausible"],["playble","playable"],["playge","plague"],["playgerise","plagiarise"],["playgerize","plagiarize"],["playgropund","playground"],["playist","playlist"],["playists","playlists"],["playright","playwright"],["playwrite","playwright"],["playwrites","playwrights"],["plcae","place"],["plcaebo","placebo"],["plcaed","placed"],["plcaeholder","placeholder"],["plcaeholders","placeholders"],["plcaement","placement"],["plcaements","placements"],["plcaes","places"],["pleaase","please"],["pleacing","placing"],["pleae","please"],["pleaee","please"],["pleaes","please"],["pleasd","pleased"],["pleasent","pleasant"],["pleasently","pleasantly"],["plebicite","plebiscite"],["plecing","placing"],["plent","plenty"],["plesae","please"],["plesant","pleasant"],["plese","please"],["plesently","pleasantly"],["pliars","pliers"],["pllatforms","platforms"],["ploted","plotted"],["ploting","plotting"],["ploynomial","polynomial"],["ploynomials","polynomials"],["pltform","platform"],["pltforms","platforms"],["plugable","pluggable"],["pluged","plugged"],["pluign","plugin"],["pluigns","plugins"],["pluse","pulse"],["plyotropy","pleiotropy"],["pobular","popular"],["pobularity","popularity"],["podule","module"],["poenis","penis"],["poential","potential"],["poentially","potentially"],["poentials","potentials"],["poeoples","peoples"],["poeple","people"],["poety","poetry"],["pogress","progress"],["poicies","policies"],["poicy","policy"],["poiint","point"],["poiints","points"],["poind","point"],["poindcloud","pointcloud"],["poiner","pointer"],["poing","point"],["poinits","points"],["poinnter","pointer"],["poins","points"],["pointeres","pointers"],["pointes","points"],["pointetr","pointer"],["pointetrs","pointers"],["pointeur","pointer"],["pointseta","poinsettia"],["pointss","points"],["pointzer","pointer"],["poinyent","poignant"],["poisin","poison"],["poisition","position"],["poisitioned","positioned"],["poisitioning","positioning"],["poisitionning","positioning"],["poisitions","positions"],["poistion","position"],["poistioned","positioned"],["poistioning","positioning"],["poistions","positions"],["poistive","positive"],["poistively","positively"],["poistives","positives"],["poistivly","positively"],["poit","point"],["poitd","pointed"],["poited","pointed"],["poiter","pointer"],["poiters","pointers"],["poiting","pointing"],["poitless","pointless"],["poitlessly","pointlessly"],["poitn","point"],["poitnd","pointed"],["poitned","pointed"],["poitner","pointer"],["poitnes","points"],["poitning","pointing"],["poitns","points"],["poits","points"],["poiunter","pointer"],["poject","project"],["pojecting","projecting"],["pojnt","point"],["pojrect","project"],["pojrected","projected"],["pojrecting","projecting"],["pojrection","projection"],["pojrections","projections"],["pojrector","projector"],["pojrectors","projectors"],["pojrects","projects"],["poket","pocket"],["polariy","polarity"],["polgon","polygon"],["polgons","polygons"],["polical","political"],["policiy","policy"],["poligon","polygon"],["poligons","polygons"],["polinator","pollinator"],["polinators","pollinators"],["politican","politician"],["politicans","politicians"],["politicing","politicking"],["pollenate","pollinate"],["polltry","poultry"],["polocies","policies"],["polocy","policy"],["polocys","policies"],["pologon","polygon"],["pologons","polygons"],["polotic","politic"],["polotical","political"],["polotics","politics"],["poltical","political"],["poltry","poultry"],["polute","pollute"],["poluted","polluted"],["polutes","pollutes"],["poluting","polluting"],["polution","pollution"],["polyar","polar"],["polyedral","polyhedral"],["polygond","polygons"],["polygone","polygon"],["polymorpic","polymorphic"],["polynomal","polynomial"],["polynomals","polynomials"],["polyphonyic","polyphonic"],["polypoygon","polypolygon"],["polypoylgons","polypolygons"],["polysaccaride","polysaccharide"],["polysaccharid","polysaccharide"],["pomegranite","pomegranate"],["pomotion","promotion"],["pompay","Pompeii"],["ponint","point"],["poninted","pointed"],["poninter","pointer"],["poninting","pointing"],["ponints","points"],["ponit","point"],["ponitd","pointed"],["ponited","pointed"],["poniter","pointer"],["poniters","pointers"],["ponits","points"],["pont","point"],["pontential","potential"],["ponter","pointer"],["ponting","pointing"],["ponts","points"],["pontuation","punctuation"],["pooint","point"],["poointed","pointed"],["poointer","pointer"],["pooints","points"],["poost","post"],["poperee","potpourri"],["poperties","properties"],["popoen","popen"],["popolate","populate"],["popolated","populated"],["popolates","populates"],["popolating","populating"],["poportional","proportional"],["popoulation","population"],["popoup","popup"],["poppup","popup"],["popularaty","popularity"],["populare","popular"],["populer","popular"],["popullate","populate"],["popullated","populated"],["popuplar","popular"],["popuplarity","popularity"],["popuplate","populate"],["popuplated","populated"],["popuplates","populates"],["popuplating","populating"],["popuplation","population"],["porbably","probably"],["porblem","problem"],["porblems","problems"],["porcess","process"],["porcessed","processed"],["porcesses","processes"],["porcessing","processing"],["porcessor","processor"],["porcessors","processors"],["porgram","program"],["porgrammeer","programmer"],["porgrammeers","programmers"],["porgramming","programming"],["porgrams","programs"],["poriferal","peripheral"],["porject","project"],["porjection","projection"],["porjects","projects"],["porotocol","protocol"],["porotocols","protocols"],["porperties","properties"],["porperty","property"],["porportion","proportion"],["porportional","proportional"],["porportionally","proportionally"],["porportioning","proportioning"],["porportions","proportions"],["porsalin","porcelain"],["porshan","portion"],["porshon","portion"],["portait","portrait"],["portaits","portraits"],["portayed","portrayed"],["portected","protected"],["portguese","Portuguese"],["portioon","portion"],["portraing","portraying"],["portugese","Portuguese"],["portuguease","Portuguese"],["portugues","Portuguese"],["porve","prove"],["porved","proved"],["porven","proven"],["porves","proves"],["porvide","provide"],["porvided","provided"],["porvider","provider"],["porvides","provides"],["porviding","providing"],["porvids","provides"],["porving","proving"],["posative","positive"],["posatives","positives"],["posativity","positivity"],["poseesions","possessions"],["posess","possess"],["posessed","possessed"],["posesses","possesses"],["posessing","possessing"],["posession","possession"],["posessions","possessions"],["posibilities","possibilities"],["posibility","possibility"],["posibilties","possibilities"],["posible","possible"],["posiblity","possibility"],["posibly","possibly"],["posiitive","positive"],["posiitives","positives"],["posiitivity","positivity"],["posisition","position"],["posisitioned","positioned"],["posistion","position"],["positionn","position"],["positionned","positioned"],["positionnes","positions"],["positionning","positioning"],["positionns","positions"],["positiv","positive"],["positivie","positive"],["positivies","positives"],["positivly","positively"],["positoin","position"],["positoined","positioned"],["positoins","positions"],["positonal","positional"],["positoned","positioned"],["positoning","positioning"],["positve","positive"],["positves","positives"],["POSIX-complient","POSIX-compliant"],["pospone","postpone"],["posponed","postponed"],["posption","position"],["possabilites","possibilities"],["possabilities","possibilities"],["possability","possibility"],["possabilties","possibilities"],["possabily","possibly"],["possable","possible"],["possably","possibly"],["possbily","possibly"],["possble","possible"],["possbly","possibly"],["posseses","possesses"],["possesing","possessing"],["possesion","possession"],["possesive","possessive"],["possessess","possesses"],["possiable","possible"],["possibbe","possible"],["possibe","possible"],["possibile","possible"],["possibilies","possibilities"],["possibilites","possibilities"],["possibilitities","possibilities"],["possibiliy","possibility"],["possibillity","possibility"],["possibilties","possibilities"],["possibilty","possibility"],["possibily","possibly"],["possibities","possibilities"],["possibity","possibility"],["possiblble","possible"],["possiblec","possible"],["possiblely","possibly"],["possiblility","possibility"],["possiblilty","possibility"],["possiblities","possibilities"],["possiblity","possibility"],["possiblly","possibly"],["possilbe","possible"],["possily","possibly"],["possition","position"],["possitive","positive"],["possitives","positives"],["possobily","possibly"],["possoble","possible"],["possobly","possibly"],["posssible","possible"],["post-morten","post-mortem"],["post-proces","post-process"],["post-procesing","post-processing"],["postcondtion","postcondition"],["postcondtions","postconditions"],["Postdam","Potsdam"],["postgress","PostgreSQL"],["postgressql","PostgreSQL"],["postgrsql","PostgreSQL"],["posthomous","posthumous"],["postiional","positional"],["postiive","positive"],["postincremend","postincrement"],["postion","position"],["postioned","positioned"],["postions","positions"],["postition","position"],["postitive","positive"],["postitives","positives"],["postive","positive"],["postives","positives"],["postmage","postimage"],["postphoned","postponed"],["postpocessing","postprocessing"],["postponinig","postponing"],["postprocesing","postprocessing"],["postscritp","postscript"],["postulat","postulate"],["postuminus","posthumous"],["postumus","posthumous"],["potatoe","potato"],["potatos","potatoes"],["potencial","potential"],["potencially","potentially"],["potencials","potentials"],["potenial","potential"],["potenially","potentially"],["potentail","potential"],["potentailly","potentially"],["potentails","potentials"],["potental","potential"],["potentally","potentially"],["potentatially","potentially"],["potententially","potentially"],["potentiallly","potentially"],["potentialy","potentially"],["potentiel","potential"],["potentiomenter","potentiometer"],["potition","position"],["potocol","protocol"],["potrait","portrait"],["potrayed","portrayed"],["poulations","populations"],["pount","point"],["pounts","points"],["poupular","popular"],["poverful","powerful"],["poweful","powerful"],["powerfull","powerful"],["powerppc","powerpc"],["pozitive","positive"],["pozitively","positively"],["pozitives","positives"],["ppcheck","cppcheck"],["ppeline","pipeline"],["ppelines","pipelines"],["ppolygons","polygons"],["ppublisher","publisher"],["ppyint","pyint"],["praameter","parameter"],["praameters","parameters"],["prabability","probability"],["prabable","probable"],["prabably","probably"],["pracitcal","practical"],["pracitcally","practically"],["practial","practical"],["practially","practically"],["practicaly","practically"],["practicioner","practitioner"],["practicioners","practitioners"],["practicly","practically"],["practictitioner","practitioner"],["practictitioners","practitioners"],["practicval","practical"],["practioner","practitioner"],["practioners","practitioners"],["praefix","prefix"],["pragam","pragma"],["pragmato","pragma to"],["prairy","prairie"],["pramater","parameter"],["prameter","parameter"],["prameters","parameters"],["prarameter","parameter"],["prarameters","parameters"],["prarie","prairie"],["praries","prairies"],["pratical","practical"],["pratically","practically"],["pratice","practice"],["prcess","process"],["prcesses","processes"],["prcessing","processing"],["prcoess","process"],["prcoessed","processed"],["prcoesses","processes"],["prcoessing","processing"],["prctiles","percentiles"],["prdpagate","propagate"],["prdpagated","propagated"],["prdpagates","propagates"],["prdpagating","propagating"],["prdpagation","propagation"],["prdpagations","propagations"],["prdpagator","propagator"],["prdpagators","propagators"],["pre-condifure","pre-configure"],["pre-condifured","pre-configured"],["pre-confifure","pre-configure"],["pre-confifured","pre-configured"],["pre-confure","pre-configure"],["pre-confured","pre-configured"],["pre-congifure","pre-configure"],["pre-congifured","pre-configured"],["pre-defiend","pre-defined"],["pre-defiened","pre-defined"],["pre-empt","preempt"],["pre-pended","prepended"],["pre-pre-realease","pre-pre-release"],["pre-proces","pre-process"],["pre-procesing","pre-processing"],["pre-realease","pre-release"],["pre-registeres","pre-registers"],["prealocate","preallocate"],["prealocated","preallocated"],["prealocates","preallocates"],["prealocating","preallocating"],["preambule","preamble"],["preamle","preamble"],["preample","preamble"],["preaorocessing","preprocessing"],["preapared","prepared"],["preapre","prepare"],["preaprooved","preapproved"],["prebious","previous"],["precacheed","precached"],["precceding","preceding"],["precding","preceding"],["preced","precede"],["precedencs","precedence"],["precedessor","predecessor"],["preceds","precedes"],["preceision","precision"],["precence","presence"],["precendance","precedence"],["precendances","precedences"],["precende","precedence"],["precendece","precedence"],["precendeces","precedences"],["precendence","precedence"],["precendences","precedences"],["precendencies","precedences"],["precendent","precedent"],["precendes","precedences"],["precending","preceding"],["precends","precedence"],["precenences","preferences"],["precense","presence"],["precentage","percentage"],["precentile","percentile"],["precentiles","percentiles"],["precessing","processing"],["precice","precise"],["precicion","precision"],["precidence","precedence"],["precisily","precisely"],["precisionn","precision"],["precisision","precision"],["precisly","precisely"],["precison","precision"],["precize","precise"],["precomuted","precomputed"],["preconditoner","preconditioner"],["preconditoners","preconditioners"],["precondtion","precondition"],["precondtioner","preconditioner"],["precondtioners","preconditioners"],["precondtionner","preconditioner"],["precondtionners","preconditioners"],["precondtions","preconditions"],["preconfiged","preconfigured"],["precsions","precisions"],["precuation","precaution"],["preculde","preclude"],["preculded","precluded"],["preculdes","precludes"],["precumputed","precomputed"],["precurser","precursor"],["precussion","percussion"],["precussions","percussions"],["predecesor","predecessor"],["predecesors","predecessors"],["predeclarnig","predeclaring"],["predefiend","predefined"],["predefiened","predefined"],["predefiined","predefined"],["predefineds","predefined"],["predessor","predecessor"],["predfined","predefined"],["predicat","predicate"],["predicatble","predictable"],["predicitons","predictions"],["predictible","predictable"],["predifined","predefined"],["predomiantly","predominately"],["preeceding","preceding"],["preemptable","preemptible"],["preesnt","present"],["prefectches","prefetches"],["prefecth","prefetch"],["prefectly","perfectly"],["prefence","preference"],["prefences","preferences"],["preferance","preference"],["preferances","preferences"],["preferecne","preference"],["preferecnes","preferences"],["prefered","preferred"],["preferencfe","preference"],["preferencfes","preferences"],["preferes","prefers"],["prefering","preferring"],["prefernce","preference"],["prefernces","preferences"],["prefernec","preference"],["preferr","prefer"],["preferrable","preferable"],["preferrably","preferably"],["preferrence","preference"],["preferrences","preferences"],["preferrred","preferred"],["prefetchs","prefetches"],["prefex","prefix"],["preffer","prefer"],["prefferable","preferable"],["prefferably","preferably"],["preffered","preferred"],["preffix","prefix"],["preffixed","prefixed"],["preffixes","prefixes"],["preffixing","prefixing"],["prefices","prefixes"],["preformance","performance"],["preformances","performances"],["pregancies","pregnancies"],["prehaps","perhaps"],["preiod","period"],["preivew","preview"],["preivous","previous"],["prejected","projected"],["prejection","projection"],["prejections","projections"],["preliferation","proliferation"],["prelimitary","preliminary"],["premeire","premiere"],["premeired","premiered"],["premillenial","premillennial"],["preminence","preeminence"],["premission","permission"],["premit","permit"],["premits","permits"],["Premonasterians","Premonstratensians"],["premption","preemption"],["premptive","preemptive"],["premptively","preemptively"],["preocess","process"],["preocupation","preoccupation"],["preoperty","property"],["prepair","prepare"],["prepaired","prepared"],["prepand","prepend"],["preparetion","preparation"],["preparetions","preparations"],["prepartion","preparation"],["prepartions","preparations"],["prepate","prepare"],["prepated","prepared"],["prepates","prepares"],["prepatory","preparatory"],["prependet","prepended"],["prepented","prepended"],["preperation","preparation"],["preperations","preparations"],["preponderence","preponderance"],["preppend","prepend"],["preppended","prepended"],["preppendet","prepended"],["preppented","prepended"],["preprend","prepend"],["preprended","prepended"],["prepresent","represent"],["prepresented","represented"],["prepresents","represents"],["preproces","preprocess"],["preprocesing","preprocessing"],["preprocesor","preprocessor"],["preprocesser","preprocessor"],["preprocessers","preprocessors"],["preprocesssing","preprocessing"],["prequisite","prerequisite"],["prequisites","prerequisites"],["prerequesite","prerequisite"],["prerequesites","prerequisites"],["prerequisit","prerequisite"],["prerequisities","prerequisites"],["prerequisits","prerequisites"],["prerequiste","prerequisite"],["prerequsite","prerequisite"],["prerequsites","prerequisites"],["preriod","period"],["preriodic","periodic"],["prersistent","persistent"],["presance","presence"],["prescripe","prescribe"],["prescriped","prescribed"],["prescrition","prescription"],["prescritions","prescriptions"],["presearvation","preservation"],["presearvations","preservations"],["presearve","preserve"],["presearved","preserved"],["presearver","preserver"],["presearves","preserves"],["presearving","preserving"],["presedential","presidential"],["presenece","presence"],["presener","presenter"],["presense","presence"],["presentaion","presentation"],["presentaional","presentational"],["presentaions","presentations"],["presernt","present"],["preserrved","preserved"],["preserv","preserve"],["presetation","presentation"],["preseve","preserve"],["preseved","preserved"],["preseverance","perseverance"],["preseverence","perseverance"],["preseves","preserves"],["preseving","preserving"],["presicion","precision"],["presidenital","presidential"],["presidental","presidential"],["presist","persist"],["presistable","persistable"],["presistance","persistence"],["presistant","persistent"],["presistantly","persistently"],["presisted","persisted"],["presistence","persistence"],["presistency","persistency"],["presistent","persistent"],["presistently","persistently"],["presisting","persisting"],["presistion","precision"],["presists","persists"],["presitgious","prestigious"],["presmissions","permissions"],["presntation","presentation"],["presntations","presentations"],["prespective","perspective"],["presreved","preserved"],["pressent","present"],["pressentation","presentation"],["pressented","presented"],["pressre","pressure"],["pressue","pressure"],["pressues","pressures"],["prestigeous","prestigious"],["prestigous","prestigious"],["presuambly","presumably"],["presumabely","presumably"],["presumaby","presumably"],["presumebly","presumably"],["presumely","presumably"],["presumibly","presumably"],["pretaining","pertaining"],["pretect","protect"],["pretected","protected"],["pretecting","protecting"],["pretection","protection"],["pretects","protects"],["pretendend","pretended"],["pretty-printter","pretty-printer"],["preveiw","preview"],["preveiwed","previewed"],["preveiwer","previewer"],["preveiwers","previewers"],["preveiws","previews"],["prevelance","prevalence"],["prevelant","prevalent"],["preven","prevent"],["prevend","prevent"],["preverse","perverse"],["preverses","preserves"],["preverve","preserve"],["prevew","preview"],["prevews","previews"],["previewd","previewed"],["previious","previous"],["previlege","privilege"],["previoous","previous"],["previos","previous"],["previosly","previously"],["previosu","previous"],["previosuly","previously"],["previou","previous"],["previouls","previous"],["previoulsy","previously"],["previouly","previously"],["previouse","previous"],["previousl","previously"],["previousy","previously"],["previsou","previous"],["previsouly","previously"],["previuous","previous"],["previus","previous"],["previvous","previous"],["prevoius","previous"],["prevous","previous"],["prevously","previously"],["prewview","preview"],["prexisting","preexisting"],["prexixed","prefixed"],["prfer","prefer"],["prferable","preferable"],["prferables","preferable"],["prference","preference"],["prferred","preferred"],["prgram","program"],["priave","private"],["pricipal","principal"],["priciple","principle"],["priciples","principles"],["pricision","precision"],["priestood","priesthood"],["primaray","primary"],["primarely","primarily"],["primarly","primarily"],["primative","primitive"],["primatively","primitively"],["primatives","primitives"],["primay","primary"],["primeter","perimeter"],["primitave","primitive"],["primitiv","primitive"],["primitve","primitive"],["primitves","primitives"],["primive","primitive"],["primordal","primordial"],["princeple","principle"],["princeples","principles"],["princible","principle"],["principaly","principality"],["principial","principal"],["principlaity","principality"],["principly","principally"],["princliple","principle"],["prind","print"],["prinicipal","principal"],["prining","printing"],["printting","printing"],["prioirties","priorities"],["prioirty","priority"],["prioritiy","priority"],["priorization","prioritization"],["priorizations","prioritizations"],["priorty","priority"],["priot","prior"],["priotise","prioritise"],["priotised","prioritised"],["priotising","prioritising"],["priotities","priorities"],["priotitize","prioritize"],["priotity","priority"],["priotized","prioritized"],["priotizing","prioritizing"],["priots","priors"],["prirority","priority"],["pris","prise"],["priting","printing"],["privalege","privilege"],["privaleges","privileges"],["privaye","private"],["privcy","privacy"],["privde","provide"],["priveledge","privilege"],["priveledged","privileged"],["priveledges","privileges"],["privelege","privilege"],["priveleged","privileged"],["priveleges","privileges"],["privelige","privilege"],["priveliged","privileged"],["priveliges","privileges"],["privelleges","privileges"],["priviate","private"],["privide","provide"],["privided","provided"],["privides","provides"],["prividing","providing"],["priview","preview"],["privilage","privilege"],["privilaged","privileged"],["privilages","privileges"],["priviledge","privilege"],["priviledged","privileged"],["priviledges","privileges"],["privilidge","privilege"],["privilidged","privileged"],["privilidges","privileges"],["privilige","privilege"],["priviliged","privileged"],["priviliges","privileges"],["privious","previous"],["priviously","previously"],["privision","provision"],["privisional","provisional"],["privisions","provisions"],["privledge","privilege"],["privleges","privileges"],["privte","private"],["prject","project"],["prjecting","projecting"],["prjection","projection"],["prjections","projections"],["prjects","projects"],["prmitive","primitive"],["prmitives","primitives"],["prmopting","prompting"],["proable","probable"],["proably","probably"],["probabalistic","probabilistic"],["probabaly","probably"],["probabilaty","probability"],["probabilisitic","probabilistic"],["probabilites","probabilities"],["probabilty","probability"],["probablay","probably"],["probablistic","probabilistic"],["probablities","probabilities"],["probablity","probability"],["probablly","probably"],["probaby","probably"],["probalby","probably"],["probalibity","probability"],["probaly","probably"],["probbably","probably"],["probbailities","probabilities"],["probbaility","probability"],["probbaly","probably"],["probbed","probed"],["probblem","problem"],["probblems","problems"],["probblez","problem"],["probblezs","problems"],["probbly","probably"],["probelm","problem"],["probelmatic","problematic"],["probelms","problems"],["probem","problem"],["proberly","properly"],["problably","probably"],["problaem","problem"],["problaems","problems"],["problamatic","problematic"],["probleme","problem"],["problemes","problems"],["problimatic","problematic"],["problme","problem"],["problmes","problems"],["probly","probably"],["procceed","proceed"],["proccesor","processor"],["proccesors","processors"],["proccess","process"],["proccessed","processed"],["proccesses","processes"],["proccessing","processing"],["proccessor","processor"],["proccessors","processors"],["procecure","procedure"],["procecures","procedures"],["procedger","procedure"],["procedings","proceedings"],["procedre","procedure"],["procedres","procedures"],["proceedes","proceeds"],["proceedure","procedure"],["proceedures","procedures"],["proceeed","proceed"],["proceeeded","proceeded"],["proceeeding","proceeding"],["proceeeds","proceeds"],["proceeedures","procedures"],["procees","process"],["proceesed","processed"],["proceesor","processor"],["procelain","porcelain"],["procelains","porcelains"],["procentual","percentual"],["proces","process"],["procesed","processed"],["proceses","processes"],["proceshandler","processhandler"],["procesing","processing"],["procesor","processor"],["processeed","processed"],["processees","processes"],["processer","processor"],["processess","processes"],["processessing","processing"],["processig","processing"],["processinf","processing"],["processore","processor"],["processpr","processor"],["processsed","processed"],["processses","processes"],["processsing","processing"],["processsors","processors"],["procesure","procedure"],["procesures","procedures"],["procide","provide"],["procided","provided"],["procides","provides"],["proclaimation","proclamation"],["proclamed","proclaimed"],["proclaming","proclaiming"],["proclomation","proclamation"],["procoess","process"],["procoessed","processed"],["procoessing","processing"],["proctect","protect"],["proctected","protected"],["proctecting","protecting"],["proctects","protects"],["procteted","protected"],["procude","produce"],["procuded","produced"],["prodceding","proceeding"],["prodecure","procedure"],["producable","producible"],["producables","producible"],["produciton","production"],["producitons","productions"],["producted","produced"],["productiviy","productivity"],["produkt","product"],["produse","produce"],["prodused","produced"],["produses","produces"],["proedural","procedural"],["proedure","procedure"],["proedures","procedures"],["proejct","project"],["proejcted","projected"],["proejcting","projecting"],["proejction","projection"],["proepr","proper"],["proeprly","properly"],["proeprties","properties"],["proeprty","property"],["proerties","properties"],["proessing","processing"],["profesional","professional"],["profesionally","professionally"],["profesionals","professionals"],["profesor","professor"],["professer","professor"],["proffesed","professed"],["proffesion","profession"],["proffesional","professional"],["proffesor","professor"],["proffessor","professor"],["profie","profile"],["profied","profiled"],["profier","profiler"],["profies","profiles"],["profilic","prolific"],["profirle","profile"],["profirled","profiled"],["profirler","profiler"],["profirles","profiles"],["profissional","professional"],["proflie","profile"],["proflier","profiler"],["proflies","profiles"],["profling","profiling"],["profund","profound"],["profundly","profoundly"],["progagate","propagate"],["progagated","propagated"],["progagates","propagates"],["progagating","propagating"],["progagation","propagation"],["progagations","propagations"],["progagator","propagator"],["progagators","propagators"],["progam","program"],["progamability","programmability"],["progamable","programmable"],["progamatic","programmatic"],["progamatically","programmatically"],["progamed","programmed"],["progamer","programmer"],["progamers","programmers"],["progaming","programming"],["progamm","program"],["progammability","programmability"],["progammable","programmable"],["progammatic","programmatic"],["progammatically","programmatically"],["progammed","programmed"],["progammer","programmer"],["progammers","programmers"],["progamming","programming"],["progamms","programs"],["progams","programs"],["progapate","propagate"],["progapated","propagated"],["progapates","propagates"],["progapating","propagating"],["progapation","propagation"],["progapations","propagations"],["progapator","propagator"],["progapators","propagators"],["progaramm","program"],["progarammability","programmability"],["progarammable","programmable"],["progarammatic","programmatic"],["progarammatically","programmatically"],["progarammed","programmed"],["progarammer","programmer"],["progarammers","programmers"],["progaramming","programming"],["progaramms","programs"],["progarm","program"],["progarmability","programmability"],["progarmable","programmable"],["progarmatic","programmatic"],["progarmatically","programmatically"],["progarmed","programmed"],["progarmer","programmer"],["progarmers","programmers"],["progarming","programming"],["progarms","programs"],["progate","propagate"],["progated","propagated"],["progates","propagates"],["progating","propagating"],["progation","propagation"],["progations","propagations"],["progess","progress"],["progessbar","progressbar"],["progessed","progressed"],["progesses","progresses"],["progessive","progressive"],["progessor","progressor"],["progesss","progress"],["progesssive","progressive"],["progidy","prodigy"],["programable","programmable"],["programatic","programmatic"],["programatically","programmatically"],["programattically","programmatically"],["programd","programmed"],["programemer","programmer"],["programemers","programmers"],["programers","programmers"],["programmaticaly","programmatically"],["programmend","programmed"],["programmetically","programmatically"],["programmical","programmatical"],["programmign","programming"],["programmming","programming"],["programms","programs"],["progreess","progress"],["progres","progress"],["progresively","progressively"],["progresss","progress"],["progrewss","progress"],["progrmae","program"],["progrss","progress"],["prohabition","prohibition"],["prohibitted","prohibited"],["prohibitting","prohibiting"],["prohibt","prohibit"],["prohibted","prohibited"],["prohibting","prohibiting"],["prohibts","prohibits"],["proirity","priority"],["projct's","project's"],["projct","project"],["projction","projection"],["projctions","projections"],["projctor","projector"],["projctors","projectors"],["projcts","projects"],["projectd","projected"],["projectio","projection"],["projecttion","projection"],["projet","project"],["projetction","projection"],["projeted","projected"],["projeting","projecting"],["projets","projects"],["prolbems","problems"],["prolem","problem"],["prolematic","problematic"],["prolems","problems"],["prologomena","prolegomena"],["prominance","prominence"],["prominant","prominent"],["prominantly","prominently"],["promis","promise"],["promiscous","promiscuous"],["promiss","promise"],["promissed","promised"],["promisses","promises"],["promissing","promising"],["promixity","proximity"],["prommpt","prompt"],["prommpts","prompts"],["promotted","promoted"],["promprted","prompted"],["promps","prompts"],["promt","prompt"],["promts","prompts"],["pronnounced","pronounced"],["pronomial","pronominal"],["prononciation","pronunciation"],["pronouce","pronounce"],["pronouced","pronounced"],["pronounched","pronounced"],["pronounciation","pronunciation"],["pronunce","pronounce"],["proocecure","procedure"],["proocecures","procedures"],["proocedure","procedure"],["proocedures","procedures"],["proocess","process"],["proocessed","processed"],["proocesses","processes"],["proocessing","processing"],["proocol","protocol"],["proocols","protocols"],["prooduce","produce"],["prooduced","produced"],["prooduces","produces"],["prooduct","product"],["prooerties","properties"],["prooerty","property"],["prool","pool"],["prooof","proof"],["prooper","proper"],["prooperly","properly"],["prooperties","properties"],["prooperty","property"],["proose","propose"],["proosed","proposed"],["prooses","proposes"],["proove","prove"],["prooved","proved"],["prooven","proven"],["prooves","proves"],["prooving","proving"],["proovread","proofread"],["prooxies","proxies"],["prooxy","proxy"],["propably","probably"],["propage","propagate"],["propatagion","propagation"],["propator","propagator"],["propators","propagators"],["propbably","probably"],["propely","properly"],["propeoperties","properties"],["propereties","properties"],["properety","property"],["properies","properties"],["properites","properties"],["properities","properties"],["properries","properties"],["properrt","property"],["properrys","properties"],["propert","property"],["properteis","properties"],["propertery","property"],["propertion","proportion"],["propertional","proportional"],["propertions","proportions"],["propertise","properties"],["propertu","property"],["propertus","properties"],["propertys","properties"],["propertyst","properties"],["propeties","properties"],["propetry","property"],["propetrys","properties"],["propety","property"],["propetys","properties"],["propgated","propagated"],["prophacy","prophecy"],["propietary","proprietary"],["propietries","proprietaries"],["propietry","proprietary"],["propigate","propagate"],["propigation","propagation"],["proplem","problem"],["propmt","prompt"],["propmted","prompted"],["propmter","prompter"],["propmts","prompts"],["propoagate","propagate"],["propoerties","properties"],["propoerty","property"],["propoganda","propaganda"],["propogate","propagate"],["propogated","propagated"],["propogates","propagates"],["propogating","propagating"],["propogation","propagation"],["proporpotion","proportion"],["proporpotional","proportional"],["proportianal","proportional"],["proporties","properties"],["proportinal","proportional"],["proporty","property"],["propostion","proposition"],["proppely","properly"],["propper","proper"],["propperly","properly"],["propperties","properties"],["propperty","property"],["proprely","properly"],["propreties","properties"],["proprety","property"],["proprietory","proprietary"],["proproable","probable"],["proproably","probably"],["proprocessed","preprocessed"],["proprogate","propagate"],["proprogated","propagated"],["proprogates","propagates"],["proprogating","propagating"],["proprogation","propagation"],["proprogations","propagations"],["proprogator","propagator"],["proprogators","propagators"],["proproties","properties"],["proprotion","proportion"],["proprotional","proportional"],["proprotionally","proportionally"],["proprotions","proportions"],["proprty","property"],["propt","prompt"],["propteries","properties"],["propterties","properties"],["propterty","property"],["propvider","provider"],["prority","priority"],["prorotype","prototype"],["proseletyzing","proselytizing"],["prosess","process"],["prosessor","processor"],["protable","portable"],["protaganist","protagonist"],["protaganists","protagonists"],["protcol","protocol"],["protcols","protocols"],["protcool","protocol"],["protcools","protocols"],["protcted","protected"],["protecion","protection"],["protectiv","protective"],["protedcted","protected"],["protential","potential"],["protext","protect"],["protocal","protocol"],["protocals","protocols"],["protocl","protocol"],["protocls","protocols"],["protoco","protocol"],["protocoll","protocol"],["protocolls","protocols"],["protocos","protocols"],["protoganist","protagonist"],["protoge","protege"],["protol","protocol"],["protols","protocols"],["prototyes","prototypes"],["protoype","prototype"],["protoyped","prototyped"],["protoypes","prototypes"],["protoyping","prototyping"],["protoytpe","prototype"],["protoytpes","prototypes"],["protrait","portrait"],["protraits","portraits"],["protrayed","portrayed"],["protruberance","protuberance"],["protruberances","protuberances"],["prouncements","pronouncements"],["provacative","provocative"],["provded","provided"],["provder","provider"],["provdided","provided"],["provdie","provide"],["provdied","provided"],["provdies","provides"],["provding","providing"],["provences","provinces"],["provicde","provide"],["provicded","provided"],["provicdes","provides"],["provicial","provincial"],["provideres","providers"],["providewd","provided"],["providfers","providers"],["provieded","provided"],["proviedes","provides"],["provinicial","provincial"],["provisioing","provisioning"],["provisiong","provisioning"],["provisionging","provisioning"],["provisiosn","provision"],["provisonal","provisional"],["provive","provide"],["provived","provided"],["provives","provides"],["proviving","providing"],["provode","provide"],["provoded","provided"],["provoder","provider"],["provodes","provides"],["provoding","providing"],["provods","provides"],["provsioning","provisioning"],["proximty","proximity"],["prozess","process"],["prpeparations","preparations"],["prpose","propose"],["prposed","proposed"],["prposer","proposer"],["prposers","proposers"],["prposes","proposes"],["prposiing","proposing"],["prrcision","precision"],["prrottypes","prototypes"],["prset","preset"],["prsets","presets"],["prtinf","printf"],["prufe","proof"],["prviate","private"],["psaswd","passwd"],["pseude","pseudo"],["pseudononymous","pseudonymous"],["pseudonyn","pseudonym"],["pseudopoential","pseudopotential"],["pseudopoentials","pseudopotentials"],["pseudorinverse","pseudoinverse"],["pseuo-palette","pseudo-palette"],["psitoin","position"],["psitoined","positioned"],["psitoins","positions"],["psot","post"],["psots","posts"],["psrameter","parameter"],["pssed","passed"],["pssibility","possibility"],["psudo","pseudo"],["psudoinverse","pseudoinverse"],["psuedo","pseudo"],["psuedo-fork","pseudo-fork"],["psuedoinverse","pseudoinverse"],["psuedolayer","pseudolayer"],["psuh","push"],["psychadelic","psychedelic"],["psycology","psychology"],["psyhic","psychic"],["ptd","pdf"],["ptherad","pthread"],["ptherads","pthreads"],["pthon","python"],["pthred","pthread"],["pthreds","pthreads"],["ptorions","portions"],["ptrss","press"],["pubilsh","publish"],["pubilshed","published"],["pubilsher","publisher"],["pubilshers","publishers"],["pubilshing","publishing"],["pubish","publish"],["pubished","published"],["pubisher","publisher"],["pubishers","publishers"],["pubishing","publishing"],["publcation","publication"],["publcise","publicise"],["publcize","publicize"],["publiaher","publisher"],["publically","publicly"],["publicaly","publicly"],["publiched","published"],["publicher","publisher"],["publichers","publishers"],["publiches","publishes"],["publiching","publishing"],["publihsed","published"],["publihser","publisher"],["publised","published"],["publisehd","published"],["publisehr","publisher"],["publisehrs","publishers"],["publiser","publisher"],["publisers","publishers"],["publisged","published"],["publisger","publisher"],["publisgers","publishers"],["publishd","published"],["publisheed","published"],["publisherr","publisher"],["publishher","publisher"],["publishor","publisher"],["publishr","publisher"],["publishre","publisher"],["publishrs","publishers"],["publissher","publisher"],["publlisher","publisher"],["publsh","publish"],["publshed","published"],["publsher","publisher"],["publshers","publishers"],["publshing","publishing"],["publsih","publish"],["publsihed","published"],["publsiher","publisher"],["publsihers","publishers"],["publsihes","publishes"],["publsihing","publishing"],["publuc","public"],["publucation","publication"],["publush","publish"],["publusher","publisher"],["publushers","publishers"],["publushes","publishes"],["publushing","publishing"],["puchasing","purchasing"],["Pucini","Puccini"],["Puertorrican","Puerto Rican"],["Puertorricans","Puerto Ricans"],["pulisher","publisher"],["pullrequest","pull request"],["pullrequests","pull requests"],["pumkin","pumpkin"],["punctation","punctuation"],["puplar","popular"],["puplarity","popularity"],["puplate","populate"],["puplated","populated"],["puplates","populates"],["puplating","populating"],["puplation","population"],["puplisher","publisher"],["pupose","purpose"],["puposes","purposes"],["pupulated","populated"],["purcahed","purchased"],["purcahse","purchase"],["purgest","purges"],["puritannical","puritanical"],["purposedly","purposely"],["purpotedly","purportedly"],["purpse","purpose"],["pursuade","persuade"],["pursuaded","persuaded"],["pursuades","persuades"],["pusehd","pushed"],["pususading","persuading"],["puting","putting"],["putpose","purpose"],["putposed","purposed"],["putposes","purposes"],["pwoer","power"],["pxoxied","proxied"],["pxoxies","proxies"],["pxoxy","proxy"],["pyhon","python"],["pyhsical","physical"],["pyhsically","physically"],["pyhsicals","physicals"],["pyhsicaly","physically"],["pyhthon","python"],["pyhton","python"],["pyramide","pyramid"],["pyramides","pyramids"],["pyrhon","python"],["pyscic","psychic"],["pythin","python"],["pythjon","python"],["pytnon","python"],["pytohn","python"],["pyton","python"],["pytyon","python"],["qest","quest"],["qests","quests"],["qeuest","quest"],["qeuests","quests"],["qeueue","queue"],["qeust","quest"],["qeusts","quests"],["qiest","quest"],["qiests","quests"],["qith","with"],["qoute","quote"],["qouted","quoted"],["qoutes","quotes"],["qouting","quoting"],["quadddec","quaddec"],["quadranle","quadrangle"],["quailified","qualified"],["qualfied","qualified"],["qualfy","qualify"],["qualifer","qualifier"],["qualitification","qualification"],["qualitifications","qualifications"],["quanitified","quantified"],["quantaties","quantities"],["quantaty","quantity"],["quantitites","quantities"],["quantititive","quantitative"],["quantitity","quantity"],["quantitiy","quantity"],["quarantaine","quarantine"],["quarentine","quarantine"],["quartenion","quaternion"],["quartenions","quaternions"],["quartically","quadratically"],["quatation","quotation"],["quater","quarter"],["quation","equation"],["quations","equations"],["quckstarter","quickstarter"],["qudrangles","quadrangles"],["quee","queue"],["Queenland","Queensland"],["queing","queueing"],["queiried","queried"],["queisce","quiesce"],["queriable","queryable"],["quering","querying"],["querries","queries"],["queryies","queries"],["queryinterace","queryinterface"],["querys","queries"],["queset","quest"],["quesets","quests"],["quesiton","question"],["quesitonable","questionable"],["quesitons","questions"],["quesr","quest"],["quesrs","quests"],["questionaire","questionnaire"],["questionnair","questionnaire"],["questoin","question"],["questoins","questions"],["questonable","questionable"],["queu","queue"],["queueud","queued"],["queus","queues"],["quew","queue"],["quickier","quicker"],["quicklyu","quickly"],["quickyl","quickly"],["quicly","quickly"],["quiessent","quiescent"],["quiests","quests"],["quikc","quick"],["quinessential","quintessential"],["quiting","quitting"],["quitt","quit"],["quitted","quit"],["quizes","quizzes"],["quotaion","quotation"],["quoteed","quoted"],["quottes","quotes"],["quried","queried"],["quroum","quorum"],["qust","quest"],["qusts","quests"],["rabinnical","rabbinical"],["racaus","raucous"],["ractise","practise"],["radation","radiation"],["radiactive","radioactive"],["radiaton","radiation"],["radify","ratify"],["radiobuttion","radiobutton"],["radis","radix"],["rady","ready"],["raed","read"],["raeding","reading"],["raeds","reads"],["raedy","ready"],["raelly","really"],["raisedd","raised"],["ralation","relation"],["randmom","random"],["randomally","randomly"],["raoming","roaming"],["raotat","rotate"],["raotate","rotate"],["raotated","rotated"],["raotates","rotates"],["raotating","rotating"],["raotation","rotation"],["raotations","rotations"],["raotats","rotates"],["raplace","replace"],["raplacing","replacing"],["rapresent","represent"],["rapresentation","representation"],["rapresented","represented"],["rapresenting","representing"],["rapresents","represents"],["rapsberry","raspberry"],["rarelly","rarely"],["rarified","rarefied"],["rasberry","raspberry"],["rasie","raise"],["rasied","raised"],["rasies","raises"],["rasiing","raising"],["rasing","raising"],["rasons","reasons"],["raspbery","raspberry"],["raspoberry","raspberry"],["rathar","rather"],["rathern","rather"],["rcall","recall"],["rceate","create"],["rceating","creating"],["rduce","reduce"],["re-attachement","re-attachment"],["re-defiend","re-defined"],["re-engeneer","re-engineer"],["re-engeneering","re-engineering"],["re-evaulated","re-evaluated"],["re-impliment","re-implement"],["re-implimenting","re-implementing"],["re-negatiotiable","re-negotiable"],["re-negatiotiate","re-negotiate"],["re-negatiotiated","re-negotiated"],["re-negatiotiates","re-negotiates"],["re-negatiotiating","re-negotiating"],["re-negatiotiation","re-negotiation"],["re-negatiotiations","re-negotiations"],["re-negatiotiator","re-negotiator"],["re-negatiotiators","re-negotiators"],["re-negoable","re-negotiable"],["re-negoate","re-negotiate"],["re-negoated","re-negotiated"],["re-negoates","re-negotiates"],["re-negoatiable","re-negotiable"],["re-negoatiate","re-negotiate"],["re-negoatiated","re-negotiated"],["re-negoatiates","re-negotiates"],["re-negoatiating","re-negotiating"],["re-negoatiation","re-negotiation"],["re-negoatiations","re-negotiations"],["re-negoatiator","re-negotiator"],["re-negoatiators","re-negotiators"],["re-negoating","re-negotiating"],["re-negoation","re-negotiation"],["re-negoations","re-negotiations"],["re-negoator","re-negotiator"],["re-negoators","re-negotiators"],["re-negociable","re-negotiable"],["re-negociate","re-negotiate"],["re-negociated","re-negotiated"],["re-negociates","re-negotiates"],["re-negociating","re-negotiating"],["re-negociation","re-negotiation"],["re-negociations","re-negotiations"],["re-negociator","re-negotiator"],["re-negociators","re-negotiators"],["re-negogtiable","re-negotiable"],["re-negogtiate","re-negotiate"],["re-negogtiated","re-negotiated"],["re-negogtiates","re-negotiates"],["re-negogtiating","re-negotiating"],["re-negogtiation","re-negotiation"],["re-negogtiations","re-negotiations"],["re-negogtiator","re-negotiator"],["re-negogtiators","re-negotiators"],["re-negoitable","re-negotiable"],["re-negoitate","re-negotiate"],["re-negoitated","re-negotiated"],["re-negoitates","re-negotiates"],["re-negoitating","re-negotiating"],["re-negoitation","re-negotiation"],["re-negoitations","re-negotiations"],["re-negoitator","re-negotiator"],["re-negoitators","re-negotiators"],["re-negoptionsotiable","re-negotiable"],["re-negoptionsotiate","re-negotiate"],["re-negoptionsotiated","re-negotiated"],["re-negoptionsotiates","re-negotiates"],["re-negoptionsotiating","re-negotiating"],["re-negoptionsotiation","re-negotiation"],["re-negoptionsotiations","re-negotiations"],["re-negoptionsotiator","re-negotiator"],["re-negoptionsotiators","re-negotiators"],["re-negosiable","re-negotiable"],["re-negosiate","re-negotiate"],["re-negosiated","re-negotiated"],["re-negosiates","re-negotiates"],["re-negosiating","re-negotiating"],["re-negosiation","re-negotiation"],["re-negosiations","re-negotiations"],["re-negosiator","re-negotiator"],["re-negosiators","re-negotiators"],["re-negotable","re-negotiable"],["re-negotaiable","re-negotiable"],["re-negotaiate","re-negotiate"],["re-negotaiated","re-negotiated"],["re-negotaiates","re-negotiates"],["re-negotaiating","re-negotiating"],["re-negotaiation","re-negotiation"],["re-negotaiations","re-negotiations"],["re-negotaiator","re-negotiator"],["re-negotaiators","re-negotiators"],["re-negotaible","re-negotiable"],["re-negotaite","re-negotiate"],["re-negotaited","re-negotiated"],["re-negotaites","re-negotiates"],["re-negotaiting","re-negotiating"],["re-negotaition","re-negotiation"],["re-negotaitions","re-negotiations"],["re-negotaitor","re-negotiator"],["re-negotaitors","re-negotiators"],["re-negotate","re-negotiate"],["re-negotated","re-negotiated"],["re-negotates","re-negotiates"],["re-negotatiable","re-negotiable"],["re-negotatiate","re-negotiate"],["re-negotatiated","re-negotiated"],["re-negotatiates","re-negotiates"],["re-negotatiating","re-negotiating"],["re-negotatiation","re-negotiation"],["re-negotatiations","re-negotiations"],["re-negotatiator","re-negotiator"],["re-negotatiators","re-negotiators"],["re-negotatible","re-negotiable"],["re-negotatie","re-negotiate"],["re-negotatied","re-negotiated"],["re-negotaties","re-negotiates"],["re-negotating","re-negotiating"],["re-negotation","re-negotiation"],["re-negotations","re-negotiations"],["re-negotatior","re-negotiator"],["re-negotatiors","re-negotiators"],["re-negotator","re-negotiator"],["re-negotators","re-negotiators"],["re-negothiable","re-negotiable"],["re-negothiate","re-negotiate"],["re-negothiated","re-negotiated"],["re-negothiates","re-negotiates"],["re-negothiating","re-negotiating"],["re-negothiation","re-negotiation"],["re-negothiations","re-negotiations"],["re-negothiator","re-negotiator"],["re-negothiators","re-negotiators"],["re-negotible","re-negotiable"],["re-negoticable","re-negotiable"],["re-negoticate","re-negotiate"],["re-negoticated","re-negotiated"],["re-negoticates","re-negotiates"],["re-negoticating","re-negotiating"],["re-negotication","re-negotiation"],["re-negotications","re-negotiations"],["re-negoticator","re-negotiator"],["re-negoticators","re-negotiators"],["re-negotioable","re-negotiable"],["re-negotioate","re-negotiate"],["re-negotioated","re-negotiated"],["re-negotioates","re-negotiates"],["re-negotioating","re-negotiating"],["re-negotioation","re-negotiation"],["re-negotioations","re-negotiations"],["re-negotioator","re-negotiator"],["re-negotioators","re-negotiators"],["re-negotioble","re-negotiable"],["re-negotion","re-negotiation"],["re-negotionable","re-negotiable"],["re-negotionate","re-negotiate"],["re-negotionated","re-negotiated"],["re-negotionates","re-negotiates"],["re-negotionating","re-negotiating"],["re-negotionation","re-negotiation"],["re-negotionations","re-negotiations"],["re-negotionator","re-negotiator"],["re-negotionators","re-negotiators"],["re-negotions","re-negotiations"],["re-negotiotable","re-negotiable"],["re-negotiotate","re-negotiate"],["re-negotiotated","re-negotiated"],["re-negotiotates","re-negotiates"],["re-negotiotating","re-negotiating"],["re-negotiotation","re-negotiation"],["re-negotiotations","re-negotiations"],["re-negotiotator","re-negotiator"],["re-negotiotators","re-negotiators"],["re-negotiote","re-negotiate"],["re-negotioted","re-negotiated"],["re-negotiotes","re-negotiates"],["re-negotioting","re-negotiating"],["re-negotiotion","re-negotiation"],["re-negotiotions","re-negotiations"],["re-negotiotor","re-negotiator"],["re-negotiotors","re-negotiators"],["re-negotitable","re-negotiable"],["re-negotitae","re-negotiate"],["re-negotitaed","re-negotiated"],["re-negotitaes","re-negotiates"],["re-negotitaing","re-negotiating"],["re-negotitaion","re-negotiation"],["re-negotitaions","re-negotiations"],["re-negotitaor","re-negotiator"],["re-negotitaors","re-negotiators"],["re-negotitate","re-negotiate"],["re-negotitated","re-negotiated"],["re-negotitates","re-negotiates"],["re-negotitating","re-negotiating"],["re-negotitation","re-negotiation"],["re-negotitations","re-negotiations"],["re-negotitator","re-negotiator"],["re-negotitators","re-negotiators"],["re-negotite","re-negotiate"],["re-negotited","re-negotiated"],["re-negotites","re-negotiates"],["re-negotiting","re-negotiating"],["re-negotition","re-negotiation"],["re-negotitions","re-negotiations"],["re-negotitor","re-negotiator"],["re-negotitors","re-negotiators"],["re-negoziable","re-negotiable"],["re-negoziate","re-negotiate"],["re-negoziated","re-negotiated"],["re-negoziates","re-negotiates"],["re-negoziating","re-negotiating"],["re-negoziation","re-negotiation"],["re-negoziations","re-negotiations"],["re-negoziator","re-negotiator"],["re-negoziators","re-negotiators"],["re-realease","re-release"],["re-uplad","re-upload"],["re-upladed","re-uploaded"],["re-uplader","re-uploader"],["re-upladers","re-uploaders"],["re-uplading","re-uploading"],["re-uplads","re-uploads"],["re-uplaod","re-upload"],["re-uplaoded","re-uploaded"],["re-uplaoder","re-uploader"],["re-uplaoders","re-uploaders"],["re-uplaoding","re-uploading"],["re-uplaods","re-uploads"],["re-uplod","re-upload"],["re-uploded","re-uploaded"],["re-uploder","re-uploader"],["re-uploders","re-uploaders"],["re-uploding","re-uploading"],["re-uplods","re-uploads"],["reaaly","really"],["reaarange","rearrange"],["reaaranges","rearranges"],["reaasigned","reassigned"],["reacahable","reachable"],["reacahble","reachable"],["reaccurring","recurring"],["reaceive","receive"],["reacheable","reachable"],["reachers","readers"],["reachs","reaches"],["reacing","reaching"],["reacll","recall"],["reactquire","reacquire"],["readabilty","readability"],["readanle","readable"],["readapted","re-adapted"],["readble","readable"],["readdrss","readdress"],["readdrssed","readdressed"],["readdrsses","readdresses"],["readdrssing","readdressing"],["readeable","readable"],["reademe","README"],["readiable","readable"],["readibility","readability"],["readible","readable"],["readig","reading"],["readigs","readings"],["readius","radius"],["readl-only","read-only"],["readmition","readmission"],["readnig","reading"],["readning","reading"],["readyness","readiness"],["reaeched","reached"],["reagrding","regarding"],["reaktivate","reactivate"],["reaktivated","reactivated"],["realease","release"],["realeased","released"],["realeases","releases"],["realiable","reliable"],["realitime","realtime"],["realitvely","relatively"],["realiy","really"],["realiztion","realization"],["realiztions","realizations"],["realling","really"],["reallize","realize"],["reallllly","really"],["reallocae","reallocate"],["reallocaes","reallocates"],["reallocaiing","reallocating"],["reallocaing","reallocating"],["reallocaion","reallocation"],["reallocaions","reallocations"],["reallocaite","reallocate"],["reallocaites","reallocates"],["reallocaiting","reallocating"],["reallocaition","reallocation"],["reallocaitions","reallocations"],["reallocaiton","reallocation"],["reallocaitons","reallocations"],["realsitic","realistic"],["realted","related"],["realyl","really"],["reamde","README"],["reamins","remains"],["reander","render"],["reanme","rename"],["reanmed","renamed"],["reanmes","renames"],["reanming","renaming"],["reaon","reason"],["reaons","reasons"],["reapeat","repeat"],["reapeated","repeated"],["reapeater","repeater"],["reapeating","repeating"],["reapeats","repeats"],["reappeares","reappears"],["reapper","reappear"],["reappered","reappeared"],["reappering","reappearing"],["rearely","rarely"],["rearranable","rearrangeable"],["rearrane","rearrange"],["rearraned","rearranged"],["rearranement","rearrangement"],["rearranements","rearrangements"],["rearranent","rearrangement"],["rearranents","rearrangements"],["rearranes","rearranges"],["rearrang","rearrange"],["rearrangable","rearrangeable"],["rearrangaeble","rearrangeable"],["rearrangaelbe","rearrangeable"],["rearrangd","rearranged"],["rearrangde","rearranged"],["rearrangent","rearrangement"],["rearrangents","rearrangements"],["rearrangmeent","rearrangement"],["rearrangmeents","rearrangements"],["rearrangmenet","rearrangement"],["rearrangmenets","rearrangements"],["rearrangment","rearrangement"],["rearrangments","rearrangements"],["rearrangnig","rearranging"],["rearrangning","rearranging"],["rearrangs","rearranges"],["rearrangse","rearranges"],["rearrangt","rearrangement"],["rearrangte","rearrange"],["rearrangteable","rearrangeable"],["rearrangteables","rearrangeables"],["rearrangted","rearranged"],["rearrangtement","rearrangement"],["rearrangtements","rearrangements"],["rearrangtes","rearranges"],["rearrangting","rearranging"],["rearrangts","rearrangements"],["rearraning","rearranging"],["rearranment","rearrangement"],["rearranments","rearrangements"],["rearrant","rearrangement"],["rearrants","rearrangements"],["reasearch","research"],["reasearcher","researcher"],["reasearchers","researchers"],["reasnable","reasonable"],["reasoable","reasonable"],["reasonabily","reasonably"],["reasonble","reasonable"],["reasonbly","reasonably"],["reasonnable","reasonable"],["reasonnably","reasonably"],["reassinging","reassigning"],["reassocition","reassociation"],["reasssign","reassign"],["reatime","realtime"],["reattachement","reattachment"],["rebiulding","rebuilding"],["rebllions","rebellions"],["reboto","reboot"],["rebounce","rebound"],["rebuilded","rebuilt"],["rebuillt","rebuilt"],["rebuils","rebuilds"],["rebuit","rebuilt"],["rebuld","rebuild"],["rebulding","rebuilding"],["rebulds","rebuilds"],["rebulid","rebuild"],["rebuliding","rebuilding"],["rebulids","rebuilds"],["rebulit","rebuilt"],["recahed","reached"],["recal","recall"],["recalcualte","recalculate"],["recalcualted","recalculated"],["recalcualter","re-calculator"],["recalcualtes","recalculates"],["recalcualting","recalculating"],["recalcualtion","recalculation"],["recalcualtions","recalculations"],["recalcuate","recalculate"],["recalcuated","recalculated"],["recalcuates","recalculates"],["recalcuations","recalculations"],["recalculaion","recalculation"],["recalculatble","re-calculable"],["recalcution","recalculation"],["recalulate","recalculate"],["recalulation","recalculation"],["recangle","rectangle"],["recangles","rectangles"],["reccomend","recommend"],["reccomendations","recommendations"],["reccomended","recommended"],["reccomending","recommending"],["reccommend","recommend"],["reccommendation","recommendation"],["reccommendations","recommendations"],["reccommended","recommended"],["reccommending","recommending"],["reccommends","recommends"],["recconecct","reconnect"],["recconeccted","reconnected"],["recconeccting","reconnecting"],["recconecction","reconnection"],["recconecctions","reconnections"],["recconeccts","reconnects"],["recconect","reconnect"],["recconected","reconnected"],["recconecting","reconnecting"],["recconection","reconnection"],["recconections","reconnections"],["recconects","reconnects"],["recconeect","reconnect"],["recconeected","reconnected"],["recconeecting","reconnecting"],["recconeection","reconnection"],["recconeections","reconnections"],["recconeects","reconnects"],["recconenct","reconnect"],["recconencted","reconnected"],["recconencting","reconnecting"],["recconenction","reconnection"],["recconenctions","reconnections"],["recconencts","reconnects"],["recconet","reconnect"],["recconeted","reconnected"],["recconeting","reconnecting"],["recconetion","reconnection"],["recconetions","reconnections"],["recconets","reconnects"],["reccord","record"],["reccorded","recorded"],["reccording","recording"],["reccords","records"],["reccuring","recurring"],["reccursive","recursive"],["reccursively","recursively"],["receeded","receded"],["receeding","receding"],["receied","received"],["receieve","receive"],["receieved","received"],["receieves","receives"],["receieving","receiving"],["receipient","recipient"],["receipients","recipients"],["receiption","reception"],["receiv","receive"],["receivd","received"],["receivedfrom","received from"],["receiveing","receiving"],["receiviing","receiving"],["receivs","receives"],["recenet","recent"],["recenlty","recently"],["recenly","recently"],["recenty","recently"],["recepient","recipient"],["recepients","recipients"],["recepion","reception"],["receve","receive"],["receved","received"],["receves","receives"],["recevie","receive"],["recevied","received"],["recevier","receiver"],["recevies","receives"],["receving","receiving"],["rechable","reachable"],["rechargable","rechargeable"],["recheability","reachability"],["reched","reached"],["rechek","recheck"],["recide","reside"],["recided","resided"],["recident","resident"],["recidents","residents"],["reciding","residing"],["reciepents","recipients"],["reciept","receipt"],["recieve","receive"],["recieved","received"],["reciever","receiver"],["recievers","receivers"],["recieves","receives"],["recieving","receiving"],["recievs","receives"],["recipiant","recipient"],["recipiants","recipients"],["recipie","recipe"],["recipies","recipes"],["reciprocoal","reciprocal"],["reciprocoals","reciprocals"],["recive","receive"],["recived","received"],["reciver","receiver"],["recivers","receivers"],["recivership","receivership"],["recives","receives"],["reciving","receiving"],["reclaimation","reclamation"],["recntly","recently"],["recod","record"],["recofig","reconfig"],["recoginizing-","recognizing"],["recogise","recognise"],["recogize","recognize"],["recogized","recognized"],["recogizes","recognizes"],["recogizing","recognizing"],["recogniced","recognised"],["recogninse","recognise"],["recognizeable","recognizable"],["recognzied","recognized"],["recomend","recommend"],["recomendation","recommendation"],["recomendations","recommendations"],["recomendatoin","recommendation"],["recomendatoins","recommendations"],["recomended","recommended"],["recomending","recommending"],["recomends","recommends"],["recommad","recommend"],["recommaded","recommended"],["recommand","recommend"],["recommandation","recommendation"],["recommanded","recommended"],["recommanding","recommending"],["recommands","recommends"],["recommd","recommend"],["recommdation","recommendation"],["recommded","recommended"],["recommdend","recommend"],["recommdended","recommended"],["recommdends","recommends"],["recommds","recommends"],["recommed","recommend"],["recommedation","recommendation"],["recommedations","recommendations"],["recommeded","recommended"],["recommeding","recommending"],["recommeds","recommends"],["recommened","recommended"],["recommeneded","recommended"],["recommented","recommended"],["recommmend","recommend"],["recommmended","recommended"],["recommmends","recommends"],["recommnd","recommend"],["recommnded","recommended"],["recommnds","recommends"],["recommned","recommend"],["recommneded","recommended"],["recommneds","recommends"],["recommpile","recompile"],["recommpiled","recompiled"],["recompence","recompense"],["recomput","recompute"],["recomputaion","recomputation"],["recompuute","recompute"],["recompuuted","recomputed"],["recompuutes","recomputes"],["recompuuting","recomputing"],["reconaissance","reconnaissance"],["reconcilation","reconciliation"],["recondifure","reconfigure"],["reconecct","reconnect"],["reconeccted","reconnected"],["reconeccting","reconnecting"],["reconecction","reconnection"],["reconecctions","reconnections"],["reconeccts","reconnects"],["reconect","reconnect"],["reconected","reconnected"],["reconecting","reconnecting"],["reconection","reconnection"],["reconections","reconnections"],["reconects","reconnects"],["reconeect","reconnect"],["reconeected","reconnected"],["reconeecting","reconnecting"],["reconeection","reconnection"],["reconeections","reconnections"],["reconeects","reconnects"],["reconenct","reconnect"],["reconencted","reconnected"],["reconencting","reconnecting"],["reconenction","reconnection"],["reconenctions","reconnections"],["reconencts","reconnects"],["reconet","reconnect"],["reconeted","reconnected"],["reconeting","reconnecting"],["reconetion","reconnection"],["reconetions","reconnections"],["reconets","reconnects"],["reconfifure","reconfigure"],["reconfiged","reconfigured"],["reconfugire","reconfigure"],["reconfugre","reconfigure"],["reconfugure","reconfigure"],["reconfure","reconfigure"],["recongifure","reconfigure"],["recongize","recognize"],["recongized","recognized"],["recongnises","recognises"],["recongnizes","recognizes"],["reconize","recognize"],["reconized","recognized"],["reconnaisance","reconnaissance"],["reconnaissence","reconnaissance"],["reconnct","reconnect"],["reconncted","reconnected"],["reconncting","reconnecting"],["reconncts","reconnects"],["reconsidder","reconsider"],["reconstrcut","reconstruct"],["reconstrcuted","reconstructed"],["reconstrcution","reconstruction"],["reconstuct","reconstruct"],["reconstucted","reconstructed"],["reconstucting","reconstructing"],["reconstucts","reconstructs"],["reconsturction","reconstruction"],["recontruct","reconstruct"],["recontructed","reconstructed"],["recontructing","reconstructing"],["recontruction","reconstruction"],["recontructions","reconstructions"],["recontructor","reconstructor"],["recontructors","reconstructors"],["recontructs","reconstructs"],["recordproducer","record producer"],["recordss","records"],["recored","recorded"],["recoriding","recording"],["recourced","resourced"],["recources","resources"],["recourcing","resourcing"],["recpie","recipe"],["recpies","recipes"],["recquired","required"],["recrational","recreational"],["recreateation","recreation"],["recrod","record"],["recrods","records"],["recrusevly","recursively"],["recrusion","recursion"],["recrusive","recursive"],["recrusivelly","recursively"],["recrusively","recursively"],["rectange","rectangle"],["rectanges","rectangles"],["rectanglar","rectangular"],["rectangluar","rectangular"],["rectiinear","rectilinear"],["recude","reduce"],["recuiting","recruiting"],["reculrively","recursively"],["recuring","recurring"],["recurisvely","recursively"],["recurively","recursively"],["recurrance","recurrence"],["recursily","recursively"],["recursivelly","recursively"],["recursivion","recursion"],["recursivley","recursively"],["recursivly","recursively"],["recurssed","recursed"],["recursses","recurses"],["recurssing","recursing"],["recurssion","recursion"],["recurssive","recursive"],["recusrive","recursive"],["recusrively","recursively"],["recusrsive","recursive"],["recustion","recursion"],["recyclying","recycling"],["recylcing","recycling"],["recyle","recycle"],["recyled","recycled"],["recyles","recycles"],["recyling","recycling"],["redability","readability"],["redandant","redundant"],["redeable","readable"],["redeclaation","redeclaration"],["redefiend","redefined"],["redefiende","redefined"],["redefintion","redefinition"],["redefintions","redefinitions"],["redenderer","renderer"],["redered","rendered"],["redict","redirect"],["rediculous","ridiculous"],["redidual","residual"],["redifine","redefine"],["redifinition","redefinition"],["redifinitions","redefinitions"],["redifintion","redefinition"],["redifintions","redefinitions"],["reding","reading"],["redings","readings"],["redircet","redirect"],["redirectd","redirected"],["redirectrion","redirection"],["redisign","redesign"],["redistirbute","redistribute"],["redistirbuted","redistributed"],["redistirbutes","redistributes"],["redistirbuting","redistributing"],["redistirbution","redistribution"],["redistributeable","redistributable"],["redistrubute","redistribute"],["redistrubuted","redistributed"],["redistrubution","redistribution"],["redistrubutions","redistributions"],["redliens","redlines"],["rednerer","renderer"],["redonly","readonly"],["redudancy","redundancy"],["redudant","redundant"],["redunancy","redundancy"],["redunant","redundant"],["redundacy","redundancy"],["redundand","redundant"],["redundat","redundant"],["redundency","redundancy"],["redundent","redundant"],["reduntancy","redundancy"],["reduntant","redundant"],["reease","release"],["reeased","released"],["reeaser","releaser"],["reeasers","releasers"],["reeases","releases"],["reeasing","releasing"],["reedeming","redeeming"],["reegion","region"],["reegions","regions"],["reelation","relation"],["reelease","release"],["reenable","re-enable"],["reenabled","re-enabled"],["reename","rename"],["reencode","re-encode"],["reenfoce","reinforce"],["reenfoced","reinforced"],["reenforced","reinforced"],["reesrved","reserved"],["reesult","result"],["reeturn","return"],["reeturned","returned"],["reeturning","returning"],["reeturns","returns"],["reevalute","reevaluate"],["reevaulating","reevaluating"],["refcound","refcount"],["refcounf","refcount"],["refect","reflect"],["refected","reflected"],["refecting","reflecting"],["refectiv","reflective"],["refector","refactor"],["refectoring","refactoring"],["refects","reflects"],["refedendum","referendum"],["refeinement","refinement"],["refeinements","refinements"],["refelects","reflects"],["refence","reference"],["refences","references"],["refenence","reference"],["refenrenced","referenced"],["referal","referral"],["referance","reference"],["referanced","referenced"],["referances","references"],["referant","referent"],["referebces","references"],["referece","reference"],["referecence","reference"],["referecences","references"],["refereces","references"],["referecne","reference"],["refered","referred"],["referefences","references"],["referemce","reference"],["referemces","references"],["referenace","reference"],["referenc","reference"],["referencable","referenceable"],["referencial","referential"],["referencially","referentially"],["referencs","references"],["referenct","referenced"],["referene","reference"],["referenece","reference"],["refereneced","referenced"],["refereneces","references"],["referened","referenced"],["referenence","reference"],["referenenced","referenced"],["referenences","references"],["referenes","references"],["referennces","references"],["referense","reference"],["referensed","referenced"],["referenses","references"],["referenz","reference"],["referenzes","references"],["refererd","referred"],["refererence","reference"],["referiang","referring"],["refering","referring"],["refernce","reference"],["refernced","referenced"],["referncence","reference"],["referncences","references"],["refernces","references"],["referncial","referential"],["referncing","referencing"],["refernece","reference"],["referneced","referenced"],["referneces","references"],["refernnce","reference"],["referr","refer"],["referrence","reference"],["referrenced","referenced"],["referrences","references"],["referrencing","referencing"],["referreres","referrers"],["referres","refers"],["referrs","refers"],["refertence","reference"],["refertenced","referenced"],["refertences","references"],["refesh","refresh"],["refeshed","refreshed"],["refeshes","refreshes"],["refeshing","refreshing"],["reffered","referred"],["refference","reference"],["reffering","referring"],["refferr","refer"],["reffers","refers"],["refinemenet","refinement"],["refinmenet","refinement"],["refinment","refinement"],["reflet","reflect"],["refleted","reflected"],["refleting","reflecting"],["refletion","reflection"],["refletions","reflections"],["reflets","reflects"],["refocuss","refocus"],["refocussed","refocused"],["reformating","reformatting"],["reformattd","reformatted"],["refreh","refresh"],["refrence","reference"],["refrenced","referenced"],["refrences","references"],["refrencing","referencing"],["refrerence","reference"],["refrerenced","referenced"],["refrerenceing","referencing"],["refrerences","references"],["refrerencial","referential"],["refrers","refers"],["refreshs","refreshes"],["refreshses","refreshes"],["refridgeration","refrigeration"],["refridgerator","refrigerator"],["refromatting","refomatting"],["refromist","reformist"],["refrormatting","reformatting"],["refure","refuse"],["refures","refuses"],["refusla","refusal"],["regalar","regular"],["regalars","regulars"],["regardes","regards"],["regardles","regardless"],["regardlesss","regardless"],["regaring","regarding"],["regarldess","regardless"],["regarless","regardless"],["regart","regard"],["regarted","regarded"],["regarting","regarding"],["regartless","regardless"],["regconized","recognized"],["regeister","register"],["regeistered","registered"],["regeistration","registration"],["regenarated","regenerated"],["regenrated","regenerated"],["regenratet","regenerated"],["regenrating","regenerating"],["regenration","regeneration"],["regenrative","regenerative"],["regession","regression"],["regestered","registered"],["regidstered","registered"],["regio","region"],["regiser","register"],["regisration","registration"],["regist","register"],["registartion","registration"],["registe","register"],["registed","registered"],["registeing","registering"],["registeration","registration"],["registerered","registered"],["registeres","registers"],["registeresd","registered"],["registerred","registered"],["registert","registered"],["registery","registry"],["registes","registers"],["registing","registering"],["registors","registers"],["registrain","registration"],["registraion","registration"],["registraions","registrations"],["registraration","registration"],["registrated","registered"],["registred","registered"],["registrer","register"],["registring","registering"],["registrs","registers"],["registy","registry"],["regiter","register"],["regitered","registered"],["regitering","registering"],["regiters","registers"],["regluar","regular"],["regon","region"],["regons","regions"],["regorded","recorded"],["regresion","regression"],["regresison","regression"],["regresssion","regression"],["regrigerator","refrigerator"],["regsion","region"],["regsions","regions"],["regsiter","register"],["regsitered","registered"],["regsitering","registering"],["regsiters","registers"],["regsitry","registry"],["regster","register"],["regstered","registered"],["regstering","registering"],["regsters","registers"],["regstry","registry"],["regualar","regular"],["regualarly","regularly"],["regualator","regulator"],["regualr","regular"],["regualtor","regulator"],["reguardless","regardless"],["reguarldess","regardless"],["reguarlise","regularise"],["reguarliser","regulariser"],["reguarlize","regularize"],["reguarlizer","regularizer"],["reguarly","regularly"],["reguator","regulator"],["reguire","require"],["reguired","required"],["reguirement","requirement"],["reguirements","requirements"],["reguires","requires"],["reguiring","requiring"],["regulaer","regular"],["regulaion","regulation"],["regulamentation","regulation"],["regulamentations","regulations"],["regulaotrs","regulators"],["regulaotry","regulatory"],["regularily","regularly"],["regulariry","regularly"],["regularlisation","regularisation"],["regularlise","regularise"],["regularlised","regularised"],["regularliser","regulariser"],["regularlises","regularises"],["regularlising","regularising"],["regularlization","regularization"],["regularlize","regularize"],["regularlized","regularized"],["regularlizer","regularizer"],["regularlizes","regularizes"],["regularlizing","regularizing"],["regularlly","regularly"],["regulax","regular"],["reguler","regular"],["regulr","regular"],["regultor","regulator"],["regultors","regulators"],["regultory","regulatory"],["regurlarly","regularly"],["reguster","register"],["rehersal","rehearsal"],["rehersing","rehearsing"],["reicarnation","reincarnation"],["reigining","reigning"],["reigonal","regional"],["reigster","register"],["reigstered","registered"],["reigstering","registering"],["reigsters","registers"],["reigstration","registration"],["reimplemenet","reimplement"],["reimplementaion","reimplementation"],["reimplementaions","reimplementations"],["reimplemention","reimplementation"],["reimplementions","reimplementations"],["reimplented","reimplemented"],["reimplents","reimplements"],["reimpliment","reimplement"],["reimplimenting","reimplementing"],["reimplmenet","reimplement"],["reimplment","reimplement"],["reimplmentation","reimplementation"],["reimplmented","reimplemented"],["reimplmenting","reimplementing"],["reimplments","reimplements"],["reimpplement","reimplement"],["reimpplementating","reimplementing"],["reimpplementation","reimplementation"],["reimpplemented","reimplemented"],["reimpremented","reimplemented"],["reinfoce","reinforce"],["reinfoced","reinforced"],["reinfocement","reinforcement"],["reinfocements","reinforcements"],["reinfoces","reinforces"],["reinfocing","reinforcing"],["reinitailise","reinitialise"],["reinitailised","reinitialised"],["reinitailize","reinitialize"],["reinitalize","reinitialize"],["reinitilize","reinitialize"],["reinitilized","reinitialized"],["reinstatiate","reinstantiate"],["reinstatiated","reinstantiated"],["reinstatiates","reinstantiates"],["reinstatiation","reinstantiation"],["reintantiate","reinstantiate"],["reintantiating","reinstantiating"],["reintepret","reinterpret"],["reintepreted","reinterpreted"],["reister","register"],["reitterate","reiterate"],["reitterated","reiterated"],["reitterates","reiterates"],["reivison","revision"],["rejplace","replace"],["reknown","renown"],["reknowned","renowned"],["rekursed","recursed"],["rekursion","recursion"],["rekursive","recursive"],["relaative","relative"],["relady","ready"],["relaease","release"],["relaese","release"],["relaesed","released"],["relaeses","releases"],["relaesing","releasing"],["relaged","related"],["relaimed","reclaimed"],["relaion","relation"],["relaive","relative"],["relaly","really"],["relase","release"],["relased","released"],["relaser","releaser"],["relases","releases"],["relashionship","relationship"],["relashionships","relationships"],["relasing","releasing"],["relataive","relative"],["relatated","related"],["relatd","related"],["relatdness","relatedness"],["relatibe","relative"],["relatibely","relatively"],["relatievly","relatively"],["relatiopnship","relationship"],["relativ","relative"],["relativly","relatively"],["relavant","relevant"],["relavent","relevant"],["releaase","release"],["releaased","released"],["relead","reload"],["releae","release"],["releaed","released"],["releaeing","releasing"],["releaing","releasing"],["releas","release"],["releasead","released"],["releasse","release"],["releated","related"],["releating","relating"],["releation","relation"],["releations","relations"],["releationship","relationship"],["releationships","relationships"],["releative","relative"],["releavant","relevant"],["relecant","relevant"],["releive","relieve"],["releived","relieved"],["releiver","reliever"],["releoad","reload"],["relese","release"],["relesed","released"],["releses","releases"],["reletive","relative"],["reletively","relatively"],["relevabt","relevant"],["relevane","relevant"],["releveant","relevant"],["relevence","relevance"],["relevent","relevant"],["relfected","reflected"],["relfecting","reflecting"],["relfection","reflection"],["relfections","reflections"],["reliablity","reliability"],["relient","reliant"],["religeous","religious"],["religous","religious"],["religously","religiously"],["relinguish","relinquish"],["relinguishing","relinquishing"],["relinqushment","relinquishment"],["relintquish","relinquish"],["relitavely","relatively"],["relly","really"],["reloade","reload"],["relocae","relocate"],["relocaes","relocates"],["relocaiing","relocating"],["relocaing","relocating"],["relocaion","relocation"],["relocaions","relocations"],["relocaite","relocate"],["relocaites","relocates"],["relocaiting","relocating"],["relocaition","relocation"],["relocaitions","relocations"],["relocaiton","relocation"],["relocaitons","relocations"],["relocateable","relocatable"],["reloccate","relocate"],["reloccated","relocated"],["reloccates","relocates"],["relpacement","replacement"],["relpy","reply"],["reltive","relative"],["relyable","reliable"],["relyably","reliably"],["relyed","relied"],["relys","relies"],["remaing","remaining"],["remainging","remaining"],["remainig","remaining"],["remainst","remains"],["remaning","remaining"],["remaped","remapped"],["remaping","remapping"],["rembember","remember"],["rembembered","remembered"],["rembembering","remembering"],["rembembers","remembers"],["rember","remember"],["remeber","remember"],["remebered","remembered"],["remebering","remembering"],["remebers","remembers"],["rememberable","memorable"],["rememberance","remembrance"],["rememberd","remembered"],["remembrence","remembrance"],["rememeber","remember"],["rememebered","remembered"],["rememebering","remembering"],["rememebers","remembers"],["rememebr","remember"],["rememebred","remembered"],["rememebrs","remembers"],["rememember","remember"],["rememembered","remembered"],["rememembers","remembers"],["rememer","remember"],["rememered","remembered"],["rememers","remembers"],["rememor","remember"],["rememored","remembered"],["rememoring","remembering"],["rememors","remembers"],["rememver","remember"],["remenant","remnant"],["remenber","remember"],["remenicent","reminiscent"],["remian","remain"],["remianed","remained"],["remianing","remaining"],["remians","remains"],["reminent","remnant"],["reminescent","reminiscent"],["remining","remaining"],["reminiscense","reminiscence"],["reminscent","reminiscent"],["reminsicent","reminiscent"],["remmeber","remember"],["remmebered","remembered"],["remmebering","remembering"],["remmebers","remembers"],["remmove","remove"],["remoce","remove"],["remoive","remove"],["remoived","removed"],["remoives","removes"],["remoiving","removing"],["remontly","remotely"],["remoote","remote"],["remore","remote"],["remorted","reported"],["remot","remote"],["removce","remove"],["removeable","removable"],["removefromat","removeformat"],["removeing","removing"],["removerd","removed"],["remve","remove"],["remved","removed"],["remves","removes"],["remvoe","remove"],["remvoed","removed"],["remvoes","removes"],["remvove","remove"],["remvoved","removed"],["remvoves","removes"],["remvs","removes"],["renabled","re-enabled"],["renderadble","renderable"],["renderd","rendered"],["rendereing","rendering"],["rendererd","rendered"],["renderered","rendered"],["renderering","rendering"],["renderning","rendering"],["renderr","render"],["renderring","rendering"],["rendevous","rendezvous"],["rendezous","rendezvous"],["rendired","rendered"],["rendirer","renderer"],["rendirers","renderers"],["rendiring","rendering"],["rendring","rendering"],["renedered","rendered"],["renegatiotiable","renegotiable"],["renegatiotiate","renegotiate"],["renegatiotiated","renegotiated"],["renegatiotiates","renegotiates"],["renegatiotiating","renegotiating"],["renegatiotiation","renegotiation"],["renegatiotiations","renegotiations"],["renegatiotiator","renegotiator"],["renegatiotiators","renegotiators"],["renegoable","renegotiable"],["renegoate","renegotiate"],["renegoated","renegotiated"],["renegoates","renegotiates"],["renegoatiable","renegotiable"],["renegoatiate","renegotiate"],["renegoatiated","renegotiated"],["renegoatiates","renegotiates"],["renegoatiating","renegotiating"],["renegoatiation","renegotiation"],["renegoatiations","renegotiations"],["renegoatiator","renegotiator"],["renegoatiators","renegotiators"],["renegoating","renegotiating"],["renegoation","renegotiation"],["renegoations","renegotiations"],["renegoator","renegotiator"],["renegoators","renegotiators"],["renegociable","renegotiable"],["renegociate","renegotiate"],["renegociated","renegotiated"],["renegociates","renegotiates"],["renegociating","renegotiating"],["renegociation","renegotiation"],["renegociations","renegotiations"],["renegociator","renegotiator"],["renegociators","renegotiators"],["renegogtiable","renegotiable"],["renegogtiate","renegotiate"],["renegogtiated","renegotiated"],["renegogtiates","renegotiates"],["renegogtiating","renegotiating"],["renegogtiation","renegotiation"],["renegogtiations","renegotiations"],["renegogtiator","renegotiator"],["renegogtiators","renegotiators"],["renegoitable","renegotiable"],["renegoitate","renegotiate"],["renegoitated","renegotiated"],["renegoitates","renegotiates"],["renegoitating","renegotiating"],["renegoitation","renegotiation"],["renegoitations","renegotiations"],["renegoitator","renegotiator"],["renegoitators","renegotiators"],["renegoptionsotiable","renegotiable"],["renegoptionsotiate","renegotiate"],["renegoptionsotiated","renegotiated"],["renegoptionsotiates","renegotiates"],["renegoptionsotiating","renegotiating"],["renegoptionsotiation","renegotiation"],["renegoptionsotiations","renegotiations"],["renegoptionsotiator","renegotiator"],["renegoptionsotiators","renegotiators"],["renegosiable","renegotiable"],["renegosiate","renegotiate"],["renegosiated","renegotiated"],["renegosiates","renegotiates"],["renegosiating","renegotiating"],["renegosiation","renegotiation"],["renegosiations","renegotiations"],["renegosiator","renegotiator"],["renegosiators","renegotiators"],["renegotable","renegotiable"],["renegotaiable","renegotiable"],["renegotaiate","renegotiate"],["renegotaiated","renegotiated"],["renegotaiates","renegotiates"],["renegotaiating","renegotiating"],["renegotaiation","renegotiation"],["renegotaiations","renegotiations"],["renegotaiator","renegotiator"],["renegotaiators","renegotiators"],["renegotaible","renegotiable"],["renegotaite","renegotiate"],["renegotaited","renegotiated"],["renegotaites","renegotiates"],["renegotaiting","renegotiating"],["renegotaition","renegotiation"],["renegotaitions","renegotiations"],["renegotaitor","renegotiator"],["renegotaitors","renegotiators"],["renegotate","renegotiate"],["renegotated","renegotiated"],["renegotates","renegotiates"],["renegotatiable","renegotiable"],["renegotatiate","renegotiate"],["renegotatiated","renegotiated"],["renegotatiates","renegotiates"],["renegotatiating","renegotiating"],["renegotatiation","renegotiation"],["renegotatiations","renegotiations"],["renegotatiator","renegotiator"],["renegotatiators","renegotiators"],["renegotatible","renegotiable"],["renegotatie","renegotiate"],["renegotatied","renegotiated"],["renegotaties","renegotiates"],["renegotating","renegotiating"],["renegotation","renegotiation"],["renegotations","renegotiations"],["renegotatior","renegotiator"],["renegotatiors","renegotiators"],["renegotator","renegotiator"],["renegotators","renegotiators"],["renegothiable","renegotiable"],["renegothiate","renegotiate"],["renegothiated","renegotiated"],["renegothiates","renegotiates"],["renegothiating","renegotiating"],["renegothiation","renegotiation"],["renegothiations","renegotiations"],["renegothiator","renegotiator"],["renegothiators","renegotiators"],["renegotible","renegotiable"],["renegoticable","renegotiable"],["renegoticate","renegotiate"],["renegoticated","renegotiated"],["renegoticates","renegotiates"],["renegoticating","renegotiating"],["renegotication","renegotiation"],["renegotications","renegotiations"],["renegoticator","renegotiator"],["renegoticators","renegotiators"],["renegotioable","renegotiable"],["renegotioate","renegotiate"],["renegotioated","renegotiated"],["renegotioates","renegotiates"],["renegotioating","renegotiating"],["renegotioation","renegotiation"],["renegotioations","renegotiations"],["renegotioator","renegotiator"],["renegotioators","renegotiators"],["renegotioble","renegotiable"],["renegotion","renegotiation"],["renegotionable","renegotiable"],["renegotionate","renegotiate"],["renegotionated","renegotiated"],["renegotionates","renegotiates"],["renegotionating","renegotiating"],["renegotionation","renegotiation"],["renegotionations","renegotiations"],["renegotionator","renegotiator"],["renegotionators","renegotiators"],["renegotions","renegotiations"],["renegotiotable","renegotiable"],["renegotiotate","renegotiate"],["renegotiotated","renegotiated"],["renegotiotates","renegotiates"],["renegotiotating","renegotiating"],["renegotiotation","renegotiation"],["renegotiotations","renegotiations"],["renegotiotator","renegotiator"],["renegotiotators","renegotiators"],["renegotiote","renegotiate"],["renegotioted","renegotiated"],["renegotiotes","renegotiates"],["renegotioting","renegotiating"],["renegotiotion","renegotiation"],["renegotiotions","renegotiations"],["renegotiotor","renegotiator"],["renegotiotors","renegotiators"],["renegotitable","renegotiable"],["renegotitae","renegotiate"],["renegotitaed","renegotiated"],["renegotitaes","renegotiates"],["renegotitaing","renegotiating"],["renegotitaion","renegotiation"],["renegotitaions","renegotiations"],["renegotitaor","renegotiator"],["renegotitaors","renegotiators"],["renegotitate","renegotiate"],["renegotitated","renegotiated"],["renegotitates","renegotiates"],["renegotitating","renegotiating"],["renegotitation","renegotiation"],["renegotitations","renegotiations"],["renegotitator","renegotiator"],["renegotitators","renegotiators"],["renegotite","renegotiate"],["renegotited","renegotiated"],["renegotites","renegotiates"],["renegotiting","renegotiating"],["renegotition","renegotiation"],["renegotitions","renegotiations"],["renegotitor","renegotiator"],["renegotitors","renegotiators"],["renegoziable","renegotiable"],["renegoziate","renegotiate"],["renegoziated","renegotiated"],["renegoziates","renegotiates"],["renegoziating","renegotiating"],["renegoziation","renegotiation"],["renegoziations","renegotiations"],["renegoziator","renegotiator"],["renegoziators","renegotiators"],["reneweal","renewal"],["renewl","renewal"],["renforce","reinforce"],["renforced","reinforced"],["renforcement","reinforcement"],["renforcements","reinforcements"],["renforces","reinforces"],["rennovate","renovate"],["rennovated","renovated"],["rennovating","renovating"],["rennovation","renovation"],["rentime","runtime"],["rentors","renters"],["reoadmap","roadmap"],["reoccurrence","recurrence"],["reoder","reorder"],["reomvable","removable"],["reomve","remove"],["reomved","removed"],["reomves","removes"],["reomving","removing"],["reonly","read-only"],["reopended","reopened"],["reoport","report"],["reopsitory","repository"],["reord","record"],["reorded","reorder"],["reorer","reorder"],["reorganision","reorganisation"],["reorginised","reorganised"],["reorginized","reorganized"],["reosnable","reasonable"],["reosne","reason"],["reosurce","resource"],["reosurced","resourced"],["reosurces","resources"],["reosurcing","resourcing"],["reounded","rounded"],["repace","replace"],["repaced","replaced"],["repacement","replacement"],["repacements","replacements"],["repaces","replaces"],["repacing","replacing"],["repackge","repackage"],["repackged","repackaged"],["repaitnt","repaint"],["reparamterization","reparameterization"],["repblic","republic"],["repblican","republican"],["repblicans","republicans"],["repblics","republics"],["repeates","repeats"],["repeatly","repeatedly"],["repect","respect"],["repectable","respectable"],["repected","respected"],["repecting","respecting"],["repective","respective"],["repectively","respectively"],["repects","respects"],["repedability","repeatability"],["repedable","repeatable"],["repeition","repetition"],["repentence","repentance"],["repentent","repentant"],["reperesent","represent"],["reperesentation","representation"],["reperesentational","representational"],["reperesentations","representations"],["reperesented","represented"],["reperesenting","representing"],["reperesents","represents"],["repersentation","representation"],["repertoir","repertoire"],["repesent","represent"],["repesentation","representation"],["repesentational","representational"],["repesented","represented"],["repesenting","representing"],["repesents","represents"],["repet","repeat"],["repetative","repetitive"],["repete","repeat"],["repeteadly","repeatedly"],["repetetion","repetition"],["repetetions","repetitions"],["repetetive","repetitive"],["repeting","repeating"],["repetion","repetition"],["repetions","repetitions"],["repetive","repetitive"],["repid","rapid"],["repition","repetition"],["repitions","repetitions"],["repitition","repetition"],["repititions","repetitions"],["replacability","replaceability"],["replacables","replaceables"],["replacacing","replacing"],["replacalbe","replaceable"],["replacalbes","replaceables"],["replacament","replacement"],["replacaments","replacements"],["replacate","replicate"],["replacated","replicated"],["replacates","replicates"],["replacating","replicating"],["replacation","replication"],["replacd","replaced"],["replaceemnt","replacement"],["replaceemnts","replacements"],["replacemenet","replacement"],["replacmenet","replacement"],["replacment","replacement"],["replacments","replacements"],["replacong","replacing"],["replaint","repaint"],["replasement","replacement"],["replasements","replacements"],["replcace","replace"],["replcaced","replaced"],["replcaof","replicaof"],["replicae","replicate"],["replicaes","replicates"],["replicaiing","replicating"],["replicaion","replication"],["replicaions","replications"],["replicaite","replicate"],["replicaites","replicates"],["replicaiting","replicating"],["replicaition","replication"],["replicaitions","replications"],["replicaiton","replication"],["replicaitons","replications"],["repling","replying"],["replys","replies"],["reponding","responding"],["reponse","response"],["reponses","responses"],["reponsibilities","responsibilities"],["reponsibility","responsibility"],["reponsible","responsible"],["reporing","reporting"],["reporitory","repository"],["reportadly","reportedly"],["reportign","reporting"],["reportresouces","reportresources"],["reposiotory","repository"],["reposiry","repository"],["repositiories","repositories"],["repositiory","repository"],["repositiroes","repositories"],["reposititioning","repositioning"],["repositorry","repository"],["repositotries","repositories"],["repositotry","repository"],["repositry","repository"],["reposoitory","repository"],["reposond","respond"],["reposonder","responder"],["reposonders","responders"],["reposonding","responding"],["reposonse","response"],["reposonses","responses"],["repostiories","repositories"],["repostiory","repository"],["repostories","repositories"],["repostory","repository"],["repport","report"],["reppository","repository"],["repraesentation","representation"],["repraesentational","representational"],["repraesentations","representations"],["reprecussion","repercussion"],["reprecussions","repercussions"],["repreesnt","represent"],["repreesnted","represented"],["repreesnts","represents"],["reprensent","represent"],["reprensentation","representation"],["reprensentational","representational"],["reprensentations","representations"],["reprepresents","represents"],["represantation","representation"],["represantational","representational"],["represantations","representations"],["represantative","representative"],["represenatation","representation"],["represenatational","representational"],["represenatations","representations"],["represenation","representation"],["represenational","representational"],["represenations","representations"],["represend","represent"],["representaion","representation"],["representaional","representational"],["representaions","representations"],["representaiton","representation"],["representated","represented"],["representating","representing"],["representd","represented"],["representiative","representative"],["represention","representation"],["representions","representations"],["representive","representative"],["representives","representatives"],["represet","represent"],["represetation","representation"],["represeted","represented"],["represeting","representing"],["represets","represents"],["represnet","represent"],["represnetated","represented"],["represnetation","representation"],["represnetations","representations"],["represneted","represented"],["represneting","representing"],["represnets","represents"],["represnt","represent"],["represntation","representation"],["represntative","representative"],["represnted","represented"],["represnts","represents"],["repressent","represent"],["repressentation","representation"],["repressenting","representing"],["repressents","represents"],["reprociblbe","reproducible"],["reprocible","reproducible"],["reprodice","reproduce"],["reprodiced","reproduced"],["reprodicibility","reproducibility"],["reprodicible","reproducible"],["reprodicibly","reproducibly"],["reprodicing","reproducing"],["reprodiction","reproduction"],["reproducabely","reproducibly"],["reproducability","reproducibility"],["reproducable","reproducible"],["reproducablitity","reproducibility"],["reproducably","reproducibly"],["reproduciability","reproduceability"],["reproduciable","reproduceable"],["reproduciblity","reproducibility"],["reprot","report"],["reprots","reports"],["reprsent","represent"],["reprsentation","representation"],["reprsentations","representations"],["reprsented","represented"],["reprsenting","representing"],["reprsents","represents"],["reprtoire","repertoire"],["reprucible","reproducible"],["repsectively","respectively"],["repsonse","response"],["repsonses","responses"],["repsonsible","responsible"],["repspectively","respectively"],["repsresents","represents"],["reptition","repetition"],["repubic","republic"],["repubican","republican"],["repubicans","republicans"],["repubics","republics"],["republi","republic"],["republian","republican"],["republians","republicans"],["republis","republics"],["repulic","republic"],["repulican","republican"],["repulicans","republicans"],["repulics","republics"],["reputpose","repurpose"],["reputposed","repurposed"],["reputposes","repurposes"],["reputposing","repurposing"],["reqest","request"],["reqested","requested"],["reqests","requests"],["reqeuest","request"],["reqeust","request"],["reqeusted","requested"],["reqeusting","requesting"],["reqeusts","requests"],["reqiest","request"],["reqire","require"],["reqired","required"],["reqirement","requirement"],["reqirements","requirements"],["reqires","requires"],["reqiring","requiring"],["reqiure","require"],["reqrite","rewrite"],["reqrites","rewrites"],["requencies","frequencies"],["requency","frequency"],["requeried","required"],["requeriment","requirement"],["requeriments","requirements"],["reques","request"],["requesr","request"],["requestd","requested"],["requestesd","requested"],["requestested","requested"],["requestied","requested"],["requestying","requesting"],["requet","request"],["requeted","requested"],["requeting","requesting"],["requets","requests"],["requeum","requiem"],["requied","required"],["requierd","required"],["requiere","require"],["requiered","required"],["requierement","requirement"],["requierements","requirements"],["requieres","requires"],["requiering","requiring"],["requies","requires"],["requiest","request"],["requiested","requested"],["requiesting","requesting"],["requiests","requests"],["requird","required"],["requireing","requiring"],["requiremenet","requirement"],["requiremenets","requirements"],["requiremnt","requirement"],["requirment","requirement"],["requirments","requirements"],["requisit","requisite"],["requisits","requisites"],["requre","require"],["requred","required"],["requrement","requirement"],["requrements","requirements"],["requres","requires"],["requrest","request"],["requrested","requested"],["requresting","requesting"],["requrests","requests"],["requried","required"],["requriement","requirement"],["requriements","requirements"],["requries","requires"],["requriment","requirement"],["requring","requiring"],["requrired","required"],["requrirement","requirement"],["requrirements","requirements"],["requris","require"],["requsite","requisite"],["requsites","requisites"],["requst","request"],["requsted","requested"],["requsting","requesting"],["requsts","requests"],["reregisteration","reregistration"],["rererences","references"],["rerference","reference"],["rerferences","references"],["rerpesentation","representation"],["rertieve","retrieve"],["rertieved","retrieved"],["rertiever","retriever"],["rertievers","retrievers"],["rertieves","retrieves"],["reruirement","requirement"],["reruirements","requirements"],["reruning","rerunning"],["rerwite","rewrite"],["resarch","research"],["resart","restart"],["resarts","restarts"],["resaurant","restaurant"],["resaurants","restaurants"],["rescaned","rescanned"],["rescource","resource"],["rescourced","resourced"],["rescources","resources"],["rescourcing","resourcing"],["rescrition","restriction"],["rescritions","restrictions"],["rescueing","rescuing"],["reseach","research"],["reseached","researched"],["researvation","reservation"],["researvations","reservations"],["researve","reserve"],["researved","reserved"],["researves","reserves"],["researving","reserving"],["reselction","reselection"],["resembelance","resemblance"],["resembes","resembles"],["resemblence","resemblance"],["resently","recently"],["resepect","respect"],["resepected","respected"],["resepecting","respecting"],["resepective","respective"],["resepectively","respectively"],["resepects","respects"],["reseration","reservation"],["reserv","reserve"],["reserverd","reserved"],["reservered","reserved"],["resestatus","resetstatus"],["resetable","resettable"],["reseted","reset"],["reseting","resetting"],["resetted","reset"],["reseved","reserved"],["reseverd","reserved"],["resevered","reserved"],["resevering","reserving"],["resevoir","reservoir"],["resgister","register"],["resgisters","registers"],["residental","residential"],["resierfs","reiserfs"],["resignement","resignment"],["resilence","resilience"],["resistable","resistible"],["resistence","resistance"],["resistent","resistant"],["resitance","resistance"],["resitances","resistances"],["resitor","resistor"],["resitors","resistors"],["resivwar","reservoir"],["resizeable","resizable"],["resizeble","resizable"],["reslection","reselection"],["reslove","resolve"],["resloved","resolved"],["resloves","resolves"],["resloving","resolving"],["reslut","result"],["resluts","results"],["resoect","respect"],["resoective","respective"],["resoiurce","resource"],["resoiurced","resourced"],["resoiurces","resources"],["resoiurcing","resourcing"],["resoltion","resolution"],["resoltuion","resolution"],["resoltuions","resolutions"],["resoluitons","resolutions"],["resolutin","resolution"],["resolutino","resolution"],["resolutinos","resolutions"],["resolutins","resolutions"],["resoluton","resolution"],["resolvinf","resolving"],["reson","reason"],["resonable","reasonable"],["resons","reasons"],["resonse","response"],["resonses","responses"],["resoource","resource"],["resoourced","resourced"],["resoources","resources"],["resoourcing","resourcing"],["resopnse","response"],["resopnses","responses"],["resorce","resource"],["resorced","resourced"],["resorces","resources"],["resorcing","resourcing"],["resore","restore"],["resorece","resource"],["resoreces","resources"],["resoruce","resource"],["resoruced","resourced"],["resoruces","resources"],["resorucing","resourcing"],["resotration","restoration"],["resotrations","restorations"],["resotrative","restorative"],["resotre","restore"],["resotrer","restorer"],["resotrers","restorers"],["resotres","restores"],["resotring","restoring"],["resouce","resource"],["resouced","resourced"],["resouces","resources"],["resoucing","resourcing"],["resoultion","resolution"],["resoultions","resolutions"],["resourcees","resources"],["resourceype","resourcetype"],["resoure","resource"],["resourecs","resources"],["resoured","resourced"],["resoures","resources"],["resourses","resources"],["resoution","resolution"],["resoves","resolves"],["resovle","resolve"],["resovled","resolved"],["resovles","resolves"],["resovling","resolving"],["respawining","respawning"],["respecitve","respective"],["respecitvely","respectively"],["respecive","respective"],["respecively","respectively"],["respectivelly","respectively"],["respectivley","respectively"],["respectivly","respectively"],["respnse","response"],["respnses","responses"],["respoduce","reproduce"],["responce","response"],["responces","responses"],["responibilities","responsibilities"],["responisble","responsible"],["responnsibilty","responsibility"],["responsabilities","responsibilities"],["responsability","responsibility"],["responsable","responsible"],["responsbile","responsible"],["responser's","responder's"],["responser","responder"],["responsers","responders"],["responsess","responses"],["responsibile","responsible"],["responsibilites","responsibilities"],["responsibilty","responsibility"],["responsiblities","responsibilities"],["responsiblity","responsibility"],["responsing","responding"],["respose","response"],["resposes","responses"],["resposibility","responsibility"],["resposible","responsible"],["resposiblity","responsibility"],["respositories","repositories"],["respository","repository"],["resposive","responsive"],["resposiveness","responsiveness"],["resposne","response"],["resposnes","responses"],["respresent","represent"],["respresentation","representation"],["respresentational","representational"],["respresentations","representations"],["respresented","represented"],["respresenting","representing"],["respresents","represents"],["resquest","request"],["resrouce","resource"],["resrouced","resourced"],["resrouces","resources"],["resroucing","resourcing"],["reSructuredText","reStructuredText"],["resrved","reserved"],["ressapee","recipe"],["ressemblance","resemblance"],["ressemble","resemble"],["ressembled","resembled"],["ressemblence","resemblance"],["ressembling","resembling"],["ressemle","resemble"],["resset","reset"],["resseted","reset"],["ressets","resets"],["ressetting","resetting"],["ressize","resize"],["ressizes","resizes"],["ressource","resource"],["ressourced","resourced"],["ressources","resources"],["ressourcing","resourcing"],["resssurecting","resurrecting"],["ressult","result"],["ressurect","resurrect"],["ressurected","resurrected"],["ressurecting","resurrecting"],["ressurection","resurrection"],["ressurects","resurrects"],["ressurrection","resurrection"],["restarant","restaurant"],["restarants","restaurants"],["restaraunt","restaurant"],["restaraunteur","restaurateur"],["restaraunteurs","restaurateurs"],["restaraunts","restaurants"],["restauranteurs","restaurateurs"],["restauration","restoration"],["restauraunt","restaurant"],["restaurnad","restaurant"],["restaurnat","restaurant"],["resteraunt","restaurant"],["resteraunts","restaurants"],["restes","reset"],["restesting","retesting"],["resticted","restricted"],["restoding","restoring"],["restoiring","restoring"],["restor","restore"],["restorated","restored"],["restoreable","restorable"],["restoreble","restorable"],["restoreing","restoring"],["restors","restores"],["restouration","restoration"],["restrcted","restricted"],["restrcuture","restructure"],["restriced","restricted"],["restroing","restoring"],["reStructuredTetx","reStructuredText"],["reStructuredTxet","reStructuredText"],["reStrucuredText","reStructuredText"],["restuarant","restaurant"],["restuarants","restaurants"],["reStucturedText","reStructuredText"],["restucturing","restructuring"],["reStucuredText","reStructuredText"],["resturant","restaurant"],["resturants","restaurants"],["resturaunt","restaurant"],["resturaunts","restaurants"],["resturcturation","restructuration"],["resturcture","restructure"],["resturctured","restructured"],["resturctures","restructures"],["resturcturing","restructuring"],["resturns","returns"],["resuable","reusable"],["resuables","reusables"],["resubstituion","resubstitution"],["resuction","reduction"],["resuilt","result"],["resuilted","resulted"],["resuilting","resulting"],["resuilts","results"],["resul","result"],["resuling","resulting"],["resullt","result"],["resulotion","resolution"],["resulsets","resultsets"],["resulst","results"],["resultion","resolution"],["resultions","resolutions"],["resultung","resulting"],["resulution","resolution"],["resumbmitting","resubmitting"],["resumitted","resubmitted"],["resumt","resume"],["resuorce","resource"],["resuorced","resourced"],["resuorces","resources"],["resuorcing","resourcing"],["resurce","resource"],["resurced","resourced"],["resurces","resources"],["resurcing","resourcing"],["resurecting","resurrecting"],["resursively","recursively"],["resuse","reuse"],["resuts","results"],["resycn","resync"],["retalitated","retaliated"],["retalitation","retaliation"],["retangles","rectangles"],["retanslate","retranslate"],["rether","rather"],["retieve","retrieve"],["retieved","retrieved"],["retieves","retrieves"],["retieving","retrieving"],["retinew","retinue"],["retireve","retrieve"],["retireved","retrieved"],["retirever","retriever"],["retirevers","retrievers"],["retireves","retrieves"],["retireving","retrieving"],["retirned","returned"],["retore","restore"],["retored","restored"],["retores","restores"],["retoric","rhetoric"],["retorical","rhetorical"],["retoring","restoring"],["retourned","returned"],["retpresenting","representing"],["retquirement","requirement"],["retquirements","requirements"],["retquireseek","requireseek"],["retquiresgpos","requiresgpos"],["retquiresgsub","requiresgsub"],["retquiressl","requiressl"],["retranser","retransfer"],["retransferd","retransferred"],["retransfered","retransferred"],["retransfering","retransferring"],["retransferrd","retransferred"],["retransmited","retransmitted"],["retransmition","retransmission"],["retreevable","retrievable"],["retreeval","retrieval"],["retreeve","retrieve"],["retreeved","retrieved"],["retreeves","retrieves"],["retreeving","retrieving"],["retreivable","retrievable"],["retreival","retrieval"],["retreive","retrieve"],["retreived","retrieved"],["retreives","retrieves"],["retreiving","retrieving"],["retrevable","retrievable"],["retreval","retrieval"],["retreve","retrieve"],["retreved","retrieved"],["retreves","retrieves"],["retreving","retrieving"],["retrict","restrict"],["retricted","restricted"],["retriebe","retrieve"],["retriece","retrieve"],["retrieces","retrieves"],["retriev","retrieve"],["retrieveds","retrieved"],["retrive","retrieve"],["retrived","retrieved"],["retrives","retrieves"],["retriving","retrieving"],["retrn","return"],["retrned","returned"],["retrns","returns"],["retrun","return"],["retruned","returned"],["retruns","returns"],["retrvieve","retrieve"],["retrvieved","retrieved"],["retrviever","retriever"],["retrvievers","retrievers"],["retrvieves","retrieves"],["retsart","restart"],["retsarts","restarts"],["retun","return"],["retunrned","returned"],["retunrs","returns"],["retuns","returns"],["retur","return"],["reture","return"],["retured","returned"],["returend","returned"],["retures","returns"],["returing","returning"],["returm","return"],["returmed","returned"],["returming","returning"],["returms","returns"],["returnd","returned"],["returnes","returns"],["returnig","returning"],["returnn","return"],["returnned","returned"],["returnning","returning"],["returs","returns"],["retursn","returns"],["retutning","returning"],["retyring","retrying"],["reudce","reduce"],["reudced","reduced"],["reudces","reduces"],["reudction","reduction"],["reudctions","reductions"],["reuest","request"],["reuests","requests"],["reulator","regulator"],["reundant","redundant"],["reundantly","redundantly"],["reuplad","reupload"],["reupladed","reuploaded"],["reuplader","reuploader"],["reupladers","reuploaders"],["reuplading","reuploading"],["reuplads","reuploads"],["reuplaod","reupload"],["reuplaoded","reuploaded"],["reuplaoder","reuploader"],["reuplaoders","reuploaders"],["reuplaoding","reuploading"],["reuplaods","reuploads"],["reuplod","reupload"],["reuploded","reuploaded"],["reuploder","reuploader"],["reuploders","reuploaders"],["reuploding","reuploading"],["reuplods","reuploads"],["reuqest","request"],["reuqested","requested"],["reuqesting","requesting"],["reuqests","requests"],["reurn","return"],["reursively","recursively"],["reuslt","result"],["reussing","reusing"],["reutnred","returned"],["reutrn","return"],["reutrns","returns"],["revaildating","revalidating"],["revaluated","reevaluated"],["reveiw","review"],["reveiwed","reviewed"],["reveiwer","reviewer"],["reveiwers","reviewers"],["reveiwing","reviewing"],["reveiws","reviews"],["revelent","relevant"],["revelution","revolution"],["revelutions","revolutions"],["reveokes","revokes"],["reverce","reverse"],["reverced","reversed"],["revereces","references"],["reverese","reverse"],["reveresed","reversed"],["reveret","revert"],["revereted","reverted"],["reversable","reversible"],["reverse-engeneer","reverse-engineer"],["reverse-engeneering","reverse-engineering"],["reverse-engieer","reverse-engineer"],["reverseed","reversed"],["reversees","reverses"],["reverve","reserve"],["reverved","reserved"],["revewrse","reverse"],["reviewl","review"],["reviewsectio","reviewsection"],["revisisions","revisions"],["revison","revision"],["revisons","revisions"],["revist","revisit"],["revisted","revisited"],["revisting","revisiting"],["revists","revisits"],["reviwed","reviewed"],["reviwer","reviewer"],["reviwers","reviewers"],["reviwing","reviewing"],["revoluion","revolution"],["revolutionar","revolutionary"],["revrese","reverse"],["revrieve","retrieve"],["revrieved","retrieved"],["revriever","retriever"],["revrievers","retrievers"],["revrieves","retrieves"],["revsion","revision"],["rewiev","review"],["rewieved","reviewed"],["rewiever","reviewer"],["rewieving","reviewing"],["rewievs","reviews"],["rewirtable","rewritable"],["rewirte","rewrite"],["rewirtten","rewritten"],["rewitable","rewritable"],["rewite","rewrite"],["rewitten","rewritten"],["reworkd","reworked"],["rewriet","rewrite"],["rewriite","rewrite"],["rewriten","rewritten"],["rewritting","rewriting"],["rewuired","required"],["rference","reference"],["rferences","references"],["rfeturned","returned"],["rgister","register"],["rhymme","rhyme"],["rhythem","rhythm"],["rhythim","rhythm"],["rhythimcally","rhythmically"],["rhytmic","rhythmic"],["ridiculus","ridiculous"],["righ","right"],["righht","right"],["righmost","rightmost"],["rightt","right"],["rigourous","rigorous"],["rigt","right"],["rigth","right"],["rigths","rights"],["rigurous","rigorous"],["riminder","reminder"],["riminders","reminders"],["riminding","reminding"],["rimitives","primitives"],["rininging","ringing"],["rispective","respective"],["ristrict","restrict"],["ristricted","restricted"],["ristriction","restriction"],["ritable","writable"],["rivised","revised"],["rizes","rises"],["rlation","relation"],["rlse","else"],["rmeote","remote"],["rmeove","remove"],["rmeoved","removed"],["rmeoves","removes"],["rmove","remove"],["rmoved","removed"],["rmoving","removing"],["roataion","rotation"],["roatation","rotation"],["roated","rotated"],["roation","rotation"],["roboustness","robustness"],["robustnes","robustness"],["Rockerfeller","Rockefeller"],["rococco","rococo"],["rocord","record"],["rocorded","recorded"],["rocorder","recorder"],["rocording","recording"],["rocordings","recordings"],["rocords","records"],["roduceer","producer"],["roigin","origin"],["roiginal","original"],["roiginally","originally"],["roiginals","originals"],["roiginating","originating"],["roigins","origins"],["romote","remote"],["romoted","remoted"],["romoteing","remoting"],["romotely","remotely"],["romotes","remotes"],["romoting","remoting"],["romotly","remotely"],["roomate","roommate"],["ropeat","repeat"],["rorated","rotated"],["rosponse","response"],["rosponsive","responsive"],["rotaion","rotation"],["rotaions","rotations"],["rotaiton","rotation"],["rotaitons","rotations"],["rotat","rotate"],["rotataion","rotation"],["rotataions","rotations"],["rotateable","rotatable"],["rouding","rounding"],["roughtly","roughly"],["rougly","roughly"],["rouine","routine"],["rouines","routines"],["round-robbin","round-robin"],["roundign","rounding"],["roung","round"],["rountine","routine"],["rountines","routines"],["routiens","routines"],["routins","routines"],["rovide","provide"],["rovided","provided"],["rovider","provider"],["rovides","provides"],["roviding","providing"],["rqeuested","requested"],["rqeuesting","requesting"],["rquested","requested"],["rquesting","requesting"],["rquire","require"],["rquired","required"],["rquirement","requirement"],["rquires","requires"],["rquiring","requiring"],["rranslation","translation"],["rranslations","translations"],["rrase","erase"],["rrror","error"],["rrrored","errored"],["rrroring","erroring"],["rrrors","errors"],["rubarb","rhubarb"],["rucuperate","recuperate"],["rudimentally","rudimentary"],["rudimentatry","rudimentary"],["rudimentory","rudimentary"],["rudimentry","rudimentary"],["rulle","rule"],["rumatic","rheumatic"],["runn","run"],["runnig","running"],["runnign","running"],["runnigng","running"],["runnin","running"],["runnint","running"],["runnners","runners"],["runnning","running"],["runns","runs"],["runnung","running"],["runting","runtime"],["rurrent","current"],["russina","Russian"],["Russion","Russian"],["rwite","write"],["rysnc","rsync"],["rythem","rhythm"],["rythim","rhythm"],["rythm","rhythm"],["rythmic","rhythmic"],["rythyms","rhythms"],["saame","same"],["sabatage","sabotage"],["sabatour","saboteur"],["sacalar","scalar"],["sacalars","scalars"],["sacarin","saccharin"],["sacle","scale"],["sacrafice","sacrifice"],["sacreligious","sacrilegious"],["Sacremento","Sacramento"],["sacrifical","sacrificial"],["sacrifying","sacrificing"],["sacrilegeous","sacrilegious"],["sacrin","saccharin"],["sade","sad"],["saem","same"],["safe-pooint","safe-point"],["safe-pooints","safe-points"],["safeing","saving"],["safepooint","safepoint"],["safepooints","safepoints"],["safequard","safeguard"],["saferi","Safari"],["safetly","safely"],["safly","safely"],["saftey","safety"],["safty","safety"],["saggital","sagittal"],["sagital","sagittal"],["Sagitarius","Sagittarius"],["sais","says"],["saleries","salaries"],["salery","salary"],["salveof","slaveof"],["samle","sample"],["samled","sampled"],["samll","small"],["samller","smaller"],["sammon","salmon"],["samori","samurai"],["sampel","sample"],["sampeld","sampled"],["sampels","samples"],["samwich","sandwich"],["samwiches","sandwiches"],["sanaty","sanity"],["sanctionning","sanctioning"],["sandobx","sandbox"],["sandwhich","sandwich"],["Sanhedrim","Sanhedrin"],["sanitizisation","sanitization"],["sanizer","sanitizer"],["sanpshot","snapshot"],["sanpsnots","snapshots"],["sansitizer","sanitizer"],["sansitizers","sanitizers"],["santioned","sanctioned"],["santize","sanitize"],["santized","sanitized"],["santizes","sanitizes"],["santizing","sanitizing"],["sanwich","sandwich"],["sanwiches","sandwiches"],["sanytise","sanitise"],["sanytize","sanitize"],["saphire","sapphire"],["saphires","sapphires"],["sargant","sergeant"],["sargeant","sergeant"],["sarted","started"],["sarter","starter"],["sarters","starters"],["sastisfies","satisfies"],["satandard","standard"],["satandards","standards"],["satelite","satellite"],["satelites","satellites"],["satelitte","satellite"],["satellittes","satellites"],["satement","statement"],["satements","statements"],["saterday","Saturday"],["saterdays","Saturdays"],["satified","satisfied"],["satifies","satisfies"],["satifsy","satisfy"],["satify","satisfy"],["satifying","satisfying"],["satisfactority","satisfactorily"],["satisfiabilty","satisfiability"],["satisfing","satisfying"],["satisfyied","satisfied"],["satisifed","satisfied"],["satisified","satisfied"],["satisifies","satisfies"],["satisify","satisfy"],["satisifying","satisfying"],["satistying","satisfying"],["satric","satiric"],["satrical","satirical"],["satrically","satirically"],["sattelite","satellite"],["sattelites","satellites"],["sattellite","satellite"],["sattellites","satellites"],["satuaday","Saturday"],["satuadays","Saturdays"],["saturdey","Saturday"],["satursday","Saturday"],["satus","status"],["saught","sought"],["sav","save"],["savees","saves"],["saveing","saving"],["savely","safely"],["savere","severe"],["savety","safety"],["savgroup","savegroup"],["savy","savvy"],["saxaphone","saxophone"],["sbsampling","subsampling"],["scahr","schar"],["scalarr","scalar"],["scaleability","scalability"],["scaleable","scalable"],["scaleing","scaling"],["scalled","scaled"],["scandanavia","Scandinavia"],["scaned","scanned"],["scaning","scanning"],["scannning","scanning"],["scaricity","scarcity"],["scavange","scavenge"],["scavanged","scavenged"],["scavanger","scavenger"],["scavangers","scavengers"],["scavanges","scavenges"],["sccope","scope"],["sceanrio","scenario"],["sceanrios","scenarios"],["scecified","specified"],["scenarion","scenario"],["scenarions","scenarios"],["scenegraaph","scenegraph"],["scenegraaphs","scenegraphs"],["sceond","second"],["sceonds","seconds"],["scetch","sketch"],["scetched","sketched"],["scetches","sketches"],["scetching","sketching"],["schdule","schedule"],["schduled","scheduled"],["schduleing","scheduling"],["schduler","scheduler"],["schdules","schedules"],["schduling","scheduling"],["schedual","schedule"],["scheduald","scheduled"],["schedualed","scheduled"],["schedualing","scheduling"],["schedulier","scheduler"],["schedulling","scheduling"],["scheduluing","scheduling"],["schem","scheme"],["schemd","schemed"],["schems","schemes"],["schme","scheme"],["schmea","schema"],["schmeas","schemas"],["schmes","schemes"],["scholarhip","scholarship"],["scholarhips","scholarships"],["scholdn't","shouldn't"],["schould","should"],["scientfic","scientific"],["scientfically","scientifically"],["scientficaly","scientifically"],["scientficly","scientifically"],["scientifc","scientific"],["scientifcally","scientifically"],["scientifcaly","scientifically"],["scientifcly","scientifically"],["scientis","scientist"],["scientiss","scientist"],["scince","science"],["scinece","science"],["scintiallation","scintillation"],["scintillatqt","scintillaqt"],["scipted","scripted"],["scipting","scripting"],["sciript","script"],["sciripts","scripts"],["scirpt","script"],["scirpts","scripts"],["scketch","sketch"],["scketched","sketched"],["scketches","sketches"],["scketching","sketching"],["sclar","scalar"],["scneario","scenario"],["scnearios","scenarios"],["scoket","socket"],["scoll","scroll"],["scolling","scrolling"],["scondary","secondary"],["scopeing","scoping"],["scorebord","scoreboard"],["scources","sources"],["scrach","scratch"],["scrached","scratched"],["scraches","scratches"],["scraching","scratching"],["scrachs","scratches"],["scrao","scrap"],["screeb","screen"],["screebs","screens"],["screenchot","screenshot"],["screenchots","screenshots"],["screenwrighter","screenwriter"],["screnn","screen"],["scriopted","scripted"],["scriopting","scripting"],["scriopts","scripts"],["scriopttype","scripttype"],["scriping","scripting"],["scripst","scripts"],["scriptype","scripttype"],["scritp","script"],["scritped","scripted"],["scritping","scripting"],["scritps","scripts"],["scritpt","script"],["scritpts","scripts"],["scroipt","script"],["scroipted","scripted"],["scroipting","scripting"],["scroipts","scripts"],["scroipttype","scripttype"],["scrollablbe","scrollable"],["scrollin","scrolling"],["scroolbar","scrollbar"],["scrpt","script"],["scrpted","scripted"],["scrpting","scripting"],["scrpts","scripts"],["scrren","screen"],["scrutinity","scrutiny"],["scubscribe","subscribe"],["scubscribed","subscribed"],["scubscriber","subscriber"],["scubscribes","subscribes"],["scuccessully","successfully"],["scupt","sculpt"],["scupted","sculpted"],["scupting","sculpting"],["scupture","sculpture"],["scuptures","sculptures"],["seach","search"],["seached","searched"],["seaches","searches"],["seaching","searching"],["seachkey","searchkey"],["seacrchable","searchable"],["seamlessley","seamlessly"],["seamlessy","seamlessly"],["searcahble","searchable"],["searcheable","searchable"],["searchin","searching"],["searchs","searches"],["seatch","search"],["seccond","second"],["secconds","seconds"],["secction","section"],["secene","scene"],["secific","specific"],["secion","section"],["secions","sections"],["secirity","security"],["seciton","section"],["secitons","sections"],["secne","scene"],["secod","second"],["secods","seconds"],["seconadry","secondary"],["seconcary","secondary"],["secondaray","secondary"],["seconday","secondary"],["seconf","second"],["seconfs","seconds"],["seconly","secondly"],["secont","second"],["secontary","secondary"],["secontly","secondly"],["seconts","seconds"],["secord","second"],["secords","seconds"],["secotr","sector"],["secound","second"],["secoundary","secondary"],["secoundly","secondly"],["secounds","seconds"],["secquence","sequence"],["secratary","secretary"],["secretery","secretary"],["secrion","section"],["secruity","security"],["sectin","section"],["sectins","sections"],["sectionning","sectioning"],["secton","section"],["sectoned","sectioned"],["sectoning","sectioning"],["sectons","sections"],["sectopm","section"],["sectopmed","sectioned"],["sectopming","sectioning"],["sectopms","sections"],["sectopn","section"],["sectopned","sectioned"],["sectopning","sectioning"],["sectopns","sections"],["secue","secure"],["secuely","securely"],["secuence","sequence"],["secuenced","sequenced"],["secuences","sequences"],["secuencial","sequential"],["secuencing","sequencing"],["secuirty","security"],["secuity","security"],["secund","second"],["secunds","seconds"],["securiy","security"],["securiyt","security"],["securly","securely"],["securre","secure"],["securrely","securely"],["securrly","securely"],["securtity","security"],["securtiy","security"],["securty","security"],["securuity","security"],["sedereal","sidereal"],["seeem","seem"],["seeen","seen"],["seelect","select"],["seelected","selected"],["seemes","seems"],["seemless","seamless"],["seemlessly","seamlessly"],["seesion","session"],["seesions","sessions"],["seetings","settings"],["seeverities","severities"],["seeverity","severity"],["segault","segfault"],["segaults","segfaults"],["segement","segment"],["segementation","segmentation"],["segemented","segmented"],["segements","segments"],["segemnts","segments"],["segfualt","segfault"],["segfualts","segfaults"],["segmantation","segmentation"],["segmend","segment"],["segmendation","segmentation"],["segmended","segmented"],["segmends","segments"],["segmenet","segment"],["segmenetd","segmented"],["segmeneted","segmented"],["segmenets","segments"],["segmenst","segments"],["segmentaion","segmentation"],["segmente","segment"],["segmentes","segments"],["segmetn","segment"],["segmetned","segmented"],["segmetns","segments"],["segument","segment"],["seguoys","segues"],["seh","she"],["seige","siege"],["seing","seeing"],["seinor","senior"],["seires","series"],["sekect","select"],["sekected","selected"],["sekects","selects"],["selcetion","selection"],["selct","select"],["selctable","selectable"],["selctables","selectable"],["selcted","selected"],["selcting","selecting"],["selction","selection"],["selctions","selections"],["seldomly","seldom"],["selecction","selection"],["selecctions","selections"],["seleced","selected"],["selecetd","selected"],["seleceted","selected"],["selecgt","select"],["selecgted","selected"],["selecgting","selecting"],["selecing","selecting"],["selecrtion","selection"],["selectd","selected"],["selectes","selects"],["selectoin","selection"],["selecton","selection"],["selectons","selections"],["seledted","selected"],["selektions","selections"],["selektor","selector"],["selet","select"],["selets","selects"],["self-comparisson","self-comparison"],["self-contianed","self-contained"],["self-referencial","self-referential"],["self-refering","self-referring"],["selfs","self"],["sellect","select"],["sellected","selected"],["selv","self"],["semaintics","semantics"],["semaphone","semaphore"],["semaphones","semaphores"],["semaphor","semaphore"],["semaphors","semaphores"],["semapthore","semaphore"],["semapthores","semaphores"],["sematic","semantic"],["sematical","semantical"],["sematically","semantically"],["sematics","semantics"],["sematnics","semantics"],["semding","sending"],["sementation","segmentation"],["sementic","semantic"],["sementically","semantically"],["sementics","semantics"],["semgent","segment"],["semgentation","segmentation"],["semicolor","semicolon"],["semicolumn","semicolon"],["semicondutor","semiconductor"],["sempahore","semaphore"],["sempahores","semaphores"],["sempaphore","semaphore"],["sempaphores","semaphores"],["semphore","semaphore"],["semphores","semaphores"],["sempphore","semaphore"],["senaphore","semaphore"],["senaphores","semaphores"],["senario","scenario"],["senarios","scenarios"],["sencond","second"],["sencondary","secondary"],["senconds","seconds"],["sendign","sending"],["sendinging","sending"],["sendinng","sending"],["senfile","sendfile"],["senintels","sentinels"],["senitnel","sentinel"],["senitnels","sentinels"],["senquence","sequence"],["sensative","sensitive"],["sensetive","sensitive"],["sensisble","sensible"],["sensistive","sensitive"],["sensititive","sensitive"],["sensititivies","sensitivities"],["sensititivity","sensitivity"],["sensititivy","sensitivity"],["sensitiv","sensitive"],["sensitiveties","sensitivities"],["sensitivety","sensitivity"],["sensitivites","sensitivities"],["sensitivties","sensitivities"],["sensitivty","sensitivity"],["sensitve","sensitive"],["senstive","sensitive"],["sensure","censure"],["sentance","sentence"],["sentances","sentences"],["senteces","sentences"],["sentense","sentence"],["sentienl","sentinel"],["sentinal","sentinel"],["sentinals","sentinels"],["sention","section"],["sentions","sections"],["sentive","sensitive"],["sentivite","sensitive"],["sepaate","separate"],["separartor","separator"],["separat","separate"],["separatelly","separately"],["separater","separator"],["separatley","separately"],["separatly","separately"],["separato","separator"],["separatos","separators"],["separatring","separating"],["separed","separated"],["separete","separate"],["separeted","separated"],["separetedly","separately"],["separetely","separately"],["separeter","separator"],["separetes","separates"],["separeting","separating"],["separetly","separately"],["separetor","separator"],["separtates","separates"],["separte","separate"],["separted","separated"],["separtes","separates"],["separting","separating"],["sepatae","separate"],["sepatate","separate"],["sepcial","special"],["sepcific","specific"],["sepcifically","specifically"],["sepcification","specification"],["sepcifications","specifications"],["sepcified","specified"],["sepcifier","specifier"],["sepcifies","specifies"],["sepcify","specify"],["sepcifying","specifying"],["sepearable","separable"],["sepearate","separate"],["sepearated","separated"],["sepearately","separately"],["sepearates","separates"],["sepearation","separation"],["sepearator","separator"],["sepearators","separators"],["sepearet","separate"],["sepearetly","separately"],["sepearte","separate"],["sepearted","separated"],["sepeartely","separately"],["sepeartes","separates"],["sepeartor","separator"],["sepeartors","separators"],["sepeate","separate"],["sepeated","separated"],["sepeates","separates"],["sepeator","separator"],["sepeators","separators"],["sepecial","special"],["sepecifed","specified"],["sepecific","specific"],["sepecification","specification"],["sepecified","specified"],["sepecifier","specifier"],["sepecifiers","specifiers"],["sepecifies","specifies"],["sepecify","specify"],["sepectral","spectral"],["sepeicfy","specify"],["sependent","dependent"],["sepending","depending"],["seperable","separable"],["seperad","separate"],["seperadly","separately"],["seperaly","separately"],["seperaor","separator"],["seperaors","separators"],["seperare","separate"],["seperared","separated"],["seperares","separates"],["seperat","separate"],["seperataed","separated"],["seperatally","separately"],["seperataly","separately"],["seperatated","separated"],["seperatd","separated"],["seperate","separate"],["seperated","separated"],["seperatedly","separately"],["seperatedy","separated"],["seperateely","separately"],["seperateing","separating"],["seperatelly","separately"],["seperately","separately"],["seperater","separator"],["seperaters","separators"],["seperates","separates"],["seperating","separating"],["seperation","separation"],["seperations","separations"],["seperatism","separatism"],["seperatist","separatist"],["seperatley","separately"],["seperatly","separately"],["seperato","separator"],["seperator","separator"],["seperators","separators"],["seperatos","separators"],["sepereate","separate"],["sepereated","separated"],["sepereates","separates"],["sepererate","separate"],["sepererated","separated"],["sepererates","separates"],["seperete","separate"],["sepereted","separated"],["seperetes","separates"],["seperratly","separately"],["sepertator","separator"],["sepertators","separators"],["sepertor","separator"],["sepertors","separators"],["sepetaror","separator"],["sepetarors","separators"],["sepetate","separate"],["sepetated","separated"],["sepetately","separately"],["sepetates","separates"],["sepina","subpoena"],["seporate","separate"],["sepparation","separation"],["sepparations","separations"],["sepperate","separate"],["seprarate","separate"],["seprate","separate"],["seprated","separated"],["seprator","separator"],["seprators","separators"],["Septemer","September"],["seqence","sequence"],["seqenced","sequenced"],["seqences","sequences"],["seqencing","sequencing"],["seqense","sequence"],["seqensed","sequenced"],["seqenses","sequences"],["seqensing","sequencing"],["seqenstial","sequential"],["seqential","sequential"],["seqeuence","sequence"],["seqeuencer","sequencer"],["seqeuental","sequential"],["seqeunce","sequence"],["seqeuncer","sequencer"],["seqeuntials","sequentials"],["sequcne","sequence"],["sequece","sequence"],["sequecence","sequence"],["sequecences","sequences"],["sequeces","sequences"],["sequeence","sequence"],["sequelce","sequence"],["sequemce","sequence"],["sequemces","sequences"],["sequencial","sequential"],["sequencially","sequentially"],["sequencies","sequences"],["sequense","sequence"],["sequensed","sequenced"],["sequenses","sequences"],["sequensing","sequencing"],["sequenstial","sequential"],["sequentialy","sequentially"],["sequenzes","sequences"],["sequetial","sequential"],["sequnce","sequence"],["sequnced","sequenced"],["sequncer","sequencer"],["sequncers","sequencers"],["sequnces","sequences"],["sequnece","sequence"],["sequneces","sequences"],["ser","set"],["serach","search"],["serached","searched"],["seracher","searcher"],["seraches","searches"],["seraching","searching"],["serachs","searches"],["serailisation","serialisation"],["serailise","serialise"],["serailised","serialised"],["serailization","serialization"],["serailize","serialize"],["serailized","serialized"],["serailse","serialise"],["serailsed","serialised"],["serailze","serialize"],["serailzed","serialized"],["serch","search"],["serched","searched"],["serches","searches"],["serching","searching"],["sercive","service"],["sercived","serviced"],["sercives","services"],["serciving","servicing"],["sereverless","serverless"],["serevrless","serverless"],["sergent","sergeant"],["serialialisation","serialisation"],["serialialise","serialise"],["serialialised","serialised"],["serialialises","serialises"],["serialialising","serialising"],["serialialization","serialization"],["serialialize","serialize"],["serialialized","serialized"],["serialializes","serializes"],["serialializing","serializing"],["serialiasation","serialisation"],["serialiazation","serialization"],["serialsiation","serialisation"],["serialsie","serialise"],["serialsied","serialised"],["serialsies","serialises"],["serialsing","serialising"],["serialziation","serialization"],["serialzie","serialize"],["serialzied","serialized"],["serialzies","serializes"],["serialzing","serializing"],["serice","service"],["serie","series"],["seriel","serial"],["serieses","series"],["serios","serious"],["seriouly","seriously"],["seriuos","serious"],["serivce","service"],["serivces","services"],["sersies","series"],["sertificate","certificate"],["sertificated","certificated"],["sertificates","certificates"],["sertification","certification"],["servece","service"],["serveced","serviced"],["serveces","services"],["servecing","servicing"],["serveice","service"],["serveiced","serviced"],["serveices","services"],["serveicing","servicing"],["serveless","serverless"],["serveral","several"],["serverite","severity"],["serverites","severities"],["serverities","severities"],["serverity","severity"],["serverles","serverless"],["serverlesss","serverless"],["serverlsss","serverless"],["servicies","services"],["servie","service"],["servies","services"],["servive","service"],["servoce","service"],["servoced","serviced"],["servoces","services"],["servocing","servicing"],["sesion","session"],["sesions","sessions"],["sesitive","sensitive"],["sesitively","sensitively"],["sesitiveness","sensitiveness"],["sesitivity","sensitivity"],["sessio","session"],["sesssion","session"],["sesssions","sessions"],["sestatusbar","setstatusbar"],["sestatusmsg","setstatusmsg"],["setevn","setenv"],["setgit","setgid"],["seting","setting"],["setings","settings"],["setion","section"],["setions","sections"],["setitng","setting"],["setitngs","settings"],["setquential","sequential"],["setted","set"],["settelement","settlement"],["settign","setting"],["settigns","settings"],["settigs","settings"],["settiing","setting"],["settiings","settings"],["settinga","settings"],["settingss","settings"],["settins","settings"],["settlment","settlement"],["settng","setting"],["settter","setter"],["settters","setters"],["settting","setting"],["setttings","settings"],["settup","setup"],["setyp","setup"],["setyps","setups"],["seuence","sequence"],["seuences","sequences"],["sevaral","several"],["severat","several"],["severeal","several"],["severirirty","severity"],["severirities","severities"],["severite","severity"],["severites","severities"],["severiy","severity"],["severl","several"],["severley","severely"],["severly","severely"],["sevice","service"],["sevirity","severity"],["sevral","several"],["sevrally","severally"],["sevrity","severity"],["sewdonim","pseudonym"],["sewdonims","pseudonyms"],["sewrvice","service"],["sfety","safety"],["sgadow","shadow"],["sh1sum","sha1sum"],["shadasloo","shadaloo"],["shaddow","shadow"],["shadhow","shadow"],["shadoloo","shadaloo"],["shal","shall"],["shandeleer","chandelier"],["shandeleers","chandeliers"],["shandow","shadow"],["shaneal","chenille"],["shanghi","Shanghai"],["shapshot","snapshot"],["shapshots","snapshots"],["shapsnot","snapshot"],["shapsnots","snapshots"],["sharable","shareable"],["shareed","shared"],["shareing","sharing"],["sharloton","charlatan"],["sharraid","charade"],["sharraids","charades"],["shashes","slashes"],["shatow","ch\xE2teau"],["shbang","shebang"],["shedule","schedule"],["sheduled","scheduled"],["shedules","schedules"],["sheduling","scheduling"],["sheepherd","shepherd"],["sheepherds","shepherds"],["sheeps","sheep"],["sheild","shield"],["sheilded","shielded"],["sheilding","shielding"],["sheilds","shields"],["shepe","shape"],["shepered","shepherd"],["sheperedly","shepherdly"],["shepereds","shepherds"],["shepes","shapes"],["sheping","shaping"],["shepre","sphere"],["shepres","spheres"],["sherif","sheriff"],["shfit","shift"],["shfited","shifted"],["shfiting","shifting"],["shfits","shifts"],["shfted","shifted"],["shicane","chicane"],["shif","shift"],["shif-tab","shift-tab"],["shineing","shining"],["shiped","shipped"],["shiping","shipping"],["shoftware","software"],["shoild","should"],["shoing","showing"],["sholder","shoulder"],["sholdn't","shouldn't"],["sholuld","should"],["sholuldn't","shouldn't"],["shoould","should"],["shopkeeepers","shopkeepers"],["shorcut","shortcut"],["shorcuts","shortcuts"],["shorly","shortly"],["short-cicruit","short-circuit"],["short-cicruits","short-circuits"],["shortcat","shortcut"],["shortcats","shortcuts"],["shortcomming","shortcoming"],["shortcommings","shortcomings"],["shortcutt","shortcut"],["shortern","shorten"],["shorthly","shortly"],["shortkut","shortcut"],["shortkuts","shortcuts"],["shortwhile","short while"],["shotcut","shortcut"],["shotcuts","shortcuts"],["shotdown","shutdown"],["shoucl","should"],["shoud","should"],["shoudl","should"],["shoudld","should"],["shoudle","should"],["shoudln't","shouldn't"],["shoudlnt","shouldn't"],["shoudn't","shouldn't"],["shoudn","shouldn"],["should'nt","shouldn't"],["should't","shouldn't"],["shouldn;t","shouldn't"],["shouldnt'","shouldn't"],["shouldnt","shouldn't"],["shouldnt;","shouldn't"],["shoule","should"],["shoulld","should"],["shouln't","shouldn't"],["shouls","should"],["shoult","should"],["shouod","should"],["shouw","show"],["shouws","shows"],["showvinism","chauvinism"],["shpae","shape"],["shpaes","shapes"],["shpapes","shapes"],["shpere","sphere"],["shperes","spheres"],["shpped","shipped"],["shreak","shriek"],["shreshold","threshold"],["shriks","shrinks"],["shttp","https"],["shudown","shutdown"],["shufle","shuffle"],["shuld","should"],["shure","sure"],["shurely","surely"],["shutdownm","shutdown"],["shuting","shutting"],["shutodwn","shutdown"],["shwo","show"],["shwon","shown"],["shystem","system"],["shystems","systems"],["sibiling","sibling"],["sibilings","siblings"],["sibtitle","subtitle"],["sibtitles","subtitles"],["sicinct","succinct"],["sicinctly","succinctly"],["sicne","since"],["sidde","side"],["sideral","sidereal"],["siduction","seduction"],["siezure","seizure"],["siezures","seizures"],["siffix","suffix"],["siffixed","suffixed"],["siffixes","suffixes"],["siffixing","suffixing"],["sigaled","signaled"],["siganture","signature"],["sigantures","signatures"],["sigen","sign"],["sigificance","significance"],["siginificant","significant"],["siginificantly","significantly"],["siginify","signify"],["sigit","digit"],["sigits","digits"],["sigleton","singleton"],["signales","signals"],["signall","signal"],["signatue","signature"],["signatur","signature"],["signes","signs"],["signficant","significant"],["signficantly","significantly"],["signficiant","significant"],["signfies","signifies"],["signguature","signature"],["signifanct","significant"],["signifant","significant"],["signifantly","significantly"],["signifcant","significant"],["signifcantly","significantly"],["signifficant","significant"],["significanly","significantly"],["significat","significant"],["significatly","significantly"],["significently","significantly"],["signifigant","significant"],["signifigantly","significantly"],["signitories","signatories"],["signitory","signatory"],["signol","signal"],["signto","sign to"],["signul","signal"],["signular","singular"],["signularity","singularity"],["silentely","silently"],["silenty","silently"],["silouhette","silhouette"],["silouhetted","silhouetted"],["silouhettes","silhouettes"],["silouhetting","silhouetting"],["simeple","simple"],["simetrie","symmetry"],["simetries","symmetries"],["simgle","single"],["simialr","similar"],["simialrity","similarity"],["simialrly","similarly"],["simiar","similar"],["similarily","similarly"],["similary","similarly"],["similat","similar"],["similia","similar"],["similiar","similar"],["similiarity","similarity"],["similiarly","similarly"],["similiarty","similarity"],["similiary","similarity"],["simillar","similar"],["similtaneous","simultaneous"],["simlar","similar"],["simlarlity","similarity"],["simlarly","similarly"],["simliar","similar"],["simliarly","similarly"],["simlicity","simplicity"],["simlified","simplified"],["simmetric","symmetric"],["simmetrical","symmetrical"],["simmetry","symmetry"],["simmilar","similar"],["simpification","simplification"],["simpifications","simplifications"],["simpified","simplified"],["simplei","simply"],["simpley","simply"],["simplfy","simplify"],["simplicitly","simplicity"],["simplicty","simplicity"],["simplier","simpler"],["simpliest","simplest"],["simplifed","simplified"],["simplificaiton","simplification"],["simplificaitons","simplifications"],["simplifiy","simplify"],["simplifys","simplifies"],["simpliifcation","simplification"],["simpliifcations","simplifications"],["simplist","simplest"],["simpy","simply"],["simualte","simulate"],["simualted","simulated"],["simualtes","simulates"],["simualting","simulating"],["simualtion","simulation"],["simualtions","simulations"],["simualtor","simulator"],["simualtors","simulators"],["simulaiton","simulation"],["simulaitons","simulations"],["simulantaneous","simultaneous"],["simulantaneously","simultaneously"],["simulataeous","simultaneous"],["simulataeously","simultaneously"],["simulataneity","simultaneity"],["simulataneous","simultaneous"],["simulataneously","simultaneously"],["simulatanious","simultaneous"],["simulataniously","simultaneously"],["simulatanous","simultaneous"],["simulatanously","simultaneously"],["simulatation","simulation"],["simulatenous","simultaneous"],["simulatenously","simultaneously"],["simultanaeous","simultaneous"],["simultaneos","simultaneous"],["simultaneosly","simultaneously"],["simultanious","simultaneous"],["simultaniously","simultaneously"],["simultanous","simultaneous"],["simultanously","simultaneously"],["simutaneously","simultaneously"],["sinature","signature"],["sincerley","sincerely"],["sincerly","sincerely"],["singaled","signaled"],["singals","signals"],["singature","signature"],["singatures","signatures"],["singelar","singular"],["singelarity","singularity"],["singelarly","singularly"],["singelton","singleton"],["singl","single"],["singlar","singular"],["single-threded","single-threaded"],["singlton","singleton"],["singltons","singletons"],["singluar","singular"],["singlular","singular"],["singlularly","singularly"],["singnal","signal"],["singnalled","signalled"],["singnals","signals"],["singolar","singular"],["singoolar","singular"],["singoolarity","singularity"],["singoolarly","singularly"],["singsog","singsong"],["singuarity","singularity"],["singuarl","singular"],["singulat","singular"],["singulaties","singularities"],["sinlge","single"],["sinlges","singles"],["sinply","simply"],["sintac","syntax"],["sintacks","syntax"],["sintacs","syntax"],["sintact","syntax"],["sintacts","syntax"],["sintak","syntax"],["sintaks","syntax"],["sintakt","syntax"],["sintakts","syntax"],["sintax","syntax"],["Sionist","Zionist"],["Sionists","Zionists"],["siply","simply"],["sircle","circle"],["sircles","circles"],["sircular","circular"],["sirect","direct"],["sirected","directed"],["sirecting","directing"],["sirection","direction"],["sirectional","directional"],["sirectionalities","directionalities"],["sirectionality","directionality"],["sirectionals","directionals"],["sirectionless","directionless"],["sirections","directions"],["sirective","directive"],["sirectives","directives"],["sirectly","directly"],["sirectness","directness"],["sirector","director"],["sirectories","directories"],["sirectors","directors"],["sirectory","directory"],["sirects","directs"],["sisnce","since"],["sistem","system"],["sistematically","systematically"],["sistematics","systematics"],["sistematies","systematies"],["sistematising","systematising"],["sistematizing","systematizing"],["sistematy","systematy"],["sistemed","systemed"],["sistemic","systemic"],["sistemically","systemically"],["sistemics","systemics"],["sistemist","systemist"],["sistemists","systemists"],["sistemize","systemize"],["sistemized","systemized"],["sistemizes","systemizes"],["sistemizing","systemizing"],["sistems","systems"],["sitation","situation"],["sitations","situations"],["sitaution","situation"],["sitautions","situations"],["sitck","stick"],["siteu","site"],["sitill","still"],["sitirring","stirring"],["sitirs","stirs"],["sitl","still"],["sitll","still"],["sitmuli","stimuli"],["situationnal","situational"],["situatuion","situation"],["situatuions","situations"],["situatution","situation"],["situatutions","situations"],["situbbornness","stubbornness"],["situdio","studio"],["situdios","studios"],["situration","situation"],["siturations","situations"],["situtaion","situation"],["situtaions","situations"],["situtation","situation"],["situtations","situations"],["siutable","suitable"],["siute","suite"],["sivible","visible"],["siwtch","switch"],["siwtched","switched"],["siwtching","switching"],["sizre","size"],["Skagerak","Skagerrak"],["skalar","scalar"],["skateing","skating"],["skecth","sketch"],["skecthes","sketches"],["skeep","skip"],["skelton","skeleton"],["skept","skipped"],["sketchs","sketches"],["skipd","skipped"],["skipe","skip"],["skiping","skipping"],["skippd","skipped"],["skippped","skipped"],["skippps","skips"],["slach","slash"],["slaches","slashes"],["slase","slash"],["slases","slashes"],["slashs","slashes"],["slaugterhouses","slaughterhouses"],["slect","select"],["slected","selected"],["slecting","selecting"],["slection","selection"],["sleect","select"],["sleeped","slept"],["sleepp","sleep"],["slicable","sliceable"],["slient","silent"],["sliently","silently"],["slighlty","slightly"],["slighly","slightly"],["slightl","slightly"],["slighty","slightly"],["slignt","slight"],["sligntly","slightly"],["sligth","slight"],["sligthly","slightly"],["sligtly","slightly"],["sliped","slipped"],["sliseshow","slideshow"],["slowy","slowly"],["sluggify","slugify"],["smae","same"],["smal","small"],["smaler","smaller"],["smallar","smaller"],["smalles","smallest"],["smaple","sample"],["smaples","samples"],["smealting","smelting"],["smething","something"],["smller","smaller"],["smoe","some"],["smoot","smooth"],["smooter","smoother"],["smoothign","smoothing"],["smooting","smoothing"],["smouth","smooth"],["smouthness","smoothness"],["smove","move"],["snaped","snapped"],["snaphot","snapshot"],["snaphsot","snapshot"],["snaping","snapping"],["snappng","snapping"],["snapsnot","snapshot"],["snapsnots","snapshots"],["sneeks","sneaks"],["snese","sneeze"],["snipet","snippet"],["snipets","snippets"],["snpashot","snapshot"],["snpashots","snapshots"],["snyc","sync"],["snytax","syntax"],["Soalris","Solaris"],["socail","social"],["socalism","socialism"],["socekts","sockets"],["socities","societies"],["soecialize","specialized"],["soem","some"],["soemthing","something"],["soemwhere","somewhere"],["sofisticated","sophisticated"],["softend","softened"],["softwares","software"],["softwre","software"],["sofware","software"],["sofwtare","software"],["sohw","show"],["soilders","soldiers"],["soiurce","source"],["soket","socket"],["sokets","sockets"],["solarmutx","solarmutex"],["solatary","solitary"],["solate","isolate"],["solated","isolated"],["solates","isolates"],["solating","isolating"],["soley","solely"],["solfed","solved"],["solfes","solves"],["solfing","solving"],["solfs","solves"],["soliders","soldiers"],["solification","solidification"],["soliliquy","soliloquy"],["soltion","solution"],["soltuion","solution"],["soltuions","solutions"],["soluable","soluble"],["solum","solemn"],["soluton","solution"],["solutons","solutions"],["solveable","solvable"],["solveing","solving"],["solwed","solved"],["som","some"],["someboby","somebody"],["somehing","something"],["somehting","something"],["somehwat","somewhat"],["somehwere","somewhere"],["somehwo","somehow"],["somelse","someone else"],["somemore","some more"],["somene","someone"],["somenone","someone"],["someon","someone"],["somethig","something"],["somethign","something"],["somethimes","sometimes"],["somethimg","something"],["somethiong","something"],["sometiems","sometimes"],["sometihing","something"],["sometihng","something"],["sometims","sometimes"],["sometines","sometimes"],["someting","something"],["sometinhg","something"],["sometring","something"],["sometrings","somethings"],["somewere","somewhere"],["somewher","somewhere"],["somewho","somehow"],["somme","some"],["somthign","something"],["somthing","something"],["somthingelse","somethingelse"],["somtimes","sometimes"],["somwhat","somewhat"],["somwhere","somewhere"],["somwho","somehow"],["somwhow","somehow"],["sonething","something"],["songlar","singular"],["sooaside","suicide"],["soodonim","pseudonym"],["soource","source"],["sophicated","sophisticated"],["sophisicated","sophisticated"],["sophisitcated","sophisticated"],["sophisticted","sophisticated"],["sophmore","sophomore"],["sorceror","sorcerer"],["sorkflow","workflow"],["sorrounding","surrounding"],["sortig","sorting"],["sortings","sorting"],["sortlst","sortlist"],["sortner","sorter"],["sortnr","sorter"],["soscket","socket"],["sotfware","software"],["souce","source"],["souces","sources"],["soucre","source"],["soucres","sources"],["soudn","sound"],["soudns","sounds"],["sould'nt","shouldn't"],["souldn't","shouldn't"],["soundard","soundcard"],["sountrack","soundtrack"],["sourc","source"],["sourcedrectory","sourcedirectory"],["sourcee","source"],["sourcees","sources"],["sourct","source"],["sourrounding","surrounding"],["sourth","south"],["sourthern","southern"],["southbrige","southbridge"],["souvenier","souvenir"],["souveniers","souvenirs"],["soveits","soviets"],["sover","solver"],["sovereignity","sovereignty"],["soverign","sovereign"],["soverignity","sovereignty"],["soverignty","sovereignty"],["sovle","solve"],["sovled","solved"],["sovren","sovereign"],["spacific","specific"],["spacification","specification"],["spacifications","specifications"],["spacifics","specifics"],["spacified","specified"],["spacifies","specifies"],["spaece","space"],["spaeced","spaced"],["spaeces","spaces"],["spaecing","spacing"],["spageti","spaghetti"],["spagetti","spaghetti"],["spagheti","spaghetti"],["spagnum","sphagnum"],["spainish","Spanish"],["spaning","spanning"],["sparate","separate"],["sparately","separately"],["spash","splash"],["spashed","splashed"],["spashes","splashes"],["spaw","spawn"],["spawed","spawned"],["spawing","spawning"],["spawining","spawning"],["spaws","spawns"],["spcae","space"],["spcaed","spaced"],["spcaes","spaces"],["spcaing","spacing"],["spcecified","specified"],["spcial","special"],["spcific","specific"],["spcification","specification"],["spcifications","specifications"],["spcified","specified"],["spcifies","specifies"],["spcify","specify"],["speaced","spaced"],["speach","speech"],["speacing","spacing"],["spearator","separator"],["spearators","separators"],["spec-complient","spec-compliant"],["specail","special"],["specefic","specific"],["specefically","specifically"],["speceficly","specifically"],["specefied","specified"],["specfic","specific"],["specfically","specifically"],["specfication","specification"],["specfications","specifications"],["specficication","specification"],["specficications","specifications"],["specficied","specified"],["specficies","specifies"],["specficy","specify"],["specficying","specifying"],["specfied","specified"],["specfield","specified"],["specfies","specifies"],["specfifies","specifies"],["specfify","specify"],["specfifying","specifying"],["specfiied","specified"],["specfy","specify"],["specfying","specifying"],["speciafied","specified"],["specialisaiton","specialisation"],["specialisaitons","specialisations"],["specializaiton","specialization"],["specializaitons","specializations"],["specialy","specially"],["specic","specific"],["specical","special"],["specication","specification"],["specidic","specific"],["specied","specified"],["speciefied","specified"],["specifactions","specifications"],["specifc","specific"],["specifcally","specifically"],["specifcation","specification"],["specifcations","specifications"],["specifcied","specified"],["specifclly","specifically"],["specifed","specified"],["specifes","specifies"],["speciffic","specific"],["speciffically","specifically"],["specifially","specifically"],["specificaiton","specification"],["specificaitons","specifications"],["specificallly","specifically"],["specificaly","specifically"],["specificated","specified"],["specificateion","specification"],["specificatin","specification"],["specificaton","specification"],["specificed","specified"],["specifices","specifies"],["specificially","specifically"],["specificiation","specification"],["specificiations","specifications"],["specificically","specifically"],["specificied","specified"],["specificl","specific"],["specificly","specifically"],["specifiction","specification"],["specifictions","specifications"],["specifid","specified"],["specifiec","specific"],["specifiecally","specifically"],["specifiecation","specification"],["specifiecations","specifications"],["specifiecd","specified"],["specifieced","specified"],["specifiecs","specifics"],["specifieed","specified"],["specifiees","specifies"],["specifig","specific"],["specifigation","specification"],["specifigations","specifications"],["specifing","specifying"],["specifities","specifics"],["specifiy","specify"],["specifiying","specifying"],["specifric","specific"],["specift","specify"],["specifyed","specified"],["specifyied","specified"],["specifyig","specifying"],["specifyinhg","specifying"],["speciic","specific"],["speciied","specified"],["speciifc","specific"],["speciifed","specified"],["specilisation","specialisation"],["specilisations","specialisations"],["specilization","specialization"],["specilizations","specializations"],["specilized","specialized"],["speciman","specimen"],["speciries","specifies"],["speciry","specify"],["specivied","specified"],["speciy","specify"],["speciyfing","specifying"],["speciyfying","specifying"],["speciying","specifying"],["spectauclar","spectacular"],["spectaulars","spectaculars"],["spectification","specification"],["spectifications","specifications"],["spectified","specified"],["spectifies","specifies"],["spectify","specify"],["spectifying","specifying"],["spectular","spectacular"],["spectularly","spectacularly"],["spectum","spectrum"],["specturm","spectrum"],["specualtive","speculative"],["specufies","specifies"],["specufy","specify"],["spedific","specific"],["spedified","specified"],["spedify","specify"],["speeak","speak"],["speeaking","speaking"],["speeling","spelling"],["speelling","spelling"],["speep","sleep"],["speep-up","speed-up"],["speeped","sped"],["speeping","sleeping"],["spefcifiable","specifiable"],["spefcific","specific"],["spefcifically","specifically"],["spefcification","specification"],["spefcifications","specifications"],["spefcifics","specifics"],["spefcifieid","specified"],["spefcifieir","specifier"],["spefcifieirs","specifiers"],["spefcifieis","specifies"],["spefcifiy","specify"],["spefcifiying","specifying"],["spefeid","specified"],["spefeir","specifier"],["spefeirs","specifiers"],["spefeis","specifies"],["spefiable","specifiable"],["spefial","special"],["spefic","specific"],["speficable","specifiable"],["spefically","specifically"],["spefication","specification"],["spefications","specifications"],["speficed","specified"],["speficeid","specified"],["speficeir","specifier"],["speficeirs","specifiers"],["speficeis","specifies"],["speficer","specifier"],["speficers","specifiers"],["spefices","specifies"],["speficiable","specifiable"],["speficiallally","specifically"],["speficiallation","specification"],["speficiallations","specifications"],["speficialleid","specified"],["speficialleir","specifier"],["speficialleirs","specifiers"],["speficialleis","specifies"],["speficialliable","specifiable"],["speficiallic","specific"],["speficiallically","specifically"],["speficiallication","specification"],["speficiallications","specifications"],["speficiallics","specifics"],["speficiallied","specified"],["speficiallier","specifier"],["speficialliers","specifiers"],["speficiallies","specifies"],["speficiallifed","specified"],["speficiallifer","specifier"],["speficiallifers","specifiers"],["speficiallifes","specifies"],["speficially","specifically"],["speficiation","specification"],["speficiations","specifications"],["speficic","specific"],["speficically","specifically"],["speficication","specification"],["speficications","specifications"],["speficics","specifics"],["speficied","specified"],["speficieid","specified"],["speficieir","specifier"],["speficieirs","specifiers"],["speficieis","specifies"],["speficier","specifier"],["speficiers","specifiers"],["speficies","specifies"],["speficifally","specifically"],["speficifation","specification"],["speficifations","specifications"],["speficifc","specific"],["speficifcally","specifically"],["speficifcation","specification"],["speficifcations","specifications"],["speficifcs","specifics"],["speficifed","specified"],["speficifeid","specified"],["speficifeir","specifier"],["speficifeirs","specifiers"],["speficifeis","specifies"],["speficifer","specifier"],["speficifers","specifiers"],["speficifes","specifies"],["speficifiable","specifiable"],["speficific","specific"],["speficifically","specifically"],["speficification","specification"],["speficifications","specifications"],["speficifics","specifics"],["speficified","specified"],["speficifier","specifier"],["speficifiers","specifiers"],["speficifies","specifies"],["speficififed","specified"],["speficififer","specifier"],["speficififers","specifiers"],["speficififes","specifies"],["speficify","specify"],["speficifying","specifying"],["speficiiable","specifiable"],["speficiic","specific"],["speficiically","specifically"],["speficiication","specification"],["speficiications","specifications"],["speficiics","specifics"],["speficiied","specified"],["speficiier","specifier"],["speficiiers","specifiers"],["speficiies","specifies"],["speficiifed","specified"],["speficiifer","specifier"],["speficiifers","specifiers"],["speficiifes","specifies"],["speficillally","specifically"],["speficillation","specification"],["speficillations","specifications"],["speficilleid","specified"],["speficilleir","specifier"],["speficilleirs","specifiers"],["speficilleis","specifies"],["speficilliable","specifiable"],["speficillic","specific"],["speficillically","specifically"],["speficillication","specification"],["speficillications","specifications"],["speficillics","specifics"],["speficillied","specified"],["speficillier","specifier"],["speficilliers","specifiers"],["speficillies","specifies"],["speficillifed","specified"],["speficillifer","specifier"],["speficillifers","specifiers"],["speficillifes","specifies"],["speficilly","specifically"],["speficitally","specifically"],["speficitation","specification"],["speficitations","specifications"],["speficiteid","specified"],["speficiteir","specifier"],["speficiteirs","specifiers"],["speficiteis","specifies"],["speficitiable","specifiable"],["speficitic","specific"],["speficitically","specifically"],["speficitication","specification"],["speficitications","specifications"],["speficitics","specifics"],["speficitied","specified"],["speficitier","specifier"],["speficitiers","specifiers"],["speficities","specificities"],["speficitifed","specified"],["speficitifer","specifier"],["speficitifers","specifiers"],["speficitifes","specifies"],["speficity","specificity"],["speficiy","specify"],["speficiying","specifying"],["spefics","specifics"],["speficy","specify"],["speficying","specifying"],["spefied","specified"],["spefier","specifier"],["spefiers","specifiers"],["spefies","specifies"],["spefifally","specifically"],["spefifation","specification"],["spefifations","specifications"],["spefifed","specified"],["spefifeid","specified"],["spefifeir","specifier"],["spefifeirs","specifiers"],["spefifeis","specifies"],["spefifer","specifier"],["spefifers","specifiers"],["spefifes","specifies"],["spefifiable","specifiable"],["spefific","specific"],["spefifically","specifically"],["spefification","specification"],["spefifications","specifications"],["spefifics","specifics"],["spefified","specified"],["spefifier","specifier"],["spefifiers","specifiers"],["spefifies","specifies"],["spefififed","specified"],["spefififer","specifier"],["spefififers","specifiers"],["spefififes","specifies"],["spefify","specify"],["spefifying","specifying"],["spefiiable","specifiable"],["spefiic","specific"],["spefiically","specifically"],["spefiication","specification"],["spefiications","specifications"],["spefiics","specifics"],["spefiied","specified"],["spefiier","specifier"],["spefiiers","specifiers"],["spefiies","specifies"],["spefiifally","specifically"],["spefiifation","specification"],["spefiifations","specifications"],["spefiifeid","specified"],["spefiifeir","specifier"],["spefiifeirs","specifiers"],["spefiifeis","specifies"],["spefiifiable","specifiable"],["spefiific","specific"],["spefiifically","specifically"],["spefiification","specification"],["spefiifications","specifications"],["spefiifics","specifics"],["spefiified","specified"],["spefiifier","specifier"],["spefiifiers","specifiers"],["spefiifies","specifies"],["spefiififed","specified"],["spefiififer","specifier"],["spefiififers","specifiers"],["spefiififes","specifies"],["spefiify","specify"],["spefiifying","specifying"],["spefixally","specifically"],["spefixation","specification"],["spefixations","specifications"],["spefixeid","specified"],["spefixeir","specifier"],["spefixeirs","specifiers"],["spefixeis","specifies"],["spefixiable","specifiable"],["spefixic","specific"],["spefixically","specifically"],["spefixication","specification"],["spefixications","specifications"],["spefixics","specifics"],["spefixied","specified"],["spefixier","specifier"],["spefixiers","specifiers"],["spefixies","specifies"],["spefixifed","specified"],["spefixifer","specifier"],["spefixifers","specifiers"],["spefixifes","specifies"],["spefixy","specify"],["spefixying","specifying"],["spefiy","specify"],["spefiying","specifying"],["spefy","specify"],["spefying","specifying"],["speherical","spherical"],["speical","special"],["speices","species"],["speicfied","specified"],["speicific","specific"],["speicified","specified"],["speicify","specify"],["speling","spelling"],["spellshecking","spellchecking"],["spendour","splendour"],["speparate","separate"],["speparated","separated"],["speparating","separating"],["speparation","separation"],["speparator","separator"],["spepc","spec"],["speperatd","separated"],["speperate","separate"],["speperateing","separating"],["speperater","separator"],["speperates","separates"],["speperating","separating"],["speperator","separator"],["speperats","separates"],["sperate","separate"],["sperately","separately"],["sperhical","spherical"],["spermatozoan","spermatozoon"],["speshal","special"],["speshel","special"],["spesialisation","specialization"],["spesific","specific"],["spesifical","specific"],["spesifically","specifically"],["spesificaly","specifically"],["spesifics","specifics"],["spesified","specified"],["spesifities","specifics"],["spesify","specify"],["spezialisation","specialization"],["spezific","specific"],["spezified","specified"],["spezify","specify"],["spicific","specific"],["spicified","specified"],["spicify","specify"],["spiltting","splitting"],["spindel","spindle"],["spindels","spindles"],["spinlcok","spinlock"],["spinock","spinlock"],["spligs","splits"],["spliiter","splitter"],["spliitting","splitting"],["spliting","splitting"],["splitted","split"],["splittng","splitting"],["spllitting","splitting"],["spoace","space"],["spoaced","spaced"],["spoaces","spaces"],["spoacing","spacing"],["sponser","sponsor"],["sponsered","sponsored"],["sponsers","sponsors"],["sponsership","sponsorship"],["spontanous","spontaneous"],["sponzored","sponsored"],["spoonfulls","spoonfuls"],["sporatic","sporadic"],["sporious","spurious"],["sppeches","speeches"],["spport","support"],["spported","supported"],["spporting","supporting"],["spports","supports"],["spreaded","spread"],["spreadhseet","spreadsheet"],["spreadhseets","spreadsheets"],["spreadsheat","spreadsheet"],["spreadsheats","spreadsheets"],["spreasheet","spreadsheet"],["spreasheets","spreadsheets"],["sprech","speech"],["sprecial","special"],["sprecialized","specialized"],["sprecially","specially"],["spred","spread"],["spredsheet","spreadsheet"],["spreedsheet","spreadsheet"],["sprinf","sprintf"],["spririous","spurious"],["spriritual","spiritual"],["spritual","spiritual"],["sproon","spoon"],["spsace","space"],["spsaced","spaced"],["spsaces","spaces"],["spsacing","spacing"],["sptintf","sprintf"],["spurios","spurious"],["spurrious","spurious"],["sqare","square"],["sqared","squared"],["sqares","squares"],["sqash","squash"],["sqashed","squashed"],["sqashing","squashing"],["sqaure","square"],["sqaured","squared"],["sqaures","squares"],["sqeuence","sequence"],["squashgin","squashing"],["squence","sequence"],["squirel","squirrel"],["squirl","squirrel"],["squrared","squared"],["srcipt","script"],["srcipts","scripts"],["sreampropinfo","streampropinfo"],["sreenshot","screenshot"],["sreenshots","screenshots"],["sreturns","returns"],["srikeout","strikeout"],["sring","string"],["srings","strings"],["srink","shrink"],["srinkd","shrunk"],["srinked","shrunk"],["srinking","shrinking"],["sript","script"],["sripts","scripts"],["srollbar","scrollbar"],["srouce","source"],["srtifact","artifact"],["srtifacts","artifacts"],["srtings","strings"],["srtructure","structure"],["srttings","settings"],["sructure","structure"],["sructures","structures"],["srunk","shrunk"],["srunken","shrunken"],["srunkn","shrunken"],["ssame","same"],["ssee","see"],["ssoaiating","associating"],["ssome","some"],["stabalization","stabilization"],["stabilitation","stabilization"],["stabilite","stabilize"],["stabilited","stabilized"],["stabilites","stabilizes"],["stabiliting","stabilizing"],["stabillity","stability"],["stabilty","stability"],["stablility","stability"],["stablilization","stabilization"],["stablize","stabilize"],["stach","stack"],["stacionary","stationary"],["stackk","stack"],["stadnard","standard"],["stadnardisation","standardisation"],["stadnardised","standardised"],["stadnardising","standardising"],["stadnardization","standardization"],["stadnardized","standardized"],["stadnardizing","standardizing"],["stadnards","standards"],["stae","state"],["staement","statement"],["staically","statically"],["stainlees","stainless"],["staion","station"],["staions","stations"],["staition","station"],["staitions","stations"],["stalagtite","stalactite"],["standar","standard"],["standarad","standard"],["standard-complient","standard-compliant"],["standardss","standards"],["standarisation","standardisation"],["standarise","standardise"],["standarised","standardised"],["standarises","standardises"],["standarising","standardising"],["standarization","standardization"],["standarize","standardize"],["standarized","standardized"],["standarizes","standardizes"],["standarizing","standardizing"],["standart","standard"],["standartd","standard"],["standartds","standards"],["standartisation","standardisation"],["standartisator","standardiser"],["standartised","standardised"],["standartization","standardization"],["standartizator","standardizer"],["standartized","standardized"],["standarts","standards"],["standatd","standard"],["standrat","standard"],["standrats","standards"],["standtard","standard"],["stange","strange"],["stanp","stamp"],["staration","starvation"],["stard","start"],["stardard","standard"],["stardardize","standardize"],["stardardized","standardized"],["stardardizes","standardizes"],["stardardizing","standardizing"],["stardards","standards"],["staright","straight"],["startd","started"],["startegic","strategic"],["startegies","strategies"],["startegy","strategy"],["startet","started"],["startign","starting"],["startin","starting"],["startlisteneing","startlistening"],["startnig","starting"],["startparanthesis","startparentheses"],["startted","started"],["startting","starting"],["starup","startup"],["starups","startups"],["statamenet","statement"],["statamenets","statements"],["stategies","strategies"],["stategise","strategise"],["stategised","strategised"],["stategize","strategize"],["stategized","strategized"],["stategy","strategy"],["stateman","statesman"],["statemanet","statement"],["statememts","statements"],["statemen","statement"],["statemenet","statement"],["statemenets","statements"],["statemet","statement"],["statemnts","statements"],["stati","statuses"],["staticly","statically"],["statictic","statistic"],["statictics","statistics"],["statisfied","satisfied"],["statisfies","satisfies"],["statisfy","satisfy"],["statisfying","satisfying"],["statisitics","statistics"],["statistices","statistics"],["statitic","statistic"],["statitics","statistics"],["statmenet","statement"],["statmenmt","statement"],["statment","statement"],["statments","statements"],["statrt","start"],["stattistic","statistic"],["statubar","statusbar"],["statuline","statusline"],["statulines","statuslines"],["statup","startup"],["staturday","Saturday"],["statuss","status"],["statusses","statuses"],["statustics","statistics"],["staulk","stalk"],["stauration","saturation"],["staus","status"],["stawberries","strawberries"],["stawberry","strawberry"],["stawk","stalk"],["stcokbrush","stockbrush"],["stdanard","standard"],["stdanards","standards"],["stength","strength"],["steram","stream"],["steramed","streamed"],["steramer","streamer"],["steraming","streaming"],["sterams","streams"],["sterio","stereo"],["steriods","steroids"],["sterotype","stereotype"],["sterotypes","stereotypes"],["stickness","stickiness"],["stickyness","stickiness"],["stiffneing","stiffening"],["stiky","sticky"],["stil","still"],["stilus","stylus"],["stingent","stringent"],["stipped","stripped"],["stiring","stirring"],["stirng","string"],["stirngs","strings"],["stirr","stir"],["stirrs","stirs"],["stivk","stick"],["stivks","sticks"],["stle","style"],["stlye","style"],["stlyes","styles"],["stnad","stand"],["stndard","standard"],["stoage","storage"],["stoages","storages"],["stocahstic","stochastic"],["stocastic","stochastic"],["stoer","store"],["stoers","stores"],["stomache","stomach"],["stompted","stomped"],["stong","strong"],["stoped","stopped"],["stoping","stopping"],["stopp","stop"],["stoppped","stopped"],["stoppping","stopping"],["stopps","stops"],["stopry","story"],["storag","storage"],["storeable","storable"],["storeage","storage"],["stoream","stream"],["storeble","storable"],["storeing","storing"],["storge","storage"],["storise","stories"],["stornegst","strongest"],["stoyr","story"],["stpo","stop"],["stradegies","strategies"],["stradegy","strategy"],["stragegy","strategy"],["strageties","strategies"],["stragety","strategy"],["straigh-forward","straightforward"],["straighforward","straightforward"],["straightfoward","straightforward"],["straigt","straight"],["straigth","straight"],["straines","strains"],["strangness","strangeness"],["strart","start"],["strarted","started"],["strarting","starting"],["strarts","starts"],["stratagically","strategically"],["strcture","structure"],["strctures","structures"],["strcutre","structure"],["strcutural","structural"],["strcuture","structure"],["strcutures","structures"],["streamm","stream"],["streammed","streamed"],["streamming","streaming"],["streatched","stretched"],["strech","stretch"],["streched","stretched"],["streches","stretches"],["streching","stretching"],["strectch","stretch"],["strecth","stretch"],["strecthed","stretched"],["strecthes","stretches"],["strecthing","stretching"],["streem","stream"],["streemlining","streamlining"],["stregth","strength"],["streightish","straightish"],["streightly","straightly"],["streightness","straightness"],["streigtish","straightish"],["streigtly","straightly"],["streigtness","straightness"],["strem","stream"],["strema","stream"],["strengh","strength"],["strenghen","strengthen"],["strenghened","strengthened"],["strenghening","strengthening"],["strenght","strength"],["strenghten","strengthen"],["strenghtened","strengthened"],["strenghtening","strengthening"],["strenghts","strengths"],["strengtened","strengthened"],["strenous","strenuous"],["strentgh","strength"],["strenth","strength"],["strerrror","strerror"],["striaght","straight"],["striaghten","straighten"],["striaghtens","straightens"],["striaghtforward","straightforward"],["striaghts","straights"],["striclty","strictly"],["stricly","strictly"],["stricteir","stricter"],["strictier","stricter"],["strictiest","strictest"],["strictist","strictest"],["strig","string"],["strigification","stringification"],["strigifying","stringifying"],["striing","string"],["striings","strings"],["strikely","strikingly"],["stringifed","stringified"],["strinsg","strings"],["strippen","stripped"],["stript","stripped"],["strirngification","stringification"],["strnad","strand"],["strng","string"],["stroage","storage"],["stroe","store"],["stroing","storing"],["stronlgy","strongly"],["stronly","strongly"],["strore","store"],["strored","stored"],["strores","stores"],["stroring","storing"],["strotage","storage"],["stroyboard","storyboard"],["struc","struct"],["strucrure","structure"],["strucrured","structured"],["strucrures","structures"],["structed","structured"],["structer","structure"],["structere","structure"],["structered","structured"],["structeres","structures"],["structetr","structure"],["structire","structure"],["structre","structure"],["structred","structured"],["structres","structures"],["structrual","structural"],["structrue","structure"],["structrued","structured"],["structrues","structures"],["structual","structural"],["structue","structure"],["structued","structured"],["structues","structures"],["structur","structure"],["structurs","structures"],["strucur","structure"],["strucure","structure"],["strucured","structured"],["strucures","structures"],["strucuring","structuring"],["strucurs","structures"],["strucutre","structure"],["strucutred","structured"],["strucutres","structures"],["strucuture","structure"],["struggel","struggle"],["struggeled","struggled"],["struggeling","struggling"],["struggels","struggles"],["struttural","structural"],["strutture","structure"],["struture","structure"],["ststion","station"],["ststionary","stationary"],["ststioned","stationed"],["ststionery","stationery"],["ststions","stations"],["ststr","strstr"],["stteting","setting"],["sttetings","settings"],["stubborness","stubbornness"],["stucked","stuck"],["stuckt","stuck"],["stuct","struct"],["stucts","structs"],["stucture","structure"],["stuctured","structured"],["stuctures","structures"],["studdy","study"],["studetn","student"],["studetns","students"],["studing","studying"],["studoi","studio"],["studois","studios"],["stuggling","struggling"],["stuido","studio"],["stuidos","studios"],["stuill","still"],["stummac","stomach"],["sturctural","structural"],["sturcture","structure"],["sturctures","structures"],["sturture","structure"],["sturtured","structured"],["sturtures","structures"],["sturucture","structure"],["stutdown","shutdown"],["stutus","status"],["styhe","style"],["styilistic","stylistic"],["stylessheets","stylesheets"],["sub-lcuase","sub-clause"],["subbtle","subtle"],["subcatagories","subcategories"],["subcatagory","subcategory"],["subcirucit","subcircuit"],["subcommannd","subcommand"],["subcommnad","subcommand"],["subconchus","subconscious"],["subconsiously","subconsciously"],["subcribe","subscribe"],["subcribed","subscribed"],["subcribes","subscribes"],["subcribing","subscribing"],["subdirectoires","subdirectories"],["subdirectorys","subdirectories"],["subdirecty","subdirectory"],["subdivisio","subdivision"],["subdivisiond","subdivisioned"],["subdoamin","subdomain"],["subdoamins","subdomains"],["subelemet","subelement"],["subelemets","subelements"],["subexperesion","subexpression"],["subexperesions","subexpressions"],["subexperession","subexpression"],["subexperessions","subexpressions"],["subexpersion","subexpression"],["subexpersions","subexpressions"],["subexperssion","subexpression"],["subexperssions","subexpressions"],["subexpession","subexpression"],["subexpessions","subexpressions"],["subexpresssion","subexpression"],["subexpresssions","subexpressions"],["subfolfer","subfolder"],["subfolfers","subfolders"],["subfromat","subformat"],["subfromats","subformats"],["subfroms","subforms"],["subgregion","subregion"],["subirectory","subdirectory"],["subjec","subject"],["subjet","subject"],["subjudgation","subjugation"],["sublass","subclass"],["sublasse","subclasse"],["sublasses","subclasses"],["sublcasses","subclasses"],["sublcuase","subclause"],["suble","subtle"],["submachne","submachine"],["submision","submission"],["submisson","submission"],["submited","submitted"],["submition","submission"],["submitions","submissions"],["submittted","submitted"],["submoule","submodule"],["submti","submit"],["subnegatiotiation","subnegotiation"],["subnegatiotiations","subnegotiations"],["subnegoatiation","subnegotiation"],["subnegoatiations","subnegotiations"],["subnegoation","subnegotiation"],["subnegoations","subnegotiations"],["subnegociation","subnegotiation"],["subnegociations","subnegotiations"],["subnegogtiation","subnegotiation"],["subnegogtiations","subnegotiations"],["subnegoitation","subnegotiation"],["subnegoitations","subnegotiations"],["subnegoptionsotiation","subnegotiation"],["subnegoptionsotiations","subnegotiations"],["subnegosiation","subnegotiation"],["subnegosiations","subnegotiations"],["subnegotaiation","subnegotiation"],["subnegotaiations","subnegotiations"],["subnegotaition","subnegotiation"],["subnegotaitions","subnegotiations"],["subnegotatiation","subnegotiation"],["subnegotatiations","subnegotiations"],["subnegotation","subnegotiation"],["subnegotations","subnegotiations"],["subnegothiation","subnegotiation"],["subnegothiations","subnegotiations"],["subnegotication","subnegotiation"],["subnegotications","subnegotiations"],["subnegotioation","subnegotiation"],["subnegotioations","subnegotiations"],["subnegotion","subnegotiation"],["subnegotionation","subnegotiation"],["subnegotionations","subnegotiations"],["subnegotions","subnegotiations"],["subnegotiotation","subnegotiation"],["subnegotiotations","subnegotiations"],["subnegotiotion","subnegotiation"],["subnegotiotions","subnegotiations"],["subnegotitaion","subnegotiation"],["subnegotitaions","subnegotiations"],["subnegotitation","subnegotiation"],["subnegotitations","subnegotiations"],["subnegotition","subnegotiation"],["subnegotitions","subnegotiations"],["subnegoziation","subnegotiation"],["subnegoziations","subnegotiations"],["subobjecs","subobjects"],["suborutine","subroutine"],["suborutines","subroutines"],["suboutine","subroutine"],["subpackge","subpackage"],["subpackges","subpackages"],["subpecies","subspecies"],["subporgram","subprogram"],["subproccese","subprocess"],["subpsace","subspace"],["subquue","subqueue"],["subract","subtract"],["subracted","subtracted"],["subraction","subtraction"],["subree","subtree"],["subresoure","subresource"],["subresoures","subresources"],["subroutie","subroutine"],["subrouties","subroutines"],["subsceptible","susceptible"],["subscibe","subscribe"],["subscibed","subscribed"],["subsciber","subscriber"],["subscibers","subscribers"],["subscirbe","subscribe"],["subscirbed","subscribed"],["subscirber","subscriber"],["subscirbers","subscribers"],["subscirbes","subscribes"],["subscirbing","subscribing"],["subscirpt","subscript"],["subscirption","subscription"],["subscirptions","subscriptions"],["subscritpion","subscription"],["subscritpions","subscriptions"],["subscritpiton","subscription"],["subscritpitons","subscriptions"],["subscritpt","subscript"],["subscritption","subscription"],["subscritptions","subscriptions"],["subsctitution","substitution"],["subsecrion","subsection"],["subsedent","subsequent"],["subseqence","subsequence"],["subseqent","subsequent"],["subsequest","subsequent"],["subsequnce","subsequence"],["subsequnt","subsequent"],["subsequntly","subsequently"],["subseuqent","subsequent"],["subshystem","subsystem"],["subshystems","subsystems"],["subsidary","subsidiary"],["subsiduary","subsidiary"],["subsiquent","subsequent"],["subsiquently","subsequently"],["subsituent","substituent"],["subsituents","substituents"],["subsitutable","substitutable"],["subsitutatble","substitutable"],["subsitute","substitute"],["subsituted","substituted"],["subsitutes","substitutes"],["subsituting","substituting"],["subsitution","substitution"],["subsitutions","substitutions"],["subsitutuent","substituent"],["subsitutuents","substituents"],["subsitutute","substitute"],["subsitututed","substituted"],["subsitututes","substitutes"],["subsitututing","substituting"],["subsitutution","substitution"],["subsquent","subsequent"],["subsquently","subsequently"],["subsriber","subscriber"],["substace","substance"],["substact","subtract"],["substaintially","substantially"],["substancial","substantial"],["substantialy","substantially"],["substantivly","substantively"],["substask","subtask"],["substasks","subtasks"],["substatial","substantial"],["substential","substantial"],["substentially","substantially"],["substition","substitution"],["substitions","substitutions"],["substitition","substitution"],["substititions","substitutions"],["substituation","substitution"],["substituations","substitutions"],["substitude","substitute"],["substituded","substituted"],["substitudes","substitutes"],["substituding","substituting"],["substitue","substitute"],["substitues","substitutes"],["substituing","substituting"],["substituion","substitution"],["substituions","substitutions"],["substiution","substitution"],["substract","subtract"],["substracted","subtracted"],["substracting","subtracting"],["substraction","subtraction"],["substracts","subtracts"],["substucture","substructure"],["substuctures","substructures"],["substutite","substitute"],["subsysthem","subsystem"],["subsysthems","subsystems"],["subsystyem","subsystem"],["subsystyems","subsystems"],["subsysytem","subsystem"],["subsysytems","subsystems"],["subsytem","subsystem"],["subsytems","subsystems"],["subtabels","subtables"],["subtak","subtask"],["subtances","substances"],["subterranian","subterranean"],["subtitute","substitute"],["subtituted","substituted"],["subtitutes","substitutes"],["subtituting","substituting"],["subtitution","substitution"],["subtitutions","substitutions"],["subtrafuge","subterfuge"],["subtrate","substrate"],["subtrates","substrates"],["subtring","substring"],["subtrings","substrings"],["subtsitutable","substitutable"],["subtsitutatble","substitutable"],["suburburban","suburban"],["subystem","subsystem"],["subystems","subsystems"],["succceeded","succeeded"],["succcess","success"],["succcesses","successes"],["succcessful","successful"],["succcessfully","successfully"],["succcessor","successor"],["succcessors","successors"],["succcessul","successful"],["succcessully","successfully"],["succecful","successful"],["succed","succeed"],["succedd","succeed"],["succedded","succeeded"],["succedding","succeeding"],["succedds","succeeds"],["succede","succeed"],["succeded","succeeded"],["succedes","succeeds"],["succedfully","successfully"],["succeding","succeeding"],["succeds","succeeds"],["succee","succeed"],["succeedde","succeeded"],["succeedes","succeeds"],["succeess","success"],["succeesses","successes"],["succes","success"],["succesful","successful"],["succesfull","successful"],["succesfully","successfully"],["succesfuly","successfully"],["succesion","succession"],["succesive","successive"],["succesor","successor"],["succesors","successors"],["successfui","successful"],["successfule","successful"],["successfull","successful"],["successfullies","successfully"],["successfullly","successfully"],["successfulln","successful"],["successfullness","successfulness"],["successfullt","successfully"],["successfuly","successfully"],["successing","successive"],["successs","success"],["successsfully","successfully"],["successsion","succession"],["successul","successful"],["successully","successfully"],["succesully","successfully"],["succicently","sufficiently"],["succint","succinct"],["succseeded","succeeded"],["succsess","success"],["succsessfull","successful"],["succsessive","successive"],["succssful","successful"],["succussfully","successfully"],["suceed","succeed"],["suceeded","succeeded"],["suceeding","succeeding"],["suceeds","succeeds"],["suceessfully","successfully"],["suces","success"],["suceses","successes"],["sucesful","successful"],["sucesfull","successful"],["sucesfully","successfully"],["sucesfuly","successfully"],["sucesion","succession"],["sucesive","successive"],["sucess","success"],["sucesscient","sufficient"],["sucessed","succeeded"],["sucessefully","successfully"],["sucesses","successes"],["sucessess","success"],["sucessflly","successfully"],["sucessfually","successfully"],["sucessfukk","successful"],["sucessful","successful"],["sucessfull","successful"],["sucessfully","successfully"],["sucessfuly","successfully"],["sucession","succession"],["sucessiv","successive"],["sucessive","successive"],["sucessively","successively"],["sucessor","successor"],["sucessors","successors"],["sucessot","successor"],["sucesss","success"],["sucessses","successes"],["sucesssful","successful"],["sucesssfull","successful"],["sucesssfully","successfully"],["sucesssfuly","successfully"],["sucessufll","successful"],["sucessuflly","successfully"],["sucessully","successfully"],["sucide","suicide"],["sucidial","suicidal"],["sucome","succumb"],["sucsede","succeed"],["sucsess","success"],["sudent","student"],["sudents","students"],["sudmobule","submodule"],["sudmobules","submodules"],["sueful","useful"],["sueprset","superset"],["suface","surface"],["sufaces","surfaces"],["sufface","surface"],["suffaces","surfaces"],["suffciency","sufficiency"],["suffcient","sufficient"],["suffciently","sufficiently"],["sufferage","suffrage"],["sufferred","suffered"],["sufferring","suffering"],["sufficate","suffocate"],["sufficated","suffocated"],["sufficates","suffocates"],["sufficating","suffocating"],["suffication","suffocation"],["sufficency","sufficiency"],["sufficent","sufficient"],["sufficently","sufficiently"],["sufficiancy","sufficiency"],["sufficiant","sufficient"],["sufficiantly","sufficiently"],["sufficiennt","sufficient"],["sufficienntly","sufficiently"],["suffiency","sufficiency"],["suffient","sufficient"],["suffiently","sufficiently"],["suffisticated","sophisticated"],["suficate","suffocate"],["suficated","suffocated"],["suficates","suffocates"],["suficating","suffocating"],["sufication","suffocation"],["suficcient","sufficient"],["suficient","sufficient"],["suficiently","sufficiently"],["sufocate","suffocate"],["sufocated","suffocated"],["sufocates","suffocates"],["sufocating","suffocating"],["sufocation","suffocation"],["sugested","suggested"],["sugestion","suggestion"],["sugestions","suggestions"],["sugests","suggests"],["suggesst","suggest"],["suggessted","suggested"],["suggessting","suggesting"],["suggesstion","suggestion"],["suggesstions","suggestions"],["suggessts","suggests"],["suggestes","suggests"],["suggestin","suggestion"],["suggestins","suggestions"],["suggestsed","suggested"],["suggestted","suggested"],["suggesttion","suggestion"],["suggesttions","suggestions"],["sugget","suggest"],["suggeted","suggested"],["suggetsed","suggested"],["suggetsing","suggesting"],["suggetsion","suggestion"],["sugggest","suggest"],["sugggested","suggested"],["sugggesting","suggesting"],["sugggestion","suggestion"],["sugggestions","suggestions"],["sugguest","suggest"],["sugguested","suggested"],["sugguesting","suggesting"],["sugguestion","suggestion"],["sugguestions","suggestions"],["suh","such"],["suiete","suite"],["suiteable","suitable"],["sumamry","summary"],["sumarize","summarize"],["sumary","summary"],["sumbitted","submitted"],["sumed-up","summed-up"],["summarizen","summarize"],["summay","summary"],["summerised","summarised"],["summerized","summarized"],["summersalt","somersault"],["summmaries","summaries"],["summmarisation","summarisation"],["summmarised","summarised"],["summmarization","summarization"],["summmarized","summarized"],["summmary","summary"],["sumodules","submodules"],["sumulate","simulate"],["sumulated","simulated"],["sumulates","simulates"],["sumulation","simulation"],["sumulations","simulations"],["sundey","Sunday"],["sunglases","sunglasses"],["sunsday","Sunday"],["suntask","subtask"],["suop","soup"],["supeblock","superblock"],["supeena","subpoena"],["superbock","superblock"],["superbocks","superblocks"],["supercalifragilisticexpialidoceous","supercalifragilisticexpialidocious"],["supercede","supersede"],["superceded","superseded"],["supercedes","supersedes"],["superceding","superseding"],["superceed","supersede"],["superceeded","superseded"],["superflouous","superfluous"],["superflous","superfluous"],["superflouse","superfluous"],["superfluious","superfluous"],["superfluos","superfluous"],["superfulous","superfluous"],["superintendant","superintendent"],["superopeator","superoperator"],["supersed","superseded"],["superseedd","superseded"],["superseede","supersede"],["superseeded","superseded"],["suphisticated","sophisticated"],["suplant","supplant"],["suplanted","supplanted"],["suplanting","supplanting"],["suplants","supplants"],["suplementary","supplementary"],["suplied","supplied"],["suplimented","supplemented"],["supllies","supplies"],["suport","support"],["suported","supported"],["suporting","supporting"],["suports","supports"],["suportted","supported"],["suposable","supposable"],["supose","suppose"],["suposeable","supposable"],["suposed","supposed"],["suposedly","supposedly"],["suposes","supposes"],["suposing","supposing"],["suposse","suppose"],["suppied","supplied"],["suppier","supplier"],["suppies","supplies"],["supplamented","supplemented"],["suppliad","supplied"],["suppliementing","supplementing"],["suppliment","supplement"],["supplyed","supplied"],["suppoed","supposed"],["suppoert","support"],["suppoort","support"],["suppoorts","supports"],["suppopose","suppose"],["suppoprt","support"],["suppoprted","supported"],["suppor","support"],["suppored","supported"],["supporession","suppression"],["supporing","supporting"],["supportd","supported"],["supportes","supports"],["supportin","supporting"],["supportt","support"],["supportted","supported"],["supportting","supporting"],["supportts","supports"],["supposeable","supposable"],["supposeded","supposed"],["supposedely","supposedly"],["supposeds","supposed"],["supposedy","supposedly"],["supposingly","supposedly"],["suppossed","supposed"],["suppoted","supported"],["suppplied","supplied"],["suppport","support"],["suppported","supported"],["suppporting","supporting"],["suppports","supports"],["suppres","suppress"],["suppresed","suppressed"],["suppresion","suppression"],["suppresions","suppressions"],["suppressingd","suppressing"],["supprot","support"],["supproted","supported"],["supproter","supporter"],["supproters","supporters"],["supproting","supporting"],["supprots","supports"],["supprt","support"],["supprted","supported"],["suppurt","support"],["suppurted","supported"],["suppurter","supporter"],["suppurters","supporters"],["suppurting","supporting"],["suppurtive","supportive"],["suppurts","supports"],["suppy","supply"],["suppying","supplying"],["suprassing","surpassing"],["supres","suppress"],["supresed","suppressed"],["supreses","suppresses"],["supresing","suppressing"],["supresion","suppression"],["supress","suppress"],["supressed","suppressed"],["supresses","suppresses"],["supressible","suppressible"],["supressing","suppressing"],["supression","suppression"],["supressions","suppressions"],["supressor","suppressor"],["supressors","suppressors"],["supresssion","suppression"],["suprious","spurious"],["suprise","surprise"],["suprised","surprised"],["suprises","surprises"],["suprising","surprising"],["suprisingly","surprisingly"],["suprize","surprise"],["suprized","surprised"],["suprizing","surprising"],["suprizingly","surprisingly"],["supsend","suspend"],["supspect","suspect"],["supspected","suspected"],["supspecting","suspecting"],["supspects","suspects"],["surbert","sherbet"],["surfce","surface"],["surgest","suggest"],["surgested","suggested"],["surgestion","suggestion"],["surgestions","suggestions"],["surgests","suggests"],["suround","surround"],["surounded","surrounded"],["surounding","surrounding"],["suroundings","surroundings"],["surounds","surrounds"],["surpise","surprise"],["surpises","surprises"],["surplanted","supplanted"],["surport","support"],["surported","supported"],["surpress","suppress"],["surpressed","suppressed"],["surpresses","suppresses"],["surpressing","suppressing"],["surprisinlgy","surprisingly"],["surprize","surprise"],["surprized","surprised"],["surprizing","surprising"],["surprizingly","surprisingly"],["surregat","surrogate"],["surrepetitious","surreptitious"],["surrepetitiously","surreptitiously"],["surreptious","surreptitious"],["surreptiously","surreptitiously"],["surrogage","surrogate"],["surronded","surrounded"],["surrouded","surrounded"],["surrouding","surrounding"],["surrrounded","surrounded"],["surrundering","surrendering"],["survay","survey"],["survays","surveys"],["surveilence","surveillance"],["surveill","surveil"],["surveyer","surveyor"],["surviver","survivor"],["survivers","survivors"],["survivied","survived"],["susbcribed","subscribed"],["susbsystem","subsystem"],["susbsystems","subsystems"],["susbsytem","subsystem"],["susbsytems","subsystems"],["suscribe","subscribe"],["suscribed","subscribed"],["suscribes","subscribes"],["suscript","subscript"],["susepect","suspect"],["suseptable","susceptible"],["suseptible","susceptible"],["susinctly","succinctly"],["susinkt","succinct"],["suspedn","suspend"],["suspeneded","suspended"],["suspention","suspension"],["suspicios","suspicious"],["suspicioulsy","suspiciously"],["suspicous","suspicious"],["suspicously","suspiciously"],["suspision","suspicion"],["suspsend","suspend"],["sussinct","succinct"],["sustainaiblity","sustainability"],["sustem","system"],["sustems","systems"],["sustitution","substitution"],["sustitutions","substitutions"],["susupend","suspend"],["sutdown","shutdown"],["sutisfaction","satisfaction"],["sutisfied","satisfied"],["sutisfies","satisfies"],["sutisfy","satisfy"],["sutisfying","satisfying"],["suttled","shuttled"],["suttles","shuttles"],["suttlety","subtlety"],["suttling","shuttling"],["suuport","support"],["suuported","supported"],["suuporting","supporting"],["suuports","supports"],["suvenear","souvenir"],["suystem","system"],["suystemic","systemic"],["suystems","systems"],["svelt","svelte"],["swaer","swear"],["swaers","swears"],["swalloed","swallowed"],["swaped","swapped"],["swapiness","swappiness"],["swaping","swapping"],["swarmin","swarming"],["swcloumns","swcolumns"],["swepth","swept"],["swich","switch"],["swiched","switched"],["swiching","switching"],["swicth","switch"],["swicthed","switched"],["swicthing","switching"],["swiming","swimming"],["switchs","switches"],["switcht","switched"],["switchting","switching"],["swith","switch"],["swithable","switchable"],["swithc","switch"],["swithcboard","switchboard"],["swithced","switched"],["swithces","switches"],["swithch","switch"],["swithches","switches"],["swithching","switching"],["swithcing","switching"],["swithcover","switchover"],["swithed","switched"],["swither","switcher"],["swithes","switches"],["swithing","switching"],["switiches","switches"],["swown","shown"],["swtich","switch"],["swtichable","switchable"],["swtichback","switchback"],["swtichbacks","switchbacks"],["swtichboard","switchboard"],["swtichboards","switchboards"],["swtiched","switched"],["swticher","switcher"],["swtichers","switchers"],["swtiches","switches"],["swtiching","switching"],["swtichover","switchover"],["swtichs","switches"],["sxl","xsl"],["syantax","syntax"],["syas","says"],["syatem","system"],["syatems","systems"],["sybsystem","subsystem"],["sybsystems","subsystems"],["sychronisation","synchronisation"],["sychronise","synchronise"],["sychronised","synchronised"],["sychroniser","synchroniser"],["sychronises","synchronises"],["sychronisly","synchronously"],["sychronization","synchronization"],["sychronize","synchronize"],["sychronized","synchronized"],["sychronizer","synchronizer"],["sychronizes","synchronizes"],["sychronmode","synchronmode"],["sychronous","synchronous"],["sychronously","synchronously"],["sycle","cycle"],["sycled","cycled"],["sycles","cycles"],["sycling","cycling"],["sycn","sync"],["sycology","psychology"],["sycronise","synchronise"],["sycronised","synchronised"],["sycronises","synchronises"],["sycronising","synchronising"],["sycronization","synchronization"],["sycronizations","synchronizations"],["sycronize","synchronize"],["sycronized","synchronized"],["sycronizes","synchronizes"],["sycronizing","synchronizing"],["sycronous","synchronous"],["sycronously","synchronously"],["sycronus","synchronous"],["sylabus","syllabus"],["syle","style"],["syles","styles"],["sylibol","syllable"],["sylinder","cylinder"],["sylinders","cylinders"],["sylistic","stylistic"],["sylog","syslog"],["symantics","semantics"],["symblic","symbolic"],["symbo","symbol"],["symboles","symbols"],["symboll","symbol"],["symbonname","symbolname"],["symbsol","symbol"],["symbsols","symbols"],["symemetric","symmetric"],["symetri","symmetry"],["symetric","symmetric"],["symetrical","symmetrical"],["symetrically","symmetrically"],["symetry","symmetry"],["symettric","symmetric"],["symmetic","symmetric"],["symmetral","symmetric"],["symmetri","symmetry"],["symmetricaly","symmetrically"],["symnol","symbol"],["symnols","symbols"],["symobilic","symbolic"],["symobl","symbol"],["symoblic","symbolic"],["symoblically","symbolically"],["symobls","symbols"],["symobolic","symbolic"],["symobolical","symbolical"],["symol","symbol"],["symols","symbols"],["synagouge","synagogue"],["synamic","dynamic"],["synax","syntax"],["synching","syncing"],["synchonisation","synchronisation"],["synchonise","synchronise"],["synchonised","synchronised"],["synchonises","synchronises"],["synchonising","synchronising"],["synchonization","synchronization"],["synchonize","synchronize"],["synchonized","synchronized"],["synchonizes","synchronizes"],["synchonizing","synchronizing"],["synchonous","synchronous"],["synchonrous","synchronous"],["synchrnization","synchronization"],["synchrnonization","synchronization"],["synchroizing","synchronizing"],["synchromized","synchronized"],["synchroneous","synchronous"],["synchroneously","synchronously"],["synchronious","synchronous"],["synchroniously","synchronously"],["synchronizaton","synchronization"],["synchronsouly","synchronously"],["synchronuous","synchronous"],["synchronuously","synchronously"],["synchronus","synchronous"],["syncrhonise","synchronise"],["syncrhonised","synchronised"],["syncrhonize","synchronize"],["syncrhonized","synchronized"],["syncronise","synchronise"],["syncronised","synchronised"],["syncronises","synchronises"],["syncronising","synchronising"],["syncronization","synchronization"],["syncronizations","synchronizations"],["syncronize","synchronize"],["syncronized","synchronized"],["syncronizes","synchronizes"],["syncronizing","synchronizing"],["syncronous","synchronous"],["syncronously","synchronously"],["syncronus","synchronous"],["syncting","syncing"],["syndonic","syntonic"],["syndrom","syndrome"],["syndroms","syndromes"],["synomym","synonym"],["synonim","synonym"],["synonomous","synonymous"],["synonymns","synonyms"],["synopis","synopsis"],["synopsys","synopsis"],["synoym","synonym"],["synphony","symphony"],["synposis","synopsis"],["synronous","synchronous"],["syntac","syntax"],["syntacks","syntax"],["syntacs","syntax"],["syntact","syntax"],["syntactally","syntactically"],["syntacts","syntax"],["syntak","syntax"],["syntaks","syntax"],["syntakt","syntax"],["syntakts","syntax"],["syntatic","syntactic"],["syntatically","syntactically"],["syntaxe","syntax"],["syntaxg","syntax"],["syntaxt","syntax"],["syntehsise","synthesise"],["syntehsised","synthesised"],["syntehsize","synthesize"],["syntehsized","synthesized"],["syntesis","synthesis"],["syntethic","synthetic"],["syntethically","synthetically"],["syntethics","synthetics"],["syntetic","synthetic"],["syntetize","synthesize"],["syntetized","synthesized"],["synthethic","synthetic"],["synthetize","synthesize"],["synthetized","synthesized"],["synthetizes","synthesizes"],["synthtic","synthetic"],["syphyllis","syphilis"],["sypmtoms","symptoms"],["sypport","support"],["syrap","syrup"],["sysbols","symbols"],["syschronize","synchronize"],["sysem","system"],["sysematic","systematic"],["sysems","systems"],["sysmatically","systematically"],["sysmbol","symbol"],["sysmograph","seismograph"],["sysmte","system"],["sysmtes","systems"],["systax","syntax"],["syste","system"],["systen","system"],["systens","systems"],["systesm","systems"],["systhem","system"],["systhems","systems"],["systm","system"],["systme","system"],["systmes","systems"],["systms","systems"],["systyem","system"],["systyems","systems"],["sysyem","system"],["sysyems","systems"],["sytax","syntax"],["sytem","system"],["sytematic","systematic"],["sytemd","systemd"],["syteme","system"],["sytems","systems"],["sythesis","synthesis"],["sytle","style"],["sytled","styled"],["sytles","styles"],["sytlesheet","stylesheet"],["sytling","styling"],["sytnax","syntax"],["sytntax","syntax"],["sytsem","system"],["sytsemic","systemic"],["sytsems","systems"],["szenario","scenario"],["szenarios","scenarios"],["szes","sizes"],["szie","size"],["szied","sized"],["szies","sizes"],["tabacco","tobacco"],["tabbaray","taboret"],["tabblow","tableau"],["tabe","table"],["tabel","table"],["tabeles","tables"],["tabels","tables"],["tabeview","tabview"],["tabke","table"],["tabl","table"],["tablepsace","tablespace"],["tablepsaces","tablespaces"],["tablle","table"],["tabluar","tabular"],["tabluate","tabulate"],["tabluated","tabulated"],["tabluates","tabulates"],["tabluating","tabulating"],["tabualte","tabulate"],["tabualted","tabulated"],["tabualtes","tabulates"],["tabualting","tabulating"],["tabualtor","tabulator"],["tabualtors","tabulators"],["taged","tagged"],["taget","target"],["tageted","targeted"],["tageting","targeting"],["tagets","targets"],["tagggen","taggen"],["tagnet","tangent"],["tagnetial","tangential"],["tagnets","tangents"],["tagued","tagged"],["tahn","than"],["taht","that"],["takslet","tasklet"],["talbe","table"],["talekd","talked"],["tallerable","tolerable"],["tamplate","template"],["tamplated","templated"],["tamplates","templates"],["tamplating","templating"],["tangeant","tangent"],["tangeantial","tangential"],["tangeants","tangents"],["tangenet","tangent"],["tangensial","tangential"],["tangentailly","tangentially"],["tanget","tangent"],["tangetial","tangential"],["tangetially","tangentially"],["tangets","tangents"],["tansact","transact"],["tansaction","transaction"],["tansactional","transactional"],["tansactions","transactions"],["tanseint","transient"],["tansfomed","transformed"],["tansient","transient"],["tanslate","translate"],["tanslated","translated"],["tanslates","translates"],["tanslation","translation"],["tanslations","translations"],["tanslator","translator"],["tansmit","transmit"],["tansverse","transverse"],["tarbal","tarball"],["tarbals","tarballs"],["tarce","trace"],["tarced","traced"],["tarces","traces"],["tarcing","tracing"],["targed","target"],["targer","target"],["targest","targets"],["targetted","targeted"],["targetting","targeting"],["targettting","targeting"],["targt","target"],["targte","target"],["tarmigan","ptarmigan"],["tarnsparent","transparent"],["tarpolin","tarpaulin"],["tarvis","Travis"],["tarvisci","TravisCI"],["tasbar","taskbar"],["taskelt","tasklet"],["tast","taste"],["tatgert","target"],["tatgerted","targeted"],["tatgerting","targeting"],["tatgerts","targets"],["tath","that"],["tatoo","tattoo"],["tatoos","tattoos"],["tattooes","tattoos"],["tawk","talk"],["taxanomic","taxonomic"],["taxanomy","taxonomy"],["taxnomy","taxonomy"],["taxomonmy","taxonomy"],["taxonmy","taxonomy"],["taxonoy","taxonomy"],["taylored","tailored"],["tbe","the"],["tbey","they"],["tcahce","cache"],["tcahces","caches"],["tcheckout","checkout"],["tcpdumpp","tcpdump"],["tcppcheck","cppcheck"],["teacer","teacher"],["teacers","teachers"],["teached","taught"],["teachnig","teaching"],["teaher","teacher"],["teahers","teachers"],["teamplate","template"],["teamplates","templates"],["teated","treated"],["teched","taught"],["techer","teacher"],["techers","teachers"],["teches","teaches"],["techical","technical"],["techician","technician"],["techicians","technicians"],["techincal","technical"],["techincally","technically"],["teching","teaching"],["techinically","technically"],["techinique","technique"],["techiniques","techniques"],["techinque","technique"],["techinques","techniques"],["techique","technique"],["techiques","techniques"],["techneek","technique"],["technic","technique"],["technics","techniques"],["technik","technique"],["techniks","techniques"],["techniquest","techniques"],["techniquet","technique"],["technitian","technician"],["technition","technician"],["technlogy","technology"],["technnology","technology"],["technolgy","technology"],["technoloiges","technologies"],["tecnic","technique"],["tecnical","technical"],["tecnically","technically"],["tecnician","technician"],["tecnicians","technicians"],["tecnique","technique"],["tecniques","techniques"],["tedeous","tedious"],["tefine","define"],["teh","the"],["tehy","they"],["tekst","text"],["teksts","texts"],["telegramm","telegram"],["telelevision","television"],["televsion","television"],["telocom","telecom"],["telphony","telephony"],["temaplate","template"],["temaplates","templates"],["temeprature","temperature"],["temepratures","temperatures"],["temerature","temperature"],["teminal","terminal"],["teminals","terminals"],["teminate","terminate"],["teminated","terminated"],["teminating","terminating"],["temination","termination"],["temlate","template"],["temorarily","temporarily"],["temorary","temporary"],["tempalte","template"],["tempaltes","templates"],["temparal","temporal"],["tempararily","temporarily"],["temparary","temporary"],["temparate","temperate"],["temparature","temperature"],["temparily","temporarily"],["tempate","template"],["tempated","templated"],["tempates","templates"],["tempatied","templatized"],["tempation","temptation"],["tempatised","templatised"],["tempatized","templatized"],["tempature","temperature"],["tempdate","template"],["tempearture","temperature"],["tempeartures","temperatures"],["tempearure","temperature"],["tempelate","template"],["temperarily","temporarily"],["temperarure","temperature"],["temperary","temporary"],["temperatur","temperature"],["tempereature","temperature"],["temperment","temperament"],["tempertaure","temperature"],["temperture","temperature"],["templaced","templated"],["templaces","templates"],["templacing","templating"],["templaet","template"],["templat","template"],["templateas","templates"],["templete","template"],["templeted","templated"],["templetes","templates"],["templeting","templating"],["tempoaray","temporary"],["tempopary","temporary"],["temporaere","temporary"],["temporafy","temporary"],["temporalily","temporarily"],["temporarely","temporarily"],["temporarilly","temporarily"],["temporarilty","temporarily"],["temporarilu","temporary"],["temporarirly","temporarily"],["temporay","temporary"],["tempories","temporaries"],["temporily","temporarily"],["tempororaries","temporaries"],["tempororarily","temporarily"],["tempororary","temporary"],["temporories","temporaries"],["tempororily","temporarily"],["temporory","temporary"],["temporraies","temporaries"],["temporraily","temporarily"],["temporraries","temporaries"],["temporrarily","temporarily"],["temporrary","temporary"],["temporray","temporary"],["temporries","temporaries"],["temporrily","temporarily"],["temporry","temporary"],["temportal","temporal"],["temportaries","temporaries"],["temportarily","temporarily"],["temportary","temporary"],["tempory","temporary"],["temporyries","temporaries"],["temporyrily","temporarily"],["temporyry","temporary"],["tempraaily","temporarily"],["tempraal","temporal"],["tempraarily","temporarily"],["tempraarly","temporarily"],["tempraary","temporary"],["tempraay","temporary"],["tempraily","temporarily"],["tempral","temporal"],["temprament","temperament"],["tempramental","temperamental"],["tempraraily","temporarily"],["tempraral","temporal"],["temprararily","temporarily"],["temprararly","temporarily"],["temprarary","temporary"],["tempraray","temporary"],["temprarily","temporarily"],["temprature","temperature"],["tempratures","temperatures"],["tempray","temporary"],["tempreature","temperature"],["tempreatures","temperatures"],["temprement","temperament"],["tempremental","temperamental"],["temproaily","temporarily"],["temproal","temporal"],["temproarily","temporarily"],["temproarly","temporarily"],["temproary","temporary"],["temproay","temporary"],["temprol","temporal"],["temproment","temperament"],["tempromental","temperamental"],["temproraily","temporarily"],["temproral","temporal"],["temproraly","temporarily"],["temprorarily","temporarily"],["temprorarly","temporarily"],["temprorary","temporary"],["temproray","temporary"],["temprorily","temporarily"],["temprory","temporary"],["temproy","temporary"],["temptatation","temptation"],["tempurature","temperature"],["tempurture","temperature"],["temr","term"],["temrinal","terminal"],["temselves","themselves"],["temtation","temptation"],["tenacle","tentacle"],["tenacles","tentacles"],["tenanet","tenant"],["tenanets","tenants"],["tenatious","tenacious"],["tenatiously","tenaciously"],["tenative","tentative"],["tenatively","tentatively"],["tendacy","tendency"],["tendancies","tendencies"],["tendancy","tendency"],["tennisplayer","tennis player"],["tentaive","tentative"],["tentaively","tentatively"],["tention","tension"],["teplmate","template"],["teplmated","templated"],["teplmates","templates"],["tepmorarily","temporarily"],["teraform","terraform"],["teraformed","terraformed"],["teraforming","terraforming"],["teraforms","terraforms"],["terfform","terraform"],["terfformed","terraformed"],["terfforming","terraforming"],["terfforms","terraforms"],["teridactyl","pterodactyl"],["terific","terrific"],["terimnate","terminate"],["termial","terminal"],["termials","terminals"],["termianted","terminated"],["termimal","terminal"],["termimals","terminals"],["terminater","terminator"],["terminaters","terminators"],["terminats","terminates"],["termindate","terminate"],["termine","determine"],["termined","terminated"],["terminte","terminate"],["termintor","terminator"],["termniate","terminate"],["termniated","terminated"],["termniates","terminates"],["termniating","terminating"],["termniation","termination"],["termniations","terminations"],["termniator","terminator"],["termniators","terminators"],["termo","thermo"],["termostat","thermostat"],["termperatue","temperature"],["termperatues","temperatures"],["termperature","temperature"],["termperatures","temperatures"],["termplate","template"],["termplated","templated"],["termplates","templates"],["termporal","temporal"],["termporaries","temporaries"],["termporarily","temporarily"],["termporary","temporary"],["ternament","tournament"],["ternimate","terminate"],["terninal","terminal"],["terninals","terminals"],["terrable","terrible"],["terrestial","terrestrial"],["terrform","terraform"],["terrformed","terraformed"],["terrforming","terraforming"],["terrforms","terraforms"],["terriffic","terrific"],["terriories","territories"],["terriory","territory"],["territorist","terrorist"],["territoy","territory"],["terroist","terrorist"],["terurn","return"],["terurns","returns"],["tescase","testcase"],["tescases","testcases"],["tesellate","tessellate"],["tesellated","tessellated"],["tesellation","tessellation"],["tesellator","tessellator"],["tesited","tested"],["tessealte","tessellate"],["tessealted","tessellated"],["tesselatad","tessellated"],["tesselate","tessellate"],["tesselated","tessellated"],["tesselation","tessellation"],["tesselator","tessellator"],["tessleate","tessellate"],["tessleated","tessellated"],["tessleating","tessellating"],["tessleator","tessellator"],["testeing","testing"],["testiclular","testicular"],["testin","testing"],["testng","testing"],["testof","test of"],["testomony","testimony"],["testsing","testing"],["tetrahedran","tetrahedron"],["tetrahedrans","tetrahedrons"],["tetry","retry"],["tetss","tests"],["tetxture","texture"],["teusday","Tuesday"],["texchnically","technically"],["texline","textline"],["textfrme","textframe"],["texual","textual"],["texually","textually"],["texure","texture"],["texured","textured"],["texures","textures"],["texxt","text"],["tey","they"],["tghe","the"],["thansk","thanks"],["thansparent","transparent"],["thant","than"],["thare","there"],["that;s","that's"],["thats'","that's"],["thats","that's"],["thats;","that's"],["thck","thick"],["theard","thread"],["thearding","threading"],["theards","threads"],["theared","threaded"],["theather","theater"],["theef","thief"],["theer","there"],["theery","theory"],["theese","these"],["thefore","therefore"],["theif","thief"],["theifs","thieves"],["theive","thief"],["theives","thieves"],["themplate","template"],["themselces","themselves"],["themselfes","themselves"],["themselfs","themselves"],["themselvs","themselves"],["themslves","themselves"],["thenes","themes"],["thenn","then"],["theorectical","theoretical"],["theoreticall","theoretically"],["theoreticaly","theoretically"],["theorical","theoretical"],["theorically","theoretically"],["theoritical","theoretical"],["theoritically","theoretically"],["therafter","thereafter"],["therapudic","therapeutic"],["therby","thereby"],["thereads","threads"],["thereom","theorem"],["thererin","therein"],["theres","there's"],["thereshold","threshold"],["theresholds","thresholds"],["therfore","therefore"],["thermisor","thermistor"],["thermisors","thermistors"],["thermostast","thermostat"],["thermostasts","thermostats"],["therstat","thermostat"],["therwise","otherwise"],["theshold","threshold"],["thesholds","thresholds"],["thest","test"],["thetraedral","tetrahedral"],["thetrahedron","tetrahedron"],["thev","the"],["theves","thieves"],["thgat","that"],["thge","the"],["thhese","these"],["thhis","this"],["thid","this"],["thier","their"],["thign","thing"],["thigns","things"],["thigny","thingy"],["thigsn","things"],["thikn","think"],["thikness","thickness"],["thiknesses","thicknesses"],["thikns","thinks"],["thiks","thinks"],["thimngs","things"],["thinigs","things"],["thinkabel","thinkable"],["thinn","thin"],["thirtyth","thirtieth"],["this'd","this would"],["thisle","thistle"],["thist","this"],["thisy","this"],["thiunk","think"],["thjese","these"],["thme","them"],["thn","then"],["thna","than"],["thnak","thank"],["thnaks","thanks"],["thne","then"],["thnig","thing"],["thnigs","things"],["thonic","chthonic"],["thoroidal","toroidal"],["thoroughty","thoroughly"],["thoruoghly","thoroughly"],["thoses","those"],["thouch","touch"],["thoughout","throughout"],["thougth","thought"],["thounsands","thousands"],["thourghly","thoroughly"],["thourough","thorough"],["thouroughly","thoroughly"],["thq","the"],["thrad","thread"],["threadsave","threadsafe"],["threashold","threshold"],["threasholds","thresholds"],["threatend","threatened"],["threatment","treatment"],["threatments","treatments"],["threatning","threatening"],["thred","thread"],["threded","threaded"],["thredhold","threshold"],["threding","threading"],["threds","threads"],["three-dimenional","three-dimensional"],["three-dimenionsal","three-dimensional"],["threedimenional","three-dimensional"],["threedimenionsal","three-dimensional"],["threee","three"],["threhold","threshold"],["threrefore","therefore"],["threshhold","threshold"],["threshholds","thresholds"],["threshod","threshold"],["threshods","thresholds"],["threshol","threshold"],["thresold","threshold"],["thresshold","threshold"],["thrid","third"],["throen","thrown"],["throgh","through"],["throrough","thorough"],["throttoling","throttling"],["throug","through"],["througg","through"],["throughly","thoroughly"],["throughtout","throughout"],["througout","throughout"],["througt","through"],["througth","through"],["throuh","through"],["throuhg","through"],["throuhgout","throughout"],["throuhgput","throughput"],["throuth","through"],["throwgh","through"],["thrreshold","threshold"],["thrresholds","thresholds"],["thrue","through"],["thrugh","through"],["thruogh","through"],["thruoghout","throughout"],["thruoghput","throughput"],["thruout","throughout"],["thses","these"],["thsi","this"],["thsnk","thank"],["thsnked","thanked"],["thsnkful","thankful"],["thsnkfully","thankfully"],["thsnkfulness","thankfulness"],["thsnking","thanking"],["thsnks","thanks"],["thsnkyou","thank you"],["thsoe","those"],["thsose","those"],["thsould","should"],["thst","that"],["thta","that"],["thtat","that"],["thumbbnail","thumbnail"],["thumbnal","thumbnail"],["thumbnals","thumbnails"],["thundebird","thunderbird"],["thurday","Thursday"],["thurough","thorough"],["thurrow","thorough"],["thursdey","Thursday"],["thurver","further"],["thyat","that"],["tichened","thickened"],["tichness","thickness"],["tickness","thickness"],["tidibt","tidbit"],["tidibts","tidbits"],["tieing","tying"],["tiemout","timeout"],["tiemstamp","timestamp"],["tiemstamped","timestamped"],["tiemstamps","timestamps"],["tieth","tithe"],["tigger","trigger"],["tiggered","triggered"],["tiggering","triggering"],["tiggers","triggers"],["tighly","tightly"],["tightely","tightly"],["tigth","tight"],["tigthen","tighten"],["tigthened","tightened"],["tigthening","tightening"],["tigthens","tightens"],["tigthly","tightly"],["tihkn","think"],["tihs","this"],["tiitle","title"],["tillt","tilt"],["tillted","tilted"],["tillts","tilts"],["timdelta","timedelta"],["timedlta","timedelta"],["timeing","timing"],["timemout","timeout"],["timeot","timeout"],["timeoutted","timed out"],["timere","timer"],["timesamp","timestamp"],["timesamped","timestamped"],["timesamps","timestamps"],["timeschedule","time schedule"],["timespanp","timespan"],["timespanps","timespans"],["timestan","timespan"],["timestans","timespans"],["timestap","timestamp"],["timestaped","timestamped"],["timestaping","timestamping"],["timestaps","timestamps"],["timestemp","timestamp"],["timestemps","timestamps"],["timestmap","timestamp"],["timestmaps","timestamps"],["timetamp","timestamp"],["timetamps","timestamps"],["timmestamp","timestamp"],["timmestamps","timestamps"],["timne","time"],["timoeut","timeout"],["timout","timeout"],["timtout","timeout"],["timzeone","timezone"],["timzeones","timezones"],["timzezone","timezone"],["timzezones","timezones"],["tinterrupts","interrupts"],["tipically","typically"],["tirangle","triangle"],["tirangles","triangles"],["titel","title"],["titels","titles"],["titile","title"],["tittled","titled"],["tittling","titling"],["tje","the"],["tjhe","the"],["tjpanishad","upanishad"],["tkae","take"],["tkaes","takes"],["tkaing","taking"],["tlaking","talking"],["tmis","this"],["tne","the"],["toally","totally"],["tobbaco","tobacco"],["tobot","robot"],["toches","touches"],["tocksen","toxin"],["todya","today"],["toekn","token"],["togehter","together"],["togeter","together"],["togeterness","togetherness"],["toggel","toggle"],["toggeles","toggles"],["toggeling","toggling"],["toggels","toggles"],["toggleing","toggling"],["togheter","together"],["toghether","together"],["togle","toggle"],["togled","toggled"],["togling","toggling"],["toglle","toggle"],["toglled","toggled"],["togther","together"],["tolarable","tolerable"],["tolelerance","tolerance"],["tolen","token"],["tolens","tokens"],["toleranz","tolerance"],["tolerence","tolerance"],["tolerences","tolerances"],["tolerent","tolerant"],["tolernce","tolerance"],["Tolkein","Tolkien"],["tollerable","tolerable"],["tollerance","tolerance"],["tollerances","tolerances"],["tolorance","tolerance"],["tolorances","tolerances"],["tolorant","tolerant"],["tomatoe","tomato"],["tomatos","tomatoes"],["tommorow","tomorrow"],["tommorrow","tomorrow"],["tomorrrow","tomorrow"],["tongiht","tonight"],["tonihgt","tonight"],["tood","todo"],["toogle","toggle"],["toogling","toggling"],["tookits","toolkits"],["toolar","toolbar"],["toolsbox","toolbox"],["toom","tomb"],["toos","tools"],["tootonic","teutonic"],["topicaizer","topicalizer"],["topologie","topology"],["torerable","tolerable"],["toriodal","toroidal"],["tork","torque"],["tormenters","tormentors"],["tornadoe","tornado"],["torpeados","torpedoes"],["torpedos","torpedoes"],["tortilini","tortellini"],["tortise","tortoise"],["torward","toward"],["torwards","towards"],["totaly","totally"],["totat","total"],["totation","rotation"],["totats","totals"],["tothe","to the"],["tothiba","toshiba"],["totol","total"],["totorial","tutorial"],["totorials","tutorials"],["touble","trouble"],["toubles","troubles"],["toubling","troubling"],["toughtful","thoughtful"],["toughtly","tightly"],["toughts","thoughts"],["tounge","tongue"],["touple","tuple"],["towords","towards"],["towrad","toward"],["toxen","toxin"],["tpye","type"],["tpyed","typed"],["tpyes","types"],["tpyo","typo"],["trabsform","transform"],["traceablity","traceability"],["trackign","tracking"],["trackling","tracking"],["tracsode","transcode"],["tracsoded","transcoded"],["tracsoder","transcoder"],["tracsoders","transcoders"],["tracsodes","transcodes"],["tracsoding","transcoding"],["traddition","tradition"],["tradditional","traditional"],["tradditions","traditions"],["tradgic","tragic"],["tradionally","traditionally"],["traditilnal","traditional"],["traditiona","traditional"],["traditionaly","traditionally"],["traditionnal","traditional"],["traditionnally","traditionally"],["traditition","tradition"],["tradtional","traditional"],["tradtionally","traditionally"],["trafficed","trafficked"],["trafficing","trafficking"],["trafic","traffic"],["tragectory","trajectory"],["traget","target"],["trageted","targeted"],["trageting","targeting"],["tragets","targets"],["traige","triage"],["traiger","triager"],["traigers","triagers"],["traiges","triages"],["traiging","triaging"],["trailins","trailing"],["traingle","triangle"],["traingles","triangles"],["traingular","triangular"],["traingulate","triangulate"],["traingulated","triangulated"],["traingulates","triangulates"],["traingulating","triangulating"],["traingulation","triangulation"],["traingulations","triangulations"],["trainig","training"],["trainigs","training"],["trainng","training"],["trainngs","training"],["traked","tracked"],["traker","tracker"],["trakers","trackers"],["traking","tracking"],["tramsmit","transmit"],["tramsmits","transmits"],["tramsmitted","transmitted"],["tramsmitting","transmitting"],["tranaction","transaction"],["tranactional","transactional"],["tranactions","transactions"],["tranalating","translating"],["tranalation","translation"],["tranalations","translations"],["tranasction","transaction"],["tranasctions","transactions"],["tranceiver","transceiver"],["tranceivers","transceivers"],["trancendent","transcendent"],["trancending","transcending"],["tranclate","translate"],["trandional","traditional"],["tranfer","transfer"],["tranfered","transferred"],["tranfering","transferring"],["tranferred","transferred"],["tranfers","transfers"],["tranform","transform"],["tranformable","transformable"],["tranformation","transformation"],["tranformations","transformations"],["tranformative","transformative"],["tranformed","transformed"],["tranforming","transforming"],["tranforms","transforms"],["tranient","transient"],["tranients","transients"],["tranistion","transition"],["tranistioned","transitioned"],["tranistioning","transitioning"],["tranistions","transitions"],["tranition","transition"],["tranitioned","transitioned"],["tranitioning","transitioning"],["tranitions","transitions"],["tranlatable","translatable"],["tranlate","translate"],["tranlated","translated"],["tranlates","translates"],["tranlating","translating"],["tranlation","translation"],["tranlations","translations"],["tranlsation","translation"],["tranlsations","translations"],["tranmission","transmission"],["tranmist","transmit"],["tranmitted","transmitted"],["tranmitting","transmitting"],["tranparent","transparent"],["tranparently","transparently"],["tranport","transport"],["tranported","transported"],["tranporting","transporting"],["tranports","transports"],["transacion","transaction"],["transacions","transactions"],["transaciton","transaction"],["transacitons","transactions"],["transacrtion","transaction"],["transacrtions","transactions"],["transaction-spacific","transaction-specific"],["transactoin","transaction"],["transactoins","transactions"],["transalation","translation"],["transalations","translations"],["transalt","translate"],["transalte","translate"],["transalted","translated"],["transaltes","translates"],["transaltion","translation"],["transaltions","translations"],["transaltor","translator"],["transaltors","translators"],["transcendance","transcendence"],["transcendant","transcendent"],["transcendentational","transcendental"],["transcevier","transceiver"],["transciever","transceiver"],["transcievers","transceivers"],["transcocde","transcode"],["transcocded","transcoded"],["transcocder","transcoder"],["transcocders","transcoders"],["transcocdes","transcodes"],["transcocding","transcoding"],["transcocdings","transcodings"],["transconde","transcode"],["transconded","transcoded"],["transconder","transcoder"],["transconders","transcoders"],["transcondes","transcodes"],["transconding","transcoding"],["transcondings","transcodings"],["transcorde","transcode"],["transcorded","transcoded"],["transcorder","transcoder"],["transcorders","transcoders"],["transcordes","transcodes"],["transcording","transcoding"],["transcordings","transcodings"],["transcoser","transcoder"],["transcosers","transcoders"],["transction","transaction"],["transctions","transactions"],["transeint","transient"],["transending","transcending"],["transer","transfer"],["transesxuals","transsexuals"],["transferd","transferred"],["transfered","transferred"],["transfering","transferring"],["transferrd","transferred"],["transfom","transform"],["transfomation","transformation"],["transfomational","transformational"],["transfomations","transformations"],["transfomed","transformed"],["transfomer","transformer"],["transfomm","transform"],["transfoprmation","transformation"],["transforation","transformation"],["transforations","transformations"],["transformated","transformed"],["transformates","transforms"],["transformaton","transformation"],["transformatted","transformed"],["transfrom","transform"],["transfromation","transformation"],["transfromations","transformations"],["transfromed","transformed"],["transfromer","transformer"],["transfroming","transforming"],["transfroms","transforms"],["transiet","transient"],["transiets","transients"],["transision","transition"],["transisioning","transitioning"],["transisions","transitions"],["transisition","transition"],["transisitioned","transitioned"],["transisitioning","transitioning"],["transisitions","transitions"],["transistion","transition"],["transistioning","transitioning"],["transistions","transitions"],["transitionnal","transitional"],["transitionned","transitioned"],["transitionning","transitioning"],["transitionns","transitions"],["transiton","transition"],["transitoning","transitioning"],["transitons","transitions"],["transitor","transistor"],["transitors","transistors"],["translater","translator"],["translaters","translators"],["translatied","translated"],["translatoin","translation"],["translatoins","translations"],["translteration","transliteration"],["transmision","transmission"],["transmisive","transmissive"],["transmissable","transmissible"],["transmissione","transmission"],["transmist","transmit"],["transmited","transmitted"],["transmiter","transmitter"],["transmiters","transmitters"],["transmiting","transmitting"],["transmition","transmission"],["transmitsion","transmission"],["transmittd","transmitted"],["transmittion","transmission"],["transmitts","transmits"],["transmmit","transmit"],["transocde","transcode"],["transocded","transcoded"],["transocder","transcoder"],["transocders","transcoders"],["transocdes","transcodes"],["transocding","transcoding"],["transocdings","transcodings"],["transofrm","transform"],["transofrmation","transformation"],["transofrmations","transformations"],["transofrmed","transformed"],["transofrmer","transformer"],["transofrmers","transformers"],["transofrming","transforming"],["transofrms","transforms"],["transolate","translate"],["transolated","translated"],["transolates","translates"],["transolating","translating"],["transolation","translation"],["transolations","translations"],["transorm","transform"],["transormed","transformed"],["transorming","transforming"],["transorms","transforms"],["transpable","transposable"],["transpacencies","transparencies"],["transpacency","transparency"],["transpaernt","transparent"],["transpaerntly","transparently"],["transpancies","transparencies"],["transpancy","transparency"],["transpant","transplant"],["transparaent","transparent"],["transparaently","transparently"],["transparanceies","transparencies"],["transparancey","transparency"],["transparancies","transparencies"],["transparancy","transparency"],["transparanet","transparent"],["transparanetly","transparently"],["transparanies","transparencies"],["transparant","transparent"],["transparantly","transparently"],["transparany","transparency"],["transpararent","transparent"],["transpararently","transparently"],["transparcencies","transparencies"],["transparcency","transparency"],["transparcenies","transparencies"],["transparceny","transparency"],["transparecy","transparency"],["transpareny","transparency"],["transparities","transparencies"],["transparity","transparency"],["transparnecies","transparencies"],["transparnecy","transparency"],["transparnt","transparent"],["transparntly","transparently"],["transparren","transparent"],["transparrenly","transparently"],["transparrent","transparent"],["transparrently","transparently"],["transpart","transport"],["transparts","transports"],["transpatrent","transparent"],["transpatrently","transparently"],["transpencies","transparencies"],["transpency","transparency"],["transpeorted","transported"],["transperancies","transparencies"],["transperancy","transparency"],["transperant","transparent"],["transperantly","transparently"],["transperencies","transparencies"],["transperency","transparency"],["transperent","transparent"],["transperently","transparently"],["transporation","transportation"],["transportatin","transportation"],["transprencies","transparencies"],["transprency","transparency"],["transprent","transparent"],["transprently","transparently"],["transprot","transport"],["transproted","transported"],["transproting","transporting"],["transprots","transports"],["transprt","transport"],["transprted","transported"],["transprting","transporting"],["transprts","transports"],["transpsition","transposition"],["transsend","transcend"],["transtion","transition"],["transtioned","transitioned"],["transtioning","transitioning"],["transtions","transitions"],["transtition","transition"],["transtitioned","transitioned"],["transtitioning","transitioning"],["transtitions","transitions"],["transtorm","transform"],["transtormed","transformed"],["transvorm","transform"],["transvormation","transformation"],["transvormed","transformed"],["transvorming","transforming"],["transvorms","transforms"],["tranversing","traversing"],["trapeziod","trapezoid"],["trapeziodal","trapezoidal"],["trasaction","transaction"],["trascation","transaction"],["trasfer","transfer"],["trasferred","transferred"],["trasfers","transfers"],["trasform","transform"],["trasformable","transformable"],["trasformation","transformation"],["trasformations","transformations"],["trasformative","transformative"],["trasformed","transformed"],["trasformer","transformer"],["trasformers","transformers"],["trasforming","transforming"],["trasforms","transforms"],["traslalate","translate"],["traslalated","translated"],["traslalating","translating"],["traslalation","translation"],["traslalations","translations"],["traslate","translate"],["traslated","translated"],["traslates","translates"],["traslating","translating"],["traslation","translation"],["traslations","translations"],["traslucency","translucency"],["trasmission","transmission"],["trasmit","transmit"],["trasnaction","transaction"],["trasnfer","transfer"],["trasnfered","transferred"],["trasnferred","transferred"],["trasnfers","transfers"],["trasnform","transform"],["trasnformation","transformation"],["trasnformed","transformed"],["trasnformer","transformer"],["trasnformers","transformers"],["trasnforms","transforms"],["trasnlate","translate"],["trasnlated","translated"],["trasnlation","translation"],["trasnlations","translations"],["trasnparencies","transparencies"],["trasnparency","transparency"],["trasnparent","transparent"],["trasnport","transport"],["trasnports","transports"],["trasnsmit","transmit"],["trasparency","transparency"],["trasparent","transparent"],["trasparently","transparently"],["trasport","transport"],["trasportable","transportable"],["trasported","transported"],["trasporter","transporter"],["trasports","transports"],["traspose","transpose"],["trasposed","transposed"],["trasposing","transposing"],["trasposition","transposition"],["traspositions","transpositions"],["traved","traversed"],["traveersal","traversal"],["traveerse","traverse"],["traveersed","traversed"],["traveerses","traverses"],["traveersing","traversing"],["traveral","traversal"],["travercal","traversal"],["traverce","traverse"],["traverced","traversed"],["traverces","traverses"],["travercing","traversing"],["travere","traverse"],["travered","traversed"],["traveres","traverse"],["traveresal","traversal"],["traveresed","traversed"],["travereses","traverses"],["traveresing","traversing"],["travering","traversing"],["traverssal","traversal"],["travesal","traversal"],["travese","traverse"],["travesed","traversed"],["traveses","traverses"],["travesing","traversing"],["tre","tree"],["treate","treat"],["treatement","treatment"],["treatements","treatments"],["treates","treats"],["tremelo","tremolo"],["tremelos","tremolos"],["trempoline","trampoline"],["treshhold","threshold"],["treshold","threshold"],["tressle","trestle"],["treting","treating"],["trgistration","registration"],["trhe","the"],["triancle","triangle"],["triancles","triangles"],["trianed","trained"],["triange","triangle"],["triangel","triangle"],["triangels","triangles"],["trianglular","triangular"],["trianglutaion","triangulation"],["triangulataion","triangulation"],["triangultaion","triangulation"],["trianing","training"],["trianlge","triangle"],["trianlges","triangles"],["trians","trains"],["trigered","triggered"],["trigerred","triggered"],["trigerring","triggering"],["trigers","triggers"],["trigged","triggered"],["triggerd","triggered"],["triggeres","triggers"],["triggerred","triggered"],["triggerring","triggering"],["triggerrs","triggers"],["triggger","trigger"],["trignometric","trigonometric"],["trignometry","trigonometry"],["triguered","triggered"],["triked","tricked"],["trikery","trickery"],["triky","tricky"],["trilineal","trilinear"],["trimed","trimmed"],["trimmng","trimming"],["trinagle","triangle"],["trinagles","triangles"],["triniy","trinity"],["triology","trilogy"],["tripel","triple"],["tripeld","tripled"],["tripels","triples"],["tripple","triple"],["triuangulate","triangulate"],["trival","trivial"],["trivally","trivially"],["trivias","trivia"],["trivival","trivial"],["trnasfers","transfers"],["trnasmit","transmit"],["trnasmited","transmitted"],["trnasmits","transmits"],["trnsfer","transfer"],["trnsfered","transferred"],["trnsfers","transfers"],["troling","trolling"],["trottle","throttle"],["troubeshoot","troubleshoot"],["troubeshooted","troubleshooted"],["troubeshooter","troubleshooter"],["troubeshooting","troubleshooting"],["troubeshoots","troubleshoots"],["troublehshoot","troubleshoot"],["troublehshooting","troubleshooting"],["troublshoot","troubleshoot"],["troublshooting","troubleshooting"],["trought","through"],["troup","troupe"],["trriger","trigger"],["trrigered","triggered"],["trrigering","triggering"],["trrigers","triggers"],["trrigger","trigger"],["trriggered","triggered"],["trriggering","triggering"],["trriggers","triggers"],["trubble","trouble"],["trubbled","troubled"],["trubbles","troubles"],["truble","trouble"],["trubled","troubled"],["trubles","troubles"],["trubling","troubling"],["trucate","truncate"],["trucated","truncated"],["trucates","truncates"],["trucating","truncating"],["trucnate","truncate"],["trucnated","truncated"],["trucnating","truncating"],["truct","struct"],["truelly","truly"],["truely","truly"],["truied","tried"],["trully","truly"],["trun","turn"],["trunacted","truncated"],["truncat","truncate"],["trunctate","truncate"],["trunctated","truncated"],["trunctating","truncating"],["trunctation","truncation"],["truncted","truncated"],["truned","turned"],["truns","turns"],["trustworthly","trustworthy"],["trustworthyness","trustworthiness"],["trustworty","trustworthy"],["trustwortyness","trustworthiness"],["trustwothy","trustworthy"],["truw","true"],["tryed","tried"],["tryes","tries"],["tryig","trying"],["tryinng","trying"],["trys","tries"],["tryying","trying"],["ttests","tests"],["tthe","the"],["tuesdey","Tuesday"],["tuesdsy","Tuesday"],["tufure","future"],["tuhmbnail","thumbnail"],["tunelled","tunnelled"],["tunelling","tunneling"],["tunned","tuned"],["tunnell","tunnel"],["tuotiral","tutorial"],["tuotirals","tutorials"],["tupel","tuple"],["tupple","tuple"],["tupples","tuples"],["ture","true"],["turle","turtle"],["turly","truly"],["turorial","tutorial"],["turorials","tutorials"],["turtleh","turtle"],["turtlehs","turtles"],["turtorial","tutorial"],["turtorials","tutorials"],["Tuscon","Tucson"],["tusday","Tuesday"],["tuseday","Tuesday"],["tust","trust"],["tution","tuition"],["tutoriel","tutorial"],["tutoriels","tutorials"],["tweleve","twelve"],["twelth","twelfth"],["two-dimenional","two-dimensional"],["two-dimenionsal","two-dimensional"],["twodimenional","two-dimensional"],["twodimenionsal","two-dimensional"],["twon","town"],["twpo","two"],["tyep","type"],["tyhat","that"],["tyies","tries"],["tymecode","timecode"],["tyope","type"],["typcast","typecast"],["typcasting","typecasting"],["typcasts","typecasts"],["typcial","typical"],["typcially","typically"],["typechek","typecheck"],["typecheking","typechecking"],["typesrript","typescript"],["typicallly","typically"],["typicaly","typically"],["typicially","typically"],["typle","tuple"],["typles","tuples"],["typographc","typographic"],["typpe","type"],["typped","typed"],["typpes","types"],["typpical","typical"],["typpically","typically"],["tyranies","tyrannies"],["tyrany","tyranny"],["tyring","trying"],["tyrranies","tyrannies"],["tyrrany","tyranny"],["ubelieveble","unbelievable"],["ubelievebly","unbelievably"],["ubernetes","Kubernetes"],["ubiquitious","ubiquitous"],["ubiquituously","ubiquitously"],["ubitquitous","ubiquitous"],["ublisher","publisher"],["ubunut","Ubuntu"],["ubutu","Ubuntu"],["ubutunu","Ubuntu"],["udpatable","updatable"],["udpate","update"],["udpated","updated"],["udpater","updater"],["udpates","updates"],["udpating","updating"],["ueful","useful"],["uegister","unregister"],["uesd","used"],["ueses","uses"],["uesful","useful"],["uesfull","useful"],["uesfulness","usefulness"],["uesless","useless"],["ueslessness","uselessness"],["uest","quest"],["uests","quests"],["uffer","buffer"],["uffered","buffered"],["uffering","buffering"],["uffers","buffers"],["uggly","ugly"],["ugglyness","ugliness"],["uglyness","ugliness"],["uique","unique"],["uise","use"],["uisng","using"],["uites","suites"],["uknown","unknown"],["uknowns","unknowns"],["Ukranian","Ukrainian"],["uless","unless"],["ulimited","unlimited"],["ulter","alter"],["ulteration","alteration"],["ulterations","alterations"],["ultered","altered"],["ultering","altering"],["ulters","alters"],["ultimatly","ultimately"],["ultimely","ultimately"],["umambiguous","unambiguous"],["umark","unmark"],["umarked","unmarked"],["umbrealla","umbrella"],["uminportant","unimportant"],["umit","unit"],["umless","unless"],["ummark","unmark"],["umoutn","umount"],["un-complete","incomplete"],["unabailable","unavailable"],["unabale","unable"],["unabel","unable"],["unablet","unable"],["unacceptible","unacceptable"],["unaccesible","inaccessible"],["unaccessable","inaccessible"],["unacknowleged","unacknowledged"],["unacompanied","unaccompanied"],["unadvertantly","inadvertently"],["unadvertedly","inadvertently"],["unadvertent","inadvertent"],["unadvertently","inadvertently"],["unahppy","unhappy"],["unalllowed","unallowed"],["unambigious","unambiguous"],["unambigous","unambiguous"],["unambigously","unambiguously"],["unamed","unnamed"],["unanimuous","unanimous"],["unanymous","unanimous"],["unappretiated","unappreciated"],["unappretiative","unappreciative"],["unapprieciated","unappreciated"],["unapprieciative","unappreciative"],["unapretiated","unappreciated"],["unapretiative","unappreciative"],["unaquired","unacquired"],["unarchving","unarchiving"],["unassing","unassign"],["unassinged","unassigned"],["unassinging","unassigning"],["unassings","unassigns"],["unathenticated","unauthenticated"],["unathorised","unauthorised"],["unathorized","unauthorized"],["unatteded","unattended"],["unauthenicated","unauthenticated"],["unauthenticed","unauthenticated"],["unavaiable","unavailable"],["unavaialable","unavailable"],["unavaialbale","unavailable"],["unavaialbe","unavailable"],["unavaialbel","unavailable"],["unavaialbility","unavailability"],["unavaialble","unavailable"],["unavaible","unavailable"],["unavailabel","unavailable"],["unavailiability","unavailability"],["unavailible","unavailable"],["unavaliable","unavailable"],["unavaoidable","unavoidable"],["unavilable","unavailable"],["unballance","unbalance"],["unbeknowst","unbeknownst"],["unbeleifable","unbelievable"],["unbeleivable","unbelievable"],["unbeliefable","unbelievable"],["unbelivable","unbelievable"],["unbeliveable","unbelievable"],["unbeliveably","unbelievably"],["unbelivebly","unbelievably"],["unborned","unborn"],["unbouind","unbound"],["unbouinded","unbounded"],["unboun","unbound"],["unbounad","unbound"],["unbounaded","unbounded"],["unbouned","unbounded"],["unbounnd","unbound"],["unbounnded","unbounded"],["unbouund","unbound"],["unbouunded","unbounded"],["uncahnged","unchanged"],["uncalcualted","uncalculated"],["unce","once"],["uncehck","uncheck"],["uncehcked","unchecked"],["uncerain","uncertain"],["uncerainties","uncertainties"],["uncerainty","uncertainty"],["uncertaincy","uncertainty"],["uncertainities","uncertainties"],["uncertainity","uncertainty"],["uncessarily","unnecessarily"],["uncetain","uncertain"],["uncetainties","uncertainties"],["uncetainty","uncertainty"],["unchache","uncache"],["unchached","uncached"],["unchaged","unchanged"],["unchainged","unchanged"],["unchallengable","unchallengeable"],["unchaned","unchanged"],["unchaneged","unchanged"],["unchangable","unchangeable"],["uncheked","unchecked"],["unchenged","unchanged"],["uncognized","unrecognized"],["uncoment","uncomment"],["uncomented","uncommented"],["uncomenting","uncommenting"],["uncoments","uncomments"],["uncomitted","uncommitted"],["uncommited","uncommitted"],["uncommment","uncomment"],["uncommmented","uncommented"],["uncommmenting","uncommenting"],["uncommments","uncomments"],["uncommmitted","uncommitted"],["uncommmon","uncommon"],["uncommpresed","uncompressed"],["uncommpresion","uncompression"],["uncommpressd","uncompressed"],["uncommpressed","uncompressed"],["uncommpression","uncompression"],["uncommtited","uncommitted"],["uncomon","uncommon"],["uncompetetive","uncompetitive"],["uncompetive","uncompetitive"],["uncomplete","incomplete"],["uncompleteness","incompleteness"],["uncompletness","incompleteness"],["uncompres","uncompress"],["uncompresed","uncompressed"],["uncompreses","uncompresses"],["uncompresing","uncompressing"],["uncompresor","uncompressor"],["uncompresors","uncompressors"],["uncompressible","incompressible"],["uncomprss","uncompress"],["unconcious","unconscious"],["unconciousness","unconsciousness"],["unconcistencies","inconsistencies"],["unconcistency","inconsistency"],["unconcistent","inconsistent"],["uncondisional","unconditional"],["uncondisionaly","unconditionally"],["uncondisionnal","unconditional"],["uncondisionnaly","unconditionally"],["unconditial","unconditional"],["unconditially","unconditionally"],["unconditialy","unconditionally"],["unconditianal","unconditional"],["unconditianally","unconditionally"],["unconditianaly","unconditionally"],["unconditinally","unconditionally"],["unconditinaly","unconditionally"],["unconditionaly","unconditionally"],["unconditionnal","unconditional"],["unconditionnally","unconditionally"],["unconditionnaly","unconditionally"],["uncondtional","unconditional"],["uncondtionally","unconditionally"],["unconfiged","unconfigured"],["unconfortability","discomfort"],["unconsisntency","inconsistency"],["unconsistent","inconsistent"],["uncontitutional","unconstitutional"],["uncontrained","unconstrained"],["uncontrolable","uncontrollable"],["unconvential","unconventional"],["unconventionnal","unconventional"],["uncorectly","incorrectly"],["uncorelated","uncorrelated"],["uncorrect","incorrect"],["uncorrectly","incorrectly"],["uncorrolated","uncorrelated"],["uncoverted","unconverted"],["uncrypted","unencrypted"],["undecideable","undecidable"],["undefied","undefined"],["undefien","undefine"],["undefiend","undefined"],["undefinied","undefined"],["undeflow","underflow"],["undeflows","underflows"],["undefuned","undefined"],["undelying","underlying"],["underfiend","undefined"],["underfined","undefined"],["underfow","underflow"],["underfowed","underflowed"],["underfowing","underflowing"],["underfows","underflows"],["underlayed","underlaid"],["underlaying","underlying"],["underlflow","underflow"],["underlflowed","underflowed"],["underlflowing","underflowing"],["underlflows","underflows"],["underlfow","underflow"],["underlfowed","underflowed"],["underlfowing","underflowing"],["underlfows","underflows"],["underlow","underflow"],["underlowed","underflowed"],["underlowing","underflowing"],["underlows","underflows"],["underlyng","underlying"],["underneeth","underneath"],["underrrun","underrun"],["undersacn","underscan"],["understadn","understand"],["understadnable","understandable"],["understadning","understanding"],["understadns","understands"],["understoon","understood"],["understoud","understood"],["undertand","understand"],["undertandable","understandable"],["undertanded","understood"],["undertanding","understanding"],["undertands","understands"],["undertsand","understand"],["undertsanding","understanding"],["undertsands","understands"],["undertsood","understood"],["undertstand","understand"],["undertstands","understands"],["underun","underrun"],["underuns","underruns"],["underware","underwear"],["underying","underlying"],["underyling","underlying"],["undescore","underscore"],["undescored","underscored"],["undescores","underscores"],["undesireable","undesirable"],["undesitable","undesirable"],["undestand","understand"],["undestood","understood"],["undet","under"],["undetecable","undetectable"],["undetstand","understand"],["undetware","underwear"],["undetwater","underwater"],["undfine","undefine"],["undfined","undefined"],["undfines","undefines"],["undistinghable","indistinguishable"],["undocummented","undocumented"],["undorder","unorder"],["undordered","unordered"],["undoubtely","undoubtedly"],["undreground","underground"],["undupplicated","unduplicated"],["uneccesary","unnecessary"],["uneccessarily","unnecessarily"],["uneccessary","unnecessary"],["unecessarily","unnecessarily"],["unecessary","unnecessary"],["uneforceable","unenforceable"],["uneform","uniform"],["unencrpt","unencrypt"],["unencrpted","unencrypted"],["unenforcable","unenforceable"],["unepected","unexpected"],["unepectedly","unexpectedly"],["unequalities","inequalities"],["unequality","inequality"],["uner","under"],["unesacpe","unescape"],["unesacped","unescaped"],["unessecarry","unnecessary"],["unessecary","unnecessary"],["unevaluted","unevaluated"],["unexcected","unexpected"],["unexcectedly","unexpectedly"],["unexcpected","unexpected"],["unexcpectedly","unexpectedly"],["unexecpted","unexpected"],["unexecptedly","unexpectedly"],["unexected","unexpected"],["unexectedly","unexpectedly"],["unexepcted","unexpected"],["unexepctedly","unexpectedly"],["unexepected","unexpected"],["unexepectedly","unexpectedly"],["unexpacted","unexpected"],["unexpactedly","unexpectedly"],["unexpcted","unexpected"],["unexpctedly","unexpectedly"],["unexpecetd","unexpected"],["unexpecetdly","unexpectedly"],["unexpect","unexpected"],["unexpectd","unexpected"],["unexpectdly","unexpectedly"],["unexpecte","unexpected"],["unexpectely","unexpectedly"],["unexpectend","unexpected"],["unexpectendly","unexpectedly"],["unexpectly","unexpectedly"],["unexpeected","unexpected"],["unexpeectedly","unexpectedly"],["unexpepected","unexpected"],["unexpepectedly","unexpectedly"],["unexpepted","unexpected"],["unexpeptedly","unexpectedly"],["unexpercted","unexpected"],["unexperctedly","unexpectedly"],["unexpested","unexpected"],["unexpestedly","unexpectedly"],["unexpetced","unexpected"],["unexpetcedly","unexpectedly"],["unexpetct","unexpected"],["unexpetcted","unexpected"],["unexpetctedly","unexpectedly"],["unexpetctly","unexpectedly"],["unexpetect","unexpected"],["unexpetected","unexpected"],["unexpetectedly","unexpectedly"],["unexpetectly","unexpectedly"],["unexpeted","unexpected"],["unexpetedly","unexpectedly"],["unexpexcted","unexpected"],["unexpexctedly","unexpectedly"],["unexpexted","unexpected"],["unexpextedly","unexpectedly"],["unexspected","unexpected"],["unexspectedly","unexpectedly"],["unfilp","unflip"],["unfilpped","unflipped"],["unfilpping","unflipping"],["unfilps","unflips"],["unflaged","unflagged"],["unflexible","inflexible"],["unforetunately","unfortunately"],["unforgetable","unforgettable"],["unforgiveable","unforgivable"],["unformated","unformatted"],["unforseen","unforeseen"],["unforttunately","unfortunately"],["unfortuante","unfortunate"],["unfortuantely","unfortunately"],["unfortunaltely","unfortunately"],["unfortunaly","unfortunately"],["unfortunat","unfortunate"],["unfortunatelly","unfortunately"],["unfortunatetly","unfortunately"],["unfortunatley","unfortunately"],["unfortunatly","unfortunately"],["unfortunetly","unfortunately"],["unfortuntaly","unfortunately"],["unforunate","unfortunate"],["unforunately","unfortunately"],["unforutunate","unfortunate"],["unforutunately","unfortunately"],["unfotunately","unfortunately"],["unfourtunately","unfortunately"],["unfourtunetly","unfortunately"],["unfurtunately","unfortunately"],["ungeneralizeable","ungeneralizable"],["ungly","ugly"],["unhandeled","unhandled"],["unhilight","unhighlight"],["unhilighted","unhighlighted"],["unhilights","unhighlights"],["Unicde","Unicode"],["unich","unix"],["unidentifiedly","unidentified"],["unidimensionnal","unidimensional"],["unifform","uniform"],["unifforms","uniforms"],["unifiy","unify"],["uniformely","uniformly"],["unifrom","uniform"],["unifromed","uniformed"],["unifromity","uniformity"],["unifroms","uniforms"],["unigned","unsigned"],["unihabited","uninhabited"],["unilateraly","unilaterally"],["unilatreal","unilateral"],["unilatreally","unilaterally"],["unimpemented","unimplemented"],["unimplemeneted","unimplemented"],["unimplimented","unimplemented"],["uninitailised","uninitialised"],["uninitailized","uninitialized"],["uninitalise","uninitialise"],["uninitalised","uninitialised"],["uninitalises","uninitialises"],["uninitalize","uninitialize"],["uninitalized","uninitialized"],["uninitalizes","uninitializes"],["uniniteresting","uninteresting"],["uninitializaed","uninitialized"],["uninitialse","uninitialise"],["uninitialsed","uninitialised"],["uninitialses","uninitialises"],["uninitialze","uninitialize"],["uninitialzed","uninitialized"],["uninitialzes","uninitializes"],["uninstalable","uninstallable"],["uninstatiated","uninstantiated"],["uninstlal","uninstall"],["uninstlalation","uninstallation"],["uninstlalations","uninstallations"],["uninstlaled","uninstalled"],["uninstlaler","uninstaller"],["uninstlaling","uninstalling"],["uninstlals","uninstalls"],["unint8_t","uint8_t"],["unintelligable","unintelligible"],["unintentially","unintentionally"],["uninteressting","uninteresting"],["uninterpretted","uninterpreted"],["uninterruped","uninterrupted"],["uninterruptable","uninterruptible"],["unintersting","uninteresting"],["uninteruppted","uninterrupted"],["uninterupted","uninterrupted"],["unintesting","uninteresting"],["unintialised","uninitialised"],["unintialized","uninitialized"],["unintiallised","uninitialised"],["unintiallized","uninitialized"],["unintialsied","uninitialised"],["unintialzied","uninitialized"],["unio","union"],["unios","unions"],["uniqe","unique"],["uniqu","unique"],["uniquness","uniqueness"],["unistalled","uninstalled"],["uniterrupted","uninterrupted"],["UnitesStates","UnitedStates"],["unitialize","uninitialize"],["unitialized","uninitialized"],["unitilised","uninitialised"],["unitilising","uninitialising"],["unitilities","utilities"],["unitility","utility"],["unitilized","uninitialized"],["unitilizing","uninitializing"],["unitilties","utilities"],["unitilty","utility"],["unititialized","uninitialized"],["unitl","until"],["unitled","untitled"],["unitss","units"],["univeral","universal"],["univerally","universally"],["univeriality","universality"],["univeristies","universities"],["univeristy","university"],["univerities","universities"],["univerity","university"],["universial","universal"],["universiality","universality"],["universirty","university"],["universtal","universal"],["universtiy","university"],["univesities","universities"],["univesity","university"],["univiersal","universal"],["univrsal","universal"],["unkmown","unknown"],["unknon","unknown"],["unknonw","unknown"],["unknonwn","unknown"],["unknonws","unknowns"],["unknwn","unknown"],["unknwns","unknowns"],["unknwoing","unknowing"],["unknwoingly","unknowingly"],["unknwon","unknown"],["unknwons","unknowns"],["unknwown","unknown"],["unknwowns","unknowns"],["unkonwn","unknown"],["unkonwns","unknowns"],["unkown","unknown"],["unkowns","unknowns"],["unkwown","unknown"],["unlcear","unclear"],["unles","unless"],["unlikey","unlikely"],["unlikley","unlikely"],["unlimeted","unlimited"],["unlimitied","unlimited"],["unlimted","unlimited"],["unline","unlike"],["unloadins","unloading"],["unmached","unmatched"],["unmainted","unmaintained"],["unmaping","unmapping"],["unmappend","unmapped"],["unmarsalling","unmarshalling"],["unmaximice","unmaximize"],["unmistakeably","unmistakably"],["unmodfide","unmodified"],["unmodfided","unmodified"],["unmodfied","unmodified"],["unmodfieid","unmodified"],["unmodfified","unmodified"],["unmodfitied","unmodified"],["unmodifable","unmodifiable"],["unmodifed","unmodified"],["unmoutned","unmounted"],["unnacquired","unacquired"],["unncessary","unnecessary"],["unneccecarily","unnecessarily"],["unneccecary","unnecessary"],["unneccesarily","unnecessarily"],["unneccesary","unnecessary"],["unneccessarily","unnecessarily"],["unneccessary","unnecessary"],["unneceesarily","unnecessarily"],["unnecesarily","unnecessarily"],["unnecesarrily","unnecessarily"],["unnecesarry","unnecessary"],["unnecesary","unnecessary"],["unnecesasry","unnecessary"],["unnecessar","unnecessary"],["unnecessarilly","unnecessarily"],["unnecesserily","unnecessarily"],["unnecessery","unnecessary"],["unnecessiarlly","unnecessarily"],["unnecssary","unnecessary"],["unnedded","unneeded"],["unneded","unneeded"],["unneedingly","unnecessarily"],["unnescessarily","unnecessarily"],["unnescessary","unnecessary"],["unnesesarily","unnecessarily"],["unnessarily","unnecessarily"],["unnessasary","unnecessary"],["unnessecarily","unnecessarily"],["unnessecarry","unnecessary"],["unnessecary","unnecessary"],["unnessesarily","unnecessarily"],["unnessesary","unnecessary"],["unnessessarily","unnecessarily"],["unnessessary","unnecessary"],["unning","running"],["unnnecessary","unnecessary"],["unnown","unknown"],["unnowns","unknowns"],["unnsupported","unsupported"],["unnused","unused"],["unobstrusive","unobtrusive"],["unocde","Unicode"],["unoffical","unofficial"],["unoin","union"],["unompress","uncompress"],["unoperational","nonoperational"],["unorderd","unordered"],["unoredered","unordered"],["unorotated","unrotated"],["unoticeable","unnoticeable"],["unpacke","unpacked"],["unpacket","unpacked"],["unparseable","unparsable"],["unpertubated","unperturbed"],["unperturb","unperturbed"],["unperturbated","unperturbed"],["unperturbe","unperturbed"],["unplease","displease"],["unpleasent","unpleasant"],["unplesant","unpleasant"],["unplesent","unpleasant"],["unprecendented","unprecedented"],["unprecidented","unprecedented"],["unprecise","imprecise"],["unpredicatable","unpredictable"],["unpredicatble","unpredictable"],["unpredictablity","unpredictability"],["unpredictible","unpredictable"],["unpriviledged","unprivileged"],["unpriviliged","unprivileged"],["unprmopted","unprompted"],["unqiue","unique"],["unqoute","unquote"],["unqouted","unquoted"],["unqoutes","unquotes"],["unqouting","unquoting"],["unque","unique"],["unreacahable","unreachable"],["unreacahble","unreachable"],["unreacheable","unreachable"],["unrealeased","unreleased"],["unreasonabily","unreasonably"],["unrechable","unreachable"],["unrecocnized","unrecognized"],["unrecoginized","unrecognized"],["unrecogized","unrecognized"],["unrecognixed","unrecognized"],["unrecongized","unrecognized"],["unreconized","unrecognized"],["unrecovable","unrecoverable"],["unrecovarable","unrecoverable"],["unrecoverd","unrecovered"],["unregester","unregister"],["unregiste","unregister"],["unregisted","unregistered"],["unregisteing","registering"],["unregisterd","unregistered"],["unregistert","unregistered"],["unregistes","unregisters"],["unregisting","unregistering"],["unregistred","unregistered"],["unregistrs","unregisters"],["unregiter","unregister"],["unregiters","unregisters"],["unregnized","unrecognized"],["unregognised","unrecognised"],["unregsiter","unregister"],["unregsitered","unregistered"],["unregsitering","unregistering"],["unregsiters","unregisters"],["unregster","unregister"],["unregstered","unregistered"],["unregstering","unregistering"],["unregsters","unregisters"],["unreigister","unregister"],["unreigster","unregister"],["unreigstered","unregistered"],["unreigstering","unregistering"],["unreigsters","unregisters"],["unrelatd","unrelated"],["unreleated","unrelated"],["unrelted","unrelated"],["unrelyable","unreliable"],["unrelying","underlying"],["unrepentent","unrepentant"],["unrepetant","unrepentant"],["unrepetent","unrepentant"],["unreplacable","unreplaceable"],["unreplacalbe","unreplaceable"],["unreproducable","unreproducible"],["unresgister","unregister"],["unresgisterd","unregistered"],["unresgistered","unregistered"],["unresgisters","unregisters"],["unresolvabvle","unresolvable"],["unresonable","unreasonable"],["unresposive","unresponsive"],["unrestrcited","unrestricted"],["unrgesiter","unregister"],["unroated","unrotated"],["unrosponsive","unresponsive"],["unsanfe","unsafe"],["unsccessful","unsuccessful"],["unscubscribe","subscribe"],["unscubscribed","subscribed"],["unsearcahble","unsearchable"],["unselct","unselect"],["unselcted","unselected"],["unselctes","unselects"],["unselcting","unselecting"],["unselcts","unselects"],["unselecgt","unselect"],["unselecgted","unselected"],["unselecgtes","unselects"],["unselecgting","unselecting"],["unselecgts","unselects"],["unselectabe","unselectable"],["unsepcified","unspecified"],["unseting","unsetting"],["unsetset","unset"],["unsettin","unsetting"],["unsharable","unshareable"],["unshfit","unshift"],["unshfited","unshifted"],["unshfiting","unshifting"],["unshfits","unshifts"],["unsiged","unsigned"],["unsigend","unsigned"],["unsignd","unsigned"],["unsignificant","insignificant"],["unsinged","unsigned"],["unsoclicited","unsolicited"],["unsolicitied","unsolicited"],["unsolicted","unsolicited"],["unsollicited","unsolicited"],["unspecificed","unspecified"],["unspecifiec","unspecific"],["unspecifiecd","unspecified"],["unspecifieced","unspecified"],["unspefcifieid","unspecified"],["unspefeid","unspecified"],["unspeficed","unspecified"],["unspeficeid","unspecified"],["unspeficialleid","unspecified"],["unspeficiallied","unspecified"],["unspeficiallifed","unspecified"],["unspeficied","unspecified"],["unspeficieid","unspecified"],["unspeficifed","unspecified"],["unspeficifeid","unspecified"],["unspeficified","unspecified"],["unspeficififed","unspecified"],["unspeficiied","unspecified"],["unspeficiifed","unspecified"],["unspeficilleid","unspecified"],["unspeficillied","unspecified"],["unspeficillifed","unspecified"],["unspeficiteid","unspecified"],["unspeficitied","unspecified"],["unspeficitifed","unspecified"],["unspefied","unspecified"],["unspefifed","unspecified"],["unspefifeid","unspecified"],["unspefified","unspecified"],["unspefififed","unspecified"],["unspefiied","unspecified"],["unspefiifeid","unspecified"],["unspefiified","unspecified"],["unspefiififed","unspecified"],["unspefixeid","unspecified"],["unspefixied","unspecified"],["unspefixifed","unspecified"],["unspported","unsupported"],["unstabel","unstable"],["unstalbe","unstable"],["unsuable","unusable"],["unsual","unusual"],["unsubscibe","unsubscribe"],["unsubscibed","unsubscribed"],["unsubscibing","unsubscribing"],["unsubscirbe","unsubscribe"],["unsubscirbed","unsubscribed"],["unsubscirbing","unsubscribing"],["unsubscirption","unsubscription"],["unsubscirptions","unsubscriptions"],["unsubscritpion","unsubscription"],["unsubscritpions","unsubscriptions"],["unsubscritpiton","unsubscription"],["unsubscritpitons","unsubscriptions"],["unsubscritption","unsubscription"],["unsubscritptions","unsubscriptions"],["unsubstanciated","unsubstantiated"],["unsucccessful","unsuccessful"],["unsucccessfully","unsuccessfully"],["unsucccessul","unsuccessful"],["unsucccessully","unsuccessfully"],["unsuccee","unsuccessful"],["unsucceed","unsuccessful"],["unsucceedde","unsuccessful"],["unsucceeded","unsuccessful"],["unsucceeds","unsuccessful"],["unsucceeed","unsuccessful"],["unsuccees","unsuccessful"],["unsuccesful","unsuccessful"],["unsuccesfull","unsuccessful"],["unsuccesfully","unsuccessfully"],["unsuccess","unsuccessful"],["unsuccessfull","unsuccessful"],["unsuccessfullly","unsuccessfully"],["unsucesful","unsuccessful"],["unsucesfull","unsuccessful"],["unsucesfully","unsuccessfully"],["unsucesfuly","unsuccessfully"],["unsucessefully","unsuccessfully"],["unsucessflly","unsuccessfully"],["unsucessfually","unsuccessfully"],["unsucessful","unsuccessful"],["unsucessfull","unsuccessful"],["unsucessfully","unsuccessfully"],["unsucessfuly","unsuccessfully"],["unsucesssful","unsuccessful"],["unsucesssfull","unsuccessful"],["unsucesssfully","unsuccessfully"],["unsucesssfuly","unsuccessfully"],["unsucessufll","unsuccessful"],["unsucessuflly","unsuccessfully"],["unsucessully","unsuccessfully"],["unsued","unused"],["unsufficient","insufficient"],["unsuportable","unsupportable"],["unsuported","unsupported"],["unsupport","unsupported"],["unsupproted","unsupported"],["unsupress","unsuppress"],["unsupressed","unsuppressed"],["unsupresses","unsuppresses"],["unsuprised","unsurprised"],["unsuprising","unsurprising"],["unsuprisingly","unsurprisingly"],["unsuprized","unsurprised"],["unsuprizing","unsurprising"],["unsuprizingly","unsurprisingly"],["unsurprized","unsurprised"],["unsurprizing","unsurprising"],["unsurprizingly","unsurprisingly"],["unsused","unused"],["unswithced","unswitched"],["unsychronise","unsynchronise"],["unsychronised","unsynchronised"],["unsychronize","unsynchronize"],["unsychronized","unsynchronized"],["untargetted","untargeted"],["unter","under"],["untill","until"],["untintuitive","unintuitive"],["untoched","untouched"],["untqueue","unqueue"],["untrached","untracked"],["untranslateable","untranslatable"],["untrasformed","untransformed"],["untrasposed","untransposed"],["untrustworty","untrustworthy"],["unued","unused"],["ununsed","unused"],["ununsual","unusual"],["unusal","unusual"],["unusally","unusually"],["unuseable","unusable"],["unuseful","useless"],["unusre","unsure"],["unusuable","unusable"],["unusued","unused"],["unvailable","unavailable"],["unvalid","invalid"],["unvalidate","invalidate"],["unverfified","unverified"],["unversionned","unversioned"],["unversoned","unversioned"],["unviersity","university"],["unwarrented","unwarranted"],["unweildly","unwieldy"],["unwieldly","unwieldy"],["unwraped","unwrapped"],["unwrritten","unwritten"],["unx","unix"],["unxepected","unexpected"],["unxepectedly","unexpectedly"],["unxpected","unexpected"],["unziped","unzipped"],["upadate","update"],["upadated","updated"],["upadater","updater"],["upadates","updates"],["upadating","updating"],["upadte","update"],["upadted","updated"],["upadter","updater"],["upadters","updaters"],["upadtes","updates"],["upagrade","upgrade"],["upagraded","upgraded"],["upagrades","upgrades"],["upagrading","upgrading"],["upate","update"],["upated","updated"],["upater","updater"],["upates","updates"],["upating","updating"],["upcomming","upcoming"],["updaing","updating"],["updat","update"],["updateded","updated"],["updateed","updated"],["updatees","updates"],["updateing","updating"],["updatess","updates"],["updatig","updating"],["updats","updates"],["updgrade","upgrade"],["updgraded","upgraded"],["updgrades","upgrades"],["updgrading","upgrading"],["updrage","upgrade"],["updraged","upgraded"],["updrages","upgrades"],["updraging","upgrading"],["updte","update"],["upercase","uppercase"],["uperclass","upperclass"],["upgade","upgrade"],["upgaded","upgraded"],["upgades","upgrades"],["upgading","upgrading"],["upgarade","upgrade"],["upgaraded","upgraded"],["upgarades","upgrades"],["upgarading","upgrading"],["upgarde","upgrade"],["upgarded","upgraded"],["upgardes","upgrades"],["upgarding","upgrading"],["upgarte","upgrade"],["upgarted","upgraded"],["upgartes","upgrades"],["upgarting","upgrading"],["upgerade","upgrade"],["upgeraded","upgraded"],["upgerades","upgrades"],["upgerading","upgrading"],["upgradablilty","upgradability"],["upgradde","upgrade"],["upgradded","upgraded"],["upgraddes","upgrades"],["upgradding","upgrading"],["upgradei","upgrade"],["upgradingn","upgrading"],["upgrate","upgrade"],["upgrated","upgraded"],["upgrates","upgrades"],["upgrating","upgrading"],["upholstry","upholstery"],["uplad","upload"],["upladaded","uploaded"],["upladed","uploaded"],["uplader","uploader"],["upladers","uploaders"],["uplading","uploading"],["uplads","uploads"],["uplaod","upload"],["uplaodaded","uploaded"],["uplaoded","uploaded"],["uplaoder","uploader"],["uplaoders","uploaders"],["uplaodes","uploads"],["uplaoding","uploading"],["uplaods","uploads"],["upliad","upload"],["uplod","upload"],["uplodaded","uploaded"],["uploded","uploaded"],["uploder","uploader"],["uploders","uploaders"],["uploding","uploading"],["uplods","uploads"],["uppler","upper"],["uppon","upon"],["upported","supported"],["upporterd","supported"],["uppper","upper"],["uppstream","upstream"],["uppstreamed","upstreamed"],["uppstreamer","upstreamer"],["uppstreaming","upstreaming"],["uppstreams","upstreams"],["uppwards","upwards"],["uprade","upgrade"],["upraded","upgraded"],["uprades","upgrades"],["uprading","upgrading"],["uprgade","upgrade"],["uprgaded","upgraded"],["uprgades","upgrades"],["uprgading","upgrading"],["upsream","upstream"],["upsreamed","upstreamed"],["upsreamer","upstreamer"],["upsreaming","upstreaming"],["upsreams","upstreams"],["upsrteam","upstream"],["upsrteamed","upstreamed"],["upsrteamer","upstreamer"],["upsrteaming","upstreaming"],["upsrteams","upstreams"],["upsteam","upstream"],["upsteamed","upstreamed"],["upsteamer","upstreamer"],["upsteaming","upstreaming"],["upsteams","upstreams"],["upsteram","upstream"],["upsteramed","upstreamed"],["upsteramer","upstreamer"],["upsteraming","upstreaming"],["upsterams","upstreams"],["upstread","upstream"],["upstreamedd","upstreamed"],["upstreammed","upstreamed"],["upstreammer","upstreamer"],["upstreamming","upstreaming"],["upstreem","upstream"],["upstreemed","upstreamed"],["upstreemer","upstreamer"],["upstreeming","upstreaming"],["upstreems","upstreams"],["upstrema","upstream"],["upsupported","unsupported"],["uptadeable","updatable"],["uptdate","update"],["uptim","uptime"],["uptions","options"],["uptodate","up-to-date"],["uptodateness","up-to-dateness"],["uptream","upstream"],["uptreamed","upstreamed"],["uptreamer","upstreamer"],["uptreaming","upstreaming"],["uptreams","upstreams"],["uqest","quest"],["uqests","quests"],["urrlib","urllib"],["usag","usage"],["usal","usual"],["usally","usually"],["uscaled","unscaled"],["useability","usability"],["useable","usable"],["useage","usage"],["usebility","usability"],["useble","usable"],["useed","used"],["usees","uses"],["usefl","useful"],["usefule","useful"],["usefulfor","useful for"],["usefull","useful"],["usefullness","usefulness"],["usefult","useful"],["usefuly","usefully"],["usefutl","useful"],["usege","usage"],["useing","using"],["user-defiend","user-defined"],["user-defiened","user-defined"],["usera","users"],["userame","username"],["userames","usernames"],["userapace","userspace"],["userful","useful"],["userpace","userspace"],["userpsace","userspace"],["usersapce","userspace"],["userspase","userspace"],["usesfull","useful"],["usespace","userspace"],["usetnet","Usenet"],["usibility","usability"],["usible","usable"],["usig","using"],["usigned","unsigned"],["usiing","using"],["usin","using"],["usind","using"],["usinging","using"],["usinng","using"],["usng","using"],["usnig","using"],["usptart","upstart"],["usptarts","upstarts"],["usseful","useful"],["ussual","usual"],["ussuall","usual"],["ussually","usually"],["usuable","usable"],["usuage","usage"],["usuallly","usually"],["usualy","usually"],["usualyl","usually"],["usue","use"],["usued","used"],["usueful","useful"],["usuer","user"],["usuing","using"],["usupported","unsupported"],["ususal","usual"],["ususally","usually"],["UTF8ness","UTF-8-ness"],["utiilties","utilities"],["utilies","utilities"],["utililties","utilities"],["utilis","utilise"],["utilisa","utilise"],["utilisaton","utilisation"],["utilites","utilities"],["utilitisation","utilisation"],["utilitise","utilise"],["utilitises","utilises"],["utilitising","utilising"],["utilitiy","utility"],["utilitization","utilization"],["utilitize","utilize"],["utilitizes","utilizes"],["utilitizing","utilizing"],["utiliz","utilize"],["utiliza","utilize"],["utilizaton","utilization"],["utillities","utilities"],["utilties","utilities"],["utiltities","utilities"],["utiltity","utility"],["utilty","utility"],["utitity","utility"],["utitlities","utilities"],["utitlity","utility"],["utitlty","utility"],["utlities","utilities"],["utlity","utility"],["utput","output"],["utputs","outputs"],["uupload","upload"],["uupper","upper"],["vaalues","values"],["vaccum","vacuum"],["vaccume","vacuum"],["vaccuum","vacuum"],["vacinity","vicinity"],["vactor","vector"],["vactors","vectors"],["vacumme","vacuum"],["vacuosly","vacuously"],["vaelues","values"],["vaguaries","vagaries"],["vaiable","variable"],["vaiables","variables"],["vaiant","variant"],["vaiants","variants"],["vaidate","validate"],["vaieties","varieties"],["vailable","available"],["vaild","valid"],["vailidity","validity"],["vailidty","validity"],["vairable","variable"],["vairables","variables"],["vairous","various"],["vakue","value"],["vakued","valued"],["vakues","values"],["valailable","available"],["valdate","validate"],["valetta","valletta"],["valeu","value"],["valiator","validator"],["validade","validate"],["validata","validate"],["validataion","validation"],["validaterelase","validaterelease"],["valide","valid"],["valididty","validity"],["validing","validating"],["validte","validate"],["validted","validated"],["validtes","validates"],["validting","validating"],["validtion","validation"],["valied","valid"],["valies","values"],["valif","valid"],["valitdity","validity"],["valkues","values"],["vallgrind","valgrind"],["vallid","valid"],["vallidation","validation"],["vallidity","validity"],["vallue","value"],["vallues","values"],["valsues","values"],["valtage","voltage"],["valtages","voltages"],["valu","value"],["valuble","valuable"],["valudes","values"],["value-to-pack","value to pack"],["valueable","valuable"],["valuess","values"],["valuie","value"],["valulation","valuation"],["valulations","valuations"],["valule","value"],["valuled","valued"],["valules","values"],["valuling","valuing"],["vanishs","vanishes"],["varable","variable"],["varables","variables"],["varaiable","variable"],["varaiables","variables"],["varaiance","variance"],["varaiation","variation"],["varaible","variable"],["varaibles","variables"],["varaint","variant"],["varaints","variants"],["varation","variation"],["varations","variations"],["variabble","variable"],["variabbles","variables"],["variabe","variable"],["variabel","variable"],["variabele","variable"],["variabes","variables"],["variabla","variable"],["variablen","variable"],["varialbe","variable"],["varialbes","variables"],["varialbles","variables"],["varian","variant"],["variantions","variations"],["variatinos","variations"],["variationnal","variational"],["variatoin","variation"],["variatoins","variations"],["variavle","variable"],["variavles","variables"],["varibable","variable"],["varibables","variables"],["varibale","variable"],["varibales","variables"],["varibaless","variables"],["varibel","variable"],["varibels","variables"],["varibility","variability"],["variblae","variable"],["variblaes","variables"],["varible","variable"],["varibles","variables"],["varience","variance"],["varient","variant"],["varients","variants"],["varierty","variety"],["variey","variety"],["varify","verify"],["variing","varying"],["varing","varying"],["varities","varieties"],["varity","variety"],["variuos","various"],["variuous","various"],["varius","various"],["varn","warn"],["varned","warned"],["varning","warning"],["varnings","warnings"],["varns","warns"],["varoius","various"],["varous","various"],["varously","variously"],["varriance","variance"],["varriances","variances"],["vartical","vertical"],["vartically","vertically"],["vas","was"],["vasall","vassal"],["vasalls","vassals"],["vaue","value"],["vaule","value"],["vauled","valued"],["vaules","values"],["vauling","valuing"],["vavle","valve"],["vavlue","value"],["vavriable","variable"],["vavriables","variables"],["vbsrcript","vbscript"],["vebrose","verbose"],["vecotr","vector"],["vecotrs","vectors"],["vectices","vertices"],["vectore","vector"],["vectores","vectors"],["vectorss","vectors"],["vectror","vector"],["vectrors","vectors"],["vecvtor","vector"],["vecvtors","vectors"],["vedio","video"],["vefiry","verify"],["vegatarian","vegetarian"],["vegeterian","vegetarian"],["vegitable","vegetable"],["vegitables","vegetables"],["vegtable","vegetable"],["vehicule","vehicle"],["veify","verify"],["veiw","view"],["veiwed","viewed"],["veiwer","viewer"],["veiwers","viewers"],["veiwing","viewing"],["veiwings","viewings"],["veiws","views"],["vektor","vector"],["vektors","vectors"],["velidate","validate"],["vell","well"],["velociries","velocities"],["velociry","velocity"],["vender","vendor"],["venders","vendors"],["venemous","venomous"],["vengance","vengeance"],["vengence","vengeance"],["verbaitm","verbatim"],["verbatum","verbatim"],["verbous","verbose"],["verbouse","verbose"],["verbously","verbosely"],["verbse","verbose"],["verctor","vector"],["verctors","vectors"],["veresion","version"],["veresions","versions"],["verfication","verification"],["verficiation","verification"],["verfier","verifier"],["verfies","verifies"],["verfifiable","verifiable"],["verfification","verification"],["verfifications","verifications"],["verfified","verified"],["verfifier","verifier"],["verfifiers","verifiers"],["verfifies","verifies"],["verfify","verify"],["verfifying","verifying"],["verfires","verifies"],["verfiy","verify"],["verfiying","verifying"],["verfy","verify"],["verfying","verifying"],["verical","vertical"],["verifcation","verification"],["verifiaction","verification"],["verificaion","verification"],["verificaions","verifications"],["verificiation","verification"],["verificiations","verifications"],["verifieing","verifying"],["verifing","verifying"],["verifiy","verify"],["verifiying","verifying"],["verifty","verify"],["veriftying","verifying"],["verifyied","verified"],["verion","version"],["verions","versions"],["veriosn","version"],["veriosns","versions"],["verious","various"],["verison","version"],["verisoned","versioned"],["verisoner","versioner"],["verisoners","versioners"],["verisoning","versioning"],["verisons","versions"],["veritcal","vertical"],["veritcally","vertically"],["veritical","vertical"],["verly","very"],["vermillion","vermilion"],["verndor","vendor"],["verrical","vertical"],["verry","very"],["vershin","version"],["versin","version"],["versino","version"],["versinos","versions"],["versins","versions"],["versio","version"],["versiob","version"],["versioed","versioned"],["versioing","versioning"],["versiom","version"],["versionaddded","versionadded"],["versionm","version"],["versionms","versions"],["versionned","versioned"],["versionning","versioning"],["versios","versions"],["versitilaty","versatility"],["versitile","versatile"],["versitlity","versatility"],["versoin","version"],["versoion","version"],["versoions","versions"],["verson","version"],["versoned","versioned"],["versons","versions"],["vertextes","vertices"],["vertexts","vertices"],["vertial","vertical"],["verticall","vertical"],["verticaly","vertically"],["verticies","vertices"],["verticla","vertical"],["verticlealign","verticalalign"],["vertiece","vertex"],["vertieces","vertices"],["vertifiable","verifiable"],["vertification","verification"],["vertifications","verifications"],["vertify","verify"],["vertikal","vertical"],["vertix","vertex"],["vertixes","vertices"],["vertixs","vertices"],["vertx","vertex"],["veryfieng","verifying"],["veryfy","verify"],["veryified","verified"],["veryifies","verifies"],["veryify","verify"],["veryifying","verifying"],["vesion","version"],["vesions","versions"],["vetex","vertex"],["vetexes","vertices"],["vetod","vetoed"],["vetween","between"],["vew","view"],["veyr","very"],["vhild","child"],["viatnamese","Vietnamese"],["vice-fersa","vice-versa"],["vice-wersa","vice-versa"],["vicefersa","vice-versa"],["viceversa","vice-versa"],["vicewersa","vice-versa"],["videostreamming","videostreaming"],["viee","view"],["viees","views"],["vieport","viewport"],["vieports","viewports"],["vietnamesea","Vietnamese"],["viewtransfromation","viewtransformation"],["vigilence","vigilance"],["vigourous","vigorous"],["vill","will"],["villian","villain"],["villification","vilification"],["villify","vilify"],["vincinity","vicinity"],["vinrator","vibrator"],["vioalte","violate"],["vioaltion","violation"],["violentce","violence"],["violoated","violated"],["violoating","violating"],["violoation","violation"],["violoations","violations"],["virtal","virtual"],["virtaul","virtual"],["virtical","vertical"],["virtiual","virtual"],["virttual","virtual"],["virttually","virtually"],["virtualisaion","virtualisation"],["virtualisaiton","virtualisation"],["virtualizaion","virtualization"],["virtualizaiton","virtualization"],["virtualiziation","virtualization"],["virtualy","virtually"],["virtualzation","virtualization"],["virtuell","virtual"],["virtural","virtual"],["virture","virtue"],["virutal","virtual"],["virutalenv","virtualenv"],["virutalisation","virtualisation"],["virutalise","virtualise"],["virutalised","virtualised"],["virutalization","virtualization"],["virutalize","virtualize"],["virutalized","virtualized"],["virutally","virtually"],["virutals","virtuals"],["virutual","virtual"],["visability","visibility"],["visable","visible"],["visably","visibly"],["visbility","visibility"],["visble","visible"],["visblie","visible"],["visbly","visibly"],["visiable","visible"],["visiably","visibly"],["visibale","visible"],["visibibilty","visibility"],["visibile","visible"],["visibililty","visibility"],["visibilit","visibility"],["visibilty","visibility"],["visibl","visible"],["visibleable","visible"],["visibles","visible"],["visiblities","visibilities"],["visiblity","visibility"],["visiblle","visible"],["visinble","visible"],["visious","vicious"],["visisble","visible"],["visiter","visitor"],["visiters","visitors"],["visitng","visiting"],["visivble","visible"],["vissible","visible"],["visted","visited"],["visting","visiting"],["vistors","visitors"],["visuab","visual"],["visuabisation","visualisation"],["visuabise","visualise"],["visuabised","visualised"],["visuabises","visualises"],["visuabization","visualization"],["visuabize","visualize"],["visuabized","visualized"],["visuabizes","visualizes"],["visuables","visuals"],["visuably","visually"],["visuabs","visuals"],["visuaisation","visualisation"],["visuaise","visualise"],["visuaised","visualised"],["visuaises","visualises"],["visuaization","visualization"],["visuaize","visualize"],["visuaized","visualized"],["visuaizes","visualizes"],["visuale","visual"],["visuales","visuals"],["visualizaion","visualization"],["visualizaiton","visualization"],["visualizaitons","visualizations"],["visualizaton","visualization"],["visualizatons","visualizations"],["visuallisation","visualisation"],["visuallization","visualization"],["visualy","visually"],["visualzation","visualization"],["vitories","victories"],["vitrual","virtual"],["vitrually","virtually"],["vitual","virtual"],["viusally","visually"],["viusualisation","visualisation"],["viwe","view"],["viwed","viewed"],["viweed","viewed"],["viwer","viewer"],["viwers","viewers"],["viwes","views"],["vizualisation","visualisation"],["vizualise","visualise"],["vizualised","visualised"],["vizualize","visualize"],["vizualized","visualized"],["vlarge","large"],["vlaue","value"],["vlaues","values"],["vlone","clone"],["vloned","cloned"],["vlones","clones"],["vlues","values"],["voif","void"],["volatage","voltage"],["volatages","voltages"],["volatge","voltage"],["volatges","voltages"],["volcanoe","volcano"],["volenteer","volunteer"],["volenteered","volunteered"],["volenteers","volunteers"],["voleyball","volleyball"],["volontary","voluntary"],["volonteer","volunteer"],["volonteered","volunteered"],["volonteering","volunteering"],["volonteers","volunteers"],["volounteer","volunteer"],["volounteered","volunteered"],["volounteering","volunteering"],["volounteers","volunteers"],["volumn","volume"],["volumne","volume"],["volums","volume"],["volxel","voxel"],["volxels","voxels"],["vonfig","config"],["vould","would"],["vreity","variety"],["vresion","version"],["vrey","very"],["vriable","variable"],["vriables","variables"],["vriety","variety"],["vrifier","verifier"],["vrifies","verifies"],["vrify","verify"],["vrilog","Verilog"],["vritual","virtual"],["vritualenv","virtualenv"],["vritualisation","virtualisation"],["vritualise","virtualise"],["vritualization","virtualization"],["vritualize","virtualize"],["vrituoso","virtuoso"],["vrsion","version"],["vrsions","versions"],["Vulacn","Vulcan"],["Vulakn","Vulkan"],["vulbearable","vulnerable"],["vulbearabule","vulnerable"],["vulbearbilities","vulnerabilities"],["vulbearbility","vulnerability"],["vulbearbuilities","vulnerabilities"],["vulbearbuility","vulnerability"],["vulberabilility","vulnerability"],["vulberabilites","vulnerabilities"],["vulberabiliti","vulnerability"],["vulberabilitie","vulnerability"],["vulberabilitis","vulnerabilities"],["vulberabilitiy","vulnerability"],["vulberabillities","vulnerabilities"],["vulberabillity","vulnerability"],["vulberabilties","vulnerabilities"],["vulberabilty","vulnerability"],["vulberablility","vulnerability"],["vulberabuilility","vulnerability"],["vulberabuilites","vulnerabilities"],["vulberabuiliti","vulnerability"],["vulberabuilitie","vulnerability"],["vulberabuilities","vulnerabilities"],["vulberabuilitis","vulnerabilities"],["vulberabuilitiy","vulnerability"],["vulberabuility","vulnerability"],["vulberabuillities","vulnerabilities"],["vulberabuillity","vulnerability"],["vulberabuilties","vulnerabilities"],["vulberabuilty","vulnerability"],["vulberabule","vulnerable"],["vulberabulility","vulnerability"],["vulberbilities","vulnerabilities"],["vulberbility","vulnerability"],["vulberbuilities","vulnerabilities"],["vulberbuility","vulnerability"],["vulerabilities","vulnerabilities"],["vulerability","vulnerability"],["vulerable","vulnerable"],["vulerabuilities","vulnerabilities"],["vulerabuility","vulnerability"],["vulerabule","vulnerable"],["vulernabilities","vulnerabilities"],["vulernability","vulnerability"],["vulernable","vulnerable"],["vulnarabilities","vulnerabilities"],["vulnarability","vulnerability"],["vulneabilities","vulnerabilities"],["vulneability","vulnerability"],["vulneable","vulnerable"],["vulnearabilities","vulnerabilities"],["vulnearability","vulnerability"],["vulnearable","vulnerable"],["vulnearabule","vulnerable"],["vulnearbilities","vulnerabilities"],["vulnearbility","vulnerability"],["vulnearbuilities","vulnerabilities"],["vulnearbuility","vulnerability"],["vulnerabilies","vulnerabilities"],["vulnerabiliies","vulnerabilities"],["vulnerabilility","vulnerability"],["vulnerabilites","vulnerabilities"],["vulnerabiliti","vulnerability"],["vulnerabilitie","vulnerability"],["vulnerabilitis","vulnerabilities"],["vulnerabilitiy","vulnerability"],["vulnerabilitu","vulnerability"],["vulnerabiliy","vulnerability"],["vulnerabillities","vulnerabilities"],["vulnerabillity","vulnerability"],["vulnerabilties","vulnerabilities"],["vulnerabilty","vulnerability"],["vulnerablility","vulnerability"],["vulnerablities","vulnerabilities"],["vulnerablity","vulnerability"],["vulnerabuilility","vulnerability"],["vulnerabuilites","vulnerabilities"],["vulnerabuiliti","vulnerability"],["vulnerabuilitie","vulnerability"],["vulnerabuilities","vulnerabilities"],["vulnerabuilitis","vulnerabilities"],["vulnerabuilitiy","vulnerability"],["vulnerabuility","vulnerability"],["vulnerabuillities","vulnerabilities"],["vulnerabuillity","vulnerability"],["vulnerabuilties","vulnerabilities"],["vulnerabuilty","vulnerability"],["vulnerabule","vulnerable"],["vulnerabulility","vulnerability"],["vulnerarbilities","vulnerabilities"],["vulnerarbility","vulnerability"],["vulnerarble","vulnerable"],["vulnerbilities","vulnerabilities"],["vulnerbility","vulnerability"],["vulnerbuilities","vulnerabilities"],["vulnerbuility","vulnerability"],["vulnreabilities","vulnerabilities"],["vulnreability","vulnerability"],["vunerabilities","vulnerabilities"],["vunerability","vulnerability"],["vunerable","vulnerable"],["vyer","very"],["vyre","very"],["waht","what"],["wainting","waiting"],["waisline","waistline"],["waislines","waistlines"],["waitting","waiting"],["wakup","wakeup"],["wallthickness","wall thickness"],["want;s","wants"],["wantto","want to"],["wappers","wrappers"],["warantee","warranty"],["waranties","warranties"],["waranty","warranty"],["wardobe","wardrobe"],["waring","warning"],["warings","warnings"],["warinigs","warnings"],["warining","warning"],["warinings","warnings"],["warks","works"],["warlking","walking"],["warnibg","warning"],["warnibgs","warnings"],["warnig","warning"],["warnign","warning"],["warnigns","warnings"],["warnigs","warnings"],["warniing","warning"],["warniings","warnings"],["warnin","warning"],["warnind","warning"],["warninds","warnings"],["warninf","warning"],["warninfs","warnings"],["warningss","warnings"],["warninig","warning"],["warninigs","warnings"],["warnining","warning"],["warninings","warnings"],["warninng","warning"],["warninngs","warnings"],["warnins","warnings"],["warninsg","warnings"],["warninsgs","warnings"],["warniong","warning"],["warniongs","warnings"],["warnkng","warning"],["warnkngs","warnings"],["warrent","warrant"],["warrents","warrants"],["warrn","warn"],["warrned","warned"],["warrning","warning"],["warrnings","warnings"],["warrriors","warriors"],["was'nt","wasn't"],["was't","wasn't"],["was;t","wasn't"],["wasn;t","wasn't"],["wasnt'","wasn't"],["wasnt","wasn't"],["wasnt;","wasn't"],["wass","was"],["wastefullness","wastefulness"],["watchdong","watchdog"],["watchog","watchdog"],["watermask","watermark"],["wathc","watch"],["wathdog","watchdog"],["wathever","whatever"],["wating","waiting"],["watn","want"],["wavelengh","wavelength"],["wavelenghs","wavelengths"],["wavelenght","wavelength"],["wavelenghts","wavelengths"],["wavelnes","wavelines"],["wayoint","waypoint"],["wayoints","waypoints"],["wayword","wayward"],["weahter","weather"],["weahters","weathers"],["weaponary","weaponry"],["weas","was"],["webage","webpage"],["webbased","web-based"],["webiste","website"],["wedensday","Wednesday"],["wednesay","Wednesday"],["wednesdaay","Wednesday"],["wednesdey","Wednesday"],["wednessday","Wednesday"],["wednsday","Wednesday"],["wege","wedge"],["wehere","where"],["wehn","when"],["wehther","whether"],["weigth","weight"],["weigthed","weighted"],["weigths","weights"],["weilded","wielded"],["weill","will"],["weired","weird"],["weitght","weight"],["wel","well"],["wendesday","Wednesday"],["wendsay","Wednesday"],["wendsday","Wednesday"],["wensday","Wednesday"],["were'nt","weren't"],["wereabouts","whereabouts"],["wereas","whereas"],["weree","were"],["werent","weren't"],["werever","wherever"],["wew","we"],["whant","want"],["whants","wants"],["whataver","whatever"],["whatepsace","whitespace"],["whatepsaces","whitespaces"],["whathever","whatever"],["whch","which"],["whcich","which"],["whcih","which"],["wheh","when"],["whehter","whether"],["wheigh","weigh"],["whem","when"],["whenevery","whenever"],["whenn","when"],["whenver","whenever"],["wheras","whereas"],["wherease","whereas"],["whereever","wherever"],["wherether","whether"],["whery","where"],["wheteher","whether"],["whetehr","whether"],["wheter","whether"],["whethe","whether"],["whethter","whether"],["whever","wherever"],["whheel","wheel"],["whhen","when"],["whic","which"],["whicg","which"],["which;s","which's"],["whichs","which's"],["whicht","which"],["whih","which"],["whihc","which"],["whihch","which"],["whike","while"],["whilest","whilst"],["whiltelist","whitelist"],["whiltelisted","whitelisted"],["whiltelisting","whitelisting"],["whiltelists","whitelists"],["whilw","while"],["whioch","which"],["whishlist","wishlist"],["whitch","which"],["whitchever","whichever"],["whitepsace","whitespace"],["whitepsaces","whitespaces"],["whith","with"],["whithin","within"],["whithout","without"],["whitre","white"],["whitspace","whitespace"],["whitspaces","whitespace"],["whlch","which"],["whle","while"],["whlie","while"],["whn","when"],["whne","when"],["whoes","whose"],["whoknows","who knows"],["wholey","wholly"],["whoose","whose"],["whould","would"],["whre","where"],["whta","what"],["whther","whether"],["whtihin","within"],["whyth","with"],["whythout","without"],["wiat","wait"],["wice","vice"],["wice-versa","vice-versa"],["wice-wersa","vice-versa"],["wiceversa","vice-versa"],["wicewersa","vice-versa"],["wich","which"],["widder","wider"],["widesread","widespread"],["widgect","widget"],["widged","widget"],["widghet","widget"],["widghets","widgets"],["widgit","widget"],["widgtes","widgets"],["widht","width"],["widhtpoint","widthpoint"],["widhtpoints","widthpoints"],["widthn","width"],["widthout","without"],["wief","wife"],["wieghed","weighed"],["wieght","weight"],["wieghts","weights"],["wieh","view"],["wierd","weird"],["wierdly","weirdly"],["wierdness","weirdness"],["wieth","width"],["wiew","view"],["wigdet","widget"],["wigdets","widgets"],["wih","with"],["wihch","which"],["wihich","which"],["wihite","white"],["wihle","while"],["wihout","without"],["wiht","with"],["wihtin","within"],["wihtout","without"],["wiil","will"],["wikpedia","wikipedia"],["wilcard","wildcard"],["wilcards","wildcards"],["wilh","will"],["wille","will"],["willingless","willingness"],["willk","will"],["willl","will"],["windo","window"],["windoes","windows"],["windoow","window"],["windoows","windows"],["windos","windows"],["windowz","windows"],["windwo","window"],["windwos","windows"],["winn","win"],["winndow","window"],["winndows","windows"],["winodw","window"],["wipoing","wiping"],["wirh","with"],["wirte","write"],["wirter","writer"],["wirters","writers"],["wirtes","writes"],["wirting","writing"],["wirtten","written"],["wirtual","virtual"],["witable","writeable"],["witdh","width"],["witdhs","widths"],["witdth","width"],["witdths","widths"],["witheld","withheld"],["withh","with"],["withih","within"],["withinn","within"],["withion","within"],["witho","with"],["withoit","without"],["withold","withhold"],["witholding","withholding"],["withon","within"],["withoout","without"],["withot","without"],["withotu","without"],["withou","without"],["withoud","without"],["withoug","without"],["withough","without"],["withought","without"],["withouht","without"],["withount","without"],["withourt","without"],["withous","without"],["withouth","without"],["withouyt","without"],["withput","without"],["withrawal","withdrawal"],["witht","with"],["withthe","with the"],["withtin","within"],["withun","within"],["withuout","without"],["witin","within"],["witk","with"],["witn","with"],["witout","without"],["witrh","with"],["witth","with"],["wiull","will"],["wiyh","with"],["wiyhout","without"],["wiyth","with"],["wizzard","wizard"],["wjat","what"],["wll","will"],["wlll","will"],["wnated","wanted"],["wnating","wanting"],["wnats","wants"],["woh","who"],["wohle","whole"],["woill","will"],["woithout","without"],["wokr","work"],["wokring","working"],["wolrd","world"],["wolrdly","worldly"],["wolrdwide","worldwide"],["wolwide","worldwide"],["won;t","won't"],["wonderfull","wonderful"],["wonderig","wondering"],["wont't","won't"],["woraround","workaround"],["worarounds","workarounds"],["worbench","workbench"],["worbenches","workbenches"],["worchester","Worcester"],["wordlwide","worldwide"],["wordpres","wordpress"],["worfklow","workflow"],["worfklows","workflows"],["worflow","workflow"],["worflows","workflows"],["workaorund","workaround"],["workaorunds","workarounds"],["workaound","workaround"],["workaounds","workarounds"],["workaraound","workaround"],["workaraounds","workarounds"],["workarbound","workaround"],["workaroud","workaround"],["workaroudn","workaround"],["workaroudns","workarounds"],["workarouds","workarounds"],["workarould","workaround"],["workaroung","workaround"],["workaroungs","workarounds"],["workarround","workaround"],["workarrounds","workarounds"],["workarund","workaround"],["workarunds","workarounds"],["workbanch","workbench"],["workbanches","workbenches"],["workbanchs","workbenches"],["workbenchs","workbenches"],["workbennch","workbench"],["workbennches","workbenches"],["workbnech","workbench"],["workbneches","workbenches"],["workboos","workbooks"],["workes","works"],["workfow","workflow"],["workfows","workflows"],["workign","working"],["worklfow","workflow"],["worklfows","workflows"],["workpsace","workspace"],["workpsaces","workspaces"],["workround","workaround"],["workrounds","workarounds"],["workspce","workspace"],["workspsace","workspace"],["workspsaces","workspaces"],["workstaion","workstation"],["workstaions","workstations"],["workstaition","workstation"],["workstaitions","workstations"],["workstaiton","workstation"],["workstaitons","workstations"],["workststion","workstation"],["workststions","workstations"],["worl","world"],["world-reknown","world renown"],["world-reknowned","world renowned"],["worload","workload"],["worloads","workloads"],["worls","world"],["wornged","wronged"],["worngs","wrongs"],["worrry","worry"],["worser","worse"],["worstened","worsened"],["worthwile","worthwhile"],["woth","worth"],["wothout","without"],["wotk","work"],["wotked","worked"],["wotking","working"],["wotks","works"],["woud","would"],["woudl","would"],["woudn't","wouldn't"],["would'nt","wouldn't"],["would't","wouldn't"],["wouldent","wouldn't"],["woulden`t","wouldn't"],["wouldn;t","wouldn't"],["wouldnt'","wouldn't"],["wouldnt","wouldn't"],["wouldnt;","wouldn't"],["wounderful","wonderful"],["wouold","would"],["wouuld","would"],["wqs","was"],["wraapp","wrap"],["wraapped","wrapped"],["wraapper","wrapper"],["wraappers","wrappers"],["wraapping","wrapping"],["wraapps","wraps"],["wraning","warning"],["wranings","warnings"],["wrapepd","wrapped"],["wraper","wrapper"],["wrapp","wrap"],["wrappered","wrapped"],["wrappng","wrapping"],["wrapps","wraps"],["wresters","wrestlers"],["wriet","write"],["writebufer","writebuffer"],["writechetque","writecheque"],["writeing","writing"],["writen","written"],["writet","writes"],["writewr","writer"],["writingm","writing"],["writters","writers"],["writting","writing"],["writtten","written"],["wrkload","workload"],["wrkloads","workloads"],["wrod","word"],["wroet","wrote"],["wrog","wrong"],["wrok","work"],["wroked","worked"],["wrokflow","workflow"],["wrokflows","workflows"],["wroking","working"],["wrokload","workload"],["wrokloads","workloads"],["wroks","works"],["wron","wrong"],["wronf","wrong"],["wront","wrong"],["wrtie","write"],["wrting","writing"],["wsee","see"],["wser","user"],["wth","with"],["wtih","with"],["wtyle","style"],["wuold","would"],["wupport","support"],["wuth","with"],["wuthin","within"],["wya","way"],["wyth","with"],["wythout","without"],["xdescribe","describe"],["xdpf","xpdf"],["xenophoby","xenophobia"],["xepect","expect"],["xepected","expected"],["xepectedly","expectedly"],["xepecting","expecting"],["xepects","expects"],["xgetttext","xgettext"],["xinitiazlize","xinitialize"],["xmdoel","xmodel"],["xour","your"],["xwindows","X"],["xyou","you"],["yaching","yachting"],["yaer","year"],["yaerly","yearly"],["yaers","years"],["yatch","yacht"],["yearm","year"],["yeasr","years"],["yeild","yield"],["yeilded","yielded"],["yeilding","yielding"],["yeilds","yields"],["yeld","yield"],["yelded","yielded"],["yelding","yielding"],["yelds","yields"],["yello","yellow"],["yera","year"],["yeras","years"],["yersa","years"],["yhe","the"],["yieldin","yielding"],["ymbols","symbols"],["yoman","yeoman"],["yomen","yeomen"],["yot","yacht"],["yotube","youtube"],["youforic","euphoric"],["youforically","euphorically"],["youlogy","eulogy"],["yourselfes","yourselves"],["youself","yourself"],["youthinasia","euthanasia"],["ypes","types"],["yrea","year"],["ytou","you"],["yuforic","euphoric"],["yuforically","euphorically"],["yugoslac","yugoslav"],["yuo","you"],["yuor","your"],["yur","your"],["zar","czar"],["zars","czars"],["zeebra","zebra"],["zefer","zephyr"],["zefers","zephyrs"],["zellot","zealot"],["zellots","zealots"],["zemporary","temporary"],["zick-zack","zig-zag"],["zimmap","zipmap"],["zimpaps","zipmaps"],["zink","zinc"],["ziped","zipped"],["ziper","zipper"],["ziping","zipping"],["zlot","slot"],["zombe","zombie"],["zomebie","zombie"],["zoocheenei","zucchinis"],["zoocheeni","zucchini"],["zoocheinei","zucchinis"],["zoocheini","zucchini"],["zookeenee","zucchini"],["zookeenees","zucchinis"],["zookeenei","zucchinis"],["zookeeni","zucchini"],["zookeinee","zucchini"],["zookeinees","zucchinis"],["zookeinei","zucchinis"],["zookeini","zucchini"],["zucheenei","zucchinis"],["zucheeni","zucchini"],["zukeenee","zucchini"],["zukeenees","zucchinis"],["zukeenei","zucchinis"],["zukeeni","zucchini"],["zuser","user"],["zylophone","xylophone"],["zylophones","xylophone"],["__attribyte__","__attribute__"],["__cpluspus","__cplusplus"],["__cpusplus","__cplusplus"],["\xE9valuate","evaluate"],["\u0441ontain","contain"],["\u0441ontained","contained"],["\u0441ontainer","container"],["\u0441ontainers","containers"],["\u0441ontaining","containing"],["\u0441ontainor","container"],["\u0441ontainors","containers"],["\u0441ontains","contains"]]);var ds=class{constructor(){this.ignoreWords=[]}},Gn=class extends w{constructor(){super({nameKey:"rules.auto-correct-common-misspellings.name",descriptionKey:"rules.auto-correct-common-misspellings.description",type:"Content",ruleIgnoreTypes:[f.yaml,f.code,f.inlineCode,f.math,f.inlineMath,f.link,f.wikiLink,f.tag,f.image,f.url]})}get OptionsClass(){return ds}apply(t,i){return t.replaceAll(Ku,n=>this.replaceWordWithCorrectCasing(n,i))}replaceWordWithCorrectCasing(t,i){let n=t.toLowerCase();if(!sl.has(n)||i.ignoreWords.includes(n))return t;let r=sl.get(n);return t.charAt(0)==t.charAt(0).toUpperCase()&&(r=r.charAt(0).toUpperCase()+r.substring(1)),r}get exampleBuilders(){return[new y({description:"Auto-correct misspellings in regular text, but not code blocks, math blocks, YAML, or tags",before:p` +`).map(function(g,m){return m===0?g:""+d+g}).join(` +`)),s+=u+n[l+1]}),s}var p=_b;var Oo=require("obsidian");var En,vr,st,Je=class Je{static getRule(){if(!K(Je,En).has(this.name)){let t=new this,i=new _s(t.nameKey,t.descriptionKey,t.settingsKey,t.alias,t.type,t.safeApply.bind(t),t.exampleBuilders.map(n=>n.example),t.optionBuilders.map(n=>n.option),t.hasSpecialExecutionOrder,t.ignoreTypes);K(Je,En).set(this.name,i),K(Je,vr).set(t.alias,t)}return K(Je,En).get(this.name)}static applyIfEnabledBase(t,i,n,r){let a=t.getOptions(n);if(a[t.enabledOptionName()]){wt(t.alias);let s=Object.assign({},a,r);ni(`${E("logs.run-rule-text")} ${t.getName()}`);try{let o=t.apply(i,s);return Zi(t.alias),ni(o),[o,!0]}catch(o){Zi(t.alias),Ds(o,t.getName())}}else return[i,!1]}static getBuilderByName(t){return K(Je,vr).get(t)}static setNoSettingControl(t,i){K(Je,st).has(t)||K(Je,st).set(t,[]),K(Je,st).get(t).push(i)}static hasSettingControl(t,i){return!K(Je,st).has(t)||!K(Je,st).get(t).includes(i)}};En=new WeakMap,vr=new WeakMap,st=new WeakMap,ve(Je,En,new Map),ve(Je,vr,new Map),ve(Je,st,new Map);var ot=Je,b=class extends ot{constructor(i){super();this.alias=i.nameKey.replace(/rules\.(.*)\.name/,"$1"),this.settingsKey=i.nameKey.replace(/rules\.(.*)\.name/,"$1"),this.nameKey=i.nameKey,this.descriptionKey=i.descriptionKey,this.type=i.type,this.hasSpecialExecutionOrder=i.hasSpecialExecutionOrder??!1,i.ruleIgnoreTypes?this.ignoreTypes=[h.customIgnore,...i.ruleIgnoreTypes]:this.ignoreTypes=[h.customIgnore]}static register(i){let n=i.getRule();Cp(n)}safeApply(i,n){return this.apply(i,this.buildRuleOptions(n))}buildRuleOptions(i){i=i??{};let n=new this.OptionsClass,r=Object.assign(n,i);for(let a of this.optionBuilders)a.setRuleOption(r,i);return r}static applyIfEnabled(i,n,r,a){let s=this.getRule();return r.includes(s.alias)?(ni(s.alias+" "+E("logs.disabled-text")),[i,!1]):ot.applyIfEnabledBase(s,i,n,a)}static getRuleOptions(i){let n=ot.getRule.bind(this)(),r=new this,a=n.getOptions(i);return r.buildRuleOptions(a)}static noSettingControl(){return(i,n)=>{let r=i.constructor.name;ot.setNoSettingControl(r,n)}}},Kl,y=class{constructor(t){ve(this,Kl,void 0);this.example=new Fs(t.description,t.before,t.after,t.options)}};Kl=new WeakMap;var On,lt=class{constructor(t){ve(this,On,void 0);this.OptionsClass=t.OptionsClass;let i=t.nameKey.split(".");i.length==1?this.configKey=i[0]:this.configKey=i[i.length-2],this.nameKey=t.nameKey,this.descriptionKey=t.descriptionKey,this.optionsKey=t.optionsKey}get defaultValue(){return new this.OptionsClass()[this.optionsKey]}get option(){return K(this,On)||qe(this,On,this.buildOption()),K(this,On)}setRuleOption(t,i){let n=i[this.configKey];n!==void 0&&(t[this.optionsKey]=n)}};On=new WeakMap;var U=class extends lt{buildOption(){return new zn(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}},Ns=class extends lt{buildOption(){return new br(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}},ne=class extends lt{constructor(i){super(i);this.records=i.records.map(n=>new Is("enums."+n.value,n.description))}buildOption(){return new Bs(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue,this.records)}},me=class extends lt{constructor(i){super(i);this.separator=i.separator??` +`,this.splitter=i.splitter??/\n/}buildOption(){return new Ms(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue.join(this.separator))}setRuleOption(i,n){if(n[this.configKey]!==void 0){let r=n[this.configKey].split(this.splitter).filter(function(a){return a!=""});i[this.optionsKey]=r}}},$e=class extends lt{buildOption(){return new br(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}},Ks=class extends lt{buildOption(){return new qs(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}};var Yl=class{},xr=class extends b{constructor(){super({nameKey:"rules.add-blank-line-after-yaml.name",descriptionKey:"rules.add-blank-line-after-yaml.description",type:"YAML"})}get OptionsClass(){return Yl}apply(t,i){let n=t.match(Qe);if(n===null)return t;let r=n[0],a=t.indexOf(r)+r.length;return a+1>=t.length||t.trimEnd()===r.trimEnd()||t.charAt(a+1)===` +`?t:t.replace(r,r+` +`)}get exampleBuilders(){return[new y({description:"A file with just YAML in it does not get a blank line after the YAML",before:p` + --- + key: value + --- + `,after:p` + --- + key: value + --- + `}),new y({description:"A file with YAML followed directly by content has an empty line added",before:p` + --- + key: value + --- + Here is some text + `,after:p` + --- + key: value + --- + ${""} + Here is some text + `}),new y({description:"A file with YAML that already has a blank line after it and before content has no empty line added",before:p` + --- + key: value + --- + ${""} + Here is some text + `,after:p` + --- + key: value + --- + ${""} + Here is some text + `})]}get optionBuilders(){return[]}};xr=A([b.register],xr);var jl=new Map([["1nd","1st"],["2rd","2nd"],["2st","2nd"],["3nd","3rd"],["3st","3rd"],["4rd","4th"],["a-diaerers","a-diaereses"],["aaccess","access"],["aaccessibility","accessibility"],["aaccession","accession"],["aack","ack"],["aactual","actual"],["aactually","actually"],["aadd","add"],["aagain","again"],["aaggregation","aggregation"],["aanother","another"],["aapply","apply"],["aaproximate","approximate"],["aaproximated","approximated"],["aaproximately","approximately"],["aaproximates","approximates"],["aaproximating","approximating"],["aare","are"],["aassign","assign"],["aassignment","assignment"],["aassignments","assignments"],["aassociated","associated"],["aassumed","assumed"],["aautomatic","automatic"],["aautomatically","automatically"],["abailable","available"],["abanden","abandon"],["abandonded","abandoned"],["abandone","abandon"],["abandonned","abandoned"],["abandonning","abandoning"],["abbbreviated","abbreviated"],["abberation","aberration"],["abberations","aberrations"],["abberivates","abbreviates"],["abberration","aberration"],["abborted","aborted"],["abborting","aborting"],["abbrevate","abbreviate"],["abbrevation","abbreviation"],["abbrevations","abbreviations"],["abbreviaton","abbreviation"],["abbreviatons","abbreviations"],["abbriviate","abbreviate"],["abbriviation","abbreviation"],["abbriviations","abbreviations"],["aberation","aberration"],["abigious","ambiguous"],["abiguity","ambiguity"],["abilityes","abilities"],["abilties","abilities"],["abilty","ability"],["abiss","abyss"],["abitrarily","arbitrarily"],["abitrary","arbitrary"],["abitrate","arbitrate"],["abitration","arbitration"],["abizmal","abysmal"],["abnoramlly","abnormally"],["abnormalty","abnormally"],["abnormaly","abnormally"],["abnornally","abnormally"],["abnove","above"],["abnrormal","abnormal"],["aboluste","absolute"],["abolustely","absolutely"],["abolute","absolute"],["abondon","abandon"],["abondoned","abandoned"],["abondoning","abandoning"],["abondons","abandons"],["aboout","about"],["aborigene","aborigine"],["abortificant","abortifacient"],["aboslute","absolute"],["aboslutely","absolutely"],["abosulte","absolute"],["abosultely","absolutely"],["abosulute","absolute"],["abosulutely","absolutely"],["abotu","about"],["abount","about"],["aboutit","about it"],["aboutthe","about the"],["abouve","above"],["abov","above"],["aboved","above"],["abovemtioned","abovementioned"],["aboves","above"],["abovmentioned","abovementioned"],["abreviate","abbreviate"],["abreviated","abbreviated"],["abreviates","abbreviates"],["abreviating","abbreviating"],["abreviation","abbreviation"],["abreviations","abbreviations"],["abritrarily","arbitrarily"],["abritrary","arbitrary"],["abriviate","abbreviate"],["absail","abseil"],["absailing","abseiling"],["absance","absence"],["abscence","absence"],["abscound","abscond"],["abselutely","absolutely"],["abselutly","absolutely"],["absense","absence"],["absodefly","absolute"],["absodeflyly","absolutely"],["absolate","absolute"],["absolately","absolutely"],["absolaute","absolute"],["absolautely","absolutely"],["absoleted","obsoleted"],["absoletely","absolutely"],["absoliute","absolute"],["absoliutely","absolutely"],["absoloute","absolute"],["absoloutely","absolutely"],["absolte","absolute"],["absoltely","absolutely"],["absoltue","absolute"],["absoltuely","absolutely"],["absoluate","absolute"],["absoluately","absolutely"],["absolue","absolute"],["absoluely","absolutely"],["absoluet","absolute"],["absoluetly","absolutely"],["absolule","absolute"],["absolulte","absolute"],["absolultely","absolutely"],["absolune","absolute"],["absolunely","absolutely"],["absolure","absolute"],["absolurely","absolutely"],["absolut","absolute"],["absolutelly","absolutely"],["absoluth","absolute"],["absoluthe","absolute"],["absoluthely","absolutely"],["absoluthly","absolutely"],["absolutley","absolutely"],["absolutly","absolutely"],["absolutlye","absolutely"],["absoluute","absolute"],["absoluutely","absolutely"],["absoluve","absolute"],["absoluvely","absolutely"],["absoolute","absolute"],["absoolutely","absolutely"],["absorbant","absorbent"],["absorbsion","absorption"],["absorbtion","absorption"],["absorve","absorb"],["absould","absolute"],["absouldly","absolutely"],["absoule","absolute"],["absoulely","absolutely"],["absouletely","absolutely"],["absoult","absolute"],["absoulte","absolute"],["absoultely","absolutely"],["absoultly","absolutely"],["absoulute","absolute"],["absoulutely","absolutely"],["absout","absolute"],["absoute","absolute"],["absoutely","absolutely"],["absoutly","absolutely"],["abstact","abstract"],["abstacted","abstracted"],["abstacter","abstracter"],["abstacting","abstracting"],["abstaction","abstraction"],["abstactions","abstractions"],["abstactly","abstractly"],["abstactness","abstractness"],["abstactor","abstractor"],["abstacts","abstracts"],["abstanence","abstinence"],["abstrac","abstract"],["abstraced","abstracted"],["abstracer","abstracter"],["abstracing","abstracting"],["abstracion","abstraction"],["abstracions","abstractions"],["abstracly","abstractly"],["abstracness","abstractness"],["abstracor","abstractor"],["abstracs","abstracts"],["abstrat","abstract"],["abstrated","abstracted"],["abstrater","abstracter"],["abstrating","abstracting"],["abstration","abstraction"],["abstrations","abstractions"],["abstratly","abstractly"],["abstratness","abstractness"],["abstrator","abstractor"],["abstrats","abstracts"],["abstrct","abstract"],["abstrcted","abstracted"],["abstrcter","abstracter"],["abstrcting","abstracting"],["abstrction","abstraction"],["abstrctions","abstractions"],["abstrctly","abstractly"],["abstrctness","abstractness"],["abstrctor","abstractor"],["abstrcts","abstracts"],["absulute","absolute"],["absymal","abysmal"],["abtract","abstract"],["abtracted","abstracted"],["abtracter","abstracter"],["abtracting","abstracting"],["abtraction","abstraction"],["abtractions","abstractions"],["abtractly","abstractly"],["abtractness","abstractness"],["abtractor","abstractor"],["abtracts","abstracts"],["abudance","abundance"],["abudances","abundances"],["abundacies","abundances"],["abundancies","abundances"],["abundand","abundant"],["abundence","abundance"],["abundent","abundant"],["abundunt","abundant"],["abutts","abuts"],["abvailable","available"],["abvious","obvious"],["acadamy","academy"],["acadimy","academy"],["acadmic","academic"],["acale","scale"],["acatemy","academy"],["accademic","academic"],["accademy","academy"],["accapt","accept"],["accapted","accepted"],["accapts","accepts"],["acccept","accept"],["acccepted","accepted"],["acccepting","accepting"],["acccepts","accepts"],["accces","access"],["acccess","access"],["acccessd","accessed"],["acccessed","accessed"],["acccesses","accesses"],["acccessibility","accessibility"],["acccessible","accessible"],["acccessing","accessing"],["acccession","accession"],["acccessor","accessor"],["acccessors","accessors"],["acccord","accord"],["acccordance","accordance"],["acccordances","accordances"],["acccorded","accorded"],["acccording","according"],["acccordingly","accordingly"],["acccords","accords"],["acccount","account"],["acccumulate","accumulate"],["acccuracy","accuracy"],["acccurate","accurate"],["acccurately","accurately"],["acccused","accused"],["accecpt","accept"],["accecpted","accepted"],["accees","access"],["acceess","access"],["accelarate","accelerate"],["accelaration","acceleration"],["accelarete","accelerate"],["accelearion","acceleration"],["accelearte","accelerate"],["accelearted","accelerated"],["acceleartes","accelerates"],["acceleartion","acceleration"],["acceleartor","accelerator"],["acceleated","accelerated"],["acceleratoin","acceleration"],["acceleraton","acceleration"],["acceleratrion","acceleration"],["accelerte","accelerate"],["accelertion","acceleration"],["accellerate","accelerate"],["accellerated","accelerated"],["accellerating","accelerating"],["accelleration","acceleration"],["accellerator","accelerator"],["accending","ascending"],["acceot","accept"],["accepatble","acceptable"],["accepect","accept"],["accepected","accepted"],["accepeted","accepted"],["acceppt","accept"],["acceptence","acceptance"],["acceptible","acceptable"],["acceptted","accepted"],["acces","access"],["accesed","accessed"],["acceses","accesses"],["accesibility","accessibility"],["accesible","accessible"],["accesiblity","accessibility"],["accesiibility","accessibility"],["accesiiblity","accessibility"],["accesing","accessing"],["accesnt","accent"],["accesor","accessor"],["accesories","accessories"],["accesors","accessors"],["accesory","accessory"],["accessability","accessibility"],["accessable","accessible"],["accessbile","accessible"],["accessiable","accessible"],["accessibile","accessible"],["accessibiliity","accessibility"],["accessibilitiy","accessibility"],["accessibiltiy","accessibility"],["accessibilty","accessibility"],["accessiblilty","accessibility"],["accessiblity","accessibility"],["accessiibility","accessibility"],["accessiiblity","accessibility"],["accessile","accessible"],["accessintg","accessing"],["accessisble","accessible"],["accessoire","accessory"],["accessort","accessor"],["accesss","access"],["accesssibility","accessibility"],["accesssible","accessible"],["accesssiblity","accessibility"],["accesssiiblity","accessibility"],["accesssing","accessing"],["accesssor","accessor"],["accesssors","accessors"],["accet","accept"],["accetable","acceptable"],["accets","accepts"],["acchiev","achieve"],["acchievable","achievable"],["acchieve","achieve"],["acchieveable","achievable"],["acchieved","achieved"],["acchievement","achievement"],["acchievements","achievements"],["acchiever","achiever"],["acchieves","achieves"],["accidant","accident"],["acciddently","accidentally"],["accidentaly","accidentally"],["accidential","accidental"],["accidentially","accidentally"],["accidentically","accidentally"],["accidentilly","accidentally"],["accidentily","accidentally"],["accidently","accidentally"],["accidentually","accidentally"],["accidetly","accidentally"],["acciedential","accidental"],["acciednetally","accidentally"],["accient","accident"],["acciental","accidental"],["acclerated","accelerated"],["acclerates","accelerates"],["accleration","acceleration"],["acclerometers","accelerometers"],["acclimitization","acclimatization"],["accociate","associate"],["accociated","associated"],["accociates","associates"],["accociating","associating"],["accociation","association"],["accociations","associations"],["accoding","according"],["accodingly","accordingly"],["accodr","accord"],["accodrance","accordance"],["accodred","accorded"],["accodring","according"],["accodringly","accordingly"],["accodrs","accords"],["accointing","accounting"],["accoird","accord"],["accoirding","according"],["accomadate","accommodate"],["accomadated","accommodated"],["accomadates","accommodates"],["accomadating","accommodating"],["accomadation","accommodation"],["accomadations","accommodations"],["accomdate","accommodate"],["accomidate","accommodate"],["accommadate","accommodate"],["accommadates","accommodates"],["accommadating","accommodating"],["accommdated","accommodated"],["accomodata","accommodate"],["accomodate","accommodate"],["accomodated","accommodated"],["accomodates","accommodates"],["accomodating","accommodating"],["accomodation","accommodation"],["accomodations","accommodations"],["accompagned","accompanied"],["accompagnied","accompanied"],["accompagnies","accompanies"],["accompagniment","accompaniment"],["accompagning","accompanying"],["accompagny","accompany"],["accompagnying","accompanying"],["accompained","accompanied"],["accompanyed","accompanied"],["accompt","account"],["acconding","according"],["accont","account"],["accontant","accountant"],["acconted","accounted"],["acconting","accounting"],["accoording","according"],["accoordingly","accordingly"],["accoount","account"],["accopunt","account"],["accordding","according"],["accordeon","accordion"],["accordian","accordion"],["accordign","according"],["accordiingly","accordingly"],["accordinag","according"],["accordind","according"],["accordinly","accordingly"],["accordint","according"],["accordintly","accordingly"],["accordling","according"],["accordlingly","accordingly"],["accordng","according"],["accordngly","accordingly"],["accoriding","according"],["accoridng","according"],["accoridngly","accordingly"],["accoringly","accordingly"],["accorndingly","accordingly"],["accort","accord"],["accortance","accordance"],["accorted","accorded"],["accortind","according"],["accorting","according"],["accound","account"],["accouned","accounted"],["accoustic","acoustic"],["accoustically","acoustically"],["accoustics","acoustics"],["accout","account"],["accouting","accounting"],["accoutn","account"],["accpet","accept"],["accpets","accepts"],["accquainted","acquainted"],["accquire","acquire"],["accquired","acquired"],["accquires","acquires"],["accquiring","acquiring"],["accracy","accuracy"],["accrate","accurate"],["accrding","according"],["accrdingly","accordingly"],["accrediation","accreditation"],["accredidation","accreditation"],["accress","access"],["accroding","according"],["accrodingly","accordingly"],["accronym","acronym"],["accronyms","acronyms"],["accrording","according"],["accros","across"],["accrose","across"],["accross","across"],["accsess","access"],["accss","access"],["accssible","accessible"],["accssor","accessor"],["acctual","actual"],["accuarcy","accuracy"],["accuarte","accurate"],["accuartely","accurately"],["accumalate","accumulate"],["accumalates","accumulates"],["accumalator","accumulator"],["accumalte","accumulate"],["accumalted","accumulated"],["accumilated","accumulated"],["accumlate","accumulate"],["accumlated","accumulated"],["accumlates","accumulates"],["accumlating","accumulating"],["accumlator","accumulator"],["accummulating","accumulating"],["accummulators","accumulators"],["accumualte","accumulate"],["accumualtion","accumulation"],["accupied","occupied"],["accupts","accepts"],["accurable","accurate"],["accuraccies","accuracies"],["accuraccy","accuracy"],["accurancy","accuracy"],["accurarcy","accuracy"],["accuratelly","accurately"],["accuratley","accurately"],["accuratly","accurately"],["accurences","occurrences"],["accurracy","accuracy"],["accurring","occurring"],["accussed","accused"],["acditionally","additionally"],["acecess","access"],["acedemic","academic"],["acelerated","accelerated"],["acend","ascend"],["acendance","ascendance"],["acendancey","ascendancy"],["acended","ascended"],["acendence","ascendance"],["acendencey","ascendancy"],["acendency","ascendancy"],["acender","ascender"],["acending","ascending"],["acent","ascent"],["aceptable","acceptable"],["acerage","acreage"],["acess","access"],["acessable","accessible"],["acessed","accessed"],["acesses","accesses"],["acessible","accessible"],["acessing","accessing"],["acessor","accessor"],["acheive","achieve"],["acheived","achieved"],["acheivement","achievement"],["acheivements","achievements"],["acheives","achieves"],["acheiving","achieving"],["acheivment","achievement"],["acheivments","achievements"],["achievment","achievement"],["achievments","achievements"],["achitecture","architecture"],["achitectures","architectures"],["achivable","achievable"],["achivement","achievement"],["achivements","achievements"],["achor","anchor"],["achored","anchored"],["achoring","anchoring"],["achors","anchors"],["ACI","ACPI"],["acident","accident"],["acidental","accidental"],["acidentally","accidentally"],["acidents","accidents"],["acient","ancient"],["acients","ancients"],["ACII","ASCII"],["acition","action"],["acitions","actions"],["acitivate","activate"],["acitivation","activation"],["acitivity","activity"],["acitvate","activate"],["acitve","active"],["acivate","activate"],["acive","active"],["acknodledgment","acknowledgment"],["acknodledgments","acknowledgments"],["acknoledge","acknowledge"],["acknoledged","acknowledged"],["acknoledges","acknowledges"],["acknoledging","acknowledging"],["acknoledgment","acknowledgment"],["acknoledgments","acknowledgments"],["acknowldeged","acknowledged"],["acknowldegement","acknowledgement"],["acknowldegements","acknowledgements"],["acknowledgeing","acknowledging"],["acknowleding","acknowledging"],["acknowlege","acknowledge"],["acknowleged","acknowledged"],["acknowlegement","acknowledgement"],["acknowlegements","acknowledgements"],["acknowleges","acknowledges"],["acknowleging","acknowledging"],["acknowlegment","acknowledgment"],["ackowledge","acknowledge"],["ackowledged","acknowledged"],["ackowledgement","acknowledgement"],["ackowledgements","acknowledgements"],["ackowledges","acknowledges"],["ackowledging","acknowledging"],["acnowledge","acknowledge"],["acocunt","account"],["acommodate","accommodate"],["acommodated","accommodated"],["acommodates","accommodates"],["acommodating","accommodating"],["acommodation","accommodation"],["acommpany","accompany"],["acommpanying","accompanying"],["acomodate","accommodate"],["acomodated","accommodated"],["acompanies","accompanies"],["acomplish","accomplish"],["acomplished","accomplished"],["acomplishment","accomplishment"],["acomplishments","accomplishments"],["acontiguous","a contiguous"],["acoording","according"],["acoordingly","accordingly"],["acording","according"],["acordingly","accordingly"],["acordinng","according"],["acorss","across"],["acorting","according"],["acount","account"],["acounts","accounts"],["acquaintence","acquaintance"],["acquaintences","acquaintances"],["acquiantence","acquaintance"],["acquiantences","acquaintances"],["acquiesence","acquiescence"],["acquisiton","acquisition"],["acquisitons","acquisitions"],["acquited","acquitted"],["acquition","acquisition"],["acqure","acquire"],["acqured","acquired"],["acqures","acquires"],["acquring","acquiring"],["acqusition","acquisition"],["acqusitions","acquisitions"],["acrage","acreage"],["acroos","across"],["acrosss","across"],["acrue","accrue"],["acrued","accrued"],["acssume","assume"],["acssumed","assumed"],["actal","actual"],["actally","actually"],["actaly","actually"],["actaul","actual"],["actaully","actually"],["actial","actual"],["actially","actually"],["actialy","actually"],["actiavte","activate"],["actiavted","activated"],["actiavtes","activates"],["actiavting","activating"],["actiavtion","activation"],["actiavtions","activations"],["actiavtor","activator"],["actibity","activity"],["acticate","activate"],["actice","active"],["actine","active"],["actiual","actual"],["activ","active"],["activaed","activated"],["activationg","activating"],["actived","activated"],["activeta","activate"],["activete","activate"],["activeted","activated"],["activetes","activates"],["activiate","activate"],["activies","activities"],["activites","activities"],["activitis","activities"],["activitites","activities"],["activitiy","activity"],["activley","actively"],["activly","actively"],["activste","activate"],["activsted","activated"],["activstes","activates"],["activtes","activates"],["activties","activities"],["activtion","activation"],["activty","activity"],["activw","active"],["activy","activity"],["actove","active"],["actuaal","actual"],["actuaally","actually"],["actuak","actual"],["actuakly","actually"],["actuallin","actually"],["actualy","actually"],["actualyl","actually"],["actuell","actual"],["actuion","action"],["actuionable","actionable"],["actul","actual"],["actullay","actually"],["actully","actually"],["actural","actual"],["acturally","actually"],["actusally","actually"],["actve","active"],["actzal","actual"],["acual","actual"],["acually","actually"],["acuired","acquired"],["acuires","acquires"],["acumulate","accumulate"],["acumulated","accumulated"],["acumulates","accumulates"],["acumulating","accumulating"],["acumulation","accumulation"],["acumulative","accumulative"],["acumulator","accumulator"],["acuqire","acquire"],["acuracy","accuracy"],["acurate","accurate"],["acused","accused"],["acustom","accustom"],["acustommed","accustomed"],["acutal","actual"],["acutally","actually"],["acutual","actual"],["adapated","adapted"],["adapater","adapter"],["adapaters","adapters"],["adapative","adaptive"],["adapdive","adaptive"],["adapive","adaptive"],["adaptaion","adaptation"],["adaptare","adapter"],["adapte","adapter"],["adaptee","adapted"],["adaptes","adapters"],["adaptibe","adaptive"],["adaquate","adequate"],["adaquately","adequately"],["adatper","adapter"],["adatpers","adapters"],["adavance","advance"],["adavanced","advanced"],["adbandon","abandon"],["addapt","adapt"],["addaptation","adaptation"],["addaptations","adaptations"],["addapted","adapted"],["addapting","adapting"],["addapts","adapts"],["addd","add"],["addded","added"],["addding","adding"],["adddress","address"],["adddresses","addresses"],["addds","adds"],["addedd","added"],["addeed","added"],["addersses","addresses"],["addert","assert"],["adderted","asserted"],["addess","address"],["addessed","addressed"],["addesses","addresses"],["addessing","addressing"],["addied","added"],["addig","adding"],["addiional","additional"],["addiiton","addition"],["addiitonall","additional"],["addional","additional"],["addionally","additionally"],["addiotion","addition"],["addiotional","additional"],["addiotionally","additionally"],["addiotions","additions"],["additianal","additional"],["additianally","additionally"],["additinal","additional"],["additinally","additionally"],["additioanal","additional"],["additioanally","additionally"],["additioanlly","additionally"],["additiona","additional"],["additionallly","additionally"],["additionals","additional"],["additionaly","additionally"],["additionalyy","additionally"],["additionnal","additional"],["additionnally","additionally"],["additionnaly","additionally"],["additoin","addition"],["additoinal","additional"],["additoinally","additionally"],["additoinaly","additionally"],["additon","addition"],["additonal","additional"],["additonally","additionally"],["additonaly","additionally"],["addjust","adjust"],["addjusted","adjusted"],["addjusting","adjusting"],["addjusts","adjusts"],["addmission","admission"],["addmit","admit"],["addopt","adopt"],["addopted","adopted"],["addpress","address"],["addrass","address"],["addrees","address"],["addreess","address"],["addrerss","address"],["addrerssed","addressed"],["addrersser","addresser"],["addrersses","addresses"],["addrerssing","addressing"],["addrersss","address"],["addrersssed","addressed"],["addrerssser","addresser"],["addrerssses","addresses"],["addrersssing","addressing"],["addres","address"],["addresable","addressable"],["addresed","addressed"],["addreses","addresses"],["addresess","addresses"],["addresing","addressing"],["addressess","addresses"],["addressings","addressing"],["addresss","address"],["addresssed","addressed"],["addressses","addresses"],["addresssing","addressing"],["addrress","address"],["addrss","address"],["addrssed","addressed"],["addrsses","addresses"],["addrssing","addressing"],["addted","added"],["addtion","addition"],["addtional","additional"],["addtionally","additionally"],["addtitional","additional"],["adecuate","adequate"],["aded","added"],["adequit","adequate"],["adevnture","adventure"],["adevntured","adventured"],["adevnturer","adventurer"],["adevnturers","adventurers"],["adevntures","adventures"],["adevnturing","adventuring"],["adhearing","adhering"],["adherance","adherence"],["adiacent","adjacent"],["adiditon","addition"],["adin","admin"],["ading","adding"],["adition","addition"],["aditional","additional"],["aditionally","additionally"],["aditionaly","additionally"],["aditionnal","additional"],["adivsories","advisories"],["adivsoriyes","advisories"],["adivsory","advisory"],["adjacentsy","adjacency"],["adjactend","adjacent"],["adjancent","adjacent"],["adjascent","adjacent"],["adjasence","adjacence"],["adjasencies","adjacencies"],["adjasensy","adjacency"],["adjasent","adjacent"],["adjast","adjust"],["adjcence","adjacence"],["adjcencies","adjacencies"],["adjcent","adjacent"],["adjcentcy","adjacency"],["adjsence","adjacence"],["adjsencies","adjacencies"],["adjsuted","adjusted"],["adjuscent","adjacent"],["adjusment","adjustment"],["adjustement","adjustment"],["adjustements","adjustments"],["adjustificat","justification"],["adjustification","justification"],["adjustmant","adjustment"],["adjustmants","adjustments"],["adjustmenet","adjustment"],["admendment","amendment"],["admi","admin"],["admininistrative","administrative"],["admininistrator","administrator"],["admininistrators","administrators"],["admininstrator","administrator"],["administation","administration"],["administator","administrator"],["administor","administrator"],["administraively","administratively"],["adminitrator","administrator"],["adminssion","admission"],["adminstered","administered"],["adminstrate","administrate"],["adminstration","administration"],["adminstrative","administrative"],["adminstrator","administrator"],["adminstrators","administrators"],["admisible","admissible"],["admissability","admissibility"],["admissable","admissible"],["admited","admitted"],["admitedly","admittedly"],["admn","admin"],["admnistrator","administrator"],["admnistrators","administrators"],["adn","and"],["adobted","adopted"],["adolecent","adolescent"],["adpapted","adapted"],["adpat","adapt"],["adpated","adapted"],["adpater","adapter"],["adpaters","adapters"],["adpats","adapts"],["adpter","adapter"],["adquire","acquire"],["adquired","acquired"],["adquires","acquires"],["adquiring","acquiring"],["adrea","area"],["adrerss","address"],["adrerssed","addressed"],["adrersser","addresser"],["adrersses","addresses"],["adrerssing","addressing"],["adres","address"],["adresable","addressable"],["adresing","addressing"],["adress","address"],["adressable","addressable"],["adresse","address"],["adressed","addressed"],["adresses","addresses"],["adressing","addressing"],["adresss","address"],["adressses","addresses"],["adrress","address"],["adrresses","addresses"],["adtodetect","autodetect"],["adusted","adjusted"],["adustment","adjustment"],["advanatage","advantage"],["advanatages","advantages"],["advanatge","advantage"],["advandced","advanced"],["advane","advance"],["advaned","advanced"],["advantagous","advantageous"],["advanved","advanced"],["adventages","advantages"],["adventrous","adventurous"],["adverised","advertised"],["advertice","advertise"],["adverticed","advertised"],["advertisment","advertisement"],["advertisments","advertisements"],["advertistment","advertisement"],["advertistments","advertisements"],["advertize","advertise"],["advertized","advertised"],["advertizes","advertises"],["advesary","adversary"],["advetise","advertise"],["adviced","advised"],["adviseable","advisable"],["advisoriyes","advisories"],["advizable","advisable"],["adwances","advances"],["aequidistant","equidistant"],["aequivalent","equivalent"],["aeriel","aerial"],["aeriels","aerials"],["aesily","easily"],["aesy","easy"],["aexs","axes"],["afair","affair"],["afaraid","afraid"],["afe","safe"],["afecting","affecting"],["afer","after"],["aferwards","afterwards"],["afetr","after"],["affecfted","affected"],["afficianados","aficionados"],["afficionado","aficionado"],["afficionados","aficionados"],["affilate","affiliate"],["affilates","affiliates"],["affilation","affiliation"],["affilations","affiliations"],["affilliate","affiliate"],["affinitied","affinities"],["affinitiy","affinity"],["affinitze","affinitize"],["affinties","affinities"],["affintiy","affinity"],["affintize","affinitize"],["affinty","affinity"],["affitnity","affinity"],["afforementioned","aforementioned"],["affortable","affordable"],["afforts","affords"],["affraid","afraid"],["afinity","affinity"],["afor","for"],["aforememtioned","aforementioned"],["aforementiond","aforementioned"],["aforementionned","aforementioned"],["aformentioned","aforementioned"],["afterall","after all"],["afterw","after"],["aftrer","after"],["aftzer","after"],["againnst","against"],["againsg","against"],["againt","against"],["againts","against"],["agaisnt","against"],["agaist","against"],["agancies","agencies"],["agancy","agency"],["aganist","against"],["agant","agent"],["aggaravates","aggravates"],["aggegate","aggregate"],["aggessive","aggressive"],["aggessively","aggressively"],["agggregate","aggregate"],["aggragate","aggregate"],["aggragator","aggregator"],["aggrated","aggregated"],["aggreagate","aggregate"],["aggreataon","aggregation"],["aggreate","aggregate"],["aggreated","aggregated"],["aggreation","aggregation"],["aggreations","aggregations"],["aggreed","agreed"],["aggreement","agreement"],["aggregatet","aggregated"],["aggregetor","aggregator"],["aggreggate","aggregate"],["aggregious","egregious"],["aggregrate","aggregate"],["aggregrated","aggregated"],["aggresive","aggressive"],["aggresively","aggressively"],["aggrevate","aggravate"],["aggrgate","aggregate"],["agian","again"],["agianst","against"],["agin","again"],["aginst","against"],["aglorithm","algorithm"],["aglorithms","algorithms"],["agorithm","algorithm"],["agrain","again"],["agravate","aggravate"],["agre","agree"],["agred","agreed"],["agreeement","agreement"],["agreemnet","agreement"],["agreemnets","agreements"],["agreemnt","agreement"],["agregate","aggregate"],["agregated","aggregated"],["agregates","aggregates"],["agregation","aggregation"],["agregator","aggregator"],["agreing","agreeing"],["agrement","agreement"],["agression","aggression"],["agressive","aggressive"],["agressively","aggressively"],["agressiveness","aggressiveness"],["agressivity","aggressivity"],["agressor","aggressor"],["agresssive","aggressive"],["agrgument","argument"],["agrguments","arguments"],["agricultue","agriculture"],["agriculure","agriculture"],["agricuture","agriculture"],["agrieved","aggrieved"],["agrresive","aggressive"],["agrument","argument"],["agruments","arguments"],["agsinst","against"],["agument","argument"],["agumented","augmented"],["aguments","arguments"],["aheared","adhered"],["ahev","have"],["ahlpa","alpha"],["ahlpas","alphas"],["ahppen","happen"],["ahve","have"],["aicraft","aircraft"],["aiffer","differ"],["ailgn","align"],["aiport","airport"],["airator","aerator"],["airbourne","airborne"],["aircaft","aircraft"],["aircrafts'","aircraft's"],["aircrafts","aircraft"],["airfow","airflow"],["airlfow","airflow"],["airloom","heirloom"],["airporta","airports"],["airrcraft","aircraft"],["aisian","Asian"],["aixs","axis"],["aizmuth","azimuth"],["ajacence","adjacence"],["ajacencies","adjacencies"],["ajacency","adjacency"],["ajacent","adjacent"],["ajacentcy","adjacency"],["ajasence","adjacence"],["ajasencies","adjacencies"],["ajative","adjective"],["ajcencies","adjacencies"],["ajsencies","adjacencies"],["ajurnment","adjournment"],["ajust","adjust"],["ajusted","adjusted"],["ajustement","adjustment"],["ajusting","adjusting"],["ajustment","adjustment"],["ajustments","adjustments"],["ake","ache"],["akkumulate","accumulate"],["akkumulated","accumulated"],["akkumulates","accumulates"],["akkumulating","accumulating"],["akkumulation","accumulation"],["akkumulative","accumulative"],["akkumulator","accumulator"],["aknowledge","acknowledge"],["aks","ask"],["aksed","asked"],["aktivate","activate"],["aktivated","activated"],["aktivates","activates"],["aktivating","activating"],["aktivation","activation"],["akumulate","accumulate"],["akumulated","accumulated"],["akumulates","accumulates"],["akumulating","accumulating"],["akumulation","accumulation"],["akumulative","accumulative"],["akumulator","accumulator"],["alaready","already"],["albiet","albeit"],["albumns","albums"],["alcemy","alchemy"],["alchohol","alcohol"],["alchoholic","alcoholic"],["alchol","alcohol"],["alcholic","alcoholic"],["alcohal","alcohol"],["alcoholical","alcoholic"],["aleady","already"],["aleays","always"],["aledge","allege"],["aledged","alleged"],["aledges","alleges"],["alegance","allegiance"],["alege","allege"],["aleged","alleged"],["alegience","allegiance"],["alegorical","allegorical"],["alernate","alternate"],["alernated","alternated"],["alernately","alternately"],["alernates","alternates"],["alers","alerts"],["aleviate","alleviate"],["aleviates","alleviates"],["aleviating","alleviating"],["alevt","alert"],["algebraical","algebraic"],["algebric","algebraic"],["algebrra","algebra"],["algee","algae"],["alghorithm","algorithm"],["alghoritm","algorithm"],["alghoritmic","algorithmic"],["alghoritmically","algorithmically"],["alghoritms","algorithms"],["algined","aligned"],["alginment","alignment"],["alginments","alignments"],["algohm","algorithm"],["algohmic","algorithmic"],["algohmically","algorithmically"],["algohms","algorithms"],["algoirthm","algorithm"],["algoirthmic","algorithmic"],["algoirthmically","algorithmically"],["algoirthms","algorithms"],["algoithm","algorithm"],["algoithmic","algorithmic"],["algoithmically","algorithmically"],["algoithms","algorithms"],["algolithm","algorithm"],["algolithmic","algorithmic"],["algolithmically","algorithmically"],["algolithms","algorithms"],["algoorithm","algorithm"],["algoorithmic","algorithmic"],["algoorithmically","algorithmically"],["algoorithms","algorithms"],["algoprithm","algorithm"],["algoprithmic","algorithmic"],["algoprithmically","algorithmically"],["algoprithms","algorithms"],["algorgithm","algorithm"],["algorgithmic","algorithmic"],["algorgithmically","algorithmically"],["algorgithms","algorithms"],["algorhithm","algorithm"],["algorhithmic","algorithmic"],["algorhithmically","algorithmically"],["algorhithms","algorithms"],["algorhitm","algorithm"],["algorhitmic","algorithmic"],["algorhitmically","algorithmically"],["algorhitms","algorithms"],["algorhtm","algorithm"],["algorhtmic","algorithmic"],["algorhtmically","algorithmically"],["algorhtms","algorithms"],["algorhythm","algorithm"],["algorhythmic","algorithmic"],["algorhythmically","algorithmically"],["algorhythms","algorithms"],["algorhytm","algorithm"],["algorhytmic","algorithmic"],["algorhytmically","algorithmically"],["algorhytms","algorithms"],["algorightm","algorithm"],["algorightmic","algorithmic"],["algorightmically","algorithmically"],["algorightms","algorithms"],["algorihm","algorithm"],["algorihmic","algorithmic"],["algorihmically","algorithmically"],["algorihms","algorithms"],["algorihtm","algorithm"],["algorihtmic","algorithmic"],["algorihtmically","algorithmically"],["algorihtms","algorithms"],["algoristhms","algorithms"],["algorith","algorithm"],["algorithem","algorithm"],["algorithemic","algorithmic"],["algorithemically","algorithmically"],["algorithems","algorithms"],["algorithic","algorithmic"],["algorithically","algorithmically"],["algorithim","algorithm"],["algorithimes","algorithms"],["algorithimic","algorithmic"],["algorithimically","algorithmically"],["algorithims","algorithms"],["algorithmes","algorithms"],["algorithmi","algorithm"],["algorithmical","algorithmically"],["algorithmm","algorithm"],["algorithmmic","algorithmic"],["algorithmmically","algorithmically"],["algorithmms","algorithms"],["algorithmn","algorithm"],["algorithmnic","algorithmic"],["algorithmnically","algorithmically"],["algorithmns","algorithms"],["algoriths","algorithms"],["algorithsmic","algorithmic"],["algorithsmically","algorithmically"],["algorithsms","algorithms"],["algoritm","algorithm"],["algoritmic","algorithmic"],["algoritmically","algorithmically"],["algoritms","algorithms"],["algoroithm","algorithm"],["algoroithmic","algorithmic"],["algoroithmically","algorithmically"],["algoroithms","algorithms"],["algororithm","algorithm"],["algororithmic","algorithmic"],["algororithmically","algorithmically"],["algororithms","algorithms"],["algorothm","algorithm"],["algorothmic","algorithmic"],["algorothmically","algorithmically"],["algorothms","algorithms"],["algorrithm","algorithm"],["algorrithmic","algorithmic"],["algorrithmically","algorithmically"],["algorrithms","algorithms"],["algorritm","algorithm"],["algorritmic","algorithmic"],["algorritmically","algorithmically"],["algorritms","algorithms"],["algorthim","algorithm"],["algorthimic","algorithmic"],["algorthimically","algorithmically"],["algorthims","algorithms"],["algorthin","algorithm"],["algorthinic","algorithmic"],["algorthinically","algorithmically"],["algorthins","algorithms"],["algorthm","algorithm"],["algorthmic","algorithmic"],["algorthmically","algorithmically"],["algorthms","algorithms"],["algorthn","algorithm"],["algorthnic","algorithmic"],["algorthnically","algorithmically"],["algorthns","algorithms"],["algorthym","algorithm"],["algorthymic","algorithmic"],["algorthymically","algorithmically"],["algorthyms","algorithms"],["algorthyn","algorithm"],["algorthynic","algorithmic"],["algorthynically","algorithmically"],["algorthyns","algorithms"],["algortihm","algorithm"],["algortihmic","algorithmic"],["algortihmically","algorithmically"],["algortihms","algorithms"],["algortim","algorithm"],["algortimic","algorithmic"],["algortimically","algorithmically"],["algortims","algorithms"],["algortism","algorithm"],["algortismic","algorithmic"],["algortismically","algorithmically"],["algortisms","algorithms"],["algortithm","algorithm"],["algortithmic","algorithmic"],["algortithmically","algorithmically"],["algortithms","algorithms"],["algoruthm","algorithm"],["algoruthmic","algorithmic"],["algoruthmically","algorithmically"],["algoruthms","algorithms"],["algorwwithm","algorithm"],["algorwwithmic","algorithmic"],["algorwwithmically","algorithmically"],["algorwwithms","algorithms"],["algorythem","algorithm"],["algorythemic","algorithmic"],["algorythemically","algorithmically"],["algorythems","algorithms"],["algorythm","algorithm"],["algorythmic","algorithmic"],["algorythmically","algorithmically"],["algorythms","algorithms"],["algothitm","algorithm"],["algothitmic","algorithmic"],["algothitmically","algorithmically"],["algothitms","algorithms"],["algotighm","algorithm"],["algotighmic","algorithmic"],["algotighmically","algorithmically"],["algotighms","algorithms"],["algotihm","algorithm"],["algotihmic","algorithmic"],["algotihmically","algorithmically"],["algotihms","algorithms"],["algotirhm","algorithm"],["algotirhmic","algorithmic"],["algotirhmically","algorithmically"],["algotirhms","algorithms"],["algotithm","algorithm"],["algotithmic","algorithmic"],["algotithmically","algorithmically"],["algotithms","algorithms"],["algotrithm","algorithm"],["algotrithmic","algorithmic"],["algotrithmically","algorithmically"],["algotrithms","algorithms"],["alha","alpha"],["alhabet","alphabet"],["alhabetical","alphabetical"],["alhabetically","alphabetically"],["alhabeticaly","alphabetically"],["alhabets","alphabets"],["alhapet","alphabet"],["alhapetical","alphabetical"],["alhapetically","alphabetically"],["alhapeticaly","alphabetically"],["alhapets","alphabets"],["alhough","although"],["alhpa","alpha"],["alhpabet","alphabet"],["alhpabetical","alphabetical"],["alhpabetically","alphabetically"],["alhpabeticaly","alphabetically"],["alhpabets","alphabets"],["aliagn","align"],["aliasas","aliases"],["aliasses","aliases"],["alientating","alienating"],["aliged","aligned"],["alighned","aligned"],["alighnment","alignment"],["aligin","align"],["aligined","aligned"],["aligining","aligning"],["aliginment","alignment"],["aligins","aligns"],["aligment","alignment"],["aligments","alignments"],["alignation","alignment"],["alignd","aligned"],["aligne","align"],["alignement","alignment"],["alignemnt","alignment"],["alignemnts","alignments"],["alignemt","alignment"],["alignes","aligns"],["alignmant","alignment"],["alignmen","alignment"],["alignmenet","alignment"],["alignmenets","alignments"],["alignmenton","alignment on"],["alignmet","alignment"],["alignmets","alignments"],["alignmment","alignment"],["alignmments","alignments"],["alignmnet","alignment"],["alignmnt","alignment"],["alignrigh","alignright"],["alined","aligned"],["alinged","aligned"],["alinging","aligning"],["alingment","alignment"],["alinment","alignment"],["alinments","alignments"],["alising","aliasing"],["allcate","allocate"],["allcateing","allocating"],["allcater","allocator"],["allcaters","allocators"],["allcating","allocating"],["allcation","allocation"],["allcator","allocator"],["allcoate","allocate"],["allcoated","allocated"],["allcoateing","allocating"],["allcoateng","allocating"],["allcoater","allocator"],["allcoaters","allocators"],["allcoating","allocating"],["allcoation","allocation"],["allcoator","allocator"],["allcoators","allocators"],["alledge","allege"],["alledged","alleged"],["alledgedly","allegedly"],["alledges","alleges"],["allegedely","allegedly"],["allegedy","allegedly"],["allegely","allegedly"],["allegence","allegiance"],["allegience","allegiance"],["allif","all if"],["allign","align"],["alligned","aligned"],["allignement","alignment"],["allignemnt","alignment"],["alligning","aligning"],["allignment","alignment"],["allignmenterror","alignmenterror"],["allignments","alignments"],["alligns","aligns"],["alliviate","alleviate"],["allk","all"],["alllocate","allocate"],["alllocation","allocation"],["alllow","allow"],["alllowed","allowed"],["alllows","allows"],["allmost","almost"],["alloacate","allocate"],["allocae","allocate"],["allocaed","allocated"],["allocaes","allocates"],["allocagtor","allocator"],["allocaiing","allocating"],["allocaing","allocating"],["allocaion","allocation"],["allocaions","allocations"],["allocaite","allocate"],["allocaites","allocates"],["allocaiting","allocating"],["allocaition","allocation"],["allocaitions","allocations"],["allocaiton","allocation"],["allocaitons","allocations"],["allocal","allocate"],["allocarion","allocation"],["allocat","allocate"],["allocatbale","allocatable"],["allocatedi","allocated"],["allocatedp","allocated"],["allocateing","allocating"],["allocateng","allocating"],["allocaton","allocation"],["allocatoor","allocator"],["allocatote","allocate"],["allocatrd","allocated"],["allocattion","allocation"],["alloco","alloc"],["allocos","allocs"],["allocte","allocate"],["allocted","allocated"],["allocting","allocating"],["alloction","allocation"],["alloctions","allocations"],["alloctor","allocator"],["alloews","allows"],["allong","along"],["alloocates","allocates"],["allopone","allophone"],["allopones","allophones"],["allos","allows"],["alloted","allotted"],["allowence","allowance"],["allowences","allowances"],["allpication","application"],["allpications","applications"],["allso","also"],["allthough","although"],["alltough","although"],["allways","always"],["allwo","allow"],["allwos","allows"],["allws","allows"],["allwys","always"],["almoast","almost"],["almostly","almost"],["almsot","almost"],["alo","also"],["alocatable","allocatable"],["alocate","allocate"],["alocated","allocated"],["alocates","allocates"],["alocating","allocating"],["alocations","allocations"],["alochol","alcohol"],["alog","along"],["alogirhtm","algorithm"],["alogirhtmic","algorithmic"],["alogirhtmically","algorithmically"],["alogirhtms","algorithms"],["alogirthm","algorithm"],["alogirthmic","algorithmic"],["alogirthmically","algorithmically"],["alogirthms","algorithms"],["alogned","aligned"],["alogorithms","algorithms"],["alogrithm","algorithm"],["alogrithmic","algorithmic"],["alogrithmically","algorithmically"],["alogrithms","algorithms"],["alomst","almost"],["aloows","allows"],["alorithm","algorithm"],["alos","also"],["alotted","allotted"],["alow","allow"],["alowed","allowed"],["alowing","allowing"],["alows","allows"],["alpabet","alphabet"],["alpabetic","alphabetic"],["alpabetical","alphabetical"],["alpabets","alphabets"],["alpah","alpha"],["alpahabetical","alphabetical"],["alpahbetically","alphabetically"],["alph","alpha"],["alpha-numeric","alphanumeric"],["alphabeticaly","alphabetically"],["alphabeticly","alphabetical"],["alphapeicall","alphabetical"],["alphapeticaly","alphabetically"],["alrady","already"],["alraedy","already"],["alread","already"],["alreadly","already"],["alreadt","already"],["alreasy","already"],["alreay","already"],["alreayd","already"],["alreday","already"],["alredy","already"],["alrelady","already"],["alrms","alarms"],["alrogithm","algorithm"],["alrteady","already"],["als","also"],["alsmost","almost"],["alsot","also"],["alsready","already"],["altenative","alternative"],["alterated","altered"],["alterately","alternately"],["alterative","alternative"],["alteratives","alternatives"],["alterior","ulterior"],["alternaive","alternative"],["alternaives","alternatives"],["alternarive","alternative"],["alternarives","alternatives"],["alternatievly","alternatively"],["alternativey","alternatively"],["alternativley","alternatively"],["alternativly","alternatively"],["alternatve","alternative"],["alternavtely","alternatively"],["alternavtive","alternative"],["alternavtives","alternatives"],["alternetive","alternative"],["alternetives","alternatives"],["alternitive","alternative"],["alternitively","alternatively"],["alternitiveness","alternativeness"],["alternitives","alternatives"],["alternitivly","alternatively"],["altetnative","alternative"],["altho","although"],["althogh","although"],["althorithm","algorithm"],["althorithmic","algorithmic"],["althorithmically","algorithmically"],["althorithms","algorithms"],["althoug","although"],["althought","although"],["althougth","although"],["althouth","although"],["altitide","altitude"],["altitute","altitude"],["altogehter","altogether"],["altough","although"],["altought","although"],["altready","already"],["alue","value"],["alvorithm","algorithm"],["alvorithmic","algorithmic"],["alvorithmically","algorithmically"],["alvorithms","algorithms"],["alwais","always"],["alwas","always"],["alwast","always"],["alwasy","always"],["alwasys","always"],["alwauys","always"],["alway","always"],["alwyas","always"],["alwys","always"],["alyways","always"],["amacing","amazing"],["amacingly","amazingly"],["amalgomated","amalgamated"],["amatuer","amateur"],["amazaing","amazing"],["ambedded","embedded"],["ambibuity","ambiguity"],["ambien","ambient"],["ambigious","ambiguous"],["ambigous","ambiguous"],["ambiguious","ambiguous"],["ambiguitiy","ambiguity"],["ambiguos","ambiguous"],["ambitous","ambitious"],["ambuguity","ambiguity"],["ambulence","ambulance"],["ambulences","ambulances"],["amdgput","amdgpu"],["amendement","amendment"],["amendmant","amendment"],["Amercia","America"],["amerliorate","ameliorate"],["amgle","angle"],["amgles","angles"],["amiguous","ambiguous"],["amke","make"],["amking","making"],["ammend","amend"],["ammended","amended"],["ammending","amending"],["ammendment","amendment"],["ammendments","amendments"],["ammends","amends"],["ammong","among"],["ammongst","amongst"],["ammortizes","amortizes"],["ammoung","among"],["ammoungst","amongst"],["ammount","amount"],["ammused","amused"],["amny","many"],["amongs","among"],["amonst","amongst"],["amonut","amount"],["amound","amount"],["amounds","amounts"],["amoung","among"],["amoungst","amongst"],["amout","amount"],["amoutn","amount"],["amoutns","amounts"],["amouts","amounts"],["amperstands","ampersands"],["amphasis","emphasis"],["amplifer","amplifier"],["amplifyer","amplifier"],["amplitud","amplitude"],["ampty","empty"],["amuch","much"],["amung","among"],["amunition","ammunition"],["amunt","amount"],["analagous","analogous"],["analagus","analogous"],["analaog","analog"],["analgous","analogous"],["analig","analog"],["analise","analyse"],["analised","analysed"],["analiser","analyser"],["analising","analysing"],["analisis","analysis"],["analitic","analytic"],["analitical","analytical"],["analitically","analytically"],["analiticaly","analytically"],["analize","analyze"],["analized","analyzed"],["analizer","analyzer"],["analizes","analyzes"],["analizing","analyzing"],["analogeous","analogous"],["analogicaly","analogically"],["analoguous","analogous"],["analoguously","analogously"],["analogus","analogous"],["analouge","analogue"],["analouges","analogues"],["analsye","analyse"],["analsyed","analysed"],["analsyer","analyser"],["analsyers","analysers"],["analsyes","analyses"],["analsying","analysing"],["analsyis","analysis"],["analsyt","analyst"],["analsyts","analysts"],["analyis","analysis"],["analysator","analyser"],["analysus","analysis"],["analysy","analysis"],["analyticaly","analytically"],["analyticly","analytically"],["analyzator","analyzer"],["analzye","analyze"],["analzyed","analyzed"],["analzyer","analyzer"],["analzyers","analyzers"],["analzyes","analyzes"],["analzying","analyzing"],["ananlog","analog"],["anarchim","anarchism"],["anarchistm","anarchism"],["anarquism","anarchism"],["anarquist","anarchist"],["anaylse","analyse"],["anaylsed","analysed"],["anaylser","analyser"],["anaylses","analyses"],["anaylsis","analysis"],["anaylsises","analysises"],["anayltic","analytic"],["anayltical","analytical"],["anayltically","analytically"],["anayltics","analytics"],["anaylze","analyze"],["anaylzed","analyzed"],["anaylzer","analyzer"],["anaylzes","analyzes"],["anbd","and"],["ancapsulate","encapsulate"],["ancapsulated","encapsulated"],["ancapsulates","encapsulates"],["ancapsulating","encapsulating"],["ancapsulation","encapsulation"],["ancesetor","ancestor"],["ancesetors","ancestors"],["ancester","ancestor"],["ancesteres","ancestors"],["ancesters","ancestors"],["ancestore","ancestor"],["ancestores","ancestors"],["ancestory","ancestry"],["anchestor","ancestor"],["anchestors","ancestors"],["anchord","anchored"],["ancilliary","ancillary"],["andd","and"],["andoid","android"],["andoids","androids"],["andorid","android"],["andorids","androids"],["andriod","android"],["andriods","androids"],["androgenous","androgynous"],["androgeny","androgyny"],["androidextra","androidextras"],["androind","android"],["androinds","androids"],["andthe","and the"],["ane","and"],["anevironment","environment"],["anevironments","environments"],["angluar","angular"],["anhoter","another"],["anid","and"],["anihilation","annihilation"],["animaing","animating"],["animaite","animate"],["animaiter","animator"],["animaiters","animators"],["animaiton","animation"],["animaitons","animations"],["animaitor","animator"],["animaitors","animators"],["animaton","animation"],["animatonic","animatronic"],["animete","animate"],["animeted","animated"],["animetion","animation"],["animetions","animations"],["animets","animates"],["animore","anymore"],["aninate","animate"],["anination","animation"],["aniother","any other"],["anisotrophically","anisotropically"],["anitaliasing","antialiasing"],["anithing","anything"],["anitialising","antialiasing"],["anitime","anytime"],["anitrez","antirez"],["aniversary","anniversary"],["aniway","anyway"],["aniwhere","anywhere"],["anlge","angle"],["anlysis","analysis"],["anlyzing","analyzing"],["annayed","annoyed"],["annaying","annoying"],["annd","and"],["anniversery","anniversary"],["annnounce","announce"],["annoation","annotation"],["annoint","anoint"],["annointed","anointed"],["annointing","anointing"],["annoints","anoints"],["annonate","annotate"],["annonated","annotated"],["annonates","annotates"],["annonce","announce"],["annonced","announced"],["annoncement","announcement"],["annoncements","announcements"],["annonces","announces"],["annoncing","announcing"],["annonymous","anonymous"],["annotaion","annotation"],["annotaions","annotations"],["annoted","annotated"],["annother","another"],["annouce","announce"],["annouced","announced"],["annoucement","announcement"],["annoucements","announcements"],["annouces","announces"],["annoucing","announcing"],["annouing","annoying"],["announcment","announcement"],["announcments","announcements"],["announed","announced"],["announement","announcement"],["announements","announcements"],["annoymous","anonymous"],["annoyying","annoying"],["annualy","annually"],["annuled","annulled"],["annyoingly","annoyingly"],["anoher","another"],["anohter","another"],["anologon","analogon"],["anomally","anomaly"],["anomolies","anomalies"],["anomolous","anomalous"],["anomoly","anomaly"],["anonimity","anonymity"],["anononymous","anonymous"],["anonther","another"],["anonymouse","anonymous"],["anonyms","anonymous"],["anonymus","anonymous"],["anormalies","anomalies"],["anormaly","abnormally"],["anotate","annotate"],["anotated","annotated"],["anotates","annotates"],["anotating","annotating"],["anotation","annotation"],["anotations","annotations"],["anoter","another"],["anothe","another"],["anothers","another"],["anothr","another"],["anounce","announce"],["anounced","announced"],["anouncement","announcement"],["anount","amount"],["anoying","annoying"],["anoymous","anonymous"],["anroid","android"],["ansalisation","nasalisation"],["ansalization","nasalization"],["anser","answer"],["ansester","ancestor"],["ansesters","ancestors"],["ansestor","ancestor"],["ansestors","ancestors"],["answhare","answer"],["answhared","answered"],["answhareing","answering"],["answhares","answers"],["answharing","answering"],["answhars","answers"],["ansynchronous","asynchronous"],["antaliasing","antialiasing"],["antartic","antarctic"],["antecedant","antecedent"],["anteena","antenna"],["anteenas","antennas"],["anthing","anything"],["anthings","anythings"],["anthor","another"],["anthromorphization","anthropomorphization"],["anthropolgist","anthropologist"],["anthropolgy","anthropology"],["antialialised","antialiased"],["antialising","antialiasing"],["antiapartheid","anti-apartheid"],["anticpate","anticipate"],["antry","entry"],["antyhing","anything"],["anual","annual"],["anually","annually"],["anulled","annulled"],["anumber","a number"],["anuwhere","anywhere"],["anway","anyway"],["anways","anyway"],["anwhere","anywhere"],["anwser","answer"],["anwsered","answered"],["anwsering","answering"],["anwsers","answers"],["anyawy","anyway"],["anyhing","anything"],["anyhting","anything"],["anyhwere","anywhere"],["anylsing","analysing"],["anylzing","analyzing"],["anynmore","anymore"],["anyother","any other"],["anytghing","anything"],["anythig","anything"],["anythign","anything"],["anythimng","anything"],["anytiem","anytime"],["anytihng","anything"],["anyting","anything"],["anytning","anything"],["anytrhing","anything"],["anytthing","anything"],["anytying","anything"],["anywere","anywhere"],["anyy","any"],["aoache","apache"],["aond","and"],["aoto","auto"],["aotomate","automate"],["aotomated","automated"],["aotomatic","automatic"],["aotomatical","automatic"],["aotomaticall","automatically"],["aotomatically","automatically"],["aotomation","automation"],["aovid","avoid"],["apach","apache"],["apapted","adapted"],["aparant","apparent"],["aparantly","apparently"],["aparent","apparent"],["aparently","apparently"],["aparment","apartment"],["apdated","updated"],["apeal","appeal"],["apealed","appealed"],["apealing","appealing"],["apeals","appeals"],["apear","appear"],["apeared","appeared"],["apears","appears"],["apect","aspect"],["apects","aspects"],["apeends","appends"],["apend","append"],["apendage","appendage"],["apended","appended"],["apender","appender"],["apendices","appendices"],["apending","appending"],["apendix","appendix"],["apenines","Apennines"],["aperatures","apertures"],["aperure","aperture"],["aperures","apertures"],["apeture","aperture"],["apetures","apertures"],["apilogue","epilogue"],["aplha","alpha"],["aplication","application"],["aplications","applications"],["aplied","applied"],["aplies","applies"],["apllicatin","application"],["apllicatins","applications"],["apllication","application"],["apllications","applications"],["apllied","applied"],["apllies","applies"],["aplly","apply"],["apllying","applying"],["aply","apply"],["aplyed","applied"],["aplying","applying"],["apointed","appointed"],["apointing","appointing"],["apointment","appointment"],["apoints","appoints"],["apolegetic","apologetic"],["apolegetics","apologetics"],["aportionable","apportionable"],["apostrophie","apostrophe"],["apostrophies","apostrophes"],["appar","appear"],["apparant","apparent"],["apparantly","apparently"],["appared","appeared"],["apparence","appearance"],["apparenlty","apparently"],["apparenly","apparently"],["appares","appears"],["apparoches","approaches"],["appars","appears"],["appart","apart"],["appartment","apartment"],["appartments","apartments"],["appearaing","appearing"],["appearantly","apparently"],["appeareance","appearance"],["appearence","appearance"],["appearences","appearances"],["appearently","apparently"],["appeares","appears"],["appearning","appearing"],["appearrs","appears"],["appeciate","appreciate"],["appeded","appended"],["appeding","appending"],["appedn","append"],["appen","append"],["appendend","appended"],["appendent","appended"],["appendex","appendix"],["appendig","appending"],["appendign","appending"],["appendt","append"],["appeneded","appended"],["appenines","Apennines"],["appens","appends"],["appent","append"],["apperance","appearance"],["apperances","appearances"],["apperar","appear"],["apperarance","appearance"],["apperarances","appearances"],["apperared","appeared"],["apperaring","appearing"],["apperars","appears"],["appereance","appearance"],["appereances","appearances"],["appered","appeared"],["apperent","apparent"],["apperently","apparently"],["appers","appears"],["apperture","aperture"],["appicability","applicability"],["appicable","applicable"],["appicaliton","application"],["appicalitons","applications"],["appicant","applicant"],["appication","application"],["appication-specific","application-specific"],["appications","applications"],["appicative","applicative"],["appied","applied"],["appies","applies"],["applay","apply"],["applcation","application"],["applcations","applications"],["appliable","applicable"],["appliacable","applicable"],["appliaction","application"],["appliactions","applications"],["appliation","application"],["appliations","applications"],["applicabel","applicable"],["applicaion","application"],["applicaions","applications"],["applicaiton","application"],["applicaitons","applications"],["applicance","appliance"],["applicapility","applicability"],["applicaple","applicable"],["applicatable","applicable"],["applicaten","application"],["applicatin","application"],["applicatins","applications"],["applicatio","application"],["applicationb","application"],["applicatios","applications"],["applicatiosn","applications"],["applicaton","application"],["applicatons","applications"],["appliction","application"],["applictions","applications"],["applide","applied"],["applikation","application"],["applikations","applications"],["appllied","applied"],["applly","apply"],["applyable","applicable"],["applycable","applicable"],["applyed","applied"],["applyes","applies"],["applyied","applied"],["applyig","applying"],["applys","applies"],["applyting","applying"],["appned","append"],["appologies","apologies"],["appology","apology"],["appon","upon"],["appopriate","appropriate"],["apporach","approach"],["apporached","approached"],["apporaches","approaches"],["apporaching","approaching"],["apporiate","appropriate"],["apporoximate","approximate"],["apporoximated","approximated"],["apporpiate","appropriate"],["apporpriate","appropriate"],["apporpriated","appropriated"],["apporpriately","appropriately"],["apporpriates","appropriates"],["apporpriating","appropriating"],["apporpriation","appropriation"],["apporpriations","appropriations"],["apporval","approval"],["apporve","approve"],["apporved","approved"],["apporves","approves"],["apporving","approving"],["appoval","approval"],["appove","approve"],["appoved","approved"],["appoves","approves"],["appoving","approving"],["appoximate","approximate"],["appoximately","approximately"],["appoximates","approximates"],["appoximation","approximation"],["appoximations","approximations"],["apppear","appear"],["apppears","appears"],["apppend","append"],["apppends","appends"],["appplet","applet"],["appplication","application"],["appplications","applications"],["appplying","applying"],["apppriate","appropriate"],["appproach","approach"],["apppropriate","appropriate"],["appraoch","approach"],["appraochable","approachable"],["appraoched","approached"],["appraoches","approaches"],["appraoching","approaching"],["apprearance","appearance"],["apprently","apparently"],["appreteate","appreciate"],["appreteated","appreciated"],["appretiate","appreciate"],["appretiated","appreciated"],["appretiates","appreciates"],["appretiating","appreciating"],["appretiation","appreciation"],["appretiative","appreciative"],["apprieciate","appreciate"],["apprieciated","appreciated"],["apprieciates","appreciates"],["apprieciating","appreciating"],["apprieciation","appreciation"],["apprieciative","appreciative"],["appriopriate","appropriate"],["appripriate","appropriate"],["appriproate","appropriate"],["apprixamate","approximate"],["apprixamated","approximated"],["apprixamately","approximately"],["apprixamates","approximates"],["apprixamating","approximating"],["apprixamation","approximation"],["apprixamations","approximations"],["appriximate","approximate"],["appriximated","approximated"],["appriximately","approximately"],["appriximates","approximates"],["appriximating","approximating"],["appriximation","approximation"],["appriximations","approximations"],["approachs","approaches"],["approbiate","appropriate"],["approch","approach"],["approche","approach"],["approched","approached"],["approches","approaches"],["approching","approaching"],["approiate","appropriate"],["approopriate","appropriate"],["approoximate","approximate"],["approoximately","approximately"],["approoximates","approximates"],["approoximation","approximation"],["approoximations","approximations"],["approperiate","appropriate"],["appropiate","appropriate"],["appropiately","appropriately"],["approppriately","appropriately"],["appropraite","appropriate"],["appropraitely","appropriately"],["approprate","appropriate"],["approprated","appropriated"],["approprately","appropriately"],["appropration","appropriation"],["approprations","appropriations"],["appropriage","appropriate"],["appropriatedly","appropriately"],["appropriatee","appropriate"],["appropriatly","appropriately"],["appropriatness","appropriateness"],["appropriete","appropriate"],["appropritae","appropriate"],["appropritate","appropriate"],["appropritately","appropriately"],["approprite","appropriate"],["approproate","appropriate"],["appropropiate","appropriate"],["appropropiately","appropriately"],["appropropreate","appropriate"],["appropropriate","appropriate"],["approproximate","approximate"],["approproximately","approximately"],["approproximates","approximates"],["approproximation","approximation"],["approproximations","approximations"],["approprpiate","appropriate"],["approriate","appropriate"],["approriately","appropriately"],["approrpriate","appropriate"],["approrpriately","appropriately"],["approuval","approval"],["approuve","approve"],["approuved","approved"],["approuves","approves"],["approuving","approving"],["approvement","approval"],["approxamate","approximate"],["approxamately","approximately"],["approxamates","approximates"],["approxamation","approximation"],["approxamations","approximations"],["approxamatly","approximately"],["approxametely","approximately"],["approxiamte","approximate"],["approxiamtely","approximately"],["approxiamtes","approximates"],["approxiamtion","approximation"],["approxiamtions","approximations"],["approxiate","approximate"],["approxiately","approximately"],["approxiates","approximates"],["approxiation","approximation"],["approxiations","approximations"],["approximatively","approximately"],["approximatly","approximately"],["approximed","approximated"],["approximetely","approximately"],["approximitely","approximately"],["approxmate","approximate"],["approxmately","approximately"],["approxmates","approximates"],["approxmation","approximation"],["approxmations","approximations"],["approxmimation","approximation"],["apprpriate","appropriate"],["apprpriately","appropriately"],["appy","apply"],["appying","applying"],["apreciate","appreciate"],["apreciated","appreciated"],["apreciates","appreciates"],["apreciating","appreciating"],["apreciation","appreciation"],["apreciative","appreciative"],["aprehensive","apprehensive"],["apreteate","appreciate"],["apreteated","appreciated"],["apreteating","appreciating"],["apretiate","appreciate"],["apretiated","appreciated"],["apretiates","appreciates"],["apretiating","appreciating"],["apretiation","appreciation"],["apretiative","appreciative"],["aproach","approach"],["aproached","approached"],["aproaches","approaches"],["aproaching","approaching"],["aproch","approach"],["aproched","approached"],["aproches","approaches"],["aproching","approaching"],["aproove","approve"],["aprooved","approved"],["apropiate","appropriate"],["apropiately","appropriately"],["apropriate","appropriate"],["apropriately","appropriately"],["aproval","approval"],["aproximate","approximate"],["aproximately","approximately"],["aproximates","approximates"],["aproximation","approximation"],["aproximations","approximations"],["aprrovement","approval"],["aprroximate","approximate"],["aprroximately","approximately"],["aprroximates","approximates"],["aprroximation","approximation"],["aprroximations","approximations"],["aprtment","apartment"],["aqain","again"],["aqcuire","acquire"],["aqcuired","acquired"],["aqcuires","acquires"],["aqcuiring","acquiring"],["aquaduct","aqueduct"],["aquaint","acquaint"],["aquaintance","acquaintance"],["aquainted","acquainted"],["aquainting","acquainting"],["aquaints","acquaints"],["aquiantance","acquaintance"],["aquire","acquire"],["aquired","acquired"],["aquires","acquires"],["aquiring","acquiring"],["aquisition","acquisition"],["aquisitions","acquisitions"],["aquit","acquit"],["aquitted","acquitted"],["arameters","parameters"],["aranged","arranged"],["arangement","arrangement"],["araound","around"],["ararbic","arabic"],["aray","array"],["arays","arrays"],["arbiatraily","arbitrarily"],["arbiatray","arbitrary"],["arbibtarily","arbitrarily"],["arbibtary","arbitrary"],["arbibtrarily","arbitrarily"],["arbibtrary","arbitrary"],["arbiitrarily","arbitrarily"],["arbiitrary","arbitrary"],["arbirarily","arbitrarily"],["arbirary","arbitrary"],["arbiratily","arbitrarily"],["arbiraty","arbitrary"],["arbirtarily","arbitrarily"],["arbirtary","arbitrary"],["arbirtrarily","arbitrarily"],["arbirtrary","arbitrary"],["arbitarary","arbitrary"],["arbitarily","arbitrarily"],["arbitary","arbitrary"],["arbitiarily","arbitrarily"],["arbitiary","arbitrary"],["arbitiraly","arbitrarily"],["arbitiray","arbitrary"],["arbitrailly","arbitrarily"],["arbitraily","arbitrarily"],["arbitraion","arbitration"],["arbitrairly","arbitrarily"],["arbitrairy","arbitrary"],["arbitral","arbitrary"],["arbitralily","arbitrarily"],["arbitrally","arbitrarily"],["arbitralrily","arbitrarily"],["arbitralry","arbitrary"],["arbitraly","arbitrary"],["arbitrarion","arbitration"],["arbitraryily","arbitrarily"],["arbitraryly","arbitrary"],["arbitratily","arbitrarily"],["arbitratiojn","arbitration"],["arbitraton","arbitration"],["arbitratrily","arbitrarily"],["arbitratrion","arbitration"],["arbitratry","arbitrary"],["arbitraty","arbitrary"],["arbitray","arbitrary"],["arbitriarily","arbitrarily"],["arbitriary","arbitrary"],["arbitrily","arbitrarily"],["arbitrion","arbitration"],["arbitriraly","arbitrarily"],["arbitriray","arbitrary"],["arbitrition","arbitration"],["arbitrtily","arbitrarily"],["arbitrty","arbitrary"],["arbitry","arbitrary"],["arbitryarily","arbitrarily"],["arbitryary","arbitrary"],["arbitual","arbitrary"],["arbitually","arbitrarily"],["arbitualy","arbitrary"],["arbituarily","arbitrarily"],["arbituary","arbitrary"],["arbiturarily","arbitrarily"],["arbiturary","arbitrary"],["arbort","abort"],["arborted","aborted"],["arborting","aborting"],["arborts","aborts"],["arbritary","arbitrary"],["arbritrarily","arbitrarily"],["arbritrary","arbitrary"],["arbtirarily","arbitrarily"],["arbtirary","arbitrary"],["arbtrarily","arbitrarily"],["arbtrary","arbitrary"],["arbutrarily","arbitrarily"],["arbutrary","arbitrary"],["arch-dependet","arch-dependent"],["arch-independet","arch-independent"],["archaelogical","archaeological"],["archaelogists","archaeologists"],["archaelogy","archaeology"],["archetect","architect"],["archetects","architects"],["archetectural","architectural"],["archetecturally","architecturally"],["archetecture","architecture"],["archiac","archaic"],["archictect","architect"],["archictecture","architecture"],["archictectures","architectures"],["archicture","architecture"],["archiecture","architecture"],["archiectures","architectures"],["archimedian","archimedean"],["architct","architect"],["architcts","architects"],["architcture","architecture"],["architctures","architectures"],["architecht","architect"],["architechts","architects"],["architechturally","architecturally"],["architechture","architecture"],["architechtures","architectures"],["architectual","architectural"],["architectur","architecture"],["architecturs","architectures"],["architecturse","architectures"],["architecure","architecture"],["architecures","architectures"],["architecutre","architecture"],["architecutres","architectures"],["architecuture","architecture"],["architecutures","architectures"],["architetcure","architecture"],["architetcures","architectures"],["architeture","architecture"],["architetures","architectures"],["architure","architecture"],["architures","architectures"],["archiv","archive"],["archivel","archival"],["archor","anchor"],["archtecture","architecture"],["archtectures","architectures"],["archtiecture","architecture"],["archtiectures","architectures"],["archtitecture","architecture"],["archtitectures","architectures"],["archtype","archetype"],["archtypes","archetypes"],["archvie","archive"],["archvies","archives"],["archving","archiving"],["arcitecture","architecture"],["arcitectures","architectures"],["arcive","archive"],["arcived","archived"],["arciver","archiver"],["arcives","archives"],["arciving","archiving"],["arcticle","article"],["Ardiuno","Arduino"],["are'nt","aren't"],["aready","already"],["areea","area"],["aren's","aren't"],["aren;t","aren't"],["arent'","aren't"],["arent","aren't"],["arent;","aren't"],["areodynamics","aerodynamics"],["argement","argument"],["argements","arguments"],["argemnt","argument"],["argemnts","arguments"],["argment","argument"],["argments","arguments"],["argmument","argument"],["argmuments","arguments"],["argreement","agreement"],["argreements","agreements"],["argubly","arguably"],["arguement","argument"],["arguements","arguments"],["arguemnt","argument"],["arguemnts","arguments"],["arguemtn","argument"],["arguemtns","arguments"],["arguents","arguments"],["argumant","argument"],["argumants","arguments"],["argumeent","argument"],["argumeents","arguments"],["argumement","argument"],["argumements","arguments"],["argumemnt","argument"],["argumemnts","arguments"],["argumeng","argument"],["argumengs","arguments"],["argumens","arguments"],["argumenst","arguments"],["argumentents","arguments"],["argumeny","argument"],["argumet","argument"],["argumetn","argument"],["argumetns","arguments"],["argumets","arguments"],["argumnet","argument"],["argumnets","arguments"],["argumnt","argument"],["argumnts","arguments"],["arhive","archive"],["arhives","archives"],["aribitary","arbitrary"],["aribiter","arbiter"],["aribrary","arbitrary"],["aribtrarily","arbitrarily"],["aribtrary","arbitrary"],["ariflow","airflow"],["arised","arose"],["arithemetic","arithmetic"],["arithemtic","arithmetic"],["arithmatic","arithmetic"],["arithmentic","arithmetic"],["arithmetc","arithmetic"],["arithmethic","arithmetic"],["arithmitic","arithmetic"],["aritmetic","arithmetic"],["aritrary","arbitrary"],["aritst","artist"],["arival","arrival"],["arive","arrive"],["arlready","already"],["armamant","armament"],["armistace","armistice"],["armonic","harmonic"],["arn't","aren't"],["arne't","aren't"],["arogant","arrogant"],["arogent","arrogant"],["aronud","around"],["aroud","around"],["aroudn","around"],["arouind","around"],["arounf","around"],["aroung","around"],["arount","around"],["arquitecture","architecture"],["arquitectures","architectures"],["arraay","array"],["arragement","arrangement"],["arraival","arrival"],["arral","array"],["arranable","arrangeable"],["arrance","arrange"],["arrane","arrange"],["arraned","arranged"],["arranement","arrangement"],["arranements","arrangements"],["arranent","arrangement"],["arranents","arrangements"],["arranes","arranges"],["arrang","arrange"],["arrangable","arrangeable"],["arrangaeble","arrangeable"],["arrangaelbe","arrangeable"],["arrangd","arranged"],["arrangde","arranged"],["arrangemenet","arrangement"],["arrangemenets","arrangements"],["arrangent","arrangement"],["arrangents","arrangements"],["arrangmeent","arrangement"],["arrangmeents","arrangements"],["arrangmenet","arrangement"],["arrangmenets","arrangements"],["arrangment","arrangement"],["arrangments","arrangements"],["arrangnig","arranging"],["arrangs","arranges"],["arrangse","arranges"],["arrangt","arrangement"],["arrangte","arrange"],["arrangteable","arrangeable"],["arrangted","arranged"],["arrangtement","arrangement"],["arrangtements","arrangements"],["arrangtes","arranges"],["arrangting","arranging"],["arrangts","arrangements"],["arraning","arranging"],["arranment","arrangement"],["arranments","arrangements"],["arrants","arrangements"],["arraows","arrows"],["arrary","array"],["arrayes","arrays"],["arre","are"],["arreay","array"],["arrengement","arrangement"],["arrengements","arrangements"],["arriveis","arrives"],["arrivial","arrival"],["arround","around"],["arrray","array"],["arrrays","arrays"],["arrrive","arrive"],["arrrived","arrived"],["arrrives","arrives"],["arrtibute","attribute"],["arrya","array"],["arryas","arrays"],["arrys","arrays"],["artcile","article"],["articaft","artifact"],["articafts","artifacts"],["artical","article"],["articals","articles"],["articat","artifact"],["articats","artifacts"],["artice","article"],["articel","article"],["articels","articles"],["artifac","artifact"],["artifacs","artifacts"],["artifcat","artifact"],["artifcats","artifacts"],["artifical","artificial"],["artifically","artificially"],["artihmetic","arithmetic"],["artilce","article"],["artillary","artillery"],["artuments","arguments"],["arugment","argument"],["arugments","arguments"],["arument","argument"],["aruments","arguments"],["arund","around"],["arvg","argv"],["asai","Asia"],["asain","Asian"],["asbolute","absolute"],["asbolutelly","absolutely"],["asbolutely","absolutely"],["asbtract","abstract"],["asbtracted","abstracted"],["asbtracter","abstracter"],["asbtracting","abstracting"],["asbtraction","abstraction"],["asbtractions","abstractions"],["asbtractly","abstractly"],["asbtractness","abstractness"],["asbtractor","abstractor"],["asbtracts","abstracts"],["ascconciated","associated"],["asceding","ascending"],["ascpect","aspect"],["ascpects","aspects"],["asdignment","assignment"],["asdignments","assignments"],["asemble","assemble"],["asembled","assembled"],["asembler","assembler"],["asemblers","assemblers"],["asembles","assembles"],["asemblies","assemblies"],["asembling","assembling"],["asembly","assembly"],["asendance","ascendance"],["asendancey","ascendancy"],["asendancy","ascendancy"],["asendence","ascendance"],["asendencey","ascendancy"],["asendency","ascendancy"],["asending","ascending"],["asent","ascent"],["aserted","asserted"],["asertion","assertion"],["asess","assess"],["asessment","assessment"],["asessments","assessments"],["asetic","ascetic"],["asfar","as far"],["asign","assign"],["asigned","assigned"],["asignee","assignee"],["asignees","assignees"],["asigning","assigning"],["asignmend","assignment"],["asignmends","assignments"],["asignment","assignment"],["asignor","assignor"],["asigns","assigns"],["asii","ascii"],["asisstant","assistant"],["asisstants","assistants"],["asistance","assistance"],["aske","ask"],["askes","asks"],["aslo","also"],["asnwer","answer"],["asnwered","answered"],["asnwerer","answerer"],["asnwerers","answerers"],["asnwering","answering"],["asnwers","answers"],["asny","any"],["asnychronoue","asynchronous"],["asociated","associated"],["asolute","absolute"],["asorbed","absorbed"],["aspected","expected"],["asphyxation","asphyxiation"],["assasin","assassin"],["assasinate","assassinate"],["assasinated","assassinated"],["assasinates","assassinates"],["assasination","assassination"],["assasinations","assassinations"],["assasined","assassinated"],["assasins","assassins"],["assassintation","assassination"],["asscciated","associated"],["assciated","associated"],["asscii","ASCII"],["asscociated","associated"],["asscoitaed","associated"],["assebly","assembly"],["assebmly","assembly"],["assembe","assemble"],["assembed","assembled"],["assembeld","assembled"],["assember","assembler"],["assemblys","assemblies"],["assemby","assembly"],["assemly","assembly"],["assemnly","assembly"],["assemple","assemble"],["assending","ascending"],["asser","assert"],["assersion","assertion"],["assertation","assertion"],["assertio","assertion"],["assertting","asserting"],["assesmenet","assessment"],["assesment","assessment"],["assesments","assessments"],["assessmant","assessment"],["assessmants","assessments"],["assgin","assign"],["assgined","assigned"],["assgining","assigning"],["assginment","assignment"],["assginments","assignments"],["assgins","assigns"],["assicate","associate"],["assicated","associated"],["assicates","associates"],["assicating","associating"],["assication","association"],["assications","associations"],["assiciate","associate"],["assiciated","associated"],["assiciates","associates"],["assiciation","association"],["assiciations","associations"],["asside","aside"],["assiged","assigned"],["assigend","assigned"],["assigh","assign"],["assighed","assigned"],["assighee","assignee"],["assighees","assignees"],["assigher","assigner"],["assighers","assigners"],["assighing","assigning"],["assighor","assignor"],["assighors","assignors"],["assighs","assigns"],["assiging","assigning"],["assigment","assignment"],["assigments","assignments"],["assigmnent","assignment"],["assignalble","assignable"],["assignement","assignment"],["assignements","assignments"],["assignemnt","assignment"],["assignemnts","assignments"],["assignemtn","assignment"],["assignend","assigned"],["assignenment","assignment"],["assignenmentes","assignments"],["assignenments","assignments"],["assignenmet","assignment"],["assignes","assigns"],["assignmenet","assignment"],["assignmens","assignments"],["assignmet","assignment"],["assignmetns","assignments"],["assignmnet","assignment"],["assignt","assign"],["assigntment","assignment"],["assihnment","assignment"],["assihnments","assignments"],["assime","assume"],["assined","assigned"],["assing","assign"],["assinged","assigned"],["assinging","assigning"],["assingled","assigned"],["assingment","assignment"],["assingned","assigned"],["assingnment","assignment"],["assings","assigns"],["assinment","assignment"],["assiocate","associate"],["assiocated","associated"],["assiocates","associates"],["assiocating","associating"],["assiocation","association"],["assiociate","associate"],["assiociated","associated"],["assiociates","associates"],["assiociating","associating"],["assiociation","association"],["assisance","assistance"],["assisant","assistant"],["assisants","assistants"],["assising","assisting"],["assisnate","assassinate"],["assistence","assistance"],["assistent","assistant"],["assit","assist"],["assitant","assistant"],["assition","assertion"],["assmbler","assembler"],["assmeble","assemble"],["assmebler","assembler"],["assmebles","assembles"],["assmebling","assembling"],["assmebly","assembly"],["assmelber","assembler"],["assmption","assumption"],["assmptions","assumptions"],["assmume","assume"],["assmumed","assumed"],["assmumes","assumes"],["assmuming","assuming"],["assmumption","assumption"],["assmumptions","assumptions"],["assoaiate","associate"],["assoaiated","associated"],["assoaiates","associates"],["assoaiating","associating"],["assoaiation","association"],["assoaiations","associations"],["assoaiative","associative"],["assocaited","associated"],["assocate","associate"],["assocated","associated"],["assocates","associates"],["assocating","associating"],["assocation","association"],["assocations","associations"],["assocciated","associated"],["assocciation","association"],["assocciations","associations"],["assocciative","associative"],["associatated","associated"],["associatd","associated"],["associatied","associated"],["associcate","associate"],["associcated","associated"],["associcates","associates"],["associcating","associating"],["associdated","associated"],["associeate","associate"],["associeated","associated"],["associeates","associates"],["associeating","associating"],["associeation","association"],["associeations","associations"],["associeted","associated"],["associte","associate"],["associted","associated"],["assocites","associates"],["associting","associating"],["assocition","association"],["associtions","associations"],["associtive","associative"],["associuated","associated"],["assoction","association"],["assoiated","associated"],["assoicate","associate"],["assoicated","associated"],["assoicates","associates"],["assoication","association"],["assoiciative","associative"],["assomption","assumption"],["assosciate","associate"],["assosciated","associated"],["assosciates","associates"],["assosciating","associating"],["assosiacition","association"],["assosiacitions","associations"],["assosiacted","associated"],["assosiate","associate"],["assosiated","associated"],["assosiates","associates"],["assosiating","associating"],["assosiation","association"],["assosiations","associations"],["assosiative","associative"],["assosication","assassination"],["assotiated","associated"],["assoziated","associated"],["asssassans","assassins"],["asssembler","assembler"],["asssembly","assembly"],["asssert","assert"],["asssertion","assertion"],["asssociate","associated"],["asssociated","associated"],["asssociation","association"],["asssume","assume"],["asssumes","assumes"],["asssuming","assuming"],["assualt","assault"],["assualted","assaulted"],["assuembly","assembly"],["assum","assume"],["assuma","assume"],["assumad","assumed"],["assumang","assuming"],["assumas","assumes"],["assumbe","assume"],["assumbed","assumed"],["assumbes","assumes"],["assumbing","assuming"],["assumend","assumed"],["assumking","assuming"],["assumme","assume"],["assummed","assumed"],["assummes","assumes"],["assumming","assuming"],["assumne","assume"],["assumned","assumed"],["assumnes","assumes"],["assumning","assuming"],["assumong","assuming"],["assumotion","assumption"],["assumotions","assumptions"],["assumpation","assumption"],["assumpted","assumed"],["assums","assumes"],["assumse","assumes"],["assumtion","assumption"],["assumtions","assumptions"],["assumtpion","assumption"],["assumtpions","assumptions"],["assumu","assume"],["assumud","assumed"],["assumue","assume"],["assumued","assumed"],["assumues","assumes"],["assumuing","assuming"],["assumung","assuming"],["assumuption","assumption"],["assumuptions","assumptions"],["assumus","assumes"],["assupmption","assumption"],["assuption","assumption"],["assuptions","assumptions"],["assurred","assured"],["assymetric","asymmetric"],["assymetrical","asymmetrical"],["assymetries","asymmetries"],["assymetry","asymmetry"],["assymmetric","asymmetric"],["assymmetrical","asymmetrical"],["assymmetries","asymmetries"],["assymmetry","asymmetry"],["assymptote","asymptote"],["assymptotes","asymptotes"],["assymptotic","asymptotic"],["assymptotically","asymptotically"],["assymthotic","asymptotic"],["assymtote","asymptote"],["assymtotes","asymptotes"],["assymtotic","asymptotic"],["assymtotically","asymptotically"],["asterices","asterisks"],["asteriod","asteroid"],["astethic","aesthetic"],["astethically","aesthetically"],["astethicism","aestheticism"],["astethics","aesthetics"],["asthetic","aesthetic"],["asthetical","aesthetical"],["asthetically","aesthetically"],["asthetics","aesthetics"],["astiimate","estimate"],["astiimation","estimation"],["asume","assume"],["asumed","assumed"],["asumes","assumes"],["asuming","assuming"],["asumption","assumption"],["asure","assure"],["aswell","as well"],["asychronize","asynchronize"],["asychronized","asynchronized"],["asychronous","asynchronous"],["asychronously","asynchronously"],["asycn","async"],["asycnhronous","asynchronous"],["asycnhronously","asynchronously"],["asycronous","asynchronous"],["asymetic","asymmetric"],["asymetric","asymmetric"],["asymetrical","asymmetrical"],["asymetricaly","asymmetrically"],["asymmeric","asymmetric"],["asynchnous","asynchronous"],["asynchonous","asynchronous"],["asynchonously","asynchronously"],["asynchornous","asynchronous"],["asynchoronous","asynchronous"],["asynchrnous","asynchronous"],["asynchrnously","asynchronously"],["asynchromous","asynchronous"],["asynchron","asynchronous"],["asynchroneously","asynchronously"],["asynchronious","asynchronous"],["asynchronlous","asynchronous"],["asynchrons","asynchronous"],["asynchroous","asynchronous"],["asynchrounous","asynchronous"],["asynchrounsly","asynchronously"],["asyncronous","asynchronous"],["asyncronously","asynchronously"],["asynnc","async"],["asynschron","asynchronous"],["atach","attach"],["atached","attached"],["ataching","attaching"],["atachment","attachment"],["atachments","attachments"],["atack","attack"],["atain","attain"],["atatch","attach"],["atatchable","attachable"],["atatched","attached"],["atatches","attaches"],["atatching","attaching"],["atatchment","attachment"],["atatchments","attachments"],["atempt","attempt"],["atempting","attempting"],["atempts","attempts"],["atendance","attendance"],["atended","attended"],["atendee","attendee"],["atends","attends"],["atention","attention"],["atheistical","atheistic"],["athenean","Athenian"],["atheneans","Athenians"],["ather","other"],["athiesm","atheism"],["athiest","atheist"],["athough","although"],["athron","athlon"],["athros","atheros"],["atleast","at least"],["atll","all"],["atmoic","atomic"],["atmoically","atomically"],["atomatically","automatically"],["atomical","atomic"],["atomicly","atomically"],["atomiticity","atomicity"],["atomtical","automatic"],["atomtically","automatically"],["atomticaly","automatically"],["atomticlly","automatically"],["atomticly","automatically"],["atorecovery","autorecovery"],["atorney","attorney"],["atquired","acquired"],["atribs","attribs"],["atribut","attribute"],["atribute","attribute"],["atributed","attributed"],["atributes","attributes"],["atrribute","attribute"],["atrributes","attributes"],["atrtribute","attribute"],["atrtributes","attributes"],["attaced","attached"],["attachd","attached"],["attachement","attachment"],["attachements","attachments"],["attachemnt","attachment"],["attachemnts","attachments"],["attachen","attach"],["attachged","attached"],["attachmant","attachment"],["attachmants","attachments"],["attachs","attaches"],["attachted","attached"],["attacs","attacks"],["attacthed","attached"],["attampt","attempt"],["attatch","attach"],["attatched","attached"],["attatches","attaches"],["attatching","attaching"],["attatchment","attachment"],["attatchments","attachments"],["attch","attach"],["attched","attached"],["attches","attaches"],["attching","attaching"],["attchment","attachment"],["attement","attempt"],["attemented","attempted"],["attementing","attempting"],["attements","attempts"],["attemp","attempt"],["attemped","attempted"],["attemping","attempting"],["attemppt","attempt"],["attemps","attempts"],["attemptes","attempts"],["attemptting","attempting"],["attemt","attempt"],["attemted","attempted"],["attemting","attempting"],["attemtp","attempt"],["attemtped","attempted"],["attemtping","attempting"],["attemtps","attempts"],["attemtpted","attempted"],["attemtpts","attempts"],["attemts","attempts"],["attendence","attendance"],["attendent","attendant"],["attendents","attendants"],["attened","attended"],["attennuation","attenuation"],["attension","attention"],["attented","attended"],["attentuation","attenuation"],["attentuations","attenuations"],["attepmpt","attempt"],["attept","attempt"],["attetntion","attention"],["attibute","attribute"],["attibuted","attributed"],["attibutes","attributes"],["attirbute","attribute"],["attirbutes","attributes"],["attiribute","attribute"],["attitide","attitude"],["attmept","attempt"],["attmpt","attempt"],["attnetion","attention"],["attosencond","attosecond"],["attosenconds","attoseconds"],["attrbiute","attribute"],["attrbute","attribute"],["attrbuted","attributed"],["attrbutes","attributes"],["attrbution","attribution"],["attrbutions","attributions"],["attribbute","attribute"],["attribiute","attribute"],["attribiutes","attributes"],["attribte","attribute"],["attribted","attributed"],["attribting","attributing"],["attribtue","attribute"],["attribtutes","attributes"],["attribude","attribute"],["attribue","attribute"],["attribues","attributes"],["attribuets","attributes"],["attribuite","attribute"],["attribuites","attributes"],["attribuition","attribution"],["attribure","attribute"],["attribured","attributed"],["attribures","attributes"],["attriburte","attribute"],["attriburted","attributed"],["attriburtes","attributes"],["attriburtion","attribution"],["attribut","attribute"],["attributei","attribute"],["attributen","attribute"],["attributess","attributes"],["attributred","attributed"],["attributs","attributes"],["attribye","attribute"],["attribyes","attributes"],["attribyte","attribute"],["attribytes","attributes"],["attriebute","attribute"],["attriebuted","attributed"],["attriebutes","attributes"],["attriebuting","attributing"],["attrirbute","attribute"],["attrirbuted","attributed"],["attrirbutes","attributes"],["attrirbution","attribution"],["attritube","attribute"],["attritubed","attributed"],["attritubes","attributes"],["attriubtes","attributes"],["attriubute","attribute"],["attrocities","atrocities"],["attrribute","attribute"],["attrributed","attributed"],["attrributes","attributes"],["attrribution","attribution"],["attrubite","attribute"],["attrubites","attributes"],["attrubte","attribute"],["attrubtes","attributes"],["attrubure","attribute"],["attrubures","attributes"],["attrubute","attribute"],["attrubutes","attributes"],["attrubyte","attribute"],["attrubytes","attributes"],["attruibute","attribute"],["attruibutes","attributes"],["atttached","attached"],["atttribute","attribute"],["atttributes","attributes"],["atuhenticate","authenticate"],["atuhenticated","authenticated"],["atuhenticates","authenticates"],["atuhenticating","authenticating"],["atuhentication","authentication"],["atuhenticator","authenticator"],["atuhenticators","authenticators"],["auccess","success"],["auccessive","successive"],["audeince","audience"],["audiance","audience"],["augest","August"],["augmnet","augment"],["augmnetation","augmentation"],["augmneted","augmented"],["augmneter","augmenter"],["augmneters","augmenters"],["augmnetes","augments"],["augmneting","augmenting"],["augmnets","augments"],["auguest","august"],["auhtor","author"],["auhtors","authors"],["aunthenticate","authenticate"],["aunthenticated","authenticated"],["aunthenticates","authenticates"],["aunthenticating","authenticating"],["aunthentication","authentication"],["aunthenticator","authenticator"],["aunthenticators","authenticators"],["auospacing","autospacing"],["auot","auto"],["auotmatic","automatic"],["auromated","automated"],["austrailia","Australia"],["austrailian","Australian"],["Australien","Australian"],["Austrlaian","Australian"],["autasave","autosave"],["autasaves","autosaves"],["autenticate","authenticate"],["autenticated","authenticated"],["autenticates","authenticates"],["autenticating","authenticating"],["autentication","authentication"],["autenticator","authenticator"],["autenticators","authenticators"],["authecate","authenticate"],["authecated","authenticated"],["authecates","authenticates"],["authecating","authenticating"],["authecation","authentication"],["authecator","authenticator"],["authecators","authenticators"],["authenaticate","authenticate"],["authenaticated","authenticated"],["authenaticates","authenticates"],["authenaticating","authenticating"],["authenatication","authentication"],["authenaticator","authenticator"],["authenaticators","authenticators"],["authencate","authenticate"],["authencated","authenticated"],["authencates","authenticates"],["authencating","authenticating"],["authencation","authentication"],["authencator","authenticator"],["authencators","authenticators"],["authenciate","authenticate"],["authenciated","authenticated"],["authenciates","authenticates"],["authenciating","authenticating"],["authenciation","authentication"],["authenciator","authenticator"],["authenciators","authenticators"],["authencicate","authenticate"],["authencicated","authenticated"],["authencicates","authenticates"],["authencicating","authenticating"],["authencication","authentication"],["authencicator","authenticator"],["authencicators","authenticators"],["authencity","authenticity"],["authencticate","authenticate"],["authencticated","authenticated"],["authencticates","authenticates"],["authencticating","authenticating"],["authenctication","authentication"],["authencticator","authenticator"],["authencticators","authenticators"],["authendicate","authenticate"],["authendicated","authenticated"],["authendicates","authenticates"],["authendicating","authenticating"],["authendication","authentication"],["authendicator","authenticator"],["authendicators","authenticators"],["authenenticate","authenticate"],["authenenticated","authenticated"],["authenenticates","authenticates"],["authenenticating","authenticating"],["authenentication","authentication"],["authenenticator","authenticator"],["authenenticators","authenticators"],["authenfie","authenticate"],["authenfied","authenticated"],["authenfies","authenticates"],["authenfiing","authenticating"],["authenfiion","authentication"],["authenfior","authenticator"],["authenfiors","authenticators"],["authenicae","authenticate"],["authenicaed","authenticated"],["authenicaes","authenticates"],["authenicaing","authenticating"],["authenicaion","authentication"],["authenicaor","authenticator"],["authenicaors","authenticators"],["authenicate","authenticate"],["authenicated","authenticated"],["authenicates","authenticates"],["authenicating","authenticating"],["authenication","authentication"],["authenicator","authenticator"],["authenicators","authenticators"],["authenificate","authenticate"],["authenificated","authenticated"],["authenificates","authenticates"],["authenificating","authenticating"],["authenification","authentication"],["authenificator","authenticator"],["authenificators","authenticators"],["authenitcate","authenticate"],["authenitcated","authenticated"],["authenitcates","authenticates"],["authenitcating","authenticating"],["authenitcation","authentication"],["authenitcator","authenticator"],["authenitcators","authenticators"],["autheniticate","authenticate"],["autheniticated","authenticated"],["autheniticates","authenticates"],["autheniticating","authenticating"],["authenitication","authentication"],["autheniticator","authenticator"],["autheniticators","authenticators"],["authenricate","authenticate"],["authenricated","authenticated"],["authenricates","authenticates"],["authenricating","authenticating"],["authenrication","authentication"],["authenricator","authenticator"],["authenricators","authenticators"],["authentation","authentication"],["authentcated","authenticated"],["authentciate","authenticate"],["authentciated","authenticated"],["authentciates","authenticates"],["authentciating","authenticating"],["authentciation","authentication"],["authentciator","authenticator"],["authentciators","authenticators"],["authenticaiton","authentication"],["authenticateion","authentication"],["authentiction","authentication"],["authentification","authentication"],["auther","author"],["autherisation","authorisation"],["autherise","authorise"],["autherization","authorization"],["autherize","authorize"],["authers","authors"],["authethenticate","authenticate"],["authethenticated","authenticated"],["authethenticates","authenticates"],["authethenticating","authenticating"],["authethentication","authentication"],["authethenticator","authenticator"],["authethenticators","authenticators"],["authethicate","authenticate"],["authethicated","authenticated"],["authethicates","authenticates"],["authethicating","authenticating"],["authethication","authentication"],["authethicator","authenticator"],["authethicators","authenticators"],["autheticate","authenticate"],["autheticated","authenticated"],["autheticates","authenticates"],["autheticating","authenticating"],["authetication","authentication"],["autheticator","authenticator"],["autheticators","authenticators"],["authetnicate","authenticate"],["authetnicated","authenticated"],["authetnicates","authenticates"],["authetnicating","authenticating"],["authetnication","authentication"],["authetnicator","authenticator"],["authetnicators","authenticators"],["authetnticate","authenticate"],["authetnticated","authenticated"],["authetnticates","authenticates"],["authetnticating","authenticating"],["authetntication","authentication"],["authetnticator","authenticator"],["authetnticators","authenticators"],["authobiographic","autobiographic"],["authobiography","autobiography"],["authoer","author"],["authoratative","authoritative"],["authorative","authoritative"],["authorded","authored"],["authorites","authorities"],["authorithy","authority"],["authoritiers","authorities"],["authorititive","authoritative"],["authoritive","authoritative"],["authorizeed","authorized"],["authror","author"],["authrored","authored"],["authrorisation","authorisation"],["authrorities","authorities"],["authrorization","authorization"],["authrors","authors"],["autimatic","automatic"],["autimatically","automatically"],["autmatically","automatically"],["auto-dependancies","auto-dependencies"],["auto-destrcut","auto-destruct"],["auto-genrated","auto-generated"],["auto-genratet","auto-generated"],["auto-genration","auto-generation"],["auto-negatiotiation","auto-negotiation"],["auto-negatiotiations","auto-negotiations"],["auto-negoatiation","auto-negotiation"],["auto-negoatiations","auto-negotiations"],["auto-negoation","auto-negotiation"],["auto-negoations","auto-negotiations"],["auto-negociation","auto-negotiation"],["auto-negociations","auto-negotiations"],["auto-negogtiation","auto-negotiation"],["auto-negogtiations","auto-negotiations"],["auto-negoitation","auto-negotiation"],["auto-negoitations","auto-negotiations"],["auto-negoptionsotiation","auto-negotiation"],["auto-negoptionsotiations","auto-negotiations"],["auto-negosiation","auto-negotiation"],["auto-negosiations","auto-negotiations"],["auto-negotaiation","auto-negotiation"],["auto-negotaiations","auto-negotiations"],["auto-negotaition","auto-negotiation"],["auto-negotaitions","auto-negotiations"],["auto-negotatiation","auto-negotiation"],["auto-negotatiations","auto-negotiations"],["auto-negotation","auto-negotiation"],["auto-negotations","auto-negotiations"],["auto-negothiation","auto-negotiation"],["auto-negothiations","auto-negotiations"],["auto-negotication","auto-negotiation"],["auto-negotications","auto-negotiations"],["auto-negotioation","auto-negotiation"],["auto-negotioations","auto-negotiations"],["auto-negotion","auto-negotiation"],["auto-negotionation","auto-negotiation"],["auto-negotionations","auto-negotiations"],["auto-negotions","auto-negotiations"],["auto-negotiotation","auto-negotiation"],["auto-negotiotations","auto-negotiations"],["auto-negotitaion","auto-negotiation"],["auto-negotitaions","auto-negotiations"],["auto-negotitation","auto-negotiation"],["auto-negotitations","auto-negotiations"],["auto-negotition","auto-negotiation"],["auto-negotitions","auto-negotiations"],["auto-negoziation","auto-negotiation"],["auto-negoziations","auto-negotiations"],["auto-realease","auto-release"],["auto-realeased","auto-released"],["autochtonous","autochthonous"],["autocmplete","autocomplete"],["autocmpleted","autocompleted"],["autocmpletes","autocompletes"],["autocmpleting","autocompleting"],["autocommiting","autocommitting"],["autoconplete","autocomplete"],["autoconpleted","autocompleted"],["autoconpletes","autocompletes"],["autoconpleting","autocompleting"],["autoconpletion","autocompletion"],["autocoomit","autocommit"],["autoctonous","autochthonous"],["autoeselect","autoselect"],["autofilt","autofilter"],["autofomat","autoformat"],["autoformating","autoformatting"],["autogenrated","autogenerated"],["autogenratet","autogenerated"],["autogenration","autogeneration"],["autogroping","autogrouping"],["autohorized","authorized"],["autoincrememnt","autoincrement"],["autoincrementive","autoincrement"],["automaatically","automatically"],["automagicaly","automagically"],["automaitc","automatic"],["automaitcally","automatically"],["automanifactured","automanufactured"],["automatcally","automatically"],["automatially","automatically"],["automaticallly","automatically"],["automaticaly","automatically"],["automaticalyl","automatically"],["automaticalyy","automatically"],["automaticlly","automatically"],["automaticly","automatically"],["autometic","automatic"],["autometically","automatically"],["automibile","automobile"],["automical","automatic"],["automically","automatically"],["automicaly","automatically"],["automicatilly","automatically"],["automiclly","automatically"],["automicly","automatically"],["automonomous","autonomous"],["automtic","automatic"],["automtically","automatically"],["autonagotiation","autonegotiation"],["autonegatiotiation","autonegotiation"],["autonegatiotiations","autonegotiations"],["autonegoatiation","autonegotiation"],["autonegoatiations","autonegotiations"],["autonegoation","autonegotiation"],["autonegoations","autonegotiations"],["autonegociated","autonegotiated"],["autonegociation","autonegotiation"],["autonegociations","autonegotiations"],["autonegogtiation","autonegotiation"],["autonegogtiations","autonegotiations"],["autonegoitation","autonegotiation"],["autonegoitations","autonegotiations"],["autonegoptionsotiation","autonegotiation"],["autonegoptionsotiations","autonegotiations"],["autonegosiation","autonegotiation"],["autonegosiations","autonegotiations"],["autonegotaiation","autonegotiation"],["autonegotaiations","autonegotiations"],["autonegotaition","autonegotiation"],["autonegotaitions","autonegotiations"],["autonegotatiation","autonegotiation"],["autonegotatiations","autonegotiations"],["autonegotation","autonegotiation"],["autonegotations","autonegotiations"],["autonegothiation","autonegotiation"],["autonegothiations","autonegotiations"],["autonegotication","autonegotiation"],["autonegotications","autonegotiations"],["autonegotioation","autonegotiation"],["autonegotioations","autonegotiations"],["autonegotion","autonegotiation"],["autonegotionation","autonegotiation"],["autonegotionations","autonegotiations"],["autonegotions","autonegotiations"],["autonegotiotation","autonegotiation"],["autonegotiotations","autonegotiations"],["autonegotitaion","autonegotiation"],["autonegotitaions","autonegotiations"],["autonegotitation","autonegotiation"],["autonegotitations","autonegotiations"],["autonegotition","autonegotiation"],["autonegotitions","autonegotiations"],["autonegoziation","autonegotiation"],["autonegoziations","autonegotiations"],["autoneogotiation","autonegotiation"],["autoneotiation","autonegotiation"],["autonogotiation","autonegotiation"],["autonymous","autonomous"],["autoonf","autoconf"],["autopsec","autospec"],["autor","author"],["autorealease","autorelease"],["autorisation","authorisation"],["autoritative","authoritative"],["autority","authority"],["autorization","authorization"],["autoropeat","autorepeat"],["autors","authors"],["autosae","autosave"],["autosavegs","autosaves"],["autosaveperodical","autosaveperiodical"],["autosence","autosense"],["autum","autumn"],["auxialiary","auxiliary"],["auxilaries","auxiliaries"],["auxilary","auxiliary"],["auxileries","auxiliaries"],["auxilery","auxiliary"],["auxiliar","auxiliary"],["auxillaries","auxiliaries"],["auxillary","auxiliary"],["auxilleries","auxiliaries"],["auxillery","auxiliary"],["auxilliaries","auxiliaries"],["auxilliary","auxiliary"],["auxiluary","auxiliary"],["auxliliary","auxiliary"],["avaiable","available"],["avaialable","available"],["avaialbale","available"],["avaialbe","available"],["avaialbel","available"],["avaialbility","availability"],["avaialble","available"],["avaiblable","available"],["avaible","available"],["avaiiability","availability"],["avaiiable","available"],["avaiibility","availability"],["avaiible","available"],["avaiilable","available"],["availaable","available"],["availabable","available"],["availabal","available"],["availabale","available"],["availabality","availability"],["availabble","available"],["availabe","available"],["availabed","available"],["availabel","available"],["availabele","available"],["availabelity","availability"],["availabillity","availability"],["availabilty","availability"],["availabke","available"],["availabl","available"],["availabled","available"],["availablen","available"],["availablity","availability"],["availabyl","available"],["availaiable","available"],["availaibility","availability"],["availaible","available"],["availailability","availability"],["availaility","availability"],["availalable","available"],["availalbe","available"],["availalble","available"],["availale","available"],["availaliable","available"],["availality","availability"],["availanle","available"],["availavble","available"],["availavility","availability"],["availavle","available"],["availbable","available"],["availbale","available"],["availbe","available"],["availble","available"],["availeable","available"],["availebilities","availabilities"],["availebility","availability"],["availeble","available"],["availiable","available"],["availibility","availability"],["availibilty","availability"],["availible","available"],["availlable","available"],["avalable","available"],["avalaible","available"],["avalance","avalanche"],["avaliable","available"],["avalibale","available"],["avalible","available"],["avaloable","available"],["avaluate","evaluate"],["avaluated","evaluated"],["avaluates","evaluates"],["avaluating","evaluating"],["avance","advance"],["avanced","advanced"],["avances","advances"],["avancing","advancing"],["avaoid","avoid"],["avaoidable","avoidable"],["avaoided","avoided"],["avarage","average"],["avarageing","averaging"],["avarege","average"],["avation","aviation"],["avcoid","avoid"],["avcoids","avoids"],["avdisories","advisories"],["avdisoriyes","advisories"],["avdisory","advisory"],["avengence","a vengeance"],["averageed","averaged"],["averagine","averaging"],["averload","overload"],["averloaded","overloaded"],["averloads","overloads"],["avertising","advertising"],["avgerage","average"],["aviable","available"],["avialable","available"],["avilability","availability"],["avilable","available"],["aviod","avoid"],["avioded","avoided"],["avioding","avoiding"],["aviods","avoids"],["avisories","advisories"],["avisoriyes","advisories"],["avisory","advisory"],["avod","avoid"],["avoded","avoided"],["avoding","avoiding"],["avods","avoids"],["avoidence","avoidance"],["avoind","avoid"],["avoinded","avoided"],["avoinding","avoiding"],["avoinds","avoids"],["avriable","variable"],["avriables","variables"],["avriant","variant"],["avriants","variants"],["avtive","active"],["awared","awarded"],["aweful","awful"],["awefully","awfully"],["awkard","awkward"],["awming","awning"],["awmings","awnings"],["awnser","answer"],["awnsered","answered"],["awnsers","answers"],["awoid","avoid"],["awsome","awesome"],["awya","away"],["axises","axes"],["axissymmetric","axisymmetric"],["axix","axis"],["axixsymmetric","axisymmetric"],["axpressed","expressed"],["aysnc","async"],["ayways","always"],["bacause","because"],["baceause","because"],["bacground","background"],["bacic","basic"],["backards","backwards"],["backbround","background"],["backbrounds","backgrounds"],["backedn","backend"],["backedns","backends"],["backgorund","background"],["backgorunds","backgrounds"],["backgound","background"],["backgounds","backgrounds"],["backgournd","background"],["backgournds","backgrounds"],["backgrond","background"],["backgronds","backgrounds"],["backgroound","background"],["backgroounds","backgrounds"],["backgroud","background"],["backgroudn","background"],["backgroudns","backgrounds"],["backgrouds","backgrounds"],["backgroun","background"],["backgroung","background"],["backgroungs","backgrounds"],["backgrouns","backgrounds"],["backgrount","background"],["backgrounts","backgrounds"],["backgrouund","background"],["backgrund","background"],["backgrunds","backgrounds"],["backgruond","background"],["backgruonds","backgrounds"],["backlght","backlight"],["backlghting","backlighting"],["backlghts","backlights"],["backned","backend"],["backneds","backends"],["backound","background"],["backounds","backgrounds"],["backpsace","backspace"],["backrefence","backreference"],["backrgound","background"],["backrgounds","backgrounds"],["backround","background"],["backrounds","backgrounds"],["backsapce","backspace"],["backslase","backslash"],["backslases","backslashes"],["backslashs","backslashes"],["backwad","backwards"],["backwardss","backwards"],["backware","backward"],["backwark","backward"],["backwrad","backward"],["bactracking","backtracking"],["bacup","backup"],["baed","based"],["bage","bag"],["bahaving","behaving"],["bahavior","behavior"],["bahavioral","behavioral"],["bahaviors","behaviors"],["bahaviour","behaviour"],["baisc","basic"],["baised","raised"],["bakc","back"],["bakcrefs","backrefs"],["bakends","backends"],["bakground","background"],["bakgrounds","backgrounds"],["bakup","backup"],["bakups","backups"],["bakward","backward"],["bakwards","backwards"],["balacing","balancing"],["balence","balance"],["baloon","balloon"],["baloons","balloons"],["balse","false"],["banannas","bananas"],["bandwdith","bandwidth"],["bandwdiths","bandwidths"],["bandwidht","bandwidth"],["bandwidthm","bandwidth"],["bandwitdh","bandwidth"],["bandwith","bandwidth"],["bankrupcy","bankruptcy"],["banlance","balance"],["banruptcy","bankruptcy"],["barbedos","barbados"],["bariier","barrier"],["barnch","branch"],["barnched","branched"],["barncher","brancher"],["barnchers","branchers"],["barnches","branches"],["barnching","branching"],["barriors","barriers"],["barrriers","barriers"],["barycentic","barycentric"],["basci","basic"],["bascially","basically"],["bascktrack","backtrack"],["basf","base"],["basicallly","basically"],["basicaly","basically"],["basiclly","basically"],["basicly","basically"],["basline","baseline"],["baslines","baselines"],["bassic","basic"],["bassically","basically"],["bastract","abstract"],["bastracted","abstracted"],["bastracter","abstracter"],["bastracting","abstracting"],["bastraction","abstraction"],["bastractions","abstractions"],["bastractly","abstractly"],["bastractness","abstractness"],["bastractor","abstractor"],["bastracts","abstracts"],["bateries","batteries"],["batery","battery"],["battaries","batteries"],["battary","battery"],["bbefore","before"],["bboolean","boolean"],["bbooleans","booleans"],["bcak","back"],["bcause","because"],["beable","be able"],["beacaon","beacon"],["beacause","because"],["beachead","beachhead"],["beacuse","because"],["beaon","beacon"],["bearword","bareword"],["beastiality","bestiality"],["beatiful","beautiful"],["beauracracy","bureaucracy"],["beaurocracy","bureaucracy"],["beaurocratic","bureaucratic"],["beause","because"],["beauti","beauty"],["beautiy","beauty"],["beautyfied","beautified"],["beautyfull","beautiful"],["beaviour","behaviour"],["bebongs","belongs"],["becaause","because"],["becacdd","because"],["becahse","because"],["becamae","became"],["becaouse","because"],["becase","because"],["becasue","because"],["becasuse","because"],["becauae","because"],["becauce","because"],["becaue","because"],["becaues","because"],["becaus","because"],["becausee","because"],["becauseq","because"],["becauses","because"],["becausw","because"],["beccause","because"],["bechmark","benchmark"],["bechmarked","benchmarked"],["bechmarking","benchmarking"],["bechmarks","benchmarks"],["becoem","become"],["becomeing","becoming"],["becomme","become"],["becommes","becomes"],["becomming","becoming"],["becoms","becomes"],["becouse","because"],["becoz","because"],["bector","vector"],["bectors","vectors"],["becuase","because"],["becuse","because"],["becxause","because"],["bedore","before"],["beeings","beings"],["beetween","between"],["beetwen","between"],["beffer","buffer"],["befoer","before"],["befor","before"],["beforehands","beforehand"],["beforere","before"],["befores","before"],["beforing","before"],["befure","before"],["begginer","beginner"],["begginers","beginners"],["beggingin","beginning"],["begginging","beginning"],["begginig","beginning"],["beggining","beginning"],["begginings","beginnings"],["begginnig","beginning"],["begginning","beginning"],["beggins","begins"],["beghavior","behavior"],["beghaviors","behaviors"],["begiinning","beginning"],["beginer","beginner"],["begines","begins"],["begining","beginning"],["beginining","beginning"],["begininings","beginnings"],["begininng","beginning"],["begininngs","beginnings"],["beginn","begin"],["beginnig","beginning"],["beginnin","beginning"],["beginnning","beginning"],["beginnnings","beginnings"],["behabior","behavior"],["behabiors","behaviors"],["behabiour","behaviour"],["behabiours","behaviours"],["behabviour","behaviour"],["behaivior","behavior"],["behaiviour","behaviour"],["behaiviuor","behaviour"],["behaivor","behavior"],["behaivors","behaviors"],["behaivour","behaviour"],["behaivoural","behavioural"],["behaivours","behaviours"],["behavioutr","behaviour"],["behaviro","behavior"],["behaviuor","behaviour"],["behavoir","behavior"],["behavoirs","behaviors"],["behavour","behaviour"],["behavriour","behaviour"],["behavriours","behaviours"],["behinde","behind"],["behvaiour","behaviour"],["behviour","behaviour"],["beigin","begin"],["beiginning","beginning"],["beind","behind"],["beinning","beginning"],["bejond","beyond"],["beleagured","beleaguered"],["beleif","belief"],["beleifable","believable"],["beleifed","believed"],["beleifing","believing"],["beleivable","believable"],["beleive","believe"],["beleived","believed"],["beleives","believes"],["beleiving","believing"],["beliefable","believable"],["beliefed","believed"],["beliefing","believing"],["beligum","belgium"],["beling","belong"],["belivable","believable"],["belive","believe"],["beliveable","believable"],["beliveably","believably"],["beliveble","believable"],["belivebly","believably"],["beliving","believing"],["belligerant","belligerent"],["bellweather","bellwether"],["belog","belong"],["beloging","belonging"],["belogs","belongs"],["belond","belong"],["beloning","belonging"],["belown","belong"],["belwo","below"],["bemusemnt","bemusement"],["benchamarked","benchmarked"],["benchamarking","benchmarking"],["benchamrk","benchmark"],["benchamrked","benchmarked"],["benchamrking","benchmarking"],["benchamrks","benchmarks"],["benchmkar","benchmark"],["benchmkared","benchmarked"],["benchmkaring","benchmarking"],["benchmkars","benchmarks"],["benchs","benches"],["benckmark","benchmark"],["benckmarked","benchmarked"],["benckmarking","benchmarking"],["benckmarks","benchmarks"],["benechmark","benchmark"],["benechmarked","benchmarked"],["benechmarking","benchmarking"],["benechmarks","benchmarks"],["beneeth","beneath"],["benefical","beneficial"],["beneficary","beneficiary"],["benefied","benefited"],["benefitial","beneficial"],["beneits","benefits"],["benetifs","benefits"],["beng","being"],["benhind","behind"],["benificial","beneficial"],["benifit","benefit"],["benifite","benefit"],["benifited","benefited"],["benifitial","beneficial"],["benifits","benefits"],["benig","being"],["beond","beyond"],["berforming","performing"],["bergamont","bergamot"],["Berkley","Berkeley"],["Bernouilli","Bernoulli"],["berween","between"],["besed","based"],["beseige","besiege"],["beseiged","besieged"],["beseiging","besieging"],["besure","be sure"],["beteeen","between"],["beteen","between"],["beter","better"],["beteween","between"],["betrween","between"],["bettern","better"],["bettween","between"],["betwean","between"],["betwee","between"],["betweed","between"],["betweeen","between"],["betweem","between"],["betweend","between"],["betweeness","betweenness"],["betweent","between"],["betwen","between"],["betwene","between"],["betwenn","between"],["betwern","between"],["betwween","between"],["beucase","because"],["beuracracy","bureaucracy"],["beutification","beautification"],["beutiful","beautiful"],["beutifully","beautifully"],["bever","never"],["bevore","before"],["bevorehand","beforehand"],["bevorhand","beforehand"],["beweeen","between"],["beween","between"],["bewteen","between"],["bewteeness","betweenness"],["beyone","beyond"],["beyong","beyond"],["beyound","beyond"],["bffer","buffer"],["bginning","beginning"],["bi-langual","bi-lingual"],["bianries","binaries"],["bianry","binary"],["biappicative","biapplicative"],["biddings","bidding"],["bidimentionnal","bidimensional"],["bidning","binding"],["bidnings","bindings"],["bigallic","bigalloc"],["bigining","beginning"],["biginning","beginning"],["biinary","binary"],["bilangual","bilingual"],["bilateraly","bilaterally"],["billingualism","bilingualism"],["billon","billion"],["bimask","bitmask"],["bimillenia","bimillennia"],["bimillenial","bimillennial"],["bimillenium","bimillennium"],["bimontly","bimonthly"],["binairy","binary"],["binanary","binary"],["binar","binary"],["binay","binary"],["bindins","bindings"],["binidng","binding"],["binominal","binomial"],["binraries","binaries"],["binrary","binary"],["bion","bio"],["birght","bright"],["birghten","brighten"],["birghter","brighter"],["birghtest","brightest"],["birghtness","brightness"],["biridectionality","bidirectionality"],["bisct","bisect"],["bisines","business"],["bisiness","business"],["bisnes","business"],["bisness","business"],["bistream","bitstream"],["bisunes","business"],["bisuness","business"],["bitamps","bitmaps"],["bitap","bitmap"],["bitfileld","bitfield"],["bitfilelds","bitfields"],["bitis","bits"],["bitmast","bitmask"],["bitnaps","bitmaps"],["bitwise-orring","bitwise-oring"],["bizare","bizarre"],["bizarely","bizarrely"],["bizzare","bizarre"],["bject","object"],["bjects","objects"],["blackslashes","backslashes"],["blaclist","blacklist"],["blaim","blame"],["blaimed","blamed"],["blanace","balance"],["blancked","blanked"],["blatent","blatant"],["blatently","blatantly"],["blbos","blobs"],["blcok","block"],["blcoks","blocks"],["bleading","bleeding"],["blessd","blessed"],["blessure","blessing"],["bletooth","bluetooth"],["bleutooth","bluetooth"],["blindy","blindly"],["Blitzkreig","Blitzkrieg"],["bload","bloat"],["bloaded","bloated"],["blocack","blockack"],["bloccks","blocks"],["blocekd","blocked"],["blockhain","blockchain"],["blockhains","blockchains"],["blockin","blocking"],["blockse","blocks"],["bloddy","bloody"],["blodk","block"],["bloek","bloke"],["bloekes","blokes"],["bloeks","blokes"],["bloekss","blokes"],["blohted","bloated"],["blokcer","blocker"],["blokchain","blockchain"],["blokchains","blockchains"],["blokcing","blocking"],["bloked","blocked"],["bloker","blocker"],["bloking","blocking"],["blong","belong"],["blonged","belonged"],["blonging","belonging"],["blongs","belongs"],["bloock","block"],["bloocks","blocks"],["bloted","bloated"],["bluestooth","bluetooth"],["bluetooh","bluetooth"],["bluetoot","bluetooth"],["bluetootn","bluetooth"],["blured","blurred"],["blutooth","bluetooth"],["bnecause","because"],["boads","boards"],["boardcast","broadcast"],["bocome","become"],["boddy","body"],["bodiese","bodies"],["bodydbuilder","bodybuilder"],["boelean","boolean"],["boeleans","booleans"],["boffer","buffer"],["bofore","before"],["bofy","body"],["boggus","bogus"],["bogos","bogus"],["bointer","pointer"],["bolean","boolean"],["boleen","boolean"],["bolor","color"],["bombardement","bombardment"],["bombarment","bombardment"],["bondary","boundary"],["Bonnano","Bonanno"],["bood","boot"],["bookeeping","bookkeeping"],["bookkeeing","bookkeeping"],["bookkeeiping","bookkeeping"],["bookkepp","bookkeep"],["bookmakr","bookmark"],["bookmar","bookmark"],["booleam","boolean"],["booleamn","boolean"],["booleamns","booleans"],["booleams","booleans"],["booleanss","booleans"],["booleen","boolean"],["booleens","booleans"],["boolen","boolean"],["boolens","booleans"],["booltloader","bootloader"],["booltloaders","bootloaders"],["boomark","bookmark"],["boomarks","bookmarks"],["boook","book"],["booolean","boolean"],["boooleans","booleans"],["booshelf","bookshelf"],["booshelves","bookshelves"],["boostrap","bootstrap"],["boostrapped","bootstrapped"],["boostrapping","bootstrapping"],["boostraps","bootstraps"],["booteek","boutique"],["bootlaoder","bootloader"],["bootlaoders","bootloaders"],["bootoloader","bootloader"],["bootom","bottom"],["bootraping","bootstrapping"],["bootsram","bootram"],["bootsrap","bootstrap"],["bootstap","bootstrap"],["bootstapped","bootstrapped"],["bootstapping","bootstrapping"],["bootstaps","bootstraps"],["booundaries","boundaries"],["booundary","boundary"],["boquet","bouquet"],["borad","board"],["boradcast","broadcast"],["bording","boarding"],["bordreline","borderline"],["bordrelines","borderlines"],["borgwasy","bourgeoisie"],["borke","broke"],["borken","broken"],["borow","borrow"],["borwser","browsers"],["borwsers","browsers"],["bothe","both"],["boths","both"],["botifies","notifies"],["bottem","bottom"],["bottlenck","bottleneck"],["bottlencks","bottlenecks"],["bottlenect","bottleneck"],["bottlenects","bottlenecks"],["bottlneck","bottleneck"],["bottlnecks","bottlenecks"],["bottomborde","bottomborder"],["bottome","bottom"],["bottomn","bottom"],["bottonm","bottom"],["botttom","bottom"],["bouce","bounce"],["bouces","bounces"],["boudaries","boundaries"],["boudary","boundary"],["bouding","bounding"],["boudnaries","boundaries"],["boudnary","boundary"],["bouds","bounds"],["bouind","bound"],["bouinded","bounded"],["bouinding","bounding"],["bouinds","bounds"],["boun","bound"],["bounaaries","boundaries"],["bounaary","boundary"],["bounad","bound"],["bounadaries","boundaries"],["bounadary","boundary"],["bounaded","bounded"],["bounading","bounding"],["bounadries","boundaries"],["bounadry","boundary"],["bounads","bounds"],["bounardies","boundaries"],["bounardy","boundary"],["bounaries","boundaries"],["bounary","boundary"],["bounbdaries","boundaries"],["bounbdary","boundary"],["boundares","boundaries"],["boundaryi","boundary"],["boundarys","boundaries"],["bounday","boundary"],["boundays","boundaries"],["bounderies","boundaries"],["boundery","boundary"],["boundig","bounding"],["boundimg","bounding"],["boundin","bounding"],["boundrary","boundary"],["boundries","boundaries"],["boundry","boundary"],["bounduaries","boundaries"],["bouned","bounded"],["boungaries","boundaries"],["boungary","boundary"],["boungin","bounding"],["boungind","bounding"],["bounhdaries","boundaries"],["bounhdary","boundary"],["bounidng","bounding"],["bouning","bounding"],["bounnd","bound"],["bounndaries","boundaries"],["bounndary","boundary"],["bounnded","bounded"],["bounnding","bounding"],["bounnds","bounds"],["bounradies","boundaries"],["bounrady","boundary"],["bounraies","boundaries"],["bounraries","boundaries"],["bounrary","boundary"],["bounray","boundary"],["bouns","bounds"],["bounsaries","boundaries"],["bounsary","boundary"],["bounsd","bounds"],["bount","bound"],["bountries","boundaries"],["bountry","boundary"],["bounudaries","boundaries"],["bounudary","boundary"],["bounus","bonus"],["bouqet","bouquet"],["bouund","bound"],["bouunded","bounded"],["bouunding","bounding"],["bouunds","bounds"],["bouy","buoy"],["bouyancy","buoyancy"],["bouyant","buoyant"],["boyant","buoyant"],["boycot","boycott"],["bracese","braces"],["brach","branch"],["brackeds","brackets"],["bracketwith","bracket with"],["brackground","background"],["bradcast","broadcast"],["brakpoint","breakpoint"],["brakpoints","breakpoints"],["branchces","branches"],["brancheswith","branches with"],["branchs","branches"],["branchsi","branches"],["branck","branch"],["branckes","branches"],["brancket","bracket"],["branckets","brackets"],["brane","brain"],["braodcast","broadcast"],["braodcasted","broadcasted"],["braodcasts","broadcasts"],["Brasillian","Brazilian"],["brazeer","brassiere"],["brazillian","Brazilian"],["breakes","breaks"],["breakthough","breakthrough"],["breakthroughts","breakthroughs"],["breakthruogh","breakthrough"],["breakthruoghs","breakthroughs"],["breal","break"],["breefly","briefly"],["brefore","before"],["breif","brief"],["breifly","briefly"],["brekpoint","breakpoint"],["brekpoints","breakpoints"],["breshed","brushed"],["breshes","brushes"],["breshing","brushing"],["brethen","brethren"],["bretheren","brethren"],["brfore","before"],["bridg","bridge"],["brievely","briefly"],["brievety","brevity"],["brigde","bridge"],["brige","bridge"],["briges","bridges"],["brighness","brightness"],["brightnesss","brightness"],["brigth","bright"],["brigthnes","brightness"],["brigthness","brightness"],["briliant","brilliant"],["brilinear","bilinear"],["brillant","brilliant"],["brimestone","brimstone"],["bringin","bringing"],["bringtofont","bringtofront"],["brite","bright"],["briten","brighten"],["britened","brightened"],["britener","brightener"],["briteners","brighteners"],["britenes","brightenes"],["britening","brightening"],["briter","brighter"],["Britian","Britain"],["Brittish","British"],["brnach","branch"],["brnaches","branches"],["broacast","broadcast"],["broacasted","broadcast"],["broacasting","broadcasting"],["broacasts","broadcasts"],["broadacasting","broadcasting"],["broadcas","broadcast"],["broadcase","broadcast"],["broadcasti","broadcast"],["broadcat","broadcast"],["broady","broadly"],["broardcast","broadcast"],["broblematic","problematic"],["brocher","brochure"],["brocken","broken"],["brockend","broken"],["brockened","broken"],["brocolee","broccoli"],["brodcast","broadcast"],["broked","broken"],["brokem","broken"],["brokend","broken"],["brokened","broken"],["brokeness","brokenness"],["bronken","broken"],["brosable","browsable"],["broser","browser"],["brosers","browsers"],["brosing","browsing"],["broswable","browsable"],["broswe","browse"],["broswed","browsed"],["broswer","browser"],["broswers","browsers"],["broswing","browsing"],["brower","browser"],["browers","browsers"],["browing","browsing"],["browseable","browsable"],["browswable","browsable"],["browswe","browse"],["browswed","browsed"],["browswer","browser"],["browswers","browsers"],["browswing","browsing"],["brutaly","brutally"],["brwosable","browsable"],["brwose","browse"],["brwosed","browsed"],["brwoser","browser"],["brwosers","browsers"],["brwosing","browsing"],["btye","byte"],["btyes","bytes"],["buad","baud"],["bubbless","bubbles"],["Buddah","Buddha"],["Buddist","Buddhist"],["bufefr","buffer"],["bufer","buffer"],["bufers","buffers"],["buffereed","buffered"],["bufferent","buffered"],["bufferes","buffers"],["bufferred","buffered"],["buffeur","buffer"],["bufffer","buffer"],["bufffers","buffers"],["buffor","buffer"],["buffors","buffers"],["buffr","buffer"],["buffred","buffered"],["buffring","buffering"],["bufufer","buffer"],["buggest","biggest"],["bugous","bogus"],["buguous","bogus"],["bugus","bogus"],["buid","build"],["buider","builder"],["buiders","builders"],["buiding","building"],["buidl","build"],["buidling","building"],["buidlings","buildings"],["buidls","builds"],["buiild","build"],["buik","bulk"],["build-dependancies","build-dependencies"],["build-dependancy","build-dependency"],["build-in","built-in"],["builded","built"],["buildpackge","buildpackage"],["buildpackges","buildpackages"],["builing","building"],["builings","buildings"],["buillt","built"],["built-time","build-time"],["builter","builder"],["builters","builders"],["buinseses","businesses"],["buinsess","business"],["buinsesses","businesses"],["buipd","build"],["buisness","business"],["buisnessman","businessman"],["buissiness","business"],["buissinesses","businesses"],["buit","built"],["buitin","builtin"],["buitins","builtins"],["buitlin","builtin"],["buitlins","builtins"],["buitton","button"],["buittons","buttons"],["buld","build"],["bulding","building"],["bulds","builds"],["bulid","build"],["buliding","building"],["bulids","builds"],["bulit","built"],["bulitin","built-in"],["bulle","bullet"],["bulletted","bulleted"],["bulnerabilities","vulnerabilities"],["bulnerability","vulnerability"],["bulnerable","vulnerable"],["bult","built"],["bult-in","built-in"],["bultin","builtin"],["bumby","bumpy"],["bumpded","bumped"],["bumpt","bump"],["bumpted","bumped"],["bumpter","bumper"],["bumpting","bumping"],["bundel","bundle"],["bundeled","bundled"],["bundels","bundles"],["buoancy","buoyancy"],["bureauracy","bureaucracy"],["burocratic","bureaucratic"],["burried","buried"],["burtst","burst"],["busines","business"],["busness","business"],["bussiness","business"],["bussy","busy"],["buton","button"],["butons","buttons"],["butterly","butterfly"],["buttong","button"],["buttonn","button"],["buttonns","buttons"],["buttosn","buttons"],["buttton","button"],["butttons","buttons"],["buufers","buffers"],["buuild","build"],["buuilds","builds"],["bve","be"],["bwtween","between"],["bypas","bypass"],["bypased","bypassed"],["bypasing","bypassing"],["bytetream","bytestream"],["bytetreams","bytestreams"],["cabint","cabinet"],["cabints","cabinets"],["cacahe","cache"],["cacahes","caches"],["cace","cache"],["cachable","cacheable"],["cacheed","cached"],["cacheing","caching"],["cachline","cacheline"],["cacl","calc"],["caclate","calculate"],["cacluate","calculate"],["cacluated","calculated"],["cacluater","calculator"],["cacluates","calculates"],["cacluating","calculating"],["cacluation","calculation"],["cacluations","calculations"],["cacluator","calculator"],["caclucate","calculate"],["caclucation","calculation"],["caclucations","calculations"],["caclucator","calculator"],["caclulate","calculate"],["caclulated","calculated"],["caclulates","calculates"],["caclulating","calculating"],["caclulation","calculation"],["caclulations","calculations"],["caculate","calculate"],["caculated","calculated"],["caculater","calculator"],["caculates","calculates"],["caculating","calculating"],["caculation","calculation"],["caculations","calculations"],["caculator","calculator"],["cacuses","caucuses"],["cadidate","candidate"],["caefully","carefully"],["Caesarian","Caesarean"],["cahacter","character"],["cahacters","characters"],["cahange","change"],["cahanged","changed"],["cahanges","changes"],["cahanging","changing"],["cahannel","channel"],["caharacter","character"],["caharacters","characters"],["caharcter","character"],["caharcters","characters"],["cahc","cache"],["cahce","cache"],["cahced","cached"],["cahces","caches"],["cahche","cache"],["cahchedb","cachedb"],["cahches","caches"],["cahcing","caching"],["cahcs","caches"],["cahdidate","candidate"],["cahdidates","candidates"],["cahe","cache"],["cahes","caches"],["cahgne","change"],["cahgned","changed"],["cahgner","changer"],["cahgners","changers"],["cahgnes","changes"],["cahgning","changing"],["cahhel","channel"],["cahhels","channels"],["cahined","chained"],["cahing","caching"],["cahining","chaining"],["cahnge","change"],["cahnged","changed"],["cahnges","changes"],["cahnging","changing"],["cahnnel","channel"],["cahnnels","channels"],["cahr","char"],["cahracter","character"],["cahracters","characters"],["cahrging","charging"],["cahrs","chars"],["calaber","caliber"],["calalog","catalog"],["calback","callback"],["calbirate","calibrate"],["calbirated","calibrated"],["calbirates","calibrates"],["calbirating","calibrating"],["calbiration","calibration"],["calbirations","calibrations"],["calbirator","calibrator"],["calbirators","calibrators"],["calcable","calculable"],["calcalate","calculate"],["calciulate","calculate"],["calciulating","calculating"],["calclation","calculation"],["calcluate","calculate"],["calcluated","calculated"],["calcluates","calculates"],["calclulate","calculate"],["calclulated","calculated"],["calclulates","calculates"],["calclulating","calculating"],["calclulation","calculation"],["calclulations","calculations"],["calcualate","calculate"],["calcualated","calculated"],["calcualates","calculates"],["calcualating","calculating"],["calcualation","calculation"],["calcualations","calculations"],["calcualte","calculate"],["calcualted","calculated"],["calcualter","calculator"],["calcualtes","calculates"],["calcualting","calculating"],["calcualtion","calculation"],["calcualtions","calculations"],["calcualtor","calculator"],["calcuate","calculate"],["calcuated","calculated"],["calcuates","calculates"],["calcuation","calculation"],["calcuations","calculations"],["calculaion","calculation"],["calculataed","calculated"],["calculater","calculator"],["calculatted","calculated"],["calculatter","calculator"],["calculattion","calculation"],["calculattions","calculations"],["calculaution","calculation"],["calculautions","calculations"],["calculcate","calculate"],["calculcation","calculation"],["calculed","calculated"],["calculs","calculus"],["calcultate","calculate"],["calcultated","calculated"],["calcultater","calculator"],["calcultating","calculating"],["calcultator","calculator"],["calculting","calculating"],["calculuations","calculations"],["calcurate","calculate"],["calcurated","calculated"],["calcurates","calculates"],["calcurating","calculating"],["calcutate","calculate"],["calcutated","calculated"],["calcutates","calculates"],["calcutating","calculating"],["caleed","called"],["caleee","callee"],["calees","callees"],["caler","caller"],["calescing","coalescing"],["caliased","aliased"],["calibraiton","calibration"],["calibraitons","calibrations"],["calibrte","calibrate"],["calibrtion","calibration"],["caligraphy","calligraphy"],["calilng","calling"],["caliming","claiming"],["callabck","callback"],["callabcks","callbacks"],["callack","callback"],["callbacl","callback"],["callbacsk","callback"],["callbak","callback"],["callbakc","callback"],["callbakcs","callbacks"],["callbck","callback"],["callcack","callback"],["callcain","callchain"],["calld","called"],["calle","called"],["callef","called"],["callibrate","calibrate"],["callibrated","calibrated"],["callibrates","calibrates"],["callibrating","calibrating"],["callibration","calibration"],["callibrations","calibrations"],["callibri","calibri"],["callig","calling"],["callint","calling"],["callled","called"],["calllee","callee"],["calloed","called"],["callsr","calls"],["calsses","classes"],["calucalte","calculate"],["calucalted","calculated"],["calucaltes","calculates"],["calucalting","calculating"],["calucaltion","calculation"],["calucaltions","calculations"],["calucate","calculate"],["caluclate","calculate"],["caluclated","calculated"],["caluclater","calculator"],["caluclates","calculates"],["caluclating","calculating"],["caluclation","calculation"],["caluclations","calculations"],["caluclator","calculator"],["caluculate","calculate"],["caluculated","calculated"],["caluculates","calculates"],["caluculating","calculating"],["caluculation","calculation"],["caluculations","calculations"],["calue","value"],["calulate","calculate"],["calulated","calculated"],["calulater","calculator"],["calulates","calculates"],["calulating","calculating"],["calulation","calculation"],["calulations","calculations"],["Cambrige","Cambridge"],["camoflage","camouflage"],["camoflague","camouflage"],["campagin","campaign"],["campain","campaign"],["campaing","campaign"],["campains","campaigns"],["camparing","comparing"],["can;t","can't"],["canadan","canadian"],["canbe","can be"],["cancelaltion","cancellation"],["cancelation","cancellation"],["cancelations","cancellations"],["canceles","cancels"],["cancell","cancel"],["cancelles","cancels"],["cances","cancel"],["cancl","cancel"],["cancle","cancel"],["cancled","canceled"],["candadate","candidate"],["candadates","candidates"],["candiate","candidate"],["candiates","candidates"],["candidat","candidate"],["candidats","candidates"],["candidiate","candidate"],["candidiates","candidates"],["candinate","candidate"],["candinates","candidates"],["canditate","candidate"],["canditates","candidates"],["cange","change"],["canged","changed"],["canges","changes"],["canging","changing"],["canidate","candidate"],["canidates","candidates"],["cann't","can't"],["cann","can"],["cannister","canister"],["cannisters","canisters"],["cannnot","cannot"],["cannobt","cannot"],["cannonical","canonical"],["cannonicalize","canonicalize"],["cannont","cannot"],["cannotation","connotation"],["cannotations","connotations"],["cannott","cannot"],["canonalize","canonicalize"],["canonalized","canonicalized"],["canonalizes","canonicalizes"],["canonalizing","canonicalizing"],["canoncial","canonical"],["canonicalizations","canonicalization"],["canonival","canonical"],["canot","cannot"],["cant'","can't"],["cant't","can't"],["cant;","can't"],["cantact","contact"],["cantacted","contacted"],["cantacting","contacting"],["cantacts","contacts"],["canvase","canvas"],["caost","coast"],["capabable","capable"],["capabicity","capability"],["capabiities","capabilities"],["capabiity","capability"],["capabilies","capabilities"],["capabiliites","capabilities"],["capabilites","capabilities"],["capabilitieis","capabilities"],["capabilitiies","capabilities"],["capabilitires","capabilities"],["capabilitiy","capability"],["capabillity","capability"],["capabilties","capabilities"],["capabiltity","capability"],["capabilty","capability"],["capabitilies","capabilities"],["capablilities","capabilities"],["capablities","capabilities"],["capablity","capability"],["capaciy","capacity"],["capalize","capitalize"],["capalized","capitalized"],["capapbilities","capabilities"],["capatibilities","capabilities"],["capbability","capability"],["capbale","capable"],["capela","capella"],["caperbility","capability"],["Capetown","Cape Town"],["capibilities","capabilities"],["capible","capable"],["capitolize","capitalize"],["cappable","capable"],["captable","capable"],["captial","capital"],["captrure","capture"],["captued","captured"],["capturd","captured"],["caputre","capture"],["caputred","captured"],["caputres","captures"],["caputure","capture"],["carachter","character"],["caracter","character"],["caractere","character"],["caracteristic","characteristic"],["caracterized","characterized"],["caracters","characters"],["carbus","cardbus"],["carefuly","carefully"],["careing","caring"],["carfull","careful"],["cariage","carriage"],["caridge","carriage"],["cariier","carrier"],["carismatic","charismatic"],["Carmalite","Carmelite"],["Carnagie","Carnegie"],["Carnagie-Mellon","Carnegie-Mellon"],["Carnigie","Carnegie"],["Carnigie-Mellon","Carnegie-Mellon"],["carniverous","carnivorous"],["caronavirus","coronavirus"],["caronaviruses","coronaviruses"],["carreer","career"],["carreid","carried"],["carrers","careers"],["carret","caret"],["carriadge","carriage"],["Carribbean","Caribbean"],["Carribean","Caribbean"],["carrien","carrier"],["carrige","carriage"],["carrrier","carrier"],["carryintg","carrying"],["carryng","carrying"],["cartain","certain"],["cartdridge","cartridge"],["cartensian","Cartesian"],["Carthagian","Carthaginian"],["carthesian","cartesian"],["carthographer","cartographer"],["cartiesian","cartesian"],["cartilege","cartilage"],["cartilidge","cartilage"],["cartrige","cartridge"],["caryy","carry"],["cascace","cascade"],["case-insensative","case-insensitive"],["case-insensetive","case-insensitive"],["case-insensistive","case-insensitive"],["case-insensitiv","case-insensitive"],["case-insensitivy","case-insensitivity"],["case-insensitve","case-insensitive"],["case-insenstive","case-insensitive"],["case-insentive","case-insensitive"],["case-insentivite","case-insensitive"],["case-insesitive","case-insensitive"],["case-intensitive","case-insensitive"],["case-sensative","case-sensitive"],["case-sensetive","case-sensitive"],["case-sensistive","case-sensitive"],["case-sensitiv","case-sensitive"],["case-sensitve","case-sensitive"],["case-senstive","case-sensitive"],["case-sentive","case-sensitive"],["case-sentivite","case-sensitive"],["case-sesitive","case-sensitive"],["case-unsensitive","case-insensitive"],["caseinsensative","case-insensitive"],["caseinsensetive","case-insensitive"],["caseinsensistive","case-insensitive"],["caseinsensitiv","case-insensitive"],["caseinsensitve","case-insensitive"],["caseinsenstive","case-insensitive"],["caseinsentive","case-insensitive"],["caseinsentivite","case-insensitive"],["caseinsesitive","case-insensitive"],["caseintensitive","case-insensitive"],["caselessely","caselessly"],["casesensative","case-sensitive"],["casesensetive","casesensitive"],["casesensistive","case-sensitive"],["casesensitiv","case-sensitive"],["casesensitve","case-sensitive"],["casesenstive","case-sensitive"],["casesentive","case-sensitive"],["casesentivite","case-sensitive"],["casesesitive","case-sensitive"],["casette","cassette"],["cashe","cache"],["casion","caisson"],["caspule","capsule"],["caspules","capsules"],["cassawory","cassowary"],["cassowarry","cassowary"],["casue","cause"],["casued","caused"],["casues","causes"],["casuing","causing"],["casulaties","casualties"],["casulaty","casualty"],["cataalogue","catalogue"],["catagori","category"],["catagories","categories"],["catagorization","categorization"],["catagorizations","categorizations"],["catagorized","categorized"],["catagory","category"],["catapillar","caterpillar"],["catapillars","caterpillars"],["catapiller","caterpillar"],["catapillers","caterpillars"],["catastronphic","catastrophic"],["catastropic","catastrophic"],["catastropically","catastrophically"],["catastrphic","catastrophic"],["catche","catch"],["catched","caught"],["catchi","catch"],["catchs","catches"],["categogical","categorical"],["categogically","categorically"],["categogies","categories"],["categogy","category"],["cateogrical","categorical"],["cateogrically","categorically"],["cateogries","categories"],["cateogry","category"],["catepillar","caterpillar"],["catepillars","caterpillars"],["catergorize","categorize"],["catergorized","categorized"],["caterpilar","caterpillar"],["caterpilars","caterpillars"],["caterpiller","caterpillar"],["caterpillers","caterpillars"],["catgorical","categorical"],["catgorically","categorically"],["catgories","categories"],["catgory","category"],["cathlic","catholic"],["catholocism","catholicism"],["catloag","catalog"],["catloaged","cataloged"],["catloags","catalogs"],["catory","factory"],["catpture","capture"],["catpure","capture"],["catpured","captured"],["catpures","captures"],["catterpilar","caterpillar"],["catterpilars","caterpillars"],["catterpillar","caterpillar"],["catterpillars","caterpillars"],["cattleship","battleship"],["caucasion","caucasian"],["cauched","caught"],["caugt","caught"],["cauhgt","caught"],["cauing","causing"],["causees","causes"],["causion","caution"],["causioned","cautioned"],["causions","cautions"],["causious","cautious"],["cavaet","caveat"],["cavaets","caveats"],["ccahe","cache"],["ccale","scale"],["ccertificate","certificate"],["ccertificated","certificated"],["ccertificates","certificates"],["ccertification","certification"],["ccessible","accessible"],["cche","cache"],["cconfiguration","configuration"],["ccordinate","coordinate"],["ccordinates","coordinates"],["ccordinats","coordinates"],["ccoutant","accountant"],["ccpcheck","cppcheck"],["ccurred","occurred"],["ccustom","custom"],["ccustoms","customs"],["cdecompress","decompress"],["ceartype","cleartype"],["Ceasar","Caesar"],["ceate","create"],["ceated","created"],["ceates","creates"],["ceating","creating"],["ceation","creation"],["ceck","check"],["cecked","checked"],["cecker","checker"],["cecking","checking"],["cecks","checks"],["cedential","credential"],["cedentials","credentials"],["cehck","check"],["cehcked","checked"],["cehcker","checker"],["cehcking","checking"],["cehcks","checks"],["Celcius","Celsius"],["celles","cells"],["cellpading","cellpadding"],["cellst","cells"],["cellxs","cells"],["celsuis","celsius"],["cementary","cemetery"],["cemetarey","cemetery"],["cemetaries","cemeteries"],["cemetary","cemetery"],["cenario","scenario"],["cenarios","scenarios"],["cencter","center"],["cencus","census"],["cengter","center"],["censequence","consequence"],["centain","certain"],["cententenial","centennial"],["centerd","centered"],["centisencond","centisecond"],["centisenconds","centiseconds"],["centrifugeable","centrifugable"],["centrigrade","centigrade"],["centriod","centroid"],["centriods","centroids"],["centruies","centuries"],["centruy","century"],["centuties","centuries"],["centuty","century"],["cerain","certain"],["cerainly","certainly"],["cerainty","certainty"],["cerate","create"],["cereates","creates"],["cerimonial","ceremonial"],["cerimonies","ceremonies"],["cerimonious","ceremonious"],["cerimony","ceremony"],["ceromony","ceremony"],["certaily","certainly"],["certaincy","certainty"],["certainity","certainty"],["certaint","certain"],["certaion","certain"],["certan","certain"],["certficate","certificate"],["certficated","certificated"],["certficates","certificates"],["certfication","certification"],["certfications","certifications"],["certficiate","certificate"],["certficiated","certificated"],["certficiates","certificates"],["certficiation","certification"],["certficiations","certifications"],["certfied","certified"],["certfy","certify"],["certian","certain"],["certianly","certainly"],["certicate","certificate"],["certicated","certificated"],["certicates","certificates"],["certication","certification"],["certicicate","certificate"],["certifacte","certificate"],["certifacted","certificated"],["certifactes","certificates"],["certifaction","certification"],["certifcate","certificate"],["certifcated","certificated"],["certifcates","certificates"],["certifcation","certification"],["certifciate","certificate"],["certifciated","certificated"],["certifciates","certificates"],["certifciation","certification"],["certifiate","certificate"],["certifiated","certificated"],["certifiates","certificates"],["certifiating","certificating"],["certifiation","certification"],["certifiations","certifications"],["certificat","certificate"],["certificatd","certificated"],["certificaton","certification"],["certificats","certificates"],["certifice","certificate"],["certificed","certificated"],["certifices","certificates"],["certificion","certification"],["certificste","certificate"],["certificsted","certificated"],["certificstes","certificates"],["certificsting","certificating"],["certificstion","certification"],["certifificate","certificate"],["certifificated","certificated"],["certifificates","certificates"],["certifification","certification"],["certiticate","certificate"],["certiticated","certificated"],["certiticates","certificates"],["certitication","certification"],["cetain","certain"],["cetainly","certainly"],["cetainty","certainty"],["cetrainly","certainly"],["cetting","setting"],["Cgywin","Cygwin"],["chaarges","charges"],["chacacter","character"],["chacacters","characters"],["chache","cache"],["chached","cached"],["chacheline","cacheline"],["chaeck","check"],["chaecked","checked"],["chaecker","checker"],["chaecking","checking"],["chaecks","checks"],["chagne","change"],["chagned","changed"],["chagnes","changes"],["chahged","changed"],["chahging","changing"],["chaied","chained"],["chaing","chain"],["chalenging","challenging"],["challanage","challenge"],["challange","challenge"],["challanged","challenged"],["challanges","challenges"],["challege","challenge"],["chambre","chamber"],["chambres","chambers"],["Champange","Champagne"],["chanage","change"],["chanaged","changed"],["chanager","changer"],["chanages","changes"],["chanaging","changing"],["chanceled","canceled"],["chanceling","canceling"],["chanched","changed"],["chaneged","changed"],["chaneging","changing"],["chanel","channel"],["chanell","channel"],["chanels","channels"],["changable","changeable"],["changeble","changeable"],["changeing","changing"],["changge","change"],["changged","changed"],["changgeling","changeling"],["changges","changes"],["changlog","changelog"],["changuing","changing"],["chanined","chained"],["chaninging","changing"],["chanllenge","challenge"],["chanllenging","challenging"],["channael","channel"],["channe","channel"],["channeles","channels"],["channl","channel"],["channle","channel"],["channles","channels"],["channnel","channel"],["channnels","channels"],["chanses","chances"],["chaper","chapter"],["characaters","characters"],["characer","character"],["characers","characters"],["characeter","character"],["characeters","characters"],["characetrs","characters"],["characher","character"],["charachers","characters"],["charachter","character"],["charachters","characters"],["characstyle","charstyle"],["charactar","character"],["charactaristic","characteristic"],["charactaristics","characteristics"],["charactars","characters"],["characte","character"],["charactear","character"],["charactears","characters"],["characted","character"],["characteds","characters"],["characteer","character"],["characteers","characters"],["characteisation","characterisation"],["characteization","characterization"],["characteor","character"],["characteors","characters"],["characterclasses","character classes"],["characteres","characters"],["characterisic","characteristic"],["characterisically","characteristically"],["characterisicly","characteristically"],["characterisics","characteristics"],["characterisitic","characteristic"],["characterisitics","characteristics"],["characteristicly","characteristically"],["characteritic","characteristic"],["characteritics","characteristics"],["characteritisc","characteristic"],["characteritiscs","characteristics"],["charactersistic","characteristic"],["charactersistically","characteristically"],["charactersistics","characteristics"],["charactersitic","characteristic"],["charactersm","characters"],["characterss","characters"],["characterstic","characteristic"],["characterstically","characteristically"],["characterstics","characteristics"],["charactertistic","characteristic"],["charactertistically","characteristically"],["charactertistics","characteristics"],["charactes","characters"],["charactet","character"],["characteter","character"],["characteteristic","characteristic"],["characteteristics","characteristics"],["characteters","characters"],["charactetistic","characteristic"],["charactetistics","characteristics"],["charactetr","character"],["charactetrs","characters"],["charactets","characters"],["characther","character"],["charactiristic","characteristic"],["charactiristically","characteristically"],["charactiristics","characteristics"],["charactor","character"],["charactors","characters"],["charactristic","characteristic"],["charactristically","characteristically"],["charactristics","characteristics"],["charactrs","characters"],["characts","characters"],["characture","character"],["charakter","character"],["charakters","characters"],["chararacter","character"],["chararacters","characters"],["chararcter","character"],["chararcters","characters"],["charas","chars"],["charascter","character"],["charascters","characters"],["charasmatic","charismatic"],["charater","character"],["charaterize","characterize"],["charaterized","characterized"],["charaters","characters"],["charator","character"],["charators","characters"],["charcater","character"],["charcter","character"],["charcteristic","characteristic"],["charcteristics","characteristics"],["charcters","characters"],["charctor","character"],["charctors","characters"],["charecter","character"],["charecters","characters"],["charector","character"],["chargind","charging"],["charicter","character"],["charicters","characters"],["charictor","character"],["charictors","characters"],["chariman","chairman"],["charistics","characteristics"],["charizma","charisma"],["chartroose","chartreuse"],["chassy","chassis"],["chatacter","character"],["chatacters","characters"],["chatch","catch"],["chater","chapter"],["chawk","chalk"],["chcek","check"],["chceked","checked"],["chceking","checking"],["chceks","checks"],["chck","check"],["chckbox","checkbox"],["cheapeast","cheapest"],["cheatta","cheetah"],["chec","check"],["checbox","checkbox"],["checboxes","checkboxes"],["checg","check"],["checged","checked"],["checheckpoit","checkpoint"],["checheckpoits","checkpoints"],["cheched","checked"],["cheching","checking"],["chechk","check"],["chechs","checks"],["checkalaises","checkaliases"],["checkcsum","checksum"],["checkd","checked"],["checkes","checks"],["checket","checked"],["checkk","check"],["checkng","checking"],["checkoslovakia","czechoslovakia"],["checkox","checkbox"],["checkpoing","checkpoint"],["checkstum","checksum"],["checkstuming","checksumming"],["checkstumming","checksumming"],["checkstums","checksums"],["checksume","checksum"],["checksumed","checksummed"],["checksuming","checksumming"],["checkt","checked"],["checkum","checksum"],["checkums","checksums"],["checkuot","checkout"],["checl","check"],["checled","checked"],["checling","checking"],["checls","checks"],["cheduling","scheduling"],["cheeper","cheaper"],["cheeta","cheetah"],["cheif","chief"],["cheifs","chiefs"],["chek","check"],["chekc","check"],["chekcing","checking"],["chekd","checked"],["cheked","checked"],["chekers","checkers"],["cheking","checking"],["cheks","checks"],["cheksum","checksum"],["cheksums","checksums"],["chello","cello"],["chemcial","chemical"],["chemcially","chemically"],["chemestry","chemistry"],["chemicaly","chemically"],["chenged","changed"],["chennel","channel"],["cherch","church"],["cherchs","churches"],["cherck","check"],["chercking","checking"],["chercks","checks"],["chescksums","checksums"],["chgange","change"],["chganged","changed"],["chganges","changes"],["chganging","changing"],["chidren","children"],["childbird","childbirth"],["childen","children"],["childeren","children"],["childern","children"],["childlren","children"],["chiledren","children"],["chilren","children"],["chineese","Chinese"],["chinense","Chinese"],["chinesse","Chinese"],["chipersuite","ciphersuite"],["chipersuites","ciphersuites"],["chipertext","ciphertext"],["chipertexts","ciphertexts"],["chipet","chipset"],["chipslect","chipselect"],["chipstes","chipsets"],["chiuldren","children"],["chked","checked"],["chnage","change"],["chnaged","changed"],["chnages","changes"],["chnaging","changing"],["chnge","change"],["chnged","changed"],["chnges","changes"],["chnging","changing"],["chnnel","channel"],["choclate","chocolate"],["choicing","choosing"],["choise","choice"],["choises","choices"],["choising","choosing"],["chooose","choose"],["choos","choose"],["choosen","chosen"],["chopipng","chopping"],["choronological","chronological"],["chosed","chose"],["choseen","chosen"],["choser","chooser"],["chosing","choosing"],["chossen","chosen"],["chowsing","choosing"],["chracter","character"],["chracters","characters"],["chractor","character"],["chractors","characters"],["chrminance","chrominance"],["chromum","chromium"],["chuch","church"],["chuks","chunks"],["chunaks","chunks"],["chunc","chunk"],["chunck","chunk"],["chuncked","chunked"],["chuncking","chunking"],["chuncks","chunks"],["chuncksize","chunksize"],["chuncs","chunks"],["chuned","chunked"],["churchs","churches"],["cick","click"],["cicrle","circle"],["cicruit","circuit"],["cicruits","circuits"],["cicular","circular"],["ciculars","circulars"],["cihpher","cipher"],["cihphers","ciphers"],["cilinder","cylinder"],["cilinders","cylinders"],["cilindrical","cylindrical"],["cilyndre","cylinder"],["cilyndres","cylinders"],["cilyndrs","cylinders"],["Cincinatti","Cincinnati"],["Cincinnatti","Cincinnati"],["cinfiguration","configuration"],["cinfigurations","configurations"],["cintaner","container"],["ciontrol","control"],["ciper","cipher"],["cipers","ciphers"],["cipersuite","ciphersuite"],["cipersuites","ciphersuites"],["cipertext","ciphertext"],["cipertexts","ciphertexts"],["ciphe","cipher"],["cipherntext","ciphertext"],["ciphersuit","ciphersuite"],["ciphersuits","ciphersuites"],["ciphersute","ciphersuite"],["ciphersutes","ciphersuites"],["cipheruite","ciphersuite"],["cipheruites","ciphersuites"],["ciphes","ciphers"],["ciphr","cipher"],["ciphrs","ciphers"],["cips","chips"],["circluar","circular"],["circluarly","circularly"],["circluars","circulars"],["circomvent","circumvent"],["circomvented","circumvented"],["circomvents","circumvents"],["circual","circular"],["circuitery","circuitry"],["circulaton","circulation"],["circumferance","circumference"],["circumferencial","circumferential"],["circumsicion","circumcision"],["circumstancial","circumstantial"],["circumstansial","circumstantial"],["circumstnce","circumstance"],["circumstnces","circumstances"],["circumstncial","circumstantial"],["circumstntial","circumstantial"],["circumvernt","circumvent"],["circunference","circumference"],["circunferences","circumferences"],["circunstance","circumstance"],["circunstances","circumstances"],["circunstantial","circumstantial"],["circustances","circumstances"],["circut","circuit"],["circuts","circuits"],["ciricle","circle"],["ciricles","circles"],["ciricuit","circuit"],["ciricuits","circuits"],["ciricular","circular"],["ciricularise","circularise"],["ciricularize","circularize"],["ciriculum","curriculum"],["cirilic","Cyrillic"],["cirillic","Cyrillic"],["ciritc","critic"],["ciritcal","critical"],["ciritcality","criticality"],["ciritcals","criticals"],["ciritcs","critics"],["ciriteria","criteria"],["ciritic","critic"],["ciritical","critical"],["ciriticality","criticality"],["ciriticals","criticals"],["ciritics","critics"],["cirlce","circle"],["cirle","circle"],["cirles","circles"],["cirsumstances","circumstances"],["cirtcuit","circuit"],["cirucal","circular"],["cirucit","circuit"],["cirucits","circuits"],["ciruclar","circular"],["ciruclation","circulation"],["ciruclator","circulator"],["cirucmflex","circumflex"],["cirucular","circular"],["cirucumstance","circumstance"],["cirucumstances","circumstances"],["ciruit","circuit"],["ciruits","circuits"],["cirumflex","circumflex"],["cirumstance","circumstance"],["cirumstances","circumstances"],["civillian","civilian"],["civillians","civilians"],["cjange","change"],["cjanged","changed"],["cjanges","changes"],["cjoice","choice"],["cjoices","choices"],["ckecksum","checksum"],["claaes","classes"],["claculate","calculate"],["claculation","calculation"],["claer","clear"],["claerer","clearer"],["claerly","clearly"],["claibscale","calibscale"],["claime","claim"],["claimes","claims"],["clame","claim"],["claread","cleared"],["clared","cleared"],["clarety","clarity"],["claring","clearing"],["clasic","classic"],["clasical","classical"],["clasically","classically"],["clasification","classification"],["clasified","classified"],["clasifies","classifies"],["clasify","classify"],["clasifying","classifying"],["clasroom","classroom"],["clasrooms","classrooms"],["classess","classes"],["classesss","classes"],["classifcation","classification"],["classifed","classified"],["classifer","classifier"],["classifers","classifiers"],["classificaion","classification"],["classrom","classroom"],["classroms","classrooms"],["classs","class"],["classses","classes"],["clatified","clarified"],["claus","clause"],["clcoksource","clocksource"],["clcosed","closed"],["clea","clean"],["cleaered","cleared"],["cleaing","cleaning"],["cleancacne","cleancache"],["cleaness","cleanness"],["cleanning","cleaning"],["cleannup","cleanup"],["cleanpu","cleanup"],["cleanpus","cleanups"],["cleantup","cleanup"],["cleareance","clearance"],["cleares","clears"],["clearified","clarified"],["clearifies","clarifies"],["clearify","clarify"],["clearifying","clarifying"],["clearling","clearing"],["clearnance","clearance"],["clearnances","clearances"],["clearouput","clearoutput"],["clearted","cleared"],["cleary","clearly"],["cleaup","cleanup"],["cleaups","cleanups"],["cleck","check"],["cleean","clean"],["cleen","clean"],["cleened","cleaned"],["cleens","cleans"],["cleff","clef"],["cleint's","client's"],["cleint","client"],["cleints","clients"],["clened","cleaned"],["clener","cleaner"],["clening","cleaning"],["cler","clear"],["clese","close"],["cleses","closes"],["clevely","cleverly"],["cliboard","clipboard"],["cliboards","clipboards"],["clibpoard","clipboard"],["clibpoards","clipboards"],["cliens","clients"],["cliensite","client-side"],["clienta","client"],["clientelle","clientele"],["clik","click"],["cliks","clicks"],["climer","climber"],["climers","climbers"],["climing","climbing"],["clincial","clinical"],["clinets","clients"],["clinicaly","clinically"],["clipboad","clipboard"],["clipboads","clipboards"],["clipoard","clipboard"],["clipoards","clipboards"],["clipoing","clipping"],["cliuent","client"],["cliuents","clients"],["clloud","cloud"],["cllouded","clouded"],["clloudes","clouds"],["cllouding","clouding"],["cllouds","clouds"],["cloack","cloak"],["cloacks","cloaks"],["cloberring","clobbering"],["clocksourc","clocksource"],["clockw\xEDse","clockwise"],["clock_getttime","clock_gettime"],["cloding","closing"],["cloes","close"],["cloesd","closed"],["cloesed","closed"],["cloesing","closing"],["clonning","cloning"],["clory","glory"],["clos","close"],["closeing","closing"],["closesly","closely"],["closig","closing"],["clossed","closed"],["clossing","closing"],["clossion","collision"],["clossions","collisions"],["cloude","cloud"],["cloudes","clouds"],["cloumn","column"],["cloumns","columns"],["clousre","closure"],["clsoe","close"],["clssroom","classroom"],["clssrooms","classrooms"],["cluase","clause"],["clumn","column"],["clumsly","clumsily"],["cluser","cluster"],["clusetr","cluster"],["clustred","clustered"],["cmak","cmake"],["cmmand","command"],["cmmanded","commanded"],["cmmanding","commanding"],["cmmands","commands"],["cmobination","combination"],["cmoputer","computer"],["cmoputers","computers"],["cna","can"],["cnannel","channel"],["cnat'","can't"],["cnat","can't"],["cnfiguration","configuration"],["cnfigure","configure"],["cnfigured","configured"],["cnfigures","configures"],["cnfiguring","configuring"],["cnosole","console"],["cnosoles","consoles"],["cntain","contain"],["cntains","contains"],["cnter","center"],["co-incided","coincided"],["co-opearte","co-operate"],["co-opeartes","co-operates"],["co-ordinate","coordinate"],["co-ordinates","coordinates"],["coalace","coalesce"],["coalaced","coalesced"],["coalacence","coalescence"],["coalacing","coalescing"],["coalaesce","coalesce"],["coalaesced","coalesced"],["coalaescence","coalescence"],["coalaescing","coalescing"],["coalascece","coalescence"],["coalascence","coalescence"],["coalase","coalesce"],["coalasece","coalescence"],["coalased","coalesced"],["coalasence","coalescence"],["coalases","coalesces"],["coalasing","coalescing"],["coalcece","coalescence"],["coalcence","coalescence"],["coalesc","coalesce"],["coalescsing","coalescing"],["coalesed","coalesced"],["coalesence","coalescence"],["coalessing","coalescing"],["coallate","collate"],["coallates","collates"],["coallating","collating"],["coallece","coalesce"],["coalleced","coalesced"],["coallecence","coalescence"],["coalleces","coalesces"],["coallecing","coalescing"],["coallee","coalesce"],["coalleed","coalesced"],["coalleence","coalescence"],["coallees","coalesces"],["coalleing","coalescing"],["coallesce","coalesce"],["coallesced","coalesced"],["coallesceing","coalescing"],["coallescence","coalescence"],["coallesces","coalesces"],["coallescing","coalescing"],["coallese","coalesce"],["coallesed","coalesced"],["coallesence","coalescence"],["coalleses","coalesces"],["coallesing","coalescing"],["coallesse","coalesce"],["coallessed","coalesced"],["coallessence","coalescence"],["coallesses","coalesces"],["coallessing","coalescing"],["coallision","collision"],["coallisions","collisions"],["coalsce","coalesce"],["coalscece","coalescence"],["coalsced","coalesced"],["coalscence","coalescence"],["coalscing","coalescing"],["coalsece","coalescence"],["coalseced","coalesced"],["coalsecense","coalescence"],["coalsence","coalescence"],["coaslescing","coalescing"],["cobining","combining"],["cobvers","covers"],["coccinele","coccinelle"],["coctail","cocktail"],["cocument","document"],["cocumentation","documentation"],["cocuments","document"],["codeing","coding"],["codepoitn","codepoint"],["codesc","codecs"],["codespel","codespell"],["codesream","codestream"],["codition","condition"],["coditioned","conditioned"],["coditions","conditions"],["codo","code"],["codos","codes"],["coduct","conduct"],["coducted","conducted"],["coducter","conductor"],["coducting","conducting"],["coductor","conductor"],["coducts","conducts"],["coeffcient","coefficient"],["coeffcients","coefficients"],["coefficeint","coefficient"],["coefficeints","coefficients"],["coefficent","coefficient"],["coefficents","coefficients"],["coefficiens","coefficients"],["coefficientss","coefficients"],["coeffiecient","coefficient"],["coeffiecients","coefficients"],["coeffient","coefficient"],["coeffients","coefficients"],["coeficent","coefficient"],["coeficents","coefficients"],["coeficient","coefficient"],["coeficients","coefficients"],["coelesce","coalesce"],["coercable","coercible"],["coerceion","coercion"],["cofeee","coffee"],["cofficient","coefficient"],["cofficients","coefficients"],["cofidence","confidence"],["cofiguration","configuration"],["cofigure","configure"],["cofigured","configured"],["cofigures","configures"],["cofiguring","configuring"],["cofirm","confirm"],["cofirmation","confirmation"],["cofirmations","confirmations"],["cofirmed","confirmed"],["cofirming","confirming"],["cofirms","confirms"],["coform","conform"],["cofrim","confirm"],["cofrimation","confirmation"],["cofrimations","confirmations"],["cofrimed","confirmed"],["cofriming","confirming"],["cofrims","confirms"],["cognizent","cognizant"],["coherance","coherence"],["coherancy","coherency"],["coherant","coherent"],["coherantly","coherently"],["coice","choice"],["coincedentally","coincidentally"],["coinitailize","coinitialize"],["coinside","coincide"],["coinsided","coincided"],["coinsidence","coincidence"],["coinsident","coincident"],["coinsides","coincides"],["coinsiding","coinciding"],["cointain","contain"],["cointained","contained"],["cointaining","containing"],["cointains","contains"],["cokies","cookies"],["colaboration","collaboration"],["colaborations","collaborations"],["colateral","collateral"],["coldplg","coldplug"],["colected","collected"],["colection","collection"],["colections","collections"],["colelction","collection"],["colelctive","collective"],["colerscheme","colorscheme"],["colescing","coalescing"],["colision","collision"],["colission","collision"],["collaberative","collaborative"],["collaction","collection"],["collaobrative","collaborative"],["collaps","collapse"],["collapsable","collapsible"],["collasion","collision"],["collaspe","collapse"],["collasped","collapsed"],["collaspes","collapses"],["collaspible","collapsible"],["collasping","collapsing"],["collationg","collation"],["collborative","collaborative"],["collecing","collecting"],["collecion","collection"],["collecions","collections"],["colleciton","collection"],["collecitons","collections"],["collectin","collection"],["collecton","collection"],["collectons","collections"],["colleection","collection"],["collegue","colleague"],["collegues","colleagues"],["collektion","collection"],["colletion","collection"],["collidies","collides"],["collissions","collisions"],["collistion","collision"],["collistions","collisions"],["colllapses","collapses"],["collocalized","colocalized"],["collonade","colonnade"],["collonies","colonies"],["collony","colony"],["collorscheme","colorscheme"],["collosal","colossal"],["collpase","collapse"],["collpased","collapsed"],["collpases","collapses"],["collpasing","collapsing"],["collsion","collision"],["collsions","collisions"],["collumn","column"],["collumns","columns"],["colmn","column"],["colmns","columns"],["colmuned","columned"],["coloer","color"],["coloeration","coloration"],["coloered","colored"],["coloering","coloring"],["coloers","colors"],["coloful","colorful"],["colomn","column"],["colomns","columns"],["colon-seperated","colon-separated"],["colonizators","colonizers"],["coloringh","coloring"],["colorizoer","colorizer"],["colorpsace","colorspace"],["colorpsaces","colorspaces"],["colose","close"],["coloum","column"],["coloumn","column"],["coloumns","columns"],["coloums","columns"],["colourpsace","colourspace"],["colourpsaces","colourspaces"],["colsed","closed"],["colum","column"],["columm","column"],["colummn","column"],["colummns","columns"],["columms","columns"],["columnn","column"],["columnns","columns"],["columnss","columns"],["columnular","columnar"],["colums","columns"],["columsn","columns"],["colunns","columns"],["comammand","command"],["comamnd","command"],["comamnd-line","command-line"],["comamnded","commanded"],["comamnding","commanding"],["comamndline","commandline"],["comamnds","commands"],["comand","command"],["comand-line","command-line"],["comanded","commanded"],["comanding","commanding"],["comandline","commandline"],["comando","commando"],["comandos","commandos"],["comands","commands"],["comany","company"],["comapany","company"],["comapared","compared"],["comapatibility","compatibility"],["comapatible","compatible"],["comapletion","completion"],["comapnies","companies"],["comapny","company"],["comapre","compare"],["comapring","comparing"],["comaprison","comparison"],["comaptibele","compatible"],["comaptibelities","compatibilities"],["comaptibelity","compatibility"],["comaptible","compatible"],["comarators","comparators"],["comback","comeback"],["combained","combined"],["combanations","combinations"],["combatibility","compatibility"],["combatible","compatible"],["combiantion","combination"],["combiation","combination"],["combiations","combinations"],["combinate","combine"],["combinateion","combination"],["combinateions","combinations"],["combinatins","combinations"],["combinatio","combination"],["combinatios","combinations"],["combinaton","combination"],["combinatorical","combinatorial"],["combinbe","combined"],["combind","combined"],["combinded","combined"],["combiniation","combination"],["combiniations","combinations"],["combinine","combine"],["combintaion","combination"],["combintaions","combinations"],["combusion","combustion"],["comceptually","conceptually"],["comdemnation","condemnation"],["comect","connect"],["comected","connected"],["comecting","connecting"],["comectivity","connectivity"],["comedlib","comedilib"],["comemmorates","commemorates"],["comemoretion","commemoration"],["coment","comment"],["comented","commented"],["comenting","commenting"],["coments","comments"],["comfirm","confirm"],["comflicting","conflicting"],["comformance","conformance"],["comiled","compiled"],["comilers","compilers"],["comination","combination"],["comision","commission"],["comisioned","commissioned"],["comisioner","commissioner"],["comisioning","commissioning"],["comisions","commissions"],["comission","commission"],["comissioned","commissioned"],["comissioner","commissioner"],["comissioning","commissioning"],["comissions","commissions"],["comit","commit"],["comited","committed"],["comitee","committee"],["comiting","committing"],["comits","commits"],["comitted","committed"],["comittee","committee"],["comittees","committees"],["comitter","committer"],["comitting","committing"],["comittish","committish"],["comlain","complain"],["comlained","complained"],["comlainer","complainer"],["comlaining","complaining"],["comlains","complains"],["comlaint","complaint"],["comlaints","complaints"],["comlete","complete"],["comleted","completed"],["comletely","completely"],["comletion","completion"],["comletly","completely"],["comlex","complex"],["comlexity","complexity"],["comlpeter","completer"],["comma-separeted","comma-separated"],["commad","command"],["commadn","command"],["commadn-line","command-line"],["commadnline","commandline"],["commadns","commands"],["commads","commands"],["commandi","command"],["commandoes","commandos"],["commannd","command"],["commans","commands"],["commansd","commands"],["commect","connect"],["commected","connected"],["commecting","connecting"],["commectivity","connectivity"],["commedic","comedic"],["commemerative","commemorative"],["commemmorate","commemorate"],["commemmorating","commemorating"],["commenet","comment"],["commenetd","commented"],["commeneted","commented"],["commenstatus","commentstatus"],["commerical","commercial"],["commerically","commercially"],["commericial","commercial"],["commericially","commercially"],["commerorative","commemorative"],["comming","coming"],["comminication","communication"],["comminity","community"],["comminucating","communicating"],["comminucation","communication"],["commision","commission"],["commisioned","commissioned"],["commisioner","commissioner"],["commisioning","commissioning"],["commisions","commissions"],["commitable","committable"],["commited","committed"],["commitee","committee"],["commiter","committer"],["commiters","committers"],["commitin","committing"],["commiting","committing"],["commitish","committish"],["committ","commit"],["committe","committee"],["committi","committee"],["committis","committees"],["committment","commitment"],["committments","commitments"],["committy","committee"],["commma","comma"],["commma-separated","comma-separated"],["commmand","command"],["commmand-line","command-line"],["commmandline","commandline"],["commmands","commands"],["commmemorated","commemorated"],["commment","comment"],["commmented","commented"],["commmenting","commenting"],["commments","comments"],["commmet","comment"],["commmets","comments"],["commmit","commit"],["commmited","committed"],["commmiting","committing"],["commmits","commits"],["commmitted","committed"],["commmitter","committer"],["commmitters","committers"],["commmitting","committing"],["commmon","common"],["commmunicate","communicate"],["commmunicated","communicated"],["commmunicates","communicates"],["commmunicating","communicating"],["commmunication","communication"],["commmunity","community"],["commna","comma"],["commna-separated","comma-separated"],["commnad","command"],["commnad-line","command-line"],["commnadline","commandline"],["commnads","commands"],["commnand","command"],["commnand-line","command-line"],["commnandline","commandline"],["commnands","commands"],["commnd","command"],["commnd-line","command-line"],["commndline","commandline"],["commnds","commands"],["commnent","comment"],["commnents","comments"],["commnet","comment"],["commnetaries","commentaries"],["commnetary","commentary"],["commnetator","commentator"],["commnetators","commentators"],["commneted","commented"],["commneting","commenting"],["commnets","comments"],["commnication","communication"],["commnities","communities"],["commnity","community"],["commnt","comment"],["commnted","commented"],["commnuative","commutative"],["commnunicating","communicating"],["commnunication","communication"],["commnunity","community"],["commoditiy","commodity"],["commom","common"],["commond","command"],["commongly","commonly"],["commontly","commonly"],["commonweath","commonwealth"],["commpact","compact"],["commpaction","compaction"],["commpare","compare"],["commparisons","comparisons"],["commpatibility","compatibility"],["commpatible","compatible"],["commpessed","compressed"],["commpilation","compilation"],["commpile","compile"],["commpiled","compiled"],["commpiling","compiling"],["commplain","complain"],["commplete","complete"],["commpleted","completed"],["commpletely","completely"],["commpletes","completes"],["commpletion","completion"],["commplex","complex"],["commpliant","compliant"],["commplied","complied"],["commpn","common"],["commponent","component"],["commponents","components"],["commpound","compound"],["commpresd","compressed"],["commpresed","compressed"],["commpresion","compression"],["commpress","compress"],["commpressd","compressed"],["commpressed","compressed"],["commpression","compression"],["commpute","compute"],["commputed","computed"],["commputer","computer"],["commputes","computes"],["commputing","computing"],["commtited","committed"],["commtted","committed"],["commuication","communication"],["commuications","communications"],["commuinications","communications"],["communcated","communicated"],["communcation","communication"],["communcations","communications"],["communciation","communication"],["communiation","communication"],["communicaion","communication"],["communicatie","communication"],["communicaton","communication"],["communitcate","communicate"],["communitcated","communicated"],["communitcates","communicates"],["communitcation","communication"],["communitcations","communications"],["communites","communities"],["communiy","community"],["communiyt","community"],["communuication","communication"],["commutated","commuted"],["commutating","commuting"],["commutive","commutative"],["comnmand","command"],["comnnected","connected"],["comnparing","comparing"],["comnpletion","completion"],["comnpresion","compression"],["comnpress","compress"],["comobobox","combo-box"],["comon","common"],["comonent","component"],["comor","color"],["compability","compatibility"],["compabillity","compatibility"],["compabitiliby","compatibility"],["compabitility","compatibility"],["compagnion","companion"],["compagny","company"],["compaibility","compatibility"],["compain","complain"],["compair","compare"],["compaire","compare"],["compaired","compared"],["compairing","comparing"],["compairison","comparison"],["compairisons","comparisons"],["compairs","compares"],["compansate","compensate"],["compansated","compensated"],["compansates","compensates"],["compansating","compensating"],["compansation","compensation"],["compansations","compensations"],["comparaison","comparison"],["comparare","compare"],["comparasion","comparison"],["comparasions","comparisons"],["comparater","comparator"],["comparation","comparison"],["comparations","comparisons"],["compareable","comparable"],["compareing","comparing"],["compareison","comparison"],["compareisons","comparisons"],["comparements","compartments"],["compariable","comparable"],["comparied","compared"],["comparign","comparing"],["comparigon","comparison"],["comparigons","comparisons"],["compariing","comparing"],["comparion","comparison"],["comparions","comparisons"],["comparios","comparison"],["comparioss","comparisons"],["comparisaion","comparison"],["comparisaions","comparisons"],["comparisation","comparison"],["comparisations","comparisons"],["comparisement","comparison"],["comparisements","comparisons"],["comparisin","comparison"],["comparising","comparing"],["comparisins","comparisons"],["comparision","comparison"],["comparisions","comparisons"],["comparism","comparison"],["comparisment","comparison"],["comparisments","comparisons"],["comparisms","comparisons"],["comparisn","comparison"],["comparisns","comparisons"],["comparispon","comparison"],["comparispons","comparisons"],["comparission","comparison"],["comparissions","comparisons"],["comparisson","comparison"],["comparissons","comparisons"],["comparistion","comparison"],["comparistions","comparisons"],["compariston","comparison"],["comparistons","comparisons"],["comparition","comparison"],["comparitions","comparisons"],["comparititive","comparative"],["comparititively","comparatively"],["comparitive","comparative"],["comparitively","comparatively"],["comparitor","comparator"],["comparitors","comparators"],["comparizon","comparison"],["comparizons","comparisons"],["comparment","compartment"],["comparotor","comparator"],["comparotors","comparators"],["comparre","compare"],["comparsion","comparison"],["comparsions","comparisons"],["compatabable","compatible"],["compatabiity","compatibility"],["compatabile","compatible"],["compatabilities","compatibilities"],["compatability","compatibility"],["compatabillity","compatibility"],["compatabilty","compatibility"],["compatabily","compatibility"],["compatable","compatible"],["compatablility","compatibility"],["compatablities","compatibilities"],["compatablitiy","compatibility"],["compatablity","compatibility"],["compatably","compatibly"],["compataibility","compatibility"],["compataible","compatible"],["compataility","compatibility"],["compatatbility","compatibility"],["compatatble","compatible"],["compatatible","compatible"],["compatator","comparator"],["compatators","comparators"],["compatbile","compatible"],["compatbility","compatibility"],["compatiability","compatibility"],["compatiable","compatible"],["compatiablity","compatibility"],["compatibel","compatible"],["compatibile","compatible"],["compatibiliy","compatibility"],["compatibiltiy","compatibility"],["compatibilty","compatibility"],["compatibily","compatibility"],["compatibity","compatibility"],["compatiblilty","compatibility"],["compatiblities","compatibilities"],["compatiblity","compatibility"],["compation","compaction"],["compatitbility","compatibility"],["compativle","compatible"],["compaytibility","compatibility"],["compeitions","competitions"],["compeletely","completely"],["compelte","complete"],["compeltelyt","completely"],["compeltion","completion"],["compeltly","completely"],["compelx","complex"],["compelxes","complexes"],["compelxities","complexities"],["compelxity","complexity"],["compensantion","compensation"],["compenstate","compensate"],["compenstated","compensated"],["compenstates","compensates"],["competance","competence"],["competant","competent"],["competative","competitive"],["competetive","competitive"],["competions","completions"],["competitiion","competition"],["competive","competitive"],["competiveness","competitiveness"],["compex","complex"],["compfortable","comfortable"],["comphrehensive","comprehensive"],["compiant","compliant"],["compicated","complicated"],["compications","complications"],["compied","compiled"],["compilability","compatibility"],["compilant","compliant"],["compilaton","compilation"],["compilatons","compilations"],["compilcate","complicate"],["compilcated","complicated"],["compilcatedly","complicatedly"],["compilcates","complicates"],["compilcating","complicating"],["compilcation","complication"],["compilcations","complications"],["compileable","compilable"],["compiletime","compile time"],["compiliant","compliant"],["compiliation","compilation"],["compilier","compiler"],["compiliers","compilers"],["compitability","compatibility"],["compitable","compatible"],["compitent","competent"],["compitible","compatible"],["complaing","complaining"],["complanied","complained"],["complate","complete"],["complated","completed"],["complates","completes"],["complating","completing"],["complatly","completely"],["complatness","completeness"],["complats","completes"],["complcated","complicated"],["compleate","complete"],["compleated","completed"],["compleates","completes"],["compleating","completing"],["compleatly","completely"],["compleete","complete"],["compleeted","completed"],["compleetly","completely"],["compleetness","completeness"],["complelely","completely"],["complelte","complete"],["complementt","complement"],["compleness","completeness"],["complession","compression"],["complet","complete"],["completedthe","completed the"],["completeion","completion"],["completelly","completely"],["completelty","completely"],["completelyl","completely"],["completetion","completion"],["completetly","completely"],["completiom","completion"],["completition","completion"],["completley","completely"],["completly","completely"],["completness","completeness"],["complette","complete"],["complettly","completely"],["complety","completely"],["complext","complexity"],["compliace","compliance"],["complianse","compliance"],["compliation","compilation"],["compliations","compilations"],["complied-in","compiled-in"],["complience","compliance"],["complient","compliant"],["complile","compile"],["compliled","compiled"],["compliler","compiler"],["compliles","compiles"],["compliling","compiling"],["compling","compiling"],["complitely","completely"],["complmenet","complement"],["complted","completed"],["compluter","computer"],["compnent","component"],["compnents","components"],["compoennt","component"],["compoent","component"],["compoents","components"],["compoesd","composed"],["compoment","component"],["compoments","components"],["componant","component"],["componants","components"],["componbents","components"],["componding","compounding"],["componeent","component"],["componeents","components"],["componemt","component"],["componemts","components"],["componenet","component"],["componenets","components"],["componens","components"],["componentes","components"],["componet","component"],["componets","components"],["componnents","components"],["componoent","component"],["componoents","components"],["componsites","composites"],["compontent","component"],["compontents","components"],["composablity","composability"],["composibility","composability"],["composiblity","composability"],["composit","composite"],["compositong","compositing"],["composits","composites"],["compount","compound"],["comppatible","compatible"],["comppiler","compiler"],["comppilers","compilers"],["comppliance","compliance"],["comprable","comparable"],["compredded","compressed"],["compresed","compressed"],["compreser","compressor"],["compresers","compressors"],["compreses","compresses"],["compresible","compressible"],["compresing","compressing"],["compresion","compression"],["compresions","compressions"],["compresor","compressor"],["compresors","compressors"],["compressable","compressible"],["compresser","compressor"],["compressers","compressors"],["compresss","compress"],["compresssed","compressed"],["compresssion","compression"],["comprimise","compromise"],["compromize","compromise"],["compromized","compromised"],["compsable","composable"],["compsite","composite"],["comptabile","compatible"],["comptible","compatible"],["comptue","compute"],["compuatation","computation"],["compuation","computation"],["compulsary","compulsory"],["compulsery","compulsory"],["compund","compound"],["compunds","compounds"],["computaion","computation"],["computarized","computerized"],["computaton","computation"],["computtaion","computation"],["computtaions","computations"],["comress","compress"],["comressed","compressed"],["comresses","compresses"],["comressing","compressing"],["comression","compression"],["comrpess","compress"],["comrpessed","compressed"],["comrpesses","compresses"],["comrpessing","compressing"],["comrpession","compression"],["comstraint","constraint"],["comsume","consume"],["comsumed","consumed"],["comsumer","consumer"],["comsumers","consumers"],["comsumes","consumes"],["comsuming","consuming"],["comsumption","consumption"],["comtain","contain"],["comtained","contained"],["comtainer","container"],["comtains","contains"],["comunicate","communicate"],["comunication","communication"],["comunity","community"],["comventions","conventions"],["comverted","converted"],["conain","contain"],["conained","contained"],["conainer","container"],["conainers","containers"],["conaines","contains"],["conaining","containing"],["conains","contains"],["conaint","contain"],["conainted","contained"],["conainter","container"],["conatain","contain"],["conatainer","container"],["conatainers","containers"],["conatains","contains"],["conatin","contain"],["conatined","contained"],["conatiner","container"],["conatiners","containers"],["conatining","containing"],["conatins","contains"],["conbination","combination"],["conbinations","combinations"],["conbtrols","controls"],["concaneted","concatenated"],["concantenated","concatenated"],["concatenaded","concatenated"],["concatenaion","concatenation"],["concatened","concatenated"],["concatentaion","concatenation"],["concatentate","concatenate"],["concatentated","concatenated"],["concatentates","concatenates"],["concatentating","concatenating"],["concatentation","concatenation"],["concatentations","concatenations"],["concatented","concatenated"],["concatinate","concatenate"],["concatinated","concatenated"],["concatination","concatenation"],["concatinations","concatenations"],["concating","concatenating"],["concatonate","concatenate"],["concatonated","concatenated"],["concatonates","concatenates"],["concatonating","concatenating"],["conceed","concede"],["conceedd","conceded"],["concensors","consensus"],["concensus","consensus"],["concentate","concentrate"],["concentated","concentrated"],["concentates","concentrates"],["concentating","concentrating"],["concentation","concentration"],["concentic","concentric"],["concentraze","concentrate"],["concered","concerned"],["concerened","concerned"],["concering","concerning"],["concerntrating","concentrating"],["concicely","concisely"],["concider","consider"],["concidered","considered"],["concidering","considering"],["conciders","considers"],["concieted","conceited"],["concieve","conceive"],["concieved","conceived"],["concious","conscious"],["conciously","consciously"],["conciousness","consciousness"],["concurence","concurrence"],["concurency","concurrency"],["concurent","concurrent"],["concurently","concurrently"],["concurrect","concurrent"],["condamned","condemned"],["condem","condemn"],["condemmed","condemned"],["condfiguration","configuration"],["condfigurations","configurations"],["condfigure","configure"],["condfigured","configured"],["condfigures","configures"],["condfiguring","configuring"],["condict","conduct"],["condicted","conducted"],["condidate","candidate"],["condidates","candidates"],["condident","confident"],["condidential","confidential"],["condidional","conditional"],["condidtion","condition"],["condidtioning","conditioning"],["condidtions","conditions"],["condifurable","configurable"],["condifuration","configuration"],["condifure","configure"],["condifured","configured"],["condig","config"],["condigdialog","configdialog"],["condiiton","condition"],["condionally","conditionally"],["conditial","conditional"],["conditially","conditionally"],["conditialy","conditionally"],["conditianal","conditional"],["conditianally","conditionally"],["conditianaly","conditionally"],["conditionaly","conditionally"],["conditionn","condition"],["conditionnal","conditional"],["conditionnaly","conditionally"],["conditionned","conditioned"],["conditionsof","conditions of"],["conditoinal","conditional"],["conditon","condition"],["conditonal","conditional"],["conditons","conditions"],["condntional","conditional"],["condtiion","condition"],["condtiions","conditions"],["condtion","condition"],["condtional","conditional"],["condtionally","conditionally"],["condtionals","conditionals"],["condtioned","conditioned"],["condtions","conditions"],["condtition","condition"],["condtitional","conditional"],["condtitionals","conditionals"],["condtitions","conditions"],["conecct","connect"],["coneccted","connected"],["coneccting","connecting"],["conecction","connection"],["conecctions","connections"],["conecctivities","connectivities"],["conecctivity","connectivity"],["conecctor","connector"],["conecctors","connectors"],["coneccts","connects"],["conecept","concept"],["conecepts","concepts"],["conecjture","conjecture"],["conecjtures","conjectures"],["conecntrate","concentrate"],["conecntrated","concentrated"],["conecntrates","concentrates"],["conecpt","concept"],["conecpts","concepts"],["conect","connect"],["conected","connected"],["conecting","connecting"],["conection","connection"],["conections","connections"],["conectivities","connectivities"],["conectivity","connectivity"],["conectix","connectix"],["conector","connector"],["conectors","connectors"],["conects","connects"],["conecurrency","concurrency"],["conecutive","consecutive"],["coneect","connect"],["coneected","connected"],["coneecting","connecting"],["coneection","connection"],["coneections","connections"],["coneectivities","connectivities"],["coneectivity","connectivity"],["coneector","connector"],["coneectors","connectors"],["coneects","connects"],["conenct","connect"],["conencted","connected"],["conencting","connecting"],["conenction","connection"],["conenctions","connections"],["conenctivities","connectivities"],["conenctivity","connectivity"],["conenctor","connector"],["conenctors","connectors"],["conencts","connects"],["conenience","convenience"],["conenient","convenient"],["coneninece","convenience"],["coneninet","convenient"],["conent","content"],["conents","contents"],["conergence","convergence"],["conern","concern"],["conerning","concerning"],["conersion","conversion"],["conersions","conversions"],["conert","convert"],["conerted","converted"],["conerter","converter"],["conerters","converters"],["conerting","converting"],["conervative","conservative"],["conesencus","consensus"],["conet","connect"],["coneted","connected"],["coneting","connecting"],["conetion","connection"],["conetions","connections"],["conetivities","connectivities"],["conetivity","connectivity"],["conetnt","content"],["conetor","connector"],["conetors","connectors"],["conets","connects"],["conexant","connexant"],["conferene","conference"],["conferrencing","conferencing"],["confert","convert"],["confety","confetti"],["conffiguration","configuration"],["confgiuration","configuration"],["confgiure","configure"],["confgiured","configured"],["confguration","configuration"],["confgure","configure"],["confgured","configured"],["confict","conflict"],["conficted","conflicted"],["conficts","conflicts"],["confidance","confidence"],["confidantal","confidential"],["confidantally","confidentially"],["confidantals","confidentials"],["confidantial","confidential"],["confidantially","confidentially"],["confidental","confidential"],["confidentally","confidentially"],["confids","confides"],["confifurable","configurable"],["confifuration","configuration"],["confifure","configure"],["confifured","configured"],["configaration","configuration"],["configed","configured"],["configer","configure"],["configiration","configuration"],["configire","configure"],["configiuration","configuration"],["configration","configuration"],["configrations","configurations"],["configred","configured"],["configruation","configuration"],["configruations","configurations"],["configrued","configured"],["configuaration","configuration"],["configuarble","configurable"],["configuare","configure"],["configuared","configured"],["configuarion","configuration"],["configuarions","configurations"],["configuartion","configuration"],["configuartions","configurations"],["configuation","configuration"],["configuations","configurations"],["configue","configure"],["configued","configured"],["configuerd","configured"],["configuered","configured"],["configues","configures"],["configulate","configurate"],["configulation","configuration"],["configulations","configurations"],["configuraion","configuration"],["configuraiton","configuration"],["configuratiens","configurations"],["configuratiom","configuration"],["configurationn","configuration"],["configuratioon","configuration"],["configuratoin","configuration"],["configuratoins","configurations"],["configuraton","configuration"],["configuratons","configurations"],["configuratrions","configurations"],["configuratuion","configuration"],["configureable","configurable"],["configureing","configuring"],["configuretion","configuration"],["configurres","configures"],["configurring","configuring"],["configurses","configures"],["configurtation","configuration"],["configurting","configuring"],["configurtion","configuration"],["configurtoin","configuration"],["configury","configurable"],["configutation","configuration"],["configutations","configurations"],["configute","configure"],["configuted","configured"],["configutes","configures"],["configutration","configuration"],["confim","confirm"],["confimation","confirmation"],["confimations","confirmations"],["confimed","confirmed"],["confiming","confirming"],["confimred","confirmed"],["confims","confirms"],["confiramtion","confirmation"],["confirmacion","confirmation"],["confirmaed","confirmed"],["confirmas","confirms"],["confirmatino","confirmation"],["confirmatinon","confirmation"],["confirmd","confirmed"],["confirmedd","confirmed"],["confirmeed","confirmed"],["confirmming","confirming"],["confiug","config"],["confiugrable","configurable"],["confiugration","configuration"],["confiugrations","configurations"],["confiugre","configure"],["confiugred","configured"],["confiugres","configures"],["confiugring","configuring"],["confiugure","configure"],["conflictin","conflicting"],["conflift","conflict"],["conflit","conflict"],["confoguration","configuration"],["confort","comfort"],["confortable","comfortable"],["confrim","confirm"],["confrimation","confirmation"],["confrimations","confirmations"],["confrimed","confirmed"],["confriming","confirming"],["confrims","confirms"],["confucing","confusing"],["confucion","confusion"],["confuction","conjunction"],["confudion","confusion"],["confue","confuse"],["confued","confused"],["confues","confuses"],["confugiration","configuration"],["confugirble","configurable"],["confugire","configure"],["confugired","configured"],["confugires","configures"],["confugiring","configuring"],["confugrable","configurable"],["confugration","configuration"],["confugre","configure"],["confugred","configured"],["confugres","configures"],["confugring","configuring"],["confugurable","configurable"],["confuguration","configuration"],["confugure","configure"],["confugured","configured"],["confugures","configures"],["confuguring","configuring"],["confuigration","configuration"],["confuigrations","configurations"],["confuing","confusing"],["confunction","conjunction"],["confunder","confounder"],["confunse","confuse"],["confunsed","confused"],["confunses","confuses"],["confunsing","confusing"],["confurable","configurable"],["confuration","configuration"],["confure","configure"],["confured","configured"],["confures","configures"],["confuring","configuring"],["confurse","confuse"],["confursed","confused"],["confurses","confuses"],["confursing","confusing"],["confusting","confusing"],["confuze","confuse"],["confuzed","confused"],["confuzes","confuses"],["confuzing","confusing"],["confuzze","confuse"],["confuzzed","confused"],["confuzzes","confuses"],["confuzzing","confusing"],["congifurable","configurable"],["congifuration","configuration"],["congifure","configure"],["congifured","configured"],["congig","config"],["congigs","configs"],["congiguration","configuration"],["congigurations","configurations"],["congigure","configure"],["congnition","cognition"],["congnitive","cognitive"],["congradulations","congratulations"],["congresional","congressional"],["conider","consider"],["conifguration","configuration"],["conifiguration","configuration"],["conig","config"],["conigurable","configurable"],["conigured","configured"],["conincide","coincide"],["conincidence","coincidence"],["conincident","coincident"],["conincides","coincides"],["coninciding","coinciding"],["coninient","convenient"],["coninstallable","coinstallable"],["coninuation","continuation"],["coninue","continue"],["coninues","continues"],["coninuity","continuity"],["coninuous","continuous"],["conitinue","continue"],["conived","connived"],["conjecutre","conjecture"],["conjonction","conjunction"],["conjonctive","conjunctive"],["conjuction","conjunction"],["conjuctions","conjunctions"],["conjuncion","conjunction"],["conjuntion","conjunction"],["conjuntions","conjunctions"],["conlcude","conclude"],["conlcuded","concluded"],["conlcudes","concludes"],["conlcuding","concluding"],["conlcusion","conclusion"],["conlcusions","conclusions"],["conly","only"],["conmnection","connection"],["conmpress","compress"],["conmpression","compression"],["connaect","connect"],["conncection","connection"],["conncetion","connection"],["connction","connection"],["conncurrent","concurrent"],["connecetd","connected"],["connecion","connection"],["connecions","connections"],["conneciton","connection"],["connecitons","connections"],["connecor","connector"],["connecotr","connector"],["connecstatus","connectstatus"],["connectd","connected"],["connecte","connected"],["connectec","connected"],["connectes","connects"],["connectet","connected"],["connectibity","connectivity"],["connectino","connection"],["connectinos","connections"],["connectins","connections"],["connectiom","connection"],["connectioms","connections"],["connectiona","connection"],["connectionas","connections"],["connectiviy","connectivity"],["connectivty","connectivity"],["connecto","connect"],["connectted","connected"],["connecttion","connection"],["conneection","connection"],["conneiction","connection"],["connektors","connectors"],["connetced","connected"],["connetcion","connection"],["conneted","connected"],["Conneticut","Connecticut"],["connetion","connection"],["connetor","connector"],["connexion","connection"],["connnect","connect"],["connnected","connected"],["connnecting","connecting"],["connnection","connection"],["connnections","connections"],["connnects","connects"],["connot","cannot"],["connstrain","constrain"],["connstrained","constrained"],["connstraint","constraint"],["conntents","contents"],["conntroller","controller"],["conosuer","connoisseur"],["conotation","connotation"],["conotations","connotations"],["conotrol","control"],["conotroled","controlled"],["conotroling","controlling"],["conotrolled","controlled"],["conotrols","controls"],["conpares","compares"],["conplete","complete"],["conpleted","completed"],["conpletes","completes"],["conpleting","completing"],["conpletion","completion"],["conquerd","conquered"],["conquerer","conqueror"],["conquerers","conquerors"],["conqured","conquered"],["conrete","concrete"],["conrol","control"],["conroller","controller"],["conrrespond","correspond"],["conrrespondence","correspondence"],["conrrespondences","correspondences"],["conrrespondent","correspondent"],["conrrespondents","correspondents"],["conrresponding","corresponding"],["conrrespondingly","correspondingly"],["conrresponds","corresponds"],["conrrol","control"],["conrrupt","corrupt"],["conrruptable","corruptible"],["conrrupted","corrupted"],["conrruptible","corruptible"],["conrruption","corruption"],["conrruptions","corruptions"],["conrrupts","corrupts"],["conrtib","contrib"],["conrtibs","contribs"],["consants","constants"],["conscent","consent"],["consciencious","conscientious"],["consciouness","consciousness"],["consctruct","construct"],["consctructed","constructed"],["consctructing","constructing"],["consctruction","construction"],["consctructions","constructions"],["consctructive","constructive"],["consctructor","constructor"],["consctructors","constructors"],["consctructs","constructs"],["consdider","consider"],["consdidered","considered"],["consdiered","considered"],["consdired","considered"],["conseat","conceit"],["conseated","conceited"],["consective","consecutive"],["consectively","consecutively"],["consectutive","consecutive"],["consectuve","consecutive"],["consecuitively","consecutively"],["conseed","concede"],["conseedd","conceded"],["conseeded","conceded"],["conseeds","concedes"],["consenquently","consequently"],["consensis","consensus"],["consentrate","concentrate"],["consentrated","concentrated"],["consentrates","concentrates"],["consept","concept"],["consepts","concepts"],["consequentely","consequently"],["consequentually","consequently"],["consequeseces","consequences"],["consequetive","consecutive"],["consequtive","consecutive"],["consequtively","consecutively"],["consern","concern"],["conserned","concerned"],["conserning","concerning"],["conservativeky","conservatively"],["conservitive","conservative"],["consestently","consistently"],["consevible","conceivable"],["consiciousness","consciousness"],["consicousness","consciousness"],["considder","consider"],["considderation","consideration"],["considdered","considered"],["considdering","considering"],["considerd","considered"],["consideren","considered"],["considerion","consideration"],["considerions","considerations"],["considred","considered"],["consier","consider"],["consiers","considers"],["consifer","consider"],["consifered","considered"],["consious","conscious"],["consisant","consistent"],["consisent","consistent"],["consisently","consistently"],["consisntency","consistency"],["consistancy","consistency"],["consistant","consistent"],["consistantly","consistently"],["consisten","consistent"],["consistend","consistent"],["consistendly","consistently"],["consistendt","consistent"],["consistendtly","consistently"],["consistenly","consistently"],["consistuents","constituents"],["consit","consist"],["consitant","consistent"],["consited","consisted"],["consitency","consistency"],["consitent","consistent"],["consitently","consistently"],["consiting","consisting"],["consitional","conditional"],["consits","consists"],["consituencies","constituencies"],["consituency","constituency"],["consituent","constituent"],["consituents","constituents"],["consitute","constitute"],["consituted","constituted"],["consitutes","constitutes"],["consituting","constituting"],["consitution","constitution"],["consitutional","constitutional"],["consitutuent","constituent"],["consitutuents","constituents"],["consitutute","constitute"],["consitututed","constituted"],["consitututes","constitutes"],["consitututing","constituting"],["consntant","constant"],["consntantly","constantly"],["consntants","constants"],["consol","console"],["consolodate","consolidate"],["consolodated","consolidated"],["consonent","consonant"],["consonents","consonants"],["consorcium","consortium"],["conspiracys","conspiracies"],["conspiriator","conspirator"],["consquence","consequence"],["consquences","consequences"],["consquent","consequent"],["consquently","consequently"],["consrtuct","construct"],["consrtucted","constructed"],["consrtuctor","constructor"],["consrtuctors","constructors"],["consrtucts","constructs"],["consruction","construction"],["consructions","constructions"],["consructor","constructor"],["consructors","constructors"],["constaint","constraint"],["constainted","constrained"],["constaints","constraints"],["constallation","constellation"],["constallations","constellations"],["constan","constant"],["constanly","constantly"],["constantsm","constants"],["constarin","constrain"],["constarint","constraint"],["constarints","constraints"],["constarnation","consternation"],["constatn","constant"],["constatnt","constant"],["constatnts","constants"],["constcurts","constructs"],["constext","context"],["consting","consisting"],["constinually","continually"],["constistency","consistency"],["constists","consists"],["constitently","consistently"],["constituant","constituent"],["constituants","constituents"],["constitue","constitute"],["constitues","constitutes"],["constituion","constitution"],["constituional","constitutional"],["constitutent","constituent"],["constitutents","constituents"],["constly","costly"],["constract","construct"],["constracted","constructed"],["constractor","constructor"],["constractors","constructors"],["constrainsts","constraints"],["constrainted","constrained"],["constraintes","constraints"],["constrainting","constraining"],["constrait","constraint"],["constraits","constraints"],["constrans","constrains"],["constrant","constraint"],["constrants","constraints"],["constrast","contrast"],["constrasts","contrasts"],["constratints","constraints"],["constraucts","constructs"],["constrcuct","construct"],["constrcut","construct"],["constrcuted","constructed"],["constrcution","construction"],["constrcutor","constructor"],["constrcutors","constructors"],["constrcuts","constructs"],["constriants","constraints"],["constrint","constraint"],["constrints","constraints"],["constrollers","controllers"],["construc","construct"],["construces","constructs"],["construcing","constructing"],["construcion","construction"],["construciton","construction"],["construcor","constructor"],["construcs","constructs"],["constructcor","constructor"],["constructer","constructor"],["constructers","constructors"],["constructes","constructs"],["constructred","constructed"],["constructt","construct"],["constructted","constructed"],["constructting","constructing"],["constructtor","constructor"],["constructtors","constructors"],["constructts","constructs"],["constructued","constructed"],["constructur","constructor"],["constructure","constructor"],["constructurs","constructors"],["construktor","constructor"],["construnctor","constructor"],["construrtors","constructors"],["construst","construct"],["construsts","constructs"],["construt","construct"],["construtced","constructed"],["construter","constructor"],["construters","constructors"],["constrution","construction"],["construtor","constructor"],["construtors","constructors"],["consttruct","construct"],["consttructer","constructor"],["consttructers","constructors"],["consttruction","construction"],["consttructor","constructor"],["consttructors","constructors"],["constuct","construct"],["constucted","constructed"],["constucter","constructor"],["constucters","constructors"],["constucting","constructing"],["constuction","construction"],["constuctions","constructions"],["constuctor","constructor"],["constuctors","constructors"],["constucts","constructs"],["consturct","construct"],["consturctor","constructor"],["consuder","consider"],["consuemr","consumer"],["consulant","consultant"],["consultunt","consultant"],["consumate","consummate"],["consumated","consummated"],["consumating","consummating"],["consummed","consumed"],["consummer","consumer"],["consummers","consumers"],["consumtion","consumption"],["contacentaion","concatenation"],["contagen","contagion"],["contaienr","container"],["contaier","container"],["contails","contains"],["contaiminate","contaminate"],["contaiminated","contaminated"],["contaiminating","contaminating"],["containa","contain"],["containees","containers"],["containerr","container"],["containg","containing"],["containging","containing"],["containig","containing"],["containings","containing"],["containining","containing"],["containint","containing"],["containn","contain"],["containner","container"],["containners","containers"],["containns","contains"],["containr","container"],["containrs","containers"],["containted","contained"],["containter","container"],["containters","containers"],["containting","containing"],["containts","contains"],["containuations","continuations"],["contais","contains"],["contaisn","contains"],["contaiun","contain"],["contamporaries","contemporaries"],["contamporary","contemporary"],["contan","contain"],["contaned","contained"],["contanined","contained"],["contaning","containing"],["contanins","contains"],["contans","contains"],["contary","contrary"],["contatenated","concatenated"],["contatining","containing"],["contein","contain"],["conteined","contained"],["conteining","containing"],["conteins","contains"],["contempoary","contemporary"],["contemporaneus","contemporaneous"],["contempory","contemporary"],["conten","contain"],["contence","contents"],["contendor","contender"],["contener","container"],["conteners","containers"],["contenht","content"],["content-negatiotiation","content-negotiation"],["content-negoatiation","content-negotiation"],["content-negoation","content-negotiation"],["content-negociation","content-negotiation"],["content-negogtiation","content-negotiation"],["content-negoitation","content-negotiation"],["content-negoptionsotiation","content-negotiation"],["content-negosiation","content-negotiation"],["content-negotaiation","content-negotiation"],["content-negotaition","content-negotiation"],["content-negotatiation","content-negotiation"],["content-negotation","content-negotiation"],["content-negothiation","content-negotiation"],["content-negotication","content-negotiation"],["content-negotioation","content-negotiation"],["content-negotion","content-negotiation"],["content-negotionation","content-negotiation"],["content-negotiotation","content-negotiation"],["content-negotitaion","content-negotiation"],["content-negotitation","content-negotiation"],["content-negotition","content-negotiation"],["content-negoziation","content-negotiation"],["contentended","contended"],["contentn","content"],["contentss","contents"],["contermporaneous","contemporaneous"],["conterpart","counterpart"],["conterparts","counterparts"],["contersink","countersink"],["contex","context"],["contexta","context"],["contexual","contextual"],["contiains","contains"],["contian","contain"],["contianed","contained"],["contianer","container"],["contianers","containers"],["contianing","containing"],["contians","contains"],["contibute","contribute"],["contibuted","contributed"],["contibutes","contributes"],["contibutor","contributor"],["contigent","contingent"],["contigious","contiguous"],["contigiously","contiguously"],["contignuous","contiguous"],["contigous","contiguous"],["contiguious","contiguous"],["contiguities","continuities"],["contiguos","contiguous"],["contiguous-non","non-contiguous"],["continaing","containing"],["contination","continuation"],["contined","continued"],["continential","continental"],["continging","containing"],["contingous","contiguous"],["continguous","contiguous"],["continious","continuous"],["continiously","continuously"],["continoue","continue"],["continouos","continuous"],["continous","continuous"],["continously","continuously"],["continueing","continuing"],["continuely","continually"],["continuem","continuum"],["continuos","continuous"],["continuosly","continuously"],["continure","continue"],["continusly","continuously"],["continuting","continuing"],["contious","continuous"],["contiously","continuously"],["contiuation","continuation"],["contiue","continue"],["contiuguous","contiguous"],["contiuing","continuing"],["contniue","continue"],["contniued","continued"],["contniues","continues"],["contnt","content"],["contol","control"],["contoler","controller"],["contoller","controller"],["contollers","controllers"],["contolls","controls"],["contols","controls"],["contongency","contingency"],["contorl","control"],["contorled","controlled"],["contorls","controls"],["contoroller","controller"],["contraciction","contradiction"],["contracictions","contradictions"],["contracition","contradiction"],["contracitions","contradictions"],["contracter","contractor"],["contracters","contractors"],["contradically","contradictory"],["contradictary","contradictory"],["contrain","constrain"],["contrainers","containers"],["contraining","constraining"],["contraint","constraint"],["contrainted","constrained"],["contraints","constraints"],["contraitns","constraints"],["contraveining","contravening"],["contravercial","controversial"],["contraversy","controversy"],["contrbution","contribution"],["contribte","contribute"],["contribted","contributed"],["contribtes","contributes"],["contributer","contributor"],["contributers","contributors"],["contries","countries"],["contrinution","contribution"],["contrinutions","contributions"],["contritutions","contributions"],["contriubte","contribute"],["contriubted","contributed"],["contriubtes","contributes"],["contriubting","contributing"],["contriubtion","contribution"],["contriubtions","contributions"],["contrl","control"],["contrller","controller"],["contro","control"],["controlable","controllable"],["controled","controlled"],["controlelrs","controllers"],["controler","controller"],["controlers","controllers"],["controling","controlling"],["controll","control"],["controllerd","controlled"],["controllled","controlled"],["controlller","controller"],["controlllers","controllers"],["controllling","controlling"],["controllor","controller"],["controlls","controls"],["contronl","control"],["contronls","controls"],["controoler","controller"],["controvercial","controversial"],["controvercy","controversy"],["controveries","controversies"],["controversal","controversial"],["controversey","controversy"],["controversials","controversial"],["controvertial","controversial"],["controvery","controversy"],["contrrol","control"],["contrrols","controls"],["contrst","contrast"],["contrsted","contrasted"],["contrsting","contrasting"],["contrsts","contrasts"],["contrtoller","controller"],["contruct","construct"],["contructed","constructed"],["contructing","constructing"],["contruction","construction"],["contructions","constructions"],["contructor","constructor"],["contructors","constructors"],["contructs","constructs"],["contry","country"],["contryie","countryie"],["contsruction","construction"],["contsructor","constructor"],["contstant","constant"],["contstants","constants"],["contstraint","constraint"],["contstructing","constructing"],["contstruction","construction"],["contstructor","constructor"],["contstructors","constructors"],["contur","contour"],["contzains","contains"],["conuntry","country"],["conusmer","consumer"],["convaless","convalesce"],["convax","convex"],["convaxiity","convexity"],["convaxly","convexly"],["convaxness","convexness"],["conveinence","convenience"],["conveinences","conveniences"],["conveinent","convenient"],["conveinience","convenience"],["conveinient","convenient"],["convenant","covenant"],["conveneince","convenience"],["conveniance","convenience"],["conveniant","convenient"],["conveniantly","conveniently"],["convenince","convenience"],["conveninent","convenient"],["convense","convince"],["convential","conventional"],["conventient","convenient"],["convenvient","convenient"],["conver","convert"],["convereted","converted"],["convergance","convergence"],["converion","conversion"],["converions","conversions"],["converison","conversion"],["converitble","convertible"],["conversly","conversely"],["conversoin","conversion"],["converson","conversion"],["conversons","conversions"],["converssion","conversion"],["converst","convert"],["convertable","convertible"],["convertables","convertibles"],["convertet","converted"],["convertion","conversion"],["convertions","conversions"],["convery","convert"],["convesion","conversion"],["convesions","conversions"],["convet","convert"],["conveted","converted"],["conveter","converter"],["conveters","converters"],["conveting","converting"],["convetion","convention"],["convetions","conventions"],["convets","converts"],["conveyer","conveyor"],["conviced","convinced"],["conviencece","convenience"],["convienence","convenience"],["convienent","convenient"],["convienience","convenience"],["convienient","convenient"],["convieniently","conveniently"],["conviently","conveniently"],["conviguration","configuration"],["convigure","configure"],["convination","combination"],["convine","combine"],["convineance","convenience"],["convineances","conveniences"],["convineient","convenient"],["convinence","convenience"],["convinences","conveniences"],["convinent","convenient"],["convinently","conveniently"],["conviniance","convenience"],["conviniances","conveniences"],["convinience","convenience"],["conviniences","conveniences"],["conviniency","convenience"],["conviniencys","conveniences"],["convinient","convenient"],["conviniently","conveniently"],["convining","combining"],["convinve","convince"],["convinved","convinced"],["convinving","convincing"],["convirted","converted"],["convirting","converting"],["convised","convinced"],["convoultion","convolution"],["convoultions","convolutions"],["convovle","convolve"],["convovled","convolved"],["convovling","convolving"],["convrt","convert"],["convserion","conversion"],["conyak","cognac"],["coodinate","coordinate"],["coodinates","coordinates"],["coodrinate","coordinate"],["coodrinates","coordinates"],["cooefficient","coefficient"],["cooefficients","coefficients"],["cooger","cougar"],["cookoo","cuckoo"],["coolent","coolant"],["coolot","culotte"],["coolots","culottes"],["coomand","command"],["coommand","command"],["coomon","common"],["coonstantly","constantly"],["coonstructed","constructed"],["cooordinate","coordinate"],["cooordinates","coordinates"],["coopearte","cooperate"],["coopeartes","cooperates"],["cooporative","cooperative"],["coordanate","coordinate"],["coordanates","coordinates"],["coordenate","coordinate"],["coordenates","coordinates"],["coordiante","coordinate"],["coordiantes","coordinates"],["coordiantion","coordination"],["coordiate","coordinate"],["coordiates","coordinates"],["coordiinates","coordinates"],["coordinatess","coordinates"],["coordinats","coordinates"],["coordindate","coordinate"],["coordindates","coordinates"],["coordine","coordinate"],["coordines","coordinates"],["coording","according"],["coordingate","coordinate"],["coordingates","coordinates"],["coordingly","accordingly"],["coordiniate","coordinate"],["coordiniates","coordinates"],["coordinite","coordinate"],["coordinites","coordinates"],["coordinnate","coordinate"],["coordinnates","coordinates"],["coordintae","coordinate"],["coordintaes","coordinates"],["coordintate","coordinate"],["coordintates","coordinates"],["coordinte","coordinate"],["coordintes","coordinates"],["coorditate","coordinate"],["coordonate","coordinate"],["coordonated","coordinated"],["coordonates","coordinates"],["coorespond","correspond"],["cooresponded","corresponded"],["coorespondend","correspondent"],["coorespondent","correspondent"],["cooresponding","corresponding"],["cooresponds","corresponds"],["cooridate","coordinate"],["cooridated","coordinated"],["cooridates","coordinates"],["cooridnate","coordinate"],["cooridnated","coordinated"],["cooridnates","coordinates"],["coorinate","coordinate"],["coorinates","coordinates"],["coorination","coordination"],["cootdinate","coordinate"],["cootdinated","coordinated"],["cootdinates","coordinates"],["cootdinating","coordinating"],["cootdination","coordination"],["copeing","copying"],["copiese","copies"],["copiing","copying"],["copiler","compiler"],["coplete","complete"],["copleted","completed"],["copletely","completely"],["copletes","completes"],["copmetitors","competitors"],["copmilation","compilation"],["copmonent","component"],["copmutations","computations"],["copntroller","controller"],["coponent","component"],["copoying","copying"],["coppermines","coppermine"],["coppied","copied"],["copright","copyright"],["coprighted","copyrighted"],["coprights","copyrights"],["coproccessor","coprocessor"],["coproccessors","coprocessors"],["coprocesor","coprocessor"],["coprorate","corporate"],["coprorates","corporates"],["coproration","corporation"],["coprorations","corporations"],["coprright","copyright"],["coprrighted","copyrighted"],["coprrights","copyrights"],["copstruction","construction"],["copuright","copyright"],["copurighted","copyrighted"],["copurights","copyrights"],["copute","compute"],["coputed","computed"],["coputer","computer"],["coputes","computes"],["copver","cover"],["copyed","copied"],["copyeight","copyright"],["copyeighted","copyrighted"],["copyeights","copyrights"],["copyied","copied"],["copyrigth","copyright"],["copyrigthed","copyrighted"],["copyrigths","copyrights"],["copyritght","copyright"],["copyritghted","copyrighted"],["copyritghts","copyrights"],["copyrught","copyright"],["copyrughted","copyrighted"],["copyrughts","copyrights"],["copys","copies"],["copytight","copyright"],["copytighted","copyrighted"],["copytights","copyrights"],["copyting","copying"],["corale","chorale"],["cordinate","coordinate"],["cordinates","coordinates"],["cordoroy","corduroy"],["cordump","coredump"],["corecct","correct"],["corecctly","correctly"],["corect","correct"],["corected","corrected"],["corecting","correcting"],["corection","correction"],["corectly","correctly"],["corectness","correctness"],["corects","corrects"],["coreespond","correspond"],["coregated","corrugated"],["corelate","correlate"],["corelated","correlated"],["corelates","correlates"],["corellation","correlation"],["coreolis","Coriolis"],["corerct","correct"],["corerctly","correctly"],["corespond","correspond"],["coresponded","corresponded"],["corespondence","correspondence"],["coresponding","corresponding"],["coresponds","corresponds"],["corfirms","confirms"],["coridal","cordial"],["corispond","correspond"],["cornmitted","committed"],["corordinate","coordinate"],["corordinates","coordinates"],["corordination","coordination"],["corosbonding","corresponding"],["corosion","corrosion"],["corospond","correspond"],["corospondance","correspondence"],["corosponded","corresponded"],["corospondence","correspondence"],["corosponding","corresponding"],["corosponds","corresponds"],["corousel","carousel"],["corparate","corporate"],["corperations","corporations"],["corpration","corporation"],["corproration","corporation"],["corprorations","corporations"],["corrcect","correct"],["corrct","correct"],["corrdinate","coordinate"],["corrdinated","coordinated"],["corrdinates","coordinates"],["corrdinating","coordinating"],["corrdination","coordination"],["corrdinator","coordinator"],["corrdinators","coordinators"],["correclty","correctly"],["correcly","correctly"],["correcpond","correspond"],["correcponded","corresponded"],["correcponding","corresponding"],["correcponds","corresponds"],["correcs","corrects"],["correctably","correctable"],["correctely","correctly"],["correcters","correctors"],["correctlly","correctly"],["correctnes","correctness"],["correcton","correction"],["correctons","corrections"],["correcttness","correctness"],["correctures","correctors"],["correcty","correctly"],["correctyly","correctly"],["correcxt","correct"],["correcy","correct"],["correect","correct"],["correectly","correctly"],["correespond","correspond"],["correesponded","corresponded"],["correespondence","correspondence"],["correespondences","correspondences"],["correespondent","correspondent"],["correesponding","corresponding"],["correesponds","corresponds"],["correlasion","correlation"],["correlatd","correlated"],["correllate","correlate"],["correllation","correlation"],["correllations","correlations"],["correnspond","correspond"],["corrensponded","corresponded"],["correnspondence","correspondence"],["correnspondences","correspondences"],["correnspondent","correspondent"],["correnspondents","correspondents"],["corrensponding","corresponding"],["corrensponds","corresponds"],["correograph","choreograph"],["correponding","corresponding"],["correponds","corresponds"],["correponsing","corresponding"],["correposding","corresponding"],["correpsondence","correspondence"],["correpsonding","corresponding"],["corresond","correspond"],["corresonded","corresponded"],["corresonding","corresponding"],["corresonds","corresponds"],["correspdoning","corresponding"],["correspending","corresponding"],["correspinding","corresponding"],["correspnding","corresponding"],["correspodence","correspondence"],["correspoding","corresponding"],["correspoinding","corresponding"],["correspomd","correspond"],["correspomded","corresponded"],["correspomdence","correspondence"],["correspomdences","correspondences"],["correspomdent","correspondent"],["correspomdents","correspondents"],["correspomding","corresponding"],["correspomds","corresponds"],["correspon","correspond"],["correspondance","correspondence"],["correspondances","correspondences"],["correspondant","correspondent"],["correspondants","correspondents"],["correspondd","corresponded"],["correspondend","correspondent"],["correspondes","corresponds"],["correspondg","corresponding"],["correspondig","corresponding"],["corresponed","corresponded"],["corresponging","corresponding"],["corresponing","corresponding"],["correspons","corresponds"],["corresponsding","corresponding"],["corresponsing","corresponding"],["correspont","correspond"],["correspontence","correspondence"],["correspontences","correspondences"],["correspontend","correspondent"],["correspontent","correspondent"],["correspontents","correspondents"],["corresponting","corresponding"],["corresponts","corresponds"],["correspoond","correspond"],["corressponding","corresponding"],["corret","correct"],["correted","corrected"],["corretion","correction"],["corretly","correctly"],["corridoor","corridor"],["corridoors","corridors"],["corrispond","correspond"],["corrispondant","correspondent"],["corrispondants","correspondents"],["corrisponded","corresponded"],["corrispondence","correspondence"],["corrispondences","correspondences"],["corrisponding","corresponding"],["corrisponds","corresponds"],["corrleation","correlation"],["corrleations","correlations"],["corrolated","correlated"],["corrolates","correlates"],["corrolation","correlation"],["corrolations","correlations"],["corrrect","correct"],["corrrected","corrected"],["corrrecting","correcting"],["corrrection","correction"],["corrrections","corrections"],["corrrectly","correctly"],["corrrectness","correctness"],["corrrects","corrects"],["corrresponding","corresponding"],["corrresponds","corresponds"],["corrrupt","corrupt"],["corrrupted","corrupted"],["corrruption","corruption"],["corrseponding","corresponding"],["corrspond","correspond"],["corrsponded","corresponded"],["corrsponding","corresponding"],["corrsponds","corresponds"],["corrupeted","corrupted"],["corruptable","corruptible"],["corruptiuon","corruption"],["cors-site","cross-site"],["cors-sute","cross-site"],["corse","course"],["corsor","cursor"],["corss-compiling","cross-compiling"],["corss-site","cross-site"],["corss-sute","cross-site"],["corsshair","crosshair"],["corsshairs","crosshairs"],["corssite","cross-site"],["corsssite","cross-site"],["corsssute","cross-site"],["corssute","cross-site"],["corupt","corrupt"],["corupted","corrupted"],["coruption","corruption"],["coruptions","corruptions"],["corupts","corrupts"],["corus","chorus"],["corvering","covering"],["cosed","closed"],["cosnsrain","constrain"],["cosnsrained","constrained"],["cosntitutive","constitutive"],["cosntrain","constrain"],["cosntrained","constrained"],["cosntraining","constraining"],["cosntraint","constraint"],["cosntraints","constraints"],["cosntructed","constructed"],["cosntructor","constructor"],["cosnumer","consumer"],["cosolation","consolation"],["cosole","console"],["cosoled","consoled"],["cosoles","consoles"],["cosoling","consoling"],["costant","constant"],["costexpr","constexpr"],["costitution","constitution"],["costruct","construct"],["costructer","constructor"],["costructor","constructor"],["costumary","customary"],["costumize","customize"],["cotain","contain"],["cotained","contained"],["cotainer","container"],["cotains","contains"],["cotave","octave"],["cotaves","octaves"],["cotnain","contain"],["cotnained","contained"],["cotnainer","container"],["cotnainers","containers"],["cotnaining","containing"],["cotnains","contains"],["cotranser","cotransfer"],["cotrasferred","cotransferred"],["cotrasfers","cotransfers"],["cotrol","control"],["cotroll","control"],["cotrolled","controlled"],["cotroller","controller"],["cotrolles","controls"],["cotrolling","controlling"],["cotrolls","controls"],["cotrols","controls"],["cotten","cotton"],["coucil","council"],["coud","could"],["coudn't","couldn't"],["coudnt","couldn't"],["coul","could"],["could'nt","couldn't"],["could't","couldn't"],["couldent","couldn't"],["coulden`t","couldn't"],["couldn;t","couldn't"],["couldnt'","couldn't"],["couldnt","couldn't"],["couldnt;","couldn't"],["coulmns","columns"],["couln't","couldn't"],["couloumb","coulomb"],["coult","could"],["coummunities","communities"],["coummunity","community"],["coumpound","compound"],["coumpounds","compounds"],["counded","counted"],["counding","counting"],["coundition","condition"],["counds","counts"],["counld","could"],["counpound","compound"],["counpounds","compounds"],["countain","contain"],["countainer","container"],["countainers","containers"],["countains","contains"],["counterfit","counterfeit"],["counterfits","counterfeits"],["counterintuive","counter intuitive"],["countermeausure","countermeasure"],["countermeausures","countermeasures"],["counterpar","counterpart"],["counterpoart","counterpart"],["counterpoarts","counterparts"],["countinue","continue"],["courtesey","courtesy"],["cousing","cousin"],["couted","counted"],["couter","counter"],["coutermeasuere","countermeasure"],["coutermeasueres","countermeasures"],["coutermeasure","countermeasure"],["coutermeasures","countermeasures"],["couterpart","counterpart"],["couting","counting"],["coutner","counter"],["coutners","counters"],["couuld","could"],["couuldn't","couldn't"],["covarage","coverage"],["covarages","coverages"],["covarege","coverage"],["covection","convection"],["covention","convention"],["coventions","conventions"],["coverd","covered"],["covere","cover"],["coveres","covers"],["covergence","convergence"],["coverred","covered"],["coversion","conversion"],["coversions","conversions"],["coverting","converting"],["covnersion","conversion"],["covnert","convert"],["covnerted","converted"],["covnerter","converter"],["covnerters","converters"],["covnertible","convertible"],["covnerting","converting"],["covnertor","converter"],["covnertors","converters"],["covnerts","converts"],["covriance","covariance"],["covriate","covariate"],["covriates","covariates"],["coyp","copy"],["coypright","copyright"],["coyprighted","copyrighted"],["coyprights","copyrights"],["coyright","copyright"],["coyrighted","copyrighted"],["coyrights","copyrights"],["cpacities","capacities"],["cpacity","capacity"],["cpation","caption"],["cpcheck","cppcheck"],["cpontent","content"],["cppp","cpp"],["cpuld","could"],["craced","graced"],["craceful","graceful"],["cracefully","gracefully"],["cracefulness","gracefulness"],["craceless","graceless"],["cracing","gracing"],["crahed","crashed"],["crahes","crashes"],["crahses","crashes"],["crashaes","crashes"],["crasheed","crashed"],["crashees","crashes"],["crashess","crashes"],["crashign","crashing"],["crashs","crashes"],["crationist","creationist"],["crationists","creationists"],["creaate","create"],["creadential","credential"],["creadentialed","credentialed"],["creadentials","credentials"],["creaed","created"],["creaeted","created"],["creasoat","creosote"],["creastor","creator"],["creatation","creation"],["createa","create"],["createable","creatable"],["createdd","created"],["createing","creating"],["createive","creative"],["creatning","creating"],["creatre","create"],["creatred","created"],["creats","creates"],["credate","created"],["credetial","credential"],["credetials","credentials"],["credidential","credential"],["credidentials","credentials"],["credintial","credential"],["credintials","credentials"],["credis","credits"],["credists","credits"],["creditted","credited"],["creedence","credence"],["cresent","crescent"],["cresits","credits"],["cretae","create"],["cretaed","created"],["cretaes","creates"],["cretaing","creating"],["cretate","create"],["cretated","created"],["cretates","creates"],["cretating","creating"],["cretator","creator"],["cretators","creators"],["creted","created"],["creteria","criteria"],["crewsant","croissant"],["cricital","critical"],["cricitally","critically"],["cricitals","criticals"],["crirical","critical"],["crirically","critically"],["criricals","criticals"],["critcal","critical"],["critcally","critically"],["critcals","criticals"],["critcial","critical"],["critcially","critically"],["critcials","criticals"],["criteak","critique"],["critera","criteria"],["critereon","criterion"],["criterias","criteria"],["criteriom","criterion"],["criticial","critical"],["criticially","critically"],["criticials","criticals"],["criticists","critics"],["critiera","criteria"],["critiical","critical"],["critiically","critically"],["critiicals","criticals"],["critisising","criticising"],["critisism","criticism"],["critisisms","criticisms"],["critized","criticized"],["critizing","criticizing"],["croch","crotch"],["crockadile","crocodile"],["crockodiles","crocodiles"],["cronological","chronological"],["cronologically","chronologically"],["croppped","cropped"],["cros","cross"],["cros-site","cross-site"],["cros-sute","cross-site"],["croshet","crochet"],["crosreference","cross-reference"],["crosreferenced","cross-referenced"],["crosreferences","cross-references"],["cross-commpilation","cross-compilation"],["cross-orgin","cross-origin"],["crossgne","crossgen"],["crossin","crossing"],["crossite","cross-site"],["crossreference","cross-reference"],["crossreferenced","cross-referenced"],["crossreferences","cross-references"],["crosssite","cross-site"],["crosssute","cross-site"],["crossute","cross-site"],["crowdsigna","crowdsignal"],["crowkay","croquet"],["crowm","crown"],["crrespond","correspond"],["crsytal","crystal"],["crsytalline","crystalline"],["crsytallisation","crystallisation"],["crsytallise","crystallise"],["crsytallization","crystallization"],["crsytallize","crystallize"],["crsytallographic","crystallographic"],["crsytals","crystals"],["crtical","critical"],["crtically","critically"],["crticals","criticals"],["crticised","criticised"],["crucialy","crucially"],["crucifiction","crucifixion"],["cruncing","crunching"],["crurrent","current"],["crusies","cruises"],["crusor","cursor"],["crutial","crucial"],["crutially","crucially"],["crutialy","crucially"],["crypted","encrypted"],["cryptocraphic","cryptographic"],["cryptograpic","cryptographic"],["crystalisation","crystallisation"],["cryto","crypto"],["crytpo","crypto"],["csae","case"],["csaes","cases"],["cteate","create"],["cteateing","creating"],["cteater","creator"],["cteates","creates"],["cteating","creating"],["cteation","creation"],["cteations","creations"],["cteator","creator"],["ctificate","certificate"],["ctificated","certificated"],["ctificates","certificates"],["ctification","certification"],["cuasality","causality"],["cuasation","causation"],["cuase","cause"],["cuased","caused"],["cuases","causes"],["cuasing","causing"],["cuestion","question"],["cuestioned","questioned"],["cuestions","questions"],["cuileoga","cuileog"],["culiminating","culminating"],["cumlative","cumulative"],["cummand","command"],["cummulated","cumulated"],["cummulative","cumulative"],["cummunicate","communicate"],["cumulatative","cumulative"],["cumulattive","cumulative"],["cuncurency","concurrency"],["curch","church"],["curcuit","circuit"],["curcuits","circuits"],["curcumstance","circumstance"],["curcumstances","circumstances"],["cureful","careful"],["curefully","carefully"],["curefuly","carefully"],["curent","current"],["curentfilter","currentfilter"],["curently","currently"],["curernt","current"],["curerntly","currently"],["curev","curve"],["curevd","curved"],["curevs","curves"],["curiousities","curiosities"],["curiousity's","curiosity's"],["curiousity","curiosity"],["curnilinear","curvilinear"],["currecnies","currencies"],["currecny","currency"],["currected","corrected"],["currecting","correcting"],["curreent","current"],["curreents","currents"],["curremt","current"],["curremtly","currently"],["curremts","currents"],["curren","current"],["currenlty","currently"],["currenly","currently"],["currennt","current"],["currenntly","currently"],["currennts","currents"],["currentl","currently"],["currentlly","currently"],["currentry","currently"],["currenty","currently"],["curresponding","corresponding"],["curretly","currently"],["curretnly","currently"],["curriculem","curriculum"],["currious","curious"],["currnet","current"],["currnt","current"],["currntly","currently"],["curros","cursor"],["currrency","currency"],["currrent","current"],["currrently","currently"],["curruent","current"],["currupt","corrupt"],["curruptable","corruptible"],["currupted","corrupted"],["curruptible","corruptible"],["curruption","corruption"],["curruptions","corruptions"],["currupts","corrupts"],["currus","cirrus"],["curser","cursor"],["cursot","cursor"],["cursro","cursor"],["curvatrue","curvature"],["curvatrues","curvatures"],["curvelinear","curvilinear"],["cusstom","custom"],["cusstomer","customer"],["cusstomers","customers"],["cusstomizable","customizable"],["cusstomization","customization"],["cusstomize","customize"],["cusstomized","customized"],["cusstoms","customs"],["custoisable","customisable"],["custoisation","customisation"],["custoise","customise"],["custoised","customised"],["custoiser","customiser"],["custoisers","customisers"],["custoising","customising"],["custoizable","customizable"],["custoization","customization"],["custoize","customize"],["custoized","customized"],["custoizer","customizer"],["custoizers","customizers"],["custoizing","customizing"],["customable","customizable"],["customie","customize"],["customied","customized"],["customisaton","customisation"],["customisatons","customisations"],["customizaton","customization"],["customizatons","customizations"],["customizeble","customizable"],["customn","custom"],["customns","customs"],["customsied","customised"],["customzied","customized"],["custon","custom"],["custonary","customary"],["custoner","customer"],["custoners","customers"],["custonisable","customisable"],["custonisation","customisation"],["custonise","customise"],["custonised","customised"],["custoniser","customiser"],["custonisers","customisers"],["custonising","customising"],["custonizable","customizable"],["custonization","customization"],["custonize","customize"],["custonized","customized"],["custonizer","customizer"],["custonizers","customizers"],["custonizing","customizing"],["custons","customs"],["custormer","customer"],["custum","custom"],["custumer","customer"],["custumised","customised"],["custumized","customized"],["custums","customs"],["cutom","custom"],["cutted","cut"],["cuurently","currently"],["cuurrent","current"],["cuurrents","currents"],["cvignore","cvsignore"],["cxan","cyan"],["cycic","cyclic"],["cyclinder","cylinder"],["cyclinders","cylinders"],["cycular","circular"],["cygin","cygwin"],["cylcic","cyclic"],["cylcical","cyclical"],["cyle","cycle"],["cylic","cyclic"],["cylider","cylinder"],["cyliders","cylinders"],["cylindical","cylindrical"],["cylindre","cylinder"],["cyllinder","cylinder"],["cyllinders","cylinders"],["cylnder","cylinder"],["cylnders","cylinders"],["cylynders","cylinders"],["cymk","CMYK"],["cyphersuite","ciphersuite"],["cyphersuites","ciphersuites"],["cyphertext","ciphertext"],["cyphertexts","ciphertexts"],["cyprt","crypt"],["cyprtic","cryptic"],["cyprto","crypto"],["Cyrllic","Cyrillic"],["cyrpto","crypto"],["cyrrent","current"],["cyrrilic","Cyrillic"],["cyrstal","crystal"],["cyrstalline","crystalline"],["cyrstallisation","crystallisation"],["cyrstallise","crystallise"],["cyrstallization","crystallization"],["cyrstallize","crystallize"],["cyrstals","crystals"],["cyrto","crypto"],["cywgin","Cygwin"],["daa","data"],["dabase","database"],["daclaration","declaration"],["dacquiri","daiquiri"],["dadlock","deadlock"],["daed","dead"],["dafault","default"],["dafaults","defaults"],["dafaut","default"],["dafualt","default"],["dafualted","defaulted"],["dafualts","defaults"],["daita","data"],["dake","take"],["dalmation","Dalmatian"],["dalta","delta"],["damamge","damage"],["damamged","damaged"],["damamges","damages"],["damamging","damaging"],["damange","damage"],["damanged","damaged"],["damanges","damages"],["damanging","damaging"],["damenor","demeanor"],["damge","damage"],["dammage","damage"],["dammages","damages"],["danceing","dancing"],["dandidates","candidates"],["daplicating","duplicating"],["Dardenelles","Dardanelles"],["dasboard","dashboard"],["dasboards","dashboards"],["dasdot","dashdot"],["dashbaord","dashboard"],["dashbaords","dashboards"],["dashboad","dashboard"],["dashboads","dashboards"],["dashboar","dashboard"],["dashboars","dashboards"],["dashbord","dashboard"],["dashbords","dashboards"],["dashs","dashes"],["data-strcuture","data-structure"],["data-strcutures","data-structures"],["databaase","database"],["databaases","databases"],["databae","database"],["databaes","database"],["databaeses","databases"],["databas","database"],["databsae","database"],["databsaes","databases"],["databse","database"],["databses","databases"],["datadsir","datadir"],["dataet","dataset"],["dataets","datasets"],["datas","data"],["datastrcuture","datastructure"],["datastrcutures","datastructures"],["datastrem","datastream"],["datatbase","database"],["datatbases","databases"],["datatgram","datagram"],["datatgrams","datagrams"],["datatore","datastore"],["datatores","datastores"],["datatpe","datatype"],["datatpes","datatypes"],["datatpye","datatype"],["datatpyes","datatypes"],["datatset","dataset"],["datatsets","datasets"],["datatstructure","datastructure"],["datatstructures","datastructures"],["datattype","datatype"],["datattypes","datatypes"],["datatye","datatype"],["datatyep","datatype"],["datatyepe","datatype"],["datatyepes","datatypes"],["datatyeps","datatypes"],["datatyes","datatypes"],["datatyoe","datatype"],["datatyoes","datatypes"],["datatytpe","datatype"],["datatytpes","datatypes"],["dataum","datum"],["datbase","database"],["datbases","databases"],["datecreatedd","datecreated"],["datection","detection"],["datections","detections"],["datee","date"],["dateset","dataset"],["datesets","datasets"],["datset","dataset"],["datsets","datasets"],["daugher","daughter"],["daugther","daughter"],["daugthers","daughters"],["dbeian","Debian"],["DCHP","DHCP"],["dcok","dock"],["dcoked","docked"],["dcoker","docker"],["dcoking","docking"],["dcoks","docks"],["dcument","document"],["dcumented","documented"],["dcumenting","documenting"],["dcuments","documents"],["ddelete","delete"],["de-actived","deactivated"],["de-duplacate","de-duplicate"],["de-duplacated","de-duplicated"],["de-duplacates","de-duplicates"],["de-duplacation","de-duplication"],["de-duplacte","de-duplicate"],["de-duplacted","de-duplicated"],["de-duplactes","de-duplicates"],["de-duplaction","de-duplication"],["de-duplaicate","de-duplicate"],["de-duplaicated","de-duplicated"],["de-duplaicates","de-duplicates"],["de-duplaication","de-duplication"],["de-duplate","de-duplicate"],["de-duplated","de-duplicated"],["de-duplates","de-duplicates"],["de-duplation","de-duplication"],["de-fualt","default"],["de-fualts","defaults"],["de-registeres","de-registers"],["deacitivation","deactivation"],["deacitvated","deactivated"],["deactivatiion","deactivation"],["deactive","deactivate"],["deactiveate","deactivate"],["deactived","deactivated"],["deactivete","deactivate"],["deactiveted","deactivated"],["deactivetes","deactivates"],["deactiviate","deactivate"],["deactiviates","deactivates"],["deactiving","deactivating"],["deaemon","daemon"],["deafault","default"],["deafualt","default"],["deafualts","defaults"],["deafult","default"],["deafulted","defaulted"],["deafults","defaults"],["deail","deal"],["deailing","dealing"],["deaktivate","deactivate"],["deaktivated","deactivated"],["dealed","dealt"],["dealilng","dealing"],["dealloacte","deallocate"],["deallocaed","deallocated"],["dealocate","deallocate"],["dealte","delete"],["deamand","demand"],["deamanding","demanding"],["deamands","demands"],["deambigate","disambiguate"],["deambigates","disambiguates"],["deambigation","disambiguation"],["deambiguage","disambiguate"],["deambiguages","disambiguates"],["deambiguate","disambiguate"],["deambiguates","disambiguates"],["deambiguation","disambiguation"],["deamiguate","disambiguate"],["deamiguates","disambiguates"],["deamiguation","disambiguation"],["deamon","daemon"],["deamonisation","daemonisation"],["deamonise","daemonise"],["deamonised","daemonised"],["deamonises","daemonises"],["deamonising","daemonising"],["deamonization","daemonization"],["deamonize","daemonize"],["deamonized","daemonized"],["deamonizes","daemonizes"],["deamonizing","daemonizing"],["deamons","daemons"],["deassering","deasserting"],["deatch","detach"],["deatched","detached"],["deatches","detaches"],["deatching","detaching"],["deatil","detail"],["deatiled","detailed"],["deatiling","detailing"],["deatils","details"],["deativate","deactivate"],["deativated","deactivated"],["deativates","deactivates"],["deativation","deactivation"],["deattach","detach"],["deattached","detached"],["deattaches","detaches"],["deattaching","detaching"],["deattachment","detachment"],["deault","default"],["deaults","defaults"],["deauthenication","deauthentication"],["debain","Debian"],["debateable","debatable"],["debbuger","debugger"],["debehlper","debhelper"],["debgu","debug"],["debgug","debug"],["debguging","debugging"],["debhlper","debhelper"],["debia","Debian"],["debiab","Debian"],["debians","Debian's"],["debina","Debian"],["debloking","deblocking"],["debnia","Debian"],["debth","depth"],["debths","depths"],["debudg","debug"],["debudgged","debugged"],["debudgger","debugger"],["debudgging","debugging"],["debudgs","debugs"],["debufs","debugfs"],["debugee","debuggee"],["debuger","debugger"],["debugg","debug"],["debuggg","debug"],["debuggge","debuggee"],["debuggged","debugged"],["debugggee","debuggee"],["debuggger","debugger"],["debuggging","debugging"],["debugggs","debugs"],["debugginf","debugging"],["debuggs","debugs"],["debuging","debugging"],["decaffinated","decaffeinated"],["decalare","declare"],["decalared","declared"],["decalares","declares"],["decalaring","declaring"],["decalration","declaration"],["decalrations","declarations"],["decalratiosn","declarations"],["decapsulting","decapsulating"],["decathalon","decathlon"],["deccelerate","decelerate"],["deccelerated","decelerated"],["deccelerates","decelerates"],["deccelerating","decelerating"],["decceleration","deceleration"],["deccrement","decrement"],["deccremented","decremented"],["deccrements","decrements"],["Decemer","December"],["decend","descend"],["decendant","descendant"],["decendants","descendants"],["decendentant","descendant"],["decendentants","descendants"],["decending","descending"],["deciaml","decimal"],["deciamls","decimals"],["decices","decides"],["decidate","dedicate"],["decidated","dedicated"],["decidates","dedicates"],["decideable","decidable"],["decidely","decidedly"],["decie","decide"],["deciedd","decided"],["deciede","decide"],["decieded","decided"],["deciedes","decides"],["decieding","deciding"],["decieds","decides"],["deciemal","decimal"],["decies","decides"],["decieve","deceive"],["decieved","deceived"],["decieves","deceives"],["decieving","deceiving"],["decimials","decimals"],["decison","decision"],["decission","decision"],["declar","declare"],["declaraion","declaration"],["declaraions","declarations"],["declarated","declared"],["declaratinos","declarations"],["declaratiom","declaration"],["declaraton","declaration"],["declaratons","declarations"],["declarayion","declaration"],["declarayions","declarations"],["declard","declared"],["declarded","declared"],["declaritive","declarative"],["declaritively","declaratively"],["declarnig","declaring"],["declartated","declared"],["declartation","declaration"],["declartations","declarations"],["declartative","declarative"],["declartator","declarator"],["declartators","declarators"],["declarted","declared"],["declartion","declaration"],["declartions","declarations"],["declartiuon","declaration"],["declartiuons","declarations"],["declartiuve","declarative"],["declartive","declarative"],["declartor","declarator"],["declartors","declarators"],["declataions","declarations"],["declatation","declaration"],["declatations","declarations"],["declated","declared"],["declation","declaration"],["declations","declarations"],["declatory","declaratory"],["decleration","declaration"],["declerations","declarations"],["declration","declaration"],["decocde","decode"],["decocded","decoded"],["decocder","decoder"],["decocders","decoders"],["decocdes","decodes"],["decocding","decoding"],["decocdings","decodings"],["decodded","decoded"],["decodding","decoding"],["decodeing","decoding"],["decomissioned","decommissioned"],["decomissioning","decommissioning"],["decommissionn","decommission"],["decommissionned","decommissioned"],["decommpress","decompress"],["decomoposition","decomposition"],["decomposion","decomposition"],["decomposit","decompose"],["decomposited","decomposed"],["decompositing","decomposing"],["decompositon","decomposition"],["decompositons","decompositions"],["decomposits","decomposes"],["decompostion","decomposition"],["decompostition","decomposition"],["decompres","decompress"],["decompresed","decompressed"],["decompreser","decompressor"],["decompreses","decompresses"],["decompresing","decompressing"],["decompresion","decompression"],["decompresor","decompressor"],["decompressd","decompressed"],["decompresser","decompressor"],["decompresssion","decompression"],["decompse","decompose"],["decond","decode"],["deconde","decode"],["deconded","decoded"],["deconder","decoder"],["deconders","decoders"],["decondes","decodes"],["deconding","decoding"],["decondings","decodings"],["deconstract","deconstruct"],["deconstracted","deconstructed"],["deconstrcutor","deconstructor"],["decopose","decompose"],["decoposes","decomposes"],["decoraded","decorated"],["decoratrion","decoration"],["decorde","decode"],["decorded","decoded"],["decorder","decoder"],["decorders","decoders"],["decordes","decodes"],["decording","decoding"],["decordings","decodings"],["decorrellation","decorrelation"],["decortator","decorator"],["decortive","decorative"],["decose","decode"],["decosed","decoded"],["decoser","decoder"],["decosers","decoders"],["decoses","decodes"],["decosing","decoding"],["decosings","decodings"],["decration","decoration"],["decreace","decrease"],["decreas","decrease"],["decremenet","decrement"],["decremenetd","decremented"],["decremeneted","decremented"],["decrese","decrease"],["decress","decrees"],["decribe","describe"],["decribed","described"],["decribes","describes"],["decribing","describing"],["decriptive","descriptive"],["decriptor","descriptor"],["decriptors","descriptors"],["decrmenet","decrement"],["decrmenetd","decremented"],["decrmeneted","decremented"],["decrment","decrement"],["decrmented","decremented"],["decrmenting","decrementing"],["decrments","decrements"],["decroation","decoration"],["decrpt","decrypt"],["decrpted","decrypted"],["decrption","decryption"],["decrytion","decryption"],["decscription","description"],["decsion","decision"],["decsions","decisions"],["decsiptors","descriptors"],["decsribed","described"],["decsriptor","descriptor"],["decsriptors","descriptors"],["decstiption","description"],["decstiptions","descriptions"],["dectect","detect"],["dectected","detected"],["dectecting","detecting"],["dectection","detection"],["dectections","detections"],["dectector","detector"],["dectivate","deactivate"],["decutable","deductible"],["decutables","deductibles"],["decypher","decipher"],["decyphered","deciphered"],["ded","dead"],["dedault","default"],["dedections","detections"],["dedented","indented"],["dedfined","defined"],["dedidate","dedicate"],["dedidated","dedicated"],["dedidates","dedicates"],["dedly","deadly"],["deductable","deductible"],["deductables","deductibles"],["deduplacate","deduplicate"],["deduplacated","deduplicated"],["deduplacates","deduplicates"],["deduplacation","deduplication"],["deduplacte","deduplicate"],["deduplacted","deduplicated"],["deduplactes","deduplicates"],["deduplaction","deduplication"],["deduplaicate","deduplicate"],["deduplaicated","deduplicated"],["deduplaicates","deduplicates"],["deduplaication","deduplication"],["deduplate","deduplicate"],["deduplated","deduplicated"],["deduplates","deduplicates"],["deduplation","deduplication"],["dedupliate","deduplicate"],["dedupliated","deduplicated"],["deecorator","decorator"],["deeep","deep"],["deelte","delete"],["deendencies","dependencies"],["deendency","dependency"],["defail","detail"],["defailt","default"],["defalt","default"],["defalts","defaults"],["defalut","default"],["defargkey","defragkey"],["defatult","default"],["defaukt","default"],["defaul","default"],["defaulat","default"],["defaulats","defaults"],["defauld","default"],["defaulds","defaults"],["defaule","default"],["defaules","defaults"],["defaulf","default"],["defaulfs","defaults"],["defaulg","default"],["defaulgs","defaults"],["defaulh","default"],["defaulhs","defaults"],["defauling","defaulting"],["defaulit","default"],["defaulits","defaults"],["defaulkt","default"],["defaulkts","defaults"],["defaull","default"],["defaulls","defaults"],["defaullt","default"],["defaullts","defaults"],["defaulr","default"],["defaulrs","defaults"],["defaulrt","default"],["defaulrts","defaults"],["defaultet","defaulted"],["defaulty","default"],["defauly","default"],["defaulys","defaults"],["defaut","default"],["defautl","default"],["defautled","defaulted"],["defautling","defaulting"],["defautls","defaults"],["defautlt","default"],["defautly","default"],["defauts","defaults"],["defautt","default"],["defautted","defaulted"],["defautting","defaulting"],["defautts","defaults"],["defeault","default"],["defeaulted","defaulted"],["defeaulting","defaulting"],["defeaults","defaults"],["defecit","deficit"],["defeine","define"],["defeines","defines"],["defenate","definite"],["defenately","definitely"],["defendent","defendant"],["defendents","defendants"],["defenitely","definitely"],["defenition","definition"],["defenitions","definitions"],["defenitly","definitely"],["deferal","deferral"],["deferals","deferrals"],["deferance","deference"],["defered","deferred"],["deferencing","dereferencing"],["deferentiating","differentiating"],["defering","deferring"],["deferreal","deferral"],["deffensively","defensively"],["defferently","differently"],["deffering","differing"],["defferred","deferred"],["deffine","define"],["deffined","defined"],["deffinition","definition"],["deffinitively","definitively"],["deffirent","different"],["defiantely","defiantly"],["defice","device"],["defien","define"],["defiend","defined"],["defiened","defined"],["defin","define"],["definad","defined"],["definance","defiance"],["definate","definite"],["definately","definitely"],["defination","definition"],["definations","definitions"],["definatly","definitely"],["definding","defining"],["defineas","defines"],["defineed","defined"],["definend","defined"],["definete","definite"],["definetelly","definitely"],["definetely","definitely"],["definetly","definitely"],["definiation","definition"],["definied","defined"],["definietly","definitely"],["definifiton","definition"],["definining","defining"],["defininition","definition"],["defininitions","definitions"],["definintion","definition"],["definit","definite"],["definitian","definition"],["definitiion","definition"],["definitiions","definitions"],["definitio","definition"],["definitios","definitions"],["definitivly","definitively"],["definitly","definitely"],["definitoin","definition"],["definiton","definition"],["definitons","definitions"],["definned","defined"],["definnition","definition"],["defintian","definition"],["defintiion","definition"],["defintiions","definitions"],["defintion","definition"],["defintions","definitions"],["defintition","definition"],["defintivly","definitively"],["defition","definition"],["defitions","definitions"],["deflaut","default"],["defninition","definition"],["defninitions","definitions"],["defnitions","definitions"],["defore","before"],["defqault","default"],["defragmenation","defragmentation"],["defualt","default"],["defualtdict","defaultdict"],["defualts","defaults"],["defult","default"],["defulted","defaulted"],["defulting","defaulting"],["defults","defaults"],["degenarate","degenerate"],["degenarated","degenerated"],["degenarating","degenerating"],["degenaration","degeneration"],["degenracy","degeneracy"],["degenrate","degenerate"],["degenrated","degenerated"],["degenrates","degenerates"],["degenratet","degenerated"],["degenrating","degenerating"],["degenration","degeneration"],["degerate","degenerate"],["degeree","degree"],["degnerate","degenerate"],["degnerated","degenerated"],["degnerates","degenerates"],["degrads","degrades"],["degration","degradation"],["degredation","degradation"],["degreee","degree"],["degreeee","degree"],["degreeees","degrees"],["degreees","degrees"],["deifne","define"],["deifned","defined"],["deifnes","defines"],["deifning","defining"],["deimiter","delimiter"],["deine","define"],["deinitailse","deinitialise"],["deinitailze","deinitialize"],["deinitalized","deinitialized"],["deinstantating","deinstantiating"],["deintialize","deinitialize"],["deintialized","deinitialized"],["deintializing","deinitializing"],["deisgn","design"],["deisgned","designed"],["deisgner","designer"],["deisgners","designers"],["deisgning","designing"],["deisgns","designs"],["deivative","derivative"],["deivatives","derivatives"],["deivce","device"],["deivces","devices"],["deivices","devices"],["deklaration","declaration"],["dekstop","desktop"],["dekstops","desktops"],["dektop","desktop"],["dektops","desktops"],["delagate","delegate"],["delagates","delegates"],["delaloc","delalloc"],["delalyed","delayed"],["delapidated","dilapidated"],["delaraction","declaration"],["delaractions","declarations"],["delarations","declarations"],["delare","declare"],["delared","declared"],["delares","declares"],["delaring","declaring"],["delate","delete"],["delayis","delays"],["delcarations","declarations"],["delcare","declare"],["delcared","declared"],["delcares","declares"],["delclaration","declaration"],["delele","delete"],["delelete","delete"],["deleleted","deleted"],["deleletes","deletes"],["deleleting","deleting"],["delelte","delete"],["delemeter","delimiter"],["delemiter","delimiter"],["delerious","delirious"],["delet","delete"],["deletd","deleted"],["deleteable","deletable"],["deleteed","deleted"],["deleteing","deleting"],["deleteion","deletion"],["deleteting","deleting"],["deletiong","deletion"],["delets","deletes"],["delevopment","development"],["delevopp","develop"],["delgate","delegate"],["delgated","delegated"],["delgates","delegates"],["delgating","delegating"],["delgation","delegation"],["delgations","delegations"],["delgator","delegator"],["delgators","delegators"],["deliberatey","deliberately"],["deliberatly","deliberately"],["deliberite","deliberate"],["deliberitely","deliberately"],["delibery","delivery"],["delibrate","deliberate"],["delibrately","deliberately"],["delievering","delivering"],["delievery","delivery"],["delievred","delivered"],["delievries","deliveries"],["delievry","delivery"],["delimeted","delimited"],["delimeter","delimiter"],["delimeters","delimiters"],["delimiited","delimited"],["delimiiter","delimiter"],["delimiiters","delimiters"],["delimitiaion","delimitation"],["delimitiaions","delimitations"],["delimitiation","delimitation"],["delimitiations","delimitations"],["delimitied","delimited"],["delimitier","delimiter"],["delimitiers","delimiters"],["delimitiing","delimiting"],["delimitimg","delimiting"],["delimition","delimitation"],["delimitions","delimitations"],["delimitis","delimits"],["delimititation","delimitation"],["delimititations","delimitations"],["delimitited","delimited"],["delimititer","delimiter"],["delimititers","delimiters"],["delimititing","delimiting"],["delimitor","delimiter"],["delimitors","delimiters"],["delimitted","delimited"],["delimma","dilemma"],["delimted","delimited"],["delimters","delimiter"],["delink","unlink"],["delivared","delivered"],["delivative","derivative"],["delivatives","derivatives"],["deliverate","deliberate"],["delivermode","deliverymode"],["deliverying","delivering"],["delte","delete"],["delted","deleted"],["deltes","deletes"],["delting","deleting"],["deltion","deletion"],["delusionally","delusively"],["delvery","delivery"],["demaind","demand"],["demenor","demeanor"],["demension","dimension"],["demensional","dimensional"],["demensions","dimensions"],["demodualtor","demodulator"],["demog","demo"],["demographical","demographic"],["demolishon","demolition"],["demolision","demolition"],["demoninator","denominator"],["demoninators","denominators"],["demonstates","demonstrates"],["demonstrat","demonstrate"],["demonstrats","demonstrates"],["demorcracy","democracy"],["demostrate","demonstrate"],["demostrated","demonstrated"],["demostrates","demonstrates"],["demostrating","demonstrating"],["demostration","demonstration"],["demudulator","demodulator"],["denegrating","denigrating"],["denisty","density"],["denomitator","denominator"],["denomitators","denominators"],["densitity","density"],["densly","densely"],["denstiy","density"],["deocde","decode"],["deocded","decoded"],["deocder","decoder"],["deocders","decoders"],["deocdes","decodes"],["deocding","decoding"],["deocdings","decodings"],["deoes","does"],["deoesn't","doesn't"],["deompression","decompression"],["depandance","dependence"],["depandancies","dependencies"],["depandancy","dependency"],["depandent","dependent"],["deparment","department"],["deparmental","departmental"],["deparments","departments"],["depcrecated","deprecated"],["depden","depend"],["depdence","dependence"],["depdencente","dependence"],["depdencentes","dependences"],["depdences","dependences"],["depdencies","dependencies"],["depdency","dependency"],["depdend","depend"],["depdendancies","dependencies"],["depdendancy","dependency"],["depdendant","dependent"],["depdendants","dependents"],["depdended","depended"],["depdendence","dependence"],["depdendences","dependences"],["depdendencies","dependencies"],["depdendency","dependency"],["depdendent","dependent"],["depdendents","dependents"],["depdendet","dependent"],["depdendets","dependents"],["depdending","depending"],["depdends","depends"],["depdenence","dependence"],["depdenences","dependences"],["depdenencies","dependencies"],["depdenency","dependency"],["depdenent","dependent"],["depdenents","dependents"],["depdening","depending"],["depdenncies","dependencies"],["depdenncy","dependency"],["depdens","depends"],["depdent","dependent"],["depdents","dependents"],["depecated","deprecated"],["depedencies","dependencies"],["depedency","dependency"],["depedencys","dependencies"],["depedent","dependent"],["depeding","depending"],["depencencies","dependencies"],["depencency","dependency"],["depencendencies","dependencies"],["depencendency","dependency"],["depencendencys","dependencies"],["depencent","dependent"],["depencies","dependencies"],["depency","dependency"],["dependance","dependence"],["dependancies","dependencies"],["dependancy","dependency"],["dependancys","dependencies"],["dependand","dependent"],["dependcies","dependencies"],["dependcy","dependency"],["dependding","depending"],["dependecies","dependencies"],["dependecy","dependency"],["dependecys","dependencies"],["dependedn","dependent"],["dependees","dependencies"],["dependeing","depending"],["dependenceis","dependencies"],["dependencey","dependency"],["dependencie","dependency"],["dependencied","dependency"],["dependenciens","dependencies"],["dependencis","dependencies"],["dependencys","dependencies"],["dependendencies","dependencies"],["dependendency","dependency"],["dependendent","dependent"],["dependenies","dependencies"],["dependening","depending"],["dependeny","dependency"],["dependet","dependent"],["dependices","dependencies"],["dependicy","dependency"],["dependig","depending"],["dependncies","dependencies"],["dependncy","dependency"],["depened","depend"],["depenedecies","dependencies"],["depenedecy","dependency"],["depenedent","dependent"],["depenencies","dependencies"],["depenencis","dependencies"],["depenency","dependency"],["depenencys","dependencies"],["depenend","depend"],["depenendecies","dependencies"],["depenendecy","dependency"],["depenendence","dependence"],["depenendencies","dependencies"],["depenendency","dependency"],["depenendent","dependent"],["depenending","depending"],["depenent","dependent"],["depenently","dependently"],["depennding","depending"],["depent","depend"],["deperecate","deprecate"],["deperecated","deprecated"],["deperecates","deprecates"],["deperecating","deprecating"],["deploied","deployed"],["deploiment","deployment"],["deploiments","deployments"],["deployement","deployment"],["deploymenet","deployment"],["deploymenets","deployments"],["depndant","dependent"],["depnds","depends"],["deporarily","temporarily"],["deposint","deposing"],["depracated","deprecated"],["depreacte","deprecate"],["depreacted","deprecated"],["depreacts","deprecates"],["depreate","deprecate"],["depreated","deprecated"],["depreates","deprecates"],["depreating","deprecating"],["deprecatedf","deprecated"],["deprectaed","deprecated"],["deprectat","deprecate"],["deprectate","deprecate"],["deprectated","deprecated"],["deprectates","deprecates"],["deprectating","deprecating"],["deprectation","deprecation"],["deprectats","deprecates"],["deprected","deprecated"],["depricate","deprecate"],["depricated","deprecated"],["depricates","deprecates"],["depricating","deprecating"],["dequed","dequeued"],["dequeing","dequeuing"],["deques","dequeues"],["derageable","dirigible"],["derective","directive"],["derectory","directory"],["derefence","dereference"],["derefenced","dereferenced"],["derefencing","dereferencing"],["derefenrence","dereference"],["dereferance","dereference"],["dereferanced","dereferenced"],["dereferances","dereferences"],["dereferencable","dereferenceable"],["dereferencce","dereference"],["dereferencced","dereferenced"],["dereferencces","dereferences"],["dereferenccing","dereferencing"],["derefernce","dereference"],["derefernced","dereferenced"],["dereferncence","dereference"],["dereferncencer","dereferencer"],["dereferncencers","dereferencers"],["dereferncences","dereferences"],["dereferncer","dereferencer"],["dereferncers","dereferencers"],["derefernces","dereferences"],["dereferncing","dereferencing"],["derefernece","dereference"],["derefrencable","dereferenceable"],["derefrence","dereference"],["deregistartion","deregistration"],["deregisted","deregistered"],["deregisteres","deregisters"],["deregistrated","deregistered"],["deregistred","deregistered"],["deregiter","deregister"],["deregiters","deregisters"],["derevative","derivative"],["derevatives","derivatives"],["derferencing","dereferencing"],["derfien","define"],["derfiend","defined"],["derfine","define"],["derfined","defined"],["dergeistered","deregistered"],["dergistration","deregistration"],["deriair","derriere"],["dericed","derived"],["dericteries","directories"],["derictery","directory"],["dericteryes","directories"],["dericterys","directories"],["deriffed","derived"],["derivaties","derivatives"],["derivatio","derivation"],["derivativ","derivative"],["derivativs","derivatives"],["deriviated","derived"],["derivitive","derivative"],["derivitives","derivatives"],["derivitivs","derivatives"],["derivtive","derivative"],["derivtives","derivatives"],["dermine","determine"],["dermined","determined"],["dermines","determines"],["dermining","determining"],["derogitory","derogatory"],["derprecated","deprecated"],["derrivatives","derivatives"],["derrive","derive"],["derrived","derived"],["dertermine","determine"],["derterming","determining"],["derth","dearth"],["derviative","derivative"],["derviatives","derivatives"],["dervie","derive"],["dervied","derived"],["dervies","derives"],["dervived","derived"],["desactivate","deactivate"],["desactivated","deactivated"],["desallocate","deallocate"],["desallocated","deallocated"],["desallocates","deallocates"],["desaster","disaster"],["descallocate","deallocate"],["descallocated","deallocated"],["descchedules","deschedules"],["desccription","description"],["descencing","descending"],["descendands","descendants"],["descibe","describe"],["descibed","described"],["descibes","describes"],["descibing","describing"],["descide","decide"],["descided","decided"],["descides","decides"],["desciding","deciding"],["desciption","description"],["desciptions","descriptions"],["desciptor","descriptor"],["desciptors","descriptors"],["desciribe","describe"],["desciribed","described"],["desciribes","describes"],["desciribing","describing"],["desciription","description"],["desciriptions","descriptions"],["descirption","description"],["descirptor","descriptor"],["descision","decision"],["descisions","decisions"],["descize","disguise"],["descized","disguised"],["descktop","desktop"],["descktops","desktops"],["desconstructed","deconstructed"],["descover","discover"],["descovered","discovered"],["descovering","discovering"],["descovery","discovery"],["descrease","decrease"],["descreased","decreased"],["descreases","decreases"],["descreasing","decreasing"],["descrementing","decrementing"],["descrete","discrete"],["describ","describe"],["describbed","described"],["describibg","describing"],["describng","describing"],["describtion","description"],["describtions","descriptions"],["descrice","describe"],["descriced","described"],["descrices","describes"],["descricing","describing"],["descrie","describe"],["descriibes","describes"],["descriminant","discriminant"],["descriminate","discriminate"],["descriminated","discriminated"],["descriminates","discriminates"],["descriminating","discriminating"],["descriont","description"],["descriotor","descriptor"],["descripe","describe"],["descriped","described"],["descripes","describes"],["descriping","describing"],["descripition","description"],["descripor","descriptor"],["descripors","descriptors"],["descripter","descriptor"],["descripters","descriptors"],["descriptio","description"],["descriptiom","description"],["descriptionm","description"],["descriptior","descriptor"],["descriptiors","descriptors"],["descripto","descriptor"],["descriptoin","description"],["descriptoins","descriptions"],["descripton","description"],["descriptons","descriptions"],["descriptot","descriptor"],["descriptoy","descriptor"],["descriptuve","descriptive"],["descrition","description"],["descritpion","description"],["descritpions","descriptions"],["descritpiton","description"],["descritpitons","descriptions"],["descritpor","descriptor"],["descritpors","descriptors"],["descritpr","descriptor"],["descritpro","descriptor"],["descritpros","descriptors"],["descritprs","descriptors"],["descritption","description"],["descritptions","descriptions"],["descritptive","descriptive"],["descritptor","descriptor"],["descritptors","descriptors"],["descrption","description"],["descrptions","descriptions"],["descrptor","descriptor"],["descrptors","descriptors"],["descrtiption","description"],["descrtiptions","descriptions"],["descrutor","destructor"],["descrybe","describe"],["descrybing","describing"],["descryption","description"],["descryptions","descriptions"],["desctiption","description"],["desctiptor","descriptor"],["desctiptors","descriptors"],["desctop","desktop"],["desctructed","destructed"],["desctruction","destruction"],["desctructive","destructive"],["desctructor","destructor"],["desctructors","destructors"],["descuss","discuss"],["descvription","description"],["descvriptions","descriptions"],["deselct","deselect"],["deselctable","deselectable"],["deselctables","deselectable"],["deselcted","deselected"],["deselcting","deselecting"],["desepears","disappears"],["deserailise","deserialise"],["deserailize","deserialize"],["deserialisazion","deserialisation"],["deserializaed","deserialized"],["deserializazion","deserialization"],["deserialsiation","deserialisation"],["deserialsie","deserialise"],["deserialsied","deserialised"],["deserialsies","deserialises"],["deserialsing","deserialising"],["deserialze","deserialize"],["deserialzed","deserialized"],["deserialzes","deserializes"],["deserialziation","deserialization"],["deserialzie","deserialize"],["deserialzied","deserialized"],["deserialzies","deserializes"],["deserialzing","deserializing"],["desgin","design"],["desgin-mode","design-mode"],["desgined","designed"],["desginer","designer"],["desiar","desire"],["desicate","desiccate"],["desicion","decision"],["desicions","decisions"],["deside","decide"],["desided","decided"],["desides","decides"],["desig","design"],["desigern","designer"],["desigining","designing"],["designd","designed"],["desination","destination"],["desinations","destinations"],["desine","design"],["desing","design"],["desingable","designable"],["desinged","designed"],["desinger","designer"],["desinging","designing"],["desingn","design"],["desingned","designed"],["desingner","designer"],["desingning","designing"],["desingns","designs"],["desings","designs"],["desintaiton","destination"],["desintaitons","destinations"],["desintation","destination"],["desintations","destinations"],["desintegrated","disintegrated"],["desintegration","disintegration"],["desipite","despite"],["desireable","desirable"],["desision","decision"],["desisions","decisions"],["desitable","desirable"],["desitination","destination"],["desitinations","destinations"],["desition","decision"],["desitions","decisions"],["desitned","destined"],["deskop","desktop"],["deskops","desktops"],["desktiop","desktop"],["deskys","disguise"],["deslected","deselected"],["deslects","deselects"],["desltop","desktop"],["desltops","desktops"],["desn't","doesn't"],["desne","dense"],["desnse","dense"],["desogn","design"],["desogned","designed"],["desogner","designer"],["desogning","designing"],["desogns","designs"],["desolve","dissolve"],["desorder","disorder"],["desoriented","disoriented"],["desparately","desperately"],["despatch","dispatch"],["despict","depict"],["despiration","desperation"],["desplay","display"],["desplayed","displayed"],["desplays","displays"],["desposition","disposition"],["desrciption","description"],["desrciptions","descriptions"],["desribe","describe"],["desribed","described"],["desribes","describes"],["desribing","describing"],["desription","description"],["desriptions","descriptions"],["desriptor","descriptor"],["desriptors","descriptors"],["desrire","desire"],["desrired","desired"],["desroyer","destroyer"],["desscribe","describe"],["desscribing","describing"],["desscription","description"],["dessicate","desiccate"],["dessicated","desiccated"],["dessication","desiccation"],["dessigned","designed"],["desstructor","destructor"],["destablized","destabilized"],["destanation","destination"],["destanations","destinations"],["destiantion","destination"],["destiantions","destinations"],["destiation","destination"],["destiations","destinations"],["destinaion","destination"],["destinaions","destinations"],["destinaiton","destination"],["destinaitons","destinations"],["destinarion","destination"],["destinarions","destinations"],["destinataion","destination"],["destinataions","destinations"],["destinatin","destination"],["destinatino","destination"],["destinatinos","destinations"],["destinatins","destinations"],["destinaton","destination"],["destinatons","destinations"],["destinguish","distinguish"],["destintation","destination"],["destintations","destinations"],["destionation","destination"],["destionations","destinations"],["destop","desktop"],["destops","desktops"],["destoried","destroyed"],["destort","distort"],["destory","destroy"],["destoryed","destroyed"],["destorying","destroying"],["destorys","destroys"],["destoy","destroy"],["destoyed","destroyed"],["destrcut","destruct"],["destrcuted","destructed"],["destrcutor","destructor"],["destrcutors","destructors"],["destribute","distribute"],["destributed","distributed"],["destroi","destroy"],["destroied","destroyed"],["destroing","destroying"],["destrois","destroys"],["destroyes","destroys"],["destruciton","destruction"],["destructro","destructor"],["destructros","destructors"],["destruktor","destructor"],["destruktors","destructors"],["destrutor","destructor"],["destrutors","destructors"],["destry","destroy"],["destryed","destroyed"],["destryer","destroyer"],["destrying","destroying"],["destryiong","destroying"],["destryoed","destroyed"],["destryoing","destroying"],["destryong","destroying"],["destrys","destroys"],["destuction","destruction"],["destuctive","destructive"],["destuctor","destructor"],["destuctors","destructors"],["desturcted","destructed"],["desturtor","destructor"],["desturtors","destructors"],["desychronize","desynchronize"],["desychronized","desynchronized"],["detabase","database"],["detachs","detaches"],["detahced","detached"],["detaild","detailed"],["detailled","detailed"],["detais","details"],["detals","details"],["detatch","detach"],["detatched","detached"],["detatches","detaches"],["detatching","detaching"],["detault","default"],["detaulted","defaulted"],["detaulting","defaulting"],["detaults","defaults"],["detction","detection"],["detctions","detections"],["deteced","detected"],["detecing","detecting"],["detecion","detection"],["detecions","detections"],["detectected","detected"],["detectes","detects"],["detectetd","detected"],["detectsion","detection"],["detectsions","detections"],["detemine","determine"],["detemined","determined"],["detemines","determines"],["detemining","determining"],["deteoriated","deteriorated"],["deterant","deterrent"],["deteremine","determine"],["deteremined","determined"],["deteriate","deteriorate"],["deterimined","determined"],["deterine","determine"],["deterioriating","deteriorating"],["determaine","determine"],["determenant","determinant"],["determenistic","deterministic"],["determiens","determines"],["determimnes","determines"],["determin","determine"],["determinated","determined"],["determind","determined"],["determinded","determined"],["determinee","determine"],["determineing","determining"],["determinining","determining"],["deterministinc","deterministic"],["determinne","determine"],["determins","determines"],["determinse","determines"],["determinstic","deterministic"],["determinstically","deterministically"],["determintes","determines"],["determnine","determine"],["deternine","determine"],["detetmine","determine"],["detial","detail"],["detialed","detailed"],["detialing","detailing"],["detials","details"],["detination","destination"],["detinations","destinations"],["detremental","detrimental"],["detremining","determining"],["detrmine","determine"],["detrmined","determined"],["detrmines","determines"],["detrmining","determining"],["detroy","destroy"],["detroyed","destroyed"],["detroying","destroying"],["detroys","destroys"],["detructed","destructed"],["dettach","detach"],["dettaching","detaching"],["detur","detour"],["deturance","deterrence"],["deubug","debug"],["deubuging","debugging"],["deug","debug"],["deugging","debugging"],["devasted","devastated"],["devation","deviation"],["devce","device"],["devcent","decent"],["devcie","device"],["devcies","devices"],["develoers","developers"],["develoment","development"],["develoments","developments"],["develompent","development"],["develompental","developmental"],["develompents","developments"],["develope","develop"],["developement","development"],["developements","developments"],["developmemt","development"],["developmet","development"],["developmetns","developments"],["developmets","developments"],["developp","develop"],["developpe","develop"],["developped","developed"],["developpement","development"],["developper","developer"],["developpers","developers"],["developpment","development"],["develp","develop"],["develped","developed"],["develper","developer"],["develpers","developers"],["develping","developing"],["develpment","development"],["develpments","developments"],["develps","develops"],["devels","delves"],["deveolpment","development"],["deveopers","developers"],["deverloper","developer"],["deverlopers","developers"],["devestated","devastated"],["devestating","devastating"],["devfine","define"],["devfined","defined"],["devfines","defines"],["devic","device"],["devicde","device"],["devicdes","devices"],["device-dependend","device-dependent"],["devicec","device"],["devicecoordiinates","devicecoordinates"],["deviceremoveable","deviceremovable"],["devicesr","devices"],["devicess","devices"],["devicest","devices"],["devide","divide"],["devided","divided"],["devider","divider"],["deviders","dividers"],["devides","divides"],["deviding","dividing"],["deviece","device"],["devied","device"],["deviiate","deviate"],["deviiated","deviated"],["deviiates","deviates"],["deviiating","deviating"],["deviiation","deviation"],["deviiations","deviations"],["devined","defined"],["devired","derived"],["devirtualisaion","devirtualisation"],["devirtualisaiton","devirtualisation"],["devirtualizaion","devirtualization"],["devirtualizaiton","devirtualization"],["devirutalisation","devirtualisation"],["devirutalise","devirtualise"],["devirutalised","devirtualised"],["devirutalization","devirtualization"],["devirutalize","devirtualize"],["devirutalized","devirtualized"],["devisible","divisible"],["devision","division"],["devistating","devastating"],["devive","device"],["devleop","develop"],["devleoped","developed"],["devleoper","developer"],["devleopers","developers"],["devleoping","developing"],["devleopment","development"],["devleopper","developer"],["devleoppers","developers"],["devlop","develop"],["devloped","developed"],["devloper's","developer's"],["devloper","developer"],["devlopers","developers"],["devloping","developing"],["devlopment","development"],["devlopments","developments"],["devlopper","developer"],["devloppers","developers"],["devlops","develops"],["devolopement","development"],["devritualisation","devirtualisation"],["devritualization","devirtualization"],["devuce","device"],["dewrapping","unwrapping"],["dezert","dessert"],["dezibel","decibel"],["dezine","design"],["dezinens","denizens"],["dfine","define"],["dfined","defined"],["dfines","defines"],["dfinition","definition"],["dfinitions","definitions"],["dgetttext","dgettext"],["diable","disable"],["diabled","disabled"],["diabler","disabler"],["diablers","disablers"],["diables","disables"],["diablical","diabolical"],["diabling","disabling"],["diaciritc","diacritic"],["diaciritcs","diacritics"],["diagnistic","diagnostic"],["diagnoal","diagonal"],["diagnoals","diagonals"],["diagnol","diagonal"],["diagnosics","diagnostics"],["diagnositc","diagnostic"],["diagnotic","diagnostic"],["diagnotics","diagnostics"],["diagnxostic","diagnostic"],["diagonale","diagonal"],["diagonales","diagonals"],["diagramas","diagrams"],["diagramm","diagram"],["dialaog","dialog"],["dialate","dilate"],["dialgo","dialog"],["dialgos","dialogs"],["dialig","dialog"],["dialigs","dialogs"],["diamater","diameter"],["diamaters","diameters"],["diamon","diamond"],["diamons","diamonds"],["diamter","diameter"],["diamters","diameters"],["diangose","diagnose"],["dianostic","diagnostic"],["dianostics","diagnostics"],["diaplay","display"],["diaplays","displays"],["diappeares","disappears"],["diarea","diarrhea"],["diaresis","diaeresis"],["diasble","disable"],["diasbled","disabled"],["diasbles","disables"],["diasbling","disabling"],["diaspra","diaspora"],["diaster","disaster"],["diatance","distance"],["diatancing","distancing"],["dicard","discard"],["dicarded","discarded"],["dicarding","discarding"],["dicards","discards"],["dicates","dictates"],["dicationaries","dictionaries"],["dicationary","dictionary"],["dicergence","divergence"],["dichtomy","dichotomy"],["dicionaries","dictionaries"],["dicionary","dictionary"],["dicipline","discipline"],["dicitonaries","dictionaries"],["dicitonary","dictionary"],["dicline","decline"],["diconnected","disconnected"],["diconnection","disconnection"],["diconnects","disconnects"],["dicover","discover"],["dicovered","discovered"],["dicovering","discovering"],["dicovers","discovers"],["dicovery","discovery"],["dicrectory","directory"],["dicrete","discrete"],["dicretion","discretion"],["dicretionary","discretionary"],["dicriminate","discriminate"],["dicriminated","discriminated"],["dicriminates","discriminates"],["dicriminating","discriminating"],["dicriminator","discriminator"],["dicriminators","discriminators"],["dicsriminated","discriminated"],["dictaionaries","dictionaries"],["dictaionary","dictionary"],["dictinary","dictionary"],["dictioanries","dictionaries"],["dictioanry","dictionary"],["dictionarys","dictionaries"],["dictionay","dictionary"],["dictionnaries","dictionaries"],["dictionnary","dictionary"],["dictionries","dictionaries"],["dictionry","dictionary"],["dictoinaries","dictionaries"],["dictoinary","dictionary"],["dictonaries","dictionaries"],["dictonary","dictionary"],["dictrionaries","dictionaries"],["dictrionary","dictionary"],["dicussed","discussed"],["dicussions","discussions"],["did'nt","didn't"],["didi","did"],["didn;t","didn't"],["didnt'","didn't"],["didnt't","didn't"],["didnt","didn't"],["didnt;","didn't"],["diect","direct"],["diectly","directly"],["dielectirc","dielectric"],["dielectircs","dielectrics"],["diemsion","dimension"],["dieties","deities"],["diety","deity"],["diference","difference"],["diferences","differences"],["diferent","different"],["diferentiate","differentiate"],["diferentiated","differentiated"],["diferentiates","differentiates"],["diferentiating","differentiating"],["diferently","differently"],["diferrent","different"],["diffcult","difficult"],["diffculties","difficulties"],["diffculty","difficulty"],["diffeent","different"],["diffence","difference"],["diffenet","different"],["diffenrence","difference"],["diffenrences","differences"],["differance","difference"],["differances","differences"],["differant","different"],["differantiate","differentiate"],["differantiation","differentiation"],["differantiator","differentiator"],["differantion","differentiation"],["differate","differentiate"],["differece","difference"],["differect","different"],["differen","different"],["differencess","differences"],["differencial","differential"],["differenciate","differentiate"],["differenciated","differentiated"],["differenciates","differentiates"],["differenciating","differentiating"],["differenciation","differentiation"],["differencies","differences"],["differenct","different"],["differend","different"],["differene","difference"],["differenes","differences"],["differenly","differently"],["differens","difference"],["differense","difference"],["differentiatiations","differentiations"],["differentiaton","differentiation"],["differentl","differently"],["differernt","different"],["differes","differs"],["differetnt","different"],["differnce","difference"],["differnces","differences"],["differnciate","differentiate"],["differnec","difference"],["differnece","difference"],["differneces","differences"],["differnecs","differences"],["differnence","difference"],["differnences","differences"],["differnencing","differencing"],["differnent","different"],["differnet","different"],["differnetiate","differentiate"],["differnetiated","differentiated"],["differnetly","differently"],["differnt","different"],["differntiable","differentiable"],["differntial","differential"],["differntials","differentials"],["differntiate","differentiate"],["differntiated","differentiated"],["differntiates","differentiates"],["differntiating","differentiating"],["differntly","differently"],["differred","differed"],["differrence","difference"],["differrent","different"],["difffered","differed"],["diffferent","different"],["diffferently","differently"],["difffers","differs"],["difficault","difficult"],["difficaulties","difficulties"],["difficaulty","difficulty"],["difficulity","difficulty"],["difficutl","difficult"],["difficutly","difficulty"],["diffreences","differences"],["diffreent","different"],["diffrence","difference"],["diffrences","differences"],["diffrent","different"],["diffrential","differential"],["diffrentiate","differentiate"],["diffrentiated","differentiated"],["diffrently","differently"],["diffrerence","difference"],["diffrerences","differences"],["diffult","difficult"],["diffussion","diffusion"],["diffussive","diffusive"],["dificulties","difficulties"],["dificulty","difficulty"],["difinition","definition"],["difinitions","definitions"],["difract","diffract"],["difracted","diffracted"],["difraction","diffraction"],["difractive","diffractive"],["difussion","diffusion"],["difussive","diffusive"],["digesty","digest"],["diggit","digit"],["diggital","digital"],["diggits","digits"],["digial","digital"],["digist","digits"],["digitalise","digitize"],["digitalising","digitizing"],["digitalize","digitize"],["digitalizing","digitizing"],["digitial","digital"],["digitis","digits"],["dignostics","diagnostics"],["dilema","dilemma"],["dilemas","dilemmas"],["dilineate","delineate"],["dillema","dilemma"],["dillemas","dilemmas"],["dilligence","diligence"],["dilligent","diligent"],["dilligently","diligently"],["dillimport","dllimport"],["dimansion","dimension"],["dimansional","dimensional"],["dimansions","dimensions"],["dimemsions","dimensions"],["dimenional","dimensional"],["dimenionalities","dimensionalities"],["dimenionality","dimensionality"],["dimenions","dimensions"],["dimenionsal","dimensional"],["dimenionsalities","dimensionalities"],["dimenionsality","dimensionality"],["dimenison","dimension"],["dimensinal","dimensional"],["dimensinoal","dimensional"],["dimensinos","dimensions"],["dimensionaility","dimensionality"],["dimensiones","dimensions"],["dimensonal","dimensional"],["dimenstion","dimension"],["dimenstions","dimensions"],["dimention","dimension"],["dimentional","dimensional"],["dimentionnal","dimensional"],["dimentionnals","dimensional"],["dimentions","dimensions"],["dimesions","dimensions"],["dimesnion","dimension"],["dimesnional","dimensional"],["dimesnions","dimensions"],["diminsh","diminish"],["diminshed","diminished"],["diminuitive","diminutive"],["dimissed","dismissed"],["dimmension","dimension"],["dimmensioned","dimensioned"],["dimmensioning","dimensioning"],["dimmensions","dimensions"],["dimnension","dimension"],["dimnention","dimension"],["dimunitive","diminutive"],["dinamic","dynamic"],["dinamically","dynamically"],["dinamicaly","dynamically"],["dinamiclly","dynamically"],["dinamicly","dynamically"],["dinmaic","dynamic"],["dinteractively","interactively"],["diong","doing"],["diosese","diocese"],["diphtong","diphthong"],["diphtongs","diphthongs"],["diplacement","displacement"],["diplay","display"],["diplayed","displayed"],["diplaying","displaying"],["diplays","displays"],["diplomancy","diplomacy"],["dipthong","diphthong"],["dipthongs","diphthongs"],["dircet","direct"],["dircetories","directories"],["dircetory","directory"],["dirctly","directly"],["dirctories","directories"],["dirctory","directory"],["direccion","direction"],["direcctly","directly"],["direcctory","directory"],["direcctorys","directories"],["direcctries","directories"],["direcdories","directories"],["direcdory","directory"],["direcdorys","directories"],["direcion","direction"],["direcions","directions"],["direciton","direction"],["direcitonal","directional"],["direcitons","directions"],["direclty","directly"],["direcly","directly"],["direcories","directories"],["direcory","directory"],["direcotories","directories"],["direcotory","directory"],["direcotries","directories"],["direcotry","directory"],["direcoty","directory"],["directd","directed"],["directely","directly"],["directes","directs"],["directgories","directories"],["directgory","directory"],["directiories","directories"],["directiory","directory"],["directoies","directories"],["directon","direction"],["directoories","directories"],["directoory","directory"],["directores","directories"],["directoris","directories"],["directort","directory"],["directorty","directory"],["directorys","directories"],["directoty","directory"],["directove","directive"],["directoves","directives"],["directoy","directory"],["directpries","directories"],["directpry","directory"],["directries","directories"],["directrive","directive"],["directrives","directives"],["directrly","directly"],["directroies","directories"],["directrories","directories"],["directrory","directory"],["directroy","directory"],["directry","directory"],["directsion","direction"],["directsions","directions"],["directtories","directories"],["directtory","directory"],["directy","directly"],["direectly","directly"],["diregard","disregard"],["direktly","directly"],["direrctor","director"],["direrctories","directories"],["direrctors","directors"],["direrctory","directory"],["diretive","directive"],["diretly","directly"],["diretories","directories"],["diretory","directory"],["direvctory","directory"],["dirived","derived"],["dirrectly","directly"],["dirtectory","directory"],["dirtyed","dirtied"],["dirtyness","dirtiness"],["dirver","driver"],["disabe","disable"],["disabeling","disabling"],["disabels","disables"],["disabes","disables"],["disabilitiles","disabilities"],["disabilitily","disability"],["disabiltities","disabilities"],["disabiltitiy","disability"],["disabing","disabling"],["disabl","disable"],["disablle","disable"],["disadvantadge","disadvantage"],["disagreeed","disagreed"],["disagress","disagrees"],["disalb","disable"],["disalbe","disable"],["disalbed","disabled"],["disalbes","disables"],["disale","disable"],["disaled","disabled"],["disalow","disallow"],["disambigouate","disambiguate"],["disambiguaiton","disambiguation"],["disambiguiation","disambiguation"],["disapear","disappear"],["disapeard","disappeared"],["disapeared","disappeared"],["disapearing","disappearing"],["disapears","disappears"],["disapline","discipline"],["disapoint","disappoint"],["disapointed","disappointed"],["disapointing","disappointing"],["disappared","disappeared"],["disappearaing","disappearing"],["disappeard","disappeared"],["disappearred","disappeared"],["disapper","disappear"],["disapperar","disappear"],["disapperarance","disappearance"],["disapperared","disappeared"],["disapperars","disappears"],["disappered","disappeared"],["disappering","disappearing"],["disappers","disappears"],["disapporval","disapproval"],["disapporve","disapprove"],["disapporved","disapproved"],["disapporves","disapproves"],["disapporving","disapproving"],["disapprouval","disapproval"],["disapprouve","disapprove"],["disapprouved","disapproved"],["disapprouves","disapproves"],["disapprouving","disapproving"],["disaproval","disapproval"],["disard","discard"],["disariable","desirable"],["disassebled","disassembled"],["disassocate","disassociate"],["disassocation","disassociation"],["disasssembler","disassembler"],["disasterous","disastrous"],["disatisfaction","dissatisfaction"],["disatisfied","dissatisfied"],["disatrous","disastrous"],["disbale","disable"],["disbaled","disabled"],["disbales","disables"],["disbaling","disabling"],["disble","disable"],["disbled","disabled"],["discared","discarded"],["discareded","discarded"],["discarge","discharge"],["discconecct","disconnect"],["discconeccted","disconnected"],["discconeccting","disconnecting"],["discconecction","disconnection"],["discconecctions","disconnections"],["discconeccts","disconnects"],["discconect","disconnect"],["discconected","disconnected"],["discconecting","disconnecting"],["discconection","disconnection"],["discconections","disconnections"],["discconects","disconnects"],["discconeect","disconnect"],["discconeected","disconnected"],["discconeecting","disconnecting"],["discconeection","disconnection"],["discconeections","disconnections"],["discconeects","disconnects"],["discconenct","disconnect"],["discconencted","disconnected"],["discconencting","disconnecting"],["discconenction","disconnection"],["discconenctions","disconnections"],["discconencts","disconnects"],["discconet","disconnect"],["discconeted","disconnected"],["discconeting","disconnecting"],["discconetion","disconnection"],["discconetions","disconnections"],["discconets","disconnects"],["disccuss","discuss"],["discernable","discernible"],["dischare","discharge"],["discimenation","dissemination"],["disciplins","disciplines"],["disclamer","disclaimer"],["disconecct","disconnect"],["disconeccted","disconnected"],["disconeccting","disconnecting"],["disconecction","disconnection"],["disconecctions","disconnections"],["disconeccts","disconnects"],["disconect","disconnect"],["disconected","disconnected"],["disconecting","disconnecting"],["disconection","disconnection"],["disconections","disconnections"],["disconects","disconnects"],["disconeect","disconnect"],["disconeected","disconnected"],["disconeecting","disconnecting"],["disconeection","disconnection"],["disconeections","disconnections"],["disconeects","disconnects"],["disconenct","disconnect"],["disconencted","disconnected"],["disconencting","disconnecting"],["disconenction","disconnection"],["disconenctions","disconnections"],["disconencts","disconnects"],["disconet","disconnect"],["disconeted","disconnected"],["disconeting","disconnecting"],["disconetion","disconnection"],["disconetions","disconnections"],["disconets","disconnects"],["disconnec","disconnect"],["disconneced","disconnected"],["disconnet","disconnect"],["disconneted","disconnected"],["disconneting","disconnecting"],["disconnets","disconnects"],["disconnnect","disconnect"],["discontigious","discontiguous"],["discontigous","discontiguous"],["discontiguities","discontinuities"],["discontinous","discontinuous"],["discontinuos","discontinuous"],["discoraged","discouraged"],["discouranged","discouraged"],["discourarged","discouraged"],["discourrage","discourage"],["discourraged","discouraged"],["discove","discover"],["discoved","discovered"],["discovereability","discoverability"],["discoveribility","discoverability"],["discovey","discovery"],["discovr","discover"],["discovred","discovered"],["discovring","discovering"],["discovrs","discovers"],["discrace","disgrace"],["discraced","disgraced"],["discraceful","disgraceful"],["discracefully","disgracefully"],["discracefulness","disgracefulness"],["discraces","disgraces"],["discracing","disgracing"],["discrards","discards"],["discreminates","discriminates"],["discrepencies","discrepancies"],["discrepency","discrepancy"],["discrepicies","discrepancies"],["discribe","describe"],["discribed","described"],["discribes","describes"],["discribing","describing"],["discription","description"],["discriptions","descriptions"],["discriptor's","descriptor's"],["discriptor","descriptor"],["discriptors","descriptors"],["disctinction","distinction"],["disctinctive","distinctive"],["disctinguish","distinguish"],["disctionaries","dictionaries"],["disctionary","dictionary"],["discuassed","discussed"],["discused","discussed"],["discusion","discussion"],["discusions","discussions"],["discusson","discussion"],["discussons","discussions"],["discusting","disgusting"],["discuusion","discussion"],["disdvantage","disadvantage"],["disecting","dissecting"],["disection","dissection"],["diselect","deselect"],["disemination","dissemination"],["disenchanged","disenchanted"],["disencouraged","discouraged"],["disertation","dissertation"],["disfunctional","dysfunctional"],["disfunctionality","dysfunctionality"],["disgn","design"],["disgned","designed"],["disgner","designer"],["disgning","designing-"],["disgnostic","diagnostic"],["disgnostics","diagnostics"],["disgns","designs"],["disguisting","disgusting"],["disharge","discharge"],["disign","design"],["disignated","designated"],["disinguish","distinguish"],["disiplined","disciplined"],["disired","desired"],["disitributions","distributions"],["diskrete","discrete"],["diskretion","discretion"],["diskretization","discretization"],["diskretize","discretize"],["diskretized","discretized"],["diskrimination","discrimination"],["dislaimer","disclaimer"],["dislay","display"],["dislayed","displayed"],["dislaying","displaying"],["dislays","displays"],["dislpay","display"],["dislpayed","displayed"],["dislpaying","displaying"],["dislpays","displays"],["disnabled","disabled"],["disobediance","disobedience"],["disobediant","disobedient"],["disokay","display"],["disolve","dissolve"],["disolved","dissolved"],["disonnect","disconnect"],["disonnected","disconnected"],["disover","discover"],["disovered","discovered"],["disovering","discovering"],["disovery","discovery"],["dispached","dispatched"],["dispair","despair"],["dispalcement","displacement"],["dispalcements","displacements"],["dispaly","display"],["dispalyable","displayable"],["dispalyed","displayed"],["dispalyes","displays"],["dispalying","displaying"],["dispalys","displays"],["disparingly","disparagingly"],["disparite","disparate"],["dispatcgh","dispatch"],["dispatchs","dispatches"],["dispath","dispatch"],["dispathed","dispatched"],["dispathes","dispatches"],["dispathing","dispatching"],["dispay","display"],["dispayed","displayed"],["dispayes","displays"],["dispayport","displayport"],["dispays","displays"],["dispbibute","distribute"],["dispell","dispel"],["dispence","dispense"],["dispenced","dispensed"],["dispencing","dispensing"],["dispertion","dispersion"],["dispicable","despicable"],["dispite","despite"],["displa","display"],["displacemnt","displacement"],["displacemnts","displacements"],["displacment","displacement"],["displacments","displacements"],["displayd","displayed"],["displayied","displayed"],["displayig","displaying"],["disply","display"],["displyed","displayed"],["displying","displaying"],["displys","displays"],["dispode","dispose"],["disporue","disparue"],["disporve","disprove"],["disporved","disproved"],["disporves","disproves"],["disporving","disproving"],["disposel","disposal"],["dispossable","disposable"],["dispossal","disposal"],["disposse","dispose"],["dispossing","disposing"],["dispostion","disposition"],["disproportiate","disproportionate"],["disproportionatly","disproportionately"],["disputandem","disputandum"],["disregrad","disregard"],["disrete","discrete"],["disretion","discretion"],["disribution","distribution"],["disricts","districts"],["disrm","disarm"],["dissable","disable"],["dissabled","disabled"],["dissables","disables"],["dissabling","disabling"],["dissadvantage","disadvantage"],["dissadvantages","disadvantages"],["dissagreement","disagreement"],["dissagregation","dissaggregation"],["dissallow","disallow"],["dissallowed","disallowed"],["dissallowing","disallowing"],["dissallows","disallows"],["dissalow","disallow"],["dissalowed","disallowed"],["dissalowing","disallowing"],["dissalows","disallows"],["dissambiguate","disambiguate"],["dissamble","disassemble"],["dissambled","disassembled"],["dissambler","disassembler"],["dissambles","disassembles"],["dissamblies","disassemblies"],["dissambling","disassembling"],["dissambly","disassembly"],["dissapate","dissipate"],["dissapates","dissipates"],["dissapear","disappear"],["dissapearance","disappearance"],["dissapeard","disappeared"],["dissapeared","disappeared"],["dissapearing","disappearing"],["dissapears","disappears"],["dissaper","disappear"],["dissaperd","disappeared"],["dissapered","disappeared"],["dissapering","disappearing"],["dissapers","disappears"],["dissapoint","disappoint"],["dissapointed","disappointed"],["dissapointing","disappointing"],["dissapoints","disappoints"],["dissappear","disappear"],["dissappeard","disappeared"],["dissappeared","disappeared"],["dissappearing","disappearing"],["dissappears","disappears"],["dissapper","disappear"],["dissapperd","disappeared"],["dissappered","disappeared"],["dissappering","disappearing"],["dissappers","disappears"],["dissappointed","disappointed"],["dissapprove","disapprove"],["dissapproves","disapproves"],["dissarray","disarray"],["dissasemble","disassemble"],["dissasembled","disassembled"],["dissasembler","disassembler"],["dissasembles","disassembles"],["dissasemblies","disassemblies"],["dissasembling","disassembling"],["dissasembly","disassembly"],["dissasociate","disassociate"],["dissasociated","disassociated"],["dissasociates","disassociates"],["dissasociation","disassociation"],["dissassemble","disassemble"],["dissassembled","disassembled"],["dissassembler","disassembler"],["dissassembles","disassembles"],["dissassemblies","disassemblies"],["dissassembling","disassembling"],["dissassembly","disassembly"],["dissassociate","disassociate"],["dissassociated","disassociated"],["dissassociates","disassociates"],["dissassociating","disassociating"],["dissaster","disaster"],["dissasters","disasters"],["dissble","disable"],["dissbled","disabled"],["dissbles","disables"],["dissbling","disabling"],["dissconect","disconnect"],["dissconnect","disconnect"],["dissconnected","disconnected"],["dissconnects","disconnects"],["disscover","discover"],["disscovered","discovered"],["disscovering","discovering"],["disscovers","discovers"],["disscovery","discovery"],["dissct","dissect"],["disscted","dissected"],["disscting","dissecting"],["dissctor","dissector"],["dissctors","dissectors"],["disscts","dissects"],["disscuesed","discussed"],["disscus","discuss"],["disscused","discussed"],["disscuses","discusses"],["disscusing","discussing"],["disscusion","discussion"],["disscuss","discuss"],["disscussed","discussed"],["disscusses","discusses"],["disscussing","discussing"],["disscussion","discussion"],["disscussions","discussions"],["disshearteningly","dishearteningly"],["dissimialr","dissimilar"],["dissimialrity","dissimilarity"],["dissimialrly","dissimilarly"],["dissimiar","dissimilar"],["dissimilarily","dissimilarly"],["dissimilary","dissimilarly"],["dissimilat","dissimilar"],["dissimilia","dissimilar"],["dissimiliar","dissimilar"],["dissimiliarity","dissimilarity"],["dissimiliarly","dissimilarly"],["dissimiliarty","dissimilarity"],["dissimiliary","dissimilarity"],["dissimillar","dissimilar"],["dissimlar","dissimilar"],["dissimlarlity","dissimilarity"],["dissimlarly","dissimilarly"],["dissimliar","dissimilar"],["dissimliarly","dissimilarly"],["dissimmetric","dissymmetric"],["dissimmetrical","dissymmetrical"],["dissimmetry","dissymmetry"],["dissmantle","dismantle"],["dissmantled","dismantled"],["dissmantles","dismantles"],["dissmantling","dismantling"],["dissmis","dismiss"],["dissmised","dismissed"],["dissmises","dismisses"],["dissmising","dismissing"],["dissmiss","dismiss"],["dissmissed","dismissed"],["dissmisses","dismisses"],["dissmissing","dismissing"],["dissobediance","disobedience"],["dissobediant","disobedient"],["dissobedience","disobedience"],["dissobedient","disobedient"],["dissplay","display"],["dissrupt","disrupt"],["dissrupted","disrupted"],["dissrupting","disrupting"],["dissrupts","disrupts"],["disssemble","disassemble"],["disssembled","disassembled"],["disssembler","disassembler"],["disssembles","disassembles"],["disssemblies","disassemblies"],["disssembling","disassembling"],["disssembly","disassembly"],["disssociate","dissociate"],["disssociated","dissociated"],["disssociates","dissociates"],["disssociating","dissociating"],["distaced","distanced"],["distange","distance"],["distanse","distance"],["distantce","distance"],["distarct","distract"],["distater","disaster"],["distengish","distinguish"],["distibute","distribute"],["distibuted","distributed"],["distibutes","distributes"],["distibuting","distributing"],["distibution","distribution"],["distibutions","distributions"],["distiction","distinction"],["distictly","distinctly"],["distiguish","distinguish"],["distiguished","distinguished"],["distinative","distinctive"],["distingish","distinguish"],["distingished","distinguished"],["distingishes","distinguishes"],["distingishing","distinguishing"],["distingiush","distinguish"],["distingquished","distinguished"],["distinguise","distinguish"],["distinguised","distinguished"],["distinguises","distinguishes"],["distingush","distinguish"],["distingushed","distinguished"],["distingushes","distinguishes"],["distingushing","distinguishing"],["distingusih","distinguish"],["distinquish","distinguish"],["distinquishable","distinguishable"],["distinquished","distinguished"],["distinquishes","distinguishes"],["distinquishing","distinguishing"],["distintions","distinctions"],["distirbute","distribute"],["distirbuted","distributed"],["distirbutes","distributes"],["distirbuting","distributing"],["distirbution","distribution"],["distirbutions","distributions"],["distirted","distorted"],["distnace","distance"],["distnaces","distances"],["distnce","distance"],["distnces","distances"],["distnct","distinct"],["distncte","distance"],["distnctes","distances"],["distnguish","distinguish"],["distnguished","distinguished"],["distniguish","distinguish"],["distniguished","distinguished"],["distorsion","distortion"],["distorsional","distortional"],["distorsions","distortions"],["distrbute","distribute"],["distrbuted","distributed"],["distrbutes","distributes"],["distrbuting","distributing"],["distrbution","distribution"],["distrbutions","distributions"],["distrct","district"],["distrcts","districts"],["distrebuted","distributed"],["distribtion","distribution"],["distribtions","distributions"],["distribtuion","distribution"],["distribtuions","distributions"],["distribtution","distributions"],["distribue","distribute"],["distribued","distributed"],["distribues","distributes"],["distribuion","distribution"],["distribuite","distribute"],["distribuited","distributed"],["distribuiting","distributing"],["distribuition","distribution"],["distribuitng","distributing"],["distribure","distribute"],["districct","district"],["distrobute","distribute"],["distrobuted","distributed"],["distrobutes","distributes"],["distrobuting","distributing"],["distrobution","distribution"],["distrobutions","distributions"],["distrobuts","distributes"],["distroname","distro name"],["distroying","destroying"],["distrub","disturb"],["distrubiotion","distribution"],["distrubite","distribute"],["distrubtion","distribution"],["distrubute","distribute"],["distrubuted","distributed"],["distrubution","distribution"],["distrubutions","distributions"],["distrubutor","distributor"],["distrubutors","distributors"],["distruction","destruction"],["distructive","destructive"],["distructor","destructor"],["distructors","destructors"],["distuingish","distinguish"],["disuade","dissuade"],["disucssion","discussion"],["disucssions","discussions"],["disucussion","discussion"],["disussion","discussion"],["disussions","discussions"],["disutils","distutils"],["ditance","distance"],["ditial","digital"],["ditinguishes","distinguishes"],["ditorconfig","editorconfig"],["ditribute","distribute"],["ditributed","distributed"],["ditribution","distribution"],["ditributions","distributions"],["divde","divide"],["divded","divided"],["divdes","divides"],["divding","dividing"],["divertion","diversion"],["divertions","diversions"],["divet","divot"],["divice","device"],["divicer","divider"],["divion","division"],["divisable","divisible"],["divisior","divisor"],["divison","division"],["divisons","divisions"],["divrese","diverse"],["divsion","division"],["divsions","divisions"],["divsiors","divisors"],["dloating","floating"],["dnamically","dynamically"],["dne","done"],["dnymaic","dynamic"],["do'nt","don't"],["doagonal","diagonal"],["doagonals","diagonals"],["doalog","dialog"],["doamins","domains"],["doasn't","doesn't"],["doble","double"],["dobled","doubled"],["dobles","doubles"],["dobling","doubling"],["doccument","document"],["doccumented","documented"],["doccuments","documents"],["dockson","dachshund"],["docmenetation","documentation"],["docmuent","document"],["docmunet","document"],["docmunetation","documentation"],["docmuneted","documented"],["docmuneting","documenting"],["docmunets","documents"],["docoment","document"],["docomentation","documentation"],["docomented","documented"],["docomenting","documenting"],["docoments","documents"],["docrines","doctrines"],["docstatistik","docstatistic"],["docsund","dachshund"],["doctines","doctrines"],["doctorial","doctoral"],["docucument","document"],["docuement","document"],["docuements","documents"],["docuemnt","document"],["docuemnts","documents"],["docuemtn","document"],["docuemtnation","documentation"],["docuemtned","documented"],["docuemtning","documenting"],["docuemtns","documents"],["docuent","document"],["docuentation","documentation"],["documant","document"],["documantation","documentation"],["documants","documents"],["documation","documentation"],["documemt","document"],["documen","document"],["documenatation","documentation"],["documenation","documentation"],["documenatry","documentary"],["documenet","document"],["documenetation","documentation"],["documeneted","documented"],["documeneter","documenter"],["documeneters","documenters"],["documeneting","documenting"],["documenets","documents"],["documentaion","documentation"],["documentaiton","documentation"],["documentataion","documentation"],["documentataions","documentations"],["documentaton","documentation"],["documentes","documents"],["documention","documentation"],["documetation","documentation"],["documetnation","documentation"],["documment","document"],["documments","documents"],["documnet","document"],["documnetation","documentation"],["documument","document"],["docunment","document"],["doed","does"],["doen's","doesn't"],["doen't","doesn't"],["doen","done"],["doens't","doesn't"],["doens","does"],["doensn't","doesn't"],["does'nt","doesn't"],["does't","doesn't"],["doese't","doesn't"],["doese","does"],["doesen't","doesn't"],["doesent'","doesn't"],["doesent","doesn't"],["doesits","does its"],["doesn'","doesn't"],["doesn't't","doesn't"],["doesn;t","doesn't"],["doesnexist","doesn't exist"],["doesnt'","doesn't"],["doesnt't","doesn't"],["doesnt;","doesn't"],["doess","does"],["doestn't","doesn't"],["doign","doing"],["doiing","doing"],["doiuble","double"],["doiubled","doubled"],["dokc","dock"],["dokced","docked"],["dokcer","docker"],["dokcing","docking"],["dokcre","docker"],["dokcs","docks"],["doller","dollar"],["dollers","dollars"],["dollor","dollar"],["dollors","dollars"],["domait","domain"],["doman","domain"],["domans","domains"],["domension","dimension"],["domensions","dimensions"],["domian","domain"],["domians","domains"],["dominanted","dominated"],["dominanting","dominating"],["dominantion","domination"],["dominaton","domination"],["dominent","dominant"],["dominiant","dominant"],["domonstrate","demonstrate"],["domonstrates","demonstrates"],["domonstrating","demonstrating"],["domonstration","demonstration"],["domonstrations","demonstrations"],["donain","domain"],["donains","domains"],["donejun","dungeon"],["donejuns","dungeons"],["donig","doing"],["donn't","don't"],["donnot","do not"],["dont'","don't"],["dont't","don't"],["donwload","download"],["donwloaded","downloaded"],["donwloading","downloading"],["donwloads","downloads"],["doocument","document"],["doocumentaries","documentaries"],["doocumentary","documentary"],["doocumentation","documentation"],["doocumentations","documentations"],["doocumented","documented"],["doocumenting","documenting"],["doocuments","documents"],["doorjam","doorjamb"],["dorce","force"],["dorced","forced"],["dorceful","forceful"],["dordered","ordered"],["dorment","dormant"],["dorp","drop"],["dosclosed","disclosed"],["doscloses","discloses"],["dosclosing","disclosing"],["dosclosure","disclosure"],["dosclosures","disclosures"],["dosen't","doesn't"],["dosen;t","doesn't"],["dosens","dozens"],["dosent'","doesn't"],["dosent","doesn't"],["dosent;","doesn't"],["dosn't","doesn't"],["dosn;t","doesn't"],["dosnt","doesn't"],["dosposing","disposing"],["dosument","document"],["dosuments","documents"],["dota","data"],["doube","double"],["doube-click","double-click"],["doube-clicked","double-clicked"],["doube-clicks","double-clicks"],["doube-quote","double-quote"],["doube-quoted","double-quoted"],["doube-word","double-word"],["doube-wprd","double-word"],["doubeclick","double-click"],["doubeclicked","double-clicked"],["doubeclicks","double-clicks"],["doubel","double"],["doubele-click","double-click"],["doubele-clicked","double-clicked"],["doubele-clicks","double-clicks"],["doubeleclick","double-click"],["doubeleclicked","double-clicked"],["doubeleclicks","double-clicks"],["doubely","doubly"],["doubes","doubles"],["doublde","double"],["doublded","doubled"],["doubldes","doubles"],["doubleclick","double-click"],["doublely","doubly"],["doubletquote","doublequote"],["doubth","doubt"],["doubthed","doubted"],["doubthing","doubting"],["doubths","doubts"],["doucment","document"],["doucmentated","documented"],["doucmentation","documentation"],["doucmented","documented"],["doucmenter","documenter"],["doucmenters","documenters"],["doucmentes","documents"],["doucmenting","documenting"],["doucments","documents"],["douible","double"],["douibled","doubled"],["doulbe","double"],["doumentc","document"],["dout","doubt"],["dowgrade","downgrade"],["dowlink","downlink"],["dowlinks","downlinks"],["dowload","download"],["dowloaded","downloaded"],["dowloader","downloader"],["dowloaders","downloaders"],["dowloading","downloading"],["dowloads","downloads"],["downagrade","downgrade"],["downagraded","downgraded"],["downagrades","downgrades"],["downagrading","downgrading"],["downgade","downgrade"],["downgaded","downgraded"],["downgades","downgrades"],["downgading","downgrading"],["downgarade","downgrade"],["downgaraded","downgraded"],["downgarades","downgrades"],["downgarading","downgrading"],["downgarde","downgrade"],["downgarded","downgraded"],["downgardes","downgrades"],["downgarding","downgrading"],["downgarte","downgrade"],["downgarted","downgraded"],["downgartes","downgrades"],["downgarting","downgrading"],["downgradde","downgrade"],["downgradded","downgraded"],["downgraddes","downgrades"],["downgradding","downgrading"],["downgradei","downgrade"],["downgradingn","downgrading"],["downgrate","downgrade"],["downgrated","downgraded"],["downgrates","downgrades"],["downgrating","downgrading"],["downlad","download"],["downladed","downloaded"],["downlading","downloading"],["downlads","downloads"],["downlaod","download"],["downlaoded","downloaded"],["downlaodes","downloads"],["downlaoding","downloading"],["downlaods","downloads"],["downloadmanger","downloadmanager"],["downlod","download"],["downloded","downloaded"],["downloding","downloading"],["downlods","downloads"],["downlowd","download"],["downlowded","downloaded"],["downlowding","downloading"],["downlowds","downloads"],["downoad","download"],["downoaded","downloaded"],["downoading","downloading"],["downoads","downloads"],["downoload","download"],["downoloaded","downloaded"],["downoloading","downloading"],["downoloads","downloads"],["downrade","downgrade"],["downraded","downgraded"],["downrades","downgrades"],["downrading","downgrading"],["downrgade","downgrade"],["downrgaded","downgraded"],["downrgades","downgrades"],["downrgading","downgrading"],["downsteram","downstream"],["downsteramed","downstreamed"],["downsteramer","downstreamer"],["downsteramers","downstreamers"],["downsteraming","downstreaming"],["downsterams","downstreams"],["dows","does"],["dowt","doubt"],["doxgen","doxygen"],["doygen","doxygen"],["dpeends","depends"],["dpendent","dependent"],["dpkg-buildpackge","dpkg-buildpackage"],["dpkg-buildpackges","dpkg-buildpackages"],["dpuble","double"],["dpubles","doubles"],["draconain","draconian"],["dragable","draggable"],["draged","dragged"],["draging","dragging"],["draing","drawing"],["drammatic","dramatic"],["dramtic","dramatic"],["dran","drawn"],["drastical","drastically"],["drasticaly","drastically"],["drats","drafts"],["draughtman","draughtsman"],["Dravadian","Dravidian"],["draview","drawview"],["drawack","drawback"],["drawacks","drawbacks"],["drawm","drawn"],["drawng","drawing"],["dreasm","dreams"],["dreawn","drawn"],["dregee","degree"],["dregees","degrees"],["dregree","degree"],["dregrees","degrees"],["drescription","description"],["drescriptions","descriptions"],["driagram","diagram"],["driagrammed","diagrammed"],["driagramming","diagramming"],["driagrams","diagrams"],["driectly","directly"],["drity","dirty"],["driveing","driving"],["drivr","driver"],["drnik","drink"],["drob","drop"],["dropabel","droppable"],["dropable","droppable"],["droped","dropped"],["droping","dropping"],["droppend","dropped"],["droppped","dropped"],["dropse","drops"],["droput","dropout"],["druing","during"],["druming","drumming"],["drummless","drumless"],["drvier","driver"],["drwaing","drawing"],["drwawing","drawing"],["drwawings","drawings"],["dscrete","discrete"],["dscretion","discretion"],["dscribed","described"],["dsiable","disable"],["dsiabled","disabled"],["dsplays","displays"],["dstination","destination"],["dstinations","destinations"],["dthe","the"],["dtoring","storing"],["dubios","dubious"],["dublicade","duplicate"],["dublicat","duplicate"],["dublicate","duplicate"],["dublicated","duplicated"],["dublicates","duplicates"],["dublication","duplication"],["ducment","document"],["ducument","document"],["duirng","during"],["dulicate","duplicate"],["dum","dumb"],["dumplicate","duplicate"],["dumplicated","duplicated"],["dumplicates","duplicates"],["dumplicating","duplicating"],["duoblequote","doublequote"],["dupicate","duplicate"],["duplacate","duplicate"],["duplacated","duplicated"],["duplacates","duplicates"],["duplacation","duplication"],["duplacte","duplicate"],["duplacted","duplicated"],["duplactes","duplicates"],["duplaction","duplication"],["duplaicate","duplicate"],["duplaicated","duplicated"],["duplaicates","duplicates"],["duplaication","duplication"],["duplate","duplicate"],["duplated","duplicated"],["duplates","duplicates"],["duplation","duplication"],["duplcate","duplicate"],["duplciate","duplicate"],["dupliacate","duplicate"],["dupliacates","duplicates"],["dupliace","duplicate"],["dupliacte","duplicate"],["dupliacted","duplicated"],["dupliactes","duplicates"],["dupliagte","duplicate"],["dupliate","duplicate"],["dupliated","duplicated"],["dupliates","duplicates"],["dupliating","duplicating"],["dupliation","duplication"],["dupliations","duplications"],["duplicat","duplicate"],["duplicatd","duplicated"],["duplicats","duplicates"],["dupplicate","duplicate"],["dupplicated","duplicated"],["dupplicates","duplicates"],["dupplicating","duplicating"],["dupplication","duplication"],["dupplications","duplications"],["durationm","duration"],["durectories","directories"],["durectory","directory"],["dureing","during"],["durig","during"],["durining","during"],["durning","during"],["durring","during"],["duting","during"],["dyanamically","dynamically"],["dyanmic","dynamic"],["dyanmically","dynamically"],["dyas","dryas"],["dymamically","dynamically"],["dynamc","dynamic"],["dynamcly","dynamically"],["dynamcs","dynamics"],["dynamicaly","dynamically"],["dynamiclly","dynamically"],["dynamicly","dynamically"],["dynaminc","dynamic"],["dynamincal","dynamical"],["dynamincally","dynamically"],["dynamincs","dynamics"],["dynamlic","dynamic"],["dynamlically","dynamically"],["dynically","dynamically"],["dynmaic","dynamic"],["dynmaically","dynamically"],["dynmic","dynamic"],["dynmically","dynamically"],["dynmics","dynamics"],["eabled","enabled"],["eacf","each"],["eacg","each"],["eachother","each other"],["eachs","each"],["eactly","exactly"],["eagrely","eagerly"],["eahc","each"],["eailier","earlier"],["eaiser","easier"],["ealier","earlier"],["ealiest","earliest"],["eample","example"],["eamples","examples"],["eanable","enable"],["eanble","enable"],["earleir","earlier"],["earler","earlier"],["earliear","earlier"],["earlies","earliest"],["earlist","earliest"],["earlyer","earlier"],["earnt","earned"],["earpeice","earpiece"],["easely","easily"],["easili","easily"],["easiliy","easily"],["easilly","easily"],["easist","easiest"],["easiy","easily"],["easly","easily"],["easyer","easier"],["eaxct","exact"],["ebale","enable"],["ebaled","enabled"],["EBCIDC","EBCDIC"],["ebedded","embedded"],["eccessive","excessive"],["ecclectic","eclectic"],["eceonomy","economy"],["ecept","except"],["eception","exception"],["eceptions","exceptions"],["ecidious","deciduous"],["eclise","eclipse"],["eclispe","eclipse"],["ecnetricity","eccentricity"],["ecognized","recognized"],["ecomonic","economic"],["ecounter","encounter"],["ecountered","encountered"],["ecountering","encountering"],["ecounters","encounters"],["ecplicit","explicit"],["ecplicitly","explicitly"],["ecspecially","especially"],["ect","etc"],["ecxept","except"],["ecxite","excite"],["ecxited","excited"],["ecxites","excites"],["ecxiting","exciting"],["ecxtracted","extracted"],["EDCDIC","EBCDIC"],["eddge","edge"],["eddges","edges"],["edditable","editable"],["ede","edge"],["ediable","editable"],["edige","edge"],["ediges","edges"],["ediit","edit"],["ediiting","editing"],["ediitor","editor"],["ediitors","editors"],["ediits","edits"],["editedt","edited"],["editiing","editing"],["editoro","editor"],["editot","editor"],["editots","editors"],["editt","edit"],["editted","edited"],["editter","editor"],["editting","editing"],["edittor","editor"],["edn","end"],["ednif","endif"],["edxpected","expected"],["eearly","early"],["eeeprom","EEPROM"],["eescription","description"],["eevery","every"],["eeverything","everything"],["eeverywhere","everywhere"],["eextract","extract"],["eextracted","extracted"],["eextracting","extracting"],["eextraction","extraction"],["eextracts","extracts"],["efect","effect"],["efective","effective"],["efectively","effectively"],["efel","evil"],["eferences","references"],["efetivity","effectivity"],["effciency","efficiency"],["effcient","efficient"],["effciently","efficiently"],["effctive","effective"],["effctively","effectively"],["effeciency","efficiency"],["effecient","efficient"],["effeciently","efficiently"],["effecitvely","effectively"],["effeck","effect"],["effecked","effected"],["effecks","effects"],["effeckt","effect"],["effectice","effective"],["effecticely","effectively"],["effectiviness","effectiveness"],["effectivness","effectiveness"],["effectly","effectively"],["effedts","effects"],["effekt","effect"],["effexts","effects"],["efficcient","efficient"],["efficencty","efficiency"],["efficency","efficiency"],["efficent","efficient"],["efficently","efficiently"],["effiency","efficiency"],["effient","efficient"],["effiently","efficiently"],["effulence","effluence"],["eforceable","enforceable"],["egal","equal"],["egals","equals"],["egde","edge"],["egdes","edges"],["ege","edge"],["egenral","general"],["egenralise","generalise"],["egenralised","generalised"],["egenralises","generalises"],["egenralize","generalize"],["egenralized","generalized"],["egenralizes","generalizes"],["egenrally","generally"],["ehance","enhance"],["ehanced","enhanced"],["ehancement","enhancement"],["ehancements","enhancements"],["ehenever","whenever"],["ehough","enough"],["ehr","her"],["ehternet","Ethernet"],["ehthernet","ethernet"],["eighter","either"],["eihter","either"],["einstance","instance"],["eisntance","instance"],["eiter","either"],["eith","with"],["elaspe","elapse"],["elasped","elapsed"],["elaspes","elapses"],["elasping","elapsing"],["elction","election"],["elctromagnetic","electromagnetic"],["elease","release"],["eleased","released"],["eleases","releases"],["eleate","relate"],["electical","electrical"],["electirc","electric"],["electircal","electrical"],["electrial","electrical"],["electricly","electrically"],["electricty","electricity"],["electrinics","electronics"],["electriv","electric"],["electrnoics","electronics"],["eleemnt","element"],["eleent","element"],["elegible","eligible"],["elelement","element"],["elelements","elements"],["elelment","element"],["elelmental","elemental"],["elelmentary","elementary"],["elelments","elements"],["elemant","element"],["elemantary","elementary"],["elemement","element"],["elemements","elements"],["elememt","element"],["elemen","element"],["elemenent","element"],["elemenental","elemental"],["elemenents","elements"],["elemenet","element"],["elemenets","elements"],["elemens","elements"],["elemenst","elements"],["elementay","elementary"],["elementry","elementary"],["elemet","element"],["elemetal","elemental"],["elemetn","element"],["elemetns","elements"],["elemets","elements"],["eleminate","eliminate"],["eleminated","eliminated"],["eleminates","eliminates"],["eleminating","eliminating"],["elemnets","elements"],["elemnt","element"],["elemntal","elemental"],["elemnts","elements"],["elemt","element"],["elemtary","elementary"],["elemts","elements"],["elenment","element"],["eles","else"],["eletricity","electricity"],["eletromagnitic","electromagnetic"],["eletronic","electronic"],["elgible","eligible"],["elicided","elicited"],["eligable","eligible"],["elimentary","elementary"],["elimiante","eliminate"],["elimiate","eliminate"],["eliminetaion","elimination"],["elimintate","eliminate"],["eliminte","eliminate"],["elimnated","eliminated"],["eliptic","elliptic"],["eliptical","elliptical"],["elipticity","ellipticity"],["ellapsed","elapsed"],["ellected","elected"],["ellement","element"],["ellemental","elemental"],["ellementals","elementals"],["ellements","elements"],["elliminate","eliminate"],["elliminated","eliminated"],["elliminates","eliminates"],["elliminating","eliminating"],["ellipsises","ellipsis"],["ellision","elision"],["elmenet","element"],["elmenets","elements"],["elment","element"],["elments","elements"],["elminate","eliminate"],["elminated","eliminated"],["elminates","eliminates"],["elminating","eliminating"],["elphant","elephant"],["elsef","elseif"],["elsehwere","elsewhere"],["elseof","elseif"],["elseswhere","elsewhere"],["elsewehere","elsewhere"],["elsewere","elsewhere"],["elsewhwere","elsewhere"],["elsiof","elseif"],["elsof","elseif"],["emabaroged","embargoed"],["emable","enable"],["emabled","enabled"],["emables","enables"],["emabling","enabling"],["emailling","emailing"],["embarass","embarrass"],["embarassed","embarrassed"],["embarasses","embarrasses"],["embarassing","embarrassing"],["embarassment","embarrassment"],["embargos","embargoes"],["embarras","embarrass"],["embarrased","embarrassed"],["embarrasing","embarrassing"],["embarrasingly","embarrassingly"],["embarrasment","embarrassment"],["embbedded","embedded"],["embbeded","embedded"],["embdder","embedder"],["embdedded","embedded"],["embebbed","embedded"],["embedd","embed"],["embeddded","embedded"],["embeddeding","embedding"],["embedds","embeds"],["embeded","embedded"],["embededded","embedded"],["embeed","embed"],["embezelled","embezzled"],["emblamatic","emblematic"],["embold","embolden"],["embrodery","embroidery"],["emcompass","encompass"],["emcompassed","encompassed"],["emcompassing","encompassing"],["emedded","embedded"],["emegrency","emergency"],["emenet","element"],["emenets","elements"],["emiited","emitted"],["eminate","emanate"],["eminated","emanated"],["emision","emission"],["emited","emitted"],["emiting","emitting"],["emlation","emulation"],["emmediately","immediately"],["emminently","eminently"],["emmisaries","emissaries"],["emmisarries","emissaries"],["emmisarry","emissary"],["emmisary","emissary"],["emmision","emission"],["emmisions","emissions"],["emmit","emit"],["emmited","emitted"],["emmiting","emitting"],["emmits","emits"],["emmitted","emitted"],["emmitting","emitting"],["emnity","enmity"],["emoty","empty"],["emough","enough"],["emought","enough"],["emperical","empirical"],["emperically","empirically"],["emphaised","emphasised"],["emphsis","emphasis"],["emphysyma","emphysema"],["empiracally","empirically"],["empiricaly","empirically"],["emplyed","employed"],["emplyee","employee"],["emplyees","employees"],["emplyer","employer"],["emplyers","employers"],["emplying","employing"],["emplyment","employment"],["emplyments","employments"],["emporer","emperor"],["emprically","empirically"],["emprisoned","imprisoned"],["emprove","improve"],["emproved","improved"],["emprovement","improvement"],["emprovements","improvements"],["emproves","improves"],["emproving","improving"],["emptniess","emptiness"],["emptry","empty"],["emptyed","emptied"],["emptyy","empty"],["empy","empty"],["emtied","emptied"],["emties","empties"],["emtpies","empties"],["emtpy","empty"],["emty","empty"],["emtying","emptying"],["emultor","emulator"],["emultors","emulators"],["enabe","enable"],["enabel","enable"],["enabeled","enabled"],["enabeling","enabling"],["enabing","enabling"],["enabledi","enabled"],["enableing","enabling"],["enablen","enabled"],["enalbe","enable"],["enalbed","enabled"],["enalbes","enables"],["enameld","enameled"],["enaugh","enough"],["enbable","enable"],["enbabled","enabled"],["enbabling","enabling"],["enbale","enable"],["enbaled","enabled"],["enbales","enables"],["enbaling","enabling"],["enbedding","embedding"],["enble","enable"],["encapsualtes","encapsulates"],["encapsulatzion","encapsulation"],["encapsultion","encapsulation"],["encaspulate","encapsulate"],["encaspulated","encapsulated"],["encaspulates","encapsulates"],["encaspulating","encapsulating"],["encaspulation","encapsulation"],["enchanced","enhanced"],["enclosng","enclosing"],["enclosue","enclosure"],["enclosung","enclosing"],["enclude","include"],["encluding","including"],["encocde","encode"],["encocded","encoded"],["encocder","encoder"],["encocders","encoders"],["encocdes","encodes"],["encocding","encoding"],["encocdings","encodings"],["encodingt","encoding"],["encodning","encoding"],["encodnings","encodings"],["encompas","encompass"],["encompased","encompassed"],["encompases","encompasses"],["encompasing","encompassing"],["enconde","encode"],["enconded","encoded"],["enconder","encoder"],["enconders","encoders"],["encondes","encodes"],["enconding","encoding"],["encondings","encodings"],["encorded","encoded"],["encorder","encoder"],["encorders","encoders"],["encording","encoding"],["encordings","encodings"],["encorporating","incorporating"],["encoser","encoder"],["encosers","encoders"],["encosure","enclosure"],["encounterd","encountered"],["encountres","encounters"],["encouraing","encouraging"],["encouter","encounter"],["encoutered","encountered"],["encouters","encounters"],["encoutner","encounter"],["encoutners","encounters"],["encouttering","encountering"],["encrcypt","encrypt"],["encrcypted","encrypted"],["encrcyption","encryption"],["encrcyptions","encryptions"],["encrcypts","encrypts"],["encript","encrypt"],["encripted","encrypted"],["encription","encryption"],["encriptions","encryptions"],["encripts","encrypts"],["encrpt","encrypt"],["encrpted","encrypted"],["encrption","encryption"],["encrptions","encryptions"],["encrpts","encrypts"],["encrupted","encrypted"],["encrypiton","encryption"],["encryptiion","encryption"],["encryptio","encryption"],["encryptiong","encryption"],["encrytion","encryption"],["encrytped","encrypted"],["encrytption","encryption"],["encupsulates","encapsulates"],["encylopedia","encyclopedia"],["encypted","encrypted"],["encyption","encryption"],["endcoded","encoded"],["endcoder","encoder"],["endcoders","encoders"],["endcodes","encodes"],["endcoding","encoding"],["endcodings","encodings"],["endding","ending"],["ende","end"],["endevors","endeavors"],["endevour","endeavour"],["endfi","endif"],["endianes","endianness"],["endianess","endianness"],["endianity","endianness"],["endiannes","endianness"],["endig","ending"],["endiness","endianness"],["endnoden","endnode"],["endoint","endpoint"],["endolithes","endoliths"],["endpints","endpoints"],["endpiont","endpoint"],["endpionts","endpoints"],["endpont","endpoint"],["endponts","endpoints"],["endsup","ends up"],["enduce","induce"],["eneables","enables"],["enebale","enable"],["enebaled","enabled"],["eneble","enable"],["ened","need"],["enegeries","energies"],["enegery","energy"],["enehanced","enhanced"],["enery","energy"],["eneter","enter"],["enetered","entered"],["enetities","entities"],["enetity","entity"],["eneumeration","enumeration"],["eneumerations","enumerations"],["eneumretaion","enumeration"],["eneumretaions","enumerations"],["enew","new"],["enflamed","inflamed"],["enforcable","enforceable"],["enforceing","enforcing"],["enforcmement","enforcement"],["enforcment","enforcement"],["enfore","enforce"],["enfored","enforced"],["enfores","enforces"],["enforncing","enforcing"],["engagment","engagement"],["engeneer","engineer"],["engeneering","engineering"],["engery","energy"],["engieer","engineer"],["engieneer","engineer"],["engieneers","engineers"],["enginee","engine"],["enginge","engine"],["enginin","engine"],["enginineer","engineer"],["engoug","enough"],["enhabce","enhance"],["enhabced","enhanced"],["enhabces","enhances"],["enhabcing","enhancing"],["enhace","enhance"],["enhaced","enhanced"],["enhacement","enhancement"],["enhacements","enhancements"],["enhancd","enhanced"],["enhancment","enhancement"],["enhancments","enhancements"],["enhaned","enhanced"],["enhence","enhance"],["enhenced","enhanced"],["enhencement","enhancement"],["enhencements","enhancements"],["enhencment","enhancement"],["enhencments","enhancements"],["enironment","environment"],["enironments","environments"],["enities","entities"],["enitities","entities"],["enitity","entity"],["enitre","entire"],["enivornment","environment"],["enivornments","environments"],["enivronment","environment"],["enlargment","enlargement"],["enlargments","enlargements"],["enlightnment","enlightenment"],["enlose","enclose"],["enmpty","empty"],["enmum","enum"],["ennpoint","endpoint"],["enntries","entries"],["enocde","encode"],["enocded","encoded"],["enocder","encoder"],["enocders","encoders"],["enocdes","encodes"],["enocding","encoding"],["enocdings","encodings"],["enogh","enough"],["enoght","enough"],["enoguh","enough"],["enouch","enough"],["enoucnter","encounter"],["enoucntered","encountered"],["enoucntering","encountering"],["enoucnters","encounters"],["enouf","enough"],["enoufh","enough"],["enought","enough"],["enoughts","enough"],["enougth","enough"],["enouh","enough"],["enouhg","enough"],["enouncter","encounter"],["enounctered","encountered"],["enounctering","encountering"],["enouncters","encounters"],["enoung","enough"],["enoungh","enough"],["enounter","encounter"],["enountered","encountered"],["enountering","encountering"],["enounters","encounters"],["enouph","enough"],["enourage","encourage"],["enouraged","encouraged"],["enourages","encourages"],["enouraging","encouraging"],["enourmous","enormous"],["enourmously","enormously"],["enouth","enough"],["enouugh","enough"],["enpoint","endpoint"],["enpoints","endpoints"],["enque","enqueue"],["enqueing","enqueuing"],["enrties","entries"],["enrtries","entries"],["enrtry","entry"],["enrty","entry"],["ensconsed","ensconced"],["entaglements","entanglements"],["entended","intended"],["entension","extension"],["entensions","extensions"],["ententries","entries"],["enterance","entrance"],["enteratinment","entertainment"],["entereing","entering"],["enterie","entry"],["enteries","entries"],["enterily","entirely"],["enterprice","enterprise"],["enterprices","enterprises"],["entery","entry"],["enteties","entities"],["entety","entity"],["enthaplies","enthalpies"],["enthaply","enthalpy"],["enthousiasm","enthusiasm"],["enthusiam","enthusiasm"],["enthusiatic","enthusiastic"],["entierly","entirely"],["entireity","entirety"],["entires","entries"],["entirey","entirely"],["entirity","entirety"],["entirly","entirely"],["entitee","entity"],["entitees","entities"],["entites","entities"],["entiti","entity"],["entitie","entity"],["entitites","entities"],["entitities","entities"],["entitity","entity"],["entitiy","entity"],["entitiys","entities"],["entitlied","entitled"],["entitys","entities"],["entoties","entities"],["entoty","entity"],["entrace","entrance"],["entraced","entranced"],["entraces","entrances"],["entrepeneur","entrepreneur"],["entrepeneurs","entrepreneurs"],["entriess","entries"],["entrophy","entropy"],["enttries","entries"],["enttry","entry"],["enulation","emulation"],["enumarate","enumerate"],["enumarated","enumerated"],["enumarates","enumerates"],["enumarating","enumerating"],["enumation","enumeration"],["enumearate","enumerate"],["enumearation","enumeration"],["enumerble","enumerable"],["enumertaion","enumeration"],["enusre","ensure"],["envaluation","evaluation"],["enveloppe","envelope"],["envelopped","enveloped"],["enveloppes","envelopes"],["envelopping","enveloping"],["enver","never"],["envioment","environment"],["enviomental","environmental"],["envioments","environments"],["envionment","environment"],["envionmental","environmental"],["envionments","environments"],["enviorement","environment"],["envioremental","environmental"],["enviorements","environments"],["enviorenment","environment"],["enviorenmental","environmental"],["enviorenments","environments"],["enviorment","environment"],["enviormental","environmental"],["enviormentally","environmentally"],["enviorments","environments"],["enviornemnt","environment"],["enviornemntal","environmental"],["enviornemnts","environments"],["enviornment","environment"],["enviornmental","environmental"],["enviornmentalist","environmentalist"],["enviornmentally","environmentally"],["enviornments","environments"],["envioronment","environment"],["envioronmental","environmental"],["envioronments","environments"],["envireonment","environment"],["envirionment","environment"],["envirnment","environment"],["envirnmental","environmental"],["envirnments","environments"],["envirnoment","environment"],["envirnoments","environments"],["enviroiment","environment"],["enviroment","environment"],["enviromental","environmental"],["enviromentalist","environmentalist"],["enviromentally","environmentally"],["enviroments","environments"],["enviromnent","environment"],["enviromnental","environmental"],["enviromnentally","environmentally"],["enviromnents","environments"],["environement","environment"],["environemnt","environment"],["environemntal","environmental"],["environemnts","environments"],["environent","environment"],["environmane","environment"],["environmenet","environment"],["environmenets","environments"],["environmet","environment"],["environmets","environments"],["environmnet","environment"],["environmont","environment"],["environnement","environment"],["environtment","environment"],["envolutionary","evolutionary"],["envolved","involved"],["envorce","enforce"],["envrion","environ"],["envrionment","environment"],["envrionmental","environmental"],["envrionments","environments"],["envrions","environs"],["envriron","environ"],["envrironment","environment"],["envrironmental","environmental"],["envrironments","environments"],["envrirons","environs"],["envvironment","environment"],["enxt","next"],["enything","anything"],["enyway","anyway"],["epecifica","especifica"],["epect","expect"],["epected","expected"],["epectedly","expectedly"],["epecting","expecting"],["epects","expects"],["ephememeral","ephemeral"],["ephememeris","ephemeris"],["epidsodes","episodes"],["epigramic","epigrammatic"],["epilgoue","epilogue"],["episdoe","episode"],["episdoes","episodes"],["eploit","exploit"],["eploits","exploits"],["epmty","empty"],["epressions","expressions"],["epsiode","episode"],["eptied","emptied"],["eptier","emptier"],["epties","empties"],["eptrapolate","extrapolate"],["eptrapolated","extrapolated"],["eptrapolates","extrapolates"],["epty","empty"],["epxanded","expanded"],["epxected","expected"],["epxiressions","expressions"],["epxlicit","explicit"],["eqaul","equal"],["eqaulity","equality"],["eqaulizer","equalizer"],["eqivalent","equivalent"],["eqivalents","equivalents"],["equailateral","equilateral"],["equalibrium","equilibrium"],["equallity","equality"],["equalls","equals"],["equaly","equally"],["equeation","equation"],["equeations","equations"],["equel","equal"],["equelibrium","equilibrium"],["equialent","equivalent"],["equil","equal"],["equilavalent","equivalent"],["equilibium","equilibrium"],["equilibrum","equilibrium"],["equilvalent","equivalent"],["equilvalently","equivalently"],["equilvalents","equivalents"],["equiped","equipped"],["equipmentd","equipment"],["equipments","equipment"],["equippment","equipment"],["equiptment","equipment"],["equitorial","equatorial"],["equivalance","equivalence"],["equivalant","equivalent"],["equivelant","equivalent"],["equivelent","equivalent"],["equivelents","equivalents"],["equivilant","equivalent"],["equivilent","equivalent"],["equivivalent","equivalent"],["equivlalent","equivalent"],["equivlantly","equivalently"],["equivlent","equivalent"],["equivlently","equivalently"],["equivlents","equivalents"],["equivqlent","equivalent"],["eqution","equation"],["equtions","equations"],["equvalent","equivalent"],["equvivalent","equivalent"],["erasablocks","eraseblocks"],["eratic","erratic"],["eratically","erratically"],["eraticly","erratically"],["erformance","performance"],["erliear","earlier"],["erlier","earlier"],["erly","early"],["ermergency","emergency"],["eroneous","erroneous"],["eror","error"],["erorneus","erroneous"],["erorneusly","erroneously"],["erorr","error"],["erorrs","errors"],["erors","errors"],["erraneously","erroneously"],["erro","error"],["erroneus","erroneous"],["erroneusly","erroneously"],["erronous","erroneous"],["erronously","erroneously"],["errorneous","erroneous"],["errorneously","erroneously"],["errorneus","erroneous"],["errornous","erroneous"],["errornously","erroneously"],["errorprone","error-prone"],["errorr","error"],["erros","errors"],["errot","error"],["errots","errors"],["errro","error"],["errror","error"],["errrors","errors"],["errros","errors"],["errupted","erupted"],["ertoneous","erroneous"],["ertoneously","erroneously"],["ervery","every"],["erverything","everything"],["esacpe","escape"],["esacped","escaped"],["esacpes","escapes"],["escalte","escalate"],["escalted","escalated"],["escaltes","escalates"],["escalting","escalating"],["escaltion","escalation"],["escapeable","escapable"],["escapemant","escapement"],["escased","escaped"],["escation","escalation"],["esccape","escape"],["esccaped","escaped"],["escpae","escape"],["escpaed","escaped"],["esecute","execute"],["esential","essential"],["esentially","essentially"],["esge","edge"],["esger","edger"],["esgers","edgers"],["esges","edges"],["esging","edging"],["esiest","easiest"],["esimate","estimate"],["esimated","estimated"],["esimates","estimates"],["esimating","estimating"],["esimation","estimation"],["esimations","estimations"],["esimator","estimator"],["esimators","estimators"],["esists","exists"],["esitmate","estimate"],["esitmated","estimated"],["esitmates","estimates"],["esitmating","estimating"],["esitmation","estimation"],["esitmations","estimations"],["esitmator","estimator"],["esitmators","estimators"],["esle","else"],["esnure","ensure"],["esnured","ensured"],["esnures","ensures"],["espacally","especially"],["espace","escape"],["espaced","escaped"],["espaces","escapes"],["espacially","especially"],["espacing","escaping"],["espcially","especially"],["especailly","especially"],["especally","especially"],["especialy","especially"],["especialyl","especially"],["especiially","especially"],["espect","expect"],["espeically","especially"],["esseintially","essentially"],["essencial","essential"],["essense","essence"],["essentail","essential"],["essentailly","essentially"],["essentaily","essentially"],["essental","essential"],["essentally","essentially"],["essentals","essentials"],["essentialy","essentially"],["essentual","essential"],["essentually","essentially"],["essentualy","essentially"],["essesital","essential"],["essesitally","essentially"],["essesitaly","essentially"],["essiential","essential"],["esssential","essential"],["estabilish","establish"],["estabish","establish"],["estabishd","established"],["estabished","established"],["estabishes","establishes"],["estabishing","establishing"],["establised","established"],["establishs","establishes"],["establising","establishing"],["establsihed","established"],["estbalishment","establishment"],["estimage","estimate"],["estimages","estimates"],["estiomator","estimator"],["estiomators","estimators"],["esy","easy"],["etablish","establish"],["etablishd","established"],["etablished","established"],["etablishing","establishing"],["etcc","etc"],["etcp","etc"],["etensible","extensible"],["etension","extension"],["etensions","extensions"],["ethe","the"],["etherenet","Ethernet"],["ethernal","eternal"],["ethnocentricm","ethnocentrism"],["etiher","either"],["etroneous","erroneous"],["etroneously","erroneously"],["etsablishment","establishment"],["etsbalishment","establishment"],["etst","test"],["etsts","tests"],["etxt","text"],["euclidian","euclidean"],["euivalent","equivalent"],["euivalents","equivalents"],["euqivalent","equivalent"],["euqivalents","equivalents"],["euristic","heuristic"],["euristics","heuristics"],["Europian","European"],["Europians","Europeans"],["Eurpean","European"],["Eurpoean","European"],["evalation","evaluation"],["evalite","evaluate"],["evalited","evaluated"],["evalites","evaluates"],["evaluataion","evaluation"],["evaluataions","evaluations"],["evalueate","evaluate"],["evalueated","evaluated"],["evaluete","evaluate"],["evalueted","evaluated"],["evalulates","evaluates"],["evalutae","evaluate"],["evalutaed","evaluated"],["evalutaeing","evaluating"],["evalutaes","evaluates"],["evalutaing","evaluating"],["evalutaion","evaluation"],["evalutaions","evaluations"],["evalutaor","evaluator"],["evalutate","evaluate"],["evalutated","evaluated"],["evalutates","evaluates"],["evalutating","evaluating"],["evalutation","evaluation"],["evalutations","evaluations"],["evalute","evaluate"],["evaluted","evaluated"],["evalutes","evaluates"],["evaluting","evaluating"],["evalutions","evaluations"],["evalutive","evaluative"],["evalutor","evaluator"],["evalutors","evaluators"],["evaulate","evaluate"],["evaulated","evaluated"],["evaulates","evaluates"],["evaulating","evaluating"],["evaulation","evaluation"],["evaulator","evaluator"],["evaulted","evaluated"],["evauluate","evaluate"],["evauluated","evaluated"],["evauluates","evaluates"],["evauluation","evaluation"],["eveluate","evaluate"],["eveluated","evaluated"],["eveluates","evaluates"],["eveluating","evaluating"],["eveluation","evaluation"],["eveluations","evaluations"],["eveluator","evaluator"],["eveluators","evaluators"],["evenhtually","eventually"],["eventally","eventually"],["eventaully","eventually"],["eventhanders","event handlers"],["eventhough","even though"],["eventially","eventually"],["eventuall","eventually"],["eventualy","eventually"],["evenually","eventually"],["eveolution","evolution"],["eveolutionary","evolutionary"],["eveolve","evolve"],["eveolved","evolved"],["eveolves","evolves"],["eveolving","evolving"],["everage","average"],["everaged","averaged"],["everbody","everybody"],["everithing","everything"],["everone","everyone"],["everthing","everything"],["evertyhign","everything"],["evertyhing","everything"],["evertything","everything"],["everwhere","everywhere"],["everyhing","everything"],["everyhting","everything"],["everythig","everything"],["everythign","everything"],["everythin","everything"],["everythings","everything"],["everytime","every time"],["everyting","everything"],["everytone","everyone"],["evey","every"],["eveyone","everyone"],["eveyr","every"],["evidentally","evidently"],["evironment","environment"],["evironments","environments"],["evition","eviction"],["evluate","evaluate"],["evluated","evaluated"],["evluates","evaluates"],["evluating","evaluating"],["evluation","evaluation"],["evluations","evaluations"],["evluative","evaluative"],["evluator","evaluator"],["evluators","evaluators"],["evnet","event"],["evnts","events"],["evoluate","evaluate"],["evoluated","evaluated"],["evoluates","evaluates"],["evoluation","evaluations"],["evovler","evolver"],["evovling","evolving"],["evrithing","everything"],["evry","every"],["evrythign","everything"],["evrything","everything"],["evrywhere","everywhere"],["evyrthing","everything"],["ewhwer","where"],["exaclty","exactly"],["exacly","exactly"],["exactely","exactly"],["exacty","exactly"],["exacutable","executable"],["exagerate","exaggerate"],["exagerated","exaggerated"],["exagerates","exaggerates"],["exagerating","exaggerating"],["exagerrate","exaggerate"],["exagerrated","exaggerated"],["exagerrates","exaggerates"],["exagerrating","exaggerating"],["exameple","example"],["exameples","examples"],["examied","examined"],["examinated","examined"],["examing","examining"],["examinining","examining"],["examle","example"],["examles","examples"],["examlpe","example"],["examlpes","examples"],["examnple","example"],["examnples","examples"],["exampel","example"],["exampeles","examples"],["exampels","examples"],["examplees","examples"],["examplifies","exemplifies"],["exampple","example"],["exampples","examples"],["exampt","exempt"],["exand","expand"],["exansive","expansive"],["exapansion","expansion"],["exapend","expand"],["exaplain","explain"],["exaplaination","explanation"],["exaplained","explained"],["exaplaining","explaining"],["exaplains","explains"],["exaplanation","explanation"],["exaplanations","explanations"],["exaple","example"],["exaples","examples"],["exapmle","example"],["exapmles","examples"],["exapnsion","expansion"],["exat","exact"],["exatcly","exactly"],["exatctly","exactly"],["exatly","exactly"],["exausted","exhausted"],["excact","exact"],["excactly","exactly"],["excahcnge","exchange"],["excahnge","exchange"],["excahnges","exchanges"],["excange","exchange"],["excape","escape"],["excaped","escaped"],["excapes","escapes"],["excat","exact"],["excating","exacting"],["excatly","exactly"],["exccute","execute"],["excecise","exercise"],["excecises","exercises"],["excecpt","except"],["excecption","exception"],["excecptional","exceptional"],["excecptions","exceptions"],["excectable","executable"],["excectables","executables"],["excecte","execute"],["excectedly","expectedly"],["excectes","executes"],["excecting","executing"],["excectional","exceptional"],["excective","executive"],["excectives","executives"],["excector","executor"],["excectors","executors"],["excects","expects"],["excecutable","executable"],["excecutables","executables"],["excecute","execute"],["excecuted","executed"],["excecutes","executes"],["excecuting","executing"],["excecution","execution"],["excecutions","executions"],["excecutive","executive"],["excecutives","executives"],["excecutor","executor"],["excecutors","executors"],["excecuts","executes"],["exced","exceed"],["excedded","exceeded"],["excedding","exceeding"],["excede","exceed"],["exceded","exceeded"],["excedeed","exceeded"],["excedes","exceeds"],["exceding","exceeding"],["exceeed","exceed"],["exceirpt","excerpt"],["exceirpts","excerpts"],["excelent","excellent"],["excell","excel"],["excellance","excellence"],["excellant","excellent"],["excells","excels"],["excempt","exempt"],["excempted","exempted"],["excemption","exemption"],["excemptions","exemptions"],["excempts","exempts"],["excentric","eccentric"],["excentricity","eccentricity"],["excentuating","accentuating"],["exceopt","exempt"],["exceopted","exempted"],["exceopts","exempts"],["exceotion","exemption"],["exceotions","exemptions"],["excepetion","exception"],["excepion","exception"],["excepional","exceptional"],["excepionally","exceptionally"],["excepions","exceptions"],["exceprt","excerpt"],["exceprts","excerpts"],["exceptation","expectation"],["exceptionnal","exceptional"],["exceptionss","exceptions"],["exceptionts","exceptions"],["excercise","exercise"],["excercised","exercised"],["excerciser","exerciser"],["excercises","exercises"],["excercising","exercising"],["excerise","exercise"],["exces","excess"],["excesed","exceeded"],["excesive","excessive"],["excesively","excessively"],["excesss","excess"],["excesv","excessive"],["excesvly","excessively"],["excetion","exception"],["excetional","exceptional"],["excetions","exceptions"],["excetpion","exception"],["excetpional","exceptional"],["excetpions","exceptions"],["excetption","exception"],["excetptional","exceptional"],["excetptions","exceptions"],["excetra","etcetera"],["excetutable","executable"],["excetutables","executables"],["excetute","execute"],["excetuted","executed"],["excetutes","executes"],["excetuting","executing"],["excetution","execution"],["excetutions","executions"],["excetutive","executive"],["excetutives","executives"],["excetutor","executor"],["excetutors","executors"],["exceuctable","executable"],["exceuctables","executables"],["exceucte","execute"],["exceucted","executed"],["exceuctes","executes"],["exceucting","executing"],["exceuction","execution"],["exceuctions","executions"],["exceuctive","executive"],["exceuctives","executives"],["exceuctor","executor"],["exceuctors","executors"],["exceutable","executable"],["exceutables","executables"],["exceute","execute"],["exceuted","executed"],["exceutes","executes"],["exceuting","executing"],["exceution","execution"],["exceutions","executions"],["exceutive","executive"],["exceutives","executives"],["exceutor","executor"],["exceutors","executors"],["excewption","exception"],["excewptional","exceptional"],["excewptions","exceptions"],["exchage","exchange"],["exchaged","exchanged"],["exchages","exchanges"],["exchaging","exchanging"],["exchagne","exchange"],["exchagned","exchanged"],["exchagnes","exchanges"],["exchagnge","exchange"],["exchagnged","exchanged"],["exchagnges","exchanges"],["exchagnging","exchanging"],["exchagning","exchanging"],["exchanage","exchange"],["exchanaged","exchanged"],["exchanages","exchanges"],["exchanaging","exchanging"],["exchance","exchange"],["exchanced","exchanged"],["exchances","exchanges"],["exchanche","exchange"],["exchanched","exchanged"],["exchanches","exchanges"],["exchanching","exchanging"],["exchancing","exchanging"],["exchane","exchange"],["exchaned","exchanged"],["exchanes","exchanges"],["exchangable","exchangeable"],["exchaning","exchanging"],["exchaust","exhaust"],["exchausted","exhausted"],["exchausting","exhausting"],["exchaustive","exhaustive"],["exchausts","exhausts"],["exchenge","exchange"],["exchenged","exchanged"],["exchenges","exchanges"],["exchenging","exchanging"],["exchnage","exchange"],["exchnaged","exchanged"],["exchnages","exchanges"],["exchnaging","exchanging"],["exchng","exchange"],["exchngd","exchanged"],["exchnge","exchange"],["exchnged","exchanged"],["exchnges","exchanges"],["exchnging","exchanging"],["exchngng","exchanging"],["exchngs","exchanges"],["exciation","excitation"],["excipt","except"],["exciption","exception"],["exciptions","exceptions"],["excist","exist"],["excisted","existed"],["excisting","existing"],["excitment","excitement"],["exclamantion","exclamation"],["excludde","exclude"],["excludind","excluding"],["exclusiv","exclusive"],["exclusivelly","exclusively"],["exclusivly","exclusively"],["exclusivs","exclusives"],["excluslvely","exclusively"],["exclusuive","exclusive"],["exclusuively","exclusively"],["exclusuives","exclusives"],["excpect","expect"],["excpected","expected"],["excpecting","expecting"],["excpects","expects"],["excpeption","exception"],["excpet","except"],["excpetion","exception"],["excpetional","exceptional"],["excpetions","exceptions"],["excplicit","explicit"],["excplicitly","explicitly"],["excplict","explicit"],["excplictly","explicitly"],["excract","extract"],["exctacted","extracted"],["exctract","extract"],["exctracted","extracted"],["exctracting","extracting"],["exctraction","extraction"],["exctractions","extractions"],["exctractor","extractor"],["exctractors","extractors"],["exctracts","extracts"],["exculde","exclude"],["exculding","excluding"],["exculsive","exclusive"],["exculsively","exclusively"],["exculsivly","exclusively"],["excutable","executable"],["excutables","executables"],["excute","execute"],["excuted","executed"],["excutes","executes"],["excuting","executing"],["excution","execution"],["execeed","exceed"],["execeeded","exceeded"],["execeeds","exceeds"],["exeception","exception"],["execeptions","exceptions"],["execising","exercising"],["execption","exception"],["execptions","exceptions"],["exectable","executable"],["exection","execution"],["exections","executions"],["exectuable","executable"],["exectuableness","executableness"],["exectuables","executables"],["exectued","executed"],["exectuion","execution"],["exectuions","executions"],["execture","execute"],["exectured","executed"],["exectures","executes"],["execturing","executing"],["exectute","execute"],["exectuted","executed"],["exectutes","executes"],["exectution","execution"],["exectutions","executions"],["execuable","executable"],["execuables","executables"],["execuatable","executable"],["execuatables","executables"],["execuatble","executable"],["execuatbles","executables"],["execuate","execute"],["execuated","executed"],["execuates","executes"],["execuation","execution"],["execuations","executions"],["execubale","executable"],["execubales","executables"],["execucte","execute"],["execucted","executed"],["execuctes","executes"],["execuction","execution"],["execuctions","executions"],["execuctor","executor"],["execuctors","executors"],["execude","execute"],["execuded","executed"],["execudes","executes"],["execue","execute"],["execued","executed"],["execues","executes"],["execuet","execute"],["execuetable","executable"],["execuetd","executed"],["execuete","execute"],["execueted","executed"],["execuetes","executes"],["execuets","executes"],["execuing","executing"],["execuion","execution"],["execuions","executions"],["execuitable","executable"],["execuitables","executables"],["execuite","execute"],["execuited","executed"],["execuites","executes"],["execuiting","executing"],["execuition","execution"],["execuitions","executions"],["execulatble","executable"],["execulatbles","executables"],["execultable","executable"],["execultables","executables"],["execulusive","exclusive"],["execune","execute"],["execuned","executed"],["execunes","executes"],["execunting","executing"],["execurable","executable"],["execurables","executables"],["execure","execute"],["execured","executed"],["execures","executes"],["execusion","execution"],["execusions","executions"],["execusive","exclusive"],["execustion","execution"],["execustions","executions"],["execut","execute"],["executabable","executable"],["executabables","executables"],["executabe","executable"],["executabel","executable"],["executabels","executables"],["executabes","executables"],["executablble","executable"],["executabnle","executable"],["executabnles","executables"],["executation","execution"],["executations","executions"],["executbale","executable"],["executbales","executables"],["executble","executable"],["executbles","executables"],["executd","executed"],["executding","executing"],["executeable","executable"],["executeables","executables"],["executible","executable"],["executign","executing"],["executng","executing"],["executre","execute"],["executred","executed"],["executres","executes"],["executs","executes"],["executting","executing"],["executtion","execution"],["executtions","executions"],["executuable","executable"],["executuables","executables"],["executuble","executable"],["executubles","executables"],["executue","execute"],["executued","executed"],["executues","executes"],["executuing","executing"],["executuion","execution"],["executuions","executions"],["executung","executing"],["executuon","execution"],["executuons","executions"],["executute","execute"],["execututed","executed"],["execututes","executes"],["executution","execution"],["execututions","executions"],["exeed","exceed"],["exeeding","exceeding"],["exeedingly","exceedingly"],["exeeds","exceeds"],["exelent","excellent"],["exellent","excellent"],["exempel","example"],["exempels","examples"],["exemple","example"],["exemples","examples"],["exended","extended"],["exension","extension"],["exensions","extensions"],["exent","extent"],["exentended","extended"],["exepct","expect"],["exepcted","expected"],["exepcts","expects"],["exepect","expect"],["exepectation","expectation"],["exepectations","expectations"],["exepected","expected"],["exepectedly","expectedly"],["exepecting","expecting"],["exepects","expects"],["exepriment","experiment"],["exeprimental","experimental"],["exeptional","exceptional"],["exeptions","exceptions"],["exeqution","execution"],["exerbate","exacerbate"],["exerbated","exacerbated"],["exerciese","exercise"],["exerciesed","exercised"],["exercieses","exercises"],["exerciesing","exercising"],["exercize","exercise"],["exerimental","experimental"],["exerpt","excerpt"],["exerpts","excerpts"],["exersize","exercise"],["exersizes","exercises"],["exerternal","external"],["exeucte","execute"],["exeucted","executed"],["exeuctes","executes"],["exeution","execution"],["exexutable","executable"],["exhalted","exalted"],["exhange","exchange"],["exhanged","exchanged"],["exhanges","exchanges"],["exhanging","exchanging"],["exhaused","exhausted"],["exhautivity","exhaustivity"],["exhcuast","exhaust"],["exhcuasted","exhausted"],["exhibtion","exhibition"],["exhist","exist"],["exhistance","existence"],["exhisted","existed"],["exhistence","existence"],["exhisting","existing"],["exhists","exists"],["exhostive","exhaustive"],["exhustiveness","exhaustiveness"],["exibition","exhibition"],["exibitions","exhibitions"],["exicting","exciting"],["exinct","extinct"],["exipration","expiration"],["exipre","expire"],["exipred","expired"],["exipres","expires"],["exising","existing"],["exisit","exist"],["exisited","existed"],["exisitent","existent"],["exisiting","existing"],["exisitng","existing"],["exisits","exists"],["existance","existence"],["existant","existent"],["existatus","exitstatus"],["existencd","existence"],["existend","existed"],["existense","existence"],["existin","existing"],["existince","existence"],["existng","existing"],["existsing","existing"],["existting","existing"],["existung","existing"],["existy","exist"],["existying","existing"],["exitance","existence"],["exitation","excitation"],["exitations","excitations"],["exitt","exit"],["exitted","exited"],["exitting","exiting"],["exitts","exits"],["exixst","exist"],["exixt","exist"],["exlamation","exclamation"],["exlcude","exclude"],["exlcuding","excluding"],["exlcusion","exclusion"],["exlcusions","exclusions"],["exlcusive","exclusive"],["exlicit","explicit"],["exlicite","explicit"],["exlicitely","explicitly"],["exlicitly","explicitly"],["exliled","exiled"],["exlpoit","exploit"],["exlpoited","exploited"],["exlpoits","exploits"],["exlusion","exclusion"],["exlusionary","exclusionary"],["exlusions","exclusions"],["exlusive","exclusive"],["exlusively","exclusively"],["exmaine","examine"],["exmained","examined"],["exmaines","examines"],["exmaple","example"],["exmaples","examples"],["exmple","example"],["exmport","export"],["exnternal","external"],["exnternalities","externalities"],["exnternality","externality"],["exnternally","externally"],["exntry","entry"],["exolicit","explicit"],["exolicitly","explicitly"],["exonorate","exonerate"],["exort","export"],["exoskelaton","exoskeleton"],["expalin","explain"],["expaning","expanding"],["expanion","expansion"],["expanions","expansions"],["expanshion","expansion"],["expanshions","expansions"],["expanssion","expansion"],["exparation","expiration"],["expasion","expansion"],["expatriot","expatriate"],["expception","exception"],["expcetation","expectation"],["expcetations","expectations"],["expceted","expected"],["expceting","expecting"],["expcets","expects"],["expct","expect"],["expcted","expected"],["expctedly","expectedly"],["expcting","expecting"],["expeced","expected"],["expeceted","expected"],["expecially","especially"],["expectaion","expectation"],["expectaions","expectations"],["expectatoins","expectations"],["expectatons","expectations"],["expectd","expected"],["expecte","expected"],["expectes","expects"],["expection","exception"],["expections","exceptions"],["expeditonary","expeditionary"],["expeect","expect"],["expeected","expected"],["expeectedly","expectedly"],["expeecting","expecting"],["expeects","expects"],["expeense","expense"],["expeenses","expenses"],["expeensive","expensive"],["expeience","experience"],["expeienced","experienced"],["expeiences","experiences"],["expeiencing","experiencing"],["expeiment","experiment"],["expeimental","experimental"],["expeimentally","experimentally"],["expeimentation","experimentation"],["expeimentations","experimentations"],["expeimented","experimented"],["expeimentel","experimental"],["expeimentelly","experimentally"],["expeimenter","experimenter"],["expeimenters","experimenters"],["expeimenting","experimenting"],["expeiments","experiments"],["expeiriment","experiment"],["expeirimental","experimental"],["expeirimentally","experimentally"],["expeirimentation","experimentation"],["expeirimentations","experimentations"],["expeirimented","experimented"],["expeirimentel","experimental"],["expeirimentelly","experimentally"],["expeirimenter","experimenter"],["expeirimenters","experimenters"],["expeirimenting","experimenting"],["expeiriments","experiments"],["expell","expel"],["expells","expels"],["expement","experiment"],["expemental","experimental"],["expementally","experimentally"],["expementation","experimentation"],["expementations","experimentations"],["expemented","experimented"],["expementel","experimental"],["expementelly","experimentally"],["expementer","experimenter"],["expementers","experimenters"],["expementing","experimenting"],["expements","experiments"],["expemplar","exemplar"],["expemplars","exemplars"],["expemplary","exemplary"],["expempt","exempt"],["expempted","exempted"],["expemt","exempt"],["expemted","exempted"],["expemtion","exemption"],["expemtions","exemptions"],["expemts","exempts"],["expence","expense"],["expences","expenses"],["expencive","expensive"],["expendeble","expendable"],["expepect","expect"],["expepected","expected"],["expepectedly","expectedly"],["expepecting","expecting"],["expepects","expects"],["expepted","expected"],["expeptedly","expectedly"],["expepting","expecting"],["expeption","exception"],["expeptions","exceptions"],["expepts","expects"],["experament","experiment"],["experamental","experimental"],["experamentally","experimentally"],["experamentation","experimentation"],["experamentations","experimentations"],["experamented","experimented"],["experamentel","experimental"],["experamentelly","experimentally"],["experamenter","experimenter"],["experamenters","experimenters"],["experamenting","experimenting"],["experaments","experiments"],["experation","expiration"],["expercting","expecting"],["expercts","expects"],["expereince","experience"],["expereinced","experienced"],["expereinces","experiences"],["expereincing","experiencing"],["experement","experiment"],["experemental","experimental"],["experementally","experimentally"],["experementation","experimentation"],["experementations","experimentations"],["experemented","experimented"],["experementel","experimental"],["experementelly","experimentally"],["experementer","experimenter"],["experementers","experimenters"],["experementing","experimenting"],["experements","experiments"],["experence","experience"],["experenced","experienced"],["experences","experiences"],["experencing","experiencing"],["experes","express"],["experesed","expressed"],["experesion","expression"],["experesions","expressions"],["experess","express"],["experessed","expressed"],["experesses","expresses"],["experessing","expressing"],["experession's","expression's"],["experession","expression"],["experessions","expressions"],["experiance","experience"],["experianced","experienced"],["experiances","experiences"],["experiancial","experiential"],["experiancing","experiencing"],["experiansial","experiential"],["experiantial","experiential"],["experiation","expiration"],["experiations","expirations"],["experice","experience"],["expericed","experienced"],["experices","experiences"],["expericing","experiencing"],["experiement","experiment"],["experienshial","experiential"],["experiensial","experiential"],["experies","expires"],["experim","experiment"],["experimal","experimental"],["experimally","experimentally"],["experimanent","experiment"],["experimanental","experimental"],["experimanentally","experimentally"],["experimanentation","experimentation"],["experimanentations","experimentations"],["experimanented","experimented"],["experimanentel","experimental"],["experimanentelly","experimentally"],["experimanenter","experimenter"],["experimanenters","experimenters"],["experimanenting","experimenting"],["experimanents","experiments"],["experimanet","experiment"],["experimanetal","experimental"],["experimanetally","experimentally"],["experimanetation","experimentation"],["experimanetations","experimentations"],["experimaneted","experimented"],["experimanetel","experimental"],["experimanetelly","experimentally"],["experimaneter","experimenter"],["experimaneters","experimenters"],["experimaneting","experimenting"],["experimanets","experiments"],["experimant","experiment"],["experimantal","experimental"],["experimantally","experimentally"],["experimantation","experimentation"],["experimantations","experimentations"],["experimanted","experimented"],["experimantel","experimental"],["experimantelly","experimentally"],["experimanter","experimenter"],["experimanters","experimenters"],["experimanting","experimenting"],["experimants","experiments"],["experimation","experimentation"],["experimations","experimentations"],["experimdnt","experiment"],["experimdntal","experimental"],["experimdntally","experimentally"],["experimdntation","experimentation"],["experimdntations","experimentations"],["experimdnted","experimented"],["experimdntel","experimental"],["experimdntelly","experimentally"],["experimdnter","experimenter"],["experimdnters","experimenters"],["experimdnting","experimenting"],["experimdnts","experiments"],["experimed","experimented"],["experimel","experimental"],["experimelly","experimentally"],["experimen","experiment"],["experimenal","experimental"],["experimenally","experimentally"],["experimenat","experiment"],["experimenatal","experimental"],["experimenatally","experimentally"],["experimenatation","experimentation"],["experimenatations","experimentations"],["experimenated","experimented"],["experimenatel","experimental"],["experimenatelly","experimentally"],["experimenater","experimenter"],["experimenaters","experimenters"],["experimenating","experimenting"],["experimenation","experimentation"],["experimenations","experimentations"],["experimenats","experiments"],["experimened","experimented"],["experimenel","experimental"],["experimenelly","experimentally"],["experimener","experimenter"],["experimeners","experimenters"],["experimening","experimenting"],["experimens","experiments"],["experimentaal","experimental"],["experimentaally","experimentally"],["experimentaat","experiment"],["experimentaatl","experimental"],["experimentaatlly","experimentally"],["experimentaats","experiments"],["experimentaed","experimented"],["experimentaer","experimenter"],["experimentaing","experimenting"],["experimentaion","experimentation"],["experimentaions","experimentations"],["experimentait","experiment"],["experimentaital","experimental"],["experimentaitally","experimentally"],["experimentaited","experimented"],["experimentaiter","experimenter"],["experimentaiters","experimenters"],["experimentaitng","experimenting"],["experimentaiton","experimentation"],["experimentaitons","experimentations"],["experimentat","experimental"],["experimentatal","experimental"],["experimentatally","experimentally"],["experimentatation","experimentation"],["experimentatations","experimentations"],["experimentated","experimented"],["experimentater","experimenter"],["experimentatl","experimental"],["experimentatlly","experimentally"],["experimentatly","experimentally"],["experimentel","experimental"],["experimentelly","experimentally"],["experimentt","experiment"],["experimentted","experimented"],["experimentter","experimenter"],["experimentters","experimenters"],["experimentts","experiments"],["experimer","experimenter"],["experimers","experimenters"],["experimet","experiment"],["experimetal","experimental"],["experimetally","experimentally"],["experimetation","experimentation"],["experimetations","experimentations"],["experimeted","experimented"],["experimetel","experimental"],["experimetelly","experimentally"],["experimetent","experiment"],["experimetental","experimental"],["experimetentally","experimentally"],["experimetentation","experimentation"],["experimetentations","experimentations"],["experimetented","experimented"],["experimetentel","experimental"],["experimetentelly","experimentally"],["experimetenter","experimenter"],["experimetenters","experimenters"],["experimetenting","experimenting"],["experimetents","experiments"],["experimeter","experimenter"],["experimeters","experimenters"],["experimeting","experimenting"],["experimetn","experiment"],["experimetnal","experimental"],["experimetnally","experimentally"],["experimetnation","experimentation"],["experimetnations","experimentations"],["experimetned","experimented"],["experimetnel","experimental"],["experimetnelly","experimentally"],["experimetner","experimenter"],["experimetners","experimenters"],["experimetning","experimenting"],["experimetns","experiments"],["experimets","experiments"],["experiming","experimenting"],["experimint","experiment"],["experimintal","experimental"],["experimintally","experimentally"],["experimintation","experimentation"],["experimintations","experimentations"],["experiminted","experimented"],["experimintel","experimental"],["experimintelly","experimentally"],["experiminter","experimenter"],["experiminters","experimenters"],["experiminting","experimenting"],["experimints","experiments"],["experimment","experiment"],["experimmental","experimental"],["experimmentally","experimentally"],["experimmentation","experimentation"],["experimmentations","experimentations"],["experimmented","experimented"],["experimmentel","experimental"],["experimmentelly","experimentally"],["experimmenter","experimenter"],["experimmenters","experimenters"],["experimmenting","experimenting"],["experimments","experiments"],["experimnet","experiment"],["experimnetal","experimental"],["experimnetally","experimentally"],["experimnetation","experimentation"],["experimnetations","experimentations"],["experimneted","experimented"],["experimnetel","experimental"],["experimnetelly","experimentally"],["experimneter","experimenter"],["experimneters","experimenters"],["experimneting","experimenting"],["experimnets","experiments"],["experimnt","experiment"],["experimntal","experimental"],["experimntally","experimentally"],["experimntation","experimentation"],["experimntations","experimentations"],["experimnted","experimented"],["experimntel","experimental"],["experimntelly","experimentally"],["experimnter","experimenter"],["experimnters","experimenters"],["experimnting","experimenting"],["experimnts","experiments"],["experims","experiments"],["experimten","experiment"],["experimtenal","experimental"],["experimtenally","experimentally"],["experimtenation","experimentation"],["experimtenations","experimentations"],["experimtened","experimented"],["experimtenel","experimental"],["experimtenelly","experimentally"],["experimtener","experimenter"],["experimteners","experimenters"],["experimtening","experimenting"],["experimtens","experiments"],["experinece","experience"],["experineced","experienced"],["experinement","experiment"],["experinemental","experimental"],["experinementally","experimentally"],["experinementation","experimentation"],["experinementations","experimentations"],["experinemented","experimented"],["experinementel","experimental"],["experinementelly","experimentally"],["experinementer","experimenter"],["experinementers","experimenters"],["experinementing","experimenting"],["experinements","experiments"],["experiration","expiration"],["experirations","expirations"],["expermenet","experiment"],["expermenetal","experimental"],["expermenetally","experimentally"],["expermenetation","experimentation"],["expermenetations","experimentations"],["expermeneted","experimented"],["expermenetel","experimental"],["expermenetelly","experimentally"],["expermeneter","experimenter"],["expermeneters","experimenters"],["expermeneting","experimenting"],["expermenets","experiments"],["experment","experiment"],["expermental","experimental"],["expermentally","experimentally"],["expermentation","experimentation"],["expermentations","experimentations"],["expermented","experimented"],["expermentel","experimental"],["expermentelly","experimentally"],["expermenter","experimenter"],["expermenters","experimenters"],["expermenting","experimenting"],["experments","experiments"],["expermient","experiment"],["expermiental","experimental"],["expermientally","experimentally"],["expermientation","experimentation"],["expermientations","experimentations"],["expermiented","experimented"],["expermientel","experimental"],["expermientelly","experimentally"],["expermienter","experimenter"],["expermienters","experimenters"],["expermienting","experimenting"],["expermients","experiments"],["expermiment","experiment"],["expermimental","experimental"],["expermimentally","experimentally"],["expermimentation","experimentation"],["expermimentations","experimentations"],["expermimented","experimented"],["expermimentel","experimental"],["expermimentelly","experimentally"],["expermimenter","experimenter"],["expermimenters","experimenters"],["expermimenting","experimenting"],["expermiments","experiments"],["experminent","experiment"],["experminental","experimental"],["experminentally","experimentally"],["experminentation","experimentation"],["experminentations","experimentations"],["experminents","experiments"],["expernal","external"],["expers","express"],["expersed","expressed"],["expersing","expressing"],["expersion","expression"],["expersions","expressions"],["expersive","expensive"],["experss","express"],["experssed","expressed"],["expersses","expresses"],["experssing","expressing"],["experssion","expression"],["experssions","expressions"],["expese","expense"],["expeses","expenses"],["expesive","expensive"],["expesnce","expense"],["expesnces","expenses"],["expesncive","expensive"],["expess","express"],["expessed","expressed"],["expesses","expresses"],["expessing","expressing"],["expession","expression"],["expessions","expressions"],["expest","expect"],["expested","expected"],["expestedly","expectedly"],["expesting","expecting"],["expetancy","expectancy"],["expetation","expectation"],["expetc","expect"],["expetced","expected"],["expetcedly","expectedly"],["expetcing","expecting"],["expetcs","expects"],["expetct","expect"],["expetcted","expected"],["expetctedly","expectedly"],["expetcting","expecting"],["expetcts","expects"],["expetect","expect"],["expetected","expected"],["expetectedly","expectedly"],["expetecting","expecting"],["expetectly","expectedly"],["expetects","expects"],["expeted","expected"],["expetedly","expectedly"],["expetiment","experiment"],["expetimental","experimental"],["expetimentally","experimentally"],["expetimentation","experimentation"],["expetimentations","experimentations"],["expetimented","experimented"],["expetimentel","experimental"],["expetimentelly","experimentally"],["expetimenter","experimenter"],["expetimenters","experimenters"],["expetimenting","experimenting"],["expetiments","experiments"],["expeting","expecting"],["expetion","exception"],["expetional","exceptional"],["expetions","exceptions"],["expets","expects"],["expewriment","experiment"],["expewrimental","experimental"],["expewrimentally","experimentally"],["expewrimentation","experimentation"],["expewrimentations","experimentations"],["expewrimented","experimented"],["expewrimentel","experimental"],["expewrimentelly","experimentally"],["expewrimenter","experimenter"],["expewrimenters","experimenters"],["expewrimenting","experimenting"],["expewriments","experiments"],["expexct","expect"],["expexcted","expected"],["expexctedly","expectedly"],["expexcting","expecting"],["expexcts","expects"],["expexnasion","expansion"],["expexnasions","expansions"],["expext","expect"],["expexted","expected"],["expextedly","expectedly"],["expexting","expecting"],["expexts","expects"],["expicit","explicit"],["expicitly","explicitly"],["expidition","expedition"],["expiditions","expeditions"],["expierence","experience"],["expierenced","experienced"],["expierences","experiences"],["expierience","experience"],["expieriences","experiences"],["expilicitely","explicitly"],["expireitme","expiretime"],["expiriation","expiration"],["expirie","expire"],["expiried","expired"],["expirience","experience"],["expiriences","experiences"],["expirimental","experimental"],["expiriy","expiry"],["explaination","explanation"],["explainations","explanations"],["explainatory","explanatory"],["explaind","explained"],["explanaiton","explanation"],["explanaitons","explanations"],["explane","explain"],["explaned","explained"],["explanes","explains"],["explaning","explaining"],["explantion","explanation"],["explantions","explanations"],["explcit","explicit"],["explecit","explicit"],["explecitely","explicitly"],["explecitily","explicitly"],["explecitly","explicitly"],["explenation","explanation"],["explicat","explicate"],["explicilt","explicit"],["explicilty","explicitly"],["explicitelly","explicitly"],["explicitely","explicitly"],["explicitily","explicitly"],["explicity","explicitly"],["explicityly","explicitly"],["explict","explicit"],["explictely","explicitly"],["explictily","explicitly"],["explictly","explicitly"],["explin","explain"],["explination","explanation"],["explinations","explanations"],["explined","explained"],["explins","explains"],["explit","explicit"],["explitictly","explicitly"],["explitit","explicit"],["explitly","explicitly"],["explizit","explicit"],["explizitly","explicitly"],["exploititive","exploitative"],["expoed","exposed"],["expoent","exponent"],["expoential","exponential"],["expoentially","exponentially"],["expoentntial","exponential"],["expoerted","exported"],["expoit","exploit"],["expoitation","exploitation"],["expoited","exploited"],["expoits","exploits"],["expolde","explode"],["exponant","exponent"],["exponantation","exponentiation"],["exponantially","exponentially"],["exponantialy","exponentially"],["exponants","exponents"],["exponentation","exponentiation"],["exponentialy","exponentially"],["exponentiel","exponential"],["exponentiell","exponential"],["exponetial","exponential"],["exporession","expression"],["expors","exports"],["expport","export"],["exppressed","expressed"],["expres","express"],["expresed","expressed"],["expresing","expressing"],["expresion","expression"],["expresions","expressions"],["expressable","expressible"],["expressino","expression"],["expresso","espresso"],["expresss","express"],["expresssion","expression"],["expresssions","expressions"],["exprience","experience"],["exprienced","experienced"],["expriences","experiences"],["exprimental","experimental"],["expropiated","expropriated"],["expropiation","expropriation"],["exprot","export"],["exproted","exported"],["exproting","exporting"],["exprots","exports"],["exprted","exported"],["exptected","expected"],["exra","extra"],["exract","extract"],["exressed","expressed"],["exression","expression"],["exsistence","existence"],["exsistent","existent"],["exsisting","existing"],["exsists","exists"],["exsiting","existing"],["exspect","expect"],["exspected","expected"],["exspectedly","expectedly"],["exspecting","expecting"],["exspects","expects"],["exspense","expense"],["exspensed","expensed"],["exspenses","expenses"],["exstacy","ecstasy"],["exsted","existed"],["exsting","existing"],["exstream","extreme"],["exsts","exists"],["extaction","extraction"],["extactly","exactly"],["extacy","ecstasy"],["extarnal","external"],["extarnally","externally"],["extatic","ecstatic"],["extedn","extend"],["extedned","extended"],["extedner","extender"],["extedners","extenders"],["extedns","extends"],["extemely","extremely"],["exten","extent"],["extenal","external"],["extendded","extended"],["extendet","extended"],["extendsions","extensions"],["extened","extended"],["exteneded","extended"],["extenisble","extensible"],["extennsions","extensions"],["extensability","extensibility"],["extensiable","extensible"],["extensibity","extensibility"],["extensilbe","extensible"],["extensiones","extensions"],["extensivly","extensively"],["extenson","extension"],["extenstion","extension"],["extenstions","extensions"],["extented","extended"],["extention","extension"],["extentions","extensions"],["extepect","expect"],["extepecting","expecting"],["extepects","expects"],["exteral","external"],["extered","exerted"],["extereme","extreme"],["exterme","extreme"],["extermest","extremest"],["extermist","extremist"],["extermists","extremists"],["extermly","extremely"],["extermporaneous","extemporaneous"],["externaly","externally"],["externel","external"],["externelly","externally"],["externels","externals"],["extesion","extension"],["extesions","extensions"],["extesnion","extension"],["extesnions","extensions"],["extimate","estimate"],["extimated","estimated"],["extimates","estimates"],["extimating","estimating"],["extimation","estimation"],["extimations","estimations"],["extimator","estimator"],["extimators","estimators"],["extist","exist"],["extit","exit"],["extnesion","extension"],["extrac","extract"],["extraced","extracted"],["extracing","extracting"],["extracter","extractor"],["extractet","extracted"],["extractino","extracting"],["extractins","extractions"],["extradiction","extradition"],["extraenous","extraneous"],["extranous","extraneous"],["extrapoliate","extrapolate"],["extrat","extract"],["extrated","extracted"],["extraterrestial","extraterrestrial"],["extraterrestials","extraterrestrials"],["extrates","extracts"],["extrating","extracting"],["extration","extraction"],["extrator","extractor"],["extrators","extractors"],["extrats","extracts"],["extravagent","extravagant"],["extraversion","extroversion"],["extravert","extrovert"],["extraverts","extroverts"],["extraxt","extract"],["extraxted","extracted"],["extraxting","extracting"],["extraxtors","extractors"],["extraxts","extracts"],["extream","extreme"],["extreamely","extremely"],["extreamily","extremely"],["extreamly","extremely"],["extreams","extremes"],["extreem","extreme"],["extreemly","extremely"],["extremaly","extremely"],["extremeley","extremely"],["extremelly","extremely"],["extrememe","extreme"],["extrememely","extremely"],["extrememly","extremely"],["extremeophile","extremophile"],["extremitys","extremities"],["extremly","extremely"],["extrenal","external"],["extrenally","externally"],["extrenaly","externally"],["extrime","extreme"],["extrimely","extremely"],["extrimly","extremely"],["extrmities","extremities"],["extrodinary","extraordinary"],["extrordinarily","extraordinarily"],["extrordinary","extraordinary"],["extry","entry"],["exturd","extrude"],["exturde","extrude"],["exturded","extruded"],["exturdes","extrudes"],["exturding","extruding"],["exuberent","exuberant"],["exucuted","executed"],["eyt","yet"],["ezdrop","eavesdrop"],["fability","facility"],["fabircate","fabricate"],["fabircated","fabricated"],["fabircates","fabricates"],["fabircatings","fabricating"],["fabircation","fabrication"],["facce","face"],["faciliate","facilitate"],["faciliated","facilitated"],["faciliates","facilitates"],["faciliating","facilitating"],["facilites","facilities"],["facilitiate","facilitate"],["facilitiates","facilitates"],["facilititate","facilitate"],["facillitate","facilitate"],["facillities","facilities"],["faciltate","facilitate"],["facilties","facilities"],["facinated","fascinated"],["facirity","facility"],["facist","fascist"],["facorite","favorite"],["facorites","favorites"],["facourite","favourite"],["facourites","favourites"],["facours","favours"],["factization","factorization"],["factorizaiton","factorization"],["factorys","factories"],["fadind","fading"],["faeture","feature"],["faetures","features"],["Fahrenheight","Fahrenheit"],["faield","failed"],["faild","failed"],["failded","failed"],["faile","failed"],["failer","failure"],["failes","fails"],["failicies","facilities"],["failicy","facility"],["failied","failed"],["failiure","failure"],["failiures","failures"],["failiver","failover"],["faill","fail"],["failled","failed"],["faillure","failure"],["failng","failing"],["failre","failure"],["failrue","failure"],["failture","failure"],["failue","failure"],["failuer","failure"],["failues","failures"],["failured","failed"],["faireness","fairness"],["fairoh","pharaoh"],["faiway","fairway"],["faiways","fairways"],["faktor","factor"],["faktored","factored"],["faktoring","factoring"],["faktors","factors"],["falg","flag"],["falgs","flags"],["falied","failed"],["faliure","failure"],["faliures","failures"],["fallabck","fallback"],["fallbck","fallback"],["fallhrough","fallthrough"],["fallthruogh","fallthrough"],["falltrough","fallthrough"],["falshed","flashed"],["falshes","flashes"],["falshing","flashing"],["falsly","falsely"],["falt","fault"],["falure","failure"],["familar","familiar"],["familes","families"],["familiies","families"],["familiy","family"],["familliar","familiar"],["familly","family"],["famlilies","families"],["famlily","family"],["famoust","famous"],["fanatism","fanaticism"],["fancyness","fanciness"],["Farenheight","Fahrenheit"],["Farenheit","Fahrenheit"],["faries","fairies"],["farmework","framework"],["fasade","facade"],["fasion","fashion"],["fasle","false"],["fassade","facade"],["fassinate","fascinate"],["fasterner","fastener"],["fasterners","fasteners"],["fastner","fastener"],["fastners","fasteners"],["fastr","faster"],["fatc","fact"],["fater","faster"],["fatig","fatigue"],["fatser","faster"],["fature","feature"],["faught","fought"],["fauilure","failure"],["fauilures","failures"],["fauture","feature"],["fautured","featured"],["fautures","features"],["fauturing","featuring"],["favoutrable","favourable"],["favuourites","favourites"],["faymus","famous"],["fcound","found"],["feasabile","feasible"],["feasability","feasibility"],["feasable","feasible"],["featchd","fetched"],["featched","fetched"],["featching","fetching"],["featchs","fetches"],["featchss","fetches"],["featchure","feature"],["featchured","featured"],["featchures","features"],["featchuring","featuring"],["featre","feature"],["featue","feature"],["featued","featured"],["featues","features"],["featur","feature"],["featurs","features"],["feautre","feature"],["feauture","feature"],["feautures","features"],["febbruary","February"],["febewary","February"],["februar","February"],["Febuary","February"],["Feburary","February"],["fecthing","fetching"],["fedality","fidelity"],["fedreally","federally"],["feeback","feedback"],["feeded","fed"],["feek","feel"],["feeks","feels"],["feetur","feature"],["feeture","feature"],["feild","field"],["feld","field"],["felisatus","felicitous"],["femminist","feminist"],["fempto","femto"],["feonsay","fianc\xE9e"],["fequency","frequency"],["feromone","pheromone"],["fertil","fertile"],["fertily","fertility"],["fetaure","feature"],["fetaures","features"],["fetchs","fetches"],["feture","feature"],["fetures","features"],["fewsha","fuchsia"],["fezent","pheasant"],["fhurter","further"],["fials","fails"],["fianite","finite"],["fianlly","finally"],["fibonaacci","Fibonacci"],["ficticious","fictitious"],["fictious","fictitious"],["fidality","fidelity"],["fiddley","fiddly"],["fidn","find"],["fied","field"],["fiedl","field"],["fiedled","fielded"],["fiedls","fields"],["fieid","field"],["fieldlst","fieldlist"],["fieled","field"],["fielesystem","filesystem"],["fielesystems","filesystems"],["fielname","filename"],["fielneame","filename"],["fiercly","fiercely"],["fightings","fighting"],["figurestyle","figurestyles"],["filal","final"],["fileand","file and"],["fileds","fields"],["fileld","field"],["filelds","fields"],["filenae","filename"],["filese","files"],["fileshystem","filesystem"],["fileshystems","filesystems"],["filesnames","filenames"],["filess","files"],["filesstem","filesystem"],["filessytem","filesystem"],["filessytems","filesystems"],["fileststem","filesystem"],["filesysems","filesystems"],["filesysthem","filesystem"],["filesysthems","filesystems"],["filesystmes","filesystems"],["filesystyem","filesystem"],["filesystyems","filesystems"],["filesytem","filesystem"],["filesytems","filesystems"],["filesytsem","filesystem"],["fileter","filter"],["filetest","file test"],["filetests","file tests"],["fileystem","filesystem"],["fileystems","filesystems"],["filiament","filament"],["fillay","fillet"],["fillement","filament"],["fillowing","following"],["fillung","filling"],["filnal","final"],["filname","filename"],["filp","flip"],["filpped","flipped"],["filpping","flipping"],["filps","flips"],["filse","files"],["filsystem","filesystem"],["filsystems","filesystems"],["filterd","filtered"],["filterig","filtering"],["filterin","filtering"],["filterring","filtering"],["filtersing","filtering"],["filterss","filters"],["filtype","filetype"],["filtypes","filetypes"],["fimilies","families"],["fimrware","firmware"],["fimware","firmware"],["finacial","financial"],["finailse","finalise"],["finailze","finalize"],["finallly","finally"],["finanace","finance"],["finanaced","financed"],["finanaces","finances"],["finanacially","financially"],["finanacier","financier"],["financialy","financially"],["finanize","finalize"],["finanlize","finalize"],["fincally","finally"],["finctionalities","functionalities"],["finctionality","functionality"],["finde","find"],["findn","find"],["findout","find out"],["finelly","finally"],["finess","finesse"],["fingeprint","fingerprint"],["finialization","finalization"],["finializing","finalizing"],["finilizes","finalizes"],["finisched","finished"],["finised","finished"],["finishied","finished"],["finishs","finishes"],["finitel","finite"],["finness","finesse"],["finnished","finished"],["finshed","finished"],["finshing","finishing"],["finsih","finish"],["finsihed","finished"],["finsihes","finishes"],["finsihing","finishing"],["finsished","finished"],["finxed","fixed"],["finxing","fixing"],["fiorget","forget"],["firday","Friday"],["firends","friends"],["firey","fiery"],["firmare","firmware"],["firmaware","firmware"],["firmawre","firmware"],["firmeare","firmware"],["firmeware","firmware"],["firmnware","firmware"],["firmwart","firmware"],["firmwear","firmware"],["firmwqre","firmware"],["firmwre","firmware"],["firmwware","firmware"],["firsr","first"],["firsth","first"],["firware","firmware"],["firwmare","firmware"],["fisionable","fissionable"],["fisisist","physicist"],["fisist","physicist"],["fisrt","first"],["fitering","filtering"],["fitler","filter"],["fitlers","filters"],["fivety","fifty"],["fixel","pixel"],["fixels","pixels"],["fixeme","fixme"],["fixwd","fixed"],["fizeek","physique"],["flacor","flavor"],["flacored","flavored"],["flacoring","flavoring"],["flacorings","flavorings"],["flacors","flavors"],["flacour","flavour"],["flacoured","flavoured"],["flacouring","flavouring"],["flacourings","flavourings"],["flacours","flavours"],["flaged","flagged"],["flages","flags"],["flagg","flag"],["flahsed","flashed"],["flahses","flashes"],["flahsing","flashing"],["flakyness","flakiness"],["flamable","flammable"],["flaot","float"],["flaoting","floating"],["flashflame","flashframe"],["flashig","flashing"],["flasing","flashing"],["flate","flat"],["flatened","flattened"],["flattend","flattened"],["flattenning","flattening"],["flawess","flawless"],["fle","file"],["flem","phlegm"],["Flemmish","Flemish"],["flewant","fluent"],["flexability","flexibility"],["flexable","flexible"],["flexibel","flexible"],["flexibele","flexible"],["flexibilty","flexibility"],["flext","flex"],["flie","file"],["fliter","filter"],["flitered","filtered"],["flitering","filtering"],["fliters","filters"],["floading-add","floating-add"],["floatation","flotation"],["floride","fluoride"],["floting","floating"],["flouride","fluoride"],["flourine","fluorine"],["flourishment","flourishing"],["flter","filter"],["fluctuand","fluctuant"],["flud","flood"],["fluorish","flourish"],["fluoroscent","fluorescent"],["fluroescent","fluorescent"],["flushs","flushes"],["flusing","flushing"],["focu","focus"],["focued","focused"],["focument","document"],["focuse","focus"],["focusf","focus"],["focuss","focus"],["focussed","focused"],["focusses","focuses"],["fof","for"],["foget","forget"],["fogot","forgot"],["fogotten","forgotten"],["fointers","pointers"],["foler","folder"],["folers","folders"],["folfer","folder"],["folfers","folders"],["folled","followed"],["foller","follower"],["follers","followers"],["follew","follow"],["follewed","followed"],["follewer","follower"],["follewers","followers"],["follewin","following"],["follewind","following"],["follewing","following"],["follewinwg","following"],["follewiong","following"],["follewiwng","following"],["follewong","following"],["follews","follows"],["follfow","follow"],["follfowed","followed"],["follfower","follower"],["follfowers","followers"],["follfowin","following"],["follfowind","following"],["follfowing","following"],["follfowinwg","following"],["follfowiong","following"],["follfowiwng","following"],["follfowong","following"],["follfows","follows"],["follin","following"],["follind","following"],["follinwg","following"],["folliong","following"],["folliw","follow"],["folliwed","followed"],["folliwer","follower"],["folliwers","followers"],["folliwin","following"],["folliwind","following"],["folliwing","following"],["folliwinwg","following"],["folliwiong","following"],["folliwiwng","following"],["folliwng","following"],["folliwong","following"],["folliws","follows"],["folllow","follow"],["folllowed","followed"],["folllower","follower"],["folllowers","followers"],["folllowin","following"],["folllowind","following"],["folllowing","following"],["folllowinwg","following"],["folllowiong","following"],["folllowiwng","following"],["folllowong","following"],["follod","followed"],["folloeing","following"],["folloing","following"],["folloiwng","following"],["follolwing","following"],["follong","following"],["follos","follows"],["followes","follows"],["followig","following"],["followign","following"],["followin","following"],["followind","following"],["followint","following"],["followng","following"],["followwing","following"],["followwings","followings"],["folls","follows"],["follw","follow"],["follwed","followed"],["follwer","follower"],["follwers","followers"],["follwin","following"],["follwind","following"],["follwing","following"],["follwinwg","following"],["follwiong","following"],["follwiwng","following"],["follwo","follow"],["follwoe","follow"],["follwoed","followed"],["follwoeed","followed"],["follwoeer","follower"],["follwoeers","followers"],["follwoein","following"],["follwoeind","following"],["follwoeing","following"],["follwoeinwg","following"],["follwoeiong","following"],["follwoeiwng","following"],["follwoeong","following"],["follwoer","follower"],["follwoers","followers"],["follwoes","follows"],["follwoin","following"],["follwoind","following"],["follwoing","following"],["follwoinwg","following"],["follwoiong","following"],["follwoiwng","following"],["follwong","following"],["follwoong","following"],["follwos","follows"],["follwow","follow"],["follwowed","followed"],["follwower","follower"],["follwowers","followers"],["follwowin","following"],["follwowind","following"],["follwowing","following"],["follwowinwg","following"],["follwowiong","following"],["follwowiwng","following"],["follwowong","following"],["follwows","follows"],["follws","follows"],["follww","follow"],["follwwed","followed"],["follwwer","follower"],["follwwers","followers"],["follwwin","following"],["follwwind","following"],["follwwing","following"],["follwwinwg","following"],["follwwiong","following"],["follwwiwng","following"],["follwwong","following"],["follwws","follows"],["foloow","follow"],["foloowed","followed"],["foloower","follower"],["foloowers","followers"],["foloowin","following"],["foloowind","following"],["foloowing","following"],["foloowinwg","following"],["foloowiong","following"],["foloowiwng","following"],["foloowong","following"],["foloows","follows"],["folow","follow"],["folowed","followed"],["folower","follower"],["folowers","followers"],["folowin","following"],["folowind","following"],["folowing","following"],["folowinwg","following"],["folowiong","following"],["folowiwng","following"],["folowong","following"],["folows","follows"],["foloww","follow"],["folowwed","followed"],["folowwer","follower"],["folowwers","followers"],["folowwin","following"],["folowwind","following"],["folowwing","following"],["folowwinwg","following"],["folowwiong","following"],["folowwiwng","following"],["folowwong","following"],["folowws","follows"],["folse","false"],["folwo","follow"],["folwoed","followed"],["folwoer","follower"],["folwoers","followers"],["folwoin","following"],["folwoind","following"],["folwoing","following"],["folwoinwg","following"],["folwoiong","following"],["folwoiwng","following"],["folwoong","following"],["folwos","follows"],["folx","folks"],["fom","from"],["fomat","format"],["fomated","formatted"],["fomater","formatter"],["fomates","formats"],["fomating","formatting"],["fomats","formats"],["fomatted","formatted"],["fomatter","formatter"],["fomatting","formatting"],["fomed","formed"],["fomrat","format"],["fomrated","formatted"],["fomrater","formatter"],["fomrating","formatting"],["fomrats","formats"],["fomratted","formatted"],["fomratter","formatter"],["fomratting","formatting"],["fomula","formula"],["fomulas","formula"],["fonction","function"],["fonctional","functional"],["fonctionalities","functionalities"],["fonctionality","functionality"],["fonctioning","functioning"],["fonctionnalies","functionalities"],["fonctionnalities","functionalities"],["fonctionnality","functionality"],["fonctions","functions"],["fonetic","phonetic"],["fontier","frontier"],["fontonfig","fontconfig"],["fontrier","frontier"],["fonud","found"],["foontnotes","footnotes"],["foootball","football"],["foorter","footer"],["footnoes","footnotes"],["footprinst","footprints"],["foound","found"],["foppy","floppy"],["foppys","floppies"],["foramatting","formatting"],["foramt","format"],["forat","format"],["forbad","forbade"],["forbbiden","forbidden"],["forbiden","forbidden"],["forbit","forbid"],["forbiten","forbidden"],["forbitten","forbidden"],["forcably","forcibly"],["forcast","forecast"],["forcasted","forecasted"],["forcaster","forecaster"],["forcasters","forecasters"],["forcasting","forecasting"],["forcasts","forecasts"],["forcot","forgot"],["forece","force"],["foreced","forced"],["foreces","forces"],["foregrond","foreground"],["foregronds","foregrounds"],["foreing","foreign"],["forementionned","aforementioned"],["forermly","formerly"],["forfiet","forfeit"],["forgeround","foreground"],["forgoten","forgotten"],["forground","foreground"],["forhead","forehead"],["foriegn","foreign"],["forld","fold"],["forlder","folder"],["forlders","folders"],["Formalhaut","Fomalhaut"],["formallize","formalize"],["formallized","formalized"],["formate","format"],["formated","formatted"],["formater","formatter"],["formaters","formatters"],["formates","formats"],["formath","format"],["formaths","formats"],["formating","formatting"],["formatteded","formatted"],["formattgin","formatting"],["formattind","formatting"],["formattings","formatting"],["formattring","formatting"],["formattted","formatted"],["formattting","formatting"],["formelly","formerly"],["formely","formerly"],["formend","formed"],["formidible","formidable"],["formmatted","formatted"],["formost","foremost"],["formt","format"],["formua","formula"],["formual","formula"],["formuale","formulae"],["formuals","formulas"],["fornat","format"],["fornated","formatted"],["fornater","formatter"],["fornats","formats"],["fornatted","formatted"],["fornatter","formatter"],["forot","forgot"],["forotten","forgotten"],["forr","for"],["forsaw","foresaw"],["forse","force"],["forseeable","foreseeable"],["fortan","fortran"],["fortat","format"],["forteen","fourteen"],["fortelling","foretelling"],["forthcominng","forthcoming"],["forthcomming","forthcoming"],["fortunaly","fortunately"],["fortunat","fortunate"],["fortunatelly","fortunately"],["fortunatly","fortunately"],["fortunetly","fortunately"],["forula","formula"],["forulas","formulas"],["forumla","formula"],["forumlas","formulas"],["forumula","formula"],["forumulas","formulas"],["forunate","fortunate"],["forunately","fortunately"],["forunner","forerunner"],["forutunate","fortunate"],["forutunately","fortunately"],["forver","forever"],["forwad","forward"],["forwaded","forwarded"],["forwading","forwarding"],["forwads","forwards"],["forwardig","forwarding"],["forwaring","forwarding"],["forwwarded","forwarded"],["foto","photo"],["fotograf","photograph"],["fotografic","photographic"],["fotografical","photographical"],["fotografy","photography"],["fotograph","photograph"],["fotography","photography"],["foucs","focus"],["foudn","found"],["foudning","founding"],["fougth","fought"],["foult","fault"],["foults","faults"],["foundaries","foundries"],["foundary","foundry"],["Foundland","Newfoundland"],["fourties","forties"],["fourty","forty"],["fouth","fourth"],["fouund","found"],["foward","forward"],["fowarded","forwarded"],["fowarding","forwarding"],["fowards","forwards"],["fprmat","format"],["fracional","fractional"],["fragement","fragment"],["fragementation","fragmentation"],["fragements","fragments"],["fragmant","fragment"],["fragmantation","fragmentation"],["fragmants","fragments"],["fragmenet","fragment"],["fragmenetd","fragmented"],["fragmeneted","fragmented"],["fragmeneting","fragmenting"],["fragmenets","fragments"],["fragmnet","fragment"],["frambuffer","framebuffer"],["framebufer","framebuffer"],["framei","frame"],["frament","fragment"],["framented","fragmented"],["framents","fragments"],["frametyp","frametype"],["framewoek","framework"],["framewoeks","frameworks"],["frameworkk","framework"],["framlayout","framelayout"],["framming","framing"],["framwework","framework"],["framwork","framework"],["framworks","frameworks"],["frane","frame"],["frankin","franklin"],["Fransiscan","Franciscan"],["Fransiscans","Franciscans"],["franzise","franchise"],["frecuencies","frequencies"],["frecuency","frequency"],["frecuent","frequent"],["frecuented","frequented"],["frecuently","frequently"],["frecuents","frequents"],["freecallrelpy","freecallreply"],["freedon","freedom"],["freedons","freedoms"],["freedum","freedom"],["freedums","freedoms"],["freee","free"],["freeed","freed"],["freezs","freezes"],["freind","friend"],["freindly","friendly"],["freqencies","frequencies"],["freqency","frequency"],["freqeuncies","frequencies"],["freqeuncy","frequency"],["freqiencies","frequencies"],["freqiency","frequency"],["freqquencies","frequencies"],["freqquency","frequency"],["frequancies","frequencies"],["frequancy","frequency"],["frequant","frequent"],["frequantly","frequently"],["frequences","frequencies"],["frequencey","frequency"],["frequenies","frequencies"],["frequentily","frequently"],["frequncies","frequencies"],["frequncy","frequency"],["freze","freeze"],["frezes","freezes"],["frgament","fragment"],["fricton","friction"],["fridey","Friday"],["frimware","firmware"],["frisday","Friday"],["frist","first"],["frition","friction"],["fritional","frictional"],["fritions","frictions"],["frmat","format"],["frmo","from"],["froce","force"],["frok","from"],["fromal","formal"],["fromat","format"],["fromated","formatted"],["fromates","formats"],["fromating","formatting"],["fromation","formation"],["fromats","formats"],["frome","from"],["fromed","formed"],["fromm","from"],["froms","forms"],["fromt","from"],["fromthe","from the"],["fronend","frontend"],["fronends","frontends"],["froniter","frontier"],["frontent","frontend"],["frontents","frontends"],["frop","drop"],["fropm","from"],["frops","drops"],["frowarded","forwarded"],["frowrad","forward"],["frowrading","forwarding"],["frowrads","forwards"],["frozee","frozen"],["fschk","fsck"],["FTBS","FTBFS"],["ftrunacate","ftruncate"],["fualt","fault"],["fualts","faults"],["fucntion","function"],["fucntional","functional"],["fucntionality","functionality"],["fucntioned","functioned"],["fucntioning","functioning"],["fucntions","functions"],["fuction","function"],["fuctionality","functionality"],["fuctiones","functioned"],["fuctioning","functioning"],["fuctionoid","functionoid"],["fuctions","functions"],["fuetherst","furthest"],["fuethest","furthest"],["fufill","fulfill"],["fufilled","fulfilled"],["fugure","figure"],["fugured","figured"],["fugures","figures"],["fule","file"],["fulfiled","fulfilled"],["fullfiled","fulfilled"],["fullfiling","fulfilling"],["fullfilled","fulfilled"],["fullfilling","fulfilling"],["fullfills","fulfills"],["fullly","fully"],["fulsh","flush"],["fuly","fully"],["fumction","function"],["fumctional","functional"],["fumctionally","functionally"],["fumctioned","functioned"],["fumctions","functions"],["funcation","function"],["funchtion","function"],["funchtional","functional"],["funchtioned","functioned"],["funchtioning","functioning"],["funchtionn","function"],["funchtionnal","functional"],["funchtionned","functioned"],["funchtionning","functioning"],["funchtionns","functions"],["funchtions","functions"],["funcion","function"],["funcions","functions"],["funciotn","function"],["funciotns","functions"],["funciton","function"],["funcitonal","functional"],["funcitonality","functionality"],["funcitonally","functionally"],["funcitoned","functioned"],["funcitoning","functioning"],["funcitons","functions"],["funcstions","functions"],["functiion","function"],["functiional","functional"],["functiionality","functionality"],["functiionally","functionally"],["functiioning","functioning"],["functiions","functions"],["functin","function"],["functinality","functionality"],["functino","function"],["functins","functions"],["functio","function"],["functionability","functionality"],["functionaility","functionality"],["functionailty","functionality"],["functionaily","functionality"],["functionallities","functionalities"],["functionallity","functionality"],["functionaltiy","functionality"],["functionalty","functionality"],["functionionalities","functionalities"],["functionionality","functionality"],["functionnal","functional"],["functionnalities","functionalities"],["functionnality","functionality"],["functionnaly","functionally"],["functionning","functioning"],["functionon","function"],["functionss","functions"],["functios","functions"],["functiosn","functions"],["functiton","function"],["functitonal","functional"],["functitonally","functionally"],["functitoned","functioned"],["functitons","functions"],["functon","function"],["functonal","functional"],["functonality","functionality"],["functoning","functioning"],["functons","functions"],["functtion","function"],["functtional","functional"],["functtionalities","functionalities"],["functtioned","functioned"],["functtioning","functioning"],["functtions","functions"],["funczion","function"],["fundametal","fundamental"],["fundametals","fundamentals"],["fundation","foundation"],["fundemantal","fundamental"],["fundemental","fundamental"],["fundementally","fundamentally"],["fundementals","fundamentals"],["funguses","fungi"],["funktion","function"],["funnnily","funnily"],["funtion","function"],["funtional","functional"],["funtionalities","functionalities"],["funtionality","functionality"],["funtionallity","functionality"],["funtionally","functionally"],["funtionalty","functionality"],["funtioning","functioning"],["funtions","functions"],["funvtion","function"],["funvtional","functional"],["funvtionalities","functionalities"],["funvtionality","functionality"],["funvtioned","functioned"],["funvtioning","functioning"],["funvtions","functions"],["funxtion","function"],["funxtional","functional"],["funxtionalities","functionalities"],["funxtionality","functionality"],["funxtioned","functioned"],["funxtioning","functioning"],["funxtions","functions"],["furether","further"],["furethermore","furthermore"],["furethest","furthest"],["furfill","fulfill"],["furher","further"],["furhermore","furthermore"],["furhest","furthest"],["furhter","further"],["furhtermore","furthermore"],["furhtest","furthest"],["furmalae","formulae"],["furmula","formula"],["furmulae","formulae"],["furnction","function"],["furnctional","functional"],["furnctions","functions"],["furneture","furniture"],["furser","further"],["fursermore","furthermore"],["furst","first"],["fursther","further"],["fursthermore","furthermore"],["fursthest","furthest"],["furter","further"],["furthemore","furthermore"],["furthermor","furthermore"],["furtherst","furthest"],["furthremore","furthermore"],["furthrest","furthest"],["furthur","further"],["furture","future"],["furure","future"],["furuther","further"],["furutre","future"],["furzzer","fuzzer"],["fuschia","fuchsia"],["fushed","flushed"],["fushing","flushing"],["futher","further"],["futherize","further"],["futhermore","furthermore"],["futrue","future"],["futrure","future"],["futture","future"],["fwe","few"],["fwirte","fwrite"],["fxed","fixed"],["fysical","physical"],["fysisist","physicist"],["fysisit","physicist"],["gabage","garbage"],["galatic","galactic"],["Galations","Galatians"],["gallaries","galleries"],["gallary","gallery"],["gallaxies","galaxies"],["gallleries","galleries"],["galllery","gallery"],["galllerys","galleries"],["galvinized","galvanized"],["Gameboy","Game Boy"],["ganbia","gambia"],["ganerate","generate"],["ganes","games"],["ganster","gangster"],["garabge","garbage"],["garantee","guarantee"],["garanteed","guaranteed"],["garanteeed","guaranteed"],["garantees","guarantees"],["garantied","guaranteed"],["garanty","guarantee"],["garbadge","garbage"],["garbage-dollected","garbage-collected"],["garbagge","garbage"],["garbarge","garbage"],["gard","guard"],["gardai","garda\xED"],["garentee","guarantee"],["garnison","garrison"],["garuantee","guarantee"],["garuanteed","guaranteed"],["garuantees","guarantees"],["garuantied","guaranteed"],["gatable","gateable"],["gateing","gating"],["gatherig","gathering"],["gatway","gateway"],["gauage","gauge"],["gauarana","guaran\xE1"],["gauarantee","guarantee"],["gauaranteed","guaranteed"],["gauarentee","guarantee"],["gauarenteed","guaranteed"],["gaurantee","guarantee"],["gauranteed","guaranteed"],["gauranteeing","guaranteeing"],["gaurantees","guarantees"],["gaurentee","guarantee"],["gaurenteed","guaranteed"],["gaurentees","guarantees"],["gaus'","Gauss'"],["gaus's","Gauss'"],["gausian","gaussian"],["geeneric","generic"],["geenrate","generate"],["geenrated","generated"],["geenrates","generates"],["geenration","generation"],["geenrational","generational"],["geeoteen","guillotine"],["geeral","general"],["gemetrical","geometrical"],["gemetry","geometry"],["gemoetry","geometry"],["gemometric","geometric"],["genarate","generate"],["genarated","generated"],["genarating","generating"],["genaration","generation"],["genearal","general"],["genearally","generally"],["genearted","generated"],["geneate","generate"],["geneated","generated"],["geneates","generates"],["geneating","generating"],["geneation","generation"],["geneological","genealogical"],["geneologies","genealogies"],["geneology","genealogy"],["generaates","generates"],["generaly","generally"],["generalyl","generally"],["generalyse","generalise"],["generater","generator"],["generaters","generators"],["generatig","generating"],["generatng","generating"],["generatting","generating"],["genereate","generate"],["genereated","generated"],["genereates","generates"],["genereating","generating"],["genered","generated"],["genereic","generic"],["generell","general"],["generelly","generally"],["genererate","generate"],["genererated","generated"],["genererater","generator"],["genererating","generating"],["genereration","generation"],["genereted","generated"],["generilise","generalise"],["generilised","generalised"],["generilises","generalises"],["generilize","generalize"],["generilized","generalized"],["generilizes","generalizes"],["generiously","generously"],["generla","general"],["generlaizes","generalizes"],["generlas","generals"],["generted","generated"],["generting","generating"],["genertion","generation"],["genertor","generator"],["genertors","generators"],["genialia","genitalia"],["genral","general"],["genralisation","generalisation"],["genralisations","generalisations"],["genralise","generalise"],["genralised","generalised"],["genralises","generalises"],["genralization","generalization"],["genralizations","generalizations"],["genralize","generalize"],["genralized","generalized"],["genralizes","generalizes"],["genrally","generally"],["genrals","generals"],["genrate","generate"],["genrated","generated"],["genrates","generates"],["genratet","generated"],["genrating","generating"],["genration","generation"],["genrations","generations"],["genrator","generator"],["genrators","generators"],["genreate","generate"],["genreated","generated"],["genreates","generates"],["genreating","generating"],["genreic","generic"],["genric","generic"],["genrics","generics"],["gental","gentle"],["genuin","genuine"],["geocentic","geocentric"],["geoemtries","geometries"],["geoemtry","geometry"],["geogcountry","geocountry"],["geographich","geographic"],["geographicial","geographical"],["geoio","geoip"],["geomertic","geometric"],["geomerties","geometries"],["geomerty","geometry"],["geomery","geometry"],["geometites","geometries"],["geometrician","geometer"],["geometricians","geometers"],["geometrie","geometry"],["geometrys","geometries"],["geomety","geometry"],["geometyr","geometry"],["geomitrically","geometrically"],["geomoetric","geometric"],["geomoetrically","geometrically"],["geomoetry","geometry"],["geomtery","geometry"],["geomtries","geometries"],["geomtry","geometry"],["geomtrys","geometries"],["georeferncing","georeferencing"],["geraff","giraffe"],["geraphics","graphics"],["gerat","great"],["gereating","generating"],["gerenate","generate"],["gerenated","generated"],["gerenates","generates"],["gerenating","generating"],["gerenation","generation"],["gerenations","generations"],["gerenic","generic"],["gerenics","generics"],["gererate","generate"],["gererated","generated"],["gerilla","guerrilla"],["gerneral","general"],["gernerally","generally"],["gerneraly","generally"],["gernerate","generate"],["gernerated","generated"],["gernerates","generates"],["gernerating","generating"],["gerneration","generation"],["gernerator","generator"],["gernerators","generators"],["gerneric","generic"],["gernerics","generics"],["gess","guess"],["get's","gets"],["get;s","gets"],["getfastproperyvalue","getfastpropertyvalue"],["getimezone","gettimezone"],["geting","getting"],["getlael","getlabel"],["getoe","ghetto"],["getoject","getobject"],["gettetx","gettext"],["gettter","getter"],["gettters","getters"],["getttext","gettext"],["getttime","gettime"],["getttimeofday","gettimeofday"],["gettting","getting"],["ggogled","Googled"],["Ghandi","Gandhi"],["ghostcript","ghostscript"],["ghostscritp","ghostscript"],["ghraphic","graphic"],["gien","given"],["gigibit","gigabit"],["gilotine","guillotine"],["gilty","guilty"],["ginee","guinea"],["gingam","gingham"],["gioen","given"],["gir","git"],["giser","geyser"],["gisers","geysers"],["git-buildpackge","git-buildpackage"],["git-buildpackges","git-buildpackages"],["gitar","guitar"],["gitars","guitars"],["gitatributes","gitattributes"],["giveing","giving"],["givveing","giving"],["givven","given"],["givving","giving"],["glamourous","glamorous"],["glight","flight"],["gloab","globe"],["gloabal","global"],["gloabl","global"],["gloassaries","glossaries"],["gloassary","glossary"],["globablly","globally"],["globaly","globally"],["globbal","global"],["globel","global"],["glorfied","glorified"],["glpyh","glyph"],["glpyhs","glyphs"],["glyh","glyph"],["glyhs","glyphs"],["glyped","glyphed"],["glyphes","glyphs"],["glyping","glyphing"],["glyserin","glycerin"],["gnawwed","gnawed"],["gneral","general"],["gnerally","generally"],["gnerals","generals"],["gnerate","generate"],["gnerated","generated"],["gnerates","generates"],["gnerating","generating"],["gneration","generation"],["gnerations","generations"],["gneric","generic"],["gnorung","ignoring"],["gobal","global"],["gocde","gcode"],["godess","goddess"],["godesses","goddesses"],["Godounov","Godunov"],["goemetries","geometries"],["goess","goes"],["gogether","together"],["goign","going"],["goin","going"],["goind","going"],["golbal","global"],["golbally","globally"],["golbaly","globally"],["gonig","going"],["gool","ghoul"],["gord","gourd"],["gormay","gourmet"],["gorry","gory"],["gorup","group"],["goruped","grouped"],["goruping","grouping"],["gorups","groups"],["gost","ghost"],["Gothenberg","Gothenburg"],["Gottleib","Gottlieb"],["goup","group"],["gouped","grouped"],["goups","groups"],["gouvener","governor"],["govement","government"],["govenment","government"],["govenor","governor"],["govenrment","government"],["goverance","governance"],["goverment","government"],["govermental","governmental"],["govermnment","government"],["governer","governor"],["governmnet","government"],["govorment","government"],["govormental","governmental"],["govornment","government"],["grabage","garbage"],["grabed","grabbed"],["grabing","grabbing"],["gracefull","graceful"],["gracefuly","gracefully"],["gradiants","gradients"],["gradualy","gradually"],["graet","great"],["grafics","graphics"],["grafitti","graffiti"],["grahic","graphic"],["grahical","graphical"],["grahics","graphics"],["grahpic","graphic"],["grahpical","graphical"],["grahpics","graphics"],["gramar","grammar"],["gramatically","grammatically"],["grammartical","grammatical"],["grammaticaly","grammatically"],["grammer","grammar"],["grammers","grammars"],["granchildren","grandchildren"],["granilarity","granularity"],["granuality","granularity"],["granualtiry","granularity"],["granulatiry","granularity"],["grapgics","graphics"],["graphcis","graphics"],["graphis","graphics"],["grapic","graphic"],["grapical","graphical"],["grapics","graphics"],["grat","great"],["gratefull","grateful"],["gratuitious","gratuitous"],["grbber","grabber"],["greatful","grateful"],["greatfully","gratefully"],["greather","greater"],["greif","grief"],["grephic","graphic"],["grestest","greatest"],["greysacles","greyscales"],["gridles","griddles"],["grigorian","Gregorian"],["grobal","global"],["grobally","globally"],["grometry","geometry"],["grooup","group"],["groouped","grouped"],["groouping","grouping"],["grooups","groups"],["gropu","group"],["groubpy","groupby"],["groupd","grouped"],["groupping","grouping"],["groupt","grouped"],["grranted","granted"],["gruop","group"],["gruopd","grouped"],["gruops","groups"],["grup","group"],["gruped","grouped"],["gruping","grouping"],["grups","groups"],["grwo","grow"],["guage","gauge"],["guarante","guarantee"],["guaranted","guaranteed"],["guaranteey","guaranty"],["guaranteing","guaranteeing"],["guarantes","guarantees"],["guarantie","guarantee"],["guarbage","garbage"],["guareded","guarded"],["guareente","guarantee"],["guareented","guaranteed"],["guareentee","guarantee"],["guareenteed","guaranteed"],["guareenteeing","guaranteeing"],["guareentees","guarantees"],["guareenteing","guaranteeing"],["guareentes","guarantees"],["guareenty","guaranty"],["guarente","guarantee"],["guarented","guaranteed"],["guarentee","guarantee"],["guarenteed","guaranteed"],["guarenteede","guarantee"],["guarenteeded","guaranteed"],["guarenteedeing","guaranteeing"],["guarenteedes","guarantees"],["guarenteedy","guaranty"],["guarenteeing","guaranteeing"],["guarenteer","guarantee"],["guarenteerd","guaranteed"],["guarenteering","guaranteeing"],["guarenteers","guarantees"],["guarentees","guarantees"],["guarenteing","guaranteeing"],["guarentes","guarantees"],["guarentie","guarantee"],["guarentied","guaranteed"],["guarentieing","guaranteeing"],["guarenties","guarantees"],["guarenty","guaranty"],["guarentyd","guaranteed"],["guarentying","guarantee"],["guarentyinging","guaranteeing"],["guarentys","guarantees"],["guarging","guarding"],["guarnante","guarantee"],["guarnanted","guaranteed"],["guarnantee","guarantee"],["guarnanteed","guaranteed"],["guarnanteeing","guaranteeing"],["guarnantees","guarantees"],["guarnanteing","guaranteeing"],["guarnantes","guarantees"],["guarnanty","guaranty"],["guarnate","guarantee"],["guarnated","guaranteed"],["guarnatee","guarantee"],["guarnateed","guaranteed"],["guarnateee","guarantee"],["guarnateeed","guaranteed"],["guarnateeeing","guaranteeing"],["guarnateees","guarantees"],["guarnateeing","guaranteeing"],["guarnatees","guarantees"],["guarnateing","guaranteeing"],["guarnates","guarantees"],["guarnatey","guaranty"],["guarnaty","guaranty"],["guarnete","guarantee"],["guarneted","guaranteed"],["guarnetee","guarantee"],["guarneteed","guaranteed"],["guarneteeing","guaranteeing"],["guarnetees","guarantees"],["guarneteing","guaranteeing"],["guarnetes","guarantees"],["guarnety","guaranty"],["guarnte","guarantee"],["guarnted","guaranteed"],["guarntee","guarantee"],["guarnteed","guaranteed"],["guarnteeing","guaranteeing"],["guarntees","guarantees"],["guarnteing","guaranteeing"],["guarntes","guarantees"],["guarnty","guaranty"],["guarrante","guarantee"],["guarranted","guaranteed"],["guarrantee","guarantee"],["guarranteed","guaranteed"],["guarranteeing","guaranteeing"],["guarrantees","guarantees"],["guarranteing","guaranteeing"],["guarrantes","guarantees"],["guarrantie","guarantee"],["guarrantied","guaranteed"],["guarrantieing","guaranteeing"],["guarranties","guarantees"],["guarranty","guaranty"],["guarrantyd","guaranteed"],["guarrantying","guaranteeing"],["guarrantys","guarantees"],["guarrente","guarantee"],["guarrented","guaranteed"],["guarrentee","guarantee"],["guarrenteed","guaranteed"],["guarrenteeing","guaranteeing"],["guarrentees","guarantees"],["guarrenteing","guaranteeing"],["guarrentes","guarantees"],["guarrenty","guaranty"],["guaruante","guarantee"],["guaruanted","guaranteed"],["guaruantee","guarantee"],["guaruanteed","guaranteed"],["guaruanteeing","guaranteeing"],["guaruantees","guarantees"],["guaruanteing","guaranteeing"],["guaruantes","guarantees"],["guaruanty","guaranty"],["guarunte","guarantee"],["guarunted","guaranteed"],["guaruntee","guarantee"],["guarunteed","guaranteed"],["guarunteeing","guaranteeing"],["guaruntees","guarantees"],["guarunteing","guaranteeing"],["guaruntes","guarantees"],["guarunty","guaranty"],["guas'","Gauss'"],["guas's","Gauss'"],["guas","Gauss"],["guass'","Gauss'"],["guass","Gauss"],["guassian","Gaussian"],["Guatamala","Guatemala"],["Guatamalan","Guatemalan"],["gud","good"],["guerrila","guerrilla"],["guerrilas","guerrillas"],["gueswork","guesswork"],["guideded","guided"],["guidence","guidance"],["guidline","guideline"],["guidlines","guidelines"],["Guilia","Giulia"],["Guilio","Giulio"],["Guiness","Guinness"],["Guiseppe","Giuseppe"],["gunanine","guanine"],["gurantee","guarantee"],["guranteed","guaranteed"],["guranteeing","guaranteeing"],["gurantees","guarantees"],["gurrantee","guarantee"],["guttaral","guttural"],["gutteral","guttural"],["gylph","glyph"],["gziniflate","gzinflate"],["gziped","gzipped"],["haa","has"],["haave","have"],["habaeus","habeas"],["habbit","habit"],["habeus","habeas"],["hability","ability"],["Habsbourg","Habsburg"],["hace","have"],["hachish","hackish"],["hadling","handling"],["hadnler","handler"],["haeder","header"],["haemorrage","haemorrhage"],["halarious","hilarious"],["hald","held"],["halfs","halves"],["halp","help"],["halpoints","halfpoints"],["hammmer","hammer"],["hampster","hamster"],["handel","handle"],["handeler","handler"],["handeles","handles"],["handeling","handling"],["handels","handles"],["hander","handler"],["handfull","handful"],["handhake","handshake"],["handker","handler"],["handleer","handler"],["handleing","handling"],["handlig","handling"],["handlling","handling"],["handsake","handshake"],["handshacke","handshake"],["handshackes","handshakes"],["handshacking","handshaking"],["handshage","handshake"],["handshages","handshakes"],["handshaging","handshaking"],["handshak","handshake"],["handshakng","handshaking"],["handshakre","handshake"],["handshakres","handshakes"],["handshakring","handshaking"],["handshaks","handshakes"],["handshale","handshake"],["handshales","handshakes"],["handshaling","handshaking"],["handshare","handshake"],["handshares","handshakes"],["handsharing","handshaking"],["handshk","handshake"],["handshke","handshake"],["handshkes","handshakes"],["handshking","handshaking"],["handshkng","handshaking"],["handshks","handshakes"],["handskake","handshake"],["handwirting","handwriting"],["hanel","handle"],["hangig","hanging"],["hanlde","handle"],["hanlded","handled"],["hanlder","handler"],["hanlders","handlers"],["hanldes","handles"],["hanlding","handling"],["hanldle","handle"],["hanle","handle"],["hanled","handled"],["hanles","handles"],["hanling","handling"],["hanshake","handshake"],["hanshakes","handshakes"],["hansome","handsome"],["hapen","happen"],["hapend","happened"],["hapends","happens"],["hapened","happened"],["hapening","happening"],["hapenn","happen"],["hapenned","happened"],["hapenning","happening"],["hapenns","happens"],["hapens","happens"],["happaned","happened"],["happended","happened"],["happenned","happened"],["happenning","happening"],["happennings","happenings"],["happenns","happens"],["happilly","happily"],["happne","happen"],["happpen","happen"],["happpened","happened"],["happpening","happening"],["happpenings","happenings"],["happpens","happens"],["harased","harassed"],["harases","harasses"],["harasment","harassment"],["harasments","harassments"],["harassement","harassment"],["harcoded","hardcoded"],["harcoding","hardcoding"],["hard-wirted","hard-wired"],["hardare","hardware"],["hardocde","hardcode"],["hardward","hardware"],["hardwdare","hardware"],["hardwirted","hardwired"],["harge","charge"],["harras","harass"],["harrased","harassed"],["harrases","harasses"],["harrasing","harassing"],["harrasment","harassment"],["harrasments","harassments"],["harrass","harass"],["harrassed","harassed"],["harrasses","harassed"],["harrassing","harassing"],["harrassment","harassment"],["harrassments","harassments"],["harth","hearth"],["harware","hardware"],["harwdare","hardware"],["has'nt","hasn't"],["hases","hashes"],["hashi","hash"],["hashreference","hash reference"],["hashs","hashes"],["hashses","hashes"],["hask","hash"],["hasn;t","hasn't"],["hasnt'","hasn't"],["hasnt","hasn't"],["hass","hash"],["hastable","hashtable"],["hastables","hashtables"],["Hatian","Haitian"],["hauty","haughty"],["have'nt","haven't"],["haveing","having"],["haven;t","haven't"],["havent'","haven't"],["havent't","haven't"],["havent","haven't"],["havew","have"],["haviest","heaviest"],["havn't","haven't"],["havnt","haven't"],["hax","hex"],["haynus","heinous"],["hazzle","hassle"],["hda","had"],["headder","header"],["headders","headers"],["headerr","header"],["headerrs","headers"],["headle","handle"],["headong","heading"],["headquarer","headquarter"],["headquater","headquarter"],["headquatered","headquartered"],["headquaters","headquarters"],["heaer","header"],["healthercare","healthcare"],["heathy","healthy"],["hefer","heifer"],["Heidelburg","Heidelberg"],["heigest","highest"],["heigher","higher"],["heighest","highest"],["heighit","height"],["heighteen","eighteen"],["heigt","height"],["heigth","height"],["heirachies","hierarchies"],["heirachy","hierarchy"],["heirarchic","hierarchic"],["heirarchical","hierarchical"],["heirarchically","hierarchically"],["heirarchies","hierarchies"],["heirarchy","hierarchy"],["heiroglyphics","hieroglyphics"],["helerps","helpers"],["hellow","hello"],["helment","helmet"],["heloer","helper"],["heloers","helpers"],["helpe","helper"],["helpfull","helpful"],["helpfuly","helpfully"],["helpped","helped"],["hemipshere","hemisphere"],["hemipsheres","hemispheres"],["hemishpere","hemisphere"],["hemishperes","hemispheres"],["hemmorhage","hemorrhage"],["hemorage","haemorrhage"],["henc","hence"],["henderence","hindrance"],["hendler","handler"],["hense","hence"],["hepler","helper"],["herarchy","hierarchy"],["herat","heart"],["heree","here"],["heridity","heredity"],["heroe","hero"],["heros","heroes"],["herselv","herself"],["hertiage","heritage"],["hertically","hectically"],["hertzs","hertz"],["hese","these"],["hesiate","hesitate"],["hesistant","hesitant"],["hesistate","hesitate"],["hesistated","hesitated"],["hesistates","hesitates"],["hesistating","hesitating"],["hesistation","hesitation"],["hesistations","hesitations"],["hestiate","hesitate"],["hetrogeneous","heterogeneous"],["heuristc","heuristic"],["heuristcs","heuristics"],["heursitics","heuristics"],["hevy","heavy"],["hexademical","hexadecimal"],["hexdecimal","hexadecimal"],["hexgaon","hexagon"],["hexgaonal","hexagonal"],["hexgaons","hexagons"],["hexidecimal","hexadecimal"],["hge","he"],["hiarchical","hierarchical"],["hiarchy","hierarchy"],["hiddden","hidden"],["hidded","hidden"],["hideen","hidden"],["hiden","hidden"],["hiearchies","hierarchies"],["hiearchy","hierarchy"],["hieght","height"],["hiena","hyena"],["hierachical","hierarchical"],["hierachies","hierarchies"],["hierachries","hierarchies"],["hierachry","hierarchy"],["hierachy","hierarchy"],["hierarachical","hierarchical"],["hierarachy","hierarchy"],["hierarchichal","hierarchical"],["hierarchichally","hierarchically"],["hierarchie","hierarchy"],["hierarcical","hierarchical"],["hierarcy","hierarchy"],["hierarhcical","hierarchical"],["hierarhcically","hierarchically"],["hierarhcies","hierarchies"],["hierarhcy","hierarchy"],["hierchy","hierarchy"],["hieroglph","hieroglyph"],["hieroglphs","hieroglyphs"],["hietus","hiatus"],["higeine","hygiene"],["higer","higher"],["higest","highest"],["high-affort","high-effort"],["highight","highlight"],["highighted","highlighted"],["highighter","highlighter"],["highighters","highlighters"],["highights","highlights"],["highjack","hijack"],["highligh","highlight"],["highlighed","highlighted"],["highligher","highlighter"],["highlighers","highlighters"],["highlighing","highlighting"],["highlighs","highlights"],["highlightin","highlighting"],["highlightning","highlighting"],["highligjt","highlight"],["highligjted","highlighted"],["highligjtes","highlights"],["highligjting","highlighting"],["highligjts","highlights"],["highligt","highlight"],["highligted","highlighted"],["highligth","highlight"],["highligting","highlighting"],["highligts","highlights"],["highter","higher"],["hightest","highest"],["hightlight","highlight"],["hightlighted","highlighted"],["hightlighting","highlighting"],["hightlights","highlights"],["hights","heights"],["higlight","highlight"],["higlighted","highlighted"],["higlighting","highlighting"],["higlights","highlights"],["higly","highly"],["higth","height"],["higway","highway"],["hijkack","hijack"],["hijkacked","hijacked"],["hijkacking","hijacking"],["hijkacks","hijacks"],["hilight","highlight"],["hilighted","highlighted"],["hilighting","highlighting"],["hilights","highlights"],["hillarious","hilarious"],["himselv","himself"],["hinderance","hindrance"],["hinderence","hindrance"],["hindrence","hindrance"],["hipopotamus","hippopotamus"],["hipotetical","hypothetical"],["hirachy","hierarchy"],["hirarchies","hierarchies"],["hirarchy","hierarchy"],["hirarcies","hierarchies"],["hirearchy","hierarchy"],["hirearcy","hierarchy"],["hismelf","himself"],["hisory","history"],["histgram","histogram"],["histocompatability","histocompatibility"],["historgram","histogram"],["historgrams","histograms"],["historicians","historians"],["historyan","historian"],["historyans","historians"],["historycal","historical"],["historycally","historically"],["historycaly","historically"],["histroian","historian"],["histroians","historians"],["histroic","historic"],["histroical","historical"],["histroically","historically"],["histroicaly","historically"],["histroies","histories"],["histroy","history"],["histry","history"],["hitogram","histogram"],["hitories","histories"],["hitory","history"],["hitsingles","hit singles"],["hiygeine","hygiene"],["hmdi","hdmi"],["hnalder","handler"],["hoeks","hoax"],["hoever","however"],["hokay","okay"],["holf","hold"],["holliday","holiday"],["hollowcost","holocaust"],["homapage","homepage"],["homegeneous","homogeneous"],["homestate","home state"],["homogeneize","homogenize"],["homogeneized","homogenized"],["homogenious","homogeneous"],["homogeniously","homogeneously"],["homogenity","homogeneity"],["homogenius","homogeneous"],["homogeniusly","homogeneously"],["homogenoues","homogeneous"],["homogenous","homogeneous"],["homogenously","homogeneously"],["homogenuous","homogeneous"],["honory","honorary"],["hoook","hook"],["hoooks","hooks"],["hootsba","chutzpah"],["hopefulle","hopefully"],["hopefullly","hopefully"],["hopefullt","hopefully"],["hopefullu","hopefully"],["hopefuly","hopefully"],["hopeing","hoping"],["hopful","hopeful"],["hopfully","hopefully"],["hopmepage","homepage"],["hopmepages","homepages"],["hoppefully","hopefully"],["hopyfully","hopefully"],["horicontal","horizontal"],["horicontally","horizontally"],["horinzontal","horizontal"],["horizntal","horizontal"],["horizonal","horizontal"],["horizonally","horizontally"],["horizontale","horizontal"],["horiztonal","horizontal"],["horiztonally","horizontally"],["horphan","orphan"],["horrable","horrible"],["horrifing","horrifying"],["horyzontally","horizontally"],["horziontal","horizontal"],["horziontally","horizontally"],["horzontal","horizontal"],["horzontally","horizontally"],["hosited","hoisted"],["hospitible","hospitable"],["hostanme","hostname"],["hostorical","historical"],["hostories","histories"],["hostory","history"],["hostspot","hotspot"],["hostspots","hotspots"],["hotizontal","horizontal"],["hotname","hostname"],["hounour","honour"],["houres","hours"],["housand","thousand"],["houskeeping","housekeeping"],["hovever","however"],["hovewer","however"],["howeever","however"],["howerver","however"],["howeverm","however"],["howewer","however"],["howver","however"],["hradware","hardware"],["hradwares","hardwares"],["hrlp","help"],["hrlped","helped"],["hrlper","helper"],["hrlpers","helpers"],["hrlping","helping"],["hrlps","helps"],["hrough","through"],["hsa","has"],["hsell","shell"],["hsi","his"],["hsitorians","historians"],["hsotname","hostname"],["hsould'nt","shouldn't"],["hsould","should"],["hsouldn't","shouldn't"],["hstory","history"],["htacccess","htaccess"],["hte","the"],["htey","they"],["htikn","think"],["hting","thing"],["htink","think"],["htis","this"],["htmp","html"],["htting","hitting"],["hueristic","heuristic"],["humber","number"],["huminoid","humanoid"],["humoural","humoral"],["humurous","humorous"],["hunderd","hundred"],["hundreths","hundredths"],["hundrets","hundreds"],["hunrgy","hungry"],["huricane","hurricane"],["huristic","heuristic"],["husban","husband"],["hvae","have"],["hvaing","having"],["hve","have"],["hwihc","which"],["hwile","while"],["hwole","whole"],["hybernate","hibernate"],["hydogen","hydrogen"],["hydrolic","hydraulic"],["hydrolics","hydraulics"],["hydropile","hydrophile"],["hydropilic","hydrophilic"],["hydropobe","hydrophobe"],["hydropobic","hydrophobic"],["hyerarchy","hierarchy"],["hyerlink","hyperlink"],["hygeine","hygiene"],["hygene","hygiene"],["hygenic","hygienic"],["hygine","hygiene"],["hyjack","hijack"],["hyjacking","hijacking"],["hypen","hyphen"],["hypenate","hyphenate"],["hypenated","hyphenated"],["hypenates","hyphenates"],["hypenating","hyphenating"],["hypenation","hyphenation"],["hypens","hyphens"],["hyperboly","hyperbole"],["Hyperldger","Hyperledger"],["hypervior","hypervisor"],["hypocracy","hypocrisy"],["hypocrasy","hypocrisy"],["hypocricy","hypocrisy"],["hypocrit","hypocrite"],["hypocrits","hypocrites"],["hyposeses","hypotheses"],["hyposesis","hypothesis"],["hypoteses","hypotheses"],["hypotesis","hypothesis"],["hypotethically","hypothetically"],["hypothenuse","hypotenuse"],["hypothenuses","hypotenuses"],["hypter","hyper"],["hyptothetical","hypothetical"],["hyptothetically","hypothetically"],["hypvervisor","hypervisor"],["hypvervisors","hypervisors"],["hypvisor","hypervisor"],["hypvisors","hypervisors"],["I'sd","I'd"],["i;ll","I'll"],["iamge","image"],["ibject","object"],["ibjects","objects"],["ibrary","library"],["icesickle","icicle"],["iclude","include"],["icluded","included"],["icludes","includes"],["icluding","including"],["iconclastic","iconoclastic"],["iconifie","iconify"],["icrease","increase"],["icreased","increased"],["icreases","increases"],["icreasing","increasing"],["icrement","increment"],["icrementally","incrementally"],["icremented","incremented"],["icrementing","incrementing"],["icrements","increments"],["idae","idea"],["idaeidae","idea"],["idaes","ideas"],["idealogies","ideologies"],["idealogy","ideology"],["idefinite","indefinite"],["idel","idle"],["idelogy","ideology"],["idemopotent","idempotent"],["idendified","identified"],["idendifier","identifier"],["idendifiers","identifiers"],["idenfied","identified"],["idenfifier","identifier"],["idenfifiers","identifiers"],["idenfitifer","identifier"],["idenfitifers","identifiers"],["idenfitify","identify"],["idenitfy","identify"],["idenitify","identify"],["identation","indentation"],["identcial","identical"],["identfied","identified"],["identfier","identifier"],["identfiers","identifiers"],["identiable","identifiable"],["idential","identical"],["identic","identical"],["identicial","identical"],["identidier","identifier"],["identies","identities"],["identifaction","identification"],["identifcation","identification"],["identifeir","identifier"],["identifeirs","identifiers"],["identifer","identifier"],["identifers","identifiers"],["identificable","identifiable"],["identifictaion","identification"],["identifieer","identifier"],["identifiler","identifier"],["identifilers","identifiers"],["identifing","identifying"],["identifiy","identify"],["identifyable","identifiable"],["identifyed","identified"],["identiviert","identifiers"],["identtation","indentation"],["identties","identities"],["identtifier","identifier"],["identty","identity"],["ideosyncracies","ideosyncrasies"],["ideosyncratic","idiosyncratic"],["idetifier","identifier"],["idetifiers","identifiers"],["idetifies","identifies"],["idicate","indicate"],["idicated","indicated"],["idicates","indicates"],["idicating","indicating"],["idices","indices"],["idiosyncracies","idiosyncrasies"],["idiosyncracy","idiosyncrasy"],["idividual","individual"],["idividually","individually"],["idividuals","individuals"],["idons","icons"],["iechart","piechart"],["ifself","itself"],["ifset","if set"],["ignest","ingest"],["ignested","ingested"],["ignesting","ingesting"],["ignests","ingests"],["ignnore","ignore"],["ignoded","ignored"],["ignonre","ignore"],["ignora","ignore"],["ignord","ignored"],["ignoreing","ignoring"],["ignorence","ignorance"],["ignorgable","ignorable"],["ignorgd","ignored"],["ignorge","ignore"],["ignorged","ignored"],["ignorgg","ignoring"],["ignorgig","ignoring"],["ignorging","ignoring"],["ignorgs","ignores"],["ignormable","ignorable"],["ignormd","ignored"],["ignorme","ignore"],["ignormed","ignored"],["ignormg","ignoring"],["ignormig","ignoring"],["ignorming","ignoring"],["ignorms","ignores"],["ignornable","ignorable"],["ignornd","ignored"],["ignorne","ignore"],["ignorned","ignored"],["ignorng","ignoring"],["ignornig","ignoring"],["ignorning","ignoring"],["ignorns","ignores"],["ignorrable","ignorable"],["ignorrd","ignored"],["ignorre","ignore"],["ignorred","ignored"],["ignorrg","ignoring"],["ignorrig","ignoring"],["ignorring","ignoring"],["ignorrs","ignores"],["ignors","ignores"],["ignortable","ignorable"],["ignortd","ignored"],["ignorte","ignore"],["ignorted","ignored"],["ignortg","ignoring"],["ignortig","ignoring"],["ignorting","ignoring"],["ignorts","ignores"],["ignory","ignore"],["ignroed","ignored"],["ignroing","ignoring"],["igoned","ignored"],["igonorando","ignorando"],["igonore","ignore"],["igore","ignore"],["igored","ignored"],["igores","ignores"],["igoring","ignoring"],["igrnore","ignore"],["Ihaca","Ithaca"],["ihs","his"],["iif","if"],["iimmune","immune"],["iinclude","include"],["iinterval","interval"],["iiterator","iterator"],["iland","island"],["ileagle","illegal"],["ilegal","illegal"],["ilegle","illegal"],["iligal","illegal"],["illegimacy","illegitimacy"],["illegitmate","illegitimate"],["illess","illness"],["illgal","illegal"],["illiegal","illegal"],["illigal","illegal"],["illigitament","illegitimate"],["illistrate","illustrate"],["illustrasion","illustration"],["illution","illusion"],["ilness","illness"],["ilogical","illogical"],["iluminate","illuminate"],["iluminated","illuminated"],["iluminates","illuminates"],["ilumination","illumination"],["iluminations","illuminations"],["ilustrate","illustrate"],["ilustrated","illustrated"],["ilustration","illustration"],["imagenary","imaginary"],["imaghe","image"],["imagin","imagine"],["imapct","impact"],["imapcted","impacted"],["imapcting","impacting"],["imapcts","impacts"],["imapge","image"],["imbaress","embarrass"],["imbed","embed"],["imbedded","embedded"],["imbedding","embedding"],["imblance","imbalance"],["imbrase","embrace"],["imcoming","incoming"],["imcomming","incoming"],["imcompatibility","incompatibility"],["imcompatible","incompatible"],["imcomplete","incomplete"],["imedatly","immediately"],["imedialy","immediately"],["imediate","immediate"],["imediately","immediately"],["imediatly","immediately"],["imense","immense"],["imfamus","infamous"],["imgage","image"],["imidiately","immediately"],["imilar","similar"],["imlement","implement"],["imlementation","implementation"],["imlemented","implemented"],["imlementing","implementing"],["imlements","implements"],["imlicit","implicit"],["imlicitly","implicitly"],["imliment","implement"],["imlimentation","implementation"],["imlimented","implemented"],["imlimenting","implementing"],["imliments","implements"],["immadiate","immediate"],["immadiately","immediately"],["immadiatly","immediately"],["immeadiate","immediate"],["immeadiately","immediately"],["immedaite","immediate"],["immedate","immediate"],["immedately","immediately"],["immedeate","immediate"],["immedeately","immediately"],["immedially","immediately"],["immedialty","immediately"],["immediantely","immediately"],["immediatelly","immediately"],["immediatelty","immediately"],["immediatley","immediately"],["immediatlly","immediately"],["immediatly","immediately"],["immediatlye","immediately"],["immeditaly","immediately"],["immeditately","immediately"],["immeidate","immediate"],["immeidately","immediately"],["immenantly","eminently"],["immidately","immediately"],["immidatly","immediately"],["immidiate","immediate"],["immidiatelly","immediately"],["immidiately","immediately"],["immidiatly","immediately"],["immitate","imitate"],["immitated","imitated"],["immitating","imitating"],["immitator","imitator"],["immmediate","immediate"],["immmediately","immediately"],["immsersive","immersive"],["immsersively","immersively"],["immuniy","immunity"],["immunosupressant","immunosuppressant"],["immutible","immutable"],["imolicit","implicit"],["imolicitly","implicitly"],["imort","import"],["imortable","importable"],["imorted","imported"],["imortes","imports"],["imorting","importing"],["imorts","imports"],["imovable","immovable"],["impcat","impact"],["impcated","impacted"],["impcating","impacting"],["impcats","impacts"],["impecabbly","impeccably"],["impedence","impedance"],["impeed","impede"],["impelement","implement"],["impelementation","implementation"],["impelemented","implemented"],["impelementing","implementing"],["impelements","implements"],["impelentation","implementation"],["impelment","implement"],["impelmentation","implementation"],["impelmentations","implementations"],["impement","implement"],["impementaion","implementation"],["impementaions","implementations"],["impementated","implemented"],["impementation","implementation"],["impementations","implementations"],["impemented","implemented"],["impementing","implementing"],["impementling","implementing"],["impementor","implementer"],["impements","implements"],["imperiaal","imperial"],["imperically","empirically"],["imperitive","imperative"],["impermable","impermeable"],["impiled","implied"],["implace","inplace"],["implament","implement"],["implamentation","implementation"],["implamented","implemented"],["implamenting","implementing"],["implaments","implements"],["implcit","implicit"],["implcitly","implicitly"],["implct","implicit"],["implemantation","implementation"],["implemataion","implementation"],["implemataions","implementations"],["implemememnt","implement"],["implemememntation","implementation"],["implemement","implement"],["implemementation","implementation"],["implemementations","implementations"],["implememented","implemented"],["implemementing","implementing"],["implemements","implements"],["implememetation","implementation"],["implememntation","implementation"],["implememt","implement"],["implememtation","implementation"],["implememtations","implementations"],["implememted","implemented"],["implememting","implementing"],["implememts","implements"],["implemen","implement"],["implemenatation","implementation"],["implemenation","implementation"],["implemenationa","implementation"],["implemenationd","implementation"],["implemenations","implementations"],["implemencted","implemented"],["implemend","implement"],["implemends","implements"],["implemened","implemented"],["implemenet","implement"],["implemenetaion","implementation"],["implemenetaions","implementations"],["implemenetation","implementation"],["implemenetations","implementations"],["implemenetd","implemented"],["implemeneted","implemented"],["implemeneter","implementer"],["implemeneting","implementing"],["implemenetions","implementations"],["implemenets","implements"],["implemenrt","implement"],["implementaed","implemented"],["implementaion","implementation"],["implementaions","implementations"],["implementaiton","implementation"],["implementaitons","implementations"],["implementantions","implementations"],["implementastion","implementation"],["implementataion","implementation"],["implementatation","implementation"],["implementated","implemented"],["implementates","implements"],["implementating","implementing"],["implementatins","implementations"],["implementation-spacific","implementation-specific"],["implementatition","implementation"],["implementatoin","implementation"],["implementatoins","implementations"],["implementatoion","implementation"],["implementaton","implementation"],["implementator","implementer"],["implementators","implementers"],["implementattion","implementation"],["implementd","implemented"],["implementes","implements"],["implementet","implemented"],["implemention","implementation"],["implementtaion","implementation"],["implemet","implement"],["implemetation","implementation"],["implemetations","implementations"],["implemeted","implemented"],["implemeting","implementing"],["implemetnation","implementation"],["implemets","implements"],["implemnt","implement"],["implemntation","implementation"],["implemntations","implementations"],["implemt","implement"],["implemtation","implementation"],["implemtations","implementations"],["implemted","implemented"],["implemtentation","implementation"],["implemtentations","implementations"],["implemting","implementing"],["implemts","implements"],["impleneted","implemented"],["implenment","implement"],["implenmentation","implementation"],["implent","implement"],["implentation","implementation"],["implentations","implementations"],["implented","implemented"],["implenting","implementing"],["implentors","implementers"],["implents","implements"],["implet","implement"],["impletation","implementation"],["impletations","implementations"],["impleted","implemented"],["impleter","implementer"],["impleting","implementing"],["impletment","implement"],["implets","implements"],["implicitely","implicitly"],["implicitley","implicitly"],["implict","implicit"],["implictly","implicitly"],["implimcit","implicit"],["implimcitly","implicitly"],["impliment","implement"],["implimentaion","implementation"],["implimentaions","implementations"],["implimentation","implementation"],["implimentation-spacific","implementation-specific"],["implimentations","implementations"],["implimented","implemented"],["implimenting","implementing"],["implimention","implementation"],["implimentions","implementations"],["implimentor","implementor"],["impliments","implements"],["implmenet","implement"],["implmenetaion","implementation"],["implmenetaions","implementations"],["implmenetation","implementation"],["implmenetations","implementations"],["implmenetd","implemented"],["implmeneted","implemented"],["implmeneter","implementer"],["implmeneting","implementing"],["implmenets","implements"],["implment","implement"],["implmentation","implementation"],["implmentations","implementations"],["implmented","implemented"],["implmenting","implementing"],["implments","implements"],["imploys","employs"],["imporing","importing"],["imporot","import"],["imporoted","imported"],["imporoting","importing"],["imporots","imports"],["imporove","improve"],["imporoved","improved"],["imporovement","improvement"],["imporovements","improvements"],["imporoves","improves"],["imporoving","improving"],["imporsts","imports"],["importamt","important"],["importat","important"],["importd","imported"],["importent","important"],["importnt","important"],["imporve","improve"],["imporved","improved"],["imporvement","improvement"],["imporvements","improvements"],["imporves","improves"],["imporving","improving"],["imporvment","improvement"],["imposible","impossible"],["impossiblble","impossible"],["impot","import"],["impove","improve"],["impoved","improved"],["impovement","improvement"],["impovements","improvements"],["impoves","improves"],["impoving","improving"],["impplement","implement"],["impplementating","implementing"],["impplementation","implementation"],["impplemented","implemented"],["impremented","implemented"],["impres","impress"],["impresive","impressive"],["impressario","impresario"],["imprioned","imprisoned"],["imprisonned","imprisoned"],["improbe","improve"],["improbement","improvement"],["improbements","improvements"],["improbes","improves"],["improbing","improving"],["improbment","improvement"],["improbments","improvements"],["improof","improve"],["improofement","improvement"],["improofing","improving"],["improofment","improvement"],["improofs","improves"],["improove","improve"],["improoved","improved"],["improovement","improvement"],["improovements","improvements"],["improoves","improves"],["improoving","improving"],["improovment","improvement"],["improovments","improvements"],["impropely","improperly"],["improssible","impossible"],["improt","import"],["improtance","importance"],["improtant","important"],["improtantly","importantly"],["improtation","importation"],["improtations","importations"],["improted","imported"],["improter","importer"],["improters","importers"],["improting","importing"],["improts","imports"],["improvemen","improvement"],["improvemenet","improvement"],["improvemenets","improvements"],["improvemens","improvements"],["improvision","improvisation"],["improvmenet","improvement"],["improvmenets","improvements"],["improvment","improvement"],["improvments","improvements"],["imput","input"],["imrovement","improvement"],["in-memeory","in-memory"],["inablility","inability"],["inacccessible","inaccessible"],["inaccesible","inaccessible"],["inaccessable","inaccessible"],["inaccuraccies","inaccuracies"],["inaccuraccy","inaccuracy"],["inacessible","inaccessible"],["inacurate","inaccurate"],["inacurracies","inaccuracies"],["inacurrate","inaccurate"],["inadiquate","inadequate"],["inadquate","inadequate"],["inadvertant","inadvertent"],["inadvertantly","inadvertently"],["inadvertedly","inadvertently"],["inagurated","inaugurated"],["inaguration","inauguration"],["inaktively","inactively"],["inalid","invalid"],["inappropiate","inappropriate"],["inappropreate","inappropriate"],["inapropriate","inappropriate"],["inapropriately","inappropriately"],["inate","innate"],["inaugures","inaugurates"],["inavlid","invalid"],["inbalance","imbalance"],["inbalanced","imbalanced"],["inbed","embed"],["inbedded","embedded"],["inbility","inability"],["incalid","invalid"],["incarcirated","incarcerated"],["incase","in case"],["incatation","incantation"],["incatations","incantations"],["incative","inactive"],["incement","increment"],["incemental","incremental"],["incementally","incrementally"],["incemented","incremented"],["incements","increments"],["incerase","increase"],["incerased","increased"],["incerasing","increasing"],["incidential","incidental"],["incidentially","incidentally"],["incidently","incidentally"],["inclding","including"],["incldue","include"],["incldued","included"],["incldues","includes"],["inclinaison","inclination"],["inclode","include"],["inclreased","increased"],["includ","include"],["includea","include"],["includee","include"],["includeing","including"],["includied","included"],["includig","including"],["includign","including"],["includng","including"],["inclue","include"],["inclued","included"],["inclues","includes"],["incluging","including"],["incluide","include"],["incluing","including"],["inclused","included"],["inclusing","including"],["inclusinve","inclusive"],["inclution","inclusion"],["inclutions","inclusions"],["incmrement","increment"],["incoherance","incoherence"],["incoherancy","incoherency"],["incoherant","incoherent"],["incoherantly","incoherently"],["incomapatibility","incompatibility"],["incomapatible","incompatible"],["incomaptibele","incompatible"],["incomaptibelities","incompatibilities"],["incomaptibelity","incompatibility"],["incomaptible","incompatible"],["incombatibilities","incompatibilities"],["incombatibility","incompatibility"],["incomfortable","uncomfortable"],["incomming","incoming"],["incommplete","incomplete"],["incompatabable","incompatible"],["incompatabiity","incompatibility"],["incompatabile","incompatible"],["incompatabilities","incompatibilities"],["incompatability","incompatibility"],["incompatabillity","incompatibility"],["incompatabilty","incompatibility"],["incompatabily","incompatibility"],["incompatable","incompatible"],["incompatablility","incompatibility"],["incompatablities","incompatibilities"],["incompatablitiy","incompatibility"],["incompatablity","incompatibility"],["incompatably","incompatibly"],["incompataibility","incompatibility"],["incompataible","incompatible"],["incompataility","incompatibility"],["incompatatbility","incompatibility"],["incompatatble","incompatible"],["incompatatible","incompatible"],["incompatbility","incompatibility"],["incompatble","incompatible"],["incompatiability","incompatibility"],["incompatiable","incompatible"],["incompatibile","incompatible"],["incompatibilies","incompatibilities"],["incompatiblities","incompatibilities"],["incompatiblity","incompatibility"],["incompetance","incompetence"],["incompetant","incompetent"],["incompete","incomplete"],["incomping","incoming"],["incompleate","incomplete"],["incompleete","incomplete"],["incompletd","incomplete"],["incomptable","incompatible"],["incomptetent","incompetent"],["incomptible","incompatible"],["inconcistencies","inconsistencies"],["inconcistency","inconsistency"],["inconcistent","inconsistent"],["inconditional","unconditional"],["inconditionally","unconditionally"],["inconfortable","uncomfortable"],["inconisistent","inconsistent"],["inconistencies","inconsistencies"],["inconlusive","inconclusive"],["inconsisent","inconsistent"],["inconsisently","inconsistently"],["inconsisntency","inconsistency"],["inconsistance","inconsistency"],["inconsistancies","inconsistencies"],["inconsistancy","inconsistency"],["inconsistant","inconsistent"],["inconsisten","inconsistent"],["inconsistend","inconsistent"],["inconsistendly","inconsistently"],["inconsistendt","inconsistent"],["inconsistendtly","inconsistently"],["inconsistenly","inconsistently"],["inconsistented","inconsistent"],["inconsitant","inconsistent"],["inconsitency","inconsistency"],["inconsitent","inconsistent"],["inconveniant","inconvenient"],["inconveniantly","inconveniently"],["inconvertable","inconvertible"],["inconvienience","inconvenience"],["inconvienient","inconvenient"],["inconvineance","inconvenience"],["inconvineances","inconveniences"],["inconvinence","inconvenience"],["inconvinences","inconveniences"],["inconviniance","inconvenience"],["inconviniances","inconveniences"],["inconvinience","inconvenience"],["inconviniences","inconveniences"],["inconviniency","inconvenience"],["inconviniencys","inconveniences"],["incooperates","incorporates"],["incoperate","incorporate"],["incoperated","incorporated"],["incoperates","incorporates"],["incoperating","incorporating"],["incoporate","incorporate"],["incoporated","incorporated"],["incoporates","incorporates"],["incoporating","incorporating"],["incoprorate","incorporate"],["incoprorated","incorporated"],["incoprorates","incorporates"],["incoprorating","incorporating"],["incorect","incorrect"],["incorectly","incorrectly"],["incoropate","incorporate"],["incoropates","incorporates"],["incoroporated","incorporated"],["incorparates","incorporates"],["incorperate","incorporate"],["incorperated","incorporated"],["incorperates","incorporates"],["incorperating","incorporating"],["incorperation","incorporation"],["incorportaed","incorporated"],["incorported","incorporated"],["incorprates","incorporates"],["incorreclty","incorrectly"],["incorrecly","incorrectly"],["incorrecty","incorrectly"],["incorreect","incorrect"],["incorreectly","incorrectly"],["incorrent","incorrect"],["incorret","incorrect"],["incorrrect","incorrect"],["incorrrectly","incorrectly"],["incorruptable","incorruptible"],["incosistencies","inconsistencies"],["incosistency","inconsistency"],["incosistent","inconsistent"],["incosistente","inconsistent"],["incramentally","incrementally"],["increadible","incredible"],["increading","increasing"],["increaing","increasing"],["increament","increment"],["increas","increase"],["incredable","incredible"],["incremantal","incremental"],["incremeantal","incremental"],["incremenet","increment"],["incremenetd","incremented"],["incremeneted","incremented"],["incrementaly","incrementally"],["incremet","increment"],["incremetal","incremental"],["incremeted","incremented"],["incremnet","increment"],["increse","increase"],["incresed","increased"],["increses","increases"],["incresing","increasing"],["incrfemental","incremental"],["incrmenet","increment"],["incrmenetd","incremented"],["incrmeneted","incremented"],["incrment","increment"],["incrmental","incremental"],["incrmentally","incrementally"],["incrmented","incremented"],["incrmenting","incrementing"],["incrments","increments"],["inctance","instance"],["inctroduce","introduce"],["inctroduced","introduced"],["incude","include"],["incuded","included"],["incudes","includes"],["incuding","including"],["inculde","include"],["inculded","included"],["inculdes","includes"],["inculding","including"],["incunabla","incunabula"],["incure","incur"],["incurruptable","incorruptible"],["incurruptible","incorruptible"],["incvalid","invalid"],["indcates","indicates"],["indciate","indicate"],["inddex","index"],["inddividual","individual"],["inddividually","individually"],["inddividuals","individuals"],["indecate","indicate"],["indeces","indices"],["indecies","indices"],["indefinate","indefinite"],["indefinately","indefinitely"],["indefineable","undefinable"],["indefinetly","indefinitely"],["indefinitiley","indefinitely"],["indefinitively","indefinitely"],["indefinitly","indefinitely"],["indefintly","indefinitely"],["indempotent","idempotent"],["indendation","indentation"],["indentaction","indentation"],["indentaion","indentation"],["indentended","indented"],["indentical","identical"],["indentically","identically"],["indentifer","identifier"],["indentification","identification"],["indentified","identified"],["indentifier","identifier"],["indentifies","identifies"],["indentifing","identifying"],["indentify","identify"],["indentifying","identifying"],["indentit","identity"],["indentity","identity"],["indentleveal","indentlevel"],["indenx","index"],["indepandance","independence"],["indepdence","independence"],["indepdencente","independence"],["indepdendance","independence"],["indepdendant","independent"],["indepdendantly","independently"],["indepdendence","independence"],["indepdendency","independency"],["indepdendent","independent"],["indepdendently","independently"],["indepdendet","independent"],["indepdendetly","independently"],["indepdenence","independence"],["indepdenent","independent"],["indepdenently","independently"],["indepdent","independent"],["indepdented","independent"],["indepdentedly","independently"],["indepdently","independently"],["indepedantly","independently"],["indepedence","independence"],["indepedent","independent"],["indepedently","independently"],["independ","independent"],["independance","independence"],["independant","independent"],["independantly","independently"],["independece","independence"],["independed","independent"],["independedly","independently"],["independend","independent"],["independendet","independent"],["independet","independent"],["independly","independently"],["independnent","independent"],["independnet","independent"],["independnt","independent"],["independntly","independently"],["independt","independent"],["independtly","independently"],["indepenedent","independent"],["indepenendence","independence"],["indepenent","independent"],["indepenently","independently"],["indepent","independent"],["indepentent","independent"],["indepently","independently"],["inderect","indirect"],["inderts","inserts"],["indes","index"],["indespensable","indispensable"],["indespensible","indispensable"],["indexig","indexing"],["indiactor","indicator"],["indiate","indicate"],["indiated","indicated"],["indiates","indicates"],["indiating","indicating"],["indicaite","indicate"],["indicat","indicate"],["indicees","indices"],["indiciate","indicate"],["indiciated","indicated"],["indiciates","indicates"],["indiciating","indicating"],["indicies","indices"],["indicte","indicate"],["indictement","indictment"],["indictes","indicates"],["indictor","indicator"],["indigineous","indigenous"],["indipendence","independence"],["indipendent","independent"],["indipendently","independently"],["indiquate","indicate"],["indiquates","indicates"],["indirecty","indirectly"],["indispensible","indispensable"],["indisputible","indisputable"],["indisputibly","indisputably"],["indistiguishable","indistinguishable"],["indivdual","individual"],["indivdually","individually"],["indivdualy","individually"],["individal","individual"],["individally","individually"],["individals","individuals"],["individaul","individual"],["individaully","individually"],["individauls","individuals"],["individauly","individually"],["individial","individual"],["individualy","individually"],["individuel","individual"],["individuelly","individually"],["individuely","individually"],["indivisual","individual"],["indivisuality","individuality"],["indivisually","individually"],["indivisuals","individuals"],["indiviual","individual"],["indiviually","individually"],["indiviuals","individuals"],["indivual","individual"],["indivudual","individual"],["indivudually","individually"],["indizies","indices"],["indpendent","independent"],["indpendently","independently"],["indrect","indirect"],["indulgue","indulge"],["indure","endure"],["indutrial","industrial"],["indvidual","individual"],["indviduals","individuals"],["indxes","indexes"],["inearisation","linearisation"],["ineffciency","inefficiency"],["ineffcient","inefficient"],["ineffciently","inefficiently"],["inefficency","inefficiency"],["inefficent","inefficient"],["inefficently","inefficiently"],["inefficenty","inefficiently"],["inefficienty","inefficiently"],["ineffiecent","inefficient"],["ineffient","inefficient"],["ineffiently","inefficiently"],["ineficient","inefficient"],["inegrate","integrate"],["inegrated","integrated"],["ineqality","inequality"],["inequalitiy","inequality"],["inerface","interface"],["inerit","inherit"],["ineritance","inheritance"],["inerited","inherited"],["ineriting","inheriting"],["ineritor","inheritor"],["ineritors","inheritors"],["inerits","inherits"],["inernal","internal"],["inerrupt","interrupt"],["inershia","inertia"],["inershial","inertial"],["inersia","inertia"],["inersial","inertial"],["inertion","insertion"],["ines","lines"],["inestart","linestart"],["inetrrupts","interrupts"],["inevatible","inevitable"],["inevitible","inevitable"],["inevititably","inevitably"],["inexistant","inexistent"],["inexperiance","inexperience"],["inexperianced","inexperienced"],["inexpierence","inexperience"],["inexpierenced","inexperienced"],["inexpirience","inexperience"],["inexpirienced","inexperienced"],["infact","in fact"],["infalability","infallibility"],["infallable","infallible"],["infalte","inflate"],["infalted","inflated"],["infaltes","inflates"],["infalting","inflating"],["infectuous","infectious"],["infered","inferred"],["inferface","interface"],["infering","inferring"],["inferrable","inferable"],["inferrence","inference"],["infex","index"],["infilitrate","infiltrate"],["infilitrated","infiltrated"],["infilitration","infiltration"],["infinate","infinite"],["infinately","infinitely"],["infininte","infinite"],["infinit","infinite"],["infinitie","infinity"],["infinitly","infinitely"],["infinte","infinite"],["infintesimal","infinitesimal"],["infinty","infinity"],["infite","infinite"],["inflamation","inflammation"],["inflatoin","inflation"],["inflexable","inflexible"],["inflight","in-flight"],["influece","influence"],["influeced","influenced"],["influeces","influences"],["influecing","influencing"],["influencial","influential"],["influencin","influencing"],["influented","influenced"],["infoemation","information"],["infomation","information"],["infomational","informational"],["infomed","informed"],["infomer","informer"],["infomration","information"],["infoms","informs"],["infor","info"],["inforamtion","information"],["inforation","information"],["inforational","informational"],["inforce","enforce"],["inforced","enforced"],["informacion","information"],["informaion","information"],["informaiton","information"],["informatation","information"],["informatations","information"],["informatikon","information"],["informatins","information"],["informatio","information"],["informatiom","information"],["informations","information"],["informatoin","information"],["informatoins","information"],["informaton","information"],["informfation","information"],["informtion","information"],["inforrmation","information"],["infrantryman","infantryman"],["infrasctructure","infrastructure"],["infrastrcuture","infrastructure"],["infrastruture","infrastructure"],["infrastucture","infrastructure"],["infrastuctures","infrastructures"],["infreqency","infrequency"],["infreqentcy","infrequency"],["infreqeuncy","infrequency"],["infreqeuntcy","infrequency"],["infrequancies","infrequencies"],["infrequancy","infrequency"],["infrequantcies","infrequencies"],["infrequantcy","infrequency"],["infrequentcies","infrequencies"],["infrigement","infringement"],["infromation","information"],["infromatoin","information"],["infrormation","information"],["infrustructure","infrastructure"],["ingegral","integral"],["ingenius","ingenious"],["ingnore","ignore"],["ingnored","ignored"],["ingnores","ignores"],["ingnoring","ignoring"],["ingore","ignore"],["ingored","ignored"],["ingores","ignores"],["ingoring","ignoring"],["ingration","integration"],["ingreediants","ingredients"],["inh","in"],["inhabitans","inhabitants"],["inherantly","inherently"],["inheratance","inheritance"],["inheret","inherit"],["inherets","inherits"],["inheritablility","inheritability"],["inheritence","inheritance"],["inherith","inherit"],["inherithed","inherited"],["inherithing","inheriting"],["inheriths","inherits"],["inheritted","inherited"],["inherrit","inherit"],["inherritance","inheritance"],["inherrited","inherited"],["inherriting","inheriting"],["inherrits","inherits"],["inhert","inherit"],["inhertance","inheritance"],["inhertances","inheritances"],["inherted","inherited"],["inhertiance","inheritance"],["inherting","inheriting"],["inherts","inherits"],["inhomogenous","inhomogeneous"],["inialized","initialized"],["iniate","initiate"],["inidicate","indicate"],["inidicated","indicated"],["inidicates","indicates"],["inidicating","indicating"],["inidication","indication"],["inidications","indications"],["inidividual","individual"],["inidvidual","individual"],["inifinite","infinite"],["inifinity","infinity"],["inifinte","infinite"],["inifite","infinite"],["iniitial","initial"],["iniitialization","initialization"],["iniitializations","initializations"],["iniitialize","initialize"],["iniitialized","initialized"],["iniitializes","initializes"],["iniitializing","initializing"],["inintialisation","initialisation"],["inintialization","initialization"],["inisialise","initialise"],["inisialised","initialised"],["inisialises","initialises"],["iniside","inside"],["inisides","insides"],["initail","initial"],["initailisation","initialisation"],["initailise","initialise"],["initailised","initialised"],["initailiser","initialiser"],["initailisers","initialisers"],["initailises","initialises"],["initailising","initialising"],["initailization","initialization"],["initailize","initialize"],["initailized","initialized"],["initailizer","initializer"],["initailizers","initializers"],["initailizes","initializes"],["initailizing","initializing"],["initailly","initially"],["initails","initials"],["initailsation","initialisation"],["initailse","initialise"],["initailsed","initialised"],["initailsiation","initialisation"],["initaily","initially"],["initailzation","initialization"],["initailze","initialize"],["initailzed","initialized"],["initailziation","initialization"],["inital","initial"],["initalialisation","initialisation"],["initalialization","initialization"],["initalisation","initialisation"],["initalise","initialise"],["initalised","initialised"],["initaliser","initialiser"],["initalises","initialises"],["initalising","initialising"],["initalization","initialization"],["initalize","initialize"],["initalized","initialized"],["initalizer","initializer"],["initalizes","initializes"],["initalizing","initializing"],["initally","initially"],["initals","initials"],["initiailize","initialize"],["initiailized","initialized"],["initiailizes","initializes"],["initiailizing","initializing"],["initiaitive","initiative"],["initiaitives","initiatives"],["initialialise","initialise"],["initialialize","initialize"],["initialiasation","initialisation"],["initialiase","initialise"],["initialiased","initialised"],["initialiation","initialization"],["initialiazation","initialization"],["initialiaze","initialize"],["initialiazed","initialized"],["initialied","initialized"],["initialilsing","initialising"],["initialilzing","initializing"],["initialisaing","initialising"],["initialisaiton","initialisation"],["initialisated","initialised"],["initialisatin","initialisation"],["initialisationg","initialisation"],["initialisaton","initialisation"],["initialisatons","initialisations"],["initialiseing","initialising"],["initialisiation","initialisation"],["initialisong","initialising"],["initialiting","initializing"],["initialitse","initialise"],["initialitsing","initialising"],["initialitze","initialize"],["initialitzing","initializing"],["initializa","initialize"],["initializad","initialized"],["initializaed","initialized"],["initializaing","initializing"],["initializaiton","initialization"],["initializate","initialize"],["initializated","initialized"],["initializates","initializes"],["initializatin","initialization"],["initializating","initializing"],["initializationg","initialization"],["initializaton","initialization"],["initializatons","initializations"],["initializedd","initialized"],["initializeing","initializing"],["initializiation","initialization"],["initializong","initializing"],["initialsation","initialisation"],["initialse","initialise"],["initialsed","initialised"],["initialses","initialises"],["initialsing","initialising"],["initialy","initially"],["initialyl","initially"],["initialyse","initialise"],["initialysed","initialised"],["initialyses","initialises"],["initialysing","initialising"],["initialyze","initialize"],["initialyzed","initialized"],["initialyzes","initializes"],["initialyzing","initializing"],["initialzation","initialization"],["initialze","initialize"],["initialzed","initialized"],["initialzes","initializes"],["initialzing","initializing"],["initiatiate","initiate"],["initiatiated","initiated"],["initiatiater","initiator"],["initiatiating","initiating"],["initiatiator","initiator"],["initiatiats","initiates"],["initiatie","initiate"],["initiatied","initiated"],["initiaties","initiates"],["initiialise","initialise"],["initiialize","initialize"],["initilialised","initialised"],["initilialization","initialization"],["initilializations","initializations"],["initilialize","initialize"],["initilialized","initialized"],["initilializes","initializes"],["initilializing","initializing"],["initiliase","initialise"],["initiliased","initialised"],["initiliases","initialises"],["initiliasing","initialising"],["initiliaze","initialize"],["initiliazed","initialized"],["initiliazes","initializes"],["initiliazing","initializing"],["initilisation","initialisation"],["initilisations","initialisations"],["initilise","initialise"],["initilised","initialised"],["initilises","initialises"],["initilising","initialising"],["initilization","initialization"],["initilizations","initializations"],["initilize","initialize"],["initilized","initialized"],["initilizes","initializes"],["initilizing","initializing"],["inititalisation","initialisation"],["inititalisations","initialisations"],["inititalise","initialise"],["inititalised","initialised"],["inititaliser","initialiser"],["inititalising","initialising"],["inititalization","initialization"],["inititalizations","initializations"],["inititalize","initialize"],["inititate","initiate"],["inititator","initiator"],["inititialization","initialization"],["inititializations","initializations"],["initliasation","initialisation"],["initliase","initialise"],["initliased","initialised"],["initliaser","initialiser"],["initliazation","initialization"],["initliaze","initialize"],["initliazed","initialized"],["initliazer","initializer"],["inituialisation","initialisation"],["inituialization","initialization"],["inivisible","invisible"],["inizialize","initialize"],["inizialized","initialized"],["inizializes","initializes"],["inlalid","invalid"],["inlclude","include"],["inlcluded","included"],["inlcludes","includes"],["inlcluding","including"],["inlcludion","inclusion"],["inlclusive","inclusive"],["inlcude","include"],["inlcuded","included"],["inlcudes","includes"],["inlcuding","including"],["inlcusion","inclusion"],["inlcusive","inclusive"],["inlin","inline"],["inlude","include"],["inluded","included"],["inludes","includes"],["inluding","including"],["inludung","including"],["inluence","influence"],["inlusive","inclusive"],["inmediate","immediate"],["inmediatelly","immediately"],["inmediately","immediately"],["inmediatily","immediately"],["inmediatly","immediately"],["inmense","immense"],["inmigrant","immigrant"],["inmigrants","immigrants"],["inmmediately","immediately"],["inmplementation","implementation"],["innactive","inactive"],["innacurate","inaccurate"],["innacurately","inaccurately"],["innappropriate","inappropriate"],["innecesarily","unnecessarily"],["innecesary","unnecessary"],["innecessarily","unnecessarily"],["innecessary","unnecessary"],["inneffectual","ineffectual"],["innocous","innocuous"],["innoculate","inoculate"],["innoculated","inoculated"],["innosense","innocence"],["inocence","innocence"],["inofficial","unofficial"],["inofrmation","information"],["inoperant","inoperative"],["inoquous","innocuous"],["inot","into"],["inouts","inputs"],["inpact","impact"],["inpacted","impacted"],["inpacting","impacting"],["inpacts","impacts"],["inpeach","impeach"],["inpecting","inspecting"],["inpection","inspection"],["inpections","inspections"],["inpending","impending"],["inpenetrable","impenetrable"],["inplementation","implementation"],["inplementations","implementations"],["inplemented","implemented"],["inplicit","implicit"],["inplicitly","implicitly"],["inpolite","impolite"],["inport","import"],["inportant","important"],["inposible","impossible"],["inpossible","impossible"],["inpout","input"],["inpouts","inputs"],["inpractical","impractical"],["inpracticality","impracticality"],["inpractically","impractically"],["inprisonment","imprisonment"],["inproove","improve"],["inprooved","improved"],["inprooves","improves"],["inprooving","improving"],["inproovment","improvement"],["inproovments","improvements"],["inproper","improper"],["inproperly","improperly"],["inproving","improving"],["inpsection","inspection"],["inpterpreter","interpreter"],["inpu","input"],["inputed","inputted"],["inputsream","inputstream"],["inpuut","input"],["inrement","increment"],["inrements","increments"],["inreractive","interactive"],["inrerface","interface"],["inresponsive","unresponsive"],["inro","into"],["ins't","isn't"],["insallation","installation"],["insalled","installed"],["inscpeting","inspecting"],["insctuction","instruction"],["insctuctional","instructional"],["insctuctions","instructions"],["insde","inside"],["insead","instead"],["insectiverous","insectivorous"],["insensative","insensitive"],["insensetive","insensitive"],["insensistive","insensitive"],["insensistively","insensitively"],["insensitiv","insensitive"],["insensitivy","insensitivity"],["insensitve","insensitive"],["insenstive","insensitive"],["insenstively","insensitively"],["insentives","incentives"],["insentivite","insensitive"],["insepect","inspect"],["insepected","inspected"],["insepection","inspection"],["insepects","inspects"],["insependent","independent"],["inseperable","inseparable"],["insepsion","inception"],["inser","insert"],["insering","inserting"],["insersect","intersect"],["insersected","intersected"],["insersecting","intersecting"],["insersects","intersects"],["inserst","insert"],["insersted","inserted"],["inserster","inserter"],["insersting","inserting"],["inserstor","inserter"],["insersts","inserts"],["insertin","inserting"],["insertino","inserting"],["insesitive","insensitive"],["insesitively","insensitively"],["insesitiveness","insensitiveness"],["insesitivity","insensitivity"],["insetad","instead"],["insetead","instead"],["inseted","inserted"],["insid","inside"],["insidde","inside"],["insiddes","insides"],["insided","inside"],["insignificat","insignificant"],["insignificatly","insignificantly"],["insigt","insight"],["insigth","insight"],["insigths","insights"],["insigts","insights"],["insistance","insistence"],["insititute","institute"],["insitution","institution"],["insitutions","institutions"],["insonsistency","inconsistency"],["instaance","instance"],["instabce","instance"],["instace","instance"],["instaces","instances"],["instaciate","instantiate"],["instad","instead"],["instade","instead"],["instaead","instead"],["instaed","instead"],["instal","install"],["instalation","installation"],["instalations","installations"],["instaled","installed"],["instaler","installer"],["instaling","installing"],["installaion","installation"],["installaiton","installation"],["installaitons","installations"],["installataion","installation"],["installataions","installations"],["installatation","installation"],["installationa","installation"],["installes","installs"],["installtion","installation"],["instals","installs"],["instancd","instance"],["instanciate","instantiate"],["instanciated","instantiated"],["instanciates","instantiates"],["instanciating","instantiating"],["instanciation","instantiation"],["instanciations","instantiations"],["instane","instance"],["instanes","instances"],["instanseation","instantiation"],["instansiate","instantiate"],["instansiated","instantiated"],["instansiates","instantiates"],["instansiation","instantiation"],["instantate","instantiate"],["instantating","instantiating"],["instantation","instantiation"],["instantations","instantiations"],["instantiaties","instantiates"],["instanze","instance"],["instatance","instance"],["instatiate","instantiate"],["instatiation","instantiation"],["instatiations","instantiations"],["insteance","instance"],["insted","instead"],["insteead","instead"],["inster","insert"],["insterad","instead"],["insterrupts","interrupts"],["instersction","intersection"],["instersctions","intersections"],["instersectioned","intersection"],["instert","insert"],["insterted","inserted"],["instertion","insertion"],["institue","institute"],["instlal","install"],["instlalation","installation"],["instlalations","installations"],["instlaled","installed"],["instlaler","installer"],["instlaling","installing"],["instlals","installs"],["instller","installer"],["instnace","instance"],["instnaces","instances"],["instnance","instance"],["instnances","instances"],["instnat","instant"],["instnatiated","instantiated"],["instnatiation","instantiation"],["instnatiations","instantiations"],["instnce","instance"],["instnces","instances"],["instnsiated","instantiated"],["instnsiation","instantiation"],["instnsiations","instantiations"],["instnt","instant"],["instntly","instantly"],["instrace","instance"],["instralled","installed"],["instrction","instruction"],["instrctional","instructional"],["instrctions","instructions"],["instrcut","instruct"],["instrcutino","instruction"],["instrcutinoal","instructional"],["instrcutinos","instructions"],["instrcution","instruction"],["instrcutional","instructional"],["instrcutions","instructions"],["instrcuts","instructs"],["instread","instead"],["instrinsic","intrinsic"],["instruccion","instruction"],["instruccional","instructional"],["instruccions","instructions"],["instrucion","instruction"],["instrucional","instructional"],["instrucions","instructions"],["instruciton","instruction"],["instrucitonal","instructional"],["instrucitons","instructions"],["instrumenet","instrument"],["instrumenetation","instrumentation"],["instrumenetd","instrumented"],["instrumeneted","instrumented"],["instrumentaion","instrumentation"],["instrumnet","instrument"],["instrumnets","instruments"],["instsall","install"],["instsallation","installation"],["instsallations","installations"],["instsalled","installed"],["instsalls","installs"],["instuction","instruction"],["instuctional","instructional"],["instuctions","instructions"],["instuments","instruments"],["insturment","instrument"],["insturments","instruments"],["instutionalized","institutionalized"],["instutions","intuitions"],["insuffciency","insufficiency"],["insuffcient","insufficient"],["insuffciently","insufficiently"],["insufficency","insufficiency"],["insufficent","insufficient"],["insufficently","insufficiently"],["insuffiency","insufficiency"],["insuffient","insufficient"],["insuffiently","insufficiently"],["insurasnce","insurance"],["insurence","insurance"],["intaces","instance"],["intack","intact"],["intall","install"],["intallation","installation"],["intallationpath","installationpath"],["intallations","installations"],["intalled","installed"],["intalleing","installing"],["intaller","installer"],["intalles","installs"],["intalling","installing"],["intalls","installs"],["intances","instances"],["intantiate","instantiate"],["intantiating","instantiating"],["inteaction","interaction"],["intead","instead"],["inteded","intended"],["intedned","intended"],["inteface","interface"],["intefere","interfere"],["intefered","interfered"],["inteference","interference"],["integarte","integrate"],["integarted","integrated"],["integartes","integrates"],["integated","integrated"],["integates","integrates"],["integating","integrating"],["integation","integration"],["integations","integrations"],["integeral","integral"],["integere","integer"],["integreated","integrated"],["integrety","integrity"],["integrey","integrity"],["intelectual","intellectual"],["intelegence","intelligence"],["intelegent","intelligent"],["intelegently","intelligently"],["inteligability","intelligibility"],["inteligable","intelligible"],["inteligance","intelligence"],["inteligantly","intelligently"],["inteligence","intelligence"],["inteligent","intelligent"],["intelisense","intellisense"],["intelligable","intelligible"],["intemediary","intermediary"],["intenal","internal"],["intenational","international"],["intendet","intended"],["inteneded","intended"],["intenisty","intensity"],["intension","intention"],["intensional","intentional"],["intensionally","intentionally"],["intensionaly","intentionally"],["intentation","indentation"],["intentended","intended"],["intentially","intentionally"],["intentialy","intentionally"],["intentionaly","intentionally"],["intentionly","intentionally"],["intepolate","interpolate"],["intepolated","interpolated"],["intepolates","interpolates"],["intepret","interpret"],["intepretable","interpretable"],["intepretation","interpretation"],["intepretations","interpretations"],["intepretator","interpreter"],["intepretators","interpreters"],["intepreted","interpreted"],["intepreter","interpreter"],["intepreter-based","interpreter-based"],["intepreters","interpreters"],["intepretes","interprets"],["intepreting","interpreting"],["intepretor","interpreter"],["intepretors","interpreters"],["inteprets","interprets"],["inter-operability","interoperability"],["interace","interface"],["interaces","interfaces"],["interacive","interactive"],["interacively","interactively"],["interacsion","interaction"],["interacsions","interactions"],["interactionn","interaction"],["interactionns","interactions"],["interactiv","interactive"],["interactivly","interactively"],["interactuable","interactive"],["interafce","interface"],["interakt","interact"],["interaktion","interaction"],["interaktions","interactions"],["interaktive","interactively"],["interaktively","interactively"],["interaktivly","interactively"],["interaly","internally"],["interanl","internal"],["interanlly","internally"],["interate","iterate"],["interational","international"],["interative","interactive"],["interatively","interactively"],["interator","iterator"],["interators","iterators"],["interaxction","interaction"],["interaxctions","interactions"],["interaxtion","interaction"],["interaxtions","interactions"],["intercahnge","interchange"],["intercahnged","interchanged"],["intercation","interaction"],["interchage","interchange"],["interchangable","interchangeable"],["interchangably","interchangeably"],["interchangeble","interchangeable"],["intercollegate","intercollegiate"],["intercontinential","intercontinental"],["intercontinetal","intercontinental"],["interdependant","interdependent"],["interecptor","interceptor"],["intereested","interested"],["intereference","interference"],["intereferences","interferences"],["interelated","interrelated"],["interelaved","interleaved"],["interepolate","interpolate"],["interepolated","interpolated"],["interepolates","interpolates"],["interepolating","interpolating"],["interepolation","interpolation"],["interepret","interpret"],["interepretation","interpretation"],["interepretations","interpretations"],["interepreted","interpreted"],["interepreting","interpreting"],["intereprets","interprets"],["interept","intercept"],["interesct","intersect"],["interescted","intersected"],["interescting","intersecting"],["interesction","intersection"],["interesctions","intersections"],["interescts","intersects"],["interesect","intersect"],["interesected","intersected"],["interesecting","intersecting"],["interesection","intersection"],["interesections","intersections"],["interesects","intersects"],["intereset","interest"],["intereseted","interested"],["intereseting","interesting"],["interesing","interesting"],["interespersed","interspersed"],["interesseted","interested"],["interesst","interest"],["interessted","interested"],["interessting","interesting"],["intereview","interview"],["interfal","interval"],["interfals","intervals"],["interfave","interface"],["interfaves","interfaces"],["interfcae","interface"],["interfcaes","interfaces"],["interfear","interfere"],["interfearence","interference"],["interfearnce","interference"],["interfer","interfere"],["interferance","interference"],["interferd","interfered"],["interfereing","interfering"],["interfernce","interference"],["interferred","interfered"],["interferring","interfering"],["interfers","interferes"],["intergated","integrated"],["interger's","integer's"],["interger","integer"],["intergerated","integrated"],["intergers","integers"],["intergrate","integrate"],["intergrated","integrated"],["intergrates","integrates"],["intergrating","integrating"],["intergration","integration"],["intergrations","integrations"],["interit","inherit"],["interitance","inheritance"],["interited","inherited"],["interiting","inheriting"],["interits","inherits"],["interliveing","interleaving"],["interlly","internally"],["intermediat","intermediate"],["intermeidate","intermediate"],["intermidiate","intermediate"],["intermitent","intermittent"],["intermittant","intermittent"],["intermperance","intemperance"],["internaly","internally"],["internatinal","international"],["internatioanl","international"],["internation","international"],["internel","internal"],["internels","internals"],["internface","interface"],["interogators","interrogators"],["interopeable","interoperable"],["interoprability","interoperability"],["interperated","interpreted"],["interpert","interpret"],["interpertation","interpretation"],["interpertations","interpretations"],["interperted","interpreted"],["interperter","interpreter"],["interperters","interpreters"],["interperting","interpreting"],["interpertive","interpretive"],["interperts","interprets"],["interpet","interpret"],["interpetation","interpretation"],["interpeted","interpreted"],["interpeter","interpreter"],["interpeters","interpreters"],["interpeting","interpreting"],["interpets","interprets"],["interploate","interpolate"],["interploated","interpolated"],["interploates","interpolates"],["interploatin","interpolating"],["interploation","interpolation"],["interpolaed","interpolated"],["interpolaion","interpolation"],["interpolaiton","interpolation"],["interpolar","interpolator"],["interpolayed","interpolated"],["interporation","interpolation"],["interporations","interpolations"],["interprate","interpret"],["interprated","interpreted"],["interpreation","interpretation"],["interprerter","interpreter"],["interpretated","interpreted"],["interprete","interpret"],["interpretes","interprets"],["interpretet","interpreted"],["interpretion","interpretation"],["interpretions","interpretations"],["interpretor","interpreter"],["interprett","interpret"],["interpretted","interpreted"],["interpretter","interpreter"],["interpretting","interpreting"],["interract","interact"],["interracting","interacting"],["interractive","interactive"],["interracts","interacts"],["interrest","interest"],["interrested","interested"],["interresting","interesting"],["interrface","interface"],["interrim","interim"],["interript","interrupt"],["interrput","interrupt"],["interrputed","interrupted"],["interrrupt","interrupt"],["interrrupted","interrupted"],["interrrupting","interrupting"],["interrrupts","interrupts"],["interrtups","interrupts"],["interrugum","interregnum"],["interrum","interim"],["interrup","interrupt"],["interruped","interrupted"],["interruping","interrupting"],["interrups","interrupts"],["interruptable","interruptible"],["interruptors","interrupters"],["interruptted","interrupted"],["interrut","interrupt"],["interrutps","interrupts"],["interscetion","intersection"],["intersecct","intersect"],["interseccted","intersected"],["interseccting","intersecting"],["intersecction","intersection"],["interseccts","intersects"],["intersecrion","intersection"],["intersecton","intersection"],["intersectons","intersections"],["intersparsed","interspersed"],["interst","interest"],["intersted","interested"],["intersting","interesting"],["intersts","interests"],["intertaining","entertaining"],["intertia","inertia"],["intertial","inertial"],["interupt","interrupt"],["interupted","interrupted"],["interupting","interrupting"],["interupts","interrupts"],["interuupt","interrupt"],["intervall","interval"],["intervalls","intervals"],["interveening","intervening"],["intervines","intervenes"],["intesity","intensity"],["inteval","interval"],["intevals","intervals"],["intevene","intervene"],["intger","integer"],["intgers","integers"],["intgral","integral"],["inthe","in the"],["intiailise","initialise"],["intiailised","initialised"],["intiailiseing","initialising"],["intiailiser","initialiser"],["intiailises","initialises"],["intiailising","initialising"],["intiailize","initialize"],["intiailized","initialized"],["intiailizeing","initializing"],["intiailizer","initializer"],["intiailizes","initializes"],["intiailizing","initializing"],["intial","initial"],["intiale","initial"],["intialisation","initialisation"],["intialise","initialise"],["intialised","initialised"],["intialiser","initialiser"],["intialisers","initialisers"],["intialises","initialises"],["intialising","initialising"],["intialistion","initialisation"],["intializating","initializing"],["intialization","initialization"],["intializaze","initialize"],["intialize","initialize"],["intialized","initialized"],["intializer","initializer"],["intializers","initializers"],["intializes","initializes"],["intializing","initializing"],["intializtion","initialization"],["intialled","initialled"],["intiallisation","initialisation"],["intiallisations","initialisations"],["intiallised","initialised"],["intiallization","initialization"],["intiallizations","initializations"],["intiallized","initialized"],["intiallly","initially"],["intially","initially"],["intials","initials"],["intialse","initialise"],["intialsed","initialised"],["intialsing","initialising"],["intialte","initialise"],["intialy","initially"],["intialze","initialize"],["intialzed","initialized"],["intialzing","initializing"],["inticement","enticement"],["intiger","integer"],["intiial","initial"],["intiialise","initialise"],["intiialize","initialize"],["intilising","initialising"],["intilizing","initializing"],["intimite","intimate"],["intinite","infinite"],["intitial","initial"],["intitialization","initialization"],["intitialize","initialize"],["intitialized","initialized"],["intitials","initials"],["intity","entity"],["intot","into"],["intoto","into"],["intpreter","interpreter"],["intput","input"],["intputs","inputs"],["intraversion","introversion"],["intravert","introvert"],["intraverts","introverts"],["intrduced","introduced"],["intreeg","intrigue"],["intreeged","intrigued"],["intreeging","intriguing"],["intreegued","intrigued"],["intreeguing","intriguing"],["intreface","interface"],["intregral","integral"],["intrerrupt","interrupt"],["intresst","interest"],["intressted","interested"],["intressting","interesting"],["intrested","interested"],["intresting","interesting"],["intriduce","introduce"],["intriduced","introduced"],["intriduction","introduction"],["intrisinc","intrinsic"],["intrisincs","intrinsics"],["introducted","introduced"],["introductionary","introductory"],["introdued","introduced"],["introduse","introduce"],["introdused","introduced"],["introduses","introduces"],["introdusing","introducing"],["introsepectable","introspectable"],["introsepection","introspection"],["intrrupt","interrupt"],["intrrupted","interrupted"],["intrrupting","interrupting"],["intrrupts","interrupts"],["intruction","instruction"],["intructional","instructional"],["intructions","instructions"],["intruduced","introduced"],["intruducing","introducing"],["intrument","instrument"],["intrumental","instrumental"],["intrumented","instrumented"],["intrumenting","instrumenting"],["intruments","instruments"],["intrusted","entrusted"],["intstead","instead"],["intstructed","instructed"],["intstructer","instructor"],["intstructing","instructing"],["intstruction","instruction"],["intstructional","instructional"],["intstructions","instructions"],["intstructor","instructor"],["intstructs","instructs"],["intterrupt","interrupt"],["intterupt","interrupt"],["intterupted","interrupted"],["intterupting","interrupting"],["intterupts","interrupts"],["intuative","intuitive"],["inturpratasion","interpretation"],["inturpratation","interpretation"],["inturprett","interpret"],["intutive","intuitive"],["intutively","intuitively"],["inudstry","industry"],["inut","input"],["invaid","invalid"],["invaild","invalid"],["invaildate","invalidate"],["invailid","invalid"],["invalaid","invalid"],["invald","invalid"],["invaldates","invalidates"],["invalde","invalid"],["invalidatiopn","invalidation"],["invalide","invalid"],["invalidiate","invalidate"],["invalidte","invalidate"],["invalidted","invalidated"],["invalidtes","invalidates"],["invalidting","invalidating"],["invalidtion","invalidation"],["invalied","invalid"],["invalud","invalid"],["invarient","invariant"],["invarients","invariants"],["invarinat","invariant"],["invarinats","invariants"],["inventer","inventor"],["inverded","inverted"],["inverion","inversion"],["inverions","inversions"],["invertedd","inverted"],["invertibrates","invertebrates"],["invertion","inversion"],["invertions","inversions"],["inverval","interval"],["inveryed","inverted"],["invesitgated","investigated"],["invesitgating","investigating"],["invesitgation","investigation"],["invesitgations","investigations"],["investingate","investigate"],["inveting","inverting"],["invetory","inventory"],["inviation","invitation"],["invididual","individual"],["invidivual","individual"],["invidual","individual"],["invidually","individually"],["invisble","invisible"],["invisblity","invisibility"],["invisiable","invisible"],["invisibile","invisible"],["invisivble","invisible"],["invlaid","invalid"],["invlid","invalid"],["invlisible","invisible"],["invlove","involve"],["invloved","involved"],["invloves","involves"],["invocaition","invocation"],["invokable","invocable"],["invokation","invocation"],["invokations","invocations"],["invokve","invoke"],["invokved","invoked"],["invokves","invokes"],["invokving","invoking"],["involvment","involvement"],["invovle","involve"],["invovled","involved"],["invovles","involves"],["invovling","involving"],["ioclt","ioctl"],["iomaped","iomapped"],["ionde","inode"],["iplementation","implementation"],["ipmrovement","improvement"],["ipmrovements","improvements"],["iput","input"],["ireelevant","irrelevant"],["irelevent","irrelevant"],["iresistable","irresistible"],["iresistably","irresistibly"],["iresistible","irresistible"],["iresistibly","irresistibly"],["iritable","irritable"],["iritate","irritate"],["iritated","irritated"],["iritating","irritating"],["ironicly","ironically"],["irradate","irradiate"],["irradated","irradiated"],["irradates","irradiates"],["irradating","irradiating"],["irradation","irradiation"],["irraditate","irradiate"],["irraditated","irradiated"],["irraditates","irradiates"],["irraditating","irradiating"],["irregularties","irregularities"],["irregulier","irregular"],["irregulierties","irregularities"],["irrelavent","irrelevant"],["irrelevent","irrelevant"],["irrelvant","irrelevant"],["irreplacable","irreplaceable"],["irreplacalbe","irreplaceable"],["irreproducable","irreproducible"],["irresepective","irrespective"],["irresistable","irresistible"],["irresistably","irresistibly"],["irreversable","irreversible"],["is'nt","isn't"],["isalha","isalpha"],["isconnection","isconnected"],["iscrated","iscreated"],["iself","itself"],["iselfe","itself"],["iserting","inserting"],["isimilar","similar"],["isloation","isolation"],["ismas","isthmus"],["isn;t","isn't"],["isnpiron","inspiron"],["isnt'","isn't"],["isnt","isn't"],["isnt;","isn't"],["isntalation","installation"],["isntalations","installations"],["isntallation","installation"],["isntallations","installations"],["isntance","instance"],["isntances","instances"],["isotrophically","isotropically"],["ispatches","dispatches"],["isplay","display"],["Israelies","Israelis"],["isse","issue"],["isses","issues"],["isssue","issue"],["isssued","issued"],["isssues","issues"],["issueing","issuing"],["istalling","installing"],["istance","instance"],["istead","instead"],["istened","listened"],["istener","listener"],["isteners","listeners"],["istening","listening"],["isue","issue"],["iteartor","iterator"],["iteator","iterator"],["iteger","integer"],["itegral","integral"],["itegrals","integrals"],["iten","item"],["itens","items"],["itention","intention"],["itentional","intentional"],["itentionally","intentionally"],["itentionaly","intentionally"],["iteraion","iteration"],["iteraions","iterations"],["iteratable","iterable"],["iterater","iterator"],["iteraterate","iterate"],["iteratered","iterated"],["iteratior","iterator"],["iteratiors","iterators"],["iteratons","iterations"],["itereating","iterating"],["iterface","interface"],["iterfaces","interfaces"],["iternations","iterations"],["iterpreter","interpreter"],["iterration","iteration"],["iterrations","iterations"],["iterrupt","interrupt"],["iterstion","iteration"],["iterstions","iterations"],["itertation","iteration"],["iteself","itself"],["itesm","items"],["itheir","their"],["itheirs","theirs"],["itialise","initialise"],["itialised","initialised"],["itialises","initialises"],["itialising","initialising"],["itialize","initialize"],["itialized","initialized"],["itializes","initializes"],["itializing","initializing"],["itnerest","interest"],["itnerface","interface"],["itnerfaces","interfaces"],["itnernal","internal"],["itnerprelation","interpretation"],["itnerpret","interpret"],["itnerpretation","interpretation"],["itnerpretaton","interpretation"],["itnerpreted","interpreted"],["itnerpreter","interpreter"],["itnerpreting","interpreting"],["itnerprets","interprets"],["itnervals","intervals"],["itnroduced","introduced"],["itsef","itself"],["itsel","itself"],["itselfs","itself"],["itselt","itself"],["itselv","itself"],["itsems","items"],["itslef","itself"],["itslev","itself"],["itsself","itself"],["itterate","iterate"],["itterated","iterated"],["itterates","iterates"],["itterating","iterating"],["itteration","iteration"],["itterations","iterations"],["itterative","iterative"],["itterator","iterator"],["itterators","iterators"],["iunior","junior"],["ivalid","invalid"],["ivocation","invocation"],["ivoked","invoked"],["iwithout","without"],["iwll","will"],["iwth","with"],["jagid","jagged"],["jagwar","jaguar"],["januar","January"],["janurary","January"],["Januray","January"],["japanease","japanese"],["japaneese","Japanese"],["Japanes","Japanese"],["japanses","Japanese"],["jaques","jacques"],["javacript","javascript"],["javascipt","javascript"],["javasciript","javascript"],["javascritp","javascript"],["javascropt","javascript"],["javasript","javascript"],["javasrript","javascript"],["javescript","javascript"],["javsscript","javascript"],["jeapardy","jeopardy"],["jeffies","jiffies"],["jekins","Jenkins"],["jelous","jealous"],["jelousy","jealousy"],["jelusey","jealousy"],["jenkin","Jenkins"],["jenkkins","Jenkins"],["jenkns","Jenkins"],["jepordize","jeopardize"],["jewllery","jewellery"],["jhondoe","johndoe"],["jist","gist"],["jitterr","jitter"],["jitterring","jittering"],["jodpers","jodhpurs"],["Johanine","Johannine"],["joineable","joinable"],["joinning","joining"],["jont","joint"],["jonts","joints"],["jornal","journal"],["jorunal","journal"],["Jospeh","Joseph"],["jossle","jostle"],["jouney","journey"],["journied","journeyed"],["journies","journeys"],["joystik","joystick"],["jscipt","jscript"],["jstu","just"],["jsut","just"],["juadaism","Judaism"],["juadism","Judaism"],["judical","judicial"],["judisuary","judiciary"],["juducial","judicial"],["juge","judge"],["juipter","Jupiter"],["jumo","jump"],["jumoed","jumped"],["jumpimng","jumping"],["jupyther","Jupyter"],["juristiction","jurisdiction"],["juristictions","jurisdictions"],["jus","just"],["justfied","justified"],["justication","justification"],["justifed","justified"],["justs","just"],["juxt","just"],["juxtification","justification"],["juxtifications","justifications"],["juxtified","justified"],["juxtifies","justifies"],["juxtifying","justifying"],["kakfa","Kafka"],["kazakstan","Kazakhstan"],["keep-alives","keep-alive"],["keept","kept"],["kenerl","kernel"],["kenerls","kernels"],["kenrel","kernel"],["kenrels","kernels"],["kepping","keeping"],["kepps","keeps"],["kerenl","kernel"],["kerenls","kernels"],["kernal","kernel"],["kernals","kernels"],["kernerl","kernel"],["kernerls","kernels"],["keword","keyword"],["kewords","keywords"],["kewword","keyword"],["kewwords","keywords"],["keybaord","keyboard"],["keybaords","keyboards"],["keyboaard","keyboard"],["keyboaards","keyboards"],["keyboad","keyboard"],["keyboads","keyboards"],["keybooard","keyboard"],["keybooards","keyboards"],["keyborad","keyboard"],["keyborads","keyboards"],["keybord","keyboard"],["keybords","keyboards"],["keybroad","keyboard"],["keybroads","keyboards"],["keyevente","keyevent"],["keyords","keywords"],["keyoutch","keytouch"],["keyowrd","keyword"],["keypair","key pair"],["keypairs","key pairs"],["keyservers","key servers"],["keystokes","keystrokes"],["keyward","keyword"],["keywoards","keywords"],["keywork","keyword"],["keyworkd","keyword"],["keyworkds","keywords"],["keywors","keywords"],["keywprd","keyword"],["kindergarden","kindergarten"],["kindgergarden","kindergarten"],["kindgergarten","kindergarten"],["kinf","kind"],["kinfs","kinds"],["kinnect","Kinect"],["klenex","kleenex"],["klick","click"],["klicked","clicked"],["klicks","clicks"],["klunky","clunky"],["knive","knife"],["kno","know"],["knowladge","knowledge"],["knowlage","knowledge"],["knowlageable","knowledgeable"],["knowlegde","knowledge"],["knowlege","knowledge"],["knowlegeabel","knowledgeable"],["knowlegeable","knowledgeable"],["knwo","know"],["knwoing","knowing"],["knwoingly","knowingly"],["knwon","known"],["knwos","knows"],["kocalized","localized"],["konstant","constant"],["konstants","constants"],["konw","know"],["konwn","known"],["konws","knows"],["koordinate","coordinate"],["koordinates","coordinates"],["kown","known"],["kubenates","Kubernetes"],["kubenernetes","Kubernetes"],["kubenertes","Kubernetes"],["kubenetes","Kubernetes"],["kubenretes","Kubernetes"],["kuberenetes","Kubernetes"],["kuberentes","Kubernetes"],["kuberetes","Kubernetes"],["kubermetes","Kubernetes"],["kubernates","Kubernetes"],["kubernests","Kubernetes"],["kubernete","Kubernetes"],["kuberntes","Kubernetes"],["kwno","know"],["kwoledgebase","knowledge base"],["kyrillic","cyrillic"],["labbel","label"],["labbeled","labeled"],["labbels","labels"],["labed","labeled"],["labeld","labelled"],["labirinth","labyrinth"],["lable","label"],["lablel","label"],["lablels","labels"],["lables","labels"],["labouriously","laboriously"],["labratory","laboratory"],["lagacies","legacies"],["lagacy","legacy"],["laguage","language"],["laguages","languages"],["laguague","language"],["laguagues","languages"],["laiter","later"],["lamda","lambda"],["lamdas","lambdas"],["lanaguage","language"],["lanaguge","language"],["lanaguges","languages"],["lanagugs","languages"],["lanauge","language"],["langage","language"],["langauage","language"],["langauge","language"],["langauges","languages"],["langeuage","language"],["langeuagesection","languagesection"],["langht","length"],["langhts","lengths"],["langth","length"],["langths","lengths"],["languace","language"],["languaces","languages"],["languae","language"],["languaes","languages"],["language-spacific","language-specific"],["languahe","language"],["languahes","languages"],["languaje","language"],["languajes","languages"],["langual","lingual"],["languale","language"],["languales","languages"],["langualge","language"],["langualges","languages"],["languange","language"],["languanges","languages"],["languaqe","language"],["languaqes","languages"],["languate","language"],["languates","languages"],["languauge","language"],["languauges","languages"],["languege","language"],["langueges","languages"],["langugae","language"],["langugaes","languages"],["langugage","language"],["langugages","languages"],["languge","language"],["languges","languages"],["langugue","language"],["langugues","languages"],["lanich","launch"],["lanuage","language"],["lanuch","launch"],["lanuched","launched"],["lanuches","launches"],["lanuching","launching"],["lanugage","language"],["lanugages","languages"],["laod","load"],["laoded","loaded"],["laoding","loading"],["laods","loads"],["laout","layout"],["larg","large"],["largst","largest"],["larrry","larry"],["lastes","latest"],["lastr","last"],["latets","latest"],["lating","latin"],["latitide","latitude"],["latitue","latitude"],["latitute","latitude"],["latops","laptops"],["latset","latest"],["lattitude","latitude"],["lauch","launch"],["lauched","launched"],["laucher","launcher"],["lauches","launches"],["lauching","launching"],["lauguage","language"],["launck","launch"],["launhed","launched"],["lavae","larvae"],["layed","laid"],["layou","layout"],["lazer","laser"],["laziliy","lazily"],["lazyness","laziness"],["lcoally","locally"],["lcoation","location"],["lcuase","clause"],["leaast","least"],["leace","leave"],["leack","leak"],["leagacy","legacy"],["leagal","legal"],["leagalise","legalise"],["leagality","legality"],["leagalize","legalize"],["leagcy","legacy"],["leage","league"],["leagel","legal"],["leagelise","legalise"],["leagelity","legality"],["leagelize","legalize"],["leageue","league"],["leagl","legal"],["leaglise","legalise"],["leaglity","legality"],["leaglize","legalize"],["leapyear","leap year"],["leapyears","leap years"],["leary","leery"],["leaset","least"],["leasy","least"],["leathal","lethal"],["leats","least"],["leaveing","leaving"],["leavong","leaving"],["lefted","left"],["legac","legacy"],["legact","legacy"],["legalimate","legitimate"],["legasy","legacy"],["legel","legal"],["leggacies","legacies"],["leggacy","legacy"],["leght","length"],["leghts","lengths"],["legitamate","legitimate"],["legitimiately","legitimately"],["legitmate","legitimate"],["legnth","length"],["legth","length"],["legths","lengths"],["leibnitz","leibniz"],["leightweight","lightweight"],["lene","lens"],["lenggth","length"],["lengh","length"],["lenghs","lengths"],["lenght","length"],["lenghten","lengthen"],["lenghtend","lengthened"],["lenghtened","lengthened"],["lenghtening","lengthening"],["lenghth","length"],["lenghthen","lengthen"],["lenghths","lengths"],["lenghthy","lengthy"],["lenghtly","lengthy"],["lenghts","lengths"],["lenghty","lengthy"],["lengt","length"],["lengten","lengthen"],["lengtext","longtext"],["lengthes","lengths"],["lengthh","length"],["lengts","lengths"],["leniant","lenient"],["leninent","lenient"],["lentgh","length"],["lentghs","lengths"],["lenth","length"],["lenths","lengths"],["leran","learn"],["leraned","learned"],["lerans","learns"],["lessson","lesson"],["lesssons","lessons"],["lesstiff","LessTif"],["letgitimate","legitimate"],["letmost","leftmost"],["leutenant","lieutenant"],["levaridge","leverage"],["levetate","levitate"],["levetated","levitated"],["levetates","levitates"],["levetating","levitating"],["levl","level"],["levle","level"],["lexial","lexical"],["lexigraphic","lexicographic"],["lexigraphical","lexicographical"],["lexigraphically","lexicographically"],["leyer","layer"],["leyered","layered"],["leyering","layering"],["leyers","layers"],["liares","liars"],["liasion","liaison"],["liason","liaison"],["liasons","liaisons"],["libarary","library"],["libaries","libraries"],["libary","library"],["libell","libel"],["liberaries","libraries"],["liberary","library"],["liberoffice","libreoffice"],["liberry","library"],["libgng","libpng"],["libguistic","linguistic"],["libguistics","linguistics"],["libitarianisn","libertarianism"],["libraarie","library"],["libraaries","libraries"],["libraary","library"],["librabarie","library"],["librabaries","libraries"],["librabary","library"],["librabie","library"],["librabies","libraries"],["librabrie","library"],["librabries","libraries"],["librabry","library"],["libraby","library"],["libraie","library"],["libraier","library"],["libraies","libraries"],["libraiesr","libraries"],["libraire","library"],["libraires","libraries"],["librairies","libraries"],["librairy","library"],["libralie","library"],["libralies","libraries"],["libraly","library"],["libraray","library"],["libraris","libraries"],["librarries","libraries"],["librarry","library"],["libraryes","libraries"],["libratie","library"],["libraties","libraries"],["libraty","library"],["libray","library"],["librayr","library"],["libreoffie","libreoffice"],["libreoficekit","libreofficekit"],["libreries","libraries"],["librery","library"],["libries","libraries"],["librraies","libraries"],["librraries","libraries"],["librrary","library"],["librray","library"],["libstc++","libstdc++"],["licate","locate"],["licated","located"],["lication","location"],["lications","locations"],["licenceing","licencing"],["licese","license"],["licesne","license"],["licesnes","licenses"],["licesning","licensing"],["licesnse","license"],["licesnses","licenses"],["licesnsing","licensing"],["licsense","license"],["licsenses","licenses"],["licsensing","licensing"],["lieing","lying"],["liek","like"],["liekd","liked"],["lient","client"],["lients","clients"],["liesure","leisure"],["lieuenant","lieutenant"],["liev","live"],["lieved","lived"],["lifceycle","lifecycle"],["lifecyle","lifecycle"],["lifes","lives"],["lifeycle","lifecycle"],["liftime","lifetime"],["lighing","lighting"],["lightbulp","lightbulb"],["lightweigh","lightweight"],["lightwieght","lightweight"],["lightwight","lightweight"],["lightyear","light year"],["lightyears","light years"],["ligth","light"],["ligthing","lighting"],["ligths","lights"],["ligthweight","lightweight"],["ligthweights","lightweights"],["liitle","little"],["likeley","likely"],["likelly","likely"],["likelyhood","likelihood"],["likewis","likewise"],["likey","likely"],["liklelihood","likelihood"],["likley","likely"],["likly","likely"],["lileral","literal"],["limiation","limitation"],["limiations","limitations"],["liminted","limited"],["limitaion","limitation"],["limite","limit"],["limitiaion","limitation"],["limitiaions","limitations"],["limitiation","limitation"],["limitiations","limitations"],["limitied","limited"],["limitier","limiter"],["limitiers","limiters"],["limitiing","limiting"],["limitimg","limiting"],["limition","limitation"],["limitions","limitations"],["limitis","limits"],["limititation","limitation"],["limititations","limitations"],["limitited","limited"],["limititer","limiter"],["limititers","limiters"],["limititing","limiting"],["limitted","limited"],["limitter","limiter"],["limitting","limiting"],["limitts","limits"],["limk","link"],["limted","limited"],["limti","limit"],["limts","limits"],["linaer","linear"],["linar","linear"],["linarly","linearly"],["lincese","license"],["lincesed","licensed"],["linceses","licenses"],["lineary","linearly"],["linerisation","linearisation"],["linerisations","linearisations"],["lineseach","linesearch"],["lineseaches","linesearches"],["liness","lines"],["linewdith","linewidth"],["linez","lines"],["lingth","length"],["linheight","lineheight"],["linkfy","linkify"],["linnaena","linnaean"],["lintain","lintian"],["linz","lines"],["lippizaner","lipizzaner"],["liquify","liquefy"],["lisetning","listening"],["lising","listing"],["listapck","listpack"],["listbbox","listbox"],["listeing","listening"],["listeneing","listening"],["listeneres","listeners"],["listenes","listens"],["listensers","listeners"],["listenter","listener"],["listenters","listeners"],["listernes","listeners"],["listner","listener"],["listners","listeners"],["litaral","literal"],["litarally","literally"],["litarals","literals"],["litature","literature"],["liteautrue","literature"],["literaly","literally"],["literture","literature"],["litle","little"],["litquid","liquid"],["litquids","liquids"],["lits","list"],["litte","little"],["littel","little"],["littel-endian","little-endian"],["littele","little"],["littelry","literally"],["litteral","literal"],["litterally","literally"],["litterals","literals"],["litterate","literate"],["litterature","literature"],["liuke","like"],["liveing","living"],["livel","level"],["livetime","lifetime"],["livley","lively"],["lizens","license"],["lizense","license"],["lizensing","licensing"],["lke","like"],["llinear","linear"],["lmits","limits"],["loaader","loader"],["loacal","local"],["loacality","locality"],["loacally","locally"],["loacation","location"],["loaction","location"],["loactions","locations"],["loadig","loading"],["loadin","loading"],["loadning","loading"],["locae","locate"],["locaes","locates"],["locahost","localhost"],["locaiing","locating"],["locailty","locality"],["locaing","locating"],["locaion","location"],["locaions","locations"],["locaise","localise"],["locaised","localised"],["locaiser","localiser"],["locaises","localises"],["locaite","locate"],["locaites","locates"],["locaiting","locating"],["locaition","location"],["locaitions","locations"],["locaiton","location"],["locaitons","locations"],["locaize","localize"],["locaized","localized"],["locaizer","localizer"],["locaizes","localizes"],["localation","location"],["localed","located"],["localtion","location"],["localtions","locations"],["localy","locally"],["localzation","localization"],["locatins","locations"],["loccked","locked"],["locgical","logical"],["lockingf","locking"],["lodable","loadable"],["loded","loaded"],["loder","loader"],["loders","loaders"],["loding","loading"],["loev","love"],["logarithimic","logarithmic"],["logarithmical","logarithmically"],["logaritmic","logarithmic"],["logcal","logical"],["loggging","logging"],["logial","logical"],["logially","logically"],["logicaly","logically"],["logictech","logitech"],["logile","logfile"],["logitude","longitude"],["logitudes","longitudes"],["logoic","logic"],["logorithm","logarithm"],["logorithmic","logarithmic"],["logorithms","logarithms"],["logrithm","logarithm"],["logrithms","logarithms"],["logwritter","logwriter"],["loign","login"],["loigns","logins"],["lokal","local"],["lokale","locale"],["lokales","locales"],["lokaly","locally"],["lolal","total"],["lolerant","tolerant"],["lond","long"],["lonelyness","loneliness"],["long-runnign","long-running"],["longers","longer"],["longitudonal","longitudinal"],["longitue","longitude"],["longitutde","longitude"],["longitute","longitude"],["longst","longest"],["longuer","longer"],["longuest","longest"],["lonley","lonely"],["looback","loopback"],["loobacks","loopbacks"],["loobpack","loopback"],["loockdown","lockdown"],["lookes","looks"],["looknig","looking"],["looop","loop"],["loopup","lookup"],["loosley","loosely"],["loosly","loosely"],["losely","loosely"],["losen","loosen"],["losened","loosened"],["lotharingen","Lothringen"],["lpatform","platform"],["luckly","luckily"],["luminose","luminous"],["luminousity","luminosity"],["lveo","love"],["lvoe","love"],["Lybia","Libya"],["maake","make"],["mabe","maybe"],["mabye","maybe"],["macack","macaque"],["macason","moccasin"],["macasons","moccasins"],["maccro","macro"],["maccros","macros"],["machanism","mechanism"],["machanisms","mechanisms"],["mached","matched"],["maches","matches"],["machettie","machete"],["machinary","machinery"],["machine-dependend","machine-dependent"],["machiness","machines"],["mackeral","mackerel"],["maco","macro"],["macor","macro"],["macors","macros"],["macpakge","package"],["macroses","macros"],["macrow","macro"],["macthing","matching"],["madantory","mandatory"],["madatory","mandatory"],["maddness","madness"],["maesure","measure"],["maesured","measured"],["maesurement","measurement"],["maesurements","measurements"],["maesures","measures"],["maesuring","measuring"],["magasine","magazine"],["magincian","magician"],["magisine","magazine"],["magizine","magazine"],["magnatiude","magnitude"],["magnatude","magnitude"],["magnificient","magnificent"],["magolia","magnolia"],["mahcine","machine"],["maibe","maybe"],["maibox","mailbox"],["mailformed","malformed"],["mailling","mailing"],["maillinglist","mailing list"],["maillinglists","mailing lists"],["mailny","mainly"],["mailstrum","maelstrom"],["mainenance","maintenance"],["maininly","mainly"],["mainling","mailing"],["maintainance","maintenance"],["maintaince","maintenance"],["maintainces","maintenances"],["maintainence","maintenance"],["maintaing","maintaining"],["maintan","maintain"],["maintanance","maintenance"],["maintance","maintenance"],["maintane","maintain"],["maintanence","maintenance"],["maintaner","maintainer"],["maintaners","maintainers"],["maintans","maintains"],["maintenace","maintenance"],["maintenence","maintenance"],["maintiain","maintain"],["maintians","maintains"],["maintinaing","maintaining"],["maintioned","mentioned"],["mairabd","MariaDB"],["mairadb","MariaDB"],["maitain","maintain"],["maitainance","maintenance"],["maitained","maintained"],["maitainers","maintainers"],["majoroty","majority"],["maka","make"],["makefle","makefile"],["makeing","making"],["makign","making"],["makretplace","marketplace"],["makro","macro"],["makros","macros"],["Malcom","Malcolm"],["maliciousally","maliciously"],["malicius","malicious"],["maliciusally","maliciously"],["maliciusly","maliciously"],["malicous","malicious"],["malicousally","maliciously"],["malicously","maliciously"],["maline","malign"],["malined","maligned"],["malining","maligning"],["malins","maligns"],["malless","malice"],["malplace","misplace"],["malplaced","misplaced"],["maltesian","Maltese"],["mamagement","management"],["mamal","mammal"],["mamalian","mammalian"],["mamento","memento"],["mamentos","mementos"],["mamory","memory"],["mamuth","mammoth"],["manafacturer","manufacturer"],["manafacturers","manufacturers"],["managament","management"],["manageed","managed"],["managemenet","management"],["managenment","management"],["managet","manager"],["managets","managers"],["managmenet","management"],["managment","management"],["manaise","mayonnaise"],["manal","manual"],["manange","manage"],["manangement","management"],["mananger","manager"],["manangers","managers"],["manaul","manual"],["manaully","manually"],["manauls","manuals"],["manaze","mayonnaise"],["mandatatory","mandatory"],["mandetory","mandatory"],["manement","management"],["maneouvre","manoeuvre"],["maneouvred","manoeuvred"],["maneouvres","manoeuvres"],["maneouvring","manoeuvring"],["manetain","maintain"],["manetained","maintained"],["manetainer","maintainer"],["manetainers","maintainers"],["manetaining","maintaining"],["manetains","maintains"],["mangaed","managed"],["mangaement","management"],["mangager","manager"],["mangagers","managers"],["mangement","management"],["mangementt","management"],["manifacture","manufacture"],["manifactured","manufactured"],["manifacturer","manufacturer"],["manifacturers","manufacturers"],["manifactures","manufactures"],["manifect","manifest"],["manipluate","manipulate"],["manipluated","manipulated"],["manipulatin","manipulating"],["manipulaton","manipulation"],["manipute","manipulate"],["maniputed","manipulated"],["maniputing","manipulating"],["manipution","manipulation"],["maniputions","manipulations"],["maniputor","manipulator"],["manisfestations","manifestations"],["maniuplate","manipulate"],["maniuplated","manipulated"],["maniuplates","manipulates"],["maniuplating","manipulating"],["maniuplation","manipulation"],["maniuplations","manipulations"],["maniuplator","manipulator"],["maniuplators","manipulators"],["mannor","manner"],["mannual","manual"],["mannually","manually"],["mannualy","manually"],["manoeuverability","maneuverability"],["manoeuvering","maneuvering"],["manouevring","manoeuvring"],["mantain","maintain"],["mantainable","maintainable"],["mantained","maintained"],["mantainer","maintainer"],["mantainers","maintainers"],["mantaining","maintaining"],["mantains","maintains"],["mantanine","maintain"],["mantanined","maintained"],["mantatory","mandatory"],["mantenance","maintenance"],["manualy","manually"],["manualyl","manually"],["manualyy","manually"],["manuell","manual"],["manuelly","manually"],["manufactuerd","manufactured"],["manufacturedd","manufactured"],["manufature","manufacture"],["manufatured","manufactured"],["manufaturing","manufacturing"],["manufaucturing","manufacturing"],["manulally","manually"],["manule","manual"],["manuley","manually"],["manully","manually"],["manuly","manually"],["manupilations","manipulations"],["manupulate","manipulate"],["manupulated","manipulated"],["manupulates","manipulates"],["manupulating","manipulating"],["manupulation","manipulation"],["manupulations","manipulations"],["manuver","maneuver"],["manyal","manual"],["manyally","manually"],["manyals","manuals"],["mapable","mappable"],["mape","map"],["maped","mapped"],["maping","mapping"],["mapings","mappings"],["mapp","map"],["mappeds","mapped"],["mappeed","mapped"],["mappping","mapping"],["mapppings","mappings"],["margings","margins"],["mariabd","MariaDB"],["mariage","marriage"],["marjority","majority"],["marketting","marketing"],["markey","marquee"],["markeys","marquees"],["marmelade","marmalade"],["marrage","marriage"],["marraige","marriage"],["marrtyred","martyred"],["marryied","married"],["marshmellow","marshmallow"],["marshmellows","marshmallows"],["marter","martyr"],["masakist","masochist"],["mashetty","machete"],["mashine","machine"],["mashined","machined"],["mashines","machines"],["masia","messiah"],["masicer","massacre"],["masiff","massif"],["maskerading","masquerading"],["maskeraid","masquerade"],["masos","macos"],["masquarade","masquerade"],["masqurade","masquerade"],["Massachusettes","Massachusetts"],["Massachussets","Massachusetts"],["Massachussetts","Massachusetts"],["massagebox","messagebox"],["massectomy","mastectomy"],["massewer","masseur"],["massmedia","mass media"],["massoose","masseuse"],["masster","master"],["masteer","master"],["masterbation","masturbation"],["mastquerade","masquerade"],["mata-data","meta-data"],["matadata","metadata"],["matainer","maintainer"],["matainers","maintainers"],["mataphysical","metaphysical"],["matatable","metatable"],["matc","match"],["matchies","matches"],["matchign","matching"],["matchin","matching"],["matchs","matches"],["matchter","matcher"],["matcing","matching"],["mateiral","material"],["mateirals","materials"],["matemathical","mathematical"],["materaial","material"],["materaials","materials"],["materail","material"],["materails","materials"],["materalists","materialist"],["materil","material"],["materilism","materialism"],["materilize","materialize"],["materils","materials"],["materla","material"],["materlas","materials"],["mathamatics","mathematics"],["mathces","matches"],["mathch","match"],["mathched","matched"],["mathches","matches"],["mathching","matching"],["mathcing","matching"],["mathed","matched"],["mathematicaly","mathematically"],["mathematican","mathematician"],["mathematicas","mathematics"],["mathes","matches"],["mathetician","mathematician"],["matheticians","mathematicians"],["mathimatic","mathematic"],["mathimatical","mathematical"],["mathimatically","mathematically"],["mathimatician","mathematician"],["mathimaticians","mathematicians"],["mathimatics","mathematics"],["mathing","matching"],["mathmatical","mathematical"],["mathmatically","mathematically"],["mathmatician","mathematician"],["mathmaticians","mathematicians"],["mathod","method"],["matinay","matinee"],["matix","matrix"],["matreial","material"],["matreials","materials"],["matresses","mattresses"],["matrial","material"],["matrials","materials"],["matser","master"],["matzch","match"],["mavrick","maverick"],["mawsoleum","mausoleum"],["maximice","maximize"],["maximim","maximum"],["maximimum","maximum"],["maximium","maximum"],["maximnum","maximum"],["maximnums","maximums"],["maximun","maximum"],["maxinum","maximum"],["maxium","maximum"],["maxiumum","maximum"],["maxmimum","maximum"],["maxmium","maximum"],["maxmiums","maximums"],["maxosx","macosx"],["maxumum","maximum"],["maybee","maybe"],["mayonase","mayonnaise"],["mayority","majority"],["mayu","may"],["mayybe","maybe"],["mazilla","Mozilla"],["mccarthyst","mccarthyist"],["mchanic","mechanic"],["mchanical","mechanical"],["mchanically","mechanically"],["mchanicals","mechanicals"],["mchanics","mechanics"],["mchanism","mechanism"],["mchanisms","mechanisms"],["mcroscope","microscope"],["mcroscopes","microscopes"],["mcroscopic","microscopic"],["mcroscopies","microscopies"],["mcroscopy","microscopy"],["mdification","modification"],["mdifications","modifications"],["mdified","modified"],["mdifier","modifier"],["mdifiers","modifiers"],["mdifies","modifies"],["mdify","modify"],["mdifying","modifying"],["mdoel","model"],["mdoeled","modeled"],["mdoeling","modeling"],["mdoelled","modelled"],["mdoelling","modelling"],["mdoels","models"],["meaasure","measure"],["meaasured","measured"],["meaasures","measures"],["meachanism","mechanism"],["meachanisms","mechanisms"],["meachinism","mechanism"],["meachinisms","mechanisms"],["meachnism","mechanism"],["meachnisms","mechanisms"],["meading","meaning"],["meaing","meaning"],["mealflur","millefleur"],["meanigfull","meaningful"],["meanign","meaning"],["meanin","meaning"],["meaninful","meaningful"],["meaningfull","meaningful"],["meanining","meaning"],["meaninless","meaningless"],["meaninng","meaning"],["meassurable","measurable"],["meassurably","measurably"],["meassure","measure"],["meassured","measured"],["meassurement","measurement"],["meassurements","measurements"],["meassures","measures"],["meassuring","measuring"],["measue","measure"],["measued","measured"],["measuement","measurement"],["measuements","measurements"],["measuer","measurer"],["measues","measures"],["measuing","measuring"],["measuremenet","measurement"],["measuremenets","measurements"],["measurmenet","measurement"],["measurmenets","measurements"],["measurment","measurement"],["measurments","measurements"],["meatadata","metadata"],["meatfile","metafile"],["meathod","method"],["meaure","measure"],["meaured","measured"],["meaurement","measurement"],["meaurements","measurements"],["meaurer","measurer"],["meaurers","measurers"],["meaures","measures"],["meauring","measuring"],["meausure","measure"],["meausures","measures"],["meber","member"],["mebmer","member"],["mebrain","membrane"],["mebrains","membranes"],["mebran","membrane"],["mebrans","membranes"],["mecahinsm","mechanism"],["mecahinsms","mechanisms"],["mecahnic","mechanic"],["mecahnics","mechanics"],["mecahnism","mechanism"],["mecanical","mechanical"],["mecanism","mechanism"],["mecanisms","mechanisms"],["meccob","macabre"],["mechamism","mechanism"],["mechamisms","mechanisms"],["mechananism","mechanism"],["mechancial","mechanical"],["mechandise","merchandise"],["mechanim","mechanism"],["mechanims","mechanisms"],["mechanis","mechanism"],["mechansim","mechanism"],["mechansims","mechanisms"],["mechine","machine"],["mechines","machines"],["mechinism","mechanism"],["mechnanism","mechanism"],["mechnism","mechanism"],["mechnisms","mechanisms"],["medacine","medicine"],["medai","media"],["meddo","meadow"],["meddos","meadows"],["medeival","medieval"],["medevial","medieval"],["medhod","method"],["medhods","methods"],["medievel","medieval"],["medifor","metaphor"],["medifors","metaphors"],["medioker","mediocre"],["mediphor","metaphor"],["mediphors","metaphors"],["medisinal","medicinal"],["mediterainnean","mediterranean"],["Mediteranean","Mediterranean"],["medow","meadow"],["medows","meadows"],["meeds","needs"],["meens","means"],["meerkrat","meerkat"],["meerly","merely"],["meetign","meeting"],["meganism","mechanism"],["mege","merge"],["mehcanic","mechanic"],["mehcanical","mechanical"],["mehcanically","mechanically"],["mehcanics","mechanics"],["mehod","method"],["mehodical","methodical"],["mehodically","methodically"],["mehods","methods"],["mehtod","method"],["mehtodical","methodical"],["mehtodically","methodically"],["mehtods","methods"],["meida","media"],["melancoly","melancholy"],["melieux","milieux"],["melineum","millennium"],["melineumms","millennia"],["melineums","millennia"],["melinneum","millennium"],["melinneums","millennia"],["mellineum","millennium"],["mellineums","millennia"],["mellinneum","millennium"],["mellinneums","millennia"],["membran","membrane"],["membranaphone","membranophone"],["membrans","membranes"],["memcahe","memcache"],["memcahed","memcached"],["memeasurement","measurement"],["memeber","member"],["memebered","remembered"],["memebers","members"],["memebership","membership"],["memeberships","memberships"],["memebr","member"],["memebrof","memberof"],["memebrs","members"],["mememory","memory"],["mememto","memento"],["memeory","memory"],["memer","member"],["memership","membership"],["memerships","memberships"],["memery","memory"],["memick","mimic"],["memicked","mimicked"],["memicking","mimicking"],["memics","mimics"],["memmber","member"],["memmick","mimic"],["memmicked","mimicked"],["memmicking","mimicking"],["memmics","mimics"],["memmory","memory"],["memoery","memory"],["memomry","memory"],["memor","memory"],["memoty","memory"],["memove","memmove"],["mempry","memory"],["memroy","memory"],["memwar","memoir"],["memwars","memoirs"],["memwoir","memoir"],["memwoirs","memoirs"],["menally","mentally"],["menas","means"],["menetion","mention"],["menetioned","mentioned"],["menetioning","mentioning"],["menetions","mentions"],["meni","menu"],["menioned","mentioned"],["mensioned","mentioned"],["mensioning","mentioning"],["ment","meant"],["menthods","methods"],["mentiond","mentioned"],["mentione","mentioned"],["mentionned","mentioned"],["mentionning","mentioning"],["mentionnned","mentioned"],["menual","manual"],["menue","menu"],["menues","menus"],["menutitems","menuitems"],["meraj","mirage"],["merajes","mirages"],["merang","meringue"],["mercahnt","merchant"],["mercentile","mercantile"],["merchantibility","merchantability"],["merecat","meerkat"],["merecats","meerkats"],["mergable","mergeable"],["merget","merge"],["mergge","merge"],["mergged","merged"],["mergging","merging"],["mermory","memory"],["merory","memory"],["merrors","mirrors"],["mesage","message"],["mesages","messages"],["mesaureed","measured"],["meskeeto","mosquito"],["meskeetos","mosquitoes"],["mesoneen","mezzanine"],["mesoneens","mezzanines"],["messaes","messages"],["messag","message"],["messagetqueue","messagequeue"],["messagin","messaging"],["messagoe","message"],["messags","messages"],["messagses","messages"],["messanger","messenger"],["messangers","messengers"],["messave","message"],["messeges","messages"],["messenging","messaging"],["messgae","message"],["messgaed","messaged"],["messgaes","messages"],["messge","message"],["messges","messages"],["messsage","message"],["messsages","messages"],["messure","measure"],["messured","measured"],["messurement","measurement"],["messures","measures"],["messuring","measuring"],["messurment","measurement"],["mesure","measure"],["mesured","measured"],["mesurement","measurement"],["mesurements","measurements"],["mesures","measures"],["mesuring","measuring"],["mesurment","measurement"],["meta-attrubute","meta-attribute"],["meta-attrubutes","meta-attributes"],["meta-progamming","meta-programming"],["metacharater","metacharacter"],["metacharaters","metacharacters"],["metalic","metallic"],["metalurgic","metallurgic"],["metalurgical","metallurgical"],["metalurgy","metallurgy"],["metamorphysis","metamorphosis"],["metapackge","metapackage"],["metapackges","metapackages"],["metaphore","metaphor"],["metaphoricial","metaphorical"],["metaprogamming","metaprogramming"],["metatdata","metadata"],["metdata","metadata"],["meterial","material"],["meterials","materials"],["meterologist","meteorologist"],["meterology","meteorology"],["methaphor","metaphor"],["methaphors","metaphors"],["methd","method"],["methdos","methods"],["methds","methods"],["methid","method"],["methids","methods"],["methjod","method"],["methodd","method"],["methode","method"],["methoden","methods"],["methodss","methods"],["methon","method"],["methons","methods"],["methot","method"],["methots","methods"],["metifor","metaphor"],["metifors","metaphors"],["metion","mention"],["metioned","mentioned"],["metiphor","metaphor"],["metiphors","metaphors"],["metod","method"],["metodologies","methodologies"],["metodology","methodology"],["metods","methods"],["metrig","metric"],["metrigal","metrical"],["metrigs","metrics"],["mey","may"],["meybe","maybe"],["mezmorise","mesmerise"],["mezmorised","mesmerised"],["mezmoriser","mesmeriser"],["mezmorises","mesmerises"],["mezmorising","mesmerising"],["mezmorize","mesmerize"],["mezmorized","mesmerized"],["mezmorizer","mesmerizer"],["mezmorizes","mesmerizes"],["mezmorizing","mesmerizing"],["miagic","magic"],["miagical","magical"],["mial","mail"],["mices","mice"],["Michagan","Michigan"],["micorcode","microcode"],["micorcodes","microcodes"],["Micorsoft","Microsoft"],["micoscope","microscope"],["micoscopes","microscopes"],["micoscopic","microscopic"],["micoscopies","microscopies"],["micoscopy","microscopy"],["Micosoft","Microsoft"],["micrcontroller","microcontroller"],["micrcontrollers","microcontrollers"],["microcontroler","microcontroller"],["microcontrolers","microcontrollers"],["Microfost","Microsoft"],["microntroller","microcontroller"],["microntrollers","microcontrollers"],["microoseconds","microseconds"],["micropone","microphone"],["micropones","microphones"],["microprocesspr","microprocessor"],["microprocessprs","microprocessors"],["microseond","microsecond"],["microseonds","microseconds"],["Microsft","Microsoft"],["microship","microchip"],["microships","microchips"],["Microsof","Microsoft"],["Microsofot","Microsoft"],["Micrsft","Microsoft"],["Micrsoft","Microsoft"],["middlware","middleware"],["midevil","medieval"],["midified","modified"],["midpints","midpoints"],["midpiont","midpoint"],["midpionts","midpoints"],["midpont","midpoint"],["midponts","midpoints"],["mige","midge"],["miges","midges"],["migh","might"],["migrateable","migratable"],["migth","might"],["miht","might"],["miinimisation","minimisation"],["miinimise","minimise"],["miinimised","minimised"],["miinimises","minimises"],["miinimising","minimising"],["miinimization","minimization"],["miinimize","minimize"],["miinimized","minimized"],["miinimizes","minimizes"],["miinimizing","minimizing"],["miinimum","minimum"],["mikrosecond","microsecond"],["mikroseconds","microseconds"],["milage","mileage"],["milages","mileages"],["mileau","milieu"],["milennia","millennia"],["milennium","millennium"],["mileu","milieu"],["miliary","military"],["milicious","malicious"],["miliciousally","maliciously"],["miliciously","maliciously"],["milicous","malicious"],["milicousally","maliciously"],["milicously","maliciously"],["miligram","milligram"],["milimeter","millimeter"],["milimeters","millimeters"],["milimetre","millimetre"],["milimetres","millimetres"],["milimiters","millimeters"],["milion","million"],["miliraty","military"],["milisecond","millisecond"],["miliseconds","milliseconds"],["milisecons","milliseconds"],["milivolts","millivolts"],["milktoast","milquetoast"],["milktoasts","milquetoasts"],["milleneum","millennium"],["millenia","millennia"],["millenial","millennial"],["millenialism","millennialism"],["millenials","millennials"],["millenium","millennium"],["millepede","millipede"],["milliescond","millisecond"],["milliesconds","milliseconds"],["millimiter","millimeter"],["millimiters","millimeters"],["millimitre","millimetre"],["millimitres","millimetres"],["millioniare","millionaire"],["millioniares","millionaires"],["millisencond","millisecond"],["millisenconds","milliseconds"],["milliseond","millisecond"],["milliseonds","milliseconds"],["millitant","militant"],["millitary","military"],["millon","million"],["millsecond","millisecond"],["millseconds","milliseconds"],["millsencond","millisecond"],["millsenconds","milliseconds"],["miltary","military"],["miltisite","multisite"],["milyew","milieu"],["mimach","mismatch"],["mimachd","mismatched"],["mimached","mismatched"],["mimaches","mismatches"],["mimaching","mismatching"],["mimatch","mismatch"],["mimatchd","mismatched"],["mimatched","mismatched"],["mimatches","mismatches"],["mimatching","mismatching"],["mimicing","mimicking"],["mimick","mimic"],["mimicks","mimics"],["mimimal","minimal"],["mimimum","minimum"],["mimimun","minimum"],["miminal","minimal"],["miminally","minimally"],["miminaly","minimally"],["miminise","minimise"],["miminised","minimised"],["miminises","minimises"],["miminising","minimising"],["miminize","minimize"],["miminized","minimized"],["miminizes","minimizes"],["miminizing","minimizing"],["mimmick","mimic"],["mimmicked","mimicked"],["mimmicking","mimicking"],["mimmics","mimics"],["minature","miniature"],["minerial","mineral"],["MingGW","MinGW"],["minimam","minimum"],["minimial","minimal"],["minimium","minimum"],["minimsation","minimisation"],["minimse","minimise"],["minimsed","minimised"],["minimses","minimises"],["minimsing","minimising"],["minimumm","minimum"],["minimumn","minimum"],["minimun","minimum"],["minimzation","minimization"],["minimze","minimize"],["minimzed","minimized"],["minimzes","minimizes"],["minimzing","minimizing"],["mininal","minimal"],["mininise","minimise"],["mininised","minimised"],["mininises","minimises"],["mininising","minimising"],["mininize","minimize"],["mininized","minimized"],["mininizes","minimizes"],["mininizing","minimizing"],["mininum","minimum"],["miniscule","minuscule"],["miniscully","minusculely"],["miniture","miniature"],["minium","minimum"],["miniums","minimums"],["miniumum","minimum"],["minmal","minimal"],["minmum","minimum"],["minnimum","minimum"],["minnimums","minimums"],["minsitry","ministry"],["minstries","ministries"],["minstry","ministry"],["minum","minimum"],["minumum","minimum"],["minuscle","minuscule"],["minuts","minutes"],["miplementation","implementation"],["mirconesia","micronesia"],["mircophone","microphone"],["mircophones","microphones"],["mircoscope","microscope"],["mircoscopes","microscopes"],["mircoservice","microservice"],["mircoservices","microservices"],["mircosoft","Microsoft"],["mirgate","migrate"],["mirgated","migrated"],["mirgates","migrates"],["mirometer","micrometer"],["mirometers","micrometers"],["mirored","mirrored"],["miroring","mirroring"],["mirorr","mirror"],["mirorred","mirrored"],["mirorring","mirroring"],["mirorrs","mirrors"],["mirro","mirror"],["mirroed","mirrored"],["mirrorn","mirror"],["mirrorred","mirrored"],["mis-alignement","misalignment"],["mis-alignment","misalignment"],["mis-intepret","mis-interpret"],["mis-intepreted","mis-interpreted"],["mis-match","mismatch"],["misalignement","misalignment"],["misalinged","misaligned"],["misbehaive","misbehave"],["miscallenous","miscellaneous"],["misceancellous","miscellaneous"],["miscelaneous","miscellaneous"],["miscellanious","miscellaneous"],["miscellanous","miscellaneous"],["miscelleneous","miscellaneous"],["mischeivous","mischievous"],["mischevious","mischievous"],["mischevus","mischievous"],["mischevusly","mischievously"],["mischieveous","mischievous"],["mischieveously","mischievously"],["mischievious","mischievous"],["misconfiged","misconfigured"],["Miscrosoft","Microsoft"],["misdameanor","misdemeanor"],["misdameanors","misdemeanors"],["misdemenor","misdemeanor"],["misdemenors","misdemeanors"],["miselaneous","miscellaneous"],["miselaneously","miscellaneously"],["misellaneous","miscellaneous"],["misellaneously","miscellaneously"],["misformed","malformed"],["misfourtunes","misfortunes"],["misile","missile"],["mising","missing"],["misintepret","misinterpret"],["misintepreted","misinterpreted"],["misinterpert","misinterpret"],["misinterperted","misinterpreted"],["misinterperting","misinterpreting"],["misinterperts","misinterprets"],["misinterprett","misinterpret"],["misinterpretted","misinterpreted"],["misisng","missing"],["mismach","mismatch"],["mismached","mismatched"],["mismaches","mismatches"],["mismaching","mismatching"],["mismactch","mismatch"],["mismatchd","mismatched"],["mismatich","mismatch"],["Misouri","Missouri"],["mispell","misspell"],["mispelled","misspelled"],["mispelling","misspelling"],["mispellings","misspellings"],["mispelt","misspelt"],["mispronounciation","mispronunciation"],["misquito","mosquito"],["misquitos","mosquitos"],["missable","miscible"],["missconfiguration","misconfiguration"],["missconfigure","misconfigure"],["missconfigured","misconfigured"],["missconfigures","misconfigures"],["missconfiguring","misconfiguring"],["misscounted","miscounted"],["missen","mizzen"],["missign","missing"],["missingassignement","missingassignment"],["missings","missing"],["Missisipi","Mississippi"],["Missisippi","Mississippi"],["missle","missile"],["missleading","misleading"],["missletow","mistletoe"],["missmanaged","mismanaged"],["missmatch","mismatch"],["missmatchd","mismatched"],["missmatched","mismatched"],["missmatches","mismatches"],["missmatching","mismatching"],["missonary","missionary"],["misspel","misspell"],["misssing","missing"],["misstake","mistake"],["misstaken","mistaken"],["misstakes","mistakes"],["misstype","mistype"],["misstypes","mistypes"],["missunderstood","misunderstood"],["missuse","misuse"],["missused","misused"],["missusing","misusing"],["mistatch","mismatch"],["mistatchd","mismatched"],["mistatched","mismatched"],["mistatches","mismatches"],["mistatching","mismatching"],["misteek","mystique"],["misteeks","mystiques"],["misterious","mysterious"],["mistery","mystery"],["misteryous","mysterious"],["mistic","mystic"],["mistical","mystical"],["mistics","mystics"],["mistmatch","mismatch"],["mistmatched","mismatched"],["mistmatches","mismatches"],["mistmatching","mismatching"],["mistro","maestro"],["mistros","maestros"],["mistrow","maestro"],["mistrows","maestros"],["misue","misuse"],["misued","misused"],["misuing","misusing"],["miticate","mitigate"],["miticated","mitigated"],["miticateing","mitigating"],["miticates","mitigates"],["miticating","mitigating"],["miticator","mitigator"],["mittigate","mitigate"],["miximum","maximum"],["mixted","mixed"],["mixure","mixture"],["mjor","major"],["mkae","make"],["mkaes","makes"],["mkaing","making"],["mke","make"],["mkea","make"],["mmaped","mapped"],["mmatching","matching"],["mmbers","members"],["mmnemonic","mnemonic"],["mnay","many"],["mobify","modify"],["mocrochip","microchip"],["mocrochips","microchips"],["mocrocode","microcode"],["mocrocodes","microcodes"],["mocrocontroller","microcontroller"],["mocrocontrollers","microcontrollers"],["mocrophone","microphone"],["mocrophones","microphones"],["mocroprocessor","microprocessor"],["mocroprocessors","microprocessors"],["mocrosecond","microsecond"],["mocroseconds","microseconds"],["Mocrosoft","Microsoft"],["mocule","module"],["mocules","modules"],["moddel","model"],["moddeled","modeled"],["moddelled","modelled"],["moddels","models"],["modee","mode"],["modelinng","modeling"],["modell","model"],["modellinng","modelling"],["modernination","modernization"],["moderninations","modernizations"],["moderninationz","modernizations"],["modernizationz","modernizations"],["modesettting","modesetting"],["modeul","module"],["modeuls","modules"],["modfel","model"],["modfiable","modifiable"],["modfication","modification"],["modfications","modifications"],["modfide","modified"],["modfided","modified"],["modfider","modifier"],["modfiders","modifiers"],["modfides","modifies"],["modfied","modified"],["modfieid","modified"],["modfieir","modifier"],["modfieirs","modifiers"],["modfieis","modifies"],["modfier","modifier"],["modfiers","modifiers"],["modfies","modifies"],["modfifiable","modifiable"],["modfification","modification"],["modfifications","modifications"],["modfified","modified"],["modfifier","modifier"],["modfifiers","modifiers"],["modfifies","modifies"],["modfify","modify"],["modfifying","modifying"],["modfiiable","modifiable"],["modfiication","modification"],["modfiications","modifications"],["modfitied","modified"],["modfitier","modifier"],["modfitiers","modifiers"],["modfities","modifies"],["modfity","modify"],["modfitying","modifying"],["modfiy","modify"],["modfiying","modifying"],["modfy","modify"],["modfying","modifying"],["modications","modifications"],["modidfication","modification"],["modidfications","modifications"],["modidfied","modified"],["modidfier","modifier"],["modidfiers","modifiers"],["modidfies","modifies"],["modidfy","modify"],["modidfying","modifying"],["modifable","modifiable"],["modifaction","modification"],["modifactions","modifications"],["modifation","modification"],["modifations","modifications"],["modifcation","modification"],["modifcations","modifications"],["modifciation","modification"],["modifciations","modifications"],["modifcication","modification"],["modifcications","modifications"],["modifdied","modified"],["modifdy","modify"],["modifed","modified"],["modifer","modifier"],["modifers","modifiers"],["modifes","modifies"],["modiffer","modifier"],["modiffers","modifiers"],["modifiation","modification"],["modifiations","modifications"],["modificatioon","modification"],["modificatioons","modifications"],["modificaton","modification"],["modificatons","modifications"],["modifid","modified"],["modifified","modified"],["modifify","modify"],["modifing","modifying"],["modifires","modifiers"],["modifiy","modify"],["modifiying","modifying"],["modifiyng","modifying"],["modifled","modified"],["modifler","modifier"],["modiflers","modifiers"],["modift","modify"],["modifty","modify"],["modifu","modify"],["modifuable","modifiable"],["modifued","modified"],["modifx","modify"],["modifyable","modifiable"],["modiration","moderation"],["modle","model"],["modlue","module"],["modprobbing","modprobing"],["modprobeing","modprobing"],["modtified","modified"],["modue","module"],["moduel","module"],["moduels","modules"],["moduile","module"],["modukles","modules"],["modul","module"],["modules's","modules'"],["moduless","modules"],["modulie","module"],["modulu","modulo"],["modulues","modules"],["modyfy","modify"],["moent","moment"],["moeny","money"],["mofdified","modified"],["mofification","modification"],["mofified","modified"],["mofifies","modifies"],["mofify","modify"],["mohammedan","muslim"],["mohammedans","muslims"],["moint","mount"],["mointor","monitor"],["mointored","monitored"],["mointoring","monitoring"],["mointors","monitors"],["moleclues","molecules"],["momement","moment"],["momementarily","momentarily"],["momements","moments"],["momemtarily","momentarily"],["momemtary","momentary"],["momemtn","moment"],["momentarely","momentarily"],["momento","memento"],["momery","memory"],["momoent","moment"],["momoment","moment"],["momomentarily","momentarily"],["momoments","moments"],["momory","memory"],["monarkey","monarchy"],["monarkeys","monarchies"],["monarkies","monarchies"],["monestaries","monasteries"],["monestic","monastic"],["monickers","monikers"],["monitary","monetary"],["moniter","monitor"],["monitoing","monitoring"],["monkies","monkeys"],["monochorome","monochrome"],["monochromo","monochrome"],["monocrome","monochrome"],["monolite","monolithic"],["monontonicity","monotonicity"],["monopace","monospace"],["monotir","monitor"],["monotired","monitored"],["monotiring","monitoring"],["monotirs","monitors"],["monsday","Monday"],["Monserrat","Montserrat"],["monstrum","monster"],["montains","mountains"],["montaj","montage"],["montajes","montages"],["montanous","mountainous"],["monthe","month"],["monthes","months"],["montly","monthly"],["Montnana","Montana"],["monts","months"],["montypic","monotypic"],["moodify","modify"],["moounting","mounting"],["mopdule","module"],["mopre","more"],["mor","more"],["mordern","modern"],["morever","moreover"],["morg","morgue"],["morgage","mortgage"],["morges","morgues"],["morgs","morgues"],["morisette","morissette"],["mormalise","normalise"],["mormalised","normalised"],["mormalises","normalises"],["mormalize","normalize"],["mormalized","normalized"],["mormalizes","normalizes"],["morrisette","morissette"],["morroccan","moroccan"],["morrocco","morocco"],["morroco","morocco"],["mortage","mortgage"],["morter","mortar"],["moslty","mostly"],["mostlky","mostly"],["mosture","moisture"],["mosty","mostly"],["moteef","motif"],["moteefs","motifs"],["moteur","motor"],["moteured","motored"],["moteuring","motoring"],["moteurs","motors"],["mothing","nothing"],["motiviated","motivated"],["motiviation","motivation"],["motononic","monotonic"],["motoroloa","motorola"],["moudle","module"],["moudule","module"],["mountian","mountain"],["mountpiont","mountpoint"],["mountpionts","mountpoints"],["mouspointer","mousepointer"],["moutn","mount"],["moutned","mounted"],["moutning","mounting"],["moutnpoint","mountpoint"],["moutnpoints","mountpoints"],["moutns","mounts"],["mouvement","movement"],["mouvements","movements"],["movebackwrd","movebackward"],["moveble","movable"],["movemement","movement"],["movemements","movements"],["movememnt","movement"],["movememnts","movements"],["movememt","movement"],["movememts","movements"],["movemet","movement"],["movemets","movements"],["movemment","movement"],["movemments","movements"],["movemnet","movement"],["movemnets","movements"],["movemnt","movement"],["movemnts","movements"],["movment","movement"],["moziila","Mozilla"],["mozila","Mozilla"],["mozzilla","mozilla"],["mroe","more"],["msbild","MSBuild"],["msbilds","MSBuild's"],["msbuid","MSBuild"],["msbuids","MSBuild's"],["msbuld","MSBuild"],["msbulds","MSBuild's"],["msbulid","MSBuild"],["msbulids","MSBuild's"],["mssing","missing"],["msssge","message"],["mthod","method"],["mtuually","mutually"],["mucuous","mucous"],["muder","murder"],["mudering","murdering"],["mudule","module"],["mudules","modules"],["muext","mutex"],["muiltiple","multiple"],["muiltiples","multiples"],["muliple","multiple"],["muliples","multiples"],["mulithread","multithread"],["mulitiplier","multiplier"],["mulitipliers","multipliers"],["mulitpart","multipart"],["mulitpath","multipath"],["mulitple","multiple"],["mulitplication","multiplication"],["mulitplicative","multiplicative"],["mulitplied","multiplied"],["mulitplier","multiplier"],["mulitpliers","multipliers"],["mulitply","multiply"],["multi-dimenional","multi-dimensional"],["multi-dimenionsal","multi-dimensional"],["multi-langual","multi-lingual"],["multi-presistion","multi-precision"],["multi-threded","multi-threaded"],["multible","multiple"],["multibye","multibyte"],["multicat","multicast"],["multicultralism","multiculturalism"],["multidimenional","multi-dimensional"],["multidimenionsal","multi-dimensional"],["multidimensinal","multidimensional"],["multidimension","multidimensional"],["multidimensionnal","multidimensional"],["multidimentionnal","multidimensional"],["multiecast","multicast"],["multifuction","multifunction"],["multilangual","multilingual"],["multile","multiple"],["multilpe","multiple"],["multipe","multiple"],["multipes","multiples"],["multipiler","multiplier"],["multipilers","multipliers"],["multipled","multiplied"],["multiplers","multipliers"],["multipliciaton","multiplication"],["multiplicites","multiplicities"],["multiplicty","multiplicity"],["multiplikation","multiplication"],["multipling","multiplying"],["multipllication","multiplication"],["multiplyed","multiplied"],["multipresistion","multiprecision"],["multipul","multiple"],["multipy","multiply"],["multipyling","multiplying"],["multithreded","multithreaded"],["multitute","multitude"],["multivriate","multivariate"],["multixsite","multisite"],["multline","multiline"],["multliple","multiple"],["multliples","multiples"],["multliplied","multiplied"],["multliplier","multiplier"],["multlipliers","multipliers"],["multliplies","multiplies"],["multliply","multiply"],["multliplying","multiplying"],["multple","multiple"],["multples","multiples"],["multplied","multiplied"],["multplier","multiplier"],["multpliers","multipliers"],["multplies","multiplies"],["multply","multiply"],["multplying","multiplying"],["multy","multi"],["multy-thread","multithread"],["mumber","number"],["mumbers","numbers"],["munbers","numbers"],["muncipalities","municipalities"],["muncipality","municipality"],["municiple","municipal"],["munnicipality","municipality"],["munute","minute"],["murr","myrrh"],["muscial","musical"],["muscician","musician"],["muscicians","musicians"],["musn't","mustn't"],["must't","mustn't"],["mustator","mutator"],["muste","must"],["mutablity","mutability"],["mutbale","mutable"],["mutch","much"],["mutches","matches"],["mutecies","mutexes"],["mutexs","mutexes"],["muti","multi"],["muticast","multicast"],["mutices","mutexes"],["mutilcast","multicast"],["mutiliated","mutilated"],["mutimarked","multimarked"],["mutipath","multipath"],["mutiple","multiple"],["mutiply","multiply"],["mutli","multi"],["mutli-threaded","multi-threaded"],["mutlipart","multipart"],["mutliple","multiple"],["mutliples","multiples"],["mutliplication","multiplication"],["mutliplicites","multiplicities"],["mutliplier","multiplier"],["mutlipliers","multipliers"],["mutliply","multiply"],["mutully","mutually"],["mutux","mutex"],["mutuxes","mutexes"],["mutuxs","mutexes"],["muyst","must"],["myabe","maybe"],["mybe","maybe"],["myitereator","myiterator"],["myraid","myriad"],["mysef","myself"],["mysefl","myself"],["mysekf","myself"],["myselfe","myself"],["myselfes","myself"],["myselv","myself"],["myselve","myself"],["myselves","myself"],["myslef","myself"],["mysogynist","misogynist"],["mysogyny","misogyny"],["mysterous","mysterious"],["mystql","mysql"],["mystrow","maestro"],["mystrows","maestros"],["Mythraic","Mithraic"],["myu","my"],["nadly","badly"],["nagative","negative"],["nagatively","negatively"],["nagatives","negatives"],["nagivation","navigation"],["naieve","naive"],["nam","name"],["namaed","named"],["namaes","names"],["nameing","naming"],["namemespace","namespace"],["namepace","namespace"],["namepsace","namespace"],["namepsaces","namespaces"],["namesapce","namespace"],["namesapced","namespaced"],["namesapces","namespaces"],["namess","names"],["namesspaces","namespaces"],["namme","name"],["namne","name"],["namned","named"],["namnes","names"],["namnespace","namespace"],["namnespaces","namespaces"],["nams","names"],["nane","name"],["nanosencond","nanosecond"],["nanosenconds","nanoseconds"],["nanoseond","nanosecond"],["nanoseonds","nanoseconds"],["Naploeon","Napoleon"],["Napolean","Napoleon"],["Napoleonian","Napoleonic"],["nasted","nested"],["nasting","nesting"],["nastly","nasty"],["nastyness","nastiness"],["natched","matched"],["natches","matches"],["nativelyx","natively"],["natrual","natural"],["naturaly","naturally"],["naturely","naturally"],["naturual","natural"],["naturually","naturally"],["natvigation","navigation"],["navagate","navigate"],["navagating","navigating"],["navagation","navigation"],["navagitation","navigation"],["naviagte","navigate"],["naviagted","navigated"],["naviagtes","navigates"],["naviagting","navigating"],["naviagtion","navigation"],["navitvely","natively"],["navtive","native"],["navtives","natives"],["naxima","maxima"],["naximal","maximal"],["naximum","maximum"],["Nazereth","Nazareth"],["nclude","include"],["ndoe","node"],["ndoes","nodes"],["neady","needy"],["neagtive","negative"],["neares","nearest"],["nearset","nearest"],["necassery","necessary"],["necassry","necessary"],["necause","because"],["neccecarily","necessarily"],["neccecary","necessary"],["neccesarily","necessarily"],["neccesary","necessary"],["neccessarily","necessarily"],["neccessarry","necessary"],["neccessary","necessary"],["neccessities","necessities"],["neccessity","necessity"],["neccisary","necessary"],["neccsessary","necessary"],["necesarily","necessarily"],["necesarrily","necessarily"],["necesarry","necessary"],["necesary","necessary"],["necessaery","necessary"],["necessairly","necessarily"],["necessar","necessary"],["necessarilly","necessarily"],["necessarly","necessarily"],["necessarry","necessary"],["necessaryly","necessarily"],["necessay","necessary"],["necesserily","necessarily"],["necessery","necessary"],["necessesary","necessary"],["necessiate","necessitate"],["nechanism","mechanism"],["necssary","necessary"],["nedd","need"],["nedded","needed"],["neded","needed"],["nedia","media"],["nedium","medium"],["nediums","mediums"],["nedle","needle"],["neds","needs"],["needeed","needed"],["neeed","need"],["neeeded","needed"],["neeeding","needing"],["neeedle","needle"],["neeedn't","needn't"],["neeeds","needs"],["nees","needs"],["neesd","needs"],["neesds","needs"],["neested","nested"],["neesting","nesting"],["negaive","negative"],["negarive","negative"],["negatiotiable","negotiable"],["negatiotiate","negotiate"],["negatiotiated","negotiated"],["negatiotiates","negotiates"],["negatiotiating","negotiating"],["negatiotiation","negotiation"],["negatiotiations","negotiations"],["negatiotiator","negotiator"],["negatiotiators","negotiators"],["negativ","negative"],["negatve","negative"],["negible","negligible"],["negitiable","negotiable"],["negitiate","negotiate"],["negitiated","negotiated"],["negitiates","negotiates"],["negitiating","negotiating"],["negitiation","negotiation"],["negitiations","negotiations"],["negitiator","negotiator"],["negitiators","negotiators"],["negitive","negative"],["neglible","negligible"],["negligable","negligible"],["negligble","negligible"],["negoable","negotiable"],["negoate","negotiate"],["negoated","negotiated"],["negoates","negotiates"],["negoatiable","negotiable"],["negoatiate","negotiate"],["negoatiated","negotiated"],["negoatiates","negotiates"],["negoatiating","negotiating"],["negoatiation","negotiation"],["negoatiations","negotiations"],["negoatiator","negotiator"],["negoatiators","negotiators"],["negoating","negotiating"],["negoation","negotiation"],["negoations","negotiations"],["negoator","negotiator"],["negoators","negotiators"],["negociable","negotiable"],["negociate","negotiate"],["negociated","negotiated"],["negociates","negotiates"],["negociating","negotiating"],["negociation","negotiation"],["negociations","negotiations"],["negociator","negotiator"],["negociators","negotiators"],["negogtiable","negotiable"],["negogtiate","negotiate"],["negogtiated","negotiated"],["negogtiates","negotiates"],["negogtiating","negotiating"],["negogtiation","negotiation"],["negogtiations","negotiations"],["negogtiator","negotiator"],["negogtiators","negotiators"],["negoitable","negotiable"],["negoitate","negotiate"],["negoitated","negotiated"],["negoitates","negotiates"],["negoitating","negotiating"],["negoitation","negotiation"],["negoitations","negotiations"],["negoitator","negotiator"],["negoitators","negotiators"],["negoptionsotiable","negotiable"],["negoptionsotiate","negotiate"],["negoptionsotiated","negotiated"],["negoptionsotiates","negotiates"],["negoptionsotiating","negotiating"],["negoptionsotiation","negotiation"],["negoptionsotiations","negotiations"],["negoptionsotiator","negotiator"],["negoptionsotiators","negotiators"],["negosiable","negotiable"],["negosiate","negotiate"],["negosiated","negotiated"],["negosiates","negotiates"],["negosiating","negotiating"],["negosiation","negotiation"],["negosiations","negotiations"],["negosiator","negotiator"],["negosiators","negotiators"],["negotable","negotiable"],["negotaiable","negotiable"],["negotaiate","negotiate"],["negotaiated","negotiated"],["negotaiates","negotiates"],["negotaiating","negotiating"],["negotaiation","negotiation"],["negotaiations","negotiations"],["negotaiator","negotiator"],["negotaiators","negotiators"],["negotaible","negotiable"],["negotaite","negotiate"],["negotaited","negotiated"],["negotaites","negotiates"],["negotaiting","negotiating"],["negotaition","negotiation"],["negotaitions","negotiations"],["negotaitor","negotiator"],["negotaitors","negotiators"],["negotate","negotiate"],["negotated","negotiated"],["negotates","negotiates"],["negotatiable","negotiable"],["negotatiate","negotiate"],["negotatiated","negotiated"],["negotatiates","negotiates"],["negotatiating","negotiating"],["negotatiation","negotiation"],["negotatiations","negotiations"],["negotatiator","negotiator"],["negotatiators","negotiators"],["negotatible","negotiable"],["negotatie","negotiate"],["negotatied","negotiated"],["negotaties","negotiates"],["negotating","negotiating"],["negotation","negotiation"],["negotations","negotiations"],["negotatior","negotiator"],["negotatiors","negotiators"],["negotator","negotiator"],["negotators","negotiators"],["negothiable","negotiable"],["negothiate","negotiate"],["negothiated","negotiated"],["negothiates","negotiates"],["negothiating","negotiating"],["negothiation","negotiation"],["negothiations","negotiations"],["negothiator","negotiator"],["negothiators","negotiators"],["negotible","negotiable"],["negoticable","negotiable"],["negoticate","negotiate"],["negoticated","negotiated"],["negoticates","negotiates"],["negoticating","negotiating"],["negotication","negotiation"],["negotications","negotiations"],["negoticator","negotiator"],["negoticators","negotiators"],["negotinate","negotiate"],["negotioable","negotiable"],["negotioate","negotiate"],["negotioated","negotiated"],["negotioates","negotiates"],["negotioating","negotiating"],["negotioation","negotiation"],["negotioations","negotiations"],["negotioator","negotiator"],["negotioators","negotiators"],["negotioble","negotiable"],["negotion","negotiation"],["negotionable","negotiable"],["negotionate","negotiate"],["negotionated","negotiated"],["negotionates","negotiates"],["negotionating","negotiating"],["negotionation","negotiation"],["negotionations","negotiations"],["negotionator","negotiator"],["negotionators","negotiators"],["negotions","negotiations"],["negotiotable","negotiable"],["negotiotate","negotiate"],["negotiotated","negotiated"],["negotiotates","negotiates"],["negotiotating","negotiating"],["negotiotation","negotiation"],["negotiotations","negotiations"],["negotiotator","negotiator"],["negotiotators","negotiators"],["negotiote","negotiate"],["negotioted","negotiated"],["negotiotes","negotiates"],["negotioting","negotiating"],["negotiotion","negotiation"],["negotiotions","negotiations"],["negotiotor","negotiator"],["negotiotors","negotiators"],["negotitable","negotiable"],["negotitae","negotiate"],["negotitaed","negotiated"],["negotitaes","negotiates"],["negotitaing","negotiating"],["negotitaion","negotiation"],["negotitaions","negotiations"],["negotitaor","negotiator"],["negotitaors","negotiators"],["negotitate","negotiate"],["negotitated","negotiated"],["negotitates","negotiates"],["negotitating","negotiating"],["negotitation","negotiation"],["negotitations","negotiations"],["negotitator","negotiator"],["negotitators","negotiators"],["negotite","negotiate"],["negotited","negotiated"],["negotites","negotiates"],["negotiting","negotiating"],["negotition","negotiation"],["negotitions","negotiations"],["negotitor","negotiator"],["negotitors","negotiators"],["negoziable","negotiable"],["negoziate","negotiate"],["negoziated","negotiated"],["negoziates","negotiates"],["negoziating","negotiating"],["negoziation","negotiation"],["negoziations","negotiations"],["negoziator","negotiator"],["negoziators","negotiators"],["negtive","negative"],["neibhbors","neighbors"],["neibhbours","neighbours"],["neibor","neighbor"],["neiborhood","neighborhood"],["neiborhoods","neighborhoods"],["neibors","neighbors"],["neigbhor","neighbor"],["neigbhorhood","neighborhood"],["neigbhorhoods","neighborhoods"],["neigbhors","neighbors"],["neigbhour","neighbour"],["neigbhours","neighbours"],["neigbor","neighbor"],["neigborhood","neighborhood"],["neigboring","neighboring"],["neigbors","neighbors"],["neigbourhood","neighbourhood"],["neighbar","neighbor"],["neighbarhood","neighborhood"],["neighbarhoods","neighborhoods"],["neighbaring","neighboring"],["neighbars","neighbors"],["neighbbor","neighbor"],["neighbborhood","neighborhood"],["neighbborhoods","neighborhoods"],["neighbboring","neighboring"],["neighbbors","neighbors"],["neighbeard","neighborhood"],["neighbeards","neighborhoods"],["neighbehood","neighborhood"],["neighbehoods","neighborhoods"],["neighbeing","neighboring"],["neighbeod","neighborhood"],["neighbeods","neighborhoods"],["neighbeor","neighbor"],["neighbeordhood","neighborhood"],["neighbeordhoods","neighborhoods"],["neighbeorhod","neighborhood"],["neighbeorhods","neighborhoods"],["neighbeorhood","neighborhood"],["neighbeorhoods","neighborhoods"],["neighbeors","neighbors"],["neighber","neighbor"],["neighbergh","neighbor"],["neighberghs","neighbors"],["neighberhhod","neighborhood"],["neighberhhods","neighborhoods"],["neighberhhood","neighborhood"],["neighberhhoods","neighborhoods"],["neighberhing","neighboring"],["neighberhod","neighborhood"],["neighberhodd","neighborhood"],["neighberhodds","neighborhoods"],["neighberhods","neighborhoods"],["neighberhood","neighborhood"],["neighberhooding","neighboring"],["neighberhoods","neighborhoods"],["neighberhoof","neighborhood"],["neighberhoofs","neighborhoods"],["neighberhoood","neighborhood"],["neighberhooods","neighborhoods"],["neighberhoor","neighbor"],["neighberhoors","neighbors"],["neighberhoud","neighborhood"],["neighberhouds","neighborhoods"],["neighbering","neighboring"],["neighbers","neighbors"],["neighbes","neighbors"],["neighbet","neighbor"],["neighbethood","neighborhood"],["neighbethoods","neighborhoods"],["neighbets","neighbors"],["neighbeuing","neighbouring"],["neighbeurgh","neighbour"],["neighbeurghs","neighbours"],["neighbeurhing","neighbouring"],["neighbeurhooding","neighbouring"],["neighbeurhoor","neighbour"],["neighbeurhoors","neighbours"],["neighbeus","neighbours"],["neighbeut","neighbour"],["neighbeuthood","neighbourhood"],["neighbeuthoods","neighbourhoods"],["neighbeuts","neighbours"],["neighbhor","neighbor"],["neighbhorhood","neighborhood"],["neighbhorhoods","neighborhoods"],["neighbhoring","neighboring"],["neighbhors","neighbors"],["neighboard","neighborhood"],["neighboards","neighborhoods"],["neighbohood","neighborhood"],["neighbohoods","neighborhoods"],["neighboing","neighboring"],["neighbood","neighborhood"],["neighboods","neighborhoods"],["neighboordhood","neighborhood"],["neighboordhoods","neighborhoods"],["neighboorhod","neighborhood"],["neighboorhods","neighborhoods"],["neighboorhood","neighborhood"],["neighboorhoods","neighborhoods"],["neighbooring","neighboring"],["neighborgh","neighbor"],["neighborghs","neighbors"],["neighborhhod","neighborhood"],["neighborhhods","neighborhoods"],["neighborhhood","neighborhood"],["neighborhhoods","neighborhoods"],["neighborhing","neighboring"],["neighborhod","neighborhood"],["neighborhodd","neighborhood"],["neighborhodds","neighborhoods"],["neighborhods","neighborhoods"],["neighborhooding","neighboring"],["neighborhoof","neighborhood"],["neighborhoofs","neighborhoods"],["neighborhoood","neighborhood"],["neighborhooods","neighborhoods"],["neighborhoor","neighbor"],["neighborhoors","neighbors"],["neighborhoud","neighborhood"],["neighborhouds","neighborhoods"],["neighbos","neighbors"],["neighbot","neighbor"],["neighbothood","neighborhood"],["neighbothoods","neighborhoods"],["neighbots","neighbors"],["neighbouing","neighbouring"],["neighbourgh","neighbour"],["neighbourghs","neighbours"],["neighbourhhod","neighbourhood"],["neighbourhhods","neighbourhoods"],["neighbourhhood","neighbourhood"],["neighbourhhoods","neighbourhoods"],["neighbourhing","neighbouring"],["neighbourhod","neighbourhood"],["neighbourhodd","neighbourhood"],["neighbourhodds","neighbourhoods"],["neighbourhods","neighbourhoods"],["neighbourhooding","neighbouring"],["neighbourhoof","neighbourhood"],["neighbourhoofs","neighbourhoods"],["neighbourhoood","neighbourhood"],["neighbourhooods","neighbourhoods"],["neighbourhoor","neighbour"],["neighbourhoors","neighbours"],["neighbourhoud","neighbourhood"],["neighbourhouds","neighbourhoods"],["neighbous","neighbours"],["neighbout","neighbour"],["neighbouthood","neighbourhood"],["neighbouthoods","neighbourhoods"],["neighbouts","neighbours"],["neighbr","neighbor"],["neighbrs","neighbors"],["neighbur","neighbor"],["neighburhood","neighborhood"],["neighburhoods","neighborhoods"],["neighburing","neighboring"],["neighburs","neighbors"],["neigher","neither"],["neighobr","neighbor"],["neighobrhood","neighborhood"],["neighobrhoods","neighborhoods"],["neighobring","neighboring"],["neighobrs","neighbors"],["neighor","neighbor"],["neighorhood","neighborhood"],["neighorhoods","neighborhoods"],["neighoring","neighboring"],["neighors","neighbors"],["neighour","neighbour"],["neighourhood","neighbourhood"],["neighourhoods","neighbourhoods"],["neighouring","neighbouring"],["neighours","neighbours"],["neighror","neighbour"],["neighrorhood","neighbourhood"],["neighrorhoods","neighbourhoods"],["neighroring","neighbouring"],["neighrors","neighbours"],["neighrour","neighbour"],["neighrourhood","neighbourhood"],["neighrourhoods","neighbourhoods"],["neighrouring","neighbouring"],["neighrours","neighbours"],["neight","neither"],["neightbor","neighbor"],["neightborhood","neighborhood"],["neightborhoods","neighborhoods"],["neightboring","neighboring"],["neightbors","neighbors"],["neightbour","neighbour"],["neightbourhood","neighbourhood"],["neightbourhoods","neighbourhoods"],["neightbouring","neighbouring"],["neightbours","neighbours"],["neighter","neither"],["neightobr","neighbor"],["neightobrhood","neighborhood"],["neightobrhoods","neighborhoods"],["neightobring","neighboring"],["neightobrs","neighbors"],["neiter","neither"],["nelink","netlink"],["nenviroment","environment"],["neolitic","neolithic"],["nerver","never"],["nescesaries","necessaries"],["nescesarily","necessarily"],["nescesarrily","necessarily"],["nescesarry","necessary"],["nescessarily","necessarily"],["nescessary","necessary"],["nesesarily","necessarily"],["nessary","necessary"],["nessasarily","necessarily"],["nessasary","necessary"],["nessecarilt","necessarily"],["nessecarily","necessarily"],["nessecarry","necessary"],["nessecary","necessary"],["nesseccarily","necessarily"],["nesseccary","necessary"],["nessesarily","necessarily"],["nessesary","necessary"],["nessessarily","necessarily"],["nessessary","necessary"],["nestin","nesting"],["nestwork","network"],["netacpe","netscape"],["netcape","netscape"],["nethods","methods"],["netiher","neither"],["netowrk","network"],["netowrks","networks"],["netscpe","netscape"],["netwplit","netsplit"],["netwrok","network"],["netwroked","networked"],["netwroks","networks"],["netwrork","network"],["neumeric","numeric"],["nevelope","envelope"],["nevelopes","envelopes"],["nevere","never"],["neveretheless","nevertheless"],["nevers","never"],["neverthless","nevertheless"],["newine","newline"],["newines","newlines"],["newletters","newsletters"],["nework","network"],["neworks","networks"],["newslines","newlines"],["newthon","newton"],["newtork","network"],["Newyorker","New Yorker"],["niear","near"],["niearest","nearest"],["niether","neither"],["nighbor","neighbor"],["nighborhood","neighborhood"],["nighboring","neighboring"],["nighlties","nightlies"],["nighlty","nightly"],["nightfa;;","nightfall"],["nightime","nighttime"],["nimutes","minutes"],["nineth","ninth"],["ninima","minima"],["ninimal","minimal"],["ninimum","minimum"],["ninjs","ninja"],["ninteenth","nineteenth"],["nither","neither"],["nknown","unknown"],["nkow","know"],["nkwo","know"],["nmae","name"],["nned","need"],["nneeded","needed"],["nnumber","number"],["no-overide","no-override"],["nodels","models"],["nodess","nodes"],["nodulated","modulated"],["nofified","notified"],["nofity","notify"],["nohypen","nohyphen"],["nomber","number"],["nombered","numbered"],["nombering","numbering"],["nombers","numbers"],["nomimal","nominal"],["non-alphanumunder","non-alphanumeric"],["non-asii","non-ascii"],["non-assiged","non-assigned"],["non-bloking","non-blocking"],["non-compleeted","non-completed"],["non-complient","non-compliant"],["non-corelated","non-correlated"],["non-existant","non-existent"],["non-exluded","non-excluded"],["non-indentended","non-indented"],["non-inmediate","non-immediate"],["non-inreractive","non-interactive"],["non-instnat","non-instant"],["non-meausure","non-measure"],["non-negatiotiable","non-negotiable"],["non-negatiotiated","non-negotiated"],["non-negativ","non-negative"],["non-negoable","non-negotiable"],["non-negoated","non-negotiated"],["non-negoatiable","non-negotiable"],["non-negoatiated","non-negotiated"],["non-negociable","non-negotiable"],["non-negociated","non-negotiated"],["non-negogtiable","non-negotiable"],["non-negogtiated","non-negotiated"],["non-negoitable","non-negotiable"],["non-negoitated","non-negotiated"],["non-negoptionsotiable","non-negotiable"],["non-negoptionsotiated","non-negotiated"],["non-negosiable","non-negotiable"],["non-negosiated","non-negotiated"],["non-negotable","non-negotiable"],["non-negotaiable","non-negotiable"],["non-negotaiated","non-negotiated"],["non-negotaible","non-negotiable"],["non-negotaited","non-negotiated"],["non-negotated","non-negotiated"],["non-negotatiable","non-negotiable"],["non-negotatiated","non-negotiated"],["non-negotatible","non-negotiable"],["non-negotatied","non-negotiated"],["non-negothiable","non-negotiable"],["non-negothiated","non-negotiated"],["non-negotible","non-negotiable"],["non-negoticable","non-negotiable"],["non-negoticated","non-negotiated"],["non-negotioable","non-negotiable"],["non-negotioated","non-negotiated"],["non-negotioble","non-negotiable"],["non-negotionable","non-negotiable"],["non-negotionated","non-negotiated"],["non-negotiotable","non-negotiable"],["non-negotiotated","non-negotiated"],["non-negotiote","non-negotiated"],["non-negotitable","non-negotiable"],["non-negotitaed","non-negotiated"],["non-negotitated","non-negotiated"],["non-negotited","non-negotiated"],["non-negoziable","non-negotiable"],["non-negoziated","non-negotiated"],["non-priviliged","non-privileged"],["non-referenced-counted","non-reference-counted"],["non-replacable","non-replaceable"],["non-replacalbe","non-replaceable"],["non-reproducable","non-reproducible"],["non-seperable","non-separable"],["non-trasparent","non-transparent"],["non-useful","useless"],["non-usefull","useless"],["non-virutal","non-virtual"],["nonbloking","non-blocking"],["noncombatents","noncombatants"],["noncontigous","non-contiguous"],["nonesense","nonsense"],["nonesensical","nonsensical"],["nonexistance","nonexistence"],["nonexistant","nonexistent"],["nonnegarive","nonnegative"],["nonneighboring","non-neighboring"],["nonsence","nonsense"],["nonsens","nonsense"],["nonseperable","non-separable"],["nonte","note"],["nontheless","nonetheless"],["noo","no"],["noone","no one"],["noralize","normalize"],["noralized","normalized"],["noramal","normal"],["noramalise","normalise"],["noramalised","normalised"],["noramalises","normalises"],["noramalising","normalising"],["noramalize","normalize"],["noramalized","normalized"],["noramalizes","normalizes"],["noramalizing","normalizing"],["noramals","normals"],["noraml","normal"],["norhern","northern"],["norifications","notifications"],["normailzation","normalization"],["normaized","normalized"],["normale","normal"],["normales","normals"],["normaly","normally"],["normalyl","normally"],["normalyly","normally"],["normalysed","normalised"],["normalyy","normally"],["normalyzation","normalization"],["normalyze","normalize"],["normalyzed","normalized"],["normlly","normally"],["normnal","normal"],["normol","normal"],["normolise","normalise"],["normolize","normalize"],["northen","northern"],["northereastern","northeastern"],["nortmally","normally"],["notabley","notably"],["notaion","notation"],["notaly","notably"],["notasion","notation"],["notatin","notation"],["noteable","notable"],["noteably","notably"],["noteboook","notebook"],["noteboooks","notebooks"],["noteriety","notoriety"],["notfication","notification"],["notfications","notifications"],["notfy","notify"],["noth","north"],["nothern","northern"],["nothign","nothing"],["nothigng","nothing"],["nothihg","nothing"],["nothin","nothing"],["nothind","nothing"],["nothink","nothing"],["noticable","noticeable"],["noticably","noticeably"],["notication","notification"],["notications","notifications"],["noticeing","noticing"],["noticiable","noticeable"],["noticible","noticeable"],["notifaction","notification"],["notifactions","notifications"],["notifcation","notification"],["notifcations","notifications"],["notifed","notified"],["notifer","notifier"],["notifes","notifies"],["notifiation","notification"],["notificaction","notification"],["notificaiton","notification"],["notificaitons","notifications"],["notificaton","notification"],["notificatons","notifications"],["notificiation","notification"],["notificiations","notifications"],["notifiy","notify"],["notifiying","notifying"],["notifycation","notification"],["notity","notify"],["notmalize","normalize"],["notmalized","normalized"],["notmutch","notmuch"],["notning","nothing"],["nott","not"],["nottaion","notation"],["nottaions","notations"],["notwhithstanding","notwithstanding"],["noveau","nouveau"],["novemeber","November"],["Novemer","November"],["Novermber","November"],["nowadys","nowadays"],["nowdays","nowadays"],["nowe","now"],["ntification","notification"],["nuber","number"],["nubering","numbering"],["nubmer","number"],["nubmers","numbers"],["nucular","nuclear"],["nuculear","nuclear"],["nuisanse","nuisance"],["nuissance","nuisance"],["nulk","null"],["Nullabour","Nullarbor"],["nulll","null"],["numbber","number"],["numbbered","numbered"],["numbbering","numbering"],["numbbers","numbers"],["numberal","numeral"],["numberals","numerals"],["numberic","numeric"],["numberous","numerous"],["numberr","number"],["numberred","numbered"],["numberring","numbering"],["numberrs","numbers"],["numberss","numbers"],["numbert","number"],["numbet","number"],["numbets","numbers"],["numbres","numbers"],["numearate","numerate"],["numearation","numeration"],["numeber","number"],["numebering","numbering"],["numebers","numbers"],["numebr","number"],["numebrs","numbers"],["numer","number"],["numeraotr","numerator"],["numerbering","numbering"],["numercial","numerical"],["numercially","numerically"],["numering","numbering"],["numers","numbers"],["nummber","number"],["nummbers","numbers"],["nummeric","numeric"],["numnber","number"],["numnbered","numbered"],["numnbering","numbering"],["numnbers","numbers"],["numner","number"],["numners","numbers"],["numver","number"],["numvers","numbers"],["nunber","number"],["nunbers","numbers"],["Nuremburg","Nuremberg"],["nusance","nuisance"],["nutritent","nutrient"],["nutritents","nutrients"],["nuturing","nurturing"],["nwe","new"],["nwo","now"],["o'caml","OCaml"],["oaram","param"],["obay","obey"],["obect","object"],["obediance","obedience"],["obediant","obedient"],["obejct","object"],["obejcted","objected"],["obejction","objection"],["obejctions","objections"],["obejctive","objective"],["obejctively","objectively"],["obejctives","objectives"],["obejcts","objects"],["obeject","object"],["obejection","objection"],["obejects","objects"],["oberflow","overflow"],["oberflowed","overflowed"],["oberflowing","overflowing"],["oberflows","overflows"],["oberv","observe"],["obervant","observant"],["obervation","observation"],["obervations","observations"],["oberve","observe"],["oberved","observed"],["oberver","observer"],["obervers","observers"],["oberves","observes"],["oberving","observing"],["obervs","observes"],["obeservation","observation"],["obeservations","observations"],["obeserve","observe"],["obeserved","observed"],["obeserver","observer"],["obeservers","observers"],["obeserves","observes"],["obeserving","observing"],["obession","obsession"],["obessions","obsessions"],["obgect","object"],["obgects","objects"],["obhect","object"],["obhectification","objectification"],["obhectifies","objectifies"],["obhectify","objectify"],["obhectifying","objectifying"],["obhecting","objecting"],["obhection","objection"],["obhects","objects"],["obious","obvious"],["obiously","obviously"],["obivous","obvious"],["obivously","obviously"],["objec","object"],["objecs","objects"],["objectss","objects"],["objejct","object"],["objekt","object"],["objet","object"],["objetc","object"],["objetcs","objects"],["objets","objects"],["objtain","obtain"],["objtained","obtained"],["objtains","obtains"],["objump","objdump"],["oblitque","oblique"],["obnject","object"],["obscur","obscure"],["obselete","obsolete"],["obseravtion","observation"],["obseravtions","observations"],["observ","observe"],["observered","observed"],["obsevrer","observer"],["obsevrers","observers"],["obsolate","obsolete"],["obsolesence","obsolescence"],["obsolite","obsolete"],["obsolited","obsoleted"],["obsolte","obsolete"],["obsolted","obsoleted"],["obssessed","obsessed"],["obstacal","obstacle"],["obstancles","obstacles"],["obstruced","obstructed"],["obsure","obscure"],["obtaiend","obtained"],["obtaiens","obtains"],["obtainig","obtaining"],["obtaion","obtain"],["obtaioned","obtained"],["obtaions","obtains"],["obtrain","obtain"],["obtrained","obtained"],["obtrains","obtains"],["obusing","abusing"],["obvioulsy","obviously"],["obvisious","obvious"],["obvisous","obvious"],["obvisously","obviously"],["obyect","object"],["obyekt","object"],["ocasion","occasion"],["ocasional","occasional"],["ocasionally","occasionally"],["ocasionaly","occasionally"],["ocasioned","occasioned"],["ocasions","occasions"],["ocassion","occasion"],["ocassional","occasional"],["ocassionally","occasionally"],["ocassionaly","occasionally"],["ocassioned","occasioned"],["ocassions","occasions"],["occaisionally","occasionally"],["occaison","occasion"],["occasinal","occasional"],["occasinally","occasionally"],["occasioanlly","occasionally"],["occasionaly","occasionally"],["occassion","occasion"],["occassional","occasional"],["occassionally","occasionally"],["occassionaly","occasionally"],["occassioned","occasioned"],["occassions","occasions"],["occational","occasional"],["occationally","occasionally"],["occcur","occur"],["occcured","occurred"],["occcurs","occurs"],["occour","occur"],["occoured","occurred"],["occouring","occurring"],["occourring","occurring"],["occours","occurs"],["occrrance","occurrence"],["occrrances","occurrences"],["occrred","occurred"],["occrring","occurring"],["occsionally","occasionally"],["occucence","occurrence"],["occucences","occurrences"],["occulusion","occlusion"],["occuped","occupied"],["occupided","occupied"],["occuracy","accuracy"],["occurance","occurrence"],["occurances","occurrences"],["occurately","accurately"],["occurded","occurred"],["occured","occurred"],["occurence","occurrence"],["occurences","occurrences"],["occures","occurs"],["occuring","occurring"],["occurr","occur"],["occurrance","occurrence"],["occurrances","occurrences"],["occurrencs","occurrences"],["occurrs","occurs"],["oclock","o'clock"],["ocntext","context"],["ocorrence","occurrence"],["ocorrences","occurrences"],["octect","octet"],["octects","octets"],["octohedra","octahedra"],["octohedral","octahedral"],["octohedron","octahedron"],["ocuntries","countries"],["ocuntry","country"],["ocupied","occupied"],["ocupies","occupies"],["ocupy","occupy"],["ocupying","occupying"],["ocur","occur"],["ocurr","occur"],["ocurrance","occurrence"],["ocurred","occurred"],["ocurrence","occurrence"],["ocurrences","occurrences"],["ocurring","occurring"],["ocurrred","occurred"],["ocurrs","occurs"],["odly","oddly"],["ody","body"],["oen","one"],["ofcource","of course"],["offcers","officers"],["offcial","official"],["offcially","officially"],["offcials","officials"],["offerd","offered"],["offereings","offerings"],["offest","offset"],["offests","offsets"],["offfence","offence"],["offfences","offences"],["offfense","offense"],["offfenses","offenses"],["offfset","offset"],["offfsets","offsets"],["offic","office"],["offical","official"],["offically","officially"],["officals","officials"],["officaly","officially"],["officeal","official"],["officeally","officially"],["officeals","officials"],["officealy","officially"],["officialy","officially"],["offloded","offloaded"],["offred","offered"],["offsence","offence"],["offsense","offense"],["offsenses","offenses"],["offser","offset"],["offseted","offsetted"],["offseting","offsetting"],["offsetp","offset"],["offsett","offset"],["offstets","offsets"],["offten","often"],["oficial","official"],["oficially","officially"],["ofmodule","of module"],["ofo","of"],["ofrom","from"],["ofsetted","offsetted"],["ofsset","offset"],["oftenly","often"],["ofthe","of the"],["oherwise","otherwise"],["ohter","other"],["ohters","others"],["ohterwise","otherwise"],["oigin","origin"],["oiginal","original"],["oiginally","originally"],["oiginals","originals"],["oiginating","originating"],["oigins","origins"],["ois","is"],["ojbect","object"],["oje","one"],["oject","object"],["ojection","objection"],["ojective","objective"],["ojects","objects"],["ojekts","objects"],["okat","okay"],["oldes","oldest"],["olny","only"],["olt","old"],["olther","other"],["oly","only"],["omision","omission"],["omited","omitted"],["omiting","omitting"],["omitt","omit"],["omlette","omelette"],["ommision","omission"],["ommission","omission"],["ommit","omit"],["ommited","omitted"],["ommiting","omitting"],["ommits","omits"],["ommitted","omitted"],["ommitting","omitting"],["omniverous","omnivorous"],["omniverously","omnivorously"],["omplementaion","implementation"],["omplementation","implementation"],["omre","more"],["onchage","onchange"],["ond","one"],["one-dimenional","one-dimensional"],["one-dimenionsal","one-dimensional"],["onece","once"],["onedimenional","one-dimensional"],["onedimenionsal","one-dimensional"],["oneliners","one-liners"],["oneyway","oneway"],["ongly","only"],["onl","only"],["onliene","online"],["onlly","only"],["onlye","only"],["onlyonce","only once"],["onoly","only"],["onother","another"],["ons","owns"],["onself","oneself"],["ontain","contain"],["ontained","contained"],["ontainer","container"],["ontainers","containers"],["ontainging","containing"],["ontaining","containing"],["ontainor","container"],["ontainors","containers"],["ontains","contains"],["ontext","context"],["onthe","on the"],["ontop","on top"],["ontrolled","controlled"],["onw","own"],["onwed","owned"],["onwer","owner"],["onwership","ownership"],["onwing","owning"],["onws","owns"],["onyl","only"],["oommits","commits"],["ooutput","output"],["ooutputs","outputs"],["opactity","opacity"],["opactiy","opacity"],["opacy","opacity"],["opague","opaque"],["opatque","opaque"],["opbject","object"],["opbjective","objective"],["opbjects","objects"],["opeaaration","operation"],["opeaarations","operations"],["opeabcration","operation"],["opeabcrations","operations"],["opearand","operand"],["opearands","operands"],["opearate","operate"],["opearates","operates"],["opearating","operating"],["opearation","operation"],["opearations","operations"],["opearatios","operations"],["opearator","operator"],["opearators","operators"],["opearion","operation"],["opearions","operations"],["opearios","operations"],["opeariton","operation"],["opearitons","operations"],["opearitos","operations"],["opearnd","operand"],["opearnds","operands"],["opearor","operator"],["opearors","operators"],["opearte","operate"],["opearted","operated"],["opeartes","operates"],["opearting","operating"],["opeartion","operation"],["opeartions","operations"],["opeartios","operations"],["opeartor","operator"],["opeartors","operators"],["opeate","operate"],["opeates","operates"],["opeation","operation"],["opeational","operational"],["opeations","operations"],["opeatios","operations"],["opeator","operator"],["opeators","operators"],["opeatror","operator"],["opeatrors","operators"],["opeg","open"],["opeging","opening"],["opeing","opening"],["opeinging","opening"],["opeings","openings"],["opem","open"],["opemed","opened"],["opemess","openness"],["opeming","opening"],["opems","opens"],["openbrower","openbrowser"],["opended","opened"],["openeing","opening"],["openend","opened"],["openened","opened"],["openening","opening"],["openess","openness"],["openin","opening"],["openned","opened"],["openning","opening"],["operaand","operand"],["operaands","operands"],["operaion","operation"],["operaions","operations"],["operaiton","operation"],["operandes","operands"],["operaror","operator"],["operatation","operation"],["operatations","operations"],["operater","operator"],["operatings","operating"],["operatio","operation"],["operatione","operation"],["operatior","operator"],["operatng","operating"],["operato","operator"],["operaton","operation"],["operatons","operations"],["operattion","operation"],["operattions","operations"],["opereation","operation"],["opertaion","operation"],["opertaions","operations"],["opertion","operation"],["opertional","operational"],["opertions","operations"],["opertor","operator"],["opertors","operators"],["opetional","optional"],["ophan","orphan"],["ophtalmology","ophthalmology"],["opion","option"],["opionally","optionally"],["opions","options"],["opitionally","optionally"],["opiton","option"],["opitons","options"],["opject","object"],["opjected","objected"],["opjecteing","objecting"],["opjectification","objectification"],["opjectifications","objectifications"],["opjectified","objectified"],["opjecting","objecting"],["opjection","objection"],["opjections","objections"],["opjective","objective"],["opjectively","objectively"],["opjects","objects"],["opne","open"],["opned","opened"],["opnegroup","opengroup"],["opnssl","openssl"],["oponent","opponent"],["oportunity","opportunity"],["opose","oppose"],["oposed","opposed"],["oposite","opposite"],["oposition","opposition"],["oppenly","openly"],["opperate","operate"],["opperated","operated"],["opperates","operates"],["opperation","operation"],["opperational","operational"],["opperations","operations"],["oppertunist","opportunist"],["oppertunities","opportunities"],["oppertunity","opportunity"],["oppinion","opinion"],["oppinions","opinions"],["opponant","opponent"],["oppononent","opponent"],["opportunisticly","opportunistically"],["opportunistly","opportunistically"],["opportunties","opportunities"],["oppositition","opposition"],["oppossed","opposed"],["opprotunity","opportunity"],["opproximate","approximate"],["opps","oops"],["oppsofite","opposite"],["oppurtunity","opportunity"],["opration","operation"],["oprations","operations"],["opreating","operating"],["opreation","operation"],["opreations","operations"],["opression","oppression"],["opressive","oppressive"],["oprimization","optimization"],["oprimizations","optimizations"],["oprimize","optimize"],["oprimized","optimized"],["oprimizes","optimizes"],["optain","obtain"],["optained","obtained"],["optains","obtains"],["optaionl","optional"],["optening","opening"],["optet","opted"],["opthalmic","ophthalmic"],["opthalmologist","ophthalmologist"],["opthalmology","ophthalmology"],["opthamologist","ophthalmologist"],["optiional","optional"],["optimasation","optimization"],["optimazation","optimization"],["optimial","optimal"],["optimiality","optimality"],["optimisim","optimism"],["optimisitc","optimistic"],["optimisitic","optimistic"],["optimissm","optimism"],["optimitation","optimization"],["optimizaing","optimizing"],["optimizaton","optimization"],["optimizier","optimizer"],["optimiztion","optimization"],["optimiztions","optimizations"],["optimsitic","optimistic"],["optimyze","optimize"],["optimze","optimize"],["optimzie","optimize"],["optin","option"],["optinal","optional"],["optinally","optionally"],["optins","options"],["optio","option"],["optioanl","optional"],["optioin","option"],["optioinal","optional"],["optioins","options"],["optionalliy","optionally"],["optionallly","optionally"],["optionaly","optionally"],["optionel","optional"],["optiones","options"],["optionial","optional"],["optionn","option"],["optionnal","optional"],["optionnally","optionally"],["optionnaly","optionally"],["optionss","options"],["optios","options"],["optismied","optimised"],["optizmied","optimized"],["optmisation","optimisation"],["optmisations","optimisations"],["optmization","optimization"],["optmizations","optimizations"],["optmize","optimize"],["optmized","optimized"],["optoin","option"],["optoins","options"],["optomism","optimism"],["opton","option"],["optonal","optional"],["optonally","optionally"],["optons","options"],["opyion","option"],["opyions","options"],["orcale","oracle"],["orded","ordered"],["orderd","ordered"],["ordert","ordered"],["ording","ordering"],["ordner","order"],["orede","order"],["oredes","orders"],["oreding","ordering"],["oredred","ordered"],["orgamise","organise"],["organim","organism"],["organisaion","organisation"],["organisaions","organisations"],["organistion","organisation"],["organistions","organisations"],["organizaion","organization"],["organizaions","organizations"],["organiztion","organization"],["organiztions","organizations"],["organsiation","organisation"],["organsiations","organisations"],["organsied","organised"],["organsier","organiser"],["organsiers","organisers"],["organsies","organises"],["organsiing","organising"],["organziation","organization"],["organziations","organizations"],["organzied","organized"],["organzier","organizer"],["organziers","organizers"],["organzies","organizes"],["organziing","organizing"],["orgiginal","original"],["orgiginally","originally"],["orgiginals","originals"],["orginal","original"],["orginally","originally"],["orginals","originals"],["orginate","originate"],["orginated","originated"],["orginates","originates"],["orginating","originating"],["orginial","original"],["orginially","originally"],["orginials","originals"],["orginiate","originate"],["orginiated","originated"],["orginiates","originates"],["orgininal","original"],["orgininals","originals"],["orginisation","organisation"],["orginisations","organisations"],["orginised","organised"],["orginization","organization"],["orginizations","organizations"],["orginized","organized"],["orginx","originx"],["orginy","originy"],["orhpan","orphan"],["oriant","orient"],["oriantate","orientate"],["oriantated","orientated"],["oriantation","orientation"],["oridinarily","ordinarily"],["orieation","orientation"],["orieations","orientations"],["orienatate","orientate"],["orienatated","orientated"],["orienatation","orientation"],["orienation","orientation"],["orientaion","orientation"],["orientatied","orientated"],["oriente","oriented"],["orientiation","orientation"],["orientied","oriented"],["orientned","oriented"],["orietation","orientation"],["orietations","orientations"],["origanaly","originally"],["origial","original"],["origially","originally"],["origianal","original"],["origianally","originally"],["origianaly","originally"],["origianl","original"],["origianls","originals"],["origigin","origin"],["origiginal","original"],["origiginally","originally"],["origiginals","originals"],["originaly","originally"],["originial","original"],["originially","originally"],["originiated","originated"],["originiating","originating"],["origininal","original"],["origininate","originate"],["origininated","originated"],["origininates","originates"],["origininating","originating"],["origining","originating"],["originnally","originally"],["origion","origin"],["origional","original"],["origionally","originally"],["orign","origin"],["orignal","original"],["orignally","originally"],["orignate","originate"],["orignated","originated"],["orignates","originates"],["orignial","original"],["orignially","originally"],["origninal","original"],["oringal","original"],["oringally","originally"],["orpan","orphan"],["orpanage","orphanage"],["orpaned","orphaned"],["orpans","orphans"],["orriginal","original"],["orthagnal","orthogonal"],["orthagonal","orthogonal"],["orthagonalize","orthogonalize"],["orthoganal","orthogonal"],["orthoganalize","orthogonalize"],["orthognal","orthogonal"],["orthonormalizatin","orthonormalization"],["ortogonal","orthogonal"],["ortogonality","orthogonality"],["osbscure","obscure"],["osciallator","oscillator"],["oscilate","oscillate"],["oscilated","oscillated"],["oscilating","oscillating"],["oscilator","oscillator"],["oscilliscope","oscilloscope"],["oscilliscopes","oscilloscopes"],["osffset","offset"],["osffsets","offsets"],["osffsetting","offsetting"],["osicllations","oscillations"],["otain","obtain"],["otained","obtained"],["otains","obtains"],["otehr","other"],["otehrwice","otherwise"],["otehrwise","otherwise"],["otehrwize","otherwise"],["oterwice","otherwise"],["oterwise","otherwise"],["oterwize","otherwise"],["othe","other"],["othere","other"],["otherewise","otherwise"],["otherise","otherwise"],["otheriwse","otherwise"],["otherwaise","otherwise"],["otherways","otherwise"],["otherweis","otherwise"],["otherweise","otherwise"],["otherwhere","elsewhere"],["otherwhile","otherwise"],["otherwhise","otherwise"],["otherwice","otherwise"],["otherwide","otherwise"],["otherwis","otherwise"],["otherwize","otherwise"],["otherwordly","otherworldly"],["otherwose","otherwise"],["otherwrite","overwrite"],["otherws","otherwise"],["otherwse","otherwise"],["otherwsie","otherwise"],["otherwsise","otherwise"],["otherwuise","otherwise"],["otherwwise","otherwise"],["otherwyse","otherwise"],["othewice","otherwise"],["othewise","otherwise"],["othewize","otherwise"],["otho","otoh"],["othographic","orthographic"],["othwerise","otherwise"],["othwerwise","otherwise"],["othwhise","otherwise"],["otification","notification"],["otiginal","original"],["otion","option"],["otionally","optionally"],["otions","options"],["otpion","option"],["otpions","options"],["otput","output"],["otu","out"],["oublisher","publisher"],["ouer","outer"],["ouevre","oeuvre"],["oultinenodes","outlinenodes"],["oultiner","outliner"],["oultline","outline"],["oultlines","outlines"],["ountline","outline"],["ouptut","output"],["ouptuted","outputted"],["ouptuting","outputting"],["ouptuts","outputs"],["ouput","output"],["ouputarea","outputarea"],["ouputs","outputs"],["ouputted","outputted"],["ouputting","outputting"],["ourselfes","ourselves"],["ourselfs","ourselves"],["ourselvs","ourselves"],["ouside","outside"],["oustanding","outstanding"],["oustide","outside"],["outbut","output"],["outbuts","outputs"],["outgoign","outgoing"],["outisde","outside"],["outllook","outlook"],["outoign","outgoing"],["outout","output"],["outperfoem","outperform"],["outperfoeming","outperforming"],["outperfom","outperform"],["outperfome","outperform"],["outperfomeing","outperforming"],["outperfoming","outperforming"],["outperfomr","outperform"],["outperfomring","outperforming"],["outpout","output"],["outpouts","outputs"],["outpupt","output"],["outpusts","outputs"],["outputed","outputted"],["outputing","outputting"],["outselves","ourselves"],["outsid","outside"],["outter","outer"],["outtermost","outermost"],["outupt","output"],["outupts","outputs"],["outuput","output"],["outut","output"],["oututs","outputs"],["outweight","outweigh"],["outweights","outweighs"],["ouur","our"],["ouurs","ours"],["oveerun","overrun"],["oveflow","overflow"],["oveflowed","overflowed"],["oveflowing","overflowing"],["oveflows","overflows"],["ovelap","overlap"],["ovelapping","overlapping"],["over-engeneer","over-engineer"],["over-engeneering","over-engineering"],["overaall","overall"],["overal","overall"],["overcompansate","overcompensate"],["overcompansated","overcompensated"],["overcompansates","overcompensates"],["overcompansating","overcompensating"],["overcompansation","overcompensation"],["overcompansations","overcompensations"],["overengeneer","overengineer"],["overengeneering","overengineering"],["overfl","overflow"],["overfow","overflow"],["overfowed","overflowed"],["overfowing","overflowing"],["overfows","overflows"],["overhread","overhead"],["overiddden","overridden"],["overidden","overridden"],["overide","override"],["overiden","overridden"],["overides","overrides"],["overiding","overriding"],["overlaped","overlapped"],["overlaping","overlapping"],["overlapp","overlap"],["overlayed","overlaid"],["overlflow","overflow"],["overlflowed","overflowed"],["overlflowing","overflowing"],["overlflows","overflows"],["overlfow","overflow"],["overlfowed","overflowed"],["overlfowing","overflowing"],["overlfows","overflows"],["overlodaded","overloaded"],["overloded","overloaded"],["overlodes","overloads"],["overlow","overflow"],["overlowing","overflowing"],["overlows","overflows"],["overreidden","overridden"],["overreide","override"],["overreides","overrides"],["overriabled","overridable"],["overriddable","overridable"],["overriddden","overridden"],["overriddes","overrides"],["overridding","overriding"],["overrideable","overridable"],["overriden","overridden"],["overrident","overridden"],["overridiing","overriding"],["overrids","overrides"],["overrriddden","overridden"],["overrridden","overridden"],["overrride","override"],["overrriden","overridden"],["overrrides","overrides"],["overrriding","overriding"],["overrrun","overrun"],["overshaddowed","overshadowed"],["oversubcribe","oversubscribe"],["oversubcribed","oversubscribed"],["oversubcribes","oversubscribes"],["oversubcribing","oversubscribing"],["oversubscibe","oversubscribe"],["oversubscibed","oversubscribed"],["oversubscirbe","oversubscribe"],["oversubscirbed","oversubscribed"],["overthere","over there"],["overun","overrun"],["overvise","otherwise"],["overvize","otherwise"],["overvride","override"],["overvrides","overrides"],["overvrite","overwrite"],["overvrites","overwrites"],["overwelm","overwhelm"],["overwelming","overwhelming"],["overwheliming","overwhelming"],["overwiew","overview"],["overwirte","overwrite"],["overwirting","overwriting"],["overwirtten","overwritten"],["overwise","otherwise"],["overwite","overwrite"],["overwites","overwrites"],["overwitten","overwritten"],["overwize","otherwise"],["overwride","overwrite"],["overwriteable","overwritable"],["overwriten","overwritten"],["overwritren","overwritten"],["overwrittes","overwrites"],["overwrittin","overwriting"],["overwritting","overwriting"],["ovewrite","overwrite"],["ovewrites","overwrites"],["ovewriting","overwriting"],["ovewritten","overwritten"],["ovewrote","overwrote"],["ovride","override"],["ovrides","overrides"],["ovrlapped","overlapped"],["ovrridable","overridable"],["ovrridables","overridables"],["ovrwrt","overwrite"],["ovservable","observable"],["ovservation","observation"],["ovserve","observe"],["ovveride","override"],["ovverridden","overridden"],["ovverride","override"],["ovverrides","overrides"],["ovverriding","overriding"],["owener","owner"],["owerflow","overflow"],["owerflowed","overflowed"],["owerflowing","overflowing"],["owerflows","overflows"],["owership","ownership"],["owervrite","overwrite"],["owervrites","overwrites"],["owerwrite","overwrite"],["owerwrites","overwrites"],["owful","awful"],["ownder","owner"],["ownerhsip","ownership"],["ownner","owner"],["ownward","onward"],["ownwer","owner"],["ownwership","ownership"],["owrk","work"],["owudl","would"],["oxigen","oxygen"],["oximoron","oxymoron"],["oxzillary","auxiliary"],["oyu","you"],["p0enis","penis"],["paackage","package"],["pacakge","package"],["pacakges","packages"],["pacakging","packaging"],["paceholder","placeholder"],["pachage","package"],["paches","patches"],["pacht","patch"],["pachtches","patches"],["pachtes","patches"],["pacjage","package"],["pacjages","packages"],["packacge","package"],["packaeg","package"],["packaege","package"],["packaeges","packages"],["packaegs","packages"],["packag","package"],["packags","packages"],["packaing","packaging"],["packats","packets"],["packege","package"],["packge","package"],["packged","packaged"],["packgement","packaging"],["packges'","packages'"],["packges","packages"],["packgs","packages"],["packhage","package"],["packhages","packages"],["packtes","packets"],["pactch","patch"],["pactched","patched"],["pactches","patches"],["padam","param"],["padds","pads"],["pading","padding"],["paermission","permission"],["paermissions","permissions"],["paeth","path"],["pagagraph","paragraph"],["pahses","phases"],["paide","paid"],["painiting","painting"],["paintile","painttile"],["paintin","painting"],["paitience","patience"],["paiting","painting"],["pakage","package"],["pakageimpl","packageimpl"],["pakages","packages"],["pakcage","package"],["paket","packet"],["pakge","package"],["pakvage","package"],["palatte","palette"],["paleolitic","paleolithic"],["palete","palette"],["paliamentarian","parliamentarian"],["Palistian","Palestinian"],["Palistinian","Palestinian"],["Palistinians","Palestinians"],["pallete","palette"],["pallette","palette"],["palletted","paletted"],["paltette","palette"],["paltform","platform"],["pamflet","pamphlet"],["pamplet","pamphlet"],["paniced","panicked"],["panicing","panicking"],["pannel","panel"],["pannels","panels"],["pantomine","pantomime"],["paoition","position"],["paor","pair"],["Papanicalou","Papanicolaou"],["paradime","paradigm"],["paradym","paradigm"],["paraemeter","parameter"],["paraemeters","parameters"],["paraeters","parameters"],["parafanalia","paraphernalia"],["paragaph","paragraph"],["paragaraph","paragraph"],["paragarapha","paragraph"],["paragarph","paragraph"],["paragarphs","paragraphs"],["paragph","paragraph"],["paragpraph","paragraph"],["paragraphy","paragraph"],["paragrphs","paragraphs"],["parahaps","perhaps"],["paralel","parallel"],["paralelising","parallelising"],["paralelism","parallelism"],["paralelizing","parallelizing"],["paralell","parallel"],["paralelle","parallel"],["paralellism","parallelism"],["paralellization","parallelization"],["paralelly","parallelly"],["paralely","parallelly"],["paralle","parallel"],["parallell","parallel"],["parallely","parallelly"],["paralles","parallels"],["parallization","parallelization"],["parallize","parallelize"],["parallized","parallelized"],["parallizes","parallelizes"],["parallizing","parallelizing"],["paralllel","parallel"],["paralllels","parallels"],["paramameter","parameter"],["paramameters","parameters"],["paramater","parameter"],["paramaters","parameters"],["paramemeter","parameter"],["paramemeters","parameters"],["paramemter","parameter"],["paramemters","parameters"],["paramenet","parameter"],["paramenets","parameters"],["paramenter","parameter"],["paramenters","parameters"],["paramer","parameter"],["paramert","parameter"],["paramerters","parameters"],["paramerts","parameters"],["paramete","parameter"],["parameteras","parameters"],["parameteres","parameters"],["parameterical","parametrical"],["parameterts","parameters"],["parametes","parameters"],["parametised","parametrised"],["parametr","parameter"],["parametre","parameter"],["parametreless","parameterless"],["parametres","parameters"],["parametrs","parameters"],["parametter","parameter"],["parametters","parameters"],["paramss","params"],["paramter","parameter"],["paramterer","parameter"],["paramterers","parameters"],["paramteres","parameters"],["paramterize","parameterize"],["paramterless","parameterless"],["paramters","parameters"],["paramtrical","parametrical"],["parana","piranha"],["paraniac","paranoiac"],["paranoya","paranoia"],["parant","parent"],["parantheses","parentheses"],["paranthesis","parenthesis"],["parants","parents"],["paraphanalia","paraphernalia"],["paraphenalia","paraphernalia"],["pararagraph","paragraph"],["pararaph","paragraph"],["parareter","parameter"],["parargaph","paragraph"],["parargaphs","paragraphs"],["pararmeter","parameter"],["pararmeters","parameters"],["parastic","parasitic"],["parastics","parasitics"],["paratheses","parentheses"],["paratmers","parameters"],["paravirutalisation","paravirtualisation"],["paravirutalise","paravirtualise"],["paravirutalised","paravirtualised"],["paravirutalization","paravirtualization"],["paravirutalize","paravirtualize"],["paravirutalized","paravirtualized"],["parctical","practical"],["parctically","practically"],["pard","part"],["parellelogram","parallelogram"],["parellels","parallels"],["parem","param"],["paremeter","parameter"],["paremeters","parameters"],["paremter","parameter"],["paremters","parameters"],["parenthese","parentheses"],["parenthesed","parenthesized"],["parenthesies","parentheses"],["parenthises","parentheses"],["parenthsis","parenthesis"],["parge","large"],["parial","partial"],["parially","partially"],["paricular","particular"],["paricularly","particularly"],["parisitic","parasitic"],["paritally","partially"],["paritals","partials"],["paritial","partial"],["parition","partition"],["paritioning","partitioning"],["paritions","partitions"],["paritition","partition"],["parititioned","partitioned"],["parititioner","partitioner"],["parititiones","partitions"],["parititioning","partitioning"],["parititions","partitions"],["paritiy","parity"],["parituclar","particular"],["parliment","parliament"],["parmaeter","parameter"],["parmaeters","parameters"],["parmameter","parameter"],["parmameters","parameters"],["parmaters","parameters"],["parmeter","parameter"],["parmeters","parameters"],["parmter","parameter"],["parmters","parameters"],["parnoia","paranoia"],["parnter","partner"],["parntered","partnered"],["parntering","partnering"],["parnters","partners"],["parntership","partnership"],["parnterships","partnerships"],["parrakeets","parakeets"],["parralel","parallel"],["parrallel","parallel"],["parrallell","parallel"],["parrallelly","parallelly"],["parrallely","parallelly"],["parrent","parent"],["parseing","parsing"],["parsering","parsing"],["parsin","parsing"],["parstree","parse tree"],["partaining","pertaining"],["partcular","particular"],["partcularity","particularity"],["partcularly","particularly"],["parth","path"],["partialy","partially"],["particalar","particular"],["particalarly","particularly"],["particale","particle"],["particales","particles"],["partically","partially"],["particals","particles"],["particaluar","particular"],["particaluarly","particularly"],["particalur","particular"],["particalurly","particularly"],["particant","participant"],["particaular","particular"],["particaularly","particularly"],["particaulr","particular"],["particaulrly","particularly"],["particlar","particular"],["particlars","particulars"],["particually","particularly"],["particualr","particular"],["particuar","particular"],["particuarly","particularly"],["particulaly","particularly"],["particularily","particularly"],["particulary","particularly"],["particuliar","particular"],["partifular","particular"],["partiiton","partition"],["partiitoned","partitioned"],["partiitoning","partitioning"],["partiitons","partitions"],["partioned","partitioned"],["partirion","partition"],["partirioned","partitioned"],["partirioning","partitioning"],["partirions","partitions"],["partision","partition"],["partisioned","partitioned"],["partisioning","partitioning"],["partisions","partitions"],["partitial","partial"],["partiticipant","participant"],["partiticipants","participants"],["partiticular","particular"],["partitinioning","partitioning"],["partitioing","partitioning"],["partitiones","partitions"],["partitionned","partitioned"],["partitionning","partitioning"],["partitionns","partitions"],["partitionss","partitions"],["partiton","partition"],["partitoned","partitioned"],["partitoning","partitioning"],["partitons","partitions"],["partiula","particular"],["partiular","particular"],["partiularly","particularly"],["partiulars","particulars"],["pasengers","passengers"],["paser","parser"],["pasesd","passed"],["pash","hash"],["pasitioning","positioning"],["pasive","passive"],["pasre","parse"],["pasred","parsed"],["pasres","parses"],["passerbys","passersby"],["passin","passing"],["passiv","passive"],["passowrd","password"],["passs","pass"],["passsed","passed"],["passsing","passing"],["passthrought","passthrough"],["passthruogh","passthrough"],["passtime","pastime"],["passtrough","passthrough"],["passwird","password"],["passwirds","passwords"],["passwrod","password"],["passwrods","passwords"],["pasteing","pasting"],["pasttime","pastime"],["pastural","pastoral"],["pasword","password"],["paswords","passwords"],["patameter","parameter"],["patameters","parameters"],["patcket","packet"],["patckets","packets"],["patern","pattern"],["paterns","patterns"],["pathalogical","pathological"],["pathame","pathname"],["pathames","pathnames"],["pathane","pathname"],["pathced","patched"],["pathes","paths"],["pathign","pathing"],["pathnme","pathname"],["patholgoical","pathological"],["patial","spatial"],["paticular","particular"],["paticularly","particularly"],["patition","partition"],["pattented","patented"],["pattersn","patterns"],["pavillion","pavilion"],["pavillions","pavilions"],["pa\xEDnt","paint"],["pblisher","publisher"],["pbulisher","publisher"],["peacd","peace"],["peacefuland","peaceful and"],["peacify","pacify"],["peageant","pageant"],["peaple","people"],["peaples","peoples"],["pecentage","percentage"],["pecularities","peculiarities"],["pecularity","peculiarity"],["peculure","peculiar"],["pedestrain","pedestrian"],["peding","pending"],["pedning","pending"],["pefer","prefer"],["peferable","preferable"],["peferably","preferably"],["pefered","preferred"],["peference","preference"],["peferences","preferences"],["peferential","preferential"],["peferentially","preferentially"],["peferred","preferred"],["peferring","preferring"],["pefers","prefers"],["peform","perform"],["peformance","performance"],["peformed","performed"],["peforming","performing"],["pege","page"],["pehaps","perhaps"],["peice","piece"],["peicemeal","piecemeal"],["peices","pieces"],["peirod","period"],["peirodical","periodical"],["peirodicals","periodicals"],["peirods","periods"],["penalities","penalties"],["penality","penalty"],["penatly","penalty"],["pendantic","pedantic"],["pendig","pending"],["pendning","pending"],["penerator","penetrator"],["penisula","peninsula"],["penisular","peninsular"],["pennal","panel"],["pennals","panels"],["penninsula","peninsula"],["penninsular","peninsular"],["pennisula","peninsula"],["Pennyslvania","Pennsylvania"],["pensinula","peninsula"],["pensle","pencil"],["penultimante","penultimate"],["peom","poem"],["peoms","poems"],["peopel","people"],["peopels","peoples"],["peopl","people"],["peotry","poetry"],["pepare","prepare"],["peprocessor","preprocessor"],["per-interpeter","per-interpreter"],["perade","parade"],["peraphs","perhaps"],["percentange","percentage"],["percentanges","percentages"],["percentil","percentile"],["percepted","perceived"],["percetage","percentage"],["percetages","percentages"],["percievable","perceivable"],["percievabley","perceivably"],["percievably","perceivably"],["percieve","perceive"],["percieved","perceived"],["percise","precise"],["percisely","precisely"],["percision","precision"],["perenially","perennially"],["peretrator","perpetrator"],["perfec","perfect"],["perfecct","perfect"],["perfecctly","perfectly"],["perfeclty","perfectly"],["perfecly","perfectly"],["perfectably","perfectly"],["perfer","prefer"],["perferable","preferable"],["perferably","preferably"],["perferance","preference"],["perferances","preferences"],["perferct","perfect"],["perferctly","perfectly"],["perferect","perfect"],["perferectly","perfectly"],["perfered","preferred"],["perference","preference"],["perferences","preferences"],["perferm","perform"],["perfermance","performance"],["perfermances","performances"],["perfermence","performance"],["perfermences","performances"],["perferr","prefer"],["perferrable","preferable"],["perferrably","preferably"],["perferrance","preference"],["perferrances","preferences"],["perferred","preferred"],["perferrence","preference"],["perferrences","preferences"],["perferrm","perform"],["perferrmance","performance"],["perferrmances","performances"],["perferrmence","performance"],["perferrmences","performances"],["perferrs","prefers"],["perfers","prefers"],["perfix","prefix"],["perfmormance","performance"],["perfoem","perform"],["perfoemamce","performance"],["perfoemamces","performances"],["perfoemance","performance"],["perfoemanse","performance"],["perfoemanses","performances"],["perfoemant","performant"],["perfoemative","performative"],["perfoemed","performed"],["perfoemer","performer"],["perfoemers","performers"],["perfoeming","performing"],["perfoemnace","performance"],["perfoemnaces","performances"],["perfoems","performs"],["perfom","perform"],["perfomamce","performance"],["perfomamces","performances"],["perfomance","performance"],["perfomanse","performance"],["perfomanses","performances"],["perfomant","performant"],["perfomative","performative"],["perfome","perform"],["perfomeamce","performance"],["perfomeamces","performances"],["perfomeance","performance"],["perfomeanse","performance"],["perfomeanses","performances"],["perfomeant","performant"],["perfomeative","performative"],["perfomed","performed"],["perfomeed","performed"],["perfomeer","performer"],["perfomeers","performers"],["perfomeing","performing"],["perfomenace","performance"],["perfomenaces","performances"],["perfomer","performer"],["perfomers","performers"],["perfomes","performs"],["perfoming","performing"],["perfomnace","performance"],["perfomnaces","performances"],["perfomr","perform"],["perfomramce","performance"],["perfomramces","performances"],["perfomrance","performance"],["perfomranse","performance"],["perfomranses","performances"],["perfomrant","performant"],["perfomrative","performative"],["perfomred","performed"],["perfomrer","performer"],["perfomrers","performers"],["perfomring","performing"],["perfomrnace","performance"],["perfomrnaces","performances"],["perfomrs","performs"],["perfoms","performs"],["perfor","perform"],["perforam","perform"],["perforamed","performed"],["perforaming","performing"],["perforamnce","performance"],["perforamnces","performances"],["perforams","performs"],["perford","performed"],["perforemd","performed"],["performace","performance"],["performaed","performed"],["performamce","performance"],["performane","performance"],["performence","performance"],["performnace","performance"],["perfors","performs"],["perfro","perform"],["perfrom","perform"],["perfromance","performance"],["perfromed","performed"],["perfroming","performing"],["perfroms","performs"],["perhabs","perhaps"],["perhas","perhaps"],["perhasp","perhaps"],["perheaps","perhaps"],["perhpas","perhaps"],["peridic","periodic"],["perihperal","peripheral"],["perihperals","peripherals"],["perimetre","perimeter"],["perimetres","perimeters"],["periode","period"],["periodicaly","periodically"],["periodioc","periodic"],["peripathetic","peripatetic"],["peripherial","peripheral"],["peripherials","peripherals"],["perisist","persist"],["perisisted","persisted"],["perisistent","persistent"],["peristent","persistent"],["perjery","perjury"],["perjorative","pejorative"],["perlciritc","perlcritic"],["permable","permeable"],["permament","permanent"],["permamently","permanently"],["permanant","permanent"],["permanantly","permanently"],["permanentely","permanently"],["permanenty","permanently"],["permantly","permanently"],["permenant","permanent"],["permenantly","permanently"],["permessioned","permissioned"],["permision","permission"],["permisions","permissions"],["permisison","permission"],["permisisons","permissions"],["permissable","permissible"],["permissiosn","permissions"],["permisson","permission"],["permissons","permissions"],["permisssion","permission"],["permisssions","permissions"],["permited","permitted"],["permition","permission"],["permitions","permissions"],["permmission","permission"],["permmissions","permissions"],["permormance","performance"],["permssion","permission"],["permssions","permissions"],["permuatate","permutate"],["permuatated","permutated"],["permuatates","permutates"],["permuatating","permutating"],["permuatation","permutation"],["permuatations","permutations"],["permuation","permutation"],["permuations","permutations"],["permutaion","permutation"],["permutaions","permutations"],["permution","permutation"],["permutions","permutations"],["peroendicular","perpendicular"],["perogative","prerogative"],["peroid","period"],["peroidic","periodic"],["peroidical","periodical"],["peroidically","periodically"],["peroidicals","periodicals"],["peroidicity","periodicity"],["peroids","periods"],["peronal","personal"],["peroperly","properly"],["perosnality","personality"],["perpandicular","perpendicular"],["perpandicularly","perpendicularly"],["perperties","properties"],["perpertrated","perpetrated"],["perperty","property"],["perphas","perhaps"],["perpindicular","perpendicular"],["perpsective","perspective"],["perpsectives","perspectives"],["perrror","perror"],["persan","person"],["persepctive","perspective"],["persepective","perspective"],["persepectives","perspectives"],["perserve","preserve"],["perserved","preserved"],["perserverance","perseverance"],["perservere","persevere"],["perservered","persevered"],["perserveres","perseveres"],["perservering","persevering"],["perserves","preserves"],["perserving","preserving"],["perseverence","perseverance"],["persisit","persist"],["persisited","persisted"],["persistance","persistence"],["persistant","persistent"],["persistantly","persistently"],["persisten","persistent"],["persistented","persisted"],["persited","persisted"],["persitent","persistent"],["personalitie","personality"],["personalitites","personalities"],["personalitity","personality"],["personalitys","personalities"],["personaly","personally"],["personell","personnel"],["personnal","personal"],["personnaly","personally"],["personnell","personnel"],["perspecitve","perspective"],["persuded","persuaded"],["persue","pursue"],["persued","pursued"],["persuing","pursuing"],["persuit","pursuit"],["persuits","pursuits"],["persumably","presumably"],["perticular","particular"],["perticularly","particularly"],["perticulars","particulars"],["pertrub","perturb"],["pertrubation","perturbation"],["pertrubations","perturbations"],["pertrubing","perturbing"],["pertub","perturb"],["pertubate","perturb"],["pertubated","perturbed"],["pertubates","perturbs"],["pertubation","perturbation"],["pertubations","perturbations"],["pertubing","perturbing"],["perturbate","perturb"],["perturbates","perturbs"],["pervious","previous"],["perviously","previously"],["pessiary","pessary"],["petetion","petition"],["pevent","prevent"],["pevents","prevents"],["pezier","bezier"],["phanthom","phantom"],["Pharoah","Pharaoh"],["phasepsace","phasespace"],["phasis","phases"],["phenomenom","phenomenon"],["phenomenonal","phenomenal"],["phenomenonly","phenomenally"],["phenomonenon","phenomenon"],["phenomonon","phenomenon"],["phenonmena","phenomena"],["pheriparials","peripherals"],["Philipines","Philippines"],["philisopher","philosopher"],["philisophical","philosophical"],["philisophy","philosophy"],["Phillipine","Philippine"],["phillipines","philippines"],["Phillippines","Philippines"],["phillosophically","philosophically"],["philospher","philosopher"],["philosphies","philosophies"],["philosphy","philosophy"],["phisical","physical"],["phisically","physically"],["phisicaly","physically"],["phisics","physics"],["phisosophy","philosophy"],["Phonecian","Phoenecian"],["phoneticly","phonetically"],["phongraph","phonograph"],["phote","photo"],["photografic","photographic"],["photografical","photographical"],["photografy","photography"],["photograpic","photographic"],["photograpical","photographical"],["phsical","physical"],["phsyically","physically"],["phtread","pthread"],["phtreads","pthreads"],["phyiscal","physical"],["phyiscally","physically"],["phyiscs","physics"],["phylosophical","philosophical"],["physcial","physical"],["physial","physical"],["physicaly","physically"],["physisist","physicist"],["phython","python"],["phyton","python"],["phy_interace","phy_interface"],["piblisher","publisher"],["pice","piece"],["picoseond","picosecond"],["picoseonds","picoseconds"],["piggypack","piggyback"],["piggypacked","piggybacked"],["pilgrimmage","pilgrimage"],["pilgrimmages","pilgrimages"],["pimxap","pixmap"],["pimxaps","pixmaps"],["pinapple","pineapple"],["pinnaple","pineapple"],["pinoneered","pioneered"],["piont","point"],["pionter","pointer"],["pionts","points"],["piority","priority"],["pipeine","pipeline"],["pipeines","pipelines"],["pipelien","pipeline"],["pipeliens","pipelines"],["pipelin","pipeline"],["pipelinining","pipelining"],["pipelins","pipelines"],["pipepline","pipeline"],["pipeplines","pipelines"],["pipiline","pipeline"],["pipilines","pipelines"],["pipleine","pipeline"],["pipleines","pipelines"],["pipleline","pipeline"],["piplelines","pipelines"],["pitty","pity"],["pivott","pivot"],["pivotting","pivoting"],["pixes","pixels"],["placeemnt","placement"],["placeemnts","placements"],["placehoder","placeholder"],["placeholde","placeholder"],["placeholdes","placeholders"],["placeholer","placeholder"],["placeholers","placeholders"],["placemenet","placement"],["placemenets","placements"],["placholder","placeholder"],["placholders","placeholders"],["placmenet","placement"],["placmenets","placements"],["plaform","platform"],["plaforms","platforms"],["plaftorm","platform"],["plaftorms","platforms"],["plagarism","plagiarism"],["plalform","platform"],["plalforms","platforms"],["planation","plantation"],["plantext","plaintext"],["plantiff","plaintiff"],["plasement","placement"],["plasements","placements"],["plateu","plateau"],["platfarm","platform"],["platfarms","platforms"],["platfform","platform"],["platfforms","platforms"],["platflorm","platform"],["platflorms","platforms"],["platfoem","platform"],["platfom","platform"],["platfomr","platform"],["platfomrs","platforms"],["platfoms","platforms"],["platform-spacific","platform-specific"],["platforma","platforms"],["platformt","platforms"],["platfrom","platform"],["platfroms","platforms"],["plathome","platform"],["platofmr","platform"],["platofmrs","platforms"],["platofms","platforms"],["platofmss","platforms"],["platoform","platform"],["platoforms","platforms"],["platofrm","platform"],["platofrms","platforms"],["plattform","platform"],["plattforms","platforms"],["plausability","plausibility"],["plausable","plausible"],["playble","playable"],["playge","plague"],["playgerise","plagiarise"],["playgerize","plagiarize"],["playgropund","playground"],["playist","playlist"],["playists","playlists"],["playright","playwright"],["playwrite","playwright"],["playwrites","playwrights"],["plcae","place"],["plcaebo","placebo"],["plcaed","placed"],["plcaeholder","placeholder"],["plcaeholders","placeholders"],["plcaement","placement"],["plcaements","placements"],["plcaes","places"],["pleaase","please"],["pleacing","placing"],["pleae","please"],["pleaee","please"],["pleaes","please"],["pleasd","pleased"],["pleasent","pleasant"],["pleasently","pleasantly"],["plebicite","plebiscite"],["plecing","placing"],["plent","plenty"],["plesae","please"],["plesant","pleasant"],["plese","please"],["plesently","pleasantly"],["pliars","pliers"],["pllatforms","platforms"],["ploted","plotted"],["ploting","plotting"],["ploynomial","polynomial"],["ploynomials","polynomials"],["pltform","platform"],["pltforms","platforms"],["plugable","pluggable"],["pluged","plugged"],["pluign","plugin"],["pluigns","plugins"],["pluse","pulse"],["plyotropy","pleiotropy"],["pobular","popular"],["pobularity","popularity"],["podule","module"],["poenis","penis"],["poential","potential"],["poentially","potentially"],["poentials","potentials"],["poeoples","peoples"],["poeple","people"],["poety","poetry"],["pogress","progress"],["poicies","policies"],["poicy","policy"],["poiint","point"],["poiints","points"],["poind","point"],["poindcloud","pointcloud"],["poiner","pointer"],["poing","point"],["poinits","points"],["poinnter","pointer"],["poins","points"],["pointeres","pointers"],["pointes","points"],["pointetr","pointer"],["pointetrs","pointers"],["pointeur","pointer"],["pointseta","poinsettia"],["pointss","points"],["pointzer","pointer"],["poinyent","poignant"],["poisin","poison"],["poisition","position"],["poisitioned","positioned"],["poisitioning","positioning"],["poisitionning","positioning"],["poisitions","positions"],["poistion","position"],["poistioned","positioned"],["poistioning","positioning"],["poistions","positions"],["poistive","positive"],["poistively","positively"],["poistives","positives"],["poistivly","positively"],["poit","point"],["poitd","pointed"],["poited","pointed"],["poiter","pointer"],["poiters","pointers"],["poiting","pointing"],["poitless","pointless"],["poitlessly","pointlessly"],["poitn","point"],["poitnd","pointed"],["poitned","pointed"],["poitner","pointer"],["poitnes","points"],["poitning","pointing"],["poitns","points"],["poits","points"],["poiunter","pointer"],["poject","project"],["pojecting","projecting"],["pojnt","point"],["pojrect","project"],["pojrected","projected"],["pojrecting","projecting"],["pojrection","projection"],["pojrections","projections"],["pojrector","projector"],["pojrectors","projectors"],["pojrects","projects"],["poket","pocket"],["polariy","polarity"],["polgon","polygon"],["polgons","polygons"],["polical","political"],["policiy","policy"],["poligon","polygon"],["poligons","polygons"],["polinator","pollinator"],["polinators","pollinators"],["politican","politician"],["politicans","politicians"],["politicing","politicking"],["pollenate","pollinate"],["polltry","poultry"],["polocies","policies"],["polocy","policy"],["polocys","policies"],["pologon","polygon"],["pologons","polygons"],["polotic","politic"],["polotical","political"],["polotics","politics"],["poltical","political"],["poltry","poultry"],["polute","pollute"],["poluted","polluted"],["polutes","pollutes"],["poluting","polluting"],["polution","pollution"],["polyar","polar"],["polyedral","polyhedral"],["polygond","polygons"],["polygone","polygon"],["polymorpic","polymorphic"],["polynomal","polynomial"],["polynomals","polynomials"],["polyphonyic","polyphonic"],["polypoygon","polypolygon"],["polypoylgons","polypolygons"],["polysaccaride","polysaccharide"],["polysaccharid","polysaccharide"],["pomegranite","pomegranate"],["pomotion","promotion"],["pompay","Pompeii"],["ponint","point"],["poninted","pointed"],["poninter","pointer"],["poninting","pointing"],["ponints","points"],["ponit","point"],["ponitd","pointed"],["ponited","pointed"],["poniter","pointer"],["poniters","pointers"],["ponits","points"],["pont","point"],["pontential","potential"],["ponter","pointer"],["ponting","pointing"],["ponts","points"],["pontuation","punctuation"],["pooint","point"],["poointed","pointed"],["poointer","pointer"],["pooints","points"],["poost","post"],["poperee","potpourri"],["poperties","properties"],["popoen","popen"],["popolate","populate"],["popolated","populated"],["popolates","populates"],["popolating","populating"],["poportional","proportional"],["popoulation","population"],["popoup","popup"],["poppup","popup"],["popularaty","popularity"],["populare","popular"],["populer","popular"],["popullate","populate"],["popullated","populated"],["popuplar","popular"],["popuplarity","popularity"],["popuplate","populate"],["popuplated","populated"],["popuplates","populates"],["popuplating","populating"],["popuplation","population"],["porbably","probably"],["porblem","problem"],["porblems","problems"],["porcess","process"],["porcessed","processed"],["porcesses","processes"],["porcessing","processing"],["porcessor","processor"],["porcessors","processors"],["porgram","program"],["porgrammeer","programmer"],["porgrammeers","programmers"],["porgramming","programming"],["porgrams","programs"],["poriferal","peripheral"],["porject","project"],["porjection","projection"],["porjects","projects"],["porotocol","protocol"],["porotocols","protocols"],["porperties","properties"],["porperty","property"],["porportion","proportion"],["porportional","proportional"],["porportionally","proportionally"],["porportioning","proportioning"],["porportions","proportions"],["porsalin","porcelain"],["porshan","portion"],["porshon","portion"],["portait","portrait"],["portaits","portraits"],["portayed","portrayed"],["portected","protected"],["portguese","Portuguese"],["portioon","portion"],["portraing","portraying"],["portugese","Portuguese"],["portuguease","Portuguese"],["portugues","Portuguese"],["porve","prove"],["porved","proved"],["porven","proven"],["porves","proves"],["porvide","provide"],["porvided","provided"],["porvider","provider"],["porvides","provides"],["porviding","providing"],["porvids","provides"],["porving","proving"],["posative","positive"],["posatives","positives"],["posativity","positivity"],["poseesions","possessions"],["posess","possess"],["posessed","possessed"],["posesses","possesses"],["posessing","possessing"],["posession","possession"],["posessions","possessions"],["posibilities","possibilities"],["posibility","possibility"],["posibilties","possibilities"],["posible","possible"],["posiblity","possibility"],["posibly","possibly"],["posiitive","positive"],["posiitives","positives"],["posiitivity","positivity"],["posisition","position"],["posisitioned","positioned"],["posistion","position"],["positionn","position"],["positionned","positioned"],["positionnes","positions"],["positionning","positioning"],["positionns","positions"],["positiv","positive"],["positivie","positive"],["positivies","positives"],["positivly","positively"],["positoin","position"],["positoined","positioned"],["positoins","positions"],["positonal","positional"],["positoned","positioned"],["positoning","positioning"],["positve","positive"],["positves","positives"],["POSIX-complient","POSIX-compliant"],["pospone","postpone"],["posponed","postponed"],["posption","position"],["possabilites","possibilities"],["possabilities","possibilities"],["possability","possibility"],["possabilties","possibilities"],["possabily","possibly"],["possable","possible"],["possably","possibly"],["possbily","possibly"],["possble","possible"],["possbly","possibly"],["posseses","possesses"],["possesing","possessing"],["possesion","possession"],["possesive","possessive"],["possessess","possesses"],["possiable","possible"],["possibbe","possible"],["possibe","possible"],["possibile","possible"],["possibilies","possibilities"],["possibilites","possibilities"],["possibilitities","possibilities"],["possibiliy","possibility"],["possibillity","possibility"],["possibilties","possibilities"],["possibilty","possibility"],["possibily","possibly"],["possibities","possibilities"],["possibity","possibility"],["possiblble","possible"],["possiblec","possible"],["possiblely","possibly"],["possiblility","possibility"],["possiblilty","possibility"],["possiblities","possibilities"],["possiblity","possibility"],["possiblly","possibly"],["possilbe","possible"],["possily","possibly"],["possition","position"],["possitive","positive"],["possitives","positives"],["possobily","possibly"],["possoble","possible"],["possobly","possibly"],["posssible","possible"],["post-morten","post-mortem"],["post-proces","post-process"],["post-procesing","post-processing"],["postcondtion","postcondition"],["postcondtions","postconditions"],["Postdam","Potsdam"],["postgress","PostgreSQL"],["postgressql","PostgreSQL"],["postgrsql","PostgreSQL"],["posthomous","posthumous"],["postiional","positional"],["postiive","positive"],["postincremend","postincrement"],["postion","position"],["postioned","positioned"],["postions","positions"],["postition","position"],["postitive","positive"],["postitives","positives"],["postive","positive"],["postives","positives"],["postmage","postimage"],["postphoned","postponed"],["postpocessing","postprocessing"],["postponinig","postponing"],["postprocesing","postprocessing"],["postscritp","postscript"],["postulat","postulate"],["postuminus","posthumous"],["postumus","posthumous"],["potatoe","potato"],["potatos","potatoes"],["potencial","potential"],["potencially","potentially"],["potencials","potentials"],["potenial","potential"],["potenially","potentially"],["potentail","potential"],["potentailly","potentially"],["potentails","potentials"],["potental","potential"],["potentally","potentially"],["potentatially","potentially"],["potententially","potentially"],["potentiallly","potentially"],["potentialy","potentially"],["potentiel","potential"],["potentiomenter","potentiometer"],["potition","position"],["potocol","protocol"],["potrait","portrait"],["potrayed","portrayed"],["poulations","populations"],["pount","point"],["pounts","points"],["poupular","popular"],["poverful","powerful"],["poweful","powerful"],["powerfull","powerful"],["powerppc","powerpc"],["pozitive","positive"],["pozitively","positively"],["pozitives","positives"],["ppcheck","cppcheck"],["ppeline","pipeline"],["ppelines","pipelines"],["ppolygons","polygons"],["ppublisher","publisher"],["ppyint","pyint"],["praameter","parameter"],["praameters","parameters"],["prabability","probability"],["prabable","probable"],["prabably","probably"],["pracitcal","practical"],["pracitcally","practically"],["practial","practical"],["practially","practically"],["practicaly","practically"],["practicioner","practitioner"],["practicioners","practitioners"],["practicly","practically"],["practictitioner","practitioner"],["practictitioners","practitioners"],["practicval","practical"],["practioner","practitioner"],["practioners","practitioners"],["praefix","prefix"],["pragam","pragma"],["pragmato","pragma to"],["prairy","prairie"],["pramater","parameter"],["prameter","parameter"],["prameters","parameters"],["prarameter","parameter"],["prarameters","parameters"],["prarie","prairie"],["praries","prairies"],["pratical","practical"],["pratically","practically"],["pratice","practice"],["prcess","process"],["prcesses","processes"],["prcessing","processing"],["prcoess","process"],["prcoessed","processed"],["prcoesses","processes"],["prcoessing","processing"],["prctiles","percentiles"],["prdpagate","propagate"],["prdpagated","propagated"],["prdpagates","propagates"],["prdpagating","propagating"],["prdpagation","propagation"],["prdpagations","propagations"],["prdpagator","propagator"],["prdpagators","propagators"],["pre-condifure","pre-configure"],["pre-condifured","pre-configured"],["pre-confifure","pre-configure"],["pre-confifured","pre-configured"],["pre-confure","pre-configure"],["pre-confured","pre-configured"],["pre-congifure","pre-configure"],["pre-congifured","pre-configured"],["pre-defiend","pre-defined"],["pre-defiened","pre-defined"],["pre-empt","preempt"],["pre-pended","prepended"],["pre-pre-realease","pre-pre-release"],["pre-proces","pre-process"],["pre-procesing","pre-processing"],["pre-realease","pre-release"],["pre-registeres","pre-registers"],["prealocate","preallocate"],["prealocated","preallocated"],["prealocates","preallocates"],["prealocating","preallocating"],["preambule","preamble"],["preamle","preamble"],["preample","preamble"],["preaorocessing","preprocessing"],["preapared","prepared"],["preapre","prepare"],["preaprooved","preapproved"],["prebious","previous"],["precacheed","precached"],["precceding","preceding"],["precding","preceding"],["preced","precede"],["precedencs","precedence"],["precedessor","predecessor"],["preceds","precedes"],["preceision","precision"],["precence","presence"],["precendance","precedence"],["precendances","precedences"],["precende","precedence"],["precendece","precedence"],["precendeces","precedences"],["precendence","precedence"],["precendences","precedences"],["precendencies","precedences"],["precendent","precedent"],["precendes","precedences"],["precending","preceding"],["precends","precedence"],["precenences","preferences"],["precense","presence"],["precentage","percentage"],["precentile","percentile"],["precentiles","percentiles"],["precessing","processing"],["precice","precise"],["precicion","precision"],["precidence","precedence"],["precisily","precisely"],["precisionn","precision"],["precisision","precision"],["precisly","precisely"],["precison","precision"],["precize","precise"],["precomuted","precomputed"],["preconditoner","preconditioner"],["preconditoners","preconditioners"],["precondtion","precondition"],["precondtioner","preconditioner"],["precondtioners","preconditioners"],["precondtionner","preconditioner"],["precondtionners","preconditioners"],["precondtions","preconditions"],["preconfiged","preconfigured"],["precsions","precisions"],["precuation","precaution"],["preculde","preclude"],["preculded","precluded"],["preculdes","precludes"],["precumputed","precomputed"],["precurser","precursor"],["precussion","percussion"],["precussions","percussions"],["predecesor","predecessor"],["predecesors","predecessors"],["predeclarnig","predeclaring"],["predefiend","predefined"],["predefiened","predefined"],["predefiined","predefined"],["predefineds","predefined"],["predessor","predecessor"],["predfined","predefined"],["predicat","predicate"],["predicatble","predictable"],["predicitons","predictions"],["predictible","predictable"],["predifined","predefined"],["predomiantly","predominately"],["preeceding","preceding"],["preemptable","preemptible"],["preesnt","present"],["prefectches","prefetches"],["prefecth","prefetch"],["prefectly","perfectly"],["prefence","preference"],["prefences","preferences"],["preferance","preference"],["preferances","preferences"],["preferecne","preference"],["preferecnes","preferences"],["prefered","preferred"],["preferencfe","preference"],["preferencfes","preferences"],["preferes","prefers"],["prefering","preferring"],["prefernce","preference"],["prefernces","preferences"],["prefernec","preference"],["preferr","prefer"],["preferrable","preferable"],["preferrably","preferably"],["preferrence","preference"],["preferrences","preferences"],["preferrred","preferred"],["prefetchs","prefetches"],["prefex","prefix"],["preffer","prefer"],["prefferable","preferable"],["prefferably","preferably"],["preffered","preferred"],["preffix","prefix"],["preffixed","prefixed"],["preffixes","prefixes"],["preffixing","prefixing"],["prefices","prefixes"],["preformance","performance"],["preformances","performances"],["pregancies","pregnancies"],["prehaps","perhaps"],["preiod","period"],["preivew","preview"],["preivous","previous"],["prejected","projected"],["prejection","projection"],["prejections","projections"],["preliferation","proliferation"],["prelimitary","preliminary"],["premeire","premiere"],["premeired","premiered"],["premillenial","premillennial"],["preminence","preeminence"],["premission","permission"],["premit","permit"],["premits","permits"],["Premonasterians","Premonstratensians"],["premption","preemption"],["premptive","preemptive"],["premptively","preemptively"],["preocess","process"],["preocupation","preoccupation"],["preoperty","property"],["prepair","prepare"],["prepaired","prepared"],["prepand","prepend"],["preparetion","preparation"],["preparetions","preparations"],["prepartion","preparation"],["prepartions","preparations"],["prepate","prepare"],["prepated","prepared"],["prepates","prepares"],["prepatory","preparatory"],["prependet","prepended"],["prepented","prepended"],["preperation","preparation"],["preperations","preparations"],["preponderence","preponderance"],["preppend","prepend"],["preppended","prepended"],["preppendet","prepended"],["preppented","prepended"],["preprend","prepend"],["preprended","prepended"],["prepresent","represent"],["prepresented","represented"],["prepresents","represents"],["preproces","preprocess"],["preprocesing","preprocessing"],["preprocesor","preprocessor"],["preprocesser","preprocessor"],["preprocessers","preprocessors"],["preprocesssing","preprocessing"],["prequisite","prerequisite"],["prequisites","prerequisites"],["prerequesite","prerequisite"],["prerequesites","prerequisites"],["prerequisit","prerequisite"],["prerequisities","prerequisites"],["prerequisits","prerequisites"],["prerequiste","prerequisite"],["prerequsite","prerequisite"],["prerequsites","prerequisites"],["preriod","period"],["preriodic","periodic"],["prersistent","persistent"],["presance","presence"],["prescripe","prescribe"],["prescriped","prescribed"],["prescrition","prescription"],["prescritions","prescriptions"],["presearvation","preservation"],["presearvations","preservations"],["presearve","preserve"],["presearved","preserved"],["presearver","preserver"],["presearves","preserves"],["presearving","preserving"],["presedential","presidential"],["presenece","presence"],["presener","presenter"],["presense","presence"],["presentaion","presentation"],["presentaional","presentational"],["presentaions","presentations"],["presernt","present"],["preserrved","preserved"],["preserv","preserve"],["presetation","presentation"],["preseve","preserve"],["preseved","preserved"],["preseverance","perseverance"],["preseverence","perseverance"],["preseves","preserves"],["preseving","preserving"],["presicion","precision"],["presidenital","presidential"],["presidental","presidential"],["presist","persist"],["presistable","persistable"],["presistance","persistence"],["presistant","persistent"],["presistantly","persistently"],["presisted","persisted"],["presistence","persistence"],["presistency","persistency"],["presistent","persistent"],["presistently","persistently"],["presisting","persisting"],["presistion","precision"],["presists","persists"],["presitgious","prestigious"],["presmissions","permissions"],["presntation","presentation"],["presntations","presentations"],["prespective","perspective"],["presreved","preserved"],["pressent","present"],["pressentation","presentation"],["pressented","presented"],["pressre","pressure"],["pressue","pressure"],["pressues","pressures"],["prestigeous","prestigious"],["prestigous","prestigious"],["presuambly","presumably"],["presumabely","presumably"],["presumaby","presumably"],["presumebly","presumably"],["presumely","presumably"],["presumibly","presumably"],["pretaining","pertaining"],["pretect","protect"],["pretected","protected"],["pretecting","protecting"],["pretection","protection"],["pretects","protects"],["pretendend","pretended"],["pretty-printter","pretty-printer"],["preveiw","preview"],["preveiwed","previewed"],["preveiwer","previewer"],["preveiwers","previewers"],["preveiws","previews"],["prevelance","prevalence"],["prevelant","prevalent"],["preven","prevent"],["prevend","prevent"],["preverse","perverse"],["preverses","preserves"],["preverve","preserve"],["prevew","preview"],["prevews","previews"],["previewd","previewed"],["previious","previous"],["previlege","privilege"],["previoous","previous"],["previos","previous"],["previosly","previously"],["previosu","previous"],["previosuly","previously"],["previou","previous"],["previouls","previous"],["previoulsy","previously"],["previouly","previously"],["previouse","previous"],["previousl","previously"],["previousy","previously"],["previsou","previous"],["previsouly","previously"],["previuous","previous"],["previus","previous"],["previvous","previous"],["prevoius","previous"],["prevous","previous"],["prevously","previously"],["prewview","preview"],["prexisting","preexisting"],["prexixed","prefixed"],["prfer","prefer"],["prferable","preferable"],["prferables","preferable"],["prference","preference"],["prferred","preferred"],["prgram","program"],["priave","private"],["pricipal","principal"],["priciple","principle"],["priciples","principles"],["pricision","precision"],["priestood","priesthood"],["primaray","primary"],["primarely","primarily"],["primarly","primarily"],["primative","primitive"],["primatively","primitively"],["primatives","primitives"],["primay","primary"],["primeter","perimeter"],["primitave","primitive"],["primitiv","primitive"],["primitve","primitive"],["primitves","primitives"],["primive","primitive"],["primordal","primordial"],["princeple","principle"],["princeples","principles"],["princible","principle"],["principaly","principality"],["principial","principal"],["principlaity","principality"],["principly","principally"],["princliple","principle"],["prind","print"],["prinicipal","principal"],["prining","printing"],["printting","printing"],["prioirties","priorities"],["prioirty","priority"],["prioritiy","priority"],["priorization","prioritization"],["priorizations","prioritizations"],["priorty","priority"],["priot","prior"],["priotise","prioritise"],["priotised","prioritised"],["priotising","prioritising"],["priotities","priorities"],["priotitize","prioritize"],["priotity","priority"],["priotized","prioritized"],["priotizing","prioritizing"],["priots","priors"],["prirority","priority"],["pris","prise"],["priting","printing"],["privalege","privilege"],["privaleges","privileges"],["privaye","private"],["privcy","privacy"],["privde","provide"],["priveledge","privilege"],["priveledged","privileged"],["priveledges","privileges"],["privelege","privilege"],["priveleged","privileged"],["priveleges","privileges"],["privelige","privilege"],["priveliged","privileged"],["priveliges","privileges"],["privelleges","privileges"],["priviate","private"],["privide","provide"],["privided","provided"],["privides","provides"],["prividing","providing"],["priview","preview"],["privilage","privilege"],["privilaged","privileged"],["privilages","privileges"],["priviledge","privilege"],["priviledged","privileged"],["priviledges","privileges"],["privilidge","privilege"],["privilidged","privileged"],["privilidges","privileges"],["privilige","privilege"],["priviliged","privileged"],["priviliges","privileges"],["privious","previous"],["priviously","previously"],["privision","provision"],["privisional","provisional"],["privisions","provisions"],["privledge","privilege"],["privleges","privileges"],["privte","private"],["prject","project"],["prjecting","projecting"],["prjection","projection"],["prjections","projections"],["prjects","projects"],["prmitive","primitive"],["prmitives","primitives"],["prmopting","prompting"],["proable","probable"],["proably","probably"],["probabalistic","probabilistic"],["probabaly","probably"],["probabilaty","probability"],["probabilisitic","probabilistic"],["probabilites","probabilities"],["probabilty","probability"],["probablay","probably"],["probablistic","probabilistic"],["probablities","probabilities"],["probablity","probability"],["probablly","probably"],["probaby","probably"],["probalby","probably"],["probalibity","probability"],["probaly","probably"],["probbably","probably"],["probbailities","probabilities"],["probbaility","probability"],["probbaly","probably"],["probbed","probed"],["probblem","problem"],["probblems","problems"],["probblez","problem"],["probblezs","problems"],["probbly","probably"],["probelm","problem"],["probelmatic","problematic"],["probelms","problems"],["probem","problem"],["proberly","properly"],["problably","probably"],["problaem","problem"],["problaems","problems"],["problamatic","problematic"],["probleme","problem"],["problemes","problems"],["problimatic","problematic"],["problme","problem"],["problmes","problems"],["probly","probably"],["procceed","proceed"],["proccesor","processor"],["proccesors","processors"],["proccess","process"],["proccessed","processed"],["proccesses","processes"],["proccessing","processing"],["proccessor","processor"],["proccessors","processors"],["procecure","procedure"],["procecures","procedures"],["procedger","procedure"],["procedings","proceedings"],["procedre","procedure"],["procedres","procedures"],["proceedes","proceeds"],["proceedure","procedure"],["proceedures","procedures"],["proceeed","proceed"],["proceeeded","proceeded"],["proceeeding","proceeding"],["proceeeds","proceeds"],["proceeedures","procedures"],["procees","process"],["proceesed","processed"],["proceesor","processor"],["procelain","porcelain"],["procelains","porcelains"],["procentual","percentual"],["proces","process"],["procesed","processed"],["proceses","processes"],["proceshandler","processhandler"],["procesing","processing"],["procesor","processor"],["processeed","processed"],["processees","processes"],["processer","processor"],["processess","processes"],["processessing","processing"],["processig","processing"],["processinf","processing"],["processore","processor"],["processpr","processor"],["processsed","processed"],["processses","processes"],["processsing","processing"],["processsors","processors"],["procesure","procedure"],["procesures","procedures"],["procide","provide"],["procided","provided"],["procides","provides"],["proclaimation","proclamation"],["proclamed","proclaimed"],["proclaming","proclaiming"],["proclomation","proclamation"],["procoess","process"],["procoessed","processed"],["procoessing","processing"],["proctect","protect"],["proctected","protected"],["proctecting","protecting"],["proctects","protects"],["procteted","protected"],["procude","produce"],["procuded","produced"],["prodceding","proceeding"],["prodecure","procedure"],["producable","producible"],["producables","producible"],["produciton","production"],["producitons","productions"],["producted","produced"],["productiviy","productivity"],["produkt","product"],["produse","produce"],["prodused","produced"],["produses","produces"],["proedural","procedural"],["proedure","procedure"],["proedures","procedures"],["proejct","project"],["proejcted","projected"],["proejcting","projecting"],["proejction","projection"],["proepr","proper"],["proeprly","properly"],["proeprties","properties"],["proeprty","property"],["proerties","properties"],["proessing","processing"],["profesional","professional"],["profesionally","professionally"],["profesionals","professionals"],["profesor","professor"],["professer","professor"],["proffesed","professed"],["proffesion","profession"],["proffesional","professional"],["proffesor","professor"],["proffessor","professor"],["profie","profile"],["profied","profiled"],["profier","profiler"],["profies","profiles"],["profilic","prolific"],["profirle","profile"],["profirled","profiled"],["profirler","profiler"],["profirles","profiles"],["profissional","professional"],["proflie","profile"],["proflier","profiler"],["proflies","profiles"],["profling","profiling"],["profund","profound"],["profundly","profoundly"],["progagate","propagate"],["progagated","propagated"],["progagates","propagates"],["progagating","propagating"],["progagation","propagation"],["progagations","propagations"],["progagator","propagator"],["progagators","propagators"],["progam","program"],["progamability","programmability"],["progamable","programmable"],["progamatic","programmatic"],["progamatically","programmatically"],["progamed","programmed"],["progamer","programmer"],["progamers","programmers"],["progaming","programming"],["progamm","program"],["progammability","programmability"],["progammable","programmable"],["progammatic","programmatic"],["progammatically","programmatically"],["progammed","programmed"],["progammer","programmer"],["progammers","programmers"],["progamming","programming"],["progamms","programs"],["progams","programs"],["progapate","propagate"],["progapated","propagated"],["progapates","propagates"],["progapating","propagating"],["progapation","propagation"],["progapations","propagations"],["progapator","propagator"],["progapators","propagators"],["progaramm","program"],["progarammability","programmability"],["progarammable","programmable"],["progarammatic","programmatic"],["progarammatically","programmatically"],["progarammed","programmed"],["progarammer","programmer"],["progarammers","programmers"],["progaramming","programming"],["progaramms","programs"],["progarm","program"],["progarmability","programmability"],["progarmable","programmable"],["progarmatic","programmatic"],["progarmatically","programmatically"],["progarmed","programmed"],["progarmer","programmer"],["progarmers","programmers"],["progarming","programming"],["progarms","programs"],["progate","propagate"],["progated","propagated"],["progates","propagates"],["progating","propagating"],["progation","propagation"],["progations","propagations"],["progess","progress"],["progessbar","progressbar"],["progessed","progressed"],["progesses","progresses"],["progessive","progressive"],["progessor","progressor"],["progesss","progress"],["progesssive","progressive"],["progidy","prodigy"],["programable","programmable"],["programatic","programmatic"],["programatically","programmatically"],["programattically","programmatically"],["programd","programmed"],["programemer","programmer"],["programemers","programmers"],["programers","programmers"],["programmaticaly","programmatically"],["programmend","programmed"],["programmetically","programmatically"],["programmical","programmatical"],["programmign","programming"],["programmming","programming"],["programms","programs"],["progreess","progress"],["progres","progress"],["progresively","progressively"],["progresss","progress"],["progrewss","progress"],["progrmae","program"],["progrss","progress"],["prohabition","prohibition"],["prohibitted","prohibited"],["prohibitting","prohibiting"],["prohibt","prohibit"],["prohibted","prohibited"],["prohibting","prohibiting"],["prohibts","prohibits"],["proirity","priority"],["projct's","project's"],["projct","project"],["projction","projection"],["projctions","projections"],["projctor","projector"],["projctors","projectors"],["projcts","projects"],["projectd","projected"],["projectio","projection"],["projecttion","projection"],["projet","project"],["projetction","projection"],["projeted","projected"],["projeting","projecting"],["projets","projects"],["prolbems","problems"],["prolem","problem"],["prolematic","problematic"],["prolems","problems"],["prologomena","prolegomena"],["prominance","prominence"],["prominant","prominent"],["prominantly","prominently"],["promis","promise"],["promiscous","promiscuous"],["promiss","promise"],["promissed","promised"],["promisses","promises"],["promissing","promising"],["promixity","proximity"],["prommpt","prompt"],["prommpts","prompts"],["promotted","promoted"],["promprted","prompted"],["promps","prompts"],["promt","prompt"],["promts","prompts"],["pronnounced","pronounced"],["pronomial","pronominal"],["prononciation","pronunciation"],["pronouce","pronounce"],["pronouced","pronounced"],["pronounched","pronounced"],["pronounciation","pronunciation"],["pronunce","pronounce"],["proocecure","procedure"],["proocecures","procedures"],["proocedure","procedure"],["proocedures","procedures"],["proocess","process"],["proocessed","processed"],["proocesses","processes"],["proocessing","processing"],["proocol","protocol"],["proocols","protocols"],["prooduce","produce"],["prooduced","produced"],["prooduces","produces"],["prooduct","product"],["prooerties","properties"],["prooerty","property"],["prool","pool"],["prooof","proof"],["prooper","proper"],["prooperly","properly"],["prooperties","properties"],["prooperty","property"],["proose","propose"],["proosed","proposed"],["prooses","proposes"],["proove","prove"],["prooved","proved"],["prooven","proven"],["prooves","proves"],["prooving","proving"],["proovread","proofread"],["prooxies","proxies"],["prooxy","proxy"],["propably","probably"],["propage","propagate"],["propatagion","propagation"],["propator","propagator"],["propators","propagators"],["propbably","probably"],["propely","properly"],["propeoperties","properties"],["propereties","properties"],["properety","property"],["properies","properties"],["properites","properties"],["properities","properties"],["properries","properties"],["properrt","property"],["properrys","properties"],["propert","property"],["properteis","properties"],["propertery","property"],["propertion","proportion"],["propertional","proportional"],["propertions","proportions"],["propertise","properties"],["propertu","property"],["propertus","properties"],["propertys","properties"],["propertyst","properties"],["propeties","properties"],["propetry","property"],["propetrys","properties"],["propety","property"],["propetys","properties"],["propgated","propagated"],["prophacy","prophecy"],["propietary","proprietary"],["propietries","proprietaries"],["propietry","proprietary"],["propigate","propagate"],["propigation","propagation"],["proplem","problem"],["propmt","prompt"],["propmted","prompted"],["propmter","prompter"],["propmts","prompts"],["propoagate","propagate"],["propoerties","properties"],["propoerty","property"],["propoganda","propaganda"],["propogate","propagate"],["propogated","propagated"],["propogates","propagates"],["propogating","propagating"],["propogation","propagation"],["proporpotion","proportion"],["proporpotional","proportional"],["proportianal","proportional"],["proporties","properties"],["proportinal","proportional"],["proporty","property"],["propostion","proposition"],["proppely","properly"],["propper","proper"],["propperly","properly"],["propperties","properties"],["propperty","property"],["proprely","properly"],["propreties","properties"],["proprety","property"],["proprietory","proprietary"],["proproable","probable"],["proproably","probably"],["proprocessed","preprocessed"],["proprogate","propagate"],["proprogated","propagated"],["proprogates","propagates"],["proprogating","propagating"],["proprogation","propagation"],["proprogations","propagations"],["proprogator","propagator"],["proprogators","propagators"],["proproties","properties"],["proprotion","proportion"],["proprotional","proportional"],["proprotionally","proportionally"],["proprotions","proportions"],["proprty","property"],["propt","prompt"],["propteries","properties"],["propterties","properties"],["propterty","property"],["propvider","provider"],["prority","priority"],["prorotype","prototype"],["proseletyzing","proselytizing"],["prosess","process"],["prosessor","processor"],["protable","portable"],["protaganist","protagonist"],["protaganists","protagonists"],["protcol","protocol"],["protcols","protocols"],["protcool","protocol"],["protcools","protocols"],["protcted","protected"],["protecion","protection"],["protectiv","protective"],["protedcted","protected"],["protential","potential"],["protext","protect"],["protocal","protocol"],["protocals","protocols"],["protocl","protocol"],["protocls","protocols"],["protoco","protocol"],["protocoll","protocol"],["protocolls","protocols"],["protocos","protocols"],["protoganist","protagonist"],["protoge","protege"],["protol","protocol"],["protols","protocols"],["prototyes","prototypes"],["protoype","prototype"],["protoyped","prototyped"],["protoypes","prototypes"],["protoyping","prototyping"],["protoytpe","prototype"],["protoytpes","prototypes"],["protrait","portrait"],["protraits","portraits"],["protrayed","portrayed"],["protruberance","protuberance"],["protruberances","protuberances"],["prouncements","pronouncements"],["provacative","provocative"],["provded","provided"],["provder","provider"],["provdided","provided"],["provdie","provide"],["provdied","provided"],["provdies","provides"],["provding","providing"],["provences","provinces"],["provicde","provide"],["provicded","provided"],["provicdes","provides"],["provicial","provincial"],["provideres","providers"],["providewd","provided"],["providfers","providers"],["provieded","provided"],["proviedes","provides"],["provinicial","provincial"],["provisioing","provisioning"],["provisiong","provisioning"],["provisionging","provisioning"],["provisiosn","provision"],["provisonal","provisional"],["provive","provide"],["provived","provided"],["provives","provides"],["proviving","providing"],["provode","provide"],["provoded","provided"],["provoder","provider"],["provodes","provides"],["provoding","providing"],["provods","provides"],["provsioning","provisioning"],["proximty","proximity"],["prozess","process"],["prpeparations","preparations"],["prpose","propose"],["prposed","proposed"],["prposer","proposer"],["prposers","proposers"],["prposes","proposes"],["prposiing","proposing"],["prrcision","precision"],["prrottypes","prototypes"],["prset","preset"],["prsets","presets"],["prtinf","printf"],["prufe","proof"],["prviate","private"],["psaswd","passwd"],["pseude","pseudo"],["pseudononymous","pseudonymous"],["pseudonyn","pseudonym"],["pseudopoential","pseudopotential"],["pseudopoentials","pseudopotentials"],["pseudorinverse","pseudoinverse"],["pseuo-palette","pseudo-palette"],["psitoin","position"],["psitoined","positioned"],["psitoins","positions"],["psot","post"],["psots","posts"],["psrameter","parameter"],["pssed","passed"],["pssibility","possibility"],["psudo","pseudo"],["psudoinverse","pseudoinverse"],["psuedo","pseudo"],["psuedo-fork","pseudo-fork"],["psuedoinverse","pseudoinverse"],["psuedolayer","pseudolayer"],["psuh","push"],["psychadelic","psychedelic"],["psycology","psychology"],["psyhic","psychic"],["ptd","pdf"],["ptherad","pthread"],["ptherads","pthreads"],["pthon","python"],["pthred","pthread"],["pthreds","pthreads"],["ptorions","portions"],["ptrss","press"],["pubilsh","publish"],["pubilshed","published"],["pubilsher","publisher"],["pubilshers","publishers"],["pubilshing","publishing"],["pubish","publish"],["pubished","published"],["pubisher","publisher"],["pubishers","publishers"],["pubishing","publishing"],["publcation","publication"],["publcise","publicise"],["publcize","publicize"],["publiaher","publisher"],["publically","publicly"],["publicaly","publicly"],["publiched","published"],["publicher","publisher"],["publichers","publishers"],["publiches","publishes"],["publiching","publishing"],["publihsed","published"],["publihser","publisher"],["publised","published"],["publisehd","published"],["publisehr","publisher"],["publisehrs","publishers"],["publiser","publisher"],["publisers","publishers"],["publisged","published"],["publisger","publisher"],["publisgers","publishers"],["publishd","published"],["publisheed","published"],["publisherr","publisher"],["publishher","publisher"],["publishor","publisher"],["publishr","publisher"],["publishre","publisher"],["publishrs","publishers"],["publissher","publisher"],["publlisher","publisher"],["publsh","publish"],["publshed","published"],["publsher","publisher"],["publshers","publishers"],["publshing","publishing"],["publsih","publish"],["publsihed","published"],["publsiher","publisher"],["publsihers","publishers"],["publsihes","publishes"],["publsihing","publishing"],["publuc","public"],["publucation","publication"],["publush","publish"],["publusher","publisher"],["publushers","publishers"],["publushes","publishes"],["publushing","publishing"],["puchasing","purchasing"],["Pucini","Puccini"],["Puertorrican","Puerto Rican"],["Puertorricans","Puerto Ricans"],["pulisher","publisher"],["pullrequest","pull request"],["pullrequests","pull requests"],["pumkin","pumpkin"],["punctation","punctuation"],["puplar","popular"],["puplarity","popularity"],["puplate","populate"],["puplated","populated"],["puplates","populates"],["puplating","populating"],["puplation","population"],["puplisher","publisher"],["pupose","purpose"],["puposes","purposes"],["pupulated","populated"],["purcahed","purchased"],["purcahse","purchase"],["purgest","purges"],["puritannical","puritanical"],["purposedly","purposely"],["purpotedly","purportedly"],["purpse","purpose"],["pursuade","persuade"],["pursuaded","persuaded"],["pursuades","persuades"],["pusehd","pushed"],["pususading","persuading"],["puting","putting"],["putpose","purpose"],["putposed","purposed"],["putposes","purposes"],["pwoer","power"],["pxoxied","proxied"],["pxoxies","proxies"],["pxoxy","proxy"],["pyhon","python"],["pyhsical","physical"],["pyhsically","physically"],["pyhsicals","physicals"],["pyhsicaly","physically"],["pyhthon","python"],["pyhton","python"],["pyramide","pyramid"],["pyramides","pyramids"],["pyrhon","python"],["pyscic","psychic"],["pythin","python"],["pythjon","python"],["pytnon","python"],["pytohn","python"],["pyton","python"],["pytyon","python"],["qest","quest"],["qests","quests"],["qeuest","quest"],["qeuests","quests"],["qeueue","queue"],["qeust","quest"],["qeusts","quests"],["qiest","quest"],["qiests","quests"],["qith","with"],["qoute","quote"],["qouted","quoted"],["qoutes","quotes"],["qouting","quoting"],["quadddec","quaddec"],["quadranle","quadrangle"],["quailified","qualified"],["qualfied","qualified"],["qualfy","qualify"],["qualifer","qualifier"],["qualitification","qualification"],["qualitifications","qualifications"],["quanitified","quantified"],["quantaties","quantities"],["quantaty","quantity"],["quantitites","quantities"],["quantititive","quantitative"],["quantitity","quantity"],["quantitiy","quantity"],["quarantaine","quarantine"],["quarentine","quarantine"],["quartenion","quaternion"],["quartenions","quaternions"],["quartically","quadratically"],["quatation","quotation"],["quater","quarter"],["quation","equation"],["quations","equations"],["quckstarter","quickstarter"],["qudrangles","quadrangles"],["quee","queue"],["Queenland","Queensland"],["queing","queueing"],["queiried","queried"],["queisce","quiesce"],["queriable","queryable"],["quering","querying"],["querries","queries"],["queryies","queries"],["queryinterace","queryinterface"],["querys","queries"],["queset","quest"],["quesets","quests"],["quesiton","question"],["quesitonable","questionable"],["quesitons","questions"],["quesr","quest"],["quesrs","quests"],["questionaire","questionnaire"],["questionnair","questionnaire"],["questoin","question"],["questoins","questions"],["questonable","questionable"],["queu","queue"],["queueud","queued"],["queus","queues"],["quew","queue"],["quickier","quicker"],["quicklyu","quickly"],["quickyl","quickly"],["quicly","quickly"],["quiessent","quiescent"],["quiests","quests"],["quikc","quick"],["quinessential","quintessential"],["quiting","quitting"],["quitt","quit"],["quitted","quit"],["quizes","quizzes"],["quotaion","quotation"],["quoteed","quoted"],["quottes","quotes"],["quried","queried"],["quroum","quorum"],["qust","quest"],["qusts","quests"],["rabinnical","rabbinical"],["racaus","raucous"],["ractise","practise"],["radation","radiation"],["radiactive","radioactive"],["radiaton","radiation"],["radify","ratify"],["radiobuttion","radiobutton"],["radis","radix"],["rady","ready"],["raed","read"],["raeding","reading"],["raeds","reads"],["raedy","ready"],["raelly","really"],["raisedd","raised"],["ralation","relation"],["randmom","random"],["randomally","randomly"],["raoming","roaming"],["raotat","rotate"],["raotate","rotate"],["raotated","rotated"],["raotates","rotates"],["raotating","rotating"],["raotation","rotation"],["raotations","rotations"],["raotats","rotates"],["raplace","replace"],["raplacing","replacing"],["rapresent","represent"],["rapresentation","representation"],["rapresented","represented"],["rapresenting","representing"],["rapresents","represents"],["rapsberry","raspberry"],["rarelly","rarely"],["rarified","rarefied"],["rasberry","raspberry"],["rasie","raise"],["rasied","raised"],["rasies","raises"],["rasiing","raising"],["rasing","raising"],["rasons","reasons"],["raspbery","raspberry"],["raspoberry","raspberry"],["rathar","rather"],["rathern","rather"],["rcall","recall"],["rceate","create"],["rceating","creating"],["rduce","reduce"],["re-attachement","re-attachment"],["re-defiend","re-defined"],["re-engeneer","re-engineer"],["re-engeneering","re-engineering"],["re-evaulated","re-evaluated"],["re-impliment","re-implement"],["re-implimenting","re-implementing"],["re-negatiotiable","re-negotiable"],["re-negatiotiate","re-negotiate"],["re-negatiotiated","re-negotiated"],["re-negatiotiates","re-negotiates"],["re-negatiotiating","re-negotiating"],["re-negatiotiation","re-negotiation"],["re-negatiotiations","re-negotiations"],["re-negatiotiator","re-negotiator"],["re-negatiotiators","re-negotiators"],["re-negoable","re-negotiable"],["re-negoate","re-negotiate"],["re-negoated","re-negotiated"],["re-negoates","re-negotiates"],["re-negoatiable","re-negotiable"],["re-negoatiate","re-negotiate"],["re-negoatiated","re-negotiated"],["re-negoatiates","re-negotiates"],["re-negoatiating","re-negotiating"],["re-negoatiation","re-negotiation"],["re-negoatiations","re-negotiations"],["re-negoatiator","re-negotiator"],["re-negoatiators","re-negotiators"],["re-negoating","re-negotiating"],["re-negoation","re-negotiation"],["re-negoations","re-negotiations"],["re-negoator","re-negotiator"],["re-negoators","re-negotiators"],["re-negociable","re-negotiable"],["re-negociate","re-negotiate"],["re-negociated","re-negotiated"],["re-negociates","re-negotiates"],["re-negociating","re-negotiating"],["re-negociation","re-negotiation"],["re-negociations","re-negotiations"],["re-negociator","re-negotiator"],["re-negociators","re-negotiators"],["re-negogtiable","re-negotiable"],["re-negogtiate","re-negotiate"],["re-negogtiated","re-negotiated"],["re-negogtiates","re-negotiates"],["re-negogtiating","re-negotiating"],["re-negogtiation","re-negotiation"],["re-negogtiations","re-negotiations"],["re-negogtiator","re-negotiator"],["re-negogtiators","re-negotiators"],["re-negoitable","re-negotiable"],["re-negoitate","re-negotiate"],["re-negoitated","re-negotiated"],["re-negoitates","re-negotiates"],["re-negoitating","re-negotiating"],["re-negoitation","re-negotiation"],["re-negoitations","re-negotiations"],["re-negoitator","re-negotiator"],["re-negoitators","re-negotiators"],["re-negoptionsotiable","re-negotiable"],["re-negoptionsotiate","re-negotiate"],["re-negoptionsotiated","re-negotiated"],["re-negoptionsotiates","re-negotiates"],["re-negoptionsotiating","re-negotiating"],["re-negoptionsotiation","re-negotiation"],["re-negoptionsotiations","re-negotiations"],["re-negoptionsotiator","re-negotiator"],["re-negoptionsotiators","re-negotiators"],["re-negosiable","re-negotiable"],["re-negosiate","re-negotiate"],["re-negosiated","re-negotiated"],["re-negosiates","re-negotiates"],["re-negosiating","re-negotiating"],["re-negosiation","re-negotiation"],["re-negosiations","re-negotiations"],["re-negosiator","re-negotiator"],["re-negosiators","re-negotiators"],["re-negotable","re-negotiable"],["re-negotaiable","re-negotiable"],["re-negotaiate","re-negotiate"],["re-negotaiated","re-negotiated"],["re-negotaiates","re-negotiates"],["re-negotaiating","re-negotiating"],["re-negotaiation","re-negotiation"],["re-negotaiations","re-negotiations"],["re-negotaiator","re-negotiator"],["re-negotaiators","re-negotiators"],["re-negotaible","re-negotiable"],["re-negotaite","re-negotiate"],["re-negotaited","re-negotiated"],["re-negotaites","re-negotiates"],["re-negotaiting","re-negotiating"],["re-negotaition","re-negotiation"],["re-negotaitions","re-negotiations"],["re-negotaitor","re-negotiator"],["re-negotaitors","re-negotiators"],["re-negotate","re-negotiate"],["re-negotated","re-negotiated"],["re-negotates","re-negotiates"],["re-negotatiable","re-negotiable"],["re-negotatiate","re-negotiate"],["re-negotatiated","re-negotiated"],["re-negotatiates","re-negotiates"],["re-negotatiating","re-negotiating"],["re-negotatiation","re-negotiation"],["re-negotatiations","re-negotiations"],["re-negotatiator","re-negotiator"],["re-negotatiators","re-negotiators"],["re-negotatible","re-negotiable"],["re-negotatie","re-negotiate"],["re-negotatied","re-negotiated"],["re-negotaties","re-negotiates"],["re-negotating","re-negotiating"],["re-negotation","re-negotiation"],["re-negotations","re-negotiations"],["re-negotatior","re-negotiator"],["re-negotatiors","re-negotiators"],["re-negotator","re-negotiator"],["re-negotators","re-negotiators"],["re-negothiable","re-negotiable"],["re-negothiate","re-negotiate"],["re-negothiated","re-negotiated"],["re-negothiates","re-negotiates"],["re-negothiating","re-negotiating"],["re-negothiation","re-negotiation"],["re-negothiations","re-negotiations"],["re-negothiator","re-negotiator"],["re-negothiators","re-negotiators"],["re-negotible","re-negotiable"],["re-negoticable","re-negotiable"],["re-negoticate","re-negotiate"],["re-negoticated","re-negotiated"],["re-negoticates","re-negotiates"],["re-negoticating","re-negotiating"],["re-negotication","re-negotiation"],["re-negotications","re-negotiations"],["re-negoticator","re-negotiator"],["re-negoticators","re-negotiators"],["re-negotioable","re-negotiable"],["re-negotioate","re-negotiate"],["re-negotioated","re-negotiated"],["re-negotioates","re-negotiates"],["re-negotioating","re-negotiating"],["re-negotioation","re-negotiation"],["re-negotioations","re-negotiations"],["re-negotioator","re-negotiator"],["re-negotioators","re-negotiators"],["re-negotioble","re-negotiable"],["re-negotion","re-negotiation"],["re-negotionable","re-negotiable"],["re-negotionate","re-negotiate"],["re-negotionated","re-negotiated"],["re-negotionates","re-negotiates"],["re-negotionating","re-negotiating"],["re-negotionation","re-negotiation"],["re-negotionations","re-negotiations"],["re-negotionator","re-negotiator"],["re-negotionators","re-negotiators"],["re-negotions","re-negotiations"],["re-negotiotable","re-negotiable"],["re-negotiotate","re-negotiate"],["re-negotiotated","re-negotiated"],["re-negotiotates","re-negotiates"],["re-negotiotating","re-negotiating"],["re-negotiotation","re-negotiation"],["re-negotiotations","re-negotiations"],["re-negotiotator","re-negotiator"],["re-negotiotators","re-negotiators"],["re-negotiote","re-negotiate"],["re-negotioted","re-negotiated"],["re-negotiotes","re-negotiates"],["re-negotioting","re-negotiating"],["re-negotiotion","re-negotiation"],["re-negotiotions","re-negotiations"],["re-negotiotor","re-negotiator"],["re-negotiotors","re-negotiators"],["re-negotitable","re-negotiable"],["re-negotitae","re-negotiate"],["re-negotitaed","re-negotiated"],["re-negotitaes","re-negotiates"],["re-negotitaing","re-negotiating"],["re-negotitaion","re-negotiation"],["re-negotitaions","re-negotiations"],["re-negotitaor","re-negotiator"],["re-negotitaors","re-negotiators"],["re-negotitate","re-negotiate"],["re-negotitated","re-negotiated"],["re-negotitates","re-negotiates"],["re-negotitating","re-negotiating"],["re-negotitation","re-negotiation"],["re-negotitations","re-negotiations"],["re-negotitator","re-negotiator"],["re-negotitators","re-negotiators"],["re-negotite","re-negotiate"],["re-negotited","re-negotiated"],["re-negotites","re-negotiates"],["re-negotiting","re-negotiating"],["re-negotition","re-negotiation"],["re-negotitions","re-negotiations"],["re-negotitor","re-negotiator"],["re-negotitors","re-negotiators"],["re-negoziable","re-negotiable"],["re-negoziate","re-negotiate"],["re-negoziated","re-negotiated"],["re-negoziates","re-negotiates"],["re-negoziating","re-negotiating"],["re-negoziation","re-negotiation"],["re-negoziations","re-negotiations"],["re-negoziator","re-negotiator"],["re-negoziators","re-negotiators"],["re-realease","re-release"],["re-uplad","re-upload"],["re-upladed","re-uploaded"],["re-uplader","re-uploader"],["re-upladers","re-uploaders"],["re-uplading","re-uploading"],["re-uplads","re-uploads"],["re-uplaod","re-upload"],["re-uplaoded","re-uploaded"],["re-uplaoder","re-uploader"],["re-uplaoders","re-uploaders"],["re-uplaoding","re-uploading"],["re-uplaods","re-uploads"],["re-uplod","re-upload"],["re-uploded","re-uploaded"],["re-uploder","re-uploader"],["re-uploders","re-uploaders"],["re-uploding","re-uploading"],["re-uplods","re-uploads"],["reaaly","really"],["reaarange","rearrange"],["reaaranges","rearranges"],["reaasigned","reassigned"],["reacahable","reachable"],["reacahble","reachable"],["reaccurring","recurring"],["reaceive","receive"],["reacheable","reachable"],["reachers","readers"],["reachs","reaches"],["reacing","reaching"],["reacll","recall"],["reactquire","reacquire"],["readabilty","readability"],["readanle","readable"],["readapted","re-adapted"],["readble","readable"],["readdrss","readdress"],["readdrssed","readdressed"],["readdrsses","readdresses"],["readdrssing","readdressing"],["readeable","readable"],["reademe","README"],["readiable","readable"],["readibility","readability"],["readible","readable"],["readig","reading"],["readigs","readings"],["readius","radius"],["readl-only","read-only"],["readmition","readmission"],["readnig","reading"],["readning","reading"],["readyness","readiness"],["reaeched","reached"],["reagrding","regarding"],["reaktivate","reactivate"],["reaktivated","reactivated"],["realease","release"],["realeased","released"],["realeases","releases"],["realiable","reliable"],["realitime","realtime"],["realitvely","relatively"],["realiy","really"],["realiztion","realization"],["realiztions","realizations"],["realling","really"],["reallize","realize"],["reallllly","really"],["reallocae","reallocate"],["reallocaes","reallocates"],["reallocaiing","reallocating"],["reallocaing","reallocating"],["reallocaion","reallocation"],["reallocaions","reallocations"],["reallocaite","reallocate"],["reallocaites","reallocates"],["reallocaiting","reallocating"],["reallocaition","reallocation"],["reallocaitions","reallocations"],["reallocaiton","reallocation"],["reallocaitons","reallocations"],["realsitic","realistic"],["realted","related"],["realyl","really"],["reamde","README"],["reamins","remains"],["reander","render"],["reanme","rename"],["reanmed","renamed"],["reanmes","renames"],["reanming","renaming"],["reaon","reason"],["reaons","reasons"],["reapeat","repeat"],["reapeated","repeated"],["reapeater","repeater"],["reapeating","repeating"],["reapeats","repeats"],["reappeares","reappears"],["reapper","reappear"],["reappered","reappeared"],["reappering","reappearing"],["rearely","rarely"],["rearranable","rearrangeable"],["rearrane","rearrange"],["rearraned","rearranged"],["rearranement","rearrangement"],["rearranements","rearrangements"],["rearranent","rearrangement"],["rearranents","rearrangements"],["rearranes","rearranges"],["rearrang","rearrange"],["rearrangable","rearrangeable"],["rearrangaeble","rearrangeable"],["rearrangaelbe","rearrangeable"],["rearrangd","rearranged"],["rearrangde","rearranged"],["rearrangent","rearrangement"],["rearrangents","rearrangements"],["rearrangmeent","rearrangement"],["rearrangmeents","rearrangements"],["rearrangmenet","rearrangement"],["rearrangmenets","rearrangements"],["rearrangment","rearrangement"],["rearrangments","rearrangements"],["rearrangnig","rearranging"],["rearrangning","rearranging"],["rearrangs","rearranges"],["rearrangse","rearranges"],["rearrangt","rearrangement"],["rearrangte","rearrange"],["rearrangteable","rearrangeable"],["rearrangteables","rearrangeables"],["rearrangted","rearranged"],["rearrangtement","rearrangement"],["rearrangtements","rearrangements"],["rearrangtes","rearranges"],["rearrangting","rearranging"],["rearrangts","rearrangements"],["rearraning","rearranging"],["rearranment","rearrangement"],["rearranments","rearrangements"],["rearrant","rearrangement"],["rearrants","rearrangements"],["reasearch","research"],["reasearcher","researcher"],["reasearchers","researchers"],["reasnable","reasonable"],["reasoable","reasonable"],["reasonabily","reasonably"],["reasonble","reasonable"],["reasonbly","reasonably"],["reasonnable","reasonable"],["reasonnably","reasonably"],["reassinging","reassigning"],["reassocition","reassociation"],["reasssign","reassign"],["reatime","realtime"],["reattachement","reattachment"],["rebiulding","rebuilding"],["rebllions","rebellions"],["reboto","reboot"],["rebounce","rebound"],["rebuilded","rebuilt"],["rebuillt","rebuilt"],["rebuils","rebuilds"],["rebuit","rebuilt"],["rebuld","rebuild"],["rebulding","rebuilding"],["rebulds","rebuilds"],["rebulid","rebuild"],["rebuliding","rebuilding"],["rebulids","rebuilds"],["rebulit","rebuilt"],["recahed","reached"],["recal","recall"],["recalcualte","recalculate"],["recalcualted","recalculated"],["recalcualter","re-calculator"],["recalcualtes","recalculates"],["recalcualting","recalculating"],["recalcualtion","recalculation"],["recalcualtions","recalculations"],["recalcuate","recalculate"],["recalcuated","recalculated"],["recalcuates","recalculates"],["recalcuations","recalculations"],["recalculaion","recalculation"],["recalculatble","re-calculable"],["recalcution","recalculation"],["recalulate","recalculate"],["recalulation","recalculation"],["recangle","rectangle"],["recangles","rectangles"],["reccomend","recommend"],["reccomendations","recommendations"],["reccomended","recommended"],["reccomending","recommending"],["reccommend","recommend"],["reccommendation","recommendation"],["reccommendations","recommendations"],["reccommended","recommended"],["reccommending","recommending"],["reccommends","recommends"],["recconecct","reconnect"],["recconeccted","reconnected"],["recconeccting","reconnecting"],["recconecction","reconnection"],["recconecctions","reconnections"],["recconeccts","reconnects"],["recconect","reconnect"],["recconected","reconnected"],["recconecting","reconnecting"],["recconection","reconnection"],["recconections","reconnections"],["recconects","reconnects"],["recconeect","reconnect"],["recconeected","reconnected"],["recconeecting","reconnecting"],["recconeection","reconnection"],["recconeections","reconnections"],["recconeects","reconnects"],["recconenct","reconnect"],["recconencted","reconnected"],["recconencting","reconnecting"],["recconenction","reconnection"],["recconenctions","reconnections"],["recconencts","reconnects"],["recconet","reconnect"],["recconeted","reconnected"],["recconeting","reconnecting"],["recconetion","reconnection"],["recconetions","reconnections"],["recconets","reconnects"],["reccord","record"],["reccorded","recorded"],["reccording","recording"],["reccords","records"],["reccuring","recurring"],["reccursive","recursive"],["reccursively","recursively"],["receeded","receded"],["receeding","receding"],["receied","received"],["receieve","receive"],["receieved","received"],["receieves","receives"],["receieving","receiving"],["receipient","recipient"],["receipients","recipients"],["receiption","reception"],["receiv","receive"],["receivd","received"],["receivedfrom","received from"],["receiveing","receiving"],["receiviing","receiving"],["receivs","receives"],["recenet","recent"],["recenlty","recently"],["recenly","recently"],["recenty","recently"],["recepient","recipient"],["recepients","recipients"],["recepion","reception"],["receve","receive"],["receved","received"],["receves","receives"],["recevie","receive"],["recevied","received"],["recevier","receiver"],["recevies","receives"],["receving","receiving"],["rechable","reachable"],["rechargable","rechargeable"],["recheability","reachability"],["reched","reached"],["rechek","recheck"],["recide","reside"],["recided","resided"],["recident","resident"],["recidents","residents"],["reciding","residing"],["reciepents","recipients"],["reciept","receipt"],["recieve","receive"],["recieved","received"],["reciever","receiver"],["recievers","receivers"],["recieves","receives"],["recieving","receiving"],["recievs","receives"],["recipiant","recipient"],["recipiants","recipients"],["recipie","recipe"],["recipies","recipes"],["reciprocoal","reciprocal"],["reciprocoals","reciprocals"],["recive","receive"],["recived","received"],["reciver","receiver"],["recivers","receivers"],["recivership","receivership"],["recives","receives"],["reciving","receiving"],["reclaimation","reclamation"],["recntly","recently"],["recod","record"],["recofig","reconfig"],["recoginizing-","recognizing"],["recogise","recognise"],["recogize","recognize"],["recogized","recognized"],["recogizes","recognizes"],["recogizing","recognizing"],["recogniced","recognised"],["recogninse","recognise"],["recognizeable","recognizable"],["recognzied","recognized"],["recomend","recommend"],["recomendation","recommendation"],["recomendations","recommendations"],["recomendatoin","recommendation"],["recomendatoins","recommendations"],["recomended","recommended"],["recomending","recommending"],["recomends","recommends"],["recommad","recommend"],["recommaded","recommended"],["recommand","recommend"],["recommandation","recommendation"],["recommanded","recommended"],["recommanding","recommending"],["recommands","recommends"],["recommd","recommend"],["recommdation","recommendation"],["recommded","recommended"],["recommdend","recommend"],["recommdended","recommended"],["recommdends","recommends"],["recommds","recommends"],["recommed","recommend"],["recommedation","recommendation"],["recommedations","recommendations"],["recommeded","recommended"],["recommeding","recommending"],["recommeds","recommends"],["recommened","recommended"],["recommeneded","recommended"],["recommented","recommended"],["recommmend","recommend"],["recommmended","recommended"],["recommmends","recommends"],["recommnd","recommend"],["recommnded","recommended"],["recommnds","recommends"],["recommned","recommend"],["recommneded","recommended"],["recommneds","recommends"],["recommpile","recompile"],["recommpiled","recompiled"],["recompence","recompense"],["recomput","recompute"],["recomputaion","recomputation"],["recompuute","recompute"],["recompuuted","recomputed"],["recompuutes","recomputes"],["recompuuting","recomputing"],["reconaissance","reconnaissance"],["reconcilation","reconciliation"],["recondifure","reconfigure"],["reconecct","reconnect"],["reconeccted","reconnected"],["reconeccting","reconnecting"],["reconecction","reconnection"],["reconecctions","reconnections"],["reconeccts","reconnects"],["reconect","reconnect"],["reconected","reconnected"],["reconecting","reconnecting"],["reconection","reconnection"],["reconections","reconnections"],["reconects","reconnects"],["reconeect","reconnect"],["reconeected","reconnected"],["reconeecting","reconnecting"],["reconeection","reconnection"],["reconeections","reconnections"],["reconeects","reconnects"],["reconenct","reconnect"],["reconencted","reconnected"],["reconencting","reconnecting"],["reconenction","reconnection"],["reconenctions","reconnections"],["reconencts","reconnects"],["reconet","reconnect"],["reconeted","reconnected"],["reconeting","reconnecting"],["reconetion","reconnection"],["reconetions","reconnections"],["reconets","reconnects"],["reconfifure","reconfigure"],["reconfiged","reconfigured"],["reconfugire","reconfigure"],["reconfugre","reconfigure"],["reconfugure","reconfigure"],["reconfure","reconfigure"],["recongifure","reconfigure"],["recongize","recognize"],["recongized","recognized"],["recongnises","recognises"],["recongnizes","recognizes"],["reconize","recognize"],["reconized","recognized"],["reconnaisance","reconnaissance"],["reconnaissence","reconnaissance"],["reconnct","reconnect"],["reconncted","reconnected"],["reconncting","reconnecting"],["reconncts","reconnects"],["reconsidder","reconsider"],["reconstrcut","reconstruct"],["reconstrcuted","reconstructed"],["reconstrcution","reconstruction"],["reconstuct","reconstruct"],["reconstucted","reconstructed"],["reconstucting","reconstructing"],["reconstucts","reconstructs"],["reconsturction","reconstruction"],["recontruct","reconstruct"],["recontructed","reconstructed"],["recontructing","reconstructing"],["recontruction","reconstruction"],["recontructions","reconstructions"],["recontructor","reconstructor"],["recontructors","reconstructors"],["recontructs","reconstructs"],["recordproducer","record producer"],["recordss","records"],["recored","recorded"],["recoriding","recording"],["recourced","resourced"],["recources","resources"],["recourcing","resourcing"],["recpie","recipe"],["recpies","recipes"],["recquired","required"],["recrational","recreational"],["recreateation","recreation"],["recrod","record"],["recrods","records"],["recrusevly","recursively"],["recrusion","recursion"],["recrusive","recursive"],["recrusivelly","recursively"],["recrusively","recursively"],["rectange","rectangle"],["rectanges","rectangles"],["rectanglar","rectangular"],["rectangluar","rectangular"],["rectiinear","rectilinear"],["recude","reduce"],["recuiting","recruiting"],["reculrively","recursively"],["recuring","recurring"],["recurisvely","recursively"],["recurively","recursively"],["recurrance","recurrence"],["recursily","recursively"],["recursivelly","recursively"],["recursivion","recursion"],["recursivley","recursively"],["recursivly","recursively"],["recurssed","recursed"],["recursses","recurses"],["recurssing","recursing"],["recurssion","recursion"],["recurssive","recursive"],["recusrive","recursive"],["recusrively","recursively"],["recusrsive","recursive"],["recustion","recursion"],["recyclying","recycling"],["recylcing","recycling"],["recyle","recycle"],["recyled","recycled"],["recyles","recycles"],["recyling","recycling"],["redability","readability"],["redandant","redundant"],["redeable","readable"],["redeclaation","redeclaration"],["redefiend","redefined"],["redefiende","redefined"],["redefintion","redefinition"],["redefintions","redefinitions"],["redenderer","renderer"],["redered","rendered"],["redict","redirect"],["rediculous","ridiculous"],["redidual","residual"],["redifine","redefine"],["redifinition","redefinition"],["redifinitions","redefinitions"],["redifintion","redefinition"],["redifintions","redefinitions"],["reding","reading"],["redings","readings"],["redircet","redirect"],["redirectd","redirected"],["redirectrion","redirection"],["redisign","redesign"],["redistirbute","redistribute"],["redistirbuted","redistributed"],["redistirbutes","redistributes"],["redistirbuting","redistributing"],["redistirbution","redistribution"],["redistributeable","redistributable"],["redistrubute","redistribute"],["redistrubuted","redistributed"],["redistrubution","redistribution"],["redistrubutions","redistributions"],["redliens","redlines"],["rednerer","renderer"],["redonly","readonly"],["redudancy","redundancy"],["redudant","redundant"],["redunancy","redundancy"],["redunant","redundant"],["redundacy","redundancy"],["redundand","redundant"],["redundat","redundant"],["redundency","redundancy"],["redundent","redundant"],["reduntancy","redundancy"],["reduntant","redundant"],["reease","release"],["reeased","released"],["reeaser","releaser"],["reeasers","releasers"],["reeases","releases"],["reeasing","releasing"],["reedeming","redeeming"],["reegion","region"],["reegions","regions"],["reelation","relation"],["reelease","release"],["reenable","re-enable"],["reenabled","re-enabled"],["reename","rename"],["reencode","re-encode"],["reenfoce","reinforce"],["reenfoced","reinforced"],["reenforced","reinforced"],["reesrved","reserved"],["reesult","result"],["reeturn","return"],["reeturned","returned"],["reeturning","returning"],["reeturns","returns"],["reevalute","reevaluate"],["reevaulating","reevaluating"],["refcound","refcount"],["refcounf","refcount"],["refect","reflect"],["refected","reflected"],["refecting","reflecting"],["refectiv","reflective"],["refector","refactor"],["refectoring","refactoring"],["refects","reflects"],["refedendum","referendum"],["refeinement","refinement"],["refeinements","refinements"],["refelects","reflects"],["refence","reference"],["refences","references"],["refenence","reference"],["refenrenced","referenced"],["referal","referral"],["referance","reference"],["referanced","referenced"],["referances","references"],["referant","referent"],["referebces","references"],["referece","reference"],["referecence","reference"],["referecences","references"],["refereces","references"],["referecne","reference"],["refered","referred"],["referefences","references"],["referemce","reference"],["referemces","references"],["referenace","reference"],["referenc","reference"],["referencable","referenceable"],["referencial","referential"],["referencially","referentially"],["referencs","references"],["referenct","referenced"],["referene","reference"],["referenece","reference"],["refereneced","referenced"],["refereneces","references"],["referened","referenced"],["referenence","reference"],["referenenced","referenced"],["referenences","references"],["referenes","references"],["referennces","references"],["referense","reference"],["referensed","referenced"],["referenses","references"],["referenz","reference"],["referenzes","references"],["refererd","referred"],["refererence","reference"],["referiang","referring"],["refering","referring"],["refernce","reference"],["refernced","referenced"],["referncence","reference"],["referncences","references"],["refernces","references"],["referncial","referential"],["referncing","referencing"],["refernece","reference"],["referneced","referenced"],["referneces","references"],["refernnce","reference"],["referr","refer"],["referrence","reference"],["referrenced","referenced"],["referrences","references"],["referrencing","referencing"],["referreres","referrers"],["referres","refers"],["referrs","refers"],["refertence","reference"],["refertenced","referenced"],["refertences","references"],["refesh","refresh"],["refeshed","refreshed"],["refeshes","refreshes"],["refeshing","refreshing"],["reffered","referred"],["refference","reference"],["reffering","referring"],["refferr","refer"],["reffers","refers"],["refinemenet","refinement"],["refinmenet","refinement"],["refinment","refinement"],["reflet","reflect"],["refleted","reflected"],["refleting","reflecting"],["refletion","reflection"],["refletions","reflections"],["reflets","reflects"],["refocuss","refocus"],["refocussed","refocused"],["reformating","reformatting"],["reformattd","reformatted"],["refreh","refresh"],["refrence","reference"],["refrenced","referenced"],["refrences","references"],["refrencing","referencing"],["refrerence","reference"],["refrerenced","referenced"],["refrerenceing","referencing"],["refrerences","references"],["refrerencial","referential"],["refrers","refers"],["refreshs","refreshes"],["refreshses","refreshes"],["refridgeration","refrigeration"],["refridgerator","refrigerator"],["refromatting","refomatting"],["refromist","reformist"],["refrormatting","reformatting"],["refure","refuse"],["refures","refuses"],["refusla","refusal"],["regalar","regular"],["regalars","regulars"],["regardes","regards"],["regardles","regardless"],["regardlesss","regardless"],["regaring","regarding"],["regarldess","regardless"],["regarless","regardless"],["regart","regard"],["regarted","regarded"],["regarting","regarding"],["regartless","regardless"],["regconized","recognized"],["regeister","register"],["regeistered","registered"],["regeistration","registration"],["regenarated","regenerated"],["regenrated","regenerated"],["regenratet","regenerated"],["regenrating","regenerating"],["regenration","regeneration"],["regenrative","regenerative"],["regession","regression"],["regestered","registered"],["regidstered","registered"],["regio","region"],["regiser","register"],["regisration","registration"],["regist","register"],["registartion","registration"],["registe","register"],["registed","registered"],["registeing","registering"],["registeration","registration"],["registerered","registered"],["registeres","registers"],["registeresd","registered"],["registerred","registered"],["registert","registered"],["registery","registry"],["registes","registers"],["registing","registering"],["registors","registers"],["registrain","registration"],["registraion","registration"],["registraions","registrations"],["registraration","registration"],["registrated","registered"],["registred","registered"],["registrer","register"],["registring","registering"],["registrs","registers"],["registy","registry"],["regiter","register"],["regitered","registered"],["regitering","registering"],["regiters","registers"],["regluar","regular"],["regon","region"],["regons","regions"],["regorded","recorded"],["regresion","regression"],["regresison","regression"],["regresssion","regression"],["regrigerator","refrigerator"],["regsion","region"],["regsions","regions"],["regsiter","register"],["regsitered","registered"],["regsitering","registering"],["regsiters","registers"],["regsitry","registry"],["regster","register"],["regstered","registered"],["regstering","registering"],["regsters","registers"],["regstry","registry"],["regualar","regular"],["regualarly","regularly"],["regualator","regulator"],["regualr","regular"],["regualtor","regulator"],["reguardless","regardless"],["reguarldess","regardless"],["reguarlise","regularise"],["reguarliser","regulariser"],["reguarlize","regularize"],["reguarlizer","regularizer"],["reguarly","regularly"],["reguator","regulator"],["reguire","require"],["reguired","required"],["reguirement","requirement"],["reguirements","requirements"],["reguires","requires"],["reguiring","requiring"],["regulaer","regular"],["regulaion","regulation"],["regulamentation","regulation"],["regulamentations","regulations"],["regulaotrs","regulators"],["regulaotry","regulatory"],["regularily","regularly"],["regulariry","regularly"],["regularlisation","regularisation"],["regularlise","regularise"],["regularlised","regularised"],["regularliser","regulariser"],["regularlises","regularises"],["regularlising","regularising"],["regularlization","regularization"],["regularlize","regularize"],["regularlized","regularized"],["regularlizer","regularizer"],["regularlizes","regularizes"],["regularlizing","regularizing"],["regularlly","regularly"],["regulax","regular"],["reguler","regular"],["regulr","regular"],["regultor","regulator"],["regultors","regulators"],["regultory","regulatory"],["regurlarly","regularly"],["reguster","register"],["rehersal","rehearsal"],["rehersing","rehearsing"],["reicarnation","reincarnation"],["reigining","reigning"],["reigonal","regional"],["reigster","register"],["reigstered","registered"],["reigstering","registering"],["reigsters","registers"],["reigstration","registration"],["reimplemenet","reimplement"],["reimplementaion","reimplementation"],["reimplementaions","reimplementations"],["reimplemention","reimplementation"],["reimplementions","reimplementations"],["reimplented","reimplemented"],["reimplents","reimplements"],["reimpliment","reimplement"],["reimplimenting","reimplementing"],["reimplmenet","reimplement"],["reimplment","reimplement"],["reimplmentation","reimplementation"],["reimplmented","reimplemented"],["reimplmenting","reimplementing"],["reimplments","reimplements"],["reimpplement","reimplement"],["reimpplementating","reimplementing"],["reimpplementation","reimplementation"],["reimpplemented","reimplemented"],["reimpremented","reimplemented"],["reinfoce","reinforce"],["reinfoced","reinforced"],["reinfocement","reinforcement"],["reinfocements","reinforcements"],["reinfoces","reinforces"],["reinfocing","reinforcing"],["reinitailise","reinitialise"],["reinitailised","reinitialised"],["reinitailize","reinitialize"],["reinitalize","reinitialize"],["reinitilize","reinitialize"],["reinitilized","reinitialized"],["reinstatiate","reinstantiate"],["reinstatiated","reinstantiated"],["reinstatiates","reinstantiates"],["reinstatiation","reinstantiation"],["reintantiate","reinstantiate"],["reintantiating","reinstantiating"],["reintepret","reinterpret"],["reintepreted","reinterpreted"],["reister","register"],["reitterate","reiterate"],["reitterated","reiterated"],["reitterates","reiterates"],["reivison","revision"],["rejplace","replace"],["reknown","renown"],["reknowned","renowned"],["rekursed","recursed"],["rekursion","recursion"],["rekursive","recursive"],["relaative","relative"],["relady","ready"],["relaease","release"],["relaese","release"],["relaesed","released"],["relaeses","releases"],["relaesing","releasing"],["relaged","related"],["relaimed","reclaimed"],["relaion","relation"],["relaive","relative"],["relaly","really"],["relase","release"],["relased","released"],["relaser","releaser"],["relases","releases"],["relashionship","relationship"],["relashionships","relationships"],["relasing","releasing"],["relataive","relative"],["relatated","related"],["relatd","related"],["relatdness","relatedness"],["relatibe","relative"],["relatibely","relatively"],["relatievly","relatively"],["relatiopnship","relationship"],["relativ","relative"],["relativly","relatively"],["relavant","relevant"],["relavent","relevant"],["releaase","release"],["releaased","released"],["relead","reload"],["releae","release"],["releaed","released"],["releaeing","releasing"],["releaing","releasing"],["releas","release"],["releasead","released"],["releasse","release"],["releated","related"],["releating","relating"],["releation","relation"],["releations","relations"],["releationship","relationship"],["releationships","relationships"],["releative","relative"],["releavant","relevant"],["relecant","relevant"],["releive","relieve"],["releived","relieved"],["releiver","reliever"],["releoad","reload"],["relese","release"],["relesed","released"],["releses","releases"],["reletive","relative"],["reletively","relatively"],["relevabt","relevant"],["relevane","relevant"],["releveant","relevant"],["relevence","relevance"],["relevent","relevant"],["relfected","reflected"],["relfecting","reflecting"],["relfection","reflection"],["relfections","reflections"],["reliablity","reliability"],["relient","reliant"],["religeous","religious"],["religous","religious"],["religously","religiously"],["relinguish","relinquish"],["relinguishing","relinquishing"],["relinqushment","relinquishment"],["relintquish","relinquish"],["relitavely","relatively"],["relly","really"],["reloade","reload"],["relocae","relocate"],["relocaes","relocates"],["relocaiing","relocating"],["relocaing","relocating"],["relocaion","relocation"],["relocaions","relocations"],["relocaite","relocate"],["relocaites","relocates"],["relocaiting","relocating"],["relocaition","relocation"],["relocaitions","relocations"],["relocaiton","relocation"],["relocaitons","relocations"],["relocateable","relocatable"],["reloccate","relocate"],["reloccated","relocated"],["reloccates","relocates"],["relpacement","replacement"],["relpy","reply"],["reltive","relative"],["relyable","reliable"],["relyably","reliably"],["relyed","relied"],["relys","relies"],["remaing","remaining"],["remainging","remaining"],["remainig","remaining"],["remainst","remains"],["remaning","remaining"],["remaped","remapped"],["remaping","remapping"],["rembember","remember"],["rembembered","remembered"],["rembembering","remembering"],["rembembers","remembers"],["rember","remember"],["remeber","remember"],["remebered","remembered"],["remebering","remembering"],["remebers","remembers"],["rememberable","memorable"],["rememberance","remembrance"],["rememberd","remembered"],["remembrence","remembrance"],["rememeber","remember"],["rememebered","remembered"],["rememebering","remembering"],["rememebers","remembers"],["rememebr","remember"],["rememebred","remembered"],["rememebrs","remembers"],["rememember","remember"],["rememembered","remembered"],["rememembers","remembers"],["rememer","remember"],["rememered","remembered"],["rememers","remembers"],["rememor","remember"],["rememored","remembered"],["rememoring","remembering"],["rememors","remembers"],["rememver","remember"],["remenant","remnant"],["remenber","remember"],["remenicent","reminiscent"],["remian","remain"],["remianed","remained"],["remianing","remaining"],["remians","remains"],["reminent","remnant"],["reminescent","reminiscent"],["remining","remaining"],["reminiscense","reminiscence"],["reminscent","reminiscent"],["reminsicent","reminiscent"],["remmeber","remember"],["remmebered","remembered"],["remmebering","remembering"],["remmebers","remembers"],["remmove","remove"],["remoce","remove"],["remoive","remove"],["remoived","removed"],["remoives","removes"],["remoiving","removing"],["remontly","remotely"],["remoote","remote"],["remore","remote"],["remorted","reported"],["remot","remote"],["removce","remove"],["removeable","removable"],["removefromat","removeformat"],["removeing","removing"],["removerd","removed"],["remve","remove"],["remved","removed"],["remves","removes"],["remvoe","remove"],["remvoed","removed"],["remvoes","removes"],["remvove","remove"],["remvoved","removed"],["remvoves","removes"],["remvs","removes"],["renabled","re-enabled"],["renderadble","renderable"],["renderd","rendered"],["rendereing","rendering"],["rendererd","rendered"],["renderered","rendered"],["renderering","rendering"],["renderning","rendering"],["renderr","render"],["renderring","rendering"],["rendevous","rendezvous"],["rendezous","rendezvous"],["rendired","rendered"],["rendirer","renderer"],["rendirers","renderers"],["rendiring","rendering"],["rendring","rendering"],["renedered","rendered"],["renegatiotiable","renegotiable"],["renegatiotiate","renegotiate"],["renegatiotiated","renegotiated"],["renegatiotiates","renegotiates"],["renegatiotiating","renegotiating"],["renegatiotiation","renegotiation"],["renegatiotiations","renegotiations"],["renegatiotiator","renegotiator"],["renegatiotiators","renegotiators"],["renegoable","renegotiable"],["renegoate","renegotiate"],["renegoated","renegotiated"],["renegoates","renegotiates"],["renegoatiable","renegotiable"],["renegoatiate","renegotiate"],["renegoatiated","renegotiated"],["renegoatiates","renegotiates"],["renegoatiating","renegotiating"],["renegoatiation","renegotiation"],["renegoatiations","renegotiations"],["renegoatiator","renegotiator"],["renegoatiators","renegotiators"],["renegoating","renegotiating"],["renegoation","renegotiation"],["renegoations","renegotiations"],["renegoator","renegotiator"],["renegoators","renegotiators"],["renegociable","renegotiable"],["renegociate","renegotiate"],["renegociated","renegotiated"],["renegociates","renegotiates"],["renegociating","renegotiating"],["renegociation","renegotiation"],["renegociations","renegotiations"],["renegociator","renegotiator"],["renegociators","renegotiators"],["renegogtiable","renegotiable"],["renegogtiate","renegotiate"],["renegogtiated","renegotiated"],["renegogtiates","renegotiates"],["renegogtiating","renegotiating"],["renegogtiation","renegotiation"],["renegogtiations","renegotiations"],["renegogtiator","renegotiator"],["renegogtiators","renegotiators"],["renegoitable","renegotiable"],["renegoitate","renegotiate"],["renegoitated","renegotiated"],["renegoitates","renegotiates"],["renegoitating","renegotiating"],["renegoitation","renegotiation"],["renegoitations","renegotiations"],["renegoitator","renegotiator"],["renegoitators","renegotiators"],["renegoptionsotiable","renegotiable"],["renegoptionsotiate","renegotiate"],["renegoptionsotiated","renegotiated"],["renegoptionsotiates","renegotiates"],["renegoptionsotiating","renegotiating"],["renegoptionsotiation","renegotiation"],["renegoptionsotiations","renegotiations"],["renegoptionsotiator","renegotiator"],["renegoptionsotiators","renegotiators"],["renegosiable","renegotiable"],["renegosiate","renegotiate"],["renegosiated","renegotiated"],["renegosiates","renegotiates"],["renegosiating","renegotiating"],["renegosiation","renegotiation"],["renegosiations","renegotiations"],["renegosiator","renegotiator"],["renegosiators","renegotiators"],["renegotable","renegotiable"],["renegotaiable","renegotiable"],["renegotaiate","renegotiate"],["renegotaiated","renegotiated"],["renegotaiates","renegotiates"],["renegotaiating","renegotiating"],["renegotaiation","renegotiation"],["renegotaiations","renegotiations"],["renegotaiator","renegotiator"],["renegotaiators","renegotiators"],["renegotaible","renegotiable"],["renegotaite","renegotiate"],["renegotaited","renegotiated"],["renegotaites","renegotiates"],["renegotaiting","renegotiating"],["renegotaition","renegotiation"],["renegotaitions","renegotiations"],["renegotaitor","renegotiator"],["renegotaitors","renegotiators"],["renegotate","renegotiate"],["renegotated","renegotiated"],["renegotates","renegotiates"],["renegotatiable","renegotiable"],["renegotatiate","renegotiate"],["renegotatiated","renegotiated"],["renegotatiates","renegotiates"],["renegotatiating","renegotiating"],["renegotatiation","renegotiation"],["renegotatiations","renegotiations"],["renegotatiator","renegotiator"],["renegotatiators","renegotiators"],["renegotatible","renegotiable"],["renegotatie","renegotiate"],["renegotatied","renegotiated"],["renegotaties","renegotiates"],["renegotating","renegotiating"],["renegotation","renegotiation"],["renegotations","renegotiations"],["renegotatior","renegotiator"],["renegotatiors","renegotiators"],["renegotator","renegotiator"],["renegotators","renegotiators"],["renegothiable","renegotiable"],["renegothiate","renegotiate"],["renegothiated","renegotiated"],["renegothiates","renegotiates"],["renegothiating","renegotiating"],["renegothiation","renegotiation"],["renegothiations","renegotiations"],["renegothiator","renegotiator"],["renegothiators","renegotiators"],["renegotible","renegotiable"],["renegoticable","renegotiable"],["renegoticate","renegotiate"],["renegoticated","renegotiated"],["renegoticates","renegotiates"],["renegoticating","renegotiating"],["renegotication","renegotiation"],["renegotications","renegotiations"],["renegoticator","renegotiator"],["renegoticators","renegotiators"],["renegotioable","renegotiable"],["renegotioate","renegotiate"],["renegotioated","renegotiated"],["renegotioates","renegotiates"],["renegotioating","renegotiating"],["renegotioation","renegotiation"],["renegotioations","renegotiations"],["renegotioator","renegotiator"],["renegotioators","renegotiators"],["renegotioble","renegotiable"],["renegotion","renegotiation"],["renegotionable","renegotiable"],["renegotionate","renegotiate"],["renegotionated","renegotiated"],["renegotionates","renegotiates"],["renegotionating","renegotiating"],["renegotionation","renegotiation"],["renegotionations","renegotiations"],["renegotionator","renegotiator"],["renegotionators","renegotiators"],["renegotions","renegotiations"],["renegotiotable","renegotiable"],["renegotiotate","renegotiate"],["renegotiotated","renegotiated"],["renegotiotates","renegotiates"],["renegotiotating","renegotiating"],["renegotiotation","renegotiation"],["renegotiotations","renegotiations"],["renegotiotator","renegotiator"],["renegotiotators","renegotiators"],["renegotiote","renegotiate"],["renegotioted","renegotiated"],["renegotiotes","renegotiates"],["renegotioting","renegotiating"],["renegotiotion","renegotiation"],["renegotiotions","renegotiations"],["renegotiotor","renegotiator"],["renegotiotors","renegotiators"],["renegotitable","renegotiable"],["renegotitae","renegotiate"],["renegotitaed","renegotiated"],["renegotitaes","renegotiates"],["renegotitaing","renegotiating"],["renegotitaion","renegotiation"],["renegotitaions","renegotiations"],["renegotitaor","renegotiator"],["renegotitaors","renegotiators"],["renegotitate","renegotiate"],["renegotitated","renegotiated"],["renegotitates","renegotiates"],["renegotitating","renegotiating"],["renegotitation","renegotiation"],["renegotitations","renegotiations"],["renegotitator","renegotiator"],["renegotitators","renegotiators"],["renegotite","renegotiate"],["renegotited","renegotiated"],["renegotites","renegotiates"],["renegotiting","renegotiating"],["renegotition","renegotiation"],["renegotitions","renegotiations"],["renegotitor","renegotiator"],["renegotitors","renegotiators"],["renegoziable","renegotiable"],["renegoziate","renegotiate"],["renegoziated","renegotiated"],["renegoziates","renegotiates"],["renegoziating","renegotiating"],["renegoziation","renegotiation"],["renegoziations","renegotiations"],["renegoziator","renegotiator"],["renegoziators","renegotiators"],["reneweal","renewal"],["renewl","renewal"],["renforce","reinforce"],["renforced","reinforced"],["renforcement","reinforcement"],["renforcements","reinforcements"],["renforces","reinforces"],["rennovate","renovate"],["rennovated","renovated"],["rennovating","renovating"],["rennovation","renovation"],["rentime","runtime"],["rentors","renters"],["reoadmap","roadmap"],["reoccurrence","recurrence"],["reoder","reorder"],["reomvable","removable"],["reomve","remove"],["reomved","removed"],["reomves","removes"],["reomving","removing"],["reonly","read-only"],["reopended","reopened"],["reoport","report"],["reopsitory","repository"],["reord","record"],["reorded","reorder"],["reorer","reorder"],["reorganision","reorganisation"],["reorginised","reorganised"],["reorginized","reorganized"],["reosnable","reasonable"],["reosne","reason"],["reosurce","resource"],["reosurced","resourced"],["reosurces","resources"],["reosurcing","resourcing"],["reounded","rounded"],["repace","replace"],["repaced","replaced"],["repacement","replacement"],["repacements","replacements"],["repaces","replaces"],["repacing","replacing"],["repackge","repackage"],["repackged","repackaged"],["repaitnt","repaint"],["reparamterization","reparameterization"],["repblic","republic"],["repblican","republican"],["repblicans","republicans"],["repblics","republics"],["repeates","repeats"],["repeatly","repeatedly"],["repect","respect"],["repectable","respectable"],["repected","respected"],["repecting","respecting"],["repective","respective"],["repectively","respectively"],["repects","respects"],["repedability","repeatability"],["repedable","repeatable"],["repeition","repetition"],["repentence","repentance"],["repentent","repentant"],["reperesent","represent"],["reperesentation","representation"],["reperesentational","representational"],["reperesentations","representations"],["reperesented","represented"],["reperesenting","representing"],["reperesents","represents"],["repersentation","representation"],["repertoir","repertoire"],["repesent","represent"],["repesentation","representation"],["repesentational","representational"],["repesented","represented"],["repesenting","representing"],["repesents","represents"],["repet","repeat"],["repetative","repetitive"],["repete","repeat"],["repeteadly","repeatedly"],["repetetion","repetition"],["repetetions","repetitions"],["repetetive","repetitive"],["repeting","repeating"],["repetion","repetition"],["repetions","repetitions"],["repetive","repetitive"],["repid","rapid"],["repition","repetition"],["repitions","repetitions"],["repitition","repetition"],["repititions","repetitions"],["replacability","replaceability"],["replacables","replaceables"],["replacacing","replacing"],["replacalbe","replaceable"],["replacalbes","replaceables"],["replacament","replacement"],["replacaments","replacements"],["replacate","replicate"],["replacated","replicated"],["replacates","replicates"],["replacating","replicating"],["replacation","replication"],["replacd","replaced"],["replaceemnt","replacement"],["replaceemnts","replacements"],["replacemenet","replacement"],["replacmenet","replacement"],["replacment","replacement"],["replacments","replacements"],["replacong","replacing"],["replaint","repaint"],["replasement","replacement"],["replasements","replacements"],["replcace","replace"],["replcaced","replaced"],["replcaof","replicaof"],["replicae","replicate"],["replicaes","replicates"],["replicaiing","replicating"],["replicaion","replication"],["replicaions","replications"],["replicaite","replicate"],["replicaites","replicates"],["replicaiting","replicating"],["replicaition","replication"],["replicaitions","replications"],["replicaiton","replication"],["replicaitons","replications"],["repling","replying"],["replys","replies"],["reponding","responding"],["reponse","response"],["reponses","responses"],["reponsibilities","responsibilities"],["reponsibility","responsibility"],["reponsible","responsible"],["reporing","reporting"],["reporitory","repository"],["reportadly","reportedly"],["reportign","reporting"],["reportresouces","reportresources"],["reposiotory","repository"],["reposiry","repository"],["repositiories","repositories"],["repositiory","repository"],["repositiroes","repositories"],["reposititioning","repositioning"],["repositorry","repository"],["repositotries","repositories"],["repositotry","repository"],["repositry","repository"],["reposoitory","repository"],["reposond","respond"],["reposonder","responder"],["reposonders","responders"],["reposonding","responding"],["reposonse","response"],["reposonses","responses"],["repostiories","repositories"],["repostiory","repository"],["repostories","repositories"],["repostory","repository"],["repport","report"],["reppository","repository"],["repraesentation","representation"],["repraesentational","representational"],["repraesentations","representations"],["reprecussion","repercussion"],["reprecussions","repercussions"],["repreesnt","represent"],["repreesnted","represented"],["repreesnts","represents"],["reprensent","represent"],["reprensentation","representation"],["reprensentational","representational"],["reprensentations","representations"],["reprepresents","represents"],["represantation","representation"],["represantational","representational"],["represantations","representations"],["represantative","representative"],["represenatation","representation"],["represenatational","representational"],["represenatations","representations"],["represenation","representation"],["represenational","representational"],["represenations","representations"],["represend","represent"],["representaion","representation"],["representaional","representational"],["representaions","representations"],["representaiton","representation"],["representated","represented"],["representating","representing"],["representd","represented"],["representiative","representative"],["represention","representation"],["representions","representations"],["representive","representative"],["representives","representatives"],["represet","represent"],["represetation","representation"],["represeted","represented"],["represeting","representing"],["represets","represents"],["represnet","represent"],["represnetated","represented"],["represnetation","representation"],["represnetations","representations"],["represneted","represented"],["represneting","representing"],["represnets","represents"],["represnt","represent"],["represntation","representation"],["represntative","representative"],["represnted","represented"],["represnts","represents"],["repressent","represent"],["repressentation","representation"],["repressenting","representing"],["repressents","represents"],["reprociblbe","reproducible"],["reprocible","reproducible"],["reprodice","reproduce"],["reprodiced","reproduced"],["reprodicibility","reproducibility"],["reprodicible","reproducible"],["reprodicibly","reproducibly"],["reprodicing","reproducing"],["reprodiction","reproduction"],["reproducabely","reproducibly"],["reproducability","reproducibility"],["reproducable","reproducible"],["reproducablitity","reproducibility"],["reproducably","reproducibly"],["reproduciability","reproduceability"],["reproduciable","reproduceable"],["reproduciblity","reproducibility"],["reprot","report"],["reprots","reports"],["reprsent","represent"],["reprsentation","representation"],["reprsentations","representations"],["reprsented","represented"],["reprsenting","representing"],["reprsents","represents"],["reprtoire","repertoire"],["reprucible","reproducible"],["repsectively","respectively"],["repsonse","response"],["repsonses","responses"],["repsonsible","responsible"],["repspectively","respectively"],["repsresents","represents"],["reptition","repetition"],["repubic","republic"],["repubican","republican"],["repubicans","republicans"],["repubics","republics"],["republi","republic"],["republian","republican"],["republians","republicans"],["republis","republics"],["repulic","republic"],["repulican","republican"],["repulicans","republicans"],["repulics","republics"],["reputpose","repurpose"],["reputposed","repurposed"],["reputposes","repurposes"],["reputposing","repurposing"],["reqest","request"],["reqested","requested"],["reqests","requests"],["reqeuest","request"],["reqeust","request"],["reqeusted","requested"],["reqeusting","requesting"],["reqeusts","requests"],["reqiest","request"],["reqire","require"],["reqired","required"],["reqirement","requirement"],["reqirements","requirements"],["reqires","requires"],["reqiring","requiring"],["reqiure","require"],["reqrite","rewrite"],["reqrites","rewrites"],["requencies","frequencies"],["requency","frequency"],["requeried","required"],["requeriment","requirement"],["requeriments","requirements"],["reques","request"],["requesr","request"],["requestd","requested"],["requestesd","requested"],["requestested","requested"],["requestied","requested"],["requestying","requesting"],["requet","request"],["requeted","requested"],["requeting","requesting"],["requets","requests"],["requeum","requiem"],["requied","required"],["requierd","required"],["requiere","require"],["requiered","required"],["requierement","requirement"],["requierements","requirements"],["requieres","requires"],["requiering","requiring"],["requies","requires"],["requiest","request"],["requiested","requested"],["requiesting","requesting"],["requiests","requests"],["requird","required"],["requireing","requiring"],["requiremenet","requirement"],["requiremenets","requirements"],["requiremnt","requirement"],["requirment","requirement"],["requirments","requirements"],["requisit","requisite"],["requisits","requisites"],["requre","require"],["requred","required"],["requrement","requirement"],["requrements","requirements"],["requres","requires"],["requrest","request"],["requrested","requested"],["requresting","requesting"],["requrests","requests"],["requried","required"],["requriement","requirement"],["requriements","requirements"],["requries","requires"],["requriment","requirement"],["requring","requiring"],["requrired","required"],["requrirement","requirement"],["requrirements","requirements"],["requris","require"],["requsite","requisite"],["requsites","requisites"],["requst","request"],["requsted","requested"],["requsting","requesting"],["requsts","requests"],["reregisteration","reregistration"],["rererences","references"],["rerference","reference"],["rerferences","references"],["rerpesentation","representation"],["rertieve","retrieve"],["rertieved","retrieved"],["rertiever","retriever"],["rertievers","retrievers"],["rertieves","retrieves"],["reruirement","requirement"],["reruirements","requirements"],["reruning","rerunning"],["rerwite","rewrite"],["resarch","research"],["resart","restart"],["resarts","restarts"],["resaurant","restaurant"],["resaurants","restaurants"],["rescaned","rescanned"],["rescource","resource"],["rescourced","resourced"],["rescources","resources"],["rescourcing","resourcing"],["rescrition","restriction"],["rescritions","restrictions"],["rescueing","rescuing"],["reseach","research"],["reseached","researched"],["researvation","reservation"],["researvations","reservations"],["researve","reserve"],["researved","reserved"],["researves","reserves"],["researving","reserving"],["reselction","reselection"],["resembelance","resemblance"],["resembes","resembles"],["resemblence","resemblance"],["resently","recently"],["resepect","respect"],["resepected","respected"],["resepecting","respecting"],["resepective","respective"],["resepectively","respectively"],["resepects","respects"],["reseration","reservation"],["reserv","reserve"],["reserverd","reserved"],["reservered","reserved"],["resestatus","resetstatus"],["resetable","resettable"],["reseted","reset"],["reseting","resetting"],["resetted","reset"],["reseved","reserved"],["reseverd","reserved"],["resevered","reserved"],["resevering","reserving"],["resevoir","reservoir"],["resgister","register"],["resgisters","registers"],["residental","residential"],["resierfs","reiserfs"],["resignement","resignment"],["resilence","resilience"],["resistable","resistible"],["resistence","resistance"],["resistent","resistant"],["resitance","resistance"],["resitances","resistances"],["resitor","resistor"],["resitors","resistors"],["resivwar","reservoir"],["resizeable","resizable"],["resizeble","resizable"],["reslection","reselection"],["reslove","resolve"],["resloved","resolved"],["resloves","resolves"],["resloving","resolving"],["reslut","result"],["resluts","results"],["resoect","respect"],["resoective","respective"],["resoiurce","resource"],["resoiurced","resourced"],["resoiurces","resources"],["resoiurcing","resourcing"],["resoltion","resolution"],["resoltuion","resolution"],["resoltuions","resolutions"],["resoluitons","resolutions"],["resolutin","resolution"],["resolutino","resolution"],["resolutinos","resolutions"],["resolutins","resolutions"],["resoluton","resolution"],["resolvinf","resolving"],["reson","reason"],["resonable","reasonable"],["resons","reasons"],["resonse","response"],["resonses","responses"],["resoource","resource"],["resoourced","resourced"],["resoources","resources"],["resoourcing","resourcing"],["resopnse","response"],["resopnses","responses"],["resorce","resource"],["resorced","resourced"],["resorces","resources"],["resorcing","resourcing"],["resore","restore"],["resorece","resource"],["resoreces","resources"],["resoruce","resource"],["resoruced","resourced"],["resoruces","resources"],["resorucing","resourcing"],["resotration","restoration"],["resotrations","restorations"],["resotrative","restorative"],["resotre","restore"],["resotrer","restorer"],["resotrers","restorers"],["resotres","restores"],["resotring","restoring"],["resouce","resource"],["resouced","resourced"],["resouces","resources"],["resoucing","resourcing"],["resoultion","resolution"],["resoultions","resolutions"],["resourcees","resources"],["resourceype","resourcetype"],["resoure","resource"],["resourecs","resources"],["resoured","resourced"],["resoures","resources"],["resourses","resources"],["resoution","resolution"],["resoves","resolves"],["resovle","resolve"],["resovled","resolved"],["resovles","resolves"],["resovling","resolving"],["respawining","respawning"],["respecitve","respective"],["respecitvely","respectively"],["respecive","respective"],["respecively","respectively"],["respectivelly","respectively"],["respectivley","respectively"],["respectivly","respectively"],["respnse","response"],["respnses","responses"],["respoduce","reproduce"],["responce","response"],["responces","responses"],["responibilities","responsibilities"],["responisble","responsible"],["responnsibilty","responsibility"],["responsabilities","responsibilities"],["responsability","responsibility"],["responsable","responsible"],["responsbile","responsible"],["responser's","responder's"],["responser","responder"],["responsers","responders"],["responsess","responses"],["responsibile","responsible"],["responsibilites","responsibilities"],["responsibilty","responsibility"],["responsiblities","responsibilities"],["responsiblity","responsibility"],["responsing","responding"],["respose","response"],["resposes","responses"],["resposibility","responsibility"],["resposible","responsible"],["resposiblity","responsibility"],["respositories","repositories"],["respository","repository"],["resposive","responsive"],["resposiveness","responsiveness"],["resposne","response"],["resposnes","responses"],["respresent","represent"],["respresentation","representation"],["respresentational","representational"],["respresentations","representations"],["respresented","represented"],["respresenting","representing"],["respresents","represents"],["resquest","request"],["resrouce","resource"],["resrouced","resourced"],["resrouces","resources"],["resroucing","resourcing"],["reSructuredText","reStructuredText"],["resrved","reserved"],["ressapee","recipe"],["ressemblance","resemblance"],["ressemble","resemble"],["ressembled","resembled"],["ressemblence","resemblance"],["ressembling","resembling"],["ressemle","resemble"],["resset","reset"],["resseted","reset"],["ressets","resets"],["ressetting","resetting"],["ressize","resize"],["ressizes","resizes"],["ressource","resource"],["ressourced","resourced"],["ressources","resources"],["ressourcing","resourcing"],["resssurecting","resurrecting"],["ressult","result"],["ressurect","resurrect"],["ressurected","resurrected"],["ressurecting","resurrecting"],["ressurection","resurrection"],["ressurects","resurrects"],["ressurrection","resurrection"],["restarant","restaurant"],["restarants","restaurants"],["restaraunt","restaurant"],["restaraunteur","restaurateur"],["restaraunteurs","restaurateurs"],["restaraunts","restaurants"],["restauranteurs","restaurateurs"],["restauration","restoration"],["restauraunt","restaurant"],["restaurnad","restaurant"],["restaurnat","restaurant"],["resteraunt","restaurant"],["resteraunts","restaurants"],["restes","reset"],["restesting","retesting"],["resticted","restricted"],["restoding","restoring"],["restoiring","restoring"],["restor","restore"],["restorated","restored"],["restoreable","restorable"],["restoreble","restorable"],["restoreing","restoring"],["restors","restores"],["restouration","restoration"],["restrcted","restricted"],["restrcuture","restructure"],["restriced","restricted"],["restroing","restoring"],["reStructuredTetx","reStructuredText"],["reStructuredTxet","reStructuredText"],["reStrucuredText","reStructuredText"],["restuarant","restaurant"],["restuarants","restaurants"],["reStucturedText","reStructuredText"],["restucturing","restructuring"],["reStucuredText","reStructuredText"],["resturant","restaurant"],["resturants","restaurants"],["resturaunt","restaurant"],["resturaunts","restaurants"],["resturcturation","restructuration"],["resturcture","restructure"],["resturctured","restructured"],["resturctures","restructures"],["resturcturing","restructuring"],["resturns","returns"],["resuable","reusable"],["resuables","reusables"],["resubstituion","resubstitution"],["resuction","reduction"],["resuilt","result"],["resuilted","resulted"],["resuilting","resulting"],["resuilts","results"],["resul","result"],["resuling","resulting"],["resullt","result"],["resulotion","resolution"],["resulsets","resultsets"],["resulst","results"],["resultion","resolution"],["resultions","resolutions"],["resultung","resulting"],["resulution","resolution"],["resumbmitting","resubmitting"],["resumitted","resubmitted"],["resumt","resume"],["resuorce","resource"],["resuorced","resourced"],["resuorces","resources"],["resuorcing","resourcing"],["resurce","resource"],["resurced","resourced"],["resurces","resources"],["resurcing","resourcing"],["resurecting","resurrecting"],["resursively","recursively"],["resuse","reuse"],["resuts","results"],["resycn","resync"],["retalitated","retaliated"],["retalitation","retaliation"],["retangles","rectangles"],["retanslate","retranslate"],["rether","rather"],["retieve","retrieve"],["retieved","retrieved"],["retieves","retrieves"],["retieving","retrieving"],["retinew","retinue"],["retireve","retrieve"],["retireved","retrieved"],["retirever","retriever"],["retirevers","retrievers"],["retireves","retrieves"],["retireving","retrieving"],["retirned","returned"],["retore","restore"],["retored","restored"],["retores","restores"],["retoric","rhetoric"],["retorical","rhetorical"],["retoring","restoring"],["retourned","returned"],["retpresenting","representing"],["retquirement","requirement"],["retquirements","requirements"],["retquireseek","requireseek"],["retquiresgpos","requiresgpos"],["retquiresgsub","requiresgsub"],["retquiressl","requiressl"],["retranser","retransfer"],["retransferd","retransferred"],["retransfered","retransferred"],["retransfering","retransferring"],["retransferrd","retransferred"],["retransmited","retransmitted"],["retransmition","retransmission"],["retreevable","retrievable"],["retreeval","retrieval"],["retreeve","retrieve"],["retreeved","retrieved"],["retreeves","retrieves"],["retreeving","retrieving"],["retreivable","retrievable"],["retreival","retrieval"],["retreive","retrieve"],["retreived","retrieved"],["retreives","retrieves"],["retreiving","retrieving"],["retrevable","retrievable"],["retreval","retrieval"],["retreve","retrieve"],["retreved","retrieved"],["retreves","retrieves"],["retreving","retrieving"],["retrict","restrict"],["retricted","restricted"],["retriebe","retrieve"],["retriece","retrieve"],["retrieces","retrieves"],["retriev","retrieve"],["retrieveds","retrieved"],["retrive","retrieve"],["retrived","retrieved"],["retrives","retrieves"],["retriving","retrieving"],["retrn","return"],["retrned","returned"],["retrns","returns"],["retrun","return"],["retruned","returned"],["retruns","returns"],["retrvieve","retrieve"],["retrvieved","retrieved"],["retrviever","retriever"],["retrvievers","retrievers"],["retrvieves","retrieves"],["retsart","restart"],["retsarts","restarts"],["retun","return"],["retunrned","returned"],["retunrs","returns"],["retuns","returns"],["retur","return"],["reture","return"],["retured","returned"],["returend","returned"],["retures","returns"],["returing","returning"],["returm","return"],["returmed","returned"],["returming","returning"],["returms","returns"],["returnd","returned"],["returnes","returns"],["returnig","returning"],["returnn","return"],["returnned","returned"],["returnning","returning"],["returs","returns"],["retursn","returns"],["retutning","returning"],["retyring","retrying"],["reudce","reduce"],["reudced","reduced"],["reudces","reduces"],["reudction","reduction"],["reudctions","reductions"],["reuest","request"],["reuests","requests"],["reulator","regulator"],["reundant","redundant"],["reundantly","redundantly"],["reuplad","reupload"],["reupladed","reuploaded"],["reuplader","reuploader"],["reupladers","reuploaders"],["reuplading","reuploading"],["reuplads","reuploads"],["reuplaod","reupload"],["reuplaoded","reuploaded"],["reuplaoder","reuploader"],["reuplaoders","reuploaders"],["reuplaoding","reuploading"],["reuplaods","reuploads"],["reuplod","reupload"],["reuploded","reuploaded"],["reuploder","reuploader"],["reuploders","reuploaders"],["reuploding","reuploading"],["reuplods","reuploads"],["reuqest","request"],["reuqested","requested"],["reuqesting","requesting"],["reuqests","requests"],["reurn","return"],["reursively","recursively"],["reuslt","result"],["reussing","reusing"],["reutnred","returned"],["reutrn","return"],["reutrns","returns"],["revaildating","revalidating"],["revaluated","reevaluated"],["reveiw","review"],["reveiwed","reviewed"],["reveiwer","reviewer"],["reveiwers","reviewers"],["reveiwing","reviewing"],["reveiws","reviews"],["revelent","relevant"],["revelution","revolution"],["revelutions","revolutions"],["reveokes","revokes"],["reverce","reverse"],["reverced","reversed"],["revereces","references"],["reverese","reverse"],["reveresed","reversed"],["reveret","revert"],["revereted","reverted"],["reversable","reversible"],["reverse-engeneer","reverse-engineer"],["reverse-engeneering","reverse-engineering"],["reverse-engieer","reverse-engineer"],["reverseed","reversed"],["reversees","reverses"],["reverve","reserve"],["reverved","reserved"],["revewrse","reverse"],["reviewl","review"],["reviewsectio","reviewsection"],["revisisions","revisions"],["revison","revision"],["revisons","revisions"],["revist","revisit"],["revisted","revisited"],["revisting","revisiting"],["revists","revisits"],["reviwed","reviewed"],["reviwer","reviewer"],["reviwers","reviewers"],["reviwing","reviewing"],["revoluion","revolution"],["revolutionar","revolutionary"],["revrese","reverse"],["revrieve","retrieve"],["revrieved","retrieved"],["revriever","retriever"],["revrievers","retrievers"],["revrieves","retrieves"],["revsion","revision"],["rewiev","review"],["rewieved","reviewed"],["rewiever","reviewer"],["rewieving","reviewing"],["rewievs","reviews"],["rewirtable","rewritable"],["rewirte","rewrite"],["rewirtten","rewritten"],["rewitable","rewritable"],["rewite","rewrite"],["rewitten","rewritten"],["reworkd","reworked"],["rewriet","rewrite"],["rewriite","rewrite"],["rewriten","rewritten"],["rewritting","rewriting"],["rewuired","required"],["rference","reference"],["rferences","references"],["rfeturned","returned"],["rgister","register"],["rhymme","rhyme"],["rhythem","rhythm"],["rhythim","rhythm"],["rhythimcally","rhythmically"],["rhytmic","rhythmic"],["ridiculus","ridiculous"],["righ","right"],["righht","right"],["righmost","rightmost"],["rightt","right"],["rigourous","rigorous"],["rigt","right"],["rigth","right"],["rigths","rights"],["rigurous","rigorous"],["riminder","reminder"],["riminders","reminders"],["riminding","reminding"],["rimitives","primitives"],["rininging","ringing"],["rispective","respective"],["ristrict","restrict"],["ristricted","restricted"],["ristriction","restriction"],["ritable","writable"],["rivised","revised"],["rizes","rises"],["rlation","relation"],["rlse","else"],["rmeote","remote"],["rmeove","remove"],["rmeoved","removed"],["rmeoves","removes"],["rmove","remove"],["rmoved","removed"],["rmoving","removing"],["roataion","rotation"],["roatation","rotation"],["roated","rotated"],["roation","rotation"],["roboustness","robustness"],["robustnes","robustness"],["Rockerfeller","Rockefeller"],["rococco","rococo"],["rocord","record"],["rocorded","recorded"],["rocorder","recorder"],["rocording","recording"],["rocordings","recordings"],["rocords","records"],["roduceer","producer"],["roigin","origin"],["roiginal","original"],["roiginally","originally"],["roiginals","originals"],["roiginating","originating"],["roigins","origins"],["romote","remote"],["romoted","remoted"],["romoteing","remoting"],["romotely","remotely"],["romotes","remotes"],["romoting","remoting"],["romotly","remotely"],["roomate","roommate"],["ropeat","repeat"],["rorated","rotated"],["rosponse","response"],["rosponsive","responsive"],["rotaion","rotation"],["rotaions","rotations"],["rotaiton","rotation"],["rotaitons","rotations"],["rotat","rotate"],["rotataion","rotation"],["rotataions","rotations"],["rotateable","rotatable"],["rouding","rounding"],["roughtly","roughly"],["rougly","roughly"],["rouine","routine"],["rouines","routines"],["round-robbin","round-robin"],["roundign","rounding"],["roung","round"],["rountine","routine"],["rountines","routines"],["routiens","routines"],["routins","routines"],["rovide","provide"],["rovided","provided"],["rovider","provider"],["rovides","provides"],["roviding","providing"],["rqeuested","requested"],["rqeuesting","requesting"],["rquested","requested"],["rquesting","requesting"],["rquire","require"],["rquired","required"],["rquirement","requirement"],["rquires","requires"],["rquiring","requiring"],["rranslation","translation"],["rranslations","translations"],["rrase","erase"],["rrror","error"],["rrrored","errored"],["rrroring","erroring"],["rrrors","errors"],["rubarb","rhubarb"],["rucuperate","recuperate"],["rudimentally","rudimentary"],["rudimentatry","rudimentary"],["rudimentory","rudimentary"],["rudimentry","rudimentary"],["rulle","rule"],["rumatic","rheumatic"],["runn","run"],["runnig","running"],["runnign","running"],["runnigng","running"],["runnin","running"],["runnint","running"],["runnners","runners"],["runnning","running"],["runns","runs"],["runnung","running"],["runting","runtime"],["rurrent","current"],["russina","Russian"],["Russion","Russian"],["rwite","write"],["rysnc","rsync"],["rythem","rhythm"],["rythim","rhythm"],["rythm","rhythm"],["rythmic","rhythmic"],["rythyms","rhythms"],["saame","same"],["sabatage","sabotage"],["sabatour","saboteur"],["sacalar","scalar"],["sacalars","scalars"],["sacarin","saccharin"],["sacle","scale"],["sacrafice","sacrifice"],["sacreligious","sacrilegious"],["Sacremento","Sacramento"],["sacrifical","sacrificial"],["sacrifying","sacrificing"],["sacrilegeous","sacrilegious"],["sacrin","saccharin"],["sade","sad"],["saem","same"],["safe-pooint","safe-point"],["safe-pooints","safe-points"],["safeing","saving"],["safepooint","safepoint"],["safepooints","safepoints"],["safequard","safeguard"],["saferi","Safari"],["safetly","safely"],["safly","safely"],["saftey","safety"],["safty","safety"],["saggital","sagittal"],["sagital","sagittal"],["Sagitarius","Sagittarius"],["sais","says"],["saleries","salaries"],["salery","salary"],["salveof","slaveof"],["samle","sample"],["samled","sampled"],["samll","small"],["samller","smaller"],["sammon","salmon"],["samori","samurai"],["sampel","sample"],["sampeld","sampled"],["sampels","samples"],["samwich","sandwich"],["samwiches","sandwiches"],["sanaty","sanity"],["sanctionning","sanctioning"],["sandobx","sandbox"],["sandwhich","sandwich"],["Sanhedrim","Sanhedrin"],["sanitizisation","sanitization"],["sanizer","sanitizer"],["sanpshot","snapshot"],["sanpsnots","snapshots"],["sansitizer","sanitizer"],["sansitizers","sanitizers"],["santioned","sanctioned"],["santize","sanitize"],["santized","sanitized"],["santizes","sanitizes"],["santizing","sanitizing"],["sanwich","sandwich"],["sanwiches","sandwiches"],["sanytise","sanitise"],["sanytize","sanitize"],["saphire","sapphire"],["saphires","sapphires"],["sargant","sergeant"],["sargeant","sergeant"],["sarted","started"],["sarter","starter"],["sarters","starters"],["sastisfies","satisfies"],["satandard","standard"],["satandards","standards"],["satelite","satellite"],["satelites","satellites"],["satelitte","satellite"],["satellittes","satellites"],["satement","statement"],["satements","statements"],["saterday","Saturday"],["saterdays","Saturdays"],["satified","satisfied"],["satifies","satisfies"],["satifsy","satisfy"],["satify","satisfy"],["satifying","satisfying"],["satisfactority","satisfactorily"],["satisfiabilty","satisfiability"],["satisfing","satisfying"],["satisfyied","satisfied"],["satisifed","satisfied"],["satisified","satisfied"],["satisifies","satisfies"],["satisify","satisfy"],["satisifying","satisfying"],["satistying","satisfying"],["satric","satiric"],["satrical","satirical"],["satrically","satirically"],["sattelite","satellite"],["sattelites","satellites"],["sattellite","satellite"],["sattellites","satellites"],["satuaday","Saturday"],["satuadays","Saturdays"],["saturdey","Saturday"],["satursday","Saturday"],["satus","status"],["saught","sought"],["sav","save"],["savees","saves"],["saveing","saving"],["savely","safely"],["savere","severe"],["savety","safety"],["savgroup","savegroup"],["savy","savvy"],["saxaphone","saxophone"],["sbsampling","subsampling"],["scahr","schar"],["scalarr","scalar"],["scaleability","scalability"],["scaleable","scalable"],["scaleing","scaling"],["scalled","scaled"],["scandanavia","Scandinavia"],["scaned","scanned"],["scaning","scanning"],["scannning","scanning"],["scaricity","scarcity"],["scavange","scavenge"],["scavanged","scavenged"],["scavanger","scavenger"],["scavangers","scavengers"],["scavanges","scavenges"],["sccope","scope"],["sceanrio","scenario"],["sceanrios","scenarios"],["scecified","specified"],["scenarion","scenario"],["scenarions","scenarios"],["scenegraaph","scenegraph"],["scenegraaphs","scenegraphs"],["sceond","second"],["sceonds","seconds"],["scetch","sketch"],["scetched","sketched"],["scetches","sketches"],["scetching","sketching"],["schdule","schedule"],["schduled","scheduled"],["schduleing","scheduling"],["schduler","scheduler"],["schdules","schedules"],["schduling","scheduling"],["schedual","schedule"],["scheduald","scheduled"],["schedualed","scheduled"],["schedualing","scheduling"],["schedulier","scheduler"],["schedulling","scheduling"],["scheduluing","scheduling"],["schem","scheme"],["schemd","schemed"],["schems","schemes"],["schme","scheme"],["schmea","schema"],["schmeas","schemas"],["schmes","schemes"],["scholarhip","scholarship"],["scholarhips","scholarships"],["scholdn't","shouldn't"],["schould","should"],["scientfic","scientific"],["scientfically","scientifically"],["scientficaly","scientifically"],["scientficly","scientifically"],["scientifc","scientific"],["scientifcally","scientifically"],["scientifcaly","scientifically"],["scientifcly","scientifically"],["scientis","scientist"],["scientiss","scientist"],["scince","science"],["scinece","science"],["scintiallation","scintillation"],["scintillatqt","scintillaqt"],["scipted","scripted"],["scipting","scripting"],["sciript","script"],["sciripts","scripts"],["scirpt","script"],["scirpts","scripts"],["scketch","sketch"],["scketched","sketched"],["scketches","sketches"],["scketching","sketching"],["sclar","scalar"],["scneario","scenario"],["scnearios","scenarios"],["scoket","socket"],["scoll","scroll"],["scolling","scrolling"],["scondary","secondary"],["scopeing","scoping"],["scorebord","scoreboard"],["scources","sources"],["scrach","scratch"],["scrached","scratched"],["scraches","scratches"],["scraching","scratching"],["scrachs","scratches"],["scrao","scrap"],["screeb","screen"],["screebs","screens"],["screenchot","screenshot"],["screenchots","screenshots"],["screenwrighter","screenwriter"],["screnn","screen"],["scriopted","scripted"],["scriopting","scripting"],["scriopts","scripts"],["scriopttype","scripttype"],["scriping","scripting"],["scripst","scripts"],["scriptype","scripttype"],["scritp","script"],["scritped","scripted"],["scritping","scripting"],["scritps","scripts"],["scritpt","script"],["scritpts","scripts"],["scroipt","script"],["scroipted","scripted"],["scroipting","scripting"],["scroipts","scripts"],["scroipttype","scripttype"],["scrollablbe","scrollable"],["scrollin","scrolling"],["scroolbar","scrollbar"],["scrpt","script"],["scrpted","scripted"],["scrpting","scripting"],["scrpts","scripts"],["scrren","screen"],["scrutinity","scrutiny"],["scubscribe","subscribe"],["scubscribed","subscribed"],["scubscriber","subscriber"],["scubscribes","subscribes"],["scuccessully","successfully"],["scupt","sculpt"],["scupted","sculpted"],["scupting","sculpting"],["scupture","sculpture"],["scuptures","sculptures"],["seach","search"],["seached","searched"],["seaches","searches"],["seaching","searching"],["seachkey","searchkey"],["seacrchable","searchable"],["seamlessley","seamlessly"],["seamlessy","seamlessly"],["searcahble","searchable"],["searcheable","searchable"],["searchin","searching"],["searchs","searches"],["seatch","search"],["seccond","second"],["secconds","seconds"],["secction","section"],["secene","scene"],["secific","specific"],["secion","section"],["secions","sections"],["secirity","security"],["seciton","section"],["secitons","sections"],["secne","scene"],["secod","second"],["secods","seconds"],["seconadry","secondary"],["seconcary","secondary"],["secondaray","secondary"],["seconday","secondary"],["seconf","second"],["seconfs","seconds"],["seconly","secondly"],["secont","second"],["secontary","secondary"],["secontly","secondly"],["seconts","seconds"],["secord","second"],["secords","seconds"],["secotr","sector"],["secound","second"],["secoundary","secondary"],["secoundly","secondly"],["secounds","seconds"],["secquence","sequence"],["secratary","secretary"],["secretery","secretary"],["secrion","section"],["secruity","security"],["sectin","section"],["sectins","sections"],["sectionning","sectioning"],["secton","section"],["sectoned","sectioned"],["sectoning","sectioning"],["sectons","sections"],["sectopm","section"],["sectopmed","sectioned"],["sectopming","sectioning"],["sectopms","sections"],["sectopn","section"],["sectopned","sectioned"],["sectopning","sectioning"],["sectopns","sections"],["secue","secure"],["secuely","securely"],["secuence","sequence"],["secuenced","sequenced"],["secuences","sequences"],["secuencial","sequential"],["secuencing","sequencing"],["secuirty","security"],["secuity","security"],["secund","second"],["secunds","seconds"],["securiy","security"],["securiyt","security"],["securly","securely"],["securre","secure"],["securrely","securely"],["securrly","securely"],["securtity","security"],["securtiy","security"],["securty","security"],["securuity","security"],["sedereal","sidereal"],["seeem","seem"],["seeen","seen"],["seelect","select"],["seelected","selected"],["seemes","seems"],["seemless","seamless"],["seemlessly","seamlessly"],["seesion","session"],["seesions","sessions"],["seetings","settings"],["seeverities","severities"],["seeverity","severity"],["segault","segfault"],["segaults","segfaults"],["segement","segment"],["segementation","segmentation"],["segemented","segmented"],["segements","segments"],["segemnts","segments"],["segfualt","segfault"],["segfualts","segfaults"],["segmantation","segmentation"],["segmend","segment"],["segmendation","segmentation"],["segmended","segmented"],["segmends","segments"],["segmenet","segment"],["segmenetd","segmented"],["segmeneted","segmented"],["segmenets","segments"],["segmenst","segments"],["segmentaion","segmentation"],["segmente","segment"],["segmentes","segments"],["segmetn","segment"],["segmetned","segmented"],["segmetns","segments"],["segument","segment"],["seguoys","segues"],["seh","she"],["seige","siege"],["seing","seeing"],["seinor","senior"],["seires","series"],["sekect","select"],["sekected","selected"],["sekects","selects"],["selcetion","selection"],["selct","select"],["selctable","selectable"],["selctables","selectable"],["selcted","selected"],["selcting","selecting"],["selction","selection"],["selctions","selections"],["seldomly","seldom"],["selecction","selection"],["selecctions","selections"],["seleced","selected"],["selecetd","selected"],["seleceted","selected"],["selecgt","select"],["selecgted","selected"],["selecgting","selecting"],["selecing","selecting"],["selecrtion","selection"],["selectd","selected"],["selectes","selects"],["selectoin","selection"],["selecton","selection"],["selectons","selections"],["seledted","selected"],["selektions","selections"],["selektor","selector"],["selet","select"],["selets","selects"],["self-comparisson","self-comparison"],["self-contianed","self-contained"],["self-referencial","self-referential"],["self-refering","self-referring"],["selfs","self"],["sellect","select"],["sellected","selected"],["selv","self"],["semaintics","semantics"],["semaphone","semaphore"],["semaphones","semaphores"],["semaphor","semaphore"],["semaphors","semaphores"],["semapthore","semaphore"],["semapthores","semaphores"],["sematic","semantic"],["sematical","semantical"],["sematically","semantically"],["sematics","semantics"],["sematnics","semantics"],["semding","sending"],["sementation","segmentation"],["sementic","semantic"],["sementically","semantically"],["sementics","semantics"],["semgent","segment"],["semgentation","segmentation"],["semicolor","semicolon"],["semicolumn","semicolon"],["semicondutor","semiconductor"],["sempahore","semaphore"],["sempahores","semaphores"],["sempaphore","semaphore"],["sempaphores","semaphores"],["semphore","semaphore"],["semphores","semaphores"],["sempphore","semaphore"],["senaphore","semaphore"],["senaphores","semaphores"],["senario","scenario"],["senarios","scenarios"],["sencond","second"],["sencondary","secondary"],["senconds","seconds"],["sendign","sending"],["sendinging","sending"],["sendinng","sending"],["senfile","sendfile"],["senintels","sentinels"],["senitnel","sentinel"],["senitnels","sentinels"],["senquence","sequence"],["sensative","sensitive"],["sensetive","sensitive"],["sensisble","sensible"],["sensistive","sensitive"],["sensititive","sensitive"],["sensititivies","sensitivities"],["sensititivity","sensitivity"],["sensititivy","sensitivity"],["sensitiv","sensitive"],["sensitiveties","sensitivities"],["sensitivety","sensitivity"],["sensitivites","sensitivities"],["sensitivties","sensitivities"],["sensitivty","sensitivity"],["sensitve","sensitive"],["senstive","sensitive"],["sensure","censure"],["sentance","sentence"],["sentances","sentences"],["senteces","sentences"],["sentense","sentence"],["sentienl","sentinel"],["sentinal","sentinel"],["sentinals","sentinels"],["sention","section"],["sentions","sections"],["sentive","sensitive"],["sentivite","sensitive"],["sepaate","separate"],["separartor","separator"],["separat","separate"],["separatelly","separately"],["separater","separator"],["separatley","separately"],["separatly","separately"],["separato","separator"],["separatos","separators"],["separatring","separating"],["separed","separated"],["separete","separate"],["separeted","separated"],["separetedly","separately"],["separetely","separately"],["separeter","separator"],["separetes","separates"],["separeting","separating"],["separetly","separately"],["separetor","separator"],["separtates","separates"],["separte","separate"],["separted","separated"],["separtes","separates"],["separting","separating"],["sepatae","separate"],["sepatate","separate"],["sepcial","special"],["sepcific","specific"],["sepcifically","specifically"],["sepcification","specification"],["sepcifications","specifications"],["sepcified","specified"],["sepcifier","specifier"],["sepcifies","specifies"],["sepcify","specify"],["sepcifying","specifying"],["sepearable","separable"],["sepearate","separate"],["sepearated","separated"],["sepearately","separately"],["sepearates","separates"],["sepearation","separation"],["sepearator","separator"],["sepearators","separators"],["sepearet","separate"],["sepearetly","separately"],["sepearte","separate"],["sepearted","separated"],["sepeartely","separately"],["sepeartes","separates"],["sepeartor","separator"],["sepeartors","separators"],["sepeate","separate"],["sepeated","separated"],["sepeates","separates"],["sepeator","separator"],["sepeators","separators"],["sepecial","special"],["sepecifed","specified"],["sepecific","specific"],["sepecification","specification"],["sepecified","specified"],["sepecifier","specifier"],["sepecifiers","specifiers"],["sepecifies","specifies"],["sepecify","specify"],["sepectral","spectral"],["sepeicfy","specify"],["sependent","dependent"],["sepending","depending"],["seperable","separable"],["seperad","separate"],["seperadly","separately"],["seperaly","separately"],["seperaor","separator"],["seperaors","separators"],["seperare","separate"],["seperared","separated"],["seperares","separates"],["seperat","separate"],["seperataed","separated"],["seperatally","separately"],["seperataly","separately"],["seperatated","separated"],["seperatd","separated"],["seperate","separate"],["seperated","separated"],["seperatedly","separately"],["seperatedy","separated"],["seperateely","separately"],["seperateing","separating"],["seperatelly","separately"],["seperately","separately"],["seperater","separator"],["seperaters","separators"],["seperates","separates"],["seperating","separating"],["seperation","separation"],["seperations","separations"],["seperatism","separatism"],["seperatist","separatist"],["seperatley","separately"],["seperatly","separately"],["seperato","separator"],["seperator","separator"],["seperators","separators"],["seperatos","separators"],["sepereate","separate"],["sepereated","separated"],["sepereates","separates"],["sepererate","separate"],["sepererated","separated"],["sepererates","separates"],["seperete","separate"],["sepereted","separated"],["seperetes","separates"],["seperratly","separately"],["sepertator","separator"],["sepertators","separators"],["sepertor","separator"],["sepertors","separators"],["sepetaror","separator"],["sepetarors","separators"],["sepetate","separate"],["sepetated","separated"],["sepetately","separately"],["sepetates","separates"],["sepina","subpoena"],["seporate","separate"],["sepparation","separation"],["sepparations","separations"],["sepperate","separate"],["seprarate","separate"],["seprate","separate"],["seprated","separated"],["seprator","separator"],["seprators","separators"],["Septemer","September"],["seqence","sequence"],["seqenced","sequenced"],["seqences","sequences"],["seqencing","sequencing"],["seqense","sequence"],["seqensed","sequenced"],["seqenses","sequences"],["seqensing","sequencing"],["seqenstial","sequential"],["seqential","sequential"],["seqeuence","sequence"],["seqeuencer","sequencer"],["seqeuental","sequential"],["seqeunce","sequence"],["seqeuncer","sequencer"],["seqeuntials","sequentials"],["sequcne","sequence"],["sequece","sequence"],["sequecence","sequence"],["sequecences","sequences"],["sequeces","sequences"],["sequeence","sequence"],["sequelce","sequence"],["sequemce","sequence"],["sequemces","sequences"],["sequencial","sequential"],["sequencially","sequentially"],["sequencies","sequences"],["sequense","sequence"],["sequensed","sequenced"],["sequenses","sequences"],["sequensing","sequencing"],["sequenstial","sequential"],["sequentialy","sequentially"],["sequenzes","sequences"],["sequetial","sequential"],["sequnce","sequence"],["sequnced","sequenced"],["sequncer","sequencer"],["sequncers","sequencers"],["sequnces","sequences"],["sequnece","sequence"],["sequneces","sequences"],["ser","set"],["serach","search"],["serached","searched"],["seracher","searcher"],["seraches","searches"],["seraching","searching"],["serachs","searches"],["serailisation","serialisation"],["serailise","serialise"],["serailised","serialised"],["serailization","serialization"],["serailize","serialize"],["serailized","serialized"],["serailse","serialise"],["serailsed","serialised"],["serailze","serialize"],["serailzed","serialized"],["serch","search"],["serched","searched"],["serches","searches"],["serching","searching"],["sercive","service"],["sercived","serviced"],["sercives","services"],["serciving","servicing"],["sereverless","serverless"],["serevrless","serverless"],["sergent","sergeant"],["serialialisation","serialisation"],["serialialise","serialise"],["serialialised","serialised"],["serialialises","serialises"],["serialialising","serialising"],["serialialization","serialization"],["serialialize","serialize"],["serialialized","serialized"],["serialializes","serializes"],["serialializing","serializing"],["serialiasation","serialisation"],["serialiazation","serialization"],["serialsiation","serialisation"],["serialsie","serialise"],["serialsied","serialised"],["serialsies","serialises"],["serialsing","serialising"],["serialziation","serialization"],["serialzie","serialize"],["serialzied","serialized"],["serialzies","serializes"],["serialzing","serializing"],["serice","service"],["serie","series"],["seriel","serial"],["serieses","series"],["serios","serious"],["seriouly","seriously"],["seriuos","serious"],["serivce","service"],["serivces","services"],["sersies","series"],["sertificate","certificate"],["sertificated","certificated"],["sertificates","certificates"],["sertification","certification"],["servece","service"],["serveced","serviced"],["serveces","services"],["servecing","servicing"],["serveice","service"],["serveiced","serviced"],["serveices","services"],["serveicing","servicing"],["serveless","serverless"],["serveral","several"],["serverite","severity"],["serverites","severities"],["serverities","severities"],["serverity","severity"],["serverles","serverless"],["serverlesss","serverless"],["serverlsss","serverless"],["servicies","services"],["servie","service"],["servies","services"],["servive","service"],["servoce","service"],["servoced","serviced"],["servoces","services"],["servocing","servicing"],["sesion","session"],["sesions","sessions"],["sesitive","sensitive"],["sesitively","sensitively"],["sesitiveness","sensitiveness"],["sesitivity","sensitivity"],["sessio","session"],["sesssion","session"],["sesssions","sessions"],["sestatusbar","setstatusbar"],["sestatusmsg","setstatusmsg"],["setevn","setenv"],["setgit","setgid"],["seting","setting"],["setings","settings"],["setion","section"],["setions","sections"],["setitng","setting"],["setitngs","settings"],["setquential","sequential"],["setted","set"],["settelement","settlement"],["settign","setting"],["settigns","settings"],["settigs","settings"],["settiing","setting"],["settiings","settings"],["settinga","settings"],["settingss","settings"],["settins","settings"],["settlment","settlement"],["settng","setting"],["settter","setter"],["settters","setters"],["settting","setting"],["setttings","settings"],["settup","setup"],["setyp","setup"],["setyps","setups"],["seuence","sequence"],["seuences","sequences"],["sevaral","several"],["severat","several"],["severeal","several"],["severirirty","severity"],["severirities","severities"],["severite","severity"],["severites","severities"],["severiy","severity"],["severl","several"],["severley","severely"],["severly","severely"],["sevice","service"],["sevirity","severity"],["sevral","several"],["sevrally","severally"],["sevrity","severity"],["sewdonim","pseudonym"],["sewdonims","pseudonyms"],["sewrvice","service"],["sfety","safety"],["sgadow","shadow"],["sh1sum","sha1sum"],["shadasloo","shadaloo"],["shaddow","shadow"],["shadhow","shadow"],["shadoloo","shadaloo"],["shal","shall"],["shandeleer","chandelier"],["shandeleers","chandeliers"],["shandow","shadow"],["shaneal","chenille"],["shanghi","Shanghai"],["shapshot","snapshot"],["shapshots","snapshots"],["shapsnot","snapshot"],["shapsnots","snapshots"],["sharable","shareable"],["shareed","shared"],["shareing","sharing"],["sharloton","charlatan"],["sharraid","charade"],["sharraids","charades"],["shashes","slashes"],["shatow","ch\xE2teau"],["shbang","shebang"],["shedule","schedule"],["sheduled","scheduled"],["shedules","schedules"],["sheduling","scheduling"],["sheepherd","shepherd"],["sheepherds","shepherds"],["sheeps","sheep"],["sheild","shield"],["sheilded","shielded"],["sheilding","shielding"],["sheilds","shields"],["shepe","shape"],["shepered","shepherd"],["sheperedly","shepherdly"],["shepereds","shepherds"],["shepes","shapes"],["sheping","shaping"],["shepre","sphere"],["shepres","spheres"],["sherif","sheriff"],["shfit","shift"],["shfited","shifted"],["shfiting","shifting"],["shfits","shifts"],["shfted","shifted"],["shicane","chicane"],["shif","shift"],["shif-tab","shift-tab"],["shineing","shining"],["shiped","shipped"],["shiping","shipping"],["shoftware","software"],["shoild","should"],["shoing","showing"],["sholder","shoulder"],["sholdn't","shouldn't"],["sholuld","should"],["sholuldn't","shouldn't"],["shoould","should"],["shopkeeepers","shopkeepers"],["shorcut","shortcut"],["shorcuts","shortcuts"],["shorly","shortly"],["short-cicruit","short-circuit"],["short-cicruits","short-circuits"],["shortcat","shortcut"],["shortcats","shortcuts"],["shortcomming","shortcoming"],["shortcommings","shortcomings"],["shortcutt","shortcut"],["shortern","shorten"],["shorthly","shortly"],["shortkut","shortcut"],["shortkuts","shortcuts"],["shortwhile","short while"],["shotcut","shortcut"],["shotcuts","shortcuts"],["shotdown","shutdown"],["shoucl","should"],["shoud","should"],["shoudl","should"],["shoudld","should"],["shoudle","should"],["shoudln't","shouldn't"],["shoudlnt","shouldn't"],["shoudn't","shouldn't"],["shoudn","shouldn"],["should'nt","shouldn't"],["should't","shouldn't"],["shouldn;t","shouldn't"],["shouldnt'","shouldn't"],["shouldnt","shouldn't"],["shouldnt;","shouldn't"],["shoule","should"],["shoulld","should"],["shouln't","shouldn't"],["shouls","should"],["shoult","should"],["shouod","should"],["shouw","show"],["shouws","shows"],["showvinism","chauvinism"],["shpae","shape"],["shpaes","shapes"],["shpapes","shapes"],["shpere","sphere"],["shperes","spheres"],["shpped","shipped"],["shreak","shriek"],["shreshold","threshold"],["shriks","shrinks"],["shttp","https"],["shudown","shutdown"],["shufle","shuffle"],["shuld","should"],["shure","sure"],["shurely","surely"],["shutdownm","shutdown"],["shuting","shutting"],["shutodwn","shutdown"],["shwo","show"],["shwon","shown"],["shystem","system"],["shystems","systems"],["sibiling","sibling"],["sibilings","siblings"],["sibtitle","subtitle"],["sibtitles","subtitles"],["sicinct","succinct"],["sicinctly","succinctly"],["sicne","since"],["sidde","side"],["sideral","sidereal"],["siduction","seduction"],["siezure","seizure"],["siezures","seizures"],["siffix","suffix"],["siffixed","suffixed"],["siffixes","suffixes"],["siffixing","suffixing"],["sigaled","signaled"],["siganture","signature"],["sigantures","signatures"],["sigen","sign"],["sigificance","significance"],["siginificant","significant"],["siginificantly","significantly"],["siginify","signify"],["sigit","digit"],["sigits","digits"],["sigleton","singleton"],["signales","signals"],["signall","signal"],["signatue","signature"],["signatur","signature"],["signes","signs"],["signficant","significant"],["signficantly","significantly"],["signficiant","significant"],["signfies","signifies"],["signguature","signature"],["signifanct","significant"],["signifant","significant"],["signifantly","significantly"],["signifcant","significant"],["signifcantly","significantly"],["signifficant","significant"],["significanly","significantly"],["significat","significant"],["significatly","significantly"],["significently","significantly"],["signifigant","significant"],["signifigantly","significantly"],["signitories","signatories"],["signitory","signatory"],["signol","signal"],["signto","sign to"],["signul","signal"],["signular","singular"],["signularity","singularity"],["silentely","silently"],["silenty","silently"],["silouhette","silhouette"],["silouhetted","silhouetted"],["silouhettes","silhouettes"],["silouhetting","silhouetting"],["simeple","simple"],["simetrie","symmetry"],["simetries","symmetries"],["simgle","single"],["simialr","similar"],["simialrity","similarity"],["simialrly","similarly"],["simiar","similar"],["similarily","similarly"],["similary","similarly"],["similat","similar"],["similia","similar"],["similiar","similar"],["similiarity","similarity"],["similiarly","similarly"],["similiarty","similarity"],["similiary","similarity"],["simillar","similar"],["similtaneous","simultaneous"],["simlar","similar"],["simlarlity","similarity"],["simlarly","similarly"],["simliar","similar"],["simliarly","similarly"],["simlicity","simplicity"],["simlified","simplified"],["simmetric","symmetric"],["simmetrical","symmetrical"],["simmetry","symmetry"],["simmilar","similar"],["simpification","simplification"],["simpifications","simplifications"],["simpified","simplified"],["simplei","simply"],["simpley","simply"],["simplfy","simplify"],["simplicitly","simplicity"],["simplicty","simplicity"],["simplier","simpler"],["simpliest","simplest"],["simplifed","simplified"],["simplificaiton","simplification"],["simplificaitons","simplifications"],["simplifiy","simplify"],["simplifys","simplifies"],["simpliifcation","simplification"],["simpliifcations","simplifications"],["simplist","simplest"],["simpy","simply"],["simualte","simulate"],["simualted","simulated"],["simualtes","simulates"],["simualting","simulating"],["simualtion","simulation"],["simualtions","simulations"],["simualtor","simulator"],["simualtors","simulators"],["simulaiton","simulation"],["simulaitons","simulations"],["simulantaneous","simultaneous"],["simulantaneously","simultaneously"],["simulataeous","simultaneous"],["simulataeously","simultaneously"],["simulataneity","simultaneity"],["simulataneous","simultaneous"],["simulataneously","simultaneously"],["simulatanious","simultaneous"],["simulataniously","simultaneously"],["simulatanous","simultaneous"],["simulatanously","simultaneously"],["simulatation","simulation"],["simulatenous","simultaneous"],["simulatenously","simultaneously"],["simultanaeous","simultaneous"],["simultaneos","simultaneous"],["simultaneosly","simultaneously"],["simultanious","simultaneous"],["simultaniously","simultaneously"],["simultanous","simultaneous"],["simultanously","simultaneously"],["simutaneously","simultaneously"],["sinature","signature"],["sincerley","sincerely"],["sincerly","sincerely"],["singaled","signaled"],["singals","signals"],["singature","signature"],["singatures","signatures"],["singelar","singular"],["singelarity","singularity"],["singelarly","singularly"],["singelton","singleton"],["singl","single"],["singlar","singular"],["single-threded","single-threaded"],["singlton","singleton"],["singltons","singletons"],["singluar","singular"],["singlular","singular"],["singlularly","singularly"],["singnal","signal"],["singnalled","signalled"],["singnals","signals"],["singolar","singular"],["singoolar","singular"],["singoolarity","singularity"],["singoolarly","singularly"],["singsog","singsong"],["singuarity","singularity"],["singuarl","singular"],["singulat","singular"],["singulaties","singularities"],["sinlge","single"],["sinlges","singles"],["sinply","simply"],["sintac","syntax"],["sintacks","syntax"],["sintacs","syntax"],["sintact","syntax"],["sintacts","syntax"],["sintak","syntax"],["sintaks","syntax"],["sintakt","syntax"],["sintakts","syntax"],["sintax","syntax"],["Sionist","Zionist"],["Sionists","Zionists"],["siply","simply"],["sircle","circle"],["sircles","circles"],["sircular","circular"],["sirect","direct"],["sirected","directed"],["sirecting","directing"],["sirection","direction"],["sirectional","directional"],["sirectionalities","directionalities"],["sirectionality","directionality"],["sirectionals","directionals"],["sirectionless","directionless"],["sirections","directions"],["sirective","directive"],["sirectives","directives"],["sirectly","directly"],["sirectness","directness"],["sirector","director"],["sirectories","directories"],["sirectors","directors"],["sirectory","directory"],["sirects","directs"],["sisnce","since"],["sistem","system"],["sistematically","systematically"],["sistematics","systematics"],["sistematies","systematies"],["sistematising","systematising"],["sistematizing","systematizing"],["sistematy","systematy"],["sistemed","systemed"],["sistemic","systemic"],["sistemically","systemically"],["sistemics","systemics"],["sistemist","systemist"],["sistemists","systemists"],["sistemize","systemize"],["sistemized","systemized"],["sistemizes","systemizes"],["sistemizing","systemizing"],["sistems","systems"],["sitation","situation"],["sitations","situations"],["sitaution","situation"],["sitautions","situations"],["sitck","stick"],["siteu","site"],["sitill","still"],["sitirring","stirring"],["sitirs","stirs"],["sitl","still"],["sitll","still"],["sitmuli","stimuli"],["situationnal","situational"],["situatuion","situation"],["situatuions","situations"],["situatution","situation"],["situatutions","situations"],["situbbornness","stubbornness"],["situdio","studio"],["situdios","studios"],["situration","situation"],["siturations","situations"],["situtaion","situation"],["situtaions","situations"],["situtation","situation"],["situtations","situations"],["siutable","suitable"],["siute","suite"],["sivible","visible"],["siwtch","switch"],["siwtched","switched"],["siwtching","switching"],["sizre","size"],["Skagerak","Skagerrak"],["skalar","scalar"],["skateing","skating"],["skecth","sketch"],["skecthes","sketches"],["skeep","skip"],["skelton","skeleton"],["skept","skipped"],["sketchs","sketches"],["skipd","skipped"],["skipe","skip"],["skiping","skipping"],["skippd","skipped"],["skippped","skipped"],["skippps","skips"],["slach","slash"],["slaches","slashes"],["slase","slash"],["slases","slashes"],["slashs","slashes"],["slaugterhouses","slaughterhouses"],["slect","select"],["slected","selected"],["slecting","selecting"],["slection","selection"],["sleect","select"],["sleeped","slept"],["sleepp","sleep"],["slicable","sliceable"],["slient","silent"],["sliently","silently"],["slighlty","slightly"],["slighly","slightly"],["slightl","slightly"],["slighty","slightly"],["slignt","slight"],["sligntly","slightly"],["sligth","slight"],["sligthly","slightly"],["sligtly","slightly"],["sliped","slipped"],["sliseshow","slideshow"],["slowy","slowly"],["sluggify","slugify"],["smae","same"],["smal","small"],["smaler","smaller"],["smallar","smaller"],["smalles","smallest"],["smaple","sample"],["smaples","samples"],["smealting","smelting"],["smething","something"],["smller","smaller"],["smoe","some"],["smoot","smooth"],["smooter","smoother"],["smoothign","smoothing"],["smooting","smoothing"],["smouth","smooth"],["smouthness","smoothness"],["smove","move"],["snaped","snapped"],["snaphot","snapshot"],["snaphsot","snapshot"],["snaping","snapping"],["snappng","snapping"],["snapsnot","snapshot"],["snapsnots","snapshots"],["sneeks","sneaks"],["snese","sneeze"],["snipet","snippet"],["snipets","snippets"],["snpashot","snapshot"],["snpashots","snapshots"],["snyc","sync"],["snytax","syntax"],["Soalris","Solaris"],["socail","social"],["socalism","socialism"],["socekts","sockets"],["socities","societies"],["soecialize","specialized"],["soem","some"],["soemthing","something"],["soemwhere","somewhere"],["sofisticated","sophisticated"],["softend","softened"],["softwares","software"],["softwre","software"],["sofware","software"],["sofwtare","software"],["sohw","show"],["soilders","soldiers"],["soiurce","source"],["soket","socket"],["sokets","sockets"],["solarmutx","solarmutex"],["solatary","solitary"],["solate","isolate"],["solated","isolated"],["solates","isolates"],["solating","isolating"],["soley","solely"],["solfed","solved"],["solfes","solves"],["solfing","solving"],["solfs","solves"],["soliders","soldiers"],["solification","solidification"],["soliliquy","soliloquy"],["soltion","solution"],["soltuion","solution"],["soltuions","solutions"],["soluable","soluble"],["solum","solemn"],["soluton","solution"],["solutons","solutions"],["solveable","solvable"],["solveing","solving"],["solwed","solved"],["som","some"],["someboby","somebody"],["somehing","something"],["somehting","something"],["somehwat","somewhat"],["somehwere","somewhere"],["somehwo","somehow"],["somelse","someone else"],["somemore","some more"],["somene","someone"],["somenone","someone"],["someon","someone"],["somethig","something"],["somethign","something"],["somethimes","sometimes"],["somethimg","something"],["somethiong","something"],["sometiems","sometimes"],["sometihing","something"],["sometihng","something"],["sometims","sometimes"],["sometines","sometimes"],["someting","something"],["sometinhg","something"],["sometring","something"],["sometrings","somethings"],["somewere","somewhere"],["somewher","somewhere"],["somewho","somehow"],["somme","some"],["somthign","something"],["somthing","something"],["somthingelse","somethingelse"],["somtimes","sometimes"],["somwhat","somewhat"],["somwhere","somewhere"],["somwho","somehow"],["somwhow","somehow"],["sonething","something"],["songlar","singular"],["sooaside","suicide"],["soodonim","pseudonym"],["soource","source"],["sophicated","sophisticated"],["sophisicated","sophisticated"],["sophisitcated","sophisticated"],["sophisticted","sophisticated"],["sophmore","sophomore"],["sorceror","sorcerer"],["sorkflow","workflow"],["sorrounding","surrounding"],["sortig","sorting"],["sortings","sorting"],["sortlst","sortlist"],["sortner","sorter"],["sortnr","sorter"],["soscket","socket"],["sotfware","software"],["souce","source"],["souces","sources"],["soucre","source"],["soucres","sources"],["soudn","sound"],["soudns","sounds"],["sould'nt","shouldn't"],["souldn't","shouldn't"],["soundard","soundcard"],["sountrack","soundtrack"],["sourc","source"],["sourcedrectory","sourcedirectory"],["sourcee","source"],["sourcees","sources"],["sourct","source"],["sourrounding","surrounding"],["sourth","south"],["sourthern","southern"],["southbrige","southbridge"],["souvenier","souvenir"],["souveniers","souvenirs"],["soveits","soviets"],["sover","solver"],["sovereignity","sovereignty"],["soverign","sovereign"],["soverignity","sovereignty"],["soverignty","sovereignty"],["sovle","solve"],["sovled","solved"],["sovren","sovereign"],["spacific","specific"],["spacification","specification"],["spacifications","specifications"],["spacifics","specifics"],["spacified","specified"],["spacifies","specifies"],["spaece","space"],["spaeced","spaced"],["spaeces","spaces"],["spaecing","spacing"],["spageti","spaghetti"],["spagetti","spaghetti"],["spagheti","spaghetti"],["spagnum","sphagnum"],["spainish","Spanish"],["spaning","spanning"],["sparate","separate"],["sparately","separately"],["spash","splash"],["spashed","splashed"],["spashes","splashes"],["spaw","spawn"],["spawed","spawned"],["spawing","spawning"],["spawining","spawning"],["spaws","spawns"],["spcae","space"],["spcaed","spaced"],["spcaes","spaces"],["spcaing","spacing"],["spcecified","specified"],["spcial","special"],["spcific","specific"],["spcification","specification"],["spcifications","specifications"],["spcified","specified"],["spcifies","specifies"],["spcify","specify"],["speaced","spaced"],["speach","speech"],["speacing","spacing"],["spearator","separator"],["spearators","separators"],["spec-complient","spec-compliant"],["specail","special"],["specefic","specific"],["specefically","specifically"],["speceficly","specifically"],["specefied","specified"],["specfic","specific"],["specfically","specifically"],["specfication","specification"],["specfications","specifications"],["specficication","specification"],["specficications","specifications"],["specficied","specified"],["specficies","specifies"],["specficy","specify"],["specficying","specifying"],["specfied","specified"],["specfield","specified"],["specfies","specifies"],["specfifies","specifies"],["specfify","specify"],["specfifying","specifying"],["specfiied","specified"],["specfy","specify"],["specfying","specifying"],["speciafied","specified"],["specialisaiton","specialisation"],["specialisaitons","specialisations"],["specializaiton","specialization"],["specializaitons","specializations"],["specialy","specially"],["specic","specific"],["specical","special"],["specication","specification"],["specidic","specific"],["specied","specified"],["speciefied","specified"],["specifactions","specifications"],["specifc","specific"],["specifcally","specifically"],["specifcation","specification"],["specifcations","specifications"],["specifcied","specified"],["specifclly","specifically"],["specifed","specified"],["specifes","specifies"],["speciffic","specific"],["speciffically","specifically"],["specifially","specifically"],["specificaiton","specification"],["specificaitons","specifications"],["specificallly","specifically"],["specificaly","specifically"],["specificated","specified"],["specificateion","specification"],["specificatin","specification"],["specificaton","specification"],["specificed","specified"],["specifices","specifies"],["specificially","specifically"],["specificiation","specification"],["specificiations","specifications"],["specificically","specifically"],["specificied","specified"],["specificl","specific"],["specificly","specifically"],["specifiction","specification"],["specifictions","specifications"],["specifid","specified"],["specifiec","specific"],["specifiecally","specifically"],["specifiecation","specification"],["specifiecations","specifications"],["specifiecd","specified"],["specifieced","specified"],["specifiecs","specifics"],["specifieed","specified"],["specifiees","specifies"],["specifig","specific"],["specifigation","specification"],["specifigations","specifications"],["specifing","specifying"],["specifities","specifics"],["specifiy","specify"],["specifiying","specifying"],["specifric","specific"],["specift","specify"],["specifyed","specified"],["specifyied","specified"],["specifyig","specifying"],["specifyinhg","specifying"],["speciic","specific"],["speciied","specified"],["speciifc","specific"],["speciifed","specified"],["specilisation","specialisation"],["specilisations","specialisations"],["specilization","specialization"],["specilizations","specializations"],["specilized","specialized"],["speciman","specimen"],["speciries","specifies"],["speciry","specify"],["specivied","specified"],["speciy","specify"],["speciyfing","specifying"],["speciyfying","specifying"],["speciying","specifying"],["spectauclar","spectacular"],["spectaulars","spectaculars"],["spectification","specification"],["spectifications","specifications"],["spectified","specified"],["spectifies","specifies"],["spectify","specify"],["spectifying","specifying"],["spectular","spectacular"],["spectularly","spectacularly"],["spectum","spectrum"],["specturm","spectrum"],["specualtive","speculative"],["specufies","specifies"],["specufy","specify"],["spedific","specific"],["spedified","specified"],["spedify","specify"],["speeak","speak"],["speeaking","speaking"],["speeling","spelling"],["speelling","spelling"],["speep","sleep"],["speep-up","speed-up"],["speeped","sped"],["speeping","sleeping"],["spefcifiable","specifiable"],["spefcific","specific"],["spefcifically","specifically"],["spefcification","specification"],["spefcifications","specifications"],["spefcifics","specifics"],["spefcifieid","specified"],["spefcifieir","specifier"],["spefcifieirs","specifiers"],["spefcifieis","specifies"],["spefcifiy","specify"],["spefcifiying","specifying"],["spefeid","specified"],["spefeir","specifier"],["spefeirs","specifiers"],["spefeis","specifies"],["spefiable","specifiable"],["spefial","special"],["spefic","specific"],["speficable","specifiable"],["spefically","specifically"],["spefication","specification"],["spefications","specifications"],["speficed","specified"],["speficeid","specified"],["speficeir","specifier"],["speficeirs","specifiers"],["speficeis","specifies"],["speficer","specifier"],["speficers","specifiers"],["spefices","specifies"],["speficiable","specifiable"],["speficiallally","specifically"],["speficiallation","specification"],["speficiallations","specifications"],["speficialleid","specified"],["speficialleir","specifier"],["speficialleirs","specifiers"],["speficialleis","specifies"],["speficialliable","specifiable"],["speficiallic","specific"],["speficiallically","specifically"],["speficiallication","specification"],["speficiallications","specifications"],["speficiallics","specifics"],["speficiallied","specified"],["speficiallier","specifier"],["speficialliers","specifiers"],["speficiallies","specifies"],["speficiallifed","specified"],["speficiallifer","specifier"],["speficiallifers","specifiers"],["speficiallifes","specifies"],["speficially","specifically"],["speficiation","specification"],["speficiations","specifications"],["speficic","specific"],["speficically","specifically"],["speficication","specification"],["speficications","specifications"],["speficics","specifics"],["speficied","specified"],["speficieid","specified"],["speficieir","specifier"],["speficieirs","specifiers"],["speficieis","specifies"],["speficier","specifier"],["speficiers","specifiers"],["speficies","specifies"],["speficifally","specifically"],["speficifation","specification"],["speficifations","specifications"],["speficifc","specific"],["speficifcally","specifically"],["speficifcation","specification"],["speficifcations","specifications"],["speficifcs","specifics"],["speficifed","specified"],["speficifeid","specified"],["speficifeir","specifier"],["speficifeirs","specifiers"],["speficifeis","specifies"],["speficifer","specifier"],["speficifers","specifiers"],["speficifes","specifies"],["speficifiable","specifiable"],["speficific","specific"],["speficifically","specifically"],["speficification","specification"],["speficifications","specifications"],["speficifics","specifics"],["speficified","specified"],["speficifier","specifier"],["speficifiers","specifiers"],["speficifies","specifies"],["speficififed","specified"],["speficififer","specifier"],["speficififers","specifiers"],["speficififes","specifies"],["speficify","specify"],["speficifying","specifying"],["speficiiable","specifiable"],["speficiic","specific"],["speficiically","specifically"],["speficiication","specification"],["speficiications","specifications"],["speficiics","specifics"],["speficiied","specified"],["speficiier","specifier"],["speficiiers","specifiers"],["speficiies","specifies"],["speficiifed","specified"],["speficiifer","specifier"],["speficiifers","specifiers"],["speficiifes","specifies"],["speficillally","specifically"],["speficillation","specification"],["speficillations","specifications"],["speficilleid","specified"],["speficilleir","specifier"],["speficilleirs","specifiers"],["speficilleis","specifies"],["speficilliable","specifiable"],["speficillic","specific"],["speficillically","specifically"],["speficillication","specification"],["speficillications","specifications"],["speficillics","specifics"],["speficillied","specified"],["speficillier","specifier"],["speficilliers","specifiers"],["speficillies","specifies"],["speficillifed","specified"],["speficillifer","specifier"],["speficillifers","specifiers"],["speficillifes","specifies"],["speficilly","specifically"],["speficitally","specifically"],["speficitation","specification"],["speficitations","specifications"],["speficiteid","specified"],["speficiteir","specifier"],["speficiteirs","specifiers"],["speficiteis","specifies"],["speficitiable","specifiable"],["speficitic","specific"],["speficitically","specifically"],["speficitication","specification"],["speficitications","specifications"],["speficitics","specifics"],["speficitied","specified"],["speficitier","specifier"],["speficitiers","specifiers"],["speficities","specificities"],["speficitifed","specified"],["speficitifer","specifier"],["speficitifers","specifiers"],["speficitifes","specifies"],["speficity","specificity"],["speficiy","specify"],["speficiying","specifying"],["spefics","specifics"],["speficy","specify"],["speficying","specifying"],["spefied","specified"],["spefier","specifier"],["spefiers","specifiers"],["spefies","specifies"],["spefifally","specifically"],["spefifation","specification"],["spefifations","specifications"],["spefifed","specified"],["spefifeid","specified"],["spefifeir","specifier"],["spefifeirs","specifiers"],["spefifeis","specifies"],["spefifer","specifier"],["spefifers","specifiers"],["spefifes","specifies"],["spefifiable","specifiable"],["spefific","specific"],["spefifically","specifically"],["spefification","specification"],["spefifications","specifications"],["spefifics","specifics"],["spefified","specified"],["spefifier","specifier"],["spefifiers","specifiers"],["spefifies","specifies"],["spefififed","specified"],["spefififer","specifier"],["spefififers","specifiers"],["spefififes","specifies"],["spefify","specify"],["spefifying","specifying"],["spefiiable","specifiable"],["spefiic","specific"],["spefiically","specifically"],["spefiication","specification"],["spefiications","specifications"],["spefiics","specifics"],["spefiied","specified"],["spefiier","specifier"],["spefiiers","specifiers"],["spefiies","specifies"],["spefiifally","specifically"],["spefiifation","specification"],["spefiifations","specifications"],["spefiifeid","specified"],["spefiifeir","specifier"],["spefiifeirs","specifiers"],["spefiifeis","specifies"],["spefiifiable","specifiable"],["spefiific","specific"],["spefiifically","specifically"],["spefiification","specification"],["spefiifications","specifications"],["spefiifics","specifics"],["spefiified","specified"],["spefiifier","specifier"],["spefiifiers","specifiers"],["spefiifies","specifies"],["spefiififed","specified"],["spefiififer","specifier"],["spefiififers","specifiers"],["spefiififes","specifies"],["spefiify","specify"],["spefiifying","specifying"],["spefixally","specifically"],["spefixation","specification"],["spefixations","specifications"],["spefixeid","specified"],["spefixeir","specifier"],["spefixeirs","specifiers"],["spefixeis","specifies"],["spefixiable","specifiable"],["spefixic","specific"],["spefixically","specifically"],["spefixication","specification"],["spefixications","specifications"],["spefixics","specifics"],["spefixied","specified"],["spefixier","specifier"],["spefixiers","specifiers"],["spefixies","specifies"],["spefixifed","specified"],["spefixifer","specifier"],["spefixifers","specifiers"],["spefixifes","specifies"],["spefixy","specify"],["spefixying","specifying"],["spefiy","specify"],["spefiying","specifying"],["spefy","specify"],["spefying","specifying"],["speherical","spherical"],["speical","special"],["speices","species"],["speicfied","specified"],["speicific","specific"],["speicified","specified"],["speicify","specify"],["speling","spelling"],["spellshecking","spellchecking"],["spendour","splendour"],["speparate","separate"],["speparated","separated"],["speparating","separating"],["speparation","separation"],["speparator","separator"],["spepc","spec"],["speperatd","separated"],["speperate","separate"],["speperateing","separating"],["speperater","separator"],["speperates","separates"],["speperating","separating"],["speperator","separator"],["speperats","separates"],["sperate","separate"],["sperately","separately"],["sperhical","spherical"],["spermatozoan","spermatozoon"],["speshal","special"],["speshel","special"],["spesialisation","specialization"],["spesific","specific"],["spesifical","specific"],["spesifically","specifically"],["spesificaly","specifically"],["spesifics","specifics"],["spesified","specified"],["spesifities","specifics"],["spesify","specify"],["spezialisation","specialization"],["spezific","specific"],["spezified","specified"],["spezify","specify"],["spicific","specific"],["spicified","specified"],["spicify","specify"],["spiltting","splitting"],["spindel","spindle"],["spindels","spindles"],["spinlcok","spinlock"],["spinock","spinlock"],["spligs","splits"],["spliiter","splitter"],["spliitting","splitting"],["spliting","splitting"],["splitted","split"],["splittng","splitting"],["spllitting","splitting"],["spoace","space"],["spoaced","spaced"],["spoaces","spaces"],["spoacing","spacing"],["sponser","sponsor"],["sponsered","sponsored"],["sponsers","sponsors"],["sponsership","sponsorship"],["spontanous","spontaneous"],["sponzored","sponsored"],["spoonfulls","spoonfuls"],["sporatic","sporadic"],["sporious","spurious"],["sppeches","speeches"],["spport","support"],["spported","supported"],["spporting","supporting"],["spports","supports"],["spreaded","spread"],["spreadhseet","spreadsheet"],["spreadhseets","spreadsheets"],["spreadsheat","spreadsheet"],["spreadsheats","spreadsheets"],["spreasheet","spreadsheet"],["spreasheets","spreadsheets"],["sprech","speech"],["sprecial","special"],["sprecialized","specialized"],["sprecially","specially"],["spred","spread"],["spredsheet","spreadsheet"],["spreedsheet","spreadsheet"],["sprinf","sprintf"],["spririous","spurious"],["spriritual","spiritual"],["spritual","spiritual"],["sproon","spoon"],["spsace","space"],["spsaced","spaced"],["spsaces","spaces"],["spsacing","spacing"],["sptintf","sprintf"],["spurios","spurious"],["spurrious","spurious"],["sqare","square"],["sqared","squared"],["sqares","squares"],["sqash","squash"],["sqashed","squashed"],["sqashing","squashing"],["sqaure","square"],["sqaured","squared"],["sqaures","squares"],["sqeuence","sequence"],["squashgin","squashing"],["squence","sequence"],["squirel","squirrel"],["squirl","squirrel"],["squrared","squared"],["srcipt","script"],["srcipts","scripts"],["sreampropinfo","streampropinfo"],["sreenshot","screenshot"],["sreenshots","screenshots"],["sreturns","returns"],["srikeout","strikeout"],["sring","string"],["srings","strings"],["srink","shrink"],["srinkd","shrunk"],["srinked","shrunk"],["srinking","shrinking"],["sript","script"],["sripts","scripts"],["srollbar","scrollbar"],["srouce","source"],["srtifact","artifact"],["srtifacts","artifacts"],["srtings","strings"],["srtructure","structure"],["srttings","settings"],["sructure","structure"],["sructures","structures"],["srunk","shrunk"],["srunken","shrunken"],["srunkn","shrunken"],["ssame","same"],["ssee","see"],["ssoaiating","associating"],["ssome","some"],["stabalization","stabilization"],["stabilitation","stabilization"],["stabilite","stabilize"],["stabilited","stabilized"],["stabilites","stabilizes"],["stabiliting","stabilizing"],["stabillity","stability"],["stabilty","stability"],["stablility","stability"],["stablilization","stabilization"],["stablize","stabilize"],["stach","stack"],["stacionary","stationary"],["stackk","stack"],["stadnard","standard"],["stadnardisation","standardisation"],["stadnardised","standardised"],["stadnardising","standardising"],["stadnardization","standardization"],["stadnardized","standardized"],["stadnardizing","standardizing"],["stadnards","standards"],["stae","state"],["staement","statement"],["staically","statically"],["stainlees","stainless"],["staion","station"],["staions","stations"],["staition","station"],["staitions","stations"],["stalagtite","stalactite"],["standar","standard"],["standarad","standard"],["standard-complient","standard-compliant"],["standardss","standards"],["standarisation","standardisation"],["standarise","standardise"],["standarised","standardised"],["standarises","standardises"],["standarising","standardising"],["standarization","standardization"],["standarize","standardize"],["standarized","standardized"],["standarizes","standardizes"],["standarizing","standardizing"],["standart","standard"],["standartd","standard"],["standartds","standards"],["standartisation","standardisation"],["standartisator","standardiser"],["standartised","standardised"],["standartization","standardization"],["standartizator","standardizer"],["standartized","standardized"],["standarts","standards"],["standatd","standard"],["standrat","standard"],["standrats","standards"],["standtard","standard"],["stange","strange"],["stanp","stamp"],["staration","starvation"],["stard","start"],["stardard","standard"],["stardardize","standardize"],["stardardized","standardized"],["stardardizes","standardizes"],["stardardizing","standardizing"],["stardards","standards"],["staright","straight"],["startd","started"],["startegic","strategic"],["startegies","strategies"],["startegy","strategy"],["startet","started"],["startign","starting"],["startin","starting"],["startlisteneing","startlistening"],["startnig","starting"],["startparanthesis","startparentheses"],["startted","started"],["startting","starting"],["starup","startup"],["starups","startups"],["statamenet","statement"],["statamenets","statements"],["stategies","strategies"],["stategise","strategise"],["stategised","strategised"],["stategize","strategize"],["stategized","strategized"],["stategy","strategy"],["stateman","statesman"],["statemanet","statement"],["statememts","statements"],["statemen","statement"],["statemenet","statement"],["statemenets","statements"],["statemet","statement"],["statemnts","statements"],["stati","statuses"],["staticly","statically"],["statictic","statistic"],["statictics","statistics"],["statisfied","satisfied"],["statisfies","satisfies"],["statisfy","satisfy"],["statisfying","satisfying"],["statisitics","statistics"],["statistices","statistics"],["statitic","statistic"],["statitics","statistics"],["statmenet","statement"],["statmenmt","statement"],["statment","statement"],["statments","statements"],["statrt","start"],["stattistic","statistic"],["statubar","statusbar"],["statuline","statusline"],["statulines","statuslines"],["statup","startup"],["staturday","Saturday"],["statuss","status"],["statusses","statuses"],["statustics","statistics"],["staulk","stalk"],["stauration","saturation"],["staus","status"],["stawberries","strawberries"],["stawberry","strawberry"],["stawk","stalk"],["stcokbrush","stockbrush"],["stdanard","standard"],["stdanards","standards"],["stength","strength"],["steram","stream"],["steramed","streamed"],["steramer","streamer"],["steraming","streaming"],["sterams","streams"],["sterio","stereo"],["steriods","steroids"],["sterotype","stereotype"],["sterotypes","stereotypes"],["stickness","stickiness"],["stickyness","stickiness"],["stiffneing","stiffening"],["stiky","sticky"],["stil","still"],["stilus","stylus"],["stingent","stringent"],["stipped","stripped"],["stiring","stirring"],["stirng","string"],["stirngs","strings"],["stirr","stir"],["stirrs","stirs"],["stivk","stick"],["stivks","sticks"],["stle","style"],["stlye","style"],["stlyes","styles"],["stnad","stand"],["stndard","standard"],["stoage","storage"],["stoages","storages"],["stocahstic","stochastic"],["stocastic","stochastic"],["stoer","store"],["stoers","stores"],["stomache","stomach"],["stompted","stomped"],["stong","strong"],["stoped","stopped"],["stoping","stopping"],["stopp","stop"],["stoppped","stopped"],["stoppping","stopping"],["stopps","stops"],["stopry","story"],["storag","storage"],["storeable","storable"],["storeage","storage"],["stoream","stream"],["storeble","storable"],["storeing","storing"],["storge","storage"],["storise","stories"],["stornegst","strongest"],["stoyr","story"],["stpo","stop"],["stradegies","strategies"],["stradegy","strategy"],["stragegy","strategy"],["strageties","strategies"],["stragety","strategy"],["straigh-forward","straightforward"],["straighforward","straightforward"],["straightfoward","straightforward"],["straigt","straight"],["straigth","straight"],["straines","strains"],["strangness","strangeness"],["strart","start"],["strarted","started"],["strarting","starting"],["strarts","starts"],["stratagically","strategically"],["strcture","structure"],["strctures","structures"],["strcutre","structure"],["strcutural","structural"],["strcuture","structure"],["strcutures","structures"],["streamm","stream"],["streammed","streamed"],["streamming","streaming"],["streatched","stretched"],["strech","stretch"],["streched","stretched"],["streches","stretches"],["streching","stretching"],["strectch","stretch"],["strecth","stretch"],["strecthed","stretched"],["strecthes","stretches"],["strecthing","stretching"],["streem","stream"],["streemlining","streamlining"],["stregth","strength"],["streightish","straightish"],["streightly","straightly"],["streightness","straightness"],["streigtish","straightish"],["streigtly","straightly"],["streigtness","straightness"],["strem","stream"],["strema","stream"],["strengh","strength"],["strenghen","strengthen"],["strenghened","strengthened"],["strenghening","strengthening"],["strenght","strength"],["strenghten","strengthen"],["strenghtened","strengthened"],["strenghtening","strengthening"],["strenghts","strengths"],["strengtened","strengthened"],["strenous","strenuous"],["strentgh","strength"],["strenth","strength"],["strerrror","strerror"],["striaght","straight"],["striaghten","straighten"],["striaghtens","straightens"],["striaghtforward","straightforward"],["striaghts","straights"],["striclty","strictly"],["stricly","strictly"],["stricteir","stricter"],["strictier","stricter"],["strictiest","strictest"],["strictist","strictest"],["strig","string"],["strigification","stringification"],["strigifying","stringifying"],["striing","string"],["striings","strings"],["strikely","strikingly"],["stringifed","stringified"],["strinsg","strings"],["strippen","stripped"],["stript","stripped"],["strirngification","stringification"],["strnad","strand"],["strng","string"],["stroage","storage"],["stroe","store"],["stroing","storing"],["stronlgy","strongly"],["stronly","strongly"],["strore","store"],["strored","stored"],["strores","stores"],["stroring","storing"],["strotage","storage"],["stroyboard","storyboard"],["struc","struct"],["strucrure","structure"],["strucrured","structured"],["strucrures","structures"],["structed","structured"],["structer","structure"],["structere","structure"],["structered","structured"],["structeres","structures"],["structetr","structure"],["structire","structure"],["structre","structure"],["structred","structured"],["structres","structures"],["structrual","structural"],["structrue","structure"],["structrued","structured"],["structrues","structures"],["structual","structural"],["structue","structure"],["structued","structured"],["structues","structures"],["structur","structure"],["structurs","structures"],["strucur","structure"],["strucure","structure"],["strucured","structured"],["strucures","structures"],["strucuring","structuring"],["strucurs","structures"],["strucutre","structure"],["strucutred","structured"],["strucutres","structures"],["strucuture","structure"],["struggel","struggle"],["struggeled","struggled"],["struggeling","struggling"],["struggels","struggles"],["struttural","structural"],["strutture","structure"],["struture","structure"],["ststion","station"],["ststionary","stationary"],["ststioned","stationed"],["ststionery","stationery"],["ststions","stations"],["ststr","strstr"],["stteting","setting"],["sttetings","settings"],["stubborness","stubbornness"],["stucked","stuck"],["stuckt","stuck"],["stuct","struct"],["stucts","structs"],["stucture","structure"],["stuctured","structured"],["stuctures","structures"],["studdy","study"],["studetn","student"],["studetns","students"],["studing","studying"],["studoi","studio"],["studois","studios"],["stuggling","struggling"],["stuido","studio"],["stuidos","studios"],["stuill","still"],["stummac","stomach"],["sturctural","structural"],["sturcture","structure"],["sturctures","structures"],["sturture","structure"],["sturtured","structured"],["sturtures","structures"],["sturucture","structure"],["stutdown","shutdown"],["stutus","status"],["styhe","style"],["styilistic","stylistic"],["stylessheets","stylesheets"],["sub-lcuase","sub-clause"],["subbtle","subtle"],["subcatagories","subcategories"],["subcatagory","subcategory"],["subcirucit","subcircuit"],["subcommannd","subcommand"],["subcommnad","subcommand"],["subconchus","subconscious"],["subconsiously","subconsciously"],["subcribe","subscribe"],["subcribed","subscribed"],["subcribes","subscribes"],["subcribing","subscribing"],["subdirectoires","subdirectories"],["subdirectorys","subdirectories"],["subdirecty","subdirectory"],["subdivisio","subdivision"],["subdivisiond","subdivisioned"],["subdoamin","subdomain"],["subdoamins","subdomains"],["subelemet","subelement"],["subelemets","subelements"],["subexperesion","subexpression"],["subexperesions","subexpressions"],["subexperession","subexpression"],["subexperessions","subexpressions"],["subexpersion","subexpression"],["subexpersions","subexpressions"],["subexperssion","subexpression"],["subexperssions","subexpressions"],["subexpession","subexpression"],["subexpessions","subexpressions"],["subexpresssion","subexpression"],["subexpresssions","subexpressions"],["subfolfer","subfolder"],["subfolfers","subfolders"],["subfromat","subformat"],["subfromats","subformats"],["subfroms","subforms"],["subgregion","subregion"],["subirectory","subdirectory"],["subjec","subject"],["subjet","subject"],["subjudgation","subjugation"],["sublass","subclass"],["sublasse","subclasse"],["sublasses","subclasses"],["sublcasses","subclasses"],["sublcuase","subclause"],["suble","subtle"],["submachne","submachine"],["submision","submission"],["submisson","submission"],["submited","submitted"],["submition","submission"],["submitions","submissions"],["submittted","submitted"],["submoule","submodule"],["submti","submit"],["subnegatiotiation","subnegotiation"],["subnegatiotiations","subnegotiations"],["subnegoatiation","subnegotiation"],["subnegoatiations","subnegotiations"],["subnegoation","subnegotiation"],["subnegoations","subnegotiations"],["subnegociation","subnegotiation"],["subnegociations","subnegotiations"],["subnegogtiation","subnegotiation"],["subnegogtiations","subnegotiations"],["subnegoitation","subnegotiation"],["subnegoitations","subnegotiations"],["subnegoptionsotiation","subnegotiation"],["subnegoptionsotiations","subnegotiations"],["subnegosiation","subnegotiation"],["subnegosiations","subnegotiations"],["subnegotaiation","subnegotiation"],["subnegotaiations","subnegotiations"],["subnegotaition","subnegotiation"],["subnegotaitions","subnegotiations"],["subnegotatiation","subnegotiation"],["subnegotatiations","subnegotiations"],["subnegotation","subnegotiation"],["subnegotations","subnegotiations"],["subnegothiation","subnegotiation"],["subnegothiations","subnegotiations"],["subnegotication","subnegotiation"],["subnegotications","subnegotiations"],["subnegotioation","subnegotiation"],["subnegotioations","subnegotiations"],["subnegotion","subnegotiation"],["subnegotionation","subnegotiation"],["subnegotionations","subnegotiations"],["subnegotions","subnegotiations"],["subnegotiotation","subnegotiation"],["subnegotiotations","subnegotiations"],["subnegotiotion","subnegotiation"],["subnegotiotions","subnegotiations"],["subnegotitaion","subnegotiation"],["subnegotitaions","subnegotiations"],["subnegotitation","subnegotiation"],["subnegotitations","subnegotiations"],["subnegotition","subnegotiation"],["subnegotitions","subnegotiations"],["subnegoziation","subnegotiation"],["subnegoziations","subnegotiations"],["subobjecs","subobjects"],["suborutine","subroutine"],["suborutines","subroutines"],["suboutine","subroutine"],["subpackge","subpackage"],["subpackges","subpackages"],["subpecies","subspecies"],["subporgram","subprogram"],["subproccese","subprocess"],["subpsace","subspace"],["subquue","subqueue"],["subract","subtract"],["subracted","subtracted"],["subraction","subtraction"],["subree","subtree"],["subresoure","subresource"],["subresoures","subresources"],["subroutie","subroutine"],["subrouties","subroutines"],["subsceptible","susceptible"],["subscibe","subscribe"],["subscibed","subscribed"],["subsciber","subscriber"],["subscibers","subscribers"],["subscirbe","subscribe"],["subscirbed","subscribed"],["subscirber","subscriber"],["subscirbers","subscribers"],["subscirbes","subscribes"],["subscirbing","subscribing"],["subscirpt","subscript"],["subscirption","subscription"],["subscirptions","subscriptions"],["subscritpion","subscription"],["subscritpions","subscriptions"],["subscritpiton","subscription"],["subscritpitons","subscriptions"],["subscritpt","subscript"],["subscritption","subscription"],["subscritptions","subscriptions"],["subsctitution","substitution"],["subsecrion","subsection"],["subsedent","subsequent"],["subseqence","subsequence"],["subseqent","subsequent"],["subsequest","subsequent"],["subsequnce","subsequence"],["subsequnt","subsequent"],["subsequntly","subsequently"],["subseuqent","subsequent"],["subshystem","subsystem"],["subshystems","subsystems"],["subsidary","subsidiary"],["subsiduary","subsidiary"],["subsiquent","subsequent"],["subsiquently","subsequently"],["subsituent","substituent"],["subsituents","substituents"],["subsitutable","substitutable"],["subsitutatble","substitutable"],["subsitute","substitute"],["subsituted","substituted"],["subsitutes","substitutes"],["subsituting","substituting"],["subsitution","substitution"],["subsitutions","substitutions"],["subsitutuent","substituent"],["subsitutuents","substituents"],["subsitutute","substitute"],["subsitututed","substituted"],["subsitututes","substitutes"],["subsitututing","substituting"],["subsitutution","substitution"],["subsquent","subsequent"],["subsquently","subsequently"],["subsriber","subscriber"],["substace","substance"],["substact","subtract"],["substaintially","substantially"],["substancial","substantial"],["substantialy","substantially"],["substantivly","substantively"],["substask","subtask"],["substasks","subtasks"],["substatial","substantial"],["substential","substantial"],["substentially","substantially"],["substition","substitution"],["substitions","substitutions"],["substitition","substitution"],["substititions","substitutions"],["substituation","substitution"],["substituations","substitutions"],["substitude","substitute"],["substituded","substituted"],["substitudes","substitutes"],["substituding","substituting"],["substitue","substitute"],["substitues","substitutes"],["substituing","substituting"],["substituion","substitution"],["substituions","substitutions"],["substiution","substitution"],["substract","subtract"],["substracted","subtracted"],["substracting","subtracting"],["substraction","subtraction"],["substracts","subtracts"],["substucture","substructure"],["substuctures","substructures"],["substutite","substitute"],["subsysthem","subsystem"],["subsysthems","subsystems"],["subsystyem","subsystem"],["subsystyems","subsystems"],["subsysytem","subsystem"],["subsysytems","subsystems"],["subsytem","subsystem"],["subsytems","subsystems"],["subtabels","subtables"],["subtak","subtask"],["subtances","substances"],["subterranian","subterranean"],["subtitute","substitute"],["subtituted","substituted"],["subtitutes","substitutes"],["subtituting","substituting"],["subtitution","substitution"],["subtitutions","substitutions"],["subtrafuge","subterfuge"],["subtrate","substrate"],["subtrates","substrates"],["subtring","substring"],["subtrings","substrings"],["subtsitutable","substitutable"],["subtsitutatble","substitutable"],["suburburban","suburban"],["subystem","subsystem"],["subystems","subsystems"],["succceeded","succeeded"],["succcess","success"],["succcesses","successes"],["succcessful","successful"],["succcessfully","successfully"],["succcessor","successor"],["succcessors","successors"],["succcessul","successful"],["succcessully","successfully"],["succecful","successful"],["succed","succeed"],["succedd","succeed"],["succedded","succeeded"],["succedding","succeeding"],["succedds","succeeds"],["succede","succeed"],["succeded","succeeded"],["succedes","succeeds"],["succedfully","successfully"],["succeding","succeeding"],["succeds","succeeds"],["succee","succeed"],["succeedde","succeeded"],["succeedes","succeeds"],["succeess","success"],["succeesses","successes"],["succes","success"],["succesful","successful"],["succesfull","successful"],["succesfully","successfully"],["succesfuly","successfully"],["succesion","succession"],["succesive","successive"],["succesor","successor"],["succesors","successors"],["successfui","successful"],["successfule","successful"],["successfull","successful"],["successfullies","successfully"],["successfullly","successfully"],["successfulln","successful"],["successfullness","successfulness"],["successfullt","successfully"],["successfuly","successfully"],["successing","successive"],["successs","success"],["successsfully","successfully"],["successsion","succession"],["successul","successful"],["successully","successfully"],["succesully","successfully"],["succicently","sufficiently"],["succint","succinct"],["succseeded","succeeded"],["succsess","success"],["succsessfull","successful"],["succsessive","successive"],["succssful","successful"],["succussfully","successfully"],["suceed","succeed"],["suceeded","succeeded"],["suceeding","succeeding"],["suceeds","succeeds"],["suceessfully","successfully"],["suces","success"],["suceses","successes"],["sucesful","successful"],["sucesfull","successful"],["sucesfully","successfully"],["sucesfuly","successfully"],["sucesion","succession"],["sucesive","successive"],["sucess","success"],["sucesscient","sufficient"],["sucessed","succeeded"],["sucessefully","successfully"],["sucesses","successes"],["sucessess","success"],["sucessflly","successfully"],["sucessfually","successfully"],["sucessfukk","successful"],["sucessful","successful"],["sucessfull","successful"],["sucessfully","successfully"],["sucessfuly","successfully"],["sucession","succession"],["sucessiv","successive"],["sucessive","successive"],["sucessively","successively"],["sucessor","successor"],["sucessors","successors"],["sucessot","successor"],["sucesss","success"],["sucessses","successes"],["sucesssful","successful"],["sucesssfull","successful"],["sucesssfully","successfully"],["sucesssfuly","successfully"],["sucessufll","successful"],["sucessuflly","successfully"],["sucessully","successfully"],["sucide","suicide"],["sucidial","suicidal"],["sucome","succumb"],["sucsede","succeed"],["sucsess","success"],["sudent","student"],["sudents","students"],["sudmobule","submodule"],["sudmobules","submodules"],["sueful","useful"],["sueprset","superset"],["suface","surface"],["sufaces","surfaces"],["sufface","surface"],["suffaces","surfaces"],["suffciency","sufficiency"],["suffcient","sufficient"],["suffciently","sufficiently"],["sufferage","suffrage"],["sufferred","suffered"],["sufferring","suffering"],["sufficate","suffocate"],["sufficated","suffocated"],["sufficates","suffocates"],["sufficating","suffocating"],["suffication","suffocation"],["sufficency","sufficiency"],["sufficent","sufficient"],["sufficently","sufficiently"],["sufficiancy","sufficiency"],["sufficiant","sufficient"],["sufficiantly","sufficiently"],["sufficiennt","sufficient"],["sufficienntly","sufficiently"],["suffiency","sufficiency"],["suffient","sufficient"],["suffiently","sufficiently"],["suffisticated","sophisticated"],["suficate","suffocate"],["suficated","suffocated"],["suficates","suffocates"],["suficating","suffocating"],["sufication","suffocation"],["suficcient","sufficient"],["suficient","sufficient"],["suficiently","sufficiently"],["sufocate","suffocate"],["sufocated","suffocated"],["sufocates","suffocates"],["sufocating","suffocating"],["sufocation","suffocation"],["sugested","suggested"],["sugestion","suggestion"],["sugestions","suggestions"],["sugests","suggests"],["suggesst","suggest"],["suggessted","suggested"],["suggessting","suggesting"],["suggesstion","suggestion"],["suggesstions","suggestions"],["suggessts","suggests"],["suggestes","suggests"],["suggestin","suggestion"],["suggestins","suggestions"],["suggestsed","suggested"],["suggestted","suggested"],["suggesttion","suggestion"],["suggesttions","suggestions"],["sugget","suggest"],["suggeted","suggested"],["suggetsed","suggested"],["suggetsing","suggesting"],["suggetsion","suggestion"],["sugggest","suggest"],["sugggested","suggested"],["sugggesting","suggesting"],["sugggestion","suggestion"],["sugggestions","suggestions"],["sugguest","suggest"],["sugguested","suggested"],["sugguesting","suggesting"],["sugguestion","suggestion"],["sugguestions","suggestions"],["suh","such"],["suiete","suite"],["suiteable","suitable"],["sumamry","summary"],["sumarize","summarize"],["sumary","summary"],["sumbitted","submitted"],["sumed-up","summed-up"],["summarizen","summarize"],["summay","summary"],["summerised","summarised"],["summerized","summarized"],["summersalt","somersault"],["summmaries","summaries"],["summmarisation","summarisation"],["summmarised","summarised"],["summmarization","summarization"],["summmarized","summarized"],["summmary","summary"],["sumodules","submodules"],["sumulate","simulate"],["sumulated","simulated"],["sumulates","simulates"],["sumulation","simulation"],["sumulations","simulations"],["sundey","Sunday"],["sunglases","sunglasses"],["sunsday","Sunday"],["suntask","subtask"],["suop","soup"],["supeblock","superblock"],["supeena","subpoena"],["superbock","superblock"],["superbocks","superblocks"],["supercalifragilisticexpialidoceous","supercalifragilisticexpialidocious"],["supercede","supersede"],["superceded","superseded"],["supercedes","supersedes"],["superceding","superseding"],["superceed","supersede"],["superceeded","superseded"],["superflouous","superfluous"],["superflous","superfluous"],["superflouse","superfluous"],["superfluious","superfluous"],["superfluos","superfluous"],["superfulous","superfluous"],["superintendant","superintendent"],["superopeator","superoperator"],["supersed","superseded"],["superseedd","superseded"],["superseede","supersede"],["superseeded","superseded"],["suphisticated","sophisticated"],["suplant","supplant"],["suplanted","supplanted"],["suplanting","supplanting"],["suplants","supplants"],["suplementary","supplementary"],["suplied","supplied"],["suplimented","supplemented"],["supllies","supplies"],["suport","support"],["suported","supported"],["suporting","supporting"],["suports","supports"],["suportted","supported"],["suposable","supposable"],["supose","suppose"],["suposeable","supposable"],["suposed","supposed"],["suposedly","supposedly"],["suposes","supposes"],["suposing","supposing"],["suposse","suppose"],["suppied","supplied"],["suppier","supplier"],["suppies","supplies"],["supplamented","supplemented"],["suppliad","supplied"],["suppliementing","supplementing"],["suppliment","supplement"],["supplyed","supplied"],["suppoed","supposed"],["suppoert","support"],["suppoort","support"],["suppoorts","supports"],["suppopose","suppose"],["suppoprt","support"],["suppoprted","supported"],["suppor","support"],["suppored","supported"],["supporession","suppression"],["supporing","supporting"],["supportd","supported"],["supportes","supports"],["supportin","supporting"],["supportt","support"],["supportted","supported"],["supportting","supporting"],["supportts","supports"],["supposeable","supposable"],["supposeded","supposed"],["supposedely","supposedly"],["supposeds","supposed"],["supposedy","supposedly"],["supposingly","supposedly"],["suppossed","supposed"],["suppoted","supported"],["suppplied","supplied"],["suppport","support"],["suppported","supported"],["suppporting","supporting"],["suppports","supports"],["suppres","suppress"],["suppresed","suppressed"],["suppresion","suppression"],["suppresions","suppressions"],["suppressingd","suppressing"],["supprot","support"],["supproted","supported"],["supproter","supporter"],["supproters","supporters"],["supproting","supporting"],["supprots","supports"],["supprt","support"],["supprted","supported"],["suppurt","support"],["suppurted","supported"],["suppurter","supporter"],["suppurters","supporters"],["suppurting","supporting"],["suppurtive","supportive"],["suppurts","supports"],["suppy","supply"],["suppying","supplying"],["suprassing","surpassing"],["supres","suppress"],["supresed","suppressed"],["supreses","suppresses"],["supresing","suppressing"],["supresion","suppression"],["supress","suppress"],["supressed","suppressed"],["supresses","suppresses"],["supressible","suppressible"],["supressing","suppressing"],["supression","suppression"],["supressions","suppressions"],["supressor","suppressor"],["supressors","suppressors"],["supresssion","suppression"],["suprious","spurious"],["suprise","surprise"],["suprised","surprised"],["suprises","surprises"],["suprising","surprising"],["suprisingly","surprisingly"],["suprize","surprise"],["suprized","surprised"],["suprizing","surprising"],["suprizingly","surprisingly"],["supsend","suspend"],["supspect","suspect"],["supspected","suspected"],["supspecting","suspecting"],["supspects","suspects"],["surbert","sherbet"],["surfce","surface"],["surgest","suggest"],["surgested","suggested"],["surgestion","suggestion"],["surgestions","suggestions"],["surgests","suggests"],["suround","surround"],["surounded","surrounded"],["surounding","surrounding"],["suroundings","surroundings"],["surounds","surrounds"],["surpise","surprise"],["surpises","surprises"],["surplanted","supplanted"],["surport","support"],["surported","supported"],["surpress","suppress"],["surpressed","suppressed"],["surpresses","suppresses"],["surpressing","suppressing"],["surprisinlgy","surprisingly"],["surprize","surprise"],["surprized","surprised"],["surprizing","surprising"],["surprizingly","surprisingly"],["surregat","surrogate"],["surrepetitious","surreptitious"],["surrepetitiously","surreptitiously"],["surreptious","surreptitious"],["surreptiously","surreptitiously"],["surrogage","surrogate"],["surronded","surrounded"],["surrouded","surrounded"],["surrouding","surrounding"],["surrrounded","surrounded"],["surrundering","surrendering"],["survay","survey"],["survays","surveys"],["surveilence","surveillance"],["surveill","surveil"],["surveyer","surveyor"],["surviver","survivor"],["survivers","survivors"],["survivied","survived"],["susbcribed","subscribed"],["susbsystem","subsystem"],["susbsystems","subsystems"],["susbsytem","subsystem"],["susbsytems","subsystems"],["suscribe","subscribe"],["suscribed","subscribed"],["suscribes","subscribes"],["suscript","subscript"],["susepect","suspect"],["suseptable","susceptible"],["suseptible","susceptible"],["susinctly","succinctly"],["susinkt","succinct"],["suspedn","suspend"],["suspeneded","suspended"],["suspention","suspension"],["suspicios","suspicious"],["suspicioulsy","suspiciously"],["suspicous","suspicious"],["suspicously","suspiciously"],["suspision","suspicion"],["suspsend","suspend"],["sussinct","succinct"],["sustainaiblity","sustainability"],["sustem","system"],["sustems","systems"],["sustitution","substitution"],["sustitutions","substitutions"],["susupend","suspend"],["sutdown","shutdown"],["sutisfaction","satisfaction"],["sutisfied","satisfied"],["sutisfies","satisfies"],["sutisfy","satisfy"],["sutisfying","satisfying"],["suttled","shuttled"],["suttles","shuttles"],["suttlety","subtlety"],["suttling","shuttling"],["suuport","support"],["suuported","supported"],["suuporting","supporting"],["suuports","supports"],["suvenear","souvenir"],["suystem","system"],["suystemic","systemic"],["suystems","systems"],["svelt","svelte"],["swaer","swear"],["swaers","swears"],["swalloed","swallowed"],["swaped","swapped"],["swapiness","swappiness"],["swaping","swapping"],["swarmin","swarming"],["swcloumns","swcolumns"],["swepth","swept"],["swich","switch"],["swiched","switched"],["swiching","switching"],["swicth","switch"],["swicthed","switched"],["swicthing","switching"],["swiming","swimming"],["switchs","switches"],["switcht","switched"],["switchting","switching"],["swith","switch"],["swithable","switchable"],["swithc","switch"],["swithcboard","switchboard"],["swithced","switched"],["swithces","switches"],["swithch","switch"],["swithches","switches"],["swithching","switching"],["swithcing","switching"],["swithcover","switchover"],["swithed","switched"],["swither","switcher"],["swithes","switches"],["swithing","switching"],["switiches","switches"],["swown","shown"],["swtich","switch"],["swtichable","switchable"],["swtichback","switchback"],["swtichbacks","switchbacks"],["swtichboard","switchboard"],["swtichboards","switchboards"],["swtiched","switched"],["swticher","switcher"],["swtichers","switchers"],["swtiches","switches"],["swtiching","switching"],["swtichover","switchover"],["swtichs","switches"],["sxl","xsl"],["syantax","syntax"],["syas","says"],["syatem","system"],["syatems","systems"],["sybsystem","subsystem"],["sybsystems","subsystems"],["sychronisation","synchronisation"],["sychronise","synchronise"],["sychronised","synchronised"],["sychroniser","synchroniser"],["sychronises","synchronises"],["sychronisly","synchronously"],["sychronization","synchronization"],["sychronize","synchronize"],["sychronized","synchronized"],["sychronizer","synchronizer"],["sychronizes","synchronizes"],["sychronmode","synchronmode"],["sychronous","synchronous"],["sychronously","synchronously"],["sycle","cycle"],["sycled","cycled"],["sycles","cycles"],["sycling","cycling"],["sycn","sync"],["sycology","psychology"],["sycronise","synchronise"],["sycronised","synchronised"],["sycronises","synchronises"],["sycronising","synchronising"],["sycronization","synchronization"],["sycronizations","synchronizations"],["sycronize","synchronize"],["sycronized","synchronized"],["sycronizes","synchronizes"],["sycronizing","synchronizing"],["sycronous","synchronous"],["sycronously","synchronously"],["sycronus","synchronous"],["sylabus","syllabus"],["syle","style"],["syles","styles"],["sylibol","syllable"],["sylinder","cylinder"],["sylinders","cylinders"],["sylistic","stylistic"],["sylog","syslog"],["symantics","semantics"],["symblic","symbolic"],["symbo","symbol"],["symboles","symbols"],["symboll","symbol"],["symbonname","symbolname"],["symbsol","symbol"],["symbsols","symbols"],["symemetric","symmetric"],["symetri","symmetry"],["symetric","symmetric"],["symetrical","symmetrical"],["symetrically","symmetrically"],["symetry","symmetry"],["symettric","symmetric"],["symmetic","symmetric"],["symmetral","symmetric"],["symmetri","symmetry"],["symmetricaly","symmetrically"],["symnol","symbol"],["symnols","symbols"],["symobilic","symbolic"],["symobl","symbol"],["symoblic","symbolic"],["symoblically","symbolically"],["symobls","symbols"],["symobolic","symbolic"],["symobolical","symbolical"],["symol","symbol"],["symols","symbols"],["synagouge","synagogue"],["synamic","dynamic"],["synax","syntax"],["synching","syncing"],["synchonisation","synchronisation"],["synchonise","synchronise"],["synchonised","synchronised"],["synchonises","synchronises"],["synchonising","synchronising"],["synchonization","synchronization"],["synchonize","synchronize"],["synchonized","synchronized"],["synchonizes","synchronizes"],["synchonizing","synchronizing"],["synchonous","synchronous"],["synchonrous","synchronous"],["synchrnization","synchronization"],["synchrnonization","synchronization"],["synchroizing","synchronizing"],["synchromized","synchronized"],["synchroneous","synchronous"],["synchroneously","synchronously"],["synchronious","synchronous"],["synchroniously","synchronously"],["synchronizaton","synchronization"],["synchronsouly","synchronously"],["synchronuous","synchronous"],["synchronuously","synchronously"],["synchronus","synchronous"],["syncrhonise","synchronise"],["syncrhonised","synchronised"],["syncrhonize","synchronize"],["syncrhonized","synchronized"],["syncronise","synchronise"],["syncronised","synchronised"],["syncronises","synchronises"],["syncronising","synchronising"],["syncronization","synchronization"],["syncronizations","synchronizations"],["syncronize","synchronize"],["syncronized","synchronized"],["syncronizes","synchronizes"],["syncronizing","synchronizing"],["syncronous","synchronous"],["syncronously","synchronously"],["syncronus","synchronous"],["syncting","syncing"],["syndonic","syntonic"],["syndrom","syndrome"],["syndroms","syndromes"],["synomym","synonym"],["synonim","synonym"],["synonomous","synonymous"],["synonymns","synonyms"],["synopis","synopsis"],["synopsys","synopsis"],["synoym","synonym"],["synphony","symphony"],["synposis","synopsis"],["synronous","synchronous"],["syntac","syntax"],["syntacks","syntax"],["syntacs","syntax"],["syntact","syntax"],["syntactally","syntactically"],["syntacts","syntax"],["syntak","syntax"],["syntaks","syntax"],["syntakt","syntax"],["syntakts","syntax"],["syntatic","syntactic"],["syntatically","syntactically"],["syntaxe","syntax"],["syntaxg","syntax"],["syntaxt","syntax"],["syntehsise","synthesise"],["syntehsised","synthesised"],["syntehsize","synthesize"],["syntehsized","synthesized"],["syntesis","synthesis"],["syntethic","synthetic"],["syntethically","synthetically"],["syntethics","synthetics"],["syntetic","synthetic"],["syntetize","synthesize"],["syntetized","synthesized"],["synthethic","synthetic"],["synthetize","synthesize"],["synthetized","synthesized"],["synthetizes","synthesizes"],["synthtic","synthetic"],["syphyllis","syphilis"],["sypmtoms","symptoms"],["sypport","support"],["syrap","syrup"],["sysbols","symbols"],["syschronize","synchronize"],["sysem","system"],["sysematic","systematic"],["sysems","systems"],["sysmatically","systematically"],["sysmbol","symbol"],["sysmograph","seismograph"],["sysmte","system"],["sysmtes","systems"],["systax","syntax"],["syste","system"],["systen","system"],["systens","systems"],["systesm","systems"],["systhem","system"],["systhems","systems"],["systm","system"],["systme","system"],["systmes","systems"],["systms","systems"],["systyem","system"],["systyems","systems"],["sysyem","system"],["sysyems","systems"],["sytax","syntax"],["sytem","system"],["sytematic","systematic"],["sytemd","systemd"],["syteme","system"],["sytems","systems"],["sythesis","synthesis"],["sytle","style"],["sytled","styled"],["sytles","styles"],["sytlesheet","stylesheet"],["sytling","styling"],["sytnax","syntax"],["sytntax","syntax"],["sytsem","system"],["sytsemic","systemic"],["sytsems","systems"],["szenario","scenario"],["szenarios","scenarios"],["szes","sizes"],["szie","size"],["szied","sized"],["szies","sizes"],["tabacco","tobacco"],["tabbaray","taboret"],["tabblow","tableau"],["tabe","table"],["tabel","table"],["tabeles","tables"],["tabels","tables"],["tabeview","tabview"],["tabke","table"],["tabl","table"],["tablepsace","tablespace"],["tablepsaces","tablespaces"],["tablle","table"],["tabluar","tabular"],["tabluate","tabulate"],["tabluated","tabulated"],["tabluates","tabulates"],["tabluating","tabulating"],["tabualte","tabulate"],["tabualted","tabulated"],["tabualtes","tabulates"],["tabualting","tabulating"],["tabualtor","tabulator"],["tabualtors","tabulators"],["taged","tagged"],["taget","target"],["tageted","targeted"],["tageting","targeting"],["tagets","targets"],["tagggen","taggen"],["tagnet","tangent"],["tagnetial","tangential"],["tagnets","tangents"],["tagued","tagged"],["tahn","than"],["taht","that"],["takslet","tasklet"],["talbe","table"],["talekd","talked"],["tallerable","tolerable"],["tamplate","template"],["tamplated","templated"],["tamplates","templates"],["tamplating","templating"],["tangeant","tangent"],["tangeantial","tangential"],["tangeants","tangents"],["tangenet","tangent"],["tangensial","tangential"],["tangentailly","tangentially"],["tanget","tangent"],["tangetial","tangential"],["tangetially","tangentially"],["tangets","tangents"],["tansact","transact"],["tansaction","transaction"],["tansactional","transactional"],["tansactions","transactions"],["tanseint","transient"],["tansfomed","transformed"],["tansient","transient"],["tanslate","translate"],["tanslated","translated"],["tanslates","translates"],["tanslation","translation"],["tanslations","translations"],["tanslator","translator"],["tansmit","transmit"],["tansverse","transverse"],["tarbal","tarball"],["tarbals","tarballs"],["tarce","trace"],["tarced","traced"],["tarces","traces"],["tarcing","tracing"],["targed","target"],["targer","target"],["targest","targets"],["targetted","targeted"],["targetting","targeting"],["targettting","targeting"],["targt","target"],["targte","target"],["tarmigan","ptarmigan"],["tarnsparent","transparent"],["tarpolin","tarpaulin"],["tarvis","Travis"],["tarvisci","TravisCI"],["tasbar","taskbar"],["taskelt","tasklet"],["tast","taste"],["tatgert","target"],["tatgerted","targeted"],["tatgerting","targeting"],["tatgerts","targets"],["tath","that"],["tatoo","tattoo"],["tatoos","tattoos"],["tattooes","tattoos"],["tawk","talk"],["taxanomic","taxonomic"],["taxanomy","taxonomy"],["taxnomy","taxonomy"],["taxomonmy","taxonomy"],["taxonmy","taxonomy"],["taxonoy","taxonomy"],["taylored","tailored"],["tbe","the"],["tbey","they"],["tcahce","cache"],["tcahces","caches"],["tcheckout","checkout"],["tcpdumpp","tcpdump"],["tcppcheck","cppcheck"],["teacer","teacher"],["teacers","teachers"],["teached","taught"],["teachnig","teaching"],["teaher","teacher"],["teahers","teachers"],["teamplate","template"],["teamplates","templates"],["teated","treated"],["teched","taught"],["techer","teacher"],["techers","teachers"],["teches","teaches"],["techical","technical"],["techician","technician"],["techicians","technicians"],["techincal","technical"],["techincally","technically"],["teching","teaching"],["techinically","technically"],["techinique","technique"],["techiniques","techniques"],["techinque","technique"],["techinques","techniques"],["techique","technique"],["techiques","techniques"],["techneek","technique"],["technic","technique"],["technics","techniques"],["technik","technique"],["techniks","techniques"],["techniquest","techniques"],["techniquet","technique"],["technitian","technician"],["technition","technician"],["technlogy","technology"],["technnology","technology"],["technolgy","technology"],["technoloiges","technologies"],["tecnic","technique"],["tecnical","technical"],["tecnically","technically"],["tecnician","technician"],["tecnicians","technicians"],["tecnique","technique"],["tecniques","techniques"],["tedeous","tedious"],["tefine","define"],["teh","the"],["tehy","they"],["tekst","text"],["teksts","texts"],["telegramm","telegram"],["telelevision","television"],["televsion","television"],["telocom","telecom"],["telphony","telephony"],["temaplate","template"],["temaplates","templates"],["temeprature","temperature"],["temepratures","temperatures"],["temerature","temperature"],["teminal","terminal"],["teminals","terminals"],["teminate","terminate"],["teminated","terminated"],["teminating","terminating"],["temination","termination"],["temlate","template"],["temorarily","temporarily"],["temorary","temporary"],["tempalte","template"],["tempaltes","templates"],["temparal","temporal"],["tempararily","temporarily"],["temparary","temporary"],["temparate","temperate"],["temparature","temperature"],["temparily","temporarily"],["tempate","template"],["tempated","templated"],["tempates","templates"],["tempatied","templatized"],["tempation","temptation"],["tempatised","templatised"],["tempatized","templatized"],["tempature","temperature"],["tempdate","template"],["tempearture","temperature"],["tempeartures","temperatures"],["tempearure","temperature"],["tempelate","template"],["temperarily","temporarily"],["temperarure","temperature"],["temperary","temporary"],["temperatur","temperature"],["tempereature","temperature"],["temperment","temperament"],["tempertaure","temperature"],["temperture","temperature"],["templaced","templated"],["templaces","templates"],["templacing","templating"],["templaet","template"],["templat","template"],["templateas","templates"],["templete","template"],["templeted","templated"],["templetes","templates"],["templeting","templating"],["tempoaray","temporary"],["tempopary","temporary"],["temporaere","temporary"],["temporafy","temporary"],["temporalily","temporarily"],["temporarely","temporarily"],["temporarilly","temporarily"],["temporarilty","temporarily"],["temporarilu","temporary"],["temporarirly","temporarily"],["temporay","temporary"],["tempories","temporaries"],["temporily","temporarily"],["tempororaries","temporaries"],["tempororarily","temporarily"],["tempororary","temporary"],["temporories","temporaries"],["tempororily","temporarily"],["temporory","temporary"],["temporraies","temporaries"],["temporraily","temporarily"],["temporraries","temporaries"],["temporrarily","temporarily"],["temporrary","temporary"],["temporray","temporary"],["temporries","temporaries"],["temporrily","temporarily"],["temporry","temporary"],["temportal","temporal"],["temportaries","temporaries"],["temportarily","temporarily"],["temportary","temporary"],["tempory","temporary"],["temporyries","temporaries"],["temporyrily","temporarily"],["temporyry","temporary"],["tempraaily","temporarily"],["tempraal","temporal"],["tempraarily","temporarily"],["tempraarly","temporarily"],["tempraary","temporary"],["tempraay","temporary"],["tempraily","temporarily"],["tempral","temporal"],["temprament","temperament"],["tempramental","temperamental"],["tempraraily","temporarily"],["tempraral","temporal"],["temprararily","temporarily"],["temprararly","temporarily"],["temprarary","temporary"],["tempraray","temporary"],["temprarily","temporarily"],["temprature","temperature"],["tempratures","temperatures"],["tempray","temporary"],["tempreature","temperature"],["tempreatures","temperatures"],["temprement","temperament"],["tempremental","temperamental"],["temproaily","temporarily"],["temproal","temporal"],["temproarily","temporarily"],["temproarly","temporarily"],["temproary","temporary"],["temproay","temporary"],["temprol","temporal"],["temproment","temperament"],["tempromental","temperamental"],["temproraily","temporarily"],["temproral","temporal"],["temproraly","temporarily"],["temprorarily","temporarily"],["temprorarly","temporarily"],["temprorary","temporary"],["temproray","temporary"],["temprorily","temporarily"],["temprory","temporary"],["temproy","temporary"],["temptatation","temptation"],["tempurature","temperature"],["tempurture","temperature"],["temr","term"],["temrinal","terminal"],["temselves","themselves"],["temtation","temptation"],["tenacle","tentacle"],["tenacles","tentacles"],["tenanet","tenant"],["tenanets","tenants"],["tenatious","tenacious"],["tenatiously","tenaciously"],["tenative","tentative"],["tenatively","tentatively"],["tendacy","tendency"],["tendancies","tendencies"],["tendancy","tendency"],["tennisplayer","tennis player"],["tentaive","tentative"],["tentaively","tentatively"],["tention","tension"],["teplmate","template"],["teplmated","templated"],["teplmates","templates"],["tepmorarily","temporarily"],["teraform","terraform"],["teraformed","terraformed"],["teraforming","terraforming"],["teraforms","terraforms"],["terfform","terraform"],["terfformed","terraformed"],["terfforming","terraforming"],["terfforms","terraforms"],["teridactyl","pterodactyl"],["terific","terrific"],["terimnate","terminate"],["termial","terminal"],["termials","terminals"],["termianted","terminated"],["termimal","terminal"],["termimals","terminals"],["terminater","terminator"],["terminaters","terminators"],["terminats","terminates"],["termindate","terminate"],["termine","determine"],["termined","terminated"],["terminte","terminate"],["termintor","terminator"],["termniate","terminate"],["termniated","terminated"],["termniates","terminates"],["termniating","terminating"],["termniation","termination"],["termniations","terminations"],["termniator","terminator"],["termniators","terminators"],["termo","thermo"],["termostat","thermostat"],["termperatue","temperature"],["termperatues","temperatures"],["termperature","temperature"],["termperatures","temperatures"],["termplate","template"],["termplated","templated"],["termplates","templates"],["termporal","temporal"],["termporaries","temporaries"],["termporarily","temporarily"],["termporary","temporary"],["ternament","tournament"],["ternimate","terminate"],["terninal","terminal"],["terninals","terminals"],["terrable","terrible"],["terrestial","terrestrial"],["terrform","terraform"],["terrformed","terraformed"],["terrforming","terraforming"],["terrforms","terraforms"],["terriffic","terrific"],["terriories","territories"],["terriory","territory"],["territorist","terrorist"],["territoy","territory"],["terroist","terrorist"],["terurn","return"],["terurns","returns"],["tescase","testcase"],["tescases","testcases"],["tesellate","tessellate"],["tesellated","tessellated"],["tesellation","tessellation"],["tesellator","tessellator"],["tesited","tested"],["tessealte","tessellate"],["tessealted","tessellated"],["tesselatad","tessellated"],["tesselate","tessellate"],["tesselated","tessellated"],["tesselation","tessellation"],["tesselator","tessellator"],["tessleate","tessellate"],["tessleated","tessellated"],["tessleating","tessellating"],["tessleator","tessellator"],["testeing","testing"],["testiclular","testicular"],["testin","testing"],["testng","testing"],["testof","test of"],["testomony","testimony"],["testsing","testing"],["tetrahedran","tetrahedron"],["tetrahedrans","tetrahedrons"],["tetry","retry"],["tetss","tests"],["tetxture","texture"],["teusday","Tuesday"],["texchnically","technically"],["texline","textline"],["textfrme","textframe"],["texual","textual"],["texually","textually"],["texure","texture"],["texured","textured"],["texures","textures"],["texxt","text"],["tey","they"],["tghe","the"],["thansk","thanks"],["thansparent","transparent"],["thant","than"],["thare","there"],["that;s","that's"],["thats'","that's"],["thats","that's"],["thats;","that's"],["thck","thick"],["theard","thread"],["thearding","threading"],["theards","threads"],["theared","threaded"],["theather","theater"],["theef","thief"],["theer","there"],["theery","theory"],["theese","these"],["thefore","therefore"],["theif","thief"],["theifs","thieves"],["theive","thief"],["theives","thieves"],["themplate","template"],["themselces","themselves"],["themselfes","themselves"],["themselfs","themselves"],["themselvs","themselves"],["themslves","themselves"],["thenes","themes"],["thenn","then"],["theorectical","theoretical"],["theoreticall","theoretically"],["theoreticaly","theoretically"],["theorical","theoretical"],["theorically","theoretically"],["theoritical","theoretical"],["theoritically","theoretically"],["therafter","thereafter"],["therapudic","therapeutic"],["therby","thereby"],["thereads","threads"],["thereom","theorem"],["thererin","therein"],["theres","there's"],["thereshold","threshold"],["theresholds","thresholds"],["therfore","therefore"],["thermisor","thermistor"],["thermisors","thermistors"],["thermostast","thermostat"],["thermostasts","thermostats"],["therstat","thermostat"],["therwise","otherwise"],["theshold","threshold"],["thesholds","thresholds"],["thest","test"],["thetraedral","tetrahedral"],["thetrahedron","tetrahedron"],["thev","the"],["theves","thieves"],["thgat","that"],["thge","the"],["thhese","these"],["thhis","this"],["thid","this"],["thier","their"],["thign","thing"],["thigns","things"],["thigny","thingy"],["thigsn","things"],["thikn","think"],["thikness","thickness"],["thiknesses","thicknesses"],["thikns","thinks"],["thiks","thinks"],["thimngs","things"],["thinigs","things"],["thinkabel","thinkable"],["thinn","thin"],["thirtyth","thirtieth"],["this'd","this would"],["thisle","thistle"],["thist","this"],["thisy","this"],["thiunk","think"],["thjese","these"],["thme","them"],["thn","then"],["thna","than"],["thnak","thank"],["thnaks","thanks"],["thne","then"],["thnig","thing"],["thnigs","things"],["thonic","chthonic"],["thoroidal","toroidal"],["thoroughty","thoroughly"],["thoruoghly","thoroughly"],["thoses","those"],["thouch","touch"],["thoughout","throughout"],["thougth","thought"],["thounsands","thousands"],["thourghly","thoroughly"],["thourough","thorough"],["thouroughly","thoroughly"],["thq","the"],["thrad","thread"],["threadsave","threadsafe"],["threashold","threshold"],["threasholds","thresholds"],["threatend","threatened"],["threatment","treatment"],["threatments","treatments"],["threatning","threatening"],["thred","thread"],["threded","threaded"],["thredhold","threshold"],["threding","threading"],["threds","threads"],["three-dimenional","three-dimensional"],["three-dimenionsal","three-dimensional"],["threedimenional","three-dimensional"],["threedimenionsal","three-dimensional"],["threee","three"],["threhold","threshold"],["threrefore","therefore"],["threshhold","threshold"],["threshholds","thresholds"],["threshod","threshold"],["threshods","thresholds"],["threshol","threshold"],["thresold","threshold"],["thresshold","threshold"],["thrid","third"],["throen","thrown"],["throgh","through"],["throrough","thorough"],["throttoling","throttling"],["throug","through"],["througg","through"],["throughly","thoroughly"],["throughtout","throughout"],["througout","throughout"],["througt","through"],["througth","through"],["throuh","through"],["throuhg","through"],["throuhgout","throughout"],["throuhgput","throughput"],["throuth","through"],["throwgh","through"],["thrreshold","threshold"],["thrresholds","thresholds"],["thrue","through"],["thrugh","through"],["thruogh","through"],["thruoghout","throughout"],["thruoghput","throughput"],["thruout","throughout"],["thses","these"],["thsi","this"],["thsnk","thank"],["thsnked","thanked"],["thsnkful","thankful"],["thsnkfully","thankfully"],["thsnkfulness","thankfulness"],["thsnking","thanking"],["thsnks","thanks"],["thsnkyou","thank you"],["thsoe","those"],["thsose","those"],["thsould","should"],["thst","that"],["thta","that"],["thtat","that"],["thumbbnail","thumbnail"],["thumbnal","thumbnail"],["thumbnals","thumbnails"],["thundebird","thunderbird"],["thurday","Thursday"],["thurough","thorough"],["thurrow","thorough"],["thursdey","Thursday"],["thurver","further"],["thyat","that"],["tichened","thickened"],["tichness","thickness"],["tickness","thickness"],["tidibt","tidbit"],["tidibts","tidbits"],["tieing","tying"],["tiemout","timeout"],["tiemstamp","timestamp"],["tiemstamped","timestamped"],["tiemstamps","timestamps"],["tieth","tithe"],["tigger","trigger"],["tiggered","triggered"],["tiggering","triggering"],["tiggers","triggers"],["tighly","tightly"],["tightely","tightly"],["tigth","tight"],["tigthen","tighten"],["tigthened","tightened"],["tigthening","tightening"],["tigthens","tightens"],["tigthly","tightly"],["tihkn","think"],["tihs","this"],["tiitle","title"],["tillt","tilt"],["tillted","tilted"],["tillts","tilts"],["timdelta","timedelta"],["timedlta","timedelta"],["timeing","timing"],["timemout","timeout"],["timeot","timeout"],["timeoutted","timed out"],["timere","timer"],["timesamp","timestamp"],["timesamped","timestamped"],["timesamps","timestamps"],["timeschedule","time schedule"],["timespanp","timespan"],["timespanps","timespans"],["timestan","timespan"],["timestans","timespans"],["timestap","timestamp"],["timestaped","timestamped"],["timestaping","timestamping"],["timestaps","timestamps"],["timestemp","timestamp"],["timestemps","timestamps"],["timestmap","timestamp"],["timestmaps","timestamps"],["timetamp","timestamp"],["timetamps","timestamps"],["timmestamp","timestamp"],["timmestamps","timestamps"],["timne","time"],["timoeut","timeout"],["timout","timeout"],["timtout","timeout"],["timzeone","timezone"],["timzeones","timezones"],["timzezone","timezone"],["timzezones","timezones"],["tinterrupts","interrupts"],["tipically","typically"],["tirangle","triangle"],["tirangles","triangles"],["titel","title"],["titels","titles"],["titile","title"],["tittled","titled"],["tittling","titling"],["tje","the"],["tjhe","the"],["tjpanishad","upanishad"],["tkae","take"],["tkaes","takes"],["tkaing","taking"],["tlaking","talking"],["tmis","this"],["tne","the"],["toally","totally"],["tobbaco","tobacco"],["tobot","robot"],["toches","touches"],["tocksen","toxin"],["todya","today"],["toekn","token"],["togehter","together"],["togeter","together"],["togeterness","togetherness"],["toggel","toggle"],["toggeles","toggles"],["toggeling","toggling"],["toggels","toggles"],["toggleing","toggling"],["togheter","together"],["toghether","together"],["togle","toggle"],["togled","toggled"],["togling","toggling"],["toglle","toggle"],["toglled","toggled"],["togther","together"],["tolarable","tolerable"],["tolelerance","tolerance"],["tolen","token"],["tolens","tokens"],["toleranz","tolerance"],["tolerence","tolerance"],["tolerences","tolerances"],["tolerent","tolerant"],["tolernce","tolerance"],["Tolkein","Tolkien"],["tollerable","tolerable"],["tollerance","tolerance"],["tollerances","tolerances"],["tolorance","tolerance"],["tolorances","tolerances"],["tolorant","tolerant"],["tomatoe","tomato"],["tomatos","tomatoes"],["tommorow","tomorrow"],["tommorrow","tomorrow"],["tomorrrow","tomorrow"],["tongiht","tonight"],["tonihgt","tonight"],["tood","todo"],["toogle","toggle"],["toogling","toggling"],["tookits","toolkits"],["toolar","toolbar"],["toolsbox","toolbox"],["toom","tomb"],["toos","tools"],["tootonic","teutonic"],["topicaizer","topicalizer"],["topologie","topology"],["torerable","tolerable"],["toriodal","toroidal"],["tork","torque"],["tormenters","tormentors"],["tornadoe","tornado"],["torpeados","torpedoes"],["torpedos","torpedoes"],["tortilini","tortellini"],["tortise","tortoise"],["torward","toward"],["torwards","towards"],["totaly","totally"],["totat","total"],["totation","rotation"],["totats","totals"],["tothe","to the"],["tothiba","toshiba"],["totol","total"],["totorial","tutorial"],["totorials","tutorials"],["touble","trouble"],["toubles","troubles"],["toubling","troubling"],["toughtful","thoughtful"],["toughtly","tightly"],["toughts","thoughts"],["tounge","tongue"],["touple","tuple"],["towords","towards"],["towrad","toward"],["toxen","toxin"],["tpye","type"],["tpyed","typed"],["tpyes","types"],["tpyo","typo"],["trabsform","transform"],["traceablity","traceability"],["trackign","tracking"],["trackling","tracking"],["tracsode","transcode"],["tracsoded","transcoded"],["tracsoder","transcoder"],["tracsoders","transcoders"],["tracsodes","transcodes"],["tracsoding","transcoding"],["traddition","tradition"],["tradditional","traditional"],["tradditions","traditions"],["tradgic","tragic"],["tradionally","traditionally"],["traditilnal","traditional"],["traditiona","traditional"],["traditionaly","traditionally"],["traditionnal","traditional"],["traditionnally","traditionally"],["traditition","tradition"],["tradtional","traditional"],["tradtionally","traditionally"],["trafficed","trafficked"],["trafficing","trafficking"],["trafic","traffic"],["tragectory","trajectory"],["traget","target"],["trageted","targeted"],["trageting","targeting"],["tragets","targets"],["traige","triage"],["traiger","triager"],["traigers","triagers"],["traiges","triages"],["traiging","triaging"],["trailins","trailing"],["traingle","triangle"],["traingles","triangles"],["traingular","triangular"],["traingulate","triangulate"],["traingulated","triangulated"],["traingulates","triangulates"],["traingulating","triangulating"],["traingulation","triangulation"],["traingulations","triangulations"],["trainig","training"],["trainigs","training"],["trainng","training"],["trainngs","training"],["traked","tracked"],["traker","tracker"],["trakers","trackers"],["traking","tracking"],["tramsmit","transmit"],["tramsmits","transmits"],["tramsmitted","transmitted"],["tramsmitting","transmitting"],["tranaction","transaction"],["tranactional","transactional"],["tranactions","transactions"],["tranalating","translating"],["tranalation","translation"],["tranalations","translations"],["tranasction","transaction"],["tranasctions","transactions"],["tranceiver","transceiver"],["tranceivers","transceivers"],["trancendent","transcendent"],["trancending","transcending"],["tranclate","translate"],["trandional","traditional"],["tranfer","transfer"],["tranfered","transferred"],["tranfering","transferring"],["tranferred","transferred"],["tranfers","transfers"],["tranform","transform"],["tranformable","transformable"],["tranformation","transformation"],["tranformations","transformations"],["tranformative","transformative"],["tranformed","transformed"],["tranforming","transforming"],["tranforms","transforms"],["tranient","transient"],["tranients","transients"],["tranistion","transition"],["tranistioned","transitioned"],["tranistioning","transitioning"],["tranistions","transitions"],["tranition","transition"],["tranitioned","transitioned"],["tranitioning","transitioning"],["tranitions","transitions"],["tranlatable","translatable"],["tranlate","translate"],["tranlated","translated"],["tranlates","translates"],["tranlating","translating"],["tranlation","translation"],["tranlations","translations"],["tranlsation","translation"],["tranlsations","translations"],["tranmission","transmission"],["tranmist","transmit"],["tranmitted","transmitted"],["tranmitting","transmitting"],["tranparent","transparent"],["tranparently","transparently"],["tranport","transport"],["tranported","transported"],["tranporting","transporting"],["tranports","transports"],["transacion","transaction"],["transacions","transactions"],["transaciton","transaction"],["transacitons","transactions"],["transacrtion","transaction"],["transacrtions","transactions"],["transaction-spacific","transaction-specific"],["transactoin","transaction"],["transactoins","transactions"],["transalation","translation"],["transalations","translations"],["transalt","translate"],["transalte","translate"],["transalted","translated"],["transaltes","translates"],["transaltion","translation"],["transaltions","translations"],["transaltor","translator"],["transaltors","translators"],["transcendance","transcendence"],["transcendant","transcendent"],["transcendentational","transcendental"],["transcevier","transceiver"],["transciever","transceiver"],["transcievers","transceivers"],["transcocde","transcode"],["transcocded","transcoded"],["transcocder","transcoder"],["transcocders","transcoders"],["transcocdes","transcodes"],["transcocding","transcoding"],["transcocdings","transcodings"],["transconde","transcode"],["transconded","transcoded"],["transconder","transcoder"],["transconders","transcoders"],["transcondes","transcodes"],["transconding","transcoding"],["transcondings","transcodings"],["transcorde","transcode"],["transcorded","transcoded"],["transcorder","transcoder"],["transcorders","transcoders"],["transcordes","transcodes"],["transcording","transcoding"],["transcordings","transcodings"],["transcoser","transcoder"],["transcosers","transcoders"],["transction","transaction"],["transctions","transactions"],["transeint","transient"],["transending","transcending"],["transer","transfer"],["transesxuals","transsexuals"],["transferd","transferred"],["transfered","transferred"],["transfering","transferring"],["transferrd","transferred"],["transfom","transform"],["transfomation","transformation"],["transfomational","transformational"],["transfomations","transformations"],["transfomed","transformed"],["transfomer","transformer"],["transfomm","transform"],["transfoprmation","transformation"],["transforation","transformation"],["transforations","transformations"],["transformated","transformed"],["transformates","transforms"],["transformaton","transformation"],["transformatted","transformed"],["transfrom","transform"],["transfromation","transformation"],["transfromations","transformations"],["transfromed","transformed"],["transfromer","transformer"],["transfroming","transforming"],["transfroms","transforms"],["transiet","transient"],["transiets","transients"],["transision","transition"],["transisioning","transitioning"],["transisions","transitions"],["transisition","transition"],["transisitioned","transitioned"],["transisitioning","transitioning"],["transisitions","transitions"],["transistion","transition"],["transistioning","transitioning"],["transistions","transitions"],["transitionnal","transitional"],["transitionned","transitioned"],["transitionning","transitioning"],["transitionns","transitions"],["transiton","transition"],["transitoning","transitioning"],["transitons","transitions"],["transitor","transistor"],["transitors","transistors"],["translater","translator"],["translaters","translators"],["translatied","translated"],["translatoin","translation"],["translatoins","translations"],["translteration","transliteration"],["transmision","transmission"],["transmisive","transmissive"],["transmissable","transmissible"],["transmissione","transmission"],["transmist","transmit"],["transmited","transmitted"],["transmiter","transmitter"],["transmiters","transmitters"],["transmiting","transmitting"],["transmition","transmission"],["transmitsion","transmission"],["transmittd","transmitted"],["transmittion","transmission"],["transmitts","transmits"],["transmmit","transmit"],["transocde","transcode"],["transocded","transcoded"],["transocder","transcoder"],["transocders","transcoders"],["transocdes","transcodes"],["transocding","transcoding"],["transocdings","transcodings"],["transofrm","transform"],["transofrmation","transformation"],["transofrmations","transformations"],["transofrmed","transformed"],["transofrmer","transformer"],["transofrmers","transformers"],["transofrming","transforming"],["transofrms","transforms"],["transolate","translate"],["transolated","translated"],["transolates","translates"],["transolating","translating"],["transolation","translation"],["transolations","translations"],["transorm","transform"],["transormed","transformed"],["transorming","transforming"],["transorms","transforms"],["transpable","transposable"],["transpacencies","transparencies"],["transpacency","transparency"],["transpaernt","transparent"],["transpaerntly","transparently"],["transpancies","transparencies"],["transpancy","transparency"],["transpant","transplant"],["transparaent","transparent"],["transparaently","transparently"],["transparanceies","transparencies"],["transparancey","transparency"],["transparancies","transparencies"],["transparancy","transparency"],["transparanet","transparent"],["transparanetly","transparently"],["transparanies","transparencies"],["transparant","transparent"],["transparantly","transparently"],["transparany","transparency"],["transpararent","transparent"],["transpararently","transparently"],["transparcencies","transparencies"],["transparcency","transparency"],["transparcenies","transparencies"],["transparceny","transparency"],["transparecy","transparency"],["transpareny","transparency"],["transparities","transparencies"],["transparity","transparency"],["transparnecies","transparencies"],["transparnecy","transparency"],["transparnt","transparent"],["transparntly","transparently"],["transparren","transparent"],["transparrenly","transparently"],["transparrent","transparent"],["transparrently","transparently"],["transpart","transport"],["transparts","transports"],["transpatrent","transparent"],["transpatrently","transparently"],["transpencies","transparencies"],["transpency","transparency"],["transpeorted","transported"],["transperancies","transparencies"],["transperancy","transparency"],["transperant","transparent"],["transperantly","transparently"],["transperencies","transparencies"],["transperency","transparency"],["transperent","transparent"],["transperently","transparently"],["transporation","transportation"],["transportatin","transportation"],["transprencies","transparencies"],["transprency","transparency"],["transprent","transparent"],["transprently","transparently"],["transprot","transport"],["transproted","transported"],["transproting","transporting"],["transprots","transports"],["transprt","transport"],["transprted","transported"],["transprting","transporting"],["transprts","transports"],["transpsition","transposition"],["transsend","transcend"],["transtion","transition"],["transtioned","transitioned"],["transtioning","transitioning"],["transtions","transitions"],["transtition","transition"],["transtitioned","transitioned"],["transtitioning","transitioning"],["transtitions","transitions"],["transtorm","transform"],["transtormed","transformed"],["transvorm","transform"],["transvormation","transformation"],["transvormed","transformed"],["transvorming","transforming"],["transvorms","transforms"],["tranversing","traversing"],["trapeziod","trapezoid"],["trapeziodal","trapezoidal"],["trasaction","transaction"],["trascation","transaction"],["trasfer","transfer"],["trasferred","transferred"],["trasfers","transfers"],["trasform","transform"],["trasformable","transformable"],["trasformation","transformation"],["trasformations","transformations"],["trasformative","transformative"],["trasformed","transformed"],["trasformer","transformer"],["trasformers","transformers"],["trasforming","transforming"],["trasforms","transforms"],["traslalate","translate"],["traslalated","translated"],["traslalating","translating"],["traslalation","translation"],["traslalations","translations"],["traslate","translate"],["traslated","translated"],["traslates","translates"],["traslating","translating"],["traslation","translation"],["traslations","translations"],["traslucency","translucency"],["trasmission","transmission"],["trasmit","transmit"],["trasnaction","transaction"],["trasnfer","transfer"],["trasnfered","transferred"],["trasnferred","transferred"],["trasnfers","transfers"],["trasnform","transform"],["trasnformation","transformation"],["trasnformed","transformed"],["trasnformer","transformer"],["trasnformers","transformers"],["trasnforms","transforms"],["trasnlate","translate"],["trasnlated","translated"],["trasnlation","translation"],["trasnlations","translations"],["trasnparencies","transparencies"],["trasnparency","transparency"],["trasnparent","transparent"],["trasnport","transport"],["trasnports","transports"],["trasnsmit","transmit"],["trasparency","transparency"],["trasparent","transparent"],["trasparently","transparently"],["trasport","transport"],["trasportable","transportable"],["trasported","transported"],["trasporter","transporter"],["trasports","transports"],["traspose","transpose"],["trasposed","transposed"],["trasposing","transposing"],["trasposition","transposition"],["traspositions","transpositions"],["traved","traversed"],["traveersal","traversal"],["traveerse","traverse"],["traveersed","traversed"],["traveerses","traverses"],["traveersing","traversing"],["traveral","traversal"],["travercal","traversal"],["traverce","traverse"],["traverced","traversed"],["traverces","traverses"],["travercing","traversing"],["travere","traverse"],["travered","traversed"],["traveres","traverse"],["traveresal","traversal"],["traveresed","traversed"],["travereses","traverses"],["traveresing","traversing"],["travering","traversing"],["traverssal","traversal"],["travesal","traversal"],["travese","traverse"],["travesed","traversed"],["traveses","traverses"],["travesing","traversing"],["tre","tree"],["treate","treat"],["treatement","treatment"],["treatements","treatments"],["treates","treats"],["tremelo","tremolo"],["tremelos","tremolos"],["trempoline","trampoline"],["treshhold","threshold"],["treshold","threshold"],["tressle","trestle"],["treting","treating"],["trgistration","registration"],["trhe","the"],["triancle","triangle"],["triancles","triangles"],["trianed","trained"],["triange","triangle"],["triangel","triangle"],["triangels","triangles"],["trianglular","triangular"],["trianglutaion","triangulation"],["triangulataion","triangulation"],["triangultaion","triangulation"],["trianing","training"],["trianlge","triangle"],["trianlges","triangles"],["trians","trains"],["trigered","triggered"],["trigerred","triggered"],["trigerring","triggering"],["trigers","triggers"],["trigged","triggered"],["triggerd","triggered"],["triggeres","triggers"],["triggerred","triggered"],["triggerring","triggering"],["triggerrs","triggers"],["triggger","trigger"],["trignometric","trigonometric"],["trignometry","trigonometry"],["triguered","triggered"],["triked","tricked"],["trikery","trickery"],["triky","tricky"],["trilineal","trilinear"],["trimed","trimmed"],["trimmng","trimming"],["trinagle","triangle"],["trinagles","triangles"],["triniy","trinity"],["triology","trilogy"],["tripel","triple"],["tripeld","tripled"],["tripels","triples"],["tripple","triple"],["triuangulate","triangulate"],["trival","trivial"],["trivally","trivially"],["trivias","trivia"],["trivival","trivial"],["trnasfers","transfers"],["trnasmit","transmit"],["trnasmited","transmitted"],["trnasmits","transmits"],["trnsfer","transfer"],["trnsfered","transferred"],["trnsfers","transfers"],["troling","trolling"],["trottle","throttle"],["troubeshoot","troubleshoot"],["troubeshooted","troubleshooted"],["troubeshooter","troubleshooter"],["troubeshooting","troubleshooting"],["troubeshoots","troubleshoots"],["troublehshoot","troubleshoot"],["troublehshooting","troubleshooting"],["troublshoot","troubleshoot"],["troublshooting","troubleshooting"],["trought","through"],["troup","troupe"],["trriger","trigger"],["trrigered","triggered"],["trrigering","triggering"],["trrigers","triggers"],["trrigger","trigger"],["trriggered","triggered"],["trriggering","triggering"],["trriggers","triggers"],["trubble","trouble"],["trubbled","troubled"],["trubbles","troubles"],["truble","trouble"],["trubled","troubled"],["trubles","troubles"],["trubling","troubling"],["trucate","truncate"],["trucated","truncated"],["trucates","truncates"],["trucating","truncating"],["trucnate","truncate"],["trucnated","truncated"],["trucnating","truncating"],["truct","struct"],["truelly","truly"],["truely","truly"],["truied","tried"],["trully","truly"],["trun","turn"],["trunacted","truncated"],["truncat","truncate"],["trunctate","truncate"],["trunctated","truncated"],["trunctating","truncating"],["trunctation","truncation"],["truncted","truncated"],["truned","turned"],["truns","turns"],["trustworthly","trustworthy"],["trustworthyness","trustworthiness"],["trustworty","trustworthy"],["trustwortyness","trustworthiness"],["trustwothy","trustworthy"],["truw","true"],["tryed","tried"],["tryes","tries"],["tryig","trying"],["tryinng","trying"],["trys","tries"],["tryying","trying"],["ttests","tests"],["tthe","the"],["tuesdey","Tuesday"],["tuesdsy","Tuesday"],["tufure","future"],["tuhmbnail","thumbnail"],["tunelled","tunnelled"],["tunelling","tunneling"],["tunned","tuned"],["tunnell","tunnel"],["tuotiral","tutorial"],["tuotirals","tutorials"],["tupel","tuple"],["tupple","tuple"],["tupples","tuples"],["ture","true"],["turle","turtle"],["turly","truly"],["turorial","tutorial"],["turorials","tutorials"],["turtleh","turtle"],["turtlehs","turtles"],["turtorial","tutorial"],["turtorials","tutorials"],["Tuscon","Tucson"],["tusday","Tuesday"],["tuseday","Tuesday"],["tust","trust"],["tution","tuition"],["tutoriel","tutorial"],["tutoriels","tutorials"],["tweleve","twelve"],["twelth","twelfth"],["two-dimenional","two-dimensional"],["two-dimenionsal","two-dimensional"],["twodimenional","two-dimensional"],["twodimenionsal","two-dimensional"],["twon","town"],["twpo","two"],["tyep","type"],["tyhat","that"],["tyies","tries"],["tymecode","timecode"],["tyope","type"],["typcast","typecast"],["typcasting","typecasting"],["typcasts","typecasts"],["typcial","typical"],["typcially","typically"],["typechek","typecheck"],["typecheking","typechecking"],["typesrript","typescript"],["typicallly","typically"],["typicaly","typically"],["typicially","typically"],["typle","tuple"],["typles","tuples"],["typographc","typographic"],["typpe","type"],["typped","typed"],["typpes","types"],["typpical","typical"],["typpically","typically"],["tyranies","tyrannies"],["tyrany","tyranny"],["tyring","trying"],["tyrranies","tyrannies"],["tyrrany","tyranny"],["ubelieveble","unbelievable"],["ubelievebly","unbelievably"],["ubernetes","Kubernetes"],["ubiquitious","ubiquitous"],["ubiquituously","ubiquitously"],["ubitquitous","ubiquitous"],["ublisher","publisher"],["ubunut","Ubuntu"],["ubutu","Ubuntu"],["ubutunu","Ubuntu"],["udpatable","updatable"],["udpate","update"],["udpated","updated"],["udpater","updater"],["udpates","updates"],["udpating","updating"],["ueful","useful"],["uegister","unregister"],["uesd","used"],["ueses","uses"],["uesful","useful"],["uesfull","useful"],["uesfulness","usefulness"],["uesless","useless"],["ueslessness","uselessness"],["uest","quest"],["uests","quests"],["uffer","buffer"],["uffered","buffered"],["uffering","buffering"],["uffers","buffers"],["uggly","ugly"],["ugglyness","ugliness"],["uglyness","ugliness"],["uique","unique"],["uise","use"],["uisng","using"],["uites","suites"],["uknown","unknown"],["uknowns","unknowns"],["Ukranian","Ukrainian"],["uless","unless"],["ulimited","unlimited"],["ulter","alter"],["ulteration","alteration"],["ulterations","alterations"],["ultered","altered"],["ultering","altering"],["ulters","alters"],["ultimatly","ultimately"],["ultimely","ultimately"],["umambiguous","unambiguous"],["umark","unmark"],["umarked","unmarked"],["umbrealla","umbrella"],["uminportant","unimportant"],["umit","unit"],["umless","unless"],["ummark","unmark"],["umoutn","umount"],["un-complete","incomplete"],["unabailable","unavailable"],["unabale","unable"],["unabel","unable"],["unablet","unable"],["unacceptible","unacceptable"],["unaccesible","inaccessible"],["unaccessable","inaccessible"],["unacknowleged","unacknowledged"],["unacompanied","unaccompanied"],["unadvertantly","inadvertently"],["unadvertedly","inadvertently"],["unadvertent","inadvertent"],["unadvertently","inadvertently"],["unahppy","unhappy"],["unalllowed","unallowed"],["unambigious","unambiguous"],["unambigous","unambiguous"],["unambigously","unambiguously"],["unamed","unnamed"],["unanimuous","unanimous"],["unanymous","unanimous"],["unappretiated","unappreciated"],["unappretiative","unappreciative"],["unapprieciated","unappreciated"],["unapprieciative","unappreciative"],["unapretiated","unappreciated"],["unapretiative","unappreciative"],["unaquired","unacquired"],["unarchving","unarchiving"],["unassing","unassign"],["unassinged","unassigned"],["unassinging","unassigning"],["unassings","unassigns"],["unathenticated","unauthenticated"],["unathorised","unauthorised"],["unathorized","unauthorized"],["unatteded","unattended"],["unauthenicated","unauthenticated"],["unauthenticed","unauthenticated"],["unavaiable","unavailable"],["unavaialable","unavailable"],["unavaialbale","unavailable"],["unavaialbe","unavailable"],["unavaialbel","unavailable"],["unavaialbility","unavailability"],["unavaialble","unavailable"],["unavaible","unavailable"],["unavailabel","unavailable"],["unavailiability","unavailability"],["unavailible","unavailable"],["unavaliable","unavailable"],["unavaoidable","unavoidable"],["unavilable","unavailable"],["unballance","unbalance"],["unbeknowst","unbeknownst"],["unbeleifable","unbelievable"],["unbeleivable","unbelievable"],["unbeliefable","unbelievable"],["unbelivable","unbelievable"],["unbeliveable","unbelievable"],["unbeliveably","unbelievably"],["unbelivebly","unbelievably"],["unborned","unborn"],["unbouind","unbound"],["unbouinded","unbounded"],["unboun","unbound"],["unbounad","unbound"],["unbounaded","unbounded"],["unbouned","unbounded"],["unbounnd","unbound"],["unbounnded","unbounded"],["unbouund","unbound"],["unbouunded","unbounded"],["uncahnged","unchanged"],["uncalcualted","uncalculated"],["unce","once"],["uncehck","uncheck"],["uncehcked","unchecked"],["uncerain","uncertain"],["uncerainties","uncertainties"],["uncerainty","uncertainty"],["uncertaincy","uncertainty"],["uncertainities","uncertainties"],["uncertainity","uncertainty"],["uncessarily","unnecessarily"],["uncetain","uncertain"],["uncetainties","uncertainties"],["uncetainty","uncertainty"],["unchache","uncache"],["unchached","uncached"],["unchaged","unchanged"],["unchainged","unchanged"],["unchallengable","unchallengeable"],["unchaned","unchanged"],["unchaneged","unchanged"],["unchangable","unchangeable"],["uncheked","unchecked"],["unchenged","unchanged"],["uncognized","unrecognized"],["uncoment","uncomment"],["uncomented","uncommented"],["uncomenting","uncommenting"],["uncoments","uncomments"],["uncomitted","uncommitted"],["uncommited","uncommitted"],["uncommment","uncomment"],["uncommmented","uncommented"],["uncommmenting","uncommenting"],["uncommments","uncomments"],["uncommmitted","uncommitted"],["uncommmon","uncommon"],["uncommpresed","uncompressed"],["uncommpresion","uncompression"],["uncommpressd","uncompressed"],["uncommpressed","uncompressed"],["uncommpression","uncompression"],["uncommtited","uncommitted"],["uncomon","uncommon"],["uncompetetive","uncompetitive"],["uncompetive","uncompetitive"],["uncomplete","incomplete"],["uncompleteness","incompleteness"],["uncompletness","incompleteness"],["uncompres","uncompress"],["uncompresed","uncompressed"],["uncompreses","uncompresses"],["uncompresing","uncompressing"],["uncompresor","uncompressor"],["uncompresors","uncompressors"],["uncompressible","incompressible"],["uncomprss","uncompress"],["unconcious","unconscious"],["unconciousness","unconsciousness"],["unconcistencies","inconsistencies"],["unconcistency","inconsistency"],["unconcistent","inconsistent"],["uncondisional","unconditional"],["uncondisionaly","unconditionally"],["uncondisionnal","unconditional"],["uncondisionnaly","unconditionally"],["unconditial","unconditional"],["unconditially","unconditionally"],["unconditialy","unconditionally"],["unconditianal","unconditional"],["unconditianally","unconditionally"],["unconditianaly","unconditionally"],["unconditinally","unconditionally"],["unconditinaly","unconditionally"],["unconditionaly","unconditionally"],["unconditionnal","unconditional"],["unconditionnally","unconditionally"],["unconditionnaly","unconditionally"],["uncondtional","unconditional"],["uncondtionally","unconditionally"],["unconfiged","unconfigured"],["unconfortability","discomfort"],["unconsisntency","inconsistency"],["unconsistent","inconsistent"],["uncontitutional","unconstitutional"],["uncontrained","unconstrained"],["uncontrolable","uncontrollable"],["unconvential","unconventional"],["unconventionnal","unconventional"],["uncorectly","incorrectly"],["uncorelated","uncorrelated"],["uncorrect","incorrect"],["uncorrectly","incorrectly"],["uncorrolated","uncorrelated"],["uncoverted","unconverted"],["uncrypted","unencrypted"],["undecideable","undecidable"],["undefied","undefined"],["undefien","undefine"],["undefiend","undefined"],["undefinied","undefined"],["undeflow","underflow"],["undeflows","underflows"],["undefuned","undefined"],["undelying","underlying"],["underfiend","undefined"],["underfined","undefined"],["underfow","underflow"],["underfowed","underflowed"],["underfowing","underflowing"],["underfows","underflows"],["underlayed","underlaid"],["underlaying","underlying"],["underlflow","underflow"],["underlflowed","underflowed"],["underlflowing","underflowing"],["underlflows","underflows"],["underlfow","underflow"],["underlfowed","underflowed"],["underlfowing","underflowing"],["underlfows","underflows"],["underlow","underflow"],["underlowed","underflowed"],["underlowing","underflowing"],["underlows","underflows"],["underlyng","underlying"],["underneeth","underneath"],["underrrun","underrun"],["undersacn","underscan"],["understadn","understand"],["understadnable","understandable"],["understadning","understanding"],["understadns","understands"],["understoon","understood"],["understoud","understood"],["undertand","understand"],["undertandable","understandable"],["undertanded","understood"],["undertanding","understanding"],["undertands","understands"],["undertsand","understand"],["undertsanding","understanding"],["undertsands","understands"],["undertsood","understood"],["undertstand","understand"],["undertstands","understands"],["underun","underrun"],["underuns","underruns"],["underware","underwear"],["underying","underlying"],["underyling","underlying"],["undescore","underscore"],["undescored","underscored"],["undescores","underscores"],["undesireable","undesirable"],["undesitable","undesirable"],["undestand","understand"],["undestood","understood"],["undet","under"],["undetecable","undetectable"],["undetstand","understand"],["undetware","underwear"],["undetwater","underwater"],["undfine","undefine"],["undfined","undefined"],["undfines","undefines"],["undistinghable","indistinguishable"],["undocummented","undocumented"],["undorder","unorder"],["undordered","unordered"],["undoubtely","undoubtedly"],["undreground","underground"],["undupplicated","unduplicated"],["uneccesary","unnecessary"],["uneccessarily","unnecessarily"],["uneccessary","unnecessary"],["unecessarily","unnecessarily"],["unecessary","unnecessary"],["uneforceable","unenforceable"],["uneform","uniform"],["unencrpt","unencrypt"],["unencrpted","unencrypted"],["unenforcable","unenforceable"],["unepected","unexpected"],["unepectedly","unexpectedly"],["unequalities","inequalities"],["unequality","inequality"],["uner","under"],["unesacpe","unescape"],["unesacped","unescaped"],["unessecarry","unnecessary"],["unessecary","unnecessary"],["unevaluted","unevaluated"],["unexcected","unexpected"],["unexcectedly","unexpectedly"],["unexcpected","unexpected"],["unexcpectedly","unexpectedly"],["unexecpted","unexpected"],["unexecptedly","unexpectedly"],["unexected","unexpected"],["unexectedly","unexpectedly"],["unexepcted","unexpected"],["unexepctedly","unexpectedly"],["unexepected","unexpected"],["unexepectedly","unexpectedly"],["unexpacted","unexpected"],["unexpactedly","unexpectedly"],["unexpcted","unexpected"],["unexpctedly","unexpectedly"],["unexpecetd","unexpected"],["unexpecetdly","unexpectedly"],["unexpect","unexpected"],["unexpectd","unexpected"],["unexpectdly","unexpectedly"],["unexpecte","unexpected"],["unexpectely","unexpectedly"],["unexpectend","unexpected"],["unexpectendly","unexpectedly"],["unexpectly","unexpectedly"],["unexpeected","unexpected"],["unexpeectedly","unexpectedly"],["unexpepected","unexpected"],["unexpepectedly","unexpectedly"],["unexpepted","unexpected"],["unexpeptedly","unexpectedly"],["unexpercted","unexpected"],["unexperctedly","unexpectedly"],["unexpested","unexpected"],["unexpestedly","unexpectedly"],["unexpetced","unexpected"],["unexpetcedly","unexpectedly"],["unexpetct","unexpected"],["unexpetcted","unexpected"],["unexpetctedly","unexpectedly"],["unexpetctly","unexpectedly"],["unexpetect","unexpected"],["unexpetected","unexpected"],["unexpetectedly","unexpectedly"],["unexpetectly","unexpectedly"],["unexpeted","unexpected"],["unexpetedly","unexpectedly"],["unexpexcted","unexpected"],["unexpexctedly","unexpectedly"],["unexpexted","unexpected"],["unexpextedly","unexpectedly"],["unexspected","unexpected"],["unexspectedly","unexpectedly"],["unfilp","unflip"],["unfilpped","unflipped"],["unfilpping","unflipping"],["unfilps","unflips"],["unflaged","unflagged"],["unflexible","inflexible"],["unforetunately","unfortunately"],["unforgetable","unforgettable"],["unforgiveable","unforgivable"],["unformated","unformatted"],["unforseen","unforeseen"],["unforttunately","unfortunately"],["unfortuante","unfortunate"],["unfortuantely","unfortunately"],["unfortunaltely","unfortunately"],["unfortunaly","unfortunately"],["unfortunat","unfortunate"],["unfortunatelly","unfortunately"],["unfortunatetly","unfortunately"],["unfortunatley","unfortunately"],["unfortunatly","unfortunately"],["unfortunetly","unfortunately"],["unfortuntaly","unfortunately"],["unforunate","unfortunate"],["unforunately","unfortunately"],["unforutunate","unfortunate"],["unforutunately","unfortunately"],["unfotunately","unfortunately"],["unfourtunately","unfortunately"],["unfourtunetly","unfortunately"],["unfurtunately","unfortunately"],["ungeneralizeable","ungeneralizable"],["ungly","ugly"],["unhandeled","unhandled"],["unhilight","unhighlight"],["unhilighted","unhighlighted"],["unhilights","unhighlights"],["Unicde","Unicode"],["unich","unix"],["unidentifiedly","unidentified"],["unidimensionnal","unidimensional"],["unifform","uniform"],["unifforms","uniforms"],["unifiy","unify"],["uniformely","uniformly"],["unifrom","uniform"],["unifromed","uniformed"],["unifromity","uniformity"],["unifroms","uniforms"],["unigned","unsigned"],["unihabited","uninhabited"],["unilateraly","unilaterally"],["unilatreal","unilateral"],["unilatreally","unilaterally"],["unimpemented","unimplemented"],["unimplemeneted","unimplemented"],["unimplimented","unimplemented"],["uninitailised","uninitialised"],["uninitailized","uninitialized"],["uninitalise","uninitialise"],["uninitalised","uninitialised"],["uninitalises","uninitialises"],["uninitalize","uninitialize"],["uninitalized","uninitialized"],["uninitalizes","uninitializes"],["uniniteresting","uninteresting"],["uninitializaed","uninitialized"],["uninitialse","uninitialise"],["uninitialsed","uninitialised"],["uninitialses","uninitialises"],["uninitialze","uninitialize"],["uninitialzed","uninitialized"],["uninitialzes","uninitializes"],["uninstalable","uninstallable"],["uninstatiated","uninstantiated"],["uninstlal","uninstall"],["uninstlalation","uninstallation"],["uninstlalations","uninstallations"],["uninstlaled","uninstalled"],["uninstlaler","uninstaller"],["uninstlaling","uninstalling"],["uninstlals","uninstalls"],["unint8_t","uint8_t"],["unintelligable","unintelligible"],["unintentially","unintentionally"],["uninteressting","uninteresting"],["uninterpretted","uninterpreted"],["uninterruped","uninterrupted"],["uninterruptable","uninterruptible"],["unintersting","uninteresting"],["uninteruppted","uninterrupted"],["uninterupted","uninterrupted"],["unintesting","uninteresting"],["unintialised","uninitialised"],["unintialized","uninitialized"],["unintiallised","uninitialised"],["unintiallized","uninitialized"],["unintialsied","uninitialised"],["unintialzied","uninitialized"],["unio","union"],["unios","unions"],["uniqe","unique"],["uniqu","unique"],["uniquness","uniqueness"],["unistalled","uninstalled"],["uniterrupted","uninterrupted"],["UnitesStates","UnitedStates"],["unitialize","uninitialize"],["unitialized","uninitialized"],["unitilised","uninitialised"],["unitilising","uninitialising"],["unitilities","utilities"],["unitility","utility"],["unitilized","uninitialized"],["unitilizing","uninitializing"],["unitilties","utilities"],["unitilty","utility"],["unititialized","uninitialized"],["unitl","until"],["unitled","untitled"],["unitss","units"],["univeral","universal"],["univerally","universally"],["univeriality","universality"],["univeristies","universities"],["univeristy","university"],["univerities","universities"],["univerity","university"],["universial","universal"],["universiality","universality"],["universirty","university"],["universtal","universal"],["universtiy","university"],["univesities","universities"],["univesity","university"],["univiersal","universal"],["univrsal","universal"],["unkmown","unknown"],["unknon","unknown"],["unknonw","unknown"],["unknonwn","unknown"],["unknonws","unknowns"],["unknwn","unknown"],["unknwns","unknowns"],["unknwoing","unknowing"],["unknwoingly","unknowingly"],["unknwon","unknown"],["unknwons","unknowns"],["unknwown","unknown"],["unknwowns","unknowns"],["unkonwn","unknown"],["unkonwns","unknowns"],["unkown","unknown"],["unkowns","unknowns"],["unkwown","unknown"],["unlcear","unclear"],["unles","unless"],["unlikey","unlikely"],["unlikley","unlikely"],["unlimeted","unlimited"],["unlimitied","unlimited"],["unlimted","unlimited"],["unline","unlike"],["unloadins","unloading"],["unmached","unmatched"],["unmainted","unmaintained"],["unmaping","unmapping"],["unmappend","unmapped"],["unmarsalling","unmarshalling"],["unmaximice","unmaximize"],["unmistakeably","unmistakably"],["unmodfide","unmodified"],["unmodfided","unmodified"],["unmodfied","unmodified"],["unmodfieid","unmodified"],["unmodfified","unmodified"],["unmodfitied","unmodified"],["unmodifable","unmodifiable"],["unmodifed","unmodified"],["unmoutned","unmounted"],["unnacquired","unacquired"],["unncessary","unnecessary"],["unneccecarily","unnecessarily"],["unneccecary","unnecessary"],["unneccesarily","unnecessarily"],["unneccesary","unnecessary"],["unneccessarily","unnecessarily"],["unneccessary","unnecessary"],["unneceesarily","unnecessarily"],["unnecesarily","unnecessarily"],["unnecesarrily","unnecessarily"],["unnecesarry","unnecessary"],["unnecesary","unnecessary"],["unnecesasry","unnecessary"],["unnecessar","unnecessary"],["unnecessarilly","unnecessarily"],["unnecesserily","unnecessarily"],["unnecessery","unnecessary"],["unnecessiarlly","unnecessarily"],["unnecssary","unnecessary"],["unnedded","unneeded"],["unneded","unneeded"],["unneedingly","unnecessarily"],["unnescessarily","unnecessarily"],["unnescessary","unnecessary"],["unnesesarily","unnecessarily"],["unnessarily","unnecessarily"],["unnessasary","unnecessary"],["unnessecarily","unnecessarily"],["unnessecarry","unnecessary"],["unnessecary","unnecessary"],["unnessesarily","unnecessarily"],["unnessesary","unnecessary"],["unnessessarily","unnecessarily"],["unnessessary","unnecessary"],["unning","running"],["unnnecessary","unnecessary"],["unnown","unknown"],["unnowns","unknowns"],["unnsupported","unsupported"],["unnused","unused"],["unobstrusive","unobtrusive"],["unocde","Unicode"],["unoffical","unofficial"],["unoin","union"],["unompress","uncompress"],["unoperational","nonoperational"],["unorderd","unordered"],["unoredered","unordered"],["unorotated","unrotated"],["unoticeable","unnoticeable"],["unpacke","unpacked"],["unpacket","unpacked"],["unparseable","unparsable"],["unpertubated","unperturbed"],["unperturb","unperturbed"],["unperturbated","unperturbed"],["unperturbe","unperturbed"],["unplease","displease"],["unpleasent","unpleasant"],["unplesant","unpleasant"],["unplesent","unpleasant"],["unprecendented","unprecedented"],["unprecidented","unprecedented"],["unprecise","imprecise"],["unpredicatable","unpredictable"],["unpredicatble","unpredictable"],["unpredictablity","unpredictability"],["unpredictible","unpredictable"],["unpriviledged","unprivileged"],["unpriviliged","unprivileged"],["unprmopted","unprompted"],["unqiue","unique"],["unqoute","unquote"],["unqouted","unquoted"],["unqoutes","unquotes"],["unqouting","unquoting"],["unque","unique"],["unreacahable","unreachable"],["unreacahble","unreachable"],["unreacheable","unreachable"],["unrealeased","unreleased"],["unreasonabily","unreasonably"],["unrechable","unreachable"],["unrecocnized","unrecognized"],["unrecoginized","unrecognized"],["unrecogized","unrecognized"],["unrecognixed","unrecognized"],["unrecongized","unrecognized"],["unreconized","unrecognized"],["unrecovable","unrecoverable"],["unrecovarable","unrecoverable"],["unrecoverd","unrecovered"],["unregester","unregister"],["unregiste","unregister"],["unregisted","unregistered"],["unregisteing","registering"],["unregisterd","unregistered"],["unregistert","unregistered"],["unregistes","unregisters"],["unregisting","unregistering"],["unregistred","unregistered"],["unregistrs","unregisters"],["unregiter","unregister"],["unregiters","unregisters"],["unregnized","unrecognized"],["unregognised","unrecognised"],["unregsiter","unregister"],["unregsitered","unregistered"],["unregsitering","unregistering"],["unregsiters","unregisters"],["unregster","unregister"],["unregstered","unregistered"],["unregstering","unregistering"],["unregsters","unregisters"],["unreigister","unregister"],["unreigster","unregister"],["unreigstered","unregistered"],["unreigstering","unregistering"],["unreigsters","unregisters"],["unrelatd","unrelated"],["unreleated","unrelated"],["unrelted","unrelated"],["unrelyable","unreliable"],["unrelying","underlying"],["unrepentent","unrepentant"],["unrepetant","unrepentant"],["unrepetent","unrepentant"],["unreplacable","unreplaceable"],["unreplacalbe","unreplaceable"],["unreproducable","unreproducible"],["unresgister","unregister"],["unresgisterd","unregistered"],["unresgistered","unregistered"],["unresgisters","unregisters"],["unresolvabvle","unresolvable"],["unresonable","unreasonable"],["unresposive","unresponsive"],["unrestrcited","unrestricted"],["unrgesiter","unregister"],["unroated","unrotated"],["unrosponsive","unresponsive"],["unsanfe","unsafe"],["unsccessful","unsuccessful"],["unscubscribe","subscribe"],["unscubscribed","subscribed"],["unsearcahble","unsearchable"],["unselct","unselect"],["unselcted","unselected"],["unselctes","unselects"],["unselcting","unselecting"],["unselcts","unselects"],["unselecgt","unselect"],["unselecgted","unselected"],["unselecgtes","unselects"],["unselecgting","unselecting"],["unselecgts","unselects"],["unselectabe","unselectable"],["unsepcified","unspecified"],["unseting","unsetting"],["unsetset","unset"],["unsettin","unsetting"],["unsharable","unshareable"],["unshfit","unshift"],["unshfited","unshifted"],["unshfiting","unshifting"],["unshfits","unshifts"],["unsiged","unsigned"],["unsigend","unsigned"],["unsignd","unsigned"],["unsignificant","insignificant"],["unsinged","unsigned"],["unsoclicited","unsolicited"],["unsolicitied","unsolicited"],["unsolicted","unsolicited"],["unsollicited","unsolicited"],["unspecificed","unspecified"],["unspecifiec","unspecific"],["unspecifiecd","unspecified"],["unspecifieced","unspecified"],["unspefcifieid","unspecified"],["unspefeid","unspecified"],["unspeficed","unspecified"],["unspeficeid","unspecified"],["unspeficialleid","unspecified"],["unspeficiallied","unspecified"],["unspeficiallifed","unspecified"],["unspeficied","unspecified"],["unspeficieid","unspecified"],["unspeficifed","unspecified"],["unspeficifeid","unspecified"],["unspeficified","unspecified"],["unspeficififed","unspecified"],["unspeficiied","unspecified"],["unspeficiifed","unspecified"],["unspeficilleid","unspecified"],["unspeficillied","unspecified"],["unspeficillifed","unspecified"],["unspeficiteid","unspecified"],["unspeficitied","unspecified"],["unspeficitifed","unspecified"],["unspefied","unspecified"],["unspefifed","unspecified"],["unspefifeid","unspecified"],["unspefified","unspecified"],["unspefififed","unspecified"],["unspefiied","unspecified"],["unspefiifeid","unspecified"],["unspefiified","unspecified"],["unspefiififed","unspecified"],["unspefixeid","unspecified"],["unspefixied","unspecified"],["unspefixifed","unspecified"],["unspported","unsupported"],["unstabel","unstable"],["unstalbe","unstable"],["unsuable","unusable"],["unsual","unusual"],["unsubscibe","unsubscribe"],["unsubscibed","unsubscribed"],["unsubscibing","unsubscribing"],["unsubscirbe","unsubscribe"],["unsubscirbed","unsubscribed"],["unsubscirbing","unsubscribing"],["unsubscirption","unsubscription"],["unsubscirptions","unsubscriptions"],["unsubscritpion","unsubscription"],["unsubscritpions","unsubscriptions"],["unsubscritpiton","unsubscription"],["unsubscritpitons","unsubscriptions"],["unsubscritption","unsubscription"],["unsubscritptions","unsubscriptions"],["unsubstanciated","unsubstantiated"],["unsucccessful","unsuccessful"],["unsucccessfully","unsuccessfully"],["unsucccessul","unsuccessful"],["unsucccessully","unsuccessfully"],["unsuccee","unsuccessful"],["unsucceed","unsuccessful"],["unsucceedde","unsuccessful"],["unsucceeded","unsuccessful"],["unsucceeds","unsuccessful"],["unsucceeed","unsuccessful"],["unsuccees","unsuccessful"],["unsuccesful","unsuccessful"],["unsuccesfull","unsuccessful"],["unsuccesfully","unsuccessfully"],["unsuccess","unsuccessful"],["unsuccessfull","unsuccessful"],["unsuccessfullly","unsuccessfully"],["unsucesful","unsuccessful"],["unsucesfull","unsuccessful"],["unsucesfully","unsuccessfully"],["unsucesfuly","unsuccessfully"],["unsucessefully","unsuccessfully"],["unsucessflly","unsuccessfully"],["unsucessfually","unsuccessfully"],["unsucessful","unsuccessful"],["unsucessfull","unsuccessful"],["unsucessfully","unsuccessfully"],["unsucessfuly","unsuccessfully"],["unsucesssful","unsuccessful"],["unsucesssfull","unsuccessful"],["unsucesssfully","unsuccessfully"],["unsucesssfuly","unsuccessfully"],["unsucessufll","unsuccessful"],["unsucessuflly","unsuccessfully"],["unsucessully","unsuccessfully"],["unsued","unused"],["unsufficient","insufficient"],["unsuportable","unsupportable"],["unsuported","unsupported"],["unsupport","unsupported"],["unsupproted","unsupported"],["unsupress","unsuppress"],["unsupressed","unsuppressed"],["unsupresses","unsuppresses"],["unsuprised","unsurprised"],["unsuprising","unsurprising"],["unsuprisingly","unsurprisingly"],["unsuprized","unsurprised"],["unsuprizing","unsurprising"],["unsuprizingly","unsurprisingly"],["unsurprized","unsurprised"],["unsurprizing","unsurprising"],["unsurprizingly","unsurprisingly"],["unsused","unused"],["unswithced","unswitched"],["unsychronise","unsynchronise"],["unsychronised","unsynchronised"],["unsychronize","unsynchronize"],["unsychronized","unsynchronized"],["untargetted","untargeted"],["unter","under"],["untill","until"],["untintuitive","unintuitive"],["untoched","untouched"],["untqueue","unqueue"],["untrached","untracked"],["untranslateable","untranslatable"],["untrasformed","untransformed"],["untrasposed","untransposed"],["untrustworty","untrustworthy"],["unued","unused"],["ununsed","unused"],["ununsual","unusual"],["unusal","unusual"],["unusally","unusually"],["unuseable","unusable"],["unuseful","useless"],["unusre","unsure"],["unusuable","unusable"],["unusued","unused"],["unvailable","unavailable"],["unvalid","invalid"],["unvalidate","invalidate"],["unverfified","unverified"],["unversionned","unversioned"],["unversoned","unversioned"],["unviersity","university"],["unwarrented","unwarranted"],["unweildly","unwieldy"],["unwieldly","unwieldy"],["unwraped","unwrapped"],["unwrritten","unwritten"],["unx","unix"],["unxepected","unexpected"],["unxepectedly","unexpectedly"],["unxpected","unexpected"],["unziped","unzipped"],["upadate","update"],["upadated","updated"],["upadater","updater"],["upadates","updates"],["upadating","updating"],["upadte","update"],["upadted","updated"],["upadter","updater"],["upadters","updaters"],["upadtes","updates"],["upagrade","upgrade"],["upagraded","upgraded"],["upagrades","upgrades"],["upagrading","upgrading"],["upate","update"],["upated","updated"],["upater","updater"],["upates","updates"],["upating","updating"],["upcomming","upcoming"],["updaing","updating"],["updat","update"],["updateded","updated"],["updateed","updated"],["updatees","updates"],["updateing","updating"],["updatess","updates"],["updatig","updating"],["updats","updates"],["updgrade","upgrade"],["updgraded","upgraded"],["updgrades","upgrades"],["updgrading","upgrading"],["updrage","upgrade"],["updraged","upgraded"],["updrages","upgrades"],["updraging","upgrading"],["updte","update"],["upercase","uppercase"],["uperclass","upperclass"],["upgade","upgrade"],["upgaded","upgraded"],["upgades","upgrades"],["upgading","upgrading"],["upgarade","upgrade"],["upgaraded","upgraded"],["upgarades","upgrades"],["upgarading","upgrading"],["upgarde","upgrade"],["upgarded","upgraded"],["upgardes","upgrades"],["upgarding","upgrading"],["upgarte","upgrade"],["upgarted","upgraded"],["upgartes","upgrades"],["upgarting","upgrading"],["upgerade","upgrade"],["upgeraded","upgraded"],["upgerades","upgrades"],["upgerading","upgrading"],["upgradablilty","upgradability"],["upgradde","upgrade"],["upgradded","upgraded"],["upgraddes","upgrades"],["upgradding","upgrading"],["upgradei","upgrade"],["upgradingn","upgrading"],["upgrate","upgrade"],["upgrated","upgraded"],["upgrates","upgrades"],["upgrating","upgrading"],["upholstry","upholstery"],["uplad","upload"],["upladaded","uploaded"],["upladed","uploaded"],["uplader","uploader"],["upladers","uploaders"],["uplading","uploading"],["uplads","uploads"],["uplaod","upload"],["uplaodaded","uploaded"],["uplaoded","uploaded"],["uplaoder","uploader"],["uplaoders","uploaders"],["uplaodes","uploads"],["uplaoding","uploading"],["uplaods","uploads"],["upliad","upload"],["uplod","upload"],["uplodaded","uploaded"],["uploded","uploaded"],["uploder","uploader"],["uploders","uploaders"],["uploding","uploading"],["uplods","uploads"],["uppler","upper"],["uppon","upon"],["upported","supported"],["upporterd","supported"],["uppper","upper"],["uppstream","upstream"],["uppstreamed","upstreamed"],["uppstreamer","upstreamer"],["uppstreaming","upstreaming"],["uppstreams","upstreams"],["uppwards","upwards"],["uprade","upgrade"],["upraded","upgraded"],["uprades","upgrades"],["uprading","upgrading"],["uprgade","upgrade"],["uprgaded","upgraded"],["uprgades","upgrades"],["uprgading","upgrading"],["upsream","upstream"],["upsreamed","upstreamed"],["upsreamer","upstreamer"],["upsreaming","upstreaming"],["upsreams","upstreams"],["upsrteam","upstream"],["upsrteamed","upstreamed"],["upsrteamer","upstreamer"],["upsrteaming","upstreaming"],["upsrteams","upstreams"],["upsteam","upstream"],["upsteamed","upstreamed"],["upsteamer","upstreamer"],["upsteaming","upstreaming"],["upsteams","upstreams"],["upsteram","upstream"],["upsteramed","upstreamed"],["upsteramer","upstreamer"],["upsteraming","upstreaming"],["upsterams","upstreams"],["upstread","upstream"],["upstreamedd","upstreamed"],["upstreammed","upstreamed"],["upstreammer","upstreamer"],["upstreamming","upstreaming"],["upstreem","upstream"],["upstreemed","upstreamed"],["upstreemer","upstreamer"],["upstreeming","upstreaming"],["upstreems","upstreams"],["upstrema","upstream"],["upsupported","unsupported"],["uptadeable","updatable"],["uptdate","update"],["uptim","uptime"],["uptions","options"],["uptodate","up-to-date"],["uptodateness","up-to-dateness"],["uptream","upstream"],["uptreamed","upstreamed"],["uptreamer","upstreamer"],["uptreaming","upstreaming"],["uptreams","upstreams"],["uqest","quest"],["uqests","quests"],["urrlib","urllib"],["usag","usage"],["usal","usual"],["usally","usually"],["uscaled","unscaled"],["useability","usability"],["useable","usable"],["useage","usage"],["usebility","usability"],["useble","usable"],["useed","used"],["usees","uses"],["usefl","useful"],["usefule","useful"],["usefulfor","useful for"],["usefull","useful"],["usefullness","usefulness"],["usefult","useful"],["usefuly","usefully"],["usefutl","useful"],["usege","usage"],["useing","using"],["user-defiend","user-defined"],["user-defiened","user-defined"],["usera","users"],["userame","username"],["userames","usernames"],["userapace","userspace"],["userful","useful"],["userpace","userspace"],["userpsace","userspace"],["usersapce","userspace"],["userspase","userspace"],["usesfull","useful"],["usespace","userspace"],["usetnet","Usenet"],["usibility","usability"],["usible","usable"],["usig","using"],["usigned","unsigned"],["usiing","using"],["usin","using"],["usind","using"],["usinging","using"],["usinng","using"],["usng","using"],["usnig","using"],["usptart","upstart"],["usptarts","upstarts"],["usseful","useful"],["ussual","usual"],["ussuall","usual"],["ussually","usually"],["usuable","usable"],["usuage","usage"],["usuallly","usually"],["usualy","usually"],["usualyl","usually"],["usue","use"],["usued","used"],["usueful","useful"],["usuer","user"],["usuing","using"],["usupported","unsupported"],["ususal","usual"],["ususally","usually"],["UTF8ness","UTF-8-ness"],["utiilties","utilities"],["utilies","utilities"],["utililties","utilities"],["utilis","utilise"],["utilisa","utilise"],["utilisaton","utilisation"],["utilites","utilities"],["utilitisation","utilisation"],["utilitise","utilise"],["utilitises","utilises"],["utilitising","utilising"],["utilitiy","utility"],["utilitization","utilization"],["utilitize","utilize"],["utilitizes","utilizes"],["utilitizing","utilizing"],["utiliz","utilize"],["utiliza","utilize"],["utilizaton","utilization"],["utillities","utilities"],["utilties","utilities"],["utiltities","utilities"],["utiltity","utility"],["utilty","utility"],["utitity","utility"],["utitlities","utilities"],["utitlity","utility"],["utitlty","utility"],["utlities","utilities"],["utlity","utility"],["utput","output"],["utputs","outputs"],["uupload","upload"],["uupper","upper"],["vaalues","values"],["vaccum","vacuum"],["vaccume","vacuum"],["vaccuum","vacuum"],["vacinity","vicinity"],["vactor","vector"],["vactors","vectors"],["vacumme","vacuum"],["vacuosly","vacuously"],["vaelues","values"],["vaguaries","vagaries"],["vaiable","variable"],["vaiables","variables"],["vaiant","variant"],["vaiants","variants"],["vaidate","validate"],["vaieties","varieties"],["vailable","available"],["vaild","valid"],["vailidity","validity"],["vailidty","validity"],["vairable","variable"],["vairables","variables"],["vairous","various"],["vakue","value"],["vakued","valued"],["vakues","values"],["valailable","available"],["valdate","validate"],["valetta","valletta"],["valeu","value"],["valiator","validator"],["validade","validate"],["validata","validate"],["validataion","validation"],["validaterelase","validaterelease"],["valide","valid"],["valididty","validity"],["validing","validating"],["validte","validate"],["validted","validated"],["validtes","validates"],["validting","validating"],["validtion","validation"],["valied","valid"],["valies","values"],["valif","valid"],["valitdity","validity"],["valkues","values"],["vallgrind","valgrind"],["vallid","valid"],["vallidation","validation"],["vallidity","validity"],["vallue","value"],["vallues","values"],["valsues","values"],["valtage","voltage"],["valtages","voltages"],["valu","value"],["valuble","valuable"],["valudes","values"],["value-to-pack","value to pack"],["valueable","valuable"],["valuess","values"],["valuie","value"],["valulation","valuation"],["valulations","valuations"],["valule","value"],["valuled","valued"],["valules","values"],["valuling","valuing"],["vanishs","vanishes"],["varable","variable"],["varables","variables"],["varaiable","variable"],["varaiables","variables"],["varaiance","variance"],["varaiation","variation"],["varaible","variable"],["varaibles","variables"],["varaint","variant"],["varaints","variants"],["varation","variation"],["varations","variations"],["variabble","variable"],["variabbles","variables"],["variabe","variable"],["variabel","variable"],["variabele","variable"],["variabes","variables"],["variabla","variable"],["variablen","variable"],["varialbe","variable"],["varialbes","variables"],["varialbles","variables"],["varian","variant"],["variantions","variations"],["variatinos","variations"],["variationnal","variational"],["variatoin","variation"],["variatoins","variations"],["variavle","variable"],["variavles","variables"],["varibable","variable"],["varibables","variables"],["varibale","variable"],["varibales","variables"],["varibaless","variables"],["varibel","variable"],["varibels","variables"],["varibility","variability"],["variblae","variable"],["variblaes","variables"],["varible","variable"],["varibles","variables"],["varience","variance"],["varient","variant"],["varients","variants"],["varierty","variety"],["variey","variety"],["varify","verify"],["variing","varying"],["varing","varying"],["varities","varieties"],["varity","variety"],["variuos","various"],["variuous","various"],["varius","various"],["varn","warn"],["varned","warned"],["varning","warning"],["varnings","warnings"],["varns","warns"],["varoius","various"],["varous","various"],["varously","variously"],["varriance","variance"],["varriances","variances"],["vartical","vertical"],["vartically","vertically"],["vas","was"],["vasall","vassal"],["vasalls","vassals"],["vaue","value"],["vaule","value"],["vauled","valued"],["vaules","values"],["vauling","valuing"],["vavle","valve"],["vavlue","value"],["vavriable","variable"],["vavriables","variables"],["vbsrcript","vbscript"],["vebrose","verbose"],["vecotr","vector"],["vecotrs","vectors"],["vectices","vertices"],["vectore","vector"],["vectores","vectors"],["vectorss","vectors"],["vectror","vector"],["vectrors","vectors"],["vecvtor","vector"],["vecvtors","vectors"],["vedio","video"],["vefiry","verify"],["vegatarian","vegetarian"],["vegeterian","vegetarian"],["vegitable","vegetable"],["vegitables","vegetables"],["vegtable","vegetable"],["vehicule","vehicle"],["veify","verify"],["veiw","view"],["veiwed","viewed"],["veiwer","viewer"],["veiwers","viewers"],["veiwing","viewing"],["veiwings","viewings"],["veiws","views"],["vektor","vector"],["vektors","vectors"],["velidate","validate"],["vell","well"],["velociries","velocities"],["velociry","velocity"],["vender","vendor"],["venders","vendors"],["venemous","venomous"],["vengance","vengeance"],["vengence","vengeance"],["verbaitm","verbatim"],["verbatum","verbatim"],["verbous","verbose"],["verbouse","verbose"],["verbously","verbosely"],["verbse","verbose"],["verctor","vector"],["verctors","vectors"],["veresion","version"],["veresions","versions"],["verfication","verification"],["verficiation","verification"],["verfier","verifier"],["verfies","verifies"],["verfifiable","verifiable"],["verfification","verification"],["verfifications","verifications"],["verfified","verified"],["verfifier","verifier"],["verfifiers","verifiers"],["verfifies","verifies"],["verfify","verify"],["verfifying","verifying"],["verfires","verifies"],["verfiy","verify"],["verfiying","verifying"],["verfy","verify"],["verfying","verifying"],["verical","vertical"],["verifcation","verification"],["verifiaction","verification"],["verificaion","verification"],["verificaions","verifications"],["verificiation","verification"],["verificiations","verifications"],["verifieing","verifying"],["verifing","verifying"],["verifiy","verify"],["verifiying","verifying"],["verifty","verify"],["veriftying","verifying"],["verifyied","verified"],["verion","version"],["verions","versions"],["veriosn","version"],["veriosns","versions"],["verious","various"],["verison","version"],["verisoned","versioned"],["verisoner","versioner"],["verisoners","versioners"],["verisoning","versioning"],["verisons","versions"],["veritcal","vertical"],["veritcally","vertically"],["veritical","vertical"],["verly","very"],["vermillion","vermilion"],["verndor","vendor"],["verrical","vertical"],["verry","very"],["vershin","version"],["versin","version"],["versino","version"],["versinos","versions"],["versins","versions"],["versio","version"],["versiob","version"],["versioed","versioned"],["versioing","versioning"],["versiom","version"],["versionaddded","versionadded"],["versionm","version"],["versionms","versions"],["versionned","versioned"],["versionning","versioning"],["versios","versions"],["versitilaty","versatility"],["versitile","versatile"],["versitlity","versatility"],["versoin","version"],["versoion","version"],["versoions","versions"],["verson","version"],["versoned","versioned"],["versons","versions"],["vertextes","vertices"],["vertexts","vertices"],["vertial","vertical"],["verticall","vertical"],["verticaly","vertically"],["verticies","vertices"],["verticla","vertical"],["verticlealign","verticalalign"],["vertiece","vertex"],["vertieces","vertices"],["vertifiable","verifiable"],["vertification","verification"],["vertifications","verifications"],["vertify","verify"],["vertikal","vertical"],["vertix","vertex"],["vertixes","vertices"],["vertixs","vertices"],["vertx","vertex"],["veryfieng","verifying"],["veryfy","verify"],["veryified","verified"],["veryifies","verifies"],["veryify","verify"],["veryifying","verifying"],["vesion","version"],["vesions","versions"],["vetex","vertex"],["vetexes","vertices"],["vetod","vetoed"],["vetween","between"],["vew","view"],["veyr","very"],["vhild","child"],["viatnamese","Vietnamese"],["vice-fersa","vice-versa"],["vice-wersa","vice-versa"],["vicefersa","vice-versa"],["viceversa","vice-versa"],["vicewersa","vice-versa"],["videostreamming","videostreaming"],["viee","view"],["viees","views"],["vieport","viewport"],["vieports","viewports"],["vietnamesea","Vietnamese"],["viewtransfromation","viewtransformation"],["vigilence","vigilance"],["vigourous","vigorous"],["vill","will"],["villian","villain"],["villification","vilification"],["villify","vilify"],["vincinity","vicinity"],["vinrator","vibrator"],["vioalte","violate"],["vioaltion","violation"],["violentce","violence"],["violoated","violated"],["violoating","violating"],["violoation","violation"],["violoations","violations"],["virtal","virtual"],["virtaul","virtual"],["virtical","vertical"],["virtiual","virtual"],["virttual","virtual"],["virttually","virtually"],["virtualisaion","virtualisation"],["virtualisaiton","virtualisation"],["virtualizaion","virtualization"],["virtualizaiton","virtualization"],["virtualiziation","virtualization"],["virtualy","virtually"],["virtualzation","virtualization"],["virtuell","virtual"],["virtural","virtual"],["virture","virtue"],["virutal","virtual"],["virutalenv","virtualenv"],["virutalisation","virtualisation"],["virutalise","virtualise"],["virutalised","virtualised"],["virutalization","virtualization"],["virutalize","virtualize"],["virutalized","virtualized"],["virutally","virtually"],["virutals","virtuals"],["virutual","virtual"],["visability","visibility"],["visable","visible"],["visably","visibly"],["visbility","visibility"],["visble","visible"],["visblie","visible"],["visbly","visibly"],["visiable","visible"],["visiably","visibly"],["visibale","visible"],["visibibilty","visibility"],["visibile","visible"],["visibililty","visibility"],["visibilit","visibility"],["visibilty","visibility"],["visibl","visible"],["visibleable","visible"],["visibles","visible"],["visiblities","visibilities"],["visiblity","visibility"],["visiblle","visible"],["visinble","visible"],["visious","vicious"],["visisble","visible"],["visiter","visitor"],["visiters","visitors"],["visitng","visiting"],["visivble","visible"],["vissible","visible"],["visted","visited"],["visting","visiting"],["vistors","visitors"],["visuab","visual"],["visuabisation","visualisation"],["visuabise","visualise"],["visuabised","visualised"],["visuabises","visualises"],["visuabization","visualization"],["visuabize","visualize"],["visuabized","visualized"],["visuabizes","visualizes"],["visuables","visuals"],["visuably","visually"],["visuabs","visuals"],["visuaisation","visualisation"],["visuaise","visualise"],["visuaised","visualised"],["visuaises","visualises"],["visuaization","visualization"],["visuaize","visualize"],["visuaized","visualized"],["visuaizes","visualizes"],["visuale","visual"],["visuales","visuals"],["visualizaion","visualization"],["visualizaiton","visualization"],["visualizaitons","visualizations"],["visualizaton","visualization"],["visualizatons","visualizations"],["visuallisation","visualisation"],["visuallization","visualization"],["visualy","visually"],["visualzation","visualization"],["vitories","victories"],["vitrual","virtual"],["vitrually","virtually"],["vitual","virtual"],["viusally","visually"],["viusualisation","visualisation"],["viwe","view"],["viwed","viewed"],["viweed","viewed"],["viwer","viewer"],["viwers","viewers"],["viwes","views"],["vizualisation","visualisation"],["vizualise","visualise"],["vizualised","visualised"],["vizualize","visualize"],["vizualized","visualized"],["vlarge","large"],["vlaue","value"],["vlaues","values"],["vlone","clone"],["vloned","cloned"],["vlones","clones"],["vlues","values"],["voif","void"],["volatage","voltage"],["volatages","voltages"],["volatge","voltage"],["volatges","voltages"],["volcanoe","volcano"],["volenteer","volunteer"],["volenteered","volunteered"],["volenteers","volunteers"],["voleyball","volleyball"],["volontary","voluntary"],["volonteer","volunteer"],["volonteered","volunteered"],["volonteering","volunteering"],["volonteers","volunteers"],["volounteer","volunteer"],["volounteered","volunteered"],["volounteering","volunteering"],["volounteers","volunteers"],["volumn","volume"],["volumne","volume"],["volums","volume"],["volxel","voxel"],["volxels","voxels"],["vonfig","config"],["vould","would"],["vreity","variety"],["vresion","version"],["vrey","very"],["vriable","variable"],["vriables","variables"],["vriety","variety"],["vrifier","verifier"],["vrifies","verifies"],["vrify","verify"],["vrilog","Verilog"],["vritual","virtual"],["vritualenv","virtualenv"],["vritualisation","virtualisation"],["vritualise","virtualise"],["vritualization","virtualization"],["vritualize","virtualize"],["vrituoso","virtuoso"],["vrsion","version"],["vrsions","versions"],["Vulacn","Vulcan"],["Vulakn","Vulkan"],["vulbearable","vulnerable"],["vulbearabule","vulnerable"],["vulbearbilities","vulnerabilities"],["vulbearbility","vulnerability"],["vulbearbuilities","vulnerabilities"],["vulbearbuility","vulnerability"],["vulberabilility","vulnerability"],["vulberabilites","vulnerabilities"],["vulberabiliti","vulnerability"],["vulberabilitie","vulnerability"],["vulberabilitis","vulnerabilities"],["vulberabilitiy","vulnerability"],["vulberabillities","vulnerabilities"],["vulberabillity","vulnerability"],["vulberabilties","vulnerabilities"],["vulberabilty","vulnerability"],["vulberablility","vulnerability"],["vulberabuilility","vulnerability"],["vulberabuilites","vulnerabilities"],["vulberabuiliti","vulnerability"],["vulberabuilitie","vulnerability"],["vulberabuilities","vulnerabilities"],["vulberabuilitis","vulnerabilities"],["vulberabuilitiy","vulnerability"],["vulberabuility","vulnerability"],["vulberabuillities","vulnerabilities"],["vulberabuillity","vulnerability"],["vulberabuilties","vulnerabilities"],["vulberabuilty","vulnerability"],["vulberabule","vulnerable"],["vulberabulility","vulnerability"],["vulberbilities","vulnerabilities"],["vulberbility","vulnerability"],["vulberbuilities","vulnerabilities"],["vulberbuility","vulnerability"],["vulerabilities","vulnerabilities"],["vulerability","vulnerability"],["vulerable","vulnerable"],["vulerabuilities","vulnerabilities"],["vulerabuility","vulnerability"],["vulerabule","vulnerable"],["vulernabilities","vulnerabilities"],["vulernability","vulnerability"],["vulernable","vulnerable"],["vulnarabilities","vulnerabilities"],["vulnarability","vulnerability"],["vulneabilities","vulnerabilities"],["vulneability","vulnerability"],["vulneable","vulnerable"],["vulnearabilities","vulnerabilities"],["vulnearability","vulnerability"],["vulnearable","vulnerable"],["vulnearabule","vulnerable"],["vulnearbilities","vulnerabilities"],["vulnearbility","vulnerability"],["vulnearbuilities","vulnerabilities"],["vulnearbuility","vulnerability"],["vulnerabilies","vulnerabilities"],["vulnerabiliies","vulnerabilities"],["vulnerabilility","vulnerability"],["vulnerabilites","vulnerabilities"],["vulnerabiliti","vulnerability"],["vulnerabilitie","vulnerability"],["vulnerabilitis","vulnerabilities"],["vulnerabilitiy","vulnerability"],["vulnerabilitu","vulnerability"],["vulnerabiliy","vulnerability"],["vulnerabillities","vulnerabilities"],["vulnerabillity","vulnerability"],["vulnerabilties","vulnerabilities"],["vulnerabilty","vulnerability"],["vulnerablility","vulnerability"],["vulnerablities","vulnerabilities"],["vulnerablity","vulnerability"],["vulnerabuilility","vulnerability"],["vulnerabuilites","vulnerabilities"],["vulnerabuiliti","vulnerability"],["vulnerabuilitie","vulnerability"],["vulnerabuilities","vulnerabilities"],["vulnerabuilitis","vulnerabilities"],["vulnerabuilitiy","vulnerability"],["vulnerabuility","vulnerability"],["vulnerabuillities","vulnerabilities"],["vulnerabuillity","vulnerability"],["vulnerabuilties","vulnerabilities"],["vulnerabuilty","vulnerability"],["vulnerabule","vulnerable"],["vulnerabulility","vulnerability"],["vulnerarbilities","vulnerabilities"],["vulnerarbility","vulnerability"],["vulnerarble","vulnerable"],["vulnerbilities","vulnerabilities"],["vulnerbility","vulnerability"],["vulnerbuilities","vulnerabilities"],["vulnerbuility","vulnerability"],["vulnreabilities","vulnerabilities"],["vulnreability","vulnerability"],["vunerabilities","vulnerabilities"],["vunerability","vulnerability"],["vunerable","vulnerable"],["vyer","very"],["vyre","very"],["waht","what"],["wainting","waiting"],["waisline","waistline"],["waislines","waistlines"],["waitting","waiting"],["wakup","wakeup"],["wallthickness","wall thickness"],["want;s","wants"],["wantto","want to"],["wappers","wrappers"],["warantee","warranty"],["waranties","warranties"],["waranty","warranty"],["wardobe","wardrobe"],["waring","warning"],["warings","warnings"],["warinigs","warnings"],["warining","warning"],["warinings","warnings"],["warks","works"],["warlking","walking"],["warnibg","warning"],["warnibgs","warnings"],["warnig","warning"],["warnign","warning"],["warnigns","warnings"],["warnigs","warnings"],["warniing","warning"],["warniings","warnings"],["warnin","warning"],["warnind","warning"],["warninds","warnings"],["warninf","warning"],["warninfs","warnings"],["warningss","warnings"],["warninig","warning"],["warninigs","warnings"],["warnining","warning"],["warninings","warnings"],["warninng","warning"],["warninngs","warnings"],["warnins","warnings"],["warninsg","warnings"],["warninsgs","warnings"],["warniong","warning"],["warniongs","warnings"],["warnkng","warning"],["warnkngs","warnings"],["warrent","warrant"],["warrents","warrants"],["warrn","warn"],["warrned","warned"],["warrning","warning"],["warrnings","warnings"],["warrriors","warriors"],["was'nt","wasn't"],["was't","wasn't"],["was;t","wasn't"],["wasn;t","wasn't"],["wasnt'","wasn't"],["wasnt","wasn't"],["wasnt;","wasn't"],["wass","was"],["wastefullness","wastefulness"],["watchdong","watchdog"],["watchog","watchdog"],["watermask","watermark"],["wathc","watch"],["wathdog","watchdog"],["wathever","whatever"],["wating","waiting"],["watn","want"],["wavelengh","wavelength"],["wavelenghs","wavelengths"],["wavelenght","wavelength"],["wavelenghts","wavelengths"],["wavelnes","wavelines"],["wayoint","waypoint"],["wayoints","waypoints"],["wayword","wayward"],["weahter","weather"],["weahters","weathers"],["weaponary","weaponry"],["weas","was"],["webage","webpage"],["webbased","web-based"],["webiste","website"],["wedensday","Wednesday"],["wednesay","Wednesday"],["wednesdaay","Wednesday"],["wednesdey","Wednesday"],["wednessday","Wednesday"],["wednsday","Wednesday"],["wege","wedge"],["wehere","where"],["wehn","when"],["wehther","whether"],["weigth","weight"],["weigthed","weighted"],["weigths","weights"],["weilded","wielded"],["weill","will"],["weired","weird"],["weitght","weight"],["wel","well"],["wendesday","Wednesday"],["wendsay","Wednesday"],["wendsday","Wednesday"],["wensday","Wednesday"],["were'nt","weren't"],["wereabouts","whereabouts"],["wereas","whereas"],["weree","were"],["werent","weren't"],["werever","wherever"],["wew","we"],["whant","want"],["whants","wants"],["whataver","whatever"],["whatepsace","whitespace"],["whatepsaces","whitespaces"],["whathever","whatever"],["whch","which"],["whcich","which"],["whcih","which"],["wheh","when"],["whehter","whether"],["wheigh","weigh"],["whem","when"],["whenevery","whenever"],["whenn","when"],["whenver","whenever"],["wheras","whereas"],["wherease","whereas"],["whereever","wherever"],["wherether","whether"],["whery","where"],["wheteher","whether"],["whetehr","whether"],["wheter","whether"],["whethe","whether"],["whethter","whether"],["whever","wherever"],["whheel","wheel"],["whhen","when"],["whic","which"],["whicg","which"],["which;s","which's"],["whichs","which's"],["whicht","which"],["whih","which"],["whihc","which"],["whihch","which"],["whike","while"],["whilest","whilst"],["whiltelist","whitelist"],["whiltelisted","whitelisted"],["whiltelisting","whitelisting"],["whiltelists","whitelists"],["whilw","while"],["whioch","which"],["whishlist","wishlist"],["whitch","which"],["whitchever","whichever"],["whitepsace","whitespace"],["whitepsaces","whitespaces"],["whith","with"],["whithin","within"],["whithout","without"],["whitre","white"],["whitspace","whitespace"],["whitspaces","whitespace"],["whlch","which"],["whle","while"],["whlie","while"],["whn","when"],["whne","when"],["whoes","whose"],["whoknows","who knows"],["wholey","wholly"],["whoose","whose"],["whould","would"],["whre","where"],["whta","what"],["whther","whether"],["whtihin","within"],["whyth","with"],["whythout","without"],["wiat","wait"],["wice","vice"],["wice-versa","vice-versa"],["wice-wersa","vice-versa"],["wiceversa","vice-versa"],["wicewersa","vice-versa"],["wich","which"],["widder","wider"],["widesread","widespread"],["widgect","widget"],["widged","widget"],["widghet","widget"],["widghets","widgets"],["widgit","widget"],["widgtes","widgets"],["widht","width"],["widhtpoint","widthpoint"],["widhtpoints","widthpoints"],["widthn","width"],["widthout","without"],["wief","wife"],["wieghed","weighed"],["wieght","weight"],["wieghts","weights"],["wieh","view"],["wierd","weird"],["wierdly","weirdly"],["wierdness","weirdness"],["wieth","width"],["wiew","view"],["wigdet","widget"],["wigdets","widgets"],["wih","with"],["wihch","which"],["wihich","which"],["wihite","white"],["wihle","while"],["wihout","without"],["wiht","with"],["wihtin","within"],["wihtout","without"],["wiil","will"],["wikpedia","wikipedia"],["wilcard","wildcard"],["wilcards","wildcards"],["wilh","will"],["wille","will"],["willingless","willingness"],["willk","will"],["willl","will"],["windo","window"],["windoes","windows"],["windoow","window"],["windoows","windows"],["windos","windows"],["windowz","windows"],["windwo","window"],["windwos","windows"],["winn","win"],["winndow","window"],["winndows","windows"],["winodw","window"],["wipoing","wiping"],["wirh","with"],["wirte","write"],["wirter","writer"],["wirters","writers"],["wirtes","writes"],["wirting","writing"],["wirtten","written"],["wirtual","virtual"],["witable","writeable"],["witdh","width"],["witdhs","widths"],["witdth","width"],["witdths","widths"],["witheld","withheld"],["withh","with"],["withih","within"],["withinn","within"],["withion","within"],["witho","with"],["withoit","without"],["withold","withhold"],["witholding","withholding"],["withon","within"],["withoout","without"],["withot","without"],["withotu","without"],["withou","without"],["withoud","without"],["withoug","without"],["withough","without"],["withought","without"],["withouht","without"],["withount","without"],["withourt","without"],["withous","without"],["withouth","without"],["withouyt","without"],["withput","without"],["withrawal","withdrawal"],["witht","with"],["withthe","with the"],["withtin","within"],["withun","within"],["withuout","without"],["witin","within"],["witk","with"],["witn","with"],["witout","without"],["witrh","with"],["witth","with"],["wiull","will"],["wiyh","with"],["wiyhout","without"],["wiyth","with"],["wizzard","wizard"],["wjat","what"],["wll","will"],["wlll","will"],["wnated","wanted"],["wnating","wanting"],["wnats","wants"],["woh","who"],["wohle","whole"],["woill","will"],["woithout","without"],["wokr","work"],["wokring","working"],["wolrd","world"],["wolrdly","worldly"],["wolrdwide","worldwide"],["wolwide","worldwide"],["won;t","won't"],["wonderfull","wonderful"],["wonderig","wondering"],["wont't","won't"],["woraround","workaround"],["worarounds","workarounds"],["worbench","workbench"],["worbenches","workbenches"],["worchester","Worcester"],["wordlwide","worldwide"],["wordpres","wordpress"],["worfklow","workflow"],["worfklows","workflows"],["worflow","workflow"],["worflows","workflows"],["workaorund","workaround"],["workaorunds","workarounds"],["workaound","workaround"],["workaounds","workarounds"],["workaraound","workaround"],["workaraounds","workarounds"],["workarbound","workaround"],["workaroud","workaround"],["workaroudn","workaround"],["workaroudns","workarounds"],["workarouds","workarounds"],["workarould","workaround"],["workaroung","workaround"],["workaroungs","workarounds"],["workarround","workaround"],["workarrounds","workarounds"],["workarund","workaround"],["workarunds","workarounds"],["workbanch","workbench"],["workbanches","workbenches"],["workbanchs","workbenches"],["workbenchs","workbenches"],["workbennch","workbench"],["workbennches","workbenches"],["workbnech","workbench"],["workbneches","workbenches"],["workboos","workbooks"],["workes","works"],["workfow","workflow"],["workfows","workflows"],["workign","working"],["worklfow","workflow"],["worklfows","workflows"],["workpsace","workspace"],["workpsaces","workspaces"],["workround","workaround"],["workrounds","workarounds"],["workspce","workspace"],["workspsace","workspace"],["workspsaces","workspaces"],["workstaion","workstation"],["workstaions","workstations"],["workstaition","workstation"],["workstaitions","workstations"],["workstaiton","workstation"],["workstaitons","workstations"],["workststion","workstation"],["workststions","workstations"],["worl","world"],["world-reknown","world renown"],["world-reknowned","world renowned"],["worload","workload"],["worloads","workloads"],["worls","world"],["wornged","wronged"],["worngs","wrongs"],["worrry","worry"],["worser","worse"],["worstened","worsened"],["worthwile","worthwhile"],["woth","worth"],["wothout","without"],["wotk","work"],["wotked","worked"],["wotking","working"],["wotks","works"],["woud","would"],["woudl","would"],["woudn't","wouldn't"],["would'nt","wouldn't"],["would't","wouldn't"],["wouldent","wouldn't"],["woulden`t","wouldn't"],["wouldn;t","wouldn't"],["wouldnt'","wouldn't"],["wouldnt","wouldn't"],["wouldnt;","wouldn't"],["wounderful","wonderful"],["wouold","would"],["wouuld","would"],["wqs","was"],["wraapp","wrap"],["wraapped","wrapped"],["wraapper","wrapper"],["wraappers","wrappers"],["wraapping","wrapping"],["wraapps","wraps"],["wraning","warning"],["wranings","warnings"],["wrapepd","wrapped"],["wraper","wrapper"],["wrapp","wrap"],["wrappered","wrapped"],["wrappng","wrapping"],["wrapps","wraps"],["wresters","wrestlers"],["wriet","write"],["writebufer","writebuffer"],["writechetque","writecheque"],["writeing","writing"],["writen","written"],["writet","writes"],["writewr","writer"],["writingm","writing"],["writters","writers"],["writting","writing"],["writtten","written"],["wrkload","workload"],["wrkloads","workloads"],["wrod","word"],["wroet","wrote"],["wrog","wrong"],["wrok","work"],["wroked","worked"],["wrokflow","workflow"],["wrokflows","workflows"],["wroking","working"],["wrokload","workload"],["wrokloads","workloads"],["wroks","works"],["wron","wrong"],["wronf","wrong"],["wront","wrong"],["wrtie","write"],["wrting","writing"],["wsee","see"],["wser","user"],["wth","with"],["wtih","with"],["wtyle","style"],["wuold","would"],["wupport","support"],["wuth","with"],["wuthin","within"],["wya","way"],["wyth","with"],["wythout","without"],["xdescribe","describe"],["xdpf","xpdf"],["xenophoby","xenophobia"],["xepect","expect"],["xepected","expected"],["xepectedly","expectedly"],["xepecting","expecting"],["xepects","expects"],["xgetttext","xgettext"],["xinitiazlize","xinitialize"],["xmdoel","xmodel"],["xour","your"],["xwindows","X"],["xyou","you"],["yaching","yachting"],["yaer","year"],["yaerly","yearly"],["yaers","years"],["yatch","yacht"],["yearm","year"],["yeasr","years"],["yeild","yield"],["yeilded","yielded"],["yeilding","yielding"],["yeilds","yields"],["yeld","yield"],["yelded","yielded"],["yelding","yielding"],["yelds","yields"],["yello","yellow"],["yera","year"],["yeras","years"],["yersa","years"],["yhe","the"],["yieldin","yielding"],["ymbols","symbols"],["yoman","yeoman"],["yomen","yeomen"],["yot","yacht"],["yotube","youtube"],["youforic","euphoric"],["youforically","euphorically"],["youlogy","eulogy"],["yourselfes","yourselves"],["youself","yourself"],["youthinasia","euthanasia"],["ypes","types"],["yrea","year"],["ytou","you"],["yuforic","euphoric"],["yuforically","euphorically"],["yugoslac","yugoslav"],["yuo","you"],["yuor","your"],["yur","your"],["zar","czar"],["zars","czars"],["zeebra","zebra"],["zefer","zephyr"],["zefers","zephyrs"],["zellot","zealot"],["zellots","zealots"],["zemporary","temporary"],["zick-zack","zig-zag"],["zimmap","zipmap"],["zimpaps","zipmaps"],["zink","zinc"],["ziped","zipped"],["ziper","zipper"],["ziping","zipping"],["zlot","slot"],["zombe","zombie"],["zomebie","zombie"],["zoocheenei","zucchinis"],["zoocheeni","zucchini"],["zoocheinei","zucchinis"],["zoocheini","zucchini"],["zookeenee","zucchini"],["zookeenees","zucchinis"],["zookeenei","zucchinis"],["zookeeni","zucchini"],["zookeinee","zucchini"],["zookeinees","zucchinis"],["zookeinei","zucchinis"],["zookeini","zucchini"],["zucheenei","zucchinis"],["zucheeni","zucchini"],["zukeenee","zucchini"],["zukeenees","zucchinis"],["zukeenei","zucchinis"],["zukeeni","zucchini"],["zuser","user"],["zylophone","xylophone"],["zylophones","xylophone"],["__attribyte__","__attribute__"],["__cpluspus","__cplusplus"],["__cpusplus","__cplusplus"],["\xE9valuate","evaluate"],["\u0441ontain","contain"],["\u0441ontained","contained"],["\u0441ontainer","container"],["\u0441ontainers","containers"],["\u0441ontaining","containing"],["\u0441ontainor","container"],["\u0441ontainors","containers"],["\u0441ontains","contains"]]);var Ys=class{constructor(){this.ignoreWords=[]}},wr=class extends b{constructor(){super({nameKey:"rules.auto-correct-common-misspellings.name",descriptionKey:"rules.auto-correct-common-misspellings.description",type:"Content",ruleIgnoreTypes:[h.yaml,h.code,h.inlineCode,h.math,h.inlineMath,h.link,h.wikiLink,h.tag,h.image,h.url]})}get OptionsClass(){return Ys}apply(t,i){return t.replaceAll(hp,n=>this.replaceWordWithCorrectCasing(n,i))}replaceWordWithCorrectCasing(t,i){let n=t.toLowerCase();if(!jl.has(n)||i.ignoreWords.includes(n))return t;let r=jl.get(n);return t.charAt(0)==t.charAt(0).toUpperCase()&&(r=r.charAt(0).toUpperCase()+r.substring(1)),r}get exampleBuilders(){return[new y({description:"Auto-correct misspellings in regular text, but not code blocks, math blocks, YAML, or tags",before:p` --- key: absoltely --- @@ -162,7 +202,8 @@ var Qp=Object.create;var Sn=Object.defineProperty;var Xl=Object.getOwnPropertyDe http://www.Absoltely.com should not be corrected `,after:p` http://www.Absoltely.com should not be corrected - `})]}get optionBuilders(){return[new be({OptionsClass:ds,nameKey:"rules.auto-correct-common-misspellings.ignore-words.name",descriptionKey:"rules.auto-correct-common-misspellings.ignore-words.description",optionsKey:"ignoreWords",splitter:Kn,separator:", "})]}};Gn=A([w.register],Gn);var us=class{constructor(){this.style="space"}},gt=class extends w{constructor(){super({nameKey:"rules.blockquote-style.name",descriptionKey:"rules.blockquote-style.description",type:"Content",hasSpecialExecutionOrder:!0,ruleIgnoreTypes:[f.html]})}get OptionsClass(){return us}apply(t,i){return i.style==="space"?el(t,this.addSpaceToIndicator):el(t,this.removeSpaceFromIndicator)}removeSpaceFromIndicator(t){return t.replace(/>( |\t)+/g,">")}addSpaceToIndicator(t){return t.replace(/>([^ ])/g,"> $1").replace(/>>/g,"> >")}get exampleBuilders(){return[new y({description:"When style = `space`, a space is added to blockquotes missing a space after the indicator",before:p` + `})]}get optionBuilders(){return[new me({OptionsClass:Ys,nameKey:"rules.auto-correct-common-misspellings.ignore-words.name",descriptionKey:"rules.auto-correct-common-misspellings.ignore-words.description",optionsKey:"ignoreWords",splitter:gr,separator:", "})]}};wr=A([b.register],wr);var js=class{constructor(){this.style="space"}},Mt=class extends b{constructor(){super({nameKey:"rules.blockquote-style.name",descriptionKey:"rules.blockquote-style.description",type:"Content",hasSpecialExecutionOrder:!0,ruleIgnoreTypes:[h.html]})}get OptionsClass(){return js}apply(t,i){return i.style==="space"?_l(t,n=>this.updateBlockquoteLines(n,this.addSpaceToIndicator)):_l(t,n=>this.updateBlockquoteLines(n,this.removeSpaceFromIndicator))}removeSpaceFromIndicator(t,i){return i?t.replace(/>[ \t]+>/g,">>"):t.replace(/>[ \t]+/g,">")}addSpaceToIndicator(t,i){let n=t.replace(/>([^ ]|$)/g,"> $1").replace(/>>/g,"> >");return i?n:n.replace(/>(?:[ \t]{2,}|\t+)/g,"> ")}updateBlockquoteLines(t,i){let n=0,r=0,a="",s="",o=0,l=t,c=!1;do{r=l.indexOf(` +`,n),r===-1&&(r=l.length-1,c=!0),[a,o]=fn(l,r-1);let d=o+a.length+1,u=r;c&&u++;let g=l.substring(d,u),m=Ss.test(g);s=i(a,m),o++,l=ce(l,o,o+a.length,s),n=r+1+s.length-a.length}while(!c);return l}get exampleBuilders(){return[new y({description:"When style = `space`, a space is added to blockquotes missing a space after the indicator",before:p` >Blockquotes will have a space added if one is not present > Will be left as is. ${""} @@ -196,7 +237,7 @@ var Qp=Object.create;var Sn=Object.defineProperty;var Xl=Object.getOwnPropertyDe >>Nesting is handled >>>>>Especially when multiple levels are involved >>>>>Even when partially correct already, it is handled - `,options:{style:"no space"}})]}get optionBuilders(){return[new ne({OptionsClass:us,nameKey:"rules.blockquote-style.style.name",descriptionKey:"rules.blockquote-style.style.description",optionsKey:"style",records:[{value:"space",description:"> indicator is followed by a space"},{value:"no space",description:">indicator is not followed by a space"}]})]}};gt=A([w.register],gt);var ps=class{};A([w.noSettingControl()],ps.prototype,"lineContent",2);var ht=class extends w{constructor(){super({nameKey:"rules.add-blockquote-indentation-on-paste.name",descriptionKey:"rules.add-blockquote-indentation-on-paste.description",type:"Paste"})}get OptionsClass(){return ps}apply(t,i){let n=/^(\s*)((> ?)+) .*/,r=i.lineContent.match(n);if(!r)return t;let a=r[1]??"",s=r[2]??"";return t.trim().replace(/\n/gm,` + `,options:{style:"no space"}})]}get optionBuilders(){return[new ne({OptionsClass:js,nameKey:"rules.blockquote-style.style.name",descriptionKey:"rules.blockquote-style.style.description",optionsKey:"style",records:[{value:"space",description:"> indicator is followed by a space"},{value:"no space",description:">indicator is not followed by a space"}]})]}};Mt=A([b.register],Mt);var Ps=class{};A([b.noSettingControl()],Ps.prototype,"lineContent",2);var qt=class extends b{constructor(){super({nameKey:"rules.add-blockquote-indentation-on-paste.name",descriptionKey:"rules.add-blockquote-indentation-on-paste.description",type:"Paste"})}get OptionsClass(){return Ps}apply(t,i){let n=/^(\s*)((> ?)+) .*/,r=i.lineContent.match(n);if(!r)return t;let a=r[1]??"",s=r[2]??"";return t.trim().replace(/\n/gm,` ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted into regular text does not get blockquotified with current line being `Part 1 of the sentence`",before:p` was much less likely to succeed, but they tried it anyway. Part 2 was much more interesting. @@ -211,7 +252,7 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i `,after:p` This content is being added to a blockquote > > Note that the second line is indented and the surrounding blank lines were trimmed - `,options:{lineContent:"> > "}})]}get optionBuilders(){return[]}};ht=A([w.register],ht);var ft=class{constructor(){this.style="Title Case";this.ignoreWords=["macOS","iOS","iPhone","iPad","JavaScript","TypeScript","AppleScript","I"];this.lowercaseWords=["a","an","the","aboard","about","abt.","above","abreast","absent","across","after","against","along","aloft","alongside","amid","amidst","mid","midst","among","amongst","anti","apropos","around","round","as","aslant","astride","at","atop","ontop","bar","barring","before","B4","behind","below","beneath","neath","beside","besides","between","'tween","beyond","but","by","chez","circa","c.","ca.","come","concerning","contra","counting","cum","despite","spite","down","during","effective","ere","except","excepting","excluding","failing","following","for","from","in","including","inside","into","less","like","minus","modulo","mod","near","nearer","nearest","next","notwithstanding","of","o'","off","offshore","on","onto","opposite","out","outside","over","o'er","pace","past","pending","per","plus","post","pre","pro","qua","re","regarding","respecting","sans","save","saving","short","since","sub","than","through","thru","throughout","thruout","till","times","to","t'","touching","toward","towards","under","underneath","unlike","until","unto","up","upon","versus","vs.","v.","via","vice","vis-\xE0-vis","wanting","with","w/","w.","c\u0304","within","w/i","without","'thout","w/o","abroad","adrift","aft","afterward","afterwards","ahead","apart","ashore","aside","away","back","backward","backwards","beforehand","downhill","downstage","downstairs","downstream","downward","downwards","downwind","east","eastward","eastwards","forth","forward","forwards","heavenward","heavenwards","hence","henceforth","here","hereby","herein","hereof","hereto","herewith","home","homeward","homewards","indoors","inward","inwards","leftward","leftwards","north","northeast","northward","northwards","northwest","now","onward","onwards","outdoors","outward","outwards","overboard","overhead","overland","overseas","rightward","rightwards","seaward","seawards","skywards","skyward","south","southeast","southwards","southward","southwest","then","thence","thenceforth","there","thereby","therein","thereof","thereto","therewith","together","underfoot","underground","uphill","upstage","upstairs","upstream","upward","upwards","upwind","west","westward","westwards","when","whence","where","whereby","wherein","whereto","wherewith","although","because","considering","given","granted","if","lest","once","provided","providing","seeing","so","supposing","though","unless","whenever","whereas","wherever","while","whilst","ago","according to","as regards","counter to","instead of","owing to","pertaining to","at the behest of","at the expense of","at the hands of","at risk of","at the risk of","at variance with","by dint of","by means of","by virtue of","by way of","for the sake of","for sake of","for lack of","for want of","from want of","in accordance with","in addition to","in case of","in charge of","in compliance with","in conformity with","in contact with","in exchange for","in favor of","in front of","in lieu of","in light of","in the light of","in line with","in place of","in point of","in quest of","in relation to","in regard to","with regard to","in respect to","with respect to","in return for","in search of","in step with","in touch with","in terms of","in the name of","in view of","on account of","on behalf of","on grounds of","on the grounds of","on the part of","on top of","with a view to","with the exception of","\xE0 la","a la","as soon as","as well as","close to","due to","far from","in case","other than","prior to","pursuant to","regardless of","subsequent to","as long as","as much as","as far as","by the time","in as much as","inasmuch","in order to","in order that","even","provide that","if only","whether","whose","whoever","why","how","or not","whatever","what","both","and","or","not only","but also","either","neither","nor","just","rather","no sooner","such","that","yet","is","it"];this.ignoreCasedWords=!0}},yt=class extends w{constructor(){super({nameKey:"rules.capitalize-headings.name",descriptionKey:"rules.capitalize-headings.description",type:"Heading",hasSpecialExecutionOrder:!0,ruleIgnoreTypes:[f.code,f.inlineCode,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return ft}apply(t,i){return t.replace(Pi,n=>{if(i.style==="ALL CAPS")return n.toUpperCase();let r=i.style==="First letter",a=n.match(/\S+/g),s=i.ignoreWords,o=i.lowercaseWords,l=!0;for(let d=1;d<a.length;d++){if(!a[d].match(/^[\p{L}'-]{1,}[.?!,:;\d]*$/u))continue;if(i.ignoreCasedWords&&a[d]!==a[d].toLowerCase()||s.includes(a[d])||(a[d]=a[d].toLowerCase(),(!o.includes(a[d])&&!r||l===!0)&&(a[d]=a[d][0].toUpperCase()+a[d].slice(1))),l=!1,i.ignoreCasedWords&&r)break}return a.join(" ")})}get exampleBuilders(){return[new y({description:"With `Title Case=true`, `Ignore Cased Words=false`",before:p` + `,options:{lineContent:"> > "}})]}get optionBuilders(){return[]}};qt=A([b.register],qt);var It=class{constructor(){this.style="Title Case";this.ignoreWords=["macOS","iOS","iPhone","iPad","JavaScript","TypeScript","AppleScript","I"];this.lowercaseWords=["a","an","the","aboard","about","abt.","above","abreast","absent","across","after","against","along","aloft","alongside","amid","amidst","mid","midst","among","amongst","anti","apropos","around","round","as","aslant","astride","at","atop","ontop","bar","barring","before","B4","behind","below","beneath","neath","beside","besides","between","'tween","beyond","but","by","chez","circa","c.","ca.","come","concerning","contra","counting","cum","despite","spite","down","during","effective","ere","except","excepting","excluding","failing","following","for","from","in","including","inside","into","less","like","minus","modulo","mod","near","nearer","nearest","next","notwithstanding","of","o'","off","offshore","on","onto","opposite","out","outside","over","o'er","pace","past","pending","per","plus","post","pre","pro","qua","re","regarding","respecting","sans","save","saving","short","since","sub","than","through","thru","throughout","thruout","till","times","to","t'","touching","toward","towards","under","underneath","unlike","until","unto","up","upon","versus","vs.","v.","via","vice","vis-\xE0-vis","wanting","with","w/","w.","c\u0304","within","w/i","without","'thout","w/o","abroad","adrift","aft","afterward","afterwards","ahead","apart","ashore","aside","away","back","backward","backwards","beforehand","downhill","downstage","downstairs","downstream","downward","downwards","downwind","east","eastward","eastwards","forth","forward","forwards","heavenward","heavenwards","hence","henceforth","here","hereby","herein","hereof","hereto","herewith","home","homeward","homewards","indoors","inward","inwards","leftward","leftwards","north","northeast","northward","northwards","northwest","now","onward","onwards","outdoors","outward","outwards","overboard","overhead","overland","overseas","rightward","rightwards","seaward","seawards","skywards","skyward","south","southeast","southwards","southward","southwest","then","thence","thenceforth","there","thereby","therein","thereof","thereto","therewith","together","underfoot","underground","uphill","upstage","upstairs","upstream","upward","upwards","upwind","west","westward","westwards","when","whence","where","whereby","wherein","whereto","wherewith","although","because","considering","given","granted","if","lest","once","provided","providing","seeing","so","supposing","though","unless","whenever","whereas","wherever","while","whilst","ago","according to","as regards","counter to","instead of","owing to","pertaining to","at the behest of","at the expense of","at the hands of","at risk of","at the risk of","at variance with","by dint of","by means of","by virtue of","by way of","for the sake of","for sake of","for lack of","for want of","from want of","in accordance with","in addition to","in case of","in charge of","in compliance with","in conformity with","in contact with","in exchange for","in favor of","in front of","in lieu of","in light of","in the light of","in line with","in place of","in point of","in quest of","in relation to","in regard to","with regard to","in respect to","with respect to","in return for","in search of","in step with","in touch with","in terms of","in the name of","in view of","on account of","on behalf of","on grounds of","on the grounds of","on the part of","on top of","with a view to","with the exception of","\xE0 la","a la","as soon as","as well as","close to","due to","far from","in case","other than","prior to","pursuant to","regardless of","subsequent to","as long as","as much as","as far as","by the time","in as much as","inasmuch","in order to","in order that","even","provide that","if only","whether","whose","whoever","why","how","or not","whatever","what","both","and","or","not only","but also","either","neither","nor","just","rather","no sooner","such","that","yet","is","it"];this.ignoreCasedWords=!0}},Bt=class extends b{constructor(){super({nameKey:"rules.capitalize-headings.name",descriptionKey:"rules.capitalize-headings.description",type:"Heading",hasSpecialExecutionOrder:!0,ruleIgnoreTypes:[h.code,h.inlineCode,h.yaml,h.link,h.wikiLink,h.tag]})}get OptionsClass(){return It}apply(t,i){return t.replace(nt,n=>{if(i.style==="ALL CAPS")return n.toUpperCase();let r=i.style==="First letter",a=n.match(/\S+/g),s=i.ignoreWords,o=i.lowercaseWords,l=!0;for(let c=1;c<a.length;c++){if(!a[c].match(/^[\p{L}'-]{1,}[.?!,:;\d]*$/u))continue;if(i.ignoreCasedWords&&a[c]!==a[c].toLowerCase()||s.includes(a[c])||(a[c]=a[c].toLowerCase(),(!o.includes(a[c])&&!r||l===!0)&&(a[c]=a[c][0].toUpperCase()+a[c].slice(1))),l=!1,i.ignoreCasedWords&&r)break}return a.join(" ")})}get exampleBuilders(){return[new y({description:"With `Title Case=true`, `Ignore Cased Words=false`",before:p` # this is a heading 1 ## THIS IS A HEADING 2 ### a heading 3 @@ -239,7 +280,7 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i `,after:p` # THIS IS A HEADING 1 ## THIS IS A HEADING 2 - `,options:{style:"ALL CAPS"}})]}get optionBuilders(){return[new ne({OptionsClass:ft,nameKey:"rules.capitalize-headings.style.name",descriptionKey:"rules.capitalize-headings.style.description",optionsKey:"style",records:[{value:"Title Case",description:"Capitalize Using Title Case Rules"},{value:"ALL CAPS",description:"CAPITALIZE THE WHOLE TITLE"},{value:"First letter",description:"Only capitalize the first letter"}]}),new U({OptionsClass:ft,nameKey:"rules.capitalize-headings.ignore-case-words.name",descriptionKey:"rules.capitalize-headings.ignore-case-words.description",optionsKey:"ignoreCasedWords"}),new be({OptionsClass:ft,nameKey:"rules.capitalize-headings.ignore-words.name",descriptionKey:"rules.capitalize-headings.ignore-words.description",optionsKey:"ignoreWords",splitter:Kn,separator:", "}),new be({OptionsClass:ft,nameKey:"rules.capitalize-headings.lowercase-words.name",descriptionKey:"rules.capitalize-headings.lowercase-words.description",optionsKey:"lowercaseWords",splitter:Kn,separator:", "})]}};yt=A([w.register],yt);var ms=class{constructor(){this.innerNewLines=!1}},Qn=class extends w{constructor(){super({nameKey:"rules.compact-yaml.name",descriptionKey:"rules.compact-yaml.description",type:"Spacing"})}get OptionsClass(){return ms}apply(t,i){return Ae(t,n=>(n=n.replace(/^---\n+/,`--- + `,options:{style:"ALL CAPS"}})]}get optionBuilders(){return[new ne({OptionsClass:It,nameKey:"rules.capitalize-headings.style.name",descriptionKey:"rules.capitalize-headings.style.description",optionsKey:"style",records:[{value:"Title Case",description:"Capitalize Using Title Case Rules"},{value:"ALL CAPS",description:"CAPITALIZE THE WHOLE TITLE"},{value:"First letter",description:"Only capitalize the first letter"}]}),new U({OptionsClass:It,nameKey:"rules.capitalize-headings.ignore-case-words.name",descriptionKey:"rules.capitalize-headings.ignore-case-words.description",optionsKey:"ignoreCasedWords"}),new me({OptionsClass:It,nameKey:"rules.capitalize-headings.ignore-words.name",descriptionKey:"rules.capitalize-headings.ignore-words.description",optionsKey:"ignoreWords",splitter:gr,separator:", "}),new me({OptionsClass:It,nameKey:"rules.capitalize-headings.lowercase-words.name",descriptionKey:"rules.capitalize-headings.lowercase-words.description",optionsKey:"lowercaseWords",splitter:gr,separator:", "})]}};Bt=A([b.register],Bt);var Hs=class{constructor(){this.innerNewLines=!1}},kr=class extends b{constructor(){super({nameKey:"rules.compact-yaml.name",descriptionKey:"rules.compact-yaml.description",type:"Spacing"})}get OptionsClass(){return Hs}apply(t,i){return ye(t,n=>(n=n.replace(/^---\n+/,`--- `),n=n.replace(/\n+---/,` ---`),i.innerNewLines&&(n=n.replaceAll(/\n{2,}/g,` `)),n))}get exampleBuilders(){return[new y({description:"Remove blank lines at the start and end of the YAML",before:p` @@ -280,7 +321,7 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i ${""} ${""} Body content here. - `,options:{innerNewLines:!0}})]}get optionBuilders(){return[new U({OptionsClass:ms,nameKey:"rules.compact-yaml.inner-new-lines.name",descriptionKey:"rules.compact-yaml.inner-new-lines.description",optionsKey:"innerNewLines"})]}};Qn=A([w.register],Qn);var ol=class{},Zn=class extends w{constructor(){super({nameKey:"rules.consecutive-blank-lines.name",descriptionKey:"rules.consecutive-blank-lines.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return ol}apply(t,i){return t.replace(/(\n([\t\v\f\r \u00a0\u2000-\u200b\u2028-\u2029\u3000]+)?){2,}\n/g,` + `,options:{innerNewLines:!0}})]}get optionBuilders(){return[new U({OptionsClass:Hs,nameKey:"rules.compact-yaml.inner-new-lines.name",descriptionKey:"rules.compact-yaml.inner-new-lines.description",optionsKey:"innerNewLines"})]}};kr=A([b.register],kr);var Pl=class{},Sr=class extends b{constructor(){super({nameKey:"rules.consecutive-blank-lines.name",descriptionKey:"rules.consecutive-blank-lines.description",type:"Spacing",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.link,h.wikiLink,h.tag]})}get OptionsClass(){return Pl}apply(t,i){return t.replace(/(\n([\t\v\f\r \u00a0\u2000-\u200b\u2028-\u2029\u3000]+)?){2,}\n/g,` `)}get exampleBuilders(){return[new y({description:"Consecutive blank lines are removed",before:p` Some text @@ -291,7 +332,7 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i Some text ${""} Some more text - `})]}get optionBuilders(){return[]}};Zn=A([w.register],Zn);var ll=class{},Jn=class extends w{constructor(){super({nameKey:"rules.convert-bullet-list-markers.name",descriptionKey:"rules.convert-bullet-list-markers.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return ll}apply(t,i){return t.replace(/^([^\S\n]*)([•§])([^\S\n]*)/gm,"$1-$3")}get exampleBuilders(){return[new y({description:"Converts \u2022",before:p` + `})]}get optionBuilders(){return[]}};Sr=A([b.register],Sr);var Hl=class{},zr=class extends b{constructor(){super({nameKey:"rules.convert-bullet-list-markers.name",descriptionKey:"rules.convert-bullet-list-markers.description",type:"Content",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.link,h.wikiLink,h.tag]})}get OptionsClass(){return Hl}apply(t,i){return t.replace(/^([^\S\n]*)([•§])([^\S\n]*)/gm,"$1-$3")}get exampleBuilders(){return[new y({description:"Converts \u2022",before:p` • item 1 • item 2 `,after:p` @@ -305,7 +346,7 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i - item 1 - item 2 - item 3 - `})]}get optionBuilders(){return[]}};Jn=A([w.register],Jn);var gs=class{constructor(){this.tabsize=4}},Xn=class extends w{constructor(){super({nameKey:"rules.convert-spaces-to-tabs.name",descriptionKey:"rules.convert-spaces-to-tabs.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return gs}apply(t,i){let n=String(i.tabsize),r=new RegExp("^( *) {"+n+"}","gm");t=this.replaceAllRegexMatches(t,r);let a=new RegExp("^((>( | *))*(>( | )) *) {"+n+"}","gm");return t=this.replaceAllRegexMatches(t,a),t}replaceAllRegexMatches(t,i){for(;t.match(i)!=null;)t=t.replace(i,"$1 ");return t}get exampleBuilders(){return[new y({description:"Converting spaces to tabs with `tabsize = 3`",before:p` + `})]}get optionBuilders(){return[]}};zr=A([b.register],zr);var $s=class{constructor(){this.tabsize=4}},Ar=class extends b{constructor(){super({nameKey:"rules.convert-spaces-to-tabs.name",descriptionKey:"rules.convert-spaces-to-tabs.description",type:"Spacing",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.link,h.wikiLink,h.tag]})}get OptionsClass(){return $s}apply(t,i){let n=String(i.tabsize),r=new RegExp("^( *) {"+n+"}","gm");t=this.replaceAllRegexMatches(t,r);let a=new RegExp("^((>( | *))*(>( | )) *) {"+n+"}","gm");return t=this.replaceAllRegexMatches(t,a),t}replaceAllRegexMatches(t,i){for(;t.match(i)!=null;)t=t.replace(i,"$1 ");return t}get exampleBuilders(){return[new y({description:"Converting spaces to tabs with `tabsize = 3`",before:p` - text with no indention - text indented with 3 spaces - text with no indention @@ -325,7 +366,127 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i > \t- text indented with 3 spaces > - text with no indention > \t\t- text indented with 6 spaces - `,options:{tabsize:3}})]}get optionBuilders(){return[new ls({OptionsClass:gs,nameKey:"rules.convert-spaces-to-tabs.tabsize.name",descriptionKey:"rules.convert-spaces-to-tabs.tabsize.description",optionsKey:"tabsize"})]}};Xn=A([w.register],Xn);var hs=class{constructor(){this.style="consistent"}},er=class extends w{constructor(){super({nameKey:"rules.emphasis-style.name",descriptionKey:"rules.emphasis-style.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag,f.math,f.inlineMath]})}get OptionsClass(){return hs}apply(t,i){return Ya(t,i.style,"emphasis")}get exampleBuilders(){return[new y({description:"Emphasis indicators should use underscores when style is set to 'underscore'",before:p` + `,options:{tabsize:3}})]}get optionBuilders(){return[new Ns({OptionsClass:$s,nameKey:"rules.convert-spaces-to-tabs.tabsize.name",descriptionKey:"rules.convert-spaces-to-tabs.tabsize.description",optionsKey:"tabsize"})]}};Ar=A([b.register],Ar);var ki=class{constructor(){this.aliasArrayStyle="single-line";this.dedupeAliasKey=!0;this.tagArrayStyle="single-line";this.dedupeTagKey=!0;this.dedupeArrayKeys=!0;this.ignoreDedupeArrayKeys=[];this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};A([b.noSettingControl()],ki.prototype,"aliasArrayStyle",2),A([b.noSettingControl()],ki.prototype,"tagArrayStyle",2),A([b.noSettingControl()],ki.prototype,"defaultEscapeCharacter",2),A([b.noSettingControl()],ki.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var Tr=class extends b{constructor(){super({nameKey:"rules.dedupe-yaml-array-values.name",descriptionKey:"rules.dedupe-yaml-array-values.description",type:"YAML"})}get OptionsClass(){return ki}apply(t,i){return ye(t,n=>{let r=si(n.replace(`--- +`,"").replace(` +---`,""));if(!r)return n;for(let a of xi)if(i.dedupeAliasKey&&Object.keys(r).includes(a)){n=se(n,a,we(at(this.getUniqueArray(Ie(ue(n,a)))),i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0));break}for(let a of vi)if(i.dedupeTagKey&&Object.keys(r).includes(a)){n=se(n,a,we(rt(this.getUniqueArray(Ie(ue(n,a)))),i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays));break}if(i.dedupeArrayKeys){let a=[...xi,...vi,...i.ignoreDedupeArrayKeys];for(let s of Object.keys(r)){if(a.includes(s)||!Array.isArray(r[s])||r[s].length!==0&&typeof r[s][0]=="object"&&r[s][0]!==null)continue;let o=ue(n,s),l="single-line";o.includes(` +`)&&(l="multi-line");let c=this.getUniqueArray(Ie(o));n=se(n,s,we(c,l,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays))}}return n})}getUniqueArray(t){return t==null||typeof t=="string"||t.length<=1?t:[...new Set(t)]}get exampleBuilders(){return[new y({description:"Dedupe YAML tags is case sensitive and will use your default format for tags.",before:p` + --- + tags: [computer, research, computer, Computer] + aliases: + - Title 1 + - Title2 + --- + `,after:p` + --- + tags: [computer, research, Computer] + aliases: + - Title 1 + - Title2 + --- + `,options:{aliasArrayStyle:"multi-line"}}),new y({description:"Dedupe YAML aliases is case sensitive and will use your default format for aliases.",before:p` + --- + tags: [computer, research] + aliases: + - Title 1 + - Title2 + - Title 1 + - Title2 + - Title 3 + --- + `,after:p` + --- + tags: [computer, research] + aliases: + - Title 1 + - Title2 + - Title 3 + --- + `,options:{aliasArrayStyle:"multi-line"}}),new y({description:"Dedupe YAML array keys is case sensitive and will try to preserve the original array format.",before:p` + --- + tags: [computer, research] + aliases: + - Title 1 + - Title2 + arr1: [val, val1, val, val2, Val] + arr2: + - Val + - Val + - val + - val2 + - Val2 + --- + `,after:p` + --- + tags: [computer, research] + aliases: + - Title 1 + - Title2 + arr1: [val, val1, val2, Val] + arr2: + - Val + - val + - val2 + - Val2 + --- + `,options:{aliasArrayStyle:"multi-line"}}),new y({description:"Dedupe YAML respects list of keys to not remove duplicates of for normal arrays (keys to ignore is just `arr2` for this example)",before:p` + --- + tags: [computer, research] + aliases: + - Title 1 + - Title2 + arr1: [val, val1, val, val2, Val] + arr2: + - Val + - Val + - val + - val2 + - Val2 + --- + `,after:p` + --- + tags: [computer, research] + aliases: + - Title 1 + - Title2 + arr1: [val, val1, val2, Val] + arr2: + - Val + - Val + - val + - val2 + - Val2 + --- + `,options:{aliasArrayStyle:"multi-line",ignoreDedupeArrayKeys:["arr2"]}})]}get optionBuilders(){return[new U({OptionsClass:ki,nameKey:"rules.dedupe-yaml-array-values.dedupe-alias-key.name",descriptionKey:"rules.dedupe-yaml-array-values.dedupe-alias-key.description",optionsKey:"dedupeAliasKey"}),new U({OptionsClass:ki,nameKey:"rules.dedupe-yaml-array-values.dedupe-tag-key.name",descriptionKey:"rules.dedupe-yaml-array-values.dedupe-tag-key.description",optionsKey:"dedupeTagKey"}),new U({OptionsClass:ki,nameKey:"rules.dedupe-yaml-array-values.dedupe-array-keys.name",descriptionKey:"rules.dedupe-yaml-array-values.dedupe-array-keys.description",optionsKey:"dedupeArrayKeys"}),new me({OptionsClass:ki,nameKey:"rules.dedupe-yaml-array-values.ignore-keys.name",descriptionKey:"rules.dedupe-yaml-array-values.ignore-keys.description",optionsKey:"ignoreDedupeArrayKeys"})]}};Tr=A([b.register],Tr);var Ws=class{constructor(){this.defaultLanguage=""}},Lr=class extends b{constructor(){super({nameKey:"rules.default-language-for-code-fences.name",descriptionKey:"rules.default-language-for-code-fences.description",type:"Content",ruleIgnoreTypes:[h.yaml,h.math,h.yaml,h.link,h.wikiLink,h.tag]})}get OptionsClass(){return Ws}apply(t,i){return rp(t,i.defaultLanguage)}get exampleBuilders(){return[new y({description:"Add a default language `javascript` to code blocks that do not have a language specified",before:p` + \`\`\` + var temp = 'text'; + // this is a code block + \`\`\` + `,after:p` + \`\`\`javascript + var temp = 'text'; + // this is a code block + \`\`\` + `,options:{defaultLanguage:"javascript"}}),new y({description:"If a code block already has a language specified, do not change it",before:p` + \`\`\`javascript + var temp = 'text'; + // this is a code block + \`\`\` + `,after:p` + \`\`\`javascript + var temp = 'text'; + // this is a code block + \`\`\` + `,options:{defaultLanguage:"shell"}}),new y({description:"Empty string as the default language will not add a language to code blocks",before:p` + \`\`\` + var temp = 'text'; + // this is a code block + \`\`\` + `,after:p` + \`\`\` + var temp = 'text'; + // this is a code block + \`\`\` + `,options:{defaultLanguage:""}})]}get optionBuilders(){return[new $e({OptionsClass:Ws,nameKey:"rules.default-language-for-code-fences.default-language.name",descriptionKey:"rules.default-language-for-code-fences.default-language.description",optionsKey:"defaultLanguage"})]}};Lr=A([b.register],Lr);var Us=class{constructor(){this.style="consistent"}},Er=class extends b{constructor(){super({nameKey:"rules.emphasis-style.name",descriptionKey:"rules.emphasis-style.description",type:"Content",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.link,h.wikiLink,h.tag,h.math,h.inlineMath]})}get OptionsClass(){return Us}apply(t,i){return xs(t,i.style,"emphasis")}get exampleBuilders(){return[new y({description:"Emphasis indicators should use underscores when style is set to 'underscore'",before:p` # Emphasis Cases ${""} *Test emphasis* @@ -423,7 +584,7 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i This is ___nested emphasis_ and ending bold__ ${""} __Test bold__ - `,options:{style:"consistent"}})]}get optionBuilders(){return[new ne({OptionsClass:hs,nameKey:"rules.emphasis-style.style.name",descriptionKey:"rules.emphasis-style.style.description",optionsKey:"style",records:[{value:"consistent",description:"Makes sure the first instance of emphasis is the style that will be used throughout the document"},{value:"asterisk",description:"Makes sure * is the emphasis indicator"},{value:"underscore",description:"Makes sure _ is the emphasis indicator"}]})]}};er=A([w.register],er);var cl=class{},ir=class extends w{constructor(){super({nameKey:"rules.empty-line-around-blockquotes.name",descriptionKey:"rules.empty-line-around-blockquotes.description",type:"Spacing"})}get OptionsClass(){return cl}apply(t,i){return Lu(t)}get exampleBuilders(){return[new y({description:"Blockquotes that start a document do not get an empty line before them.",before:p` + `,options:{style:"consistent"}})]}get optionBuilders(){return[new ne({OptionsClass:Us,nameKey:"rules.emphasis-style.style.name",descriptionKey:"rules.emphasis-style.style.description",optionsKey:"style",records:[{value:"consistent",description:"Makes sure the first instance of emphasis is the style that will be used throughout the document"},{value:"asterisk",description:"Makes sure * is the emphasis indicator"},{value:"underscore",description:"Makes sure _ is the emphasis indicator"}]})]}};Er=A([b.register],Er);var $l=class{},Or=class extends b{constructor(){super({nameKey:"rules.empty-line-around-blockquotes.name",descriptionKey:"rules.empty-line-around-blockquotes.description",type:"Spacing"})}get OptionsClass(){return $l}apply(t,i){return Xu(t)}get exampleBuilders(){return[new y({description:"Blockquotes that start a document do not get an empty line before them.",before:p` > Quote content here > quote content continued # Title here @@ -469,7 +630,7 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i ${""} > > Quote content here > > quote content continued - `})]}get optionBuilders(){return[]}};ir=A([w.register],ir);var dl=class{},tr=class extends w{constructor(){super({nameKey:"rules.empty-line-around-code-fences.name",descriptionKey:"rules.empty-line-around-code-fences.description",type:"Spacing"})}get OptionsClass(){return dl}apply(t,i){return Au(t)}get exampleBuilders(){return[new y({description:"Fenced code blocks that start a document do not get an empty line before them.",before:p` + `})]}get optionBuilders(){return[]}};Or=A([b.register],Or);var Wl=class{},Cr=class extends b{constructor(){super({nameKey:"rules.empty-line-around-code-fences.name",descriptionKey:"rules.empty-line-around-code-fences.description",type:"Spacing"})}get OptionsClass(){return Wl}apply(t,i){return Zu(t)}get exampleBuilders(){return[new y({description:"Fenced code blocks that start a document do not get an empty line before them.",before:p` \`\`\` js var temp = 'text'; // this is a code block @@ -545,7 +706,7 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i \`\`\`\` ${""} \`\`\` - `})]}get optionBuilders(){return[]}};tr=A([w.register],tr);var fs=class{constructor(){this.minimumNumberOfDollarSignsToBeAMathBlock=2}};A([w.noSettingControl()],fs.prototype,"minimumNumberOfDollarSignsToBeAMathBlock",2);var nr=class extends w{constructor(){super({nameKey:"rules.empty-line-around-math-blocks.name",descriptionKey:"rules.empty-line-around-math-blocks.description",type:"Spacing",ruleIgnoreTypes:[f.yaml,f.code]})}get OptionsClass(){return fs}apply(t,i){return Tu(t,i.minimumNumberOfDollarSignsToBeAMathBlock)}get exampleBuilders(){return[new y({description:"Math blocks that start a document do not get an empty line before them.",before:p` + `})]}get optionBuilders(){return[]}};Cr=A([b.register],Cr);var Vs=class{constructor(){this.minimumNumberOfDollarSignsToBeAMathBlock=2}};A([b.noSettingControl()],Vs.prototype,"minimumNumberOfDollarSignsToBeAMathBlock",2);var Mr=class extends b{constructor(){super({nameKey:"rules.empty-line-around-math-blocks.name",descriptionKey:"rules.empty-line-around-math-blocks.description",type:"Spacing",ruleIgnoreTypes:[h.yaml,h.code]})}get OptionsClass(){return Vs}apply(t,i){return Ju(t,i.minimumNumberOfDollarSignsToBeAMathBlock)}get exampleBuilders(){return[new y({description:"Math blocks that start a document do not get an empty line before them.",before:p` $$ \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} $$ @@ -614,7 +775,7 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i > > $$ > > \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} > > $$ - `})]}get optionBuilders(){return[]}};nr=A([w.register],nr);var ul=class{},rr=class extends w{constructor(){super({nameKey:"rules.empty-line-around-tables.name",descriptionKey:"rules.empty-line-around-tables.description",type:"Spacing",ruleIgnoreTypes:[f.yaml,f.code,f.math,f.inlineMath,f.wikiLink,f.link]})}get OptionsClass(){return ul}apply(t,i){return Uu(t)}get exampleBuilders(){return[new y({description:"Tables that start a document do not get an empty line before them.",before:p` + `})]}get optionBuilders(){return[]}};Mr=A([b.register],Mr);var Ul=class{},qr=class extends b{constructor(){super({nameKey:"rules.empty-line-around-tables.name",descriptionKey:"rules.empty-line-around-tables.description",type:"Spacing",ruleIgnoreTypes:[h.yaml,h.code,h.math,h.inlineMath,h.wikiLink,h.link]})}get OptionsClass(){return Ul}apply(t,i){return kp(t)}get exampleBuilders(){return[new y({description:"Tables that start a document do not get an empty line before them.",before:p` | Column 1 | Column 2 | |----------|----------| | foo | bar | @@ -716,8 +877,8 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i > > | foo | bar | blob | > > | baz | qux | trust | > > | quux | quuz | glob | - `})]}get optionBuilders(){return[]}};rr=A([w.register],rr);var ar=class{constructor(){this.defaultEscapeCharacter='"';this.tryToEscapeSingleLineArrays=!1}};A([w.noSettingControl()],ar.prototype,"defaultEscapeCharacter",2);var bt=class extends w{constructor(){super({nameKey:"rules.escape-yaml-special-characters.name",descriptionKey:"rules.escape-yaml-special-characters.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return ar}apply(t,i){return Ae(t,n=>{let r=n.split(` -`),a=r.length;if(a<1)return n;for(let s=0;s<a;s++){let o=r[s].trim(),l=o.indexOf(":"),d=l<0||l+1>=o.length,c=o.startsWith("-"),u=c&&o.length<2;if(d&&u)continue;let m=1;if(!c)m+=l;else if(l!==-1&&s+1<a){let h=r[s],x=h.indexOf("-")+1;for(;x<h.length&&h.charAt(x)===" ";)x++;let b=0,v=r[s+1];for(;b<v.length&&v.charAt(b)===" ";)b++;x<=b&&(m+=l)}let g=o.substring(m).trim();if(g.startsWith("[")){if(i.tryToEscapeSingleLineArrays){if(g.length<3)continue;let h=g.substring(1,g.length-1).split(","),x=h.length;for(let b=0;b<x;b++){let v=h[b].trim();v.startsWith("[")&&(v=v.substring(1).trimStart()),v.endsWith("]")&&(v=v.substring(0,v.length-1).trimEnd()),h[b]=h[b].replace(v,li(v,i.defaultEscapeCharacter,!1,!0))}r[s]=r[s].replace(g,"["+h.join(",")+"]")}continue}r[s]=r[s].replace(g,li(g,i.defaultEscapeCharacter,!1,!0))}return r.join(` + `})]}get optionBuilders(){return[]}};qr=A([b.register],qr);var Ir=class{constructor(){this.defaultEscapeCharacter='"';this.tryToEscapeSingleLineArrays=!1}};A([b.noSettingControl()],Ir.prototype,"defaultEscapeCharacter",2);var _t=class extends b{constructor(){super({nameKey:"rules.escape-yaml-special-characters.name",descriptionKey:"rules.escape-yaml-special-characters.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return Ir}apply(t,i){return ye(t,n=>{let r=n.split(` +`),a=r.length;if(a<1)return n;for(let s=0;s<a;s++){let o=r[s].trim(),l=o.indexOf(":"),c=l<0||l+1>=o.length,d=o.startsWith("-"),u=d&&o.length<2;if(c&&u)continue;let g=1;if(!d)g+=l;else if(l!==-1&&s+1<a){let f=r[s],w=f.indexOf("-")+1;for(;w<f.length&&f.charAt(w)===" ";)w++;let x=0,v=r[s+1];for(;x<v.length&&v.charAt(x)===" ";)x++;w<=x&&(g+=l)}let m=o.substring(g).trim();if(m.startsWith("[")){if(i.tryToEscapeSingleLineArrays){if(m.length<3)continue;let f=m.substring(1,m.length-1).split(","),w=f.length;for(let x=0;x<w;x++){let v=f[x].trim();v.startsWith("[")&&(v=v.substring(1).trimStart()),v.endsWith("]")&&(v=v.substring(0,v.length-1).trimEnd()),f[x]=f[x].replace(v,wi(v,i.defaultEscapeCharacter,!1,!0))}r[s]=r[s].replace(m,"["+f.join(",")+"]")}continue}r[s]=r[s].replace(m,wi(m,i.defaultEscapeCharacter,!1,!0))}return r.join(` `)})}get exampleBuilders(){return[new y({description:"YAML without anything to escape",before:p` --- key: value @@ -784,11 +945,11 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i --- ${""} _Note that escaped commas in a YAML array will be treated as a separator._ - `,options:{tryToEscapeSingleLineArrays:!0}})]}get optionBuilders(){return[new U({OptionsClass:ar,nameKey:"rules.escape-yaml-special-characters.try-to-escape-single-line-arrays.name",descriptionKey:"rules.escape-yaml-special-characters.try-to-escape-single-line-arrays.description",optionsKey:"tryToEscapeSingleLineArrays"})]}};bt=A([w.register],bt);var ys=class{};A([w.noSettingControl()],ys.prototype,"fileName",2);var sr=class extends w{constructor(){super({nameKey:"rules.file-name-heading.name",descriptionKey:"rules.file-name-heading.description",type:"Heading",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return ys}apply(t,i){if(t.match(/^#\s.*/m))return t;let r=i.fileName,a=t.indexOf(` + `,options:{tryToEscapeSingleLineArrays:!0}})]}get optionBuilders(){return[new U({OptionsClass:Ir,nameKey:"rules.escape-yaml-special-characters.try-to-escape-single-line-arrays.name",descriptionKey:"rules.escape-yaml-special-characters.try-to-escape-single-line-arrays.description",optionsKey:"tryToEscapeSingleLineArrays"})]}};_t=A([b.register],_t);var Gs=class{};A([b.noSettingControl()],Gs.prototype,"fileName",2);var Br=class extends b{constructor(){super({nameKey:"rules.file-name-heading.name",descriptionKey:"rules.file-name-heading.description",type:"Heading",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.link,h.wikiLink,h.tag]})}get OptionsClass(){return Gs}apply(t,i){if(t.match(/^#\s.*/m))return t;let r=i.fileName,a=t.indexOf(` ---`);a=a==-1||!t.startsWith(`--- `)?0:a+5;let s=`# ${r} `;return t.length<a&&(s=` -`+s),st(t,a,s)}get exampleBuilders(){return[new y({description:"Inserts an H1 heading",before:p` +`+s),kt(t,a,s)}get exampleBuilders(){return[new y({description:"Inserts an H1 heading",before:p` This is a line of text `,after:p` # File Name @@ -804,7 +965,7 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i --- # File Name This is a line of text - `,options:{fileName:"File Name"}})]}get optionBuilders(){return[]}};sr=A([w.register],sr);var pl=class{},or=class extends w{constructor(){super({nameKey:"rules.footnote-after-punctuation.name",descriptionKey:"rules.footnote-after-punctuation.description",type:"Footnote",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.yaml,f.link,f.wikiLink,f.tag,f.footnoteAtStartOfLine,f.footnoteAfterATask]})}get OptionsClass(){return pl}apply(t,i){return t.replace(/(\[\^\w+\]) ?([,.;!:?])/gm,"$2$1")}get exampleBuilders(){return[new y({description:"Placing footnotes after punctuation.",before:p` + `,options:{fileName:"File Name"}})]}get optionBuilders(){return[]}};Br=A([b.register],Br);var Vl=class{},_r=class extends b{constructor(){super({nameKey:"rules.footnote-after-punctuation.name",descriptionKey:"rules.footnote-after-punctuation.description",type:"Footnote",ruleIgnoreTypes:[h.code,h.inlineCode,h.math,h.yaml,h.link,h.wikiLink,h.tag,h.footnoteAtStartOfLine,h.footnoteAfterATask]})}get OptionsClass(){return Vl}apply(t,i){return t.replace(/(\[\^\w+\]) ?([,.;!:?])/gm,"$2$1")}get exampleBuilders(){return[new y({description:"Placing footnotes after punctuation.",before:p` Lorem[^1]. Ipsum[^2], doletes. `,after:p` Lorem.[^1] Ipsum,[^2] doletes. @@ -816,8 +977,8 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i - [ ] [^1]: This is a footnote and a task. - [ ] This is a footnote and a task that gets swapped with the punctuation![^2] [^2]: This footnote got modified - `})]}get optionBuilders(){return[]}};or=A([w.register],or);var lr=class{constructor(){this.defaultEscapeCharacter='"';this.forceYamlEscape=[]}};A([w.noSettingControl()],lr.prototype,"defaultEscapeCharacter",2);var vt=class extends w{constructor(){super({nameKey:"rules.force-yaml-escape.name",descriptionKey:"rules.force-yaml-escape.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return lr}apply(t,i){return Ae(t,n=>{for(let r of i.forceYamlEscape){let a=Ce(n,r);if(a!=null){if(a.includes(` -`)||a.startsWith(" [")||nn(a))continue;a=li(a,i.defaultEscapeCharacter,!0),n=Te(n,r," "+a)}}return n})}get exampleBuilders(){return[new y({description:"YAML without anything to escape",before:p` + `})]}get optionBuilders(){return[]}};_r=A([b.register],_r);var Fr=class{constructor(){this.defaultEscapeCharacter='"';this.forceYamlEscape=[]}};A([b.noSettingControl()],Fr.prototype,"defaultEscapeCharacter",2);var Ft=class extends b{constructor(){super({nameKey:"rules.force-yaml-escape.name",descriptionKey:"rules.force-yaml-escape.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return Fr}apply(t,i){return ye(t,n=>{for(let r of i.forceYamlEscape){let a=ue(n,r);if(a!=null){if(a.includes(` +`)||a.startsWith(" [")||Sn(a))continue;a=wi(a,i.defaultEscapeCharacter,!0),n=se(n,r," "+a)}}return n})}get exampleBuilders(){return[new y({description:"YAML without anything to escape",before:p` --- key: value otherKey: [] @@ -845,7 +1006,7 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i --- ${""} _Note that the force YAML key option should not be used with arrays._ - `,options:{forceYamlEscape:["key","title","bool"],defaultEscapeCharacter:'"'}})]}get optionBuilders(){return[new be({OptionsClass:lr,nameKey:"rules.force-yaml-escape.force-yaml-escape-keys.name",descriptionKey:"rules.force-yaml-escape.force-yaml-escape-keys.description",optionsKey:"forceYamlEscape"})]}};vt=A([w.register],vt);var ml=class{},xt=class extends w{constructor(){super({nameKey:"rules.format-tags-in-yaml.name",descriptionKey:"rules.format-tags-in-yaml.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return ml}apply(t,i){return Ae(t,n=>n.replace(new RegExp(`\\n(${Hn}|${tl}):(.*?)(?=\\n(?:[A-Za-z-]+?:|---))`,"s"),function(r){return r.replaceAll("#","")}))}get exampleBuilders(){return[new y({description:"Format Tags in YAML frontmatter",before:p` + `,options:{forceYamlEscape:["key","title","bool"],defaultEscapeCharacter:'"'}})]}get optionBuilders(){return[new me({OptionsClass:Fr,nameKey:"rules.force-yaml-escape.force-yaml-escape-keys.name",descriptionKey:"rules.force-yaml-escape.force-yaml-escape-keys.description",optionsKey:"forceYamlEscape"})]}};Ft=A([b.register],Ft);var Gl=class{},Rt=class extends b{constructor(){super({nameKey:"rules.format-tags-in-yaml.name",descriptionKey:"rules.format-tags-in-yaml.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return Gl}apply(t,i){return ye(t,n=>n.replace(new RegExp(`\\n(${yr}|${Rl}):(.*?)(?=\\n(?:[A-Za-z-]+?:|---))`,"s"),function(r){return r.replaceAll("#","")}))}get exampleBuilders(){return[new y({description:"Format Tags in YAML frontmatter",before:p` --- tags: #one #two #three #nested/four/five --- @@ -881,9 +1042,9 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i - tag1 - tag2 --- - `})]}get optionBuilders(){return[]}};xt=A([w.register],xt);var Ze=class{constructor(){this.aliasArrayStyle="single-line";this.formatAliasKey=!0;this.tagArrayStyle="single-line";this.formatTagKey=!0;this.defaultArrayStyle="single-line";this.formatArrayKeys=!0;this.forceSingleLineArrayStyle=[];this.forceMultiLineArrayStyle=[];this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};A([w.noSettingControl()],Ze.prototype,"aliasArrayStyle",2),A([w.noSettingControl()],Ze.prototype,"tagArrayStyle",2),A([w.noSettingControl()],Ze.prototype,"defaultEscapeCharacter",2),A([w.noSettingControl()],Ze.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var cr=class extends w{constructor(){super({nameKey:"rules.format-yaml-array.name",descriptionKey:"rules.format-yaml-array.description",type:"YAML"})}get OptionsClass(){return Ze}apply(t,i){return Ae(t,n=>{let r=Mi(n.replace(`--- + `})]}get optionBuilders(){return[]}};Rt=A([b.register],Rt);var oi=class{constructor(){this.aliasArrayStyle="single-line";this.formatAliasKey=!0;this.tagArrayStyle="single-line";this.formatTagKey=!0;this.defaultArrayStyle="single-line";this.formatArrayKeys=!0;this.forceSingleLineArrayStyle=[];this.forceMultiLineArrayStyle=[];this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};A([b.noSettingControl()],oi.prototype,"aliasArrayStyle",2),A([b.noSettingControl()],oi.prototype,"tagArrayStyle",2),A([b.noSettingControl()],oi.prototype,"defaultEscapeCharacter",2),A([b.noSettingControl()],oi.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var Rr=class extends b{constructor(){super({nameKey:"rules.format-yaml-array.name",descriptionKey:"rules.format-yaml-array.description",type:"YAML"})}get OptionsClass(){return oi}apply(t,i){return ye(t,n=>{let r=si(n.replace(`--- `,"").replace(` ----`,""));if(!r)return n;for(let a of Wn)if(i.formatAliasKey&&Object.keys(r).includes(a)){n=Te(n,a,Qe(Xa(vi(Ce(n,a))),i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0));break}for(let a of $n)if(i.formatTagKey&&Object.keys(r).includes(a)){n=Te(n,a,Qe(Ja(vi(Ce(n,a))),i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays));break}if(i.formatArrayKeys){let a=[...Wn,...$n,...i.forceMultiLineArrayStyle,...i.forceSingleLineArrayStyle];for(let s of Object.keys(r))a.includes(s)||!Array.isArray(r[s])||r[s].length!==0&&typeof r[s][0]=="object"&&r[s][0]!==null||(n=Te(n,s,Qe(vi(Ce(n,s)),i.defaultArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays)))}for(let a of i.forceSingleLineArrayStyle)Object.keys(r).includes(a)&&(n=Te(n,a,Qe(vi(Ce(n,a)),"single-line",i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays)));for(let a of i.forceMultiLineArrayStyle)Object.keys(r).includes(a)&&(n=Te(n,a,Qe(vi(Ce(n,a)),"multi-line",i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays)));return n})}get exampleBuilders(){return[new y({description:"Format tags as a single-line array delimited by spaces and aliases as a multi-line array and format the key `test` to be a single-line array",before:p` +---`,""));if(!r)return n;for(let a of xi)if(i.formatAliasKey&&Object.keys(r).includes(a)){n=se(n,a,we(at(Ie(ue(n,a))),i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0));break}for(let a of vi)if(i.formatTagKey&&Object.keys(r).includes(a)){n=se(n,a,we(rt(Ie(ue(n,a))),i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays));break}if(i.formatArrayKeys){let a=[...xi,...vi,...i.forceMultiLineArrayStyle,...i.forceSingleLineArrayStyle];for(let s of Object.keys(r))a.includes(s)||!Array.isArray(r[s])||r[s].length!==0&&typeof r[s][0]=="object"&&r[s][0]!==null||(n=se(n,s,we(Ie(ue(n,s)),i.defaultArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays)))}for(let a of i.forceSingleLineArrayStyle)Object.keys(r).includes(a)&&(n=se(n,a,we(Ie(ue(n,a)),"single-line",i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays)));for(let a of i.forceMultiLineArrayStyle)Object.keys(r).includes(a)&&(n=se(n,a,we(Ie(ue(n,a)),"multi-line",i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays)));return n})}get exampleBuilders(){return[new y({description:"Format tags as a single-line array delimited by spaces and aliases as a multi-line array and format the key `test` to be a single-line array",before:p` --- tags: - computer @@ -941,7 +1102,7 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i filename: file.md isPublic: true --- - `,options:{formatArrayKeys:!0,defaultArrayStyle:"single-line"}})]}get optionBuilders(){return[new U({OptionsClass:Ze,nameKey:"rules.format-yaml-array.alias-key.name",descriptionKey:"rules.format-yaml-array.alias-key.description",optionsKey:"formatAliasKey"}),new U({OptionsClass:Ze,nameKey:"rules.format-yaml-array.tag-key.name",descriptionKey:"rules.format-yaml-array.tag-key.description",optionsKey:"formatTagKey"}),new ne({OptionsClass:Ze,nameKey:"rules.format-yaml-array.default-array-style.name",descriptionKey:"rules.format-yaml-array.default-array-style.description",optionsKey:"defaultArrayStyle",records:[{value:"multi-line",description:"```key:\\n - value```"},{value:"single-line",description:"```key: [value]```"}]}),new U({OptionsClass:Ze,nameKey:"rules.format-yaml-array.default-array-keys.name",descriptionKey:"rules.format-yaml-array.default-array-keys.description",optionsKey:"formatArrayKeys"}),new be({OptionsClass:Ze,nameKey:"rules.format-yaml-array.force-single-line-array-style.name",descriptionKey:"rules.format-yaml-array.force-single-line-array-style.description",optionsKey:"forceSingleLineArrayStyle"}),new be({OptionsClass:Ze,nameKey:"rules.format-yaml-array.force-multi-line-array-style.name",descriptionKey:"rules.format-yaml-array.force-multi-line-array-style.description",optionsKey:"forceMultiLineArrayStyle"})]}};cr=A([w.register],cr);var vs=class{constructor(){this.startAtH2=!1}},dr=class extends w{constructor(){super({nameKey:"rules.header-increment.name",descriptionKey:"rules.header-increment.description",type:"Heading",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return vs}apply(t,i){let n=0,r=i.startAtH2?2:1,a=[],s=[0,0,0,0,0,0],o=s.length;return t.replace(Pi,(l,d="",c="",u="",m="",g="")=>{let h=c.length;if(h=h<=o?h:o,s[h-1]>=0&&h<n){let x=s.length;for(;a.length!==0&&h<=a[a.length-1];)x=a.pop();a.length===0?x=0:x--;for(let b=s.length-1;b>=x;b--)s[b]=0}if(s[h-1]<=0){let x=n,b=a.length+r;b=b<=o?b:o;for(let v=x;v<h-1;v++)s[v]=b-1;a.push(h),s[h-1]=b}return n=h,d+"#".repeat(s[h-1])+u+m+g})}get exampleBuilders(){return[new y({description:"Heading levels are decremented as needed",before:p` + `,options:{formatArrayKeys:!0,defaultArrayStyle:"single-line"}})]}get optionBuilders(){return[new U({OptionsClass:oi,nameKey:"rules.format-yaml-array.alias-key.name",descriptionKey:"rules.format-yaml-array.alias-key.description",optionsKey:"formatAliasKey"}),new U({OptionsClass:oi,nameKey:"rules.format-yaml-array.tag-key.name",descriptionKey:"rules.format-yaml-array.tag-key.description",optionsKey:"formatTagKey"}),new ne({OptionsClass:oi,nameKey:"rules.format-yaml-array.default-array-style.name",descriptionKey:"rules.format-yaml-array.default-array-style.description",optionsKey:"defaultArrayStyle",records:[{value:"multi-line",description:"```key:\\n - value```"},{value:"single-line",description:"```key: [value]```"}]}),new U({OptionsClass:oi,nameKey:"rules.format-yaml-array.default-array-keys.name",descriptionKey:"rules.format-yaml-array.default-array-keys.description",optionsKey:"formatArrayKeys"}),new me({OptionsClass:oi,nameKey:"rules.format-yaml-array.force-single-line-array-style.name",descriptionKey:"rules.format-yaml-array.force-single-line-array-style.description",optionsKey:"forceSingleLineArrayStyle"}),new me({OptionsClass:oi,nameKey:"rules.format-yaml-array.force-multi-line-array-style.name",descriptionKey:"rules.format-yaml-array.force-multi-line-array-style.description",optionsKey:"forceMultiLineArrayStyle"})]}};Rr=A([b.register],Rr);var Qs=class{constructor(){this.startAtH2=!1}},Dr=class extends b{constructor(){super({nameKey:"rules.header-increment.name",descriptionKey:"rules.header-increment.description",type:"Heading",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.link,h.wikiLink,h.tag]})}get OptionsClass(){return Qs}apply(t,i){let n=0,r=i.startAtH2?2:1,a=[],s=[0,0,0,0,0,0],o=s.length;return t.replace(nt,(l,c="",d="",u="",g="",m="")=>{let f=d.length;if(f=f<=o?f:o,s[f-1]>=0&&f<n){let w=s.length;for(;a.length!==0&&f<=a[a.length-1];)w=a.pop();a.length===0?w=0:w--;for(let x=s.length-1;x>=w;x--)s[x]=0}if(s[f-1]<=0){let w=n,x=a.length+r;x=x<=o?x:o;for(let v=w;v<f-1;v++)s[v]=x-1;a.push(f),s[f-1]=x}return n=f,c+"#".repeat(s[f-1])+u+g+m})}get exampleBuilders(){return[new y({description:"Heading levels are decremented as needed",before:p` # H1 ### H3 ### H3 @@ -1011,7 +1172,7 @@ ${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted i ### H6 ## H1 ### H2 - `,options:{startAtH2:!0}})]}get optionBuilders(){return[new U({OptionsClass:vs,nameKey:"rules.header-increment.start-at-h2.name",descriptionKey:"rules.header-increment.start-at-h2.description",optionsKey:"startAtH2"})]}};dr=A([w.register],dr);var pr=class{constructor(){this.bottom=!0;this.emptyLineAfterYaml=!0}},ur=class extends w{constructor(){super({nameKey:"rules.heading-blank-lines.name",descriptionKey:"rules.heading-blank-lines.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink]})}get OptionsClass(){return pr}apply(t,i){return i.bottom?(t=t.replace(/^(#+\s.*)/gm,` + `,options:{startAtH2:!0}})]}get optionBuilders(){return[new U({OptionsClass:Qs,nameKey:"rules.header-increment.start-at-h2.name",descriptionKey:"rules.header-increment.start-at-h2.description",optionsKey:"startAtH2"})]}};Dr=A([b.register],Dr);var Kr=class{constructor(){this.bottom=!0;this.emptyLineAfterYaml=!0}},Nr=class extends b{constructor(){super({nameKey:"rules.heading-blank-lines.name",descriptionKey:"rules.heading-blank-lines.description",type:"Spacing",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.link,h.wikiLink]})}get OptionsClass(){return Kr}apply(t,i){return i.bottom?(t=t.replace(/^(#+\s.*)/gm,` $1 @@ -1019,9 +1180,9 @@ $1 $1`),t=t.replace(/(^#+\s.*)\n+/gm,`$1 -`)):t=t.replace(/^([^#\n]+)\n+(#+\s.*)/gm,`$1 +`)):t=t.replace(/^([^#\n][^\n]+)\n+(#+\s.*)/gm,`$1 -$2`),t=t.replace(/^\n+(#+\s.*)/,"$1"),t=t.replace(/(#+\s.*)\n+$/,"$1"),i.emptyLineAfterYaml||(t=t.replace(new RegExp("("+Ge.source+")\\n+(#+\\s.*)"),`$1 +$2`),t=t.replace(/^\n+(#+\s.*)/,"$1"),t=t.replace(/(#+\s.*)\n+$/,"$1"),i.emptyLineAfterYaml||(t=t.replace(new RegExp("("+Qe.source+")\\n+(#+\\s.*)"),`$1 $5`)),t}get exampleBuilders(){return[new y({description:"Headings should be surrounded by blank lines",before:p` # H1 ## H2 @@ -1068,7 +1229,7 @@ $5`)),t}get exampleBuilders(){return[new y({description:"Headings should be surr # Header Paragraph here... - `,options:{bottom:!0,emptyLineAfterYaml:!1}})]}get optionBuilders(){return[new U({OptionsClass:pr,nameKey:"rules.heading-blank-lines.bottom.name",descriptionKey:"rules.heading-blank-lines.bottom.description",optionsKey:"bottom"}),new U({OptionsClass:pr,nameKey:"rules.heading-blank-lines.empty-line-after-yaml.name",descriptionKey:"rules.heading-blank-lines.empty-line-after-yaml.description",optionsKey:"emptyLineAfterYaml"})]}};ur=A([w.register],ur);var gl=class{},mr=class extends w{constructor(){super({nameKey:"rules.headings-start-line.name",descriptionKey:"rules.headings-start-line.description",type:"Heading",ruleIgnoreTypes:[f.code,f.math,f.yaml]})}get OptionsClass(){return gl}apply(t,i){return t.replaceAll(Pi,n=>n.trimStart())}get exampleBuilders(){return[new y({description:"Removes spaces prior to a heading",before:p` + `,options:{bottom:!0,emptyLineAfterYaml:!1}})]}get optionBuilders(){return[new U({OptionsClass:Kr,nameKey:"rules.heading-blank-lines.bottom.name",descriptionKey:"rules.heading-blank-lines.bottom.description",optionsKey:"bottom"}),new U({OptionsClass:Kr,nameKey:"rules.heading-blank-lines.empty-line-after-yaml.name",descriptionKey:"rules.heading-blank-lines.empty-line-after-yaml.description",optionsKey:"emptyLineAfterYaml"})]}};Nr=A([b.register],Nr);var Ql=class{},Yr=class extends b{constructor(){super({nameKey:"rules.headings-start-line.name",descriptionKey:"rules.headings-start-line.description",type:"Heading",ruleIgnoreTypes:[h.code,h.math,h.yaml]})}get OptionsClass(){return Ql}apply(t,i){return t.replaceAll(nt,n=>n.trimStart())}get exampleBuilders(){return[new y({description:"Removes spaces prior to a heading",before:p` ${""} ## Other heading preceded by 2 spaces ## _Note that if the spacing is enough for the header to be considered to be part of a codeblock it will not be affected by this rule._ `,after:p` @@ -1080,7 +1241,7 @@ $5`)),t}get exampleBuilders(){return[new y({description:"Headings should be surr `,after:p` ${""} #test # Heading & - `})]}get optionBuilders(){return[]}};mr=A([w.register],mr);var xs=class{constructor(){this.textToInsert=["aliases: ","tags: "]}},gr=class extends w{constructor(){super({nameKey:"rules.insert-yaml-attributes.name",descriptionKey:"rules.insert-yaml-attributes.description",type:"YAML"})}get OptionsClass(){return xs}apply(t,i){return t=bi(t),Ae(t,n=>{let r=i.textToInsert.reverse(),a=Mi(n.match(Ge)[1]);for(let s of r){let o=s.split(":")[0];Object.prototype.hasOwnProperty.call(a,o)||(n=n.replace(/^---\n/,Ke(`--- + `})]}get optionBuilders(){return[]}};Yr=A([b.register],Yr);var Zs=class{constructor(){this.textToInsert=["aliases: ","tags: "]}},jr=class extends b{constructor(){super({nameKey:"rules.insert-yaml-attributes.name",descriptionKey:"rules.insert-yaml-attributes.description",type:"YAML"})}get OptionsClass(){return Zs}apply(t,i){return t=Oi(t),ye(t,n=>{let r=i.textToInsert.reverse(),a=si(n.match(Qe)[1]);for(let s of r){let o=s.split(":")[0];Object.prototype.hasOwnProperty.call(a,o)||(n=n.replace(/^---\n/,Ze(`--- ${s} `)))}return n})}get exampleBuilders(){return[new y({description:"Insert static lines into YAML frontmatter. Text to insert: `aliases:\ntags: doc\nanimal: dog`",before:p` --- @@ -1092,7 +1253,7 @@ ${s} tags: doc animal: cat --- - `,options:{textToInsert:["aliases:","tags: doc","animal: dog"]}})]}get optionBuilders(){return[new be({OptionsClass:xs,nameKey:"rules.insert-yaml-attributes.text-to-insert.name",descriptionKey:"rules.insert-yaml-attributes.text-to-insert.description",optionsKey:"textToInsert"})]}};gr=A([w.register],gr);var hl=class{},hr=class extends w{constructor(){super({nameKey:"rules.line-break-at-document-end.name",descriptionKey:"rules.line-break-at-document-end.description",type:"Spacing"})}get OptionsClass(){return hl}apply(t,i){return t=t.replace(/\n+$/g,""),t+=` + `,options:{textToInsert:["aliases:","tags: doc","animal: dog"]}})]}get optionBuilders(){return[new me({OptionsClass:Zs,nameKey:"rules.insert-yaml-attributes.text-to-insert.name",descriptionKey:"rules.insert-yaml-attributes.text-to-insert.description",optionsKey:"textToInsert"})]}};jr=A([b.register],jr);var Zl=class{},Pr=class extends b{constructor(){super({nameKey:"rules.line-break-at-document-end.name",descriptionKey:"rules.line-break-at-document-end.description",type:"Spacing"})}get OptionsClass(){return Zl}apply(t,i){return t=t.replace(/\n+$/g,""),t+=` `,t}get exampleBuilders(){return[new y({description:"Appending a line break to the end of the document.",before:p` Lorem ipsum dolor sit amet, consectetur adipiscing elit. `,after:p` @@ -1106,7 +1267,7 @@ ${s} `,after:p` Lorem ipsum dolor sit amet, consectetur adipiscing elit. ${""} - `})]}get optionBuilders(){return[]}};hr=A([w.register],hr);var fl=class{},fr=class extends w{constructor(){super({nameKey:"rules.move-footnotes-to-the-bottom.name",descriptionKey:"rules.move-footnotes-to-the-bottom.description",type:"Footnote",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.yaml]})}get OptionsClass(){return fl}apply(t,i){return yu(t)}get exampleBuilders(){return[new y({description:"Moving footnotes to the bottom",before:p` + `})]}get optionBuilders(){return[]}};Pr=A([b.register],Pr);var Jl=class{},Hr=class extends b{constructor(){super({nameKey:"rules.move-footnotes-to-the-bottom.name",descriptionKey:"rules.move-footnotes-to-the-bottom.description",type:"Footnote",ruleIgnoreTypes:[h.code,h.inlineCode,h.math,h.yaml]})}get OptionsClass(){return Jl}apply(t,i){return Hu(t)}get exampleBuilders(){return[new y({description:"Moving footnotes to the bottom",before:p` Lorem ipsum, consectetur adipiscing elit. [^1] Donec dictum turpis quis ipsum pellentesque. ${""} [^1]: first footnote @@ -1123,7 +1284,7 @@ ${s} ${""} [^1]: first footnote [^2]: second footnote - `})]}get optionBuilders(){return[]}};fr=A([w.register],fr);var ws=class{constructor(){this.minimumNumberOfDollarSignsToBeAMathBlock=2}};A([w.noSettingControl()],ws.prototype,"minimumNumberOfDollarSignsToBeAMathBlock",2);var wt=class extends w{constructor(){super({nameKey:"rules.move-math-block-indicators-to-their-own-line.name",descriptionKey:"rules.move-math-block-indicators-to-their-own-line.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.inlineCode],hasSpecialExecutionOrder:!0})}get OptionsClass(){return ws}apply(t,i){return Cu(t,i.minimumNumberOfDollarSignsToBeAMathBlock)}get exampleBuilders(){return[new y({description:"Moving math block indicator to its own line when `Number of Dollar Signs to Indicate a Math Block` = 2",before:p` + `})]}get optionBuilders(){return[]}};Hr=A([b.register],Hr);var Js=class{constructor(){this.minimumNumberOfDollarSignsToBeAMathBlock=2}};A([b.noSettingControl()],Js.prototype,"minimumNumberOfDollarSignsToBeAMathBlock",2);var Dt=class extends b{constructor(){super({nameKey:"rules.move-math-block-indicators-to-their-own-line.name",descriptionKey:"rules.move-math-block-indicators-to-their-own-line.description",type:"Spacing",ruleIgnoreTypes:[h.code,h.inlineCode],hasSpecialExecutionOrder:!0})}get OptionsClass(){return Js}apply(t,i){return tp(t,i.minimumNumberOfDollarSignsToBeAMathBlock)}get exampleBuilders(){return[new y({description:"Moving math block indicator to its own line when `Number of Dollar Signs to Indicate a Math Block` = 2",before:p` This is left alone: $$ \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} @@ -1153,9 +1314,9 @@ ${s} $$ \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} $$ - `})]}get optionBuilders(){return[]}};wt=A([w.register],wt);var Vi=class{constructor(){this.tagArrayStyle="single-line";this.howToHandleExistingTags="Nothing";this.tagsToIgnore=[];this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};A([w.noSettingControl()],Vi.prototype,"tagArrayStyle",2),A([w.noSettingControl()],Vi.prototype,"defaultEscapeCharacter",2),A([w.noSettingControl()],Vi.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var yr=class extends w{constructor(){super({nameKey:"rules.move-tags-to-yaml.name",descriptionKey:"rules.move-tags-to-yaml.description",type:"YAML",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.html,f.wikiLink,f.link]})}get OptionsClass(){return Vi}apply(t,i){let n;return we([f.yaml],t,r=>(n=Gu(r),r)),n.length===0||(t=bi(t),t=Ae(t,r=>{r=r.replace(`--- -`,"").replace("---","");let a=[],s=Hn;for(let d of $n){let c=Ce(r,d);if(c!=null){a=Ja(vi(c)),s=d;break}}let o=new Set;if(typeof a=="string")o.add(a),a=[a];else if(a!=null)for(let d of a)o.add(d);else a=[];for(let d of n){let c=d.trim().substring(1);!o.has(c)&&!i.tagsToIgnore.includes(c)&&(o.add(c),a.push(c))}return`--- -${Te(r,s,Qe(a,i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays))}---`}),t=we([f.yaml],t,r=>(i.howToHandleExistingTags!=="Nothing"&&(r=r.replace(jn,a=>{let s=a.indexOf("#"),o=a.substring(s+1);return i.tagsToIgnore.includes(o)?a:i.howToHandleExistingTags==="Remove hashtag"?a.substring(0,s)+o:""})),r)),t=t.replace(/(\n---)( |\t)+/,"$1")),t}get exampleBuilders(){return[new y({description:"Move tags from body to YAML with `Tags to ignore = 'ignored-tag'`",before:p` + `})]}get optionBuilders(){return[]}};Dt=A([b.register],Dt);var ct=class{constructor(){this.tagArrayStyle="single-line";this.howToHandleExistingTags="Nothing";this.tagsToIgnore=[];this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};A([b.noSettingControl()],ct.prototype,"tagArrayStyle",2),A([b.noSettingControl()],ct.prototype,"defaultEscapeCharacter",2),A([b.noSettingControl()],ct.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var $r=class extends b{constructor(){super({nameKey:"rules.move-tags-to-yaml.name",descriptionKey:"rules.move-tags-to-yaml.description",type:"YAML",ruleIgnoreTypes:[h.code,h.inlineCode,h.math,h.html,h.wikiLink,h.link]})}get OptionsClass(){return ct}apply(t,i){let n;return Le([h.yaml],t,r=>(n=Sp(r),r)),n.length===0||(t=Oi(t),t=ye(t,r=>{r=r.replace(`--- +`,"").replace("---","");let a=[],s=yr;for(let c of vi){let d=ue(r,c);if(d!=null){a=rt(Ie(d)),s=c;break}}let o=new Set;if(typeof a=="string")o.add(a),a=[a];else if(a!=null)for(let c of a)o.add(c);else a=[];for(let c of n){let d=c.trim().substring(1);!o.has(d)&&!i.tagsToIgnore.includes(d)&&(o.add(d),a.push(d))}return`--- +${se(r,s,we(a,i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays))}---`}),t=Le([h.yaml],t,r=>(i.howToHandleExistingTags!=="Nothing"&&(r=r.replace(mr,a=>{let s=a.indexOf("#"),o=a.substring(s+1);return i.tagsToIgnore.includes(o)?a:i.howToHandleExistingTags==="Remove hashtag"?a.substring(0,s)+o:""})),r)),t=t.replace(/(\n---)( |\t)+/,"$1")),t}get exampleBuilders(){return[new y({description:"Move tags from body to YAML with `Tags to ignore = 'ignored-tag'`",before:p` Text has to do with #test and #markdown ${""} #test content here @@ -1216,7 +1377,7 @@ ${Te(r,s,Qe(a,i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscape tags: [test, tag2, tags, warning] --- This document will have removed and spacing around tags is left alone except for the space prior to the hashtag - `,options:{howToHandleExistingTags:"Remove whole tag"}})]}get optionBuilders(){return[new ne({OptionsClass:Vi,nameKey:"rules.move-tags-to-yaml.how-to-handle-existing-tags.name",descriptionKey:"rules.move-tags-to-yaml.how-to-handle-existing-tags.description",optionsKey:"howToHandleExistingTags",records:[{value:"Nothing",description:"Leaves tags in the body of the file alone"},{value:"Remove hashtag",description:"Removes `#` from tags in content body after moving them to the YAML frontmatter"},{value:"Remove whole tag",description:"Removes the whole tag in content body after moving them to the YAML frontmatter. _Note that this removes the first space prior to the tag as well_"}]}),new be({OptionsClass:Vi,nameKey:"rules.move-tags-to-yaml.tags-to-ignore.name",descriptionKey:"rules.move-tags-to-yaml.tags-to-ignore.description",optionsKey:"tagsToIgnore"})]}};yr=A([w.register],yr);var zs=class{constructor(){this.noBareURIs=!1}},ks="'\"\u2018\u2019\u201C\u201D`[]",zb=["http","ftp","https","smtp"],br=class extends w{constructor(){super({nameKey:"rules.no-bare-urls.name",descriptionKey:"rules.no-bare-urls.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag,f.image,f.inlineCode,f.anchorTag,f.html]})}get OptionsClass(){return zs}apply(t,i){let n=t.match(Jt);if(n&&(t=this.handleMatches(t,n,!1)),i.noBareURIs){let r=t.match(Nu);r&&(t=this.handleMatches(t,r,!0))}return t}handleMatches(t,i,n){let r=0,a=i.length;for(let s=0;s<a;s++){let o=i[s],l=t.indexOf(o,r),d=l+o.length;o.charAt(0)==="<"&&(o=o.substring(1),l++),o.charAt(o.length-1)===">"&&(o=o.substring(0,o.length-1),d--);let c=l===0?void 0:t.charAt(l-1),u=d>=t.length?void 0:t.charAt(d),m=Ut(o,"(");if(m!=0&&m!=Ut(o,")")&&u==")"?(o+=u,d++,u=d>=t.length?void 0:t.charAt(d)):m==0&&o.endsWith(")")&&(u=")",d--,o=o.substring(0,o.length-1)),this.skipMatch(c,u,o,n)){r=l+o.length;continue}if(c!=null&&c==="<"&&u!=null&&u===">"){let g=l-1;for(;g>0&&t.charAt(g-1)==="<";)g--;let h=d;for(;h<t.length-1&&t.charAt(h+1)===">";)h++;t=pe(t,g,h+1,"<"+o+">"),r=l+o.length;continue}t=pe(t,l,l+o.length,"<"+o+">"),r=l+o.length+2}return t}skipMatch(t,i,n,r){let a=t!=null&&ks.includes(t)||ks.includes(n.charAt(0)),s=i!=null&&ks.includes(i)||ks.includes(n.charAt(n.length-1));return a&&s?!0:r?zb.includes(n.substring(0,n.indexOf(":"))):!1}get exampleBuilders(){return[new y({description:"Make sure that links are inside of angle brackets when not in single quotes('), double quotes(\"), or backticks(`)",before:p` + `,options:{howToHandleExistingTags:"Remove whole tag"}})]}get optionBuilders(){return[new ne({OptionsClass:ct,nameKey:"rules.move-tags-to-yaml.how-to-handle-existing-tags.name",descriptionKey:"rules.move-tags-to-yaml.how-to-handle-existing-tags.description",optionsKey:"howToHandleExistingTags",records:[{value:"Nothing",description:"Leaves tags in the body of the file alone"},{value:"Remove hashtag",description:"Removes `#` from tags in content body after moving them to the YAML frontmatter"},{value:"Remove whole tag",description:"Removes the whole tag in content body after moving them to the YAML frontmatter. _Note that this removes the first space prior to the tag as well_"}]}),new me({OptionsClass:ct,nameKey:"rules.move-tags-to-yaml.tags-to-ignore.name",descriptionKey:"rules.move-tags-to-yaml.tags-to-ignore.description",optionsKey:"tagsToIgnore"})]}};$r=A([b.register],$r);var eo=class{constructor(){this.noBareURIs=!1}},Xs="'\"\u2018\u2019\u201C\u201D`[]",gv=["http","ftp","https","smtp"],Wr=class extends b{constructor(){super({nameKey:"rules.no-bare-urls.name",descriptionKey:"rules.no-bare-urls.description",type:"Content",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.link,h.wikiLink,h.tag,h.image,h.inlineCode,h.anchorTag,h.html]})}get OptionsClass(){return eo}apply(t,i){let n=t.match(xn);if(n&&(t=this.handleMatches(t,n,!1)),i.noBareURIs){let r=t.match(mp);r&&(t=this.handleMatches(t,r,!0))}return t}handleMatches(t,i,n){let r=0,a=i.length;for(let s=0;s<a;s++){let o=i[s],l=t.indexOf(o,r),c=l+o.length;o.charAt(0)==="<"&&(o=o.substring(1),l++),o.charAt(o.length-1)===">"&&(o=o.substring(0,o.length-1),c--);let d=l===0?void 0:t.charAt(l-1),u=c>=t.length?void 0:t.charAt(c),g=Ji(o,"(");if(g!=0&&g!=Ji(o,")")&&u==")"?(o+=u,c++,u=c>=t.length?void 0:t.charAt(c)):g==0&&o.endsWith(")")&&(u=")",c--,o=o.substring(0,o.length-1)),this.skipMatch(d,u,o,n)){r=l+o.length;continue}if(d!=null&&d==="<"&&u!=null&&u===">"){let m=l-1;for(;m>0&&t.charAt(m-1)==="<";)m--;let f=c;for(;f<t.length-1&&t.charAt(f+1)===">";)f++;t=ce(t,m,f+1,"<"+o+">"),r=l+o.length;continue}t=ce(t,l,l+o.length,"<"+o+">"),r=l+o.length+2}return t}skipMatch(t,i,n,r){let a=t!=null&&Xs.includes(t)||Xs.includes(n.charAt(0)),s=i!=null&&Xs.includes(i)||Xs.includes(n.charAt(n.length-1));return a&&s?!0:r?gv.includes(n.substring(0,n.indexOf(":"))):!1}get exampleBuilders(){return[new y({description:"Make sure that links are inside of angle brackets when not in single quotes('), double quotes(\"), or backticks(`)",before:p` https://github.com braces around url should stay the same: [https://github.com] backticks around url should stay the same: \`https://github.com\` @@ -1258,7 +1419,7 @@ ${Te(r,s,Qe(a,i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscape obsidian://show-plugin?id=cycle-in-sidebar `,after:p` <obsidian://show-plugin?id=cycle-in-sidebar> - `,options:{noBareURIs:!0}})]}get optionBuilders(){return[new U({OptionsClass:zs,nameKey:"rules.no-bare-urls.no-bare-uris.name",descriptionKey:"rules.no-bare-urls.no-bare-uris.description",optionsKey:"noBareURIs"})]}};br=A([w.register],br);var xr=class{constructor(){this.numberStyle="ascending";this.listEndStyle="."}},vr=class extends w{constructor(){super({nameKey:"rules.ordered-list-style.name",descriptionKey:"rules.ordered-list-style.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.tag]})}get OptionsClass(){return xr}apply(t,i){return Eu(t,i.numberStyle,i.listEndStyle)}get exampleBuilders(){return[new y({description:"Ordered lists have list items set to ascending numerical order when Number Style is `ascending`.",before:p` + `,options:{noBareURIs:!0}})]}get optionBuilders(){return[new U({OptionsClass:eo,nameKey:"rules.no-bare-urls.no-bare-uris.name",descriptionKey:"rules.no-bare-urls.no-bare-uris.description",optionsKey:"noBareURIs"})]}};Wr=A([b.register],Wr);var Vr=class{constructor(){this.numberStyle="ascending";this.listEndStyle="."}},Ur=class extends b{constructor(){super({nameKey:"rules.ordered-list-style.name",descriptionKey:"rules.ordered-list-style.description",type:"Content",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.tag]})}get OptionsClass(){return Vr}apply(t,i){return ep(t,i.numberStyle,i.listEndStyle)}get exampleBuilders(){return[new y({description:"Ordered lists have list items set to ascending numerical order when Number Style is `ascending`.",before:p` 1. Item 1 2. Item 2 4. Item 3 @@ -1330,7 +1491,7 @@ ${Te(r,s,Qe(a,i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscape 1) Subitem 2 1) Subitem 3 1) Item 3 - `,options:{listEndStyle:")",numberStyle:"lazy"}})]}get optionBuilders(){return[new ne({OptionsClass:xr,nameKey:"rules.ordered-list-style.number-style.name",descriptionKey:"rules.ordered-list-style.number-style.description",optionsKey:"numberStyle",records:[{value:"ascending",description:"Makes sure ordered list items are ascending (i.e. 1, 2, 3, etc.)"},{value:"lazy",description:"Makes sure ordered list item indicators all are the number 1"}]}),new ne({OptionsClass:xr,nameKey:"rules.ordered-list-style.list-end-style.name",descriptionKey:"rules.ordered-list-style.list-end-style.description",optionsKey:"listEndStyle",records:[{value:".",description:"Makes sure ordered list items indicators end in '.' (i.e `1.`)"},{value:")",description:"Makes sure ordered list item indicators end in ')' (i.e. `1)`)"}]})]}};vr=A([w.register],vr);var yl=class{},wr=class extends w{constructor(){super({nameKey:"rules.paragraph-blank-lines.name",descriptionKey:"rules.paragraph-blank-lines.description",type:"Spacing",ruleIgnoreTypes:[f.obsidianMultiLineComments,f.yaml,f.table]})}get OptionsClass(){return yl}apply(t,i){return wu(t)}get exampleBuilders(){return[new y({description:"Paragraphs should be surrounded by blank lines",before:p` + `,options:{listEndStyle:")",numberStyle:"lazy"}})]}get optionBuilders(){return[new ne({OptionsClass:Vr,nameKey:"rules.ordered-list-style.number-style.name",descriptionKey:"rules.ordered-list-style.number-style.description",optionsKey:"numberStyle",records:[{value:"ascending",description:"Makes sure ordered list items are ascending (i.e. 1, 2, 3, etc.)"},{value:"lazy",description:"Makes sure ordered list item indicators all are the number 1"}]}),new ne({OptionsClass:Vr,nameKey:"rules.ordered-list-style.list-end-style.name",descriptionKey:"rules.ordered-list-style.list-end-style.description",optionsKey:"listEndStyle",records:[{value:".",description:"Makes sure ordered list items indicators end in '.' (i.e `1.`)"},{value:")",description:"Makes sure ordered list item indicators end in ')' (i.e. `1)`)"}]})]}};Ur=A([b.register],Ur);var Xl=class{},Gr=class extends b{constructor(){super({nameKey:"rules.paragraph-blank-lines.name",descriptionKey:"rules.paragraph-blank-lines.description",type:"Spacing",ruleIgnoreTypes:[h.obsidianMultiLineComments,h.yaml,h.table]})}get OptionsClass(){return Xl}apply(t,i){return Uu(t)}get exampleBuilders(){return[new y({description:"Paragraphs should be surrounded by blank lines",before:p` # H1 Newlines are inserted. A paragraph is a line that starts with a letter. @@ -1359,7 +1520,7 @@ ${Te(r,s,Qe(a,i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscape A new paragraph ${""} # H2 - `})]}get optionBuilders(){return[]}};wr=A([w.register],wr);var kr=class{};A([w.noSettingControl()],kr.prototype,"lineContent",2),A([w.noSettingControl()],kr.prototype,"selectedText",2);var kt=class extends w{constructor(){super({nameKey:"rules.prevent-double-checklist-indicator-on-paste.name",descriptionKey:"rules.prevent-double-checklist-indicator-on-paste.description",type:"Paste"})}get OptionsClass(){return kr}apply(t,i){let n=Wu.test(i.lineContent),r=Ua.test(t),a=Ua.test(i.selectedText);return!n||!r||a?t:t.replace(Ua,"")}get exampleBuilders(){return[new y({description:"Line being pasted is left alone when current line has no checklist indicator in it: `Regular text here`",before:p` + `})]}get optionBuilders(){return[]}};Gr=A([b.register],Gr);var Qr=class{};A([b.noSettingControl()],Qr.prototype,"lineContent",2),A([b.noSettingControl()],Qr.prototype,"selectedText",2);var Nt=class extends b{constructor(){super({nameKey:"rules.prevent-double-checklist-indicator-on-paste.name",descriptionKey:"rules.prevent-double-checklist-indicator-on-paste.description",type:"Paste"})}get OptionsClass(){return Qr}apply(t,i){let n=xp.test(i.lineContent),r=Ls.test(t),a=Ls.test(i.selectedText);return!n||!r||a?t:t.replace(Ls,"")}get exampleBuilders(){return[new y({description:"Line being pasted is left alone when current line has no checklist indicator in it: `Regular text here`",before:p` - [ ] Checklist item being pasted `,after:p` - [ ] Checklist item being pasted @@ -1393,7 +1554,7 @@ ${Te(r,s,Qe(a,i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscape `,after:p` - [x] Checklist item 1 - [ ] Checklist item 2 - `,options:{lineContent:"- [!] Some text here",selectedText:"- [!] Some text here"}})]}get optionBuilders(){return[]}};kt=A([w.register],kt);var zr=class{};A([w.noSettingControl()],zr.prototype,"lineContent",2),A([w.noSettingControl()],zr.prototype,"selectedText",2);var zt=class extends w{constructor(){super({nameKey:"rules.prevent-double-list-item-indicator-on-paste.name",descriptionKey:"rules.prevent-double-list-item-indicator-on-paste.description",type:"Paste"})}get OptionsClass(){return zr}apply(t,i){let n=new RegExp(`^${Yn}[*+-] `),r=/^\s*[*+-] /,a=n.test(i.lineContent),s=n.test(i.selectedText),o=r.test(t);return s||!a||!o?t:t.replace(r,"")}get exampleBuilders(){return[new y({description:"Line being pasted is left alone when current line has no list indicator in it: `Regular text here`",before:p` + `,options:{lineContent:"- [!] Some text here",selectedText:"- [!] Some text here"}})]}get optionBuilders(){return[]}};Nt=A([b.register],Nt);var Zr=class{};A([b.noSettingControl()],Zr.prototype,"lineContent",2),A([b.noSettingControl()],Zr.prototype,"selectedText",2);var Kt=class extends b{constructor(){super({nameKey:"rules.prevent-double-list-item-indicator-on-paste.name",descriptionKey:"rules.prevent-double-list-item-indicator-on-paste.description",type:"Paste"})}get OptionsClass(){return Zr}apply(t,i){let n=new RegExp(`^${hr}[*+-] `),r=/^\s*[*+-] /,a=n.test(i.lineContent),s=n.test(i.selectedText),o=r.test(t);return s||!a||!o?t:t.replace(r,"")}get exampleBuilders(){return[new y({description:"Line being pasted is left alone when current line has no list indicator in it: `Regular text here`",before:p` - List item being pasted `,after:p` - List item being pasted @@ -1421,7 +1582,7 @@ ${Te(r,s,Qe(a,i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscape `,after:p` - List item 1 - List item 2 - `,options:{lineContent:"+ ",selectedText:"+ "}})]}get optionBuilders(){return[]}};zt=A([w.register],zt);var bl=class{},St=class extends w{constructor(){super({nameKey:"rules.proper-ellipsis-on-paste.name",descriptionKey:"rules.proper-ellipsis-on-paste.description",type:"Paste"})}get OptionsClass(){return bl}apply(t,i){return t.replaceAll(Va,"\u2026")}get exampleBuilders(){return[new y({description:"Replacing three consecutive dots with an ellipsis even if spaces are present",before:p` + `,options:{lineContent:"+ ",selectedText:"+ "}})]}get optionBuilders(){return[]}};Kt=A([b.register],Kt);var ec=class{},Yt=class extends b{constructor(){super({nameKey:"rules.proper-ellipsis-on-paste.name",descriptionKey:"rules.proper-ellipsis-on-paste.description",type:"Paste"})}get OptionsClass(){return ec}apply(t,i){return t.replaceAll(Ts,"\u2026")}get exampleBuilders(){return[new y({description:"Replacing three consecutive dots with an ellipsis even if spaces are present",before:p` Lorem (...) Impsum. Lorem (. ..) Impsum. Lorem (. . .) Impsum. @@ -1429,11 +1590,11 @@ ${Te(r,s,Qe(a,i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscape Lorem (…) Impsum. Lorem (…) Impsum. Lorem (…) Impsum. - `})]}get optionBuilders(){return[]}};St=A([w.register],St);var vl=class{},Sr=class extends w{constructor(){super({nameKey:"rules.proper-ellipsis.name",descriptionKey:"rules.proper-ellipsis.description",type:"Content"})}get OptionsClass(){return vl}apply(t,i){return we([f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag,f.image],t,n=>n.replaceAll(Va,"\u2026"))}get exampleBuilders(){return[new y({description:"Replacing three consecutive dots with an ellipsis.",before:p` + `})]}get optionBuilders(){return[]}};Yt=A([b.register],Yt);var ic=class{},Jr=class extends b{constructor(){super({nameKey:"rules.proper-ellipsis.name",descriptionKey:"rules.proper-ellipsis.description",type:"Content"})}get OptionsClass(){return ic}apply(t,i){return Le([h.code,h.math,h.yaml,h.link,h.wikiLink,h.tag,h.image],t,n=>n.replaceAll(Ts,"\u2026"))}get exampleBuilders(){return[new y({description:"Replacing three consecutive dots with an ellipsis.",before:p` Lorem (...) Impsum. `,after:p` Lorem (…) Impsum. - `})]}get optionBuilders(){return[]}};Sr=A([w.register],Sr);var At=class{constructor(){this.singleQuoteStyleEnabled=!0;this.singleQuoteStyle="''";this.doubleQuoteStyleEnabled=!0;this.doubleQuoteStyle='""'}},Ar=class extends w{constructor(){super({nameKey:"rules.quote-style.name",descriptionKey:"rules.quote-style.description",type:"Content",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.yaml,f.math,f.inlineMath,f.html,f.templaterCommand]})}get OptionsClass(){return At}apply(t,i){let n=t;return i.doubleQuoteStyleEnabled&&(i.doubleQuoteStyle==='""'?n=this.convertSmartDoubleQuotesToStraightQuotes(n):n=this.convertStraightQuoteToSmartQuote(n,'"',"\u201C\u201D"[0],"\u201C\u201D"[1],!1)),i.singleQuoteStyleEnabled&&(i.singleQuoteStyle==="''"?n=this.convertSmartSingleQuotesToStraightQuotes(n):n=this.convertStraightQuoteToSmartQuote(n,"'","\u2018\u2019"[0],"\u2018\u2019"[1],!0)),n}convertSmartSingleQuotesToStraightQuotes(t){return t.replace(Hu,"'")}convertSmartDoubleQuotesToStraightQuotes(t){return t.replace(Pu,'"')}convertStraightQuoteToSmartQuote(t,i,n,r,a){let s=Ld(i,t);if(s.length===0)return t;let o=t.length-1,l,d="",c="",u=!1,m=!1,g=!1,h=!1,x=!1,b="";for(let v of s)d=v==0?"":t.charAt(v-1),c=v===o?"":t.charAt(v+1),u=il.test(d),m=il.test(c),x=u&&m,g=d!=""&&d.trim()==="",h=c!=""&&c.trim()==="",x&&a?l=r:h&&!g?(l=r,b=l):g&&!h?(l=n,b=l):(b===""||b===r?l=n:l=r,b=l),t=pe(t,v,v+1,l);return t}get exampleBuilders(){return[new y({description:"Smart quotes used in file are converted to straight quotes when styles are set to `Straight`",before:p` + `})]}get optionBuilders(){return[]}};Jr=A([b.register],Jr);var jt=class{constructor(){this.singleQuoteStyleEnabled=!0;this.singleQuoteStyle="''";this.doubleQuoteStyleEnabled=!0;this.doubleQuoteStyle='""'}},Xr=class extends b{constructor(){super({nameKey:"rules.quote-style.name",descriptionKey:"rules.quote-style.description",type:"Content",ruleIgnoreTypes:[h.code,h.inlineCode,h.math,h.yaml,h.math,h.inlineMath,h.html,h.link,h.wikiLink,h.templaterCommand]})}get OptionsClass(){return jt}apply(t,i){let n=t;return i.doubleQuoteStyleEnabled&&(i.doubleQuoteStyle==='""'?n=this.convertSmartDoubleQuotesToStraightQuotes(n):n=this.convertStraightQuoteToSmartQuote(n,'"',"\u201C\u201D"[0],"\u201C\u201D"[1],!1)),i.singleQuoteStyleEnabled&&(i.singleQuoteStyle==="''"?n=this.convertSmartSingleQuotesToStraightQuotes(n):n=this.convertStraightQuoteToSmartQuote(n,"'","\u2018\u2019"[0],"\u2018\u2019"[1],!0)),n}convertSmartSingleQuotesToStraightQuotes(t){return t.replace(bp,"'")}convertSmartDoubleQuotesToStraightQuotes(t){return t.replace(yp,'"')}convertStraightQuoteToSmartQuote(t,i,n,r,a){let s=su(i,t);if(s.length===0)return t;let o=t.length-1,l,c="",d="",u=!1,g=!1,m=!1,f=!1,w=!1,x="";for(let v of s)c=v==0?"":t.charAt(v-1),d=v===o?"":t.charAt(v+1),u=Fl.test(c),g=Fl.test(d),w=u&&g,m=c!=""&&c.trim()==="",f=d!=""&&d.trim()==="",w&&a?l=r:f&&!m?(l=r,x=l):m&&!f?(l=n,x=l):(x===""||x===r?l=n:l=r,x=l),t=ce(t,v,v+1,l);return t}get exampleBuilders(){return[new y({description:"Smart quotes used in file are converted to straight quotes when styles are set to `Straight`",before:p` # Double Quote Cases “There are a bunch of different kinds of smart quote indicators” „More than you would think” @@ -1471,7 +1632,7 @@ ${Te(r,s,Qe(a,i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscape ${""} Be careful as converting straight quotes to smart quotes requires you to have an even amount of quotes once possessives and common contractions have been dealt with. If not, it will throw an error. - `,options:{singleQuoteStyle:"\u2018\u2019",doubleQuoteStyle:"\u201C\u201D"}})]}get optionBuilders(){return[new U({OptionsClass:At,nameKey:"rules.quote-style.single-quote-enabled.name",descriptionKey:"rules.quote-style.single-quote-enabled.description",optionsKey:"singleQuoteStyleEnabled"}),new ne({OptionsClass:At,nameKey:"rules.quote-style.single-quote-style.name",descriptionKey:"rules.quote-style.single-quote-style.description",optionsKey:"singleQuoteStyle",records:[{value:"''",description:`Uses "'" instead of smart single quotes`},{value:"\u2018\u2019",description:'Uses "\u2018" and "\u2019" instead of straight single quotes'}]}),new U({OptionsClass:At,nameKey:"rules.quote-style.double-quote-enabled.name",descriptionKey:"rules.quote-style.double-quote-enabled.description",optionsKey:"doubleQuoteStyleEnabled"}),new ne({OptionsClass:At,nameKey:"rules.quote-style.double-quote-style.name",descriptionKey:"rules.quote-style.double-quote-style.description",optionsKey:"doubleQuoteStyle",records:[{value:'""',description:`Uses '"' instead of smart double quotes`},{value:"\u201C\u201D",description:"Uses '\u201C' and '\u201D' instead of straight double quotes"}]})]}};Ar=A([w.register],Ar);var xl=class{},Tr=class extends w{constructor(){super({nameKey:"rules.re-index-footnotes.name",descriptionKey:"rules.re-index-footnotes.description",type:"Footnote",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return xl}apply(t,i){return bu(t)}get exampleBuilders(){return[new y({description:"Re-indexing footnotes after having deleted previous footnotes",before:p` + `,options:{singleQuoteStyle:"\u2018\u2019",doubleQuoteStyle:"\u201C\u201D"}})]}get optionBuilders(){return[new U({OptionsClass:jt,nameKey:"rules.quote-style.single-quote-enabled.name",descriptionKey:"rules.quote-style.single-quote-enabled.description",optionsKey:"singleQuoteStyleEnabled"}),new ne({OptionsClass:jt,nameKey:"rules.quote-style.single-quote-style.name",descriptionKey:"rules.quote-style.single-quote-style.description",optionsKey:"singleQuoteStyle",records:[{value:"''",description:`Uses "'" instead of smart single quotes`},{value:"\u2018\u2019",description:'Uses "\u2018" and "\u2019" instead of straight single quotes'}]}),new U({OptionsClass:jt,nameKey:"rules.quote-style.double-quote-enabled.name",descriptionKey:"rules.quote-style.double-quote-enabled.description",optionsKey:"doubleQuoteStyleEnabled"}),new ne({OptionsClass:jt,nameKey:"rules.quote-style.double-quote-style.name",descriptionKey:"rules.quote-style.double-quote-style.description",optionsKey:"doubleQuoteStyle",records:[{value:'""',description:`Uses '"' instead of smart double quotes`},{value:"\u201C\u201D",description:"Uses '\u201C' and '\u201D' instead of straight double quotes"}]})]}};Xr=A([b.register],Xr);var tc=class{},ea=class extends b{constructor(){super({nameKey:"rules.re-index-footnotes.name",descriptionKey:"rules.re-index-footnotes.description",type:"Footnote",ruleIgnoreTypes:[h.code,h.inlineCode,h.math,h.yaml,h.tag]})}get OptionsClass(){return tc}apply(t,i){return $u(t)}get exampleBuilders(){return[new y({description:"Re-indexing footnotes after having deleted previous footnotes",before:p` Lorem ipsum at aliquet felis.[^3] Donec dictum turpis quis pellentesque,[^5] et iaculis tortor condimentum. ${""} [^3]: first footnote @@ -1512,10 +1673,9 @@ ${Te(r,s,Qe(a,i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscape [^2]: bla `,after:p` bla[^1], bla[^1], bla[^2] - ${""} [^1]: bla [^2]: bla - `})]}get optionBuilders(){return[]}};Tr=A([w.register],Tr);var wl=class{},Lr=class extends w{constructor(){super({nameKey:"rules.remove-consecutive-list-markers.name",descriptionKey:"rules.remove-consecutive-list-markers.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return wl}apply(t,i){return t.replace(/^([ |\t]*)- - \b/gm,"$1- ")}get exampleBuilders(){return[new y({description:"Removing consecutive list markers.",before:p` + `})]}get optionBuilders(){return[]}};ea=A([b.register],ea);var nc=class{},ia=class extends b{constructor(){super({nameKey:"rules.remove-consecutive-list-markers.name",descriptionKey:"rules.remove-consecutive-list-markers.description",type:"Content",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.link,h.wikiLink,h.tag]})}get OptionsClass(){return nc}apply(t,i){return t.replace(/^([ |\t]*)- - \b/gm,"$1- ")}get exampleBuilders(){return[new y({description:"Removing consecutive list markers.",before:p` - item 1 - - copypasted item A - item 2 @@ -1527,9 +1687,9 @@ ${Te(r,s,Qe(a,i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscape - item 2 - indented item - copypasted item B - `})]}get optionBuilders(){return[]}};Lr=A([w.register],Lr);var kl=class{},Er=class extends w{constructor(){super({nameKey:"rules.remove-empty-lines-between-list-markers-and-checklists.name",descriptionKey:"rules.remove-empty-lines-between-list-markers-and-checklists.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag,f.thematicBreak]});this.replaceEmptyLinesBetweenList=function(i,n){let r=new RegExp(`^${n} + `})]}get optionBuilders(){return[]}};ia=A([b.register],ia);var rc=class{},ta=class extends b{constructor(){super({nameKey:"rules.remove-empty-lines-between-list-markers-and-checklists.name",descriptionKey:"rules.remove-empty-lines-between-list-markers-and-checklists.description",type:"Spacing",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.link,h.wikiLink,h.tag,h.thematicBreak]});this.replaceEmptyLinesBetweenList=function(i,n){let r=new RegExp(`^${n} {2,}${n}$`,"gm"),a,s=i;do a=s.match(r),s=s.replaceAll(r,`$1 -$4`);while(a);return s}}get OptionsClass(){return kl}apply(i,n){let r=`(( |\\t)*- ${Xt}( |\\t)+.+)`;i=this.replaceEmptyLinesBetweenList(i,r);let a="(( |\\t)*\\d+\\.( |\\t)+.+)";i=this.replaceEmptyLinesBetweenList(i,a);let s="(( |\\t)*\\+( |\\t)+.+)";i=this.replaceEmptyLinesBetweenList(i,s);let o=`(( |\\t)*-(?! ${Xt})( |\\t)+.+)`;i=this.replaceEmptyLinesBetweenList(i,o);let l="(( |\\t)*\\*( |\\t)+.+)";return this.replaceEmptyLinesBetweenList(i,l)}get exampleBuilders(){return[new y({description:"Blank lines are removed between ordered list items",before:p` +$4`);while(a);return s}}get OptionsClass(){return rc}apply(i,n){let r=`(( |\\t)*- ${Lt}( |\\t)+.+)`;i=this.replaceEmptyLinesBetweenList(i,r);let a="(( |\\t)*\\d+\\.( |\\t)+.+)";i=this.replaceEmptyLinesBetweenList(i,a);let s="(( |\\t)*\\+( |\\t)+.+)";i=this.replaceEmptyLinesBetweenList(i,s);let o=`(( |\\t)*-(?! ${Lt})( |\\t)+.+)`;i=this.replaceEmptyLinesBetweenList(i,o);let l="(( |\\t)*\\*( |\\t)+.+)";return this.replaceEmptyLinesBetweenList(i,l)}get exampleBuilders(){return[new y({description:"Blank lines are removed between ordered list items",before:p` 1. Item 1 ${""} 2. Item 2 @@ -1623,7 +1783,7 @@ $4`);while(a);return s}}get OptionsClass(){return kl}apply(i,n){let r=`(( |\\t)* * Item 1 \t* Subitem 1 * Item 2 - `})]}get optionBuilders(){return[]}};Er=A([w.register],Er);var zl=class{},Or=class extends w{constructor(){super({nameKey:"rules.remove-empty-list-markers.name",descriptionKey:"rules.remove-empty-list-markers.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return zl}apply(t,i){let n=new RegExp(`^${Yn}(-|\\*|\\+|\\d+[.)]|- (\\[( |x)\\]))\\s*?$`,"gm");return t=t.replace(new RegExp(n.source+"\\n","gm"),""),t=t.replace(new RegExp("\\n"+n.source,"gm"),""),t.replace(n,"")}get exampleBuilders(){return[new y({description:"Removes empty list markers.",before:p` + `})]}get optionBuilders(){return[]}};ta=A([b.register],ta);var ac=class{},na=class extends b{constructor(){super({nameKey:"rules.remove-empty-list-markers.name",descriptionKey:"rules.remove-empty-list-markers.description",type:"Content",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.link,h.wikiLink,h.tag]})}get OptionsClass(){return ac}apply(t,i){let n=new RegExp(`^${hr}(-|\\*|\\+|\\d+[.)]|- (\\[(.)\\]))\\s*?$`,"gm");return t=t.replace(new RegExp(n.source+"\\n","gm"),""),t=t.replace(new RegExp("\\n"+n.source,"gm"),""),t.replace(n,"")}get exampleBuilders(){return[new y({description:"Removes empty list markers.",before:p` - item 1 - - item 2 @@ -1727,16 +1887,16 @@ $4`);while(a);return s}}get OptionsClass(){return kl}apply(i,n){let r=`(( |\\t)* > > + item 1 > + item 2 - `})]}get optionBuilders(){return[]}};Or=A([w.register],Or);var Sl=class{},Cr=class extends w{constructor(){super({nameKey:"rules.remove-hyphenated-line-breaks.name",descriptionKey:"rules.remove-hyphenated-line-breaks.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return Sl}apply(t,i){return t.replace(/\b[-‐] \b/g,"")}get exampleBuilders(){return[new y({description:"Removing hyphenated line breaks.",before:p` + `})]}get optionBuilders(){return[]}};na=A([b.register],na);var sc=class{},ra=class extends b{constructor(){super({nameKey:"rules.remove-hyphenated-line-breaks.name",descriptionKey:"rules.remove-hyphenated-line-breaks.description",type:"Content",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.link,h.wikiLink,h.tag]})}get OptionsClass(){return sc}apply(t,i){return t.replace(/\b[-‐] \b/g,"")}get exampleBuilders(){return[new y({description:"Removing hyphenated line breaks.",before:p` This text has a linebr‐ eak. `,after:p` This text has a linebreak. - `})]}get optionBuilders(){return[]}};Cr=A([w.register],Cr);var Al=class{},Tt=class extends w{constructor(){super({nameKey:"rules.remove-hyphens-on-paste.name",descriptionKey:"rules.remove-hyphens-on-paste.description",type:"Paste"})}get OptionsClass(){return Al}apply(t,i){return t.replace(/([^\s-])[-‐]\s+\n?(?=\w)/g,"$1")}get exampleBuilders(){return[new y({description:"Remove hyphen in content to paste",before:p` + `})]}get optionBuilders(){return[]}};ra=A([b.register],ra);var oc=class{},Pt=class extends b{constructor(){super({nameKey:"rules.remove-hyphens-on-paste.name",descriptionKey:"rules.remove-hyphens-on-paste.description",type:"Paste"})}get OptionsClass(){return oc}apply(t,i){return t.replace(/([^\s-])[-‐]\s+\n?(?=\w)/g,"$1")}get exampleBuilders(){return[new y({description:"Remove hyphen in content to paste",before:p` Text that was cool but hyper- tension made it uncool. `,after:p` Text that was cool but hypertension made it uncool. - `})]}get optionBuilders(){return[]}};Tt=A([w.register],Tt);var Tl=class{},Lt=class extends w{constructor(){super({nameKey:"rules.remove-leading-or-trailing-whitespace-on-paste.name",descriptionKey:"rules.remove-leading-or-trailing-whitespace-on-paste.description",type:"Paste"})}get OptionsClass(){return Tl}apply(t,i){return t.replace(/^[\n ]+|\s+$/g,"")}get exampleBuilders(){return[new y({description:"Removes leading spaces and newline characters",before:p` + `})]}get optionBuilders(){return[]}};Pt=A([b.register],Pt);var lc=class{},Ht=class extends b{constructor(){super({nameKey:"rules.remove-leading-or-trailing-whitespace-on-paste.name",descriptionKey:"rules.remove-leading-or-trailing-whitespace-on-paste.description",type:"Paste"})}get OptionsClass(){return lc}apply(t,i){return t.replace(/^[\n ]+|\s+$/g,"")}get exampleBuilders(){return[new y({description:"Removes leading spaces and newline characters",before:p` ${""} ${""} This text was really indented @@ -1748,7 +1908,7 @@ $4`);while(a);return s}}get OptionsClass(){return kl}apply(i,n){let r=`(( |\\t)* ${""} \t\tThis text is really indented ${""} - `,after:" This text is really indented"})]}get optionBuilders(){return[]}};Lt=A([w.register],Lt);var Ll=class{},Et=class extends w{constructor(){super({nameKey:"rules.remove-leftover-footnotes-from-quote-on-paste.name",descriptionKey:"rules.remove-leftover-footnotes-from-quote-on-paste.description",ruleIgnoreTypes:[f.wikiLink,f.link,f.image],type:"Paste"})}get OptionsClass(){return Ll}apply(t,i){return t.replace(/(\D)[.,]\d+/g,"$1")}get exampleBuilders(){return[new y({description:"Footnote reference removed",before:p` + `,after:" This text is really indented"})]}get optionBuilders(){return[]}};Ht=A([b.register],Ht);var cc=class{},$t=class extends b{constructor(){super({nameKey:"rules.remove-leftover-footnotes-from-quote-on-paste.name",descriptionKey:"rules.remove-leftover-footnotes-from-quote-on-paste.description",ruleIgnoreTypes:[h.wikiLink,h.link,h.image],type:"Paste"})}get OptionsClass(){return cc}apply(t,i){return t.replace(/(\D)[.,]\d+/g,"$1")}get exampleBuilders(){return[new y({description:"Footnote reference removed",before:p` He was sure that he would get off without doing any time, but the cops had other plans.50 ${""} _Note that the format for footnote references to remove is a dot or comma followed by any number of digits_ @@ -1766,7 +1926,7 @@ $4`);while(a);return s}}get OptionsClass(){return kl}apply(i,n){let r=`(( |\\t)* [Half is .5](HalfIs.5.md) ![](HalfIs.5.jpg) ![[Half is .5.jpg]] - `})]}get optionBuilders(){return[]}};Et=A([w.register],Et);var El=class{},Mr=class extends w{constructor(){super({nameKey:"rules.remove-link-spacing.name",descriptionKey:"rules.remove-link-spacing.description",type:"Spacing"})}get OptionsClass(){return El}apply(t,i){return t=ku(t),Vu(t)}get exampleBuilders(){return[new y({description:"Space in regular markdown link text",before:p` + `})]}get optionBuilders(){return[]}};$t=A([b.register],$t);var dc=class{},aa=class extends b{constructor(){super({nameKey:"rules.remove-link-spacing.name",descriptionKey:"rules.remove-link-spacing.description",type:"Spacing"})}get OptionsClass(){return dc}apply(t,i){return t=Vu(t),wp(t)}get exampleBuilders(){return[new y({description:"Space in regular markdown link text",before:p` [ here is link text1 ](link_here) [ here is link text2](link_here) [here is link text3 ](link_here) @@ -1800,7 +1960,7 @@ $4`);while(a);return s}}get OptionsClass(){return kl}apply(i,n){let r=`(( |\\t)* [[link_here|here is link text5]] ![[link_here|here is link text6]] [[link_here]] - `})]}get optionBuilders(){return[]}};Mr=A([w.register],Mr);var Ol=class{},Ot=class extends w{constructor(){super({nameKey:"rules.remove-multiple-blank-lines-on-paste.name",descriptionKey:"rules.remove-multiple-blank-lines-on-paste.description",type:"Paste"})}get OptionsClass(){return Ol}apply(t,i){return t.replace(/\n{3,}/g,` + `})]}get optionBuilders(){return[]}};aa=A([b.register],aa);var uc=class{},Wt=class extends b{constructor(){super({nameKey:"rules.remove-multiple-blank-lines-on-paste.name",descriptionKey:"rules.remove-multiple-blank-lines-on-paste.description",type:"Paste"})}get OptionsClass(){return uc}apply(t,i){return t.replace(/\n{3,}/g,` `)}get exampleBuilders(){return[new y({description:"Multiple blanks lines condensed down to one",before:p` Here is the first line. @@ -1821,11 +1981,11 @@ $4`);while(a);return s}}get OptionsClass(){return kl}apply(i,n){let r=`(( |\\t)* First line. ${""} Last line. - `})]}get optionBuilders(){return[]}};Ot=A([w.register],Ot);var Cl=class{},qr=class extends w{constructor(){super({nameKey:"rules.remove-multiple-spaces.name",descriptionKey:"rules.remove-multiple-spaces.description",type:"Content",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.inlineMath,f.yaml,f.link,f.wikiLink,f.tag,f.table]})}get OptionsClass(){return Cl}apply(t,i){return t=t.replace(/(?!^>)([^\s])( ){2,}([^\s])/gm,"$1 $3"),t}get exampleBuilders(){return[new y({description:"Removing double and triple space.",before:p` + `})]}get optionBuilders(){return[]}};Wt=A([b.register],Wt);var pc=class{},sa=class extends b{constructor(){super({nameKey:"rules.remove-multiple-spaces.name",descriptionKey:"rules.remove-multiple-spaces.description",type:"Content",ruleIgnoreTypes:[h.code,h.inlineCode,h.math,h.inlineMath,h.yaml,h.link,h.wikiLink,h.tag,h.table]})}get OptionsClass(){return pc}apply(t,i){return t=t.replace(/(?!^>)([^\s])( ){2,}([^\s])/gm,"$1 $3"),t}get exampleBuilders(){return[new y({description:"Removing double and triple space.",before:p` Lorem ipsum dolor sit amet. `,after:p` Lorem ipsum dolor sit amet. - `})]}get optionBuilders(){return[]}};qr=A([w.register],qr);var Ct=class{constructor(){this.includeFullwidthForms=!0;this.includeCJKSymbolsAndPunctuation=!0;this.includeDashes=!0;this.otherSymbols=""}},Ir=class extends w{constructor(){super({nameKey:"rules.remove-space-around-characters.name",descriptionKey:"rules.remove-space-around-characters.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return Ct}apply(t,i){let n="";if(i.includeFullwidthForms&&(n+="\uFF01-\uFF5E"),i.includeCJKSymbolsAndPunctuation&&(n+="\u3000-\u30FF"),i.includeDashes&&(n+="\u2013\u2014"),n+=Pn(i.otherSymbols),!n)return t;let r=new RegExp(`([ ])+([${n}])`,"g"),a=new RegExp(`([${n}])([ ])+`,"g"),s=function(l){return l.replace(r,"$2").replace(a,"$1")},o=we([f.list],t,s);return o=Pa(o,s),o}get exampleBuilders(){return[new y({description:"Remove Spaces and Tabs around Fullwidth Characters",before:p` + `})]}get optionBuilders(){return[]}};sa=A([b.register],sa);var Ut=class{constructor(){this.includeFullwidthForms=!0;this.includeCJKSymbolsAndPunctuation=!0;this.includeDashes=!0;this.otherSymbols=""}},oa=class extends b{constructor(){super({nameKey:"rules.remove-space-around-characters.name",descriptionKey:"rules.remove-space-around-characters.description",type:"Spacing",ruleIgnoreTypes:[h.code,h.inlineCode,h.math,h.yaml,h.link,h.wikiLink,h.tag]})}get OptionsClass(){return Ut}apply(t,i){let n="";if(i.includeFullwidthForms&&(n+="\uFF01-\uFF5E"),i.includeCJKSymbolsAndPunctuation&&(n+="\u3000-\u30FF"),i.includeDashes&&(n+="\u2013\u2014"),n+=fr(i.otherSymbols),!n)return t;let r=new RegExp(`([ ])+([${n}])`,"g"),a=new RegExp(`([${n}])([ ])+`,"g"),s=function(l){return l.replace(r,"$2").replace(a,"$1")},o=Le([h.list],t,s);return o=ws(o,s),o}get exampleBuilders(){return[new y({description:"Remove Spaces and Tabs around Fullwidth Characters",before:p` Full list of affected characters: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,.:;!?"'`^~ ̄_&@#%+-*=<>()[]{}⦅⦆|¦/\¬$£¢₩¥。、「」『』〔〕【】—…–《》〈〉 This is a fullwidth period\t 。 with text after it. This is a fullwidth comma\t, with text after it. @@ -1887,7 +2047,7 @@ $4`);while(a);return s}}get OptionsClass(){return kl}apply(i,n){let r=`(( |\\t)* > > - [more contents here]more text here > > + [another item here] > > * [one last item here] - `})]}get optionBuilders(){return[new U({nameKey:"rules.remove-space-around-characters.include-fullwidth-forms.name",descriptionKey:"rules.remove-space-around-characters.include-fullwidth-forms.description",OptionsClass:Ct,optionsKey:"includeFullwidthForms"}),new U({nameKey:"rules.remove-space-around-characters.include-cjk-symbols-and-punctuation.name",descriptionKey:"rules.remove-space-around-characters.include-cjk-symbols-and-punctuation.description",OptionsClass:Ct,optionsKey:"includeCJKSymbolsAndPunctuation"}),new U({nameKey:"rules.remove-space-around-characters.include-dashes.name",descriptionKey:"rules.remove-space-around-characters.include-dashes.description",OptionsClass:Ct,optionsKey:"includeDashes"}),new We({nameKey:"rules.remove-space-around-characters.other-symbols.name",descriptionKey:"rules.remove-space-around-characters.other-symbols.description",OptionsClass:Ct,optionsKey:"otherSymbols"})]}};Ir=A([w.register],Ir);var Fr=class{constructor(){this.charactersToRemoveSpacesBefore=",!?;:).\u2019\u201D]";this.charactersToRemoveSpacesAfter="\xBF\xA1\u2018\u201C(["}},Br=class extends w{constructor(){super({nameKey:"rules.remove-space-before-or-after-characters.name",descriptionKey:"rules.remove-space-before-or-after-characters.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return Fr}apply(t,i){let n=Pn(i.charactersToRemoveSpacesBefore),r=Pn(i.charactersToRemoveSpacesAfter);if(!n&&!r)return t;let a=new RegExp(`([ ])+([${n}])`,"g"),s=new RegExp(`([${r}])([ ])+`,"g"),o=function(d){return d.replace(a,"$2").replace(s,"$1")},l=we([f.list,f.html],t,o);return l=Pa(l,o),l}get exampleBuilders(){return[new y({description:"Remove Spaces and Tabs Before and After Default Symbol Set",before:p` + `})]}get optionBuilders(){return[new U({nameKey:"rules.remove-space-around-characters.include-fullwidth-forms.name",descriptionKey:"rules.remove-space-around-characters.include-fullwidth-forms.description",OptionsClass:Ut,optionsKey:"includeFullwidthForms"}),new U({nameKey:"rules.remove-space-around-characters.include-cjk-symbols-and-punctuation.name",descriptionKey:"rules.remove-space-around-characters.include-cjk-symbols-and-punctuation.description",OptionsClass:Ut,optionsKey:"includeCJKSymbolsAndPunctuation"}),new U({nameKey:"rules.remove-space-around-characters.include-dashes.name",descriptionKey:"rules.remove-space-around-characters.include-dashes.description",OptionsClass:Ut,optionsKey:"includeDashes"}),new $e({nameKey:"rules.remove-space-around-characters.other-symbols.name",descriptionKey:"rules.remove-space-around-characters.other-symbols.description",OptionsClass:Ut,optionsKey:"otherSymbols"})]}};oa=A([b.register],oa);var ca=class{constructor(){this.charactersToRemoveSpacesBefore=",!?;:).\u2019\u201D]";this.charactersToRemoveSpacesAfter="\xBF\xA1\u2018\u201C(["}},la=class extends b{constructor(){super({nameKey:"rules.remove-space-before-or-after-characters.name",descriptionKey:"rules.remove-space-before-or-after-characters.description",type:"Spacing",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.link,h.wikiLink,h.tag]})}get OptionsClass(){return ca}apply(t,i){let n=fr(i.charactersToRemoveSpacesBefore),r=fr(i.charactersToRemoveSpacesAfter);if(!n&&!r)return t;let a=new RegExp(`([ ])+([${n}])`,"g"),s=new RegExp(`([${r}])([ ])+`,"g"),o=function(c){return c.replace(a,"$2").replace(s,"$1")},l=Le([h.list,h.html],t,o);return l=ws(l,o),l}get exampleBuilders(){return[new y({description:"Remove Spaces and Tabs Before and After Default Symbol Set",before:p` In the end , the space gets removed\t . The space before the question mark was removed right ? The space before the exclamation point gets removed ! @@ -1905,7 +2065,7 @@ $4`);while(a);return s}}get OptionsClass(){return kl}apply(i,n){let r=`(( |\\t)* “Text in double quotes” [Text in square braces] (Text in parenthesis) - `})]}get optionBuilders(){return[new We({nameKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-before.name",descriptionKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-before.description",OptionsClass:Fr,optionsKey:"charactersToRemoveSpacesBefore"}),new We({nameKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-after.name",descriptionKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-after.description",OptionsClass:Fr,optionsKey:"charactersToRemoveSpacesAfter"})]}};Br=A([w.register],Br);var Ss=class{constructor(){this.punctuationToRemove=".,;:!\u3002\uFF0C\uFF1B\uFF1A\uFF01"}},_r=class extends w{constructor(){super({nameKey:"rules.remove-trailing-punctuation-in-heading.name",descriptionKey:"rules.remove-trailing-punctuation-in-heading.description",type:"Heading",ruleIgnoreTypes:[f.code,f.math,f.yaml]})}get OptionsClass(){return Ss}apply(t,i){return t.replaceAll(Pi,(n,r="",a="",s="",o="",l="")=>{if(o==""||o.match(Yu))return n;let d=o.trimEnd(),c=d.charAt(d.length-1);return i.punctuationToRemove.includes(c)?r+a+s+o.substring(0,d.length-1)+o.substring(d.length)+l:n})}get exampleBuilders(){return[new y({description:"Removes punctuation from the end of a heading",before:p` + `})]}get optionBuilders(){return[new $e({nameKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-before.name",descriptionKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-before.description",OptionsClass:ca,optionsKey:"charactersToRemoveSpacesBefore"}),new $e({nameKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-after.name",descriptionKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-after.description",OptionsClass:ca,optionsKey:"charactersToRemoveSpacesAfter"})]}};la=A([b.register],la);var io=class{constructor(){this.punctuationToRemove=".,;:!\u3002\uFF0C\uFF1B\uFF1A\uFF01"}},da=class extends b{constructor(){super({nameKey:"rules.remove-trailing-punctuation-in-heading.name",descriptionKey:"rules.remove-trailing-punctuation-in-heading.description",type:"Heading",ruleIgnoreTypes:[h.code,h.math,h.yaml]})}get OptionsClass(){return io}apply(t,i){return t.replaceAll(nt,(n,r="",a="",s="",o="",l="")=>{if(o==""||o.match(fp))return n;let c=o.trimEnd(),d=c.charAt(c.length-1);return i.punctuationToRemove.includes(d)?r+a+s+o.substring(0,c.length-1)+o.substring(c.length)+l:n})}get exampleBuilders(){return[new y({description:"Removes punctuation from the end of a heading",before:p` # Heading ends in a period. ## Other heading ends in an exclamation mark! ## `,after:p` @@ -1923,7 +2083,7 @@ $4`);while(a);return s}}get OptionsClass(){return kl}apply(i,n){let r=`(( |\\t)* `,after:p` # Heading 1${" "} ## Heading 2\t - `})]}get optionBuilders(){return[new We({OptionsClass:Ss,nameKey:"rules.remove-trailing-punctuation-in-heading.punctuation-to-remove.name",descriptionKey:"rules.remove-trailing-punctuation-in-heading.punctuation-to-remove.description",optionsKey:"punctuationToRemove"})]}};_r=A([w.register],_r);var As=class{constructor(){this.yamlKeysToRemove=[]}},Rr=class extends w{constructor(){super({nameKey:"rules.remove-yaml-keys.name",descriptionKey:"rules.remove-yaml-keys.description",type:"YAML"})}get OptionsClass(){return As}apply(t,i){let n=i.yamlKeysToRemove;if(n.length===0)return t;let r=tn(t);if(r===null)return t;let a=r;for(let s of n){let o=s.trim();o.endsWith(":")&&(o=o.substring(0,o.length-1)),a=ut(a,o)}return t.replace(r,a)}get exampleBuilders(){return[new y({description:'Removes the values specified in `YAML Keys to Remove` = "status:\nkeywords\ndate"',before:p` + `})]}get optionBuilders(){return[new $e({OptionsClass:io,nameKey:"rules.remove-trailing-punctuation-in-heading.punctuation-to-remove.name",descriptionKey:"rules.remove-trailing-punctuation-in-heading.punctuation-to-remove.description",optionsKey:"punctuationToRemove"})]}};da=A([b.register],da);var to=class{constructor(){this.yamlKeysToRemove=[]}},ua=class extends b{constructor(){super({nameKey:"rules.remove-yaml-keys.name",descriptionKey:"rules.remove-yaml-keys.description",type:"YAML"})}get OptionsClass(){return to}apply(t,i){let n=i.yamlKeysToRemove;if(n.length===0)return t;let r=kn(t);if(r===null)return t;let a=r;for(let s of n){let o=s.trim();o.endsWith(":")&&(o=o.substring(0,o.length-1)),a=Et(a,o)}return t.replace(r,a)}get exampleBuilders(){return[new y({description:'Removes the values specified in `YAML Keys to Remove` = "status:\nkeywords\ndate"',before:p` --- language: Typescript type: programming @@ -1948,7 +2108,62 @@ $4`);while(a);return s}}get OptionsClass(){return kl}apply(i,n){let r=`(( |\\t)* # Header Context ${""} Text - `,options:{yamlKeysToRemove:["status:","keywords","date"]}})]}get optionBuilders(){return[new be({OptionsClass:As,nameKey:"rules.remove-yaml-keys.yaml-keys-to-remove.name",descriptionKey:"rules.remove-yaml-keys.yaml-keys-to-remove.description",optionsKey:"yamlKeysToRemove"})]}};Rr=A([w.register],Rr);var Ml=class{},Dr=class extends w{constructor(){super({nameKey:"rules.space-after-list-markers.name",descriptionKey:"rules.space-after-list-markers.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return Ml}apply(t,i){return t=t.replace(/^(\s*\d+\.|\s*[-+*])[^\S\r\n]+/gm,"$1 "),t.replace(/^(\s*\d+\.|\s*[-+*]\s+\[[ xX]\])[^\S\r\n]+/gm,"$1 ")}get exampleBuilders(){return[new y({description:"A single space is left between the list marker and the text of the list item",before:p` + `,options:{yamlKeysToRemove:["status:","keywords","date"]}})]}get optionBuilders(){return[new me({OptionsClass:to,nameKey:"rules.remove-yaml-keys.yaml-keys-to-remove.name",descriptionKey:"rules.remove-yaml-keys.yaml-keys-to-remove.description",optionsKey:"yamlKeysToRemove"})]}};ua=A([b.register],ua);var mi=class{constructor(){this.aliasArrayStyle="single-line";this.sortAliasKey=!0;this.tagArrayStyle="single-line";this.sortTagKey=!0;this.sortArrayKeys=!0;this.sortOrder="Ascending Alphabetical";this.ignoreSortArrayKeys=[];this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};A([b.noSettingControl()],mi.prototype,"aliasArrayStyle",2),A([b.noSettingControl()],mi.prototype,"tagArrayStyle",2),A([b.noSettingControl()],mi.prototype,"defaultEscapeCharacter",2),A([b.noSettingControl()],mi.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var pa=class extends b{constructor(){super({nameKey:"rules.sort-yaml-array-values.name",descriptionKey:"rules.sort-yaml-array-values.description",type:"YAML"})}get OptionsClass(){return mi}apply(t,i){return ye(t,n=>{let r=si(n.replace(`--- +`,"").replace(` +---`,""));if(!r)return n;for(let a of xi)if(i.sortAliasKey&&Object.keys(r).includes(a)){n=se(n,a,we(at(this.sortArray(Ie(ue(n,a)),i.sortOrder)),i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0));break}for(let a of vi)if(i.sortTagKey&&Object.keys(r).includes(a)){n=se(n,a,we(rt(this.sortArray(Ie(ue(n,a)),i.sortOrder)),i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays));break}if(i.sortArrayKeys){let a=[...xi,...vi,...i.ignoreSortArrayKeys];for(let s of Object.keys(r)){if(a.includes(s)||!Array.isArray(r[s])||r[s].length!==0&&typeof r[s][0]=="object"&&r[s][0]!==null)continue;let o=ue(n,s),l="single-line";o.includes(` +`)&&(l="multi-line");let c=this.sortArray(Ie(o),i.sortOrder);n=se(n,s,we(c,l,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays))}}return n})}sortArray(t,i){return t==null||typeof t=="string"||t.length<=1||(t.sort(function(n,r){let a=n.toLowerCase().localeCompare(r.toLowerCase());return a===0?n.localeCompare(r):a}),i==="Ascending Alphabetical")||t.reverse(),t}get exampleBuilders(){return[new y({description:"Sorting YAML array values alphabetically",before:p` + --- + tags: [computer, research, androids, Computer] + aliases: + - Title 1 + - Title 2 + --- + `,after:p` + --- + tags: [androids, computer, Computer, research] + aliases: + - Title 1 + - Title 2 + --- + `,options:{aliasArrayStyle:"multi-line"}}),new y({description:"Sorting YAML array values to be alphabetically descending",before:p` + --- + tags: [computer, research, androids, Computer] + aliases: + - Title 1 + - Title 2 + --- + `,after:p` + --- + tags: [research, Computer, computer, androids] + aliases: + - Title 2 + - Title 1 + --- + `,options:{aliasArrayStyle:"multi-line"}}),new y({description:"Sort YAML Arrays respects list of keys to not sort values of for normal arrays (keys to ignore is just `arr2` for this example)",before:p` + --- + tags: [computer, research] + aliases: + - Title 1 + - Title 2 + arr1: [val, val2, val1] + arr2: + - val + - val2 + - val1 + --- + `,after:p` + --- + tags: [computer, research] + aliases: + - Title 1 + - Title 2 + arr1: [val, val1, val2] + arr2: + - val + - val2 + - val1 + --- + `,options:{aliasArrayStyle:"multi-line",ignoreSortArrayKeys:["arr2"]}})]}get optionBuilders(){return[new U({OptionsClass:mi,nameKey:"rules.sort-yaml-array-values.sort-alias-key.name",descriptionKey:"rules.sort-yaml-array-values.sort-alias-key.description",optionsKey:"sortAliasKey"}),new U({OptionsClass:mi,nameKey:"rules.sort-yaml-array-values.sort-tag-key.name",descriptionKey:"rules.sort-yaml-array-values.sort-tag-key.description",optionsKey:"sortTagKey"}),new U({OptionsClass:mi,nameKey:"rules.sort-yaml-array-values.sort-array-keys.name",descriptionKey:"rules.sort-yaml-array-values.sort-array-keys.description",optionsKey:"sortArrayKeys"}),new me({OptionsClass:mi,nameKey:"rules.sort-yaml-array-values.ignore-keys.name",descriptionKey:"rules.sort-yaml-array-values.ignore-keys.description",optionsKey:"ignoreSortArrayKeys"}),new ne({OptionsClass:mi,nameKey:"rules.sort-yaml-array-values.sort-order.name",descriptionKey:"rules.sort-yaml-array-values.sort-order.description",optionsKey:"sortOrder",records:[{value:"Ascending Alphabetical",description:"Sorts the array values from a to z"},{value:"Descending Alphabetical",description:"Sorts the array values from z to a"}]})]}};pa=A([b.register],pa);var mc=class{},ma=class extends b{constructor(){super({nameKey:"rules.space-after-list-markers.name",descriptionKey:"rules.space-after-list-markers.description",type:"Spacing",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.link,h.wikiLink,h.tag]})}get OptionsClass(){return mc}apply(t,i){return t=t.replace(/^(\s*\d+\.|\s*[-+*])[^\S\r\n]+/gm,"$1 "),t.replace(/^(\s*\d+\.|\s*[-+*]\s+\[[ xX]\])[^\S\r\n]+/gm,"$1 ")}get exampleBuilders(){return[new y({description:"A single space is left between the list marker and the text of the list item",before:p` 1. Item 1 2. Item 2 ${""} @@ -1962,7 +2177,7 @@ $4`);while(a);return s}}get OptionsClass(){return kl}apply(i,n){let r=`(( |\\t)* - [ ] Item 1 - [x] Item 2 \t- [ ] Item 3 - `})]}get optionBuilders(){return[]}};Dr=A([w.register],Dr);var ql=class{},Nr=class extends w{constructor(){super({nameKey:"rules.space-between-chinese-japanese-or-korean-and-english-or-numbers.name",descriptionKey:"rules.space-between-chinese-japanese-or-korean-and-english-or-numbers.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.inlineCode,f.yaml,f.image,f.link,f.wikiLink,f.tag,f.math,f.inlineMath,f.html]})}get OptionsClass(){return ql}apply(t,i){let n=/(\p{sc=Han}|\p{sc=Katakana}|\p{sc=Hiragana}|\p{sc=Hangul})( *)(\[[^[]*\]\(.*\)|`[^`]*`|\w+|[-+'"([¥$]|\*[^*])/gmu,r=/(\[[^[]*\]\(.*\)|`[^`]*`|\w+|[-+;:'"°%$)\]]|[^*]\*)( *)(\p{sc=Han}|\p{sc=Katakana}|\p{sc=Hiragana}|\p{sc=Hangul})/gmu,a=`${f.link.placeholder}|${f.inlineMath.placeholder}|${f.inlineCode.placeholder}|${f.wikiLink.placeholder}`.replaceAll("{","\\{").replaceAll("}","\\}"),s=new RegExp(`(\\p{sc=Han}|\\p{sc=Katakana}|\\p{sc=Hiragana}|\\p{sc=Hangul})( *)(${a})`,"gmu"),o=new RegExp(`(${a})( *)(\\p{sc=Han}|\\p{sc=Katakana}|\\p{sc=Hiragana}|\\p{sc=Hangul})`,"gmu"),l=function(c){return c.replace(n,"$1 $3").replace(r,"$1 $3")},d=we([f.italics,f.bold],t,l);return d=d.replace(s,"$1 $3").replace(o,"$1 $3"),d=zu(d,l),d=Su(d,l),d}get exampleBuilders(){return[new y({description:"Space between Chinese and English",before:p` + `})]}get optionBuilders(){return[]}};ma=A([b.register],ma);var gc=class{},ga=class extends b{constructor(){super({nameKey:"rules.space-between-chinese-japanese-or-korean-and-english-or-numbers.name",descriptionKey:"rules.space-between-chinese-japanese-or-korean-and-english-or-numbers.description",type:"Spacing",ruleIgnoreTypes:[h.code,h.inlineCode,h.yaml,h.image,h.link,h.wikiLink,h.tag,h.math,h.inlineMath,h.html]})}get OptionsClass(){return gc}apply(t,i){let n=/(\p{sc=Han}|\p{sc=Katakana}|\p{sc=Hiragana}|\p{sc=Hangul})( *)(\[[^[]*\]\(.*\)|`[^`]*`|\w+|[-+'"([¥$]|\*[^*])/gmu,r=/(\[[^[]*\]\(.*\)|`[^`]*`|\w+|[-+;:'"°%$)\]]|[^*]\*)( *)(\p{sc=Han}|\p{sc=Katakana}|\p{sc=Hiragana}|\p{sc=Hangul})/gmu,a=`${h.link.placeholder}|${h.inlineMath.placeholder}|${h.inlineCode.placeholder}|${h.wikiLink.placeholder}`.replaceAll("{","\\{").replaceAll("}","\\}"),s=new RegExp(`(\\p{sc=Han}|\\p{sc=Katakana}|\\p{sc=Hiragana}|\\p{sc=Hangul})( *)(${a})`,"gmu"),o=new RegExp(`(${a})( *)(\\p{sc=Han}|\\p{sc=Katakana}|\\p{sc=Hiragana}|\\p{sc=Hangul})`,"gmu"),l=function(d){return d.replace(n,"$1 $3").replace(r,"$1 $3")},c=Le([h.italics,h.bold],t,l);return c=c.replace(s,"$1 $3").replace(o,"$1 $3"),c=Gu(c,l),c=Qu(c,l),c}get exampleBuilders(){return[new y({description:"Space between Chinese and English",before:p` 中文字符串english中文字符串。 `,after:p` 中文字符串 english 中文字符串。 @@ -2014,7 +2229,7 @@ $4`);while(a);return s}}get OptionsClass(){return kl}apply(i,n){let r=`(( |\\t)* カタカナ english カタカナ ハンカクカタカナ english123全角数字 한글 english 한글 - `})]}get optionBuilders(){return[]}};Nr=A([w.register],Nr);var Ts=class{constructor(){this.style="consistent"}},jr=class extends w{constructor(){super({nameKey:"rules.strong-style.name",descriptionKey:"rules.strong-style.description",type:"Content",ruleIgnoreTypes:[f.code,f.yaml,f.link,f.wikiLink,f.tag,f.math,f.inlineMath]})}get OptionsClass(){return Ts}apply(t,i){return Ya(t,i.style,"strong")}get exampleBuilders(){return[new y({description:"Strong indicators should use underscores when style is set to 'underscore'",before:p` + `})]}get optionBuilders(){return[]}};ga=A([b.register],ga);var no=class{constructor(){this.style="consistent"}},ha=class extends b{constructor(){super({nameKey:"rules.strong-style.name",descriptionKey:"rules.strong-style.description",type:"Content",ruleIgnoreTypes:[h.code,h.yaml,h.link,h.wikiLink,h.tag,h.math,h.inlineMath]})}get OptionsClass(){return no}apply(t,i){return xs(t,i.style,"strong")}get exampleBuilders(){return[new y({description:"Strong indicators should use underscores when style is set to 'underscore'",before:p` # Strong/Bold Cases ${""} **Test bold** @@ -2112,7 +2327,7 @@ $4`);while(a);return s}}get OptionsClass(){return kl}apply(i,n){let r=`(( |\\t)* This is ___nested emphasis_ and ending bold__ ${""} __Test bold__ - `,options:{style:"consistent"}})]}get optionBuilders(){return[new ne({OptionsClass:Ts,nameKey:"rules.strong-style.style.name",descriptionKey:"rules.strong-style.style.description",optionsKey:"style",records:[{value:"consistent",description:"Makes sure the first instance of strong is the style that will be used throughout the document"},{value:"asterisk",description:"Makes sure ** is the strong indicator"},{value:"underscore",description:"Makes sure __ is the strong indicator"}]})]}};jr=A([w.register],jr);var Ls=class{constructor(){this.twoSpaceLineBreak=!1}},Kr=class extends w{constructor(){super({nameKey:"rules.trailing-spaces.name",descriptionKey:"rules.trailing-spaces.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return Ls}apply(t,i){return i.twoSpaceLineBreak?(t=t.replace(/(\S)[ \t]$/gm,"$1"),t=t.replace(/(\S)[ \t]{3,}$/gm,"$1"),t=t.replace(/(\S)( ?\t\t? ?)$/gm,"$1"),t):t.replace(/[ \t]+$/gm,"")}get exampleBuilders(){return[new y({description:"Removes trailing spaces and tabs.",before:p` + `,options:{style:"consistent"}})]}get optionBuilders(){return[new ne({OptionsClass:no,nameKey:"rules.strong-style.style.name",descriptionKey:"rules.strong-style.style.description",optionsKey:"style",records:[{value:"consistent",description:"Makes sure the first instance of strong is the style that will be used throughout the document"},{value:"asterisk",description:"Makes sure ** is the strong indicator"},{value:"underscore",description:"Makes sure __ is the strong indicator"}]})]}};ha=A([b.register],ha);var ro=class{constructor(){this.twoSpaceLineBreak=!1}},Vt=class extends b{constructor(){super({nameKey:"rules.trailing-spaces.name",descriptionKey:"rules.trailing-spaces.description",type:"Spacing",hasSpecialExecutionOrder:!0,ruleIgnoreTypes:[h.code,h.math,h.yaml,h.link,h.wikiLink,h.tag]})}get OptionsClass(){return ro}apply(t,i){return i.twoSpaceLineBreak?(t=t.replace(/(\S)[ \t]$/gm,"$1"),t=t.replace(/(\S)[ \t]{3,}$/gm,"$1"),t=t.replace(/(\S)( ?\t\t? ?)$/gm,"$1"),t):t.replace(/[ \t]+$/gm,"")}get exampleBuilders(){return[new y({description:"Removes trailing spaces and tabs.",before:p` # H1 Line with trailing spaces and tabs. ${""} `,after:p` @@ -2124,7 +2339,7 @@ $4`);while(a);return s}}get OptionsClass(){return kl}apply(i,n){let r=`(( |\\t)* `,after:p` # H1 Line with trailing spaces and tabs. ${""} - `,options:{twoSpaceLineBreak:!0}})]}get optionBuilders(){return[new U({OptionsClass:Ls,nameKey:"rules.trailing-spaces.twp-space-line-break.name",descriptionKey:"rules.trailing-spaces.twp-space-line-break.description",optionsKey:"twoSpaceLineBreak"})]}};Kr=A([w.register],Kr);var Il=class{},Yr=class extends w{constructor(){super({nameKey:"rules.two-spaces-between-lines-with-content.name",descriptionKey:"rules.two-spaces-between-lines-with-content.description",type:"Content",ruleIgnoreTypes:[f.obsidianMultiLineComments,f.yaml,f.table]})}get OptionsClass(){return Il}apply(t,i){return xu(t)}get exampleBuilders(){return[new y({description:"Make sure two spaces are added to the ends of lines that have content on it and the next line for lists, blockquotes, and paragraphs",before:p` + `,options:{twoSpaceLineBreak:!0}})]}get optionBuilders(){return[new U({OptionsClass:ro,nameKey:"rules.trailing-spaces.twp-space-line-break.name",descriptionKey:"rules.trailing-spaces.twp-space-line-break.description",optionsKey:"twoSpaceLineBreak"})]}};Vt=A([b.register],Vt);var hc=class{},fa=class extends b{constructor(){super({nameKey:"rules.two-spaces-between-lines-with-content.name",descriptionKey:"rules.two-spaces-between-lines-with-content.description",type:"Content",ruleIgnoreTypes:[h.obsidianMultiLineComments,h.yaml,h.table]})}get OptionsClass(){return hc}apply(t,i){return Wu(t)}get exampleBuilders(){return[new y({description:"Make sure two spaces are added to the ends of lines that have content on it and the next line for lists, blockquotes, and paragraphs",before:p` # Heading 1 First paragraph stays as the first paragraph ${""} @@ -2202,7 +2417,7 @@ $4`);while(a);return s}}get OptionsClass(){return kl}apply(i,n){let r=`(( |\\t)* </div> Even more content here ${""} - `})]}get optionBuilders(){return[]}};Yr=A([w.register],Yr);var Es=class{constructor(){this.listStyle="consistent"}},Pr=class extends w{constructor(){super({nameKey:"rules.unordered-list-style.name",descriptionKey:"rules.unordered-list-style.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.tag]})}get OptionsClass(){return Es}apply(t,i){return Ou(t,i.listStyle)}get exampleBuilders(){return[new y({description:"Unordered lists have their indicator updated to `*` when `List item style = 'consistent'` and `*` is the first unordered list indicator",before:p` + `})]}get optionBuilders(){return[]}};fa=A([b.register],fa);var ao=class{constructor(){this.listStyle="consistent"}},ya=class extends b{constructor(){super({nameKey:"rules.unordered-list-style.name",descriptionKey:"rules.unordered-list-style.description",type:"Content",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.tag]})}get OptionsClass(){return ao}apply(t,i){return ip(t,i.listStyle)}get exampleBuilders(){return[new y({description:"Unordered lists have their indicator updated to `*` when `List item style = 'consistent'` and `*` is the first unordered list indicator",before:p` 1. ordered item 1 2. ordered item 2 ${""} @@ -2312,10 +2527,10 @@ $4`);while(a);return s}}get OptionsClass(){return kl}apply(i,n){let r=`(( |\\t)* > > + Subitem 2 > > + Sub sub item 1 > > + Subitem 3 - `,options:{listStyle:"+"}})]}get optionBuilders(){return[new ne({OptionsClass:Es,nameKey:"rules.unordered-list-style.list-style.name",descriptionKey:"rules.unordered-list-style.list-style.description",optionsKey:"listStyle",records:[{value:"consistent",description:"Makes sure unordered list items use a consistent list item indicator in the file which will be based on the first list item found"},{value:"-",description:"Makes sure unordered list items use `-` as their indicator"},{value:"*",description:"Makes sure unordered list items use `*` as their indicator"},{value:"+",description:"Makes sure unordered list items use `+` as their indicator"}]})]}};Pr=A([w.register],Pr);var qi=class{constructor(){this.priorityKeysAtStartOfYaml=!0;this.yamlKeyPrioritySortOrder=[];this.yamlSortOrderForOtherKeys="None"}};A([w.noSettingControl()],qi.prototype,"dateModifiedKey",2),A([w.noSettingControl()],qi.prototype,"currentTimeFormatted",2),A([w.noSettingControl()],qi.prototype,"yamlTimestampDateModifiedEnabled",2);var Mt=class extends w{constructor(){super({nameKey:"rules.yaml-key-sort.name",descriptionKey:"rules.yaml-key-sort.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return qi}apply(t,i){let n=tn(t);if(n===null)return t;let r=n,a=i.priorityKeysAtStartOfYaml,s=i.yamlKeyPrioritySortOrder,o=0;for(let x of s)x.endsWith(":")&&(s[o]=x.substring(0,x.length-1)),o++;let l=this.getYAMLKeysSorted(r,s),d=l.sortedYamlKeyValues;r=l.remainingYaml;let c=i.yamlSortOrderForOtherKeys,u=Mi(r);if(u==null)return this.getTextWithNewYamlFrontmatter(t,n,d,r,a,i.dateModifiedKey,i.currentTimeFormatted,i.yamlTimestampDateModifiedEnabled);let m=Object.keys(u),g;if(c==="Ascending Alphabetical")g=this.sortAlphabeticallyAsc;else if(c==="Descending Alphabetical")g=this.sortAlphabeticallyDesc;else return this.getTextWithNewYamlFrontmatter(t,n,d,r,a,i.dateModifiedKey,i.currentTimeFormatted,i.yamlTimestampDateModifiedEnabled);m=m.sort(g);let h=this.getYAMLKeysSorted(r,m);return this.getTextWithNewYamlFrontmatter(t,n,d,h.sortedYamlKeyValues,a,i.dateModifiedKey,i.currentTimeFormatted,i.yamlTimestampDateModifiedEnabled)}getYAMLKeysSorted(t,i){let n="";for(let r of i){let a=Ce(t,r);a!==null&&(a.includes(` -`)?n+=`${r}:${a} -`:n+=`${r}: ${a} -`,t=ut(t,r))}return{remainingYaml:t,sortedYamlKeyValues:n}}updateDateModifiedIfYamlChanged(t,i,n,r){return t==i?i:Te(i,n," "+r)}getTextWithNewYamlFrontmatter(t,i,n,r,a,s,o,l){let d=`${r}${n}`;return a&&(d=`${n}${r}`),l&&(d=this.updateDateModifiedIfYamlChanged(i,d,s,o)),t.replace(i,d)}sortAlphabeticallyAsc(t,i){return t=t.toLowerCase(),i=i.toLowerCase(),t<i?-1:i<t?1:0}sortAlphabeticallyDesc(t,i){return t=t.toLowerCase(),i=i.toLowerCase(),t>i?-1:i>t?1:0}get exampleBuilders(){return[new y({description:"Sorts YAML keys in order specified by `YAML Key Priority Sort Order` has a sort order of `date type language`",before:p` + `,options:{listStyle:"+"}})]}get optionBuilders(){return[new ne({OptionsClass:ao,nameKey:"rules.unordered-list-style.list-style.name",descriptionKey:"rules.unordered-list-style.list-style.description",optionsKey:"listStyle",records:[{value:"consistent",description:"Makes sure unordered list items use a consistent list item indicator in the file which will be based on the first list item found"},{value:"-",description:"Makes sure unordered list items use `-` as their indicator"},{value:"*",description:"Makes sure unordered list items use `*` as their indicator"},{value:"+",description:"Makes sure unordered list items use `+` as their indicator"}]})]}};ya=A([b.register],ya);var Pi=class{constructor(){this.priorityKeysAtStartOfYaml=!0;this.yamlKeyPrioritySortOrder=[];this.yamlSortOrderForOtherKeys="None"}};A([b.noSettingControl()],Pi.prototype,"dateModifiedKey",2),A([b.noSettingControl()],Pi.prototype,"currentTimeFormatted",2),A([b.noSettingControl()],Pi.prototype,"yamlTimestampDateModifiedEnabled",2);var Gt=class extends b{constructor(){super({nameKey:"rules.yaml-key-sort.name",descriptionKey:"rules.yaml-key-sort.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return Pi}apply(t,i){let n=kn(t);if(n===null)return t;let r=n,a=i.priorityKeysAtStartOfYaml,s=i.yamlKeyPrioritySortOrder,o=0;for(let w of s)w.endsWith(":")&&(s[o]=w.substring(0,w.length-1)),o++;let l=si(r),c=this.getYAMLKeysSorted(r,s,l),d=c.sortedYamlKeyValues;r=c.remainingYaml;let u=i.yamlSortOrderForOtherKeys;if(l==null)return this.getTextWithNewYamlFrontmatter(t,n,d,r,a,i.dateModifiedKey,i.currentTimeFormatted,i.yamlTimestampDateModifiedEnabled);let g=Object.keys(l),m;if(u==="Ascending Alphabetical")m=this.sortAlphabeticallyAsc;else if(u==="Descending Alphabetical")m=this.sortAlphabeticallyDesc;else return this.getTextWithNewYamlFrontmatter(t,n,d,r,a,i.dateModifiedKey,i.currentTimeFormatted,i.yamlTimestampDateModifiedEnabled);g=g.sort(m);let f=this.getYAMLKeysSorted(r,g,l);return this.getTextWithNewYamlFrontmatter(t,n,d,f.sortedYamlKeyValues,a,i.dateModifiedKey,i.currentTimeFormatted,i.yamlTimestampDateModifiedEnabled)}getYAMLKeysSorted(t,i,n){let r="";for(let a of i){if(!(a in n))continue;let s=ue(t,a,!1);s!==null&&(s.includes(` +`)?r+=`${a}:${s} +`:r+=`${a}: ${s} +`,t=Et(t,a,!1))}return{remainingYaml:t,sortedYamlKeyValues:r}}updateDateModifiedIfYamlChanged(t,i,n,r){return t==i?i:se(i,n," "+r)}getTextWithNewYamlFrontmatter(t,i,n,r,a,s,o,l){let c=`${r}${n}`;return a&&(c=`${n}${r}`),l&&(c=this.updateDateModifiedIfYamlChanged(i,c,s,o)),t.replace(i,c)}sortAlphabeticallyAsc(t,i){return t=t.toLowerCase(),i=i.toLowerCase(),t<i?-1:i<t?1:0}sortAlphabeticallyDesc(t,i){return t=t.toLowerCase(),i=i.toLowerCase(),t>i?-1:i>t?1:0}get exampleBuilders(){return[new y({description:"Sorts YAML keys in order specified by `YAML Key Priority Sort Order` has a sort order of `date type language`",before:p` --- language: Typescript type: programming @@ -2388,28 +2603,28 @@ $4`);while(a);return s}}get OptionsClass(){return kl}apply(i,n){let r=`(( |\\t)* type: programming language: Typescript --- - `,options:{yamlKeyPrioritySortOrder:["date","type","language"],yamlSortOrderForOtherKeys:"Descending Alphabetical",priorityKeysAtStartOfYaml:!1}})]}get optionBuilders(){return[new be({OptionsClass:qi,nameKey:"rules.yaml-key-sort.yaml-key-priority-sort-order.name",descriptionKey:"rules.yaml-key-sort.yaml-key-priority-sort-order.description",optionsKey:"yamlKeyPrioritySortOrder"}),new U({OptionsClass:qi,nameKey:"rules.yaml-key-sort.priority-keys-at-start-of-yaml.name",descriptionKey:"rules.yaml-key-sort.priority-keys-at-start-of-yaml.description",optionsKey:"priorityKeysAtStartOfYaml"}),new ne({OptionsClass:qi,nameKey:"rules.yaml-key-sort.yaml-sort-order-for-other-keys.name",descriptionKey:"rules.yaml-key-sort.yaml-sort-order-for-other-keys.description",optionsKey:"yamlSortOrderForOtherKeys",records:[{value:"None",description:"No sorting other than what is in the YAML Key Priority Sort Order text area"},{value:"Ascending Alphabetical",description:"Sorts the keys based on key value from a to z"},{value:"Descending Alphabetical",description:"Sorts the keys based on key value from z to a"}]})]}};Mt=A([w.register],Mt);var Je=require("obsidian");var gp=da(mp());var Ye=class{constructor(){this.dateCreatedKey="date created";this.dateCreated=!0;this.forceRetentionOfCreatedValue=!1;this.format="dddd, MMMM Do YYYY, h:mm:ss a";this.dateModified=!0;this.dateModifiedKey="date modified";this.locale="en"}};A([w.noSettingControl()],Ye.prototype,"alreadyModified",2),A([w.noSettingControl()],Ye.prototype,"fileCreatedTime",2),A([w.noSettingControl()],Ye.prototype,"fileModifiedTime",2),A([w.noSettingControl()],Ye.prototype,"locale",2),A([w.noSettingControl()],Ye.prototype,"currentTime",2),A([w.noSettingControl()],Ye.prototype,"fileName",2);var Ui=class extends w{constructor(){super({nameKey:"rules.yaml-timestamp.name",descriptionKey:"rules.yaml-timestamp.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return Ye}apply(t,i){let n=i.alreadyModified,r=bi(t);return n=n||r!==t,i.format=i.format.trimEnd(),Ae(r,a=>{if(i.dateCreated){let s=!1;[a,s]=this.handleDateCreatedValue(a,i),n=n||s}return i.dateModified&&(a=this.handleDateModifiedValue(a,n,i)),a})}handleDateCreatedValue(t,i){let n=!1,r=` + `,options:{yamlKeyPrioritySortOrder:["date","type","language"],yamlSortOrderForOtherKeys:"Descending Alphabetical",priorityKeysAtStartOfYaml:!1}})]}get optionBuilders(){return[new me({OptionsClass:Pi,nameKey:"rules.yaml-key-sort.yaml-key-priority-sort-order.name",descriptionKey:"rules.yaml-key-sort.yaml-key-priority-sort-order.description",optionsKey:"yamlKeyPrioritySortOrder"}),new U({OptionsClass:Pi,nameKey:"rules.yaml-key-sort.priority-keys-at-start-of-yaml.name",descriptionKey:"rules.yaml-key-sort.priority-keys-at-start-of-yaml.description",optionsKey:"priorityKeysAtStartOfYaml"}),new ne({OptionsClass:Pi,nameKey:"rules.yaml-key-sort.yaml-sort-order-for-other-keys.name",descriptionKey:"rules.yaml-key-sort.yaml-sort-order-for-other-keys.description",optionsKey:"yamlSortOrderForOtherKeys",records:[{value:"None",description:"No sorting other than what is in the YAML Key Priority Sort Order text area"},{value:"Ascending Alphabetical",description:"Sorts the keys based on key value from a to z"},{value:"Descending Alphabetical",description:"Sorts the keys based on key value from z to a"}]})]}};Gt=A([b.register],Gt);var li=require("obsidian");var jp=dn(Yp());var Xe=class{constructor(){this.dateCreatedKey="date created";this.dateCreated=!0;this.forceRetentionOfCreatedValue=!1;this.format="dddd, MMMM Do YYYY, h:mm:ss a";this.dateModified=!0;this.dateModifiedKey="date modified";this.locale="en"}};A([b.noSettingControl()],Xe.prototype,"alreadyModified",2),A([b.noSettingControl()],Xe.prototype,"fileCreatedTime",2),A([b.noSettingControl()],Xe.prototype,"fileModifiedTime",2),A([b.noSettingControl()],Xe.prototype,"locale",2),A([b.noSettingControl()],Xe.prototype,"currentTime",2),A([b.noSettingControl()],Xe.prototype,"fileName",2);var dt=class extends b{constructor(){super({nameKey:"rules.yaml-timestamp.name",descriptionKey:"rules.yaml-timestamp.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return Xe}apply(t,i){let n=i.alreadyModified,r=Oi(t);return n=n||r!==t,i.format=i.format.trimEnd(),ye(r,a=>{if(i.dateCreated){let s=!1;[a,s]=this.handleDateCreatedValue(a,i),n=n||s}return i.dateModified&&(a=this.handleDateModifiedValue(a,n,i)),a})}handleDateCreatedValue(t,i){let n=!1,r=` ${i.dateCreatedKey}: [^ ]+ `,a=` ${i.dateCreatedKey}:[ ]* -`,s=new RegExp(a),o=new RegExp(r),l=(0,Je.moment)(i.fileCreatedTime);l.locale(i.locale);let d=l.format(i.format),c=` -${i.dateCreatedKey}: ${d}`,u=o.test(t);if(!u&&s.test(t))t=t.replace(s,Ke(c)+` -`),n=!0;else if(u){if(u){let m=this.getYAMLTimestampString(t,o,i.dateCreatedKey);if(i.forceRetentionOfCreatedValue){let g=this.parseValueToCurrentFormatIfPossible(m,i.format,i.locale);if(g==null)throw new Error(E("logs.invalid-date-format-error").replace("{DATE}",m).replace("{FILE_NAME}",i.fileName));if(g.format(i.format)!==m){let h=` -${i.dateCreatedKey}: ${g.format(i.format)}`;t=t.replace(o,Ke(h)+` -`),n=!0}}else{let g=(0,Je.moment)(m,i.format,i.locale,!0);(g==null||!g.isValid())&&(t=t.replace(o,Ke(c)+` -`),n=!0)}}}else{let m=t.indexOf(` ----`);t=st(t,m,` -${i.dateCreatedKey}: ${d}`),n=!0}return[t,n]}handleDateModifiedValue(t,i,n){let r=` +`,s=new RegExp(a),o=new RegExp(r),l=(0,li.moment)(i.fileCreatedTime);l.locale(i.locale);let c=l.format(i.format),d=` +${i.dateCreatedKey}: ${c}`,u=o.test(t);if(!u&&s.test(t))t=t.replace(s,Ze(d)+` +`),n=!0;else if(u){if(u){let g=this.getYAMLTimestampString(t,o,i.dateCreatedKey);if(i.forceRetentionOfCreatedValue){let m=this.parseValueToCurrentFormatIfPossible(g,i.format,i.locale);if(m==null)throw new Error(E("logs.invalid-date-format-error").replace("{DATE}",g).replace("{FILE_NAME}",i.fileName));if(m.format(i.format)!==g){let f=` +${i.dateCreatedKey}: ${m.format(i.format)}`;t=t.replace(o,Ze(f)+` +`),n=!0}}else{let m=(0,li.moment)(g,i.format,i.locale,!0);(m==null||!m.isValid())&&(t=t.replace(o,Ze(d)+` +`),n=!0)}}}else{let g=t.indexOf(` +---`);t=kt(t,g,` +${i.dateCreatedKey}: ${c}`),n=!0}return[t,n]}handleDateModifiedValue(t,i,n){let r=` ${n.dateModifiedKey}: [^ ]+ `,a=` ${n.dateModifiedKey}:[ ]* -`,s=new RegExp(a),o=new RegExp(r),l=(0,Je.moment)(n.fileModifiedTime);l.locale(n.locale);let d=n.currentTime.format(n.format),c=` -${n.dateModifiedKey}: ${d}`,u=o.test(t);if(u){let m=(0,Je.moment)(t.match(o)[0].replace(n.dateModifiedKey+":","").trim(),n.format,n.locale,!0);(i||m==null||!m.isValid()||this.getTimeDifferenceInSeconds(m,l,n)>5)&&(t=t.replace(o,Ke(c)+` -`))}else if(s.test(t))t=t.replace(s,Ke(c)+` -`);else if(!u){let m=t.indexOf(` ----`);t=st(t,m,c)}return t}parseValueToCurrentFormatIfPossible(t,i,n){if(t==null)return null;let r=(0,Je.moment)(t,i,n,!0);if(r!=null&&r.isValid())return r;let a=(0,gp.default)(t);if(a!=null){let s=(0,Je.moment)(t,a);return s.locale(n),(0,Je.moment)(s.format(i),i,n,!0)}return null}getYAMLTimestampString(t,i,n){return t.match(i)[0].replace(n+":","").trim()}getTimeDifferenceInSeconds(t,i,n){let r=(0,Je.moment)(i.format(n.format),n.format,n.locale,!0);return Math.abs(t.diff(r,"seconds"))}get exampleBuilders(){return[new y({description:"Adds a header with the date.",before:p` +`,s=new RegExp(a),o=new RegExp(r),l=(0,li.moment)(n.fileModifiedTime);l.locale(n.locale);let c=n.currentTime.format(n.format),d=` +${n.dateModifiedKey}: ${c}`,u=o.test(t);if(u){let g=(0,li.moment)(t.match(o)[0].replace(n.dateModifiedKey+":","").trim(),n.format,n.locale,!0);(i||g==null||!g.isValid()||this.getTimeDifferenceInSeconds(g,l,n)>5)&&(t=t.replace(o,Ze(d)+` +`))}else if(s.test(t))t=t.replace(s,Ze(d)+` +`);else if(!u){let g=t.indexOf(` +---`);t=kt(t,g,d)}return t}parseValueToCurrentFormatIfPossible(t,i,n){if(t==null)return null;let r=(0,li.moment)(t,i,n,!0);if(r!=null&&r.isValid())return r;let a=(0,jp.default)(t);if(a!=null){let s=(0,li.moment)(t,a);return s.locale(n),(0,li.moment)(s.format(i),i,n,!0)}return null}getYAMLTimestampString(t,i,n){return t.match(i)[0].replace(n+":","").trim()}getTimeDifferenceInSeconds(t,i,n){let r=(0,li.moment)(i.format(n.format),n.format,n.locale,!0);return Math.abs(t.diff(r,"seconds"))}get exampleBuilders(){return[new y({description:"Adds a header with the date.",before:p` # H1 `,after:p` --- @@ -2417,33 +2632,33 @@ ${n.dateModifiedKey}: ${d}`,u=o.test(t);if(u){let m=(0,Je.moment)(t.match(o)[0]. date modified: Thursday, January 2nd 2020, 12:00:05 am --- # H1 - `,options:{fileCreatedTime:"2020-01-01T00:00:00-00:00",fileModifiedTime:"2020-01-02T00:00:00-00:00",currentTime:(0,Je.moment)("Thursday, January 2nd 2020, 12:00:05 am","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}}),new y({description:"dateCreated option is false",before:p` + `,options:{fileCreatedTime:"2020-01-01T00:00:00-00:00",fileModifiedTime:"2020-01-02T00:00:00-00:00",currentTime:(0,li.moment)("Thursday, January 2nd 2020, 12:00:05 am","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}}),new y({description:"dateCreated option is false",before:p` # H1 `,after:p` --- date modified: Thursday, January 2nd 2020, 12:00:05 am --- # H1 - `,options:{dateCreated:!1,fileCreatedTime:"2020-01-01T00:00:00-00:00",fileModifiedTime:"2020-01-01T00:00:00-00:00",currentTime:(0,Je.moment)("Thursday, January 2nd 2020, 12:00:05 am","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}}),new y({description:"Date Created Key is set",before:p` + `,options:{dateCreated:!1,fileCreatedTime:"2020-01-01T00:00:00-00:00",fileModifiedTime:"2020-01-01T00:00:00-00:00",currentTime:(0,li.moment)("Thursday, January 2nd 2020, 12:00:05 am","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}}),new y({description:"Date Created Key is set",before:p` # H1 `,after:p` --- created: Wednesday, January 1st 2020, 12:00:00 am --- # H1 - `,options:{dateCreated:!0,dateModified:!1,dateCreatedKey:"created",fileCreatedTime:"2020-01-01T00:00:00-00:00",currentTime:(0,Je.moment)("Thursday, January 2nd 2020, 12:00:03 am","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}}),new y({description:"Date Modified Key is set",before:p` + `,options:{dateCreated:!0,dateModified:!1,dateCreatedKey:"created",fileCreatedTime:"2020-01-01T00:00:00-00:00",currentTime:(0,li.moment)("Thursday, January 2nd 2020, 12:00:03 am","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}}),new y({description:"Date Modified Key is set",before:p` # H1 `,after:p` --- modified: Wednesday, January 1st 2020, 4:00:00 pm --- # H1 - `,options:{dateCreated:!1,dateModified:!0,dateModifiedKey:"modified",fileModifiedTime:"2020-01-01T00:00:00-00:00",currentTime:(0,Je.moment)("Wednesday, January 1st 2020, 4:00:00 pm","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}})]}get optionBuilders(){return[new U({OptionsClass:Ye,nameKey:"rules.yaml-timestamp.date-created.name",descriptionKey:"rules.yaml-timestamp.date-created.description",optionsKey:"dateCreated"}),new We({OptionsClass:Ye,nameKey:"rules.yaml-timestamp.date-created-key.name",descriptionKey:"rules.yaml-timestamp.date-created-key.description",optionsKey:"dateCreatedKey"}),new U({OptionsClass:Ye,nameKey:"rules.yaml-timestamp.force-retention-of-create-value.name",descriptionKey:"rules.yaml-timestamp.force-retention-of-create-value.description",optionsKey:"forceRetentionOfCreatedValue"}),new U({OptionsClass:Ye,nameKey:"rules.yaml-timestamp.date-modified.name",descriptionKey:"rules.yaml-timestamp.date-modified.description",optionsKey:"dateModified"}),new We({OptionsClass:Ye,nameKey:"rules.yaml-timestamp.date-modified-key.name",descriptionKey:"rules.yaml-timestamp.date-modified-key.description",optionsKey:"dateModifiedKey"}),new cs({OptionsClass:Ye,nameKey:"rules.yaml-timestamp.format.name",descriptionKey:"rules.yaml-timestamp.format.description",optionsKey:"format"})]}};Ui=A([w.register],Ui);var zi=class{constructor(){this.preserveExistingAliasesSectionStyle=!0;this.keepAliasThatMatchesTheFilename=!1;this.useYamlKeyToKeepTrackOfOldFilenameOrHeading=!0;this.aliasArrayStyle="multi-line";this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};A([w.noSettingControl()],zi.prototype,"aliasArrayStyle",2),A([w.noSettingControl()],zi.prototype,"fileName",2),A([w.noSettingControl()],zi.prototype,"defaultEscapeCharacter",2),A([w.noSettingControl()],zi.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var Hr=class extends w{constructor(){super({nameKey:"rules.yaml-title-alias.name",descriptionKey:"rules.yaml-title-alias.description",type:"YAML"})}get OptionsClass(){return zi}apply(t,i){t=bi(t);let[n,r]=this.getTitleInfo(t,i.fileName,i.aliasArrayStyle,i.defaultEscapeCharacter),a=null,s=t.match(Ge)[1],o=!i.keepAliasThatMatchesTheFilename&&n===i.fileName,l=s.replace(`--- + `,options:{dateCreated:!1,dateModified:!0,dateModifiedKey:"modified",fileModifiedTime:"2020-01-01T00:00:00-00:00",currentTime:(0,li.moment)("Wednesday, January 1st 2020, 4:00:00 pm","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}})]}get optionBuilders(){return[new U({OptionsClass:Xe,nameKey:"rules.yaml-timestamp.date-created.name",descriptionKey:"rules.yaml-timestamp.date-created.description",optionsKey:"dateCreated"}),new $e({OptionsClass:Xe,nameKey:"rules.yaml-timestamp.date-created-key.name",descriptionKey:"rules.yaml-timestamp.date-created-key.description",optionsKey:"dateCreatedKey"}),new U({OptionsClass:Xe,nameKey:"rules.yaml-timestamp.force-retention-of-create-value.name",descriptionKey:"rules.yaml-timestamp.force-retention-of-create-value.description",optionsKey:"forceRetentionOfCreatedValue"}),new U({OptionsClass:Xe,nameKey:"rules.yaml-timestamp.date-modified.name",descriptionKey:"rules.yaml-timestamp.date-modified.description",optionsKey:"dateModified"}),new $e({OptionsClass:Xe,nameKey:"rules.yaml-timestamp.date-modified-key.name",descriptionKey:"rules.yaml-timestamp.date-modified-key.description",optionsKey:"dateModifiedKey"}),new Ks({OptionsClass:Xe,nameKey:"rules.yaml-timestamp.format.name",descriptionKey:"rules.yaml-timestamp.format.description",optionsKey:"format"})]}};dt=A([b.register],dt);var Ii=class{constructor(){this.preserveExistingAliasesSectionStyle=!0;this.keepAliasThatMatchesTheFilename=!1;this.useYamlKeyToKeepTrackOfOldFilenameOrHeading=!0;this.aliasArrayStyle="multi-line";this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};A([b.noSettingControl()],Ii.prototype,"aliasArrayStyle",2),A([b.noSettingControl()],Ii.prototype,"fileName",2),A([b.noSettingControl()],Ii.prototype,"defaultEscapeCharacter",2),A([b.noSettingControl()],Ii.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var ba=class extends b{constructor(){super({nameKey:"rules.yaml-title-alias.name",descriptionKey:"rules.yaml-title-alias.description",type:"YAML"})}get OptionsClass(){return Ii}apply(t,i){t=Oi(t);let[n,r]=this.getTitleInfo(t,i.fileName,i.aliasArrayStyle,i.defaultEscapeCharacter),a=null,s=t.match(Qe)[1],o=!i.keepAliasThatMatchesTheFilename&&n===i.fileName,l=s.replace(`--- `,"").replace(` ----`,""),d=Mi(s);a=d[Za]??null,a!=null&&(a=a+"",a=li(a,i.defaultEscapeCharacter,this.forceEscape(a,i.aliasArrayStyle)));let c=null,u=Object.keys(d);for(let m of Wn)if(u.includes(m)){c=m;break}if(c!=null){let m=Ce(l,c),g="multi-line",h=m==="",x=!1;m.includes(` -`)||(m.match(/^\[.*\]/)===null?(g="single string to single-line",x=!0):g="single-line");let b=Xa(vi(m)),v=this.getNewAliasValue(b,o,r,a);v===""?l=ut(l,c):i.preserveExistingAliasesSectionStyle?!h&&(x&&r==v||!x||b==v)?l=Te(l,c,Qe(v,g,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0)):l=Te(l,c,Qe(v,i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0)):l=Te(l,c,Qe(v,i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0))}else o||(l=Te(l,nl,Qe(r,i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0)));return!i.useYamlKeyToKeepTrackOfOldFilenameOrHeading||o?l=ut(l,Za):l=Te(l,Za,` ${r}`),t=t.replace(`--- +---`,""),c=si(s);a=c[Cs]??null,a!=null&&(a=a+"",a=wi(a,i.defaultEscapeCharacter,this.forceEscape(a,i.aliasArrayStyle)));let d=null,u=Object.keys(c);for(let g of xi)if(u.includes(g)){d=g;break}if(d!=null){let g=ue(l,d),m="multi-line",f=g==="",w=!1;g.includes(` +`)||(g.match(/^\[.*\]/)===null?(m="single string to single-line",w=!0):m="single-line");let x=at(Ie(g)),v=this.getNewAliasValue(x,o,r,a);v===""?l=Et(l,d):i.preserveExistingAliasesSectionStyle?!f&&(w&&r==v||!w||x==v)?l=se(l,d,we(v,m,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0)):l=se(l,d,we(v,i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0)):l=se(l,d,we(v,i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0))}else o||(l=se(l,Dl,we(r,i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0)));return!i.useYamlKeyToKeepTrackOfOldFilenameOrHeading||o?l=Et(l,Cs):l=se(l,Cs,` ${r}`),t=t.replace(`--- ${s}---`,`--- -${l}---`),t}getTitleInfo(t,i,n,r){let a=we([f.code,f.math,f.yaml,f.tag],t,Ga);a=a||i;let s=li(a,r,this.forceEscape(a,n));return[a,s]}forceEscape(t,i){return Oa(t)||t.includes(",")&&(i==="single-line"||i==="single string to single-line"||i==="single string comma delimited")}getNewAliasValue(t,i,n,r){if(t==null)return i?"":n;if(typeof t=="string")i?t===n&&(t=""):r===t?t=n:t=[n,t];else if(r!==null){let a=t.indexOf(r);a===-1&&nn(r)&&(a=t.indexOf(r.substring(1,r.length-1))),a!==-1?i?t.splice(a,1):t[a]=n:t=[n,...t]}else{let a=t.indexOf(n);a!==-1?i&&t.splice(a,1):i||(t=[n,...t])}return t===""||t.length===0?"":t}get exampleBuilders(){return[new y({description:"Adds a header with the title from heading.",before:p` +${l}---`),t}getTitleInfo(t,i,n,r){let a=Le([h.code,h.math,h.yaml,h.tag],t,Es);a=a||i;let s=wi(a,r,this.forceEscape(a,n));return[a,s]}forceEscape(t,i){return as(t)||t.includes(",")&&(i==="single-line"||i==="single string to single-line"||i==="single string comma delimited")}getNewAliasValue(t,i,n,r){if(t==null)return i?"":n;if(typeof t=="string")i?t===n&&(t=""):r===t?t=n:t=[n,t];else if(r!==null){let a=t.indexOf(r);a===-1&&Sn(r)&&(a=t.indexOf(r.substring(1,r.length-1))),a!==-1?i?t.splice(a,1):t[a]=n:t=[n,...t]}else{let a=t.indexOf(n);a!==-1?i&&t.splice(a,1):i||(t=[n,...t])}return t===""||t.length===0?"":t}get exampleBuilders(){return[new y({description:"Adds a header with the title from heading.",before:p` # Obsidian `,after:p` --- @@ -2502,13 +2717,13 @@ ${l}---`),t}getTitleInfo(t,i,n,r){let a=we([f.code,f.math,f.yaml,f.tag],t,Ga);a= linter-yaml-title-alias: This is a Heading --- # This is a [Heading](markdown.md) - `,options:{aliasArrayStyle:"multi-line"}})]}get optionBuilders(){return[new U({OptionsClass:zi,nameKey:"rules.yaml-title-alias.preserve-existing-alias-section-style.name",descriptionKey:"rules.yaml-title-alias.preserve-existing-alias-section-style.description",optionsKey:"preserveExistingAliasesSectionStyle"}),new U({OptionsClass:zi,nameKey:"rules.yaml-title-alias.keep-alias-that-matches-the-filename.name",descriptionKey:"rules.yaml-title-alias.keep-alias-that-matches-the-filename.description",optionsKey:"keepAliasThatMatchesTheFilename"}),new U({OptionsClass:zi,nameKey:"rules.yaml-title-alias.use-yaml-key-to-keep-track-of-old-filename-or-heading.name",descriptionKey:"rules.yaml-title-alias.use-yaml-key-to-keep-track-of-old-filename-or-heading.description",optionsKey:"useYamlKeyToKeepTrackOfOldFilenameOrHeading"})]}};Hr=A([w.register],Hr);var qt=class{constructor(){this.defaultEscapeCharacter='"';this.titleKey="title";this.mode="first-h1-or-filename-if-h1-missing"}};A([w.noSettingControl()],qt.prototype,"fileName",2),A([w.noSettingControl()],qt.prototype,"defaultEscapeCharacter",2);var $r=class extends w{constructor(){super({nameKey:"rules.yaml-title.name",descriptionKey:"rules.yaml-title.description",type:"YAML"})}get OptionsClass(){return qt}apply(t,i){t=bi(t);let n="";switch(i.mode){case"filename":n=i.fileName;break;case"first-h1":n=this.getFirstH1Header(t);break;default:n=this.getFirstH1Header(t),n=n||i.fileName}return n=li(n,i.defaultEscapeCharacter),Ae(t,r=>{let a=` + `,options:{aliasArrayStyle:"multi-line"}})]}get optionBuilders(){return[new U({OptionsClass:Ii,nameKey:"rules.yaml-title-alias.preserve-existing-alias-section-style.name",descriptionKey:"rules.yaml-title-alias.preserve-existing-alias-section-style.description",optionsKey:"preserveExistingAliasesSectionStyle"}),new U({OptionsClass:Ii,nameKey:"rules.yaml-title-alias.keep-alias-that-matches-the-filename.name",descriptionKey:"rules.yaml-title-alias.keep-alias-that-matches-the-filename.description",optionsKey:"keepAliasThatMatchesTheFilename"}),new U({OptionsClass:Ii,nameKey:"rules.yaml-title-alias.use-yaml-key-to-keep-track-of-old-filename-or-heading.name",descriptionKey:"rules.yaml-title-alias.use-yaml-key-to-keep-track-of-old-filename-or-heading.description",optionsKey:"useYamlKeyToKeepTrackOfOldFilenameOrHeading"})]}};ba=A([b.register],ba);var Qt=class{constructor(){this.defaultEscapeCharacter='"';this.titleKey="title";this.mode="first-h1-or-filename-if-h1-missing"}};A([b.noSettingControl()],Qt.prototype,"fileName",2),A([b.noSettingControl()],Qt.prototype,"defaultEscapeCharacter",2);var va=class extends b{constructor(){super({nameKey:"rules.yaml-title.name",descriptionKey:"rules.yaml-title.description",type:"YAML"})}get OptionsClass(){return Qt}apply(t,i){t=Oi(t);let n="";switch(i.mode){case"filename":n=i.fileName;break;case"first-h1":n=this.getFirstH1Header(t);break;default:n=this.getFirstH1Header(t),n=n||i.fileName}return n=wi(n,i.defaultEscapeCharacter),ye(t,r=>{let a=` ${i.titleKey}.* -`,s=new RegExp(a);if(s.test(r))r=r.replace(s,Ke(` +`,s=new RegExp(a);if(s.test(r))r=r.replace(s,Ze(` ${i.titleKey}: ${n} `));else{let o=r.indexOf(` ----`);r=st(r,o,` -${i.titleKey}: ${n}`)}return r})}getFirstH1Header(t){return we([f.code,f.math,f.yaml,f.tag],t,Ga)}get exampleBuilders(){return[new y({description:"Adds a header with the title from heading when `mode = 'First H1 or Filename if H1 Missing'`.",before:p` +---`);r=kt(r,o,` +${i.titleKey}: ${n}`)}return r})}getFirstH1Header(t){return Le([h.code,h.math,h.yaml,h.tag],t,Es)}get exampleBuilders(){return[new y({description:"Adds a header with the title from heading when `mode = 'First H1 or Filename if H1 Missing'`.",before:p` # Obsidian `,after:p` --- @@ -2543,7 +2758,7 @@ ${i.titleKey}: ${n}`)}return r})}getFirstH1Header(t){return we([f.code,f.math,f. title: Filename --- # This is a Heading - `,options:{mode:"filename",fileName:"Filename"}})]}get optionBuilders(){return[new We({OptionsClass:qt,nameKey:"rules.yaml-title.title-key.name",descriptionKey:"rules.yaml-title.title-key.description",optionsKey:"titleKey"}),new ne({OptionsClass:qt,nameKey:"rules.yaml-title.mode.name",descriptionKey:"rules.yaml-title.mode.description",optionsKey:"mode",records:[{value:"first-h1-or-filename-if-h1-missing",description:"Uses the first H1 in the file or the filename of the file if there is not H1"},{value:"filename",description:"Uses the filename as the title"},{value:"first-h1",description:"Uses the first H1 in the file as the title"}]})]}};$r=A([w.register],$r);var dx=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-file-cog"> + `,options:{mode:"filename",fileName:"Filename"}})]}get optionBuilders(){return[new $e({OptionsClass:Qt,nameKey:"rules.yaml-title.title-key.name",descriptionKey:"rules.yaml-title.title-key.description",optionsKey:"titleKey"}),new ne({OptionsClass:Qt,nameKey:"rules.yaml-title.mode.name",descriptionKey:"rules.yaml-title.mode.description",optionsKey:"mode",records:[{value:"first-h1-or-filename-if-h1-missing",description:"Uses the first H1 in the file or the filename of the file if there is not H1"},{value:"filename",description:"Uses the filename as the title"},{value:"first-h1",description:"Uses the first H1 in the file as the title"}]})]}};va=A([b.register],va);var tw=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-file-cog"> <circle cx="6" cy="13" r="3"/> <path d="m9.7 14.4-.9-.3"/> <path d="m3.2 11.9-.9-.3"/> @@ -2555,7 +2770,7 @@ ${i.titleKey}: ${n}`)}return r})}getFirstH1Header(t){return we([f.code,f.math,f. <path d="m7.4 9.3-.3.9"/> <path d="M14 2v6h6"/> <path d="M4 5.5V4a2 2 0 0 1 2-2h8.5L20 7.5V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-1.5"/> -</svg>`,ux=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-folder-cog"> +</svg>`,nw=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-folder-cog"> <circle cx="18" cy="18" r="3"/> <path d="M10.5 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v3.5"/> <path d="m21.7 19.4-.9-.3"/> @@ -2566,7 +2781,7 @@ ${i.titleKey}: ${n}`)}return r})}getFirstH1Header(t){return we([f.code,f.math,f. <path d="m16.8 15.3-.4-1"/> <path d="m14.3 19.6 1-.4"/> <path d="m20.7 16.8 1-.4"/> -</svg>`,px=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-server-cog"> +</svg>`,rw=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-server-cog"> <circle cx="12" cy="12" r="3"/><path d="M4.5 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-.5"/> <path d="M4.5 14H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2h-.5"/> <path d="M6 6h.01"/><path d="M6 18h.01"/> @@ -2578,48 +2793,48 @@ ${i.titleKey}: ${n}`)}return r})}getFirstH1Header(t){return we([f.code,f.math,f. <path d="m8.3 13.6 1-.4"/> <path d="m14.7 10.8 1-.4"/> <path d="m13.4 8.3-.3.9"/> -</svg>`,mx=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-pilcrow"> +</svg>`,aw=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-pilcrow"> <path d="M13 4v16"/> <path d="M17 4v16"/> <path d="M19 4H9.5a4.5 4.5 0 0 0 0 9H13"/> -</svg>`,gx=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-function-square"> +</svg>`,sw=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-function-square"> <rect width="18" height="18" x="3" y="3" rx="2" ry="2"/> <path d="M9 17c2 0 2.8-1 2.8-2.8V10c0-2 1-3.3 3.2-3"/> <path d="M9 11.2h5.7"/> -</svg>`,hx=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-gantt-chart-square"> +</svg>`,ow=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-gantt-chart-square"> <rect width="18" height="18" x="3" y="3" rx="2"/> <path d="M9 8h7"/> <path d="M8 12h6"/> <path d="M11 16h5"/> -</svg>`,fx=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clipboard-list"> +</svg>`,lw=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clipboard-list"> <rect width="8" height="4" x="8" y="2" rx="1" ry="1"/> <path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"/> <path d="M12 11h4"/> <path d="M12 16h4"/> <path d="M8 11h.01"/> <path d="M8 16h.01"/> -</svg>`,yx=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-plus"> +</svg>`,cw=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-plus"> <path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20"/> <path d="M9 10h6"/> <path d="M12 7v6"/> -</svg>`,bx=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-heading-1"> +</svg>`,dw=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-heading-1"> <path d="M4 12h8"/> <path d="M4 18V6"/> <path d="M12 18V6"/> <path d="m17 12 3-2v8"/> -</svg>`,vx=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-superscript"> +</svg>`,uw=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-superscript"> <path d="m4 19 8-8"/> <path d="m12 19-8-8"/> <path d="M20 12h-4c0-1.5.442-2 1.5-2.5S20 8.334 20 7.002c0-.472-.17-.93-.484-1.29a2.105 2.105 0 0 0-2.617-.436c-.42.239-.738.614-.899 1.06"/> -</svg>`,xx=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-file-code-2"> +</svg>`,pw=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-file-code-2"> <path d="M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v4"/> <polyline points="14 2 14 8 20 8"/> <path d="m9 18 3-3-3-3"/> <path d="m5 12-3 3 3 3"/> -</svg>`,wx=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings"> +</svg>`,mw=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings"> <path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"/> <circle cx="12" cy="12" r="3"/> -</svg>`,kx=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bug-play"> +</svg>`,gw=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bug-play"> <path d="m8 2 1.88 1.88"/> <path d="M14.12 3.88 16 2"/> <path d="M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"/> @@ -2629,27 +2844,27 @@ ${i.titleKey}: ${n}`)}return r})}getFirstH1Header(t){return we([f.code,f.math,f. <path d="M3 21c0-2.1 1.7-3.9 3.8-4"/> <path d="M20.97 5c0 2.1-1.6 3.8-3.5 4"/> <path d="m12 12 8 5-8 5Z"/> -</svg>`,zx=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clipboard"> +</svg>`,hw=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clipboard"> <rect width="8" height="4" x="8" y="2" rx="1" ry="1"/> <path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"/> -</svg>`,Sx=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check"> +</svg>`,fw=`<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check"> <polyline points="20 6 9 17 4 12"/> -</svg>`,ke={folder:{id:"lint-folder",source:ux},file:{id:"lint-file",source:dx},vault:{id:"lint-vault",source:px},whitespace:{id:"lint-whitespace",source:mx},math:{id:"lint-math",source:gx},content:{id:"lint-content",source:hx},paste:{id:"lint-paste",source:fx},custom:{id:"lint-custom",source:yx},heading:{id:"lint-heading",source:bx},footer:{id:"lint-footer",source:vx},yaml:{id:"lint-yaml",source:xx},general:{id:"lint-general",source:wx},debug:{id:"lint-debug",source:kx},clipboard:{id:"linter-clipboard",source:zx},success:{id:"linter-success",source:Sx}};var dn=require("obsidian");var qs=class{constructor(){this.disabledRules=[]}lintText(t){this.skipFile=!1;let i=t.oldText;if([this.disabledRules,this.skipFile]=ss(i),this.skipFile)return i;at(E("logs.rule-running"));let n=E("logs.pre-rules");at(n);let r=this.runBeforeRegularRules(t);ji(n);let a=E("logs.disabled-text");for(let o of ki){if(this.disabledRules.includes(o.alias)){oi(o.alias+" "+a);continue}else if(o.hasSpecialExecutionOrder||o.type==="Paste")continue;[r]=ci.applyIfEnabledBase(o,r,t.settings,{fileCreatedTime:t.fileInfo.createdAtFormatted,fileModifiedTime:t.fileInfo.modifiedAtFormatted,fileName:t.fileInfo.name,locale:t.momentLocale,minimumNumberOfDollarSignsToBeAMathBlock:t.settings.commonStyles.minimumNumberOfDollarSignsToBeAMathBlock,aliasArrayStyle:t.settings.commonStyles.aliasArrayStyle,tagArrayStyle:t.settings.commonStyles.tagArrayStyle,defaultEscapeCharacter:t.settings.commonStyles.escapeCharacter,removeUnnecessaryEscapeCharsForMultiLineArrays:t.settings.commonStyles.removeUnnecessaryEscapeCharsForMultiLineArrays})}let s=E("logs.custom-regex");return at(s),r=this.runCustomRegexReplacement(t.settings.customRegexes,r),ji(s),t.oldText=r,this.runAfterRegularRules(i,t)}runBeforeRegularRules(t){let i=t.oldText;return[i]=xt.applyIfEnabled(i,t.settings,this.disabledRules),[i]=bt.applyIfEnabled(i,t.settings,this.disabledRules,{defaultEscapeCharacter:t.settings.commonStyles.escapeCharacter}),[i]=wt.applyIfEnabled(i,t.settings,this.disabledRules,{minimumNumberOfDollarSignsToBeAMathBlock:t.settings.commonStyles.minimumNumberOfDollarSignsToBeAMathBlock}),i}runAfterRegularRules(t,i){let n=i.oldText,r=E("logs.post-rules");at(r),[n]=yt.applyIfEnabled(n,i.settings,this.disabledRules),[n]=gt.applyIfEnabled(n,i.settings,this.disabledRules),[n]=vt.applyIfEnabled(n,i.settings,this.disabledRules,{defaultEscapeCharacter:i.settings.commonStyles.escapeCharacter});let a=i.getCurrentTime(),s;[n,s]=Ui.applyIfEnabled(n,i.settings,this.disabledRules,{fileCreatedTime:i.fileInfo.createdAtFormatted,fileModifiedTime:i.fileInfo.modifiedAtFormatted,currentTime:a,alreadyModified:t!=n,locale:i.momentLocale});let o=Ui.getRuleOptions(i.settings);return a=i.getCurrentTime(),[n]=Mt.applyIfEnabled(n,i.settings,this.disabledRules,{currentTimeFormatted:a.format(o.format.trimEnd()),yamlTimestampDateModifiedEnabled:s&&o.dateModified,dateModifiedKey:o.dateModifiedKey}),ji(r),ji(E("logs.rule-running")),n}runCustomCommands(t,i){if(this.skipFile)return;oi(E("logs.running-custom-lint-command"));let n=new Set;for(let r of t){if(r.id){if(n.has(r.id)){rt(E("logs.custom-lint-duplicate-warning").replace("{COMMAND_NAME}",r.name));continue}}else continue;try{n.add(r.id),i.executeCommandById(r.id)}catch(a){os(a,`${E("logs.custom-lint-error-message")} ${r.id}`)}}}runCustomRegexReplacement(t,i){return we([f.customIgnore],i,n=>{oi(E("logs.running-custom-regex"));let r=n;for(let a of t){let s=a.find===void 0||a.find==""||a.find===null,o=a.replace===void 0||a.replace===null;if(s||o)continue;let l=new RegExp(`${a.find}`,a.flags);r=r.replace(l,Ad(a.replace))}return r})}runPasteLint(t,i,n){let r=n.oldText;return[r]=Tt.applyIfEnabled(r,n.settings,[]),[r]=Ot.applyIfEnabled(r,n.settings,[]),[r]=Et.applyIfEnabled(r,n.settings,[]),[r]=St.applyIfEnabled(r,n.settings,[]),[r]=Lt.applyIfEnabled(r,n.settings,[]),[r]=kt.applyIfEnabled(r,n.settings,[],{lineContent:t,selectedText:i}),[r]=zt.applyIfEnabled(r,n.settings,[],{lineContent:t,selectedText:i}),[r]=ht.applyIfEnabled(r,n.settings,[],{lineContent:t}),r}};function Wr(e,t=null,i,n){let r=t?(0,dn.moment)(t.stat.ctime):(0,dn.moment)();r.locale(i);let a=t?(0,dn.moment)(t.stat.mtime):(0,dn.moment)();a.locale(i);let s=a.format(),o=r.format();return{oldText:e,fileInfo:{name:t?t.basename:"",createdAtFormatted:o,modifiedAtFormatted:s},settings:n,momentLocale:i,getCurrentTime:()=>{let l=(0,dn.moment)();return l.locale(i),l}}}var Is=require("obsidian");var Vr=class extends Is.Modal{constructor(t,i,n,r,a){super(t),this.modalEl.addClass("confirm-modal"),this.contentEl.createEl("h3",{text:E("warning-text")}).style.textAlign="center",this.contentEl.createEl("p",{text:i+" "+E("file-backup-text")}).id="confirm-dialog",this.contentEl.createDiv("modal-button-container",s=>{s.createEl("button",{text:"Cancel"}).addEventListener("click",()=>this.close());let o=s.createEl("button",{attr:{type:"submit"},cls:"mod-cta",text:n});o.addEventListener("click",async l=>{new Is.Notice(r),this.close(),await a()}),setTimeout(()=>{o.focus()},50)})}};var Xi=require("obsidian");var hp=require("obsidian");var Ax={General:ke.general.id,Custom:ke.custom.id,YAML:ke.yaml.id,Heading:ke.heading.id,Footnote:ke.footer.id,Content:ke.content.id,Spacing:ke.whitespace.id,Paste:ke.paste.id,Debug:ke.debug.id},Tx={General:"tabs.names.general",Custom:"tabs.names.custom",YAML:"tabs.names.yaml",Heading:"tabs.names.heading",Footnote:"tabs.names.footnote",Content:"tabs.names.content",Spacing:"tabs.names.spacing",Paste:"tabs.names.paste",Debug:"tabs.names.debug"},Si=class{constructor(t,i,n,r,a){this.name=n;this.isMobile=r;this.plugin=a;this.searchSettingInfo=[];this.navButton=t.createDiv("linter-navigation-item");let s="linter-desktop";r&&(s="linter-mobile"),this.navButton.addClass(s),(0,hp.setIcon)(this.navButton.createSpan({cls:"linter-navigation-item-icon"}),Ax[n]);let o=E(Tx[n]);this.navButton.createSpan().setText(o),this.contentEl=i.createDiv("linter-tab-settings"),this.contentEl.id=n.toLowerCase().replace(" ","-"),this.headingEl=this.contentEl.createEl("h2",{text:o}),Xe(this.headingEl)}addSettingSearchInfo(t,i="",n="",r=null,a=null){this.searchSettingInfo.push({containerEl:t,name:i.toLowerCase(),description:n.toLowerCase(),options:r,alias:a})}addSettingSearchInfoForGeneralSettings(t){this.searchSettingInfo.push({containerEl:t.containerEl,name:t.name.toLowerCase(),description:t.description.toLowerCase(),options:null,alias:null})}updateTabDisplayMode(t,i="the status is still the same"){switch(t?(this.navButton.addClass("linter-navigation-item-selected"),wi(this.contentEl)):(this.navButton.removeClass("linter-navigation-item-selected"),Xe(this.contentEl)),i){case"entering search mode by focusing on the search input box":wi(this.contentEl),wi(this.headingEl);for(let n of this.searchSettingInfo)wi(n.containerEl);break;case"leaving search mode by selecting a tab":Xe(this.headingEl);for(let n of this.searchSettingInfo)wi(n.containerEl);break}}};var Hp=require("obsidian");var fp=require("obsidian");var Ur={ruleConfigs:{},lintOnSave:!1,recordLintOnSaveLogs:!1,displayChanged:!0,lintOnFileChange:!1,displayLintOnFileChangeNotice:!1,settingsConvertedToConfigKeyValues:!1,foldersToIgnore:[],linterLocale:"system-default",logLevel:"ERROR",lintCommands:[],customRegexes:[],commonStyles:{aliasArrayStyle:"single-line",tagArrayStyle:"single-line",minimumNumberOfDollarSignsToBeAMathBlock:2,escapeCharacter:'"',removeUnnecessaryEscapeCharsForMultiLineArrays:!1}};var Gi=class{constructor(t,i,n,r,a,s=null){this.containerEl=t;this.keyToUpdate=r;this.plugin=a;this.beforeSave=s;this.name=E(i),this.description=E(n)}async saveValue(t){let i=this.keyToUpdate.split(".");i.length===2?this.plugin.settings[i[0]][i[1]]=t:this.plugin.settings[this.keyToUpdate]=t,this.beforeSave&&this.beforeSave(),await this.plugin.saveSettings()}getDefaultValue(){let t=this.keyToUpdate.split(".");return t.length===2?Ur[t[0]][t[1]]:Ur[this.keyToUpdate]}getString(){return Cn(this.plugin.settings,this.keyToUpdate)??this.getDefaultValue()}getBoolean(){return Wc(this.plugin.settings,this.keyToUpdate)??this.getDefaultValue()}getNumber(){return $c(this.plugin.settings,this.keyToUpdate)??this.getDefaultValue()}parseNameAndDescription(){xi(this.name,this.setting.nameEl,this.plugin.settingsTab.component),xi(this.description,this.setting.descEl,this.plugin.settingsTab.component)}};var Ii=class extends Gi{constructor(i,n,r,a,s,o,l=null){super(i,n,r,a,s,l);this.dropdownRecords=o;this.display()}display(){this.setting=new fp.Setting(this.containerEl).setName(this.name).setDesc(this.description).addDropdown(i=>{this.addDropdownRecords(i),i.setValue(this.getString()),i.onChange(async n=>{this.saveValue(n)})})}addDropdownRecords(i){if(this.dropdownRecords.isForEnum){for(let n of this.dropdownRecords.values){let r="enums."+n;i.addOption(n,E(r))}return}for(let n=0;n<this.dropdownRecords.values.length;n++)i.addOption(this.dropdownRecords.values[n],this.dropdownRecords.descriptions[n])}};var yp=require("obsidian");var Bs=class extends Gi{constructor(i,n,r,a,s){super(i,n,r,a,s);this.display()}display(){this.setting=new yp.Setting(this.containerEl).setName(this.name).setDesc(this.description).addText(i=>{i.inputEl.type="number",i.setValue(this.getNumber().toString()).onChange(async n=>{this.saveValue(parseInt(n))})})}};var bp=require("obsidian");var Ai=class extends Gi{constructor(i,n,r,a,s){super(i,n,r,a,s);this.display()}display(){this.setting=new bp.Setting(this.containerEl).addToggle(i=>{i.setValue(this.getBoolean()).onChange(async n=>{this.saveValue(n)})}),this.parseNameAndDescription()}};var Pp=require("obsidian");var vp=require("obsidian");var Qi=class{constructor(t,i,n,r,a,s,o,l){this.containerEl=t;this.parentComponent=i;this.name=n;this.description=r;this.warning=a;this.addInputBtnText=s;this.saveSettings=o;this.onAddInput=l}display(){this.containerEl.createDiv({cls:"setting-item-name",text:this.name});let t=this.containerEl.createDiv({cls:"setting-item-description"});xi(this.description,t.createEl("p",{cls:"custom-row-description"}),this.parentComponent),this.warning!=null&&this.warning.trim()!=""&&t.createEl("p",{text:this.warning,cls:"mod-warning"}),new vp.Setting(this.containerEl).addButton(i=>{i.setButtonText(this.addInputBtnText).setCta().onClick(()=>this.onAddInput())}),this.inputElDiv=this.containerEl.createDiv(),this.showInputEls()}resetInputEls(){this.inputElDiv.empty(),this.showInputEls()}};var Kp=require("obsidian");var me="top",ze="bottom",ve="right",he="left",Fs="auto",Zi=[me,ze,ve,he],Bi="start",It="end",xp="clippingParents",_s="viewport",un="popper",wp="reference",Rl=Zi.reduce(function(e,t){return e.concat([t+"-"+Bi,t+"-"+It])},[]),Rs=[].concat(Zi,[Fs]).reduce(function(e,t){return e.concat([t,t+"-"+Bi,t+"-"+It])},[]),Lx="beforeRead",Ex="read",Ox="afterRead",Cx="beforeMain",Mx="main",qx="afterMain",Ix="beforeWrite",Bx="write",Fx="afterWrite",kp=[Lx,Ex,Ox,Cx,Mx,qx,Ix,Bx,Fx];function Le(e){return e?(e.nodeName||"").toLowerCase():null}function le(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function ii(e){var t=le(e).Element;return e instanceof t||e instanceof Element}function Se(e){var t=le(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function pn(e){if(typeof ShadowRoot>"u")return!1;var t=le(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function _x(e){var t=e.state;Object.keys(t.elements).forEach(function(i){var n=t.styles[i]||{},r=t.attributes[i]||{},a=t.elements[i];!Se(a)||!Le(a)||(Object.assign(a.style,n),Object.keys(r).forEach(function(s){var o=r[s];o===!1?a.removeAttribute(s):a.setAttribute(s,o===!0?"":o)}))})}function Rx(e){var t=e.state,i={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,i.popper),t.styles=i,t.elements.arrow&&Object.assign(t.elements.arrow.style,i.arrow),function(){Object.keys(t.elements).forEach(function(n){var r=t.elements[n],a=t.attributes[n]||{},s=Object.keys(t.styles.hasOwnProperty(n)?t.styles[n]:i[n]),o=s.reduce(function(l,d){return l[d]="",l},{});!Se(r)||!Le(r)||(Object.assign(r.style,o),Object.keys(a).forEach(function(l){r.removeAttribute(l)}))})}}var zp={name:"applyStyles",enabled:!0,phase:"write",fn:_x,effect:Rx,requires:["computeStyles"]};function Ee(e){return e.split("-")[0]}var di=Math.max,Bt=Math.min,Fi=Math.round;function mn(){var e=navigator.userAgentData;return e!=null&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function Gr(){return!/^((?!chrome|android).)*safari/i.test(mn())}function ti(e,t,i){t===void 0&&(t=!1),i===void 0&&(i=!1);var n=e.getBoundingClientRect(),r=1,a=1;t&&Se(e)&&(r=e.offsetWidth>0&&Fi(n.width)/e.offsetWidth||1,a=e.offsetHeight>0&&Fi(n.height)/e.offsetHeight||1);var s=ii(e)?le(e):window,o=s.visualViewport,l=!Gr()&&i,d=(n.left+(l&&o?o.offsetLeft:0))/r,c=(n.top+(l&&o?o.offsetTop:0))/a,u=n.width/r,m=n.height/a;return{width:u,height:m,top:c,right:d+u,bottom:c+m,left:d,x:d,y:c}}function Ft(e){var t=ti(e),i=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-i)<=1&&(i=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:i,height:n}}function Qr(e,t){var i=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(i&&pn(i)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function Pe(e){return le(e).getComputedStyle(e)}function Dl(e){return["table","td","th"].indexOf(Le(e))>=0}function Me(e){return((ii(e)?e.ownerDocument:e.document)||window.document).documentElement}function _i(e){return Le(e)==="html"?e:e.assignedSlot||e.parentNode||(pn(e)?e.host:null)||Me(e)}function Sp(e){return!Se(e)||Pe(e).position==="fixed"?null:e.offsetParent}function Dx(e){var t=/firefox/i.test(mn()),i=/Trident/i.test(mn());if(i&&Se(e)){var n=Pe(e);if(n.position==="fixed")return null}var r=_i(e);for(pn(r)&&(r=r.host);Se(r)&&["html","body"].indexOf(Le(r))<0;){var a=Pe(r);if(a.transform!=="none"||a.perspective!=="none"||a.contain==="paint"||["transform","perspective"].indexOf(a.willChange)!==-1||t&&a.willChange==="filter"||t&&a.filter&&a.filter!=="none")return r;r=r.parentNode}return null}function ui(e){for(var t=le(e),i=Sp(e);i&&Dl(i)&&Pe(i).position==="static";)i=Sp(i);return i&&(Le(i)==="html"||Le(i)==="body"&&Pe(i).position==="static")?t:i||Dx(e)||t}function _t(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Rt(e,t,i){return di(e,Bt(t,i))}function Ap(e,t,i){var n=Rt(e,t,i);return n>i?i:n}function Zr(){return{top:0,right:0,bottom:0,left:0}}function Jr(e){return Object.assign({},Zr(),e)}function Xr(e,t){return t.reduce(function(i,n){return i[n]=e,i},{})}var Nx=function(t,i){return t=typeof t=="function"?t(Object.assign({},i.rects,{placement:i.placement})):t,Jr(typeof t!="number"?t:Xr(t,Zi))};function jx(e){var t,i=e.state,n=e.name,r=e.options,a=i.elements.arrow,s=i.modifiersData.popperOffsets,o=Ee(i.placement),l=_t(o),d=[he,ve].indexOf(o)>=0,c=d?"height":"width";if(!(!a||!s)){var u=Nx(r.padding,i),m=Ft(a),g=l==="y"?me:he,h=l==="y"?ze:ve,x=i.rects.reference[c]+i.rects.reference[l]-s[l]-i.rects.popper[c],b=s[l]-i.rects.reference[l],v=ui(a),S=v?l==="y"?v.clientHeight||0:v.clientWidth||0:0,L=x/2-b/2,M=u[g],B=S-m[c]-u[h],T=S/2-m[c]/2+L,_=Rt(M,T,B),q=l;i.modifiersData[n]=(t={},t[q]=_,t.centerOffset=_-T,t)}}function Kx(e){var t=e.state,i=e.options,n=i.element,r=n===void 0?"[data-popper-arrow]":n;r!=null&&(typeof r=="string"&&(r=t.elements.popper.querySelector(r),!r)||Qr(t.elements.popper,r)&&(t.elements.arrow=r))}var Tp={name:"arrow",enabled:!0,phase:"main",fn:jx,effect:Kx,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ni(e){return e.split("-")[1]}var Yx={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Px(e,t){var i=e.x,n=e.y,r=t.devicePixelRatio||1;return{x:Fi(i*r)/r||0,y:Fi(n*r)/r||0}}function Lp(e){var t,i=e.popper,n=e.popperRect,r=e.placement,a=e.variation,s=e.offsets,o=e.position,l=e.gpuAcceleration,d=e.adaptive,c=e.roundOffsets,u=e.isFixed,m=s.x,g=m===void 0?0:m,h=s.y,x=h===void 0?0:h,b=typeof c=="function"?c({x:g,y:x}):{x:g,y:x};g=b.x,x=b.y;var v=s.hasOwnProperty("x"),S=s.hasOwnProperty("y"),L=he,M=me,B=window;if(d){var T=ui(i),_="clientHeight",q="clientWidth";if(T===le(i)&&(T=Me(i),Pe(T).position!=="static"&&o==="absolute"&&(_="scrollHeight",q="scrollWidth")),T=T,r===me||(r===he||r===ve)&&a===It){M=ze;var D=u&&T===B&&B.visualViewport?B.visualViewport.height:T[_];x-=D-n.height,x*=l?1:-1}if(r===he||(r===me||r===ze)&&a===It){L=ve;var H=u&&T===B&&B.visualViewport?B.visualViewport.width:T[q];g-=H-n.width,g*=l?1:-1}}var j=Object.assign({position:o},d&&Yx),V=c===!0?Px({x:g,y:x},le(i)):{x:g,y:x};if(g=V.x,x=V.y,l){var R;return Object.assign({},j,(R={},R[M]=S?"0":"",R[L]=v?"0":"",R.transform=(B.devicePixelRatio||1)<=1?"translate("+g+"px, "+x+"px)":"translate3d("+g+"px, "+x+"px, 0)",R))}return Object.assign({},j,(t={},t[M]=S?x+"px":"",t[L]=v?g+"px":"",t.transform="",t))}function Hx(e){var t=e.state,i=e.options,n=i.gpuAcceleration,r=n===void 0?!0:n,a=i.adaptive,s=a===void 0?!0:a,o=i.roundOffsets,l=o===void 0?!0:o;if(!1)var d;var c={placement:Ee(t.placement),variation:ni(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:r,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,Lp(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Lp(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var Ep={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Hx,data:{}};var Ds={passive:!0};function $x(e){var t=e.state,i=e.instance,n=e.options,r=n.scroll,a=r===void 0?!0:r,s=n.resize,o=s===void 0?!0:s,l=le(t.elements.popper),d=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&d.forEach(function(c){c.addEventListener("scroll",i.update,Ds)}),o&&l.addEventListener("resize",i.update,Ds),function(){a&&d.forEach(function(c){c.removeEventListener("scroll",i.update,Ds)}),o&&l.removeEventListener("resize",i.update,Ds)}}var Op={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:$x,data:{}};var Wx={left:"right",right:"left",bottom:"top",top:"bottom"};function gn(e){return e.replace(/left|right|bottom|top/g,function(t){return Wx[t]})}var Vx={start:"end",end:"start"};function Ns(e){return e.replace(/start|end/g,function(t){return Vx[t]})}function Dt(e){var t=le(e),i=t.pageXOffset,n=t.pageYOffset;return{scrollLeft:i,scrollTop:n}}function Nt(e){return ti(Me(e)).left+Dt(e).scrollLeft}function Nl(e,t){var i=le(e),n=Me(e),r=i.visualViewport,a=n.clientWidth,s=n.clientHeight,o=0,l=0;if(r){a=r.width,s=r.height;var d=Gr();(d||!d&&t==="fixed")&&(o=r.offsetLeft,l=r.offsetTop)}return{width:a,height:s,x:o+Nt(e),y:l}}function jl(e){var t,i=Me(e),n=Dt(e),r=(t=e.ownerDocument)==null?void 0:t.body,a=di(i.scrollWidth,i.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),s=di(i.scrollHeight,i.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),o=-n.scrollLeft+Nt(e),l=-n.scrollTop;return Pe(r||i).direction==="rtl"&&(o+=di(i.clientWidth,r?r.clientWidth:0)-a),{width:a,height:s,x:o,y:l}}function jt(e){var t=Pe(e),i=t.overflow,n=t.overflowX,r=t.overflowY;return/auto|scroll|overlay|hidden/.test(i+r+n)}function js(e){return["html","body","#document"].indexOf(Le(e))>=0?e.ownerDocument.body:Se(e)&&jt(e)?e:js(_i(e))}function Ji(e,t){var i;t===void 0&&(t=[]);var n=js(e),r=n===((i=e.ownerDocument)==null?void 0:i.body),a=le(n),s=r?[a].concat(a.visualViewport||[],jt(n)?n:[]):n,o=t.concat(s);return r?o:o.concat(Ji(_i(s)))}function hn(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function Ux(e,t){var i=ti(e,!1,t==="fixed");return i.top=i.top+e.clientTop,i.left=i.left+e.clientLeft,i.bottom=i.top+e.clientHeight,i.right=i.left+e.clientWidth,i.width=e.clientWidth,i.height=e.clientHeight,i.x=i.left,i.y=i.top,i}function Cp(e,t,i){return t===_s?hn(Nl(e,i)):ii(t)?Ux(t,i):hn(jl(Me(e)))}function Gx(e){var t=Ji(_i(e)),i=["absolute","fixed"].indexOf(Pe(e).position)>=0,n=i&&Se(e)?ui(e):e;return ii(n)?t.filter(function(r){return ii(r)&&Qr(r,n)&&Le(r)!=="body"}):[]}function Kl(e,t,i,n){var r=t==="clippingParents"?Gx(e):[].concat(t),a=[].concat(r,[i]),s=a[0],o=a.reduce(function(l,d){var c=Cp(e,d,n);return l.top=di(c.top,l.top),l.right=Bt(c.right,l.right),l.bottom=Bt(c.bottom,l.bottom),l.left=di(c.left,l.left),l},Cp(e,s,n));return o.width=o.right-o.left,o.height=o.bottom-o.top,o.x=o.left,o.y=o.top,o}function ea(e){var t=e.reference,i=e.element,n=e.placement,r=n?Ee(n):null,a=n?ni(n):null,s=t.x+t.width/2-i.width/2,o=t.y+t.height/2-i.height/2,l;switch(r){case me:l={x:s,y:t.y-i.height};break;case ze:l={x:s,y:t.y+t.height};break;case ve:l={x:t.x+t.width,y:o};break;case he:l={x:t.x-i.width,y:o};break;default:l={x:t.x,y:t.y}}var d=r?_t(r):null;if(d!=null){var c=d==="y"?"height":"width";switch(a){case Bi:l[d]=l[d]-(t[c]/2-i[c]/2);break;case It:l[d]=l[d]+(t[c]/2-i[c]/2);break;default:}}return l}function pi(e,t){t===void 0&&(t={});var i=t,n=i.placement,r=n===void 0?e.placement:n,a=i.strategy,s=a===void 0?e.strategy:a,o=i.boundary,l=o===void 0?xp:o,d=i.rootBoundary,c=d===void 0?_s:d,u=i.elementContext,m=u===void 0?un:u,g=i.altBoundary,h=g===void 0?!1:g,x=i.padding,b=x===void 0?0:x,v=Jr(typeof b!="number"?b:Xr(b,Zi)),S=m===un?wp:un,L=e.rects.popper,M=e.elements[h?S:m],B=Kl(ii(M)?M:M.contextElement||Me(e.elements.popper),l,c,s),T=ti(e.elements.reference),_=ea({reference:T,element:L,strategy:"absolute",placement:r}),q=hn(Object.assign({},L,_)),D=m===un?q:T,H={top:B.top-D.top+v.top,bottom:D.bottom-B.bottom+v.bottom,left:B.left-D.left+v.left,right:D.right-B.right+v.right},j=e.modifiersData.offset;if(m===un&&j){var V=j[r];Object.keys(H).forEach(function(R){var $=[ve,ze].indexOf(R)>=0?1:-1,re=[me,ze].indexOf(R)>=0?"y":"x";H[R]+=V[re]*$})}return H}function Yl(e,t){t===void 0&&(t={});var i=t,n=i.placement,r=i.boundary,a=i.rootBoundary,s=i.padding,o=i.flipVariations,l=i.allowedAutoPlacements,d=l===void 0?Rs:l,c=ni(n),u=c?o?Rl:Rl.filter(function(h){return ni(h)===c}):Zi,m=u.filter(function(h){return d.indexOf(h)>=0});m.length===0&&(m=u);var g=m.reduce(function(h,x){return h[x]=pi(e,{placement:x,boundary:r,rootBoundary:a,padding:s})[Ee(x)],h},{});return Object.keys(g).sort(function(h,x){return g[h]-g[x]})}function Qx(e){if(Ee(e)===Fs)return[];var t=gn(e);return[Ns(e),t,Ns(t)]}function Zx(e){var t=e.state,i=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var r=i.mainAxis,a=r===void 0?!0:r,s=i.altAxis,o=s===void 0?!0:s,l=i.fallbackPlacements,d=i.padding,c=i.boundary,u=i.rootBoundary,m=i.altBoundary,g=i.flipVariations,h=g===void 0?!0:g,x=i.allowedAutoPlacements,b=t.options.placement,v=Ee(b),S=v===b,L=l||(S||!h?[gn(b)]:Qx(b)),M=[b].concat(L).reduce(function(He,_e){return He.concat(Ee(_e)===Fs?Yl(t,{placement:_e,boundary:c,rootBoundary:u,padding:d,flipVariations:h,allowedAutoPlacements:x}):_e)},[]),B=t.rects.reference,T=t.rects.popper,_=new Map,q=!0,D=M[0],H=0;H<M.length;H++){var j=M[H],V=Ee(j),R=ni(j)===Bi,$=[me,ze].indexOf(V)>=0,re=$?"width":"height",Q=pi(t,{placement:j,boundary:c,rootBoundary:u,altBoundary:m,padding:d}),ce=$?R?ve:he:R?ze:me;B[re]>T[re]&&(ce=gn(ce));var de=gn(ce),ue=[];if(a&&ue.push(Q[V]<=0),o&&ue.push(Q[ce]<=0,Q[de]<=0),ue.every(function(He){return He})){D=j,q=!1;break}_.set(j,ue)}if(q)for(var ae=h?3:1,z=function(_e){var ri=M.find(function(Re){var se=_.get(Re);if(se)return se.slice(0,_e).every(function(Ti){return Ti})});if(ri)return D=ri,"break"},k=ae;k>0;k--){var mi=z(k);if(mi==="break")break}t.placement!==D&&(t.modifiersData[n]._skip=!0,t.placement=D,t.reset=!0)}}var Mp={name:"flip",enabled:!0,phase:"main",fn:Zx,requiresIfExists:["offset"],data:{_skip:!1}};function qp(e,t,i){return i===void 0&&(i={x:0,y:0}),{top:e.top-t.height-i.y,right:e.right-t.width+i.x,bottom:e.bottom-t.height+i.y,left:e.left-t.width-i.x}}function Ip(e){return[me,ve,ze,he].some(function(t){return e[t]>=0})}function Jx(e){var t=e.state,i=e.name,n=t.rects.reference,r=t.rects.popper,a=t.modifiersData.preventOverflow,s=pi(t,{elementContext:"reference"}),o=pi(t,{altBoundary:!0}),l=qp(s,n),d=qp(o,r,a),c=Ip(l),u=Ip(d);t.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:d,isReferenceHidden:c,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":u})}var Bp={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Jx};function Xx(e,t,i){var n=Ee(e),r=[he,me].indexOf(n)>=0?-1:1,a=typeof i=="function"?i(Object.assign({},t,{placement:e})):i,s=a[0],o=a[1];return s=s||0,o=(o||0)*r,[he,ve].indexOf(n)>=0?{x:o,y:s}:{x:s,y:o}}function ew(e){var t=e.state,i=e.options,n=e.name,r=i.offset,a=r===void 0?[0,0]:r,s=Rs.reduce(function(c,u){return c[u]=Xx(u,t.rects,a),c},{}),o=s[t.placement],l=o.x,d=o.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=d),t.modifiersData[n]=s}var Fp={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:ew};function iw(e){var t=e.state,i=e.name;t.modifiersData[i]=ea({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}var _p={name:"popperOffsets",enabled:!0,phase:"read",fn:iw,data:{}};function Pl(e){return e==="x"?"y":"x"}function tw(e){var t=e.state,i=e.options,n=e.name,r=i.mainAxis,a=r===void 0?!0:r,s=i.altAxis,o=s===void 0?!1:s,l=i.boundary,d=i.rootBoundary,c=i.altBoundary,u=i.padding,m=i.tether,g=m===void 0?!0:m,h=i.tetherOffset,x=h===void 0?0:h,b=pi(t,{boundary:l,rootBoundary:d,padding:u,altBoundary:c}),v=Ee(t.placement),S=ni(t.placement),L=!S,M=_t(v),B=Pl(M),T=t.modifiersData.popperOffsets,_=t.rects.reference,q=t.rects.popper,D=typeof x=="function"?x(Object.assign({},t.rects,{placement:t.placement})):x,H=typeof D=="number"?{mainAxis:D,altAxis:D}:Object.assign({mainAxis:0,altAxis:0},D),j=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,V={x:0,y:0};if(T){if(a){var R,$=M==="y"?me:he,re=M==="y"?ze:ve,Q=M==="y"?"height":"width",ce=T[M],de=ce+b[$],ue=ce-b[re],ae=g?-q[Q]/2:0,z=S===Bi?_[Q]:q[Q],k=S===Bi?-q[Q]:-_[Q],mi=t.elements.arrow,He=g&&mi?Ft(mi):{width:0,height:0},_e=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:Zr(),ri=_e[$],Re=_e[re],se=Rt(0,_[Q],He[Q]),Ti=L?_[Q]/2-ae-se-ri-H.mainAxis:z-se-ri-H.mainAxis,ai=L?-_[Q]/2+ae+se+Re+H.mainAxis:k+se+Re+H.mainAxis,gi=t.elements.arrow&&ui(t.elements.arrow),Li=gi?M==="y"?gi.clientTop||0:gi.clientLeft||0:0,Kt=(R=j?.[M])!=null?R:0,Xs=ce+Ti-Kt-Li,eo=ce+ai-Kt,vn=Rt(g?Bt(de,Xs):de,ce,g?di(ue,eo):ue);T[M]=vn,V[M]=vn-ce}if(o){var xn,ra=M==="x"?me:he,io=M==="x"?ze:ve,hi=T[B],it=B==="y"?"height":"width",aa=hi+b[ra],sa=hi-b[io],wn=[me,he].indexOf(v)!==-1,oa=(xn=j?.[B])!=null?xn:0,la=wn?aa:hi-_[it]-q[it]-oa+H.altAxis,O=wn?hi+_[it]+q[it]-oa-H.altAxis:sa,I=g&&wn?Ap(la,hi,O):Rt(g?la:aa,hi,g?O:sa);T[B]=I,V[B]=I-hi}t.modifiersData[n]=V}}var Rp={name:"preventOverflow",enabled:!0,phase:"main",fn:tw,requiresIfExists:["offset"]};function Hl(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function $l(e){return e===le(e)||!Se(e)?Dt(e):Hl(e)}function nw(e){var t=e.getBoundingClientRect(),i=Fi(t.width)/e.offsetWidth||1,n=Fi(t.height)/e.offsetHeight||1;return i!==1||n!==1}function Wl(e,t,i){i===void 0&&(i=!1);var n=Se(t),r=Se(t)&&nw(t),a=Me(t),s=ti(e,r,i),o={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(n||!n&&!i)&&((Le(t)!=="body"||jt(a))&&(o=$l(t)),Se(t)?(l=ti(t,!0),l.x+=t.clientLeft,l.y+=t.clientTop):a&&(l.x=Nt(a))),{x:s.left+o.scrollLeft-l.x,y:s.top+o.scrollTop-l.y,width:s.width,height:s.height}}function rw(e){var t=new Map,i=new Set,n=[];e.forEach(function(a){t.set(a.name,a)});function r(a){i.add(a.name);var s=[].concat(a.requires||[],a.requiresIfExists||[]);s.forEach(function(o){if(!i.has(o)){var l=t.get(o);l&&r(l)}}),n.push(a)}return e.forEach(function(a){i.has(a.name)||r(a)}),n}function Vl(e){var t=rw(e);return kp.reduce(function(i,n){return i.concat(t.filter(function(r){return r.phase===n}))},[])}function Ul(e){var t;return function(){return t||(t=new Promise(function(i){Promise.resolve().then(function(){t=void 0,i(e())})})),t}}function Gl(e){var t=e.reduce(function(i,n){var r=i[n.name];return i[n.name]=r?Object.assign({},r,n,{options:Object.assign({},r.options,n.options),data:Object.assign({},r.data,n.data)}):n,i},{});return Object.keys(t).map(function(i){return t[i]})}var Dp={placement:"bottom",modifiers:[],strategy:"absolute"};function Np(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];return!t.some(function(n){return!(n&&typeof n.getBoundingClientRect=="function")})}function jp(e){e===void 0&&(e={});var t=e,i=t.defaultModifiers,n=i===void 0?[]:i,r=t.defaultOptions,a=r===void 0?Dp:r;return function(o,l,d){d===void 0&&(d=a);var c={placement:"bottom",orderedModifiers:[],options:Object.assign({},Dp,a),modifiersData:{},elements:{reference:o,popper:l},attributes:{},styles:{}},u=[],m=!1,g={state:c,setOptions:function(v){var S=typeof v=="function"?v(c.options):v;x(),c.options=Object.assign({},a,c.options,S),c.scrollParents={reference:ii(o)?Ji(o):o.contextElement?Ji(o.contextElement):[],popper:Ji(l)};var L=Vl(Gl([].concat(n,c.options.modifiers)));if(c.orderedModifiers=L.filter(function(j){return j.enabled}),!1){var M;if(getBasePlacement(c.options.placement)===auto)var B;var T,_,q,D,H}return h(),g.update()},forceUpdate:function(){if(!m){var v=c.elements,S=v.reference,L=v.popper;if(Np(S,L)){c.rects={reference:Wl(S,ui(L),c.options.strategy==="fixed"),popper:Ft(L)},c.reset=!1,c.placement=c.options.placement,c.orderedModifiers.forEach(function(j){return c.modifiersData[j.name]=Object.assign({},j.data)});for(var M=0,B=0;B<c.orderedModifiers.length;B++){if(c.reset===!0){c.reset=!1,B=-1;continue}var T=c.orderedModifiers[B],_=T.fn,q=T.options,D=q===void 0?{}:q,H=T.name;typeof _=="function"&&(c=_({state:c,options:D,name:H,instance:g})||c)}}}},update:Ul(function(){return new Promise(function(b){g.forceUpdate(),b(c)})}),destroy:function(){x(),m=!0}};if(!Np(o,l))return g;g.setOptions(d).then(function(b){!m&&d.onFirstUpdate&&d.onFirstUpdate(b)});function h(){c.orderedModifiers.forEach(function(b){var v=b.name,S=b.options,L=S===void 0?{}:S,M=b.effect;if(typeof M=="function"){var B=M({state:c,name:v,instance:g,options:L}),T=function(){};u.push(B||T)}})}function x(){u.forEach(function(b){return b()}),u=[]}return g}}var aw=[Op,_p,Ep,zp,Fp,Mp,Rp,Tp,Bp],Ql=jp({defaultModifiers:aw});var sw=(e,t)=>(e%t+t)%t,Zl=class{constructor(t,i,n){this.owner=t,this.containerEl=i,i.on("click",".suggestion-item",this.onSuggestionClick.bind(this)),i.on("mousemove",".suggestion-item",this.onSuggestionMouseover.bind(this)),n.register([],"ArrowUp",r=>{if(!r.isComposing)return this.setSelectedItem(this.selectedItem-1,!0),!1}),n.register([],"ArrowDown",r=>{if(!r.isComposing)return this.setSelectedItem(this.selectedItem+1,!0),!1}),n.register([],"Enter",r=>{if(!r.isComposing)return this.useSelectedItem(r),!1})}onSuggestionClick(t,i){t.preventDefault();let n=this.suggestions.indexOf(i);this.setSelectedItem(n,!1),this.useSelectedItem(t)}onSuggestionMouseover(t,i){let n=this.suggestions.indexOf(i);this.setSelectedItem(n,!1)}setSuggestions(t){this.containerEl.empty();let i=[];t.forEach(n=>{let r=this.containerEl.createDiv("suggestion-item");this.owner.renderSuggestion(n,r),i.push(r)}),this.values=t,this.suggestions=i,this.setSelectedItem(0,!1)}useSelectedItem(t){let i=this.values[this.selectedItem];i&&this.owner.selectSuggestion(i,t)}setSelectedItem(t,i){let n=sw(t,this.suggestions.length),r=this.suggestions[this.selectedItem],a=this.suggestions[n];r?.removeClass("is-selected"),a?.addClass("is-selected"),this.selectedItem=n,i&&a.scrollIntoView(!1)}},fn=class{constructor(t,i){this.app=t,this.inputEl=i,this.scope=new Kp.Scope,this.suggestEl=createDiv("suggestion-container");let n=this.suggestEl.createDiv("suggestion");this.suggest=new Zl(this,n,this.scope),this.scope.register([],"Escape",this.close.bind(this)),this.inputEl.addEventListener("input",this.onInputChanged.bind(this)),this.inputEl.addEventListener("focus",this.onInputChanged.bind(this)),this.inputEl.addEventListener("blur",this.close.bind(this)),this.suggestEl.on("mousedown",".suggestion-container",r=>{r.preventDefault()})}onInputChanged(){let t=this.inputEl.value,i=this.getSuggestions(t);if(!i){this.close();return}i.length>0?(this.suggest.setSuggestions(i),this.open(this.app.dom.appContainerEl,this.inputEl)):this.close()}open(t,i){this.app.keymap.pushScope(this.scope),t.appendChild(this.suggestEl),this.popper=Ql(i,this.suggestEl,{placement:"bottom-start",modifiers:[{name:"sameWidth",enabled:!0,fn:({state:n,instance:r})=>{let a=`${n.rects.reference.width}px`;n.styles.popper.width!==a&&(n.styles.popper.width=a,r.update())},phase:"beforeWrite",requires:["computeStyles"]}]})}close(){this.app.keymap.popScope(this.scope),this.suggest.setSuggestions([]),this.popper&&this.popper.destroy(),this.suggestEl.detach()}};var Yp=require("obsidian"),ia=class extends fn{constructor(i,n,r=[]){super(i,n);this.app=i;this.inputEl=n;this.valuesToExclude=r}getSuggestions(i){let n=this.app.vault.getAllLoadedFiles().filter(o=>o instanceof Yp.TFolder&&o.path!=="/").map(o=>o.path);if(!n)return[];let r=n.filter(o=>!this.valuesToExclude.includes(o)||o===this.inputEl.getAttribute("folderExists")),a=[],s=i.toLowerCase();return r.forEach(o=>{o.toLowerCase().contains(s)&&a.push(o)}),a}renderSuggestion(i,n){n.setText(i)}selectSuggestion(i){this.inputEl.setAttribute("folderName",i),this.inputEl.value=i,this.inputEl.trigger("input"),this.close()}};var Ks=class extends Qi{constructor(i,n,r,a,s){super(i,n,E("tabs.general.folders-to-ignore.name"),E("tabs.general.folders-to-ignore.description"),null,E("tabs.general.folders-to-ignore.add-input-button-text"),s,()=>{let o="";this.foldersToIgnore.push(o),this.saveSettings(),this.addFolderToIgnore(o,this.foldersToIgnore.length-1,!0)});this.foldersToIgnore=r;this.app=a;this.display(),this.inputElDiv.addClass("linter-folder-ignore-container")}showInputEls(){this.foldersToIgnore.forEach((i,n)=>{this.addFolderToIgnore(i,n)})}addFolderToIgnore(i,n,r=!1){new Pp.Setting(this.inputElDiv).addSearch(s=>{new ia(this.app,s.inputEl,this.foldersToIgnore),s.setPlaceholder(E("tabs.general.folders-to-ignore.folder-search-placeholder-text")).setValue(i).onChange(o=>{let l=o;(l===""||l===s.inputEl.getAttribute("folderName"))&&(this.foldersToIgnore[n]=l,this.saveSettings())}),s.inputEl.setAttr("tabIndex",n),s.inputEl.addClass("linter-folder-ignore"),r&&s.inputEl.focus()}).addExtraButton(s=>{s.setIcon("cross").setTooltip(E("tabs.general.folders-to-ignore.delete-tooltip")).onClick(()=>{this.foldersToIgnore.splice(n,1),this.saveSettings(),this.resetInputEls()})}).settingEl.addClass("linter-no-border")}};var Ys=class extends Si{constructor(i,n,r,a,s){super(i,n,"General",r,a);this.app=s;this.display()}display(){let i=this.contentEl.createDiv();this.addSettingSearchInfoForGeneralSettings(new Ai(i,"tabs.general.lint-on-save.name","tabs.general.lint-on-save.description","lintOnSave",this.plugin)),i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ai(i,"tabs.general.display-message.name","tabs.general.display-message.description","displayChanged",this.plugin)),i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ai(i,"tabs.general.lint-on-file-change.name","tabs.general.lint-on-file-change.description","lintOnFileChange",this.plugin)),i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ai(i,"tabs.general.display-lint-on-file-change-message.name","tabs.general.display-lint-on-file-change-message.description","displayLintOnFileChangeNotice",this.plugin));let n=navigator.language?.toLowerCase(),r=["system-default"],a=[E("tabs.general.same-as-system-locale").replace("{SYS_LOCALE}",n)];for(let g of Hp.moment.locales())r.push(g),a.push(g);let s={isForEnum:!1,values:r,descriptions:a};i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ii(i,"tabs.general.override-locale.name","tabs.general.override-locale.description","linterLocale",this.plugin,s,async()=>{await this.plugin.setOrUpdateMomentInstance()}));let o={isForEnum:!0,values:["multi-line","single-line","single string comma delimited","single string to single-line","single string to multi-line"],descriptions:[]};i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ii(i,"tabs.general.yaml-aliases-section-style.name","tabs.general.yaml-aliases-section-style.description","commonStyles.aliasArrayStyle",this.plugin,o));let l={isForEnum:!0,values:["multi-line","single-line","single string to single-line","single string to multi-line","single-line space delimited","single string space delimited","single string comma delimited"],descriptions:[]};i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ii(i,"tabs.general.yaml-tags-section-style.name","tabs.general.yaml-tags-section-style.description","commonStyles.tagArrayStyle",this.plugin,l));let d=['"',"'"],c={isForEnum:!1,values:d,descriptions:d};i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ii(i,"tabs.general.default-escape-character.name","tabs.general.default-escape-character.description","commonStyles.escapeCharacter",this.plugin,c)),i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ai(i,"tabs.general.remove-unnecessary-escape-chars-in-multi-line-arrays.name","tabs.general.remove-unnecessary-escape-chars-in-multi-line-arrays.description","commonStyles.removeUnnecessaryEscapeCharsForMultiLineArrays",this.plugin)),i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Bs(i,"tabs.general.number-of-dollar-signs-to-indicate-math-block.name","tabs.general.number-of-dollar-signs-to-indicate-math-block.description","commonStyles.minimumNumberOfDollarSignsToBeAMathBlock",this.plugin));let u=this.contentEl.createDiv(),m=new Ks(u,this.plugin.settingsTab.component,this.plugin.settings.foldersToIgnore,this.app,()=>{this.plugin.saveSettings()});this.addSettingSearchInfo(u,m.name,m.description.replaceAll(` -`," "))}};var Ps=class extends Si{constructor(i,n,r,a,s,o){super(i,n,r,s,o);this.rules=a;this.display()}display(){for(let i of this.rules){let n=this.contentEl.createDiv();n.id=i.alias,n.createEl(this.isMobile?"h4":"h3",{},a=>{a.innerHTML=`<a href="${i.getURL()}">${i.getName()}</a>`});let r=[];for(let a of i.options)a.display(n,this.plugin.settings,this.plugin),r.push(a.getSearchInfo());this.addSettingSearchInfo(n,i.getName().toLowerCase(),i.getDescription().toLowerCase(),r,n.id)}}};var $p=require("obsidian");var ta=class extends fn{constructor(i,n,r=[]){super(i,n);this.app=i;this.inputEl=n;this.valuesToExclude=r}getSuggestions(i){let n=this.app.commands.listCommands();if(!n)return[];let r=n.filter(o=>{for(let l of this.valuesToExclude)if(l.id==o.id&&!(this.inputEl.hasAttribute("commandId")&&this.inputEl.getAttribute("commandId")==o.id))return!1;return!0}),a=[],s=i.toLowerCase();return r.forEach(o=>{(o.id.contains(s)||o.name.toLowerCase().contains(s))&&a.push(o)}),a}renderSuggestion(i,n){n.setText(i.name)}selectSuggestion(i){this.inputEl.value=i.name,this.inputEl.setAttribute("commandId",i.id),this.inputEl.trigger("input"),this.close()}};var Hs=class extends Qi{constructor(i,n,r,a,s){super(i,n,E("options.custom-command.name"),E("options.custom-command.description"),E("options.custom-command.warning"),E("options.custom-command.add-input-button-text"),s,()=>{let o={id:"",name:""};this.lintCommands.push(o),this.saveSettings(),this.addCommand(o,this.lintCommands.length-1,!0)});this.lintCommands=r;this.app=a;this.display()}showInputEls(){this.lintCommands.forEach((i,n)=>{this.addCommand(i,n)})}addCommand(i,n,r=!1){new $p.Setting(this.inputElDiv).addSearch(a=>{new ta(this.app,a.inputEl,this.lintCommands),a.setPlaceholder(E("options.custom-command.command-search-placeholder-text")).setValue(i.name).onChange(s=>{let o={id:a.inputEl.getAttribute("commandId"),name:s};o.name&&o.id?(this.lintCommands[n]=o,this.saveSettings()):!o.name&&!o.id&&(this.lintCommands[n]=o,this.saveSettings())}),a.inputEl.setAttr("tabIndex",n),a.inputEl.addClass("linter-custom-command"),r&&a.inputEl.focus()}).addExtraButton(a=>{a.setIcon("up-chevron-glyph").setTooltip(E("options.custom-command.move-up-tooltip")).onClick(()=>{this.arrayMove(n,n-1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(a=>{a.setIcon("down-chevron-glyph").setTooltip(E("options.custom-command.move-down-tooltip")).onClick(()=>{this.arrayMove(n,n+1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(a=>{a.setIcon("cross").setTooltip(E("options.custom-command.delete-tooltip")).onClick(()=>{this.lintCommands.splice(n,1),this.saveSettings(),this.resetInputEls()})})}arrayMove(i,n){if(n<0||n===this.lintCommands.length)return;let r=this.lintCommands[i];this.lintCommands[i]=this.lintCommands[n],this.lintCommands[n]=r}};var Jl=require("obsidian");var ow="gm",$s=class extends Qi{constructor(i,n,r,a){super(i,n,E("options.custom-replace.name"),E("options.custom-replace.description"),E("options.custom-replace.warning"),E("options.custom-replace.add-input-button-text"),a,()=>{let s={label:"",find:"",replace:"",flags:ow};this.regexes.push(s),this.saveSettings(),this.addRegex(s,this.regexes.length-1,!0)});this.regexes=r;this.display(),this.inputElDiv.addClass("linter-custom-regex-replacement-container")}showInputEls(){this.regexes.forEach((i,n)=>{this.addRegex(i,n)})}addRegex(i,n,r=!1){let a=this.inputElDiv.createDiv({cls:"linter-custom-regex-replacement"}),s=a.createDiv(),o=new Jl.Setting(s).addText(c=>{c.setPlaceholder(E("options.custom-replace.label-placeholder-text")).setValue(i.label).onChange(u=>{this.regexes[n].label=u,this.saveSettings()}),c.inputEl.setAttr("inputIndex",n),c.inputEl.addClass("linter-custom-regex-replacement-label-input"),r&&c.inputEl.focus()});o.controlEl.addClass("linter-custom-regex-replacement-label"),o.descEl.remove(),o.infoEl.remove(),o.nameEl.remove();let l=a.createDiv();new Jl.Setting(l).addText(c=>{c.setPlaceholder(E("options.custom-replace.regex-to-find-placeholder-text")).setValue(i.find).onChange(u=>{this.regexes[n].find=u,this.saveSettings()}),c.inputEl.addClass("linter-custom-regex-replacement-normal-input")}).addText(c=>{c.setPlaceholder(E("options.custom-replace.flags-placeholder-text")).setValue(i.flags).onChange(u=>{this.regexes[n].flags=u,this.saveSettings()}),c.inputEl.addClass("linter-custom-regex-replacement-flags")}).addText(c=>{c.setPlaceholder(E("options.custom-replace.regex-to-replace-placeholder-text")).setValue(i.replace).onChange(u=>{this.regexes[n].replace=u,this.saveSettings()}),c.inputEl.addClass("linter-custom-regex-replacement-normal-input")}).addExtraButton(c=>{c.setIcon("up-chevron-glyph").setTooltip(E("options.custom-replace.move-up-tooltip")).onClick(()=>{this.arrayMove(n,n-1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(c=>{c.setIcon("down-chevron-glyph").setTooltip(E("options.custom-replace.move-down-tooltip")).onClick(()=>{this.arrayMove(n,n+1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(c=>{c.setIcon("cross").setTooltip(E("options.custom-replace.delete-tooltip")).onClick(()=>{this.regexes.splice(n,1),this.saveSettings(),this.resetInputEls()})}).settingEl.addClass("linter-custom-regex-replacement-row2")}arrayMove(i,n){if(n<0||n===this.regexes.length)return;let r=this.regexes[i];this.regexes[i]=this.regexes[n],this.regexes[n]=r}};var Ws=class extends Si{constructor(i,n,r,a,s){super(i,n,"Custom",r,s);this.app=a;this.display()}display(){let i=this.contentEl.createDiv(),n=new Hs(i,this.plugin.settingsTab.component,this.plugin.settings.lintCommands,this.app,()=>{this.plugin.saveSettings()});this.addSettingSearchInfo(i,n.name,n.description.replaceAll(` +</svg>`,Ee={folder:{id:"lint-folder",source:nw},file:{id:"lint-file",source:tw},vault:{id:"lint-vault",source:rw},whitespace:{id:"lint-whitespace",source:aw},math:{id:"lint-math",source:sw},content:{id:"lint-content",source:ow},paste:{id:"lint-paste",source:lw},custom:{id:"lint-custom",source:cw},heading:{id:"lint-heading",source:dw},footer:{id:"lint-footer",source:uw},yaml:{id:"lint-yaml",source:pw},general:{id:"lint-general",source:mw},debug:{id:"lint-debug",source:gw},clipboard:{id:"linter-clipboard",source:hw},success:{id:"linter-success",source:fw}};var qn=require("obsidian");var co=class{constructor(){this.disabledRules=[]}lintText(t){this.skipFile=!1;let i=t.oldText;if([this.disabledRules,this.skipFile]=Rs(i),this.skipFile)return i;wt(E("logs.rule-running"));let n=E("logs.pre-rules");wt(n);let r=this.runBeforeRegularRules(t);Zi(n);let a=E("logs.disabled-text");for(let o of qi){if(this.disabledRules.includes(o.alias)){ni(o.alias+" "+a);continue}else if(o.hasSpecialExecutionOrder||o.type==="Paste")continue;[r]=ot.applyIfEnabledBase(o,r,t.settings,{fileCreatedTime:t.fileInfo.createdAtFormatted,fileModifiedTime:t.fileInfo.modifiedAtFormatted,fileName:t.fileInfo.name,locale:t.momentLocale,minimumNumberOfDollarSignsToBeAMathBlock:t.settings.commonStyles.minimumNumberOfDollarSignsToBeAMathBlock,aliasArrayStyle:t.settings.commonStyles.aliasArrayStyle,tagArrayStyle:t.settings.commonStyles.tagArrayStyle,defaultEscapeCharacter:t.settings.commonStyles.escapeCharacter,removeUnnecessaryEscapeCharsForMultiLineArrays:t.settings.commonStyles.removeUnnecessaryEscapeCharsForMultiLineArrays})}let s=E("logs.custom-regex");return wt(s),r=this.runCustomRegexReplacement(t.settings.customRegexes,r),Zi(s),t.oldText=r,this.runAfterRegularRules(i,t)}runBeforeRegularRules(t){let i=t.oldText;return[i]=Rt.applyIfEnabled(i,t.settings,this.disabledRules),[i]=_t.applyIfEnabled(i,t.settings,this.disabledRules,{defaultEscapeCharacter:t.settings.commonStyles.escapeCharacter}),[i]=Dt.applyIfEnabled(i,t.settings,this.disabledRules,{minimumNumberOfDollarSignsToBeAMathBlock:t.settings.commonStyles.minimumNumberOfDollarSignsToBeAMathBlock}),i}runAfterRegularRules(t,i){let n=i.oldText,r=E("logs.post-rules");wt(r),[n]=Bt.applyIfEnabled(n,i.settings,this.disabledRules),[n]=Mt.applyIfEnabled(n,i.settings,this.disabledRules),[n]=Ft.applyIfEnabled(n,i.settings,this.disabledRules,{defaultEscapeCharacter:i.settings.commonStyles.escapeCharacter}),[n]=Vt.applyIfEnabled(n,i.settings,this.disabledRules);let a=i.getCurrentTime(),s;[n,s]=dt.applyIfEnabled(n,i.settings,this.disabledRules,{fileCreatedTime:i.fileInfo.createdAtFormatted,fileModifiedTime:i.fileInfo.modifiedAtFormatted,currentTime:a,alreadyModified:t!=n,locale:i.momentLocale});let o=dt.getRuleOptions(i.settings);return a=i.getCurrentTime(),[n]=Gt.applyIfEnabled(n,i.settings,this.disabledRules,{currentTimeFormatted:a.format(o.format.trimEnd()),yamlTimestampDateModifiedEnabled:s&&o.dateModified,dateModifiedKey:o.dateModifiedKey}),Zi(r),Zi(E("logs.rule-running")),n}runCustomCommands(t,i){if(this.skipFile)return;ni(E("logs.running-custom-lint-command"));let n=new Set;for(let r of t){if(r.id){if(n.has(r.id)){xt(E("logs.custom-lint-duplicate-warning").replace("{COMMAND_NAME}",r.name));continue}}else continue;try{n.add(r.id),i.executeCommandById(r.id)}catch(a){Ds(a,`${E("logs.custom-lint-error-message")} ${r.id}`)}}}runCustomRegexReplacement(t,i){return Le([h.customIgnore],i,n=>{ni(E("logs.running-custom-regex"));let r=n,a=n;for(let s of t){let o=s.find===void 0||s.find==""||s.find===null,l=s.replace===void 0||s.replace===null;if(o||l)continue;let c=s.label;c&&c.trim()!=""&&(c+=`: +`),c+=`/${s.find}/${s.flags}/${s.replace}/`,ni(c);let d=new RegExp(`${s.find}`,s.flags);r=r.replace(d,ru(s.replace)),a!=r&&ni(r),a=r}return r})}runPasteLint(t,i,n){let r=n.oldText;return[r]=Pt.applyIfEnabled(r,n.settings,[]),[r]=Wt.applyIfEnabled(r,n.settings,[]),[r]=$t.applyIfEnabled(r,n.settings,[]),[r]=Yt.applyIfEnabled(r,n.settings,[]),[r]=Ht.applyIfEnabled(r,n.settings,[]),[r]=Nt.applyIfEnabled(r,n.settings,[],{lineContent:t,selectedText:i}),[r]=Kt.applyIfEnabled(r,n.settings,[],{lineContent:t,selectedText:i}),[r]=qt.applyIfEnabled(r,n.settings,[],{lineContent:t}),r}};function xa(e,t=null,i,n){let r=t?(0,qn.moment)(t.stat.ctime):(0,qn.moment)();r.locale(i);let a=t?(0,qn.moment)(t.stat.mtime):(0,qn.moment)();a.locale(i);let s=a.format(),o=r.format();return{oldText:e,fileInfo:{name:t?t.basename:"",createdAtFormatted:o,modifiedAtFormatted:s},settings:n,momentLocale:i,getCurrentTime:()=>{let l=(0,qn.moment)();return l.locale(i),l}}}var uo=require("obsidian");var wa=class extends uo.Modal{constructor(t,i,n,r,a,s=!1){super(t),this.modalEl.addClass("confirm-modal"),this.contentEl.createEl("h3",{text:E("warning-text")}).style.textAlign="center",s&&(this.contentEl.createEl("p",{text:E("custom-command-warning")}).style.fontWeight="bold"),this.contentEl.createEl("p",{text:i+" "+E("file-backup-text")}).id="confirm-dialog",this.contentEl.createDiv("modal-button-container",o=>{o.createEl("button",{text:"Cancel"}).addEventListener("click",()=>this.close());let l=o.createEl("button",{attr:{type:"submit"},cls:"mod-cta",text:n});l.addEventListener("click",async c=>{new uo.Notice(r),this.close(),await a()}),setTimeout(()=>{l.focus()},50)})}};var ht=require("obsidian");var Pp=require("obsidian");var yw={General:Ee.general.id,Custom:Ee.custom.id,YAML:Ee.yaml.id,Heading:Ee.heading.id,Footnote:Ee.footer.id,Content:Ee.content.id,Spacing:Ee.whitespace.id,Paste:Ee.paste.id,Debug:Ee.debug.id},bw={General:"tabs.names.general",Custom:"tabs.names.custom",YAML:"tabs.names.yaml",Heading:"tabs.names.heading",Footnote:"tabs.names.footnote",Content:"tabs.names.content",Spacing:"tabs.names.spacing",Paste:"tabs.names.paste",Debug:"tabs.names.debug"},Bi=class{constructor(t,i,n,r,a){this.name=n;this.isMobile=r;this.plugin=a;this.searchSettingInfo=[];this.navButton=t.createDiv("linter-navigation-item");let s="linter-desktop";r&&(s="linter-mobile"),this.navButton.addClass(s),(0,Pp.setIcon)(this.navButton.createSpan({cls:"linter-navigation-item-icon"}),yw[n]);let o=E(bw[n]);this.navButton.createSpan().setText(o),this.contentEl=i.createDiv("linter-tab-settings"),this.contentEl.id=n.toLowerCase().replace(" ","-"),this.headingEl=this.contentEl.createEl("h2",{text:o}),pi(this.headingEl)}addSettingSearchInfo(t,i="",n="",r=null,a=null){this.searchSettingInfo.push({containerEl:t,name:i.toLowerCase(),description:n.toLowerCase(),options:r,alias:a})}addSettingSearchInfoForGeneralSettings(t){this.searchSettingInfo.push({containerEl:t.containerEl,name:t.name.toLowerCase(),description:t.description.toLowerCase(),options:null,alias:null})}updateTabDisplayMode(t,i="the status is still the same"){switch(t?(this.navButton.addClass("linter-navigation-item-selected"),Mi(this.contentEl)):(this.navButton.removeClass("linter-navigation-item-selected"),pi(this.contentEl)),i){case"entering search mode by focusing on the search input box":Mi(this.contentEl),Mi(this.headingEl);for(let n of this.searchSettingInfo)Mi(n.containerEl);break;case"leaving search mode by selecting a tab":pi(this.headingEl);for(let n of this.searchSettingInfo)Mi(n.containerEl);break}}};var bm=require("obsidian");var Hp=require("obsidian");var ka={ruleConfigs:{},lintOnSave:!1,recordLintOnSaveLogs:!1,displayChanged:!0,lintOnFileChange:!1,displayLintOnFileChangeNotice:!1,settingsConvertedToConfigKeyValues:!1,foldersToIgnore:[],linterLocale:"system-default",logLevel:"ERROR",lintCommands:[],customRegexes:[],commonStyles:{aliasArrayStyle:"single-line",tagArrayStyle:"single-line",minimumNumberOfDollarSignsToBeAMathBlock:2,escapeCharacter:'"',removeUnnecessaryEscapeCharsForMultiLineArrays:!1}};var ut=class{constructor(t,i,n,r,a,s=null){this.containerEl=t;this.keyToUpdate=r;this.plugin=a;this.beforeSave=s;this.name=E(i),this.description=E(n)}async saveValue(t){let i=this.keyToUpdate.split(".");i.length===2?this.plugin.settings[i[0]][i[1]]=t:this.plugin.settings[this.keyToUpdate]=t,this.beforeSave&&this.beforeSave(),await this.plugin.saveSettings()}getDefaultValue(){let t=this.keyToUpdate.split(".");return t.length===2?ka[t[0]][t[1]]:ka[this.keyToUpdate]}getString(){return Zn(this.plugin.settings,this.keyToUpdate)??this.getDefaultValue()}getBoolean(){return Td(this.plugin.settings,this.keyToUpdate)??this.getDefaultValue()}getNumber(){return Ad(this.plugin.settings,this.keyToUpdate)??this.getDefaultValue()}parseNameAndDescription(){Ci(this.name,this.setting.nameEl,this.plugin.settingsTab.component),Ci(this.description,this.setting.descEl,this.plugin.settingsTab.component)}};var Hi=class extends ut{constructor(i,n,r,a,s,o,l=null){super(i,n,r,a,s,l);this.dropdownRecords=o;this.display()}display(){this.setting=new Hp.Setting(this.containerEl).setName(this.name).setDesc(this.description).addDropdown(i=>{this.addDropdownRecords(i),i.setValue(this.getString()),i.onChange(async n=>{this.saveValue(n)})})}addDropdownRecords(i){if(this.dropdownRecords.isForEnum){for(let n of this.dropdownRecords.values){let r="enums."+n;i.addOption(n,E(r))}return}for(let n=0;n<this.dropdownRecords.values.length;n++)i.addOption(this.dropdownRecords.values[n],this.dropdownRecords.descriptions[n])}};var $p=require("obsidian");var po=class extends ut{constructor(i,n,r,a,s){super(i,n,r,a,s);this.display()}display(){this.setting=new $p.Setting(this.containerEl).setName(this.name).setDesc(this.description).addText(i=>{i.inputEl.type="number",i.setValue(this.getNumber().toString()).onChange(async n=>{this.saveValue(parseInt(n))})})}};var Wp=require("obsidian");var _i=class extends ut{constructor(i,n,r,a,s){super(i,n,r,a,s);this.display()}display(){this.setting=new Wp.Setting(this.containerEl).addToggle(i=>{i.setValue(this.getBoolean()).onChange(async n=>{this.saveValue(n)})}),this.parseNameAndDescription()}};var ym=require("obsidian");var Up=require("obsidian");var pt=class{constructor(t,i,n,r,a,s,o,l){this.containerEl=t;this.parentComponent=i;this.name=n;this.description=r;this.warning=a;this.addInputBtnText=s;this.saveSettings=o;this.onAddInput=l}display(){this.containerEl.createDiv({cls:"setting-item-name",text:this.name});let t=this.containerEl.createDiv({cls:"setting-item-description"});Ci(this.description,t.createEl("p",{cls:"custom-row-description"}),this.parentComponent),this.warning!=null&&this.warning.trim()!=""&&t.createEl("p",{text:this.warning,cls:"mod-warning"}),new Up.Setting(this.containerEl).addButton(i=>{i.setButtonText(this.addInputBtnText).setCta().onClick(()=>this.onAddInput())}),this.inputElDiv=this.containerEl.createDiv(),this.showInputEls()}resetInputEls(){this.inputElDiv.empty(),this.showInputEls()}};var hm=require("obsidian");var be="top",Oe="bottom",Ae="right",ke="left",mo="auto",mt=[be,Oe,Ae,ke],$i="start",Zt="end",Vp="clippingParents",go="viewport",In="popper",Gp="reference",vc=mt.reduce(function(e,t){return e.concat([t+"-"+$i,t+"-"+Zt])},[]),ho=[].concat(mt,[mo]).reduce(function(e,t){return e.concat([t,t+"-"+$i,t+"-"+Zt])},[]),vw="beforeRead",xw="read",ww="afterRead",kw="beforeMain",Sw="main",zw="afterMain",Aw="beforeWrite",Tw="write",Lw="afterWrite",Qp=[vw,xw,ww,kw,Sw,zw,Aw,Tw,Lw];function Be(e){return e?(e.nodeName||"").toLowerCase():null}function ge(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function gi(e){var t=ge(e).Element;return e instanceof t||e instanceof Element}function Ce(e){var t=ge(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function Bn(e){if(typeof ShadowRoot>"u")return!1;var t=ge(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function Ew(e){var t=e.state;Object.keys(t.elements).forEach(function(i){var n=t.styles[i]||{},r=t.attributes[i]||{},a=t.elements[i];!Ce(a)||!Be(a)||(Object.assign(a.style,n),Object.keys(r).forEach(function(s){var o=r[s];o===!1?a.removeAttribute(s):a.setAttribute(s,o===!0?"":o)}))})}function Ow(e){var t=e.state,i={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,i.popper),t.styles=i,t.elements.arrow&&Object.assign(t.elements.arrow.style,i.arrow),function(){Object.keys(t.elements).forEach(function(n){var r=t.elements[n],a=t.attributes[n]||{},s=Object.keys(t.styles.hasOwnProperty(n)?t.styles[n]:i[n]),o=s.reduce(function(l,c){return l[c]="",l},{});!Ce(r)||!Be(r)||(Object.assign(r.style,o),Object.keys(a).forEach(function(l){r.removeAttribute(l)}))})}}var Zp={name:"applyStyles",enabled:!0,phase:"write",fn:Ew,effect:Ow,requires:["computeStyles"]};function _e(e){return e.split("-")[0]}var Si=Math.max,Jt=Math.min,Wi=Math.round;function _n(){var e=navigator.userAgentData;return e!=null&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function Sa(){return!/^((?!chrome|android).)*safari/i.test(_n())}function hi(e,t,i){t===void 0&&(t=!1),i===void 0&&(i=!1);var n=e.getBoundingClientRect(),r=1,a=1;t&&Ce(e)&&(r=e.offsetWidth>0&&Wi(n.width)/e.offsetWidth||1,a=e.offsetHeight>0&&Wi(n.height)/e.offsetHeight||1);var s=gi(e)?ge(e):window,o=s.visualViewport,l=!Sa()&&i,c=(n.left+(l&&o?o.offsetLeft:0))/r,d=(n.top+(l&&o?o.offsetTop:0))/a,u=n.width/r,g=n.height/a;return{width:u,height:g,top:d,right:c+u,bottom:d+g,left:c,x:c,y:d}}function Xt(e){var t=hi(e),i=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-i)<=1&&(i=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:i,height:n}}function za(e,t){var i=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(i&&Bn(i)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function ei(e){return ge(e).getComputedStyle(e)}function xc(e){return["table","td","th"].indexOf(Be(e))>=0}function Re(e){return((gi(e)?e.ownerDocument:e.document)||window.document).documentElement}function Ui(e){return Be(e)==="html"?e:e.assignedSlot||e.parentNode||(Bn(e)?e.host:null)||Re(e)}function Jp(e){return!Ce(e)||ei(e).position==="fixed"?null:e.offsetParent}function Cw(e){var t=/firefox/i.test(_n()),i=/Trident/i.test(_n());if(i&&Ce(e)){var n=ei(e);if(n.position==="fixed")return null}var r=Ui(e);for(Bn(r)&&(r=r.host);Ce(r)&&["html","body"].indexOf(Be(r))<0;){var a=ei(r);if(a.transform!=="none"||a.perspective!=="none"||a.contain==="paint"||["transform","perspective"].indexOf(a.willChange)!==-1||t&&a.willChange==="filter"||t&&a.filter&&a.filter!=="none")return r;r=r.parentNode}return null}function zi(e){for(var t=ge(e),i=Jp(e);i&&xc(i)&&ei(i).position==="static";)i=Jp(i);return i&&(Be(i)==="html"||Be(i)==="body"&&ei(i).position==="static")?t:i||Cw(e)||t}function en(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function tn(e,t,i){return Si(e,Jt(t,i))}function Xp(e,t,i){var n=tn(e,t,i);return n>i?i:n}function Aa(){return{top:0,right:0,bottom:0,left:0}}function Ta(e){return Object.assign({},Aa(),e)}function La(e,t){return t.reduce(function(i,n){return i[n]=e,i},{})}var Mw=function(t,i){return t=typeof t=="function"?t(Object.assign({},i.rects,{placement:i.placement})):t,Ta(typeof t!="number"?t:La(t,mt))};function qw(e){var t,i=e.state,n=e.name,r=e.options,a=i.elements.arrow,s=i.modifiersData.popperOffsets,o=_e(i.placement),l=en(o),c=[ke,Ae].indexOf(o)>=0,d=c?"height":"width";if(!(!a||!s)){var u=Mw(r.padding,i),g=Xt(a),m=l==="y"?be:ke,f=l==="y"?Oe:Ae,w=i.rects.reference[d]+i.rects.reference[l]-s[l]-i.rects.popper[d],x=s[l]-i.rects.reference[l],v=zi(a),z=v?l==="y"?v.clientHeight||0:v.clientWidth||0:0,L=w/2-x/2,C=u[m],R=z-g[d]-u[f],T=z/2-g[d]/2+L,B=tn(C,T,R),q=l;i.modifiersData[n]=(t={},t[q]=B,t.centerOffset=B-T,t)}}function Iw(e){var t=e.state,i=e.options,n=i.element,r=n===void 0?"[data-popper-arrow]":n;r!=null&&(typeof r=="string"&&(r=t.elements.popper.querySelector(r),!r)||za(t.elements.popper,r)&&(t.elements.arrow=r))}var em={name:"arrow",enabled:!0,phase:"main",fn:qw,effect:Iw,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function fi(e){return e.split("-")[1]}var Bw={top:"auto",right:"auto",bottom:"auto",left:"auto"};function _w(e,t){var i=e.x,n=e.y,r=t.devicePixelRatio||1;return{x:Wi(i*r)/r||0,y:Wi(n*r)/r||0}}function im(e){var t,i=e.popper,n=e.popperRect,r=e.placement,a=e.variation,s=e.offsets,o=e.position,l=e.gpuAcceleration,c=e.adaptive,d=e.roundOffsets,u=e.isFixed,g=s.x,m=g===void 0?0:g,f=s.y,w=f===void 0?0:f,x=typeof d=="function"?d({x:m,y:w}):{x:m,y:w};m=x.x,w=x.y;var v=s.hasOwnProperty("x"),z=s.hasOwnProperty("y"),L=ke,C=be,R=window;if(c){var T=zi(i),B="clientHeight",q="clientWidth";if(T===ge(i)&&(T=Re(i),ei(T).position!=="static"&&o==="absolute"&&(B="scrollHeight",q="scrollWidth")),T=T,r===be||(r===ke||r===Ae)&&a===Zt){C=Oe;var _=u&&T===R&&R.visualViewport?R.visualViewport.height:T[B];w-=_-n.height,w*=l?1:-1}if(r===ke||(r===be||r===Oe)&&a===Zt){L=Ae;var P=u&&T===R&&R.visualViewport?R.visualViewport.width:T[q];m-=P-n.width,m*=l?1:-1}}var X=Object.assign({position:o},c&&Bw),Q=d===!0?_w({x:m,y:w},ge(i)):{x:m,y:w};if(m=Q.x,w=Q.y,l){var N;return Object.assign({},X,(N={},N[C]=z?"0":"",N[L]=v?"0":"",N.transform=(R.devicePixelRatio||1)<=1?"translate("+m+"px, "+w+"px)":"translate3d("+m+"px, "+w+"px, 0)",N))}return Object.assign({},X,(t={},t[C]=z?w+"px":"",t[L]=v?m+"px":"",t.transform="",t))}function Fw(e){var t=e.state,i=e.options,n=i.gpuAcceleration,r=n===void 0?!0:n,a=i.adaptive,s=a===void 0?!0:a,o=i.roundOffsets,l=o===void 0?!0:o,c={placement:_e(t.placement),variation:fi(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:r,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,im(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,im(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var tm={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Fw,data:{}};var fo={passive:!0};function Rw(e){var t=e.state,i=e.instance,n=e.options,r=n.scroll,a=r===void 0?!0:r,s=n.resize,o=s===void 0?!0:s,l=ge(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&c.forEach(function(d){d.addEventListener("scroll",i.update,fo)}),o&&l.addEventListener("resize",i.update,fo),function(){a&&c.forEach(function(d){d.removeEventListener("scroll",i.update,fo)}),o&&l.removeEventListener("resize",i.update,fo)}}var nm={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Rw,data:{}};var Dw={left:"right",right:"left",bottom:"top",top:"bottom"};function Fn(e){return e.replace(/left|right|bottom|top/g,function(t){return Dw[t]})}var Nw={start:"end",end:"start"};function yo(e){return e.replace(/start|end/g,function(t){return Nw[t]})}function nn(e){var t=ge(e),i=t.pageXOffset,n=t.pageYOffset;return{scrollLeft:i,scrollTop:n}}function rn(e){return hi(Re(e)).left+nn(e).scrollLeft}function wc(e,t){var i=ge(e),n=Re(e),r=i.visualViewport,a=n.clientWidth,s=n.clientHeight,o=0,l=0;if(r){a=r.width,s=r.height;var c=Sa();(c||!c&&t==="fixed")&&(o=r.offsetLeft,l=r.offsetTop)}return{width:a,height:s,x:o+rn(e),y:l}}function kc(e){var t,i=Re(e),n=nn(e),r=(t=e.ownerDocument)==null?void 0:t.body,a=Si(i.scrollWidth,i.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),s=Si(i.scrollHeight,i.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),o=-n.scrollLeft+rn(e),l=-n.scrollTop;return ei(r||i).direction==="rtl"&&(o+=Si(i.clientWidth,r?r.clientWidth:0)-a),{width:a,height:s,x:o,y:l}}function an(e){var t=ei(e),i=t.overflow,n=t.overflowX,r=t.overflowY;return/auto|scroll|overlay|hidden/.test(i+r+n)}function bo(e){return["html","body","#document"].indexOf(Be(e))>=0?e.ownerDocument.body:Ce(e)&&an(e)?e:bo(Ui(e))}function gt(e,t){var i;t===void 0&&(t=[]);var n=bo(e),r=n===((i=e.ownerDocument)==null?void 0:i.body),a=ge(n),s=r?[a].concat(a.visualViewport||[],an(n)?n:[]):n,o=t.concat(s);return r?o:o.concat(gt(Ui(s)))}function Rn(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function Kw(e,t){var i=hi(e,!1,t==="fixed");return i.top=i.top+e.clientTop,i.left=i.left+e.clientLeft,i.bottom=i.top+e.clientHeight,i.right=i.left+e.clientWidth,i.width=e.clientWidth,i.height=e.clientHeight,i.x=i.left,i.y=i.top,i}function rm(e,t,i){return t===go?Rn(wc(e,i)):gi(t)?Kw(t,i):Rn(kc(Re(e)))}function Yw(e){var t=gt(Ui(e)),i=["absolute","fixed"].indexOf(ei(e).position)>=0,n=i&&Ce(e)?zi(e):e;return gi(n)?t.filter(function(r){return gi(r)&&za(r,n)&&Be(r)!=="body"}):[]}function Sc(e,t,i,n){var r=t==="clippingParents"?Yw(e):[].concat(t),a=[].concat(r,[i]),s=a[0],o=a.reduce(function(l,c){var d=rm(e,c,n);return l.top=Si(d.top,l.top),l.right=Jt(d.right,l.right),l.bottom=Jt(d.bottom,l.bottom),l.left=Si(d.left,l.left),l},rm(e,s,n));return o.width=o.right-o.left,o.height=o.bottom-o.top,o.x=o.left,o.y=o.top,o}function Ea(e){var t=e.reference,i=e.element,n=e.placement,r=n?_e(n):null,a=n?fi(n):null,s=t.x+t.width/2-i.width/2,o=t.y+t.height/2-i.height/2,l;switch(r){case be:l={x:s,y:t.y-i.height};break;case Oe:l={x:s,y:t.y+t.height};break;case Ae:l={x:t.x+t.width,y:o};break;case ke:l={x:t.x-i.width,y:o};break;default:l={x:t.x,y:t.y}}var c=r?en(r):null;if(c!=null){var d=c==="y"?"height":"width";switch(a){case $i:l[c]=l[c]-(t[d]/2-i[d]/2);break;case Zt:l[c]=l[c]+(t[d]/2-i[d]/2);break;default:}}return l}function Ai(e,t){t===void 0&&(t={});var i=t,n=i.placement,r=n===void 0?e.placement:n,a=i.strategy,s=a===void 0?e.strategy:a,o=i.boundary,l=o===void 0?Vp:o,c=i.rootBoundary,d=c===void 0?go:c,u=i.elementContext,g=u===void 0?In:u,m=i.altBoundary,f=m===void 0?!1:m,w=i.padding,x=w===void 0?0:w,v=Ta(typeof x!="number"?x:La(x,mt)),z=g===In?Gp:In,L=e.rects.popper,C=e.elements[f?z:g],R=Sc(gi(C)?C:C.contextElement||Re(e.elements.popper),l,d,s),T=hi(e.elements.reference),B=Ea({reference:T,element:L,strategy:"absolute",placement:r}),q=Rn(Object.assign({},L,B)),_=g===In?q:T,P={top:R.top-_.top+v.top,bottom:_.bottom-R.bottom+v.bottom,left:R.left-_.left+v.left,right:_.right-R.right+v.right},X=e.modifiersData.offset;if(g===In&&X){var Q=X[r];Object.keys(P).forEach(function(N){var V=[Ae,Oe].indexOf(N)>=0?1:-1,H=[be,Oe].indexOf(N)>=0?"y":"x";P[N]+=Q[H]*V})}return P}function zc(e,t){t===void 0&&(t={});var i=t,n=i.placement,r=i.boundary,a=i.rootBoundary,s=i.padding,o=i.flipVariations,l=i.allowedAutoPlacements,c=l===void 0?ho:l,d=fi(n),u=d?o?vc:vc.filter(function(f){return fi(f)===d}):mt,g=u.filter(function(f){return c.indexOf(f)>=0});g.length===0&&(g=u);var m=g.reduce(function(f,w){return f[w]=Ai(e,{placement:w,boundary:r,rootBoundary:a,padding:s})[_e(w)],f},{});return Object.keys(m).sort(function(f,w){return m[f]-m[w]})}function jw(e){if(_e(e)===mo)return[];var t=Fn(e);return[yo(e),t,yo(t)]}function Pw(e){var t=e.state,i=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var r=i.mainAxis,a=r===void 0?!0:r,s=i.altAxis,o=s===void 0?!0:s,l=i.fallbackPlacements,c=i.padding,d=i.boundary,u=i.rootBoundary,g=i.altBoundary,m=i.flipVariations,f=m===void 0?!0:m,w=i.allowedAutoPlacements,x=t.options.placement,v=_e(x),z=v===x,L=l||(z||!f?[Fn(x)]:jw(x)),C=[x].concat(L).reduce(function(Se,Ke){return Se.concat(_e(Ke)===mo?zc(t,{placement:Ke,boundary:d,rootBoundary:u,padding:c,flipVariations:f,allowedAutoPlacements:w}):Ke)},[]),R=t.rects.reference,T=t.rects.popper,B=new Map,q=!0,_=C[0],P=0;P<C.length;P++){var X=C[P],Q=_e(X),N=fi(X)===$i,V=[be,Oe].indexOf(Q)>=0,H=V?"width":"height",J=Ai(t,{placement:X,boundary:d,rootBoundary:u,altBoundary:g,padding:c}),ee=V?N?Ae:ke:N?Oe:be;R[H]>T[H]&&(ee=Fn(ee));var De=Fn(ee),Me=[];if(a&&Me.push(J[Q]<=0),o&&Me.push(J[ee]<=0,J[De]<=0),Me.every(function(Se){return Se})){_=X,q=!1;break}B.set(X,Me)}if(q)for(var k=f?3:1,Ne=function(Ke){var Fi=C.find(function(Ri){var le=B.get(Ri);if(le)return le.slice(0,Ke).every(function(Di){return Di})});if(Fi)return _=Fi,"break"},We=k;We>0;We--){var S=Ne(We);if(S==="break")break}t.placement!==_&&(t.modifiersData[n]._skip=!0,t.placement=_,t.reset=!0)}}var am={name:"flip",enabled:!0,phase:"main",fn:Pw,requiresIfExists:["offset"],data:{_skip:!1}};function sm(e,t,i){return i===void 0&&(i={x:0,y:0}),{top:e.top-t.height-i.y,right:e.right-t.width+i.x,bottom:e.bottom-t.height+i.y,left:e.left-t.width-i.x}}function om(e){return[be,Ae,Oe,ke].some(function(t){return e[t]>=0})}function Hw(e){var t=e.state,i=e.name,n=t.rects.reference,r=t.rects.popper,a=t.modifiersData.preventOverflow,s=Ai(t,{elementContext:"reference"}),o=Ai(t,{altBoundary:!0}),l=sm(s,n),c=sm(o,r,a),d=om(l),u=om(c);t.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:d,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":d,"data-popper-escaped":u})}var lm={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Hw};function $w(e,t,i){var n=_e(e),r=[ke,be].indexOf(n)>=0?-1:1,a=typeof i=="function"?i(Object.assign({},t,{placement:e})):i,s=a[0],o=a[1];return s=s||0,o=(o||0)*r,[ke,Ae].indexOf(n)>=0?{x:o,y:s}:{x:s,y:o}}function Ww(e){var t=e.state,i=e.options,n=e.name,r=i.offset,a=r===void 0?[0,0]:r,s=ho.reduce(function(d,u){return d[u]=$w(u,t.rects,a),d},{}),o=s[t.placement],l=o.x,c=o.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[n]=s}var cm={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:Ww};function Uw(e){var t=e.state,i=e.name;t.modifiersData[i]=Ea({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}var dm={name:"popperOffsets",enabled:!0,phase:"read",fn:Uw,data:{}};function Ac(e){return e==="x"?"y":"x"}function Vw(e){var t=e.state,i=e.options,n=e.name,r=i.mainAxis,a=r===void 0?!0:r,s=i.altAxis,o=s===void 0?!1:s,l=i.boundary,c=i.rootBoundary,d=i.altBoundary,u=i.padding,g=i.tether,m=g===void 0?!0:g,f=i.tetherOffset,w=f===void 0?0:f,x=Ai(t,{boundary:l,rootBoundary:c,padding:u,altBoundary:d}),v=_e(t.placement),z=fi(t.placement),L=!z,C=en(v),R=Ac(C),T=t.modifiersData.popperOffsets,B=t.rects.reference,q=t.rects.popper,_=typeof w=="function"?w(Object.assign({},t.rects,{placement:t.placement})):w,P=typeof _=="number"?{mainAxis:_,altAxis:_}:Object.assign({mainAxis:0,altAxis:0},_),X=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,Q={x:0,y:0};if(T){if(a){var N,V=C==="y"?be:ke,H=C==="y"?Oe:Ae,J=C==="y"?"height":"width",ee=T[C],De=ee+x[V],Me=ee-x[H],k=m?-q[J]/2:0,Ne=z===$i?B[J]:q[J],We=z===$i?-q[J]:-B[J],S=t.elements.arrow,Se=m&&S?Xt(S):{width:0,height:0},Ke=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:Aa(),Fi=Ke[V],Ri=Ke[H],le=tn(0,B[J],Se[J]),Di=L?B[J]/2-k-le-Fi-P.mainAxis:Ne-le-Fi-P.mainAxis,di=L?-B[J]/2+k+le+Ri+P.mainAxis:We+le+Ri+P.mainAxis,Ti=t.elements.arrow&&zi(t.elements.arrow),Vi=Ti?C==="y"?Ti.clientTop||0:Ti.clientLeft||0:0,sn=(N=X?.[C])!=null?N:0,qa=ee+Di-sn-Vi,Ia=ee+di-sn,Yn=tn(m?Jt(De,qa):De,ee,m?Si(Me,Ia):Me);T[C]=Yn,Q[C]=Yn-ee}if(o){var Ba,_a=C==="x"?be:ke,Fa=C==="x"?Oe:Ae,Ni=T[R],on=R==="y"?"height":"width",Ra=Ni+x[_a],Da=Ni-x[Fa],jn=[be,ke].indexOf(v)!==-1,O=(Ba=X?.[R])!=null?Ba:0,I=jn?Ra:Ni-B[on]-q[on]-O+P.altAxis,$=jn?Ni+B[on]+q[on]-O-P.altAxis:Da,Z=m&&jn?Xp(I,Ni,$):tn(m?I:Ra,Ni,m?$:Da);T[R]=Z,Q[R]=Z-Ni}t.modifiersData[n]=Q}}var um={name:"preventOverflow",enabled:!0,phase:"main",fn:Vw,requiresIfExists:["offset"]};function Tc(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function Lc(e){return e===ge(e)||!Ce(e)?nn(e):Tc(e)}function Gw(e){var t=e.getBoundingClientRect(),i=Wi(t.width)/e.offsetWidth||1,n=Wi(t.height)/e.offsetHeight||1;return i!==1||n!==1}function Ec(e,t,i){i===void 0&&(i=!1);var n=Ce(t),r=Ce(t)&&Gw(t),a=Re(t),s=hi(e,r,i),o={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(n||!n&&!i)&&((Be(t)!=="body"||an(a))&&(o=Lc(t)),Ce(t)?(l=hi(t,!0),l.x+=t.clientLeft,l.y+=t.clientTop):a&&(l.x=rn(a))),{x:s.left+o.scrollLeft-l.x,y:s.top+o.scrollTop-l.y,width:s.width,height:s.height}}function Qw(e){var t=new Map,i=new Set,n=[];e.forEach(function(a){t.set(a.name,a)});function r(a){i.add(a.name);var s=[].concat(a.requires||[],a.requiresIfExists||[]);s.forEach(function(o){if(!i.has(o)){var l=t.get(o);l&&r(l)}}),n.push(a)}return e.forEach(function(a){i.has(a.name)||r(a)}),n}function Oc(e){var t=Qw(e);return Qp.reduce(function(i,n){return i.concat(t.filter(function(r){return r.phase===n}))},[])}function Cc(e){var t;return function(){return t||(t=new Promise(function(i){Promise.resolve().then(function(){t=void 0,i(e())})})),t}}function Mc(e){var t=e.reduce(function(i,n){var r=i[n.name];return i[n.name]=r?Object.assign({},r,n,{options:Object.assign({},r.options,n.options),data:Object.assign({},r.data,n.data)}):n,i},{});return Object.keys(t).map(function(i){return t[i]})}var pm={placement:"bottom",modifiers:[],strategy:"absolute"};function mm(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];return!t.some(function(n){return!(n&&typeof n.getBoundingClientRect=="function")})}function gm(e){e===void 0&&(e={});var t=e,i=t.defaultModifiers,n=i===void 0?[]:i,r=t.defaultOptions,a=r===void 0?pm:r;return function(o,l,c){c===void 0&&(c=a);var d={placement:"bottom",orderedModifiers:[],options:Object.assign({},pm,a),modifiersData:{},elements:{reference:o,popper:l},attributes:{},styles:{}},u=[],g=!1,m={state:d,setOptions:function(v){var z=typeof v=="function"?v(d.options):v;w(),d.options=Object.assign({},a,d.options,z),d.scrollParents={reference:gi(o)?gt(o):o.contextElement?gt(o.contextElement):[],popper:gt(l)};var L=Oc(Mc([].concat(n,d.options.modifiers)));return d.orderedModifiers=L.filter(function(C){return C.enabled}),f(),m.update()},forceUpdate:function(){if(!g){var v=d.elements,z=v.reference,L=v.popper;if(mm(z,L)){d.rects={reference:Ec(z,zi(L),d.options.strategy==="fixed"),popper:Xt(L)},d.reset=!1,d.placement=d.options.placement,d.orderedModifiers.forEach(function(P){return d.modifiersData[P.name]=Object.assign({},P.data)});for(var C=0;C<d.orderedModifiers.length;C++){if(d.reset===!0){d.reset=!1,C=-1;continue}var R=d.orderedModifiers[C],T=R.fn,B=R.options,q=B===void 0?{}:B,_=R.name;typeof T=="function"&&(d=T({state:d,options:q,name:_,instance:m})||d)}}}},update:Cc(function(){return new Promise(function(x){m.forceUpdate(),x(d)})}),destroy:function(){w(),g=!0}};if(!mm(o,l))return m;m.setOptions(c).then(function(x){!g&&c.onFirstUpdate&&c.onFirstUpdate(x)});function f(){d.orderedModifiers.forEach(function(x){var v=x.name,z=x.options,L=z===void 0?{}:z,C=x.effect;if(typeof C=="function"){var R=C({state:d,name:v,instance:m,options:L}),T=function(){};u.push(R||T)}})}function w(){u.forEach(function(x){return x()}),u=[]}return m}}var Zw=[nm,dm,tm,Zp,cm,am,um,em,lm],qc=gm({defaultModifiers:Zw});var Jw=(e,t)=>(e%t+t)%t,Ic=class{constructor(t,i,n){this.owner=t,this.containerEl=i,i.on("click",".suggestion-item",this.onSuggestionClick.bind(this)),i.on("mousemove",".suggestion-item",this.onSuggestionMouseover.bind(this)),n.register([],"ArrowUp",r=>{if(!r.isComposing)return this.setSelectedItem(this.selectedItem-1,!0),!1}),n.register([],"ArrowDown",r=>{if(!r.isComposing)return this.setSelectedItem(this.selectedItem+1,!0),!1}),n.register([],"Enter",r=>{if(!r.isComposing)return this.useSelectedItem(r),!1})}onSuggestionClick(t,i){t.preventDefault();let n=this.suggestions.indexOf(i);this.setSelectedItem(n,!1),this.useSelectedItem(t)}onSuggestionMouseover(t,i){let n=this.suggestions.indexOf(i);this.setSelectedItem(n,!1)}setSuggestions(t){this.containerEl.empty();let i=[];t.forEach(n=>{let r=this.containerEl.createDiv("suggestion-item");this.owner.renderSuggestion(n,r),i.push(r)}),this.values=t,this.suggestions=i,this.setSelectedItem(0,!1)}useSelectedItem(t){let i=this.values[this.selectedItem];i&&this.owner.selectSuggestion(i,t)}setSelectedItem(t,i){let n=Jw(t,this.suggestions.length),r=this.suggestions[this.selectedItem],a=this.suggestions[n];r?.removeClass("is-selected"),a?.addClass("is-selected"),this.selectedItem=n,i&&a.scrollIntoView(!1)}},Dn=class{constructor(t,i){this.app=t,this.inputEl=i,this.scope=new hm.Scope,this.suggestEl=createDiv("suggestion-container");let n=this.suggestEl.createDiv("suggestion");this.suggest=new Ic(this,n,this.scope),this.scope.register([],"Escape",this.close.bind(this)),this.inputEl.addEventListener("input",this.onInputChanged.bind(this)),this.inputEl.addEventListener("focus",this.onInputChanged.bind(this)),this.inputEl.addEventListener("blur",this.close.bind(this)),this.suggestEl.on("mousedown",".suggestion-container",r=>{r.preventDefault()})}onInputChanged(){let t=this.inputEl.value,i=this.getSuggestions(t);if(!i){this.close();return}i.length>0?(this.suggest.setSuggestions(i),this.open(this.app.dom.appContainerEl,this.inputEl)):this.close()}open(t,i){this.app.keymap.pushScope(this.scope),t.appendChild(this.suggestEl),this.popper=qc(i,this.suggestEl,{placement:"bottom-start",modifiers:[{name:"sameWidth",enabled:!0,fn:({state:n,instance:r})=>{let a=`${n.rects.reference.width}px`;n.styles.popper.width!==a&&(n.styles.popper.width=a,r.update())},phase:"beforeWrite",requires:["computeStyles"]}]})}close(){this.app.keymap.popScope(this.scope),this.suggest.setSuggestions([]),this.popper&&this.popper.destroy(),this.suggestEl.detach()}};var fm=require("obsidian"),Oa=class extends Dn{constructor(i,n,r=[]){super(i,n);this.app=i;this.inputEl=n;this.valuesToExclude=r}getSuggestions(i){let n=this.app.vault.getAllLoadedFiles().filter(o=>o instanceof fm.TFolder&&o.path!=="/").map(o=>o.path);if(!n)return[];let r=n.filter(o=>!this.valuesToExclude.includes(o)||o===this.inputEl.getAttribute("folderExists")),a=[],s=i.toLowerCase();return r.forEach(o=>{o.toLowerCase().contains(s)&&a.push(o)}),a}renderSuggestion(i,n){n.setText(i)}selectSuggestion(i){this.inputEl.setAttribute("folderName",i),this.inputEl.value=i,this.inputEl.trigger("input"),this.close()}};var vo=class extends pt{constructor(i,n,r,a,s){super(i,n,E("tabs.general.folders-to-ignore.name"),E("tabs.general.folders-to-ignore.description"),null,E("tabs.general.folders-to-ignore.add-input-button-text"),s,()=>{let o="";this.foldersToIgnore.push(o),this.saveSettings(),this.addFolderToIgnore(o,this.foldersToIgnore.length-1,!0)});this.foldersToIgnore=r;this.app=a;this.display(),this.inputElDiv.addClass("linter-folder-ignore-container")}showInputEls(){this.foldersToIgnore.forEach((i,n)=>{this.addFolderToIgnore(i,n)})}addFolderToIgnore(i,n,r=!1){new ym.Setting(this.inputElDiv).addSearch(s=>{new Oa(this.app,s.inputEl,this.foldersToIgnore),s.setPlaceholder(E("tabs.general.folders-to-ignore.folder-search-placeholder-text")).setValue(i).onChange(o=>{let l=o;(l===""||l===s.inputEl.getAttribute("folderName"))&&(this.foldersToIgnore[n]=l,this.saveSettings())}),s.inputEl.setAttr("tabIndex",n),s.inputEl.addClass("linter-folder-ignore"),r&&s.inputEl.focus()}).addExtraButton(s=>{s.setIcon("cross").setTooltip(E("tabs.general.folders-to-ignore.delete-tooltip")).onClick(()=>{this.foldersToIgnore.splice(n,1),this.saveSettings(),this.resetInputEls()})}).settingEl.addClass("linter-no-border")}};var xo=class extends Bi{constructor(i,n,r,a,s){super(i,n,"General",r,a);this.app=s;this.display()}display(){let i=this.contentEl.createDiv();this.addSettingSearchInfoForGeneralSettings(new _i(i,"tabs.general.lint-on-save.name","tabs.general.lint-on-save.description","lintOnSave",this.plugin)),i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new _i(i,"tabs.general.display-message.name","tabs.general.display-message.description","displayChanged",this.plugin)),i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new _i(i,"tabs.general.lint-on-file-change.name","tabs.general.lint-on-file-change.description","lintOnFileChange",this.plugin)),i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new _i(i,"tabs.general.display-lint-on-file-change-message.name","tabs.general.display-lint-on-file-change-message.description","displayLintOnFileChangeNotice",this.plugin));let n=navigator.language?.toLowerCase(),r=["system-default"],a=[E("tabs.general.same-as-system-locale").replace("{SYS_LOCALE}",n)];for(let m of bm.moment.locales())r.push(m),a.push(m);let s={isForEnum:!1,values:r,descriptions:a};i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Hi(i,"tabs.general.override-locale.name","tabs.general.override-locale.description","linterLocale",this.plugin,s,async()=>{await this.plugin.setOrUpdateMomentInstance()}));let o={isForEnum:!0,values:["multi-line","single-line","single string comma delimited","single string to single-line","single string to multi-line"],descriptions:[]};i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Hi(i,"tabs.general.yaml-aliases-section-style.name","tabs.general.yaml-aliases-section-style.description","commonStyles.aliasArrayStyle",this.plugin,o));let l={isForEnum:!0,values:["multi-line","single-line","single string to single-line","single string to multi-line","single-line space delimited","single string space delimited","single string comma delimited"],descriptions:[]};i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Hi(i,"tabs.general.yaml-tags-section-style.name","tabs.general.yaml-tags-section-style.description","commonStyles.tagArrayStyle",this.plugin,l));let c=['"',"'"],d={isForEnum:!1,values:c,descriptions:c};i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Hi(i,"tabs.general.default-escape-character.name","tabs.general.default-escape-character.description","commonStyles.escapeCharacter",this.plugin,d)),i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new _i(i,"tabs.general.remove-unnecessary-escape-chars-in-multi-line-arrays.name","tabs.general.remove-unnecessary-escape-chars-in-multi-line-arrays.description","commonStyles.removeUnnecessaryEscapeCharsForMultiLineArrays",this.plugin)),i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new po(i,"tabs.general.number-of-dollar-signs-to-indicate-math-block.name","tabs.general.number-of-dollar-signs-to-indicate-math-block.description","commonStyles.minimumNumberOfDollarSignsToBeAMathBlock",this.plugin));let u=this.contentEl.createDiv(),g=new vo(u,this.plugin.settingsTab.component,this.plugin.settings.foldersToIgnore,this.app,()=>{this.plugin.saveSettings()});this.addSettingSearchInfo(u,g.name,g.description.replaceAll(` +`," "))}};var wo=class extends Bi{constructor(i,n,r,a,s,o){super(i,n,r,s,o);this.rules=a;this.display()}display(){for(let i of this.rules){let n=this.contentEl.createDiv();n.id=i.alias,n.createEl(this.isMobile?"h4":"h3",{},a=>{a.innerHTML=`<a href="${i.getURL()}">${i.getName()}</a>`});let r=[];for(let a of i.options)a.display(n,this.plugin.settings,this.plugin),r.push(a.getSearchInfo());this.addSettingSearchInfo(n,i.getName().toLowerCase(),i.getDescription().toLowerCase(),r,n.id)}}};var vm=require("obsidian");var Ca=class extends Dn{constructor(i,n,r=[]){super(i,n);this.app=i;this.inputEl=n;this.valuesToExclude=r}getSuggestions(i){let n=this.app.commands.listCommands();if(!n)return[];let r=n.filter(o=>{for(let l of this.valuesToExclude)if(l.id==o.id&&!(this.inputEl.hasAttribute("commandId")&&this.inputEl.getAttribute("commandId")==o.id))return!1;return!0}),a=[],s=i.toLowerCase();return r.forEach(o=>{(o.id.contains(s)||o.name.toLowerCase().contains(s))&&a.push(o)}),a}renderSuggestion(i,n){n.setText(i.name)}selectSuggestion(i){this.inputEl.value=i.name,this.inputEl.setAttribute("commandId",i.id),this.inputEl.trigger("input"),this.close()}};var ko=class extends pt{constructor(i,n,r,a,s){super(i,n,E("options.custom-command.name"),E("options.custom-command.description"),E("options.custom-command.warning"),E("options.custom-command.add-input-button-text"),s,()=>{let o={id:"",name:""};this.lintCommands.push(o),this.saveSettings(),this.addCommand(o,this.lintCommands.length-1,!0)});this.lintCommands=r;this.app=a;this.display()}showInputEls(){this.lintCommands.forEach((i,n)=>{this.addCommand(i,n)})}addCommand(i,n,r=!1){new vm.Setting(this.inputElDiv).addSearch(a=>{new Ca(this.app,a.inputEl,this.lintCommands),a.setPlaceholder(E("options.custom-command.command-search-placeholder-text")).setValue(i.name).onChange(s=>{let o={id:a.inputEl.getAttribute("commandId"),name:s};o.name&&o.id?(this.lintCommands[n]=o,this.saveSettings()):!o.name&&!o.id&&(this.lintCommands[n]=o,this.saveSettings())}),a.inputEl.setAttr("tabIndex",n),a.inputEl.addClass("linter-custom-command"),r&&a.inputEl.focus()}).addExtraButton(a=>{a.setIcon("up-chevron-glyph").setTooltip(E("options.custom-command.move-up-tooltip")).onClick(()=>{this.arrayMove(n,n-1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(a=>{a.setIcon("down-chevron-glyph").setTooltip(E("options.custom-command.move-down-tooltip")).onClick(()=>{this.arrayMove(n,n+1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(a=>{a.setIcon("cross").setTooltip(E("options.custom-command.delete-tooltip")).onClick(()=>{this.lintCommands.splice(n,1),this.saveSettings(),this.resetInputEls()})})}arrayMove(i,n){if(n<0||n===this.lintCommands.length)return;let r=this.lintCommands[i];this.lintCommands[i]=this.lintCommands[n],this.lintCommands[n]=r}};var Bc=require("obsidian");var Xw="gm",So=class extends pt{constructor(i,n,r,a){super(i,n,E("options.custom-replace.name"),E("options.custom-replace.description"),E("options.custom-replace.warning"),E("options.custom-replace.add-input-button-text"),a,()=>{let s={label:"",find:"",replace:"",flags:Xw};this.regexes.push(s),this.saveSettings(),this.addRegex(s,this.regexes.length-1,!0)});this.regexes=r;this.display(),this.inputElDiv.addClass("linter-custom-regex-replacement-container")}showInputEls(){this.regexes.forEach((i,n)=>{this.addRegex(i,n)})}addRegex(i,n,r=!1){let a=this.inputElDiv.createDiv({cls:"linter-custom-regex-replacement"}),s=a.createDiv(),o=new Bc.Setting(s).addText(d=>{d.setPlaceholder(E("options.custom-replace.label-placeholder-text")).setValue(i.label).onChange(u=>{this.regexes[n].label=u,this.saveSettings()}),d.inputEl.setAttr("inputIndex",n),d.inputEl.addClass("linter-custom-regex-replacement-label-input"),r&&d.inputEl.focus()});o.controlEl.addClass("linter-custom-regex-replacement-label"),o.descEl.remove(),o.infoEl.remove(),o.nameEl.remove();let l=a.createDiv();new Bc.Setting(l).addText(d=>{d.setPlaceholder(E("options.custom-replace.regex-to-find-placeholder-text")).setValue(i.find).onChange(u=>{this.regexes[n].find=u,this.saveSettings()}),d.inputEl.addClass("linter-custom-regex-replacement-normal-input")}).addText(d=>{d.setPlaceholder(E("options.custom-replace.flags-placeholder-text")).setValue(i.flags).onChange(u=>{this.regexes[n].flags=u,this.saveSettings()}),d.inputEl.addClass("linter-custom-regex-replacement-flags")}).addText(d=>{d.setPlaceholder(E("options.custom-replace.regex-to-replace-placeholder-text")).setValue(i.replace).onChange(u=>{this.regexes[n].replace=u,this.saveSettings()}),d.inputEl.addClass("linter-custom-regex-replacement-normal-input")}).addExtraButton(d=>{d.setIcon("up-chevron-glyph").setTooltip(E("options.custom-replace.move-up-tooltip")).onClick(()=>{this.arrayMove(n,n-1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(d=>{d.setIcon("down-chevron-glyph").setTooltip(E("options.custom-replace.move-down-tooltip")).onClick(()=>{this.arrayMove(n,n+1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(d=>{d.setIcon("cross").setTooltip(E("options.custom-replace.delete-tooltip")).onClick(()=>{this.regexes.splice(n,1),this.saveSettings(),this.resetInputEls()})}).settingEl.addClass("linter-custom-regex-replacement-row2")}arrayMove(i,n){if(n<0||n===this.regexes.length)return;let r=this.regexes[i];this.regexes[i]=this.regexes[n],this.regexes[n]=r}};var zo=class extends Bi{constructor(i,n,r,a,s){super(i,n,"Custom",r,s);this.app=a;this.display()}display(){let i=this.contentEl.createDiv(),n=new ko(i,this.plugin.settingsTab.component,this.plugin.settings.lintCommands,this.app,()=>{this.plugin.saveSettings()});this.addSettingSearchInfo(i,n.name,n.description.replaceAll(` `," ")+n.warning.replaceAll(` -`," "));let r=this.contentEl.createDiv(),a=new $s(r,this.plugin.settingsTab.component,this.plugin.settings.customRegexes,()=>{this.plugin.saveSettings()});this.addSettingSearchInfo(r,a.name,a.description.replaceAll(` +`," "));let r=this.contentEl.createDiv(),a=new So(r,this.plugin.settingsTab.component,this.plugin.settings.customRegexes,()=>{this.plugin.saveSettings()});this.addSettingSearchInfo(r,a.name,a.description.replaceAll(` `," ")+a.warning.replaceAll(` -`," "))}};var Wp=require("obsidian");var Vs=class{constructor(t,i,n,r){this.containerEl=t;this.searchZeroState=i;this.tabNameToTab=n;this.onFocus=r;this.searchSettingInfo=new Map;for(let[a,s]of n)this.searchSettingInfo.set(a,s.searchSettingInfo);this.display()}display(){let t=new Wp.Setting(this.containerEl);t.settingEl.style.border="none",t.addSearch(i=>{this.search=i}),this.search.setPlaceholder(E("tabs.default-search-bar-text")),this.search.inputEl.onfocus=()=>{this.onFocus()},this.search.onChange(i=>{this.searchSettings(i.toLowerCase())})}searchSettings(t){let i=new Set,n=function(r,a){wi(r),i.has(a)||i.add(a)};for(let[r,a]of this.searchSettingInfo)for(let s of a)if(t.trim()===""||s.alias?.includes(t)||s.description.includes(t)||s.name.includes(t))n(s.containerEl,r);else if(s.options)for(let o of s.options){if(o.description.toLowerCase().includes(t)||o.name.toLowerCase().includes(t)){n(s.containerEl,r);break}else if(o.options){for(let l of o.options)if(l.description.toLowerCase().includes(t)||l.value.toLowerCase().includes(t)){n(s.containerEl,r);break}}Xe(s.containerEl)}else Xe(s.containerEl);for(let[r,a]of this.tabNameToTab)i.has(r)?wi(a.headingEl):Xe(a.headingEl);i.size===0?wi(this.searchZeroState):Xe(this.searchZeroState)}focusOnInput(){this.search.inputEl.focus()}};var Vp=da(xo());var yn=require("obsidian");var na=class{constructor(t,i,n,r=!0){this.containerEl=t;this.name=i;this.description=n;this.disabled=r;this.display()}display(){let t=this.containerEl.createDiv(),i=t.createDiv("setting-item-info");this.nameEl=i.createDiv("setting-item-name"),this.nameEl.setText(this.name),this.descEl=i.createDiv("setting-item-description"),this.descEl.setText(this.description),this.inputContainerEl=t.createDiv("full-width-textbox-input-wrapper"),this.inputContainerEl.onmouseover=()=>{this.getInput().trim()!=""&&this.copyEl.removeClass("linter-visually-hidden")},this.inputContainerEl.onmouseleave=()=>{this.copyEl.addClass("linter-visually-hidden")},this.inputEl=this.inputContainerEl.createEl("textarea",{cls:"full-width"}),this.inputEl.spellcheck=!1,this.inputEl.disabled=this.disabled,this.copyEl=this.inputContainerEl.createDiv({cls:"settings-copy-button linter-visually-hidden ",attr:{"aria-label":E("copy-aria-label")}}),this.copyIconEl=this.copyEl.createSpan(),(0,yn.setIcon)(this.copyIconEl,"linter-clipboard"),this.copyIconEl.onclick=()=>{this.handleCopy(this.copyIconEl)}}getInput(){return this.inputEl.value}handleCopy(t){navigator.clipboard.writeText(this.getInput()).then(()=>{(0,yn.setIcon)(t,"linter-success"),setTimeout(()=>{(0,yn.setIcon)(t,"linter-clipboard")},1500)},i=>{new yn.Notice(`${E("notice-text.copy-to-clipboard-failed")+i}`,0)})}};var lw=Object.keys(Vp.default.levels),Us=class extends Si{constructor(t,i,n,r){super(t,i,"Debug",n,r),this.display()}display(){let t=this.contentEl.createDiv(),i={isForEnum:!0,values:lw,descriptions:[]};this.addSettingSearchInfoForGeneralSettings(new Ii(t,"tabs.debug.log-level.name","tabs.debug.log-level.description","logLevel",this.plugin,i,async()=>{wa(this.plugin.settings.logLevel)})),t=this.contentEl.createDiv();let n=E("tabs.debug.linter-config.name"),r=E("tabs.debug.linter-config.description");new na(t,n,r).inputEl.setText(JSON.stringify(this.plugin.settings,null,2)),this.addSettingSearchInfo(t,n,r),t=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ai(t,"tabs.debug.log-collection.name","tabs.debug.log-collection.description","recordLintOnSaveLogs",this.plugin)),t=this.contentEl.createDiv(),n=E("tabs.debug.linter-logs.name"),r=E("tabs.debug.linter-logs.description");let s=new na(t,n,"");s.inputEl.setText(va.join(` -`)),xi(r,s.descEl,this.plugin.settingsTab.component),this.addSettingSearchInfo(t,n,r)}};var Gs=class extends Xi.PluginSettingTab{constructor(i,n){super(i,n);this.plugin=n;this.tabNameToTab=new Map;this.selectedTab="General";this.component=new Xi.Component}display(){let{containerEl:i}=this;this.component.load(),i.empty();let n=i.createDiv("linter-setting-title");Xi.Platform.isMobile?n.addClass("linter-mobile"):n.createEl("h1").setText(E("linter-title")),this.navContainer=i.createEl("nav",{cls:"linter-setting-header"}),this.tabNavEl=this.navContainer.createDiv("linter-setting-tab-group"),this.settingsContentEl=i.createDiv("linter-setting-content"),this.addTabs(Xi.Platform.isMobile),this.createSearchZeroState(Xi.Platform.isMobile),this.generateSearchBar(n),this.selectedTab==""&&this.tabSearcher.focusOnInput()}hide(){this.component.unload()}addTabs(i){this.addTab(new Ys(this.tabNavEl,this.settingsContentEl,i,this.plugin,this.app));for(let n of Object.values(N))this.addTab(new Ps(this.tabNavEl,this.settingsContentEl,n,mt.get(n),i,this.plugin));this.addTab(new Ws(this.tabNavEl,this.settingsContentEl,i,this.app,this.plugin)),this.addTab(new Us(this.tabNavEl,this.settingsContentEl,i,this.plugin))}generateSearchBar(i){this.tabSearcher=new Vs(i,this.searchZeroState,this.tabNameToTab,()=>{for(let n of this.tabNameToTab.values()){n.updateTabDisplayMode(!1,"entering search mode by focusing on the search input box");let r=this.tabSearcher.search.getValue();this.selectedTab==""&&r.trim()!=""&&this.tabSearcher.searchSettings(r.toLowerCase()),this.selectedTab=""}})}createSearchZeroState(i){this.searchZeroState=this.settingsContentEl.createDiv(),Xe(this.searchZeroState),this.searchZeroState.createEl(i?"h3":"h2",{text:E("empty-search-results-text")}).style.textAlign="center"}addTab(i){i.navButton.onclick=()=>{this.onTabClick(i.name)},i.updateTabDisplayMode(this.selectedTab===i.name,"the status is still the same"),this.tabNameToTab.set(i.name,i)}onTabClick(i){if(this.selectedTab!==i){if(this.selectedTab=="")for(let[n,r]of this.tabNameToTab)r.updateTabDisplayMode(n===i,"leaving search mode by selecting a tab");else Xe(this.searchZeroState),this.tabNameToTab.get(i).updateTabDisplayMode(!0),this.tabNameToTab.get(this.selectedTab).updateTabDisplayMode(!1);this.selectedTab=i}}};var Gp=require("obsidian");var cw=/^---\n/gm,Up=`${en}:`,Qs=class extends Gp.EditorSuggest{constructor(i){super(i.app);this.plugin=i;this.inline=!1;let n=E("all-rules-option");this.ruleInfo=[{displayName:n,name:n.toLowerCase(),alias:"all"}];for(let r of ki){let a=r.getName();this.ruleInfo.push({displayName:a,name:a.toLowerCase(),alias:r.alias})}}onTrigger(i,n,r){let a=n.getLine(i.line).toLowerCase();if(a.startsWith(Up)||this.disabledRulesIsEndOfStartOfFileToCursor(n.getRange({line:0,ch:0},i))){this.inline=a.startsWith(Up);let o=n.getLine(i.line).substring(0,i.ch),l=o.match(/(\S+)$/)?.first().replaceAll("[","").replaceAll("]","");if(l)return{end:i,start:{ch:o.lastIndexOf(l),line:i.line},query:l}}return null}getSuggestions(i){let[n,r]=ss(i.editor.getValue());if(r)return[];let a=i.query.toLowerCase();return this.ruleInfo.filter(o=>(o.name.contains(a)||o.alias.contains(a))&&!n.includes(o.alias))}renderSuggestion(i,n){n.addClass("mod-complex");let r=n.createDiv({cls:"suggestion-content"});r.createDiv({cls:"suggestion-title"}).setText(`${i.displayName}`),r.createDiv({cls:"suggestion-note"}).setText(`${i.alias}`)}selectSuggestion(i){if(this.context){let n=i.alias;this.inline?n=`${n},`:n=`${n} - -`,this.context.editor.replaceRange(`${n} `,this.context.start,this.context.end)}}disabledRulesIsEndOfStartOfFileToCursor(i){if(!i||!i.length||i.match(cw)?.length!=1)return!1;let n=Ce(i+` -`,en)?.trimEnd();return n===null?!1:i.trimEnd().endsWith(n)}};var dw={en:"en-gb",zh:"zh-cn","zh-TW":"zh-tw",ru:"ru",ko:"ko",it:"it",id:"id",ro:"ro","pt-BR":"pt-br",cz:"cs",da:"da",de:"de",es:"es",fr:"fr",no:"nn",pl:"pl",pt:"pt",tr:"tr",hi:"hi",nl:"nl",ar:"ar",ja:"ja"},et=0,Js=class extends oe.Plugin{constructor(){super(...arguments);this.eventRefs=[];this.isEnabled=!0;this.rulesRunner=new qs;this.overridePaste=!1}async onload(){Sa(window.localStorage.getItem("language")),Vt(E("logs.plugin-load")),this.isEnabled=!0;for(let i in ke){let n=ke[i];(0,oe.addIcon)(n.id,n.source)}await this.loadSettings(),this.addCommands(),this.registerEventsAndSaveCallback(),this.registerEditorSuggest(new Qs(this)),this.settingsTab=new Gs(this.app,this),this.addSettingTab(this.settingsTab)}async onunload(){Vt(E("logs.plugin-unload")),this.isEnabled=!1;for(let i of this.eventRefs)this.app.workspace.offref(i)}async loadSettings(){let i=await this.loadData();this.settings=Object.assign({},Ur,i),typeof this.settings.logLevel=="number"&&(this.settings.logLevel=Qc(this.settings.logLevel)),wa(this.settings.logLevel),this.setOrUpdateMomentInstance(),this.settings.settingsConvertedToConfigKeyValues||this.moveConfigValuesToKeyBasedFormat();for(let n of ki)this.settings.ruleConfigs[n.alias]||(this.settings.ruleConfigs[n.alias]=n.getDefaultOptions());this.updatePasteOverrideStatus()}async saveSettings(){await this.saveData(this.settings),this.updatePasteOverrideStatus()}addCommands(){let i=this;this.addCommand({id:"lint-file",name:E("commands.lint-file.name"),editorCheckCallback(n,r,a){if(n)return i.isMarkdownFile(a.file);i.runLinterEditor(r)},icon:ke.file.id,hotkeys:[{modifiers:["Mod","Alt"],key:"L"}]}),this.addCommand({id:"lint-file-unless-ignored",name:E("commands.lint-file-unless-ignored.name"),editorCheckCallback(n,r,a){if(n)return i.isMarkdownFile(a.file);i.shouldIgnoreFile(a.file)||i.runLinterEditor(r)},icon:ke.file.id}),this.addCommand({id:"lint-all-files",name:E("commands.lint-all-files.name"),icon:ke.vault.id,callback:()=>{let n=E("commands.lint-all-files.start-message"),r=E("commands.lint-all-files.submit-button-text"),a=E("commands.lint-all-files.submit-button-notice-text");new Vr(this.app,n,r,a,()=>this.runLinterAllFiles(this.app)).open()}}),this.addCommand({id:"lint-all-files-in-folder",name:E("commands.lint-all-files-in-folder.name"),icon:ke.folder.id,editorCheckCallback:(n,r,a)=>{if(n)return!a.file.parent.isRoot();this.createFolderLintModal(a.file.parent)}}),this.addCommand({id:"paste-as-plain-text",name:E("commands.paste-as-plain-text.name"),editorCheckCallback:(n,r)=>{if(n)return this.overridePaste;this.pasteAsPlainText(r)}})}registerEventsAndSaveCallback(){let i=this.app.workspace.on("editor-paste",s=>{s.defaultPrevented||!this.overridePaste||this.modifyPasteEvent(s)});this.registerEvent(i),this.eventRefs.push(i),i=this.app.workspace.on("file-menu",(s,o,l)=>this.onMenuOpenCallback(s,o,l)),this.registerEvent(i),this.eventRefs.push(i),this.lastActiveFile=this.app.workspace.getActiveFile(),i=this.app.workspace.on("active-leaf-change",()=>this.onActiveLeafChange()),this.registerEvent(i),this.eventRefs.push(i);let n=this.app.commands?.commands?.["editor:save-file"];typeof n?.callback=="function"&&(n.callback=()=>{if(this.settings.lintOnSave&&this.isEnabled){let s=this.getEditor();if(!s)return;let o=this.app.workspace.getActiveFile();!this.shouldIgnoreFile(o)&&this.isMarkdownFile(o)&&this.runLinterEditor(s)}});let a=this;window.CodeMirrorAdapter.commands.save=()=>{a.app.commands.executeCommandById("editor:save-file")}}onMenuOpenCallback(i,n,r){n instanceof oe.TFile&&this.isMarkdownFile(n)?i.addItem(a=>{a.setIcon(ke.file.id).setTitle(E("commands.lint-file-pop-up-menu-text.name")).onClick(async()=>{let s=this.app.workspace.getActiveFile(),o=this.getEditor();s===n&&o?this.runLinterEditor(o):this.runLinterFile(n)})}):n instanceof oe.TFolder&&i.addItem(a=>{a.setTitle(E("commands.lint-folder-pop-up-menu-text.name")).setIcon(ke.folder.id).onClick(()=>this.createFolderLintModal(n))})}async onActiveLeafChange(){if(!this.isEnabled)return;let i=this.app.workspace.getActiveFile(),n=this.lastActiveFile==null?!1:await this.app.vault.adapter.exists(this.lastActiveFile.path);if(!this.settings.lintOnFileChange||!n||this.lastActiveFile===i||!this.isMarkdownFile(this.lastActiveFile)||this.shouldIgnoreFile(this.lastActiveFile)){this.lastActiveFile=i;return}try{await this.runLinterFile(this.lastActiveFile,!0)}catch(r){this.handleLintError(this.lastActiveFile,r,E("commands.lint-file.error-message")+" '{FILE_PATH}'",!1)}finally{this.lastActiveFile=i}}shouldIgnoreFile(i){for(let n of this.settings.foldersToIgnore)if(n.length>0&&i.path.startsWith(n))return!0;return!1}isMarkdownFile(i){return i&&i.extension==="md"}async runLinterFile(i,n=!1){let r=wd(await this.app.vault.read(i)),a=this.rulesRunner.lintText(Wr(r,i,this.momentLocale,this.settings));if(r!=a&&(await this.app.vault.modify(i,a),n)){let s=E("logs.file-change-lint-message-start")+" "+this.lastActiveFile.path;this.settings.displayLintOnFileChangeNotice&&new oe.Notice(s),Vt(s)}}async runLinterAllFiles(i){let n=0;if(await Promise.all(i.vault.getMarkdownFiles().map(async r=>{if(!this.shouldIgnoreFile(r))try{await this.runLinterFile(r)}catch(a){this.handleLintError(r,a,E("commands.lint-all-files.error-message")+" '{FILE_PATH}'"),n+=1}})),n===0)new oe.Notice(E("commands.lint-all-files.success-message"),et);else{let r=n===1?E("commands.lint-all-files.errors-message-singular"):E("commands.lint-all-files.errors-message-plural").replace("{NUM}",n.toString());new oe.Notice(r,et)}}async runLinterAllFilesInFolder(i){Vt(E("logs.folder-lint")+i.name);let n=0,r=0,a=this.getAllFilesInFolder(i);if(await Promise.all(a.map(async s=>{if(!this.shouldIgnoreFile(s)){try{await this.runLinterFile(s)}catch(o){this.handleLintError(s,o,E("commands.lint-all-files-in-folder.error-message")+" '{FILE_PATH}'"),n+=1}r++}})),n===0)new oe.Notice(E("commands.lint-all-files-in-folder.success-message").replace("{NUM}",r.toString()).replace("{FOLDER_NAME}",i.name),et);else{let s=n===1?E("commands.lint-all-files-in-folder.message-singular").replace("{NUM}",r.toString()).replace("{FOLDER_NAME}",i.name):E("commands.lint-all-files-in-folder.message-plural").replace("{FILE_COUNT}",r.toString()).replace("{FOLDER_NAME}",i.name).replace("{ERROR_COUNT}",n.toString());new oe.Notice(s,et)}}createFolderLintModal(i){let n=E("commands.lint-all-files-in-folder.start-message").replace("{FOLDER_NAME}",i.name),r=E("commands.lint-all-files-in-folder.submit-button-text").replace("{FOLDER_NAME}",i.name),a=E("commands.lint-all-files-in-folder.submit-button-notice-text").replace("{FOLDER_NAME}",i.name);new Vr(this.app,n,r,a,()=>this.runLinterAllFilesInFolder(i)).open()}runLinterEditor(i){ko(this.settings.recordLintOnSaveLogs),Gc(),Vt(E("logs.linter-run"));let n=this.app.workspace.getActiveFile(),r=i.getValue(),a;try{a=this.rulesRunner.lintText(Wr(r,n,this.momentLocale,this.settings))}catch(u){this.handleLintError(n,u,E("commands.lint-file.error-message")+" '{FILE_PATH}'",!1);return}let o=new bn.default.diff_match_patch().diff_main(r,a),l="";o.forEach(u=>{function m(x){let b=x.split(` -`);return{line:b.length-1,ch:b[b.length-1].length}}let[g,h]=u;if(g==bn.default.DIFF_INSERT)i.replaceRange(h,m(l)),l+=h;else if(g==bn.default.DIFF_DELETE){let x=m(l),b=l;b+=h;let v=m(b);i.replaceRange("",x,v)}else l+=h});let d=o.map(u=>u[0]==bn.default.DIFF_INSERT?u[1].length:0).reduce((u,m)=>u+m,0),c=o.map(u=>u[0]==bn.default.DIFF_DELETE?u[1].length:0).reduce((u,m)=>u+m,0);this.displayChangedMessage(d,c);try{this.rulesRunner.runCustomCommands(this.settings.lintCommands,this.app.commands)}catch(u){this.handleLintError(n,u,E("commands.lint-file.error-message")+" '{FILE_PATH}'",!1)}ko(!1)}async setOrUpdateMomentInstance(){let i=localStorage.getItem("language")||"en",n=navigator.language?.toLowerCase(),r=dw[i];this.settings.linterLocale!=="system-default"?r=this.settings.linterLocale:n.startsWith(i)&&(r=n),this.momentLocale=r;let a=Zs.moment.locale(),s=Zs.moment.locale(r);oi(E("logs.moment-locale-not-found").replace("{MOMENT_LOCALE}",r).replace("{CURRENT_LOCALE}",s)),Zs.moment.locale(a)}displayChangedMessage(i,n){if(this.settings.displayChanged){let r=p` +`," "))}};var xm=require("obsidian");var Ao=class{constructor(t,i,n,r){this.containerEl=t;this.searchZeroState=i;this.tabNameToTab=n;this.onFocus=r;this.searchSettingInfo=new Map;for(let[a,s]of n)this.searchSettingInfo.set(a,s.searchSettingInfo);this.display()}display(){let t=new xm.Setting(this.containerEl);t.settingEl.style.border="none",t.addSearch(i=>{this.search=i}),this.search.setPlaceholder(E("tabs.default-search-bar-text")),this.search.inputEl.onfocus=()=>{this.onFocus()},this.search.onChange(i=>{this.searchSettings(i.toLowerCase())})}searchSettings(t){let i=new Set,n=function(r,a){Mi(r),i.has(a)||i.add(a)};for(let[r,a]of this.searchSettingInfo)for(let s of a)if(t.trim()===""||s.alias?.includes(t)||s.description.includes(t)||s.name.includes(t))n(s.containerEl,r);else if(s.options)for(let o of s.options){if(o.description.toLowerCase().includes(t)||o.name.toLowerCase().includes(t)){n(s.containerEl,r);break}else if(o.options){for(let l of o.options)if(l.description.toLowerCase().includes(t)||l.value.toLowerCase().includes(t)){n(s.containerEl,r);break}}pi(s.containerEl)}else pi(s.containerEl);for(let[r,a]of this.tabNameToTab)i.has(r)?Mi(a.headingEl):pi(a.headingEl);i.size===0?Mi(this.searchZeroState):pi(this.searchZeroState)}focusOnInput(){this.search.inputEl.focus()}};var wm=dn(Wa());var Nn=require("obsidian");var Ma=class{constructor(t,i,n,r=!0){this.containerEl=t;this.name=i;this.description=n;this.disabled=r;this.display()}display(){let t=this.containerEl.createDiv(),i=t.createDiv("setting-item-info");this.nameEl=i.createDiv("setting-item-name"),this.nameEl.setText(this.name),this.descEl=i.createDiv("setting-item-description"),this.descEl.setText(this.description),this.inputContainerEl=t.createDiv("full-width-textbox-input-wrapper"),this.inputContainerEl.onmouseover=()=>{this.getInput().trim()!=""&&this.copyEl.removeClass("linter-visually-hidden")},this.inputContainerEl.onmouseleave=()=>{this.copyEl.addClass("linter-visually-hidden")},this.inputEl=this.inputContainerEl.createEl("textarea",{cls:"full-width"}),this.inputEl.spellcheck=!1,this.inputEl.disabled=this.disabled,this.copyEl=this.inputContainerEl.createDiv({cls:"settings-copy-button linter-visually-hidden ",attr:{"aria-label":E("copy-aria-label")}}),this.copyIconEl=this.copyEl.createSpan(),(0,Nn.setIcon)(this.copyIconEl,"linter-clipboard"),this.copyIconEl.onclick=()=>{this.handleCopy(this.copyIconEl)}}getInput(){return this.inputEl.value}handleCopy(t){navigator.clipboard.writeText(this.getInput()).then(()=>{(0,Nn.setIcon)(t,"linter-success"),setTimeout(()=>{(0,Nn.setIcon)(t,"linter-clipboard")},1500)},i=>{new Nn.Notice(`${E("notice-text.copy-to-clipboard-failed")+i}`,0)})}};var ek=Object.keys(wm.default.levels),To=class extends Bi{constructor(t,i,n,r){super(t,i,"Debug",n,r),this.display()}display(){let t=this.contentEl.createDiv(),i={isForEnum:!0,values:ek,descriptions:[]};this.addSettingSearchInfoForGeneralSettings(new Hi(t,"tabs.debug.log-level.name","tabs.debug.log-level.description","logLevel",this.plugin,i,async()=>{Qa(this.plugin.settings.logLevel)})),t=this.contentEl.createDiv();let n=E("tabs.debug.linter-config.name"),r=E("tabs.debug.linter-config.description");new Ma(t,n,r).inputEl.setText(JSON.stringify(this.plugin.settings,null,2)),this.addSettingSearchInfo(t,n,r),t=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new _i(t,"tabs.debug.log-collection.name","tabs.debug.log-collection.description","recordLintOnSaveLogs",this.plugin)),t=this.contentEl.createDiv(),n=E("tabs.debug.linter-logs.name"),r=E("tabs.debug.linter-logs.description");let s=new Ma(t,n,"");s.inputEl.setText(Va.join(` +`)),Ci(r,s.descEl,this.plugin.settingsTab.component),this.addSettingSearchInfo(t,n,r)}};var Lo=class extends ht.PluginSettingTab{constructor(i,n){super(i,n);this.plugin=n;this.tabNameToTab=new Map;this.selectedTab="General";this.component=new ht.Component}display(){let{containerEl:i}=this;this.component.load(),i.empty();let n=i.createDiv("linter-setting-title");ht.Platform.isMobile?n.addClass("linter-mobile"):n.createEl("h1").setText(E("linter-title")),this.navContainer=i.createEl("nav",{cls:"linter-setting-header"}),this.tabNavEl=this.navContainer.createDiv("linter-setting-tab-group"),this.settingsContentEl=i.createDiv("linter-setting-content"),this.addTabs(ht.Platform.isMobile),this.createSearchZeroState(ht.Platform.isMobile),this.generateSearchBar(n),this.selectedTab==""&&this.tabSearcher.focusOnInput()}hide(){this.component.unload()}addTabs(i){this.addTab(new xo(this.tabNavEl,this.settingsContentEl,i,this.plugin,this.app));for(let n of Object.values(D))this.addTab(new wo(this.tabNavEl,this.settingsContentEl,n,Ct.get(n),i,this.plugin));this.addTab(new zo(this.tabNavEl,this.settingsContentEl,i,this.app,this.plugin)),this.addTab(new To(this.tabNavEl,this.settingsContentEl,i,this.plugin))}generateSearchBar(i){this.tabSearcher=new Ao(i,this.searchZeroState,this.tabNameToTab,()=>{for(let n of this.tabNameToTab.values()){n.updateTabDisplayMode(!1,"entering search mode by focusing on the search input box");let r=this.tabSearcher.search.getValue();this.selectedTab==""&&r.trim()!=""&&this.tabSearcher.searchSettings(r.toLowerCase()),this.selectedTab=""}})}createSearchZeroState(i){this.searchZeroState=this.settingsContentEl.createDiv(),pi(this.searchZeroState),this.searchZeroState.createEl(i?"h3":"h2",{text:E("empty-search-results-text")}).style.textAlign="center"}addTab(i){i.navButton.onclick=()=>{this.onTabClick(i.name)},i.updateTabDisplayMode(this.selectedTab===i.name,"the status is still the same"),this.tabNameToTab.set(i.name,i)}onTabClick(i){if(this.selectedTab!==i){if(this.selectedTab=="")for(let[n,r]of this.tabNameToTab)r.updateTabDisplayMode(n===i,"leaving search mode by selecting a tab");else pi(this.searchZeroState),this.tabNameToTab.get(i).updateTabDisplayMode(!0),this.tabNameToTab.get(this.selectedTab).updateTabDisplayMode(!1);this.selectedTab=i}}};var Sm=require("obsidian");var ik=/^---\n/gm,km=`${wn}:`,Eo=class extends Sm.EditorSuggest{constructor(i){super(i.app);this.plugin=i;this.inline=!1;let n=E("all-rules-option");this.ruleInfo=[{displayName:n,name:n.toLowerCase(),alias:"all"}];for(let r of qi){let a=r.getName();this.ruleInfo.push({displayName:a,name:a.toLowerCase(),alias:r.alias})}}onTrigger(i,n,r){let a=n.getLine(i.line).toLowerCase();if(a.startsWith(km)||this.disabledRulesIsEndOfStartOfFileToCursor(n.getRange({line:0,ch:0},i))){this.inline=a.startsWith(km);let o=n.getLine(i.line).substring(0,i.ch),l=o.match(/(\S+)$/)?.first().replaceAll("[","").replaceAll("]","");if(l)return{end:i,start:{ch:o.lastIndexOf(l),line:i.line},query:l}}return null}getSuggestions(i){let[n,r]=Rs(i.editor.getValue());if(r)return[];let a=i.query.toLowerCase();return this.ruleInfo.filter(o=>(o.name.contains(a)||o.alias.contains(a))&&!n.includes(o.alias))}renderSuggestion(i,n){n.addClass("mod-complex");let r=n.createDiv({cls:"suggestion-content"});r.createDiv({cls:"suggestion-title"}).setText(`${i.displayName}`),r.createDiv({cls:"suggestion-note"}).setText(`${i.alias}`)}selectSuggestion(i){if(this.context){let n=i.alias;this.inline?n=`${n},`:n=`${n} + -`,this.context.editor.replaceRange(`${n} `,this.context.start,this.context.end)}}disabledRulesIsEndOfStartOfFileToCursor(i){if(!i||!i.length||i.match(ik)?.length!=1)return!1;let n=ue(i+` +`,wn)?.trimEnd();return n===null?!1:i.trimEnd().endsWith(n)}};var Em=dn(Lm()),Om=dn(Wa()),tk={en:"en-gb",zh:"zh-cn","zh-TW":"zh-tw",ru:"ru",ko:"ko",it:"it",id:"id",ro:"ro","pt-BR":"pt-br",cz:"cs",da:"da",de:"de",es:"es",fr:"fr",no:"nn",pl:"pl",pt:"pt",tr:"tr",hi:"hi",nl:"nl",ar:"ar",ja:"ja"},ft=0,Co=class extends pe.Plugin{constructor(){super(...arguments);this.eventRefs=[];this.isEnabled=!0;this.rulesRunner=new co;this.overridePaste=!1;this.customCommandsLock=new Em.default;this.originalSaveCallback=null;this.editorLintFiles=[];this.fileLintFiles=new Set;this.customCommandsCallback=null;this.currentlyOpeningSidebar=!1}async onload(){Xa(window.localStorage.getItem("language")),hn(E("logs.plugin-load")),this.isEnabled=!0;for(let i in Ee){let n=Ee[i];(0,pe.addIcon)(n.id,n.source)}await this.loadSettings(),this.addCommands(),this.registerEventsAndSaveCallback(),this.registerEditorSuggest(new Eo(this)),this.settingsTab=new Lo(this.app,this),this.addSettingTab(this.settingsTab)}async onunload(){hn(E("logs.plugin-unload")),this.isEnabled=!1;for(let n of this.eventRefs)this.app.workspace.offref(n);let i=this.app.commands?.commands?.["editor:save-file"];i&&i.callback&&this.originalSaveCallback&&(i.callback=this.originalSaveCallback)}async loadSettings(){let i=await this.loadData();this.settings=Object.assign({},ka,i),typeof this.settings.logLevel=="number"&&(this.settings.logLevel=Cd(this.settings.logLevel)),Qa(this.settings.logLevel),this.setOrUpdateMomentInstance(),this.settings.settingsConvertedToConfigKeyValues||this.moveConfigValuesToKeyBasedFormat();for(let n of qi)this.settings.ruleConfigs[n.alias]||(this.settings.ruleConfigs[n.alias]=n.getDefaultOptions());this.updatePasteOverrideStatus()}async saveSettings(){await this.saveData(this.settings),this.updatePasteOverrideStatus()}addCommands(){let i=this;this.addCommand({id:"lint-file",name:E("commands.lint-file.name"),editorCheckCallback(n,r,a){if(n)return i.isMarkdownFile(a.file);i.runLinterEditor(r)},icon:Ee.file.id,hotkeys:[{modifiers:["Mod","Alt"],key:"L"}]}),this.addCommand({id:"lint-file-unless-ignored",name:E("commands.lint-file-unless-ignored.name"),editorCheckCallback(n,r,a){if(n)return i.isMarkdownFile(a.file);i.shouldIgnoreFile(a.file)||i.runLinterEditor(r)},icon:Ee.file.id}),this.addCommand({id:"lint-all-files",name:E("commands.lint-all-files.name"),icon:Ee.vault.id,callback:()=>{let n=E("commands.lint-all-files.start-message"),r=E("commands.lint-all-files.submit-button-text"),a=E("commands.lint-all-files.submit-button-notice-text");new wa(this.app,n,r,a,()=>this.runLinterAllFiles(this.app),this.settings.lintCommands&&this.settings.lintCommands.length>0).open()}}),this.addCommand({id:"lint-all-files-in-folder",name:E("commands.lint-all-files-in-folder.name"),icon:Ee.folder.id,editorCheckCallback:(n,r,a)=>{if(n)return!a.file.parent.isRoot();this.createFolderLintModal(a.file.parent)}}),this.addCommand({id:"paste-as-plain-text",name:E("commands.paste-as-plain-text.name"),editorCheckCallback:(n,r)=>{if(n)return this.overridePaste;this.pasteAsPlainText(r)}})}registerEventsAndSaveCallback(){let i=this.app.workspace.on("editor-paste",a=>{a.defaultPrevented||!this.overridePaste||this.modifyPasteEvent(a)});this.registerEvent(i),this.eventRefs.push(i),i=this.app.workspace.on("file-menu",(a,s,o)=>this.onMenuOpenCallback(a,s,o)),this.registerEvent(i),this.eventRefs.push(i),this.lastActiveFile=this.app.workspace.getActiveFile(),i=this.app.workspace.on("active-leaf-change",()=>this.onActiveLeafChange()),this.registerEvent(i),this.eventRefs.push(i),i=this.app.metadataCache.on("changed",a=>this.onMetadataCacheUpdatedCallback(a)),this.registerEvent(i),this.eventRefs.push(i);let n=this.app.commands?.commands?.["editor:save-file"];this.originalSaveCallback=n?.callback,typeof this.originalSaveCallback=="function"&&(n.callback=()=>{if(this.originalSaveCallback(),this.settings.lintOnSave&&this.isEnabled){let a=this.getEditor();if(a){let s=this.app.workspace.getActiveFile();!this.shouldIgnoreFile(s)&&this.isMarkdownFile(s)&&this.runLinterEditor(a)}}});let r=this;window.CodeMirrorAdapter.commands.save=()=>{r.app.commands.executeCommandById("editor:save-file")}}async onMetadataCacheUpdatedCallback(i){this.editorLintFiles.includes(i)?(this.editorLintFiles.remove(i),this.runCustomCommands(i)):this.fileLintFiles.has(i)&&(this.fileLintFiles.delete(i),this.runCustomCommandsInSidebar(i))}onMenuOpenCallback(i,n,r){n instanceof pe.TFile&&this.isMarkdownFile(n)?i.addItem(a=>{a.setIcon(Ee.file.id).setTitle(E("commands.lint-file-pop-up-menu-text.name")).onClick(async()=>{let s=this.app.workspace.getActiveFile(),o=this.getEditor();s===n&&o?this.runLinterEditor(o):this.runLinterFile(n)})}):n instanceof pe.TFolder&&i.addItem(a=>{a.setTitle(E("commands.lint-folder-pop-up-menu-text.name")).setIcon(Ee.folder.id).onClick(()=>this.createFolderLintModal(n))})}async onActiveLeafChange(){if(!this.isEnabled||this.currentlyOpeningSidebar)return;let i=this.app.workspace.getActiveFile(),n=this.lastActiveFile==null?!1:await this.app.vault.adapter.exists(this.lastActiveFile.path);if(!this.settings.lintOnFileChange||!n||this.lastActiveFile===i||!this.isMarkdownFile(this.lastActiveFile)||this.shouldIgnoreFile(this.lastActiveFile)){this.lastActiveFile=i;return}try{await this.runLinterFile(this.lastActiveFile,!0)}catch(r){this.handleLintError(this.lastActiveFile,r,E("commands.lint-file.error-message")+" '{FILE_PATH}'",!1)}finally{this.lastActiveFile=i}}shouldIgnoreFile(i){for(let n of this.settings.foldersToIgnore)if(n.length>0&&i.path.startsWith(n))return!0;return!1}isMarkdownFile(i){return i&&i.extension==="md"}async runLinterFile(i,n=!1){let r=tu(await this.app.vault.read(i)),a=this.rulesRunner.lintText(xa(r,i,this.momentLocale,this.settings));if(r!=a){if(await this.app.vault.modify(i,a),n){let s=E("logs.file-change-lint-message-start")+" "+this.lastActiveFile.path;this.settings.displayLintOnFileChangeNotice&&new pe.Notice(s),hn(s)}this.fileLintFiles.add(i);return}await this.runCustomCommandsInSidebar(i)}async runLinterAllFiles(i){let n=0;if(await Promise.all(i.vault.getMarkdownFiles().map(async r=>{if(!this.shouldIgnoreFile(r))try{await this.runLinterFile(r)}catch(a){this.handleLintError(r,a,E("commands.lint-all-files.error-message")+" '{FILE_PATH}'"),n+=1}})),n===0)new pe.Notice(E("commands.lint-all-files.success-message"),ft);else{let r=n===1?E("commands.lint-all-files.errors-message-singular"):E("commands.lint-all-files.errors-message-plural").replace("{NUM}",n.toString());new pe.Notice(r,ft)}}async runLinterAllFilesInFolder(i){hn(E("logs.folder-lint")+i.name);let n=0,r=0,a=this.getAllFilesInFolder(i);if(await Promise.all(a.map(async s=>{if(!this.shouldIgnoreFile(s)){try{await this.runLinterFile(s)}catch(o){this.handleLintError(s,o,E("commands.lint-all-files-in-folder.error-message")+" '{FILE_PATH}'"),n+=1}r++}})),n===0)new pe.Notice(E("commands.lint-all-files-in-folder.success-message").replace("{NUM}",r.toString()).replace("{FOLDER_NAME}",i.name),ft);else{let s=n===1?E("commands.lint-all-files-in-folder.message-singular").replace("{NUM}",r.toString()).replace("{FOLDER_NAME}",i.name):E("commands.lint-all-files-in-folder.message-plural").replace("{FILE_COUNT}",r.toString()).replace("{FOLDER_NAME}",i.name).replace("{ERROR_COUNT}",n.toString());new pe.Notice(s,ft)}}createFolderLintModal(i){let n=E("commands.lint-all-files-in-folder.start-message").replace("{FOLDER_NAME}",i.name),r=E("commands.lint-all-files-in-folder.submit-button-text").replace("{FOLDER_NAME}",i.name),a=E("commands.lint-all-files-in-folder.submit-button-notice-text").replace("{FOLDER_NAME}",i.name);new wa(this.app,n,r,a,()=>this.runLinterAllFilesInFolder(i),this.settings.lintCommands&&this.settings.lintCommands.length>0).open()}runLinterEditor(i){Qo(this.settings.recordLintOnSaveLogs),Od(),hn(E("logs.linter-run"));let n=this.app.workspace.getActiveFile(),r=i.getValue(),a;try{a=this.rulesRunner.lintText(xa(r,n,this.momentLocale,this.settings))}catch(u){this.handleLintError(n,u,E("commands.lint-file.error-message")+" '{FILE_PATH}'",!1);return}let o=new Kn.default.diff_match_patch().diff_main(r,a),l=r!=a;if(l){let u=i.posToOffset(i.getCursor()),g=this.getNewCursorOffset(u,o,a.length,u==a.length);i.setValue(a),i.setCursor(i.offsetToPos(g)),this.editorLintFiles.push(n)}let c=o.map(u=>u[0]==Kn.default.DIFF_INSERT?u[1].length:0).reduce((u,g)=>u+g,0),d=o.map(u=>u[0]==Kn.default.DIFF_DELETE?u[1].length:0).reduce((u,g)=>u+g,0);this.displayChangedMessage(c,d),l||this.runCustomCommands(n),Qo(!1)}getNewCursorOffset(i,n,r,a){if(a)return r;let s=i,o="";return n.forEach(l=>{let[c,d]=l;c==Kn.default.DIFF_INSERT?(s+=d.length,o+=d):c==Kn.default.DIFF_DELETE?o.length+d.length>s?s-=s-(o.length+d.length):s-=d.length:o+=d,o.length>s}),s<0?0:s}async setOrUpdateMomentInstance(){let i=localStorage.getItem("language")||"en",n=navigator.language?.toLowerCase(),r=tk[i];this.settings.linterLocale!=="system-default"?r=this.settings.linterLocale:n.startsWith(i)&&(r=n),this.momentLocale=r;let a=Oo.moment.locale(),s=Oo.moment.locale(r);ni(E("logs.moment-locale-not-found").replace("{MOMENT_LOCALE}",r).replace("{CURRENT_LOCALE}",s)),Oo.moment.locale(a)}displayChangedMessage(i,n){if(this.settings.displayChanged){let r=p` ${i} ${E("notice-text.characters-added")} ${n} ${E("notice-text.characters-removed")} - `;new oe.Notice(r)}}handleLintError(i,n,r,a=!0){let s=r.replace("{FILE_PATH}",i.path),o=E("logs.see-console");n instanceof Hi?a?new oe.Notice(`${s} ${n.message}. -${o}`,et):new oe.Notice(`${n.message}. -${o}`,et):new oe.Notice(`${E("logs.unknown-error")} ${o}`,et),Uc(s,n)}async modifyPasteEvent(i){let n=this.getEditor();if(!n)return;let r=i.clipboardData.getData("text/plain");if(!r)return;if(Jt.test(r.trim())){rt(E("logs.paste-link-warning"));return}if(i.stopPropagation(),i.preventDefault(),!i.defaultPrevented)return;let a=this.app.vault.getConfig("autoConvertHtml"),s=i.clipboardData.getData("text/html"),o=s&&a?(0,oe.htmlToMarkdown)(s):r,l=n.listSelections();if(l.length===1){let d=l[0];o=this.rulesRunner.runPasteLint(this.getLineContent(n,d),n.getSelection()??"",Wr(o,null,this.momentLocale,this.settings)),n.replaceSelection(o)}else this.handleMultiCursorPaste(n,l,o)}handleMultiCursorPaste(i,n,r){let a=this.convertContentIntoProperPasteContent(n,r),s=[];n.forEach((o,l)=>{r=this.rulesRunner.runPasteLint(this.getLineContent(i,o),i.getRange(o.anchor,o.head)??"",Wr(a[l],null,this.momentLocale,this.settings)),s.push({text:r,from:o.anchor,to:o.head})}),i.transaction({changes:s})}convertContentIntoProperPasteContent(i,n){let r=n.split(` -`),a=[];if(r.length%i.length!==0)for(let s=0;s<i.length;s++)a.push(n);else{let s=r.length/i.length,o="";for(let l=0;l<r.length;l++)o+=r[l],(l+1===i.length||(l+1)%s===0)&&(a.push(o),o="")}return a}async pasteAsPlainText(i){let n=await navigator.clipboard.readText();if(!n){new oe.Notice(E("notice-text.empty-clipboard"),et);return}i.replaceSelection(n)}getEditor(){let i=this.app.workspace.getActiveViewOfType(oe.MarkdownView);return i?i.editor:null}getLineContent(i,n){return i.getLine(n.anchor.line)}moveConfigValuesToKeyBasedFormat(){Sa("en");for(let i of ki){let n=E("rules."+i.alias+".name"),r=this.settings.ruleConfigs[n];if(r!=null){let a=E("rules."+i.alias+".description"),s={enabled:r[a]??!1};for(let o of i.options){if(o.configKey==="enabled")continue;let l=E("rules."+i.alias+"."+o.configKey+".name");s[o.configKey]=r[l]??o.defaultValue}this.settings.ruleConfigs[i.alias]=s,delete this.settings.ruleConfigs[n]}}this.settings.settingsConvertedToConfigKeyValues=!0,this.saveSettings(),Sa(window.localStorage.getItem("language"))}getAllFilesInFolder(i){let n=[],r=[i];for(let a of r)for(let s of a.children)s instanceof oe.TFile&&this.isMarkdownFile(s)?n.push(s):s instanceof oe.TFolder&&r.push(s);return n}updatePasteOverrideStatus(){for(let i of mt.get("Paste"))if(i.getOptions(this.settings).enabled){this.overridePaste=!0;return}this.overridePaste=!1}}; + `;new pe.Notice(r)}}handleLintError(i,n,r,a=!0){let s=r.replace("{FILE_PATH}",i.path),o=E("logs.see-console");n instanceof Tn?a?new pe.Notice(`${s} ${n.message}. +${o}`,ft):new pe.Notice(`${n.message}. +${o}`,ft):new pe.Notice(`${E("logs.unknown-error")} ${o}`,ft),Ed(s,n)}async modifyPasteEvent(i){let n=this.getEditor();if(!n)return;let r=i.clipboardData.getData("text/plain");if(!r)return;if(xn.test(r.trim())){xt(E("logs.paste-link-warning"));return}if(i.stopPropagation(),i.preventDefault(),!i.defaultPrevented)return;let a=this.app.vault.getConfig("autoConvertHtml"),s=i.clipboardData.getData("text/html"),o=s&&a?(0,pe.htmlToMarkdown)(s):r,l=n.listSelections();if(l.length===1){let c=l[0];o=this.rulesRunner.runPasteLint(this.getLineContent(n,c),n.getSelection()??"",xa(o,null,this.momentLocale,this.settings)),n.replaceSelection(o)}else this.handleMultiCursorPaste(n,l,o)}handleMultiCursorPaste(i,n,r){let a=this.convertContentIntoProperPasteContent(n,r),s=[];n.forEach((o,l)=>{r=this.rulesRunner.runPasteLint(this.getLineContent(i,o),i.getRange(o.anchor,o.head)??"",xa(a[l],null,this.momentLocale,this.settings)),s.push({text:r,from:o.anchor,to:o.head})}),i.transaction({changes:s})}convertContentIntoProperPasteContent(i,n){let r=n.split(` +`),a=[];if(r.length%i.length!==0)for(let s=0;s<i.length;s++)a.push(n);else{let s=r.length/i.length,o="";for(let l=0;l<r.length;l++)o+=r[l],(l+1===i.length||(l+1)%s===0)&&(a.push(o),o="")}return a}async pasteAsPlainText(i){let n=await navigator.clipboard.readText();if(!n){new pe.Notice(E("notice-text.empty-clipboard"),ft);return}i.replaceSelection(n)}setCustomCommandCallback(i){(0,Om.warn)(E("logs.custom-command-callback-warning")),this.customCommandsCallback=i}async runCustomCommandsInSidebar(i){if(!this.settings.lintCommands||this.settings.lintCommands.length==0)return;let n=this.app.workspace.getRightLeaf(!1),r=this.getEditor();await this.customCommandsLock.acquire("command",async()=>{this.currentlyOpeningSidebar=!0,await n.openFile(i),this.rulesRunner.runCustomCommands(this.settings.lintCommands,this.app.commands),this.customCommandsCallback&&await this.customCommandsCallback(i)}),n.detach(),r&&r.focus(),this.currentlyOpeningSidebar=!1}async runCustomCommands(i){!this.settings.lintCommands||this.settings.lintCommands.length==0||await this.customCommandsLock.acquire("command",async()=>{try{this.rulesRunner.runCustomCommands(this.settings.lintCommands,this.app.commands)}catch(n){this.handleLintError(i,n,E("commands.lint-file.error-message")+" '{FILE_PATH}'",!1)}this.customCommandsCallback&&await this.customCommandsCallback(i)})}getEditor(){let i=this.app.workspace.getActiveViewOfType(pe.MarkdownView);return i?i.editor:null}getLineContent(i,n){return i.getLine(n.anchor.line)}moveConfigValuesToKeyBasedFormat(){Xa("en");for(let i of qi){let n=E("rules."+i.alias+".name"),r=this.settings.ruleConfigs[n];if(r!=null){let a=E("rules."+i.alias+".description"),s={enabled:r[a]??!1};for(let o of i.options){if(o.configKey==="enabled")continue;let l=E("rules."+i.alias+"."+o.configKey+".name");s[o.configKey]=r[l]??o.defaultValue}this.settings.ruleConfigs[i.alias]=s,delete this.settings.ruleConfigs[n]}}this.settings.settingsConvertedToConfigKeyValues=!0,this.saveSettings(),Xa(window.localStorage.getItem("language"))}getAllFilesInFolder(i){let n=[],r=[i];for(let a of r)for(let s of a.children)s instanceof pe.TFile&&this.isMarkdownFile(s)?n.push(s):s instanceof pe.TFolder&&r.push(s);return n}updatePasteOverrideStatus(){for(let i of Ct.get("Paste"))if(i.getOptions(this.settings).enabled){this.overridePaste=!0;return}this.overridePaste=!1}}; /*! Bundled license information: js-yaml/dist/js-yaml.mjs: diff --git a/.obsidian/plugins/obsidian-linter/manifest.json b/.obsidian/plugins/obsidian-linter/manifest.json index f308c8c..df70a08 100644 --- a/.obsidian/plugins/obsidian-linter/manifest.json +++ b/.obsidian/plugins/obsidian-linter/manifest.json @@ -1,10 +1,11 @@ { "id": "obsidian-linter", "name": "Linter", - "version": "1.20.1", + "version": "1.23.2", "minAppVersion": "1.4.16", "description": "Formats and styles your notes. It can be used to format YAML tags, aliases, arrays, and metadata; footnotes; headings; spacing; math blocks; regular markdown contents like list, italics, and bold styles; and more with the use of custom rule options as well.", "author": "Victor Tao", "authorUrl": "https://github.com/platers", + "helpUrl": "https://platers.github.io/obsidian-linter/", "isDesktopOnly": false } diff --git a/.obsidian/plugins/obsidian-minimal-settings/data.json b/.obsidian/plugins/obsidian-minimal-settings/data.json index e646c0f..428eaf9 100644 --- a/.obsidian/plugins/obsidian-minimal-settings/data.json +++ b/.obsidian/plugins/obsidian-minimal-settings/data.json @@ -1,5 +1,4 @@ { - "theme": "moonstone", "lightStyle": "minimal-light", "darkStyle": "minimal-dark", "lightScheme": "minimal-gruvbox-light", @@ -28,9 +27,10 @@ "focusMode": false, "underlineInternal": true, "underlineExternal": true, - "useSystemTheme": true, "folding": true, "lineNumbers": true, "readableLineLength": true, - "devBlockWidth": false + "devBlockWidth": false, + "theme": "moonstone", + "useSystemTheme": true } \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-minimal-settings/main.js b/.obsidian/plugins/obsidian-minimal-settings/main.js index 18a3699..48690b9 100644 --- a/.obsidian/plugins/obsidian-minimal-settings/main.js +++ b/.obsidian/plugins/obsidian-minimal-settings/main.js @@ -58,19 +58,6 @@ var MinimalTheme = class extends import_obsidian.Plugin { 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; @@ -109,7 +96,7 @@ var MinimalTheme = class extends import_obsidian.Plugin { 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") { + if (sidebarEl && ribbonEl && document.body.classList.contains("theme-light") && this.settings.lightStyle == "minimal-light-contrast") { sidebarEl.addClass("theme-dark"); ribbonEl.addClass("theme-dark"); } else if (sidebarEl && ribbonEl) { @@ -131,7 +118,6 @@ var MinimalTheme = class extends import_obsidian.Plugin { 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", @@ -262,8 +248,6 @@ var MinimalTheme = class extends import_obsidian.Plugin { 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(); } }); @@ -670,7 +654,6 @@ var MinimalTheme = class extends import_obsidian.Plugin { 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); @@ -691,28 +674,22 @@ var MinimalTheme = class extends import_obsidian.Plugin { 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"); + document.body.addClass("theme-dark", this.settings.darkStyle); + if (this.app.vault.getConfig("theme") !== "system") { + 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"); + document.body.addClass("theme-light", this.settings.lightStyle); + if (this.app.vault.getConfig("theme") !== "system") { + this.app.setTheme("moonstone"); + this.app.vault.setConfig("theme", "moonstone"); + } this.app.workspace.trigger("css-change"); } updateDarkScheme() { @@ -724,8 +701,27 @@ var MinimalTheme = class extends import_obsidian.Plugin { document.body.addClass(this.settings.lightScheme); } updateTheme() { - this.app.setTheme(this.settings.theme); - this.app.vault.setConfig("theme", this.settings.theme); + if (this.app.vault.getConfig("theme") === "system") { + if (document.body.classList.contains("theme-light")) { + document.body.removeClass("theme-light"); + document.body.addClass("theme-dark"); + } else { + document.body.removeClass("theme-dark"); + document.body.addClass("theme-light"); + } + } else { + if (document.body.classList.contains("theme-light")) { + document.body.removeClass("theme-light"); + document.body.addClass("theme-dark"); + } else { + document.body.removeClass("theme-dark"); + document.body.addClass("theme-light"); + } + const currentTheme = this.app.vault.getConfig("theme"); + const newTheme = currentTheme === "moonstone" ? "obsidian" : "moonstone"; + this.app.setTheme(newTheme); + this.app.vault.setConfig("theme", newTheme); + } this.app.workspace.trigger("css-change"); } removeStyle() { @@ -734,7 +730,6 @@ var MinimalTheme = class extends import_obsidian.Plugin { } }; var DEFAULT_SETTINGS = { - theme: "moonstone", lightStyle: "minimal-light", darkStyle: "minimal-dark", lightScheme: "minimal-default-light", @@ -763,7 +758,6 @@ var DEFAULT_SETTINGS = { focusMode: false, underlineInternal: true, underlineExternal: true, - useSystemTheme: false, folding: true, lineNumbers: false, readableLineLength: false, @@ -827,11 +821,6 @@ var MinimalSettingTab = class extends import_obsidian.PluginSettingTab { href: "https://minimal.guide" })); featuresSectionDesc.appendText(" for details."); - 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 items in the left sidebar uses text labels.").addToggle((toggle) => toggle.setValue(this.plugin.settings.labeledNav).onChange((value) => { this.plugin.settings.labeledNav = value; this.plugin.saveData(this.plugin.settings); @@ -969,4 +958,4 @@ var MinimalSettingTab = class extends import_obsidian.PluginSettingTab { })); } }; -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibWFpbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgQXBwLCBXb3Jrc3BhY2UsIE1vZGFsLCBOb3RpY2UsIFBsdWdpbiwgUGx1Z2luU2V0dGluZ1RhYiwgU2V0dGluZyB9IGZyb20gJ29ic2lkaWFuJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1pbmltYWxUaGVtZSBleHRlbmRzIFBsdWdpbiB7XHJcblxyXG4gIHNldHRpbmdzOiBNaW5pbWFsU2V0dGluZ3M7XHJcblxyXG4gIGFzeW5jIG9ubG9hZCgpIHtcclxuXHJcbiAgICBhd2FpdCB0aGlzLmxvYWRTZXR0aW5ncygpO1xyXG5cclxuICAgIHRoaXMuYWRkU2V0dGluZ1RhYihuZXcgTWluaW1hbFNldHRpbmdUYWIodGhpcy5hcHAsIHRoaXMpKTtcclxuXHJcbiAgICB0aGlzLmFkZFN0eWxlKCk7XHJcblxyXG4gICAgLy8gV2F0Y2ggZm9yIHN5c3RlbSBjaGFuZ2VzIHRvIGNvbG9yIHRoZW1lIFxyXG5cclxuICAgIGxldCBtZWRpYSA9IHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJyk7XHJcblxyXG4gICAgbGV0IHVwZGF0ZVN5c3RlbVRoZW1lID0gKCkgPT4ge1xyXG4gICAgICBpZiAobWVkaWEubWF0Y2hlcyAmJiB0aGlzLnNldHRpbmdzLnVzZVN5c3RlbVRoZW1lKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0RhcmsgbW9kZSBhY3RpdmUnKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpXHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZXR0aW5ncy51c2VTeXN0ZW1UaGVtZSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdMaWdodCBtb2RlIGFjdGl2ZScpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBtZWRpYS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB1cGRhdGVTeXN0ZW1UaGVtZSk7XHJcblxyXG4gICAgLy8gUmVtb3ZlIHN5c3RlbSB0aGVtZSBsaXN0ZW5lciB3aGVuIHdlIHVubG9hZFxyXG4gICAgdGhpcy5yZWdpc3RlcigoKSA9PiBtZWRpYS5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB1cGRhdGVTeXN0ZW1UaGVtZSkpO1xyXG5cclxuICAgIHVwZGF0ZVN5c3RlbVRoZW1lKCk7XHJcblxyXG4gICAgLy8gQ2hlY2sgc3RhdGUgb2YgT2JzaWRpYW4gU2V0dGluZ3NcclxuICAgIGxldCBzZXR0aW5nc1VwZGF0ZSA9ICgpID0+IHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBjb25zdCBmb250U2l6ZSA9IHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygnYmFzZUZvbnRTaXplJyk7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3MudGV4dE5vcm1hbCA9IGZvbnRTaXplO1xyXG5cclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBpZiAodGhpcy5hcHAudmF1bHQuZ2V0Q29uZmlnKCdmb2xkSGVhZGluZycpKSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5mb2xkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdGb2xkaW5nIGlzIG9uJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5mb2xkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnRm9sZGluZyBpcyBvZmYnKTtcclxuICAgICAgfVxyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtZm9sZGluZycsIHRoaXMuc2V0dGluZ3MuZm9sZGluZyk7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgaWYgKHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygnc2hvd0xpbmVOdW1iZXInKSkge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGluZU51bWJlcnMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0xpbmUgbnVtYmVycyBhcmUgb24nKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpbmVOdW1iZXJzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnTGluZSBudW1iZXJzIGFyZSBvZmYnKTtcclxuICAgICAgfVxyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtbGluZS1udW1zJywgdGhpcy5zZXR0aW5ncy5saW5lTnVtYmVycyk7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgaWYgKHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygncmVhZGFibGVMaW5lTGVuZ3RoJykpIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLnJlYWRhYmxlTGluZUxlbmd0aCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnUmVhZGFibGUgbGluZSBsZW5ndGggaXMgb24nKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLnJlYWRhYmxlTGluZUxlbmd0aCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1JlYWRhYmxlIGxpbmUgbGVuZ3RoIGlzIG9mZicpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtcmVhZGFibGUnLCB0aGlzLnNldHRpbmdzLnJlYWRhYmxlTGluZUxlbmd0aCk7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnbWluaW1hbC1yZWFkYWJsZS1vZmYnLCAhdGhpcy5zZXR0aW5ncy5yZWFkYWJsZUxpbmVMZW5ndGgpO1xyXG4gIFxyXG4gICAgfVxyXG4gIFxyXG4gICAgbGV0IHNpZGViYXJVcGRhdGUgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHNpZGViYXJFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ21vZC1sZWZ0LXNwbGl0JylbMF07XHJcbiAgICAgIGNvbnN0IHJpYmJvbkVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc2lkZS1kb2NrLXJpYmJvbicpWzBdO1xyXG4gICAgICBpZiAoc2lkZWJhckVsICYmIHJpYmJvbkVsICYmIHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygndGhlbWUnKSA9PSAnbW9vbnN0b25lJyAmJiB0aGlzLnNldHRpbmdzLmxpZ2h0U3R5bGUgPT0gJ21pbmltYWwtbGlnaHQtY29udHJhc3QnKSB7XHJcbiAgICAgICAgc2lkZWJhckVsLmFkZENsYXNzKCd0aGVtZS1kYXJrJyk7XHJcbiAgICAgICAgcmliYm9uRWwuYWRkQ2xhc3MoJ3RoZW1lLWRhcmsnKTtcclxuICAgICAgfSBlbHNlIGlmIChzaWRlYmFyRWwgJiYgcmliYm9uRWwpIHtcclxuICAgICAgICBzaWRlYmFyRWwucmVtb3ZlQ2xhc3MoJ3RoZW1lLWRhcmsnKTsgXHJcbiAgICAgICAgcmliYm9uRWwucmVtb3ZlQ2xhc3MoJ3RoZW1lLWRhcmsnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMucmVnaXN0ZXJFdmVudChhcHAudmF1bHQub24oJ2NvbmZpZy1jaGFuZ2VkJywgc2V0dGluZ3NVcGRhdGUpKTtcclxuICAgIHRoaXMucmVnaXN0ZXJFdmVudChhcHAud29ya3NwYWNlLm9uKCdjc3MtY2hhbmdlJywgc2lkZWJhclVwZGF0ZSkpO1xyXG5cclxuICAgIHNldHRpbmdzVXBkYXRlKCk7XHJcbiAgICBcclxuICAgIGFwcC53b3Jrc3BhY2Uub25MYXlvdXRSZWFkeSgoKSA9PiB7XHJcbiAgICAgIHNpZGViYXJVcGRhdGUoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGxpZ2h0U3R5bGVzID0gWydtaW5pbWFsLWxpZ2h0JywgJ21pbmltYWwtbGlnaHQtdG9uYWwnLCAnbWluaW1hbC1saWdodC1jb250cmFzdCcsICdtaW5pbWFsLWxpZ2h0LXdoaXRlJ107XHJcbiAgICBjb25zdCBkYXJrU3R5bGVzID0gWydtaW5pbWFsLWRhcmsnLCAnbWluaW1hbC1kYXJrLXRvbmFsJywgJ21pbmltYWwtZGFyay1ibGFjayddO1xyXG4gICAgY29uc3QgaW1nR3JpZFN0eWxlcyA9IFsnaW1nLWdyaWQnLCdpbWctZ3JpZC1yYXRpbycsJ2ltZy1ub2dyaWQnXTtcclxuICAgIGNvbnN0IHRhYmxlV2lkdGhTdHlsZXMgPSBbJ3RhYmxlLTEwMCcsJ3RhYmxlLWRlZmF1bHQtd2lkdGgnLCd0YWJsZS13aWRlJywndGFibGUtbWF4J107XHJcbiAgICBjb25zdCBpZnJhbWVXaWR0aFN0eWxlcyA9IFsnaWZyYW1lLTEwMCcsJ2lmcmFtZS1kZWZhdWx0LXdpZHRoJywnaWZyYW1lLXdpZGUnLCdpZnJhbWUtbWF4J107XHJcbiAgICBjb25zdCBpbWdXaWR0aFN0eWxlcyA9IFsnaW1nLTEwMCcsJ2ltZy1kZWZhdWx0LXdpZHRoJywnaW1nLXdpZGUnLCdpbWctbWF4J107XHJcbiAgICBjb25zdCBtYXBXaWR0aFN0eWxlcyA9IFsnbWFwLTEwMCcsJ21hcC1kZWZhdWx0LXdpZHRoJywnbWFwLXdpZGUnLCdtYXAtbWF4J107XHJcbiAgICBjb25zdCBjaGFydFdpZHRoU3R5bGVzID0gWydjaGFydC0xMDAnLCdjaGFydC1kZWZhdWx0LXdpZHRoJywnY2hhcnQtd2lkZScsJ2NoYXJ0LW1heCddO1xyXG4gICAgY29uc3QgdGhlbWUgPSBbJ21vb25zdG9uZScsICdvYnNpZGlhbiddO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAnaW5jcmVhc2UtYm9keS1mb250LXNpemUnLFxyXG4gICAgICBuYW1lOiAnSW5jcmVhc2UgYm9keSBmb250IHNpemUnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MudGV4dE5vcm1hbCA9IHRoaXMuc2V0dGluZ3MudGV4dE5vcm1hbCArIDAuNTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9udFNpemUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICdkZWNyZWFzZS1ib2R5LWZvbnQtc2l6ZScsXHJcbiAgICAgIG5hbWU6ICdEZWNyZWFzZSBib2R5IGZvbnQgc2l6ZScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy50ZXh0Tm9ybWFsID0gdGhpcy5zZXR0aW5ncy50ZXh0Tm9ybWFsIC0gMC41O1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5zZXRGb250U2l6ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTsgXHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1kYXJrLWN5Y2xlJyxcclxuICAgICAgbmFtZTogJ0N5Y2xlIGJldHdlZW4gZGFyayBtb2RlIHN0eWxlcycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU3R5bGUgPSBkYXJrU3R5bGVzWyhkYXJrU3R5bGVzLmluZGV4T2YodGhpcy5zZXR0aW5ncy5kYXJrU3R5bGUpICsgMSkgJSBkYXJrU3R5bGVzLmxlbmd0aF07XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTsgIFxyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtbGlnaHQtY3ljbGUnLFxyXG4gICAgICBuYW1lOiAnQ3ljbGUgYmV0d2VlbiBsaWdodCBtb2RlIHN0eWxlcycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFN0eWxlID0gbGlnaHRTdHlsZXNbKGxpZ2h0U3R5bGVzLmluZGV4T2YodGhpcy5zZXR0aW5ncy5saWdodFN0eWxlKSArIDEpICUgbGlnaHRTdHlsZXMubGVuZ3RoXTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1oaWRkZW4tYm9yZGVycycsXHJcbiAgICAgIG5hbWU6ICdUb2dnbGUgc2lkZWJhciBib3JkZXJzJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmJvcmRlcnNUb2dnbGUgPSAhdGhpcy5zZXR0aW5ncy5ib3JkZXJzVG9nZ2xlO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLWNvbG9yZnVsLWhlYWRpbmdzJyxcclxuICAgICAgbmFtZTogJ1RvZ2dsZSBjb2xvcmZ1bCBoZWFkaW5ncycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5jb2xvcmZ1bEhlYWRpbmdzID0gIXRoaXMuc2V0dGluZ3MuY29sb3JmdWxIZWFkaW5ncztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWZvY3VzLW1vZGUnLFxyXG4gICAgICBuYW1lOiAnVG9nZ2xlIGZvY3VzIG1vZGUnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZm9jdXNNb2RlID0gIXRoaXMuc2V0dGluZ3MuZm9jdXNNb2RlO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtY29sb3JmdWwtZnJhbWUnLFxyXG4gICAgICBuYW1lOiAnVG9nZ2xlIGNvbG9yZnVsIHdpbmRvdyBmcmFtZScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5jb2xvcmZ1bEZyYW1lID0gIXRoaXMuc2V0dGluZ3MuY29sb3JmdWxGcmFtZTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ2N5Y2xlLW1pbmltYWwtdGFibGUtd2lkdGgnLFxyXG4gICAgICBuYW1lOiAnQ3ljbGUgYmV0d2VlbiB0YWJsZSB3aWR0aCBvcHRpb25zJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLnRhYmxlV2lkdGggPSB0YWJsZVdpZHRoU3R5bGVzWyh0YWJsZVdpZHRoU3R5bGVzLmluZGV4T2YodGhpcy5zZXR0aW5ncy50YWJsZVdpZHRoKSArIDEpICUgdGFibGVXaWR0aFN0eWxlcy5sZW5ndGhdO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAnY3ljbGUtbWluaW1hbC1pbWFnZS13aWR0aCcsXHJcbiAgICAgIG5hbWU6ICdDeWNsZSBiZXR3ZWVuIGltYWdlIHdpZHRoIG9wdGlvbnMnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuaW1nV2lkdGggPSBpbWdXaWR0aFN0eWxlc1soaW1nV2lkdGhTdHlsZXMuaW5kZXhPZih0aGlzLnNldHRpbmdzLmltZ1dpZHRoKSArIDEpICUgaW1nV2lkdGhTdHlsZXMubGVuZ3RoXTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ2N5Y2xlLW1pbmltYWwtaWZyYW1lLXdpZHRoJyxcclxuICAgICAgbmFtZTogJ0N5Y2xlIGJldHdlZW4gaWZyYW1lIHdpZHRoIG9wdGlvbnMnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuaWZyYW1lV2lkdGggPSBpZnJhbWVXaWR0aFN0eWxlc1soaWZyYW1lV2lkdGhTdHlsZXMuaW5kZXhPZih0aGlzLnNldHRpbmdzLmlmcmFtZVdpZHRoKSArIDEpICUgaWZyYW1lV2lkdGhTdHlsZXMubGVuZ3RoXTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ2N5Y2xlLW1pbmltYWwtY2hhcnQtd2lkdGgnLFxyXG4gICAgICBuYW1lOiAnQ3ljbGUgYmV0d2VlbiBjaGFydCB3aWR0aCBvcHRpb25zJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmNoYXJ0V2lkdGggPSBjaGFydFdpZHRoU3R5bGVzWyhjaGFydFdpZHRoU3R5bGVzLmluZGV4T2YodGhpcy5zZXR0aW5ncy5jaGFydFdpZHRoKSArIDEpICUgY2hhcnRXaWR0aFN0eWxlcy5sZW5ndGhdO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAnY3ljbGUtbWluaW1hbC1tYXAtd2lkdGgnLFxyXG4gICAgICBuYW1lOiAnQ3ljbGUgYmV0d2VlbiBtYXAgd2lkdGggb3B0aW9ucycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5tYXBXaWR0aCA9IG1hcFdpZHRoU3R5bGVzWyhtYXBXaWR0aFN0eWxlcy5pbmRleE9mKHRoaXMuc2V0dGluZ3MubWFwV2lkdGgpICsgMSkgJSBtYXBXaWR0aFN0eWxlcy5sZW5ndGhdO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtaW1nLWdyaWQnLFxyXG4gICAgICBuYW1lOiAnVG9nZ2xlIGltYWdlIGdyaWRzJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmltZ0dyaWQgPSAhdGhpcy5zZXR0aW5ncy5pbWdHcmlkO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtc3dpdGNoJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBiZXR3ZWVuIGxpZ2h0IGFuZCBkYXJrIG1vZGUnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MudGhlbWUgPSB0aGVtZVsodGhlbWUuaW5kZXhPZih0aGlzLnNldHRpbmdzLnRoZW1lKSArIDEpICUgdGhlbWUubGVuZ3RoXTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVGhlbWUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1saWdodC1kZWZhdWx0JyxcclxuICAgICAgbmFtZTogJ1VzZSBsaWdodCBtb2RlIChkZWZhdWx0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFN0eWxlID0gJ21pbmltYWwtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtbGlnaHQtd2hpdGUnLFxyXG4gICAgICBuYW1lOiAnVXNlIGxpZ2h0IG1vZGUgKGFsbCB3aGl0ZSknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTdHlsZSA9ICdtaW5pbWFsLWxpZ2h0LXdoaXRlJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWxpZ2h0LXRvbmFsJyxcclxuICAgICAgbmFtZTogJ1VzZSBsaWdodCBtb2RlIChsb3cgY29udHJhc3QpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U3R5bGUgPSAnbWluaW1hbC1saWdodC10b25hbCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1saWdodC1jb250cmFzdCcsXHJcbiAgICAgIG5hbWU6ICdVc2UgbGlnaHQgbW9kZSAoaGlnaCBjb250cmFzdCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTdHlsZSA9ICdtaW5pbWFsLWxpZ2h0LWNvbnRyYXN0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWRhcmstZGVmYXVsdCcsXHJcbiAgICAgIG5hbWU6ICdVc2UgZGFyayBtb2RlIChkZWZhdWx0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU3R5bGUgPSAnbWluaW1hbC1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZGFyay10b25hbCcsXHJcbiAgICAgIG5hbWU6ICdVc2UgZGFyayBtb2RlIChsb3cgY29udHJhc3QpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTdHlsZSA9ICdtaW5pbWFsLWRhcmstdG9uYWwnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1kYXJrLWJsYWNrJyxcclxuICAgICAgbmFtZTogJ1VzZSBkYXJrIG1vZGUgKHRydWUgYmxhY2spJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTdHlsZSA9ICdtaW5pbWFsLWRhcmstYmxhY2snO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1hdG9tLWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gQXRvbSAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtYXRvbS1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtYXl1LWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gQXl1IChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1heXUtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWNhdHBwdWNjaW4tbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBDYXRwcHVjY2luIChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1jYXRwcHVjY2luLWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1kZWZhdWx0LWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gZGVmYXVsdCAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtZGVmYXVsdC1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZ3J1dmJveC1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIEdydXZib3ggKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLWdydXZib3gtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWVpbmstbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBFLWluayAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtZWluay1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZXZlcmZvcmVzdC1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIEV2ZXJmb3Jlc3QgKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLWV2ZXJmb3Jlc3QtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWZsZXhva2ktbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBGbGV4b2tpIChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1mbGV4b2tpLWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1tYWNvcy1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIG1hY09TIChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1tYWNvcy1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtbm90aW9uLWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gU2t5IChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1ub3Rpb24tbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLW5vcmQtbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBOb3JkIChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1ub3JkLWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1yb3NlLXBpbmUtbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBSb3NcdTAwRTkgUGluZSAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtcm9zZS1waW5lLWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1zb2xhcml6ZWQtbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBTb2xhcml6ZWQgKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLXNvbGFyaXplZC1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtdGhpbmdzLWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gVGhpbmdzIChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC10aGluZ3MtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWF0b20tZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gQXRvbSAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWF0b20tZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWF5dS1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBkYXJrIGNvbG9yIHNjaGVtZSB0byBBeXUgKGRhcmspJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUgPSAnbWluaW1hbC1heXUtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWNhdHBwdWNjaW4tZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gQ2F0cHB1Y2NpbiAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWNhdHBwdWNjaW4tZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWRyYWN1bGEtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gRHJhY3VsYSAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWRyYWN1bGEtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWRlZmF1bHQtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gZGVmYXVsdCAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWRlZmF1bHQtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWVpbmstZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gRS1pbmsgKGRhcmspJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUgPSAnbWluaW1hbC1laW5rLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1ldmVyZm9yZXN0LWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGRhcmsgY29sb3Igc2NoZW1lIHRvIEV2ZXJmb3Jlc3QgKGRhcmspJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUgPSAnbWluaW1hbC1ldmVyZm9yZXN0LWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1mbGV4b2tpLWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGRhcmsgY29sb3Igc2NoZW1lIHRvIEZsZXhva2kgKGRhcmspJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUgPSAnbWluaW1hbC1mbGV4b2tpLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1ncnV2Ym94LWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGRhcmsgY29sb3Igc2NoZW1lIHRvIEdydXZib3ggKGRhcmspJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUgPSAnbWluaW1hbC1ncnV2Ym94LWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1tYWNvcy1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBkYXJrIGNvbG9yIHNjaGVtZSB0byBtYWNPUyAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLW1hY29zLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1ub3JkLWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGRhcmsgY29sb3Igc2NoZW1lIHRvIE5vcmQgKGRhcmspJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUgPSAnbWluaW1hbC1ub3JkLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1ub3Rpb24tZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gU2t5IChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtbm90aW9uLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1yb3NlLXBpbmUtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gUm9zXHUwMEU5IFBpbmUgKGRhcmspJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUgPSAnbWluaW1hbC1yb3NlLXBpbmUtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLXNvbGFyaXplZC1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBkYXJrIGNvbG9yIHNjaGVtZSB0byBTb2xhcml6ZWQgKGRhcmspJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUgPSAnbWluaW1hbC1zb2xhcml6ZWQtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLXRoaW5ncy1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBkYXJrIGNvbG9yIHNjaGVtZSB0byBUaGluZ3MgKGRhcmspJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUgPSAnbWluaW1hbC10aGluZ3MtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWRldi1ibG9jay13aWR0aCcsXHJcbiAgICAgIG5hbWU6ICdEZXYgXHUyMDE0IFNob3cgYmxvY2sgd2lkdGhzJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRldkJsb2NrV2lkdGggPSAhdGhpcy5zZXR0aW5ncy5kZXZCbG9ja1dpZHRoO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucmVmcmVzaCgpXHJcbiAgfVxyXG5cclxuICBvbnVubG9hZCgpIHtcclxuICAgIGNvbnNvbGUubG9nKCdVbmxvYWRpbmcgTWluaW1hbCBUaGVtZSBTZXR0aW5ncyBwbHVnaW4nKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGxvYWRTZXR0aW5ncygpIHtcclxuICAgIHRoaXMuc2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKERFRkFVTFRfU0VUVElOR1MsIGF3YWl0IHRoaXMubG9hZERhdGEoKSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzYXZlU2V0dGluZ3MoKSB7XHJcbiAgICBhd2FpdCB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gIH1cclxuXHJcbiAgLy8gcmVmcmVzaCBmdW5jdGlvbiBmb3Igd2hlbiB3ZSBjaGFuZ2Ugc2V0dGluZ3NcclxuICByZWZyZXNoKCkge1xyXG4gICAgLy8gcmUtbG9hZCB0aGUgc3R5bGVcclxuICAgIHRoaXMudXBkYXRlU3R5bGUoKVxyXG4gIH1cclxuXHJcbiAgLy8gYWRkIHRoZSBzdHlsaW5nIGVsZW1lbnRzIHdlIG5lZWRcclxuICBhZGRTdHlsZSgpIHtcclxuICAgIC8vIGFkZCBhIGNzcyBibG9jayBmb3Igb3VyIHNldHRpbmdzLWRlcGVuZGVudCBzdHlsZXNcclxuICAgIGNvbnN0IGNzcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XHJcbiAgICBjc3MuaWQgPSAnbWluaW1hbC10aGVtZSc7XHJcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF0uYXBwZW5kQ2hpbGQoY3NzKTtcclxuXHJcbiAgICAvLyBhZGQgdGhlIG1haW4gY2xhc3NcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnbWluaW1hbC10aGVtZScpO1xyXG5cclxuICAgIC8vIHVwZGF0ZSB0aGUgc3R5bGUgd2l0aCB0aGUgc2V0dGluZ3MtZGVwZW5kZW50IHN0eWxlc1xyXG4gICAgdGhpcy51cGRhdGVTdHlsZSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0Rm9udFNpemUoKSB7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICB0aGlzLmFwcC52YXVsdC5zZXRDb25maWcoJ2Jhc2VGb250U2l6ZScsIHRoaXMuc2V0dGluZ3MudGV4dE5vcm1hbCk7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICB0aGlzLmFwcC51cGRhdGVGb250U2l6ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gdXBkYXRlIHRoZSBzdHlsZXMgKGF0IHRoZSBzdGFydCwgb3IgYXMgdGhlIHJlc3VsdCBvZiBhIHNldHRpbmdzIGNoYW5nZSlcclxuICB1cGRhdGVTdHlsZSgpIHtcclxuICAgIHRoaXMucmVtb3ZlU3R5bGUoKTtcclxuXHJcbiAgICBkb2N1bWVudC5ib2R5LmFkZENsYXNzKHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFkZENsYXNzKHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUpO1xyXG5cclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnYm9yZGVycy1ub25lJywgIXRoaXMuc2V0dGluZ3MuYm9yZGVyc1RvZ2dsZSk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2NvbG9yZnVsLWhlYWRpbmdzJywgdGhpcy5zZXR0aW5ncy5jb2xvcmZ1bEhlYWRpbmdzKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnY29sb3JmdWwtZnJhbWUnLCB0aGlzLnNldHRpbmdzLmNvbG9yZnVsRnJhbWUpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdjb2xvcmZ1bC1hY3RpdmUnLCB0aGlzLnNldHRpbmdzLmNvbG9yZnVsQWN0aXZlU3RhdGVzKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnbWluaW1hbC1mb2N1cy1tb2RlJywgdGhpcy5zZXR0aW5ncy5mb2N1c01vZGUpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdsaW5rcy1pbnQtb24nLCB0aGlzLnNldHRpbmdzLnVuZGVybGluZUludGVybmFsKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnbGlua3MtZXh0LW9uJywgdGhpcy5zZXR0aW5ncy51bmRlcmxpbmVFeHRlcm5hbCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ3N5c3RlbS1zaGFkZScsIHRoaXMuc2V0dGluZ3MudXNlU3lzdGVtVGhlbWUpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdmdWxsLXdpZHRoLW1lZGlhJywgdGhpcy5zZXR0aW5ncy5mdWxsV2lkdGhNZWRpYSk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2ltZy1ncmlkJywgdGhpcy5zZXR0aW5ncy5pbWdHcmlkKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnbWluaW1hbC1kZXYtYmxvY2std2lkdGgnLCB0aGlzLnNldHRpbmdzLmRldkJsb2NrV2lkdGgpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdtaW5pbWFsLXN0YXR1cy1vZmYnLCAhdGhpcy5zZXR0aW5ncy5taW5pbWFsU3RhdHVzKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnZnVsbC1maWxlLW5hbWVzJywgIXRoaXMuc2V0dGluZ3MudHJpbU5hbWVzKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnbGFiZWxlZC1uYXYnLCB0aGlzLnNldHRpbmdzLmxhYmVsZWROYXYpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdtaW5pbWFsLWZvbGRpbmcnLCB0aGlzLnNldHRpbmdzLmZvbGRpbmcpO1xyXG5cclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2xhc3MoJ3RhYmxlLXdpZGUnLCd0YWJsZS1tYXgnLCd0YWJsZS0xMDAnLCd0YWJsZS1kZWZhdWx0LXdpZHRoJyxcclxuICAgICAgJ2lmcmFtZS13aWRlJywnaWZyYW1lLW1heCcsJ2lmcmFtZS0xMDAnLCdpZnJhbWUtZGVmYXVsdC13aWR0aCcsXHJcbiAgICAgICdpbWctd2lkZScsJ2ltZy1tYXgnLCdpbWctMTAwJywnaW1nLWRlZmF1bHQtd2lkdGgnLFxyXG4gICAgICAnY2hhcnQtd2lkZScsJ2NoYXJ0LW1heCcsJ2NoYXJ0LTEwMCcsJ2NoYXJ0LWRlZmF1bHQtd2lkdGgnLFxyXG4gICAgICAnbWFwLXdpZGUnLCdtYXAtbWF4JywnbWFwLTEwMCcsJ21hcC1kZWZhdWx0LXdpZHRoJyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFkZENsYXNzKHRoaXMuc2V0dGluZ3MuY2hhcnRXaWR0aCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFkZENsYXNzKHRoaXMuc2V0dGluZ3MudGFibGVXaWR0aCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFkZENsYXNzKHRoaXMuc2V0dGluZ3MuaW1nV2lkdGgpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmlmcmFtZVdpZHRoKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5tYXBXaWR0aCk7XHJcblxyXG4gICAgLy8gZ2V0IHRoZSBjdXN0b20gY3NzIGVsZW1lbnRcclxuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pbmltYWwtdGhlbWUnKTtcclxuICAgIGlmICghZWwpIHRocm93IFwibWluaW1hbC10aGVtZSBlbGVtZW50IG5vdCBmb3VuZCFcIjtcclxuICAgIGVsc2Uge1xyXG4gICAgICAvLyBzZXQgdGhlIHNldHRpbmdzLWRlcGVuZGVudCBjc3NcclxuICAgICAgZWwuaW5uZXJUZXh0ID0gXHJcbiAgICAgICAgJ2JvZHkubWluaW1hbC10aGVtZXsnXHJcbiAgICAgICAgKyAnLS1mb250LXVpLXNtYWxsOicgKyB0aGlzLnNldHRpbmdzLnRleHRTbWFsbCArICdweDsnXHJcbiAgICAgICAgKyAnLS1saW5lLWhlaWdodDonICsgdGhpcy5zZXR0aW5ncy5saW5lSGVpZ2h0ICsgJzsnXHJcbiAgICAgICAgKyAnLS1saW5lLXdpZHRoOicgKyB0aGlzLnNldHRpbmdzLmxpbmVXaWR0aCArICdyZW07J1xyXG4gICAgICAgICsgJy0tbGluZS13aWR0aC13aWRlOicgKyB0aGlzLnNldHRpbmdzLmxpbmVXaWR0aFdpZGUgKyAncmVtOydcclxuICAgICAgICArICctLW1heC13aWR0aDonICsgdGhpcy5zZXR0aW5ncy5tYXhXaWR0aCArICclOydcclxuICAgICAgICArICctLWZvbnQtZWRpdG9yLW92ZXJyaWRlOicgKyB0aGlzLnNldHRpbmdzLmVkaXRvckZvbnQgKyAnOyc7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcmVmcmVzaFN5c3RlbVRoZW1lKCkge1xyXG4gICAgY29uc3QgaXNEYXJrTW9kZSA9IHdpbmRvdy5tYXRjaE1lZGlhICYmIHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJykubWF0Y2hlc1xyXG5cclxuICAgIGlmIChpc0RhcmtNb2RlICYmIHRoaXMuc2V0dGluZ3MudXNlU3lzdGVtVGhlbWUpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnRGFyayBtb2RlIGFjdGl2ZScpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKClcclxuXHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZXR0aW5ncy51c2VTeXN0ZW1UaGVtZSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdMaWdodCBtb2RlIGFjdGl2ZScpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpXHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZURhcmtTdHlsZSgpIHtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2xhc3MoXHJcbiAgICAgICd0aGVtZS1saWdodCcsXHJcbiAgICAgICdtaW5pbWFsLWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1kYXJrLXRvbmFsJyxcclxuICAgICAgJ21pbmltYWwtZGFyay1ibGFjaydcclxuICAgICk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFkZENsYXNzKHRoaXMuc2V0dGluZ3MuZGFya1N0eWxlKTtcclxuXHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICB0aGlzLmFwcC5zZXRUaGVtZSgnb2JzaWRpYW4nKTtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMuYXBwLnZhdWx0LnNldENvbmZpZygndGhlbWUnLCAnb2JzaWRpYW4nKTtcclxuICAgIHRoaXMuYXBwLndvcmtzcGFjZS50cmlnZ2VyKCdjc3MtY2hhbmdlJyk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVMaWdodFN0eWxlKCkge1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDbGFzcyhcclxuICAgICAgJ3RoZW1lLWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1saWdodCcsXHJcbiAgICAgICdtaW5pbWFsLWxpZ2h0LXRvbmFsJyxcclxuICAgICAgJ21pbmltYWwtbGlnaHQtY29udHJhc3QnLFxyXG4gICAgICAnbWluaW1hbC1saWdodC13aGl0ZSdcclxuICAgICk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFkZENsYXNzKHRoaXMuc2V0dGluZ3MubGlnaHRTdHlsZSk7XHJcblxyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5hcHAuc2V0VGhlbWUoJ21vb25zdG9uZScpO1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5hcHAudmF1bHQuc2V0Q29uZmlnKCd0aGVtZScsICdtb29uc3RvbmUnKTtcclxuICAgIHRoaXMuYXBwLndvcmtzcGFjZS50cmlnZ2VyKCdjc3MtY2hhbmdlJyk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVEYXJrU2NoZW1lKCkge1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDbGFzcyhcclxuICAgICAgJ21pbmltYWwtYXRvbS1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtYXl1LWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1jYXRwcHVjY2luLWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1kZWZhdWx0LWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1kcmFjdWxhLWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1laW5rLWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1ldmVyZm9yZXN0LWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1mbGV4b2tpLWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1ncnV2Ym94LWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1tYWNvcy1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtbm9yZC1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtbm90aW9uLWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1yb3NlLXBpbmUtZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLXNvbGFyaXplZC1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtdGhpbmdzLWRhcmsnXHJcbiAgICApO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlTGlnaHRTY2hlbWUoKSB7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNsYXNzKFxyXG4gICAgICAnbWluaW1hbC1hdG9tLWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtYXl1LWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtY2F0cHB1Y2Npbi1saWdodCcsXHJcbiAgICAgICdtaW5pbWFsLWRlZmF1bHQtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1laW5rLWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtZXZlcmZvcmVzdC1saWdodCcsXHJcbiAgICAgICdtaW5pbWFsLWZsZXhva2ktbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1ncnV2Ym94LWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtbWFjb3MtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1ub3JkLWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtbm90aW9uLWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtcm9zZS1waW5lLWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtc29sYXJpemVkLWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtdGhpbmdzLWxpZ2h0J1xyXG4gICAgKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVUaGVtZSgpIHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMuYXBwLnNldFRoZW1lKHRoaXMuc2V0dGluZ3MudGhlbWUpO1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5hcHAudmF1bHQuc2V0Q29uZmlnKCd0aGVtZScsIHRoaXMuc2V0dGluZ3MudGhlbWUpO1xyXG4gICAgdGhpcy5hcHAud29ya3NwYWNlLnRyaWdnZXIoJ2Nzcy1jaGFuZ2UnKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVN0eWxlKCkge1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDbGFzcygnbWluaW1hbC1saWdodCcsJ21pbmltYWwtbGlnaHQtdG9uYWwnLCdtaW5pbWFsLWxpZ2h0LWNvbnRyYXN0JywnbWluaW1hbC1saWdodC13aGl0ZScsJ21pbmltYWwtZGFyaycsJ21pbmltYWwtZGFyay10b25hbCcsJ21pbmltYWwtZGFyay1ibGFjaycpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmxpZ2h0U3R5bGUsdGhpcy5zZXR0aW5ncy5kYXJrU3R5bGUpO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbmludGVyZmFjZSBNaW5pbWFsU2V0dGluZ3Mge1xyXG4gIHRoZW1lOiBzdHJpbmc7XHJcbiAgbGlnaHRTdHlsZTogc3RyaW5nO1xyXG4gIGRhcmtTdHlsZTogc3RyaW5nO1xyXG4gIGxpZ2h0U2NoZW1lOiBzdHJpbmc7XHJcbiAgZGFya1NjaGVtZTogc3RyaW5nO1xyXG4gIGVkaXRvckZvbnQ6IHN0cmluZztcclxuICBjb2xvcmZ1bEhlYWRpbmdzOiBib29sZWFuO1xyXG4gIGNvbG9yZnVsRnJhbWU6IGJvb2xlYW47XHJcbiAgY29sb3JmdWxBY3RpdmVTdGF0ZXM6IGJvb2xlYW4sXHJcbiAgdHJpbU5hbWVzOiBib29sZWFuO1xyXG4gIGxhYmVsZWROYXY6IGJvb2xlYW47XHJcbiAgYm9yZGVyc1RvZ2dsZTogYm9vbGVhbjtcclxuICBmb2N1c01vZGU6IGJvb2xlYW47XHJcbiAgbGluZUhlaWdodDogbnVtYmVyO1xyXG4gIGxpbmVXaWR0aDogbnVtYmVyO1xyXG4gIGxpbmVXaWR0aFdpZGU6IG51bWJlcjtcclxuICBtYXhXaWR0aDogbnVtYmVyO1xyXG4gIGltZ0dyaWQ6IGJvb2xlYW47XHJcbiAgZGV2QmxvY2tXaWR0aDogYm9vbGVhbjtcclxuICB0YWJsZVdpZHRoOiBzdHJpbmc7XHJcbiAgaWZyYW1lV2lkdGg6IHN0cmluZztcclxuICBpbWdXaWR0aDogc3RyaW5nO1xyXG4gIGNoYXJ0V2lkdGg6IHN0cmluZztcclxuICBtYXBXaWR0aDogc3RyaW5nO1xyXG4gIGZ1bGxXaWR0aE1lZGlhOiBib29sZWFuLFxyXG4gIG1pbmltYWxTdGF0dXM6IGJvb2xlYW4sXHJcbiAgdGV4dE5vcm1hbDogbnVtYmVyO1xyXG4gIHRleHRTbWFsbDogbnVtYmVyO1xyXG4gIHVuZGVybGluZUludGVybmFsOiBib29sZWFuO1xyXG4gIHVuZGVybGluZUV4dGVybmFsOiBib29sZWFuO1xyXG4gIHVzZVN5c3RlbVRoZW1lOiBib29sZWFuO1xyXG4gIGZvbGRpbmc6IGJvb2xlYW47XHJcbiAgbGluZU51bWJlcnM6IGJvb2xlYW47XHJcbiAgcmVhZGFibGVMaW5lTGVuZ3RoOiBib29sZWFuO1xyXG59XHJcblxyXG5jb25zdCBERUZBVUxUX1NFVFRJTkdTOiBNaW5pbWFsU2V0dGluZ3MgPSB7XHJcbiAgdGhlbWU6ICdtb29uc3RvbmUnLFxyXG4gIGxpZ2h0U3R5bGU6ICdtaW5pbWFsLWxpZ2h0JyxcclxuICBkYXJrU3R5bGU6ICdtaW5pbWFsLWRhcmsnLFxyXG4gIGxpZ2h0U2NoZW1lOiAnbWluaW1hbC1kZWZhdWx0LWxpZ2h0JyxcclxuICBkYXJrU2NoZW1lOiAnbWluaW1hbC1kZWZhdWx0LWRhcmsnLFxyXG4gIGVkaXRvckZvbnQ6ICcnLFxyXG4gIGxpbmVIZWlnaHQ6IDEuNSxcclxuICBsaW5lV2lkdGg6IDQwLFxyXG4gIGxpbmVXaWR0aFdpZGU6IDUwLFxyXG4gIG1heFdpZHRoOiA4OCxcclxuICB0ZXh0Tm9ybWFsOiAxNixcclxuICB0ZXh0U21hbGw6IDEzLFxyXG4gIGltZ0dyaWQ6IGZhbHNlLFxyXG4gIGltZ1dpZHRoOiAnaW1nLWRlZmF1bHQtd2lkdGgnLFxyXG4gIHRhYmxlV2lkdGg6ICd0YWJsZS1kZWZhdWx0LXdpZHRoJyxcclxuICBpZnJhbWVXaWR0aDogJ2lmcmFtZS1kZWZhdWx0LXdpZHRoJyxcclxuICBtYXBXaWR0aDogJ21hcC1kZWZhdWx0LXdpZHRoJyxcclxuICBjaGFydFdpZHRoOiAnY2hhcnQtZGVmYXVsdC13aWR0aCcsXHJcbiAgY29sb3JmdWxIZWFkaW5nczogZmFsc2UsXHJcbiAgY29sb3JmdWxGcmFtZTogZmFsc2UsXHJcbiAgY29sb3JmdWxBY3RpdmVTdGF0ZXM6IGZhbHNlLFxyXG4gIHRyaW1OYW1lczogdHJ1ZSxcclxuICBsYWJlbGVkTmF2OiBmYWxzZSxcclxuICBmdWxsV2lkdGhNZWRpYTogdHJ1ZSxcclxuICBib3JkZXJzVG9nZ2xlOiB0cnVlLFxyXG4gIG1pbmltYWxTdGF0dXM6IHRydWUsXHJcbiAgZm9jdXNNb2RlOiBmYWxzZSxcclxuICB1bmRlcmxpbmVJbnRlcm5hbDogdHJ1ZSxcclxuICB1bmRlcmxpbmVFeHRlcm5hbDogdHJ1ZSxcclxuICB1c2VTeXN0ZW1UaGVtZTogZmFsc2UsXHJcbiAgZm9sZGluZzogdHJ1ZSxcclxuICBsaW5lTnVtYmVyczogZmFsc2UsXHJcbiAgcmVhZGFibGVMaW5lTGVuZ3RoOiBmYWxzZSxcclxuICBkZXZCbG9ja1dpZHRoOiBmYWxzZSxcclxufVxyXG5cclxuY2xhc3MgTWluaW1hbFNldHRpbmdUYWIgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcclxuXHJcblxyXG4gIHBsdWdpbjogTWluaW1hbFRoZW1lO1xyXG4gIGNvbnN0cnVjdG9yKGFwcDogQXBwLCBwbHVnaW46IE1pbmltYWxUaGVtZSkge1xyXG4gICAgc3VwZXIoYXBwLCBwbHVnaW4pO1xyXG4gICAgdGhpcy5wbHVnaW4gPSBwbHVnaW47XHJcbiAgfVxyXG5cclxuICBkaXNwbGF5KCk6IHZvaWQge1xyXG4gICAgbGV0IHtjb250YWluZXJFbH0gPSB0aGlzO1xyXG5cclxuICAgIGNvbnRhaW5lckVsLmVtcHR5KCk7XHJcblxyXG4gICAgY29uc3QgY29sb3JTZWN0aW9uID0gY29udGFpbmVyRWwuY3JlYXRlRWwoJ2RpdicsIHtjbHM6ICdzZXR0aW5nLWl0ZW0gc2V0dGluZy1pdGVtLWhlYWRpbmcnfSk7XHJcblxyXG4gICAgY29uc3QgY29sb3JTZWN0aW9uSW5mbyA9ICBjb2xvclNlY3Rpb24uY3JlYXRlRWwoJ2RpdicsIHtjbHM6ICdzZXR0aW5nLWl0ZW0taW5mbyd9KTtcclxuXHJcbiAgICBjb2xvclNlY3Rpb25JbmZvLmNyZWF0ZUVsKCdkaXYnLCB7dGV4dDogJ0NvbG9yIHNjaGVtZScsIGNsczogJ3NldHRpbmctaXRlbS1uYW1lJ30pO1xyXG5cclxuICAgIGNvbnN0IGNvbG9yRGVzYyA9IGNvbG9yU2VjdGlvbkluZm8uY3JlYXRlRWwoJ2RpdicsIHtjbHM6ICdzZXR0aW5nLWl0ZW0tZGVzY3JpcHRpb24nfSk7XHJcblxyXG4gICAgICBjb2xvckRlc2MuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgY3JlYXRlRWwoJ3NwYW4nLCB7XHJcbiAgICAgICAgICB0ZXh0OiAnVG8gY3JlYXRlIGEgY3VzdG9tIGNvbG9yIHNjaGVtZSB1c2UgdGhlICdcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgY29sb3JEZXNjLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdhJywge1xyXG4gICAgICAgICAgdGV4dDogXCJTdHlsZSBTZXR0aW5nc1wiLFxyXG4gICAgICAgICAgaHJlZjogXCJvYnNpZGlhbjovL3Nob3ctcGx1Z2luP2lkPW9ic2lkaWFuLXN0eWxlLXNldHRpbmdzXCIsXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgY29sb3JEZXNjLmFwcGVuZFRleHQoJyBwbHVnaW4uIFNlZSAnKTtcclxuXHJcbiAgICAgIGNvbG9yRGVzYy5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnYScsIHtcclxuICAgICAgICAgIHRleHQ6IFwiZG9jdW1lbnRhdGlvblwiLFxyXG4gICAgICAgICAgaHJlZjogXCJodHRwczovL21pbmltYWwuZ3VpZGUvZmVhdHVyZXMvY29sb3Itc2NoZW1lc1wiLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbG9yRGVzYy5hcHBlbmRUZXh0KCcgZm9yIGRldGFpbHMuJyk7XHJcblxyXG4gICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgICAuc2V0TmFtZSgnTGlnaHQgbW9kZSBjb2xvciBzY2hlbWUnKVxyXG4gICAgICAgIC5zZXREZXNjKCdQcmVzZXQgY29sb3Igb3B0aW9ucyBmb3IgbGlnaHQgbW9kZS4nKVxyXG4gICAgICAgIC5hZGREcm9wZG93bihkcm9wZG93biA9PiBkcm9wZG93blxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1kZWZhdWx0LWxpZ2h0JywnRGVmYXVsdCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWF0b20tbGlnaHQnLCdBdG9tJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtYXl1LWxpZ2h0JywnQXl1JylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtY2F0cHB1Y2Npbi1saWdodCcsJ0NhdHBwdWNjaW4nKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1laW5rLWxpZ2h0JywnRS1pbmsgKGJldGEpJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZXZlcmZvcmVzdC1saWdodCcsJ0V2ZXJmb3Jlc3QnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1mbGV4b2tpLWxpZ2h0JywnRmxleG9raScpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWdydXZib3gtbGlnaHQnLCdHcnV2Ym94JylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtbWFjb3MtbGlnaHQnLCdtYWNPUycpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLW5vcmQtbGlnaHQnLCdOb3JkJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtcm9zZS1waW5lLWxpZ2h0JywnUm9zXHUwMEU5IFBpbmUnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1ub3Rpb24tbGlnaHQnLCdTa3knKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1zb2xhcml6ZWQtbGlnaHQnLCdTb2xhcml6ZWQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC10aGluZ3MtbGlnaHQnLCdUaGluZ3MnKVxyXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmxpZ2h0U2NoZW1lKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAgIC5zZXROYW1lKCdMaWdodCBtb2RlIGJhY2tncm91bmQgY29udHJhc3QnKVxyXG4gICAgICAgIC5zZXREZXNjKCdMZXZlbCBvZiBjb250cmFzdCBiZXR3ZWVuIHNpZGViYXIgYW5kIG1haW4gY29udGVudC4nKVxyXG4gICAgICAgIC5hZGREcm9wZG93bihkcm9wZG93biA9PiBkcm9wZG93blxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1saWdodCcsJ0RlZmF1bHQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1saWdodC13aGl0ZScsJ0FsbCB3aGl0ZScpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWxpZ2h0LXRvbmFsJywnTG93IGNvbnRyYXN0JylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtbGlnaHQtY29udHJhc3QnLCdIaWdoIGNvbnRyYXN0JylcclxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5saWdodFN0eWxlKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmxpZ2h0U3R5bGUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgICAuc2V0TmFtZSgnRGFyayBtb2RlIGNvbG9yIHNjaGVtZScpXHJcbiAgICAgICAgLnNldERlc2MoJ1ByZXNldCBjb2xvcnMgb3B0aW9ucyBmb3IgZGFyayBtb2RlLicpXHJcbiAgICAgICAgLmFkZERyb3Bkb3duKGRyb3Bkb3duID0+IGRyb3Bkb3duXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWRlZmF1bHQtZGFyaycsJ0RlZmF1bHQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1hdG9tLWRhcmsnLCdBdG9tJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtYXl1LWRhcmsnLCdBeXUnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1jYXRwcHVjY2luLWRhcmsnLCdDYXRwcHVjY2luJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZHJhY3VsYS1kYXJrJywnRHJhY3VsYScpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWVpbmstZGFyaycsJ0UtaW5rIChiZXRhKScpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWV2ZXJmb3Jlc3QtZGFyaycsJ0V2ZXJmb3Jlc3QnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1mbGV4b2tpLWRhcmsnLCdGbGV4b2tpJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZ3J1dmJveC1kYXJrJywnR3J1dmJveCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLW1hY29zLWRhcmsnLCdtYWNPUycpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLW5vcmQtZGFyaycsJ05vcmQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1yb3NlLXBpbmUtZGFyaycsJ1Jvc1x1MDBFOSBQaW5lJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtbm90aW9uLWRhcmsnLCdTa3knKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1zb2xhcml6ZWQtZGFyaycsJ1NvbGFyaXplZCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLXRoaW5ncy1kYXJrJywnVGhpbmdzJylcclxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5kYXJrU2NoZW1lKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5kYXJrU2NoZW1lID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4udXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgICAgfSkpO1xyXG5cclxuICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgICAgLnNldE5hbWUoJ0RhcmsgbW9kZSBiYWNrZ3JvdW5kIGNvbnRyYXN0JylcclxuICAgICAgICAuc2V0RGVzYygnTGV2ZWwgb2YgY29udHJhc3QgYmV0d2VlbiBzaWRlYmFyIGFuZCBtYWluIGNvbnRlbnQuJylcclxuICAgICAgICAuYWRkRHJvcGRvd24oZHJvcGRvd24gPT4gZHJvcGRvd25cclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZGFyaycsJ0RlZmF1bHQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1kYXJrLXRvbmFsJywnTG93IGNvbnRyYXN0JylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZGFyay1ibGFjaycsJ1RydWUgYmxhY2snKVxyXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmRhcmtTdHlsZSlcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZGFya1N0eWxlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4udXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgICAgICB9KSk7XHJcblxyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2JyJyk7XHJcblxyXG4gICAgY29uc3QgZmVhdHVyZXNTZWN0aW9uID0gY29udGFpbmVyRWwuY3JlYXRlRWwoJ2RpdicsIHtjbHM6ICdzZXR0aW5nLWl0ZW0gc2V0dGluZy1pdGVtLWhlYWRpbmcnfSk7XHJcblxyXG4gICAgY29uc3QgZmVhdHVyZXNTZWN0aW9uSW5mbyA9ICBmZWF0dXJlc1NlY3Rpb24uY3JlYXRlRWwoJ2RpdicsIHtjbHM6ICdzZXR0aW5nLWl0ZW0taW5mbyd9KTtcclxuXHJcbiAgICBmZWF0dXJlc1NlY3Rpb25JbmZvLmNyZWF0ZUVsKCdkaXYnLCB7dGV4dDogJ0ZlYXR1cmVzJywgY2xzOiAnc2V0dGluZy1pdGVtLW5hbWUnfSk7XHJcblxyXG4gICAgY29uc3QgZmVhdHVyZXNTZWN0aW9uRGVzYyA9IGZlYXR1cmVzU2VjdGlvbkluZm8uY3JlYXRlRWwoJ2RpdicsIHtjbHM6ICdzZXR0aW5nLWl0ZW0tZGVzY3JpcHRpb24nfSk7XHJcblxyXG4gICAgICBmZWF0dXJlc1NlY3Rpb25EZXNjLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdzcGFuJywge1xyXG4gICAgICAgICAgdGV4dDogJ1NlZSAnXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICBmZWF0dXJlc1NlY3Rpb25EZXNjLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdhJywge1xyXG4gICAgICAgICAgdGV4dDogXCJkb2N1bWVudGF0aW9uXCIsXHJcbiAgICAgICAgICBocmVmOiBcImh0dHBzOi8vbWluaW1hbC5ndWlkZVwiLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIGZlYXR1cmVzU2VjdGlvbkRlc2MuYXBwZW5kVGV4dCgnIGZvciBkZXRhaWxzLicpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnTWF0Y2ggc3lzdGVtIHNldHRpbmcgZm9yIGxpZ2h0IG9yIGRhcmsgbW9kZScpXHJcbiAgICAgIC5zZXREZXNjKCdBdXRvbWF0aWNhbGx5IHN3aXRjaCBiYXNlZCBvbiB5b3VyIE9TIHNldHRpbmcuJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZVN5c3RlbVRoZW1lKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VTeXN0ZW1UaGVtZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2hTeXN0ZW1UaGVtZSgpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ1RleHQgbGFiZWxzIGZvciBwcmltYXJ5IG5hdmlnYXRpb24nKVxyXG4gICAgICAuc2V0RGVzYygnTmF2aWdhdGlvbiBpdGVtcyBpbiB0aGUgbGVmdCBzaWRlYmFyIHVzZXMgdGV4dCBsYWJlbHMuJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmxhYmVsZWROYXYpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmxhYmVsZWROYXYgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdDb2xvcmZ1bCB3aW5kb3cgZnJhbWUnKVxyXG4gICAgICAuc2V0RGVzYygnVGhlIHRvcCBhcmVhIG9mIHRoZSBhcHAgdXNlcyB5b3VyIGFjY2VudCBjb2xvci4nKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY29sb3JmdWxGcmFtZSlcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY29sb3JmdWxGcmFtZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdDb2xvcmZ1bCBhY3RpdmUgc3RhdGVzJylcclxuICAgICAgLnNldERlc2MoJ0FjdGl2ZSBmaWxlIGFuZCBtZW51IGl0ZW1zIHVzZSB5b3VyIGFjY2VudCBjb2xvci4nKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY29sb3JmdWxBY3RpdmVTdGF0ZXMpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmNvbG9yZnVsQWN0aXZlU3RhdGVzID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0NvbG9yZnVsIGhlYWRpbmdzJylcclxuICAgICAgLnNldERlc2MoJ0hlYWRpbmdzIHVzZSBhIGRpZmZlcmVudCBjb2xvciBmb3IgZWFjaCBzaXplLicpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jb2xvcmZ1bEhlYWRpbmdzKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jb2xvcmZ1bEhlYWRpbmdzID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ01pbmltYWwgc3RhdHVzIGJhcicpXHJcbiAgICAgIC5zZXREZXNjKCdUdXJuIG9mZiB0byB1c2UgZnVsbC13aWR0aCBzdGF0dXMgYmFyLicpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5taW5pbWFsU3RhdHVzKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5taW5pbWFsU3RhdHVzID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSkpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnVHJpbSBmaWxlIG5hbWVzIGluIHNpZGViYXJzJylcclxuICAgICAgLnNldERlc2MoJ1VzZSBlbGxpcHNlcyB0byBmaXQgZmlsZSBuYW1lcyBvbiBhIHNpbmdsZSBsaW5lLicpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy50cmltTmFtZXMpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnRyaW1OYW1lcyA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAgIC5zZXROYW1lKCdXb3Jrc3BhY2UgYm9yZGVycycpXHJcbiAgICAgICAgLnNldERlc2MoJ0Rpc3BsYXkgZGl2aWRlciBsaW5lcyBiZXR3ZWVuIHdvcmtzcGFjZSBlbGVtZW50cy4nKVxyXG4gICAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5ib3JkZXJzVG9nZ2xlKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5ib3JkZXJzVG9nZ2xlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSkpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnRm9jdXMgbW9kZScpXHJcbiAgICAgIC5zZXREZXNjKCdIaWRlIHRhYiBiYXIgYW5kIHN0YXR1cyBiYXIsIGhvdmVyIHRvIGRpc3BsYXkuIENhbiBiZSB0b2dnbGVkIHZpYSBob3RrZXkuJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmZvY3VzTW9kZSlcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZm9jdXNNb2RlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ1VuZGVybGluZSBpbnRlcm5hbCBsaW5rcycpXHJcbiAgICAgIC5zZXREZXNjKCdTaG93IHVuZGVybGluZXMgb24gaW50ZXJuYWwgbGlua3MuJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLnVuZGVybGluZUludGVybmFsKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy51bmRlcmxpbmVJbnRlcm5hbCA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdVbmRlcmxpbmUgZXh0ZXJuYWwgbGlua3MnKVxyXG4gICAgICAuc2V0RGVzYygnU2hvdyB1bmRlcmxpbmVzIG9uIGV4dGVybmFsIGxpbmtzLicpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy51bmRlcmxpbmVFeHRlcm5hbClcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudW5kZXJsaW5lRXh0ZXJuYWwgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnTWF4aW1pemUgbWVkaWEnKVxyXG4gICAgICAuc2V0RGVzYygnSW1hZ2VzIGFuZCB2aWRlb3MgZmlsbCB0aGUgd2lkdGggb2YgdGhlIGxpbmUuJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmZ1bGxXaWR0aE1lZGlhKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5mdWxsV2lkdGhNZWRpYSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnYnInKTtcclxuXHJcbiAgICBjb25zdCBsYXlvdXRTZWN0aW9uID0gY29udGFpbmVyRWwuY3JlYXRlRWwoJ2RpdicsIHtjbHM6ICdzZXR0aW5nLWl0ZW0gc2V0dGluZy1pdGVtLWhlYWRpbmcnfSk7XHJcblxyXG4gICAgY29uc3QgbGF5b3V0U2VjdGlvbkluZm8gPSAgbGF5b3V0U2VjdGlvbi5jcmVhdGVFbCgnZGl2Jywge2NsczogJ3NldHRpbmctaXRlbS1pbmZvJ30pO1xyXG5cclxuICAgIGxheW91dFNlY3Rpb25JbmZvLmNyZWF0ZUVsKCdkaXYnLCB7dGV4dDogJ0xheW91dCcsIGNsczogJ3NldHRpbmctaXRlbS1uYW1lJ30pO1xyXG5cclxuICAgIGNvbnN0IGxheW91dFNlY3Rpb25EZXNjID0gbGF5b3V0U2VjdGlvbkluZm8uY3JlYXRlRWwoJ2RpdicsIHtjbHM6ICdzZXR0aW5nLWl0ZW0tZGVzY3JpcHRpb24nfSk7XHJcblxyXG4gICAgICBsYXlvdXRTZWN0aW9uRGVzYy5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnc3BhbicsIHtcclxuICAgICAgICAgIHRleHQ6ICdUaGVzZSBvcHRpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgb24gYSBwZXItZmlsZSBiYXNpcywgc2VlICdcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgbGF5b3V0U2VjdGlvbkRlc2MuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgY3JlYXRlRWwoJ2EnLCB7XHJcbiAgICAgICAgICB0ZXh0OiBcImRvY3VtZW50YXRpb25cIixcclxuICAgICAgICAgIGhyZWY6IFwiaHR0cHM6Ly9taW5pbWFsLmd1aWRlL2ZlYXR1cmVzL2Jsb2NrLXdpZHRoXCIsXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgbGF5b3V0U2VjdGlvbkRlc2MuYXBwZW5kVGV4dCgnIGZvciBkZXRhaWxzLicpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnSW1hZ2UgZ3JpZHMnKVxyXG4gICAgICAuc2V0RGVzYygnVHVybiBjb25zZWN1dGl2ZSBpbWFnZXMgaW50byBjb2x1bW5zIFx1MjAxNCB0byBtYWtlIGEgbmV3IHJvdywgYWRkIGFuIGV4dHJhIGxpbmUgYnJlYWsgYmV0d2VlbiBpbWFnZXMuJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmltZ0dyaWQpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmltZ0dyaWQgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdDaGFydCB3aWR0aCcpXHJcbiAgICAgIC5zZXREZXNjKCdEZWZhdWx0IHdpZHRoIGZvciBjaGFydCBibG9ja3MuJylcclxuICAgICAgLmFkZERyb3Bkb3duKGRyb3Bkb3duID0+IGRyb3Bkb3duXHJcbiAgICAgICAgLmFkZE9wdGlvbignY2hhcnQtZGVmYXVsdC13aWR0aCcsJ0RlZmF1bHQnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2NoYXJ0LXdpZGUnLCdXaWRlIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2NoYXJ0LW1heCcsJ01heGltdW0gbGluZSB3aWR0aCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignY2hhcnQtMTAwJywnMTAwJSBwYW5lIHdpZHRoJylcclxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY2hhcnRXaWR0aClcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY2hhcnRXaWR0aCA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0lmcmFtZSB3aWR0aCcpXHJcbiAgICAgIC5zZXREZXNjKCdEZWZhdWx0IHdpZHRoIGZvciBpZnJhbWUgYmxvY2tzLicpXHJcbiAgICAgIC5hZGREcm9wZG93bihkcm9wZG93biA9PiBkcm9wZG93blxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2lmcmFtZS1kZWZhdWx0LXdpZHRoJywnRGVmYXVsdCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignaWZyYW1lLXdpZGUnLCdXaWRlIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2lmcmFtZS1tYXgnLCdNYXhpbXVtIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2lmcmFtZS0xMDAnLCcxMDAlIHBhbmUgd2lkdGgnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5pZnJhbWVXaWR0aClcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuaWZyYW1lV2lkdGggPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdJbWFnZSB3aWR0aCcpXHJcbiAgICAgIC5zZXREZXNjKCdEZWZhdWx0IHdpZHRoIGZvciBpbWFnZSBibG9ja3MuJylcclxuICAgICAgLmFkZERyb3Bkb3duKGRyb3Bkb3duID0+IGRyb3Bkb3duXHJcbiAgICAgICAgLmFkZE9wdGlvbignaW1nLWRlZmF1bHQtd2lkdGgnLCdEZWZhdWx0JylcclxuICAgICAgICAuYWRkT3B0aW9uKCdpbWctd2lkZScsJ1dpZGUgbGluZSB3aWR0aCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignaW1nLW1heCcsJ01heGltdW0gbGluZSB3aWR0aCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignaW1nLTEwMCcsJzEwMCUgcGFuZSB3aWR0aCcpXHJcbiAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmltZ1dpZHRoKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5pbWdXaWR0aCA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ01hcCB3aWR0aCcpXHJcbiAgICAgIC5zZXREZXNjKCdEZWZhdWx0IHdpZHRoIGZvciBtYXAgYmxvY2tzLicpXHJcbiAgICAgIC5hZGREcm9wZG93bihkcm9wZG93biA9PiBkcm9wZG93blxyXG4gICAgICAgIC5hZGRPcHRpb24oJ21hcC1kZWZhdWx0LXdpZHRoJywnRGVmYXVsdCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignbWFwLXdpZGUnLCdXaWRlIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ21hcC1tYXgnLCdNYXhpbXVtIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ21hcC0xMDAnLCcxMDAlIHBhbmUgd2lkdGgnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5tYXBXaWR0aClcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubWFwV2lkdGggPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdUYWJsZSB3aWR0aCcpXHJcbiAgICAgIC5zZXREZXNjKCdEZWZhdWx0IHdpZHRoIGZvciB0YWJsZSBhbmQgRGF0YXZpZXcgYmxvY2tzLicpXHJcbiAgICAgIC5hZGREcm9wZG93bihkcm9wZG93biA9PiBkcm9wZG93blxyXG4gICAgICAgIC5hZGRPcHRpb24oJ3RhYmxlLWRlZmF1bHQtd2lkdGgnLCdEZWZhdWx0JylcclxuICAgICAgICAuYWRkT3B0aW9uKCd0YWJsZS13aWRlJywnV2lkZSBsaW5lIHdpZHRoJylcclxuICAgICAgICAuYWRkT3B0aW9uKCd0YWJsZS1tYXgnLCdNYXhpbXVtIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ3RhYmxlLTEwMCcsJzEwMCUgcGFuZSB3aWR0aCcpXHJcbiAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLnRhYmxlV2lkdGgpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnRhYmxlV2lkdGggPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2JyJyk7XHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnZGl2Jywge3RleHQ6ICdUeXBvZ3JhcGh5JywgY2xzOiAnc2V0dGluZy1pdGVtIHNldHRpbmctaXRlbS1oZWFkaW5nJ30pO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnVGV4dCBmb250IHNpemUnKVxyXG4gICAgICAuc2V0RGVzYygnVXNlZCBmb3IgdGhlIG1haW4gdGV4dCAoZGVmYXVsdCAxNikuJylcclxuICAgICAgLmFkZFRleHQodGV4dCA9PiB0ZXh0LnNldFBsYWNlaG9sZGVyKCcxNicpXHJcbiAgICAgICAgLnNldFZhbHVlKCh0aGlzLnBsdWdpbi5zZXR0aW5ncy50ZXh0Tm9ybWFsIHx8ICcnKSArICcnKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnRleHROb3JtYWwgPSBwYXJzZUZsb2F0KHZhbHVlKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldEZvbnRTaXplKCk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnU21hbGwgZm9udCBzaXplJylcclxuICAgICAgLnNldERlc2MoJ1VzZWQgZm9yIHRleHQgaW4gdGhlIHNpZGViYXJzIGFuZCB0YWJzIChkZWZhdWx0IDEzKS4nKVxyXG4gICAgICAuYWRkVGV4dCh0ZXh0ID0+IHRleHQuc2V0UGxhY2Vob2xkZXIoJzEzJylcclxuICAgICAgICAuc2V0VmFsdWUoKHRoaXMucGx1Z2luLnNldHRpbmdzLnRleHRTbWFsbCB8fCAnJykgKyAnJylcclxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy50ZXh0U21hbGwgPSBwYXJzZUZsb2F0KHZhbHVlKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdMaW5lIGhlaWdodCcpXHJcbiAgICAgIC5zZXREZXNjKCdMaW5lIGhlaWdodCBvZiB0ZXh0IChkZWZhdWx0IDEuNSkuJylcclxuICAgICAgLmFkZFRleHQodGV4dCA9PiB0ZXh0LnNldFBsYWNlaG9sZGVyKCcxLjUnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSgodGhpcy5wbHVnaW4uc2V0dGluZ3MubGluZUhlaWdodCB8fCAnJykgKyAnJylcclxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5saW5lSGVpZ2h0ID0gcGFyc2VGbG9hdCh2YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnTm9ybWFsIGxpbmUgd2lkdGgnKVxyXG4gICAgICAuc2V0RGVzYygnTnVtYmVyIG9mIGNoYXJhY3RlcnMgcGVyIGxpbmUgKGRlZmF1bHQgNDApLicpXHJcbiAgICAgIC5hZGRUZXh0KHRleHQgPT4gdGV4dC5zZXRQbGFjZWhvbGRlcignNDAnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSgodGhpcy5wbHVnaW4uc2V0dGluZ3MubGluZVdpZHRoIHx8ICcnKSArICcnKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmxpbmVXaWR0aCA9IHBhcnNlSW50KHZhbHVlLnRyaW0oKSk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnV2lkZSBsaW5lIHdpZHRoJylcclxuICAgICAgLnNldERlc2MoJ051bWJlciBvZiBjaGFyYWN0ZXJzIHBlciBsaW5lIGZvciB3aWRlIGVsZW1lbnRzIChkZWZhdWx0IDUwKS4nKVxyXG4gICAgICAuYWRkVGV4dCh0ZXh0ID0+IHRleHQuc2V0UGxhY2Vob2xkZXIoJzUwJylcclxuICAgICAgICAuc2V0VmFsdWUoKHRoaXMucGx1Z2luLnNldHRpbmdzLmxpbmVXaWR0aFdpZGUgfHwgJycpICsgJycpXHJcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubGluZVdpZHRoV2lkZSA9IHBhcnNlSW50KHZhbHVlLnRyaW0oKSk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnTWF4aW11bSBsaW5lIHdpZHRoICUnKVxyXG4gICAgICAuc2V0RGVzYygnUGVyY2VudGFnZSBvZiBzcGFjZSBpbnNpZGUgYSBwYW5lIHRoYXQgYSBsaW5lIGNhbiBmaWxsIChkZWZhdWx0IDg4KS4nKVxyXG4gICAgICAuYWRkVGV4dCh0ZXh0ID0+IHRleHQuc2V0UGxhY2Vob2xkZXIoJzg4JylcclxuICAgICAgICAuc2V0VmFsdWUoKHRoaXMucGx1Z2luLnNldHRpbmdzLm1heFdpZHRoIHx8ICcnKSArICcnKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLm1heFdpZHRoID0gcGFyc2VJbnQodmFsdWUudHJpbSgpKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICB9KSk7XHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0VkaXRvciBmb250JylcclxuICAgICAgLnNldERlc2MoJ092ZXJyaWRlcyB0aGUgdGV4dCBmb250IGRlZmluZWQgaW4gT2JzaWRpYW4gQXBwZWFyYW5jZSBzZXR0aW5ncyB3aGVuIGluIGVkaXQgbW9kZS4nKVxyXG4gICAgICAuYWRkVGV4dCh0ZXh0ID0+IHRleHQuc2V0UGxhY2Vob2xkZXIoJycpXHJcbiAgICAgICAgLnNldFZhbHVlKCh0aGlzLnBsdWdpbi5zZXR0aW5ncy5lZGl0b3JGb250IHx8ICcnKSArICcnKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmVkaXRvckZvbnQgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gIH1cclxufVxyXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBLHNC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 +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibWFpbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgQXBwLCBXb3Jrc3BhY2UsIE1vZGFsLCBOb3RpY2UsIFBsdWdpbiwgUGx1Z2luU2V0dGluZ1RhYiwgU2V0dGluZyB9IGZyb20gJ29ic2lkaWFuJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1pbmltYWxUaGVtZSBleHRlbmRzIFBsdWdpbiB7XHJcblxyXG4gIHNldHRpbmdzOiBNaW5pbWFsU2V0dGluZ3M7XHJcblxyXG4gIGFzeW5jIG9ubG9hZCgpIHtcclxuXHJcbiAgICBhd2FpdCB0aGlzLmxvYWRTZXR0aW5ncygpO1xyXG5cclxuICAgIHRoaXMuYWRkU2V0dGluZ1RhYihuZXcgTWluaW1hbFNldHRpbmdUYWIodGhpcy5hcHAsIHRoaXMpKTtcclxuXHJcbiAgICB0aGlzLmFkZFN0eWxlKCk7XHJcblxyXG4gICAgLy8gQ2hlY2sgc3RhdGUgb2YgT2JzaWRpYW4gU2V0dGluZ3NcclxuICAgIGxldCBzZXR0aW5nc1VwZGF0ZSA9ICgpID0+IHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBjb25zdCBmb250U2l6ZSA9IHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygnYmFzZUZvbnRTaXplJyk7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3MudGV4dE5vcm1hbCA9IGZvbnRTaXplO1xyXG5cclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBpZiAodGhpcy5hcHAudmF1bHQuZ2V0Q29uZmlnKCdmb2xkSGVhZGluZycpKSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5mb2xkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdGb2xkaW5nIGlzIG9uJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5mb2xkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnRm9sZGluZyBpcyBvZmYnKTtcclxuICAgICAgfVxyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtZm9sZGluZycsIHRoaXMuc2V0dGluZ3MuZm9sZGluZyk7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgaWYgKHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygnc2hvd0xpbmVOdW1iZXInKSkge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGluZU51bWJlcnMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0xpbmUgbnVtYmVycyBhcmUgb24nKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpbmVOdW1iZXJzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnTGluZSBudW1iZXJzIGFyZSBvZmYnKTtcclxuICAgICAgfVxyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtbGluZS1udW1zJywgdGhpcy5zZXR0aW5ncy5saW5lTnVtYmVycyk7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgaWYgKHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygncmVhZGFibGVMaW5lTGVuZ3RoJykpIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLnJlYWRhYmxlTGluZUxlbmd0aCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnUmVhZGFibGUgbGluZSBsZW5ndGggaXMgb24nKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLnJlYWRhYmxlTGluZUxlbmd0aCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1JlYWRhYmxlIGxpbmUgbGVuZ3RoIGlzIG9mZicpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtcmVhZGFibGUnLCB0aGlzLnNldHRpbmdzLnJlYWRhYmxlTGluZUxlbmd0aCk7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnbWluaW1hbC1yZWFkYWJsZS1vZmYnLCAhdGhpcy5zZXR0aW5ncy5yZWFkYWJsZUxpbmVMZW5ndGgpO1xyXG4gIFxyXG4gICAgfVxyXG4gIFxyXG4gICAgbGV0IHNpZGViYXJVcGRhdGUgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHNpZGViYXJFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ21vZC1sZWZ0LXNwbGl0JylbMF07XHJcbiAgICAgIGNvbnN0IHJpYmJvbkVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc2lkZS1kb2NrLXJpYmJvbicpWzBdO1xyXG4gICAgICBpZiAoc2lkZWJhckVsICYmIHJpYmJvbkVsICYmIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCd0aGVtZS1saWdodCcpICYmIHRoaXMuc2V0dGluZ3MubGlnaHRTdHlsZSA9PSAnbWluaW1hbC1saWdodC1jb250cmFzdCcpIHtcclxuICAgICAgICBzaWRlYmFyRWwuYWRkQ2xhc3MoJ3RoZW1lLWRhcmsnKTtcclxuICAgICAgICByaWJib25FbC5hZGRDbGFzcygndGhlbWUtZGFyaycpO1xyXG4gICAgICB9IGVsc2UgaWYgKHNpZGViYXJFbCAmJiByaWJib25FbCkge1xyXG4gICAgICAgIHNpZGViYXJFbC5yZW1vdmVDbGFzcygndGhlbWUtZGFyaycpOyBcclxuICAgICAgICByaWJib25FbC5yZW1vdmVDbGFzcygndGhlbWUtZGFyaycpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5yZWdpc3RlckV2ZW50KGFwcC52YXVsdC5vbignY29uZmlnLWNoYW5nZWQnLCBzZXR0aW5nc1VwZGF0ZSkpO1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5yZWdpc3RlckV2ZW50KGFwcC53b3Jrc3BhY2Uub24oJ2Nzcy1jaGFuZ2UnLCBzaWRlYmFyVXBkYXRlKSk7XHJcblxyXG4gICAgc2V0dGluZ3NVcGRhdGUoKTtcclxuICAgIFxyXG4gICAgYXBwLndvcmtzcGFjZS5vbkxheW91dFJlYWR5KCgpID0+IHtcclxuICAgICAgc2lkZWJhclVwZGF0ZSgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgbGlnaHRTdHlsZXMgPSBbJ21pbmltYWwtbGlnaHQnLCAnbWluaW1hbC1saWdodC10b25hbCcsICdtaW5pbWFsLWxpZ2h0LWNvbnRyYXN0JywgJ21pbmltYWwtbGlnaHQtd2hpdGUnXTtcclxuICAgIGNvbnN0IGRhcmtTdHlsZXMgPSBbJ21pbmltYWwtZGFyaycsICdtaW5pbWFsLWRhcmstdG9uYWwnLCAnbWluaW1hbC1kYXJrLWJsYWNrJ107XHJcbiAgICBjb25zdCBpbWdHcmlkU3R5bGVzID0gWydpbWctZ3JpZCcsJ2ltZy1ncmlkLXJhdGlvJywnaW1nLW5vZ3JpZCddO1xyXG4gICAgY29uc3QgdGFibGVXaWR0aFN0eWxlcyA9IFsndGFibGUtMTAwJywndGFibGUtZGVmYXVsdC13aWR0aCcsJ3RhYmxlLXdpZGUnLCd0YWJsZS1tYXgnXTtcclxuICAgIGNvbnN0IGlmcmFtZVdpZHRoU3R5bGVzID0gWydpZnJhbWUtMTAwJywnaWZyYW1lLWRlZmF1bHQtd2lkdGgnLCdpZnJhbWUtd2lkZScsJ2lmcmFtZS1tYXgnXTtcclxuICAgIGNvbnN0IGltZ1dpZHRoU3R5bGVzID0gWydpbWctMTAwJywnaW1nLWRlZmF1bHQtd2lkdGgnLCdpbWctd2lkZScsJ2ltZy1tYXgnXTtcclxuICAgIGNvbnN0IG1hcFdpZHRoU3R5bGVzID0gWydtYXAtMTAwJywnbWFwLWRlZmF1bHQtd2lkdGgnLCdtYXAtd2lkZScsJ21hcC1tYXgnXTtcclxuICAgIGNvbnN0IGNoYXJ0V2lkdGhTdHlsZXMgPSBbJ2NoYXJ0LTEwMCcsJ2NoYXJ0LWRlZmF1bHQtd2lkdGgnLCdjaGFydC13aWRlJywnY2hhcnQtbWF4J107XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICdpbmNyZWFzZS1ib2R5LWZvbnQtc2l6ZScsXHJcbiAgICAgIG5hbWU6ICdJbmNyZWFzZSBib2R5IGZvbnQgc2l6ZScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy50ZXh0Tm9ybWFsID0gdGhpcy5zZXR0aW5ncy50ZXh0Tm9ybWFsICsgMC41O1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5zZXRGb250U2l6ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ2RlY3JlYXNlLWJvZHktZm9udC1zaXplJyxcclxuICAgICAgbmFtZTogJ0RlY3JlYXNlIGJvZHkgZm9udCBzaXplJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLnRleHROb3JtYWwgPSB0aGlzLnNldHRpbmdzLnRleHROb3JtYWwgLSAwLjU7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnNldEZvbnRTaXplKCk7XHJcbiAgICAgIH1cclxuICAgIH0pOyBcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWRhcmstY3ljbGUnLFxyXG4gICAgICBuYW1lOiAnQ3ljbGUgYmV0d2VlbiBkYXJrIG1vZGUgc3R5bGVzJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTdHlsZSA9IGRhcmtTdHlsZXNbKGRhcmtTdHlsZXMuaW5kZXhPZih0aGlzLnNldHRpbmdzLmRhcmtTdHlsZSkgKyAxKSAlIGRhcmtTdHlsZXMubGVuZ3RoXTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pOyAgXHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1saWdodC1jeWNsZScsXHJcbiAgICAgIG5hbWU6ICdDeWNsZSBiZXR3ZWVuIGxpZ2h0IG1vZGUgc3R5bGVzJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U3R5bGUgPSBsaWdodFN0eWxlc1sobGlnaHRTdHlsZXMuaW5kZXhPZih0aGlzLnNldHRpbmdzLmxpZ2h0U3R5bGUpICsgMSkgJSBsaWdodFN0eWxlcy5sZW5ndGhdO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLWhpZGRlbi1ib3JkZXJzJyxcclxuICAgICAgbmFtZTogJ1RvZ2dsZSBzaWRlYmFyIGJvcmRlcnMnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuYm9yZGVyc1RvZ2dsZSA9ICF0aGlzLnNldHRpbmdzLmJvcmRlcnNUb2dnbGU7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtY29sb3JmdWwtaGVhZGluZ3MnLFxyXG4gICAgICBuYW1lOiAnVG9nZ2xlIGNvbG9yZnVsIGhlYWRpbmdzJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmNvbG9yZnVsSGVhZGluZ3MgPSAhdGhpcy5zZXR0aW5ncy5jb2xvcmZ1bEhlYWRpbmdzO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZm9jdXMtbW9kZScsXHJcbiAgICAgIG5hbWU6ICdUb2dnbGUgZm9jdXMgbW9kZScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5mb2N1c01vZGUgPSAhdGhpcy5zZXR0aW5ncy5mb2N1c01vZGU7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1jb2xvcmZ1bC1mcmFtZScsXHJcbiAgICAgIG5hbWU6ICdUb2dnbGUgY29sb3JmdWwgd2luZG93IGZyYW1lJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmNvbG9yZnVsRnJhbWUgPSAhdGhpcy5zZXR0aW5ncy5jb2xvcmZ1bEZyYW1lO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAnY3ljbGUtbWluaW1hbC10YWJsZS13aWR0aCcsXHJcbiAgICAgIG5hbWU6ICdDeWNsZSBiZXR3ZWVuIHRhYmxlIHdpZHRoIG9wdGlvbnMnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MudGFibGVXaWR0aCA9IHRhYmxlV2lkdGhTdHlsZXNbKHRhYmxlV2lkdGhTdHlsZXMuaW5kZXhPZih0aGlzLnNldHRpbmdzLnRhYmxlV2lkdGgpICsgMSkgJSB0YWJsZVdpZHRoU3R5bGVzLmxlbmd0aF07XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICdjeWNsZS1taW5pbWFsLWltYWdlLXdpZHRoJyxcclxuICAgICAgbmFtZTogJ0N5Y2xlIGJldHdlZW4gaW1hZ2Ugd2lkdGggb3B0aW9ucycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5pbWdXaWR0aCA9IGltZ1dpZHRoU3R5bGVzWyhpbWdXaWR0aFN0eWxlcy5pbmRleE9mKHRoaXMuc2V0dGluZ3MuaW1nV2lkdGgpICsgMSkgJSBpbWdXaWR0aFN0eWxlcy5sZW5ndGhdO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAnY3ljbGUtbWluaW1hbC1pZnJhbWUtd2lkdGgnLFxyXG4gICAgICBuYW1lOiAnQ3ljbGUgYmV0d2VlbiBpZnJhbWUgd2lkdGggb3B0aW9ucycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5pZnJhbWVXaWR0aCA9IGlmcmFtZVdpZHRoU3R5bGVzWyhpZnJhbWVXaWR0aFN0eWxlcy5pbmRleE9mKHRoaXMuc2V0dGluZ3MuaWZyYW1lV2lkdGgpICsgMSkgJSBpZnJhbWVXaWR0aFN0eWxlcy5sZW5ndGhdO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAnY3ljbGUtbWluaW1hbC1jaGFydC13aWR0aCcsXHJcbiAgICAgIG5hbWU6ICdDeWNsZSBiZXR3ZWVuIGNoYXJ0IHdpZHRoIG9wdGlvbnMnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuY2hhcnRXaWR0aCA9IGNoYXJ0V2lkdGhTdHlsZXNbKGNoYXJ0V2lkdGhTdHlsZXMuaW5kZXhPZih0aGlzLnNldHRpbmdzLmNoYXJ0V2lkdGgpICsgMSkgJSBjaGFydFdpZHRoU3R5bGVzLmxlbmd0aF07XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICdjeWNsZS1taW5pbWFsLW1hcC13aWR0aCcsXHJcbiAgICAgIG5hbWU6ICdDeWNsZSBiZXR3ZWVuIG1hcCB3aWR0aCBvcHRpb25zJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLm1hcFdpZHRoID0gbWFwV2lkdGhTdHlsZXNbKG1hcFdpZHRoU3R5bGVzLmluZGV4T2YodGhpcy5zZXR0aW5ncy5tYXBXaWR0aCkgKyAxKSAlIG1hcFdpZHRoU3R5bGVzLmxlbmd0aF07XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1pbWctZ3JpZCcsXHJcbiAgICAgIG5hbWU6ICdUb2dnbGUgaW1hZ2UgZ3JpZHMnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuaW1nR3JpZCA9ICF0aGlzLnNldHRpbmdzLmltZ0dyaWQ7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1zd2l0Y2gnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGJldHdlZW4gbGlnaHQgYW5kIGRhcmsgbW9kZScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVUaGVtZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWxpZ2h0LWRlZmF1bHQnLFxyXG4gICAgICBuYW1lOiAnVXNlIGxpZ2h0IG1vZGUgKGRlZmF1bHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U3R5bGUgPSAnbWluaW1hbC1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1saWdodC13aGl0ZScsXHJcbiAgICAgIG5hbWU6ICdVc2UgbGlnaHQgbW9kZSAoYWxsIHdoaXRlKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFN0eWxlID0gJ21pbmltYWwtbGlnaHQtd2hpdGUnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtbGlnaHQtdG9uYWwnLFxyXG4gICAgICBuYW1lOiAnVXNlIGxpZ2h0IG1vZGUgKGxvdyBjb250cmFzdCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTdHlsZSA9ICdtaW5pbWFsLWxpZ2h0LXRvbmFsJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWxpZ2h0LWNvbnRyYXN0JyxcclxuICAgICAgbmFtZTogJ1VzZSBsaWdodCBtb2RlIChoaWdoIGNvbnRyYXN0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFN0eWxlID0gJ21pbmltYWwtbGlnaHQtY29udHJhc3QnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZGFyay1kZWZhdWx0JyxcclxuICAgICAgbmFtZTogJ1VzZSBkYXJrIG1vZGUgKGRlZmF1bHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTdHlsZSA9ICdtaW5pbWFsLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1kYXJrLXRvbmFsJyxcclxuICAgICAgbmFtZTogJ1VzZSBkYXJrIG1vZGUgKGxvdyBjb250cmFzdCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1N0eWxlID0gJ21pbmltYWwtZGFyay10b25hbCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWRhcmstYmxhY2snLFxyXG4gICAgICBuYW1lOiAnVXNlIGRhcmsgbW9kZSAodHJ1ZSBibGFjayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1N0eWxlID0gJ21pbmltYWwtZGFyay1ibGFjayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWF0b20tbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBBdG9tIChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1hdG9tLWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1heXUtbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBBeXUgKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLWF5dS1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtY2F0cHB1Y2Npbi1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIENhdHBwdWNjaW4gKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLWNhdHBwdWNjaW4tbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWRlZmF1bHQtbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBkZWZhdWx0IChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1kZWZhdWx0LWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1ncnV2Ym94LWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gR3J1dmJveCAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtZ3J1dmJveC1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZWluay1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIEUtaW5rIChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1laW5rLWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1ldmVyZm9yZXN0LWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gRXZlcmZvcmVzdCAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtZXZlcmZvcmVzdC1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZmxleG9raS1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIEZsZXhva2kgKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLWZsZXhva2ktbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLW1hY29zLWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gbWFjT1MgKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLW1hY29zLWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1ub3Rpb24tbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBTa3kgKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLW5vdGlvbi1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtbm9yZC1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIE5vcmQgKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLW5vcmQtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLXJvc2UtcGluZS1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIFJvc1x1MDBFOSBQaW5lIChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1yb3NlLXBpbmUtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLXNvbGFyaXplZC1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIFNvbGFyaXplZCAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtc29sYXJpemVkLWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC10aGluZ3MtbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBUaGluZ3MgKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLXRoaW5ncy1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtYXRvbS1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBkYXJrIGNvbG9yIHNjaGVtZSB0byBBdG9tIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtYXRvbS1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtYXl1LWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGRhcmsgY29sb3Igc2NoZW1lIHRvIEF5dSAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWF5dS1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtY2F0cHB1Y2Npbi1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBkYXJrIGNvbG9yIHNjaGVtZSB0byBDYXRwcHVjY2luIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtY2F0cHB1Y2Npbi1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZHJhY3VsYS1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBkYXJrIGNvbG9yIHNjaGVtZSB0byBEcmFjdWxhIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtZHJhY3VsYS1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZGVmYXVsdC1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBkYXJrIGNvbG9yIHNjaGVtZSB0byBkZWZhdWx0IChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtZGVmYXVsdC1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZWluay1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBkYXJrIGNvbG9yIHNjaGVtZSB0byBFLWluayAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWVpbmstZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWV2ZXJmb3Jlc3QtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gRXZlcmZvcmVzdCAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWV2ZXJmb3Jlc3QtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWZsZXhva2ktZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gRmxleG9raSAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWZsZXhva2ktZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWdydXZib3gtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gR3J1dmJveCAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWdydXZib3gtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLW1hY29zLWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGRhcmsgY29sb3Igc2NoZW1lIHRvIG1hY09TIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtbWFjb3MtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLW5vcmQtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gTm9yZCAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLW5vcmQtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLW5vdGlvbi1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBkYXJrIGNvbG9yIHNjaGVtZSB0byBTa3kgKGRhcmspJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUgPSAnbWluaW1hbC1ub3Rpb24tZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLXJvc2UtcGluZS1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBkYXJrIGNvbG9yIHNjaGVtZSB0byBSb3NcdTAwRTkgUGluZSAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLXJvc2UtcGluZS1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtc29sYXJpemVkLWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGRhcmsgY29sb3Igc2NoZW1lIHRvIFNvbGFyaXplZCAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLXNvbGFyaXplZC1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtdGhpbmdzLWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGRhcmsgY29sb3Igc2NoZW1lIHRvIFRoaW5ncyAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLXRoaW5ncy1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZGV2LWJsb2NrLXdpZHRoJyxcclxuICAgICAgbmFtZTogJ0RldiBcdTIwMTQgU2hvdyBibG9jayB3aWR0aHMnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGV2QmxvY2tXaWR0aCA9ICF0aGlzLnNldHRpbmdzLmRldkJsb2NrV2lkdGg7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5yZWZyZXNoKClcclxuICB9XHJcblxyXG4gIG9udW5sb2FkKCkge1xyXG4gICAgY29uc29sZS5sb2coJ1VubG9hZGluZyBNaW5pbWFsIFRoZW1lIFNldHRpbmdzIHBsdWdpbicpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbG9hZFNldHRpbmdzKCkge1xyXG4gICAgdGhpcy5zZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oREVGQVVMVF9TRVRUSU5HUywgYXdhaXQgdGhpcy5sb2FkRGF0YSgpKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHNhdmVTZXR0aW5ncygpIHtcclxuICAgIGF3YWl0IHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgfVxyXG5cclxuICAvLyByZWZyZXNoIGZ1bmN0aW9uIGZvciB3aGVuIHdlIGNoYW5nZSBzZXR0aW5nc1xyXG4gIHJlZnJlc2goKSB7XHJcbiAgICAvLyByZS1sb2FkIHRoZSBzdHlsZVxyXG4gICAgdGhpcy51cGRhdGVTdHlsZSgpXHJcbiAgfVxyXG5cclxuICAvLyBhZGQgdGhlIHN0eWxpbmcgZWxlbWVudHMgd2UgbmVlZFxyXG4gIGFkZFN0eWxlKCkge1xyXG4gICAgLy8gYWRkIGEgY3NzIGJsb2NrIGZvciBvdXIgc2V0dGluZ3MtZGVwZW5kZW50IHN0eWxlc1xyXG4gICAgY29uc3QgY3NzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcclxuICAgIGNzcy5pZCA9ICdtaW5pbWFsLXRoZW1lJztcclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXS5hcHBlbmRDaGlsZChjc3MpO1xyXG5cclxuICAgIC8vIGFkZCB0aGUgbWFpbiBjbGFzc1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdtaW5pbWFsLXRoZW1lJyk7XHJcblxyXG4gICAgLy8gdXBkYXRlIHRoZSBzdHlsZSB3aXRoIHRoZSBzZXR0aW5ncy1kZXBlbmRlbnQgc3R5bGVzXHJcbiAgICB0aGlzLnVwZGF0ZVN0eWxlKCk7XHJcbiAgfVxyXG5cclxuICBzZXRGb250U2l6ZSgpIHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMuYXBwLnZhdWx0LnNldENvbmZpZygnYmFzZUZvbnRTaXplJywgdGhpcy5zZXR0aW5ncy50ZXh0Tm9ybWFsKTtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMuYXBwLnVwZGF0ZUZvbnRTaXplKCk7XHJcbiAgfVxyXG5cclxuICAvLyB1cGRhdGUgdGhlIHN0eWxlcyAoYXQgdGhlIHN0YXJ0LCBvciBhcyB0aGUgcmVzdWx0IG9mIGEgc2V0dGluZ3MgY2hhbmdlKVxyXG4gIHVwZGF0ZVN0eWxlKCkge1xyXG4gICAgdGhpcy5yZW1vdmVTdHlsZSgpO1xyXG5cclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSk7XHJcblxyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdib3JkZXJzLW5vbmUnLCAhdGhpcy5zZXR0aW5ncy5ib3JkZXJzVG9nZ2xlKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnY29sb3JmdWwtaGVhZGluZ3MnLCB0aGlzLnNldHRpbmdzLmNvbG9yZnVsSGVhZGluZ3MpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdjb2xvcmZ1bC1mcmFtZScsIHRoaXMuc2V0dGluZ3MuY29sb3JmdWxGcmFtZSk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2NvbG9yZnVsLWFjdGl2ZScsIHRoaXMuc2V0dGluZ3MuY29sb3JmdWxBY3RpdmVTdGF0ZXMpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdtaW5pbWFsLWZvY3VzLW1vZGUnLCB0aGlzLnNldHRpbmdzLmZvY3VzTW9kZSk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2xpbmtzLWludC1vbicsIHRoaXMuc2V0dGluZ3MudW5kZXJsaW5lSW50ZXJuYWwpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdsaW5rcy1leHQtb24nLCB0aGlzLnNldHRpbmdzLnVuZGVybGluZUV4dGVybmFsKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnZnVsbC13aWR0aC1tZWRpYScsIHRoaXMuc2V0dGluZ3MuZnVsbFdpZHRoTWVkaWEpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdpbWctZ3JpZCcsIHRoaXMuc2V0dGluZ3MuaW1nR3JpZCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtZGV2LWJsb2NrLXdpZHRoJywgdGhpcy5zZXR0aW5ncy5kZXZCbG9ja1dpZHRoKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnbWluaW1hbC1zdGF0dXMtb2ZmJywgIXRoaXMuc2V0dGluZ3MubWluaW1hbFN0YXR1cyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2Z1bGwtZmlsZS1uYW1lcycsICF0aGlzLnNldHRpbmdzLnRyaW1OYW1lcyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2xhYmVsZWQtbmF2JywgdGhpcy5zZXR0aW5ncy5sYWJlbGVkTmF2KTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnbWluaW1hbC1mb2xkaW5nJywgdGhpcy5zZXR0aW5ncy5mb2xkaW5nKTtcclxuXHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNsYXNzKCd0YWJsZS13aWRlJywndGFibGUtbWF4JywndGFibGUtMTAwJywndGFibGUtZGVmYXVsdC13aWR0aCcsXHJcbiAgICAgICdpZnJhbWUtd2lkZScsJ2lmcmFtZS1tYXgnLCdpZnJhbWUtMTAwJywnaWZyYW1lLWRlZmF1bHQtd2lkdGgnLFxyXG4gICAgICAnaW1nLXdpZGUnLCdpbWctbWF4JywnaW1nLTEwMCcsJ2ltZy1kZWZhdWx0LXdpZHRoJyxcclxuICAgICAgJ2NoYXJ0LXdpZGUnLCdjaGFydC1tYXgnLCdjaGFydC0xMDAnLCdjaGFydC1kZWZhdWx0LXdpZHRoJyxcclxuICAgICAgJ21hcC13aWRlJywnbWFwLW1heCcsJ21hcC0xMDAnLCdtYXAtZGVmYXVsdC13aWR0aCcpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmNoYXJ0V2lkdGgpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLnRhYmxlV2lkdGgpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmltZ1dpZHRoKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5pZnJhbWVXaWR0aCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFkZENsYXNzKHRoaXMuc2V0dGluZ3MubWFwV2lkdGgpO1xyXG5cclxuICAgIC8vIGdldCB0aGUgY3VzdG9tIGNzcyBlbGVtZW50XHJcbiAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaW5pbWFsLXRoZW1lJyk7XHJcbiAgICBpZiAoIWVsKSB0aHJvdyBcIm1pbmltYWwtdGhlbWUgZWxlbWVudCBub3QgZm91bmQhXCI7XHJcbiAgICBlbHNlIHtcclxuICAgICAgLy8gc2V0IHRoZSBzZXR0aW5ncy1kZXBlbmRlbnQgY3NzXHJcbiAgICAgIGVsLmlubmVyVGV4dCA9IFxyXG4gICAgICAgICdib2R5Lm1pbmltYWwtdGhlbWV7J1xyXG4gICAgICAgICsgJy0tZm9udC11aS1zbWFsbDonICsgdGhpcy5zZXR0aW5ncy50ZXh0U21hbGwgKyAncHg7J1xyXG4gICAgICAgICsgJy0tbGluZS1oZWlnaHQ6JyArIHRoaXMuc2V0dGluZ3MubGluZUhlaWdodCArICc7J1xyXG4gICAgICAgICsgJy0tbGluZS13aWR0aDonICsgdGhpcy5zZXR0aW5ncy5saW5lV2lkdGggKyAncmVtOydcclxuICAgICAgICArICctLWxpbmUtd2lkdGgtd2lkZTonICsgdGhpcy5zZXR0aW5ncy5saW5lV2lkdGhXaWRlICsgJ3JlbTsnXHJcbiAgICAgICAgKyAnLS1tYXgtd2lkdGg6JyArIHRoaXMuc2V0dGluZ3MubWF4V2lkdGggKyAnJTsnXHJcbiAgICAgICAgKyAnLS1mb250LWVkaXRvci1vdmVycmlkZTonICsgdGhpcy5zZXR0aW5ncy5lZGl0b3JGb250ICsgJzsnO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHVwZGF0ZURhcmtTdHlsZSgpIHtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2xhc3MoXHJcbiAgICAgICd0aGVtZS1saWdodCcsXHJcbiAgICAgICdtaW5pbWFsLWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1kYXJrLXRvbmFsJyxcclxuICAgICAgJ21pbmltYWwtZGFyay1ibGFjaydcclxuICAgICk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFkZENsYXNzKFxyXG4gICAgICAndGhlbWUtZGFyaycsXHJcbiAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1N0eWxlXHJcbiAgICApO1xyXG4gICAgaWYgKHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygndGhlbWUnKSAhPT0gJ3N5c3RlbScpIHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICB0aGlzLmFwcC5zZXRUaGVtZSgnb2JzaWRpYW4nKTtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICB0aGlzLmFwcC52YXVsdC5zZXRDb25maWcoJ3RoZW1lJywgJ29ic2lkaWFuJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFwcC53b3Jrc3BhY2UudHJpZ2dlcignY3NzLWNoYW5nZScpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlTGlnaHRTdHlsZSgpIHtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2xhc3MoXHJcbiAgICAgICd0aGVtZS1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1saWdodC10b25hbCcsXHJcbiAgICAgICdtaW5pbWFsLWxpZ2h0LWNvbnRyYXN0JyxcclxuICAgICAgJ21pbmltYWwtbGlnaHQtd2hpdGUnXHJcbiAgICApO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyhcclxuICAgICAgJ3RoZW1lLWxpZ2h0JyxcclxuICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFN0eWxlXHJcbiAgICApO1xyXG4gICAgaWYgKHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygndGhlbWUnKSAhPT0gJ3N5c3RlbScpIHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICB0aGlzLmFwcC5zZXRUaGVtZSgnbW9vbnN0b25lJyk7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgdGhpcy5hcHAudmF1bHQuc2V0Q29uZmlnKCd0aGVtZScsICdtb29uc3RvbmUnKTtcclxuICAgIH1cclxuICAgIHRoaXMuYXBwLndvcmtzcGFjZS50cmlnZ2VyKCdjc3MtY2hhbmdlJyk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVEYXJrU2NoZW1lKCkge1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDbGFzcyhcclxuICAgICAgJ21pbmltYWwtYXRvbS1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtYXl1LWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1jYXRwcHVjY2luLWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1kZWZhdWx0LWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1kcmFjdWxhLWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1laW5rLWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1ldmVyZm9yZXN0LWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1mbGV4b2tpLWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1ncnV2Ym94LWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1tYWNvcy1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtbm9yZC1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtbm90aW9uLWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1yb3NlLXBpbmUtZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLXNvbGFyaXplZC1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtdGhpbmdzLWRhcmsnXHJcbiAgICApO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlTGlnaHRTY2hlbWUoKSB7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNsYXNzKFxyXG4gICAgICAnbWluaW1hbC1hdG9tLWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtYXl1LWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtY2F0cHB1Y2Npbi1saWdodCcsXHJcbiAgICAgICdtaW5pbWFsLWRlZmF1bHQtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1laW5rLWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtZXZlcmZvcmVzdC1saWdodCcsXHJcbiAgICAgICdtaW5pbWFsLWZsZXhva2ktbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1ncnV2Ym94LWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtbWFjb3MtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1ub3JkLWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtbm90aW9uLWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtcm9zZS1waW5lLWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtc29sYXJpemVkLWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtdGhpbmdzLWxpZ2h0J1xyXG4gICAgKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVUaGVtZSgpIHtcclxuICAgIGlmICh0aGlzLmFwcC52YXVsdC5nZXRDb25maWcoJ3RoZW1lJykgPT09ICdzeXN0ZW0nKSB7XHJcbiAgICAgICAgaWYgKGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCd0aGVtZS1saWdodCcpKSB7XHJcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNsYXNzKCd0aGVtZS1saWdodCcpO1xyXG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcygndGhlbWUtZGFyaycpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNsYXNzKCd0aGVtZS1kYXJrJyk7XHJcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LmFkZENsYXNzKCd0aGVtZS1saWdodCcpO1xyXG4gICAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCd0aGVtZS1saWdodCcpKSB7XHJcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNsYXNzKCd0aGVtZS1saWdodCcpO1xyXG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcygndGhlbWUtZGFyaycpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNsYXNzKCd0aGVtZS1kYXJrJyk7XHJcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LmFkZENsYXNzKCd0aGVtZS1saWdodCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGN1cnJlbnRUaGVtZSA9IHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygndGhlbWUnKTtcclxuICAgICAgY29uc3QgbmV3VGhlbWUgPSBjdXJyZW50VGhlbWUgPT09ICdtb29uc3RvbmUnID8gJ29ic2lkaWFuJyA6ICdtb29uc3RvbmUnO1xyXG5cclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICB0aGlzLmFwcC5zZXRUaGVtZShuZXdUaGVtZSk7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgdGhpcy5hcHAudmF1bHQuc2V0Q29uZmlnKCd0aGVtZScsIG5ld1RoZW1lKTtcclxuICAgIH1cclxuICAgIHRoaXMuYXBwLndvcmtzcGFjZS50cmlnZ2VyKCdjc3MtY2hhbmdlJyk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVTdHlsZSgpIHtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2xhc3MoJ21pbmltYWwtbGlnaHQnLCdtaW5pbWFsLWxpZ2h0LXRvbmFsJywnbWluaW1hbC1saWdodC1jb250cmFzdCcsJ21pbmltYWwtbGlnaHQtd2hpdGUnLCdtaW5pbWFsLWRhcmsnLCdtaW5pbWFsLWRhcmstdG9uYWwnLCdtaW5pbWFsLWRhcmstYmxhY2snKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5saWdodFN0eWxlLHRoaXMuc2V0dGluZ3MuZGFya1N0eWxlKTtcclxuICB9XHJcblxyXG59XHJcblxyXG5pbnRlcmZhY2UgTWluaW1hbFNldHRpbmdzIHtcclxuICBsaWdodFN0eWxlOiBzdHJpbmc7XHJcbiAgZGFya1N0eWxlOiBzdHJpbmc7XHJcbiAgbGlnaHRTY2hlbWU6IHN0cmluZztcclxuICBkYXJrU2NoZW1lOiBzdHJpbmc7XHJcbiAgZWRpdG9yRm9udDogc3RyaW5nO1xyXG4gIGNvbG9yZnVsSGVhZGluZ3M6IGJvb2xlYW47XHJcbiAgY29sb3JmdWxGcmFtZTogYm9vbGVhbjtcclxuICBjb2xvcmZ1bEFjdGl2ZVN0YXRlczogYm9vbGVhbixcclxuICB0cmltTmFtZXM6IGJvb2xlYW47XHJcbiAgbGFiZWxlZE5hdjogYm9vbGVhbjtcclxuICBib3JkZXJzVG9nZ2xlOiBib29sZWFuO1xyXG4gIGZvY3VzTW9kZTogYm9vbGVhbjtcclxuICBsaW5lSGVpZ2h0OiBudW1iZXI7XHJcbiAgbGluZVdpZHRoOiBudW1iZXI7XHJcbiAgbGluZVdpZHRoV2lkZTogbnVtYmVyO1xyXG4gIG1heFdpZHRoOiBudW1iZXI7XHJcbiAgaW1nR3JpZDogYm9vbGVhbjtcclxuICBkZXZCbG9ja1dpZHRoOiBib29sZWFuO1xyXG4gIHRhYmxlV2lkdGg6IHN0cmluZztcclxuICBpZnJhbWVXaWR0aDogc3RyaW5nO1xyXG4gIGltZ1dpZHRoOiBzdHJpbmc7XHJcbiAgY2hhcnRXaWR0aDogc3RyaW5nO1xyXG4gIG1hcFdpZHRoOiBzdHJpbmc7XHJcbiAgZnVsbFdpZHRoTWVkaWE6IGJvb2xlYW4sXHJcbiAgbWluaW1hbFN0YXR1czogYm9vbGVhbixcclxuICB0ZXh0Tm9ybWFsOiBudW1iZXI7XHJcbiAgdGV4dFNtYWxsOiBudW1iZXI7XHJcbiAgdW5kZXJsaW5lSW50ZXJuYWw6IGJvb2xlYW47XHJcbiAgdW5kZXJsaW5lRXh0ZXJuYWw6IGJvb2xlYW47XHJcbiAgZm9sZGluZzogYm9vbGVhbjtcclxuICBsaW5lTnVtYmVyczogYm9vbGVhbjtcclxuICByZWFkYWJsZUxpbmVMZW5ndGg6IGJvb2xlYW47XHJcbn1cclxuXHJcbmNvbnN0IERFRkFVTFRfU0VUVElOR1M6IE1pbmltYWxTZXR0aW5ncyA9IHtcclxuICBsaWdodFN0eWxlOiAnbWluaW1hbC1saWdodCcsXHJcbiAgZGFya1N0eWxlOiAnbWluaW1hbC1kYXJrJyxcclxuICBsaWdodFNjaGVtZTogJ21pbmltYWwtZGVmYXVsdC1saWdodCcsXHJcbiAgZGFya1NjaGVtZTogJ21pbmltYWwtZGVmYXVsdC1kYXJrJyxcclxuICBlZGl0b3JGb250OiAnJyxcclxuICBsaW5lSGVpZ2h0OiAxLjUsXHJcbiAgbGluZVdpZHRoOiA0MCxcclxuICBsaW5lV2lkdGhXaWRlOiA1MCxcclxuICBtYXhXaWR0aDogODgsXHJcbiAgdGV4dE5vcm1hbDogMTYsXHJcbiAgdGV4dFNtYWxsOiAxMyxcclxuICBpbWdHcmlkOiBmYWxzZSxcclxuICBpbWdXaWR0aDogJ2ltZy1kZWZhdWx0LXdpZHRoJyxcclxuICB0YWJsZVdpZHRoOiAndGFibGUtZGVmYXVsdC13aWR0aCcsXHJcbiAgaWZyYW1lV2lkdGg6ICdpZnJhbWUtZGVmYXVsdC13aWR0aCcsXHJcbiAgbWFwV2lkdGg6ICdtYXAtZGVmYXVsdC13aWR0aCcsXHJcbiAgY2hhcnRXaWR0aDogJ2NoYXJ0LWRlZmF1bHQtd2lkdGgnLFxyXG4gIGNvbG9yZnVsSGVhZGluZ3M6IGZhbHNlLFxyXG4gIGNvbG9yZnVsRnJhbWU6IGZhbHNlLFxyXG4gIGNvbG9yZnVsQWN0aXZlU3RhdGVzOiBmYWxzZSxcclxuICB0cmltTmFtZXM6IHRydWUsXHJcbiAgbGFiZWxlZE5hdjogZmFsc2UsXHJcbiAgZnVsbFdpZHRoTWVkaWE6IHRydWUsXHJcbiAgYm9yZGVyc1RvZ2dsZTogdHJ1ZSxcclxuICBtaW5pbWFsU3RhdHVzOiB0cnVlLFxyXG4gIGZvY3VzTW9kZTogZmFsc2UsXHJcbiAgdW5kZXJsaW5lSW50ZXJuYWw6IHRydWUsXHJcbiAgdW5kZXJsaW5lRXh0ZXJuYWw6IHRydWUsXHJcbiAgZm9sZGluZzogdHJ1ZSxcclxuICBsaW5lTnVtYmVyczogZmFsc2UsXHJcbiAgcmVhZGFibGVMaW5lTGVuZ3RoOiBmYWxzZSxcclxuICBkZXZCbG9ja1dpZHRoOiBmYWxzZSxcclxufVxyXG5cclxuY2xhc3MgTWluaW1hbFNldHRpbmdUYWIgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcclxuXHJcblxyXG4gIHBsdWdpbjogTWluaW1hbFRoZW1lO1xyXG4gIGNvbnN0cnVjdG9yKGFwcDogQXBwLCBwbHVnaW46IE1pbmltYWxUaGVtZSkge1xyXG4gICAgc3VwZXIoYXBwLCBwbHVnaW4pO1xyXG4gICAgdGhpcy5wbHVnaW4gPSBwbHVnaW47XHJcbiAgfVxyXG5cclxuICBkaXNwbGF5KCk6IHZvaWQge1xyXG4gICAgbGV0IHtjb250YWluZXJFbH0gPSB0aGlzO1xyXG5cclxuICAgIGNvbnRhaW5lckVsLmVtcHR5KCk7XHJcblxyXG4gICAgY29uc3QgY29sb3JTZWN0aW9uID0gY29udGFpbmVyRWwuY3JlYXRlRWwoJ2RpdicsIHtjbHM6ICdzZXR0aW5nLWl0ZW0gc2V0dGluZy1pdGVtLWhlYWRpbmcnfSk7XHJcblxyXG4gICAgY29uc3QgY29sb3JTZWN0aW9uSW5mbyA9ICBjb2xvclNlY3Rpb24uY3JlYXRlRWwoJ2RpdicsIHtjbHM6ICdzZXR0aW5nLWl0ZW0taW5mbyd9KTtcclxuXHJcbiAgICBjb2xvclNlY3Rpb25JbmZvLmNyZWF0ZUVsKCdkaXYnLCB7dGV4dDogJ0NvbG9yIHNjaGVtZScsIGNsczogJ3NldHRpbmctaXRlbS1uYW1lJ30pO1xyXG5cclxuICAgIGNvbnN0IGNvbG9yRGVzYyA9IGNvbG9yU2VjdGlvbkluZm8uY3JlYXRlRWwoJ2RpdicsIHtjbHM6ICdzZXR0aW5nLWl0ZW0tZGVzY3JpcHRpb24nfSk7XHJcblxyXG4gICAgICBjb2xvckRlc2MuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgY3JlYXRlRWwoJ3NwYW4nLCB7XHJcbiAgICAgICAgICB0ZXh0OiAnVG8gY3JlYXRlIGEgY3VzdG9tIGNvbG9yIHNjaGVtZSB1c2UgdGhlICdcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgY29sb3JEZXNjLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdhJywge1xyXG4gICAgICAgICAgdGV4dDogXCJTdHlsZSBTZXR0aW5nc1wiLFxyXG4gICAgICAgICAgaHJlZjogXCJvYnNpZGlhbjovL3Nob3ctcGx1Z2luP2lkPW9ic2lkaWFuLXN0eWxlLXNldHRpbmdzXCIsXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgY29sb3JEZXNjLmFwcGVuZFRleHQoJyBwbHVnaW4uIFNlZSAnKTtcclxuXHJcbiAgICAgIGNvbG9yRGVzYy5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnYScsIHtcclxuICAgICAgICAgIHRleHQ6IFwiZG9jdW1lbnRhdGlvblwiLFxyXG4gICAgICAgICAgaHJlZjogXCJodHRwczovL21pbmltYWwuZ3VpZGUvZmVhdHVyZXMvY29sb3Itc2NoZW1lc1wiLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbG9yRGVzYy5hcHBlbmRUZXh0KCcgZm9yIGRldGFpbHMuJyk7XHJcblxyXG4gICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgICAuc2V0TmFtZSgnTGlnaHQgbW9kZSBjb2xvciBzY2hlbWUnKVxyXG4gICAgICAgIC5zZXREZXNjKCdQcmVzZXQgY29sb3Igb3B0aW9ucyBmb3IgbGlnaHQgbW9kZS4nKVxyXG4gICAgICAgIC5hZGREcm9wZG93bihkcm9wZG93biA9PiBkcm9wZG93blxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1kZWZhdWx0LWxpZ2h0JywnRGVmYXVsdCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWF0b20tbGlnaHQnLCdBdG9tJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtYXl1LWxpZ2h0JywnQXl1JylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtY2F0cHB1Y2Npbi1saWdodCcsJ0NhdHBwdWNjaW4nKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1laW5rLWxpZ2h0JywnRS1pbmsgKGJldGEpJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZXZlcmZvcmVzdC1saWdodCcsJ0V2ZXJmb3Jlc3QnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1mbGV4b2tpLWxpZ2h0JywnRmxleG9raScpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWdydXZib3gtbGlnaHQnLCdHcnV2Ym94JylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtbWFjb3MtbGlnaHQnLCdtYWNPUycpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLW5vcmQtbGlnaHQnLCdOb3JkJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtcm9zZS1waW5lLWxpZ2h0JywnUm9zXHUwMEU5IFBpbmUnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1ub3Rpb24tbGlnaHQnLCdTa3knKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1zb2xhcml6ZWQtbGlnaHQnLCdTb2xhcml6ZWQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC10aGluZ3MtbGlnaHQnLCdUaGluZ3MnKVxyXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmxpZ2h0U2NoZW1lKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAgIC5zZXROYW1lKCdMaWdodCBtb2RlIGJhY2tncm91bmQgY29udHJhc3QnKVxyXG4gICAgICAgIC5zZXREZXNjKCdMZXZlbCBvZiBjb250cmFzdCBiZXR3ZWVuIHNpZGViYXIgYW5kIG1haW4gY29udGVudC4nKVxyXG4gICAgICAgIC5hZGREcm9wZG93bihkcm9wZG93biA9PiBkcm9wZG93blxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1saWdodCcsJ0RlZmF1bHQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1saWdodC13aGl0ZScsJ0FsbCB3aGl0ZScpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWxpZ2h0LXRvbmFsJywnTG93IGNvbnRyYXN0JylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtbGlnaHQtY29udHJhc3QnLCdIaWdoIGNvbnRyYXN0JylcclxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5saWdodFN0eWxlKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmxpZ2h0U3R5bGUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgICAuc2V0TmFtZSgnRGFyayBtb2RlIGNvbG9yIHNjaGVtZScpXHJcbiAgICAgICAgLnNldERlc2MoJ1ByZXNldCBjb2xvcnMgb3B0aW9ucyBmb3IgZGFyayBtb2RlLicpXHJcbiAgICAgICAgLmFkZERyb3Bkb3duKGRyb3Bkb3duID0+IGRyb3Bkb3duXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWRlZmF1bHQtZGFyaycsJ0RlZmF1bHQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1hdG9tLWRhcmsnLCdBdG9tJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtYXl1LWRhcmsnLCdBeXUnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1jYXRwcHVjY2luLWRhcmsnLCdDYXRwcHVjY2luJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZHJhY3VsYS1kYXJrJywnRHJhY3VsYScpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWVpbmstZGFyaycsJ0UtaW5rIChiZXRhKScpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWV2ZXJmb3Jlc3QtZGFyaycsJ0V2ZXJmb3Jlc3QnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1mbGV4b2tpLWRhcmsnLCdGbGV4b2tpJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZ3J1dmJveC1kYXJrJywnR3J1dmJveCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLW1hY29zLWRhcmsnLCdtYWNPUycpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLW5vcmQtZGFyaycsJ05vcmQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1yb3NlLXBpbmUtZGFyaycsJ1Jvc1x1MDBFOSBQaW5lJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtbm90aW9uLWRhcmsnLCdTa3knKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1zb2xhcml6ZWQtZGFyaycsJ1NvbGFyaXplZCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLXRoaW5ncy1kYXJrJywnVGhpbmdzJylcclxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5kYXJrU2NoZW1lKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5kYXJrU2NoZW1lID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4udXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgICAgfSkpO1xyXG5cclxuICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgICAgLnNldE5hbWUoJ0RhcmsgbW9kZSBiYWNrZ3JvdW5kIGNvbnRyYXN0JylcclxuICAgICAgICAuc2V0RGVzYygnTGV2ZWwgb2YgY29udHJhc3QgYmV0d2VlbiBzaWRlYmFyIGFuZCBtYWluIGNvbnRlbnQuJylcclxuICAgICAgICAuYWRkRHJvcGRvd24oZHJvcGRvd24gPT4gZHJvcGRvd25cclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZGFyaycsJ0RlZmF1bHQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1kYXJrLXRvbmFsJywnTG93IGNvbnRyYXN0JylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZGFyay1ibGFjaycsJ1RydWUgYmxhY2snKVxyXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmRhcmtTdHlsZSlcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZGFya1N0eWxlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4udXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgICAgICB9KSk7XHJcblxyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2JyJyk7XHJcblxyXG4gICAgY29uc3QgZmVhdHVyZXNTZWN0aW9uID0gY29udGFpbmVyRWwuY3JlYXRlRWwoJ2RpdicsIHtjbHM6ICdzZXR0aW5nLWl0ZW0gc2V0dGluZy1pdGVtLWhlYWRpbmcnfSk7XHJcblxyXG4gICAgY29uc3QgZmVhdHVyZXNTZWN0aW9uSW5mbyA9ICBmZWF0dXJlc1NlY3Rpb24uY3JlYXRlRWwoJ2RpdicsIHtjbHM6ICdzZXR0aW5nLWl0ZW0taW5mbyd9KTtcclxuXHJcbiAgICBmZWF0dXJlc1NlY3Rpb25JbmZvLmNyZWF0ZUVsKCdkaXYnLCB7dGV4dDogJ0ZlYXR1cmVzJywgY2xzOiAnc2V0dGluZy1pdGVtLW5hbWUnfSk7XHJcblxyXG4gICAgY29uc3QgZmVhdHVyZXNTZWN0aW9uRGVzYyA9IGZlYXR1cmVzU2VjdGlvbkluZm8uY3JlYXRlRWwoJ2RpdicsIHtjbHM6ICdzZXR0aW5nLWl0ZW0tZGVzY3JpcHRpb24nfSk7XHJcblxyXG4gICAgICBmZWF0dXJlc1NlY3Rpb25EZXNjLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdzcGFuJywge1xyXG4gICAgICAgICAgdGV4dDogJ1NlZSAnXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICBmZWF0dXJlc1NlY3Rpb25EZXNjLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdhJywge1xyXG4gICAgICAgICAgdGV4dDogXCJkb2N1bWVudGF0aW9uXCIsXHJcbiAgICAgICAgICBocmVmOiBcImh0dHBzOi8vbWluaW1hbC5ndWlkZVwiLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIGZlYXR1cmVzU2VjdGlvbkRlc2MuYXBwZW5kVGV4dCgnIGZvciBkZXRhaWxzLicpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnVGV4dCBsYWJlbHMgZm9yIHByaW1hcnkgbmF2aWdhdGlvbicpXHJcbiAgICAgIC5zZXREZXNjKCdOYXZpZ2F0aW9uIGl0ZW1zIGluIHRoZSBsZWZ0IHNpZGViYXIgdXNlcyB0ZXh0IGxhYmVscy4nKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MubGFiZWxlZE5hdilcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubGFiZWxlZE5hdiA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0NvbG9yZnVsIHdpbmRvdyBmcmFtZScpXHJcbiAgICAgIC5zZXREZXNjKCdUaGUgdG9wIGFyZWEgb2YgdGhlIGFwcCB1c2VzIHlvdXIgYWNjZW50IGNvbG9yLicpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jb2xvcmZ1bEZyYW1lKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jb2xvcmZ1bEZyYW1lID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0NvbG9yZnVsIGFjdGl2ZSBzdGF0ZXMnKVxyXG4gICAgICAuc2V0RGVzYygnQWN0aXZlIGZpbGUgYW5kIG1lbnUgaXRlbXMgdXNlIHlvdXIgYWNjZW50IGNvbG9yLicpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jb2xvcmZ1bEFjdGl2ZVN0YXRlcylcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY29sb3JmdWxBY3RpdmVTdGF0ZXMgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnQ29sb3JmdWwgaGVhZGluZ3MnKVxyXG4gICAgICAuc2V0RGVzYygnSGVhZGluZ3MgdXNlIGEgZGlmZmVyZW50IGNvbG9yIGZvciBlYWNoIHNpemUuJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmNvbG9yZnVsSGVhZGluZ3MpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmNvbG9yZnVsSGVhZGluZ3MgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnTWluaW1hbCBzdGF0dXMgYmFyJylcclxuICAgICAgLnNldERlc2MoJ1R1cm4gb2ZmIHRvIHVzZSBmdWxsLXdpZHRoIHN0YXR1cyBiYXIuJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLm1pbmltYWxTdGF0dXMpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLm1pbmltYWxTdGF0dXMgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdUcmltIGZpbGUgbmFtZXMgaW4gc2lkZWJhcnMnKVxyXG4gICAgICAuc2V0RGVzYygnVXNlIGVsbGlwc2VzIHRvIGZpdCBmaWxlIG5hbWVzIG9uIGEgc2luZ2xlIGxpbmUuJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLnRyaW1OYW1lcylcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudHJpbU5hbWVzID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSkpO1xyXG5cclxuICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgICAgLnNldE5hbWUoJ1dvcmtzcGFjZSBib3JkZXJzJylcclxuICAgICAgICAuc2V0RGVzYygnRGlzcGxheSBkaXZpZGVyIGxpbmVzIGJldHdlZW4gd29ya3NwYWNlIGVsZW1lbnRzLicpXHJcbiAgICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmJvcmRlcnNUb2dnbGUpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmJvcmRlcnNUb2dnbGUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdGb2N1cyBtb2RlJylcclxuICAgICAgLnNldERlc2MoJ0hpZGUgdGFiIGJhciBhbmQgc3RhdHVzIGJhciwgaG92ZXIgdG8gZGlzcGxheS4gQ2FuIGJlIHRvZ2dsZWQgdmlhIGhvdGtleS4nKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZm9jdXNNb2RlKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5mb2N1c01vZGUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnVW5kZXJsaW5lIGludGVybmFsIGxpbmtzJylcclxuICAgICAgLnNldERlc2MoJ1Nob3cgdW5kZXJsaW5lcyBvbiBpbnRlcm5hbCBsaW5rcy4nKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MudW5kZXJsaW5lSW50ZXJuYWwpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnVuZGVybGluZUludGVybmFsID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ1VuZGVybGluZSBleHRlcm5hbCBsaW5rcycpXHJcbiAgICAgIC5zZXREZXNjKCdTaG93IHVuZGVybGluZXMgb24gZXh0ZXJuYWwgbGlua3MuJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLnVuZGVybGluZUV4dGVybmFsKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy51bmRlcmxpbmVFeHRlcm5hbCA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdNYXhpbWl6ZSBtZWRpYScpXHJcbiAgICAgIC5zZXREZXNjKCdJbWFnZXMgYW5kIHZpZGVvcyBmaWxsIHRoZSB3aWR0aCBvZiB0aGUgbGluZS4nKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZnVsbFdpZHRoTWVkaWEpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmZ1bGxXaWR0aE1lZGlhID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSkpO1xyXG5cclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdicicpO1xyXG5cclxuICAgIGNvbnN0IGxheW91dFNlY3Rpb24gPSBjb250YWluZXJFbC5jcmVhdGVFbCgnZGl2Jywge2NsczogJ3NldHRpbmctaXRlbSBzZXR0aW5nLWl0ZW0taGVhZGluZyd9KTtcclxuXHJcbiAgICBjb25zdCBsYXlvdXRTZWN0aW9uSW5mbyA9ICBsYXlvdXRTZWN0aW9uLmNyZWF0ZUVsKCdkaXYnLCB7Y2xzOiAnc2V0dGluZy1pdGVtLWluZm8nfSk7XHJcblxyXG4gICAgbGF5b3V0U2VjdGlvbkluZm8uY3JlYXRlRWwoJ2RpdicsIHt0ZXh0OiAnTGF5b3V0JywgY2xzOiAnc2V0dGluZy1pdGVtLW5hbWUnfSk7XHJcblxyXG4gICAgY29uc3QgbGF5b3V0U2VjdGlvbkRlc2MgPSBsYXlvdXRTZWN0aW9uSW5mby5jcmVhdGVFbCgnZGl2Jywge2NsczogJ3NldHRpbmctaXRlbS1kZXNjcmlwdGlvbid9KTtcclxuXHJcbiAgICAgIGxheW91dFNlY3Rpb25EZXNjLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdzcGFuJywge1xyXG4gICAgICAgICAgdGV4dDogJ1RoZXNlIG9wdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBvbiBhIHBlci1maWxlIGJhc2lzLCBzZWUgJ1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICBsYXlvdXRTZWN0aW9uRGVzYy5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnYScsIHtcclxuICAgICAgICAgIHRleHQ6IFwiZG9jdW1lbnRhdGlvblwiLFxyXG4gICAgICAgICAgaHJlZjogXCJodHRwczovL21pbmltYWwuZ3VpZGUvZmVhdHVyZXMvYmxvY2std2lkdGhcIixcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgICBsYXlvdXRTZWN0aW9uRGVzYy5hcHBlbmRUZXh0KCcgZm9yIGRldGFpbHMuJyk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdJbWFnZSBncmlkcycpXHJcbiAgICAgIC5zZXREZXNjKCdUdXJuIGNvbnNlY3V0aXZlIGltYWdlcyBpbnRvIGNvbHVtbnMgXHUyMDE0IHRvIG1ha2UgYSBuZXcgcm93LCBhZGQgYW4gZXh0cmEgbGluZSBicmVhayBiZXR3ZWVuIGltYWdlcy4nKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuaW1nR3JpZClcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuaW1nR3JpZCA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0NoYXJ0IHdpZHRoJylcclxuICAgICAgLnNldERlc2MoJ0RlZmF1bHQgd2lkdGggZm9yIGNoYXJ0IGJsb2Nrcy4nKVxyXG4gICAgICAuYWRkRHJvcGRvd24oZHJvcGRvd24gPT4gZHJvcGRvd25cclxuICAgICAgICAuYWRkT3B0aW9uKCdjaGFydC1kZWZhdWx0LXdpZHRoJywnRGVmYXVsdCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignY2hhcnQtd2lkZScsJ1dpZGUgbGluZSB3aWR0aCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignY2hhcnQtbWF4JywnTWF4aW11bSBsaW5lIHdpZHRoJylcclxuICAgICAgICAuYWRkT3B0aW9uKCdjaGFydC0xMDAnLCcxMDAlIHBhbmUgd2lkdGgnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jaGFydFdpZHRoKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jaGFydFdpZHRoID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnSWZyYW1lIHdpZHRoJylcclxuICAgICAgLnNldERlc2MoJ0RlZmF1bHQgd2lkdGggZm9yIGlmcmFtZSBibG9ja3MuJylcclxuICAgICAgLmFkZERyb3Bkb3duKGRyb3Bkb3duID0+IGRyb3Bkb3duXHJcbiAgICAgICAgLmFkZE9wdGlvbignaWZyYW1lLWRlZmF1bHQtd2lkdGgnLCdEZWZhdWx0JylcclxuICAgICAgICAuYWRkT3B0aW9uKCdpZnJhbWUtd2lkZScsJ1dpZGUgbGluZSB3aWR0aCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignaWZyYW1lLW1heCcsJ01heGltdW0gbGluZSB3aWR0aCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignaWZyYW1lLTEwMCcsJzEwMCUgcGFuZSB3aWR0aCcpXHJcbiAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmlmcmFtZVdpZHRoKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5pZnJhbWVXaWR0aCA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0ltYWdlIHdpZHRoJylcclxuICAgICAgLnNldERlc2MoJ0RlZmF1bHQgd2lkdGggZm9yIGltYWdlIGJsb2Nrcy4nKVxyXG4gICAgICAuYWRkRHJvcGRvd24oZHJvcGRvd24gPT4gZHJvcGRvd25cclxuICAgICAgICAuYWRkT3B0aW9uKCdpbWctZGVmYXVsdC13aWR0aCcsJ0RlZmF1bHQnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2ltZy13aWRlJywnV2lkZSBsaW5lIHdpZHRoJylcclxuICAgICAgICAuYWRkT3B0aW9uKCdpbWctbWF4JywnTWF4aW11bSBsaW5lIHdpZHRoJylcclxuICAgICAgICAuYWRkT3B0aW9uKCdpbWctMTAwJywnMTAwJSBwYW5lIHdpZHRoJylcclxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuaW1nV2lkdGgpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmltZ1dpZHRoID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnTWFwIHdpZHRoJylcclxuICAgICAgLnNldERlc2MoJ0RlZmF1bHQgd2lkdGggZm9yIG1hcCBibG9ja3MuJylcclxuICAgICAgLmFkZERyb3Bkb3duKGRyb3Bkb3duID0+IGRyb3Bkb3duXHJcbiAgICAgICAgLmFkZE9wdGlvbignbWFwLWRlZmF1bHQtd2lkdGgnLCdEZWZhdWx0JylcclxuICAgICAgICAuYWRkT3B0aW9uKCdtYXAtd2lkZScsJ1dpZGUgbGluZSB3aWR0aCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignbWFwLW1heCcsJ01heGltdW0gbGluZSB3aWR0aCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignbWFwLTEwMCcsJzEwMCUgcGFuZSB3aWR0aCcpXHJcbiAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLm1hcFdpZHRoKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5tYXBXaWR0aCA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ1RhYmxlIHdpZHRoJylcclxuICAgICAgLnNldERlc2MoJ0RlZmF1bHQgd2lkdGggZm9yIHRhYmxlIGFuZCBEYXRhdmlldyBibG9ja3MuJylcclxuICAgICAgLmFkZERyb3Bkb3duKGRyb3Bkb3duID0+IGRyb3Bkb3duXHJcbiAgICAgICAgLmFkZE9wdGlvbigndGFibGUtZGVmYXVsdC13aWR0aCcsJ0RlZmF1bHQnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ3RhYmxlLXdpZGUnLCdXaWRlIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ3RhYmxlLW1heCcsJ01heGltdW0gbGluZSB3aWR0aCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbigndGFibGUtMTAwJywnMTAwJSBwYW5lIHdpZHRoJylcclxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MudGFibGVXaWR0aClcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudGFibGVXaWR0aCA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnYnInKTtcclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdkaXYnLCB7dGV4dDogJ1R5cG9ncmFwaHknLCBjbHM6ICdzZXR0aW5nLWl0ZW0gc2V0dGluZy1pdGVtLWhlYWRpbmcnfSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdUZXh0IGZvbnQgc2l6ZScpXHJcbiAgICAgIC5zZXREZXNjKCdVc2VkIGZvciB0aGUgbWFpbiB0ZXh0IChkZWZhdWx0IDE2KS4nKVxyXG4gICAgICAuYWRkVGV4dCh0ZXh0ID0+IHRleHQuc2V0UGxhY2Vob2xkZXIoJzE2JylcclxuICAgICAgICAuc2V0VmFsdWUoKHRoaXMucGx1Z2luLnNldHRpbmdzLnRleHROb3JtYWwgfHwgJycpICsgJycpXHJcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudGV4dE5vcm1hbCA9IHBhcnNlRmxvYXQodmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0Rm9udFNpemUoKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdTbWFsbCBmb250IHNpemUnKVxyXG4gICAgICAuc2V0RGVzYygnVXNlZCBmb3IgdGV4dCBpbiB0aGUgc2lkZWJhcnMgYW5kIHRhYnMgKGRlZmF1bHQgMTMpLicpXHJcbiAgICAgIC5hZGRUZXh0KHRleHQgPT4gdGV4dC5zZXRQbGFjZWhvbGRlcignMTMnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSgodGhpcy5wbHVnaW4uc2V0dGluZ3MudGV4dFNtYWxsIHx8ICcnKSArICcnKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnRleHRTbWFsbCA9IHBhcnNlRmxvYXQodmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0xpbmUgaGVpZ2h0JylcclxuICAgICAgLnNldERlc2MoJ0xpbmUgaGVpZ2h0IG9mIHRleHQgKGRlZmF1bHQgMS41KS4nKVxyXG4gICAgICAuYWRkVGV4dCh0ZXh0ID0+IHRleHQuc2V0UGxhY2Vob2xkZXIoJzEuNScpXHJcbiAgICAgICAgLnNldFZhbHVlKCh0aGlzLnBsdWdpbi5zZXR0aW5ncy5saW5lSGVpZ2h0IHx8ICcnKSArICcnKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmxpbmVIZWlnaHQgPSBwYXJzZUZsb2F0KHZhbHVlKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdOb3JtYWwgbGluZSB3aWR0aCcpXHJcbiAgICAgIC5zZXREZXNjKCdOdW1iZXIgb2YgY2hhcmFjdGVycyBwZXIgbGluZSAoZGVmYXVsdCA0MCkuJylcclxuICAgICAgLmFkZFRleHQodGV4dCA9PiB0ZXh0LnNldFBsYWNlaG9sZGVyKCc0MCcpXHJcbiAgICAgICAgLnNldFZhbHVlKCh0aGlzLnBsdWdpbi5zZXR0aW5ncy5saW5lV2lkdGggfHwgJycpICsgJycpXHJcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubGluZVdpZHRoID0gcGFyc2VJbnQodmFsdWUudHJpbSgpKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdXaWRlIGxpbmUgd2lkdGgnKVxyXG4gICAgICAuc2V0RGVzYygnTnVtYmVyIG9mIGNoYXJhY3RlcnMgcGVyIGxpbmUgZm9yIHdpZGUgZWxlbWVudHMgKGRlZmF1bHQgNTApLicpXHJcbiAgICAgIC5hZGRUZXh0KHRleHQgPT4gdGV4dC5zZXRQbGFjZWhvbGRlcignNTAnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSgodGhpcy5wbHVnaW4uc2V0dGluZ3MubGluZVdpZHRoV2lkZSB8fCAnJykgKyAnJylcclxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5saW5lV2lkdGhXaWRlID0gcGFyc2VJbnQodmFsdWUudHJpbSgpKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdNYXhpbXVtIGxpbmUgd2lkdGggJScpXHJcbiAgICAgIC5zZXREZXNjKCdQZXJjZW50YWdlIG9mIHNwYWNlIGluc2lkZSBhIHBhbmUgdGhhdCBhIGxpbmUgY2FuIGZpbGwgKGRlZmF1bHQgODgpLicpXHJcbiAgICAgIC5hZGRUZXh0KHRleHQgPT4gdGV4dC5zZXRQbGFjZWhvbGRlcignODgnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSgodGhpcy5wbHVnaW4uc2V0dGluZ3MubWF4V2lkdGggfHwgJycpICsgJycpXHJcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubWF4V2lkdGggPSBwYXJzZUludCh2YWx1ZS50cmltKCkpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgIH0pKTtcclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnRWRpdG9yIGZvbnQnKVxyXG4gICAgICAuc2V0RGVzYygnT3ZlcnJpZGVzIHRoZSB0ZXh0IGZvbnQgZGVmaW5lZCBpbiBPYnNpZGlhbiBBcHBlYXJhbmNlIHNldHRpbmdzIHdoZW4gaW4gZWRpdCBtb2RlLicpXHJcbiAgICAgIC5hZGRUZXh0KHRleHQgPT4gdGV4dC5zZXRQbGFjZWhvbGRlcignJylcclxuICAgICAgICAuc2V0VmFsdWUoKHRoaXMucGx1Z2luLnNldHRpbmdzLmVkaXRvckZvbnQgfHwgJycpICsgJycpXHJcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZWRpdG9yRm9udCA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgfVxyXG59XHJcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FB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 diff --git a/.obsidian/plugins/obsidian-minimal-settings/manifest.json b/.obsidian/plugins/obsidian-minimal-settings/manifest.json index c2d0946..72ec07d 100644 --- a/.obsidian/plugins/obsidian-minimal-settings/manifest.json +++ b/.obsidian/plugins/obsidian-minimal-settings/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-minimal-settings", "name": "Minimal Theme Settings", - "version": "7.3.1", + "version": "7.5.0", "minAppVersion": "1.1.9", "description": "Change the colors, fonts and features of Minimal Theme.", "author": "@kepano", diff --git a/.obsidian/plugins/obsidian-outliner/main.js b/.obsidian/plugins/obsidian-outliner/main.js index 798c593..0abe715 100644 --- a/.obsidian/plugins/obsidian-outliner/main.js +++ b/.obsidian/plugins/obsidian-outliner/main.js @@ -19,6 +19,8 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */ +/* global Reflect, Promise, SuppressedError, Symbol */ + function __awaiter(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } @@ -30,6 +32,11 @@ function __awaiter(thisArg, _arguments, P, generator) { }); } +typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; +}; + class MoveCursorToPreviousUnfoldedLine { constructor(root) { this.root = root; @@ -2169,109 +2176,6 @@ class MetaBackspaceBehaviourOverride { } } -class ReleaseNotesModal extends obsidian.Modal { - constructor(plugin, title, content, cb) { - super(plugin.app); - this.plugin = plugin; - this.title = title; - this.content = content; - this.cb = cb; - } - onOpen() { - return __awaiter(this, void 0, void 0, function* () { - this.titleEl.setText(this.title); - obsidian.MarkdownRenderer.renderMarkdown(this.content, this.contentEl, "", this.plugin); - }); - } - onClose() { - this.cb(); - } -} -function compareReleases(a, b) { - const [aMajor, aMinor, aPatch] = a.split(".", 3).map(Number); - const [bMajor, bMinor, bPatch] = b.split(".", 3).map(Number); - if (aMajor === bMajor) { - if (aMinor === bMinor) { - return aPatch - bPatch; - } - return aMinor - bMinor; - } - return aMajor - bMajor; -} -function parseChangelog() { - const markdown = "## 4.7.0\n\n### Drag-and-Drop\n\nDrag-and-drop got a few updates and it's now enabled by default for all Obsidian Desktop users!\n\nYou can still disable this feature in the plugin's settings.\n\nIf you find a bug, please report the [issue](https://github.com/vslinko/obsidian-outliner/issues). Leave your other feedback [here](https://github.com/vslinko/obsidian-outliner/discussions).\n\n<img src=\"https://raw.githubusercontent.com/vslinko/obsidian-outliner/main/demos/demo4.gif\" style=\"max-width: 100%\" />\n\n## 4.5.0\n\n### Drag-and-Drop (Experimental)\n\nNow you can drag and drop items using your mouse! 🎉\n\nThis feature is experimental and is disabled by default. To enable this feature, open the plugin settings and turn on the `Drag-and-Drop (Experimental)` setting.\n\nIf you find a bug, please report the [issue](https://github.com/vslinko/obsidian-outliner/issues). Leave your other feedback [here](https://github.com/vslinko/obsidian-outliner/discussions/190).\n\n<img src=\"https://raw.githubusercontent.com/vslinko/obsidian-outliner/main/demos/demo3.gif\" style=\"max-width: 100%\" />\n"; - const releaseNotes = []; - let version; - let content = ""; - for (const line of markdown.split("\n")) { - const versionHeaderMatches = /^#+\s+(\d+\.\d+\.\d+)$/.exec(line); - if (versionHeaderMatches) { - if (version && content.trim().length > 0) { - releaseNotes.push([version, content]); - } - version = versionHeaderMatches[1]; - content = line; - content += "\n"; - } - else { - content += line; - content += "\n"; - } - } - if (version && content.trim().length > 0) { - releaseNotes.push([version, content]); - } - return releaseNotes; -} -class ReleaseNotesAnnouncement { - constructor(plugin, settings) { - this.plugin = plugin; - this.settings = settings; - this.modal = null; - this.showModal = (previousRelease = null) => { - let releaseNotes = ""; - for (const [version, content] of parseChangelog()) { - if (compareReleases(version, previousRelease || "0.0.0") > 0) { - releaseNotes += content; - } - } - if (releaseNotes.trim().length === 0) { - return; - } - const modalTitle = `Welcome to Obsidian Outliner ${"4.8.0"}`; - this.modal = new ReleaseNotesModal(this.plugin, modalTitle, releaseNotes, this.handleClose); - this.modal.open(); - }; - this.handleClose = () => __awaiter(this, void 0, void 0, function* () { - if (!this.modal) { - return; - } - this.settings.previousRelease = "4.8.0"; - yield this.settings.save(); - }); - } - load() { - return __awaiter(this, void 0, void 0, function* () { - this.plugin.addCommand({ - id: "show-release-notes", - name: "Show Release Notes", - callback: this.showModal, - }); - this.showModal(this.settings.previousRelease); - }); - } - unload() { - return __awaiter(this, void 0, void 0, function* () { - if (!this.modal) { - return; - } - const modal = this.modal; - this.modal = null; - modal.close(); - }); - } -} - class ObsidianOutlinerPluginSettingTab extends obsidian.PluginSettingTab { constructor(app, plugin, settings) { super(app, plugin); @@ -3325,7 +3229,7 @@ class ObsidianOutlinerPlugin extends obsidian.Plugin { yield this.imeDetector.load(); this.features = [ // service features - new ReleaseNotesAnnouncement(this, this.settings), + // new ReleaseNotesAnnouncement(this, this.settings), new SettingsTab(this, this.settings), new SystemInfo(this, this.settings), // general features @@ -3374,4 +3278,4 @@ class ObsidianOutlinerPlugin extends obsidian.Plugin { } module.exports = ObsidianOutlinerPlugin; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsInNyYy9vcGVyYXRpb25zL01vdmVDdXJzb3JUb1ByZXZpb3VzVW5mb2xkZWRMaW5lLnRzIiwic3JjL2VkaXRvci9pbmRleC50cyIsInNyYy91dGlscy9jcmVhdGVLZXltYXBSdW5DYWxsYmFjay50cyIsInNyYy9mZWF0dXJlcy9BcnJvd0xlZnRBbmRDdHJsQXJyb3dMZWZ0QmVoYXZpb3VyT3ZlcnJpZGUudHMiLCJzcmMvcm9vdC9pbmRleC50cyIsInNyYy9vcGVyYXRpb25zL0RlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kLnRzIiwic3JjL2ZlYXR1cmVzL0JhY2tzcGFjZUJlaGF2aW91ck92ZXJyaWRlLnRzIiwic3JjL2ZlYXR1cmVzL0JldHRlckxpc3RzU3R5bGVzLnRzIiwic3JjL29wZXJhdGlvbnMvU2VsZWN0QWxsQ29udGVudC50cyIsInNyYy9mZWF0dXJlcy9DdHJsQUFuZENtZEFCZWhhdmlvdXJPdmVycmlkZS50cyIsInNyYy9vcGVyYXRpb25zL0RlbGV0ZVRpbGxOZXh0TGluZUNvbnRlbnRTdGFydC50cyIsInNyYy9mZWF0dXJlcy9EZWxldGVCZWhhdmlvdXJPdmVycmlkZS50cyIsInNyYy9vcGVyYXRpb25zL01vdmVMaXN0VG9EaWZmZXJlbnRQb3NpdGlvbi50cyIsInNyYy9mZWF0dXJlcy9EcmFnQW5kRHJvcC50cyIsInNyYy9vcGVyYXRpb25zL0tlZXBDdXJzb3JPdXRzaWRlRm9sZGVkTGluZXMudHMiLCJzcmMvb3BlcmF0aW9ucy9LZWVwQ3Vyc29yV2l0aGluTGlzdENvbnRlbnQudHMiLCJzcmMvZmVhdHVyZXMvRWRpdG9yU2VsZWN0aW9uc0JlaGF2aW91ck92ZXJyaWRlLnRzIiwic3JjL3V0aWxzL2NoZWNrYm94UmUudHMiLCJzcmMvdXRpbHMvaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3gudHMiLCJzcmMvb3BlcmF0aW9ucy9DcmVhdGVOZXdJdGVtLnRzIiwic3JjL29wZXJhdGlvbnMvT3V0ZGVudExpc3QudHMiLCJzcmMvb3BlcmF0aW9ucy9PdXRkZW50TGlzdElmSXRzRW1wdHkudHMiLCJzcmMvZmVhdHVyZXMvRW50ZXJCZWhhdmlvdXJPdmVycmlkZS50cyIsInNyYy91dGlscy9jcmVhdGVFZGl0b3JDYWxsYmFjay50cyIsInNyYy9mZWF0dXJlcy9MaXN0c0ZvbGRpbmdDb21tYW5kcy50cyIsInNyYy9vcGVyYXRpb25zL0luZGVudExpc3QudHMiLCJzcmMvb3BlcmF0aW9ucy9Nb3ZlTGlzdERvd24udHMiLCJzcmMvb3BlcmF0aW9ucy9Nb3ZlTGlzdFVwLnRzIiwic3JjL2ZlYXR1cmVzL0xpc3RzTW92ZW1lbnRDb21tYW5kcy50cyIsInNyYy9vcGVyYXRpb25zL0RlbGV0ZVRpbGxDdXJyZW50TGluZUNvbnRlbnRTdGFydC50cyIsInNyYy9mZWF0dXJlcy9NZXRhQmFja3NwYWNlQmVoYXZpb3VyT3ZlcnJpZGUudHMiLCJzcmMvZmVhdHVyZXMvUmVsZWFzZU5vdGVzQW5ub3VuY2VtZW50LnRzIiwic3JjL2ZlYXR1cmVzL1NldHRpbmdzVGFiLnRzIiwic3JjL2ZlYXR1cmVzL1NoaWZ0VGFiQmVoYXZpb3VyT3ZlcnJpZGUudHMiLCJzcmMvZmVhdHVyZXMvU3lzdGVtSW5mby50cyIsInNyYy9mZWF0dXJlcy9UYWJCZWhhdmlvdXJPdmVycmlkZS50cyIsInNyYy9mZWF0dXJlcy9WZXJ0aWNhbExpbmVzLnRzIiwic3JjL3NlcnZpY2VzL0NoYW5nZXNBcHBsaWNhdG9yLnRzIiwic3JjL3NlcnZpY2VzL0lNRURldGVjdG9yLnRzIiwic3JjL3NlcnZpY2VzL0xvZ2dlci50cyIsInNyYy9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzLnRzIiwic3JjL3NlcnZpY2VzL09wZXJhdGlvblBlcmZvcm1lci50cyIsInNyYy9zZXJ2aWNlcy9QYXJzZXIudHMiLCJzcmMvc2VydmljZXMvU2V0dGluZ3MudHMiLCJzcmMvT2JzaWRpYW5PdXRsaW5lclBsdWdpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXNEZWNvcmF0ZShjdG9yLCBkZXNjcmlwdG9ySW4sIGRlY29yYXRvcnMsIGNvbnRleHRJbiwgaW5pdGlhbGl6ZXJzLCBleHRyYUluaXRpYWxpemVycykge1xyXG4gICAgZnVuY3Rpb24gYWNjZXB0KGYpIHsgaWYgKGYgIT09IHZvaWQgMCAmJiB0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRnVuY3Rpb24gZXhwZWN0ZWRcIik7IHJldHVybiBmOyB9XHJcbiAgICB2YXIga2luZCA9IGNvbnRleHRJbi5raW5kLCBrZXkgPSBraW5kID09PSBcImdldHRlclwiID8gXCJnZXRcIiA6IGtpbmQgPT09IFwic2V0dGVyXCIgPyBcInNldFwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgdmFyIHRhcmdldCA9ICFkZXNjcmlwdG9ySW4gJiYgY3RvciA/IGNvbnRleHRJbltcInN0YXRpY1wiXSA/IGN0b3IgOiBjdG9yLnByb3RvdHlwZSA6IG51bGw7XHJcbiAgICB2YXIgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JJbiB8fCAodGFyZ2V0ID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGNvbnRleHRJbi5uYW1lKSA6IHt9KTtcclxuICAgIHZhciBfLCBkb25lID0gZmFsc2U7XHJcbiAgICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgIHZhciBjb250ZXh0ID0ge307XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4pIGNvbnRleHRbcF0gPSBwID09PSBcImFjY2Vzc1wiID8ge30gOiBjb250ZXh0SW5bcF07XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4uYWNjZXNzKSBjb250ZXh0LmFjY2Vzc1twXSA9IGNvbnRleHRJbi5hY2Nlc3NbcF07XHJcbiAgICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplciA9IGZ1bmN0aW9uIChmKSB7IGlmIChkb25lKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkXCIpOyBleHRyYUluaXRpYWxpemVycy5wdXNoKGFjY2VwdChmIHx8IG51bGwpKTsgfTtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gKDAsIGRlY29yYXRvcnNbaV0pKGtpbmQgPT09IFwiYWNjZXNzb3JcIiA/IHsgZ2V0OiBkZXNjcmlwdG9yLmdldCwgc2V0OiBkZXNjcmlwdG9yLnNldCB9IDogZGVzY3JpcHRvcltrZXldLCBjb250ZXh0KTtcclxuICAgICAgICBpZiAoa2luZCA9PT0gXCJhY2Nlc3NvclwiKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgdHlwZW9mIHJlc3VsdCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZFwiKTtcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmdldCkpIGRlc2NyaXB0b3IuZ2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LnNldCkpIGRlc2NyaXB0b3Iuc2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmluaXQpKSBpbml0aWFsaXplcnMucHVzaChfKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoXyA9IGFjY2VwdChyZXN1bHQpKSB7XHJcbiAgICAgICAgICAgIGlmIChraW5kID09PSBcImZpZWxkXCIpIGluaXRpYWxpemVycy5wdXNoKF8pO1xyXG4gICAgICAgICAgICBlbHNlIGRlc2NyaXB0b3Jba2V5XSA9IF87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRhcmdldCkgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgY29udGV4dEluLm5hbWUsIGRlc2NyaXB0b3IpO1xyXG4gICAgZG9uZSA9IHRydWU7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19ydW5Jbml0aWFsaXplcnModGhpc0FyZywgaW5pdGlhbGl6ZXJzLCB2YWx1ZSkge1xyXG4gICAgdmFyIHVzZVZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRpYWxpemVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhbHVlID0gdXNlVmFsdWUgPyBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnLCB2YWx1ZSkgOiBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1c2VWYWx1ZSA/IHZhbHVlIDogdm9pZCAwO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcHJvcEtleSh4KSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHggPT09IFwic3ltYm9sXCIgPyB4IDogXCJcIi5jb25jYXQoeCk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zZXRGdW5jdGlvbk5hbWUoZiwgbmFtZSwgcHJlZml4KSB7XHJcbiAgICBpZiAodHlwZW9mIG5hbWUgPT09IFwic3ltYm9sXCIpIG5hbWUgPSBuYW1lLmRlc2NyaXB0aW9uID8gXCJbXCIuY29uY2F0KG5hbWUuZGVzY3JpcHRpb24sIFwiXVwiKSA6IFwiXCI7XHJcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIFwibmFtZVwiLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHByZWZpeCA/IFwiXCIuY29uY2F0KHByZWZpeCwgXCIgXCIsIG5hbWUpIDogbmFtZSB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcclxuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XHJcbiAgICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcclxuICAgIH1cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XHJcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgb1trMl0gPSBtW2tdO1xyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xyXG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXHJcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXHJcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xyXG4gICAgcmV0dXJuIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XHJcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcclxuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcclxuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IGZhbHNlIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEluKHN0YXRlLCByZWNlaXZlcikge1xyXG4gICAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XHJcbiAgICByZXR1cm4gdHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciA9PT0gc3RhdGUgOiBzdGF0ZS5oYXMocmVjZWl2ZXIpO1xyXG59XHJcbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBMaXN0TGluZSwgUG9zaXRpb24sIFJvb3QgfSBmcm9tIFwiLi4vcm9vdFwiO1xuXG5leHBvcnQgY2xhc3MgTW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZExpbmUgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0ID0gdGhpcy5yb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGN1cnNvciA9IHRoaXMucm9vdC5nZXRDdXJzb3IoKTtcbiAgICBjb25zdCBsaW5lcyA9IGxpc3QuZ2V0TGluZXNJbmZvKCk7XG4gICAgY29uc3QgbGluZU5vID0gbGluZXMuZmluZEluZGV4KChsKSA9PiB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBjdXJzb3IuY2ggPT09IGwuZnJvbS5jaCArIGxpc3QuZ2V0Q2hlY2tib3hMZW5ndGgoKSAmJlxuICAgICAgICBjdXJzb3IubGluZSA9PT0gbC5mcm9tLmxpbmVcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpZiAobGluZU5vID09PSAwKSB7XG4gICAgICB0aGlzLm1vdmVDdXJzb3JUb1ByZXZpb3VzVW5mb2xkZWRJdGVtKHJvb3QsIGN1cnNvcik7XG4gICAgfSBlbHNlIGlmIChsaW5lTm8gPiAwKSB7XG4gICAgICB0aGlzLm1vdmVDdXJzb3JUb1ByZXZpb3VzTm90ZUxpbmUocm9vdCwgbGluZXMsIGxpbmVObyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtb3ZlQ3Vyc29yVG9QcmV2aW91c05vdGVMaW5lKFxuICAgIHJvb3Q6IFJvb3QsXG4gICAgbGluZXM6IExpc3RMaW5lW10sXG4gICAgbGluZU5vOiBudW1iZXJcbiAgKSB7XG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICByb290LnJlcGxhY2VDdXJzb3IobGluZXNbbGluZU5vIC0gMV0udG8pO1xuICB9XG5cbiAgcHJpdmF0ZSBtb3ZlQ3Vyc29yVG9QcmV2aW91c1VuZm9sZGVkSXRlbShyb290OiBSb290LCBjdXJzb3I6IFBvc2l0aW9uKSB7XG4gICAgY29uc3QgcHJldiA9IHJvb3QuZ2V0TGlzdFVuZGVyTGluZShjdXJzb3IubGluZSAtIDEpO1xuXG4gICAgaWYgKCFwcmV2KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICBpZiAocHJldi5pc0ZvbGRlZCgpKSB7XG4gICAgICBjb25zdCBmb2xkUm9vdCA9IHByZXYuZ2V0VG9wRm9sZFJvb3QoKTtcbiAgICAgIGNvbnN0IGZpcnN0TGluZUVuZCA9IGZvbGRSb290LmdldExpbmVzSW5mbygpWzBdLnRvO1xuICAgICAgcm9vdC5yZXBsYWNlQ3Vyc29yKGZpcnN0TGluZUVuZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvb3QucmVwbGFjZUN1cnNvcihwcmV2LmdldExhc3RMaW5lQ29udGVudEVuZCgpKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IEVkaXRvciwgZWRpdG9ySW5mb0ZpZWxkIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7XG4gIGZvbGRFZmZlY3QsXG4gIGZvbGRhYmxlLFxuICBmb2xkZWRSYW5nZXMsXG4gIHVuZm9sZEVmZmVjdCxcbn0gZnJvbSBcIkBjb2RlbWlycm9yL2xhbmd1YWdlXCI7XG5pbXBvcnQgeyBFZGl0b3JTdGF0ZSB9IGZyb20gXCJAY29kZW1pcnJvci9zdGF0ZVwiO1xuaW1wb3J0IHsgRWRpdG9yVmlldywgcnVuU2NvcGVIYW5kbGVycyB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmV4cG9ydCBjbGFzcyBNeUVkaXRvclBvc2l0aW9uIHtcbiAgbGluZTogbnVtYmVyO1xuICBjaDogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgTXlFZGl0b3JSYW5nZSB7XG4gIGZyb206IE15RWRpdG9yUG9zaXRpb247XG4gIHRvOiBNeUVkaXRvclBvc2l0aW9uO1xufVxuXG5leHBvcnQgY2xhc3MgTXlFZGl0b3JTZWxlY3Rpb24ge1xuICBhbmNob3I6IE15RWRpdG9yUG9zaXRpb247XG4gIGhlYWQ6IE15RWRpdG9yUG9zaXRpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFZGl0b3JGcm9tU3RhdGUoc3RhdGU6IEVkaXRvclN0YXRlKSB7XG4gIGNvbnN0IHsgZWRpdG9yIH0gPSBzdGF0ZS5maWVsZChlZGl0b3JJbmZvRmllbGQpO1xuXG4gIGlmICghZWRpdG9yKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gbmV3IE15RWRpdG9yKGVkaXRvcik7XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgT2JzaWRpYW5ab29tUGx1Z2luPzoge1xuICAgICAgZ2V0Wm9vbVJhbmdlKGU6IEVkaXRvcik6IE15RWRpdG9yUmFuZ2U7XG4gICAgICB6b29tT3V0KGU6IEVkaXRvcik6IHZvaWQ7XG4gICAgICB6b29tSW4oZTogRWRpdG9yLCBsaW5lOiBudW1iZXIpOiB2b2lkO1xuICAgICAgcmVmcmVzaFpvb20/KGU6IEVkaXRvcik6IHZvaWQ7XG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmb2xkSW5zaWRlKHZpZXc6IEVkaXRvclZpZXcsIGZyb206IG51bWJlciwgdG86IG51bWJlcikge1xuICBsZXQgZm91bmQ6IHsgZnJvbTogbnVtYmVyOyB0bzogbnVtYmVyIH0gfCBudWxsID0gbnVsbDtcbiAgZm9sZGVkUmFuZ2VzKHZpZXcuc3RhdGUpLmJldHdlZW4oZnJvbSwgdG8sIChmcm9tLCB0bykgPT4ge1xuICAgIGlmICghZm91bmQgfHwgZm91bmQuZnJvbSA+IGZyb20pIGZvdW5kID0geyBmcm9tLCB0byB9O1xuICB9KTtcbiAgcmV0dXJuIGZvdW5kO1xufVxuXG5leHBvcnQgY2xhc3MgTXlFZGl0b3Ige1xuICBwcml2YXRlIHZpZXc6IEVkaXRvclZpZXc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlOiBFZGl0b3IpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHRoaXMudmlldyA9ICh0aGlzLmUgYXMgYW55KS5jbTtcbiAgfVxuXG4gIGdldEN1cnNvcigpOiBNeUVkaXRvclBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5lLmdldEN1cnNvcigpO1xuICB9XG5cbiAgZ2V0TGluZShuOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmUuZ2V0TGluZShuKTtcbiAgfVxuXG4gIGxhc3RMaW5lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZS5sYXN0TGluZSgpO1xuICB9XG5cbiAgbGlzdFNlbGVjdGlvbnMoKTogTXlFZGl0b3JTZWxlY3Rpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuZS5saXN0U2VsZWN0aW9ucygpO1xuICB9XG5cbiAgZ2V0UmFuZ2UoZnJvbTogTXlFZGl0b3JQb3NpdGlvbiwgdG86IE15RWRpdG9yUG9zaXRpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmUuZ2V0UmFuZ2UoZnJvbSwgdG8pO1xuICB9XG5cbiAgcmVwbGFjZVJhbmdlKFxuICAgIHJlcGxhY2VtZW50OiBzdHJpbmcsXG4gICAgZnJvbTogTXlFZGl0b3JQb3NpdGlvbixcbiAgICB0bzogTXlFZGl0b3JQb3NpdGlvblxuICApOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5lLnJlcGxhY2VSYW5nZShyZXBsYWNlbWVudCwgZnJvbSwgdG8pO1xuICB9XG5cbiAgc2V0U2VsZWN0aW9ucyhzZWxlY3Rpb25zOiBNeUVkaXRvclNlbGVjdGlvbltdKTogdm9pZCB7XG4gICAgdGhpcy5lLnNldFNlbGVjdGlvbnMoc2VsZWN0aW9ucyk7XG4gIH1cblxuICBzZXRWYWx1ZSh0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmUuc2V0VmFsdWUodGV4dCk7XG4gIH1cblxuICBnZXRWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmUuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIG9mZnNldFRvUG9zKG9mZnNldDogbnVtYmVyKTogTXlFZGl0b3JQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZS5vZmZzZXRUb1BvcyhvZmZzZXQpO1xuICB9XG5cbiAgcG9zVG9PZmZzZXQocG9zOiBNeUVkaXRvclBvc2l0aW9uKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5lLnBvc1RvT2Zmc2V0KHBvcyk7XG4gIH1cblxuICBmb2xkKG46IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHsgdmlldyB9ID0gdGhpcztcbiAgICBjb25zdCBsID0gdmlldy5saW5lQmxvY2tBdCh2aWV3LnN0YXRlLmRvYy5saW5lKG4gKyAxKS5mcm9tKTtcbiAgICBjb25zdCByYW5nZSA9IGZvbGRhYmxlKHZpZXcuc3RhdGUsIGwuZnJvbSwgbC50byk7XG5cbiAgICBpZiAoIXJhbmdlIHx8IHJhbmdlLmZyb20gPT09IHJhbmdlLnRvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmlldy5kaXNwYXRjaCh7IGVmZmVjdHM6IFtmb2xkRWZmZWN0Lm9mKHJhbmdlKV0gfSk7XG4gIH1cblxuICB1bmZvbGQobjogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgeyB2aWV3IH0gPSB0aGlzO1xuICAgIGNvbnN0IGwgPSB2aWV3LmxpbmVCbG9ja0F0KHZpZXcuc3RhdGUuZG9jLmxpbmUobiArIDEpLmZyb20pO1xuICAgIGNvbnN0IHJhbmdlID0gZm9sZEluc2lkZSh2aWV3LCBsLmZyb20sIGwudG8pO1xuXG4gICAgaWYgKCFyYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZpZXcuZGlzcGF0Y2goeyBlZmZlY3RzOiBbdW5mb2xkRWZmZWN0Lm9mKHJhbmdlKV0gfSk7XG4gIH1cblxuICBnZXRBbGxGb2xkZWRMaW5lcygpOiBudW1iZXJbXSB7XG4gICAgY29uc3QgYyA9IGZvbGRlZFJhbmdlcyh0aGlzLnZpZXcuc3RhdGUpLml0ZXIoKTtcbiAgICBjb25zdCByZXM6IG51bWJlcltdID0gW107XG4gICAgd2hpbGUgKGMudmFsdWUpIHtcbiAgICAgIHJlcy5wdXNoKHRoaXMub2Zmc2V0VG9Qb3MoYy5mcm9tKS5saW5lKTtcbiAgICAgIGMubmV4dCgpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgdHJpZ2dlck9uS2V5RG93bihlOiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgcnVuU2NvcGVIYW5kbGVycyh0aGlzLnZpZXcsIGUsIFwiZWRpdG9yXCIpO1xuICB9XG5cbiAgZ2V0Wm9vbVJhbmdlKCk6IE15RWRpdG9yUmFuZ2UgfCBudWxsIHtcbiAgICBpZiAoIXdpbmRvdy5PYnNpZGlhblpvb21QbHVnaW4pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB3aW5kb3cuT2JzaWRpYW5ab29tUGx1Z2luLmdldFpvb21SYW5nZSh0aGlzLmUpO1xuICB9XG5cbiAgem9vbU91dCgpIHtcbiAgICBpZiAoIXdpbmRvdy5PYnNpZGlhblpvb21QbHVnaW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3aW5kb3cuT2JzaWRpYW5ab29tUGx1Z2luLnpvb21PdXQodGhpcy5lKTtcbiAgfVxuXG4gIHpvb21JbihsaW5lOiBudW1iZXIpIHtcbiAgICBpZiAoIXdpbmRvdy5PYnNpZGlhblpvb21QbHVnaW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3aW5kb3cuT2JzaWRpYW5ab29tUGx1Z2luLnpvb21Jbih0aGlzLmUsIGxpbmUpO1xuICB9XG5cbiAgdHJ5UmVmcmVzaFpvb20obGluZTogbnVtYmVyKSB7XG4gICAgaWYgKCF3aW5kb3cuT2JzaWRpYW5ab29tUGx1Z2luKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHdpbmRvdy5PYnNpZGlhblpvb21QbHVnaW4ucmVmcmVzaFpvb20pIHtcbiAgICAgIHdpbmRvdy5PYnNpZGlhblpvb21QbHVnaW4ucmVmcmVzaFpvb20odGhpcy5lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93Lk9ic2lkaWFuWm9vbVBsdWdpbi56b29tSW4odGhpcy5lLCBsaW5lKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IEVkaXRvclZpZXcgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciwgZ2V0RWRpdG9yRnJvbVN0YXRlIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soY29uZmlnOiB7XG4gIGNoZWNrPzogKGVkaXRvcjogTXlFZGl0b3IpID0+IGJvb2xlYW47XG4gIHJ1bjogKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICBzaG91bGRVcGRhdGU6IGJvb2xlYW47XG4gICAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uOiBib29sZWFuO1xuICB9O1xufSkge1xuICBjb25zdCBjaGVjayA9IGNvbmZpZy5jaGVjayB8fCAoKCkgPT4gdHJ1ZSk7XG4gIGNvbnN0IHsgcnVuIH0gPSBjb25maWc7XG5cbiAgcmV0dXJuICh2aWV3OiBFZGl0b3JWaWV3KTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgZWRpdG9yID0gZ2V0RWRpdG9yRnJvbVN0YXRlKHZpZXcuc3RhdGUpO1xuXG4gICAgaWYgKCFjaGVjayhlZGl0b3IpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgeyBzaG91bGRVcGRhdGUsIHNob3VsZFN0b3BQcm9wYWdhdGlvbiB9ID0gcnVuKGVkaXRvcik7XG5cbiAgICByZXR1cm4gc2hvdWxkVXBkYXRlIHx8IHNob3VsZFN0b3BQcm9wYWdhdGlvbjtcbiAgfTtcbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgTW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZExpbmUgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9Nb3ZlQ3Vyc29yVG9QcmV2aW91c1VuZm9sZGVkTGluZVwiO1xuaW1wb3J0IHsgSU1FRGV0ZWN0b3IgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FRGV0ZWN0b3JcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5pbXBvcnQgeyBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayB9IGZyb20gXCIuLi91dGlscy9jcmVhdGVLZXltYXBSdW5DYWxsYmFja1wiO1xuXG5leHBvcnQgY2xhc3MgQXJyb3dMZWZ0QW5kQ3RybEFycm93TGVmdEJlaGF2aW91ck92ZXJyaWRlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncyxcbiAgICBwcml2YXRlIGltZURldGVjdG9yOiBJTUVEZXRlY3RvcixcbiAgICBwcml2YXRlIG9wZXJhdGlvblBlcmZvcm1lcjogT3BlcmF0aW9uUGVyZm9ybWVyXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFxuICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAge1xuICAgICAgICAgIGtleTogXCJBcnJvd0xlZnRcIixcbiAgICAgICAgICBydW46IGNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgIGNoZWNrOiB0aGlzLmNoZWNrLFxuICAgICAgICAgICAgcnVuOiB0aGlzLnJ1bixcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHdpbjogXCJjLUFycm93TGVmdFwiLFxuICAgICAgICAgIGxpbnV4OiBcImMtQXJyb3dMZWZ0XCIsXG4gICAgICAgICAgcnVuOiBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayh7XG4gICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2V0dGluZ3Mua2VlcEN1cnNvcldpdGhpbkNvbnRlbnQgIT09IFwibmV2ZXJcIiAmJlxuICAgICAgIXRoaXMuaW1lRGV0ZWN0b3IuaXNPcGVuZWQoKVxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBydW4gPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5wZXJmb3JtKFxuICAgICAgKHJvb3QpID0+IG5ldyBNb3ZlQ3Vyc29yVG9QcmV2aW91c1VuZm9sZGVkTGluZShyb290KSxcbiAgICAgIGVkaXRvclxuICAgICk7XG4gIH07XG59XG4iLCJleHBvcnQgZnVuY3Rpb24gY21wUG9zKGE6IFBvc2l0aW9uLCBiOiBQb3NpdGlvbikge1xuICByZXR1cm4gYS5saW5lIC0gYi5saW5lIHx8IGEuY2ggLSBiLmNoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF4UG9zKGE6IFBvc2l0aW9uLCBiOiBQb3NpdGlvbikge1xuICByZXR1cm4gY21wUG9zKGEsIGIpIDwgMCA/IGIgOiBhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWluUG9zKGE6IFBvc2l0aW9uLCBiOiBQb3NpdGlvbikge1xuICByZXR1cm4gY21wUG9zKGEsIGIpIDwgMCA/IGEgOiBiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSYW5nZXNJbnRlcnNlY3RzKFxuICBhOiBbUG9zaXRpb24sIFBvc2l0aW9uXSxcbiAgYjogW1Bvc2l0aW9uLCBQb3NpdGlvbl1cbikge1xuICByZXR1cm4gY21wUG9zKGFbMV0sIGJbMF0pID49IDAgJiYgY21wUG9zKGFbMF0sIGJbMV0pIDw9IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzKHJvb3Q6IFJvb3QpIHtcbiAgZnVuY3Rpb24gdmlzaXQocGFyZW50OiBSb290IHwgTGlzdCkge1xuICAgIGxldCBpbmRleCA9IDE7XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHBhcmVudC5nZXRDaGlsZHJlbigpKSB7XG4gICAgICBpZiAoL1xcZCtcXC4vLnRlc3QoY2hpbGQuZ2V0QnVsbGV0KCkpKSB7XG4gICAgICAgIGNoaWxkLnJlcGxhdGVCdWxsZXQoYCR7aW5kZXgrK30uYCk7XG4gICAgICB9XG5cbiAgICAgIHZpc2l0KGNoaWxkKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdChyb290KTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQb3NpdGlvbiB7XG4gIGNoOiBudW1iZXI7XG4gIGxpbmU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0TGluZSB7XG4gIHRleHQ6IHN0cmluZztcbiAgZnJvbTogUG9zaXRpb247XG4gIHRvOiBQb3NpdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSYW5nZSB7XG4gIGFuY2hvcjogUG9zaXRpb247XG4gIGhlYWQ6IFBvc2l0aW9uO1xufVxuXG5sZXQgaWRTZXEgPSAwO1xuXG5leHBvcnQgY2xhc3MgTGlzdCB7XG4gIHByaXZhdGUgaWQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBwYXJlbnQ6IExpc3QgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBjaGlsZHJlbjogTGlzdFtdID0gW107XG4gIHByaXZhdGUgbm90ZXNJbmRlbnQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm9vdDogUm9vdCxcbiAgICBwcml2YXRlIGluZGVudDogc3RyaW5nLFxuICAgIHByaXZhdGUgYnVsbGV0OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBvcHRpb25hbENoZWNrYm94OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBzcGFjZUFmdGVyQnVsbGV0OiBzdHJpbmcsXG4gICAgZmlyc3RMaW5lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBmb2xkUm9vdDogYm9vbGVhblxuICApIHtcbiAgICB0aGlzLmlkID0gaWRTZXErKztcbiAgICB0aGlzLmxpbmVzLnB1c2goZmlyc3RMaW5lKTtcbiAgfVxuXG4gIGdldElEKCkge1xuICAgIHJldHVybiB0aGlzLmlkO1xuICB9XG5cbiAgZ2V0Tm90ZXNJbmRlbnQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMubm90ZXNJbmRlbnQ7XG4gIH1cblxuICBzZXROb3Rlc0luZGVudChub3Rlc0luZGVudDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMubm90ZXNJbmRlbnQgIT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm90ZXMgaW5kZW50IGFscmVhZHkgcHJvdmlkZWRgKTtcbiAgICB9XG4gICAgdGhpcy5ub3Rlc0luZGVudCA9IG5vdGVzSW5kZW50O1xuICB9XG5cbiAgYWRkTGluZSh0ZXh0OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5ub3Rlc0luZGVudCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVW5hYmxlIHRvIGFkZCBsaW5lLCBub3RlcyBpbmRlbnQgc2hvdWxkIGJlIHByb3ZpZGVkIGZpcnN0YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmxpbmVzLnB1c2godGV4dCk7XG4gIH1cblxuICByZXBsYWNlTGluZXMobGluZXM6IHN0cmluZ1tdKSB7XG4gICAgaWYgKGxpbmVzLmxlbmd0aCA+IDEgJiYgdGhpcy5ub3Rlc0luZGVudCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVW5hYmxlIHRvIGFkZCBsaW5lLCBub3RlcyBpbmRlbnQgc2hvdWxkIGJlIHByb3ZpZGVkIGZpcnN0YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmxpbmVzID0gbGluZXM7XG4gIH1cblxuICBnZXRMaW5lQ291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMubGluZXMubGVuZ3RoO1xuICB9XG5cbiAgZ2V0Um9vdCgpIHtcbiAgICByZXR1cm4gdGhpcy5yb290O1xuICB9XG5cbiAgZ2V0Q2hpbGRyZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4uY29uY2F0KCk7XG4gIH1cblxuICBnZXRMaW5lc0luZm8oKTogTGlzdExpbmVbXSB7XG4gICAgY29uc3Qgc3RhcnRMaW5lID0gdGhpcy5yb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YodGhpcylbMF07XG5cbiAgICByZXR1cm4gdGhpcy5saW5lcy5tYXAoKHJvdywgaSkgPT4ge1xuICAgICAgY29uc3QgbGluZSA9IHN0YXJ0TGluZSArIGk7XG4gICAgICBjb25zdCBzdGFydENoID1cbiAgICAgICAgaSA9PT0gMCA/IHRoaXMuZ2V0Q29udGVudFN0YXJ0Q2goKSA6IHRoaXMubm90ZXNJbmRlbnQubGVuZ3RoO1xuICAgICAgY29uc3QgZW5kQ2ggPSBzdGFydENoICsgcm93Lmxlbmd0aDtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGV4dDogcm93LFxuICAgICAgICBmcm9tOiB7IGxpbmUsIGNoOiBzdGFydENoIH0sXG4gICAgICAgIHRvOiB7IGxpbmUsIGNoOiBlbmRDaCB9LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldExpbmVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5saW5lcy5jb25jYXQoKTtcbiAgfVxuXG4gIGdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpIHtcbiAgICBjb25zdCBzdGFydExpbmUgPSB0aGlzLnJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZih0aGlzKVswXTtcblxuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBzdGFydExpbmUsXG4gICAgICBjaDogdGhpcy5nZXRDb250ZW50U3RhcnRDaCgpLFxuICAgIH07XG4gIH1cblxuICBnZXRGaXJzdExpbmVDb250ZW50U3RhcnRBZnRlckNoZWNrYm94KCkge1xuICAgIGNvbnN0IHN0YXJ0TGluZSA9IHRoaXMucm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKHRoaXMpWzBdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmU6IHN0YXJ0TGluZSxcbiAgICAgIGNoOiB0aGlzLmdldENvbnRlbnRTdGFydENoKCkgKyB0aGlzLmdldENoZWNrYm94TGVuZ3RoKCksXG4gICAgfTtcbiAgfVxuXG4gIGdldExhc3RMaW5lQ29udGVudEVuZCgpIHtcbiAgICBjb25zdCBlbmRMaW5lID0gdGhpcy5yb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YodGhpcylbMV07XG4gICAgY29uc3QgZW5kQ2ggPVxuICAgICAgdGhpcy5saW5lcy5sZW5ndGggPT09IDFcbiAgICAgICAgPyB0aGlzLmdldENvbnRlbnRTdGFydENoKCkgKyB0aGlzLmxpbmVzWzBdLmxlbmd0aFxuICAgICAgICA6IHRoaXMubm90ZXNJbmRlbnQubGVuZ3RoICsgdGhpcy5saW5lc1t0aGlzLmxpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aDtcblxuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBlbmRMaW5lLFxuICAgICAgY2g6IGVuZENoLFxuICAgIH07XG4gIH1cblxuICBnZXRDb250ZW50RW5kSW5jbHVkaW5nQ2hpbGRyZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TGFzdENoaWxkKCkuZ2V0TGFzdExpbmVDb250ZW50RW5kKCk7XG4gIH1cblxuICBwcml2YXRlIGdldExhc3RDaGlsZCgpIHtcbiAgICBsZXQgbGFzdENoaWxkOiBMaXN0ID0gdGhpcztcblxuICAgIHdoaWxlICghbGFzdENoaWxkLmlzRW1wdHkoKSkge1xuICAgICAgbGFzdENoaWxkID0gbGFzdENoaWxkLmdldENoaWxkcmVuKCkubGFzdCgpO1xuICAgIH1cblxuICAgIHJldHVybiBsYXN0Q2hpbGQ7XG4gIH1cblxuICBwcml2YXRlIGdldENvbnRlbnRTdGFydENoKCkge1xuICAgIHJldHVybiB0aGlzLmluZGVudC5sZW5ndGggKyB0aGlzLmJ1bGxldC5sZW5ndGggKyAxO1xuICB9XG5cbiAgaXNGb2xkZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuZm9sZFJvb3QpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyZW50LmlzRm9sZGVkKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaXNGb2xkUm9vdCgpIHtcbiAgICByZXR1cm4gdGhpcy5mb2xkUm9vdDtcbiAgfVxuXG4gIGdldFRvcEZvbGRSb290KCkge1xuICAgIGxldCB0bXA6IExpc3QgPSB0aGlzO1xuICAgIGxldCBmb2xkUm9vdDogTGlzdCB8IG51bGwgPSBudWxsO1xuICAgIHdoaWxlICh0bXApIHtcbiAgICAgIGlmICh0bXAuaXNGb2xkUm9vdCgpKSB7XG4gICAgICAgIGZvbGRSb290ID0gdG1wO1xuICAgICAgfVxuICAgICAgdG1wID0gdG1wLnBhcmVudDtcbiAgICB9XG4gICAgcmV0dXJuIGZvbGRSb290O1xuICB9XG5cbiAgZ2V0TGV2ZWwoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMucGFyZW50KSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuZ2V0TGV2ZWwoKSArIDE7XG4gIH1cblxuICB1bmluZGVudENvbnRlbnQoZnJvbTogbnVtYmVyLCB0aWxsOiBudW1iZXIpIHtcbiAgICB0aGlzLmluZGVudCA9IHRoaXMuaW5kZW50LnNsaWNlKDAsIGZyb20pICsgdGhpcy5pbmRlbnQuc2xpY2UodGlsbCk7XG4gICAgaWYgKHRoaXMubm90ZXNJbmRlbnQgIT09IG51bGwpIHtcbiAgICAgIHRoaXMubm90ZXNJbmRlbnQgPVxuICAgICAgICB0aGlzLm5vdGVzSW5kZW50LnNsaWNlKDAsIGZyb20pICsgdGhpcy5ub3Rlc0luZGVudC5zbGljZSh0aWxsKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGRyZW4pIHtcbiAgICAgIGNoaWxkLnVuaW5kZW50Q29udGVudChmcm9tLCB0aWxsKTtcbiAgICB9XG4gIH1cblxuICBpbmRlbnRDb250ZW50KGluZGVudFBvczogbnVtYmVyLCBpbmRlbnRDaGFyczogc3RyaW5nKSB7XG4gICAgdGhpcy5pbmRlbnQgPVxuICAgICAgdGhpcy5pbmRlbnQuc2xpY2UoMCwgaW5kZW50UG9zKSArXG4gICAgICBpbmRlbnRDaGFycyArXG4gICAgICB0aGlzLmluZGVudC5zbGljZShpbmRlbnRQb3MpO1xuICAgIGlmICh0aGlzLm5vdGVzSW5kZW50ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLm5vdGVzSW5kZW50ID1cbiAgICAgICAgdGhpcy5ub3Rlc0luZGVudC5zbGljZSgwLCBpbmRlbnRQb3MpICtcbiAgICAgICAgaW5kZW50Q2hhcnMgK1xuICAgICAgICB0aGlzLm5vdGVzSW5kZW50LnNsaWNlKGluZGVudFBvcyk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkcmVuKSB7XG4gICAgICBjaGlsZC5pbmRlbnRDb250ZW50KGluZGVudFBvcywgaW5kZW50Q2hhcnMpO1xuICAgIH1cbiAgfVxuXG4gIGdldEZpcnN0TGluZUluZGVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbmRlbnQ7XG4gIH1cblxuICBnZXRCdWxsZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVsbGV0O1xuICB9XG5cbiAgZ2V0U3BhY2VBZnRlckJ1bGxldCgpIHtcbiAgICByZXR1cm4gdGhpcy5zcGFjZUFmdGVyQnVsbGV0O1xuICB9XG5cbiAgZ2V0Q2hlY2tib3hMZW5ndGgoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uYWxDaGVja2JveC5sZW5ndGg7XG4gIH1cblxuICByZXBsYXRlQnVsbGV0KGJ1bGxldDogc3RyaW5nKSB7XG4gICAgdGhpcy5idWxsZXQgPSBidWxsZXQ7XG4gIH1cblxuICBnZXRQYXJlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50O1xuICB9XG5cbiAgYWRkQmVmb3JlQWxsKGxpc3Q6IExpc3QpIHtcbiAgICB0aGlzLmNoaWxkcmVuLnVuc2hpZnQobGlzdCk7XG4gICAgbGlzdC5wYXJlbnQgPSB0aGlzO1xuICB9XG5cbiAgYWRkQWZ0ZXJBbGwobGlzdDogTGlzdCkge1xuICAgIHRoaXMuY2hpbGRyZW4ucHVzaChsaXN0KTtcbiAgICBsaXN0LnBhcmVudCA9IHRoaXM7XG4gIH1cblxuICByZW1vdmVDaGlsZChsaXN0OiBMaXN0KSB7XG4gICAgY29uc3QgaSA9IHRoaXMuY2hpbGRyZW4uaW5kZXhPZihsaXN0KTtcbiAgICB0aGlzLmNoaWxkcmVuLnNwbGljZShpLCAxKTtcbiAgICBsaXN0LnBhcmVudCA9IG51bGw7XG4gIH1cblxuICBhZGRCZWZvcmUoYmVmb3JlOiBMaXN0LCBsaXN0OiBMaXN0KSB7XG4gICAgY29uc3QgaSA9IHRoaXMuY2hpbGRyZW4uaW5kZXhPZihiZWZvcmUpO1xuICAgIHRoaXMuY2hpbGRyZW4uc3BsaWNlKGksIDAsIGxpc3QpO1xuICAgIGxpc3QucGFyZW50ID0gdGhpcztcbiAgfVxuXG4gIGFkZEFmdGVyKGJlZm9yZTogTGlzdCwgbGlzdDogTGlzdCkge1xuICAgIGNvbnN0IGkgPSB0aGlzLmNoaWxkcmVuLmluZGV4T2YoYmVmb3JlKTtcbiAgICB0aGlzLmNoaWxkcmVuLnNwbGljZShpICsgMSwgMCwgbGlzdCk7XG4gICAgbGlzdC5wYXJlbnQgPSB0aGlzO1xuICB9XG5cbiAgZ2V0UHJldlNpYmxpbmdPZihsaXN0OiBMaXN0KSB7XG4gICAgY29uc3QgaSA9IHRoaXMuY2hpbGRyZW4uaW5kZXhPZihsaXN0KTtcbiAgICByZXR1cm4gaSA+IDAgPyB0aGlzLmNoaWxkcmVuW2kgLSAxXSA6IG51bGw7XG4gIH1cblxuICBnZXROZXh0U2libGluZ09mKGxpc3Q6IExpc3QpIHtcbiAgICBjb25zdCBpID0gdGhpcy5jaGlsZHJlbi5pbmRleE9mKGxpc3QpO1xuICAgIHJldHVybiBpID49IDAgJiYgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoID8gdGhpcy5jaGlsZHJlbltpICsgMV0gOiBudWxsO1xuICB9XG5cbiAgaXNFbXB0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZHJlbi5sZW5ndGggPT09IDA7XG4gIH1cblxuICBwcmludCgpIHtcbiAgICBsZXQgcmVzID0gXCJcIjtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5saW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgcmVzICs9XG4gICAgICAgIGkgPT09IDBcbiAgICAgICAgICA/IHRoaXMuaW5kZW50ICsgdGhpcy5idWxsZXQgKyB0aGlzLnNwYWNlQWZ0ZXJCdWxsZXRcbiAgICAgICAgICA6IHRoaXMubm90ZXNJbmRlbnQ7XG4gICAgICByZXMgKz0gdGhpcy5saW5lc1tpXTtcbiAgICAgIHJlcyArPSBcIlxcblwiO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZHJlbikge1xuICAgICAgcmVzICs9IGNoaWxkLnByaW50KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIGNsb25lKG5ld1Jvb3Q6IFJvb3QpIHtcbiAgICBjb25zdCBjbG9uZSA9IG5ldyBMaXN0KFxuICAgICAgbmV3Um9vdCxcbiAgICAgIHRoaXMuaW5kZW50LFxuICAgICAgdGhpcy5idWxsZXQsXG4gICAgICB0aGlzLm9wdGlvbmFsQ2hlY2tib3gsXG4gICAgICB0aGlzLnNwYWNlQWZ0ZXJCdWxsZXQsXG4gICAgICBcIlwiLFxuICAgICAgdGhpcy5mb2xkUm9vdFxuICAgICk7XG4gICAgY2xvbmUuaWQgPSB0aGlzLmlkO1xuICAgIGNsb25lLmxpbmVzID0gdGhpcy5saW5lcy5jb25jYXQoKTtcbiAgICBjbG9uZS5ub3Rlc0luZGVudCA9IHRoaXMubm90ZXNJbmRlbnQ7XG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkcmVuKSB7XG4gICAgICBjbG9uZS5hZGRBZnRlckFsbChjaGlsZC5jbG9uZShuZXdSb290KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsb25lO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSb290IHtcbiAgcHJpdmF0ZSByb290TGlzdCA9IG5ldyBMaXN0KHRoaXMsIFwiXCIsIFwiXCIsIFwiXCIsIFwiXCIsIFwiXCIsIGZhbHNlKTtcbiAgcHJpdmF0ZSBzZWxlY3Rpb25zOiBSYW5nZVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdGFydDogUG9zaXRpb24sXG4gICAgcHJpdmF0ZSBlbmQ6IFBvc2l0aW9uLFxuICAgIHNlbGVjdGlvbnM6IFJhbmdlW11cbiAgKSB7XG4gICAgdGhpcy5yZXBsYWNlU2VsZWN0aW9ucyhzZWxlY3Rpb25zKTtcbiAgfVxuXG4gIGdldFJvb3RMaXN0KCkge1xuICAgIHJldHVybiB0aGlzLnJvb3RMaXN0O1xuICB9XG5cbiAgZ2V0Q29udGVudFJhbmdlKCk6IFtQb3NpdGlvbiwgUG9zaXRpb25dIHtcbiAgICByZXR1cm4gW3RoaXMuZ2V0Q29udGVudFN0YXJ0KCksIHRoaXMuZ2V0Q29udGVudEVuZCgpXTtcbiAgfVxuXG4gIGdldENvbnRlbnRTdGFydCgpOiBQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5zdGFydCB9O1xuICB9XG5cbiAgZ2V0Q29udGVudEVuZCgpOiBQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5lbmQgfTtcbiAgfVxuXG4gIGdldFNlbGVjdGlvbnMoKTogUmFuZ2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9ucy5tYXAoKHMpID0+ICh7XG4gICAgICBhbmNob3I6IHsgLi4ucy5hbmNob3IgfSxcbiAgICAgIGhlYWQ6IHsgLi4ucy5oZWFkIH0sXG4gICAgfSkpO1xuICB9XG5cbiAgaGFzU2luZ2xlQ3Vyc29yKCkge1xuICAgIGlmICghdGhpcy5oYXNTaW5nbGVTZWxlY3Rpb24oKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uc1swXTtcblxuICAgIHJldHVybiAoXG4gICAgICBzZWxlY3Rpb24uYW5jaG9yLmxpbmUgPT09IHNlbGVjdGlvbi5oZWFkLmxpbmUgJiZcbiAgICAgIHNlbGVjdGlvbi5hbmNob3IuY2ggPT09IHNlbGVjdGlvbi5oZWFkLmNoXG4gICAgKTtcbiAgfVxuXG4gIGhhc1NpbmdsZVNlbGVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25zLmxlbmd0aCA9PT0gMTtcbiAgfVxuXG4gIGdldFNlbGVjdGlvbigpIHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbnNbdGhpcy5zZWxlY3Rpb25zLmxlbmd0aCAtIDFdO1xuXG4gICAgY29uc3QgZnJvbSA9XG4gICAgICBzZWxlY3Rpb24uYW5jaG9yLmNoID4gc2VsZWN0aW9uLmhlYWQuY2hcbiAgICAgICAgPyBzZWxlY3Rpb24uaGVhZC5jaFxuICAgICAgICA6IHNlbGVjdGlvbi5hbmNob3IuY2g7XG4gICAgY29uc3QgdG8gPVxuICAgICAgc2VsZWN0aW9uLmFuY2hvci5jaCA+IHNlbGVjdGlvbi5oZWFkLmNoXG4gICAgICAgID8gc2VsZWN0aW9uLmFuY2hvci5jaFxuICAgICAgICA6IHNlbGVjdGlvbi5oZWFkLmNoO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnNlbGVjdGlvbixcbiAgICAgIGZyb20sXG4gICAgICB0byxcbiAgICB9O1xuICB9XG5cbiAgZ2V0Q3Vyc29yKCkge1xuICAgIHJldHVybiB7IC4uLnRoaXMuc2VsZWN0aW9uc1t0aGlzLnNlbGVjdGlvbnMubGVuZ3RoIC0gMV0uaGVhZCB9O1xuICB9XG5cbiAgcmVwbGFjZUN1cnNvcihjdXJzb3I6IFBvc2l0aW9uKSB7XG4gICAgdGhpcy5zZWxlY3Rpb25zID0gW3sgYW5jaG9yOiBjdXJzb3IsIGhlYWQ6IGN1cnNvciB9XTtcbiAgfVxuXG4gIHJlcGxhY2VTZWxlY3Rpb25zKHNlbGVjdGlvbnM6IFJhbmdlW10pIHtcbiAgICBpZiAoc2VsZWN0aW9ucy5sZW5ndGggPCAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBjcmVhdGUgUm9vdCB3aXRob3V0IHNlbGVjdGlvbnNgKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3Rpb25zID0gc2VsZWN0aW9ucztcbiAgfVxuXG4gIGdldExpc3RVbmRlckN1cnNvcigpOiBMaXN0IHtcbiAgICByZXR1cm4gdGhpcy5nZXRMaXN0VW5kZXJMaW5lKHRoaXMuZ2V0Q3Vyc29yKCkubGluZSk7XG4gIH1cblxuICBnZXRMaXN0VW5kZXJMaW5lKGxpbmU6IG51bWJlcikge1xuICAgIGlmIChsaW5lIDwgdGhpcy5zdGFydC5saW5lIHx8IGxpbmUgPiB0aGlzLmVuZC5saW5lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdDogTGlzdCA9IG51bGw7XG4gICAgbGV0IGluZGV4OiBudW1iZXIgPSB0aGlzLnN0YXJ0LmxpbmU7XG5cbiAgICBjb25zdCB2aXNpdEFyciA9IChsbDogTGlzdFtdKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGwgb2YgbGwpIHtcbiAgICAgICAgY29uc3QgbGlzdEZyb21MaW5lID0gaW5kZXg7XG4gICAgICAgIGNvbnN0IGxpc3RUaWxsTGluZSA9IGxpc3RGcm9tTGluZSArIGwuZ2V0TGluZUNvdW50KCkgLSAxO1xuXG4gICAgICAgIGlmIChsaW5lID49IGxpc3RGcm9tTGluZSAmJiBsaW5lIDw9IGxpc3RUaWxsTGluZSkge1xuICAgICAgICAgIHJlc3VsdCA9IGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5kZXggPSBsaXN0VGlsbExpbmUgKyAxO1xuICAgICAgICAgIHZpc2l0QXJyKGwuZ2V0Q2hpbGRyZW4oKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICB2aXNpdEFycih0aGlzLnJvb3RMaXN0LmdldENoaWxkcmVuKCkpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGdldENvbnRlbnRMaW5lc1JhbmdlT2YobGlzdDogTGlzdCk6IFtudW1iZXIsIG51bWJlcl0gfCBudWxsIHtcbiAgICBsZXQgcmVzdWx0OiBbbnVtYmVyLCBudW1iZXJdIHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGxpbmU6IG51bWJlciA9IHRoaXMuc3RhcnQubGluZTtcblxuICAgIGNvbnN0IHZpc2l0QXJyID0gKGxsOiBMaXN0W10pID0+IHtcbiAgICAgIGZvciAoY29uc3QgbCBvZiBsbCkge1xuICAgICAgICBjb25zdCBsaXN0RnJvbUxpbmUgPSBsaW5lO1xuICAgICAgICBjb25zdCBsaXN0VGlsbExpbmUgPSBsaXN0RnJvbUxpbmUgKyBsLmdldExpbmVDb3VudCgpIC0gMTtcblxuICAgICAgICBpZiAobCA9PT0gbGlzdCkge1xuICAgICAgICAgIHJlc3VsdCA9IFtsaXN0RnJvbUxpbmUsIGxpc3RUaWxsTGluZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGluZSA9IGxpc3RUaWxsTGluZSArIDE7XG4gICAgICAgICAgdmlzaXRBcnIobC5nZXRDaGlsZHJlbigpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmlzaXRBcnIodGhpcy5yb290TGlzdC5nZXRDaGlsZHJlbigpKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXRDaGlsZHJlbigpIHtcbiAgICByZXR1cm4gdGhpcy5yb290TGlzdC5nZXRDaGlsZHJlbigpO1xuICB9XG5cbiAgcHJpbnQoKSB7XG4gICAgbGV0IHJlcyA9IFwiXCI7XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMucm9vdExpc3QuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgcmVzICs9IGNoaWxkLnByaW50KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5yZXBsYWNlKC9cXG4kLywgXCJcIik7XG4gIH1cblxuICBjbG9uZSgpIHtcbiAgICBjb25zdCBjbG9uZSA9IG5ldyBSb290KFxuICAgICAgeyAuLi50aGlzLnN0YXJ0IH0sXG4gICAgICB7IC4uLnRoaXMuZW5kIH0sXG4gICAgICB0aGlzLmdldFNlbGVjdGlvbnMoKVxuICAgICk7XG4gICAgY2xvbmUucm9vdExpc3QgPSB0aGlzLnJvb3RMaXN0LmNsb25lKGNsb25lKTtcbiAgICByZXR1cm4gY2xvbmU7XG4gIH1cbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQge1xuICBMaXN0LFxuICBMaXN0TGluZSxcbiAgUG9zaXRpb24sXG4gIFJvb3QsXG4gIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMsXG59IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVUaWxsUHJldmlvdXNMaW5lQ29udGVudEVuZCBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgdXBkYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdDogUm9vdCkge31cblxuICBzaG91bGRTdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcFByb3BhZ2F0aW9uO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZWQ7XG4gIH1cblxuICBwZXJmb3JtKCkge1xuICAgIGNvbnN0IHsgcm9vdCB9ID0gdGhpcztcblxuICAgIGlmICghcm9vdC5oYXNTaW5nbGVDdXJzb3IoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGN1cnNvciA9IHJvb3QuZ2V0Q3Vyc29yKCk7XG4gICAgY29uc3QgbGluZXMgPSBsaXN0LmdldExpbmVzSW5mbygpO1xuXG4gICAgY29uc3QgbGluZU5vID0gbGluZXMuZmluZEluZGV4KFxuICAgICAgKGwpID0+IGN1cnNvci5jaCA9PT0gbC5mcm9tLmNoICYmIGN1cnNvci5saW5lID09PSBsLmZyb20ubGluZVxuICAgICk7XG5cbiAgICBpZiAobGluZU5vID09PSAwKSB7XG4gICAgICB0aGlzLm1lcmdlV2l0aFByZXZpb3VzSXRlbShyb290LCBjdXJzb3IsIGxpc3QpO1xuICAgIH0gZWxzZSBpZiAobGluZU5vID4gMCkge1xuICAgICAgdGhpcy5tZXJnZU5vdGVzKHJvb3QsIGN1cnNvciwgbGlzdCwgbGluZXMsIGxpbmVObyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZU5vdGVzKFxuICAgIHJvb3Q6IFJvb3QsXG4gICAgY3Vyc29yOiBQb3NpdGlvbixcbiAgICBsaXN0OiBMaXN0LFxuICAgIGxpbmVzOiBMaXN0TGluZVtdLFxuICAgIGxpbmVObzogbnVtYmVyXG4gICkge1xuICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuXG4gICAgY29uc3QgcHJldkxpbmVObyA9IGxpbmVObyAtIDE7XG5cbiAgICByb290LnJlcGxhY2VDdXJzb3Ioe1xuICAgICAgbGluZTogY3Vyc29yLmxpbmUgLSAxLFxuICAgICAgY2g6IGxpbmVzW3ByZXZMaW5lTm9dLnRleHQubGVuZ3RoICsgbGluZXNbcHJldkxpbmVOb10uZnJvbS5jaCxcbiAgICB9KTtcblxuICAgIGxpbmVzW3ByZXZMaW5lTm9dLnRleHQgKz0gbGluZXNbbGluZU5vXS50ZXh0O1xuICAgIGxpbmVzLnNwbGljZShsaW5lTm8sIDEpO1xuXG4gICAgbGlzdC5yZXBsYWNlTGluZXMobGluZXMubWFwKChsKSA9PiBsLnRleHQpKTtcbiAgfVxuXG4gIHByaXZhdGUgbWVyZ2VXaXRoUHJldmlvdXNJdGVtKHJvb3Q6IFJvb3QsIGN1cnNvcjogUG9zaXRpb24sIGxpc3Q6IExpc3QpIHtcbiAgICBpZiAocm9vdC5nZXRDaGlsZHJlbigpWzBdID09PSBsaXN0ICYmIGxpc3QuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgcHJldiA9IHJvb3QuZ2V0TGlzdFVuZGVyTGluZShjdXJzb3IubGluZSAtIDEpO1xuXG4gICAgaWYgKCFwcmV2KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYm90aEFyZUVtcHR5ID0gcHJldi5pc0VtcHR5KCkgJiYgbGlzdC5pc0VtcHR5KCk7XG4gICAgY29uc3QgcHJldklzRW1wdHlBbmRTYW1lTGV2ZWwgPVxuICAgICAgcHJldi5pc0VtcHR5KCkgJiYgIWxpc3QuaXNFbXB0eSgpICYmIHByZXYuZ2V0TGV2ZWwoKSA9PT0gbGlzdC5nZXRMZXZlbCgpO1xuICAgIGNvbnN0IGxpc3RJc0VtcHR5QW5kUHJldklzUGFyZW50ID1cbiAgICAgIGxpc3QuaXNFbXB0eSgpICYmIHByZXYuZ2V0TGV2ZWwoKSA9PT0gbGlzdC5nZXRMZXZlbCgpIC0gMTtcblxuICAgIGlmIChib3RoQXJlRW1wdHkgfHwgcHJldklzRW1wdHlBbmRTYW1lTGV2ZWwgfHwgbGlzdElzRW1wdHlBbmRQcmV2SXNQYXJlbnQpIHtcbiAgICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICAgIGNvbnN0IHBhcmVudCA9IGxpc3QuZ2V0UGFyZW50KCk7XG4gICAgICBjb25zdCBwcmV2RW5kID0gcHJldi5nZXRMYXN0TGluZUNvbnRlbnRFbmQoKTtcblxuICAgICAgaWYgKCFwcmV2LmdldE5vdGVzSW5kZW50KCkgJiYgbGlzdC5nZXROb3Rlc0luZGVudCgpKSB7XG4gICAgICAgIHByZXYuc2V0Tm90ZXNJbmRlbnQoXG4gICAgICAgICAgcHJldi5nZXRGaXJzdExpbmVJbmRlbnQoKSArXG4gICAgICAgICAgICBsaXN0LmdldE5vdGVzSW5kZW50KCkuc2xpY2UobGlzdC5nZXRGaXJzdExpbmVJbmRlbnQoKS5sZW5ndGgpXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG9sZExpbmVzID0gcHJldi5nZXRMaW5lcygpO1xuICAgICAgY29uc3QgbmV3TGluZXMgPSBsaXN0LmdldExpbmVzKCk7XG4gICAgICBvbGRMaW5lc1tvbGRMaW5lcy5sZW5ndGggLSAxXSArPSBuZXdMaW5lc1swXTtcbiAgICAgIGNvbnN0IHJlc3VsdExpbmVzID0gb2xkTGluZXMuY29uY2F0KG5ld0xpbmVzLnNsaWNlKDEpKTtcblxuICAgICAgcHJldi5yZXBsYWNlTGluZXMocmVzdWx0TGluZXMpO1xuICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKGxpc3QpO1xuXG4gICAgICBmb3IgKGNvbnN0IGMgb2YgbGlzdC5nZXRDaGlsZHJlbigpKSB7XG4gICAgICAgIGxpc3QucmVtb3ZlQ2hpbGQoYyk7XG4gICAgICAgIHByZXYuYWRkQWZ0ZXJBbGwoYyk7XG4gICAgICB9XG5cbiAgICAgIHJvb3QucmVwbGFjZUN1cnNvcihwcmV2RW5kKTtcblxuICAgICAgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyhyb290KTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgRGVsZXRlVGlsbFByZXZpb3VzTGluZUNvbnRlbnRFbmQgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9EZWxldGVUaWxsUHJldmlvdXNMaW5lQ29udGVudEVuZFwiO1xuaW1wb3J0IHsgSU1FRGV0ZWN0b3IgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FRGV0ZWN0b3JcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5pbXBvcnQgeyBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayB9IGZyb20gXCIuLi91dGlscy9jcmVhdGVLZXltYXBSdW5DYWxsYmFja1wiO1xuXG5leHBvcnQgY2xhc3MgQmFja3NwYWNlQmVoYXZpb3VyT3ZlcnJpZGUgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzLFxuICAgIHByaXZhdGUgaW1lRGV0ZWN0b3I6IElNRURldGVjdG9yLFxuICAgIHByaXZhdGUgb3BlcmF0aW9uUGVyZm9ybWVyOiBPcGVyYXRpb25QZXJmb3JtZXJcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBrZXltYXAub2YoW1xuICAgICAgICB7XG4gICAgICAgICAga2V5OiBcIkJhY2tzcGFjZVwiLFxuICAgICAgICAgIHJ1bjogY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soe1xuICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICBydW46IHRoaXMucnVuLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgXSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cblxuICBwcml2YXRlIGNoZWNrID0gKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnNldHRpbmdzLmtlZXBDdXJzb3JXaXRoaW5Db250ZW50ICE9PSBcIm5ldmVyXCIgJiZcbiAgICAgICF0aGlzLmltZURldGVjdG9yLmlzT3BlbmVkKClcbiAgICApO1xuICB9O1xuXG4gIHByaXZhdGUgcnVuID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIucGVyZm9ybShcbiAgICAgIChyb290KSA9PiBuZXcgRGVsZXRlVGlsbFByZXZpb3VzTGluZUNvbnRlbnRFbmQocm9vdCksXG4gICAgICBlZGl0b3JcbiAgICApO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgT2JzaWRpYW5TZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuXG5jb25zdCBCRVRURVJfTElTVFNfQk9EWV9DTEFTUyA9IFwib3V0bGluZXItcGx1Z2luLWJldHRlci1saXN0c1wiO1xuXG5leHBvcnQgY2xhc3MgQmV0dGVyTGlzdHNTdHlsZXMgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgcHJpdmF0ZSB1cGRhdGVCb2R5Q2xhc3NJbnRlcnZhbDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzLFxuICAgIHByaXZhdGUgb2JzaWRpYW5TZXR0aW5nczogT2JzaWRpYW5TZXR0aW5nc1xuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnVwZGF0ZUJvZHlDbGFzcygpO1xuICAgIHRoaXMudXBkYXRlQm9keUNsYXNzSW50ZXJ2YWwgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVCb2R5Q2xhc3MoKTtcbiAgICB9LCAxMDAwKTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHtcbiAgICBjbGVhckludGVydmFsKHRoaXMudXBkYXRlQm9keUNsYXNzSW50ZXJ2YWwpO1xuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShCRVRURVJfTElTVFNfQk9EWV9DTEFTUyk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUJvZHlDbGFzcyA9ICgpID0+IHtcbiAgICBjb25zdCBzaG91bGRFeGlzdHMgPVxuICAgICAgdGhpcy5vYnNpZGlhblNldHRpbmdzLmlzRGVmYXVsdFRoZW1lRW5hYmxlZCgpICYmXG4gICAgICB0aGlzLnNldHRpbmdzLmJldHRlckxpc3RzU3R5bGVzO1xuICAgIGNvbnN0IGV4aXN0cyA9IGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKEJFVFRFUl9MSVNUU19CT0RZX0NMQVNTKTtcblxuICAgIGlmIChzaG91bGRFeGlzdHMgJiYgIWV4aXN0cykge1xuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKEJFVFRFUl9MSVNUU19CT0RZX0NMQVNTKTtcbiAgICB9XG5cbiAgICBpZiAoIXNob3VsZEV4aXN0cyAmJiBleGlzdHMpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShCRVRURVJfTElTVFNfQk9EWV9DTEFTUyk7XG4gICAgfVxuICB9O1xufVxuIiwiaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4vT3BlcmF0aW9uXCI7XG5cbmltcG9ydCB7IFJvb3QsIG1heFBvcywgbWluUG9zIH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIFNlbGVjdEFsbENvbnRlbnQgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlU2VsZWN0aW9uKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3Rpb24gPSByb290LmdldFNlbGVjdGlvbnMoKVswXTtcbiAgICBjb25zdCBbcm9vdFN0YXJ0LCByb290RW5kXSA9IHJvb3QuZ2V0Q29udGVudFJhbmdlKCk7XG5cbiAgICBjb25zdCBzZWxlY3Rpb25Gcm9tID0gbWluUG9zKHNlbGVjdGlvbi5hbmNob3IsIHNlbGVjdGlvbi5oZWFkKTtcbiAgICBjb25zdCBzZWxlY3Rpb25UbyA9IG1heFBvcyhzZWxlY3Rpb24uYW5jaG9yLCBzZWxlY3Rpb24uaGVhZCk7XG5cbiAgICBpZiAoXG4gICAgICBzZWxlY3Rpb25Gcm9tLmxpbmUgPCByb290U3RhcnQubGluZSB8fFxuICAgICAgc2VsZWN0aW9uVG8ubGluZSA+IHJvb3RFbmQubGluZVxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHNlbGVjdGlvbkZyb20ubGluZSA9PT0gcm9vdFN0YXJ0LmxpbmUgJiZcbiAgICAgIHNlbGVjdGlvbkZyb20uY2ggPT09IHJvb3RTdGFydC5jaCAmJlxuICAgICAgc2VsZWN0aW9uVG8ubGluZSA9PT0gcm9vdEVuZC5saW5lICYmXG4gICAgICBzZWxlY3Rpb25Uby5jaCA9PT0gcm9vdEVuZC5jaFxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGNvbnRlbnRTdGFydCA9IGxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0QWZ0ZXJDaGVja2JveCgpO1xuICAgIGNvbnN0IGNvbnRlbnRFbmQgPSBsaXN0LmdldExhc3RMaW5lQ29udGVudEVuZCgpO1xuICAgIGNvbnN0IGxpc3RVbmRlclNlbGVjdGlvbkZyb20gPSByb290LmdldExpc3RVbmRlckxpbmUoc2VsZWN0aW9uRnJvbS5saW5lKTtcbiAgICBjb25zdCBsaXN0U3RhcnQgPVxuICAgICAgbGlzdFVuZGVyU2VsZWN0aW9uRnJvbS5nZXRGaXJzdExpbmVDb250ZW50U3RhcnRBZnRlckNoZWNrYm94KCk7XG4gICAgY29uc3QgbGlzdEVuZCA9IGxpc3RVbmRlclNlbGVjdGlvbkZyb20uZ2V0Q29udGVudEVuZEluY2x1ZGluZ0NoaWxkcmVuKCk7XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGlmIChcbiAgICAgIHNlbGVjdGlvbkZyb20ubGluZSA9PT0gY29udGVudFN0YXJ0LmxpbmUgJiZcbiAgICAgIHNlbGVjdGlvbkZyb20uY2ggPT09IGNvbnRlbnRTdGFydC5jaCAmJlxuICAgICAgc2VsZWN0aW9uVG8ubGluZSA9PT0gY29udGVudEVuZC5saW5lICYmXG4gICAgICBzZWxlY3Rpb25Uby5jaCA9PT0gY29udGVudEVuZC5jaFxuICAgICkge1xuICAgICAgaWYgKGxpc3QuZ2V0Q2hpbGRyZW4oKS5sZW5ndGgpIHtcbiAgICAgICAgLy8gc2VsZWN0IHN1YiBsaXN0c1xuICAgICAgICByb290LnJlcGxhY2VTZWxlY3Rpb25zKFtcbiAgICAgICAgICB7IGFuY2hvcjogY29udGVudFN0YXJ0LCBoZWFkOiBsaXN0LmdldENvbnRlbnRFbmRJbmNsdWRpbmdDaGlsZHJlbigpIH0sXG4gICAgICAgIF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gc2VsZWN0IHdob2xlIGxpc3RcbiAgICAgICAgcm9vdC5yZXBsYWNlU2VsZWN0aW9ucyhbeyBhbmNob3I6IHJvb3RTdGFydCwgaGVhZDogcm9vdEVuZCB9XSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGxpc3RTdGFydC5jaCA9PSBzZWxlY3Rpb25Gcm9tLmNoICYmXG4gICAgICBsaXN0RW5kLmxpbmUgPT0gc2VsZWN0aW9uVG8ubGluZSAmJlxuICAgICAgbGlzdEVuZC5jaCA9PSBzZWxlY3Rpb25Uby5jaFxuICAgICkge1xuICAgICAgLy8gc2VsZWN0IHdob2xlIGxpc3RcbiAgICAgIHJvb3QucmVwbGFjZVNlbGVjdGlvbnMoW3sgYW5jaG9yOiByb290U3RhcnQsIGhlYWQ6IHJvb3RFbmQgfV0pO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAoc2VsZWN0aW9uRnJvbS5saW5lID4gY29udGVudFN0YXJ0LmxpbmUgfHxcbiAgICAgICAgKHNlbGVjdGlvbkZyb20ubGluZSA9PSBjb250ZW50U3RhcnQubGluZSAmJlxuICAgICAgICAgIHNlbGVjdGlvbkZyb20uY2ggPj0gY29udGVudFN0YXJ0LmNoKSkgJiZcbiAgICAgIChzZWxlY3Rpb25Uby5saW5lIDwgY29udGVudEVuZC5saW5lIHx8XG4gICAgICAgIChzZWxlY3Rpb25Uby5saW5lID09IGNvbnRlbnRFbmQubGluZSAmJlxuICAgICAgICAgIHNlbGVjdGlvblRvLmNoIDw9IGNvbnRlbnRFbmQuY2gpKVxuICAgICkge1xuICAgICAgLy8gc2VsZWN0IHdob2xlIGxpbmVcbiAgICAgIHJvb3QucmVwbGFjZVNlbGVjdGlvbnMoW3sgYW5jaG9yOiBjb250ZW50U3RhcnQsIGhlYWQ6IGNvbnRlbnRFbmQgfV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICAgICAgdGhpcy51cGRhdGVkID0gZmFsc2U7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgU2VsZWN0QWxsQ29udGVudCB9IGZyb20gXCIuLi9vcGVyYXRpb25zL1NlbGVjdEFsbENvbnRlbnRcIjtcbmltcG9ydCB7IElNRURldGVjdG9yIH0gZnJvbSBcIi4uL3NlcnZpY2VzL0lNRURldGVjdG9yXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25QZXJmb3JtZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvT3BlcmF0aW9uUGVyZm9ybWVyXCI7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuaW1wb3J0IHsgY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2sgfSBmcm9tIFwiLi4vdXRpbHMvY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2tcIjtcblxuZXhwb3J0IGNsYXNzIEN0cmxBQW5kQ21kQUJlaGF2aW91ck92ZXJyaWRlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncyxcbiAgICBwcml2YXRlIGltZURldGVjdG9yOiBJTUVEZXRlY3RvcixcbiAgICBwcml2YXRlIG9wZXJhdGlvblBlcmZvcm1lcjogT3BlcmF0aW9uUGVyZm9ybWVyXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFxuICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAge1xuICAgICAgICAgIGtleTogXCJjLWFcIixcbiAgICAgICAgICBtYWM6IFwibS1hXCIsXG4gICAgICAgICAgcnVuOiBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayh7XG4gICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2V0dGluZ3Mub3ZlcnJpZGVTZWxlY3RBbGxCZWhhdmlvdXIgJiYgIXRoaXMuaW1lRGV0ZWN0b3IuaXNPcGVuZWQoKVxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBydW4gPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5wZXJmb3JtKFxuICAgICAgKHJvb3QpID0+IG5ldyBTZWxlY3RBbGxDb250ZW50KHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcbiAgfTtcbn1cbiIsImltcG9ydCB7IERlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kIH0gZnJvbSBcIi4vRGVsZXRlVGlsbFByZXZpb3VzTGluZUNvbnRlbnRFbmRcIjtcbmltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIERlbGV0ZVRpbGxOZXh0TGluZUNvbnRlbnRTdGFydCBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgZGVsZXRlVGlsbFByZXZpb3VzTGluZUNvbnRlbnRFbmQ6IERlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdDogUm9vdCkge1xuICAgIHRoaXMuZGVsZXRlVGlsbFByZXZpb3VzTGluZUNvbnRlbnRFbmQgPVxuICAgICAgbmV3IERlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kKHJvb3QpO1xuICB9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmRlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kLnNob3VsZFN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLmRlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kLnNob3VsZFVwZGF0ZSgpO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIGNvbnN0IGxpbmVzID0gbGlzdC5nZXRMaW5lc0luZm8oKTtcblxuICAgIGNvbnN0IGxpbmVObyA9IGxpbmVzLmZpbmRJbmRleChcbiAgICAgIChsKSA9PiBjdXJzb3IuY2ggPT09IGwudG8uY2ggJiYgY3Vyc29yLmxpbmUgPT09IGwudG8ubGluZVxuICAgICk7XG5cbiAgICBpZiAobGluZU5vID09PSBsaW5lcy5sZW5ndGggLSAxKSB7XG4gICAgICBjb25zdCBuZXh0TGluZSA9IGxpbmVzW2xpbmVOb10udG8ubGluZSArIDE7XG4gICAgICBjb25zdCBuZXh0TGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyTGluZShuZXh0TGluZSk7XG4gICAgICBpZiAoIW5leHRMaXN0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJvb3QucmVwbGFjZUN1cnNvcihuZXh0TGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKSk7XG4gICAgICB0aGlzLmRlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kLnBlcmZvcm0oKTtcbiAgICB9IGVsc2UgaWYgKGxpbmVObyA+PSAwKSB7XG4gICAgICByb290LnJlcGxhY2VDdXJzb3IobGluZXNbbGluZU5vICsgMV0uZnJvbSk7XG4gICAgICB0aGlzLmRlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kLnBlcmZvcm0oKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgRGVsZXRlVGlsbE5leHRMaW5lQ29udGVudFN0YXJ0IH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvRGVsZXRlVGlsbE5leHRMaW5lQ29udGVudFN0YXJ0XCI7XG5pbXBvcnQgeyBJTUVEZXRlY3RvciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9JTUVEZXRlY3RvclwiO1xuaW1wb3J0IHsgT3BlcmF0aW9uUGVyZm9ybWVyIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09wZXJhdGlvblBlcmZvcm1lclwiO1xuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tIFwiLi4vc2VydmljZXMvU2V0dGluZ3NcIjtcbmltcG9ydCB7IGNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrIH0gZnJvbSBcIi4uL3V0aWxzL2NyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrXCI7XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVCZWhhdmlvdXJPdmVycmlkZSBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsdWdpbjogUGx1Z2luXzIsXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBpbWVEZXRlY3RvcjogSU1FRGV0ZWN0b3IsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihcbiAgICAgIGtleW1hcC5vZihbXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6IFwiRGVsZXRlXCIsXG4gICAgICAgICAgcnVuOiBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayh7XG4gICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2V0dGluZ3Mua2VlcEN1cnNvcldpdGhpbkNvbnRlbnQgIT09IFwibmV2ZXJcIiAmJlxuICAgICAgIXRoaXMuaW1lRGV0ZWN0b3IuaXNPcGVuZWQoKVxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBydW4gPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5wZXJmb3JtKFxuICAgICAgKHJvb3QpID0+IG5ldyBEZWxldGVUaWxsTmV4dExpbmVDb250ZW50U3RhcnQocm9vdCksXG4gICAgICBlZGl0b3JcbiAgICApO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4vT3BlcmF0aW9uXCI7XG5cbmltcG9ydCB7IExpc3QsIFJvb3QsIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMgfSBmcm9tIFwiLi4vcm9vdFwiO1xuXG5pbnRlcmZhY2UgQ3Vyc29yQW5jaG9yIHtcbiAgY3Vyc29yTGlzdDogTGlzdDtcbiAgbGluZURpZmY6IG51bWJlcjtcbiAgY2hEaWZmOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBNb3ZlTGlzdFRvRGlmZmVyZW50UG9zaXRpb24gaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvb3Q6IFJvb3QsXG4gICAgcHJpdmF0ZSBsaXN0VG9Nb3ZlOiBMaXN0LFxuICAgIHByaXZhdGUgcGxhY2VUb01vdmU6IExpc3QsXG4gICAgcHJpdmF0ZSB3aGVyZVRvTW92ZTogXCJiZWZvcmVcIiB8IFwiYWZ0ZXJcIiB8IFwiaW5zaWRlXCIsXG4gICAgcHJpdmF0ZSBkZWZhdWx0SW5kZW50Q2hhcnM6IHN0cmluZ1xuICApIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBpZiAodGhpcy5saXN0VG9Nb3ZlID09PSB0aGlzLnBsYWNlVG9Nb3ZlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICBjb25zdCBjdXJzb3JBbmNob3IgPSB0aGlzLmNhbGN1bGF0ZUN1cnNvckFuY2hvcigpO1xuICAgIHRoaXMubW92ZUxpc3QoKTtcbiAgICB0aGlzLmNoYW5nZUluZGVudCgpO1xuICAgIHRoaXMucmVzdG9yZUN1cnNvcihjdXJzb3JBbmNob3IpO1xuICAgIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHModGhpcy5yb290KTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlQ3Vyc29yQW5jaG9yKCk6IEN1cnNvckFuY2hvciB7XG4gICAgY29uc3QgY3Vyc29yTGluZSA9IHRoaXMucm9vdC5nZXRDdXJzb3IoKS5saW5lO1xuXG4gICAgY29uc3QgbGluZXMgPSBbXG4gICAgICB0aGlzLmxpc3RUb01vdmUuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkubGluZSxcbiAgICAgIHRoaXMubGlzdFRvTW92ZS5nZXRMYXN0TGluZUNvbnRlbnRFbmQoKS5saW5lLFxuICAgICAgdGhpcy5wbGFjZVRvTW92ZS5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lLFxuICAgICAgdGhpcy5wbGFjZVRvTW92ZS5nZXRMYXN0TGluZUNvbnRlbnRFbmQoKS5saW5lLFxuICAgIF07XG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZSA9IE1hdGgubWluKC4uLmxpbmVzKTtcbiAgICBjb25zdCBsaXN0RW5kTGluZSA9IE1hdGgubWF4KC4uLmxpbmVzKTtcblxuICAgIGlmIChjdXJzb3JMaW5lIDwgbGlzdFN0YXJ0TGluZSB8fCBjdXJzb3JMaW5lID4gbGlzdEVuZExpbmUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnNvciA9IHRoaXMucm9vdC5nZXRDdXJzb3IoKTtcbiAgICBjb25zdCBjdXJzb3JMaXN0ID0gdGhpcy5yb290LmdldExpc3RVbmRlckxpbmUoY3Vyc29yLmxpbmUpO1xuICAgIGNvbnN0IGN1cnNvckxpc3RTdGFydCA9IGN1cnNvckxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCk7XG4gICAgY29uc3QgbGluZURpZmYgPSBjdXJzb3IubGluZSAtIGN1cnNvckxpc3RTdGFydC5saW5lO1xuICAgIGNvbnN0IGNoRGlmZiA9IGN1cnNvci5jaCAtIGN1cnNvckxpc3RTdGFydC5jaDtcblxuICAgIHJldHVybiB7IGN1cnNvckxpc3QsIGxpbmVEaWZmLCBjaERpZmYgfTtcbiAgfVxuXG4gIHByaXZhdGUgbW92ZUxpc3QoKSB7XG4gICAgdGhpcy5saXN0VG9Nb3ZlLmdldFBhcmVudCgpLnJlbW92ZUNoaWxkKHRoaXMubGlzdFRvTW92ZSk7XG5cbiAgICBzd2l0Y2ggKHRoaXMud2hlcmVUb01vdmUpIHtcbiAgICAgIGNhc2UgXCJiZWZvcmVcIjpcbiAgICAgICAgdGhpcy5wbGFjZVRvTW92ZVxuICAgICAgICAgIC5nZXRQYXJlbnQoKVxuICAgICAgICAgIC5hZGRCZWZvcmUodGhpcy5wbGFjZVRvTW92ZSwgdGhpcy5saXN0VG9Nb3ZlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJhZnRlclwiOlxuICAgICAgICB0aGlzLnBsYWNlVG9Nb3ZlXG4gICAgICAgICAgLmdldFBhcmVudCgpXG4gICAgICAgICAgLmFkZEFmdGVyKHRoaXMucGxhY2VUb01vdmUsIHRoaXMubGlzdFRvTW92ZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiaW5zaWRlXCI6XG4gICAgICAgIHRoaXMucGxhY2VUb01vdmUuYWRkQmVmb3JlQWxsKHRoaXMubGlzdFRvTW92ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hhbmdlSW5kZW50KCkge1xuICAgIGNvbnN0IG9sZEluZGVudCA9IHRoaXMubGlzdFRvTW92ZS5nZXRGaXJzdExpbmVJbmRlbnQoKTtcbiAgICBjb25zdCBuZXdJbmRlbnQgPVxuICAgICAgdGhpcy53aGVyZVRvTW92ZSA9PT0gXCJpbnNpZGVcIlxuICAgICAgICA/IHRoaXMucGxhY2VUb01vdmUuZ2V0Rmlyc3RMaW5lSW5kZW50KCkgKyB0aGlzLmRlZmF1bHRJbmRlbnRDaGFyc1xuICAgICAgICA6IHRoaXMucGxhY2VUb01vdmUuZ2V0Rmlyc3RMaW5lSW5kZW50KCk7XG4gICAgdGhpcy5saXN0VG9Nb3ZlLnVuaW5kZW50Q29udGVudCgwLCBvbGRJbmRlbnQubGVuZ3RoKTtcbiAgICB0aGlzLmxpc3RUb01vdmUuaW5kZW50Q29udGVudCgwLCBuZXdJbmRlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXN0b3JlQ3Vyc29yKGN1cnNvckFuY2hvcjogQ3Vyc29yQW5jaG9yKSB7XG4gICAgaWYgKGN1cnNvckFuY2hvcikge1xuICAgICAgY29uc3QgY3Vyc29yTGlzdFN0YXJ0ID1cbiAgICAgICAgY3Vyc29yQW5jaG9yLmN1cnNvckxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCk7XG5cbiAgICAgIHRoaXMucm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgICAgbGluZTogY3Vyc29yTGlzdFN0YXJ0LmxpbmUgKyBjdXJzb3JBbmNob3IubGluZURpZmYsXG4gICAgICAgIGNoOiBjdXJzb3JMaXN0U3RhcnQuY2ggKyBjdXJzb3JBbmNob3IuY2hEaWZmLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFdoZW4geW91IG1vdmUgYSBsaXN0LCB0aGUgc2NyZWVuIHNjcm9sbHMgdG8gdGhlIGN1cnNvci5cbiAgICAgIC8vIEl0IGlzIGJldHRlciB0byBtb3ZlIHRoZSBjdXJzb3IgaW50byB0aGUgdmlld3BvcnQgdGhhbiBsZXQgdGhlIHNjcmVlbiBzY3JvbGwuXG4gICAgICB0aGlzLnJvb3QucmVwbGFjZUN1cnNvcih0aGlzLmxpc3RUb01vdmUuZ2V0TGFzdExpbmVDb250ZW50RW5kKCkpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgTm90aWNlLCBQbGF0Zm9ybSwgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgZ2V0SW5kZW50VW5pdCwgaW5kZW50U3RyaW5nIH0gZnJvbSBcIkBjb2RlbWlycm9yL2xhbmd1YWdlXCI7XG5pbXBvcnQgeyBTdGF0ZUVmZmVjdCwgU3RhdGVGaWVsZCB9IGZyb20gXCJAY29kZW1pcnJvci9zdGF0ZVwiO1xuaW1wb3J0IHsgRGVjb3JhdGlvbiwgRGVjb3JhdGlvblNldCwgRWRpdG9yVmlldyB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yLCBnZXRFZGl0b3JGcm9tU3RhdGUgfSBmcm9tIFwiLi4vZWRpdG9yXCI7XG5pbXBvcnQgeyBNb3ZlTGlzdFRvRGlmZmVyZW50UG9zaXRpb24gfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9Nb3ZlTGlzdFRvRGlmZmVyZW50UG9zaXRpb25cIjtcbmltcG9ydCB7IExpc3QsIFJvb3QsIGNtcFBvcyB9IGZyb20gXCIuLi9yb290XCI7XG5pbXBvcnQgeyBPYnNpZGlhblNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2V0dGluZ3NcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9QYXJzZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5cbmNvbnN0IEJPRFlfQ0xBU1MgPSBcIm91dGxpbmVyLXBsdWdpbi1kbmRcIjtcblxuZXhwb3J0IGNsYXNzIERyYWdBbmREcm9wIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIHByaXZhdGUgZHJvcFpvbmU6IEhUTUxEaXZFbGVtZW50O1xuICBwcml2YXRlIGRyb3Bab25lUGFkZGluZzogSFRNTERpdkVsZW1lbnQ7XG4gIHByaXZhdGUgcHJlU3RhcnQ6IERyYWdBbmREcm9wUHJlU3RhcnRTdGF0ZSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHN0YXRlOiBEcmFnQW5kRHJvcFN0YXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzLFxuICAgIHByaXZhdGUgb2Jpc2lkaWFuOiBPYnNpZGlhblNldHRpbmdzLFxuICAgIHByaXZhdGUgcGFyc2VyOiBQYXJzZXIsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihbXG4gICAgICBkcmFnZ2luZ0xpbmVzU3RhdGVGaWVsZCxcbiAgICAgIGRyb3BwaW5nTGluZXNTdGF0ZUZpZWxkLFxuICAgIF0pO1xuICAgIHRoaXMuZW5hYmxlRmVhdHVyZVRvZ2dsZSgpO1xuICAgIHRoaXMuY3JlYXRlRHJvcFpvbmUoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXJzKCk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7XG4gICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVycygpO1xuICAgIHRoaXMucmVtb3ZlRHJvcFpvbmUoKTtcbiAgICB0aGlzLmRpc2FibGVGZWF0dXJlVG9nZ2xlKCk7XG4gIH1cblxuICBwcml2YXRlIGVuYWJsZUZlYXR1cmVUb2dnbGUoKSB7XG4gICAgdGhpcy5zZXR0aW5ncy5vbkNoYW5nZSh0aGlzLmhhbmRsZVNldHRpbmdzQ2hhbmdlKTtcbiAgICB0aGlzLmhhbmRsZVNldHRpbmdzQ2hhbmdlKCk7XG4gIH1cblxuICBwcml2YXRlIGRpc2FibGVGZWF0dXJlVG9nZ2xlKCkge1xuICAgIHRoaXMuc2V0dGluZ3MucmVtb3ZlQ2FsbGJhY2sodGhpcy5oYW5kbGVTZXR0aW5nc0NoYW5nZSk7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKEJPRFlfQ0xBU1MpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEcm9wWm9uZSgpIHtcbiAgICB0aGlzLmRyb3Bab25lUGFkZGluZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgdGhpcy5kcm9wWm9uZVBhZGRpbmcuY2xhc3NMaXN0LmFkZChcIm91dGxpbmVyLXBsdWdpbi1kcm9wLXpvbmUtcGFkZGluZ1wiKTtcbiAgICB0aGlzLmRyb3Bab25lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICB0aGlzLmRyb3Bab25lLmNsYXNzTGlzdC5hZGQoXCJvdXRsaW5lci1wbHVnaW4tZHJvcC16b25lXCIpO1xuICAgIHRoaXMuZHJvcFpvbmUuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgIHRoaXMuZHJvcFpvbmUuYXBwZW5kQ2hpbGQodGhpcy5kcm9wWm9uZVBhZGRpbmcpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5kcm9wWm9uZSk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZURyb3Bab25lKCkge1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5kcm9wWm9uZSk7XG4gICAgdGhpcy5kcm9wWm9uZVBhZGRpbmcgPSBudWxsO1xuICAgIHRoaXMuZHJvcFpvbmUgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRFdmVudExpc3RlbmVycygpIHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIHRoaXMuaGFuZGxlTW91c2VEb3duLCB7XG4gICAgICBjYXB0dXJlOiB0cnVlLFxuICAgIH0pO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5oYW5kbGVNb3VzZU1vdmUpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHRoaXMuaGFuZGxlTW91c2VVcCk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgdGhpcy5oYW5kbGVLZXlEb3duKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLCB0aGlzLmhhbmRsZU1vdXNlRG93biwge1xuICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICB9KTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMuaGFuZGxlTW91c2VNb3ZlKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCB0aGlzLmhhbmRsZU1vdXNlVXApO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIHRoaXMuaGFuZGxlS2V5RG93bik7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNldHRpbmdzQ2hhbmdlID0gKCkgPT4ge1xuICAgIGlmICghaXNGZWF0dXJlU3VwcG9ydGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZXR0aW5ncy5kcmFnQW5kRHJvcCkge1xuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKEJPRFlfQ0xBU1MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoQk9EWV9DTEFTUyk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgaGFuZGxlTW91c2VEb3duID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAoXG4gICAgICAhaXNGZWF0dXJlU3VwcG9ydGVkKCkgfHxcbiAgICAgICF0aGlzLnNldHRpbmdzLmRyYWdBbmREcm9wIHx8XG4gICAgICAhaXNDbGlja09uQnVsbGV0KGUpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmlldyA9IGdldEVkaXRvclZpZXdGcm9tSFRNTEVsZW1lbnQoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICAgIGlmICghdmlldykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdGhpcy5wcmVTdGFydCA9IHtcbiAgICAgIHg6IGUueCxcbiAgICAgIHk6IGUueSxcbiAgICAgIHZpZXcsXG4gICAgfTtcbiAgfTtcblxuICBwcml2YXRlIGhhbmRsZU1vdXNlTW92ZSA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKHRoaXMucHJlU3RhcnQpIHtcbiAgICAgIHRoaXMuc3RhcnREcmFnZ2luZygpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdGF0ZSkge1xuICAgICAgdGhpcy5kZXRlY3RBbmREcmF3RHJvcFpvbmUoZS54LCBlLnkpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIGhhbmRsZU1vdXNlVXAgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMucHJlU3RhcnQpIHtcbiAgICAgIHRoaXMucHJlU3RhcnQgPSBudWxsO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdGF0ZSkge1xuICAgICAgdGhpcy5zdG9wRHJhZ2dpbmcoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBoYW5kbGVLZXlEb3duID0gKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBpZiAodGhpcy5zdGF0ZSAmJiBlLmNvZGUgPT09IFwiRXNjYXBlXCIpIHtcbiAgICAgIHRoaXMuY2FuY2VsRHJhZ2dpbmcoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBzdGFydERyYWdnaW5nKCkge1xuICAgIGNvbnN0IHsgeCwgeSwgdmlldyB9ID0gdGhpcy5wcmVTdGFydDtcbiAgICB0aGlzLnByZVN0YXJ0ID0gbnVsbDtcblxuICAgIGNvbnN0IGVkaXRvciA9IGdldEVkaXRvckZyb21TdGF0ZSh2aWV3LnN0YXRlKTtcbiAgICBjb25zdCBwb3MgPSBlZGl0b3Iub2Zmc2V0VG9Qb3Modmlldy5wb3NBdENvb3Jkcyh7IHgsIHkgfSkpO1xuICAgIGNvbnN0IHJvb3QgPSB0aGlzLnBhcnNlci5wYXJzZShlZGl0b3IsIHBvcyk7XG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyTGluZShwb3MubGluZSk7XG4gICAgY29uc3Qgc3RhdGUgPSBuZXcgRHJhZ0FuZERyb3BTdGF0ZSh2aWV3LCBlZGl0b3IsIHJvb3QsIGxpc3QpO1xuXG4gICAgaWYgKCFzdGF0ZS5oYXNEcm9wVmFyaWFudHMoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICB0aGlzLmhpZ2hsaWdodERyYWdnaW5nTGluZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZWN0QW5kRHJhd0Ryb3Bab25lKHg6IG51bWJlciwgeTogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGF0ZS5jYWxjdWxhdGVOZWFyZXN0RHJvcFZhcmlhbnQoeCwgeSk7XG4gICAgdGhpcy5kcmF3RHJvcFpvbmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuY2VsRHJhZ2dpbmcoKSB7XG4gICAgdGhpcy5zdGF0ZS5kcm9wVmFyaWFudCA9IG51bGw7XG4gICAgdGhpcy5zdG9wRHJhZ2dpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvcERyYWdnaW5nKCkge1xuICAgIHRoaXMudW5oaWdodGxpZ2h0RHJhZ2dpbmdMaW5lcygpO1xuICAgIHRoaXMuaGlkZURyb3Bab25lKCk7XG4gICAgdGhpcy5hcHBseUNoYW5nZXMoKTtcbiAgICB0aGlzLnN0YXRlID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlDaGFuZ2VzKCkge1xuICAgIGlmICghdGhpcy5zdGF0ZS5kcm9wVmFyaWFudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgc3RhdGUgfSA9IHRoaXM7XG4gICAgY29uc3QgeyBkcm9wVmFyaWFudCwgZWRpdG9yLCByb290LCBsaXN0IH0gPSBzdGF0ZTtcblxuICAgIGNvbnN0IG5ld1Jvb3QgPSB0aGlzLnBhcnNlci5wYXJzZShlZGl0b3IsIHJvb3QuZ2V0Q29udGVudFN0YXJ0KCkpO1xuICAgIGlmICghaXNTYW1lUm9vdHMocm9vdCwgbmV3Um9vdCkpIHtcbiAgICAgIG5ldyBOb3RpY2UoXG4gICAgICAgIGBUaGUgaXRlbSBjYW5ub3QgYmUgbW92ZWQuIFRoZSBwYWdlIGNvbnRlbnQgY2hhbmdlZCBkdXJpbmcgdGhlIG1vdmUuYCxcbiAgICAgICAgNTAwMFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5ldmFsKFxuICAgICAgcm9vdCxcbiAgICAgIG5ldyBNb3ZlTGlzdFRvRGlmZmVyZW50UG9zaXRpb24oXG4gICAgICAgIHJvb3QsXG4gICAgICAgIGxpc3QsXG4gICAgICAgIGRyb3BWYXJpYW50LnBsYWNlVG9Nb3ZlLFxuICAgICAgICBkcm9wVmFyaWFudC53aGVyZVRvTW92ZSxcbiAgICAgICAgdGhpcy5vYmlzaWRpYW4uZ2V0RGVmYXVsdEluZGVudENoYXJzKClcbiAgICAgICksXG4gICAgICBlZGl0b3JcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBoaWdobGlnaHREcmFnZ2luZ0xpbmVzKCkge1xuICAgIGNvbnN0IHsgc3RhdGUgfSA9IHRoaXM7XG4gICAgY29uc3QgeyBsaXN0LCBlZGl0b3IsIHZpZXcgfSA9IHN0YXRlO1xuXG4gICAgY29uc3QgbGluZXMgPSBbXTtcbiAgICBjb25zdCBmcm9tTGluZSA9IGxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkubGluZTtcbiAgICBjb25zdCB0aWxsTGluZSA9IGxpc3QuZ2V0Q29udGVudEVuZEluY2x1ZGluZ0NoaWxkcmVuKCkubGluZTtcbiAgICBmb3IgKGxldCBpID0gZnJvbUxpbmU7IGkgPD0gdGlsbExpbmU7IGkrKykge1xuICAgICAgbGluZXMucHVzaChlZGl0b3IucG9zVG9PZmZzZXQoeyBsaW5lOiBpLCBjaDogMCB9KSk7XG4gICAgfVxuICAgIHZpZXcuZGlzcGF0Y2goe1xuICAgICAgZWZmZWN0czogW2RuZFN0YXJ0ZWQub2YobGluZXMpXSxcbiAgICB9KTtcblxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChcIm91dGxpbmVyLXBsdWdpbi1kcmFnZ2luZ1wiKTtcbiAgfVxuXG4gIHByaXZhdGUgdW5oaWdodGxpZ2h0RHJhZ2dpbmdMaW5lcygpIHtcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoXCJvdXRsaW5lci1wbHVnaW4tZHJhZ2dpbmdcIik7XG5cbiAgICB0aGlzLnN0YXRlLnZpZXcuZGlzcGF0Y2goe1xuICAgICAgZWZmZWN0czogW2RuZEVuZGVkLm9mKCldLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3RHJvcFpvbmUoKSB7XG4gICAgY29uc3QgeyBzdGF0ZSB9ID0gdGhpcztcbiAgICBjb25zdCB7IHZpZXcsIGVkaXRvciwgZHJvcFZhcmlhbnQgfSA9IHN0YXRlO1xuXG4gICAgY29uc3QgbmV3UGFyZW50ID1cbiAgICAgIGRyb3BWYXJpYW50LndoZXJlVG9Nb3ZlID09PSBcImluc2lkZVwiXG4gICAgICAgID8gZHJvcFZhcmlhbnQucGxhY2VUb01vdmVcbiAgICAgICAgOiBkcm9wVmFyaWFudC5wbGFjZVRvTW92ZS5nZXRQYXJlbnQoKTtcbiAgICBjb25zdCBuZXdQYXJlbnRJc1Jvb3RMaXN0ID0gIW5ld1BhcmVudC5nZXRQYXJlbnQoKTtcblxuICAgIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gTWF0aC5yb3VuZChcbiAgICAgICAgdmlldy5jb250ZW50RE9NLm9mZnNldFdpZHRoIC1cbiAgICAgICAgICAoZHJvcFZhcmlhbnQubGVmdCAtIHRoaXMuc3RhdGUubGVmdFBhZGRpbmcpXG4gICAgICApO1xuXG4gICAgICB0aGlzLmRyb3Bab25lLnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XG4gICAgICB0aGlzLmRyb3Bab25lLnN0eWxlLnRvcCA9IGRyb3BWYXJpYW50LnRvcCArIFwicHhcIjtcbiAgICAgIHRoaXMuZHJvcFpvbmUuc3R5bGUubGVmdCA9IGRyb3BWYXJpYW50LmxlZnQgKyBcInB4XCI7XG4gICAgICB0aGlzLmRyb3Bab25lLnN0eWxlLndpZHRoID0gd2lkdGggKyBcInB4XCI7XG4gICAgfVxuXG4gICAge1xuICAgICAgY29uc3QgbGV2ZWwgPSBuZXdQYXJlbnQuZ2V0TGV2ZWwoKTtcbiAgICAgIGNvbnN0IGluZGVudFdpZHRoID0gdGhpcy5zdGF0ZS50YWJXaWR0aDtcbiAgICAgIGNvbnN0IHdpZHRoID0gaW5kZW50V2lkdGggKiBsZXZlbDtcbiAgICAgIGNvbnN0IGRhc2hQYWRkaW5nID0gMztcbiAgICAgIGNvbnN0IGRhc2hXaWR0aCA9IGluZGVudFdpZHRoIC0gZGFzaFBhZGRpbmc7XG4gICAgICBjb25zdCBjb2xvciA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICAgICAgXCItLWNvbG9yLWFjY2VudFwiXG4gICAgICApO1xuXG4gICAgICB0aGlzLmRyb3Bab25lUGFkZGluZy5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICAgIHRoaXMuZHJvcFpvbmVQYWRkaW5nLnN0eWxlLm1hcmdpbkxlZnQgPSBgLSR7d2lkdGh9cHhgO1xuICAgICAgdGhpcy5kcm9wWm9uZVBhZGRpbmcuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gYHVybCgnZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMCR7d2lkdGh9JTIwNCUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTNDbGluZSUyMHgxJTNEJTIyMCUyMiUyMHkxJTNEJTIyMCUyMiUyMHgyJTNEJTIyJHt3aWR0aH0lMjIlMjB5MiUzRCUyMjAlMjIlMjBzdHJva2UlM0QlMjIke2NvbG9yfSUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjglMjIlMjBzdHJva2UtZGFzaGFycmF5JTNEJTIyJHtkYXNoV2lkdGh9JTIwJHtkYXNoUGFkZGluZ30lMjIlMkYlM0UlM0MlMkZzdmclM0UnKWA7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZS52aWV3LmRpc3BhdGNoKHtcbiAgICAgIGVmZmVjdHM6IFtcbiAgICAgICAgZG5kTW92ZWQub2YoXG4gICAgICAgICAgbmV3UGFyZW50SXNSb290TGlzdFxuICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICA6IGVkaXRvci5wb3NUb09mZnNldCh7XG4gICAgICAgICAgICAgICAgbGluZTogbmV3UGFyZW50LmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpLmxpbmUsXG4gICAgICAgICAgICAgICAgY2g6IDAsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICksXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoaWRlRHJvcFpvbmUoKSB7XG4gICAgdGhpcy5kcm9wWm9uZS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gIH1cbn1cblxuaW50ZXJmYWNlIERyb3BWYXJpYW50IHtcbiAgbGluZTogbnVtYmVyO1xuICBsZXZlbDogbnVtYmVyO1xuICBsZWZ0OiBudW1iZXI7XG4gIHRvcDogbnVtYmVyO1xuICBwbGFjZVRvTW92ZTogTGlzdDtcbiAgd2hlcmVUb01vdmU6IFwiYWZ0ZXJcIiB8IFwiYmVmb3JlXCIgfCBcImluc2lkZVwiO1xufVxuXG5pbnRlcmZhY2UgRHJhZ0FuZERyb3BQcmVTdGFydFN0YXRlIHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIHZpZXc6IEVkaXRvclZpZXc7XG59XG5cbmNsYXNzIERyYWdBbmREcm9wU3RhdGUge1xuICBwcml2YXRlIGRyb3BWYXJpYW50czogTWFwPHN0cmluZywgRHJvcFZhcmlhbnQ+ID0gbmV3IE1hcCgpO1xuICBwdWJsaWMgZHJvcFZhcmlhbnQ6IERyb3BWYXJpYW50ID0gbnVsbDtcbiAgcHVibGljIGxlZnRQYWRkaW5nID0gMDtcbiAgcHVibGljIHRhYldpZHRoID0gMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmlldzogRWRpdG9yVmlldyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgZWRpdG9yOiBNeUVkaXRvcixcbiAgICBwdWJsaWMgcmVhZG9ubHkgcm9vdDogUm9vdCxcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGlzdDogTGlzdFxuICApIHtcbiAgICB0aGlzLmNvbGxlY3REcm9wVmFyaWFudHMoKTtcbiAgICB0aGlzLmNhbGN1bGF0ZUxlZnRQYWRkaW5nKCk7XG4gICAgdGhpcy5jYWxjdWxhdGVUYWJXaWR0aCgpO1xuICB9XG5cbiAgZ2V0RHJvcFZhcmlhbnRzKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZHJvcFZhcmlhbnRzLnZhbHVlcygpKTtcbiAgfVxuXG4gIGhhc0Ryb3BWYXJpYW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5kcm9wVmFyaWFudHMuc2l6ZSA+IDA7XG4gIH1cblxuICBjYWxjdWxhdGVOZWFyZXN0RHJvcFZhcmlhbnQoeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcbiAgICBjb25zdCB7IHZpZXcsIGVkaXRvciB9ID0gdGhpcztcblxuICAgIGNvbnN0IGRyb3BWYXJpYW50cyA9IHRoaXMuZ2V0RHJvcFZhcmlhbnRzKCk7XG5cbiAgICBmb3IgKGNvbnN0IHYgb2YgZHJvcFZhcmlhbnRzKSB7XG4gICAgICBjb25zdCB7IHBsYWNlVG9Nb3ZlIH0gPSB2O1xuXG4gICAgICB2LmxlZnQgPSB0aGlzLmxlZnRQYWRkaW5nICsgKHYubGV2ZWwgLSAxKSAqIHRoaXMudGFiV2lkdGg7XG5cbiAgICAgIGNvbnN0IHBvc2l0aW9uQWZ0ZXJMaXN0ID1cbiAgICAgICAgdi53aGVyZVRvTW92ZSA9PT0gXCJhZnRlclwiIHx8IHYud2hlcmVUb01vdmUgPT09IFwiaW5zaWRlXCI7XG4gICAgICBjb25zdCBsaW5lID0gcG9zaXRpb25BZnRlckxpc3RcbiAgICAgICAgPyBwbGFjZVRvTW92ZS5nZXRDb250ZW50RW5kSW5jbHVkaW5nQ2hpbGRyZW4oKS5saW5lXG4gICAgICAgIDogcGxhY2VUb01vdmUuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkubGluZTtcbiAgICAgIGNvbnN0IGxpbmVQb3MgPSBlZGl0b3IucG9zVG9PZmZzZXQoe1xuICAgICAgICBsaW5lLFxuICAgICAgICBjaDogMCxcbiAgICAgIH0pO1xuXG4gICAgICB2LnRvcCA9IHZpZXcuY29vcmRzQXRQb3MobGluZVBvcywgLTEpLnRvcDtcblxuICAgICAgaWYgKHBvc2l0aW9uQWZ0ZXJMaXN0KSB7XG4gICAgICAgIHYudG9wICs9IHZpZXcubGluZUJsb2NrQXQobGluZVBvcykuaGVpZ2h0O1xuICAgICAgfVxuXG4gICAgICAvLyBCZXR0ZXIgdmVydGljYWwgYWxpZ25tZW50XG4gICAgICB2LnRvcCAtPSA4O1xuICAgIH1cblxuICAgIGNvbnN0IG5lYXJlc3RMaW5lVG9wID0gZHJvcFZhcmlhbnRzXG4gICAgICAuc29ydCgoYSwgYikgPT4gTWF0aC5hYnMoeSAtIGEudG9wKSAtIE1hdGguYWJzKHkgLSBiLnRvcCkpXG4gICAgICAuZmlyc3QoKS50b3A7XG5cbiAgICBjb25zdCB2YXJpYW5zT25OZWFyZXN0TGluZSA9IGRyb3BWYXJpYW50cy5maWx0ZXIoXG4gICAgICAodikgPT4gTWF0aC5hYnModi50b3AgLSBuZWFyZXN0TGluZVRvcCkgPD0gNFxuICAgICk7XG5cbiAgICB0aGlzLmRyb3BWYXJpYW50ID0gdmFyaWFuc09uTmVhcmVzdExpbmVcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBNYXRoLmFicyh4IC0gYS5sZWZ0KSAtIE1hdGguYWJzKHggLSBiLmxlZnQpKVxuICAgICAgLmZpcnN0KCk7XG4gIH1cblxuICBwcml2YXRlIGFkZERyb3BWYXJpYW50KHY6IERyb3BWYXJpYW50KSB7XG4gICAgdGhpcy5kcm9wVmFyaWFudHMuc2V0KGAke3YubGluZX0gJHt2LmxldmVsfWAsIHYpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb2xsZWN0RHJvcFZhcmlhbnRzKCkge1xuICAgIGNvbnN0IHZpc2l0ID0gKGxpc3RzOiBMaXN0W10pID0+IHtcbiAgICAgIGZvciAoY29uc3QgcGxhY2VUb01vdmUgb2YgbGlzdHMpIHtcbiAgICAgICAgY29uc3QgbGluZUJlZm9yZSA9IHBsYWNlVG9Nb3ZlLmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpLmxpbmU7XG4gICAgICAgIGNvbnN0IGxpbmVBZnRlciA9IHBsYWNlVG9Nb3ZlLmdldENvbnRlbnRFbmRJbmNsdWRpbmdDaGlsZHJlbigpLmxpbmUgKyAxO1xuXG4gICAgICAgIGNvbnN0IGxldmVsID0gcGxhY2VUb01vdmUuZ2V0TGV2ZWwoKTtcblxuICAgICAgICB0aGlzLmFkZERyb3BWYXJpYW50KHtcbiAgICAgICAgICBsaW5lOiBsaW5lQmVmb3JlLFxuICAgICAgICAgIGxldmVsLFxuICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgIHBsYWNlVG9Nb3ZlLFxuICAgICAgICAgIHdoZXJlVG9Nb3ZlOiBcImJlZm9yZVwiLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hZGREcm9wVmFyaWFudCh7XG4gICAgICAgICAgbGluZTogbGluZUFmdGVyLFxuICAgICAgICAgIGxldmVsLFxuICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgIHBsYWNlVG9Nb3ZlLFxuICAgICAgICAgIHdoZXJlVG9Nb3ZlOiBcImFmdGVyXCIsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChwbGFjZVRvTW92ZSA9PT0gdGhpcy5saXN0KSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGxhY2VUb01vdmUuaXNFbXB0eSgpKSB7XG4gICAgICAgICAgdGhpcy5hZGREcm9wVmFyaWFudCh7XG4gICAgICAgICAgICBsaW5lOiBsaW5lQWZ0ZXIsXG4gICAgICAgICAgICBsZXZlbDogbGV2ZWwgKyAxLFxuICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgIHBsYWNlVG9Nb3ZlLFxuICAgICAgICAgICAgd2hlcmVUb01vdmU6IFwiaW5zaWRlXCIsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmlzaXQocGxhY2VUb01vdmUuZ2V0Q2hpbGRyZW4oKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmlzaXQodGhpcy5yb290LmdldENoaWxkcmVuKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVMZWZ0UGFkZGluZygpIHtcbiAgICB0aGlzLmxlZnRQYWRkaW5nID0gdGhpcy52aWV3LmNvb3Jkc0F0UG9zKDAsIC0xKS5sZWZ0O1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVUYWJXaWR0aCgpIHtcbiAgICBjb25zdCB7IHZpZXcgfSA9IHRoaXM7XG5cbiAgICBjb25zdCBzaW5nbGVJbmRlbnQgPSBpbmRlbnRTdHJpbmcodmlldy5zdGF0ZSwgZ2V0SW5kZW50VW5pdCh2aWV3LnN0YXRlKSk7XG5cbiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB2aWV3LnN0YXRlLmRvYy5saW5lczsgaSsrKSB7XG4gICAgICBjb25zdCBsaW5lID0gdmlldy5zdGF0ZS5kb2MubGluZShpKTtcblxuICAgICAgaWYgKGxpbmUudGV4dC5zdGFydHNXaXRoKHNpbmdsZUluZGVudCkpIHtcbiAgICAgICAgY29uc3QgYSA9IHZpZXcuY29vcmRzQXRQb3MobGluZS5mcm9tLCAtMSk7XG4gICAgICAgIGNvbnN0IGIgPSB2aWV3LmNvb3Jkc0F0UG9zKGxpbmUuZnJvbSArIHNpbmdsZUluZGVudC5sZW5ndGgsIC0xKTtcbiAgICAgICAgdGhpcy50YWJXaWR0aCA9IGIubGVmdCAtIGEubGVmdDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMudGFiV2lkdGggPSB2aWV3LmRlZmF1bHRDaGFyYWN0ZXJXaWR0aCAqIGdldEluZGVudFVuaXQodmlldy5zdGF0ZSk7XG4gIH1cbn1cblxuY29uc3QgZG5kU3RhcnRlZCA9IFN0YXRlRWZmZWN0LmRlZmluZTxudW1iZXJbXT4oe1xuICBtYXA6IChsaW5lcywgY2hhbmdlKSA9PiBsaW5lcy5tYXAoKGwpID0+IGNoYW5nZS5tYXBQb3MobCkpLFxufSk7XG5cbmNvbnN0IGRuZE1vdmVkID0gU3RhdGVFZmZlY3QuZGVmaW5lPG51bWJlciB8IG51bGw+KHtcbiAgbWFwOiAobGluZSwgY2hhbmdlKSA9PiAobGluZSAhPT0gbnVsbCA/IGNoYW5nZS5tYXBQb3MobGluZSkgOiBsaW5lKSxcbn0pO1xuXG5jb25zdCBkbmRFbmRlZCA9IFN0YXRlRWZmZWN0LmRlZmluZTx2b2lkPigpO1xuXG5jb25zdCBkcmFnZ2luZ0xpbmVEZWNvcmF0aW9uID0gRGVjb3JhdGlvbi5saW5lKHtcbiAgY2xhc3M6IFwib3V0bGluZXItcGx1Z2luLWRyYWdnaW5nLWxpbmVcIixcbn0pO1xuXG5jb25zdCBkcm9wcGluZ0xpbmVEZWNvcmF0aW9uID0gRGVjb3JhdGlvbi5saW5lKHtcbiAgY2xhc3M6IFwib3V0bGluZXItcGx1Z2luLWRyb3BwaW5nLWxpbmVcIixcbn0pO1xuXG5jb25zdCBkcmFnZ2luZ0xpbmVzU3RhdGVGaWVsZCA9IFN0YXRlRmllbGQuZGVmaW5lPERlY29yYXRpb25TZXQ+KHtcbiAgY3JlYXRlOiAoKSA9PiBEZWNvcmF0aW9uLm5vbmUsXG5cbiAgdXBkYXRlOiAoZG5kU3RhdGUsIHRyKSA9PiB7XG4gICAgZG5kU3RhdGUgPSBkbmRTdGF0ZS5tYXAodHIuY2hhbmdlcyk7XG5cbiAgICBmb3IgKGNvbnN0IGUgb2YgdHIuZWZmZWN0cykge1xuICAgICAgaWYgKGUuaXMoZG5kU3RhcnRlZCkpIHtcbiAgICAgICAgZG5kU3RhdGUgPSBkbmRTdGF0ZS51cGRhdGUoe1xuICAgICAgICAgIGFkZDogZS52YWx1ZS5tYXAoKGwpID0+IGRyYWdnaW5nTGluZURlY29yYXRpb24ucmFuZ2UobCwgbCkpLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGUuaXMoZG5kRW5kZWQpKSB7XG4gICAgICAgIGRuZFN0YXRlID0gRGVjb3JhdGlvbi5ub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkbmRTdGF0ZTtcbiAgfSxcblxuICBwcm92aWRlOiAoZikgPT4gRWRpdG9yVmlldy5kZWNvcmF0aW9ucy5mcm9tKGYpLFxufSk7XG5cbmNvbnN0IGRyb3BwaW5nTGluZXNTdGF0ZUZpZWxkID0gU3RhdGVGaWVsZC5kZWZpbmU8RGVjb3JhdGlvblNldD4oe1xuICBjcmVhdGU6ICgpID0+IERlY29yYXRpb24ubm9uZSxcblxuICB1cGRhdGU6IChkbmREcm9wcGluZ1N0YXRlLCB0cikgPT4ge1xuICAgIGRuZERyb3BwaW5nU3RhdGUgPSBkbmREcm9wcGluZ1N0YXRlLm1hcCh0ci5jaGFuZ2VzKTtcblxuICAgIGZvciAoY29uc3QgZSBvZiB0ci5lZmZlY3RzKSB7XG4gICAgICBpZiAoZS5pcyhkbmRNb3ZlZCkpIHtcbiAgICAgICAgZG5kRHJvcHBpbmdTdGF0ZSA9XG4gICAgICAgICAgZS52YWx1ZSA9PT0gbnVsbFxuICAgICAgICAgICAgPyBEZWNvcmF0aW9uLm5vbmVcbiAgICAgICAgICAgIDogRGVjb3JhdGlvbi5zZXQoZHJvcHBpbmdMaW5lRGVjb3JhdGlvbi5yYW5nZShlLnZhbHVlLCBlLnZhbHVlKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChlLmlzKGRuZEVuZGVkKSkge1xuICAgICAgICBkbmREcm9wcGluZ1N0YXRlID0gRGVjb3JhdGlvbi5ub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkbmREcm9wcGluZ1N0YXRlO1xuICB9LFxuXG4gIHByb3ZpZGU6IChmKSA9PiBFZGl0b3JWaWV3LmRlY29yYXRpb25zLmZyb20oZiksXG59KTtcblxuZnVuY3Rpb24gZ2V0RWRpdG9yVmlld0Zyb21IVE1MRWxlbWVudChlOiBIVE1MRWxlbWVudCkge1xuICB3aGlsZSAoZSAmJiAhZS5jbGFzc0xpc3QuY29udGFpbnMoXCJjbS1lZGl0b3JcIikpIHtcbiAgICBlID0gZS5wYXJlbnRFbGVtZW50O1xuICB9XG5cbiAgaWYgKCFlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gRWRpdG9yVmlldy5maW5kRnJvbURPTShlKTtcbn1cblxuZnVuY3Rpb24gaXNDbGlja09uQnVsbGV0KGU6IE1vdXNlRXZlbnQpIHtcbiAgbGV0IGVsID0gZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgd2hpbGUgKGVsKSB7XG4gICAgaWYgKFxuICAgICAgZWwuY2xhc3NMaXN0LmNvbnRhaW5zKFwiY20tZm9ybWF0dGluZy1saXN0XCIpIHx8XG4gICAgICBlbC5jbGFzc0xpc3QuY29udGFpbnMoXCJjbS1mb2xkLWluZGljYXRvclwiKSB8fFxuICAgICAgZWwuY2xhc3NMaXN0LmNvbnRhaW5zKFwidGFzay1saXN0LWl0ZW0tY2hlY2tib3hcIilcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGVsID0gZWwucGFyZW50RWxlbWVudDtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gaXNTYW1lUm9vdHMoYTogUm9vdCwgYjogUm9vdCkge1xuICBjb25zdCBbYVN0YXJ0LCBhRW5kXSA9IGEuZ2V0Q29udGVudFJhbmdlKCk7XG4gIGNvbnN0IFtiU3RhcnQsIGJFbmRdID0gYi5nZXRDb250ZW50UmFuZ2UoKTtcblxuICBpZiAoY21wUG9zKGFTdGFydCwgYlN0YXJ0KSAhPT0gMCB8fCBjbXBQb3MoYUVuZCwgYkVuZCkgIT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gYS5wcmludCgpID09PSBiLnByaW50KCk7XG59XG5cbmZ1bmN0aW9uIGlzRmVhdHVyZVN1cHBvcnRlZCgpIHtcbiAgcmV0dXJuIFBsYXRmb3JtLmlzRGVza3RvcDtcbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIEtlZXBDdXJzb3JPdXRzaWRlRm9sZGVkTGluZXMgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgaWYgKCFsaXN0LmlzRm9sZGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmb2xkUm9vdCA9IGxpc3QuZ2V0VG9wRm9sZFJvb3QoKTtcbiAgICBjb25zdCBmaXJzdExpbmVFbmQgPSBmb2xkUm9vdC5nZXRMaW5lc0luZm8oKVswXS50bztcblxuICAgIGlmIChjdXJzb3IubGluZSA+IGZpcnN0TGluZUVuZC5saW5lKSB7XG4gICAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgICAgcm9vdC5yZXBsYWNlQ3Vyc29yKGZpcnN0TGluZUVuZCk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBLZWVwQ3Vyc29yV2l0aGluTGlzdENvbnRlbnQgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGNvbnRlbnRTdGFydCA9IGxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0QWZ0ZXJDaGVja2JveCgpO1xuICAgIGNvbnN0IGxpbmVQcmVmaXggPVxuICAgICAgY29udGVudFN0YXJ0LmxpbmUgPT09IGN1cnNvci5saW5lXG4gICAgICAgID8gY29udGVudFN0YXJ0LmNoXG4gICAgICAgIDogbGlzdC5nZXROb3Rlc0luZGVudCgpLmxlbmd0aDtcblxuICAgIGlmIChjdXJzb3IuY2ggPCBsaW5lUHJlZml4KSB7XG4gICAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgICAgbGluZTogY3Vyc29yLmxpbmUsXG4gICAgICAgIGNoOiBsaW5lUHJlZml4LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBFZGl0b3JTdGF0ZSwgVHJhbnNhY3Rpb24gfSBmcm9tIFwiQGNvZGVtaXJyb3Ivc3RhdGVcIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IsIGdldEVkaXRvckZyb21TdGF0ZSB9IGZyb20gXCIuLi9lZGl0b3JcIjtcbmltcG9ydCB7IEtlZXBDdXJzb3JPdXRzaWRlRm9sZGVkTGluZXMgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9LZWVwQ3Vyc29yT3V0c2lkZUZvbGRlZExpbmVzXCI7XG5pbXBvcnQgeyBLZWVwQ3Vyc29yV2l0aGluTGlzdENvbnRlbnQgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9LZWVwQ3Vyc29yV2l0aGluTGlzdENvbnRlbnRcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9QYXJzZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5cbmV4cG9ydCBjbGFzcyBFZGl0b3JTZWxlY3Rpb25zQmVoYXZpb3VyT3ZlcnJpZGUgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzLFxuICAgIHByaXZhdGUgcGFyc2VyOiBQYXJzZXIsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihcbiAgICAgIEVkaXRvclN0YXRlLnRyYW5zYWN0aW9uRXh0ZW5kZXIub2YodGhpcy50cmFuc2FjdGlvbkV4dGVuZGVyKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgdHJhbnNhY3Rpb25FeHRlbmRlciA9ICh0cjogVHJhbnNhY3Rpb24pOiBudWxsID0+IHtcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5rZWVwQ3Vyc29yV2l0aGluQ29udGVudCA9PT0gXCJuZXZlclwiIHx8ICF0ci5zZWxlY3Rpb24pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGVkaXRvciA9IGdldEVkaXRvckZyb21TdGF0ZSh0ci5zdGFydFN0YXRlKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5oYW5kbGVTZWxlY3Rpb25zQ2hhbmdlcyhlZGl0b3IpO1xuICAgIH0sIDApO1xuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgcHJpdmF0ZSBoYW5kbGVTZWxlY3Rpb25zQ2hhbmdlcyA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgY29uc3Qgcm9vdCA9IHRoaXMucGFyc2VyLnBhcnNlKGVkaXRvcik7XG5cbiAgICBpZiAoIXJvb3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB7XG4gICAgICBjb25zdCB7IHNob3VsZFN0b3BQcm9wYWdhdGlvbiB9ID0gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIuZXZhbChcbiAgICAgICAgcm9vdCxcbiAgICAgICAgbmV3IEtlZXBDdXJzb3JPdXRzaWRlRm9sZGVkTGluZXMocm9vdCksXG4gICAgICAgIGVkaXRvclxuICAgICAgKTtcblxuICAgICAgaWYgKHNob3VsZFN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIuZXZhbChcbiAgICAgIHJvb3QsXG4gICAgICBuZXcgS2VlcEN1cnNvcldpdGhpbkxpc3RDb250ZW50KHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcbiAgfTtcbn1cbiIsImV4cG9ydCBjb25zdCBjaGVja2JveFJlID0gYFxcXFxbW15cXFxcW1xcXFxdXVxcXFxdWyBcXHRdYDtcbiIsImV4cG9ydCBmdW5jdGlvbiBpc0VtcHR5TGluZU9yRW1wdHlDaGVja2JveChsaW5lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGxpbmUgPT09IFwiXCIgfHwgbGluZSA9PT0gXCJbIF0gXCI7XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgTGlzdCwgUG9zaXRpb24sIFJvb3QsIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMgfSBmcm9tIFwiLi4vcm9vdFwiO1xuaW1wb3J0IHsgY2hlY2tib3hSZSB9IGZyb20gXCIuLi91dGlscy9jaGVja2JveFJlXCI7XG5pbXBvcnQgeyBpc0VtcHR5TGluZU9yRW1wdHlDaGVja2JveCB9IGZyb20gXCIuLi91dGlscy9pc0VtcHR5TGluZU9yRW1wdHlDaGVja2JveFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdldFpvb21SYW5nZSB7XG4gIGdldFpvb21SYW5nZSgpOiB7IGZyb206IFBvc2l0aW9uOyB0bzogUG9zaXRpb24gfSB8IG51bGw7XG59XG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVOZXdJdGVtIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb290OiBSb290LFxuICAgIHByaXZhdGUgZGVmYXVsdEluZGVudENoYXJzOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBnZXRab29tUmFuZ2U6IEdldFpvb21SYW5nZVxuICApIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlU2VsZWN0aW9uKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3Rpb24gPSByb290LmdldFNlbGVjdGlvbigpO1xuICAgIGlmICghc2VsZWN0aW9uIHx8IHNlbGVjdGlvbi5hbmNob3IubGluZSAhPT0gc2VsZWN0aW9uLmhlYWQubGluZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGxpbmVzID0gbGlzdC5nZXRMaW5lc0luZm8oKTtcblxuICAgIGlmIChsaW5lcy5sZW5ndGggPT09IDEgJiYgaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3gobGluZXNbMF0udGV4dCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIGNvbnN0IGxpbmVVbmRlckN1cnNvciA9IGxpbmVzLmZpbmQoKGwpID0+IGwuZnJvbS5saW5lID09PSBjdXJzb3IubGluZSk7XG5cbiAgICBpZiAoY3Vyc29yLmNoIDwgbGluZVVuZGVyQ3Vyc29yLmZyb20uY2gpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IG9sZExpbmVzLCBuZXdMaW5lcyB9ID0gbGluZXMucmVkdWNlKFxuICAgICAgKGFjYywgbGluZSkgPT4ge1xuICAgICAgICBpZiAoY3Vyc29yLmxpbmUgPiBsaW5lLmZyb20ubGluZSkge1xuICAgICAgICAgIGFjYy5vbGRMaW5lcy5wdXNoKGxpbmUudGV4dCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3Vyc29yLmxpbmUgPT09IGxpbmUuZnJvbS5saW5lKSB7XG4gICAgICAgICAgY29uc3QgbGVmdCA9IGxpbmUudGV4dC5zbGljZSgwLCBzZWxlY3Rpb24uZnJvbSAtIGxpbmUuZnJvbS5jaCk7XG4gICAgICAgICAgY29uc3QgcmlnaHQgPSBsaW5lLnRleHQuc2xpY2Uoc2VsZWN0aW9uLnRvIC0gbGluZS5mcm9tLmNoKTtcbiAgICAgICAgICBhY2Mub2xkTGluZXMucHVzaChsZWZ0KTtcbiAgICAgICAgICBhY2MubmV3TGluZXMucHVzaChyaWdodCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3Vyc29yLmxpbmUgPCBsaW5lLmZyb20ubGluZSkge1xuICAgICAgICAgIGFjYy5uZXdMaW5lcy5wdXNoKGxpbmUudGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgb2xkTGluZXM6IFtdLFxuICAgICAgICBuZXdMaW5lczogW10sXG4gICAgICB9XG4gICAgKTtcblxuICAgIGNvbnN0IGNvZGVCbG9ja0JhY3RpY2tzID0gb2xkTGluZXMuam9pbihcIlxcblwiKS5zcGxpdChcImBgYFwiKS5sZW5ndGggLSAxO1xuICAgIGNvbnN0IGlzSW5zaWRlQ29kZWJsb2NrID1cbiAgICAgIGNvZGVCbG9ja0JhY3RpY2tzID4gMCAmJiBjb2RlQmxvY2tCYWN0aWNrcyAlIDIgIT09IDA7XG5cbiAgICBpZiAoaXNJbnNpZGVDb2RlYmxvY2spIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IHpvb21SYW5nZSA9IHRoaXMuZ2V0Wm9vbVJhbmdlLmdldFpvb21SYW5nZSgpO1xuICAgIGNvbnN0IGxpc3RJc1pvb21pbmdSb290ID0gQm9vbGVhbihcbiAgICAgIHpvb21SYW5nZSAmJlxuICAgICAgICBsaXN0LmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpLmxpbmUgPj0gem9vbVJhbmdlLmZyb20ubGluZSAmJlxuICAgICAgICBsaXN0LmdldExhc3RMaW5lQ29udGVudEVuZCgpLmxpbmUgPD0gem9vbVJhbmdlLmZyb20ubGluZVxuICAgICk7XG5cbiAgICBjb25zdCBoYXNDaGlsZHJlbiA9ICFsaXN0LmlzRW1wdHkoKTtcbiAgICBjb25zdCBjaGlsZElzRm9sZGVkID0gbGlzdC5pc0ZvbGRSb290KCk7XG4gICAgY29uc3QgZW5kUG9zID0gbGlzdC5nZXRMYXN0TGluZUNvbnRlbnRFbmQoKTtcbiAgICBjb25zdCBlbmRPZkxpbmUgPSBjdXJzb3IubGluZSA9PT0gZW5kUG9zLmxpbmUgJiYgY3Vyc29yLmNoID09PSBlbmRQb3MuY2g7XG5cbiAgICBjb25zdCBvbkNoaWxkTGV2ZWwgPVxuICAgICAgbGlzdElzWm9vbWluZ1Jvb3QgfHwgKGhhc0NoaWxkcmVuICYmICFjaGlsZElzRm9sZGVkICYmIGVuZE9mTGluZSk7XG5cbiAgICBjb25zdCBpbmRlbnQgPSBvbkNoaWxkTGV2ZWxcbiAgICAgID8gaGFzQ2hpbGRyZW5cbiAgICAgICAgPyBsaXN0LmdldENoaWxkcmVuKClbMF0uZ2V0Rmlyc3RMaW5lSW5kZW50KClcbiAgICAgICAgOiBsaXN0LmdldEZpcnN0TGluZUluZGVudCgpICsgdGhpcy5kZWZhdWx0SW5kZW50Q2hhcnNcbiAgICAgIDogbGlzdC5nZXRGaXJzdExpbmVJbmRlbnQoKTtcblxuICAgIGNvbnN0IGJ1bGxldCA9XG4gICAgICBvbkNoaWxkTGV2ZWwgJiYgaGFzQ2hpbGRyZW5cbiAgICAgICAgPyBsaXN0LmdldENoaWxkcmVuKClbMF0uZ2V0QnVsbGV0KClcbiAgICAgICAgOiBsaXN0LmdldEJ1bGxldCgpO1xuXG4gICAgY29uc3Qgc3BhY2VBZnRlckJ1bGxldCA9XG4gICAgICBvbkNoaWxkTGV2ZWwgJiYgaGFzQ2hpbGRyZW5cbiAgICAgICAgPyBsaXN0LmdldENoaWxkcmVuKClbMF0uZ2V0U3BhY2VBZnRlckJ1bGxldCgpXG4gICAgICAgIDogbGlzdC5nZXRTcGFjZUFmdGVyQnVsbGV0KCk7XG5cbiAgICBjb25zdCBwcmVmaXggPSBvbGRMaW5lc1swXS5tYXRjaChjaGVja2JveFJlKSA/IFwiWyBdIFwiIDogXCJcIjtcblxuICAgIGNvbnN0IG5ld0xpc3QgPSBuZXcgTGlzdChcbiAgICAgIGxpc3QuZ2V0Um9vdCgpLFxuICAgICAgaW5kZW50LFxuICAgICAgYnVsbGV0LFxuICAgICAgcHJlZml4LFxuICAgICAgc3BhY2VBZnRlckJ1bGxldCxcbiAgICAgIHByZWZpeCArIG5ld0xpbmVzLnNoaWZ0KCksXG4gICAgICBmYWxzZVxuICAgICk7XG5cbiAgICBpZiAobmV3TGluZXMubGVuZ3RoID4gMCkge1xuICAgICAgbmV3TGlzdC5zZXROb3Rlc0luZGVudChsaXN0LmdldE5vdGVzSW5kZW50KCkpO1xuICAgICAgZm9yIChjb25zdCBsaW5lIG9mIG5ld0xpbmVzKSB7XG4gICAgICAgIG5ld0xpc3QuYWRkTGluZShsaW5lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob25DaGlsZExldmVsKSB7XG4gICAgICBsaXN0LmFkZEJlZm9yZUFsbChuZXdMaXN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFjaGlsZElzRm9sZGVkIHx8ICFlbmRPZkxpbmUpIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBsaXN0LmdldENoaWxkcmVuKCk7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgICAgICBsaXN0LnJlbW92ZUNoaWxkKGNoaWxkKTtcbiAgICAgICAgICBuZXdMaXN0LmFkZEFmdGVyQWxsKGNoaWxkKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsaXN0LmdldFBhcmVudCgpLmFkZEFmdGVyKGxpc3QsIG5ld0xpc3QpO1xuICAgIH1cblxuICAgIGxpc3QucmVwbGFjZUxpbmVzKG9sZExpbmVzKTtcblxuICAgIGNvbnN0IG5ld0xpc3RTdGFydCA9IG5ld0xpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCk7XG4gICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgIGxpbmU6IG5ld0xpc3RTdGFydC5saW5lLFxuICAgICAgY2g6IG5ld0xpc3RTdGFydC5jaCArIHByZWZpeC5sZW5ndGgsXG4gICAgfSk7XG5cbiAgICByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzKHJvb3QpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCwgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBPdXRkZW50TGlzdCBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgdXBkYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdDogUm9vdCkge31cblxuICBzaG91bGRTdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcFByb3BhZ2F0aW9uO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZWQ7XG4gIH1cblxuICBwZXJmb3JtKCkge1xuICAgIGNvbnN0IHsgcm9vdCB9ID0gdGhpcztcblxuICAgIGlmICghcm9vdC5oYXNTaW5nbGVDdXJzb3IoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IHBhcmVudCA9IGxpc3QuZ2V0UGFyZW50KCk7XG4gICAgY29uc3QgZ3JhbmRQYXJlbnQgPSBwYXJlbnQuZ2V0UGFyZW50KCk7XG5cbiAgICBpZiAoIWdyYW5kUGFyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxpc3RTdGFydExpbmVCZWZvcmUgPSByb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YobGlzdClbMF07XG4gICAgY29uc3QgaW5kZW50Um1Gcm9tID0gcGFyZW50LmdldEZpcnN0TGluZUluZGVudCgpLmxlbmd0aDtcbiAgICBjb25zdCBpbmRlbnRSbVRpbGwgPSBsaXN0LmdldEZpcnN0TGluZUluZGVudCgpLmxlbmd0aDtcblxuICAgIHBhcmVudC5yZW1vdmVDaGlsZChsaXN0KTtcbiAgICBncmFuZFBhcmVudC5hZGRBZnRlcihwYXJlbnQsIGxpc3QpO1xuICAgIGxpc3QudW5pbmRlbnRDb250ZW50KGluZGVudFJtRnJvbSwgaW5kZW50Um1UaWxsKTtcblxuICAgIGNvbnN0IGxpc3RTdGFydExpbmVBZnRlciA9IHJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZihsaXN0KVswXTtcbiAgICBjb25zdCBsaW5lRGlmZiA9IGxpc3RTdGFydExpbmVBZnRlciAtIGxpc3RTdGFydExpbmVCZWZvcmU7XG4gICAgY29uc3QgY2hEaWZmID0gaW5kZW50Um1UaWxsIC0gaW5kZW50Um1Gcm9tO1xuXG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcbiAgICByb290LnJlcGxhY2VDdXJzb3Ioe1xuICAgICAgbGluZTogY3Vyc29yLmxpbmUgKyBsaW5lRGlmZixcbiAgICAgIGNoOiBjdXJzb3IuY2ggLSBjaERpZmYsXG4gICAgfSk7XG5cbiAgICByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzKHJvb3QpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcbmltcG9ydCB7IE91dGRlbnRMaXN0IH0gZnJvbSBcIi4vT3V0ZGVudExpc3RcIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5pbXBvcnQgeyBpc0VtcHR5TGluZU9yRW1wdHlDaGVja2JveCB9IGZyb20gXCIuLi91dGlscy9pc0VtcHR5TGluZU9yRW1wdHlDaGVja2JveFwiO1xuXG5leHBvcnQgY2xhc3MgT3V0ZGVudExpc3RJZkl0c0VtcHR5IGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBvdXRkZW50TGlzdDogT3V0ZGVudExpc3Q7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7XG4gICAgdGhpcy5vdXRkZW50TGlzdCA9IG5ldyBPdXRkZW50TGlzdChyb290KTtcbiAgfVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5vdXRkZW50TGlzdC5zaG91bGRTdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5vdXRkZW50TGlzdC5zaG91bGRVcGRhdGUoKTtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgbGluZXMgPSBsaXN0LmdldExpbmVzKCk7XG5cbiAgICBpZiAoXG4gICAgICBsaW5lcy5sZW5ndGggPiAxIHx8XG4gICAgICAhaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3gobGluZXNbMF0pIHx8XG4gICAgICBsaXN0LmdldExldmVsKCkgPT09IDFcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm91dGRlbnRMaXN0LnBlcmZvcm0oKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgUHJlYyB9IGZyb20gXCJAY29kZW1pcnJvci9zdGF0ZVwiO1xuaW1wb3J0IHsga2V5bWFwIH0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vZWRpdG9yXCI7XG5pbXBvcnQgeyBDcmVhdGVOZXdJdGVtIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvQ3JlYXRlTmV3SXRlbVwiO1xuaW1wb3J0IHsgT3V0ZGVudExpc3RJZkl0c0VtcHR5IH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvT3V0ZGVudExpc3RJZkl0c0VtcHR5XCI7XG5pbXBvcnQgeyBJTUVEZXRlY3RvciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9JTUVEZXRlY3RvclwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25QZXJmb3JtZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvT3BlcmF0aW9uUGVyZm9ybWVyXCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvUGFyc2VyXCI7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuaW1wb3J0IHsgY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2sgfSBmcm9tIFwiLi4vdXRpbHMvY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2tcIjtcblxuZXhwb3J0IGNsYXNzIEVudGVyQmVoYXZpb3VyT3ZlcnJpZGUgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzLFxuICAgIHByaXZhdGUgaW1lRGV0ZWN0b3I6IElNRURldGVjdG9yLFxuICAgIHByaXZhdGUgb2JzaWRpYW5TZXR0aW5nczogT2JzaWRpYW5TZXR0aW5ncyxcbiAgICBwcml2YXRlIHBhcnNlcjogUGFyc2VyLFxuICAgIHByaXZhdGUgb3BlcmF0aW9uUGVyZm9ybWVyOiBPcGVyYXRpb25QZXJmb3JtZXJcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBQcmVjLmhpZ2hlc3QoXG4gICAgICAgIGtleW1hcC5vZihbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBcIkVudGVyXCIsXG4gICAgICAgICAgICBydW46IGNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3Mub3ZlcnJpZGVFbnRlckJlaGF2aW91ciAmJiAhdGhpcy5pbWVEZXRlY3Rvci5pc09wZW5lZCgpO1xuICB9O1xuXG4gIHByaXZhdGUgcnVuID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICBjb25zdCByb290ID0gdGhpcy5wYXJzZXIucGFyc2UoZWRpdG9yKTtcblxuICAgIGlmICghcm9vdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2hvdWxkVXBkYXRlOiBmYWxzZSxcbiAgICAgICAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAge1xuICAgICAgY29uc3QgcmVzID0gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIuZXZhbChcbiAgICAgICAgcm9vdCxcbiAgICAgICAgbmV3IE91dGRlbnRMaXN0SWZJdHNFbXB0eShyb290KSxcbiAgICAgICAgZWRpdG9yXG4gICAgICApO1xuXG4gICAgICBpZiAocmVzLnNob3VsZFN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfVxuICAgIH1cblxuICAgIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRJbmRlbnRDaGFycyA9IHRoaXMub2JzaWRpYW5TZXR0aW5ncy5nZXREZWZhdWx0SW5kZW50Q2hhcnMoKTtcbiAgICAgIGNvbnN0IHpvb21SYW5nZSA9IGVkaXRvci5nZXRab29tUmFuZ2UoKTtcbiAgICAgIGNvbnN0IGdldFpvb21SYW5nZSA9IHtcbiAgICAgICAgZ2V0Wm9vbVJhbmdlOiAoKSA9PiB6b29tUmFuZ2UsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXMgPSB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5ldmFsKFxuICAgICAgICByb290LFxuICAgICAgICBuZXcgQ3JlYXRlTmV3SXRlbShyb290LCBkZWZhdWx0SW5kZW50Q2hhcnMsIGdldFpvb21SYW5nZSksXG4gICAgICAgIGVkaXRvclxuICAgICAgKTtcblxuICAgICAgaWYgKHJlcy5zaG91bGRVcGRhdGUgJiYgem9vbVJhbmdlKSB7XG4gICAgICAgIGVkaXRvci50cnlSZWZyZXNoWm9vbSh6b29tUmFuZ2UuZnJvbS5saW5lKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gIH07XG59XG4iLCJpbXBvcnQgeyBFZGl0b3IgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vZWRpdG9yXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFZGl0b3JDYWxsYmFjayhjYjogKGVkaXRvcjogTXlFZGl0b3IpID0+IGJvb2xlYW4pIHtcbiAgcmV0dXJuIChlZGl0b3I6IEVkaXRvcikgPT4ge1xuICAgIGNvbnN0IG15RWRpdG9yID0gbmV3IE15RWRpdG9yKGVkaXRvcik7XG4gICAgY29uc3Qgc2hvdWxkU3RvcFByb3BhZ2F0aW9uID0gY2IobXlFZGl0b3IpO1xuXG4gICAgaWYgKFxuICAgICAgIXNob3VsZFN0b3BQcm9wYWdhdGlvbiAmJlxuICAgICAgd2luZG93LmV2ZW50ICYmXG4gICAgICB3aW5kb3cuZXZlbnQudHlwZSA9PT0gXCJrZXlkb3duXCJcbiAgICApIHtcbiAgICAgIG15RWRpdG9yLnRyaWdnZXJPbktleURvd24od2luZG93LmV2ZW50IGFzIEtleWJvYXJkRXZlbnQpO1xuICAgIH1cbiAgfTtcbn1cbiIsImltcG9ydCB7IE5vdGljZSwgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vZWRpdG9yXCI7XG5pbXBvcnQgeyBPYnNpZGlhblNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2V0dGluZ3NcIjtcbmltcG9ydCB7IGNyZWF0ZUVkaXRvckNhbGxiYWNrIH0gZnJvbSBcIi4uL3V0aWxzL2NyZWF0ZUVkaXRvckNhbGxiYWNrXCI7XG5cbmV4cG9ydCBjbGFzcyBMaXN0c0ZvbGRpbmdDb21tYW5kcyBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsdWdpbjogUGx1Z2luXzIsXG4gICAgcHJpdmF0ZSBvYnNpZGlhblNldHRpbmdzOiBPYnNpZGlhblNldHRpbmdzXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwiZm9sZFwiLFxuICAgICAgaWNvbjogXCJjaGV2cm9ucy1kb3duLXVwXCIsXG4gICAgICBuYW1lOiBcIkZvbGQgdGhlIGxpc3RcIixcbiAgICAgIGVkaXRvckNhbGxiYWNrOiBjcmVhdGVFZGl0b3JDYWxsYmFjayh0aGlzLmZvbGQpLFxuICAgICAgaG90a2V5czogW1xuICAgICAgICB7XG4gICAgICAgICAgbW9kaWZpZXJzOiBbXCJNb2RcIl0sXG4gICAgICAgICAga2V5OiBcIkFycm93VXBcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnBsdWdpbi5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiBcInVuZm9sZFwiLFxuICAgICAgaWNvbjogXCJjaGV2cm9ucy11cC1kb3duXCIsXG4gICAgICBuYW1lOiBcIlVuZm9sZCB0aGUgbGlzdFwiLFxuICAgICAgZWRpdG9yQ2FsbGJhY2s6IGNyZWF0ZUVkaXRvckNhbGxiYWNrKHRoaXMudW5mb2xkKSxcbiAgICAgIGhvdGtleXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG1vZGlmaWVyczogW1wiTW9kXCJdLFxuICAgICAgICAgIGtleTogXCJBcnJvd0Rvd25cIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgc2V0Rm9sZChlZGl0b3I6IE15RWRpdG9yLCB0eXBlOiBcImZvbGRcIiB8IFwidW5mb2xkXCIpIHtcbiAgICBpZiAoIXRoaXMub2JzaWRpYW5TZXR0aW5ncy5nZXRGb2xkU2V0dGluZ3MoKS5mb2xkSW5kZW50KSB7XG4gICAgICBuZXcgTm90aWNlKFxuICAgICAgICBgVW5hYmxlIHRvICR7dHlwZX0gYmVjYXVzZSBmb2xkaW5nIGlzIGRpc2FibGVkLiBQbGVhc2UgZW5hYmxlIFwiRm9sZCBpbmRlbnRcIiBpbiBPYnNpZGlhbiBzZXR0aW5ncy5gLFxuICAgICAgICA1MDAwXG4gICAgICApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgY3Vyc29yID0gZWRpdG9yLmdldEN1cnNvcigpO1xuXG4gICAgaWYgKHR5cGUgPT09IFwiZm9sZFwiKSB7XG4gICAgICBlZGl0b3IuZm9sZChjdXJzb3IubGluZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVkaXRvci51bmZvbGQoY3Vyc29yLmxpbmUpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBmb2xkID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZXRGb2xkKGVkaXRvciwgXCJmb2xkXCIpO1xuICB9O1xuXG4gIHByaXZhdGUgdW5mb2xkID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZXRGb2xkKGVkaXRvciwgXCJ1bmZvbGRcIik7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCwgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBJbmRlbnRMaXN0IGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290LCBwcml2YXRlIGRlZmF1bHRJbmRlbnRDaGFyczogc3RyaW5nKSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgcGFyZW50ID0gbGlzdC5nZXRQYXJlbnQoKTtcbiAgICBjb25zdCBwcmV2ID0gcGFyZW50LmdldFByZXZTaWJsaW5nT2YobGlzdCk7XG5cbiAgICBpZiAoIXByZXYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuXG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZUJlZm9yZSA9IHJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZihsaXN0KVswXTtcblxuICAgIGNvbnN0IGluZGVudFBvcyA9IGxpc3QuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoO1xuICAgIGxldCBpbmRlbnRDaGFycyA9IFwiXCI7XG5cbiAgICBpZiAoaW5kZW50Q2hhcnMgPT09IFwiXCIgJiYgIXByZXYuaXNFbXB0eSgpKSB7XG4gICAgICBpbmRlbnRDaGFycyA9IHByZXZcbiAgICAgICAgLmdldENoaWxkcmVuKClbMF1cbiAgICAgICAgLmdldEZpcnN0TGluZUluZGVudCgpXG4gICAgICAgIC5zbGljZShwcmV2LmdldEZpcnN0TGluZUluZGVudCgpLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgaWYgKGluZGVudENoYXJzID09PSBcIlwiKSB7XG4gICAgICBpbmRlbnRDaGFycyA9IGxpc3RcbiAgICAgICAgLmdldEZpcnN0TGluZUluZGVudCgpXG4gICAgICAgIC5zbGljZShwYXJlbnQuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBpZiAoaW5kZW50Q2hhcnMgPT09IFwiXCIgJiYgIWxpc3QuaXNFbXB0eSgpKSB7XG4gICAgICBpbmRlbnRDaGFycyA9IGxpc3QuZ2V0Q2hpbGRyZW4oKVswXS5nZXRGaXJzdExpbmVJbmRlbnQoKTtcbiAgICB9XG5cbiAgICBpZiAoaW5kZW50Q2hhcnMgPT09IFwiXCIpIHtcbiAgICAgIGluZGVudENoYXJzID0gdGhpcy5kZWZhdWx0SW5kZW50Q2hhcnM7XG4gICAgfVxuXG4gICAgcGFyZW50LnJlbW92ZUNoaWxkKGxpc3QpO1xuICAgIHByZXYuYWRkQWZ0ZXJBbGwobGlzdCk7XG4gICAgbGlzdC5pbmRlbnRDb250ZW50KGluZGVudFBvcywgaW5kZW50Q2hhcnMpO1xuXG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZUFmdGVyID0gcm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKGxpc3QpWzBdO1xuICAgIGNvbnN0IGxpbmVEaWZmID0gbGlzdFN0YXJ0TGluZUFmdGVyIC0gbGlzdFN0YXJ0TGluZUJlZm9yZTtcblxuICAgIGNvbnN0IGN1cnNvciA9IHJvb3QuZ2V0Q3Vyc29yKCk7XG4gICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgIGxpbmU6IGN1cnNvci5saW5lICsgbGluZURpZmYsXG4gICAgICBjaDogY3Vyc29yLmNoICsgaW5kZW50Q2hhcnMubGVuZ3RoLFxuICAgIH0pO1xuXG4gICAgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyhyb290KTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4vT3BlcmF0aW9uXCI7XG5cbmltcG9ydCB7IFJvb3QsIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMgfSBmcm9tIFwiLi4vcm9vdFwiO1xuXG5leHBvcnQgY2xhc3MgTW92ZUxpc3REb3duIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgcGFyZW50ID0gbGlzdC5nZXRQYXJlbnQoKTtcbiAgICBjb25zdCBncmFuZFBhcmVudCA9IHBhcmVudC5nZXRQYXJlbnQoKTtcbiAgICBjb25zdCBuZXh0ID0gcGFyZW50LmdldE5leHRTaWJsaW5nT2YobGlzdCk7XG5cbiAgICBjb25zdCBsaXN0U3RhcnRMaW5lQmVmb3JlID0gcm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKGxpc3QpWzBdO1xuXG4gICAgaWYgKCFuZXh0ICYmIGdyYW5kUGFyZW50KSB7XG4gICAgICBjb25zdCBuZXdQYXJlbnQgPSBncmFuZFBhcmVudC5nZXROZXh0U2libGluZ09mKHBhcmVudCk7XG5cbiAgICAgIGlmIChuZXdQYXJlbnQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcbiAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKGxpc3QpO1xuICAgICAgICBuZXdQYXJlbnQuYWRkQmVmb3JlQWxsKGxpc3QpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobmV4dCkge1xuICAgICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcbiAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChsaXN0KTtcbiAgICAgIHBhcmVudC5hZGRBZnRlcihuZXh0LCBsaXN0KTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudXBkYXRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3RTdGFydExpbmVBZnRlciA9IHJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZihsaXN0KVswXTtcbiAgICBjb25zdCBsaW5lRGlmZiA9IGxpc3RTdGFydExpbmVBZnRlciAtIGxpc3RTdGFydExpbmVCZWZvcmU7XG5cbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIHJvb3QucmVwbGFjZUN1cnNvcih7XG4gICAgICBsaW5lOiBjdXJzb3IubGluZSArIGxpbmVEaWZmLFxuICAgICAgY2g6IGN1cnNvci5jaCxcbiAgICB9KTtcblxuICAgIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMocm9vdCk7XG4gIH1cbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBSb290LCByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzIH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIE1vdmVMaXN0VXAgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG5cbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBwYXJlbnQgPSBsaXN0LmdldFBhcmVudCgpO1xuICAgIGNvbnN0IGdyYW5kUGFyZW50ID0gcGFyZW50LmdldFBhcmVudCgpO1xuICAgIGNvbnN0IHByZXYgPSBwYXJlbnQuZ2V0UHJldlNpYmxpbmdPZihsaXN0KTtcblxuICAgIGNvbnN0IGxpc3RTdGFydExpbmVCZWZvcmUgPSByb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YobGlzdClbMF07XG5cbiAgICBpZiAoIXByZXYgJiYgZ3JhbmRQYXJlbnQpIHtcbiAgICAgIGNvbnN0IG5ld1BhcmVudCA9IGdyYW5kUGFyZW50LmdldFByZXZTaWJsaW5nT2YocGFyZW50KTtcblxuICAgICAgaWYgKG5ld1BhcmVudCkge1xuICAgICAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQobGlzdCk7XG4gICAgICAgIG5ld1BhcmVudC5hZGRBZnRlckFsbChsaXN0KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByZXYpIHtcbiAgICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG4gICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQobGlzdCk7XG4gICAgICBwYXJlbnQuYWRkQmVmb3JlKHByZXYsIGxpc3QpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy51cGRhdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZUFmdGVyID0gcm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKGxpc3QpWzBdO1xuICAgIGNvbnN0IGxpbmVEaWZmID0gbGlzdFN0YXJ0TGluZUFmdGVyIC0gbGlzdFN0YXJ0TGluZUJlZm9yZTtcblxuICAgIGNvbnN0IGN1cnNvciA9IHJvb3QuZ2V0Q3Vyc29yKCk7XG4gICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgIGxpbmU6IGN1cnNvci5saW5lICsgbGluZURpZmYsXG4gICAgICBjaDogY3Vyc29yLmNoLFxuICAgIH0pO1xuXG4gICAgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyhyb290KTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vZWRpdG9yXCI7XG5pbXBvcnQgeyBJbmRlbnRMaXN0IH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvSW5kZW50TGlzdFwiO1xuaW1wb3J0IHsgTW92ZUxpc3REb3duIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvTW92ZUxpc3REb3duXCI7XG5pbXBvcnQgeyBNb3ZlTGlzdFVwIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvTW92ZUxpc3RVcFwiO1xuaW1wb3J0IHsgT3V0ZGVudExpc3QgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9PdXRkZW50TGlzdFwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25QZXJmb3JtZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvT3BlcmF0aW9uUGVyZm9ybWVyXCI7XG5pbXBvcnQgeyBjcmVhdGVFZGl0b3JDYWxsYmFjayB9IGZyb20gXCIuLi91dGlscy9jcmVhdGVFZGl0b3JDYWxsYmFja1wiO1xuXG5leHBvcnQgY2xhc3MgTGlzdHNNb3ZlbWVudENvbW1hbmRzIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIG9ic2lkaWFuU2V0dGluZ3M6IE9ic2lkaWFuU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiBcIm1vdmUtbGlzdC1pdGVtLXVwXCIsXG4gICAgICBpY29uOiBcImFycm93LXVwXCIsXG4gICAgICBuYW1lOiBcIk1vdmUgbGlzdCBhbmQgc3VibGlzdHMgdXBcIixcbiAgICAgIGVkaXRvckNhbGxiYWNrOiBjcmVhdGVFZGl0b3JDYWxsYmFjayh0aGlzLm1vdmVMaXN0VXApLFxuICAgICAgaG90a2V5czogW1xuICAgICAgICB7XG4gICAgICAgICAgbW9kaWZpZXJzOiBbXCJNb2RcIiwgXCJTaGlmdFwiXSxcbiAgICAgICAgICBrZXk6IFwiQXJyb3dVcFwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIHRoaXMucGx1Z2luLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwibW92ZS1saXN0LWl0ZW0tZG93blwiLFxuICAgICAgaWNvbjogXCJhcnJvdy1kb3duXCIsXG4gICAgICBuYW1lOiBcIk1vdmUgbGlzdCBhbmQgc3VibGlzdHMgZG93blwiLFxuICAgICAgZWRpdG9yQ2FsbGJhY2s6IGNyZWF0ZUVkaXRvckNhbGxiYWNrKHRoaXMubW92ZUxpc3REb3duKSxcbiAgICAgIGhvdGtleXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG1vZGlmaWVyczogW1wiTW9kXCIsIFwiU2hpZnRcIl0sXG4gICAgICAgICAga2V5OiBcIkFycm93RG93blwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIHRoaXMucGx1Z2luLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwiaW5kZW50LWxpc3RcIixcbiAgICAgIGljb246IFwiaW5kZW50XCIsXG4gICAgICBuYW1lOiBcIkluZGVudCB0aGUgbGlzdCBhbmQgc3VibGlzdHNcIixcbiAgICAgIGVkaXRvckNhbGxiYWNrOiBjcmVhdGVFZGl0b3JDYWxsYmFjayh0aGlzLmluZGVudExpc3QpLFxuICAgICAgaG90a2V5czogW10sXG4gICAgfSk7XG5cbiAgICB0aGlzLnBsdWdpbi5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiBcIm91dGRlbnQtbGlzdFwiLFxuICAgICAgaWNvbjogXCJvdXRkZW50XCIsXG4gICAgICBuYW1lOiBcIk91dGRlbnQgdGhlIGxpc3QgYW5kIHN1Ymxpc3RzXCIsXG4gICAgICBlZGl0b3JDYWxsYmFjazogY3JlYXRlRWRpdG9yQ2FsbGJhY2sodGhpcy5vdXRkZW50TGlzdCksXG4gICAgICBob3RrZXlzOiBbXSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHt9XG5cbiAgcHJpdmF0ZSBtb3ZlTGlzdERvd24gPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIGNvbnN0IHsgc2hvdWxkU3RvcFByb3BhZ2F0aW9uIH0gPSB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5wZXJmb3JtKFxuICAgICAgKHJvb3QpID0+IG5ldyBNb3ZlTGlzdERvd24ocm9vdCksXG4gICAgICBlZGl0b3JcbiAgICApO1xuXG4gICAgcmV0dXJuIHNob3VsZFN0b3BQcm9wYWdhdGlvbjtcbiAgfTtcblxuICBwcml2YXRlIG1vdmVMaXN0VXAgPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIGNvbnN0IHsgc2hvdWxkU3RvcFByb3BhZ2F0aW9uIH0gPSB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5wZXJmb3JtKFxuICAgICAgKHJvb3QpID0+IG5ldyBNb3ZlTGlzdFVwKHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcblxuICAgIHJldHVybiBzaG91bGRTdG9wUHJvcGFnYXRpb247XG4gIH07XG5cbiAgcHJpdmF0ZSBpbmRlbnRMaXN0ID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICBjb25zdCB7IHNob3VsZFN0b3BQcm9wYWdhdGlvbiB9ID0gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIucGVyZm9ybShcbiAgICAgIChyb290KSA9PlxuICAgICAgICBuZXcgSW5kZW50TGlzdChyb290LCB0aGlzLm9ic2lkaWFuU2V0dGluZ3MuZ2V0RGVmYXVsdEluZGVudENoYXJzKCkpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcblxuICAgIHJldHVybiBzaG91bGRTdG9wUHJvcGFnYXRpb247XG4gIH07XG5cbiAgcHJpdmF0ZSBvdXRkZW50TGlzdCA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgY29uc3QgeyBzaG91bGRTdG9wUHJvcGFnYXRpb24gfSA9IHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyLnBlcmZvcm0oXG4gICAgICAocm9vdCkgPT4gbmV3IE91dGRlbnRMaXN0KHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcblxuICAgIHJldHVybiBzaG91bGRTdG9wUHJvcGFnYXRpb247XG4gIH07XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVUaWxsQ3VycmVudExpbmVDb250ZW50U3RhcnQgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IGN1cnNvciA9IHJvb3QuZ2V0Q3Vyc29yKCk7XG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgbGluZXMgPSBsaXN0LmdldExpbmVzSW5mbygpO1xuICAgIGNvbnN0IGxpbmVObyA9IGxpbmVzLmZpbmRJbmRleCgobCkgPT4gbC5mcm9tLmxpbmUgPT09IGN1cnNvci5saW5lKTtcblxuICAgIGxpbmVzW2xpbmVOb10udGV4dCA9IGxpbmVzW2xpbmVOb10udGV4dC5zbGljZShcbiAgICAgIGN1cnNvci5jaCAtIGxpbmVzW2xpbmVOb10uZnJvbS5jaFxuICAgICk7XG5cbiAgICBsaXN0LnJlcGxhY2VMaW5lcyhsaW5lcy5tYXAoKGwpID0+IGwudGV4dCkpO1xuICAgIHJvb3QucmVwbGFjZUN1cnNvcihsaW5lc1tsaW5lTm9dLmZyb20pO1xuICB9XG59XG4iLCJpbXBvcnQgeyBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBrZXltYXAgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vRmVhdHVyZVwiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9lZGl0b3JcIjtcbmltcG9ydCB7IERlbGV0ZVRpbGxDdXJyZW50TGluZUNvbnRlbnRTdGFydCB9IGZyb20gXCIuLi9vcGVyYXRpb25zL0RlbGV0ZVRpbGxDdXJyZW50TGluZUNvbnRlbnRTdGFydFwiO1xuaW1wb3J0IHsgSU1FRGV0ZWN0b3IgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FRGV0ZWN0b3JcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5pbXBvcnQgeyBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayB9IGZyb20gXCIuLi91dGlscy9jcmVhdGVLZXltYXBSdW5DYWxsYmFja1wiO1xuXG5leHBvcnQgY2xhc3MgTWV0YUJhY2tzcGFjZUJlaGF2aW91ck92ZXJyaWRlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncyxcbiAgICBwcml2YXRlIGltZURldGVjdG9yOiBJTUVEZXRlY3RvcixcbiAgICBwcml2YXRlIG9wZXJhdGlvblBlcmZvcm1lcjogT3BlcmF0aW9uUGVyZm9ybWVyXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFxuICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAge1xuICAgICAgICAgIG1hYzogXCJtLUJhY2tzcGFjZVwiLFxuICAgICAgICAgIHJ1bjogY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soe1xuICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICBydW46IHRoaXMucnVuLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgXSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cblxuICBwcml2YXRlIGNoZWNrID0gKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnNldHRpbmdzLmtlZXBDdXJzb3JXaXRoaW5Db250ZW50ICE9PSBcIm5ldmVyXCIgJiZcbiAgICAgICF0aGlzLmltZURldGVjdG9yLmlzT3BlbmVkKClcbiAgICApO1xuICB9O1xuXG4gIHByaXZhdGUgcnVuID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIucGVyZm9ybShcbiAgICAgIChyb290KSA9PiBuZXcgRGVsZXRlVGlsbEN1cnJlbnRMaW5lQ29udGVudFN0YXJ0KHJvb3QpLFxuICAgICAgZWRpdG9yXG4gICAgKTtcbiAgfTtcbn1cbiIsImltcG9ydCB7IE1hcmtkb3duUmVuZGVyZXIsIE1vZGFsLCBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vRmVhdHVyZVwiO1xuXG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuXG5jbGFzcyBSZWxlYXNlTm90ZXNNb2RhbCBleHRlbmRzIE1vZGFsIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLFxuICAgIHByaXZhdGUgdGl0bGU6IHN0cmluZyxcbiAgICBwcml2YXRlIGNvbnRlbnQ6IHN0cmluZyxcbiAgICBwcml2YXRlIGNiOiAoKSA9PiB2b2lkXG4gICkge1xuICAgIHN1cGVyKHBsdWdpbi5hcHApO1xuICB9XG5cbiAgYXN5bmMgb25PcGVuKCkge1xuICAgIHRoaXMudGl0bGVFbC5zZXRUZXh0KHRoaXMudGl0bGUpO1xuXG4gICAgTWFya2Rvd25SZW5kZXJlci5yZW5kZXJNYXJrZG93bihcbiAgICAgIHRoaXMuY29udGVudCxcbiAgICAgIHRoaXMuY29udGVudEVsLFxuICAgICAgXCJcIixcbiAgICAgIHRoaXMucGx1Z2luXG4gICAgKTtcbiAgfVxuXG4gIG9uQ2xvc2UoKSB7XG4gICAgdGhpcy5jYigpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVSZWxlYXNlcyhhOiBzdHJpbmcsIGI6IHN0cmluZykge1xuICBjb25zdCBbYU1ham9yLCBhTWlub3IsIGFQYXRjaF0gPSBhLnNwbGl0KFwiLlwiLCAzKS5tYXAoTnVtYmVyKTtcbiAgY29uc3QgW2JNYWpvciwgYk1pbm9yLCBiUGF0Y2hdID0gYi5zcGxpdChcIi5cIiwgMykubWFwKE51bWJlcik7XG5cbiAgaWYgKGFNYWpvciA9PT0gYk1ham9yKSB7XG4gICAgaWYgKGFNaW5vciA9PT0gYk1pbm9yKSB7XG4gICAgICByZXR1cm4gYVBhdGNoIC0gYlBhdGNoO1xuICAgIH1cblxuICAgIHJldHVybiBhTWlub3IgLSBiTWlub3I7XG4gIH1cblxuICByZXR1cm4gYU1ham9yIC0gYk1ham9yO1xufVxuXG5mdW5jdGlvbiBwYXJzZUNoYW5nZWxvZygpIHtcbiAgY29uc3QgbWFya2Rvd24gPSBDSEFOR0VMT0dfTUQ7XG4gIGNvbnN0IHJlbGVhc2VOb3RlczogW3N0cmluZywgc3RyaW5nXVtdID0gW107XG4gIGxldCB2ZXJzaW9uO1xuICBsZXQgY29udGVudCA9IFwiXCI7XG5cbiAgZm9yIChjb25zdCBsaW5lIG9mIG1hcmtkb3duLnNwbGl0KFwiXFxuXCIpKSB7XG4gICAgY29uc3QgdmVyc2lvbkhlYWRlck1hdGNoZXMgPSAvXiMrXFxzKyhcXGQrXFwuXFxkK1xcLlxcZCspJC8uZXhlYyhsaW5lKTtcbiAgICBpZiAodmVyc2lvbkhlYWRlck1hdGNoZXMpIHtcbiAgICAgIGlmICh2ZXJzaW9uICYmIGNvbnRlbnQudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVsZWFzZU5vdGVzLnB1c2goW3ZlcnNpb24sIGNvbnRlbnRdKTtcbiAgICAgIH1cbiAgICAgIHZlcnNpb24gPSB2ZXJzaW9uSGVhZGVyTWF0Y2hlc1sxXTtcbiAgICAgIGNvbnRlbnQgPSBsaW5lO1xuICAgICAgY29udGVudCArPSBcIlxcblwiO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZW50ICs9IGxpbmU7XG4gICAgICBjb250ZW50ICs9IFwiXFxuXCI7XG4gICAgfVxuICB9XG5cbiAgaWYgKHZlcnNpb24gJiYgY29udGVudC50cmltKCkubGVuZ3RoID4gMCkge1xuICAgIHJlbGVhc2VOb3Rlcy5wdXNoKFt2ZXJzaW9uLCBjb250ZW50XSk7XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZU5vdGVzO1xufVxuXG5leHBvcnQgY2xhc3MgUmVsZWFzZU5vdGVzQW5ub3VuY2VtZW50IGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIHByaXZhdGUgbW9kYWw6IFJlbGVhc2VOb3Rlc01vZGFsIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLCBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncykge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwic2hvdy1yZWxlYXNlLW5vdGVzXCIsXG4gICAgICBuYW1lOiBcIlNob3cgUmVsZWFzZSBOb3Rlc1wiLFxuICAgICAgY2FsbGJhY2s6IHRoaXMuc2hvd01vZGFsLFxuICAgIH0pO1xuXG4gICAgdGhpcy5zaG93TW9kYWwodGhpcy5zZXR0aW5ncy5wcmV2aW91c1JlbGVhc2UpO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge1xuICAgIGlmICghdGhpcy5tb2RhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZGFsID0gdGhpcy5tb2RhbDtcbiAgICB0aGlzLm1vZGFsID0gbnVsbDtcbiAgICBtb2RhbC5jbG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93TW9kYWwgPSAocHJldmlvdXNSZWxlYXNlOiBzdHJpbmcgfCBudWxsID0gbnVsbCkgPT4ge1xuICAgIGxldCByZWxlYXNlTm90ZXMgPSBcIlwiO1xuICAgIGZvciAoY29uc3QgW3ZlcnNpb24sIGNvbnRlbnRdIG9mIHBhcnNlQ2hhbmdlbG9nKCkpIHtcbiAgICAgIGlmIChjb21wYXJlUmVsZWFzZXModmVyc2lvbiwgcHJldmlvdXNSZWxlYXNlIHx8IFwiMC4wLjBcIikgPiAwKSB7XG4gICAgICAgIHJlbGVhc2VOb3RlcyArPSBjb250ZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChyZWxlYXNlTm90ZXMudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZGFsVGl0bGUgPSBgV2VsY29tZSB0byBPYnNpZGlhbiBPdXRsaW5lciAke1BMVUdJTl9WRVJTSU9OfWA7XG5cbiAgICB0aGlzLm1vZGFsID0gbmV3IFJlbGVhc2VOb3Rlc01vZGFsKFxuICAgICAgdGhpcy5wbHVnaW4sXG4gICAgICBtb2RhbFRpdGxlLFxuICAgICAgcmVsZWFzZU5vdGVzLFxuICAgICAgdGhpcy5oYW5kbGVDbG9zZVxuICAgICk7XG4gICAgdGhpcy5tb2RhbC5vcGVuKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBoYW5kbGVDbG9zZSA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoIXRoaXMubW9kYWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldHRpbmdzLnByZXZpb3VzUmVsZWFzZSA9IFBMVUdJTl9WRVJTSU9OO1xuICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgQXBwLCBQbHVnaW5TZXR0aW5nVGFiLCBQbHVnaW5fMiwgU2V0dGluZyB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vRmVhdHVyZVwiO1xuXG5pbXBvcnQge1xuICBLZWVwQ3Vyc29yV2l0aGluQ29udGVudCxcbiAgU2V0dGluZ3MsXG4gIFZlcnRpY2FsTGluZXNBY3Rpb24sXG59IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuXG5jbGFzcyBPYnNpZGlhbk91dGxpbmVyUGx1Z2luU2V0dGluZ1RhYiBleHRlbmRzIFBsdWdpblNldHRpbmdUYWIge1xuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcGx1Z2luOiBQbHVnaW5fMiwgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MpIHtcbiAgICBzdXBlcihhcHAsIHBsdWdpbik7XG4gIH1cblxuICBkaXNwbGF5KCk6IHZvaWQge1xuICAgIGNvbnN0IHsgY29udGFpbmVyRWwgfSA9IHRoaXM7XG5cbiAgICBjb250YWluZXJFbC5lbXB0eSgpO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIlN0aWNrIHRoZSBjdXJzb3IgdG8gdGhlIGNvbnRlbnRcIilcbiAgICAgIC5zZXREZXNjKFwiRG9uJ3QgbGV0IHRoZSBjdXJzb3IgbW92ZSB0byB0aGUgYnVsbGV0IHBvc2l0aW9uLlwiKVxuICAgICAgLmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4ge1xuICAgICAgICBkcm9wZG93blxuICAgICAgICAgIC5hZGRPcHRpb25zKHtcbiAgICAgICAgICAgIG5ldmVyOiBcIk5ldmVyXCIsXG4gICAgICAgICAgICBcImJ1bGxldC1vbmx5XCI6IFwiU3RpY2sgY3Vyc29yIG91dCBvZiBidWxsZXRzXCIsXG4gICAgICAgICAgICBcImJ1bGxldC1hbmQtY2hlY2tib3hcIjogXCJTdGljayBjdXJzb3Igb3V0IG9mIGJ1bGxldHMgYW5kIGNoZWNrYm94ZXNcIixcbiAgICAgICAgICB9IGFzIHsgW2tleSBpbiBLZWVwQ3Vyc29yV2l0aGluQ29udGVudF06IHN0cmluZyB9KVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLmtlZXBDdXJzb3JXaXRoaW5Db250ZW50KVxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWU6IEtlZXBDdXJzb3JXaXRoaW5Db250ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzLmtlZXBDdXJzb3JXaXRoaW5Db250ZW50ID0gdmFsdWU7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkVuaGFuY2UgdGhlIFRhYiBrZXlcIilcbiAgICAgIC5zZXREZXNjKFwiTWFrZSBUYWIgYW5kIFNoaWZ0LVRhYiBiZWhhdmUgdGhlIHNhbWUgYXMgb3RoZXIgb3V0bGluZXJzLlwiKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLm92ZXJyaWRlVGFiQmVoYXZpb3VyKVxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3Mub3ZlcnJpZGVUYWJCZWhhdmlvdXIgPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiRW5oYW5jZSB0aGUgRW50ZXIga2V5XCIpXG4gICAgICAuc2V0RGVzYyhcIk1ha2UgdGhlIEVudGVyIGtleSBiZWhhdmUgdGhlIHNhbWUgYXMgb3RoZXIgb3V0bGluZXJzLlwiKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLm92ZXJyaWRlRW50ZXJCZWhhdmlvdXIpXG4gICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXR0aW5ncy5vdmVycmlkZUVudGVyQmVoYXZpb3VyID0gdmFsdWU7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkVuaGFuY2UgdGhlIEN0cmwrQSBvciBDbWQrQSBiZWhhdmlvclwiKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgIFwiUHJlc3MgdGhlIGhvdGtleSBvbmNlIHRvIHNlbGVjdCB0aGUgY3VycmVudCBsaXN0IGl0ZW0uIFByZXNzIHRoZSBob3RrZXkgdHdpY2UgdG8gc2VsZWN0IHRoZSBlbnRpcmUgbGlzdC5cIlxuICAgICAgKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLm92ZXJyaWRlU2VsZWN0QWxsQmVoYXZpb3VyKVxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3Mub3ZlcnJpZGVTZWxlY3RBbGxCZWhhdmlvdXIgPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiSW1wcm92ZSB0aGUgc3R5bGUgb2YgeW91ciBsaXN0c1wiKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgIFwiU3R5bGVzIGFyZSBvbmx5IGNvbXBhdGlibGUgd2l0aCBidWlsdC1pbiBPYnNpZGlhbiB0aGVtZXMgYW5kIG1heSBub3QgYmUgY29tcGF0aWJsZSB3aXRoIG90aGVyIHRoZW1lcy5cIlxuICAgICAgKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLmJldHRlckxpc3RzU3R5bGVzKVxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MuYmV0dGVyTGlzdHNTdHlsZXMgPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiRHJhdyB2ZXJ0aWNhbCBpbmRlbnRhdGlvbiBsaW5lc1wiKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLnZlcnRpY2FsTGluZXMpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ3MudmVydGljYWxMaW5lcyA9IHZhbHVlO1xuICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIlZlcnRpY2FsIGluZGVudGF0aW9uIGxpbmUgY2xpY2sgYWN0aW9uXCIpXG4gICAgICAuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG4gICAgICAgIGRyb3Bkb3duXG4gICAgICAgICAgLmFkZE9wdGlvbnMoe1xuICAgICAgICAgICAgbm9uZTogXCJOb25lXCIsXG4gICAgICAgICAgICBcInpvb20taW5cIjogXCJab29tIEluXCIsXG4gICAgICAgICAgICBcInRvZ2dsZS1mb2xkaW5nXCI6IFwiVG9nZ2xlIEZvbGRpbmdcIixcbiAgICAgICAgICB9IGFzIHsgW2tleSBpbiBWZXJ0aWNhbExpbmVzQWN0aW9uXTogc3RyaW5nIH0pXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMuc2V0dGluZ3MudmVydGljYWxMaW5lc0FjdGlvbilcbiAgICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlOiBWZXJ0aWNhbExpbmVzQWN0aW9uKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzLnZlcnRpY2FsTGluZXNBY3Rpb24gPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbCkuc2V0TmFtZShcIkRyYWctYW5kLURyb3BcIikuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcbiAgICAgIHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLmRyYWdBbmREcm9wKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kcmFnQW5kRHJvcCA9IHZhbHVlO1xuICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkRlYnVnIG1vZGVcIilcbiAgICAgIC5zZXREZXNjKFxuICAgICAgICBcIk9wZW4gRGV2VG9vbHMgKENvbW1hbmQrT3B0aW9uK0kgb3IgQ29udHJvbCtTaGlmdCtJKSB0byBjb3B5IHRoZSBkZWJ1ZyBsb2dzLlwiXG4gICAgICApXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcbiAgICAgICAgdG9nZ2xlLnNldFZhbHVlKHRoaXMuc2V0dGluZ3MuZGVidWcpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ3MuZGVidWcgPSB2YWx1ZTtcbiAgICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NUYWIgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwbHVnaW46IFBsdWdpbl8yLCBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncykge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLmFkZFNldHRpbmdUYWIoXG4gICAgICBuZXcgT2JzaWRpYW5PdXRsaW5lclBsdWdpblNldHRpbmdUYWIoXG4gICAgICAgIHRoaXMucGx1Z2luLmFwcCxcbiAgICAgICAgdGhpcy5wbHVnaW4sXG4gICAgICAgIHRoaXMuc2V0dGluZ3NcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cbn1cbiIsImltcG9ydCB7IFBsdWdpbl8yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IFByZWMgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivc3RhdGVcIjtcbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgT3V0ZGVudExpc3QgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9PdXRkZW50TGlzdFwiO1xuaW1wb3J0IHsgSU1FRGV0ZWN0b3IgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FRGV0ZWN0b3JcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5pbXBvcnQgeyBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayB9IGZyb20gXCIuLi91dGlscy9jcmVhdGVLZXltYXBSdW5DYWxsYmFja1wiO1xuXG5leHBvcnQgY2xhc3MgU2hpZnRUYWJCZWhhdmlvdXJPdmVycmlkZSBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsdWdpbjogUGx1Z2luXzIsXG4gICAgcHJpdmF0ZSBpbWVEZXRlY3RvcjogSU1FRGV0ZWN0b3IsXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihcbiAgICAgIFByZWMuaGlnaGVzdChcbiAgICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IFwicy1UYWJcIixcbiAgICAgICAgICAgIHJ1bjogY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soe1xuICAgICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgICAgcnVuOiB0aGlzLnJ1bixcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHt9XG5cbiAgcHJpdmF0ZSBjaGVjayA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5vdmVycmlkZVRhYkJlaGF2aW91ciAmJiAhdGhpcy5pbWVEZXRlY3Rvci5pc09wZW5lZCgpO1xuICB9O1xuXG4gIHByaXZhdGUgcnVuID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIucGVyZm9ybShcbiAgICAgIChyb290KSA9PiBuZXcgT3V0ZGVudExpc3Qocm9vdCksXG4gICAgICBlZGl0b3JcbiAgICApO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgQXBwLCBNb2RhbCwgUGx1Z2luXzIgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tIFwiLi4vc2VydmljZXMvU2V0dGluZ3NcIjtcblxuaW50ZXJmYWNlIEFwcEhpZGRlblByb3BzIHtcbiAgaW50ZXJuYWxQbHVnaW5zOiB7XG4gICAgY29uZmlnOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfTtcbiAgfTtcbiAgaXNNb2JpbGU6IGJvb2xlYW47XG4gIHBsdWdpbnM6IHtcbiAgICBlbmFibGVkUGx1Z2luczogU2V0PHN0cmluZz47XG4gICAgbWFuaWZlc3RzOiB7IFtrZXk6IHN0cmluZ106IHsgdmVyc2lvbjogc3RyaW5nIH0gfTtcbiAgfTtcbiAgdmF1bHQ6IHtcbiAgICBjb25maWc6IG9iamVjdDtcbiAgfTtcbn1cblxuY2xhc3MgU3lzdGVtSW5mb01vZGFsIGV4dGVuZHMgTW9kYWwge1xuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MpIHtcbiAgICBzdXBlcihhcHApO1xuICB9XG5cbiAgYXN5bmMgb25PcGVuKCkge1xuICAgIHRoaXMudGl0bGVFbC5zZXRUZXh0KFwiU3lzdGVtIEluZm9ybWF0aW9uXCIpO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBhcHAgPSB0aGlzLmFwcCBhcyBhbnkgYXMgQXBwSGlkZGVuUHJvcHM7XG5cbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgcHJvY2Vzczoge1xuICAgICAgICBhcmNoOiBwcm9jZXNzLmFyY2gsXG4gICAgICAgIHBsYXRmb3JtOiBwcm9jZXNzLnBsYXRmb3JtLFxuICAgICAgfSxcbiAgICAgIGFwcDoge1xuICAgICAgICBpbnRlcm5hbFBsdWdpbnM6IHtcbiAgICAgICAgICBjb25maWc6IGFwcC5pbnRlcm5hbFBsdWdpbnMuY29uZmlnLFxuICAgICAgICB9LFxuICAgICAgICBpc01vYmlsZTogYXBwLmlzTW9iaWxlLFxuICAgICAgICBwbHVnaW5zOiB7XG4gICAgICAgICAgZW5hYmxlZFBsdWdpbnM6IEFycmF5LmZyb20oYXBwLnBsdWdpbnMuZW5hYmxlZFBsdWdpbnMpLFxuICAgICAgICAgIG1hbmlmZXN0czogT2JqZWN0LmtleXMoYXBwLnBsdWdpbnMubWFuaWZlc3RzKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgICAgICBhY2Nba2V5XSA9IHtcbiAgICAgICAgICAgICAgdmVyc2lvbjogYXBwLnBsdWdpbnMubWFuaWZlc3RzW2tleV0udmVyc2lvbixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgIH0sIHt9IGFzIHsgW2tleTogc3RyaW5nXTogeyB2ZXJzaW9uOiBzdHJpbmcgfSB9KSxcbiAgICAgICAgfSxcbiAgICAgICAgdmF1bHQ6IHtcbiAgICAgICAgICBjb25maWc6IGFwcC52YXVsdC5jb25maWcsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgcGx1Z2luOiB7XG4gICAgICAgIHNldHRpbmdzOiB7IHZhbHVlczogdGhpcy5zZXR0aW5ncy5nZXRWYWx1ZXMoKSB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgdGV4dCA9IEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIDIpO1xuXG4gICAgY29uc3QgcHJlID0gdGhpcy5jb250ZW50RWwuY3JlYXRlRWwoXCJwcmVcIik7XG4gICAgcHJlLnNldFRleHQodGV4dCk7XG4gICAgcHJlLnNldENzc1N0eWxlcyh7XG4gICAgICBvdmVyZmxvdzogXCJzY3JvbGxcIixcbiAgICAgIG1heEhlaWdodDogXCIzMDBweFwiLFxuICAgIH0pO1xuXG4gICAgY29uc3QgYnV0dG9uID0gdGhpcy5jb250ZW50RWwuY3JlYXRlRWwoXCJidXR0b25cIik7XG4gICAgYnV0dG9uLnNldFRleHQoXCJDb3B5IGFuZCBDbG9zZVwiKTtcbiAgICBidXR0b24ub25DbGlja0V2ZW50KCgpID0+IHtcbiAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KFwiYGBganNvblxcblwiICsgdGV4dCArIFwiXFxuYGBgXCIpO1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTeXN0ZW1JbmZvIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMiwgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MpIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiBcInN5c3RlbS1pbmZvXCIsXG4gICAgICBuYW1lOiBcIlNob3cgU3lzdGVtIEluZm9cIixcbiAgICAgIGNhbGxiYWNrOiB0aGlzLmNhbGxiYWNrLFxuICAgICAgaG90a2V5czogW1xuICAgICAgICB7XG4gICAgICAgICAgbW9kaWZpZXJzOiBbXCJNb2RcIiwgXCJTaGlmdFwiLCBcIkFsdFwiXSxcbiAgICAgICAgICBrZXk6IFwiSVwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHt9XG5cbiAgcHJpdmF0ZSBjYWxsYmFjayA9ICgpID0+IHtcbiAgICBjb25zdCBtb2RhbCA9IG5ldyBTeXN0ZW1JbmZvTW9kYWwodGhpcy5wbHVnaW4uYXBwLCB0aGlzLnNldHRpbmdzKTtcbiAgICBtb2RhbC5vcGVuKCk7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBQcmVjIH0gZnJvbSBcIkBjb2RlbWlycm9yL3N0YXRlXCI7XG5pbXBvcnQgeyBrZXltYXAgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vRmVhdHVyZVwiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9lZGl0b3JcIjtcbmltcG9ydCB7IEluZGVudExpc3QgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9JbmRlbnRMaXN0XCI7XG5pbXBvcnQgeyBJTUVEZXRlY3RvciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9JTUVEZXRlY3RvclwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25QZXJmb3JtZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvT3BlcmF0aW9uUGVyZm9ybWVyXCI7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuaW1wb3J0IHsgY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2sgfSBmcm9tIFwiLi4vdXRpbHMvY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2tcIjtcblxuZXhwb3J0IGNsYXNzIFRhYkJlaGF2aW91ck92ZXJyaWRlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIGltZURldGVjdG9yOiBJTUVEZXRlY3RvcixcbiAgICBwcml2YXRlIG9ic2lkaWFuU2V0dGluZ3M6IE9ic2lkaWFuU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihcbiAgICAgIFByZWMuaGlnaGVzdChcbiAgICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IFwiVGFiXCIsXG4gICAgICAgICAgICBydW46IGNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3Mub3ZlcnJpZGVUYWJCZWhhdmlvdXIgJiYgIXRoaXMuaW1lRGV0ZWN0b3IuaXNPcGVuZWQoKTtcbiAgfTtcblxuICBwcml2YXRlIHJ1biA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyLnBlcmZvcm0oXG4gICAgICAocm9vdCkgPT5cbiAgICAgICAgbmV3IEluZGVudExpc3Qocm9vdCwgdGhpcy5vYnNpZGlhblNldHRpbmdzLmdldERlZmF1bHRJbmRlbnRDaGFycygpKSxcbiAgICAgIGVkaXRvclxuICAgICk7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBQbHVnaW5fMiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQge1xuICBFZGl0b3JWaWV3LFxuICBQbHVnaW5WYWx1ZSxcbiAgVmlld1BsdWdpbixcbiAgVmlld1VwZGF0ZSxcbn0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IsIGdldEVkaXRvckZyb21TdGF0ZSB9IGZyb20gXCIuLi9lZGl0b3JcIjtcbmltcG9ydCB7IExpc3QgfSBmcm9tIFwiLi4vcm9vdFwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvUGFyc2VyXCI7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuXG5jb25zdCBWRVJUSUNBTF9MSU5FU19CT0RZX0NMQVNTID0gXCJvdXRsaW5lci1wbHVnaW4tdmVydGljYWwtbGluZXNcIjtcblxuaW50ZXJmYWNlIExpbmVEYXRhIHtcbiAgdG9wOiBudW1iZXI7XG4gIGxlZnQ6IG51bWJlcjtcbiAgaGVpZ2h0OiBzdHJpbmc7XG4gIGxpc3Q6IExpc3Q7XG59XG5cbmNsYXNzIFZlcnRpY2FsTGluZXNQbHVnaW5WYWx1ZSBpbXBsZW1lbnRzIFBsdWdpblZhbHVlIHtcbiAgcHJpdmF0ZSBzY2hlZHVsZWQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xuICBwcml2YXRlIHNjcm9sbGVyOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBjb250ZW50Q29udGFpbmVyOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBlZGl0b3I6IE15RWRpdG9yO1xuICBwcml2YXRlIGxhc3RMaW5lOiBudW1iZXI7XG4gIHByaXZhdGUgbGluZXM6IExpbmVEYXRhW107XG4gIHByaXZhdGUgbGluZUVsZW1lbnRzOiBIVE1MRWxlbWVudFtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBvYnNpZGlhblNldHRpbmdzOiBPYnNpZGlhblNldHRpbmdzLFxuICAgIHByaXZhdGUgcGFyc2VyOiBQYXJzZXIsXG4gICAgcHJpdmF0ZSB2aWV3OiBFZGl0b3JWaWV3XG4gICkge1xuICAgIHRoaXMudmlldy5zY3JvbGxET00uYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCB0aGlzLm9uU2Nyb2xsKTtcbiAgICB0aGlzLnNldHRpbmdzLm9uQ2hhbmdlKHRoaXMuc2NoZWR1bGVSZWNhbGN1bGF0ZSk7XG5cbiAgICB0aGlzLnByZXBhcmVEb20oKTtcbiAgICB0aGlzLndhaXRGb3JFZGl0b3IoKTtcbiAgfVxuXG4gIHByaXZhdGUgd2FpdEZvckVkaXRvciA9ICgpID0+IHtcbiAgICBjb25zdCBlZGl0b3IgPSBnZXRFZGl0b3JGcm9tU3RhdGUodGhpcy52aWV3LnN0YXRlKTtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgc2V0VGltZW91dCh0aGlzLndhaXRGb3JFZGl0b3IsIDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgICB0aGlzLnNjaGVkdWxlUmVjYWxjdWxhdGUoKTtcbiAgfTtcblxuICBwcml2YXRlIHByZXBhcmVEb20oKSB7XG4gICAgdGhpcy5jb250ZW50Q29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICB0aGlzLmNvbnRlbnRDb250YWluZXIuY2xhc3NMaXN0LmFkZChcbiAgICAgIFwib3V0bGluZXItcGx1Z2luLWxpc3QtbGluZXMtY29udGVudC1jb250YWluZXJcIlxuICAgICk7XG5cbiAgICB0aGlzLnNjcm9sbGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICB0aGlzLnNjcm9sbGVyLmNsYXNzTGlzdC5hZGQoXCJvdXRsaW5lci1wbHVnaW4tbGlzdC1saW5lcy1zY3JvbGxlclwiKTtcblxuICAgIHRoaXMuc2Nyb2xsZXIuYXBwZW5kQ2hpbGQodGhpcy5jb250ZW50Q29udGFpbmVyKTtcbiAgICB0aGlzLnZpZXcuZG9tLmFwcGVuZENoaWxkKHRoaXMuc2Nyb2xsZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBvblNjcm9sbCA9IChlOiBFdmVudCkgPT4ge1xuICAgIGNvbnN0IHsgc2Nyb2xsTGVmdCwgc2Nyb2xsVG9wIH0gPSBlLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICB0aGlzLnNjcm9sbGVyLnNjcm9sbFRvKHNjcm9sbExlZnQsIHNjcm9sbFRvcCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBzY2hlZHVsZVJlY2FsY3VsYXRlID0gKCkgPT4ge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnNjaGVkdWxlZCk7XG4gICAgdGhpcy5zY2hlZHVsZWQgPSBzZXRUaW1lb3V0KHRoaXMuY2FsY3VsYXRlLCAwKTtcbiAgfTtcblxuICB1cGRhdGUodXBkYXRlOiBWaWV3VXBkYXRlKSB7XG4gICAgaWYgKFxuICAgICAgdXBkYXRlLmRvY0NoYW5nZWQgfHxcbiAgICAgIHVwZGF0ZS52aWV3cG9ydENoYW5nZWQgfHxcbiAgICAgIHVwZGF0ZS5nZW9tZXRyeUNoYW5nZWQgfHxcbiAgICAgIHVwZGF0ZS50cmFuc2FjdGlvbnMuc29tZSgodHIpID0+IHRyLnJlY29uZmlndXJlZClcbiAgICApIHtcbiAgICAgIHRoaXMuc2NoZWR1bGVSZWNhbGN1bGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlID0gKCkgPT4ge1xuICAgIHRoaXMubGluZXMgPSBbXTtcblxuICAgIGlmIChcbiAgICAgIHRoaXMuc2V0dGluZ3MudmVydGljYWxMaW5lcyAmJlxuICAgICAgdGhpcy5vYnNpZGlhblNldHRpbmdzLmlzRGVmYXVsdFRoZW1lRW5hYmxlZCgpICYmXG4gICAgICB0aGlzLnZpZXcudmlld3BvcnRMaW5lQmxvY2tzLmxlbmd0aCA+IDAgJiZcbiAgICAgIHRoaXMudmlldy52aXNpYmxlUmFuZ2VzLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIGNvbnN0IGZyb21MaW5lID0gdGhpcy5lZGl0b3Iub2Zmc2V0VG9Qb3ModGhpcy52aWV3LnZpZXdwb3J0LmZyb20pLmxpbmU7XG4gICAgICBjb25zdCB0b0xpbmUgPSB0aGlzLmVkaXRvci5vZmZzZXRUb1Bvcyh0aGlzLnZpZXcudmlld3BvcnQudG8pLmxpbmU7XG4gICAgICBjb25zdCBsaXN0cyA9IHRoaXMucGFyc2VyLnBhcnNlUmFuZ2UodGhpcy5lZGl0b3IsIGZyb21MaW5lLCB0b0xpbmUpO1xuXG4gICAgICBmb3IgKGNvbnN0IGxpc3Qgb2YgbGlzdHMpIHtcbiAgICAgICAgdGhpcy5sYXN0TGluZSA9IGxpc3QuZ2V0Q29udGVudEVuZCgpLmxpbmU7XG5cbiAgICAgICAgZm9yIChjb25zdCBjIG9mIGxpc3QuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICAgIHRoaXMucmVjdXJzaXZlKGMpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGluZXMuc29ydCgoYSwgYikgPT5cbiAgICAgICAgYS50b3AgPT09IGIudG9wID8gYS5sZWZ0IC0gYi5sZWZ0IDogYS50b3AgLSBiLnRvcFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZURvbSgpO1xuICB9O1xuXG4gIHByaXZhdGUgZ2V0TmV4dFNpYmxpbmcobGlzdDogTGlzdCk6IExpc3QgfCBudWxsIHtcbiAgICBsZXQgbGlzdFRtcCA9IGxpc3Q7XG4gICAgbGV0IHAgPSBsaXN0VG1wLmdldFBhcmVudCgpO1xuICAgIHdoaWxlIChwKSB7XG4gICAgICBjb25zdCBuZXh0U2libGluZyA9IHAuZ2V0TmV4dFNpYmxpbmdPZihsaXN0VG1wKTtcbiAgICAgIGlmIChuZXh0U2libGluZykge1xuICAgICAgICByZXR1cm4gbmV4dFNpYmxpbmc7XG4gICAgICB9XG4gICAgICBsaXN0VG1wID0gcDtcbiAgICAgIHAgPSBsaXN0VG1wLmdldFBhcmVudCgpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgcmVjdXJzaXZlKGxpc3Q6IExpc3QsIHBhcmVudEN0eDogeyByb290TGVmdD86IG51bWJlciB9ID0ge30pIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IGxpc3QuZ2V0Q2hpbGRyZW4oKTtcblxuICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmcm9tT2Zmc2V0ID0gdGhpcy5lZGl0b3IucG9zVG9PZmZzZXQoe1xuICAgICAgbGluZTogbGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lLFxuICAgICAgY2g6IGxpc3QuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoLFxuICAgIH0pO1xuICAgIGNvbnN0IG5leHRTaWJsaW5nID0gdGhpcy5nZXROZXh0U2libGluZyhsaXN0KTtcbiAgICBjb25zdCB0aWxsT2Zmc2V0ID0gdGhpcy5lZGl0b3IucG9zVG9PZmZzZXQoe1xuICAgICAgbGluZTogbmV4dFNpYmxpbmdcbiAgICAgICAgPyBuZXh0U2libGluZy5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lIC0gMVxuICAgICAgICA6IHRoaXMubGFzdExpbmUsXG4gICAgICBjaDogMCxcbiAgICB9KTtcblxuICAgIGxldCB2aXNpYmxlRnJvbSA9IHRoaXMudmlldy52aXNpYmxlUmFuZ2VzWzBdLmZyb207XG4gICAgbGV0IHZpc2libGVUbyA9XG4gICAgICB0aGlzLnZpZXcudmlzaWJsZVJhbmdlc1t0aGlzLnZpZXcudmlzaWJsZVJhbmdlcy5sZW5ndGggLSAxXS50bztcbiAgICBjb25zdCB6b29tUmFuZ2UgPSB0aGlzLmVkaXRvci5nZXRab29tUmFuZ2UoKTtcbiAgICBpZiAoem9vbVJhbmdlKSB7XG4gICAgICB2aXNpYmxlRnJvbSA9IE1hdGgubWF4KFxuICAgICAgICB2aXNpYmxlRnJvbSxcbiAgICAgICAgdGhpcy5lZGl0b3IucG9zVG9PZmZzZXQoem9vbVJhbmdlLmZyb20pXG4gICAgICApO1xuICAgICAgdmlzaWJsZVRvID0gTWF0aC5taW4odmlzaWJsZVRvLCB0aGlzLmVkaXRvci5wb3NUb09mZnNldCh6b29tUmFuZ2UudG8pKTtcbiAgICB9XG5cbiAgICBpZiAoZnJvbU9mZnNldCA+IHZpc2libGVUbyB8fCB0aWxsT2Zmc2V0IDwgdmlzaWJsZUZyb20pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb29yZHMgPSB0aGlzLnZpZXcuY29vcmRzQXRQb3MoZnJvbU9mZnNldCwgMSk7XG4gICAgaWYgKHBhcmVudEN0eC5yb290TGVmdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJlbnRDdHgucm9vdExlZnQgPSBjb29yZHMubGVmdDtcbiAgICB9XG4gICAgY29uc3QgbGVmdCA9IE1hdGguZmxvb3IoY29vcmRzLnJpZ2h0IC0gcGFyZW50Q3R4LnJvb3RMZWZ0KTtcblxuICAgIGNvbnN0IHRvcCA9XG4gICAgICB2aXNpYmxlRnJvbSA+IDAgJiYgZnJvbU9mZnNldCA8IHZpc2libGVGcm9tXG4gICAgICAgID8gLTIwXG4gICAgICAgIDogdGhpcy52aWV3LmxpbmVCbG9ja0F0KGZyb21PZmZzZXQpLnRvcDtcbiAgICBjb25zdCBib3R0b20gPVxuICAgICAgdGlsbE9mZnNldCA+IHZpc2libGVUb1xuICAgICAgICA/IHRoaXMudmlldy5saW5lQmxvY2tBdCh2aXNpYmxlVG8gLSAxKS5ib3R0b21cbiAgICAgICAgOiB0aGlzLnZpZXcubGluZUJsb2NrQXQodGlsbE9mZnNldCkuYm90dG9tO1xuICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcblxuICAgIGlmIChoZWlnaHQgPiAwICYmICFsaXN0LmlzRm9sZGVkKCkpIHtcbiAgICAgIGNvbnN0IG5leHRTaWJsaW5nID0gbGlzdC5nZXRQYXJlbnQoKS5nZXROZXh0U2libGluZ09mKGxpc3QpO1xuICAgICAgY29uc3QgaGFzTmV4dFNpYmxpbmcgPVxuICAgICAgICAhIW5leHRTaWJsaW5nICYmXG4gICAgICAgIHRoaXMuZWRpdG9yLnBvc1RvT2Zmc2V0KG5leHRTaWJsaW5nLmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpKSA8PVxuICAgICAgICAgIHZpc2libGVUbztcblxuICAgICAgdGhpcy5saW5lcy5wdXNoKHtcbiAgICAgICAgdG9wLFxuICAgICAgICBsZWZ0LFxuICAgICAgICBoZWlnaHQ6IGBjYWxjKCR7aGVpZ2h0fXB4ICR7aGFzTmV4dFNpYmxpbmcgPyBcIi0gMS41ZW1cIiA6IFwiLSAyZW1cIn0pYCxcbiAgICAgICAgbGlzdCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgIGlmICghY2hpbGQuaXNFbXB0eSgpKSB7XG4gICAgICAgIHRoaXMucmVjdXJzaXZlKGNoaWxkLCBwYXJlbnRDdHgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25DbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgY29uc3QgbGluZSA9IHRoaXMubGluZXNbTnVtYmVyKChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuZGF0YXNldC5pbmRleCldO1xuXG4gICAgc3dpdGNoICh0aGlzLnNldHRpbmdzLnZlcnRpY2FsTGluZXNBY3Rpb24pIHtcbiAgICAgIGNhc2UgXCJ6b29tLWluXCI6XG4gICAgICAgIHRoaXMuem9vbUluKGxpbmUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcInRvZ2dsZS1mb2xkaW5nXCI6XG4gICAgICAgIHRoaXMudG9nZ2xlRm9sZGluZyhsaW5lKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgem9vbUluKGxpbmU6IExpbmVEYXRhKSB7XG4gICAgY29uc3QgZWRpdG9yID0gZ2V0RWRpdG9yRnJvbVN0YXRlKHRoaXMudmlldy5zdGF0ZSk7XG5cbiAgICBlZGl0b3Iuem9vbUluKGxpbmUubGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlRm9sZGluZyhsaW5lOiBMaW5lRGF0YSkge1xuICAgIGNvbnN0IHsgbGlzdCB9ID0gbGluZTtcblxuICAgIGlmIChsaXN0LmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBuZWVkVG9VbmZvbGQgPSB0cnVlO1xuICAgIGNvbnN0IGxpbmVzVG9Ub2dnbGU6IG51bWJlcltdID0gW107XG4gICAgZm9yIChjb25zdCBjIG9mIGxpc3QuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgaWYgKGMuaXNFbXB0eSgpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFjLmlzRm9sZGVkKCkpIHtcbiAgICAgICAgbmVlZFRvVW5mb2xkID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBsaW5lc1RvVG9nZ2xlLnB1c2goYy5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lKTtcbiAgICB9XG5cbiAgICBjb25zdCBlZGl0b3IgPSBnZXRFZGl0b3JGcm9tU3RhdGUodGhpcy52aWV3LnN0YXRlKTtcblxuICAgIGZvciAoY29uc3QgbCBvZiBsaW5lc1RvVG9nZ2xlKSB7XG4gICAgICBpZiAobmVlZFRvVW5mb2xkKSB7XG4gICAgICAgIGVkaXRvci51bmZvbGQobCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlZGl0b3IuZm9sZChsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURvbSgpIHtcbiAgICBjb25zdCBjbVNjcm9sbCA9IHRoaXMudmlldy5zY3JvbGxET007XG4gICAgY29uc3QgY21Db250ZW50ID0gdGhpcy52aWV3LmNvbnRlbnRET007XG4gICAgY29uc3QgY21Db250ZW50Q29udGFpbmVyID0gY21Db250ZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgY29uc3QgY21TaXplciA9IGNtQ29udGVudENvbnRhaW5lci5wYXJlbnRFbGVtZW50O1xuXG4gICAgLyoqXG4gICAgICogT2JzaWRpYW4gY2FuIGFkZCBhZGRpdGlvbmFsIGVsZW1lbnRzIGludG8gQ29udGVudCBNYW5hZ2VyLlxuICAgICAqIFRoZSBtb3N0IG9idmlvdXMgY2FzZSBpcyB0aGUgJ2VtYmVkZGVkLWJhY2tsaW5rcycgY29yZSBwbHVnaW4gdGhhdCBhZGRzIGEgbWVudSBpbnNpZGUgYSBDb250ZW50IE1hbmFnZXIuXG4gICAgICogV2UgbXVzdCB0YWtlIGhlaWdodHMgb2YgYWxsIG9mIHRoZXNlIGVsZW1lbnRzIGludG8gYWNjb3VudFxuICAgICAqIHRvIGJlIGFibGUgdG8gY2FsY3VsYXRlIHRoZSBjb3JyZWN0IHNpemUgb2YgbGluZXMnIGNvbnRhaW5lci5cbiAgICAgKi9cbiAgICBsZXQgY21TaXplckNoaWxkcmVuU3VtSGVpZ2h0ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNtU2l6ZXIuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNtU2l6ZXJDaGlsZHJlblN1bUhlaWdodCArPSBjbVNpemVyLmNoaWxkcmVuW2ldLmNsaWVudEhlaWdodDtcbiAgICB9XG5cbiAgICB0aGlzLnNjcm9sbGVyLnN0eWxlLnRvcCA9IGNtU2Nyb2xsLm9mZnNldFRvcCArIFwicHhcIjtcbiAgICB0aGlzLmNvbnRlbnRDb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gY21TaXplckNoaWxkcmVuU3VtSGVpZ2h0ICsgXCJweFwiO1xuICAgIHRoaXMuY29udGVudENvbnRhaW5lci5zdHlsZS5tYXJnaW5MZWZ0ID1cbiAgICAgIGNtQ29udGVudENvbnRhaW5lci5vZmZzZXRMZWZ0ICsgXCJweFwiO1xuICAgIHRoaXMuY29udGVudENvbnRhaW5lci5zdHlsZS5tYXJnaW5Ub3AgPVxuICAgICAgKGNtQ29udGVudC5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudCkub2Zmc2V0VG9wIC0gMjQgKyBcInB4XCI7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmxpbmVFbGVtZW50cy5sZW5ndGggPT09IGkpIHtcbiAgICAgICAgY29uc3QgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgIGUuY2xhc3NMaXN0LmFkZChcIm91dGxpbmVyLXBsdWdpbi1saXN0LWxpbmVcIik7XG4gICAgICAgIGUuZGF0YXNldC5pbmRleCA9IFN0cmluZyhpKTtcbiAgICAgICAgZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIHRoaXMub25DbGljayk7XG4gICAgICAgIHRoaXMuY29udGVudENvbnRhaW5lci5hcHBlbmRDaGlsZChlKTtcbiAgICAgICAgdGhpcy5saW5lRWxlbWVudHMucHVzaChlKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbCA9IHRoaXMubGluZXNbaV07XG4gICAgICBjb25zdCBlID0gdGhpcy5saW5lRWxlbWVudHNbaV07XG4gICAgICBlLnN0eWxlLnRvcCA9IGwudG9wICsgXCJweFwiO1xuICAgICAgZS5zdHlsZS5sZWZ0ID0gbC5sZWZ0ICsgXCJweFwiO1xuICAgICAgZS5zdHlsZS5oZWlnaHQgPSBsLmhlaWdodDtcbiAgICAgIGUuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gdGhpcy5saW5lcy5sZW5ndGg7IGkgPCB0aGlzLmxpbmVFbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZSA9IHRoaXMubGluZUVsZW1lbnRzW2ldO1xuICAgICAgZS5zdHlsZS50b3AgPSBcIjBweFwiO1xuICAgICAgZS5zdHlsZS5sZWZ0ID0gXCIwcHhcIjtcbiAgICAgIGUuc3R5bGUuaGVpZ2h0ID0gXCIwcHhcIjtcbiAgICAgIGUuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgIH1cbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5zZXR0aW5ncy5yZW1vdmVDYWxsYmFjayh0aGlzLnNjaGVkdWxlUmVjYWxjdWxhdGUpO1xuICAgIHRoaXMudmlldy5zY3JvbGxET00ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCB0aGlzLm9uU2Nyb2xsKTtcbiAgICB0aGlzLnZpZXcuZG9tLnJlbW92ZUNoaWxkKHRoaXMuc2Nyb2xsZXIpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnNjaGVkdWxlZCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFZlcnRpY2FsTGluZXMgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgcHJpdmF0ZSB1cGRhdGVCb2R5Q2xhc3NJbnRlcnZhbDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW5fMixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncyxcbiAgICBwcml2YXRlIG9ic2lkaWFuU2V0dGluZ3M6IE9ic2lkaWFuU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBwYXJzZXI6IFBhcnNlclxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnVwZGF0ZUJvZHlDbGFzcygpO1xuICAgIHRoaXMudXBkYXRlQm9keUNsYXNzSW50ZXJ2YWwgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVCb2R5Q2xhc3MoKTtcbiAgICB9LCAxMDAwKTtcblxuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFxuICAgICAgVmlld1BsdWdpbi5kZWZpbmUoXG4gICAgICAgICh2aWV3KSA9PlxuICAgICAgICAgIG5ldyBWZXJ0aWNhbExpbmVzUGx1Z2luVmFsdWUoXG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICAgICAgdGhpcy5vYnNpZGlhblNldHRpbmdzLFxuICAgICAgICAgICAgdGhpcy5wYXJzZXIsXG4gICAgICAgICAgICB2aWV3XG4gICAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLnVwZGF0ZUJvZHlDbGFzc0ludGVydmFsKTtcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoVkVSVElDQUxfTElORVNfQk9EWV9DTEFTUyk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUJvZHlDbGFzcyA9ICgpID0+IHtcbiAgICBjb25zdCBzaG91bGRFeGlzdHMgPVxuICAgICAgdGhpcy5vYnNpZGlhblNldHRpbmdzLmlzRGVmYXVsdFRoZW1lRW5hYmxlZCgpICYmXG4gICAgICB0aGlzLnNldHRpbmdzLnZlcnRpY2FsTGluZXM7XG4gICAgY29uc3QgZXhpc3RzID0gZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoVkVSVElDQUxfTElORVNfQk9EWV9DTEFTUyk7XG5cbiAgICBpZiAoc2hvdWxkRXhpc3RzICYmICFleGlzdHMpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChWRVJUSUNBTF9MSU5FU19CT0RZX0NMQVNTKTtcbiAgICB9XG5cbiAgICBpZiAoIXNob3VsZEV4aXN0cyAmJiBleGlzdHMpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShWRVJUSUNBTF9MSU5FU19CT0RZX0NMQVNTKTtcbiAgICB9XG4gIH07XG59XG4iLCJpbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9lZGl0b3JcIjtcbmltcG9ydCB7IExpc3QsIFBvc2l0aW9uLCBSb290LCBpc1Jhbmdlc0ludGVyc2VjdHMgfSBmcm9tIFwiLi4vcm9vdFwiO1xuXG5leHBvcnQgY2xhc3MgQ2hhbmdlc0FwcGxpY2F0b3Ige1xuICBhcHBseShlZGl0b3I6IE15RWRpdG9yLCBwcmV2Um9vdDogUm9vdCwgbmV3Um9vdDogUm9vdCkge1xuICAgIGNvbnN0IGNoYW5nZXMgPSB0aGlzLmNhbGN1bGF0ZUNoYW5nZXMoZWRpdG9yLCBwcmV2Um9vdCwgbmV3Um9vdCk7XG4gICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgIGNvbnN0IHsgcmVwbGFjZW1lbnQsIGNoYW5nZUZyb20sIGNoYW5nZVRvIH0gPSBjaGFuZ2VzO1xuXG4gICAgICBjb25zdCB7IHVuZm9sZCwgZm9sZCB9ID0gdGhpcy5jYWxjdWxhdGVGb2xkaW5nT3ByYXRpb25zKFxuICAgICAgICBwcmV2Um9vdCxcbiAgICAgICAgbmV3Um9vdCxcbiAgICAgICAgY2hhbmdlRnJvbSxcbiAgICAgICAgY2hhbmdlVG9cbiAgICAgICk7XG5cbiAgICAgIGZvciAoY29uc3QgbGluZSBvZiB1bmZvbGQpIHtcbiAgICAgICAgZWRpdG9yLnVuZm9sZChsaW5lKTtcbiAgICAgIH1cblxuICAgICAgZWRpdG9yLnJlcGxhY2VSYW5nZShyZXBsYWNlbWVudCwgY2hhbmdlRnJvbSwgY2hhbmdlVG8pO1xuXG4gICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgZm9sZCkge1xuICAgICAgICBlZGl0b3IuZm9sZChsaW5lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBlZGl0b3Iuc2V0U2VsZWN0aW9ucyhuZXdSb290LmdldFNlbGVjdGlvbnMoKSk7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZUNoYW5nZXMoZWRpdG9yOiBNeUVkaXRvciwgcHJldlJvb3Q6IFJvb3QsIG5ld1Jvb3Q6IFJvb3QpIHtcbiAgICBjb25zdCByb290UmFuZ2UgPSBwcmV2Um9vdC5nZXRDb250ZW50UmFuZ2UoKTtcbiAgICBjb25zdCBvbGRTdHJpbmcgPSBlZGl0b3IuZ2V0UmFuZ2Uocm9vdFJhbmdlWzBdLCByb290UmFuZ2VbMV0pO1xuICAgIGNvbnN0IG5ld1N0cmluZyA9IG5ld1Jvb3QucHJpbnQoKTtcblxuICAgIGNvbnN0IGNoYW5nZUZyb20gPSB7IC4uLnJvb3RSYW5nZVswXSB9O1xuICAgIGNvbnN0IGNoYW5nZVRvID0geyAuLi5yb290UmFuZ2VbMV0gfTtcbiAgICBsZXQgb2xkVG1wID0gb2xkU3RyaW5nO1xuICAgIGxldCBuZXdUbXAgPSBuZXdTdHJpbmc7XG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgY29uc3QgbmxJbmRleCA9IG9sZFRtcC5sYXN0SW5kZXhPZihcIlxcblwiKTtcblxuICAgICAgaWYgKG5sSW5kZXggPCAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvbGRMaW5lID0gb2xkVG1wLnNsaWNlKG5sSW5kZXgpO1xuICAgICAgY29uc3QgbmV3TGluZSA9IG5ld1RtcC5zbGljZSgtb2xkTGluZS5sZW5ndGgpO1xuXG4gICAgICBpZiAob2xkTGluZSAhPT0gbmV3TGluZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgb2xkVG1wID0gb2xkVG1wLnNsaWNlKDAsIC1vbGRMaW5lLmxlbmd0aCk7XG4gICAgICBuZXdUbXAgPSBuZXdUbXAuc2xpY2UoMCwgLW9sZExpbmUubGVuZ3RoKTtcbiAgICAgIGNvbnN0IG5sSW5kZXgyID0gb2xkVG1wLmxhc3RJbmRleE9mKFwiXFxuXCIpO1xuICAgICAgY2hhbmdlVG8uY2ggPVxuICAgICAgICBubEluZGV4MiA+PSAwID8gb2xkVG1wLmxlbmd0aCAtIG5sSW5kZXgyIC0gMSA6IG9sZFRtcC5sZW5ndGg7XG4gICAgICBjaGFuZ2VUby5saW5lLS07XG4gICAgfVxuXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGNvbnN0IG5sSW5kZXggPSBvbGRUbXAuaW5kZXhPZihcIlxcblwiKTtcblxuICAgICAgaWYgKG5sSW5kZXggPCAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvbGRMaW5lID0gb2xkVG1wLnNsaWNlKDAsIG5sSW5kZXggKyAxKTtcbiAgICAgIGNvbnN0IG5ld0xpbmUgPSBuZXdUbXAuc2xpY2UoMCwgb2xkTGluZS5sZW5ndGgpO1xuXG4gICAgICBpZiAob2xkTGluZSAhPT0gbmV3TGluZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2hhbmdlRnJvbS5saW5lKys7XG4gICAgICBvbGRUbXAgPSBvbGRUbXAuc2xpY2Uob2xkTGluZS5sZW5ndGgpO1xuICAgICAgbmV3VG1wID0gbmV3VG1wLnNsaWNlKG9sZExpbmUubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBpZiAob2xkVG1wID09PSBuZXdUbXApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByZXBsYWNlbWVudDogbmV3VG1wLFxuICAgICAgY2hhbmdlRnJvbSxcbiAgICAgIGNoYW5nZVRvLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZUZvbGRpbmdPcHJhdGlvbnMoXG4gICAgcHJldlJvb3Q6IFJvb3QsXG4gICAgbmV3Um9vdDogUm9vdCxcbiAgICBjaGFuZ2VGcm9tOiBQb3NpdGlvbixcbiAgICBjaGFuZ2VUbzogUG9zaXRpb25cbiAgKSB7XG4gICAgY29uc3QgY2hhbmdlZFJhbmdlOiBbUG9zaXRpb24sIFBvc2l0aW9uXSA9IFtjaGFuZ2VGcm9tLCBjaGFuZ2VUb107XG5cbiAgICBjb25zdCBwcmV2TGlzdHMgPSBnZXRBbGxDaGlsZHJlbihwcmV2Um9vdCk7XG4gICAgY29uc3QgbmV3TGlzdHMgPSBnZXRBbGxDaGlsZHJlbihuZXdSb290KTtcblxuICAgIGNvbnN0IHVuZm9sZDogbnVtYmVyW10gPSBbXTtcbiAgICBjb25zdCBmb2xkOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBwcmV2TGlzdCBvZiBwcmV2TGlzdHMudmFsdWVzKCkpIHtcbiAgICAgIGlmICghcHJldkxpc3QuaXNGb2xkUm9vdCgpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdMaXN0ID0gbmV3TGlzdHMuZ2V0KHByZXZMaXN0LmdldElEKCkpO1xuXG4gICAgICBpZiAoIW5ld0xpc3QpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByZXZMaXN0UmFuZ2U6IFtQb3NpdGlvbiwgUG9zaXRpb25dID0gW1xuICAgICAgICBwcmV2TGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKSxcbiAgICAgICAgcHJldkxpc3QuZ2V0Q29udGVudEVuZEluY2x1ZGluZ0NoaWxkcmVuKCksXG4gICAgICBdO1xuXG4gICAgICBpZiAoaXNSYW5nZXNJbnRlcnNlY3RzKHByZXZMaXN0UmFuZ2UsIGNoYW5nZWRSYW5nZSkpIHtcbiAgICAgICAgdW5mb2xkLnB1c2gocHJldkxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkubGluZSk7XG4gICAgICAgIGZvbGQucHVzaChuZXdMaXN0LmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpLmxpbmUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHVuZm9sZC5zb3J0KChhLCBiKSA9PiBiIC0gYSk7XG4gICAgZm9sZC5zb3J0KChhLCBiKSA9PiBiIC0gYSk7XG5cbiAgICByZXR1cm4geyB1bmZvbGQsIGZvbGQgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRBbGxDaGlsZHJlblJlZHVjZUZuKGFjYzogTWFwPG51bWJlciwgTGlzdD4sIGNoaWxkOiBMaXN0KSB7XG4gIGFjYy5zZXQoY2hpbGQuZ2V0SUQoKSwgY2hpbGQpO1xuICBjaGlsZC5nZXRDaGlsZHJlbigpLnJlZHVjZShnZXRBbGxDaGlsZHJlblJlZHVjZUZuLCBhY2MpO1xuXG4gIHJldHVybiBhY2M7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENoaWxkcmVuKHJvb3Q6IFJvb3QpOiBNYXA8bnVtYmVyLCBMaXN0PiB7XG4gIHJldHVybiByb290LmdldENoaWxkcmVuKCkucmVkdWNlKGdldEFsbENoaWxkcmVuUmVkdWNlRm4sIG5ldyBNYXAoKSk7XG59XG4iLCJpbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5leHBvcnQgY2xhc3MgSU1FRGV0ZWN0b3Ige1xuICBwcml2YXRlIGNvbXBvc2l0aW9uID0gZmFsc2U7XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY29tcG9zaXRpb25zdGFydFwiLCB0aGlzLm9uQ29tcG9zaXRpb25TdGFydCk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNvbXBvc2l0aW9uZW5kXCIsIHRoaXMub25Db21wb3NpdGlvbkVuZCk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNvbXBvc2l0aW9uZW5kXCIsIHRoaXMub25Db21wb3NpdGlvbkVuZCk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNvbXBvc2l0aW9uc3RhcnRcIiwgdGhpcy5vbkNvbXBvc2l0aW9uU3RhcnQpO1xuICB9XG5cbiAgaXNPcGVuZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9zaXRpb24gJiYgUGxhdGZvcm0uaXNEZXNrdG9wO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkNvbXBvc2l0aW9uU3RhcnQgPSAoKSA9PiB7XG4gICAgdGhpcy5jb21wb3NpdGlvbiA9IHRydWU7XG4gIH07XG5cbiAgcHJpdmF0ZSBvbkNvbXBvc2l0aW9uRW5kID0gKCkgPT4ge1xuICAgIHRoaXMuY29tcG9zaXRpb24gPSBmYWxzZTtcbiAgfTtcbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4vU2V0dGluZ3NcIjtcblxuZXhwb3J0IGNsYXNzIExvZ2dlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzKSB7fVxuXG4gIGxvZyhtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAoIXRoaXMuc2V0dGluZ3MuZGVidWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zb2xlLmluZm8obWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxuXG4gIGJpbmQobWV0aG9kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiB0aGlzLmxvZyhtZXRob2QsIC4uLmFyZ3MpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBBcHAgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuZXhwb3J0IGludGVyZmFjZSBPYnNpZGlhblRhYnNTZXR0aW5ncyB7XG4gIHVzZVRhYjogYm9vbGVhbjtcbiAgdGFiU2l6ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuRm9sZFNldHRpbmdzIHtcbiAgZm9sZEluZGVudDogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gZ2V0SGlkZGVuT2JzaWRpYW5Db25maWcoYXBwOiBBcHApIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcmV0dXJuIChhcHAudmF1bHQgYXMgYW55KS5jb25maWc7XG59XG5cbmV4cG9ydCBjbGFzcyBPYnNpZGlhblNldHRpbmdzIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcHA6IEFwcCkge31cblxuICBpc0xlZ2FjeUVkaXRvckVuYWJsZWQoKSB7XG4gICAgY29uc3QgY29uZmlnOiB7IGxlZ2FjeUVkaXRvcjogYm9vbGVhbiB9ID0ge1xuICAgICAgbGVnYWN5RWRpdG9yOiBmYWxzZSxcbiAgICAgIC4uLmdldEhpZGRlbk9ic2lkaWFuQ29uZmlnKHRoaXMuYXBwKSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNvbmZpZy5sZWdhY3lFZGl0b3I7XG4gIH1cblxuICBpc0RlZmF1bHRUaGVtZUVuYWJsZWQoKSB7XG4gICAgY29uc3QgY29uZmlnOiB7IGNzc1RoZW1lOiBzdHJpbmcgfSA9IHtcbiAgICAgIGNzc1RoZW1lOiBcIlwiLFxuICAgICAgLi4uZ2V0SGlkZGVuT2JzaWRpYW5Db25maWcodGhpcy5hcHApLFxuICAgIH07XG5cbiAgICByZXR1cm4gY29uZmlnLmNzc1RoZW1lID09PSBcIlwiO1xuICB9XG5cbiAgZ2V0VGFic1NldHRpbmdzKCk6IE9ic2lkaWFuVGFic1NldHRpbmdzIHtcbiAgICByZXR1cm4ge1xuICAgICAgdXNlVGFiOiB0cnVlLFxuICAgICAgdGFiU2l6ZTogNCxcbiAgICAgIC4uLmdldEhpZGRlbk9ic2lkaWFuQ29uZmlnKHRoaXMuYXBwKSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0Rm9sZFNldHRpbmdzKCk6IE9ic2lkaWFuRm9sZFNldHRpbmdzIHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9sZEluZGVudDogdHJ1ZSxcbiAgICAgIC4uLmdldEhpZGRlbk9ic2lkaWFuQ29uZmlnKHRoaXMuYXBwKSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0RGVmYXVsdEluZGVudENoYXJzKCkge1xuICAgIGNvbnN0IHsgdXNlVGFiLCB0YWJTaXplIH0gPSB0aGlzLmdldFRhYnNTZXR0aW5ncygpO1xuXG4gICAgcmV0dXJuIHVzZVRhYiA/IFwiXFx0XCIgOiBuZXcgQXJyYXkodGFiU2l6ZSkuZmlsbChcIiBcIikuam9pbihcIlwiKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgQ2hhbmdlc0FwcGxpY2F0b3IgfSBmcm9tIFwiLi9DaGFuZ2VzQXBwbGljYXRvclwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4vUGFyc2VyXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvT3BlcmF0aW9uXCI7XG5pbXBvcnQgeyBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIE9wZXJhdGlvblBlcmZvcm1lciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGFyc2VyOiBQYXJzZXIsXG4gICAgcHJpdmF0ZSBjaGFuZ2VzQXBwbGljYXRvcjogQ2hhbmdlc0FwcGxpY2F0b3JcbiAgKSB7fVxuXG4gIGV2YWwocm9vdDogUm9vdCwgb3A6IE9wZXJhdGlvbiwgZWRpdG9yOiBNeUVkaXRvcikge1xuICAgIGNvbnN0IHByZXZSb290ID0gcm9vdC5jbG9uZSgpO1xuXG4gICAgb3AucGVyZm9ybSgpO1xuXG4gICAgaWYgKG9wLnNob3VsZFVwZGF0ZSgpKSB7XG4gICAgICB0aGlzLmNoYW5nZXNBcHBsaWNhdG9yLmFwcGx5KGVkaXRvciwgcHJldlJvb3QsIHJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzaG91bGRVcGRhdGU6IG9wLnNob3VsZFVwZGF0ZSgpLFxuICAgICAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uOiBvcC5zaG91bGRTdG9wUHJvcGFnYXRpb24oKSxcbiAgICB9O1xuICB9XG5cbiAgcGVyZm9ybShcbiAgICBjYjogKHJvb3Q6IFJvb3QpID0+IE9wZXJhdGlvbixcbiAgICBlZGl0b3I6IE15RWRpdG9yLFxuICAgIGN1cnNvciA9IGVkaXRvci5nZXRDdXJzb3IoKVxuICApIHtcbiAgICBjb25zdCByb290ID0gdGhpcy5wYXJzZXIucGFyc2UoZWRpdG9yLCBjdXJzb3IpO1xuXG4gICAgaWYgKCFyb290KSB7XG4gICAgICByZXR1cm4geyBzaG91bGRVcGRhdGU6IGZhbHNlLCBzaG91bGRTdG9wUHJvcGFnYXRpb246IGZhbHNlIH07XG4gICAgfVxuXG4gICAgY29uc3Qgb3AgPSBjYihyb290KTtcblxuICAgIHJldHVybiB0aGlzLmV2YWwocm9vdCwgb3AsIGVkaXRvcik7XG4gIH1cbn1cbiIsImltcG9ydCB7IExvZ2dlciB9IGZyb20gXCIuL0xvZ2dlclwiO1xuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tIFwiLi9TZXR0aW5nc1wiO1xuXG5pbXBvcnQgeyBMaXN0LCBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcbmltcG9ydCB7IGNoZWNrYm94UmUgfSBmcm9tIFwiLi4vdXRpbHMvY2hlY2tib3hSZVwiO1xuXG5jb25zdCBidWxsZXRTaWduUmUgPSBgKD86Wy0qK118XFxcXGQrXFxcXC4pYDtcbmNvbnN0IG9wdGlvbmFsQ2hlY2tib3hSZSA9IGAoPzoke2NoZWNrYm94UmV9KT9gO1xuXG5jb25zdCBsaXN0SXRlbVdpdGhvdXRTcGFjZXNSZSA9IG5ldyBSZWdFeHAoYF4ke2J1bGxldFNpZ25SZX0oIHxcXHQpYCk7XG5jb25zdCBsaXN0SXRlbVJlID0gbmV3IFJlZ0V4cChgXlsgXFx0XSoke2J1bGxldFNpZ25SZX0oIHxcXHQpYCk7XG5jb25zdCBzdHJpbmdXaXRoU3BhY2VzUmUgPSBuZXcgUmVnRXhwKGBeWyBcXHRdK2ApO1xuY29uc3QgcGFyc2VMaXN0SXRlbVJlID0gbmV3IFJlZ0V4cChcbiAgYF4oWyBcXHRdKikoJHtidWxsZXRTaWduUmV9KSggfFxcdCkoJHtvcHRpb25hbENoZWNrYm94UmV9KSguKikkYFxuKTtcblxuZXhwb3J0IGludGVyZmFjZSBSZWFkZXJQb3NpdGlvbiB7XG4gIGxpbmU6IG51bWJlcjtcbiAgY2g6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWFkZXJTZWxlY3Rpb24ge1xuICBhbmNob3I6IFJlYWRlclBvc2l0aW9uO1xuICBoZWFkOiBSZWFkZXJQb3NpdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWFkZXIge1xuICBnZXRDdXJzb3IoKTogUmVhZGVyUG9zaXRpb247XG4gIGdldExpbmUobjogbnVtYmVyKTogc3RyaW5nO1xuICBsYXN0TGluZSgpOiBudW1iZXI7XG4gIGxpc3RTZWxlY3Rpb25zKCk6IFJlYWRlclNlbGVjdGlvbltdO1xuICBnZXRBbGxGb2xkZWRMaW5lcygpOiBudW1iZXJbXTtcbn1cblxuaW50ZXJmYWNlIFBhcnNlTGlzdExpc3Qge1xuICBnZXRGaXJzdExpbmVJbmRlbnQoKTogc3RyaW5nO1xuICBzZXROb3Rlc0luZGVudChub3Rlc0luZGVudDogc3RyaW5nKTogdm9pZDtcbiAgZ2V0Tm90ZXNJbmRlbnQoKTogc3RyaW5nIHwgbnVsbDtcbiAgYWRkTGluZSh0ZXh0OiBzdHJpbmcpOiB2b2lkO1xuICBnZXRQYXJlbnQoKTogUGFyc2VMaXN0TGlzdCB8IG51bGw7XG4gIGFkZEFmdGVyQWxsKGxpc3Q6IFBhcnNlTGlzdExpc3QpOiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgUGFyc2VyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsb2dnZXI6IExvZ2dlciwgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MpIHt9XG5cbiAgcGFyc2VSYW5nZShlZGl0b3I6IFJlYWRlciwgZnJvbUxpbmUgPSAwLCB0b0xpbmUgPSBlZGl0b3IubGFzdExpbmUoKSk6IFJvb3RbXSB7XG4gICAgY29uc3QgbGlzdHM6IFJvb3RbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IGZyb21MaW5lOyBpIDw9IHRvTGluZTsgaSsrKSB7XG4gICAgICBjb25zdCBsaW5lID0gZWRpdG9yLmdldExpbmUoaSk7XG5cbiAgICAgIGlmIChpID09PSBmcm9tTGluZSB8fCB0aGlzLmlzTGlzdEl0ZW0obGluZSkpIHtcbiAgICAgICAgY29uc3QgbGlzdCA9IHRoaXMucGFyc2VXaXRoTGltaXRzKGVkaXRvciwgaSwgZnJvbUxpbmUsIHRvTGluZSk7XG5cbiAgICAgICAgaWYgKGxpc3QpIHtcbiAgICAgICAgICBsaXN0cy5wdXNoKGxpc3QpO1xuICAgICAgICAgIGkgPSBsaXN0LmdldENvbnRlbnRFbmQoKS5saW5lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpc3RzO1xuICB9XG5cbiAgcGFyc2UoZWRpdG9yOiBSZWFkZXIsIGN1cnNvciA9IGVkaXRvci5nZXRDdXJzb3IoKSk6IFJvb3QgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZVdpdGhMaW1pdHMoZWRpdG9yLCBjdXJzb3IubGluZSwgMCwgZWRpdG9yLmxhc3RMaW5lKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVdpdGhMaW1pdHMoXG4gICAgZWRpdG9yOiBSZWFkZXIsXG4gICAgcGFyc2luZ1N0YXJ0TGluZTogbnVtYmVyLFxuICAgIGxpbWl0RnJvbTogbnVtYmVyLFxuICAgIGxpbWl0VG86IG51bWJlclxuICApOiBSb290IHwgbnVsbCB7XG4gICAgY29uc3QgZCA9IHRoaXMubG9nZ2VyLmJpbmQoXCJwYXJzZUxpc3RcIik7XG4gICAgY29uc3QgZXJyb3IgPSAobXNnOiBzdHJpbmcpOiBudWxsID0+IHtcbiAgICAgIGQobXNnKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG5cbiAgICBjb25zdCBsaW5lID0gZWRpdG9yLmdldExpbmUocGFyc2luZ1N0YXJ0TGluZSk7XG5cbiAgICBsZXQgbGlzdExvb2tpbmdQb3M6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKHRoaXMuaXNMaXN0SXRlbShsaW5lKSkge1xuICAgICAgbGlzdExvb2tpbmdQb3MgPSBwYXJzaW5nU3RhcnRMaW5lO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0xpbmVXaXRoSW5kZW50KGxpbmUpKSB7XG4gICAgICBsZXQgbGlzdExvb2tpbmdQb3NTZWFyY2ggPSBwYXJzaW5nU3RhcnRMaW5lIC0gMTtcbiAgICAgIHdoaWxlIChsaXN0TG9va2luZ1Bvc1NlYXJjaCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IGxpbmUgPSBlZGl0b3IuZ2V0TGluZShsaXN0TG9va2luZ1Bvc1NlYXJjaCk7XG4gICAgICAgIGlmICh0aGlzLmlzTGlzdEl0ZW0obGluZSkpIHtcbiAgICAgICAgICBsaXN0TG9va2luZ1BvcyA9IGxpc3RMb29raW5nUG9zU2VhcmNoO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNMaW5lV2l0aEluZGVudChsaW5lKSkge1xuICAgICAgICAgIGxpc3RMb29raW5nUG9zU2VhcmNoLS07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobGlzdExvb2tpbmdQb3MgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBsaXN0U3RhcnRMaW5lOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgbGlzdFN0YXJ0TGluZUxvb2t1cCA9IGxpc3RMb29raW5nUG9zO1xuICAgIHdoaWxlIChsaXN0U3RhcnRMaW5lTG9va3VwID49IDApIHtcbiAgICAgIGNvbnN0IGxpbmUgPSBlZGl0b3IuZ2V0TGluZShsaXN0U3RhcnRMaW5lTG9va3VwKTtcbiAgICAgIGlmICghdGhpcy5pc0xpc3RJdGVtKGxpbmUpICYmICF0aGlzLmlzTGluZVdpdGhJbmRlbnQobGluZSkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc0xpc3RJdGVtV2l0aG91dFNwYWNlcyhsaW5lKSkge1xuICAgICAgICBsaXN0U3RhcnRMaW5lID0gbGlzdFN0YXJ0TGluZUxvb2t1cDtcbiAgICAgICAgaWYgKGxpc3RTdGFydExpbmVMb29rdXAgPD0gbGltaXRGcm9tKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxpc3RTdGFydExpbmVMb29rdXAtLTtcbiAgICB9XG5cbiAgICBpZiAobGlzdFN0YXJ0TGluZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IGxpc3RFbmRMaW5lID0gbGlzdExvb2tpbmdQb3M7XG4gICAgbGV0IGxpc3RFbmRMaW5lTG9va3VwID0gbGlzdExvb2tpbmdQb3M7XG4gICAgd2hpbGUgKGxpc3RFbmRMaW5lTG9va3VwIDw9IGVkaXRvci5sYXN0TGluZSgpKSB7XG4gICAgICBjb25zdCBsaW5lID0gZWRpdG9yLmdldExpbmUobGlzdEVuZExpbmVMb29rdXApO1xuICAgICAgaWYgKCF0aGlzLmlzTGlzdEl0ZW0obGluZSkgJiYgIXRoaXMuaXNMaW5lV2l0aEluZGVudChsaW5lKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5pc0VtcHR5TGluZShsaW5lKSkge1xuICAgICAgICBsaXN0RW5kTGluZSA9IGxpc3RFbmRMaW5lTG9va3VwO1xuICAgICAgfVxuICAgICAgaWYgKGxpc3RFbmRMaW5lTG9va3VwID49IGxpbWl0VG8pIHtcbiAgICAgICAgbGlzdEVuZExpbmUgPSBsaW1pdFRvO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGxpc3RFbmRMaW5lTG9va3VwKys7XG4gICAgfVxuXG4gICAgaWYgKGxpc3RTdGFydExpbmUgPiBwYXJzaW5nU3RhcnRMaW5lIHx8IGxpc3RFbmRMaW5lIDwgcGFyc2luZ1N0YXJ0TGluZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlIGxhc3QgbGluZSBjb250YWlucyBvbmx5IHNwYWNlcyBhbmQgdGhhdCdzIGluY29ycmVjdCBpbmRlbnQsIHRoZW4gaWdub3JlIHRoZSBsYXN0IGxpbmVcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdnNsaW5rby9vYnNpZGlhbi1vdXRsaW5lci9pc3N1ZXMvMzY4XG4gICAgaWYgKGxpc3RFbmRMaW5lID4gbGlzdFN0YXJ0TGluZSkge1xuICAgICAgY29uc3QgbGFzdExpbmUgPSBlZGl0b3IuZ2V0TGluZShsaXN0RW5kTGluZSk7XG4gICAgICBpZiAobGFzdExpbmUudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zdCBwcmV2TGluZSA9IGVkaXRvci5nZXRMaW5lKGxpc3RFbmRMaW5lIC0gMSk7XG4gICAgICAgIGNvbnN0IFssIHByZXZMaW5lSW5kZW50XSA9IC9eKFxccyopLy5leGVjKHByZXZMaW5lKTtcbiAgICAgICAgaWYgKCFsYXN0TGluZS5zdGFydHNXaXRoKHByZXZMaW5lSW5kZW50KSkge1xuICAgICAgICAgIGxpc3RFbmRMaW5lLS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByb290ID0gbmV3IFJvb3QoXG4gICAgICB7IGxpbmU6IGxpc3RTdGFydExpbmUsIGNoOiAwIH0sXG4gICAgICB7IGxpbmU6IGxpc3RFbmRMaW5lLCBjaDogZWRpdG9yLmdldExpbmUobGlzdEVuZExpbmUpLmxlbmd0aCB9LFxuICAgICAgZWRpdG9yLmxpc3RTZWxlY3Rpb25zKCkubWFwKChyKSA9PiAoe1xuICAgICAgICBhbmNob3I6IHsgbGluZTogci5hbmNob3IubGluZSwgY2g6IHIuYW5jaG9yLmNoIH0sXG4gICAgICAgIGhlYWQ6IHsgbGluZTogci5oZWFkLmxpbmUsIGNoOiByLmhlYWQuY2ggfSxcbiAgICAgIH0pKVxuICAgICk7XG5cbiAgICBsZXQgY3VycmVudFBhcmVudDogUGFyc2VMaXN0TGlzdCA9IHJvb3QuZ2V0Um9vdExpc3QoKTtcbiAgICBsZXQgY3VycmVudExpc3Q6IFBhcnNlTGlzdExpc3QgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgY3VycmVudEluZGVudCA9IFwiXCI7XG5cbiAgICBjb25zdCBmb2xkZWRMaW5lcyA9IGVkaXRvci5nZXRBbGxGb2xkZWRMaW5lcygpO1xuXG4gICAgZm9yIChsZXQgbCA9IGxpc3RTdGFydExpbmU7IGwgPD0gbGlzdEVuZExpbmU7IGwrKykge1xuICAgICAgY29uc3QgbGluZSA9IGVkaXRvci5nZXRMaW5lKGwpO1xuICAgICAgY29uc3QgbWF0Y2hlcyA9IHBhcnNlTGlzdEl0ZW1SZS5leGVjKGxpbmUpO1xuXG4gICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICBjb25zdCBbLCBpbmRlbnQsIGJ1bGxldCwgc3BhY2VBZnRlckJ1bGxldF0gPSBtYXRjaGVzO1xuICAgICAgICBsZXQgWywgLCAsICwgb3B0aW9uYWxDaGVja2JveCwgY29udGVudF0gPSBtYXRjaGVzO1xuXG4gICAgICAgIGNvbnRlbnQgPSBvcHRpb25hbENoZWNrYm94ICsgY29udGVudDtcbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3Mua2VlcEN1cnNvcldpdGhpbkNvbnRlbnQgIT09IFwiYnVsbGV0LWFuZC1jaGVja2JveFwiKSB7XG4gICAgICAgICAgb3B0aW9uYWxDaGVja2JveCA9IFwiXCI7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb21wYXJlTGVuZ3RoID0gTWF0aC5taW4oY3VycmVudEluZGVudC5sZW5ndGgsIGluZGVudC5sZW5ndGgpO1xuICAgICAgICBjb25zdCBpbmRlbnRTbGljZSA9IGluZGVudC5zbGljZSgwLCBjb21wYXJlTGVuZ3RoKTtcbiAgICAgICAgY29uc3QgY3VycmVudEluZGVudFNsaWNlID0gY3VycmVudEluZGVudC5zbGljZSgwLCBjb21wYXJlTGVuZ3RoKTtcblxuICAgICAgICBpZiAoaW5kZW50U2xpY2UgIT09IGN1cnJlbnRJbmRlbnRTbGljZSkge1xuICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gY3VycmVudEluZGVudFNsaWNlXG4gICAgICAgICAgICAucmVwbGFjZSgvIC9nLCBcIlNcIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXHQvZywgXCJUXCIpO1xuICAgICAgICAgIGNvbnN0IGdvdCA9IGluZGVudFNsaWNlLnJlcGxhY2UoLyAvZywgXCJTXCIpLnJlcGxhY2UoL1xcdC9nLCBcIlRcIik7XG5cbiAgICAgICAgICByZXR1cm4gZXJyb3IoXG4gICAgICAgICAgICBgVW5hYmxlIHRvIHBhcnNlIGxpc3Q6IGV4cGVjdGVkIGluZGVudCBcIiR7ZXhwZWN0ZWR9XCIsIGdvdCBcIiR7Z290fVwiYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5kZW50Lmxlbmd0aCA+IGN1cnJlbnRJbmRlbnQubGVuZ3RoKSB7XG4gICAgICAgICAgY3VycmVudFBhcmVudCA9IGN1cnJlbnRMaXN0O1xuICAgICAgICAgIGN1cnJlbnRJbmRlbnQgPSBpbmRlbnQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZW50Lmxlbmd0aCA8IGN1cnJlbnRJbmRlbnQubGVuZ3RoKSB7XG4gICAgICAgICAgd2hpbGUgKFxuICAgICAgICAgICAgY3VycmVudFBhcmVudC5nZXRGaXJzdExpbmVJbmRlbnQoKS5sZW5ndGggPj0gaW5kZW50Lmxlbmd0aCAmJlxuICAgICAgICAgICAgY3VycmVudFBhcmVudC5nZXRQYXJlbnQoKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY3VycmVudFBhcmVudCA9IGN1cnJlbnRQYXJlbnQuZ2V0UGFyZW50KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGN1cnJlbnRJbmRlbnQgPSBpbmRlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmb2xkUm9vdCA9IGZvbGRlZExpbmVzLmluY2x1ZGVzKGwpO1xuXG4gICAgICAgIGN1cnJlbnRMaXN0ID0gbmV3IExpc3QoXG4gICAgICAgICAgcm9vdCxcbiAgICAgICAgICBpbmRlbnQsXG4gICAgICAgICAgYnVsbGV0LFxuICAgICAgICAgIG9wdGlvbmFsQ2hlY2tib3gsXG4gICAgICAgICAgc3BhY2VBZnRlckJ1bGxldCxcbiAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgIGZvbGRSb290XG4gICAgICAgICk7XG4gICAgICAgIGN1cnJlbnRQYXJlbnQuYWRkQWZ0ZXJBbGwoY3VycmVudExpc3QpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmlzTGluZVdpdGhJbmRlbnQobGluZSkpIHtcbiAgICAgICAgaWYgKCFjdXJyZW50TGlzdCkge1xuICAgICAgICAgIHJldHVybiBlcnJvcihcbiAgICAgICAgICAgIGBVbmFibGUgdG8gcGFyc2UgbGlzdDogZXhwZWN0ZWQgbGlzdCBpdGVtLCBnb3QgZW1wdHkgbGluZWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW5kZW50VG9DaGVjayA9IGN1cnJlbnRMaXN0LmdldE5vdGVzSW5kZW50KCkgfHwgY3VycmVudEluZGVudDtcblxuICAgICAgICBpZiAobGluZS5pbmRleE9mKGluZGVudFRvQ2hlY2spICE9PSAwKSB7XG4gICAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSBpbmRlbnRUb0NoZWNrLnJlcGxhY2UoLyAvZywgXCJTXCIpLnJlcGxhY2UoL1xcdC9nLCBcIlRcIik7XG4gICAgICAgICAgY29uc3QgZ290ID0gbGluZVxuICAgICAgICAgICAgLm1hdGNoKC9eWyBcXHRdKi8pWzBdXG4gICAgICAgICAgICAucmVwbGFjZSgvIC9nLCBcIlNcIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXHQvZywgXCJUXCIpO1xuXG4gICAgICAgICAgcmV0dXJuIGVycm9yKFxuICAgICAgICAgICAgYFVuYWJsZSB0byBwYXJzZSBsaXN0OiBleHBlY3RlZCBpbmRlbnQgXCIke2V4cGVjdGVkfVwiLCBnb3QgXCIke2dvdH1cImBcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjdXJyZW50TGlzdC5nZXROb3Rlc0luZGVudCgpKSB7XG4gICAgICAgICAgY29uc3QgbWF0Y2hlcyA9IGxpbmUubWF0Y2goL15bIFxcdF0rLyk7XG5cbiAgICAgICAgICBpZiAoIW1hdGNoZXMgfHwgbWF0Y2hlc1swXS5sZW5ndGggPD0gY3VycmVudEluZGVudC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICgvXlxccyskLy50ZXN0KGxpbmUpKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZXJyb3IoXG4gICAgICAgICAgICAgIGBVbmFibGUgdG8gcGFyc2UgbGlzdDogZXhwZWN0ZWQgc29tZSBpbmRlbnQsIGdvdCBubyBpbmRlbnRgXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGN1cnJlbnRMaXN0LnNldE5vdGVzSW5kZW50KG1hdGNoZXNbMF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudExpc3QuYWRkTGluZShsaW5lLnNsaWNlKGN1cnJlbnRMaXN0LmdldE5vdGVzSW5kZW50KCkubGVuZ3RoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZXJyb3IoXG4gICAgICAgICAgYFVuYWJsZSB0byBwYXJzZSBsaXN0OiBleHBlY3RlZCBsaXN0IGl0ZW0gb3Igbm90ZSwgZ290IFwiJHtsaW5lfVwiYFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByb290O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0VtcHR5TGluZShsaW5lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbGluZS5sZW5ndGggPT09IDA7XG4gIH1cblxuICBwcml2YXRlIGlzTGluZVdpdGhJbmRlbnQobGluZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZ1dpdGhTcGFjZXNSZS50ZXN0KGxpbmUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0xpc3RJdGVtKGxpbmU6IHN0cmluZykge1xuICAgIHJldHVybiBsaXN0SXRlbVJlLnRlc3QobGluZSk7XG4gIH1cblxuICBwcml2YXRlIGlzTGlzdEl0ZW1XaXRob3V0U3BhY2VzKGxpbmU6IHN0cmluZykge1xuICAgIHJldHVybiBsaXN0SXRlbVdpdGhvdXRTcGFjZXNSZS50ZXN0KGxpbmUpO1xuICB9XG59XG4iLCJleHBvcnQgdHlwZSBWZXJ0aWNhbExpbmVzQWN0aW9uID0gXCJub25lXCIgfCBcInpvb20taW5cIiB8IFwidG9nZ2xlLWZvbGRpbmdcIjtcbmV4cG9ydCB0eXBlIEtlZXBDdXJzb3JXaXRoaW5Db250ZW50ID1cbiAgfCBcIm5ldmVyXCJcbiAgfCBcImJ1bGxldC1vbmx5XCJcbiAgfCBcImJ1bGxldC1hbmQtY2hlY2tib3hcIjtcblxuaW50ZXJmYWNlIFNldHRpbmdzT2JqZWN0IHtcbiAgc3R5bGVMaXN0czogYm9vbGVhbjtcbiAgZGVidWc6IGJvb2xlYW47XG4gIHN0aWNrQ3Vyc29yOiBLZWVwQ3Vyc29yV2l0aGluQ29udGVudCB8IGJvb2xlYW47XG4gIGJldHRlckVudGVyOiBib29sZWFuO1xuICBiZXR0ZXJUYWI6IGJvb2xlYW47XG4gIHNlbGVjdEFsbDogYm9vbGVhbjtcbiAgbGlzdExpbmVzOiBib29sZWFuO1xuICBsaXN0TGluZUFjdGlvbjogVmVydGljYWxMaW5lc0FjdGlvbjtcbiAgZG5kOiBib29sZWFuO1xuICBwcmV2aW91c1JlbGVhc2U6IHN0cmluZyB8IG51bGw7XG59XG5cbmNvbnN0IERFRkFVTFRfU0VUVElOR1M6IFNldHRpbmdzT2JqZWN0ID0ge1xuICBzdHlsZUxpc3RzOiB0cnVlLFxuICBkZWJ1ZzogZmFsc2UsXG4gIHN0aWNrQ3Vyc29yOiBcImJ1bGxldC1hbmQtY2hlY2tib3hcIixcbiAgYmV0dGVyRW50ZXI6IHRydWUsXG4gIGJldHRlclRhYjogdHJ1ZSxcbiAgc2VsZWN0QWxsOiB0cnVlLFxuICBsaXN0TGluZXM6IGZhbHNlLFxuICBsaXN0TGluZUFjdGlvbjogXCJ0b2dnbGUtZm9sZGluZ1wiLFxuICBkbmQ6IHRydWUsXG4gIHByZXZpb3VzUmVsZWFzZTogbnVsbCxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmFnZSB7XG4gIGxvYWREYXRhKCk6IFByb21pc2U8U2V0dGluZ3NPYmplY3Q+O1xuICBzYXZlRGF0YShzZXR0aW5nczogU2V0dGluZ3NPYmplY3QpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG50eXBlIENhbGxiYWNrID0gKCkgPT4gdm9pZDtcblxuZXhwb3J0IGNsYXNzIFNldHRpbmdzIHtcbiAgcHJpdmF0ZSBzdG9yYWdlOiBTdG9yYWdlO1xuICBwcml2YXRlIHZhbHVlczogU2V0dGluZ3NPYmplY3Q7XG4gIHByaXZhdGUgY2FsbGJhY2tzOiBTZXQ8Q2FsbGJhY2s+O1xuXG4gIGNvbnN0cnVjdG9yKHN0b3JhZ2U6IFN0b3JhZ2UpIHtcbiAgICB0aGlzLnN0b3JhZ2UgPSBzdG9yYWdlO1xuICAgIHRoaXMuY2FsbGJhY2tzID0gbmV3IFNldCgpO1xuICB9XG5cbiAgZ2V0IGtlZXBDdXJzb3JXaXRoaW5Db250ZW50KCkge1xuICAgIC8vIEFkYXB0b3IgZm9yIHVzZXJzIG1pZ3JhdGluZyBmcm9tIG9sZGVyIHZlcnNpb24gb2YgdGhlIHBsdWdpbi5cbiAgICBpZiAodGhpcy52YWx1ZXMuc3RpY2tDdXJzb3IgPT09IHRydWUpIHtcbiAgICAgIHJldHVybiBcImJ1bGxldC1hbmQtY2hlY2tib3hcIjtcbiAgICB9IGVsc2UgaWYgKHRoaXMudmFsdWVzLnN0aWNrQ3Vyc29yID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIFwibmV2ZXJcIjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy52YWx1ZXMuc3RpY2tDdXJzb3I7XG4gIH1cblxuICBzZXQga2VlcEN1cnNvcldpdGhpbkNvbnRlbnQodmFsdWU6IEtlZXBDdXJzb3JXaXRoaW5Db250ZW50KSB7XG4gICAgdGhpcy5zZXQoXCJzdGlja0N1cnNvclwiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgb3ZlcnJpZGVUYWJCZWhhdmlvdXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmJldHRlclRhYjtcbiAgfVxuXG4gIHNldCBvdmVycmlkZVRhYkJlaGF2aW91cih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0KFwiYmV0dGVyVGFiXCIsIHZhbHVlKTtcbiAgfVxuXG4gIGdldCBvdmVycmlkZUVudGVyQmVoYXZpb3VyKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5iZXR0ZXJFbnRlcjtcbiAgfVxuXG4gIHNldCBvdmVycmlkZUVudGVyQmVoYXZpb3VyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXQoXCJiZXR0ZXJFbnRlclwiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgb3ZlcnJpZGVTZWxlY3RBbGxCZWhhdmlvdXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLnNlbGVjdEFsbDtcbiAgfVxuXG4gIHNldCBvdmVycmlkZVNlbGVjdEFsbEJlaGF2aW91cih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0KFwic2VsZWN0QWxsXCIsIHZhbHVlKTtcbiAgfVxuXG4gIGdldCBiZXR0ZXJMaXN0c1N0eWxlcygpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMuc3R5bGVMaXN0cztcbiAgfVxuXG4gIHNldCBiZXR0ZXJMaXN0c1N0eWxlcyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0KFwic3R5bGVMaXN0c1wiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgdmVydGljYWxMaW5lcygpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMubGlzdExpbmVzO1xuICB9XG5cbiAgc2V0IHZlcnRpY2FsTGluZXModmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldChcImxpc3RMaW5lc1wiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgdmVydGljYWxMaW5lc0FjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMubGlzdExpbmVBY3Rpb247XG4gIH1cblxuICBzZXQgdmVydGljYWxMaW5lc0FjdGlvbih2YWx1ZTogVmVydGljYWxMaW5lc0FjdGlvbikge1xuICAgIHRoaXMuc2V0KFwibGlzdExpbmVBY3Rpb25cIiwgdmFsdWUpO1xuICB9XG5cbiAgZ2V0IGRyYWdBbmREcm9wKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5kbmQ7XG4gIH1cblxuICBzZXQgZHJhZ0FuZERyb3AodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldChcImRuZFwiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgZGVidWcoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmRlYnVnO1xuICB9XG5cbiAgc2V0IGRlYnVnKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXQoXCJkZWJ1Z1wiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgcHJldmlvdXNSZWxlYXNlKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5wcmV2aW91c1JlbGVhc2U7XG4gIH1cblxuICBzZXQgcHJldmlvdXNSZWxlYXNlKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgdGhpcy5zZXQoXCJwcmV2aW91c1JlbGVhc2VcIiwgdmFsdWUpO1xuICB9XG5cbiAgb25DaGFuZ2UoY2I6IENhbGxiYWNrKSB7XG4gICAgdGhpcy5jYWxsYmFja3MuYWRkKGNiKTtcbiAgfVxuXG4gIHJlbW92ZUNhbGxiYWNrKGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgIHRoaXMuY2FsbGJhY2tzLmRlbGV0ZShjYik7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhERUZBVUxUX1NFVFRJTkdTKSkge1xuICAgICAgdGhpcy5zZXQoayBhcyBrZXlvZiBTZXR0aW5nc09iamVjdCwgdik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnZhbHVlcyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7fSxcbiAgICAgIERFRkFVTFRfU0VUVElOR1MsXG4gICAgICBhd2FpdCB0aGlzLnN0b3JhZ2UubG9hZERhdGEoKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBzYXZlKCkge1xuICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5zYXZlRGF0YSh0aGlzLnZhbHVlcyk7XG4gIH1cblxuICBnZXRWYWx1ZXMoKTogU2V0dGluZ3NPYmplY3Qge1xuICAgIHJldHVybiB7IC4uLnRoaXMudmFsdWVzIH07XG4gIH1cblxuICBwcml2YXRlIHNldDxUIGV4dGVuZHMga2V5b2YgU2V0dGluZ3NPYmplY3Q+KFxuICAgIGtleTogVCxcbiAgICB2YWx1ZTogU2V0dGluZ3NPYmplY3RbVF1cbiAgKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZXNba2V5XSA9IHZhbHVlO1xuXG4gICAgZm9yIChjb25zdCBjYiBvZiB0aGlzLmNhbGxiYWNrcykge1xuICAgICAgY2IoKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBBcnJvd0xlZnRBbmRDdHJsQXJyb3dMZWZ0QmVoYXZpb3VyT3ZlcnJpZGUgfSBmcm9tIFwiLi9mZWF0dXJlcy9BcnJvd0xlZnRBbmRDdHJsQXJyb3dMZWZ0QmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IEJhY2tzcGFjZUJlaGF2aW91ck92ZXJyaWRlIH0gZnJvbSBcIi4vZmVhdHVyZXMvQmFja3NwYWNlQmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IEJldHRlckxpc3RzU3R5bGVzIH0gZnJvbSBcIi4vZmVhdHVyZXMvQmV0dGVyTGlzdHNTdHlsZXNcIjtcbmltcG9ydCB7IEN0cmxBQW5kQ21kQUJlaGF2aW91ck92ZXJyaWRlIH0gZnJvbSBcIi4vZmVhdHVyZXMvQ3RybEFBbmRDbWRBQmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IERlbGV0ZUJlaGF2aW91ck92ZXJyaWRlIH0gZnJvbSBcIi4vZmVhdHVyZXMvRGVsZXRlQmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IERyYWdBbmREcm9wIH0gZnJvbSBcIi4vZmVhdHVyZXMvRHJhZ0FuZERyb3BcIjtcbmltcG9ydCB7IEVkaXRvclNlbGVjdGlvbnNCZWhhdmlvdXJPdmVycmlkZSB9IGZyb20gXCIuL2ZlYXR1cmVzL0VkaXRvclNlbGVjdGlvbnNCZWhhdmlvdXJPdmVycmlkZVwiO1xuaW1wb3J0IHsgRW50ZXJCZWhhdmlvdXJPdmVycmlkZSB9IGZyb20gXCIuL2ZlYXR1cmVzL0VudGVyQmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9mZWF0dXJlcy9GZWF0dXJlXCI7XG5pbXBvcnQgeyBMaXN0c0ZvbGRpbmdDb21tYW5kcyB9IGZyb20gXCIuL2ZlYXR1cmVzL0xpc3RzRm9sZGluZ0NvbW1hbmRzXCI7XG5pbXBvcnQgeyBMaXN0c01vdmVtZW50Q29tbWFuZHMgfSBmcm9tIFwiLi9mZWF0dXJlcy9MaXN0c01vdmVtZW50Q29tbWFuZHNcIjtcbmltcG9ydCB7IE1ldGFCYWNrc3BhY2VCZWhhdmlvdXJPdmVycmlkZSB9IGZyb20gXCIuL2ZlYXR1cmVzL01ldGFCYWNrc3BhY2VCZWhhdmlvdXJPdmVycmlkZVwiO1xuaW1wb3J0IHsgUmVsZWFzZU5vdGVzQW5ub3VuY2VtZW50IH0gZnJvbSBcIi4vZmVhdHVyZXMvUmVsZWFzZU5vdGVzQW5ub3VuY2VtZW50XCI7XG5pbXBvcnQgeyBTZXR0aW5nc1RhYiB9IGZyb20gXCIuL2ZlYXR1cmVzL1NldHRpbmdzVGFiXCI7XG5pbXBvcnQgeyBTaGlmdFRhYkJlaGF2aW91ck92ZXJyaWRlIH0gZnJvbSBcIi4vZmVhdHVyZXMvU2hpZnRUYWJCZWhhdmlvdXJPdmVycmlkZVwiO1xuaW1wb3J0IHsgU3lzdGVtSW5mbyB9IGZyb20gXCIuL2ZlYXR1cmVzL1N5c3RlbUluZm9cIjtcbmltcG9ydCB7IFRhYkJlaGF2aW91ck92ZXJyaWRlIH0gZnJvbSBcIi4vZmVhdHVyZXMvVGFiQmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IFZlcnRpY2FsTGluZXMgfSBmcm9tIFwiLi9mZWF0dXJlcy9WZXJ0aWNhbExpbmVzXCI7XG5pbXBvcnQgeyBDaGFuZ2VzQXBwbGljYXRvciB9IGZyb20gXCIuL3NlcnZpY2VzL0NoYW5nZXNBcHBsaWNhdG9yXCI7XG5pbXBvcnQgeyBJTUVEZXRlY3RvciB9IGZyb20gXCIuL3NlcnZpY2VzL0lNRURldGVjdG9yXCI7XG5pbXBvcnQgeyBMb2dnZXIgfSBmcm9tIFwiLi9zZXJ2aWNlcy9Mb2dnZXJcIjtcbmltcG9ydCB7IE9ic2lkaWFuU2V0dGluZ3MgfSBmcm9tIFwiLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25QZXJmb3JtZXIgfSBmcm9tIFwiLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuL3NlcnZpY2VzL1BhcnNlclwiO1xuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tIFwiLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGNvbnN0IFBMVUdJTl9WRVJTSU9OOiBzdHJpbmc7XG4gIGNvbnN0IENIQU5HRUxPR19NRDogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBPYnNpZGlhbk91dGxpbmVyUGx1Z2luIGV4dGVuZHMgUGx1Z2luIHtcbiAgcHJpdmF0ZSBmZWF0dXJlczogRmVhdHVyZVtdO1xuICBwcm90ZWN0ZWQgc2V0dGluZ3M6IFNldHRpbmdzO1xuICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyO1xuICBwcml2YXRlIG9ic2lkaWFuU2V0dGluZ3M6IE9ic2lkaWFuU2V0dGluZ3M7XG4gIHByaXZhdGUgcGFyc2VyOiBQYXJzZXI7XG4gIHByaXZhdGUgY2hhbmdlc0FwcGxpY2F0b3I6IENoYW5nZXNBcHBsaWNhdG9yO1xuICBwcml2YXRlIG9wZXJhdGlvblBlcmZvcm1lcjogT3BlcmF0aW9uUGVyZm9ybWVyO1xuICBwcml2YXRlIGltZURldGVjdG9yOiBJTUVEZXRlY3RvcjtcblxuICBhc3luYyBvbmxvYWQoKSB7XG4gICAgY29uc29sZS5sb2coYExvYWRpbmcgb2JzaWRpYW4tb3V0bGluZXJgKTtcblxuICAgIGF3YWl0IHRoaXMucHJlcGFyZVNldHRpbmdzKCk7XG5cbiAgICB0aGlzLm9ic2lkaWFuU2V0dGluZ3MgPSBuZXcgT2JzaWRpYW5TZXR0aW5ncyh0aGlzLmFwcCk7XG4gICAgdGhpcy5sb2dnZXIgPSBuZXcgTG9nZ2VyKHRoaXMuc2V0dGluZ3MpO1xuICAgIHRoaXMucGFyc2VyID0gbmV3IFBhcnNlcih0aGlzLmxvZ2dlciwgdGhpcy5zZXR0aW5ncyk7XG4gICAgdGhpcy5jaGFuZ2VzQXBwbGljYXRvciA9IG5ldyBDaGFuZ2VzQXBwbGljYXRvcigpO1xuICAgIHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyID0gbmV3IE9wZXJhdGlvblBlcmZvcm1lcihcbiAgICAgIHRoaXMucGFyc2VyLFxuICAgICAgdGhpcy5jaGFuZ2VzQXBwbGljYXRvclxuICAgICk7XG5cbiAgICB0aGlzLmltZURldGVjdG9yID0gbmV3IElNRURldGVjdG9yKCk7XG4gICAgYXdhaXQgdGhpcy5pbWVEZXRlY3Rvci5sb2FkKCk7XG5cbiAgICB0aGlzLmZlYXR1cmVzID0gW1xuICAgICAgLy8gc2VydmljZSBmZWF0dXJlc1xuICAgICAgbmV3IFJlbGVhc2VOb3Rlc0Fubm91bmNlbWVudCh0aGlzLCB0aGlzLnNldHRpbmdzKSxcbiAgICAgIG5ldyBTZXR0aW5nc1RhYih0aGlzLCB0aGlzLnNldHRpbmdzKSxcbiAgICAgIG5ldyBTeXN0ZW1JbmZvKHRoaXMsIHRoaXMuc2V0dGluZ3MpLFxuXG4gICAgICAvLyBnZW5lcmFsIGZlYXR1cmVzXG4gICAgICBuZXcgTGlzdHNNb3ZlbWVudENvbW1hbmRzKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLm9ic2lkaWFuU2V0dGluZ3MsXG4gICAgICAgIHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyXG4gICAgICApLFxuICAgICAgbmV3IExpc3RzRm9sZGluZ0NvbW1hbmRzKHRoaXMsIHRoaXMub2JzaWRpYW5TZXR0aW5ncyksXG5cbiAgICAgIC8vIGZlYXR1cmVzIGJhc2VkIG9uIHNldHRpbmdzLmtlZXBDdXJzb3JXaXRoaW5Db250ZW50XG4gICAgICBuZXcgRWRpdG9yU2VsZWN0aW9uc0JlaGF2aW91ck92ZXJyaWRlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLnBhcnNlcixcbiAgICAgICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXJcbiAgICAgICksXG4gICAgICBuZXcgQXJyb3dMZWZ0QW5kQ3RybEFycm93TGVmdEJlaGF2aW91ck92ZXJyaWRlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLmltZURldGVjdG9yLFxuICAgICAgICB0aGlzLm9wZXJhdGlvblBlcmZvcm1lclxuICAgICAgKSxcbiAgICAgIG5ldyBCYWNrc3BhY2VCZWhhdmlvdXJPdmVycmlkZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgdGhpcy5pbWVEZXRlY3RvcixcbiAgICAgICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXJcbiAgICAgICksXG4gICAgICBuZXcgTWV0YUJhY2tzcGFjZUJlaGF2aW91ck92ZXJyaWRlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLmltZURldGVjdG9yLFxuICAgICAgICB0aGlzLm9wZXJhdGlvblBlcmZvcm1lclxuICAgICAgKSxcbiAgICAgIG5ldyBEZWxldGVCZWhhdmlvdXJPdmVycmlkZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgdGhpcy5pbWVEZXRlY3RvcixcbiAgICAgICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXJcbiAgICAgICksXG5cbiAgICAgIC8vIGZlYXR1cmVzIGJhc2VkIG9uIHNldHRpbmdzLm92ZXJyaWRlVGFiQmVoYXZpb3VyXG4gICAgICBuZXcgVGFiQmVoYXZpb3VyT3ZlcnJpZGUoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMuaW1lRGV0ZWN0b3IsXG4gICAgICAgIHRoaXMub2JzaWRpYW5TZXR0aW5ncyxcbiAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXJcbiAgICAgICksXG4gICAgICBuZXcgU2hpZnRUYWJCZWhhdmlvdXJPdmVycmlkZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5pbWVEZXRlY3RvcixcbiAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXJcbiAgICAgICksXG5cbiAgICAgIC8vIGZlYXR1cmVzIGJhc2VkIG9uIHNldHRpbmdzLm92ZXJyaWRlRW50ZXJCZWhhdmlvdXJcbiAgICAgIG5ldyBFbnRlckJlaGF2aW91ck92ZXJyaWRlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLmltZURldGVjdG9yLFxuICAgICAgICB0aGlzLm9ic2lkaWFuU2V0dGluZ3MsXG4gICAgICAgIHRoaXMucGFyc2VyLFxuICAgICAgICB0aGlzLm9wZXJhdGlvblBlcmZvcm1lclxuICAgICAgKSxcblxuICAgICAgLy8gZmVhdHVyZXMgYmFzZWQgb24gc2V0dGluZ3Mub3ZlcnJpZGVTZWxlY3RBbGxCZWhhdmlvdXJcbiAgICAgIG5ldyBDdHJsQUFuZENtZEFCZWhhdmlvdXJPdmVycmlkZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgdGhpcy5pbWVEZXRlY3RvcixcbiAgICAgICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXJcbiAgICAgICksXG5cbiAgICAgIC8vIGZlYXR1cmVzIGJhc2VkIG9uIHNldHRpbmdzLmJldHRlckxpc3RzU3R5bGVzXG4gICAgICBuZXcgQmV0dGVyTGlzdHNTdHlsZXModGhpcy5zZXR0aW5ncywgdGhpcy5vYnNpZGlhblNldHRpbmdzKSxcblxuICAgICAgLy8gZmVhdHVyZXMgYmFzZWQgb24gc2V0dGluZ3MudmVydGljYWxMaW5lc1xuICAgICAgbmV3IFZlcnRpY2FsTGluZXMoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgIHRoaXMub2JzaWRpYW5TZXR0aW5ncyxcbiAgICAgICAgdGhpcy5wYXJzZXJcbiAgICAgICksXG5cbiAgICAgIC8vIGZlYXR1cmVzIGJhc2VkIG9uIHNldHRpbmdzLmRyYWdBbmREcm9wXG4gICAgICBuZXcgRHJhZ0FuZERyb3AoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgIHRoaXMub2JzaWRpYW5TZXR0aW5ncyxcbiAgICAgICAgdGhpcy5wYXJzZXIsXG4gICAgICAgIHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyXG4gICAgICApLFxuICAgIF07XG5cbiAgICBmb3IgKGNvbnN0IGZlYXR1cmUgb2YgdGhpcy5mZWF0dXJlcykge1xuICAgICAgYXdhaXQgZmVhdHVyZS5sb2FkKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb251bmxvYWQoKSB7XG4gICAgY29uc29sZS5sb2coYFVubG9hZGluZyBvYnNpZGlhbi1vdXRsaW5lcmApO1xuXG4gICAgYXdhaXQgdGhpcy5pbWVEZXRlY3Rvci51bmxvYWQoKTtcblxuICAgIGZvciAoY29uc3QgZmVhdHVyZSBvZiB0aGlzLmZlYXR1cmVzKSB7XG4gICAgICBhd2FpdCBmZWF0dXJlLnVubG9hZCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBwcmVwYXJlU2V0dGluZ3MoKSB7XG4gICAgdGhpcy5zZXR0aW5ncyA9IG5ldyBTZXR0aW5ncyh0aGlzKTtcbiAgICBhd2FpdCB0aGlzLnNldHRpbmdzLmxvYWQoKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbImVkaXRvckluZm9GaWVsZCIsImZvbGRlZFJhbmdlcyIsImZvbGRhYmxlIiwiZm9sZEVmZmVjdCIsInVuZm9sZEVmZmVjdCIsInJ1blNjb3BlSGFuZGxlcnMiLCJrZXltYXAiLCJOb3RpY2UiLCJpbmRlbnRTdHJpbmciLCJnZXRJbmRlbnRVbml0IiwiU3RhdGVFZmZlY3QiLCJEZWNvcmF0aW9uIiwiU3RhdGVGaWVsZCIsIkVkaXRvclZpZXciLCJQbGF0Zm9ybSIsIkVkaXRvclN0YXRlIiwiUHJlYyIsIk1vZGFsIiwiTWFya2Rvd25SZW5kZXJlciIsIlBsdWdpblNldHRpbmdUYWIiLCJTZXR0aW5nIiwiVmlld1BsdWdpbiIsIlBsdWdpbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFvR0E7QUFDTyxTQUFTLFNBQVMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUU7QUFDN0QsSUFBSSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEtBQUssWUFBWSxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLFVBQVUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7QUFDaEgsSUFBSSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxVQUFVLE9BQU8sRUFBRSxNQUFNLEVBQUU7QUFDL0QsUUFBUSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0FBQ25HLFFB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 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsInNyYy9vcGVyYXRpb25zL01vdmVDdXJzb3JUb1ByZXZpb3VzVW5mb2xkZWRMaW5lLnRzIiwic3JjL2VkaXRvci9pbmRleC50cyIsInNyYy91dGlscy9jcmVhdGVLZXltYXBSdW5DYWxsYmFjay50cyIsInNyYy9mZWF0dXJlcy9BcnJvd0xlZnRBbmRDdHJsQXJyb3dMZWZ0QmVoYXZpb3VyT3ZlcnJpZGUudHMiLCJzcmMvcm9vdC9pbmRleC50cyIsInNyYy9vcGVyYXRpb25zL0RlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kLnRzIiwic3JjL2ZlYXR1cmVzL0JhY2tzcGFjZUJlaGF2aW91ck92ZXJyaWRlLnRzIiwic3JjL2ZlYXR1cmVzL0JldHRlckxpc3RzU3R5bGVzLnRzIiwic3JjL29wZXJhdGlvbnMvU2VsZWN0QWxsQ29udGVudC50cyIsInNyYy9mZWF0dXJlcy9DdHJsQUFuZENtZEFCZWhhdmlvdXJPdmVycmlkZS50cyIsInNyYy9vcGVyYXRpb25zL0RlbGV0ZVRpbGxOZXh0TGluZUNvbnRlbnRTdGFydC50cyIsInNyYy9mZWF0dXJlcy9EZWxldGVCZWhhdmlvdXJPdmVycmlkZS50cyIsInNyYy9vcGVyYXRpb25zL01vdmVMaXN0VG9EaWZmZXJlbnRQb3NpdGlvbi50cyIsInNyYy9mZWF0dXJlcy9EcmFnQW5kRHJvcC50cyIsInNyYy9vcGVyYXRpb25zL0tlZXBDdXJzb3JPdXRzaWRlRm9sZGVkTGluZXMudHMiLCJzcmMvb3BlcmF0aW9ucy9LZWVwQ3Vyc29yV2l0aGluTGlzdENvbnRlbnQudHMiLCJzcmMvZmVhdHVyZXMvRWRpdG9yU2VsZWN0aW9uc0JlaGF2aW91ck92ZXJyaWRlLnRzIiwic3JjL3V0aWxzL2NoZWNrYm94UmUudHMiLCJzcmMvdXRpbHMvaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3gudHMiLCJzcmMvb3BlcmF0aW9ucy9DcmVhdGVOZXdJdGVtLnRzIiwic3JjL29wZXJhdGlvbnMvT3V0ZGVudExpc3QudHMiLCJzcmMvb3BlcmF0aW9ucy9PdXRkZW50TGlzdElmSXRzRW1wdHkudHMiLCJzcmMvZmVhdHVyZXMvRW50ZXJCZWhhdmlvdXJPdmVycmlkZS50cyIsInNyYy91dGlscy9jcmVhdGVFZGl0b3JDYWxsYmFjay50cyIsInNyYy9mZWF0dXJlcy9MaXN0c0ZvbGRpbmdDb21tYW5kcy50cyIsInNyYy9vcGVyYXRpb25zL0luZGVudExpc3QudHMiLCJzcmMvb3BlcmF0aW9ucy9Nb3ZlTGlzdERvd24udHMiLCJzcmMvb3BlcmF0aW9ucy9Nb3ZlTGlzdFVwLnRzIiwic3JjL2ZlYXR1cmVzL0xpc3RzTW92ZW1lbnRDb21tYW5kcy50cyIsInNyYy9vcGVyYXRpb25zL0RlbGV0ZVRpbGxDdXJyZW50TGluZUNvbnRlbnRTdGFydC50cyIsInNyYy9mZWF0dXJlcy9NZXRhQmFja3NwYWNlQmVoYXZpb3VyT3ZlcnJpZGUudHMiLCJzcmMvZmVhdHVyZXMvU2V0dGluZ3NUYWIudHMiLCJzcmMvZmVhdHVyZXMvU2hpZnRUYWJCZWhhdmlvdXJPdmVycmlkZS50cyIsInNyYy9mZWF0dXJlcy9TeXN0ZW1JbmZvLnRzIiwic3JjL2ZlYXR1cmVzL1RhYkJlaGF2aW91ck92ZXJyaWRlLnRzIiwic3JjL2ZlYXR1cmVzL1ZlcnRpY2FsTGluZXMudHMiLCJzcmMvc2VydmljZXMvQ2hhbmdlc0FwcGxpY2F0b3IudHMiLCJzcmMvc2VydmljZXMvSU1FRGV0ZWN0b3IudHMiLCJzcmMvc2VydmljZXMvTG9nZ2VyLnRzIiwic3JjL3NlcnZpY2VzL09ic2lkaWFuU2V0dGluZ3MudHMiLCJzcmMvc2VydmljZXMvT3BlcmF0aW9uUGVyZm9ybWVyLnRzIiwic3JjL3NlcnZpY2VzL1BhcnNlci50cyIsInNyYy9zZXJ2aWNlcy9TZXR0aW5ncy50cyIsInNyYy9PYnNpZGlhbk91dGxpbmVyUGx1Z2luLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXNEZWNvcmF0ZShjdG9yLCBkZXNjcmlwdG9ySW4sIGRlY29yYXRvcnMsIGNvbnRleHRJbiwgaW5pdGlhbGl6ZXJzLCBleHRyYUluaXRpYWxpemVycykge1xyXG4gICAgZnVuY3Rpb24gYWNjZXB0KGYpIHsgaWYgKGYgIT09IHZvaWQgMCAmJiB0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRnVuY3Rpb24gZXhwZWN0ZWRcIik7IHJldHVybiBmOyB9XHJcbiAgICB2YXIga2luZCA9IGNvbnRleHRJbi5raW5kLCBrZXkgPSBraW5kID09PSBcImdldHRlclwiID8gXCJnZXRcIiA6IGtpbmQgPT09IFwic2V0dGVyXCIgPyBcInNldFwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgdmFyIHRhcmdldCA9ICFkZXNjcmlwdG9ySW4gJiYgY3RvciA/IGNvbnRleHRJbltcInN0YXRpY1wiXSA/IGN0b3IgOiBjdG9yLnByb3RvdHlwZSA6IG51bGw7XHJcbiAgICB2YXIgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JJbiB8fCAodGFyZ2V0ID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGNvbnRleHRJbi5uYW1lKSA6IHt9KTtcclxuICAgIHZhciBfLCBkb25lID0gZmFsc2U7XHJcbiAgICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgIHZhciBjb250ZXh0ID0ge307XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4pIGNvbnRleHRbcF0gPSBwID09PSBcImFjY2Vzc1wiID8ge30gOiBjb250ZXh0SW5bcF07XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4uYWNjZXNzKSBjb250ZXh0LmFjY2Vzc1twXSA9IGNvbnRleHRJbi5hY2Nlc3NbcF07XHJcbiAgICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplciA9IGZ1bmN0aW9uIChmKSB7IGlmIChkb25lKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkXCIpOyBleHRyYUluaXRpYWxpemVycy5wdXNoKGFjY2VwdChmIHx8IG51bGwpKTsgfTtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gKDAsIGRlY29yYXRvcnNbaV0pKGtpbmQgPT09IFwiYWNjZXNzb3JcIiA/IHsgZ2V0OiBkZXNjcmlwdG9yLmdldCwgc2V0OiBkZXNjcmlwdG9yLnNldCB9IDogZGVzY3JpcHRvcltrZXldLCBjb250ZXh0KTtcclxuICAgICAgICBpZiAoa2luZCA9PT0gXCJhY2Nlc3NvclwiKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgdHlwZW9mIHJlc3VsdCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZFwiKTtcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmdldCkpIGRlc2NyaXB0b3IuZ2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LnNldCkpIGRlc2NyaXB0b3Iuc2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmluaXQpKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoXyA9IGFjY2VwdChyZXN1bHQpKSB7XHJcbiAgICAgICAgICAgIGlmIChraW5kID09PSBcImZpZWxkXCIpIGluaXRpYWxpemVycy51bnNoaWZ0KF8pO1xyXG4gICAgICAgICAgICBlbHNlIGRlc2NyaXB0b3Jba2V5XSA9IF87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRhcmdldCkgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgY29udGV4dEluLm5hbWUsIGRlc2NyaXB0b3IpO1xyXG4gICAgZG9uZSA9IHRydWU7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19ydW5Jbml0aWFsaXplcnModGhpc0FyZywgaW5pdGlhbGl6ZXJzLCB2YWx1ZSkge1xyXG4gICAgdmFyIHVzZVZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRpYWxpemVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhbHVlID0gdXNlVmFsdWUgPyBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnLCB2YWx1ZSkgOiBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1c2VWYWx1ZSA/IHZhbHVlIDogdm9pZCAwO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcHJvcEtleSh4KSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHggPT09IFwic3ltYm9sXCIgPyB4IDogXCJcIi5jb25jYXQoeCk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zZXRGdW5jdGlvbk5hbWUoZiwgbmFtZSwgcHJlZml4KSB7XHJcbiAgICBpZiAodHlwZW9mIG5hbWUgPT09IFwic3ltYm9sXCIpIG5hbWUgPSBuYW1lLmRlc2NyaXB0aW9uID8gXCJbXCIuY29uY2F0KG5hbWUuZGVzY3JpcHRpb24sIFwiXVwiKSA6IFwiXCI7XHJcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIFwibmFtZVwiLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHByZWZpeCA/IFwiXCIuY29uY2F0KHByZWZpeCwgXCIgXCIsIG5hbWUpIDogbmFtZSB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcclxuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XHJcbiAgICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcclxuICAgIH1cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XHJcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgb1trMl0gPSBtW2tdO1xyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xyXG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXHJcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXHJcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xyXG4gICAgcmV0dXJuIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XHJcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcclxuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcclxuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IGZhbHNlIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEluKHN0YXRlLCByZWNlaXZlcikge1xyXG4gICAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XHJcbiAgICByZXR1cm4gdHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciA9PT0gc3RhdGUgOiBzdGF0ZS5oYXMocmVjZWl2ZXIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hZGREaXNwb3NhYmxlUmVzb3VyY2UoZW52LCB2YWx1ZSwgYXN5bmMpIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdm9pZCAwKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZC5cIik7XHJcbiAgICAgICAgdmFyIGRpc3Bvc2U7XHJcbiAgICAgICAgaWYgKGFzeW5jKSB7XHJcbiAgICAgICAgICAgIGlmICghU3ltYm9sLmFzeW5jRGlzcG9zZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0Rpc3Bvc2UgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgICAgICAgICBkaXNwb3NlID0gdmFsdWVbU3ltYm9sLmFzeW5jRGlzcG9zZV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkaXNwb3NlID09PSB2b2lkIDApIHtcclxuICAgICAgICAgICAgaWYgKCFTeW1ib2wuZGlzcG9zZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5kaXNwb3NlIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgICAgICAgICAgZGlzcG9zZSA9IHZhbHVlW1N5bWJvbC5kaXNwb3NlXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiBkaXNwb3NlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3Qgbm90IGRpc3Bvc2FibGUuXCIpO1xyXG4gICAgICAgIGVudi5zdGFjay5wdXNoKHsgdmFsdWU6IHZhbHVlLCBkaXNwb3NlOiBkaXNwb3NlLCBhc3luYzogYXN5bmMgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChhc3luYykge1xyXG4gICAgICAgIGVudi5zdGFjay5wdXNoKHsgYXN5bmM6IHRydWUgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbn1cclxuXHJcbnZhciBfU3VwcHJlc3NlZEVycm9yID0gdHlwZW9mIFN1cHByZXNzZWRFcnJvciA9PT0gXCJmdW5jdGlvblwiID8gU3VwcHJlc3NlZEVycm9yIDogZnVuY3Rpb24gKGVycm9yLCBzdXBwcmVzc2VkLCBtZXNzYWdlKSB7XHJcbiAgICB2YXIgZSA9IG5ldyBFcnJvcihtZXNzYWdlKTtcclxuICAgIHJldHVybiBlLm5hbWUgPSBcIlN1cHByZXNzZWRFcnJvclwiLCBlLmVycm9yID0gZXJyb3IsIGUuc3VwcHJlc3NlZCA9IHN1cHByZXNzZWQsIGU7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kaXNwb3NlUmVzb3VyY2VzKGVudikge1xyXG4gICAgZnVuY3Rpb24gZmFpbChlKSB7XHJcbiAgICAgICAgZW52LmVycm9yID0gZW52Lmhhc0Vycm9yID8gbmV3IF9TdXBwcmVzc2VkRXJyb3IoZSwgZW52LmVycm9yLCBcIkFuIGVycm9yIHdhcyBzdXBwcmVzc2VkIGR1cmluZyBkaXNwb3NhbC5cIikgOiBlO1xyXG4gICAgICAgIGVudi5oYXNFcnJvciA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBuZXh0KCkge1xyXG4gICAgICAgIHdoaWxlIChlbnYuc3RhY2subGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHZhciByZWMgPSBlbnYuc3RhY2sucG9wKCk7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gcmVjLmRpc3Bvc2UgJiYgcmVjLmRpc3Bvc2UuY2FsbChyZWMudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlYy5hc3luYykgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpLnRoZW4obmV4dCwgZnVuY3Rpb24oZSkgeyBmYWlsKGUpOyByZXR1cm4gbmV4dCgpOyB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgZmFpbChlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZW52Lmhhc0Vycm9yKSB0aHJvdyBlbnYuZXJyb3I7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV4dCgpO1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgICBfX2V4dGVuZHM6IF9fZXh0ZW5kcyxcclxuICAgIF9fYXNzaWduOiBfX2Fzc2lnbixcclxuICAgIF9fcmVzdDogX19yZXN0LFxyXG4gICAgX19kZWNvcmF0ZTogX19kZWNvcmF0ZSxcclxuICAgIF9fcGFyYW06IF9fcGFyYW0sXHJcbiAgICBfX21ldGFkYXRhOiBfX21ldGFkYXRhLFxyXG4gICAgX19hd2FpdGVyOiBfX2F3YWl0ZXIsXHJcbiAgICBfX2dlbmVyYXRvcjogX19nZW5lcmF0b3IsXHJcbiAgICBfX2NyZWF0ZUJpbmRpbmc6IF9fY3JlYXRlQmluZGluZyxcclxuICAgIF9fZXhwb3J0U3RhcjogX19leHBvcnRTdGFyLFxyXG4gICAgX192YWx1ZXM6IF9fdmFsdWVzLFxyXG4gICAgX19yZWFkOiBfX3JlYWQsXHJcbiAgICBfX3NwcmVhZDogX19zcHJlYWQsXHJcbiAgICBfX3NwcmVhZEFycmF5czogX19zcHJlYWRBcnJheXMsXHJcbiAgICBfX3NwcmVhZEFycmF5OiBfX3NwcmVhZEFycmF5LFxyXG4gICAgX19hd2FpdDogX19hd2FpdCxcclxuICAgIF9fYXN5bmNHZW5lcmF0b3I6IF9fYXN5bmNHZW5lcmF0b3IsXHJcbiAgICBfX2FzeW5jRGVsZWdhdG9yOiBfX2FzeW5jRGVsZWdhdG9yLFxyXG4gICAgX19hc3luY1ZhbHVlczogX19hc3luY1ZhbHVlcyxcclxuICAgIF9fbWFrZVRlbXBsYXRlT2JqZWN0OiBfX21ha2VUZW1wbGF0ZU9iamVjdCxcclxuICAgIF9faW1wb3J0U3RhcjogX19pbXBvcnRTdGFyLFxyXG4gICAgX19pbXBvcnREZWZhdWx0OiBfX2ltcG9ydERlZmF1bHQsXHJcbiAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0OiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0LFxyXG4gICAgX19jbGFzc1ByaXZhdGVGaWVsZFNldDogX19jbGFzc1ByaXZhdGVGaWVsZFNldCxcclxuICAgIF9fY2xhc3NQcml2YXRlRmllbGRJbjogX19jbGFzc1ByaXZhdGVGaWVsZEluLFxyXG4gICAgX19hZGREaXNwb3NhYmxlUmVzb3VyY2U6IF9fYWRkRGlzcG9zYWJsZVJlc291cmNlLFxyXG4gICAgX19kaXNwb3NlUmVzb3VyY2VzOiBfX2Rpc3Bvc2VSZXNvdXJjZXMsXHJcbn07XHJcbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBMaXN0TGluZSwgUG9zaXRpb24sIFJvb3QgfSBmcm9tIFwiLi4vcm9vdFwiO1xuXG5leHBvcnQgY2xhc3MgTW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZExpbmUgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0ID0gdGhpcy5yb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IGN1cnNvciA9IHRoaXMucm9vdC5nZXRDdXJzb3IoKTtcbiAgICBjb25zdCBsaW5lcyA9IGxpc3QuZ2V0TGluZXNJbmZvKCk7XG4gICAgY29uc3QgbGluZU5vID0gbGluZXMuZmluZEluZGV4KChsKSA9PiB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBjdXJzb3IuY2ggPT09IGwuZnJvbS5jaCArIGxpc3QuZ2V0Q2hlY2tib3hMZW5ndGgoKSAmJlxuICAgICAgICBjdXJzb3IubGluZSA9PT0gbC5mcm9tLmxpbmVcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpZiAobGluZU5vID09PSAwKSB7XG4gICAgICB0aGlzLm1vdmVDdXJzb3JUb1ByZXZpb3VzVW5mb2xkZWRJdGVtKHJvb3QsIGN1cnNvcik7XG4gICAgfSBlbHNlIGlmIChsaW5lTm8gPiAwKSB7XG4gICAgICB0aGlzLm1vdmVDdXJzb3JUb1ByZXZpb3VzTm90ZUxpbmUocm9vdCwgbGluZXMsIGxpbmVObyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtb3ZlQ3Vyc29yVG9QcmV2aW91c05vdGVMaW5lKFxuICAgIHJvb3Q6IFJvb3QsXG4gICAgbGluZXM6IExpc3RMaW5lW10sXG4gICAgbGluZU5vOiBudW1iZXIsXG4gICkge1xuICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuXG4gICAgcm9vdC5yZXBsYWNlQ3Vyc29yKGxpbmVzW2xpbmVObyAtIDFdLnRvKTtcbiAgfVxuXG4gIHByaXZhdGUgbW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZEl0ZW0ocm9vdDogUm9vdCwgY3Vyc29yOiBQb3NpdGlvbikge1xuICAgIGNvbnN0IHByZXYgPSByb290LmdldExpc3RVbmRlckxpbmUoY3Vyc29yLmxpbmUgLSAxKTtcblxuICAgIGlmICghcHJldikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuXG4gICAgaWYgKHByZXYuaXNGb2xkZWQoKSkge1xuICAgICAgY29uc3QgZm9sZFJvb3QgPSBwcmV2LmdldFRvcEZvbGRSb290KCk7XG4gICAgICBjb25zdCBmaXJzdExpbmVFbmQgPSBmb2xkUm9vdC5nZXRMaW5lc0luZm8oKVswXS50bztcbiAgICAgIHJvb3QucmVwbGFjZUN1cnNvcihmaXJzdExpbmVFbmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByb290LnJlcGxhY2VDdXJzb3IocHJldi5nZXRMYXN0TGluZUNvbnRlbnRFbmQoKSk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBFZGl0b3IsIGVkaXRvckluZm9GaWVsZCB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQge1xuICBmb2xkRWZmZWN0LFxuICBmb2xkYWJsZSxcbiAgZm9sZGVkUmFuZ2VzLFxuICB1bmZvbGRFZmZlY3QsXG59IGZyb20gXCJAY29kZW1pcnJvci9sYW5ndWFnZVwiO1xuaW1wb3J0IHsgRWRpdG9yU3RhdGUgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivc3RhdGVcIjtcbmltcG9ydCB7IEVkaXRvclZpZXcsIHJ1blNjb3BlSGFuZGxlcnMgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuXG5leHBvcnQgY2xhc3MgTXlFZGl0b3JQb3NpdGlvbiB7XG4gIGxpbmU6IG51bWJlcjtcbiAgY2g6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIE15RWRpdG9yUmFuZ2Uge1xuICBmcm9tOiBNeUVkaXRvclBvc2l0aW9uO1xuICB0bzogTXlFZGl0b3JQb3NpdGlvbjtcbn1cblxuZXhwb3J0IGNsYXNzIE15RWRpdG9yU2VsZWN0aW9uIHtcbiAgYW5jaG9yOiBNeUVkaXRvclBvc2l0aW9uO1xuICBoZWFkOiBNeUVkaXRvclBvc2l0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWRpdG9yRnJvbVN0YXRlKHN0YXRlOiBFZGl0b3JTdGF0ZSkge1xuICBjb25zdCB7IGVkaXRvciB9ID0gc3RhdGUuZmllbGQoZWRpdG9ySW5mb0ZpZWxkKTtcblxuICBpZiAoIWVkaXRvcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBNeUVkaXRvcihlZGl0b3IpO1xufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIE9ic2lkaWFuWm9vbVBsdWdpbj86IHtcbiAgICAgIGdldFpvb21SYW5nZShlOiBFZGl0b3IpOiBNeUVkaXRvclJhbmdlO1xuICAgICAgem9vbU91dChlOiBFZGl0b3IpOiB2b2lkO1xuICAgICAgem9vbUluKGU6IEVkaXRvciwgbGluZTogbnVtYmVyKTogdm9pZDtcbiAgICAgIHJlZnJlc2hab29tPyhlOiBFZGl0b3IpOiB2b2lkO1xuICAgIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gZm9sZEluc2lkZSh2aWV3OiBFZGl0b3JWaWV3LCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpIHtcbiAgbGV0IGZvdW5kOiB7IGZyb206IG51bWJlcjsgdG86IG51bWJlciB9IHwgbnVsbCA9IG51bGw7XG4gIGZvbGRlZFJhbmdlcyh2aWV3LnN0YXRlKS5iZXR3ZWVuKGZyb20sIHRvLCAoZnJvbSwgdG8pID0+IHtcbiAgICBpZiAoIWZvdW5kIHx8IGZvdW5kLmZyb20gPiBmcm9tKSBmb3VuZCA9IHsgZnJvbSwgdG8gfTtcbiAgfSk7XG4gIHJldHVybiBmb3VuZDtcbn1cblxuZXhwb3J0IGNsYXNzIE15RWRpdG9yIHtcbiAgcHJpdmF0ZSB2aWV3OiBFZGl0b3JWaWV3O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZTogRWRpdG9yKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICB0aGlzLnZpZXcgPSAodGhpcy5lIGFzIGFueSkuY207XG4gIH1cblxuICBnZXRDdXJzb3IoKTogTXlFZGl0b3JQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZS5nZXRDdXJzb3IoKTtcbiAgfVxuXG4gIGdldExpbmUobjogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5lLmdldExpbmUobik7XG4gIH1cblxuICBsYXN0TGluZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmUubGFzdExpbmUoKTtcbiAgfVxuXG4gIGxpc3RTZWxlY3Rpb25zKCk6IE15RWRpdG9yU2VsZWN0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLmUubGlzdFNlbGVjdGlvbnMoKTtcbiAgfVxuXG4gIGdldFJhbmdlKGZyb206IE15RWRpdG9yUG9zaXRpb24sIHRvOiBNeUVkaXRvclBvc2l0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5lLmdldFJhbmdlKGZyb20sIHRvKTtcbiAgfVxuXG4gIHJlcGxhY2VSYW5nZShcbiAgICByZXBsYWNlbWVudDogc3RyaW5nLFxuICAgIGZyb206IE15RWRpdG9yUG9zaXRpb24sXG4gICAgdG86IE15RWRpdG9yUG9zaXRpb24sXG4gICk6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLmUucmVwbGFjZVJhbmdlKHJlcGxhY2VtZW50LCBmcm9tLCB0byk7XG4gIH1cblxuICBzZXRTZWxlY3Rpb25zKHNlbGVjdGlvbnM6IE15RWRpdG9yU2VsZWN0aW9uW10pOiB2b2lkIHtcbiAgICB0aGlzLmUuc2V0U2VsZWN0aW9ucyhzZWxlY3Rpb25zKTtcbiAgfVxuXG4gIHNldFZhbHVlKHRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZS5zZXRWYWx1ZSh0ZXh0KTtcbiAgfVxuXG4gIGdldFZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgb2Zmc2V0VG9Qb3Mob2Zmc2V0OiBudW1iZXIpOiBNeUVkaXRvclBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5lLm9mZnNldFRvUG9zKG9mZnNldCk7XG4gIH1cblxuICBwb3NUb09mZnNldChwb3M6IE15RWRpdG9yUG9zaXRpb24pOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmUucG9zVG9PZmZzZXQocG9zKTtcbiAgfVxuXG4gIGZvbGQobjogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgeyB2aWV3IH0gPSB0aGlzO1xuICAgIGNvbnN0IGwgPSB2aWV3LmxpbmVCbG9ja0F0KHZpZXcuc3RhdGUuZG9jLmxpbmUobiArIDEpLmZyb20pO1xuICAgIGNvbnN0IHJhbmdlID0gZm9sZGFibGUodmlldy5zdGF0ZSwgbC5mcm9tLCBsLnRvKTtcblxuICAgIGlmICghcmFuZ2UgfHwgcmFuZ2UuZnJvbSA9PT0gcmFuZ2UudG8pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2aWV3LmRpc3BhdGNoKHsgZWZmZWN0czogW2ZvbGRFZmZlY3Qub2YocmFuZ2UpXSB9KTtcbiAgfVxuXG4gIHVuZm9sZChuOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB7IHZpZXcgfSA9IHRoaXM7XG4gICAgY29uc3QgbCA9IHZpZXcubGluZUJsb2NrQXQodmlldy5zdGF0ZS5kb2MubGluZShuICsgMSkuZnJvbSk7XG4gICAgY29uc3QgcmFuZ2UgPSBmb2xkSW5zaWRlKHZpZXcsIGwuZnJvbSwgbC50byk7XG5cbiAgICBpZiAoIXJhbmdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmlldy5kaXNwYXRjaCh7IGVmZmVjdHM6IFt1bmZvbGRFZmZlY3Qub2YocmFuZ2UpXSB9KTtcbiAgfVxuXG4gIGdldEFsbEZvbGRlZExpbmVzKCk6IG51bWJlcltdIHtcbiAgICBjb25zdCBjID0gZm9sZGVkUmFuZ2VzKHRoaXMudmlldy5zdGF0ZSkuaXRlcigpO1xuICAgIGNvbnN0IHJlczogbnVtYmVyW10gPSBbXTtcbiAgICB3aGlsZSAoYy52YWx1ZSkge1xuICAgICAgcmVzLnB1c2godGhpcy5vZmZzZXRUb1BvcyhjLmZyb20pLmxpbmUpO1xuICAgICAgYy5uZXh0KCk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH1cblxuICB0cmlnZ2VyT25LZXlEb3duKGU6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBydW5TY29wZUhhbmRsZXJzKHRoaXMudmlldywgZSwgXCJlZGl0b3JcIik7XG4gIH1cblxuICBnZXRab29tUmFuZ2UoKTogTXlFZGl0b3JSYW5nZSB8IG51bGwge1xuICAgIGlmICghd2luZG93Lk9ic2lkaWFuWm9vbVBsdWdpbikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHdpbmRvdy5PYnNpZGlhblpvb21QbHVnaW4uZ2V0Wm9vbVJhbmdlKHRoaXMuZSk7XG4gIH1cblxuICB6b29tT3V0KCkge1xuICAgIGlmICghd2luZG93Lk9ic2lkaWFuWm9vbVBsdWdpbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHdpbmRvdy5PYnNpZGlhblpvb21QbHVnaW4uem9vbU91dCh0aGlzLmUpO1xuICB9XG5cbiAgem9vbUluKGxpbmU6IG51bWJlcikge1xuICAgIGlmICghd2luZG93Lk9ic2lkaWFuWm9vbVBsdWdpbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHdpbmRvdy5PYnNpZGlhblpvb21QbHVnaW4uem9vbUluKHRoaXMuZSwgbGluZSk7XG4gIH1cblxuICB0cnlSZWZyZXNoWm9vbShsaW5lOiBudW1iZXIpIHtcbiAgICBpZiAoIXdpbmRvdy5PYnNpZGlhblpvb21QbHVnaW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAod2luZG93Lk9ic2lkaWFuWm9vbVBsdWdpbi5yZWZyZXNoWm9vbSkge1xuICAgICAgd2luZG93Lk9ic2lkaWFuWm9vbVBsdWdpbi5yZWZyZXNoWm9vbSh0aGlzLmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cuT2JzaWRpYW5ab29tUGx1Z2luLnpvb21Jbih0aGlzLmUsIGxpbmUpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgRWRpdG9yVmlldyB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IE15RWRpdG9yLCBnZXRFZGl0b3JGcm9tU3RhdGUgfSBmcm9tIFwiLi4vZWRpdG9yXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayhjb25maWc6IHtcbiAgY2hlY2s/OiAoZWRpdG9yOiBNeUVkaXRvcikgPT4gYm9vbGVhbjtcbiAgcnVuOiAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHNob3VsZFVwZGF0ZTogYm9vbGVhbjtcbiAgICBzaG91bGRTdG9wUHJvcGFnYXRpb246IGJvb2xlYW47XG4gIH07XG59KSB7XG4gIGNvbnN0IGNoZWNrID0gY29uZmlnLmNoZWNrIHx8ICgoKSA9PiB0cnVlKTtcbiAgY29uc3QgeyBydW4gfSA9IGNvbmZpZztcblxuICByZXR1cm4gKHZpZXc6IEVkaXRvclZpZXcpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBlZGl0b3IgPSBnZXRFZGl0b3JGcm9tU3RhdGUodmlldy5zdGF0ZSk7XG5cbiAgICBpZiAoIWNoZWNrKGVkaXRvcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCB7IHNob3VsZFVwZGF0ZSwgc2hvdWxkU3RvcFByb3BhZ2F0aW9uIH0gPSBydW4oZWRpdG9yKTtcblxuICAgIHJldHVybiBzaG91bGRVcGRhdGUgfHwgc2hvdWxkU3RvcFByb3BhZ2F0aW9uO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgTW92ZUN1cnNvclRvUHJldmlvdXNVbmZvbGRlZExpbmUgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9Nb3ZlQ3Vyc29yVG9QcmV2aW91c1VuZm9sZGVkTGluZVwiO1xuaW1wb3J0IHsgSU1FRGV0ZWN0b3IgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FRGV0ZWN0b3JcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5pbXBvcnQgeyBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayB9IGZyb20gXCIuLi91dGlscy9jcmVhdGVLZXltYXBSdW5DYWxsYmFja1wiO1xuXG5leHBvcnQgY2xhc3MgQXJyb3dMZWZ0QW5kQ3RybEFycm93TGVmdEJlaGF2aW91ck92ZXJyaWRlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW4sXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBpbWVEZXRlY3RvcjogSU1FRGV0ZWN0b3IsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lcixcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBrZXltYXAub2YoW1xuICAgICAgICB7XG4gICAgICAgICAga2V5OiBcIkFycm93TGVmdFwiLFxuICAgICAgICAgIHJ1bjogY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soe1xuICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICBydW46IHRoaXMucnVuLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgd2luOiBcImMtQXJyb3dMZWZ0XCIsXG4gICAgICAgICAgbGludXg6IFwiYy1BcnJvd0xlZnRcIixcbiAgICAgICAgICBydW46IGNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgIGNoZWNrOiB0aGlzLmNoZWNrLFxuICAgICAgICAgICAgcnVuOiB0aGlzLnJ1bixcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIF0pLFxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2V0dGluZ3Mua2VlcEN1cnNvcldpdGhpbkNvbnRlbnQgIT09IFwibmV2ZXJcIiAmJlxuICAgICAgIXRoaXMuaW1lRGV0ZWN0b3IuaXNPcGVuZWQoKVxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBydW4gPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5wZXJmb3JtKFxuICAgICAgKHJvb3QpID0+IG5ldyBNb3ZlQ3Vyc29yVG9QcmV2aW91c1VuZm9sZGVkTGluZShyb290KSxcbiAgICAgIGVkaXRvcixcbiAgICApO1xuICB9O1xufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGNtcFBvcyhhOiBQb3NpdGlvbiwgYjogUG9zaXRpb24pIHtcbiAgcmV0dXJuIGEubGluZSAtIGIubGluZSB8fCBhLmNoIC0gYi5jaDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1heFBvcyhhOiBQb3NpdGlvbiwgYjogUG9zaXRpb24pIHtcbiAgcmV0dXJuIGNtcFBvcyhhLCBiKSA8IDAgPyBiIDogYTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1pblBvcyhhOiBQb3NpdGlvbiwgYjogUG9zaXRpb24pIHtcbiAgcmV0dXJuIGNtcFBvcyhhLCBiKSA8IDAgPyBhIDogYjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUmFuZ2VzSW50ZXJzZWN0cyhcbiAgYTogW1Bvc2l0aW9uLCBQb3NpdGlvbl0sXG4gIGI6IFtQb3NpdGlvbiwgUG9zaXRpb25dLFxuKSB7XG4gIHJldHVybiBjbXBQb3MoYVsxXSwgYlswXSkgPj0gMCAmJiBjbXBQb3MoYVswXSwgYlsxXSkgPD0gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMocm9vdDogUm9vdCkge1xuICBmdW5jdGlvbiB2aXNpdChwYXJlbnQ6IFJvb3QgfCBMaXN0KSB7XG4gICAgbGV0IGluZGV4ID0gMTtcblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgcGFyZW50LmdldENoaWxkcmVuKCkpIHtcbiAgICAgIGlmICgvXFxkK1xcLi8udGVzdChjaGlsZC5nZXRCdWxsZXQoKSkpIHtcbiAgICAgICAgY2hpbGQucmVwbGF0ZUJ1bGxldChgJHtpbmRleCsrfS5gKTtcbiAgICAgIH1cblxuICAgICAgdmlzaXQoY2hpbGQpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0KHJvb3QpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvc2l0aW9uIHtcbiAgY2g6IG51bWJlcjtcbiAgbGluZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RMaW5lIHtcbiAgdGV4dDogc3RyaW5nO1xuICBmcm9tOiBQb3NpdGlvbjtcbiAgdG86IFBvc2l0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJhbmdlIHtcbiAgYW5jaG9yOiBQb3NpdGlvbjtcbiAgaGVhZDogUG9zaXRpb247XG59XG5cbmxldCBpZFNlcSA9IDA7XG5cbmV4cG9ydCBjbGFzcyBMaXN0IHtcbiAgcHJpdmF0ZSBpZDogbnVtYmVyO1xuICBwcml2YXRlIHBhcmVudDogTGlzdCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGNoaWxkcmVuOiBMaXN0W10gPSBbXTtcbiAgcHJpdmF0ZSBub3Rlc0luZGVudDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgbGluZXM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb290OiBSb290LFxuICAgIHByaXZhdGUgaW5kZW50OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBidWxsZXQ6IHN0cmluZyxcbiAgICBwcml2YXRlIG9wdGlvbmFsQ2hlY2tib3g6IHN0cmluZyxcbiAgICBwcml2YXRlIHNwYWNlQWZ0ZXJCdWxsZXQ6IHN0cmluZyxcbiAgICBmaXJzdExpbmU6IHN0cmluZyxcbiAgICBwcml2YXRlIGZvbGRSb290OiBib29sZWFuLFxuICApIHtcbiAgICB0aGlzLmlkID0gaWRTZXErKztcbiAgICB0aGlzLmxpbmVzLnB1c2goZmlyc3RMaW5lKTtcbiAgfVxuXG4gIGdldElEKCkge1xuICAgIHJldHVybiB0aGlzLmlkO1xuICB9XG5cbiAgZ2V0Tm90ZXNJbmRlbnQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMubm90ZXNJbmRlbnQ7XG4gIH1cblxuICBzZXROb3Rlc0luZGVudChub3Rlc0luZGVudDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMubm90ZXNJbmRlbnQgIT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm90ZXMgaW5kZW50IGFscmVhZHkgcHJvdmlkZWRgKTtcbiAgICB9XG4gICAgdGhpcy5ub3Rlc0luZGVudCA9IG5vdGVzSW5kZW50O1xuICB9XG5cbiAgYWRkTGluZSh0ZXh0OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5ub3Rlc0luZGVudCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVW5hYmxlIHRvIGFkZCBsaW5lLCBub3RlcyBpbmRlbnQgc2hvdWxkIGJlIHByb3ZpZGVkIGZpcnN0YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5saW5lcy5wdXNoKHRleHQpO1xuICB9XG5cbiAgcmVwbGFjZUxpbmVzKGxpbmVzOiBzdHJpbmdbXSkge1xuICAgIGlmIChsaW5lcy5sZW5ndGggPiAxICYmIHRoaXMubm90ZXNJbmRlbnQgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFVuYWJsZSB0byBhZGQgbGluZSwgbm90ZXMgaW5kZW50IHNob3VsZCBiZSBwcm92aWRlZCBmaXJzdGAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMubGluZXMgPSBsaW5lcztcbiAgfVxuXG4gIGdldExpbmVDb3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5saW5lcy5sZW5ndGg7XG4gIH1cblxuICBnZXRSb290KCkge1xuICAgIHJldHVybiB0aGlzLnJvb3Q7XG4gIH1cblxuICBnZXRDaGlsZHJlbigpIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZHJlbi5jb25jYXQoKTtcbiAgfVxuXG4gIGdldExpbmVzSW5mbygpOiBMaXN0TGluZVtdIHtcbiAgICBjb25zdCBzdGFydExpbmUgPSB0aGlzLnJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZih0aGlzKVswXTtcblxuICAgIHJldHVybiB0aGlzLmxpbmVzLm1hcCgocm93LCBpKSA9PiB7XG4gICAgICBjb25zdCBsaW5lID0gc3RhcnRMaW5lICsgaTtcbiAgICAgIGNvbnN0IHN0YXJ0Q2ggPVxuICAgICAgICBpID09PSAwID8gdGhpcy5nZXRDb250ZW50U3RhcnRDaCgpIDogdGhpcy5ub3Rlc0luZGVudC5sZW5ndGg7XG4gICAgICBjb25zdCBlbmRDaCA9IHN0YXJ0Q2ggKyByb3cubGVuZ3RoO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0ZXh0OiByb3csXG4gICAgICAgIGZyb206IHsgbGluZSwgY2g6IHN0YXJ0Q2ggfSxcbiAgICAgICAgdG86IHsgbGluZSwgY2g6IGVuZENoIH0sXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0TGluZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmxpbmVzLmNvbmNhdCgpO1xuICB9XG5cbiAgZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkge1xuICAgIGNvbnN0IHN0YXJ0TGluZSA9IHRoaXMucm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKHRoaXMpWzBdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmU6IHN0YXJ0TGluZSxcbiAgICAgIGNoOiB0aGlzLmdldENvbnRlbnRTdGFydENoKCksXG4gICAgfTtcbiAgfVxuXG4gIGdldEZpcnN0TGluZUNvbnRlbnRTdGFydEFmdGVyQ2hlY2tib3goKSB7XG4gICAgY29uc3Qgc3RhcnRMaW5lID0gdGhpcy5yb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YodGhpcylbMF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGluZTogc3RhcnRMaW5lLFxuICAgICAgY2g6IHRoaXMuZ2V0Q29udGVudFN0YXJ0Q2goKSArIHRoaXMuZ2V0Q2hlY2tib3hMZW5ndGgoKSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0TGFzdExpbmVDb250ZW50RW5kKCkge1xuICAgIGNvbnN0IGVuZExpbmUgPSB0aGlzLnJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZih0aGlzKVsxXTtcbiAgICBjb25zdCBlbmRDaCA9XG4gICAgICB0aGlzLmxpbmVzLmxlbmd0aCA9PT0gMVxuICAgICAgICA/IHRoaXMuZ2V0Q29udGVudFN0YXJ0Q2goKSArIHRoaXMubGluZXNbMF0ubGVuZ3RoXG4gICAgICAgIDogdGhpcy5ub3Rlc0luZGVudC5sZW5ndGggKyB0aGlzLmxpbmVzW3RoaXMubGluZXMubGVuZ3RoIC0gMV0ubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmU6IGVuZExpbmUsXG4gICAgICBjaDogZW5kQ2gsXG4gICAgfTtcbiAgfVxuXG4gIGdldENvbnRlbnRFbmRJbmNsdWRpbmdDaGlsZHJlbigpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRMYXN0Q2hpbGQoKS5nZXRMYXN0TGluZUNvbnRlbnRFbmQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TGFzdENoaWxkKCkge1xuICAgIGxldCBsYXN0Q2hpbGQ6IExpc3QgPSB0aGlzO1xuXG4gICAgd2hpbGUgKCFsYXN0Q2hpbGQuaXNFbXB0eSgpKSB7XG4gICAgICBsYXN0Q2hpbGQgPSBsYXN0Q2hpbGQuZ2V0Q2hpbGRyZW4oKS5sYXN0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhc3RDaGlsZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29udGVudFN0YXJ0Q2goKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5kZW50Lmxlbmd0aCArIHRoaXMuYnVsbGV0Lmxlbmd0aCArIDE7XG4gIH1cblxuICBpc0ZvbGRlZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5mb2xkUm9vdCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGFyZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJlbnQuaXNGb2xkZWQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpc0ZvbGRSb290KCkge1xuICAgIHJldHVybiB0aGlzLmZvbGRSb290O1xuICB9XG5cbiAgZ2V0VG9wRm9sZFJvb3QoKSB7XG4gICAgbGV0IHRtcDogTGlzdCA9IHRoaXM7XG4gICAgbGV0IGZvbGRSb290OiBMaXN0IHwgbnVsbCA9IG51bGw7XG4gICAgd2hpbGUgKHRtcCkge1xuICAgICAgaWYgKHRtcC5pc0ZvbGRSb290KCkpIHtcbiAgICAgICAgZm9sZFJvb3QgPSB0bXA7XG4gICAgICB9XG4gICAgICB0bXAgPSB0bXAucGFyZW50O1xuICAgIH1cbiAgICByZXR1cm4gZm9sZFJvb3Q7XG4gIH1cblxuICBnZXRMZXZlbCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5wYXJlbnQpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnBhcmVudC5nZXRMZXZlbCgpICsgMTtcbiAgfVxuXG4gIHVuaW5kZW50Q29udGVudChmcm9tOiBudW1iZXIsIHRpbGw6IG51bWJlcikge1xuICAgIHRoaXMuaW5kZW50ID0gdGhpcy5pbmRlbnQuc2xpY2UoMCwgZnJvbSkgKyB0aGlzLmluZGVudC5zbGljZSh0aWxsKTtcbiAgICBpZiAodGhpcy5ub3Rlc0luZGVudCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5ub3Rlc0luZGVudCA9XG4gICAgICAgIHRoaXMubm90ZXNJbmRlbnQuc2xpY2UoMCwgZnJvbSkgKyB0aGlzLm5vdGVzSW5kZW50LnNsaWNlKHRpbGwpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZHJlbikge1xuICAgICAgY2hpbGQudW5pbmRlbnRDb250ZW50KGZyb20sIHRpbGwpO1xuICAgIH1cbiAgfVxuXG4gIGluZGVudENvbnRlbnQoaW5kZW50UG9zOiBudW1iZXIsIGluZGVudENoYXJzOiBzdHJpbmcpIHtcbiAgICB0aGlzLmluZGVudCA9XG4gICAgICB0aGlzLmluZGVudC5zbGljZSgwLCBpbmRlbnRQb3MpICtcbiAgICAgIGluZGVudENoYXJzICtcbiAgICAgIHRoaXMuaW5kZW50LnNsaWNlKGluZGVudFBvcyk7XG4gICAgaWYgKHRoaXMubm90ZXNJbmRlbnQgIT09IG51bGwpIHtcbiAgICAgIHRoaXMubm90ZXNJbmRlbnQgPVxuICAgICAgICB0aGlzLm5vdGVzSW5kZW50LnNsaWNlKDAsIGluZGVudFBvcykgK1xuICAgICAgICBpbmRlbnRDaGFycyArXG4gICAgICAgIHRoaXMubm90ZXNJbmRlbnQuc2xpY2UoaW5kZW50UG9zKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGRyZW4pIHtcbiAgICAgIGNoaWxkLmluZGVudENvbnRlbnQoaW5kZW50UG9zLCBpbmRlbnRDaGFycyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Rmlyc3RMaW5lSW5kZW50KCkge1xuICAgIHJldHVybiB0aGlzLmluZGVudDtcbiAgfVxuXG4gIGdldEJ1bGxldCgpIHtcbiAgICByZXR1cm4gdGhpcy5idWxsZXQ7XG4gIH1cblxuICBnZXRTcGFjZUFmdGVyQnVsbGV0KCkge1xuICAgIHJldHVybiB0aGlzLnNwYWNlQWZ0ZXJCdWxsZXQ7XG4gIH1cblxuICBnZXRDaGVja2JveExlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25hbENoZWNrYm94Lmxlbmd0aDtcbiAgfVxuXG4gIHJlcGxhdGVCdWxsZXQoYnVsbGV0OiBzdHJpbmcpIHtcbiAgICB0aGlzLmJ1bGxldCA9IGJ1bGxldDtcbiAgfVxuXG4gIGdldFBhcmVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQ7XG4gIH1cblxuICBhZGRCZWZvcmVBbGwobGlzdDogTGlzdCkge1xuICAgIHRoaXMuY2hpbGRyZW4udW5zaGlmdChsaXN0KTtcbiAgICBsaXN0LnBhcmVudCA9IHRoaXM7XG4gIH1cblxuICBhZGRBZnRlckFsbChsaXN0OiBMaXN0KSB7XG4gICAgdGhpcy5jaGlsZHJlbi5wdXNoKGxpc3QpO1xuICAgIGxpc3QucGFyZW50ID0gdGhpcztcbiAgfVxuXG4gIHJlbW92ZUNoaWxkKGxpc3Q6IExpc3QpIHtcbiAgICBjb25zdCBpID0gdGhpcy5jaGlsZHJlbi5pbmRleE9mKGxpc3QpO1xuICAgIHRoaXMuY2hpbGRyZW4uc3BsaWNlKGksIDEpO1xuICAgIGxpc3QucGFyZW50ID0gbnVsbDtcbiAgfVxuXG4gIGFkZEJlZm9yZShiZWZvcmU6IExpc3QsIGxpc3Q6IExpc3QpIHtcbiAgICBjb25zdCBpID0gdGhpcy5jaGlsZHJlbi5pbmRleE9mKGJlZm9yZSk7XG4gICAgdGhpcy5jaGlsZHJlbi5zcGxpY2UoaSwgMCwgbGlzdCk7XG4gICAgbGlzdC5wYXJlbnQgPSB0aGlzO1xuICB9XG5cbiAgYWRkQWZ0ZXIoYmVmb3JlOiBMaXN0LCBsaXN0OiBMaXN0KSB7XG4gICAgY29uc3QgaSA9IHRoaXMuY2hpbGRyZW4uaW5kZXhPZihiZWZvcmUpO1xuICAgIHRoaXMuY2hpbGRyZW4uc3BsaWNlKGkgKyAxLCAwLCBsaXN0KTtcbiAgICBsaXN0LnBhcmVudCA9IHRoaXM7XG4gIH1cblxuICBnZXRQcmV2U2libGluZ09mKGxpc3Q6IExpc3QpIHtcbiAgICBjb25zdCBpID0gdGhpcy5jaGlsZHJlbi5pbmRleE9mKGxpc3QpO1xuICAgIHJldHVybiBpID4gMCA/IHRoaXMuY2hpbGRyZW5baSAtIDFdIDogbnVsbDtcbiAgfVxuXG4gIGdldE5leHRTaWJsaW5nT2YobGlzdDogTGlzdCkge1xuICAgIGNvbnN0IGkgPSB0aGlzLmNoaWxkcmVuLmluZGV4T2YobGlzdCk7XG4gICAgcmV0dXJuIGkgPj0gMCAmJiBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGggPyB0aGlzLmNoaWxkcmVuW2kgKyAxXSA6IG51bGw7XG4gIH1cblxuICBpc0VtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLmNoaWxkcmVuLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIHByaW50KCkge1xuICAgIGxldCByZXMgPSBcIlwiO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICByZXMgKz1cbiAgICAgICAgaSA9PT0gMFxuICAgICAgICAgID8gdGhpcy5pbmRlbnQgKyB0aGlzLmJ1bGxldCArIHRoaXMuc3BhY2VBZnRlckJ1bGxldFxuICAgICAgICAgIDogdGhpcy5ub3Rlc0luZGVudDtcbiAgICAgIHJlcyArPSB0aGlzLmxpbmVzW2ldO1xuICAgICAgcmVzICs9IFwiXFxuXCI7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkcmVuKSB7XG4gICAgICByZXMgKz0gY2hpbGQucHJpbnQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgY2xvbmUobmV3Um9vdDogUm9vdCkge1xuICAgIGNvbnN0IGNsb25lID0gbmV3IExpc3QoXG4gICAgICBuZXdSb290LFxuICAgICAgdGhpcy5pbmRlbnQsXG4gICAgICB0aGlzLmJ1bGxldCxcbiAgICAgIHRoaXMub3B0aW9uYWxDaGVja2JveCxcbiAgICAgIHRoaXMuc3BhY2VBZnRlckJ1bGxldCxcbiAgICAgIFwiXCIsXG4gICAgICB0aGlzLmZvbGRSb290LFxuICAgICk7XG4gICAgY2xvbmUuaWQgPSB0aGlzLmlkO1xuICAgIGNsb25lLmxpbmVzID0gdGhpcy5saW5lcy5jb25jYXQoKTtcbiAgICBjbG9uZS5ub3Rlc0luZGVudCA9IHRoaXMubm90ZXNJbmRlbnQ7XG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkcmVuKSB7XG4gICAgICBjbG9uZS5hZGRBZnRlckFsbChjaGlsZC5jbG9uZShuZXdSb290KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsb25lO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSb290IHtcbiAgcHJpdmF0ZSByb290TGlzdCA9IG5ldyBMaXN0KHRoaXMsIFwiXCIsIFwiXCIsIFwiXCIsIFwiXCIsIFwiXCIsIGZhbHNlKTtcbiAgcHJpdmF0ZSBzZWxlY3Rpb25zOiBSYW5nZVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdGFydDogUG9zaXRpb24sXG4gICAgcHJpdmF0ZSBlbmQ6IFBvc2l0aW9uLFxuICAgIHNlbGVjdGlvbnM6IFJhbmdlW10sXG4gICkge1xuICAgIHRoaXMucmVwbGFjZVNlbGVjdGlvbnMoc2VsZWN0aW9ucyk7XG4gIH1cblxuICBnZXRSb290TGlzdCgpIHtcbiAgICByZXR1cm4gdGhpcy5yb290TGlzdDtcbiAgfVxuXG4gIGdldENvbnRlbnRSYW5nZSgpOiBbUG9zaXRpb24sIFBvc2l0aW9uXSB7XG4gICAgcmV0dXJuIFt0aGlzLmdldENvbnRlbnRTdGFydCgpLCB0aGlzLmdldENvbnRlbnRFbmQoKV07XG4gIH1cblxuICBnZXRDb250ZW50U3RhcnQoKTogUG9zaXRpb24ge1xuICAgIHJldHVybiB7IC4uLnRoaXMuc3RhcnQgfTtcbiAgfVxuXG4gIGdldENvbnRlbnRFbmQoKTogUG9zaXRpb24ge1xuICAgIHJldHVybiB7IC4uLnRoaXMuZW5kIH07XG4gIH1cblxuICBnZXRTZWxlY3Rpb25zKCk6IFJhbmdlW10ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbnMubWFwKChzKSA9PiAoe1xuICAgICAgYW5jaG9yOiB7IC4uLnMuYW5jaG9yIH0sXG4gICAgICBoZWFkOiB7IC4uLnMuaGVhZCB9LFxuICAgIH0pKTtcbiAgfVxuXG4gIGhhc1NpbmdsZUN1cnNvcigpIHtcbiAgICBpZiAoIXRoaXMuaGFzU2luZ2xlU2VsZWN0aW9uKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbnNbMF07XG5cbiAgICByZXR1cm4gKFxuICAgICAgc2VsZWN0aW9uLmFuY2hvci5saW5lID09PSBzZWxlY3Rpb24uaGVhZC5saW5lICYmXG4gICAgICBzZWxlY3Rpb24uYW5jaG9yLmNoID09PSBzZWxlY3Rpb24uaGVhZC5jaFxuICAgICk7XG4gIH1cblxuICBoYXNTaW5nbGVTZWxlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9ucy5sZW5ndGggPT09IDE7XG4gIH1cblxuICBnZXRTZWxlY3Rpb24oKSB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb25zW3RoaXMuc2VsZWN0aW9ucy5sZW5ndGggLSAxXTtcblxuICAgIGNvbnN0IGZyb20gPVxuICAgICAgc2VsZWN0aW9uLmFuY2hvci5jaCA+IHNlbGVjdGlvbi5oZWFkLmNoXG4gICAgICAgID8gc2VsZWN0aW9uLmhlYWQuY2hcbiAgICAgICAgOiBzZWxlY3Rpb24uYW5jaG9yLmNoO1xuICAgIGNvbnN0IHRvID1cbiAgICAgIHNlbGVjdGlvbi5hbmNob3IuY2ggPiBzZWxlY3Rpb24uaGVhZC5jaFxuICAgICAgICA/IHNlbGVjdGlvbi5hbmNob3IuY2hcbiAgICAgICAgOiBzZWxlY3Rpb24uaGVhZC5jaDtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zZWxlY3Rpb24sXG4gICAgICBmcm9tLFxuICAgICAgdG8sXG4gICAgfTtcbiAgfVxuXG4gIGdldEN1cnNvcigpIHtcbiAgICByZXR1cm4geyAuLi50aGlzLnNlbGVjdGlvbnNbdGhpcy5zZWxlY3Rpb25zLmxlbmd0aCAtIDFdLmhlYWQgfTtcbiAgfVxuXG4gIHJlcGxhY2VDdXJzb3IoY3Vyc29yOiBQb3NpdGlvbikge1xuICAgIHRoaXMuc2VsZWN0aW9ucyA9IFt7IGFuY2hvcjogY3Vyc29yLCBoZWFkOiBjdXJzb3IgfV07XG4gIH1cblxuICByZXBsYWNlU2VsZWN0aW9ucyhzZWxlY3Rpb25zOiBSYW5nZVtdKSB7XG4gICAgaWYgKHNlbGVjdGlvbnMubGVuZ3RoIDwgMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gY3JlYXRlIFJvb3Qgd2l0aG91dCBzZWxlY3Rpb25zYCk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0aW9ucyA9IHNlbGVjdGlvbnM7XG4gIH1cblxuICBnZXRMaXN0VW5kZXJDdXJzb3IoKTogTGlzdCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TGlzdFVuZGVyTGluZSh0aGlzLmdldEN1cnNvcigpLmxpbmUpO1xuICB9XG5cbiAgZ2V0TGlzdFVuZGVyTGluZShsaW5lOiBudW1iZXIpIHtcbiAgICBpZiAobGluZSA8IHRoaXMuc3RhcnQubGluZSB8fCBsaW5lID4gdGhpcy5lbmQubGluZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCByZXN1bHQ6IExpc3QgPSBudWxsO1xuICAgIGxldCBpbmRleDogbnVtYmVyID0gdGhpcy5zdGFydC5saW5lO1xuXG4gICAgY29uc3QgdmlzaXRBcnIgPSAobGw6IExpc3RbXSkgPT4ge1xuICAgICAgZm9yIChjb25zdCBsIG9mIGxsKSB7XG4gICAgICAgIGNvbnN0IGxpc3RGcm9tTGluZSA9IGluZGV4O1xuICAgICAgICBjb25zdCBsaXN0VGlsbExpbmUgPSBsaXN0RnJvbUxpbmUgKyBsLmdldExpbmVDb3VudCgpIC0gMTtcblxuICAgICAgICBpZiAobGluZSA+PSBsaXN0RnJvbUxpbmUgJiYgbGluZSA8PSBsaXN0VGlsbExpbmUpIHtcbiAgICAgICAgICByZXN1bHQgPSBsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGluZGV4ID0gbGlzdFRpbGxMaW5lICsgMTtcbiAgICAgICAgICB2aXNpdEFycihsLmdldENoaWxkcmVuKCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmlzaXRBcnIodGhpcy5yb290TGlzdC5nZXRDaGlsZHJlbigpKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXRDb250ZW50TGluZXNSYW5nZU9mKGxpc3Q6IExpc3QpOiBbbnVtYmVyLCBudW1iZXJdIHwgbnVsbCB7XG4gICAgbGV0IHJlc3VsdDogW251bWJlciwgbnVtYmVyXSB8IG51bGwgPSBudWxsO1xuICAgIGxldCBsaW5lOiBudW1iZXIgPSB0aGlzLnN0YXJ0LmxpbmU7XG5cbiAgICBjb25zdCB2aXNpdEFyciA9IChsbDogTGlzdFtdKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGwgb2YgbGwpIHtcbiAgICAgICAgY29uc3QgbGlzdEZyb21MaW5lID0gbGluZTtcbiAgICAgICAgY29uc3QgbGlzdFRpbGxMaW5lID0gbGlzdEZyb21MaW5lICsgbC5nZXRMaW5lQ291bnQoKSAtIDE7XG5cbiAgICAgICAgaWYgKGwgPT09IGxpc3QpIHtcbiAgICAgICAgICByZXN1bHQgPSBbbGlzdEZyb21MaW5lLCBsaXN0VGlsbExpbmVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxpbmUgPSBsaXN0VGlsbExpbmUgKyAxO1xuICAgICAgICAgIHZpc2l0QXJyKGwuZ2V0Q2hpbGRyZW4oKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVzdWx0ICE9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZpc2l0QXJyKHRoaXMucm9vdExpc3QuZ2V0Q2hpbGRyZW4oKSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZ2V0Q2hpbGRyZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMucm9vdExpc3QuZ2V0Q2hpbGRyZW4oKTtcbiAgfVxuXG4gIHByaW50KCkge1xuICAgIGxldCByZXMgPSBcIlwiO1xuXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLnJvb3RMaXN0LmdldENoaWxkcmVuKCkpIHtcbiAgICAgIHJlcyArPSBjaGlsZC5wcmludCgpO1xuICAgIH1cblxuICAgIHJldHVybiByZXMucmVwbGFjZSgvXFxuJC8sIFwiXCIpO1xuICB9XG5cbiAgY2xvbmUoKSB7XG4gICAgY29uc3QgY2xvbmUgPSBuZXcgUm9vdChcbiAgICAgIHsgLi4udGhpcy5zdGFydCB9LFxuICAgICAgeyAuLi50aGlzLmVuZCB9LFxuICAgICAgdGhpcy5nZXRTZWxlY3Rpb25zKCksXG4gICAgKTtcbiAgICBjbG9uZS5yb290TGlzdCA9IHRoaXMucm9vdExpc3QuY2xvbmUoY2xvbmUpO1xuICAgIHJldHVybiBjbG9uZTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4vT3BlcmF0aW9uXCI7XG5cbmltcG9ydCB7XG4gIExpc3QsXG4gIExpc3RMaW5lLFxuICBQb3NpdGlvbixcbiAgUm9vdCxcbiAgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyxcbn0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIERlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcbiAgICBjb25zdCBsaW5lcyA9IGxpc3QuZ2V0TGluZXNJbmZvKCk7XG5cbiAgICBjb25zdCBsaW5lTm8gPSBsaW5lcy5maW5kSW5kZXgoXG4gICAgICAobCkgPT4gY3Vyc29yLmNoID09PSBsLmZyb20uY2ggJiYgY3Vyc29yLmxpbmUgPT09IGwuZnJvbS5saW5lLFxuICAgICk7XG5cbiAgICBpZiAobGluZU5vID09PSAwKSB7XG4gICAgICB0aGlzLm1lcmdlV2l0aFByZXZpb3VzSXRlbShyb290LCBjdXJzb3IsIGxpc3QpO1xuICAgIH0gZWxzZSBpZiAobGluZU5vID4gMCkge1xuICAgICAgdGhpcy5tZXJnZU5vdGVzKHJvb3QsIGN1cnNvciwgbGlzdCwgbGluZXMsIGxpbmVObyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZU5vdGVzKFxuICAgIHJvb3Q6IFJvb3QsXG4gICAgY3Vyc29yOiBQb3NpdGlvbixcbiAgICBsaXN0OiBMaXN0LFxuICAgIGxpbmVzOiBMaXN0TGluZVtdLFxuICAgIGxpbmVObzogbnVtYmVyLFxuICApIHtcbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IHByZXZMaW5lTm8gPSBsaW5lTm8gLSAxO1xuXG4gICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgIGxpbmU6IGN1cnNvci5saW5lIC0gMSxcbiAgICAgIGNoOiBsaW5lc1twcmV2TGluZU5vXS50ZXh0Lmxlbmd0aCArIGxpbmVzW3ByZXZMaW5lTm9dLmZyb20uY2gsXG4gICAgfSk7XG5cbiAgICBsaW5lc1twcmV2TGluZU5vXS50ZXh0ICs9IGxpbmVzW2xpbmVOb10udGV4dDtcbiAgICBsaW5lcy5zcGxpY2UobGluZU5vLCAxKTtcblxuICAgIGxpc3QucmVwbGFjZUxpbmVzKGxpbmVzLm1hcCgobCkgPT4gbC50ZXh0KSk7XG4gIH1cblxuICBwcml2YXRlIG1lcmdlV2l0aFByZXZpb3VzSXRlbShyb290OiBSb290LCBjdXJzb3I6IFBvc2l0aW9uLCBsaXN0OiBMaXN0KSB7XG4gICAgaWYgKHJvb3QuZ2V0Q2hpbGRyZW4oKVswXSA9PT0gbGlzdCAmJiBsaXN0LmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uID0gdHJ1ZTtcblxuICAgIGNvbnN0IHByZXYgPSByb290LmdldExpc3RVbmRlckxpbmUoY3Vyc29yLmxpbmUgLSAxKTtcblxuICAgIGlmICghcHJldikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJvdGhBcmVFbXB0eSA9IHByZXYuaXNFbXB0eSgpICYmIGxpc3QuaXNFbXB0eSgpO1xuICAgIGNvbnN0IHByZXZJc0VtcHR5QW5kU2FtZUxldmVsID1cbiAgICAgIHByZXYuaXNFbXB0eSgpICYmICFsaXN0LmlzRW1wdHkoKSAmJiBwcmV2LmdldExldmVsKCkgPT09IGxpc3QuZ2V0TGV2ZWwoKTtcbiAgICBjb25zdCBsaXN0SXNFbXB0eUFuZFByZXZJc1BhcmVudCA9XG4gICAgICBsaXN0LmlzRW1wdHkoKSAmJiBwcmV2LmdldExldmVsKCkgPT09IGxpc3QuZ2V0TGV2ZWwoKSAtIDE7XG5cbiAgICBpZiAoYm90aEFyZUVtcHR5IHx8IHByZXZJc0VtcHR5QW5kU2FtZUxldmVsIHx8IGxpc3RJc0VtcHR5QW5kUHJldklzUGFyZW50KSB7XG4gICAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuXG4gICAgICBjb25zdCBwYXJlbnQgPSBsaXN0LmdldFBhcmVudCgpO1xuICAgICAgY29uc3QgcHJldkVuZCA9IHByZXYuZ2V0TGFzdExpbmVDb250ZW50RW5kKCk7XG5cbiAgICAgIGlmICghcHJldi5nZXROb3Rlc0luZGVudCgpICYmIGxpc3QuZ2V0Tm90ZXNJbmRlbnQoKSkge1xuICAgICAgICBwcmV2LnNldE5vdGVzSW5kZW50KFxuICAgICAgICAgIHByZXYuZ2V0Rmlyc3RMaW5lSW5kZW50KCkgK1xuICAgICAgICAgICAgbGlzdC5nZXROb3Rlc0luZGVudCgpLnNsaWNlKGxpc3QuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoKSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgb2xkTGluZXMgPSBwcmV2LmdldExpbmVzKCk7XG4gICAgICBjb25zdCBuZXdMaW5lcyA9IGxpc3QuZ2V0TGluZXMoKTtcbiAgICAgIG9sZExpbmVzW29sZExpbmVzLmxlbmd0aCAtIDFdICs9IG5ld0xpbmVzWzBdO1xuICAgICAgY29uc3QgcmVzdWx0TGluZXMgPSBvbGRMaW5lcy5jb25jYXQobmV3TGluZXMuc2xpY2UoMSkpO1xuXG4gICAgICBwcmV2LnJlcGxhY2VMaW5lcyhyZXN1bHRMaW5lcyk7XG4gICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQobGlzdCk7XG5cbiAgICAgIGZvciAoY29uc3QgYyBvZiBsaXN0LmdldENoaWxkcmVuKCkpIHtcbiAgICAgICAgbGlzdC5yZW1vdmVDaGlsZChjKTtcbiAgICAgICAgcHJldi5hZGRBZnRlckFsbChjKTtcbiAgICAgIH1cblxuICAgICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHByZXZFbmQpO1xuXG4gICAgICByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzKHJvb3QpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgRGVsZXRlVGlsbFByZXZpb3VzTGluZUNvbnRlbnRFbmQgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9EZWxldGVUaWxsUHJldmlvdXNMaW5lQ29udGVudEVuZFwiO1xuaW1wb3J0IHsgSU1FRGV0ZWN0b3IgfSBmcm9tIFwiLi4vc2VydmljZXMvSU1FRGV0ZWN0b3JcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5pbXBvcnQgeyBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayB9IGZyb20gXCIuLi91dGlscy9jcmVhdGVLZXltYXBSdW5DYWxsYmFja1wiO1xuXG5leHBvcnQgY2xhc3MgQmFja3NwYWNlQmVoYXZpb3VyT3ZlcnJpZGUgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncyxcbiAgICBwcml2YXRlIGltZURldGVjdG9yOiBJTUVEZXRlY3RvcixcbiAgICBwcml2YXRlIG9wZXJhdGlvblBlcmZvcm1lcjogT3BlcmF0aW9uUGVyZm9ybWVyLFxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihcbiAgICAgIGtleW1hcC5vZihbXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6IFwiQmFja3NwYWNlXCIsXG4gICAgICAgICAgcnVuOiBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayh7XG4gICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdKSxcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cblxuICBwcml2YXRlIGNoZWNrID0gKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnNldHRpbmdzLmtlZXBDdXJzb3JXaXRoaW5Db250ZW50ICE9PSBcIm5ldmVyXCIgJiZcbiAgICAgICF0aGlzLmltZURldGVjdG9yLmlzT3BlbmVkKClcbiAgICApO1xuICB9O1xuXG4gIHByaXZhdGUgcnVuID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIucGVyZm9ybShcbiAgICAgIChyb290KSA9PiBuZXcgRGVsZXRlVGlsbFByZXZpb3VzTGluZUNvbnRlbnRFbmQocm9vdCksXG4gICAgICBlZGl0b3IsXG4gICAgKTtcbiAgfTtcbn1cbiIsImltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE9ic2lkaWFuU2V0dGluZ3MgfSBmcm9tIFwiLi4vc2VydmljZXMvT2JzaWRpYW5TZXR0aW5nc1wiO1xuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tIFwiLi4vc2VydmljZXMvU2V0dGluZ3NcIjtcblxuY29uc3QgQkVUVEVSX0xJU1RTX0JPRFlfQ0xBU1MgPSBcIm91dGxpbmVyLXBsdWdpbi1iZXR0ZXItbGlzdHNcIjtcblxuZXhwb3J0IGNsYXNzIEJldHRlckxpc3RzU3R5bGVzIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIHByaXZhdGUgdXBkYXRlQm9keUNsYXNzSW50ZXJ2YWw6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncyxcbiAgICBwcml2YXRlIG9ic2lkaWFuU2V0dGluZ3M6IE9ic2lkaWFuU2V0dGluZ3MsXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMudXBkYXRlQm9keUNsYXNzKCk7XG4gICAgdGhpcy51cGRhdGVCb2R5Q2xhc3NJbnRlcnZhbCA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUJvZHlDbGFzcygpO1xuICAgIH0sIDEwMDApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy51cGRhdGVCb2R5Q2xhc3NJbnRlcnZhbCk7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKEJFVFRFUl9MSVNUU19CT0RZX0NMQVNTKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQm9keUNsYXNzID0gKCkgPT4ge1xuICAgIGNvbnN0IHNob3VsZEV4aXN0cyA9XG4gICAgICB0aGlzLm9ic2lkaWFuU2V0dGluZ3MuaXNEZWZhdWx0VGhlbWVFbmFibGVkKCkgJiZcbiAgICAgIHRoaXMuc2V0dGluZ3MuYmV0dGVyTGlzdHNTdHlsZXM7XG4gICAgY29uc3QgZXhpc3RzID0gZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoQkVUVEVSX0xJU1RTX0JPRFlfQ0xBU1MpO1xuXG4gICAgaWYgKHNob3VsZEV4aXN0cyAmJiAhZXhpc3RzKSB7XG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoQkVUVEVSX0xJU1RTX0JPRFlfQ0xBU1MpO1xuICAgIH1cblxuICAgIGlmICghc2hvdWxkRXhpc3RzICYmIGV4aXN0cykge1xuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKEJFVFRFUl9MSVNUU19CT0RZX0NMQVNTKTtcbiAgICB9XG4gIH07XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCwgbWF4UG9zLCBtaW5Qb3MgfSBmcm9tIFwiLi4vcm9vdFwiO1xuXG5leHBvcnQgY2xhc3MgU2VsZWN0QWxsQ29udGVudCBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgdXBkYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdDogUm9vdCkge31cblxuICBzaG91bGRTdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcFByb3BhZ2F0aW9uO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZWQ7XG4gIH1cblxuICBwZXJmb3JtKCkge1xuICAgIGNvbnN0IHsgcm9vdCB9ID0gdGhpcztcblxuICAgIGlmICghcm9vdC5oYXNTaW5nbGVTZWxlY3Rpb24oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHJvb3QuZ2V0U2VsZWN0aW9ucygpWzBdO1xuICAgIGNvbnN0IFtyb290U3RhcnQsIHJvb3RFbmRdID0gcm9vdC5nZXRDb250ZW50UmFuZ2UoKTtcblxuICAgIGNvbnN0IHNlbGVjdGlvbkZyb20gPSBtaW5Qb3Moc2VsZWN0aW9uLmFuY2hvciwgc2VsZWN0aW9uLmhlYWQpO1xuICAgIGNvbnN0IHNlbGVjdGlvblRvID0gbWF4UG9zKHNlbGVjdGlvbi5hbmNob3IsIHNlbGVjdGlvbi5oZWFkKTtcblxuICAgIGlmIChcbiAgICAgIHNlbGVjdGlvbkZyb20ubGluZSA8IHJvb3RTdGFydC5saW5lIHx8XG4gICAgICBzZWxlY3Rpb25Uby5saW5lID4gcm9vdEVuZC5saW5lXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgc2VsZWN0aW9uRnJvbS5saW5lID09PSByb290U3RhcnQubGluZSAmJlxuICAgICAgc2VsZWN0aW9uRnJvbS5jaCA9PT0gcm9vdFN0YXJ0LmNoICYmXG4gICAgICBzZWxlY3Rpb25Uby5saW5lID09PSByb290RW5kLmxpbmUgJiZcbiAgICAgIHNlbGVjdGlvblRvLmNoID09PSByb290RW5kLmNoXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgY29udGVudFN0YXJ0ID0gbGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnRBZnRlckNoZWNrYm94KCk7XG4gICAgY29uc3QgY29udGVudEVuZCA9IGxpc3QuZ2V0TGFzdExpbmVDb250ZW50RW5kKCk7XG4gICAgY29uc3QgbGlzdFVuZGVyU2VsZWN0aW9uRnJvbSA9IHJvb3QuZ2V0TGlzdFVuZGVyTGluZShzZWxlY3Rpb25Gcm9tLmxpbmUpO1xuICAgIGNvbnN0IGxpc3RTdGFydCA9XG4gICAgICBsaXN0VW5kZXJTZWxlY3Rpb25Gcm9tLmdldEZpcnN0TGluZUNvbnRlbnRTdGFydEFmdGVyQ2hlY2tib3goKTtcbiAgICBjb25zdCBsaXN0RW5kID0gbGlzdFVuZGVyU2VsZWN0aW9uRnJvbS5nZXRDb250ZW50RW5kSW5jbHVkaW5nQ2hpbGRyZW4oKTtcblxuICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuXG4gICAgaWYgKFxuICAgICAgc2VsZWN0aW9uRnJvbS5saW5lID09PSBjb250ZW50U3RhcnQubGluZSAmJlxuICAgICAgc2VsZWN0aW9uRnJvbS5jaCA9PT0gY29udGVudFN0YXJ0LmNoICYmXG4gICAgICBzZWxlY3Rpb25Uby5saW5lID09PSBjb250ZW50RW5kLmxpbmUgJiZcbiAgICAgIHNlbGVjdGlvblRvLmNoID09PSBjb250ZW50RW5kLmNoXG4gICAgKSB7XG4gICAgICBpZiAobGlzdC5nZXRDaGlsZHJlbigpLmxlbmd0aCkge1xuICAgICAgICAvLyBzZWxlY3Qgc3ViIGxpc3RzXG4gICAgICAgIHJvb3QucmVwbGFjZVNlbGVjdGlvbnMoW1xuICAgICAgICAgIHsgYW5jaG9yOiBjb250ZW50U3RhcnQsIGhlYWQ6IGxpc3QuZ2V0Q29udGVudEVuZEluY2x1ZGluZ0NoaWxkcmVuKCkgfSxcbiAgICAgICAgXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBzZWxlY3Qgd2hvbGUgbGlzdFxuICAgICAgICByb290LnJlcGxhY2VTZWxlY3Rpb25zKFt7IGFuY2hvcjogcm9vdFN0YXJ0LCBoZWFkOiByb290RW5kIH1dKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgbGlzdFN0YXJ0LmNoID09IHNlbGVjdGlvbkZyb20uY2ggJiZcbiAgICAgIGxpc3RFbmQubGluZSA9PSBzZWxlY3Rpb25Uby5saW5lICYmXG4gICAgICBsaXN0RW5kLmNoID09IHNlbGVjdGlvblRvLmNoXG4gICAgKSB7XG4gICAgICAvLyBzZWxlY3Qgd2hvbGUgbGlzdFxuICAgICAgcm9vdC5yZXBsYWNlU2VsZWN0aW9ucyhbeyBhbmNob3I6IHJvb3RTdGFydCwgaGVhZDogcm9vdEVuZCB9XSk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIChzZWxlY3Rpb25Gcm9tLmxpbmUgPiBjb250ZW50U3RhcnQubGluZSB8fFxuICAgICAgICAoc2VsZWN0aW9uRnJvbS5saW5lID09IGNvbnRlbnRTdGFydC5saW5lICYmXG4gICAgICAgICAgc2VsZWN0aW9uRnJvbS5jaCA+PSBjb250ZW50U3RhcnQuY2gpKSAmJlxuICAgICAgKHNlbGVjdGlvblRvLmxpbmUgPCBjb250ZW50RW5kLmxpbmUgfHxcbiAgICAgICAgKHNlbGVjdGlvblRvLmxpbmUgPT0gY29udGVudEVuZC5saW5lICYmXG4gICAgICAgICAgc2VsZWN0aW9uVG8uY2ggPD0gY29udGVudEVuZC5jaCkpXG4gICAgKSB7XG4gICAgICAvLyBzZWxlY3Qgd2hvbGUgbGluZVxuICAgICAgcm9vdC5yZXBsYWNlU2VsZWN0aW9ucyhbeyBhbmNob3I6IGNvbnRlbnRTdGFydCwgaGVhZDogY29udGVudEVuZCB9XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uID0gZmFsc2U7XG4gICAgICB0aGlzLnVwZGF0ZWQgPSBmYWxzZTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgU2VsZWN0QWxsQ29udGVudCB9IGZyb20gXCIuLi9vcGVyYXRpb25zL1NlbGVjdEFsbENvbnRlbnRcIjtcbmltcG9ydCB7IElNRURldGVjdG9yIH0gZnJvbSBcIi4uL3NlcnZpY2VzL0lNRURldGVjdG9yXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25QZXJmb3JtZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvT3BlcmF0aW9uUGVyZm9ybWVyXCI7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuaW1wb3J0IHsgY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2sgfSBmcm9tIFwiLi4vdXRpbHMvY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2tcIjtcblxuZXhwb3J0IGNsYXNzIEN0cmxBQW5kQ21kQUJlaGF2aW91ck92ZXJyaWRlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW4sXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBpbWVEZXRlY3RvcjogSU1FRGV0ZWN0b3IsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lcixcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBrZXltYXAub2YoW1xuICAgICAgICB7XG4gICAgICAgICAga2V5OiBcImMtYVwiLFxuICAgICAgICAgIG1hYzogXCJtLWFcIixcbiAgICAgICAgICBydW46IGNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgIGNoZWNrOiB0aGlzLmNoZWNrLFxuICAgICAgICAgICAgcnVuOiB0aGlzLnJ1bixcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIF0pLFxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2V0dGluZ3Mub3ZlcnJpZGVTZWxlY3RBbGxCZWhhdmlvdXIgJiYgIXRoaXMuaW1lRGV0ZWN0b3IuaXNPcGVuZWQoKVxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBydW4gPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5wZXJmb3JtKFxuICAgICAgKHJvb3QpID0+IG5ldyBTZWxlY3RBbGxDb250ZW50KHJvb3QpLFxuICAgICAgZWRpdG9yLFxuICAgICk7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBEZWxldGVUaWxsUHJldmlvdXNMaW5lQ29udGVudEVuZCB9IGZyb20gXCIuL0RlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kXCI7XG5pbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVUaWxsTmV4dExpbmVDb250ZW50U3RhcnQgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIGRlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kOiBEZWxldGVUaWxsUHJldmlvdXNMaW5lQ29udGVudEVuZDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHtcbiAgICB0aGlzLmRlbGV0ZVRpbGxQcmV2aW91c0xpbmVDb250ZW50RW5kID1cbiAgICAgIG5ldyBEZWxldGVUaWxsUHJldmlvdXNMaW5lQ29udGVudEVuZChyb290KTtcbiAgfVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5kZWxldGVUaWxsUHJldmlvdXNMaW5lQ29udGVudEVuZC5zaG91bGRTdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5kZWxldGVUaWxsUHJldmlvdXNMaW5lQ29udGVudEVuZC5zaG91bGRVcGRhdGUoKTtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcbiAgICBjb25zdCBsaW5lcyA9IGxpc3QuZ2V0TGluZXNJbmZvKCk7XG5cbiAgICBjb25zdCBsaW5lTm8gPSBsaW5lcy5maW5kSW5kZXgoXG4gICAgICAobCkgPT4gY3Vyc29yLmNoID09PSBsLnRvLmNoICYmIGN1cnNvci5saW5lID09PSBsLnRvLmxpbmUsXG4gICAgKTtcblxuICAgIGlmIChsaW5lTm8gPT09IGxpbmVzLmxlbmd0aCAtIDEpIHtcbiAgICAgIGNvbnN0IG5leHRMaW5lID0gbGluZXNbbGluZU5vXS50by5saW5lICsgMTtcbiAgICAgIGNvbnN0IG5leHRMaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJMaW5lKG5leHRMaW5lKTtcbiAgICAgIGlmICghbmV4dExpc3QpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcm9vdC5yZXBsYWNlQ3Vyc29yKG5leHRMaXN0LmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpKTtcbiAgICAgIHRoaXMuZGVsZXRlVGlsbFByZXZpb3VzTGluZUNvbnRlbnRFbmQucGVyZm9ybSgpO1xuICAgIH0gZWxzZSBpZiAobGluZU5vID49IDApIHtcbiAgICAgIHJvb3QucmVwbGFjZUN1cnNvcihsaW5lc1tsaW5lTm8gKyAxXS5mcm9tKTtcbiAgICAgIHRoaXMuZGVsZXRlVGlsbFByZXZpb3VzTGluZUNvbnRlbnRFbmQucGVyZm9ybSgpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgRGVsZXRlVGlsbE5leHRMaW5lQ29udGVudFN0YXJ0IH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvRGVsZXRlVGlsbE5leHRMaW5lQ29udGVudFN0YXJ0XCI7XG5pbXBvcnQgeyBJTUVEZXRlY3RvciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9JTUVEZXRlY3RvclwiO1xuaW1wb3J0IHsgT3BlcmF0aW9uUGVyZm9ybWVyIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09wZXJhdGlvblBlcmZvcm1lclwiO1xuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tIFwiLi4vc2VydmljZXMvU2V0dGluZ3NcIjtcbmltcG9ydCB7IGNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrIH0gZnJvbSBcIi4uL3V0aWxzL2NyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrXCI7XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVCZWhhdmlvdXJPdmVycmlkZSBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsdWdpbjogUGx1Z2luLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzLFxuICAgIHByaXZhdGUgaW1lRGV0ZWN0b3I6IElNRURldGVjdG9yLFxuICAgIHByaXZhdGUgb3BlcmF0aW9uUGVyZm9ybWVyOiBPcGVyYXRpb25QZXJmb3JtZXIsXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFxuICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAge1xuICAgICAgICAgIGtleTogXCJEZWxldGVcIixcbiAgICAgICAgICBydW46IGNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgIGNoZWNrOiB0aGlzLmNoZWNrLFxuICAgICAgICAgICAgcnVuOiB0aGlzLnJ1bixcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIF0pLFxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2V0dGluZ3Mua2VlcEN1cnNvcldpdGhpbkNvbnRlbnQgIT09IFwibmV2ZXJcIiAmJlxuICAgICAgIXRoaXMuaW1lRGV0ZWN0b3IuaXNPcGVuZWQoKVxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBydW4gPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5wZXJmb3JtKFxuICAgICAgKHJvb3QpID0+IG5ldyBEZWxldGVUaWxsTmV4dExpbmVDb250ZW50U3RhcnQocm9vdCksXG4gICAgICBlZGl0b3IsXG4gICAgKTtcbiAgfTtcbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBMaXN0LCBSb290LCByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzIH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuaW50ZXJmYWNlIEN1cnNvckFuY2hvciB7XG4gIGN1cnNvckxpc3Q6IExpc3Q7XG4gIGxpbmVEaWZmOiBudW1iZXI7XG4gIGNoRGlmZjogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgTW92ZUxpc3RUb0RpZmZlcmVudFBvc2l0aW9uIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb290OiBSb290LFxuICAgIHByaXZhdGUgbGlzdFRvTW92ZTogTGlzdCxcbiAgICBwcml2YXRlIHBsYWNlVG9Nb3ZlOiBMaXN0LFxuICAgIHByaXZhdGUgd2hlcmVUb01vdmU6IFwiYmVmb3JlXCIgfCBcImFmdGVyXCIgfCBcImluc2lkZVwiLFxuICAgIHByaXZhdGUgZGVmYXVsdEluZGVudENoYXJzOiBzdHJpbmcsXG4gICkge31cblxuICBzaG91bGRTdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcFByb3BhZ2F0aW9uO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZWQ7XG4gIH1cblxuICBwZXJmb3JtKCkge1xuICAgIGlmICh0aGlzLmxpc3RUb01vdmUgPT09IHRoaXMucGxhY2VUb01vdmUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IGN1cnNvckFuY2hvciA9IHRoaXMuY2FsY3VsYXRlQ3Vyc29yQW5jaG9yKCk7XG4gICAgdGhpcy5tb3ZlTGlzdCgpO1xuICAgIHRoaXMuY2hhbmdlSW5kZW50KCk7XG4gICAgdGhpcy5yZXN0b3JlQ3Vyc29yKGN1cnNvckFuY2hvcik7XG4gICAgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyh0aGlzLnJvb3QpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVDdXJzb3JBbmNob3IoKTogQ3Vyc29yQW5jaG9yIHtcbiAgICBjb25zdCBjdXJzb3JMaW5lID0gdGhpcy5yb290LmdldEN1cnNvcigpLmxpbmU7XG5cbiAgICBjb25zdCBsaW5lcyA9IFtcbiAgICAgIHRoaXMubGlzdFRvTW92ZS5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lLFxuICAgICAgdGhpcy5saXN0VG9Nb3ZlLmdldExhc3RMaW5lQ29udGVudEVuZCgpLmxpbmUsXG4gICAgICB0aGlzLnBsYWNlVG9Nb3ZlLmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpLmxpbmUsXG4gICAgICB0aGlzLnBsYWNlVG9Nb3ZlLmdldExhc3RMaW5lQ29udGVudEVuZCgpLmxpbmUsXG4gICAgXTtcbiAgICBjb25zdCBsaXN0U3RhcnRMaW5lID0gTWF0aC5taW4oLi4ubGluZXMpO1xuICAgIGNvbnN0IGxpc3RFbmRMaW5lID0gTWF0aC5tYXgoLi4ubGluZXMpO1xuXG4gICAgaWYgKGN1cnNvckxpbmUgPCBsaXN0U3RhcnRMaW5lIHx8IGN1cnNvckxpbmUgPiBsaXN0RW5kTGluZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgY3Vyc29yID0gdGhpcy5yb290LmdldEN1cnNvcigpO1xuICAgIGNvbnN0IGN1cnNvckxpc3QgPSB0aGlzLnJvb3QuZ2V0TGlzdFVuZGVyTGluZShjdXJzb3IubGluZSk7XG4gICAgY29uc3QgY3Vyc29yTGlzdFN0YXJ0ID0gY3Vyc29yTGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKTtcbiAgICBjb25zdCBsaW5lRGlmZiA9IGN1cnNvci5saW5lIC0gY3Vyc29yTGlzdFN0YXJ0LmxpbmU7XG4gICAgY29uc3QgY2hEaWZmID0gY3Vyc29yLmNoIC0gY3Vyc29yTGlzdFN0YXJ0LmNoO1xuXG4gICAgcmV0dXJuIHsgY3Vyc29yTGlzdCwgbGluZURpZmYsIGNoRGlmZiB9O1xuICB9XG5cbiAgcHJpdmF0ZSBtb3ZlTGlzdCgpIHtcbiAgICB0aGlzLmxpc3RUb01vdmUuZ2V0UGFyZW50KCkucmVtb3ZlQ2hpbGQodGhpcy5saXN0VG9Nb3ZlKTtcblxuICAgIHN3aXRjaCAodGhpcy53aGVyZVRvTW92ZSkge1xuICAgICAgY2FzZSBcImJlZm9yZVwiOlxuICAgICAgICB0aGlzLnBsYWNlVG9Nb3ZlXG4gICAgICAgICAgLmdldFBhcmVudCgpXG4gICAgICAgICAgLmFkZEJlZm9yZSh0aGlzLnBsYWNlVG9Nb3ZlLCB0aGlzLmxpc3RUb01vdmUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcImFmdGVyXCI6XG4gICAgICAgIHRoaXMucGxhY2VUb01vdmVcbiAgICAgICAgICAuZ2V0UGFyZW50KClcbiAgICAgICAgICAuYWRkQWZ0ZXIodGhpcy5wbGFjZVRvTW92ZSwgdGhpcy5saXN0VG9Nb3ZlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJpbnNpZGVcIjpcbiAgICAgICAgdGhpcy5wbGFjZVRvTW92ZS5hZGRCZWZvcmVBbGwodGhpcy5saXN0VG9Nb3ZlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VJbmRlbnQoKSB7XG4gICAgY29uc3Qgb2xkSW5kZW50ID0gdGhpcy5saXN0VG9Nb3ZlLmdldEZpcnN0TGluZUluZGVudCgpO1xuICAgIGNvbnN0IG5ld0luZGVudCA9XG4gICAgICB0aGlzLndoZXJlVG9Nb3ZlID09PSBcImluc2lkZVwiXG4gICAgICAgID8gdGhpcy5wbGFjZVRvTW92ZS5nZXRGaXJzdExpbmVJbmRlbnQoKSArIHRoaXMuZGVmYXVsdEluZGVudENoYXJzXG4gICAgICAgIDogdGhpcy5wbGFjZVRvTW92ZS5nZXRGaXJzdExpbmVJbmRlbnQoKTtcbiAgICB0aGlzLmxpc3RUb01vdmUudW5pbmRlbnRDb250ZW50KDAsIG9sZEluZGVudC5sZW5ndGgpO1xuICAgIHRoaXMubGlzdFRvTW92ZS5pbmRlbnRDb250ZW50KDAsIG5ld0luZGVudCk7XG4gIH1cblxuICBwcml2YXRlIHJlc3RvcmVDdXJzb3IoY3Vyc29yQW5jaG9yOiBDdXJzb3JBbmNob3IpIHtcbiAgICBpZiAoY3Vyc29yQW5jaG9yKSB7XG4gICAgICBjb25zdCBjdXJzb3JMaXN0U3RhcnQgPVxuICAgICAgICBjdXJzb3JBbmNob3IuY3Vyc29yTGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKTtcblxuICAgICAgdGhpcy5yb290LnJlcGxhY2VDdXJzb3Ioe1xuICAgICAgICBsaW5lOiBjdXJzb3JMaXN0U3RhcnQubGluZSArIGN1cnNvckFuY2hvci5saW5lRGlmZixcbiAgICAgICAgY2g6IGN1cnNvckxpc3RTdGFydC5jaCArIGN1cnNvckFuY2hvci5jaERpZmYsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gV2hlbiB5b3UgbW92ZSBhIGxpc3QsIHRoZSBzY3JlZW4gc2Nyb2xscyB0byB0aGUgY3Vyc29yLlxuICAgICAgLy8gSXQgaXMgYmV0dGVyIHRvIG1vdmUgdGhlIGN1cnNvciBpbnRvIHRoZSB2aWV3cG9ydCB0aGFuIGxldCB0aGUgc2NyZWVuIHNjcm9sbC5cbiAgICAgIHRoaXMucm9vdC5yZXBsYWNlQ3Vyc29yKHRoaXMubGlzdFRvTW92ZS5nZXRMYXN0TGluZUNvbnRlbnRFbmQoKSk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBOb3RpY2UsIFBsYXRmb3JtLCBQbHVnaW4gfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgZ2V0SW5kZW50VW5pdCwgaW5kZW50U3RyaW5nIH0gZnJvbSBcIkBjb2RlbWlycm9yL2xhbmd1YWdlXCI7XG5pbXBvcnQgeyBTdGF0ZUVmZmVjdCwgU3RhdGVGaWVsZCB9IGZyb20gXCJAY29kZW1pcnJvci9zdGF0ZVwiO1xuaW1wb3J0IHsgRGVjb3JhdGlvbiwgRGVjb3JhdGlvblNldCwgRWRpdG9yVmlldyB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yLCBnZXRFZGl0b3JGcm9tU3RhdGUgfSBmcm9tIFwiLi4vZWRpdG9yXCI7XG5pbXBvcnQgeyBNb3ZlTGlzdFRvRGlmZmVyZW50UG9zaXRpb24gfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9Nb3ZlTGlzdFRvRGlmZmVyZW50UG9zaXRpb25cIjtcbmltcG9ydCB7IExpc3QsIFJvb3QsIGNtcFBvcyB9IGZyb20gXCIuLi9yb290XCI7XG5pbXBvcnQgeyBPYnNpZGlhblNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2V0dGluZ3NcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9QYXJzZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5cbmNvbnN0IEJPRFlfQ0xBU1MgPSBcIm91dGxpbmVyLXBsdWdpbi1kbmRcIjtcblxuZXhwb3J0IGNsYXNzIERyYWdBbmREcm9wIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIHByaXZhdGUgZHJvcFpvbmU6IEhUTUxEaXZFbGVtZW50O1xuICBwcml2YXRlIGRyb3Bab25lUGFkZGluZzogSFRNTERpdkVsZW1lbnQ7XG4gIHByaXZhdGUgcHJlU3RhcnQ6IERyYWdBbmREcm9wUHJlU3RhcnRTdGF0ZSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHN0YXRlOiBEcmFnQW5kRHJvcFN0YXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncyxcbiAgICBwcml2YXRlIG9iaXNpZGlhbjogT2JzaWRpYW5TZXR0aW5ncyxcbiAgICBwcml2YXRlIHBhcnNlcjogUGFyc2VyLFxuICAgIHByaXZhdGUgb3BlcmF0aW9uUGVyZm9ybWVyOiBPcGVyYXRpb25QZXJmb3JtZXIsXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKFtcbiAgICAgIGRyYWdnaW5nTGluZXNTdGF0ZUZpZWxkLFxuICAgICAgZHJvcHBpbmdMaW5lc1N0YXRlRmllbGQsXG4gICAgXSk7XG4gICAgdGhpcy5lbmFibGVGZWF0dXJlVG9nZ2xlKCk7XG4gICAgdGhpcy5jcmVhdGVEcm9wWm9uZSgpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHtcbiAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXJzKCk7XG4gICAgdGhpcy5yZW1vdmVEcm9wWm9uZSgpO1xuICAgIHRoaXMuZGlzYWJsZUZlYXR1cmVUb2dnbGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW5hYmxlRmVhdHVyZVRvZ2dsZSgpIHtcbiAgICB0aGlzLnNldHRpbmdzLm9uQ2hhbmdlKHRoaXMuaGFuZGxlU2V0dGluZ3NDaGFuZ2UpO1xuICAgIHRoaXMuaGFuZGxlU2V0dGluZ3NDaGFuZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzYWJsZUZlYXR1cmVUb2dnbGUoKSB7XG4gICAgdGhpcy5zZXR0aW5ncy5yZW1vdmVDYWxsYmFjayh0aGlzLmhhbmRsZVNldHRpbmdzQ2hhbmdlKTtcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoQk9EWV9DTEFTUyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZURyb3Bab25lKCkge1xuICAgIHRoaXMuZHJvcFpvbmVQYWRkaW5nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICB0aGlzLmRyb3Bab25lUGFkZGluZy5jbGFzc0xpc3QuYWRkKFwib3V0bGluZXItcGx1Z2luLWRyb3Atem9uZS1wYWRkaW5nXCIpO1xuICAgIHRoaXMuZHJvcFpvbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgIHRoaXMuZHJvcFpvbmUuY2xhc3NMaXN0LmFkZChcIm91dGxpbmVyLXBsdWdpbi1kcm9wLXpvbmVcIik7XG4gICAgdGhpcy5kcm9wWm9uZS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gICAgdGhpcy5kcm9wWm9uZS5hcHBlbmRDaGlsZCh0aGlzLmRyb3Bab25lUGFkZGluZyk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLmRyb3Bab25lKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlRHJvcFpvbmUoKSB7XG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0aGlzLmRyb3Bab25lKTtcbiAgICB0aGlzLmRyb3Bab25lUGFkZGluZyA9IG51bGw7XG4gICAgdGhpcy5kcm9wWm9uZSA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGFkZEV2ZW50TGlzdGVuZXJzKCkge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgdGhpcy5oYW5kbGVNb3VzZURvd24sIHtcbiAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgfSk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLmhhbmRsZU1vdXNlTW92ZSk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgdGhpcy5oYW5kbGVNb3VzZVVwKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCB0aGlzLmhhbmRsZUtleURvd24pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVFdmVudExpc3RlbmVycygpIHtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIHRoaXMuaGFuZGxlTW91c2VEb3duLCB7XG4gICAgICBjYXB0dXJlOiB0cnVlLFxuICAgIH0pO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5oYW5kbGVNb3VzZU1vdmUpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHRoaXMuaGFuZGxlTW91c2VVcCk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgdGhpcy5oYW5kbGVLZXlEb3duKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU2V0dGluZ3NDaGFuZ2UgPSAoKSA9PiB7XG4gICAgaWYgKCFpc0ZlYXR1cmVTdXBwb3J0ZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNldHRpbmdzLmRyYWdBbmREcm9wKSB7XG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoQk9EWV9DTEFTUyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShCT0RZX0NMQVNTKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBoYW5kbGVNb3VzZURvd24gPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIGlmIChcbiAgICAgICFpc0ZlYXR1cmVTdXBwb3J0ZWQoKSB8fFxuICAgICAgIXRoaXMuc2V0dGluZ3MuZHJhZ0FuZERyb3AgfHxcbiAgICAgICFpc0NsaWNrT25CdWxsZXQoZSlcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2aWV3ID0gZ2V0RWRpdG9yVmlld0Zyb21IVE1MRWxlbWVudChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCk7XG4gICAgaWYgKCF2aWV3KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICB0aGlzLnByZVN0YXJ0ID0ge1xuICAgICAgeDogZS54LFxuICAgICAgeTogZS55LFxuICAgICAgdmlldyxcbiAgICB9O1xuICB9O1xuXG4gIHByaXZhdGUgaGFuZGxlTW91c2VNb3ZlID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAodGhpcy5wcmVTdGFydCkge1xuICAgICAgdGhpcy5zdGFydERyYWdnaW5nKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0YXRlKSB7XG4gICAgICB0aGlzLmRldGVjdEFuZERyYXdEcm9wWm9uZShlLngsIGUueSk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgaGFuZGxlTW91c2VVcCA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5wcmVTdGFydCkge1xuICAgICAgdGhpcy5wcmVTdGFydCA9IG51bGw7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0YXRlKSB7XG4gICAgICB0aGlzLnN0b3BEcmFnZ2luZygpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIGhhbmRsZUtleURvd24gPSAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIGlmICh0aGlzLnN0YXRlICYmIGUuY29kZSA9PT0gXCJFc2NhcGVcIikge1xuICAgICAgdGhpcy5jYW5jZWxEcmFnZ2luZygpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHN0YXJ0RHJhZ2dpbmcoKSB7XG4gICAgY29uc3QgeyB4LCB5LCB2aWV3IH0gPSB0aGlzLnByZVN0YXJ0O1xuICAgIHRoaXMucHJlU3RhcnQgPSBudWxsO1xuXG4gICAgY29uc3QgZWRpdG9yID0gZ2V0RWRpdG9yRnJvbVN0YXRlKHZpZXcuc3RhdGUpO1xuICAgIGNvbnN0IHBvcyA9IGVkaXRvci5vZmZzZXRUb1Bvcyh2aWV3LnBvc0F0Q29vcmRzKHsgeCwgeSB9KSk7XG4gICAgY29uc3Qgcm9vdCA9IHRoaXMucGFyc2VyLnBhcnNlKGVkaXRvciwgcG9zKTtcbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJMaW5lKHBvcy5saW5lKTtcbiAgICBjb25zdCBzdGF0ZSA9IG5ldyBEcmFnQW5kRHJvcFN0YXRlKHZpZXcsIGVkaXRvciwgcm9vdCwgbGlzdCk7XG5cbiAgICBpZiAoIXN0YXRlLmhhc0Ryb3BWYXJpYW50cygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZSA9IHN0YXRlO1xuICAgIHRoaXMuaGlnaGxpZ2h0RHJhZ2dpbmdMaW5lcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXRlY3RBbmREcmF3RHJvcFpvbmUoeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcbiAgICB0aGlzLnN0YXRlLmNhbGN1bGF0ZU5lYXJlc3REcm9wVmFyaWFudCh4LCB5KTtcbiAgICB0aGlzLmRyYXdEcm9wWm9uZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5jZWxEcmFnZ2luZygpIHtcbiAgICB0aGlzLnN0YXRlLmRyb3BWYXJpYW50ID0gbnVsbDtcbiAgICB0aGlzLnN0b3BEcmFnZ2luZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9wRHJhZ2dpbmcoKSB7XG4gICAgdGhpcy51bmhpZ2h0bGlnaHREcmFnZ2luZ0xpbmVzKCk7XG4gICAgdGhpcy5oaWRlRHJvcFpvbmUoKTtcbiAgICB0aGlzLmFwcGx5Q2hhbmdlcygpO1xuICAgIHRoaXMuc3RhdGUgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUNoYW5nZXMoKSB7XG4gICAgaWYgKCF0aGlzLnN0YXRlLmRyb3BWYXJpYW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBzdGF0ZSB9ID0gdGhpcztcbiAgICBjb25zdCB7IGRyb3BWYXJpYW50LCBlZGl0b3IsIHJvb3QsIGxpc3QgfSA9IHN0YXRlO1xuXG4gICAgY29uc3QgbmV3Um9vdCA9IHRoaXMucGFyc2VyLnBhcnNlKGVkaXRvciwgcm9vdC5nZXRDb250ZW50U3RhcnQoKSk7XG4gICAgaWYgKCFpc1NhbWVSb290cyhyb290LCBuZXdSb290KSkge1xuICAgICAgbmV3IE5vdGljZShcbiAgICAgICAgYFRoZSBpdGVtIGNhbm5vdCBiZSBtb3ZlZC4gVGhlIHBhZ2UgY29udGVudCBjaGFuZ2VkIGR1cmluZyB0aGUgbW92ZS5gLFxuICAgICAgICA1MDAwLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5ldmFsKFxuICAgICAgcm9vdCxcbiAgICAgIG5ldyBNb3ZlTGlzdFRvRGlmZmVyZW50UG9zaXRpb24oXG4gICAgICAgIHJvb3QsXG4gICAgICAgIGxpc3QsXG4gICAgICAgIGRyb3BWYXJpYW50LnBsYWNlVG9Nb3ZlLFxuICAgICAgICBkcm9wVmFyaWFudC53aGVyZVRvTW92ZSxcbiAgICAgICAgdGhpcy5vYmlzaWRpYW4uZ2V0RGVmYXVsdEluZGVudENoYXJzKCksXG4gICAgICApLFxuICAgICAgZWRpdG9yLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhpZ2hsaWdodERyYWdnaW5nTGluZXMoKSB7XG4gICAgY29uc3QgeyBzdGF0ZSB9ID0gdGhpcztcbiAgICBjb25zdCB7IGxpc3QsIGVkaXRvciwgdmlldyB9ID0gc3RhdGU7XG5cbiAgICBjb25zdCBsaW5lcyA9IFtdO1xuICAgIGNvbnN0IGZyb21MaW5lID0gbGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lO1xuICAgIGNvbnN0IHRpbGxMaW5lID0gbGlzdC5nZXRDb250ZW50RW5kSW5jbHVkaW5nQ2hpbGRyZW4oKS5saW5lO1xuICAgIGZvciAobGV0IGkgPSBmcm9tTGluZTsgaSA8PSB0aWxsTGluZTsgaSsrKSB7XG4gICAgICBsaW5lcy5wdXNoKGVkaXRvci5wb3NUb09mZnNldCh7IGxpbmU6IGksIGNoOiAwIH0pKTtcbiAgICB9XG4gICAgdmlldy5kaXNwYXRjaCh7XG4gICAgICBlZmZlY3RzOiBbZG5kU3RhcnRlZC5vZihsaW5lcyldLFxuICAgIH0pO1xuXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwib3V0bGluZXItcGx1Z2luLWRyYWdnaW5nXCIpO1xuICB9XG5cbiAgcHJpdmF0ZSB1bmhpZ2h0bGlnaHREcmFnZ2luZ0xpbmVzKCkge1xuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShcIm91dGxpbmVyLXBsdWdpbi1kcmFnZ2luZ1wiKTtcblxuICAgIHRoaXMuc3RhdGUudmlldy5kaXNwYXRjaCh7XG4gICAgICBlZmZlY3RzOiBbZG5kRW5kZWQub2YoKV0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRyYXdEcm9wWm9uZSgpIHtcbiAgICBjb25zdCB7IHN0YXRlIH0gPSB0aGlzO1xuICAgIGNvbnN0IHsgdmlldywgZWRpdG9yLCBkcm9wVmFyaWFudCB9ID0gc3RhdGU7XG5cbiAgICBjb25zdCBuZXdQYXJlbnQgPVxuICAgICAgZHJvcFZhcmlhbnQud2hlcmVUb01vdmUgPT09IFwiaW5zaWRlXCJcbiAgICAgICAgPyBkcm9wVmFyaWFudC5wbGFjZVRvTW92ZVxuICAgICAgICA6IGRyb3BWYXJpYW50LnBsYWNlVG9Nb3ZlLmdldFBhcmVudCgpO1xuICAgIGNvbnN0IG5ld1BhcmVudElzUm9vdExpc3QgPSAhbmV3UGFyZW50LmdldFBhcmVudCgpO1xuXG4gICAge1xuICAgICAgY29uc3Qgd2lkdGggPSBNYXRoLnJvdW5kKFxuICAgICAgICB2aWV3LmNvbnRlbnRET00ub2Zmc2V0V2lkdGggLVxuICAgICAgICAgIChkcm9wVmFyaWFudC5sZWZ0IC0gdGhpcy5zdGF0ZS5sZWZ0UGFkZGluZyksXG4gICAgICApO1xuXG4gICAgICB0aGlzLmRyb3Bab25lLnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XG4gICAgICB0aGlzLmRyb3Bab25lLnN0eWxlLnRvcCA9IGRyb3BWYXJpYW50LnRvcCArIFwicHhcIjtcbiAgICAgIHRoaXMuZHJvcFpvbmUuc3R5bGUubGVmdCA9IGRyb3BWYXJpYW50LmxlZnQgKyBcInB4XCI7XG4gICAgICB0aGlzLmRyb3Bab25lLnN0eWxlLndpZHRoID0gd2lkdGggKyBcInB4XCI7XG4gICAgfVxuXG4gICAge1xuICAgICAgY29uc3QgbGV2ZWwgPSBuZXdQYXJlbnQuZ2V0TGV2ZWwoKTtcbiAgICAgIGNvbnN0IGluZGVudFdpZHRoID0gdGhpcy5zdGF0ZS50YWJXaWR0aDtcbiAgICAgIGNvbnN0IHdpZHRoID0gaW5kZW50V2lkdGggKiBsZXZlbDtcbiAgICAgIGNvbnN0IGRhc2hQYWRkaW5nID0gMztcbiAgICAgIGNvbnN0IGRhc2hXaWR0aCA9IGluZGVudFdpZHRoIC0gZGFzaFBhZGRpbmc7XG4gICAgICBjb25zdCBjb2xvciA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICAgICAgXCItLWNvbG9yLWFjY2VudFwiLFxuICAgICAgKTtcblxuICAgICAgdGhpcy5kcm9wWm9uZVBhZGRpbmcuc3R5bGUud2lkdGggPSBgJHt3aWR0aH1weGA7XG4gICAgICB0aGlzLmRyb3Bab25lUGFkZGluZy5zdHlsZS5tYXJnaW5MZWZ0ID0gYC0ke3dpZHRofXB4YDtcbiAgICAgIHRoaXMuZHJvcFpvbmVQYWRkaW5nLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmclMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAke3dpZHRofSUyMDQlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUzQ2xpbmUlMjB4MSUzRCUyMjAlMjIlMjB5MSUzRCUyMjAlMjIlMjB4MiUzRCUyMiR7d2lkdGh9JTIyJTIweTIlM0QlMjIwJTIyJTIwc3Ryb2tlJTNEJTIyJHtjb2xvcn0lMjIlMjBzdHJva2Utd2lkdGglM0QlMjI4JTIyJTIwc3Ryb2tlLWRhc2hhcnJheSUzRCUyMiR7ZGFzaFdpZHRofSUyMCR7ZGFzaFBhZGRpbmd9JTIyJTJGJTNFJTNDJTJGc3ZnJTNFJylgO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUudmlldy5kaXNwYXRjaCh7XG4gICAgICBlZmZlY3RzOiBbXG4gICAgICAgIGRuZE1vdmVkLm9mKFxuICAgICAgICAgIG5ld1BhcmVudElzUm9vdExpc3RcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiBlZGl0b3IucG9zVG9PZmZzZXQoe1xuICAgICAgICAgICAgICAgIGxpbmU6IG5ld1BhcmVudC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lLFxuICAgICAgICAgICAgICAgIGNoOiAwLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgKSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhpZGVEcm9wWm9uZSgpIHtcbiAgICB0aGlzLmRyb3Bab25lLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgfVxufVxuXG5pbnRlcmZhY2UgRHJvcFZhcmlhbnQge1xuICBsaW5lOiBudW1iZXI7XG4gIGxldmVsOiBudW1iZXI7XG4gIGxlZnQ6IG51bWJlcjtcbiAgdG9wOiBudW1iZXI7XG4gIHBsYWNlVG9Nb3ZlOiBMaXN0O1xuICB3aGVyZVRvTW92ZTogXCJhZnRlclwiIHwgXCJiZWZvcmVcIiB8IFwiaW5zaWRlXCI7XG59XG5cbmludGVyZmFjZSBEcmFnQW5kRHJvcFByZVN0YXJ0U3RhdGUge1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbiAgdmlldzogRWRpdG9yVmlldztcbn1cblxuY2xhc3MgRHJhZ0FuZERyb3BTdGF0ZSB7XG4gIHByaXZhdGUgZHJvcFZhcmlhbnRzOiBNYXA8c3RyaW5nLCBEcm9wVmFyaWFudD4gPSBuZXcgTWFwKCk7XG4gIHB1YmxpYyBkcm9wVmFyaWFudDogRHJvcFZhcmlhbnQgPSBudWxsO1xuICBwdWJsaWMgbGVmdFBhZGRpbmcgPSAwO1xuICBwdWJsaWMgdGFiV2lkdGggPSAwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSB2aWV3OiBFZGl0b3JWaWV3LFxuICAgIHB1YmxpYyByZWFkb25seSBlZGl0b3I6IE15RWRpdG9yLFxuICAgIHB1YmxpYyByZWFkb25seSByb290OiBSb290LFxuICAgIHB1YmxpYyByZWFkb25seSBsaXN0OiBMaXN0LFxuICApIHtcbiAgICB0aGlzLmNvbGxlY3REcm9wVmFyaWFudHMoKTtcbiAgICB0aGlzLmNhbGN1bGF0ZUxlZnRQYWRkaW5nKCk7XG4gICAgdGhpcy5jYWxjdWxhdGVUYWJXaWR0aCgpO1xuICB9XG5cbiAgZ2V0RHJvcFZhcmlhbnRzKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZHJvcFZhcmlhbnRzLnZhbHVlcygpKTtcbiAgfVxuXG4gIGhhc0Ryb3BWYXJpYW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5kcm9wVmFyaWFudHMuc2l6ZSA+IDA7XG4gIH1cblxuICBjYWxjdWxhdGVOZWFyZXN0RHJvcFZhcmlhbnQoeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcbiAgICBjb25zdCB7IHZpZXcsIGVkaXRvciB9ID0gdGhpcztcblxuICAgIGNvbnN0IGRyb3BWYXJpYW50cyA9IHRoaXMuZ2V0RHJvcFZhcmlhbnRzKCk7XG5cbiAgICBmb3IgKGNvbnN0IHYgb2YgZHJvcFZhcmlhbnRzKSB7XG4gICAgICBjb25zdCB7IHBsYWNlVG9Nb3ZlIH0gPSB2O1xuXG4gICAgICB2LmxlZnQgPSB0aGlzLmxlZnRQYWRkaW5nICsgKHYubGV2ZWwgLSAxKSAqIHRoaXMudGFiV2lkdGg7XG5cbiAgICAgIGNvbnN0IHBvc2l0aW9uQWZ0ZXJMaXN0ID1cbiAgICAgICAgdi53aGVyZVRvTW92ZSA9PT0gXCJhZnRlclwiIHx8IHYud2hlcmVUb01vdmUgPT09IFwiaW5zaWRlXCI7XG4gICAgICBjb25zdCBsaW5lID0gcG9zaXRpb25BZnRlckxpc3RcbiAgICAgICAgPyBwbGFjZVRvTW92ZS5nZXRDb250ZW50RW5kSW5jbHVkaW5nQ2hpbGRyZW4oKS5saW5lXG4gICAgICAgIDogcGxhY2VUb01vdmUuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCkubGluZTtcbiAgICAgIGNvbnN0IGxpbmVQb3MgPSBlZGl0b3IucG9zVG9PZmZzZXQoe1xuICAgICAgICBsaW5lLFxuICAgICAgICBjaDogMCxcbiAgICAgIH0pO1xuXG4gICAgICB2LnRvcCA9IHZpZXcuY29vcmRzQXRQb3MobGluZVBvcywgLTEpLnRvcDtcblxuICAgICAgaWYgKHBvc2l0aW9uQWZ0ZXJMaXN0KSB7XG4gICAgICAgIHYudG9wICs9IHZpZXcubGluZUJsb2NrQXQobGluZVBvcykuaGVpZ2h0O1xuICAgICAgfVxuXG4gICAgICAvLyBCZXR0ZXIgdmVydGljYWwgYWxpZ25tZW50XG4gICAgICB2LnRvcCAtPSA4O1xuICAgIH1cblxuICAgIGNvbnN0IG5lYXJlc3RMaW5lVG9wID0gZHJvcFZhcmlhbnRzXG4gICAgICAuc29ydCgoYSwgYikgPT4gTWF0aC5hYnMoeSAtIGEudG9wKSAtIE1hdGguYWJzKHkgLSBiLnRvcCkpXG4gICAgICAuZmlyc3QoKS50b3A7XG5cbiAgICBjb25zdCB2YXJpYW5zT25OZWFyZXN0TGluZSA9IGRyb3BWYXJpYW50cy5maWx0ZXIoXG4gICAgICAodikgPT4gTWF0aC5hYnModi50b3AgLSBuZWFyZXN0TGluZVRvcCkgPD0gNCxcbiAgICApO1xuXG4gICAgdGhpcy5kcm9wVmFyaWFudCA9IHZhcmlhbnNPbk5lYXJlc3RMaW5lXG4gICAgICAuc29ydCgoYSwgYikgPT4gTWF0aC5hYnMoeCAtIGEubGVmdCkgLSBNYXRoLmFicyh4IC0gYi5sZWZ0KSlcbiAgICAgIC5maXJzdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGREcm9wVmFyaWFudCh2OiBEcm9wVmFyaWFudCkge1xuICAgIHRoaXMuZHJvcFZhcmlhbnRzLnNldChgJHt2LmxpbmV9ICR7di5sZXZlbH1gLCB2KTtcbiAgfVxuXG4gIHByaXZhdGUgY29sbGVjdERyb3BWYXJpYW50cygpIHtcbiAgICBjb25zdCB2aXNpdCA9IChsaXN0czogTGlzdFtdKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IHBsYWNlVG9Nb3ZlIG9mIGxpc3RzKSB7XG4gICAgICAgIGNvbnN0IGxpbmVCZWZvcmUgPSBwbGFjZVRvTW92ZS5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lO1xuICAgICAgICBjb25zdCBsaW5lQWZ0ZXIgPSBwbGFjZVRvTW92ZS5nZXRDb250ZW50RW5kSW5jbHVkaW5nQ2hpbGRyZW4oKS5saW5lICsgMTtcblxuICAgICAgICBjb25zdCBsZXZlbCA9IHBsYWNlVG9Nb3ZlLmdldExldmVsKCk7XG5cbiAgICAgICAgdGhpcy5hZGREcm9wVmFyaWFudCh7XG4gICAgICAgICAgbGluZTogbGluZUJlZm9yZSxcbiAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICBwbGFjZVRvTW92ZSxcbiAgICAgICAgICB3aGVyZVRvTW92ZTogXCJiZWZvcmVcIixcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWRkRHJvcFZhcmlhbnQoe1xuICAgICAgICAgIGxpbmU6IGxpbmVBZnRlcixcbiAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICBwbGFjZVRvTW92ZSxcbiAgICAgICAgICB3aGVyZVRvTW92ZTogXCJhZnRlclwiLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocGxhY2VUb01vdmUgPT09IHRoaXMubGlzdCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBsYWNlVG9Nb3ZlLmlzRW1wdHkoKSkge1xuICAgICAgICAgIHRoaXMuYWRkRHJvcFZhcmlhbnQoe1xuICAgICAgICAgICAgbGluZTogbGluZUFmdGVyLFxuICAgICAgICAgICAgbGV2ZWw6IGxldmVsICsgMSxcbiAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICBwbGFjZVRvTW92ZSxcbiAgICAgICAgICAgIHdoZXJlVG9Nb3ZlOiBcImluc2lkZVwiLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZpc2l0KHBsYWNlVG9Nb3ZlLmdldENoaWxkcmVuKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZpc2l0KHRoaXMucm9vdC5nZXRDaGlsZHJlbigpKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlTGVmdFBhZGRpbmcoKSB7XG4gICAgdGhpcy5sZWZ0UGFkZGluZyA9IHRoaXMudmlldy5jb29yZHNBdFBvcygwLCAtMSkubGVmdDtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlVGFiV2lkdGgoKSB7XG4gICAgY29uc3QgeyB2aWV3IH0gPSB0aGlzO1xuXG4gICAgY29uc3Qgc2luZ2xlSW5kZW50ID0gaW5kZW50U3RyaW5nKHZpZXcuc3RhdGUsIGdldEluZGVudFVuaXQodmlldy5zdGF0ZSkpO1xuXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdmlldy5zdGF0ZS5kb2MubGluZXM7IGkrKykge1xuICAgICAgY29uc3QgbGluZSA9IHZpZXcuc3RhdGUuZG9jLmxpbmUoaSk7XG5cbiAgICAgIGlmIChsaW5lLnRleHQuc3RhcnRzV2l0aChzaW5nbGVJbmRlbnQpKSB7XG4gICAgICAgIGNvbnN0IGEgPSB2aWV3LmNvb3Jkc0F0UG9zKGxpbmUuZnJvbSwgLTEpO1xuICAgICAgICBjb25zdCBiID0gdmlldy5jb29yZHNBdFBvcyhsaW5lLmZyb20gKyBzaW5nbGVJbmRlbnQubGVuZ3RoLCAtMSk7XG4gICAgICAgIHRoaXMudGFiV2lkdGggPSBiLmxlZnQgLSBhLmxlZnQ7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnRhYldpZHRoID0gdmlldy5kZWZhdWx0Q2hhcmFjdGVyV2lkdGggKiBnZXRJbmRlbnRVbml0KHZpZXcuc3RhdGUpO1xuICB9XG59XG5cbmNvbnN0IGRuZFN0YXJ0ZWQgPSBTdGF0ZUVmZmVjdC5kZWZpbmU8bnVtYmVyW10+KHtcbiAgbWFwOiAobGluZXMsIGNoYW5nZSkgPT4gbGluZXMubWFwKChsKSA9PiBjaGFuZ2UubWFwUG9zKGwpKSxcbn0pO1xuXG5jb25zdCBkbmRNb3ZlZCA9IFN0YXRlRWZmZWN0LmRlZmluZTxudW1iZXIgfCBudWxsPih7XG4gIG1hcDogKGxpbmUsIGNoYW5nZSkgPT4gKGxpbmUgIT09IG51bGwgPyBjaGFuZ2UubWFwUG9zKGxpbmUpIDogbGluZSksXG59KTtcblxuY29uc3QgZG5kRW5kZWQgPSBTdGF0ZUVmZmVjdC5kZWZpbmU8dm9pZD4oKTtcblxuY29uc3QgZHJhZ2dpbmdMaW5lRGVjb3JhdGlvbiA9IERlY29yYXRpb24ubGluZSh7XG4gIGNsYXNzOiBcIm91dGxpbmVyLXBsdWdpbi1kcmFnZ2luZy1saW5lXCIsXG59KTtcblxuY29uc3QgZHJvcHBpbmdMaW5lRGVjb3JhdGlvbiA9IERlY29yYXRpb24ubGluZSh7XG4gIGNsYXNzOiBcIm91dGxpbmVyLXBsdWdpbi1kcm9wcGluZy1saW5lXCIsXG59KTtcblxuY29uc3QgZHJhZ2dpbmdMaW5lc1N0YXRlRmllbGQgPSBTdGF0ZUZpZWxkLmRlZmluZTxEZWNvcmF0aW9uU2V0Pih7XG4gIGNyZWF0ZTogKCkgPT4gRGVjb3JhdGlvbi5ub25lLFxuXG4gIHVwZGF0ZTogKGRuZFN0YXRlLCB0cikgPT4ge1xuICAgIGRuZFN0YXRlID0gZG5kU3RhdGUubWFwKHRyLmNoYW5nZXMpO1xuXG4gICAgZm9yIChjb25zdCBlIG9mIHRyLmVmZmVjdHMpIHtcbiAgICAgIGlmIChlLmlzKGRuZFN0YXJ0ZWQpKSB7XG4gICAgICAgIGRuZFN0YXRlID0gZG5kU3RhdGUudXBkYXRlKHtcbiAgICAgICAgICBhZGQ6IGUudmFsdWUubWFwKChsKSA9PiBkcmFnZ2luZ0xpbmVEZWNvcmF0aW9uLnJhbmdlKGwsIGwpKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChlLmlzKGRuZEVuZGVkKSkge1xuICAgICAgICBkbmRTdGF0ZSA9IERlY29yYXRpb24ubm9uZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZG5kU3RhdGU7XG4gIH0sXG5cbiAgcHJvdmlkZTogKGYpID0+IEVkaXRvclZpZXcuZGVjb3JhdGlvbnMuZnJvbShmKSxcbn0pO1xuXG5jb25zdCBkcm9wcGluZ0xpbmVzU3RhdGVGaWVsZCA9IFN0YXRlRmllbGQuZGVmaW5lPERlY29yYXRpb25TZXQ+KHtcbiAgY3JlYXRlOiAoKSA9PiBEZWNvcmF0aW9uLm5vbmUsXG5cbiAgdXBkYXRlOiAoZG5kRHJvcHBpbmdTdGF0ZSwgdHIpID0+IHtcbiAgICBkbmREcm9wcGluZ1N0YXRlID0gZG5kRHJvcHBpbmdTdGF0ZS5tYXAodHIuY2hhbmdlcyk7XG5cbiAgICBmb3IgKGNvbnN0IGUgb2YgdHIuZWZmZWN0cykge1xuICAgICAgaWYgKGUuaXMoZG5kTW92ZWQpKSB7XG4gICAgICAgIGRuZERyb3BwaW5nU3RhdGUgPVxuICAgICAgICAgIGUudmFsdWUgPT09IG51bGxcbiAgICAgICAgICAgID8gRGVjb3JhdGlvbi5ub25lXG4gICAgICAgICAgICA6IERlY29yYXRpb24uc2V0KGRyb3BwaW5nTGluZURlY29yYXRpb24ucmFuZ2UoZS52YWx1ZSwgZS52YWx1ZSkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZS5pcyhkbmRFbmRlZCkpIHtcbiAgICAgICAgZG5kRHJvcHBpbmdTdGF0ZSA9IERlY29yYXRpb24ubm9uZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZG5kRHJvcHBpbmdTdGF0ZTtcbiAgfSxcblxuICBwcm92aWRlOiAoZikgPT4gRWRpdG9yVmlldy5kZWNvcmF0aW9ucy5mcm9tKGYpLFxufSk7XG5cbmZ1bmN0aW9uIGdldEVkaXRvclZpZXdGcm9tSFRNTEVsZW1lbnQoZTogSFRNTEVsZW1lbnQpIHtcbiAgd2hpbGUgKGUgJiYgIWUuY2xhc3NMaXN0LmNvbnRhaW5zKFwiY20tZWRpdG9yXCIpKSB7XG4gICAgZSA9IGUucGFyZW50RWxlbWVudDtcbiAgfVxuXG4gIGlmICghZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIEVkaXRvclZpZXcuZmluZEZyb21ET00oZSk7XG59XG5cbmZ1bmN0aW9uIGlzQ2xpY2tPbkJ1bGxldChlOiBNb3VzZUV2ZW50KSB7XG4gIGxldCBlbCA9IGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuXG4gIHdoaWxlIChlbCkge1xuICAgIGlmIChcbiAgICAgIGVsLmNsYXNzTGlzdC5jb250YWlucyhcImNtLWZvcm1hdHRpbmctbGlzdFwiKSB8fFxuICAgICAgZWwuY2xhc3NMaXN0LmNvbnRhaW5zKFwiY20tZm9sZC1pbmRpY2F0b3JcIikgfHxcbiAgICAgIGVsLmNsYXNzTGlzdC5jb250YWlucyhcInRhc2stbGlzdC1pdGVtLWNoZWNrYm94XCIpXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBlbCA9IGVsLnBhcmVudEVsZW1lbnQ7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGlzU2FtZVJvb3RzKGE6IFJvb3QsIGI6IFJvb3QpIHtcbiAgY29uc3QgW2FTdGFydCwgYUVuZF0gPSBhLmdldENvbnRlbnRSYW5nZSgpO1xuICBjb25zdCBbYlN0YXJ0LCBiRW5kXSA9IGIuZ2V0Q29udGVudFJhbmdlKCk7XG5cbiAgaWYgKGNtcFBvcyhhU3RhcnQsIGJTdGFydCkgIT09IDAgfHwgY21wUG9zKGFFbmQsIGJFbmQpICE9PSAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGEucHJpbnQoKSA9PT0gYi5wcmludCgpO1xufVxuXG5mdW5jdGlvbiBpc0ZlYXR1cmVTdXBwb3J0ZWQoKSB7XG4gIHJldHVybiBQbGF0Zm9ybS5pc0Rlc2t0b3A7XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBLZWVwQ3Vyc29yT3V0c2lkZUZvbGRlZExpbmVzIGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGlmICghbGlzdC5pc0ZvbGRlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZm9sZFJvb3QgPSBsaXN0LmdldFRvcEZvbGRSb290KCk7XG4gICAgY29uc3QgZmlyc3RMaW5lRW5kID0gZm9sZFJvb3QuZ2V0TGluZXNJbmZvKClbMF0udG87XG5cbiAgICBpZiAoY3Vyc29yLmxpbmUgPiBmaXJzdExpbmVFbmQubGluZSkge1xuICAgICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uID0gdHJ1ZTtcbiAgICAgIHJvb3QucmVwbGFjZUN1cnNvcihmaXJzdExpbmVFbmQpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4vT3BlcmF0aW9uXCI7XG5cbmltcG9ydCB7IFJvb3QgfSBmcm9tIFwiLi4vcm9vdFwiO1xuXG5leHBvcnQgY2xhc3MgS2VlcEN1cnNvcldpdGhpbkxpc3RDb250ZW50IGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBjb250ZW50U3RhcnQgPSBsaXN0LmdldEZpcnN0TGluZUNvbnRlbnRTdGFydEFmdGVyQ2hlY2tib3goKTtcbiAgICBjb25zdCBsaW5lUHJlZml4ID1cbiAgICAgIGNvbnRlbnRTdGFydC5saW5lID09PSBjdXJzb3IubGluZVxuICAgICAgICA/IGNvbnRlbnRTdGFydC5jaFxuICAgICAgICA6IGxpc3QuZ2V0Tm90ZXNJbmRlbnQoKS5sZW5ndGg7XG5cbiAgICBpZiAoY3Vyc29yLmNoIDwgbGluZVByZWZpeCkge1xuICAgICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uID0gdHJ1ZTtcbiAgICAgIHJvb3QucmVwbGFjZUN1cnNvcih7XG4gICAgICAgIGxpbmU6IGN1cnNvci5saW5lLFxuICAgICAgICBjaDogbGluZVByZWZpeCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IEVkaXRvclN0YXRlLCBUcmFuc2FjdGlvbiB9IGZyb20gXCJAY29kZW1pcnJvci9zdGF0ZVwiO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vRmVhdHVyZVwiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciwgZ2V0RWRpdG9yRnJvbVN0YXRlIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgS2VlcEN1cnNvck91dHNpZGVGb2xkZWRMaW5lcyB9IGZyb20gXCIuLi9vcGVyYXRpb25zL0tlZXBDdXJzb3JPdXRzaWRlRm9sZGVkTGluZXNcIjtcbmltcG9ydCB7IEtlZXBDdXJzb3JXaXRoaW5MaXN0Q29udGVudCB9IGZyb20gXCIuLi9vcGVyYXRpb25zL0tlZXBDdXJzb3JXaXRoaW5MaXN0Q29udGVudFwiO1xuaW1wb3J0IHsgT3BlcmF0aW9uUGVyZm9ybWVyIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09wZXJhdGlvblBlcmZvcm1lclwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1BhcnNlclwiO1xuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tIFwiLi4vc2VydmljZXMvU2V0dGluZ3NcIjtcblxuZXhwb3J0IGNsYXNzIEVkaXRvclNlbGVjdGlvbnNCZWhhdmlvdXJPdmVycmlkZSBpbXBsZW1lbnRzIEZlYXR1cmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsdWdpbjogUGx1Z2luLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzLFxuICAgIHByaXZhdGUgcGFyc2VyOiBQYXJzZXIsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lcixcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBFZGl0b3JTdGF0ZS50cmFuc2FjdGlvbkV4dGVuZGVyLm9mKHRoaXMudHJhbnNhY3Rpb25FeHRlbmRlciksXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHt9XG5cbiAgcHJpdmF0ZSB0cmFuc2FjdGlvbkV4dGVuZGVyID0gKHRyOiBUcmFuc2FjdGlvbik6IG51bGwgPT4ge1xuICAgIGlmICh0aGlzLnNldHRpbmdzLmtlZXBDdXJzb3JXaXRoaW5Db250ZW50ID09PSBcIm5ldmVyXCIgfHwgIXRyLnNlbGVjdGlvbikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgZWRpdG9yID0gZ2V0RWRpdG9yRnJvbVN0YXRlKHRyLnN0YXJ0U3RhdGUpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmhhbmRsZVNlbGVjdGlvbnNDaGFuZ2VzKGVkaXRvcik7XG4gICAgfSwgMCk7XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBwcml2YXRlIGhhbmRsZVNlbGVjdGlvbnNDaGFuZ2VzID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICBjb25zdCByb290ID0gdGhpcy5wYXJzZXIucGFyc2UoZWRpdG9yKTtcblxuICAgIGlmICghcm9vdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHtcbiAgICAgIGNvbnN0IHsgc2hvdWxkU3RvcFByb3BhZ2F0aW9uIH0gPSB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5ldmFsKFxuICAgICAgICByb290LFxuICAgICAgICBuZXcgS2VlcEN1cnNvck91dHNpZGVGb2xkZWRMaW5lcyhyb290KSxcbiAgICAgICAgZWRpdG9yLFxuICAgICAgKTtcblxuICAgICAgaWYgKHNob3VsZFN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIuZXZhbChcbiAgICAgIHJvb3QsXG4gICAgICBuZXcgS2VlcEN1cnNvcldpdGhpbkxpc3RDb250ZW50KHJvb3QpLFxuICAgICAgZWRpdG9yLFxuICAgICk7XG4gIH07XG59XG4iLCJleHBvcnQgY29uc3QgY2hlY2tib3hSZSA9IGBcXFxcW1teXFxcXFtcXFxcXV1cXFxcXVsgXFx0XWA7XG4iLCJleHBvcnQgZnVuY3Rpb24gaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3gobGluZTogc3RyaW5nKSB7XG4gIHJldHVybiBsaW5lID09PSBcIlwiIHx8IGxpbmUgPT09IFwiWyBdIFwiO1xufVxuIiwiaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4vT3BlcmF0aW9uXCI7XG5cbmltcG9ydCB7IExpc3QsIFBvc2l0aW9uLCBSb290LCByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzIH0gZnJvbSBcIi4uL3Jvb3RcIjtcbmltcG9ydCB7IGNoZWNrYm94UmUgfSBmcm9tIFwiLi4vdXRpbHMvY2hlY2tib3hSZVwiO1xuaW1wb3J0IHsgaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3ggfSBmcm9tIFwiLi4vdXRpbHMvaXNFbXB0eUxpbmVPckVtcHR5Q2hlY2tib3hcIjtcblxuZXhwb3J0IGludGVyZmFjZSBHZXRab29tUmFuZ2Uge1xuICBnZXRab29tUmFuZ2UoKTogeyBmcm9tOiBQb3NpdGlvbjsgdG86IFBvc2l0aW9uIH0gfCBudWxsO1xufVxuXG5leHBvcnQgY2xhc3MgQ3JlYXRlTmV3SXRlbSBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgdXBkYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm9vdDogUm9vdCxcbiAgICBwcml2YXRlIGRlZmF1bHRJbmRlbnRDaGFyczogc3RyaW5nLFxuICAgIHByaXZhdGUgZ2V0Wm9vbVJhbmdlOiBHZXRab29tUmFuZ2UsXG4gICkge31cblxuICBzaG91bGRTdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcFByb3BhZ2F0aW9uO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZWQ7XG4gIH1cblxuICBwZXJmb3JtKCkge1xuICAgIGNvbnN0IHsgcm9vdCB9ID0gdGhpcztcblxuICAgIGlmICghcm9vdC5oYXNTaW5nbGVTZWxlY3Rpb24oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHJvb3QuZ2V0U2VsZWN0aW9uKCk7XG4gICAgaWYgKCFzZWxlY3Rpb24gfHwgc2VsZWN0aW9uLmFuY2hvci5saW5lICE9PSBzZWxlY3Rpb24uaGVhZC5saW5lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgbGluZXMgPSBsaXN0LmdldExpbmVzSW5mbygpO1xuXG4gICAgaWYgKGxpbmVzLmxlbmd0aCA9PT0gMSAmJiBpc0VtcHR5TGluZU9yRW1wdHlDaGVja2JveChsaW5lc1swXS50ZXh0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnNvciA9IHJvb3QuZ2V0Q3Vyc29yKCk7XG4gICAgY29uc3QgbGluZVVuZGVyQ3Vyc29yID0gbGluZXMuZmluZCgobCkgPT4gbC5mcm9tLmxpbmUgPT09IGN1cnNvci5saW5lKTtcblxuICAgIGlmIChjdXJzb3IuY2ggPCBsaW5lVW5kZXJDdXJzb3IuZnJvbS5jaCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgb2xkTGluZXMsIG5ld0xpbmVzIH0gPSBsaW5lcy5yZWR1Y2UoXG4gICAgICAoYWNjLCBsaW5lKSA9PiB7XG4gICAgICAgIGlmIChjdXJzb3IubGluZSA+IGxpbmUuZnJvbS5saW5lKSB7XG4gICAgICAgICAgYWNjLm9sZExpbmVzLnB1c2gobGluZS50ZXh0KTtcbiAgICAgICAgfSBlbHNlIGlmIChjdXJzb3IubGluZSA9PT0gbGluZS5mcm9tLmxpbmUpIHtcbiAgICAgICAgICBjb25zdCBsZWZ0ID0gbGluZS50ZXh0LnNsaWNlKDAsIHNlbGVjdGlvbi5mcm9tIC0gbGluZS5mcm9tLmNoKTtcbiAgICAgICAgICBjb25zdCByaWdodCA9IGxpbmUudGV4dC5zbGljZShzZWxlY3Rpb24udG8gLSBsaW5lLmZyb20uY2gpO1xuICAgICAgICAgIGFjYy5vbGRMaW5lcy5wdXNoKGxlZnQpO1xuICAgICAgICAgIGFjYy5uZXdMaW5lcy5wdXNoKHJpZ2h0KTtcbiAgICAgICAgfSBlbHNlIGlmIChjdXJzb3IubGluZSA8IGxpbmUuZnJvbS5saW5lKSB7XG4gICAgICAgICAgYWNjLm5ld0xpbmVzLnB1c2gobGluZS50ZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvbGRMaW5lczogW10sXG4gICAgICAgIG5ld0xpbmVzOiBbXSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGNvbnN0IGNvZGVCbG9ja0JhY3RpY2tzID0gb2xkTGluZXMuam9pbihcIlxcblwiKS5zcGxpdChcImBgYFwiKS5sZW5ndGggLSAxO1xuICAgIGNvbnN0IGlzSW5zaWRlQ29kZWJsb2NrID1cbiAgICAgIGNvZGVCbG9ja0JhY3RpY2tzID4gMCAmJiBjb2RlQmxvY2tCYWN0aWNrcyAlIDIgIT09IDA7XG5cbiAgICBpZiAoaXNJbnNpZGVDb2RlYmxvY2spIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IHpvb21SYW5nZSA9IHRoaXMuZ2V0Wm9vbVJhbmdlLmdldFpvb21SYW5nZSgpO1xuICAgIGNvbnN0IGxpc3RJc1pvb21pbmdSb290ID0gQm9vbGVhbihcbiAgICAgIHpvb21SYW5nZSAmJlxuICAgICAgICBsaXN0LmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpLmxpbmUgPj0gem9vbVJhbmdlLmZyb20ubGluZSAmJlxuICAgICAgICBsaXN0LmdldExhc3RMaW5lQ29udGVudEVuZCgpLmxpbmUgPD0gem9vbVJhbmdlLmZyb20ubGluZSxcbiAgICApO1xuXG4gICAgY29uc3QgaGFzQ2hpbGRyZW4gPSAhbGlzdC5pc0VtcHR5KCk7XG4gICAgY29uc3QgY2hpbGRJc0ZvbGRlZCA9IGxpc3QuaXNGb2xkUm9vdCgpO1xuICAgIGNvbnN0IGVuZFBvcyA9IGxpc3QuZ2V0TGFzdExpbmVDb250ZW50RW5kKCk7XG4gICAgY29uc3QgZW5kT2ZMaW5lID0gY3Vyc29yLmxpbmUgPT09IGVuZFBvcy5saW5lICYmIGN1cnNvci5jaCA9PT0gZW5kUG9zLmNoO1xuXG4gICAgY29uc3Qgb25DaGlsZExldmVsID1cbiAgICAgIGxpc3RJc1pvb21pbmdSb290IHx8IChoYXNDaGlsZHJlbiAmJiAhY2hpbGRJc0ZvbGRlZCAmJiBlbmRPZkxpbmUpO1xuXG4gICAgY29uc3QgaW5kZW50ID0gb25DaGlsZExldmVsXG4gICAgICA/IGhhc0NoaWxkcmVuXG4gICAgICAgID8gbGlzdC5nZXRDaGlsZHJlbigpWzBdLmdldEZpcnN0TGluZUluZGVudCgpXG4gICAgICAgIDogbGlzdC5nZXRGaXJzdExpbmVJbmRlbnQoKSArIHRoaXMuZGVmYXVsdEluZGVudENoYXJzXG4gICAgICA6IGxpc3QuZ2V0Rmlyc3RMaW5lSW5kZW50KCk7XG5cbiAgICBjb25zdCBidWxsZXQgPVxuICAgICAgb25DaGlsZExldmVsICYmIGhhc0NoaWxkcmVuXG4gICAgICAgID8gbGlzdC5nZXRDaGlsZHJlbigpWzBdLmdldEJ1bGxldCgpXG4gICAgICAgIDogbGlzdC5nZXRCdWxsZXQoKTtcblxuICAgIGNvbnN0IHNwYWNlQWZ0ZXJCdWxsZXQgPVxuICAgICAgb25DaGlsZExldmVsICYmIGhhc0NoaWxkcmVuXG4gICAgICAgID8gbGlzdC5nZXRDaGlsZHJlbigpWzBdLmdldFNwYWNlQWZ0ZXJCdWxsZXQoKVxuICAgICAgICA6IGxpc3QuZ2V0U3BhY2VBZnRlckJ1bGxldCgpO1xuXG4gICAgY29uc3QgcHJlZml4ID0gb2xkTGluZXNbMF0ubWF0Y2goY2hlY2tib3hSZSkgPyBcIlsgXSBcIiA6IFwiXCI7XG5cbiAgICBjb25zdCBuZXdMaXN0ID0gbmV3IExpc3QoXG4gICAgICBsaXN0LmdldFJvb3QoKSxcbiAgICAgIGluZGVudCxcbiAgICAgIGJ1bGxldCxcbiAgICAgIHByZWZpeCxcbiAgICAgIHNwYWNlQWZ0ZXJCdWxsZXQsXG4gICAgICBwcmVmaXggKyBuZXdMaW5lcy5zaGlmdCgpLFxuICAgICAgZmFsc2UsXG4gICAgKTtcblxuICAgIGlmIChuZXdMaW5lcy5sZW5ndGggPiAwKSB7XG4gICAgICBuZXdMaXN0LnNldE5vdGVzSW5kZW50KGxpc3QuZ2V0Tm90ZXNJbmRlbnQoKSk7XG4gICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbmV3TGluZXMpIHtcbiAgICAgICAgbmV3TGlzdC5hZGRMaW5lKGxpbmUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvbkNoaWxkTGV2ZWwpIHtcbiAgICAgIGxpc3QuYWRkQmVmb3JlQWxsKG5ld0xpc3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWNoaWxkSXNGb2xkZWQgfHwgIWVuZE9mTGluZSkge1xuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGxpc3QuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgICAgICAgIGxpc3QucmVtb3ZlQ2hpbGQoY2hpbGQpO1xuICAgICAgICAgIG5ld0xpc3QuYWRkQWZ0ZXJBbGwoY2hpbGQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxpc3QuZ2V0UGFyZW50KCkuYWRkQWZ0ZXIobGlzdCwgbmV3TGlzdCk7XG4gICAgfVxuXG4gICAgbGlzdC5yZXBsYWNlTGluZXMob2xkTGluZXMpO1xuXG4gICAgY29uc3QgbmV3TGlzdFN0YXJ0ID0gbmV3TGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKTtcbiAgICByb290LnJlcGxhY2VDdXJzb3Ioe1xuICAgICAgbGluZTogbmV3TGlzdFN0YXJ0LmxpbmUsXG4gICAgICBjaDogbmV3TGlzdFN0YXJ0LmNoICsgcHJlZml4Lmxlbmd0aCxcbiAgICB9KTtcblxuICAgIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMocm9vdCk7XG4gIH1cbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuXG5pbXBvcnQgeyBSb290LCByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzIH0gZnJvbSBcIi4uL3Jvb3RcIjtcblxuZXhwb3J0IGNsYXNzIE91dGRlbnRMaXN0IGltcGxlbWVudHMgT3BlcmF0aW9uIHtcbiAgcHJpdmF0ZSBzdG9wUHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB1cGRhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb290OiBSb290KSB7fVxuXG4gIHNob3VsZFN0b3BQcm9wYWdhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9wUHJvcGFnYXRpb247XG4gIH1cblxuICBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZDtcbiAgfVxuXG4gIHBlcmZvcm0oKSB7XG4gICAgY29uc3QgeyByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFyb290Lmhhc1NpbmdsZUN1cnNvcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgcGFyZW50ID0gbGlzdC5nZXRQYXJlbnQoKTtcbiAgICBjb25zdCBncmFuZFBhcmVudCA9IHBhcmVudC5nZXRQYXJlbnQoKTtcblxuICAgIGlmICghZ3JhbmRQYXJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuXG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZUJlZm9yZSA9IHJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZihsaXN0KVswXTtcbiAgICBjb25zdCBpbmRlbnRSbUZyb20gPSBwYXJlbnQuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoO1xuICAgIGNvbnN0IGluZGVudFJtVGlsbCA9IGxpc3QuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoO1xuXG4gICAgcGFyZW50LnJlbW92ZUNoaWxkKGxpc3QpO1xuICAgIGdyYW5kUGFyZW50LmFkZEFmdGVyKHBhcmVudCwgbGlzdCk7XG4gICAgbGlzdC51bmluZGVudENvbnRlbnQoaW5kZW50Um1Gcm9tLCBpbmRlbnRSbVRpbGwpO1xuXG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZUFmdGVyID0gcm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKGxpc3QpWzBdO1xuICAgIGNvbnN0IGxpbmVEaWZmID0gbGlzdFN0YXJ0TGluZUFmdGVyIC0gbGlzdFN0YXJ0TGluZUJlZm9yZTtcbiAgICBjb25zdCBjaERpZmYgPSBpbmRlbnRSbVRpbGwgLSBpbmRlbnRSbUZyb207XG5cbiAgICBjb25zdCBjdXJzb3IgPSByb290LmdldEN1cnNvcigpO1xuICAgIHJvb3QucmVwbGFjZUN1cnNvcih7XG4gICAgICBsaW5lOiBjdXJzb3IubGluZSArIGxpbmVEaWZmLFxuICAgICAgY2g6IGN1cnNvci5jaCAtIGNoRGlmZixcbiAgICB9KTtcblxuICAgIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMocm9vdCk7XG4gIH1cbn1cbiIsImltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuL09wZXJhdGlvblwiO1xuaW1wb3J0IHsgT3V0ZGVudExpc3QgfSBmcm9tIFwiLi9PdXRkZW50TGlzdFwiO1xuXG5pbXBvcnQgeyBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcbmltcG9ydCB7IGlzRW1wdHlMaW5lT3JFbXB0eUNoZWNrYm94IH0gZnJvbSBcIi4uL3V0aWxzL2lzRW1wdHlMaW5lT3JFbXB0eUNoZWNrYm94XCI7XG5cbmV4cG9ydCBjbGFzcyBPdXRkZW50TGlzdElmSXRzRW1wdHkgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIG91dGRlbnRMaXN0OiBPdXRkZW50TGlzdDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHtcbiAgICB0aGlzLm91dGRlbnRMaXN0ID0gbmV3IE91dGRlbnRMaXN0KHJvb3QpO1xuICB9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLm91dGRlbnRMaXN0LnNob3VsZFN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLm91dGRlbnRMaXN0LnNob3VsZFVwZGF0ZSgpO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBsaW5lcyA9IGxpc3QuZ2V0TGluZXMoKTtcblxuICAgIGlmIChcbiAgICAgIGxpbmVzLmxlbmd0aCA+IDEgfHxcbiAgICAgICFpc0VtcHR5TGluZU9yRW1wdHlDaGVja2JveChsaW5lc1swXSkgfHxcbiAgICAgIGxpc3QuZ2V0TGV2ZWwoKSA9PT0gMVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMub3V0ZGVudExpc3QucGVyZm9ybSgpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBQbHVnaW4gfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgUHJlYyB9IGZyb20gXCJAY29kZW1pcnJvci9zdGF0ZVwiO1xuaW1wb3J0IHsga2V5bWFwIH0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vZWRpdG9yXCI7XG5pbXBvcnQgeyBDcmVhdGVOZXdJdGVtIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvQ3JlYXRlTmV3SXRlbVwiO1xuaW1wb3J0IHsgT3V0ZGVudExpc3RJZkl0c0VtcHR5IH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvT3V0ZGVudExpc3RJZkl0c0VtcHR5XCI7XG5pbXBvcnQgeyBJTUVEZXRlY3RvciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9JTUVEZXRlY3RvclwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25QZXJmb3JtZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvT3BlcmF0aW9uUGVyZm9ybWVyXCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvUGFyc2VyXCI7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuaW1wb3J0IHsgY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2sgfSBmcm9tIFwiLi4vdXRpbHMvY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2tcIjtcblxuZXhwb3J0IGNsYXNzIEVudGVyQmVoYXZpb3VyT3ZlcnJpZGUgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncyxcbiAgICBwcml2YXRlIGltZURldGVjdG9yOiBJTUVEZXRlY3RvcixcbiAgICBwcml2YXRlIG9ic2lkaWFuU2V0dGluZ3M6IE9ic2lkaWFuU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBwYXJzZXI6IFBhcnNlcixcbiAgICBwcml2YXRlIG9wZXJhdGlvblBlcmZvcm1lcjogT3BlcmF0aW9uUGVyZm9ybWVyLFxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihcbiAgICAgIFByZWMuaGlnaGVzdChcbiAgICAgICAga2V5bWFwLm9mKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IFwiRW50ZXJcIixcbiAgICAgICAgICAgIHJ1bjogY3JlYXRlS2V5bWFwUnVuQ2FsbGJhY2soe1xuICAgICAgICAgICAgICBjaGVjazogdGhpcy5jaGVjayxcbiAgICAgICAgICAgICAgcnVuOiB0aGlzLnJ1bixcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cblxuICBwcml2YXRlIGNoZWNrID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzLm92ZXJyaWRlRW50ZXJCZWhhdmlvdXIgJiYgIXRoaXMuaW1lRGV0ZWN0b3IuaXNPcGVuZWQoKTtcbiAgfTtcblxuICBwcml2YXRlIHJ1biA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgY29uc3Qgcm9vdCA9IHRoaXMucGFyc2VyLnBhcnNlKGVkaXRvcik7XG5cbiAgICBpZiAoIXJvb3QpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNob3VsZFVwZGF0ZTogZmFsc2UsXG4gICAgICAgIHNob3VsZFN0b3BQcm9wYWdhdGlvbjogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHtcbiAgICAgIGNvbnN0IHJlcyA9IHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyLmV2YWwoXG4gICAgICAgIHJvb3QsXG4gICAgICAgIG5ldyBPdXRkZW50TGlzdElmSXRzRW1wdHkocm9vdCksXG4gICAgICAgIGVkaXRvcixcbiAgICAgICk7XG5cbiAgICAgIGlmIChyZXMuc2hvdWxkU3RvcFByb3BhZ2F0aW9uKSB7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAge1xuICAgICAgY29uc3QgZGVmYXVsdEluZGVudENoYXJzID0gdGhpcy5vYnNpZGlhblNldHRpbmdzLmdldERlZmF1bHRJbmRlbnRDaGFycygpO1xuICAgICAgY29uc3Qgem9vbVJhbmdlID0gZWRpdG9yLmdldFpvb21SYW5nZSgpO1xuICAgICAgY29uc3QgZ2V0Wm9vbVJhbmdlID0ge1xuICAgICAgICBnZXRab29tUmFuZ2U6ICgpID0+IHpvb21SYW5nZSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlcyA9IHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyLmV2YWwoXG4gICAgICAgIHJvb3QsXG4gICAgICAgIG5ldyBDcmVhdGVOZXdJdGVtKHJvb3QsIGRlZmF1bHRJbmRlbnRDaGFycywgZ2V0Wm9vbVJhbmdlKSxcbiAgICAgICAgZWRpdG9yLFxuICAgICAgKTtcblxuICAgICAgaWYgKHJlcy5zaG91bGRVcGRhdGUgJiYgem9vbVJhbmdlKSB7XG4gICAgICAgIGVkaXRvci50cnlSZWZyZXNoWm9vbSh6b29tUmFuZ2UuZnJvbS5saW5lKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gIH07XG59XG4iLCJpbXBvcnQgeyBFZGl0b3IgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vZWRpdG9yXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFZGl0b3JDYWxsYmFjayhjYjogKGVkaXRvcjogTXlFZGl0b3IpID0+IGJvb2xlYW4pIHtcbiAgcmV0dXJuIChlZGl0b3I6IEVkaXRvcikgPT4ge1xuICAgIGNvbnN0IG15RWRpdG9yID0gbmV3IE15RWRpdG9yKGVkaXRvcik7XG4gICAgY29uc3Qgc2hvdWxkU3RvcFByb3BhZ2F0aW9uID0gY2IobXlFZGl0b3IpO1xuXG4gICAgaWYgKFxuICAgICAgIXNob3VsZFN0b3BQcm9wYWdhdGlvbiAmJlxuICAgICAgd2luZG93LmV2ZW50ICYmXG4gICAgICB3aW5kb3cuZXZlbnQudHlwZSA9PT0gXCJrZXlkb3duXCJcbiAgICApIHtcbiAgICAgIG15RWRpdG9yLnRyaWdnZXJPbktleURvd24od2luZG93LmV2ZW50IGFzIEtleWJvYXJkRXZlbnQpO1xuICAgIH1cbiAgfTtcbn1cbiIsImltcG9ydCB7IE5vdGljZSwgUGx1Z2luIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBjcmVhdGVFZGl0b3JDYWxsYmFjayB9IGZyb20gXCIuLi91dGlscy9jcmVhdGVFZGl0b3JDYWxsYmFja1wiO1xuXG5leHBvcnQgY2xhc3MgTGlzdHNGb2xkaW5nQ29tbWFuZHMgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbixcbiAgICBwcml2YXRlIG9ic2lkaWFuU2V0dGluZ3M6IE9ic2lkaWFuU2V0dGluZ3MsXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwiZm9sZFwiLFxuICAgICAgaWNvbjogXCJjaGV2cm9ucy1kb3duLXVwXCIsXG4gICAgICBuYW1lOiBcIkZvbGQgdGhlIGxpc3RcIixcbiAgICAgIGVkaXRvckNhbGxiYWNrOiBjcmVhdGVFZGl0b3JDYWxsYmFjayh0aGlzLmZvbGQpLFxuICAgICAgaG90a2V5czogW1xuICAgICAgICB7XG4gICAgICAgICAgbW9kaWZpZXJzOiBbXCJNb2RcIl0sXG4gICAgICAgICAga2V5OiBcIkFycm93VXBcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnBsdWdpbi5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiBcInVuZm9sZFwiLFxuICAgICAgaWNvbjogXCJjaGV2cm9ucy11cC1kb3duXCIsXG4gICAgICBuYW1lOiBcIlVuZm9sZCB0aGUgbGlzdFwiLFxuICAgICAgZWRpdG9yQ2FsbGJhY2s6IGNyZWF0ZUVkaXRvckNhbGxiYWNrKHRoaXMudW5mb2xkKSxcbiAgICAgIGhvdGtleXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG1vZGlmaWVyczogW1wiTW9kXCJdLFxuICAgICAgICAgIGtleTogXCJBcnJvd0Rvd25cIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgc2V0Rm9sZChlZGl0b3I6IE15RWRpdG9yLCB0eXBlOiBcImZvbGRcIiB8IFwidW5mb2xkXCIpIHtcbiAgICBpZiAoIXRoaXMub2JzaWRpYW5TZXR0aW5ncy5nZXRGb2xkU2V0dGluZ3MoKS5mb2xkSW5kZW50KSB7XG4gICAgICBuZXcgTm90aWNlKFxuICAgICAgICBgVW5hYmxlIHRvICR7dHlwZX0gYmVjYXVzZSBmb2xkaW5nIGlzIGRpc2FibGVkLiBQbGVhc2UgZW5hYmxlIFwiRm9sZCBpbmRlbnRcIiBpbiBPYnNpZGlhbiBzZXR0aW5ncy5gLFxuICAgICAgICA1MDAwLFxuICAgICAgKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnNvciA9IGVkaXRvci5nZXRDdXJzb3IoKTtcblxuICAgIGlmICh0eXBlID09PSBcImZvbGRcIikge1xuICAgICAgZWRpdG9yLmZvbGQoY3Vyc29yLmxpbmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlZGl0b3IudW5mb2xkKGN1cnNvci5saW5lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZm9sZCA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0Rm9sZChlZGl0b3IsIFwiZm9sZFwiKTtcbiAgfTtcblxuICBwcml2YXRlIHVuZm9sZCA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0Rm9sZChlZGl0b3IsIFwidW5mb2xkXCIpO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4vT3BlcmF0aW9uXCI7XG5cbmltcG9ydCB7IFJvb3QsIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMgfSBmcm9tIFwiLi4vcm9vdFwiO1xuXG5leHBvcnQgY2xhc3MgSW5kZW50TGlzdCBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgdXBkYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm9vdDogUm9vdCxcbiAgICBwcml2YXRlIGRlZmF1bHRJbmRlbnRDaGFyczogc3RyaW5nLFxuICApIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG5cbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBwYXJlbnQgPSBsaXN0LmdldFBhcmVudCgpO1xuICAgIGNvbnN0IHByZXYgPSBwYXJlbnQuZ2V0UHJldlNpYmxpbmdPZihsaXN0KTtcblxuICAgIGlmICghcHJldikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG5cbiAgICBjb25zdCBsaXN0U3RhcnRMaW5lQmVmb3JlID0gcm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKGxpc3QpWzBdO1xuXG4gICAgY29uc3QgaW5kZW50UG9zID0gbGlzdC5nZXRGaXJzdExpbmVJbmRlbnQoKS5sZW5ndGg7XG4gICAgbGV0IGluZGVudENoYXJzID0gXCJcIjtcblxuICAgIGlmIChpbmRlbnRDaGFycyA9PT0gXCJcIiAmJiAhcHJldi5pc0VtcHR5KCkpIHtcbiAgICAgIGluZGVudENoYXJzID0gcHJldlxuICAgICAgICAuZ2V0Q2hpbGRyZW4oKVswXVxuICAgICAgICAuZ2V0Rmlyc3RMaW5lSW5kZW50KClcbiAgICAgICAgLnNsaWNlKHByZXYuZ2V0Rmlyc3RMaW5lSW5kZW50KCkubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBpZiAoaW5kZW50Q2hhcnMgPT09IFwiXCIpIHtcbiAgICAgIGluZGVudENoYXJzID0gbGlzdFxuICAgICAgICAuZ2V0Rmlyc3RMaW5lSW5kZW50KClcbiAgICAgICAgLnNsaWNlKHBhcmVudC5nZXRGaXJzdExpbmVJbmRlbnQoKS5sZW5ndGgpO1xuICAgIH1cblxuICAgIGlmIChpbmRlbnRDaGFycyA9PT0gXCJcIiAmJiAhbGlzdC5pc0VtcHR5KCkpIHtcbiAgICAgIGluZGVudENoYXJzID0gbGlzdC5nZXRDaGlsZHJlbigpWzBdLmdldEZpcnN0TGluZUluZGVudCgpO1xuICAgIH1cblxuICAgIGlmIChpbmRlbnRDaGFycyA9PT0gXCJcIikge1xuICAgICAgaW5kZW50Q2hhcnMgPSB0aGlzLmRlZmF1bHRJbmRlbnRDaGFycztcbiAgICB9XG5cbiAgICBwYXJlbnQucmVtb3ZlQ2hpbGQobGlzdCk7XG4gICAgcHJldi5hZGRBZnRlckFsbChsaXN0KTtcbiAgICBsaXN0LmluZGVudENvbnRlbnQoaW5kZW50UG9zLCBpbmRlbnRDaGFycyk7XG5cbiAgICBjb25zdCBsaXN0U3RhcnRMaW5lQWZ0ZXIgPSByb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YobGlzdClbMF07XG4gICAgY29uc3QgbGluZURpZmYgPSBsaXN0U3RhcnRMaW5lQWZ0ZXIgLSBsaXN0U3RhcnRMaW5lQmVmb3JlO1xuXG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcbiAgICByb290LnJlcGxhY2VDdXJzb3Ioe1xuICAgICAgbGluZTogY3Vyc29yLmxpbmUgKyBsaW5lRGlmZixcbiAgICAgIGNoOiBjdXJzb3IuY2ggKyBpbmRlbnRDaGFycy5sZW5ndGgsXG4gICAgfSk7XG5cbiAgICByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzKHJvb3QpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCwgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBNb3ZlTGlzdERvd24gaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG5cbiAgICBjb25zdCBsaXN0ID0gcm9vdC5nZXRMaXN0VW5kZXJDdXJzb3IoKTtcbiAgICBjb25zdCBwYXJlbnQgPSBsaXN0LmdldFBhcmVudCgpO1xuICAgIGNvbnN0IGdyYW5kUGFyZW50ID0gcGFyZW50LmdldFBhcmVudCgpO1xuICAgIGNvbnN0IG5leHQgPSBwYXJlbnQuZ2V0TmV4dFNpYmxpbmdPZihsaXN0KTtcblxuICAgIGNvbnN0IGxpc3RTdGFydExpbmVCZWZvcmUgPSByb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YobGlzdClbMF07XG5cbiAgICBpZiAoIW5leHQgJiYgZ3JhbmRQYXJlbnQpIHtcbiAgICAgIGNvbnN0IG5ld1BhcmVudCA9IGdyYW5kUGFyZW50LmdldE5leHRTaWJsaW5nT2YocGFyZW50KTtcblxuICAgICAgaWYgKG5ld1BhcmVudCkge1xuICAgICAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQobGlzdCk7XG4gICAgICAgIG5ld1BhcmVudC5hZGRCZWZvcmVBbGwobGlzdCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChuZXh0KSB7XG4gICAgICB0aGlzLnVwZGF0ZWQgPSB0cnVlO1xuICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKGxpc3QpO1xuICAgICAgcGFyZW50LmFkZEFmdGVyKG5leHQsIGxpc3QpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy51cGRhdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZUFmdGVyID0gcm9vdC5nZXRDb250ZW50TGluZXNSYW5nZU9mKGxpc3QpWzBdO1xuICAgIGNvbnN0IGxpbmVEaWZmID0gbGlzdFN0YXJ0TGluZUFmdGVyIC0gbGlzdFN0YXJ0TGluZUJlZm9yZTtcblxuICAgIGNvbnN0IGN1cnNvciA9IHJvb3QuZ2V0Q3Vyc29yKCk7XG4gICAgcm9vdC5yZXBsYWNlQ3Vyc29yKHtcbiAgICAgIGxpbmU6IGN1cnNvci5saW5lICsgbGluZURpZmYsXG4gICAgICBjaDogY3Vyc29yLmNoLFxuICAgIH0pO1xuXG4gICAgcmVjYWxjdWxhdGVOdW1lcmljQnVsbGV0cyhyb290KTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIi4vT3BlcmF0aW9uXCI7XG5cbmltcG9ydCB7IFJvb3QsIHJlY2FsY3VsYXRlTnVtZXJpY0J1bGxldHMgfSBmcm9tIFwiLi4vcm9vdFwiO1xuXG5leHBvcnQgY2xhc3MgTW92ZUxpc3RVcCBpbXBsZW1lbnRzIE9wZXJhdGlvbiB7XG4gIHByaXZhdGUgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2U7XG4gIHByaXZhdGUgdXBkYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdDogUm9vdCkge31cblxuICBzaG91bGRTdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcFByb3BhZ2F0aW9uO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZWQ7XG4gIH1cblxuICBwZXJmb3JtKCkge1xuICAgIGNvbnN0IHsgcm9vdCB9ID0gdGhpcztcblxuICAgIGlmICghcm9vdC5oYXNTaW5nbGVDdXJzb3IoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxpc3QgPSByb290LmdldExpc3RVbmRlckN1cnNvcigpO1xuICAgIGNvbnN0IHBhcmVudCA9IGxpc3QuZ2V0UGFyZW50KCk7XG4gICAgY29uc3QgZ3JhbmRQYXJlbnQgPSBwYXJlbnQuZ2V0UGFyZW50KCk7XG4gICAgY29uc3QgcHJldiA9IHBhcmVudC5nZXRQcmV2U2libGluZ09mKGxpc3QpO1xuXG4gICAgY29uc3QgbGlzdFN0YXJ0TGluZUJlZm9yZSA9IHJvb3QuZ2V0Q29udGVudExpbmVzUmFuZ2VPZihsaXN0KVswXTtcblxuICAgIGlmICghcHJldiAmJiBncmFuZFBhcmVudCkge1xuICAgICAgY29uc3QgbmV3UGFyZW50ID0gZ3JhbmRQYXJlbnQuZ2V0UHJldlNpYmxpbmdPZihwYXJlbnQpO1xuXG4gICAgICBpZiAobmV3UGFyZW50KSB7XG4gICAgICAgIHRoaXMudXBkYXRlZCA9IHRydWU7XG4gICAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChsaXN0KTtcbiAgICAgICAgbmV3UGFyZW50LmFkZEFmdGVyQWxsKGxpc3QpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJldikge1xuICAgICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcbiAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChsaXN0KTtcbiAgICAgIHBhcmVudC5hZGRCZWZvcmUocHJldiwgbGlzdCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnVwZGF0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0U3RhcnRMaW5lQWZ0ZXIgPSByb290LmdldENvbnRlbnRMaW5lc1JhbmdlT2YobGlzdClbMF07XG4gICAgY29uc3QgbGluZURpZmYgPSBsaXN0U3RhcnRMaW5lQWZ0ZXIgLSBsaXN0U3RhcnRMaW5lQmVmb3JlO1xuXG4gICAgY29uc3QgY3Vyc29yID0gcm9vdC5nZXRDdXJzb3IoKTtcbiAgICByb290LnJlcGxhY2VDdXJzb3Ioe1xuICAgICAgbGluZTogY3Vyc29yLmxpbmUgKyBsaW5lRGlmZixcbiAgICAgIGNoOiBjdXJzb3IuY2gsXG4gICAgfSk7XG5cbiAgICByZWNhbGN1bGF0ZU51bWVyaWNCdWxsZXRzKHJvb3QpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBQbHVnaW4gfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vZWRpdG9yXCI7XG5pbXBvcnQgeyBJbmRlbnRMaXN0IH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvSW5kZW50TGlzdFwiO1xuaW1wb3J0IHsgTW92ZUxpc3REb3duIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvTW92ZUxpc3REb3duXCI7XG5pbXBvcnQgeyBNb3ZlTGlzdFVwIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvTW92ZUxpc3RVcFwiO1xuaW1wb3J0IHsgT3V0ZGVudExpc3QgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9PdXRkZW50TGlzdFwiO1xuaW1wb3J0IHsgT2JzaWRpYW5TZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25QZXJmb3JtZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvT3BlcmF0aW9uUGVyZm9ybWVyXCI7XG5pbXBvcnQgeyBjcmVhdGVFZGl0b3JDYWxsYmFjayB9IGZyb20gXCIuLi91dGlscy9jcmVhdGVFZGl0b3JDYWxsYmFja1wiO1xuXG5leHBvcnQgY2xhc3MgTGlzdHNNb3ZlbWVudENvbW1hbmRzIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW4sXG4gICAgcHJpdmF0ZSBvYnNpZGlhblNldHRpbmdzOiBPYnNpZGlhblNldHRpbmdzLFxuICAgIHByaXZhdGUgb3BlcmF0aW9uUGVyZm9ybWVyOiBPcGVyYXRpb25QZXJmb3JtZXIsXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMucGx1Z2luLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwibW92ZS1saXN0LWl0ZW0tdXBcIixcbiAgICAgIGljb246IFwiYXJyb3ctdXBcIixcbiAgICAgIG5hbWU6IFwiTW92ZSBsaXN0IGFuZCBzdWJsaXN0cyB1cFwiLFxuICAgICAgZWRpdG9yQ2FsbGJhY2s6IGNyZWF0ZUVkaXRvckNhbGxiYWNrKHRoaXMubW92ZUxpc3RVcCksXG4gICAgICBob3RrZXlzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBtb2RpZmllcnM6IFtcIk1vZFwiLCBcIlNoaWZ0XCJdLFxuICAgICAgICAgIGtleTogXCJBcnJvd1VwXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgdGhpcy5wbHVnaW4uYWRkQ29tbWFuZCh7XG4gICAgICBpZDogXCJtb3ZlLWxpc3QtaXRlbS1kb3duXCIsXG4gICAgICBpY29uOiBcImFycm93LWRvd25cIixcbiAgICAgIG5hbWU6IFwiTW92ZSBsaXN0IGFuZCBzdWJsaXN0cyBkb3duXCIsXG4gICAgICBlZGl0b3JDYWxsYmFjazogY3JlYXRlRWRpdG9yQ2FsbGJhY2sodGhpcy5tb3ZlTGlzdERvd24pLFxuICAgICAgaG90a2V5czogW1xuICAgICAgICB7XG4gICAgICAgICAgbW9kaWZpZXJzOiBbXCJNb2RcIiwgXCJTaGlmdFwiXSxcbiAgICAgICAgICBrZXk6IFwiQXJyb3dEb3duXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgdGhpcy5wbHVnaW4uYWRkQ29tbWFuZCh7XG4gICAgICBpZDogXCJpbmRlbnQtbGlzdFwiLFxuICAgICAgaWNvbjogXCJpbmRlbnRcIixcbiAgICAgIG5hbWU6IFwiSW5kZW50IHRoZSBsaXN0IGFuZCBzdWJsaXN0c1wiLFxuICAgICAgZWRpdG9yQ2FsbGJhY2s6IGNyZWF0ZUVkaXRvckNhbGxiYWNrKHRoaXMuaW5kZW50TGlzdCksXG4gICAgICBob3RrZXlzOiBbXSxcbiAgICB9KTtcblxuICAgIHRoaXMucGx1Z2luLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwib3V0ZGVudC1saXN0XCIsXG4gICAgICBpY29uOiBcIm91dGRlbnRcIixcbiAgICAgIG5hbWU6IFwiT3V0ZGVudCB0aGUgbGlzdCBhbmQgc3VibGlzdHNcIixcbiAgICAgIGVkaXRvckNhbGxiYWNrOiBjcmVhdGVFZGl0b3JDYWxsYmFjayh0aGlzLm91dGRlbnRMaXN0KSxcbiAgICAgIGhvdGtleXM6IFtdLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge31cblxuICBwcml2YXRlIG1vdmVMaXN0RG93biA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgY29uc3QgeyBzaG91bGRTdG9wUHJvcGFnYXRpb24gfSA9IHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyLnBlcmZvcm0oXG4gICAgICAocm9vdCkgPT4gbmV3IE1vdmVMaXN0RG93bihyb290KSxcbiAgICAgIGVkaXRvcixcbiAgICApO1xuXG4gICAgcmV0dXJuIHNob3VsZFN0b3BQcm9wYWdhdGlvbjtcbiAgfTtcblxuICBwcml2YXRlIG1vdmVMaXN0VXAgPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIGNvbnN0IHsgc2hvdWxkU3RvcFByb3BhZ2F0aW9uIH0gPSB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5wZXJmb3JtKFxuICAgICAgKHJvb3QpID0+IG5ldyBNb3ZlTGlzdFVwKHJvb3QpLFxuICAgICAgZWRpdG9yLFxuICAgICk7XG5cbiAgICByZXR1cm4gc2hvdWxkU3RvcFByb3BhZ2F0aW9uO1xuICB9O1xuXG4gIHByaXZhdGUgaW5kZW50TGlzdCA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgY29uc3QgeyBzaG91bGRTdG9wUHJvcGFnYXRpb24gfSA9IHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyLnBlcmZvcm0oXG4gICAgICAocm9vdCkgPT5cbiAgICAgICAgbmV3IEluZGVudExpc3Qocm9vdCwgdGhpcy5vYnNpZGlhblNldHRpbmdzLmdldERlZmF1bHRJbmRlbnRDaGFycygpKSxcbiAgICAgIGVkaXRvcixcbiAgICApO1xuXG4gICAgcmV0dXJuIHNob3VsZFN0b3BQcm9wYWdhdGlvbjtcbiAgfTtcblxuICBwcml2YXRlIG91dGRlbnRMaXN0ID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICBjb25zdCB7IHNob3VsZFN0b3BQcm9wYWdhdGlvbiB9ID0gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIucGVyZm9ybShcbiAgICAgIChyb290KSA9PiBuZXcgT3V0ZGVudExpc3Qocm9vdCksXG4gICAgICBlZGl0b3IsXG4gICAgKTtcblxuICAgIHJldHVybiBzaG91bGRTdG9wUHJvcGFnYXRpb247XG4gIH07XG59XG4iLCJpbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9PcGVyYXRpb25cIjtcblxuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVUaWxsQ3VycmVudExpbmVDb250ZW50U3RhcnQgaW1wbGVtZW50cyBPcGVyYXRpb24ge1xuICBwcml2YXRlIHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICBwcml2YXRlIHVwZGF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3Q6IFJvb3QpIHt9XG5cbiAgc2hvdWxkU3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkO1xuICB9XG5cbiAgcGVyZm9ybSgpIHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIXJvb3QuaGFzU2luZ2xlQ3Vyc29yKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IGN1cnNvciA9IHJvb3QuZ2V0Q3Vyc29yKCk7XG4gICAgY29uc3QgbGlzdCA9IHJvb3QuZ2V0TGlzdFVuZGVyQ3Vyc29yKCk7XG4gICAgY29uc3QgbGluZXMgPSBsaXN0LmdldExpbmVzSW5mbygpO1xuICAgIGNvbnN0IGxpbmVObyA9IGxpbmVzLmZpbmRJbmRleCgobCkgPT4gbC5mcm9tLmxpbmUgPT09IGN1cnNvci5saW5lKTtcblxuICAgIGxpbmVzW2xpbmVOb10udGV4dCA9IGxpbmVzW2xpbmVOb10udGV4dC5zbGljZShcbiAgICAgIGN1cnNvci5jaCAtIGxpbmVzW2xpbmVOb10uZnJvbS5jaCxcbiAgICApO1xuXG4gICAgbGlzdC5yZXBsYWNlTGluZXMobGluZXMubWFwKChsKSA9PiBsLnRleHQpKTtcbiAgICByb290LnJlcGxhY2VDdXJzb3IobGluZXNbbGluZU5vXS5mcm9tKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgRGVsZXRlVGlsbEN1cnJlbnRMaW5lQ29udGVudFN0YXJ0IH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvRGVsZXRlVGlsbEN1cnJlbnRMaW5lQ29udGVudFN0YXJ0XCI7XG5pbXBvcnQgeyBJTUVEZXRlY3RvciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9JTUVEZXRlY3RvclwiO1xuaW1wb3J0IHsgT3BlcmF0aW9uUGVyZm9ybWVyIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09wZXJhdGlvblBlcmZvcm1lclwiO1xuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tIFwiLi4vc2VydmljZXMvU2V0dGluZ3NcIjtcbmltcG9ydCB7IGNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrIH0gZnJvbSBcIi4uL3V0aWxzL2NyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrXCI7XG5cbmV4cG9ydCBjbGFzcyBNZXRhQmFja3NwYWNlQmVoYXZpb3VyT3ZlcnJpZGUgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncyxcbiAgICBwcml2YXRlIGltZURldGVjdG9yOiBJTUVEZXRlY3RvcixcbiAgICBwcml2YXRlIG9wZXJhdGlvblBlcmZvcm1lcjogT3BlcmF0aW9uUGVyZm9ybWVyLFxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLnBsdWdpbi5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihcbiAgICAgIGtleW1hcC5vZihbXG4gICAgICAgIHtcbiAgICAgICAgICBtYWM6IFwibS1CYWNrc3BhY2VcIixcbiAgICAgICAgICBydW46IGNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgIGNoZWNrOiB0aGlzLmNoZWNrLFxuICAgICAgICAgICAgcnVuOiB0aGlzLnJ1bixcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIF0pLFxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2V0dGluZ3Mua2VlcEN1cnNvcldpdGhpbkNvbnRlbnQgIT09IFwibmV2ZXJcIiAmJlxuICAgICAgIXRoaXMuaW1lRGV0ZWN0b3IuaXNPcGVuZWQoKVxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBydW4gPSAoZWRpdG9yOiBNeUVkaXRvcikgPT4ge1xuICAgIHJldHVybiB0aGlzLm9wZXJhdGlvblBlcmZvcm1lci5wZXJmb3JtKFxuICAgICAgKHJvb3QpID0+IG5ldyBEZWxldGVUaWxsQ3VycmVudExpbmVDb250ZW50U3RhcnQocm9vdCksXG4gICAgICBlZGl0b3IsXG4gICAgKTtcbiAgfTtcbn1cbiIsImltcG9ydCB7IEFwcCwgUGx1Z2luLCBQbHVnaW5TZXR0aW5nVGFiLCBTZXR0aW5nIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7XG4gIEtlZXBDdXJzb3JXaXRoaW5Db250ZW50LFxuICBTZXR0aW5ncyxcbiAgVmVydGljYWxMaW5lc0FjdGlvbixcbn0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5cbmNsYXNzIE9ic2lkaWFuT3V0bGluZXJQbHVnaW5TZXR0aW5nVGFiIGV4dGVuZHMgUGx1Z2luU2V0dGluZ1RhYiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIGFwcDogQXBwLFxuICAgIHBsdWdpbjogUGx1Z2luLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzLFxuICApIHtcbiAgICBzdXBlcihhcHAsIHBsdWdpbik7XG4gIH1cblxuICBkaXNwbGF5KCk6IHZvaWQge1xuICAgIGNvbnN0IHsgY29udGFpbmVyRWwgfSA9IHRoaXM7XG5cbiAgICBjb250YWluZXJFbC5lbXB0eSgpO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIlN0aWNrIHRoZSBjdXJzb3IgdG8gdGhlIGNvbnRlbnRcIilcbiAgICAgIC5zZXREZXNjKFwiRG9uJ3QgbGV0IHRoZSBjdXJzb3IgbW92ZSB0byB0aGUgYnVsbGV0IHBvc2l0aW9uLlwiKVxuICAgICAgLmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4ge1xuICAgICAgICBkcm9wZG93blxuICAgICAgICAgIC5hZGRPcHRpb25zKHtcbiAgICAgICAgICAgIG5ldmVyOiBcIk5ldmVyXCIsXG4gICAgICAgICAgICBcImJ1bGxldC1vbmx5XCI6IFwiU3RpY2sgY3Vyc29yIG91dCBvZiBidWxsZXRzXCIsXG4gICAgICAgICAgICBcImJ1bGxldC1hbmQtY2hlY2tib3hcIjogXCJTdGljayBjdXJzb3Igb3V0IG9mIGJ1bGxldHMgYW5kIGNoZWNrYm94ZXNcIixcbiAgICAgICAgICB9IGFzIHsgW2tleSBpbiBLZWVwQ3Vyc29yV2l0aGluQ29udGVudF06IHN0cmluZyB9KVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLmtlZXBDdXJzb3JXaXRoaW5Db250ZW50KVxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWU6IEtlZXBDdXJzb3JXaXRoaW5Db250ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzLmtlZXBDdXJzb3JXaXRoaW5Db250ZW50ID0gdmFsdWU7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkVuaGFuY2UgdGhlIFRhYiBrZXlcIilcbiAgICAgIC5zZXREZXNjKFwiTWFrZSBUYWIgYW5kIFNoaWZ0LVRhYiBiZWhhdmUgdGhlIHNhbWUgYXMgb3RoZXIgb3V0bGluZXJzLlwiKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLm92ZXJyaWRlVGFiQmVoYXZpb3VyKVxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3Mub3ZlcnJpZGVUYWJCZWhhdmlvdXIgPSB2YWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiRW5oYW5jZSB0aGUgRW50ZXIga2V5XCIpXG4gICAgICAuc2V0RGVzYyhcIk1ha2UgdGhlIEVudGVyIGtleSBiZWhhdmUgdGhlIHNhbWUgYXMgb3RoZXIgb3V0bGluZXJzLlwiKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgIHRvZ2dsZVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLm92ZXJyaWRlRW50ZXJCZWhhdmlvdXIpXG4gICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXR0aW5ncy5vdmVycmlkZUVudGVyQmVoYXZpb3VyID0gdmFsdWU7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkVuaGFuY2UgdGhlIEN0cmwrQSBvciBDbWQrQSBiZWhhdmlvclwiKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgIFwiUHJlc3MgdGhlIGhvdGtleSBvbmNlIHRvIHNlbGVjdCB0aGUgY3VycmVudCBsaXN0IGl0ZW0uIFByZXNzIHRoZSBob3RrZXkgdHdpY2UgdG8gc2VsZWN0IHRoZSBlbnRpcmUgbGlzdC5cIixcbiAgICAgIClcbiAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuICAgICAgICB0b2dnbGVcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5zZXR0aW5ncy5vdmVycmlkZVNlbGVjdEFsbEJlaGF2aW91cilcbiAgICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzLm92ZXJyaWRlU2VsZWN0QWxsQmVoYXZpb3VyID0gdmFsdWU7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkltcHJvdmUgdGhlIHN0eWxlIG9mIHlvdXIgbGlzdHNcIilcbiAgICAgIC5zZXREZXNjKFxuICAgICAgICBcIlN0eWxlcyBhcmUgb25seSBjb21wYXRpYmxlIHdpdGggYnVpbHQtaW4gT2JzaWRpYW4gdGhlbWVzIGFuZCBtYXkgbm90IGJlIGNvbXBhdGlibGUgd2l0aCBvdGhlciB0aGVtZXMuXCIsXG4gICAgICApXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcbiAgICAgICAgdG9nZ2xlXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMuc2V0dGluZ3MuYmV0dGVyTGlzdHNTdHlsZXMpXG4gICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXR0aW5ncy5iZXR0ZXJMaXN0c1N0eWxlcyA9IHZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXR0aW5ncy5zYXZlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoXCJEcmF3IHZlcnRpY2FsIGluZGVudGF0aW9uIGxpbmVzXCIpXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcbiAgICAgICAgdG9nZ2xlLnNldFZhbHVlKHRoaXMuc2V0dGluZ3MudmVydGljYWxMaW5lcykub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXR0aW5ncy52ZXJ0aWNhbExpbmVzID0gdmFsdWU7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zZXR0aW5ncy5zYXZlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiVmVydGljYWwgaW5kZW50YXRpb24gbGluZSBjbGljayBhY3Rpb25cIilcbiAgICAgIC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcbiAgICAgICAgZHJvcGRvd25cbiAgICAgICAgICAuYWRkT3B0aW9ucyh7XG4gICAgICAgICAgICBub25lOiBcIk5vbmVcIixcbiAgICAgICAgICAgIFwiem9vbS1pblwiOiBcIlpvb20gSW5cIixcbiAgICAgICAgICAgIFwidG9nZ2xlLWZvbGRpbmdcIjogXCJUb2dnbGUgRm9sZGluZ1wiLFxuICAgICAgICAgIH0gYXMgeyBba2V5IGluIFZlcnRpY2FsTGluZXNBY3Rpb25dOiBzdHJpbmcgfSlcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5zZXR0aW5ncy52ZXJ0aWNhbExpbmVzQWN0aW9uKVxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWU6IFZlcnRpY2FsTGluZXNBY3Rpb24pID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MudmVydGljYWxMaW5lc0FjdGlvbiA9IHZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXR0aW5ncy5zYXZlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKS5zZXROYW1lKFwiRHJhZy1hbmQtRHJvcFwiKS5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuICAgICAgdG9nZ2xlLnNldFZhbHVlKHRoaXMuc2V0dGluZ3MuZHJhZ0FuZERyb3ApLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICB0aGlzLnNldHRpbmdzLmRyYWdBbmREcm9wID0gdmFsdWU7XG4gICAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3Muc2F2ZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiRGVidWcgbW9kZVwiKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgIFwiT3BlbiBEZXZUb29scyAoQ29tbWFuZCtPcHRpb24rSSBvciBDb250cm9sK1NoaWZ0K0kpIHRvIGNvcHkgdGhlIGRlYnVnIGxvZ3MuXCIsXG4gICAgICApXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcbiAgICAgICAgdG9nZ2xlLnNldFZhbHVlKHRoaXMuc2V0dGluZ3MuZGVidWcpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ3MuZGVidWcgPSB2YWx1ZTtcbiAgICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNhdmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NUYWIgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncyxcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4uYWRkU2V0dGluZ1RhYihcbiAgICAgIG5ldyBPYnNpZGlhbk91dGxpbmVyUGx1Z2luU2V0dGluZ1RhYihcbiAgICAgICAgdGhpcy5wbHVnaW4uYXBwLFxuICAgICAgICB0aGlzLnBsdWdpbixcbiAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHt9XG59XG4iLCJpbXBvcnQgeyBQbHVnaW4gfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgUHJlYyB9IGZyb20gXCJAY29kZW1pcnJvci9zdGF0ZVwiO1xuaW1wb3J0IHsga2V5bWFwIH0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuL0ZlYXR1cmVcIjtcblxuaW1wb3J0IHsgTXlFZGl0b3IgfSBmcm9tIFwiLi4vZWRpdG9yXCI7XG5pbXBvcnQgeyBPdXRkZW50TGlzdCB9IGZyb20gXCIuLi9vcGVyYXRpb25zL091dGRlbnRMaXN0XCI7XG5pbXBvcnQgeyBJTUVEZXRlY3RvciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9JTUVEZXRlY3RvclwiO1xuaW1wb3J0IHsgT3BlcmF0aW9uUGVyZm9ybWVyIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09wZXJhdGlvblBlcmZvcm1lclwiO1xuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tIFwiLi4vc2VydmljZXMvU2V0dGluZ3NcIjtcbmltcG9ydCB7IGNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrIH0gZnJvbSBcIi4uL3V0aWxzL2NyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrXCI7XG5cbmV4cG9ydCBjbGFzcyBTaGlmdFRhYkJlaGF2aW91ck92ZXJyaWRlIGltcGxlbWVudHMgRmVhdHVyZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW4sXG4gICAgcHJpdmF0ZSBpbWVEZXRlY3RvcjogSU1FRGV0ZWN0b3IsXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lcixcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBQcmVjLmhpZ2hlc3QoXG4gICAgICAgIGtleW1hcC5vZihbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBcInMtVGFiXCIsXG4gICAgICAgICAgICBydW46IGNyZWF0ZUtleW1hcFJ1bkNhbGxiYWNrKHtcbiAgICAgICAgICAgICAgY2hlY2s6IHRoaXMuY2hlY2ssXG4gICAgICAgICAgICAgIHJ1bjogdGhpcy5ydW4sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHt9XG5cbiAgcHJpdmF0ZSBjaGVjayA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5vdmVycmlkZVRhYkJlaGF2aW91ciAmJiAhdGhpcy5pbWVEZXRlY3Rvci5pc09wZW5lZCgpO1xuICB9O1xuXG4gIHByaXZhdGUgcnVuID0gKGVkaXRvcjogTXlFZGl0b3IpID0+IHtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIucGVyZm9ybShcbiAgICAgIChyb290KSA9PiBuZXcgT3V0ZGVudExpc3Qocm9vdCksXG4gICAgICBlZGl0b3IsXG4gICAgKTtcbiAgfTtcbn1cbiIsImltcG9ydCB7IEFwcCwgTW9kYWwsIFBsdWdpbiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vRmVhdHVyZVwiO1xuXG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuXG5pbnRlcmZhY2UgQXBwSGlkZGVuUHJvcHMge1xuICBpbnRlcm5hbFBsdWdpbnM6IHtcbiAgICBjb25maWc6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9O1xuICB9O1xuICBpc01vYmlsZTogYm9vbGVhbjtcbiAgcGx1Z2luczoge1xuICAgIGVuYWJsZWRQbHVnaW5zOiBTZXQ8c3RyaW5nPjtcbiAgICBtYW5pZmVzdHM6IHsgW2tleTogc3RyaW5nXTogeyB2ZXJzaW9uOiBzdHJpbmcgfSB9O1xuICB9O1xuICB2YXVsdDoge1xuICAgIGNvbmZpZzogb2JqZWN0O1xuICB9O1xufVxuXG5jbGFzcyBTeXN0ZW1JbmZvTW9kYWwgZXh0ZW5kcyBNb2RhbCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIGFwcDogQXBwLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzLFxuICApIHtcbiAgICBzdXBlcihhcHApO1xuICB9XG5cbiAgYXN5bmMgb25PcGVuKCkge1xuICAgIHRoaXMudGl0bGVFbC5zZXRUZXh0KFwiU3lzdGVtIEluZm9ybWF0aW9uXCIpO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBhcHAgPSB0aGlzLmFwcCBhcyBhbnkgYXMgQXBwSGlkZGVuUHJvcHM7XG5cbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgcHJvY2Vzczoge1xuICAgICAgICBhcmNoOiBwcm9jZXNzLmFyY2gsXG4gICAgICAgIHBsYXRmb3JtOiBwcm9jZXNzLnBsYXRmb3JtLFxuICAgICAgfSxcbiAgICAgIGFwcDoge1xuICAgICAgICBpbnRlcm5hbFBsdWdpbnM6IHtcbiAgICAgICAgICBjb25maWc6IGFwcC5pbnRlcm5hbFBsdWdpbnMuY29uZmlnLFxuICAgICAgICB9LFxuICAgICAgICBpc01vYmlsZTogYXBwLmlzTW9iaWxlLFxuICAgICAgICBwbHVnaW5zOiB7XG4gICAgICAgICAgZW5hYmxlZFBsdWdpbnM6IEFycmF5LmZyb20oYXBwLnBsdWdpbnMuZW5hYmxlZFBsdWdpbnMpLFxuICAgICAgICAgIG1hbmlmZXN0czogT2JqZWN0LmtleXMoYXBwLnBsdWdpbnMubWFuaWZlc3RzKS5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgYWNjW2tleV0gPSB7XG4gICAgICAgICAgICAgICAgdmVyc2lvbjogYXBwLnBsdWdpbnMubWFuaWZlc3RzW2tleV0udmVyc2lvbixcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7fSBhcyB7IFtrZXk6IHN0cmluZ106IHsgdmVyc2lvbjogc3RyaW5nIH0gfSxcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgICB2YXVsdDoge1xuICAgICAgICAgIGNvbmZpZzogYXBwLnZhdWx0LmNvbmZpZyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBwbHVnaW46IHtcbiAgICAgICAgc2V0dGluZ3M6IHsgdmFsdWVzOiB0aGlzLnNldHRpbmdzLmdldFZhbHVlcygpIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCB0ZXh0ID0gSlNPTi5zdHJpbmdpZnkoZGF0YSwgbnVsbCwgMik7XG5cbiAgICBjb25zdCBwcmUgPSB0aGlzLmNvbnRlbnRFbC5jcmVhdGVFbChcInByZVwiKTtcbiAgICBwcmUuc2V0VGV4dCh0ZXh0KTtcbiAgICBwcmUuc2V0Q3NzU3R5bGVzKHtcbiAgICAgIG92ZXJmbG93OiBcInNjcm9sbFwiLFxuICAgICAgbWF4SGVpZ2h0OiBcIjMwMHB4XCIsXG4gICAgfSk7XG5cbiAgICBjb25zdCBidXR0b24gPSB0aGlzLmNvbnRlbnRFbC5jcmVhdGVFbChcImJ1dHRvblwiKTtcbiAgICBidXR0b24uc2V0VGV4dChcIkNvcHkgYW5kIENsb3NlXCIpO1xuICAgIGJ1dHRvbi5vbkNsaWNrRXZlbnQoKCkgPT4ge1xuICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoXCJgYGBqc29uXFxuXCIgKyB0ZXh0ICsgXCJcXG5gYGBcIik7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN5c3RlbUluZm8gaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbixcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncyxcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4uYWRkQ29tbWFuZCh7XG4gICAgICBpZDogXCJzeXN0ZW0taW5mb1wiLFxuICAgICAgbmFtZTogXCJTaG93IFN5c3RlbSBJbmZvXCIsXG4gICAgICBjYWxsYmFjazogdGhpcy5jYWxsYmFjayxcbiAgICAgIGhvdGtleXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG1vZGlmaWVyczogW1wiTW9kXCIsIFwiU2hpZnRcIiwgXCJBbHRcIl0sXG4gICAgICAgICAga2V5OiBcIklcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgY29uc3QgbW9kYWwgPSBuZXcgU3lzdGVtSW5mb01vZGFsKHRoaXMucGx1Z2luLmFwcCwgdGhpcy5zZXR0aW5ncyk7XG4gICAgbW9kYWwub3BlbigpO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IFByZWMgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivc3RhdGVcIjtcbmltcG9ydCB7IGtleW1hcCB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9GZWF0dXJlXCI7XG5cbmltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgSW5kZW50TGlzdCB9IGZyb20gXCIuLi9vcGVyYXRpb25zL0luZGVudExpc3RcIjtcbmltcG9ydCB7IElNRURldGVjdG9yIH0gZnJvbSBcIi4uL3NlcnZpY2VzL0lNRURldGVjdG9yXCI7XG5pbXBvcnQgeyBPYnNpZGlhblNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2V0dGluZ3NcIjtcbmltcG9ydCB7IE9wZXJhdGlvblBlcmZvcm1lciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5pbXBvcnQgeyBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayB9IGZyb20gXCIuLi91dGlscy9jcmVhdGVLZXltYXBSdW5DYWxsYmFja1wiO1xuXG5leHBvcnQgY2xhc3MgVGFiQmVoYXZpb3VyT3ZlcnJpZGUgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbHVnaW46IFBsdWdpbixcbiAgICBwcml2YXRlIGltZURldGVjdG9yOiBJTUVEZXRlY3RvcixcbiAgICBwcml2YXRlIG9ic2lkaWFuU2V0dGluZ3M6IE9ic2lkaWFuU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25QZXJmb3JtZXI6IE9wZXJhdGlvblBlcmZvcm1lcixcbiAgKSB7fVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBQcmVjLmhpZ2hlc3QoXG4gICAgICAgIGtleW1hcC5vZihbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBcIlRhYlwiLFxuICAgICAgICAgICAgcnVuOiBjcmVhdGVLZXltYXBSdW5DYWxsYmFjayh7XG4gICAgICAgICAgICAgIGNoZWNrOiB0aGlzLmNoZWNrLFxuICAgICAgICAgICAgICBydW46IHRoaXMucnVuLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSksXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQoKSB7fVxuXG4gIHByaXZhdGUgY2hlY2sgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3Mub3ZlcnJpZGVUYWJCZWhhdmlvdXIgJiYgIXRoaXMuaW1lRGV0ZWN0b3IuaXNPcGVuZWQoKTtcbiAgfTtcblxuICBwcml2YXRlIHJ1biA9IChlZGl0b3I6IE15RWRpdG9yKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyLnBlcmZvcm0oXG4gICAgICAocm9vdCkgPT5cbiAgICAgICAgbmV3IEluZGVudExpc3Qocm9vdCwgdGhpcy5vYnNpZGlhblNldHRpbmdzLmdldERlZmF1bHRJbmRlbnRDaGFycygpKSxcbiAgICAgIGVkaXRvcixcbiAgICApO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7XG4gIEVkaXRvclZpZXcsXG4gIFBsdWdpblZhbHVlLFxuICBWaWV3UGx1Z2luLFxuICBWaWV3VXBkYXRlLFxufSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSBcIi4vRmVhdHVyZVwiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciwgZ2V0RWRpdG9yRnJvbVN0YXRlIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgTGlzdCB9IGZyb20gXCIuLi9yb290XCI7XG5pbXBvcnQgeyBPYnNpZGlhblNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL09ic2lkaWFuU2V0dGluZ3NcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9QYXJzZXJcIjtcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL1NldHRpbmdzXCI7XG5cbmNvbnN0IFZFUlRJQ0FMX0xJTkVTX0JPRFlfQ0xBU1MgPSBcIm91dGxpbmVyLXBsdWdpbi12ZXJ0aWNhbC1saW5lc1wiO1xuXG5pbnRlcmZhY2UgTGluZURhdGEge1xuICB0b3A6IG51bWJlcjtcbiAgbGVmdDogbnVtYmVyO1xuICBoZWlnaHQ6IHN0cmluZztcbiAgbGlzdDogTGlzdDtcbn1cblxuY2xhc3MgVmVydGljYWxMaW5lc1BsdWdpblZhbHVlIGltcGxlbWVudHMgUGx1Z2luVmFsdWUge1xuICBwcml2YXRlIHNjaGVkdWxlZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gIHByaXZhdGUgc2Nyb2xsZXI6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGNvbnRlbnRDb250YWluZXI6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGVkaXRvcjogTXlFZGl0b3I7XG4gIHByaXZhdGUgbGFzdExpbmU6IG51bWJlcjtcbiAgcHJpdmF0ZSBsaW5lczogTGluZURhdGFbXTtcbiAgcHJpdmF0ZSBsaW5lRWxlbWVudHM6IEhUTUxFbGVtZW50W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncyxcbiAgICBwcml2YXRlIG9ic2lkaWFuU2V0dGluZ3M6IE9ic2lkaWFuU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBwYXJzZXI6IFBhcnNlcixcbiAgICBwcml2YXRlIHZpZXc6IEVkaXRvclZpZXcsXG4gICkge1xuICAgIHRoaXMudmlldy5zY3JvbGxET00uYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCB0aGlzLm9uU2Nyb2xsKTtcbiAgICB0aGlzLnNldHRpbmdzLm9uQ2hhbmdlKHRoaXMuc2NoZWR1bGVSZWNhbGN1bGF0ZSk7XG5cbiAgICB0aGlzLnByZXBhcmVEb20oKTtcbiAgICB0aGlzLndhaXRGb3JFZGl0b3IoKTtcbiAgfVxuXG4gIHByaXZhdGUgd2FpdEZvckVkaXRvciA9ICgpID0+IHtcbiAgICBjb25zdCBlZGl0b3IgPSBnZXRFZGl0b3JGcm9tU3RhdGUodGhpcy52aWV3LnN0YXRlKTtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgc2V0VGltZW91dCh0aGlzLndhaXRGb3JFZGl0b3IsIDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgICB0aGlzLnNjaGVkdWxlUmVjYWxjdWxhdGUoKTtcbiAgfTtcblxuICBwcml2YXRlIHByZXBhcmVEb20oKSB7XG4gICAgdGhpcy5jb250ZW50Q29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICB0aGlzLmNvbnRlbnRDb250YWluZXIuY2xhc3NMaXN0LmFkZChcbiAgICAgIFwib3V0bGluZXItcGx1Z2luLWxpc3QtbGluZXMtY29udGVudC1jb250YWluZXJcIixcbiAgICApO1xuXG4gICAgdGhpcy5zY3JvbGxlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgdGhpcy5zY3JvbGxlci5jbGFzc0xpc3QuYWRkKFwib3V0bGluZXItcGx1Z2luLWxpc3QtbGluZXMtc2Nyb2xsZXJcIik7XG5cbiAgICB0aGlzLnNjcm9sbGVyLmFwcGVuZENoaWxkKHRoaXMuY29udGVudENvbnRhaW5lcik7XG4gICAgdGhpcy52aWV3LmRvbS5hcHBlbmRDaGlsZCh0aGlzLnNjcm9sbGVyKTtcbiAgfVxuXG4gIHByaXZhdGUgb25TY3JvbGwgPSAoZTogRXZlbnQpID0+IHtcbiAgICBjb25zdCB7IHNjcm9sbExlZnQsIHNjcm9sbFRvcCB9ID0gZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgdGhpcy5zY3JvbGxlci5zY3JvbGxUbyhzY3JvbGxMZWZ0LCBzY3JvbGxUb3ApO1xuICB9O1xuXG4gIHByaXZhdGUgc2NoZWR1bGVSZWNhbGN1bGF0ZSA9ICgpID0+IHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5zY2hlZHVsZWQpO1xuICAgIHRoaXMuc2NoZWR1bGVkID0gc2V0VGltZW91dCh0aGlzLmNhbGN1bGF0ZSwgMCk7XG4gIH07XG5cbiAgdXBkYXRlKHVwZGF0ZTogVmlld1VwZGF0ZSkge1xuICAgIGlmIChcbiAgICAgIHVwZGF0ZS5kb2NDaGFuZ2VkIHx8XG4gICAgICB1cGRhdGUudmlld3BvcnRDaGFuZ2VkIHx8XG4gICAgICB1cGRhdGUuZ2VvbWV0cnlDaGFuZ2VkIHx8XG4gICAgICB1cGRhdGUudHJhbnNhY3Rpb25zLnNvbWUoKHRyKSA9PiB0ci5yZWNvbmZpZ3VyZWQpXG4gICAgKSB7XG4gICAgICB0aGlzLnNjaGVkdWxlUmVjYWxjdWxhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZSA9ICgpID0+IHtcbiAgICB0aGlzLmxpbmVzID0gW107XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLnNldHRpbmdzLnZlcnRpY2FsTGluZXMgJiZcbiAgICAgIHRoaXMub2JzaWRpYW5TZXR0aW5ncy5pc0RlZmF1bHRUaGVtZUVuYWJsZWQoKSAmJlxuICAgICAgdGhpcy52aWV3LnZpZXdwb3J0TGluZUJsb2Nrcy5sZW5ndGggPiAwICYmXG4gICAgICB0aGlzLnZpZXcudmlzaWJsZVJhbmdlcy5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBjb25zdCBmcm9tTGluZSA9IHRoaXMuZWRpdG9yLm9mZnNldFRvUG9zKHRoaXMudmlldy52aWV3cG9ydC5mcm9tKS5saW5lO1xuICAgICAgY29uc3QgdG9MaW5lID0gdGhpcy5lZGl0b3Iub2Zmc2V0VG9Qb3ModGhpcy52aWV3LnZpZXdwb3J0LnRvKS5saW5lO1xuICAgICAgY29uc3QgbGlzdHMgPSB0aGlzLnBhcnNlci5wYXJzZVJhbmdlKHRoaXMuZWRpdG9yLCBmcm9tTGluZSwgdG9MaW5lKTtcblxuICAgICAgZm9yIChjb25zdCBsaXN0IG9mIGxpc3RzKSB7XG4gICAgICAgIHRoaXMubGFzdExpbmUgPSBsaXN0LmdldENvbnRlbnRFbmQoKS5saW5lO1xuXG4gICAgICAgIGZvciAoY29uc3QgYyBvZiBsaXN0LmdldENoaWxkcmVuKCkpIHtcbiAgICAgICAgICB0aGlzLnJlY3Vyc2l2ZShjKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLmxpbmVzLnNvcnQoKGEsIGIpID0+XG4gICAgICAgIGEudG9wID09PSBiLnRvcCA/IGEubGVmdCAtIGIubGVmdCA6IGEudG9wIC0gYi50b3AsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlRG9tKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBnZXROZXh0U2libGluZyhsaXN0OiBMaXN0KTogTGlzdCB8IG51bGwge1xuICAgIGxldCBsaXN0VG1wID0gbGlzdDtcbiAgICBsZXQgcCA9IGxpc3RUbXAuZ2V0UGFyZW50KCk7XG4gICAgd2hpbGUgKHApIHtcbiAgICAgIGNvbnN0IG5leHRTaWJsaW5nID0gcC5nZXROZXh0U2libGluZ09mKGxpc3RUbXApO1xuICAgICAgaWYgKG5leHRTaWJsaW5nKSB7XG4gICAgICAgIHJldHVybiBuZXh0U2libGluZztcbiAgICAgIH1cbiAgICAgIGxpc3RUbXAgPSBwO1xuICAgICAgcCA9IGxpc3RUbXAuZ2V0UGFyZW50KCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSByZWN1cnNpdmUobGlzdDogTGlzdCwgcGFyZW50Q3R4OiB7IHJvb3RMZWZ0PzogbnVtYmVyIH0gPSB7fSkge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gbGlzdC5nZXRDaGlsZHJlbigpO1xuXG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZyb21PZmZzZXQgPSB0aGlzLmVkaXRvci5wb3NUb09mZnNldCh7XG4gICAgICBsaW5lOiBsaXN0LmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpLmxpbmUsXG4gICAgICBjaDogbGlzdC5nZXRGaXJzdExpbmVJbmRlbnQoKS5sZW5ndGgsXG4gICAgfSk7XG4gICAgY29uc3QgbmV4dFNpYmxpbmcgPSB0aGlzLmdldE5leHRTaWJsaW5nKGxpc3QpO1xuICAgIGNvbnN0IHRpbGxPZmZzZXQgPSB0aGlzLmVkaXRvci5wb3NUb09mZnNldCh7XG4gICAgICBsaW5lOiBuZXh0U2libGluZ1xuICAgICAgICA/IG5leHRTaWJsaW5nLmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpLmxpbmUgLSAxXG4gICAgICAgIDogdGhpcy5sYXN0TGluZSxcbiAgICAgIGNoOiAwLFxuICAgIH0pO1xuXG4gICAgbGV0IHZpc2libGVGcm9tID0gdGhpcy52aWV3LnZpc2libGVSYW5nZXNbMF0uZnJvbTtcbiAgICBsZXQgdmlzaWJsZVRvID1cbiAgICAgIHRoaXMudmlldy52aXNpYmxlUmFuZ2VzW3RoaXMudmlldy52aXNpYmxlUmFuZ2VzLmxlbmd0aCAtIDFdLnRvO1xuICAgIGNvbnN0IHpvb21SYW5nZSA9IHRoaXMuZWRpdG9yLmdldFpvb21SYW5nZSgpO1xuICAgIGlmICh6b29tUmFuZ2UpIHtcbiAgICAgIHZpc2libGVGcm9tID0gTWF0aC5tYXgoXG4gICAgICAgIHZpc2libGVGcm9tLFxuICAgICAgICB0aGlzLmVkaXRvci5wb3NUb09mZnNldCh6b29tUmFuZ2UuZnJvbSksXG4gICAgICApO1xuICAgICAgdmlzaWJsZVRvID0gTWF0aC5taW4odmlzaWJsZVRvLCB0aGlzLmVkaXRvci5wb3NUb09mZnNldCh6b29tUmFuZ2UudG8pKTtcbiAgICB9XG5cbiAgICBpZiAoZnJvbU9mZnNldCA+IHZpc2libGVUbyB8fCB0aWxsT2Zmc2V0IDwgdmlzaWJsZUZyb20pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb29yZHMgPSB0aGlzLnZpZXcuY29vcmRzQXRQb3MoZnJvbU9mZnNldCwgMSk7XG4gICAgaWYgKHBhcmVudEN0eC5yb290TGVmdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJlbnRDdHgucm9vdExlZnQgPSBjb29yZHMubGVmdDtcbiAgICB9XG4gICAgY29uc3QgbGVmdCA9IE1hdGguZmxvb3IoY29vcmRzLnJpZ2h0IC0gcGFyZW50Q3R4LnJvb3RMZWZ0KTtcblxuICAgIGNvbnN0IHRvcCA9XG4gICAgICB2aXNpYmxlRnJvbSA+IDAgJiYgZnJvbU9mZnNldCA8IHZpc2libGVGcm9tXG4gICAgICAgID8gLTIwXG4gICAgICAgIDogdGhpcy52aWV3LmxpbmVCbG9ja0F0KGZyb21PZmZzZXQpLnRvcDtcbiAgICBjb25zdCBib3R0b20gPVxuICAgICAgdGlsbE9mZnNldCA+IHZpc2libGVUb1xuICAgICAgICA/IHRoaXMudmlldy5saW5lQmxvY2tBdCh2aXNpYmxlVG8gLSAxKS5ib3R0b21cbiAgICAgICAgOiB0aGlzLnZpZXcubGluZUJsb2NrQXQodGlsbE9mZnNldCkuYm90dG9tO1xuICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcblxuICAgIGlmIChoZWlnaHQgPiAwICYmICFsaXN0LmlzRm9sZGVkKCkpIHtcbiAgICAgIGNvbnN0IG5leHRTaWJsaW5nID0gbGlzdC5nZXRQYXJlbnQoKS5nZXROZXh0U2libGluZ09mKGxpc3QpO1xuICAgICAgY29uc3QgaGFzTmV4dFNpYmxpbmcgPVxuICAgICAgICAhIW5leHRTaWJsaW5nICYmXG4gICAgICAgIHRoaXMuZWRpdG9yLnBvc1RvT2Zmc2V0KG5leHRTaWJsaW5nLmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpKSA8PVxuICAgICAgICAgIHZpc2libGVUbztcblxuICAgICAgdGhpcy5saW5lcy5wdXNoKHtcbiAgICAgICAgdG9wLFxuICAgICAgICBsZWZ0LFxuICAgICAgICBoZWlnaHQ6IGBjYWxjKCR7aGVpZ2h0fXB4ICR7aGFzTmV4dFNpYmxpbmcgPyBcIi0gMS41ZW1cIiA6IFwiLSAyZW1cIn0pYCxcbiAgICAgICAgbGlzdCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgIGlmICghY2hpbGQuaXNFbXB0eSgpKSB7XG4gICAgICAgIHRoaXMucmVjdXJzaXZlKGNoaWxkLCBwYXJlbnRDdHgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25DbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgY29uc3QgbGluZSA9IHRoaXMubGluZXNbTnVtYmVyKChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuZGF0YXNldC5pbmRleCldO1xuXG4gICAgc3dpdGNoICh0aGlzLnNldHRpbmdzLnZlcnRpY2FsTGluZXNBY3Rpb24pIHtcbiAgICAgIGNhc2UgXCJ6b29tLWluXCI6XG4gICAgICAgIHRoaXMuem9vbUluKGxpbmUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcInRvZ2dsZS1mb2xkaW5nXCI6XG4gICAgICAgIHRoaXMudG9nZ2xlRm9sZGluZyhsaW5lKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgem9vbUluKGxpbmU6IExpbmVEYXRhKSB7XG4gICAgY29uc3QgZWRpdG9yID0gZ2V0RWRpdG9yRnJvbVN0YXRlKHRoaXMudmlldy5zdGF0ZSk7XG5cbiAgICBlZGl0b3Iuem9vbUluKGxpbmUubGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlRm9sZGluZyhsaW5lOiBMaW5lRGF0YSkge1xuICAgIGNvbnN0IHsgbGlzdCB9ID0gbGluZTtcblxuICAgIGlmIChsaXN0LmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBuZWVkVG9VbmZvbGQgPSB0cnVlO1xuICAgIGNvbnN0IGxpbmVzVG9Ub2dnbGU6IG51bWJlcltdID0gW107XG4gICAgZm9yIChjb25zdCBjIG9mIGxpc3QuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgaWYgKGMuaXNFbXB0eSgpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFjLmlzRm9sZGVkKCkpIHtcbiAgICAgICAgbmVlZFRvVW5mb2xkID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBsaW5lc1RvVG9nZ2xlLnB1c2goYy5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lKTtcbiAgICB9XG5cbiAgICBjb25zdCBlZGl0b3IgPSBnZXRFZGl0b3JGcm9tU3RhdGUodGhpcy52aWV3LnN0YXRlKTtcblxuICAgIGZvciAoY29uc3QgbCBvZiBsaW5lc1RvVG9nZ2xlKSB7XG4gICAgICBpZiAobmVlZFRvVW5mb2xkKSB7XG4gICAgICAgIGVkaXRvci51bmZvbGQobCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlZGl0b3IuZm9sZChsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURvbSgpIHtcbiAgICBjb25zdCBjbVNjcm9sbCA9IHRoaXMudmlldy5zY3JvbGxET007XG4gICAgY29uc3QgY21Db250ZW50ID0gdGhpcy52aWV3LmNvbnRlbnRET007XG4gICAgY29uc3QgY21Db250ZW50Q29udGFpbmVyID0gY21Db250ZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgY29uc3QgY21TaXplciA9IGNtQ29udGVudENvbnRhaW5lci5wYXJlbnRFbGVtZW50O1xuXG4gICAgLyoqXG4gICAgICogT2JzaWRpYW4gY2FuIGFkZCBhZGRpdGlvbmFsIGVsZW1lbnRzIGludG8gQ29udGVudCBNYW5hZ2VyLlxuICAgICAqIFRoZSBtb3N0IG9idmlvdXMgY2FzZSBpcyB0aGUgJ2VtYmVkZGVkLWJhY2tsaW5rcycgY29yZSBwbHVnaW4gdGhhdCBhZGRzIGEgbWVudSBpbnNpZGUgYSBDb250ZW50IE1hbmFnZXIuXG4gICAgICogV2UgbXVzdCB0YWtlIGhlaWdodHMgb2YgYWxsIG9mIHRoZXNlIGVsZW1lbnRzIGludG8gYWNjb3VudFxuICAgICAqIHRvIGJlIGFibGUgdG8gY2FsY3VsYXRlIHRoZSBjb3JyZWN0IHNpemUgb2YgbGluZXMnIGNvbnRhaW5lci5cbiAgICAgKi9cbiAgICBsZXQgY21TaXplckNoaWxkcmVuU3VtSGVpZ2h0ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNtU2l6ZXIuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNtU2l6ZXJDaGlsZHJlblN1bUhlaWdodCArPSBjbVNpemVyLmNoaWxkcmVuW2ldLmNsaWVudEhlaWdodDtcbiAgICB9XG5cbiAgICB0aGlzLnNjcm9sbGVyLnN0eWxlLnRvcCA9IGNtU2Nyb2xsLm9mZnNldFRvcCArIFwicHhcIjtcbiAgICB0aGlzLmNvbnRlbnRDb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gY21TaXplckNoaWxkcmVuU3VtSGVpZ2h0ICsgXCJweFwiO1xuICAgIHRoaXMuY29udGVudENvbnRhaW5lci5zdHlsZS5tYXJnaW5MZWZ0ID1cbiAgICAgIGNtQ29udGVudENvbnRhaW5lci5vZmZzZXRMZWZ0ICsgXCJweFwiO1xuICAgIHRoaXMuY29udGVudENvbnRhaW5lci5zdHlsZS5tYXJnaW5Ub3AgPVxuICAgICAgKGNtQ29udGVudC5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudCkub2Zmc2V0VG9wIC0gMjQgKyBcInB4XCI7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmxpbmVFbGVtZW50cy5sZW5ndGggPT09IGkpIHtcbiAgICAgICAgY29uc3QgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgIGUuY2xhc3NMaXN0LmFkZChcIm91dGxpbmVyLXBsdWdpbi1saXN0LWxpbmVcIik7XG4gICAgICAgIGUuZGF0YXNldC5pbmRleCA9IFN0cmluZyhpKTtcbiAgICAgICAgZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIHRoaXMub25DbGljayk7XG4gICAgICAgIHRoaXMuY29udGVudENvbnRhaW5lci5hcHBlbmRDaGlsZChlKTtcbiAgICAgICAgdGhpcy5saW5lRWxlbWVudHMucHVzaChlKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbCA9IHRoaXMubGluZXNbaV07XG4gICAgICBjb25zdCBlID0gdGhpcy5saW5lRWxlbWVudHNbaV07XG4gICAgICBlLnN0eWxlLnRvcCA9IGwudG9wICsgXCJweFwiO1xuICAgICAgZS5zdHlsZS5sZWZ0ID0gbC5sZWZ0ICsgXCJweFwiO1xuICAgICAgZS5zdHlsZS5oZWlnaHQgPSBsLmhlaWdodDtcbiAgICAgIGUuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gdGhpcy5saW5lcy5sZW5ndGg7IGkgPCB0aGlzLmxpbmVFbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZSA9IHRoaXMubGluZUVsZW1lbnRzW2ldO1xuICAgICAgZS5zdHlsZS50b3AgPSBcIjBweFwiO1xuICAgICAgZS5zdHlsZS5sZWZ0ID0gXCIwcHhcIjtcbiAgICAgIGUuc3R5bGUuaGVpZ2h0ID0gXCIwcHhcIjtcbiAgICAgIGUuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgIH1cbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5zZXR0aW5ncy5yZW1vdmVDYWxsYmFjayh0aGlzLnNjaGVkdWxlUmVjYWxjdWxhdGUpO1xuICAgIHRoaXMudmlldy5zY3JvbGxET00ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCB0aGlzLm9uU2Nyb2xsKTtcbiAgICB0aGlzLnZpZXcuZG9tLnJlbW92ZUNoaWxkKHRoaXMuc2Nyb2xsZXIpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnNjaGVkdWxlZCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFZlcnRpY2FsTGluZXMgaW1wbGVtZW50cyBGZWF0dXJlIHtcbiAgcHJpdmF0ZSB1cGRhdGVCb2R5Q2xhc3NJbnRlcnZhbDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGx1Z2luOiBQbHVnaW4sXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSBvYnNpZGlhblNldHRpbmdzOiBPYnNpZGlhblNldHRpbmdzLFxuICAgIHByaXZhdGUgcGFyc2VyOiBQYXJzZXIsXG4gICkge31cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMudXBkYXRlQm9keUNsYXNzKCk7XG4gICAgdGhpcy51cGRhdGVCb2R5Q2xhc3NJbnRlcnZhbCA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUJvZHlDbGFzcygpO1xuICAgIH0sIDEwMDApO1xuXG4gICAgdGhpcy5wbHVnaW4ucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oXG4gICAgICBWaWV3UGx1Z2luLmRlZmluZShcbiAgICAgICAgKHZpZXcpID0+XG4gICAgICAgICAgbmV3IFZlcnRpY2FsTGluZXNQbHVnaW5WYWx1ZShcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgICAgICB0aGlzLm9ic2lkaWFuU2V0dGluZ3MsXG4gICAgICAgICAgICB0aGlzLnBhcnNlcixcbiAgICAgICAgICAgIHZpZXcsXG4gICAgICAgICAgKSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpIHtcbiAgICBjbGVhckludGVydmFsKHRoaXMudXBkYXRlQm9keUNsYXNzSW50ZXJ2YWwpO1xuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShWRVJUSUNBTF9MSU5FU19CT0RZX0NMQVNTKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQm9keUNsYXNzID0gKCkgPT4ge1xuICAgIGNvbnN0IHNob3VsZEV4aXN0cyA9XG4gICAgICB0aGlzLm9ic2lkaWFuU2V0dGluZ3MuaXNEZWZhdWx0VGhlbWVFbmFibGVkKCkgJiZcbiAgICAgIHRoaXMuc2V0dGluZ3MudmVydGljYWxMaW5lcztcbiAgICBjb25zdCBleGlzdHMgPSBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucyhWRVJUSUNBTF9MSU5FU19CT0RZX0NMQVNTKTtcblxuICAgIGlmIChzaG91bGRFeGlzdHMgJiYgIWV4aXN0cykge1xuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFZFUlRJQ0FMX0xJTkVTX0JPRFlfQ0xBU1MpO1xuICAgIH1cblxuICAgIGlmICghc2hvdWxkRXhpc3RzICYmIGV4aXN0cykge1xuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKFZFUlRJQ0FMX0xJTkVTX0JPRFlfQ0xBU1MpO1xuICAgIH1cbiAgfTtcbn1cbiIsImltcG9ydCB7IE15RWRpdG9yIH0gZnJvbSBcIi4uL2VkaXRvclwiO1xuaW1wb3J0IHsgTGlzdCwgUG9zaXRpb24sIFJvb3QsIGlzUmFuZ2VzSW50ZXJzZWN0cyB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBDaGFuZ2VzQXBwbGljYXRvciB7XG4gIGFwcGx5KGVkaXRvcjogTXlFZGl0b3IsIHByZXZSb290OiBSb290LCBuZXdSb290OiBSb290KSB7XG4gICAgY29uc3QgY2hhbmdlcyA9IHRoaXMuY2FsY3VsYXRlQ2hhbmdlcyhlZGl0b3IsIHByZXZSb290LCBuZXdSb290KTtcbiAgICBpZiAoY2hhbmdlcykge1xuICAgICAgY29uc3QgeyByZXBsYWNlbWVudCwgY2hhbmdlRnJvbSwgY2hhbmdlVG8gfSA9IGNoYW5nZXM7XG5cbiAgICAgIGNvbnN0IHsgdW5mb2xkLCBmb2xkIH0gPSB0aGlzLmNhbGN1bGF0ZUZvbGRpbmdPcHJhdGlvbnMoXG4gICAgICAgIHByZXZSb290LFxuICAgICAgICBuZXdSb290LFxuICAgICAgICBjaGFuZ2VGcm9tLFxuICAgICAgICBjaGFuZ2VUbyxcbiAgICAgICk7XG5cbiAgICAgIGZvciAoY29uc3QgbGluZSBvZiB1bmZvbGQpIHtcbiAgICAgICAgZWRpdG9yLnVuZm9sZChsaW5lKTtcbiAgICAgIH1cblxuICAgICAgZWRpdG9yLnJlcGxhY2VSYW5nZShyZXBsYWNlbWVudCwgY2hhbmdlRnJvbSwgY2hhbmdlVG8pO1xuXG4gICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgZm9sZCkge1xuICAgICAgICBlZGl0b3IuZm9sZChsaW5lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBlZGl0b3Iuc2V0U2VsZWN0aW9ucyhuZXdSb290LmdldFNlbGVjdGlvbnMoKSk7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZUNoYW5nZXMoZWRpdG9yOiBNeUVkaXRvciwgcHJldlJvb3Q6IFJvb3QsIG5ld1Jvb3Q6IFJvb3QpIHtcbiAgICBjb25zdCByb290UmFuZ2UgPSBwcmV2Um9vdC5nZXRDb250ZW50UmFuZ2UoKTtcbiAgICBjb25zdCBvbGRTdHJpbmcgPSBlZGl0b3IuZ2V0UmFuZ2Uocm9vdFJhbmdlWzBdLCByb290UmFuZ2VbMV0pO1xuICAgIGNvbnN0IG5ld1N0cmluZyA9IG5ld1Jvb3QucHJpbnQoKTtcblxuICAgIGNvbnN0IGNoYW5nZUZyb20gPSB7IC4uLnJvb3RSYW5nZVswXSB9O1xuICAgIGNvbnN0IGNoYW5nZVRvID0geyAuLi5yb290UmFuZ2VbMV0gfTtcbiAgICBsZXQgb2xkVG1wID0gb2xkU3RyaW5nO1xuICAgIGxldCBuZXdUbXAgPSBuZXdTdHJpbmc7XG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgY29uc3QgbmxJbmRleCA9IG9sZFRtcC5sYXN0SW5kZXhPZihcIlxcblwiKTtcblxuICAgICAgaWYgKG5sSW5kZXggPCAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvbGRMaW5lID0gb2xkVG1wLnNsaWNlKG5sSW5kZXgpO1xuICAgICAgY29uc3QgbmV3TGluZSA9IG5ld1RtcC5zbGljZSgtb2xkTGluZS5sZW5ndGgpO1xuXG4gICAgICBpZiAob2xkTGluZSAhPT0gbmV3TGluZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgb2xkVG1wID0gb2xkVG1wLnNsaWNlKDAsIC1vbGRMaW5lLmxlbmd0aCk7XG4gICAgICBuZXdUbXAgPSBuZXdUbXAuc2xpY2UoMCwgLW9sZExpbmUubGVuZ3RoKTtcbiAgICAgIGNvbnN0IG5sSW5kZXgyID0gb2xkVG1wLmxhc3RJbmRleE9mKFwiXFxuXCIpO1xuICAgICAgY2hhbmdlVG8uY2ggPVxuICAgICAgICBubEluZGV4MiA+PSAwID8gb2xkVG1wLmxlbmd0aCAtIG5sSW5kZXgyIC0gMSA6IG9sZFRtcC5sZW5ndGg7XG4gICAgICBjaGFuZ2VUby5saW5lLS07XG4gICAgfVxuXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGNvbnN0IG5sSW5kZXggPSBvbGRUbXAuaW5kZXhPZihcIlxcblwiKTtcblxuICAgICAgaWYgKG5sSW5kZXggPCAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvbGRMaW5lID0gb2xkVG1wLnNsaWNlKDAsIG5sSW5kZXggKyAxKTtcbiAgICAgIGNvbnN0IG5ld0xpbmUgPSBuZXdUbXAuc2xpY2UoMCwgb2xkTGluZS5sZW5ndGgpO1xuXG4gICAgICBpZiAob2xkTGluZSAhPT0gbmV3TGluZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2hhbmdlRnJvbS5saW5lKys7XG4gICAgICBvbGRUbXAgPSBvbGRUbXAuc2xpY2Uob2xkTGluZS5sZW5ndGgpO1xuICAgICAgbmV3VG1wID0gbmV3VG1wLnNsaWNlKG9sZExpbmUubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBpZiAob2xkVG1wID09PSBuZXdUbXApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByZXBsYWNlbWVudDogbmV3VG1wLFxuICAgICAgY2hhbmdlRnJvbSxcbiAgICAgIGNoYW5nZVRvLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZUZvbGRpbmdPcHJhdGlvbnMoXG4gICAgcHJldlJvb3Q6IFJvb3QsXG4gICAgbmV3Um9vdDogUm9vdCxcbiAgICBjaGFuZ2VGcm9tOiBQb3NpdGlvbixcbiAgICBjaGFuZ2VUbzogUG9zaXRpb24sXG4gICkge1xuICAgIGNvbnN0IGNoYW5nZWRSYW5nZTogW1Bvc2l0aW9uLCBQb3NpdGlvbl0gPSBbY2hhbmdlRnJvbSwgY2hhbmdlVG9dO1xuXG4gICAgY29uc3QgcHJldkxpc3RzID0gZ2V0QWxsQ2hpbGRyZW4ocHJldlJvb3QpO1xuICAgIGNvbnN0IG5ld0xpc3RzID0gZ2V0QWxsQ2hpbGRyZW4obmV3Um9vdCk7XG5cbiAgICBjb25zdCB1bmZvbGQ6IG51bWJlcltdID0gW107XG4gICAgY29uc3QgZm9sZDogbnVtYmVyW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgcHJldkxpc3Qgb2YgcHJldkxpc3RzLnZhbHVlcygpKSB7XG4gICAgICBpZiAoIXByZXZMaXN0LmlzRm9sZFJvb3QoKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3TGlzdCA9IG5ld0xpc3RzLmdldChwcmV2TGlzdC5nZXRJRCgpKTtcblxuICAgICAgaWYgKCFuZXdMaXN0KSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwcmV2TGlzdFJhbmdlOiBbUG9zaXRpb24sIFBvc2l0aW9uXSA9IFtcbiAgICAgICAgcHJldkxpc3QuZ2V0Rmlyc3RMaW5lQ29udGVudFN0YXJ0KCksXG4gICAgICAgIHByZXZMaXN0LmdldENvbnRlbnRFbmRJbmNsdWRpbmdDaGlsZHJlbigpLFxuICAgICAgXTtcblxuICAgICAgaWYgKGlzUmFuZ2VzSW50ZXJzZWN0cyhwcmV2TGlzdFJhbmdlLCBjaGFuZ2VkUmFuZ2UpKSB7XG4gICAgICAgIHVuZm9sZC5wdXNoKHByZXZMaXN0LmdldEZpcnN0TGluZUNvbnRlbnRTdGFydCgpLmxpbmUpO1xuICAgICAgICBmb2xkLnB1c2gobmV3TGlzdC5nZXRGaXJzdExpbmVDb250ZW50U3RhcnQoKS5saW5lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB1bmZvbGQuc29ydCgoYSwgYikgPT4gYiAtIGEpO1xuICAgIGZvbGQuc29ydCgoYSwgYikgPT4gYiAtIGEpO1xuXG4gICAgcmV0dXJuIHsgdW5mb2xkLCBmb2xkIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0QWxsQ2hpbGRyZW5SZWR1Y2VGbihhY2M6IE1hcDxudW1iZXIsIExpc3Q+LCBjaGlsZDogTGlzdCkge1xuICBhY2Muc2V0KGNoaWxkLmdldElEKCksIGNoaWxkKTtcbiAgY2hpbGQuZ2V0Q2hpbGRyZW4oKS5yZWR1Y2UoZ2V0QWxsQ2hpbGRyZW5SZWR1Y2VGbiwgYWNjKTtcblxuICByZXR1cm4gYWNjO1xufVxuXG5mdW5jdGlvbiBnZXRBbGxDaGlsZHJlbihyb290OiBSb290KTogTWFwPG51bWJlciwgTGlzdD4ge1xuICByZXR1cm4gcm9vdC5nZXRDaGlsZHJlbigpLnJlZHVjZShnZXRBbGxDaGlsZHJlblJlZHVjZUZuLCBuZXcgTWFwKCkpO1xufVxuIiwiaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuZXhwb3J0IGNsYXNzIElNRURldGVjdG9yIHtcbiAgcHJpdmF0ZSBjb21wb3NpdGlvbiA9IGZhbHNlO1xuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNvbXBvc2l0aW9uc3RhcnRcIiwgdGhpcy5vbkNvbXBvc2l0aW9uU3RhcnQpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjb21wb3NpdGlvbmVuZFwiLCB0aGlzLm9uQ29tcG9zaXRpb25FbmQpO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCkge1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjb21wb3NpdGlvbmVuZFwiLCB0aGlzLm9uQ29tcG9zaXRpb25FbmQpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjb21wb3NpdGlvbnN0YXJ0XCIsIHRoaXMub25Db21wb3NpdGlvblN0YXJ0KTtcbiAgfVxuXG4gIGlzT3BlbmVkKCkge1xuICAgIHJldHVybiB0aGlzLmNvbXBvc2l0aW9uICYmIFBsYXRmb3JtLmlzRGVza3RvcDtcbiAgfVxuXG4gIHByaXZhdGUgb25Db21wb3NpdGlvblN0YXJ0ID0gKCkgPT4ge1xuICAgIHRoaXMuY29tcG9zaXRpb24gPSB0cnVlO1xuICB9O1xuXG4gIHByaXZhdGUgb25Db21wb3NpdGlvbkVuZCA9ICgpID0+IHtcbiAgICB0aGlzLmNvbXBvc2l0aW9uID0gZmFsc2U7XG4gIH07XG59XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCIuL1NldHRpbmdzXCI7XG5cbmV4cG9ydCBjbGFzcyBMb2dnZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5ncykge31cblxuICBsb2cobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgaWYgKCF0aGlzLnNldHRpbmdzLmRlYnVnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc29sZS5pbmZvKG1ldGhvZCwgLi4uYXJncyk7XG4gIH1cblxuICBiaW5kKG1ldGhvZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gdGhpcy5sb2cobWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgQXBwIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JzaWRpYW5UYWJzU2V0dGluZ3Mge1xuICB1c2VUYWI6IGJvb2xlYW47XG4gIHRhYlNpemU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPYnNpZGlhbkZvbGRTZXR0aW5ncyB7XG4gIGZvbGRJbmRlbnQ6IGJvb2xlYW47XG59XG5cbmZ1bmN0aW9uIGdldEhpZGRlbk9ic2lkaWFuQ29uZmlnKGFwcDogQXBwKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHJldHVybiAoYXBwLnZhdWx0IGFzIGFueSkuY29uZmlnO1xufVxuXG5leHBvcnQgY2xhc3MgT2JzaWRpYW5TZXR0aW5ncyB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBwOiBBcHApIHt9XG5cbiAgaXNMZWdhY3lFZGl0b3JFbmFibGVkKCkge1xuICAgIGNvbnN0IGNvbmZpZzogeyBsZWdhY3lFZGl0b3I6IGJvb2xlYW4gfSA9IHtcbiAgICAgIGxlZ2FjeUVkaXRvcjogZmFsc2UsXG4gICAgICAuLi5nZXRIaWRkZW5PYnNpZGlhbkNvbmZpZyh0aGlzLmFwcCksXG4gICAgfTtcblxuICAgIHJldHVybiBjb25maWcubGVnYWN5RWRpdG9yO1xuICB9XG5cbiAgaXNEZWZhdWx0VGhlbWVFbmFibGVkKCkge1xuICAgIGNvbnN0IGNvbmZpZzogeyBjc3NUaGVtZTogc3RyaW5nIH0gPSB7XG4gICAgICBjc3NUaGVtZTogXCJcIixcbiAgICAgIC4uLmdldEhpZGRlbk9ic2lkaWFuQ29uZmlnKHRoaXMuYXBwKSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNvbmZpZy5jc3NUaGVtZSA9PT0gXCJcIjtcbiAgfVxuXG4gIGdldFRhYnNTZXR0aW5ncygpOiBPYnNpZGlhblRhYnNTZXR0aW5ncyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVzZVRhYjogdHJ1ZSxcbiAgICAgIHRhYlNpemU6IDQsXG4gICAgICAuLi5nZXRIaWRkZW5PYnNpZGlhbkNvbmZpZyh0aGlzLmFwcCksXG4gICAgfTtcbiAgfVxuXG4gIGdldEZvbGRTZXR0aW5ncygpOiBPYnNpZGlhbkZvbGRTZXR0aW5ncyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvbGRJbmRlbnQ6IHRydWUsXG4gICAgICAuLi5nZXRIaWRkZW5PYnNpZGlhbkNvbmZpZyh0aGlzLmFwcCksXG4gICAgfTtcbiAgfVxuXG4gIGdldERlZmF1bHRJbmRlbnRDaGFycygpIHtcbiAgICBjb25zdCB7IHVzZVRhYiwgdGFiU2l6ZSB9ID0gdGhpcy5nZXRUYWJzU2V0dGluZ3MoKTtcblxuICAgIHJldHVybiB1c2VUYWIgPyBcIlxcdFwiIDogbmV3IEFycmF5KHRhYlNpemUpLmZpbGwoXCIgXCIpLmpvaW4oXCJcIik7XG4gIH1cbn1cbiIsImltcG9ydCB7IENoYW5nZXNBcHBsaWNhdG9yIH0gZnJvbSBcIi4vQ2hhbmdlc0FwcGxpY2F0b3JcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuL1BhcnNlclwiO1xuXG5pbXBvcnQgeyBNeUVkaXRvciB9IGZyb20gXCIuLi9lZGl0b3JcIjtcbmltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCIuLi9vcGVyYXRpb25zL09wZXJhdGlvblwiO1xuaW1wb3J0IHsgUm9vdCB9IGZyb20gXCIuLi9yb290XCI7XG5cbmV4cG9ydCBjbGFzcyBPcGVyYXRpb25QZXJmb3JtZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBhcnNlcjogUGFyc2VyLFxuICAgIHByaXZhdGUgY2hhbmdlc0FwcGxpY2F0b3I6IENoYW5nZXNBcHBsaWNhdG9yLFxuICApIHt9XG5cbiAgZXZhbChyb290OiBSb290LCBvcDogT3BlcmF0aW9uLCBlZGl0b3I6IE15RWRpdG9yKSB7XG4gICAgY29uc3QgcHJldlJvb3QgPSByb290LmNsb25lKCk7XG5cbiAgICBvcC5wZXJmb3JtKCk7XG5cbiAgICBpZiAob3Auc2hvdWxkVXBkYXRlKCkpIHtcbiAgICAgIHRoaXMuY2hhbmdlc0FwcGxpY2F0b3IuYXBwbHkoZWRpdG9yLCBwcmV2Um9vdCwgcm9vdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNob3VsZFVwZGF0ZTogb3Auc2hvdWxkVXBkYXRlKCksXG4gICAgICBzaG91bGRTdG9wUHJvcGFnYXRpb246IG9wLnNob3VsZFN0b3BQcm9wYWdhdGlvbigpLFxuICAgIH07XG4gIH1cblxuICBwZXJmb3JtKFxuICAgIGNiOiAocm9vdDogUm9vdCkgPT4gT3BlcmF0aW9uLFxuICAgIGVkaXRvcjogTXlFZGl0b3IsXG4gICAgY3Vyc29yID0gZWRpdG9yLmdldEN1cnNvcigpLFxuICApIHtcbiAgICBjb25zdCByb290ID0gdGhpcy5wYXJzZXIucGFyc2UoZWRpdG9yLCBjdXJzb3IpO1xuXG4gICAgaWYgKCFyb290KSB7XG4gICAgICByZXR1cm4geyBzaG91bGRVcGRhdGU6IGZhbHNlLCBzaG91bGRTdG9wUHJvcGFnYXRpb246IGZhbHNlIH07XG4gICAgfVxuXG4gICAgY29uc3Qgb3AgPSBjYihyb290KTtcblxuICAgIHJldHVybiB0aGlzLmV2YWwocm9vdCwgb3AsIGVkaXRvcik7XG4gIH1cbn1cbiIsImltcG9ydCB7IExvZ2dlciB9IGZyb20gXCIuL0xvZ2dlclwiO1xuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tIFwiLi9TZXR0aW5nc1wiO1xuXG5pbXBvcnQgeyBMaXN0LCBSb290IH0gZnJvbSBcIi4uL3Jvb3RcIjtcbmltcG9ydCB7IGNoZWNrYm94UmUgfSBmcm9tIFwiLi4vdXRpbHMvY2hlY2tib3hSZVwiO1xuXG5jb25zdCBidWxsZXRTaWduUmUgPSBgKD86Wy0qK118XFxcXGQrXFxcXC4pYDtcbmNvbnN0IG9wdGlvbmFsQ2hlY2tib3hSZSA9IGAoPzoke2NoZWNrYm94UmV9KT9gO1xuXG5jb25zdCBsaXN0SXRlbVdpdGhvdXRTcGFjZXNSZSA9IG5ldyBSZWdFeHAoYF4ke2J1bGxldFNpZ25SZX0oIHxcXHQpYCk7XG5jb25zdCBsaXN0SXRlbVJlID0gbmV3IFJlZ0V4cChgXlsgXFx0XSoke2J1bGxldFNpZ25SZX0oIHxcXHQpYCk7XG5jb25zdCBzdHJpbmdXaXRoU3BhY2VzUmUgPSBuZXcgUmVnRXhwKGBeWyBcXHRdK2ApO1xuY29uc3QgcGFyc2VMaXN0SXRlbVJlID0gbmV3IFJlZ0V4cChcbiAgYF4oWyBcXHRdKikoJHtidWxsZXRTaWduUmV9KSggfFxcdCkoJHtvcHRpb25hbENoZWNrYm94UmV9KSguKikkYCxcbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhZGVyUG9zaXRpb24ge1xuICBsaW5lOiBudW1iZXI7XG4gIGNoOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhZGVyU2VsZWN0aW9uIHtcbiAgYW5jaG9yOiBSZWFkZXJQb3NpdGlvbjtcbiAgaGVhZDogUmVhZGVyUG9zaXRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhZGVyIHtcbiAgZ2V0Q3Vyc29yKCk6IFJlYWRlclBvc2l0aW9uO1xuICBnZXRMaW5lKG46IG51bWJlcik6IHN0cmluZztcbiAgbGFzdExpbmUoKTogbnVtYmVyO1xuICBsaXN0U2VsZWN0aW9ucygpOiBSZWFkZXJTZWxlY3Rpb25bXTtcbiAgZ2V0QWxsRm9sZGVkTGluZXMoKTogbnVtYmVyW107XG59XG5cbmludGVyZmFjZSBQYXJzZUxpc3RMaXN0IHtcbiAgZ2V0Rmlyc3RMaW5lSW5kZW50KCk6IHN0cmluZztcbiAgc2V0Tm90ZXNJbmRlbnQobm90ZXNJbmRlbnQ6IHN0cmluZyk6IHZvaWQ7XG4gIGdldE5vdGVzSW5kZW50KCk6IHN0cmluZyB8IG51bGw7XG4gIGFkZExpbmUodGV4dDogc3RyaW5nKTogdm9pZDtcbiAgZ2V0UGFyZW50KCk6IFBhcnNlTGlzdExpc3QgfCBudWxsO1xuICBhZGRBZnRlckFsbChsaXN0OiBQYXJzZUxpc3RMaXN0KTogdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnNlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXIsXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3MsXG4gICkge31cblxuICBwYXJzZVJhbmdlKGVkaXRvcjogUmVhZGVyLCBmcm9tTGluZSA9IDAsIHRvTGluZSA9IGVkaXRvci5sYXN0TGluZSgpKTogUm9vdFtdIHtcbiAgICBjb25zdCBsaXN0czogUm9vdFtdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gZnJvbUxpbmU7IGkgPD0gdG9MaW5lOyBpKyspIHtcbiAgICAgIGNvbnN0IGxpbmUgPSBlZGl0b3IuZ2V0TGluZShpKTtcblxuICAgICAgaWYgKGkgPT09IGZyb21MaW5lIHx8IHRoaXMuaXNMaXN0SXRlbShsaW5lKSkge1xuICAgICAgICBjb25zdCBsaXN0ID0gdGhpcy5wYXJzZVdpdGhMaW1pdHMoZWRpdG9yLCBpLCBmcm9tTGluZSwgdG9MaW5lKTtcblxuICAgICAgICBpZiAobGlzdCkge1xuICAgICAgICAgIGxpc3RzLnB1c2gobGlzdCk7XG4gICAgICAgICAgaSA9IGxpc3QuZ2V0Q29udGVudEVuZCgpLmxpbmU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGlzdHM7XG4gIH1cblxuICBwYXJzZShlZGl0b3I6IFJlYWRlciwgY3Vyc29yID0gZWRpdG9yLmdldEN1cnNvcigpKTogUm9vdCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnBhcnNlV2l0aExpbWl0cyhlZGl0b3IsIGN1cnNvci5saW5lLCAwLCBlZGl0b3IubGFzdExpbmUoKSk7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlV2l0aExpbWl0cyhcbiAgICBlZGl0b3I6IFJlYWRlcixcbiAgICBwYXJzaW5nU3RhcnRMaW5lOiBudW1iZXIsXG4gICAgbGltaXRGcm9tOiBudW1iZXIsXG4gICAgbGltaXRUbzogbnVtYmVyLFxuICApOiBSb290IHwgbnVsbCB7XG4gICAgY29uc3QgZCA9IHRoaXMubG9nZ2VyLmJpbmQoXCJwYXJzZUxpc3RcIik7XG4gICAgY29uc3QgZXJyb3IgPSAobXNnOiBzdHJpbmcpOiBudWxsID0+IHtcbiAgICAgIGQobXNnKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG5cbiAgICBjb25zdCBsaW5lID0gZWRpdG9yLmdldExpbmUocGFyc2luZ1N0YXJ0TGluZSk7XG5cbiAgICBsZXQgbGlzdExvb2tpbmdQb3M6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKHRoaXMuaXNMaXN0SXRlbShsaW5lKSkge1xuICAgICAgbGlzdExvb2tpbmdQb3MgPSBwYXJzaW5nU3RhcnRMaW5lO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0xpbmVXaXRoSW5kZW50KGxpbmUpKSB7XG4gICAgICBsZXQgbGlzdExvb2tpbmdQb3NTZWFyY2ggPSBwYXJzaW5nU3RhcnRMaW5lIC0gMTtcbiAgICAgIHdoaWxlIChsaXN0TG9va2luZ1Bvc1NlYXJjaCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IGxpbmUgPSBlZGl0b3IuZ2V0TGluZShsaXN0TG9va2luZ1Bvc1NlYXJjaCk7XG4gICAgICAgIGlmICh0aGlzLmlzTGlzdEl0ZW0obGluZSkpIHtcbiAgICAgICAgICBsaXN0TG9va2luZ1BvcyA9IGxpc3RMb29raW5nUG9zU2VhcmNoO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNMaW5lV2l0aEluZGVudChsaW5lKSkge1xuICAgICAgICAgIGxpc3RMb29raW5nUG9zU2VhcmNoLS07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobGlzdExvb2tpbmdQb3MgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBsaXN0U3RhcnRMaW5lOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgbGlzdFN0YXJ0TGluZUxvb2t1cCA9IGxpc3RMb29raW5nUG9zO1xuICAgIHdoaWxlIChsaXN0U3RhcnRMaW5lTG9va3VwID49IDApIHtcbiAgICAgIGNvbnN0IGxpbmUgPSBlZGl0b3IuZ2V0TGluZShsaXN0U3RhcnRMaW5lTG9va3VwKTtcbiAgICAgIGlmICghdGhpcy5pc0xpc3RJdGVtKGxpbmUpICYmICF0aGlzLmlzTGluZVdpdGhJbmRlbnQobGluZSkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc0xpc3RJdGVtV2l0aG91dFNwYWNlcyhsaW5lKSkge1xuICAgICAgICBsaXN0U3RhcnRMaW5lID0gbGlzdFN0YXJ0TGluZUxvb2t1cDtcbiAgICAgICAgaWYgKGxpc3RTdGFydExpbmVMb29rdXAgPD0gbGltaXRGcm9tKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxpc3RTdGFydExpbmVMb29rdXAtLTtcbiAgICB9XG5cbiAgICBpZiAobGlzdFN0YXJ0TGluZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IGxpc3RFbmRMaW5lID0gbGlzdExvb2tpbmdQb3M7XG4gICAgbGV0IGxpc3RFbmRMaW5lTG9va3VwID0gbGlzdExvb2tpbmdQb3M7XG4gICAgd2hpbGUgKGxpc3RFbmRMaW5lTG9va3VwIDw9IGVkaXRvci5sYXN0TGluZSgpKSB7XG4gICAgICBjb25zdCBsaW5lID0gZWRpdG9yLmdldExpbmUobGlzdEVuZExpbmVMb29rdXApO1xuICAgICAgaWYgKCF0aGlzLmlzTGlzdEl0ZW0obGluZSkgJiYgIXRoaXMuaXNMaW5lV2l0aEluZGVudChsaW5lKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5pc0VtcHR5TGluZShsaW5lKSkge1xuICAgICAgICBsaXN0RW5kTGluZSA9IGxpc3RFbmRMaW5lTG9va3VwO1xuICAgICAgfVxuICAgICAgaWYgKGxpc3RFbmRMaW5lTG9va3VwID49IGxpbWl0VG8pIHtcbiAgICAgICAgbGlzdEVuZExpbmUgPSBsaW1pdFRvO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGxpc3RFbmRMaW5lTG9va3VwKys7XG4gICAgfVxuXG4gICAgaWYgKGxpc3RTdGFydExpbmUgPiBwYXJzaW5nU3RhcnRMaW5lIHx8IGxpc3RFbmRMaW5lIDwgcGFyc2luZ1N0YXJ0TGluZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlIGxhc3QgbGluZSBjb250YWlucyBvbmx5IHNwYWNlcyBhbmQgdGhhdCdzIGluY29ycmVjdCBpbmRlbnQsIHRoZW4gaWdub3JlIHRoZSBsYXN0IGxpbmVcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdnNsaW5rby9vYnNpZGlhbi1vdXRsaW5lci9pc3N1ZXMvMzY4XG4gICAgaWYgKGxpc3RFbmRMaW5lID4gbGlzdFN0YXJ0TGluZSkge1xuICAgICAgY29uc3QgbGFzdExpbmUgPSBlZGl0b3IuZ2V0TGluZShsaXN0RW5kTGluZSk7XG4gICAgICBpZiAobGFzdExpbmUudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zdCBwcmV2TGluZSA9IGVkaXRvci5nZXRMaW5lKGxpc3RFbmRMaW5lIC0gMSk7XG4gICAgICAgIGNvbnN0IFssIHByZXZMaW5lSW5kZW50XSA9IC9eKFxccyopLy5leGVjKHByZXZMaW5lKTtcbiAgICAgICAgaWYgKCFsYXN0TGluZS5zdGFydHNXaXRoKHByZXZMaW5lSW5kZW50KSkge1xuICAgICAgICAgIGxpc3RFbmRMaW5lLS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByb290ID0gbmV3IFJvb3QoXG4gICAgICB7IGxpbmU6IGxpc3RTdGFydExpbmUsIGNoOiAwIH0sXG4gICAgICB7IGxpbmU6IGxpc3RFbmRMaW5lLCBjaDogZWRpdG9yLmdldExpbmUobGlzdEVuZExpbmUpLmxlbmd0aCB9LFxuICAgICAgZWRpdG9yLmxpc3RTZWxlY3Rpb25zKCkubWFwKChyKSA9PiAoe1xuICAgICAgICBhbmNob3I6IHsgbGluZTogci5hbmNob3IubGluZSwgY2g6IHIuYW5jaG9yLmNoIH0sXG4gICAgICAgIGhlYWQ6IHsgbGluZTogci5oZWFkLmxpbmUsIGNoOiByLmhlYWQuY2ggfSxcbiAgICAgIH0pKSxcbiAgICApO1xuXG4gICAgbGV0IGN1cnJlbnRQYXJlbnQ6IFBhcnNlTGlzdExpc3QgPSByb290LmdldFJvb3RMaXN0KCk7XG4gICAgbGV0IGN1cnJlbnRMaXN0OiBQYXJzZUxpc3RMaXN0IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGN1cnJlbnRJbmRlbnQgPSBcIlwiO1xuXG4gICAgY29uc3QgZm9sZGVkTGluZXMgPSBlZGl0b3IuZ2V0QWxsRm9sZGVkTGluZXMoKTtcblxuICAgIGZvciAobGV0IGwgPSBsaXN0U3RhcnRMaW5lOyBsIDw9IGxpc3RFbmRMaW5lOyBsKyspIHtcbiAgICAgIGNvbnN0IGxpbmUgPSBlZGl0b3IuZ2V0TGluZShsKTtcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBwYXJzZUxpc3RJdGVtUmUuZXhlYyhsaW5lKTtcblxuICAgICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgICAgY29uc3QgWywgaW5kZW50LCBidWxsZXQsIHNwYWNlQWZ0ZXJCdWxsZXRdID0gbWF0Y2hlcztcbiAgICAgICAgbGV0IFssICwgLCAsIG9wdGlvbmFsQ2hlY2tib3gsIGNvbnRlbnRdID0gbWF0Y2hlcztcblxuICAgICAgICBjb250ZW50ID0gb3B0aW9uYWxDaGVja2JveCArIGNvbnRlbnQ7XG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzLmtlZXBDdXJzb3JXaXRoaW5Db250ZW50ICE9PSBcImJ1bGxldC1hbmQtY2hlY2tib3hcIikge1xuICAgICAgICAgIG9wdGlvbmFsQ2hlY2tib3ggPSBcIlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29tcGFyZUxlbmd0aCA9IE1hdGgubWluKGN1cnJlbnRJbmRlbnQubGVuZ3RoLCBpbmRlbnQubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgaW5kZW50U2xpY2UgPSBpbmRlbnQuc2xpY2UoMCwgY29tcGFyZUxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbmRlbnRTbGljZSA9IGN1cnJlbnRJbmRlbnQuc2xpY2UoMCwgY29tcGFyZUxlbmd0aCk7XG5cbiAgICAgICAgaWYgKGluZGVudFNsaWNlICE9PSBjdXJyZW50SW5kZW50U2xpY2UpIHtcbiAgICAgICAgICBjb25zdCBleHBlY3RlZCA9IGN1cnJlbnRJbmRlbnRTbGljZVxuICAgICAgICAgICAgLnJlcGxhY2UoLyAvZywgXCJTXCIpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFx0L2csIFwiVFwiKTtcbiAgICAgICAgICBjb25zdCBnb3QgPSBpbmRlbnRTbGljZS5yZXBsYWNlKC8gL2csIFwiU1wiKS5yZXBsYWNlKC9cXHQvZywgXCJUXCIpO1xuXG4gICAgICAgICAgcmV0dXJuIGVycm9yKFxuICAgICAgICAgICAgYFVuYWJsZSB0byBwYXJzZSBsaXN0OiBleHBlY3RlZCBpbmRlbnQgXCIke2V4cGVjdGVkfVwiLCBnb3QgXCIke2dvdH1cImAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbmRlbnQubGVuZ3RoID4gY3VycmVudEluZGVudC5sZW5ndGgpIHtcbiAgICAgICAgICBjdXJyZW50UGFyZW50ID0gY3VycmVudExpc3Q7XG4gICAgICAgICAgY3VycmVudEluZGVudCA9IGluZGVudDtcbiAgICAgICAgfSBlbHNlIGlmIChpbmRlbnQubGVuZ3RoIDwgY3VycmVudEluZGVudC5sZW5ndGgpIHtcbiAgICAgICAgICB3aGlsZSAoXG4gICAgICAgICAgICBjdXJyZW50UGFyZW50LmdldEZpcnN0TGluZUluZGVudCgpLmxlbmd0aCA+PSBpbmRlbnQubGVuZ3RoICYmXG4gICAgICAgICAgICBjdXJyZW50UGFyZW50LmdldFBhcmVudCgpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjdXJyZW50UGFyZW50ID0gY3VycmVudFBhcmVudC5nZXRQYXJlbnQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY3VycmVudEluZGVudCA9IGluZGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZvbGRSb290ID0gZm9sZGVkTGluZXMuaW5jbHVkZXMobCk7XG5cbiAgICAgICAgY3VycmVudExpc3QgPSBuZXcgTGlzdChcbiAgICAgICAgICByb290LFxuICAgICAgICAgIGluZGVudCxcbiAgICAgICAgICBidWxsZXQsXG4gICAgICAgICAgb3B0aW9uYWxDaGVja2JveCxcbiAgICAgICAgICBzcGFjZUFmdGVyQnVsbGV0LFxuICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgICAgZm9sZFJvb3QsXG4gICAgICAgICk7XG4gICAgICAgIGN1cnJlbnRQYXJlbnQuYWRkQWZ0ZXJBbGwoY3VycmVudExpc3QpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmlzTGluZVdpdGhJbmRlbnQobGluZSkpIHtcbiAgICAgICAgaWYgKCFjdXJyZW50TGlzdCkge1xuICAgICAgICAgIHJldHVybiBlcnJvcihcbiAgICAgICAgICAgIGBVbmFibGUgdG8gcGFyc2UgbGlzdDogZXhwZWN0ZWQgbGlzdCBpdGVtLCBnb3QgZW1wdHkgbGluZWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGluZGVudFRvQ2hlY2sgPSBjdXJyZW50TGlzdC5nZXROb3Rlc0luZGVudCgpIHx8IGN1cnJlbnRJbmRlbnQ7XG5cbiAgICAgICAgaWYgKGxpbmUuaW5kZXhPZihpbmRlbnRUb0NoZWNrKSAhPT0gMCkge1xuICAgICAgICAgIGNvbnN0IGV4cGVjdGVkID0gaW5kZW50VG9DaGVjay5yZXBsYWNlKC8gL2csIFwiU1wiKS5yZXBsYWNlKC9cXHQvZywgXCJUXCIpO1xuICAgICAgICAgIGNvbnN0IGdvdCA9IGxpbmVcbiAgICAgICAgICAgIC5tYXRjaCgvXlsgXFx0XSovKVswXVxuICAgICAgICAgICAgLnJlcGxhY2UoLyAvZywgXCJTXCIpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFx0L2csIFwiVFwiKTtcblxuICAgICAgICAgIHJldHVybiBlcnJvcihcbiAgICAgICAgICAgIGBVbmFibGUgdG8gcGFyc2UgbGlzdDogZXhwZWN0ZWQgaW5kZW50IFwiJHtleHBlY3RlZH1cIiwgZ290IFwiJHtnb3R9XCJgLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWN1cnJlbnRMaXN0LmdldE5vdGVzSW5kZW50KCkpIHtcbiAgICAgICAgICBjb25zdCBtYXRjaGVzID0gbGluZS5tYXRjaCgvXlsgXFx0XSsvKTtcblxuICAgICAgICAgIGlmICghbWF0Y2hlcyB8fCBtYXRjaGVzWzBdLmxlbmd0aCA8PSBjdXJyZW50SW5kZW50Lmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKC9eXFxzKyQvLnRlc3QobGluZSkpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBlcnJvcihcbiAgICAgICAgICAgICAgYFVuYWJsZSB0byBwYXJzZSBsaXN0OiBleHBlY3RlZCBzb21lIGluZGVudCwgZ290IG5vIGluZGVudGAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGN1cnJlbnRMaXN0LnNldE5vdGVzSW5kZW50KG1hdGNoZXNbMF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudExpc3QuYWRkTGluZShsaW5lLnNsaWNlKGN1cnJlbnRMaXN0LmdldE5vdGVzSW5kZW50KCkubGVuZ3RoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZXJyb3IoXG4gICAgICAgICAgYFVuYWJsZSB0byBwYXJzZSBsaXN0OiBleHBlY3RlZCBsaXN0IGl0ZW0gb3Igbm90ZSwgZ290IFwiJHtsaW5lfVwiYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcm9vdDtcbiAgfVxuXG4gIHByaXZhdGUgaXNFbXB0eUxpbmUobGluZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGxpbmUubGVuZ3RoID09PSAwO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0xpbmVXaXRoSW5kZW50KGxpbmU6IHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmdXaXRoU3BhY2VzUmUudGVzdChsaW5lKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNMaXN0SXRlbShsaW5lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbGlzdEl0ZW1SZS50ZXN0KGxpbmUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0xpc3RJdGVtV2l0aG91dFNwYWNlcyhsaW5lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbGlzdEl0ZW1XaXRob3V0U3BhY2VzUmUudGVzdChsaW5lKTtcbiAgfVxufVxuIiwiZXhwb3J0IHR5cGUgVmVydGljYWxMaW5lc0FjdGlvbiA9IFwibm9uZVwiIHwgXCJ6b29tLWluXCIgfCBcInRvZ2dsZS1mb2xkaW5nXCI7XG5leHBvcnQgdHlwZSBLZWVwQ3Vyc29yV2l0aGluQ29udGVudCA9XG4gIHwgXCJuZXZlclwiXG4gIHwgXCJidWxsZXQtb25seVwiXG4gIHwgXCJidWxsZXQtYW5kLWNoZWNrYm94XCI7XG5cbmludGVyZmFjZSBTZXR0aW5nc09iamVjdCB7XG4gIHN0eWxlTGlzdHM6IGJvb2xlYW47XG4gIGRlYnVnOiBib29sZWFuO1xuICBzdGlja0N1cnNvcjogS2VlcEN1cnNvcldpdGhpbkNvbnRlbnQgfCBib29sZWFuO1xuICBiZXR0ZXJFbnRlcjogYm9vbGVhbjtcbiAgYmV0dGVyVGFiOiBib29sZWFuO1xuICBzZWxlY3RBbGw6IGJvb2xlYW47XG4gIGxpc3RMaW5lczogYm9vbGVhbjtcbiAgbGlzdExpbmVBY3Rpb246IFZlcnRpY2FsTGluZXNBY3Rpb247XG4gIGRuZDogYm9vbGVhbjtcbiAgcHJldmlvdXNSZWxlYXNlOiBzdHJpbmcgfCBudWxsO1xufVxuXG5jb25zdCBERUZBVUxUX1NFVFRJTkdTOiBTZXR0aW5nc09iamVjdCA9IHtcbiAgc3R5bGVMaXN0czogdHJ1ZSxcbiAgZGVidWc6IGZhbHNlLFxuICBzdGlja0N1cnNvcjogXCJidWxsZXQtYW5kLWNoZWNrYm94XCIsXG4gIGJldHRlckVudGVyOiB0cnVlLFxuICBiZXR0ZXJUYWI6IHRydWUsXG4gIHNlbGVjdEFsbDogdHJ1ZSxcbiAgbGlzdExpbmVzOiBmYWxzZSxcbiAgbGlzdExpbmVBY3Rpb246IFwidG9nZ2xlLWZvbGRpbmdcIixcbiAgZG5kOiB0cnVlLFxuICBwcmV2aW91c1JlbGVhc2U6IG51bGwsXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JhZ2Uge1xuICBsb2FkRGF0YSgpOiBQcm9taXNlPFNldHRpbmdzT2JqZWN0PjtcbiAgc2F2ZURhdGEoc2V0dGluZ3M6IFNldHRpbmdzT2JqZWN0KTogUHJvbWlzZTx2b2lkPjtcbn1cblxudHlwZSBDYWxsYmFjayA9ICgpID0+IHZvaWQ7XG5cbmV4cG9ydCBjbGFzcyBTZXR0aW5ncyB7XG4gIHByaXZhdGUgc3RvcmFnZTogU3RvcmFnZTtcbiAgcHJpdmF0ZSB2YWx1ZXM6IFNldHRpbmdzT2JqZWN0O1xuICBwcml2YXRlIGNhbGxiYWNrczogU2V0PENhbGxiYWNrPjtcblxuICBjb25zdHJ1Y3RvcihzdG9yYWdlOiBTdG9yYWdlKSB7XG4gICAgdGhpcy5zdG9yYWdlID0gc3RvcmFnZTtcbiAgICB0aGlzLmNhbGxiYWNrcyA9IG5ldyBTZXQoKTtcbiAgfVxuXG4gIGdldCBrZWVwQ3Vyc29yV2l0aGluQ29udGVudCgpIHtcbiAgICAvLyBBZGFwdG9yIGZvciB1c2VycyBtaWdyYXRpbmcgZnJvbSBvbGRlciB2ZXJzaW9uIG9mIHRoZSBwbHVnaW4uXG4gICAgaWYgKHRoaXMudmFsdWVzLnN0aWNrQ3Vyc29yID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gXCJidWxsZXQtYW5kLWNoZWNrYm94XCI7XG4gICAgfSBlbHNlIGlmICh0aGlzLnZhbHVlcy5zdGlja0N1cnNvciA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBcIm5ldmVyXCI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLnN0aWNrQ3Vyc29yO1xuICB9XG5cbiAgc2V0IGtlZXBDdXJzb3JXaXRoaW5Db250ZW50KHZhbHVlOiBLZWVwQ3Vyc29yV2l0aGluQ29udGVudCkge1xuICAgIHRoaXMuc2V0KFwic3RpY2tDdXJzb3JcIiwgdmFsdWUpO1xuICB9XG5cbiAgZ2V0IG92ZXJyaWRlVGFiQmVoYXZpb3VyKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5iZXR0ZXJUYWI7XG4gIH1cblxuICBzZXQgb3ZlcnJpZGVUYWJCZWhhdmlvdXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldChcImJldHRlclRhYlwiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgb3ZlcnJpZGVFbnRlckJlaGF2aW91cigpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMuYmV0dGVyRW50ZXI7XG4gIH1cblxuICBzZXQgb3ZlcnJpZGVFbnRlckJlaGF2aW91cih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0KFwiYmV0dGVyRW50ZXJcIiwgdmFsdWUpO1xuICB9XG5cbiAgZ2V0IG92ZXJyaWRlU2VsZWN0QWxsQmVoYXZpb3VyKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5zZWxlY3RBbGw7XG4gIH1cblxuICBzZXQgb3ZlcnJpZGVTZWxlY3RBbGxCZWhhdmlvdXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldChcInNlbGVjdEFsbFwiLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgYmV0dGVyTGlzdHNTdHlsZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLnN0eWxlTGlzdHM7XG4gIH1cblxuICBzZXQgYmV0dGVyTGlzdHNTdHlsZXModmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldChcInN0eWxlTGlzdHNcIiwgdmFsdWUpO1xuICB9XG5cbiAgZ2V0IHZlcnRpY2FsTGluZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmxpc3RMaW5lcztcbiAgfVxuXG4gIHNldCB2ZXJ0aWNhbExpbmVzKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXQoXCJsaXN0TGluZXNcIiwgdmFsdWUpO1xuICB9XG5cbiAgZ2V0IHZlcnRpY2FsTGluZXNBY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmxpc3RMaW5lQWN0aW9uO1xuICB9XG5cbiAgc2V0IHZlcnRpY2FsTGluZXNBY3Rpb24odmFsdWU6IFZlcnRpY2FsTGluZXNBY3Rpb24pIHtcbiAgICB0aGlzLnNldChcImxpc3RMaW5lQWN0aW9uXCIsIHZhbHVlKTtcbiAgfVxuXG4gIGdldCBkcmFnQW5kRHJvcCgpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMuZG5kO1xuICB9XG5cbiAgc2V0IGRyYWdBbmREcm9wKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXQoXCJkbmRcIiwgdmFsdWUpO1xuICB9XG5cbiAgZ2V0IGRlYnVnKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5kZWJ1ZztcbiAgfVxuXG4gIHNldCBkZWJ1Zyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0KFwiZGVidWdcIiwgdmFsdWUpO1xuICB9XG5cbiAgZ2V0IHByZXZpb3VzUmVsZWFzZSgpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMucHJldmlvdXNSZWxlYXNlO1xuICB9XG5cbiAgc2V0IHByZXZpb3VzUmVsZWFzZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuc2V0KFwicHJldmlvdXNSZWxlYXNlXCIsIHZhbHVlKTtcbiAgfVxuXG4gIG9uQ2hhbmdlKGNiOiBDYWxsYmFjaykge1xuICAgIHRoaXMuY2FsbGJhY2tzLmFkZChjYik7XG4gIH1cblxuICByZW1vdmVDYWxsYmFjayhjYjogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICB0aGlzLmNhbGxiYWNrcy5kZWxldGUoY2IpO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoREVGQVVMVF9TRVRUSU5HUykpIHtcbiAgICAgIHRoaXMuc2V0KGsgYXMga2V5b2YgU2V0dGluZ3NPYmplY3QsIHYpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy52YWx1ZXMgPSBPYmplY3QuYXNzaWduKFxuICAgICAge30sXG4gICAgICBERUZBVUxUX1NFVFRJTkdTLFxuICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLmxvYWREYXRhKCksXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHNhdmUoKSB7XG4gICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNhdmVEYXRhKHRoaXMudmFsdWVzKTtcbiAgfVxuXG4gIGdldFZhbHVlcygpOiBTZXR0aW5nc09iamVjdCB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy52YWx1ZXMgfTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0PFQgZXh0ZW5kcyBrZXlvZiBTZXR0aW5nc09iamVjdD4oXG4gICAga2V5OiBULFxuICAgIHZhbHVlOiBTZXR0aW5nc09iamVjdFtUXSxcbiAgKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZXNba2V5XSA9IHZhbHVlO1xuXG4gICAgZm9yIChjb25zdCBjYiBvZiB0aGlzLmNhbGxiYWNrcykge1xuICAgICAgY2IoKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IFBsdWdpbiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBBcnJvd0xlZnRBbmRDdHJsQXJyb3dMZWZ0QmVoYXZpb3VyT3ZlcnJpZGUgfSBmcm9tIFwiLi9mZWF0dXJlcy9BcnJvd0xlZnRBbmRDdHJsQXJyb3dMZWZ0QmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IEJhY2tzcGFjZUJlaGF2aW91ck92ZXJyaWRlIH0gZnJvbSBcIi4vZmVhdHVyZXMvQmFja3NwYWNlQmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IEJldHRlckxpc3RzU3R5bGVzIH0gZnJvbSBcIi4vZmVhdHVyZXMvQmV0dGVyTGlzdHNTdHlsZXNcIjtcbmltcG9ydCB7IEN0cmxBQW5kQ21kQUJlaGF2aW91ck92ZXJyaWRlIH0gZnJvbSBcIi4vZmVhdHVyZXMvQ3RybEFBbmRDbWRBQmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IERlbGV0ZUJlaGF2aW91ck92ZXJyaWRlIH0gZnJvbSBcIi4vZmVhdHVyZXMvRGVsZXRlQmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IERyYWdBbmREcm9wIH0gZnJvbSBcIi4vZmVhdHVyZXMvRHJhZ0FuZERyb3BcIjtcbmltcG9ydCB7IEVkaXRvclNlbGVjdGlvbnNCZWhhdmlvdXJPdmVycmlkZSB9IGZyb20gXCIuL2ZlYXR1cmVzL0VkaXRvclNlbGVjdGlvbnNCZWhhdmlvdXJPdmVycmlkZVwiO1xuaW1wb3J0IHsgRW50ZXJCZWhhdmlvdXJPdmVycmlkZSB9IGZyb20gXCIuL2ZlYXR1cmVzL0VudGVyQmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tIFwiLi9mZWF0dXJlcy9GZWF0dXJlXCI7XG5pbXBvcnQgeyBMaXN0c0ZvbGRpbmdDb21tYW5kcyB9IGZyb20gXCIuL2ZlYXR1cmVzL0xpc3RzRm9sZGluZ0NvbW1hbmRzXCI7XG5pbXBvcnQgeyBMaXN0c01vdmVtZW50Q29tbWFuZHMgfSBmcm9tIFwiLi9mZWF0dXJlcy9MaXN0c01vdmVtZW50Q29tbWFuZHNcIjtcbmltcG9ydCB7IE1ldGFCYWNrc3BhY2VCZWhhdmlvdXJPdmVycmlkZSB9IGZyb20gXCIuL2ZlYXR1cmVzL01ldGFCYWNrc3BhY2VCZWhhdmlvdXJPdmVycmlkZVwiO1xuLy8gaW1wb3J0IHsgUmVsZWFzZU5vdGVzQW5ub3VuY2VtZW50IH0gZnJvbSBcIi4vZmVhdHVyZXMvUmVsZWFzZU5vdGVzQW5ub3VuY2VtZW50XCI7XG5pbXBvcnQgeyBTZXR0aW5nc1RhYiB9IGZyb20gXCIuL2ZlYXR1cmVzL1NldHRpbmdzVGFiXCI7XG5pbXBvcnQgeyBTaGlmdFRhYkJlaGF2aW91ck92ZXJyaWRlIH0gZnJvbSBcIi4vZmVhdHVyZXMvU2hpZnRUYWJCZWhhdmlvdXJPdmVycmlkZVwiO1xuaW1wb3J0IHsgU3lzdGVtSW5mbyB9IGZyb20gXCIuL2ZlYXR1cmVzL1N5c3RlbUluZm9cIjtcbmltcG9ydCB7IFRhYkJlaGF2aW91ck92ZXJyaWRlIH0gZnJvbSBcIi4vZmVhdHVyZXMvVGFiQmVoYXZpb3VyT3ZlcnJpZGVcIjtcbmltcG9ydCB7IFZlcnRpY2FsTGluZXMgfSBmcm9tIFwiLi9mZWF0dXJlcy9WZXJ0aWNhbExpbmVzXCI7XG5pbXBvcnQgeyBDaGFuZ2VzQXBwbGljYXRvciB9IGZyb20gXCIuL3NlcnZpY2VzL0NoYW5nZXNBcHBsaWNhdG9yXCI7XG5pbXBvcnQgeyBJTUVEZXRlY3RvciB9IGZyb20gXCIuL3NlcnZpY2VzL0lNRURldGVjdG9yXCI7XG5pbXBvcnQgeyBMb2dnZXIgfSBmcm9tIFwiLi9zZXJ2aWNlcy9Mb2dnZXJcIjtcbmltcG9ydCB7IE9ic2lkaWFuU2V0dGluZ3MgfSBmcm9tIFwiLi9zZXJ2aWNlcy9PYnNpZGlhblNldHRpbmdzXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25QZXJmb3JtZXIgfSBmcm9tIFwiLi9zZXJ2aWNlcy9PcGVyYXRpb25QZXJmb3JtZXJcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuL3NlcnZpY2VzL1BhcnNlclwiO1xuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tIFwiLi9zZXJ2aWNlcy9TZXR0aW5nc1wiO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGNvbnN0IFBMVUdJTl9WRVJTSU9OOiBzdHJpbmc7XG4gIGNvbnN0IENIQU5HRUxPR19NRDogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBPYnNpZGlhbk91dGxpbmVyUGx1Z2luIGV4dGVuZHMgUGx1Z2luIHtcbiAgcHJpdmF0ZSBmZWF0dXJlczogRmVhdHVyZVtdO1xuICBwcm90ZWN0ZWQgc2V0dGluZ3M6IFNldHRpbmdzO1xuICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyO1xuICBwcml2YXRlIG9ic2lkaWFuU2V0dGluZ3M6IE9ic2lkaWFuU2V0dGluZ3M7XG4gIHByaXZhdGUgcGFyc2VyOiBQYXJzZXI7XG4gIHByaXZhdGUgY2hhbmdlc0FwcGxpY2F0b3I6IENoYW5nZXNBcHBsaWNhdG9yO1xuICBwcml2YXRlIG9wZXJhdGlvblBlcmZvcm1lcjogT3BlcmF0aW9uUGVyZm9ybWVyO1xuICBwcml2YXRlIGltZURldGVjdG9yOiBJTUVEZXRlY3RvcjtcblxuICBhc3luYyBvbmxvYWQoKSB7XG4gICAgY29uc29sZS5sb2coYExvYWRpbmcgb2JzaWRpYW4tb3V0bGluZXJgKTtcblxuICAgIGF3YWl0IHRoaXMucHJlcGFyZVNldHRpbmdzKCk7XG5cbiAgICB0aGlzLm9ic2lkaWFuU2V0dGluZ3MgPSBuZXcgT2JzaWRpYW5TZXR0aW5ncyh0aGlzLmFwcCk7XG4gICAgdGhpcy5sb2dnZXIgPSBuZXcgTG9nZ2VyKHRoaXMuc2V0dGluZ3MpO1xuICAgIHRoaXMucGFyc2VyID0gbmV3IFBhcnNlcih0aGlzLmxvZ2dlciwgdGhpcy5zZXR0aW5ncyk7XG4gICAgdGhpcy5jaGFuZ2VzQXBwbGljYXRvciA9IG5ldyBDaGFuZ2VzQXBwbGljYXRvcigpO1xuICAgIHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyID0gbmV3IE9wZXJhdGlvblBlcmZvcm1lcihcbiAgICAgIHRoaXMucGFyc2VyLFxuICAgICAgdGhpcy5jaGFuZ2VzQXBwbGljYXRvcixcbiAgICApO1xuXG4gICAgdGhpcy5pbWVEZXRlY3RvciA9IG5ldyBJTUVEZXRlY3RvcigpO1xuICAgIGF3YWl0IHRoaXMuaW1lRGV0ZWN0b3IubG9hZCgpO1xuXG4gICAgdGhpcy5mZWF0dXJlcyA9IFtcbiAgICAgIC8vIHNlcnZpY2UgZmVhdHVyZXNcbiAgICAgIC8vIG5ldyBSZWxlYXNlTm90ZXNBbm5vdW5jZW1lbnQodGhpcywgdGhpcy5zZXR0aW5ncyksXG4gICAgICBuZXcgU2V0dGluZ3NUYWIodGhpcywgdGhpcy5zZXR0aW5ncyksXG4gICAgICBuZXcgU3lzdGVtSW5mbyh0aGlzLCB0aGlzLnNldHRpbmdzKSxcblxuICAgICAgLy8gZ2VuZXJhbCBmZWF0dXJlc1xuICAgICAgbmV3IExpc3RzTW92ZW1lbnRDb21tYW5kcyhcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5vYnNpZGlhblNldHRpbmdzLFxuICAgICAgICB0aGlzLm9wZXJhdGlvblBlcmZvcm1lcixcbiAgICAgICksXG4gICAgICBuZXcgTGlzdHNGb2xkaW5nQ29tbWFuZHModGhpcywgdGhpcy5vYnNpZGlhblNldHRpbmdzKSxcblxuICAgICAgLy8gZmVhdHVyZXMgYmFzZWQgb24gc2V0dGluZ3Mua2VlcEN1cnNvcldpdGhpbkNvbnRlbnRcbiAgICAgIG5ldyBFZGl0b3JTZWxlY3Rpb25zQmVoYXZpb3VyT3ZlcnJpZGUoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgIHRoaXMucGFyc2VyLFxuICAgICAgICB0aGlzLm9wZXJhdGlvblBlcmZvcm1lcixcbiAgICAgICksXG4gICAgICBuZXcgQXJyb3dMZWZ0QW5kQ3RybEFycm93TGVmdEJlaGF2aW91ck92ZXJyaWRlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLmltZURldGVjdG9yLFxuICAgICAgICB0aGlzLm9wZXJhdGlvblBlcmZvcm1lcixcbiAgICAgICksXG4gICAgICBuZXcgQmFja3NwYWNlQmVoYXZpb3VyT3ZlcnJpZGUoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgIHRoaXMuaW1lRGV0ZWN0b3IsXG4gICAgICAgIHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyLFxuICAgICAgKSxcbiAgICAgIG5ldyBNZXRhQmFja3NwYWNlQmVoYXZpb3VyT3ZlcnJpZGUoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgIHRoaXMuaW1lRGV0ZWN0b3IsXG4gICAgICAgIHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyLFxuICAgICAgKSxcbiAgICAgIG5ldyBEZWxldGVCZWhhdmlvdXJPdmVycmlkZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgdGhpcy5pbWVEZXRlY3RvcixcbiAgICAgICAgdGhpcy5vcGVyYXRpb25QZXJmb3JtZXIsXG4gICAgICApLFxuXG4gICAgICAvLyBmZWF0dXJlcyBiYXNlZCBvbiBzZXR0aW5ncy5vdmVycmlkZVRhYkJlaGF2aW91clxuICAgICAgbmV3IFRhYkJlaGF2aW91ck92ZXJyaWRlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLmltZURldGVjdG9yLFxuICAgICAgICB0aGlzLm9ic2lkaWFuU2V0dGluZ3MsXG4gICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgIHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyLFxuICAgICAgKSxcbiAgICAgIG5ldyBTaGlmdFRhYkJlaGF2aW91ck92ZXJyaWRlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLmltZURldGVjdG9yLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLm9wZXJhdGlvblBlcmZvcm1lcixcbiAgICAgICksXG5cbiAgICAgIC8vIGZlYXR1cmVzIGJhc2VkIG9uIHNldHRpbmdzLm92ZXJyaWRlRW50ZXJCZWhhdmlvdXJcbiAgICAgIG5ldyBFbnRlckJlaGF2aW91ck92ZXJyaWRlKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLnNldHRpbmdzLFxuICAgICAgICB0aGlzLmltZURldGVjdG9yLFxuICAgICAgICB0aGlzLm9ic2lkaWFuU2V0dGluZ3MsXG4gICAgICAgIHRoaXMucGFyc2VyLFxuICAgICAgICB0aGlzLm9wZXJhdGlvblBlcmZvcm1lcixcbiAgICAgICksXG5cbiAgICAgIC8vIGZlYXR1cmVzIGJhc2VkIG9uIHNldHRpbmdzLm92ZXJyaWRlU2VsZWN0QWxsQmVoYXZpb3VyXG4gICAgICBuZXcgQ3RybEFBbmRDbWRBQmVoYXZpb3VyT3ZlcnJpZGUoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgIHRoaXMuaW1lRGV0ZWN0b3IsXG4gICAgICAgIHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyLFxuICAgICAgKSxcblxuICAgICAgLy8gZmVhdHVyZXMgYmFzZWQgb24gc2V0dGluZ3MuYmV0dGVyTGlzdHNTdHlsZXNcbiAgICAgIG5ldyBCZXR0ZXJMaXN0c1N0eWxlcyh0aGlzLnNldHRpbmdzLCB0aGlzLm9ic2lkaWFuU2V0dGluZ3MpLFxuXG4gICAgICAvLyBmZWF0dXJlcyBiYXNlZCBvbiBzZXR0aW5ncy52ZXJ0aWNhbExpbmVzXG4gICAgICBuZXcgVmVydGljYWxMaW5lcyhcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgdGhpcy5vYnNpZGlhblNldHRpbmdzLFxuICAgICAgICB0aGlzLnBhcnNlcixcbiAgICAgICksXG5cbiAgICAgIC8vIGZlYXR1cmVzIGJhc2VkIG9uIHNldHRpbmdzLmRyYWdBbmREcm9wXG4gICAgICBuZXcgRHJhZ0FuZERyb3AoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgIHRoaXMub2JzaWRpYW5TZXR0aW5ncyxcbiAgICAgICAgdGhpcy5wYXJzZXIsXG4gICAgICAgIHRoaXMub3BlcmF0aW9uUGVyZm9ybWVyLFxuICAgICAgKSxcbiAgICBdO1xuXG4gICAgZm9yIChjb25zdCBmZWF0dXJlIG9mIHRoaXMuZmVhdHVyZXMpIHtcbiAgICAgIGF3YWl0IGZlYXR1cmUubG9hZCgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9udW5sb2FkKCkge1xuICAgIGNvbnNvbGUubG9nKGBVbmxvYWRpbmcgb2JzaWRpYW4tb3V0bGluZXJgKTtcblxuICAgIGF3YWl0IHRoaXMuaW1lRGV0ZWN0b3IudW5sb2FkKCk7XG5cbiAgICBmb3IgKGNvbnN0IGZlYXR1cmUgb2YgdGhpcy5mZWF0dXJlcykge1xuICAgICAgYXdhaXQgZmVhdHVyZS51bmxvYWQoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcHJlcGFyZVNldHRpbmdzKCkge1xuICAgIHRoaXMuc2V0dGluZ3MgPSBuZXcgU2V0dGluZ3ModGhpcyk7XG4gICAgYXdhaXQgdGhpcy5zZXR0aW5ncy5sb2FkKCk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJlZGl0b3JJbmZvRmllbGQiLCJmb2xkZWRSYW5nZXMiLCJmb2xkYWJsZSIsImZvbGRFZmZlY3QiLCJ1bmZvbGRFZmZlY3QiLCJydW5TY29wZUhhbmRsZXJzIiwia2V5bWFwIiwiTm90aWNlIiwiaW5kZW50U3RyaW5nIiwiZ2V0SW5kZW50VW5pdCIsIlN0YXRlRWZmZWN0IiwiRGVjb3JhdGlvbiIsIlN0YXRlRmllbGQiLCJFZGl0b3JWaWV3IiwiUGxhdGZvcm0iLCJFZGl0b3JTdGF0ZSIsIlByZWMiLCJQbHVnaW5TZXR0aW5nVGFiIiwiU2V0dGluZyIsIk1vZGFsIiwiVmlld1BsdWdpbiIsIlBsdWdpbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBa0dBO0FBQ08sU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFO0FBQzdELElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxLQUFLLFlBQVksQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0FBQ2hILElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQy9ELFFBQVEsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFF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 diff --git a/.obsidian/plugins/obsidian-outliner/manifest.json b/.obsidian/plugins/obsidian-outliner/manifest.json index 287ee41..5e63fd9 100644 --- a/.obsidian/plugins/obsidian-outliner/manifest.json +++ b/.obsidian/plugins/obsidian-outliner/manifest.json @@ -1,8 +1,8 @@ { "id": "obsidian-outliner", "name": "Outliner", - "version": "4.8.0", - "minAppVersion": "1.1.16", + "version": "4.8.1", + "minAppVersion": "1.5.11", "description": "Work with your lists like in Workflowy or RoamResearch.", "author": "Viacheslav Slinko", "authorUrl": "https://github.com/vslinko", diff --git a/.obsidian/plugins/obsidian-quiet-outline/main.js b/.obsidian/plugins/obsidian-quiet-outline/main.js index 5bfdaca..ccabce1 100644 --- a/.obsidian/plugins/obsidian-quiet-outline/main.js +++ b/.obsidian/plugins/obsidian-quiet-outline/main.js @@ -3,34 +3,34 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD if you want to view the source, please visit the github repository of this plugin */ -var LT=Object.create;var Cn=Object.defineProperty;var ET=Object.getOwnPropertyDescriptor;var NT=Object.getOwnPropertyNames;var _T=Object.getPrototypeOf,IT=Object.prototype.hasOwnProperty;var kp=e=>Cn(e,"__esModule",{value:!0});var Et=(e,o)=>()=>(o||e((o={exports:{}}).exports,o),o.exports),HT=(e,o)=>{kp(e);for(var t in o)Cn(e,t,{get:o[t],enumerable:!0})},WT=(e,o,t)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of NT(o))!IT.call(e,r)&&r!=="default"&&Cn(e,r,{get:()=>o[r],enumerable:!(t=ET(o,r))||t.enumerable});return e},Fa=e=>WT(kp(Cn(e!=null?LT(_T(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var $e=(e,o,t)=>new Promise((r,a)=>{var l=d=>{try{i(t.next(d))}catch(s){a(s)}},n=d=>{try{i(t.throw(d))}catch(s){a(s)}},i=d=>d.done?r(d.value):Promise.resolve(d.value).then(l,n);i((t=t.apply(e,o)).next())});var sS=Et((Ul,dS)=>{"use strict";Object.defineProperty(Ul,"__esModule",{value:!0});Ul.default=void 0;var jv={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},$v=function(e,o,t){var r,a=jv[e];return typeof a=="string"?r=a:o===1?r=a.one:r=a.other.replace("{{count}}",o.toString()),t!=null&&t.addSuffix?t.comparison&&t.comparison>0?"in "+r:r+" ago":r},Uv=$v;Ul.default=Uv;dS.exports=Ul.default});var fS=Et((Gi,uS)=>{"use strict";Object.defineProperty(Gi,"__esModule",{value:!0});Gi.default=Kv;function Kv(e){return function(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=o.width?String(o.width):e.defaultWidth,r=e.formats[t]||e.formats[e.defaultWidth];return r}}uS.exports=Gi.default});var mS=Et((Kl,pS)=>{"use strict";Object.defineProperty(Kl,"__esModule",{value:!0});Kl.default=void 0;var Gs=Gv(fS());function Gv(e){return e&&e.__esModule?e:{default:e}}var qv={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},Qv={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},Zv={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},Yv={date:(0,Gs.default)({formats:qv,defaultWidth:"full"}),time:(0,Gs.default)({formats:Qv,defaultWidth:"full"}),dateTime:(0,Gs.default)({formats:Zv,defaultWidth:"full"})},Jv=Yv;Kl.default=Jv;pS.exports=Kl.default});var xS=Et((Gl,cS)=>{"use strict";Object.defineProperty(Gl,"__esModule",{value:!0});Gl.default=void 0;var Xv={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},ek=function(e,o,t,r){return Xv[e]},ok=ek;Gl.default=ok;cS.exports=Gl.default});var SS=Et((qi,hS)=>{"use strict";Object.defineProperty(qi,"__esModule",{value:!0});qi.default=tk;function tk(e){return function(o,t){var r=t||{},a=r.context?String(r.context):"standalone",l;if(a==="formatting"&&e.formattingValues){var n=e.defaultFormattingWidth||e.defaultWidth,i=r.width?String(r.width):n;l=e.formattingValues[i]||e.formattingValues[n]}else{var d=e.defaultWidth,s=r.width?String(r.width):e.defaultWidth;l=e.values[s]||e.values[d]}var u=e.argumentCallback?e.argumentCallback(o):o;return l[u]}}hS.exports=qi.default});var wS=Et((Ql,gS)=>{"use strict";Object.defineProperty(Ql,"__esModule",{value:!0});Ql.default=void 0;var ql=rk(SS());function rk(e){return e&&e.__esModule?e:{default:e}}var ak={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},lk={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},nk={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},ik={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},dk={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},sk={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},uk=function(e,o){var t=Number(e),r=t%100;if(r>20||r<10)switch(r%10){case 1:return t+"st";case 2:return t+"nd";case 3:return t+"rd"}return t+"th"},fk={ordinalNumber:uk,era:(0,ql.default)({values:ak,defaultWidth:"wide"}),quarter:(0,ql.default)({values:lk,defaultWidth:"wide",argumentCallback:function(e){return e-1}}),month:(0,ql.default)({values:nk,defaultWidth:"wide"}),day:(0,ql.default)({values:ik,defaultWidth:"wide"}),dayPeriod:(0,ql.default)({values:dk,defaultWidth:"wide",formattingValues:sk,defaultFormattingWidth:"wide"})},pk=fk;Ql.default=pk;gS.exports=Ql.default});var RS=Et((Qi,TS)=>{"use strict";Object.defineProperty(Qi,"__esModule",{value:!0});Qi.default=mk;function mk(e){return function(o){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.width,a=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],l=o.match(a);if(!l)return null;var n=l[0],i=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],d=Array.isArray(i)?xk(i,function(f){return f.test(n)}):ck(i,function(f){return f.test(n)}),s;s=e.valueCallback?e.valueCallback(d):d,s=t.valueCallback?t.valueCallback(s):s;var u=o.slice(n.length);return{value:s,rest:u}}}function ck(e,o){for(var t in e)if(e.hasOwnProperty(t)&&o(e[t]))return t}function xk(e,o){for(var t=0;t<e.length;t++)if(o(e[t]))return t}TS.exports=Qi.default});var OS=Et((Zi,FS)=>{"use strict";Object.defineProperty(Zi,"__esModule",{value:!0});Zi.default=hk;function hk(e){return function(o){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=o.match(e.matchPattern);if(!r)return null;var a=r[0],l=o.match(e.parsePattern);if(!l)return null;var n=e.valueCallback?e.valueCallback(l[0]):l[0];n=t.valueCallback?t.valueCallback(n):n;var i=o.slice(a.length);return{value:n,rest:i}}}FS.exports=Zi.default});var yS=Et((Yl,bS)=>{"use strict";Object.defineProperty(Yl,"__esModule",{value:!0});Yl.default=void 0;var Zl=CS(RS()),Sk=CS(OS());function CS(e){return e&&e.__esModule?e:{default:e}}var gk=/^(\d+)(th|st|nd|rd)?/i,wk=/\d+/i,Tk={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},Rk={any:[/^b/i,/^(a|c)/i]},Fk={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},Ok={any:[/1/i,/2/i,/3/i,/4/i]},Ck={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},bk={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},yk={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},vk={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},kk={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},Ak={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},Dk={ordinalNumber:(0,Sk.default)({matchPattern:gk,parsePattern:wk,valueCallback:function(e){return parseInt(e,10)}}),era:(0,Zl.default)({matchPatterns:Tk,defaultMatchWidth:"wide",parsePatterns:Rk,defaultParseWidth:"any"}),quarter:(0,Zl.default)({matchPatterns:Fk,defaultMatchWidth:"wide",parsePatterns:Ok,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:(0,Zl.default)({matchPatterns:Ck,defaultMatchWidth:"wide",parsePatterns:bk,defaultParseWidth:"any"}),day:(0,Zl.default)({matchPatterns:yk,defaultMatchWidth:"wide",parsePatterns:vk,defaultParseWidth:"any"}),dayPeriod:(0,Zl.default)({matchPatterns:kk,defaultMatchWidth:"any",parsePatterns:Ak,defaultParseWidth:"any"})},Pk=Dk;Yl.default=Pk;bS.exports=Yl.default});var kS=Et((Xl,vS)=>{"use strict";Object.defineProperty(Xl,"__esModule",{value:!0});Xl.default=void 0;var Mk=Jl(sS()),Bk=Jl(mS()),Lk=Jl(xS()),Ek=Jl(wS()),Nk=Jl(yS());function Jl(e){return e&&e.__esModule?e:{default:e}}var _k={code:"en-US",formatDistance:Mk.default,formatLong:Bk.default,formatRelative:Lk.default,localize:Ek.default,match:Nk.default,options:{weekStartsOn:0,firstWeekContainsDate:1}},Ik=_k;Xl.default=Ik;vS.exports=Xl.default});HT(exports,{default:()=>e0});var al=Fa(require("obsidian"));var lT=Fa(require("obsidian"));function Oa(e,o){let t=Object.create(null),r=e.split(",");for(let a=0;a<r.length;a++)t[r[a]]=!0;return o?a=>!!t[a.toLowerCase()]:a=>!!t[a]}var t0={[1]:"TEXT",[2]:"CLASS",[4]:"STYLE",[8]:"PROPS",[16]:"FULL_PROPS",[32]:"HYDRATE_EVENTS",[64]:"STABLE_FRAGMENT",[128]:"KEYED_FRAGMENT",[256]:"UNKEYED_FRAGMENT",[512]:"NEED_PATCH",[1024]:"DYNAMIC_SLOTS",[2048]:"DEV_ROOT_FRAGMENT",[-1]:"HOISTED",[-2]:"BAIL"},r0={[1]:"STABLE",[2]:"DYNAMIC",[3]:"FORWARDED"};function Sr(e){if(Ae(e)){let o={};for(let t=0;t<e.length;t++){let r=e[t],a=Ro(r)?$T(r):Sr(r);if(a)for(let l in a)o[l]=a[l]}return o}else{if(Ro(e))return e;if(ao(e))return e}}var VT=/;(?![^(]*\))/g,zT=/:([^]+)/,jT=/\/\*.*?\*\//gs;function $T(e){let o={};return e.replace(jT,"").split(VT).forEach(t=>{if(t){let r=t.split(zT);r.length>1&&(o[r[0].trim()]=r[1].trim())}}),o}function Kr(e){let o="";if(Ro(e))o=e;else if(Ae(e))for(let t=0;t<e.length;t++){let r=Kr(e[t]);r&&(o+=r+" ")}else if(ao(e))for(let t in e)e[t]&&(o+=t+" ");return o.trim()}var Ap="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Dp=Oa(Ap),a0=Oa(Ap+",async,autofocus,autoplay,controls,default,defer,disabled,hidden,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected");function yd(e){return!!e||e===""}var vd=e=>Ro(e)?e:e==null?"":Ae(e)||ao(e)&&(e.toString===Bp||!Ee(e.toString))?JSON.stringify(e,Pp,2):String(e),Pp=(e,o)=>o&&o.__v_isRef?Pp(e,o.value):gr(o)?{[`Map(${o.size})`]:[...o.entries()].reduce((t,[r,a])=>(t[`${r} =>`]=a,t),{})}:yn(o)?{[`Set(${o.size})`]:[...o.values()]}:ao(o)&&!Ae(o)&&!Dd(o)?String(o):o,ro={},Gr=[],nt=()=>{},Mp=()=>!1,UT=/^on[^a-z]/,Ca=e=>UT.test(e),sl=e=>e.startsWith("onUpdate:"),Oo=Object.assign,bn=(e,o)=>{let t=e.indexOf(o);t>-1&&e.splice(t,1)},KT=Object.prototype.hasOwnProperty,je=(e,o)=>KT.call(e,o),Ae=Array.isArray,gr=e=>kn(e)==="[object Map]",yn=e=>kn(e)==="[object Set]";var Ee=e=>typeof e=="function",Ro=e=>typeof e=="string",vn=e=>typeof e=="symbol",ao=e=>e!==null&&typeof e=="object",kd=e=>ao(e)&&Ee(e.then)&&Ee(e.catch),Bp=Object.prototype.toString,kn=e=>Bp.call(e),Ad=e=>kn(e).slice(8,-1),Dd=e=>kn(e)==="[object Object]",An=e=>Ro(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ul=Oa(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted");var Dn=e=>{let o=Object.create(null);return t=>o[t]||(o[t]=e(t))},GT=/-(\w)/g,Nt=Dn(e=>e.replace(GT,(o,t)=>t?t.toUpperCase():"")),qT=/\B([A-Z])/g,wr=Dn(e=>e.replace(qT,"-$1").toLowerCase()),fl=Dn(e=>e.charAt(0).toUpperCase()+e.slice(1)),pl=Dn(e=>e?`on${fl(e)}`:""),qr=(e,o)=>!Object.is(e,o),ml=(e,o)=>{for(let t=0;t<e.length;t++)e[t](o)},ba=(e,o,t)=>{Object.defineProperty(e,o,{configurable:!0,enumerable:!1,value:t})},ya=e=>{let o=parseFloat(e);return isNaN(o)?e:o},Lp,Ep=()=>Lp||(Lp=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});var _t,Pn=class{constructor(o=!1){this.detached=o,this.active=!0,this.effects=[],this.cleanups=[],this.parent=_t,!o&&_t&&(this.index=(_t.scopes||(_t.scopes=[])).push(this)-1)}run(o){if(this.active){let t=_t;try{return _t=this,o()}finally{_t=t}}}on(){_t=this}off(){_t=this.parent}stop(o){if(this.active){let t,r;for(t=0,r=this.effects.length;t<r;t++)this.effects[t].stop();for(t=0,r=this.cleanups.length;t<r;t++)this.cleanups[t]();if(this.scopes)for(t=0,r=this.scopes.length;t<r;t++)this.scopes[t].stop(!0);if(!this.detached&&this.parent&&!o){let a=this.parent.scopes.pop();a&&a!==this&&(this.parent.scopes[this.index]=a,a.index=this.index)}this.parent=void 0,this.active=!1}}};function QT(e,o=_t){o&&o.active&&o.effects.push(e)}var Pd=e=>{let o=new Set(e);return o.w=0,o.n=0,o},Np=e=>(e.w&Tr)>0,_p=e=>(e.n&Tr)>0,ZT=({deps:e})=>{if(e.length)for(let o=0;o<e.length;o++)e[o].w|=Tr},YT=e=>{let{deps:o}=e;if(o.length){let t=0;for(let r=0;r<o.length;r++){let a=o[r];Np(a)&&!_p(a)?a.delete(e):o[t++]=a,a.w&=~Tr,a.n&=~Tr}o.length=t}},Md=new WeakMap,cl=0,Tr=1,Bd=30,yt,Qr=Symbol(""),Ld=Symbol(""),va=class{constructor(o,t=null,r){this.fn=o,this.scheduler=t,this.active=!0,this.deps=[],this.parent=void 0,QT(this,r)}run(){if(!this.active)return this.fn();let o=yt,t=Rr;for(;o;){if(o===this)return;o=o.parent}try{return this.parent=yt,yt=this,Rr=!0,Tr=1<<++cl,cl<=Bd?ZT(this):Ip(this),this.fn()}finally{cl<=Bd&&YT(this),Tr=1<<--cl,yt=this.parent,Rr=t,this.parent=void 0,this.deferStop&&this.stop()}}stop(){yt===this?this.deferStop=!0:this.active&&(Ip(this),this.onStop&&this.onStop(),this.active=!1)}};function Ip(e){let{deps:o}=e;if(o.length){for(let t=0;t<o.length;t++)o[t].delete(e);o.length=0}}var Rr=!0,Hp=[];function Fr(){Hp.push(Rr),Rr=!1}function Or(){let e=Hp.pop();Rr=e===void 0?!0:e}function et(e,o,t){if(Rr&&yt){let r=Md.get(e);r||Md.set(e,r=new Map);let a=r.get(t);a||r.set(t,a=Pd()),Wp(a,void 0)}}function Wp(e,o){let t=!1;cl<=Bd?_p(e)||(e.n|=Tr,t=!Np(e)):t=!e.has(yt),t&&(e.add(yt),yt.deps.push(e))}function It(e,o,t,r,a,l){let n=Md.get(e);if(!n)return;let i=[];if(o==="clear")i=[...n.values()];else if(t==="length"&&Ae(e)){let s=ya(r);n.forEach((u,f)=>{(f==="length"||f>=s)&&i.push(u)})}else switch(t!==void 0&&i.push(n.get(t)),o){case"add":Ae(e)?An(t)&&i.push(n.get("length")):(i.push(n.get(Qr)),gr(e)&&i.push(n.get(Ld)));break;case"delete":Ae(e)||(i.push(n.get(Qr)),gr(e)&&i.push(n.get(Ld)));break;case"set":gr(e)&&i.push(n.get(Qr));break}let d=void 0;if(i.length===1)i[0]&&Ed(i[0]);else{let s=[];for(let u of i)u&&s.push(...u);Ed(Pd(s))}}function Ed(e,o){let t=Ae(e)?e:[...e];for(let r of t)r.computed&&Vp(r,o);for(let r of t)r.computed||Vp(r,o)}function Vp(e,o){(e!==yt||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}var JT=Oa("__proto__,__v_isRef,__isVue"),zp=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(vn)),XT=Nd(),eR=Nd(!1,!0),oR=Nd(!0);var jp=tR();function tR(){let e={};return["includes","indexOf","lastIndexOf"].forEach(o=>{e[o]=function(...t){let r=Ie(this);for(let l=0,n=this.length;l<n;l++)et(r,"get",l+"");let a=r[o](...t);return a===-1||a===!1?r[o](...t.map(Ie)):a}}),["push","pop","shift","unshift","splice"].forEach(o=>{e[o]=function(...t){Fr();let r=Ie(this)[o].apply(this,t);return Or(),r}}),e}function Nd(e=!1,o=!1){return function(r,a,l){if(a==="__v_isReactive")return!e;if(a==="__v_isReadonly")return e;if(a==="__v_isShallow")return o;if(a==="__v_raw"&&l===(e?o?gR:Jp:o?Yp:Zp).get(r))return r;let n=Ae(r);if(!e&&n&&je(jp,a))return Reflect.get(jp,a,l);let i=Reflect.get(r,a,l);return(vn(a)?zp.has(a):JT(a))||(e||et(r,"get",a),o)?i:yo(i)?n&&An(a)?i:i.value:ao(i)?e?br(i):Ht(i):i}}var rR=$p(),aR=$p(!0);function $p(e=!1){return function(t,r,a,l){let n=t[r];if(vr(n)&&yo(n)&&!yo(a))return!1;if(!e&&(!ka(a)&&!vr(a)&&(n=Ie(n),a=Ie(a)),!Ae(t)&&yo(n)&&!yo(a)))return n.value=a,!0;let i=Ae(t)&&An(r)?Number(r)<t.length:je(t,r),d=Reflect.set(t,r,a,l);return t===Ie(l)&&(i?qr(a,n)&&It(t,"set",r,a,n):It(t,"add",r,a)),d}}function lR(e,o){let t=je(e,o),r=e[o],a=Reflect.deleteProperty(e,o);return a&&t&&It(e,"delete",o,void 0,r),a}function nR(e,o){let t=Reflect.has(e,o);return(!vn(o)||!zp.has(o))&&et(e,"has",o),t}function iR(e){return et(e,"iterate",Ae(e)?"length":Qr),Reflect.ownKeys(e)}var Up={get:XT,set:rR,deleteProperty:lR,has:nR,ownKeys:iR},dR={get:oR,set(e,o){return!0},deleteProperty(e,o){return!0}},sR=Oo({},Up,{get:eR,set:aR});var _d=e=>e,Mn=e=>Reflect.getPrototypeOf(e);function Bn(e,o,t=!1,r=!1){e=e.__v_raw;let a=Ie(e),l=Ie(o);t||(o!==l&&et(a,"get",o),et(a,"get",l));let{has:n}=Mn(a),i=r?_d:t?Vd:xl;if(n.call(a,o))return i(e.get(o));if(n.call(a,l))return i(e.get(l));e!==a&&e.get(o)}function Ln(e,o=!1){let t=this.__v_raw,r=Ie(t),a=Ie(e);return o||(e!==a&&et(r,"has",e),et(r,"has",a)),e===a?t.has(e):t.has(e)||t.has(a)}function En(e,o=!1){return e=e.__v_raw,!o&&et(Ie(e),"iterate",Qr),Reflect.get(e,"size",e)}function Kp(e){e=Ie(e);let o=Ie(this);return Mn(o).has.call(o,e)||(o.add(e),It(o,"add",e,e)),this}function Gp(e,o){o=Ie(o);let t=Ie(this),{has:r,get:a}=Mn(t),l=r.call(t,e);l||(e=Ie(e),l=r.call(t,e));let n=a.call(t,e);return t.set(e,o),l?qr(o,n)&&It(t,"set",e,o,n):It(t,"add",e,o),this}function qp(e){let o=Ie(this),{has:t,get:r}=Mn(o),a=t.call(o,e);a||(e=Ie(e),a=t.call(o,e));let l=r?r.call(o,e):void 0,n=o.delete(e);return a&&It(o,"delete",e,void 0,l),n}function Qp(){let e=Ie(this),o=e.size!==0,t=void 0,r=e.clear();return o&&It(e,"clear",void 0,void 0,t),r}function Nn(e,o){return function(r,a){let l=this,n=l.__v_raw,i=Ie(n),d=o?_d:e?Vd:xl;return!e&&et(i,"iterate",Qr),n.forEach((s,u)=>r.call(a,d(s),d(u),l))}}function _n(e,o,t){return function(...r){let a=this.__v_raw,l=Ie(a),n=gr(l),i=e==="entries"||e===Symbol.iterator&&n,d=e==="keys"&&n,s=a[e](...r),u=t?_d:o?Vd:xl;return!o&&et(l,"iterate",d?Ld:Qr),{next(){let{value:f,done:c}=s.next();return c?{value:f,done:c}:{value:i?[u(f[0]),u(f[1])]:u(f),done:c}},[Symbol.iterator](){return this}}}}function Cr(e){return function(...o){return e==="delete"?!1:this}}function uR(){let e={get(l){return Bn(this,l)},get size(){return En(this)},has:Ln,add:Kp,set:Gp,delete:qp,clear:Qp,forEach:Nn(!1,!1)},o={get(l){return Bn(this,l,!1,!0)},get size(){return En(this)},has:Ln,add:Kp,set:Gp,delete:qp,clear:Qp,forEach:Nn(!1,!0)},t={get(l){return Bn(this,l,!0)},get size(){return En(this,!0)},has(l){return Ln.call(this,l,!0)},add:Cr("add"),set:Cr("set"),delete:Cr("delete"),clear:Cr("clear"),forEach:Nn(!0,!1)},r={get(l){return Bn(this,l,!0,!0)},get size(){return En(this,!0)},has(l){return Ln.call(this,l,!0)},add:Cr("add"),set:Cr("set"),delete:Cr("delete"),clear:Cr("clear"),forEach:Nn(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(l=>{e[l]=_n(l,!1,!1),t[l]=_n(l,!0,!1),o[l]=_n(l,!1,!0),r[l]=_n(l,!0,!0)}),[e,t,o,r]}var[fR,pR,mR,cR]=uR();function Id(e,o){let t=o?e?cR:mR:e?pR:fR;return(r,a,l)=>a==="__v_isReactive"?!e:a==="__v_isReadonly"?e:a==="__v_raw"?r:Reflect.get(je(t,a)&&a in r?t:r,a,l)}var xR={get:Id(!1,!1)},hR={get:Id(!1,!0)},SR={get:Id(!0,!1)};var Zp=new WeakMap,Yp=new WeakMap,Jp=new WeakMap,gR=new WeakMap;function wR(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function TR(e){return e.__v_skip||!Object.isExtensible(e)?0:wR(Ad(e))}function Ht(e){return vr(e)?e:Wd(e,!1,Up,xR,Zp)}function Hd(e){return Wd(e,!1,sR,hR,Yp)}function br(e){return Wd(e,!0,dR,SR,Jp)}function Wd(e,o,t,r,a){if(!ao(e)||e.__v_raw&&!(o&&e.__v_isReactive))return e;let l=a.get(e);if(l)return l;let n=TR(e);if(n===0)return e;let i=new Proxy(e,n===2?r:t);return a.set(e,i),i}function yr(e){return vr(e)?yr(e.__v_raw):!!(e&&e.__v_isReactive)}function vr(e){return!!(e&&e.__v_isReadonly)}function ka(e){return!!(e&&e.__v_isShallow)}function In(e){return yr(e)||vr(e)}function Ie(e){let o=e&&e.__v_raw;return o?Ie(o):e}function Zr(e){return ba(e,"__v_skip",!0),e}var xl=e=>ao(e)?Ht(e):e,Vd=e=>ao(e)?br(e):e;function Xp(e){Rr&&yt&&(e=Ie(e),Wp(e.dep||(e.dep=Pd())))}function em(e,o){e=Ie(e),e.dep&&Ed(e.dep)}function yo(e){return!!(e&&e.__v_isRef===!0)}function Z(e){return RR(e,!1)}function RR(e,o){return yo(e)?e:new om(e,o)}var om=class{constructor(o,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?o:Ie(o),this._value=t?o:xl(o)}get value(){return Xp(this),this._value}set value(o){let t=this.__v_isShallow||ka(o)||vr(o);o=t?o:Ie(o),qr(o,this._rawValue)&&(this._rawValue=o,this._value=t?o:xl(o),em(this,o))}};function ar(e){return yo(e)?e.value:e}var FR={get:(e,o,t)=>ar(Reflect.get(e,o,t)),set:(e,o,t,r)=>{let a=e[o];return yo(a)&&!yo(t)?(a.value=t,!0):Reflect.set(e,o,t,r)}};function Hn(e){return yr(e)?e:new Proxy(e,FR)}var tm=class{constructor(o,t,r){this._object=o,this._key=t,this._defaultValue=r,this.__v_isRef=!0}get value(){let o=this._object[this._key];return o===void 0?this._defaultValue:o}set value(o){this._object[this._key]=o}};function De(e,o,t){let r=e[o];return yo(r)?r:new tm(e,o,t)}var rm,am=class{constructor(o,t,r,a){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this[rm]=!1,this._dirty=!0,this.effect=new va(o,()=>{this._dirty||(this._dirty=!0,em(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!a,this.__v_isReadonly=r}get value(){let o=Ie(this);return Xp(o),(o._dirty||!o._cacheable)&&(o._dirty=!1,o._value=o.effect.run()),o._value}set value(o){this._setter(o)}};rm="__v_isReadonly";function lm(e,o,t=!1){let r,a,l=Ee(e);return l?(r=e,a=nt):(r=e.get,a=e.set),new am(r,a,l||!a,t)}var OR;OR="__v_isReadonly";var hl=[];function nm(e,...o){}function CR(){let e=hl[hl.length-1];if(!e)return[];let o=[];for(;e;){let t=o[0];t&&t.vnode===e?t.recurseCount++:o.push({vnode:e,recurseCount:0});let r=e.component&&e.component.parent;e=r&&r.vnode}return o}function bR(e){let o=[];return e.forEach((t,r)=>{o.push(...r===0?[]:[` -`],...yR(t))}),o}function yR({vnode:e,recurseCount:o}){let t=o>0?`... (${o} recursive calls)`:"",r=e.component?e.component.parent==null:!1,a=` at <${Gm(e.component,e.type,r)}`,l=">"+t;return e.props?[a,...vR(e.props),l]:[a+l]}function vR(e){let o=[],t=Object.keys(e);return t.slice(0,3).forEach(r=>{o.push(...im(r,e[r]))}),t.length>3&&o.push(" ..."),o}function im(e,o,t){return Ro(o)?(o=JSON.stringify(o),t?o:[`${e}=${o}`]):typeof o=="number"||typeof o=="boolean"||o==null?t?o:[`${e}=${o}`]:yo(o)?(o=im(e,Ie(o.value),!0),t?o:[`${e}=Ref<`,o,">"]):Ee(o)?[`${e}=fn${o.name?`<${o.name}>`:""}`]:(o=Ie(o),t?o:[`${e}=`,o])}var b0={sp:"serverPrefetch hook",bc:"beforeCreate hook",c:"created hook",bm:"beforeMount hook",m:"mounted hook",bu:"beforeUpdate hook",u:"updated",bum:"beforeUnmount hook",um:"unmounted hook",a:"activated hook",da:"deactivated hook",ec:"errorCaptured hook",rtc:"renderTracked hook",rtg:"renderTriggered hook",[0]:"setup function",[1]:"render function",[2]:"watcher getter",[3]:"watcher callback",[4]:"watcher cleanup function",[5]:"native event handler",[6]:"component event handler",[7]:"vnode hook",[8]:"directive hook",[9]:"transition hook",[10]:"app errorHandler",[11]:"app warnHandler",[12]:"ref function",[13]:"async component loader",[14]:"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core"};function lr(e,o,t,r){let a;try{a=r?e(...r):e()}catch(l){Wn(l,o,t)}return a}function it(e,o,t,r){if(Ee(e)){let l=lr(e,o,t,r);return l&&kd(l)&&l.catch(n=>{Wn(n,o,t)}),l}let a=[];for(let l=0;l<e.length;l++)a.push(it(e[l],o,t,r));return a}function Wn(e,o,t,r=!0){let a=o?o.vnode:null;if(o){let l=o.parent,n=o.proxy,i=t;for(;l;){let s=l.ec;if(s){for(let u=0;u<s.length;u++)if(s[u](e,n,i)===!1)return}l=l.parent}let d=o.appContext.config.errorHandler;if(d){lr(d,null,10,[e,n,i]);return}}kR(e,t,a,r)}function kR(e,o,t,r=!0){console.error(e)}var Sl=!1,zd=!1,zo=[],Wt=0,Aa=[],nr=null,Yr=0,dm=Promise.resolve(),jd=null;function No(e){let o=jd||dm;return e?o.then(this?e.bind(this):e):o}function AR(e){let o=Wt+1,t=zo.length;for(;o<t;){let r=o+t>>>1;gl(zo[r])<e?o=r+1:t=r}return o}function $d(e){(!zo.length||!zo.includes(e,Sl&&e.allowRecurse?Wt+1:Wt))&&(e.id==null?zo.push(e):zo.splice(AR(e.id),0,e),sm())}function sm(){!Sl&&!zd&&(zd=!0,jd=dm.then(pm))}function DR(e){let o=zo.indexOf(e);o>Wt&&zo.splice(o,1)}function PR(e){Ae(e)?Aa.push(...e):(!nr||!nr.includes(e,e.allowRecurse?Yr+1:Yr))&&Aa.push(e),sm()}function um(e,o=Sl?Wt+1:0){for(;o<zo.length;o++){let t=zo[o];t&&t.pre&&(zo.splice(o,1),o--,t())}}function fm(e){if(Aa.length){let o=[...new Set(Aa)];if(Aa.length=0,nr){nr.push(...o);return}for(nr=o,nr.sort((t,r)=>gl(t)-gl(r)),Yr=0;Yr<nr.length;Yr++)nr[Yr]();nr=null,Yr=0}}var gl=e=>e.id==null?1/0:e.id,MR=(e,o)=>{let t=gl(e)-gl(o);if(t===0){if(e.pre&&!o.pre)return-1;if(o.pre&&!e.pre)return 1}return t};function pm(e){zd=!1,Sl=!0,zo.sort(MR);let o=nt;try{for(Wt=0;Wt<zo.length;Wt++){let t=zo[Wt];t&&t.active!==!1&&lr(t,null,14)}}finally{Wt=0,zo.length=0,fm(e),Sl=!1,jd=null,(zo.length||Aa.length)&&pm(e)}}var y0=new Set,v0=new Map;function BR(e,o,...t){if(e.isUnmounted)return;let r=e.vnode.props||ro,a=t,l=o.startsWith("update:"),n=l&&o.slice(7);if(n&&n in r){let u=`${n==="modelValue"?"model":n}Modifiers`,{number:f,trim:c}=r[u]||ro;c&&(a=t.map(p=>Ro(p)?p.trim():p)),f&&(a=t.map(ya))}let i,d=r[i=pl(o)]||r[i=pl(Nt(o))];!d&&l&&(d=r[i=pl(wr(o))]),d&&it(d,e,6,a);let s=r[i+"Once"];if(s){if(!e.emitted)e.emitted={};else if(e.emitted[i])return;e.emitted[i]=!0,it(s,e,6,a)}}function mm(e,o,t=!1){let r=o.emitsCache,a=r.get(e);if(a!==void 0)return a;let l=e.emits,n={},i=!1;if(!Ee(e)){let d=s=>{let u=mm(s,o,!0);u&&(i=!0,Oo(n,u))};!t&&o.mixins.length&&o.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}return!l&&!i?(ao(e)&&r.set(e,null),null):(Ae(l)?l.forEach(d=>n[d]=null):Oo(n,l),ao(e)&&r.set(e,n),n)}function Vn(e,o){return!e||!Ca(o)?!1:(o=o.slice(2).replace(/Once$/,""),je(e,o[0].toLowerCase()+o.slice(1))||je(e,wr(o))||je(e,o))}var jo=null,cm=null;function zn(e){let o=jo;return jo=e,cm=e&&e.type.__scopeId||null,o}function Jr(e,o=jo,t){if(!o||e._n)return e;let r=(...a)=>{r._d&&Hm(-1);let l=zn(o),n;try{n=e(...a)}finally{zn(l),r._d&&Hm(1)}return n};return r._n=!0,r._c=!0,r._d=!0,r}function Ud(e){let{type:o,vnode:t,proxy:r,withProxy:a,props:l,propsOptions:[n],slots:i,attrs:d,emit:s,render:u,renderCache:f,data:c,setupState:p,ctx:x,inheritAttrs:T}=e,C,S,D=zn(e);try{if(t.shapeFlag&4){let g=a||r;C=Vt(u.call(g,g,f,l,p,c,x)),S=d}else{let g=o;C=Vt(g.length>1?g(l,{attrs:d,slots:i,emit:s}):g(l,null)),S=o.props?d:LR(d)}}catch(g){Ol.length=0,Wn(g,e,1),C=mo($o)}let j=C,O;if(S&&T!==!1){let g=Object.keys(S),{shapeFlag:v}=j;g.length&&v&(1|6)&&(n&&g.some(sl)&&(S=ER(S,n)),j=Ar(j,S))}return t.dirs&&(j=Ar(j),j.dirs=j.dirs?j.dirs.concat(t.dirs):t.dirs),t.transition&&(j.transition=t.transition),C=j,zn(D),C}var LR=e=>{let o;for(let t in e)(t==="class"||t==="style"||Ca(t))&&((o||(o={}))[t]=e[t]);return o},ER=(e,o)=>{let t={};for(let r in e)(!sl(r)||!(r.slice(9)in o))&&(t[r]=e[r]);return t};function NR(e,o,t){let{props:r,children:a,component:l}=e,{props:n,children:i,patchFlag:d}=o,s=l.emitsOptions;if(o.dirs||o.transition)return!0;if(t&&d>=0){if(d&1024)return!0;if(d&16)return r?xm(r,n,s):!!n;if(d&8){let u=o.dynamicProps;for(let f=0;f<u.length;f++){let c=u[f];if(n[c]!==r[c]&&!Vn(s,c))return!0}}}else return(a||i)&&(!i||!i.$stable)?!0:r===n?!1:r?n?xm(r,n,s):!0:!!n;return!1}function xm(e,o,t){let r=Object.keys(o);if(r.length!==Object.keys(e).length)return!0;for(let a=0;a<r.length;a++){let l=r[a];if(o[l]!==e[l]&&!Vn(t,l))return!0}return!1}function _R({vnode:e,parent:o},t){for(;o&&o.subTree===e;)(e=o.vnode).el=t,o=o.parent}var IR=e=>e.__isSuspense;function HR(e,o){o&&o.pendingBranch?Ae(e)?o.effects.push(...e):o.effects.push(e):PR(e)}function qo(e,o){if(Io){let t=Io.provides,r=Io.parent&&Io.parent.provides;r===t&&(t=Io.provides=Object.create(r)),t[e]=o}}function Te(e,o,t=!1){let r=Io||jo;if(r){let a=r.parent==null?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(a&&e in a)return a[e];if(arguments.length>1)return t&&Ee(o)?o.call(r.proxy):o}}function Mo(e,o){return $n(e,null,o)}function hm(e,o){return $n(e,null,{flush:"post"})}var jn={};function Ze(e,o,t){return $n(e,o,t)}function $n(e,o,{immediate:t,deep:r,flush:a,onTrack:l,onTrigger:n}=ro){let i=O=>{nm("Invalid watch source: ",O,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},d=Io,s,u=!1,f=!1;if(yo(e)?(s=()=>e.value,u=ka(e)):yr(e)?(s=()=>e,r=!0):Ae(e)?(f=!0,u=e.some(O=>yr(O)||ka(O)),s=()=>e.map(O=>{if(yo(O))return O.value;if(yr(O))return Xr(O);if(Ee(O))return lr(O,d,2)})):Ee(e)?o?s=()=>lr(e,d,2):s=()=>{if(!(d&&d.isUnmounted))return c&&c(),it(e,d,3,[p])}:s=nt,o&&r){let O=s;s=()=>Xr(O())}let c,p=O=>{c=D.onStop=()=>{lr(O,d,4)}},x;if(vl)if(p=nt,o?t&&it(o,d,3,[s(),f?[]:void 0,p]):s(),a==="sync"){let O=AF();x=O.__watcherHandles||(O.__watcherHandles=[])}else return nt;let T=f?new Array(e.length).fill(jn):jn,C=()=>{if(!!D.active)if(o){let O=D.run();(r||u||(f?O.some((g,v)=>qr(g,T[v])):qr(O,T)))&&(c&&c(),it(o,d,3,[O,T===jn?void 0:f&&T[0]===jn?[]:T,p]),T=O)}else D.run()};C.allowRecurse=!!o;let S;a==="sync"?S=C:a==="post"?S=()=>ot(C,d&&d.suspense):(C.pre=!0,d&&(C.id=d.uid),S=()=>$d(C));let D=new va(s,S);o?t?C():T=D.run():a==="post"?ot(D.run.bind(D),d&&d.suspense):D.run();let j=()=>{D.stop(),d&&d.scope&&bn(d.scope.effects,D)};return x&&x.push(j),j}function WR(e,o,t){let r=this.proxy,a=Ro(e)?e.includes(".")?Sm(r,e):()=>r[e]:e.bind(r,r),l;Ee(o)?l=o:(l=o.handler,t=o);let n=Io;Na(this);let i=$n(a,l.bind(r),t);return n?Na(n):la(),i}function Sm(e,o){let t=o.split(".");return()=>{let r=e;for(let a=0;a<t.length&&r;a++)r=r[t[a]];return r}}function Xr(e,o){if(!ao(e)||e.__v_skip||(o=o||new Set,o.has(e)))return e;if(o.add(e),yo(e))Xr(e.value,o);else if(Ae(e))for(let t=0;t<e.length;t++)Xr(e[t],o);else if(yn(e)||gr(e))e.forEach(t=>{Xr(t,o)});else if(Dd(e))for(let t in e)Xr(e[t],o);return e}function Kd(){let e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return fo(()=>{e.isMounted=!0}),_o(()=>{e.isUnmounting=!0}),e}var xt=[Function,Array],VR={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:xt,onEnter:xt,onAfterEnter:xt,onEnterCancelled:xt,onBeforeLeave:xt,onLeave:xt,onAfterLeave:xt,onLeaveCancelled:xt,onBeforeAppear:xt,onAppear:xt,onAfterAppear:xt,onAppearCancelled:xt},setup(e,{slots:o}){let t=St(),r=Kd(),a;return()=>{let l=o.default&&Un(o.default(),!0);if(!l||!l.length)return;let n=l[0];if(l.length>1){let T=!1;for(let C of l)if(C.type!==$o){n=C,T=!0;break}}let i=Ie(e),{mode:d}=i;if(r.isLeaving)return qd(n);let s=wm(n);if(!s)return qd(n);let u=Da(s,i,r,t);Pa(s,u);let f=t.subTree,c=f&&wm(f),p=!1,{getTransitionKey:x}=s.type;if(x){let T=x();a===void 0?a=T:T!==a&&(a=T,p=!0)}if(c&&c.type!==$o&&(!aa(s,c)||p)){let T=Da(c,i,r,t);if(Pa(c,T),d==="out-in")return r.isLeaving=!0,T.afterLeave=()=>{r.isLeaving=!1,t.update.active!==!1&&t.update()},qd(n);d==="in-out"&&s.type!==$o&&(T.delayLeave=(C,S,D)=>{let j=gm(r,c);j[String(c.key)]=c,C._leaveCb=()=>{S(),C._leaveCb=void 0,delete u.delayedLeave},u.delayedLeave=D})}return n}}},Gd=VR;function gm(e,o){let{leavingVNodes:t}=e,r=t.get(o.type);return r||(r=Object.create(null),t.set(o.type,r)),r}function Da(e,o,t,r){let{appear:a,mode:l,persisted:n=!1,onBeforeEnter:i,onEnter:d,onAfterEnter:s,onEnterCancelled:u,onBeforeLeave:f,onLeave:c,onAfterLeave:p,onLeaveCancelled:x,onBeforeAppear:T,onAppear:C,onAfterAppear:S,onAppearCancelled:D}=o,j=String(e.key),O=gm(t,e),g=(F,B)=>{F&&it(F,r,9,B)},v=(F,B)=>{let y=B[1];g(F,B),Ae(F)?F.every(W=>W.length<=1)&&y():F.length<=1&&y()},w={mode:l,persisted:n,beforeEnter(F){let B=i;if(!t.isMounted)if(a)B=T||i;else return;F._leaveCb&&F._leaveCb(!0);let y=O[j];y&&aa(e,y)&&y.el._leaveCb&&y.el._leaveCb(),g(B,[F])},enter(F){let B=d,y=s,W=u;if(!t.isMounted)if(a)B=C||d,y=S||s,W=D||u;else return;let _=!1,ae=F._enterCb=he=>{_||(_=!0,he?g(W,[F]):g(y,[F]),w.delayedLeave&&w.delayedLeave(),F._enterCb=void 0)};B?v(B,[F,ae]):ae()},leave(F,B){let y=String(e.key);if(F._enterCb&&F._enterCb(!0),t.isUnmounting)return B();g(f,[F]);let W=!1,_=F._leaveCb=ae=>{W||(W=!0,B(),ae?g(x,[F]):g(p,[F]),F._leaveCb=void 0,O[y]===e&&delete O[y])};O[y]=e,c?v(c,[F,_]):_()},clone(F){return Da(F,o,t,r)}};return w}function qd(e){if(Kn(e))return e=Ar(e),e.children=null,e}function wm(e){return Kn(e)?e.children?e.children[0]:void 0:e}function Pa(e,o){e.shapeFlag&6&&e.component?Pa(e.component.subTree,o):e.shapeFlag&128?(e.ssContent.transition=o.clone(e.ssContent),e.ssFallback.transition=o.clone(e.ssFallback)):e.transition=o}function Un(e,o=!1,t){let r=[],a=0;for(let l=0;l<e.length;l++){let n=e[l],i=t==null?n.key:String(t)+String(n.key!=null?n.key:l);n.type===Co?(n.patchFlag&128&&a++,r=r.concat(Un(n.children,o,i))):(o||n.type!==$o)&&r.push(i!=null?Ar(n,{key:i}):n)}if(a>1)for(let l=0;l<r.length;l++)r[l].patchFlag=-2;return r}function le(e){return Ee(e)?{setup:e,name:e.name}:e}var wl=e=>!!e.type.__asyncLoader;var Kn=e=>e.type.__isKeepAlive;function Qd(e,o){Tm(e,"a",o)}function zR(e,o){Tm(e,"da",o)}function Tm(e,o,t=Io){let r=e.__wdc||(e.__wdc=()=>{let a=t;for(;a;){if(a.isDeactivated)return;a=a.parent}return e()});if(Gn(o,r,t),t){let a=t.parent;for(;a&&a.parent;)Kn(a.parent.vnode)&&jR(r,o,t,a),a=a.parent}}function jR(e,o,t,r){let a=Gn(o,e,r,!0);ea(()=>{bn(r[o],a)},t)}function Gn(e,o,t=Io,r=!1){if(t){let a=t[e]||(t[e]=[]),l=o.__weh||(o.__weh=(...n)=>{if(t.isUnmounted)return;Fr(),Na(t);let i=it(o,t,e,n);return la(),Or(),i});return r?a.unshift(l):a.push(l),l}}var ir=e=>(o,t=Io)=>(!vl||e==="sp")&&Gn(e,(...r)=>o(...r),t),dr=ir("bm"),fo=ir("m"),Zd=ir("bu"),Yd=ir("u"),_o=ir("bum"),ea=ir("um"),$R=ir("sp"),UR=ir("rtg"),KR=ir("rtc");function GR(e,o=Io){Gn("ec",e,o)}function qn(e,o){let t=jo;if(t===null)return e;let r=oi(t)||t.proxy,a=e.dirs||(e.dirs=[]);for(let l=0;l<o.length;l++){let[n,i,d,s=ro]=o[l];n&&(Ee(n)&&(n={mounted:n,updated:n}),n.deep&&Xr(i),a.push({dir:n,instance:r,value:i,oldValue:void 0,arg:d,modifiers:s}))}return e}function oa(e,o,t,r){let a=e.dirs,l=o&&o.dirs;for(let n=0;n<a.length;n++){let i=a[n];l&&(i.oldValue=l[n].value);let d=i.dir[r];d&&(Fr(),it(d,t,8,[e.el,i,e,o]),Or())}}var qR=Symbol();function Ma(e,o,t={},r,a){if(jo.isCE||jo.parent&&wl(jo.parent)&&jo.parent.isCE)return o!=="default"&&(t.name=o),mo("slot",t,r&&r());let l=e[o];l&&l._c&&(l._d=!1),ht();let n=l&&Rm(l(t)),i=bl(Co,{key:t.key||n&&n.key||`_${o}`},n||(r?r():[]),n&&e._===1?64:-2);return!a&&i.scopeId&&(i.slotScopeIds=[i.scopeId+"-s"]),l&&l._c&&(l._d=!0),i}function Rm(e){return e.some(o=>Ba(o)?!(o.type===$o||o.type===Co&&!Rm(o.children)):!0)?e:null}var Jd=e=>e?zm(e)?oi(e)||e.proxy:Jd(e.parent):null,Tl=Oo(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Jd(e.parent),$root:e=>Jd(e.root),$emit:e=>e.emit,$options:e=>os(e),$forceUpdate:e=>e.f||(e.f=()=>$d(e.update)),$nextTick:e=>e.n||(e.n=No.bind(e.proxy)),$watch:e=>WR.bind(e)});var Xd=(e,o)=>e!==ro&&!e.__isScriptSetup&&je(e,o),QR={get({_:e},o){let{ctx:t,setupState:r,data:a,props:l,accessCache:n,type:i,appContext:d}=e,s;if(o[0]!=="$"){let p=n[o];if(p!==void 0)switch(p){case 1:return r[o];case 2:return a[o];case 4:return t[o];case 3:return l[o]}else{if(Xd(r,o))return n[o]=1,r[o];if(a!==ro&&je(a,o))return n[o]=2,a[o];if((s=e.propsOptions[0])&&je(s,o))return n[o]=3,l[o];if(t!==ro&&je(t,o))return n[o]=4,t[o];es&&(n[o]=0)}}let u=Tl[o],f,c;if(u)return o==="$attrs"&&et(e,"get",o),u(e);if((f=i.__cssModules)&&(f=f[o]))return f;if(t!==ro&&je(t,o))return n[o]=4,t[o];if(c=d.config.globalProperties,je(c,o))return c[o]},set({_:e},o,t){let{data:r,setupState:a,ctx:l}=e;return Xd(a,o)?(a[o]=t,!0):r!==ro&&je(r,o)?(r[o]=t,!0):je(e.props,o)||o[0]==="$"&&o.slice(1)in e?!1:(l[o]=t,!0)},has({_:{data:e,setupState:o,accessCache:t,ctx:r,appContext:a,propsOptions:l}},n){let i;return!!t[n]||e!==ro&&je(e,n)||Xd(o,n)||(i=l[0])&&je(i,n)||je(r,n)||je(Tl,n)||je(a.config.globalProperties,n)},defineProperty(e,o,t){return t.get!=null?e._.accessCache[o]=0:je(t,"value")&&this.set(e,o,t.value,null),Reflect.defineProperty(e,o,t)}};var es=!0;function ZR(e){let o=os(e),t=e.proxy,r=e.ctx;es=!1,o.beforeCreate&&Fm(o.beforeCreate,e,"bc");let{data:a,computed:l,methods:n,watch:i,provide:d,inject:s,created:u,beforeMount:f,mounted:c,beforeUpdate:p,updated:x,activated:T,deactivated:C,beforeDestroy:S,beforeUnmount:D,destroyed:j,unmounted:O,render:g,renderTracked:v,renderTriggered:w,errorCaptured:F,serverPrefetch:B,expose:y,inheritAttrs:W,components:_,directives:ae,filters:he}=o;if(s&&YR(s,r,null,e.appContext.config.unwrapInjectedRef),n)for(let ie in n){let ge=n[ie];Ee(ge)&&(r[ie]=ge.bind(t))}if(a){let ie=a.call(t,t);ao(ie)&&(e.data=Ht(ie))}if(es=!0,l)for(let ie in l){let ge=l[ie],Ve=Ee(ge)?ge.bind(t,t):Ee(ge.get)?ge.get.bind(t,t):nt,Ke=!Ee(ge)&&Ee(ge.set)?ge.set.bind(t):nt,He=V({get:Ve,set:Ke});Object.defineProperty(r,ie,{enumerable:!0,configurable:!0,get:()=>He.value,set:Je=>He.value=Je})}if(i)for(let ie in i)Om(i[ie],r,t,ie);if(d){let ie=Ee(d)?d.call(t):d;Reflect.ownKeys(ie).forEach(ge=>{qo(ge,ie[ge])})}u&&Fm(u,e,"c");function de(ie,ge){Ae(ge)?ge.forEach(Ve=>ie(Ve.bind(t))):ge&&ie(ge.bind(t))}if(de(dr,f),de(fo,c),de(Zd,p),de(Yd,x),de(Qd,T),de(zR,C),de(GR,F),de(KR,v),de(UR,w),de(_o,D),de(ea,O),de($R,B),Ae(y))if(y.length){let ie=e.exposed||(e.exposed={});y.forEach(ge=>{Object.defineProperty(ie,ge,{get:()=>t[ge],set:Ve=>t[ge]=Ve})})}else e.exposed||(e.exposed={});g&&e.render===nt&&(e.render=g),W!=null&&(e.inheritAttrs=W),_&&(e.components=_),ae&&(e.directives=ae)}function YR(e,o,t=nt,r=!1){Ae(e)&&(e=ts(e));for(let a in e){let l=e[a],n;ao(l)?"default"in l?n=Te(l.from||a,l.default,!0):n=Te(l.from||a):n=Te(l),yo(n)&&r?Object.defineProperty(o,a,{enumerable:!0,configurable:!0,get:()=>n.value,set:i=>n.value=i}):o[a]=n}}function Fm(e,o,t){it(Ae(e)?e.map(r=>r.bind(o.proxy)):e.bind(o.proxy),o,t)}function Om(e,o,t,r){let a=r.includes(".")?Sm(t,r):()=>t[r];if(Ro(e)){let l=o[e];Ee(l)&&Ze(a,l)}else if(Ee(e))Ze(a,e.bind(t));else if(ao(e))if(Ae(e))e.forEach(l=>Om(l,o,t,r));else{let l=Ee(e.handler)?e.handler.bind(t):o[e.handler];Ee(l)&&Ze(a,l,e)}}function os(e){let o=e.type,{mixins:t,extends:r}=o,{mixins:a,optionsCache:l,config:{optionMergeStrategies:n}}=e.appContext,i=l.get(o),d;return i?d=i:!a.length&&!t&&!r?d=o:(d={},a.length&&a.forEach(s=>Qn(d,s,n,!0)),Qn(d,o,n)),ao(o)&&l.set(o,d),d}function Qn(e,o,t,r=!1){let{mixins:a,extends:l}=o;l&&Qn(e,l,t,!0),a&&a.forEach(n=>Qn(e,n,t,!0));for(let n in o)if(!(r&&n==="expose")){let i=JR[n]||t&&t[n];e[n]=i?i(e[n],o[n]):o[n]}return e}var JR={data:Cm,props:ta,emits:ta,methods:ta,computed:ta,beforeCreate:Qo,created:Qo,beforeMount:Qo,mounted:Qo,beforeUpdate:Qo,updated:Qo,beforeDestroy:Qo,beforeUnmount:Qo,destroyed:Qo,unmounted:Qo,activated:Qo,deactivated:Qo,errorCaptured:Qo,serverPrefetch:Qo,components:ta,directives:ta,watch:eF,provide:Cm,inject:XR};function Cm(e,o){return o?e?function(){return Oo(Ee(e)?e.call(this,this):e,Ee(o)?o.call(this,this):o)}:o:e}function XR(e,o){return ta(ts(e),ts(o))}function ts(e){if(Ae(e)){let o={};for(let t=0;t<e.length;t++)o[e[t]]=e[t];return o}return e}function Qo(e,o){return e?[...new Set([].concat(e,o))]:o}function ta(e,o){return e?Oo(Oo(Object.create(null),e),o):o}function eF(e,o){if(!e)return o;if(!o)return e;let t=Oo(Object.create(null),e);for(let r in o)t[r]=Qo(e[r],o[r]);return t}function oF(e,o,t,r=!1){let a={},l={};ba(l,Jn,1),e.propsDefaults=Object.create(null),bm(e,o,a,l);for(let n in e.propsOptions[0])n in a||(a[n]=void 0);t?e.props=r?a:Hd(a):e.type.props?e.props=a:e.props=l,e.attrs=l}function tF(e,o,t,r){let{props:a,attrs:l,vnode:{patchFlag:n}}=e,i=Ie(a),[d]=e.propsOptions,s=!1;if((r||n>0)&&!(n&16)){if(n&8){let u=e.vnode.dynamicProps;for(let f=0;f<u.length;f++){let c=u[f];if(Vn(e.emitsOptions,c))continue;let p=o[c];if(d)if(je(l,c))p!==l[c]&&(l[c]=p,s=!0);else{let x=Nt(c);a[x]=rs(d,i,x,p,e,!1)}else p!==l[c]&&(l[c]=p,s=!0)}}}else{bm(e,o,a,l)&&(s=!0);let u;for(let f in i)(!o||!je(o,f)&&((u=wr(f))===f||!je(o,u)))&&(d?t&&(t[f]!==void 0||t[u]!==void 0)&&(a[f]=rs(d,i,f,void 0,e,!0)):delete a[f]);if(l!==i)for(let f in l)(!o||!je(o,f)&&!0)&&(delete l[f],s=!0)}s&&It(e,"set","$attrs")}function bm(e,o,t,r){let[a,l]=e.propsOptions,n=!1,i;if(o)for(let d in o){if(ul(d))continue;let s=o[d],u;a&&je(a,u=Nt(d))?!l||!l.includes(u)?t[u]=s:(i||(i={}))[u]=s:Vn(e.emitsOptions,d)||(!(d in r)||s!==r[d])&&(r[d]=s,n=!0)}if(l){let d=Ie(t),s=i||ro;for(let u=0;u<l.length;u++){let f=l[u];t[f]=rs(a,d,f,s[f],e,!je(s,f))}}return n}function rs(e,o,t,r,a,l){let n=e[t];if(n!=null){let i=je(n,"default");if(i&&r===void 0){let d=n.default;if(n.type!==Function&&Ee(d)){let{propsDefaults:s}=a;t in s?r=s[t]:(Na(a),r=s[t]=d.call(null,o),la())}else r=d}n[0]&&(l&&!i?r=!1:n[1]&&(r===""||r===wr(t))&&(r=!0))}return r}function ym(e,o,t=!1){let r=o.propsCache,a=r.get(e);if(a)return a;let l=e.props,n={},i=[],d=!1;if(!Ee(e)){let u=f=>{d=!0;let[c,p]=ym(f,o,!0);Oo(n,c),p&&i.push(...p)};!t&&o.mixins.length&&o.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!l&&!d)return ao(e)&&r.set(e,Gr),Gr;if(Ae(l))for(let u=0;u<l.length;u++){let f=Nt(l[u]);vm(f)&&(n[f]=ro)}else if(l)for(let u in l){let f=Nt(u);if(vm(f)){let c=l[u],p=n[f]=Ae(c)||Ee(c)?{type:c}:Object.assign({},c);if(p){let x=Dm(Boolean,p.type),T=Dm(String,p.type);p[0]=x>-1,p[1]=T<0||x<T,(x>-1||je(p,"default"))&&i.push(f)}}}let s=[n,i];return ao(e)&&r.set(e,s),s}function vm(e){return e[0]!=="$"}function km(e){let o=e&&e.toString().match(/^\s*function (\w+)/);return o?o[1]:e===null?"null":""}function Am(e,o){return km(e)===km(o)}function Dm(e,o){return Ae(o)?o.findIndex(t=>Am(t,e)):Ee(o)&&Am(o,e)?0:-1}var Pm=e=>e[0]==="_"||e==="$stable",as=e=>Ae(e)?e.map(Vt):[Vt(e)],rF=(e,o,t)=>{if(o._n)return o;let r=Jr((...a)=>as(o(...a)),t);return r._c=!1,r},Mm=(e,o,t)=>{let r=e._ctx;for(let a in e){if(Pm(a))continue;let l=e[a];if(Ee(l))o[a]=rF(a,l,r);else if(l!=null){let n=as(l);o[a]=()=>n}}},Bm=(e,o)=>{let t=as(o);e.slots.default=()=>t},aF=(e,o)=>{if(e.vnode.shapeFlag&32){let t=o._;t?(e.slots=Ie(o),ba(o,"_",t)):Mm(o,e.slots={})}else e.slots={},o&&Bm(e,o);ba(e.slots,Jn,1)},lF=(e,o,t)=>{let{vnode:r,slots:a}=e,l=!0,n=ro;if(r.shapeFlag&32){let i=o._;i?t&&i===1?l=!1:(Oo(a,o),!t&&i===1&&delete a._):(l=!o.$stable,Mm(o,a)),n=o}else o&&(Bm(e,o),n={default:1});if(l)for(let i in a)!Pm(i)&&!(i in n)&&delete a[i]};function Lm(){return{app:null,config:{isNativeTag:Mp,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}var nF=0;function iF(e,o){return function(r,a=null){Ee(r)||(r=Object.assign({},r)),a!=null&&!ao(a)&&(a=null);let l=Lm(),n=new Set,i=!1,d=l.app={_uid:nF++,_component:r,_props:a,_container:null,_context:l,_instance:null,version:DF,get config(){return l.config},set config(s){},use(s,...u){return n.has(s)||(s&&Ee(s.install)?(n.add(s),s.install(d,...u)):Ee(s)&&(n.add(s),s(d,...u))),d},mixin(s){return l.mixins.includes(s)||l.mixins.push(s),d},component(s,u){return u?(l.components[s]=u,d):l.components[s]},directive(s,u){return u?(l.directives[s]=u,d):l.directives[s]},mount(s,u,f){if(!i){let c=mo(r,a);return c.appContext=l,u&&o?o(c,s):e(c,s,f),i=!0,d._container=s,s.__vue_app__=d,oi(c.component)||c.component.proxy}},unmount(){i&&(e(null,d._container),delete d._container.__vue_app__)},provide(s,u){return l.provides[s]=u,d}};return d}}function ls(e,o,t,r,a=!1){if(Ae(e)){e.forEach((c,p)=>ls(c,o&&(Ae(o)?o[p]:o),t,r,a));return}if(wl(r)&&!a)return;let l=r.shapeFlag&4?oi(r.component)||r.component.proxy:r.el,n=a?null:l,{i,r:d}=e,s=o&&o.r,u=i.refs===ro?i.refs={}:i.refs,f=i.setupState;if(s!=null&&s!==d&&(Ro(s)?(u[s]=null,je(f,s)&&(f[s]=null)):yo(s)&&(s.value=null)),Ee(d))lr(d,i,12,[n,u]);else{let c=Ro(d),p=yo(d);if(c||p){let x=()=>{if(e.f){let T=c?je(f,d)?f[d]:u[d]:d.value;a?Ae(T)&&bn(T,l):Ae(T)?T.includes(l)||T.push(l):c?(u[d]=[l],je(f,d)&&(f[d]=u[d])):(d.value=[l],e.k&&(u[e.k]=d.value))}else c?(u[d]=n,je(f,d)&&(f[d]=n)):p&&(d.value=n,e.k&&(u[e.k]=n))};n?(x.id=-1,ot(x,t)):x()}}}function dF(){let e=[]}var ot=HR;function Em(e){return sF(e)}function sF(e,o){dF();let t=Ep();t.__VUE__=!0;let{insert:r,remove:a,patchProp:l,createElement:n,createText:i,createComment:d,setText:s,setElementText:u,parentNode:f,nextSibling:c,setScopeId:p=nt,insertStaticContent:x}=e,T=(m,h,k,E=null,I=null,G=null,$=!1,L=null,U=!!h.dynamicChildren)=>{if(m===h)return;m&&!aa(m,h)&&(E=ho(m),Qe(m,I,G,!0),m=null),h.patchFlag===-2&&(U=!1,h.dynamicChildren=null);let{type:H,ref:b,shapeFlag:N}=h;switch(H){case Yn:C(m,h,k,E);break;case $o:S(m,h,k,E);break;case Fl:m==null&&D(h,k,E,$);break;case Co:ae(m,h,k,E,I,G,$,L,U);break;default:N&1?v(m,h,k,E,I,G,$,L,U):N&6?he(m,h,k,E,I,G,$,L,U):(N&64||N&128)&&H.process(m,h,k,E,I,G,$,L,U,qe)}b!=null&&I&&ls(b,m&&m.ref,G,h||m,!h)},C=(m,h,k,E)=>{if(m==null)r(h.el=i(h.children),k,E);else{let I=h.el=m.el;h.children!==m.children&&s(I,h.children)}},S=(m,h,k,E)=>{m==null?r(h.el=d(h.children||""),k,E):h.el=m.el},D=(m,h,k,E)=>{[m.el,m.anchor]=x(m.children,h,k,E,m.el,m.anchor)},j=(m,h,k,E)=>{if(h.children!==m.children){let I=c(m.anchor);g(m),[h.el,h.anchor]=x(h.children,k,I,E)}else h.el=m.el,h.anchor=m.anchor},O=({el:m,anchor:h},k,E)=>{let I;for(;m&&m!==h;)I=c(m),r(m,k,E),m=I;r(h,k,E)},g=({el:m,anchor:h})=>{let k;for(;m&&m!==h;)k=c(m),a(m),m=k;a(h)},v=(m,h,k,E,I,G,$,L,U)=>{$=$||h.type==="svg",m==null?w(h,k,E,I,G,$,L,U):y(m,h,I,G,$,L,U)},w=(m,h,k,E,I,G,$,L)=>{let U,H,{type:b,props:N,shapeFlag:z,transition:te,dirs:fe}=m;if(U=m.el=n(m.type,G,N&&N.is,N),z&8?u(U,m.children):z&16&&B(m.children,U,null,E,I,G&&b!=="foreignObject",$,L),fe&&oa(m,null,E,"created"),N){for(let ye in N)ye!=="value"&&!ul(ye)&&l(U,ye,null,N[ye],G,m.children,E,I,We);"value"in N&&l(U,"value",null,N.value),(H=N.onVnodeBeforeMount)&&zt(H,E,m)}F(U,m,m.scopeId,$,E),fe&&oa(m,null,E,"beforeMount");let Ce=(!I||I&&!I.pendingBranch)&&te&&!te.persisted;Ce&&te.beforeEnter(U),r(U,h,k),((H=N&&N.onVnodeMounted)||Ce||fe)&&ot(()=>{H&&zt(H,E,m),Ce&&te.enter(U),fe&&oa(m,null,E,"mounted")},I)},F=(m,h,k,E,I)=>{if(k&&p(m,k),E)for(let G=0;G<E.length;G++)p(m,E[G]);if(I){let G=I.subTree;if(h===G){let $=I.vnode;F(m,$,$.scopeId,$.slotScopeIds,I.parent)}}},B=(m,h,k,E,I,G,$,L,U=0)=>{for(let H=U;H<m.length;H++){let b=m[H]=L?Dr(m[H]):Vt(m[H]);T(null,b,h,k,E,I,G,$,L)}},y=(m,h,k,E,I,G,$)=>{let L=h.el=m.el,{patchFlag:U,dynamicChildren:H,dirs:b}=h;U|=m.patchFlag&16;let N=m.props||ro,z=h.props||ro,te;k&&ra(k,!1),(te=z.onVnodeBeforeUpdate)&&zt(te,k,h,m),b&&oa(h,m,k,"beforeUpdate"),k&&ra(k,!0);let fe=I&&h.type!=="foreignObject";if(H?W(m.dynamicChildren,H,L,k,E,fe,G):$||Ve(m,h,L,null,k,E,fe,G,!1),U>0){if(U&16)_(L,h,N,z,k,E,I);else if(U&2&&N.class!==z.class&&l(L,"class",null,z.class,I),U&4&&l(L,"style",N.style,z.style,I),U&8){let Ce=h.dynamicProps;for(let ye=0;ye<Ce.length;ye++){let Le=Ce[ye],Q=N[Le],re=z[Le];(re!==Q||Le==="value")&&l(L,Le,Q,re,I,m.children,k,E,We)}}U&1&&m.children!==h.children&&u(L,h.children)}else!$&&H==null&&_(L,h,N,z,k,E,I);((te=z.onVnodeUpdated)||b)&&ot(()=>{te&&zt(te,k,h,m),b&&oa(h,m,k,"updated")},E)},W=(m,h,k,E,I,G,$)=>{for(let L=0;L<h.length;L++){let U=m[L],H=h[L],b=U.el&&(U.type===Co||!aa(U,H)||U.shapeFlag&(6|64))?f(U.el):k;T(U,H,b,null,E,I,G,$,!0)}},_=(m,h,k,E,I,G,$)=>{if(k!==E){if(k!==ro)for(let L in k)!ul(L)&&!(L in E)&&l(m,L,k[L],null,$,h.children,I,G,We);for(let L in E){if(ul(L))continue;let U=E[L],H=k[L];U!==H&&L!=="value"&&l(m,L,H,U,$,h.children,I,G,We)}"value"in E&&l(m,"value",k.value,E.value)}},ae=(m,h,k,E,I,G,$,L,U)=>{let H=h.el=m?m.el:i(""),b=h.anchor=m?m.anchor:i(""),{patchFlag:N,dynamicChildren:z,slotScopeIds:te}=h;te&&(L=L?L.concat(te):te),m==null?(r(H,k,E),r(b,k,E),B(h.children,k,b,I,G,$,L,U)):N>0&&N&64&&z&&m.dynamicChildren?(W(m.dynamicChildren,z,k,I,G,$,L),(h.key!=null||I&&h===I.subTree)&&ns(m,h,!0)):Ve(m,h,k,b,I,G,$,L,U)},he=(m,h,k,E,I,G,$,L,U)=>{h.slotScopeIds=L,m==null?h.shapeFlag&512?I.ctx.activate(h,k,E,$,U):Me(h,k,E,I,G,$,U):de(m,h,U)},Me=(m,h,k,E,I,G,$)=>{let L=m.component=wF(m,E,I);if(Kn(m)&&(L.ctx.renderer=qe),TF(L),L.asyncDep){if(I&&I.registerDep(L,ie),!m.el){let U=L.subTree=mo($o);S(null,U,h,k)}return}ie(L,m,h,k,I,G,$)},de=(m,h,k)=>{let E=h.component=m.component;if(NR(m,h,k))if(E.asyncDep&&!E.asyncResolved){ge(E,h,k);return}else E.next=h,DR(E.update),E.update();else h.el=m.el,E.vnode=h},ie=(m,h,k,E,I,G,$)=>{let L=()=>{if(m.isMounted){let{next:b,bu:N,u:z,parent:te,vnode:fe}=m,Ce=b,ye;ra(m,!1),b?(b.el=fe.el,ge(m,b,$)):b=fe,N&&ml(N),(ye=b.props&&b.props.onVnodeBeforeUpdate)&&zt(ye,te,b,fe),ra(m,!0);let Le=Ud(m),Q=m.subTree;m.subTree=Le,T(Q,Le,f(Q.el),ho(Q),m,I,G),b.el=Le.el,Ce===null&&_R(m,Le.el),z&&ot(z,I),(ye=b.props&&b.props.onVnodeUpdated)&&ot(()=>zt(ye,te,b,fe),I)}else{let b,{el:N,props:z}=h,{bm:te,m:fe,parent:Ce}=m,ye=wl(h);if(ra(m,!1),te&&ml(te),!ye&&(b=z&&z.onVnodeBeforeMount)&&zt(b,Ce,h),ra(m,!0),N&&vo){let Le=()=>{m.subTree=Ud(m),vo(N,m.subTree,m,I,null)};ye?h.type.__asyncLoader().then(()=>!m.isUnmounted&&Le()):Le()}else{let Le=m.subTree=Ud(m);T(null,Le,k,E,m,I,G),h.el=Le.el}if(fe&&ot(fe,I),!ye&&(b=z&&z.onVnodeMounted)){let Le=h;ot(()=>zt(b,Ce,Le),I)}(h.shapeFlag&256||Ce&&wl(Ce.vnode)&&Ce.vnode.shapeFlag&256)&&m.a&&ot(m.a,I),m.isMounted=!0,h=k=E=null}},U=m.effect=new va(L,()=>$d(H),m.scope),H=m.update=()=>U.run();H.id=m.uid,ra(m,!0),H()},ge=(m,h,k)=>{h.component=m;let E=m.vnode.props;m.vnode=h,m.next=null,tF(m,h.props,E,k),lF(m,h.children,k),Fr(),um(),Or()},Ve=(m,h,k,E,I,G,$,L,U=!1)=>{let H=m&&m.children,b=m?m.shapeFlag:0,N=h.children,{patchFlag:z,shapeFlag:te}=h;if(z>0){if(z&128){He(H,N,k,E,I,G,$,L,U);return}else if(z&256){Ke(H,N,k,E,I,G,$,L,U);return}}te&8?(b&16&&We(H,I,G),N!==H&&u(k,N)):b&16?te&16?He(H,N,k,E,I,G,$,L,U):We(H,I,G,!0):(b&8&&u(k,""),te&16&&B(N,k,E,I,G,$,L,U))},Ke=(m,h,k,E,I,G,$,L,U)=>{m=m||Gr,h=h||Gr;let H=m.length,b=h.length,N=Math.min(H,b),z;for(z=0;z<N;z++){let te=h[z]=U?Dr(h[z]):Vt(h[z]);T(m[z],te,k,null,I,G,$,L,U)}H>b?We(m,I,G,!0,!1,N):B(h,k,E,I,G,$,L,U,N)},He=(m,h,k,E,I,G,$,L,U)=>{let H=0,b=h.length,N=m.length-1,z=b-1;for(;H<=N&&H<=z;){let te=m[H],fe=h[H]=U?Dr(h[H]):Vt(h[H]);if(aa(te,fe))T(te,fe,k,null,I,G,$,L,U);else break;H++}for(;H<=N&&H<=z;){let te=m[N],fe=h[z]=U?Dr(h[z]):Vt(h[z]);if(aa(te,fe))T(te,fe,k,null,I,G,$,L,U);else break;N--,z--}if(H>N){if(H<=z){let te=z+1,fe=te<b?h[te].el:E;for(;H<=z;)T(null,h[H]=U?Dr(h[H]):Vt(h[H]),k,fe,I,G,$,L,U),H++}}else if(H>z)for(;H<=N;)Qe(m[H],I,G,!0),H++;else{let te=H,fe=H,Ce=new Map;for(H=fe;H<=z;H++){let ze=h[H]=U?Dr(h[H]):Vt(h[H]);ze.key!=null&&Ce.set(ze.key,H)}let ye,Le=0,Q=z-fe+1,re=!1,Se=0,_e=new Array(Q);for(H=0;H<Q;H++)_e[H]=0;for(H=te;H<=N;H++){let ze=m[H];if(Le>=Q){Qe(ze,I,G,!0);continue}let eo;if(ze.key!=null)eo=Ce.get(ze.key);else for(ye=fe;ye<=z;ye++)if(_e[ye-fe]===0&&aa(ze,h[ye])){eo=ye;break}eo===void 0?Qe(ze,I,G,!0):(_e[eo-fe]=H+1,eo>=Se?Se=eo:re=!0,T(ze,h[eo],k,null,I,G,$,L,U),Le++)}let Xe=re?uF(_e):Gr;for(ye=Xe.length-1,H=Q-1;H>=0;H--){let ze=fe+H,eo=h[ze],Ge=ze+1<b?h[ze+1].el:E;_e[H]===0?T(null,eo,k,Ge,I,G,$,L,U):re&&(ye<0||H!==Xe[ye]?Je(eo,k,Ge,2):ye--)}}},Je=(m,h,k,E,I=null)=>{let{el:G,type:$,transition:L,children:U,shapeFlag:H}=m;if(H&6){Je(m.component.subTree,h,k,E);return}if(H&128){m.suspense.move(h,k,E);return}if(H&64){$.move(m,h,k,qe);return}if($===Co){r(G,h,k);for(let N=0;N<U.length;N++)Je(U[N],h,k,E);r(m.anchor,h,k);return}if($===Fl){O(m,h,k);return}if(E!==2&&H&1&&L)if(E===0)L.beforeEnter(G),r(G,h,k),ot(()=>L.enter(G),I);else{let{leave:N,delayLeave:z,afterLeave:te}=L,fe=()=>r(G,h,k),Ce=()=>{N(G,()=>{fe(),te&&te()})};z?z(G,fe,Ce):Ce()}else r(G,h,k)},Qe=(m,h,k,E=!1,I=!1)=>{let{type:G,props:$,ref:L,children:U,dynamicChildren:H,shapeFlag:b,patchFlag:N,dirs:z}=m;if(L!=null&&ls(L,null,k,m,!0),b&256){h.ctx.deactivate(m);return}let te=b&1&&z,fe=!wl(m),Ce;if(fe&&(Ce=$&&$.onVnodeBeforeUnmount)&&zt(Ce,h,m),b&6)Be(m.component,k,E);else{if(b&128){m.suspense.unmount(k,E);return}te&&oa(m,null,h,"beforeUnmount"),b&64?m.type.remove(m,h,k,I,qe,E):H&&(G!==Co||N>0&&N&64)?We(H,h,k,!1,!0):(G===Co&&N&(128|256)||!I&&b&16)&&We(U,h,k),E&&wo(m)}(fe&&(Ce=$&&$.onVnodeUnmounted)||te)&&ot(()=>{Ce&&zt(Ce,h,m),te&&oa(m,null,h,"unmounted")},k)},wo=m=>{let{type:h,el:k,anchor:E,transition:I}=m;if(h===Co){Do(k,E);return}if(h===Fl){g(m);return}let G=()=>{a(k),I&&!I.persisted&&I.afterLeave&&I.afterLeave()};if(m.shapeFlag&1&&I&&!I.persisted){let{leave:$,delayLeave:L}=I,U=()=>$(k,G);L?L(m.el,G,U):U()}else G()},Do=(m,h)=>{let k;for(;m!==h;)k=c(m),a(m),m=k;a(h)},Be=(m,h,k)=>{let{bum:E,scope:I,update:G,subTree:$,um:L}=m;E&&ml(E),I.stop(),G&&(G.active=!1,Qe($,m,h,k)),L&&ot(L,h),ot(()=>{m.isUnmounted=!0},h),h&&h.pendingBranch&&!h.isUnmounted&&m.asyncDep&&!m.asyncResolved&&m.suspenseId===h.pendingId&&(h.deps--,h.deps===0&&h.resolve())},We=(m,h,k,E=!1,I=!1,G=0)=>{for(let $=G;$<m.length;$++)Qe(m[$],h,k,E,I)},ho=m=>m.shapeFlag&6?ho(m.component.subTree):m.shapeFlag&128?m.suspense.next():c(m.anchor||m.el),we=(m,h,k)=>{m==null?h._vnode&&Qe(h._vnode,null,null,!0):T(h._vnode||null,m,h,null,null,null,k),um(),fm(),h._vnode=m},qe={p:T,um:Qe,m:Je,r:wo,mt:Me,mc:B,pc:Ve,pbc:W,n:ho,o:e},to,vo;return o&&([to,vo]=o(qe)),{render:we,hydrate:to,createApp:iF(we,to)}}function ra({effect:e,update:o},t){e.allowRecurse=o.allowRecurse=t}function ns(e,o,t=!1){let r=e.children,a=o.children;if(Ae(r)&&Ae(a))for(let l=0;l<r.length;l++){let n=r[l],i=a[l];i.shapeFlag&1&&!i.dynamicChildren&&((i.patchFlag<=0||i.patchFlag===32)&&(i=a[l]=Dr(a[l]),i.el=n.el),t||ns(n,i)),i.type===Yn&&(i.el=n.el)}}function uF(e){let o=e.slice(),t=[0],r,a,l,n,i,d=e.length;for(r=0;r<d;r++){let s=e[r];if(s!==0){if(a=t[t.length-1],e[a]<s){o[r]=a,t.push(r);continue}for(l=0,n=t.length-1;l<n;)i=l+n>>1,e[t[i]]<s?l=i+1:n=i;s<e[t[l]]&&(l>0&&(o[r]=t[l-1]),t[l]=r)}}for(l=t.length,n=t[l-1];l-- >0;)t[l]=n,n=o[n];return t}var fF=e=>e.__isTeleport,Rl=e=>e&&(e.disabled||e.disabled===""),Nm=e=>typeof SVGElement!="undefined"&&e instanceof SVGElement,is=(e,o)=>{let t=e&&e.to;if(Ro(t))if(o){let r=o(t);return r}else return null;else return t},pF={__isTeleport:!0,process(e,o,t,r,a,l,n,i,d,s){let{mc:u,pc:f,pbc:c,o:{insert:p,querySelector:x,createText:T,createComment:C}}=s,S=Rl(o.props),{shapeFlag:D,children:j,dynamicChildren:O}=o;if(e==null){let g=o.el=T(""),v=o.anchor=T("");p(g,t,r),p(v,t,r);let w=o.target=is(o.props,x),F=o.targetAnchor=T("");w&&(p(F,w),n=n||Nm(w));let B=(y,W)=>{D&16&&u(j,y,W,a,l,n,i,d)};S?B(t,v):w&&B(w,F)}else{o.el=e.el;let g=o.anchor=e.anchor,v=o.target=e.target,w=o.targetAnchor=e.targetAnchor,F=Rl(e.props),B=F?t:v,y=F?g:w;if(n=n||Nm(v),O?(c(e.dynamicChildren,O,B,a,l,n,i),ns(e,o,!0)):d||f(e,o,B,y,a,l,n,i,!1),S)F||Zn(o,t,g,s,1);else if((o.props&&o.props.to)!==(e.props&&e.props.to)){let W=o.target=is(o.props,x);W&&Zn(o,W,null,s,0)}else F&&Zn(o,v,w,s,1)}Im(o)},remove(e,o,t,r,{um:a,o:{remove:l}},n){let{shapeFlag:i,children:d,anchor:s,targetAnchor:u,target:f,props:c}=e;if(f&&l(u),(n||!Rl(c))&&(l(s),i&16))for(let p=0;p<d.length;p++){let x=d[p];a(x,o,t,!0,!!x.dynamicChildren)}},move:Zn,hydrate:mF};function Zn(e,o,t,{o:{insert:r},m:a},l=2){l===0&&r(e.targetAnchor,o,t);let{el:n,anchor:i,shapeFlag:d,children:s,props:u}=e,f=l===2;if(f&&r(n,o,t),(!f||Rl(u))&&d&16)for(let c=0;c<s.length;c++)a(s[c],o,t,2);f&&r(i,o,t)}function mF(e,o,t,r,a,l,{o:{nextSibling:n,parentNode:i,querySelector:d}},s){let u=o.target=is(o.props,d);if(u){let f=u._lpa||u.firstChild;if(o.shapeFlag&16)if(Rl(o.props))o.anchor=s(n(e),o,i(e),t,r,a,l),o.targetAnchor=f;else{o.anchor=n(e);let c=f;for(;c;)if(c=n(c),c&&c.nodeType===8&&c.data==="teleport anchor"){o.targetAnchor=c,u._lpa=o.targetAnchor&&n(o.targetAnchor);break}s(f,o,u,t,r,a,l)}Im(o)}return o.anchor&&n(o.anchor)}var _m=pF;function Im(e){let o=e.ctx;if(o&&o.ut){let t=e.children[0].el;for(;t!==e.targetAnchor;)t.nodeType===1&&t.setAttribute("data-v-owner",o.uid),t=t.nextSibling;o.ut()}}var Co=Symbol(void 0),Yn=Symbol(void 0),$o=Symbol(void 0),Fl=Symbol(void 0),Ol=[],vt=null;function ht(e=!1){Ol.push(vt=e?null:[])}function cF(){Ol.pop(),vt=Ol[Ol.length-1]||null}var Cl=1;function Hm(e){Cl+=e}function Wm(e){return e.dynamicChildren=Cl>0?vt||Gr:null,cF(),Cl>0&&vt&&vt.push(e),e}function kr(e,o,t,r,a,l){return Wm(La(e,o,t,r,a,l,!0))}function bl(e,o,t,r,a){return Wm(mo(e,o,t,r,a,!0))}function Ba(e){return e?e.__v_isVNode===!0:!1}function aa(e,o){return e.type===o.type&&e.key===o.key}var Jn="__vInternal",Vm=({key:e})=>e!=null?e:null,Xn=({ref:e,ref_key:o,ref_for:t})=>e!=null?Ro(e)||yo(e)||Ee(e)?{i:jo,r:e,k:o,f:!!t}:e:null;function La(e,o=null,t=null,r=0,a=null,l=e===Co?0:1,n=!1,i=!1){let d={__v_isVNode:!0,__v_skip:!0,type:e,props:o,key:o&&Vm(o),ref:o&&Xn(o),scopeId:cm,slotScopeIds:null,children:t,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:l,patchFlag:r,dynamicProps:a,dynamicChildren:null,appContext:null,ctx:jo};return i?(ds(d,t),l&128&&e.normalize(d)):t&&(d.shapeFlag|=Ro(t)?8:16),Cl>0&&!n&&vt&&(d.patchFlag>0||l&6)&&d.patchFlag!==32&&vt.push(d),d}var mo=xF;function xF(e,o=null,t=null,r=0,a=null,l=!1){if((!e||e===qR)&&(e=$o),Ba(e)){let i=Ar(e,o,!0);return t&&ds(i,t),Cl>0&&!l&&vt&&(i.shapeFlag&6?vt[vt.indexOf(e)]=i:vt.push(i)),i.patchFlag|=-2,i}if(vF(e)&&(e=e.__vccOpts),o){o=hF(o);let{class:i,style:d}=o;i&&!Ro(i)&&(o.class=Kr(i)),ao(d)&&(In(d)&&!Ae(d)&&(d=Oo({},d)),o.style=Sr(d))}let n=Ro(e)?1:IR(e)?128:fF(e)?64:ao(e)?4:Ee(e)?2:0;return La(e,o,t,r,a,n,l,!0)}function hF(e){return e?In(e)||Jn in e?Oo({},e):e:null}function Ar(e,o,t=!1){let{props:r,ref:a,patchFlag:l,children:n}=e,i=o?yl(r||{},o):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:i,key:i&&Vm(i),ref:o&&o.ref?t&&a?Ae(a)?a.concat(Xn(o)):[a,Xn(o)]:Xn(o):a,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:n,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:o&&e.type!==Co?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Ar(e.ssContent),ssFallback:e.ssFallback&&Ar(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx}}function Ea(e=" ",o=0){return mo(Yn,null,e,o)}function ei(e="",o=!1){return o?(ht(),bl($o,null,e)):mo($o,null,e)}function Vt(e){return e==null||typeof e=="boolean"?mo($o):Ae(e)?mo(Co,null,e.slice()):typeof e=="object"?Dr(e):mo(Yn,null,String(e))}function Dr(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Ar(e)}function ds(e,o){let t=0,{shapeFlag:r}=e;if(o==null)o=null;else if(Ae(o))t=16;else if(typeof o=="object")if(r&(1|64)){let a=o.default;a&&(a._c&&(a._d=!1),ds(e,a()),a._c&&(a._d=!0));return}else{t=32;let a=o._;!a&&!(Jn in o)?o._ctx=jo:a===3&&jo&&(jo.slots._===1?o._=1:(o._=2,e.patchFlag|=1024))}else Ee(o)?(o={default:o,_ctx:jo},t=32):(o=String(o),r&64?(t=16,o=[Ea(o)]):t=8);e.children=o,e.shapeFlag|=t}function yl(...e){let o={};for(let t=0;t<e.length;t++){let r=e[t];for(let a in r)if(a==="class")o.class!==r.class&&(o.class=Kr([o.class,r.class]));else if(a==="style")o.style=Sr([o.style,r.style]);else if(Ca(a)){let l=o[a],n=r[a];n&&l!==n&&!(Ae(l)&&l.includes(n))&&(o[a]=l?[].concat(l,n):n)}else a!==""&&(o[a]=r[a])}return o}function zt(e,o,t,r=null){it(e,o,7,[t,r])}var SF=Lm(),gF=0;function wF(e,o,t){let r=e.type,a=(o?o.appContext:e.appContext)||SF,l={uid:gF++,vnode:e,type:r,parent:o,appContext:a,root:null,next:null,subTree:null,effect:null,update:null,scope:new Pn(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:o?o.provides:Object.create(a.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:ym(r,a),emitsOptions:mm(r,a),emit:null,emitted:null,propsDefaults:ro,inheritAttrs:r.inheritAttrs,ctx:ro,data:ro,props:ro,attrs:ro,slots:ro,refs:ro,setupState:ro,setupContext:null,suspense:t,suspenseId:t?t.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return l.ctx={_:l},l.root=o?o.root:l,l.emit=BR.bind(null,l),e.ce&&e.ce(l),l}var Io=null,St=()=>Io||jo,Na=e=>{Io=e,e.scope.on()},la=()=>{Io&&Io.scope.off(),Io=null};function zm(e){return e.vnode.shapeFlag&4}var vl=!1;function TF(e,o=!1){vl=o;let{props:t,children:r}=e.vnode,a=zm(e);oF(e,t,a,o),aF(e,r);let l=a?RF(e,o):void 0;return vl=!1,l}function RF(e,o){var t;let r=e.type;e.accessCache=Object.create(null),e.proxy=Zr(new Proxy(e.ctx,QR));let{setup:a}=r;if(a){let l=e.setupContext=a.length>1?OF(e):null;Na(e),Fr();let n=lr(a,e,0,[e.props,l]);if(Or(),la(),kd(n)){if(n.then(la,la),o)return n.then(i=>{jm(e,i,o)}).catch(i=>{Wn(i,e,0)});e.asyncDep=n}else jm(e,n,o)}else Km(e,o)}function jm(e,o,t){Ee(o)?e.type.__ssrInlineRender?e.ssrRender=o:e.render=o:ao(o)&&(e.setupState=Hn(o)),Km(e,t)}var $m,Um;function Km(e,o,t){let r=e.type;if(!e.render){if(!o&&$m&&!r.render){let a=r.template||os(e).template;if(a){let{isCustomElement:l,compilerOptions:n}=e.appContext.config,{delimiters:i,compilerOptions:d}=r,s=Oo(Oo({isCustomElement:l,delimiters:i},n),d);r.render=$m(a,s)}}e.render=r.render||nt,Um&&Um(e)}Na(e),Fr(),ZR(e),Or(),la()}function FF(e){return new Proxy(e.attrs,{get(o,t){return et(e,"get","$attrs"),o[t]}})}function OF(e){let o=r=>{e.exposed=r||{}},t;return{get attrs(){return t||(t=FF(e))},slots:e.slots,emit:e.emit,expose:o}}function oi(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Hn(Zr(e.exposed)),{get(o,t){if(t in o)return o[t];if(t in Tl)return Tl[t](e)},has(o,t){return t in o||t in Tl}}))}var CF=/(?:^|[-_])(\w)/g,bF=e=>e.replace(CF,o=>o.toUpperCase()).replace(/[-_]/g,"");function yF(e,o=!0){return Ee(e)?e.displayName||e.name:e.name||o&&e.__name}function Gm(e,o,t=!1){let r=yF(o);if(!r&&o.__file){let a=o.__file.match(/([^/\\]+)\.\w+$/);a&&(r=a[1])}if(!r&&e&&e.parent){let a=l=>{for(let n in l)if(l[n]===o)return n};r=a(e.components||e.parent.type.components)||a(e.appContext.components)}return r?bF(r):t?"App":"Anonymous"}function vF(e){return Ee(e)&&"__vccOpts"in e}var V=(e,o)=>lm(e,o,vl);function R(e,o,t){let r=arguments.length;return r===2?ao(o)&&!Ae(o)?Ba(o)?mo(e,null,[o]):mo(e,o):mo(e,null,o):(r>3?t=Array.prototype.slice.call(arguments,2):r===3&&Ba(t)&&(t=[t]),mo(e,o,t))}var kF=Symbol(""),AF=()=>{{let e=Te(kF);return e}};var DF="3.2.45";var PF="http://www.w3.org/2000/svg",na=typeof document!="undefined"?document:null,qm=na&&na.createElement("template"),MF={insert:(e,o,t)=>{o.insertBefore(e,t||null)},remove:e=>{let o=e.parentNode;o&&o.removeChild(e)},createElement:(e,o,t,r)=>{let a=o?na.createElementNS(PF,e):na.createElement(e,t?{is:t}:void 0);return e==="select"&&r&&r.multiple!=null&&a.setAttribute("multiple",r.multiple),a},createText:e=>na.createTextNode(e),createComment:e=>na.createComment(e),setText:(e,o)=>{e.nodeValue=o},setElementText:(e,o)=>{e.textContent=o},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>na.querySelector(e),setScopeId(e,o){e.setAttribute(o,"")},insertStaticContent(e,o,t,r,a,l){let n=t?t.previousSibling:o.lastChild;if(a&&(a===l||a.nextSibling))for(;o.insertBefore(a.cloneNode(!0),t),!(a===l||!(a=a.nextSibling)););else{qm.innerHTML=r?`<svg>${e}</svg>`:e;let i=qm.content;if(r){let d=i.firstChild;for(;d.firstChild;)i.appendChild(d.firstChild);i.removeChild(d)}o.insertBefore(i,t)}return[n?n.nextSibling:o.firstChild,t?t.previousSibling:o.lastChild]}};function BF(e,o,t){let r=e._vtc;r&&(o=(o?[o,...r]:[...r]).join(" ")),o==null?e.removeAttribute("class"):t?e.setAttribute("class",o):e.className=o}function LF(e,o,t){let r=e.style,a=Ro(t);if(t&&!a){for(let l in t)ss(r,l,t[l]);if(o&&!Ro(o))for(let l in o)t[l]==null&&ss(r,l,"")}else{let l=r.display;a?o!==t&&(r.cssText=t):o&&e.removeAttribute("style"),"_vod"in e&&(r.display=l)}}var Qm=/\s*!important$/;function ss(e,o,t){if(Ae(t))t.forEach(r=>ss(e,o,r));else if(t==null&&(t=""),o.startsWith("--"))e.setProperty(o,t);else{let r=EF(e,o);Qm.test(t)?e.setProperty(wr(r),t.replace(Qm,""),"important"):e[r]=t}}var Zm=["Webkit","Moz","ms"],us={};function EF(e,o){let t=us[o];if(t)return t;let r=Nt(o);if(r!=="filter"&&r in e)return us[o]=r;r=fl(r);for(let a=0;a<Zm.length;a++){let l=Zm[a]+r;if(l in e)return us[o]=l}return o}var Ym="http://www.w3.org/1999/xlink";function NF(e,o,t,r,a){if(r&&o.startsWith("xlink:"))t==null?e.removeAttributeNS(Ym,o.slice(6,o.length)):e.setAttributeNS(Ym,o,t);else{let l=Dp(o);t==null||l&&!yd(t)?e.removeAttribute(o):e.setAttribute(o,l?"":t)}}function _F(e,o,t,r,a,l,n){if(o==="innerHTML"||o==="textContent"){r&&n(r,a,l),e[o]=t==null?"":t;return}if(o==="value"&&e.tagName!=="PROGRESS"&&!e.tagName.includes("-")){e._value=t;let d=t==null?"":t;(e.value!==d||e.tagName==="OPTION")&&(e.value=d),t==null&&e.removeAttribute(o);return}let i=!1;if(t===""||t==null){let d=typeof e[o];d==="boolean"?t=yd(t):t==null&&d==="string"?(t="",i=!0):d==="number"&&(t=0,i=!0)}try{e[o]=t}catch(d){}i&&e.removeAttribute(o)}function IF(e,o,t,r){e.addEventListener(o,t,r)}function HF(e,o,t,r){e.removeEventListener(o,t,r)}function WF(e,o,t,r,a=null){let l=e._vei||(e._vei={}),n=l[o];if(r&&n)n.value=r;else{let[i,d]=VF(o);if(r){let s=l[o]=$F(r,a);IF(e,i,s,d)}else n&&(HF(e,i,n,d),l[o]=void 0)}}var Jm=/(?:Once|Passive|Capture)$/;function VF(e){let o;if(Jm.test(e)){o={};let r;for(;r=e.match(Jm);)e=e.slice(0,e.length-r[0].length),o[r[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):wr(e.slice(2)),o]}var fs=0,zF=Promise.resolve(),jF=()=>fs||(zF.then(()=>fs=0),fs=Date.now());function $F(e,o){let t=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=t.attached)return;it(UF(r,t.value),o,5,[r])};return t.value=e,t.attached=jF(),t}function UF(e,o){if(Ae(o)){let t=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{t.call(e),e._stopped=!0},o.map(r=>a=>!a._stopped&&r&&r(a))}else return o}var Xm=/^on[a-z]/,KF=(e,o,t,r,a=!1,l,n,i,d)=>{o==="class"?BF(e,r,a):o==="style"?LF(e,t,r):Ca(o)?sl(o)||WF(e,o,t,r,n):(o[0]==="."?(o=o.slice(1),!0):o[0]==="^"?(o=o.slice(1),!1):GF(e,o,r,a))?_F(e,o,r,l,n,i,d):(o==="true-value"?e._trueValue=r:o==="false-value"&&(e._falseValue=r),NF(e,o,r,a))};function GF(e,o,t,r){return r?!!(o==="innerHTML"||o==="textContent"||o in e&&Xm.test(o)&&Ee(t)):o==="spellcheck"||o==="draggable"||o==="translate"||o==="form"||o==="list"&&e.tagName==="INPUT"||o==="type"&&e.tagName==="TEXTAREA"||Xm.test(o)&&Ro(t)?!1:o in e}function ec(e){let o=St();if(!o)return;let t=o.ut=(a=e(o.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${o.uid}"]`)).forEach(l=>ms(l,a))},r=()=>{let a=e(o.proxy);ps(o.subTree,a),t(a)};hm(r),fo(()=>{let a=new MutationObserver(r);a.observe(o.subTree.el.parentNode,{childList:!0}),ea(()=>a.disconnect())})}function ps(e,o){if(e.shapeFlag&128){let t=e.suspense;e=t.activeBranch,t.pendingBranch&&!t.isHydrating&&t.effects.push(()=>{ps(t.activeBranch,o)})}for(;e.component;)e=e.component.subTree;if(e.shapeFlag&1&&e.el)ms(e.el,o);else if(e.type===Co)e.children.forEach(t=>ps(t,o));else if(e.type===Fl){let{el:t,anchor:r}=e;for(;t&&(ms(t,o),t!==r);)t=t.nextSibling}}function ms(e,o){if(e.nodeType===1){let t=e.style;for(let r in o)t.setProperty(`--${r}`,o[r])}}var Pr="transition",kl="animation",kt=(e,{slots:o})=>R(Gd,rc(e),o);kt.displayName="Transition";var oc={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},qF=kt.props=Oo({},Gd.props,oc),ia=(e,o=[])=>{Ae(e)?e.forEach(t=>t(...o)):e&&e(...o)},tc=e=>e?Ae(e)?e.some(o=>o.length>1):e.length>1:!1;function rc(e){let o={};for(let _ in e)_ in oc||(o[_]=e[_]);if(e.css===!1)return o;let{name:t="v",type:r,duration:a,enterFromClass:l=`${t}-enter-from`,enterActiveClass:n=`${t}-enter-active`,enterToClass:i=`${t}-enter-to`,appearFromClass:d=l,appearActiveClass:s=n,appearToClass:u=i,leaveFromClass:f=`${t}-leave-from`,leaveActiveClass:c=`${t}-leave-active`,leaveToClass:p=`${t}-leave-to`}=e,x=QF(a),T=x&&x[0],C=x&&x[1],{onBeforeEnter:S,onEnter:D,onEnterCancelled:j,onLeave:O,onLeaveCancelled:g,onBeforeAppear:v=S,onAppear:w=D,onAppearCancelled:F=j}=o,B=(_,ae,he)=>{Mr(_,ae?u:i),Mr(_,ae?s:n),he&&he()},y=(_,ae)=>{_._isLeaving=!1,Mr(_,f),Mr(_,p),Mr(_,c),ae&&ae()},W=_=>(ae,he)=>{let Me=_?w:D,de=()=>B(ae,_,he);ia(Me,[ae,de]),ac(()=>{Mr(ae,_?d:l),sr(ae,_?u:i),tc(Me)||lc(ae,r,T,de)})};return Oo(o,{onBeforeEnter(_){ia(S,[_]),sr(_,l),sr(_,n)},onBeforeAppear(_){ia(v,[_]),sr(_,d),sr(_,s)},onEnter:W(!1),onAppear:W(!0),onLeave(_,ae){_._isLeaving=!0;let he=()=>y(_,ae);sr(_,f),sc(),sr(_,c),ac(()=>{!_._isLeaving||(Mr(_,f),sr(_,p),tc(O)||lc(_,r,C,he))}),ia(O,[_,he])},onEnterCancelled(_){B(_,!1),ia(j,[_])},onAppearCancelled(_){B(_,!0),ia(F,[_])},onLeaveCancelled(_){y(_),ia(g,[_])}})}function QF(e){if(e==null)return null;if(ao(e))return[cs(e.enter),cs(e.leave)];{let o=cs(e);return[o,o]}}function cs(e){return ya(e)}function sr(e,o){o.split(/\s+/).forEach(t=>t&&e.classList.add(t)),(e._vtc||(e._vtc=new Set)).add(o)}function Mr(e,o){o.split(/\s+/).forEach(r=>r&&e.classList.remove(r));let{_vtc:t}=e;t&&(t.delete(o),t.size||(e._vtc=void 0))}function ac(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}var ZF=0;function lc(e,o,t,r){let a=e._endId=++ZF,l=()=>{a===e._endId&&r()};if(t)return setTimeout(l,t);let{type:n,timeout:i,propCount:d}=nc(e,o);if(!n)return r();let s=n+"end",u=0,f=()=>{e.removeEventListener(s,c),l()},c=p=>{p.target===e&&++u>=d&&f()};setTimeout(()=>{u<d&&f()},i+1),e.addEventListener(s,c)}function nc(e,o){let t=window.getComputedStyle(e),r=x=>(t[x]||"").split(", "),a=r(`${Pr}Delay`),l=r(`${Pr}Duration`),n=ic(a,l),i=r(`${kl}Delay`),d=r(`${kl}Duration`),s=ic(i,d),u=null,f=0,c=0;o===Pr?n>0&&(u=Pr,f=n,c=l.length):o===kl?s>0&&(u=kl,f=s,c=d.length):(f=Math.max(n,s),u=f>0?n>s?Pr:kl:null,c=u?u===Pr?l.length:d.length:0);let p=u===Pr&&/\b(transform|all)(,|$)/.test(r(`${Pr}Property`).toString());return{type:u,timeout:f,propCount:c,hasTransform:p}}function ic(e,o){for(;e.length<o.length;)e=e.concat(e);return Math.max(...o.map((t,r)=>dc(t)+dc(e[r])))}function dc(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function sc(){return document.body.offsetHeight}var uc=new WeakMap,fc=new WeakMap,YF={name:"TransitionGroup",props:Oo({},qF,{tag:String,moveClass:String}),setup(e,{slots:o}){let t=St(),r=Kd(),a,l;return Yd(()=>{if(!a.length)return;let n=e.moveClass||`${e.name||"v"}-move`;if(!oO(a[0].el,t.vnode.el,n))return;a.forEach(JF),a.forEach(XF);let i=a.filter(eO);sc(),i.forEach(d=>{let s=d.el,u=s.style;sr(s,n),u.transform=u.webkitTransform=u.transitionDuration="";let f=s._moveCb=c=>{c&&c.target!==s||(!c||/transform$/.test(c.propertyName))&&(s.removeEventListener("transitionend",f),s._moveCb=null,Mr(s,n))};s.addEventListener("transitionend",f)})}),()=>{let n=Ie(e),i=rc(n),d=n.tag||Co;a=l,l=o.default?Un(o.default()):[];for(let s=0;s<l.length;s++){let u=l[s];u.key!=null&&Pa(u,Da(u,i,r,t))}if(a)for(let s=0;s<a.length;s++){let u=a[s];Pa(u,Da(u,i,r,t)),uc.set(u,u.el.getBoundingClientRect())}return mo(d,null,l)}}},pc=YF;function JF(e){let o=e.el;o._moveCb&&o._moveCb(),o._enterCb&&o._enterCb()}function XF(e){fc.set(e,e.el.getBoundingClientRect())}function eO(e){let o=uc.get(e),t=fc.get(e),r=o.left-t.left,a=o.top-t.top;if(r||a){let l=e.el.style;return l.transform=l.webkitTransform=`translate(${r}px,${a}px)`,l.transitionDuration="0s",e}}function oO(e,o,t){let r=e.cloneNode();e._vtc&&e._vtc.forEach(n=>{n.split(/\s+/).forEach(i=>i&&r.classList.remove(i))}),t.split(/\s+/).forEach(n=>n&&r.classList.add(n)),r.style.display="none";let a=o.nodeType===1?o:o.parentNode;a.appendChild(r);let{hasTransform:l}=nc(r);return a.removeChild(r),l}var tO=Oo({patchProp:KF},MF),mc;function rO(){return mc||(mc=Em(tO))}var cc=(...e)=>{let o=rO().createApp(...e),{mount:t}=o;return o.mount=r=>{let a=aO(r);if(!a)return;let l=o._component;!Ee(l)&&!l.render&&!l.template&&(l.template=a.innerHTML),a.innerHTML="";let n=t(a,!1,a instanceof SVGElement);return a instanceof Element&&(a.removeAttribute("v-cloak"),a.setAttribute("data-v-app","")),n},o};function aO(e){return Ro(e)?document.querySelector(e):e}var Od=Fa(require("obsidian"));var ti=[],xc=new WeakMap;function lO(){ti.forEach(e=>e(...xc.get(e))),ti=[]}function Al(e,...o){xc.set(e,o),!ti.includes(e)&&ti.push(e)===1&&requestAnimationFrame(lO)}function ri(e,o){let{target:t}=e;for(;t;){if(t.dataset&&t.dataset[o]!==void 0)return!0;t=t.parentElement}return!1}function ai(e){return typeof e=="string"?e.endsWith("px")?Number(e.slice(0,e.length-2)):Number(e):e}function Br(e){if(e!=null)return typeof e=="number"?`${e}px`:e.endsWith("px")?e:`${e}px`}function _a(e,o){let t=e.trim().split(/\s+/g),r={top:t[0]};switch(t.length){case 1:r.right=t[0],r.bottom=t[0],r.left=t[0];break;case 2:r.right=t[1],r.left=t[1],r.bottom=t[0];break;case 3:r.right=t[1],r.bottom=t[2],r.left=t[1];break;case 4:r.right=t[1],r.bottom=t[2],r.left=t[3];break;default:throw new Error("[seemly/getMargin]:"+e+" is not a valid value.")}return o===void 0?r:r[o]}var xs={black:"#000",silver:"#C0C0C0",gray:"#808080",white:"#FFF",maroon:"#800000",red:"#F00",purple:"#800080",fuchsia:"#F0F",green:"#008000",lime:"#0F0",olive:"#808000",yellow:"#FF0",navy:"#000080",blue:"#00F",teal:"#008080",aqua:"#0FF",transparent:"#0000"};var jt="^\\s*",$t="\\s*$",Lr="\\s*((\\.\\d+)|(\\d+(\\.\\d*)?))%\\s*",dt="\\s*((\\.\\d+)|(\\d+(\\.\\d*)?))\\s*",da="([0-9A-Fa-f])",sa="([0-9A-Fa-f]{2})",q0=new RegExp(`${jt}hsl\\s*\\(${dt},${Lr},${Lr}\\)${$t}`),Q0=new RegExp(`${jt}hsv\\s*\\(${dt},${Lr},${Lr}\\)${$t}`),Z0=new RegExp(`${jt}hsla\\s*\\(${dt},${Lr},${Lr},${dt}\\)${$t}`),Y0=new RegExp(`${jt}hsva\\s*\\(${dt},${Lr},${Lr},${dt}\\)${$t}`),nO=new RegExp(`${jt}rgb\\s*\\(${dt},${dt},${dt}\\)${$t}`),iO=new RegExp(`${jt}rgba\\s*\\(${dt},${dt},${dt},${dt}\\)${$t}`),dO=new RegExp(`${jt}#${da}${da}${da}${$t}`),sO=new RegExp(`${jt}#${sa}${sa}${sa}${$t}`),uO=new RegExp(`${jt}#${da}${da}${da}${da}${$t}`),fO=new RegExp(`${jt}#${sa}${sa}${sa}${sa}${$t}`);function tt(e){return parseInt(e,16)}function gt(e){try{let o;if(o=sO.exec(e))return[tt(o[1]),tt(o[2]),tt(o[3]),1];if(o=nO.exec(e))return[Ho(o[1]),Ho(o[5]),Ho(o[9]),1];if(o=iO.exec(e))return[Ho(o[1]),Ho(o[5]),Ho(o[9]),Ia(o[13])];if(o=dO.exec(e))return[tt(o[1]+o[1]),tt(o[2]+o[2]),tt(o[3]+o[3]),1];if(o=fO.exec(e))return[tt(o[1]),tt(o[2]),tt(o[3]),Ia(tt(o[4])/255)];if(o=uO.exec(e))return[tt(o[1]+o[1]),tt(o[2]+o[2]),tt(o[3]+o[3]),Ia(tt(o[4]+o[4])/255)];if(e in xs)return gt(xs[e]);throw new Error(`[seemly/rgba]: Invalid color value ${e}.`)}catch(o){throw o}}function pO(e){return e>1?1:e<0?0:e}function hs(e,o,t,r){return`rgba(${Ho(e)}, ${Ho(o)}, ${Ho(t)}, ${pO(r)})`}function Ss(e,o,t,r,a){return Ho((e*o*(1-r)+t*r)/a)}function me(e,o){Array.isArray(e)||(e=gt(e)),Array.isArray(o)||(o=gt(o));let t=e[3],r=o[3],a=Ia(t+r-t*r);return hs(Ss(e[0],t,o[0],r,a),Ss(e[1],t,o[1],r,a),Ss(e[2],t,o[2],r,a),a)}function X(e,o){let[t,r,a,l=1]=Array.isArray(e)?e:gt(e);return o.alpha?hs(t,r,a,o.alpha):hs(t,r,a,l)}function ur(e,o){let[t,r,a,l=1]=Array.isArray(e)?e:gt(e),{lightness:n=1,alpha:i=1}=o;return hc([t*n,r*n,a*n,l*i])}function Ia(e){let o=Math.round(Number(e)*100)/100;return o>1?1:o<0?0:o}function Ho(e){let o=Math.round(Number(e));return o>255?255:o<0?0:o}function hc(e){let[o,t,r]=e;return 3 in e?`rgba(${Ho(o)}, ${Ho(t)}, ${Ho(r)}, ${Ia(e[3])})`:`rgba(${Ho(o)}, ${Ho(t)}, ${Ho(r)}, 1)`}function gs(e=8){return Math.random().toString(16).slice(2,2+e)}function ws(e,o){let t=[];for(let r=0;r<e;++r)t.push(o);return t}function Re(e,...o){if(Array.isArray(e))e.forEach(t=>Re(t,...o));else return e(...o)}var Ha=(e,...o)=>typeof e=="function"?e(...o):typeof e=="string"?Ea(e):typeof e=="number"?Ea(String(e)):null;var BM=new Set;function li(e,o){console.error(`[naive/${e}]: ${o}`)}function ni(e,o){throw new Error(`[naive/${e}]: ${o}`)}function Wa(e){return typeof e=="string"?`s-${e}`:`n-${e}`}function lo(e){return e}function Dl(e){return e.some(o=>Ba(o)?!(o.type===$o||o.type===Co&&!Dl(o.children)):!0)?e:null}function Ut(e,o){return e&&Dl(e())||o()}function ii(e,o,t){return e&&Dl(e(o))||t(o)}function Kt(e,o){let t=e&&Dl(e());return o(t||null)}function di(e){return!(e&&Dl(e()))}function Pl(e){return e.replace(/#|\(|\)|,|\s/g,"_")}function cO(e){let o=0;for(let t=0;t<e.length;++t)e[t]==="&"&&++o;return o}var Sc=/\s*,(?![^(]*\))\s*/g,xO=/\s+/g;function hO(e,o){let t=[];return o.split(Sc).forEach(r=>{let a=cO(r);if(a){if(a===1){e.forEach(n=>{t.push(r.replace("&",n))});return}}else{e.forEach(n=>{t.push((n&&n+" ")+r)});return}let l=[r];for(;a--;){let n=[];l.forEach(i=>{e.forEach(d=>{n.push(i.replace("&",d))})}),l=n}l.forEach(n=>t.push(n))}),t}function SO(e,o){let t=[];return o.split(Sc).forEach(r=>{e.forEach(a=>{t.push((a&&a+" ")+r)})}),t}function gc(e){let o=[""];return e.forEach(t=>{t=t&&t.trim(),!!t&&(t.includes("&")?o=hO(o,t):o=SO(o,t))}),o.join(", ").replace(xO," ")}function Ts(e){if(!e)return;let o=e.parentElement;o&&o.removeChild(e)}function ua(e){return document.querySelector(`style[cssr-id="${e}"]`)}function wc(e){let o=document.createElement("style");return o.setAttribute("cssr-id",e),o}function Ml(e){return e?/^\s*@(s|m)/.test(e):!1}var gO=/[A-Z]/g;function Tc(e){return e.replace(gO,o=>"-"+o.toLowerCase())}function wO(e,o=" "){return typeof e=="object"&&e!==null?` { -`+Object.entries(e).map(t=>o+` ${Tc(t[0])}: ${t[1]};`).join(` +var XT=Object.create;var yn=Object.defineProperty;var eR=Object.getOwnPropertyDescriptor;var oR=Object.getOwnPropertyNames;var tR=Object.getPrototypeOf,rR=Object.prototype.hasOwnProperty;var Hp=e=>yn(e,"__esModule",{value:!0});var Wt=(e,o)=>()=>(o||e((o={exports:{}}).exports,o),o.exports),aR=(e,o)=>{Hp(e);for(var t in o)yn(e,t,{get:o[t],enumerable:!0})},lR=(e,o,t)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of oR(o))!rR.call(e,r)&&r!=="default"&&yn(e,r,{get:()=>o[r],enumerable:!(t=eR(o,r))||t.enumerable});return e},Jr=e=>lR(Hp(yn(e!=null?XT(tR(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var je=(e,o,t)=>new Promise((r,a)=>{var l=d=>{try{i(t.next(d))}catch(s){a(s)}},n=d=>{try{i(t.throw(d))}catch(s){a(s)}},i=d=>d.done?r(d.value):Promise.resolve(d.value).then(l,n);i((t=t.apply(e,o)).next())});var TS=Wt((Kl,wS)=>{"use strict";Object.defineProperty(Kl,"__esModule",{value:!0});Kl.default=void 0;var dk={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},sk=function(e,o,t){var r,a=dk[e];return typeof a=="string"?r=a:o===1?r=a.one:r=a.other.replace("{{count}}",o.toString()),t!=null&&t.addSuffix?t.comparison&&t.comparison>0?"in "+r:r+" ago":r},uk=sk;Kl.default=uk;wS.exports=Kl.default});var OS=Wt((Qi,RS)=>{"use strict";Object.defineProperty(Qi,"__esModule",{value:!0});Qi.default=fk;function fk(e){return function(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=o.width?String(o.width):e.defaultWidth,r=e.formats[t]||e.formats[e.defaultWidth];return r}}RS.exports=Qi.default});var CS=Wt((Gl,FS)=>{"use strict";Object.defineProperty(Gl,"__esModule",{value:!0});Gl.default=void 0;var qs=pk(OS());function pk(e){return e&&e.__esModule?e:{default:e}}var mk={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},ck={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},hk={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},xk={date:(0,qs.default)({formats:mk,defaultWidth:"full"}),time:(0,qs.default)({formats:ck,defaultWidth:"full"}),dateTime:(0,qs.default)({formats:hk,defaultWidth:"full"})},Sk=xk;Gl.default=Sk;FS.exports=Gl.default});var yS=Wt((ql,bS)=>{"use strict";Object.defineProperty(ql,"__esModule",{value:!0});ql.default=void 0;var gk={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},wk=function(e,o,t,r){return gk[e]},Tk=wk;ql.default=Tk;bS.exports=ql.default});var kS=Wt((Zi,vS)=>{"use strict";Object.defineProperty(Zi,"__esModule",{value:!0});Zi.default=Rk;function Rk(e){return function(o,t){var r=t||{},a=r.context?String(r.context):"standalone",l;if(a==="formatting"&&e.formattingValues){var n=e.defaultFormattingWidth||e.defaultWidth,i=r.width?String(r.width):n;l=e.formattingValues[i]||e.formattingValues[n]}else{var d=e.defaultWidth,s=r.width?String(r.width):e.defaultWidth;l=e.values[s]||e.values[d]}var u=e.argumentCallback?e.argumentCallback(o):o;return l[u]}}vS.exports=Zi.default});var DS=Wt((Zl,AS)=>{"use strict";Object.defineProperty(Zl,"__esModule",{value:!0});Zl.default=void 0;var Ql=Ok(kS());function Ok(e){return e&&e.__esModule?e:{default:e}}var Fk={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},Ck={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},bk={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},yk={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},vk={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},kk={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},Ak=function(e,o){var t=Number(e),r=t%100;if(r>20||r<10)switch(r%10){case 1:return t+"st";case 2:return t+"nd";case 3:return t+"rd"}return t+"th"},Dk={ordinalNumber:Ak,era:(0,Ql.default)({values:Fk,defaultWidth:"wide"}),quarter:(0,Ql.default)({values:Ck,defaultWidth:"wide",argumentCallback:function(e){return e-1}}),month:(0,Ql.default)({values:bk,defaultWidth:"wide"}),day:(0,Ql.default)({values:yk,defaultWidth:"wide"}),dayPeriod:(0,Ql.default)({values:vk,defaultWidth:"wide",formattingValues:kk,defaultFormattingWidth:"wide"})},Pk=Dk;Zl.default=Pk;AS.exports=Zl.default});var MS=Wt((Yi,PS)=>{"use strict";Object.defineProperty(Yi,"__esModule",{value:!0});Yi.default=Mk;function Mk(e){return function(o){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.width,a=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],l=o.match(a);if(!l)return null;var n=l[0],i=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],d=Array.isArray(i)?Ek(i,function(f){return f.test(n)}):Bk(i,function(f){return f.test(n)}),s;s=e.valueCallback?e.valueCallback(d):d,s=t.valueCallback?t.valueCallback(s):s;var u=o.slice(n.length);return{value:s,rest:u}}}function Bk(e,o){for(var t in e)if(e.hasOwnProperty(t)&&o(e[t]))return t}function Ek(e,o){for(var t=0;t<e.length;t++)if(o(e[t]))return t}PS.exports=Yi.default});var ES=Wt((Ji,BS)=>{"use strict";Object.defineProperty(Ji,"__esModule",{value:!0});Ji.default=Lk;function Lk(e){return function(o){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=o.match(e.matchPattern);if(!r)return null;var a=r[0],l=o.match(e.parsePattern);if(!l)return null;var n=e.valueCallback?e.valueCallback(l[0]):l[0];n=t.valueCallback?t.valueCallback(n):n;var i=o.slice(a.length);return{value:n,rest:i}}}BS.exports=Ji.default});var _S=Wt((Jl,NS)=>{"use strict";Object.defineProperty(Jl,"__esModule",{value:!0});Jl.default=void 0;var Yl=LS(MS()),Nk=LS(ES());function LS(e){return e&&e.__esModule?e:{default:e}}var _k=/^(\d+)(th|st|nd|rd)?/i,Ik=/\d+/i,Hk={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},Vk={any:[/^b/i,/^(a|c)/i]},Wk={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},zk={any:[/1/i,/2/i,/3/i,/4/i]},jk={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},$k={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},Uk={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},Kk={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},Gk={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},qk={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},Qk={ordinalNumber:(0,Nk.default)({matchPattern:_k,parsePattern:Ik,valueCallback:function(e){return parseInt(e,10)}}),era:(0,Yl.default)({matchPatterns:Hk,defaultMatchWidth:"wide",parsePatterns:Vk,defaultParseWidth:"any"}),quarter:(0,Yl.default)({matchPatterns:Wk,defaultMatchWidth:"wide",parsePatterns:zk,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:(0,Yl.default)({matchPatterns:jk,defaultMatchWidth:"wide",parsePatterns:$k,defaultParseWidth:"any"}),day:(0,Yl.default)({matchPatterns:Uk,defaultMatchWidth:"wide",parsePatterns:Kk,defaultParseWidth:"any"}),dayPeriod:(0,Yl.default)({matchPatterns:Gk,defaultMatchWidth:"any",parsePatterns:qk,defaultParseWidth:"any"})},Zk=Qk;Jl.default=Zk;NS.exports=Jl.default});var HS=Wt((en,IS)=>{"use strict";Object.defineProperty(en,"__esModule",{value:!0});en.default=void 0;var Yk=Xl(TS()),Jk=Xl(CS()),Xk=Xl(yS()),eA=Xl(DS()),oA=Xl(_S());function Xl(e){return e&&e.__esModule?e:{default:e}}var tA={code:"en-US",formatDistance:Yk.default,formatLong:Jk.default,formatRelative:Xk.default,localize:eA.default,match:oA.default,options:{weekStartsOn:0,firstWeekContainsDate:1}},rA=tA;en.default=rA;IS.exports=en.default});aR(exports,{default:()=>rM});var dr=Jr(require("obsidian"));var xT=Jr(require("obsidian"));function va(e,o){let t=Object.create(null),r=e.split(",");for(let a=0;a<r.length;a++)t[r[a]]=!0;return o?a=>!!t[a.toLowerCase()]:a=>!!t[a]}var lM={[1]:"TEXT",[2]:"CLASS",[4]:"STYLE",[8]:"PROPS",[16]:"FULL_PROPS",[32]:"HYDRATE_EVENTS",[64]:"STABLE_FRAGMENT",[128]:"KEYED_FRAGMENT",[256]:"UNKEYED_FRAGMENT",[512]:"NEED_PATCH",[1024]:"DYNAMIC_SLOTS",[2048]:"DEV_ROOT_FRAGMENT",[-1]:"HOISTED",[-2]:"BAIL"},nM={[1]:"STABLE",[2]:"DYNAMIC",[3]:"FORWARDED"};function Cr(e){if(Ne(e)){let o={};for(let t=0;t<e.length;t++){let r=e[t],a=vo(r)?sR(r):Cr(r);if(a)for(let l in a)o[l]=a[l]}return o}else{if(vo(e))return e;if(so(e))return e}}var nR=/;(?![^(]*\))/g,iR=/:([^]+)/,dR=/\/\*.*?\*\//gs;function sR(e){let o={};return e.replace(dR,"").split(nR).forEach(t=>{if(t){let r=t.split(iR);r.length>1&&(o[r[0].trim()]=r[1].trim())}}),o}function Xr(e){let o="";if(vo(e))o=e;else if(Ne(e))for(let t=0;t<e.length;t++){let r=Xr(e[t]);r&&(o+=r+" ")}else if(so(e))for(let t in e)e[t]&&(o+=t+" ");return o.trim()}var Vp="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Wp=va(Vp),iM=va(Vp+",async,autofocus,autoplay,controls,default,defer,disabled,hidden,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected");function vd(e){return!!e||e===""}var kd=e=>vo(e)?e:e==null?"":Ne(e)||so(e)&&(e.toString===$p||!He(e.toString))?JSON.stringify(e,zp,2):String(e),zp=(e,o)=>o&&o.__v_isRef?zp(e,o.value):br(o)?{[`Map(${o.size})`]:[...o.entries()].reduce((t,[r,a])=>(t[`${r} =>`]=a,t),{})}:kn(o)?{[`Set(${o.size})`]:[...o.values()]}:so(o)&&!Ne(o)&&!Pd(o)?String(o):o,io={},ea=[],ct=()=>{},jp=()=>!1,uR=/^on[^a-z]/,ka=e=>uR.test(e),ul=e=>e.startsWith("onUpdate:"),Do=Object.assign,vn=(e,o)=>{let t=e.indexOf(o);t>-1&&e.splice(t,1)},fR=Object.prototype.hasOwnProperty,Qe=(e,o)=>fR.call(e,o),Ne=Array.isArray,br=e=>Dn(e)==="[object Map]",kn=e=>Dn(e)==="[object Set]";var He=e=>typeof e=="function",vo=e=>typeof e=="string",An=e=>typeof e=="symbol",so=e=>e!==null&&typeof e=="object",Ad=e=>so(e)&&He(e.then)&&He(e.catch),$p=Object.prototype.toString,Dn=e=>$p.call(e),Dd=e=>Dn(e).slice(8,-1),Pd=e=>Dn(e)==="[object Object]",Pn=e=>vo(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,fl=va(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted");var Mn=e=>{let o=Object.create(null);return t=>o[t]||(o[t]=e(t))},pR=/-(\w)/g,zt=Mn(e=>e.replace(pR,(o,t)=>t?t.toUpperCase():"")),mR=/\B([A-Z])/g,yr=Mn(e=>e.replace(mR,"-$1").toLowerCase()),pl=Mn(e=>e.charAt(0).toUpperCase()+e.slice(1)),ml=Mn(e=>e?`on${pl(e)}`:""),oa=(e,o)=>!Object.is(e,o),cl=(e,o)=>{for(let t=0;t<e.length;t++)e[t](o)},Aa=(e,o,t)=>{Object.defineProperty(e,o,{configurable:!0,enumerable:!1,value:t})},Da=e=>{let o=parseFloat(e);return isNaN(o)?e:o},Up,Kp=()=>Up||(Up=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});var jt,Bn=class{constructor(o=!1){this.detached=o,this.active=!0,this.effects=[],this.cleanups=[],this.parent=jt,!o&&jt&&(this.index=(jt.scopes||(jt.scopes=[])).push(this)-1)}run(o){if(this.active){let t=jt;try{return jt=this,o()}finally{jt=t}}}on(){jt=this}off(){jt=this.parent}stop(o){if(this.active){let t,r;for(t=0,r=this.effects.length;t<r;t++)this.effects[t].stop();for(t=0,r=this.cleanups.length;t<r;t++)this.cleanups[t]();if(this.scopes)for(t=0,r=this.scopes.length;t<r;t++)this.scopes[t].stop(!0);if(!this.detached&&this.parent&&!o){let a=this.parent.scopes.pop();a&&a!==this&&(this.parent.scopes[this.index]=a,a.index=this.index)}this.parent=void 0,this.active=!1}}};function cR(e,o=jt){o&&o.active&&o.effects.push(e)}var Md=e=>{let o=new Set(e);return o.w=0,o.n=0,o},Gp=e=>(e.w&vr)>0,qp=e=>(e.n&vr)>0,hR=({deps:e})=>{if(e.length)for(let o=0;o<e.length;o++)e[o].w|=vr},xR=e=>{let{deps:o}=e;if(o.length){let t=0;for(let r=0;r<o.length;r++){let a=o[r];Gp(a)&&!qp(a)?a.delete(e):o[t++]=a,a.w&=~vr,a.n&=~vr}o.length=t}},Bd=new WeakMap,hl=0,vr=1,Ed=30,Mt,ta=Symbol(""),Ld=Symbol(""),Pa=class{constructor(o,t=null,r){this.fn=o,this.scheduler=t,this.active=!0,this.deps=[],this.parent=void 0,cR(this,r)}run(){if(!this.active)return this.fn();let o=Mt,t=kr;for(;o;){if(o===this)return;o=o.parent}try{return this.parent=Mt,Mt=this,kr=!0,vr=1<<++hl,hl<=Ed?hR(this):Qp(this),this.fn()}finally{hl<=Ed&&xR(this),vr=1<<--hl,Mt=this.parent,kr=t,this.parent=void 0,this.deferStop&&this.stop()}}stop(){Mt===this?this.deferStop=!0:this.active&&(Qp(this),this.onStop&&this.onStop(),this.active=!1)}};function Qp(e){let{deps:o}=e;if(o.length){for(let t=0;t<o.length;t++)o[t].delete(e);o.length=0}}var kr=!0,Zp=[];function Ar(){Zp.push(kr),kr=!1}function Dr(){let e=Zp.pop();kr=e===void 0?!0:e}function dt(e,o,t){if(kr&&Mt){let r=Bd.get(e);r||Bd.set(e,r=new Map);let a=r.get(t);a||r.set(t,a=Md()),Yp(a,void 0)}}function Yp(e,o){let t=!1;hl<=Ed?qp(e)||(e.n|=vr,t=!Gp(e)):t=!e.has(Mt),t&&(e.add(Mt),Mt.deps.push(e))}function $t(e,o,t,r,a,l){let n=Bd.get(e);if(!n)return;let i=[];if(o==="clear")i=[...n.values()];else if(t==="length"&&Ne(e)){let s=Da(r);n.forEach((u,f)=>{(f==="length"||f>=s)&&i.push(u)})}else switch(t!==void 0&&i.push(n.get(t)),o){case"add":Ne(e)?Pn(t)&&i.push(n.get("length")):(i.push(n.get(ta)),br(e)&&i.push(n.get(Ld)));break;case"delete":Ne(e)||(i.push(n.get(ta)),br(e)&&i.push(n.get(Ld)));break;case"set":br(e)&&i.push(n.get(ta));break}let d=void 0;if(i.length===1)i[0]&&Nd(i[0]);else{let s=[];for(let u of i)u&&s.push(...u);Nd(Md(s))}}function Nd(e,o){let t=Ne(e)?e:[...e];for(let r of t)r.computed&&Jp(r,o);for(let r of t)r.computed||Jp(r,o)}function Jp(e,o){(e!==Mt||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}var SR=va("__proto__,__v_isRef,__isVue"),Xp=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(An)),gR=_d(),wR=_d(!1,!0),TR=_d(!0);var em=RR();function RR(){let e={};return["includes","indexOf","lastIndexOf"].forEach(o=>{e[o]=function(...t){let r=Ue(this);for(let l=0,n=this.length;l<n;l++)dt(r,"get",l+"");let a=r[o](...t);return a===-1||a===!1?r[o](...t.map(Ue)):a}}),["push","pop","shift","unshift","splice"].forEach(o=>{e[o]=function(...t){Ar();let r=Ue(this)[o].apply(this,t);return Dr(),r}}),e}function _d(e=!1,o=!1){return function(r,a,l){if(a==="__v_isReactive")return!e;if(a==="__v_isReadonly")return e;if(a==="__v_isShallow")return o;if(a==="__v_raw"&&l===(e?o?_R:sm:o?dm:im).get(r))return r;let n=Ne(r);if(!e&&n&&Qe(em,a))return Reflect.get(em,a,l);let i=Reflect.get(r,a,l);return(An(a)?Xp.has(a):SR(a))||(e||dt(r,"get",a),o)?i:Eo(i)?n&&Pn(a)?i:i.value:so(i)?e?Mr(i):Ut(i):i}}var OR=om(),FR=om(!0);function om(e=!1){return function(t,r,a,l){let n=t[r];if(Er(n)&&Eo(n)&&!Eo(a))return!1;if(!e&&(!Ma(a)&&!Er(a)&&(n=Ue(n),a=Ue(a)),!Ne(t)&&Eo(n)&&!Eo(a)))return n.value=a,!0;let i=Ne(t)&&Pn(r)?Number(r)<t.length:Qe(t,r),d=Reflect.set(t,r,a,l);return t===Ue(l)&&(i?oa(a,n)&&$t(t,"set",r,a,n):$t(t,"add",r,a)),d}}function CR(e,o){let t=Qe(e,o),r=e[o],a=Reflect.deleteProperty(e,o);return a&&t&&$t(e,"delete",o,void 0,r),a}function bR(e,o){let t=Reflect.has(e,o);return(!An(o)||!Xp.has(o))&&dt(e,"has",o),t}function yR(e){return dt(e,"iterate",Ne(e)?"length":ta),Reflect.ownKeys(e)}var tm={get:gR,set:OR,deleteProperty:CR,has:bR,ownKeys:yR},vR={get:TR,set(e,o){return!0},deleteProperty(e,o){return!0}},kR=Do({},tm,{get:wR,set:FR});var Id=e=>e,En=e=>Reflect.getPrototypeOf(e);function Ln(e,o,t=!1,r=!1){e=e.__v_raw;let a=Ue(e),l=Ue(o);t||(o!==l&&dt(a,"get",o),dt(a,"get",l));let{has:n}=En(a),i=r?Id:t?zd:xl;if(n.call(a,o))return i(e.get(o));if(n.call(a,l))return i(e.get(l));e!==a&&e.get(o)}function Nn(e,o=!1){let t=this.__v_raw,r=Ue(t),a=Ue(e);return o||(e!==a&&dt(r,"has",e),dt(r,"has",a)),e===a?t.has(e):t.has(e)||t.has(a)}function _n(e,o=!1){return e=e.__v_raw,!o&&dt(Ue(e),"iterate",ta),Reflect.get(e,"size",e)}function rm(e){e=Ue(e);let o=Ue(this);return En(o).has.call(o,e)||(o.add(e),$t(o,"add",e,e)),this}function am(e,o){o=Ue(o);let t=Ue(this),{has:r,get:a}=En(t),l=r.call(t,e);l||(e=Ue(e),l=r.call(t,e));let n=a.call(t,e);return t.set(e,o),l?oa(o,n)&&$t(t,"set",e,o,n):$t(t,"add",e,o),this}function lm(e){let o=Ue(this),{has:t,get:r}=En(o),a=t.call(o,e);a||(e=Ue(e),a=t.call(o,e));let l=r?r.call(o,e):void 0,n=o.delete(e);return a&&$t(o,"delete",e,void 0,l),n}function nm(){let e=Ue(this),o=e.size!==0,t=void 0,r=e.clear();return o&&$t(e,"clear",void 0,void 0,t),r}function In(e,o){return function(r,a){let l=this,n=l.__v_raw,i=Ue(n),d=o?Id:e?zd:xl;return!e&&dt(i,"iterate",ta),n.forEach((s,u)=>r.call(a,d(s),d(u),l))}}function Hn(e,o,t){return function(...r){let a=this.__v_raw,l=Ue(a),n=br(l),i=e==="entries"||e===Symbol.iterator&&n,d=e==="keys"&&n,s=a[e](...r),u=t?Id:o?zd:xl;return!o&&dt(l,"iterate",d?Ld:ta),{next(){let{value:f,done:m}=s.next();return m?{value:f,done:m}:{value:i?[u(f[0]),u(f[1])]:u(f),done:m}},[Symbol.iterator](){return this}}}}function Pr(e){return function(...o){return e==="delete"?!1:this}}function AR(){let e={get(l){return Ln(this,l)},get size(){return _n(this)},has:Nn,add:rm,set:am,delete:lm,clear:nm,forEach:In(!1,!1)},o={get(l){return Ln(this,l,!1,!0)},get size(){return _n(this)},has:Nn,add:rm,set:am,delete:lm,clear:nm,forEach:In(!1,!0)},t={get(l){return Ln(this,l,!0)},get size(){return _n(this,!0)},has(l){return Nn.call(this,l,!0)},add:Pr("add"),set:Pr("set"),delete:Pr("delete"),clear:Pr("clear"),forEach:In(!0,!1)},r={get(l){return Ln(this,l,!0,!0)},get size(){return _n(this,!0)},has(l){return Nn.call(this,l,!0)},add:Pr("add"),set:Pr("set"),delete:Pr("delete"),clear:Pr("clear"),forEach:In(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(l=>{e[l]=Hn(l,!1,!1),t[l]=Hn(l,!0,!1),o[l]=Hn(l,!1,!0),r[l]=Hn(l,!0,!0)}),[e,t,o,r]}var[DR,PR,MR,BR]=AR();function Hd(e,o){let t=o?e?BR:MR:e?PR:DR;return(r,a,l)=>a==="__v_isReactive"?!e:a==="__v_isReadonly"?e:a==="__v_raw"?r:Reflect.get(Qe(t,a)&&a in r?t:r,a,l)}var ER={get:Hd(!1,!1)},LR={get:Hd(!1,!0)},NR={get:Hd(!0,!1)};var im=new WeakMap,dm=new WeakMap,sm=new WeakMap,_R=new WeakMap;function IR(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function HR(e){return e.__v_skip||!Object.isExtensible(e)?0:IR(Dd(e))}function Ut(e){return Er(e)?e:Wd(e,!1,tm,ER,im)}function Vd(e){return Wd(e,!1,kR,LR,dm)}function Mr(e){return Wd(e,!0,vR,NR,sm)}function Wd(e,o,t,r,a){if(!so(e)||e.__v_raw&&!(o&&e.__v_isReactive))return e;let l=a.get(e);if(l)return l;let n=HR(e);if(n===0)return e;let i=new Proxy(e,n===2?r:t);return a.set(e,i),i}function Br(e){return Er(e)?Br(e.__v_raw):!!(e&&e.__v_isReactive)}function Er(e){return!!(e&&e.__v_isReadonly)}function Ma(e){return!!(e&&e.__v_isShallow)}function Vn(e){return Br(e)||Er(e)}function Ue(e){let o=e&&e.__v_raw;return o?Ue(o):e}function ra(e){return Aa(e,"__v_skip",!0),e}var xl=e=>so(e)?Ut(e):e,zd=e=>so(e)?Mr(e):e;function um(e){kr&&Mt&&(e=Ue(e),Yp(e.dep||(e.dep=Md())))}function fm(e,o){e=Ue(e),e.dep&&Nd(e.dep)}function Eo(e){return!!(e&&e.__v_isRef===!0)}function Q(e){return VR(e,!1)}function VR(e,o){return Eo(e)?e:new pm(e,o)}var pm=class{constructor(o,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?o:Ue(o),this._value=t?o:xl(o)}get value(){return um(this),this._value}set value(o){let t=this.__v_isShallow||Ma(o)||Er(o);o=t?o:Ue(o),oa(o,this._rawValue)&&(this._rawValue=o,this._value=t?o:xl(o),fm(this,o))}};function fr(e){return Eo(e)?e.value:e}var WR={get:(e,o,t)=>fr(Reflect.get(e,o,t)),set:(e,o,t,r)=>{let a=e[o];return Eo(a)&&!Eo(t)?(a.value=t,!0):Reflect.set(e,o,t,r)}};function Wn(e){return Br(e)?e:new Proxy(e,WR)}var mm=class{constructor(o,t,r){this._object=o,this._key=t,this._defaultValue=r,this.__v_isRef=!0}get value(){let o=this._object[this._key];return o===void 0?this._defaultValue:o}set value(o){this._object[this._key]=o}};function _e(e,o,t){let r=e[o];return Eo(r)?r:new mm(e,o,t)}var cm,hm=class{constructor(o,t,r,a){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this[cm]=!1,this._dirty=!0,this.effect=new Pa(o,()=>{this._dirty||(this._dirty=!0,fm(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!a,this.__v_isReadonly=r}get value(){let o=Ue(this);return um(o),(o._dirty||!o._cacheable)&&(o._dirty=!1,o._value=o.effect.run()),o._value}set value(o){this._setter(o)}};cm="__v_isReadonly";function xm(e,o,t=!1){let r,a,l=He(e);return l?(r=e,a=ct):(r=e.get,a=e.set),new hm(r,a,l||!a,t)}var zR;zR="__v_isReadonly";var Sl=[];function Sm(e,...o){}function jR(){let e=Sl[Sl.length-1];if(!e)return[];let o=[];for(;e;){let t=o[0];t&&t.vnode===e?t.recurseCount++:o.push({vnode:e,recurseCount:0});let r=e.component&&e.component.parent;e=r&&r.vnode}return o}function $R(e){let o=[];return e.forEach((t,r)=>{o.push(...r===0?[]:[` +`],...UR(t))}),o}function UR({vnode:e,recurseCount:o}){let t=o>0?`... (${o} recursive calls)`:"",r=e.component?e.component.parent==null:!1,a=` at <${ac(e.component,e.type,r)}`,l=">"+t;return e.props?[a,...KR(e.props),l]:[a+l]}function KR(e){let o=[],t=Object.keys(e);return t.slice(0,3).forEach(r=>{o.push(...gm(r,e[r]))}),t.length>3&&o.push(" ..."),o}function gm(e,o,t){return vo(o)?(o=JSON.stringify(o),t?o:[`${e}=${o}`]):typeof o=="number"||typeof o=="boolean"||o==null?t?o:[`${e}=${o}`]:Eo(o)?(o=gm(e,Ue(o.value),!0),t?o:[`${e}=Ref<`,o,">"]):He(o)?[`${e}=fn${o.name?`<${o.name}>`:""}`]:(o=Ue(o),t?o:[`${e}=`,o])}var kM={sp:"serverPrefetch hook",bc:"beforeCreate hook",c:"created hook",bm:"beforeMount hook",m:"mounted hook",bu:"beforeUpdate hook",u:"updated",bum:"beforeUnmount hook",um:"unmounted hook",a:"activated hook",da:"deactivated hook",ec:"errorCaptured hook",rtc:"renderTracked hook",rtg:"renderTriggered hook",[0]:"setup function",[1]:"render function",[2]:"watcher getter",[3]:"watcher callback",[4]:"watcher cleanup function",[5]:"native event handler",[6]:"component event handler",[7]:"vnode hook",[8]:"directive hook",[9]:"transition hook",[10]:"app errorHandler",[11]:"app warnHandler",[12]:"ref function",[13]:"async component loader",[14]:"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core"};function pr(e,o,t,r){let a;try{a=r?e(...r):e()}catch(l){zn(l,o,t)}return a}function ht(e,o,t,r){if(He(e)){let l=pr(e,o,t,r);return l&&Ad(l)&&l.catch(n=>{zn(n,o,t)}),l}let a=[];for(let l=0;l<e.length;l++)a.push(ht(e[l],o,t,r));return a}function zn(e,o,t,r=!0){let a=o?o.vnode:null;if(o){let l=o.parent,n=o.proxy,i=t;for(;l;){let s=l.ec;if(s){for(let u=0;u<s.length;u++)if(s[u](e,n,i)===!1)return}l=l.parent}let d=o.appContext.config.errorHandler;if(d){pr(d,null,10,[e,n,i]);return}}GR(e,t,a,r)}function GR(e,o,t,r=!0){console.error(e)}var gl=!1,jd=!1,Jo=[],Kt=0,Ba=[],mr=null,aa=0,wm=Promise.resolve(),$d=null;function Uo(e){let o=$d||wm;return e?o.then(this?e.bind(this):e):o}function qR(e){let o=Kt+1,t=Jo.length;for(;o<t;){let r=o+t>>>1;wl(Jo[r])<e?o=r+1:t=r}return o}function Ud(e){(!Jo.length||!Jo.includes(e,gl&&e.allowRecurse?Kt+1:Kt))&&(e.id==null?Jo.push(e):Jo.splice(qR(e.id),0,e),Tm())}function Tm(){!gl&&!jd&&(jd=!0,$d=wm.then(Fm))}function QR(e){let o=Jo.indexOf(e);o>Kt&&Jo.splice(o,1)}function ZR(e){Ne(e)?Ba.push(...e):(!mr||!mr.includes(e,e.allowRecurse?aa+1:aa))&&Ba.push(e),Tm()}function Rm(e,o=gl?Kt+1:0){for(;o<Jo.length;o++){let t=Jo[o];t&&t.pre&&(Jo.splice(o,1),o--,t())}}function Om(e){if(Ba.length){let o=[...new Set(Ba)];if(Ba.length=0,mr){mr.push(...o);return}for(mr=o,mr.sort((t,r)=>wl(t)-wl(r)),aa=0;aa<mr.length;aa++)mr[aa]();mr=null,aa=0}}var wl=e=>e.id==null?1/0:e.id,YR=(e,o)=>{let t=wl(e)-wl(o);if(t===0){if(e.pre&&!o.pre)return-1;if(o.pre&&!e.pre)return 1}return t};function Fm(e){jd=!1,gl=!0,Jo.sort(YR);let o=ct;try{for(Kt=0;Kt<Jo.length;Kt++){let t=Jo[Kt];t&&t.active!==!1&&pr(t,null,14)}}finally{Kt=0,Jo.length=0,Om(e),gl=!1,$d=null,(Jo.length||Ba.length)&&Fm(e)}}var AM=new Set,DM=new Map;function JR(e,o,...t){if(e.isUnmounted)return;let r=e.vnode.props||io,a=t,l=o.startsWith("update:"),n=l&&o.slice(7);if(n&&n in r){let u=`${n==="modelValue"?"model":n}Modifiers`,{number:f,trim:m}=r[u]||io;m&&(a=t.map(p=>vo(p)?p.trim():p)),f&&(a=t.map(Da))}let i,d=r[i=ml(o)]||r[i=ml(zt(o))];!d&&l&&(d=r[i=ml(yr(o))]),d&&ht(d,e,6,a);let s=r[i+"Once"];if(s){if(!e.emitted)e.emitted={};else if(e.emitted[i])return;e.emitted[i]=!0,ht(s,e,6,a)}}function Cm(e,o,t=!1){let r=o.emitsCache,a=r.get(e);if(a!==void 0)return a;let l=e.emits,n={},i=!1;if(!He(e)){let d=s=>{let u=Cm(s,o,!0);u&&(i=!0,Do(n,u))};!t&&o.mixins.length&&o.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}return!l&&!i?(so(e)&&r.set(e,null),null):(Ne(l)?l.forEach(d=>n[d]=null):Do(n,l),so(e)&&r.set(e,n),n)}function jn(e,o){return!e||!ka(o)?!1:(o=o.slice(2).replace(/Once$/,""),Qe(e,o[0].toLowerCase()+o.slice(1))||Qe(e,yr(o))||Qe(e,o))}var Xo=null,bm=null;function $n(e){let o=Xo;return Xo=e,bm=e&&e.type.__scopeId||null,o}function la(e,o=Xo,t){if(!o||e._n)return e;let r=(...a)=>{r._d&&Zm(-1);let l=$n(o),n;try{n=e(...a)}finally{$n(l),r._d&&Zm(1)}return n};return r._n=!0,r._c=!0,r._d=!0,r}function Kd(e){let{type:o,vnode:t,proxy:r,withProxy:a,props:l,propsOptions:[n],slots:i,attrs:d,emit:s,render:u,renderCache:f,data:m,setupState:p,ctx:c,inheritAttrs:R}=e,b,h,k=$n(e);try{if(t.shapeFlag&4){let g=a||r;b=Gt(u.call(g,g,f,l,p,m,c)),h=d}else{let g=o;b=Gt(g.length>1?g(l,{attrs:d,slots:i,emit:s}):g(l,null)),h=o.props?d:XR(d)}}catch(g){Cl.length=0,zn(g,e,1),b=To(et)}let z=b,C;if(h&&R!==!1){let g=Object.keys(h),{shapeFlag:v}=z;g.length&&v&(1|6)&&(n&&g.some(ul)&&(h=eO(h,n)),z=Lr(z,h))}return t.dirs&&(z=Lr(z),z.dirs=z.dirs?z.dirs.concat(t.dirs):t.dirs),t.transition&&(z.transition=t.transition),b=z,$n(k),b}var XR=e=>{let o;for(let t in e)(t==="class"||t==="style"||ka(t))&&((o||(o={}))[t]=e[t]);return o},eO=(e,o)=>{let t={};for(let r in e)(!ul(r)||!(r.slice(9)in o))&&(t[r]=e[r]);return t};function oO(e,o,t){let{props:r,children:a,component:l}=e,{props:n,children:i,patchFlag:d}=o,s=l.emitsOptions;if(o.dirs||o.transition)return!0;if(t&&d>=0){if(d&1024)return!0;if(d&16)return r?ym(r,n,s):!!n;if(d&8){let u=o.dynamicProps;for(let f=0;f<u.length;f++){let m=u[f];if(n[m]!==r[m]&&!jn(s,m))return!0}}}else return(a||i)&&(!i||!i.$stable)?!0:r===n?!1:r?n?ym(r,n,s):!0:!!n;return!1}function ym(e,o,t){let r=Object.keys(o);if(r.length!==Object.keys(e).length)return!0;for(let a=0;a<r.length;a++){let l=r[a];if(o[l]!==e[l]&&!jn(t,l))return!0}return!1}function tO({vnode:e,parent:o},t){for(;o&&o.subTree===e;)(e=o.vnode).el=t,o=o.parent}var rO=e=>e.__isSuspense;function aO(e,o){o&&o.pendingBranch?Ne(e)?o.effects.push(...e):o.effects.push(e):ZR(e)}function rt(e,o){if(Go){let t=Go.provides,r=Go.parent&&Go.parent.provides;r===t&&(t=Go.provides=Object.create(r)),t[e]=o}}function be(e,o,t=!1){let r=Go||Xo;if(r){let a=r.parent==null?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(a&&e in a)return a[e];if(arguments.length>1)return t&&He(o)?o.call(r.proxy):o}}function Vo(e,o){return Kn(e,null,o)}function vm(e,o){return Kn(e,null,{flush:"post"})}var Un={};function lo(e,o,t){return Kn(e,o,t)}function Kn(e,o,{immediate:t,deep:r,flush:a,onTrack:l,onTrigger:n}=io){let i=C=>{Sm("Invalid watch source: ",C,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},d=Go,s,u=!1,f=!1;if(Eo(e)?(s=()=>e.value,u=Ma(e)):Br(e)?(s=()=>e,r=!0):Ne(e)?(f=!0,u=e.some(C=>Br(C)||Ma(C)),s=()=>e.map(C=>{if(Eo(C))return C.value;if(Br(C))return na(C);if(He(C))return pr(C,d,2)})):He(e)?o?s=()=>pr(e,d,2):s=()=>{if(!(d&&d.isUnmounted))return m&&m(),ht(e,d,3,[p])}:s=ct,o&&r){let C=s;s=()=>na(C())}let m,p=C=>{m=k.onStop=()=>{pr(C,d,4)}},c;if(kl)if(p=ct,o?t&&ht(o,d,3,[s(),f?[]:void 0,p]):s(),a==="sync"){let C=qO();c=C.__watcherHandles||(C.__watcherHandles=[])}else return ct;let R=f?new Array(e.length).fill(Un):Un,b=()=>{if(!!k.active)if(o){let C=k.run();(r||u||(f?C.some((g,v)=>oa(g,R[v])):oa(C,R)))&&(m&&m(),ht(o,d,3,[C,R===Un?void 0:f&&R[0]===Un?[]:R,p]),R=C)}else k.run()};b.allowRecurse=!!o;let h;a==="sync"?h=b:a==="post"?h=()=>st(b,d&&d.suspense):(b.pre=!0,d&&(b.id=d.uid),h=()=>Ud(b));let k=new Pa(s,h);o?t?b():R=k.run():a==="post"?st(k.run.bind(k),d&&d.suspense):k.run();let z=()=>{k.stop(),d&&d.scope&&vn(d.scope.effects,k)};return c&&c.push(z),z}function lO(e,o,t){let r=this.proxy,a=vo(e)?e.includes(".")?km(r,e):()=>r[e]:e.bind(r,r),l;He(o)?l=o:(l=o.handler,t=o);let n=Go;Ha(this);let i=Kn(a,l.bind(r),t);return n?Ha(n):fa(),i}function km(e,o){let t=o.split(".");return()=>{let r=e;for(let a=0;a<t.length&&r;a++)r=r[t[a]];return r}}function na(e,o){if(!so(e)||e.__v_skip||(o=o||new Set,o.has(e)))return e;if(o.add(e),Eo(e))na(e.value,o);else if(Ne(e))for(let t=0;t<e.length;t++)na(e[t],o);else if(kn(e)||br(e))e.forEach(t=>{na(t,o)});else if(Pd(e))for(let t in e)na(e[t],o);return e}function Gd(){let e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return no(()=>{e.isMounted=!0}),Ko(()=>{e.isUnmounting=!0}),e}var Ot=[Function,Array],nO={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ot,onEnter:Ot,onAfterEnter:Ot,onEnterCancelled:Ot,onBeforeLeave:Ot,onLeave:Ot,onAfterLeave:Ot,onLeaveCancelled:Ot,onBeforeAppear:Ot,onAppear:Ot,onAfterAppear:Ot,onAppearCancelled:Ot},setup(e,{slots:o}){let t=Ft(),r=Gd(),a;return()=>{let l=o.default&&Gn(o.default(),!0);if(!l||!l.length)return;let n=l[0];if(l.length>1){let R=!1;for(let b of l)if(b.type!==et){n=b,R=!0;break}}let i=Ue(e),{mode:d}=i;if(r.isLeaving)return Qd(n);let s=Dm(n);if(!s)return Qd(n);let u=Ea(s,i,r,t);La(s,u);let f=t.subTree,m=f&&Dm(f),p=!1,{getTransitionKey:c}=s.type;if(c){let R=c();a===void 0?a=R:R!==a&&(a=R,p=!0)}if(m&&m.type!==et&&(!ua(s,m)||p)){let R=Ea(m,i,r,t);if(La(m,R),d==="out-in")return r.isLeaving=!0,R.afterLeave=()=>{r.isLeaving=!1,t.update.active!==!1&&t.update()},Qd(n);d==="in-out"&&s.type!==et&&(R.delayLeave=(b,h,k)=>{let z=Am(r,m);z[String(m.key)]=m,b._leaveCb=()=>{h(),b._leaveCb=void 0,delete u.delayedLeave},u.delayedLeave=k})}return n}}},qd=nO;function Am(e,o){let{leavingVNodes:t}=e,r=t.get(o.type);return r||(r=Object.create(null),t.set(o.type,r)),r}function Ea(e,o,t,r){let{appear:a,mode:l,persisted:n=!1,onBeforeEnter:i,onEnter:d,onAfterEnter:s,onEnterCancelled:u,onBeforeLeave:f,onLeave:m,onAfterLeave:p,onLeaveCancelled:c,onBeforeAppear:R,onAppear:b,onAfterAppear:h,onAppearCancelled:k}=o,z=String(e.key),C=Am(t,e),g=(F,B)=>{F&&ht(F,r,9,B)},v=(F,B)=>{let y=B[1];g(F,B),Ne(F)?F.every(I=>I.length<=1)&&y():F.length<=1&&y()},S={mode:l,persisted:n,beforeEnter(F){let B=i;if(!t.isMounted)if(a)B=R||i;else return;F._leaveCb&&F._leaveCb(!0);let y=C[z];y&&ua(e,y)&&y.el._leaveCb&&y.el._leaveCb(),g(B,[F])},enter(F){let B=d,y=s,I=u;if(!t.isMounted)if(a)B=b||d,y=h||s,I=k||u;else return;let E=!1,se=F._enterCb=Se=>{E||(E=!0,Se?g(I,[F]):g(y,[F]),S.delayedLeave&&S.delayedLeave(),F._enterCb=void 0)};B?v(B,[F,se]):se()},leave(F,B){let y=String(e.key);if(F._enterCb&&F._enterCb(!0),t.isUnmounting)return B();g(f,[F]);let I=!1,E=F._leaveCb=se=>{I||(I=!0,B(),se?g(c,[F]):g(p,[F]),F._leaveCb=void 0,C[y]===e&&delete C[y])};C[y]=e,m?v(m,[F,E]):E()},clone(F){return Ea(F,o,t,r)}};return S}function Qd(e){if(qn(e))return e=Lr(e),e.children=null,e}function Dm(e){return qn(e)?e.children?e.children[0]:void 0:e}function La(e,o){e.shapeFlag&6&&e.component?La(e.component.subTree,o):e.shapeFlag&128?(e.ssContent.transition=o.clone(e.ssContent),e.ssFallback.transition=o.clone(e.ssFallback)):e.transition=o}function Gn(e,o=!1,t){let r=[],a=0;for(let l=0;l<e.length;l++){let n=e[l],i=t==null?n.key:String(t)+String(n.key!=null?n.key:l);n.type===Po?(n.patchFlag&128&&a++,r=r.concat(Gn(n.children,o,i))):(o||n.type!==et)&&r.push(i!=null?Lr(n,{key:i}):n)}if(a>1)for(let l=0;l<r.length;l++)r[l].patchFlag=-2;return r}function re(e){return He(e)?{setup:e,name:e.name}:e}var Tl=e=>!!e.type.__asyncLoader;var qn=e=>e.type.__isKeepAlive;function Zd(e,o){Pm(e,"a",o)}function iO(e,o){Pm(e,"da",o)}function Pm(e,o,t=Go){let r=e.__wdc||(e.__wdc=()=>{let a=t;for(;a;){if(a.isDeactivated)return;a=a.parent}return e()});if(Qn(o,r,t),t){let a=t.parent;for(;a&&a.parent;)qn(a.parent.vnode)&&dO(r,o,t,a),a=a.parent}}function dO(e,o,t,r){let a=Qn(o,e,r,!0);xr(()=>{vn(r[o],a)},t)}function Qn(e,o,t=Go,r=!1){if(t){let a=t[e]||(t[e]=[]),l=o.__weh||(o.__weh=(...n)=>{if(t.isUnmounted)return;Ar(),Ha(t);let i=ht(o,t,e,n);return fa(),Dr(),i});return r?a.unshift(l):a.push(l),l}}var cr=e=>(o,t=Go)=>(!kl||e==="sp")&&Qn(e,(...r)=>o(...r),t),hr=cr("bm"),no=cr("m"),Yd=cr("bu"),Jd=cr("u"),Ko=cr("bum"),xr=cr("um"),sO=cr("sp"),uO=cr("rtg"),fO=cr("rtc");function pO(e,o=Go){Qn("ec",e,o)}function Zn(e,o){let t=Xo;if(t===null)return e;let r=ri(t)||t.proxy,a=e.dirs||(e.dirs=[]);for(let l=0;l<o.length;l++){let[n,i,d,s=io]=o[l];n&&(He(n)&&(n={mounted:n,updated:n}),n.deep&&na(i),a.push({dir:n,instance:r,value:i,oldValue:void 0,arg:d,modifiers:s}))}return e}function ia(e,o,t,r){let a=e.dirs,l=o&&o.dirs;for(let n=0;n<a.length;n++){let i=a[n];l&&(i.oldValue=l[n].value);let d=i.dir[r];d&&(Ar(),ht(d,t,8,[e.el,i,e,o]),Dr())}}var mO=Symbol();function Na(e,o,t={},r,a){if(Xo.isCE||Xo.parent&&Tl(Xo.parent)&&Xo.parent.isCE)return o!=="default"&&(t.name=o),To("slot",t,r&&r());let l=e[o];l&&l._c&&(l._d=!1),oo();let n=l&&Mm(l(t)),i=yl(Po,{key:t.key||n&&n.key||`_${o}`},n||(r?r():[]),n&&e._===1?64:-2);return!a&&i.scopeId&&(i.slotScopeIds=[i.scopeId+"-s"]),l&&l._c&&(l._d=!0),i}function Mm(e){return e.some(o=>_a(o)?!(o.type===et||o.type===Po&&!Mm(o.children)):!0)?e:null}var Xd=e=>e?Xm(e)?ri(e)||e.proxy:Xd(e.parent):null,Rl=Do(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Xd(e.parent),$root:e=>Xd(e.root),$emit:e=>e.emit,$options:e=>ts(e),$forceUpdate:e=>e.f||(e.f=()=>Ud(e.update)),$nextTick:e=>e.n||(e.n=Uo.bind(e.proxy)),$watch:e=>lO.bind(e)});var es=(e,o)=>e!==io&&!e.__isScriptSetup&&Qe(e,o),cO={get({_:e},o){let{ctx:t,setupState:r,data:a,props:l,accessCache:n,type:i,appContext:d}=e,s;if(o[0]!=="$"){let p=n[o];if(p!==void 0)switch(p){case 1:return r[o];case 2:return a[o];case 4:return t[o];case 3:return l[o]}else{if(es(r,o))return n[o]=1,r[o];if(a!==io&&Qe(a,o))return n[o]=2,a[o];if((s=e.propsOptions[0])&&Qe(s,o))return n[o]=3,l[o];if(t!==io&&Qe(t,o))return n[o]=4,t[o];os&&(n[o]=0)}}let u=Rl[o],f,m;if(u)return o==="$attrs"&&dt(e,"get",o),u(e);if((f=i.__cssModules)&&(f=f[o]))return f;if(t!==io&&Qe(t,o))return n[o]=4,t[o];if(m=d.config.globalProperties,Qe(m,o))return m[o]},set({_:e},o,t){let{data:r,setupState:a,ctx:l}=e;return es(a,o)?(a[o]=t,!0):r!==io&&Qe(r,o)?(r[o]=t,!0):Qe(e.props,o)||o[0]==="$"&&o.slice(1)in e?!1:(l[o]=t,!0)},has({_:{data:e,setupState:o,accessCache:t,ctx:r,appContext:a,propsOptions:l}},n){let i;return!!t[n]||e!==io&&Qe(e,n)||es(o,n)||(i=l[0])&&Qe(i,n)||Qe(r,n)||Qe(Rl,n)||Qe(a.config.globalProperties,n)},defineProperty(e,o,t){return t.get!=null?e._.accessCache[o]=0:Qe(t,"value")&&this.set(e,o,t.value,null),Reflect.defineProperty(e,o,t)}};var os=!0;function hO(e){let o=ts(e),t=e.proxy,r=e.ctx;os=!1,o.beforeCreate&&Bm(o.beforeCreate,e,"bc");let{data:a,computed:l,methods:n,watch:i,provide:d,inject:s,created:u,beforeMount:f,mounted:m,beforeUpdate:p,updated:c,activated:R,deactivated:b,beforeDestroy:h,beforeUnmount:k,destroyed:z,unmounted:C,render:g,renderTracked:v,renderTriggered:S,errorCaptured:F,serverPrefetch:B,expose:y,inheritAttrs:I,components:E,directives:se,filters:Se}=o;if(s&&xO(s,r,null,e.appContext.config.unwrapInjectedRef),n)for(let ue in n){let Fe=n[ue];He(Fe)&&(r[ue]=Fe.bind(t))}if(a){let ue=a.call(t,t);so(ue)&&(e.data=Ut(ue))}if(os=!0,l)for(let ue in l){let Fe=l[ue],Ge=He(Fe)?Fe.bind(t,t):He(Fe.get)?Fe.get.bind(t,t):ct,Ye=!He(Fe)&&He(Fe.set)?Fe.set.bind(t):ct,$e=W({get:Ge,set:Ye});Object.defineProperty(r,ue,{enumerable:!0,configurable:!0,get:()=>$e.value,set:ro=>$e.value=ro})}if(i)for(let ue in i)Em(i[ue],r,t,ue);if(d){let ue=He(d)?d.call(t):d;Reflect.ownKeys(ue).forEach(Fe=>{rt(Fe,ue[Fe])})}u&&Bm(u,e,"c");function me(ue,Fe){Ne(Fe)?Fe.forEach(Ge=>ue(Ge.bind(t))):Fe&&ue(Fe.bind(t))}if(me(hr,f),me(no,m),me(Yd,p),me(Jd,c),me(Zd,R),me(iO,b),me(pO,F),me(fO,v),me(uO,S),me(Ko,k),me(xr,C),me(sO,B),Ne(y))if(y.length){let ue=e.exposed||(e.exposed={});y.forEach(Fe=>{Object.defineProperty(ue,Fe,{get:()=>t[Fe],set:Ge=>t[Fe]=Ge})})}else e.exposed||(e.exposed={});g&&e.render===ct&&(e.render=g),I!=null&&(e.inheritAttrs=I),E&&(e.components=E),se&&(e.directives=se)}function xO(e,o,t=ct,r=!1){Ne(e)&&(e=rs(e));for(let a in e){let l=e[a],n;so(l)?"default"in l?n=be(l.from||a,l.default,!0):n=be(l.from||a):n=be(l),Eo(n)&&r?Object.defineProperty(o,a,{enumerable:!0,configurable:!0,get:()=>n.value,set:i=>n.value=i}):o[a]=n}}function Bm(e,o,t){ht(Ne(e)?e.map(r=>r.bind(o.proxy)):e.bind(o.proxy),o,t)}function Em(e,o,t,r){let a=r.includes(".")?km(t,r):()=>t[r];if(vo(e)){let l=o[e];He(l)&&lo(a,l)}else if(He(e))lo(a,e.bind(t));else if(so(e))if(Ne(e))e.forEach(l=>Em(l,o,t,r));else{let l=He(e.handler)?e.handler.bind(t):o[e.handler];He(l)&&lo(a,l,e)}}function ts(e){let o=e.type,{mixins:t,extends:r}=o,{mixins:a,optionsCache:l,config:{optionMergeStrategies:n}}=e.appContext,i=l.get(o),d;return i?d=i:!a.length&&!t&&!r?d=o:(d={},a.length&&a.forEach(s=>Yn(d,s,n,!0)),Yn(d,o,n)),so(o)&&l.set(o,d),d}function Yn(e,o,t,r=!1){let{mixins:a,extends:l}=o;l&&Yn(e,l,t,!0),a&&a.forEach(n=>Yn(e,n,t,!0));for(let n in o)if(!(r&&n==="expose")){let i=SO[n]||t&&t[n];e[n]=i?i(e[n],o[n]):o[n]}return e}var SO={data:Lm,props:da,emits:da,methods:da,computed:da,beforeCreate:at,created:at,beforeMount:at,mounted:at,beforeUpdate:at,updated:at,beforeDestroy:at,beforeUnmount:at,destroyed:at,unmounted:at,activated:at,deactivated:at,errorCaptured:at,serverPrefetch:at,components:da,directives:da,watch:wO,provide:Lm,inject:gO};function Lm(e,o){return o?e?function(){return Do(He(e)?e.call(this,this):e,He(o)?o.call(this,this):o)}:o:e}function gO(e,o){return da(rs(e),rs(o))}function rs(e){if(Ne(e)){let o={};for(let t=0;t<e.length;t++)o[e[t]]=e[t];return o}return e}function at(e,o){return e?[...new Set([].concat(e,o))]:o}function da(e,o){return e?Do(Do(Object.create(null),e),o):o}function wO(e,o){if(!e)return o;if(!o)return e;let t=Do(Object.create(null),e);for(let r in o)t[r]=at(e[r],o[r]);return t}function TO(e,o,t,r=!1){let a={},l={};Aa(l,ei,1),e.propsDefaults=Object.create(null),Nm(e,o,a,l);for(let n in e.propsOptions[0])n in a||(a[n]=void 0);t?e.props=r?a:Vd(a):e.type.props?e.props=a:e.props=l,e.attrs=l}function RO(e,o,t,r){let{props:a,attrs:l,vnode:{patchFlag:n}}=e,i=Ue(a),[d]=e.propsOptions,s=!1;if((r||n>0)&&!(n&16)){if(n&8){let u=e.vnode.dynamicProps;for(let f=0;f<u.length;f++){let m=u[f];if(jn(e.emitsOptions,m))continue;let p=o[m];if(d)if(Qe(l,m))p!==l[m]&&(l[m]=p,s=!0);else{let c=zt(m);a[c]=as(d,i,c,p,e,!1)}else p!==l[m]&&(l[m]=p,s=!0)}}}else{Nm(e,o,a,l)&&(s=!0);let u;for(let f in i)(!o||!Qe(o,f)&&((u=yr(f))===f||!Qe(o,u)))&&(d?t&&(t[f]!==void 0||t[u]!==void 0)&&(a[f]=as(d,i,f,void 0,e,!0)):delete a[f]);if(l!==i)for(let f in l)(!o||!Qe(o,f)&&!0)&&(delete l[f],s=!0)}s&&$t(e,"set","$attrs")}function Nm(e,o,t,r){let[a,l]=e.propsOptions,n=!1,i;if(o)for(let d in o){if(fl(d))continue;let s=o[d],u;a&&Qe(a,u=zt(d))?!l||!l.includes(u)?t[u]=s:(i||(i={}))[u]=s:jn(e.emitsOptions,d)||(!(d in r)||s!==r[d])&&(r[d]=s,n=!0)}if(l){let d=Ue(t),s=i||io;for(let u=0;u<l.length;u++){let f=l[u];t[f]=as(a,d,f,s[f],e,!Qe(s,f))}}return n}function as(e,o,t,r,a,l){let n=e[t];if(n!=null){let i=Qe(n,"default");if(i&&r===void 0){let d=n.default;if(n.type!==Function&&He(d)){let{propsDefaults:s}=a;t in s?r=s[t]:(Ha(a),r=s[t]=d.call(null,o),fa())}else r=d}n[0]&&(l&&!i?r=!1:n[1]&&(r===""||r===yr(t))&&(r=!0))}return r}function _m(e,o,t=!1){let r=o.propsCache,a=r.get(e);if(a)return a;let l=e.props,n={},i=[],d=!1;if(!He(e)){let u=f=>{d=!0;let[m,p]=_m(f,o,!0);Do(n,m),p&&i.push(...p)};!t&&o.mixins.length&&o.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!l&&!d)return so(e)&&r.set(e,ea),ea;if(Ne(l))for(let u=0;u<l.length;u++){let f=zt(l[u]);Im(f)&&(n[f]=io)}else if(l)for(let u in l){let f=zt(u);if(Im(f)){let m=l[u],p=n[f]=Ne(m)||He(m)?{type:m}:Object.assign({},m);if(p){let c=Wm(Boolean,p.type),R=Wm(String,p.type);p[0]=c>-1,p[1]=R<0||c<R,(c>-1||Qe(p,"default"))&&i.push(f)}}}let s=[n,i];return so(e)&&r.set(e,s),s}function Im(e){return e[0]!=="$"}function Hm(e){let o=e&&e.toString().match(/^\s*function (\w+)/);return o?o[1]:e===null?"null":""}function Vm(e,o){return Hm(e)===Hm(o)}function Wm(e,o){return Ne(o)?o.findIndex(t=>Vm(t,e)):He(o)&&Vm(o,e)?0:-1}var zm=e=>e[0]==="_"||e==="$stable",ls=e=>Ne(e)?e.map(Gt):[Gt(e)],OO=(e,o,t)=>{if(o._n)return o;let r=la((...a)=>ls(o(...a)),t);return r._c=!1,r},jm=(e,o,t)=>{let r=e._ctx;for(let a in e){if(zm(a))continue;let l=e[a];if(He(l))o[a]=OO(a,l,r);else if(l!=null){let n=ls(l);o[a]=()=>n}}},$m=(e,o)=>{let t=ls(o);e.slots.default=()=>t},FO=(e,o)=>{if(e.vnode.shapeFlag&32){let t=o._;t?(e.slots=Ue(o),Aa(o,"_",t)):jm(o,e.slots={})}else e.slots={},o&&$m(e,o);Aa(e.slots,ei,1)},CO=(e,o,t)=>{let{vnode:r,slots:a}=e,l=!0,n=io;if(r.shapeFlag&32){let i=o._;i?t&&i===1?l=!1:(Do(a,o),!t&&i===1&&delete a._):(l=!o.$stable,jm(o,a)),n=o}else o&&($m(e,o),n={default:1});if(l)for(let i in a)!zm(i)&&!(i in n)&&delete a[i]};function Um(){return{app:null,config:{isNativeTag:jp,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}var bO=0;function yO(e,o){return function(r,a=null){He(r)||(r=Object.assign({},r)),a!=null&&!so(a)&&(a=null);let l=Um(),n=new Set,i=!1,d=l.app={_uid:bO++,_component:r,_props:a,_container:null,_context:l,_instance:null,version:QO,get config(){return l.config},set config(s){},use(s,...u){return n.has(s)||(s&&He(s.install)?(n.add(s),s.install(d,...u)):He(s)&&(n.add(s),s(d,...u))),d},mixin(s){return l.mixins.includes(s)||l.mixins.push(s),d},component(s,u){return u?(l.components[s]=u,d):l.components[s]},directive(s,u){return u?(l.directives[s]=u,d):l.directives[s]},mount(s,u,f){if(!i){let m=To(r,a);return m.appContext=l,u&&o?o(m,s):e(m,s,f),i=!0,d._container=s,s.__vue_app__=d,ri(m.component)||m.component.proxy}},unmount(){i&&(e(null,d._container),delete d._container.__vue_app__)},provide(s,u){return l.provides[s]=u,d}};return d}}function ns(e,o,t,r,a=!1){if(Ne(e)){e.forEach((m,p)=>ns(m,o&&(Ne(o)?o[p]:o),t,r,a));return}if(Tl(r)&&!a)return;let l=r.shapeFlag&4?ri(r.component)||r.component.proxy:r.el,n=a?null:l,{i,r:d}=e,s=o&&o.r,u=i.refs===io?i.refs={}:i.refs,f=i.setupState;if(s!=null&&s!==d&&(vo(s)?(u[s]=null,Qe(f,s)&&(f[s]=null)):Eo(s)&&(s.value=null)),He(d))pr(d,i,12,[n,u]);else{let m=vo(d),p=Eo(d);if(m||p){let c=()=>{if(e.f){let R=m?Qe(f,d)?f[d]:u[d]:d.value;a?Ne(R)&&vn(R,l):Ne(R)?R.includes(l)||R.push(l):m?(u[d]=[l],Qe(f,d)&&(f[d]=u[d])):(d.value=[l],e.k&&(u[e.k]=d.value))}else m?(u[d]=n,Qe(f,d)&&(f[d]=n)):p&&(d.value=n,e.k&&(u[e.k]=n))};n?(c.id=-1,st(c,t)):c()}}}function vO(){let e=[]}var st=aO;function Km(e){return kO(e)}function kO(e,o){vO();let t=Kp();t.__VUE__=!0;let{insert:r,remove:a,patchProp:l,createElement:n,createText:i,createComment:d,setText:s,setElementText:u,parentNode:f,nextSibling:m,setScopeId:p=ct,insertStaticContent:c}=e,R=(x,O,N,j=null,U=null,ae=null,ee=!1,V=null,Z=!!O.dynamicChildren)=>{if(x===O)return;x&&!ua(x,O)&&(j=go(x),Ke(x,U,ae,!0),x=null),O.patchFlag===-2&&(Z=!1,O.dynamicChildren=null);let{type:q,ref:D,shapeFlag:L}=O;switch(q){case Xn:b(x,O,N,j);break;case et:h(x,O,N,j);break;case Fl:x==null&&k(O,N,j,ee);break;case Po:se(x,O,N,j,U,ae,ee,V,Z);break;default:L&1?v(x,O,N,j,U,ae,ee,V,Z):L&6?Se(x,O,N,j,U,ae,ee,V,Z):(L&64||L&128)&&q.process(x,O,N,j,U,ae,ee,V,Z,co)}D!=null&&U&&ns(D,x&&x.ref,ae,O||x,!O)},b=(x,O,N,j)=>{if(x==null)r(O.el=i(O.children),N,j);else{let U=O.el=x.el;O.children!==x.children&&s(U,O.children)}},h=(x,O,N,j)=>{x==null?r(O.el=d(O.children||""),N,j):O.el=x.el},k=(x,O,N,j)=>{[x.el,x.anchor]=c(x.children,O,N,j,x.el,x.anchor)},z=(x,O,N,j)=>{if(O.children!==x.children){let U=m(x.anchor);g(x),[O.el,O.anchor]=c(O.children,N,U,j)}else O.el=x.el,O.anchor=x.anchor},C=({el:x,anchor:O},N,j)=>{let U;for(;x&&x!==O;)U=m(x),r(x,N,j),x=U;r(O,N,j)},g=({el:x,anchor:O})=>{let N;for(;x&&x!==O;)N=m(x),a(x),x=N;a(O)},v=(x,O,N,j,U,ae,ee,V,Z)=>{ee=ee||O.type==="svg",x==null?S(O,N,j,U,ae,ee,V,Z):y(x,O,U,ae,ee,V,Z)},S=(x,O,N,j,U,ae,ee,V)=>{let Z,q,{type:D,props:L,shapeFlag:H,transition:ie,dirs:pe}=x;if(Z=x.el=n(x.type,ae,L&&L.is,L),H&8?u(Z,x.children):H&16&&B(x.children,Z,null,j,U,ae&&D!=="foreignObject",ee,V),pe&&ia(x,null,j,"created"),L){for(let Ae in L)Ae!=="value"&&!fl(Ae)&&l(Z,Ae,null,L[Ae],ae,x.children,j,U,qe);"value"in L&&l(Z,"value",null,L.value),(q=L.onVnodeBeforeMount)&&qt(q,j,x)}F(Z,x,x.scopeId,ee,j),pe&&ia(x,null,j,"beforeMount");let ve=(!U||U&&!U.pendingBranch)&&ie&&!ie.persisted;ve&&ie.beforeEnter(Z),r(Z,O,N),((q=L&&L.onVnodeMounted)||ve||pe)&&st(()=>{q&&qt(q,j,x),ve&&ie.enter(Z),pe&&ia(x,null,j,"mounted")},U)},F=(x,O,N,j,U)=>{if(N&&p(x,N),j)for(let ae=0;ae<j.length;ae++)p(x,j[ae]);if(U){let ae=U.subTree;if(O===ae){let ee=U.vnode;F(x,ee,ee.scopeId,ee.slotScopeIds,U.parent)}}},B=(x,O,N,j,U,ae,ee,V,Z=0)=>{for(let q=Z;q<x.length;q++){let D=x[q]=V?Nr(x[q]):Gt(x[q]);R(null,D,O,N,j,U,ae,ee,V)}},y=(x,O,N,j,U,ae,ee)=>{let V=O.el=x.el,{patchFlag:Z,dynamicChildren:q,dirs:D}=O;Z|=x.patchFlag&16;let L=x.props||io,H=O.props||io,ie;N&&sa(N,!1),(ie=H.onVnodeBeforeUpdate)&&qt(ie,N,O,x),D&&ia(O,x,N,"beforeUpdate"),N&&sa(N,!0);let pe=U&&O.type!=="foreignObject";if(q?I(x.dynamicChildren,q,V,N,j,pe,ae):ee||Ge(x,O,V,null,N,j,pe,ae,!1),Z>0){if(Z&16)E(V,O,L,H,N,j,U);else if(Z&2&&L.class!==H.class&&l(V,"class",null,H.class,U),Z&4&&l(V,"style",L.style,H.style,U),Z&8){let ve=O.dynamicProps;for(let Ae=0;Ae<ve.length;Ae++){let Ce=ve[Ae],K=L[Ce],ne=H[Ce];(ne!==K||Ce==="value")&&l(V,Ce,K,ne,U,x.children,N,j,qe)}}Z&1&&x.children!==O.children&&u(V,O.children)}else!ee&&q==null&&E(V,O,L,H,N,j,U);((ie=H.onVnodeUpdated)||D)&&st(()=>{ie&&qt(ie,N,O,x),D&&ia(O,x,N,"updated")},j)},I=(x,O,N,j,U,ae,ee)=>{for(let V=0;V<O.length;V++){let Z=x[V],q=O[V],D=Z.el&&(Z.type===Po||!ua(Z,q)||Z.shapeFlag&(6|64))?f(Z.el):N;R(Z,q,D,null,j,U,ae,ee,!0)}},E=(x,O,N,j,U,ae,ee)=>{if(N!==j){if(N!==io)for(let V in N)!fl(V)&&!(V in j)&&l(x,V,N[V],null,ee,O.children,U,ae,qe);for(let V in j){if(fl(V))continue;let Z=j[V],q=N[V];Z!==q&&V!=="value"&&l(x,V,q,Z,ee,O.children,U,ae,qe)}"value"in j&&l(x,"value",N.value,j.value)}},se=(x,O,N,j,U,ae,ee,V,Z)=>{let q=O.el=x?x.el:i(""),D=O.anchor=x?x.anchor:i(""),{patchFlag:L,dynamicChildren:H,slotScopeIds:ie}=O;ie&&(V=V?V.concat(ie):ie),x==null?(r(q,N,j),r(D,N,j),B(O.children,N,D,U,ae,ee,V,Z)):L>0&&L&64&&H&&x.dynamicChildren?(I(x.dynamicChildren,H,N,U,ae,ee,V),(O.key!=null||U&&O===U.subTree)&&is(x,O,!0)):Ge(x,O,N,D,U,ae,ee,V,Z)},Se=(x,O,N,j,U,ae,ee,V,Z)=>{O.slotScopeIds=V,x==null?O.shapeFlag&512?U.ctx.activate(O,N,j,ee,Z):Ee(O,N,j,U,ae,ee,Z):me(x,O,Z)},Ee=(x,O,N,j,U,ae,ee)=>{let V=x.component=IO(x,j,U);if(qn(x)&&(V.ctx.renderer=co),HO(V),V.asyncDep){if(U&&U.registerDep(V,ue),!x.el){let Z=V.subTree=To(et);h(null,Z,O,N)}return}ue(V,x,O,N,U,ae,ee)},me=(x,O,N)=>{let j=O.component=x.component;if(oO(x,O,N))if(j.asyncDep&&!j.asyncResolved){Fe(j,O,N);return}else j.next=O,QR(j.update),j.update();else O.el=x.el,j.vnode=O},ue=(x,O,N,j,U,ae,ee)=>{let V=()=>{if(x.isMounted){let{next:D,bu:L,u:H,parent:ie,vnode:pe}=x,ve=D,Ae;sa(x,!1),D?(D.el=pe.el,Fe(x,D,ee)):D=pe,L&&cl(L),(Ae=D.props&&D.props.onVnodeBeforeUpdate)&&qt(Ae,ie,D,pe),sa(x,!0);let Ce=Kd(x),K=x.subTree;x.subTree=Ce,R(K,Ce,f(K.el),go(K),x,U,ae),D.el=Ce.el,ve===null&&tO(x,Ce.el),H&&st(H,U),(Ae=D.props&&D.props.onVnodeUpdated)&&st(()=>qt(Ae,ie,D,pe),U)}else{let D,{el:L,props:H}=O,{bm:ie,m:pe,parent:ve}=x,Ae=Tl(O);if(sa(x,!1),ie&&cl(ie),!Ae&&(D=H&&H.onVnodeBeforeMount)&&qt(D,ve,O),sa(x,!0),L&&Lo){let Ce=()=>{x.subTree=Kd(x),Lo(L,x.subTree,x,U,null)};Ae?O.type.__asyncLoader().then(()=>!x.isUnmounted&&Ce()):Ce()}else{let Ce=x.subTree=Kd(x);R(null,Ce,N,j,x,U,ae),O.el=Ce.el}if(pe&&st(pe,U),!Ae&&(D=H&&H.onVnodeMounted)){let Ce=O;st(()=>qt(D,ve,Ce),U)}(O.shapeFlag&256||ve&&Tl(ve.vnode)&&ve.vnode.shapeFlag&256)&&x.a&&st(x.a,U),x.isMounted=!0,O=N=j=null}},Z=x.effect=new Pa(V,()=>Ud(q),x.scope),q=x.update=()=>Z.run();q.id=x.uid,sa(x,!0),q()},Fe=(x,O,N)=>{O.component=x;let j=x.vnode.props;x.vnode=O,x.next=null,RO(x,O.props,j,N),CO(x,O.children,N),Ar(),Rm(),Dr()},Ge=(x,O,N,j,U,ae,ee,V,Z=!1)=>{let q=x&&x.children,D=x?x.shapeFlag:0,L=O.children,{patchFlag:H,shapeFlag:ie}=O;if(H>0){if(H&128){$e(q,L,N,j,U,ae,ee,V,Z);return}else if(H&256){Ye(q,L,N,j,U,ae,ee,V,Z);return}}ie&8?(D&16&&qe(q,U,ae),L!==q&&u(N,L)):D&16?ie&16?$e(q,L,N,j,U,ae,ee,V,Z):qe(q,U,ae,!0):(D&8&&u(N,""),ie&16&&B(L,N,j,U,ae,ee,V,Z))},Ye=(x,O,N,j,U,ae,ee,V,Z)=>{x=x||ea,O=O||ea;let q=x.length,D=O.length,L=Math.min(q,D),H;for(H=0;H<L;H++){let ie=O[H]=Z?Nr(O[H]):Gt(O[H]);R(x[H],ie,N,null,U,ae,ee,V,Z)}q>D?qe(x,U,ae,!0,!1,L):B(O,N,j,U,ae,ee,V,Z,L)},$e=(x,O,N,j,U,ae,ee,V,Z)=>{let q=0,D=O.length,L=x.length-1,H=D-1;for(;q<=L&&q<=H;){let ie=x[q],pe=O[q]=Z?Nr(O[q]):Gt(O[q]);if(ua(ie,pe))R(ie,pe,N,null,U,ae,ee,V,Z);else break;q++}for(;q<=L&&q<=H;){let ie=x[L],pe=O[H]=Z?Nr(O[H]):Gt(O[H]);if(ua(ie,pe))R(ie,pe,N,null,U,ae,ee,V,Z);else break;L--,H--}if(q>L){if(q<=H){let ie=H+1,pe=ie<D?O[ie].el:j;for(;q<=H;)R(null,O[q]=Z?Nr(O[q]):Gt(O[q]),N,pe,U,ae,ee,V,Z),q++}}else if(q>H)for(;q<=L;)Ke(x[q],U,ae,!0),q++;else{let ie=q,pe=q,ve=new Map;for(q=pe;q<=H;q++){let te=O[q]=Z?Nr(O[q]):Gt(O[q]);te.key!=null&&ve.set(te.key,q)}let Ae,Ce=0,K=H-pe+1,ne=!1,Re=0,T=new Array(K);for(q=0;q<K;q++)T[q]=0;for(q=ie;q<=L;q++){let te=x[q];if(Ce>=K){Ke(te,U,ae,!0);continue}let de;if(te.key!=null)de=ve.get(te.key);else for(Ae=pe;Ae<=H;Ae++)if(T[Ae-pe]===0&&ua(te,O[Ae])){de=Ae;break}de===void 0?Ke(te,U,ae,!0):(T[de-pe]=q+1,de>=Re?Re=de:ne=!0,R(te,O[de],N,null,U,ae,ee,V,Z),Ce++)}let _=ne?AO(T):ea;for(Ae=_.length-1,q=K-1;q>=0;q--){let te=pe+q,de=O[te],Oe=te+1<D?O[te+1].el:j;T[q]===0?R(null,de,N,Oe,U,ae,ee,V,Z):ne&&(Ae<0||q!==_[Ae]?ro(de,N,Oe,2):Ae--)}}},ro=(x,O,N,j,U=null)=>{let{el:ae,type:ee,transition:V,children:Z,shapeFlag:q}=x;if(q&6){ro(x.component.subTree,O,N,j);return}if(q&128){x.suspense.move(O,N,j);return}if(q&64){ee.move(x,O,N,co);return}if(ee===Po){r(ae,O,N);for(let L=0;L<Z.length;L++)ro(Z[L],O,N,j);r(x.anchor,O,N);return}if(ee===Fl){C(x,O,N);return}if(j!==2&&q&1&&V)if(j===0)V.beforeEnter(ae),r(ae,O,N),st(()=>V.enter(ae),U);else{let{leave:L,delayLeave:H,afterLeave:ie}=V,pe=()=>r(ae,O,N),ve=()=>{L(ae,()=>{pe(),ie&&ie()})};H?H(ae,pe,ve):ve()}else r(ae,O,N)},Ke=(x,O,N,j=!1,U=!1)=>{let{type:ae,props:ee,ref:V,children:Z,dynamicChildren:q,shapeFlag:D,patchFlag:L,dirs:H}=x;if(V!=null&&ns(V,null,N,x,!0),D&256){O.ctx.deactivate(x);return}let ie=D&1&&H,pe=!Tl(x),ve;if(pe&&(ve=ee&&ee.onVnodeBeforeUnmount)&&qt(ve,O,x),D&6)We(x.component,N,j);else{if(D&128){x.suspense.unmount(N,j);return}ie&&ia(x,null,O,"beforeUnmount"),D&64?x.type.remove(x,O,N,U,co,j):q&&(ae!==Po||L>0&&L&64)?qe(q,O,N,!1,!0):(ae===Po&&L&(128|256)||!U&&D&16)&&qe(Z,O,N),j&&So(x)}(pe&&(ve=ee&&ee.onVnodeUnmounted)||ie)&&st(()=>{ve&&qt(ve,O,x),ie&&ia(x,null,O,"unmounted")},N)},So=x=>{let{type:O,el:N,anchor:j,transition:U}=x;if(O===Po){bo(N,j);return}if(O===Fl){g(x);return}let ae=()=>{a(N),U&&!U.persisted&&U.afterLeave&&U.afterLeave()};if(x.shapeFlag&1&&U&&!U.persisted){let{leave:ee,delayLeave:V}=U,Z=()=>ee(N,ae);V?V(x.el,ae,Z):Z()}else ae()},bo=(x,O)=>{let N;for(;x!==O;)N=m(x),a(x),x=N;a(O)},We=(x,O,N)=>{let{bum:j,scope:U,update:ae,subTree:ee,um:V}=x;j&&cl(j),U.stop(),ae&&(ae.active=!1,Ke(ee,x,O,N)),V&&st(V,O),st(()=>{x.isUnmounted=!0},O),O&&O.pendingBranch&&!O.isUnmounted&&x.asyncDep&&!x.asyncResolved&&x.suspenseId===O.pendingId&&(O.deps--,O.deps===0&&O.resolve())},qe=(x,O,N,j=!1,U=!1,ae=0)=>{for(let ee=ae;ee<x.length;ee++)Ke(x[ee],O,N,j,U)},go=x=>x.shapeFlag&6?go(x.component.subTree):x.shapeFlag&128?x.suspense.next():m(x.anchor||x.el),Le=(x,O,N)=>{x==null?O._vnode&&Ke(O._vnode,null,null,!0):R(O._vnode||null,x,O,null,null,null,N),Rm(),Om(),O._vnode=x},co={p:R,um:Ke,m:ro,r:So,mt:Ee,mc:B,pc:Ge,pbc:I,n:go,o:e},Ao,Lo;return o&&([Ao,Lo]=o(co)),{render:Le,hydrate:Ao,createApp:yO(Le,Ao)}}function sa({effect:e,update:o},t){e.allowRecurse=o.allowRecurse=t}function is(e,o,t=!1){let r=e.children,a=o.children;if(Ne(r)&&Ne(a))for(let l=0;l<r.length;l++){let n=r[l],i=a[l];i.shapeFlag&1&&!i.dynamicChildren&&((i.patchFlag<=0||i.patchFlag===32)&&(i=a[l]=Nr(a[l]),i.el=n.el),t||is(n,i)),i.type===Xn&&(i.el=n.el)}}function AO(e){let o=e.slice(),t=[0],r,a,l,n,i,d=e.length;for(r=0;r<d;r++){let s=e[r];if(s!==0){if(a=t[t.length-1],e[a]<s){o[r]=a,t.push(r);continue}for(l=0,n=t.length-1;l<n;)i=l+n>>1,e[t[i]]<s?l=i+1:n=i;s<e[t[l]]&&(l>0&&(o[r]=t[l-1]),t[l]=r)}}for(l=t.length,n=t[l-1];l-- >0;)t[l]=n,n=o[n];return t}var DO=e=>e.__isTeleport,Ol=e=>e&&(e.disabled||e.disabled===""),Gm=e=>typeof SVGElement!="undefined"&&e instanceof SVGElement,ds=(e,o)=>{let t=e&&e.to;if(vo(t))if(o){let r=o(t);return r}else return null;else return t},PO={__isTeleport:!0,process(e,o,t,r,a,l,n,i,d,s){let{mc:u,pc:f,pbc:m,o:{insert:p,querySelector:c,createText:R,createComment:b}}=s,h=Ol(o.props),{shapeFlag:k,children:z,dynamicChildren:C}=o;if(e==null){let g=o.el=R(""),v=o.anchor=R("");p(g,t,r),p(v,t,r);let S=o.target=ds(o.props,c),F=o.targetAnchor=R("");S&&(p(F,S),n=n||Gm(S));let B=(y,I)=>{k&16&&u(z,y,I,a,l,n,i,d)};h?B(t,v):S&&B(S,F)}else{o.el=e.el;let g=o.anchor=e.anchor,v=o.target=e.target,S=o.targetAnchor=e.targetAnchor,F=Ol(e.props),B=F?t:v,y=F?g:S;if(n=n||Gm(v),C?(m(e.dynamicChildren,C,B,a,l,n,i),is(e,o,!0)):d||f(e,o,B,y,a,l,n,i,!1),h)F||Jn(o,t,g,s,1);else if((o.props&&o.props.to)!==(e.props&&e.props.to)){let I=o.target=ds(o.props,c);I&&Jn(o,I,null,s,0)}else F&&Jn(o,v,S,s,1)}Qm(o)},remove(e,o,t,r,{um:a,o:{remove:l}},n){let{shapeFlag:i,children:d,anchor:s,targetAnchor:u,target:f,props:m}=e;if(f&&l(u),(n||!Ol(m))&&(l(s),i&16))for(let p=0;p<d.length;p++){let c=d[p];a(c,o,t,!0,!!c.dynamicChildren)}},move:Jn,hydrate:MO};function Jn(e,o,t,{o:{insert:r},m:a},l=2){l===0&&r(e.targetAnchor,o,t);let{el:n,anchor:i,shapeFlag:d,children:s,props:u}=e,f=l===2;if(f&&r(n,o,t),(!f||Ol(u))&&d&16)for(let m=0;m<s.length;m++)a(s[m],o,t,2);f&&r(i,o,t)}function MO(e,o,t,r,a,l,{o:{nextSibling:n,parentNode:i,querySelector:d}},s){let u=o.target=ds(o.props,d);if(u){let f=u._lpa||u.firstChild;if(o.shapeFlag&16)if(Ol(o.props))o.anchor=s(n(e),o,i(e),t,r,a,l),o.targetAnchor=f;else{o.anchor=n(e);let m=f;for(;m;)if(m=n(m),m&&m.nodeType===8&&m.data==="teleport anchor"){o.targetAnchor=m,u._lpa=o.targetAnchor&&n(o.targetAnchor);break}s(f,o,u,t,r,a,l)}Qm(o)}return o.anchor&&n(o.anchor)}var qm=PO;function Qm(e){let o=e.ctx;if(o&&o.ut){let t=e.children[0].el;for(;t!==e.targetAnchor;)t.nodeType===1&&t.setAttribute("data-v-owner",o.uid),t=t.nextSibling;o.ut()}}var Po=Symbol(void 0),Xn=Symbol(void 0),et=Symbol(void 0),Fl=Symbol(void 0),Cl=[],Bt=null;function oo(e=!1){Cl.push(Bt=e?null:[])}function BO(){Cl.pop(),Bt=Cl[Cl.length-1]||null}var bl=1;function Zm(e){bl+=e}function Ym(e){return e.dynamicChildren=bl>0?Bt||ea:null,BO(),bl>0&&Bt&&Bt.push(e),e}function xo(e,o,t,r,a,l){return Ym(wo(e,o,t,r,a,l,!0))}function yl(e,o,t,r,a){return Ym(To(e,o,t,r,a,!0))}function _a(e){return e?e.__v_isVNode===!0:!1}function ua(e,o){return e.type===o.type&&e.key===o.key}var ei="__vInternal",Jm=({key:e})=>e!=null?e:null,oi=({ref:e,ref_key:o,ref_for:t})=>e!=null?vo(e)||Eo(e)||He(e)?{i:Xo,r:e,k:o,f:!!t}:e:null;function wo(e,o=null,t=null,r=0,a=null,l=e===Po?0:1,n=!1,i=!1){let d={__v_isVNode:!0,__v_skip:!0,type:e,props:o,key:o&&Jm(o),ref:o&&oi(o),scopeId:bm,slotScopeIds:null,children:t,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:l,patchFlag:r,dynamicProps:a,dynamicChildren:null,appContext:null,ctx:Xo};return i?(ss(d,t),l&128&&e.normalize(d)):t&&(d.shapeFlag|=vo(t)?8:16),bl>0&&!n&&Bt&&(d.patchFlag>0||l&6)&&d.patchFlag!==32&&Bt.push(d),d}var To=EO;function EO(e,o=null,t=null,r=0,a=null,l=!1){if((!e||e===mO)&&(e=et),_a(e)){let i=Lr(e,o,!0);return t&&ss(i,t),bl>0&&!l&&Bt&&(i.shapeFlag&6?Bt[Bt.indexOf(e)]=i:Bt.push(i)),i.patchFlag|=-2,i}if(KO(e)&&(e=e.__vccOpts),o){o=LO(o);let{class:i,style:d}=o;i&&!vo(i)&&(o.class=Xr(i)),so(d)&&(Vn(d)&&!Ne(d)&&(d=Do({},d)),o.style=Cr(d))}let n=vo(e)?1:rO(e)?128:DO(e)?64:so(e)?4:He(e)?2:0;return wo(e,o,t,r,a,n,l,!0)}function LO(e){return e?Vn(e)||ei in e?Do({},e):e:null}function Lr(e,o,t=!1){let{props:r,ref:a,patchFlag:l,children:n}=e,i=o?vl(r||{},o):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:i,key:i&&Jm(i),ref:o&&o.ref?t&&a?Ne(a)?a.concat(oi(o)):[a,oi(o)]:oi(o):a,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:n,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:o&&e.type!==Po?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Lr(e.ssContent),ssFallback:e.ssFallback&&Lr(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx}}function Ia(e=" ",o=0){return To(Xn,null,e,o)}function ti(e="",o=!1){return o?(oo(),yl(et,null,e)):To(et,null,e)}function Gt(e){return e==null||typeof e=="boolean"?To(et):Ne(e)?To(Po,null,e.slice()):typeof e=="object"?Nr(e):To(Xn,null,String(e))}function Nr(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Lr(e)}function ss(e,o){let t=0,{shapeFlag:r}=e;if(o==null)o=null;else if(Ne(o))t=16;else if(typeof o=="object")if(r&(1|64)){let a=o.default;a&&(a._c&&(a._d=!1),ss(e,a()),a._c&&(a._d=!0));return}else{t=32;let a=o._;!a&&!(ei in o)?o._ctx=Xo:a===3&&Xo&&(Xo.slots._===1?o._=1:(o._=2,e.patchFlag|=1024))}else He(o)?(o={default:o,_ctx:Xo},t=32):(o=String(o),r&64?(t=16,o=[Ia(o)]):t=8);e.children=o,e.shapeFlag|=t}function vl(...e){let o={};for(let t=0;t<e.length;t++){let r=e[t];for(let a in r)if(a==="class")o.class!==r.class&&(o.class=Xr([o.class,r.class]));else if(a==="style")o.style=Cr([o.style,r.style]);else if(ka(a)){let l=o[a],n=r[a];n&&l!==n&&!(Ne(l)&&l.includes(n))&&(o[a]=l?[].concat(l,n):n)}else a!==""&&(o[a]=r[a])}return o}function qt(e,o,t,r=null){ht(e,o,7,[t,r])}var NO=Um(),_O=0;function IO(e,o,t){let r=e.type,a=(o?o.appContext:e.appContext)||NO,l={uid:_O++,vnode:e,type:r,parent:o,appContext:a,root:null,next:null,subTree:null,effect:null,update:null,scope:new Bn(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:o?o.provides:Object.create(a.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:_m(r,a),emitsOptions:Cm(r,a),emit:null,emitted:null,propsDefaults:io,inheritAttrs:r.inheritAttrs,ctx:io,data:io,props:io,attrs:io,slots:io,refs:io,setupState:io,setupContext:null,suspense:t,suspenseId:t?t.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return l.ctx={_:l},l.root=o?o.root:l,l.emit=JR.bind(null,l),e.ce&&e.ce(l),l}var Go=null,Ft=()=>Go||Xo,Ha=e=>{Go=e,e.scope.on()},fa=()=>{Go&&Go.scope.off(),Go=null};function Xm(e){return e.vnode.shapeFlag&4}var kl=!1;function HO(e,o=!1){kl=o;let{props:t,children:r}=e.vnode,a=Xm(e);TO(e,t,a,o),FO(e,r);let l=a?VO(e,o):void 0;return kl=!1,l}function VO(e,o){var t;let r=e.type;e.accessCache=Object.create(null),e.proxy=ra(new Proxy(e.ctx,cO));let{setup:a}=r;if(a){let l=e.setupContext=a.length>1?zO(e):null;Ha(e),Ar();let n=pr(a,e,0,[e.props,l]);if(Dr(),fa(),Ad(n)){if(n.then(fa,fa),o)return n.then(i=>{ec(e,i,o)}).catch(i=>{zn(i,e,0)});e.asyncDep=n}else ec(e,n,o)}else rc(e,o)}function ec(e,o,t){He(o)?e.type.__ssrInlineRender?e.ssrRender=o:e.render=o:so(o)&&(e.setupState=Wn(o)),rc(e,t)}var oc,tc;function rc(e,o,t){let r=e.type;if(!e.render){if(!o&&oc&&!r.render){let a=r.template||ts(e).template;if(a){let{isCustomElement:l,compilerOptions:n}=e.appContext.config,{delimiters:i,compilerOptions:d}=r,s=Do(Do({isCustomElement:l,delimiters:i},n),d);r.render=oc(a,s)}}e.render=r.render||ct,tc&&tc(e)}Ha(e),Ar(),hO(e),Dr(),fa()}function WO(e){return new Proxy(e.attrs,{get(o,t){return dt(e,"get","$attrs"),o[t]}})}function zO(e){let o=r=>{e.exposed=r||{}},t;return{get attrs(){return t||(t=WO(e))},slots:e.slots,emit:e.emit,expose:o}}function ri(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Wn(ra(e.exposed)),{get(o,t){if(t in o)return o[t];if(t in Rl)return Rl[t](e)},has(o,t){return t in o||t in Rl}}))}var jO=/(?:^|[-_])(\w)/g,$O=e=>e.replace(jO,o=>o.toUpperCase()).replace(/[-_]/g,"");function UO(e,o=!0){return He(e)?e.displayName||e.name:e.name||o&&e.__name}function ac(e,o,t=!1){let r=UO(o);if(!r&&o.__file){let a=o.__file.match(/([^/\\]+)\.\w+$/);a&&(r=a[1])}if(!r&&e&&e.parent){let a=l=>{for(let n in l)if(l[n]===o)return n};r=a(e.components||e.parent.type.components)||a(e.appContext.components)}return r?$O(r):t?"App":"Anonymous"}function KO(e){return He(e)&&"__vccOpts"in e}var W=(e,o)=>xm(e,o,kl);function w(e,o,t){let r=arguments.length;return r===2?so(o)&&!Ne(o)?_a(o)?To(e,null,[o]):To(e,o):To(e,null,o):(r>3?t=Array.prototype.slice.call(arguments,2):r===3&&_a(t)&&(t=[t]),To(e,o,t))}var GO=Symbol(""),qO=()=>{{let e=be(GO);return e}};var QO="3.2.45";var ZO="http://www.w3.org/2000/svg",pa=typeof document!="undefined"?document:null,lc=pa&&pa.createElement("template"),YO={insert:(e,o,t)=>{o.insertBefore(e,t||null)},remove:e=>{let o=e.parentNode;o&&o.removeChild(e)},createElement:(e,o,t,r)=>{let a=o?pa.createElementNS(ZO,e):pa.createElement(e,t?{is:t}:void 0);return e==="select"&&r&&r.multiple!=null&&a.setAttribute("multiple",r.multiple),a},createText:e=>pa.createTextNode(e),createComment:e=>pa.createComment(e),setText:(e,o)=>{e.nodeValue=o},setElementText:(e,o)=>{e.textContent=o},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>pa.querySelector(e),setScopeId(e,o){e.setAttribute(o,"")},insertStaticContent(e,o,t,r,a,l){let n=t?t.previousSibling:o.lastChild;if(a&&(a===l||a.nextSibling))for(;o.insertBefore(a.cloneNode(!0),t),!(a===l||!(a=a.nextSibling)););else{lc.innerHTML=r?`<svg>${e}</svg>`:e;let i=lc.content;if(r){let d=i.firstChild;for(;d.firstChild;)i.appendChild(d.firstChild);i.removeChild(d)}o.insertBefore(i,t)}return[n?n.nextSibling:o.firstChild,t?t.previousSibling:o.lastChild]}};function JO(e,o,t){let r=e._vtc;r&&(o=(o?[o,...r]:[...r]).join(" ")),o==null?e.removeAttribute("class"):t?e.setAttribute("class",o):e.className=o}function XO(e,o,t){let r=e.style,a=vo(t);if(t&&!a){for(let l in t)us(r,l,t[l]);if(o&&!vo(o))for(let l in o)t[l]==null&&us(r,l,"")}else{let l=r.display;a?o!==t&&(r.cssText=t):o&&e.removeAttribute("style"),"_vod"in e&&(r.display=l)}}var nc=/\s*!important$/;function us(e,o,t){if(Ne(t))t.forEach(r=>us(e,o,r));else if(t==null&&(t=""),o.startsWith("--"))e.setProperty(o,t);else{let r=eF(e,o);nc.test(t)?e.setProperty(yr(r),t.replace(nc,""),"important"):e[r]=t}}var ic=["Webkit","Moz","ms"],fs={};function eF(e,o){let t=fs[o];if(t)return t;let r=zt(o);if(r!=="filter"&&r in e)return fs[o]=r;r=pl(r);for(let a=0;a<ic.length;a++){let l=ic[a]+r;if(l in e)return fs[o]=l}return o}var dc="http://www.w3.org/1999/xlink";function oF(e,o,t,r,a){if(r&&o.startsWith("xlink:"))t==null?e.removeAttributeNS(dc,o.slice(6,o.length)):e.setAttributeNS(dc,o,t);else{let l=Wp(o);t==null||l&&!vd(t)?e.removeAttribute(o):e.setAttribute(o,l?"":t)}}function tF(e,o,t,r,a,l,n){if(o==="innerHTML"||o==="textContent"){r&&n(r,a,l),e[o]=t==null?"":t;return}if(o==="value"&&e.tagName!=="PROGRESS"&&!e.tagName.includes("-")){e._value=t;let d=t==null?"":t;(e.value!==d||e.tagName==="OPTION")&&(e.value=d),t==null&&e.removeAttribute(o);return}let i=!1;if(t===""||t==null){let d=typeof e[o];d==="boolean"?t=vd(t):t==null&&d==="string"?(t="",i=!0):d==="number"&&(t=0,i=!0)}try{e[o]=t}catch(d){}i&&e.removeAttribute(o)}function rF(e,o,t,r){e.addEventListener(o,t,r)}function aF(e,o,t,r){e.removeEventListener(o,t,r)}function lF(e,o,t,r,a=null){let l=e._vei||(e._vei={}),n=l[o];if(r&&n)n.value=r;else{let[i,d]=nF(o);if(r){let s=l[o]=sF(r,a);rF(e,i,s,d)}else n&&(aF(e,i,n,d),l[o]=void 0)}}var sc=/(?:Once|Passive|Capture)$/;function nF(e){let o;if(sc.test(e)){o={};let r;for(;r=e.match(sc);)e=e.slice(0,e.length-r[0].length),o[r[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):yr(e.slice(2)),o]}var ps=0,iF=Promise.resolve(),dF=()=>ps||(iF.then(()=>ps=0),ps=Date.now());function sF(e,o){let t=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=t.attached)return;ht(uF(r,t.value),o,5,[r])};return t.value=e,t.attached=dF(),t}function uF(e,o){if(Ne(o)){let t=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{t.call(e),e._stopped=!0},o.map(r=>a=>!a._stopped&&r&&r(a))}else return o}var uc=/^on[a-z]/,fF=(e,o,t,r,a=!1,l,n,i,d)=>{o==="class"?JO(e,r,a):o==="style"?XO(e,t,r):ka(o)?ul(o)||lF(e,o,t,r,n):(o[0]==="."?(o=o.slice(1),!0):o[0]==="^"?(o=o.slice(1),!1):pF(e,o,r,a))?tF(e,o,r,l,n,i,d):(o==="true-value"?e._trueValue=r:o==="false-value"&&(e._falseValue=r),oF(e,o,r,a))};function pF(e,o,t,r){return r?!!(o==="innerHTML"||o==="textContent"||o in e&&uc.test(o)&&He(t)):o==="spellcheck"||o==="draggable"||o==="translate"||o==="form"||o==="list"&&e.tagName==="INPUT"||o==="type"&&e.tagName==="TEXTAREA"||uc.test(o)&&vo(t)?!1:o in e}function fc(e){let o=Ft();if(!o)return;let t=o.ut=(a=e(o.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${o.uid}"]`)).forEach(l=>cs(l,a))},r=()=>{let a=e(o.proxy);ms(o.subTree,a),t(a)};vm(r),no(()=>{let a=new MutationObserver(r);a.observe(o.subTree.el.parentNode,{childList:!0}),xr(()=>a.disconnect())})}function ms(e,o){if(e.shapeFlag&128){let t=e.suspense;e=t.activeBranch,t.pendingBranch&&!t.isHydrating&&t.effects.push(()=>{ms(t.activeBranch,o)})}for(;e.component;)e=e.component.subTree;if(e.shapeFlag&1&&e.el)cs(e.el,o);else if(e.type===Po)e.children.forEach(t=>ms(t,o));else if(e.type===Fl){let{el:t,anchor:r}=e;for(;t&&(cs(t,o),t!==r);)t=t.nextSibling}}function cs(e,o){if(e.nodeType===1){let t=e.style;for(let r in o)t.setProperty(`--${r}`,o[r])}}var _r="transition",Al="animation",Et=(e,{slots:o})=>w(qd,cc(e),o);Et.displayName="Transition";var pc={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},mF=Et.props=Do({},qd.props,pc),ma=(e,o=[])=>{Ne(e)?e.forEach(t=>t(...o)):e&&e(...o)},mc=e=>e?Ne(e)?e.some(o=>o.length>1):e.length>1:!1;function cc(e){let o={};for(let E in e)E in pc||(o[E]=e[E]);if(e.css===!1)return o;let{name:t="v",type:r,duration:a,enterFromClass:l=`${t}-enter-from`,enterActiveClass:n=`${t}-enter-active`,enterToClass:i=`${t}-enter-to`,appearFromClass:d=l,appearActiveClass:s=n,appearToClass:u=i,leaveFromClass:f=`${t}-leave-from`,leaveActiveClass:m=`${t}-leave-active`,leaveToClass:p=`${t}-leave-to`}=e,c=cF(a),R=c&&c[0],b=c&&c[1],{onBeforeEnter:h,onEnter:k,onEnterCancelled:z,onLeave:C,onLeaveCancelled:g,onBeforeAppear:v=h,onAppear:S=k,onAppearCancelled:F=z}=o,B=(E,se,Se)=>{Ir(E,se?u:i),Ir(E,se?s:n),Se&&Se()},y=(E,se)=>{E._isLeaving=!1,Ir(E,f),Ir(E,p),Ir(E,m),se&&se()},I=E=>(se,Se)=>{let Ee=E?S:k,me=()=>B(se,E,Se);ma(Ee,[se,me]),hc(()=>{Ir(se,E?d:l),Sr(se,E?u:i),mc(Ee)||xc(se,r,R,me)})};return Do(o,{onBeforeEnter(E){ma(h,[E]),Sr(E,l),Sr(E,n)},onBeforeAppear(E){ma(v,[E]),Sr(E,d),Sr(E,s)},onEnter:I(!1),onAppear:I(!0),onLeave(E,se){E._isLeaving=!0;let Se=()=>y(E,se);Sr(E,f),Tc(),Sr(E,m),hc(()=>{!E._isLeaving||(Ir(E,f),Sr(E,p),mc(C)||xc(E,r,b,Se))}),ma(C,[E,Se])},onEnterCancelled(E){B(E,!1),ma(z,[E])},onAppearCancelled(E){B(E,!0),ma(F,[E])},onLeaveCancelled(E){y(E),ma(g,[E])}})}function cF(e){if(e==null)return null;if(so(e))return[hs(e.enter),hs(e.leave)];{let o=hs(e);return[o,o]}}function hs(e){return Da(e)}function Sr(e,o){o.split(/\s+/).forEach(t=>t&&e.classList.add(t)),(e._vtc||(e._vtc=new Set)).add(o)}function Ir(e,o){o.split(/\s+/).forEach(r=>r&&e.classList.remove(r));let{_vtc:t}=e;t&&(t.delete(o),t.size||(e._vtc=void 0))}function hc(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}var hF=0;function xc(e,o,t,r){let a=e._endId=++hF,l=()=>{a===e._endId&&r()};if(t)return setTimeout(l,t);let{type:n,timeout:i,propCount:d}=Sc(e,o);if(!n)return r();let s=n+"end",u=0,f=()=>{e.removeEventListener(s,m),l()},m=p=>{p.target===e&&++u>=d&&f()};setTimeout(()=>{u<d&&f()},i+1),e.addEventListener(s,m)}function Sc(e,o){let t=window.getComputedStyle(e),r=c=>(t[c]||"").split(", "),a=r(`${_r}Delay`),l=r(`${_r}Duration`),n=gc(a,l),i=r(`${Al}Delay`),d=r(`${Al}Duration`),s=gc(i,d),u=null,f=0,m=0;o===_r?n>0&&(u=_r,f=n,m=l.length):o===Al?s>0&&(u=Al,f=s,m=d.length):(f=Math.max(n,s),u=f>0?n>s?_r:Al:null,m=u?u===_r?l.length:d.length:0);let p=u===_r&&/\b(transform|all)(,|$)/.test(r(`${_r}Property`).toString());return{type:u,timeout:f,propCount:m,hasTransform:p}}function gc(e,o){for(;e.length<o.length;)e=e.concat(e);return Math.max(...o.map((t,r)=>wc(t)+wc(e[r])))}function wc(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function Tc(){return document.body.offsetHeight}var Rc=new WeakMap,Oc=new WeakMap,xF={name:"TransitionGroup",props:Do({},mF,{tag:String,moveClass:String}),setup(e,{slots:o}){let t=Ft(),r=Gd(),a,l;return Jd(()=>{if(!a.length)return;let n=e.moveClass||`${e.name||"v"}-move`;if(!TF(a[0].el,t.vnode.el,n))return;a.forEach(SF),a.forEach(gF);let i=a.filter(wF);Tc(),i.forEach(d=>{let s=d.el,u=s.style;Sr(s,n),u.transform=u.webkitTransform=u.transitionDuration="";let f=s._moveCb=m=>{m&&m.target!==s||(!m||/transform$/.test(m.propertyName))&&(s.removeEventListener("transitionend",f),s._moveCb=null,Ir(s,n))};s.addEventListener("transitionend",f)})}),()=>{let n=Ue(e),i=cc(n),d=n.tag||Po;a=l,l=o.default?Gn(o.default()):[];for(let s=0;s<l.length;s++){let u=l[s];u.key!=null&&La(u,Ea(u,i,r,t))}if(a)for(let s=0;s<a.length;s++){let u=a[s];La(u,Ea(u,i,r,t)),Rc.set(u,u.el.getBoundingClientRect())}return To(d,null,l)}}},Fc=xF;function SF(e){let o=e.el;o._moveCb&&o._moveCb(),o._enterCb&&o._enterCb()}function gF(e){Oc.set(e,e.el.getBoundingClientRect())}function wF(e){let o=Rc.get(e),t=Oc.get(e),r=o.left-t.left,a=o.top-t.top;if(r||a){let l=e.el.style;return l.transform=l.webkitTransform=`translate(${r}px,${a}px)`,l.transitionDuration="0s",e}}function TF(e,o,t){let r=e.cloneNode();e._vtc&&e._vtc.forEach(n=>{n.split(/\s+/).forEach(i=>i&&r.classList.remove(i))}),t.split(/\s+/).forEach(n=>n&&r.classList.add(n)),r.style.display="none";let a=o.nodeType===1?o:o.parentNode;a.appendChild(r);let{hasTransform:l}=Sc(r);return a.removeChild(r),l}var RF=Do({patchProp:fF},YO),Cc;function OF(){return Cc||(Cc=Km(RF))}var bc=(...e)=>{let o=OF().createApp(...e),{mount:t}=o;return o.mount=r=>{let a=FF(r);if(!a)return;let l=o._component;!He(l)&&!l.render&&!l.template&&(l.template=a.innerHTML),a.innerHTML="";let n=t(a,!1,a instanceof SVGElement);return a instanceof Element&&(a.removeAttribute("v-cloak"),a.setAttribute("data-v-app","")),n},o};function FF(e){return vo(e)?document.querySelector(e):e}var il=Jr(require("obsidian"));var ai=[],yc=new WeakMap;function CF(){ai.forEach(e=>e(...yc.get(e))),ai=[]}function Dl(e,...o){yc.set(e,o),!ai.includes(e)&&ai.push(e)===1&&requestAnimationFrame(CF)}function li(e,o){let{target:t}=e;for(;t;){if(t.dataset&&t.dataset[o]!==void 0)return!0;t=t.parentElement}return!1}function ni(e){return typeof e=="string"?e.endsWith("px")?Number(e.slice(0,e.length-2)):Number(e):e}function Hr(e){if(e!=null)return typeof e=="number"?`${e}px`:e.endsWith("px")?e:`${e}px`}function Va(e,o){let t=e.trim().split(/\s+/g),r={top:t[0]};switch(t.length){case 1:r.right=t[0],r.bottom=t[0],r.left=t[0];break;case 2:r.right=t[1],r.left=t[1],r.bottom=t[0];break;case 3:r.right=t[1],r.bottom=t[2],r.left=t[1];break;case 4:r.right=t[1],r.bottom=t[2],r.left=t[3];break;default:throw new Error("[seemly/getMargin]:"+e+" is not a valid value.")}return o===void 0?r:r[o]}var xs={black:"#000",silver:"#C0C0C0",gray:"#808080",white:"#FFF",maroon:"#800000",red:"#F00",purple:"#800080",fuchsia:"#F0F",green:"#008000",lime:"#0F0",olive:"#808000",yellow:"#FF0",navy:"#000080",blue:"#00F",teal:"#008080",aqua:"#0FF",transparent:"#0000"};var Qt="^\\s*",Zt="\\s*$",Vr="\\s*((\\.\\d+)|(\\d+(\\.\\d*)?))%\\s*",xt="\\s*((\\.\\d+)|(\\d+(\\.\\d*)?))\\s*",ca="([0-9A-Fa-f])",ha="([0-9A-Fa-f]{2})",YM=new RegExp(`${Qt}hsl\\s*\\(${xt},${Vr},${Vr}\\)${Zt}`),JM=new RegExp(`${Qt}hsv\\s*\\(${xt},${Vr},${Vr}\\)${Zt}`),XM=new RegExp(`${Qt}hsla\\s*\\(${xt},${Vr},${Vr},${xt}\\)${Zt}`),eB=new RegExp(`${Qt}hsva\\s*\\(${xt},${Vr},${Vr},${xt}\\)${Zt}`),bF=new RegExp(`${Qt}rgb\\s*\\(${xt},${xt},${xt}\\)${Zt}`),yF=new RegExp(`${Qt}rgba\\s*\\(${xt},${xt},${xt},${xt}\\)${Zt}`),vF=new RegExp(`${Qt}#${ca}${ca}${ca}${Zt}`),kF=new RegExp(`${Qt}#${ha}${ha}${ha}${Zt}`),AF=new RegExp(`${Qt}#${ca}${ca}${ca}${ca}${Zt}`),DF=new RegExp(`${Qt}#${ha}${ha}${ha}${ha}${Zt}`);function ut(e){return parseInt(e,16)}function Ct(e){try{let o;if(o=kF.exec(e))return[ut(o[1]),ut(o[2]),ut(o[3]),1];if(o=bF.exec(e))return[qo(o[1]),qo(o[5]),qo(o[9]),1];if(o=yF.exec(e))return[qo(o[1]),qo(o[5]),qo(o[9]),Wa(o[13])];if(o=vF.exec(e))return[ut(o[1]+o[1]),ut(o[2]+o[2]),ut(o[3]+o[3]),1];if(o=DF.exec(e))return[ut(o[1]),ut(o[2]),ut(o[3]),Wa(ut(o[4])/255)];if(o=AF.exec(e))return[ut(o[1]+o[1]),ut(o[2]+o[2]),ut(o[3]+o[3]),Wa(ut(o[4]+o[4])/255)];if(e in xs)return Ct(xs[e]);throw new Error(`[seemly/rgba]: Invalid color value ${e}.`)}catch(o){throw o}}function PF(e){return e>1?1:e<0?0:e}function Ss(e,o,t,r){return`rgba(${qo(e)}, ${qo(o)}, ${qo(t)}, ${PF(r)})`}function gs(e,o,t,r,a){return qo((e*o*(1-r)+t*r)/a)}function ge(e,o){Array.isArray(e)||(e=Ct(e)),Array.isArray(o)||(o=Ct(o));let t=e[3],r=o[3],a=Wa(t+r-t*r);return Ss(gs(e[0],t,o[0],r,a),gs(e[1],t,o[1],r,a),gs(e[2],t,o[2],r,a),a)}function oe(e,o){let[t,r,a,l=1]=Array.isArray(e)?e:Ct(e);return o.alpha?Ss(t,r,a,o.alpha):Ss(t,r,a,l)}function gr(e,o){let[t,r,a,l=1]=Array.isArray(e)?e:Ct(e),{lightness:n=1,alpha:i=1}=o;return vc([t*n,r*n,a*n,l*i])}function Wa(e){let o=Math.round(Number(e)*100)/100;return o>1?1:o<0?0:o}function qo(e){let o=Math.round(Number(e));return o>255?255:o<0?0:o}function vc(e){let[o,t,r]=e;return 3 in e?`rgba(${qo(o)}, ${qo(t)}, ${qo(r)}, ${Wa(e[3])})`:`rgba(${qo(o)}, ${qo(t)}, ${qo(r)}, 1)`}function ws(e=8){return Math.random().toString(16).slice(2,2+e)}function Ts(e,o){let t=[];for(let r=0;r<e;++r)t.push(o);return t}function ye(e,...o){if(Array.isArray(e))e.forEach(t=>ye(t,...o));else return e(...o)}var za=(e,...o)=>typeof e=="function"?e(...o):typeof e=="string"?Ia(e):typeof e=="number"?Ia(String(e)):null;var NB=new Set;function ii(e,o){console.error(`[naive/${e}]: ${o}`)}function di(e,o){throw new Error(`[naive/${e}]: ${o}`)}function ja(e){return typeof e=="string"?`s-${e}`:`n-${e}`}function uo(e){return e}function Pl(e){return e.some(o=>_a(o)?!(o.type===et||o.type===Po&&!Pl(o.children)):!0)?e:null}function Yt(e,o){return e&&Pl(e())||o()}function si(e,o,t){return e&&Pl(e(o))||t(o)}function Jt(e,o){let t=e&&Pl(e());return o(t||null)}function ui(e){return!(e&&Pl(e()))}function Ml(e){return e.replace(/#|\(|\)|,|\s/g,"_")}function BF(e){let o=0;for(let t=0;t<e.length;++t)e[t]==="&"&&++o;return o}var kc=/\s*,(?![^(]*\))\s*/g,EF=/\s+/g;function LF(e,o){let t=[];return o.split(kc).forEach(r=>{let a=BF(r);if(a){if(a===1){e.forEach(n=>{t.push(r.replace("&",n))});return}}else{e.forEach(n=>{t.push((n&&n+" ")+r)});return}let l=[r];for(;a--;){let n=[];l.forEach(i=>{e.forEach(d=>{n.push(i.replace("&",d))})}),l=n}l.forEach(n=>t.push(n))}),t}function NF(e,o){let t=[];return o.split(kc).forEach(r=>{e.forEach(a=>{t.push((a&&a+" ")+r)})}),t}function Ac(e){let o=[""];return e.forEach(t=>{t=t&&t.trim(),!!t&&(t.includes("&")?o=LF(o,t):o=NF(o,t))}),o.join(", ").replace(EF," ")}function Rs(e){if(!e)return;let o=e.parentElement;o&&o.removeChild(e)}function xa(e){return document.querySelector(`style[cssr-id="${e}"]`)}function Dc(e){let o=document.createElement("style");return o.setAttribute("cssr-id",e),o}function Bl(e){return e?/^\s*@(s|m)/.test(e):!1}var _F=/[A-Z]/g;function Pc(e){return e.replace(_F,o=>"-"+o.toLowerCase())}function IF(e,o=" "){return typeof e=="object"&&e!==null?` { +`+Object.entries(e).map(t=>o+` ${Pc(t[0])}: ${t[1]};`).join(` `)+` -`+o+"}":`: ${e};`}function TO(e,o,t){return typeof e=="function"?e({context:o.context,props:t}):e}function Rc(e,o,t,r){if(!o)return"";let a=TO(o,t,r);if(!a)return"";if(typeof a=="string")return`${e} { +`+o+"}":`: ${e};`}function HF(e,o,t){return typeof e=="function"?e({context:o.context,props:t}):e}function Mc(e,o,t,r){if(!o)return"";let a=HF(o,t,r);if(!a)return"";if(typeof a=="string")return`${e} { ${a} }`;let l=Object.keys(a);if(l.length===0)return t.config.keepEmptyBlock?e+` { }`:"";let n=e?[e+" {"]:[];return l.forEach(i=>{let d=a[i];if(i==="raw"){n.push(` `+d+` -`);return}i=Tc(i),d!=null&&n.push(` ${i}${wO(d)}`)}),e&&n.push("}"),n.join(` -`)}function Rs(e,o,t){!e||e.forEach(r=>{if(Array.isArray(r))Rs(r,o,t);else if(typeof r=="function"){let a=r(o);Array.isArray(a)?Rs(a,o,t):a&&t(a)}else r&&t(r)})}function Fc(e,o,t,r,a,l){let n=e.$,i="";if(!n||typeof n=="string")Ml(n)?i=n:o.push(n);else if(typeof n=="function"){let u=n({context:r.context,props:a});Ml(u)?i=u:o.push(u)}else if(n.before&&n.before(r.context),!n.$||typeof n.$=="string")Ml(n.$)?i=n.$:o.push(n.$);else if(n.$){let u=n.$({context:r.context,props:a});Ml(u)?i=u:o.push(u)}let d=gc(o),s=Rc(d,e.props,r,a);i?(t.push(`${i} {`),l&&s&&l.insertRule(`${i} { +`);return}i=Pc(i),d!=null&&n.push(` ${i}${IF(d)}`)}),e&&n.push("}"),n.join(` +`)}function Os(e,o,t){!e||e.forEach(r=>{if(Array.isArray(r))Os(r,o,t);else if(typeof r=="function"){let a=r(o);Array.isArray(a)?Os(a,o,t):a&&t(a)}else r&&t(r)})}function Bc(e,o,t,r,a,l){let n=e.$,i="";if(!n||typeof n=="string")Bl(n)?i=n:o.push(n);else if(typeof n=="function"){let u=n({context:r.context,props:a});Bl(u)?i=u:o.push(u)}else if(n.before&&n.before(r.context),!n.$||typeof n.$=="string")Bl(n.$)?i=n.$:o.push(n.$);else if(n.$){let u=n.$({context:r.context,props:a});Bl(u)?i=u:o.push(u)}let d=Ac(o),s=Mc(d,e.props,r,a);i?(t.push(`${i} {`),l&&s&&l.insertRule(`${i} { ${s} } -`)):(l&&s&&l.insertRule(s),!l&&s.length&&t.push(s)),e.children&&Rs(e.children,{context:r.context,props:a},u=>{if(typeof u=="string"){let f=Rc(d,{raw:u},r,a);l?l.insertRule(f):t.push(f)}else Fc(u,o,t,r,a,l)}),o.pop(),i&&t.push("}"),n&&n.after&&n.after(r.context)}function si(e,o,t,r=!1){let a=[];return Fc(e,[],a,o,t,r?e.instance.__styleSheet:void 0),r?"":a.join(` +`)):(l&&s&&l.insertRule(s),!l&&s.length&&t.push(s)),e.children&&Os(e.children,{context:r.context,props:a},u=>{if(typeof u=="string"){let f=Mc(d,{raw:u},r,a);l?l.insertRule(f):t.push(f)}else Bc(u,o,t,r,a,l)}),o.pop(),i&&t.push("}"),n&&n.after&&n.after(r.context)}function fi(e,o,t,r=!1){let a=[];return Bc(e,[],a,o,t,r?e.instance.__styleSheet:void 0),r?"":a.join(` -`)}function RO(e){for(var o=0,t,r=0,a=e.length;a>=4;++r,a-=4)t=e.charCodeAt(r)&255|(e.charCodeAt(++r)&255)<<8|(e.charCodeAt(++r)&255)<<16|(e.charCodeAt(++r)&255)<<24,t=(t&65535)*1540483477+((t>>>16)*59797<<16),t^=t>>>24,o=(t&65535)*1540483477+((t>>>16)*59797<<16)^(o&65535)*1540483477+((o>>>16)*59797<<16);switch(a){case 3:o^=(e.charCodeAt(r+2)&255)<<16;case 2:o^=(e.charCodeAt(r+1)&255)<<8;case 1:o^=e.charCodeAt(r)&255,o=(o&65535)*1540483477+((o>>>16)*59797<<16)}return o^=o>>>13,o=(o&65535)*1540483477+((o>>>16)*59797<<16),((o^o>>>15)>>>0).toString(36)}var st=RO;typeof window!="undefined"&&(window.__cssrContext={});function Oc(e,o,t){let{els:r}=o;if(t===void 0)r.forEach(Ts),o.els=[];else{let a=ua(t);a&&r.includes(a)&&(Ts(a),o.els=r.filter(l=>l!==a))}}function Cc(e,o){e.push(o)}function bc(e,o,t,r,a,l,n,i,d){if(l&&!d){if(t===void 0){console.error("[css-render/mount]: `id` is required in `silent` mode.");return}let c=window.__cssrContext;c[t]||(c[t]=!0,si(o,e,r,l));return}let s;if(t===void 0&&(s=o.render(r),t=st(s)),d){d.adapter(t,s!=null?s:o.render(r));return}let u=ua(t);if(u!==null&&!n)return u;let f=u!=null?u:wc(t);if(s===void 0&&(s=o.render(r)),f.textContent=s,u!==null)return u;if(i){let c=document.head.querySelector(`meta[name="${i}"]`);if(c)return document.head.insertBefore(f,c),Cc(o.els,f),f}return a?document.head.insertBefore(f,document.head.querySelector("style, link")):document.head.appendChild(f),Cc(o.els,f),f}function FO(e){return si(this,this.instance,e)}function OO(e={}){let{id:o,ssr:t,props:r,head:a=!1,silent:l=!1,force:n=!1,anchorMetaName:i}=e;return bc(this.instance,this,o,r,a,l,n,i,t)}function CO(e={}){let{id:o}=e;Oc(this.instance,this,o)}var ui=function(e,o,t,r){return{instance:e,$:o,props:t,children:r,els:[],render:FO,mount:OO,unmount:CO}},yc=function(e,o,t,r){return Array.isArray(o)?ui(e,{$:null},null,o):Array.isArray(t)?ui(e,o,null,t):Array.isArray(r)?ui(e,o,t,r):ui(e,o,t,null)};function fi(e={}){let o=null,t={c:(...r)=>yc(t,...r),use:(r,...a)=>r.install(t,...a),find:ua,context:{},config:e,get __styleSheet(){if(!o){let r=document.createElement("style");return document.head.appendChild(r),o=document.styleSheets[document.styleSheets.length-1],o}return o}};return t}function Fs(e,o){if(e===void 0)return!1;if(o){let{context:{ids:t}}=o;return t.has(e)}return ua(e)!==null}var vc=fi;function bO(e){let o=".",t="__",r="--",a;if(e){let x=e.blockPrefix;x&&(o=x),x=e.elementPrefix,x&&(t=x),x=e.modifierPrefix,x&&(r=x)}let l={install(x){a=x.c;let T=x.context;T.bem={},T.bem.b=null,T.bem.els=null}};function n(x){let T,C;return{before(S){T=S.bem.b,C=S.bem.els,S.bem.els=null},after(S){S.bem.b=T,S.bem.els=C},$({context:S,props:D}){return x=typeof x=="string"?x:x({context:S,props:D}),S.bem.b=x,`${(D==null?void 0:D.bPrefix)||o}${S.bem.b}`}}}function i(x){let T;return{before(C){T=C.bem.els},after(C){C.bem.els=T},$({context:C,props:S}){return x=typeof x=="string"?x:x({context:C,props:S}),C.bem.els=x.split(",").map(D=>D.trim()),C.bem.els.map(D=>`${(S==null?void 0:S.bPrefix)||o}${C.bem.b}${t}${D}`).join(", ")}}}function d(x){return{$({context:T,props:C}){x=typeof x=="string"?x:x({context:T,props:C});let S=x.split(",").map(O=>O.trim());function D(O){return S.map(g=>`&${(C==null?void 0:C.bPrefix)||o}${T.bem.b}${O!==void 0?`${t}${O}`:""}${r}${g}`).join(", ")}let j=T.bem.els;return j!==null?D(j[0]):D()}}}function s(x){return{$({context:T,props:C}){x=typeof x=="string"?x:x({context:T,props:C});let S=T.bem.els;return`&:not(${(C==null?void 0:C.bPrefix)||o}${T.bem.b}${S!==null&&S.length>0?`${t}${S[0]}`:""}${r}${x})`}}}return Object.assign(l,{cB:(...x)=>a(n(x[0]),x[1],x[2]),cE:(...x)=>a(i(x[0]),x[1],x[2]),cM:(...x)=>a(d(x[0]),x[1],x[2]),cNotM:(...x)=>a(s(x[0]),x[1],x[2])}),l}var kc=bO;function ve(e,o){return e+(o==="default"?"":o.replace(/^[a-z]/,t=>t.toUpperCase()))}ve("abc","def");var yO="n",Bl=`.${yO}-`,vO="__",kO="--",Ac=vc(),Dc=kc({blockPrefix:Bl,elementPrefix:vO,modifierPrefix:kO});Ac.use(Dc);var{c:Y,find:yB}=Ac,{cB:K,cE:J,cM:xe,cNotM:rt}=Dc;function pi(e){return Y(({props:{bPrefix:o}})=>`${o||Bl}modal, ${o||Bl}drawer`,[e])}function mi(e){return Y(({props:{bPrefix:o}})=>`${o||Bl}popover:not(${o||Bl}tooltip)`,[e])}function ci(e){let o=Z(!!e.value);if(o.value)return br(o);let t=Ze(e,r=>{r&&(o.value=!0,t())});return br(o)}function AO(e){let o=V(e),t=Z(o.value);return Ze(o,r=>{t.value=r}),typeof e=="function"?t:{__v_isRef:!0,get value(){return t.value},set value(r){e.set(r)}}}var Ye=AO;var Pc=typeof window!="undefined";var Va,Ll,DO=()=>{var e,o;Va=Pc?(o=(e=document)===null||e===void 0?void 0:e.fonts)===null||o===void 0?void 0:o.ready:void 0,Ll=!1,Va!==void 0?Va.then(()=>{Ll=!0}):Ll=!0};DO();function xi(e){if(Ll)return;let o=!1;fo(()=>{Ll||Va==null||Va.then(()=>{o||e()})}),_o(()=>{o=!0})}var PO={mousemoveoutside:new WeakMap,clickoutside:new WeakMap};function MO(e,o,t){if(e==="mousemoveoutside"){let r=a=>{o.contains(a.target)||t(a)};return{mousemove:r,touchstart:r}}else if(e==="clickoutside"){let r=!1,a=n=>{r=!o.contains(n.target)},l=n=>{!r||o.contains(n.target)||t(n)};return{mousedown:a,mouseup:l,touchstart:a,touchend:l}}return console.error(`[evtd/create-trap-handler]: name \`${e}\` is invalid. This could be a bug of evtd.`),{}}function Mc(e,o,t){let r=PO[e],a=r.get(o);a===void 0&&r.set(o,a=new WeakMap);let l=a.get(t);return l===void 0&&a.set(t,l=MO(e,o,t)),l}function Bc(e,o,t,r){if(e==="mousemoveoutside"||e==="clickoutside"){let a=Mc(e,o,t);return Object.keys(a).forEach(l=>{So(l,document,a[l],r)}),!0}return!1}function Lc(e,o,t,r){if(e==="mousemoveoutside"||e==="clickoutside"){let a=Mc(e,o,t);return Object.keys(a).forEach(l=>{xo(l,document,a[l],r)}),!0}return!1}function BO(){if(typeof window=="undefined")return{on:()=>{},off:()=>{}};let e=new WeakMap,o=new WeakMap;function t(){e.set(this,!0)}function r(){e.set(this,!0),o.set(this,!0)}function a(w,F,B){let y=w[F];return w[F]=function(){return B.apply(w,arguments),y.apply(w,arguments)},w}function l(w,F){w[F]=Event.prototype[F]}let n=new WeakMap,i=Object.getOwnPropertyDescriptor(Event.prototype,"currentTarget");function d(){var w;return(w=n.get(this))!==null&&w!==void 0?w:null}function s(w,F){i!==void 0&&Object.defineProperty(w,"currentTarget",{configurable:!0,enumerable:!0,get:F!=null?F:i.get})}let u={bubble:{},capture:{}},f={};function c(){let w=function(F){let{type:B,eventPhase:y,target:W,bubbles:_}=F;if(y===2)return;let ae=y===1?"capture":"bubble",he=W,Me=[];for(;he===null&&(he=window),Me.push(he),he!==window;)he=he.parentNode||null;let de=u.capture[B],ie=u.bubble[B];if(a(F,"stopPropagation",t),a(F,"stopImmediatePropagation",r),s(F,d),ae==="capture"){if(de===void 0)return;for(let ge=Me.length-1;ge>=0&&!e.has(F);--ge){let Ve=Me[ge],Ke=de.get(Ve);if(Ke!==void 0){n.set(F,Ve);for(let He of Ke){if(o.has(F))break;He(F)}}if(ge===0&&!_&&ie!==void 0){let He=ie.get(Ve);if(He!==void 0)for(let Je of He){if(o.has(F))break;Je(F)}}}}else if(ae==="bubble"){if(ie===void 0)return;for(let ge=0;ge<Me.length&&!e.has(F);++ge){let Ve=Me[ge],Ke=ie.get(Ve);if(Ke!==void 0){n.set(F,Ve);for(let He of Ke){if(o.has(F))break;He(F)}}}}l(F,"stopPropagation"),l(F,"stopImmediatePropagation"),s(F)};return w.displayName="evtdUnifiedHandler",w}function p(){let w=function(F){let{type:B,eventPhase:y}=F;if(y!==2)return;let W=f[B];W!==void 0&&W.forEach(_=>_(F))};return w.displayName="evtdUnifiedWindowEventHandler",w}let x=c(),T=p();function C(w,F){let B=u[w];return B[F]===void 0&&(B[F]=new Map,window.addEventListener(F,x,w==="capture")),B[F]}function S(w){return f[w]===void 0&&(f[w]=new Set,window.addEventListener(w,T)),f[w]}function D(w,F){let B=w.get(F);return B===void 0&&w.set(F,B=new Set),B}function j(w,F,B,y){let W=u[F][B];if(W!==void 0){let _=W.get(w);if(_!==void 0&&_.has(y))return!0}return!1}function O(w,F){let B=f[w];return!!(B!==void 0&&B.has(F))}function g(w,F,B,y){let W;if(typeof y=="object"&&y.once===!0?W=de=>{v(w,F,W,y),B(de)}:W=B,Bc(w,F,W,y))return;let ae=y===!0||typeof y=="object"&&y.capture===!0?"capture":"bubble",he=C(ae,w),Me=D(he,F);if(Me.has(W)||Me.add(W),F===window){let de=S(w);de.has(W)||de.add(W)}}function v(w,F,B,y){if(Lc(w,F,B,y))return;let _=y===!0||typeof y=="object"&&y.capture===!0,ae=_?"capture":"bubble",he=C(ae,w),Me=D(he,F);if(F===window&&!j(F,_?"bubble":"capture",w,B)&&O(w,B)){let ie=f[w];ie.delete(B),ie.size===0&&(window.removeEventListener(w,T),f[w]=void 0)}Me.has(B)&&Me.delete(B),Me.size===0&&he.delete(F),he.size===0&&(window.removeEventListener(w,x,ae==="capture"),u[ae][w]=void 0)}return{on:g,off:v}}var{on:So,off:xo}=BO();function Zo(e,o){return Ze(e,t=>{t!==void 0&&(o.value=t)}),V(()=>e.value===void 0?o.value:e.value)}function Er(){let e=Z(!1);return fo(()=>{e.value=!0}),br(e)}var LO=(typeof window=="undefined"?!1:/iPad|iPhone|iPod/.test(navigator.platform)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1)&&!window.MSStream;function hi(){return LO}var rL=lo("n-internal-select-menu"),Ec=lo("n-internal-select-menu-body");var Nc=lo("n-modal-body"),nL=lo("n-modal");var _c=lo("n-drawer-body"),sL=lo("n-drawer");var Ic=lo("n-popover-body");var Hc="__disabled__";function fa(e){let o=Te(Nc,null),t=Te(_c,null),r=Te(Ic,null),a=Te(Ec,null),l=Z();if(typeof document!="undefined"){l.value=document.fullscreenElement;let n=()=>{l.value=document.fullscreenElement};fo(()=>{So("fullscreenchange",document,n)}),_o(()=>{xo("fullscreenchange",document,n)})}return Ye(()=>{var n;let{to:i}=e;return i!==void 0?i===!1?Hc:i===!0?l.value||"body":i:(o==null?void 0:o.value)?(n=o.value.$el)!==null&&n!==void 0?n:o.value:(t==null?void 0:t.value)?t.value:(r==null?void 0:r.value)?r.value:(a==null?void 0:a.value)?a.value:i!=null?i:l.value||"body"})}fa.tdkey=Hc;fa.propTo={type:[String,Object,Boolean],default:void 0};function El(e,o,t="default"){let r=o[t];if(r===void 0)throw new Error(`[vueuc/${e}]: slot[${t}] is empty.`);return r()}function Os(e,o=!0,t=[]){return e.forEach(r=>{if(r!==null){if(typeof r!="object"){(typeof r=="string"||typeof r=="number")&&t.push(Ea(String(r)));return}if(Array.isArray(r)){Os(r,o,t);return}if(r.type===Co){if(r.children===null)return;Array.isArray(r.children)&&Os(r.children,o,t)}else r.type!==$o&&t.push(r)}}),t}function Cs(e,o,t="default"){let r=o[t];if(r===void 0)throw new Error(`[vueuc/${e}]: slot[${t}] is empty.`);let a=Os(r());if(a.length===1)return a[0];throw new Error(`[vueuc/${e}]: slot[${t}] should have exactly one child.`)}var Nr=null;function Wc(){if(Nr===null&&(Nr=document.getElementById("v-binder-view-measurer"),Nr===null)){Nr=document.createElement("div"),Nr.id="v-binder-view-measurer";let{style:e}=Nr;e.position="fixed",e.left="0",e.right="0",e.top="0",e.bottom="0",e.pointerEvents="none",e.visibility="hidden",document.body.appendChild(Nr)}return Nr.getBoundingClientRect()}function Vc(e,o){let t=Wc();return{top:o,left:e,height:0,width:0,right:t.width-e,bottom:t.height-o}}function Si(e){let o=e.getBoundingClientRect(),t=Wc();return{left:o.left-t.left,top:o.top-t.top,bottom:t.height+t.top-o.bottom,right:t.width+t.left-o.right,width:o.width,height:o.height}}function EO(e){return e.nodeType===9?null:e.parentNode}function bs(e){if(e===null)return null;let o=EO(e);if(o===null)return null;if(o.nodeType===9)return document;if(o.nodeType===1){let{overflow:t,overflowX:r,overflowY:a}=getComputedStyle(o);if(/(auto|scroll|overlay)/.test(t+a+r))return o}return bs(o)}var NO=le({name:"Binder",props:{syncTargetWithParent:Boolean,syncTarget:{type:Boolean,default:!0}},setup(e){var o;qo("VBinder",(o=St())===null||o===void 0?void 0:o.proxy);let t=Te("VBinder",null),r=Z(null),a=S=>{r.value=S,t&&e.syncTargetWithParent&&t.setTargetRef(S)},l=[],n=()=>{let S=r.value;for(;S=bs(S),S!==null;)l.push(S);for(let D of l)So("scroll",D,f,!0)},i=()=>{for(let S of l)xo("scroll",S,f,!0);l=[]},d=new Set,s=S=>{d.size===0&&n(),d.has(S)||d.add(S)},u=S=>{d.has(S)&&d.delete(S),d.size===0&&i()},f=()=>{Al(c)},c=()=>{d.forEach(S=>S())},p=new Set,x=S=>{p.size===0&&So("resize",window,C),p.has(S)||p.add(S)},T=S=>{p.has(S)&&p.delete(S),p.size===0&&xo("resize",window,C)},C=()=>{p.forEach(S=>S())};return _o(()=>{xo("resize",window,C),i()}),{targetRef:r,setTargetRef:a,addScrollListener:s,removeScrollListener:u,addResizeListener:x,removeResizeListener:T}},render(){return El("binder",this.$slots)}}),gi=NO;var wi=le({name:"Target",setup(){let{setTargetRef:e,syncTarget:o}=Te("VBinder");return{syncTarget:o,setTargetDirective:{mounted:e,updated:e}}},render(){let{syncTarget:e,setTargetDirective:o}=this;return e?qn(Cs("follower",this.$slots),[[o]]):Cs("follower",this.$slots)}});var BL=new Set;function zc(e,o){console.error(`[vdirs/${e}]: ${o}`)}var jc=class{constructor(){this.elementZIndex=new Map,this.nextZIndex=2e3}get elementCount(){return this.elementZIndex.size}ensureZIndex(o,t){let{elementZIndex:r}=this;if(t!==void 0){o.style.zIndex=`${t}`,r.delete(o);return}let{nextZIndex:a}=this;r.has(o)&&r.get(o)+1===this.nextZIndex||(o.style.zIndex=`${a}`,r.set(o,a),this.nextZIndex=a+1,this.squashState())}unregister(o,t){let{elementZIndex:r}=this;r.has(o)?r.delete(o):t===void 0&&zc("z-index-manager/unregister-element","Element not found when unregistering."),this.squashState()}squashState(){let{elementCount:o}=this;o||(this.nextZIndex=2e3),this.nextZIndex-o>2500&&this.rearrange()}rearrange(){let o=Array.from(this.elementZIndex.entries());o.sort((t,r)=>t[1]-r[1]),this.nextZIndex=2e3,o.forEach(t=>{let r=t[0],a=this.nextZIndex++;`${a}`!==r.style.zIndex&&(r.style.zIndex=`${a}`)})}},Ti=new jc;var za="@@ziContext",_O={mounted(e,o){let{value:t={}}=o,{zIndex:r,enabled:a}=t;e[za]={enabled:!!a,initialized:!1},a&&(Ti.ensureZIndex(e,r),e[za].initialized=!0)},updated(e,o){let{value:t={}}=o,{zIndex:r,enabled:a}=t,l=e[za].enabled;a&&!l&&(Ti.ensureZIndex(e,r),e[za].initialized=!0),e[za].enabled=!!a},unmounted(e,o){if(!e[za].initialized)return;let{value:t={}}=o,{zIndex:r}=t;Ti.unregister(e,r)}},ys=_O;var $c=Symbol("@css-render/vue3-ssr");function IO(e,o){return`<style cssr-id="${e}"> +`)}function VF(e){for(var o=0,t,r=0,a=e.length;a>=4;++r,a-=4)t=e.charCodeAt(r)&255|(e.charCodeAt(++r)&255)<<8|(e.charCodeAt(++r)&255)<<16|(e.charCodeAt(++r)&255)<<24,t=(t&65535)*1540483477+((t>>>16)*59797<<16),t^=t>>>24,o=(t&65535)*1540483477+((t>>>16)*59797<<16)^(o&65535)*1540483477+((o>>>16)*59797<<16);switch(a){case 3:o^=(e.charCodeAt(r+2)&255)<<16;case 2:o^=(e.charCodeAt(r+1)&255)<<8;case 1:o^=e.charCodeAt(r)&255,o=(o&65535)*1540483477+((o>>>16)*59797<<16)}return o^=o>>>13,o=(o&65535)*1540483477+((o>>>16)*59797<<16),((o^o>>>15)>>>0).toString(36)}var St=VF;typeof window!="undefined"&&(window.__cssrContext={});function Ec(e,o,t){let{els:r}=o;if(t===void 0)r.forEach(Rs),o.els=[];else{let a=xa(t);a&&r.includes(a)&&(Rs(a),o.els=r.filter(l=>l!==a))}}function Lc(e,o){e.push(o)}function Nc(e,o,t,r,a,l,n,i,d){if(l&&!d){if(t===void 0){console.error("[css-render/mount]: `id` is required in `silent` mode.");return}let m=window.__cssrContext;m[t]||(m[t]=!0,fi(o,e,r,l));return}let s;if(t===void 0&&(s=o.render(r),t=St(s)),d){d.adapter(t,s!=null?s:o.render(r));return}let u=xa(t);if(u!==null&&!n)return u;let f=u!=null?u:Dc(t);if(s===void 0&&(s=o.render(r)),f.textContent=s,u!==null)return u;if(i){let m=document.head.querySelector(`meta[name="${i}"]`);if(m)return document.head.insertBefore(f,m),Lc(o.els,f),f}return a?document.head.insertBefore(f,document.head.querySelector("style, link")):document.head.appendChild(f),Lc(o.els,f),f}function WF(e){return fi(this,this.instance,e)}function zF(e={}){let{id:o,ssr:t,props:r,head:a=!1,silent:l=!1,force:n=!1,anchorMetaName:i}=e;return Nc(this.instance,this,o,r,a,l,n,i,t)}function jF(e={}){let{id:o}=e;Ec(this.instance,this,o)}var pi=function(e,o,t,r){return{instance:e,$:o,props:t,children:r,els:[],render:WF,mount:zF,unmount:jF}},_c=function(e,o,t,r){return Array.isArray(o)?pi(e,{$:null},null,o):Array.isArray(t)?pi(e,o,null,t):Array.isArray(r)?pi(e,o,t,r):pi(e,o,t,null)};function mi(e={}){let o=null,t={c:(...r)=>_c(t,...r),use:(r,...a)=>r.install(t,...a),find:xa,context:{},config:e,get __styleSheet(){if(!o){let r=document.createElement("style");return document.head.appendChild(r),o=document.styleSheets[document.styleSheets.length-1],o}return o}};return t}function Fs(e,o){if(e===void 0)return!1;if(o){let{context:{ids:t}}=o;return t.has(e)}return xa(e)!==null}var Ic=mi;function $F(e){let o=".",t="__",r="--",a;if(e){let c=e.blockPrefix;c&&(o=c),c=e.elementPrefix,c&&(t=c),c=e.modifierPrefix,c&&(r=c)}let l={install(c){a=c.c;let R=c.context;R.bem={},R.bem.b=null,R.bem.els=null}};function n(c){let R,b;return{before(h){R=h.bem.b,b=h.bem.els,h.bem.els=null},after(h){h.bem.b=R,h.bem.els=b},$({context:h,props:k}){return c=typeof c=="string"?c:c({context:h,props:k}),h.bem.b=c,`${(k==null?void 0:k.bPrefix)||o}${h.bem.b}`}}}function i(c){let R;return{before(b){R=b.bem.els},after(b){b.bem.els=R},$({context:b,props:h}){return c=typeof c=="string"?c:c({context:b,props:h}),b.bem.els=c.split(",").map(k=>k.trim()),b.bem.els.map(k=>`${(h==null?void 0:h.bPrefix)||o}${b.bem.b}${t}${k}`).join(", ")}}}function d(c){return{$({context:R,props:b}){c=typeof c=="string"?c:c({context:R,props:b});let h=c.split(",").map(C=>C.trim());function k(C){return h.map(g=>`&${(b==null?void 0:b.bPrefix)||o}${R.bem.b}${C!==void 0?`${t}${C}`:""}${r}${g}`).join(", ")}let z=R.bem.els;return z!==null?k(z[0]):k()}}}function s(c){return{$({context:R,props:b}){c=typeof c=="string"?c:c({context:R,props:b});let h=R.bem.els;return`&:not(${(b==null?void 0:b.bPrefix)||o}${R.bem.b}${h!==null&&h.length>0?`${t}${h[0]}`:""}${r}${c})`}}}return Object.assign(l,{cB:(...c)=>a(n(c[0]),c[1],c[2]),cE:(...c)=>a(i(c[0]),c[1],c[2]),cM:(...c)=>a(d(c[0]),c[1],c[2]),cNotM:(...c)=>a(s(c[0]),c[1],c[2])}),l}var Hc=$F;function Me(e,o){return e+(o==="default"?"":o.replace(/^[a-z]/,t=>t.toUpperCase()))}Me("abc","def");var UF="n",El=`.${UF}-`,KF="__",GF="--",Vc=Ic(),Wc=Hc({blockPrefix:El,elementPrefix:KF,modifierPrefix:GF});Vc.use(Wc);var{c:Y,find:AE}=Vc,{cB:$,cE:X,cM:Te,cNotM:ft}=Wc;function ci(e){return Y(({props:{bPrefix:o}})=>`${o||El}modal, ${o||El}drawer`,[e])}function hi(e){return Y(({props:{bPrefix:o}})=>`${o||El}popover:not(${o||El}tooltip)`,[e])}function xi(e){let o=Q(!!e.value);if(o.value)return Mr(o);let t=lo(e,r=>{r&&(o.value=!0,t())});return Mr(o)}function qF(e){let o=W(e),t=Q(o.value);return lo(o,r=>{t.value=r}),typeof e=="function"?t:{__v_isRef:!0,get value(){return t.value},set value(r){e.set(r)}}}var to=qF;var zc=typeof window!="undefined";var $a,Ll,QF=()=>{var e,o;$a=zc?(o=(e=document)===null||e===void 0?void 0:e.fonts)===null||o===void 0?void 0:o.ready:void 0,Ll=!1,$a!==void 0?$a.then(()=>{Ll=!0}):Ll=!0};QF();function Si(e){if(Ll)return;let o=!1;no(()=>{Ll||$a==null||$a.then(()=>{o||e()})}),Ko(()=>{o=!0})}var ZF={mousemoveoutside:new WeakMap,clickoutside:new WeakMap};function YF(e,o,t){if(e==="mousemoveoutside"){let r=a=>{o.contains(a.target)||t(a)};return{mousemove:r,touchstart:r}}else if(e==="clickoutside"){let r=!1,a=n=>{r=!o.contains(n.target)},l=n=>{!r||o.contains(n.target)||t(n)};return{mousedown:a,mouseup:l,touchstart:a,touchend:l}}return console.error(`[evtd/create-trap-handler]: name \`${e}\` is invalid. This could be a bug of evtd.`),{}}function jc(e,o,t){let r=ZF[e],a=r.get(o);a===void 0&&r.set(o,a=new WeakMap);let l=a.get(t);return l===void 0&&a.set(t,l=YF(e,o,t)),l}function $c(e,o,t,r){if(e==="mousemoveoutside"||e==="clickoutside"){let a=jc(e,o,t);return Object.keys(a).forEach(l=>{Fo(l,document,a[l],r)}),!0}return!1}function Uc(e,o,t,r){if(e==="mousemoveoutside"||e==="clickoutside"){let a=jc(e,o,t);return Object.keys(a).forEach(l=>{Oo(l,document,a[l],r)}),!0}return!1}function JF(){if(typeof window=="undefined")return{on:()=>{},off:()=>{}};let e=new WeakMap,o=new WeakMap;function t(){e.set(this,!0)}function r(){e.set(this,!0),o.set(this,!0)}function a(S,F,B){let y=S[F];return S[F]=function(){return B.apply(S,arguments),y.apply(S,arguments)},S}function l(S,F){S[F]=Event.prototype[F]}let n=new WeakMap,i=Object.getOwnPropertyDescriptor(Event.prototype,"currentTarget");function d(){var S;return(S=n.get(this))!==null&&S!==void 0?S:null}function s(S,F){i!==void 0&&Object.defineProperty(S,"currentTarget",{configurable:!0,enumerable:!0,get:F!=null?F:i.get})}let u={bubble:{},capture:{}},f={};function m(){let S=function(F){let{type:B,eventPhase:y,target:I,bubbles:E}=F;if(y===2)return;let se=y===1?"capture":"bubble",Se=I,Ee=[];for(;Se===null&&(Se=window),Ee.push(Se),Se!==window;)Se=Se.parentNode||null;let me=u.capture[B],ue=u.bubble[B];if(a(F,"stopPropagation",t),a(F,"stopImmediatePropagation",r),s(F,d),se==="capture"){if(me===void 0)return;for(let Fe=Ee.length-1;Fe>=0&&!e.has(F);--Fe){let Ge=Ee[Fe],Ye=me.get(Ge);if(Ye!==void 0){n.set(F,Ge);for(let $e of Ye){if(o.has(F))break;$e(F)}}if(Fe===0&&!E&&ue!==void 0){let $e=ue.get(Ge);if($e!==void 0)for(let ro of $e){if(o.has(F))break;ro(F)}}}}else if(se==="bubble"){if(ue===void 0)return;for(let Fe=0;Fe<Ee.length&&!e.has(F);++Fe){let Ge=Ee[Fe],Ye=ue.get(Ge);if(Ye!==void 0){n.set(F,Ge);for(let $e of Ye){if(o.has(F))break;$e(F)}}}}l(F,"stopPropagation"),l(F,"stopImmediatePropagation"),s(F)};return S.displayName="evtdUnifiedHandler",S}function p(){let S=function(F){let{type:B,eventPhase:y}=F;if(y!==2)return;let I=f[B];I!==void 0&&I.forEach(E=>E(F))};return S.displayName="evtdUnifiedWindowEventHandler",S}let c=m(),R=p();function b(S,F){let B=u[S];return B[F]===void 0&&(B[F]=new Map,window.addEventListener(F,c,S==="capture")),B[F]}function h(S){return f[S]===void 0&&(f[S]=new Set,window.addEventListener(S,R)),f[S]}function k(S,F){let B=S.get(F);return B===void 0&&S.set(F,B=new Set),B}function z(S,F,B,y){let I=u[F][B];if(I!==void 0){let E=I.get(S);if(E!==void 0&&E.has(y))return!0}return!1}function C(S,F){let B=f[S];return!!(B!==void 0&&B.has(F))}function g(S,F,B,y){let I;if(typeof y=="object"&&y.once===!0?I=me=>{v(S,F,I,y),B(me)}:I=B,$c(S,F,I,y))return;let se=y===!0||typeof y=="object"&&y.capture===!0?"capture":"bubble",Se=b(se,S),Ee=k(Se,F);if(Ee.has(I)||Ee.add(I),F===window){let me=h(S);me.has(I)||me.add(I)}}function v(S,F,B,y){if(Uc(S,F,B,y))return;let E=y===!0||typeof y=="object"&&y.capture===!0,se=E?"capture":"bubble",Se=b(se,S),Ee=k(Se,F);if(F===window&&!z(F,E?"bubble":"capture",S,B)&&C(S,B)){let ue=f[S];ue.delete(B),ue.size===0&&(window.removeEventListener(S,R),f[S]=void 0)}Ee.has(B)&&Ee.delete(B),Ee.size===0&&Se.delete(F),Se.size===0&&(window.removeEventListener(S,c,se==="capture"),u[se][S]=void 0)}return{on:g,off:v}}var{on:Fo,off:Oo}=JF();function lt(e,o){return lo(e,t=>{t!==void 0&&(o.value=t)}),W(()=>e.value===void 0?o.value:e.value)}function Wr(){let e=Q(!1);return no(()=>{e.value=!0}),Mr(e)}var XF=(typeof window=="undefined"?!1:/iPad|iPhone|iPod/.test(navigator.platform)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1)&&!window.MSStream;function gi(){return XF}var nL=uo("n-internal-select-menu"),Kc=uo("n-internal-select-menu-body");var Gc=uo("n-modal-body"),sL=uo("n-modal");var qc=uo("n-drawer-body"),pL=uo("n-drawer");var Qc=uo("n-popover-body");var Zc="__disabled__";function Sa(e){let o=be(Gc,null),t=be(qc,null),r=be(Qc,null),a=be(Kc,null),l=Q();if(typeof document!="undefined"){l.value=document.fullscreenElement;let n=()=>{l.value=document.fullscreenElement};no(()=>{Fo("fullscreenchange",document,n)}),Ko(()=>{Oo("fullscreenchange",document,n)})}return to(()=>{var n;let{to:i}=e;return i!==void 0?i===!1?Zc:i===!0?l.value||"body":i:(o==null?void 0:o.value)?(n=o.value.$el)!==null&&n!==void 0?n:o.value:(t==null?void 0:t.value)?t.value:(r==null?void 0:r.value)?r.value:(a==null?void 0:a.value)?a.value:i!=null?i:l.value||"body"})}Sa.tdkey=Zc;Sa.propTo={type:[String,Object,Boolean],default:void 0};function Nl(e,o,t="default"){let r=o[t];if(r===void 0)throw new Error(`[vueuc/${e}]: slot[${t}] is empty.`);return r()}function Cs(e,o=!0,t=[]){return e.forEach(r=>{if(r!==null){if(typeof r!="object"){(typeof r=="string"||typeof r=="number")&&t.push(Ia(String(r)));return}if(Array.isArray(r)){Cs(r,o,t);return}if(r.type===Po){if(r.children===null)return;Array.isArray(r.children)&&Cs(r.children,o,t)}else r.type!==et&&t.push(r)}}),t}function bs(e,o,t="default"){let r=o[t];if(r===void 0)throw new Error(`[vueuc/${e}]: slot[${t}] is empty.`);let a=Cs(r());if(a.length===1)return a[0];throw new Error(`[vueuc/${e}]: slot[${t}] should have exactly one child.`)}var zr=null;function Yc(){if(zr===null&&(zr=document.getElementById("v-binder-view-measurer"),zr===null)){zr=document.createElement("div"),zr.id="v-binder-view-measurer";let{style:e}=zr;e.position="fixed",e.left="0",e.right="0",e.top="0",e.bottom="0",e.pointerEvents="none",e.visibility="hidden",document.body.appendChild(zr)}return zr.getBoundingClientRect()}function Jc(e,o){let t=Yc();return{top:o,left:e,height:0,width:0,right:t.width-e,bottom:t.height-o}}function wi(e){let o=e.getBoundingClientRect(),t=Yc();return{left:o.left-t.left,top:o.top-t.top,bottom:t.height+t.top-o.bottom,right:t.width+t.left-o.right,width:o.width,height:o.height}}function eC(e){return e.nodeType===9?null:e.parentNode}function ys(e){if(e===null)return null;let o=eC(e);if(o===null)return null;if(o.nodeType===9)return document;if(o.nodeType===1){let{overflow:t,overflowX:r,overflowY:a}=getComputedStyle(o);if(/(auto|scroll|overlay)/.test(t+a+r))return o}return ys(o)}var oC=re({name:"Binder",props:{syncTargetWithParent:Boolean,syncTarget:{type:Boolean,default:!0}},setup(e){var o;rt("VBinder",(o=Ft())===null||o===void 0?void 0:o.proxy);let t=be("VBinder",null),r=Q(null),a=h=>{r.value=h,t&&e.syncTargetWithParent&&t.setTargetRef(h)},l=[],n=()=>{let h=r.value;for(;h=ys(h),h!==null;)l.push(h);for(let k of l)Fo("scroll",k,f,!0)},i=()=>{for(let h of l)Oo("scroll",h,f,!0);l=[]},d=new Set,s=h=>{d.size===0&&n(),d.has(h)||d.add(h)},u=h=>{d.has(h)&&d.delete(h),d.size===0&&i()},f=()=>{Dl(m)},m=()=>{d.forEach(h=>h())},p=new Set,c=h=>{p.size===0&&Fo("resize",window,b),p.has(h)||p.add(h)},R=h=>{p.has(h)&&p.delete(h),p.size===0&&Oo("resize",window,b)},b=()=>{p.forEach(h=>h())};return Ko(()=>{Oo("resize",window,b),i()}),{targetRef:r,setTargetRef:a,addScrollListener:s,removeScrollListener:u,addResizeListener:c,removeResizeListener:R}},render(){return Nl("binder",this.$slots)}}),Ti=oC;var Ri=re({name:"Target",setup(){let{setTargetRef:e,syncTarget:o}=be("VBinder");return{syncTarget:o,setTargetDirective:{mounted:e,updated:e}}},render(){let{syncTarget:e,setTargetDirective:o}=this;return e?Zn(bs("follower",this.$slots),[[o]]):bs("follower",this.$slots)}});var NL=new Set;function Xc(e,o){console.error(`[vdirs/${e}]: ${o}`)}var eh=class{constructor(){this.elementZIndex=new Map,this.nextZIndex=2e3}get elementCount(){return this.elementZIndex.size}ensureZIndex(o,t){let{elementZIndex:r}=this;if(t!==void 0){o.style.zIndex=`${t}`,r.delete(o);return}let{nextZIndex:a}=this;r.has(o)&&r.get(o)+1===this.nextZIndex||(o.style.zIndex=`${a}`,r.set(o,a),this.nextZIndex=a+1,this.squashState())}unregister(o,t){let{elementZIndex:r}=this;r.has(o)?r.delete(o):t===void 0&&Xc("z-index-manager/unregister-element","Element not found when unregistering."),this.squashState()}squashState(){let{elementCount:o}=this;o||(this.nextZIndex=2e3),this.nextZIndex-o>2500&&this.rearrange()}rearrange(){let o=Array.from(this.elementZIndex.entries());o.sort((t,r)=>t[1]-r[1]),this.nextZIndex=2e3,o.forEach(t=>{let r=t[0],a=this.nextZIndex++;`${a}`!==r.style.zIndex&&(r.style.zIndex=`${a}`)})}},Oi=new eh;var Ua="@@ziContext",tC={mounted(e,o){let{value:t={}}=o,{zIndex:r,enabled:a}=t;e[Ua]={enabled:!!a,initialized:!1},a&&(Oi.ensureZIndex(e,r),e[Ua].initialized=!0)},updated(e,o){let{value:t={}}=o,{zIndex:r,enabled:a}=t,l=e[Ua].enabled;a&&!l&&(Oi.ensureZIndex(e,r),e[Ua].initialized=!0),e[Ua].enabled=!!a},unmounted(e,o){if(!e[Ua].initialized)return;let{value:t={}}=o,{zIndex:r}=t;Oi.unregister(e,r)}},vs=tC;var oh=Symbol("@css-render/vue3-ssr");function rC(e,o){return`<style cssr-id="${e}"> ${o} -</style>`}function HO(e,o){let t=Te($c,null);if(t===null){console.error("[css-render/vue3-ssr]: no ssr context found.");return}let{styles:r,ids:a}=t;a.has(e)||r!==null&&(a.add(e),r.push(IO(e,o)))}function wt(){let e=Te($c,null);if(e!==null)return{adapter:HO,context:e}}function Ri(e,o){console.error(`[vueuc/${e}]: ${o}`)}var{c:Gt}=fi();var Nl="vueuc-style";function Uc(e){return e&-e}var Fi=class{constructor(o,t){this.l=o,this.min=t;let r=new Array(o+1);for(let a=0;a<o+1;++a)r[a]=0;this.ft=r}add(o,t){if(t===0)return;let{l:r,ft:a}=this;for(o+=1;o<=r;)a[o]+=t,o+=Uc(o)}get(o){return this.sum(o+1)-this.sum(o)}sum(o){if(o===0)return 0;let{ft:t,min:r,l:a}=this;if(o===void 0&&(o=a),o>a)throw new Error("[FinweckTree.sum]: `i` is larger than length.");let l=o*r;for(;o>0;)l+=t[o],o-=Uc(o);return l}getBound(o){let t=0,r=this.l;for(;r>t;){let a=Math.floor((t+r)/2),l=this.sum(a);if(l>o){r=a;continue}else if(l<o){if(t===a)return this.sum(t+1)<=o?t+1:a;t=a}else return a}return t}};var Kc=le({name:"LazyTeleport",props:{to:{type:[String,Object],default:void 0},disabled:Boolean,show:{type:Boolean,required:!0}},setup(e){return{showTeleport:ci(De(e,"show")),mergedTo:V(()=>{let{to:o}=e;return o!=null?o:"body"})}},render(){return this.showTeleport?this.disabled?El("lazy-teleport",this.$slots):R(_m,{disabled:this.disabled,to:this.mergedTo},El("lazy-teleport",this.$slots)):null}});var Oi={top:"bottom",bottom:"top",left:"right",right:"left"},Gc={start:"end",center:"center",end:"start"},vs={top:"height",bottom:"height",left:"width",right:"width"},WO={"bottom-start":"top left",bottom:"top center","bottom-end":"top right","top-start":"bottom left",top:"bottom center","top-end":"bottom right","right-start":"top left",right:"center left","right-end":"bottom left","left-start":"top right",left:"center right","left-end":"bottom right"},VO={"bottom-start":"bottom left",bottom:"bottom center","bottom-end":"bottom right","top-start":"top left",top:"top center","top-end":"top right","right-start":"top right",right:"center right","right-end":"bottom right","left-start":"top left",left:"center left","left-end":"bottom left"},zO={"bottom-start":"right","bottom-end":"left","top-start":"right","top-end":"left","right-start":"bottom","right-end":"top","left-start":"bottom","left-end":"top"},qc={top:!0,bottom:!1,left:!0,right:!1},Qc={top:"end",bottom:"start",left:"end",right:"start"};function Zc(e,o,t,r,a,l){if(!a||l)return{placement:e,top:0,left:0};let[n,i]=e.split("-"),d=i!=null?i:"center",s={top:0,left:0},u=(p,x,T)=>{let C=0,S=0,D=t[p]-o[x]-o[p];return D>0&&r&&(T?S=qc[x]?D:-D:C=qc[x]?D:-D),{left:C,top:S}},f=n==="left"||n==="right";if(d!=="center"){let p=zO[e],x=Oi[p],T=vs[p];if(t[T]>o[T]){if(o[p]+o[T]<t[T]){let C=(t[T]-o[T])/2;o[p]<C||o[x]<C?o[p]<o[x]?(d=Gc[i],s=u(T,x,f)):s=u(T,p,f):d="center"}}else t[T]<o[T]&&o[x]<0&&o[p]>o[x]&&(d=Gc[i])}else{let p=n==="bottom"||n==="top"?"left":"top",x=Oi[p],T=vs[p],C=(t[T]-o[T])/2;(o[p]<C||o[x]<C)&&(o[p]>o[x]?(d=Qc[p],s=u(T,p,f)):(d=Qc[x],s=u(T,x,f)))}let c=n;return o[n]<t[vs[n]]&&o[n]<o[Oi[n]]&&(c=Oi[n]),{placement:d!=="center"?`${c}-${d}`:c,left:s.left,top:s.top}}function Yc(e,o){return o?VO[e]:WO[e]}function Jc(e,o,t,r,a,l){if(l)switch(e){case"bottom-start":return{top:`${Math.round(t.top-o.top+t.height)}px`,left:`${Math.round(t.left-o.left)}px`,transform:"translateY(-100%)"};case"bottom-end":return{top:`${Math.round(t.top-o.top+t.height)}px`,left:`${Math.round(t.left-o.left+t.width)}px`,transform:"translateX(-100%) translateY(-100%)"};case"top-start":return{top:`${Math.round(t.top-o.top)}px`,left:`${Math.round(t.left-o.left)}px`,transform:""};case"top-end":return{top:`${Math.round(t.top-o.top)}px`,left:`${Math.round(t.left-o.left+t.width)}px`,transform:"translateX(-100%)"};case"right-start":return{top:`${Math.round(t.top-o.top)}px`,left:`${Math.round(t.left-o.left+t.width)}px`,transform:"translateX(-100%)"};case"right-end":return{top:`${Math.round(t.top-o.top+t.height)}px`,left:`${Math.round(t.left-o.left+t.width)}px`,transform:"translateX(-100%) translateY(-100%)"};case"left-start":return{top:`${Math.round(t.top-o.top)}px`,left:`${Math.round(t.left-o.left)}px`,transform:""};case"left-end":return{top:`${Math.round(t.top-o.top+t.height)}px`,left:`${Math.round(t.left-o.left)}px`,transform:"translateY(-100%)"};case"top":return{top:`${Math.round(t.top-o.top)}px`,left:`${Math.round(t.left-o.left+t.width/2)}px`,transform:"translateX(-50%)"};case"right":return{top:`${Math.round(t.top-o.top+t.height/2)}px`,left:`${Math.round(t.left-o.left+t.width)}px`,transform:"translateX(-100%) translateY(-50%)"};case"left":return{top:`${Math.round(t.top-o.top+t.height/2)}px`,left:`${Math.round(t.left-o.left)}px`,transform:"translateY(-50%)"};case"bottom":default:return{top:`${Math.round(t.top-o.top+t.height)}px`,left:`${Math.round(t.left-o.left+t.width/2)}px`,transform:"translateX(-50%) translateY(-100%)"}}switch(e){case"bottom-start":return{top:`${Math.round(t.top-o.top+t.height+r)}px`,left:`${Math.round(t.left-o.left+a)}px`,transform:""};case"bottom-end":return{top:`${Math.round(t.top-o.top+t.height+r)}px`,left:`${Math.round(t.left-o.left+t.width+a)}px`,transform:"translateX(-100%)"};case"top-start":return{top:`${Math.round(t.top-o.top+r)}px`,left:`${Math.round(t.left-o.left+a)}px`,transform:"translateY(-100%)"};case"top-end":return{top:`${Math.round(t.top-o.top+r)}px`,left:`${Math.round(t.left-o.left+t.width+a)}px`,transform:"translateX(-100%) translateY(-100%)"};case"right-start":return{top:`${Math.round(t.top-o.top+r)}px`,left:`${Math.round(t.left-o.left+t.width+a)}px`,transform:""};case"right-end":return{top:`${Math.round(t.top-o.top+t.height+r)}px`,left:`${Math.round(t.left-o.left+t.width+a)}px`,transform:"translateY(-100%)"};case"left-start":return{top:`${Math.round(t.top-o.top+r)}px`,left:`${Math.round(t.left-o.left+a)}px`,transform:"translateX(-100%)"};case"left-end":return{top:`${Math.round(t.top-o.top+t.height+r)}px`,left:`${Math.round(t.left-o.left+a)}px`,transform:"translateX(-100%) translateY(-100%)"};case"top":return{top:`${Math.round(t.top-o.top+r)}px`,left:`${Math.round(t.left-o.left+t.width/2+a)}px`,transform:"translateY(-100%) translateX(-50%)"};case"right":return{top:`${Math.round(t.top-o.top+t.height/2+r)}px`,left:`${Math.round(t.left-o.left+t.width+a)}px`,transform:"translateY(-50%)"};case"left":return{top:`${Math.round(t.top-o.top+t.height/2+r)}px`,left:`${Math.round(t.left-o.left+a)}px`,transform:"translateY(-50%) translateX(-100%)"};case"bottom":default:return{top:`${Math.round(t.top-o.top+t.height+r)}px`,left:`${Math.round(t.left-o.left+t.width/2+a)}px`,transform:"translateX(-50%)"}}}var jO=Gt([Gt(".v-binder-follower-container",{position:"absolute",left:"0",right:"0",top:"0",height:"0",pointerEvents:"none",zIndex:"auto"}),Gt(".v-binder-follower-content",{position:"absolute",zIndex:"auto"},[Gt("> *",{pointerEvents:"all"})])]),Ci=le({name:"Follower",inheritAttrs:!1,props:{show:Boolean,enabled:{type:Boolean,default:void 0},placement:{type:String,default:"bottom"},syncTrigger:{type:Array,default:["resize","scroll"]},to:[String,Object],flip:{type:Boolean,default:!0},internalShift:Boolean,x:Number,y:Number,width:String,minWidth:String,containerClass:String,teleportDisabled:Boolean,zindexable:{type:Boolean,default:!0},zIndex:Number,overlap:Boolean},setup(e){let o=Te("VBinder"),t=Ye(()=>e.enabled!==void 0?e.enabled:e.show),r=Z(null),a=Z(null),l=()=>{let{syncTrigger:c}=e;c.includes("scroll")&&o.addScrollListener(d),c.includes("resize")&&o.addResizeListener(d)},n=()=>{o.removeScrollListener(d),o.removeResizeListener(d)};fo(()=>{t.value&&(d(),l())});let i=wt();jO.mount({id:"vueuc/binder",head:!0,anchorMetaName:Nl,ssr:i}),_o(()=>{n()}),xi(()=>{t.value&&d()});let d=()=>{if(!t.value)return;let c=r.value;if(c===null)return;let p=o.targetRef,{x,y:T,overlap:C}=e,S=x!==void 0&&T!==void 0?Vc(x,T):Si(p);c.style.setProperty("--v-target-width",`${Math.round(S.width)}px`),c.style.setProperty("--v-target-height",`${Math.round(S.height)}px`);let{width:D,minWidth:j,placement:O,internalShift:g,flip:v}=e;c.setAttribute("v-placement",O),C?c.setAttribute("v-overlap",""):c.removeAttribute("v-overlap");let{style:w}=c;D==="target"?w.width=`${S.width}px`:D!==void 0?w.width=D:w.width="",j==="target"?w.minWidth=`${S.width}px`:j!==void 0?w.minWidth=j:w.minWidth="";let F=Si(c),B=Si(a.value),{left:y,top:W,placement:_}=Zc(O,S,F,g,v,C),ae=Yc(_,C),{left:he,top:Me,transform:de}=Jc(_,B,S,W,y,C);c.setAttribute("v-placement",_),c.style.setProperty("--v-offset-left",`${Math.round(y)}px`),c.style.setProperty("--v-offset-top",`${Math.round(W)}px`),c.style.transform=`translateX(${he}) translateY(${Me}) ${de}`,c.style.transformOrigin=ae};Ze(t,c=>{c?(l(),s()):n()});let s=()=>{No().then(d).catch(c=>console.error(c))};["placement","x","y","internalShift","flip","width","overlap","minWidth"].forEach(c=>{Ze(De(e,c),d)}),["teleportDisabled"].forEach(c=>{Ze(De(e,c),s)}),Ze(De(e,"syncTrigger"),c=>{c.includes("resize")?o.addResizeListener(d):o.removeResizeListener(d),c.includes("scroll")?o.addScrollListener(d):o.removeScrollListener(d)});let u=Er(),f=Ye(()=>{let{to:c}=e;if(c!==void 0)return c;!u.value});return{VBinder:o,mergedEnabled:t,offsetContainerRef:a,followerRef:r,mergedTo:f,syncPosition:d}},render(){return R(Kc,{show:this.show,to:this.mergedTo,disabled:this.teleportDisabled},{default:()=>{var e,o;let t=R("div",{class:["v-binder-follower-container",this.containerClass],ref:"offsetContainerRef"},[R("div",{class:"v-binder-follower-content",ref:"followerRef"},(o=(e=this.$slots).default)===null||o===void 0?void 0:o.call(e))]);return this.zindexable?qn(t,[[ys,{enabled:this.mergedEnabled,zIndex:this.zIndex}]]):t}})}});var Tt=[];var Xc=function(){return Tt.some(function(e){return e.activeTargets.length>0})};var ex=function(){return Tt.some(function(e){return e.skippedTargets.length>0})};var ox="ResizeObserver loop completed with undelivered notifications.",tx=function(){var e;typeof ErrorEvent=="function"?e=new ErrorEvent("error",{message:ox}):(e=document.createEvent("Event"),e.initEvent("error",!1,!1),e.message=ox),window.dispatchEvent(e)};var pa;(function(e){e.BORDER_BOX="border-box",e.CONTENT_BOX="content-box",e.DEVICE_PIXEL_CONTENT_BOX="device-pixel-content-box"})(pa||(pa={}));var At=function(e){return Object.freeze(e)};var ks=function(){function e(o,t){this.inlineSize=o,this.blockSize=t,At(this)}return e}();var As=function(){function e(o,t,r,a){return this.x=o,this.y=t,this.width=r,this.height=a,this.top=this.y,this.left=this.x,this.bottom=this.top+this.height,this.right=this.left+this.width,At(this)}return e.prototype.toJSON=function(){var o=this,t=o.x,r=o.y,a=o.top,l=o.right,n=o.bottom,i=o.left,d=o.width,s=o.height;return{x:t,y:r,top:a,right:l,bottom:n,left:i,width:d,height:s}},e.fromRect=function(o){return new e(o.x,o.y,o.width,o.height)},e}();var _l=function(e){return e instanceof SVGElement&&"getBBox"in e},bi=function(e){if(_l(e)){var o=e.getBBox(),t=o.width,r=o.height;return!t&&!r}var a=e,l=a.offsetWidth,n=a.offsetHeight;return!(l||n||e.getClientRects().length)},Ds=function(e){var o,t;if(e instanceof Element)return!0;var r=(t=(o=e)===null||o===void 0?void 0:o.ownerDocument)===null||t===void 0?void 0:t.defaultView;return!!(r&&e instanceof r.Element)},rx=function(e){switch(e.tagName){case"INPUT":if(e.type!=="image")break;case"VIDEO":case"AUDIO":case"EMBED":case"OBJECT":case"CANVAS":case"IFRAME":case"IMG":return!0}return!1};var ma=typeof window!="undefined"?window:{};var yi=new WeakMap,ax=/auto|scroll/,$O=/^tb|vertical/,UO=/msie|trident/i.test(ma.navigator&&ma.navigator.userAgent),qt=function(e){return parseFloat(e||"0")},ja=function(e,o,t){return e===void 0&&(e=0),o===void 0&&(o=0),t===void 0&&(t=!1),new ks((t?o:e)||0,(t?e:o)||0)},lx=At({devicePixelContentBoxSize:ja(),borderBoxSize:ja(),contentBoxSize:ja(),contentRect:new As(0,0,0,0)}),Ps=function(e,o){if(o===void 0&&(o=!1),yi.has(e)&&!o)return yi.get(e);if(bi(e))return yi.set(e,lx),lx;var t=getComputedStyle(e),r=_l(e)&&e.ownerSVGElement&&e.getBBox(),a=!UO&&t.boxSizing==="border-box",l=$O.test(t.writingMode||""),n=!r&&ax.test(t.overflowY||""),i=!r&&ax.test(t.overflowX||""),d=r?0:qt(t.paddingTop),s=r?0:qt(t.paddingRight),u=r?0:qt(t.paddingBottom),f=r?0:qt(t.paddingLeft),c=r?0:qt(t.borderTopWidth),p=r?0:qt(t.borderRightWidth),x=r?0:qt(t.borderBottomWidth),T=r?0:qt(t.borderLeftWidth),C=f+s,S=d+u,D=T+p,j=c+x,O=i?e.offsetHeight-j-e.clientHeight:0,g=n?e.offsetWidth-D-e.clientWidth:0,v=a?C+D:0,w=a?S+j:0,F=r?r.width:qt(t.width)-v-g,B=r?r.height:qt(t.height)-w-O,y=F+C+g+D,W=B+S+O+j,_=At({devicePixelContentBoxSize:ja(Math.round(F*devicePixelRatio),Math.round(B*devicePixelRatio),l),borderBoxSize:ja(y,W,l),contentBoxSize:ja(F,B,l),contentRect:new As(f,d,F,B)});return yi.set(e,_),_},vi=function(e,o,t){var r=Ps(e,t),a=r.borderBoxSize,l=r.contentBoxSize,n=r.devicePixelContentBoxSize;switch(o){case pa.DEVICE_PIXEL_CONTENT_BOX:return n;case pa.BORDER_BOX:return a;default:return l}};var Ms=function(){function e(o){var t=Ps(o);this.target=o,this.contentRect=t.contentRect,this.borderBoxSize=At([t.borderBoxSize]),this.contentBoxSize=At([t.contentBoxSize]),this.devicePixelContentBoxSize=At([t.devicePixelContentBoxSize])}return e}();var ki=function(e){if(bi(e))return 1/0;for(var o=0,t=e.parentNode;t;)o+=1,t=t.parentNode;return o};var nx=function(){var e=1/0,o=[];Tt.forEach(function(n){if(n.activeTargets.length!==0){var i=[];n.activeTargets.forEach(function(s){var u=new Ms(s.target),f=ki(s.target);i.push(u),s.lastReportedSize=vi(s.target,s.observedBox),f<e&&(e=f)}),o.push(function(){n.callback.call(n.observer,i,n.observer)}),n.activeTargets.splice(0,n.activeTargets.length)}});for(var t=0,r=o;t<r.length;t++){var a=r[t];a()}return e};var Bs=function(e){Tt.forEach(function(t){t.activeTargets.splice(0,t.activeTargets.length),t.skippedTargets.splice(0,t.skippedTargets.length),t.observationTargets.forEach(function(a){a.isActive()&&(ki(a.target)>e?t.activeTargets.push(a):t.skippedTargets.push(a))})})};var ix=function(){var e=0;for(Bs(e);Xc();)e=nx(),Bs(e);return ex()&&tx(),e>0};var Ls,dx=[],KO=function(){return dx.splice(0).forEach(function(e){return e()})},sx=function(e){if(!Ls){var o=0,t=document.createTextNode(""),r={characterData:!0};new MutationObserver(function(){return KO()}).observe(t,r),Ls=function(){t.textContent=""+(o?o--:o++)}}dx.push(e),Ls()};var ux=function(e){sx(function(){requestAnimationFrame(e)})};var Ai=0,GO=function(){return!!Ai},qO=250,QO={attributes:!0,characterData:!0,childList:!0,subtree:!0},fx=["resize","load","transitionend","animationend","animationstart","animationiteration","keyup","keydown","mouseup","mousedown","mouseover","mouseout","blur","focus"],px=function(e){return e===void 0&&(e=0),Date.now()+e},Es=!1,ZO=function(){function e(){var o=this;this.stopped=!0,this.listener=function(){return o.schedule()}}return e.prototype.run=function(o){var t=this;if(o===void 0&&(o=qO),!Es){Es=!0;var r=px(o);ux(function(){var a=!1;try{a=ix()}finally{if(Es=!1,o=r-px(),!GO())return;a?t.run(1e3):o>0?t.run(o):t.start()}})}},e.prototype.schedule=function(){this.stop(),this.run()},e.prototype.observe=function(){var o=this,t=function(){return o.observer&&o.observer.observe(document.body,QO)};document.body?t():ma.addEventListener("DOMContentLoaded",t)},e.prototype.start=function(){var o=this;this.stopped&&(this.stopped=!1,this.observer=new MutationObserver(this.listener),this.observe(),fx.forEach(function(t){return ma.addEventListener(t,o.listener,!0)}))},e.prototype.stop=function(){var o=this;this.stopped||(this.observer&&this.observer.disconnect(),fx.forEach(function(t){return ma.removeEventListener(t,o.listener,!0)}),this.stopped=!0)},e}(),Di=new ZO,Ns=function(e){!Ai&&e>0&&Di.start(),Ai+=e,!Ai&&Di.stop()};var YO=function(e){return!_l(e)&&!rx(e)&&getComputedStyle(e).display==="inline"},mx=function(){function e(o,t){this.target=o,this.observedBox=t||pa.CONTENT_BOX,this.lastReportedSize={inlineSize:0,blockSize:0}}return e.prototype.isActive=function(){var o=vi(this.target,this.observedBox,!0);return YO(this.target)&&(this.lastReportedSize=o),this.lastReportedSize.inlineSize!==o.inlineSize||this.lastReportedSize.blockSize!==o.blockSize},e}();var cx=function(){function e(o,t){this.activeTargets=[],this.skippedTargets=[],this.observationTargets=[],this.observer=o,this.callback=t}return e}();var Pi=new WeakMap,xx=function(e,o){for(var t=0;t<e.length;t+=1)if(e[t].target===o)return t;return-1},Il=function(){function e(){}return e.connect=function(o,t){var r=new cx(o,t);Pi.set(o,r)},e.observe=function(o,t,r){var a=Pi.get(o),l=a.observationTargets.length===0;xx(a.observationTargets,t)<0&&(l&&Tt.push(a),a.observationTargets.push(new mx(t,r&&r.box)),Ns(1),Di.schedule())},e.unobserve=function(o,t){var r=Pi.get(o),a=xx(r.observationTargets,t),l=r.observationTargets.length===1;a>=0&&(l&&Tt.splice(Tt.indexOf(r),1),r.observationTargets.splice(a,1),Ns(-1))},e.disconnect=function(o){var t=this,r=Pi.get(o);r.observationTargets.slice().forEach(function(a){return t.unobserve(o,a.target)}),r.activeTargets.splice(0,r.activeTargets.length)},e}();var _s=function(){function e(o){if(arguments.length===0)throw new TypeError("Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.");if(typeof o!="function")throw new TypeError("Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.");Il.connect(this,o)}return e.prototype.observe=function(o,t){if(arguments.length===0)throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!Ds(o))throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element");Il.observe(this,o,t)},e.prototype.unobserve=function(o){if(arguments.length===0)throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!Ds(o))throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element");Il.unobserve(this,o)},e.prototype.disconnect=function(){Il.disconnect(this)},e.toString=function(){return"function ResizeObserver () { [polyfill code] }"},e}();var hx=class{constructor(){this.handleResize=this.handleResize.bind(this),this.observer=new _s(this.handleResize),this.elHandlersMap=new Map}handleResize(o){for(let t of o){let r=this.elHandlersMap.get(t.target);r!==void 0&&r(t)}}registerHandler(o,t){this.elHandlersMap.set(o,t),this.observer.observe(o)}unregisterHandler(o){!this.elHandlersMap.has(o)||(this.elHandlersMap.delete(o),this.observer.unobserve(o))}},Mi=new hx;var Dt=le({name:"ResizeObserver",props:{onResize:Function},setup(e){return{registered:!1,handleResize(o){let{onResize:t}=e;t!==void 0&&t(o)}}},mounted(){let e=this.$el;if(e===void 0){Ri("resize-observer","$el does not exist.");return}if(e.nextElementSibling!==e.nextSibling&&e.nodeType===3&&e.nodeValue!==""){Ri("resize-observer","$el can not be observed (it may be a text node).");return}e.nextElementSibling!==null&&(Mi.registerHandler(e.nextElementSibling,this.handleResize),this.registered=!0)},beforeUnmount(){this.registered&&Mi.unregisterHandler(this.$el.nextElementSibling)},render(){return Ma(this.$slots,"default")}});var JO=Gt(".v-vl",{maxHeight:"inherit",height:"100%",overflow:"auto",minWidth:"1px"},[Gt("&:not(.v-vl--show-scrollbar)",{scrollbarWidth:"none"},[Gt("&::-webkit-scrollbar, &::-webkit-scrollbar-track-piece, &::-webkit-scrollbar-thumb",{width:0,height:0,display:"none"})])]),Hl=le({name:"VirtualList",inheritAttrs:!1,props:{showScrollbar:{type:Boolean,default:!0},items:{type:Array,default:()=>[]},itemSize:{type:Number,required:!0},itemResizable:Boolean,itemsStyle:[String,Object],visibleItemsTag:{type:[String,Object],default:"div"},visibleItemsProps:Object,ignoreItemResize:Boolean,onScroll:Function,onWheel:Function,onResize:Function,defaultScrollKey:[Number,String],defaultScrollIndex:Number,keyField:{type:String,default:"key"},paddingTop:{type:[Number,String],default:0},paddingBottom:{type:[Number,String],default:0}},setup(e){let o=wt();JO.mount({id:"vueuc/virtual-list",head:!0,anchorMetaName:Nl,ssr:o}),fo(()=>{let{defaultScrollIndex:g,defaultScrollKey:v}=e;g!=null?f({index:g}):v!=null&&f({key:v})}),Qd(()=>{f({top:d.value})});let t=V(()=>{let g=new Map,{keyField:v}=e;return e.items.forEach((w,F)=>{g.set(w[v],F)}),g}),r=Z(null),a=Z(void 0),l=new Map,n=V(()=>{let{items:g,itemSize:v,keyField:w}=e,F=new Fi(g.length,v);return g.forEach((B,y)=>{let W=B[w],_=l.get(W);_!==void 0&&F.add(y,_)}),F}),i=Z(0),d=Z(0),s=Ye(()=>Math.max(n.value.getBound(d.value-ai(e.paddingTop))-1,0)),u=V(()=>{let{value:g}=a;if(g===void 0)return[];let{items:v,itemSize:w}=e,F=s.value,B=Math.min(F+Math.ceil(g/w+1),v.length-1),y=[];for(let W=F;W<=B;++W)y.push(v[W]);return y}),f=g=>{let{left:v,top:w,index:F,key:B,position:y,behavior:W,debounce:_=!0}=g;if(v!==void 0||w!==void 0)p(v,w,W);else if(F!==void 0)c(F,W,_);else if(B!==void 0){let ae=t.value.get(B);ae!==void 0&&c(ae,W,_)}else y==="bottom"?p(0,Number.MAX_SAFE_INTEGER,W):y==="top"&&p(0,0,W)};function c(g,v,w){let{value:F}=n,B=F.sum(g)+ai(e.paddingTop);if(!w)r.value.scrollTo({left:0,top:B,behavior:v});else{let{scrollTop:y,offsetHeight:W}=r.value;if(B>y){let _=F.get(g);B+_<=y+W||r.value.scrollTo({left:0,top:B+_-W,behavior:v})}else r.value.scrollTo({left:0,top:B,behavior:v})}S=g}function p(g,v,w){r.value.scrollTo({left:g,top:v,behavior:w})}function x(g,v){var w,F,B,y;if(e.ignoreItemResize||O(v.target))return;let{value:W}=n,_=t.value.get(g),ae=W.get(_),he=(B=(F=(w=v.borderBoxSize)===null||w===void 0?void 0:w[0])===null||F===void 0?void 0:F.blockSize)!==null&&B!==void 0?B:v.contentRect.height;if(he===ae)return;he-e.itemSize===0?l.delete(g):l.set(g,he-e.itemSize);let de=he-ae;de!==0&&(D!==void 0&&_<=D&&((y=r.value)===null||y===void 0||y.scrollBy(0,de)),W.add(_,de),i.value++)}function T(g){Al(j);let{onScroll:v}=e;v!==void 0&&v(g)}function C(g){if(O(g.target)||g.contentRect.height===a.value)return;a.value=g.contentRect.height;let{onResize:v}=e;v!==void 0&&v(g)}let S,D;function j(){let{value:g}=r;g!=null&&(D=S!=null?S:s.value,S=void 0,d.value=r.value.scrollTop)}function O(g){let v=g;for(;v!==null;){if(v.style.display==="none")return!0;v=v.parentElement}return!1}return{listHeight:a,listStyle:{overflow:"auto"},keyToIndex:t,itemsStyle:V(()=>{let{itemResizable:g}=e,v=Br(n.value.sum());return i.value,[e.itemsStyle,{boxSizing:"content-box",height:g?"":v,minHeight:g?v:"",paddingTop:Br(e.paddingTop),paddingBottom:Br(e.paddingBottom)}]}),visibleItemsStyle:V(()=>(i.value,{transform:`translateY(${Br(n.value.sum(s.value))})`})),viewportItems:u,listElRef:r,itemsElRef:Z(null),scrollTo:f,handleListResize:C,handleListScroll:T,handleItemResize:x}},render(){let{itemResizable:e,keyField:o,keyToIndex:t,visibleItemsTag:r}=this;return R(Dt,{onResize:this.handleListResize},{default:()=>{var a,l;return R("div",yl(this.$attrs,{class:["v-vl",this.showScrollbar&&"v-vl--show-scrollbar"],onScroll:this.handleListScroll,onWheel:this.onWheel,ref:"listElRef"}),[this.items.length!==0?R("div",{ref:"itemsElRef",class:"v-vl-items",style:this.itemsStyle},[R(r,Object.assign({class:"v-vl-visible-items",style:this.visibleItemsStyle},this.visibleItemsProps),{default:()=>this.viewportItems.map(n=>{let i=n[o],d=t.get(i),s=this.$slots.default({item:n,index:d})[0];return e?R(Dt,{key:i,onResize:u=>this.handleItemResize(i,u)},{default:()=>s}):(s.key=i,s)})})]):(l=(a=this.$slots).empty)===null||l===void 0?void 0:l.call(a)])}})}});var Sx=lo("n-form-item");function Rt(e,{defaultSize:o="medium",mergedSize:t,mergedDisabled:r}={}){let a=Te(Sx,null);qo(Sx,null);let l=V(t?()=>t(a):()=>{let{size:d}=e;if(d)return d;if(a){let{mergedSize:s}=a;if(s.value!==void 0)return s.value}return o}),n=V(r?()=>r(a):()=>{let{disabled:d}=e;return d!==void 0?d:a?a.disabled.value:!1}),i=V(()=>{let{status:d}=e;return d||(a==null?void 0:a.mergedValidationStatus.value)});return _o(()=>{a&&a.restoreValidation()}),{mergedSizeRef:l,mergedDisabledRef:n,mergedStatusRef:i,nTriggerFormBlur(){a&&a.handleContentBlur()},nTriggerFormChange(){a&&a.handleContentChange()},nTriggerFormFocus(){a&&a.handleContentFocus()},nTriggerFormInput(){a&&a.handleContentInput()}}}var XO=typeof global=="object"&&global&&global.Object===Object&&global,Bi=XO;var eC=typeof self=="object"&&self&&self.Object===Object&&self,oC=Bi||eC||Function("return this")(),Ft=oC;var tC=Ft.Symbol,fr=tC;var gx=Object.prototype,rC=gx.hasOwnProperty,aC=gx.toString,Wl=fr?fr.toStringTag:void 0;function lC(e){var o=rC.call(e,Wl),t=e[Wl];try{e[Wl]=void 0;var r=!0}catch(l){}var a=aC.call(e);return r&&(o?e[Wl]=t:delete e[Wl]),a}var wx=lC;var nC=Object.prototype,iC=nC.toString;function dC(e){return iC.call(e)}var Tx=dC;var sC="[object Null]",uC="[object Undefined]",Rx=fr?fr.toStringTag:void 0;function fC(e){return e==null?e===void 0?uC:sC:Rx&&Rx in Object(e)?wx(e):Tx(e)}var Qt=fC;function pC(e){return e!=null&&typeof e=="object"}var Ot=pC;var mC="[object Symbol]";function cC(e){return typeof e=="symbol"||Ot(e)&&Qt(e)==mC}var Fx=cC;function xC(e,o){for(var t=-1,r=e==null?0:e.length,a=Array(r);++t<r;)a[t]=o(e[t],t,e);return a}var Ox=xC;var hC=Array.isArray,ca=hC;var SC=1/0,Cx=fr?fr.prototype:void 0,bx=Cx?Cx.toString:void 0;function yx(e){if(typeof e=="string")return e;if(ca(e))return Ox(e,yx)+"";if(Fx(e))return bx?bx.call(e):"";var o=e+"";return o=="0"&&1/e==-SC?"-0":o}var vx=yx;function gC(e){var o=typeof e;return e!=null&&(o=="object"||o=="function")}var at=gC;function wC(e){return e}var Li=wC;var TC="[object AsyncFunction]",RC="[object Function]",FC="[object GeneratorFunction]",OC="[object Proxy]";function CC(e){if(!at(e))return!1;var o=Qt(e);return o==RC||o==FC||o==TC||o==OC}var $a=CC;var bC=Ft["__core-js_shared__"],Ei=bC;var kx=function(){var e=/[^.]+$/.exec(Ei&&Ei.keys&&Ei.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function yC(e){return!!kx&&kx in e}var Ax=yC;var vC=Function.prototype,kC=vC.toString;function AC(e){if(e!=null){try{return kC.call(e)}catch(o){}try{return e+""}catch(o){}}return""}var Dx=AC;var DC=/[\\^$.*+?()[\]{}|]/g,PC=/^\[object .+?Constructor\]$/,MC=Function.prototype,BC=Object.prototype,LC=MC.toString,EC=BC.hasOwnProperty,NC=RegExp("^"+LC.call(EC).replace(DC,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function _C(e){if(!at(e)||Ax(e))return!1;var o=$a(e)?NC:PC;return o.test(Dx(e))}var Px=_C;function IC(e,o){return e==null?void 0:e[o]}var Mx=IC;function HC(e,o){var t=Mx(e,o);return Px(t)?t:void 0}var Ua=HC;var Bx=Object.create,WC=function(){function e(){}return function(o){if(!at(o))return{};if(Bx)return Bx(o);e.prototype=o;var t=new e;return e.prototype=void 0,t}}(),Lx=WC;function VC(e,o,t){switch(t.length){case 0:return e.call(o);case 1:return e.call(o,t[0]);case 2:return e.call(o,t[0],t[1]);case 3:return e.call(o,t[0],t[1],t[2])}return e.apply(o,t)}var Ex=VC;function zC(e,o){var t=-1,r=e.length;for(o||(o=Array(r));++t<r;)o[t]=e[t];return o}var Nx=zC;var jC=800,$C=16,UC=Date.now;function KC(e){var o=0,t=0;return function(){var r=UC(),a=$C-(r-t);if(t=r,a>0){if(++o>=jC)return arguments[0]}else o=0;return e.apply(void 0,arguments)}}var _x=KC;function GC(e){return function(){return e}}var Ix=GC;var qC=function(){try{var e=Ua(Object,"defineProperty");return e({},"",{}),e}catch(o){}}(),Ka=qC;var QC=Ka?function(e,o){return Ka(e,"toString",{configurable:!0,enumerable:!1,value:Ix(o),writable:!0})}:Li,Hx=QC;var ZC=_x(Hx),Wx=ZC;var YC=9007199254740991,JC=/^(?:0|[1-9]\d*)$/;function XC(e,o){var t=typeof e;return o=o==null?YC:o,!!o&&(t=="number"||t!="symbol"&&JC.test(e))&&e>-1&&e%1==0&&e<o}var Ni=XC;function eb(e,o,t){o=="__proto__"&&Ka?Ka(e,o,{configurable:!0,enumerable:!0,value:t,writable:!0}):e[o]=t}var Ga=eb;function ob(e,o){return e===o||e!==e&&o!==o}var _r=ob;var tb=Object.prototype,rb=tb.hasOwnProperty;function ab(e,o,t){var r=e[o];(!(rb.call(e,o)&&_r(r,t))||t===void 0&&!(o in e))&&Ga(e,o,t)}var Vx=ab;function lb(e,o,t,r){var a=!t;t||(t={});for(var l=-1,n=o.length;++l<n;){var i=o[l],d=r?r(t[i],e[i],i,t,e):void 0;d===void 0&&(d=e[i]),a?Ga(t,i,d):Vx(t,i,d)}return t}var zx=lb;var jx=Math.max;function nb(e,o,t){return o=jx(o===void 0?e.length-1:o,0),function(){for(var r=arguments,a=-1,l=jx(r.length-o,0),n=Array(l);++a<l;)n[a]=r[o+a];a=-1;for(var i=Array(o+1);++a<o;)i[a]=r[a];return i[o]=t(n),Ex(e,this,i)}}var $x=nb;function ib(e,o){return Wx($x(e,o,Li),e+"")}var Ux=ib;var db=9007199254740991;function sb(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=db}var _i=sb;function ub(e){return e!=null&&_i(e.length)&&!$a(e)}var qa=ub;function fb(e,o,t){if(!at(t))return!1;var r=typeof o;return(r=="number"?qa(t)&&Ni(o,t.length):r=="string"&&o in t)?_r(t[o],e):!1}var Kx=fb;function pb(e){return Ux(function(o,t){var r=-1,a=t.length,l=a>1?t[a-1]:void 0,n=a>2?t[2]:void 0;for(l=e.length>3&&typeof l=="function"?(a--,l):void 0,n&&Kx(t[0],t[1],n)&&(l=a<3?void 0:l,a=1),o=Object(o);++r<a;){var i=t[r];i&&e(o,i,r,l)}return o})}var Gx=pb;var mb=Object.prototype;function cb(e){var o=e&&e.constructor,t=typeof o=="function"&&o.prototype||mb;return e===t}var Ii=cb;function xb(e,o){for(var t=-1,r=Array(e);++t<e;)r[t]=o(t);return r}var qx=xb;var hb="[object Arguments]";function Sb(e){return Ot(e)&&Qt(e)==hb}var Is=Sb;var Qx=Object.prototype,gb=Qx.hasOwnProperty,wb=Qx.propertyIsEnumerable,Tb=Is(function(){return arguments}())?Is:function(e){return Ot(e)&&gb.call(e,"callee")&&!wb.call(e,"callee")},Vl=Tb;function Rb(){return!1}var Zx=Rb;var Yx=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Jx=Yx&&typeof module=="object"&&module&&!module.nodeType&&module,Fb=Jx&&Jx.exports===Yx,Xx=Fb?Ft.Buffer:void 0,Ob=Xx?Xx.isBuffer:void 0,Cb=Ob||Zx,Hi=Cb;var bb="[object Arguments]",yb="[object Array]",vb="[object Boolean]",kb="[object Date]",Ab="[object Error]",Db="[object Function]",Pb="[object Map]",Mb="[object Number]",Bb="[object Object]",Lb="[object RegExp]",Eb="[object Set]",Nb="[object String]",_b="[object WeakMap]",Ib="[object ArrayBuffer]",Hb="[object DataView]",Wb="[object Float32Array]",Vb="[object Float64Array]",zb="[object Int8Array]",jb="[object Int16Array]",$b="[object Int32Array]",Ub="[object Uint8Array]",Kb="[object Uint8ClampedArray]",Gb="[object Uint16Array]",qb="[object Uint32Array]",co={};co[Wb]=co[Vb]=co[zb]=co[jb]=co[$b]=co[Ub]=co[Kb]=co[Gb]=co[qb]=!0;co[bb]=co[yb]=co[Ib]=co[vb]=co[Hb]=co[kb]=co[Ab]=co[Db]=co[Pb]=co[Mb]=co[Bb]=co[Lb]=co[Eb]=co[Nb]=co[_b]=!1;function Qb(e){return Ot(e)&&_i(e.length)&&!!co[Qt(e)]}var eh=Qb;function Zb(e){return function(o){return e(o)}}var oh=Zb;var th=typeof exports=="object"&&exports&&!exports.nodeType&&exports,zl=th&&typeof module=="object"&&module&&!module.nodeType&&module,Yb=zl&&zl.exports===th,Hs=Yb&&Bi.process,Jb=function(){try{var e=zl&&zl.require&&zl.require("util").types;return e||Hs&&Hs.binding&&Hs.binding("util")}catch(o){}}(),Ws=Jb;var rh=Ws&&Ws.isTypedArray,Xb=rh?oh(rh):eh,Wi=Xb;var ey=Object.prototype,oy=ey.hasOwnProperty;function ty(e,o){var t=ca(e),r=!t&&Vl(e),a=!t&&!r&&Hi(e),l=!t&&!r&&!a&&Wi(e),n=t||r||a||l,i=n?qx(e.length,String):[],d=i.length;for(var s in e)(o||oy.call(e,s))&&!(n&&(s=="length"||a&&(s=="offset"||s=="parent")||l&&(s=="buffer"||s=="byteLength"||s=="byteOffset")||Ni(s,d)))&&i.push(s);return i}var ah=ty;function ry(e,o){return function(t){return e(o(t))}}var lh=ry;function ay(e){var o=[];if(e!=null)for(var t in Object(e))o.push(t);return o}var nh=ay;var ly=Object.prototype,ny=ly.hasOwnProperty;function iy(e){if(!at(e))return nh(e);var o=Ii(e),t=[];for(var r in e)r=="constructor"&&(o||!ny.call(e,r))||t.push(r);return t}var ih=iy;function dy(e){return qa(e)?ah(e,!0):ih(e)}var Vi=dy;var sy=Ua(Object,"create"),pr=sy;function uy(){this.__data__=pr?pr(null):{},this.size=0}var dh=uy;function fy(e){var o=this.has(e)&&delete this.__data__[e];return this.size-=o?1:0,o}var sh=fy;var py="__lodash_hash_undefined__",my=Object.prototype,cy=my.hasOwnProperty;function xy(e){var o=this.__data__;if(pr){var t=o[e];return t===py?void 0:t}return cy.call(o,e)?o[e]:void 0}var uh=xy;var hy=Object.prototype,Sy=hy.hasOwnProperty;function gy(e){var o=this.__data__;return pr?o[e]!==void 0:Sy.call(o,e)}var fh=gy;var wy="__lodash_hash_undefined__";function Ty(e,o){var t=this.__data__;return this.size+=this.has(e)?0:1,t[e]=pr&&o===void 0?wy:o,this}var ph=Ty;function Qa(e){var o=-1,t=e==null?0:e.length;for(this.clear();++o<t;){var r=e[o];this.set(r[0],r[1])}}Qa.prototype.clear=dh;Qa.prototype.delete=sh;Qa.prototype.get=uh;Qa.prototype.has=fh;Qa.prototype.set=ph;var Vs=Qa;function Ry(){this.__data__=[],this.size=0}var mh=Ry;function Fy(e,o){for(var t=e.length;t--;)if(_r(e[t][0],o))return t;return-1}var Ir=Fy;var Oy=Array.prototype,Cy=Oy.splice;function by(e){var o=this.__data__,t=Ir(o,e);if(t<0)return!1;var r=o.length-1;return t==r?o.pop():Cy.call(o,t,1),--this.size,!0}var ch=by;function yy(e){var o=this.__data__,t=Ir(o,e);return t<0?void 0:o[t][1]}var xh=yy;function vy(e){return Ir(this.__data__,e)>-1}var hh=vy;function ky(e,o){var t=this.__data__,r=Ir(t,e);return r<0?(++this.size,t.push([e,o])):t[r][1]=o,this}var Sh=ky;function Za(e){var o=-1,t=e==null?0:e.length;for(this.clear();++o<t;){var r=e[o];this.set(r[0],r[1])}}Za.prototype.clear=mh;Za.prototype.delete=ch;Za.prototype.get=xh;Za.prototype.has=hh;Za.prototype.set=Sh;var Hr=Za;var Ay=Ua(Ft,"Map"),zi=Ay;function Dy(){this.size=0,this.__data__={hash:new Vs,map:new(zi||Hr),string:new Vs}}var gh=Dy;function Py(e){var o=typeof e;return o=="string"||o=="number"||o=="symbol"||o=="boolean"?e!=="__proto__":e===null}var wh=Py;function My(e,o){var t=e.__data__;return wh(o)?t[typeof o=="string"?"string":"hash"]:t.map}var Wr=My;function By(e){var o=Wr(this,e).delete(e);return this.size-=o?1:0,o}var Th=By;function Ly(e){return Wr(this,e).get(e)}var Rh=Ly;function Ey(e){return Wr(this,e).has(e)}var Fh=Ey;function Ny(e,o){var t=Wr(this,e),r=t.size;return t.set(e,o),this.size+=t.size==r?0:1,this}var Oh=Ny;function Ya(e){var o=-1,t=e==null?0:e.length;for(this.clear();++o<t;){var r=e[o];this.set(r[0],r[1])}}Ya.prototype.clear=gh;Ya.prototype.delete=Th;Ya.prototype.get=Rh;Ya.prototype.has=Fh;Ya.prototype.set=Oh;var Ch=Ya;function _y(e){return e==null?"":vx(e)}var bh=_y;var Iy=lh(Object.getPrototypeOf,Object),ji=Iy;var Hy="[object Object]",Wy=Function.prototype,Vy=Object.prototype,yh=Wy.toString,zy=Vy.hasOwnProperty,jy=yh.call(Object);function $y(e){if(!Ot(e)||Qt(e)!=Hy)return!1;var o=ji(e);if(o===null)return!0;var t=zy.call(o,"constructor")&&o.constructor;return typeof t=="function"&&t instanceof t&&yh.call(t)==jy}var vh=$y;function Uy(e,o,t){var r=-1,a=e.length;o<0&&(o=-o>a?0:a+o),t=t>a?a:t,t<0&&(t+=a),a=o>t?0:t-o>>>0,o>>>=0;for(var l=Array(a);++r<a;)l[r]=e[r+o];return l}var kh=Uy;function Ky(e,o,t){var r=e.length;return t=t===void 0?r:t,!o&&t>=r?e:kh(e,o,t)}var Ah=Ky;var Gy="\\ud800-\\udfff",qy="\\u0300-\\u036f",Qy="\\ufe20-\\ufe2f",Zy="\\u20d0-\\u20ff",Yy=qy+Qy+Zy,Jy="\\ufe0e\\ufe0f",Xy="\\u200d",ev=RegExp("["+Xy+Gy+Yy+Jy+"]");function ov(e){return ev.test(e)}var $i=ov;function tv(e){return e.split("")}var Dh=tv;var Ph="\\ud800-\\udfff",rv="\\u0300-\\u036f",av="\\ufe20-\\ufe2f",lv="\\u20d0-\\u20ff",nv=rv+av+lv,iv="\\ufe0e\\ufe0f",dv="["+Ph+"]",zs="["+nv+"]",js="\\ud83c[\\udffb-\\udfff]",sv="(?:"+zs+"|"+js+")",Mh="[^"+Ph+"]",Bh="(?:\\ud83c[\\udde6-\\uddff]){2}",Lh="[\\ud800-\\udbff][\\udc00-\\udfff]",uv="\\u200d",Eh=sv+"?",Nh="["+iv+"]?",fv="(?:"+uv+"(?:"+[Mh,Bh,Lh].join("|")+")"+Nh+Eh+")*",pv=Nh+Eh+fv,mv="(?:"+[Mh+zs+"?",zs,Bh,Lh,dv].join("|")+")",cv=RegExp(js+"(?="+js+")|"+mv+pv,"g");function xv(e){return e.match(cv)||[]}var _h=xv;function hv(e){return $i(e)?_h(e):Dh(e)}var Ih=hv;function Sv(e){return function(o){o=bh(o);var t=$i(o)?Ih(o):void 0,r=t?t[0]:o.charAt(0),a=t?Ah(t,1).join(""):o.slice(1);return r[e]()+a}}var Hh=Sv;var gv=Hh("toUpperCase"),$s=gv;function wv(){this.__data__=new Hr,this.size=0}var Wh=wv;function Tv(e){var o=this.__data__,t=o.delete(e);return this.size=o.size,t}var Vh=Tv;function Rv(e){return this.__data__.get(e)}var zh=Rv;function Fv(e){return this.__data__.has(e)}var jh=Fv;var Ov=200;function Cv(e,o){var t=this.__data__;if(t instanceof Hr){var r=t.__data__;if(!zi||r.length<Ov-1)return r.push([e,o]),this.size=++t.size,this;t=this.__data__=new Ch(r)}return t.set(e,o),this.size=t.size,this}var $h=Cv;function Ja(e){var o=this.__data__=new Hr(e);this.size=o.size}Ja.prototype.clear=Wh;Ja.prototype.delete=Vh;Ja.prototype.get=zh;Ja.prototype.has=jh;Ja.prototype.set=$h;var Uh=Ja;var Kh=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Gh=Kh&&typeof module=="object"&&module&&!module.nodeType&&module,bv=Gh&&Gh.exports===Kh,qh=bv?Ft.Buffer:void 0,Qh=qh?qh.allocUnsafe:void 0;function yv(e,o){if(o)return e.slice();var t=e.length,r=Qh?Qh(t):new e.constructor(t);return e.copy(r),r}var Zh=yv;var vv=Ft.Uint8Array,Us=vv;function kv(e){var o=new e.constructor(e.byteLength);return new Us(o).set(new Us(e)),o}var Yh=kv;function Av(e,o){var t=o?Yh(e.buffer):e.buffer;return new e.constructor(t,e.byteOffset,e.length)}var Jh=Av;function Dv(e){return typeof e.constructor=="function"&&!Ii(e)?Lx(ji(e)):{}}var Xh=Dv;function Pv(e){return function(o,t,r){for(var a=-1,l=Object(o),n=r(o),i=n.length;i--;){var d=n[e?i:++a];if(t(l[d],d,l)===!1)break}return o}}var eS=Pv;var Mv=eS(),oS=Mv;function Bv(e,o,t){(t!==void 0&&!_r(e[o],t)||t===void 0&&!(o in e))&&Ga(e,o,t)}var jl=Bv;function Lv(e){return Ot(e)&&qa(e)}var tS=Lv;function Ev(e,o){if(!(o==="constructor"&&typeof e[o]=="function")&&o!="__proto__")return e[o]}var $l=Ev;function Nv(e){return zx(e,Vi(e))}var rS=Nv;function _v(e,o,t,r,a,l,n){var i=$l(e,t),d=$l(o,t),s=n.get(d);if(s){jl(e,t,s);return}var u=l?l(i,d,t+"",e,o,n):void 0,f=u===void 0;if(f){var c=ca(d),p=!c&&Hi(d),x=!c&&!p&&Wi(d);u=d,c||p||x?ca(i)?u=i:tS(i)?u=Nx(i):p?(f=!1,u=Zh(d,!0)):x?(f=!1,u=Jh(d,!0)):u=[]:vh(d)||Vl(d)?(u=i,Vl(i)?u=rS(i):(!at(i)||$a(i))&&(u=Xh(d))):f=!1}f&&(n.set(d,u),a(u,d,r,l,n),n.delete(d)),jl(e,t,u)}var aS=_v;function lS(e,o,t,r,a){e!==o&&oS(o,function(l,n){if(a||(a=new Uh),at(l))aS(e,o,n,t,lS,r,a);else{var i=r?r($l(e,n),l,n+"",e,o,a):void 0;i===void 0&&(i=l),jl(e,n,i)}},Vi)}var nS=lS;var Iv=Gx(function(e,o,t){nS(e,o,t)}),Vr=Iv;var Uo={fontFamily:'v-sans, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',fontFamilyMono:"v-mono, SFMono-Regular, Menlo, Consolas, Courier, monospace",fontWeight:"400",fontWeightStrong:"500",cubicBezierEaseInOut:"cubic-bezier(.4, 0, .2, 1)",cubicBezierEaseOut:"cubic-bezier(0, 0, .2, 1)",cubicBezierEaseIn:"cubic-bezier(.4, 0, 1, 1)",borderRadius:"3px",borderRadiusSmall:"2px",fontSize:"14px",fontSizeTiny:"12px",fontSizeSmall:"14px",fontSizeMedium:"14px",fontSizeLarge:"15px",fontSizeHuge:"16px",lineHeight:"1.6",heightTiny:"22px",heightSmall:"28px",heightMedium:"34px",heightLarge:"40px",heightHuge:"46px"};var{fontSize:Hv,fontFamily:Wv,lineHeight:Vv}=Uo,Ui=Y("body",` +</style>`}function aC(e,o){let t=be(oh,null);if(t===null){console.error("[css-render/vue3-ssr]: no ssr context found.");return}let{styles:r,ids:a}=t;a.has(e)||r!==null&&(a.add(e),r.push(rC(e,o)))}function bt(){let e=be(oh,null);if(e!==null)return{adapter:aC,context:e}}function Fi(e,o){console.error(`[vueuc/${e}]: ${o}`)}var{c:Xt}=mi();var _l="vueuc-style";function th(e){return e&-e}var Ci=class{constructor(o,t){this.l=o,this.min=t;let r=new Array(o+1);for(let a=0;a<o+1;++a)r[a]=0;this.ft=r}add(o,t){if(t===0)return;let{l:r,ft:a}=this;for(o+=1;o<=r;)a[o]+=t,o+=th(o)}get(o){return this.sum(o+1)-this.sum(o)}sum(o){if(o===0)return 0;let{ft:t,min:r,l:a}=this;if(o===void 0&&(o=a),o>a)throw new Error("[FinweckTree.sum]: `i` is larger than length.");let l=o*r;for(;o>0;)l+=t[o],o-=th(o);return l}getBound(o){let t=0,r=this.l;for(;r>t;){let a=Math.floor((t+r)/2),l=this.sum(a);if(l>o){r=a;continue}else if(l<o){if(t===a)return this.sum(t+1)<=o?t+1:a;t=a}else return a}return t}};var rh=re({name:"LazyTeleport",props:{to:{type:[String,Object],default:void 0},disabled:Boolean,show:{type:Boolean,required:!0}},setup(e){return{showTeleport:xi(_e(e,"show")),mergedTo:W(()=>{let{to:o}=e;return o!=null?o:"body"})}},render(){return this.showTeleport?this.disabled?Nl("lazy-teleport",this.$slots):w(qm,{disabled:this.disabled,to:this.mergedTo},Nl("lazy-teleport",this.$slots)):null}});var bi={top:"bottom",bottom:"top",left:"right",right:"left"},ah={start:"end",center:"center",end:"start"},ks={top:"height",bottom:"height",left:"width",right:"width"},lC={"bottom-start":"top left",bottom:"top center","bottom-end":"top right","top-start":"bottom left",top:"bottom center","top-end":"bottom right","right-start":"top left",right:"center left","right-end":"bottom left","left-start":"top right",left:"center right","left-end":"bottom right"},nC={"bottom-start":"bottom left",bottom:"bottom center","bottom-end":"bottom right","top-start":"top left",top:"top center","top-end":"top right","right-start":"top right",right:"center right","right-end":"bottom right","left-start":"top left",left:"center left","left-end":"bottom left"},iC={"bottom-start":"right","bottom-end":"left","top-start":"right","top-end":"left","right-start":"bottom","right-end":"top","left-start":"bottom","left-end":"top"},lh={top:!0,bottom:!1,left:!0,right:!1},nh={top:"end",bottom:"start",left:"end",right:"start"};function ih(e,o,t,r,a,l){if(!a||l)return{placement:e,top:0,left:0};let[n,i]=e.split("-"),d=i!=null?i:"center",s={top:0,left:0},u=(p,c,R)=>{let b=0,h=0,k=t[p]-o[c]-o[p];return k>0&&r&&(R?h=lh[c]?k:-k:b=lh[c]?k:-k),{left:b,top:h}},f=n==="left"||n==="right";if(d!=="center"){let p=iC[e],c=bi[p],R=ks[p];if(t[R]>o[R]){if(o[p]+o[R]<t[R]){let b=(t[R]-o[R])/2;o[p]<b||o[c]<b?o[p]<o[c]?(d=ah[i],s=u(R,c,f)):s=u(R,p,f):d="center"}}else t[R]<o[R]&&o[c]<0&&o[p]>o[c]&&(d=ah[i])}else{let p=n==="bottom"||n==="top"?"left":"top",c=bi[p],R=ks[p],b=(t[R]-o[R])/2;(o[p]<b||o[c]<b)&&(o[p]>o[c]?(d=nh[p],s=u(R,p,f)):(d=nh[c],s=u(R,c,f)))}let m=n;return o[n]<t[ks[n]]&&o[n]<o[bi[n]]&&(m=bi[n]),{placement:d!=="center"?`${m}-${d}`:m,left:s.left,top:s.top}}function dh(e,o){return o?nC[e]:lC[e]}function sh(e,o,t,r,a,l){if(l)switch(e){case"bottom-start":return{top:`${Math.round(t.top-o.top+t.height)}px`,left:`${Math.round(t.left-o.left)}px`,transform:"translateY(-100%)"};case"bottom-end":return{top:`${Math.round(t.top-o.top+t.height)}px`,left:`${Math.round(t.left-o.left+t.width)}px`,transform:"translateX(-100%) translateY(-100%)"};case"top-start":return{top:`${Math.round(t.top-o.top)}px`,left:`${Math.round(t.left-o.left)}px`,transform:""};case"top-end":return{top:`${Math.round(t.top-o.top)}px`,left:`${Math.round(t.left-o.left+t.width)}px`,transform:"translateX(-100%)"};case"right-start":return{top:`${Math.round(t.top-o.top)}px`,left:`${Math.round(t.left-o.left+t.width)}px`,transform:"translateX(-100%)"};case"right-end":return{top:`${Math.round(t.top-o.top+t.height)}px`,left:`${Math.round(t.left-o.left+t.width)}px`,transform:"translateX(-100%) translateY(-100%)"};case"left-start":return{top:`${Math.round(t.top-o.top)}px`,left:`${Math.round(t.left-o.left)}px`,transform:""};case"left-end":return{top:`${Math.round(t.top-o.top+t.height)}px`,left:`${Math.round(t.left-o.left)}px`,transform:"translateY(-100%)"};case"top":return{top:`${Math.round(t.top-o.top)}px`,left:`${Math.round(t.left-o.left+t.width/2)}px`,transform:"translateX(-50%)"};case"right":return{top:`${Math.round(t.top-o.top+t.height/2)}px`,left:`${Math.round(t.left-o.left+t.width)}px`,transform:"translateX(-100%) translateY(-50%)"};case"left":return{top:`${Math.round(t.top-o.top+t.height/2)}px`,left:`${Math.round(t.left-o.left)}px`,transform:"translateY(-50%)"};case"bottom":default:return{top:`${Math.round(t.top-o.top+t.height)}px`,left:`${Math.round(t.left-o.left+t.width/2)}px`,transform:"translateX(-50%) translateY(-100%)"}}switch(e){case"bottom-start":return{top:`${Math.round(t.top-o.top+t.height+r)}px`,left:`${Math.round(t.left-o.left+a)}px`,transform:""};case"bottom-end":return{top:`${Math.round(t.top-o.top+t.height+r)}px`,left:`${Math.round(t.left-o.left+t.width+a)}px`,transform:"translateX(-100%)"};case"top-start":return{top:`${Math.round(t.top-o.top+r)}px`,left:`${Math.round(t.left-o.left+a)}px`,transform:"translateY(-100%)"};case"top-end":return{top:`${Math.round(t.top-o.top+r)}px`,left:`${Math.round(t.left-o.left+t.width+a)}px`,transform:"translateX(-100%) translateY(-100%)"};case"right-start":return{top:`${Math.round(t.top-o.top+r)}px`,left:`${Math.round(t.left-o.left+t.width+a)}px`,transform:""};case"right-end":return{top:`${Math.round(t.top-o.top+t.height+r)}px`,left:`${Math.round(t.left-o.left+t.width+a)}px`,transform:"translateY(-100%)"};case"left-start":return{top:`${Math.round(t.top-o.top+r)}px`,left:`${Math.round(t.left-o.left+a)}px`,transform:"translateX(-100%)"};case"left-end":return{top:`${Math.round(t.top-o.top+t.height+r)}px`,left:`${Math.round(t.left-o.left+a)}px`,transform:"translateX(-100%) translateY(-100%)"};case"top":return{top:`${Math.round(t.top-o.top+r)}px`,left:`${Math.round(t.left-o.left+t.width/2+a)}px`,transform:"translateY(-100%) translateX(-50%)"};case"right":return{top:`${Math.round(t.top-o.top+t.height/2+r)}px`,left:`${Math.round(t.left-o.left+t.width+a)}px`,transform:"translateY(-50%)"};case"left":return{top:`${Math.round(t.top-o.top+t.height/2+r)}px`,left:`${Math.round(t.left-o.left+a)}px`,transform:"translateY(-50%) translateX(-100%)"};case"bottom":default:return{top:`${Math.round(t.top-o.top+t.height+r)}px`,left:`${Math.round(t.left-o.left+t.width/2+a)}px`,transform:"translateX(-50%)"}}}var dC=Xt([Xt(".v-binder-follower-container",{position:"absolute",left:"0",right:"0",top:"0",height:"0",pointerEvents:"none",zIndex:"auto"}),Xt(".v-binder-follower-content",{position:"absolute",zIndex:"auto"},[Xt("> *",{pointerEvents:"all"})])]),yi=re({name:"Follower",inheritAttrs:!1,props:{show:Boolean,enabled:{type:Boolean,default:void 0},placement:{type:String,default:"bottom"},syncTrigger:{type:Array,default:["resize","scroll"]},to:[String,Object],flip:{type:Boolean,default:!0},internalShift:Boolean,x:Number,y:Number,width:String,minWidth:String,containerClass:String,teleportDisabled:Boolean,zindexable:{type:Boolean,default:!0},zIndex:Number,overlap:Boolean},setup(e){let o=be("VBinder"),t=to(()=>e.enabled!==void 0?e.enabled:e.show),r=Q(null),a=Q(null),l=()=>{let{syncTrigger:m}=e;m.includes("scroll")&&o.addScrollListener(d),m.includes("resize")&&o.addResizeListener(d)},n=()=>{o.removeScrollListener(d),o.removeResizeListener(d)};no(()=>{t.value&&(d(),l())});let i=bt();dC.mount({id:"vueuc/binder",head:!0,anchorMetaName:_l,ssr:i}),Ko(()=>{n()}),Si(()=>{t.value&&d()});let d=()=>{if(!t.value)return;let m=r.value;if(m===null)return;let p=o.targetRef,{x:c,y:R,overlap:b}=e,h=c!==void 0&&R!==void 0?Jc(c,R):wi(p);m.style.setProperty("--v-target-width",`${Math.round(h.width)}px`),m.style.setProperty("--v-target-height",`${Math.round(h.height)}px`);let{width:k,minWidth:z,placement:C,internalShift:g,flip:v}=e;m.setAttribute("v-placement",C),b?m.setAttribute("v-overlap",""):m.removeAttribute("v-overlap");let{style:S}=m;k==="target"?S.width=`${h.width}px`:k!==void 0?S.width=k:S.width="",z==="target"?S.minWidth=`${h.width}px`:z!==void 0?S.minWidth=z:S.minWidth="";let F=wi(m),B=wi(a.value),{left:y,top:I,placement:E}=ih(C,h,F,g,v,b),se=dh(E,b),{left:Se,top:Ee,transform:me}=sh(E,B,h,I,y,b);m.setAttribute("v-placement",E),m.style.setProperty("--v-offset-left",`${Math.round(y)}px`),m.style.setProperty("--v-offset-top",`${Math.round(I)}px`),m.style.transform=`translateX(${Se}) translateY(${Ee}) ${me}`,m.style.transformOrigin=se};lo(t,m=>{m?(l(),s()):n()});let s=()=>{Uo().then(d).catch(m=>console.error(m))};["placement","x","y","internalShift","flip","width","overlap","minWidth"].forEach(m=>{lo(_e(e,m),d)}),["teleportDisabled"].forEach(m=>{lo(_e(e,m),s)}),lo(_e(e,"syncTrigger"),m=>{m.includes("resize")?o.addResizeListener(d):o.removeResizeListener(d),m.includes("scroll")?o.addScrollListener(d):o.removeScrollListener(d)});let u=Wr(),f=to(()=>{let{to:m}=e;if(m!==void 0)return m;!u.value});return{VBinder:o,mergedEnabled:t,offsetContainerRef:a,followerRef:r,mergedTo:f,syncPosition:d}},render(){return w(rh,{show:this.show,to:this.mergedTo,disabled:this.teleportDisabled},{default:()=>{var e,o;let t=w("div",{class:["v-binder-follower-container",this.containerClass],ref:"offsetContainerRef"},[w("div",{class:"v-binder-follower-content",ref:"followerRef"},(o=(e=this.$slots).default)===null||o===void 0?void 0:o.call(e))]);return this.zindexable?Zn(t,[[vs,{enabled:this.mergedEnabled,zIndex:this.zIndex}]]):t}})}});var yt=[];var uh=function(){return yt.some(function(e){return e.activeTargets.length>0})};var fh=function(){return yt.some(function(e){return e.skippedTargets.length>0})};var ph="ResizeObserver loop completed with undelivered notifications.",mh=function(){var e;typeof ErrorEvent=="function"?e=new ErrorEvent("error",{message:ph}):(e=document.createEvent("Event"),e.initEvent("error",!1,!1),e.message=ph),window.dispatchEvent(e)};var ga;(function(e){e.BORDER_BOX="border-box",e.CONTENT_BOX="content-box",e.DEVICE_PIXEL_CONTENT_BOX="device-pixel-content-box"})(ga||(ga={}));var Lt=function(e){return Object.freeze(e)};var As=function(){function e(o,t){this.inlineSize=o,this.blockSize=t,Lt(this)}return e}();var Ds=function(){function e(o,t,r,a){return this.x=o,this.y=t,this.width=r,this.height=a,this.top=this.y,this.left=this.x,this.bottom=this.top+this.height,this.right=this.left+this.width,Lt(this)}return e.prototype.toJSON=function(){var o=this,t=o.x,r=o.y,a=o.top,l=o.right,n=o.bottom,i=o.left,d=o.width,s=o.height;return{x:t,y:r,top:a,right:l,bottom:n,left:i,width:d,height:s}},e.fromRect=function(o){return new e(o.x,o.y,o.width,o.height)},e}();var Il=function(e){return e instanceof SVGElement&&"getBBox"in e},vi=function(e){if(Il(e)){var o=e.getBBox(),t=o.width,r=o.height;return!t&&!r}var a=e,l=a.offsetWidth,n=a.offsetHeight;return!(l||n||e.getClientRects().length)},Ps=function(e){var o,t;if(e instanceof Element)return!0;var r=(t=(o=e)===null||o===void 0?void 0:o.ownerDocument)===null||t===void 0?void 0:t.defaultView;return!!(r&&e instanceof r.Element)},ch=function(e){switch(e.tagName){case"INPUT":if(e.type!=="image")break;case"VIDEO":case"AUDIO":case"EMBED":case"OBJECT":case"CANVAS":case"IFRAME":case"IMG":return!0}return!1};var wa=typeof window!="undefined"?window:{};var ki=new WeakMap,hh=/auto|scroll/,sC=/^tb|vertical/,uC=/msie|trident/i.test(wa.navigator&&wa.navigator.userAgent),er=function(e){return parseFloat(e||"0")},Ka=function(e,o,t){return e===void 0&&(e=0),o===void 0&&(o=0),t===void 0&&(t=!1),new As((t?o:e)||0,(t?e:o)||0)},xh=Lt({devicePixelContentBoxSize:Ka(),borderBoxSize:Ka(),contentBoxSize:Ka(),contentRect:new Ds(0,0,0,0)}),Ms=function(e,o){if(o===void 0&&(o=!1),ki.has(e)&&!o)return ki.get(e);if(vi(e))return ki.set(e,xh),xh;var t=getComputedStyle(e),r=Il(e)&&e.ownerSVGElement&&e.getBBox(),a=!uC&&t.boxSizing==="border-box",l=sC.test(t.writingMode||""),n=!r&&hh.test(t.overflowY||""),i=!r&&hh.test(t.overflowX||""),d=r?0:er(t.paddingTop),s=r?0:er(t.paddingRight),u=r?0:er(t.paddingBottom),f=r?0:er(t.paddingLeft),m=r?0:er(t.borderTopWidth),p=r?0:er(t.borderRightWidth),c=r?0:er(t.borderBottomWidth),R=r?0:er(t.borderLeftWidth),b=f+s,h=d+u,k=R+p,z=m+c,C=i?e.offsetHeight-z-e.clientHeight:0,g=n?e.offsetWidth-k-e.clientWidth:0,v=a?b+k:0,S=a?h+z:0,F=r?r.width:er(t.width)-v-g,B=r?r.height:er(t.height)-S-C,y=F+b+g+k,I=B+h+C+z,E=Lt({devicePixelContentBoxSize:Ka(Math.round(F*devicePixelRatio),Math.round(B*devicePixelRatio),l),borderBoxSize:Ka(y,I,l),contentBoxSize:Ka(F,B,l),contentRect:new Ds(f,d,F,B)});return ki.set(e,E),E},Ai=function(e,o,t){var r=Ms(e,t),a=r.borderBoxSize,l=r.contentBoxSize,n=r.devicePixelContentBoxSize;switch(o){case ga.DEVICE_PIXEL_CONTENT_BOX:return n;case ga.BORDER_BOX:return a;default:return l}};var Bs=function(){function e(o){var t=Ms(o);this.target=o,this.contentRect=t.contentRect,this.borderBoxSize=Lt([t.borderBoxSize]),this.contentBoxSize=Lt([t.contentBoxSize]),this.devicePixelContentBoxSize=Lt([t.devicePixelContentBoxSize])}return e}();var Di=function(e){if(vi(e))return 1/0;for(var o=0,t=e.parentNode;t;)o+=1,t=t.parentNode;return o};var Sh=function(){var e=1/0,o=[];yt.forEach(function(n){if(n.activeTargets.length!==0){var i=[];n.activeTargets.forEach(function(s){var u=new Bs(s.target),f=Di(s.target);i.push(u),s.lastReportedSize=Ai(s.target,s.observedBox),f<e&&(e=f)}),o.push(function(){n.callback.call(n.observer,i,n.observer)}),n.activeTargets.splice(0,n.activeTargets.length)}});for(var t=0,r=o;t<r.length;t++){var a=r[t];a()}return e};var Es=function(e){yt.forEach(function(t){t.activeTargets.splice(0,t.activeTargets.length),t.skippedTargets.splice(0,t.skippedTargets.length),t.observationTargets.forEach(function(a){a.isActive()&&(Di(a.target)>e?t.activeTargets.push(a):t.skippedTargets.push(a))})})};var gh=function(){var e=0;for(Es(e);uh();)e=Sh(),Es(e);return fh()&&mh(),e>0};var Ls,wh=[],fC=function(){return wh.splice(0).forEach(function(e){return e()})},Th=function(e){if(!Ls){var o=0,t=document.createTextNode(""),r={characterData:!0};new MutationObserver(function(){return fC()}).observe(t,r),Ls=function(){t.textContent=""+(o?o--:o++)}}wh.push(e),Ls()};var Rh=function(e){Th(function(){requestAnimationFrame(e)})};var Pi=0,pC=function(){return!!Pi},mC=250,cC={attributes:!0,characterData:!0,childList:!0,subtree:!0},Oh=["resize","load","transitionend","animationend","animationstart","animationiteration","keyup","keydown","mouseup","mousedown","mouseover","mouseout","blur","focus"],Fh=function(e){return e===void 0&&(e=0),Date.now()+e},Ns=!1,hC=function(){function e(){var o=this;this.stopped=!0,this.listener=function(){return o.schedule()}}return e.prototype.run=function(o){var t=this;if(o===void 0&&(o=mC),!Ns){Ns=!0;var r=Fh(o);Rh(function(){var a=!1;try{a=gh()}finally{if(Ns=!1,o=r-Fh(),!pC())return;a?t.run(1e3):o>0?t.run(o):t.start()}})}},e.prototype.schedule=function(){this.stop(),this.run()},e.prototype.observe=function(){var o=this,t=function(){return o.observer&&o.observer.observe(document.body,cC)};document.body?t():wa.addEventListener("DOMContentLoaded",t)},e.prototype.start=function(){var o=this;this.stopped&&(this.stopped=!1,this.observer=new MutationObserver(this.listener),this.observe(),Oh.forEach(function(t){return wa.addEventListener(t,o.listener,!0)}))},e.prototype.stop=function(){var o=this;this.stopped||(this.observer&&this.observer.disconnect(),Oh.forEach(function(t){return wa.removeEventListener(t,o.listener,!0)}),this.stopped=!0)},e}(),Mi=new hC,_s=function(e){!Pi&&e>0&&Mi.start(),Pi+=e,!Pi&&Mi.stop()};var xC=function(e){return!Il(e)&&!ch(e)&&getComputedStyle(e).display==="inline"},Ch=function(){function e(o,t){this.target=o,this.observedBox=t||ga.CONTENT_BOX,this.lastReportedSize={inlineSize:0,blockSize:0}}return e.prototype.isActive=function(){var o=Ai(this.target,this.observedBox,!0);return xC(this.target)&&(this.lastReportedSize=o),this.lastReportedSize.inlineSize!==o.inlineSize||this.lastReportedSize.blockSize!==o.blockSize},e}();var bh=function(){function e(o,t){this.activeTargets=[],this.skippedTargets=[],this.observationTargets=[],this.observer=o,this.callback=t}return e}();var Bi=new WeakMap,yh=function(e,o){for(var t=0;t<e.length;t+=1)if(e[t].target===o)return t;return-1},Hl=function(){function e(){}return e.connect=function(o,t){var r=new bh(o,t);Bi.set(o,r)},e.observe=function(o,t,r){var a=Bi.get(o),l=a.observationTargets.length===0;yh(a.observationTargets,t)<0&&(l&&yt.push(a),a.observationTargets.push(new Ch(t,r&&r.box)),_s(1),Mi.schedule())},e.unobserve=function(o,t){var r=Bi.get(o),a=yh(r.observationTargets,t),l=r.observationTargets.length===1;a>=0&&(l&&yt.splice(yt.indexOf(r),1),r.observationTargets.splice(a,1),_s(-1))},e.disconnect=function(o){var t=this,r=Bi.get(o);r.observationTargets.slice().forEach(function(a){return t.unobserve(o,a.target)}),r.activeTargets.splice(0,r.activeTargets.length)},e}();var Is=function(){function e(o){if(arguments.length===0)throw new TypeError("Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.");if(typeof o!="function")throw new TypeError("Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.");Hl.connect(this,o)}return e.prototype.observe=function(o,t){if(arguments.length===0)throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!Ps(o))throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element");Hl.observe(this,o,t)},e.prototype.unobserve=function(o){if(arguments.length===0)throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!Ps(o))throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element");Hl.unobserve(this,o)},e.prototype.disconnect=function(){Hl.disconnect(this)},e.toString=function(){return"function ResizeObserver () { [polyfill code] }"},e}();var vh=class{constructor(){this.handleResize=this.handleResize.bind(this),this.observer=new Is(this.handleResize),this.elHandlersMap=new Map}handleResize(o){for(let t of o){let r=this.elHandlersMap.get(t.target);r!==void 0&&r(t)}}registerHandler(o,t){this.elHandlersMap.set(o,t),this.observer.observe(o)}unregisterHandler(o){!this.elHandlersMap.has(o)||(this.elHandlersMap.delete(o),this.observer.unobserve(o))}},Ei=new vh;var Nt=re({name:"ResizeObserver",props:{onResize:Function},setup(e){return{registered:!1,handleResize(o){let{onResize:t}=e;t!==void 0&&t(o)}}},mounted(){let e=this.$el;if(e===void 0){Fi("resize-observer","$el does not exist.");return}if(e.nextElementSibling!==e.nextSibling&&e.nodeType===3&&e.nodeValue!==""){Fi("resize-observer","$el can not be observed (it may be a text node).");return}e.nextElementSibling!==null&&(Ei.registerHandler(e.nextElementSibling,this.handleResize),this.registered=!0)},beforeUnmount(){this.registered&&Ei.unregisterHandler(this.$el.nextElementSibling)},render(){return Na(this.$slots,"default")}});var SC=Xt(".v-vl",{maxHeight:"inherit",height:"100%",overflow:"auto",minWidth:"1px"},[Xt("&:not(.v-vl--show-scrollbar)",{scrollbarWidth:"none"},[Xt("&::-webkit-scrollbar, &::-webkit-scrollbar-track-piece, &::-webkit-scrollbar-thumb",{width:0,height:0,display:"none"})])]),Vl=re({name:"VirtualList",inheritAttrs:!1,props:{showScrollbar:{type:Boolean,default:!0},items:{type:Array,default:()=>[]},itemSize:{type:Number,required:!0},itemResizable:Boolean,itemsStyle:[String,Object],visibleItemsTag:{type:[String,Object],default:"div"},visibleItemsProps:Object,ignoreItemResize:Boolean,onScroll:Function,onWheel:Function,onResize:Function,defaultScrollKey:[Number,String],defaultScrollIndex:Number,keyField:{type:String,default:"key"},paddingTop:{type:[Number,String],default:0},paddingBottom:{type:[Number,String],default:0}},setup(e){let o=bt();SC.mount({id:"vueuc/virtual-list",head:!0,anchorMetaName:_l,ssr:o}),no(()=>{let{defaultScrollIndex:g,defaultScrollKey:v}=e;g!=null?f({index:g}):v!=null&&f({key:v})}),Zd(()=>{f({top:d.value})});let t=W(()=>{let g=new Map,{keyField:v}=e;return e.items.forEach((S,F)=>{g.set(S[v],F)}),g}),r=Q(null),a=Q(void 0),l=new Map,n=W(()=>{let{items:g,itemSize:v,keyField:S}=e,F=new Ci(g.length,v);return g.forEach((B,y)=>{let I=B[S],E=l.get(I);E!==void 0&&F.add(y,E)}),F}),i=Q(0),d=Q(0),s=to(()=>Math.max(n.value.getBound(d.value-ni(e.paddingTop))-1,0)),u=W(()=>{let{value:g}=a;if(g===void 0)return[];let{items:v,itemSize:S}=e,F=s.value,B=Math.min(F+Math.ceil(g/S+1),v.length-1),y=[];for(let I=F;I<=B;++I)y.push(v[I]);return y}),f=g=>{let{left:v,top:S,index:F,key:B,position:y,behavior:I,debounce:E=!0}=g;if(v!==void 0||S!==void 0)p(v,S,I);else if(F!==void 0)m(F,I,E);else if(B!==void 0){let se=t.value.get(B);se!==void 0&&m(se,I,E)}else y==="bottom"?p(0,Number.MAX_SAFE_INTEGER,I):y==="top"&&p(0,0,I)};function m(g,v,S){let{value:F}=n,B=F.sum(g)+ni(e.paddingTop);if(!S)r.value.scrollTo({left:0,top:B,behavior:v});else{let{scrollTop:y,offsetHeight:I}=r.value;if(B>y){let E=F.get(g);B+E<=y+I||r.value.scrollTo({left:0,top:B+E-I,behavior:v})}else r.value.scrollTo({left:0,top:B,behavior:v})}h=g}function p(g,v,S){r.value.scrollTo({left:g,top:v,behavior:S})}function c(g,v){var S,F,B,y;if(e.ignoreItemResize||C(v.target))return;let{value:I}=n,E=t.value.get(g),se=I.get(E),Se=(B=(F=(S=v.borderBoxSize)===null||S===void 0?void 0:S[0])===null||F===void 0?void 0:F.blockSize)!==null&&B!==void 0?B:v.contentRect.height;if(Se===se)return;Se-e.itemSize===0?l.delete(g):l.set(g,Se-e.itemSize);let me=Se-se;me!==0&&(k!==void 0&&E<=k&&((y=r.value)===null||y===void 0||y.scrollBy(0,me)),I.add(E,me),i.value++)}function R(g){Dl(z);let{onScroll:v}=e;v!==void 0&&v(g)}function b(g){if(C(g.target)||g.contentRect.height===a.value)return;a.value=g.contentRect.height;let{onResize:v}=e;v!==void 0&&v(g)}let h,k;function z(){let{value:g}=r;g!=null&&(k=h!=null?h:s.value,h=void 0,d.value=r.value.scrollTop)}function C(g){let v=g;for(;v!==null;){if(v.style.display==="none")return!0;v=v.parentElement}return!1}return{listHeight:a,listStyle:{overflow:"auto"},keyToIndex:t,itemsStyle:W(()=>{let{itemResizable:g}=e,v=Hr(n.value.sum());return i.value,[e.itemsStyle,{boxSizing:"content-box",height:g?"":v,minHeight:g?v:"",paddingTop:Hr(e.paddingTop),paddingBottom:Hr(e.paddingBottom)}]}),visibleItemsStyle:W(()=>(i.value,{transform:`translateY(${Hr(n.value.sum(s.value))})`})),viewportItems:u,listElRef:r,itemsElRef:Q(null),scrollTo:f,handleListResize:b,handleListScroll:R,handleItemResize:c}},render(){let{itemResizable:e,keyField:o,keyToIndex:t,visibleItemsTag:r}=this;return w(Nt,{onResize:this.handleListResize},{default:()=>{var a,l;return w("div",vl(this.$attrs,{class:["v-vl",this.showScrollbar&&"v-vl--show-scrollbar"],onScroll:this.handleListScroll,onWheel:this.onWheel,ref:"listElRef"}),[this.items.length!==0?w("div",{ref:"itemsElRef",class:"v-vl-items",style:this.itemsStyle},[w(r,Object.assign({class:"v-vl-visible-items",style:this.visibleItemsStyle},this.visibleItemsProps),{default:()=>this.viewportItems.map(n=>{let i=n[o],d=t.get(i),s=this.$slots.default({item:n,index:d})[0];return e?w(Nt,{key:i,onResize:u=>this.handleItemResize(i,u)},{default:()=>s}):(s.key=i,s)})})]):(l=(a=this.$slots).empty)===null||l===void 0?void 0:l.call(a)])}})}});var kh=uo("n-form-item");function vt(e,{defaultSize:o="medium",mergedSize:t,mergedDisabled:r}={}){let a=be(kh,null);rt(kh,null);let l=W(t?()=>t(a):()=>{let{size:d}=e;if(d)return d;if(a){let{mergedSize:s}=a;if(s.value!==void 0)return s.value}return o}),n=W(r?()=>r(a):()=>{let{disabled:d}=e;return d!==void 0?d:a?a.disabled.value:!1}),i=W(()=>{let{status:d}=e;return d||(a==null?void 0:a.mergedValidationStatus.value)});return Ko(()=>{a&&a.restoreValidation()}),{mergedSizeRef:l,mergedDisabledRef:n,mergedStatusRef:i,nTriggerFormBlur(){a&&a.handleContentBlur()},nTriggerFormChange(){a&&a.handleContentChange()},nTriggerFormFocus(){a&&a.handleContentFocus()},nTriggerFormInput(){a&&a.handleContentInput()}}}var gC=typeof global=="object"&&global&&global.Object===Object&&global,Li=gC;var wC=typeof self=="object"&&self&&self.Object===Object&&self,TC=Li||wC||Function("return this")(),kt=TC;var RC=kt.Symbol,wr=RC;var Ah=Object.prototype,OC=Ah.hasOwnProperty,FC=Ah.toString,Wl=wr?wr.toStringTag:void 0;function CC(e){var o=OC.call(e,Wl),t=e[Wl];try{e[Wl]=void 0;var r=!0}catch(l){}var a=FC.call(e);return r&&(o?e[Wl]=t:delete e[Wl]),a}var Dh=CC;var bC=Object.prototype,yC=bC.toString;function vC(e){return yC.call(e)}var Ph=vC;var kC="[object Null]",AC="[object Undefined]",Mh=wr?wr.toStringTag:void 0;function DC(e){return e==null?e===void 0?AC:kC:Mh&&Mh in Object(e)?Dh(e):Ph(e)}var or=DC;function PC(e){return e!=null&&typeof e=="object"}var At=PC;var MC="[object Symbol]";function BC(e){return typeof e=="symbol"||At(e)&&or(e)==MC}var Bh=BC;function EC(e,o){for(var t=-1,r=e==null?0:e.length,a=Array(r);++t<r;)a[t]=o(e[t],t,e);return a}var Eh=EC;var LC=Array.isArray,Ta=LC;var NC=1/0,Lh=wr?wr.prototype:void 0,Nh=Lh?Lh.toString:void 0;function _h(e){if(typeof e=="string")return e;if(Ta(e))return Eh(e,_h)+"";if(Bh(e))return Nh?Nh.call(e):"";var o=e+"";return o=="0"&&1/e==-NC?"-0":o}var Ih=_h;function _C(e){var o=typeof e;return e!=null&&(o=="object"||o=="function")}var pt=_C;function IC(e){return e}var Ni=IC;var HC="[object AsyncFunction]",VC="[object Function]",WC="[object GeneratorFunction]",zC="[object Proxy]";function jC(e){if(!pt(e))return!1;var o=or(e);return o==VC||o==WC||o==HC||o==zC}var Ga=jC;var $C=kt["__core-js_shared__"],_i=$C;var Hh=function(){var e=/[^.]+$/.exec(_i&&_i.keys&&_i.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function UC(e){return!!Hh&&Hh in e}var Vh=UC;var KC=Function.prototype,GC=KC.toString;function qC(e){if(e!=null){try{return GC.call(e)}catch(o){}try{return e+""}catch(o){}}return""}var Wh=qC;var QC=/[\\^$.*+?()[\]{}|]/g,ZC=/^\[object .+?Constructor\]$/,YC=Function.prototype,JC=Object.prototype,XC=YC.toString,eb=JC.hasOwnProperty,ob=RegExp("^"+XC.call(eb).replace(QC,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function tb(e){if(!pt(e)||Vh(e))return!1;var o=Ga(e)?ob:ZC;return o.test(Wh(e))}var zh=tb;function rb(e,o){return e==null?void 0:e[o]}var jh=rb;function ab(e,o){var t=jh(e,o);return zh(t)?t:void 0}var qa=ab;var $h=Object.create,lb=function(){function e(){}return function(o){if(!pt(o))return{};if($h)return $h(o);e.prototype=o;var t=new e;return e.prototype=void 0,t}}(),Uh=lb;function nb(e,o,t){switch(t.length){case 0:return e.call(o);case 1:return e.call(o,t[0]);case 2:return e.call(o,t[0],t[1]);case 3:return e.call(o,t[0],t[1],t[2])}return e.apply(o,t)}var Kh=nb;function ib(e,o){var t=-1,r=e.length;for(o||(o=Array(r));++t<r;)o[t]=e[t];return o}var Gh=ib;var db=800,sb=16,ub=Date.now;function fb(e){var o=0,t=0;return function(){var r=ub(),a=sb-(r-t);if(t=r,a>0){if(++o>=db)return arguments[0]}else o=0;return e.apply(void 0,arguments)}}var qh=fb;function pb(e){return function(){return e}}var Qh=pb;var mb=function(){try{var e=qa(Object,"defineProperty");return e({},"",{}),e}catch(o){}}(),Qa=mb;var cb=Qa?function(e,o){return Qa(e,"toString",{configurable:!0,enumerable:!1,value:Qh(o),writable:!0})}:Ni,Zh=cb;var hb=qh(Zh),Yh=hb;var xb=9007199254740991,Sb=/^(?:0|[1-9]\d*)$/;function gb(e,o){var t=typeof e;return o=o==null?xb:o,!!o&&(t=="number"||t!="symbol"&&Sb.test(e))&&e>-1&&e%1==0&&e<o}var Ii=gb;function wb(e,o,t){o=="__proto__"&&Qa?Qa(e,o,{configurable:!0,enumerable:!0,value:t,writable:!0}):e[o]=t}var Za=wb;function Tb(e,o){return e===o||e!==e&&o!==o}var jr=Tb;var Rb=Object.prototype,Ob=Rb.hasOwnProperty;function Fb(e,o,t){var r=e[o];(!(Ob.call(e,o)&&jr(r,t))||t===void 0&&!(o in e))&&Za(e,o,t)}var Jh=Fb;function Cb(e,o,t,r){var a=!t;t||(t={});for(var l=-1,n=o.length;++l<n;){var i=o[l],d=r?r(t[i],e[i],i,t,e):void 0;d===void 0&&(d=e[i]),a?Za(t,i,d):Jh(t,i,d)}return t}var Xh=Cb;var ex=Math.max;function bb(e,o,t){return o=ex(o===void 0?e.length-1:o,0),function(){for(var r=arguments,a=-1,l=ex(r.length-o,0),n=Array(l);++a<l;)n[a]=r[o+a];a=-1;for(var i=Array(o+1);++a<o;)i[a]=r[a];return i[o]=t(n),Kh(e,this,i)}}var ox=bb;function yb(e,o){return Yh(ox(e,o,Ni),e+"")}var tx=yb;var vb=9007199254740991;function kb(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=vb}var Hi=kb;function Ab(e){return e!=null&&Hi(e.length)&&!Ga(e)}var Ya=Ab;function Db(e,o,t){if(!pt(t))return!1;var r=typeof o;return(r=="number"?Ya(t)&&Ii(o,t.length):r=="string"&&o in t)?jr(t[o],e):!1}var rx=Db;function Pb(e){return tx(function(o,t){var r=-1,a=t.length,l=a>1?t[a-1]:void 0,n=a>2?t[2]:void 0;for(l=e.length>3&&typeof l=="function"?(a--,l):void 0,n&&rx(t[0],t[1],n)&&(l=a<3?void 0:l,a=1),o=Object(o);++r<a;){var i=t[r];i&&e(o,i,r,l)}return o})}var ax=Pb;var Mb=Object.prototype;function Bb(e){var o=e&&e.constructor,t=typeof o=="function"&&o.prototype||Mb;return e===t}var Vi=Bb;function Eb(e,o){for(var t=-1,r=Array(e);++t<e;)r[t]=o(t);return r}var lx=Eb;var Lb="[object Arguments]";function Nb(e){return At(e)&&or(e)==Lb}var Hs=Nb;var nx=Object.prototype,_b=nx.hasOwnProperty,Ib=nx.propertyIsEnumerable,Hb=Hs(function(){return arguments}())?Hs:function(e){return At(e)&&_b.call(e,"callee")&&!Ib.call(e,"callee")},zl=Hb;function Vb(){return!1}var ix=Vb;var dx=typeof exports=="object"&&exports&&!exports.nodeType&&exports,sx=dx&&typeof module=="object"&&module&&!module.nodeType&&module,Wb=sx&&sx.exports===dx,ux=Wb?kt.Buffer:void 0,zb=ux?ux.isBuffer:void 0,jb=zb||ix,Wi=jb;var $b="[object Arguments]",Ub="[object Array]",Kb="[object Boolean]",Gb="[object Date]",qb="[object Error]",Qb="[object Function]",Zb="[object Map]",Yb="[object Number]",Jb="[object Object]",Xb="[object RegExp]",ey="[object Set]",oy="[object String]",ty="[object WeakMap]",ry="[object ArrayBuffer]",ay="[object DataView]",ly="[object Float32Array]",ny="[object Float64Array]",iy="[object Int8Array]",dy="[object Int16Array]",sy="[object Int32Array]",uy="[object Uint8Array]",fy="[object Uint8ClampedArray]",py="[object Uint16Array]",my="[object Uint32Array]",Ro={};Ro[ly]=Ro[ny]=Ro[iy]=Ro[dy]=Ro[sy]=Ro[uy]=Ro[fy]=Ro[py]=Ro[my]=!0;Ro[$b]=Ro[Ub]=Ro[ry]=Ro[Kb]=Ro[ay]=Ro[Gb]=Ro[qb]=Ro[Qb]=Ro[Zb]=Ro[Yb]=Ro[Jb]=Ro[Xb]=Ro[ey]=Ro[oy]=Ro[ty]=!1;function cy(e){return At(e)&&Hi(e.length)&&!!Ro[or(e)]}var fx=cy;function hy(e){return function(o){return e(o)}}var px=hy;var mx=typeof exports=="object"&&exports&&!exports.nodeType&&exports,jl=mx&&typeof module=="object"&&module&&!module.nodeType&&module,xy=jl&&jl.exports===mx,Vs=xy&&Li.process,Sy=function(){try{var e=jl&&jl.require&&jl.require("util").types;return e||Vs&&Vs.binding&&Vs.binding("util")}catch(o){}}(),Ws=Sy;var cx=Ws&&Ws.isTypedArray,gy=cx?px(cx):fx,zi=gy;var wy=Object.prototype,Ty=wy.hasOwnProperty;function Ry(e,o){var t=Ta(e),r=!t&&zl(e),a=!t&&!r&&Wi(e),l=!t&&!r&&!a&&zi(e),n=t||r||a||l,i=n?lx(e.length,String):[],d=i.length;for(var s in e)(o||Ty.call(e,s))&&!(n&&(s=="length"||a&&(s=="offset"||s=="parent")||l&&(s=="buffer"||s=="byteLength"||s=="byteOffset")||Ii(s,d)))&&i.push(s);return i}var hx=Ry;function Oy(e,o){return function(t){return e(o(t))}}var xx=Oy;function Fy(e){var o=[];if(e!=null)for(var t in Object(e))o.push(t);return o}var Sx=Fy;var Cy=Object.prototype,by=Cy.hasOwnProperty;function yy(e){if(!pt(e))return Sx(e);var o=Vi(e),t=[];for(var r in e)r=="constructor"&&(o||!by.call(e,r))||t.push(r);return t}var gx=yy;function vy(e){return Ya(e)?hx(e,!0):gx(e)}var ji=vy;var ky=qa(Object,"create"),Tr=ky;function Ay(){this.__data__=Tr?Tr(null):{},this.size=0}var wx=Ay;function Dy(e){var o=this.has(e)&&delete this.__data__[e];return this.size-=o?1:0,o}var Tx=Dy;var Py="__lodash_hash_undefined__",My=Object.prototype,By=My.hasOwnProperty;function Ey(e){var o=this.__data__;if(Tr){var t=o[e];return t===Py?void 0:t}return By.call(o,e)?o[e]:void 0}var Rx=Ey;var Ly=Object.prototype,Ny=Ly.hasOwnProperty;function _y(e){var o=this.__data__;return Tr?o[e]!==void 0:Ny.call(o,e)}var Ox=_y;var Iy="__lodash_hash_undefined__";function Hy(e,o){var t=this.__data__;return this.size+=this.has(e)?0:1,t[e]=Tr&&o===void 0?Iy:o,this}var Fx=Hy;function Ja(e){var o=-1,t=e==null?0:e.length;for(this.clear();++o<t;){var r=e[o];this.set(r[0],r[1])}}Ja.prototype.clear=wx;Ja.prototype.delete=Tx;Ja.prototype.get=Rx;Ja.prototype.has=Ox;Ja.prototype.set=Fx;var zs=Ja;function Vy(){this.__data__=[],this.size=0}var Cx=Vy;function Wy(e,o){for(var t=e.length;t--;)if(jr(e[t][0],o))return t;return-1}var $r=Wy;var zy=Array.prototype,jy=zy.splice;function $y(e){var o=this.__data__,t=$r(o,e);if(t<0)return!1;var r=o.length-1;return t==r?o.pop():jy.call(o,t,1),--this.size,!0}var bx=$y;function Uy(e){var o=this.__data__,t=$r(o,e);return t<0?void 0:o[t][1]}var yx=Uy;function Ky(e){return $r(this.__data__,e)>-1}var vx=Ky;function Gy(e,o){var t=this.__data__,r=$r(t,e);return r<0?(++this.size,t.push([e,o])):t[r][1]=o,this}var kx=Gy;function Xa(e){var o=-1,t=e==null?0:e.length;for(this.clear();++o<t;){var r=e[o];this.set(r[0],r[1])}}Xa.prototype.clear=Cx;Xa.prototype.delete=bx;Xa.prototype.get=yx;Xa.prototype.has=vx;Xa.prototype.set=kx;var Ur=Xa;var qy=qa(kt,"Map"),$i=qy;function Qy(){this.size=0,this.__data__={hash:new zs,map:new($i||Ur),string:new zs}}var Ax=Qy;function Zy(e){var o=typeof e;return o=="string"||o=="number"||o=="symbol"||o=="boolean"?e!=="__proto__":e===null}var Dx=Zy;function Yy(e,o){var t=e.__data__;return Dx(o)?t[typeof o=="string"?"string":"hash"]:t.map}var Kr=Yy;function Jy(e){var o=Kr(this,e).delete(e);return this.size-=o?1:0,o}var Px=Jy;function Xy(e){return Kr(this,e).get(e)}var Mx=Xy;function ev(e){return Kr(this,e).has(e)}var Bx=ev;function ov(e,o){var t=Kr(this,e),r=t.size;return t.set(e,o),this.size+=t.size==r?0:1,this}var Ex=ov;function el(e){var o=-1,t=e==null?0:e.length;for(this.clear();++o<t;){var r=e[o];this.set(r[0],r[1])}}el.prototype.clear=Ax;el.prototype.delete=Px;el.prototype.get=Mx;el.prototype.has=Bx;el.prototype.set=Ex;var Lx=el;function tv(e){return e==null?"":Ih(e)}var Nx=tv;var rv=xx(Object.getPrototypeOf,Object),Ui=rv;var av="[object Object]",lv=Function.prototype,nv=Object.prototype,_x=lv.toString,iv=nv.hasOwnProperty,dv=_x.call(Object);function sv(e){if(!At(e)||or(e)!=av)return!1;var o=Ui(e);if(o===null)return!0;var t=iv.call(o,"constructor")&&o.constructor;return typeof t=="function"&&t instanceof t&&_x.call(t)==dv}var Ix=sv;function uv(e,o,t){var r=-1,a=e.length;o<0&&(o=-o>a?0:a+o),t=t>a?a:t,t<0&&(t+=a),a=o>t?0:t-o>>>0,o>>>=0;for(var l=Array(a);++r<a;)l[r]=e[r+o];return l}var Hx=uv;function fv(e,o,t){var r=e.length;return t=t===void 0?r:t,!o&&t>=r?e:Hx(e,o,t)}var Vx=fv;var pv="\\ud800-\\udfff",mv="\\u0300-\\u036f",cv="\\ufe20-\\ufe2f",hv="\\u20d0-\\u20ff",xv=mv+cv+hv,Sv="\\ufe0e\\ufe0f",gv="\\u200d",wv=RegExp("["+gv+pv+xv+Sv+"]");function Tv(e){return wv.test(e)}var Ki=Tv;function Rv(e){return e.split("")}var Wx=Rv;var zx="\\ud800-\\udfff",Ov="\\u0300-\\u036f",Fv="\\ufe20-\\ufe2f",Cv="\\u20d0-\\u20ff",bv=Ov+Fv+Cv,yv="\\ufe0e\\ufe0f",vv="["+zx+"]",js="["+bv+"]",$s="\\ud83c[\\udffb-\\udfff]",kv="(?:"+js+"|"+$s+")",jx="[^"+zx+"]",$x="(?:\\ud83c[\\udde6-\\uddff]){2}",Ux="[\\ud800-\\udbff][\\udc00-\\udfff]",Av="\\u200d",Kx=kv+"?",Gx="["+yv+"]?",Dv="(?:"+Av+"(?:"+[jx,$x,Ux].join("|")+")"+Gx+Kx+")*",Pv=Gx+Kx+Dv,Mv="(?:"+[jx+js+"?",js,$x,Ux,vv].join("|")+")",Bv=RegExp($s+"(?="+$s+")|"+Mv+Pv,"g");function Ev(e){return e.match(Bv)||[]}var qx=Ev;function Lv(e){return Ki(e)?qx(e):Wx(e)}var Qx=Lv;function Nv(e){return function(o){o=Nx(o);var t=Ki(o)?Qx(o):void 0,r=t?t[0]:o.charAt(0),a=t?Vx(t,1).join(""):o.slice(1);return r[e]()+a}}var Zx=Nv;var _v=Zx("toUpperCase"),Us=_v;function Iv(){this.__data__=new Ur,this.size=0}var Yx=Iv;function Hv(e){var o=this.__data__,t=o.delete(e);return this.size=o.size,t}var Jx=Hv;function Vv(e){return this.__data__.get(e)}var Xx=Vv;function Wv(e){return this.__data__.has(e)}var eS=Wv;var zv=200;function jv(e,o){var t=this.__data__;if(t instanceof Ur){var r=t.__data__;if(!$i||r.length<zv-1)return r.push([e,o]),this.size=++t.size,this;t=this.__data__=new Lx(r)}return t.set(e,o),this.size=t.size,this}var oS=jv;function ol(e){var o=this.__data__=new Ur(e);this.size=o.size}ol.prototype.clear=Yx;ol.prototype.delete=Jx;ol.prototype.get=Xx;ol.prototype.has=eS;ol.prototype.set=oS;var tS=ol;var rS=typeof exports=="object"&&exports&&!exports.nodeType&&exports,aS=rS&&typeof module=="object"&&module&&!module.nodeType&&module,$v=aS&&aS.exports===rS,lS=$v?kt.Buffer:void 0,nS=lS?lS.allocUnsafe:void 0;function Uv(e,o){if(o)return e.slice();var t=e.length,r=nS?nS(t):new e.constructor(t);return e.copy(r),r}var iS=Uv;var Kv=kt.Uint8Array,Ks=Kv;function Gv(e){var o=new e.constructor(e.byteLength);return new Ks(o).set(new Ks(e)),o}var dS=Gv;function qv(e,o){var t=o?dS(e.buffer):e.buffer;return new e.constructor(t,e.byteOffset,e.length)}var sS=qv;function Qv(e){return typeof e.constructor=="function"&&!Vi(e)?Uh(Ui(e)):{}}var uS=Qv;function Zv(e){return function(o,t,r){for(var a=-1,l=Object(o),n=r(o),i=n.length;i--;){var d=n[e?i:++a];if(t(l[d],d,l)===!1)break}return o}}var fS=Zv;var Yv=fS(),pS=Yv;function Jv(e,o,t){(t!==void 0&&!jr(e[o],t)||t===void 0&&!(o in e))&&Za(e,o,t)}var $l=Jv;function Xv(e){return At(e)&&Ya(e)}var mS=Xv;function ek(e,o){if(!(o==="constructor"&&typeof e[o]=="function")&&o!="__proto__")return e[o]}var Ul=ek;function ok(e){return Xh(e,ji(e))}var cS=ok;function tk(e,o,t,r,a,l,n){var i=Ul(e,t),d=Ul(o,t),s=n.get(d);if(s){$l(e,t,s);return}var u=l?l(i,d,t+"",e,o,n):void 0,f=u===void 0;if(f){var m=Ta(d),p=!m&&Wi(d),c=!m&&!p&&zi(d);u=d,m||p||c?Ta(i)?u=i:mS(i)?u=Gh(i):p?(f=!1,u=iS(d,!0)):c?(f=!1,u=sS(d,!0)):u=[]:Ix(d)||zl(d)?(u=i,zl(i)?u=cS(i):(!pt(i)||Ga(i))&&(u=uS(d))):f=!1}f&&(n.set(d,u),a(u,d,r,l,n),n.delete(d)),$l(e,t,u)}var hS=tk;function xS(e,o,t,r,a){e!==o&&pS(o,function(l,n){if(a||(a=new tS),pt(l))hS(e,o,n,t,xS,r,a);else{var i=r?r(Ul(e,n),l,n+"",e,o,a):void 0;i===void 0&&(i=l),$l(e,n,i)}},ji)}var SS=xS;var rk=ax(function(e,o,t){SS(e,o,t)}),Gr=rk;var ot={fontFamily:'v-sans, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',fontFamilyMono:"v-mono, SFMono-Regular, Menlo, Consolas, Courier, monospace",fontWeight:"400",fontWeightStrong:"500",cubicBezierEaseInOut:"cubic-bezier(.4, 0, .2, 1)",cubicBezierEaseOut:"cubic-bezier(0, 0, .2, 1)",cubicBezierEaseIn:"cubic-bezier(.4, 0, 1, 1)",borderRadius:"3px",borderRadiusSmall:"2px",fontSize:"14px",fontSizeTiny:"12px",fontSizeSmall:"14px",fontSizeMedium:"14px",fontSizeLarge:"15px",fontSizeHuge:"16px",lineHeight:"1.6",heightTiny:"22px",heightSmall:"28px",heightMedium:"34px",heightLarge:"40px",heightHuge:"46px"};var{fontSize:ak,fontFamily:lk,lineHeight:nk}=ot,Gi=Y("body",` margin: 0; - font-size: ${Hv}; - font-family: ${Wv}; - line-height: ${Vv}; + font-size: ${ak}; + font-family: ${lk}; + line-height: ${nk}; -webkit-text-size-adjust: 100%; -webkit-tap-highlight-color: transparent; `,[Y("input",` font-family: inherit; font-size: inherit; - `)]);var Yo=lo("n-config-provider");var zr="naive-ui-style";function Pe(e){return e}function iS(e,o,t,r,a,l){let n=wt();if(t){let s=()=>{let u=l==null?void 0:l.value;t.mount({id:u===void 0?o:u+o,head:!0,props:{bPrefix:u?`.${u}-`:void 0},anchorMetaName:zr,ssr:n}),Ui.mount({id:"n-global",head:!0,anchorMetaName:zr,ssr:n})};n?s():dr(s)}let i=Te(Yo,null);return V(()=>{var s;let{theme:{common:u,self:f,peers:c={}}={},themeOverrides:p={},builtinThemeOverrides:x={}}=a,{common:T,peers:C}=p,{common:S=void 0,[e]:{common:D=void 0,self:j=void 0,peers:O={}}={}}=(i==null?void 0:i.mergedThemeRef.value)||{},{common:g=void 0,[e]:v={}}=(i==null?void 0:i.mergedThemeOverridesRef.value)||{},{common:w,peers:F={}}=v,B=Vr({},u||D||S||r.common,g,w,T),y=Vr((s=f||j||r.self)===null||s===void 0?void 0:s(B),x,v,p);return{common:B,self:y,peers:Vr({},r.peers,O,c),peerOverrides:Vr({},F,C)}})}iS.props={theme:Object,themeOverrides:Object,builtinThemeOverrides:Object};var Fo=iS;var Ki="n";function Bo(e={},o={defaultBordered:!0}){let t=Te(Yo,null);return{inlineThemeDisabled:t==null?void 0:t.inlineThemeDisabled,mergedRtlRef:t==null?void 0:t.mergedRtlRef,mergedComponentPropsRef:t==null?void 0:t.mergedComponentPropsRef,mergedBreakpointsRef:t==null?void 0:t.mergedBreakpointsRef,mergedBorderedRef:V(()=>{var r,a;let{bordered:l}=e;return l!==void 0?l:(a=(r=t==null?void 0:t.mergedBorderedRef.value)!==null&&r!==void 0?r:o.defaultBordered)!==null&&a!==void 0?a:!0}),mergedClsPrefixRef:V(()=>(t==null?void 0:t.mergedClsPrefixRef.value)||Ki),namespaceRef:V(()=>t==null?void 0:t.mergedNamespaceRef.value)}}var zv={name:"en-US",global:{undo:"Undo",redo:"Redo",confirm:"Confirm"},Popconfirm:{positiveText:"Confirm",negativeText:"Cancel"},Cascader:{placeholder:"Please Select",loading:"Loading",loadingRequiredMessage:e=>`Please load all ${e}'s descendants before checking it.`},Time:{dateFormat:"yyyy-MM-dd",dateTimeFormat:"yyyy-MM-dd HH:mm:ss"},DatePicker:{yearFormat:"yyyy",monthFormat:"MMM",dayFormat:"eeeeee",yearTypeFormat:"yyyy",monthTypeFormat:"yyyy-MM",dateFormat:"yyyy-MM-dd",dateTimeFormat:"yyyy-MM-dd HH:mm:ss",quarterFormat:"yyyy-qqq",clear:"Clear",now:"Now",confirm:"Confirm",selectTime:"Select Time",selectDate:"Select Date",datePlaceholder:"Select Date",datetimePlaceholder:"Select Date and Time",monthPlaceholder:"Select Month",yearPlaceholder:"Select Year",quarterPlaceholder:"Select Quarter",startDatePlaceholder:"Start Date",endDatePlaceholder:"End Date",startDatetimePlaceholder:"Start Date and Time",endDatetimePlaceholder:"End Date and Time",monthBeforeYear:!0,firstDayOfWeek:6,today:"Today"},DataTable:{checkTableAll:"Select all in the table",uncheckTableAll:"Unselect all in the table",confirm:"Confirm",clear:"Clear"},Transfer:{sourceTitle:"Source",targetTitle:"Target"},Empty:{description:"No Data"},Select:{placeholder:"Please Select"},TimePicker:{placeholder:"Select Time",positiveText:"OK",negativeText:"Cancel",now:"Now"},Pagination:{goto:"Goto",selectionSuffix:"page"},DynamicTags:{add:"Add"},Log:{loading:"Loading"},Input:{placeholder:"Please Input"},InputNumber:{placeholder:"Please Input"},DynamicInput:{create:"Create"},ThemeEditor:{title:"Theme Editor",clearAllVars:"Clear All Variables",clearSearch:"Clear Search",filterCompName:"Filter Component Name",filterVarName:"Filter Variable Name",import:"Import",export:"Export",restore:"Reset to Default"},Image:{tipPrevious:"Previous picture (\u2190)",tipNext:"Next picture (\u2192)",tipCounterclockwise:"Counterclockwise",tipClockwise:"Clockwise",tipZoomOut:"Zoom out",tipZoomIn:"Zoom in",tipClose:"Close (Esc)"}},Ks=zv;var AS=Fa(kS()),Hk={name:"en-US",locale:AS.default},qs=Hk;function Xa(e){let{mergedLocaleRef:o,mergedDateLocaleRef:t}=Te(Yo,null)||{},r=V(()=>{var l,n;return(n=(l=o==null?void 0:o.value)===null||l===void 0?void 0:l[e])!==null&&n!==void 0?n:Ks[e]});return{dateLocaleRef:V(()=>{var l;return(l=t==null?void 0:t.value)!==null&&l!==void 0?l:qs}),localeRef:r}}function Zt(e,o,t){if(!o)return;let r=wt(),a=()=>{let l=t==null?void 0:t.value;o.mount({id:l===void 0?e:l+e,head:!0,anchorMetaName:zr,props:{bPrefix:l?`.${l}-`:void 0},ssr:r}),Ui.mount({id:"n-global",head:!0,anchorMetaName:zr,ssr:r})};r?a():dr(a)}function Ko(e,o,t,r){var a;t||ni("useThemeClass","cssVarsRef is not passed");let l=(a=Te(Yo,null))===null||a===void 0?void 0:a.mergedThemeHashRef,n=Z(""),i=wt(),d,s=`__${e}`,u=()=>{let f=s,c=o?o.value:void 0,p=l==null?void 0:l.value;p&&(f+="-"+p),c&&(f+="-"+c);let{themeOverrides:x,builtinThemeOverrides:T}=r;x&&(f+="-"+st(JSON.stringify(x))),T&&(f+="-"+st(JSON.stringify(T))),n.value=f,d=()=>{let C=t.value,S="";for(let D in C)S+=`${D}: ${C[D]};`;Y(`.${f}`,S).mount({id:f,ssr:i}),d=void 0}};return Mo(()=>{u()}),{themeClass:n,onRender:()=>{d==null||d()}}}function DS(e,o){return le({name:$s(e),setup(){var t;let r=(t=Te(Yo,null))===null||t===void 0?void 0:t.mergedIconsRef;return()=>{var a;let l=(a=r==null?void 0:r.value)===null||a===void 0?void 0:a[e];return l?l():o}}})}var Qs=le({name:"Eye",render(){return R("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},R("path",{d:"M255.66 112c-77.94 0-157.89 45.11-220.83 135.33a16 16 0 0 0-.27 17.77C82.92 340.8 161.8 400 255.66 400c92.84 0 173.34-59.38 221.79-135.25a16.14 16.14 0 0 0 0-17.47C428.89 172.28 347.8 112 255.66 112z",fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"32"}),R("circle",{cx:"256",cy:"256",r:"80",fill:"none",stroke:"currentColor","stroke-miterlimit":"10","stroke-width":"32"}))}});var Zs=le({name:"EyeOff",render(){return R("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},R("path",{d:"M432 448a15.92 15.92 0 0 1-11.31-4.69l-352-352a16 16 0 0 1 22.62-22.62l352 352A16 16 0 0 1 432 448z",fill:"currentColor"}),R("path",{d:"M255.66 384c-41.49 0-81.5-12.28-118.92-36.5c-34.07-22-64.74-53.51-88.7-91v-.08c19.94-28.57 41.78-52.73 65.24-72.21a2 2 0 0 0 .14-2.94L93.5 161.38a2 2 0 0 0-2.71-.12c-24.92 21-48.05 46.76-69.08 76.92a31.92 31.92 0 0 0-.64 35.54c26.41 41.33 60.4 76.14 98.28 100.65C162 402 207.9 416 255.66 416a239.13 239.13 0 0 0 75.8-12.58a2 2 0 0 0 .77-3.31l-21.58-21.58a4 4 0 0 0-3.83-1a204.8 204.8 0 0 1-51.16 6.47z",fill:"currentColor"}),R("path",{d:"M490.84 238.6c-26.46-40.92-60.79-75.68-99.27-100.53C349 110.55 302 96 255.66 96a227.34 227.34 0 0 0-74.89 12.83a2 2 0 0 0-.75 3.31l21.55 21.55a4 4 0 0 0 3.88 1a192.82 192.82 0 0 1 50.21-6.69c40.69 0 80.58 12.43 118.55 37c34.71 22.4 65.74 53.88 89.76 91a.13.13 0 0 1 0 .16a310.72 310.72 0 0 1-64.12 72.73a2 2 0 0 0-.15 2.95l19.9 19.89a2 2 0 0 0 2.7.13a343.49 343.49 0 0 0 68.64-78.48a32.2 32.2 0 0 0-.1-34.78z",fill:"currentColor"}),R("path",{d:"M256 160a95.88 95.88 0 0 0-21.37 2.4a2 2 0 0 0-1 3.38l112.59 112.56a2 2 0 0 0 3.38-1A96 96 0 0 0 256 160z",fill:"currentColor"}),R("path",{d:"M165.78 233.66a2 2 0 0 0-3.38 1a96 96 0 0 0 115 115a2 2 0 0 0 1-3.38z",fill:"currentColor"}))}});var Ys=le({name:"Empty",render(){return R("svg",{viewBox:"0 0 28 28",fill:"none",xmlns:"http://www.w3.org/2000/svg"},R("path",{d:"M26 7.5C26 11.0899 23.0899 14 19.5 14C15.9101 14 13 11.0899 13 7.5C13 3.91015 15.9101 1 19.5 1C23.0899 1 26 3.91015 26 7.5ZM16.8536 4.14645C16.6583 3.95118 16.3417 3.95118 16.1464 4.14645C15.9512 4.34171 15.9512 4.65829 16.1464 4.85355L18.7929 7.5L16.1464 10.1464C15.9512 10.3417 15.9512 10.6583 16.1464 10.8536C16.3417 11.0488 16.6583 11.0488 16.8536 10.8536L19.5 8.20711L22.1464 10.8536C22.3417 11.0488 22.6583 11.0488 22.8536 10.8536C23.0488 10.6583 23.0488 10.3417 22.8536 10.1464L20.2071 7.5L22.8536 4.85355C23.0488 4.65829 23.0488 4.34171 22.8536 4.14645C22.6583 3.95118 22.3417 3.95118 22.1464 4.14645L19.5 6.79289L16.8536 4.14645Z",fill:"currentColor"}),R("path",{d:"M25 22.75V12.5991C24.5572 13.0765 24.053 13.4961 23.5 13.8454V16H17.5L17.3982 16.0068C17.0322 16.0565 16.75 16.3703 16.75 16.75C16.75 18.2688 15.5188 19.5 14 19.5C12.4812 19.5 11.25 18.2688 11.25 16.75L11.2432 16.6482C11.1935 16.2822 10.8797 16 10.5 16H4.5V7.25C4.5 6.2835 5.2835 5.5 6.25 5.5H12.2696C12.4146 4.97463 12.6153 4.47237 12.865 4H6.25C4.45507 4 3 5.45507 3 7.25V22.75C3 24.5449 4.45507 26 6.25 26H21.75C23.5449 26 25 24.5449 25 22.75ZM4.5 22.75V17.5H9.81597L9.85751 17.7041C10.2905 19.5919 11.9808 21 14 21L14.215 20.9947C16.2095 20.8953 17.842 19.4209 18.184 17.5H23.5V22.75C23.5 23.7165 22.7165 24.5 21.75 24.5H6.25C5.2835 24.5 4.5 23.7165 4.5 22.75Z",fill:"currentColor"}))}});var Js=le({name:"Switcher",render(){return R("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32"},R("path",{d:"M12 8l10 8l-10 8z"}))}});var Xs=le({name:"ChevronDown",render(){return R("svg",{viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},R("path",{d:"M3.14645 5.64645C3.34171 5.45118 3.65829 5.45118 3.85355 5.64645L8 9.79289L12.1464 5.64645C12.3417 5.45118 12.6583 5.45118 12.8536 5.64645C13.0488 5.84171 13.0488 6.15829 12.8536 6.35355L8.35355 10.8536C8.15829 11.0488 7.84171 11.0488 7.64645 10.8536L3.14645 6.35355C2.95118 6.15829 2.95118 5.84171 3.14645 5.64645Z",fill:"currentColor"}))}});var eu=DS("clear",R("svg",{viewBox:"0 0 16 16",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},R("g",{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},R("g",{fill:"currentColor","fill-rule":"nonzero"},R("path",{d:"M8,2 C11.3137085,2 14,4.6862915 14,8 C14,11.3137085 11.3137085,14 8,14 C4.6862915,14 2,11.3137085 2,8 C2,4.6862915 4.6862915,2 8,2 Z M6.5343055,5.83859116 C6.33943736,5.70359511 6.07001296,5.72288026 5.89644661,5.89644661 L5.89644661,5.89644661 L5.83859116,5.9656945 C5.70359511,6.16056264 5.72288026,6.42998704 5.89644661,6.60355339 L5.89644661,6.60355339 L7.293,8 L5.89644661,9.39644661 L5.83859116,9.4656945 C5.70359511,9.66056264 5.72288026,9.92998704 5.89644661,10.1035534 L5.89644661,10.1035534 L5.9656945,10.1614088 C6.16056264,10.2964049 6.42998704,10.2771197 6.60355339,10.1035534 L6.60355339,10.1035534 L8,8.707 L9.39644661,10.1035534 L9.4656945,10.1614088 C9.66056264,10.2964049 9.92998704,10.2771197 10.1035534,10.1035534 L10.1035534,10.1035534 L10.1614088,10.0343055 C10.2964049,9.83943736 10.2771197,9.57001296 10.1035534,9.39644661 L10.1035534,9.39644661 L8.707,8 L10.1035534,6.60355339 L10.1614088,6.5343055 C10.2964049,6.33943736 10.2771197,6.07001296 10.1035534,5.89644661 L10.1035534,5.89644661 L10.0343055,5.83859116 C9.83943736,5.70359511 9.57001296,5.72288026 9.39644661,5.89644661 L9.39644661,5.89644661 L8,7.293 L6.60355339,5.89644661 Z"})))));var Ct=le({name:"BaseIconSwitchTransition",setup(e,{slots:o}){let t=Er();return()=>R(kt,{name:"icon-switch-transition",appear:t.value},o)}});var el=le({name:"FadeInExpandTransition",props:{appear:Boolean,group:Boolean,mode:String,onLeave:Function,onAfterLeave:Function,onAfterEnter:Function,width:Boolean,reverse:Boolean},setup(e,{slots:o}){function t(i){e.width?i.style.maxWidth=`${i.offsetWidth}px`:i.style.maxHeight=`${i.offsetHeight}px`,i.offsetWidth}function r(i){e.width?i.style.maxWidth="0":i.style.maxHeight="0",i.offsetWidth;let{onLeave:d}=e;d&&d()}function a(i){e.width?i.style.maxWidth="":i.style.maxHeight="";let{onAfterLeave:d}=e;d&&d()}function l(i){if(i.style.transition="none",e.width){let d=i.offsetWidth;i.style.maxWidth="0",i.offsetWidth,i.style.transition="",i.style.maxWidth=`${d}px`}else if(e.reverse)i.style.maxHeight=`${i.offsetHeight}px`,i.offsetHeight,i.style.transition="",i.style.maxHeight="0";else{let d=i.offsetHeight;i.style.maxHeight="0",i.offsetWidth,i.style.transition="",i.style.maxHeight=`${d}px`}i.offsetWidth}function n(i){var d;e.width?i.style.maxWidth="":e.reverse||(i.style.maxHeight=""),(d=e.onAfterEnter)===null||d===void 0||d.call(e)}return()=>{let i=e.group?pc:kt;return R(i,{name:e.width?"fade-in-width-expand-transition":"fade-in-height-expand-transition",mode:e.mode,appear:e.appear,onEnter:l,onAfterEnter:n,onBeforeLeave:t,onLeave:r,onAfterLeave:a},o)}}});var PS=K("base-icon",` + `)]);var nt=uo("n-config-provider");var qr="naive-ui-style";function Ie(e){return e}function gS(e,o,t,r,a,l){let n=bt();if(t){let s=()=>{let u=l==null?void 0:l.value;t.mount({id:u===void 0?o:u+o,head:!0,props:{bPrefix:u?`.${u}-`:void 0},anchorMetaName:qr,ssr:n}),Gi.mount({id:"n-global",head:!0,anchorMetaName:qr,ssr:n})};n?s():hr(s)}let i=be(nt,null);return W(()=>{var s;let{theme:{common:u,self:f,peers:m={}}={},themeOverrides:p={},builtinThemeOverrides:c={}}=a,{common:R,peers:b}=p,{common:h=void 0,[e]:{common:k=void 0,self:z=void 0,peers:C={}}={}}=(i==null?void 0:i.mergedThemeRef.value)||{},{common:g=void 0,[e]:v={}}=(i==null?void 0:i.mergedThemeOverridesRef.value)||{},{common:S,peers:F={}}=v,B=Gr({},u||k||h||r.common,g,S,R),y=Gr((s=f||z||r.self)===null||s===void 0?void 0:s(B),c,v,p);return{common:B,self:y,peers:Gr({},r.peers,C,m),peerOverrides:Gr({},F,b)}})}gS.props={theme:Object,themeOverrides:Object,builtinThemeOverrides:Object};var ko=gS;var qi="n";function Wo(e={},o={defaultBordered:!0}){let t=be(nt,null);return{inlineThemeDisabled:t==null?void 0:t.inlineThemeDisabled,mergedRtlRef:t==null?void 0:t.mergedRtlRef,mergedComponentPropsRef:t==null?void 0:t.mergedComponentPropsRef,mergedBreakpointsRef:t==null?void 0:t.mergedBreakpointsRef,mergedBorderedRef:W(()=>{var r,a;let{bordered:l}=e;return l!==void 0?l:(a=(r=t==null?void 0:t.mergedBorderedRef.value)!==null&&r!==void 0?r:o.defaultBordered)!==null&&a!==void 0?a:!0}),mergedClsPrefixRef:W(()=>(t==null?void 0:t.mergedClsPrefixRef.value)||qi),namespaceRef:W(()=>t==null?void 0:t.mergedNamespaceRef.value)}}var ik={name:"en-US",global:{undo:"Undo",redo:"Redo",confirm:"Confirm"},Popconfirm:{positiveText:"Confirm",negativeText:"Cancel"},Cascader:{placeholder:"Please Select",loading:"Loading",loadingRequiredMessage:e=>`Please load all ${e}'s descendants before checking it.`},Time:{dateFormat:"yyyy-MM-dd",dateTimeFormat:"yyyy-MM-dd HH:mm:ss"},DatePicker:{yearFormat:"yyyy",monthFormat:"MMM",dayFormat:"eeeeee",yearTypeFormat:"yyyy",monthTypeFormat:"yyyy-MM",dateFormat:"yyyy-MM-dd",dateTimeFormat:"yyyy-MM-dd HH:mm:ss",quarterFormat:"yyyy-qqq",clear:"Clear",now:"Now",confirm:"Confirm",selectTime:"Select Time",selectDate:"Select Date",datePlaceholder:"Select Date",datetimePlaceholder:"Select Date and Time",monthPlaceholder:"Select Month",yearPlaceholder:"Select Year",quarterPlaceholder:"Select Quarter",startDatePlaceholder:"Start Date",endDatePlaceholder:"End Date",startDatetimePlaceholder:"Start Date and Time",endDatetimePlaceholder:"End Date and Time",monthBeforeYear:!0,firstDayOfWeek:6,today:"Today"},DataTable:{checkTableAll:"Select all in the table",uncheckTableAll:"Unselect all in the table",confirm:"Confirm",clear:"Clear"},Transfer:{sourceTitle:"Source",targetTitle:"Target"},Empty:{description:"No Data"},Select:{placeholder:"Please Select"},TimePicker:{placeholder:"Select Time",positiveText:"OK",negativeText:"Cancel",now:"Now"},Pagination:{goto:"Goto",selectionSuffix:"page"},DynamicTags:{add:"Add"},Log:{loading:"Loading"},Input:{placeholder:"Please Input"},InputNumber:{placeholder:"Please Input"},DynamicInput:{create:"Create"},ThemeEditor:{title:"Theme Editor",clearAllVars:"Clear All Variables",clearSearch:"Clear Search",filterCompName:"Filter Component Name",filterVarName:"Filter Variable Name",import:"Import",export:"Export",restore:"Reset to Default"},Image:{tipPrevious:"Previous picture (\u2190)",tipNext:"Next picture (\u2192)",tipCounterclockwise:"Counterclockwise",tipClockwise:"Clockwise",tipZoomOut:"Zoom out",tipZoomIn:"Zoom in",tipClose:"Close (Esc)"}},Gs=ik;var VS=Jr(HS()),aA={name:"en-US",locale:VS.default},Qs=aA;function tl(e){let{mergedLocaleRef:o,mergedDateLocaleRef:t}=be(nt,null)||{},r=W(()=>{var l,n;return(n=(l=o==null?void 0:o.value)===null||l===void 0?void 0:l[e])!==null&&n!==void 0?n:Gs[e]});return{dateLocaleRef:W(()=>{var l;return(l=t==null?void 0:t.value)!==null&&l!==void 0?l:Qs}),localeRef:r}}function tr(e,o,t){if(!o)return;let r=bt(),a=()=>{let l=t==null?void 0:t.value;o.mount({id:l===void 0?e:l+e,head:!0,anchorMetaName:qr,props:{bPrefix:l?`.${l}-`:void 0},ssr:r}),Gi.mount({id:"n-global",head:!0,anchorMetaName:qr,ssr:r})};r?a():hr(a)}function tt(e,o,t,r){var a;t||di("useThemeClass","cssVarsRef is not passed");let l=(a=be(nt,null))===null||a===void 0?void 0:a.mergedThemeHashRef,n=Q(""),i=bt(),d,s=`__${e}`,u=()=>{let f=s,m=o?o.value:void 0,p=l==null?void 0:l.value;p&&(f+="-"+p),m&&(f+="-"+m);let{themeOverrides:c,builtinThemeOverrides:R}=r;c&&(f+="-"+St(JSON.stringify(c))),R&&(f+="-"+St(JSON.stringify(R))),n.value=f,d=()=>{let b=t.value,h="";for(let k in b)h+=`${k}: ${b[k]};`;Y(`.${f}`,h).mount({id:f,ssr:i}),d=void 0}};return Vo(()=>{u()}),{themeClass:n,onRender:()=>{d==null||d()}}}function WS(e,o){return re({name:Us(e),setup(){var t;let r=(t=be(nt,null))===null||t===void 0?void 0:t.mergedIconsRef;return()=>{var a;let l=(a=r==null?void 0:r.value)===null||a===void 0?void 0:a[e];return l?l():o}}})}var Zs=re({name:"Eye",render(){return w("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},w("path",{d:"M255.66 112c-77.94 0-157.89 45.11-220.83 135.33a16 16 0 0 0-.27 17.77C82.92 340.8 161.8 400 255.66 400c92.84 0 173.34-59.38 221.79-135.25a16.14 16.14 0 0 0 0-17.47C428.89 172.28 347.8 112 255.66 112z",fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"32"}),w("circle",{cx:"256",cy:"256",r:"80",fill:"none",stroke:"currentColor","stroke-miterlimit":"10","stroke-width":"32"}))}});var Ys=re({name:"EyeOff",render(){return w("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},w("path",{d:"M432 448a15.92 15.92 0 0 1-11.31-4.69l-352-352a16 16 0 0 1 22.62-22.62l352 352A16 16 0 0 1 432 448z",fill:"currentColor"}),w("path",{d:"M255.66 384c-41.49 0-81.5-12.28-118.92-36.5c-34.07-22-64.74-53.51-88.7-91v-.08c19.94-28.57 41.78-52.73 65.24-72.21a2 2 0 0 0 .14-2.94L93.5 161.38a2 2 0 0 0-2.71-.12c-24.92 21-48.05 46.76-69.08 76.92a31.92 31.92 0 0 0-.64 35.54c26.41 41.33 60.4 76.14 98.28 100.65C162 402 207.9 416 255.66 416a239.13 239.13 0 0 0 75.8-12.58a2 2 0 0 0 .77-3.31l-21.58-21.58a4 4 0 0 0-3.83-1a204.8 204.8 0 0 1-51.16 6.47z",fill:"currentColor"}),w("path",{d:"M490.84 238.6c-26.46-40.92-60.79-75.68-99.27-100.53C349 110.55 302 96 255.66 96a227.34 227.34 0 0 0-74.89 12.83a2 2 0 0 0-.75 3.31l21.55 21.55a4 4 0 0 0 3.88 1a192.82 192.82 0 0 1 50.21-6.69c40.69 0 80.58 12.43 118.55 37c34.71 22.4 65.74 53.88 89.76 91a.13.13 0 0 1 0 .16a310.72 310.72 0 0 1-64.12 72.73a2 2 0 0 0-.15 2.95l19.9 19.89a2 2 0 0 0 2.7.13a343.49 343.49 0 0 0 68.64-78.48a32.2 32.2 0 0 0-.1-34.78z",fill:"currentColor"}),w("path",{d:"M256 160a95.88 95.88 0 0 0-21.37 2.4a2 2 0 0 0-1 3.38l112.59 112.56a2 2 0 0 0 3.38-1A96 96 0 0 0 256 160z",fill:"currentColor"}),w("path",{d:"M165.78 233.66a2 2 0 0 0-3.38 1a96 96 0 0 0 115 115a2 2 0 0 0 1-3.38z",fill:"currentColor"}))}});var Js=re({name:"Empty",render(){return w("svg",{viewBox:"0 0 28 28",fill:"none",xmlns:"http://www.w3.org/2000/svg"},w("path",{d:"M26 7.5C26 11.0899 23.0899 14 19.5 14C15.9101 14 13 11.0899 13 7.5C13 3.91015 15.9101 1 19.5 1C23.0899 1 26 3.91015 26 7.5ZM16.8536 4.14645C16.6583 3.95118 16.3417 3.95118 16.1464 4.14645C15.9512 4.34171 15.9512 4.65829 16.1464 4.85355L18.7929 7.5L16.1464 10.1464C15.9512 10.3417 15.9512 10.6583 16.1464 10.8536C16.3417 11.0488 16.6583 11.0488 16.8536 10.8536L19.5 8.20711L22.1464 10.8536C22.3417 11.0488 22.6583 11.0488 22.8536 10.8536C23.0488 10.6583 23.0488 10.3417 22.8536 10.1464L20.2071 7.5L22.8536 4.85355C23.0488 4.65829 23.0488 4.34171 22.8536 4.14645C22.6583 3.95118 22.3417 3.95118 22.1464 4.14645L19.5 6.79289L16.8536 4.14645Z",fill:"currentColor"}),w("path",{d:"M25 22.75V12.5991C24.5572 13.0765 24.053 13.4961 23.5 13.8454V16H17.5L17.3982 16.0068C17.0322 16.0565 16.75 16.3703 16.75 16.75C16.75 18.2688 15.5188 19.5 14 19.5C12.4812 19.5 11.25 18.2688 11.25 16.75L11.2432 16.6482C11.1935 16.2822 10.8797 16 10.5 16H4.5V7.25C4.5 6.2835 5.2835 5.5 6.25 5.5H12.2696C12.4146 4.97463 12.6153 4.47237 12.865 4H6.25C4.45507 4 3 5.45507 3 7.25V22.75C3 24.5449 4.45507 26 6.25 26H21.75C23.5449 26 25 24.5449 25 22.75ZM4.5 22.75V17.5H9.81597L9.85751 17.7041C10.2905 19.5919 11.9808 21 14 21L14.215 20.9947C16.2095 20.8953 17.842 19.4209 18.184 17.5H23.5V22.75C23.5 23.7165 22.7165 24.5 21.75 24.5H6.25C5.2835 24.5 4.5 23.7165 4.5 22.75Z",fill:"currentColor"}))}});var Xs=re({name:"Switcher",render(){return w("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32"},w("path",{d:"M12 8l10 8l-10 8z"}))}});var eu=re({name:"ChevronDown",render(){return w("svg",{viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},w("path",{d:"M3.14645 5.64645C3.34171 5.45118 3.65829 5.45118 3.85355 5.64645L8 9.79289L12.1464 5.64645C12.3417 5.45118 12.6583 5.45118 12.8536 5.64645C13.0488 5.84171 13.0488 6.15829 12.8536 6.35355L8.35355 10.8536C8.15829 11.0488 7.84171 11.0488 7.64645 10.8536L3.14645 6.35355C2.95118 6.15829 2.95118 5.84171 3.14645 5.64645Z",fill:"currentColor"}))}});var ou=WS("clear",w("svg",{viewBox:"0 0 16 16",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},w("g",{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},w("g",{fill:"currentColor","fill-rule":"nonzero"},w("path",{d:"M8,2 C11.3137085,2 14,4.6862915 14,8 C14,11.3137085 11.3137085,14 8,14 C4.6862915,14 2,11.3137085 2,8 C2,4.6862915 4.6862915,2 8,2 Z M6.5343055,5.83859116 C6.33943736,5.70359511 6.07001296,5.72288026 5.89644661,5.89644661 L5.89644661,5.89644661 L5.83859116,5.9656945 C5.70359511,6.16056264 5.72288026,6.42998704 5.89644661,6.60355339 L5.89644661,6.60355339 L7.293,8 L5.89644661,9.39644661 L5.83859116,9.4656945 C5.70359511,9.66056264 5.72288026,9.92998704 5.89644661,10.1035534 L5.89644661,10.1035534 L5.9656945,10.1614088 C6.16056264,10.2964049 6.42998704,10.2771197 6.60355339,10.1035534 L6.60355339,10.1035534 L8,8.707 L9.39644661,10.1035534 L9.4656945,10.1614088 C9.66056264,10.2964049 9.92998704,10.2771197 10.1035534,10.1035534 L10.1035534,10.1035534 L10.1614088,10.0343055 C10.2964049,9.83943736 10.2771197,9.57001296 10.1035534,9.39644661 L10.1035534,9.39644661 L8.707,8 L10.1035534,6.60355339 L10.1614088,6.5343055 C10.2964049,6.33943736 10.2771197,6.07001296 10.1035534,5.89644661 L10.1035534,5.89644661 L10.0343055,5.83859116 C9.83943736,5.70359511 9.57001296,5.72288026 9.39644661,5.89644661 L9.39644661,5.89644661 L8,7.293 L6.60355339,5.89644661 Z"})))));var Dt=re({name:"BaseIconSwitchTransition",setup(e,{slots:o}){let t=Wr();return()=>w(Et,{name:"icon-switch-transition",appear:t.value},o)}});var rl=re({name:"FadeInExpandTransition",props:{appear:Boolean,group:Boolean,mode:String,onLeave:Function,onAfterLeave:Function,onAfterEnter:Function,width:Boolean,reverse:Boolean},setup(e,{slots:o}){function t(i){e.width?i.style.maxWidth=`${i.offsetWidth}px`:i.style.maxHeight=`${i.offsetHeight}px`,i.offsetWidth}function r(i){e.width?i.style.maxWidth="0":i.style.maxHeight="0",i.offsetWidth;let{onLeave:d}=e;d&&d()}function a(i){e.width?i.style.maxWidth="":i.style.maxHeight="";let{onAfterLeave:d}=e;d&&d()}function l(i){if(i.style.transition="none",e.width){let d=i.offsetWidth;i.style.maxWidth="0",i.offsetWidth,i.style.transition="",i.style.maxWidth=`${d}px`}else if(e.reverse)i.style.maxHeight=`${i.offsetHeight}px`,i.offsetHeight,i.style.transition="",i.style.maxHeight="0";else{let d=i.offsetHeight;i.style.maxHeight="0",i.offsetWidth,i.style.transition="",i.style.maxHeight=`${d}px`}i.offsetWidth}function n(i){var d;e.width?i.style.maxWidth="":e.reverse||(i.style.maxHeight=""),(d=e.onAfterEnter)===null||d===void 0||d.call(e)}return()=>{let i=e.group?Fc:Et;return w(i,{name:e.width?"fade-in-width-expand-transition":"fade-in-height-expand-transition",mode:e.mode,appear:e.appear,onEnter:l,onAfterEnter:n,onBeforeLeave:t,onLeave:r,onAfterLeave:a},o)}}});var zS=$("base-icon",` height: 1em; width: 1em; line-height: 1em; @@ -39,7 +39,7 @@ ${o} position: relative; fill: currentColor; transform: translateZ(0); -`,[Y("svg",{height:"1em",width:"1em"})]);var bt=le({name:"BaseIcon",props:{role:String,ariaLabel:String,ariaDisabled:{type:Boolean,default:void 0},ariaHidden:{type:Boolean,default:void 0},clsPrefix:{type:String,required:!0},onClick:Function,onMousedown:Function,onMouseup:Function},setup(e){Zt("-base-icon",PS,De(e,"clsPrefix"))},render(){return R("i",{class:`${this.clsPrefix}-base-icon`,onClick:this.onClick,onMousedown:this.onMousedown,onMouseup:this.onMouseup,role:this.role,"aria-label":this.ariaLabel,"aria-hidden":this.ariaHidden,"aria-disabled":this.ariaDisabled},this.$slots)}});var{cubicBezierEaseInOut:Wk}=Uo;function ut({originalTransform:e="",left:o=0,top:t=0,transition:r=`all .3s ${Wk} !important`}={}){return[Y("&.icon-switch-transition-enter-from, &.icon-switch-transition-leave-to",{transform:e+" scale(0.75)",left:o,top:t,opacity:0}),Y("&.icon-switch-transition-enter-to, &.icon-switch-transition-leave-from",{transform:`scale(1) ${e}`,left:o,top:t,opacity:1}),Y("&.icon-switch-transition-enter-active, &.icon-switch-transition-leave-active",{transformOrigin:"center",position:"absolute",left:o,top:t,transition:r})]}var MS=Y([Y("@keyframes loading-container-rotate",` +`,[Y("svg",{height:"1em",width:"1em"})]);var Pt=re({name:"BaseIcon",props:{role:String,ariaLabel:String,ariaDisabled:{type:Boolean,default:void 0},ariaHidden:{type:Boolean,default:void 0},clsPrefix:{type:String,required:!0},onClick:Function,onMousedown:Function,onMouseup:Function},setup(e){tr("-base-icon",zS,_e(e,"clsPrefix"))},render(){return w("i",{class:`${this.clsPrefix}-base-icon`,onClick:this.onClick,onMousedown:this.onMousedown,onMouseup:this.onMouseup,role:this.role,"aria-label":this.ariaLabel,"aria-hidden":this.ariaHidden,"aria-disabled":this.ariaDisabled},this.$slots)}});var{cubicBezierEaseInOut:lA}=ot;function gt({originalTransform:e="",left:o=0,top:t=0,transition:r=`all .3s ${lA} !important`}={}){return[Y("&.icon-switch-transition-enter-from, &.icon-switch-transition-leave-to",{transform:e+" scale(0.75)",left:o,top:t,opacity:0}),Y("&.icon-switch-transition-enter-to, &.icon-switch-transition-leave-from",{transform:`scale(1) ${e}`,left:o,top:t,opacity:1}),Y("&.icon-switch-transition-enter-active, &.icon-switch-transition-leave-active",{transformOrigin:"center",position:"absolute",left:o,top:t,transition:r})]}var jS=Y([Y("@keyframes loading-container-rotate",` to { -webkit-transform: rotate(360deg); transform: rotate(360deg); @@ -103,16 +103,16 @@ ${o} -webkit-transform: rotate(-265deg); transform: rotate(-265deg); } - `),K("base-loading",` + `),$("base-loading",` position: relative; line-height: 0; width: 1em; height: 1em; - `,[J("transition-wrapper",` + `,[X("transition-wrapper",` position: absolute; width: 100%; height: 100%; - `,[ut()]),J("container",` + `,[gt()]),X("container",` display: inline-flex; position: relative; direction: ltr; @@ -124,27 +124,27 @@ ${o} opacity: 1; width: 100%; height: 100%; - `,[J("svg",` + `,[X("svg",` stroke: var(--n-text-color); fill: transparent; position: absolute; height: 100%; overflow: hidden; - `),J("container-layer",` + `),X("container-layer",` position: absolute; width: 100%; height: 100%; animation: loading-layer-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - `,[J("container-layer-left",` + `,[X("container-layer-left",` display: inline-flex; position: relative; width: 50%; height: 100%; overflow: hidden; - `,[J("svg",` + `,[X("svg",` animation: loading-left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; width: 200%; - `)]),J("container-layer-patch",` + `)]),X("container-layer-patch",` position: absolute; top: 0; left: 47.5%; @@ -152,31 +152,31 @@ ${o} width: 5%; height: 100%; overflow: hidden; - `,[J("svg",` + `,[X("svg",` left: -900%; width: 2000%; transform: rotate(180deg); - `)]),J("container-layer-right",` + `)]),X("container-layer-right",` display: inline-flex; position: relative; width: 50%; height: 100%; overflow: hidden; - `,[J("svg",` + `,[X("svg",` animation: loading-right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; left: -100%; width: 200%; - `)])])]),J("placeholder",` + `)])])]),X("placeholder",` position: absolute; left: 50%; top: 50%; transform: translateX(-50%) translateY(-50%); - `,[ut({left:"50%",top:"50%",originalTransform:"translateX(-50%) translateY(-50%)"})])])]);var jr=le({name:"BaseLoading",props:{clsPrefix:{type:String,required:!0},scale:{type:Number,default:1},radius:{type:Number,default:100},strokeWidth:{type:Number,default:28},stroke:{type:String,default:void 0},show:{type:Boolean,default:!0}},setup(e){Zt("-base-loading",MS,De(e,"clsPrefix"))},render(){let{clsPrefix:e,radius:o,strokeWidth:t,stroke:r,scale:a}=this,l=o/a;return R("div",{class:`${e}-base-loading`,role:"img","aria-label":"loading"},R(Ct,null,{default:()=>this.show?R("div",{key:"icon",class:`${e}-base-loading__transition-wrapper`},R("div",{class:`${e}-base-loading__container`},R("div",{class:`${e}-base-loading__container-layer`},R("div",{class:`${e}-base-loading__container-layer-left`},R("svg",{class:`${e}-base-loading__svg`,viewBox:`0 0 ${2*l} ${2*l}`,xmlns:"http://www.w3.org/2000/svg",style:{color:r}},R("circle",{fill:"none",stroke:"currentColor","stroke-width":t,"stroke-linecap":"round",cx:l,cy:l,r:o-t/2,"stroke-dasharray":4.91*o,"stroke-dashoffset":2.46*o}))),R("div",{class:`${e}-base-loading__container-layer-patch`},R("svg",{class:`${e}-base-loading__svg`,viewBox:`0 0 ${2*l} ${2*l}`,xmlns:"http://www.w3.org/2000/svg",style:{color:r}},R("circle",{fill:"none",stroke:"currentColor","stroke-width":t,"stroke-linecap":"round",cx:l,cy:l,r:o-t/2,"stroke-dasharray":4.91*o,"stroke-dashoffset":2.46*o}))),R("div",{class:`${e}-base-loading__container-layer-right`},R("svg",{class:`${e}-base-loading__svg`,viewBox:`0 0 ${2*l} ${2*l}`,xmlns:"http://www.w3.org/2000/svg",style:{color:r}},R("circle",{fill:"none",stroke:"currentColor","stroke-width":t,"stroke-linecap":"round",cx:l,cy:l,r:o-t/2,"stroke-dasharray":4.91*o,"stroke-dashoffset":2.46*o})))))):R("div",{key:"placeholder",class:`${e}-base-loading__placeholder`},this.$slots)}))}});function ou(e){return Array.isArray(e)?e:[e]}var Yi={STOP:"STOP"};function tu(e,o){let t=o(e);e.children!==void 0&&t!==Yi.STOP&&e.children.forEach(r=>tu(r,o))}function BS(e,o={}){let{preserveGroup:t=!1}=o,r=[],a=t?n=>{n.isLeaf||(r.push(n.key),l(n.children))}:n=>{n.isLeaf||(n.isGroup||r.push(n.key),l(n.children))};function l(n){n.forEach(a)}return l(e),r}function LS(e,o){let{isLeaf:t}=e;return t!==void 0?t:!o(e)}function ES(e){return e.children}function NS(e){return e.key}function _S(){return!1}function IS(e,o){let{isLeaf:t}=e;return!(t===!1&&!Array.isArray(o(e)))}function HS(e){return e.disabled===!0}function WS(e,o){return e.isLeaf===!1&&!Array.isArray(o(e))}function Ji(e){var o;return e==null?[]:Array.isArray(e)?e:(o=e.checkedKeys)!==null&&o!==void 0?o:[]}function Xi(e){var o;return e==null||Array.isArray(e)?[]:(o=e.indeterminateKeys)!==null&&o!==void 0?o:[]}function VS(e,o){let t=new Set(e);return o.forEach(r=>{t.has(r)||t.add(r)}),Array.from(t)}function zS(e,o){let t=new Set(e);return o.forEach(r=>{t.has(r)&&t.delete(r)}),Array.from(t)}function jS(e){return(e==null?void 0:e.type)==="group"}function ru(e){let o=new Map;return e.forEach((t,r)=>{o.set(t.key,r)}),t=>{var r;return(r=o.get(t))!==null&&r!==void 0?r:null}}var $S=class extends Error{constructor(){super();this.message="SubtreeNotLoadedError: checking a subtree whose required nodes are not fully loaded."}};function Vk(e,o,t,r){return od(o.concat(e),t,r,!1)}function zk(e,o){let t=new Set;return e.forEach(r=>{let a=o.treeNodeMap.get(r);if(a!==void 0){let l=a.parent;for(;l!==null&&!(l.disabled||t.has(l.key));)t.add(l.key),l=l.parent}}),t}function jk(e,o,t,r){let a=od(o,t,r,!1),l=od(e,t,r,!0),n=zk(e,t),i=[];return a.forEach(d=>{(l.has(d)||n.has(d))&&i.push(d)}),i.forEach(d=>a.delete(d)),a}function ed(e,o){let{checkedKeys:t,keysToCheck:r,keysToUncheck:a,indeterminateKeys:l,cascade:n,leafOnly:i,checkStrategy:d,allowNotLoaded:s}=e;if(!n)return r!==void 0?{checkedKeys:VS(t,r),indeterminateKeys:Array.from(l)}:a!==void 0?{checkedKeys:zS(t,a),indeterminateKeys:Array.from(l)}:{checkedKeys:Array.from(t),indeterminateKeys:Array.from(l)};let{levelTreeNodeMap:u}=o,f;a!==void 0?f=jk(a,t,o,s):r!==void 0?f=Vk(r,t,o,s):f=od(t,o,s,!1);let c=d==="parent",p=d==="child"||i,x=f,T=new Set,C=Math.max.apply(null,Array.from(u.keys()));for(let S=C;S>=0;S-=1){let D=S===0,j=u.get(S);for(let O of j){if(O.isLeaf)continue;let{key:g,shallowLoaded:v}=O;if(p&&v&&O.children.forEach(y=>{!y.disabled&&!y.isLeaf&&y.shallowLoaded&&x.has(y.key)&&x.delete(y.key)}),O.disabled||!v)continue;let w=!0,F=!1,B=!0;for(let y of O.children){let W=y.key;if(!y.disabled){if(B&&(B=!1),x.has(W))F=!0;else if(T.has(W)){F=!0,w=!1;break}else if(w=!1,F)break}}w&&!B?(c&&O.children.forEach(y=>{!y.disabled&&x.has(y.key)&&x.delete(y.key)}),x.add(g)):F&&T.add(g),D&&p&&x.has(g)&&x.delete(g)}}return{checkedKeys:Array.from(x),indeterminateKeys:Array.from(T)}}function od(e,o,t,r){let{treeNodeMap:a,getChildren:l}=o,n=new Set,i=new Set(e);return e.forEach(d=>{let s=a.get(d);s!==void 0&&tu(s,u=>{if(u.disabled)return Yi.STOP;let{key:f}=u;if(!n.has(f)&&(n.add(f),i.add(f),WS(u.rawNode,l))){if(r)return Yi.STOP;if(!t)throw new $S}})}),i}function US(e,{includeGroup:o=!1,includeSelf:t=!0},r){var a;let l=r.treeNodeMap,n=e==null?null:(a=l.get(e))!==null&&a!==void 0?a:null,i={keyPath:[],treeNodePath:[],treeNode:n};if(n==null?void 0:n.ignored)return i.treeNode=null,i;for(;n;)!n.ignored&&(o||!n.isGroup)&&i.treeNodePath.push(n),n=n.parent;return i.treeNodePath.reverse(),t||i.treeNodePath.pop(),i.keyPath=i.treeNodePath.map(d=>d.key),i}function KS(e){if(e.length===0)return null;let o=e[0];return o.isGroup||o.ignored||o.disabled?o.getNext():o}function $k(e,o){let t=e.siblings,r=t.length,{index:a}=e;return o?t[(a+1)%r]:a===t.length-1?null:t[a+1]}function GS(e,o,{loop:t=!1,includeDisabled:r=!1}={}){let a=o==="prev"?Uk:$k,l={reverse:o==="prev"},n=!1,i=null;function d(s){if(s!==null){if(s===e){if(!n)n=!0;else if(!e.disabled&&!e.isGroup){i=e;return}}else if((!s.disabled||r)&&!s.ignored&&!s.isGroup){i=s;return}if(s.isGroup){let u=au(s,l);u!==null?i=u:d(a(s,t))}else{let u=a(s,!1);if(u!==null)d(u);else{let f=Kk(s);(f==null?void 0:f.isGroup)?d(a(f,t)):t&&d(a(s,!0))}}}}return d(e),i}function Uk(e,o){let t=e.siblings,r=t.length,{index:a}=e;return o?t[(a-1+r)%r]:a===0?null:t[a-1]}function Kk(e){return e.parent}function au(e,o={}){let{reverse:t=!1}=o,{children:r}=e;if(r){let{length:a}=r,l=t?a-1:0,n=t?-1:a,i=t?-1:1;for(let d=l;d!==n;d+=i){let s=r[d];if(!s.disabled&&!s.ignored)if(s.isGroup){let u=au(s,o);if(u!==null)return u}else return s}}return null}var qS={getChild(){return this.ignored?null:au(this)},getParent(){let{parent:e}=this;return(e==null?void 0:e.isGroup)?e.getParent():e},getNext(e={}){return GS(this,"next",e)},getPrev(e={}){return GS(this,"prev",e)}};function ol(e,o){let t=o?new Set(o):void 0,r=[];function a(l){l.forEach(n=>{r.push(n),!(n.isLeaf||!n.children||n.ignored)&&(n.isGroup||t===void 0||t.has(n.key))&&a(n.children)})}return a(e),r}function QS(e,o){let t=e.key;for(;o;){if(o.key===t)return!0;o=o.parent}return!1}function ZS(e,o,t,r,a,l=null,n=0){let i=[];return e.forEach((d,s)=>{var u;let f=Object.create(r);if(f.rawNode=d,f.siblings=i,f.level=n,f.index=s,f.isFirstChild=s===0,f.isLastChild=s+1===e.length,f.parent=l,!f.ignored){let c=a(d);Array.isArray(c)&&(f.children=ZS(c,o,t,r,a,f,n+1))}i.push(f),o.set(f.key,f),t.has(n)||t.set(n,[]),(u=t.get(n))===null||u===void 0||u.push(f)}),i}function lu(e,o={}){var t;let r=new Map,a=new Map,{getDisabled:l=HS,getIgnored:n=_S,getIsGroup:i=jS,getKey:d=NS}=o,s=(t=o.getChildren)!==null&&t!==void 0?t:ES,u=o.ignoreEmptyChildren?O=>{let g=s(O);return Array.isArray(g)?g.length?g:null:g}:s,f=Object.assign({get key(){return d(this.rawNode)},get disabled(){return l(this.rawNode)},get isGroup(){return i(this.rawNode)},get isLeaf(){return LS(this.rawNode,u)},get shallowLoaded(){return IS(this.rawNode,u)},get ignored(){return n(this.rawNode)},contains(O){return QS(this,O)}},qS),c=ZS(e,r,a,f,u);function p(O){if(O==null)return null;let g=r.get(O);return g&&!g.isGroup&&!g.ignored?g:null}function x(O){if(O==null)return null;let g=r.get(O);return g&&!g.ignored?g:null}function T(O,g){let v=x(O);return v?v.getPrev(g):null}function C(O,g){let v=x(O);return v?v.getNext(g):null}function S(O){let g=x(O);return g?g.getParent():null}function D(O){let g=x(O);return g?g.getChild():null}let j={treeNodes:c,treeNodeMap:r,levelTreeNodeMap:a,maxLevel:Math.max(...a.keys()),getChildren:u,getFlattenedNodes(O){return ol(c,O)},getNode:p,getPrev:T,getNext:C,getParent:S,getChild:D,getFirstAvailableNode(){return KS(c)},getPath(O,g={}){return US(O,g,j)},getCheckedKeys(O,g={}){let{cascade:v=!0,leafOnly:w=!1,checkStrategy:F="all",allowNotLoaded:B=!1}=g;return ed({checkedKeys:Ji(O),indeterminateKeys:Xi(O),cascade:v,leafOnly:w,checkStrategy:F,allowNotLoaded:B},j)},check(O,g,v={}){let{cascade:w=!0,leafOnly:F=!1,checkStrategy:B="all",allowNotLoaded:y=!1}=v;return ed({checkedKeys:Ji(g),indeterminateKeys:Xi(g),keysToCheck:O==null?[]:ou(O),cascade:w,leafOnly:F,checkStrategy:B,allowNotLoaded:y},j)},uncheck(O,g,v={}){let{cascade:w=!0,leafOnly:F=!1,checkStrategy:B="all",allowNotLoaded:y=!1}=v;return ed({checkedKeys:Ji(g),indeterminateKeys:Xi(g),keysToUncheck:O==null?[]:ou(O),cascade:w,leafOnly:F,checkStrategy:B,allowNotLoaded:y},j)},getNonLeafKeys(O={}){return BS(c,O)}};return j}var ue={neutralBase:"#000",neutralInvertBase:"#fff",neutralTextBase:"#fff",neutralPopover:"rgb(72, 72, 78)",neutralCard:"rgb(24, 24, 28)",neutralModal:"rgb(44, 44, 50)",neutralBody:"rgb(16, 16, 20)",alpha1:"0.9",alpha2:"0.82",alpha3:"0.52",alpha4:"0.38",alpha5:"0.28",alphaClose:"0.52",alphaDisabled:"0.38",alphaDisabledInput:"0.06",alphaPending:"0.09",alphaTablePending:"0.06",alphaTableStriped:"0.05",alphaPressed:"0.05",alphaAvatar:"0.18",alphaRail:"0.2",alphaProgressRail:"0.12",alphaBorder:"0.24",alphaDivider:"0.09",alphaInput:"0.1",alphaAction:"0.06",alphaTab:"0.04",alphaScrollbar:"0.2",alphaScrollbarHover:"0.3",alphaCode:"0.12",alphaTag:"0",primaryHover:"#7fe7c4",primaryDefault:"#63e2b7",primaryActive:"#5acea7",primarySuppl:"rgb(42, 148, 125)",infoHover:"#8acbec",infoDefault:"#70c0e8",infoActive:"#66afd3",infoSuppl:"rgb(56, 137, 197)",errorHover:"#e98b8b",errorDefault:"#e88080",errorActive:"#e57272",errorSuppl:"rgb(208, 58, 82)",warningHover:"#f5d599",warningDefault:"#f2c97d",warningActive:"#e6c260",warningSuppl:"rgb(240, 138, 0)",successHover:"#7fe7c4",successDefault:"#63e2b7",successActive:"#5acea7",successSuppl:"rgb(42, 148, 125)"},Gk=gt(ue.neutralBase),YS=gt(ue.neutralInvertBase),qk="rgba("+YS.slice(0,3).join(", ")+", ";function Ue(e){return qk+String(e)+")"}function Qk(e){let o=Array.from(YS);return o[3]=Number(e),me(Gk,o)}var Zk=Object.assign(Object.assign({name:"common"},Uo),{baseColor:ue.neutralBase,primaryColor:ue.primaryDefault,primaryColorHover:ue.primaryHover,primaryColorPressed:ue.primaryActive,primaryColorSuppl:ue.primarySuppl,infoColor:ue.infoDefault,infoColorHover:ue.infoHover,infoColorPressed:ue.infoActive,infoColorSuppl:ue.infoSuppl,successColor:ue.successDefault,successColorHover:ue.successHover,successColorPressed:ue.successActive,successColorSuppl:ue.successSuppl,warningColor:ue.warningDefault,warningColorHover:ue.warningHover,warningColorPressed:ue.warningActive,warningColorSuppl:ue.warningSuppl,errorColor:ue.errorDefault,errorColorHover:ue.errorHover,errorColorPressed:ue.errorActive,errorColorSuppl:ue.errorSuppl,textColorBase:ue.neutralTextBase,textColor1:Ue(ue.alpha1),textColor2:Ue(ue.alpha2),textColor3:Ue(ue.alpha3),textColorDisabled:Ue(ue.alpha4),placeholderColor:Ue(ue.alpha4),placeholderColorDisabled:Ue(ue.alpha5),iconColor:Ue(ue.alpha4),iconColorDisabled:Ue(ue.alpha5),iconColorHover:Ue(Number(ue.alpha4)*1.25),iconColorPressed:Ue(Number(ue.alpha4)*.8),opacity1:ue.alpha1,opacity2:ue.alpha2,opacity3:ue.alpha3,opacity4:ue.alpha4,opacity5:ue.alpha5,dividerColor:Ue(ue.alphaDivider),borderColor:Ue(ue.alphaBorder),closeColorHover:Ue(Number(ue.alphaClose)*1.25),closeColor:Ue(Number(ue.alphaClose)),closeColorPressed:Ue(Number(ue.alphaClose)*.8),closeColorDisabled:Ue(ue.alpha4),clearColor:Ue(ue.alpha4),clearColorHover:ur(Ue(ue.alpha4),{alpha:1.25}),clearColorPressed:ur(Ue(ue.alpha4),{alpha:.8}),scrollbarColor:Ue(ue.alphaScrollbar),scrollbarColorHover:Ue(ue.alphaScrollbarHover),scrollbarWidth:"5px",scrollbarHeight:"5px",scrollbarBorderRadius:"5px",progressRailColor:Ue(ue.alphaProgressRail),railColor:Ue(ue.alphaRail),popoverColor:ue.neutralPopover,tableColor:ue.neutralCard,cardColor:ue.neutralCard,modalColor:ue.neutralModal,bodyColor:ue.neutralBody,tagColor:Qk(ue.alphaTag),avatarColor:Ue(ue.alphaAvatar),invertedColor:ue.neutralBase,inputColor:Ue(ue.alphaInput),codeColor:Ue(ue.alphaCode),tabColor:Ue(ue.alphaTab),actionColor:Ue(ue.alphaAction),tableHeaderColor:Ue(ue.alphaAction),hoverColor:Ue(ue.alphaPending),tableColorHover:Ue(ue.alphaTablePending),tableColorStriped:Ue(ue.alphaTableStriped),pressedColor:Ue(ue.alphaPressed),opacityDisabled:ue.alphaDisabled,inputColorDisabled:Ue(ue.alphaDisabledInput),buttonColor2:"rgba(255, 255, 255, .06)",buttonColor2Hover:"rgba(255, 255, 255, .09)",buttonColor2Pressed:"rgba(255, 255, 255, .05)",boxShadow1:"0 1px 2px -2px rgba(0, 0, 0, .24), 0 3px 6px 0 rgba(0, 0, 0, .18), 0 5px 12px 4px rgba(0, 0, 0, .12)",boxShadow2:"0 3px 6px -4px rgba(0, 0, 0, .24), 0 6px 12px 0 rgba(0, 0, 0, .16), 0 9px 18px 8px rgba(0, 0, 0, .10)",boxShadow3:"0 6px 16px -9px rgba(0, 0, 0, .08), 0 9px 28px 0 rgba(0, 0, 0, .05), 0 12px 48px 16px rgba(0, 0, 0, .03)"}),P=Zk;var Fe={neutralBase:"#FFF",neutralInvertBase:"#000",neutralTextBase:"#000",neutralPopover:"#fff",neutralCard:"#fff",neutralModal:"#fff",neutralBody:"#fff",alpha1:"0.82",alpha2:"0.72",alpha3:"0.38",alpha4:"0.24",alpha5:"0.18",alphaClose:"0.52",alphaDisabled:"0.5",alphaDisabledInput:"0.02",alphaPending:"0.05",alphaTablePending:"0.02",alphaPressed:"0.07",alphaAvatar:"0.2",alphaRail:"0.14",alphaProgressRail:".08",alphaBorder:"0.12",alphaDivider:"0.06",alphaInput:"0",alphaAction:"0.02",alphaTab:"0.04",alphaScrollbar:"0.25",alphaScrollbarHover:"0.4",alphaCode:"0.05",alphaTag:"0.02",primaryHover:"#36ad6a",primaryDefault:"#18a058",primaryActive:"#0c7a43",primarySuppl:"#36ad6a",infoHover:"#4098fc",infoDefault:"#2080f0",infoActive:"#1060c9",infoSuppl:"#4098fc",errorHover:"#de576d",errorDefault:"#d03050",errorActive:"#ab1f3f",errorSuppl:"#de576d",warningHover:"#fcb040",warningDefault:"#f0a020",warningActive:"#c97c10",warningSuppl:"#fcb040",successHover:"#36ad6a",successDefault:"#18a058",successActive:"#0c7a43",successSuppl:"#36ad6a"},Yk=gt(Fe.neutralBase),JS=gt(Fe.neutralInvertBase),Jk="rgba("+JS.slice(0,3).join(", ")+", ";function XS(e){return Jk+String(e)+")"}function Wo(e){let o=Array.from(JS);return o[3]=Number(e),me(Yk,o)}var Xk=Object.assign(Object.assign({name:"common"},Uo),{baseColor:Fe.neutralBase,primaryColor:Fe.primaryDefault,primaryColorHover:Fe.primaryHover,primaryColorPressed:Fe.primaryActive,primaryColorSuppl:Fe.primarySuppl,infoColor:Fe.infoDefault,infoColorHover:Fe.infoHover,infoColorPressed:Fe.infoActive,infoColorSuppl:Fe.infoSuppl,successColor:Fe.successDefault,successColorHover:Fe.successHover,successColorPressed:Fe.successActive,successColorSuppl:Fe.successSuppl,warningColor:Fe.warningDefault,warningColorHover:Fe.warningHover,warningColorPressed:Fe.warningActive,warningColorSuppl:Fe.warningSuppl,errorColor:Fe.errorDefault,errorColorHover:Fe.errorHover,errorColorPressed:Fe.errorActive,errorColorSuppl:Fe.errorSuppl,textColorBase:Fe.neutralTextBase,textColor1:"rgb(31, 34, 37)",textColor2:"rgb(51, 54, 57)",textColor3:"rgb(118, 124, 130)",textColorDisabled:Wo(Fe.alpha4),placeholderColor:Wo(Fe.alpha4),placeholderColorDisabled:Wo(Fe.alpha5),iconColor:Wo(Fe.alpha4),iconColorHover:ur(Wo(Fe.alpha4),{lightness:.75}),iconColorPressed:ur(Wo(Fe.alpha4),{lightness:.9}),iconColorDisabled:Wo(Fe.alpha5),opacity1:Fe.alpha1,opacity2:Fe.alpha2,opacity3:Fe.alpha3,opacity4:Fe.alpha4,opacity5:Fe.alpha5,dividerColor:"rgb(239, 239, 245)",borderColor:"rgb(224, 224, 230)",closeColor:Wo(Number(Fe.alphaClose)),closeColorHover:Wo(Number(Fe.alphaClose)*1.25),closeColorPressed:Wo(Number(Fe.alphaClose)*.8),closeColorDisabled:Wo(Fe.alpha4),clearColor:Wo(Fe.alpha4),clearColorHover:ur(Wo(Fe.alpha4),{lightness:.75}),clearColorPressed:ur(Wo(Fe.alpha4),{lightness:.9}),scrollbarColor:XS(Fe.alphaScrollbar),scrollbarColorHover:XS(Fe.alphaScrollbarHover),scrollbarWidth:"5px",scrollbarHeight:"5px",scrollbarBorderRadius:"5px",progressRailColor:Wo(Fe.alphaProgressRail),railColor:"rgb(219, 219, 223)",popoverColor:Fe.neutralPopover,tableColor:Fe.neutralCard,cardColor:Fe.neutralCard,modalColor:Fe.neutralModal,bodyColor:Fe.neutralBody,tagColor:"rgb(250, 250, 252)",avatarColor:Wo(Fe.alphaAvatar),invertedColor:"rgb(0, 20, 40)",inputColor:Wo(Fe.alphaInput),codeColor:"rgb(244, 244, 248)",tabColor:"rgb(247, 247, 250)",actionColor:"rgb(250, 250, 252)",tableHeaderColor:"rgb(250, 250, 252)",hoverColor:"rgb(243, 243, 245)",tableColorHover:"rgba(0, 0, 100, 0.03)",tableColorStriped:"rgba(0, 0, 100, 0.02)",pressedColor:"rgb(237, 237, 239)",opacityDisabled:Fe.alphaDisabled,inputColorDisabled:"rgb(250, 250, 252)",buttonColor2:"rgba(46, 51, 56, .05)",buttonColor2Hover:"rgba(46, 51, 56, .09)",buttonColor2Pressed:"rgba(46, 51, 56, .13)",boxShadow1:"0 1px 2px -2px rgba(0, 0, 0, .08), 0 3px 6px 0 rgba(0, 0, 0, .06), 0 5px 12px 4px rgba(0, 0, 0, .04)",boxShadow2:"0 3px 6px -4px rgba(0, 0, 0, .12), 0 6px 16px 0 rgba(0, 0, 0, .08), 0 9px 28px 8px rgba(0, 0, 0, .05)",boxShadow3:"0 6px 16px -9px rgba(0, 0, 0, .08), 0 9px 28px 0 rgba(0, 0, 0, .05), 0 12px 48px 16px rgba(0, 0, 0, .03)"}),pe=Xk;var eg={iconSizeSmall:"34px",iconSizeMedium:"40px",iconSizeLarge:"46px",iconSizeHuge:"52px"};var nu=e=>{let{textColorDisabled:o,iconColor:t,textColor2:r,fontSizeSmall:a,fontSizeMedium:l,fontSizeLarge:n,fontSizeHuge:i}=e;return Object.assign(Object.assign({},eg),{fontSizeSmall:a,fontSizeMedium:l,fontSizeLarge:n,fontSizeHuge:i,textColor:o,iconColor:t,extraTextColor:r})},eA={name:"Empty",common:pe,self:nu},ft=eA;var oA={name:"Empty",common:P,self:nu},pt=oA;var og=K("empty",` + `,[gt({left:"50%",top:"50%",originalTransform:"translateX(-50%) translateY(-50%)"})])])]);var Qr=re({name:"BaseLoading",props:{clsPrefix:{type:String,required:!0},scale:{type:Number,default:1},radius:{type:Number,default:100},strokeWidth:{type:Number,default:28},stroke:{type:String,default:void 0},show:{type:Boolean,default:!0}},setup(e){tr("-base-loading",jS,_e(e,"clsPrefix"))},render(){let{clsPrefix:e,radius:o,strokeWidth:t,stroke:r,scale:a}=this,l=o/a;return w("div",{class:`${e}-base-loading`,role:"img","aria-label":"loading"},w(Dt,null,{default:()=>this.show?w("div",{key:"icon",class:`${e}-base-loading__transition-wrapper`},w("div",{class:`${e}-base-loading__container`},w("div",{class:`${e}-base-loading__container-layer`},w("div",{class:`${e}-base-loading__container-layer-left`},w("svg",{class:`${e}-base-loading__svg`,viewBox:`0 0 ${2*l} ${2*l}`,xmlns:"http://www.w3.org/2000/svg",style:{color:r}},w("circle",{fill:"none",stroke:"currentColor","stroke-width":t,"stroke-linecap":"round",cx:l,cy:l,r:o-t/2,"stroke-dasharray":4.91*o,"stroke-dashoffset":2.46*o}))),w("div",{class:`${e}-base-loading__container-layer-patch`},w("svg",{class:`${e}-base-loading__svg`,viewBox:`0 0 ${2*l} ${2*l}`,xmlns:"http://www.w3.org/2000/svg",style:{color:r}},w("circle",{fill:"none",stroke:"currentColor","stroke-width":t,"stroke-linecap":"round",cx:l,cy:l,r:o-t/2,"stroke-dasharray":4.91*o,"stroke-dashoffset":2.46*o}))),w("div",{class:`${e}-base-loading__container-layer-right`},w("svg",{class:`${e}-base-loading__svg`,viewBox:`0 0 ${2*l} ${2*l}`,xmlns:"http://www.w3.org/2000/svg",style:{color:r}},w("circle",{fill:"none",stroke:"currentColor","stroke-width":t,"stroke-linecap":"round",cx:l,cy:l,r:o-t/2,"stroke-dasharray":4.91*o,"stroke-dashoffset":2.46*o})))))):w("div",{key:"placeholder",class:`${e}-base-loading__placeholder`},this.$slots)}))}});function tu(e){return Array.isArray(e)?e:[e]}var Xi={STOP:"STOP"};function ru(e,o){let t=o(e);e.children!==void 0&&t!==Xi.STOP&&e.children.forEach(r=>ru(r,o))}function $S(e,o={}){let{preserveGroup:t=!1}=o,r=[],a=t?n=>{n.isLeaf||(r.push(n.key),l(n.children))}:n=>{n.isLeaf||(n.isGroup||r.push(n.key),l(n.children))};function l(n){n.forEach(a)}return l(e),r}function US(e,o){let{isLeaf:t}=e;return t!==void 0?t:!o(e)}function KS(e){return e.children}function GS(e){return e.key}function qS(){return!1}function QS(e,o){let{isLeaf:t}=e;return!(t===!1&&!Array.isArray(o(e)))}function ZS(e){return e.disabled===!0}function YS(e,o){return e.isLeaf===!1&&!Array.isArray(o(e))}function ed(e){var o;return e==null?[]:Array.isArray(e)?e:(o=e.checkedKeys)!==null&&o!==void 0?o:[]}function od(e){var o;return e==null||Array.isArray(e)?[]:(o=e.indeterminateKeys)!==null&&o!==void 0?o:[]}function JS(e,o){let t=new Set(e);return o.forEach(r=>{t.has(r)||t.add(r)}),Array.from(t)}function XS(e,o){let t=new Set(e);return o.forEach(r=>{t.has(r)&&t.delete(r)}),Array.from(t)}function eg(e){return(e==null?void 0:e.type)==="group"}function au(e){let o=new Map;return e.forEach((t,r)=>{o.set(t.key,r)}),t=>{var r;return(r=o.get(t))!==null&&r!==void 0?r:null}}var og=class extends Error{constructor(){super();this.message="SubtreeNotLoadedError: checking a subtree whose required nodes are not fully loaded."}};function nA(e,o,t,r){return rd(o.concat(e),t,r,!1)}function iA(e,o){let t=new Set;return e.forEach(r=>{let a=o.treeNodeMap.get(r);if(a!==void 0){let l=a.parent;for(;l!==null&&!(l.disabled||t.has(l.key));)t.add(l.key),l=l.parent}}),t}function dA(e,o,t,r){let a=rd(o,t,r,!1),l=rd(e,t,r,!0),n=iA(e,t),i=[];return a.forEach(d=>{(l.has(d)||n.has(d))&&i.push(d)}),i.forEach(d=>a.delete(d)),a}function td(e,o){let{checkedKeys:t,keysToCheck:r,keysToUncheck:a,indeterminateKeys:l,cascade:n,leafOnly:i,checkStrategy:d,allowNotLoaded:s}=e;if(!n)return r!==void 0?{checkedKeys:JS(t,r),indeterminateKeys:Array.from(l)}:a!==void 0?{checkedKeys:XS(t,a),indeterminateKeys:Array.from(l)}:{checkedKeys:Array.from(t),indeterminateKeys:Array.from(l)};let{levelTreeNodeMap:u}=o,f;a!==void 0?f=dA(a,t,o,s):r!==void 0?f=nA(r,t,o,s):f=rd(t,o,s,!1);let m=d==="parent",p=d==="child"||i,c=f,R=new Set,b=Math.max.apply(null,Array.from(u.keys()));for(let h=b;h>=0;h-=1){let k=h===0,z=u.get(h);for(let C of z){if(C.isLeaf)continue;let{key:g,shallowLoaded:v}=C;if(p&&v&&C.children.forEach(y=>{!y.disabled&&!y.isLeaf&&y.shallowLoaded&&c.has(y.key)&&c.delete(y.key)}),C.disabled||!v)continue;let S=!0,F=!1,B=!0;for(let y of C.children){let I=y.key;if(!y.disabled){if(B&&(B=!1),c.has(I))F=!0;else if(R.has(I)){F=!0,S=!1;break}else if(S=!1,F)break}}S&&!B?(m&&C.children.forEach(y=>{!y.disabled&&c.has(y.key)&&c.delete(y.key)}),c.add(g)):F&&R.add(g),k&&p&&c.has(g)&&c.delete(g)}}return{checkedKeys:Array.from(c),indeterminateKeys:Array.from(R)}}function rd(e,o,t,r){let{treeNodeMap:a,getChildren:l}=o,n=new Set,i=new Set(e);return e.forEach(d=>{let s=a.get(d);s!==void 0&&ru(s,u=>{if(u.disabled)return Xi.STOP;let{key:f}=u;if(!n.has(f)&&(n.add(f),i.add(f),YS(u.rawNode,l))){if(r)return Xi.STOP;if(!t)throw new og}})}),i}function tg(e,{includeGroup:o=!1,includeSelf:t=!0},r){var a;let l=r.treeNodeMap,n=e==null?null:(a=l.get(e))!==null&&a!==void 0?a:null,i={keyPath:[],treeNodePath:[],treeNode:n};if(n==null?void 0:n.ignored)return i.treeNode=null,i;for(;n;)!n.ignored&&(o||!n.isGroup)&&i.treeNodePath.push(n),n=n.parent;return i.treeNodePath.reverse(),t||i.treeNodePath.pop(),i.keyPath=i.treeNodePath.map(d=>d.key),i}function rg(e){if(e.length===0)return null;let o=e[0];return o.isGroup||o.ignored||o.disabled?o.getNext():o}function sA(e,o){let t=e.siblings,r=t.length,{index:a}=e;return o?t[(a+1)%r]:a===t.length-1?null:t[a+1]}function ag(e,o,{loop:t=!1,includeDisabled:r=!1}={}){let a=o==="prev"?uA:sA,l={reverse:o==="prev"},n=!1,i=null;function d(s){if(s!==null){if(s===e){if(!n)n=!0;else if(!e.disabled&&!e.isGroup){i=e;return}}else if((!s.disabled||r)&&!s.ignored&&!s.isGroup){i=s;return}if(s.isGroup){let u=lu(s,l);u!==null?i=u:d(a(s,t))}else{let u=a(s,!1);if(u!==null)d(u);else{let f=fA(s);(f==null?void 0:f.isGroup)?d(a(f,t)):t&&d(a(s,!0))}}}}return d(e),i}function uA(e,o){let t=e.siblings,r=t.length,{index:a}=e;return o?t[(a-1+r)%r]:a===0?null:t[a-1]}function fA(e){return e.parent}function lu(e,o={}){let{reverse:t=!1}=o,{children:r}=e;if(r){let{length:a}=r,l=t?a-1:0,n=t?-1:a,i=t?-1:1;for(let d=l;d!==n;d+=i){let s=r[d];if(!s.disabled&&!s.ignored)if(s.isGroup){let u=lu(s,o);if(u!==null)return u}else return s}}return null}var lg={getChild(){return this.ignored?null:lu(this)},getParent(){let{parent:e}=this;return(e==null?void 0:e.isGroup)?e.getParent():e},getNext(e={}){return ag(this,"next",e)},getPrev(e={}){return ag(this,"prev",e)}};function al(e,o){let t=o?new Set(o):void 0,r=[];function a(l){l.forEach(n=>{r.push(n),!(n.isLeaf||!n.children||n.ignored)&&(n.isGroup||t===void 0||t.has(n.key))&&a(n.children)})}return a(e),r}function ng(e,o){let t=e.key;for(;o;){if(o.key===t)return!0;o=o.parent}return!1}function ig(e,o,t,r,a,l=null,n=0){let i=[];return e.forEach((d,s)=>{var u;let f=Object.create(r);if(f.rawNode=d,f.siblings=i,f.level=n,f.index=s,f.isFirstChild=s===0,f.isLastChild=s+1===e.length,f.parent=l,!f.ignored){let m=a(d);Array.isArray(m)&&(f.children=ig(m,o,t,r,a,f,n+1))}i.push(f),o.set(f.key,f),t.has(n)||t.set(n,[]),(u=t.get(n))===null||u===void 0||u.push(f)}),i}function nu(e,o={}){var t;let r=new Map,a=new Map,{getDisabled:l=ZS,getIgnored:n=qS,getIsGroup:i=eg,getKey:d=GS}=o,s=(t=o.getChildren)!==null&&t!==void 0?t:KS,u=o.ignoreEmptyChildren?C=>{let g=s(C);return Array.isArray(g)?g.length?g:null:g}:s,f=Object.assign({get key(){return d(this.rawNode)},get disabled(){return l(this.rawNode)},get isGroup(){return i(this.rawNode)},get isLeaf(){return US(this.rawNode,u)},get shallowLoaded(){return QS(this.rawNode,u)},get ignored(){return n(this.rawNode)},contains(C){return ng(this,C)}},lg),m=ig(e,r,a,f,u);function p(C){if(C==null)return null;let g=r.get(C);return g&&!g.isGroup&&!g.ignored?g:null}function c(C){if(C==null)return null;let g=r.get(C);return g&&!g.ignored?g:null}function R(C,g){let v=c(C);return v?v.getPrev(g):null}function b(C,g){let v=c(C);return v?v.getNext(g):null}function h(C){let g=c(C);return g?g.getParent():null}function k(C){let g=c(C);return g?g.getChild():null}let z={treeNodes:m,treeNodeMap:r,levelTreeNodeMap:a,maxLevel:Math.max(...a.keys()),getChildren:u,getFlattenedNodes(C){return al(m,C)},getNode:p,getPrev:R,getNext:b,getParent:h,getChild:k,getFirstAvailableNode(){return rg(m)},getPath(C,g={}){return tg(C,g,z)},getCheckedKeys(C,g={}){let{cascade:v=!0,leafOnly:S=!1,checkStrategy:F="all",allowNotLoaded:B=!1}=g;return td({checkedKeys:ed(C),indeterminateKeys:od(C),cascade:v,leafOnly:S,checkStrategy:F,allowNotLoaded:B},z)},check(C,g,v={}){let{cascade:S=!0,leafOnly:F=!1,checkStrategy:B="all",allowNotLoaded:y=!1}=v;return td({checkedKeys:ed(g),indeterminateKeys:od(g),keysToCheck:C==null?[]:tu(C),cascade:S,leafOnly:F,checkStrategy:B,allowNotLoaded:y},z)},uncheck(C,g,v={}){let{cascade:S=!0,leafOnly:F=!1,checkStrategy:B="all",allowNotLoaded:y=!1}=v;return td({checkedKeys:ed(g),indeterminateKeys:od(g),keysToUncheck:C==null?[]:tu(C),cascade:S,leafOnly:F,checkStrategy:B,allowNotLoaded:y},z)},getNonLeafKeys(C={}){return $S(m,C)}};return z}var he={neutralBase:"#000",neutralInvertBase:"#fff",neutralTextBase:"#fff",neutralPopover:"rgb(72, 72, 78)",neutralCard:"rgb(24, 24, 28)",neutralModal:"rgb(44, 44, 50)",neutralBody:"rgb(16, 16, 20)",alpha1:"0.9",alpha2:"0.82",alpha3:"0.52",alpha4:"0.38",alpha5:"0.28",alphaClose:"0.52",alphaDisabled:"0.38",alphaDisabledInput:"0.06",alphaPending:"0.09",alphaTablePending:"0.06",alphaTableStriped:"0.05",alphaPressed:"0.05",alphaAvatar:"0.18",alphaRail:"0.2",alphaProgressRail:"0.12",alphaBorder:"0.24",alphaDivider:"0.09",alphaInput:"0.1",alphaAction:"0.06",alphaTab:"0.04",alphaScrollbar:"0.2",alphaScrollbarHover:"0.3",alphaCode:"0.12",alphaTag:"0",primaryHover:"#7fe7c4",primaryDefault:"#63e2b7",primaryActive:"#5acea7",primarySuppl:"rgb(42, 148, 125)",infoHover:"#8acbec",infoDefault:"#70c0e8",infoActive:"#66afd3",infoSuppl:"rgb(56, 137, 197)",errorHover:"#e98b8b",errorDefault:"#e88080",errorActive:"#e57272",errorSuppl:"rgb(208, 58, 82)",warningHover:"#f5d599",warningDefault:"#f2c97d",warningActive:"#e6c260",warningSuppl:"rgb(240, 138, 0)",successHover:"#7fe7c4",successDefault:"#63e2b7",successActive:"#5acea7",successSuppl:"rgb(42, 148, 125)"},pA=Ct(he.neutralBase),dg=Ct(he.neutralInvertBase),mA="rgba("+dg.slice(0,3).join(", ")+", ";function Ze(e){return mA+String(e)+")"}function cA(e){let o=Array.from(dg);return o[3]=Number(e),ge(pA,o)}var hA=Object.assign(Object.assign({name:"common"},ot),{baseColor:he.neutralBase,primaryColor:he.primaryDefault,primaryColorHover:he.primaryHover,primaryColorPressed:he.primaryActive,primaryColorSuppl:he.primarySuppl,infoColor:he.infoDefault,infoColorHover:he.infoHover,infoColorPressed:he.infoActive,infoColorSuppl:he.infoSuppl,successColor:he.successDefault,successColorHover:he.successHover,successColorPressed:he.successActive,successColorSuppl:he.successSuppl,warningColor:he.warningDefault,warningColorHover:he.warningHover,warningColorPressed:he.warningActive,warningColorSuppl:he.warningSuppl,errorColor:he.errorDefault,errorColorHover:he.errorHover,errorColorPressed:he.errorActive,errorColorSuppl:he.errorSuppl,textColorBase:he.neutralTextBase,textColor1:Ze(he.alpha1),textColor2:Ze(he.alpha2),textColor3:Ze(he.alpha3),textColorDisabled:Ze(he.alpha4),placeholderColor:Ze(he.alpha4),placeholderColorDisabled:Ze(he.alpha5),iconColor:Ze(he.alpha4),iconColorDisabled:Ze(he.alpha5),iconColorHover:Ze(Number(he.alpha4)*1.25),iconColorPressed:Ze(Number(he.alpha4)*.8),opacity1:he.alpha1,opacity2:he.alpha2,opacity3:he.alpha3,opacity4:he.alpha4,opacity5:he.alpha5,dividerColor:Ze(he.alphaDivider),borderColor:Ze(he.alphaBorder),closeColorHover:Ze(Number(he.alphaClose)*1.25),closeColor:Ze(Number(he.alphaClose)),closeColorPressed:Ze(Number(he.alphaClose)*.8),closeColorDisabled:Ze(he.alpha4),clearColor:Ze(he.alpha4),clearColorHover:gr(Ze(he.alpha4),{alpha:1.25}),clearColorPressed:gr(Ze(he.alpha4),{alpha:.8}),scrollbarColor:Ze(he.alphaScrollbar),scrollbarColorHover:Ze(he.alphaScrollbarHover),scrollbarWidth:"5px",scrollbarHeight:"5px",scrollbarBorderRadius:"5px",progressRailColor:Ze(he.alphaProgressRail),railColor:Ze(he.alphaRail),popoverColor:he.neutralPopover,tableColor:he.neutralCard,cardColor:he.neutralCard,modalColor:he.neutralModal,bodyColor:he.neutralBody,tagColor:cA(he.alphaTag),avatarColor:Ze(he.alphaAvatar),invertedColor:he.neutralBase,inputColor:Ze(he.alphaInput),codeColor:Ze(he.alphaCode),tabColor:Ze(he.alphaTab),actionColor:Ze(he.alphaAction),tableHeaderColor:Ze(he.alphaAction),hoverColor:Ze(he.alphaPending),tableColorHover:Ze(he.alphaTablePending),tableColorStriped:Ze(he.alphaTableStriped),pressedColor:Ze(he.alphaPressed),opacityDisabled:he.alphaDisabled,inputColorDisabled:Ze(he.alphaDisabledInput),buttonColor2:"rgba(255, 255, 255, .06)",buttonColor2Hover:"rgba(255, 255, 255, .09)",buttonColor2Pressed:"rgba(255, 255, 255, .05)",boxShadow1:"0 1px 2px -2px rgba(0, 0, 0, .24), 0 3px 6px 0 rgba(0, 0, 0, .18), 0 5px 12px 4px rgba(0, 0, 0, .12)",boxShadow2:"0 3px 6px -4px rgba(0, 0, 0, .24), 0 6px 12px 0 rgba(0, 0, 0, .16), 0 9px 18px 8px rgba(0, 0, 0, .10)",boxShadow3:"0 6px 16px -9px rgba(0, 0, 0, .08), 0 9px 28px 0 rgba(0, 0, 0, .05), 0 12px 48px 16px rgba(0, 0, 0, .03)"}),P=hA;var ke={neutralBase:"#FFF",neutralInvertBase:"#000",neutralTextBase:"#000",neutralPopover:"#fff",neutralCard:"#fff",neutralModal:"#fff",neutralBody:"#fff",alpha1:"0.82",alpha2:"0.72",alpha3:"0.38",alpha4:"0.24",alpha5:"0.18",alphaClose:"0.52",alphaDisabled:"0.5",alphaDisabledInput:"0.02",alphaPending:"0.05",alphaTablePending:"0.02",alphaPressed:"0.07",alphaAvatar:"0.2",alphaRail:"0.14",alphaProgressRail:".08",alphaBorder:"0.12",alphaDivider:"0.06",alphaInput:"0",alphaAction:"0.02",alphaTab:"0.04",alphaScrollbar:"0.25",alphaScrollbarHover:"0.4",alphaCode:"0.05",alphaTag:"0.02",primaryHover:"#36ad6a",primaryDefault:"#18a058",primaryActive:"#0c7a43",primarySuppl:"#36ad6a",infoHover:"#4098fc",infoDefault:"#2080f0",infoActive:"#1060c9",infoSuppl:"#4098fc",errorHover:"#de576d",errorDefault:"#d03050",errorActive:"#ab1f3f",errorSuppl:"#de576d",warningHover:"#fcb040",warningDefault:"#f0a020",warningActive:"#c97c10",warningSuppl:"#fcb040",successHover:"#36ad6a",successDefault:"#18a058",successActive:"#0c7a43",successSuppl:"#36ad6a"},xA=Ct(ke.neutralBase),sg=Ct(ke.neutralInvertBase),SA="rgba("+sg.slice(0,3).join(", ")+", ";function ug(e){return SA+String(e)+")"}function Qo(e){let o=Array.from(sg);return o[3]=Number(e),ge(xA,o)}var gA=Object.assign(Object.assign({name:"common"},ot),{baseColor:ke.neutralBase,primaryColor:ke.primaryDefault,primaryColorHover:ke.primaryHover,primaryColorPressed:ke.primaryActive,primaryColorSuppl:ke.primarySuppl,infoColor:ke.infoDefault,infoColorHover:ke.infoHover,infoColorPressed:ke.infoActive,infoColorSuppl:ke.infoSuppl,successColor:ke.successDefault,successColorHover:ke.successHover,successColorPressed:ke.successActive,successColorSuppl:ke.successSuppl,warningColor:ke.warningDefault,warningColorHover:ke.warningHover,warningColorPressed:ke.warningActive,warningColorSuppl:ke.warningSuppl,errorColor:ke.errorDefault,errorColorHover:ke.errorHover,errorColorPressed:ke.errorActive,errorColorSuppl:ke.errorSuppl,textColorBase:ke.neutralTextBase,textColor1:"rgb(31, 34, 37)",textColor2:"rgb(51, 54, 57)",textColor3:"rgb(118, 124, 130)",textColorDisabled:Qo(ke.alpha4),placeholderColor:Qo(ke.alpha4),placeholderColorDisabled:Qo(ke.alpha5),iconColor:Qo(ke.alpha4),iconColorHover:gr(Qo(ke.alpha4),{lightness:.75}),iconColorPressed:gr(Qo(ke.alpha4),{lightness:.9}),iconColorDisabled:Qo(ke.alpha5),opacity1:ke.alpha1,opacity2:ke.alpha2,opacity3:ke.alpha3,opacity4:ke.alpha4,opacity5:ke.alpha5,dividerColor:"rgb(239, 239, 245)",borderColor:"rgb(224, 224, 230)",closeColor:Qo(Number(ke.alphaClose)),closeColorHover:Qo(Number(ke.alphaClose)*1.25),closeColorPressed:Qo(Number(ke.alphaClose)*.8),closeColorDisabled:Qo(ke.alpha4),clearColor:Qo(ke.alpha4),clearColorHover:gr(Qo(ke.alpha4),{lightness:.75}),clearColorPressed:gr(Qo(ke.alpha4),{lightness:.9}),scrollbarColor:ug(ke.alphaScrollbar),scrollbarColorHover:ug(ke.alphaScrollbarHover),scrollbarWidth:"5px",scrollbarHeight:"5px",scrollbarBorderRadius:"5px",progressRailColor:Qo(ke.alphaProgressRail),railColor:"rgb(219, 219, 223)",popoverColor:ke.neutralPopover,tableColor:ke.neutralCard,cardColor:ke.neutralCard,modalColor:ke.neutralModal,bodyColor:ke.neutralBody,tagColor:"rgb(250, 250, 252)",avatarColor:Qo(ke.alphaAvatar),invertedColor:"rgb(0, 20, 40)",inputColor:Qo(ke.alphaInput),codeColor:"rgb(244, 244, 248)",tabColor:"rgb(247, 247, 250)",actionColor:"rgb(250, 250, 252)",tableHeaderColor:"rgb(250, 250, 252)",hoverColor:"rgb(243, 243, 245)",tableColorHover:"rgba(0, 0, 100, 0.03)",tableColorStriped:"rgba(0, 0, 100, 0.02)",pressedColor:"rgb(237, 237, 239)",opacityDisabled:ke.alphaDisabled,inputColorDisabled:"rgb(250, 250, 252)",buttonColor2:"rgba(46, 51, 56, .05)",buttonColor2Hover:"rgba(46, 51, 56, .09)",buttonColor2Pressed:"rgba(46, 51, 56, .13)",boxShadow1:"0 1px 2px -2px rgba(0, 0, 0, .08), 0 3px 6px 0 rgba(0, 0, 0, .06), 0 5px 12px 4px rgba(0, 0, 0, .04)",boxShadow2:"0 3px 6px -4px rgba(0, 0, 0, .12), 0 6px 16px 0 rgba(0, 0, 0, .08), 0 9px 28px 8px rgba(0, 0, 0, .05)",boxShadow3:"0 6px 16px -9px rgba(0, 0, 0, .08), 0 9px 28px 0 rgba(0, 0, 0, .05), 0 12px 48px 16px rgba(0, 0, 0, .03)"}),xe=gA;var fg={iconSizeSmall:"34px",iconSizeMedium:"40px",iconSizeLarge:"46px",iconSizeHuge:"52px"};var iu=e=>{let{textColorDisabled:o,iconColor:t,textColor2:r,fontSizeSmall:a,fontSizeMedium:l,fontSizeLarge:n,fontSizeHuge:i}=e;return Object.assign(Object.assign({},fg),{fontSizeSmall:a,fontSizeMedium:l,fontSizeLarge:n,fontSizeHuge:i,textColor:o,iconColor:t,extraTextColor:r})},wA={name:"Empty",common:xe,self:iu},wt=wA;var TA={name:"Empty",common:P,self:iu},Tt=TA;var pg=$("empty",` display: flex; flex-direction: column; align-items: center; font-size: var(--n-font-size); -`,[J("icon",` +`,[X("icon",` width: var(--n-icon-size); height: var(--n-icon-size); font-size: var(--n-icon-size); @@ -184,23 +184,23 @@ ${o} color: var(--n-icon-color); transition: color .3s var(--n-bezier); - `,[Y("+",[J("description",` + `,[Y("+",[X("description",` margin-top: 8px; - `)])]),J("description",` + `)])]),X("description",` transition: color .3s var(--n-bezier); color: var(--n-text-color); - `),J("extra",` + `),X("extra",` text-align: center; transition: color .3s var(--n-bezier); margin-top: 12px; color: var(--n-extra-text-color); - `)]);var tA=Object.assign(Object.assign({},Fo.props),{description:String,showDescription:{type:Boolean,default:!0},showIcon:{type:Boolean,default:!0},size:{type:String,default:"medium"},renderIcon:Function}),iu=le({name:"Empty",props:tA,setup(e){let{mergedClsPrefixRef:o,inlineThemeDisabled:t}=Bo(e),r=Fo("Empty","-empty",og,ft,e,o),{localeRef:a}=Xa("Empty"),l=Te(Yo,null),n=V(()=>{var u,f,c;return(u=e.description)!==null&&u!==void 0?u:(c=(f=l==null?void 0:l.mergedComponentPropsRef.value)===null||f===void 0?void 0:f.Empty)===null||c===void 0?void 0:c.description}),i=V(()=>{var u,f;return((f=(u=l==null?void 0:l.mergedComponentPropsRef.value)===null||u===void 0?void 0:u.Empty)===null||f===void 0?void 0:f.renderIcon)||(()=>R(Ys,null))}),d=V(()=>{let{size:u}=e,{common:{cubicBezierEaseInOut:f},self:{[ve("iconSize",u)]:c,[ve("fontSize",u)]:p,textColor:x,iconColor:T,extraTextColor:C}}=r.value;return{"--n-icon-size":c,"--n-font-size":p,"--n-bezier":f,"--n-text-color":x,"--n-icon-color":T,"--n-extra-text-color":C}}),s=t?Ko("empty",V(()=>{let u="",{size:f}=e;return u+=f[0],u}),d,e):void 0;return{mergedClsPrefix:o,mergedRenderIcon:i,localizedDescription:V(()=>n.value||a.value.description),cssVars:t?void 0:d,themeClass:s==null?void 0:s.themeClass,onRender:s==null?void 0:s.onRender}},render(){let{$slots:e,mergedClsPrefix:o,onRender:t}=this;return t==null||t(),R("div",{class:[`${o}-empty`,this.themeClass],style:this.cssVars},this.showIcon?R("div",{class:`${o}-empty__icon`},e.icon?e.icon():R(bt,{clsPrefix:o},{default:this.mergedRenderIcon})):null,this.showDescription?R("div",{class:`${o}-empty__description`},e.default?e.default():this.localizedDescription):null,e.extra?R("div",{class:`${o}-empty__extra`},e.extra()):null)}});var du=e=>{let{scrollbarColor:o,scrollbarColorHover:t}=e;return{color:o,colorHover:t}},rA={name:"Scrollbar",common:pe,self:du},bo=rA;var aA={name:"Scrollbar",common:P,self:du},no=aA;var{cubicBezierEaseInOut:tg}=Uo;function rg({name:e="fade-in",enterDuration:o="0.2s",leaveDuration:t="0.2s",enterCubicBezier:r=tg,leaveCubicBezier:a=tg}={}){return[Y(`&.${e}-transition-enter-active`,{transition:`all ${o} ${r}!important`}),Y(`&.${e}-transition-leave-active`,{transition:`all ${t} ${a}!important`}),Y(`&.${e}-transition-enter-from, &.${e}-transition-leave-to`,{opacity:0}),Y(`&.${e}-transition-leave-from, &.${e}-transition-enter-to`,{opacity:1})]}var ag=K("scrollbar",` + `)]);var RA=Object.assign(Object.assign({},ko.props),{description:String,showDescription:{type:Boolean,default:!0},showIcon:{type:Boolean,default:!0},size:{type:String,default:"medium"},renderIcon:Function}),du=re({name:"Empty",props:RA,setup(e){let{mergedClsPrefixRef:o,inlineThemeDisabled:t}=Wo(e),r=ko("Empty","-empty",pg,wt,e,o),{localeRef:a}=tl("Empty"),l=be(nt,null),n=W(()=>{var u,f,m;return(u=e.description)!==null&&u!==void 0?u:(m=(f=l==null?void 0:l.mergedComponentPropsRef.value)===null||f===void 0?void 0:f.Empty)===null||m===void 0?void 0:m.description}),i=W(()=>{var u,f;return((f=(u=l==null?void 0:l.mergedComponentPropsRef.value)===null||u===void 0?void 0:u.Empty)===null||f===void 0?void 0:f.renderIcon)||(()=>w(Js,null))}),d=W(()=>{let{size:u}=e,{common:{cubicBezierEaseInOut:f},self:{[Me("iconSize",u)]:m,[Me("fontSize",u)]:p,textColor:c,iconColor:R,extraTextColor:b}}=r.value;return{"--n-icon-size":m,"--n-font-size":p,"--n-bezier":f,"--n-text-color":c,"--n-icon-color":R,"--n-extra-text-color":b}}),s=t?tt("empty",W(()=>{let u="",{size:f}=e;return u+=f[0],u}),d,e):void 0;return{mergedClsPrefix:o,mergedRenderIcon:i,localizedDescription:W(()=>n.value||a.value.description),cssVars:t?void 0:d,themeClass:s==null?void 0:s.themeClass,onRender:s==null?void 0:s.onRender}},render(){let{$slots:e,mergedClsPrefix:o,onRender:t}=this;return t==null||t(),w("div",{class:[`${o}-empty`,this.themeClass],style:this.cssVars},this.showIcon?w("div",{class:`${o}-empty__icon`},e.icon?e.icon():w(Pt,{clsPrefix:o},{default:this.mergedRenderIcon})):null,this.showDescription?w("div",{class:`${o}-empty__description`},e.default?e.default():this.localizedDescription):null,e.extra?w("div",{class:`${o}-empty__extra`},e.extra()):null)}});var su=e=>{let{scrollbarColor:o,scrollbarColorHover:t}=e;return{color:o,colorHover:t}},OA={name:"Scrollbar",common:xe,self:su},Mo=OA;var FA={name:"Scrollbar",common:P,self:su},fo=FA;var{cubicBezierEaseInOut:mg}=ot;function cg({name:e="fade-in",enterDuration:o="0.2s",leaveDuration:t="0.2s",enterCubicBezier:r=mg,leaveCubicBezier:a=mg}={}){return[Y(`&.${e}-transition-enter-active`,{transition:`all ${o} ${r}!important`}),Y(`&.${e}-transition-leave-active`,{transition:`all ${t} ${a}!important`}),Y(`&.${e}-transition-enter-from, &.${e}-transition-leave-to`,{opacity:0}),Y(`&.${e}-transition-leave-from, &.${e}-transition-enter-to`,{opacity:1})]}var hg=$("scrollbar",` overflow: hidden; position: relative; z-index: auto; height: 100%; width: 100%; -`,[Y(">",[K("scrollbar-container",` +`,[Y(">",[$("scrollbar-container",` width: 100%; overflow: scroll; height: 100%; @@ -210,50 +210,50 @@ ${o} width: 0; height: 0; display: none; - `),Y(">",[K("scrollbar-content",` + `),Y(">",[$("scrollbar-content",` box-sizing: border-box; min-width: 100%; - `)])]),K("scrollbar-rail",` + `)])]),$("scrollbar-rail",` position: absolute; pointer-events: none; user-select: none; - `,[xe("horizontal",` + `,[Te("horizontal",` left: 2px; right: 2px; bottom: 4px; height: var(--n-scrollbar-height); - `,[Y(">",[J("scrollbar",` + `,[Y(">",[X("scrollbar",` height: var(--n-scrollbar-height); border-radius: var(--n-scrollbar-border-radius); right: 0; - `)])]),xe("vertical",` + `)])]),Te("vertical",` right: 4px; top: 2px; bottom: 2px; width: var(--n-scrollbar-width); - `,[Y(">",[J("scrollbar",` + `,[Y(">",[X("scrollbar",` width: var(--n-scrollbar-width); border-radius: var(--n-scrollbar-border-radius); bottom: 0; - `)])]),xe("disabled",[Y(">",[J("scrollbar",{pointerEvents:"none"})])]),Y(">",[J("scrollbar",` + `)])]),Te("disabled",[Y(">",[X("scrollbar",{pointerEvents:"none"})])]),Y(">",[X("scrollbar",` position: absolute; cursor: pointer; pointer-events: all; background-color: var(--n-scrollbar-color); transition: background-color .2s var(--n-scrollbar-bezier); - `,[rg(),Y("&:hover",{backgroundColor:"var(--n-scrollbar-color-hover)"})])])])])]);var lA=Object.assign(Object.assign({},Fo.props),{size:{type:Number,default:5},duration:{type:Number,default:0},scrollable:{type:Boolean,default:!0},xScrollable:Boolean,useUnifiedContainer:Boolean,triggerDisplayManually:Boolean,container:Function,content:Function,containerClass:String,containerStyle:[String,Object],contentClass:String,contentStyle:[String,Object],horizontalRailStyle:[String,Object],verticalRailStyle:[String,Object],onScroll:Function,onWheel:Function,onResize:Function,internalOnUpdateScrollLeft:Function}),lg=le({name:"Scrollbar",props:lA,inheritAttrs:!1,setup(e){let{mergedClsPrefixRef:o,inlineThemeDisabled:t}=Bo(e),r=Z(null),a=Z(null),l=Z(null),n=Z(null),i=Z(null),d=Z(null),s=Z(null),u=Z(null),f=Z(null),c=Z(null),p=Z(null),x=Z(0),T=Z(0),C=Z(!1),S=Z(!1),D=!1,j=!1,O,g,v=0,w=0,F=0,B=0,y=hi(),W=V(()=>{let{value:Q}=u,{value:re}=d,{value:Se}=c;return Q===null||re===null||Se===null?0:Math.min(Q,Se*Q/re+e.size*1.5)}),_=V(()=>`${W.value}px`),ae=V(()=>{let{value:Q}=f,{value:re}=s,{value:Se}=p;return Q===null||re===null||Se===null?0:Se*Q/re+e.size*1.5}),he=V(()=>`${ae.value}px`),Me=V(()=>{let{value:Q}=u,{value:re}=x,{value:Se}=d,{value:_e}=c;if(Q===null||Se===null||_e===null)return 0;{let Xe=Se-Q;return Xe?re/Xe*(_e-W.value):0}}),de=V(()=>`${Me.value}px`),ie=V(()=>{let{value:Q}=f,{value:re}=T,{value:Se}=s,{value:_e}=p;if(Q===null||Se===null||_e===null)return 0;{let Xe=Se-Q;return Xe?re/Xe*(_e-ae.value):0}}),ge=V(()=>`${ie.value}px`),Ve=V(()=>{let{value:Q}=u,{value:re}=d;return Q!==null&&re!==null&&re>Q}),Ke=V(()=>{let{value:Q}=f,{value:re}=s;return Q!==null&&re!==null&&re>Q}),He=V(()=>{let{container:Q}=e;return Q?Q():a.value}),Je=V(()=>{let{content:Q}=e;return Q?Q():l.value}),Qe=$,wo=Q=>{let{onResize:re}=e;re&&re(Q),$()},Do=(Q,re)=>{if(!e.scrollable)return;if(typeof Q=="number"){We(Q,re!=null?re:0,0,!1,"auto");return}let{left:Se,top:_e,index:Xe,elSize:ze,position:eo,behavior:Ge,el:Go,debounce:ct=!0}=Q;(Se!==void 0||_e!==void 0)&&We(Se!=null?Se:0,_e!=null?_e:0,0,!1,Ge),Go!==void 0?We(0,Go.offsetTop,Go.offsetHeight,ct,Ge):Xe!==void 0&&ze!==void 0?We(0,Xe*ze,ze,ct,Ge):eo==="bottom"?We(0,Number.MAX_SAFE_INTEGER,0,!1,Ge):eo==="top"&&We(0,0,0,!1,Ge)},Be=(Q,re)=>{if(!e.scrollable)return;let{value:Se}=He;!Se||(typeof Q=="object"?Se.scrollBy(Q):Se.scrollBy(Q,re||0))};function We(Q,re,Se,_e,Xe){let{value:ze}=He;if(!!ze){if(_e){let{scrollTop:eo,offsetHeight:Ge}=ze;if(re>eo){re+Se<=eo+Ge||ze.scrollTo({left:Q,top:re+Se-Ge,behavior:Xe});return}}ze.scrollTo({left:Q,top:re,behavior:Xe})}}function ho(){m(),h(),$()}function we(){qe()}function qe(){to(),vo()}function to(){g!==void 0&&window.clearTimeout(g),g=window.setTimeout(()=>{S.value=!1},e.duration)}function vo(){O!==void 0&&window.clearTimeout(O),O=window.setTimeout(()=>{C.value=!1},e.duration)}function m(){O!==void 0&&window.clearTimeout(O),C.value=!0}function h(){g!==void 0&&window.clearTimeout(g),S.value=!0}function k(Q){let{onScroll:re}=e;re&&re(Q),E()}function E(){let{value:Q}=He;Q&&(x.value=Q.scrollTop,T.value=Q.scrollLeft)}function I(){let{value:Q}=Je;Q&&(d.value=Q.offsetHeight,s.value=Q.offsetWidth);let{value:re}=He;re&&(u.value=re.offsetHeight,f.value=re.offsetWidth);let{value:Se}=i,{value:_e}=n;Se&&(p.value=Se.offsetWidth),_e&&(c.value=_e.offsetHeight)}function G(){let{value:Q}=He;Q&&(x.value=Q.scrollTop,T.value=Q.scrollLeft,u.value=Q.offsetHeight,f.value=Q.offsetWidth,d.value=Q.scrollHeight,s.value=Q.scrollWidth);let{value:re}=i,{value:Se}=n;re&&(p.value=re.offsetWidth),Se&&(c.value=Se.offsetHeight)}function $(){!e.scrollable||(e.useUnifiedContainer?G():(I(),E()))}function L(Q){var re;return!((re=r.value)===null||re===void 0?void 0:re.contains(Q.target))}function U(Q){Q.preventDefault(),Q.stopPropagation(),j=!0,So("mousemove",window,H,!0),So("mouseup",window,b,!0),w=T.value,F=Q.clientX}function H(Q){if(!j)return;O!==void 0&&window.clearTimeout(O),g!==void 0&&window.clearTimeout(g);let{value:re}=f,{value:Se}=s,{value:_e}=ae;if(re===null||Se===null)return;let ze=(Q.clientX-F)*(Se-re)/(re-_e),eo=Se-re,Ge=w+ze;Ge=Math.min(eo,Ge),Ge=Math.max(Ge,0);let{value:Go}=He;if(Go){Go.scrollLeft=Ge;let{internalOnUpdateScrollLeft:ct}=e;ct&&ct(Ge)}}function b(Q){Q.preventDefault(),Q.stopPropagation(),xo("mousemove",window,H,!0),xo("mouseup",window,b,!0),j=!1,$(),L(Q)&&qe()}function N(Q){Q.preventDefault(),Q.stopPropagation(),D=!0,So("mousemove",window,z,!0),So("mouseup",window,te,!0),v=x.value,B=Q.clientY}function z(Q){if(!D)return;O!==void 0&&window.clearTimeout(O),g!==void 0&&window.clearTimeout(g);let{value:re}=u,{value:Se}=d,{value:_e}=W;if(re===null||Se===null)return;let ze=(Q.clientY-B)*(Se-re)/(re-_e),eo=Se-re,Ge=v+ze;Ge=Math.min(eo,Ge),Ge=Math.max(Ge,0);let{value:Go}=He;Go&&(Go.scrollTop=Ge)}function te(Q){Q.preventDefault(),Q.stopPropagation(),xo("mousemove",window,z,!0),xo("mouseup",window,te,!0),D=!1,$(),L(Q)&&qe()}Mo(()=>{let{value:Q}=Ke,{value:re}=Ve,{value:Se}=o,{value:_e}=i,{value:Xe}=n;_e&&(Q?_e.classList.remove(`${Se}-scrollbar-rail--disabled`):_e.classList.add(`${Se}-scrollbar-rail--disabled`)),Xe&&(re?Xe.classList.remove(`${Se}-scrollbar-rail--disabled`):Xe.classList.add(`${Se}-scrollbar-rail--disabled`))}),fo(()=>{e.container||$()}),_o(()=>{O!==void 0&&window.clearTimeout(O),g!==void 0&&window.clearTimeout(g),xo("mousemove",window,z,!0),xo("mouseup",window,te,!0)});let fe=Fo("Scrollbar","-scrollbar",ag,bo,e,o),Ce=V(()=>{let{common:{cubicBezierEaseInOut:Q,scrollbarBorderRadius:re,scrollbarHeight:Se,scrollbarWidth:_e},self:{color:Xe,colorHover:ze}}=fe.value;return{"--n-scrollbar-bezier":Q,"--n-scrollbar-color":Xe,"--n-scrollbar-color-hover":ze,"--n-scrollbar-border-radius":re,"--n-scrollbar-width":_e,"--n-scrollbar-height":Se}}),ye=t?Ko("scrollbar",void 0,Ce,e):void 0;return Object.assign(Object.assign({},{scrollTo:Do,scrollBy:Be,sync:$,syncUnifiedContainer:G,handleMouseEnterWrapper:ho,handleMouseLeaveWrapper:we}),{mergedClsPrefix:o,containerScrollTop:x,wrapperRef:r,containerRef:a,contentRef:l,yRailRef:n,xRailRef:i,needYBar:Ve,needXBar:Ke,yBarSizePx:_,xBarSizePx:he,yBarTopPx:de,xBarLeftPx:ge,isShowXBar:C,isShowYBar:S,isIos:y,handleScroll:k,handleContentResize:Qe,handleContainerResize:wo,handleYScrollMouseDown:N,handleXScrollMouseDown:U,cssVars:t?void 0:Ce,themeClass:ye==null?void 0:ye.themeClass,onRender:ye==null?void 0:ye.onRender})},render(){var e;let{$slots:o,mergedClsPrefix:t,triggerDisplayManually:r}=this;if(!this.scrollable)return(e=o.default)===null||e===void 0?void 0:e.call(o);let a=()=>{var l,n;return(l=this.onRender)===null||l===void 0||l.call(this),R("div",yl(this.$attrs,{role:"none",ref:"wrapperRef",class:[`${t}-scrollbar`,this.themeClass],style:this.cssVars,onMouseenter:r?void 0:this.handleMouseEnterWrapper,onMouseleave:r?void 0:this.handleMouseLeaveWrapper}),[this.container?(n=o.default)===null||n===void 0?void 0:n.call(o):R("div",{role:"none",ref:"containerRef",class:[`${t}-scrollbar-container`,this.containerClass],style:this.containerStyle,onScroll:this.handleScroll,onWheel:this.onWheel},R(Dt,{onResize:this.handleContentResize},{default:()=>R("div",{ref:"contentRef",role:"none",style:[{width:this.xScrollable?"fit-content":null},this.contentStyle],class:[`${t}-scrollbar-content`,this.contentClass]},o)})),R("div",{ref:"yRailRef",class:`${t}-scrollbar-rail ${t}-scrollbar-rail--vertical`,style:this.horizontalRailStyle,"aria-hidden":!0},R(kt,{name:"fade-in-transition"},{default:()=>this.needYBar&&this.isShowYBar&&!this.isIos?R("div",{class:`${t}-scrollbar-rail__scrollbar`,style:{height:this.yBarSizePx,top:this.yBarTopPx},onMousedown:this.handleYScrollMouseDown}):null})),R("div",{ref:"xRailRef",class:`${t}-scrollbar-rail ${t}-scrollbar-rail--horizontal`,style:this.verticalRailStyle,"aria-hidden":!0},R(kt,{name:"fade-in-transition"},{default:()=>this.needXBar&&this.isShowXBar&&!this.isIos?R("div",{class:`${t}-scrollbar-rail__scrollbar`,style:{width:this.xBarSizePx,left:this.xBarLeftPx},onMousedown:this.handleXScrollMouseDown}):null}))])};return this.container?a():R(Dt,{onResize:this.handleContainerResize},{default:a})}}),td=lg,en=lg;var ng={height:"calc(var(--n-option-height) * 7.6)",paddingSmall:"4px 0",paddingMedium:"4px 0",paddingLarge:"4px 0",paddingHuge:"4px 0",optionPaddingSmall:"0 12px",optionPaddingMedium:"0 12px",optionPaddingLarge:"0 12px",optionPaddingHuge:"0 12px",loadingSize:"18px"};var su=e=>{let{borderRadius:o,popoverColor:t,textColor3:r,dividerColor:a,textColor2:l,primaryColorPressed:n,textColorDisabled:i,primaryColor:d,opacityDisabled:s,hoverColor:u,fontSizeSmall:f,fontSizeMedium:c,fontSizeLarge:p,fontSizeHuge:x,heightSmall:T,heightMedium:C,heightLarge:S,heightHuge:D}=e;return Object.assign(Object.assign({},ng),{optionFontSizeSmall:f,optionFontSizeMedium:c,optionFontSizeLarge:p,optionFontSizeHuge:x,optionHeightSmall:T,optionHeightMedium:C,optionHeightLarge:S,optionHeightHuge:D,borderRadius:o,color:t,groupHeaderTextColor:r,actionDividerColor:a,optionTextColor:l,optionTextColorPressed:n,optionTextColorDisabled:i,optionTextColorActive:d,optionOpacityDisabled:s,optionCheckColor:d,optionColorPending:u,optionColorActive:u,actionTextColor:l,loadingColor:d})},nA=Pe({name:"InternalSelectMenu",common:pe,peers:{Scrollbar:bo,Empty:ft},self:su}),xa=nA;var iA={name:"InternalSelectMenu",common:P,peers:{Scrollbar:no,Empty:pt},self:su},Pt=iA;var{cubicBezierEaseIn:ig,cubicBezierEaseOut:dg}=Uo;function uu({transformOrigin:e="inherit",duration:o=".2s",enterScale:t=".9",originalTransform:r="",originalTransition:a=""}={}){return[Y("&.fade-in-scale-up-transition-leave-active",{transformOrigin:e,transition:`opacity ${o} ${ig}, transform ${o} ${ig} ${a&&","+a}`}),Y("&.fade-in-scale-up-transition-enter-active",{transformOrigin:e,transition:`opacity ${o} ${dg}, transform ${o} ${dg} ${a&&","+a}`}),Y("&.fade-in-scale-up-transition-enter-from, &.fade-in-scale-up-transition-leave-to",{opacity:0,transform:`${r} scale(${t})`}),Y("&.fade-in-scale-up-transition-leave-from, &.fade-in-scale-up-transition-enter-to",{opacity:1,transform:`${r} scale(1)`})]}var sg=K("base-wave",` + `,[cg(),Y("&:hover",{backgroundColor:"var(--n-scrollbar-color-hover)"})])])])])]);var CA=Object.assign(Object.assign({},ko.props),{size:{type:Number,default:5},duration:{type:Number,default:0},scrollable:{type:Boolean,default:!0},xScrollable:Boolean,useUnifiedContainer:Boolean,triggerDisplayManually:Boolean,container:Function,content:Function,containerClass:String,containerStyle:[String,Object],contentClass:String,contentStyle:[String,Object],horizontalRailStyle:[String,Object],verticalRailStyle:[String,Object],onScroll:Function,onWheel:Function,onResize:Function,internalOnUpdateScrollLeft:Function}),xg=re({name:"Scrollbar",props:CA,inheritAttrs:!1,setup(e){let{mergedClsPrefixRef:o,inlineThemeDisabled:t}=Wo(e),r=Q(null),a=Q(null),l=Q(null),n=Q(null),i=Q(null),d=Q(null),s=Q(null),u=Q(null),f=Q(null),m=Q(null),p=Q(null),c=Q(0),R=Q(0),b=Q(!1),h=Q(!1),k=!1,z=!1,C,g,v=0,S=0,F=0,B=0,y=gi(),I=W(()=>{let{value:K}=u,{value:ne}=d,{value:Re}=m;return K===null||ne===null||Re===null?0:Math.min(K,Re*K/ne+e.size*1.5)}),E=W(()=>`${I.value}px`),se=W(()=>{let{value:K}=f,{value:ne}=s,{value:Re}=p;return K===null||ne===null||Re===null?0:Re*K/ne+e.size*1.5}),Se=W(()=>`${se.value}px`),Ee=W(()=>{let{value:K}=u,{value:ne}=c,{value:Re}=d,{value:T}=m;if(K===null||Re===null||T===null)return 0;{let _=Re-K;return _?ne/_*(T-I.value):0}}),me=W(()=>`${Ee.value}px`),ue=W(()=>{let{value:K}=f,{value:ne}=R,{value:Re}=s,{value:T}=p;if(K===null||Re===null||T===null)return 0;{let _=Re-K;return _?ne/_*(T-se.value):0}}),Fe=W(()=>`${ue.value}px`),Ge=W(()=>{let{value:K}=u,{value:ne}=d;return K!==null&&ne!==null&&ne>K}),Ye=W(()=>{let{value:K}=f,{value:ne}=s;return K!==null&&ne!==null&&ne>K}),$e=W(()=>{let{container:K}=e;return K?K():a.value}),ro=W(()=>{let{content:K}=e;return K?K():l.value}),Ke=ee,So=K=>{let{onResize:ne}=e;ne&&ne(K),ee()},bo=(K,ne)=>{if(!e.scrollable)return;if(typeof K=="number"){qe(K,ne!=null?ne:0,0,!1,"auto");return}let{left:Re,top:T,index:_,elSize:te,position:de,behavior:Oe,el:ze,debounce:Je=!0}=K;(Re!==void 0||T!==void 0)&&qe(Re!=null?Re:0,T!=null?T:0,0,!1,Oe),ze!==void 0?qe(0,ze.offsetTop,ze.offsetHeight,Je,Oe):_!==void 0&&te!==void 0?qe(0,_*te,te,Je,Oe):de==="bottom"?qe(0,Number.MAX_SAFE_INTEGER,0,!1,Oe):de==="top"&&qe(0,0,0,!1,Oe)},We=(K,ne)=>{if(!e.scrollable)return;let{value:Re}=$e;!Re||(typeof K=="object"?Re.scrollBy(K):Re.scrollBy(K,ne||0))};function qe(K,ne,Re,T,_){let{value:te}=$e;if(!!te){if(T){let{scrollTop:de,offsetHeight:Oe}=te;if(ne>de){ne+Re<=de+Oe||te.scrollTo({left:K,top:ne+Re-Oe,behavior:_});return}}te.scrollTo({left:K,top:ne,behavior:_})}}function go(){x(),O(),ee()}function Le(){co()}function co(){Ao(),Lo()}function Ao(){g!==void 0&&window.clearTimeout(g),g=window.setTimeout(()=>{h.value=!1},e.duration)}function Lo(){C!==void 0&&window.clearTimeout(C),C=window.setTimeout(()=>{b.value=!1},e.duration)}function x(){C!==void 0&&window.clearTimeout(C),b.value=!0}function O(){g!==void 0&&window.clearTimeout(g),h.value=!0}function N(K){let{onScroll:ne}=e;ne&&ne(K),j()}function j(){let{value:K}=$e;K&&(c.value=K.scrollTop,R.value=K.scrollLeft)}function U(){let{value:K}=ro;K&&(d.value=K.offsetHeight,s.value=K.offsetWidth);let{value:ne}=$e;ne&&(u.value=ne.offsetHeight,f.value=ne.offsetWidth);let{value:Re}=i,{value:T}=n;Re&&(p.value=Re.offsetWidth),T&&(m.value=T.offsetHeight)}function ae(){let{value:K}=$e;K&&(c.value=K.scrollTop,R.value=K.scrollLeft,u.value=K.offsetHeight,f.value=K.offsetWidth,d.value=K.scrollHeight,s.value=K.scrollWidth);let{value:ne}=i,{value:Re}=n;ne&&(p.value=ne.offsetWidth),Re&&(m.value=Re.offsetHeight)}function ee(){!e.scrollable||(e.useUnifiedContainer?ae():(U(),j()))}function V(K){var ne;return!((ne=r.value)===null||ne===void 0?void 0:ne.contains(K.target))}function Z(K){K.preventDefault(),K.stopPropagation(),z=!0,Fo("mousemove",window,q,!0),Fo("mouseup",window,D,!0),S=R.value,F=K.clientX}function q(K){if(!z)return;C!==void 0&&window.clearTimeout(C),g!==void 0&&window.clearTimeout(g);let{value:ne}=f,{value:Re}=s,{value:T}=se;if(ne===null||Re===null)return;let te=(K.clientX-F)*(Re-ne)/(ne-T),de=Re-ne,Oe=S+te;Oe=Math.min(de,Oe),Oe=Math.max(Oe,0);let{value:ze}=$e;if(ze){ze.scrollLeft=Oe;let{internalOnUpdateScrollLeft:Je}=e;Je&&Je(Oe)}}function D(K){K.preventDefault(),K.stopPropagation(),Oo("mousemove",window,q,!0),Oo("mouseup",window,D,!0),z=!1,ee(),V(K)&&co()}function L(K){K.preventDefault(),K.stopPropagation(),k=!0,Fo("mousemove",window,H,!0),Fo("mouseup",window,ie,!0),v=c.value,B=K.clientY}function H(K){if(!k)return;C!==void 0&&window.clearTimeout(C),g!==void 0&&window.clearTimeout(g);let{value:ne}=u,{value:Re}=d,{value:T}=I;if(ne===null||Re===null)return;let te=(K.clientY-B)*(Re-ne)/(ne-T),de=Re-ne,Oe=v+te;Oe=Math.min(de,Oe),Oe=Math.max(Oe,0);let{value:ze}=$e;ze&&(ze.scrollTop=Oe)}function ie(K){K.preventDefault(),K.stopPropagation(),Oo("mousemove",window,H,!0),Oo("mouseup",window,ie,!0),k=!1,ee(),V(K)&&co()}Vo(()=>{let{value:K}=Ye,{value:ne}=Ge,{value:Re}=o,{value:T}=i,{value:_}=n;T&&(K?T.classList.remove(`${Re}-scrollbar-rail--disabled`):T.classList.add(`${Re}-scrollbar-rail--disabled`)),_&&(ne?_.classList.remove(`${Re}-scrollbar-rail--disabled`):_.classList.add(`${Re}-scrollbar-rail--disabled`))}),no(()=>{e.container||ee()}),Ko(()=>{C!==void 0&&window.clearTimeout(C),g!==void 0&&window.clearTimeout(g),Oo("mousemove",window,H,!0),Oo("mouseup",window,ie,!0)});let pe=ko("Scrollbar","-scrollbar",hg,Mo,e,o),ve=W(()=>{let{common:{cubicBezierEaseInOut:K,scrollbarBorderRadius:ne,scrollbarHeight:Re,scrollbarWidth:T},self:{color:_,colorHover:te}}=pe.value;return{"--n-scrollbar-bezier":K,"--n-scrollbar-color":_,"--n-scrollbar-color-hover":te,"--n-scrollbar-border-radius":ne,"--n-scrollbar-width":T,"--n-scrollbar-height":Re}}),Ae=t?tt("scrollbar",void 0,ve,e):void 0;return Object.assign(Object.assign({},{scrollTo:bo,scrollBy:We,sync:ee,syncUnifiedContainer:ae,handleMouseEnterWrapper:go,handleMouseLeaveWrapper:Le}),{mergedClsPrefix:o,containerScrollTop:c,wrapperRef:r,containerRef:a,contentRef:l,yRailRef:n,xRailRef:i,needYBar:Ge,needXBar:Ye,yBarSizePx:E,xBarSizePx:Se,yBarTopPx:me,xBarLeftPx:Fe,isShowXBar:b,isShowYBar:h,isIos:y,handleScroll:N,handleContentResize:Ke,handleContainerResize:So,handleYScrollMouseDown:L,handleXScrollMouseDown:Z,cssVars:t?void 0:ve,themeClass:Ae==null?void 0:Ae.themeClass,onRender:Ae==null?void 0:Ae.onRender})},render(){var e;let{$slots:o,mergedClsPrefix:t,triggerDisplayManually:r}=this;if(!this.scrollable)return(e=o.default)===null||e===void 0?void 0:e.call(o);let a=()=>{var l,n;return(l=this.onRender)===null||l===void 0||l.call(this),w("div",vl(this.$attrs,{role:"none",ref:"wrapperRef",class:[`${t}-scrollbar`,this.themeClass],style:this.cssVars,onMouseenter:r?void 0:this.handleMouseEnterWrapper,onMouseleave:r?void 0:this.handleMouseLeaveWrapper}),[this.container?(n=o.default)===null||n===void 0?void 0:n.call(o):w("div",{role:"none",ref:"containerRef",class:[`${t}-scrollbar-container`,this.containerClass],style:this.containerStyle,onScroll:this.handleScroll,onWheel:this.onWheel},w(Nt,{onResize:this.handleContentResize},{default:()=>w("div",{ref:"contentRef",role:"none",style:[{width:this.xScrollable?"fit-content":null},this.contentStyle],class:[`${t}-scrollbar-content`,this.contentClass]},o)})),w("div",{ref:"yRailRef",class:`${t}-scrollbar-rail ${t}-scrollbar-rail--vertical`,style:this.horizontalRailStyle,"aria-hidden":!0},w(Et,{name:"fade-in-transition"},{default:()=>this.needYBar&&this.isShowYBar&&!this.isIos?w("div",{class:`${t}-scrollbar-rail__scrollbar`,style:{height:this.yBarSizePx,top:this.yBarTopPx},onMousedown:this.handleYScrollMouseDown}):null})),w("div",{ref:"xRailRef",class:`${t}-scrollbar-rail ${t}-scrollbar-rail--horizontal`,style:this.verticalRailStyle,"aria-hidden":!0},w(Et,{name:"fade-in-transition"},{default:()=>this.needXBar&&this.isShowXBar&&!this.isIos?w("div",{class:`${t}-scrollbar-rail__scrollbar`,style:{width:this.xBarSizePx,left:this.xBarLeftPx},onMousedown:this.handleXScrollMouseDown}):null}))])};return this.container?a():w(Nt,{onResize:this.handleContainerResize},{default:a})}}),ad=xg,on=xg;var Sg={height:"calc(var(--n-option-height) * 7.6)",paddingSmall:"4px 0",paddingMedium:"4px 0",paddingLarge:"4px 0",paddingHuge:"4px 0",optionPaddingSmall:"0 12px",optionPaddingMedium:"0 12px",optionPaddingLarge:"0 12px",optionPaddingHuge:"0 12px",loadingSize:"18px"};var uu=e=>{let{borderRadius:o,popoverColor:t,textColor3:r,dividerColor:a,textColor2:l,primaryColorPressed:n,textColorDisabled:i,primaryColor:d,opacityDisabled:s,hoverColor:u,fontSizeSmall:f,fontSizeMedium:m,fontSizeLarge:p,fontSizeHuge:c,heightSmall:R,heightMedium:b,heightLarge:h,heightHuge:k}=e;return Object.assign(Object.assign({},Sg),{optionFontSizeSmall:f,optionFontSizeMedium:m,optionFontSizeLarge:p,optionFontSizeHuge:c,optionHeightSmall:R,optionHeightMedium:b,optionHeightLarge:h,optionHeightHuge:k,borderRadius:o,color:t,groupHeaderTextColor:r,actionDividerColor:a,optionTextColor:l,optionTextColorPressed:n,optionTextColorDisabled:i,optionTextColorActive:d,optionOpacityDisabled:s,optionCheckColor:d,optionColorPending:u,optionColorActive:u,actionTextColor:l,loadingColor:d})},bA=Ie({name:"InternalSelectMenu",common:xe,peers:{Scrollbar:Mo,Empty:wt},self:uu}),Ra=bA;var yA={name:"InternalSelectMenu",common:P,peers:{Scrollbar:fo,Empty:Tt},self:uu},_t=yA;var{cubicBezierEaseIn:gg,cubicBezierEaseOut:wg}=ot;function fu({transformOrigin:e="inherit",duration:o=".2s",enterScale:t=".9",originalTransform:r="",originalTransition:a=""}={}){return[Y("&.fade-in-scale-up-transition-leave-active",{transformOrigin:e,transition:`opacity ${o} ${gg}, transform ${o} ${gg} ${a&&","+a}`}),Y("&.fade-in-scale-up-transition-enter-active",{transformOrigin:e,transition:`opacity ${o} ${wg}, transform ${o} ${wg} ${a&&","+a}`}),Y("&.fade-in-scale-up-transition-enter-from, &.fade-in-scale-up-transition-leave-to",{opacity:0,transform:`${r} scale(${t})`}),Y("&.fade-in-scale-up-transition-leave-from, &.fade-in-scale-up-transition-enter-to",{opacity:1,transform:`${r} scale(1)`})]}var Tg=$("base-wave",` position: absolute; left: 0; right: 0; top: 0; bottom: 0; border-radius: inherit; -`);var rd=le({name:"BaseWave",props:{clsPrefix:{type:String,required:!0}},setup(e){Zt("-base-wave",sg,De(e,"clsPrefix"));let o=Z(null),t=Z(!1),r=null;return _o(()=>{r!==null&&window.clearTimeout(r)}),{active:t,selfRef:o,play(){r!==null&&(window.clearTimeout(r),t.value=!1,r=null),No(()=>{var a;(a=o.value)===null||a===void 0||a.offsetHeight,t.value=!0,r=window.setTimeout(()=>{t.value=!1,r=null},1e3)})}}},render(){let{clsPrefix:e}=this;return R("div",{ref:"selfRef","aria-hidden":!0,class:[`${e}-base-wave`,this.active&&`${e}-base-wave--active`]})}});var ug={space:"6px",spaceArrow:"10px",arrowOffset:"10px",arrowOffsetVertical:"10px",arrowHeight:"6px",padding:"8px 14px"};var fu=e=>{let{boxShadow2:o,popoverColor:t,textColor2:r,borderRadius:a,fontSize:l,dividerColor:n}=e;return Object.assign(Object.assign({},ug),{fontSize:l,borderRadius:a,color:t,dividerColor:n,textColor:r,boxShadow:o})},dA={name:"Popover",common:pe,self:fu},Mt=dA;var sA={name:"Popover",common:P,self:fu},Jo=sA;var fg={closeSizeSmall:"14px",closeSizeMedium:"14px",closeSizeLarge:"14px",padding:"0 7px",closeMargin:"0 0 0 3px",closeMarginRtl:"0 3px 0 0"};var uA={name:"Tag",common:P,self(e){let{textColor2:o,primaryColorHover:t,primaryColorPressed:r,primaryColor:a,infoColor:l,successColor:n,warningColor:i,errorColor:d,baseColor:s,borderColor:u,opacityDisabled:f,closeColor:c,closeColorHover:p,closeColorPressed:x,borderRadiusSmall:T,fontSizeTiny:C,fontSizeSmall:S,fontSizeMedium:D,heightTiny:j,heightSmall:O,heightMedium:g}=e;return Object.assign(Object.assign({},fg),{heightSmall:j,heightMedium:O,heightLarge:g,borderRadius:T,opacityDisabled:f,fontSizeSmall:C,fontSizeMedium:S,fontSizeLarge:D,textColorCheckable:o,textColorHoverCheckable:t,textColorPressedCheckable:r,textColorChecked:s,colorCheckable:"#0000",colorHoverCheckable:"#0000",colorPressedCheckable:"#0000",colorChecked:a,colorCheckedHover:t,colorCheckedPressed:r,border:`1px solid ${u}`,textColor:o,color:"#0000",closeColor:c,closeColorHover:p,closeColorPressed:x,borderPrimary:`1px solid ${X(a,{alpha:.3})}`,textColorPrimary:a,colorPrimary:"#0000",closeColorPrimary:X(a,{alpha:.7}),closeColorHoverPrimary:X(a,{alpha:.85}),closeColorPressedPrimary:X(a,{alpha:.57}),borderInfo:`1px solid ${X(l,{alpha:.3})}`,textColorInfo:l,colorInfo:"#0000",closeColorInfo:X(l,{alpha:.7}),closeColorHoverInfo:X(l,{alpha:.85}),closeColorPressedInfo:X(l,{alpha:.57}),borderSuccess:`1px solid ${X(n,{alpha:.3})}`,textColorSuccess:n,colorSuccess:"#0000",closeColorSuccess:X(n,{alpha:.7}),closeColorHoverSuccess:X(n,{alpha:.85}),closeColorPressedSuccess:X(n,{alpha:.57}),borderWarning:`1px solid ${X(i,{alpha:.3})}`,textColorWarning:i,colorWarning:"#0000",closeColorWarning:X(i,{alpha:.7}),closeColorHoverWarning:X(i,{alpha:.85}),closeColorPressedWarning:X(i,{alpha:.57}),borderError:`1px solid ${X(d,{alpha:.3})}`,textColorError:d,colorError:"#0000",closeColorError:X(d,{alpha:.7}),closeColorHoverError:X(d,{alpha:.85}),closeColorPressedError:X(d,{alpha:.57})})}},on=uA;function ha(e,o,t){if(!o)return;let r=wt(),a=V(()=>{let{value:n}=o;if(!n)return;let i=n[e];if(!!i)return i}),l=()=>{Mo(()=>{let{value:n}=t,i=`${n}${e}Rtl`;if(Fs(i,r))return;let{value:d}=a;!d||d.style.mount({id:i,head:!0,anchorMetaName:zr,props:{bPrefix:n?`.${n}-`:void 0},ssr:r})})};return r?l():dr(l),a}var pg=K("base-clear",` +`);var ld=re({name:"BaseWave",props:{clsPrefix:{type:String,required:!0}},setup(e){tr("-base-wave",Tg,_e(e,"clsPrefix"));let o=Q(null),t=Q(!1),r=null;return Ko(()=>{r!==null&&window.clearTimeout(r)}),{active:t,selfRef:o,play(){r!==null&&(window.clearTimeout(r),t.value=!1,r=null),Uo(()=>{var a;(a=o.value)===null||a===void 0||a.offsetHeight,t.value=!0,r=window.setTimeout(()=>{t.value=!1,r=null},1e3)})}}},render(){let{clsPrefix:e}=this;return w("div",{ref:"selfRef","aria-hidden":!0,class:[`${e}-base-wave`,this.active&&`${e}-base-wave--active`]})}});var Rg={space:"6px",spaceArrow:"10px",arrowOffset:"10px",arrowOffsetVertical:"10px",arrowHeight:"6px",padding:"8px 14px"};var pu=e=>{let{boxShadow2:o,popoverColor:t,textColor2:r,borderRadius:a,fontSize:l,dividerColor:n}=e;return Object.assign(Object.assign({},Rg),{fontSize:l,borderRadius:a,color:t,dividerColor:n,textColor:r,boxShadow:o})},vA={name:"Popover",common:xe,self:pu},It=vA;var kA={name:"Popover",common:P,self:pu},it=kA;var Og={closeSizeSmall:"14px",closeSizeMedium:"14px",closeSizeLarge:"14px",padding:"0 7px",closeMargin:"0 0 0 3px",closeMarginRtl:"0 3px 0 0"};var AA={name:"Tag",common:P,self(e){let{textColor2:o,primaryColorHover:t,primaryColorPressed:r,primaryColor:a,infoColor:l,successColor:n,warningColor:i,errorColor:d,baseColor:s,borderColor:u,opacityDisabled:f,closeColor:m,closeColorHover:p,closeColorPressed:c,borderRadiusSmall:R,fontSizeTiny:b,fontSizeSmall:h,fontSizeMedium:k,heightTiny:z,heightSmall:C,heightMedium:g}=e;return Object.assign(Object.assign({},Og),{heightSmall:z,heightMedium:C,heightLarge:g,borderRadius:R,opacityDisabled:f,fontSizeSmall:b,fontSizeMedium:h,fontSizeLarge:k,textColorCheckable:o,textColorHoverCheckable:t,textColorPressedCheckable:r,textColorChecked:s,colorCheckable:"#0000",colorHoverCheckable:"#0000",colorPressedCheckable:"#0000",colorChecked:a,colorCheckedHover:t,colorCheckedPressed:r,border:`1px solid ${u}`,textColor:o,color:"#0000",closeColor:m,closeColorHover:p,closeColorPressed:c,borderPrimary:`1px solid ${oe(a,{alpha:.3})}`,textColorPrimary:a,colorPrimary:"#0000",closeColorPrimary:oe(a,{alpha:.7}),closeColorHoverPrimary:oe(a,{alpha:.85}),closeColorPressedPrimary:oe(a,{alpha:.57}),borderInfo:`1px solid ${oe(l,{alpha:.3})}`,textColorInfo:l,colorInfo:"#0000",closeColorInfo:oe(l,{alpha:.7}),closeColorHoverInfo:oe(l,{alpha:.85}),closeColorPressedInfo:oe(l,{alpha:.57}),borderSuccess:`1px solid ${oe(n,{alpha:.3})}`,textColorSuccess:n,colorSuccess:"#0000",closeColorSuccess:oe(n,{alpha:.7}),closeColorHoverSuccess:oe(n,{alpha:.85}),closeColorPressedSuccess:oe(n,{alpha:.57}),borderWarning:`1px solid ${oe(i,{alpha:.3})}`,textColorWarning:i,colorWarning:"#0000",closeColorWarning:oe(i,{alpha:.7}),closeColorHoverWarning:oe(i,{alpha:.85}),closeColorPressedWarning:oe(i,{alpha:.57}),borderError:`1px solid ${oe(d,{alpha:.3})}`,textColorError:d,colorError:"#0000",closeColorError:oe(d,{alpha:.7}),closeColorHoverError:oe(d,{alpha:.85}),closeColorPressedError:oe(d,{alpha:.57})})}},tn=AA;function Oa(e,o,t){if(!o)return;let r=bt(),a=W(()=>{let{value:n}=o;if(!n)return;let i=n[e];if(!!i)return i}),l=()=>{Vo(()=>{let{value:n}=t,i=`${n}${e}Rtl`;if(Fs(i,r))return;let{value:d}=a;!d||d.style.mount({id:i,head:!0,anchorMetaName:qr,props:{bPrefix:n?`.${n}-`:void 0},ssr:r})})};return r?l():hr(l),a}var Fg=$("base-clear",` flex-shrink: 0; height: 1em; width: 1em; position: relative; -`,[Y(">",[J("clear",` +`,[Y(">",[X("clear",` font-size: var(--n-clear-size); cursor: pointer; color: var(--n-clear-color); @@ -262,54 +262,54 @@ ${o} color: var(--n-clear-color-hover)!important; `),Y("&:active",` color: var(--n-clear-color-pressed)!important; - `)]),J("placeholder",` + `)]),X("placeholder",` display: flex; - `),J("clear, placeholder",` + `),X("clear, placeholder",` position: absolute; left: 50%; top: 50%; transform: translateX(-50%) translateY(-50%); - `,[ut({originalTransform:"translateX(-50%) translateY(-50%)",left:"50%",top:"50%"})])])]);var Sa=le({name:"BaseClear",props:{clsPrefix:{type:String,required:!0},show:Boolean,onClear:Function},setup(e){return Zt("-base-clear",pg,De(e,"clsPrefix")),{handleMouseDown(o){o.preventDefault()}}},render(){let{clsPrefix:e}=this;return R("div",{class:`${e}-base-clear`},R(Ct,null,{default:()=>{var o,t;return this.show?R(bt,{clsPrefix:e,key:"dismiss",class:`${e}-base-clear__clear`,onClick:this.onClear,onMousedown:this.handleMouseDown,"data-clear":!0},{default:()=>R(eu,null)}):R("div",{key:"icon",class:`${e}-base-clear__placeholder`},(t=(o=this.$slots).default)===null||t===void 0?void 0:t.call(o))}}))}});var ad=le({name:"InternalSelectionSuffix",props:{clsPrefix:{type:String,required:!0},showArrow:{type:Boolean,default:void 0},showClear:{type:Boolean,default:void 0},loading:{type:Boolean,default:!1},onClear:Function},setup(e,{slots:o}){return()=>{let{clsPrefix:t}=e;return R(jr,{clsPrefix:t,class:`${t}-base-suffix`,strokeWidth:24,scale:.85,show:e.loading},{default:()=>e.showArrow?R(Sa,{clsPrefix:t,show:e.showClear,onClear:e.onClear},{default:()=>R(bt,{clsPrefix:t,class:`${t}-base-suffix__arrow`},{default:()=>Ut(o.default,()=>[R(Xs,null)])})}):null})}}});var ld={paddingSingle:"0 26px 0 12px",paddingMultiple:"3px 26px 0 12px",clearSize:"16px",arrowSize:"16px"};var fA=e=>{let{borderRadius:o,textColor2:t,textColorDisabled:r,inputColor:a,inputColorDisabled:l,primaryColor:n,primaryColorHover:i,warningColor:d,warningColorHover:s,errorColor:u,errorColorHover:f,borderColor:c,iconColor:p,iconColorDisabled:x,clearColor:T,clearColorHover:C,clearColorPressed:S,placeholderColor:D,placeholderColorDisabled:j,fontSizeTiny:O,fontSizeSmall:g,fontSizeMedium:v,fontSizeLarge:w,heightTiny:F,heightSmall:B,heightMedium:y,heightLarge:W}=e;return Object.assign(Object.assign({},ld),{fontSizeTiny:O,fontSizeSmall:g,fontSizeMedium:v,fontSizeLarge:w,heightTiny:F,heightSmall:B,heightMedium:y,heightLarge:W,borderRadius:o,textColor:t,textColorDisabled:r,placeholderColor:D,placeholderColorDisabled:j,color:a,colorDisabled:l,colorActive:a,border:`1px solid ${c}`,borderHover:`1px solid ${i}`,borderActive:`1px solid ${n}`,borderFocus:`1px solid ${i}`,boxShadowHover:"none",boxShadowActive:`0 0 0 2px ${X(n,{alpha:.2})}`,boxShadowFocus:`0 0 0 2px ${X(n,{alpha:.2})}`,caretColor:n,arrowColor:p,arrowColorDisabled:x,loadingColor:n,borderWarning:`1px solid ${d}`,borderHoverWarning:`1px solid ${s}`,borderActiveWarning:`1px solid ${d}`,borderFocusWarning:`1px solid ${s}`,boxShadowHoverWarning:"none",boxShadowActiveWarning:`0 0 0 2px ${X(d,{alpha:.2})}`,boxShadowFocusWarning:`0 0 0 2px ${X(d,{alpha:.2})}`,colorActiveWarning:a,caretColorWarning:d,borderError:`1px solid ${u}`,borderHoverError:`1px solid ${f}`,borderActiveError:`1px solid ${u}`,borderFocusError:`1px solid ${f}`,boxShadowHoverError:"none",boxShadowActiveError:`0 0 0 2px ${X(u,{alpha:.2})}`,boxShadowFocusError:`0 0 0 2px ${X(u,{alpha:.2})}`,colorActiveError:a,caretColorError:u,clearColor:T,clearColorHover:C,clearColorPressed:S})},pA=Pe({name:"InternalSelection",common:pe,peers:{Popover:Mt},self:fA}),tn=pA;var mA={name:"InternalSelection",common:P,peers:{Popover:Jo},self(e){let{borderRadius:o,textColor2:t,textColorDisabled:r,inputColor:a,inputColorDisabled:l,primaryColor:n,primaryColorHover:i,warningColor:d,warningColorHover:s,errorColor:u,errorColorHover:f,iconColor:c,iconColorDisabled:p,clearColor:x,clearColorHover:T,clearColorPressed:C,placeholderColor:S,placeholderColorDisabled:D,fontSizeTiny:j,fontSizeSmall:O,fontSizeMedium:g,fontSizeLarge:v,heightTiny:w,heightSmall:F,heightMedium:B,heightLarge:y}=e;return Object.assign(Object.assign({},ld),{fontSizeTiny:j,fontSizeSmall:O,fontSizeMedium:g,fontSizeLarge:v,heightTiny:w,heightSmall:F,heightMedium:B,heightLarge:y,borderRadius:o,textColor:t,textColorDisabled:r,placeholderColor:S,placeholderColorDisabled:D,color:a,colorDisabled:l,colorActive:X(n,{alpha:.1}),border:"1px solid #0000",borderHover:`1px solid ${i}`,borderActive:`1px solid ${n}`,borderFocus:`1px solid ${i}`,boxShadowHover:"none",boxShadowActive:`0 0 8px 0 ${X(n,{alpha:.4})}`,boxShadowFocus:`0 0 8px 0 ${X(n,{alpha:.4})}`,caretColor:n,arrowColor:c,arrowColorDisabled:p,loadingColor:n,borderWarning:`1px solid ${d}`,borderHoverWarning:`1px solid ${s}`,borderActiveWarning:`1px solid ${d}`,borderFocusWarning:`1px solid ${s}`,boxShadowHoverWarning:"none",boxShadowActiveWarning:`0 0 8px 0 ${X(d,{alpha:.4})}`,boxShadowFocusWarning:`0 0 8px 0 ${X(d,{alpha:.4})}`,colorActiveWarning:X(d,{alpha:.1}),caretColorWarning:d,borderError:`1px solid ${u}`,borderHoverError:`1px solid ${f}`,borderActiveError:`1px solid ${u}`,borderFocusError:`1px solid ${f}`,boxShadowHoverError:"none",boxShadowActiveError:`0 0 8px 0 ${X(u,{alpha:.4})}`,boxShadowFocusError:`0 0 8px 0 ${X(u,{alpha:.4})}`,colorActiveError:X(u,{alpha:.1}),caretColorError:u,clearColor:x,clearColorHover:T,clearColorPressed:C})}},ga=mA;var{cubicBezierEaseInOut:$r}=Uo;function mg({duration:e=".2s",delay:o=".1s"}={}){return[Y("&.fade-in-width-expand-transition-leave-from, &.fade-in-width-expand-transition-enter-to",{opacity:1}),Y("&.fade-in-width-expand-transition-leave-to, &.fade-in-width-expand-transition-enter-from",` + `,[gt({originalTransform:"translateX(-50%) translateY(-50%)",left:"50%",top:"50%"})])])]);var Fa=re({name:"BaseClear",props:{clsPrefix:{type:String,required:!0},show:Boolean,onClear:Function},setup(e){return tr("-base-clear",Fg,_e(e,"clsPrefix")),{handleMouseDown(o){o.preventDefault()}}},render(){let{clsPrefix:e}=this;return w("div",{class:`${e}-base-clear`},w(Dt,null,{default:()=>{var o,t;return this.show?w(Pt,{clsPrefix:e,key:"dismiss",class:`${e}-base-clear__clear`,onClick:this.onClear,onMousedown:this.handleMouseDown,"data-clear":!0},{default:()=>w(ou,null)}):w("div",{key:"icon",class:`${e}-base-clear__placeholder`},(t=(o=this.$slots).default)===null||t===void 0?void 0:t.call(o))}}))}});var nd=re({name:"InternalSelectionSuffix",props:{clsPrefix:{type:String,required:!0},showArrow:{type:Boolean,default:void 0},showClear:{type:Boolean,default:void 0},loading:{type:Boolean,default:!1},onClear:Function},setup(e,{slots:o}){return()=>{let{clsPrefix:t}=e;return w(Qr,{clsPrefix:t,class:`${t}-base-suffix`,strokeWidth:24,scale:.85,show:e.loading},{default:()=>e.showArrow?w(Fa,{clsPrefix:t,show:e.showClear,onClear:e.onClear},{default:()=>w(Pt,{clsPrefix:t,class:`${t}-base-suffix__arrow`},{default:()=>Yt(o.default,()=>[w(eu,null)])})}):null})}}});var id={paddingSingle:"0 26px 0 12px",paddingMultiple:"3px 26px 0 12px",clearSize:"16px",arrowSize:"16px"};var DA=e=>{let{borderRadius:o,textColor2:t,textColorDisabled:r,inputColor:a,inputColorDisabled:l,primaryColor:n,primaryColorHover:i,warningColor:d,warningColorHover:s,errorColor:u,errorColorHover:f,borderColor:m,iconColor:p,iconColorDisabled:c,clearColor:R,clearColorHover:b,clearColorPressed:h,placeholderColor:k,placeholderColorDisabled:z,fontSizeTiny:C,fontSizeSmall:g,fontSizeMedium:v,fontSizeLarge:S,heightTiny:F,heightSmall:B,heightMedium:y,heightLarge:I}=e;return Object.assign(Object.assign({},id),{fontSizeTiny:C,fontSizeSmall:g,fontSizeMedium:v,fontSizeLarge:S,heightTiny:F,heightSmall:B,heightMedium:y,heightLarge:I,borderRadius:o,textColor:t,textColorDisabled:r,placeholderColor:k,placeholderColorDisabled:z,color:a,colorDisabled:l,colorActive:a,border:`1px solid ${m}`,borderHover:`1px solid ${i}`,borderActive:`1px solid ${n}`,borderFocus:`1px solid ${i}`,boxShadowHover:"none",boxShadowActive:`0 0 0 2px ${oe(n,{alpha:.2})}`,boxShadowFocus:`0 0 0 2px ${oe(n,{alpha:.2})}`,caretColor:n,arrowColor:p,arrowColorDisabled:c,loadingColor:n,borderWarning:`1px solid ${d}`,borderHoverWarning:`1px solid ${s}`,borderActiveWarning:`1px solid ${d}`,borderFocusWarning:`1px solid ${s}`,boxShadowHoverWarning:"none",boxShadowActiveWarning:`0 0 0 2px ${oe(d,{alpha:.2})}`,boxShadowFocusWarning:`0 0 0 2px ${oe(d,{alpha:.2})}`,colorActiveWarning:a,caretColorWarning:d,borderError:`1px solid ${u}`,borderHoverError:`1px solid ${f}`,borderActiveError:`1px solid ${u}`,borderFocusError:`1px solid ${f}`,boxShadowHoverError:"none",boxShadowActiveError:`0 0 0 2px ${oe(u,{alpha:.2})}`,boxShadowFocusError:`0 0 0 2px ${oe(u,{alpha:.2})}`,colorActiveError:a,caretColorError:u,clearColor:R,clearColorHover:b,clearColorPressed:h})},PA=Ie({name:"InternalSelection",common:xe,peers:{Popover:It},self:DA}),rn=PA;var MA={name:"InternalSelection",common:P,peers:{Popover:it},self(e){let{borderRadius:o,textColor2:t,textColorDisabled:r,inputColor:a,inputColorDisabled:l,primaryColor:n,primaryColorHover:i,warningColor:d,warningColorHover:s,errorColor:u,errorColorHover:f,iconColor:m,iconColorDisabled:p,clearColor:c,clearColorHover:R,clearColorPressed:b,placeholderColor:h,placeholderColorDisabled:k,fontSizeTiny:z,fontSizeSmall:C,fontSizeMedium:g,fontSizeLarge:v,heightTiny:S,heightSmall:F,heightMedium:B,heightLarge:y}=e;return Object.assign(Object.assign({},id),{fontSizeTiny:z,fontSizeSmall:C,fontSizeMedium:g,fontSizeLarge:v,heightTiny:S,heightSmall:F,heightMedium:B,heightLarge:y,borderRadius:o,textColor:t,textColorDisabled:r,placeholderColor:h,placeholderColorDisabled:k,color:a,colorDisabled:l,colorActive:oe(n,{alpha:.1}),border:"1px solid #0000",borderHover:`1px solid ${i}`,borderActive:`1px solid ${n}`,borderFocus:`1px solid ${i}`,boxShadowHover:"none",boxShadowActive:`0 0 8px 0 ${oe(n,{alpha:.4})}`,boxShadowFocus:`0 0 8px 0 ${oe(n,{alpha:.4})}`,caretColor:n,arrowColor:m,arrowColorDisabled:p,loadingColor:n,borderWarning:`1px solid ${d}`,borderHoverWarning:`1px solid ${s}`,borderActiveWarning:`1px solid ${d}`,borderFocusWarning:`1px solid ${s}`,boxShadowHoverWarning:"none",boxShadowActiveWarning:`0 0 8px 0 ${oe(d,{alpha:.4})}`,boxShadowFocusWarning:`0 0 8px 0 ${oe(d,{alpha:.4})}`,colorActiveWarning:oe(d,{alpha:.1}),caretColorWarning:d,borderError:`1px solid ${u}`,borderHoverError:`1px solid ${f}`,borderActiveError:`1px solid ${u}`,borderFocusError:`1px solid ${f}`,boxShadowHoverError:"none",boxShadowActiveError:`0 0 8px 0 ${oe(u,{alpha:.4})}`,boxShadowFocusError:`0 0 8px 0 ${oe(u,{alpha:.4})}`,colorActiveError:oe(u,{alpha:.1}),caretColorError:u,clearColor:c,clearColorHover:R,clearColorPressed:b})}},Ca=MA;var{cubicBezierEaseInOut:Zr}=ot;function Cg({duration:e=".2s",delay:o=".1s"}={}){return[Y("&.fade-in-width-expand-transition-leave-from, &.fade-in-width-expand-transition-enter-to",{opacity:1}),Y("&.fade-in-width-expand-transition-leave-to, &.fade-in-width-expand-transition-enter-from",` opacity: 0!important; margin-left: 0!important; margin-right: 0!important; `),Y("&.fade-in-width-expand-transition-leave-active",` overflow: hidden; transition: - opacity ${e} ${$r}, - max-width ${e} ${$r} ${o}, - margin-left ${e} ${$r} ${o}, - margin-right ${e} ${$r} ${o}; + opacity ${e} ${Zr}, + max-width ${e} ${Zr} ${o}, + margin-left ${e} ${Zr} ${o}, + margin-right ${e} ${Zr} ${o}; `),Y("&.fade-in-width-expand-transition-enter-active",` overflow: hidden; transition: - opacity ${e} ${$r} ${o}, - max-width ${e} ${$r}, - margin-left ${e} ${$r}, - margin-right ${e} ${$r}; - `)]}var cg={iconMargin:"12px 8px 0 12px",iconMarginRtl:"12px 12px 0 8px",iconSize:"26px",closeSize:"16px",closeMargin:"14px 16px 0 0",closeMarginRtl:"14px 0 0 16px",padding:"15px"};var cA={name:"Alert",common:P,self(e){let{lineHeight:o,borderRadius:t,fontWeightStrong:r,dividerColor:a,inputColor:l,textColor1:n,textColor2:i,closeColor:d,closeColorHover:s,closeColorPressed:u,infoColorSuppl:f,successColorSuppl:c,warningColorSuppl:p,errorColorSuppl:x,fontSize:T}=e;return Object.assign(Object.assign({},cg),{fontSize:T,lineHeight:o,titleFontWeight:r,borderRadius:t,border:`1px solid ${a}`,color:l,titleTextColor:n,iconColor:i,contentTextColor:i,closeColor:d,closeColorHover:s,closeColorPressed:u,borderInfo:`1px solid ${X(f,{alpha:.35})}`,colorInfo:X(f,{alpha:.25}),titleTextColorInfo:n,iconColorInfo:f,contentTextColorInfo:i,closeColorInfo:d,closeColorHoverInfo:s,closeColorPressedInfo:u,borderSuccess:`1px solid ${X(c,{alpha:.35})}`,colorSuccess:X(c,{alpha:.25}),titleTextColorSuccess:n,iconColorSuccess:c,contentTextColorSuccess:i,closeColorSuccess:d,closeColorHoverSuccess:s,closeColorPressedSuccess:u,borderWarning:`1px solid ${X(p,{alpha:.35})}`,colorWarning:X(p,{alpha:.25}),titleTextColorWarning:n,iconColorWarning:p,contentTextColorWarning:i,closeColorWarning:d,closeColorHoverWarning:s,closeColorPressedWarning:u,borderError:`1px solid ${X(x,{alpha:.35})}`,colorError:X(x,{alpha:.25}),titleTextColorError:n,iconColorError:x,contentTextColorError:i,closeColorError:d,closeColorHoverError:s,closeColorPressedError:u})}},pu=cA;var{cubicBezierEaseInOut:Yt,cubicBezierEaseOut:xA,cubicBezierEaseIn:hA}=Uo;function mu({overflow:e="hidden",duration:o=".3s",originalTransition:t="",leavingDelay:r="0s",foldPadding:a=!1,enterToProps:l=void 0,leaveToProps:n=void 0,reverse:i=!1}={}){let d=i?"leave":"enter",s=i?"enter":"leave";return[Y(`&.fade-in-height-expand-transition-${s}-from, + opacity ${e} ${Zr} ${o}, + max-width ${e} ${Zr}, + margin-left ${e} ${Zr}, + margin-right ${e} ${Zr}; + `)]}var bg={iconMargin:"12px 8px 0 12px",iconMarginRtl:"12px 12px 0 8px",iconSize:"26px",closeSize:"16px",closeMargin:"14px 16px 0 0",closeMarginRtl:"14px 0 0 16px",padding:"15px"};var BA={name:"Alert",common:P,self(e){let{lineHeight:o,borderRadius:t,fontWeightStrong:r,dividerColor:a,inputColor:l,textColor1:n,textColor2:i,closeColor:d,closeColorHover:s,closeColorPressed:u,infoColorSuppl:f,successColorSuppl:m,warningColorSuppl:p,errorColorSuppl:c,fontSize:R}=e;return Object.assign(Object.assign({},bg),{fontSize:R,lineHeight:o,titleFontWeight:r,borderRadius:t,border:`1px solid ${a}`,color:l,titleTextColor:n,iconColor:i,contentTextColor:i,closeColor:d,closeColorHover:s,closeColorPressed:u,borderInfo:`1px solid ${oe(f,{alpha:.35})}`,colorInfo:oe(f,{alpha:.25}),titleTextColorInfo:n,iconColorInfo:f,contentTextColorInfo:i,closeColorInfo:d,closeColorHoverInfo:s,closeColorPressedInfo:u,borderSuccess:`1px solid ${oe(m,{alpha:.35})}`,colorSuccess:oe(m,{alpha:.25}),titleTextColorSuccess:n,iconColorSuccess:m,contentTextColorSuccess:i,closeColorSuccess:d,closeColorHoverSuccess:s,closeColorPressedSuccess:u,borderWarning:`1px solid ${oe(p,{alpha:.35})}`,colorWarning:oe(p,{alpha:.25}),titleTextColorWarning:n,iconColorWarning:p,contentTextColorWarning:i,closeColorWarning:d,closeColorHoverWarning:s,closeColorPressedWarning:u,borderError:`1px solid ${oe(c,{alpha:.35})}`,colorError:oe(c,{alpha:.25}),titleTextColorError:n,iconColorError:c,contentTextColorError:i,closeColorError:d,closeColorHoverError:s,closeColorPressedError:u})}},mu=BA;var{cubicBezierEaseInOut:rr,cubicBezierEaseOut:EA,cubicBezierEaseIn:LA}=ot;function cu({overflow:e="hidden",duration:o=".3s",originalTransition:t="",leavingDelay:r="0s",foldPadding:a=!1,enterToProps:l=void 0,leaveToProps:n=void 0,reverse:i=!1}={}){let d=i?"leave":"enter",s=i?"enter":"leave";return[Y(`&.fade-in-height-expand-transition-${s}-from, &.fade-in-height-expand-transition-${d}-to`,Object.assign(Object.assign({},l),{opacity:1})),Y(`&.fade-in-height-expand-transition-${s}-to, &.fade-in-height-expand-transition-${d}-from`,Object.assign(Object.assign({},n),{opacity:0,marginTop:"0 !important",marginBottom:"0 !important",paddingTop:a?"0 !important":void 0,paddingBottom:a?"0 !important":void 0})),Y(`&.fade-in-height-expand-transition-${s}-active`,` overflow: ${e}; transition: - max-height ${o} ${Yt} ${r}, - opacity ${o} ${xA} ${r}, - margin-top ${o} ${Yt} ${r}, - margin-bottom ${o} ${Yt} ${r}, - padding-top ${o} ${Yt} ${r}, - padding-bottom ${o} ${Yt} ${r} + max-height ${o} ${rr} ${r}, + opacity ${o} ${EA} ${r}, + margin-top ${o} ${rr} ${r}, + margin-bottom ${o} ${rr} ${r}, + padding-top ${o} ${rr} ${r}, + padding-bottom ${o} ${rr} ${r} ${t?","+t:""} `),Y(`&.fade-in-height-expand-transition-${d}-active`,` overflow: ${e}; transition: - max-height ${o} ${Yt}, - opacity ${o} ${hA}, - margin-top ${o} ${Yt}, - margin-bottom ${o} ${Yt}, - padding-top ${o} ${Yt}, - padding-bottom ${o} ${Yt} + max-height ${o} ${rr}, + opacity ${o} ${LA}, + margin-top ${o} ${rr}, + margin-bottom ${o} ${rr}, + padding-top ${o} ${rr}, + padding-bottom ${o} ${rr} ${t?","+t:""} - `)]}var xg={linkFontSize:"13px",linkPadding:"0 0 0 16px",railWidth:"4px"};var hg=e=>{let{borderRadius:o,railColor:t,primaryColor:r,primaryColorHover:a,primaryColorPressed:l,textColor2:n}=e;return Object.assign(Object.assign({},xg),{borderRadius:o,railColor:t,railColorActive:r,linkColor:X(r,{alpha:.15}),linkTextColor:n,linkTextColorHover:a,linkTextColorPressed:l,linkTextColorActive:r})};var SA={name:"Anchor",common:P,self:hg},cu=SA;var nd={paddingTiny:"0 8px",paddingSmall:"0 10px",paddingMedium:"0 12px",paddingLarge:"0 14px",clearSize:"16px"};var gA={name:"Input",common:P,self(e){let{textColor2:o,textColor3:t,textColorDisabled:r,primaryColor:a,primaryColorHover:l,inputColor:n,inputColorDisabled:i,warningColor:d,warningColorHover:s,errorColor:u,errorColorHover:f,borderRadius:c,lineHeight:p,fontSizeTiny:x,fontSizeSmall:T,fontSizeMedium:C,fontSizeLarge:S,heightTiny:D,heightSmall:j,heightMedium:O,heightLarge:g,clearColor:v,clearColorHover:w,clearColorPressed:F,placeholderColor:B,placeholderColorDisabled:y,iconColor:W,iconColorDisabled:_,iconColorHover:ae,iconColorPressed:he}=e;return Object.assign(Object.assign({},nd),{countTextColor:t,heightTiny:D,heightSmall:j,heightMedium:O,heightLarge:g,fontSizeTiny:x,fontSizeSmall:T,fontSizeMedium:C,fontSizeLarge:S,lineHeight:p,lineHeightTextarea:p,borderRadius:c,iconSize:"16px",groupLabelColor:n,textColor:o,textColorDisabled:r,textDecorationColor:o,groupLabelTextColor:o,caretColor:a,placeholderColor:B,placeholderColorDisabled:y,color:n,colorDisabled:i,colorFocus:X(a,{alpha:.1}),groupLabelBorder:"1px solid #0000",border:"1px solid #0000",borderHover:`1px solid ${l}`,borderDisabled:"1px solid #0000",borderFocus:`1px solid ${l}`,boxShadowFocus:`0 0 8px 0 ${X(a,{alpha:.3})}`,loadingColor:a,loadingColorWarning:d,borderWarning:`1px solid ${d}`,borderHoverWarning:`1px solid ${s}`,colorFocusWarning:X(d,{alpha:.1}),borderFocusWarning:`1px solid ${s}`,boxShadowFocusWarning:`0 0 8px 0 ${X(d,{alpha:.3})}`,caretColorWarning:d,loadingColorError:u,borderError:`1px solid ${u}`,borderHoverError:`1px solid ${f}`,colorFocusError:X(u,{alpha:.1}),borderFocusError:`1px solid ${f}`,boxShadowFocusError:`0 0 8px 0 ${X(u,{alpha:.3})}`,caretColorError:u,clearColor:v,clearColorHover:w,clearColorPressed:F,iconColor:W,iconColorDisabled:_,iconColorHover:ae,iconColorPressed:he,suffixTextColor:o})}},go=gA;var wA=e=>{let{textColor2:o,textColor3:t,textColorDisabled:r,primaryColor:a,primaryColorHover:l,inputColor:n,inputColorDisabled:i,borderColor:d,warningColor:s,warningColorHover:u,errorColor:f,errorColorHover:c,borderRadius:p,lineHeight:x,fontSizeTiny:T,fontSizeSmall:C,fontSizeMedium:S,fontSizeLarge:D,heightTiny:j,heightSmall:O,heightMedium:g,heightLarge:v,actionColor:w,clearColor:F,clearColorHover:B,clearColorPressed:y,placeholderColor:W,placeholderColorDisabled:_,iconColor:ae,iconColorDisabled:he,iconColorHover:Me,iconColorPressed:de}=e;return Object.assign(Object.assign({},nd),{countTextColor:t,heightTiny:j,heightSmall:O,heightMedium:g,heightLarge:v,fontSizeTiny:T,fontSizeSmall:C,fontSizeMedium:S,fontSizeLarge:D,lineHeight:x,lineHeightTextarea:x,borderRadius:p,iconSize:"16px",groupLabelColor:w,groupLabelTextColor:o,textColor:o,textColorDisabled:r,textDecorationColor:o,caretColor:a,placeholderColor:W,placeholderColorDisabled:_,color:n,colorDisabled:i,colorFocus:n,groupLabelBorder:`1px solid ${d}`,border:`1px solid ${d}`,borderHover:`1px solid ${l}`,borderDisabled:`1px solid ${d}`,borderFocus:`1px solid ${l}`,boxShadowFocus:`0 0 0 2px ${X(a,{alpha:.2})}`,loadingColor:a,loadingColorWarning:s,borderWarning:`1px solid ${s}`,borderHoverWarning:`1px solid ${u}`,colorFocusWarning:n,borderFocusWarning:`1px solid ${u}`,boxShadowFocusWarning:`0 0 0 2px ${X(s,{alpha:.2})}`,caretColorWarning:s,loadingColorError:f,borderError:`1px solid ${f}`,borderHoverError:`1px solid ${c}`,colorFocusError:n,borderFocusError:`1px solid ${c}`,boxShadowFocusError:`0 0 0 2px ${X(f,{alpha:.2})}`,caretColorError:f,clearColor:F,clearColorHover:B,clearColorPressed:y,iconColor:ae,iconColorDisabled:he,iconColorHover:Me,iconColorPressed:de,suffixTextColor:o})},TA={name:"Input",common:pe,self:wA},mt=TA;var id=lo("n-input");function Sg(e){let o=0;for(let t of e)o++;return o}function rn(e){return["",void 0,null].includes(e)}var xu=le({name:"InputWordCount",setup(e,{slots:o}){let{mergedValueRef:t,maxlengthRef:r,mergedClsPrefixRef:a}=Te(id),l=V(()=>{let{value:n}=t;return n===null||Array.isArray(n)?0:Sg(n)});return()=>{let{value:n}=r,{value:i}=t;return R("span",{class:`${a.value}-input-word-count`},ii(o.default,{value:i===null||Array.isArray(i)?"":i},()=>[n===void 0?l.value:`${l.value} / ${n}`]))}}});var gg=K("input",` + `)]}var yg={linkFontSize:"13px",linkPadding:"0 0 0 16px",railWidth:"4px"};var vg=e=>{let{borderRadius:o,railColor:t,primaryColor:r,primaryColorHover:a,primaryColorPressed:l,textColor2:n}=e;return Object.assign(Object.assign({},yg),{borderRadius:o,railColor:t,railColorActive:r,linkColor:oe(r,{alpha:.15}),linkTextColor:n,linkTextColorHover:a,linkTextColorPressed:l,linkTextColorActive:r})};var NA={name:"Anchor",common:P,self:vg},hu=NA;var dd={paddingTiny:"0 8px",paddingSmall:"0 10px",paddingMedium:"0 12px",paddingLarge:"0 14px",clearSize:"16px"};var _A={name:"Input",common:P,self(e){let{textColor2:o,textColor3:t,textColorDisabled:r,primaryColor:a,primaryColorHover:l,inputColor:n,inputColorDisabled:i,warningColor:d,warningColorHover:s,errorColor:u,errorColorHover:f,borderRadius:m,lineHeight:p,fontSizeTiny:c,fontSizeSmall:R,fontSizeMedium:b,fontSizeLarge:h,heightTiny:k,heightSmall:z,heightMedium:C,heightLarge:g,clearColor:v,clearColorHover:S,clearColorPressed:F,placeholderColor:B,placeholderColorDisabled:y,iconColor:I,iconColorDisabled:E,iconColorHover:se,iconColorPressed:Se}=e;return Object.assign(Object.assign({},dd),{countTextColor:t,heightTiny:k,heightSmall:z,heightMedium:C,heightLarge:g,fontSizeTiny:c,fontSizeSmall:R,fontSizeMedium:b,fontSizeLarge:h,lineHeight:p,lineHeightTextarea:p,borderRadius:m,iconSize:"16px",groupLabelColor:n,textColor:o,textColorDisabled:r,textDecorationColor:o,groupLabelTextColor:o,caretColor:a,placeholderColor:B,placeholderColorDisabled:y,color:n,colorDisabled:i,colorFocus:oe(a,{alpha:.1}),groupLabelBorder:"1px solid #0000",border:"1px solid #0000",borderHover:`1px solid ${l}`,borderDisabled:"1px solid #0000",borderFocus:`1px solid ${l}`,boxShadowFocus:`0 0 8px 0 ${oe(a,{alpha:.3})}`,loadingColor:a,loadingColorWarning:d,borderWarning:`1px solid ${d}`,borderHoverWarning:`1px solid ${s}`,colorFocusWarning:oe(d,{alpha:.1}),borderFocusWarning:`1px solid ${s}`,boxShadowFocusWarning:`0 0 8px 0 ${oe(d,{alpha:.3})}`,caretColorWarning:d,loadingColorError:u,borderError:`1px solid ${u}`,borderHoverError:`1px solid ${f}`,colorFocusError:oe(u,{alpha:.1}),borderFocusError:`1px solid ${f}`,boxShadowFocusError:`0 0 8px 0 ${oe(u,{alpha:.3})}`,caretColorError:u,clearColor:v,clearColorHover:S,clearColorPressed:F,iconColor:I,iconColorDisabled:E,iconColorHover:se,iconColorPressed:Se,suffixTextColor:o})}},Co=_A;var IA=e=>{let{textColor2:o,textColor3:t,textColorDisabled:r,primaryColor:a,primaryColorHover:l,inputColor:n,inputColorDisabled:i,borderColor:d,warningColor:s,warningColorHover:u,errorColor:f,errorColorHover:m,borderRadius:p,lineHeight:c,fontSizeTiny:R,fontSizeSmall:b,fontSizeMedium:h,fontSizeLarge:k,heightTiny:z,heightSmall:C,heightMedium:g,heightLarge:v,actionColor:S,clearColor:F,clearColorHover:B,clearColorPressed:y,placeholderColor:I,placeholderColorDisabled:E,iconColor:se,iconColorDisabled:Se,iconColorHover:Ee,iconColorPressed:me}=e;return Object.assign(Object.assign({},dd),{countTextColor:t,heightTiny:z,heightSmall:C,heightMedium:g,heightLarge:v,fontSizeTiny:R,fontSizeSmall:b,fontSizeMedium:h,fontSizeLarge:k,lineHeight:c,lineHeightTextarea:c,borderRadius:p,iconSize:"16px",groupLabelColor:S,groupLabelTextColor:o,textColor:o,textColorDisabled:r,textDecorationColor:o,caretColor:a,placeholderColor:I,placeholderColorDisabled:E,color:n,colorDisabled:i,colorFocus:n,groupLabelBorder:`1px solid ${d}`,border:`1px solid ${d}`,borderHover:`1px solid ${l}`,borderDisabled:`1px solid ${d}`,borderFocus:`1px solid ${l}`,boxShadowFocus:`0 0 0 2px ${oe(a,{alpha:.2})}`,loadingColor:a,loadingColorWarning:s,borderWarning:`1px solid ${s}`,borderHoverWarning:`1px solid ${u}`,colorFocusWarning:n,borderFocusWarning:`1px solid ${u}`,boxShadowFocusWarning:`0 0 0 2px ${oe(s,{alpha:.2})}`,caretColorWarning:s,loadingColorError:f,borderError:`1px solid ${f}`,borderHoverError:`1px solid ${m}`,colorFocusError:n,borderFocusError:`1px solid ${m}`,boxShadowFocusError:`0 0 0 2px ${oe(f,{alpha:.2})}`,caretColorError:f,clearColor:F,clearColorHover:B,clearColorPressed:y,iconColor:se,iconColorDisabled:Se,iconColorHover:Ee,iconColorPressed:me,suffixTextColor:o})},HA={name:"Input",common:xe,self:IA},Rt=HA;var sd=uo("n-input");function kg(e){let o=0;for(let t of e)o++;return o}function an(e){return["",void 0,null].includes(e)}var xu=re({name:"InputWordCount",setup(e,{slots:o}){let{mergedValueRef:t,maxlengthRef:r,mergedClsPrefixRef:a}=be(sd),l=W(()=>{let{value:n}=t;return n===null||Array.isArray(n)?0:kg(n)});return()=>{let{value:n}=r,{value:i}=t;return w("span",{class:`${a.value}-input-word-count`},si(o.default,{value:i===null||Array.isArray(i)?"":i},()=>[n===void 0?l.value:`${l.value} / ${n}`]))}}});var Ag=$("input",` max-width: 100%; cursor: text; line-height: 1.5; @@ -323,11 +323,11 @@ ${o} transition: background-color .3s var(--n-bezier); font-size: var(--n-font-size); --n-padding-vertical: calc((var(--n-height) - 1.5 * var(--n-font-size)) / 2); -`,[J("input, textarea",` +`,[X("input, textarea",` overflow: hidden; flex-grow: 1; position: relative; - `),J("input-el, textarea-el, input-mirror, textarea-mirror, separator, placeholder",` + `),X("input-el, textarea-el, input-mirror, textarea-mirror, separator, placeholder",` box-sizing: border-box; font-size: inherit; line-height: 1.5; @@ -340,7 +340,7 @@ ${o} caret-color .3s var(--n-bezier), color .3s var(--n-bezier), text-decoration-color .3s var(--n-bezier); - `),J("input-el, textarea-el",` + `),X("input-el, textarea-el",` -webkit-appearance: none; scrollbar-width: none; width: 100%; @@ -353,7 +353,7 @@ ${o} width: 0; height: 0; display: none; - `),Y("&::placeholder","color: #0000;"),Y("&:-webkit-autofill ~",[J("placeholder","display: none;")])]),xe("round",[rt("textarea","border-radius: calc(var(--n-height) / 2);")]),J("placeholder",` + `),Y("&::placeholder","color: #0000;"),Y("&:-webkit-autofill ~",[X("placeholder","display: none;")])]),Te("round",[ft("textarea","border-radius: calc(var(--n-height) / 2);")]),X("placeholder",` pointer-events: none; position: absolute; left: 0; @@ -365,19 +365,19 @@ ${o} `,[Y("span",` width: 100%; display: inline-block; - `)]),xe("textarea",[J("placeholder","overflow: visible;")]),rt("autosize","width: 100%;"),xe("autosize",[J("textarea-el, input-el",` + `)]),Te("textarea",[X("placeholder","overflow: visible;")]),ft("autosize","width: 100%;"),Te("autosize",[X("textarea-el, input-el",` position: absolute; top: 0; left: 0; height: 100%; - `)]),K("input-wrapper",` + `)]),$("input-wrapper",` overflow: hidden; display: inline-flex; flex-grow: 1; position: relative; padding-left: var(--n-padding-left); padding-right: var(--n-padding-right); - `),J("input-mirror",` + `),X("input-mirror",` padding: 0; height: var(--n-height); overflow: hidden; @@ -385,25 +385,25 @@ ${o} position: static; white-space: nowrap; pointer-events: none; - `),J("input-el",` + `),X("input-el",` padding: 0; height: var(--n-height); line-height: var(--n-height); - `,[Y("+",[J("placeholder",` + `,[Y("+",[X("placeholder",` display: flex; align-items: center; - `)])]),rt("textarea",[J("placeholder","white-space: nowrap;")]),J("eye",` + `)])]),ft("textarea",[X("placeholder","white-space: nowrap;")]),X("eye",` transition: color .3s var(--n-bezier); - `),xe("textarea","width: 100%;",[K("input-word-count",` + `),Te("textarea","width: 100%;",[$("input-word-count",` position: absolute; right: var(--n-padding-right); bottom: var(--n-padding-vertical); - `),xe("resizable",[K("input-wrapper",` + `),Te("resizable",[$("input-wrapper",` resize: vertical; min-height: var(--n-height); - `)]),J("textarea",` + `)]),X("textarea",` position: static; - `),J("textarea-el, textarea-mirror, placeholder",` + `),X("textarea-el, textarea-mirror, placeholder",` height: 100%; left: var(--n-padding-left); right: var(--n-padding-right); @@ -419,7 +419,7 @@ ${o} margin: 0; resize: none; white-space: pre-wrap; - `),J("textarea-mirror",` + `),X("textarea-mirror",` width: 100%; pointer-events: none; overflow: hidden; @@ -427,31 +427,31 @@ ${o} position: static; white-space: pre-wrap; overflow-wrap: break-word; - `)]),xe("pair",[J("input-el, placeholder","text-align: center;"),J("separator",` + `)]),Te("pair",[X("input-el, placeholder","text-align: center;"),X("separator",` display: flex; align-items: center; transition: color .3s var(--n-bezier); color: var(--n-text-color); - `,[K("icon",` + `,[$("icon",` color: var(--n-icon-color); - `),K("base-icon",` + `),$("base-icon",` color: var(--n-icon-color); - `)])]),xe("disabled",` + `)])]),Te("disabled",` cursor: not-allowed; background-color: var(--n-color-disabled); - `,[J("border","border: var(--n-border-disabled);"),J("input-el, textarea-el",` + `,[X("border","border: var(--n-border-disabled);"),X("input-el, textarea-el",` cursor: not-allowed; color: var(--n-text-color-disabled); text-decoration-color: var(--n-text-color-disabled); - `),J("placeholder","color: var(--n-placeholder-color-disabled);"),J("separator","color: var(--n-text-color-disabled);",[K("icon",` + `),X("placeholder","color: var(--n-placeholder-color-disabled);"),X("separator","color: var(--n-text-color-disabled);",[$("icon",` color: var(--n-icon-color-disabled); - `),K("base-icon",` + `),$("base-icon",` color: var(--n-icon-color-disabled); - `)]),J("suffix, prefix","color: var(--n-text-color-disabled);",[K("icon",` + `)]),X("suffix, prefix","color: var(--n-text-color-disabled);",[$("icon",` color: var(--n-icon-color-disabled); - `),K("internal-icon",` + `),$("internal-icon",` color: var(--n-icon-color-disabled); - `)])]),rt("disabled",[J("eye",` + `)])]),ft("disabled",[X("eye",` display: flex; align-items: center; justify-content: center; @@ -461,14 +461,14 @@ ${o} color: var(--n-icon-color-hover); `),Y("&:active",` color: var(--n-icon-color-pressed); - `),K("icon",[Y("&:hover",` + `),$("icon",[Y("&:hover",` color: var(--n-icon-color-hover); `),Y("&:active",` color: var(--n-icon-color-pressed); - `)])]),Y("&:hover",[J("state-border","border: var(--n-border-hover);")]),xe("focus","background-color: var(--n-color-focus);",[J("state-border",` + `)])]),Y("&:hover",[X("state-border","border: var(--n-border-hover);")]),Te("focus","background-color: var(--n-color-focus);",[X("state-border",` border: var(--n-border-focus); box-shadow: var(--n-box-shadow-focus); - `)])]),J("border, state-border",` + `)])]),X("border, state-border",` box-sizing: border-box; position: absolute; left: 0; @@ -481,12 +481,12 @@ ${o} transition: box-shadow .3s var(--n-bezier), border-color .3s var(--n-bezier); - `),J("state-border",` + `),X("state-border",` border-color: #0000; z-index: 1; - `),J("prefix","margin-right: 4px;"),J("suffix",` + `),X("prefix","margin-right: 4px;"),X("suffix",` margin-left: 4px; - `),J("suffix, prefix",` + `),X("suffix, prefix",` transition: color .3s var(--n-bezier); flex-wrap: nowrap; flex-shrink: 0; @@ -496,23 +496,23 @@ ${o} align-items: center; justify-content: center; color: var(--n-suffix-text-color); - `,[K("base-loading",` + `,[$("base-loading",` font-size: var(--n-icon-size); margin: 0 2px; color: var(--n-loading-color); - `),K("base-clear",` + `),$("base-clear",` font-size: var(--n-icon-size); - `,[J("placeholder",[K("base-icon",` + `,[X("placeholder",[$("base-icon",` transition: color .3s var(--n-bezier); color: var(--n-icon-color); font-size: var(--n-icon-size); - `)])]),Y(">",[K("icon",` + `)])]),Y(">",[$("icon",` transition: color .3s var(--n-bezier); color: var(--n-icon-color); font-size: var(--n-icon-size); - `)]),K("base-icon",` + `)]),$("base-icon",` font-size: var(--n-icon-size); - `)]),K("input-word-count",` + `)]),$("input-word-count",` pointer-events: none; line-height: 1.5; font-size: .85em; @@ -520,26 +520,26 @@ ${o} transition: color .3s var(--n-bezier); margin-left: 4px; font-variant: tabular-nums; - `),["warning","error"].map(e=>xe(`${e}-status`,[rt("disabled",[K("base-loading",` + `),["warning","error"].map(e=>Te(`${e}-status`,[ft("disabled",[$("base-loading",` color: var(--n-loading-color-${e}) - `),J("input-el, textarea-el",` + `),X("input-el, textarea-el",` caret-color: var(--n-caret-color-${e}); - `),J("state-border",` + `),X("state-border",` border: var(--n-border-${e}); - `),Y("&:hover",[J("state-border",` + `),Y("&:hover",[X("state-border",` border: var(--n-border-hover-${e}); `)]),Y("&:focus",` background-color: var(--n-color-focus-${e}); - `,[J("state-border",` + `,[X("state-border",` box-shadow: var(--n-box-shadow-focus-${e}); border: var(--n-border-focus-${e}); - `)]),xe("focus",` + `)]),Te("focus",` background-color: var(--n-color-focus-${e}); - `,[J("state-border",` + `,[X("state-border",` box-shadow: var(--n-box-shadow-focus-${e}); border: var(--n-border-focus-${e}); - `)])])]))]);var RA=Object.assign(Object.assign({},Fo.props),{bordered:{type:Boolean,default:void 0},type:{type:String,default:"text"},placeholder:[Array,String],defaultValue:{type:[String,Array],default:null},value:[String,Array],disabled:{type:Boolean,default:void 0},size:String,rows:{type:[Number,String],default:3},round:Boolean,minlength:[String,Number],maxlength:[String,Number],clearable:Boolean,autosize:{type:[Boolean,Object],default:!1},pair:Boolean,separator:String,readonly:{type:[String,Boolean],default:!1},passivelyActivated:Boolean,showPasswordOn:String,stateful:{type:Boolean,default:!0},autofocus:Boolean,inputProps:Object,resizable:{type:Boolean,default:!0},showCount:Boolean,loading:{type:Boolean,default:void 0},onMousedown:Function,onKeydown:Function,onKeyup:Function,onInput:[Function,Array],onFocus:[Function,Array],onBlur:[Function,Array],onClick:[Function,Array],onChange:[Function,Array],onClear:[Function,Array],status:String,"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array],textDecoration:[String,Array],attrSize:{type:Number,default:20},onInputBlur:[Function,Array],onInputFocus:[Function,Array],onDeactivate:[Function,Array],onActivate:[Function,Array],onWrapperFocus:[Function,Array],onWrapperBlur:[Function,Array],internalDeactivateOnEnter:Boolean,internalForceFocus:Boolean,internalLoadingBeforeSuffix:Boolean,showPasswordToggle:Boolean}),hu=le({name:"Input",props:RA,setup(e){let{mergedClsPrefixRef:o,mergedBorderedRef:t,inlineThemeDisabled:r,mergedRtlRef:a}=Bo(e),l=Fo("Input","-input",gg,mt,e,o),n=Z(null),i=Z(null),d=Z(null),s=Z(null),u=Z(null),f=Z(null),c=Z(null),{localeRef:p}=Xa("Input"),x=Z(e.defaultValue),T=De(e,"value"),C=Zo(T,x),S=Rt(e),{mergedSizeRef:D,mergedDisabledRef:j,mergedStatusRef:O}=S,g=Z(!1),v=Z(!1),w=Z(!1),F=Z(!1),B=null,y=V(()=>{let{placeholder:A,pair:oe}=e;return oe?Array.isArray(A)?A:A===void 0?["",""]:[A,A]:A===void 0?[p.value.placeholder]:[A]}),W=V(()=>{let{value:A}=w,{value:oe}=C,{value:ke}=y;return!A&&(rn(oe)||Array.isArray(oe)&&rn(oe[0]))&&ke[0]}),_=V(()=>{let{value:A}=w,{value:oe}=C,{value:ke}=y;return!A&&ke[1]&&(rn(oe)||Array.isArray(oe)&&rn(oe[1]))}),ae=Ye(()=>e.internalForceFocus||g.value),he=Ye(()=>{if(j.value||e.readonly||!e.clearable||!ae.value&&!v.value)return!1;let{value:A}=C,{value:oe}=ae;return e.pair?!!(Array.isArray(A)&&(A[0]||A[1]))&&(v.value||oe):!!A&&(v.value||oe)}),Me=V(()=>{let{showPasswordOn:A}=e;if(A)return A;if(e.showPasswordToggle)return"click"}),de=Z(!1),ie=V(()=>{let{textDecoration:A}=e;return A?Array.isArray(A)?A.map(oe=>({textDecoration:oe})):[{textDecoration:A}]:["",""]}),ge=Z(void 0),Ve=()=>{var A,oe;if(e.type==="textarea"){let{autosize:ke}=e;if(ke&&(ge.value=(oe=(A=c.value)===null||A===void 0?void 0:A.$el)===null||oe===void 0?void 0:oe.offsetWidth),!i.value||typeof ke=="boolean")return;let{paddingTop:uo,paddingBottom:M,lineHeight:q}=window.getComputedStyle(i.value),ne=Number(uo.slice(0,-2)),se=Number(M.slice(0,-2)),Ne=Number(q.slice(0,-2)),{value:Eo}=d;if(!Eo)return;if(ke.minRows){let To=Math.max(ke.minRows,1),tr=`${ne+se+Ne*To}px`;Eo.style.minHeight=tr}if(ke.maxRows){let To=`${ne+se+Ne*ke.maxRows}px`;Eo.style.maxHeight=To}}},Ke=V(()=>{let{maxlength:A}=e;return A===void 0?void 0:Number(A)});fo(()=>{let{value:A}=C;Array.isArray(A)||Ge(A)});let He=St().proxy;function Je(A){let{onUpdateValue:oe,"onUpdate:value":ke,onInput:uo}=e,{nTriggerFormInput:M}=S;oe&&Re(oe,A),ke&&Re(ke,A),uo&&Re(uo,A),x.value=A,M()}function Qe(A){let{onChange:oe}=e,{nTriggerFormChange:ke}=S;oe&&Re(oe,A),x.value=A,ke()}function wo(A){let{onBlur:oe}=e,{nTriggerFormBlur:ke}=S;oe&&Re(oe,A),ke()}function Do(A){let{onFocus:oe}=e,{nTriggerFormFocus:ke}=S;oe&&Re(oe,A),ke()}function Be(A){let{onClear:oe}=e;oe&&Re(oe,A)}function We(A){let{onInputBlur:oe}=e;oe&&Re(oe,A)}function ho(A){let{onInputFocus:oe}=e;oe&&Re(oe,A)}function we(){let{onDeactivate:A}=e;A&&Re(A)}function qe(){let{onActivate:A}=e;A&&Re(A)}function to(A){let{onClick:oe}=e;oe&&Re(oe,A)}function vo(A){let{onWrapperFocus:oe}=e;oe&&Re(oe,A)}function m(A){let{onWrapperBlur:oe}=e;oe&&Re(oe,A)}function h(){w.value=!0}function k(A){w.value=!1,A.target===f.value?E(A,1):E(A,0)}function E(A,oe=0,ke="input"){let uo=A.target.value;if(Ge(uo),e.type==="textarea"){let{value:q}=c;q&&q.syncUnifiedContainer()}if(B=uo,w.value)return;let M=uo;if(!e.pair)ke==="input"?Je(M):Qe(M);else{let{value:q}=C;Array.isArray(q)?q=[...q]:q=["",""],q[oe]=M,ke==="input"?Je(q):Qe(q)}He.$forceUpdate()}function I(A){We(A),A.relatedTarget===n.value&&we(),A.relatedTarget!==null&&(A.relatedTarget===u.value||A.relatedTarget===f.value||A.relatedTarget===i.value)||(F.value=!1),U(A,"blur")}function G(A){ho(A),g.value=!0,F.value=!0,qe(),U(A,"focus")}function $(A){e.passivelyActivated&&(m(A),U(A,"blur"))}function L(A){e.passivelyActivated&&(g.value=!0,vo(A),U(A,"focus"))}function U(A,oe){A.relatedTarget!==null&&(A.relatedTarget===u.value||A.relatedTarget===f.value||A.relatedTarget===i.value||A.relatedTarget===n.value)||(oe==="focus"?(Do(A),g.value=!0):oe==="blur"&&(wo(A),g.value=!1))}function H(A,oe){E(A,oe,"change")}function b(A){to(A)}function N(A){Be(A),e.pair?(Je(["",""]),Qe(["",""])):(Je(""),Qe(""))}function z(A){let{onMousedown:oe}=e;oe&&oe(A);let{tagName:ke}=A.target;if(ke!=="INPUT"&&ke!=="TEXTAREA"){if(e.resizable){let{value:uo}=n;if(uo){let{left:M,top:q,width:ne,height:se}=uo.getBoundingClientRect(),Ne=14;if(M+ne-Ne<A.clientX&&A.clientY<M+ne&&q+se-Ne<A.clientY&&A.clientY<q+se)return}}A.preventDefault(),g.value||Se()}}function te(){var A;v.value=!0,e.type==="textarea"&&((A=c.value)===null||A===void 0||A.handleMouseEnterWrapper())}function fe(){var A;v.value=!1,e.type==="textarea"&&((A=c.value)===null||A===void 0||A.handleMouseLeaveWrapper())}function Ce(){j.value||Me.value==="click"&&(de.value=!de.value)}function ye(A){if(j.value)return;A.preventDefault();let oe=uo=>{uo.preventDefault(),xo("mouseup",document,oe)};if(So("mouseup",document,oe),Me.value!=="mousedown")return;de.value=!0;let ke=()=>{de.value=!1,xo("mouseup",document,ke)};So("mouseup",document,ke)}function Le(A){var oe;switch((oe=e.onKeydown)===null||oe===void 0||oe.call(e,A),A.code){case"Escape":re();break;case"Enter":case"NumpadEnter":Q(A);break}}function Q(A){var oe,ke;if(e.passivelyActivated){let{value:uo}=F;if(uo){e.internalDeactivateOnEnter&&re();return}A.preventDefault(),e.type==="textarea"?(oe=i.value)===null||oe===void 0||oe.focus():(ke=u.value)===null||ke===void 0||ke.focus()}}function re(){e.passivelyActivated&&(F.value=!1,No(()=>{var A;(A=n.value)===null||A===void 0||A.focus()}))}function Se(){var A,oe,ke;j.value||(e.passivelyActivated?(A=n.value)===null||A===void 0||A.focus():((oe=i.value)===null||oe===void 0||oe.focus(),(ke=u.value)===null||ke===void 0||ke.focus()))}function _e(){var A;((A=n.value)===null||A===void 0?void 0:A.contains(document.activeElement))&&document.activeElement.blur()}function Xe(){var A,oe;(A=i.value)===null||A===void 0||A.select(),(oe=u.value)===null||oe===void 0||oe.select()}function ze(){j.value||(i.value?i.value.focus():u.value&&u.value.focus())}function eo(){let{value:A}=n;(A==null?void 0:A.contains(document.activeElement))&&A!==document.activeElement&&re()}function Ge(A){let{type:oe,pair:ke,autosize:uo}=e;if(!ke&&uo)if(oe==="textarea"){let{value:M}=d;M&&(M.textContent=(A!=null?A:"")+`\r -`)}else{let{value:M}=s;M&&(A?M.textContent=A:M.innerHTML=" ")}}function Go(){Ve()}let ct=Z({top:"0"});function ll(A){var oe;let{scrollTop:ke}=A.target;ct.value.top=`${-ke}px`,(oe=c.value)===null||oe===void 0||oe.syncUnifiedContainer()}let cr=null;Mo(()=>{let{autosize:A,type:oe}=e;A&&oe==="textarea"?cr=Ze(C,ke=>{!Array.isArray(ke)&&ke!==B&&Ge(ke)}):cr==null||cr()});let xr=null;Mo(()=>{e.type==="textarea"?xr=Ze(C,A=>{var oe;!Array.isArray(A)&&A!==B&&((oe=c.value)===null||oe===void 0||oe.syncUnifiedContainer())}):xr==null||xr()}),qo(id,{mergedValueRef:C,maxlengthRef:Ke,mergedClsPrefixRef:o});let Ta={wrapperElRef:n,inputElRef:u,textareaElRef:i,isCompositing:w,focus:Se,blur:_e,select:Xe,deactivate:eo,activate:ze},nl=ha("Input",a,o),Ra=V(()=>{let{value:A}=D,{common:{cubicBezierEaseInOut:oe},self:{color:ke,borderRadius:uo,textColor:M,caretColor:q,caretColorError:ne,caretColorWarning:se,textDecorationColor:Ne,border:Eo,borderDisabled:To,borderHover:tr,borderFocus:rr,placeholderColor:ko,placeholderColorDisabled:Po,lineHeightTextarea:lt,colorDisabled:vp,colorFocus:bd,textColorDisabled:oo,boxShadowFocus:Vo,iconSize:il,colorFocusWarning:Rn,boxShadowFocusWarning:Fn,borderWarning:On,borderFocusWarning:dl,borderHoverWarning:uT,colorFocusError:fT,boxShadowFocusError:pT,borderError:mT,borderFocusError:cT,borderHoverError:xT,clearSize:hT,clearColor:ST,clearColorHover:gT,clearColorPressed:wT,iconColor:TT,iconColorDisabled:RT,suffixTextColor:FT,countTextColor:OT,iconColorHover:CT,iconColorPressed:bT,loadingColor:yT,loadingColorError:vT,loadingColorWarning:kT,[ve("padding",A)]:AT,[ve("fontSize",A)]:DT,[ve("height",A)]:PT}}=l.value,{left:MT,right:BT}=_a(AT);return{"--n-bezier":oe,"--n-count-text-color":OT,"--n-color":ke,"--n-font-size":DT,"--n-border-radius":uo,"--n-height":PT,"--n-padding-left":MT,"--n-padding-right":BT,"--n-text-color":M,"--n-caret-color":q,"--n-text-decoration-color":Ne,"--n-border":Eo,"--n-border-disabled":To,"--n-border-hover":tr,"--n-border-focus":rr,"--n-placeholder-color":ko,"--n-placeholder-color-disabled":Po,"--n-icon-size":il,"--n-line-height-textarea":lt,"--n-color-disabled":vp,"--n-color-focus":bd,"--n-text-color-disabled":oo,"--n-box-shadow-focus":Vo,"--n-loading-color":yT,"--n-caret-color-warning":se,"--n-color-focus-warning":Rn,"--n-box-shadow-focus-warning":Fn,"--n-border-warning":On,"--n-border-focus-warning":dl,"--n-border-hover-warning":uT,"--n-loading-color-warning":kT,"--n-caret-color-error":ne,"--n-color-focus-error":fT,"--n-box-shadow-focus-error":pT,"--n-border-error":mT,"--n-border-focus-error":cT,"--n-border-hover-error":xT,"--n-loading-color-error":vT,"--n-clear-color":ST,"--n-clear-size":hT,"--n-clear-color-hover":gT,"--n-clear-color-pressed":wT,"--n-icon-color":TT,"--n-icon-color-hover":CT,"--n-icon-color-pressed":bT,"--n-icon-color-disabled":RT,"--n-suffix-text-color":FT}}),hr=r?Ko("input",V(()=>{let{value:A}=D;return A[0]}),Ra,e):void 0;return Object.assign(Object.assign({},Ta),{wrapperElRef:n,inputElRef:u,inputMirrorElRef:s,inputEl2Ref:f,textareaElRef:i,textareaMirrorElRef:d,textareaScrollbarInstRef:c,rtlEnabled:nl,uncontrolledValue:x,mergedValue:C,passwordVisible:de,mergedPlaceholder:y,showPlaceholder1:W,showPlaceholder2:_,mergedFocus:ae,isComposing:w,activated:F,showClearButton:he,mergedSize:D,mergedDisabled:j,textDecorationStyle:ie,mergedClsPrefix:o,mergedBordered:t,mergedShowPasswordOn:Me,placeholderStyle:ct,mergedStatus:O,textAreaScrollContainerWidth:ge,handleTextAreaScroll:ll,handleCompositionStart:h,handleCompositionEnd:k,handleInput:E,handleInputBlur:I,handleInputFocus:G,handleWrapperBlur:$,handleWrapperFocus:L,handleMouseEnter:te,handleMouseLeave:fe,handleMouseDown:z,handleChange:H,handleClick:b,handleClear:N,handlePasswordToggleClick:Ce,handlePasswordToggleMousedown:ye,handleWrapperKeyDown:Le,handleTextAreaMirrorResize:Go,getTextareaScrollContainer:()=>i.value,mergedTheme:l,cssVars:r?void 0:Ra,themeClass:hr==null?void 0:hr.themeClass,onRender:hr==null?void 0:hr.onRender})},render(){let{mergedClsPrefix:e,mergedStatus:o,themeClass:t,onRender:r,$slots:a}=this;return r==null||r(),R("div",{ref:"wrapperElRef",class:[`${e}-input`,t,o&&`${e}-input--${o}-status`,{[`${e}-input--rtl`]:this.rtlEnabled,[`${e}-input--disabled`]:this.mergedDisabled,[`${e}-input--textarea`]:this.type==="textarea",[`${e}-input--resizable`]:this.resizable&&!this.autosize,[`${e}-input--autosize`]:this.autosize,[`${e}-input--round`]:this.round&&this.type!=="textarea",[`${e}-input--pair`]:this.pair,[`${e}-input--focus`]:this.mergedFocus,[`${e}-input--stateful`]:this.stateful}],style:this.cssVars,tabindex:!this.mergedDisabled&&this.passivelyActivated&&!this.activated?0:void 0,onFocus:this.handleWrapperFocus,onBlur:this.handleWrapperBlur,onClick:this.handleClick,onMousedown:this.handleMouseDown,onMouseenter:this.handleMouseEnter,onMouseleave:this.handleMouseLeave,onCompositionstart:this.handleCompositionStart,onCompositionend:this.handleCompositionEnd,onKeyup:this.onKeyup,onKeydown:this.handleWrapperKeyDown},R("div",{class:`${e}-input-wrapper`},Kt(a.prefix,l=>l&&R("div",{class:`${e}-input__prefix`},l)),this.type==="textarea"?R(td,{ref:"textareaScrollbarInstRef",class:`${e}-input__textarea`,container:this.getTextareaScrollContainer,triggerDisplayManually:!0,useUnifiedContainer:!0},{default:()=>{let{textAreaScrollContainerWidth:l}=this,n={width:this.autosize&&l&&`${l}px`};return R(Co,null,R("textarea",Object.assign({},this.inputProps,{ref:"textareaElRef",class:`${e}-input__textarea-el`,autofocus:this.autofocus,rows:Number(this.rows),placeholder:this.placeholder,value:this.mergedValue,disabled:this.mergedDisabled,maxlength:this.maxlength,minlength:this.minlength,readonly:this.readonly,tabindex:this.passivelyActivated&&!this.activated?-1:void 0,style:[this.textDecorationStyle[0],n],onBlur:this.handleInputBlur,onFocus:this.handleInputFocus,onInput:this.handleInput,onChange:this.handleChange,onScroll:this.handleTextAreaScroll})),this.showPlaceholder1?R("div",{class:`${e}-input__placeholder`,style:[this.placeholderStyle,n],key:"placeholder"},this.mergedPlaceholder[0]):null,this.autosize?R(Dt,{onResize:this.handleTextAreaMirrorResize},{default:()=>R("div",{ref:"textareaMirrorElRef",class:`${e}-input__textarea-mirror`,key:"mirror"})}):null)}}):R("div",{class:`${e}-input__input`},R("input",Object.assign({type:this.type==="password"&&this.mergedShowPasswordOn&&this.passwordVisible?"text":this.type},this.inputProps,{ref:"inputElRef",class:`${e}-input__input-el`,style:this.textDecorationStyle[0],tabindex:this.passivelyActivated&&!this.activated?-1:void 0,placeholder:this.mergedPlaceholder[0],disabled:this.mergedDisabled,maxlength:this.maxlength,minlength:this.minlength,value:Array.isArray(this.mergedValue)?this.mergedValue[0]:this.mergedValue,readonly:this.readonly,autofocus:this.autofocus,size:this.attrSize,onBlur:this.handleInputBlur,onFocus:this.handleInputFocus,onInput:l=>this.handleInput(l,0),onChange:l=>this.handleChange(l,0)})),this.showPlaceholder1?R("div",{class:`${e}-input__placeholder`},R("span",null,this.mergedPlaceholder[0])):null,this.autosize?R("div",{class:`${e}-input__input-mirror`,key:"mirror",ref:"inputMirrorElRef"},"\xA0"):null),!this.pair&&Kt(a.suffix,l=>l||this.clearable||this.showCount||this.mergedShowPasswordOn||this.loading!==void 0?R("div",{class:`${e}-input__suffix`},[Kt(a.clear,n=>(this.clearable||n)&&R(Sa,{clsPrefix:e,show:this.showClearButton,onClear:this.handleClear},{default:()=>n})),this.internalLoadingBeforeSuffix?null:l,this.loading!==void 0?R(ad,{clsPrefix:e,loading:this.loading,showArrow:!1,showClear:!1,style:this.cssVars}):null,this.internalLoadingBeforeSuffix?l:null,this.showCount&&this.type!=="textarea"?R(xu,null,{default:n=>{var i;return(i=a.count)===null||i===void 0?void 0:i.call(a,n)}}):null,this.mergedShowPasswordOn&&this.type==="password"?R(bt,{clsPrefix:e,class:`${e}-input__eye`,onMousedown:this.handlePasswordToggleMousedown,onClick:this.handlePasswordToggleClick},{default:()=>this.passwordVisible?Ut(a["password-visible-icon"],()=>[R(Qs,null)]):Ut(a["password-invisible-icon"],()=>[R(Zs,null)])}):null]):null)),this.pair?R("span",{class:`${e}-input__separator`},Ut(a.separator,()=>[this.separator])):null,this.pair?R("div",{class:`${e}-input-wrapper`},R("div",{class:`${e}-input__input`},R("input",{ref:"inputEl2Ref",type:this.type,class:`${e}-input__input-el`,tabindex:this.passivelyActivated&&!this.activated?-1:void 0,placeholder:this.mergedPlaceholder[1],disabled:this.mergedDisabled,maxlength:this.maxlength,minlength:this.minlength,value:Array.isArray(this.mergedValue)?this.mergedValue[1]:void 0,readonly:this.readonly,style:this.textDecorationStyle[1],onBlur:this.handleInputBlur,onFocus:this.handleInputFocus,onInput:l=>this.handleInput(l,1),onChange:l=>this.handleChange(l,1)}),this.showPlaceholder2?R("div",{class:`${e}-input__placeholder`},R("span",null,this.mergedPlaceholder[1])):null),Kt(a.suffix,l=>(this.clearable||l)&&R("div",{class:`${e}-input__suffix`},[this.clearable&&R(Sa,{clsPrefix:e,show:this.showClearButton,onClear:this.handleClear},{default:()=>{var n;return(n=a.clear)===null||n===void 0?void 0:n.call(a)}}),l]))):null,this.mergedBordered?R("div",{class:`${e}-input__border`}):null,this.mergedBordered?R("div",{class:`${e}-input__state-border`}):null,this.showCount&&this.type==="textarea"?R(xu,null,{default:l=>{var n;return(n=a.count)===null||n===void 0?void 0:n.call(a,l)}}):null)}});function Su(e){let{boxShadow2:o}=e;return{menuBoxShadow:o}}var E3=Pe({name:"AutoComplete",common:pe,peers:{InternalSelectMenu:xa,Input:mt},self:Su});var FA={name:"AutoComplete",common:P,peers:{InternalSelectMenu:Pt,Input:go},self:Su},gu=FA;var wg=e=>{let{borderRadius:o,avatarColor:t,cardColor:r,fontSize:a,heightTiny:l,heightSmall:n,heightMedium:i,heightLarge:d,heightHuge:s,modalColor:u,popoverColor:f}=e;return{borderRadius:o,fontSize:a,border:`2px solid ${r}`,heightTiny:l,heightSmall:n,heightMedium:i,heightLarge:d,heightHuge:s,color:me(r,t),colorModal:me(u,t),colorPopover:me(f,t)}};var OA={name:"Avatar",common:P,self:wg},an=OA;var CA={name:"AvatarGroup",common:P,peers:{Avatar:an}},wu=CA;var Tg={width:"44px",height:"44px",borderRadius:"22px",iconSize:"26px"};var bA={name:"BackTop",common:P,self(e){let{popoverColor:o,textColor2:t,primaryColorHover:r,primaryColorPressed:a}=e;return Object.assign(Object.assign({},Tg),{color:o,textColor:t,iconColor:t,iconColorHover:r,iconColorPressed:a,boxShadow:"0 2px 8px 0px rgba(0, 0, 0, .12)",boxShadowHover:"0 2px 12px 0px rgba(0, 0, 0, .18)",boxShadowPressed:"0 2px 12px 0px rgba(0, 0, 0, .18)"})}},Tu=bA;var yA={name:"Badge",common:P,self(e){let{errorColorSuppl:o,infoColorSuppl:t,successColorSuppl:r,warningColorSuppl:a,fontFamily:l}=e;return{color:o,colorInfo:t,colorSuccess:r,colorError:o,colorWarning:a,fontSize:"12px",fontFamily:l}}},Ru=yA;var Rg={fontWeightActive:"400"};var Fg=e=>{let{fontSize:o,textColor3:t,primaryColorHover:r,primaryColorPressed:a,textColor2:l}=e;return Object.assign(Object.assign({},Rg),{fontSize:o,itemTextColor:t,itemTextColorHover:r,itemTextColorPressed:a,itemTextColorActive:l,separatorColor:t})};var vA={name:"Breadcrumb",common:P,self:Fg},Fu=vA;function Ur(e){return me(e,[255,255,255,.16])}function ln(e){return me(e,[0,0,0,.12])}var Og={paddingTiny:"0 6px",paddingSmall:"0 10px",paddingMedium:"0 14px",paddingLarge:"0 18px",paddingRoundTiny:"0 10px",paddingRoundSmall:"0 14px",paddingRoundMedium:"0 18px",paddingRoundLarge:"0 22px",iconMarginTiny:"6px",iconMarginSmall:"6px",iconMarginMedium:"6px",iconMarginLarge:"6px",iconSizeTiny:"14px",iconSizeSmall:"18px",iconSizeMedium:"18px",iconSizeLarge:"20px",rippleDuration:".6s"};var Ou=e=>{let{heightTiny:o,heightSmall:t,heightMedium:r,heightLarge:a,borderRadius:l,fontSizeTiny:n,fontSizeSmall:i,fontSizeMedium:d,fontSizeLarge:s,opacityDisabled:u,textColor2:f,textColor3:c,primaryColorHover:p,primaryColorPressed:x,borderColor:T,primaryColor:C,baseColor:S,infoColor:D,infoColorHover:j,infoColorPressed:O,successColor:g,successColorHover:v,successColorPressed:w,warningColor:F,warningColorHover:B,warningColorPressed:y,errorColor:W,errorColorHover:_,errorColorPressed:ae,fontWeight:he,buttonColor2:Me,buttonColor2Hover:de,buttonColor2Pressed:ie,fontWeightStrong:ge}=e;return Object.assign(Object.assign({},Og),{heightTiny:o,heightSmall:t,heightMedium:r,heightLarge:a,borderRadiusTiny:l,borderRadiusSmall:l,borderRadiusMedium:l,borderRadiusLarge:l,fontSizeTiny:n,fontSizeSmall:i,fontSizeMedium:d,fontSizeLarge:s,opacityDisabled:u,colorOpacitySecondary:"0.16",colorOpacitySecondaryHover:"0.22",colorOpacitySecondaryPressed:"0.28",colorSecondary:Me,colorSecondaryHover:de,colorSecondaryPressed:ie,colorTertiary:Me,colorTertiaryHover:de,colorTertiaryPressed:ie,colorQuaternary:"#0000",colorQuaternaryHover:de,colorQuaternaryPressed:ie,color:"#0000",colorHover:"#0000",colorPressed:"#0000",colorFocus:"#0000",colorDisabled:"#0000",textColor:f,textColorTertiary:c,textColorHover:p,textColorPressed:x,textColorFocus:p,textColorDisabled:f,textColorText:f,textColorTextHover:p,textColorTextPressed:x,textColorTextFocus:p,textColorTextDisabled:f,textColorGhost:f,textColorGhostHover:p,textColorGhostPressed:x,textColorGhostFocus:p,textColorGhostDisabled:f,border:`1px solid ${T}`,borderHover:`1px solid ${p}`,borderPressed:`1px solid ${x}`,borderFocus:`1px solid ${p}`,borderDisabled:`1px solid ${T}`,rippleColor:C,colorPrimary:C,colorHoverPrimary:p,colorPressedPrimary:x,colorFocusPrimary:p,colorDisabledPrimary:C,textColorPrimary:S,textColorHoverPrimary:S,textColorPressedPrimary:S,textColorFocusPrimary:S,textColorDisabledPrimary:S,textColorTextPrimary:C,textColorTextHoverPrimary:p,textColorTextPressedPrimary:x,textColorTextFocusPrimary:p,textColorTextDisabledPrimary:f,textColorGhostPrimary:C,textColorGhostHoverPrimary:p,textColorGhostPressedPrimary:x,textColorGhostFocusPrimary:p,textColorGhostDisabledPrimary:C,borderPrimary:`1px solid ${C}`,borderHoverPrimary:`1px solid ${p}`,borderPressedPrimary:`1px solid ${x}`,borderFocusPrimary:`1px solid ${p}`,borderDisabledPrimary:`1px solid ${C}`,rippleColorPrimary:C,colorInfo:D,colorHoverInfo:j,colorPressedInfo:O,colorFocusInfo:j,colorDisabledInfo:D,textColorInfo:S,textColorHoverInfo:S,textColorPressedInfo:S,textColorFocusInfo:S,textColorDisabledInfo:S,textColorTextInfo:D,textColorTextHoverInfo:j,textColorTextPressedInfo:O,textColorTextFocusInfo:j,textColorTextDisabledInfo:f,textColorGhostInfo:D,textColorGhostHoverInfo:j,textColorGhostPressedInfo:O,textColorGhostFocusInfo:j,textColorGhostDisabledInfo:D,borderInfo:`1px solid ${D}`,borderHoverInfo:`1px solid ${j}`,borderPressedInfo:`1px solid ${O}`,borderFocusInfo:`1px solid ${j}`,borderDisabledInfo:`1px solid ${D}`,rippleColorInfo:D,colorSuccess:g,colorHoverSuccess:v,colorPressedSuccess:w,colorFocusSuccess:v,colorDisabledSuccess:g,textColorSuccess:S,textColorHoverSuccess:S,textColorPressedSuccess:S,textColorFocusSuccess:S,textColorDisabledSuccess:S,textColorTextSuccess:g,textColorTextHoverSuccess:v,textColorTextPressedSuccess:w,textColorTextFocusSuccess:v,textColorTextDisabledSuccess:f,textColorGhostSuccess:g,textColorGhostHoverSuccess:v,textColorGhostPressedSuccess:w,textColorGhostFocusSuccess:v,textColorGhostDisabledSuccess:g,borderSuccess:`1px solid ${g}`,borderHoverSuccess:`1px solid ${v}`,borderPressedSuccess:`1px solid ${w}`,borderFocusSuccess:`1px solid ${v}`,borderDisabledSuccess:`1px solid ${g}`,rippleColorSuccess:g,colorWarning:F,colorHoverWarning:B,colorPressedWarning:y,colorFocusWarning:B,colorDisabledWarning:F,textColorWarning:S,textColorHoverWarning:S,textColorPressedWarning:S,textColorFocusWarning:S,textColorDisabledWarning:S,textColorTextWarning:F,textColorTextHoverWarning:B,textColorTextPressedWarning:y,textColorTextFocusWarning:B,textColorTextDisabledWarning:f,textColorGhostWarning:F,textColorGhostHoverWarning:B,textColorGhostPressedWarning:y,textColorGhostFocusWarning:B,textColorGhostDisabledWarning:F,borderWarning:`1px solid ${F}`,borderHoverWarning:`1px solid ${B}`,borderPressedWarning:`1px solid ${y}`,borderFocusWarning:`1px solid ${B}`,borderDisabledWarning:`1px solid ${F}`,rippleColorWarning:F,colorError:W,colorHoverError:_,colorPressedError:ae,colorFocusError:_,colorDisabledError:W,textColorError:S,textColorHoverError:S,textColorPressedError:S,textColorFocusError:S,textColorDisabledError:S,textColorTextError:W,textColorTextHoverError:_,textColorTextPressedError:ae,textColorTextFocusError:_,textColorTextDisabledError:f,textColorGhostError:W,textColorGhostHoverError:_,textColorGhostPressedError:ae,textColorGhostFocusError:_,textColorGhostDisabledError:W,borderError:`1px solid ${W}`,borderHoverError:`1px solid ${_}`,borderPressedError:`1px solid ${ae}`,borderFocusError:`1px solid ${_}`,borderDisabledError:`1px solid ${W}`,rippleColorError:W,waveOpacity:"0.6",fontWeight:he,fontWeightStrong:ge})},kA={name:"Button",common:pe,self:Ou},Ao=kA;var AA={name:"Button",common:P,self(e){let o=Ou(e);return o.waveOpacity="0.8",o.colorOpacitySecondary="0.16",o.colorOpacitySecondaryHover="0.2",o.colorOpacitySecondaryPressed="0.12",o}},io=AA;var Cg=lo("n-button-group");var bg=Y([K("button",` + `)])])]))]);var VA=Object.assign(Object.assign({},ko.props),{bordered:{type:Boolean,default:void 0},type:{type:String,default:"text"},placeholder:[Array,String],defaultValue:{type:[String,Array],default:null},value:[String,Array],disabled:{type:Boolean,default:void 0},size:String,rows:{type:[Number,String],default:3},round:Boolean,minlength:[String,Number],maxlength:[String,Number],clearable:Boolean,autosize:{type:[Boolean,Object],default:!1},pair:Boolean,separator:String,readonly:{type:[String,Boolean],default:!1},passivelyActivated:Boolean,showPasswordOn:String,stateful:{type:Boolean,default:!0},autofocus:Boolean,inputProps:Object,resizable:{type:Boolean,default:!0},showCount:Boolean,loading:{type:Boolean,default:void 0},onMousedown:Function,onKeydown:Function,onKeyup:Function,onInput:[Function,Array],onFocus:[Function,Array],onBlur:[Function,Array],onClick:[Function,Array],onChange:[Function,Array],onClear:[Function,Array],status:String,"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array],textDecoration:[String,Array],attrSize:{type:Number,default:20},onInputBlur:[Function,Array],onInputFocus:[Function,Array],onDeactivate:[Function,Array],onActivate:[Function,Array],onWrapperFocus:[Function,Array],onWrapperBlur:[Function,Array],internalDeactivateOnEnter:Boolean,internalForceFocus:Boolean,internalLoadingBeforeSuffix:Boolean,showPasswordToggle:Boolean}),Su=re({name:"Input",props:VA,setup(e){let{mergedClsPrefixRef:o,mergedBorderedRef:t,inlineThemeDisabled:r,mergedRtlRef:a}=Wo(e),l=ko("Input","-input",Ag,Rt,e,o),n=Q(null),i=Q(null),d=Q(null),s=Q(null),u=Q(null),f=Q(null),m=Q(null),{localeRef:p}=tl("Input"),c=Q(e.defaultValue),R=_e(e,"value"),b=lt(R,c),h=vt(e),{mergedSizeRef:k,mergedDisabledRef:z,mergedStatusRef:C}=h,g=Q(!1),v=Q(!1),S=Q(!1),F=Q(!1),B=null,y=W(()=>{let{placeholder:A,pair:le}=e;return le?Array.isArray(A)?A:A===void 0?["",""]:[A,A]:A===void 0?[p.value.placeholder]:[A]}),I=W(()=>{let{value:A}=S,{value:le}=b,{value:Be}=y;return!A&&(an(le)||Array.isArray(le)&&an(le[0]))&&Be[0]}),E=W(()=>{let{value:A}=S,{value:le}=b,{value:Be}=y;return!A&&Be[1]&&(an(le)||Array.isArray(le)&&an(le[1]))}),se=to(()=>e.internalForceFocus||g.value),Se=to(()=>{if(z.value||e.readonly||!e.clearable||!se.value&&!v.value)return!1;let{value:A}=b,{value:le}=se;return e.pair?!!(Array.isArray(A)&&(A[0]||A[1]))&&(v.value||le):!!A&&(v.value||le)}),Ee=W(()=>{let{showPasswordOn:A}=e;if(A)return A;if(e.showPasswordToggle)return"click"}),me=Q(!1),ue=W(()=>{let{textDecoration:A}=e;return A?Array.isArray(A)?A.map(le=>({textDecoration:le})):[{textDecoration:A}]:["",""]}),Fe=Q(void 0),Ge=()=>{var A,le;if(e.type==="textarea"){let{autosize:Be}=e;if(Be&&(Fe.value=(le=(A=m.value)===null||A===void 0?void 0:A.$el)===null||le===void 0?void 0:le.offsetWidth),!i.value||typeof Be=="boolean")return;let{paddingTop:ho,paddingBottom:M,lineHeight:G}=window.getComputedStyle(i.value),fe=Number(ho.slice(0,-2)),ce=Number(M.slice(0,-2)),Ve=Number(G.slice(0,-2)),{value:$o}=d;if(!$o)return;if(Be.minRows){let yo=Math.max(Be.minRows,1),sr=`${fe+ce+Ve*yo}px`;$o.style.minHeight=sr}if(Be.maxRows){let yo=`${fe+ce+Ve*Be.maxRows}px`;$o.style.maxHeight=yo}}},Ye=W(()=>{let{maxlength:A}=e;return A===void 0?void 0:Number(A)});no(()=>{let{value:A}=b;Array.isArray(A)||Oe(A)});let $e=Ft().proxy;function ro(A){let{onUpdateValue:le,"onUpdate:value":Be,onInput:ho}=e,{nTriggerFormInput:M}=h;le&&ye(le,A),Be&&ye(Be,A),ho&&ye(ho,A),c.value=A,M()}function Ke(A){let{onChange:le}=e,{nTriggerFormChange:Be}=h;le&&ye(le,A),c.value=A,Be()}function So(A){let{onBlur:le}=e,{nTriggerFormBlur:Be}=h;le&&ye(le,A),Be()}function bo(A){let{onFocus:le}=e,{nTriggerFormFocus:Be}=h;le&&ye(le,A),Be()}function We(A){let{onClear:le}=e;le&&ye(le,A)}function qe(A){let{onInputBlur:le}=e;le&&ye(le,A)}function go(A){let{onInputFocus:le}=e;le&&ye(le,A)}function Le(){let{onDeactivate:A}=e;A&&ye(A)}function co(){let{onActivate:A}=e;A&&ye(A)}function Ao(A){let{onClick:le}=e;le&&ye(le,A)}function Lo(A){let{onWrapperFocus:le}=e;le&&ye(le,A)}function x(A){let{onWrapperBlur:le}=e;le&&ye(le,A)}function O(){S.value=!0}function N(A){S.value=!1,A.target===f.value?j(A,1):j(A,0)}function j(A,le=0,Be="input"){let ho=A.target.value;if(Oe(ho),e.type==="textarea"){let{value:G}=m;G&&G.syncUnifiedContainer()}if(B=ho,S.value)return;let M=ho;if(!e.pair)Be==="input"?ro(M):Ke(M);else{let{value:G}=b;Array.isArray(G)?G=[...G]:G=["",""],G[le]=M,Be==="input"?ro(G):Ke(G)}$e.$forceUpdate()}function U(A){qe(A),A.relatedTarget===n.value&&Le(),A.relatedTarget!==null&&(A.relatedTarget===u.value||A.relatedTarget===f.value||A.relatedTarget===i.value)||(F.value=!1),Z(A,"blur")}function ae(A){go(A),g.value=!0,F.value=!0,co(),Z(A,"focus")}function ee(A){e.passivelyActivated&&(x(A),Z(A,"blur"))}function V(A){e.passivelyActivated&&(g.value=!0,Lo(A),Z(A,"focus"))}function Z(A,le){A.relatedTarget!==null&&(A.relatedTarget===u.value||A.relatedTarget===f.value||A.relatedTarget===i.value||A.relatedTarget===n.value)||(le==="focus"?(bo(A),g.value=!0):le==="blur"&&(So(A),g.value=!1))}function q(A,le){j(A,le,"change")}function D(A){Ao(A)}function L(A){We(A),e.pair?(ro(["",""]),Ke(["",""])):(ro(""),Ke(""))}function H(A){let{onMousedown:le}=e;le&&le(A);let{tagName:Be}=A.target;if(Be!=="INPUT"&&Be!=="TEXTAREA"){if(e.resizable){let{value:ho}=n;if(ho){let{left:M,top:G,width:fe,height:ce}=ho.getBoundingClientRect(),Ve=14;if(M+fe-Ve<A.clientX&&A.clientY<M+fe&&G+ce-Ve<A.clientY&&A.clientY<G+ce)return}}A.preventDefault(),g.value||Re()}}function ie(){var A;v.value=!0,e.type==="textarea"&&((A=m.value)===null||A===void 0||A.handleMouseEnterWrapper())}function pe(){var A;v.value=!1,e.type==="textarea"&&((A=m.value)===null||A===void 0||A.handleMouseLeaveWrapper())}function ve(){z.value||Ee.value==="click"&&(me.value=!me.value)}function Ae(A){if(z.value)return;A.preventDefault();let le=ho=>{ho.preventDefault(),Oo("mouseup",document,le)};if(Fo("mouseup",document,le),Ee.value!=="mousedown")return;me.value=!0;let Be=()=>{me.value=!1,Oo("mouseup",document,Be)};Fo("mouseup",document,Be)}function Ce(A){var le;switch((le=e.onKeydown)===null||le===void 0||le.call(e,A),A.code){case"Escape":ne();break;case"Enter":case"NumpadEnter":K(A);break}}function K(A){var le,Be;if(e.passivelyActivated){let{value:ho}=F;if(ho){e.internalDeactivateOnEnter&&ne();return}A.preventDefault(),e.type==="textarea"?(le=i.value)===null||le===void 0||le.focus():(Be=u.value)===null||Be===void 0||Be.focus()}}function ne(){e.passivelyActivated&&(F.value=!1,Uo(()=>{var A;(A=n.value)===null||A===void 0||A.focus()}))}function Re(){var A,le,Be;z.value||(e.passivelyActivated?(A=n.value)===null||A===void 0||A.focus():((le=i.value)===null||le===void 0||le.focus(),(Be=u.value)===null||Be===void 0||Be.focus()))}function T(){var A;((A=n.value)===null||A===void 0?void 0:A.contains(document.activeElement))&&document.activeElement.blur()}function _(){var A,le;(A=i.value)===null||A===void 0||A.select(),(le=u.value)===null||le===void 0||le.select()}function te(){z.value||(i.value?i.value.focus():u.value&&u.value.focus())}function de(){let{value:A}=n;(A==null?void 0:A.contains(document.activeElement))&&A!==document.activeElement&&ne()}function Oe(A){let{type:le,pair:Be,autosize:ho}=e;if(!Be&&ho)if(le==="textarea"){let{value:M}=d;M&&(M.textContent=(A!=null?A:"")+`\r +`)}else{let{value:M}=s;M&&(A?M.textContent=A:M.innerHTML=" ")}}function ze(){Ge()}let Je=Q({top:"0"});function eo(A){var le;let{scrollTop:Be}=A.target;Je.value.top=`${-Be}px`,(le=m.value)===null||le===void 0||le.syncUnifiedContainer()}let Zo=null;Vo(()=>{let{autosize:A,type:le}=e;A&&le==="textarea"?Zo=lo(b,Be=>{!Array.isArray(Be)&&Be!==B&&Oe(Be)}):Zo==null||Zo()});let Io=null;Vo(()=>{e.type==="textarea"?Io=lo(b,A=>{var le;!Array.isArray(A)&&A!==B&&((le=m.value)===null||le===void 0||le.syncUnifiedContainer())}):Io==null||Io()}),rt(sd,{mergedValueRef:b,maxlengthRef:Ye,mergedClsPrefixRef:o});let Bo={wrapperElRef:n,inputElRef:u,textareaElRef:i,isCompositing:S,focus:Re,blur:T,select:_,deactivate:de,activate:te},Or=Oa("Input",a,o),ya=W(()=>{let{value:A}=k,{common:{cubicBezierEaseInOut:le},self:{color:Be,borderRadius:ho,textColor:M,caretColor:G,caretColorError:fe,caretColorWarning:ce,textDecorationColor:Ve,border:$o,borderDisabled:yo,borderHover:sr,borderFocus:ur,placeholderColor:No,placeholderColorDisabled:Ho,lineHeightTextarea:mt,colorDisabled:Ip,colorFocus:yd,textColorDisabled:ao,boxShadowFocus:Yo,iconSize:dl,colorFocusWarning:Fn,boxShadowFocusWarning:Cn,borderWarning:bn,borderFocusWarning:sl,borderHoverWarning:AT,colorFocusError:DT,boxShadowFocusError:PT,borderError:MT,borderFocusError:BT,borderHoverError:ET,clearSize:LT,clearColor:NT,clearColorHover:_T,clearColorPressed:IT,iconColor:HT,iconColorDisabled:VT,suffixTextColor:WT,countTextColor:zT,iconColorHover:jT,iconColorPressed:$T,loadingColor:UT,loadingColorError:KT,loadingColorWarning:GT,[Me("padding",A)]:qT,[Me("fontSize",A)]:QT,[Me("height",A)]:ZT}}=l.value,{left:YT,right:JT}=Va(qT);return{"--n-bezier":le,"--n-count-text-color":zT,"--n-color":Be,"--n-font-size":QT,"--n-border-radius":ho,"--n-height":ZT,"--n-padding-left":YT,"--n-padding-right":JT,"--n-text-color":M,"--n-caret-color":G,"--n-text-decoration-color":Ve,"--n-border":$o,"--n-border-disabled":yo,"--n-border-hover":sr,"--n-border-focus":ur,"--n-placeholder-color":No,"--n-placeholder-color-disabled":Ho,"--n-icon-size":dl,"--n-line-height-textarea":mt,"--n-color-disabled":Ip,"--n-color-focus":yd,"--n-text-color-disabled":ao,"--n-box-shadow-focus":Yo,"--n-loading-color":UT,"--n-caret-color-warning":ce,"--n-color-focus-warning":Fn,"--n-box-shadow-focus-warning":Cn,"--n-border-warning":bn,"--n-border-focus-warning":sl,"--n-border-hover-warning":AT,"--n-loading-color-warning":GT,"--n-caret-color-error":fe,"--n-color-focus-error":DT,"--n-box-shadow-focus-error":PT,"--n-border-error":MT,"--n-border-focus-error":BT,"--n-border-hover-error":ET,"--n-loading-color-error":KT,"--n-clear-color":NT,"--n-clear-size":LT,"--n-clear-color-hover":_T,"--n-clear-color-pressed":IT,"--n-icon-color":HT,"--n-icon-color-hover":jT,"--n-icon-color-pressed":$T,"--n-icon-color-disabled":VT,"--n-suffix-text-color":WT}}),Fr=r?tt("input",W(()=>{let{value:A}=k;return A[0]}),ya,e):void 0;return Object.assign(Object.assign({},Bo),{wrapperElRef:n,inputElRef:u,inputMirrorElRef:s,inputEl2Ref:f,textareaElRef:i,textareaMirrorElRef:d,textareaScrollbarInstRef:m,rtlEnabled:Or,uncontrolledValue:c,mergedValue:b,passwordVisible:me,mergedPlaceholder:y,showPlaceholder1:I,showPlaceholder2:E,mergedFocus:se,isComposing:S,activated:F,showClearButton:Se,mergedSize:k,mergedDisabled:z,textDecorationStyle:ue,mergedClsPrefix:o,mergedBordered:t,mergedShowPasswordOn:Ee,placeholderStyle:Je,mergedStatus:C,textAreaScrollContainerWidth:Fe,handleTextAreaScroll:eo,handleCompositionStart:O,handleCompositionEnd:N,handleInput:j,handleInputBlur:U,handleInputFocus:ae,handleWrapperBlur:ee,handleWrapperFocus:V,handleMouseEnter:ie,handleMouseLeave:pe,handleMouseDown:H,handleChange:q,handleClick:D,handleClear:L,handlePasswordToggleClick:ve,handlePasswordToggleMousedown:Ae,handleWrapperKeyDown:Ce,handleTextAreaMirrorResize:ze,getTextareaScrollContainer:()=>i.value,mergedTheme:l,cssVars:r?void 0:ya,themeClass:Fr==null?void 0:Fr.themeClass,onRender:Fr==null?void 0:Fr.onRender})},render(){let{mergedClsPrefix:e,mergedStatus:o,themeClass:t,onRender:r,$slots:a}=this;return r==null||r(),w("div",{ref:"wrapperElRef",class:[`${e}-input`,t,o&&`${e}-input--${o}-status`,{[`${e}-input--rtl`]:this.rtlEnabled,[`${e}-input--disabled`]:this.mergedDisabled,[`${e}-input--textarea`]:this.type==="textarea",[`${e}-input--resizable`]:this.resizable&&!this.autosize,[`${e}-input--autosize`]:this.autosize,[`${e}-input--round`]:this.round&&this.type!=="textarea",[`${e}-input--pair`]:this.pair,[`${e}-input--focus`]:this.mergedFocus,[`${e}-input--stateful`]:this.stateful}],style:this.cssVars,tabindex:!this.mergedDisabled&&this.passivelyActivated&&!this.activated?0:void 0,onFocus:this.handleWrapperFocus,onBlur:this.handleWrapperBlur,onClick:this.handleClick,onMousedown:this.handleMouseDown,onMouseenter:this.handleMouseEnter,onMouseleave:this.handleMouseLeave,onCompositionstart:this.handleCompositionStart,onCompositionend:this.handleCompositionEnd,onKeyup:this.onKeyup,onKeydown:this.handleWrapperKeyDown},w("div",{class:`${e}-input-wrapper`},Jt(a.prefix,l=>l&&w("div",{class:`${e}-input__prefix`},l)),this.type==="textarea"?w(ad,{ref:"textareaScrollbarInstRef",class:`${e}-input__textarea`,container:this.getTextareaScrollContainer,triggerDisplayManually:!0,useUnifiedContainer:!0},{default:()=>{let{textAreaScrollContainerWidth:l}=this,n={width:this.autosize&&l&&`${l}px`};return w(Po,null,w("textarea",Object.assign({},this.inputProps,{ref:"textareaElRef",class:`${e}-input__textarea-el`,autofocus:this.autofocus,rows:Number(this.rows),placeholder:this.placeholder,value:this.mergedValue,disabled:this.mergedDisabled,maxlength:this.maxlength,minlength:this.minlength,readonly:this.readonly,tabindex:this.passivelyActivated&&!this.activated?-1:void 0,style:[this.textDecorationStyle[0],n],onBlur:this.handleInputBlur,onFocus:this.handleInputFocus,onInput:this.handleInput,onChange:this.handleChange,onScroll:this.handleTextAreaScroll})),this.showPlaceholder1?w("div",{class:`${e}-input__placeholder`,style:[this.placeholderStyle,n],key:"placeholder"},this.mergedPlaceholder[0]):null,this.autosize?w(Nt,{onResize:this.handleTextAreaMirrorResize},{default:()=>w("div",{ref:"textareaMirrorElRef",class:`${e}-input__textarea-mirror`,key:"mirror"})}):null)}}):w("div",{class:`${e}-input__input`},w("input",Object.assign({type:this.type==="password"&&this.mergedShowPasswordOn&&this.passwordVisible?"text":this.type},this.inputProps,{ref:"inputElRef",class:`${e}-input__input-el`,style:this.textDecorationStyle[0],tabindex:this.passivelyActivated&&!this.activated?-1:void 0,placeholder:this.mergedPlaceholder[0],disabled:this.mergedDisabled,maxlength:this.maxlength,minlength:this.minlength,value:Array.isArray(this.mergedValue)?this.mergedValue[0]:this.mergedValue,readonly:this.readonly,autofocus:this.autofocus,size:this.attrSize,onBlur:this.handleInputBlur,onFocus:this.handleInputFocus,onInput:l=>this.handleInput(l,0),onChange:l=>this.handleChange(l,0)})),this.showPlaceholder1?w("div",{class:`${e}-input__placeholder`},w("span",null,this.mergedPlaceholder[0])):null,this.autosize?w("div",{class:`${e}-input__input-mirror`,key:"mirror",ref:"inputMirrorElRef"},"\xA0"):null),!this.pair&&Jt(a.suffix,l=>l||this.clearable||this.showCount||this.mergedShowPasswordOn||this.loading!==void 0?w("div",{class:`${e}-input__suffix`},[Jt(a.clear,n=>(this.clearable||n)&&w(Fa,{clsPrefix:e,show:this.showClearButton,onClear:this.handleClear},{default:()=>n})),this.internalLoadingBeforeSuffix?null:l,this.loading!==void 0?w(nd,{clsPrefix:e,loading:this.loading,showArrow:!1,showClear:!1,style:this.cssVars}):null,this.internalLoadingBeforeSuffix?l:null,this.showCount&&this.type!=="textarea"?w(xu,null,{default:n=>{var i;return(i=a.count)===null||i===void 0?void 0:i.call(a,n)}}):null,this.mergedShowPasswordOn&&this.type==="password"?w(Pt,{clsPrefix:e,class:`${e}-input__eye`,onMousedown:this.handlePasswordToggleMousedown,onClick:this.handlePasswordToggleClick},{default:()=>this.passwordVisible?Yt(a["password-visible-icon"],()=>[w(Zs,null)]):Yt(a["password-invisible-icon"],()=>[w(Ys,null)])}):null]):null)),this.pair?w("span",{class:`${e}-input__separator`},Yt(a.separator,()=>[this.separator])):null,this.pair?w("div",{class:`${e}-input-wrapper`},w("div",{class:`${e}-input__input`},w("input",{ref:"inputEl2Ref",type:this.type,class:`${e}-input__input-el`,tabindex:this.passivelyActivated&&!this.activated?-1:void 0,placeholder:this.mergedPlaceholder[1],disabled:this.mergedDisabled,maxlength:this.maxlength,minlength:this.minlength,value:Array.isArray(this.mergedValue)?this.mergedValue[1]:void 0,readonly:this.readonly,style:this.textDecorationStyle[1],onBlur:this.handleInputBlur,onFocus:this.handleInputFocus,onInput:l=>this.handleInput(l,1),onChange:l=>this.handleChange(l,1)}),this.showPlaceholder2?w("div",{class:`${e}-input__placeholder`},w("span",null,this.mergedPlaceholder[1])):null),Jt(a.suffix,l=>(this.clearable||l)&&w("div",{class:`${e}-input__suffix`},[this.clearable&&w(Fa,{clsPrefix:e,show:this.showClearButton,onClear:this.handleClear},{default:()=>{var n;return(n=a.clear)===null||n===void 0?void 0:n.call(a)}}),l]))):null,this.mergedBordered?w("div",{class:`${e}-input__border`}):null,this.mergedBordered?w("div",{class:`${e}-input__state-border`}):null,this.showCount&&this.type==="textarea"?w(xu,null,{default:l=>{var n;return(n=a.count)===null||n===void 0?void 0:n.call(a,l)}}):null)}});function gu(e){let{boxShadow2:o}=e;return{menuBoxShadow:o}}var I$=Ie({name:"AutoComplete",common:xe,peers:{InternalSelectMenu:Ra,Input:Rt},self:gu});var WA={name:"AutoComplete",common:P,peers:{InternalSelectMenu:_t,Input:Co},self:gu},wu=WA;var Dg=e=>{let{borderRadius:o,avatarColor:t,cardColor:r,fontSize:a,heightTiny:l,heightSmall:n,heightMedium:i,heightLarge:d,heightHuge:s,modalColor:u,popoverColor:f}=e;return{borderRadius:o,fontSize:a,border:`2px solid ${r}`,heightTiny:l,heightSmall:n,heightMedium:i,heightLarge:d,heightHuge:s,color:ge(r,t),colorModal:ge(u,t),colorPopover:ge(f,t)}};var zA={name:"Avatar",common:P,self:Dg},ln=zA;var jA={name:"AvatarGroup",common:P,peers:{Avatar:ln}},Tu=jA;var Pg={width:"44px",height:"44px",borderRadius:"22px",iconSize:"26px"};var $A={name:"BackTop",common:P,self(e){let{popoverColor:o,textColor2:t,primaryColorHover:r,primaryColorPressed:a}=e;return Object.assign(Object.assign({},Pg),{color:o,textColor:t,iconColor:t,iconColorHover:r,iconColorPressed:a,boxShadow:"0 2px 8px 0px rgba(0, 0, 0, .12)",boxShadowHover:"0 2px 12px 0px rgba(0, 0, 0, .18)",boxShadowPressed:"0 2px 12px 0px rgba(0, 0, 0, .18)"})}},Ru=$A;var UA={name:"Badge",common:P,self(e){let{errorColorSuppl:o,infoColorSuppl:t,successColorSuppl:r,warningColorSuppl:a,fontFamily:l}=e;return{color:o,colorInfo:t,colorSuccess:r,colorError:o,colorWarning:a,fontSize:"12px",fontFamily:l}}},Ou=UA;var Mg={fontWeightActive:"400"};var Bg=e=>{let{fontSize:o,textColor3:t,primaryColorHover:r,primaryColorPressed:a,textColor2:l}=e;return Object.assign(Object.assign({},Mg),{fontSize:o,itemTextColor:t,itemTextColorHover:r,itemTextColorPressed:a,itemTextColorActive:l,separatorColor:t})};var KA={name:"Breadcrumb",common:P,self:Bg},Fu=KA;function Yr(e){return ge(e,[255,255,255,.16])}function nn(e){return ge(e,[0,0,0,.12])}var Eg={paddingTiny:"0 6px",paddingSmall:"0 10px",paddingMedium:"0 14px",paddingLarge:"0 18px",paddingRoundTiny:"0 10px",paddingRoundSmall:"0 14px",paddingRoundMedium:"0 18px",paddingRoundLarge:"0 22px",iconMarginTiny:"6px",iconMarginSmall:"6px",iconMarginMedium:"6px",iconMarginLarge:"6px",iconSizeTiny:"14px",iconSizeSmall:"18px",iconSizeMedium:"18px",iconSizeLarge:"20px",rippleDuration:".6s"};var Cu=e=>{let{heightTiny:o,heightSmall:t,heightMedium:r,heightLarge:a,borderRadius:l,fontSizeTiny:n,fontSizeSmall:i,fontSizeMedium:d,fontSizeLarge:s,opacityDisabled:u,textColor2:f,textColor3:m,primaryColorHover:p,primaryColorPressed:c,borderColor:R,primaryColor:b,baseColor:h,infoColor:k,infoColorHover:z,infoColorPressed:C,successColor:g,successColorHover:v,successColorPressed:S,warningColor:F,warningColorHover:B,warningColorPressed:y,errorColor:I,errorColorHover:E,errorColorPressed:se,fontWeight:Se,buttonColor2:Ee,buttonColor2Hover:me,buttonColor2Pressed:ue,fontWeightStrong:Fe}=e;return Object.assign(Object.assign({},Eg),{heightTiny:o,heightSmall:t,heightMedium:r,heightLarge:a,borderRadiusTiny:l,borderRadiusSmall:l,borderRadiusMedium:l,borderRadiusLarge:l,fontSizeTiny:n,fontSizeSmall:i,fontSizeMedium:d,fontSizeLarge:s,opacityDisabled:u,colorOpacitySecondary:"0.16",colorOpacitySecondaryHover:"0.22",colorOpacitySecondaryPressed:"0.28",colorSecondary:Ee,colorSecondaryHover:me,colorSecondaryPressed:ue,colorTertiary:Ee,colorTertiaryHover:me,colorTertiaryPressed:ue,colorQuaternary:"#0000",colorQuaternaryHover:me,colorQuaternaryPressed:ue,color:"#0000",colorHover:"#0000",colorPressed:"#0000",colorFocus:"#0000",colorDisabled:"#0000",textColor:f,textColorTertiary:m,textColorHover:p,textColorPressed:c,textColorFocus:p,textColorDisabled:f,textColorText:f,textColorTextHover:p,textColorTextPressed:c,textColorTextFocus:p,textColorTextDisabled:f,textColorGhost:f,textColorGhostHover:p,textColorGhostPressed:c,textColorGhostFocus:p,textColorGhostDisabled:f,border:`1px solid ${R}`,borderHover:`1px solid ${p}`,borderPressed:`1px solid ${c}`,borderFocus:`1px solid ${p}`,borderDisabled:`1px solid ${R}`,rippleColor:b,colorPrimary:b,colorHoverPrimary:p,colorPressedPrimary:c,colorFocusPrimary:p,colorDisabledPrimary:b,textColorPrimary:h,textColorHoverPrimary:h,textColorPressedPrimary:h,textColorFocusPrimary:h,textColorDisabledPrimary:h,textColorTextPrimary:b,textColorTextHoverPrimary:p,textColorTextPressedPrimary:c,textColorTextFocusPrimary:p,textColorTextDisabledPrimary:f,textColorGhostPrimary:b,textColorGhostHoverPrimary:p,textColorGhostPressedPrimary:c,textColorGhostFocusPrimary:p,textColorGhostDisabledPrimary:b,borderPrimary:`1px solid ${b}`,borderHoverPrimary:`1px solid ${p}`,borderPressedPrimary:`1px solid ${c}`,borderFocusPrimary:`1px solid ${p}`,borderDisabledPrimary:`1px solid ${b}`,rippleColorPrimary:b,colorInfo:k,colorHoverInfo:z,colorPressedInfo:C,colorFocusInfo:z,colorDisabledInfo:k,textColorInfo:h,textColorHoverInfo:h,textColorPressedInfo:h,textColorFocusInfo:h,textColorDisabledInfo:h,textColorTextInfo:k,textColorTextHoverInfo:z,textColorTextPressedInfo:C,textColorTextFocusInfo:z,textColorTextDisabledInfo:f,textColorGhostInfo:k,textColorGhostHoverInfo:z,textColorGhostPressedInfo:C,textColorGhostFocusInfo:z,textColorGhostDisabledInfo:k,borderInfo:`1px solid ${k}`,borderHoverInfo:`1px solid ${z}`,borderPressedInfo:`1px solid ${C}`,borderFocusInfo:`1px solid ${z}`,borderDisabledInfo:`1px solid ${k}`,rippleColorInfo:k,colorSuccess:g,colorHoverSuccess:v,colorPressedSuccess:S,colorFocusSuccess:v,colorDisabledSuccess:g,textColorSuccess:h,textColorHoverSuccess:h,textColorPressedSuccess:h,textColorFocusSuccess:h,textColorDisabledSuccess:h,textColorTextSuccess:g,textColorTextHoverSuccess:v,textColorTextPressedSuccess:S,textColorTextFocusSuccess:v,textColorTextDisabledSuccess:f,textColorGhostSuccess:g,textColorGhostHoverSuccess:v,textColorGhostPressedSuccess:S,textColorGhostFocusSuccess:v,textColorGhostDisabledSuccess:g,borderSuccess:`1px solid ${g}`,borderHoverSuccess:`1px solid ${v}`,borderPressedSuccess:`1px solid ${S}`,borderFocusSuccess:`1px solid ${v}`,borderDisabledSuccess:`1px solid ${g}`,rippleColorSuccess:g,colorWarning:F,colorHoverWarning:B,colorPressedWarning:y,colorFocusWarning:B,colorDisabledWarning:F,textColorWarning:h,textColorHoverWarning:h,textColorPressedWarning:h,textColorFocusWarning:h,textColorDisabledWarning:h,textColorTextWarning:F,textColorTextHoverWarning:B,textColorTextPressedWarning:y,textColorTextFocusWarning:B,textColorTextDisabledWarning:f,textColorGhostWarning:F,textColorGhostHoverWarning:B,textColorGhostPressedWarning:y,textColorGhostFocusWarning:B,textColorGhostDisabledWarning:F,borderWarning:`1px solid ${F}`,borderHoverWarning:`1px solid ${B}`,borderPressedWarning:`1px solid ${y}`,borderFocusWarning:`1px solid ${B}`,borderDisabledWarning:`1px solid ${F}`,rippleColorWarning:F,colorError:I,colorHoverError:E,colorPressedError:se,colorFocusError:E,colorDisabledError:I,textColorError:h,textColorHoverError:h,textColorPressedError:h,textColorFocusError:h,textColorDisabledError:h,textColorTextError:I,textColorTextHoverError:E,textColorTextPressedError:se,textColorTextFocusError:E,textColorTextDisabledError:f,textColorGhostError:I,textColorGhostHoverError:E,textColorGhostPressedError:se,textColorGhostFocusError:E,textColorGhostDisabledError:I,borderError:`1px solid ${I}`,borderHoverError:`1px solid ${E}`,borderPressedError:`1px solid ${se}`,borderFocusError:`1px solid ${E}`,borderDisabledError:`1px solid ${I}`,rippleColorError:I,waveOpacity:"0.6",fontWeight:Se,fontWeightStrong:Fe})},GA={name:"Button",common:xe,self:Cu},_o=GA;var qA={name:"Button",common:P,self(e){let o=Cu(e);return o.waveOpacity="0.8",o.colorOpacitySecondary="0.16",o.colorOpacitySecondaryHover="0.2",o.colorOpacitySecondaryPressed="0.12",o}},po=qA;var Lg=uo("n-button-group");var Ng=Y([$("button",` margin: 0; font-weight: var(--n-font-weight); line-height: 1; @@ -570,7 +570,7 @@ ${o} background-color .3s var(--n-bezier), opacity .3s var(--n-bezier), border-color .3s var(--n-bezier); - `,[xe("color",[J("border",{borderColor:"var(--n-border-color)"}),xe("disabled",[J("border",{borderColor:"var(--n-border-color-disabled)"})]),rt("disabled",[Y("&:focus",[J("state-border",{borderColor:"var(--n-border-color-focus)"})]),Y("&:hover",[J("state-border",{borderColor:"var(--n-border-color-hover)"})]),Y("&:active",[J("state-border",{borderColor:"var(--n-border-color-pressed)"})]),xe("pressed",[J("state-border",{borderColor:"var(--n-border-color-pressed)"})])])]),xe("disabled",{backgroundColor:"var(--n-color-disabled)",color:"var(--n-text-color-disabled)"},[J("border",{border:"var(--n-border-disabled)"})]),rt("disabled",[Y("&:focus",{backgroundColor:"var(--n-color-focus)",color:"var(--n-text-color-focus)"},[J("state-border",{border:"var(--n-border-focus)"})]),Y("&:hover",{backgroundColor:"var(--n-color-hover)",color:"var(--n-text-color-hover)"},[J("state-border",{border:"var(--n-border-hover)"})]),Y("&:active",{backgroundColor:"var(--n-color-pressed)",color:"var(--n-text-color-pressed)"},[J("state-border",{border:"var(--n-border-pressed)"})]),xe("pressed",{backgroundColor:"var(--n-color-pressed)",color:"var(--n-text-color-pressed)"},[J("state-border",{border:"var(--n-border-pressed)"})])]),xe("loading",{"pointer-events":"none"}),K("base-wave",` + `,[Te("color",[X("border",{borderColor:"var(--n-border-color)"}),Te("disabled",[X("border",{borderColor:"var(--n-border-color-disabled)"})]),ft("disabled",[Y("&:focus",[X("state-border",{borderColor:"var(--n-border-color-focus)"})]),Y("&:hover",[X("state-border",{borderColor:"var(--n-border-color-hover)"})]),Y("&:active",[X("state-border",{borderColor:"var(--n-border-color-pressed)"})]),Te("pressed",[X("state-border",{borderColor:"var(--n-border-color-pressed)"})])])]),Te("disabled",{backgroundColor:"var(--n-color-disabled)",color:"var(--n-text-color-disabled)"},[X("border",{border:"var(--n-border-disabled)"})]),ft("disabled",[Y("&:focus",{backgroundColor:"var(--n-color-focus)",color:"var(--n-text-color-focus)"},[X("state-border",{border:"var(--n-border-focus)"})]),Y("&:hover",{backgroundColor:"var(--n-color-hover)",color:"var(--n-text-color-hover)"},[X("state-border",{border:"var(--n-border-hover)"})]),Y("&:active",{backgroundColor:"var(--n-color-pressed)",color:"var(--n-text-color-pressed)"},[X("state-border",{border:"var(--n-border-pressed)"})]),Te("pressed",{backgroundColor:"var(--n-color-pressed)",color:"var(--n-text-color-pressed)"},[X("state-border",{border:"var(--n-border-pressed)"})])]),Te("loading",{"pointer-events":"none"}),$("base-wave",` pointer-events: none; top: 0; right: 0; @@ -579,7 +579,7 @@ ${o} animation-iteration-count: 1; animation-duration: var(--n-ripple-duration); animation-timing-function: var(--n-bezier-ease-out), var(--n-bezier-ease-out); - `,[xe("active",{zIndex:1,animationName:"button-wave-spread, button-wave-opacity"})]),typeof window!="undefined"&&"MozBoxSizing"in document.createElement("div").style?Y("&::moz-focus-inner",{border:0}):null,J("border, state-border",` + `,[Te("active",{zIndex:1,animationName:"button-wave-spread, button-wave-opacity"})]),typeof window!="undefined"&&"MozBoxSizing"in document.createElement("div").style?Y("&::moz-focus-inner",{border:0}):null,X("border, state-border",` position: absolute; left: 0; top: 0; @@ -588,7 +588,7 @@ ${o} border-radius: inherit; transition: border-color .3s var(--n-bezier); pointer-events: none; - `),J("border",{border:"var(--n-border)"}),J("state-border",{border:"var(--n-border)",borderColor:"#0000",zIndex:1}),J("icon",` + `),X("border",{border:"var(--n-border)"}),X("state-border",{border:"var(--n-border)",borderColor:"#0000",zIndex:1}),X("icon",` margin: var(--n-icon-margin); margin-left: 0; height: var(--n-icon-size); @@ -597,7 +597,7 @@ ${o} font-size: var(--n-icon-size); position: relative; flex-shrink: 0; - `,[K("icon-slot",` + `,[$("icon-slot",` height: var(--n-icon-size); width: var(--n-icon-size); position: absolute; @@ -605,14 +605,14 @@ ${o} top: 50%; transform: translateY(-50%); display: flex; - `,[ut({top:"50%",originalTransform:"translateY(-50%)"})]),mg()]),J("content",` + `,[gt({top:"50%",originalTransform:"translateY(-50%)"})]),Cg()]),X("content",` display: flex; align-items: center; flex-wrap: nowrap; - `,[Y("~",[J("icon",{margin:"var(--n-icon-margin)",marginRight:0})])]),xe("block",` + `,[Y("~",[X("icon",{margin:"var(--n-icon-margin)",marginRight:0})])]),Te("block",` display: flex; width: 100%; - `),xe("dashed",[J("border, state-border",{borderStyle:"dashed !important"})]),xe("disabled",{cursor:"not-allowed",opacity:"var(--n-opacity-disabled)"})]),Y("@keyframes button-wave-spread",{from:{boxShadow:"0 0 0.5px 0 var(--n-ripple-color)"},to:{boxShadow:"0 0 0.5px 4.5px var(--n-ripple-color)"}}),Y("@keyframes button-wave-opacity",{from:{opacity:"var(--n-wave-opacity)"},to:{opacity:0}})]);var DA=Object.assign(Object.assign({},Fo.props),{color:String,textColor:String,text:Boolean,block:Boolean,loading:Boolean,disabled:Boolean,circle:Boolean,size:String,ghost:Boolean,round:Boolean,secondary:Boolean,tertiary:Boolean,quaternary:Boolean,strong:Boolean,focusable:{type:Boolean,default:!0},keyboard:{type:Boolean,default:!0},tag:{type:String,default:"button"},type:{type:String,default:"default"},dashed:Boolean,iconPlacement:{type:String,default:"left"},attrType:{type:String,default:"button"},bordered:{type:Boolean,default:!0},onClick:[Function,Array],internalAutoFocus:Boolean}),PA=le({name:"Button",props:DA,setup(e){let o=Z(null),t=Z(null),r=Z(!1);fo(()=>{let{value:O}=o;O&&!e.disabled&&e.focusable&&e.internalAutoFocus&&O.focus({preventScroll:!0})});let a=Ye(()=>!e.quaternary&&!e.tertiary&&!e.secondary&&!e.text&&(!e.color||e.ghost||e.dashed)&&e.bordered),l=Te(Cg,{}),{mergedSizeRef:n}=Rt({},{defaultSize:"medium",mergedSize:O=>{let{size:g}=e;if(g)return g;let{size:v}=l;if(v)return v;let{mergedSize:w}=O||{};return w?w.value:"medium"}}),i=V(()=>e.focusable&&!e.disabled),d=O=>{var g;O.preventDefault(),!e.disabled&&i.value&&((g=o.value)===null||g===void 0||g.focus({preventScroll:!0}))},s=O=>{var g;if(!e.disabled&&!e.loading){let{onClick:v}=e;v&&Re(v,O),e.text||(g=t.value)===null||g===void 0||g.play()}},u=O=>{switch(O.code){case"Enter":case"NumpadEnter":if(!e.keyboard)return;r.value=!1}},f=O=>{switch(O.code){case"Enter":case"NumpadEnter":if(!e.keyboard||e.loading){O.preventDefault();return}r.value=!0}},c=()=>{r.value=!1},{inlineThemeDisabled:p,mergedClsPrefixRef:x,mergedRtlRef:T}=Bo(e),C=Fo("Button","-button",bg,Ao,e,x),S=ha("Button",T,x),D=V(()=>{let O=C.value,{common:{cubicBezierEaseInOut:g,cubicBezierEaseOut:v},self:w}=O,{rippleDuration:F,opacityDisabled:B,fontWeight:y,fontWeightStrong:W}=w,_=n.value,{dashed:ae,type:he,ghost:Me,text:de,color:ie,round:ge,circle:Ve,textColor:Ke,secondary:He,tertiary:Je,quaternary:Qe,strong:wo}=e,Do={"font-weight":wo?W:y},Be={"--n-color":"initial","--n-color-hover":"initial","--n-color-pressed":"initial","--n-color-focus":"initial","--n-color-disabled":"initial","--n-ripple-color":"initial","--n-text-color":"initial","--n-text-color-hover":"initial","--n-text-color-pressed":"initial","--n-text-color-focus":"initial","--n-text-color-disabled":"initial"},We=he==="tertiary",ho=he==="default",we=We?"default":he;if(de){let L=Ke||ie,U=L||w[ve("textColorText",we)];Be={"--n-color":"#0000","--n-color-hover":"#0000","--n-color-pressed":"#0000","--n-color-focus":"#0000","--n-color-disabled":"#0000","--n-ripple-color":"#0000","--n-text-color":U,"--n-text-color-hover":L?Ur(L):w[ve("textColorTextHover",we)],"--n-text-color-pressed":L?ln(L):w[ve("textColorTextPressed",we)],"--n-text-color-focus":L?Ur(L):w[ve("textColorTextHover",we)],"--n-text-color-disabled":L||w[ve("textColorTextDisabled",we)]}}else if(Me||ae){let L=Ke||ie;Be={"--n-color":"#0000","--n-color-hover":"#0000","--n-color-pressed":"#0000","--n-color-focus":"#0000","--n-color-disabled":"#0000","--n-ripple-color":ie||w[ve("rippleColor",we)],"--n-text-color":L||w[ve("textColorGhost",we)],"--n-text-color-hover":L?Ur(L):w[ve("textColorGhostHover",we)],"--n-text-color-pressed":L?ln(L):w[ve("textColorGhostPressed",we)],"--n-text-color-focus":L?Ur(L):w[ve("textColorGhostHover",we)],"--n-text-color-disabled":L||w[ve("textColorGhostDisabled",we)]}}else if(He){let L=ho?w.textColor:We?w.textColorTertiary:w[ve("color",we)],U=ie||L,H=he!=="default"&&he!=="tertiary";Be={"--n-color":H?X(U,{alpha:Number(w.colorOpacitySecondary)}):w.colorSecondary,"--n-color-hover":H?X(U,{alpha:Number(w.colorOpacitySecondaryHover)}):w.colorSecondaryHover,"--n-color-pressed":H?X(U,{alpha:Number(w.colorOpacitySecondaryPressed)}):w.colorSecondaryPressed,"--n-color-focus":H?X(U,{alpha:Number(w.colorOpacitySecondaryHover)}):w.colorSecondaryHover,"--n-color-disabled":w.colorSecondary,"--n-ripple-color":"#0000","--n-text-color":U,"--n-text-color-hover":U,"--n-text-color-pressed":U,"--n-text-color-focus":U,"--n-text-color-disabled":U}}else if(Je||Qe){let L=ho?w.textColor:We?w.textColorTertiary:w[ve("color",we)],U=ie||L;Je?(Be["--n-color"]=w.colorTertiary,Be["--n-color-hover"]=w.colorTertiaryHover,Be["--n-color-pressed"]=w.colorTertiaryPressed,Be["--n-color-focus"]=w.colorSecondaryHover,Be["--n-color-disabled"]=w.colorTertiary):(Be["--n-color"]=w.colorQuaternary,Be["--n-color-hover"]=w.colorQuaternaryHover,Be["--n-color-pressed"]=w.colorQuaternaryPressed,Be["--n-color-focus"]=w.colorQuaternaryHover,Be["--n-color-disabled"]=w.colorQuaternary),Be["--n-ripple-color"]="#0000",Be["--n-text-color"]=U,Be["--n-text-color-hover"]=U,Be["--n-text-color-pressed"]=U,Be["--n-text-color-focus"]=U,Be["--n-text-color-disabled"]=U}else Be={"--n-color":ie||w[ve("color",we)],"--n-color-hover":ie?Ur(ie):w[ve("colorHover",we)],"--n-color-pressed":ie?ln(ie):w[ve("colorPressed",we)],"--n-color-focus":ie?Ur(ie):w[ve("colorFocus",we)],"--n-color-disabled":ie||w[ve("colorDisabled",we)],"--n-ripple-color":ie||w[ve("rippleColor",we)],"--n-text-color":Ke||(ie?w.textColorPrimary:We?w.textColorTertiary:w[ve("textColor",we)]),"--n-text-color-hover":Ke||(ie?w.textColorHoverPrimary:w[ve("textColorHover",we)]),"--n-text-color-pressed":Ke||(ie?w.textColorPressedPrimary:w[ve("textColorPressed",we)]),"--n-text-color-focus":Ke||(ie?w.textColorFocusPrimary:w[ve("textColorFocus",we)]),"--n-text-color-disabled":Ke||(ie?w.textColorDisabledPrimary:w[ve("textColorDisabled",we)])};let qe={"--n-border":"initial","--n-border-hover":"initial","--n-border-pressed":"initial","--n-border-focus":"initial","--n-border-disabled":"initial"};de?qe={"--n-border":"none","--n-border-hover":"none","--n-border-pressed":"none","--n-border-focus":"none","--n-border-disabled":"none"}:qe={"--n-border":w[ve("border",we)],"--n-border-hover":w[ve("borderHover",we)],"--n-border-pressed":w[ve("borderPressed",we)],"--n-border-focus":w[ve("borderFocus",we)],"--n-border-disabled":w[ve("borderDisabled",we)]};let{[ve("height",_)]:to,[ve("fontSize",_)]:vo,[ve("padding",_)]:m,[ve("paddingRound",_)]:h,[ve("iconSize",_)]:k,[ve("borderRadius",_)]:E,[ve("iconMargin",_)]:I,waveOpacity:G}=w,$={"--n-width":Ve&&!de?to:"initial","--n-height":de?"initial":to,"--n-font-size":vo,"--n-padding":Ve||de?"initial":ge?h:m,"--n-icon-size":k,"--n-icon-margin":I,"--n-border-radius":de?"initial":Ve||ge?to:E};return Object.assign(Object.assign(Object.assign(Object.assign({"--n-bezier":g,"--n-bezier-ease-out":v,"--n-ripple-duration":F,"--n-opacity-disabled":B,"--n-wave-opacity":G},Do),Be),qe),$)}),j=p?Ko("button",V(()=>{let O="",{dashed:g,type:v,ghost:w,text:F,color:B,round:y,circle:W,textColor:_,secondary:ae,tertiary:he,quaternary:Me,strong:de}=e;g&&(O+="a"),w&&(O+="b"),F&&(O+="c"),y&&(O+="d"),W&&(O+="e"),ae&&(O+="f"),he&&(O+="g"),Me&&(O+="h"),de&&(O+="i"),B&&(O+="j"+Pl(B)),_&&(O+="k"+Pl(_));let{value:ie}=n;return O+="l"+ie[0],O+="m"+v[0],O}),D,e):void 0;return{selfElRef:o,waveElRef:t,mergedClsPrefix:x,mergedFocusable:i,mergedSize:n,showBorder:a,enterPressed:r,rtlEnabled:S,handleMousedown:d,handleKeydown:f,handleBlur:c,handleKeyup:u,handleClick:s,customColorCssVars:V(()=>{let{color:O}=e;if(!O)return null;let g=Ur(O);return{"--n-border-color":O,"--n-border-color-hover":g,"--n-border-color-pressed":ln(O),"--n-border-color-focus":g,"--n-border-color-disabled":O}}),cssVars:p?void 0:D,themeClass:j==null?void 0:j.themeClass,onRender:j==null?void 0:j.onRender}},render(){let{mergedClsPrefix:e,tag:o,onRender:t}=this;t==null||t();let r=Kt(this.$slots.default,a=>a&&R("span",{class:`${e}-button__content`},a));return R(o,{ref:"selfElRef",class:[this.themeClass,`${e}-button`,`${e}-button--${this.type}-type`,`${e}-button--${this.mergedSize}-type`,this.rtlEnabled&&`${e}-button--rtl`,this.disabled&&`${e}-button--disabled`,this.block&&`${e}-button--block`,this.enterPressed&&`${e}-button--pressed`,!this.text&&this.dashed&&`${e}-button--dashed`,this.color&&`${e}-button--color`,this.secondary&&`${e}-button--secondary`,this.loading&&`${e}-button--loading`,this.ghost&&`${e}-button--ghost`],tabindex:this.mergedFocusable?0:-1,type:this.attrType,style:this.cssVars,disabled:this.disabled,onClick:this.handleClick,onBlur:this.handleBlur,onMousedown:this.handleMousedown,onKeyup:this.handleKeyup,onKeydown:this.handleKeydown},this.iconPlacement==="right"&&r,R(el,{width:!0},{default:()=>Kt(this.$slots.icon,a=>(this.loading||a)&&R("span",{class:`${e}-button__icon`,style:{margin:di(this.$slots.default)?"0":""}},R(Ct,null,{default:()=>this.loading?R(jr,{clsPrefix:e,key:"loading",class:`${e}-icon-slot`,strokeWidth:20}):R("div",{key:"icon",class:`${e}-icon-slot`,role:"none"},a)})))}),this.iconPlacement==="left"&&r,this.text?null:R(rd,{ref:"waveElRef",clsPrefix:e}),this.showBorder?R("div",{"aria-hidden":!0,class:`${e}-button__border`,style:this.customColorCssVars}):null,this.showBorder?R("div",{"aria-hidden":!0,class:`${e}-button__state-border`,style:this.customColorCssVars}):null)}}),Cu=PA;var yg={titleFontSize:"22px"};var bu=e=>{let{borderRadius:o,fontSize:t,lineHeight:r,textColor2:a,textColor1:l,textColorDisabled:n,dividerColor:i,fontWeightStrong:d,primaryColor:s,baseColor:u,hoverColor:f,cardColor:c,modalColor:p,popoverColor:x}=e;return Object.assign(Object.assign({},yg),{borderRadius:o,borderColor:me(c,i),borderColorModal:me(p,i),borderColorPopover:me(x,i),textColor:a,titleFontWeight:d,titleTextColor:l,dayTextColor:n,fontSize:t,lineHeight:r,dateColorCurrent:s,dateTextColorCurrent:u,cellColorHover:me(c,f),cellColorHoverModal:me(p,f),cellColorHoverPopover:me(x,f),cellColor:c,cellColorModal:p,cellColorPopover:x,barColor:s})},i4=Pe({name:"Calendar",common:pe,peers:{Button:Ao},self:bu});var MA={name:"Calendar",common:P,peers:{Button:io},self:bu},yu=MA;var vu=e=>{let{fontSize:o,boxShadow2:t,popoverColor:r,textColor2:a,borderRadius:l,borderColor:n,heightSmall:i,heightMedium:d,heightLarge:s,fontSizeSmall:u,fontSizeMedium:f,fontSizeLarge:c,dividerColor:p}=e;return{panelFontSize:o,boxShadow:t,color:r,textColor:a,borderRadius:l,border:`1px solid ${n}`,heightSmall:i,heightMedium:d,heightLarge:s,fontSizeSmall:u,fontSizeMedium:f,fontSizeLarge:c,dividerColor:p}},w4=Pe({name:"ColorPicker",common:pe,peers:{Input:mt,Button:Ao},self:vu});var BA={name:"ColorPicker",common:P,peers:{Input:go,Button:io},self:vu},ku=BA;var vg={paddingSmall:"12px 16px 12px",paddingMedium:"19px 24px 20px",paddingLarge:"23px 32px 24px",paddingHuge:"27px 40px 28px",titleFontSizeSmall:"16px",titleFontSizeMedium:"18px",titleFontSizeLarge:"18px",titleFontSizeHuge:"18px",closeSize:"18px"};var Au=e=>{let{primaryColor:o,borderRadius:t,lineHeight:r,fontSize:a,cardColor:l,textColor2:n,textColor1:i,dividerColor:d,fontWeightStrong:s,closeColor:u,closeColorHover:f,closeColorPressed:c,modalColor:p,boxShadow1:x,popoverColor:T,actionColor:C}=e;return Object.assign(Object.assign({},vg),{lineHeight:r,color:l,colorModal:p,colorPopover:T,colorTarget:o,colorEmbedded:C,textColor:n,titleTextColor:i,borderColor:d,actionColor:C,titleFontWeight:s,closeColor:u,closeColorHover:f,closeColorPressed:c,fontSizeSmall:a,fontSizeMedium:a,fontSizeLarge:a,fontSizeHuge:a,boxShadow:x,borderRadius:t})},LA={name:"Card",common:pe,self:Au},Du=LA;var EA={name:"Card",common:P,self(e){let o=Au(e),{cardColor:t}=e;return o.colorEmbedded=t,o}},nn=EA;var kg=e=>({dotSize:"8px",dotColor:"rgba(255, 255, 255, .3)",dotColorActive:"rgba(255, 255, 255, 1)",dotColorFocus:"rgba(255, 255, 255, .5)",dotLineWidth:"16px",dotLineWidthActive:"24px",arrowColor:"#eee"});var NA={name:"Carousel",common:P,self:kg},Pu=NA;var Ag={sizeSmall:"14px",sizeMedium:"16px",sizeLarge:"18px",labelPadding:"0 8px"};var Mu=e=>{let{baseColor:o,inputColorDisabled:t,cardColor:r,modalColor:a,popoverColor:l,textColorDisabled:n,borderColor:i,primaryColor:d,textColor2:s,fontSizeSmall:u,fontSizeMedium:f,fontSizeLarge:c,borderRadiusSmall:p,lineHeight:x}=e;return Object.assign(Object.assign({},Ag),{labelLineHeight:x,fontSizeSmall:u,fontSizeMedium:f,fontSizeLarge:c,borderRadius:p,color:o,colorChecked:d,colorDisabled:t,colorDisabledChecked:t,colorTableHeader:r,colorTableHeaderModal:a,colorTableHeaderPopover:l,checkMarkColor:o,checkMarkColorDisabled:n,checkMarkColorDisabledChecked:n,border:`1px solid ${i}`,borderDisabled:`1px solid ${i}`,borderDisabledChecked:`1px solid ${i}`,borderChecked:`1px solid ${d}`,borderFocus:`1px solid ${d}`,boxShadowFocus:`0 0 0 2px ${X(d,{alpha:.3})}`,textColor:s,textColorDisabled:n})},_A={name:"Checkbox",common:pe,self:Mu},mr=_A;var IA={name:"Checkbox",common:P,self(e){let{cardColor:o}=e,t=Mu(e);return t.color="#0000",t.checkMarkColor=o,t}},Bt=IA;var Bu=e=>{let{borderRadius:o,boxShadow2:t,popoverColor:r,textColor2:a,textColor3:l,primaryColor:n,textColorDisabled:i,dividerColor:d,hoverColor:s,fontSizeMedium:u,heightMedium:f}=e;return{menuBorderRadius:o,menuColor:r,menuBoxShadow:t,menuDividerColor:d,menuHeight:"calc(var(--n-option-height) * 6.6)",optionArrowColor:l,optionHeight:f,optionFontSize:u,optionColorHover:s,optionTextColor:a,optionTextColorActive:n,optionTextColorDisabled:i,optionCheckMarkColor:n,loadingColor:n,columnWidth:"180px"}},dK=Pe({name:"Cascader",common:pe,peers:{InternalSelectMenu:xa,InternalSelection:tn,Scrollbar:bo,Checkbox:mr,Empty:ft},self:Bu});var HA={name:"Cascader",common:P,peers:{InternalSelectMenu:Pt,InternalSelection:ga,Scrollbar:no,Checkbox:Bt,Empty:ft},self:Bu},Lu=HA;var Dg=R("svg",{viewBox:"0 0 64 64",class:"check-icon"},R("path",{d:"M50.42,16.76L22.34,39.45l-8.1-11.46c-1.12-1.58-3.3-1.96-4.88-0.84c-1.58,1.12-1.95,3.3-0.84,4.88l10.26,14.51 c0.56,0.79,1.42,1.31,2.38,1.45c0.16,0.02,0.32,0.03,0.48,0.03c0.8,0,1.57-0.27,2.2-0.78l30.99-25.03c1.5-1.21,1.74-3.42,0.52-4.92 C54.13,15.78,51.93,15.55,50.42,16.76z"}));var Pg=R("svg",{viewBox:"0 0 100 100",class:"line-icon"},R("path",{d:"M80.2,55.5H21.4c-2.8,0-5.1-2.5-5.1-5.5l0,0c0-3,2.3-5.5,5.1-5.5h58.7c2.8,0,5.1,2.5,5.1,5.5l0,0C85.2,53.1,82.9,55.5,80.2,55.5z"}));var Eu=lo("n-checkbox-group"),WA={min:Number,max:Number,size:String,value:Array,defaultValue:{type:Array,default:null},disabled:{type:Boolean,default:void 0},"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array],onChange:{type:[Function,Array],validator:()=>!0,default:void 0}},AK=le({name:"CheckboxGroup",props:WA,setup(e){let{mergedClsPrefixRef:o}=Bo(e),t=Rt(e),{mergedSizeRef:r,mergedDisabledRef:a}=t,l=Z(e.defaultValue),n=V(()=>e.value),i=Zo(n,l),d=V(()=>{var f;return((f=i.value)===null||f===void 0?void 0:f.length)||0}),s=V(()=>Array.isArray(i.value)?new Set(i.value):new Set);function u(f,c){let{nTriggerFormInput:p,nTriggerFormChange:x}=t,{onChange:T,"onUpdate:value":C,onUpdateValue:S}=e;if(Array.isArray(i.value)){let D=Array.from(i.value),j=D.findIndex(O=>O===c);f?~j||(D.push(c),S&&Re(S,D),C&&Re(C,D),p(),x(),l.value=D,T&&Re(T,D)):~j&&(D.splice(j,1),S&&Re(S,D),C&&Re(C,D),T&&Re(T,D),l.value=D,p(),x())}else f?(S&&Re(S,[c]),C&&Re(C,[c]),T&&Re(T,[c]),l.value=[c],p(),x()):(S&&Re(S,[]),C&&Re(C,[]),T&&Re(T,[]),l.value=[],p(),x())}return qo(Eu,{checkedCountRef:d,maxRef:De(e,"max"),minRef:De(e,"min"),valueSetRef:s,disabledRef:a,mergedSizeRef:r,toggleCheckbox:u}),{mergedClsPrefix:o}},render(){return R("div",{class:`${this.mergedClsPrefix}-checkbox-group`,role:"group"},this.$slots)}});var Mg=Y([K("checkbox",` + `),Te("dashed",[X("border, state-border",{borderStyle:"dashed !important"})]),Te("disabled",{cursor:"not-allowed",opacity:"var(--n-opacity-disabled)"})]),Y("@keyframes button-wave-spread",{from:{boxShadow:"0 0 0.5px 0 var(--n-ripple-color)"},to:{boxShadow:"0 0 0.5px 4.5px var(--n-ripple-color)"}}),Y("@keyframes button-wave-opacity",{from:{opacity:"var(--n-wave-opacity)"},to:{opacity:0}})]);var QA=Object.assign(Object.assign({},ko.props),{color:String,textColor:String,text:Boolean,block:Boolean,loading:Boolean,disabled:Boolean,circle:Boolean,size:String,ghost:Boolean,round:Boolean,secondary:Boolean,tertiary:Boolean,quaternary:Boolean,strong:Boolean,focusable:{type:Boolean,default:!0},keyboard:{type:Boolean,default:!0},tag:{type:String,default:"button"},type:{type:String,default:"default"},dashed:Boolean,iconPlacement:{type:String,default:"left"},attrType:{type:String,default:"button"},bordered:{type:Boolean,default:!0},onClick:[Function,Array],internalAutoFocus:Boolean}),ZA=re({name:"Button",props:QA,setup(e){let o=Q(null),t=Q(null),r=Q(!1);no(()=>{let{value:C}=o;C&&!e.disabled&&e.focusable&&e.internalAutoFocus&&C.focus({preventScroll:!0})});let a=to(()=>!e.quaternary&&!e.tertiary&&!e.secondary&&!e.text&&(!e.color||e.ghost||e.dashed)&&e.bordered),l=be(Lg,{}),{mergedSizeRef:n}=vt({},{defaultSize:"medium",mergedSize:C=>{let{size:g}=e;if(g)return g;let{size:v}=l;if(v)return v;let{mergedSize:S}=C||{};return S?S.value:"medium"}}),i=W(()=>e.focusable&&!e.disabled),d=C=>{var g;C.preventDefault(),!e.disabled&&i.value&&((g=o.value)===null||g===void 0||g.focus({preventScroll:!0}))},s=C=>{var g;if(!e.disabled&&!e.loading){let{onClick:v}=e;v&&ye(v,C),e.text||(g=t.value)===null||g===void 0||g.play()}},u=C=>{switch(C.code){case"Enter":case"NumpadEnter":if(!e.keyboard)return;r.value=!1}},f=C=>{switch(C.code){case"Enter":case"NumpadEnter":if(!e.keyboard||e.loading){C.preventDefault();return}r.value=!0}},m=()=>{r.value=!1},{inlineThemeDisabled:p,mergedClsPrefixRef:c,mergedRtlRef:R}=Wo(e),b=ko("Button","-button",Ng,_o,e,c),h=Oa("Button",R,c),k=W(()=>{let C=b.value,{common:{cubicBezierEaseInOut:g,cubicBezierEaseOut:v},self:S}=C,{rippleDuration:F,opacityDisabled:B,fontWeight:y,fontWeightStrong:I}=S,E=n.value,{dashed:se,type:Se,ghost:Ee,text:me,color:ue,round:Fe,circle:Ge,textColor:Ye,secondary:$e,tertiary:ro,quaternary:Ke,strong:So}=e,bo={"font-weight":So?I:y},We={"--n-color":"initial","--n-color-hover":"initial","--n-color-pressed":"initial","--n-color-focus":"initial","--n-color-disabled":"initial","--n-ripple-color":"initial","--n-text-color":"initial","--n-text-color-hover":"initial","--n-text-color-pressed":"initial","--n-text-color-focus":"initial","--n-text-color-disabled":"initial"},qe=Se==="tertiary",go=Se==="default",Le=qe?"default":Se;if(me){let V=Ye||ue,Z=V||S[Me("textColorText",Le)];We={"--n-color":"#0000","--n-color-hover":"#0000","--n-color-pressed":"#0000","--n-color-focus":"#0000","--n-color-disabled":"#0000","--n-ripple-color":"#0000","--n-text-color":Z,"--n-text-color-hover":V?Yr(V):S[Me("textColorTextHover",Le)],"--n-text-color-pressed":V?nn(V):S[Me("textColorTextPressed",Le)],"--n-text-color-focus":V?Yr(V):S[Me("textColorTextHover",Le)],"--n-text-color-disabled":V||S[Me("textColorTextDisabled",Le)]}}else if(Ee||se){let V=Ye||ue;We={"--n-color":"#0000","--n-color-hover":"#0000","--n-color-pressed":"#0000","--n-color-focus":"#0000","--n-color-disabled":"#0000","--n-ripple-color":ue||S[Me("rippleColor",Le)],"--n-text-color":V||S[Me("textColorGhost",Le)],"--n-text-color-hover":V?Yr(V):S[Me("textColorGhostHover",Le)],"--n-text-color-pressed":V?nn(V):S[Me("textColorGhostPressed",Le)],"--n-text-color-focus":V?Yr(V):S[Me("textColorGhostHover",Le)],"--n-text-color-disabled":V||S[Me("textColorGhostDisabled",Le)]}}else if($e){let V=go?S.textColor:qe?S.textColorTertiary:S[Me("color",Le)],Z=ue||V,q=Se!=="default"&&Se!=="tertiary";We={"--n-color":q?oe(Z,{alpha:Number(S.colorOpacitySecondary)}):S.colorSecondary,"--n-color-hover":q?oe(Z,{alpha:Number(S.colorOpacitySecondaryHover)}):S.colorSecondaryHover,"--n-color-pressed":q?oe(Z,{alpha:Number(S.colorOpacitySecondaryPressed)}):S.colorSecondaryPressed,"--n-color-focus":q?oe(Z,{alpha:Number(S.colorOpacitySecondaryHover)}):S.colorSecondaryHover,"--n-color-disabled":S.colorSecondary,"--n-ripple-color":"#0000","--n-text-color":Z,"--n-text-color-hover":Z,"--n-text-color-pressed":Z,"--n-text-color-focus":Z,"--n-text-color-disabled":Z}}else if(ro||Ke){let V=go?S.textColor:qe?S.textColorTertiary:S[Me("color",Le)],Z=ue||V;ro?(We["--n-color"]=S.colorTertiary,We["--n-color-hover"]=S.colorTertiaryHover,We["--n-color-pressed"]=S.colorTertiaryPressed,We["--n-color-focus"]=S.colorSecondaryHover,We["--n-color-disabled"]=S.colorTertiary):(We["--n-color"]=S.colorQuaternary,We["--n-color-hover"]=S.colorQuaternaryHover,We["--n-color-pressed"]=S.colorQuaternaryPressed,We["--n-color-focus"]=S.colorQuaternaryHover,We["--n-color-disabled"]=S.colorQuaternary),We["--n-ripple-color"]="#0000",We["--n-text-color"]=Z,We["--n-text-color-hover"]=Z,We["--n-text-color-pressed"]=Z,We["--n-text-color-focus"]=Z,We["--n-text-color-disabled"]=Z}else We={"--n-color":ue||S[Me("color",Le)],"--n-color-hover":ue?Yr(ue):S[Me("colorHover",Le)],"--n-color-pressed":ue?nn(ue):S[Me("colorPressed",Le)],"--n-color-focus":ue?Yr(ue):S[Me("colorFocus",Le)],"--n-color-disabled":ue||S[Me("colorDisabled",Le)],"--n-ripple-color":ue||S[Me("rippleColor",Le)],"--n-text-color":Ye||(ue?S.textColorPrimary:qe?S.textColorTertiary:S[Me("textColor",Le)]),"--n-text-color-hover":Ye||(ue?S.textColorHoverPrimary:S[Me("textColorHover",Le)]),"--n-text-color-pressed":Ye||(ue?S.textColorPressedPrimary:S[Me("textColorPressed",Le)]),"--n-text-color-focus":Ye||(ue?S.textColorFocusPrimary:S[Me("textColorFocus",Le)]),"--n-text-color-disabled":Ye||(ue?S.textColorDisabledPrimary:S[Me("textColorDisabled",Le)])};let co={"--n-border":"initial","--n-border-hover":"initial","--n-border-pressed":"initial","--n-border-focus":"initial","--n-border-disabled":"initial"};me?co={"--n-border":"none","--n-border-hover":"none","--n-border-pressed":"none","--n-border-focus":"none","--n-border-disabled":"none"}:co={"--n-border":S[Me("border",Le)],"--n-border-hover":S[Me("borderHover",Le)],"--n-border-pressed":S[Me("borderPressed",Le)],"--n-border-focus":S[Me("borderFocus",Le)],"--n-border-disabled":S[Me("borderDisabled",Le)]};let{[Me("height",E)]:Ao,[Me("fontSize",E)]:Lo,[Me("padding",E)]:x,[Me("paddingRound",E)]:O,[Me("iconSize",E)]:N,[Me("borderRadius",E)]:j,[Me("iconMargin",E)]:U,waveOpacity:ae}=S,ee={"--n-width":Ge&&!me?Ao:"initial","--n-height":me?"initial":Ao,"--n-font-size":Lo,"--n-padding":Ge||me?"initial":Fe?O:x,"--n-icon-size":N,"--n-icon-margin":U,"--n-border-radius":me?"initial":Ge||Fe?Ao:j};return Object.assign(Object.assign(Object.assign(Object.assign({"--n-bezier":g,"--n-bezier-ease-out":v,"--n-ripple-duration":F,"--n-opacity-disabled":B,"--n-wave-opacity":ae},bo),We),co),ee)}),z=p?tt("button",W(()=>{let C="",{dashed:g,type:v,ghost:S,text:F,color:B,round:y,circle:I,textColor:E,secondary:se,tertiary:Se,quaternary:Ee,strong:me}=e;g&&(C+="a"),S&&(C+="b"),F&&(C+="c"),y&&(C+="d"),I&&(C+="e"),se&&(C+="f"),Se&&(C+="g"),Ee&&(C+="h"),me&&(C+="i"),B&&(C+="j"+Ml(B)),E&&(C+="k"+Ml(E));let{value:ue}=n;return C+="l"+ue[0],C+="m"+v[0],C}),k,e):void 0;return{selfElRef:o,waveElRef:t,mergedClsPrefix:c,mergedFocusable:i,mergedSize:n,showBorder:a,enterPressed:r,rtlEnabled:h,handleMousedown:d,handleKeydown:f,handleBlur:m,handleKeyup:u,handleClick:s,customColorCssVars:W(()=>{let{color:C}=e;if(!C)return null;let g=Yr(C);return{"--n-border-color":C,"--n-border-color-hover":g,"--n-border-color-pressed":nn(C),"--n-border-color-focus":g,"--n-border-color-disabled":C}}),cssVars:p?void 0:k,themeClass:z==null?void 0:z.themeClass,onRender:z==null?void 0:z.onRender}},render(){let{mergedClsPrefix:e,tag:o,onRender:t}=this;t==null||t();let r=Jt(this.$slots.default,a=>a&&w("span",{class:`${e}-button__content`},a));return w(o,{ref:"selfElRef",class:[this.themeClass,`${e}-button`,`${e}-button--${this.type}-type`,`${e}-button--${this.mergedSize}-type`,this.rtlEnabled&&`${e}-button--rtl`,this.disabled&&`${e}-button--disabled`,this.block&&`${e}-button--block`,this.enterPressed&&`${e}-button--pressed`,!this.text&&this.dashed&&`${e}-button--dashed`,this.color&&`${e}-button--color`,this.secondary&&`${e}-button--secondary`,this.loading&&`${e}-button--loading`,this.ghost&&`${e}-button--ghost`],tabindex:this.mergedFocusable?0:-1,type:this.attrType,style:this.cssVars,disabled:this.disabled,onClick:this.handleClick,onBlur:this.handleBlur,onMousedown:this.handleMousedown,onKeyup:this.handleKeyup,onKeydown:this.handleKeydown},this.iconPlacement==="right"&&r,w(rl,{width:!0},{default:()=>Jt(this.$slots.icon,a=>(this.loading||a)&&w("span",{class:`${e}-button__icon`,style:{margin:ui(this.$slots.default)?"0":""}},w(Dt,null,{default:()=>this.loading?w(Qr,{clsPrefix:e,key:"loading",class:`${e}-icon-slot`,strokeWidth:20}):w("div",{key:"icon",class:`${e}-icon-slot`,role:"none"},a)})))}),this.iconPlacement==="left"&&r,this.text?null:w(ld,{ref:"waveElRef",clsPrefix:e}),this.showBorder?w("div",{"aria-hidden":!0,class:`${e}-button__border`,style:this.customColorCssVars}):null,this.showBorder?w("div",{"aria-hidden":!0,class:`${e}-button__state-border`,style:this.customColorCssVars}):null)}}),bu=ZA;var _g={titleFontSize:"22px"};var yu=e=>{let{borderRadius:o,fontSize:t,lineHeight:r,textColor2:a,textColor1:l,textColorDisabled:n,dividerColor:i,fontWeightStrong:d,primaryColor:s,baseColor:u,hoverColor:f,cardColor:m,modalColor:p,popoverColor:c}=e;return Object.assign(Object.assign({},_g),{borderRadius:o,borderColor:ge(m,i),borderColorModal:ge(p,i),borderColorPopover:ge(c,i),textColor:a,titleFontWeight:d,titleTextColor:l,dayTextColor:n,fontSize:t,lineHeight:r,dateColorCurrent:s,dateTextColorCurrent:u,cellColorHover:ge(m,f),cellColorHoverModal:ge(p,f),cellColorHoverPopover:ge(c,f),cellColor:m,cellColorModal:p,cellColorPopover:c,barColor:s})},uK=Ie({name:"Calendar",common:xe,peers:{Button:_o},self:yu});var YA={name:"Calendar",common:P,peers:{Button:po},self:yu},vu=YA;var ku=e=>{let{fontSize:o,boxShadow2:t,popoverColor:r,textColor2:a,borderRadius:l,borderColor:n,heightSmall:i,heightMedium:d,heightLarge:s,fontSizeSmall:u,fontSizeMedium:f,fontSizeLarge:m,dividerColor:p}=e;return{panelFontSize:o,boxShadow:t,color:r,textColor:a,borderRadius:l,border:`1px solid ${n}`,heightSmall:i,heightMedium:d,heightLarge:s,fontSizeSmall:u,fontSizeMedium:f,fontSizeLarge:m,dividerColor:p}},OK=Ie({name:"ColorPicker",common:xe,peers:{Input:Rt,Button:_o},self:ku});var JA={name:"ColorPicker",common:P,peers:{Input:Co,Button:po},self:ku},Au=JA;var Ig={paddingSmall:"12px 16px 12px",paddingMedium:"19px 24px 20px",paddingLarge:"23px 32px 24px",paddingHuge:"27px 40px 28px",titleFontSizeSmall:"16px",titleFontSizeMedium:"18px",titleFontSizeLarge:"18px",titleFontSizeHuge:"18px",closeSize:"18px"};var Du=e=>{let{primaryColor:o,borderRadius:t,lineHeight:r,fontSize:a,cardColor:l,textColor2:n,textColor1:i,dividerColor:d,fontWeightStrong:s,closeColor:u,closeColorHover:f,closeColorPressed:m,modalColor:p,boxShadow1:c,popoverColor:R,actionColor:b}=e;return Object.assign(Object.assign({},Ig),{lineHeight:r,color:l,colorModal:p,colorPopover:R,colorTarget:o,colorEmbedded:b,textColor:n,titleTextColor:i,borderColor:d,actionColor:b,titleFontWeight:s,closeColor:u,closeColorHover:f,closeColorPressed:m,fontSizeSmall:a,fontSizeMedium:a,fontSizeLarge:a,fontSizeHuge:a,boxShadow:c,borderRadius:t})},XA={name:"Card",common:xe,self:Du},Pu=XA;var eD={name:"Card",common:P,self(e){let o=Du(e),{cardColor:t}=e;return o.colorEmbedded=t,o}},dn=eD;var Hg=e=>({dotSize:"8px",dotColor:"rgba(255, 255, 255, .3)",dotColorActive:"rgba(255, 255, 255, 1)",dotColorFocus:"rgba(255, 255, 255, .5)",dotLineWidth:"16px",dotLineWidthActive:"24px",arrowColor:"#eee"});var oD={name:"Carousel",common:P,self:Hg},Mu=oD;var Vg={sizeSmall:"14px",sizeMedium:"16px",sizeLarge:"18px",labelPadding:"0 8px"};var Bu=e=>{let{baseColor:o,inputColorDisabled:t,cardColor:r,modalColor:a,popoverColor:l,textColorDisabled:n,borderColor:i,primaryColor:d,textColor2:s,fontSizeSmall:u,fontSizeMedium:f,fontSizeLarge:m,borderRadiusSmall:p,lineHeight:c}=e;return Object.assign(Object.assign({},Vg),{labelLineHeight:c,fontSizeSmall:u,fontSizeMedium:f,fontSizeLarge:m,borderRadius:p,color:o,colorChecked:d,colorDisabled:t,colorDisabledChecked:t,colorTableHeader:r,colorTableHeaderModal:a,colorTableHeaderPopover:l,checkMarkColor:o,checkMarkColorDisabled:n,checkMarkColorDisabledChecked:n,border:`1px solid ${i}`,borderDisabled:`1px solid ${i}`,borderDisabledChecked:`1px solid ${i}`,borderChecked:`1px solid ${d}`,borderFocus:`1px solid ${d}`,boxShadowFocus:`0 0 0 2px ${oe(d,{alpha:.3})}`,textColor:s,textColorDisabled:n})},tD={name:"Checkbox",common:xe,self:Bu},Rr=tD;var rD={name:"Checkbox",common:P,self(e){let{cardColor:o}=e,t=Bu(e);return t.color="#0000",t.checkMarkColor=o,t}},Ht=rD;var Eu=e=>{let{borderRadius:o,boxShadow2:t,popoverColor:r,textColor2:a,textColor3:l,primaryColor:n,textColorDisabled:i,dividerColor:d,hoverColor:s,fontSizeMedium:u,heightMedium:f}=e;return{menuBorderRadius:o,menuColor:r,menuBoxShadow:t,menuDividerColor:d,menuHeight:"calc(var(--n-option-height) * 6.6)",optionArrowColor:l,optionHeight:f,optionFontSize:u,optionColorHover:s,optionTextColor:a,optionTextColorActive:n,optionTextColorDisabled:i,optionCheckMarkColor:n,loadingColor:n,columnWidth:"180px"}},f6=Ie({name:"Cascader",common:xe,peers:{InternalSelectMenu:Ra,InternalSelection:rn,Scrollbar:Mo,Checkbox:Rr,Empty:wt},self:Eu});var aD={name:"Cascader",common:P,peers:{InternalSelectMenu:_t,InternalSelection:Ca,Scrollbar:fo,Checkbox:Ht,Empty:wt},self:Eu},Lu=aD;var Wg=w("svg",{viewBox:"0 0 64 64",class:"check-icon"},w("path",{d:"M50.42,16.76L22.34,39.45l-8.1-11.46c-1.12-1.58-3.3-1.96-4.88-0.84c-1.58,1.12-1.95,3.3-0.84,4.88l10.26,14.51 c0.56,0.79,1.42,1.31,2.38,1.45c0.16,0.02,0.32,0.03,0.48,0.03c0.8,0,1.57-0.27,2.2-0.78l30.99-25.03c1.5-1.21,1.74-3.42,0.52-4.92 C54.13,15.78,51.93,15.55,50.42,16.76z"}));var zg=w("svg",{viewBox:"0 0 100 100",class:"line-icon"},w("path",{d:"M80.2,55.5H21.4c-2.8,0-5.1-2.5-5.1-5.5l0,0c0-3,2.3-5.5,5.1-5.5h58.7c2.8,0,5.1,2.5,5.1,5.5l0,0C85.2,53.1,82.9,55.5,80.2,55.5z"}));var Nu=uo("n-checkbox-group"),lD={min:Number,max:Number,size:String,value:Array,defaultValue:{type:Array,default:null},disabled:{type:Boolean,default:void 0},"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array],onChange:{type:[Function,Array],validator:()=>!0,default:void 0}},M6=re({name:"CheckboxGroup",props:lD,setup(e){let{mergedClsPrefixRef:o}=Wo(e),t=vt(e),{mergedSizeRef:r,mergedDisabledRef:a}=t,l=Q(e.defaultValue),n=W(()=>e.value),i=lt(n,l),d=W(()=>{var f;return((f=i.value)===null||f===void 0?void 0:f.length)||0}),s=W(()=>Array.isArray(i.value)?new Set(i.value):new Set);function u(f,m){let{nTriggerFormInput:p,nTriggerFormChange:c}=t,{onChange:R,"onUpdate:value":b,onUpdateValue:h}=e;if(Array.isArray(i.value)){let k=Array.from(i.value),z=k.findIndex(C=>C===m);f?~z||(k.push(m),h&&ye(h,k),b&&ye(b,k),p(),c(),l.value=k,R&&ye(R,k)):~z&&(k.splice(z,1),h&&ye(h,k),b&&ye(b,k),R&&ye(R,k),l.value=k,p(),c())}else f?(h&&ye(h,[m]),b&&ye(b,[m]),R&&ye(R,[m]),l.value=[m],p(),c()):(h&&ye(h,[]),b&&ye(b,[]),R&&ye(R,[]),l.value=[],p(),c())}return rt(Nu,{checkedCountRef:d,maxRef:_e(e,"max"),minRef:_e(e,"min"),valueSetRef:s,disabledRef:a,mergedSizeRef:r,toggleCheckbox:u}),{mergedClsPrefix:o}},render(){return w("div",{class:`${this.mergedClsPrefix}-checkbox-group`,role:"group"},this.$slots)}});var jg=Y([$("checkbox",` line-height: var(--n-label-line-height); font-size: var(--n-font-size); outline: none; @@ -622,39 +622,39 @@ ${o} align-items: flex-start; word-break: break-word; --n-merged-color-table: var(--n-color-table); - `,[Y("&:hover",[K("checkbox-box",[J("border",{border:"var(--n-border-checked)"})])]),Y("&:focus:not(:active)",[K("checkbox-box",[J("border",` + `,[Y("&:hover",[$("checkbox-box",[X("border",{border:"var(--n-border-checked)"})])]),Y("&:focus:not(:active)",[$("checkbox-box",[X("border",` border: var(--n-border-focus); box-shadow: var(--n-box-shadow-focus); - `)])]),xe("inside-table",[K("checkbox-box",` + `)])]),Te("inside-table",[$("checkbox-box",` background-color: var(--n-merged-color-table); - `)]),xe("checked",[K("checkbox-box",` + `)]),Te("checked",[$("checkbox-box",` background-color: var(--n-color-checked); - `,[K("checkbox-icon",[Y(".check-icon",` + `,[$("checkbox-icon",[Y(".check-icon",` opacity: 1; transform: scale(1); - `)])])]),xe("indeterminate",[K("checkbox-box",[K("checkbox-icon",[Y(".check-icon",` + `)])])]),Te("indeterminate",[$("checkbox-box",[$("checkbox-icon",[Y(".check-icon",` opacity: 0; transform: scale(.5); `),Y(".line-icon",` opacity: 1; transform: scale(1); - `)])])]),xe("checked, indeterminate",[Y("&:focus:not(:active)",[K("checkbox-box",[J("border",` + `)])])]),Te("checked, indeterminate",[Y("&:focus:not(:active)",[$("checkbox-box",[X("border",` border: var(--n-border-checked); box-shadow: var(--n-box-shadow-focus); - `)])]),K("checkbox-box",` + `)])]),$("checkbox-box",` background-color: var(--n-color-checked); border-left: 0; border-top: 0; - `,[J("border",{border:"var(--n-border-checked)"})])]),xe("disabled",{cursor:"not-allowed"},[xe("checked",[K("checkbox-box",` + `,[X("border",{border:"var(--n-border-checked)"})])]),Te("disabled",{cursor:"not-allowed"},[Te("checked",[$("checkbox-box",` background-color: var(--n-color-disabled-checked); - `,[J("border",{border:"var(--n-border-disabled-checked)"}),K("checkbox-icon",[Y(".check-icon, .line-icon",{fill:"var(--n-check-mark-color-disabled-checked)"})])])]),K("checkbox-box",` + `,[X("border",{border:"var(--n-border-disabled-checked)"}),$("checkbox-icon",[Y(".check-icon, .line-icon",{fill:"var(--n-check-mark-color-disabled-checked)"})])])]),$("checkbox-box",` background-color: var(--n-color-disabled); - `,[J("border",{border:"var(--n-border-disabled)"}),K("checkbox-icon",[Y(".check-icon, .line-icon",{fill:"var(--n-check-mark-color-disabled)"})])]),J("label",{color:"var(--n-text-color-disabled)"})]),K("checkbox-box-wrapper",` + `,[X("border",{border:"var(--n-border-disabled)"}),$("checkbox-icon",[Y(".check-icon, .line-icon",{fill:"var(--n-check-mark-color-disabled)"})])]),X("label",{color:"var(--n-text-color-disabled)"})]),$("checkbox-box-wrapper",` position: relative; width: var(--n-size); flex-shrink: 0; flex-grow: 0; - `),K("checkbox-box",` + `),$("checkbox-box",` position: absolute; left: 0; top: 50%; @@ -666,7 +666,7 @@ ${o} border-radius: var(--n-border-radius); background-color: var(--n-color); transition: background-color 0.3s var(--n-bezier); - `,[J("border",` + `,[X("border",` transition: border-color .3s var(--n-bezier), box-shadow .3s var(--n-bezier); @@ -677,7 +677,7 @@ ${o} top: 0; bottom: 0; border: var(--n-border); - `),K("checkbox-icon",` + `),$("checkbox-icon",` display: flex; align-items: center; justify-content: center; @@ -697,16 +697,16 @@ ${o} transform 0.3s var(--n-bezier), opacity 0.3s var(--n-bezier), border-color 0.3s var(--n-bezier); - `),ut({left:"1px",top:"1px"})])]),J("label",` + `),gt({left:"1px",top:"1px"})])]),X("label",` color: var(--n-text-color); transition: color .3s var(--n-bezier); user-select: none; padding: var(--n-label-padding); - `,[Y("&:empty",{display:"none"})])]),pi(K("checkbox",` + `,[Y("&:empty",{display:"none"})])]),ci($("checkbox",` --n-merged-color-table: var(--n-color-table-modal); - `)),mi(K("checkbox",` + `)),hi($("checkbox",` --n-merged-color-table: var(--n-color-table-popover); - `))]);var VA=Object.assign(Object.assign({},Fo.props),{size:String,checked:{type:[Boolean,String,Number],default:void 0},defaultChecked:{type:[Boolean,String,Number],default:!1},value:[String,Number],disabled:{type:Boolean,default:void 0},indeterminate:Boolean,label:String,focusable:{type:Boolean,default:!0},checkedValue:{type:[Boolean,String,Number],default:!0},uncheckedValue:{type:[Boolean,String,Number],default:!1},"onUpdate:checked":[Function,Array],onUpdateChecked:[Function,Array],privateInsideTable:Boolean,onChange:[Function,Array]}),Nu=le({name:"Checkbox",props:VA,setup(e){let o=Z(null),{mergedClsPrefixRef:t,inlineThemeDisabled:r,mergedRtlRef:a}=Bo(e),l=Rt(e,{mergedSize(v){let{size:w}=e;if(w!==void 0)return w;if(d){let{value:F}=d.mergedSizeRef;if(F!==void 0)return F}if(v){let{mergedSize:F}=v;if(F!==void 0)return F.value}return"medium"},mergedDisabled(v){let{disabled:w}=e;if(w!==void 0)return w;if(d){if(d.disabledRef.value)return!0;let{maxRef:{value:F},checkedCountRef:B}=d;if(F!==void 0&&B.value>=F&&!c.value)return!0;let{minRef:{value:y}}=d;if(y!==void 0&&B.value<=y&&c.value)return!0}return v?v.disabled.value:!1}}),{mergedDisabledRef:n,mergedSizeRef:i}=l,d=Te(Eu,null),s=Z(e.defaultChecked),u=De(e,"checked"),f=Zo(u,s),c=Ye(()=>{if(d){let v=d.valueSetRef.value;return v&&e.value!==void 0?v.has(e.value):!1}else return f.value===e.checkedValue}),p=Fo("Checkbox","-checkbox",Mg,mr,e,t);function x(v){if(d&&e.value!==void 0)d.toggleCheckbox(!c.value,e.value);else{let{onChange:w,"onUpdate:checked":F,onUpdateChecked:B}=e,{nTriggerFormInput:y,nTriggerFormChange:W}=l,_=c.value?e.uncheckedValue:e.checkedValue;F&&Re(F,_,v),B&&Re(B,_,v),w&&Re(w,_,v),y(),W(),s.value=_}}function T(v){n.value||x(v)}function C(v){if(!n.value)switch(v.code){case"Space":case"Enter":case"NumpadEnter":x(v)}}function S(v){switch(v.code){case"Space":v.preventDefault()}}let D={focus:()=>{var v;(v=o.value)===null||v===void 0||v.focus()},blur:()=>{var v;(v=o.value)===null||v===void 0||v.blur()}},j=ha("Checkbox",a,t),O=V(()=>{let{value:v}=i,{common:{cubicBezierEaseInOut:w},self:{borderRadius:F,color:B,colorChecked:y,colorDisabled:W,colorTableHeader:_,colorTableHeaderModal:ae,colorTableHeaderPopover:he,checkMarkColor:Me,checkMarkColorDisabled:de,border:ie,borderFocus:ge,borderDisabled:Ve,borderChecked:Ke,boxShadowFocus:He,textColor:Je,textColorDisabled:Qe,checkMarkColorDisabledChecked:wo,colorDisabledChecked:Do,borderDisabledChecked:Be,labelPadding:We,labelLineHeight:ho,[ve("fontSize",v)]:we,[ve("size",v)]:qe}}=p.value;return{"--n-label-line-height":ho,"--n-size":qe,"--n-bezier":w,"--n-border-radius":F,"--n-border":ie,"--n-border-checked":Ke,"--n-border-focus":ge,"--n-border-disabled":Ve,"--n-border-disabled-checked":Be,"--n-box-shadow-focus":He,"--n-color":B,"--n-color-checked":y,"--n-color-table":_,"--n-color-table-modal":ae,"--n-color-table-popover":he,"--n-color-disabled":W,"--n-color-disabled-checked":Do,"--n-text-color":Je,"--n-text-color-disabled":Qe,"--n-check-mark-color":Me,"--n-check-mark-color-disabled":de,"--n-check-mark-color-disabled-checked":wo,"--n-font-size":we,"--n-label-padding":We}}),g=r?Ko("checkbox",V(()=>i.value[0]),O,e):void 0;return Object.assign(l,D,{rtlEnabled:j,selfRef:o,mergedClsPrefix:t,mergedDisabled:n,renderedChecked:c,mergedTheme:p,labelId:gs(),handleClick:T,handleKeyUp:C,handleKeyDown:S,cssVars:r?void 0:O,themeClass:g==null?void 0:g.themeClass,onRender:g==null?void 0:g.onRender})},render(){var e;let{$slots:o,renderedChecked:t,mergedDisabled:r,indeterminate:a,privateInsideTable:l,cssVars:n,labelId:i,label:d,mergedClsPrefix:s,focusable:u,handleKeyUp:f,handleKeyDown:c,handleClick:p}=this;return(e=this.onRender)===null||e===void 0||e.call(this),R("div",{ref:"selfRef",class:[`${s}-checkbox`,this.themeClass,this.rtlEnabled&&`${s}-checkbox--rtl`,t&&`${s}-checkbox--checked`,r&&`${s}-checkbox--disabled`,a&&`${s}-checkbox--indeterminate`,l&&`${s}-checkbox--inside-table`],tabindex:r||!u?void 0:0,role:"checkbox","aria-checked":a?"mixed":t,"aria-labelledby":i,style:n,onKeyup:f,onKeydown:c,onClick:p,onMousedown:()=>{So("selectstart",window,x=>{x.preventDefault()},{once:!0})}},R("div",{class:`${s}-checkbox-box-wrapper`},"\xA0",R("div",{class:`${s}-checkbox-box`},R(Ct,null,{default:()=>this.indeterminate?R("div",{key:"indeterminate",class:`${s}-checkbox-icon`},Pg):R("div",{key:"check",class:`${s}-checkbox-icon`},Dg)}),R("div",{class:`${s}-checkbox-box__border`}))),d!==null||o.default?R("span",{class:`${s}-checkbox__label`,id:i},o.default?o.default():d):null)}});var zA={name:"Code",common:P,self(e){let{textColor2:o,fontSize:t,fontWeightStrong:r}=e;return{textColor:o,fontSize:t,fontWeightStrong:r,"mono-3":"#5c6370","hue-1":"#56b6c2","hue-2":"#61aeee","hue-3":"#c678dd","hue-4":"#98c379","hue-5":"#e06c75","hue-5-2":"#be5046","hue-6":"#d19a66","hue-6-2":"#e6c07b"}}},dn=zA;var Bg=e=>{let{fontWeight:o,textColor1:t,textColor2:r,dividerColor:a,fontSize:l}=e;return{titleFontSize:l,titleFontWeight:o,dividerColor:a,titleTextColor:t,fontSize:l,textColor:r,arrowColor:r}};var jA={name:"Collapse",common:P,self:Bg},_u=jA;var Lg=e=>{let{cubicBezierEaseInOut:o}=e;return{bezier:o}};var $A={name:"CollapseTransition",common:P,self:Lg},Iu=$A;var Eg={abstract:Boolean,bordered:{type:Boolean,default:void 0},clsPrefix:String,locale:Object,dateLocale:Object,namespace:String,rtl:Array,tag:{type:String,default:"div"},hljs:Object,theme:Object,themeOverrides:Object,componentOptions:Object,icons:Object,breakpoints:Object,inlineThemeDisabled:{type:Boolean,default:void 0},as:{type:String,validator:()=>(li("config-provider","`as` is deprecated, please use `tag` instead."),!0),default:void 0}},Hu=le({name:"ConfigProvider",alias:["App"],props:Eg,setup(e){let o=Te(Yo,null),t=V(()=>{let{theme:p}=e;if(p===null)return;let x=o==null?void 0:o.mergedThemeRef.value;return p===void 0?x:x===void 0?p:Object.assign({},x,p)}),r=V(()=>{let{themeOverrides:p}=e;if(p!==null){if(p===void 0)return o==null?void 0:o.mergedThemeOverridesRef.value;{let x=o==null?void 0:o.mergedThemeOverridesRef.value;return x===void 0?p:Vr({},x,p)}}}),a=Ye(()=>{let{namespace:p}=e;return p===void 0?o==null?void 0:o.mergedNamespaceRef.value:p}),l=Ye(()=>{let{bordered:p}=e;return p===void 0?o==null?void 0:o.mergedBorderedRef.value:p}),n=V(()=>{let{icons:p}=e;return p===void 0?o==null?void 0:o.mergedIconsRef.value:p}),i=V(()=>{let{componentOptions:p}=e;return p!==void 0?p:o==null?void 0:o.mergedComponentPropsRef.value}),d=V(()=>{let{clsPrefix:p}=e;return p!==void 0?p:o==null?void 0:o.mergedClsPrefixRef.value}),s=V(()=>{var p;let{rtl:x}=e;if(x===void 0)return o==null?void 0:o.mergedRtlRef.value;let T={};for(let C of x)T[C.name]=Zr(C),(p=C.peers)===null||p===void 0||p.forEach(S=>{S.name in T||(T[S.name]=Zr(S))});return T}),u=V(()=>e.breakpoints||(o==null?void 0:o.mergedBreakpointsRef.value)),f=e.inlineThemeDisabled||(o==null?void 0:o.inlineThemeDisabled),c=V(()=>{let{value:p}=t,{value:x}=r,T=x&&Object.keys(x).length!==0,C=p==null?void 0:p.name;return C?T?`${C}-${st(JSON.stringify(r.value))}`:C:T?st(JSON.stringify(r.value)):""});return qo(Yo,{mergedThemeHashRef:c,mergedBreakpointsRef:u,mergedRtlRef:s,mergedIconsRef:n,mergedComponentPropsRef:i,mergedBorderedRef:l,mergedNamespaceRef:a,mergedClsPrefixRef:d,mergedLocaleRef:V(()=>{let{locale:p}=e;if(p!==null)return p===void 0?o==null?void 0:o.mergedLocaleRef.value:p}),mergedDateLocaleRef:V(()=>{let{dateLocale:p}=e;if(p!==null)return p===void 0?o==null?void 0:o.mergedDateLocaleRef.value:p}),mergedHljsRef:V(()=>{let{hljs:p}=e;return p===void 0?o==null?void 0:o.mergedHljsRef.value:p}),mergedThemeRef:t,mergedThemeOverridesRef:r,inlineThemeDisabled:f||!1}),{mergedClsPrefix:d,mergedBordered:l,mergedNamespace:a,mergedTheme:t,mergedThemeOverrides:r}},render(){var e,o,t,r;return this.abstract?(r=(t=this.$slots).default)===null||r===void 0?void 0:r.call(t):R(this.as||this.tag,{class:`${this.mergedClsPrefix||Ki}-config-provider`},(o=(e=this.$slots).default)===null||o===void 0?void 0:o.call(e))}});function Wu(e){let{boxShadow2:o}=e;return{menuBoxShadow:o}}var UA=Pe({name:"Select",common:pe,peers:{InternalSelection:tn,InternalSelectMenu:xa},self:Wu}),Vu=UA;var KA={name:"Select",common:P,peers:{InternalSelection:ga,InternalSelectMenu:Pt},self:Wu},sn=KA;var Ng={itemSize:"28px",itemPadding:"0 4px",itemMargin:"0 0 0 8px",itemMarginRtl:"0 8px 0 0",buttonIconSize:"16px",inputWidth:"60px",selectWidth:"unset",inputMargin:"0 0 0 8px",inputMarginRtl:"0 8px 0 0",selectMargin:"0 0 0 8px",prefixMargin:"0 8px 0 0",suffixMargin:"0 0 0 8px",jumperFontSize:"14px"};var zu=e=>{let{textColor2:o,primaryColor:t,primaryColorHover:r,primaryColorPressed:a,inputColorDisabled:l,textColorDisabled:n,borderColor:i,borderRadius:d,fontSize:s}=e;return Object.assign(Object.assign({},Ng),{buttonColor:"#0000",buttonColorHover:"#0000",buttonColorPressed:"#0000",buttonBorder:`1px solid ${i}`,buttonBorderHover:`1px solid ${i}`,buttonBorderPressed:`1px solid ${i}`,buttonIconColor:o,buttonIconColorHover:o,buttonIconColorPressed:o,itemTextColor:o,itemTextColorHover:r,itemTextColorPressed:a,itemTextColorActive:t,itemTextColorDisabled:n,itemColor:"#0000",itemColorHover:"#0000",itemColorPressed:"#0000",itemColorActive:"#0000",itemColorActiveHover:"#0000",itemColorDisabled:l,itemBorder:"1px solid #0000",itemBorderHover:"1px solid #0000",itemBorderPressed:"1px solid #0000",itemBorderActive:`1px solid ${t}`,itemBorderDisabled:`1px solid ${i}`,itemBorderRadius:d,itemFontSize:s,jumperTextColor:o,jumperTextColorDisabled:n})},GA=Pe({name:"Pagination",common:pe,peers:{Select:Vu,Input:mt},self:zu}),ju=GA;var qA={name:"Pagination",common:P,peers:{Select:sn,Input:go},self(e){let{primaryColor:o,opacity3:t}=e,r=X(o,{alpha:Number(t)}),a=zu(e);return a.itemBorderActive=`1px solid ${r}`,a.itemBorderDisabled="1px solid #0000",a}},un=qA;var dd={padding:"8px 14px"};var QA={name:"Tooltip",common:P,peers:{Popover:Jo},self(e){let{borderRadius:o,boxShadow2:t,popoverColor:r,textColor2:a}=e;return Object.assign(Object.assign({},dd),{borderRadius:o,boxShadow:t,color:r,textColor:a})}},Jt=QA;var ZA=e=>{let{borderRadius:o,boxShadow2:t,baseColor:r}=e;return Object.assign(Object.assign({},dd),{borderRadius:o,boxShadow:t,color:me(r,"rgba(0, 0, 0, .85)"),textColor:r})},YA=Pe({name:"Tooltip",common:pe,peers:{Popover:Mt},self:ZA}),fn=YA;var JA={name:"Ellipsis",common:P,peers:{Tooltip:Jt}},pn=JA;var XA=Pe({name:"Ellipsis",common:pe,peers:{Tooltip:fn}}),$u=XA;var sd={radioSizeSmall:"14px",radioSizeMedium:"16px",radioSizeLarge:"18px",labelPadding:"0 8px"};var eD={name:"Radio",common:P,self(e){let{borderColor:o,primaryColor:t,baseColor:r,textColorDisabled:a,inputColorDisabled:l,textColor2:n,opacityDisabled:i,borderRadius:d,fontSizeSmall:s,fontSizeMedium:u,fontSizeLarge:f,heightSmall:c,heightMedium:p,heightLarge:x,lineHeight:T}=e;return Object.assign(Object.assign({},sd),{labelLineHeight:T,buttonHeightSmall:c,buttonHeightMedium:p,buttonHeightLarge:x,fontSizeSmall:s,fontSizeMedium:u,fontSizeLarge:f,boxShadow:`inset 0 0 0 1px ${o}`,boxShadowActive:`inset 0 0 0 1px ${t}`,boxShadowFocus:`inset 0 0 0 1px ${t}, 0 0 0 2px ${X(t,{alpha:.3})}`,boxShadowHover:`inset 0 0 0 1px ${t}`,boxShadowDisabled:`inset 0 0 0 1px ${o}`,color:"#0000",colorDisabled:l,textColor:n,textColorDisabled:a,dotColorActive:t,dotColorDisabled:o,buttonBorderColor:o,buttonBorderColorActive:t,buttonBorderColorHover:t,buttonColor:"#0000",buttonColorActive:t,buttonTextColor:n,buttonTextColorActive:r,buttonTextColorHover:t,opacityDisabled:i,buttonBoxShadowFocus:`inset 0 0 0 1px ${t}, 0 0 0 2px ${X(t,{alpha:.3})}`,buttonBoxShadowHover:`inset 0 0 0 1px ${t}`,buttonBoxShadow:"inset 0 0 0 1px #0000",buttonBorderRadius:d})}},mn=eD;var oD=e=>{let{borderColor:o,primaryColor:t,baseColor:r,textColorDisabled:a,inputColorDisabled:l,textColor2:n,opacityDisabled:i,borderRadius:d,fontSizeSmall:s,fontSizeMedium:u,fontSizeLarge:f,heightSmall:c,heightMedium:p,heightLarge:x,lineHeight:T}=e;return Object.assign(Object.assign({},sd),{labelLineHeight:T,buttonHeightSmall:c,buttonHeightMedium:p,buttonHeightLarge:x,fontSizeSmall:s,fontSizeMedium:u,fontSizeLarge:f,boxShadow:`inset 0 0 0 1px ${o}`,boxShadowActive:`inset 0 0 0 1px ${t}`,boxShadowFocus:`inset 0 0 0 1px ${t}, 0 0 0 2px ${X(t,{alpha:.2})}`,boxShadowHover:`inset 0 0 0 1px ${t}`,boxShadowDisabled:`inset 0 0 0 1px ${o}`,color:r,colorDisabled:l,textColor:n,textColorDisabled:a,dotColorActive:t,dotColorDisabled:o,buttonBorderColor:o,buttonBorderColorActive:t,buttonBorderColorHover:o,buttonColor:r,buttonColorActive:r,buttonTextColor:n,buttonTextColorActive:t,buttonTextColorHover:t,opacityDisabled:i,buttonBoxShadowFocus:`inset 0 0 0 1px ${t}, 0 0 0 2px ${X(t,{alpha:.3})}`,buttonBoxShadowHover:"inset 0 0 0 1px #0000",buttonBoxShadow:"inset 0 0 0 1px #0000",buttonBorderRadius:d})},tD={name:"Radio",common:pe,self:oD},Uu=tD;var _g={thPaddingSmall:"8px",thPaddingMedium:"12px",thPaddingLarge:"12px",tdPaddingSmall:"8px",tdPaddingMedium:"12px",tdPaddingLarge:"12px",sorterSize:"15px",filterSize:"15px",paginationMargin:"12px 0 0 0",emptyPadding:"48px 0",actionPadding:"8px 12px",actionButtonMargin:"0 8px 0 0"};var Ku=e=>{let{cardColor:o,modalColor:t,popoverColor:r,textColor2:a,textColor1:l,tableHeaderColor:n,tableColorHover:i,iconColor:d,primaryColor:s,fontWeightStrong:u,borderRadius:f,lineHeight:c,fontSizeSmall:p,fontSizeMedium:x,fontSizeLarge:T,dividerColor:C,heightSmall:S,opacityDisabled:D,tableColorStriped:j}=e;return Object.assign(Object.assign({},_g),{actionDividerColor:C,lineHeight:c,borderRadius:f,fontSizeSmall:p,fontSizeMedium:x,fontSizeLarge:T,borderColor:me(o,C),tdColorHover:me(o,i),tdColorStriped:me(o,j),thColor:me(o,n),thColorHover:me(me(o,n),i),tdColor:o,tdTextColor:a,thTextColor:l,thFontWeight:u,thButtonColorHover:i,thIconColor:d,thIconColorActive:s,borderColorModal:me(t,C),tdColorHoverModal:me(t,i),tdColorStripedModal:me(t,j),thColorModal:me(t,n),thColorHoverModal:me(me(t,n),i),tdColorModal:t,borderColorPopover:me(r,C),tdColorHoverPopover:me(r,i),tdColorStripedPopover:me(r,j),thColorPopover:me(r,n),thColorHoverPopover:me(me(r,n),i),tdColorPopover:r,boxShadowBefore:"inset -12px 0 8px -12px rgba(0, 0, 0, .18)",boxShadowAfter:"inset 12px 0 8px -12px rgba(0, 0, 0, .18)",loadingColor:s,loadingSize:S,opacityLoading:D})},QG=Pe({name:"DataTable",common:pe,peers:{Button:Ao,Checkbox:mr,Radio:Uu,Pagination:ju,Scrollbar:bo,Empty:ft,Popover:Mt,Ellipsis:$u},self:Ku});var rD={name:"DataTable",common:P,peers:{Button:io,Checkbox:Bt,Radio:mn,Pagination:un,Scrollbar:no,Empty:pt,Popover:Jo,Ellipsis:pn},self(e){let o=Ku(e);return o.boxShadowAfter="inset 12px 0 8px -12px rgba(0, 0, 0, .36)",o.boxShadowBefore="inset -12px 0 8px -12px rgba(0, 0, 0, .36)",o}},Gu=rD;var Ig={padding:"4px 0",optionIconSizeSmall:"14px",optionIconSizeMedium:"16px",optionIconSizeLarge:"16px",optionIconSizeHuge:"18px",optionSuffixWidthSmall:"14px",optionSuffixWidthMedium:"14px",optionSuffixWidthLarge:"16px",optionSuffixWidthHuge:"16px",optionIconSuffixWidthSmall:"32px",optionIconSuffixWidthMedium:"32px",optionIconSuffixWidthLarge:"36px",optionIconSuffixWidthHuge:"36px",optionPrefixWidthSmall:"14px",optionPrefixWidthMedium:"14px",optionPrefixWidthLarge:"16px",optionPrefixWidthHuge:"16px",optionIconPrefixWidthSmall:"36px",optionIconPrefixWidthMedium:"36px",optionIconPrefixWidthLarge:"40px",optionIconPrefixWidthHuge:"40px"};var qu=e=>{let{primaryColor:o,textColor2:t,dividerColor:r,hoverColor:a,popoverColor:l,invertedColor:n,borderRadius:i,fontSizeSmall:d,fontSizeMedium:s,fontSizeLarge:u,fontSizeHuge:f,heightSmall:c,heightMedium:p,heightLarge:x,heightHuge:T,textColor3:C,opacityDisabled:S}=e;return Object.assign(Object.assign({},Ig),{optionHeightSmall:c,optionHeightMedium:p,optionHeightLarge:x,optionHeightHuge:T,borderRadius:i,fontSizeSmall:d,fontSizeMedium:s,fontSizeLarge:u,fontSizeHuge:f,optionTextColor:t,optionTextColorHover:t,optionTextColorActive:o,optionTextColorChildActive:o,color:l,dividerColor:r,suffixColor:t,prefixColor:t,optionColorHover:a,optionColorActive:X(o,{alpha:.1}),groupHeaderTextColor:C,optionTextColorInverted:"#BBB",optionTextColorHoverInverted:"#FFF",optionTextColorActiveInverted:"#FFF",optionTextColorChildActiveInverted:"#FFF",colorInverted:n,dividerColorInverted:"#BBB",suffixColorInverted:"#BBB",prefixColorInverted:"#BBB",optionColorHoverInverted:o,optionColorActiveInverted:o,groupHeaderTextColorInverted:"#AAA",optionOpacityDisabled:S})},aD=Pe({name:"Dropdown",common:pe,peers:{Popover:Mt},self:qu}),Qu=aD;var lD={name:"Dropdown",common:P,peers:{Popover:Jo},self(e){let{primaryColorSuppl:o,primaryColor:t,popoverColor:r}=e,a=qu(e);return a.colorInverted=r,a.optionColorActive=X(t,{alpha:.15}),a.optionColorActiveInverted=o,a.optionColorHoverInverted=o,a}},cn=lD;var Hg=e=>{let{textColorBase:o,opacity1:t,opacity2:r,opacity3:a,opacity4:l,opacity5:n}=e;return{color:o,opacity1Depth:t,opacity2Depth:r,opacity3Depth:a,opacity4Depth:l,opacity5Depth:n}};var nD={name:"Icon",common:P,self:Hg},Zu=nD;var Wg={itemFontSize:"12px",itemHeight:"36px",itemWidth:"52px",panelActionPadding:"8px 0"};var Yu=e=>{let{popoverColor:o,textColor2:t,primaryColor:r,hoverColor:a,dividerColor:l,opacityDisabled:n,boxShadow2:i,borderRadius:d,iconColor:s,iconColorDisabled:u}=e;return Object.assign(Object.assign({},Wg),{panelColor:o,panelBoxShadow:i,panelDividerColor:l,itemTextColor:t,itemTextColorActive:r,itemColorHover:a,itemOpacityDisabled:n,itemBorderRadius:d,borderRadius:d,iconColor:s,iconColorDisabled:u})},iD=Pe({name:"TimePicker",common:pe,peers:{Scrollbar:bo,Button:Ao,Input:mt},self:Yu}),Ju=iD;var dD={name:"TimePicker",common:P,peers:{Scrollbar:no,Button:io,Input:go},self:Yu},xn=dD;var Vg={itemSize:"24px",itemCellWidth:"38px",itemCellHeight:"32px",scrollItemWidth:"80px",scrollItemHeight:"40px",panelExtraFooterPadding:"8px 12px",panelActionPadding:"8px 12px",calendarTitlePadding:"0",calendarTitleHeight:"28px",arrowSize:"14px",panelHeaderPadding:"8px 12px",calendarDaysHeight:"32px",calendarTitleGridTempateColumns:"28px 28px 1fr 28px 28px",calendarLeftPaddingDate:"6px 12px 4px 12px",calendarLeftPaddingDatetime:"4px 12px",calendarLeftPaddingDaterange:"6px 12px 4px 12px",calendarLeftPaddingDatetimerange:"4px 12px",calendarLeftPaddingMonth:"0",calendarLeftPaddingYear:"0",calendarLeftPaddingQuarter:"0",calendarRightPaddingDate:"6px 12px 4px 12px",calendarRightPaddingDatetime:"4px 12px",calendarRightPaddingDaterange:"6px 12px 4px 12px",calendarRightPaddingDatetimerange:"4px 12px",calendarRightPaddingMonth:"0",calendarRightPaddingYear:"0",calendarRightPaddingQuarter:"0"};var Xu=e=>{let{hoverColor:o,fontSize:t,textColor2:r,textColorDisabled:a,popoverColor:l,primaryColor:n,borderRadiusSmall:i,iconColor:d,iconColorDisabled:s,textColor1:u,dividerColor:f,boxShadow2:c,borderRadius:p,fontWeightStrong:x}=e;return Object.assign(Object.assign({},Vg),{itemFontSize:t,calendarDaysFontSize:t,calendarTitleFontSize:t,itemTextColor:r,itemTextColorDisabled:a,itemTextColorActive:l,itemTextColorCurrent:n,itemColorIncluded:X(n,{alpha:.1}),itemColorHover:o,itemColorDisabled:o,itemColorActive:n,itemBorderRadius:i,panelColor:l,panelTextColor:r,arrowColor:d,calendarTitleTextColor:u,calendarTitleColorHover:o,calendarDaysTextColor:r,panelHeaderDividerColor:f,calendarDaysDividerColor:f,calendarDividerColor:f,panelActionDividerColor:f,panelBoxShadow:c,panelBorderRadius:p,calendarTitleFontWeight:x,scrollItemBorderRadius:p,iconColor:d,iconColorDisabled:s})},r9=Pe({name:"DatePicker",common:pe,peers:{Input:mt,Button:Ao,TimePicker:Ju,Scrollbar:bo},self:Xu});var sD={name:"DatePicker",common:P,peers:{Input:go,Button:io,TimePicker:xn,Scrollbar:no},self(e){let{popoverColor:o,hoverColor:t,primaryColor:r}=e,a=Xu(e);return a.itemColorDisabled=me(o,t),a.itemColorIncluded=X(r,{alpha:.15}),a.itemColorHover=me(o,t),a}},ef=sD;var zg={thPaddingBorderedSmall:"8px 12px",thPaddingBorderedMedium:"12px 16px",thPaddingBorderedLarge:"16px 24px",thPaddingSmall:"0",thPaddingMedium:"0",thPaddingLarge:"0",tdPaddingBorderedSmall:"8px 12px",tdPaddingBorderedMedium:"12px 16px",tdPaddingBorderedLarge:"16px 24px",tdPaddingSmall:"0 0 8px 0",tdPaddingMedium:"0 0 12px 0",tdPaddingLarge:"0 0 16px 0"};var jg=e=>{let{tableHeaderColor:o,textColor2:t,textColor1:r,cardColor:a,modalColor:l,popoverColor:n,dividerColor:i,borderRadius:d,fontWeightStrong:s,lineHeight:u,fontSizeSmall:f,fontSizeMedium:c,fontSizeLarge:p}=e;return Object.assign(Object.assign({},zg),{lineHeight:u,fontSizeSmall:f,fontSizeMedium:c,fontSizeLarge:p,titleTextColor:r,thColor:me(a,o),thColorModal:me(l,o),thColorPopover:me(n,o),thTextColor:r,thFontWeight:s,tdTextColor:t,tdColor:a,tdColorModal:l,tdColorPopover:n,borderColor:me(a,i),borderColorModal:me(l,i),borderColorPopover:me(n,i),borderRadius:d})};var uD={name:"Descriptions",common:P,self:jg},of=uD;var $g={titleFontSize:"18px",padding:"16px 28px 20px 28px",iconSize:"28px",actionSpace:"12px",contentMargin:"8px 0 16px 0",iconMargin:"0 4px 0 0",iconMarginIconTop:"4px 0 8px 0",closeSize:"18px",closeMargin:"22px 28px 0 0",closeMarginIconTop:"12px 18px 0 0"};var tf=e=>{let{textColor1:o,textColor2:t,modalColor:r,closeColor:a,closeColorHover:l,closeColorPressed:n,infoColor:i,successColor:d,warningColor:s,errorColor:u,primaryColor:f,dividerColor:c,borderRadius:p,fontWeightStrong:x,lineHeight:T,fontSize:C}=e;return Object.assign(Object.assign({},$g),{fontSize:C,lineHeight:T,border:`1px solid ${c}`,titleTextColor:o,textColor:t,color:r,closeColor:a,closeColorHover:l,closeColorPressed:n,iconColor:f,iconColorInfo:i,iconColorSuccess:d,iconColorWarning:s,iconColorError:u,borderRadius:p,titleFontWeight:x})},fD=Pe({name:"Dialog",common:pe,peers:{Button:Ao},self:tf}),rf=fD;var pD={name:"Dialog",common:P,peers:{Button:io},self:tf},hn=pD;var af=e=>{let{modalColor:o,textColor2:t,boxShadow3:r}=e;return{color:o,textColor:t,boxShadow:r}},z9=Pe({name:"Modal",common:pe,peers:{Scrollbar:bo,Dialog:rf,Card:Du},self:af});var mD={name:"Modal",common:P,peers:{Scrollbar:no,Dialog:hn,Card:nn},self:af},lf=mD;var Ug=e=>{let{textColor1:o,dividerColor:t,fontWeightStrong:r}=e;return{textColor:o,color:t,fontWeight:r}};var cD={name:"Divider",common:P,self:Ug},nf=cD;var df=e=>{let{modalColor:o,textColor1:t,textColor2:r,boxShadow3:a,lineHeight:l,fontWeightStrong:n,dividerColor:i,closeColor:d,closeColorHover:s,closeColorPressed:u}=e;return{bodyPadding:"16px 24px",headerPadding:"16px 24px",footerPadding:"16px 24px",color:o,textColor:r,titleTextColor:t,titleFontSize:"18px",titleFontWeight:n,boxShadow:a,lineHeight:l,headerBorderBottom:`1px solid ${i}`,footerBorderTop:`1px solid ${i}`,closeColor:d,closeColorHover:s,closeColorPressed:u,closeSize:"18px"}},i7=Pe({name:"Drawer",common:pe,peers:{Scrollbar:bo},self:df});var xD={name:"Drawer",common:P,peers:{Scrollbar:no},self:df},sf=xD;var Kg={actionMargin:"0 0 0 20px",actionMarginRtl:"0 20px 0 0"};var hD={name:"DynamicInput",common:P,peers:{Input:go,Button:io},self(){return Kg}},uf=hD;var Gg={gapSmall:"4px 8px",gapMedium:"8px 12px",gapLarge:"12px 16px"};var SD={name:"Space",self(){return Gg}},Sn=SD;var gD={name:"DynamicTags",common:P,peers:{Input:go,Button:io,Tag:on,Space:Sn},self(){return{inputWidth:"64px"}}},ff=gD;var wD={name:"Element",common:P},pf=wD;var qg={feedbackPadding:"4px 0 0 2px",feedbackHeightSmall:"24px",feedbackHeightMedium:"24px",feedbackHeightLarge:"26px",feedbackFontSizeSmall:"13px",feedbackFontSizeMedium:"14px",feedbackFontSizeLarge:"14px",labelFontSizeLeftSmall:"14px",labelFontSizeLeftMedium:"14px",labelFontSizeLeftLarge:"15px",labelFontSizeTopSmall:"13px",labelFontSizeTopMedium:"14px",labelFontSizeTopLarge:"14px",labelHeightSmall:"24px",labelHeightMedium:"26px",labelHeightLarge:"28px",labelPaddingVertical:"0 0 8px 2px",labelPaddingHorizontal:"0 12px 0 0",labelTextAlignVertical:"left",labelTextAlignHorizontal:"right"};var Qg=e=>{let{heightSmall:o,heightMedium:t,heightLarge:r,textColor1:a,errorColor:l,warningColor:n,lineHeight:i,textColor3:d}=e;return Object.assign(Object.assign({},qg),{blankHeightSmall:o,blankHeightMedium:t,blankHeightLarge:r,lineHeight:i,labelTextColor:a,asteriskColor:l,feedbackTextColorError:l,feedbackTextColorWarning:n,feedbackTextColor:d})};var TD={name:"Form",common:P,self:Qg},mf=TD;var RD={name:"GradientText",common:P,self(e){let{primaryColor:o,successColor:t,warningColor:r,errorColor:a,infoColor:l,primaryColorSuppl:n,successColorSuppl:i,warningColorSuppl:d,errorColorSuppl:s,infoColorSuppl:u,fontWeightStrong:f}=e;return{fontWeight:f,rotate:"252deg",colorStartPrimary:o,colorEndPrimary:n,colorStartInfo:l,colorEndInfo:u,colorStartWarning:r,colorEndWarning:d,colorStartError:a,colorEndError:s,colorStartSuccess:t,colorEndSuccess:i}}},cf=RD;var Zg=e=>{let{primaryColor:o,baseColor:t}=e;return{color:o,iconColor:t}};var FD={name:"IconWrapper",common:P,self:Zg},xf=FD;var OD={name:"ButtonGroup",common:P},hf=OD;var CD={name:"InputNumber",common:P,peers:{Button:io,Input:go},self(e){let{textColorDisabled:o}=e;return{iconColorDisabled:o}}},Sf=CD;var bD={name:"Layout",common:P,peers:{Scrollbar:no},self(e){let{textColor2:o,bodyColor:t,popoverColor:r,cardColor:a,dividerColor:l,scrollbarColor:n,scrollbarColorHover:i}=e;return{textColor:o,textColorInverted:o,color:t,colorEmbedded:t,headerColor:a,headerColorInverted:a,footerColor:a,footerColorInverted:a,headerBorderColor:l,headerBorderColorInverted:l,footerBorderColor:l,footerBorderColorInverted:l,siderBorderColor:l,siderBorderColorInverted:l,siderColor:a,siderColorInverted:a,siderToggleButtonBorder:"1px solid transparent",siderToggleButtonColor:r,siderToggleButtonIconColor:o,siderToggleButtonIconColorInverted:o,siderToggleBarColor:me(t,n),siderToggleBarColorHover:me(t,i),__invertScrollbar:"false"}}},gf=bD;var Yg=e=>{let{textColor2:o,cardColor:t,modalColor:r,popoverColor:a,dividerColor:l,borderRadius:n,fontSize:i}=e;return{textColor:o,color:t,colorModal:r,colorPopover:a,borderColor:l,borderColorModal:me(r,l),borderColorPopover:me(a,l),borderRadius:n,fontSize:i}};var yD={name:"List",common:P,self:Yg},wf=yD;var vD={name:"LoadingBar",common:P,self(e){let{primaryColor:o}=e;return{colorError:"red",colorLoading:o,height:"2px"}}},Tf=vD;var kD={name:"Log",common:P,peers:{Scrollbar:no,Code:dn},self(e){let{textColor2:o,inputColor:t,fontSize:r,primaryColor:a}=e;return{loaderFontSize:r,loaderTextColor:o,loaderColor:t,loaderBorder:"1px solid #0000",loadingColor:a}}},Rf=kD;var AD={name:"Mention",common:P,peers:{InternalSelectMenu:Pt,Input:go},self(e){let{boxShadow2:o}=e;return{menuBoxShadow:o}}},Ff=AD;function DD(e,o,t,r){return{itemColorHoverInverted:"#0000",itemColorActiveInverted:o,itemColorActiveHoverInverted:o,itemColorActiveCollapsedInverted:o,itemTextColorInverted:e,itemTextColorHoverInverted:t,itemTextColorChildActiveInverted:t,itemTextColorActiveInverted:t,itemTextColorActiveHoverInverted:t,itemTextColorHorizontalInverted:e,itemTextColorHoverHorizontalInverted:t,itemTextColorChildActiveHorizontalInverted:t,itemTextColorActiveHorizontalInverted:t,itemTextColorActiveHoverHorizontalInverted:t,itemIconColorInverted:e,itemIconColorHoverInverted:t,itemIconColorActiveInverted:t,itemIconColorActiveHoverInverted:t,itemIconColorChildActiveInverted:t,itemIconColorCollapsedInverted:e,itemIconColorHorizontalInverted:e,itemIconColorHoverHorizontalInverted:t,itemIconColorActiveHorizontalInverted:t,itemIconColorActiveHoverHorizontalInverted:t,itemIconColorChildActiveHorizontalInverted:t,arrowColorInverted:e,arrowColorHoverInverted:t,arrowColorActiveInverted:t,arrowColorActiveHoverInverted:t,arrowColorChildActiveInverted:t,groupTextColorInverted:r}}var Of=e=>{let{borderRadius:o,textColor3:t,primaryColor:r,textColor2:a,textColor1:l,fontSize:n,dividerColor:i,hoverColor:d,primaryColorHover:s}=e;return Object.assign({borderRadius:o,color:"#0000",groupTextColor:t,itemColorHover:d,itemColorActive:X(r,{alpha:.1}),itemColorActiveHover:X(r,{alpha:.1}),itemColorActiveCollapsed:X(r,{alpha:.1}),itemTextColor:a,itemTextColorHover:a,itemTextColorActive:r,itemTextColorActiveHover:r,itemTextColorChildActive:r,itemTextColorHorizontal:a,itemTextColorHoverHorizontal:s,itemTextColorActiveHorizontal:r,itemTextColorActiveHoverHorizontal:r,itemTextColorChildActiveHorizontal:r,itemIconColor:l,itemIconColorHover:l,itemIconColorActive:r,itemIconColorActiveHover:r,itemIconColorChildActive:r,itemIconColorCollapsed:l,itemIconColorHorizontal:l,itemIconColorHoverHorizontal:s,itemIconColorActiveHorizontal:r,itemIconColorActiveHoverHorizontal:r,itemIconColorChildActiveHorizontal:r,itemHeight:"42px",arrowColor:a,arrowColorHover:a,arrowColorActive:r,arrowColorActiveHover:r,arrowColorChildActive:r,colorInverted:"#0000",borderColorHorizontal:"#0000",fontSize:n,dividerColor:i},DD("#BBB",r,"#FFF","#AAA"))},qq=Pe({name:"Menu",common:pe,peers:{Tooltip:fn,Dropdown:Qu},self:Of});var PD={name:"Menu",common:P,peers:{Tooltip:Jt,Dropdown:cn},self(e){let{primaryColor:o,primaryColorSuppl:t}=e,r=Of(e);return r.itemColorActive=X(o,{alpha:.15}),r.itemColorActiveHover=X(o,{alpha:.15}),r.itemColorActiveCollapsed=X(o,{alpha:.15}),r.itemColorActiveInverted=t,r.itemColorActiveHoverInverted=t,r.itemColorActiveCollapsedInverted=t,r}},Cf=PD;var Jg={margin:"0 0 8px 0",padding:"10px 20px",maxWidth:"720px",minWidth:"420px",iconMargin:"0 10px 0 0",closeMargin:"0 0 0 12px",closeSize:"16px",iconSize:"20px",fontSize:"14px"};var Xg=e=>{let{textColor2:o,closeColor:t,closeColorHover:r,closeColorPressed:a,infoColor:l,successColor:n,errorColor:i,warningColor:d,popoverColor:s,boxShadow2:u,primaryColor:f,lineHeight:c,borderRadius:p}=e;return Object.assign(Object.assign({},Jg),{textColor:o,textColorInfo:o,textColorSuccess:o,textColorError:o,textColorWarning:o,textColorLoading:o,color:s,colorInfo:s,colorSuccess:s,colorError:s,colorWarning:s,colorLoading:s,boxShadow:u,boxShadowInfo:u,boxShadowSuccess:u,boxShadowError:u,boxShadowWarning:u,boxShadowLoading:u,iconColor:o,iconColorInfo:l,iconColorSuccess:n,iconColorWarning:d,iconColorError:i,iconColorLoading:f,closeColor:t,closeColorHover:r,closeColorPressed:a,closeColorInfo:t,closeColorHoverInfo:r,closeColorPressedInfo:a,closeColorSuccess:t,closeColorHoverSuccess:r,closeColorPressedSuccess:a,closeColorError:t,closeColorHoverError:r,closeColorPressedError:a,closeColorWarning:t,closeColorHoverWarning:r,closeColorPressedWarning:a,closeColorLoading:t,closeColorHoverLoading:r,closeColorPressedLoading:a,loadingColor:f,lineHeight:c,borderRadius:p})};var MD={name:"Message",common:P,self:Xg},bf=MD;var ew={closeMargin:"18px 14px",closeSize:"16px",width:"365px",padding:"16px"};var yf=e=>{let{textColor2:o,successColor:t,infoColor:r,warningColor:a,errorColor:l,popoverColor:n,closeColor:i,closeColorHover:d,textColor1:s,textColor3:u,borderRadius:f,fontWeightStrong:c,boxShadow2:p,lineHeight:x,fontSize:T}=e;return Object.assign(Object.assign({},ew),{borderRadius:f,lineHeight:x,fontSize:T,headerFontWeight:c,iconColor:o,iconColorSuccess:t,iconColorInfo:r,iconColorWarning:a,iconColorError:l,color:n,textColor:o,closeColor:i,closeColorHover:d,closeColorPressed:i,headerTextColor:s,descriptionTextColor:u,actionTextColor:o,boxShadow:p})},SQ=Pe({name:"Notification",common:pe,peers:{Scrollbar:bo},self:yf});var BD={name:"Notification",common:P,peers:{Scrollbar:no},self:yf},vf=BD;var ow={titleFontSize:"18px",backSize:"22px"};function kf(e){let{textColor1:o,textColor2:t,textColor3:r,fontSize:a,fontWeightStrong:l,primaryColorHover:n,primaryColorPressed:i}=e;return Object.assign(Object.assign({},ow),{titleFontWeight:l,fontSize:a,titleTextColor:o,backColor:t,backColorHover:n,backColorPressed:i,subtitleTextColor:r})}var AQ=Pe({name:"PageHeader",common:pe,self:kf});var Af={name:"PageHeader",common:P,self:kf};var tw={iconSize:"22px"};var Df=e=>{let{fontSize:o,warningColor:t}=e;return Object.assign(Object.assign({},tw),{fontSize:o,iconColor:t})},zQ=Pe({name:"Popconfirm",common:pe,peers:{Button:Ao,Popover:Mt},self:Df});var LD={name:"Popconfirm",common:P,peers:{Button:io,Popover:Jo},self:Df},Pf=LD;var ED={name:"Popselect",common:P,peers:{Popover:Jo,InternalSelectMenu:Pt}},Mf=ED;var Bf=e=>{let{infoColor:o,successColor:t,warningColor:r,errorColor:a,textColor2:l,progressRailColor:n,fontSize:i,fontWeight:d}=e;return{fontSize:i,fontSizeCircle:"28px",fontWeightCircle:d,railColor:n,railHeight:"8px",iconSizeCircle:"36px",iconSizeLine:"18px",iconColor:o,iconColorInfo:o,iconColorSuccess:t,iconColorWarning:r,iconColorError:a,textColorCircle:l,textColorLineInner:"rgb(255, 255, 255)",textColorLineOuter:l,fillColor:o,fillColorInfo:o,fillColorSuccess:t,fillColorWarning:r,fillColorError:a,lineBgProcessing:"linear-gradient(90deg, rgba(255, 255, 255, .3) 0%, rgba(255, 255, 255, .5) 100%)"}},ND={name:"Progress",common:pe,self:Bf},Lf=ND;var _D={name:"Progress",common:P,self(e){let o=Bf(e);return o.textColorLineInner="rgb(0, 0, 0)",o.lineBgProcessing="linear-gradient(90deg, rgba(255, 255, 255, .3) 0%, rgba(255, 255, 255, .5) 100%)",o}},gn=_D;var ID={name:"Rate",common:P,self(e){let{railColor:o}=e;return{itemColor:o,itemColorActive:"#CCAA33",itemSize:"20px",sizeSmall:"16px",sizeMedium:"20px",sizeLarge:"24px"}}},Ef=ID;var rw={titleFontSizeSmall:"26px",titleFontSizeMedium:"32px",titleFontSizeLarge:"40px",titleFontSizeHuge:"48px",fontSizeSmall:"14px",fontSizeMedium:"14px",fontSizeLarge:"15px",fontSizeHuge:"16px",iconSizeSmall:"64px",iconSizeMedium:"80px",iconSizeLarge:"100px",iconSizeHuge:"125px",iconColor418:void 0,iconColor404:void 0,iconColor403:void 0,iconColor500:void 0};var aw=e=>{let{textColor2:o,textColor1:t,errorColor:r,successColor:a,infoColor:l,warningColor:n,lineHeight:i,fontWeightStrong:d}=e;return Object.assign(Object.assign({},rw),{lineHeight:i,titleFontWeight:d,titleTextColor:t,textColor:o,iconColorError:r,iconColorSuccess:a,iconColorInfo:l,iconColorWarning:n})};var HD={name:"Result",common:P,self:aw},Nf=HD;var ud={railHeight:"4px",railWidthVertical:"4px",handleSize:"18px",dotHeight:"8px",dotWidth:"8px",dotBorderRadius:"4px"};var WD={name:"Slider",common:P,self(e){let o="0 2px 8px 0 rgba(0, 0, 0, 0.12)",{railColor:t,modalColor:r,primaryColorSuppl:a,popoverColor:l,textColor2:n,cardColor:i,borderRadius:d,fontSize:s,opacityDisabled:u}=e;return Object.assign(Object.assign({},ud),{fontSize:s,railColor:t,railColorHover:t,fillColor:a,fillColorHover:a,opacityDisabled:u,handleColor:"#FFF",dotColor:i,dotColorModal:r,dotColorPopover:l,handleBoxShadow:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",handleBoxShadowHover:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",handleBoxShadowActive:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",handleBoxShadowFocus:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",indicatorColor:l,indicatorBoxShadow:o,indicatorTextColor:n,indicatorBorderRadius:d,dotBorder:`2px solid ${t}`,dotBorderActive:`2px solid ${a}`,dotBoxShadow:""})}},_f=WD;var VD=e=>{let o="rgba(0, 0, 0, .85)",t="0 2px 8px 0 rgba(0, 0, 0, 0.12)",{railColor:r,primaryColor:a,baseColor:l,cardColor:n,modalColor:i,popoverColor:d,borderRadius:s,fontSize:u,opacityDisabled:f}=e;return Object.assign(Object.assign({},ud),{fontSize:u,railColor:r,railColorHover:r,fillColor:a,fillColorHover:a,opacityDisabled:f,handleColor:"#FFF",dotColor:n,dotColorModal:i,dotColorPopover:d,handleBoxShadow:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",handleBoxShadowHover:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",handleBoxShadowActive:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",handleBoxShadowFocus:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",indicatorColor:o,indicatorBoxShadow:t,indicatorTextColor:l,indicatorBorderRadius:s,dotBorder:`2px solid ${r}`,dotBorderActive:`2px solid ${a}`,dotBoxShadow:""})},zD={name:"Slider",common:pe,self:VD},If=zD;var lw=e=>{let{opacityDisabled:o,heightTiny:t,heightSmall:r,heightMedium:a,heightLarge:l,heightHuge:n,primaryColor:i,fontSize:d}=e;return{fontSize:d,textColor:i,sizeTiny:t,sizeSmall:r,sizeMedium:a,sizeLarge:l,sizeHuge:n,color:i,opacitySpinning:o}};var jD={name:"Spin",common:P,self:lw},Hf=jD;var nw=e=>{let{textColor2:o,textColor3:t,fontSize:r,fontWeight:a}=e;return{labelFontSize:r,labelFontWeight:a,valueFontWeight:a,labelTextColor:t,valuePrefixTextColor:o,valueSuffixTextColor:o,valueTextColor:o}};var $D={name:"Statistic",common:P,self:nw},Wf=$D;var iw={stepHeaderFontSizeSmall:"14px",stepHeaderFontSizeMedium:"16px",indicatorIndexFontSizeSmall:"14px",indicatorIndexFontSizeMedium:"16px",indicatorSizeSmall:"22px",indicatorSizeMedium:"28px",indicatorIconSizeSmall:"14px",indicatorIconSizeMedium:"18px"};var dw=e=>{let{fontWeightStrong:o,baseColor:t,textColorDisabled:r,primaryColor:a,errorColor:l,textColor1:n,textColor2:i}=e;return Object.assign(Object.assign({},iw),{stepHeaderFontWeight:o,indicatorTextColorProcess:t,indicatorTextColorWait:r,indicatorTextColorFinish:a,indicatorTextColorError:l,indicatorBorderColorProcess:a,indicatorBorderColorWait:r,indicatorBorderColorFinish:a,indicatorBorderColorError:l,indicatorColorProcess:a,indicatorColorWait:"#0000",indicatorColorFinish:"#0000",indicatorColorError:"#0000",splitorColorProcess:r,splitorColorWait:r,splitorColorFinish:a,splitorColorError:r,headerTextColorProcess:n,headerTextColorWait:r,headerTextColorFinish:r,headerTextColorError:l,descriptionTextColorProcess:i,descriptionTextColorWait:r,descriptionTextColorFinish:r,descriptionTextColorError:l})};var UD={name:"Steps",common:P,self:dw},Vf=UD;var sw={buttonHeightSmall:"14px",buttonHeightMedium:"18px",buttonHeightLarge:"22px",buttonWidthSmall:"14px",buttonWidthMedium:"18px",buttonWidthLarge:"22px",buttonWidthPressedSmall:"20px",buttonWidthPressedMedium:"24px",buttonWidthPressedLarge:"28px",railHeightSmall:"18px",railHeightMedium:"22px",railHeightLarge:"26px",railWidthSmall:"32px",railWidthMedium:"40px",railWidthLarge:"48px"};var KD={name:"Switch",common:P,self(e){let{primaryColorSuppl:o,opacityDisabled:t,borderRadius:r,primaryColor:a,textColor2:l,baseColor:n}=e,i="rgba(255, 255, 255, .20)";return Object.assign(Object.assign({},sw),{iconColor:n,textColor:l,loadingColor:o,opacityDisabled:t,railColor:i,railColorActive:o,buttonBoxShadow:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",buttonColor:"#FFF",railBorderRadiusSmall:r,railBorderRadiusMedium:r,railBorderRadiusLarge:r,buttonBorderRadiusSmall:r,buttonBorderRadiusMedium:r,buttonBorderRadiusLarge:r,boxShadowFocus:`0 0 8px 0 ${X(a,{alpha:.3})}`})}},zf=KD;var uw={thPaddingSmall:"6px",thPaddingMedium:"12px",thPaddingLarge:"12px",tdPaddingSmall:"6px",tdPaddingMedium:"12px",tdPaddingLarge:"12px"};var fw=e=>{let{dividerColor:o,cardColor:t,modalColor:r,popoverColor:a,tableHeaderColor:l,tableColorStriped:n,textColor1:i,textColor2:d,borderRadius:s,fontWeightStrong:u,lineHeight:f,fontSizeSmall:c,fontSizeMedium:p,fontSizeLarge:x}=e;return Object.assign(Object.assign({},uw),{fontSizeSmall:c,fontSizeMedium:p,fontSizeLarge:x,lineHeight:f,borderRadius:s,borderColor:me(t,o),borderColorModal:me(r,o),borderColorPopover:me(a,o),tdColor:t,tdColorModal:r,tdColorPopover:a,tdColorStriped:me(t,n),tdColorStripedModal:me(r,n),tdColorStripedPopover:me(a,n),thColor:me(t,l),thColorModal:me(r,l),thColorPopover:me(a,l),thTextColor:i,tdTextColor:d,thFontWeight:u})};var GD={name:"Table",common:P,self:fw},jf=GD;var pw={tabFontSizeSmall:"14px",tabFontSizeMedium:"14px",tabFontSizeLarge:"16px",tabGapSmallLine:"36px",tabGapMediumLine:"36px",tabGapLargeLine:"36px",tabPaddingSmallLine:"6px 0",tabPaddingMediumLine:"10px 0",tabPaddingLargeLine:"14px 0",tabGapSmallBar:"36px",tabGapMediumBar:"36px",tabGapLargeBar:"36px",tabPaddingSmallBar:"4px 0",tabPaddingMediumBar:"6px 0",tabPaddingLargeBar:"10px 0",tabGapSmallCard:"4px",tabGapMediumCard:"4px",tabGapLargeCard:"4px",tabPaddingSmallCard:"6px 10px",tabPaddingMediumCard:"8px 12px",tabPaddingLargeCard:"8px 16px",tabPaddingSmallSegment:"4px 0",tabPaddingMediumSegment:"6px 0",tabPaddingLargeSegment:"8px 0",tabGapSmallSegment:"0",tabGapMediumSegment:"0",tabGapLargeSegment:"0",panePaddingSmall:"8px 0 0 0",panePaddingMedium:"12px 0 0 0",panePaddingLarge:"16px 0 0 0"};var mw=e=>{let{textColor2:o,primaryColor:t,textColorDisabled:r,closeColor:a,closeColorHover:l,closeColorPressed:n,tabColor:i,baseColor:d,dividerColor:s,fontWeight:u,textColor1:f,borderRadius:c,fontSize:p,fontWeightStrong:x}=e;return Object.assign(Object.assign({},pw),{colorSegment:i,tabFontSizeCard:p,tabTextColorLine:f,tabTextColorActiveLine:t,tabTextColorHoverLine:t,tabTextColorDisabledLine:r,tabTextColorSegment:f,tabTextColorActiveSegment:o,tabTextColorHoverSegment:o,tabTextColorDisabledSegment:r,tabTextColorBar:f,tabTextColorActiveBar:t,tabTextColorHoverBar:t,tabTextColorDisabledBar:r,tabTextColorCard:f,tabTextColorHoverCard:f,tabTextColorActiveCard:t,tabTextColorDisabledCard:r,barColor:t,closeColor:a,closeColorHover:l,closeColorPressed:n,tabColor:i,tabColorSegment:d,tabBorderColor:s,tabFontWeightActive:u,tabFontWeight:u,tabBorderRadius:c,paneTextColor:o,fontWeightStrong:x})};var qD={name:"Tabs",common:P,self(e){let o=mw(e),{inputColor:t}=e;return o.colorSegment=t,o.tabColorSegment=t,o}},$f=qD;var cw=e=>{let{textColor1:o,textColor2:t,fontWeightStrong:r,fontSize:a}=e;return{fontSize:a,titleTextColor:o,textColor:t,titleFontWeight:r}};var QD={name:"Thing",common:P,self:cw},Uf=QD;var xw={titleMarginMedium:"0",titleMarginLarge:"-2px 0 0 0",titleFontSizeMedium:"14px",titleFontSizeLarge:"16px",iconSizeMedium:"14px",iconSizeLarge:"14px"};var ZD={name:"Timeline",common:P,self(e){let{textColor3:o,infoColorSuppl:t,errorColorSuppl:r,successColorSuppl:a,warningColorSuppl:l,textColor1:n,textColor2:i,railColor:d,fontWeightStrong:s,fontSize:u}=e;return Object.assign(Object.assign({},xw),{contentFontSize:u,titleFontWeight:s,circleBorder:`2px solid ${o}`,circleBorderInfo:`2px solid ${t}`,circleBorderError:`2px solid ${r}`,circleBorderSuccess:`2px solid ${a}`,circleBorderWarning:`2px solid ${l}`,iconColor:o,iconColorInfo:t,iconColorError:r,iconColorSuccess:a,iconColorWarning:l,titleTextColor:n,contentTextColor:i,metaTextColor:o,lineColor:d})}},Kf=ZD;var hw={extraFontSize:"12px",width:"440px"};var YD={name:"Transfer",common:P,peers:{Checkbox:Bt,Scrollbar:no,Input:go,Empty:pt,Button:io},self(e){let{iconColorDisabled:o,iconColor:t,fontWeight:r,fontSizeLarge:a,fontSizeMedium:l,fontSizeSmall:n,heightLarge:i,heightMedium:d,heightSmall:s,borderRadius:u,inputColor:f,tableHeaderColor:c,textColor1:p,textColorDisabled:x,textColor2:T,hoverColor:C}=e;return Object.assign(Object.assign({},hw),{itemHeightSmall:s,itemHeightMedium:d,itemHeightLarge:i,fontSizeSmall:n,fontSizeMedium:l,fontSizeLarge:a,borderRadius:u,borderColor:"#0000",listColor:f,headerColor:c,titleTextColor:p,titleTextColorDisabled:x,extraTextColor:T,filterDividerColor:"#0000",itemTextColor:T,itemTextColorDisabled:x,itemColorPending:C,titleFontWeight:r,iconColor:t,iconColorDisabled:o})}},Gf=YD;var qf=e=>{let{borderRadiusSmall:o,hoverColor:t,pressedColor:r,primaryColor:a,textColor3:l,textColor2:n,textColorDisabled:i,fontSize:d}=e;return{fontSize:d,nodeBorderRadius:o,nodeColorHover:t,nodeColorPressed:r,nodeColorActive:X(a,{alpha:.1}),arrowColor:l,nodeTextColor:n,nodeTextColorDisabled:i,loadingColor:a,dropMarkColor:a}},JD=Pe({name:"Tree",common:pe,peers:{Checkbox:mr,Scrollbar:bo,Empty:ft},self:qf}),Qf=JD;var XD={name:"Tree",common:P,peers:{Checkbox:Bt,Scrollbar:no,Empty:pt},self(e){let{primaryColor:o}=e,t=qf(e);return t.nodeColorActive=X(o,{alpha:.15}),t}},wn=XD;var eP={name:"TreeSelect",common:P,peers:{Tree:wn,Empty:pt,InternalSelection:ga}},Zf=eP;var Sw={headerFontSize1:"30px",headerFontSize2:"22px",headerFontSize3:"18px",headerFontSize4:"16px",headerFontSize5:"16px",headerFontSize6:"16px",headerMargin1:"28px 0 20px 0",headerMargin2:"28px 0 20px 0",headerMargin3:"28px 0 20px 0",headerMargin4:"28px 0 18px 0",headerMargin5:"28px 0 18px 0",headerMargin6:"28px 0 18px 0",headerPrefixWidth1:"16px",headerPrefixWidth2:"16px",headerPrefixWidth3:"12px",headerPrefixWidth4:"12px",headerPrefixWidth5:"12px",headerPrefixWidth6:"12px",headerBarWidth1:"4px",headerBarWidth2:"4px",headerBarWidth3:"3px",headerBarWidth4:"3px",headerBarWidth5:"3px",headerBarWidth6:"3px",pMargin:"16px 0 16px 0",liMargin:".25em 0 0 0",olPadding:"0 0 0 2em",ulPadding:"0 0 0 2em"};var gw=e=>{let{primaryColor:o,textColor2:t,borderColor:r,lineHeight:a,fontSize:l,borderRadiusSmall:n,dividerColor:i,fontWeightStrong:d,textColor1:s,textColor3:u,infoColor:f,warningColor:c,errorColor:p,successColor:x,codeColor:T}=e;return Object.assign(Object.assign({},Sw),{aTextColor:o,blockquoteTextColor:t,blockquotePrefixColor:r,blockquoteLineHeight:a,blockquoteFontSize:l,codeBorderRadius:n,liTextColor:t,liLineHeight:a,liFontSize:l,hrColor:i,headerFontWeight:d,headerTextColor:s,pTextColor:t,pTextColor1Depth:s,pTextColor2Depth:t,pTextColor3Depth:u,pLineHeight:a,pFontSize:l,headerBarColor:o,headerBarColorPrimary:o,headerBarColorInfo:f,headerBarColorError:p,headerBarColorWarning:c,headerBarColorSuccess:x,textColor:t,textColor1Depth:s,textColor2Depth:t,textColor3Depth:u,textColorPrimary:o,textColorInfo:f,textColorSuccess:x,textColorWarning:c,textColorError:p,codeTextColor:t,codeColor:T,codeBorder:"1px solid #0000"})};var oP={name:"Typography",common:P,self:gw},Yf=oP;var Jf=e=>{let{iconColor:o,primaryColor:t,errorColor:r,textColor2:a,successColor:l,opacityDisabled:n,actionColor:i,borderColor:d,hoverColor:s,lineHeight:u,borderRadius:f,fontSize:c}=e;return{fontSize:c,lineHeight:u,borderRadius:f,draggerColor:i,draggerBorder:`1px dashed ${d}`,draggerBorderHover:`1px dashed ${t}`,itemColorHover:s,itemColorHoverError:X(r,{alpha:.06}),itemTextColor:a,itemTextColorError:r,itemTextColorSuccess:l,itemIconColor:o,itemDisabledOpacity:n,itemBorderImageCardError:`1px solid ${r}`,itemBorderImageCard:`1px solid ${d}`}},AJ=Pe({name:"Upload",common:pe,peers:{Button:Ao,Progress:Lf},self:Jf});var tP={name:"Upload",common:P,peers:{Button:io,Progress:gn},self(e){let{errorColor:o}=e,t=Jf(e);return t.itemColorHoverError=X(o,{alpha:.09}),t}},Xf=tP;var rP={name:"Watermark",common:P,self(e){let{fontFamily:o}=e;return{fontFamily:o}}},ep=rP;var op={name:"Image",common:P,peers:{Tooltip:Jt},self:e=>{let{textColor2:o}=e;return{toolbarIconColor:o,toolbarColor:"rgba(0, 0, 0, .35)",toolbarBoxShadow:"none",toolbarBorderRadius:"24px"}}};var tp={name:"Skeleton",common:P,self(e){let{heightSmall:o,heightMedium:t,heightLarge:r,borderRadius:a}=e;return{color:"rgba(255, 255, 255, 0.12)",colorEnd:"rgba(255, 255, 255, 0.18)",borderRadius:a,heightSmall:o,heightMedium:t,heightLarge:r}}};function rp(e){return window.TouchEvent&&e instanceof window.TouchEvent}function ap(){let e=Z(new Map),o=t=>r=>{e.value.set(t,r)};return Zd(()=>e.value.clear()),[e,o]}var ww=Y([K("slider",` + `))]);var nD=Object.assign(Object.assign({},ko.props),{size:String,checked:{type:[Boolean,String,Number],default:void 0},defaultChecked:{type:[Boolean,String,Number],default:!1},value:[String,Number],disabled:{type:Boolean,default:void 0},indeterminate:Boolean,label:String,focusable:{type:Boolean,default:!0},checkedValue:{type:[Boolean,String,Number],default:!0},uncheckedValue:{type:[Boolean,String,Number],default:!1},"onUpdate:checked":[Function,Array],onUpdateChecked:[Function,Array],privateInsideTable:Boolean,onChange:[Function,Array]}),_u=re({name:"Checkbox",props:nD,setup(e){let o=Q(null),{mergedClsPrefixRef:t,inlineThemeDisabled:r,mergedRtlRef:a}=Wo(e),l=vt(e,{mergedSize(v){let{size:S}=e;if(S!==void 0)return S;if(d){let{value:F}=d.mergedSizeRef;if(F!==void 0)return F}if(v){let{mergedSize:F}=v;if(F!==void 0)return F.value}return"medium"},mergedDisabled(v){let{disabled:S}=e;if(S!==void 0)return S;if(d){if(d.disabledRef.value)return!0;let{maxRef:{value:F},checkedCountRef:B}=d;if(F!==void 0&&B.value>=F&&!m.value)return!0;let{minRef:{value:y}}=d;if(y!==void 0&&B.value<=y&&m.value)return!0}return v?v.disabled.value:!1}}),{mergedDisabledRef:n,mergedSizeRef:i}=l,d=be(Nu,null),s=Q(e.defaultChecked),u=_e(e,"checked"),f=lt(u,s),m=to(()=>{if(d){let v=d.valueSetRef.value;return v&&e.value!==void 0?v.has(e.value):!1}else return f.value===e.checkedValue}),p=ko("Checkbox","-checkbox",jg,Rr,e,t);function c(v){if(d&&e.value!==void 0)d.toggleCheckbox(!m.value,e.value);else{let{onChange:S,"onUpdate:checked":F,onUpdateChecked:B}=e,{nTriggerFormInput:y,nTriggerFormChange:I}=l,E=m.value?e.uncheckedValue:e.checkedValue;F&&ye(F,E,v),B&&ye(B,E,v),S&&ye(S,E,v),y(),I(),s.value=E}}function R(v){n.value||c(v)}function b(v){if(!n.value)switch(v.code){case"Space":case"Enter":case"NumpadEnter":c(v)}}function h(v){switch(v.code){case"Space":v.preventDefault()}}let k={focus:()=>{var v;(v=o.value)===null||v===void 0||v.focus()},blur:()=>{var v;(v=o.value)===null||v===void 0||v.blur()}},z=Oa("Checkbox",a,t),C=W(()=>{let{value:v}=i,{common:{cubicBezierEaseInOut:S},self:{borderRadius:F,color:B,colorChecked:y,colorDisabled:I,colorTableHeader:E,colorTableHeaderModal:se,colorTableHeaderPopover:Se,checkMarkColor:Ee,checkMarkColorDisabled:me,border:ue,borderFocus:Fe,borderDisabled:Ge,borderChecked:Ye,boxShadowFocus:$e,textColor:ro,textColorDisabled:Ke,checkMarkColorDisabledChecked:So,colorDisabledChecked:bo,borderDisabledChecked:We,labelPadding:qe,labelLineHeight:go,[Me("fontSize",v)]:Le,[Me("size",v)]:co}}=p.value;return{"--n-label-line-height":go,"--n-size":co,"--n-bezier":S,"--n-border-radius":F,"--n-border":ue,"--n-border-checked":Ye,"--n-border-focus":Fe,"--n-border-disabled":Ge,"--n-border-disabled-checked":We,"--n-box-shadow-focus":$e,"--n-color":B,"--n-color-checked":y,"--n-color-table":E,"--n-color-table-modal":se,"--n-color-table-popover":Se,"--n-color-disabled":I,"--n-color-disabled-checked":bo,"--n-text-color":ro,"--n-text-color-disabled":Ke,"--n-check-mark-color":Ee,"--n-check-mark-color-disabled":me,"--n-check-mark-color-disabled-checked":So,"--n-font-size":Le,"--n-label-padding":qe}}),g=r?tt("checkbox",W(()=>i.value[0]),C,e):void 0;return Object.assign(l,k,{rtlEnabled:z,selfRef:o,mergedClsPrefix:t,mergedDisabled:n,renderedChecked:m,mergedTheme:p,labelId:ws(),handleClick:R,handleKeyUp:b,handleKeyDown:h,cssVars:r?void 0:C,themeClass:g==null?void 0:g.themeClass,onRender:g==null?void 0:g.onRender})},render(){var e;let{$slots:o,renderedChecked:t,mergedDisabled:r,indeterminate:a,privateInsideTable:l,cssVars:n,labelId:i,label:d,mergedClsPrefix:s,focusable:u,handleKeyUp:f,handleKeyDown:m,handleClick:p}=this;return(e=this.onRender)===null||e===void 0||e.call(this),w("div",{ref:"selfRef",class:[`${s}-checkbox`,this.themeClass,this.rtlEnabled&&`${s}-checkbox--rtl`,t&&`${s}-checkbox--checked`,r&&`${s}-checkbox--disabled`,a&&`${s}-checkbox--indeterminate`,l&&`${s}-checkbox--inside-table`],tabindex:r||!u?void 0:0,role:"checkbox","aria-checked":a?"mixed":t,"aria-labelledby":i,style:n,onKeyup:f,onKeydown:m,onClick:p,onMousedown:()=>{Fo("selectstart",window,c=>{c.preventDefault()},{once:!0})}},w("div",{class:`${s}-checkbox-box-wrapper`},"\xA0",w("div",{class:`${s}-checkbox-box`},w(Dt,null,{default:()=>this.indeterminate?w("div",{key:"indeterminate",class:`${s}-checkbox-icon`},zg):w("div",{key:"check",class:`${s}-checkbox-icon`},Wg)}),w("div",{class:`${s}-checkbox-box__border`}))),d!==null||o.default?w("span",{class:`${s}-checkbox__label`,id:i},o.default?o.default():d):null)}});var iD={name:"Code",common:P,self(e){let{textColor2:o,fontSize:t,fontWeightStrong:r}=e;return{textColor:o,fontSize:t,fontWeightStrong:r,"mono-3":"#5c6370","hue-1":"#56b6c2","hue-2":"#61aeee","hue-3":"#c678dd","hue-4":"#98c379","hue-5":"#e06c75","hue-5-2":"#be5046","hue-6":"#d19a66","hue-6-2":"#e6c07b"}}},sn=iD;var $g=e=>{let{fontWeight:o,textColor1:t,textColor2:r,dividerColor:a,fontSize:l}=e;return{titleFontSize:l,titleFontWeight:o,dividerColor:a,titleTextColor:t,fontSize:l,textColor:r,arrowColor:r}};var dD={name:"Collapse",common:P,self:$g},Iu=dD;var Ug=e=>{let{cubicBezierEaseInOut:o}=e;return{bezier:o}};var sD={name:"CollapseTransition",common:P,self:Ug},Hu=sD;var Kg={abstract:Boolean,bordered:{type:Boolean,default:void 0},clsPrefix:String,locale:Object,dateLocale:Object,namespace:String,rtl:Array,tag:{type:String,default:"div"},hljs:Object,theme:Object,themeOverrides:Object,componentOptions:Object,icons:Object,breakpoints:Object,inlineThemeDisabled:{type:Boolean,default:void 0},as:{type:String,validator:()=>(ii("config-provider","`as` is deprecated, please use `tag` instead."),!0),default:void 0}},Vu=re({name:"ConfigProvider",alias:["App"],props:Kg,setup(e){let o=be(nt,null),t=W(()=>{let{theme:p}=e;if(p===null)return;let c=o==null?void 0:o.mergedThemeRef.value;return p===void 0?c:c===void 0?p:Object.assign({},c,p)}),r=W(()=>{let{themeOverrides:p}=e;if(p!==null){if(p===void 0)return o==null?void 0:o.mergedThemeOverridesRef.value;{let c=o==null?void 0:o.mergedThemeOverridesRef.value;return c===void 0?p:Gr({},c,p)}}}),a=to(()=>{let{namespace:p}=e;return p===void 0?o==null?void 0:o.mergedNamespaceRef.value:p}),l=to(()=>{let{bordered:p}=e;return p===void 0?o==null?void 0:o.mergedBorderedRef.value:p}),n=W(()=>{let{icons:p}=e;return p===void 0?o==null?void 0:o.mergedIconsRef.value:p}),i=W(()=>{let{componentOptions:p}=e;return p!==void 0?p:o==null?void 0:o.mergedComponentPropsRef.value}),d=W(()=>{let{clsPrefix:p}=e;return p!==void 0?p:o==null?void 0:o.mergedClsPrefixRef.value}),s=W(()=>{var p;let{rtl:c}=e;if(c===void 0)return o==null?void 0:o.mergedRtlRef.value;let R={};for(let b of c)R[b.name]=ra(b),(p=b.peers)===null||p===void 0||p.forEach(h=>{h.name in R||(R[h.name]=ra(h))});return R}),u=W(()=>e.breakpoints||(o==null?void 0:o.mergedBreakpointsRef.value)),f=e.inlineThemeDisabled||(o==null?void 0:o.inlineThemeDisabled),m=W(()=>{let{value:p}=t,{value:c}=r,R=c&&Object.keys(c).length!==0,b=p==null?void 0:p.name;return b?R?`${b}-${St(JSON.stringify(r.value))}`:b:R?St(JSON.stringify(r.value)):""});return rt(nt,{mergedThemeHashRef:m,mergedBreakpointsRef:u,mergedRtlRef:s,mergedIconsRef:n,mergedComponentPropsRef:i,mergedBorderedRef:l,mergedNamespaceRef:a,mergedClsPrefixRef:d,mergedLocaleRef:W(()=>{let{locale:p}=e;if(p!==null)return p===void 0?o==null?void 0:o.mergedLocaleRef.value:p}),mergedDateLocaleRef:W(()=>{let{dateLocale:p}=e;if(p!==null)return p===void 0?o==null?void 0:o.mergedDateLocaleRef.value:p}),mergedHljsRef:W(()=>{let{hljs:p}=e;return p===void 0?o==null?void 0:o.mergedHljsRef.value:p}),mergedThemeRef:t,mergedThemeOverridesRef:r,inlineThemeDisabled:f||!1}),{mergedClsPrefix:d,mergedBordered:l,mergedNamespace:a,mergedTheme:t,mergedThemeOverrides:r}},render(){var e,o,t,r;return this.abstract?(r=(t=this.$slots).default)===null||r===void 0?void 0:r.call(t):w(this.as||this.tag,{class:`${this.mergedClsPrefix||qi}-config-provider`},(o=(e=this.$slots).default)===null||o===void 0?void 0:o.call(e))}});function Wu(e){let{boxShadow2:o}=e;return{menuBoxShadow:o}}var uD=Ie({name:"Select",common:xe,peers:{InternalSelection:rn,InternalSelectMenu:Ra},self:Wu}),zu=uD;var fD={name:"Select",common:P,peers:{InternalSelection:Ca,InternalSelectMenu:_t},self:Wu},un=fD;var Gg={itemSize:"28px",itemPadding:"0 4px",itemMargin:"0 0 0 8px",itemMarginRtl:"0 8px 0 0",buttonIconSize:"16px",inputWidth:"60px",selectWidth:"unset",inputMargin:"0 0 0 8px",inputMarginRtl:"0 8px 0 0",selectMargin:"0 0 0 8px",prefixMargin:"0 8px 0 0",suffixMargin:"0 0 0 8px",jumperFontSize:"14px"};var ju=e=>{let{textColor2:o,primaryColor:t,primaryColorHover:r,primaryColorPressed:a,inputColorDisabled:l,textColorDisabled:n,borderColor:i,borderRadius:d,fontSize:s}=e;return Object.assign(Object.assign({},Gg),{buttonColor:"#0000",buttonColorHover:"#0000",buttonColorPressed:"#0000",buttonBorder:`1px solid ${i}`,buttonBorderHover:`1px solid ${i}`,buttonBorderPressed:`1px solid ${i}`,buttonIconColor:o,buttonIconColorHover:o,buttonIconColorPressed:o,itemTextColor:o,itemTextColorHover:r,itemTextColorPressed:a,itemTextColorActive:t,itemTextColorDisabled:n,itemColor:"#0000",itemColorHover:"#0000",itemColorPressed:"#0000",itemColorActive:"#0000",itemColorActiveHover:"#0000",itemColorDisabled:l,itemBorder:"1px solid #0000",itemBorderHover:"1px solid #0000",itemBorderPressed:"1px solid #0000",itemBorderActive:`1px solid ${t}`,itemBorderDisabled:`1px solid ${i}`,itemBorderRadius:d,itemFontSize:s,jumperTextColor:o,jumperTextColorDisabled:n})},pD=Ie({name:"Pagination",common:xe,peers:{Select:zu,Input:Rt},self:ju}),$u=pD;var mD={name:"Pagination",common:P,peers:{Select:un,Input:Co},self(e){let{primaryColor:o,opacity3:t}=e,r=oe(o,{alpha:Number(t)}),a=ju(e);return a.itemBorderActive=`1px solid ${r}`,a.itemBorderDisabled="1px solid #0000",a}},fn=mD;var ud={padding:"8px 14px"};var cD={name:"Tooltip",common:P,peers:{Popover:it},self(e){let{borderRadius:o,boxShadow2:t,popoverColor:r,textColor2:a}=e;return Object.assign(Object.assign({},ud),{borderRadius:o,boxShadow:t,color:r,textColor:a})}},ar=cD;var hD=e=>{let{borderRadius:o,boxShadow2:t,baseColor:r}=e;return Object.assign(Object.assign({},ud),{borderRadius:o,boxShadow:t,color:ge(r,"rgba(0, 0, 0, .85)"),textColor:r})},xD=Ie({name:"Tooltip",common:xe,peers:{Popover:It},self:hD}),pn=xD;var SD={name:"Ellipsis",common:P,peers:{Tooltip:ar}},mn=SD;var gD=Ie({name:"Ellipsis",common:xe,peers:{Tooltip:pn}}),Uu=gD;var fd={radioSizeSmall:"14px",radioSizeMedium:"16px",radioSizeLarge:"18px",labelPadding:"0 8px"};var wD={name:"Radio",common:P,self(e){let{borderColor:o,primaryColor:t,baseColor:r,textColorDisabled:a,inputColorDisabled:l,textColor2:n,opacityDisabled:i,borderRadius:d,fontSizeSmall:s,fontSizeMedium:u,fontSizeLarge:f,heightSmall:m,heightMedium:p,heightLarge:c,lineHeight:R}=e;return Object.assign(Object.assign({},fd),{labelLineHeight:R,buttonHeightSmall:m,buttonHeightMedium:p,buttonHeightLarge:c,fontSizeSmall:s,fontSizeMedium:u,fontSizeLarge:f,boxShadow:`inset 0 0 0 1px ${o}`,boxShadowActive:`inset 0 0 0 1px ${t}`,boxShadowFocus:`inset 0 0 0 1px ${t}, 0 0 0 2px ${oe(t,{alpha:.3})}`,boxShadowHover:`inset 0 0 0 1px ${t}`,boxShadowDisabled:`inset 0 0 0 1px ${o}`,color:"#0000",colorDisabled:l,textColor:n,textColorDisabled:a,dotColorActive:t,dotColorDisabled:o,buttonBorderColor:o,buttonBorderColorActive:t,buttonBorderColorHover:t,buttonColor:"#0000",buttonColorActive:t,buttonTextColor:n,buttonTextColorActive:r,buttonTextColorHover:t,opacityDisabled:i,buttonBoxShadowFocus:`inset 0 0 0 1px ${t}, 0 0 0 2px ${oe(t,{alpha:.3})}`,buttonBoxShadowHover:`inset 0 0 0 1px ${t}`,buttonBoxShadow:"inset 0 0 0 1px #0000",buttonBorderRadius:d})}},cn=wD;var TD=e=>{let{borderColor:o,primaryColor:t,baseColor:r,textColorDisabled:a,inputColorDisabled:l,textColor2:n,opacityDisabled:i,borderRadius:d,fontSizeSmall:s,fontSizeMedium:u,fontSizeLarge:f,heightSmall:m,heightMedium:p,heightLarge:c,lineHeight:R}=e;return Object.assign(Object.assign({},fd),{labelLineHeight:R,buttonHeightSmall:m,buttonHeightMedium:p,buttonHeightLarge:c,fontSizeSmall:s,fontSizeMedium:u,fontSizeLarge:f,boxShadow:`inset 0 0 0 1px ${o}`,boxShadowActive:`inset 0 0 0 1px ${t}`,boxShadowFocus:`inset 0 0 0 1px ${t}, 0 0 0 2px ${oe(t,{alpha:.2})}`,boxShadowHover:`inset 0 0 0 1px ${t}`,boxShadowDisabled:`inset 0 0 0 1px ${o}`,color:r,colorDisabled:l,textColor:n,textColorDisabled:a,dotColorActive:t,dotColorDisabled:o,buttonBorderColor:o,buttonBorderColorActive:t,buttonBorderColorHover:o,buttonColor:r,buttonColorActive:r,buttonTextColor:n,buttonTextColorActive:t,buttonTextColorHover:t,opacityDisabled:i,buttonBoxShadowFocus:`inset 0 0 0 1px ${t}, 0 0 0 2px ${oe(t,{alpha:.3})}`,buttonBoxShadowHover:"inset 0 0 0 1px #0000",buttonBoxShadow:"inset 0 0 0 1px #0000",buttonBorderRadius:d})},RD={name:"Radio",common:xe,self:TD},Ku=RD;var qg={thPaddingSmall:"8px",thPaddingMedium:"12px",thPaddingLarge:"12px",tdPaddingSmall:"8px",tdPaddingMedium:"12px",tdPaddingLarge:"12px",sorterSize:"15px",filterSize:"15px",paginationMargin:"12px 0 0 0",emptyPadding:"48px 0",actionPadding:"8px 12px",actionButtonMargin:"0 8px 0 0"};var Gu=e=>{let{cardColor:o,modalColor:t,popoverColor:r,textColor2:a,textColor1:l,tableHeaderColor:n,tableColorHover:i,iconColor:d,primaryColor:s,fontWeightStrong:u,borderRadius:f,lineHeight:m,fontSizeSmall:p,fontSizeMedium:c,fontSizeLarge:R,dividerColor:b,heightSmall:h,opacityDisabled:k,tableColorStriped:z}=e;return Object.assign(Object.assign({},qg),{actionDividerColor:b,lineHeight:m,borderRadius:f,fontSizeSmall:p,fontSizeMedium:c,fontSizeLarge:R,borderColor:ge(o,b),tdColorHover:ge(o,i),tdColorStriped:ge(o,z),thColor:ge(o,n),thColorHover:ge(ge(o,n),i),tdColor:o,tdTextColor:a,thTextColor:l,thFontWeight:u,thButtonColorHover:i,thIconColor:d,thIconColorActive:s,borderColorModal:ge(t,b),tdColorHoverModal:ge(t,i),tdColorStripedModal:ge(t,z),thColorModal:ge(t,n),thColorHoverModal:ge(ge(t,n),i),tdColorModal:t,borderColorPopover:ge(r,b),tdColorHoverPopover:ge(r,i),tdColorStripedPopover:ge(r,z),thColorPopover:ge(r,n),thColorHoverPopover:ge(ge(r,n),i),tdColorPopover:r,boxShadowBefore:"inset -12px 0 8px -12px rgba(0, 0, 0, .18)",boxShadowAfter:"inset 12px 0 8px -12px rgba(0, 0, 0, .18)",loadingColor:s,loadingSize:h,opacityLoading:k})},J8=Ie({name:"DataTable",common:xe,peers:{Button:_o,Checkbox:Rr,Radio:Ku,Pagination:$u,Scrollbar:Mo,Empty:wt,Popover:It,Ellipsis:Uu},self:Gu});var OD={name:"DataTable",common:P,peers:{Button:po,Checkbox:Ht,Radio:cn,Pagination:fn,Scrollbar:fo,Empty:Tt,Popover:it,Ellipsis:mn},self(e){let o=Gu(e);return o.boxShadowAfter="inset 12px 0 8px -12px rgba(0, 0, 0, .36)",o.boxShadowBefore="inset -12px 0 8px -12px rgba(0, 0, 0, .36)",o}},qu=OD;var Qg={padding:"4px 0",optionIconSizeSmall:"14px",optionIconSizeMedium:"16px",optionIconSizeLarge:"16px",optionIconSizeHuge:"18px",optionSuffixWidthSmall:"14px",optionSuffixWidthMedium:"14px",optionSuffixWidthLarge:"16px",optionSuffixWidthHuge:"16px",optionIconSuffixWidthSmall:"32px",optionIconSuffixWidthMedium:"32px",optionIconSuffixWidthLarge:"36px",optionIconSuffixWidthHuge:"36px",optionPrefixWidthSmall:"14px",optionPrefixWidthMedium:"14px",optionPrefixWidthLarge:"16px",optionPrefixWidthHuge:"16px",optionIconPrefixWidthSmall:"36px",optionIconPrefixWidthMedium:"36px",optionIconPrefixWidthLarge:"40px",optionIconPrefixWidthHuge:"40px"};var Qu=e=>{let{primaryColor:o,textColor2:t,dividerColor:r,hoverColor:a,popoverColor:l,invertedColor:n,borderRadius:i,fontSizeSmall:d,fontSizeMedium:s,fontSizeLarge:u,fontSizeHuge:f,heightSmall:m,heightMedium:p,heightLarge:c,heightHuge:R,textColor3:b,opacityDisabled:h}=e;return Object.assign(Object.assign({},Qg),{optionHeightSmall:m,optionHeightMedium:p,optionHeightLarge:c,optionHeightHuge:R,borderRadius:i,fontSizeSmall:d,fontSizeMedium:s,fontSizeLarge:u,fontSizeHuge:f,optionTextColor:t,optionTextColorHover:t,optionTextColorActive:o,optionTextColorChildActive:o,color:l,dividerColor:r,suffixColor:t,prefixColor:t,optionColorHover:a,optionColorActive:oe(o,{alpha:.1}),groupHeaderTextColor:b,optionTextColorInverted:"#BBB",optionTextColorHoverInverted:"#FFF",optionTextColorActiveInverted:"#FFF",optionTextColorChildActiveInverted:"#FFF",colorInverted:n,dividerColorInverted:"#BBB",suffixColorInverted:"#BBB",prefixColorInverted:"#BBB",optionColorHoverInverted:o,optionColorActiveInverted:o,groupHeaderTextColorInverted:"#AAA",optionOpacityDisabled:h})},FD=Ie({name:"Dropdown",common:xe,peers:{Popover:It},self:Qu}),Zu=FD;var CD={name:"Dropdown",common:P,peers:{Popover:it},self(e){let{primaryColorSuppl:o,primaryColor:t,popoverColor:r}=e,a=Qu(e);return a.colorInverted=r,a.optionColorActive=oe(t,{alpha:.15}),a.optionColorActiveInverted=o,a.optionColorHoverInverted=o,a}},hn=CD;var Zg=e=>{let{textColorBase:o,opacity1:t,opacity2:r,opacity3:a,opacity4:l,opacity5:n}=e;return{color:o,opacity1Depth:t,opacity2Depth:r,opacity3Depth:a,opacity4Depth:l,opacity5Depth:n}};var bD={name:"Icon",common:P,self:Zg},Yu=bD;var Yg={itemFontSize:"12px",itemHeight:"36px",itemWidth:"52px",panelActionPadding:"8px 0"};var Ju=e=>{let{popoverColor:o,textColor2:t,primaryColor:r,hoverColor:a,dividerColor:l,opacityDisabled:n,boxShadow2:i,borderRadius:d,iconColor:s,iconColorDisabled:u}=e;return Object.assign(Object.assign({},Yg),{panelColor:o,panelBoxShadow:i,panelDividerColor:l,itemTextColor:t,itemTextColorActive:r,itemColorHover:a,itemOpacityDisabled:n,itemBorderRadius:d,borderRadius:d,iconColor:s,iconColorDisabled:u})},yD=Ie({name:"TimePicker",common:xe,peers:{Scrollbar:Mo,Button:_o,Input:Rt},self:Ju}),Xu=yD;var vD={name:"TimePicker",common:P,peers:{Scrollbar:fo,Button:po,Input:Co},self:Ju},xn=vD;var Jg={itemSize:"24px",itemCellWidth:"38px",itemCellHeight:"32px",scrollItemWidth:"80px",scrollItemHeight:"40px",panelExtraFooterPadding:"8px 12px",panelActionPadding:"8px 12px",calendarTitlePadding:"0",calendarTitleHeight:"28px",arrowSize:"14px",panelHeaderPadding:"8px 12px",calendarDaysHeight:"32px",calendarTitleGridTempateColumns:"28px 28px 1fr 28px 28px",calendarLeftPaddingDate:"6px 12px 4px 12px",calendarLeftPaddingDatetime:"4px 12px",calendarLeftPaddingDaterange:"6px 12px 4px 12px",calendarLeftPaddingDatetimerange:"4px 12px",calendarLeftPaddingMonth:"0",calendarLeftPaddingYear:"0",calendarLeftPaddingQuarter:"0",calendarRightPaddingDate:"6px 12px 4px 12px",calendarRightPaddingDatetime:"4px 12px",calendarRightPaddingDaterange:"6px 12px 4px 12px",calendarRightPaddingDatetimerange:"4px 12px",calendarRightPaddingMonth:"0",calendarRightPaddingYear:"0",calendarRightPaddingQuarter:"0"};var ef=e=>{let{hoverColor:o,fontSize:t,textColor2:r,textColorDisabled:a,popoverColor:l,primaryColor:n,borderRadiusSmall:i,iconColor:d,iconColorDisabled:s,textColor1:u,dividerColor:f,boxShadow2:m,borderRadius:p,fontWeightStrong:c}=e;return Object.assign(Object.assign({},Jg),{itemFontSize:t,calendarDaysFontSize:t,calendarTitleFontSize:t,itemTextColor:r,itemTextColorDisabled:a,itemTextColorActive:l,itemTextColorCurrent:n,itemColorIncluded:oe(n,{alpha:.1}),itemColorHover:o,itemColorDisabled:o,itemColorActive:n,itemBorderRadius:i,panelColor:l,panelTextColor:r,arrowColor:d,calendarTitleTextColor:u,calendarTitleColorHover:o,calendarDaysTextColor:r,panelHeaderDividerColor:f,calendarDaysDividerColor:f,calendarDividerColor:f,panelActionDividerColor:f,panelBoxShadow:m,panelBorderRadius:p,calendarTitleFontWeight:c,scrollItemBorderRadius:p,iconColor:d,iconColorDisabled:s})},n7=Ie({name:"DatePicker",common:xe,peers:{Input:Rt,Button:_o,TimePicker:Xu,Scrollbar:Mo},self:ef});var kD={name:"DatePicker",common:P,peers:{Input:Co,Button:po,TimePicker:xn,Scrollbar:fo},self(e){let{popoverColor:o,hoverColor:t,primaryColor:r}=e,a=ef(e);return a.itemColorDisabled=ge(o,t),a.itemColorIncluded=oe(r,{alpha:.15}),a.itemColorHover=ge(o,t),a}},of=kD;var Xg={thPaddingBorderedSmall:"8px 12px",thPaddingBorderedMedium:"12px 16px",thPaddingBorderedLarge:"16px 24px",thPaddingSmall:"0",thPaddingMedium:"0",thPaddingLarge:"0",tdPaddingBorderedSmall:"8px 12px",tdPaddingBorderedMedium:"12px 16px",tdPaddingBorderedLarge:"16px 24px",tdPaddingSmall:"0 0 8px 0",tdPaddingMedium:"0 0 12px 0",tdPaddingLarge:"0 0 16px 0"};var ew=e=>{let{tableHeaderColor:o,textColor2:t,textColor1:r,cardColor:a,modalColor:l,popoverColor:n,dividerColor:i,borderRadius:d,fontWeightStrong:s,lineHeight:u,fontSizeSmall:f,fontSizeMedium:m,fontSizeLarge:p}=e;return Object.assign(Object.assign({},Xg),{lineHeight:u,fontSizeSmall:f,fontSizeMedium:m,fontSizeLarge:p,titleTextColor:r,thColor:ge(a,o),thColorModal:ge(l,o),thColorPopover:ge(n,o),thTextColor:r,thFontWeight:s,tdTextColor:t,tdColor:a,tdColorModal:l,tdColorPopover:n,borderColor:ge(a,i),borderColorModal:ge(l,i),borderColorPopover:ge(n,i),borderRadius:d})};var AD={name:"Descriptions",common:P,self:ew},tf=AD;var ow={titleFontSize:"18px",padding:"16px 28px 20px 28px",iconSize:"28px",actionSpace:"12px",contentMargin:"8px 0 16px 0",iconMargin:"0 4px 0 0",iconMarginIconTop:"4px 0 8px 0",closeSize:"18px",closeMargin:"22px 28px 0 0",closeMarginIconTop:"12px 18px 0 0"};var rf=e=>{let{textColor1:o,textColor2:t,modalColor:r,closeColor:a,closeColorHover:l,closeColorPressed:n,infoColor:i,successColor:d,warningColor:s,errorColor:u,primaryColor:f,dividerColor:m,borderRadius:p,fontWeightStrong:c,lineHeight:R,fontSize:b}=e;return Object.assign(Object.assign({},ow),{fontSize:b,lineHeight:R,border:`1px solid ${m}`,titleTextColor:o,textColor:t,color:r,closeColor:a,closeColorHover:l,closeColorPressed:n,iconColor:f,iconColorInfo:i,iconColorSuccess:d,iconColorWarning:s,iconColorError:u,borderRadius:p,titleFontWeight:c})},DD=Ie({name:"Dialog",common:xe,peers:{Button:_o},self:rf}),af=DD;var PD={name:"Dialog",common:P,peers:{Button:po},self:rf},Sn=PD;var lf=e=>{let{modalColor:o,textColor2:t,boxShadow3:r}=e;return{color:o,textColor:t,boxShadow:r}},U7=Ie({name:"Modal",common:xe,peers:{Scrollbar:Mo,Dialog:af,Card:Pu},self:lf});var MD={name:"Modal",common:P,peers:{Scrollbar:fo,Dialog:Sn,Card:dn},self:lf},nf=MD;var tw=e=>{let{textColor1:o,dividerColor:t,fontWeightStrong:r}=e;return{textColor:o,color:t,fontWeight:r}};var BD={name:"Divider",common:P,self:tw},df=BD;var sf=e=>{let{modalColor:o,textColor1:t,textColor2:r,boxShadow3:a,lineHeight:l,fontWeightStrong:n,dividerColor:i,closeColor:d,closeColorHover:s,closeColorPressed:u}=e;return{bodyPadding:"16px 24px",headerPadding:"16px 24px",footerPadding:"16px 24px",color:o,textColor:r,titleTextColor:t,titleFontSize:"18px",titleFontWeight:n,boxShadow:a,lineHeight:l,headerBorderBottom:`1px solid ${i}`,footerBorderTop:`1px solid ${i}`,closeColor:d,closeColorHover:s,closeColorPressed:u,closeSize:"18px"}},uq=Ie({name:"Drawer",common:xe,peers:{Scrollbar:Mo},self:sf});var ED={name:"Drawer",common:P,peers:{Scrollbar:fo},self:sf},uf=ED;var rw={actionMargin:"0 0 0 20px",actionMarginRtl:"0 20px 0 0"};var LD={name:"DynamicInput",common:P,peers:{Input:Co,Button:po},self(){return rw}},ff=LD;var aw={gapSmall:"4px 8px",gapMedium:"8px 12px",gapLarge:"12px 16px"};var ND={name:"Space",self(){return aw}},gn=ND;var _D={name:"DynamicTags",common:P,peers:{Input:Co,Button:po,Tag:tn,Space:gn},self(){return{inputWidth:"64px"}}},pf=_D;var ID={name:"Element",common:P},mf=ID;var lw={feedbackPadding:"4px 0 0 2px",feedbackHeightSmall:"24px",feedbackHeightMedium:"24px",feedbackHeightLarge:"26px",feedbackFontSizeSmall:"13px",feedbackFontSizeMedium:"14px",feedbackFontSizeLarge:"14px",labelFontSizeLeftSmall:"14px",labelFontSizeLeftMedium:"14px",labelFontSizeLeftLarge:"15px",labelFontSizeTopSmall:"13px",labelFontSizeTopMedium:"14px",labelFontSizeTopLarge:"14px",labelHeightSmall:"24px",labelHeightMedium:"26px",labelHeightLarge:"28px",labelPaddingVertical:"0 0 8px 2px",labelPaddingHorizontal:"0 12px 0 0",labelTextAlignVertical:"left",labelTextAlignHorizontal:"right"};var nw=e=>{let{heightSmall:o,heightMedium:t,heightLarge:r,textColor1:a,errorColor:l,warningColor:n,lineHeight:i,textColor3:d}=e;return Object.assign(Object.assign({},lw),{blankHeightSmall:o,blankHeightMedium:t,blankHeightLarge:r,lineHeight:i,labelTextColor:a,asteriskColor:l,feedbackTextColorError:l,feedbackTextColorWarning:n,feedbackTextColor:d})};var HD={name:"Form",common:P,self:nw},cf=HD;var VD={name:"GradientText",common:P,self(e){let{primaryColor:o,successColor:t,warningColor:r,errorColor:a,infoColor:l,primaryColorSuppl:n,successColorSuppl:i,warningColorSuppl:d,errorColorSuppl:s,infoColorSuppl:u,fontWeightStrong:f}=e;return{fontWeight:f,rotate:"252deg",colorStartPrimary:o,colorEndPrimary:n,colorStartInfo:l,colorEndInfo:u,colorStartWarning:r,colorEndWarning:d,colorStartError:a,colorEndError:s,colorStartSuccess:t,colorEndSuccess:i}}},hf=VD;var iw=e=>{let{primaryColor:o,baseColor:t}=e;return{color:o,iconColor:t}};var WD={name:"IconWrapper",common:P,self:iw},xf=WD;var zD={name:"ButtonGroup",common:P},Sf=zD;var jD={name:"InputNumber",common:P,peers:{Button:po,Input:Co},self(e){let{textColorDisabled:o}=e;return{iconColorDisabled:o}}},gf=jD;var $D={name:"Layout",common:P,peers:{Scrollbar:fo},self(e){let{textColor2:o,bodyColor:t,popoverColor:r,cardColor:a,dividerColor:l,scrollbarColor:n,scrollbarColorHover:i}=e;return{textColor:o,textColorInverted:o,color:t,colorEmbedded:t,headerColor:a,headerColorInverted:a,footerColor:a,footerColorInverted:a,headerBorderColor:l,headerBorderColorInverted:l,footerBorderColor:l,footerBorderColorInverted:l,siderBorderColor:l,siderBorderColorInverted:l,siderColor:a,siderColorInverted:a,siderToggleButtonBorder:"1px solid transparent",siderToggleButtonColor:r,siderToggleButtonIconColor:o,siderToggleButtonIconColorInverted:o,siderToggleBarColor:ge(t,n),siderToggleBarColorHover:ge(t,i),__invertScrollbar:"false"}}},wf=$D;var dw=e=>{let{textColor2:o,cardColor:t,modalColor:r,popoverColor:a,dividerColor:l,borderRadius:n,fontSize:i}=e;return{textColor:o,color:t,colorModal:r,colorPopover:a,borderColor:l,borderColorModal:ge(r,l),borderColorPopover:ge(a,l),borderRadius:n,fontSize:i}};var UD={name:"List",common:P,self:dw},Tf=UD;var KD={name:"LoadingBar",common:P,self(e){let{primaryColor:o}=e;return{colorError:"red",colorLoading:o,height:"2px"}}},Rf=KD;var GD={name:"Log",common:P,peers:{Scrollbar:fo,Code:sn},self(e){let{textColor2:o,inputColor:t,fontSize:r,primaryColor:a}=e;return{loaderFontSize:r,loaderTextColor:o,loaderColor:t,loaderBorder:"1px solid #0000",loadingColor:a}}},Of=GD;var qD={name:"Mention",common:P,peers:{InternalSelectMenu:_t,Input:Co},self(e){let{boxShadow2:o}=e;return{menuBoxShadow:o}}},Ff=qD;function QD(e,o,t,r){return{itemColorHoverInverted:"#0000",itemColorActiveInverted:o,itemColorActiveHoverInverted:o,itemColorActiveCollapsedInverted:o,itemTextColorInverted:e,itemTextColorHoverInverted:t,itemTextColorChildActiveInverted:t,itemTextColorActiveInverted:t,itemTextColorActiveHoverInverted:t,itemTextColorHorizontalInverted:e,itemTextColorHoverHorizontalInverted:t,itemTextColorChildActiveHorizontalInverted:t,itemTextColorActiveHorizontalInverted:t,itemTextColorActiveHoverHorizontalInverted:t,itemIconColorInverted:e,itemIconColorHoverInverted:t,itemIconColorActiveInverted:t,itemIconColorActiveHoverInverted:t,itemIconColorChildActiveInverted:t,itemIconColorCollapsedInverted:e,itemIconColorHorizontalInverted:e,itemIconColorHoverHorizontalInverted:t,itemIconColorActiveHorizontalInverted:t,itemIconColorActiveHoverHorizontalInverted:t,itemIconColorChildActiveHorizontalInverted:t,arrowColorInverted:e,arrowColorHoverInverted:t,arrowColorActiveInverted:t,arrowColorActiveHoverInverted:t,arrowColorChildActiveInverted:t,groupTextColorInverted:r}}var Cf=e=>{let{borderRadius:o,textColor3:t,primaryColor:r,textColor2:a,textColor1:l,fontSize:n,dividerColor:i,hoverColor:d,primaryColorHover:s}=e;return Object.assign({borderRadius:o,color:"#0000",groupTextColor:t,itemColorHover:d,itemColorActive:oe(r,{alpha:.1}),itemColorActiveHover:oe(r,{alpha:.1}),itemColorActiveCollapsed:oe(r,{alpha:.1}),itemTextColor:a,itemTextColorHover:a,itemTextColorActive:r,itemTextColorActiveHover:r,itemTextColorChildActive:r,itemTextColorHorizontal:a,itemTextColorHoverHorizontal:s,itemTextColorActiveHorizontal:r,itemTextColorActiveHoverHorizontal:r,itemTextColorChildActiveHorizontal:r,itemIconColor:l,itemIconColorHover:l,itemIconColorActive:r,itemIconColorActiveHover:r,itemIconColorChildActive:r,itemIconColorCollapsed:l,itemIconColorHorizontal:l,itemIconColorHoverHorizontal:s,itemIconColorActiveHorizontal:r,itemIconColorActiveHoverHorizontal:r,itemIconColorChildActiveHorizontal:r,itemHeight:"42px",arrowColor:a,arrowColorHover:a,arrowColorActive:r,arrowColorActiveHover:r,arrowColorChildActive:r,colorInverted:"#0000",borderColorHorizontal:"#0000",fontSize:n,dividerColor:i},QD("#BBB",r,"#FFF","#AAA"))},YQ=Ie({name:"Menu",common:xe,peers:{Tooltip:pn,Dropdown:Zu},self:Cf});var ZD={name:"Menu",common:P,peers:{Tooltip:ar,Dropdown:hn},self(e){let{primaryColor:o,primaryColorSuppl:t}=e,r=Cf(e);return r.itemColorActive=oe(o,{alpha:.15}),r.itemColorActiveHover=oe(o,{alpha:.15}),r.itemColorActiveCollapsed=oe(o,{alpha:.15}),r.itemColorActiveInverted=t,r.itemColorActiveHoverInverted=t,r.itemColorActiveCollapsedInverted=t,r}},bf=ZD;var sw={margin:"0 0 8px 0",padding:"10px 20px",maxWidth:"720px",minWidth:"420px",iconMargin:"0 10px 0 0",closeMargin:"0 0 0 12px",closeSize:"16px",iconSize:"20px",fontSize:"14px"};var uw=e=>{let{textColor2:o,closeColor:t,closeColorHover:r,closeColorPressed:a,infoColor:l,successColor:n,errorColor:i,warningColor:d,popoverColor:s,boxShadow2:u,primaryColor:f,lineHeight:m,borderRadius:p}=e;return Object.assign(Object.assign({},sw),{textColor:o,textColorInfo:o,textColorSuccess:o,textColorError:o,textColorWarning:o,textColorLoading:o,color:s,colorInfo:s,colorSuccess:s,colorError:s,colorWarning:s,colorLoading:s,boxShadow:u,boxShadowInfo:u,boxShadowSuccess:u,boxShadowError:u,boxShadowWarning:u,boxShadowLoading:u,iconColor:o,iconColorInfo:l,iconColorSuccess:n,iconColorWarning:d,iconColorError:i,iconColorLoading:f,closeColor:t,closeColorHover:r,closeColorPressed:a,closeColorInfo:t,closeColorHoverInfo:r,closeColorPressedInfo:a,closeColorSuccess:t,closeColorHoverSuccess:r,closeColorPressedSuccess:a,closeColorError:t,closeColorHoverError:r,closeColorPressedError:a,closeColorWarning:t,closeColorHoverWarning:r,closeColorPressedWarning:a,closeColorLoading:t,closeColorHoverLoading:r,closeColorPressedLoading:a,loadingColor:f,lineHeight:m,borderRadius:p})};var YD={name:"Message",common:P,self:uw},yf=YD;var fw={closeMargin:"18px 14px",closeSize:"16px",width:"365px",padding:"16px"};var vf=e=>{let{textColor2:o,successColor:t,infoColor:r,warningColor:a,errorColor:l,popoverColor:n,closeColor:i,closeColorHover:d,textColor1:s,textColor3:u,borderRadius:f,fontWeightStrong:m,boxShadow2:p,lineHeight:c,fontSize:R}=e;return Object.assign(Object.assign({},fw),{borderRadius:f,lineHeight:c,fontSize:R,headerFontWeight:m,iconColor:o,iconColorSuccess:t,iconColorInfo:r,iconColorWarning:a,iconColorError:l,color:n,textColor:o,closeColor:i,closeColorHover:d,closeColorPressed:i,headerTextColor:s,descriptionTextColor:u,actionTextColor:o,boxShadow:p})},TZ=Ie({name:"Notification",common:xe,peers:{Scrollbar:Mo},self:vf});var JD={name:"Notification",common:P,peers:{Scrollbar:fo},self:vf},kf=JD;var pw={titleFontSize:"18px",backSize:"22px"};function Af(e){let{textColor1:o,textColor2:t,textColor3:r,fontSize:a,fontWeightStrong:l,primaryColorHover:n,primaryColorPressed:i}=e;return Object.assign(Object.assign({},pw),{titleFontWeight:l,fontSize:a,titleTextColor:o,backColor:t,backColorHover:n,backColorPressed:i,subtitleTextColor:r})}var MZ=Ie({name:"PageHeader",common:xe,self:Af});var Df={name:"PageHeader",common:P,self:Af};var mw={iconSize:"22px"};var Pf=e=>{let{fontSize:o,warningColor:t}=e;return Object.assign(Object.assign({},mw),{fontSize:o,iconColor:t})},UZ=Ie({name:"Popconfirm",common:xe,peers:{Button:_o,Popover:It},self:Pf});var XD={name:"Popconfirm",common:P,peers:{Button:po,Popover:it},self:Pf},Mf=XD;var eP={name:"Popselect",common:P,peers:{Popover:it,InternalSelectMenu:_t}},Bf=eP;var Ef=e=>{let{infoColor:o,successColor:t,warningColor:r,errorColor:a,textColor2:l,progressRailColor:n,fontSize:i,fontWeight:d}=e;return{fontSize:i,fontSizeCircle:"28px",fontWeightCircle:d,railColor:n,railHeight:"8px",iconSizeCircle:"36px",iconSizeLine:"18px",iconColor:o,iconColorInfo:o,iconColorSuccess:t,iconColorWarning:r,iconColorError:a,textColorCircle:l,textColorLineInner:"rgb(255, 255, 255)",textColorLineOuter:l,fillColor:o,fillColorInfo:o,fillColorSuccess:t,fillColorWarning:r,fillColorError:a,lineBgProcessing:"linear-gradient(90deg, rgba(255, 255, 255, .3) 0%, rgba(255, 255, 255, .5) 100%)"}},oP={name:"Progress",common:xe,self:Ef},Lf=oP;var tP={name:"Progress",common:P,self(e){let o=Ef(e);return o.textColorLineInner="rgb(0, 0, 0)",o.lineBgProcessing="linear-gradient(90deg, rgba(255, 255, 255, .3) 0%, rgba(255, 255, 255, .5) 100%)",o}},wn=tP;var rP={name:"Rate",common:P,self(e){let{railColor:o}=e;return{itemColor:o,itemColorActive:"#CCAA33",itemSize:"20px",sizeSmall:"16px",sizeMedium:"20px",sizeLarge:"24px"}}},Nf=rP;var cw={titleFontSizeSmall:"26px",titleFontSizeMedium:"32px",titleFontSizeLarge:"40px",titleFontSizeHuge:"48px",fontSizeSmall:"14px",fontSizeMedium:"14px",fontSizeLarge:"15px",fontSizeHuge:"16px",iconSizeSmall:"64px",iconSizeMedium:"80px",iconSizeLarge:"100px",iconSizeHuge:"125px",iconColor418:void 0,iconColor404:void 0,iconColor403:void 0,iconColor500:void 0};var hw=e=>{let{textColor2:o,textColor1:t,errorColor:r,successColor:a,infoColor:l,warningColor:n,lineHeight:i,fontWeightStrong:d}=e;return Object.assign(Object.assign({},cw),{lineHeight:i,titleFontWeight:d,titleTextColor:t,textColor:o,iconColorError:r,iconColorSuccess:a,iconColorInfo:l,iconColorWarning:n})};var aP={name:"Result",common:P,self:hw},_f=aP;var pd={railHeight:"4px",railWidthVertical:"4px",handleSize:"18px",dotHeight:"8px",dotWidth:"8px",dotBorderRadius:"4px"};var lP={name:"Slider",common:P,self(e){let o="0 2px 8px 0 rgba(0, 0, 0, 0.12)",{railColor:t,modalColor:r,primaryColorSuppl:a,popoverColor:l,textColor2:n,cardColor:i,borderRadius:d,fontSize:s,opacityDisabled:u}=e;return Object.assign(Object.assign({},pd),{fontSize:s,railColor:t,railColorHover:t,fillColor:a,fillColorHover:a,opacityDisabled:u,handleColor:"#FFF",dotColor:i,dotColorModal:r,dotColorPopover:l,handleBoxShadow:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",handleBoxShadowHover:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",handleBoxShadowActive:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",handleBoxShadowFocus:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",indicatorColor:l,indicatorBoxShadow:o,indicatorTextColor:n,indicatorBorderRadius:d,dotBorder:`2px solid ${t}`,dotBorderActive:`2px solid ${a}`,dotBoxShadow:""})}},If=lP;var nP=e=>{let o="rgba(0, 0, 0, .85)",t="0 2px 8px 0 rgba(0, 0, 0, 0.12)",{railColor:r,primaryColor:a,baseColor:l,cardColor:n,modalColor:i,popoverColor:d,borderRadius:s,fontSize:u,opacityDisabled:f}=e;return Object.assign(Object.assign({},pd),{fontSize:u,railColor:r,railColorHover:r,fillColor:a,fillColorHover:a,opacityDisabled:f,handleColor:"#FFF",dotColor:n,dotColorModal:i,dotColorPopover:d,handleBoxShadow:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",handleBoxShadowHover:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",handleBoxShadowActive:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",handleBoxShadowFocus:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",indicatorColor:o,indicatorBoxShadow:t,indicatorTextColor:l,indicatorBorderRadius:s,dotBorder:`2px solid ${r}`,dotBorderActive:`2px solid ${a}`,dotBoxShadow:""})},iP={name:"Slider",common:xe,self:nP},Hf=iP;var xw=e=>{let{opacityDisabled:o,heightTiny:t,heightSmall:r,heightMedium:a,heightLarge:l,heightHuge:n,primaryColor:i,fontSize:d}=e;return{fontSize:d,textColor:i,sizeTiny:t,sizeSmall:r,sizeMedium:a,sizeLarge:l,sizeHuge:n,color:i,opacitySpinning:o}};var dP={name:"Spin",common:P,self:xw},Vf=dP;var Sw=e=>{let{textColor2:o,textColor3:t,fontSize:r,fontWeight:a}=e;return{labelFontSize:r,labelFontWeight:a,valueFontWeight:a,labelTextColor:t,valuePrefixTextColor:o,valueSuffixTextColor:o,valueTextColor:o}};var sP={name:"Statistic",common:P,self:Sw},Wf=sP;var gw={stepHeaderFontSizeSmall:"14px",stepHeaderFontSizeMedium:"16px",indicatorIndexFontSizeSmall:"14px",indicatorIndexFontSizeMedium:"16px",indicatorSizeSmall:"22px",indicatorSizeMedium:"28px",indicatorIconSizeSmall:"14px",indicatorIconSizeMedium:"18px"};var ww=e=>{let{fontWeightStrong:o,baseColor:t,textColorDisabled:r,primaryColor:a,errorColor:l,textColor1:n,textColor2:i}=e;return Object.assign(Object.assign({},gw),{stepHeaderFontWeight:o,indicatorTextColorProcess:t,indicatorTextColorWait:r,indicatorTextColorFinish:a,indicatorTextColorError:l,indicatorBorderColorProcess:a,indicatorBorderColorWait:r,indicatorBorderColorFinish:a,indicatorBorderColorError:l,indicatorColorProcess:a,indicatorColorWait:"#0000",indicatorColorFinish:"#0000",indicatorColorError:"#0000",splitorColorProcess:r,splitorColorWait:r,splitorColorFinish:a,splitorColorError:r,headerTextColorProcess:n,headerTextColorWait:r,headerTextColorFinish:r,headerTextColorError:l,descriptionTextColorProcess:i,descriptionTextColorWait:r,descriptionTextColorFinish:r,descriptionTextColorError:l})};var uP={name:"Steps",common:P,self:ww},zf=uP;var Tw={buttonHeightSmall:"14px",buttonHeightMedium:"18px",buttonHeightLarge:"22px",buttonWidthSmall:"14px",buttonWidthMedium:"18px",buttonWidthLarge:"22px",buttonWidthPressedSmall:"20px",buttonWidthPressedMedium:"24px",buttonWidthPressedLarge:"28px",railHeightSmall:"18px",railHeightMedium:"22px",railHeightLarge:"26px",railWidthSmall:"32px",railWidthMedium:"40px",railWidthLarge:"48px"};var fP={name:"Switch",common:P,self(e){let{primaryColorSuppl:o,opacityDisabled:t,borderRadius:r,primaryColor:a,textColor2:l,baseColor:n}=e,i="rgba(255, 255, 255, .20)";return Object.assign(Object.assign({},Tw),{iconColor:n,textColor:l,loadingColor:o,opacityDisabled:t,railColor:i,railColorActive:o,buttonBoxShadow:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",buttonColor:"#FFF",railBorderRadiusSmall:r,railBorderRadiusMedium:r,railBorderRadiusLarge:r,buttonBorderRadiusSmall:r,buttonBorderRadiusMedium:r,buttonBorderRadiusLarge:r,boxShadowFocus:`0 0 8px 0 ${oe(a,{alpha:.3})}`})}},jf=fP;var Rw={thPaddingSmall:"6px",thPaddingMedium:"12px",thPaddingLarge:"12px",tdPaddingSmall:"6px",tdPaddingMedium:"12px",tdPaddingLarge:"12px"};var Ow=e=>{let{dividerColor:o,cardColor:t,modalColor:r,popoverColor:a,tableHeaderColor:l,tableColorStriped:n,textColor1:i,textColor2:d,borderRadius:s,fontWeightStrong:u,lineHeight:f,fontSizeSmall:m,fontSizeMedium:p,fontSizeLarge:c}=e;return Object.assign(Object.assign({},Rw),{fontSizeSmall:m,fontSizeMedium:p,fontSizeLarge:c,lineHeight:f,borderRadius:s,borderColor:ge(t,o),borderColorModal:ge(r,o),borderColorPopover:ge(a,o),tdColor:t,tdColorModal:r,tdColorPopover:a,tdColorStriped:ge(t,n),tdColorStripedModal:ge(r,n),tdColorStripedPopover:ge(a,n),thColor:ge(t,l),thColorModal:ge(r,l),thColorPopover:ge(a,l),thTextColor:i,tdTextColor:d,thFontWeight:u})};var pP={name:"Table",common:P,self:Ow},$f=pP;var Fw={tabFontSizeSmall:"14px",tabFontSizeMedium:"14px",tabFontSizeLarge:"16px",tabGapSmallLine:"36px",tabGapMediumLine:"36px",tabGapLargeLine:"36px",tabPaddingSmallLine:"6px 0",tabPaddingMediumLine:"10px 0",tabPaddingLargeLine:"14px 0",tabGapSmallBar:"36px",tabGapMediumBar:"36px",tabGapLargeBar:"36px",tabPaddingSmallBar:"4px 0",tabPaddingMediumBar:"6px 0",tabPaddingLargeBar:"10px 0",tabGapSmallCard:"4px",tabGapMediumCard:"4px",tabGapLargeCard:"4px",tabPaddingSmallCard:"6px 10px",tabPaddingMediumCard:"8px 12px",tabPaddingLargeCard:"8px 16px",tabPaddingSmallSegment:"4px 0",tabPaddingMediumSegment:"6px 0",tabPaddingLargeSegment:"8px 0",tabGapSmallSegment:"0",tabGapMediumSegment:"0",tabGapLargeSegment:"0",panePaddingSmall:"8px 0 0 0",panePaddingMedium:"12px 0 0 0",panePaddingLarge:"16px 0 0 0"};var Cw=e=>{let{textColor2:o,primaryColor:t,textColorDisabled:r,closeColor:a,closeColorHover:l,closeColorPressed:n,tabColor:i,baseColor:d,dividerColor:s,fontWeight:u,textColor1:f,borderRadius:m,fontSize:p,fontWeightStrong:c}=e;return Object.assign(Object.assign({},Fw),{colorSegment:i,tabFontSizeCard:p,tabTextColorLine:f,tabTextColorActiveLine:t,tabTextColorHoverLine:t,tabTextColorDisabledLine:r,tabTextColorSegment:f,tabTextColorActiveSegment:o,tabTextColorHoverSegment:o,tabTextColorDisabledSegment:r,tabTextColorBar:f,tabTextColorActiveBar:t,tabTextColorHoverBar:t,tabTextColorDisabledBar:r,tabTextColorCard:f,tabTextColorHoverCard:f,tabTextColorActiveCard:t,tabTextColorDisabledCard:r,barColor:t,closeColor:a,closeColorHover:l,closeColorPressed:n,tabColor:i,tabColorSegment:d,tabBorderColor:s,tabFontWeightActive:u,tabFontWeight:u,tabBorderRadius:m,paneTextColor:o,fontWeightStrong:c})};var mP={name:"Tabs",common:P,self(e){let o=Cw(e),{inputColor:t}=e;return o.colorSegment=t,o.tabColorSegment=t,o}},Uf=mP;var bw=e=>{let{textColor1:o,textColor2:t,fontWeightStrong:r,fontSize:a}=e;return{fontSize:a,titleTextColor:o,textColor:t,titleFontWeight:r}};var cP={name:"Thing",common:P,self:bw},Kf=cP;var yw={titleMarginMedium:"0",titleMarginLarge:"-2px 0 0 0",titleFontSizeMedium:"14px",titleFontSizeLarge:"16px",iconSizeMedium:"14px",iconSizeLarge:"14px"};var hP={name:"Timeline",common:P,self(e){let{textColor3:o,infoColorSuppl:t,errorColorSuppl:r,successColorSuppl:a,warningColorSuppl:l,textColor1:n,textColor2:i,railColor:d,fontWeightStrong:s,fontSize:u}=e;return Object.assign(Object.assign({},yw),{contentFontSize:u,titleFontWeight:s,circleBorder:`2px solid ${o}`,circleBorderInfo:`2px solid ${t}`,circleBorderError:`2px solid ${r}`,circleBorderSuccess:`2px solid ${a}`,circleBorderWarning:`2px solid ${l}`,iconColor:o,iconColorInfo:t,iconColorError:r,iconColorSuccess:a,iconColorWarning:l,titleTextColor:n,contentTextColor:i,metaTextColor:o,lineColor:d})}},Gf=hP;var vw={extraFontSize:"12px",width:"440px"};var xP={name:"Transfer",common:P,peers:{Checkbox:Ht,Scrollbar:fo,Input:Co,Empty:Tt,Button:po},self(e){let{iconColorDisabled:o,iconColor:t,fontWeight:r,fontSizeLarge:a,fontSizeMedium:l,fontSizeSmall:n,heightLarge:i,heightMedium:d,heightSmall:s,borderRadius:u,inputColor:f,tableHeaderColor:m,textColor1:p,textColorDisabled:c,textColor2:R,hoverColor:b}=e;return Object.assign(Object.assign({},vw),{itemHeightSmall:s,itemHeightMedium:d,itemHeightLarge:i,fontSizeSmall:n,fontSizeMedium:l,fontSizeLarge:a,borderRadius:u,borderColor:"#0000",listColor:f,headerColor:m,titleTextColor:p,titleTextColorDisabled:c,extraTextColor:R,filterDividerColor:"#0000",itemTextColor:R,itemTextColorDisabled:c,itemColorPending:b,titleFontWeight:r,iconColor:t,iconColorDisabled:o})}},qf=xP;var Qf=e=>{let{borderRadiusSmall:o,hoverColor:t,pressedColor:r,primaryColor:a,textColor3:l,textColor2:n,textColorDisabled:i,fontSize:d}=e;return{fontSize:d,nodeBorderRadius:o,nodeColorHover:t,nodeColorPressed:r,nodeColorActive:oe(a,{alpha:.1}),arrowColor:l,nodeTextColor:n,nodeTextColorDisabled:i,loadingColor:a,dropMarkColor:a}},SP=Ie({name:"Tree",common:xe,peers:{Checkbox:Rr,Scrollbar:Mo,Empty:wt},self:Qf}),Zf=SP;var gP={name:"Tree",common:P,peers:{Checkbox:Ht,Scrollbar:fo,Empty:Tt},self(e){let{primaryColor:o}=e,t=Qf(e);return t.nodeColorActive=oe(o,{alpha:.15}),t}},Tn=gP;var wP={name:"TreeSelect",common:P,peers:{Tree:Tn,Empty:Tt,InternalSelection:Ca}},Yf=wP;var kw={headerFontSize1:"30px",headerFontSize2:"22px",headerFontSize3:"18px",headerFontSize4:"16px",headerFontSize5:"16px",headerFontSize6:"16px",headerMargin1:"28px 0 20px 0",headerMargin2:"28px 0 20px 0",headerMargin3:"28px 0 20px 0",headerMargin4:"28px 0 18px 0",headerMargin5:"28px 0 18px 0",headerMargin6:"28px 0 18px 0",headerPrefixWidth1:"16px",headerPrefixWidth2:"16px",headerPrefixWidth3:"12px",headerPrefixWidth4:"12px",headerPrefixWidth5:"12px",headerPrefixWidth6:"12px",headerBarWidth1:"4px",headerBarWidth2:"4px",headerBarWidth3:"3px",headerBarWidth4:"3px",headerBarWidth5:"3px",headerBarWidth6:"3px",pMargin:"16px 0 16px 0",liMargin:".25em 0 0 0",olPadding:"0 0 0 2em",ulPadding:"0 0 0 2em"};var Aw=e=>{let{primaryColor:o,textColor2:t,borderColor:r,lineHeight:a,fontSize:l,borderRadiusSmall:n,dividerColor:i,fontWeightStrong:d,textColor1:s,textColor3:u,infoColor:f,warningColor:m,errorColor:p,successColor:c,codeColor:R}=e;return Object.assign(Object.assign({},kw),{aTextColor:o,blockquoteTextColor:t,blockquotePrefixColor:r,blockquoteLineHeight:a,blockquoteFontSize:l,codeBorderRadius:n,liTextColor:t,liLineHeight:a,liFontSize:l,hrColor:i,headerFontWeight:d,headerTextColor:s,pTextColor:t,pTextColor1Depth:s,pTextColor2Depth:t,pTextColor3Depth:u,pLineHeight:a,pFontSize:l,headerBarColor:o,headerBarColorPrimary:o,headerBarColorInfo:f,headerBarColorError:p,headerBarColorWarning:m,headerBarColorSuccess:c,textColor:t,textColor1Depth:s,textColor2Depth:t,textColor3Depth:u,textColorPrimary:o,textColorInfo:f,textColorSuccess:c,textColorWarning:m,textColorError:p,codeTextColor:t,codeColor:R,codeBorder:"1px solid #0000"})};var TP={name:"Typography",common:P,self:Aw},Jf=TP;var Xf=e=>{let{iconColor:o,primaryColor:t,errorColor:r,textColor2:a,successColor:l,opacityDisabled:n,actionColor:i,borderColor:d,hoverColor:s,lineHeight:u,borderRadius:f,fontSize:m}=e;return{fontSize:m,lineHeight:u,borderRadius:f,draggerColor:i,draggerBorder:`1px dashed ${d}`,draggerBorderHover:`1px dashed ${t}`,itemColorHover:s,itemColorHoverError:oe(r,{alpha:.06}),itemTextColor:a,itemTextColorError:r,itemTextColorSuccess:l,itemIconColor:o,itemDisabledOpacity:n,itemBorderImageCardError:`1px solid ${r}`,itemBorderImageCard:`1px solid ${d}`}},MX=Ie({name:"Upload",common:xe,peers:{Button:_o,Progress:Lf},self:Xf});var RP={name:"Upload",common:P,peers:{Button:po,Progress:wn},self(e){let{errorColor:o}=e,t=Xf(e);return t.itemColorHoverError=oe(o,{alpha:.09}),t}},ep=RP;var OP={name:"Watermark",common:P,self(e){let{fontFamily:o}=e;return{fontFamily:o}}},op=OP;var tp={name:"Image",common:P,peers:{Tooltip:ar},self:e=>{let{textColor2:o}=e;return{toolbarIconColor:o,toolbarColor:"rgba(0, 0, 0, .35)",toolbarBoxShadow:"none",toolbarBorderRadius:"24px"}}};var rp={name:"Skeleton",common:P,self(e){let{heightSmall:o,heightMedium:t,heightLarge:r,borderRadius:a}=e;return{color:"rgba(255, 255, 255, 0.12)",colorEnd:"rgba(255, 255, 255, 0.18)",borderRadius:a,heightSmall:o,heightMedium:t,heightLarge:r}}};function ap(e){return window.TouchEvent&&e instanceof window.TouchEvent}function lp(){let e=Q(new Map),o=t=>r=>{e.value.set(t,r)};return Yd(()=>e.value.clear()),[e,o]}var Dw=Y([$("slider",` display: block; padding: calc((var(--n-handle-size) - var(--n-rail-height)) / 2) 0; position: relative; @@ -714,88 +714,88 @@ ${o} width: 100%; cursor: pointer; user-select: none; - `,[xe("reverse",[K("slider-handles",[K("slider-handle",` + `,[Te("reverse",[$("slider-handles",[$("slider-handle",` transform: translate(50%, -50%); - `)]),K("slider-dots",[K("slider-dot",` + `)]),$("slider-dots",[$("slider-dot",` transform: translateX(50%, -50%); - `)]),xe("vertical",[K("slider-handles",[K("slider-handle",` + `)]),Te("vertical",[$("slider-handles",[$("slider-handle",` transform: translate(-50%, -50%); - `)]),K("slider-marks",[K("slider-mark",` + `)]),$("slider-marks",[$("slider-mark",` transform: translateY(calc(-50% + var(--n-dot-height) / 2)); - `)]),K("slider-dots",[K("slider-dot",` + `)]),$("slider-dots",[$("slider-dot",` transform: translateX(-50%) translateY(0); - `)])])]),xe("vertical",` + `)])])]),Te("vertical",` padding: 0 calc((var(--n-handle-size) - var(--n-rail-height)) / 2); width: var(--n-rail-width-vertical); height: 100%; - `,[K("slider-handles",` + `,[$("slider-handles",` top: calc(var(--n-handle-size) / 2); right: 0; bottom: calc(var(--n-handle-size) / 2); left: 0; - `,[K("slider-handle",` + `,[$("slider-handle",` top: unset; left: 50%; transform: translate(-50%, 50%); - `)]),K("slider-rail",` + `)]),$("slider-rail",` height: 100%; - `,[J("fill",` + `,[X("fill",` top: unset; right: 0; bottom: unset; left: 0; - `)]),xe("with-mark",` + `)]),Te("with-mark",` width: var(--n-rail-width-vertical); margin: 0 32px 0 8px; - `),K("slider-marks",` + `),$("slider-marks",` top: calc(var(--n-handle-size) / 2); right: unset; bottom: calc(var(--n-handle-size) / 2); left: 22px; - `,[K("slider-mark",` + `,[$("slider-mark",` transform: translateY(50%); white-space: nowrap; - `)]),K("slider-dots",` + `)]),$("slider-dots",` top: calc(var(--n-handle-size) / 2); right: unset; bottom: calc(var(--n-handle-size) / 2); left: 50%; - `,[K("slider-dot",` + `,[$("slider-dot",` transform: translateX(-50%) translateY(50%); - `)])]),xe("disabled",` + `)])]),Te("disabled",` cursor: not-allowed; opacity: var(--n-opacity-disabled); - `,[K("slider-handle",` + `,[$("slider-handle",` cursor: not-allowed; - `)]),xe("with-mark",` + `)]),Te("with-mark",` width: 100%; margin: 8px 0 32px 0; - `),Y("&:hover",[K("slider-rail",{backgroundColor:"var(--n-rail-color-hover)"},[J("fill",{backgroundColor:"var(--n-fill-color-hover)"})]),K("slider-handle",{boxShadow:"var(--n-handle-box-shadow-hover)"})]),xe("active",[K("slider-rail",{backgroundColor:"var(--n-rail-color-hover)"},[J("fill",{backgroundColor:"var(--n-fill-color-hover)"})]),K("slider-handle",{boxShadow:"var(--n-handle-box-shadow-hover)"})]),K("slider-marks",` + `),Y("&:hover",[$("slider-rail",{backgroundColor:"var(--n-rail-color-hover)"},[X("fill",{backgroundColor:"var(--n-fill-color-hover)"})]),$("slider-handle",{boxShadow:"var(--n-handle-box-shadow-hover)"})]),Te("active",[$("slider-rail",{backgroundColor:"var(--n-rail-color-hover)"},[X("fill",{backgroundColor:"var(--n-fill-color-hover)"})]),$("slider-handle",{boxShadow:"var(--n-handle-box-shadow-hover)"})]),$("slider-marks",` position: absolute; top: 18px; left: calc(var(--n-handle-size) / 2); right: calc(var(--n-handle-size) / 2); - `,[K("slider-mark",{position:"absolute",transform:"translateX(-50%)"})]),K("slider-rail",` + `,[$("slider-mark",{position:"absolute",transform:"translateX(-50%)"})]),$("slider-rail",` width: 100%; position: relative; height: var(--n-rail-height); background-color: var(--n-rail-color); transition: background-color .3s var(--n-bezier); border-radius: calc(var(--n-rail-height) / 2); - `,[J("fill",` + `,[X("fill",` position: absolute; top: 0; bottom: 0; border-radius: calc(var(--n-rail-height) / 2); transition: background-color .3s var(--n-bezier); background-color: var(--n-fill-color); - `)]),K("slider-handles",` + `)]),$("slider-handles",` position: absolute; top: 0; right: calc(var(--n-handle-size) / 2); bottom: 0; left: calc(var(--n-handle-size) / 2); - `,[K("slider-handle",` + `,[$("slider-handle",` outline: none; height: var(--n-handle-size); width: var(--n-handle-size); @@ -808,12 +808,12 @@ ${o} cursor: pointer; background-color: var(--n-handle-color); box-shadow: var(--n-handle-box-shadow); - `,[Y("&:hover",{boxShadow:"var(--n-handle-box-shadow-hover)"}),Y("&:hover:focus",{boxShadow:"var(--n-handle-box-shadow-active)"}),Y("&:focus",{boxShadow:"var(--n-handle-box-shadow-focus)"})])]),K("slider-dots",` + `,[Y("&:hover",{boxShadow:"var(--n-handle-box-shadow-hover)"}),Y("&:hover:focus",{boxShadow:"var(--n-handle-box-shadow-active)"}),Y("&:focus",{boxShadow:"var(--n-handle-box-shadow-focus)"})])]),$("slider-dots",` position: absolute; top: 50%; left: calc(var(--n-handle-size) / 2); right: calc(var(--n-handle-size) / 2); - `,[xe("transition-disabled",[K("slider-dot",{transition:"none"})]),K("slider-dot",` + `,[Te("transition-disabled",[$("slider-dot",{transition:"none"})]),$("slider-dot",` transition: border-color .3s var(--n-bezier), box-shadow .3s var(--n-bezier), @@ -827,59 +827,59 @@ ${o} box-sizing: border-box; border: var(--n-dot-border); background-color: var(--n-dot-color); - `,[xe("active",{border:"var(--n-dot-border-active)"})])])]),K("slider-handle-indicator",` + `,[Te("active",{border:"var(--n-dot-border-active)"})])])]),$("slider-handle-indicator",` font-size: var(--n-font-size); padding: 6px 10px; border-radius: var(--n-indicator-border-radius); color: var(--n-indicator-text-color); background-color: var(--n-indicator-color); box-shadow: var(--n-indicator-box-shadow); - `,[uu()]),K("slider-handle-indicator",` + `,[fu()]),$("slider-handle-indicator",` font-size: var(--n-font-size); padding: 6px 10px; border-radius: var(--n-indicator-border-radius); color: var(--n-indicator-text-color); background-color: var(--n-indicator-color); box-shadow: var(--n-indicator-box-shadow); - `,[xe("top",` + `,[Te("top",` margin-bottom: 12px; - `),xe("right",` + `),Te("right",` margin-left: 12px; - `),xe("bottom",` + `),Te("bottom",` margin-top: 12px; - `),xe("left",` + `),Te("left",` margin-right: 12px; - `),uu()]),pi(K("slider",[K("slider-dot",{backgroundColor:"var(--n-dot-color-modal)"})])),mi(K("slider",[K("slider-dot",{backgroundColor:"var(--n-dot-color-popover)"})]))]);var aP=0,lP=Object.assign(Object.assign({},Fo.props),{to:fa.propTo,defaultValue:{type:[Number,Array],default:0},marks:Object,disabled:{type:Boolean,default:void 0},formatTooltip:Function,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:[Number,String],default:1},range:Boolean,value:[Number,Array],placement:String,showTooltip:{type:Boolean,default:void 0},tooltip:{type:Boolean,default:!0},vertical:Boolean,reverse:Boolean,"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array]}),lp=le({name:"Slider",props:lP,setup(e){let{mergedClsPrefixRef:o,namespaceRef:t,inlineThemeDisabled:r}=Bo(e),a=Fo("Slider","-slider",ww,If,e,o),l=Z(null),[n,i]=ap(),[d,s]=ap(),u=Z(new Set),f=Rt(e),{mergedDisabledRef:c}=f,p=V(()=>{let{step:b}=e;if(b<=0||b==="mark")return 0;let N=b.toString(),z=0;return N.includes(".")&&(z=N.length-N.indexOf(".")-1),z}),x=Z(e.defaultValue),T=De(e,"value"),C=Zo(T,x),S=V(()=>{let{value:b}=C;return(e.range?b:[b]).map(Je)}),D=V(()=>S.value.length>2),j=V(()=>e.placement===void 0?e.vertical?"right":"top":e.placement),O=V(()=>{let{marks:b}=e;return b?Object.keys(b).map(parseFloat):null}),g=Z(-1),v=Z(-1),w=Z(-1),F=Z(!1),B=Z(!1),y=V(()=>{let{vertical:b,reverse:N}=e;return b?N?"top":"bottom":N?"right":"left"}),W=V(()=>{if(D.value)return;let b=S.value,N=Qe(e.range?Math.min(...b):e.min),z=Qe(e.range?Math.max(...b):b[0]),{value:te}=y;return e.vertical?{[te]:`${N}%`,height:`${z-N}%`}:{[te]:`${N}%`,width:`${z-N}%`}}),_=V(()=>{let b=[],{marks:N}=e;if(N){let z=S.value.slice();z.sort((Le,Q)=>Le-Q);let{value:te}=y,{value:fe}=D,{range:Ce}=e,ye=fe?()=>!1:Le=>Ce?Le>=z[0]&&Le<=z[z.length-1]:Le<=z[0];for(let Le of Object.keys(N)){let Q=Number(Le);b.push({active:ye(Q),label:N[Le],style:{[te]:`${Qe(Q)}%`}})}}return b});function ae(b,N){let z=Qe(b),{value:te}=y;return{[te]:`${z}%`,zIndex:N===g.value?1:0}}function he(b){return e.showTooltip||w.value===b||g.value===b&&F.value}function Me(b){return!(g.value===b&&v.value===b)}function de(b){var N;~b&&(g.value=b,(N=n.value.get(b))===null||N===void 0||N.focus())}function ie(){d.value.forEach((b,N)=>{he(N)&&b.syncPosition()})}function ge(b){let{"onUpdate:value":N,onUpdateValue:z}=e,{nTriggerFormInput:te,nTriggerFormChange:fe}=f;z&&Re(z,b),N&&Re(N,b),x.value=b,te(),fe()}function Ve(b){let{range:N}=e;if(N){if(Array.isArray(b)){let{value:z}=S;b.join()!==z.join()&&ge(b)}}else Array.isArray(b)||S.value[0]!==b&&ge(b)}function Ke(b,N){if(e.range){let z=S.value.slice();z.splice(N,1,b),Ve(z)}else Ve(b)}function He(b,N,z){let te=z!==void 0;z||(z=b-N>0?1:-1);let fe=O.value||[],{step:Ce}=e;if(Ce==="mark"){let Q=Be(b,fe.concat(N),te?z:void 0);return Q?Q.value:N}if(Ce<=0)return N;let{value:ye}=p,Le;if(te){let Q=Number((N/Ce).toFixed(ye)),re=Math.floor(Q),Se=Q>re?re:re-1,_e=Q<re?re:re+1;Le=Be(N,[Number((Se*Ce).toFixed(ye)),Number((_e*Ce).toFixed(ye)),...fe],z)}else{let Q=Do(b);Le=Be(b,[...fe,Q])}return Le?Je(Le.value):N}function Je(b){return Math.min(e.max,Math.max(e.min,b))}function Qe(b){let{max:N,min:z}=e;return(b-z)/(N-z)*100}function wo(b){let{max:N,min:z}=e;return z+(N-z)*b}function Do(b){let{step:N,min:z}=e;if(N<=0||N==="mark")return b;let te=Math.round((b-z)/N)*N+z;return Number(te.toFixed(p.value))}function Be(b,N=O.value,z){if(!N||!N.length)return null;let te=null,fe=-1;for(;++fe<N.length;){let Ce=N[fe]-b,ye=Math.abs(Ce);(z===void 0||Ce*z>0)&&(te===null||ye<te.distance)&&(te={index:fe,distance:ye,value:N[fe]})}return te}function We(b){let N=l.value;if(!N)return;let z=rp(b)?b.touches[0]:b,te=N.getBoundingClientRect(),fe;return e.vertical?fe=(te.bottom-z.clientY)/te.height:fe=(z.clientX-te.left)/te.width,e.reverse&&(fe=1-fe),wo(fe)}function ho(b){if(c.value)return;let{vertical:N,reverse:z}=e;switch(b.code){case"ArrowUp":b.preventDefault(),we(N&&z?-1:1);break;case"ArrowRight":b.preventDefault(),we(!N&&z?-1:1);break;case"ArrowDown":b.preventDefault(),we(N&&z?1:-1);break;case"ArrowLeft":b.preventDefault(),we(!N&&z?1:-1);break}}function we(b){let N=g.value;if(N===-1)return;let{step:z}=e,te=S.value[N],fe=z<=0||z==="mark"?te:te+z*b;Ke(He(fe,te,b>0?1:-1),N)}function qe(b){var N,z;if(c.value||!rp(b)&&b.button!==aP)return;let te=We(b);if(te===void 0)return;let fe=S.value.slice(),Ce=e.range?(z=(N=Be(te,fe))===null||N===void 0?void 0:N.index)!==null&&z!==void 0?z:-1:0;Ce!==-1&&(b.preventDefault(),de(Ce),to(),Ke(He(te,S.value[Ce]),Ce))}function to(){F.value||(F.value=!0,So("touchend",document,h),So("mouseup",document,h),So("touchmove",document,m),So("mousemove",document,m))}function vo(){F.value&&(F.value=!1,xo("touchend",document,h),xo("mouseup",document,h),xo("touchmove",document,m),xo("mousemove",document,m))}function m(b){let{value:N}=g;if(!F.value||N===-1){vo();return}let z=We(b);Ke(He(z,S.value[N]),N)}function h(){vo()}function k(b){g.value=b,c.value||(w.value=b)}function E(b){g.value===b&&(g.value=-1,vo()),w.value===b&&(w.value=-1)}function I(b){w.value=b}function G(b){w.value===b&&(w.value=-1)}Ze(g,(b,N)=>void No(()=>v.value=N)),Ze(C,()=>{if(e.marks){if(B.value)return;B.value=!0,No(()=>{B.value=!1})}No(ie)});let $=V(()=>{let{self:{railColor:b,railColorHover:N,fillColor:z,fillColorHover:te,handleColor:fe,opacityDisabled:Ce,dotColor:ye,dotColorModal:Le,handleBoxShadow:Q,handleBoxShadowHover:re,handleBoxShadowActive:Se,handleBoxShadowFocus:_e,dotBorder:Xe,dotBoxShadow:ze,railHeight:eo,railWidthVertical:Ge,handleSize:Go,dotHeight:ct,dotWidth:ll,dotBorderRadius:cr,fontSize:xr,dotBorderActive:Ta,dotColorPopover:nl},common:{cubicBezierEaseInOut:Ra}}=a.value;return{"--n-bezier":Ra,"--n-dot-border":Xe,"--n-dot-border-active":Ta,"--n-dot-border-radius":cr,"--n-dot-box-shadow":ze,"--n-dot-color":ye,"--n-dot-color-modal":Le,"--n-dot-color-popover":nl,"--n-dot-height":ct,"--n-dot-width":ll,"--n-fill-color":z,"--n-fill-color-hover":te,"--n-font-size":xr,"--n-handle-box-shadow":Q,"--n-handle-box-shadow-active":Se,"--n-handle-box-shadow-focus":_e,"--n-handle-box-shadow-hover":re,"--n-handle-color":fe,"--n-handle-size":Go,"--n-opacity-disabled":Ce,"--n-rail-color":b,"--n-rail-color-hover":N,"--n-rail-height":eo,"--n-rail-width-vertical":Ge}}),L=r?Ko("slider",void 0,$,e):void 0,U=V(()=>{let{self:{fontSize:b,indicatorColor:N,indicatorBoxShadow:z,indicatorTextColor:te,indicatorBorderRadius:fe}}=a.value;return{"--n-font-size":b,"--n-indicator-border-radius":fe,"--n-indicator-box-shadow":z,"--n-indicator-color":N,"--n-indicator-text-color":te}}),H=r?Ko("slider-indicator",void 0,U,e):void 0;return{mergedClsPrefix:o,namespace:t,uncontrolledValue:x,mergedValue:C,mergedDisabled:c,mergedPlacement:j,isMounted:Er(),adjustedTo:fa(e),dotTransitionDisabled:B,markInfos:_,isShowTooltip:he,isSkipCSSDetection:Me,handleRailRef:l,setHandleRefs:i,setFollowerRefs:s,fillStyle:W,getHandleStyle:ae,activeIndex:g,arrifiedValues:S,followerEnabledIndexSet:u,handleRailMouseDown:qe,handleHandleFocus:k,handleHandleBlur:E,handleHandleMouseEnter:I,handleHandleMouseLeave:G,handleRailKeyDown:ho,indicatorCssVars:r?void 0:U,indicatorThemeClass:H==null?void 0:H.themeClass,indicatorOnRender:H==null?void 0:H.onRender,cssVars:r?void 0:$,themeClass:L==null?void 0:L.themeClass,onRender:L==null?void 0:L.onRender}},render(){var e;let{mergedClsPrefix:o,themeClass:t,formatTooltip:r}=this;return(e=this.onRender)===null||e===void 0||e.call(this),R("div",{class:[`${o}-slider`,t,{[`${o}-slider--disabled`]:this.mergedDisabled,[`${o}-slider--active`]:this.activeIndex!==-1,[`${o}-slider--with-mark`]:this.marks,[`${o}-slider--vertical`]:this.vertical,[`${o}-slider--reverse`]:this.reverse}],style:this.cssVars,onKeydown:this.handleRailKeyDown,onMousedown:this.handleRailMouseDown,onTouchstart:this.handleRailMouseDown},R("div",{class:`${o}-slider-rail`},R("div",{class:`${o}-slider-rail__fill`,style:this.fillStyle}),this.marks?R("div",{class:[`${o}-slider-dots`,this.dotTransitionDisabled&&`${o}-slider-dots--transition-disabled`]},this.markInfos.map(a=>R("div",{key:a.label,class:[`${o}-slider-dot`,{[`${o}-slider-dot--active`]:a.active}],style:a.style}))):null,R("div",{ref:"handleRailRef",class:`${o}-slider-handles`},this.arrifiedValues.map((a,l)=>{let n=this.isShowTooltip(l);return R(gi,null,{default:()=>[R(wi,null,{default:()=>R("div",{ref:this.setHandleRefs(l),class:`${o}-slider-handle`,tabindex:this.mergedDisabled?-1:0,style:this.getHandleStyle(a,l),onFocus:()=>this.handleHandleFocus(l),onBlur:()=>this.handleHandleBlur(l),onMouseenter:()=>this.handleHandleMouseEnter(l),onMouseleave:()=>this.handleHandleMouseLeave(l)})}),this.tooltip&&R(Ci,{ref:this.setFollowerRefs(l),show:n,to:this.adjustedTo,enabled:this.showTooltip&&!this.range||this.followerEnabledIndexSet.has(l),teleportDisabled:this.adjustedTo===fa.tdkey,placement:this.mergedPlacement,containerClass:this.namespace},{default:()=>R(kt,{name:"fade-in-scale-up-transition",appear:this.isMounted,css:this.isSkipCSSDetection(l),onEnter:()=>this.followerEnabledIndexSet.add(l),onAfterLeave:()=>this.followerEnabledIndexSet.delete(l)},{default:()=>{var i;return n?((i=this.indicatorOnRender)===null||i===void 0||i.call(this),R("div",{class:[`${o}-slider-handle-indicator`,this.indicatorThemeClass,`${o}-slider-handle-indicator--${this.mergedPlacement}`],style:this.indicatorCssVars},typeof r=="function"?r(a):a)):null}})})]})})),this.marks?R("div",{class:`${o}-slider-marks`},this.markInfos.map(a=>R("div",{key:a.label,class:`${o}-slider-mark`,style:a.style},a.label))):null))}});var fd=lo("n-tree-select");var Xt=lo("n-tree");var Tw=le({name:"NTreeSwitcher",props:{clsPrefix:{type:String,required:!0},expanded:Boolean,hide:Boolean,loading:Boolean,onClick:Function},setup(e){let{renderSwitcherIconRef:o}=Te(Xt,null);return()=>{let{clsPrefix:t}=e;return R("span",{"data-switcher":!0,class:[`${t}-tree-node-switcher`,{[`${t}-tree-node-switcher--expanded`]:e.expanded,[`${t}-tree-node-switcher--hide`]:e.hide}],onClick:e.onClick},R("div",{class:`${t}-tree-node-switcher__icon`},R(Ct,null,{default:()=>{if(e.loading)return R(jr,{clsPrefix:t,key:"loading",radius:85,strokeWidth:20});let{value:r}=o;return r?r():R(bt,{clsPrefix:t,key:"switcher"},{default:()=>R(Js,null)})}})))}}});var Rw=le({name:"NTreeNodeCheckbox",props:{clsPrefix:{type:String,required:!0},focusable:Boolean,disabled:Boolean,checked:Boolean,indeterminate:Boolean,onCheck:Function},setup(e){let o=Te(Xt);function t(a){let{onCheck:l}=e;if(l)return l(a)}function r(a){e.indeterminate?t(!1):t(a)}return{handleUpdateValue:r,mergedTheme:o.mergedThemeRef}},render(){let{clsPrefix:e,mergedTheme:o,checked:t,indeterminate:r,disabled:a,focusable:l,handleUpdateValue:n}=this;return R("span",{class:`${e}-tree-node-checkbox`,"data-checkbox":!0},R(Nu,{focusable:l,disabled:a,theme:o.peers.Checkbox,themeOverrides:o.peerOverrides.Checkbox,checked:t,indeterminate:r,onUpdateChecked:n}))}});var Fw=le({name:"TreeNodeContent",props:{clsPrefix:{type:String,required:!0},disabled:Boolean,checked:Boolean,selected:Boolean,onClick:Function,onDragstart:Function,tmNode:{type:Object,required:!0},nodeProps:Object},setup(e){let{renderLabelRef:o,renderPrefixRef:t,renderSuffixRef:r,labelFieldRef:a}=Te(Xt),l=Z(null);function n(d){let{onClick:s}=e;s&&s(d)}function i(d){n(d)}return{selfRef:l,renderLabel:o,renderPrefix:t,renderSuffix:r,labelField:a,handleClick:i}},render(){let{clsPrefix:e,labelField:o,nodeProps:t,checked:r=!1,selected:a=!1,renderLabel:l,renderPrefix:n,renderSuffix:i,handleClick:d,onDragstart:s,tmNode:{rawNode:u,rawNode:{prefix:f,suffix:c,[o]:p}}}=this;return R("span",Object.assign({},t,{ref:"selfRef",class:[`${e}-tree-node-content`,t==null?void 0:t.class],onClick:d,draggable:s===void 0?void 0:!0,onDragstart:s}),n||f?R("div",{class:`${e}-tree-node-content__prefix`},n?n({option:u,selected:a,checked:r}):Ha(f)):null,R("div",{class:`${e}-tree-node-content__text`},l?l({option:u,selected:a,checked:r}):Ha(p)),i||c?R("div",{class:`${e}-tree-node-content__suffix`},i?i({option:u,selected:a,checked:r}):Ha(c)):null)}});function np({position:e,offsetLevel:o,indent:t,el:r}){let a={position:"absolute",boxSizing:"border-box",right:0};if(e==="inside")a.left=0,a.top=0,a.bottom=0,a.borderRadius="inherit",a.boxShadow="inset 0 0 0 2px var(--n-drop-mark-color)";else{let l=e==="before"?"top":"bottom";a[l]=0,a.left=`${r.offsetLeft+6-o*t}px`,a.height="2px",a.backgroundColor="var(--n-drop-mark-color)",a.transformOrigin=l,a.borderRadius="1px",a.transform=e==="before"?"translateY(-4px)":"translateY(4px)"}return R("div",{style:a})}function Ow({dropPosition:e,node:o}){return o.isLeaf===!1||o.children?!0:e!=="inside"}var nP=le({name:"TreeNode",props:{clsPrefix:{type:String,required:!0},tmNode:{type:Object,required:!0}},setup(e){let o=Te(Xt),{droppingNodeParentRef:t,droppingMouseNodeRef:r,draggingNodeRef:a,droppingPositionRef:l,droppingOffsetLevelRef:n,nodePropsRef:i,indentRef:d,blockLineRef:s}=o,u=V(()=>o.disabledRef.value||e.tmNode.disabled),f=V(()=>{let{value:y}=i;if(!!y)return y({option:e.tmNode.rawNode})}),c=Z(null),p={value:null};fo(()=>{p.value=c.value.$el});function x(){let{tmNode:y}=e;if(!y.isLeaf&&!y.shallowLoaded){o.loadingKeysRef.value.has(y.key)||o.loadingKeysRef.value.add(y.key);let{onLoadRef:{value:W}}=o;W&&W(y.rawNode).then(()=>{o.handleSwitcherClick(y)}).finally(()=>{o.loadingKeysRef.value.delete(y.key)})}else o.handleSwitcherClick(y)}let T=Ye(()=>!e.tmNode.disabled&&o.selectableRef.value&&(o.internalTreeSelect?o.mergedCheckStrategyRef.value!=="child"||o.multipleRef.value&&o.cascadeRef.value||e.tmNode.isLeaf:!0));function C(y){!T.value||ri(y,"checkbox")||ri(y,"switcher")||o.handleSelect(e.tmNode)}function S(y){var W,_;s.value||(u.value||C(y),(_=(W=f.value)===null||W===void 0?void 0:W.onClick)===null||_===void 0||_.call(W,y))}function D(y){var W,_;!s.value||(u.value||C(y),(_=(W=f.value)===null||W===void 0?void 0:W.onClick)===null||_===void 0||_.call(W,y))}function j(y){o.handleCheck(e.tmNode,y)}function O(y){o.handleDragStart({event:y,node:e.tmNode})}function g(y){y.currentTarget===y.target&&o.handleDragEnter({event:y,node:e.tmNode})}function v(y){y.preventDefault(),o.handleDragOver({event:y,node:e.tmNode})}function w(y){o.handleDragEnd({event:y,node:e.tmNode})}function F(y){y.currentTarget===y.target&&o.handleDragLeave({event:y,node:e.tmNode})}function B(y){y.preventDefault(),l.value!==null&&o.handleDrop({event:y,node:e.tmNode,dropPosition:l.value})}return{showDropMark:Ye(()=>{let{value:y}=a;if(!y)return;let{value:W}=l;if(!W)return;let{value:_}=r;if(!_)return;let{tmNode:ae}=e;return ae.key===_.key}),showDropMarkAsParent:Ye(()=>{let{value:y}=t;if(!y)return!1;let{tmNode:W}=e,{value:_}=l;return _==="before"||_==="after"?y.key===W.key:!1}),pending:Ye(()=>o.pendingNodeKeyRef.value===e.tmNode.key),loading:Ye(()=>o.loadingKeysRef.value.has(e.tmNode.key)),highlight:Ye(()=>{var y;return(y=o.highlightKeySetRef.value)===null||y===void 0?void 0:y.has(e.tmNode.key)}),checked:Ye(()=>o.displayedCheckedKeysRef.value.includes(e.tmNode.key)),indeterminate:Ye(()=>o.displayedIndeterminateKeysRef.value.includes(e.tmNode.key)),selected:Ye(()=>o.mergedSelectedKeysRef.value.includes(e.tmNode.key)),expanded:Ye(()=>o.mergedExpandedKeysRef.value.includes(e.tmNode.key)),disabled:u,checkable:V(()=>o.checkableRef.value&&(o.cascadeRef.value||o.mergedCheckStrategyRef.value!=="child"||e.tmNode.isLeaf)),checkboxDisabled:V(()=>!!e.tmNode.rawNode.checkboxDisabled),selectable:T,internalScrollable:o.internalScrollableRef,draggable:o.draggableRef,blockLine:s,nodeProps:f,checkboxFocusable:o.internalCheckboxFocusableRef,droppingPosition:l,droppingOffsetLevel:n,indent:d,contentInstRef:c,contentElRef:p,handleCheck:j,handleDrop:B,handleDragStart:O,handleDragEnter:g,handleDragOver:v,handleDragEnd:w,handleDragLeave:F,handleLineClick:D,handleContentClick:S,handleSwitcherClick:x}},render(){let{tmNode:e,clsPrefix:o,checkable:t,selectable:r,selected:a,checked:l,highlight:n,draggable:i,blockLine:d,indent:s,disabled:u,pending:f,internalScrollable:c,nodeProps:p}=this,x=i&&!u?{onDragenter:this.handleDragEnter,onDragleave:this.handleDragLeave,onDragend:this.handleDragEnd,onDrop:this.handleDrop,onDragover:this.handleDragOver}:void 0,T=c?Wa(e.key):void 0;return R("div",Object.assign({class:`${o}-tree-node-wrapper`},x),R("div",Object.assign({},d?p:void 0,{class:[`${o}-tree-node`,{[`${o}-tree-node--selected`]:a,[`${o}-tree-node--checkable`]:t,[`${o}-tree-node--highlight`]:n,[`${o}-tree-node--pending`]:f,[`${o}-tree-node--disabled`]:u,[`${o}-tree-node--selectable`]:r},p==null?void 0:p.class],"data-key":T,draggable:i&&d,onClick:this.handleLineClick,onDragstart:i&&d&&!u?this.handleDragStart:void 0}),ws(e.level,R("div",{class:`${o}-tree-node-indent`,style:{flex:`0 0 ${s}px`}})),R(Tw,{clsPrefix:o,expanded:this.expanded,loading:this.loading,hide:e.isLeaf,onClick:this.handleSwitcherClick}),t?R(Rw,{focusable:this.checkboxFocusable,disabled:u||this.checkboxDisabled,clsPrefix:o,checked:this.checked,indeterminate:this.indeterminate,onCheck:this.handleCheck}):null,R(Fw,{ref:"contentInstRef",clsPrefix:o,checked:l,selected:a,onClick:this.handleContentClick,nodeProps:d?void 0:p,onDragstart:i&&!d&&!u?this.handleDragStart:void 0,tmNode:e}),i?this.showDropMark?np({el:this.contentElRef.value,position:this.droppingPosition,offsetLevel:this.droppingOffsetLevel,indent:s}):this.showDropMarkAsParent?np({el:this.contentElRef.value,position:"inside",offsetLevel:this.droppingOffsetLevel,indent:s}):null:null))}}),pd=nP;function Cw(e,o,t,r){e==null||e.forEach(a=>{t(a),Cw(a[o],o,t,r),r(a)})}function bw(e,o,t,r,a){let l=new Set,n=new Set,i=[];return Cw(e,r,d=>{if(i.push(d),a(o,d)){n.add(d[t]);for(let s=i.length-2;s>=0;--s)if(!l.has(i[s][t]))l.add(i[s][t]);else return}},()=>{i.pop()}),{expandedKeys:Array.from(l),highlightKeySet:n}}var ip=null;if(typeof window!="undefined"&&Image){let e=new Image;e.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="}function yw(e,o,t,r,a){let l=new Set,n=new Set,i=new Set,d=[],s=[],u=[];function f(p){p.forEach(x=>{if(u.push(x),o(t,x)){l.add(x[r]),i.add(x[r]);for(let C=u.length-2;C>=0;--C){let S=u[C][r];if(!n.has(S))n.add(S),l.has(S)&&l.delete(S);else break}}let T=x[a];T&&f(T),u.pop()})}f(e);function c(p,x){p.forEach(T=>{let C=T[r],S=l.has(C),D=n.has(C);if(!S&&!D)return;let j=T[a];if(j)if(S)x.push(T);else{d.push(C);let O=Object.assign(Object.assign({},T),{[a]:[]});x.push(O),c(j,O[a])}else x.push(T)})}return c(e,s),{filteredTree:s,highlightKeySet:i,expandedKeys:d}}function vw({fNodesRef:e,mergedExpandedKeysRef:o,mergedSelectedKeysRef:t,handleSelect:r,handleSwitcherClick:a}){let{value:l}=t,n=Te(fd,null),i=n?n.pendingNodeKeyRef:Z(l.length?l[l.length-1]:null);function d(u){let{value:f}=i;if(f===null){if(["ArrowDown","ArrowUp","ArrowLeft","ArrowRight"].includes(u.code)&&f===null){let{value:c}=e,p=0;for(;p<c.length;){if(!c[p].disabled){i.value=c[p].key;break}p+=1}}}else{let{value:c}=e,p=c.findIndex(x=>x.key===f);if(!~p)return;if(u.code==="Enter"||u.code==="NumpadEnter")r(c[p]);else if(u.code==="ArrowDown")for(p+=1;p<c.length;){if(!c[p].disabled){i.value=c[p].key;break}p+=1}else if(u.code==="ArrowUp")for(p-=1;p>=0;){if(!c[p].disabled){i.value=c[p].key;break}p-=1}else if(u.code==="ArrowLeft"){let x=c[p];if(x.isLeaf||!o.value.includes(f)){let T=x.getParent();T&&(i.value=T.key)}else a(x)}else if(u.code==="ArrowRight"){let x=c[p];if(x.isLeaf)return;if(!o.value.includes(f))a(x);else for(p+=1;p<c.length;){if(!c[p].disabled){i.value=c[p].key;break}p+=1}}}}function s(u){switch(u.code){case"ArrowUp":case"ArrowDown":u.preventDefault()}}return{pendingNodeKeyRef:i,handleKeyup:d,handleKeydown:s}}var kw=le({name:"TreeMotionWrapper",props:{clsPrefix:{type:String,required:!0},height:Number,nodes:{type:Array,required:!0},mode:{type:String,required:!0},onAfterEnter:{type:Function,required:!0}},render(){let{clsPrefix:e}=this;return R(el,{onAfterEnter:this.onAfterEnter,appear:!0,reverse:this.mode==="collapse"},{default:()=>R("div",{class:[`${e}-tree-motion-wrapper`,`${e}-tree-motion-wrapper--${this.mode}`],style:{height:Br(this.height)}},this.nodes.map(o=>R(pd,{clsPrefix:e,tmNode:o})))})}});var Aw=K("tree",` + `),fu()]),ci($("slider",[$("slider-dot",{backgroundColor:"var(--n-dot-color-modal)"})])),hi($("slider",[$("slider-dot",{backgroundColor:"var(--n-dot-color-popover)"})]))]);var FP=0,CP=Object.assign(Object.assign({},ko.props),{to:Sa.propTo,defaultValue:{type:[Number,Array],default:0},marks:Object,disabled:{type:Boolean,default:void 0},formatTooltip:Function,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:[Number,String],default:1},range:Boolean,value:[Number,Array],placement:String,showTooltip:{type:Boolean,default:void 0},tooltip:{type:Boolean,default:!0},vertical:Boolean,reverse:Boolean,"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array]}),np=re({name:"Slider",props:CP,setup(e){let{mergedClsPrefixRef:o,namespaceRef:t,inlineThemeDisabled:r}=Wo(e),a=ko("Slider","-slider",Dw,Hf,e,o),l=Q(null),[n,i]=lp(),[d,s]=lp(),u=Q(new Set),f=vt(e),{mergedDisabledRef:m}=f,p=W(()=>{let{step:D}=e;if(D<=0||D==="mark")return 0;let L=D.toString(),H=0;return L.includes(".")&&(H=L.length-L.indexOf(".")-1),H}),c=Q(e.defaultValue),R=_e(e,"value"),b=lt(R,c),h=W(()=>{let{value:D}=b;return(e.range?D:[D]).map(ro)}),k=W(()=>h.value.length>2),z=W(()=>e.placement===void 0?e.vertical?"right":"top":e.placement),C=W(()=>{let{marks:D}=e;return D?Object.keys(D).map(parseFloat):null}),g=Q(-1),v=Q(-1),S=Q(-1),F=Q(!1),B=Q(!1),y=W(()=>{let{vertical:D,reverse:L}=e;return D?L?"top":"bottom":L?"right":"left"}),I=W(()=>{if(k.value)return;let D=h.value,L=Ke(e.range?Math.min(...D):e.min),H=Ke(e.range?Math.max(...D):D[0]),{value:ie}=y;return e.vertical?{[ie]:`${L}%`,height:`${H-L}%`}:{[ie]:`${L}%`,width:`${H-L}%`}}),E=W(()=>{let D=[],{marks:L}=e;if(L){let H=h.value.slice();H.sort((Ce,K)=>Ce-K);let{value:ie}=y,{value:pe}=k,{range:ve}=e,Ae=pe?()=>!1:Ce=>ve?Ce>=H[0]&&Ce<=H[H.length-1]:Ce<=H[0];for(let Ce of Object.keys(L)){let K=Number(Ce);D.push({active:Ae(K),label:L[Ce],style:{[ie]:`${Ke(K)}%`}})}}return D});function se(D,L){let H=Ke(D),{value:ie}=y;return{[ie]:`${H}%`,zIndex:L===g.value?1:0}}function Se(D){return e.showTooltip||S.value===D||g.value===D&&F.value}function Ee(D){return!(g.value===D&&v.value===D)}function me(D){var L;~D&&(g.value=D,(L=n.value.get(D))===null||L===void 0||L.focus())}function ue(){d.value.forEach((D,L)=>{Se(L)&&D.syncPosition()})}function Fe(D){let{"onUpdate:value":L,onUpdateValue:H}=e,{nTriggerFormInput:ie,nTriggerFormChange:pe}=f;H&&ye(H,D),L&&ye(L,D),c.value=D,ie(),pe()}function Ge(D){let{range:L}=e;if(L){if(Array.isArray(D)){let{value:H}=h;D.join()!==H.join()&&Fe(D)}}else Array.isArray(D)||h.value[0]!==D&&Fe(D)}function Ye(D,L){if(e.range){let H=h.value.slice();H.splice(L,1,D),Ge(H)}else Ge(D)}function $e(D,L,H){let ie=H!==void 0;H||(H=D-L>0?1:-1);let pe=C.value||[],{step:ve}=e;if(ve==="mark"){let K=We(D,pe.concat(L),ie?H:void 0);return K?K.value:L}if(ve<=0)return L;let{value:Ae}=p,Ce;if(ie){let K=Number((L/ve).toFixed(Ae)),ne=Math.floor(K),Re=K>ne?ne:ne-1,T=K<ne?ne:ne+1;Ce=We(L,[Number((Re*ve).toFixed(Ae)),Number((T*ve).toFixed(Ae)),...pe],H)}else{let K=bo(D);Ce=We(D,[...pe,K])}return Ce?ro(Ce.value):L}function ro(D){return Math.min(e.max,Math.max(e.min,D))}function Ke(D){let{max:L,min:H}=e;return(D-H)/(L-H)*100}function So(D){let{max:L,min:H}=e;return H+(L-H)*D}function bo(D){let{step:L,min:H}=e;if(L<=0||L==="mark")return D;let ie=Math.round((D-H)/L)*L+H;return Number(ie.toFixed(p.value))}function We(D,L=C.value,H){if(!L||!L.length)return null;let ie=null,pe=-1;for(;++pe<L.length;){let ve=L[pe]-D,Ae=Math.abs(ve);(H===void 0||ve*H>0)&&(ie===null||Ae<ie.distance)&&(ie={index:pe,distance:Ae,value:L[pe]})}return ie}function qe(D){let L=l.value;if(!L)return;let H=ap(D)?D.touches[0]:D,ie=L.getBoundingClientRect(),pe;return e.vertical?pe=(ie.bottom-H.clientY)/ie.height:pe=(H.clientX-ie.left)/ie.width,e.reverse&&(pe=1-pe),So(pe)}function go(D){if(m.value)return;let{vertical:L,reverse:H}=e;switch(D.code){case"ArrowUp":D.preventDefault(),Le(L&&H?-1:1);break;case"ArrowRight":D.preventDefault(),Le(!L&&H?-1:1);break;case"ArrowDown":D.preventDefault(),Le(L&&H?1:-1);break;case"ArrowLeft":D.preventDefault(),Le(!L&&H?1:-1);break}}function Le(D){let L=g.value;if(L===-1)return;let{step:H}=e,ie=h.value[L],pe=H<=0||H==="mark"?ie:ie+H*D;Ye($e(pe,ie,D>0?1:-1),L)}function co(D){var L,H;if(m.value||!ap(D)&&D.button!==FP)return;let ie=qe(D);if(ie===void 0)return;let pe=h.value.slice(),ve=e.range?(H=(L=We(ie,pe))===null||L===void 0?void 0:L.index)!==null&&H!==void 0?H:-1:0;ve!==-1&&(D.preventDefault(),me(ve),Ao(),Ye($e(ie,h.value[ve]),ve))}function Ao(){F.value||(F.value=!0,Fo("touchend",document,O),Fo("mouseup",document,O),Fo("touchmove",document,x),Fo("mousemove",document,x))}function Lo(){F.value&&(F.value=!1,Oo("touchend",document,O),Oo("mouseup",document,O),Oo("touchmove",document,x),Oo("mousemove",document,x))}function x(D){let{value:L}=g;if(!F.value||L===-1){Lo();return}let H=qe(D);Ye($e(H,h.value[L]),L)}function O(){Lo()}function N(D){g.value=D,m.value||(S.value=D)}function j(D){g.value===D&&(g.value=-1,Lo()),S.value===D&&(S.value=-1)}function U(D){S.value=D}function ae(D){S.value===D&&(S.value=-1)}lo(g,(D,L)=>void Uo(()=>v.value=L)),lo(b,()=>{if(e.marks){if(B.value)return;B.value=!0,Uo(()=>{B.value=!1})}Uo(ue)});let ee=W(()=>{let{self:{railColor:D,railColorHover:L,fillColor:H,fillColorHover:ie,handleColor:pe,opacityDisabled:ve,dotColor:Ae,dotColorModal:Ce,handleBoxShadow:K,handleBoxShadowHover:ne,handleBoxShadowActive:Re,handleBoxShadowFocus:T,dotBorder:_,dotBoxShadow:te,railHeight:de,railWidthVertical:Oe,handleSize:ze,dotHeight:Je,dotWidth:eo,dotBorderRadius:Zo,fontSize:Io,dotBorderActive:Bo,dotColorPopover:Or},common:{cubicBezierEaseInOut:ya}}=a.value;return{"--n-bezier":ya,"--n-dot-border":_,"--n-dot-border-active":Bo,"--n-dot-border-radius":Zo,"--n-dot-box-shadow":te,"--n-dot-color":Ae,"--n-dot-color-modal":Ce,"--n-dot-color-popover":Or,"--n-dot-height":Je,"--n-dot-width":eo,"--n-fill-color":H,"--n-fill-color-hover":ie,"--n-font-size":Io,"--n-handle-box-shadow":K,"--n-handle-box-shadow-active":Re,"--n-handle-box-shadow-focus":T,"--n-handle-box-shadow-hover":ne,"--n-handle-color":pe,"--n-handle-size":ze,"--n-opacity-disabled":ve,"--n-rail-color":D,"--n-rail-color-hover":L,"--n-rail-height":de,"--n-rail-width-vertical":Oe}}),V=r?tt("slider",void 0,ee,e):void 0,Z=W(()=>{let{self:{fontSize:D,indicatorColor:L,indicatorBoxShadow:H,indicatorTextColor:ie,indicatorBorderRadius:pe}}=a.value;return{"--n-font-size":D,"--n-indicator-border-radius":pe,"--n-indicator-box-shadow":H,"--n-indicator-color":L,"--n-indicator-text-color":ie}}),q=r?tt("slider-indicator",void 0,Z,e):void 0;return{mergedClsPrefix:o,namespace:t,uncontrolledValue:c,mergedValue:b,mergedDisabled:m,mergedPlacement:z,isMounted:Wr(),adjustedTo:Sa(e),dotTransitionDisabled:B,markInfos:E,isShowTooltip:Se,isSkipCSSDetection:Ee,handleRailRef:l,setHandleRefs:i,setFollowerRefs:s,fillStyle:I,getHandleStyle:se,activeIndex:g,arrifiedValues:h,followerEnabledIndexSet:u,handleRailMouseDown:co,handleHandleFocus:N,handleHandleBlur:j,handleHandleMouseEnter:U,handleHandleMouseLeave:ae,handleRailKeyDown:go,indicatorCssVars:r?void 0:Z,indicatorThemeClass:q==null?void 0:q.themeClass,indicatorOnRender:q==null?void 0:q.onRender,cssVars:r?void 0:ee,themeClass:V==null?void 0:V.themeClass,onRender:V==null?void 0:V.onRender}},render(){var e;let{mergedClsPrefix:o,themeClass:t,formatTooltip:r}=this;return(e=this.onRender)===null||e===void 0||e.call(this),w("div",{class:[`${o}-slider`,t,{[`${o}-slider--disabled`]:this.mergedDisabled,[`${o}-slider--active`]:this.activeIndex!==-1,[`${o}-slider--with-mark`]:this.marks,[`${o}-slider--vertical`]:this.vertical,[`${o}-slider--reverse`]:this.reverse}],style:this.cssVars,onKeydown:this.handleRailKeyDown,onMousedown:this.handleRailMouseDown,onTouchstart:this.handleRailMouseDown},w("div",{class:`${o}-slider-rail`},w("div",{class:`${o}-slider-rail__fill`,style:this.fillStyle}),this.marks?w("div",{class:[`${o}-slider-dots`,this.dotTransitionDisabled&&`${o}-slider-dots--transition-disabled`]},this.markInfos.map(a=>w("div",{key:a.label,class:[`${o}-slider-dot`,{[`${o}-slider-dot--active`]:a.active}],style:a.style}))):null,w("div",{ref:"handleRailRef",class:`${o}-slider-handles`},this.arrifiedValues.map((a,l)=>{let n=this.isShowTooltip(l);return w(Ti,null,{default:()=>[w(Ri,null,{default:()=>w("div",{ref:this.setHandleRefs(l),class:`${o}-slider-handle`,tabindex:this.mergedDisabled?-1:0,style:this.getHandleStyle(a,l),onFocus:()=>this.handleHandleFocus(l),onBlur:()=>this.handleHandleBlur(l),onMouseenter:()=>this.handleHandleMouseEnter(l),onMouseleave:()=>this.handleHandleMouseLeave(l)})}),this.tooltip&&w(yi,{ref:this.setFollowerRefs(l),show:n,to:this.adjustedTo,enabled:this.showTooltip&&!this.range||this.followerEnabledIndexSet.has(l),teleportDisabled:this.adjustedTo===Sa.tdkey,placement:this.mergedPlacement,containerClass:this.namespace},{default:()=>w(Et,{name:"fade-in-scale-up-transition",appear:this.isMounted,css:this.isSkipCSSDetection(l),onEnter:()=>this.followerEnabledIndexSet.add(l),onAfterLeave:()=>this.followerEnabledIndexSet.delete(l)},{default:()=>{var i;return n?((i=this.indicatorOnRender)===null||i===void 0||i.call(this),w("div",{class:[`${o}-slider-handle-indicator`,this.indicatorThemeClass,`${o}-slider-handle-indicator--${this.mergedPlacement}`],style:this.indicatorCssVars},typeof r=="function"?r(a):a)):null}})})]})})),this.marks?w("div",{class:`${o}-slider-marks`},this.markInfos.map(a=>w("div",{key:a.label,class:`${o}-slider-mark`,style:a.style},a.label))):null))}});var md=uo("n-tree-select");var lr=uo("n-tree");var Pw=re({name:"NTreeSwitcher",props:{clsPrefix:{type:String,required:!0},expanded:Boolean,hide:Boolean,loading:Boolean,onClick:Function},setup(e){let{renderSwitcherIconRef:o}=be(lr,null);return()=>{let{clsPrefix:t}=e;return w("span",{"data-switcher":!0,class:[`${t}-tree-node-switcher`,{[`${t}-tree-node-switcher--expanded`]:e.expanded,[`${t}-tree-node-switcher--hide`]:e.hide}],onClick:e.onClick},w("div",{class:`${t}-tree-node-switcher__icon`},w(Dt,null,{default:()=>{if(e.loading)return w(Qr,{clsPrefix:t,key:"loading",radius:85,strokeWidth:20});let{value:r}=o;return r?r():w(Pt,{clsPrefix:t,key:"switcher"},{default:()=>w(Xs,null)})}})))}}});var Mw=re({name:"NTreeNodeCheckbox",props:{clsPrefix:{type:String,required:!0},focusable:Boolean,disabled:Boolean,checked:Boolean,indeterminate:Boolean,onCheck:Function},setup(e){let o=be(lr);function t(a){let{onCheck:l}=e;if(l)return l(a)}function r(a){e.indeterminate?t(!1):t(a)}return{handleUpdateValue:r,mergedTheme:o.mergedThemeRef}},render(){let{clsPrefix:e,mergedTheme:o,checked:t,indeterminate:r,disabled:a,focusable:l,handleUpdateValue:n}=this;return w("span",{class:`${e}-tree-node-checkbox`,"data-checkbox":!0},w(_u,{focusable:l,disabled:a,theme:o.peers.Checkbox,themeOverrides:o.peerOverrides.Checkbox,checked:t,indeterminate:r,onUpdateChecked:n}))}});var Bw=re({name:"TreeNodeContent",props:{clsPrefix:{type:String,required:!0},disabled:Boolean,checked:Boolean,selected:Boolean,onClick:Function,onDragstart:Function,tmNode:{type:Object,required:!0},nodeProps:Object},setup(e){let{renderLabelRef:o,renderPrefixRef:t,renderSuffixRef:r,labelFieldRef:a}=be(lr),l=Q(null);function n(d){let{onClick:s}=e;s&&s(d)}function i(d){n(d)}return{selfRef:l,renderLabel:o,renderPrefix:t,renderSuffix:r,labelField:a,handleClick:i}},render(){let{clsPrefix:e,labelField:o,nodeProps:t,checked:r=!1,selected:a=!1,renderLabel:l,renderPrefix:n,renderSuffix:i,handleClick:d,onDragstart:s,tmNode:{rawNode:u,rawNode:{prefix:f,suffix:m,[o]:p}}}=this;return w("span",Object.assign({},t,{ref:"selfRef",class:[`${e}-tree-node-content`,t==null?void 0:t.class],onClick:d,draggable:s===void 0?void 0:!0,onDragstart:s}),n||f?w("div",{class:`${e}-tree-node-content__prefix`},n?n({option:u,selected:a,checked:r}):za(f)):null,w("div",{class:`${e}-tree-node-content__text`},l?l({option:u,selected:a,checked:r}):za(p)),i||m?w("div",{class:`${e}-tree-node-content__suffix`},i?i({option:u,selected:a,checked:r}):za(m)):null)}});function ip({position:e,offsetLevel:o,indent:t,el:r}){let a={position:"absolute",boxSizing:"border-box",right:0};if(e==="inside")a.left=0,a.top=0,a.bottom=0,a.borderRadius="inherit",a.boxShadow="inset 0 0 0 2px var(--n-drop-mark-color)";else{let l=e==="before"?"top":"bottom";a[l]=0,a.left=`${r.offsetLeft+6-o*t}px`,a.height="2px",a.backgroundColor="var(--n-drop-mark-color)",a.transformOrigin=l,a.borderRadius="1px",a.transform=e==="before"?"translateY(-4px)":"translateY(4px)"}return w("div",{style:a})}function Ew({dropPosition:e,node:o}){return o.isLeaf===!1||o.children?!0:e!=="inside"}var bP=re({name:"TreeNode",props:{clsPrefix:{type:String,required:!0},tmNode:{type:Object,required:!0}},setup(e){let o=be(lr),{droppingNodeParentRef:t,droppingMouseNodeRef:r,draggingNodeRef:a,droppingPositionRef:l,droppingOffsetLevelRef:n,nodePropsRef:i,indentRef:d,blockLineRef:s}=o,u=W(()=>o.disabledRef.value||e.tmNode.disabled),f=W(()=>{let{value:y}=i;if(!!y)return y({option:e.tmNode.rawNode})}),m=Q(null),p={value:null};no(()=>{p.value=m.value.$el});function c(){let{tmNode:y}=e;if(!y.isLeaf&&!y.shallowLoaded){o.loadingKeysRef.value.has(y.key)||o.loadingKeysRef.value.add(y.key);let{onLoadRef:{value:I}}=o;I&&I(y.rawNode).then(()=>{o.handleSwitcherClick(y)}).finally(()=>{o.loadingKeysRef.value.delete(y.key)})}else o.handleSwitcherClick(y)}let R=to(()=>!e.tmNode.disabled&&o.selectableRef.value&&(o.internalTreeSelect?o.mergedCheckStrategyRef.value!=="child"||o.multipleRef.value&&o.cascadeRef.value||e.tmNode.isLeaf:!0));function b(y){!R.value||li(y,"checkbox")||li(y,"switcher")||o.handleSelect(e.tmNode)}function h(y){var I,E;s.value||(u.value||b(y),(E=(I=f.value)===null||I===void 0?void 0:I.onClick)===null||E===void 0||E.call(I,y))}function k(y){var I,E;!s.value||(u.value||b(y),(E=(I=f.value)===null||I===void 0?void 0:I.onClick)===null||E===void 0||E.call(I,y))}function z(y){o.handleCheck(e.tmNode,y)}function C(y){o.handleDragStart({event:y,node:e.tmNode})}function g(y){y.currentTarget===y.target&&o.handleDragEnter({event:y,node:e.tmNode})}function v(y){y.preventDefault(),o.handleDragOver({event:y,node:e.tmNode})}function S(y){o.handleDragEnd({event:y,node:e.tmNode})}function F(y){y.currentTarget===y.target&&o.handleDragLeave({event:y,node:e.tmNode})}function B(y){y.preventDefault(),l.value!==null&&o.handleDrop({event:y,node:e.tmNode,dropPosition:l.value})}return{showDropMark:to(()=>{let{value:y}=a;if(!y)return;let{value:I}=l;if(!I)return;let{value:E}=r;if(!E)return;let{tmNode:se}=e;return se.key===E.key}),showDropMarkAsParent:to(()=>{let{value:y}=t;if(!y)return!1;let{tmNode:I}=e,{value:E}=l;return E==="before"||E==="after"?y.key===I.key:!1}),pending:to(()=>o.pendingNodeKeyRef.value===e.tmNode.key),loading:to(()=>o.loadingKeysRef.value.has(e.tmNode.key)),highlight:to(()=>{var y;return(y=o.highlightKeySetRef.value)===null||y===void 0?void 0:y.has(e.tmNode.key)}),checked:to(()=>o.displayedCheckedKeysRef.value.includes(e.tmNode.key)),indeterminate:to(()=>o.displayedIndeterminateKeysRef.value.includes(e.tmNode.key)),selected:to(()=>o.mergedSelectedKeysRef.value.includes(e.tmNode.key)),expanded:to(()=>o.mergedExpandedKeysRef.value.includes(e.tmNode.key)),disabled:u,checkable:W(()=>o.checkableRef.value&&(o.cascadeRef.value||o.mergedCheckStrategyRef.value!=="child"||e.tmNode.isLeaf)),checkboxDisabled:W(()=>!!e.tmNode.rawNode.checkboxDisabled),selectable:R,internalScrollable:o.internalScrollableRef,draggable:o.draggableRef,blockLine:s,nodeProps:f,checkboxFocusable:o.internalCheckboxFocusableRef,droppingPosition:l,droppingOffsetLevel:n,indent:d,contentInstRef:m,contentElRef:p,handleCheck:z,handleDrop:B,handleDragStart:C,handleDragEnter:g,handleDragOver:v,handleDragEnd:S,handleDragLeave:F,handleLineClick:k,handleContentClick:h,handleSwitcherClick:c}},render(){let{tmNode:e,clsPrefix:o,checkable:t,selectable:r,selected:a,checked:l,highlight:n,draggable:i,blockLine:d,indent:s,disabled:u,pending:f,internalScrollable:m,nodeProps:p}=this,c=i&&!u?{onDragenter:this.handleDragEnter,onDragleave:this.handleDragLeave,onDragend:this.handleDragEnd,onDrop:this.handleDrop,onDragover:this.handleDragOver}:void 0,R=m?ja(e.key):void 0;return w("div",Object.assign({class:`${o}-tree-node-wrapper`},c),w("div",Object.assign({},d?p:void 0,{class:[`${o}-tree-node`,{[`${o}-tree-node--selected`]:a,[`${o}-tree-node--checkable`]:t,[`${o}-tree-node--highlight`]:n,[`${o}-tree-node--pending`]:f,[`${o}-tree-node--disabled`]:u,[`${o}-tree-node--selectable`]:r},p==null?void 0:p.class],"data-key":R,draggable:i&&d,onClick:this.handleLineClick,onDragstart:i&&d&&!u?this.handleDragStart:void 0}),Ts(e.level,w("div",{class:`${o}-tree-node-indent`,style:{flex:`0 0 ${s}px`}})),w(Pw,{clsPrefix:o,expanded:this.expanded,loading:this.loading,hide:e.isLeaf,onClick:this.handleSwitcherClick}),t?w(Mw,{focusable:this.checkboxFocusable,disabled:u||this.checkboxDisabled,clsPrefix:o,checked:this.checked,indeterminate:this.indeterminate,onCheck:this.handleCheck}):null,w(Bw,{ref:"contentInstRef",clsPrefix:o,checked:l,selected:a,onClick:this.handleContentClick,nodeProps:d?void 0:p,onDragstart:i&&!d&&!u?this.handleDragStart:void 0,tmNode:e}),i?this.showDropMark?ip({el:this.contentElRef.value,position:this.droppingPosition,offsetLevel:this.droppingOffsetLevel,indent:s}):this.showDropMarkAsParent?ip({el:this.contentElRef.value,position:"inside",offsetLevel:this.droppingOffsetLevel,indent:s}):null:null))}}),cd=bP;function Lw(e,o,t,r){e==null||e.forEach(a=>{t(a),Lw(a[o],o,t,r),r(a)})}function Nw(e,o,t,r,a){let l=new Set,n=new Set,i=[];return Lw(e,r,d=>{if(i.push(d),a(o,d)){n.add(d[t]);for(let s=i.length-2;s>=0;--s)if(!l.has(i[s][t]))l.add(i[s][t]);else return}},()=>{i.pop()}),{expandedKeys:Array.from(l),highlightKeySet:n}}var dp=null;if(typeof window!="undefined"&&Image){let e=new Image;e.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="}function _w(e,o,t,r,a){let l=new Set,n=new Set,i=new Set,d=[],s=[],u=[];function f(p){p.forEach(c=>{if(u.push(c),o(t,c)){l.add(c[r]),i.add(c[r]);for(let b=u.length-2;b>=0;--b){let h=u[b][r];if(!n.has(h))n.add(h),l.has(h)&&l.delete(h);else break}}let R=c[a];R&&f(R),u.pop()})}f(e);function m(p,c){p.forEach(R=>{let b=R[r],h=l.has(b),k=n.has(b);if(!h&&!k)return;let z=R[a];if(z)if(h)c.push(R);else{d.push(b);let C=Object.assign(Object.assign({},R),{[a]:[]});c.push(C),m(z,C[a])}else c.push(R)})}return m(e,s),{filteredTree:s,highlightKeySet:i,expandedKeys:d}}function Iw({fNodesRef:e,mergedExpandedKeysRef:o,mergedSelectedKeysRef:t,handleSelect:r,handleSwitcherClick:a}){let{value:l}=t,n=be(md,null),i=n?n.pendingNodeKeyRef:Q(l.length?l[l.length-1]:null);function d(u){let{value:f}=i;if(f===null){if(["ArrowDown","ArrowUp","ArrowLeft","ArrowRight"].includes(u.code)&&f===null){let{value:m}=e,p=0;for(;p<m.length;){if(!m[p].disabled){i.value=m[p].key;break}p+=1}}}else{let{value:m}=e,p=m.findIndex(c=>c.key===f);if(!~p)return;if(u.code==="Enter"||u.code==="NumpadEnter")r(m[p]);else if(u.code==="ArrowDown")for(p+=1;p<m.length;){if(!m[p].disabled){i.value=m[p].key;break}p+=1}else if(u.code==="ArrowUp")for(p-=1;p>=0;){if(!m[p].disabled){i.value=m[p].key;break}p-=1}else if(u.code==="ArrowLeft"){let c=m[p];if(c.isLeaf||!o.value.includes(f)){let R=c.getParent();R&&(i.value=R.key)}else a(c)}else if(u.code==="ArrowRight"){let c=m[p];if(c.isLeaf)return;if(!o.value.includes(f))a(c);else for(p+=1;p<m.length;){if(!m[p].disabled){i.value=m[p].key;break}p+=1}}}}function s(u){switch(u.code){case"ArrowUp":case"ArrowDown":u.preventDefault()}}return{pendingNodeKeyRef:i,handleKeyup:d,handleKeydown:s}}var Hw=re({name:"TreeMotionWrapper",props:{clsPrefix:{type:String,required:!0},height:Number,nodes:{type:Array,required:!0},mode:{type:String,required:!0},onAfterEnter:{type:Function,required:!0}},render(){let{clsPrefix:e}=this;return w(rl,{onAfterEnter:this.onAfterEnter,appear:!0,reverse:this.mode==="collapse"},{default:()=>w("div",{class:[`${e}-tree-motion-wrapper`,`${e}-tree-motion-wrapper--${this.mode}`],style:{height:Hr(this.height)}},this.nodes.map(o=>w(cd,{clsPrefix:e,tmNode:o})))})}});var Vw=$("tree",` font-size: var(--n-font-size); outline: none; `,[Y("ul, li",` margin: 0; padding: 0; list-style: none; - `),Y(">",[K("tree-node",[Y("&:first-child",{marginTop:0})])]),K("tree-node-indent",` + `),Y(">",[$("tree-node",[Y("&:first-child",{marginTop:0})])]),$("tree-node-indent",` height: 0; - `),K("tree-motion-wrapper",[xe("expand",[mu({duration:"0.2s"})]),xe("collapse",[mu({duration:"0.2s",reverse:!0})])]),K("tree-node-wrapper",` + `),$("tree-motion-wrapper",[Te("expand",[cu({duration:"0.2s"})]),Te("collapse",[cu({duration:"0.2s",reverse:!0})])]),$("tree-node-wrapper",` box-sizing: border-box; padding: 3px 0; - `),K("tree-node",` + `),$("tree-node",` position: relative; display: flex; border-radius: var(--n-node-border-radius); transition: background-color .3s var(--n-bezier); - `,[xe("highlight",[K("tree-node-content",[J("text",{borderBottomColor:"var(--n-node-text-color-disabled)"})])]),xe("disabled",[K("tree-node-content",` + `,[Te("highlight",[$("tree-node-content",[X("text",{borderBottomColor:"var(--n-node-text-color-disabled)"})])]),Te("disabled",[$("tree-node-content",` color: var(--n-node-text-color-disabled); cursor: not-allowed; - `)]),rt("disabled",[xe("selectable",[K("tree-node-content",` + `)]),ft("disabled",[Te("selectable",[$("tree-node-content",` cursor: pointer; - `)])])]),xe("block-node",[K("tree-node-content",` + `)])])]),Te("block-node",[$("tree-node-content",` width: 100%; - `)]),rt("block-line",[K("tree-node",[rt("disabled",[K("tree-node-content",[Y("&:hover",{backgroundColor:"var(--n-node-color-hover)"})]),xe("selectable",[K("tree-node-content",[Y("&:active",{backgroundColor:"var(--n-node-color-pressed)"})])]),xe("pending",[K("tree-node-content",` + `)]),ft("block-line",[$("tree-node",[ft("disabled",[$("tree-node-content",[Y("&:hover",{backgroundColor:"var(--n-node-color-hover)"})]),Te("selectable",[$("tree-node-content",[Y("&:active",{backgroundColor:"var(--n-node-color-pressed)"})])]),Te("pending",[$("tree-node-content",` background-color: var(--n-node-color-hover); - `)]),xe("selected",[K("tree-node-content",{backgroundColor:"var(--n-node-color-active)"})])])])]),xe("block-line",[K("tree-node",[rt("disabled",[Y("&:hover",{backgroundColor:"var(--n-node-color-hover)"}),xe("selectable",[Y("&:active",{backgroundColor:"var(--n-node-color-pressed)"})]),xe("pending",` + `)]),Te("selected",[$("tree-node-content",{backgroundColor:"var(--n-node-color-active)"})])])])]),Te("block-line",[$("tree-node",[ft("disabled",[Y("&:hover",{backgroundColor:"var(--n-node-color-hover)"}),Te("selectable",[Y("&:active",{backgroundColor:"var(--n-node-color-pressed)"})]),Te("pending",` background-color: var(--n-node-color-hover); - `),xe("selected",{backgroundColor:"var(--n-node-color-active)"})]),xe("disabled",` + `),Te("selected",{backgroundColor:"var(--n-node-color-active)"})]),Te("disabled",` cursor: not-allowed; - `)])]),K("tree-node-switcher",` + `)])]),$("tree-node-switcher",` cursor: pointer; display: inline-flex; flex-shrink: 0; @@ -889,7 +889,7 @@ ${o} justify-content: center; transition: transform .15s var(--n-bezier); vertical-align: bottom; - `,[J("icon",` + `,[X("icon",` position: relative; height: 14px; width: 14px; @@ -897,14 +897,14 @@ ${o} color: var(--n-arrow-color); transition: color .3s var(--n-bezier); font-size: 14px; - `,[K("icon",[ut()]),K("base-loading",` + `,[$("icon",[gt()]),$("base-loading",` color: var(--n-loading-color); position: absolute; left: 0; top: 0; right: 0; bottom: 0; - `,[ut()]),K("base-icon",[ut()])]),xe("hide",{visibility:"hidden"}),xe("expanded",{transform:"rotate(90deg)"})]),K("tree-node-checkbox",` + `,[gt()]),$("base-icon",[gt()])]),Te("hide",{visibility:"hidden"}),Te("expanded",{transform:"rotate(90deg)"})]),$("tree-node-checkbox",` display: inline-flex; height: 24px; width: 16px; @@ -912,9 +912,9 @@ ${o} align-items: center; justify-content: center; margin-right: 4px; - `),xe("checkable",[K("tree-node-content",` + `),Te("checkable",[$("tree-node-content",` padding: 0 6px; - `)]),K("tree-node-content",` + `)]),$("tree-node-content",` position: relative; display: inline-flex; align-items: center; @@ -933,41 +933,41 @@ ${o} text-decoration-color .3s var(--n-bezier), background-color .3s var(--n-bezier), border-color .3s var(--n-bezier); - `,[Y("&:last-child",{marginBottom:0}),J("prefix",` + `,[Y("&:last-child",{marginBottom:0}),X("prefix",` display: inline-flex; margin-right: 8px; - `),J("text",` + `),X("text",` border-bottom: 1px solid #0000; transition: border-color .3s var(--n-bezier); flex-grow:1; - `),J("suffix",` + `),X("suffix",` display: inline-flex; - `)]),J("empty","margin: auto;")]);var iP=function(e,o,t,r){function a(l){return l instanceof t?l:new t(function(n){n(l)})}return new(t||(t=Promise))(function(l,n){function i(u){try{s(r.next(u))}catch(f){n(f)}}function d(u){try{s(r.throw(u))}catch(f){n(f)}}function s(u){u.done?l(u.value):a(u.value).then(i,d)}s((r=r.apply(e,o||[])).next())})},md=30;function dP(e,o){return{getKey(t){return t[e]},getChildren(t){return t[o]},getDisabled(t){return!!(t.disabled||t.checkboxDisabled)}}}var sP={allowCheckingNotLoaded:Boolean,filter:Function,defaultExpandAll:Boolean,expandedKeys:Array,keyField:{type:String,default:"key"},labelField:{type:String,default:"label"},childrenField:{type:String,default:"children"},defaultExpandedKeys:{type:Array,default:()=>[]},indeterminateKeys:Array,onUpdateIndeterminateKeys:[Function,Array],"onUpdate:indeterminateKeys":[Function,Array],onUpdateExpandedKeys:[Function,Array],"onUpdate:expandedKeys":[Function,Array]},uP=Object.assign(Object.assign(Object.assign(Object.assign({},Fo.props),{showIrrelevantNodes:{type:Boolean,default:!0},data:{type:Array,default:()=>[]},expandOnDragenter:{type:Boolean,default:!0},cancelable:{type:Boolean,default:!0},checkable:Boolean,draggable:Boolean,blockNode:Boolean,blockLine:Boolean,disabled:Boolean,checkedKeys:Array,defaultCheckedKeys:{type:Array,default:()=>[]},selectedKeys:Array,defaultSelectedKeys:{type:Array,default:()=>[]},multiple:Boolean,pattern:{type:String,default:""},onLoad:Function,cascade:Boolean,selectable:{type:Boolean,default:!0},indent:{type:Number,default:16},allowDrop:{type:Function,default:Ow},animated:{type:Boolean,default:!0},virtualScroll:Boolean,watchProps:Array,renderLabel:Function,renderPrefix:Function,renderSuffix:Function,renderSwitcherIcon:Function,nodeProps:Function,onDragenter:[Function,Array],onDragleave:[Function,Array],onDragend:[Function,Array],onDragstart:[Function,Array],onDragover:[Function,Array],onDrop:[Function,Array],onUpdateCheckedKeys:[Function,Array],"onUpdate:checkedKeys":[Function,Array],onUpdateSelectedKeys:[Function,Array],"onUpdate:selectedKeys":[Function,Array]}),sP),{internalTreeSelect:Boolean,internalScrollable:Boolean,internalScrollablePadding:String,internalRenderEmpty:Function,internalHighlightKeySet:Object,internalUnifySelectCheck:Boolean,internalCheckboxFocusable:{type:Boolean,default:!0},internalFocusable:{type:Boolean,default:!0},checkStrategy:{type:String,default:"all"},leafOnly:Boolean}),dp=le({name:"Tree",props:uP,setup(e){let{mergedClsPrefixRef:o,inlineThemeDisabled:t}=Bo(e),r=Fo("Tree","-tree",Aw,Qf,e,o),a=Z(null),l=Z(null),n=Z(null);function i(){var M;return(M=n.value)===null||M===void 0?void 0:M.listElRef}function d(){var M;return(M=n.value)===null||M===void 0?void 0:M.itemsElRef}let s=V(()=>{let{pattern:M}=e;return M?!M.length||!qe.value?{filteredTree:e.data,highlightKeySet:null,expandedKeys:void 0}:yw(e.data,qe.value,M,e.keyField,e.childrenField):{filteredTree:e.data,highlightKeySet:null,expandedKeys:void 0}}),u=V(()=>lu(e.showIrrelevantNodes?e.data:s.value.filteredTree,dP(e.keyField,e.childrenField))),f=Te(fd,null),c=e.internalTreeSelect?f.dataTreeMate:u,{watchProps:p}=e,x=Z([]);(p==null?void 0:p.includes("defaultCheckedKeys"))?Mo(()=>{x.value=e.defaultCheckedKeys}):x.value=e.defaultCheckedKeys;let T=De(e,"checkedKeys"),C=Zo(T,x),S=V(()=>c.value.getCheckedKeys(C.value,{cascade:e.cascade,allowNotLoaded:e.allowCheckingNotLoaded})),D=V(()=>e.leafOnly?"child":e.checkStrategy),j=V(()=>S.value.checkedKeys),O=V(()=>{let{indeterminateKeys:M}=e;return M!==void 0?M:S.value.indeterminateKeys}),g=Z([]);(p==null?void 0:p.includes("defaultSelectedKeys"))?Mo(()=>{g.value=e.defaultSelectedKeys}):g.value=e.defaultSelectedKeys;let v=De(e,"selectedKeys"),w=Zo(v,g),F=Z([]),B=M=>{F.value=e.defaultExpandAll?c.value.getNonLeafKeys():M===void 0?e.defaultExpandedKeys:M};(p==null?void 0:p.includes("defaultExpandedKeys"))?Mo(()=>B(void 0)):Mo(()=>B(e.defaultExpandedKeys));let y=De(e,"expandedKeys"),W=Zo(y,F),_=V(()=>u.value.getFlattenedNodes(W.value)),{pendingNodeKeyRef:ae,handleKeyup:he,handleKeydown:Me}=vw({mergedSelectedKeysRef:w,fNodesRef:_,mergedExpandedKeysRef:W,handleSelect:eo,handleSwitcherClick:ze}),de=null,ie=null,ge=Z(new Set),Ve=V(()=>e.internalHighlightKeySet||s.value.highlightKeySet),Ke=Zo(Ve,ge),He=Z(new Set),Je=V(()=>W.value.filter(M=>!He.value.has(M))),Qe=0,wo=Z(null),Do=Z(null),Be=Z(null),We=Z(null),ho=Z(0),we=V(()=>{let{value:M}=Do;return M?M.parent:null}),qe=V(()=>{let{filter:M}=e;if(M)return M;let{labelField:q}=e;return(ne,se)=>ne.length?se[q].toLowerCase().includes(ne.toLowerCase()):!0});Ze(De(e,"data"),()=>{He.value.clear(),ae.value=null,Le()},{deep:!1});let to;Ze(De(e,"pattern"),(M,q)=>{if(e.showIrrelevantNodes)if(to=void 0,M){let{expandedKeys:ne,highlightKeySet:se}=bw(e.data,e.pattern,e.keyField,e.childrenField,qe.value);ge.value=se,L(ne,$(ne))}else ge.value=new Set;else if(!M.length)to!==void 0&&L(to,$(to));else{q.length||(to=W.value);let{expandedKeys:ne}=s.value;ne!==void 0&&L(ne,$(ne))}});function vo(M){return iP(this,void 0,void 0,function*(){let{onLoad:q}=e;if(!q)return yield Promise.resolve();let{value:ne}=He;return yield new Promise(se=>{ne.has(M.key)||(ne.add(M.key),q(M.rawNode).then(()=>{ne.delete(M.key),se()}).catch(Ne=>{console.error(Ne),Se()}))})})}Mo(()=>{var M;let{value:q}=u;if(!q)return;let{getNode:ne}=q;(M=W.value)===null||M===void 0||M.forEach(se=>{let Ne=ne(se);Ne&&!Ne.shallowLoaded&&vo(Ne)})});let m=Z(!1),h=Z([]);Ze(Je,(M,q)=>{if(!e.animated){No(I);return}let ne=new Set(q),se=null,Ne=null;for(let ko of M)if(!ne.has(ko)){if(se!==null)return;se=ko}let Eo=new Set(M);for(let ko of q)if(!Eo.has(ko)){if(Ne!==null)return;Ne=ko}if(se!==null&&Ne!==null||se===null&&Ne===null)return;let{virtualScroll:To}=e,tr=(To?n.value.listElRef:a.value).offsetHeight,rr=Math.ceil(tr/md)+1;if(se!==null){m.value=!0,h.value=u.value.getFlattenedNodes(q);let ko=h.value.findIndex(Po=>Po.key===se);if(~ko){let Po=ol(h.value[ko].children,M);h.value.splice(ko+1,0,{__motion:!0,mode:"expand",height:To?Po.length*md:void 0,nodes:To?Po.slice(0,rr):Po})}}if(Ne!==null){h.value=u.value.getFlattenedNodes(M);let ko=h.value.findIndex(Po=>Po.key===Ne);if(~ko){let Po=h.value[ko].children;if(!Po)return;m.value=!0;let lt=ol(Po,M);h.value.splice(ko+1,0,{__motion:!0,mode:"collapse",height:To?lt.length*md:void 0,nodes:To?lt.slice(0,rr):lt})}}});let k=V(()=>ru(_.value)),E=V(()=>m.value?h.value:_.value);function I(){let{value:M}=l;M&&M.sync()}function G(){m.value=!1,e.virtualScroll&&No(I)}function $(M){let{getNode:q}=c.value;return M.map(ne=>{var se;return((se=q(ne))===null||se===void 0?void 0:se.rawNode)||null})}function L(M,q){let{"onUpdate:expandedKeys":ne,onUpdateExpandedKeys:se}=e;F.value=M,ne&&Re(ne,M,q),se&&Re(se,M,q)}function U(M,q){let{"onUpdate:checkedKeys":ne,onUpdateCheckedKeys:se}=e;x.value=M,se&&Re(se,M,q),ne&&Re(ne,M,q)}function H(M,q){let{"onUpdate:indeterminateKeys":ne,onUpdateIndeterminateKeys:se}=e;ne&&Re(ne,M,q),se&&Re(se,M,q)}function b(M,q){let{"onUpdate:selectedKeys":ne,onUpdateSelectedKeys:se}=e;g.value=M,se&&Re(se,M,q),ne&&Re(ne,M,q)}function N(M){let{onDragenter:q}=e;q&&Re(q,M)}function z(M){let{onDragleave:q}=e;q&&Re(q,M)}function te(M){let{onDragend:q}=e;q&&Re(q,M)}function fe(M){let{onDragstart:q}=e;q&&Re(q,M)}function Ce(M){let{onDragover:q}=e;q&&Re(q,M)}function ye(M){let{onDrop:q}=e;q&&Re(q,M)}function Le(){Q(),re()}function Q(){wo.value=null}function re(){ho.value=0,Do.value=null,Be.value=null,We.value=null,Se()}function Se(){de&&(window.clearTimeout(de),de=null),ie=null}function _e(M,q){if(e.disabled||M.disabled)return;if(e.internalUnifySelectCheck&&!e.multiple){eo(M);return}let{checkedKeys:ne,indeterminateKeys:se}=c.value[q?"check":"uncheck"](M.key,j.value,{cascade:e.cascade,checkStrategy:D.value,allowNotLoaded:e.allowCheckingNotLoaded});U(ne,$(ne)),H(se,$(se))}function Xe(M){if(e.disabled)return;let{value:q}=W,ne=q.findIndex(se=>se===M);if(~ne){let se=Array.from(q);se.splice(ne,1),L(se,$(se))}else{let se=u.value.getNode(M);if(!se||se.isLeaf)return;let Ne=q.concat(M);L(Ne,$(Ne))}}function ze(M){e.disabled||m.value||Xe(M.key)}function eo(M){if(!(e.disabled||!e.selectable)){if(ae.value=M.key,e.internalUnifySelectCheck){let{value:{checkedKeys:q,indeterminateKeys:ne}}=S;e.multiple?_e(M,!(q.includes(M.key)||ne.includes(M.key))):U([M.key],$([M.key]))}if(e.multiple){let q=Array.from(w.value),ne=q.findIndex(se=>se===M.key);~ne?e.cancelable&&q.splice(ne,1):~ne||q.push(M.key),b(q,$(q))}else w.value.includes(M.key)?e.cancelable&&b([],[]):b([M.key],$([M.key]))}}function Ge(M){if(de&&(window.clearTimeout(de),de=null),M.isLeaf)return;ie=M.key;let q=()=>{if(ie!==M.key)return;let{value:ne}=Be;if(ne&&ne.key===M.key&&!W.value.includes(M.key)){let se=W.value.concat(M.key);L(se,$(se))}de=null,ie=null};M.shallowLoaded?de=window.setTimeout(()=>{q()},1e3):de=window.setTimeout(()=>{vo(M).then(()=>{q()})},1e3)}function Go({event:M,node:q}){!e.draggable||e.disabled||q.disabled||(Ta({event:M,node:q},!1),N({event:M,node:q.rawNode}))}function ct({event:M,node:q}){!e.draggable||e.disabled||q.disabled||z({event:M,node:q.rawNode})}function ll(M){M.target===M.currentTarget&&re()}function cr({event:M,node:q}){Le(),!(!e.draggable||e.disabled||q.disabled)&&te({event:M,node:q.rawNode})}function xr({event:M,node:q}){var ne;!e.draggable||e.disabled||q.disabled||(ip&&((ne=M.dataTransfer)===null||ne===void 0||ne.setDragImage(ip,0,0)),Qe=M.clientX,wo.value=q,fe({event:M,node:q.rawNode}))}function Ta({event:M,node:q},ne=!0){var se;if(!e.draggable||e.disabled||q.disabled)return;let{value:Ne}=wo;if(!Ne)return;let{allowDrop:Eo,indent:To}=e;ne&&Ce({event:M,node:q.rawNode});let tr=M.currentTarget,{height:rr,top:ko}=tr.getBoundingClientRect(),Po=M.clientY-ko,lt;Eo({node:q.rawNode,dropPosition:"inside",phase:"drag"})?Po<=8?lt="before":Po>=rr-8?lt="after":lt="inside":Po<=rr/2?lt="before":lt="after";let{value:bd}=k,oo,Vo,il=bd(q.key);if(il===null){re();return}let Rn=!1;lt==="inside"?(oo=q,Vo="inside"):lt==="before"?q.isFirstChild?(oo=q,Vo="before"):(oo=_.value[il-1],Vo="after"):(oo=q,Vo="after"),!oo.isLeaf&&W.value.includes(oo.key)&&(Rn=!0,Vo==="after"&&(oo=_.value[il+1],oo?Vo="before":(oo=q,Vo="inside")));let Fn=oo;if(Be.value=Fn,!Rn&&Ne.isLastChild&&Ne.key===oo.key&&(Vo="after"),Vo==="after"){let On=Qe-M.clientX,dl=0;for(;On>=To/2&&oo.parent!==null&&oo.isLastChild&&dl<1;)On-=To,dl+=1,oo=oo.parent;ho.value=dl}else ho.value=0;if((Ne.contains(oo)||Vo==="inside"&&((se=Ne.parent)===null||se===void 0?void 0:se.key)===oo.key)&&!(Ne.key===Fn.key&&Ne.key===oo.key)){re();return}if(!Eo({node:oo.rawNode,dropPosition:Vo,phase:"drag"})){re();return}if(Ne.key===oo.key)Se();else if(ie!==oo.key)if(Vo==="inside"){if(e.expandOnDragenter){if(Ge(oo),!oo.shallowLoaded&&ie!==oo.key){Le();return}}else if(!oo.shallowLoaded){Le();return}}else Se();else Vo!=="inside"&&Se();We.value=Vo,Do.value=oo}function nl({event:M,node:q,dropPosition:ne}){if(!e.draggable||e.disabled||q.disabled)return;let{value:se}=wo,{value:Ne}=Do,{value:Eo}=We;if(!(!se||!Ne||!Eo)&&!!e.allowDrop({node:Ne.rawNode,dropPosition:Eo,phase:"drag"})&&se.key!==Ne.key){if(Eo==="before"){let To=se.getNext({includeDisabled:!0});if(To&&To.key===Ne.key){re();return}}if(Eo==="after"){let To=se.getPrev({includeDisabled:!0});if(To&&To.key===Ne.key){re();return}}ye({event:M,node:Ne.rawNode,dragNode:se.rawNode,dropPosition:ne}),Le()}}function Ra(){I()}function hr(){I()}function A(M){var q;if(e.virtualScroll||e.internalScrollable){let{value:ne}=l;if((q=ne==null?void 0:ne.containerRef)===null||q===void 0?void 0:q.contains(M.relatedTarget))return;ae.value=null}else{let{value:ne}=a;if(ne==null?void 0:ne.contains(M.relatedTarget))return;ae.value=null}}Ze(ae,M=>{var q,ne;if(M!==null){if(e.virtualScroll)(q=n.value)===null||q===void 0||q.scrollTo({key:M});else if(e.internalScrollable){let{value:se}=l;if(se===null)return;let Ne=(ne=se.contentRef)===null||ne===void 0?void 0:ne.querySelector(`[data-key="${Wa(M)}"]`);if(!Ne)return;se.scrollTo({el:Ne})}}}),qo(Xt,{loadingKeysRef:He,highlightKeySetRef:Ke,displayedCheckedKeysRef:j,displayedIndeterminateKeysRef:O,mergedSelectedKeysRef:w,mergedExpandedKeysRef:W,mergedThemeRef:r,mergedCheckStrategyRef:D,nodePropsRef:De(e,"nodeProps"),disabledRef:De(e,"disabled"),checkableRef:De(e,"checkable"),selectableRef:De(e,"selectable"),onLoadRef:De(e,"onLoad"),draggableRef:De(e,"draggable"),blockLineRef:De(e,"blockLine"),indentRef:De(e,"indent"),cascadeRef:De(e,"cascade"),droppingMouseNodeRef:Be,droppingNodeParentRef:we,draggingNodeRef:wo,droppingPositionRef:We,droppingOffsetLevelRef:ho,fNodesRef:_,pendingNodeKeyRef:ae,internalScrollableRef:De(e,"internalScrollable"),internalCheckboxFocusableRef:De(e,"internalCheckboxFocusable"),internalTreeSelect:e.internalTreeSelect,renderLabelRef:De(e,"renderLabel"),renderPrefixRef:De(e,"renderPrefix"),renderSuffixRef:De(e,"renderSuffix"),renderSwitcherIconRef:De(e,"renderSwitcherIcon"),labelFieldRef:De(e,"labelField"),multipleRef:De(e,"multiple"),handleSwitcherClick:ze,handleDragEnd:cr,handleDragEnter:Go,handleDragLeave:ct,handleDragStart:xr,handleDrop:nl,handleDragOver:Ta,handleSelect:eo,handleCheck:_e});let oe={handleKeydown:Me,handleKeyup:he},ke=V(()=>{let{common:{cubicBezierEaseInOut:M},self:{fontSize:q,nodeBorderRadius:ne,nodeColorHover:se,nodeColorPressed:Ne,nodeColorActive:Eo,arrowColor:To,loadingColor:tr,nodeTextColor:rr,nodeTextColorDisabled:ko,dropMarkColor:Po}}=r.value;return{"--n-arrow-color":To,"--n-loading-color":tr,"--n-bezier":M,"--n-font-size":q,"--n-node-border-radius":ne,"--n-node-color-active":Eo,"--n-node-color-hover":se,"--n-node-color-pressed":Ne,"--n-node-text-color":rr,"--n-node-text-color-disabled":ko,"--n-drop-mark-color":Po}}),uo=t?Ko("tree",void 0,ke,e):void 0;return{mergedClsPrefix:o,mergedTheme:r,fNodes:E,aip:m,selfElRef:a,virtualListInstRef:n,scrollbarInstRef:l,handleFocusout:A,handleDragLeaveTree:ll,handleScroll:Ra,getScrollContainer:i,getScrollContent:d,handleAfterEnter:G,handleResize:hr,handleKeydown:oe.handleKeydown,handleKeyup:oe.handleKeyup,cssVars:t?void 0:ke,themeClass:uo==null?void 0:uo.themeClass,onRender:uo==null?void 0:uo.onRender}},render(){var e;let{fNodes:o,internalRenderEmpty:t}=this;if(!o.length&&t)return t();let{mergedClsPrefix:r,blockNode:a,blockLine:l,draggable:n,disabled:i,internalFocusable:d,checkable:s,handleKeyup:u,handleKeydown:f,handleFocusout:c}=this,p=d&&!i,x=p?"0":void 0,T=[`${r}-tree`,s&&`${r}-tree--checkable`,(l||a)&&`${r}-tree--block-node`,l&&`${r}-tree--block-line`],C=D=>"__motion"in D?R(kw,{height:D.height,nodes:D.nodes,clsPrefix:r,mode:D.mode,onAfterEnter:this.handleAfterEnter}):R(pd,{key:D.key,tmNode:D,clsPrefix:r});if(this.virtualScroll){let{mergedTheme:D,internalScrollablePadding:j}=this,O=_a(j||"0");return R(en,{ref:"scrollbarInstRef",onDragleave:n?this.handleDragLeaveTree:void 0,container:this.getScrollContainer,content:this.getScrollContent,class:T,theme:D.peers.Scrollbar,themeOverrides:D.peerOverrides.Scrollbar,tabindex:x,onKeyup:p?u:void 0,onKeydown:p?f:void 0,onFocusout:p?c:void 0},{default:()=>{var g;return(g=this.onRender)===null||g===void 0||g.call(this),R(Hl,{ref:"virtualListInstRef",items:this.fNodes,itemSize:md,ignoreItemResize:this.aip,paddingTop:O.top,paddingBottom:O.bottom,class:this.themeClass,style:[this.cssVars,{paddingLeft:O.left,paddingRight:O.right}],onScroll:this.handleScroll,onResize:this.handleResize,showScrollbar:!1,itemResizable:!0},{default:({item:v})=>C(v)})}})}let{internalScrollable:S}=this;return T.push(this.themeClass),(e=this.onRender)===null||e===void 0||e.call(this),S?R(en,{class:T,tabindex:x,onKeyup:p?u:void 0,onKeydown:p?f:void 0,onFocusout:p?c:void 0,style:this.cssVars,contentStyle:{padding:this.internalScrollablePadding}},{default:()=>R("div",{onDragleave:n?this.handleDragLeaveTree:void 0,ref:"selfElRef"},this.fNodes.map(C))}):R("div",{class:T,tabindex:x,ref:"selfElRef",style:this.cssVars,onKeyup:p?u:void 0,onKeydown:p?f:void 0,onFocusout:p?c:void 0,onDragleave:n?this.handleDragLeaveTree:void 0},o.length?o.map(C):Ut(this.$slots.empty,()=>{var D,j,O,g;return[R(iu,{class:`${r}-tree__empty`,theme:(j=(D=this.theme)===null||D===void 0?void 0:D.peers)===null||j===void 0?void 0:j.Empty,themeOverrides:(g=(O=this.themeOverrides)===null||O===void 0?void 0:O.peers)===null||g===void 0?void 0:g.Empty})]}))}});var cd={name:"dark",common:P,Alert:pu,Anchor:cu,AutoComplete:gu,Avatar:an,AvatarGroup:wu,BackTop:Tu,Badge:Ru,Breadcrumb:Fu,Button:io,ButtonGroup:hf,Calendar:yu,Card:nn,Carousel:Pu,Cascader:Lu,Checkbox:Bt,Code:dn,Collapse:_u,CollapseTransition:Iu,ColorPicker:ku,DataTable:Gu,DatePicker:ef,Descriptions:of,Dialog:hn,Divider:nf,Drawer:sf,Dropdown:cn,DynamicInput:uf,DynamicTags:ff,Element:pf,Empty:pt,Ellipsis:pn,Form:mf,GradientText:cf,Icon:Zu,IconWrapper:xf,Image:op,Input:go,InputNumber:Sf,Layout:gf,List:wf,LoadingBar:Tf,Log:Rf,Menu:Cf,Mention:Ff,Message:bf,Modal:lf,Notification:vf,PageHeader:Af,Pagination:un,Popconfirm:Pf,Popover:Jo,Popselect:Mf,Progress:gn,Radio:mn,Rate:Ef,Result:Nf,Scrollbar:no,Select:sn,Skeleton:tp,Slider:_f,Space:Sn,Spin:Hf,Statistic:Wf,Steps:Vf,Switch:zf,Table:jf,Tabs:$f,Tag:on,Thing:Uf,TimePicker:xn,Timeline:Kf,Tooltip:Jt,Transfer:Gf,Tree:wn,TreeSelect:Zf,Typography:Yf,Upload:Xf,Watermark:ep};function fP(e){let o=0;for(let t=0;t<e.length;++t)e[t]==="&"&&++o;return o}var Dw=/\s*,(?![^(]*\))\s*/g,pP=/\s+/g;function mP(e,o){let t=[];return o.split(Dw).forEach(r=>{let a=fP(r);if(a){if(a===1){e.forEach(n=>{t.push(r.replace("&",n))});return}}else{e.forEach(n=>{t.push((n&&n+" ")+r)});return}let l=[r];for(;a--;){let n=[];l.forEach(i=>{e.forEach(d=>{n.push(i.replace("&",d))})}),l=n}l.forEach(n=>t.push(n))}),t}function cP(e,o){let t=[];return o.split(Dw).forEach(r=>{e.forEach(a=>{t.push((a&&a+" ")+r)})}),t}function Pw(e){let o=[""];return e.forEach(t=>{t=t&&t.trim(),!!t&&(t.includes("&")?o=mP(o,t):o=cP(o,t))}),o.join(", ").replace(pP," ")}var xP=/[A-Z]/g;function Mw(e){return e.replace(xP,o=>"-"+o.toLowerCase())}function hP(e,o=" "){return typeof e=="object"&&e!==null?` { -`+Object.entries(e).map(t=>o+` ${Mw(t[0])}: ${t[1]};`).join(` + `)]),X("empty","margin: auto;")]);var yP=function(e,o,t,r){function a(l){return l instanceof t?l:new t(function(n){n(l)})}return new(t||(t=Promise))(function(l,n){function i(u){try{s(r.next(u))}catch(f){n(f)}}function d(u){try{s(r.throw(u))}catch(f){n(f)}}function s(u){u.done?l(u.value):a(u.value).then(i,d)}s((r=r.apply(e,o||[])).next())})},hd=30;function vP(e,o){return{getKey(t){return t[e]},getChildren(t){return t[o]},getDisabled(t){return!!(t.disabled||t.checkboxDisabled)}}}var kP={allowCheckingNotLoaded:Boolean,filter:Function,defaultExpandAll:Boolean,expandedKeys:Array,keyField:{type:String,default:"key"},labelField:{type:String,default:"label"},childrenField:{type:String,default:"children"},defaultExpandedKeys:{type:Array,default:()=>[]},indeterminateKeys:Array,onUpdateIndeterminateKeys:[Function,Array],"onUpdate:indeterminateKeys":[Function,Array],onUpdateExpandedKeys:[Function,Array],"onUpdate:expandedKeys":[Function,Array]},AP=Object.assign(Object.assign(Object.assign(Object.assign({},ko.props),{showIrrelevantNodes:{type:Boolean,default:!0},data:{type:Array,default:()=>[]},expandOnDragenter:{type:Boolean,default:!0},cancelable:{type:Boolean,default:!0},checkable:Boolean,draggable:Boolean,blockNode:Boolean,blockLine:Boolean,disabled:Boolean,checkedKeys:Array,defaultCheckedKeys:{type:Array,default:()=>[]},selectedKeys:Array,defaultSelectedKeys:{type:Array,default:()=>[]},multiple:Boolean,pattern:{type:String,default:""},onLoad:Function,cascade:Boolean,selectable:{type:Boolean,default:!0},indent:{type:Number,default:16},allowDrop:{type:Function,default:Ew},animated:{type:Boolean,default:!0},virtualScroll:Boolean,watchProps:Array,renderLabel:Function,renderPrefix:Function,renderSuffix:Function,renderSwitcherIcon:Function,nodeProps:Function,onDragenter:[Function,Array],onDragleave:[Function,Array],onDragend:[Function,Array],onDragstart:[Function,Array],onDragover:[Function,Array],onDrop:[Function,Array],onUpdateCheckedKeys:[Function,Array],"onUpdate:checkedKeys":[Function,Array],onUpdateSelectedKeys:[Function,Array],"onUpdate:selectedKeys":[Function,Array]}),kP),{internalTreeSelect:Boolean,internalScrollable:Boolean,internalScrollablePadding:String,internalRenderEmpty:Function,internalHighlightKeySet:Object,internalUnifySelectCheck:Boolean,internalCheckboxFocusable:{type:Boolean,default:!0},internalFocusable:{type:Boolean,default:!0},checkStrategy:{type:String,default:"all"},leafOnly:Boolean}),sp=re({name:"Tree",props:AP,setup(e){let{mergedClsPrefixRef:o,inlineThemeDisabled:t}=Wo(e),r=ko("Tree","-tree",Vw,Zf,e,o),a=Q(null),l=Q(null),n=Q(null);function i(){var M;return(M=n.value)===null||M===void 0?void 0:M.listElRef}function d(){var M;return(M=n.value)===null||M===void 0?void 0:M.itemsElRef}let s=W(()=>{let{pattern:M}=e;return M?!M.length||!co.value?{filteredTree:e.data,highlightKeySet:null,expandedKeys:void 0}:_w(e.data,co.value,M,e.keyField,e.childrenField):{filteredTree:e.data,highlightKeySet:null,expandedKeys:void 0}}),u=W(()=>nu(e.showIrrelevantNodes?e.data:s.value.filteredTree,vP(e.keyField,e.childrenField))),f=be(md,null),m=e.internalTreeSelect?f.dataTreeMate:u,{watchProps:p}=e,c=Q([]);(p==null?void 0:p.includes("defaultCheckedKeys"))?Vo(()=>{c.value=e.defaultCheckedKeys}):c.value=e.defaultCheckedKeys;let R=_e(e,"checkedKeys"),b=lt(R,c),h=W(()=>m.value.getCheckedKeys(b.value,{cascade:e.cascade,allowNotLoaded:e.allowCheckingNotLoaded})),k=W(()=>e.leafOnly?"child":e.checkStrategy),z=W(()=>h.value.checkedKeys),C=W(()=>{let{indeterminateKeys:M}=e;return M!==void 0?M:h.value.indeterminateKeys}),g=Q([]);(p==null?void 0:p.includes("defaultSelectedKeys"))?Vo(()=>{g.value=e.defaultSelectedKeys}):g.value=e.defaultSelectedKeys;let v=_e(e,"selectedKeys"),S=lt(v,g),F=Q([]),B=M=>{F.value=e.defaultExpandAll?m.value.getNonLeafKeys():M===void 0?e.defaultExpandedKeys:M};(p==null?void 0:p.includes("defaultExpandedKeys"))?Vo(()=>B(void 0)):Vo(()=>B(e.defaultExpandedKeys));let y=_e(e,"expandedKeys"),I=lt(y,F),E=W(()=>u.value.getFlattenedNodes(I.value)),{pendingNodeKeyRef:se,handleKeyup:Se,handleKeydown:Ee}=Iw({mergedSelectedKeysRef:S,fNodesRef:E,mergedExpandedKeysRef:I,handleSelect:de,handleSwitcherClick:te}),me=null,ue=null,Fe=Q(new Set),Ge=W(()=>e.internalHighlightKeySet||s.value.highlightKeySet),Ye=lt(Ge,Fe),$e=Q(new Set),ro=W(()=>I.value.filter(M=>!$e.value.has(M))),Ke=0,So=Q(null),bo=Q(null),We=Q(null),qe=Q(null),go=Q(0),Le=W(()=>{let{value:M}=bo;return M?M.parent:null}),co=W(()=>{let{filter:M}=e;if(M)return M;let{labelField:G}=e;return(fe,ce)=>fe.length?ce[G].toLowerCase().includes(fe.toLowerCase()):!0});lo(_e(e,"data"),()=>{$e.value.clear(),se.value=null,Ce()},{deep:!1});let Ao;lo(_e(e,"pattern"),(M,G)=>{if(e.showIrrelevantNodes)if(Ao=void 0,M){let{expandedKeys:fe,highlightKeySet:ce}=Nw(e.data,e.pattern,e.keyField,e.childrenField,co.value);Fe.value=ce,V(fe,ee(fe))}else Fe.value=new Set;else if(!M.length)Ao!==void 0&&V(Ao,ee(Ao));else{G.length||(Ao=I.value);let{expandedKeys:fe}=s.value;fe!==void 0&&V(fe,ee(fe))}});function Lo(M){return yP(this,void 0,void 0,function*(){let{onLoad:G}=e;if(!G)return yield Promise.resolve();let{value:fe}=$e;return yield new Promise(ce=>{fe.has(M.key)||(fe.add(M.key),G(M.rawNode).then(()=>{fe.delete(M.key),ce()}).catch(Ve=>{console.error(Ve),Re()}))})})}Vo(()=>{var M;let{value:G}=u;if(!G)return;let{getNode:fe}=G;(M=I.value)===null||M===void 0||M.forEach(ce=>{let Ve=fe(ce);Ve&&!Ve.shallowLoaded&&Lo(Ve)})});let x=Q(!1),O=Q([]);lo(ro,(M,G)=>{if(!e.animated){Uo(U);return}let fe=new Set(G),ce=null,Ve=null;for(let No of M)if(!fe.has(No)){if(ce!==null)return;ce=No}let $o=new Set(M);for(let No of G)if(!$o.has(No)){if(Ve!==null)return;Ve=No}if(ce!==null&&Ve!==null||ce===null&&Ve===null)return;let{virtualScroll:yo}=e,sr=(yo?n.value.listElRef:a.value).offsetHeight,ur=Math.ceil(sr/hd)+1;if(ce!==null){x.value=!0,O.value=u.value.getFlattenedNodes(G);let No=O.value.findIndex(Ho=>Ho.key===ce);if(~No){let Ho=al(O.value[No].children,M);O.value.splice(No+1,0,{__motion:!0,mode:"expand",height:yo?Ho.length*hd:void 0,nodes:yo?Ho.slice(0,ur):Ho})}}if(Ve!==null){O.value=u.value.getFlattenedNodes(M);let No=O.value.findIndex(Ho=>Ho.key===Ve);if(~No){let Ho=O.value[No].children;if(!Ho)return;x.value=!0;let mt=al(Ho,M);O.value.splice(No+1,0,{__motion:!0,mode:"collapse",height:yo?mt.length*hd:void 0,nodes:yo?mt.slice(0,ur):mt})}}});let N=W(()=>au(E.value)),j=W(()=>x.value?O.value:E.value);function U(){let{value:M}=l;M&&M.sync()}function ae(){x.value=!1,e.virtualScroll&&Uo(U)}function ee(M){let{getNode:G}=m.value;return M.map(fe=>{var ce;return((ce=G(fe))===null||ce===void 0?void 0:ce.rawNode)||null})}function V(M,G){let{"onUpdate:expandedKeys":fe,onUpdateExpandedKeys:ce}=e;F.value=M,fe&&ye(fe,M,G),ce&&ye(ce,M,G)}function Z(M,G){let{"onUpdate:checkedKeys":fe,onUpdateCheckedKeys:ce}=e;c.value=M,ce&&ye(ce,M,G),fe&&ye(fe,M,G)}function q(M,G){let{"onUpdate:indeterminateKeys":fe,onUpdateIndeterminateKeys:ce}=e;fe&&ye(fe,M,G),ce&&ye(ce,M,G)}function D(M,G){let{"onUpdate:selectedKeys":fe,onUpdateSelectedKeys:ce}=e;g.value=M,ce&&ye(ce,M,G),fe&&ye(fe,M,G)}function L(M){let{onDragenter:G}=e;G&&ye(G,M)}function H(M){let{onDragleave:G}=e;G&&ye(G,M)}function ie(M){let{onDragend:G}=e;G&&ye(G,M)}function pe(M){let{onDragstart:G}=e;G&&ye(G,M)}function ve(M){let{onDragover:G}=e;G&&ye(G,M)}function Ae(M){let{onDrop:G}=e;G&&ye(G,M)}function Ce(){K(),ne()}function K(){So.value=null}function ne(){go.value=0,bo.value=null,We.value=null,qe.value=null,Re()}function Re(){me&&(window.clearTimeout(me),me=null),ue=null}function T(M,G){if(e.disabled||M.disabled)return;if(e.internalUnifySelectCheck&&!e.multiple){de(M);return}let{checkedKeys:fe,indeterminateKeys:ce}=m.value[G?"check":"uncheck"](M.key,z.value,{cascade:e.cascade,checkStrategy:k.value,allowNotLoaded:e.allowCheckingNotLoaded});Z(fe,ee(fe)),q(ce,ee(ce))}function _(M){if(e.disabled)return;let{value:G}=I,fe=G.findIndex(ce=>ce===M);if(~fe){let ce=Array.from(G);ce.splice(fe,1),V(ce,ee(ce))}else{let ce=u.value.getNode(M);if(!ce||ce.isLeaf)return;let Ve=G.concat(M);V(Ve,ee(Ve))}}function te(M){e.disabled||x.value||_(M.key)}function de(M){if(!(e.disabled||!e.selectable)){if(se.value=M.key,e.internalUnifySelectCheck){let{value:{checkedKeys:G,indeterminateKeys:fe}}=h;e.multiple?T(M,!(G.includes(M.key)||fe.includes(M.key))):Z([M.key],ee([M.key]))}if(e.multiple){let G=Array.from(S.value),fe=G.findIndex(ce=>ce===M.key);~fe?e.cancelable&&G.splice(fe,1):~fe||G.push(M.key),D(G,ee(G))}else S.value.includes(M.key)?e.cancelable&&D([],[]):D([M.key],ee([M.key]))}}function Oe(M){if(me&&(window.clearTimeout(me),me=null),M.isLeaf)return;ue=M.key;let G=()=>{if(ue!==M.key)return;let{value:fe}=We;if(fe&&fe.key===M.key&&!I.value.includes(M.key)){let ce=I.value.concat(M.key);V(ce,ee(ce))}me=null,ue=null};M.shallowLoaded?me=window.setTimeout(()=>{G()},1e3):me=window.setTimeout(()=>{Lo(M).then(()=>{G()})},1e3)}function ze({event:M,node:G}){!e.draggable||e.disabled||G.disabled||(Bo({event:M,node:G},!1),L({event:M,node:G.rawNode}))}function Je({event:M,node:G}){!e.draggable||e.disabled||G.disabled||H({event:M,node:G.rawNode})}function eo(M){M.target===M.currentTarget&&ne()}function Zo({event:M,node:G}){Ce(),!(!e.draggable||e.disabled||G.disabled)&&ie({event:M,node:G.rawNode})}function Io({event:M,node:G}){var fe;!e.draggable||e.disabled||G.disabled||(dp&&((fe=M.dataTransfer)===null||fe===void 0||fe.setDragImage(dp,0,0)),Ke=M.clientX,So.value=G,pe({event:M,node:G.rawNode}))}function Bo({event:M,node:G},fe=!0){var ce;if(!e.draggable||e.disabled||G.disabled)return;let{value:Ve}=So;if(!Ve)return;let{allowDrop:$o,indent:yo}=e;fe&&ve({event:M,node:G.rawNode});let sr=M.currentTarget,{height:ur,top:No}=sr.getBoundingClientRect(),Ho=M.clientY-No,mt;$o({node:G.rawNode,dropPosition:"inside",phase:"drag"})?Ho<=8?mt="before":Ho>=ur-8?mt="after":mt="inside":Ho<=ur/2?mt="before":mt="after";let{value:yd}=N,ao,Yo,dl=yd(G.key);if(dl===null){ne();return}let Fn=!1;mt==="inside"?(ao=G,Yo="inside"):mt==="before"?G.isFirstChild?(ao=G,Yo="before"):(ao=E.value[dl-1],Yo="after"):(ao=G,Yo="after"),!ao.isLeaf&&I.value.includes(ao.key)&&(Fn=!0,Yo==="after"&&(ao=E.value[dl+1],ao?Yo="before":(ao=G,Yo="inside")));let Cn=ao;if(We.value=Cn,!Fn&&Ve.isLastChild&&Ve.key===ao.key&&(Yo="after"),Yo==="after"){let bn=Ke-M.clientX,sl=0;for(;bn>=yo/2&&ao.parent!==null&&ao.isLastChild&&sl<1;)bn-=yo,sl+=1,ao=ao.parent;go.value=sl}else go.value=0;if((Ve.contains(ao)||Yo==="inside"&&((ce=Ve.parent)===null||ce===void 0?void 0:ce.key)===ao.key)&&!(Ve.key===Cn.key&&Ve.key===ao.key)){ne();return}if(!$o({node:ao.rawNode,dropPosition:Yo,phase:"drag"})){ne();return}if(Ve.key===ao.key)Re();else if(ue!==ao.key)if(Yo==="inside"){if(e.expandOnDragenter){if(Oe(ao),!ao.shallowLoaded&&ue!==ao.key){Ce();return}}else if(!ao.shallowLoaded){Ce();return}}else Re();else Yo!=="inside"&&Re();qe.value=Yo,bo.value=ao}function Or({event:M,node:G,dropPosition:fe}){if(!e.draggable||e.disabled||G.disabled)return;let{value:ce}=So,{value:Ve}=bo,{value:$o}=qe;if(!(!ce||!Ve||!$o)&&!!e.allowDrop({node:Ve.rawNode,dropPosition:$o,phase:"drag"})&&ce.key!==Ve.key){if($o==="before"){let yo=ce.getNext({includeDisabled:!0});if(yo&&yo.key===Ve.key){ne();return}}if($o==="after"){let yo=ce.getPrev({includeDisabled:!0});if(yo&&yo.key===Ve.key){ne();return}}Ae({event:M,node:Ve.rawNode,dragNode:ce.rawNode,dropPosition:fe}),Ce()}}function ya(){U()}function Fr(){U()}function A(M){var G;if(e.virtualScroll||e.internalScrollable){let{value:fe}=l;if((G=fe==null?void 0:fe.containerRef)===null||G===void 0?void 0:G.contains(M.relatedTarget))return;se.value=null}else{let{value:fe}=a;if(fe==null?void 0:fe.contains(M.relatedTarget))return;se.value=null}}lo(se,M=>{var G,fe;if(M!==null){if(e.virtualScroll)(G=n.value)===null||G===void 0||G.scrollTo({key:M});else if(e.internalScrollable){let{value:ce}=l;if(ce===null)return;let Ve=(fe=ce.contentRef)===null||fe===void 0?void 0:fe.querySelector(`[data-key="${ja(M)}"]`);if(!Ve)return;ce.scrollTo({el:Ve})}}}),rt(lr,{loadingKeysRef:$e,highlightKeySetRef:Ye,displayedCheckedKeysRef:z,displayedIndeterminateKeysRef:C,mergedSelectedKeysRef:S,mergedExpandedKeysRef:I,mergedThemeRef:r,mergedCheckStrategyRef:k,nodePropsRef:_e(e,"nodeProps"),disabledRef:_e(e,"disabled"),checkableRef:_e(e,"checkable"),selectableRef:_e(e,"selectable"),onLoadRef:_e(e,"onLoad"),draggableRef:_e(e,"draggable"),blockLineRef:_e(e,"blockLine"),indentRef:_e(e,"indent"),cascadeRef:_e(e,"cascade"),droppingMouseNodeRef:We,droppingNodeParentRef:Le,draggingNodeRef:So,droppingPositionRef:qe,droppingOffsetLevelRef:go,fNodesRef:E,pendingNodeKeyRef:se,internalScrollableRef:_e(e,"internalScrollable"),internalCheckboxFocusableRef:_e(e,"internalCheckboxFocusable"),internalTreeSelect:e.internalTreeSelect,renderLabelRef:_e(e,"renderLabel"),renderPrefixRef:_e(e,"renderPrefix"),renderSuffixRef:_e(e,"renderSuffix"),renderSwitcherIconRef:_e(e,"renderSwitcherIcon"),labelFieldRef:_e(e,"labelField"),multipleRef:_e(e,"multiple"),handleSwitcherClick:te,handleDragEnd:Zo,handleDragEnter:ze,handleDragLeave:Je,handleDragStart:Io,handleDrop:Or,handleDragOver:Bo,handleSelect:de,handleCheck:T});let le={handleKeydown:Ee,handleKeyup:Se},Be=W(()=>{let{common:{cubicBezierEaseInOut:M},self:{fontSize:G,nodeBorderRadius:fe,nodeColorHover:ce,nodeColorPressed:Ve,nodeColorActive:$o,arrowColor:yo,loadingColor:sr,nodeTextColor:ur,nodeTextColorDisabled:No,dropMarkColor:Ho}}=r.value;return{"--n-arrow-color":yo,"--n-loading-color":sr,"--n-bezier":M,"--n-font-size":G,"--n-node-border-radius":fe,"--n-node-color-active":$o,"--n-node-color-hover":ce,"--n-node-color-pressed":Ve,"--n-node-text-color":ur,"--n-node-text-color-disabled":No,"--n-drop-mark-color":Ho}}),ho=t?tt("tree",void 0,Be,e):void 0;return{mergedClsPrefix:o,mergedTheme:r,fNodes:j,aip:x,selfElRef:a,virtualListInstRef:n,scrollbarInstRef:l,handleFocusout:A,handleDragLeaveTree:eo,handleScroll:ya,getScrollContainer:i,getScrollContent:d,handleAfterEnter:ae,handleResize:Fr,handleKeydown:le.handleKeydown,handleKeyup:le.handleKeyup,cssVars:t?void 0:Be,themeClass:ho==null?void 0:ho.themeClass,onRender:ho==null?void 0:ho.onRender}},render(){var e;let{fNodes:o,internalRenderEmpty:t}=this;if(!o.length&&t)return t();let{mergedClsPrefix:r,blockNode:a,blockLine:l,draggable:n,disabled:i,internalFocusable:d,checkable:s,handleKeyup:u,handleKeydown:f,handleFocusout:m}=this,p=d&&!i,c=p?"0":void 0,R=[`${r}-tree`,s&&`${r}-tree--checkable`,(l||a)&&`${r}-tree--block-node`,l&&`${r}-tree--block-line`],b=k=>"__motion"in k?w(Hw,{height:k.height,nodes:k.nodes,clsPrefix:r,mode:k.mode,onAfterEnter:this.handleAfterEnter}):w(cd,{key:k.key,tmNode:k,clsPrefix:r});if(this.virtualScroll){let{mergedTheme:k,internalScrollablePadding:z}=this,C=Va(z||"0");return w(on,{ref:"scrollbarInstRef",onDragleave:n?this.handleDragLeaveTree:void 0,container:this.getScrollContainer,content:this.getScrollContent,class:R,theme:k.peers.Scrollbar,themeOverrides:k.peerOverrides.Scrollbar,tabindex:c,onKeyup:p?u:void 0,onKeydown:p?f:void 0,onFocusout:p?m:void 0},{default:()=>{var g;return(g=this.onRender)===null||g===void 0||g.call(this),w(Vl,{ref:"virtualListInstRef",items:this.fNodes,itemSize:hd,ignoreItemResize:this.aip,paddingTop:C.top,paddingBottom:C.bottom,class:this.themeClass,style:[this.cssVars,{paddingLeft:C.left,paddingRight:C.right}],onScroll:this.handleScroll,onResize:this.handleResize,showScrollbar:!1,itemResizable:!0},{default:({item:v})=>b(v)})}})}let{internalScrollable:h}=this;return R.push(this.themeClass),(e=this.onRender)===null||e===void 0||e.call(this),h?w(on,{class:R,tabindex:c,onKeyup:p?u:void 0,onKeydown:p?f:void 0,onFocusout:p?m:void 0,style:this.cssVars,contentStyle:{padding:this.internalScrollablePadding}},{default:()=>w("div",{onDragleave:n?this.handleDragLeaveTree:void 0,ref:"selfElRef"},this.fNodes.map(b))}):w("div",{class:R,tabindex:c,ref:"selfElRef",style:this.cssVars,onKeyup:p?u:void 0,onKeydown:p?f:void 0,onFocusout:p?m:void 0,onDragleave:n?this.handleDragLeaveTree:void 0},o.length?o.map(b):Yt(this.$slots.empty,()=>{var k,z,C,g;return[w(du,{class:`${r}-tree__empty`,theme:(z=(k=this.theme)===null||k===void 0?void 0:k.peers)===null||z===void 0?void 0:z.Empty,themeOverrides:(g=(C=this.themeOverrides)===null||C===void 0?void 0:C.peers)===null||g===void 0?void 0:g.Empty})]}))}});var xd={name:"dark",common:P,Alert:mu,Anchor:hu,AutoComplete:wu,Avatar:ln,AvatarGroup:Tu,BackTop:Ru,Badge:Ou,Breadcrumb:Fu,Button:po,ButtonGroup:Sf,Calendar:vu,Card:dn,Carousel:Mu,Cascader:Lu,Checkbox:Ht,Code:sn,Collapse:Iu,CollapseTransition:Hu,ColorPicker:Au,DataTable:qu,DatePicker:of,Descriptions:tf,Dialog:Sn,Divider:df,Drawer:uf,Dropdown:hn,DynamicInput:ff,DynamicTags:pf,Element:mf,Empty:Tt,Ellipsis:mn,Form:cf,GradientText:hf,Icon:Yu,IconWrapper:xf,Image:tp,Input:Co,InputNumber:gf,Layout:wf,List:Tf,LoadingBar:Rf,Log:Of,Menu:bf,Mention:Ff,Message:yf,Modal:nf,Notification:kf,PageHeader:Df,Pagination:fn,Popconfirm:Mf,Popover:it,Popselect:Bf,Progress:wn,Radio:cn,Rate:Nf,Result:_f,Scrollbar:fo,Select:un,Skeleton:rp,Slider:If,Space:gn,Spin:Vf,Statistic:Wf,Steps:zf,Switch:jf,Table:$f,Tabs:Uf,Tag:tn,Thing:Kf,TimePicker:xn,Timeline:Gf,Tooltip:ar,Transfer:qf,Tree:Tn,TreeSelect:Yf,Typography:Jf,Upload:ep,Watermark:op};function DP(e){let o=0;for(let t=0;t<e.length;++t)e[t]==="&"&&++o;return o}var Ww=/\s*,(?![^(]*\))\s*/g,PP=/\s+/g;function MP(e,o){let t=[];return o.split(Ww).forEach(r=>{let a=DP(r);if(a){if(a===1){e.forEach(n=>{t.push(r.replace("&",n))});return}}else{e.forEach(n=>{t.push((n&&n+" ")+r)});return}let l=[r];for(;a--;){let n=[];l.forEach(i=>{e.forEach(d=>{n.push(i.replace("&",d))})}),l=n}l.forEach(n=>t.push(n))}),t}function BP(e,o){let t=[];return o.split(Ww).forEach(r=>{e.forEach(a=>{t.push((a&&a+" ")+r)})}),t}function zw(e){let o=[""];return e.forEach(t=>{t=t&&t.trim(),!!t&&(t.includes("&")?o=MP(o,t):o=BP(o,t))}),o.join(", ").replace(PP," ")}var EP=/[A-Z]/g;function jw(e){return e.replace(EP,o=>"-"+o.toLowerCase())}function LP(e,o=" "){return typeof e=="object"&&e!==null?` { +`+Object.entries(e).map(t=>o+` ${jw(t[0])}: ${t[1]};`).join(` `)+` -`+o+"}":`: ${e};`}function SP(e,o,t){return typeof e=="function"?e({context:o.context,props:t}):e}function Bw(e,o,t,r){if(!o)return"";let a=SP(o,t,r);if(!a)return"";if(typeof a=="string")return`${e} { +`+o+"}":`: ${e};`}function NP(e,o,t){return typeof e=="function"?e({context:o.context,props:t}):e}function $w(e,o,t,r){if(!o)return"";let a=NP(o,t,r);if(!a)return"";if(typeof a=="string")return`${e} { ${a} }`;let l=Object.keys(a);if(l.length===0)return t.config.keepEmptyBlock?e+` { }`:"";let n=e?[e+" {"]:[];return l.forEach(i=>{let d=a[i];if(i==="raw"){n.push(` `+d+` -`);return}i=Mw(i),d!=null&&n.push(` ${i}${hP(d)}`)}),e&&n.push("}"),n.join(` -`)}function sp(e,o,t){!e||e.forEach(r=>{if(Array.isArray(r))sp(r,o,t);else if(typeof r=="function"){let a=r(o);Array.isArray(a)?sp(a,o,t):a&&t(a)}else r&&t(r)})}function Lw(e,o,t,r,a,l){let n=e.$;!n||typeof n=="string"?o.push(n):typeof n=="function"?o.push(n({context:r.context,props:a})):(n.before&&n.before(r.context),!n.$||typeof n.$=="string"?o.push(n.$):n.$&&o.push(n.$({context:r.context,props:a})));let i=Pw(o),d=Bw(i,e.props,r,a);l&&d&&l.insertRule(d),!l&&d.length&&t.push(d),e.children&&sp(e.children,{context:r.context,props:a},s=>{if(typeof s=="string"){let u=Bw(i,{raw:s},r,a);l?l.insertRule(u):t.push(u)}else Lw(s,o,t,r,a,l)}),o.pop(),n&&n.after&&n.after(r.context)}function xd(e,o,t,r=!1){let a=[];return Lw(e,[],a,o,t,r?e.instance.__styleSheet:void 0),r?"":a.join(` +`);return}i=jw(i),d!=null&&n.push(` ${i}${LP(d)}`)}),e&&n.push("}"),n.join(` +`)}function up(e,o,t){!e||e.forEach(r=>{if(Array.isArray(r))up(r,o,t);else if(typeof r=="function"){let a=r(o);Array.isArray(a)?up(a,o,t):a&&t(a)}else r&&t(r)})}function Uw(e,o,t,r,a,l){let n=e.$;!n||typeof n=="string"?o.push(n):typeof n=="function"?o.push(n({context:r.context,props:a})):(n.before&&n.before(r.context),!n.$||typeof n.$=="string"?o.push(n.$):n.$&&o.push(n.$({context:r.context,props:a})));let i=zw(o),d=$w(i,e.props,r,a);l&&d&&l.insertRule(d),!l&&d.length&&t.push(d),e.children&&up(e.children,{context:r.context,props:a},s=>{if(typeof s=="string"){let u=$w(i,{raw:s},r,a);l?l.insertRule(u):t.push(u)}else Uw(s,o,t,r,a,l)}),o.pop(),n&&n.after&&n.after(r.context)}function Sd(e,o,t,r=!1){let a=[];return Uw(e,[],a,o,t,r?e.instance.__styleSheet:void 0),r?"":a.join(` -`)}function hd(e){if(!e)return;let o=e.parentElement;o&&o.removeChild(e)}function Tn(e){return document.querySelector(`style[cssr-id="${e}"]`)}function Ew(e){let o=document.createElement("style");return o.setAttribute("cssr-id",e),o}window&&(window.__cssrContext={});function Nw(e){let o=e.getAttribute("mount-count");return o===null?null:Number(o)}function up(e,o){e.setAttribute("mount-count",String(o))}function fp(e,o,t,r){let{els:a}=o;if(t===void 0)a.forEach(hd),o.els=[];else{let l=Tn(t);if(l&&a.includes(l)){let n=Nw(l);r?n===null?console.error(`[css-render/unmount]: The style with target='${t}' is mounted in count mode.`):n<=1?(hd(l),o.els=a.filter(i=>i!==l)):up(l,n-1):n!==null?console.error(`[css-render/unmount]: The style with target='${t}' is mounted in no-count mode.`):(hd(l),o.els=a.filter(i=>i!==l))}}}function gP(e,o){e.push(o)}function _w(e,o,t,r,a,l,n,i,d){if(n&&!d){if(t===void 0){console.error("[css-render/mount]: `id` is required in `boost` mode.");return}let p=window.__cssrContext;p[t]||(p[t]=!0,xd(o,e,r,n));return}let s,{els:u}=o,f;if(t===void 0&&(f=o.render(r),t=st(f)),d){d(t,f!=null?f:o.render(r));return}let c=Tn(t);if(i||c===null){if(s=c===null?Ew(t):c,f===void 0&&(f=o.render(r)),s.textContent=f,c!==null)return;if(a){let p=document.head.getElementsByTagName("style")[0]||null;document.head.insertBefore(s,p)}else document.head.appendChild(s);l&&up(s,1),gP(u,s)}else{let p=Nw(c);l?p===null?console.error(`[css-render/mount]: The style with id='${t}' has been mounted in no-count mode.`):up(c,p+1):p!==null&&console.error(`[css-render/mount]: The style with id='${t}' has been mounted in count mode.`)}return c!=null?c:s}function wP(e){return xd(this,this.instance,e)}function TP(e={}){let{target:o,id:t,ssr:r,props:a,count:l=!1,head:n=!1,boost:i=!1,force:d=!1}=e;return _w(this.instance,this,t!=null?t:o,a,n,l,i,d,r)}function RP(e={}){let{id:o,target:t,delay:r=0,count:a=!1}=e;r===0?fp(this.instance,this,o!=null?o:t,a):setTimeout(()=>fp(this.instance,this,o!=null?o:t,a),r)}var Sd=function(e,o,t,r){return{instance:e,$:o,props:t,children:r,els:[],render:wP,mount:TP,unmount:RP}},Iw=function(e,o,t,r){return Array.isArray(o)?Sd(e,{$:null},null,o):Array.isArray(t)?Sd(e,o,null,t):Array.isArray(r)?Sd(e,o,t,r):Sd(e,o,t,null)};function pp(e={}){let o=null,t={c:(...r)=>Iw(t,...r),use:(r,...a)=>r.install(t,...a),find:Tn,context:{},config:e,get __styleSheet(){if(!o){let r=document.createElement("style");return document.head.appendChild(r),o=document.styleSheets[document.styleSheets.length-1],o}return o}};return t}var{c:mp}=pp(),FP=mp(".xicon",{width:"1em",height:"1em",display:"inline-flex"},[mp("svg",{width:"1em",height:"1em"}),mp("svg:not([fill])",{fill:"currentColor"})]),cp=()=>{FP.mount({id:"xicons-icon"})};var xp={size:[String,Number],color:String,tag:String},hp=Symbol("IconConfigInjection"),OP=le({name:"IconConfigProvider",props:xp,setup(e,{slots:o}){return qo(hp,e),()=>Ma(o,"default")}});var Hw="span";var Sp=le({name:"Icon",props:xp,setup(e,{slots:o}){let t=Te(hp,null),r=V(()=>{var n;let i=(n=e.size)!==null&&n!==void 0?n:t==null?void 0:t.size;if(i!==void 0)return typeof i=="number"||/^\d+$/.test(i)?`${i}px`:i}),a=V(()=>{let{color:n}=e;return n===void 0?t?t.color:void 0:n}),l=V(()=>{var n;let{tag:i}=e;return i===void 0?(n=t==null?void 0:t.tag)!==null&&n!==void 0?n:Hw:i});return dr(()=>{cp()}),()=>R(l.value,{class:"xicon",style:{color:a.value,fontSize:r.value}},[Ma(o,"default")])}});var CP={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},bP=La("path",{d:"M12 4c4.41 0 8 3.59 8 8s-3.59 8-8 8s-8-3.59-8-8s3.59-8 8-8m0-2C6.48 2 2 6.48 2 12s4.48 10 10 10s10-4.48 10-10S17.52 2 12 2zm1 10V9c0-.55-.45-1-1-1s-1 .45-1 1v3H9.21c-.45 0-.67.54-.35.85l2.79 2.79c.2.2.51.2.71 0l2.79-2.79a.5.5 0 0 0-.35-.85H13z",fill:"currentColor"},null,-1),yP=[bP],gp=le({name:"ArrowCircleDownRound",render:function(o,t){return ht(),kr("svg",CP,yP)}});var vP={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},kP=La("path",{d:"M11.77 3c-2.65.07-5 1.28-6.6 3.16L3.85 4.85a.5.5 0 0 0-.85.36V9.5c0 .28.22.5.5.5h4.29c.45 0 .67-.54.35-.85L6.59 7.59C7.88 6.02 9.82 5 12 5c4.32 0 7.74 3.94 6.86 8.41c-.54 2.77-2.81 4.98-5.58 5.47c-3.8.68-7.18-1.74-8.05-5.16c-.12-.42-.52-.72-.96-.72c-.65 0-1.14.61-.98 1.23C4.28 18.12 7.8 21 12 21c5.06 0 9.14-4.17 9-9.26c-.14-4.88-4.35-8.86-9.23-8.74zM14 12c0-1.1-.9-2-2-2s-2 .9-2 2s.9 2 2 2s2-.9 2-2z",fill:"currentColor"},null,-1),AP=[kP],wp=le({name:"SettingsBackupRestoreRound",render:function(o,t){return ht(),kr("svg",vP,AP)}});function Ww(){return{baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}var tl=Ww();function DP(e){tl=e}var PP=/[&<>"']/,MP=/[&<>"']/g,BP=/[<>"']|&(?!#?\w+;)/,LP=/[<>"']|&(?!#?\w+;)/g,EP={"&":"&","<":"<",">":">",'"':""","'":"'"},Vw=e=>EP[e];function Lo(e,o){if(o){if(PP.test(e))return e.replace(MP,Vw)}else if(BP.test(e))return e.replace(LP,Vw);return e}var NP=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;function zw(e){return e.replace(NP,(o,t)=>(t=t.toLowerCase(),t==="colon"?":":t.charAt(0)==="#"?t.charAt(1)==="x"?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""))}var _P=/(^|[^\[])\^/g;function so(e,o){e=e.source||e,o=o||"";let t={replace:(r,a)=>(a=a.source||a,a=a.replace(_P,"$1"),e=e.replace(r,a),t),getRegex:()=>new RegExp(e,o)};return t}var IP=/[^\w:]/g,HP=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function jw(e,o,t){if(e){let r;try{r=decodeURIComponent(zw(t)).replace(IP,"").toLowerCase()}catch(a){return null}if(r.indexOf("javascript:")===0||r.indexOf("vbscript:")===0||r.indexOf("data:")===0)return null}o&&!HP.test(t)&&(t=jP(o,t));try{t=encodeURI(t).replace(/%25/g,"%")}catch(r){return null}return t}var gd={},WP=/^[^:]+:\/*[^/]*$/,VP=/^([^:]+:)[\s\S]*$/,zP=/^([^:]+:\/*[^/]*)[\s\S]*$/;function jP(e,o){gd[" "+e]||(WP.test(e)?gd[" "+e]=e+"/":gd[" "+e]=Td(e,"/",!0)),e=gd[" "+e];let t=e.indexOf(":")===-1;return o.substring(0,2)==="//"?t?o:e.replace(VP,"$1")+o:o.charAt(0)==="/"?t?o:e.replace(zP,"$1")+o:e+o}var wd={exec:function(){}};function Lt(e){let o=1,t,r;for(;o<arguments.length;o++){t=arguments[o];for(r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}function $w(e,o){let t=e.replace(/\|/g,(l,n,i)=>{let d=!1,s=n;for(;--s>=0&&i[s]==="\\";)d=!d;return d?"|":" |"}),r=t.split(/ \|/),a=0;if(r[0].trim()||r.shift(),r.length>0&&!r[r.length-1].trim()&&r.pop(),r.length>o)r.splice(o);else for(;r.length<o;)r.push("");for(;a<r.length;a++)r[a]=r[a].trim().replace(/\\\|/g,"|");return r}function Td(e,o,t){let r=e.length;if(r===0)return"";let a=0;for(;a<r;){let l=e.charAt(r-a-1);if(l===o&&!t)a++;else if(l!==o&&t)a++;else break}return e.substr(0,r-a)}function $P(e,o){if(e.indexOf(o[1])===-1)return-1;let t=e.length,r=0,a=0;for(;a<t;a++)if(e[a]==="\\")a++;else if(e[a]===o[0])r++;else if(e[a]===o[1]&&(r--,r<0))return a;return-1}function Uw(e){e&&e.sanitize&&!e.silent&&console.warn("marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options")}function Kw(e,o){if(o<1)return"";let t="";for(;o>1;)o&1&&(t+=e),o>>=1,e+=e;return t+e}function Gw(e,o,t,r){let a=o.href,l=o.title?Lo(o.title):null,n=e[1].replace(/\\([\[\]])/g,"$1");if(e[0].charAt(0)!=="!"){r.state.inLink=!0;let i={type:"link",raw:t,href:a,title:l,text:n,tokens:r.inlineTokens(n,[])};return r.state.inLink=!1,i}else return{type:"image",raw:t,href:a,title:l,text:Lo(n)}}function UP(e,o){let t=e.match(/^(\s+)(?:```)/);if(t===null)return o;let r=t[1];return o.split(` +`)}function gd(e){if(!e)return;let o=e.parentElement;o&&o.removeChild(e)}function Rn(e){return document.querySelector(`style[cssr-id="${e}"]`)}function Kw(e){let o=document.createElement("style");return o.setAttribute("cssr-id",e),o}window&&(window.__cssrContext={});function Gw(e){let o=e.getAttribute("mount-count");return o===null?null:Number(o)}function fp(e,o){e.setAttribute("mount-count",String(o))}function pp(e,o,t,r){let{els:a}=o;if(t===void 0)a.forEach(gd),o.els=[];else{let l=Rn(t);if(l&&a.includes(l)){let n=Gw(l);r?n===null?console.error(`[css-render/unmount]: The style with target='${t}' is mounted in count mode.`):n<=1?(gd(l),o.els=a.filter(i=>i!==l)):fp(l,n-1):n!==null?console.error(`[css-render/unmount]: The style with target='${t}' is mounted in no-count mode.`):(gd(l),o.els=a.filter(i=>i!==l))}}}function _P(e,o){e.push(o)}function qw(e,o,t,r,a,l,n,i,d){if(n&&!d){if(t===void 0){console.error("[css-render/mount]: `id` is required in `boost` mode.");return}let p=window.__cssrContext;p[t]||(p[t]=!0,Sd(o,e,r,n));return}let s,{els:u}=o,f;if(t===void 0&&(f=o.render(r),t=St(f)),d){d(t,f!=null?f:o.render(r));return}let m=Rn(t);if(i||m===null){if(s=m===null?Kw(t):m,f===void 0&&(f=o.render(r)),s.textContent=f,m!==null)return;if(a){let p=document.head.getElementsByTagName("style")[0]||null;document.head.insertBefore(s,p)}else document.head.appendChild(s);l&&fp(s,1),_P(u,s)}else{let p=Gw(m);l?p===null?console.error(`[css-render/mount]: The style with id='${t}' has been mounted in no-count mode.`):fp(m,p+1):p!==null&&console.error(`[css-render/mount]: The style with id='${t}' has been mounted in count mode.`)}return m!=null?m:s}function IP(e){return Sd(this,this.instance,e)}function HP(e={}){let{target:o,id:t,ssr:r,props:a,count:l=!1,head:n=!1,boost:i=!1,force:d=!1}=e;return qw(this.instance,this,t!=null?t:o,a,n,l,i,d,r)}function VP(e={}){let{id:o,target:t,delay:r=0,count:a=!1}=e;r===0?pp(this.instance,this,o!=null?o:t,a):setTimeout(()=>pp(this.instance,this,o!=null?o:t,a),r)}var wd=function(e,o,t,r){return{instance:e,$:o,props:t,children:r,els:[],render:IP,mount:HP,unmount:VP}},Qw=function(e,o,t,r){return Array.isArray(o)?wd(e,{$:null},null,o):Array.isArray(t)?wd(e,o,null,t):Array.isArray(r)?wd(e,o,t,r):wd(e,o,t,null)};function mp(e={}){let o=null,t={c:(...r)=>Qw(t,...r),use:(r,...a)=>r.install(t,...a),find:Rn,context:{},config:e,get __styleSheet(){if(!o){let r=document.createElement("style");return document.head.appendChild(r),o=document.styleSheets[document.styleSheets.length-1],o}return o}};return t}var{c:cp}=mp(),WP=cp(".xicon",{width:"1em",height:"1em",display:"inline-flex"},[cp("svg",{width:"1em",height:"1em"}),cp("svg:not([fill])",{fill:"currentColor"})]),hp=()=>{WP.mount({id:"xicons-icon"})};var xp={size:[String,Number],color:String,tag:String},Sp=Symbol("IconConfigInjection"),zP=re({name:"IconConfigProvider",props:xp,setup(e,{slots:o}){return rt(Sp,e),()=>Na(o,"default")}});var Zw="span";var On=re({name:"Icon",props:xp,setup(e,{slots:o}){let t=be(Sp,null),r=W(()=>{var n;let i=(n=e.size)!==null&&n!==void 0?n:t==null?void 0:t.size;if(i!==void 0)return typeof i=="number"||/^\d+$/.test(i)?`${i}px`:i}),a=W(()=>{let{color:n}=e;return n===void 0?t?t.color:void 0:n}),l=W(()=>{var n;let{tag:i}=e;return i===void 0?(n=t==null?void 0:t.tag)!==null&&n!==void 0?n:Zw:i});return hr(()=>{hp()}),()=>w(l.value,{class:"xicon",style:{color:a.value,fontSize:r.value}},[Na(o,"default")])}});var jP={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},$P=wo("path",{d:"M12 4c4.41 0 8 3.59 8 8s-3.59 8-8 8s-8-3.59-8-8s3.59-8 8-8m0-2C6.48 2 2 6.48 2 12s4.48 10 10 10s10-4.48 10-10S17.52 2 12 2zm1 10V9c0-.55-.45-1-1-1s-1 .45-1 1v3H9.21c-.45 0-.67.54-.35.85l2.79 2.79c.2.2.51.2.71 0l2.79-2.79a.5.5 0 0 0-.35-.85H13z",fill:"currentColor"},null,-1),UP=[$P],gp=re({name:"ArrowCircleDownRound",render:function(o,t){return oo(),xo("svg",jP,UP)}});var KP={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},GP=wo("path",{d:"M7.38 21.01c.49.49 1.28.49 1.77 0l8.31-8.31a.996.996 0 0 0 0-1.41L9.15 2.98c-.49-.49-1.28-.49-1.77 0s-.49 1.28 0 1.77L14.62 12l-7.25 7.25c-.48.48-.48 1.28.01 1.76z",fill:"currentColor"},null,-1),qP=[GP],wp=re({name:"ArrowForwardIosRound",render:function(o,t){return oo(),xo("svg",KP,qP)}});var QP={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},ZP=wo("path",{d:"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z",fill:"currentColor"},null,-1),YP=wo("path",{d:"M14 17H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z",fill:"currentColor"},null,-1),JP=[ZP,YP],Tp=re({name:"ArticleOutlined",render:function(o,t){return oo(),xo("svg",QP,JP)}});var XP={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},e0=wo("path",{d:"M12 3v10.55c-.59-.34-1.27-.55-2-.55c-2.21 0-4 1.79-4 4s1.79 4 4 4s4-1.79 4-4V7h4V3h-6zm-2 16c-1.1 0-2-.9-2-2s.9-2 2-2s2 .9 2 2s-.9 2-2 2z",fill:"currentColor"},null,-1),o0=[e0],Rp=re({name:"AudiotrackOutlined",render:function(o,t){return oo(),xo("svg",XP,o0)}});var t0={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},r0=wo("path",{d:"M12 2l-5.5 9h11L12 2zm0 3.84L13.93 9h-3.87L12 5.84zM17.5 13c-2.49 0-4.5 2.01-4.5 4.5s2.01 4.5 4.5 4.5s4.5-2.01 4.5-4.5s-2.01-4.5-4.5-4.5zm0 7a2.5 2.5 0 0 1 0-5a2.5 2.5 0 0 1 0 5zM3 21.5h8v-8H3v8zm2-6h4v4H5v-4z",fill:"currentColor"},null,-1),a0=[r0],Op=re({name:"CategoryOutlined",render:function(o,t){return oo(),xo("svg",t0,a0)}});var l0={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},n0=wo("path",{d:"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h8v4h4v12zm-6-3c-1.1 0-2-.9-2-2V9.5c0-.28.22-.5.5-.5s.5.22.5.5V15h2V9.5a2.5 2.5 0 0 0-5 0V15c0 2.21 1.79 4 4 4s4-1.79 4-4v-4h-2v4c0 1.1-.9 2-2 2z",fill:"currentColor"},null,-1),i0=[n0],Fp=re({name:"FilePresentOutlined",render:function(o,t){return oo(),xo("svg",l0,i0)}});var d0={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},s0=wo("path",{d:"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-4.86 8.86l-3 3.87L9 13.14L6 17h12l-3.86-5.14z",fill:"currentColor"},null,-1),u0=[s0],Cp=re({name:"ImageOutlined",render:function(o,t){return oo(),xo("svg",d0,u0)}});var f0={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},p0=wo("path",{d:"M9 7v8l7-4zm12-4H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h5v2h8v-2h5c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 14H3V5h18v12z",fill:"currentColor"},null,-1),m0=[p0],bp=re({name:"OndemandVideoOutlined",render:function(o,t){return oo(),xo("svg",f0,m0)}});var c0={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},h0=wo("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10s10-4.48 10-10S17.52 2 12 2zM4 12c0-.61.08-1.21.21-1.78L8.99 15v1c0 1.1.9 2 2 2v1.93C7.06 19.43 4 16.07 4 12zm13.89 5.4c-.26-.81-1-1.4-1.9-1.4h-1v-3c0-.55-.45-1-1-1h-6v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41C17.92 5.77 20 8.65 20 12c0 2.08-.81 3.98-2.11 5.4z",fill:"currentColor"},null,-1),x0=[h0],yp=re({name:"PublicOutlined",render:function(o,t){return oo(),xo("svg",c0,x0)}});var S0={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},g0=wo("path",{d:"M11.77 3c-2.65.07-5 1.28-6.6 3.16L3.85 4.85a.5.5 0 0 0-.85.36V9.5c0 .28.22.5.5.5h4.29c.45 0 .67-.54.35-.85L6.59 7.59C7.88 6.02 9.82 5 12 5c4.32 0 7.74 3.94 6.86 8.41c-.54 2.77-2.81 4.98-5.58 5.47c-3.8.68-7.18-1.74-8.05-5.16c-.12-.42-.52-.72-.96-.72c-.65 0-1.14.61-.98 1.23C4.28 18.12 7.8 21 12 21c5.06 0 9.14-4.17 9-9.26c-.14-4.88-4.35-8.86-9.23-8.74zM14 12c0-1.1-.9-2-2-2s-2 .9-2 2s.9 2 2 2s2-.9 2-2z",fill:"currentColor"},null,-1),w0=[g0],vp=re({name:"SettingsBackupRestoreRound",render:function(o,t){return oo(),xo("svg",S0,w0)}});var T0={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},R0=wo("path",{d:"M2.5 4v3h5v12h3V7h5V4h-13zm19 5h-9v3h3v7h3v-7h3V9z",fill:"currentColor"},null,-1),O0=[R0],kp=re({name:"TextFieldsOutlined",render:function(o,t){return oo(),xo("svg",T0,O0)}});function Yw(){return{baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}var ll=Yw();function F0(e){ll=e}var C0=/[&<>"']/,b0=/[&<>"']/g,y0=/[<>"']|&(?!#?\w+;)/,v0=/[<>"']|&(?!#?\w+;)/g,k0={"&":"&","<":"<",">":">",'"':""","'":"'"},Jw=e=>k0[e];function zo(e,o){if(o){if(C0.test(e))return e.replace(b0,Jw)}else if(y0.test(e))return e.replace(v0,Jw);return e}var A0=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;function Xw(e){return e.replace(A0,(o,t)=>(t=t.toLowerCase(),t==="colon"?":":t.charAt(0)==="#"?t.charAt(1)==="x"?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""))}var D0=/(^|[^\[])\^/g;function mo(e,o){e=e.source||e,o=o||"";let t={replace:(r,a)=>(a=a.source||a,a=a.replace(D0,"$1"),e=e.replace(r,a),t),getRegex:()=>new RegExp(e,o)};return t}var P0=/[^\w:]/g,M0=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function eT(e,o,t){if(e){let r;try{r=decodeURIComponent(Xw(t)).replace(P0,"").toLowerCase()}catch(a){return null}if(r.indexOf("javascript:")===0||r.indexOf("vbscript:")===0||r.indexOf("data:")===0)return null}o&&!M0.test(t)&&(t=N0(o,t));try{t=encodeURI(t).replace(/%25/g,"%")}catch(r){return null}return t}var Td={},B0=/^[^:]+:\/*[^/]*$/,E0=/^([^:]+:)[\s\S]*$/,L0=/^([^:]+:\/*[^/]*)[\s\S]*$/;function N0(e,o){Td[" "+e]||(B0.test(e)?Td[" "+e]=e+"/":Td[" "+e]=Od(e,"/",!0)),e=Td[" "+e];let t=e.indexOf(":")===-1;return o.substring(0,2)==="//"?t?o:e.replace(E0,"$1")+o:o.charAt(0)==="/"?t?o:e.replace(L0,"$1")+o:e+o}var Rd={exec:function(){}};function Vt(e){let o=1,t,r;for(;o<arguments.length;o++){t=arguments[o];for(r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e}function oT(e,o){let t=e.replace(/\|/g,(l,n,i)=>{let d=!1,s=n;for(;--s>=0&&i[s]==="\\";)d=!d;return d?"|":" |"}),r=t.split(/ \|/),a=0;if(r[0].trim()||r.shift(),r.length>0&&!r[r.length-1].trim()&&r.pop(),r.length>o)r.splice(o);else for(;r.length<o;)r.push("");for(;a<r.length;a++)r[a]=r[a].trim().replace(/\\\|/g,"|");return r}function Od(e,o,t){let r=e.length;if(r===0)return"";let a=0;for(;a<r;){let l=e.charAt(r-a-1);if(l===o&&!t)a++;else if(l!==o&&t)a++;else break}return e.substr(0,r-a)}function _0(e,o){if(e.indexOf(o[1])===-1)return-1;let t=e.length,r=0,a=0;for(;a<t;a++)if(e[a]==="\\")a++;else if(e[a]===o[0])r++;else if(e[a]===o[1]&&(r--,r<0))return a;return-1}function tT(e){e&&e.sanitize&&!e.silent&&console.warn("marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options")}function rT(e,o){if(o<1)return"";let t="";for(;o>1;)o&1&&(t+=e),o>>=1,e+=e;return t+e}function aT(e,o,t,r){let a=o.href,l=o.title?zo(o.title):null,n=e[1].replace(/\\([\[\]])/g,"$1");if(e[0].charAt(0)!=="!"){r.state.inLink=!0;let i={type:"link",raw:t,href:a,title:l,text:n,tokens:r.inlineTokens(n,[])};return r.state.inLink=!1,i}else return{type:"image",raw:t,href:a,title:l,text:zo(n)}}function I0(e,o){let t=e.match(/^(\s+)(?:```)/);if(t===null)return o;let r=t[1];return o.split(` `).map(a=>{let l=a.match(/^\s+/);if(l===null)return a;let[n]=l;return n.length>=r.length?a.slice(r.length):a}).join(` -`)}var Rd=class{constructor(o){this.options=o||tl}space(o){let t=this.rules.block.newline.exec(o);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(o){let t=this.rules.block.code.exec(o);if(t){let r=t[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?r:Td(r,` -`)}}}fences(o){let t=this.rules.block.fences.exec(o);if(t){let r=t[0],a=UP(r,t[3]||"");return{type:"code",raw:r,lang:t[2]?t[2].trim():t[2],text:a}}}heading(o){let t=this.rules.block.heading.exec(o);if(t){let r=t[2].trim();if(/#$/.test(r)){let l=Td(r,"#");(this.options.pedantic||!l||/ $/.test(l))&&(r=l.trim())}let a={type:"heading",raw:t[0],depth:t[1].length,text:r,tokens:[]};return this.lexer.inline(a.text,a.tokens),a}}hr(o){let t=this.rules.block.hr.exec(o);if(t)return{type:"hr",raw:t[0]}}blockquote(o){let t=this.rules.block.blockquote.exec(o);if(t){let r=t[0].replace(/^ *> ?/gm,"");return{type:"blockquote",raw:t[0],tokens:this.lexer.blockTokens(r,[]),text:r}}}list(o){let t=this.rules.block.list.exec(o);if(t){let r,a,l,n,i,d,s,u,f,c,p,x,T=t[1].trim(),C=T.length>1,S={type:"list",raw:"",ordered:C,start:C?+T.slice(0,-1):"",loose:!1,items:[]};T=C?`\\d{1,9}\\${T.slice(-1)}`:`\\${T}`,this.options.pedantic&&(T=C?T:"[*+-]");let D=new RegExp(`^( {0,3}${T})((?: [^\\n]*)?(?:\\n|$))`);for(;o&&(x=!1,!(!(t=D.exec(o))||this.rules.block.hr.test(o)));){if(r=t[0],o=o.substring(r.length),u=t[2].split(` +`)}var Fd=class{constructor(o){this.options=o||ll}space(o){let t=this.rules.block.newline.exec(o);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(o){let t=this.rules.block.code.exec(o);if(t){let r=t[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?r:Od(r,` +`)}}}fences(o){let t=this.rules.block.fences.exec(o);if(t){let r=t[0],a=I0(r,t[3]||"");return{type:"code",raw:r,lang:t[2]?t[2].trim():t[2],text:a}}}heading(o){let t=this.rules.block.heading.exec(o);if(t){let r=t[2].trim();if(/#$/.test(r)){let l=Od(r,"#");(this.options.pedantic||!l||/ $/.test(l))&&(r=l.trim())}let a={type:"heading",raw:t[0],depth:t[1].length,text:r,tokens:[]};return this.lexer.inline(a.text,a.tokens),a}}hr(o){let t=this.rules.block.hr.exec(o);if(t)return{type:"hr",raw:t[0]}}blockquote(o){let t=this.rules.block.blockquote.exec(o);if(t){let r=t[0].replace(/^ *> ?/gm,"");return{type:"blockquote",raw:t[0],tokens:this.lexer.blockTokens(r,[]),text:r}}}list(o){let t=this.rules.block.list.exec(o);if(t){let r,a,l,n,i,d,s,u,f,m,p,c,R=t[1].trim(),b=R.length>1,h={type:"list",raw:"",ordered:b,start:b?+R.slice(0,-1):"",loose:!1,items:[]};R=b?`\\d{1,9}\\${R.slice(-1)}`:`\\${R}`,this.options.pedantic&&(R=b?R:"[*+-]");let k=new RegExp(`^( {0,3}${R})((?: [^\\n]*)?(?:\\n|$))`);for(;o&&(c=!1,!(!(t=k.exec(o))||this.rules.block.hr.test(o)));){if(r=t[0],o=o.substring(r.length),u=t[2].split(` `,1)[0],f=o.split(` `,1)[0],this.options.pedantic?(n=2,p=u.trimLeft()):(n=t[2].search(/[^ ]/),n=n>4?1:n,p=u.slice(n),n+=t[1].length),d=!1,!u&&/^ *$/.test(f)&&(r+=f+` -`,o=o.substring(f.length+1),x=!0),!x){let O=new RegExp(`^ {0,${Math.min(3,n-1)}}(?:[*+-]|\\d{1,9}[.)])`);for(;o&&(c=o.split(` -`,1)[0],u=c,this.options.pedantic&&(u=u.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!O.test(u));){if(u.search(/[^ ]/)>=n||!u.trim())p+=` +`,o=o.substring(f.length+1),c=!0),!c){let C=new RegExp(`^ {0,${Math.min(3,n-1)}}(?:[*+-]|\\d{1,9}[.)])`);for(;o&&(m=o.split(` +`,1)[0],u=m,this.options.pedantic&&(u=u.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!C.test(u));){if(u.search(/[^ ]/)>=n||!u.trim())p+=` `+u.slice(n);else if(!d)p+=` -`+u;else break;!d&&!u.trim()&&(d=!0),r+=c+` -`,o=o.substring(c.length+1)}}S.loose||(s?S.loose=!0:/\n *\n *$/.test(r)&&(s=!0)),this.options.gfm&&(a=/^\[[ xX]\] /.exec(p),a&&(l=a[0]!=="[ ] ",p=p.replace(/^\[[ xX]\] +/,""))),S.items.push({type:"list_item",raw:r,task:!!a,checked:l,loose:!1,text:p}),S.raw+=r}S.items[S.items.length-1].raw=r.trimRight(),S.items[S.items.length-1].text=p.trimRight(),S.raw=S.raw.trimRight();let j=S.items.length;for(i=0;i<j;i++){this.lexer.state.top=!1,S.items[i].tokens=this.lexer.blockTokens(S.items[i].text,[]);let O=S.items[i].tokens.filter(v=>v.type==="space"),g=O.every(v=>{let w=v.raw.split(""),F=0;for(let B of w)if(B===` -`&&(F+=1),F>1)return!0;return!1});!S.loose&&O.length&&g&&(S.loose=!0,S.items[i].loose=!0)}return S}}html(o){let t=this.rules.block.html.exec(o);if(t){let r={type:"html",raw:t[0],pre:!this.options.sanitizer&&(t[1]==="pre"||t[1]==="script"||t[1]==="style"),text:t[0]};return this.options.sanitize&&(r.type="paragraph",r.text=this.options.sanitizer?this.options.sanitizer(t[0]):Lo(t[0]),r.tokens=[],this.lexer.inline(r.text,r.tokens)),r}}def(o){let t=this.rules.block.def.exec(o);if(t){t[3]&&(t[3]=t[3].substring(1,t[3].length-1));let r=t[1].toLowerCase().replace(/\s+/g," ");return{type:"def",tag:r,raw:t[0],href:t[2],title:t[3]}}}table(o){let t=this.rules.block.table.exec(o);if(t){let r={type:"table",header:$w(t[1]).map(a=>({text:a})),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:t[3]&&t[3].trim()?t[3].replace(/\n[ \t]*$/,"").split(` -`):[]};if(r.header.length===r.align.length){r.raw=t[0];let a=r.align.length,l,n,i,d;for(l=0;l<a;l++)/^ *-+: *$/.test(r.align[l])?r.align[l]="right":/^ *:-+: *$/.test(r.align[l])?r.align[l]="center":/^ *:-+ *$/.test(r.align[l])?r.align[l]="left":r.align[l]=null;for(a=r.rows.length,l=0;l<a;l++)r.rows[l]=$w(r.rows[l],r.header.length).map(s=>({text:s}));for(a=r.header.length,n=0;n<a;n++)r.header[n].tokens=[],this.lexer.inlineTokens(r.header[n].text,r.header[n].tokens);for(a=r.rows.length,n=0;n<a;n++)for(d=r.rows[n],i=0;i<d.length;i++)d[i].tokens=[],this.lexer.inlineTokens(d[i].text,d[i].tokens);return r}}}lheading(o){let t=this.rules.block.lheading.exec(o);if(t){let r={type:"heading",raw:t[0],depth:t[2].charAt(0)==="="?1:2,text:t[1],tokens:[]};return this.lexer.inline(r.text,r.tokens),r}}paragraph(o){let t=this.rules.block.paragraph.exec(o);if(t){let r={type:"paragraph",raw:t[0],text:t[1].charAt(t[1].length-1)===` -`?t[1].slice(0,-1):t[1],tokens:[]};return this.lexer.inline(r.text,r.tokens),r}}text(o){let t=this.rules.block.text.exec(o);if(t){let r={type:"text",raw:t[0],text:t[0],tokens:[]};return this.lexer.inline(r.text,r.tokens),r}}escape(o){let t=this.rules.inline.escape.exec(o);if(t)return{type:"escape",raw:t[0],text:Lo(t[1])}}tag(o){let t=this.rules.inline.tag.exec(o);if(t)return!this.lexer.state.inLink&&/^<a /i.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&/^<\/a>/i.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):Lo(t[0]):t[0]}}link(o){let t=this.rules.inline.link.exec(o);if(t){let r=t[2].trim();if(!this.options.pedantic&&/^</.test(r)){if(!/>$/.test(r))return;let n=Td(r.slice(0,-1),"\\");if((r.length-n.length)%2==0)return}else{let n=$P(t[2],"()");if(n>-1){let d=(t[0].indexOf("!")===0?5:4)+t[1].length+n;t[2]=t[2].substring(0,n),t[0]=t[0].substring(0,d).trim(),t[3]=""}}let a=t[2],l="";if(this.options.pedantic){let n=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(a);n&&(a=n[1],l=n[3])}else l=t[3]?t[3].slice(1,-1):"";return a=a.trim(),/^</.test(a)&&(this.options.pedantic&&!/>$/.test(r)?a=a.slice(1):a=a.slice(1,-1)),Gw(t,{href:a&&a.replace(this.rules.inline._escapes,"$1"),title:l&&l.replace(this.rules.inline._escapes,"$1")},t[0],this.lexer)}}reflink(o,t){let r;if((r=this.rules.inline.reflink.exec(o))||(r=this.rules.inline.nolink.exec(o))){let a=(r[2]||r[1]).replace(/\s+/g," ");if(a=t[a.toLowerCase()],!a||!a.href){let l=r[0].charAt(0);return{type:"text",raw:l,text:l}}return Gw(r,a,r[0],this.lexer)}}emStrong(o,t,r=""){let a=this.rules.inline.emStrong.lDelim.exec(o);if(!a||a[3]&&r.match(/[\p{L}\p{N}]/u))return;let l=a[1]||a[2]||"";if(!l||l&&(r===""||this.rules.inline.punctuation.exec(r))){let n=a[0].length-1,i,d,s=n,u=0,f=a[0][0]==="*"?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(f.lastIndex=0,t=t.slice(-1*o.length+n);(a=f.exec(t))!=null;){if(i=a[1]||a[2]||a[3]||a[4]||a[5]||a[6],!i)continue;if(d=i.length,a[3]||a[4]){s+=d;continue}else if((a[5]||a[6])&&n%3&&!((n+d)%3)){u+=d;continue}if(s-=d,s>0)continue;if(d=Math.min(d,d+s+u),Math.min(n,d)%2){let p=o.slice(1,n+a.index+d);return{type:"em",raw:o.slice(0,n+a.index+d+1),text:p,tokens:this.lexer.inlineTokens(p,[])}}let c=o.slice(2,n+a.index+d-1);return{type:"strong",raw:o.slice(0,n+a.index+d+1),text:c,tokens:this.lexer.inlineTokens(c,[])}}}}codespan(o){let t=this.rules.inline.code.exec(o);if(t){let r=t[2].replace(/\n/g," "),a=/[^ ]/.test(r),l=/^ /.test(r)&&/ $/.test(r);return a&&l&&(r=r.substring(1,r.length-1)),r=Lo(r,!0),{type:"codespan",raw:t[0],text:r}}}br(o){let t=this.rules.inline.br.exec(o);if(t)return{type:"br",raw:t[0]}}del(o){let t=this.rules.inline.del.exec(o);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2],[])}}autolink(o,t){let r=this.rules.inline.autolink.exec(o);if(r){let a,l;return r[2]==="@"?(a=Lo(this.options.mangle?t(r[1]):r[1]),l="mailto:"+a):(a=Lo(r[1]),l=a),{type:"link",raw:r[0],text:a,href:l,tokens:[{type:"text",raw:a,text:a}]}}}url(o,t){let r;if(r=this.rules.inline.url.exec(o)){let a,l;if(r[2]==="@")a=Lo(this.options.mangle?t(r[0]):r[0]),l="mailto:"+a;else{let n;do n=r[0],r[0]=this.rules.inline._backpedal.exec(r[0])[0];while(n!==r[0]);a=Lo(r[0]),r[1]==="www."?l="http://"+a:l=a}return{type:"link",raw:r[0],text:a,href:l,tokens:[{type:"text",raw:a,text:a}]}}}inlineText(o,t){let r=this.rules.inline.text.exec(o);if(r){let a;return this.lexer.state.inRawBlock?a=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(r[0]):Lo(r[0]):r[0]:a=Lo(this.options.smartypants?t(r[0]):r[0]),{type:"text",raw:r[0],text:a}}}},Oe={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)( [^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?<?([^\s>]+)>?(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:wd,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/};Oe._label=/(?!\s*\])(?:\\.|[^\[\]\\])+/;Oe._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/;Oe.def=so(Oe.def).replace("label",Oe._label).replace("title",Oe._title).getRegex();Oe.bullet=/(?:[*+-]|\d{1,9}[.)])/;Oe.listItemStart=so(/^( *)(bull) */).replace("bull",Oe.bullet).getRegex();Oe.list=so(Oe.list).replace(/bull/g,Oe.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+Oe.def.source+")").getRegex();Oe._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul";Oe._comment=/<!--(?!-?>)[\s\S]*?(?:-->|$)/;Oe.html=so(Oe.html,"i").replace("comment",Oe._comment).replace("tag",Oe._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex();Oe.paragraph=so(Oe._paragraph).replace("hr",Oe.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Oe._tag).getRegex();Oe.blockquote=so(Oe.blockquote).replace("paragraph",Oe.paragraph).getRegex();Oe.normal=Lt({},Oe);Oe.gfm=Lt({},Oe.normal,{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"});Oe.gfm.table=so(Oe.gfm.table).replace("hr",Oe.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Oe._tag).getRegex();Oe.gfm.paragraph=so(Oe._paragraph).replace("hr",Oe.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",Oe.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Oe._tag).getRegex();Oe.pedantic=Lt({},Oe.normal,{html:so(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Oe._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:wd,paragraph:so(Oe.normal._paragraph).replace("hr",Oe.hr).replace("heading",` *#{1,6} *[^ -]`).replace("lheading",Oe.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var ce={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:wd,tag:"^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^[^_*]*?\_\_[^_*]*?\*[^_*]*?(?=\_\_)|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,rDelimUnd:/^[^_*]*?\*\*[^_*]*?\_[^_*]*?(?=\*\*)|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:wd,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,punctuation:/^([\spunctuation])/};ce._punctuation="!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~";ce.punctuation=so(ce.punctuation).replace(/punctuation/g,ce._punctuation).getRegex();ce.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g;ce.escapedEmSt=/\\\*|\\_/g;ce._comment=so(Oe._comment).replace("(?:-->|$)","-->").getRegex();ce.emStrong.lDelim=so(ce.emStrong.lDelim).replace(/punct/g,ce._punctuation).getRegex();ce.emStrong.rDelimAst=so(ce.emStrong.rDelimAst,"g").replace(/punct/g,ce._punctuation).getRegex();ce.emStrong.rDelimUnd=so(ce.emStrong.rDelimUnd,"g").replace(/punct/g,ce._punctuation).getRegex();ce._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g;ce._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;ce._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;ce.autolink=so(ce.autolink).replace("scheme",ce._scheme).replace("email",ce._email).getRegex();ce._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/;ce.tag=so(ce.tag).replace("comment",ce._comment).replace("attribute",ce._attribute).getRegex();ce._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/;ce._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/;ce._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/;ce.link=so(ce.link).replace("label",ce._label).replace("href",ce._href).replace("title",ce._title).getRegex();ce.reflink=so(ce.reflink).replace("label",ce._label).replace("ref",Oe._label).getRegex();ce.nolink=so(ce.nolink).replace("ref",Oe._label).getRegex();ce.reflinkSearch=so(ce.reflinkSearch,"g").replace("reflink",ce.reflink).replace("nolink",ce.nolink).getRegex();ce.normal=Lt({},ce);ce.pedantic=Lt({},ce.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:so(/^!?\[(label)\]\((.*?)\)/).replace("label",ce._label).getRegex(),reflink:so(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",ce._label).getRegex()});ce.gfm=Lt({},ce.normal,{escape:so(ce.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/});ce.gfm.url=so(ce.gfm.url,"i").replace("email",ce.gfm._extended_email).getRegex();ce.breaks=Lt({},ce.gfm,{br:so(ce.br).replace("{2,}","*").getRegex(),text:so(ce.gfm.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()});function KP(e){return e.replace(/---/g,"\u2014").replace(/--/g,"\u2013").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1\u2018").replace(/'/g,"\u2019").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1\u201C").replace(/"/g,"\u201D").replace(/\.{3}/g,"\u2026")}function qw(e){let o="",t,r,a=e.length;for(t=0;t<a;t++)r=e.charCodeAt(t),Math.random()>.5&&(r="x"+r.toString(16)),o+="&#"+r+";";return o}var er=class{constructor(o){this.tokens=[],this.tokens.links=Object.create(null),this.options=o||tl,this.options.tokenizer=this.options.tokenizer||new Rd,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={block:Oe.normal,inline:ce.normal};this.options.pedantic?(t.block=Oe.pedantic,t.inline=ce.pedantic):this.options.gfm&&(t.block=Oe.gfm,this.options.breaks?t.inline=ce.breaks:t.inline=ce.gfm),this.tokenizer.rules=t}static get rules(){return{block:Oe,inline:ce}}static lex(o,t){return new er(t).lex(o)}static lexInline(o,t){return new er(t).inlineTokens(o)}lex(o){o=o.replace(/\r\n|\r/g,` +`+u;else break;!d&&!u.trim()&&(d=!0),r+=m+` +`,o=o.substring(m.length+1)}}h.loose||(s?h.loose=!0:/\n *\n *$/.test(r)&&(s=!0)),this.options.gfm&&(a=/^\[[ xX]\] /.exec(p),a&&(l=a[0]!=="[ ] ",p=p.replace(/^\[[ xX]\] +/,""))),h.items.push({type:"list_item",raw:r,task:!!a,checked:l,loose:!1,text:p}),h.raw+=r}h.items[h.items.length-1].raw=r.trimRight(),h.items[h.items.length-1].text=p.trimRight(),h.raw=h.raw.trimRight();let z=h.items.length;for(i=0;i<z;i++){this.lexer.state.top=!1,h.items[i].tokens=this.lexer.blockTokens(h.items[i].text,[]);let C=h.items[i].tokens.filter(v=>v.type==="space"),g=C.every(v=>{let S=v.raw.split(""),F=0;for(let B of S)if(B===` +`&&(F+=1),F>1)return!0;return!1});!h.loose&&C.length&&g&&(h.loose=!0,h.items[i].loose=!0)}return h}}html(o){let t=this.rules.block.html.exec(o);if(t){let r={type:"html",raw:t[0],pre:!this.options.sanitizer&&(t[1]==="pre"||t[1]==="script"||t[1]==="style"),text:t[0]};return this.options.sanitize&&(r.type="paragraph",r.text=this.options.sanitizer?this.options.sanitizer(t[0]):zo(t[0]),r.tokens=[],this.lexer.inline(r.text,r.tokens)),r}}def(o){let t=this.rules.block.def.exec(o);if(t){t[3]&&(t[3]=t[3].substring(1,t[3].length-1));let r=t[1].toLowerCase().replace(/\s+/g," ");return{type:"def",tag:r,raw:t[0],href:t[2],title:t[3]}}}table(o){let t=this.rules.block.table.exec(o);if(t){let r={type:"table",header:oT(t[1]).map(a=>({text:a})),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:t[3]&&t[3].trim()?t[3].replace(/\n[ \t]*$/,"").split(` +`):[]};if(r.header.length===r.align.length){r.raw=t[0];let a=r.align.length,l,n,i,d;for(l=0;l<a;l++)/^ *-+: *$/.test(r.align[l])?r.align[l]="right":/^ *:-+: *$/.test(r.align[l])?r.align[l]="center":/^ *:-+ *$/.test(r.align[l])?r.align[l]="left":r.align[l]=null;for(a=r.rows.length,l=0;l<a;l++)r.rows[l]=oT(r.rows[l],r.header.length).map(s=>({text:s}));for(a=r.header.length,n=0;n<a;n++)r.header[n].tokens=[],this.lexer.inlineTokens(r.header[n].text,r.header[n].tokens);for(a=r.rows.length,n=0;n<a;n++)for(d=r.rows[n],i=0;i<d.length;i++)d[i].tokens=[],this.lexer.inlineTokens(d[i].text,d[i].tokens);return r}}}lheading(o){let t=this.rules.block.lheading.exec(o);if(t){let r={type:"heading",raw:t[0],depth:t[2].charAt(0)==="="?1:2,text:t[1],tokens:[]};return this.lexer.inline(r.text,r.tokens),r}}paragraph(o){let t=this.rules.block.paragraph.exec(o);if(t){let r={type:"paragraph",raw:t[0],text:t[1].charAt(t[1].length-1)===` +`?t[1].slice(0,-1):t[1],tokens:[]};return this.lexer.inline(r.text,r.tokens),r}}text(o){let t=this.rules.block.text.exec(o);if(t){let r={type:"text",raw:t[0],text:t[0],tokens:[]};return this.lexer.inline(r.text,r.tokens),r}}escape(o){let t=this.rules.inline.escape.exec(o);if(t)return{type:"escape",raw:t[0],text:zo(t[1])}}tag(o){let t=this.rules.inline.tag.exec(o);if(t)return!this.lexer.state.inLink&&/^<a /i.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&/^<\/a>/i.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):zo(t[0]):t[0]}}link(o){let t=this.rules.inline.link.exec(o);if(t){let r=t[2].trim();if(!this.options.pedantic&&/^</.test(r)){if(!/>$/.test(r))return;let n=Od(r.slice(0,-1),"\\");if((r.length-n.length)%2==0)return}else{let n=_0(t[2],"()");if(n>-1){let d=(t[0].indexOf("!")===0?5:4)+t[1].length+n;t[2]=t[2].substring(0,n),t[0]=t[0].substring(0,d).trim(),t[3]=""}}let a=t[2],l="";if(this.options.pedantic){let n=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(a);n&&(a=n[1],l=n[3])}else l=t[3]?t[3].slice(1,-1):"";return a=a.trim(),/^</.test(a)&&(this.options.pedantic&&!/>$/.test(r)?a=a.slice(1):a=a.slice(1,-1)),aT(t,{href:a&&a.replace(this.rules.inline._escapes,"$1"),title:l&&l.replace(this.rules.inline._escapes,"$1")},t[0],this.lexer)}}reflink(o,t){let r;if((r=this.rules.inline.reflink.exec(o))||(r=this.rules.inline.nolink.exec(o))){let a=(r[2]||r[1]).replace(/\s+/g," ");if(a=t[a.toLowerCase()],!a||!a.href){let l=r[0].charAt(0);return{type:"text",raw:l,text:l}}return aT(r,a,r[0],this.lexer)}}emStrong(o,t,r=""){let a=this.rules.inline.emStrong.lDelim.exec(o);if(!a||a[3]&&r.match(/[\p{L}\p{N}]/u))return;let l=a[1]||a[2]||"";if(!l||l&&(r===""||this.rules.inline.punctuation.exec(r))){let n=a[0].length-1,i,d,s=n,u=0,f=a[0][0]==="*"?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(f.lastIndex=0,t=t.slice(-1*o.length+n);(a=f.exec(t))!=null;){if(i=a[1]||a[2]||a[3]||a[4]||a[5]||a[6],!i)continue;if(d=i.length,a[3]||a[4]){s+=d;continue}else if((a[5]||a[6])&&n%3&&!((n+d)%3)){u+=d;continue}if(s-=d,s>0)continue;if(d=Math.min(d,d+s+u),Math.min(n,d)%2){let p=o.slice(1,n+a.index+d);return{type:"em",raw:o.slice(0,n+a.index+d+1),text:p,tokens:this.lexer.inlineTokens(p,[])}}let m=o.slice(2,n+a.index+d-1);return{type:"strong",raw:o.slice(0,n+a.index+d+1),text:m,tokens:this.lexer.inlineTokens(m,[])}}}}codespan(o){let t=this.rules.inline.code.exec(o);if(t){let r=t[2].replace(/\n/g," "),a=/[^ ]/.test(r),l=/^ /.test(r)&&/ $/.test(r);return a&&l&&(r=r.substring(1,r.length-1)),r=zo(r,!0),{type:"codespan",raw:t[0],text:r}}}br(o){let t=this.rules.inline.br.exec(o);if(t)return{type:"br",raw:t[0]}}del(o){let t=this.rules.inline.del.exec(o);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2],[])}}autolink(o,t){let r=this.rules.inline.autolink.exec(o);if(r){let a,l;return r[2]==="@"?(a=zo(this.options.mangle?t(r[1]):r[1]),l="mailto:"+a):(a=zo(r[1]),l=a),{type:"link",raw:r[0],text:a,href:l,tokens:[{type:"text",raw:a,text:a}]}}}url(o,t){let r;if(r=this.rules.inline.url.exec(o)){let a,l;if(r[2]==="@")a=zo(this.options.mangle?t(r[0]):r[0]),l="mailto:"+a;else{let n;do n=r[0],r[0]=this.rules.inline._backpedal.exec(r[0])[0];while(n!==r[0]);a=zo(r[0]),r[1]==="www."?l="http://"+a:l=a}return{type:"link",raw:r[0],text:a,href:l,tokens:[{type:"text",raw:a,text:a}]}}}inlineText(o,t){let r=this.rules.inline.text.exec(o);if(r){let a;return this.lexer.state.inRawBlock?a=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(r[0]):zo(r[0]):r[0]:a=zo(this.options.smartypants?t(r[0]):r[0]),{type:"text",raw:r[0],text:a}}}},De={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)( [^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?<?([^\s>]+)>?(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:Rd,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/};De._label=/(?!\s*\])(?:\\.|[^\[\]\\])+/;De._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/;De.def=mo(De.def).replace("label",De._label).replace("title",De._title).getRegex();De.bullet=/(?:[*+-]|\d{1,9}[.)])/;De.listItemStart=mo(/^( *)(bull) */).replace("bull",De.bullet).getRegex();De.list=mo(De.list).replace(/bull/g,De.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+De.def.source+")").getRegex();De._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul";De._comment=/<!--(?!-?>)[\s\S]*?(?:-->|$)/;De.html=mo(De.html,"i").replace("comment",De._comment).replace("tag",De._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex();De.paragraph=mo(De._paragraph).replace("hr",De.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",De._tag).getRegex();De.blockquote=mo(De.blockquote).replace("paragraph",De.paragraph).getRegex();De.normal=Vt({},De);De.gfm=Vt({},De.normal,{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"});De.gfm.table=mo(De.gfm.table).replace("hr",De.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",De._tag).getRegex();De.gfm.paragraph=mo(De._paragraph).replace("hr",De.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",De.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",De._tag).getRegex();De.pedantic=Vt({},De.normal,{html:mo(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",De._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Rd,paragraph:mo(De.normal._paragraph).replace("hr",De.hr).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",De.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var we={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:Rd,tag:"^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^[^_*]*?\_\_[^_*]*?\*[^_*]*?(?=\_\_)|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,rDelimUnd:/^[^_*]*?\*\*[^_*]*?\_[^_*]*?(?=\*\*)|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:Rd,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,punctuation:/^([\spunctuation])/};we._punctuation="!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~";we.punctuation=mo(we.punctuation).replace(/punctuation/g,we._punctuation).getRegex();we.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g;we.escapedEmSt=/\\\*|\\_/g;we._comment=mo(De._comment).replace("(?:-->|$)","-->").getRegex();we.emStrong.lDelim=mo(we.emStrong.lDelim).replace(/punct/g,we._punctuation).getRegex();we.emStrong.rDelimAst=mo(we.emStrong.rDelimAst,"g").replace(/punct/g,we._punctuation).getRegex();we.emStrong.rDelimUnd=mo(we.emStrong.rDelimUnd,"g").replace(/punct/g,we._punctuation).getRegex();we._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g;we._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;we._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;we.autolink=mo(we.autolink).replace("scheme",we._scheme).replace("email",we._email).getRegex();we._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/;we.tag=mo(we.tag).replace("comment",we._comment).replace("attribute",we._attribute).getRegex();we._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/;we._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/;we._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/;we.link=mo(we.link).replace("label",we._label).replace("href",we._href).replace("title",we._title).getRegex();we.reflink=mo(we.reflink).replace("label",we._label).replace("ref",De._label).getRegex();we.nolink=mo(we.nolink).replace("ref",De._label).getRegex();we.reflinkSearch=mo(we.reflinkSearch,"g").replace("reflink",we.reflink).replace("nolink",we.nolink).getRegex();we.normal=Vt({},we);we.pedantic=Vt({},we.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:mo(/^!?\[(label)\]\((.*?)\)/).replace("label",we._label).getRegex(),reflink:mo(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",we._label).getRegex()});we.gfm=Vt({},we.normal,{escape:mo(we.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/});we.gfm.url=mo(we.gfm.url,"i").replace("email",we.gfm._extended_email).getRegex();we.breaks=Vt({},we.gfm,{br:mo(we.br).replace("{2,}","*").getRegex(),text:mo(we.gfm.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()});function H0(e){return e.replace(/---/g,"\u2014").replace(/--/g,"\u2013").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1\u2018").replace(/'/g,"\u2019").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1\u201C").replace(/"/g,"\u201D").replace(/\.{3}/g,"\u2026")}function lT(e){let o="",t,r,a=e.length;for(t=0;t<a;t++)r=e.charCodeAt(t),Math.random()>.5&&(r="x"+r.toString(16)),o+="&#"+r+";";return o}var nr=class{constructor(o){this.tokens=[],this.tokens.links=Object.create(null),this.options=o||ll,this.options.tokenizer=this.options.tokenizer||new Fd,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={block:De.normal,inline:we.normal};this.options.pedantic?(t.block=De.pedantic,t.inline=we.pedantic):this.options.gfm&&(t.block=De.gfm,this.options.breaks?t.inline=we.breaks:t.inline=we.gfm),this.tokenizer.rules=t}static get rules(){return{block:De,inline:we}}static lex(o,t){return new nr(t).lex(o)}static lexInline(o,t){return new nr(t).inlineTokens(o)}lex(o){o=o.replace(/\r\n|\r/g,` `).replace(/\t/g," "),this.blockTokens(o,this.tokens);let t;for(;t=this.inlineQueue.shift();)this.inlineTokens(t.src,t.tokens);return this.tokens}blockTokens(o,t=[]){this.options.pedantic&&(o=o.replace(/^ +$/gm,""));let r,a,l,n;for(;o;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(i=>(r=i.call({lexer:this},o,t))?(o=o.substring(r.raw.length),t.push(r),!0):!1))){if(r=this.tokenizer.space(o)){o=o.substring(r.raw.length),r.raw.length===1&&t.length>0?t[t.length-1].raw+=` `:t.push(r);continue}if(r=this.tokenizer.code(o)){o=o.substring(r.raw.length),a=t[t.length-1],a&&(a.type==="paragraph"||a.type==="text")?(a.raw+=` `+r.raw,a.text+=` @@ -977,9 +977,9 @@ ${a} `+r.raw,a.text+=` `+r.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=a.text):t.push(r),n=l.length!==o.length,o=o.substring(r.raw.length);continue}if(r=this.tokenizer.text(o)){o=o.substring(r.raw.length),a=t[t.length-1],a&&a.type==="text"?(a.raw+=` `+r.raw,a.text+=` -`+r.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=a.text):t.push(r);continue}if(o){let i="Infinite loop on byte: "+o.charCodeAt(0);if(this.options.silent){console.error(i);break}else throw new Error(i)}}return this.state.top=!0,t}inline(o,t){this.inlineQueue.push({src:o,tokens:t})}inlineTokens(o,t=[]){let r,a,l,n=o,i,d,s;if(this.tokens.links){let u=Object.keys(this.tokens.links);if(u.length>0)for(;(i=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)u.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,i.index)+"["+Kw("a",i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(i=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)n=n.slice(0,i.index)+"["+Kw("a",i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;(i=this.tokenizer.rules.inline.escapedEmSt.exec(n))!=null;)n=n.slice(0,i.index)+"++"+n.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);for(;o;)if(d||(s=""),d=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(u=>(r=u.call({lexer:this},o,t))?(o=o.substring(r.raw.length),t.push(r),!0):!1))){if(r=this.tokenizer.escape(o)){o=o.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.tag(o)){o=o.substring(r.raw.length),a=t[t.length-1],a&&r.type==="text"&&a.type==="text"?(a.raw+=r.raw,a.text+=r.text):t.push(r);continue}if(r=this.tokenizer.link(o)){o=o.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.reflink(o,this.tokens.links)){o=o.substring(r.raw.length),a=t[t.length-1],a&&r.type==="text"&&a.type==="text"?(a.raw+=r.raw,a.text+=r.text):t.push(r);continue}if(r=this.tokenizer.emStrong(o,n,s)){o=o.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.codespan(o)){o=o.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.br(o)){o=o.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.del(o)){o=o.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.autolink(o,qw)){o=o.substring(r.raw.length),t.push(r);continue}if(!this.state.inLink&&(r=this.tokenizer.url(o,qw))){o=o.substring(r.raw.length),t.push(r);continue}if(l=o,this.options.extensions&&this.options.extensions.startInline){let u=1/0,f=o.slice(1),c;this.options.extensions.startInline.forEach(function(p){c=p.call({lexer:this},f),typeof c=="number"&&c>=0&&(u=Math.min(u,c))}),u<1/0&&u>=0&&(l=o.substring(0,u+1))}if(r=this.tokenizer.inlineText(l,KP)){o=o.substring(r.raw.length),r.raw.slice(-1)!=="_"&&(s=r.raw.slice(-1)),d=!0,a=t[t.length-1],a&&a.type==="text"?(a.raw+=r.raw,a.text+=r.text):t.push(r);continue}if(o){let u="Infinite loop on byte: "+o.charCodeAt(0);if(this.options.silent){console.error(u);break}else throw new Error(u)}}return t}},Fd=class{constructor(o){this.options=o||tl}code(o,t,r){let a=(t||"").match(/\S*/)[0];if(this.options.highlight){let l=this.options.highlight(o,a);l!=null&&l!==o&&(r=!0,o=l)}return o=o.replace(/\n$/,"")+` -`,a?'<pre><code class="'+this.options.langPrefix+Lo(a,!0)+'">'+(r?o:Lo(o,!0))+`</code></pre> -`:"<pre><code>"+(r?o:Lo(o,!0))+`</code></pre> +`+r.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=a.text):t.push(r);continue}if(o){let i="Infinite loop on byte: "+o.charCodeAt(0);if(this.options.silent){console.error(i);break}else throw new Error(i)}}return this.state.top=!0,t}inline(o,t){this.inlineQueue.push({src:o,tokens:t})}inlineTokens(o,t=[]){let r,a,l,n=o,i,d,s;if(this.tokens.links){let u=Object.keys(this.tokens.links);if(u.length>0)for(;(i=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)u.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,i.index)+"["+rT("a",i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(i=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)n=n.slice(0,i.index)+"["+rT("a",i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;(i=this.tokenizer.rules.inline.escapedEmSt.exec(n))!=null;)n=n.slice(0,i.index)+"++"+n.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);for(;o;)if(d||(s=""),d=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(u=>(r=u.call({lexer:this},o,t))?(o=o.substring(r.raw.length),t.push(r),!0):!1))){if(r=this.tokenizer.escape(o)){o=o.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.tag(o)){o=o.substring(r.raw.length),a=t[t.length-1],a&&r.type==="text"&&a.type==="text"?(a.raw+=r.raw,a.text+=r.text):t.push(r);continue}if(r=this.tokenizer.link(o)){o=o.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.reflink(o,this.tokens.links)){o=o.substring(r.raw.length),a=t[t.length-1],a&&r.type==="text"&&a.type==="text"?(a.raw+=r.raw,a.text+=r.text):t.push(r);continue}if(r=this.tokenizer.emStrong(o,n,s)){o=o.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.codespan(o)){o=o.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.br(o)){o=o.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.del(o)){o=o.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.autolink(o,lT)){o=o.substring(r.raw.length),t.push(r);continue}if(!this.state.inLink&&(r=this.tokenizer.url(o,lT))){o=o.substring(r.raw.length),t.push(r);continue}if(l=o,this.options.extensions&&this.options.extensions.startInline){let u=1/0,f=o.slice(1),m;this.options.extensions.startInline.forEach(function(p){m=p.call({lexer:this},f),typeof m=="number"&&m>=0&&(u=Math.min(u,m))}),u<1/0&&u>=0&&(l=o.substring(0,u+1))}if(r=this.tokenizer.inlineText(l,H0)){o=o.substring(r.raw.length),r.raw.slice(-1)!=="_"&&(s=r.raw.slice(-1)),d=!0,a=t[t.length-1],a&&a.type==="text"?(a.raw+=r.raw,a.text+=r.text):t.push(r);continue}if(o){let u="Infinite loop on byte: "+o.charCodeAt(0);if(this.options.silent){console.error(u);break}else throw new Error(u)}}return t}},Cd=class{constructor(o){this.options=o||ll}code(o,t,r){let a=(t||"").match(/\S*/)[0];if(this.options.highlight){let l=this.options.highlight(o,a);l!=null&&l!==o&&(r=!0,o=l)}return o=o.replace(/\n$/,"")+` +`,a?'<pre><code class="'+this.options.langPrefix+zo(a,!0)+'">'+(r?o:zo(o,!0))+`</code></pre> +`:"<pre><code>"+(r?o:zo(o,!0))+`</code></pre> `}blockquote(o){return`<blockquote> `+o+`</blockquote> `}html(o){return o}heading(o,t,r,a){return this.options.headerIds?"<h"+t+' id="'+this.options.headerPrefix+a.slug(r)+'">'+o+"</h"+t+`> @@ -997,14 +997,15 @@ ${a} `}tablerow(o){return`<tr> `+o+`</tr> `}tablecell(o,t){let r=t.header?"th":"td";return(t.align?"<"+r+' align="'+t.align+'">':"<"+r+">")+o+"</"+r+`> -`}strong(o){return"<strong>"+o+"</strong>"}em(o){return"<em>"+o+"</em>"}codespan(o){return"<code>"+o+"</code>"}br(){return this.options.xhtml?"<br/>":"<br>"}del(o){return"<del>"+o+"</del>"}link(o,t,r){if(o=jw(this.options.sanitize,this.options.baseUrl,o),o===null)return r;let a='<a href="'+Lo(o)+'"';return t&&(a+=' title="'+t+'"'),a+=">"+r+"</a>",a}image(o,t,r){if(o=jw(this.options.sanitize,this.options.baseUrl,o),o===null)return r;let a='<img src="'+o+'" alt="'+r+'"';return t&&(a+=' title="'+t+'"'),a+=this.options.xhtml?"/>":">",a}text(o){return o}},Tp=class{strong(o){return o}em(o){return o}codespan(o){return o}del(o){return o}html(o){return o}text(o){return o}link(o,t,r){return""+r}image(o,t,r){return""+r}br(){return""}},Rp=class{constructor(){this.seen={}}serialize(o){return o.toLowerCase().trim().replace(/<[!\/a-z].*?>/ig,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")}getNextSafeSlug(o,t){let r=o,a=0;if(this.seen.hasOwnProperty(r)){a=this.seen[o];do a++,r=o+"-"+a;while(this.seen.hasOwnProperty(r))}return t||(this.seen[o]=a,this.seen[r]=0),r}slug(o,t={}){let r=this.serialize(o);return this.getNextSafeSlug(r,t.dryrun)}},or=class{constructor(o){this.options=o||tl,this.options.renderer=this.options.renderer||new Fd,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new Tp,this.slugger=new Rp}static parse(o,t){return new or(t).parse(o)}static parseInline(o,t){return new or(t).parseInline(o)}parse(o,t=!0){let r="",a,l,n,i,d,s,u,f,c,p,x,T,C,S,D,j,O,g,v,w=o.length;for(a=0;a<w;a++){if(p=o[a],this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[p.type]&&(v=this.options.extensions.renderers[p.type].call({parser:this},p),v!==!1||!["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(p.type))){r+=v||"";continue}switch(p.type){case"space":continue;case"hr":{r+=this.renderer.hr();continue}case"heading":{r+=this.renderer.heading(this.parseInline(p.tokens),p.depth,zw(this.parseInline(p.tokens,this.textRenderer)),this.slugger);continue}case"code":{r+=this.renderer.code(p.text,p.lang,p.escaped);continue}case"table":{for(f="",u="",i=p.header.length,l=0;l<i;l++)u+=this.renderer.tablecell(this.parseInline(p.header[l].tokens),{header:!0,align:p.align[l]});for(f+=this.renderer.tablerow(u),c="",i=p.rows.length,l=0;l<i;l++){for(s=p.rows[l],u="",d=s.length,n=0;n<d;n++)u+=this.renderer.tablecell(this.parseInline(s[n].tokens),{header:!1,align:p.align[n]});c+=this.renderer.tablerow(u)}r+=this.renderer.table(f,c);continue}case"blockquote":{c=this.parse(p.tokens),r+=this.renderer.blockquote(c);continue}case"list":{for(x=p.ordered,T=p.start,C=p.loose,i=p.items.length,c="",l=0;l<i;l++)D=p.items[l],j=D.checked,O=D.task,S="",D.task&&(g=this.renderer.checkbox(j),C?D.tokens.length>0&&D.tokens[0].type==="paragraph"?(D.tokens[0].text=g+" "+D.tokens[0].text,D.tokens[0].tokens&&D.tokens[0].tokens.length>0&&D.tokens[0].tokens[0].type==="text"&&(D.tokens[0].tokens[0].text=g+" "+D.tokens[0].tokens[0].text)):D.tokens.unshift({type:"text",text:g}):S+=g),S+=this.parse(D.tokens,C),c+=this.renderer.listitem(S,O,j);r+=this.renderer.list(c,x,T);continue}case"html":{r+=this.renderer.html(p.text);continue}case"paragraph":{r+=this.renderer.paragraph(this.parseInline(p.tokens));continue}case"text":{for(c=p.tokens?this.parseInline(p.tokens):p.text;a+1<w&&o[a+1].type==="text";)p=o[++a],c+=` -`+(p.tokens?this.parseInline(p.tokens):p.text);r+=t?this.renderer.paragraph(c):c;continue}default:{let F='Token with "'+p.type+'" type was not found.';if(this.options.silent){console.error(F);return}else throw new Error(F)}}}return r}parseInline(o,t){t=t||this.renderer;let r="",a,l,n,i=o.length;for(a=0;a<i;a++){if(l=o[a],this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[l.type]&&(n=this.options.extensions.renderers[l.type].call({parser:this},l),n!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(l.type))){r+=n||"";continue}switch(l.type){case"escape":{r+=t.text(l.text);break}case"html":{r+=t.html(l.text);break}case"link":{r+=t.link(l.href,l.title,this.parseInline(l.tokens,t));break}case"image":{r+=t.image(l.href,l.title,l.text);break}case"strong":{r+=t.strong(this.parseInline(l.tokens,t));break}case"em":{r+=t.em(this.parseInline(l.tokens,t));break}case"codespan":{r+=t.codespan(l.text);break}case"br":{r+=t.br();break}case"del":{r+=t.del(this.parseInline(l.tokens,t));break}case"text":{r+=t.text(l.text);break}default:{let d='Token with "'+l.type+'" type was not found.';if(this.options.silent){console.error(d);return}else throw new Error(d)}}}return r}};function be(e,o,t){if(typeof e=="undefined"||e===null)throw new Error("marked(): input parameter is undefined or null");if(typeof e!="string")throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");if(typeof o=="function"&&(t=o,o=null),o=Lt({},be.defaults,o||{}),Uw(o),t){let r=o.highlight,a;try{a=er.lex(e,o)}catch(i){return t(i)}let l=function(i){let d;if(!i)try{o.walkTokens&&be.walkTokens(a,o.walkTokens),d=or.parse(a,o)}catch(s){i=s}return o.highlight=r,i?t(i):t(null,d)};if(!r||r.length<3||(delete o.highlight,!a.length))return l();let n=0;be.walkTokens(a,function(i){i.type==="code"&&(n++,setTimeout(()=>{r(i.text,i.lang,function(d,s){if(d)return l(d);s!=null&&s!==i.text&&(i.text=s,i.escaped=!0),n--,n===0&&l()})},0))}),n===0&&l();return}try{let r=er.lex(e,o);return o.walkTokens&&be.walkTokens(r,o.walkTokens),or.parse(r,o)}catch(r){if(r.message+=` -Please report this to https://github.com/markedjs/marked.`,o.silent)return"<p>An error occurred:</p><pre>"+Lo(r.message+"",!0)+"</pre>";throw r}}be.options=be.setOptions=function(e){return Lt(be.defaults,e),DP(be.defaults),be};be.getDefaults=Ww;be.defaults=tl;be.use=function(...e){let o=Lt({},...e),t=be.defaults.extensions||{renderers:{},childTokens:{}},r;e.forEach(a=>{if(a.extensions&&(r=!0,a.extensions.forEach(l=>{if(!l.name)throw new Error("extension name required");if(l.renderer){let n=t.renderers?t.renderers[l.name]:null;n?t.renderers[l.name]=function(...i){let d=l.renderer.apply(this,i);return d===!1&&(d=n.apply(this,i)),d}:t.renderers[l.name]=l.renderer}if(l.tokenizer){if(!l.level||l.level!=="block"&&l.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");t[l.level]?t[l.level].unshift(l.tokenizer):t[l.level]=[l.tokenizer],l.start&&(l.level==="block"?t.startBlock?t.startBlock.push(l.start):t.startBlock=[l.start]:l.level==="inline"&&(t.startInline?t.startInline.push(l.start):t.startInline=[l.start]))}l.childTokens&&(t.childTokens[l.name]=l.childTokens)})),a.renderer){let l=be.defaults.renderer||new Fd;for(let n in a.renderer){let i=l[n];l[n]=(...d)=>{let s=a.renderer[n].apply(l,d);return s===!1&&(s=i.apply(l,d)),s}}o.renderer=l}if(a.tokenizer){let l=be.defaults.tokenizer||new Rd;for(let n in a.tokenizer){let i=l[n];l[n]=(...d)=>{let s=a.tokenizer[n].apply(l,d);return s===!1&&(s=i.apply(l,d)),s}}o.tokenizer=l}if(a.walkTokens){let l=be.defaults.walkTokens;o.walkTokens=function(n){a.walkTokens.call(this,n),l&&l.call(this,n)}}r&&(o.extensions=t),be.setOptions(o)})};be.walkTokens=function(e,o){for(let t of e)switch(o.call(be,t),t.type){case"table":{for(let r of t.header)be.walkTokens(r.tokens,o);for(let r of t.rows)for(let a of r)be.walkTokens(a.tokens,o);break}case"list":{be.walkTokens(t.items,o);break}default:be.defaults.extensions&&be.defaults.extensions.childTokens&&be.defaults.extensions.childTokens[t.type]?be.defaults.extensions.childTokens[t.type].forEach(function(r){be.walkTokens(t[r],o)}):t.tokens&&be.walkTokens(t.tokens,o)}};be.parseInline=function(e,o){if(typeof e=="undefined"||e===null)throw new Error("marked.parseInline(): input parameter is undefined or null");if(typeof e!="string")throw new Error("marked.parseInline(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");o=Lt({},be.defaults,o||{}),Uw(o);try{let t=er.lexInline(e,o);return o.walkTokens&&be.walkTokens(t,o.walkTokens),or.parseInline(t,o)}catch(t){if(t.message+=` -Please report this to https://github.com/markedjs/marked.`,o.silent)return"<p>An error occurred:</p><pre>"+Lo(t.message+"",!0)+"</pre>";throw t}};be.Parser=or;be.parser=or.parse;be.Renderer=Fd;be.TextRenderer=Tp;be.Lexer=er;be.lexer=er.lex;be.Tokenizer=Rd;be.Slugger=Rp;be.parse=be;var Yte=be.options,Jte=be.setOptions,Xte=be.use,ere=be.walkTokens,ore=be.parseInline;var tre=or.parse,rre=er.lex;var rl=Fa(require("obsidian"));var ee=Ht({activeView(){this.plugin.activateView(),this.refreshTree()},headers:[],jumpBy:Fp,dark:!0,cssChange:!1,markdown:!0,ellipsis:!1,labelDirection:"left",leafChange:!1,searchSupport:!0,levelSwitch:!0,hideUnsearched:!0,regexSearch:!1,autoExpand:!0,dragModify:!1,refreshTree(){this.leafChange=!this.leafChange},patchColor:!1,primaryColorLight:"",primaryColorDark:"",rainbowLine:!1,rainbowColor1:"",rainbowColor2:"",rainbowColor3:"",rainbowColor4:"",rainbowColor5:"",currentNote:null});var Qw={name:"formula",level:"inline",start(e){var o;return(o=e.match(/\$/))==null?void 0:o.index},tokenizer(e,o){let r=/^\$([^\$]+)\$/.exec(e);if(r)return{type:"formula",raw:r[0],formula:r[1].trim()}},renderer(e){try{let o=(0,rl.renderMath)(e.formula,!1).outerHTML;return(0,rl.finishRenderMath)(),o}catch(o){return(0,rl.loadMathJax)().then(()=>{ee.refreshTree()}),!1}}},Zw={name:"internal",level:"inline",start(e){var o;return(o=e.match(/\[\[/))==null?void 0:o.index},tokenizer(e,o){let r=/^\[\[([^\[\]]+?)\]\]/.exec(e);if(r){let a=/.*\|(.*)/.exec(r[1]);return{type:"internal",raw:r[0],internal:a?a[1]:r[1]}}},renderer(e){return`<span class="internal-link">${e.internal}</span>`}},Yw={name:"ref",level:"inline",start(e){var o;return(o=e.match(/\^/))==null?void 0:o.index},tokenizer(e,o){let r=/^(\^[A-Za-z0-9\-]+)$/.exec(e);if(r)return{type:"ref",raw:r[0],ref:r[1].trim()}},renderer(e){return""}},Jw={name:"highlight",level:"inline",start(e){var o;return(o=e.match(/==/))==null?void 0:o.index},tokenizer(e,o){let r=/^==([^=]+)==/.exec(e);if(r)return{type:"highlight",raw:r[0],internal:r[1]}},renderer(e){return`<mark>${e.internal}</mark>`}},Xw={name:"tag",level:"inline",start(e){var o;return(o=e.match(/^#|(?<=\s)#/))==null?void 0:o.index},tokenizer(e,o){let r=/^#([^\[\]{}:;'"`~,.<>?|\\!@#$%^&*()=+\d\s][^\[\]{}:;'"`~,.<>?|\\!@#$%^&*()=+\s]*)/.exec(e);if(r)return{type:"tag",raw:r[0],internal:r[1]}},renderer(e){return`<a href="" class="tag" target="_blank" rel="noopener">#${e.internal}</a>`}},eT=e=>{e.type==="link"&&(e.href="javascript:void(0);")},oT={listitem(e,o,t){return`${e}`}},tT={name:"nolist",level:"block",start(e){var o;return(o=e.match(/^([+\-*]|\d+\.) /))==null?void 0:o.index},tokenizer(e,o){let r=/^(([+\-*])|(\d+)\.) (.*)/.exec(e),a;return r&&r[2]?a={type:"nolist",raw:r[0],ordered:!1,marker:r[2],start:"",body:r[4],tokens:[]}:r&&r[3]&&(a={type:"nolist",raw:r[0],ordered:!0,marker:"",start:r[3],body:r[4],tokens:[]}),a&&this.lexer.inline(a.body,a.tokens),a},renderer(e){let o=this.parser.parseInline(e.tokens,null);return e.ordered?`<p>${e.start}. ${o}</p>`:`<p>${e.marker} ${o}</p>`}};var Cd=le({__name:"Outline",setup(e,{expose:o}){o(),ec(m=>({"8de97876-rainbowColor1":ar(d),"8de97876-rainbowColor2":ar(s),"8de97876-rainbowColor3":ar(u),"8de97876-rainbowColor4":ar(f),"8de97876-rainbowColor5":ar(c),"8de97876-locatedColor":ar(i)}));let t=Ht({common:{primaryColor:"",primaryColorHover:""},Slider:{handleSize:"10px",fillColor:"",fillColorHover:"",dotBorderActive:""},Tree:{nodeTextColor:"var(--nav-item-color)"}}),r=Ht({common:{primaryColor:"",primaryColorHover:""},Slider:{handleSize:"10px",fillColor:"",fillColorHover:"",dotBorderActive:""},Tree:{nodeTextColor:"var(--nav-item-color)"}}),a=V(()=>ee.dark?cd:null),l=V(()=>ee.dark?{color:"var(--icon-color)"}:{color:"var(--icon-color)"});function n(){let m=document.body.createEl("button",{cls:"mod-cta",attr:{style:"width: 0px; height: 0px;"}}),h=getComputedStyle(m,null).getPropertyValue("background-color");return m.remove(),h}let i=Z(n());Mo(()=>{if(ee.patchColor){t.common.primaryColor=t.common.primaryColorHover=t.Slider.fillColor=t.Slider.fillColorHover=ee.primaryColorLight,t.Slider.dotBorderActive=`2px solid ${ee.primaryColorLight}`,r.common.primaryColor=r.common.primaryColorHover=r.Slider.fillColor=r.Slider.fillColorHover=ee.primaryColorDark,r.Slider.dotBorderActive=`2px solid ${ee.primaryColorDark}`;return}if(ee.cssChange===ee.cssChange){let m=n();t.common.primaryColor=t.common.primaryColorHover=t.Slider.fillColor=t.Slider.fillColorHover=r.common.primaryColor=r.common.primaryColorHover=r.Slider.fillColor=r.Slider.fillColorHover=m,t.Slider.dotBorderActive=r.Slider.dotBorderActive=`2px solid ${m}`,i.value=m}});let d=Z(""),s=Z(""),u=Z(""),f=Z(""),c=Z("");function p(m){return`${parseInt(m.slice(1,3),16)},${parseInt(m.slice(3,5),16)},${parseInt(m.slice(5,7),16)}`}Mo(()=>{if(ee.rainbowLine){d.value=`rgba(${p(ee.rainbowColor1)}, 0.6)`,s.value=`rgba(${p(ee.rainbowColor2)}, 0.6)`,u.value=`rgba(${p(ee.rainbowColor3)}, 0.6)`,f.value=`rgba(${p(ee.rainbowColor4)}, 0.6)`,c.value=`rgba(${p(ee.rainbowColor5)}, 0.6)`;return}ee.cssChange===ee.cssChange&&(d.value=s.value=u.value=f.value=c.value="var(--nav-indentation-guide-color)")}),fo(()=>{addEventListener("quiet-outline-reset",wo)}),ea(()=>{removeEventListener("quiet-outline-reset",wo)});let x=St(),T=x.appContext.config.globalProperties.plugin,C=x.appContext.config.globalProperties.container;fo(()=>{document.addEventListener("scroll",D,!0)}),ea(()=>{document.removeEventListener("scroll",D,!0)});let S=(m,h)=>"item-"+m.level+"-"+h,D=(0,Od.debounce)(j,100);function j(m){let h=m.target;if(!h.classList.contains("markdown-preview-view")&&!h.classList.contains("cm-scroller")&&!h.classList.contains("outliner-plugin-list-lines-scroller"))return;let k=T.current_note;if(!k||k.getViewType()!=="markdown")return;let E=k.currentMode.getScroll()+8,I=null,G=ee.headers.length;for(;--G>=0;)if(ee.headers[G].position.start.line<=E){I=ee.headers[G];break}if(!I)return;let $=G;if(T.settings.auto_expand){let H=$<ee.headers.length-1&&ee.headers[$].level<ee.headers[$+1].level?[S(I,$)]:[],b=I.level;for(;G-- >0&&(ee.headers[G].level<b&&(H.push(S(ee.headers[G],G)),b=ee.headers[G].level),b!==1););v.value=H}let L=C.querySelector(".n-tree-node.located");L&&L.removeClass("located");let U=C.querySelector(`#no-${$}`);U?(U.addClass("located"),U.scrollIntoView({block:"center",behavior:"smooth"})):setTimeout(()=>{let H=C.querySelector(`#no-${$}`);H&&(H.addClass("located"),H.scrollIntoView({block:"center",behavior:"smooth"}))},0)}let O=V(()=>m=>{let h=parseInt(m.option.key.split("-")[1]),k=parseInt(m.option.key.split("-")[2]);return{class:`level-${h}`,id:`no-${k}`,"aria-label":ee.ellipsis?m.option.label:"","aria-label-position":ee.labelDirection}}),g=Z(parseInt(T.settings.expand_level)),v=Z([]);F(g.value);function w(m,h){v.value=m}function F(m){v.value=ee.headers.map((h,k)=>"item-"+h.level+"-"+k).filter((h,k,E)=>{let I=G=>parseInt(G.split("-")[1]);return k===E.length-1||I(E[k])>=I(E[k+1])?!1:I(h)<=m})}Ze(g,(m,h)=>{F(m)});let B=Z(0);Ze(()=>ee.leafChange,()=>{let m=g.value,h=ae.value;ae.value="",g.value=parseInt(T.settings.expand_level),m===g.value&&F(g.value),No(()=>{ae.value=h})});let y={0:"",1:"",2:"",3:"",4:"",5:""};function W(m){let h=ee.headers.filter(k=>k.level===m).length;return m>0?`H${m}: ${h}`:"No expand"}let _=V(()=>ee.markdown?Je:null),ae=Z("");function he(m,h){let k=/.*/;try{k=RegExp(m,"i")}catch(E){}finally{return k.test(h.label)}}function Me(m,h){return h.label.toLowerCase().contains(m.toLowerCase())}let de=V(()=>ee.regexSearch?he:Me),ie=V(()=>ee.headers.filter(m=>{let h={label:m.heading};return de.value(ae.value,h)}).length);function ge(m,h){return $e(this,null,function*(){if(h[0]===void 0)return;let k=h[0].key.split("-"),E=parseInt(k[2]);ee.jumpBy(T,E)})}let Ve=V(()=>Ke(ee.headers));function Ke(m){return He(m)}function He(m){let h={children:[]},k=[{node:h,level:-1}];return m.forEach((E,I)=>{let G={label:E.heading,key:"item-"+E.level+"-"+I,line:E.position.start.line};for(;E.level<=k.last().level;)k.pop();let $=k.last().node;$.children===void 0&&($.children=[]),$.children.push(G),k.push({node:G,level:E.level})}),h.children}be.use({extensions:[Qw,Zw,Jw,Xw,Yw,tT]}),be.use({walkTokens:eT}),be.use({renderer:oT});function Je({option:m}){let h=be.parse(m.label).trim(),k=0,E=h.match(/<mjx-container.*?>.*?<\/mjx-container>/g);return h=h.replace(/<mjx-container.*?>.*?<\/mjx-container>/g,()=>"<math></math>"),h=(0,Od.sanitizeHTMLToDom)(`<div>${h}</div>`).children[0].innerHTML,h=h.replace(/<math.*?>.*?<\/math>/g,()=>E[k++]),R("div",{innerHTML:h})}function Qe(){return $e(this,null,function*(){let m=T.app.workspace.getActiveFile(),h=(yield T.app.vault.read(m)).split(` -`),k=T.current_note,E=()=>{k.setEphemeralState({line:h.length-5})};E(),setTimeout(E,100)})}function wo(){ae.value="",g.value=parseInt(T.settings.expand_level),F(g.value)}function Do(E){return $e(this,arguments,function*({node:m,dragNode:h,dropPosition:k}){let I=T.app.workspace.getActiveFile(),G=(yield T.app.vault.read(I)).split(` -`),$=Ie(v.value),L=we(h),U=L+to(h)-1,H=0,b=0;switch(k){case"inside":m=m.children.last();case"after":{L>we(m)+to(m)?(H=we(m)+to(m),b=L-1):(H=U+1,b=we(m)+to(m)-1);break}case"before":{L>we(m)?(H=we(m),b=L-1):(H=L+to(h),b=we(m)-1);break}}let N=qe(m)-qe(h);ho($,L,U,H,b,N),We(G,Be(L)[0],Be(U)[1]||G.length-1,Be(H)[0],Be(b)[1]||G.length-1,N),T.app.vault.modify(I,G.join(` -`))})}function Be(m){var h;return[ee.headers[m].position.start.line,((h=ee.headers[m+1])==null?void 0:h.position.start.line)-1]}function We(m,h,k,E,I,G){let $=0;if(h<E){let L=m.splice(E,I-E+1);m.splice(h,0,...L),$=h+(I-E)+1}else{let L=m.splice(h,k-h+1);m.splice(E,0,...L),$=E}for(let L=$;L<=$+(k-h);++L)m[L].match(/^#+ /)&&(G>0?m[L]=Array(G).fill("#").join("")+m[L]:m[L]=m[L].slice(-G))}function ho(m,h,k,E,I,G){let $=0,L=0;h<E?(L=h,$=h+(I-E)+1):($=E,L=E+(k-h)+1),m.forEach((U,H)=>{let b=we(U);h<=b&&b<=k&&(m[H]=`item-${qe(U)+G}-${$+(b-h)}`),E<=b&&b<=I&&(m[H]=`item-${qe(U)}-${L+(b-E)}`)})}function we(m){return typeof m!="string"&&(m=m.key),parseInt(m.split("-")[2])}function qe(m){return typeof m!="string"&&(m=m.key),parseInt(m.split("-")[1])}function to(m){return m.children?m.children.reduce((h,k)=>h+to(k),1):1}let vo={lightThemeConfig:t,darkThemeConfig:r,get theme(){return a},set theme(m){a=m},get iconColor(){return l},set iconColor(m){l=m},getDefaultColor:n,get locatedColor(){return i},set locatedColor(m){i=m},get rainbowColor1(){return d},set rainbowColor1(m){d=m},get rainbowColor2(){return s},set rainbowColor2(m){s=m},get rainbowColor3(){return u},set rainbowColor3(m){u=m},get rainbowColor4(){return f},set rainbowColor4(m){f=m},get rainbowColor5(){return c},set rainbowColor5(m){c=m},hexToRGB:p,get compomentSelf(){return x},set compomentSelf(m){x=m},get plugin(){return T},set plugin(m){T=m},get container(){return C},set container(m){C=m},get toKey(){return S},set toKey(m){S=m},get handleScroll(){return D},set handleScroll(m){D=m},_handleScroll:j,setAttrs:O,get level(){return g},set level(m){g=m},get expanded(){return v},set expanded(m){v=m},expand:w,switchLevel:F,get update_tree(){return B},set update_tree(m){B=m},marks:y,formatTooltip:W,get renderMethod(){return _},set renderMethod(m){_=m},get pattern(){return ae},set pattern(m){ae=m},regexFilter:he,simpleFilter:Me,get filter(){return de},set filter(m){de=m},get matchCount(){return ie},set matchCount(m){ie=m},jump:ge,get data2(){return Ve},set data2(m){Ve=m},makeTree:Ke,arrToTree:He,renderLabel:Je,toBottom:Qe,reset:wo,onDrop:Do,getLine:Be,moveSection:We,changeExpandKey:ho,getNo:we,getLevel:qe,countTree:to,get NTree(){return dp},get NButton(){return Cu},get NInput(){return hu},get NSlider(){return lp},get NConfigProvider(){return Hu},get Icon(){return Sp},get SettingsBackupRestoreRound(){return wp},get ArrowCircleDownRound(){return gp},get store(){return ee}};return Object.defineProperty(vo,"__isScriptSetup",{enumerable:!1,value:!0}),vo}});var GP={id:"container"},qP={key:0,class:"function-bar"},QP={key:2};function rT(e,o,t,r,a,l){return ht(),kr("div",GP,[mo(r.NConfigProvider,{theme:r.theme,"theme-overrides":r.theme===null?r.lightThemeConfig:r.darkThemeConfig},{default:Jr(()=>[r.store.searchSupport?(ht(),kr("div",qP,[mo(r.NButton,{size:"small",circle:"",onClick:r.toBottom,"aria-label":"To Bottom"},{icon:Jr(()=>[mo(r.Icon,null,{default:Jr(()=>[mo(r.ArrowCircleDownRound,{style:Sr(r.iconColor)},null,8,["style"])]),_:1})]),_:1}),mo(r.NButton,{size:"small",circle:"",onClick:r.reset,"aria-label":"Reset"},{icon:Jr(()=>[mo(r.Icon,null,{default:Jr(()=>[mo(r.SettingsBackupRestoreRound,{style:Sr(r.iconColor)},null,8,["style"])]),_:1})]),_:1}),mo(r.NInput,{value:r.pattern,"onUpdate:value":o[0]||(o[0]=n=>r.pattern=n),placeholder:"Input to search",size:"small",clearable:""},null,8,["value"])])):ei("v-if",!0),r.store.levelSwitch?(ht(),bl(r.NSlider,{key:1,value:r.level,"onUpdate:value":o[1]||(o[1]=n=>r.level=n),marks:r.marks,step:"mark",min:0,max:5,style:{margin:"4px 0"},"format-tooltip":r.formatTooltip},null,8,["value"])):ei("v-if",!0),r.pattern?(ht(),kr("code",QP,vd(r.matchCount)+" result(s): ",1)):ei("v-if",!0),(ht(),bl(r.NTree,{"block-line":"",pattern:r.pattern,data:r.data2,"on-update:selected-keys":r.jump,"render-label":r.renderMethod,"node-props":r.setAttrs,"expanded-keys":r.expanded,"on-update:expanded-keys":r.expand,key:r.update_tree,filter:r.filter,"show-irrelevant-nodes":!r.store.hideUnsearched,class:Kr({ellipsis:r.store.ellipsis}),draggable:r.store.dragModify,onDrop:r.onDrop},null,8,["pattern","data","render-label","node-props","expanded-keys","filter","show-irrelevant-nodes","class","draggable"]))]),_:1},8,["theme","theme-overrides"])])}Cd.render=rT;Cd.__file="src/Outline.vue";var aT=Cd;var wa="quiet-outline",Op=class extends lT.ItemView{constructor(o,t){super(o);this.plugin=t}getViewType(){return wa}getDisplayText(){return"Quiet Outline"}getIcon(){return"lines-of-text"}onOpen(){return $e(this,null,function*(){let o=this.containerEl.children[1];o.empty();let t=o.createEl("div",{cls:"quiet-outline"});this.vueApp=cc(aT),this.vueApp.config.globalProperties.plugin=this.plugin,this.vueApp.config.globalProperties.container=t,this.vueApp.mount(t)})}onClose(){return $e(this,null,function*(){})}onunload(){this.vueApp.unmount()}};var Xo=Fa(require("obsidian"));var nT={"Settings for Quiet Outline.":"Quiet Outline \u7684\u8BBE\u7F6E\u9875\u9762","Set Primary Color":"\u8BBE\u7F6E\u4E3B\u989C\u8272 \u660E/\u6697","Patch default color":"\u7528\u8BBE\u7F6E\u8986\u76D6\u9ED8\u8BA4\u4E3B\u989C\u8272","Set Rainbow Line Color":"\u8BBE\u7F6E\u5F69\u8679\u5927\u7EB2\u7EBF\u989C\u8272","Render Markdown":"\u6E32\u67D3markdown\u5143\u7D20","Render heading string as markdown format.":"\u4EE5markdown\u683C\u5F0F\u6E32\u67D3\u6807\u9898\u6587\u672C","Search Support":"\u5F00\u542F\u641C\u7D22","Add a searching area on the top":"\u5728\u9876\u90E8\u6DFB\u52A0\u4E00\u4E2A\u641C\u7D22\u6846","Level Switch":"\u5C42\u7EA7\u5207\u6362\u5668","Expand headings to certain level.":"\u5C55\u5F00\u6807\u9898\u5230\u7279\u5B9A\u5C42\u7EA7","Default Level":"\u9ED8\u8BA4\u5C42\u7EA7","Default expand level when opening a new note.":"\u6253\u5F00\u65B0\u7B14\u8BB0\u65F6\uFF0C\u6807\u9898\u5C55\u5F00\u5230\u7684\u9ED8\u8BA4\u5C42\u7EA7","No expand":"\u4E0D\u5C55\u5F00","Hide Unsearched":"\u8FC7\u6EE4\u672A\u641C\u7D22\u7684\u6807\u9898","Hide irrelevant headings when searching":"\u641C\u7D22\u65F6\uFF0C\u9690\u85CF\u672A\u547D\u4E2D\u7684\u6807\u9898","Regex Search":"\u6B63\u5219\u641C\u7D22","Search headings using regular expression":"\u652F\u6301\u4F7F\u7528\u6B63\u5219\u8868\u8FBE\u5F0F\u6765\u641C\u7D22","Auto Expand":"\u81EA\u52A8\u5C55\u5F00","Auto expand and collapse headings when scrolling":"\u5F53\u6EDA\u52A8\u9875\u9762\u65F6\uFF0C\u81EA\u52A8\u8DDF\u8E2A\u5F53\u524D\u6240\u5728\u6807\u9898\u5E76\u5C55\u5F00",Ellipsis:"\u7701\u7565\u957F\u6807\u9898","Tooltip direction":"\u5B8C\u6574\u6807\u9898\u663E\u793A\u65B9\u5411","Keep one line per heading":"\u4FDD\u6301\u6807\u9898\u53EA\u6709\u4E00\u884C,\u7701\u7565\u591A\u4F59\u90E8\u5206","Drag headings to modify note":"\u542F\u7528\u62D6\u62FD\u6807\u9898\u6765\u8C03\u6574\u6587\u6863\u7ED3\u679C","\u2757 This will modify note content, be careful.":"\u2757 \u62D6\u62FD\u64CD\u4F5C\u4F1A\u6539\u53D8\u6587\u6863\u5185\u5BB9\uFF0C\u5C0F\u5FC3\u4F7F\u7528"};var Cp={"Settings for Quiet Outline.":"Settings for Quiet Outline.","Set Primary Color":"Set Primary Color Light/Dark","Patch default color":"Patch default color","Set Rainbow Line Color":"Set Rainbow Line Color","Render Markdown":"Render Markdown","Render heading string as markdown format.":"Render heading string as markdown format","Search Support":"Search Support","Add a searching area on the top":"Add a search area on the top","Level Switch":"Level Switch","Expand headings to certain level.":"Expand headings to certain level","Default Level":"Default Level","Default expand level when opening a new note.":"Default expand level","No expand":"No expand","Hide Unsearched":"Hide Unsearched","Hide irrelevant headings when searching":"Hide irrelevant headings when searching","Regex Search":"Regex Search","Search headings using regular expression":"Search headings using regular expression","Auto Expand":"Auto Expand","Auto expand and collapse headings when scrolling":"Auto expand and collapse headings when scrolling",Ellipsis:"Ellipsis","Tooltip direction":"Tooltip direction","Keep one line per heading":"Keep one line per heading","Drag headings to modify note":"Drag headings to modify note","\u2757 This will modify note content, be careful.":"\u2757 This will modify note content, be careful"};var iT={"Settings for Quiet Outline.":"Quiet Outline \u7684\u8A2D\u5B9A\u9801\u9762","Render Markdown":"\u6E32\u67D3markdown\u5143\u7D20","Render heading string as markdown format.":"\u4EE5markdown\u683C\u5F0F\u6E32\u67D3\u6A19\u984C\u6587\u5B57","Search Support":"\u958B\u555F\u641C\u7D22","Add a searching area on the top":"\u5728\u9802\u90E8\u65B0\u589E\u4E00\u500B\u641C\u7D22\u6846","Level Switch":"\u5C64\u7D1A\u5207\u63DB","Expand headings to certain level.":"\u5C55\u958B\u6A19\u984C\u5230\u7279\u5B9A\u5C64\u7D1A","Default Level":"\u9810\u8A2D\u5C64\u7D1A","Default expand level when opening a new note.":"\u6253\u958B\u65B0\u7B46\u8A18\u6642\uFF0C\u6A19\u984C\u5C55\u958B\u5230\u7684\u9810\u8A2D\u5C64\u7D1A","No expand":"\u4E0D\u5C55\u958B","Hide Unsearched":"\u904E\u6FFE\u672A\u641C\u7D22\u7684\u6A19\u984C","Hide irrelevant headings when searching":"\u641C\u7D22\u6642\uFF0C\u96B1\u85CF\u672A\u547D\u4E2D\u7684\u6A19\u984C","Regex Search":"\u6B63\u5247\u641C\u7D22","Search headings using regular expression":"\u652F\u63F4\u4F7F\u7528\u6B63\u5247\u904B\u7B97\u5F0F\u4F86\u641C\u7D22","Auto Expand":"\u81EA\u52D5\u5C55\u958B","Auto expand and collapse headings when scrolling":"\u7576\u6372\u52D5\u9801\u9762\u6642\uFF0C\u81EA\u52D5\u8DDF\u96A8\u76EE\u524D\u6240\u5728\u6A19\u984C\u4E26\u5C55\u958B",Ellipsis:"\u7701\u7565\u9577\u6A19\u984C","Keep one line per heading":"\u4FDD\u6301\u6A19\u984C\u53EA\u6709\u4E00\u884C\uFF0C\u7701\u7565\u591A\u9918\u90E8\u5206"};var ZP={en:Cp,zh:nT,"zh-TW":iT},YP=window.localStorage.getItem("language"),dT=ZP[YP||"en"];function po(e){return dT&&dT[e]||Cp[e]}var sT={patch_color:!0,primary_color_light:"#18a058",primary_color_dark:"#63e2b7",rainbow_line:!1,rainbow_color_1:"#FD8B1F",rainbow_color_2:"#FFDF00",rainbow_color_3:"#07EB23",rainbow_color_4:"#2D8FF0",rainbow_color_5:"#BC01E2",search_support:!0,level_switch:!0,markdown:!0,expand_level:"0",hide_unsearched:!0,auto_expand:!0,regex_search:!1,ellipsis:!1,label_direction:"left",drag_modify:!1},bp=class extends Xo.PluginSettingTab{constructor(o,t){super(o,t);this.plugin=t}display(){let{containerEl:o}=this;o.empty(),o.createEl("h2",{text:po("Settings for Quiet Outline.")}),new Xo.Setting(o).setName(po("Set Primary Color")).addToggle(t=>t.setTooltip(po("Patch default color")).setValue(this.plugin.settings.patch_color).onChange(r=>$e(this,null,function*(){this.plugin.settings.patch_color=r,ee.patchColor=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.primary_color_light).onChange(r=>$e(this,null,function*(){this.plugin.settings.primary_color_light=r,ee.primaryColorLight=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.primary_color_dark).onChange(r=>$e(this,null,function*(){this.plugin.settings.primary_color_dark=r,ee.primaryColorDark=r,this.plugin.saveSettings()}))),new Xo.Setting(o).setName(po("Set Rainbow Line Color")).addToggle(t=>t.setTooltip(po("Patch default color")).setValue(this.plugin.settings.rainbow_line).onChange(r=>$e(this,null,function*(){this.plugin.settings.rainbow_line=r,ee.rainbowLine=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_1).onChange(r=>$e(this,null,function*(){this.plugin.settings.rainbow_color_1=r,ee.rainbowColor1=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_2).onChange(r=>$e(this,null,function*(){this.plugin.settings.rainbow_color_2=r,ee.rainbowColor2=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_3).onChange(r=>$e(this,null,function*(){this.plugin.settings.rainbow_color_3=r,ee.rainbowColor3=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_4).onChange(r=>$e(this,null,function*(){this.plugin.settings.rainbow_color_4=r,ee.rainbowColor4=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_5).onChange(r=>$e(this,null,function*(){this.plugin.settings.rainbow_color_5=r,ee.rainbowColor5=r,this.plugin.saveSettings()}))),new Xo.Setting(o).setName(po("Render Markdown")).setDesc(po("Render heading string as markdown format.")).addToggle(t=>t.setValue(this.plugin.settings.markdown).onChange(r=>$e(this,null,function*(){this.plugin.settings.markdown=r,ee.markdown=r,yield this.plugin.saveSettings()}))),new Xo.Setting(o).setName(po("Ellipsis")).setDesc(po("Keep one line per heading")).addToggle(t=>t.setValue(this.plugin.settings.ellipsis).onChange(r=>$e(this,null,function*(){this.plugin.settings.ellipsis=r,ee.ellipsis=r,yield this.plugin.saveSettings(),ee.refreshTree(),this.display()}))),this.plugin.settings.ellipsis&&new Xo.Setting(o).setName(po("Tooltip direction")).addDropdown(t=>t.addOption("left","Left").addOption("right","Right").addOption("top","Top").addOption("bottom","Bottom").setValue(this.plugin.settings.label_direction).onChange(r=>$e(this,null,function*(){this.plugin.settings.label_direction=r,ee.labelDirection=r,yield this.plugin.saveSettings(),ee.refreshTree()}))),new Xo.Setting(o).setName(po("Search Support")).setDesc(po("Add a searching area on the top")).addToggle(t=>t.setValue(this.plugin.settings.search_support).onChange(r=>$e(this,null,function*(){this.plugin.settings.search_support=r,ee.searchSupport=r,yield this.plugin.saveSettings()}))),new Xo.Setting(o).setName(po("Level Switch")).setDesc(po("Expand headings to certain level.")).addToggle(t=>t.setValue(this.plugin.settings.level_switch).onChange(r=>$e(this,null,function*(){this.plugin.settings.level_switch=r,ee.levelSwitch=r,yield this.plugin.saveSettings()}))),new Xo.Setting(o).setName(po("Default Level")).setDesc(po("Default expand level when opening a new note.")).addDropdown(t=>t.addOption("0",po("No expand")).addOption("1","H1").addOption("2","H2").addOption("3","H3").addOption("4","H4").addOption("5","H5").setValue(this.plugin.settings.expand_level).onChange(r=>$e(this,null,function*(){this.plugin.settings.expand_level=r,yield this.plugin.saveSettings()}))),new Xo.Setting(o).setName(po("Hide Unsearched")).setDesc(po("Hide irrelevant headings when searching")).addToggle(t=>t.setValue(this.plugin.settings.hide_unsearched).onChange(r=>$e(this,null,function*(){this.plugin.settings.hide_unsearched=r,ee.hideUnsearched=r,yield this.plugin.saveSettings()}))),new Xo.Setting(o).setName(po("Regex Search")).setDesc(po("Search headings using regular expression")).addToggle(t=>t.setValue(this.plugin.settings.regex_search).onChange(r=>$e(this,null,function*(){this.plugin.settings.regex_search=r,ee.regexSearch=r,yield this.plugin.saveSettings()}))),new Xo.Setting(o).setName(po("Auto Expand")).setDesc(po("Auto expand and collapse headings when scrolling")).addToggle(t=>t.setValue(this.plugin.settings.auto_expand).onChange(r=>$e(this,null,function*(){this.plugin.settings.auto_expand=r,ee.autoExpand=r,yield this.plugin.saveSettings()}))),new Xo.Setting(o).setName(po("Drag headings to modify note")).setDesc(po("\u2757 This will modify note content, be careful.")).addToggle(t=>t.setValue(this.plugin.settings.drag_modify).onChange(r=>$e(this,null,function*(){this.plugin.settings.drag_modify=r,ee.dragModify=r,yield this.plugin.saveSettings()})))}};var yp=class extends al.Plugin{onload(){return $e(this,null,function*(){yield this.loadSettings(),this.initStore(),this.registerView(wa,o=>new Op(o,this)),this.registerListener(),this.registerCommand(),this.addSettingTab(new bp(this.app,this))})}initStore(){ee.headers=[],ee.dark=document.body.hasClass("theme-dark"),ee.markdown=this.settings.markdown,ee.ellipsis=this.settings.ellipsis,ee.labelDirection=this.settings.label_direction,ee.leafChange=!1,ee.searchSupport=this.settings.search_support,ee.levelSwitch=this.settings.level_switch,ee.hideUnsearched=this.settings.hide_unsearched,ee.regexSearch=this.settings.regex_search,ee.autoExpand=this.settings.auto_expand,ee.dragModify=this.settings.drag_modify,ee.patchColor=this.settings.patch_color,ee.primaryColorLight=this.settings.primary_color_light,ee.primaryColorDark=this.settings.primary_color_dark,ee.rainbowLine=this.settings.rainbow_line,ee.rainbowColor1=this.settings.rainbow_color_1,ee.rainbowColor2=this.settings.rainbow_color_2,ee.rainbowColor3=this.settings.rainbow_color_3,ee.rainbowColor4=this.settings.rainbow_color_4,ee.rainbowColor5=this.settings.rainbow_color_5}registerListener(){this.registerEvent(this.app.workspace.on("css-change",()=>{ee.dark=document.body.hasClass("theme-dark"),ee.cssChange=!ee.cssChange}));let o=()=>{let r=this.app.workspace.getActiveFile();if(r){let a=this.app.metadataCache.getFileCache(r);if(a&&a.headings){ee.headers=a.headings;return}}ee.headers=[]},t=(0,al.debounce)(o,300,!0);this.registerEvent(this.app.metadataCache.on("changed",()=>{t()})),this.registerEvent(this.app.workspace.on("active-leaf-change",r=>$e(this,null,function*(){let a=this.app.workspace.getActiveFileView();if(!!a&&(a.getViewType()==="markdown"?ee.jumpBy=JP:a.getViewType()==="kanban"?ee.jumpBy=XP:ee.jumpBy=Fp,a)){if(!this.current_note){this.current_note=a,this.current_file=a.file.path,o(),ee.refreshTree();return}a.file.path===this.current_file||ee.refreshTree(),o(),this.current_note=a,this.current_file=a.file.path;return}})))}registerCommand(){this.addCommand({id:"quiet-outline",name:"Quiet Outline",callback:()=>{this.activateView()}}),this.addCommand({id:"quiet-outline-reset",name:"Reset expanding level",callback:()=>{dispatchEvent(new CustomEvent("quiet-outline-reset"))}}),this.addCommand({id:"quiet-outline-focus-input",name:"Focus on input",callback:()=>{let o=document.querySelector("input.n-input__input-el");o&&o.focus()}}),this.addCommand({id:"quiet-outline-copy-as-text",name:"Copy as plain text",callback:()=>$e(this,null,function*(){let o=ee.headers.map(t=>" ".repeat(t.level-1)+t.heading);yield navigator.clipboard.writeText(o.join(` -`)),new al.Notice("Headings copied")})})}onunload(){this.app.workspace.detachLeavesOfType(wa)}loadSettings(){return $e(this,null,function*(){this.settings=Object.assign({},sT,yield this.loadData())})}saveSettings(){return $e(this,null,function*(){yield this.saveData(this.settings)})}activateView(){return $e(this,null,function*(){this.app.workspace.getLeavesOfType(wa).length===0&&(yield this.app.workspace.getRightLeaf(!1).setViewState({type:wa,active:!0})),this.app.workspace.revealLeaf(this.app.workspace.getLeavesOfType(wa)[0])})}};function Fp(e,o){}function JP(e,o){let t=ee.headers[o].position.start.line,r=e.current_note;r&&(r.setEphemeralState({line:t}),setTimeout(()=>{r.setEphemeralState({line:t})},100))}function XP(e,o){var r;(r=document.querySelectorAll('.workspace-leaf[style=""] .kanban-plugin__lane-wrapper')[o])==null||r.scrollIntoView({block:"center",inline:"center",behavior:"smooth"})}var e0=yp; +`}strong(o){return"<strong>"+o+"</strong>"}em(o){return"<em>"+o+"</em>"}codespan(o){return"<code>"+o+"</code>"}br(){return this.options.xhtml?"<br/>":"<br>"}del(o){return"<del>"+o+"</del>"}link(o,t,r){if(o=eT(this.options.sanitize,this.options.baseUrl,o),o===null)return r;let a='<a href="'+zo(o)+'"';return t&&(a+=' title="'+t+'"'),a+=">"+r+"</a>",a}image(o,t,r){if(o=eT(this.options.sanitize,this.options.baseUrl,o),o===null)return r;let a='<img src="'+o+'" alt="'+r+'"';return t&&(a+=' title="'+t+'"'),a+=this.options.xhtml?"/>":">",a}text(o){return o}},Ap=class{strong(o){return o}em(o){return o}codespan(o){return o}del(o){return o}html(o){return o}text(o){return o}link(o,t,r){return""+r}image(o,t,r){return""+r}br(){return""}},Dp=class{constructor(){this.seen={}}serialize(o){return o.toLowerCase().trim().replace(/<[!\/a-z].*?>/ig,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")}getNextSafeSlug(o,t){let r=o,a=0;if(this.seen.hasOwnProperty(r)){a=this.seen[o];do a++,r=o+"-"+a;while(this.seen.hasOwnProperty(r))}return t||(this.seen[o]=a,this.seen[r]=0),r}slug(o,t={}){let r=this.serialize(o);return this.getNextSafeSlug(r,t.dryrun)}},ir=class{constructor(o){this.options=o||ll,this.options.renderer=this.options.renderer||new Cd,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new Ap,this.slugger=new Dp}static parse(o,t){return new ir(t).parse(o)}static parseInline(o,t){return new ir(t).parseInline(o)}parse(o,t=!0){let r="",a,l,n,i,d,s,u,f,m,p,c,R,b,h,k,z,C,g,v,S=o.length;for(a=0;a<S;a++){if(p=o[a],this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[p.type]&&(v=this.options.extensions.renderers[p.type].call({parser:this},p),v!==!1||!["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(p.type))){r+=v||"";continue}switch(p.type){case"space":continue;case"hr":{r+=this.renderer.hr();continue}case"heading":{r+=this.renderer.heading(this.parseInline(p.tokens),p.depth,Xw(this.parseInline(p.tokens,this.textRenderer)),this.slugger);continue}case"code":{r+=this.renderer.code(p.text,p.lang,p.escaped);continue}case"table":{for(f="",u="",i=p.header.length,l=0;l<i;l++)u+=this.renderer.tablecell(this.parseInline(p.header[l].tokens),{header:!0,align:p.align[l]});for(f+=this.renderer.tablerow(u),m="",i=p.rows.length,l=0;l<i;l++){for(s=p.rows[l],u="",d=s.length,n=0;n<d;n++)u+=this.renderer.tablecell(this.parseInline(s[n].tokens),{header:!1,align:p.align[n]});m+=this.renderer.tablerow(u)}r+=this.renderer.table(f,m);continue}case"blockquote":{m=this.parse(p.tokens),r+=this.renderer.blockquote(m);continue}case"list":{for(c=p.ordered,R=p.start,b=p.loose,i=p.items.length,m="",l=0;l<i;l++)k=p.items[l],z=k.checked,C=k.task,h="",k.task&&(g=this.renderer.checkbox(z),b?k.tokens.length>0&&k.tokens[0].type==="paragraph"?(k.tokens[0].text=g+" "+k.tokens[0].text,k.tokens[0].tokens&&k.tokens[0].tokens.length>0&&k.tokens[0].tokens[0].type==="text"&&(k.tokens[0].tokens[0].text=g+" "+k.tokens[0].tokens[0].text)):k.tokens.unshift({type:"text",text:g}):h+=g),h+=this.parse(k.tokens,b),m+=this.renderer.listitem(h,C,z);r+=this.renderer.list(m,c,R);continue}case"html":{r+=this.renderer.html(p.text);continue}case"paragraph":{r+=this.renderer.paragraph(this.parseInline(p.tokens));continue}case"text":{for(m=p.tokens?this.parseInline(p.tokens):p.text;a+1<S&&o[a+1].type==="text";)p=o[++a],m+=` +`+(p.tokens?this.parseInline(p.tokens):p.text);r+=t?this.renderer.paragraph(m):m;continue}default:{let F='Token with "'+p.type+'" type was not found.';if(this.options.silent){console.error(F);return}else throw new Error(F)}}}return r}parseInline(o,t){t=t||this.renderer;let r="",a,l,n,i=o.length;for(a=0;a<i;a++){if(l=o[a],this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[l.type]&&(n=this.options.extensions.renderers[l.type].call({parser:this},l),n!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(l.type))){r+=n||"";continue}switch(l.type){case"escape":{r+=t.text(l.text);break}case"html":{r+=t.html(l.text);break}case"link":{r+=t.link(l.href,l.title,this.parseInline(l.tokens,t));break}case"image":{r+=t.image(l.href,l.title,l.text);break}case"strong":{r+=t.strong(this.parseInline(l.tokens,t));break}case"em":{r+=t.em(this.parseInline(l.tokens,t));break}case"codespan":{r+=t.codespan(l.text);break}case"br":{r+=t.br();break}case"del":{r+=t.del(this.parseInline(l.tokens,t));break}case"text":{r+=t.text(l.text);break}default:{let d='Token with "'+l.type+'" type was not found.';if(this.options.silent){console.error(d);return}else throw new Error(d)}}}return r}};function Pe(e,o,t){if(typeof e=="undefined"||e===null)throw new Error("marked(): input parameter is undefined or null");if(typeof e!="string")throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");if(typeof o=="function"&&(t=o,o=null),o=Vt({},Pe.defaults,o||{}),tT(o),t){let r=o.highlight,a;try{a=nr.lex(e,o)}catch(i){return t(i)}let l=function(i){let d;if(!i)try{o.walkTokens&&Pe.walkTokens(a,o.walkTokens),d=ir.parse(a,o)}catch(s){i=s}return o.highlight=r,i?t(i):t(null,d)};if(!r||r.length<3||(delete o.highlight,!a.length))return l();let n=0;Pe.walkTokens(a,function(i){i.type==="code"&&(n++,setTimeout(()=>{r(i.text,i.lang,function(d,s){if(d)return l(d);s!=null&&s!==i.text&&(i.text=s,i.escaped=!0),n--,n===0&&l()})},0))}),n===0&&l();return}try{let r=nr.lex(e,o);return o.walkTokens&&Pe.walkTokens(r,o.walkTokens),ir.parse(r,o)}catch(r){if(r.message+=` +Please report this to https://github.com/markedjs/marked.`,o.silent)return"<p>An error occurred:</p><pre>"+zo(r.message+"",!0)+"</pre>";throw r}}Pe.options=Pe.setOptions=function(e){return Vt(Pe.defaults,e),F0(Pe.defaults),Pe};Pe.getDefaults=Yw;Pe.defaults=ll;Pe.use=function(...e){let o=Vt({},...e),t=Pe.defaults.extensions||{renderers:{},childTokens:{}},r;e.forEach(a=>{if(a.extensions&&(r=!0,a.extensions.forEach(l=>{if(!l.name)throw new Error("extension name required");if(l.renderer){let n=t.renderers?t.renderers[l.name]:null;n?t.renderers[l.name]=function(...i){let d=l.renderer.apply(this,i);return d===!1&&(d=n.apply(this,i)),d}:t.renderers[l.name]=l.renderer}if(l.tokenizer){if(!l.level||l.level!=="block"&&l.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");t[l.level]?t[l.level].unshift(l.tokenizer):t[l.level]=[l.tokenizer],l.start&&(l.level==="block"?t.startBlock?t.startBlock.push(l.start):t.startBlock=[l.start]:l.level==="inline"&&(t.startInline?t.startInline.push(l.start):t.startInline=[l.start]))}l.childTokens&&(t.childTokens[l.name]=l.childTokens)})),a.renderer){let l=Pe.defaults.renderer||new Cd;for(let n in a.renderer){let i=l[n];l[n]=(...d)=>{let s=a.renderer[n].apply(l,d);return s===!1&&(s=i.apply(l,d)),s}}o.renderer=l}if(a.tokenizer){let l=Pe.defaults.tokenizer||new Fd;for(let n in a.tokenizer){let i=l[n];l[n]=(...d)=>{let s=a.tokenizer[n].apply(l,d);return s===!1&&(s=i.apply(l,d)),s}}o.tokenizer=l}if(a.walkTokens){let l=Pe.defaults.walkTokens;o.walkTokens=function(n){a.walkTokens.call(this,n),l&&l.call(this,n)}}r&&(o.extensions=t),Pe.setOptions(o)})};Pe.walkTokens=function(e,o){for(let t of e)switch(o.call(Pe,t),t.type){case"table":{for(let r of t.header)Pe.walkTokens(r.tokens,o);for(let r of t.rows)for(let a of r)Pe.walkTokens(a.tokens,o);break}case"list":{Pe.walkTokens(t.items,o);break}default:Pe.defaults.extensions&&Pe.defaults.extensions.childTokens&&Pe.defaults.extensions.childTokens[t.type]?Pe.defaults.extensions.childTokens[t.type].forEach(function(r){Pe.walkTokens(t[r],o)}):t.tokens&&Pe.walkTokens(t.tokens,o)}};Pe.parseInline=function(e,o){if(typeof e=="undefined"||e===null)throw new Error("marked.parseInline(): input parameter is undefined or null");if(typeof e!="string")throw new Error("marked.parseInline(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");o=Vt({},Pe.defaults,o||{}),tT(o);try{let t=nr.lexInline(e,o);return o.walkTokens&&Pe.walkTokens(t,o.walkTokens),ir.parseInline(t,o)}catch(t){if(t.message+=` +Please report this to https://github.com/markedjs/marked.`,o.silent)return"<p>An error occurred:</p><pre>"+zo(t.message+"",!0)+"</pre>";throw t}};Pe.Parser=ir;Pe.parser=ir.parse;Pe.Renderer=Cd;Pe.TextRenderer=Ap;Pe.Lexer=nr;Pe.lexer=nr.lex;Pe.Tokenizer=Fd;Pe.Slugger=Dp;Pe.parse=Pe;var vae=Pe.options,kae=Pe.setOptions,Aae=Pe.use,Dae=Pe.walkTokens,Pae=Pe.parseInline;var Mae=ir.parse,Bae=nr.lex;var nl=Jr(require("obsidian"));var J=Ut({activeView(){this.plugin.activateView(),this.refreshTree()},headers:[],jumpBy:Pp,dark:!0,cssChange:!1,markdown:!0,ellipsis:!1,labelDirection:"left",leafChange:!1,searchSupport:!0,levelSwitch:!0,hideUnsearched:!0,regexSearch:!1,autoExpand:!0,dragModify:!1,refreshTree(){this.leafChange=!this.leafChange},patchColor:!1,primaryColorLight:"",primaryColorDark:"",rainbowLine:!1,rainbowColor1:"",rainbowColor2:"",rainbowColor3:"",rainbowColor4:"",rainbowColor5:"",currentNote:null});var nT={name:"formula",level:"inline",start(e){var o;return(o=e.match(/\$/))==null?void 0:o.index},tokenizer(e,o){let r=/^\$([^\$]+)\$/.exec(e);if(r)return{type:"formula",raw:r[0],formula:r[1].trim()}},renderer(e){try{let o=(0,nl.renderMath)(e.formula,!1).outerHTML;return(0,nl.finishRenderMath)(),o}catch(o){return(0,nl.loadMathJax)().then(()=>{J.refreshTree()}),!1}}},iT={name:"internal",level:"inline",start(e){var o;return(o=e.match(/\[\[/))==null?void 0:o.index},tokenizer(e,o){let r=/^\[\[([^\[\]]+?)\]\]/.exec(e);if(r){let a=/.*\|(.*)/.exec(r[1]);return{type:"internal",raw:r[0],internal:a?a[1]:r[1]}}},renderer(e){return`<span class="internal-link">${e.internal}</span>`}},dT={name:"ref",level:"inline",start(e){var o;return(o=e.match(/\^/))==null?void 0:o.index},tokenizer(e,o){let r=/^(\^[A-Za-z0-9\-]+)$/.exec(e);if(r)return{type:"ref",raw:r[0],ref:r[1].trim()}},renderer(e){return""}},sT={name:"highlight",level:"inline",start(e){var o;return(o=e.match(/==/))==null?void 0:o.index},tokenizer(e,o){let r=/^==([^=]+)==/.exec(e);if(r)return{type:"highlight",raw:r[0],internal:r[1]}},renderer(e){return`<mark>${e.internal}</mark>`}},uT={name:"tag",level:"inline",start(e){var o;return(o=e.match(/^#|(?<=\s)#/))==null?void 0:o.index},tokenizer(e,o){let r=/^#([^\[\]{}:;'"`~,.<>?|\\!@#$%^&*()=+\d\s][^\[\]{}:;'"`~,.<>?|\\!@#$%^&*()=+\s]*)/.exec(e);if(r)return{type:"tag",raw:r[0],internal:r[1]}},renderer(e){return`<a href="" class="tag" target="_blank" rel="noopener">#${e.internal}</a>`}},fT=e=>{e.type==="link"&&(e.href="javascript:void(0);")},pT={listitem(e,o,t){return`${e}`}},mT={name:"nolist",level:"block",start(e){var o;return(o=e.match(/^([+\-*]|\d+[\.)]) /))==null?void 0:o.index},tokenizer(e,o){let r=/^(([+\-*])|(\d+[\.)])) (.*)/.exec(e),a;return r&&r[2]?a={type:"nolist",raw:r[0],ordered:!1,marker:r[2],start:"",body:r[4],tokens:[]}:r&&r[3]&&(a={type:"nolist",raw:r[0],ordered:!0,marker:"",start:r[3],body:r[4],tokens:[]}),a&&this.lexer.inline(a.body,a.tokens),a},renderer(e){let o=this.parser.parseInline(e.tokens,null);return e.ordered?`<p>${e.start} ${o}</p>`:`<p>${e.marker} ${o}</p>`}};var bd=re({__name:"Outline",setup(e,{expose:o}){o(),fc(T=>({"8de97876-rainbowColor1":fr(d),"8de97876-rainbowColor2":fr(s),"8de97876-rainbowColor3":fr(u),"8de97876-rainbowColor4":fr(f),"8de97876-rainbowColor5":fr(m),"8de97876-locatedColor":fr(i)}));let t=Ut({common:{primaryColor:"",primaryColorHover:""},Slider:{handleSize:"10px",fillColor:"",fillColorHover:"",dotBorderActive:""},Tree:{nodeTextColor:"var(--nav-item-color)"}}),r=Ut({common:{primaryColor:"",primaryColorHover:""},Slider:{handleSize:"10px",fillColor:"",fillColorHover:"",dotBorderActive:""},Tree:{nodeTextColor:"var(--nav-item-color)"}}),a=W(()=>J.dark?xd:null),l=W(()=>J.dark?{color:"var(--icon-color)"}:{color:"var(--icon-color)"});function n(){let T=document.body.createEl("button",{cls:"mod-cta",attr:{style:"width: 0px; height: 0px;"}}),_=getComputedStyle(T,null).getPropertyValue("background-color");return T.remove(),_}let i=Q(n());Vo(()=>{if(J.patchColor){t.common.primaryColor=t.common.primaryColorHover=t.Slider.fillColor=t.Slider.fillColorHover=J.primaryColorLight,t.Slider.dotBorderActive=`2px solid ${J.primaryColorLight}`,r.common.primaryColor=r.common.primaryColorHover=r.Slider.fillColor=r.Slider.fillColorHover=J.primaryColorDark,r.Slider.dotBorderActive=`2px solid ${J.primaryColorDark}`;return}if(J.cssChange===J.cssChange){let T=n();t.common.primaryColor=t.common.primaryColorHover=t.Slider.fillColor=t.Slider.fillColorHover=r.common.primaryColor=r.common.primaryColorHover=r.Slider.fillColor=r.Slider.fillColorHover=T,t.Slider.dotBorderActive=r.Slider.dotBorderActive=`2px solid ${T}`,i.value=T}});let d=Q(""),s=Q(""),u=Q(""),f=Q(""),m=Q("");function p(T){return`${parseInt(T.slice(1,3),16)},${parseInt(T.slice(3,5),16)},${parseInt(T.slice(5,7),16)}`}Vo(()=>{if(J.rainbowLine){d.value=`rgba(${p(J.rainbowColor1)}, 0.6)`,s.value=`rgba(${p(J.rainbowColor2)}, 0.6)`,u.value=`rgba(${p(J.rainbowColor3)}, 0.6)`,f.value=`rgba(${p(J.rainbowColor4)}, 0.6)`,m.value=`rgba(${p(J.rainbowColor5)}, 0.6)`;return}J.cssChange===J.cssChange&&(d.value=s.value=u.value=f.value=m.value="var(--nav-indentation-guide-color)")});function c(){return w(On,{size:"12px"},{default:()=>w(wp)})}function R({option:T}){let _=null;switch(T.icon){case"ArticleOutlined":{_=w(Tp);break}case"AudiotrackOutlined":{_=w(Rp);break}case"OndemandVideoOutlined":{_=w(bp);break}case"CategoryOutlined":{_=w(Op);break}case"FilePresentOutlined":{_=w(Fp);break}case"ImageOutlined":{_=w(Cp);break}case"PublicOutlined":{_=w(yp);break}case"TextFieldsOutlined":{_=w(kp);break}default:return null}return w(On,{size:"1.2em"},{default:()=>_})}no(()=>{addEventListener("quiet-outline-reset",H)}),xr(()=>{removeEventListener("quiet-outline-reset",H)});let b=Ft(),h=b.appContext.config.globalProperties.plugin,k=b.appContext.config.globalProperties.container;no(()=>{document.addEventListener("scroll",g,!0)}),xr(()=>{document.removeEventListener("scroll",g,!0)});let z=(T,_)=>"item-"+T.level+"-"+_,C=T=>parseInt(T.split("-")[2]),g=(0,il.debounce)(v,100);function v(T){let _=T.target;if(!(!_.classList.contains("markdown-preview-view")&&!_.classList.contains("cm-scroller")&&!_.classList.contains("outliner-plugin-list-lines-scroller"))){if(h.jumping&&h.current_note.getMode()==="source"){S(!1);return}S(!0)}}function S(T){let _=B(T),te=y(_);te!==void 0&&(I(te),E(te))}no(()=>{document.addEventListener("quiet-outline-cursorchange",F)}),xr(()=>{document.removeEventListener("quiet-outline-cursorchange",F)});function F(){h.settings.locate_by_cursor&&S(!1)}function B(T){let _=h.current_note;if(!(!_||h.current_view_type!=="markdown"))return h.settings.locate_by_cursor&&!T?_.editor.getCursor("from").line:_.currentMode.getScroll()+8}function y(T){let _=null,te=J.headers.length;for(;--te>=0;)if(J.headers[te].position.start.line<=T){_=J.headers[te];break}if(!!_)return te}function I(T){if(h.settings.auto_expand){let _=J.headers[T],te=T<J.headers.length-1&&J.headers[T].level<J.headers[T+1].level?[z(_,T)]:[],de=_.level,Oe=T;for(;Oe-- >0&&(J.headers[Oe].level<de&&(te.push(z(J.headers[Oe],Oe)),de=J.headers[Oe].level),de!==1););bo(te)}}function E(T){let _=q(T),te=_.find(ze=>!So.value.contains(z(J.headers[ze],ze)));te=te===void 0?_[_.length-1]:te;let de=k.querySelector(".n-tree-node.located");de&&de.removeClass("located");let Oe=k.querySelector(`#no-${te}`);Oe?(Oe.addClass("located"),Oe.scrollIntoView({block:"center",behavior:"smooth"})):setTimeout(()=>{let ze=k.querySelector(`#no-${te}`);ze&&(ze.addClass("located"),ze.scrollIntoView({block:"center",behavior:"smooth"}))},100)}let se=W(()=>T=>{let _=parseInt(T.option.key.split("-")[1]),te=parseInt(T.option.key.split("-")[2]),de=T.option.label;return{class:`level-${_}`,id:`no-${te}`,"aria-label":J.ellipsis?T.option.label:"","aria-label-position":J.labelDirection,raw:de}}),Se,Ee,me="";function ue(T){let te=T.target.closest(".n-tree-node");!te||(Se=te,Ee=T,addEventListener("keydown",$e))}function Fe(T){removeEventListener("keydown",$e)}let Ge=T=>h.settings.show_popover_key==="ctrlKey"&&T.ctrlKey||h.settings.show_popover_key==="altKey"&&T.altKey||h.settings.show_popover_key==="metaKey"&&T.metaKey;function Ye(T){var _;Ge(T)&&h.app.workspace.trigger("hover-link",{event:Ee,source:"preview",targetEl:Se,hoverParent:{hoverPopover:null},linktext:"#"+Se.getAttribute("raw"),sourcePath:(_=h.current_note.file)==null?void 0:_.path})}let $e=ro(Ye,100);function ro(T,_){let te=!0,de;return function(...Oe){let ze=this,Je=Se==null?void 0:Se.getAttribute("raw");if(Je!==me||te){T.apply(ze,Oe),te=!1,me=Je;return}de&&clearTimeout(de),de=setTimeout(()=>{te=!0},_)}}no(()=>{k.addEventListener("mouseover",ue),k.addEventListener("mouseout",Fe)}),xr(()=>{k.removeEventListener("mouseover",ue),k.removeEventListener("mouseout",Fe),removeEventListener("keydown",$e)});let Ke=Q(parseInt(h.settings.expand_level)),So=Q([]);go(Ke.value);function bo(T){So.value=T,We()}function We(){!h.current_file||(h.heading_states[h.current_file]=Ue(So.value))}function qe(T,_){bo(T)}function go(T){Ke.value=T;let _=J.headers.map((te,de)=>({level:te.level,no:de})).filter((te,de,Oe)=>de===Oe.length-1||Oe[de].level>=Oe[de+1].level?!1:Oe[de].level<=T).map(te=>"item-"+te.level+"-"+te.no);bo(_)}let Le=Q(0);lo(()=>J.leafChange,()=>{let T=x.value;x.value="",Ke.value=parseInt(h.settings.expand_level);let _=h.heading_states[h.current_file];h.settings.remember_state&&_?bo(_):go(Ke.value),Uo(()=>{F(),x.value=T})});let co={0:"",1:"",2:"",3:"",4:"",5:""};function Ao(T){let _=J.headers.filter(te=>te.level===T).length;return T>0?`H${T}: ${_}`:"No expand"}let Lo=W(()=>J.markdown?D:null),x=Q("");function O(T,_){let te=/.*/;try{te=RegExp(T,"i")}catch(de){}finally{return te.test(_.label)}}function N(T,_){return _.label.toLowerCase().contains(T.toLowerCase())}let j=W(()=>J.regexSearch?O:N),U=W(()=>J.headers.filter(T=>{let _={label:T.heading};return j.value(x.value,_)}).length);function ae(T,_){return je(this,null,function*(){if(_[0]===void 0)return;let te=_[0].key.split("-"),de=parseInt(te[2]);J.jumpBy(h,de)})}let ee=W(()=>V(J.headers));function V(T){return Z(T)}function Z(T){let _={children:[]},te=[{node:_,level:-1}];return T.forEach((de,Oe)=>{let ze={label:de.heading,key:"item-"+de.level+"-"+Oe,line:de.position.start.line,icon:de.icon};for(;de.level<=te.last().level;)te.pop();let Je=te.last().node;Je.children===void 0&&(Je.children=[]),Je.children.push(ze),te.push({node:ze,level:de.level})}),_.children}function q(T){let _=[];function te(de){if(!de||de.length===0)return;let Oe=0;for(let ze=de.length-1;ze>=0;ze--){let Je=C(de[ze].key);if(Je<=T){_.push(Je),Oe=ze;break}}te(de[Oe].children)}return te(ee.value),_}Pe.use({extensions:[nT,iT,sT,uT,dT,mT]}),Pe.use({walkTokens:fT}),Pe.use({renderer:pT});function D({option:T}){let _=Pe.parse(T.label).trim(),te=0,de=_.match(/<mjx-container.*?>.*?<\/mjx-container>/g);return _=_.replace(/<mjx-container.*?>.*?<\/mjx-container>/g,()=>"<math></math>"),_=(0,il.sanitizeHTMLToDom)(`<div>${_}</div>`).children[0].innerHTML,_=_.replace(/<math.*?>.*?<\/math>/g,()=>de[te++]),w("div",{innerHTML:_})}function L(){return je(this,null,function*(){let T=h.current_note.data;T===void 0&&(T=h.current_note.text);let _=T.split(` +`),te=h.current_note,de=()=>{te instanceof il.FileView?te.setEphemeralState({line:_.length-5}):Mp(te,{line:_.length-5})};de(),setTimeout(de,100)})}function H(){x.value="",Ke.value=parseInt(h.settings.expand_level),go(Ke.value)}function ie(de){return je(this,arguments,function*({node:T,dragNode:_,dropPosition:te}){if(!h.current_note||h.current_view_type!=="markdown")return;let Oe=h.current_note.file,ze=(yield h.app.vault.read(Oe)).split(` +`),Je=Ue(So.value),eo=Ce(_),Zo=eo+ne(_)-1,Io=0,Bo=0;switch(te){case"inside":T=T.children.last();case"after":{eo>Ce(T)+ne(T)?(Io=Ce(T)+ne(T),Bo=eo-1):(Io=Zo+1,Bo=Ce(T)+ne(T)-1);break}case"before":{eo>Ce(T)?(Io=Ce(T),Bo=eo-1):(Io=eo+ne(_),Bo=Ce(T)-1);break}}let Or=K(T)-K(_);Ae(Je,eo,Zo,Io,Bo,Or),ve(ze,pe(eo)[0],pe(Zo)[1]||ze.length-1,pe(Io)[0],pe(Bo)[1]||ze.length-1,Or),h.app.vault.modify(Oe,ze.join(` +`))})}function pe(T){var _;return[J.headers[T].position.start.line,((_=J.headers[T+1])==null?void 0:_.position.start.line)-1]}function ve(T,_,te,de,Oe,ze){let Je=0;if(_<de){let eo=T.splice(de,Oe-de+1);T.splice(_,0,...eo),Je=_+(Oe-de)+1}else{let eo=T.splice(_,te-_+1);T.splice(de,0,...eo),Je=de}for(let eo=Je;eo<=Je+(te-_);++eo)T[eo].match(/^#+ /)&&(ze>0?T[eo]=Array(ze).fill("#").join("")+T[eo]:T[eo]=T[eo].slice(-ze))}function Ae(T,_,te,de,Oe,ze){let Je=0,eo=0;_<de?(eo=_,Je=_+(Oe-de)+1):(Je=de,eo=de+(te-_)+1),T.forEach((Zo,Io)=>{let Bo=Ce(Zo);_<=Bo&&Bo<=te&&(T[Io]=`item-${K(Zo)+ze}-${Je+(Bo-_)}`),de<=Bo&&Bo<=Oe&&(T[Io]=`item-${K(Zo)}-${eo+(Bo-de)}`)}),We()}function Ce(T){return typeof T!="string"&&(T=T.key),parseInt(T.split("-")[2])}function K(T){return typeof T!="string"&&(T=T.key),parseInt(T.split("-")[1])}function ne(T){return T.children?T.children.reduce((_,te)=>_+ne(te),1):1}let Re={lightThemeConfig:t,darkThemeConfig:r,get theme(){return a},set theme(T){a=T},get iconColor(){return l},set iconColor(T){l=T},getDefaultColor:n,get locatedColor(){return i},set locatedColor(T){i=T},get rainbowColor1(){return d},set rainbowColor1(T){d=T},get rainbowColor2(){return s},set rainbowColor2(T){s=T},get rainbowColor3(){return u},set rainbowColor3(T){u=T},get rainbowColor4(){return f},set rainbowColor4(T){f=T},get rainbowColor5(){return m},set rainbowColor5(T){m=T},hexToRGB:p,renderSwitcherIcon:c,renderPrefix:R,get compomentSelf(){return b},set compomentSelf(T){b=T},get plugin(){return h},set plugin(T){h=T},get container(){return k},set container(T){k=T},get toKey(){return z},set toKey(T){z=T},get fromKey(){return C},set fromKey(T){C=T},get handleScroll(){return g},set handleScroll(T){g=T},_handleScroll:v,onPosChange:S,handleCursorChange:F,currentLine:B,nearestHeading:y,autoExpand:I,resetLocated:E,setAttrs:se,get triggerNode(){return Se},set triggerNode(T){Se=T},get mouseEvent(){return Ee},set mouseEvent(T){Ee=T},get prevShowed(){return me},set prevShowed(T){me=T},onMouseEnter:ue,onMouseLeave:Fe,funcKeyPressed:Ge,_openPopover:Ye,openPopover:$e,customDebounce:ro,get level(){return Ke},set level(T){Ke=T},get expanded(){return So},set expanded(T){So=T},modifyExpandKeys:bo,syncExpandKeys:We,expand:qe,switchLevel:go,get update_tree(){return Le},set update_tree(T){Le=T},marks:co,formatTooltip:Ao,get renderMethod(){return Lo},set renderMethod(T){Lo=T},get pattern(){return x},set pattern(T){x=T},regexFilter:O,simpleFilter:N,get filter(){return j},set filter(T){j=T},get matchCount(){return U},set matchCount(T){U=T},jump:ae,get data2(){return ee},set data2(T){ee=T},makeTree:V,arrToTree:Z,getPath:q,renderLabel:D,toBottom:L,reset:H,onDrop:ie,getLine:pe,moveSection:ve,changeExpandKey:Ae,getNo:Ce,getLevel:K,countTree:ne,get NTree(){return sp},get NButton(){return bu},get NInput(){return Su},get NSlider(){return np},get NConfigProvider(){return Vu},get Icon(){return On},get SettingsBackupRestoreRound(){return vp},get ArrowCircleDownRound(){return gp},get store(){return J}};return Object.defineProperty(Re,"__isScriptSetup",{enumerable:!1,value:!0}),Re}});var V0={id:"container"},W0={key:0,class:"function-bar"},z0={key:2};function cT(e,o,t,r,a,l){return oo(),xo("div",V0,[To(r.NConfigProvider,{theme:r.theme,"theme-overrides":r.theme===null?r.lightThemeConfig:r.darkThemeConfig},{default:la(()=>[r.store.searchSupport?(oo(),xo("div",W0,[To(r.NButton,{size:"small",circle:"",onClick:r.toBottom,"aria-label":"To Bottom"},{icon:la(()=>[To(r.Icon,null,{default:la(()=>[To(r.ArrowCircleDownRound,{style:Cr(r.iconColor)},null,8,["style"])]),_:1})]),_:1}),To(r.NButton,{size:"small",circle:"",onClick:r.reset,"aria-label":"Reset"},{icon:la(()=>[To(r.Icon,null,{default:la(()=>[To(r.SettingsBackupRestoreRound,{style:Cr(r.iconColor)},null,8,["style"])]),_:1})]),_:1}),To(r.NInput,{value:r.pattern,"onUpdate:value":o[0]||(o[0]=n=>r.pattern=n),placeholder:"Input to search",size:"small",clearable:""},null,8,["value"])])):ti("v-if",!0),r.store.levelSwitch?(oo(),yl(r.NSlider,{key:1,value:r.level,"on-update:value":r.switchLevel,marks:r.marks,step:"mark",min:0,max:5,style:{margin:"4px 0"},"format-tooltip":r.formatTooltip},null,8,["value"])):ti("v-if",!0),r.pattern?(oo(),xo("code",z0,kd(r.matchCount)+" result(s): ",1)):ti("v-if",!0),(oo(),yl(r.NTree,{"block-line":"",pattern:r.pattern,data:r.data2,"on-update:selected-keys":r.jump,"render-label":r.renderMethod,"render-prefix":r.renderPrefix,"node-props":r.setAttrs,"expanded-keys":r.expanded,"render-switcher-icon":r.renderSwitcherIcon,"on-update:expanded-keys":r.expand,key:r.update_tree,filter:r.filter,"show-irrelevant-nodes":!r.store.hideUnsearched,class:Xr({ellipsis:r.store.ellipsis}),draggable:r.store.dragModify,onDrop:r.onDrop},null,8,["pattern","data","render-label","node-props","expanded-keys","filter","show-irrelevant-nodes","class","draggable"]))]),_:1},8,["theme","theme-overrides"])])}bd.render=cT;bd.__file="src/Outline.vue";var hT=bd;var ba="quiet-outline",Bp=class extends xT.ItemView{constructor(o,t){super(o);this.plugin=t}getViewType(){return ba}getDisplayText(){return"Quiet Outline"}getIcon(){return"lines-of-text"}onOpen(){return je(this,null,function*(){let o=this.containerEl.children[1];o.empty();let t=o.createEl("div",{cls:"quiet-outline"});this.vueApp=bc(hT),this.vueApp.config.globalProperties.plugin=this.plugin,this.vueApp.config.globalProperties.container=t,this.vueApp.mount(t)})}onClose(){return je(this,null,function*(){})}onunload(){this.vueApp.unmount()}};function ST(e,o){return je(this,null,function*(){return yield e.internalPlugins.plugins.canvas._children[0].parseText(o)})}var jo=Jr(require("obsidian"));var gT={"Settings for Quiet Outline.":"Quiet Outline \u7684\u8BBE\u7F6E\u9875\u9762","Set Primary Color":"\u8BBE\u7F6E\u4E3B\u989C\u8272 \u660E/\u6697","Patch default color":"\u7528\u8BBE\u7F6E\u8986\u76D6\u9ED8\u8BA4\u4E3B\u989C\u8272","Set Rainbow Line Color":"\u8BBE\u7F6E\u5F69\u8679\u5927\u7EB2\u7EBF\u989C\u8272","Render Markdown":"\u6E32\u67D3markdown\u5143\u7D20","Render heading string as markdown format.":"\u4EE5markdown\u683C\u5F0F\u6E32\u67D3\u6807\u9898\u6587\u672C","Search Support":"\u5F00\u542F\u641C\u7D22","Add a searching area on the top":"\u5728\u9876\u90E8\u6DFB\u52A0\u4E00\u4E2A\u641C\u7D22\u6846","Level Switch":"\u5C42\u7EA7\u5207\u6362\u5668","Expand headings to certain level.":"\u5C55\u5F00\u6807\u9898\u5230\u7279\u5B9A\u5C42\u7EA7","Default Level":"\u9ED8\u8BA4\u5C42\u7EA7","Default expand level when opening a new note.":"\u6253\u5F00\u65B0\u7B14\u8BB0\u65F6\uFF0C\u6807\u9898\u5C55\u5F00\u5230\u7684\u9ED8\u8BA4\u5C42\u7EA7","No expand":"\u4E0D\u5C55\u5F00","Hide Unsearched":"\u8FC7\u6EE4\u672A\u641C\u7D22\u7684\u6807\u9898","Hide irrelevant headings when searching":"\u641C\u7D22\u65F6\uFF0C\u9690\u85CF\u672A\u547D\u4E2D\u7684\u6807\u9898","Regex Search":"\u6B63\u5219\u641C\u7D22","Search headings using regular expression":"\u652F\u6301\u4F7F\u7528\u6B63\u5219\u8868\u8FBE\u5F0F\u6765\u641C\u7D22","Auto Expand":"\u81EA\u52A8\u5C55\u5F00","Auto expand and collapse headings when scrolling":"\u5F53\u6EDA\u52A8\u9875\u9762\u65F6\uFF0C\u81EA\u52A8\u8DDF\u8E2A\u5F53\u524D\u6240\u5728\u6807\u9898\u5E76\u5C55\u5F00","Locate By Cursor":"\u5B9A\u4F4D\u5230\u5149\u6807\u5904","Highlight and Auto expand postion will be determined by cursor position":"\u9AD8\u4EAE\u548C\u81EA\u52A8\u5C55\u5F00\u4F4D\u7F6E\u5C06\u7531\u5149\u6807\u4F4D\u7F6E\u51B3\u5B9A","Show Popover on hover":"\u9F20\u6807\u60AC\u505C\u5728\u6807\u9898\u65F6\u663E\u793A\u7B14\u8BB0\u5185\u5BB9","Press functional key and move cursor to heading":"\u6309\u4F4F\u529F\u80FD\u952E\uFF0C\u79FB\u52A8\u5149\u6807\u5230\u6807\u9898\u5904",Disable:"\u5173\u95ED",Ellipsis:"\u7701\u7565\u957F\u6807\u9898","Tooltip direction":"\u5B8C\u6574\u6807\u9898\u663E\u793A\u65B9\u5411","Keep one line per heading":"\u4FDD\u6301\u6807\u9898\u53EA\u6709\u4E00\u884C,\u7701\u7565\u591A\u4F59\u90E8\u5206","Remember States":"\u8BB0\u5FC6\u5C55\u5F00\u72B6\u6001","Remember expanded/collapsed state of headings of opened notes":"\u8BB0\u5FC6\u5DF2\u6253\u5F00\u7B14\u8BB0\u7684\u6807\u9898\u5C55\u5F00\u72B6\u6001","Drag headings to modify note":"\u542F\u7528\u62D6\u62FD\u6807\u9898\u6765\u8C03\u6574\u6587\u6863\u7ED3\u679C","\u2757 This will modify note content, be careful.":"\u2757 \u62D6\u62FD\u64CD\u4F5C\u4F1A\u6539\u53D8\u6587\u6863\u5185\u5BB9\uFF0C\u5C0F\u5FC3\u4F7F\u7528"};var Ep={"Settings for Quiet Outline.":"Settings for Quiet Outline.","Set Primary Color":"Set Primary Color Light/Dark","Patch default color":"Patch default color","Set Rainbow Line Color":"Set Rainbow Line Color","Render Markdown":"Render Markdown","Render heading string as markdown format.":"Render heading string as markdown format","Search Support":"Search Support","Add a searching area on the top":"Add a search area on the top","Level Switch":"Level Switch","Expand headings to certain level.":"Expand headings to certain level","Default Level":"Default Level","Default expand level when opening a new note.":"Default expand level","No expand":"No expand","Hide Unsearched":"Hide Unsearched","Hide irrelevant headings when searching":"Hide irrelevant headings when searching","Regex Search":"Regex Search","Search headings using regular expression":"Search headings using regular expression","Auto Expand":"Auto Expand","Auto expand and collapse headings when scrolling":"Auto expand and collapse headings when scrolling","Locate By Cursor":"Locate By Cursor","Show Popover on hover":"Show Popover on hover","Press functional key and move cursor to heading":"Press functional key and move cursor to heading",Disable:"Disable","Highlight and Auto expand postion will be determined by cursor position":"Highlight and Auto expand postion will be determined by cursor position",Ellipsis:"Ellipsis","Tooltip direction":"Tooltip direction","Keep one line per heading":"Keep one line per heading","Remember States":"Remember States","Remember expanded/collapsed state of headings of opened notes":"Remember expanded/collapsed state of headings of opened notes","Drag headings to modify note":"Drag headings to modify note","\u2757 This will modify note content, be careful.":"\u2757 This will modify note content, be careful"};var wT={"Settings for Quiet Outline.":"Quiet Outline \u7684\u8A2D\u5B9A\u9801\u9762","Render Markdown":"\u6E32\u67D3markdown\u5143\u7D20","Render heading string as markdown format.":"\u4EE5markdown\u683C\u5F0F\u6E32\u67D3\u6A19\u984C\u6587\u5B57","Search Support":"\u958B\u555F\u641C\u7D22","Add a searching area on the top":"\u5728\u9802\u90E8\u65B0\u589E\u4E00\u500B\u641C\u7D22\u6846","Level Switch":"\u5C64\u7D1A\u5207\u63DB","Expand headings to certain level.":"\u5C55\u958B\u6A19\u984C\u5230\u7279\u5B9A\u5C64\u7D1A","Default Level":"\u9810\u8A2D\u5C64\u7D1A","Default expand level when opening a new note.":"\u6253\u958B\u65B0\u7B46\u8A18\u6642\uFF0C\u6A19\u984C\u5C55\u958B\u5230\u7684\u9810\u8A2D\u5C64\u7D1A","No expand":"\u4E0D\u5C55\u958B","Hide Unsearched":"\u904E\u6FFE\u672A\u641C\u7D22\u7684\u6A19\u984C","Hide irrelevant headings when searching":"\u641C\u7D22\u6642\uFF0C\u96B1\u85CF\u672A\u547D\u4E2D\u7684\u6A19\u984C","Regex Search":"\u6B63\u5247\u641C\u7D22","Search headings using regular expression":"\u652F\u63F4\u4F7F\u7528\u6B63\u5247\u904B\u7B97\u5F0F\u4F86\u641C\u7D22","Auto Expand":"\u81EA\u52D5\u5C55\u958B","Auto expand and collapse headings when scrolling":"\u7576\u6372\u52D5\u9801\u9762\u6642\uFF0C\u81EA\u52D5\u8DDF\u96A8\u76EE\u524D\u6240\u5728\u6A19\u984C\u4E26\u5C55\u958B",Ellipsis:"\u7701\u7565\u9577\u6A19\u984C","Keep one line per heading":"\u4FDD\u6301\u6A19\u984C\u53EA\u6709\u4E00\u884C\uFF0C\u7701\u7565\u591A\u9918\u90E8\u5206"};var j0={en:Ep,zh:gT,"zh-TW":wT},$0=window.localStorage.getItem("language"),TT=j0[$0||"en"];function Xe(e){return TT&&TT[e]||Ep[e]}var RT={patch_color:!0,primary_color_light:"#18a058",primary_color_dark:"#63e2b7",rainbow_line:!1,rainbow_color_1:"#FD8B1F",rainbow_color_2:"#FFDF00",rainbow_color_3:"#07EB23",rainbow_color_4:"#2D8FF0",rainbow_color_5:"#BC01E2",search_support:!0,level_switch:!0,markdown:!0,expand_level:"0",hide_unsearched:!0,auto_expand:!0,regex_search:!1,ellipsis:!1,label_direction:"left",drag_modify:!1,locate_by_cursor:!1,show_popover_key:"ctrlKey",remember_state:!0},Lp=class extends jo.PluginSettingTab{constructor(o,t){super(o,t);this.plugin=t}display(){let{containerEl:o}=this;o.empty(),o.createEl("h2",{text:Xe("Settings for Quiet Outline.")}),new jo.Setting(o).setName(Xe("Set Primary Color")).addToggle(t=>t.setTooltip(Xe("Patch default color")).setValue(this.plugin.settings.patch_color).onChange(r=>je(this,null,function*(){this.plugin.settings.patch_color=r,J.patchColor=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.primary_color_light).onChange(r=>je(this,null,function*(){this.plugin.settings.primary_color_light=r,J.primaryColorLight=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.primary_color_dark).onChange(r=>je(this,null,function*(){this.plugin.settings.primary_color_dark=r,J.primaryColorDark=r,this.plugin.saveSettings()}))),new jo.Setting(o).setName(Xe("Set Rainbow Line Color")).addToggle(t=>t.setTooltip(Xe("Patch default color")).setValue(this.plugin.settings.rainbow_line).onChange(r=>je(this,null,function*(){this.plugin.settings.rainbow_line=r,J.rainbowLine=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_1).onChange(r=>je(this,null,function*(){this.plugin.settings.rainbow_color_1=r,J.rainbowColor1=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_2).onChange(r=>je(this,null,function*(){this.plugin.settings.rainbow_color_2=r,J.rainbowColor2=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_3).onChange(r=>je(this,null,function*(){this.plugin.settings.rainbow_color_3=r,J.rainbowColor3=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_4).onChange(r=>je(this,null,function*(){this.plugin.settings.rainbow_color_4=r,J.rainbowColor4=r,this.plugin.saveSettings()}))).addColorPicker(t=>t.setValue(this.plugin.settings.rainbow_color_5).onChange(r=>je(this,null,function*(){this.plugin.settings.rainbow_color_5=r,J.rainbowColor5=r,this.plugin.saveSettings()}))),new jo.Setting(o).setName(Xe("Render Markdown")).setDesc(Xe("Render heading string as markdown format.")).addToggle(t=>t.setValue(this.plugin.settings.markdown).onChange(r=>je(this,null,function*(){this.plugin.settings.markdown=r,J.markdown=r,yield this.plugin.saveSettings()}))),new jo.Setting(o).setName(Xe("Ellipsis")).setDesc(Xe("Keep one line per heading")).addToggle(t=>t.setValue(this.plugin.settings.ellipsis).onChange(r=>je(this,null,function*(){this.plugin.settings.ellipsis=r,J.ellipsis=r,yield this.plugin.saveSettings(),J.refreshTree(),this.display()}))),this.plugin.settings.ellipsis&&new jo.Setting(o).setName(Xe("Tooltip direction")).addDropdown(t=>t.addOption("left","Left").addOption("right","Right").addOption("top","Top").addOption("bottom","Bottom").setValue(this.plugin.settings.label_direction).onChange(r=>je(this,null,function*(){this.plugin.settings.label_direction=r,J.labelDirection=r,yield this.plugin.saveSettings(),J.refreshTree()}))),new jo.Setting(o).setName(Xe("Search Support")).setDesc(Xe("Add a searching area on the top")).addToggle(t=>t.setValue(this.plugin.settings.search_support).onChange(r=>je(this,null,function*(){this.plugin.settings.search_support=r,J.searchSupport=r,yield this.plugin.saveSettings()}))),new jo.Setting(o).setName(Xe("Level Switch")).setDesc(Xe("Expand headings to certain level.")).addToggle(t=>t.setValue(this.plugin.settings.level_switch).onChange(r=>je(this,null,function*(){this.plugin.settings.level_switch=r,J.levelSwitch=r,yield this.plugin.saveSettings()}))),new jo.Setting(o).setName(Xe("Default Level")).setDesc(Xe("Default expand level when opening a new note.")).addDropdown(t=>t.addOption("0",Xe("No expand")).addOption("1","H1").addOption("2","H2").addOption("3","H3").addOption("4","H4").addOption("5","H5").setValue(this.plugin.settings.expand_level).onChange(r=>je(this,null,function*(){this.plugin.settings.expand_level=r,yield this.plugin.saveSettings()}))),new jo.Setting(o).setName(Xe("Hide Unsearched")).setDesc(Xe("Hide irrelevant headings when searching")).addToggle(t=>t.setValue(this.plugin.settings.hide_unsearched).onChange(r=>je(this,null,function*(){this.plugin.settings.hide_unsearched=r,J.hideUnsearched=r,yield this.plugin.saveSettings()}))),new jo.Setting(o).setName(Xe("Regex Search")).setDesc(Xe("Search headings using regular expression")).addToggle(t=>t.setValue(this.plugin.settings.regex_search).onChange(r=>je(this,null,function*(){this.plugin.settings.regex_search=r,J.regexSearch=r,yield this.plugin.saveSettings()}))),new jo.Setting(o).setName(Xe("Auto Expand")).setDesc(Xe("Auto expand and collapse headings when scrolling")).addToggle(t=>t.setValue(this.plugin.settings.auto_expand).onChange(r=>je(this,null,function*(){this.plugin.settings.auto_expand=r,J.autoExpand=r,yield this.plugin.saveSettings()}))),new jo.Setting(o).setName(Xe("Locate By Cursor")).setDesc(Xe("Highlight and Auto expand postion will be determined by cursor position")).addToggle(t=>t.setValue(this.plugin.settings.locate_by_cursor).onChange(r=>je(this,null,function*(){this.plugin.settings.locate_by_cursor=r,yield this.plugin.saveSettings()}))),new jo.Setting(o).setName(Xe("Show Popover on hover")).setDesc(Xe("Press functional key and move cursor to heading")).addDropdown(t=>t.addOption("ctrlKey","Ctrl").addOption("altKey","Alt").addOption("metaKey","Meta").addOption("disable",Xe("Disable")).setValue(this.plugin.settings.show_popover_key).onChange(r=>je(this,null,function*(){this.plugin.settings.show_popover_key=r,yield this.plugin.saveSettings()}))),new jo.Setting(o).setName(Xe("Remember States")).setDesc(Xe("Remember expanded/collapsed state of headings of opened notes")).addToggle(t=>t.setValue(this.plugin.settings.remember_state).onChange(r=>je(this,null,function*(){this.plugin.settings.remember_state=r,yield this.plugin.saveSettings()}))),new jo.Setting(o).setName(Xe("Drag headings to modify note")).setDesc(Xe("\u2757 This will modify note content, be careful.")).addToggle(t=>t.setValue(this.plugin.settings.drag_modify).onChange(r=>je(this,null,function*(){this.plugin.settings.drag_modify=r,J.dragModify=r,yield this.plugin.saveSettings()})))}};var OT=Jr(require("@codemirror/view")),FT=class{constructor(o){}update(o){o.selectionSet&&document.dispatchEvent(new CustomEvent("quiet-outline-cursorchange"))}destroy(){}},CT=OT.ViewPlugin.fromClass(FT);function bT(e,o){let t=Object.keys(o).map(r=>U0(e,r,o[r]));return t.length===1?t[0]:function(){t.forEach(r=>r())}}function U0(e,o,t){let r=e[o],a=e.hasOwnProperty(o),l=a?r:function(){return Object.getPrototypeOf(e)[o].apply(this,arguments)},n=t(l);return r&&Object.setPrototypeOf(n,r),Object.setPrototypeOf(i,n),e[o]=i,d;function i(...s){return n===l&&e[o]===i&&d(),n.apply(this,s)}function d(){e[o]===i&&(a?e[o]=l:delete e[o]),n!==l&&(n=l,Object.setPrototypeOf(i,r||Function))}}var Np=class extends dr.Plugin{constructor(){super(...arguments);this.heading_states={};this.klasses={};this.refresh_outline=()=>je(this,null,function*(){let o=this.current_note,t=this.current_view_type;if(t==="markdown"||t==="kanban"||t==="embed-markdown-file"){let r=o.file,a=this.app.metadataCache.getFileCache(r);if(a&&a.headings){J.headers=a.headings;return}}else if(t==="canvas"){let r=o.canvas.data.nodes;if(r){J.headers=Q0(r);return}}else if(t==="embed-markdown-text"){let{headings:r}=yield ST(this.app,o.text);J.headers=r;return}J.headers=[]})}onload(){return je(this,null,function*(){yield this.loadSettings(),this.initStore(),this.registerView(ba,o=>new Bp(o,this)),this.registerListener(),this.registerCommand(),this.addSettingTab(new Lp(this.app,this)),this.registerExt(),this.activateView()})}initStore(){J.headers=[],J.dark=document.body.hasClass("theme-dark"),J.markdown=this.settings.markdown,J.ellipsis=this.settings.ellipsis,J.labelDirection=this.settings.label_direction,J.leafChange=!1,J.searchSupport=this.settings.search_support,J.levelSwitch=this.settings.level_switch,J.hideUnsearched=this.settings.hide_unsearched,J.regexSearch=this.settings.regex_search,J.autoExpand=this.settings.auto_expand,J.dragModify=this.settings.drag_modify,J.patchColor=this.settings.patch_color,J.primaryColorLight=this.settings.primary_color_light,J.primaryColorDark=this.settings.primary_color_dark,J.rainbowLine=this.settings.rainbow_line,J.rainbowColor1=this.settings.rainbow_color_1,J.rainbowColor2=this.settings.rainbow_color_2,J.rainbowColor3=this.settings.rainbow_color_3,J.rainbowColor4=this.settings.rainbow_color_4,J.rainbowColor5=this.settings.rainbow_color_5}patchCanvas(o){let t=this;this.register(bT(o.constructor.prototype,{requestSave(r){return function(...a){return t.app.workspace.trigger("quiet-outline:canvas-change"),r.apply(this,a)}},updateSelection(r){return function(...a){r.apply(this,a),t.app.workspace.trigger("quiet-outline:canvas-selection-change",this.selection)}}}))}registerListener(){this.registerEvent(this.app.workspace.on("css-change",()=>{J.dark=document.body.hasClass("theme-dark"),J.cssChange=!J.cssChange})),this.registerEvent(this.app.workspace.on("layout-change",()=>{let t=this.app.workspace.getLeavesOfType("markdown"),r={};t.forEach(a=>{let l=a.view.file.path;this.heading_states[l]&&(r[l]=this.heading_states[l])}),this.heading_states=r}));let o=(0,dr.debounce)(this.refresh_outline,300,!0);this.registerEvent(this.app.metadataCache.on("changed",()=>{o()})),this.registerEvent(this.app.workspace.on("quiet-outline:canvas-change",()=>{o()})),this.registerEvent(this.app.workspace.on("quiet-outline:canvas-selection-change",t=>{if(t.size===0||t.size>1){let l=this.app.workspace.getActiveFileView();if(!l)return;this.changeCurrentView(l,l.getViewType());return}let r=[...t][0];if(!r.hasOwnProperty("nodeEl"))return;let a=r;if(a.unknownData.type==="file"&&a.file.extension==="md"){let l=a.child;this.changeCurrentView(l,"embed-markdown-file");return}if(a.unknownData.type==="text"){let l=a.child;this.changeCurrentView(l,"embed-markdown-text");return}})),this.registerEvent(this.app.workspace.on("active-leaf-change",t=>je(this,null,function*(){let r=this.app.workspace.getActiveFileView();!r||r!==t.view||this.changeCurrentView(r,r.getViewType())})))}changeCurrentView(o,t){return je(this,null,function*(){var l;switch(t){case"markdown":{J.jumpBy=K0;break}case"kanban":{J.jumpBy=G0;break}case"canvas":{this.klasses.canvas||(this.patchCanvas(o.canvas),this.klasses.canvas=o.constructor),J.jumpBy=q0;break}case"embed-markdown-file":case"embed-markdown-text":{J.jumpBy=eM;break}default:{J.jumpBy=Pp;break}}let r=(l=o.file)==null?void 0:l.path;if(!this.current_note){this.current_note=o,this.current_file=r,this.current_view_type=t,yield this.refresh_outline(),J.refreshTree();return}r===this.current_file||J.refreshTree(),this.current_note=o,this.current_file=r,this.current_view_type=t,this.refresh_outline()})}registerCommand(){this.addCommand({id:"quiet-outline",name:"Quiet Outline",callback:()=>{this.activateView()}}),this.addCommand({id:"quiet-outline-reset",name:"Reset expanding level",callback:()=>{dispatchEvent(new CustomEvent("quiet-outline-reset"))}}),this.addCommand({id:"quiet-outline-focus-input",name:"Focus on input",callback:()=>{let o=document.querySelector("input.n-input__input-el");o&&o.focus()}}),this.addCommand({id:"quiet-outline-copy-as-text",name:"Copy as plain text",callback:()=>je(this,null,function*(){let o=J.headers.map(t=>" ".repeat(t.level-1)+t.heading);yield navigator.clipboard.writeText(o.join(` +`)),new dr.Notice("Headings copied")})})}registerExt(){this.registerEditorExtension([CT])}onunload(){this.app.workspace.detachLeavesOfType(ba)}loadSettings(){return je(this,null,function*(){this.settings=Object.assign({},RT,yield this.loadData())})}saveSettings(){return je(this,null,function*(){yield this.saveData(this.settings)})}activateView(){return je(this,null,function*(){this.app.workspace.rightSplit!==null&&(this.app.workspace.getLeavesOfType(ba).length===0&&(yield this.app.workspace.getRightLeaf(!1).setViewState({type:ba,active:!0})),this.app.workspace.revealLeaf(this.app.workspace.getLeavesOfType(ba)[0]))})}};function Pp(e,o){}function K0(e,o){let t=J.headers[o].position.start.line,r=e.current_note;if(r){let l={line:t,cursor:{from:{line:t,ch:0},to:{line:t,ch:0}}};e.jumping=!0,r.setEphemeralState(l),setTimeout(()=>{e.jumping=!1},200)}}function G0(e,o){var r;(r=document.querySelectorAll('.workspace-leaf[style=""] .kanban-plugin__lane-wrapper')[o])==null||r.scrollIntoView({block:"center",inline:"center",behavior:"smooth"})}function q0(e,o){let t=e.current_note;if(!(t instanceof dr.FileView)||t.getViewType()!=="canvas")throw new Error("Not in canvas view");let a=e.current_note.canvas.nodes.get(J.headers[o].id);a!==void 0&&e.current_note.canvas.zoomToBbox(a.bbox)}function Q0(e){let o=e.slice().sort((a,l)=>-Y0(a,l)),t=[];for(let a=0;a<o.length;a++)kT(t,o[a]);let r=[];return vT(t,1,(a,l)=>{r.push({level:l,heading:J0(a),id:a.id,icon:Z0(a),position:{start:{line:0,col:0,offset:0},end:{line:0,col:0,offset:0}}})}),r}function Z0(e){if(e.type==="group")return"CategoryOutlined";if(e.type==="text")return"TextFieldsOutlined";if(e.type==="link")return"PublicOutlined";if(e.type==="file"){if(e.file.endsWith(".md"))return"ArticleOutlined";if(e.file.endsWith(".mp3"))return"AudiotrackOutlined";if(e.file.endsWith(".mp4"))return"OndemandVideoOutlined";if(e.file.endsWith(".png")||e.file.endsWith(".jpg"))return"ImageOutlined"}return"FilePresentOutlined"}var yT=e=>e.height*e.width;function Y0(e,o){return yT(e)-yT(o)}var _p={};function J0(e){let o;switch(e.type){case"text":{o=e.text.split(` +`)[0],o=o.slice(o.search(/[^#\s].*/)),o.length>20&&(o=o.substring(0,20)+"...");break}case"file":{o=e.file.split("/").slice(-1)[0];break}case"link":{_p[e.url]?o=_p[e.url]:(o=e.url,(0,dr.request)(e.url).then(t=>{_p[e.url]=/<title>(.*)<\/title>/.exec(t)[1]}).catch(()=>{}));break}case"group":{o=e.label;break}}return o}function vT(e,o,t){for(let r=0;r<e.length;r++)t(e[r].node,o),vT(e[r].children,o+1,t)}function kT(e,o){let t=!1;for(let r=0;r<e.length;r++)e[r].node.type==="group"&&X0(o,e[r].node)&&(t=!0,kT(e[r].children,o));t||e.push({node:o,children:[]})}function X0(e,o){return e.x>=o.x&&e.y>=o.y&&e.x+e.width<=o.x+o.width&&e.y+e.height<=o.y+o.height}function eM(e,o){let t=e.current_note,r=J.headers[o].position.start.line;Mp(t,{line:r})}function Mp(e,o){e.getMode()==="source"?oM(e.editMode.editor,o.line):tM(e.previewMode.renderer,o.line)}function oM(e,o){let t={from:{line:o,ch:0},to:{line:o,ch:e.getLine(o).length}};e.addHighlights([t],"is-flashing",!0,!0),e.setCursor(t.from),e.scrollIntoView(t,!0)}function tM(e,o){e.applyScroll(o,{highlight:!0,center:!0})}var rM=Np; /** * @license * Lodash (Custom Build) <https://lodash.com/> diff --git a/.obsidian/plugins/obsidian-quiet-outline/manifest.json b/.obsidian/plugins/obsidian-quiet-outline/manifest.json index 65d4fd9..45ecf3e 100644 --- a/.obsidian/plugins/obsidian-quiet-outline/manifest.json +++ b/.obsidian/plugins/obsidian-quiet-outline/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-quiet-outline", "name": "Quiet Outline", - "version": "0.3.17", + "version": "0.3.25", "minAppVersion": "0.15.6", "description": "Make outline quiet and more powerful, including no-auto-expand, rendering heading as markdown, and search support.", "author": "the_tree", diff --git a/.obsidian/plugins/obsidian-quiet-outline/styles.css b/.obsidian/plugins/obsidian-quiet-outline/styles.css index 169b588..4483172 100644 --- a/.obsidian/plugins/obsidian-quiet-outline/styles.css +++ b/.obsidian/plugins/obsidian-quiet-outline/styles.css @@ -155,5 +155,16 @@ .n-tree-node.located p { color: var(--8de97876-locatedColor); } +.quiet-outline .n-tree .n-tree-node .n-tree-node-content .n-tree-node-content__prefix { + margin-right: 0; +} +.quiet-outline .n-tree .n-tree-node .n-tree-node-content .n-tree-node-content__prefix > *:last-child { + margin-right: 8px; +} +.n-tree-node-switcher__icon { + display: flex; + align-items: center; + justify-content: center; +} /* src/main.css */ diff --git a/.obsidian/plugins/obsidian-zotero-desktop-connector/main.js b/.obsidian/plugins/obsidian-zotero-desktop-connector/main.js index 0a89f5c..a58535d 100644 --- a/.obsidian/plugins/obsidian-zotero-desktop-connector/main.js +++ b/.obsidian/plugins/obsidian-zotero-desktop-connector/main.js @@ -1,55 +1,55 @@ -var eT=Object.create;var Yr=Object.defineProperty;var tT=Object.getOwnPropertyDescriptor;var aT=Object.getOwnPropertyNames;var nT=Object.getPrototypeOf,iT=Object.prototype.hasOwnProperty;var O=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),rT=(e,t)=>{for(var a in t)Yr(e,a,{get:t[a],enumerable:!0})},Tm=(e,t,a,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of aT(t))!iT.call(e,i)&&i!==a&&Yr(e,i,{get:()=>t[i],enumerable:!(n=tT(t,i))||n.enumerable});return e};var _e=(e,t,a)=>(a=e!=null?eT(nT(e)):{},Tm(t||!e||!e.__esModule?Yr(a,"default",{value:e,enumerable:!0}):a,e)),oT=e=>Tm(Yr({},"__esModule",{value:!0}),e);var Rm=O((vD,Om)=>{Om.exports=Pm;Pm.sync=lT;var km=require("fs");function sT(e,t){var a=t.pathExt!==void 0?t.pathExt:process.env.PATHEXT;if(!a||(a=a.split(";"),a.indexOf("")!==-1))return!0;for(var n=0;n<a.length;n++){var i=a[n].toLowerCase();if(i&&e.substr(-i.length).toLowerCase()===i)return!0}return!1}function Fm(e,t,a){return!e.isSymbolicLink()&&!e.isFile()?!1:sT(t,a)}function Pm(e,t,a){km.stat(e,function(n,i){a(n,n?!1:Fm(i,e,t))})}function lT(e,t){return Fm(km.statSync(e),e,t)}});var Mm=O((bD,Lm)=>{Lm.exports=Nm;Nm.sync=cT;var Bm=require("fs");function Nm(e,t,a){Bm.stat(e,function(n,i){a(n,n?!1:jm(i,t))})}function cT(e,t){return jm(Bm.statSync(e),t)}function jm(e,t){return e.isFile()&&uT(e,t)}function uT(e,t){var a=e.mode,n=e.uid,i=e.gid,r=t.uid!==void 0?t.uid:process.getuid&&process.getuid(),o=t.gid!==void 0?t.gid:process.getgid&&process.getgid(),s=parseInt("100",8),l=parseInt("010",8),u=parseInt("001",8),c=s|l,f=a&u||a&l&&i===o||a&s&&n===r||a&c&&r===0;return f}});var Mc=O((xD,Dm)=>{var gD=require("fs"),Kr;process.platform==="win32"||global.TESTING_WINDOWS?Kr=Rm():Kr=Mm();Dm.exports=Lc;Lc.sync=pT;function Lc(e,t,a){if(typeof t=="function"&&(a=t,t={}),!a){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(n,i){Lc(e,t||{},function(r,o){r?i(r):n(o)})})}Kr(e,t||{},function(n,i){n&&(n.code==="EACCES"||t&&t.ignoreErrors)&&(n=null,i=!1),a(n,i)})}function pT(e,t){try{return Kr.sync(e,t||{})}catch(a){if(t&&t.ignoreErrors||a.code==="EACCES")return!1;throw a}}});var Jm=O((yD,Um)=>{var Cn=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",zm=require("path"),dT=Cn?";":":",Gm=Mc(),Hm=e=>Object.assign(new Error(`not found: ${e}`),{code:"ENOENT"}),Wm=(e,t)=>{let a=t.colon||dT,n=e.match(/\//)||Cn&&e.match(/\\/)?[""]:[...Cn?[process.cwd()]:[],...(t.path||process.env.PATH||"").split(a)],i=Cn?t.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",r=Cn?i.split(a):[""];return Cn&&e.indexOf(".")!==-1&&r[0]!==""&&r.unshift(""),{pathEnv:n,pathExt:r,pathExtExe:i}},Vm=(e,t,a)=>{typeof t=="function"&&(a=t,t={}),t||(t={});let{pathEnv:n,pathExt:i,pathExtExe:r}=Wm(e,t),o=[],s=u=>new Promise((c,f)=>{if(u===n.length)return t.all&&o.length?c(o):f(Hm(e));let p=n[u],b=/^".*"$/.test(p)?p.slice(1,-1):p,d=zm.join(b,e),h=!b&&/^\.[\\\/]/.test(e)?e.slice(0,2)+d:d;c(l(h,u,0))}),l=(u,c,f)=>new Promise((p,b)=>{if(f===i.length)return p(s(c+1));let d=i[f];Gm(u+d,{pathExt:r},(h,m)=>{if(!h&&m)if(t.all)o.push(u+d);else return p(u+d);return p(l(u,c,f+1))})});return a?s(0).then(u=>a(null,u),a):s(0)},fT=(e,t)=>{t=t||{};let{pathEnv:a,pathExt:n,pathExtExe:i}=Wm(e,t),r=[];for(let o=0;o<a.length;o++){let s=a[o],l=/^".*"$/.test(s)?s.slice(1,-1):s,u=zm.join(l,e),c=!l&&/^\.[\\\/]/.test(e)?e.slice(0,2)+u:u;for(let f=0;f<n.length;f++){let p=c+n[f];try{if(Gm.sync(p,{pathExt:i}))if(t.all)r.push(p);else return p}catch(b){}}}if(t.all&&r.length)return r;if(t.nothrow)return null;throw Hm(e)};Um.exports=Vm;Vm.sync=fT});var zc=O((wD,Dc)=>{"use strict";var Zm=(e={})=>{let t=e.env||process.env;return(e.platform||process.platform)!=="win32"?"PATH":Object.keys(t).reverse().find(n=>n.toUpperCase()==="PATH")||"Path"};Dc.exports=Zm;Dc.exports.default=Zm});var Ym=O((ED,$m)=>{"use strict";var qm=require("path"),mT=Jm(),hT=zc();function Xm(e,t){let a=e.options.env||process.env,n=process.cwd(),i=e.options.cwd!=null,r=i&&process.chdir!==void 0&&!process.chdir.disabled;if(r)try{process.chdir(e.options.cwd)}catch(s){}let o;try{o=mT.sync(e.command,{path:a[hT({env:a})],pathExt:t?qm.delimiter:void 0})}catch(s){}finally{r&&process.chdir(n)}return o&&(o=qm.resolve(i?e.options.cwd:"",o)),o}function vT(e){return Xm(e)||Xm(e,!0)}$m.exports=vT});var Km=O((SD,Hc)=>{"use strict";var Gc=/([()\][%!^"`<>&|;, *?])/g;function bT(e){return e=e.replace(Gc,"^$1"),e}function gT(e,t){return e=`${e}`,e=e.replace(/(\\*)"/g,'$1$1\\"'),e=e.replace(/(\\*)$/,"$1$1"),e=`"${e}"`,e=e.replace(Gc,"^$1"),t&&(e=e.replace(Gc,"^$1")),e}Hc.exports.command=bT;Hc.exports.argument=gT});var eh=O((CD,Qm)=>{"use strict";Qm.exports=/^#!(.*)/});var ah=O((AD,th)=>{"use strict";var xT=eh();th.exports=(e="")=>{let t=e.match(xT);if(!t)return null;let[a,n]=t[0].replace(/#! ?/,"").split(" "),i=a.split("/").pop();return i==="env"?n:n?`${i} ${n}`:i}});var ih=O((ID,nh)=>{"use strict";var Wc=require("fs"),yT=ah();function wT(e){let a=Buffer.alloc(150),n;try{n=Wc.openSync(e,"r"),Wc.readSync(n,a,0,150,0),Wc.closeSync(n)}catch(i){}return yT(a.toString())}nh.exports=wT});var lh=O((_D,sh)=>{"use strict";var ET=require("path"),rh=Ym(),oh=Km(),ST=ih(),CT=process.platform==="win32",AT=/\.(?:com|exe)$/i,IT=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function _T(e){e.file=rh(e);let t=e.file&&ST(e.file);return t?(e.args.unshift(e.file),e.command=t,rh(e)):e.file}function TT(e){if(!CT)return e;let t=_T(e),a=!AT.test(t);if(e.options.forceShell||a){let n=IT.test(t);e.command=ET.normalize(e.command),e.command=oh.command(e.command),e.args=e.args.map(r=>oh.argument(r,n));let i=[e.command].concat(e.args).join(" ");e.args=["/d","/s","/c",`"${i}"`],e.command=process.env.comspec||"cmd.exe",e.options.windowsVerbatimArguments=!0}return e}function kT(e,t,a){t&&!Array.isArray(t)&&(a=t,t=null),t=t?t.slice(0):[],a=Object.assign({},a);let n={command:e,args:t,options:a,file:void 0,original:{command:e,args:t}};return a.shell?n:TT(n)}sh.exports=kT});var ph=O((TD,uh)=>{"use strict";var Vc=process.platform==="win32";function Uc(e,t){return Object.assign(new Error(`${t} ${e.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${t} ${e.command}`,path:e.command,spawnargs:e.args})}function FT(e,t){if(!Vc)return;let a=e.emit;e.emit=function(n,i){if(n==="exit"){let r=ch(i,t,"spawn");if(r)return a.call(e,"error",r)}return a.apply(e,arguments)}}function ch(e,t){return Vc&&e===1&&!t.file?Uc(t.original,"spawn"):null}function PT(e,t){return Vc&&e===1&&!t.file?Uc(t.original,"spawnSync"):null}uh.exports={hookChildProcess:FT,verifyENOENT:ch,verifyENOENTSync:PT,notFoundError:Uc}});var qc=O((kD,An)=>{"use strict";var dh=require("child_process"),Jc=lh(),Zc=ph();function fh(e,t,a){let n=Jc(e,t,a),i=dh.spawn(n.command,n.args,n.options);return Zc.hookChildProcess(i,n),i}function OT(e,t,a){let n=Jc(e,t,a),i=dh.spawnSync(n.command,n.args,n.options);return i.error=i.error||Zc.verifyENOENTSync(i.status,n),i}An.exports=fh;An.exports.spawn=fh;An.exports.sync=OT;An.exports._parse=Jc;An.exports._enoent=Zc});var hh=O((FD,mh)=>{"use strict";mh.exports=e=>{let t=typeof e=="string"?` +var aT=Object.create;var Yr=Object.defineProperty;var nT=Object.getOwnPropertyDescriptor;var iT=Object.getOwnPropertyNames;var rT=Object.getPrototypeOf,oT=Object.prototype.hasOwnProperty;var O=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),sT=(e,t)=>{for(var a in t)Yr(e,a,{get:t[a],enumerable:!0})},Tm=(e,t,a,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of iT(t))!oT.call(e,i)&&i!==a&&Yr(e,i,{get:()=>t[i],enumerable:!(n=nT(t,i))||n.enumerable});return e};var _e=(e,t,a)=>(a=e!=null?aT(rT(e)):{},Tm(t||!e||!e.__esModule?Yr(a,"default",{value:e,enumerable:!0}):a,e)),lT=e=>Tm(Yr({},"__esModule",{value:!0}),e);var Rm=O((hD,Om)=>{Om.exports=Pm;Pm.sync=uT;var km=require("fs");function cT(e,t){var a=t.pathExt!==void 0?t.pathExt:process.env.PATHEXT;if(!a||(a=a.split(";"),a.indexOf("")!==-1))return!0;for(var n=0;n<a.length;n++){var i=a[n].toLowerCase();if(i&&e.substr(-i.length).toLowerCase()===i)return!0}return!1}function Fm(e,t,a){return!e.isSymbolicLink()&&!e.isFile()?!1:cT(t,a)}function Pm(e,t,a){km.stat(e,function(n,i){a(n,n?!1:Fm(i,e,t))})}function uT(e,t){return Fm(km.statSync(e),e,t)}});var Mm=O((vD,Lm)=>{Lm.exports=Nm;Nm.sync=pT;var Bm=require("fs");function Nm(e,t,a){Bm.stat(e,function(n,i){a(n,n?!1:jm(i,t))})}function pT(e,t){return jm(Bm.statSync(e),t)}function jm(e,t){return e.isFile()&&dT(e,t)}function dT(e,t){var a=e.mode,n=e.uid,i=e.gid,r=t.uid!==void 0?t.uid:process.getuid&&process.getuid(),o=t.gid!==void 0?t.gid:process.getgid&&process.getgid(),s=parseInt("100",8),l=parseInt("010",8),u=parseInt("001",8),c=s|l,f=a&u||a&l&&i===o||a&s&&n===r||a&c&&r===0;return f}});var Mc=O((gD,Dm)=>{var bD=require("fs"),Kr;process.platform==="win32"||global.TESTING_WINDOWS?Kr=Rm():Kr=Mm();Dm.exports=Lc;Lc.sync=fT;function Lc(e,t,a){if(typeof t=="function"&&(a=t,t={}),!a){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(n,i){Lc(e,t||{},function(r,o){r?i(r):n(o)})})}Kr(e,t||{},function(n,i){n&&(n.code==="EACCES"||t&&t.ignoreErrors)&&(n=null,i=!1),a(n,i)})}function fT(e,t){try{return Kr.sync(e,t||{})}catch(a){if(t&&t.ignoreErrors||a.code==="EACCES")return!1;throw a}}});var Jm=O((xD,Um)=>{var Cn=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",zm=require("path"),mT=Cn?";":":",Gm=Mc(),Hm=e=>Object.assign(new Error(`not found: ${e}`),{code:"ENOENT"}),Wm=(e,t)=>{let a=t.colon||mT,n=e.match(/\//)||Cn&&e.match(/\\/)?[""]:[...Cn?[process.cwd()]:[],...(t.path||process.env.PATH||"").split(a)],i=Cn?t.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",r=Cn?i.split(a):[""];return Cn&&e.indexOf(".")!==-1&&r[0]!==""&&r.unshift(""),{pathEnv:n,pathExt:r,pathExtExe:i}},Vm=(e,t,a)=>{typeof t=="function"&&(a=t,t={}),t||(t={});let{pathEnv:n,pathExt:i,pathExtExe:r}=Wm(e,t),o=[],s=u=>new Promise((c,f)=>{if(u===n.length)return t.all&&o.length?c(o):f(Hm(e));let p=n[u],b=/^".*"$/.test(p)?p.slice(1,-1):p,d=zm.join(b,e),m=!b&&/^\.[\\\/]/.test(e)?e.slice(0,2)+d:d;c(l(m,u,0))}),l=(u,c,f)=>new Promise((p,b)=>{if(f===i.length)return p(s(c+1));let d=i[f];Gm(u+d,{pathExt:r},(m,h)=>{if(!m&&h)if(t.all)o.push(u+d);else return p(u+d);return p(l(u,c,f+1))})});return a?s(0).then(u=>a(null,u),a):s(0)},hT=(e,t)=>{t=t||{};let{pathEnv:a,pathExt:n,pathExtExe:i}=Wm(e,t),r=[];for(let o=0;o<a.length;o++){let s=a[o],l=/^".*"$/.test(s)?s.slice(1,-1):s,u=zm.join(l,e),c=!l&&/^\.[\\\/]/.test(e)?e.slice(0,2)+u:u;for(let f=0;f<n.length;f++){let p=c+n[f];try{if(Gm.sync(p,{pathExt:i}))if(t.all)r.push(p);else return p}catch(b){}}}if(t.all&&r.length)return r;if(t.nothrow)return null;throw Hm(e)};Um.exports=Vm;Vm.sync=hT});var zc=O((yD,Dc)=>{"use strict";var Zm=(e={})=>{let t=e.env||process.env;return(e.platform||process.platform)!=="win32"?"PATH":Object.keys(t).reverse().find(n=>n.toUpperCase()==="PATH")||"Path"};Dc.exports=Zm;Dc.exports.default=Zm});var Ym=O((wD,$m)=>{"use strict";var qm=require("path"),vT=Jm(),bT=zc();function Xm(e,t){let a=e.options.env||process.env,n=process.cwd(),i=e.options.cwd!=null,r=i&&process.chdir!==void 0&&!process.chdir.disabled;if(r)try{process.chdir(e.options.cwd)}catch(s){}let o;try{o=vT.sync(e.command,{path:a[bT({env:a})],pathExt:t?qm.delimiter:void 0})}catch(s){}finally{r&&process.chdir(n)}return o&&(o=qm.resolve(i?e.options.cwd:"",o)),o}function gT(e){return Xm(e)||Xm(e,!0)}$m.exports=gT});var Km=O((ED,Hc)=>{"use strict";var Gc=/([()\][%!^"`<>&|;, *?])/g;function xT(e){return e=e.replace(Gc,"^$1"),e}function yT(e,t){return e=`${e}`,e=e.replace(/(\\*)"/g,'$1$1\\"'),e=e.replace(/(\\*)$/,"$1$1"),e=`"${e}"`,e=e.replace(Gc,"^$1"),t&&(e=e.replace(Gc,"^$1")),e}Hc.exports.command=xT;Hc.exports.argument=yT});var eh=O((SD,Qm)=>{"use strict";Qm.exports=/^#!(.*)/});var ah=O((CD,th)=>{"use strict";var wT=eh();th.exports=(e="")=>{let t=e.match(wT);if(!t)return null;let[a,n]=t[0].replace(/#! ?/,"").split(" "),i=a.split("/").pop();return i==="env"?n:n?`${i} ${n}`:i}});var ih=O((AD,nh)=>{"use strict";var Wc=require("fs"),ET=ah();function ST(e){let a=Buffer.alloc(150),n;try{n=Wc.openSync(e,"r"),Wc.readSync(n,a,0,150,0),Wc.closeSync(n)}catch(i){}return ET(a.toString())}nh.exports=ST});var lh=O((ID,sh)=>{"use strict";var CT=require("path"),rh=Ym(),oh=Km(),AT=ih(),IT=process.platform==="win32",_T=/\.(?:com|exe)$/i,TT=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function kT(e){e.file=rh(e);let t=e.file&&AT(e.file);return t?(e.args.unshift(e.file),e.command=t,rh(e)):e.file}function FT(e){if(!IT)return e;let t=kT(e),a=!_T.test(t);if(e.options.forceShell||a){let n=TT.test(t);e.command=CT.normalize(e.command),e.command=oh.command(e.command),e.args=e.args.map(r=>oh.argument(r,n));let i=[e.command].concat(e.args).join(" ");e.args=["/d","/s","/c",`"${i}"`],e.command=process.env.comspec||"cmd.exe",e.options.windowsVerbatimArguments=!0}return e}function PT(e,t,a){t&&!Array.isArray(t)&&(a=t,t=null),t=t?t.slice(0):[],a=Object.assign({},a);let n={command:e,args:t,options:a,file:void 0,original:{command:e,args:t}};return a.shell?n:FT(n)}sh.exports=PT});var ph=O((_D,uh)=>{"use strict";var Vc=process.platform==="win32";function Uc(e,t){return Object.assign(new Error(`${t} ${e.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${t} ${e.command}`,path:e.command,spawnargs:e.args})}function OT(e,t){if(!Vc)return;let a=e.emit;e.emit=function(n,i){if(n==="exit"){let r=ch(i,t,"spawn");if(r)return a.call(e,"error",r)}return a.apply(e,arguments)}}function ch(e,t){return Vc&&e===1&&!t.file?Uc(t.original,"spawn"):null}function RT(e,t){return Vc&&e===1&&!t.file?Uc(t.original,"spawnSync"):null}uh.exports={hookChildProcess:OT,verifyENOENT:ch,verifyENOENTSync:RT,notFoundError:Uc}});var qc=O((TD,An)=>{"use strict";var dh=require("child_process"),Jc=lh(),Zc=ph();function fh(e,t,a){let n=Jc(e,t,a),i=dh.spawn(n.command,n.args,n.options);return Zc.hookChildProcess(i,n),i}function BT(e,t,a){let n=Jc(e,t,a),i=dh.spawnSync(n.command,n.args,n.options);return i.error=i.error||Zc.verifyENOENTSync(i.status,n),i}An.exports=fh;An.exports.spawn=fh;An.exports.sync=BT;An.exports._parse=Jc;An.exports._enoent=Zc});var hh=O((kD,mh)=>{"use strict";mh.exports=e=>{let t=typeof e=="string"?` `:` -`.charCodeAt(),a=typeof e=="string"?"\r":"\r".charCodeAt();return e[e.length-1]===t&&(e=e.slice(0,e.length-1)),e[e.length-1]===a&&(e=e.slice(0,e.length-1)),e}});var gh=O((PD,ki)=>{"use strict";var Ti=require("path"),vh=zc(),bh=e=>{e={cwd:process.cwd(),path:process.env[vh()],execPath:process.execPath,...e};let t,a=Ti.resolve(e.cwd),n=[];for(;t!==a;)n.push(Ti.join(a,"node_modules/.bin")),t=a,a=Ti.resolve(a,"..");let i=Ti.resolve(e.cwd,e.execPath,"..");return n.push(i),n.concat(e.path).join(Ti.delimiter)};ki.exports=bh;ki.exports.default=bh;ki.exports.env=e=>{e={env:process.env,...e};let t={...e.env},a=vh({env:t});return e.path=t[a],t[a]=ki.exports(e),t}});var yh=O((OD,Xc)=>{"use strict";var xh=(e,t)=>{for(let a of Reflect.ownKeys(t))Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(t,a));return e};Xc.exports=xh;Xc.exports.default=xh});var Eh=O((RD,eo)=>{"use strict";var RT=yh(),Qr=new WeakMap,wh=(e,t={})=>{if(typeof e!="function")throw new TypeError("Expected a function");let a,n=0,i=e.displayName||e.name||"<anonymous>",r=function(...o){if(Qr.set(r,++n),n===1)a=e.apply(this,o),e=null;else if(t.throw===!0)throw new Error(`Function \`${i}\` can only be called once`);return a};return RT(r,e),Qr.set(r,n),r};eo.exports=wh;eo.exports.default=wh;eo.exports.callCount=e=>{if(!Qr.has(e))throw new Error(`The given function \`${e.name}\` is not wrapped by the \`onetime\` package`);return Qr.get(e)}});var Sh=O(to=>{"use strict";Object.defineProperty(to,"__esModule",{value:!0});to.SIGNALS=void 0;var BT=[{name:"SIGHUP",number:1,action:"terminate",description:"Terminal closed",standard:"posix"},{name:"SIGINT",number:2,action:"terminate",description:"User interruption with CTRL-C",standard:"ansi"},{name:"SIGQUIT",number:3,action:"core",description:"User interruption with CTRL-\\",standard:"posix"},{name:"SIGILL",number:4,action:"core",description:"Invalid machine instruction",standard:"ansi"},{name:"SIGTRAP",number:5,action:"core",description:"Debugger breakpoint",standard:"posix"},{name:"SIGABRT",number:6,action:"core",description:"Aborted",standard:"ansi"},{name:"SIGIOT",number:6,action:"core",description:"Aborted",standard:"bsd"},{name:"SIGBUS",number:7,action:"core",description:"Bus error due to misaligned, non-existing address or paging error",standard:"bsd"},{name:"SIGEMT",number:7,action:"terminate",description:"Command should be emulated but is not implemented",standard:"other"},{name:"SIGFPE",number:8,action:"core",description:"Floating point arithmetic error",standard:"ansi"},{name:"SIGKILL",number:9,action:"terminate",description:"Forced termination",standard:"posix",forced:!0},{name:"SIGUSR1",number:10,action:"terminate",description:"Application-specific signal",standard:"posix"},{name:"SIGSEGV",number:11,action:"core",description:"Segmentation fault",standard:"ansi"},{name:"SIGUSR2",number:12,action:"terminate",description:"Application-specific signal",standard:"posix"},{name:"SIGPIPE",number:13,action:"terminate",description:"Broken pipe or socket",standard:"posix"},{name:"SIGALRM",number:14,action:"terminate",description:"Timeout or timer",standard:"posix"},{name:"SIGTERM",number:15,action:"terminate",description:"Termination",standard:"ansi"},{name:"SIGSTKFLT",number:16,action:"terminate",description:"Stack is empty or overflowed",standard:"other"},{name:"SIGCHLD",number:17,action:"ignore",description:"Child process terminated, paused or unpaused",standard:"posix"},{name:"SIGCLD",number:17,action:"ignore",description:"Child process terminated, paused or unpaused",standard:"other"},{name:"SIGCONT",number:18,action:"unpause",description:"Unpaused",standard:"posix",forced:!0},{name:"SIGSTOP",number:19,action:"pause",description:"Paused",standard:"posix",forced:!0},{name:"SIGTSTP",number:20,action:"pause",description:'Paused using CTRL-Z or "suspend"',standard:"posix"},{name:"SIGTTIN",number:21,action:"pause",description:"Background process cannot read terminal input",standard:"posix"},{name:"SIGBREAK",number:21,action:"terminate",description:"User interruption with CTRL-BREAK",standard:"other"},{name:"SIGTTOU",number:22,action:"pause",description:"Background process cannot write to terminal output",standard:"posix"},{name:"SIGURG",number:23,action:"ignore",description:"Socket received out-of-band data",standard:"bsd"},{name:"SIGXCPU",number:24,action:"core",description:"Process timed out",standard:"bsd"},{name:"SIGXFSZ",number:25,action:"core",description:"File too big",standard:"bsd"},{name:"SIGVTALRM",number:26,action:"terminate",description:"Timeout or timer",standard:"bsd"},{name:"SIGPROF",number:27,action:"terminate",description:"Timeout or timer",standard:"bsd"},{name:"SIGWINCH",number:28,action:"ignore",description:"Terminal window size changed",standard:"bsd"},{name:"SIGIO",number:29,action:"terminate",description:"I/O is available",standard:"other"},{name:"SIGPOLL",number:29,action:"terminate",description:"Watched event",standard:"other"},{name:"SIGINFO",number:29,action:"ignore",description:"Request for process information",standard:"other"},{name:"SIGPWR",number:30,action:"terminate",description:"Device running out of power",standard:"systemv"},{name:"SIGSYS",number:31,action:"core",description:"Invalid system call",standard:"other"},{name:"SIGUNUSED",number:31,action:"terminate",description:"Invalid system call",standard:"other"}];to.SIGNALS=BT});var $c=O(In=>{"use strict";Object.defineProperty(In,"__esModule",{value:!0});In.SIGRTMAX=In.getRealtimeSignals=void 0;var NT=function(){let e=Ah-Ch+1;return Array.from({length:e},jT)};In.getRealtimeSignals=NT;var jT=function(e,t){return{name:`SIGRT${t+1}`,number:Ch+t,action:"terminate",description:"Application-specific signal (realtime)",standard:"posix"}},Ch=34,Ah=64;In.SIGRTMAX=Ah});var Ih=O(ao=>{"use strict";Object.defineProperty(ao,"__esModule",{value:!0});ao.getSignals=void 0;var LT=require("os"),MT=Sh(),DT=$c(),zT=function(){let e=(0,DT.getRealtimeSignals)();return[...MT.SIGNALS,...e].map(GT)};ao.getSignals=zT;var GT=function({name:e,number:t,description:a,action:n,forced:i=!1,standard:r}){let{signals:{[e]:o}}=LT.constants,s=o!==void 0;return{name:e,number:s?o:t,description:a,supported:s,action:n,forced:i,standard:r}}});var Th=O(_n=>{"use strict";Object.defineProperty(_n,"__esModule",{value:!0});_n.signalsByNumber=_n.signalsByName=void 0;var HT=require("os"),_h=Ih(),WT=$c(),VT=function(){return(0,_h.getSignals)().reduce(UT,{})},UT=function(e,{name:t,number:a,description:n,supported:i,action:r,forced:o,standard:s}){return{...e,[t]:{name:t,number:a,description:n,supported:i,action:r,forced:o,standard:s}}},JT=VT();_n.signalsByName=JT;var ZT=function(){let e=(0,_h.getSignals)(),t=WT.SIGRTMAX+1,a=Array.from({length:t},(n,i)=>qT(i,e));return Object.assign({},...a)},qT=function(e,t){let a=XT(e,t);if(a===void 0)return{};let{name:n,description:i,supported:r,action:o,forced:s,standard:l}=a;return{[e]:{name:n,number:e,description:i,supported:r,action:o,forced:s,standard:l}}},XT=function(e,t){let a=t.find(({name:n})=>HT.constants.signals[n]===e);return a!==void 0?a:t.find(n=>n.number===e)},$T=ZT();_n.signalsByNumber=$T});var Fh=O((MD,kh)=>{"use strict";var{signalsByName:YT}=Th(),KT=({timedOut:e,timeout:t,errorCode:a,signal:n,signalDescription:i,exitCode:r,isCanceled:o})=>e?`timed out after ${t} milliseconds`:o?"was canceled":a!==void 0?`failed with ${a}`:n!==void 0?`was killed with ${n} (${i})`:r!==void 0?`failed with exit code ${r}`:"failed",QT=({stdout:e,stderr:t,all:a,error:n,signal:i,exitCode:r,command:o,escapedCommand:s,timedOut:l,isCanceled:u,killed:c,parsed:{options:{timeout:f}}})=>{r=r===null?void 0:r,i=i===null?void 0:i;let p=i===void 0?void 0:YT[i].description,b=n&&n.code,h=`Command ${KT({timedOut:l,timeout:f,errorCode:b,signal:i,signalDescription:p,exitCode:r,isCanceled:u})}: ${o}`,m=Object.prototype.toString.call(n)==="[object Error]",v=m?`${h} -${n.message}`:h,x=[v,t,e].filter(Boolean).join(` -`);return m?(n.originalMessage=n.message,n.message=x):n=new Error(x),n.shortMessage=v,n.command=o,n.escapedCommand=s,n.exitCode=r,n.signal=i,n.signalDescription=p,n.stdout=e,n.stderr=t,a!==void 0&&(n.all=a),"bufferedData"in n&&delete n.bufferedData,n.failed=!0,n.timedOut=!!l,n.isCanceled=u,n.killed=c&&!l,n};kh.exports=QT});var Oh=O((DD,Yc)=>{"use strict";var no=["stdin","stdout","stderr"],e4=e=>no.some(t=>e[t]!==void 0),Ph=e=>{if(!e)return;let{stdio:t}=e;if(t===void 0)return no.map(n=>e[n]);if(e4(e))throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${no.map(n=>`\`${n}\``).join(", ")}`);if(typeof t=="string")return t;if(!Array.isArray(t))throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof t}\``);let a=Math.max(t.length,no.length);return Array.from({length:a},(n,i)=>t[i])};Yc.exports=Ph;Yc.exports.node=e=>{let t=Ph(e);return t==="ipc"?"ipc":t===void 0||typeof t=="string"?[t,t,t,"ipc"]:t.includes("ipc")?t:[...t,"ipc"]}});var Rh=O((zD,io)=>{io.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];process.platform!=="win32"&&io.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&io.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")});var eu=O((GD,Fn)=>{var Ge=global.process,qa=function(e){return e&&typeof e=="object"&&typeof e.removeListener=="function"&&typeof e.emit=="function"&&typeof e.reallyExit=="function"&&typeof e.listeners=="function"&&typeof e.kill=="function"&&typeof e.pid=="number"&&typeof e.on=="function"};qa(Ge)?(Bh=require("assert"),Tn=Rh(),Nh=/^win/i.test(Ge.platform),Fi=require("events"),typeof Fi!="function"&&(Fi=Fi.EventEmitter),Ge.__signal_exit_emitter__?at=Ge.__signal_exit_emitter__:(at=Ge.__signal_exit_emitter__=new Fi,at.count=0,at.emitted={}),at.infinite||(at.setMaxListeners(1/0),at.infinite=!0),Fn.exports=function(e,t){if(!qa(global.process))return function(){};Bh.equal(typeof e,"function","a callback must be provided for exit handler"),kn===!1&&Kc();var a="exit";t&&t.alwaysLast&&(a="afterexit");var n=function(){at.removeListener(a,e),at.listeners("exit").length===0&&at.listeners("afterexit").length===0&&ro()};return at.on(a,e),n},ro=function(){!kn||!qa(global.process)||(kn=!1,Tn.forEach(function(t){try{Ge.removeListener(t,oo[t])}catch(a){}}),Ge.emit=so,Ge.reallyExit=Qc,at.count-=1)},Fn.exports.unload=ro,Xa=function(t,a,n){at.emitted[t]||(at.emitted[t]=!0,at.emit(t,a,n))},oo={},Tn.forEach(function(e){oo[e]=function(){if(qa(global.process)){var a=Ge.listeners(e);a.length===at.count&&(ro(),Xa("exit",null,e),Xa("afterexit",null,e),Nh&&e==="SIGHUP"&&(e="SIGINT"),Ge.kill(Ge.pid,e))}}}),Fn.exports.signals=function(){return Tn},kn=!1,Kc=function(){kn||!qa(global.process)||(kn=!0,at.count+=1,Tn=Tn.filter(function(t){try{return Ge.on(t,oo[t]),!0}catch(a){return!1}}),Ge.emit=Lh,Ge.reallyExit=jh)},Fn.exports.load=Kc,Qc=Ge.reallyExit,jh=function(t){qa(global.process)&&(Ge.exitCode=t||0,Xa("exit",Ge.exitCode,null),Xa("afterexit",Ge.exitCode,null),Qc.call(Ge,Ge.exitCode))},so=Ge.emit,Lh=function(t,a){if(t==="exit"&&qa(global.process)){a!==void 0&&(Ge.exitCode=a);var n=so.apply(this,arguments);return Xa("exit",Ge.exitCode,null),Xa("afterexit",Ge.exitCode,null),n}else return so.apply(this,arguments)}):Fn.exports=function(){return function(){}};var Bh,Tn,Nh,Fi,at,ro,Xa,oo,kn,Kc,Qc,jh,so,Lh});var Dh=O((HD,Mh)=>{"use strict";var t4=require("os"),a4=eu(),n4=1e3*5,i4=(e,t="SIGTERM",a={})=>{let n=e(t);return r4(e,t,a,n),n},r4=(e,t,a,n)=>{if(!o4(t,a,n))return;let i=l4(a),r=setTimeout(()=>{e("SIGKILL")},i);r.unref&&r.unref()},o4=(e,{forceKillAfterTimeout:t},a)=>s4(e)&&t!==!1&&a,s4=e=>e===t4.constants.signals.SIGTERM||typeof e=="string"&&e.toUpperCase()==="SIGTERM",l4=({forceKillAfterTimeout:e=!0})=>{if(e===!0)return n4;if(!Number.isFinite(e)||e<0)throw new TypeError(`Expected the \`forceKillAfterTimeout\` option to be a non-negative integer, got \`${e}\` (${typeof e})`);return e},c4=(e,t)=>{e.kill()&&(t.isCanceled=!0)},u4=(e,t,a)=>{e.kill(t),a(Object.assign(new Error("Timed out"),{timedOut:!0,signal:t}))},p4=(e,{timeout:t,killSignal:a="SIGTERM"},n)=>{if(t===0||t===void 0)return n;let i,r=new Promise((s,l)=>{i=setTimeout(()=>{u4(e,a,l)},t)}),o=n.finally(()=>{clearTimeout(i)});return Promise.race([r,o])},d4=({timeout:e})=>{if(e!==void 0&&(!Number.isFinite(e)||e<0))throw new TypeError(`Expected the \`timeout\` option to be a non-negative integer, got \`${e}\` (${typeof e})`)},f4=async(e,{cleanup:t,detached:a},n)=>{if(!t||a)return n;let i=a4(()=>{e.kill()});return n.finally(()=>{i()})};Mh.exports={spawnedKill:i4,spawnedCancel:c4,setupTimeout:p4,validateTimeout:d4,setExitHandler:f4}});var Gh=O((WD,zh)=>{"use strict";var $t=e=>e!==null&&typeof e=="object"&&typeof e.pipe=="function";$t.writable=e=>$t(e)&&e.writable!==!1&&typeof e._write=="function"&&typeof e._writableState=="object";$t.readable=e=>$t(e)&&e.readable!==!1&&typeof e._read=="function"&&typeof e._readableState=="object";$t.duplex=e=>$t.writable(e)&&$t.readable(e);$t.transform=e=>$t.duplex(e)&&typeof e._transform=="function";zh.exports=$t});var Wh=O((VD,Hh)=>{"use strict";var{PassThrough:m4}=require("stream");Hh.exports=e=>{e={...e};let{array:t}=e,{encoding:a}=e,n=a==="buffer",i=!1;t?i=!(a||n):a=a||"utf8",n&&(a=null);let r=new m4({objectMode:i});a&&r.setEncoding(a);let o=0,s=[];return r.on("data",l=>{s.push(l),i?o=s.length:o+=l.length}),r.getBufferedValue=()=>t?s:n?Buffer.concat(s,o):s.join(""),r.getBufferedLength=()=>o,r}});var Vh=O((UD,Pi)=>{"use strict";var{constants:h4}=require("buffer"),v4=require("stream"),{promisify:b4}=require("util"),g4=Wh(),x4=b4(v4.pipeline),lo=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};async function tu(e,t){if(!e)throw new Error("Expected a stream");t={maxBuffer:1/0,...t};let{maxBuffer:a}=t,n=g4(t);return await new Promise((i,r)=>{let o=s=>{s&&n.getBufferedLength()<=h4.MAX_LENGTH&&(s.bufferedData=n.getBufferedValue()),r(s)};(async()=>{try{await x4(e,n),i()}catch(s){o(s)}})(),n.on("data",()=>{n.getBufferedLength()>a&&o(new lo)})}),n.getBufferedValue()}Pi.exports=tu;Pi.exports.buffer=(e,t)=>tu(e,{...t,encoding:"buffer"});Pi.exports.array=(e,t)=>tu(e,{...t,array:!0});Pi.exports.MaxBufferError=lo});var au=O((JD,Uh)=>{"use strict";var{PassThrough:y4}=require("stream");Uh.exports=function(){var e=[],t=new y4({objectMode:!0});return t.setMaxListeners(0),t.add=a,t.isEmpty=n,t.on("unpipe",i),Array.prototype.slice.call(arguments).forEach(a),t;function a(r){return Array.isArray(r)?(r.forEach(a),this):(e.push(r),r.once("end",i.bind(null,r)),r.once("error",t.emit.bind(t,"error")),r.pipe(t,{end:!1}),this)}function n(){return e.length==0}function i(r){e=e.filter(function(o){return o!==r}),!e.length&&t.readable&&t.end()}}});var Xh=O((ZD,qh)=>{"use strict";var Zh=Gh(),Jh=Vh(),w4=au(),E4=(e,t)=>{t===void 0||e.stdin===void 0||(Zh(t)?t.pipe(e.stdin):e.stdin.end(t))},S4=(e,{all:t})=>{if(!t||!e.stdout&&!e.stderr)return;let a=w4();return e.stdout&&a.add(e.stdout),e.stderr&&a.add(e.stderr),a},nu=async(e,t)=>{if(e){e.destroy();try{return await t}catch(a){return a.bufferedData}}},iu=(e,{encoding:t,buffer:a,maxBuffer:n})=>{if(!(!e||!a))return t?Jh(e,{encoding:t,maxBuffer:n}):Jh.buffer(e,{maxBuffer:n})},C4=async({stdout:e,stderr:t,all:a},{encoding:n,buffer:i,maxBuffer:r},o)=>{let s=iu(e,{encoding:n,buffer:i,maxBuffer:r}),l=iu(t,{encoding:n,buffer:i,maxBuffer:r}),u=iu(a,{encoding:n,buffer:i,maxBuffer:r*2});try{return await Promise.all([o,s,l,u])}catch(c){return Promise.all([{error:c,signal:c.signal,timedOut:c.timedOut},nu(e,s),nu(t,l),nu(a,u)])}},A4=({input:e})=>{if(Zh(e))throw new TypeError("The `input` option cannot be a stream in sync mode")};qh.exports={handleInput:E4,makeAllStream:S4,getSpawnedResult:C4,validateInputSync:A4}});var Yh=O((qD,$h)=>{"use strict";var I4=(async()=>{})().constructor.prototype,_4=["then","catch","finally"].map(e=>[e,Reflect.getOwnPropertyDescriptor(I4,e)]),T4=(e,t)=>{for(let[a,n]of _4){let i=typeof t=="function"?(...r)=>Reflect.apply(n.value,t(),r):n.value.bind(t);Reflect.defineProperty(e,a,{...n,value:i})}return e},k4=e=>new Promise((t,a)=>{e.on("exit",(n,i)=>{t({exitCode:n,signal:i})}),e.on("error",n=>{a(n)}),e.stdin&&e.stdin.on("error",n=>{a(n)})});$h.exports={mergePromise:T4,getSpawnedPromise:k4}});var ev=O((XD,Qh)=>{"use strict";var Kh=(e,t=[])=>Array.isArray(t)?[e,...t]:[e],F4=/^[\w.-]+$/,P4=/"/g,O4=e=>typeof e!="string"||F4.test(e)?e:`"${e.replace(P4,'\\"')}"`,R4=(e,t)=>Kh(e,t).join(" "),B4=(e,t)=>Kh(e,t).map(a=>O4(a)).join(" "),N4=/ +/g,j4=e=>{let t=[];for(let a of e.trim().split(N4)){let n=t[t.length-1];n&&n.endsWith("\\")?t[t.length-1]=`${n.slice(0,-1)} ${a}`:t.push(a)}return t};Qh.exports={joinCommand:R4,getEscapedCommand:B4,parseCommand:j4}});var sv=O(($D,Pn)=>{"use strict";var L4=require("path"),ru=require("child_process"),M4=qc(),D4=hh(),z4=gh(),G4=Eh(),co=Fh(),av=Oh(),{spawnedKill:H4,spawnedCancel:W4,setupTimeout:V4,validateTimeout:U4,setExitHandler:J4}=Dh(),{handleInput:Z4,getSpawnedResult:q4,makeAllStream:X4,validateInputSync:$4}=Xh(),{mergePromise:tv,getSpawnedPromise:Y4}=Yh(),{joinCommand:nv,parseCommand:iv,getEscapedCommand:rv}=ev(),K4=1e3*1e3*100,Q4=({env:e,extendEnv:t,preferLocal:a,localDir:n,execPath:i})=>{let r=t?{...process.env,...e}:e;return a?z4.env({env:r,cwd:n,execPath:i}):r},ov=(e,t,a={})=>{let n=M4._parse(e,t,a);return e=n.command,t=n.args,a=n.options,a={maxBuffer:K4,buffer:!0,stripFinalNewline:!0,extendEnv:!0,preferLocal:!1,localDir:a.cwd||process.cwd(),execPath:process.execPath,encoding:"utf8",reject:!0,cleanup:!0,all:!1,windowsHide:!0,...a},a.env=Q4(a),a.stdio=av(a),process.platform==="win32"&&L4.basename(e,".exe")==="cmd"&&t.unshift("/q"),{file:e,args:t,options:a,parsed:n}},Oi=(e,t,a)=>typeof t!="string"&&!Buffer.isBuffer(t)?a===void 0?void 0:"":e.stripFinalNewline?D4(t):t,uo=(e,t,a)=>{let n=ov(e,t,a),i=nv(e,t),r=rv(e,t);U4(n.options);let o;try{o=ru.spawn(n.file,n.args,n.options)}catch(b){let d=new ru.ChildProcess,h=Promise.reject(co({error:b,stdout:"",stderr:"",all:"",command:i,escapedCommand:r,parsed:n,timedOut:!1,isCanceled:!1,killed:!1}));return tv(d,h)}let s=Y4(o),l=V4(o,n.options,s),u=J4(o,n.options,l),c={isCanceled:!1};o.kill=H4.bind(null,o.kill.bind(o)),o.cancel=W4.bind(null,o,c);let p=G4(async()=>{let[{error:b,exitCode:d,signal:h,timedOut:m},v,x,E]=await q4(o,n.options,u),g=Oi(n.options,v),w=Oi(n.options,x),C=Oi(n.options,E);if(b||d!==0||h!==null){let y=co({error:b,exitCode:d,signal:h,stdout:g,stderr:w,all:C,command:i,escapedCommand:r,parsed:n,timedOut:m,isCanceled:c.isCanceled,killed:o.killed});if(!n.options.reject)return y;throw y}return{command:i,escapedCommand:r,exitCode:0,stdout:g,stderr:w,all:C,failed:!1,timedOut:!1,isCanceled:!1,killed:!1}});return Z4(o,n.options.input),o.all=X4(o,n.options),tv(o,p)};Pn.exports=uo;Pn.exports.sync=(e,t,a)=>{let n=ov(e,t,a),i=nv(e,t),r=rv(e,t);$4(n.options);let o;try{o=ru.spawnSync(n.file,n.args,n.options)}catch(u){throw co({error:u,stdout:"",stderr:"",all:"",command:i,escapedCommand:r,parsed:n,timedOut:!1,isCanceled:!1,killed:!1})}let s=Oi(n.options,o.stdout,o.error),l=Oi(n.options,o.stderr,o.error);if(o.error||o.status!==0||o.signal!==null){let u=co({stdout:s,stderr:l,error:o.error,signal:o.signal,exitCode:o.status,command:i,escapedCommand:r,parsed:n,timedOut:o.error&&o.error.code==="ETIMEDOUT",isCanceled:!1,killed:o.signal!==null});if(!n.options.reject)return u;throw u}return{command:i,escapedCommand:r,exitCode:0,stdout:s,stderr:l,failed:!1,timedOut:!1,isCanceled:!1,killed:!1}};Pn.exports.command=(e,t)=>{let[a,...n]=iv(e);return uo(a,n,t)};Pn.exports.commandSync=(e,t)=>{let[a,...n]=iv(e);return uo.sync(a,n,t)};Pn.exports.node=(e,t,a={})=>{t&&!Array.isArray(t)&&typeof t=="object"&&(a=t,t=[]);let n=av.node(a),i=process.execArgv.filter(s=>!s.startsWith("--inspect")),{nodePath:r=process.execPath,nodeOptions:o=i}=a;return uo(r,[...o,e,...Array.isArray(t)?t:[]],{...a,stdin:void 0,stdout:void 0,stderr:void 0,stdio:n,shell:!1})}});var o0=O((Eo,r0)=>{"use strict";Eo.__esModule=!0;Eo.default={scheme:"threezerotwofour",author:"jan t. sott (http://github.com/idleberg)",base00:"#090300",base01:"#3a3432",base02:"#4a4543",base03:"#5c5855",base04:"#807d7c",base05:"#a5a2a2",base06:"#d6d5d4",base07:"#f7f7f7",base08:"#db2d20",base09:"#e8bbd0",base0A:"#fded02",base0B:"#01a252",base0C:"#b5e4f4",base0D:"#01a0e4",base0E:"#a16a94",base0F:"#cdab53"};r0.exports=Eo.default});var l0=O((So,s0)=>{"use strict";So.__esModule=!0;So.default={scheme:"apathy",author:"jannik siebert (https://github.com/janniks)",base00:"#031A16",base01:"#0B342D",base02:"#184E45",base03:"#2B685E",base04:"#5F9C92",base05:"#81B5AC",base06:"#A7CEC8",base07:"#D2E7E4",base08:"#3E9688",base09:"#3E7996",base0A:"#3E4C96",base0B:"#883E96",base0C:"#963E4C",base0D:"#96883E",base0E:"#4C963E",base0F:"#3E965B"};s0.exports=So.default});var u0=O((Co,c0)=>{"use strict";Co.__esModule=!0;Co.default={scheme:"ashes",author:"jannik siebert (https://github.com/janniks)",base00:"#1C2023",base01:"#393F45",base02:"#565E65",base03:"#747C84",base04:"#ADB3BA",base05:"#C7CCD1",base06:"#DFE2E5",base07:"#F3F4F5",base08:"#C7AE95",base09:"#C7C795",base0A:"#AEC795",base0B:"#95C7AE",base0C:"#95AEC7",base0D:"#AE95C7",base0E:"#C795AE",base0F:"#C79595"};c0.exports=Co.default});var d0=O((Ao,p0)=>{"use strict";Ao.__esModule=!0;Ao.default={scheme:"atelier dune",author:"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune)",base00:"#20201d",base01:"#292824",base02:"#6e6b5e",base03:"#7d7a68",base04:"#999580",base05:"#a6a28c",base06:"#e8e4cf",base07:"#fefbec",base08:"#d73737",base09:"#b65611",base0A:"#cfb017",base0B:"#60ac39",base0C:"#1fad83",base0D:"#6684e1",base0E:"#b854d4",base0F:"#d43552"};p0.exports=Ao.default});var m0=O((Io,f0)=>{"use strict";Io.__esModule=!0;Io.default={scheme:"atelier forest",author:"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest)",base00:"#1b1918",base01:"#2c2421",base02:"#68615e",base03:"#766e6b",base04:"#9c9491",base05:"#a8a19f",base06:"#e6e2e0",base07:"#f1efee",base08:"#f22c40",base09:"#df5320",base0A:"#d5911a",base0B:"#5ab738",base0C:"#00ad9c",base0D:"#407ee7",base0E:"#6666ea",base0F:"#c33ff3"};f0.exports=Io.default});var v0=O((_o,h0)=>{"use strict";_o.__esModule=!0;_o.default={scheme:"atelier heath",author:"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath)",base00:"#1b181b",base01:"#292329",base02:"#695d69",base03:"#776977",base04:"#9e8f9e",base05:"#ab9bab",base06:"#d8cad8",base07:"#f7f3f7",base08:"#ca402b",base09:"#a65926",base0A:"#bb8a35",base0B:"#379a37",base0C:"#159393",base0D:"#516aec",base0E:"#7b59c0",base0F:"#cc33cc"};h0.exports=_o.default});var g0=O((To,b0)=>{"use strict";To.__esModule=!0;To.default={scheme:"atelier lakeside",author:"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside/)",base00:"#161b1d",base01:"#1f292e",base02:"#516d7b",base03:"#5a7b8c",base04:"#7195a8",base05:"#7ea2b4",base06:"#c1e4f6",base07:"#ebf8ff",base08:"#d22d72",base09:"#935c25",base0A:"#8a8a0f",base0B:"#568c3b",base0C:"#2d8f6f",base0D:"#257fad",base0E:"#5d5db1",base0F:"#b72dd2"};b0.exports=To.default});var y0=O((ko,x0)=>{"use strict";ko.__esModule=!0;ko.default={scheme:"atelier seaside",author:"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside/)",base00:"#131513",base01:"#242924",base02:"#5e6e5e",base03:"#687d68",base04:"#809980",base05:"#8ca68c",base06:"#cfe8cf",base07:"#f0fff0",base08:"#e6193c",base09:"#87711d",base0A:"#c3c322",base0B:"#29a329",base0C:"#1999b3",base0D:"#3d62f5",base0E:"#ad2bee",base0F:"#e619c3"};x0.exports=ko.default});var E0=O((Fo,w0)=>{"use strict";Fo.__esModule=!0;Fo.default={scheme:"bespin",author:"jan t. sott",base00:"#28211c",base01:"#36312e",base02:"#5e5d5c",base03:"#666666",base04:"#797977",base05:"#8a8986",base06:"#9d9b97",base07:"#baae9e",base08:"#cf6a4c",base09:"#cf7d34",base0A:"#f9ee98",base0B:"#54be0d",base0C:"#afc4db",base0D:"#5ea6ea",base0E:"#9b859d",base0F:"#937121"};w0.exports=Fo.default});var C0=O((Po,S0)=>{"use strict";Po.__esModule=!0;Po.default={scheme:"brewer",author:"timoth\xE9e poisot (http://github.com/tpoisot)",base00:"#0c0d0e",base01:"#2e2f30",base02:"#515253",base03:"#737475",base04:"#959697",base05:"#b7b8b9",base06:"#dadbdc",base07:"#fcfdfe",base08:"#e31a1c",base09:"#e6550d",base0A:"#dca060",base0B:"#31a354",base0C:"#80b1d3",base0D:"#3182bd",base0E:"#756bb1",base0F:"#b15928"};S0.exports=Po.default});var I0=O((Oo,A0)=>{"use strict";Oo.__esModule=!0;Oo.default={scheme:"bright",author:"chris kempson (http://chriskempson.com)",base00:"#000000",base01:"#303030",base02:"#505050",base03:"#b0b0b0",base04:"#d0d0d0",base05:"#e0e0e0",base06:"#f5f5f5",base07:"#ffffff",base08:"#fb0120",base09:"#fc6d24",base0A:"#fda331",base0B:"#a1c659",base0C:"#76c7b7",base0D:"#6fb3d2",base0E:"#d381c3",base0F:"#be643c"};A0.exports=Oo.default});var T0=O((Ro,_0)=>{"use strict";Ro.__esModule=!0;Ro.default={scheme:"chalk",author:"chris kempson (http://chriskempson.com)",base00:"#151515",base01:"#202020",base02:"#303030",base03:"#505050",base04:"#b0b0b0",base05:"#d0d0d0",base06:"#e0e0e0",base07:"#f5f5f5",base08:"#fb9fb1",base09:"#eda987",base0A:"#ddb26f",base0B:"#acc267",base0C:"#12cfc0",base0D:"#6fc2ef",base0E:"#e1a3ee",base0F:"#deaf8f"};_0.exports=Ro.default});var F0=O((Bo,k0)=>{"use strict";Bo.__esModule=!0;Bo.default={scheme:"codeschool",author:"brettof86",base00:"#232c31",base01:"#1c3657",base02:"#2a343a",base03:"#3f4944",base04:"#84898c",base05:"#9ea7a6",base06:"#a7cfa3",base07:"#b5d8f6",base08:"#2a5491",base09:"#43820d",base0A:"#a03b1e",base0B:"#237986",base0C:"#b02f30",base0D:"#484d79",base0E:"#c59820",base0F:"#c98344"};k0.exports=Bo.default});var O0=O((No,P0)=>{"use strict";No.__esModule=!0;No.default={scheme:"colors",author:"mrmrs (http://clrs.cc)",base00:"#111111",base01:"#333333",base02:"#555555",base03:"#777777",base04:"#999999",base05:"#bbbbbb",base06:"#dddddd",base07:"#ffffff",base08:"#ff4136",base09:"#ff851b",base0A:"#ffdc00",base0B:"#2ecc40",base0C:"#7fdbff",base0D:"#0074d9",base0E:"#b10dc9",base0F:"#85144b"};P0.exports=No.default});var B0=O((jo,R0)=>{"use strict";jo.__esModule=!0;jo.default={scheme:"default",author:"chris kempson (http://chriskempson.com)",base00:"#181818",base01:"#282828",base02:"#383838",base03:"#585858",base04:"#b8b8b8",base05:"#d8d8d8",base06:"#e8e8e8",base07:"#f8f8f8",base08:"#ab4642",base09:"#dc9656",base0A:"#f7ca88",base0B:"#a1b56c",base0C:"#86c1b9",base0D:"#7cafc2",base0E:"#ba8baf",base0F:"#a16946"};R0.exports=jo.default});var j0=O((Lo,N0)=>{"use strict";Lo.__esModule=!0;Lo.default={scheme:"eighties",author:"chris kempson (http://chriskempson.com)",base00:"#2d2d2d",base01:"#393939",base02:"#515151",base03:"#747369",base04:"#a09f93",base05:"#d3d0c8",base06:"#e8e6df",base07:"#f2f0ec",base08:"#f2777a",base09:"#f99157",base0A:"#ffcc66",base0B:"#99cc99",base0C:"#66cccc",base0D:"#6699cc",base0E:"#cc99cc",base0F:"#d27b53"};N0.exports=Lo.default});var M0=O((Mo,L0)=>{"use strict";Mo.__esModule=!0;Mo.default={scheme:"embers",author:"jannik siebert (https://github.com/janniks)",base00:"#16130F",base01:"#2C2620",base02:"#433B32",base03:"#5A5047",base04:"#8A8075",base05:"#A39A90",base06:"#BEB6AE",base07:"#DBD6D1",base08:"#826D57",base09:"#828257",base0A:"#6D8257",base0B:"#57826D",base0C:"#576D82",base0D:"#6D5782",base0E:"#82576D",base0F:"#825757"};L0.exports=Mo.default});var z0=O((Do,D0)=>{"use strict";Do.__esModule=!0;Do.default={scheme:"flat",author:"chris kempson (http://chriskempson.com)",base00:"#2C3E50",base01:"#34495E",base02:"#7F8C8D",base03:"#95A5A6",base04:"#BDC3C7",base05:"#e0e0e0",base06:"#f5f5f5",base07:"#ECF0F1",base08:"#E74C3C",base09:"#E67E22",base0A:"#F1C40F",base0B:"#2ECC71",base0C:"#1ABC9C",base0D:"#3498DB",base0E:"#9B59B6",base0F:"#be643c"};D0.exports=Do.default});var H0=O((zo,G0)=>{"use strict";zo.__esModule=!0;zo.default={scheme:"google",author:"seth wright (http://sethawright.com)",base00:"#1d1f21",base01:"#282a2e",base02:"#373b41",base03:"#969896",base04:"#b4b7b4",base05:"#c5c8c6",base06:"#e0e0e0",base07:"#ffffff",base08:"#CC342B",base09:"#F96A38",base0A:"#FBA922",base0B:"#198844",base0C:"#3971ED",base0D:"#3971ED",base0E:"#A36AC7",base0F:"#3971ED"};G0.exports=zo.default});var V0=O((Go,W0)=>{"use strict";Go.__esModule=!0;Go.default={scheme:"grayscale",author:"alexandre gavioli (https://github.com/alexx2/)",base00:"#101010",base01:"#252525",base02:"#464646",base03:"#525252",base04:"#ababab",base05:"#b9b9b9",base06:"#e3e3e3",base07:"#f7f7f7",base08:"#7c7c7c",base09:"#999999",base0A:"#a0a0a0",base0B:"#8e8e8e",base0C:"#868686",base0D:"#686868",base0E:"#747474",base0F:"#5e5e5e"};W0.exports=Go.default});var J0=O((Ho,U0)=>{"use strict";Ho.__esModule=!0;Ho.default={scheme:"green screen",author:"chris kempson (http://chriskempson.com)",base00:"#001100",base01:"#003300",base02:"#005500",base03:"#007700",base04:"#009900",base05:"#00bb00",base06:"#00dd00",base07:"#00ff00",base08:"#007700",base09:"#009900",base0A:"#007700",base0B:"#00bb00",base0C:"#005500",base0D:"#009900",base0E:"#00bb00",base0F:"#005500"};U0.exports=Ho.default});var q0=O((Wo,Z0)=>{"use strict";Wo.__esModule=!0;Wo.default={scheme:"harmonic16",author:"jannik siebert (https://github.com/janniks)",base00:"#0b1c2c",base01:"#223b54",base02:"#405c79",base03:"#627e99",base04:"#aabcce",base05:"#cbd6e2",base06:"#e5ebf1",base07:"#f7f9fb",base08:"#bf8b56",base09:"#bfbf56",base0A:"#8bbf56",base0B:"#56bf8b",base0C:"#568bbf",base0D:"#8b56bf",base0E:"#bf568b",base0F:"#bf5656"};Z0.exports=Wo.default});var $0=O((Vo,X0)=>{"use strict";Vo.__esModule=!0;Vo.default={scheme:"hopscotch",author:"jan t. sott",base00:"#322931",base01:"#433b42",base02:"#5c545b",base03:"#797379",base04:"#989498",base05:"#b9b5b8",base06:"#d5d3d5",base07:"#ffffff",base08:"#dd464c",base09:"#fd8b19",base0A:"#fdcc59",base0B:"#8fc13e",base0C:"#149b93",base0D:"#1290bf",base0E:"#c85e7c",base0F:"#b33508"};X0.exports=Vo.default});var K0=O((Uo,Y0)=>{"use strict";Uo.__esModule=!0;Uo.default={scheme:"isotope",author:"jan t. sott",base00:"#000000",base01:"#404040",base02:"#606060",base03:"#808080",base04:"#c0c0c0",base05:"#d0d0d0",base06:"#e0e0e0",base07:"#ffffff",base08:"#ff0000",base09:"#ff9900",base0A:"#ff0099",base0B:"#33ff00",base0C:"#00ffff",base0D:"#0066ff",base0E:"#cc00ff",base0F:"#3300ff"};Y0.exports=Uo.default});var eb=O((Jo,Q0)=>{"use strict";Jo.__esModule=!0;Jo.default={scheme:"marrakesh",author:"alexandre gavioli (http://github.com/alexx2/)",base00:"#201602",base01:"#302e00",base02:"#5f5b17",base03:"#6c6823",base04:"#86813b",base05:"#948e48",base06:"#ccc37a",base07:"#faf0a5",base08:"#c35359",base09:"#b36144",base0A:"#a88339",base0B:"#18974e",base0C:"#75a738",base0D:"#477ca1",base0E:"#8868b3",base0F:"#b3588e"};Q0.exports=Jo.default});var ab=O((Zo,tb)=>{"use strict";Zo.__esModule=!0;Zo.default={scheme:"mocha",author:"chris kempson (http://chriskempson.com)",base00:"#3B3228",base01:"#534636",base02:"#645240",base03:"#7e705a",base04:"#b8afad",base05:"#d0c8c6",base06:"#e9e1dd",base07:"#f5eeeb",base08:"#cb6077",base09:"#d28b71",base0A:"#f4bc87",base0B:"#beb55b",base0C:"#7bbda4",base0D:"#8ab3b5",base0E:"#a89bb9",base0F:"#bb9584"};tb.exports=Zo.default});var ib=O((qo,nb)=>{"use strict";qo.__esModule=!0;qo.default={scheme:"monokai",author:"wimer hazenberg (http://www.monokai.nl)",base00:"#272822",base01:"#383830",base02:"#49483e",base03:"#75715e",base04:"#a59f85",base05:"#f8f8f2",base06:"#f5f4f1",base07:"#f9f8f5",base08:"#f92672",base09:"#fd971f",base0A:"#f4bf75",base0B:"#a6e22e",base0C:"#a1efe4",base0D:"#66d9ef",base0E:"#ae81ff",base0F:"#cc6633"};nb.exports=qo.default});var ob=O((Xo,rb)=>{"use strict";Xo.__esModule=!0;Xo.default={scheme:"ocean",author:"chris kempson (http://chriskempson.com)",base00:"#2b303b",base01:"#343d46",base02:"#4f5b66",base03:"#65737e",base04:"#a7adba",base05:"#c0c5ce",base06:"#dfe1e8",base07:"#eff1f5",base08:"#bf616a",base09:"#d08770",base0A:"#ebcb8b",base0B:"#a3be8c",base0C:"#96b5b4",base0D:"#8fa1b3",base0E:"#b48ead",base0F:"#ab7967"};rb.exports=Xo.default});var lb=O(($o,sb)=>{"use strict";$o.__esModule=!0;$o.default={scheme:"paraiso",author:"jan t. sott",base00:"#2f1e2e",base01:"#41323f",base02:"#4f424c",base03:"#776e71",base04:"#8d8687",base05:"#a39e9b",base06:"#b9b6b0",base07:"#e7e9db",base08:"#ef6155",base09:"#f99b15",base0A:"#fec418",base0B:"#48b685",base0C:"#5bc4bf",base0D:"#06b6ef",base0E:"#815ba4",base0F:"#e96ba8"};sb.exports=$o.default});var ub=O((Yo,cb)=>{"use strict";Yo.__esModule=!0;Yo.default={scheme:"pop",author:"chris kempson (http://chriskempson.com)",base00:"#000000",base01:"#202020",base02:"#303030",base03:"#505050",base04:"#b0b0b0",base05:"#d0d0d0",base06:"#e0e0e0",base07:"#ffffff",base08:"#eb008a",base09:"#f29333",base0A:"#f8ca12",base0B:"#37b349",base0C:"#00aabb",base0D:"#0e5a94",base0E:"#b31e8d",base0F:"#7a2d00"};cb.exports=Yo.default});var db=O((Ko,pb)=>{"use strict";Ko.__esModule=!0;Ko.default={scheme:"railscasts",author:"ryan bates (http://railscasts.com)",base00:"#2b2b2b",base01:"#272935",base02:"#3a4055",base03:"#5a647e",base04:"#d4cfc9",base05:"#e6e1dc",base06:"#f4f1ed",base07:"#f9f7f3",base08:"#da4939",base09:"#cc7833",base0A:"#ffc66d",base0B:"#a5c261",base0C:"#519f50",base0D:"#6d9cbe",base0E:"#b6b3eb",base0F:"#bc9458"};pb.exports=Ko.default});var mb=O((Qo,fb)=>{"use strict";Qo.__esModule=!0;Qo.default={scheme:"shapeshifter",author:"tyler benziger (http://tybenz.com)",base00:"#000000",base01:"#040404",base02:"#102015",base03:"#343434",base04:"#555555",base05:"#ababab",base06:"#e0e0e0",base07:"#f9f9f9",base08:"#e92f2f",base09:"#e09448",base0A:"#dddd13",base0B:"#0ed839",base0C:"#23edda",base0D:"#3b48e3",base0E:"#f996e2",base0F:"#69542d"};fb.exports=Qo.default});var vb=O((es,hb)=>{"use strict";es.__esModule=!0;es.default={scheme:"solarized",author:"ethan schoonover (http://ethanschoonover.com/solarized)",base00:"#002b36",base01:"#073642",base02:"#586e75",base03:"#657b83",base04:"#839496",base05:"#93a1a1",base06:"#eee8d5",base07:"#fdf6e3",base08:"#dc322f",base09:"#cb4b16",base0A:"#b58900",base0B:"#859900",base0C:"#2aa198",base0D:"#268bd2",base0E:"#6c71c4",base0F:"#d33682"};hb.exports=es.default});var gb=O((ts,bb)=>{"use strict";ts.__esModule=!0;ts.default={scheme:"summerfruit",author:"christopher corley (http://cscorley.github.io/)",base00:"#151515",base01:"#202020",base02:"#303030",base03:"#505050",base04:"#B0B0B0",base05:"#D0D0D0",base06:"#E0E0E0",base07:"#FFFFFF",base08:"#FF0086",base09:"#FD8900",base0A:"#ABA800",base0B:"#00C918",base0C:"#1faaaa",base0D:"#3777E6",base0E:"#AD00A1",base0F:"#cc6633"};bb.exports=ts.default});var yb=O((as,xb)=>{"use strict";as.__esModule=!0;as.default={scheme:"tomorrow",author:"chris kempson (http://chriskempson.com)",base00:"#1d1f21",base01:"#282a2e",base02:"#373b41",base03:"#969896",base04:"#b4b7b4",base05:"#c5c8c6",base06:"#e0e0e0",base07:"#ffffff",base08:"#cc6666",base09:"#de935f",base0A:"#f0c674",base0B:"#b5bd68",base0C:"#8abeb7",base0D:"#81a2be",base0E:"#b294bb",base0F:"#a3685a"};xb.exports=as.default});var Eb=O((ns,wb)=>{"use strict";ns.__esModule=!0;ns.default={scheme:"london tube",author:"jan t. sott",base00:"#231f20",base01:"#1c3f95",base02:"#5a5758",base03:"#737171",base04:"#959ca1",base05:"#d9d8d8",base06:"#e7e7e8",base07:"#ffffff",base08:"#ee2e24",base09:"#f386a1",base0A:"#ffd204",base0B:"#00853e",base0C:"#85cebc",base0D:"#009ddc",base0E:"#98005d",base0F:"#b06110"};wb.exports=ns.default});var Cb=O((is,Sb)=>{"use strict";is.__esModule=!0;is.default={scheme:"twilight",author:"david hart (http://hart-dev.com)",base00:"#1e1e1e",base01:"#323537",base02:"#464b50",base03:"#5f5a60",base04:"#838184",base05:"#a7a7a7",base06:"#c3c3c3",base07:"#ffffff",base08:"#cf6a4c",base09:"#cda869",base0A:"#f9ee98",base0B:"#8f9d6a",base0C:"#afc4db",base0D:"#7587a6",base0E:"#9b859d",base0F:"#9b703f"};Sb.exports=is.default});var Ab=O(de=>{"use strict";de.__esModule=!0;function me(e){return e&&e.__esModule?e.default:e}var Xk=o0();de.threezerotwofour=me(Xk);var $k=l0();de.apathy=me($k);var Yk=u0();de.ashes=me(Yk);var Kk=d0();de.atelierDune=me(Kk);var Qk=m0();de.atelierForest=me(Qk);var e5=v0();de.atelierHeath=me(e5);var t5=g0();de.atelierLakeside=me(t5);var a5=y0();de.atelierSeaside=me(a5);var n5=E0();de.bespin=me(n5);var i5=C0();de.brewer=me(i5);var r5=I0();de.bright=me(r5);var o5=T0();de.chalk=me(o5);var s5=F0();de.codeschool=me(s5);var l5=O0();de.colors=me(l5);var c5=B0();de.default=me(c5);var u5=j0();de.eighties=me(u5);var p5=M0();de.embers=me(p5);var d5=z0();de.flat=me(d5);var f5=H0();de.google=me(f5);var m5=V0();de.grayscale=me(m5);var h5=J0();de.greenscreen=me(h5);var v5=q0();de.harmonic=me(v5);var b5=$0();de.hopscotch=me(b5);var g5=K0();de.isotope=me(g5);var x5=eb();de.marrakesh=me(x5);var y5=ab();de.mocha=me(y5);var w5=ib();de.monokai=me(w5);var E5=ob();de.ocean=me(E5);var S5=lb();de.paraiso=me(S5);var C5=ub();de.pop=me(C5);var A5=db();de.railscasts=me(A5);var I5=mb();de.shapeshifter=me(I5);var _5=vb();de.solarized=me(_5);var T5=gb();de.summerfruit=me(T5);var k5=yb();de.tomorrow=me(k5);var F5=Eb();de.tube=me(F5);var P5=Cb();de.twilight=me(P5)});var Ru=O((E8,Ib)=>{"use strict";Ib.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var Tb=O((S8,_b)=>{_b.exports=function(t){return!t||typeof t=="string"?!1:t instanceof Array||Array.isArray(t)||t.length>=0&&(t.splice instanceof Function||Object.getOwnPropertyDescriptor(t,t.length-1)&&t.constructor.name!=="String")}});var Pb=O((C8,Fb)=>{"use strict";var O5=Tb(),R5=Array.prototype.concat,B5=Array.prototype.slice,kb=Fb.exports=function(t){for(var a=[],n=0,i=t.length;n<i;n++){var r=t[n];O5(r)?a=R5.call(a,B5.call(r)):a.push(r)}return a};kb.wrap=function(e){return function(){return e(kb(arguments))}}});var Nb=O((A8,Bb)=>{var Hi=Ru(),Wi=Pb(),Ob=Object.hasOwnProperty,Rb=Object.create(null);for(rs in Hi)Ob.call(Hi,rs)&&(Rb[Hi[rs]]=rs);var rs,Tt=Bb.exports={to:{},get:{}};Tt.get=function(e){var t=e.substring(0,3).toLowerCase(),a,n;switch(t){case"hsl":a=Tt.get.hsl(e),n="hsl";break;case"hwb":a=Tt.get.hwb(e),n="hwb";break;default:a=Tt.get.rgb(e),n="rgb";break}return a?{model:n,value:a}:null};Tt.get.rgb=function(e){if(!e)return null;var t=/^#([a-f0-9]{3,4})$/i,a=/^#([a-f0-9]{6})([a-f0-9]{2})?$/i,n=/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/,i=/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/,r=/^(\w+)$/,o=[0,0,0,1],s,l,u;if(s=e.match(a)){for(u=s[2],s=s[1],l=0;l<3;l++){var c=l*2;o[l]=parseInt(s.slice(c,c+2),16)}u&&(o[3]=parseInt(u,16)/255)}else if(s=e.match(t)){for(s=s[1],u=s[3],l=0;l<3;l++)o[l]=parseInt(s[l]+s[l],16);u&&(o[3]=parseInt(u+u,16)/255)}else if(s=e.match(n)){for(l=0;l<3;l++)o[l]=parseInt(s[l+1],0);s[4]&&(s[5]?o[3]=parseFloat(s[4])*.01:o[3]=parseFloat(s[4]))}else if(s=e.match(i)){for(l=0;l<3;l++)o[l]=Math.round(parseFloat(s[l+1])*2.55);s[4]&&(s[5]?o[3]=parseFloat(s[4])*.01:o[3]=parseFloat(s[4]))}else return(s=e.match(r))?s[1]==="transparent"?[0,0,0,0]:Ob.call(Hi,s[1])?(o=Hi[s[1]],o[3]=1,o):null:null;for(l=0;l<3;l++)o[l]=Fa(o[l],0,255);return o[3]=Fa(o[3],0,1),o};Tt.get.hsl=function(e){if(!e)return null;var t=/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/,a=e.match(t);if(a){var n=parseFloat(a[4]),i=(parseFloat(a[1])%360+360)%360,r=Fa(parseFloat(a[2]),0,100),o=Fa(parseFloat(a[3]),0,100),s=Fa(isNaN(n)?1:n,0,1);return[i,r,o,s]}return null};Tt.get.hwb=function(e){if(!e)return null;var t=/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/,a=e.match(t);if(a){var n=parseFloat(a[4]),i=(parseFloat(a[1])%360+360)%360,r=Fa(parseFloat(a[2]),0,100),o=Fa(parseFloat(a[3]),0,100),s=Fa(isNaN(n)?1:n,0,1);return[i,r,o,s]}return null};Tt.to.hex=function(){var e=Wi(arguments);return"#"+os(e[0])+os(e[1])+os(e[2])+(e[3]<1?os(Math.round(e[3]*255)):"")};Tt.to.rgb=function(){var e=Wi(arguments);return e.length<4||e[3]===1?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"};Tt.to.rgb.percent=function(){var e=Wi(arguments),t=Math.round(e[0]/255*100),a=Math.round(e[1]/255*100),n=Math.round(e[2]/255*100);return e.length<4||e[3]===1?"rgb("+t+"%, "+a+"%, "+n+"%)":"rgba("+t+"%, "+a+"%, "+n+"%, "+e[3]+")"};Tt.to.hsl=function(){var e=Wi(arguments);return e.length<4||e[3]===1?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"};Tt.to.hwb=function(){var e=Wi(arguments),t="";return e.length>=4&&e[3]!==1&&(t=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+t+")"};Tt.to.keyword=function(e){return Rb[e.slice(0,3)]};function Fa(e,t,a){return Math.min(Math.max(t,e),a)}function os(e){var t=Math.round(e).toString(16).toUpperCase();return t.length<2?"0"+t:t}});var Bu=O((I8,Db)=>{var Ka=Ru(),Mb={};for(ss in Ka)Ka.hasOwnProperty(ss)&&(Mb[Ka[ss]]=ss);var ss,Y=Db.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(vt in Y)if(Y.hasOwnProperty(vt)){if(!("channels"in Y[vt]))throw new Error("missing channels property: "+vt);if(!("labels"in Y[vt]))throw new Error("missing channel labels property: "+vt);if(Y[vt].labels.length!==Y[vt].channels)throw new Error("channel and label counts mismatch: "+vt);jb=Y[vt].channels,Lb=Y[vt].labels,delete Y[vt].channels,delete Y[vt].labels,Object.defineProperty(Y[vt],"channels",{value:jb}),Object.defineProperty(Y[vt],"labels",{value:Lb})}var jb,Lb,vt;Y.rgb.hsl=function(e){var t=e[0]/255,a=e[1]/255,n=e[2]/255,i=Math.min(t,a,n),r=Math.max(t,a,n),o=r-i,s,l,u;return r===i?s=0:t===r?s=(a-n)/o:a===r?s=2+(n-t)/o:n===r&&(s=4+(t-a)/o),s=Math.min(s*60,360),s<0&&(s+=360),u=(i+r)/2,r===i?l=0:u<=.5?l=o/(r+i):l=o/(2-r-i),[s,l*100,u*100]};Y.rgb.hsv=function(e){var t,a,n,i,r,o=e[0]/255,s=e[1]/255,l=e[2]/255,u=Math.max(o,s,l),c=u-Math.min(o,s,l),f=function(p){return(u-p)/6/c+1/2};return c===0?i=r=0:(r=c/u,t=f(o),a=f(s),n=f(l),o===u?i=n-a:s===u?i=1/3+t-n:l===u&&(i=2/3+a-t),i<0?i+=1:i>1&&(i-=1)),[i*360,r*100,u*100]};Y.rgb.hwb=function(e){var t=e[0],a=e[1],n=e[2],i=Y.rgb.hsl(e)[0],r=1/255*Math.min(t,Math.min(a,n));return n=1-1/255*Math.max(t,Math.max(a,n)),[i,r*100,n*100]};Y.rgb.cmyk=function(e){var t=e[0]/255,a=e[1]/255,n=e[2]/255,i,r,o,s;return s=Math.min(1-t,1-a,1-n),i=(1-t-s)/(1-s)||0,r=(1-a-s)/(1-s)||0,o=(1-n-s)/(1-s)||0,[i*100,r*100,o*100,s*100]};function N5(e,t){return Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2)+Math.pow(e[2]-t[2],2)}Y.rgb.keyword=function(e){var t=Mb[e];if(t)return t;var a=1/0,n;for(var i in Ka)if(Ka.hasOwnProperty(i)){var r=Ka[i],o=N5(e,r);o<a&&(a=o,n=i)}return n};Y.keyword.rgb=function(e){return Ka[e]};Y.rgb.xyz=function(e){var t=e[0]/255,a=e[1]/255,n=e[2]/255;t=t>.04045?Math.pow((t+.055)/1.055,2.4):t/12.92,a=a>.04045?Math.pow((a+.055)/1.055,2.4):a/12.92,n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92;var i=t*.4124+a*.3576+n*.1805,r=t*.2126+a*.7152+n*.0722,o=t*.0193+a*.1192+n*.9505;return[i*100,r*100,o*100]};Y.rgb.lab=function(e){var t=Y.rgb.xyz(e),a=t[0],n=t[1],i=t[2],r,o,s;return a/=95.047,n/=100,i/=108.883,a=a>.008856?Math.pow(a,1/3):7.787*a+16/116,n=n>.008856?Math.pow(n,1/3):7.787*n+16/116,i=i>.008856?Math.pow(i,1/3):7.787*i+16/116,r=116*n-16,o=500*(a-n),s=200*(n-i),[r,o,s]};Y.hsl.rgb=function(e){var t=e[0]/360,a=e[1]/100,n=e[2]/100,i,r,o,s,l;if(a===0)return l=n*255,[l,l,l];n<.5?r=n*(1+a):r=n+a-n*a,i=2*n-r,s=[0,0,0];for(var u=0;u<3;u++)o=t+1/3*-(u-1),o<0&&o++,o>1&&o--,6*o<1?l=i+(r-i)*6*o:2*o<1?l=r:3*o<2?l=i+(r-i)*(2/3-o)*6:l=i,s[u]=l*255;return s};Y.hsl.hsv=function(e){var t=e[0],a=e[1]/100,n=e[2]/100,i=a,r=Math.max(n,.01),o,s;return n*=2,a*=n<=1?n:2-n,i*=r<=1?r:2-r,s=(n+a)/2,o=n===0?2*i/(r+i):2*a/(n+a),[t,o*100,s*100]};Y.hsv.rgb=function(e){var t=e[0]/60,a=e[1]/100,n=e[2]/100,i=Math.floor(t)%6,r=t-Math.floor(t),o=255*n*(1-a),s=255*n*(1-a*r),l=255*n*(1-a*(1-r));switch(n*=255,i){case 0:return[n,l,o];case 1:return[s,n,o];case 2:return[o,n,l];case 3:return[o,s,n];case 4:return[l,o,n];case 5:return[n,o,s]}};Y.hsv.hsl=function(e){var t=e[0],a=e[1]/100,n=e[2]/100,i=Math.max(n,.01),r,o,s;return s=(2-a)*n,r=(2-a)*i,o=a*i,o/=r<=1?r:2-r,o=o||0,s/=2,[t,o*100,s*100]};Y.hwb.rgb=function(e){var t=e[0]/360,a=e[1]/100,n=e[2]/100,i=a+n,r,o,s,l;i>1&&(a/=i,n/=i),r=Math.floor(6*t),o=1-n,s=6*t-r,r&1&&(s=1-s),l=a+s*(o-a);var u,c,f;switch(r){default:case 6:case 0:u=o,c=l,f=a;break;case 1:u=l,c=o,f=a;break;case 2:u=a,c=o,f=l;break;case 3:u=a,c=l,f=o;break;case 4:u=l,c=a,f=o;break;case 5:u=o,c=a,f=l;break}return[u*255,c*255,f*255]};Y.cmyk.rgb=function(e){var t=e[0]/100,a=e[1]/100,n=e[2]/100,i=e[3]/100,r,o,s;return r=1-Math.min(1,t*(1-i)+i),o=1-Math.min(1,a*(1-i)+i),s=1-Math.min(1,n*(1-i)+i),[r*255,o*255,s*255]};Y.xyz.rgb=function(e){var t=e[0]/100,a=e[1]/100,n=e[2]/100,i,r,o;return i=t*3.2406+a*-1.5372+n*-.4986,r=t*-.9689+a*1.8758+n*.0415,o=t*.0557+a*-.204+n*1.057,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*12.92,r=r>.0031308?1.055*Math.pow(r,1/2.4)-.055:r*12.92,o=o>.0031308?1.055*Math.pow(o,1/2.4)-.055:o*12.92,i=Math.min(Math.max(0,i),1),r=Math.min(Math.max(0,r),1),o=Math.min(Math.max(0,o),1),[i*255,r*255,o*255]};Y.xyz.lab=function(e){var t=e[0],a=e[1],n=e[2],i,r,o;return t/=95.047,a/=100,n/=108.883,t=t>.008856?Math.pow(t,1/3):7.787*t+16/116,a=a>.008856?Math.pow(a,1/3):7.787*a+16/116,n=n>.008856?Math.pow(n,1/3):7.787*n+16/116,i=116*a-16,r=500*(t-a),o=200*(a-n),[i,r,o]};Y.lab.xyz=function(e){var t=e[0],a=e[1],n=e[2],i,r,o;r=(t+16)/116,i=a/500+r,o=r-n/200;var s=Math.pow(r,3),l=Math.pow(i,3),u=Math.pow(o,3);return r=s>.008856?s:(r-16/116)/7.787,i=l>.008856?l:(i-16/116)/7.787,o=u>.008856?u:(o-16/116)/7.787,i*=95.047,r*=100,o*=108.883,[i,r,o]};Y.lab.lch=function(e){var t=e[0],a=e[1],n=e[2],i,r,o;return i=Math.atan2(n,a),r=i*360/2/Math.PI,r<0&&(r+=360),o=Math.sqrt(a*a+n*n),[t,o,r]};Y.lch.lab=function(e){var t=e[0],a=e[1],n=e[2],i,r,o;return o=n/360*2*Math.PI,i=a*Math.cos(o),r=a*Math.sin(o),[t,i,r]};Y.rgb.ansi16=function(e){var t=e[0],a=e[1],n=e[2],i=1 in arguments?arguments[1]:Y.rgb.hsv(e)[2];if(i=Math.round(i/50),i===0)return 30;var r=30+(Math.round(n/255)<<2|Math.round(a/255)<<1|Math.round(t/255));return i===2&&(r+=60),r};Y.hsv.ansi16=function(e){return Y.rgb.ansi16(Y.hsv.rgb(e),e[2])};Y.rgb.ansi256=function(e){var t=e[0],a=e[1],n=e[2];if(t===a&&a===n)return t<8?16:t>248?231:Math.round((t-8)/247*24)+232;var i=16+36*Math.round(t/255*5)+6*Math.round(a/255*5)+Math.round(n/255*5);return i};Y.ansi16.rgb=function(e){var t=e%10;if(t===0||t===7)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];var a=(~~(e>50)+1)*.5,n=(t&1)*a*255,i=(t>>1&1)*a*255,r=(t>>2&1)*a*255;return[n,i,r]};Y.ansi256.rgb=function(e){if(e>=232){var t=(e-232)*10+8;return[t,t,t]}e-=16;var a,n=Math.floor(e/36)/5*255,i=Math.floor((a=e%36)/6)/5*255,r=a%6/5*255;return[n,i,r]};Y.rgb.hex=function(e){var t=((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255),a=t.toString(16).toUpperCase();return"000000".substring(a.length)+a};Y.hex.rgb=function(e){var t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];var a=t[0];t[0].length===3&&(a=a.split("").map(function(s){return s+s}).join(""));var n=parseInt(a,16),i=n>>16&255,r=n>>8&255,o=n&255;return[i,r,o]};Y.rgb.hcg=function(e){var t=e[0]/255,a=e[1]/255,n=e[2]/255,i=Math.max(Math.max(t,a),n),r=Math.min(Math.min(t,a),n),o=i-r,s,l;return o<1?s=r/(1-o):s=0,o<=0?l=0:i===t?l=(a-n)/o%6:i===a?l=2+(n-t)/o:l=4+(t-a)/o+4,l/=6,l%=1,[l*360,o*100,s*100]};Y.hsl.hcg=function(e){var t=e[1]/100,a=e[2]/100,n=1,i=0;return a<.5?n=2*t*a:n=2*t*(1-a),n<1&&(i=(a-.5*n)/(1-n)),[e[0],n*100,i*100]};Y.hsv.hcg=function(e){var t=e[1]/100,a=e[2]/100,n=t*a,i=0;return n<1&&(i=(a-n)/(1-n)),[e[0],n*100,i*100]};Y.hcg.rgb=function(e){var t=e[0]/360,a=e[1]/100,n=e[2]/100;if(a===0)return[n*255,n*255,n*255];var i=[0,0,0],r=t%1*6,o=r%1,s=1-o,l=0;switch(Math.floor(r)){case 0:i[0]=1,i[1]=o,i[2]=0;break;case 1:i[0]=s,i[1]=1,i[2]=0;break;case 2:i[0]=0,i[1]=1,i[2]=o;break;case 3:i[0]=0,i[1]=s,i[2]=1;break;case 4:i[0]=o,i[1]=0,i[2]=1;break;default:i[0]=1,i[1]=0,i[2]=s}return l=(1-a)*n,[(a*i[0]+l)*255,(a*i[1]+l)*255,(a*i[2]+l)*255]};Y.hcg.hsv=function(e){var t=e[1]/100,a=e[2]/100,n=t+a*(1-t),i=0;return n>0&&(i=t/n),[e[0],i*100,n*100]};Y.hcg.hsl=function(e){var t=e[1]/100,a=e[2]/100,n=a*(1-t)+.5*t,i=0;return n>0&&n<.5?i=t/(2*n):n>=.5&&n<1&&(i=t/(2*(1-n))),[e[0],i*100,n*100]};Y.hcg.hwb=function(e){var t=e[1]/100,a=e[2]/100,n=t+a*(1-t);return[e[0],(n-t)*100,(1-n)*100]};Y.hwb.hcg=function(e){var t=e[1]/100,a=e[2]/100,n=1-a,i=n-t,r=0;return i<1&&(r=(n-i)/(1-i)),[e[0],i*100,r*100]};Y.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]};Y.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]};Y.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]};Y.gray.hsl=Y.gray.hsv=function(e){return[0,0,e[0]]};Y.gray.hwb=function(e){return[0,100,e[0]]};Y.gray.cmyk=function(e){return[0,0,0,e[0]]};Y.gray.lab=function(e){return[e[0],0,0]};Y.gray.hex=function(e){var t=Math.round(e[0]/100*255)&255,a=(t<<16)+(t<<8)+t,n=a.toString(16).toUpperCase();return"000000".substring(n.length)+n};Y.rgb.gray=function(e){var t=(e[0]+e[1]+e[2])/3;return[t/255*100]}});var Gb=O((_8,zb)=>{var ls=Bu();function j5(){for(var e={},t=Object.keys(ls),a=t.length,n=0;n<a;n++)e[t[n]]={distance:-1,parent:null};return e}function L5(e){var t=j5(),a=[e];for(t[e].distance=0;a.length;)for(var n=a.pop(),i=Object.keys(ls[n]),r=i.length,o=0;o<r;o++){var s=i[o],l=t[s];l.distance===-1&&(l.distance=t[n].distance+1,l.parent=n,a.unshift(s))}return t}function M5(e,t){return function(a){return t(e(a))}}function D5(e,t){for(var a=[t[e].parent,e],n=ls[t[e].parent][e],i=t[e].parent;t[i].parent;)a.unshift(t[i].parent),n=M5(ls[t[i].parent][i],n),i=t[i].parent;return n.conversion=a,n}zb.exports=function(e){for(var t=L5(e),a={},n=Object.keys(t),i=n.length,r=0;r<i;r++){var o=n[r],s=t[o];s.parent!==null&&(a[o]=D5(o,t))}return a}});var Wb=O((T8,Hb)=>{var Nu=Bu(),z5=Gb(),Ln={},G5=Object.keys(Nu);function H5(e){var t=function(a){return a==null?a:(arguments.length>1&&(a=Array.prototype.slice.call(arguments)),e(a))};return"conversion"in e&&(t.conversion=e.conversion),t}function W5(e){var t=function(a){if(a==null)return a;arguments.length>1&&(a=Array.prototype.slice.call(arguments));var n=e(a);if(typeof n=="object")for(var i=n.length,r=0;r<i;r++)n[r]=Math.round(n[r]);return n};return"conversion"in e&&(t.conversion=e.conversion),t}G5.forEach(function(e){Ln[e]={},Object.defineProperty(Ln[e],"channels",{value:Nu[e].channels}),Object.defineProperty(Ln[e],"labels",{value:Nu[e].labels});var t=z5(e),a=Object.keys(t);a.forEach(function(n){var i=t[n];Ln[e][n]=W5(i),Ln[e][n].raw=H5(i)})});Hb.exports=Ln});var Jb=O((k8,Ub)=>{"use strict";var Vi=Nb(),kt=Wb(),Mu=[].slice,Vb=["keyword","gray","hex"],ju={};Object.keys(kt).forEach(function(e){ju[Mu.call(kt[e].labels).sort().join("")]=e});var cs={};function st(e,t){if(!(this instanceof st))return new st(e,t);if(t&&t in Vb&&(t=null),t&&!(t in kt))throw new Error("Unknown model: "+t);var a,n;if(e==null)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(e instanceof st)this.model=e.model,this.color=e.color.slice(),this.valpha=e.valpha;else if(typeof e=="string"){var i=Vi.get(e);if(i===null)throw new Error("Unable to parse color from string: "+e);this.model=i.model,n=kt[this.model].channels,this.color=i.value.slice(0,n),this.valpha=typeof i.value[n]=="number"?i.value[n]:1}else if(e.length){this.model=t||"rgb",n=kt[this.model].channels;var r=Mu.call(e,0,n);this.color=Lu(r,n),this.valpha=typeof e[n]=="number"?e[n]:1}else if(typeof e=="number")e&=16777215,this.model="rgb",this.color=[e>>16&255,e>>8&255,e&255],this.valpha=1;else{this.valpha=1;var o=Object.keys(e);"alpha"in e&&(o.splice(o.indexOf("alpha"),1),this.valpha=typeof e.alpha=="number"?e.alpha:0);var s=o.sort().join("");if(!(s in ju))throw new Error("Unable to parse color from object: "+JSON.stringify(e));this.model=ju[s];var l=kt[this.model].labels,u=[];for(a=0;a<l.length;a++)u.push(e[l[a]]);this.color=Lu(u)}if(cs[this.model])for(n=kt[this.model].channels,a=0;a<n;a++){var c=cs[this.model][a];c&&(this.color[a]=c(this.color[a]))}this.valpha=Math.max(0,Math.min(1,this.valpha)),Object.freeze&&Object.freeze(this)}st.prototype={toString:function(){return this.string()},toJSON:function(){return this[this.model]()},string:function(e){var t=this.model in Vi.to?this:this.rgb();t=t.round(typeof e=="number"?e:1);var a=t.valpha===1?t.color:t.color.concat(this.valpha);return Vi.to[t.model](a)},percentString:function(e){var t=this.rgb().round(typeof e=="number"?e:1),a=t.valpha===1?t.color:t.color.concat(this.valpha);return Vi.to.rgb.percent(a)},array:function(){return this.valpha===1?this.color.slice():this.color.concat(this.valpha)},object:function(){for(var e={},t=kt[this.model].channels,a=kt[this.model].labels,n=0;n<t;n++)e[a[n]]=this.color[n];return this.valpha!==1&&(e.alpha=this.valpha),e},unitArray:function(){var e=this.rgb().color;return e[0]/=255,e[1]/=255,e[2]/=255,this.valpha!==1&&e.push(this.valpha),e},unitObject:function(){var e=this.rgb().object();return e.r/=255,e.g/=255,e.b/=255,this.valpha!==1&&(e.alpha=this.valpha),e},round:function(e){return e=Math.max(e||0,0),new st(this.color.map(U5(e)).concat(this.valpha),this.model)},alpha:function(e){return arguments.length?new st(this.color.concat(Math.max(0,Math.min(1,e))),this.model):this.valpha},red:Ue("rgb",0,et(255)),green:Ue("rgb",1,et(255)),blue:Ue("rgb",2,et(255)),hue:Ue(["hsl","hsv","hsl","hwb","hcg"],0,function(e){return(e%360+360)%360}),saturationl:Ue("hsl",1,et(100)),lightness:Ue("hsl",2,et(100)),saturationv:Ue("hsv",1,et(100)),value:Ue("hsv",2,et(100)),chroma:Ue("hcg",1,et(100)),gray:Ue("hcg",2,et(100)),white:Ue("hwb",1,et(100)),wblack:Ue("hwb",2,et(100)),cyan:Ue("cmyk",0,et(100)),magenta:Ue("cmyk",1,et(100)),yellow:Ue("cmyk",2,et(100)),black:Ue("cmyk",3,et(100)),x:Ue("xyz",0,et(100)),y:Ue("xyz",1,et(100)),z:Ue("xyz",2,et(100)),l:Ue("lab",0,et(100)),a:Ue("lab",1),b:Ue("lab",2),keyword:function(e){return arguments.length?new st(e):kt[this.model].keyword(this.color)},hex:function(e){return arguments.length?new st(e):Vi.to.hex(this.rgb().round().color)},rgbNumber:function(){var e=this.rgb().color;return(e[0]&255)<<16|(e[1]&255)<<8|e[2]&255},luminosity:function(){for(var e=this.rgb().color,t=[],a=0;a<e.length;a++){var n=e[a]/255;t[a]=n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4)}return .2126*t[0]+.7152*t[1]+.0722*t[2]},contrast:function(e){var t=this.luminosity(),a=e.luminosity();return t>a?(t+.05)/(a+.05):(a+.05)/(t+.05)},level:function(e){var t=this.contrast(e);return t>=7.1?"AAA":t>=4.5?"AA":""},isDark:function(){var e=this.rgb().color,t=(e[0]*299+e[1]*587+e[2]*114)/1e3;return t<128},isLight:function(){return!this.isDark()},negate:function(){for(var e=this.rgb(),t=0;t<3;t++)e.color[t]=255-e.color[t];return e},lighten:function(e){var t=this.hsl();return t.color[2]+=t.color[2]*e,t},darken:function(e){var t=this.hsl();return t.color[2]-=t.color[2]*e,t},saturate:function(e){var t=this.hsl();return t.color[1]+=t.color[1]*e,t},desaturate:function(e){var t=this.hsl();return t.color[1]-=t.color[1]*e,t},whiten:function(e){var t=this.hwb();return t.color[1]+=t.color[1]*e,t},blacken:function(e){var t=this.hwb();return t.color[2]+=t.color[2]*e,t},grayscale:function(){var e=this.rgb().color,t=e[0]*.3+e[1]*.59+e[2]*.11;return st.rgb(t,t,t)},fade:function(e){return this.alpha(this.valpha-this.valpha*e)},opaquer:function(e){return this.alpha(this.valpha+this.valpha*e)},rotate:function(e){var t=this.hsl(),a=t.color[0];return a=(a+e)%360,a=a<0?360+a:a,t.color[0]=a,t},mix:function(e,t){if(!e||!e.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e);var a=e.rgb(),n=this.rgb(),i=t===void 0?.5:t,r=2*i-1,o=a.alpha()-n.alpha(),s=((r*o===-1?r:(r+o)/(1+r*o))+1)/2,l=1-s;return st.rgb(s*a.red()+l*n.red(),s*a.green()+l*n.green(),s*a.blue()+l*n.blue(),a.alpha()*i+n.alpha()*(1-i))}};Object.keys(kt).forEach(function(e){if(Vb.indexOf(e)===-1){var t=kt[e].channels;st.prototype[e]=function(){if(this.model===e)return new st(this);if(arguments.length)return new st(arguments,e);var a=typeof arguments[t]=="number"?t:this.valpha;return new st(J5(kt[this.model][e].raw(this.color)).concat(a),e)},st[e]=function(a){return typeof a=="number"&&(a=Lu(Mu.call(arguments),t)),new st(a,e)}}});function V5(e,t){return Number(e.toFixed(t))}function U5(e){return function(t){return V5(t,e)}}function Ue(e,t,a){return e=Array.isArray(e)?e:[e],e.forEach(function(n){(cs[n]||(cs[n]=[]))[t]=a}),e=e[0],function(n){var i;return arguments.length?(a&&(n=a(n)),i=this[e](),i.color[t]=n,i):(i=this[e]().color[t],a&&(i=a(i)),i)}}function et(e){return function(t){return Math.max(0,Math.min(e,t))}}function J5(e){return Array.isArray(e)?e:[e]}function Lu(e,t){for(var a=0;a<t;a++)typeof e[a]!="number"&&(e[a]=0);return e}Ub.exports=st});var pg=O((F8,ug)=>{var Z5="Expected a function",Zb="__lodash_placeholder__",en=1,ps=2,q5=4,Qa=8,Ui=16,Mn=32,Ji=64,eg=128,X5=256,tg=512,qb=1/0,$5=9007199254740991,Y5=17976931348623157e292,Xb=0/0,K5=[["ary",eg],["bind",en],["bindKey",ps],["curry",Qa],["curryRight",Ui],["flip",tg],["partial",Mn],["partialRight",Ji],["rearg",X5]],Q5="[object Function]",eF="[object GeneratorFunction]",tF="[object Symbol]",aF=/[\\^$.*+?()[\]{}|]/g,nF=/^\s+|\s+$/g,iF=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,rF=/\{\n\/\* \[wrapped with (.+)\] \*/,oF=/,? & /,sF=/^[-+]0x[0-9a-f]+$/i,lF=/^0b[01]+$/i,cF=/^\[object .+?Constructor\]$/,uF=/^0o[0-7]+$/i,pF=/^(?:0|[1-9]\d*)$/,dF=parseInt,fF=typeof global=="object"&&global&&global.Object===Object&&global,mF=typeof self=="object"&&self&&self.Object===Object&&self,qi=fF||mF||Function("return this")();function ag(e,t,a){switch(a.length){case 0:return e.call(t);case 1:return e.call(t,a[0]);case 2:return e.call(t,a[0],a[1]);case 3:return e.call(t,a[0],a[1],a[2])}return e.apply(t,a)}function hF(e,t){for(var a=-1,n=e?e.length:0;++a<n&&t(e[a],a,e)!==!1;);return e}function vF(e,t){var a=e?e.length:0;return!!a&&gF(e,t,0)>-1}function bF(e,t,a,n){for(var i=e.length,r=a+(n?1:-1);n?r--:++r<i;)if(t(e[r],r,e))return r;return-1}function gF(e,t,a){if(t!==t)return bF(e,xF,a);for(var n=a-1,i=e.length;++n<i;)if(e[n]===t)return n;return-1}function xF(e){return e!==e}function yF(e,t){for(var a=e.length,n=0;a--;)e[a]===t&&n++;return n}function wF(e,t){return e==null?void 0:e[t]}function EF(e){var t=!1;if(e!=null&&typeof e.toString!="function")try{t=!!(e+"")}catch(a){}return t}function ng(e,t){for(var a=-1,n=e.length,i=0,r=[];++a<n;){var o=e[a];(o===t||o===Zb)&&(e[a]=Zb,r[i++]=a)}return r}var SF=Function.prototype,ig=Object.prototype,Du=qi["__core-js_shared__"],$b=function(){var e=/[^.]+$/.exec(Du&&Du.keys&&Du.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),rg=SF.toString,CF=ig.hasOwnProperty,og=ig.toString,AF=RegExp("^"+rg.call(CF).replace(aF,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),IF=Object.create,us=Math.max,_F=Math.min,Yb=function(){var e=Kb(Object,"defineProperty"),t=Kb.name;return t&&t.length>2?e:void 0}();function TF(e){return Dn(e)?IF(e):{}}function kF(e){if(!Dn(e)||zF(e))return!1;var t=VF(e)||EF(e)?AF:cF;return t.test(HF(e))}function FF(e,t,a,n){for(var i=-1,r=e.length,o=a.length,s=-1,l=t.length,u=us(r-o,0),c=Array(l+u),f=!n;++s<l;)c[s]=t[s];for(;++i<o;)(f||i<r)&&(c[a[i]]=e[i]);for(;u--;)c[s++]=e[i++];return c}function PF(e,t,a,n){for(var i=-1,r=e.length,o=-1,s=a.length,l=-1,u=t.length,c=us(r-s,0),f=Array(c+u),p=!n;++i<c;)f[i]=e[i];for(var b=i;++l<u;)f[b+l]=t[l];for(;++o<s;)(p||i<r)&&(f[b+a[o]]=e[i++]);return f}function OF(e,t){var a=-1,n=e.length;for(t||(t=Array(n));++a<n;)t[a]=e[a];return t}function RF(e,t,a){var n=t&en,i=Zi(e);function r(){var o=this&&this!==qi&&this instanceof r?i:e;return o.apply(n?a:this,arguments)}return r}function Zi(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var a=TF(e.prototype),n=e.apply(a,t);return Dn(n)?n:a}}function BF(e,t,a){var n=Zi(e);function i(){for(var r=arguments.length,o=Array(r),s=r,l=lg(i);s--;)o[s]=arguments[s];var u=r<3&&o[0]!==l&&o[r-1]!==l?[]:ng(o,l);if(r-=u.length,r<a)return sg(e,t,zu,i.placeholder,void 0,o,u,void 0,void 0,a-r);var c=this&&this!==qi&&this instanceof i?n:e;return ag(c,this,o)}return i}function zu(e,t,a,n,i,r,o,s,l,u){var c=t&eg,f=t&en,p=t&ps,b=t&(Qa|Ui),d=t&tg,h=p?void 0:Zi(e);function m(){for(var v=arguments.length,x=Array(v),E=v;E--;)x[E]=arguments[E];if(b)var g=lg(m),w=yF(x,g);if(n&&(x=FF(x,n,i,b)),r&&(x=PF(x,r,o,b)),v-=w,b&&v<u){var C=ng(x,g);return sg(e,t,zu,m.placeholder,a,x,C,s,l,u-v)}var y=f?a:this,S=p?y[e]:e;return v=x.length,s?x=GF(x,s):d&&v>1&&x.reverse(),c&&l<v&&(x.length=l),this&&this!==qi&&this instanceof m&&(S=h||Zi(S)),S.apply(y,x)}return m}function NF(e,t,a,n){var i=t&en,r=Zi(e);function o(){for(var s=-1,l=arguments.length,u=-1,c=n.length,f=Array(c+l),p=this&&this!==qi&&this instanceof o?r:e;++u<c;)f[u]=n[u];for(;l--;)f[u++]=arguments[++s];return ag(p,i?a:this,f)}return o}function sg(e,t,a,n,i,r,o,s,l,u){var c=t&Qa,f=c?o:void 0,p=c?void 0:o,b=c?r:void 0,d=c?void 0:r;t|=c?Mn:Ji,t&=~(c?Ji:Mn),t&q5||(t&=~(en|ps));var h=a(e,t,i,b,f,d,p,s,l,u);return h.placeholder=n,cg(h,e,t)}function jF(e,t,a,n,i,r,o,s){var l=t&ps;if(!l&&typeof e!="function")throw new TypeError(Z5);var u=n?n.length:0;if(u||(t&=~(Mn|Ji),n=i=void 0),o=o===void 0?o:us(Qb(o),0),s=s===void 0?s:Qb(s),u-=i?i.length:0,t&Ji){var c=n,f=i;n=i=void 0}var p=[e,t,a,n,i,c,f,r,o,s];if(e=p[0],t=p[1],a=p[2],n=p[3],i=p[4],s=p[9]=p[9]==null?l?0:e.length:us(p[9]-u,0),!s&&t&(Qa|Ui)&&(t&=~(Qa|Ui)),!t||t==en)var b=RF(e,t,a);else t==Qa||t==Ui?b=BF(e,t,s):(t==Mn||t==(en|Mn))&&!i.length?b=NF(e,t,a,n):b=zu.apply(void 0,p);return cg(b,e,t)}function lg(e){var t=e;return t.placeholder}function Kb(e,t){var a=wF(e,t);return kF(a)?a:void 0}function LF(e){var t=e.match(rF);return t?t[1].split(oF):[]}function MF(e,t){var a=t.length,n=a-1;return t[n]=(a>1?"& ":"")+t[n],t=t.join(a>2?", ":" "),e.replace(iF,`{ +`.charCodeAt(),a=typeof e=="string"?"\r":"\r".charCodeAt();return e[e.length-1]===t&&(e=e.slice(0,e.length-1)),e[e.length-1]===a&&(e=e.slice(0,e.length-1)),e}});var gh=O((FD,ki)=>{"use strict";var Ti=require("path"),vh=zc(),bh=e=>{e={cwd:process.cwd(),path:process.env[vh()],execPath:process.execPath,...e};let t,a=Ti.resolve(e.cwd),n=[];for(;t!==a;)n.push(Ti.join(a,"node_modules/.bin")),t=a,a=Ti.resolve(a,"..");let i=Ti.resolve(e.cwd,e.execPath,"..");return n.push(i),n.concat(e.path).join(Ti.delimiter)};ki.exports=bh;ki.exports.default=bh;ki.exports.env=e=>{e={env:process.env,...e};let t={...e.env},a=vh({env:t});return e.path=t[a],t[a]=ki.exports(e),t}});var yh=O((PD,Xc)=>{"use strict";var xh=(e,t)=>{for(let a of Reflect.ownKeys(t))Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(t,a));return e};Xc.exports=xh;Xc.exports.default=xh});var Eh=O((OD,eo)=>{"use strict";var NT=yh(),Qr=new WeakMap,wh=(e,t={})=>{if(typeof e!="function")throw new TypeError("Expected a function");let a,n=0,i=e.displayName||e.name||"<anonymous>",r=function(...o){if(Qr.set(r,++n),n===1)a=e.apply(this,o),e=null;else if(t.throw===!0)throw new Error(`Function \`${i}\` can only be called once`);return a};return NT(r,e),Qr.set(r,n),r};eo.exports=wh;eo.exports.default=wh;eo.exports.callCount=e=>{if(!Qr.has(e))throw new Error(`The given function \`${e.name}\` is not wrapped by the \`onetime\` package`);return Qr.get(e)}});var Sh=O(to=>{"use strict";Object.defineProperty(to,"__esModule",{value:!0});to.SIGNALS=void 0;var jT=[{name:"SIGHUP",number:1,action:"terminate",description:"Terminal closed",standard:"posix"},{name:"SIGINT",number:2,action:"terminate",description:"User interruption with CTRL-C",standard:"ansi"},{name:"SIGQUIT",number:3,action:"core",description:"User interruption with CTRL-\\",standard:"posix"},{name:"SIGILL",number:4,action:"core",description:"Invalid machine instruction",standard:"ansi"},{name:"SIGTRAP",number:5,action:"core",description:"Debugger breakpoint",standard:"posix"},{name:"SIGABRT",number:6,action:"core",description:"Aborted",standard:"ansi"},{name:"SIGIOT",number:6,action:"core",description:"Aborted",standard:"bsd"},{name:"SIGBUS",number:7,action:"core",description:"Bus error due to misaligned, non-existing address or paging error",standard:"bsd"},{name:"SIGEMT",number:7,action:"terminate",description:"Command should be emulated but is not implemented",standard:"other"},{name:"SIGFPE",number:8,action:"core",description:"Floating point arithmetic error",standard:"ansi"},{name:"SIGKILL",number:9,action:"terminate",description:"Forced termination",standard:"posix",forced:!0},{name:"SIGUSR1",number:10,action:"terminate",description:"Application-specific signal",standard:"posix"},{name:"SIGSEGV",number:11,action:"core",description:"Segmentation fault",standard:"ansi"},{name:"SIGUSR2",number:12,action:"terminate",description:"Application-specific signal",standard:"posix"},{name:"SIGPIPE",number:13,action:"terminate",description:"Broken pipe or socket",standard:"posix"},{name:"SIGALRM",number:14,action:"terminate",description:"Timeout or timer",standard:"posix"},{name:"SIGTERM",number:15,action:"terminate",description:"Termination",standard:"ansi"},{name:"SIGSTKFLT",number:16,action:"terminate",description:"Stack is empty or overflowed",standard:"other"},{name:"SIGCHLD",number:17,action:"ignore",description:"Child process terminated, paused or unpaused",standard:"posix"},{name:"SIGCLD",number:17,action:"ignore",description:"Child process terminated, paused or unpaused",standard:"other"},{name:"SIGCONT",number:18,action:"unpause",description:"Unpaused",standard:"posix",forced:!0},{name:"SIGSTOP",number:19,action:"pause",description:"Paused",standard:"posix",forced:!0},{name:"SIGTSTP",number:20,action:"pause",description:'Paused using CTRL-Z or "suspend"',standard:"posix"},{name:"SIGTTIN",number:21,action:"pause",description:"Background process cannot read terminal input",standard:"posix"},{name:"SIGBREAK",number:21,action:"terminate",description:"User interruption with CTRL-BREAK",standard:"other"},{name:"SIGTTOU",number:22,action:"pause",description:"Background process cannot write to terminal output",standard:"posix"},{name:"SIGURG",number:23,action:"ignore",description:"Socket received out-of-band data",standard:"bsd"},{name:"SIGXCPU",number:24,action:"core",description:"Process timed out",standard:"bsd"},{name:"SIGXFSZ",number:25,action:"core",description:"File too big",standard:"bsd"},{name:"SIGVTALRM",number:26,action:"terminate",description:"Timeout or timer",standard:"bsd"},{name:"SIGPROF",number:27,action:"terminate",description:"Timeout or timer",standard:"bsd"},{name:"SIGWINCH",number:28,action:"ignore",description:"Terminal window size changed",standard:"bsd"},{name:"SIGIO",number:29,action:"terminate",description:"I/O is available",standard:"other"},{name:"SIGPOLL",number:29,action:"terminate",description:"Watched event",standard:"other"},{name:"SIGINFO",number:29,action:"ignore",description:"Request for process information",standard:"other"},{name:"SIGPWR",number:30,action:"terminate",description:"Device running out of power",standard:"systemv"},{name:"SIGSYS",number:31,action:"core",description:"Invalid system call",standard:"other"},{name:"SIGUNUSED",number:31,action:"terminate",description:"Invalid system call",standard:"other"}];to.SIGNALS=jT});var $c=O(In=>{"use strict";Object.defineProperty(In,"__esModule",{value:!0});In.SIGRTMAX=In.getRealtimeSignals=void 0;var LT=function(){let e=Ah-Ch+1;return Array.from({length:e},MT)};In.getRealtimeSignals=LT;var MT=function(e,t){return{name:`SIGRT${t+1}`,number:Ch+t,action:"terminate",description:"Application-specific signal (realtime)",standard:"posix"}},Ch=34,Ah=64;In.SIGRTMAX=Ah});var Ih=O(ao=>{"use strict";Object.defineProperty(ao,"__esModule",{value:!0});ao.getSignals=void 0;var DT=require("os"),zT=Sh(),GT=$c(),HT=function(){let e=(0,GT.getRealtimeSignals)();return[...zT.SIGNALS,...e].map(WT)};ao.getSignals=HT;var WT=function({name:e,number:t,description:a,action:n,forced:i=!1,standard:r}){let{signals:{[e]:o}}=DT.constants,s=o!==void 0;return{name:e,number:s?o:t,description:a,supported:s,action:n,forced:i,standard:r}}});var Th=O(_n=>{"use strict";Object.defineProperty(_n,"__esModule",{value:!0});_n.signalsByNumber=_n.signalsByName=void 0;var VT=require("os"),_h=Ih(),UT=$c(),JT=function(){return(0,_h.getSignals)().reduce(ZT,{})},ZT=function(e,{name:t,number:a,description:n,supported:i,action:r,forced:o,standard:s}){return{...e,[t]:{name:t,number:a,description:n,supported:i,action:r,forced:o,standard:s}}},qT=JT();_n.signalsByName=qT;var XT=function(){let e=(0,_h.getSignals)(),t=UT.SIGRTMAX+1,a=Array.from({length:t},(n,i)=>$T(i,e));return Object.assign({},...a)},$T=function(e,t){let a=YT(e,t);if(a===void 0)return{};let{name:n,description:i,supported:r,action:o,forced:s,standard:l}=a;return{[e]:{name:n,number:e,description:i,supported:r,action:o,forced:s,standard:l}}},YT=function(e,t){let a=t.find(({name:n})=>VT.constants.signals[n]===e);return a!==void 0?a:t.find(n=>n.number===e)},KT=XT();_n.signalsByNumber=KT});var Fh=O((LD,kh)=>{"use strict";var{signalsByName:QT}=Th(),e4=({timedOut:e,timeout:t,errorCode:a,signal:n,signalDescription:i,exitCode:r,isCanceled:o})=>e?`timed out after ${t} milliseconds`:o?"was canceled":a!==void 0?`failed with ${a}`:n!==void 0?`was killed with ${n} (${i})`:r!==void 0?`failed with exit code ${r}`:"failed",t4=({stdout:e,stderr:t,all:a,error:n,signal:i,exitCode:r,command:o,escapedCommand:s,timedOut:l,isCanceled:u,killed:c,parsed:{options:{timeout:f}}})=>{r=r===null?void 0:r,i=i===null?void 0:i;let p=i===void 0?void 0:QT[i].description,b=n&&n.code,m=`Command ${e4({timedOut:l,timeout:f,errorCode:b,signal:i,signalDescription:p,exitCode:r,isCanceled:u})}: ${o}`,h=Object.prototype.toString.call(n)==="[object Error]",v=h?`${m} +${n.message}`:m,x=[v,t,e].filter(Boolean).join(` +`);return h?(n.originalMessage=n.message,n.message=x):n=new Error(x),n.shortMessage=v,n.command=o,n.escapedCommand=s,n.exitCode=r,n.signal=i,n.signalDescription=p,n.stdout=e,n.stderr=t,a!==void 0&&(n.all=a),"bufferedData"in n&&delete n.bufferedData,n.failed=!0,n.timedOut=!!l,n.isCanceled=u,n.killed=c&&!l,n};kh.exports=t4});var Oh=O((MD,Yc)=>{"use strict";var no=["stdin","stdout","stderr"],a4=e=>no.some(t=>e[t]!==void 0),Ph=e=>{if(!e)return;let{stdio:t}=e;if(t===void 0)return no.map(n=>e[n]);if(a4(e))throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${no.map(n=>`\`${n}\``).join(", ")}`);if(typeof t=="string")return t;if(!Array.isArray(t))throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof t}\``);let a=Math.max(t.length,no.length);return Array.from({length:a},(n,i)=>t[i])};Yc.exports=Ph;Yc.exports.node=e=>{let t=Ph(e);return t==="ipc"?"ipc":t===void 0||typeof t=="string"?[t,t,t,"ipc"]:t.includes("ipc")?t:[...t,"ipc"]}});var Rh=O((DD,io)=>{io.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];process.platform!=="win32"&&io.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&io.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")});var eu=O((zD,Fn)=>{var Ge=global.process,qa=function(e){return e&&typeof e=="object"&&typeof e.removeListener=="function"&&typeof e.emit=="function"&&typeof e.reallyExit=="function"&&typeof e.listeners=="function"&&typeof e.kill=="function"&&typeof e.pid=="number"&&typeof e.on=="function"};qa(Ge)?(Bh=require("assert"),Tn=Rh(),Nh=/^win/i.test(Ge.platform),Fi=require("events"),typeof Fi!="function"&&(Fi=Fi.EventEmitter),Ge.__signal_exit_emitter__?at=Ge.__signal_exit_emitter__:(at=Ge.__signal_exit_emitter__=new Fi,at.count=0,at.emitted={}),at.infinite||(at.setMaxListeners(1/0),at.infinite=!0),Fn.exports=function(e,t){if(!qa(global.process))return function(){};Bh.equal(typeof e,"function","a callback must be provided for exit handler"),kn===!1&&Kc();var a="exit";t&&t.alwaysLast&&(a="afterexit");var n=function(){at.removeListener(a,e),at.listeners("exit").length===0&&at.listeners("afterexit").length===0&&ro()};return at.on(a,e),n},ro=function(){!kn||!qa(global.process)||(kn=!1,Tn.forEach(function(t){try{Ge.removeListener(t,oo[t])}catch(a){}}),Ge.emit=so,Ge.reallyExit=Qc,at.count-=1)},Fn.exports.unload=ro,Xa=function(t,a,n){at.emitted[t]||(at.emitted[t]=!0,at.emit(t,a,n))},oo={},Tn.forEach(function(e){oo[e]=function(){if(qa(global.process)){var a=Ge.listeners(e);a.length===at.count&&(ro(),Xa("exit",null,e),Xa("afterexit",null,e),Nh&&e==="SIGHUP"&&(e="SIGINT"),Ge.kill(Ge.pid,e))}}}),Fn.exports.signals=function(){return Tn},kn=!1,Kc=function(){kn||!qa(global.process)||(kn=!0,at.count+=1,Tn=Tn.filter(function(t){try{return Ge.on(t,oo[t]),!0}catch(a){return!1}}),Ge.emit=Lh,Ge.reallyExit=jh)},Fn.exports.load=Kc,Qc=Ge.reallyExit,jh=function(t){qa(global.process)&&(Ge.exitCode=t||0,Xa("exit",Ge.exitCode,null),Xa("afterexit",Ge.exitCode,null),Qc.call(Ge,Ge.exitCode))},so=Ge.emit,Lh=function(t,a){if(t==="exit"&&qa(global.process)){a!==void 0&&(Ge.exitCode=a);var n=so.apply(this,arguments);return Xa("exit",Ge.exitCode,null),Xa("afterexit",Ge.exitCode,null),n}else return so.apply(this,arguments)}):Fn.exports=function(){return function(){}};var Bh,Tn,Nh,Fi,at,ro,Xa,oo,kn,Kc,Qc,jh,so,Lh});var Dh=O((GD,Mh)=>{"use strict";var n4=require("os"),i4=eu(),r4=1e3*5,o4=(e,t="SIGTERM",a={})=>{let n=e(t);return s4(e,t,a,n),n},s4=(e,t,a,n)=>{if(!l4(t,a,n))return;let i=u4(a),r=setTimeout(()=>{e("SIGKILL")},i);r.unref&&r.unref()},l4=(e,{forceKillAfterTimeout:t},a)=>c4(e)&&t!==!1&&a,c4=e=>e===n4.constants.signals.SIGTERM||typeof e=="string"&&e.toUpperCase()==="SIGTERM",u4=({forceKillAfterTimeout:e=!0})=>{if(e===!0)return r4;if(!Number.isFinite(e)||e<0)throw new TypeError(`Expected the \`forceKillAfterTimeout\` option to be a non-negative integer, got \`${e}\` (${typeof e})`);return e},p4=(e,t)=>{e.kill()&&(t.isCanceled=!0)},d4=(e,t,a)=>{e.kill(t),a(Object.assign(new Error("Timed out"),{timedOut:!0,signal:t}))},f4=(e,{timeout:t,killSignal:a="SIGTERM"},n)=>{if(t===0||t===void 0)return n;let i,r=new Promise((s,l)=>{i=setTimeout(()=>{d4(e,a,l)},t)}),o=n.finally(()=>{clearTimeout(i)});return Promise.race([r,o])},m4=({timeout:e})=>{if(e!==void 0&&(!Number.isFinite(e)||e<0))throw new TypeError(`Expected the \`timeout\` option to be a non-negative integer, got \`${e}\` (${typeof e})`)},h4=async(e,{cleanup:t,detached:a},n)=>{if(!t||a)return n;let i=i4(()=>{e.kill()});return n.finally(()=>{i()})};Mh.exports={spawnedKill:o4,spawnedCancel:p4,setupTimeout:f4,validateTimeout:m4,setExitHandler:h4}});var Gh=O((HD,zh)=>{"use strict";var Xt=e=>e!==null&&typeof e=="object"&&typeof e.pipe=="function";Xt.writable=e=>Xt(e)&&e.writable!==!1&&typeof e._write=="function"&&typeof e._writableState=="object";Xt.readable=e=>Xt(e)&&e.readable!==!1&&typeof e._read=="function"&&typeof e._readableState=="object";Xt.duplex=e=>Xt.writable(e)&&Xt.readable(e);Xt.transform=e=>Xt.duplex(e)&&typeof e._transform=="function";zh.exports=Xt});var Wh=O((WD,Hh)=>{"use strict";var{PassThrough:v4}=require("stream");Hh.exports=e=>{e={...e};let{array:t}=e,{encoding:a}=e,n=a==="buffer",i=!1;t?i=!(a||n):a=a||"utf8",n&&(a=null);let r=new v4({objectMode:i});a&&r.setEncoding(a);let o=0,s=[];return r.on("data",l=>{s.push(l),i?o=s.length:o+=l.length}),r.getBufferedValue=()=>t?s:n?Buffer.concat(s,o):s.join(""),r.getBufferedLength=()=>o,r}});var Vh=O((VD,Pi)=>{"use strict";var{constants:b4}=require("buffer"),g4=require("stream"),{promisify:x4}=require("util"),y4=Wh(),w4=x4(g4.pipeline),lo=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};async function tu(e,t){if(!e)throw new Error("Expected a stream");t={maxBuffer:1/0,...t};let{maxBuffer:a}=t,n=y4(t);return await new Promise((i,r)=>{let o=s=>{s&&n.getBufferedLength()<=b4.MAX_LENGTH&&(s.bufferedData=n.getBufferedValue()),r(s)};(async()=>{try{await w4(e,n),i()}catch(s){o(s)}})(),n.on("data",()=>{n.getBufferedLength()>a&&o(new lo)})}),n.getBufferedValue()}Pi.exports=tu;Pi.exports.buffer=(e,t)=>tu(e,{...t,encoding:"buffer"});Pi.exports.array=(e,t)=>tu(e,{...t,array:!0});Pi.exports.MaxBufferError=lo});var au=O((UD,Uh)=>{"use strict";var{PassThrough:E4}=require("stream");Uh.exports=function(){var e=[],t=new E4({objectMode:!0});return t.setMaxListeners(0),t.add=a,t.isEmpty=n,t.on("unpipe",i),Array.prototype.slice.call(arguments).forEach(a),t;function a(r){return Array.isArray(r)?(r.forEach(a),this):(e.push(r),r.once("end",i.bind(null,r)),r.once("error",t.emit.bind(t,"error")),r.pipe(t,{end:!1}),this)}function n(){return e.length==0}function i(r){e=e.filter(function(o){return o!==r}),!e.length&&t.readable&&t.end()}}});var Xh=O((JD,qh)=>{"use strict";var Zh=Gh(),Jh=Vh(),S4=au(),C4=(e,t)=>{t===void 0||e.stdin===void 0||(Zh(t)?t.pipe(e.stdin):e.stdin.end(t))},A4=(e,{all:t})=>{if(!t||!e.stdout&&!e.stderr)return;let a=S4();return e.stdout&&a.add(e.stdout),e.stderr&&a.add(e.stderr),a},nu=async(e,t)=>{if(e){e.destroy();try{return await t}catch(a){return a.bufferedData}}},iu=(e,{encoding:t,buffer:a,maxBuffer:n})=>{if(!(!e||!a))return t?Jh(e,{encoding:t,maxBuffer:n}):Jh.buffer(e,{maxBuffer:n})},I4=async({stdout:e,stderr:t,all:a},{encoding:n,buffer:i,maxBuffer:r},o)=>{let s=iu(e,{encoding:n,buffer:i,maxBuffer:r}),l=iu(t,{encoding:n,buffer:i,maxBuffer:r}),u=iu(a,{encoding:n,buffer:i,maxBuffer:r*2});try{return await Promise.all([o,s,l,u])}catch(c){return Promise.all([{error:c,signal:c.signal,timedOut:c.timedOut},nu(e,s),nu(t,l),nu(a,u)])}},_4=({input:e})=>{if(Zh(e))throw new TypeError("The `input` option cannot be a stream in sync mode")};qh.exports={handleInput:C4,makeAllStream:A4,getSpawnedResult:I4,validateInputSync:_4}});var Yh=O((ZD,$h)=>{"use strict";var T4=(async()=>{})().constructor.prototype,k4=["then","catch","finally"].map(e=>[e,Reflect.getOwnPropertyDescriptor(T4,e)]),F4=(e,t)=>{for(let[a,n]of k4){let i=typeof t=="function"?(...r)=>Reflect.apply(n.value,t(),r):n.value.bind(t);Reflect.defineProperty(e,a,{...n,value:i})}return e},P4=e=>new Promise((t,a)=>{e.on("exit",(n,i)=>{t({exitCode:n,signal:i})}),e.on("error",n=>{a(n)}),e.stdin&&e.stdin.on("error",n=>{a(n)})});$h.exports={mergePromise:F4,getSpawnedPromise:P4}});var ev=O((qD,Qh)=>{"use strict";var Kh=(e,t=[])=>Array.isArray(t)?[e,...t]:[e],O4=/^[\w.-]+$/,R4=/"/g,B4=e=>typeof e!="string"||O4.test(e)?e:`"${e.replace(R4,'\\"')}"`,N4=(e,t)=>Kh(e,t).join(" "),j4=(e,t)=>Kh(e,t).map(a=>B4(a)).join(" "),L4=/ +/g,M4=e=>{let t=[];for(let a of e.trim().split(L4)){let n=t[t.length-1];n&&n.endsWith("\\")?t[t.length-1]=`${n.slice(0,-1)} ${a}`:t.push(a)}return t};Qh.exports={joinCommand:N4,getEscapedCommand:j4,parseCommand:M4}});var sv=O((XD,Pn)=>{"use strict";var D4=require("path"),ru=require("child_process"),z4=qc(),G4=hh(),H4=gh(),W4=Eh(),co=Fh(),av=Oh(),{spawnedKill:V4,spawnedCancel:U4,setupTimeout:J4,validateTimeout:Z4,setExitHandler:q4}=Dh(),{handleInput:X4,getSpawnedResult:$4,makeAllStream:Y4,validateInputSync:K4}=Xh(),{mergePromise:tv,getSpawnedPromise:Q4}=Yh(),{joinCommand:nv,parseCommand:iv,getEscapedCommand:rv}=ev(),ek=1e3*1e3*100,tk=({env:e,extendEnv:t,preferLocal:a,localDir:n,execPath:i})=>{let r=t?{...process.env,...e}:e;return a?H4.env({env:r,cwd:n,execPath:i}):r},ov=(e,t,a={})=>{let n=z4._parse(e,t,a);return e=n.command,t=n.args,a=n.options,a={maxBuffer:ek,buffer:!0,stripFinalNewline:!0,extendEnv:!0,preferLocal:!1,localDir:a.cwd||process.cwd(),execPath:process.execPath,encoding:"utf8",reject:!0,cleanup:!0,all:!1,windowsHide:!0,...a},a.env=tk(a),a.stdio=av(a),process.platform==="win32"&&D4.basename(e,".exe")==="cmd"&&t.unshift("/q"),{file:e,args:t,options:a,parsed:n}},Oi=(e,t,a)=>typeof t!="string"&&!Buffer.isBuffer(t)?a===void 0?void 0:"":e.stripFinalNewline?G4(t):t,uo=(e,t,a)=>{let n=ov(e,t,a),i=nv(e,t),r=rv(e,t);Z4(n.options);let o;try{o=ru.spawn(n.file,n.args,n.options)}catch(b){let d=new ru.ChildProcess,m=Promise.reject(co({error:b,stdout:"",stderr:"",all:"",command:i,escapedCommand:r,parsed:n,timedOut:!1,isCanceled:!1,killed:!1}));return tv(d,m)}let s=Q4(o),l=J4(o,n.options,s),u=q4(o,n.options,l),c={isCanceled:!1};o.kill=V4.bind(null,o.kill.bind(o)),o.cancel=U4.bind(null,o,c);let p=W4(async()=>{let[{error:b,exitCode:d,signal:m,timedOut:h},v,x,E]=await $4(o,n.options,u),g=Oi(n.options,v),w=Oi(n.options,x),C=Oi(n.options,E);if(b||d!==0||m!==null){let y=co({error:b,exitCode:d,signal:m,stdout:g,stderr:w,all:C,command:i,escapedCommand:r,parsed:n,timedOut:h,isCanceled:c.isCanceled,killed:o.killed});if(!n.options.reject)return y;throw y}return{command:i,escapedCommand:r,exitCode:0,stdout:g,stderr:w,all:C,failed:!1,timedOut:!1,isCanceled:!1,killed:!1}});return X4(o,n.options.input),o.all=Y4(o,n.options),tv(o,p)};Pn.exports=uo;Pn.exports.sync=(e,t,a)=>{let n=ov(e,t,a),i=nv(e,t),r=rv(e,t);K4(n.options);let o;try{o=ru.spawnSync(n.file,n.args,n.options)}catch(u){throw co({error:u,stdout:"",stderr:"",all:"",command:i,escapedCommand:r,parsed:n,timedOut:!1,isCanceled:!1,killed:!1})}let s=Oi(n.options,o.stdout,o.error),l=Oi(n.options,o.stderr,o.error);if(o.error||o.status!==0||o.signal!==null){let u=co({stdout:s,stderr:l,error:o.error,signal:o.signal,exitCode:o.status,command:i,escapedCommand:r,parsed:n,timedOut:o.error&&o.error.code==="ETIMEDOUT",isCanceled:!1,killed:o.signal!==null});if(!n.options.reject)return u;throw u}return{command:i,escapedCommand:r,exitCode:0,stdout:s,stderr:l,failed:!1,timedOut:!1,isCanceled:!1,killed:!1}};Pn.exports.command=(e,t)=>{let[a,...n]=iv(e);return uo(a,n,t)};Pn.exports.commandSync=(e,t)=>{let[a,...n]=iv(e);return uo.sync(a,n,t)};Pn.exports.node=(e,t,a={})=>{t&&!Array.isArray(t)&&typeof t=="object"&&(a=t,t=[]);let n=av.node(a),i=process.execArgv.filter(s=>!s.startsWith("--inspect")),{nodePath:r=process.execPath,nodeOptions:o=i}=a;return uo(r,[...o,e,...Array.isArray(t)?t:[]],{...a,stdin:void 0,stdout:void 0,stderr:void 0,stdio:n,shell:!1})}});var o0=O((Eo,r0)=>{"use strict";Eo.__esModule=!0;Eo.default={scheme:"threezerotwofour",author:"jan t. sott (http://github.com/idleberg)",base00:"#090300",base01:"#3a3432",base02:"#4a4543",base03:"#5c5855",base04:"#807d7c",base05:"#a5a2a2",base06:"#d6d5d4",base07:"#f7f7f7",base08:"#db2d20",base09:"#e8bbd0",base0A:"#fded02",base0B:"#01a252",base0C:"#b5e4f4",base0D:"#01a0e4",base0E:"#a16a94",base0F:"#cdab53"};r0.exports=Eo.default});var l0=O((So,s0)=>{"use strict";So.__esModule=!0;So.default={scheme:"apathy",author:"jannik siebert (https://github.com/janniks)",base00:"#031A16",base01:"#0B342D",base02:"#184E45",base03:"#2B685E",base04:"#5F9C92",base05:"#81B5AC",base06:"#A7CEC8",base07:"#D2E7E4",base08:"#3E9688",base09:"#3E7996",base0A:"#3E4C96",base0B:"#883E96",base0C:"#963E4C",base0D:"#96883E",base0E:"#4C963E",base0F:"#3E965B"};s0.exports=So.default});var u0=O((Co,c0)=>{"use strict";Co.__esModule=!0;Co.default={scheme:"ashes",author:"jannik siebert (https://github.com/janniks)",base00:"#1C2023",base01:"#393F45",base02:"#565E65",base03:"#747C84",base04:"#ADB3BA",base05:"#C7CCD1",base06:"#DFE2E5",base07:"#F3F4F5",base08:"#C7AE95",base09:"#C7C795",base0A:"#AEC795",base0B:"#95C7AE",base0C:"#95AEC7",base0D:"#AE95C7",base0E:"#C795AE",base0F:"#C79595"};c0.exports=Co.default});var d0=O((Ao,p0)=>{"use strict";Ao.__esModule=!0;Ao.default={scheme:"atelier dune",author:"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune)",base00:"#20201d",base01:"#292824",base02:"#6e6b5e",base03:"#7d7a68",base04:"#999580",base05:"#a6a28c",base06:"#e8e4cf",base07:"#fefbec",base08:"#d73737",base09:"#b65611",base0A:"#cfb017",base0B:"#60ac39",base0C:"#1fad83",base0D:"#6684e1",base0E:"#b854d4",base0F:"#d43552"};p0.exports=Ao.default});var m0=O((Io,f0)=>{"use strict";Io.__esModule=!0;Io.default={scheme:"atelier forest",author:"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest)",base00:"#1b1918",base01:"#2c2421",base02:"#68615e",base03:"#766e6b",base04:"#9c9491",base05:"#a8a19f",base06:"#e6e2e0",base07:"#f1efee",base08:"#f22c40",base09:"#df5320",base0A:"#d5911a",base0B:"#5ab738",base0C:"#00ad9c",base0D:"#407ee7",base0E:"#6666ea",base0F:"#c33ff3"};f0.exports=Io.default});var v0=O((_o,h0)=>{"use strict";_o.__esModule=!0;_o.default={scheme:"atelier heath",author:"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath)",base00:"#1b181b",base01:"#292329",base02:"#695d69",base03:"#776977",base04:"#9e8f9e",base05:"#ab9bab",base06:"#d8cad8",base07:"#f7f3f7",base08:"#ca402b",base09:"#a65926",base0A:"#bb8a35",base0B:"#379a37",base0C:"#159393",base0D:"#516aec",base0E:"#7b59c0",base0F:"#cc33cc"};h0.exports=_o.default});var g0=O((To,b0)=>{"use strict";To.__esModule=!0;To.default={scheme:"atelier lakeside",author:"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside/)",base00:"#161b1d",base01:"#1f292e",base02:"#516d7b",base03:"#5a7b8c",base04:"#7195a8",base05:"#7ea2b4",base06:"#c1e4f6",base07:"#ebf8ff",base08:"#d22d72",base09:"#935c25",base0A:"#8a8a0f",base0B:"#568c3b",base0C:"#2d8f6f",base0D:"#257fad",base0E:"#5d5db1",base0F:"#b72dd2"};b0.exports=To.default});var y0=O((ko,x0)=>{"use strict";ko.__esModule=!0;ko.default={scheme:"atelier seaside",author:"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside/)",base00:"#131513",base01:"#242924",base02:"#5e6e5e",base03:"#687d68",base04:"#809980",base05:"#8ca68c",base06:"#cfe8cf",base07:"#f0fff0",base08:"#e6193c",base09:"#87711d",base0A:"#c3c322",base0B:"#29a329",base0C:"#1999b3",base0D:"#3d62f5",base0E:"#ad2bee",base0F:"#e619c3"};x0.exports=ko.default});var E0=O((Fo,w0)=>{"use strict";Fo.__esModule=!0;Fo.default={scheme:"bespin",author:"jan t. sott",base00:"#28211c",base01:"#36312e",base02:"#5e5d5c",base03:"#666666",base04:"#797977",base05:"#8a8986",base06:"#9d9b97",base07:"#baae9e",base08:"#cf6a4c",base09:"#cf7d34",base0A:"#f9ee98",base0B:"#54be0d",base0C:"#afc4db",base0D:"#5ea6ea",base0E:"#9b859d",base0F:"#937121"};w0.exports=Fo.default});var C0=O((Po,S0)=>{"use strict";Po.__esModule=!0;Po.default={scheme:"brewer",author:"timoth\xE9e poisot (http://github.com/tpoisot)",base00:"#0c0d0e",base01:"#2e2f30",base02:"#515253",base03:"#737475",base04:"#959697",base05:"#b7b8b9",base06:"#dadbdc",base07:"#fcfdfe",base08:"#e31a1c",base09:"#e6550d",base0A:"#dca060",base0B:"#31a354",base0C:"#80b1d3",base0D:"#3182bd",base0E:"#756bb1",base0F:"#b15928"};S0.exports=Po.default});var I0=O((Oo,A0)=>{"use strict";Oo.__esModule=!0;Oo.default={scheme:"bright",author:"chris kempson (http://chriskempson.com)",base00:"#000000",base01:"#303030",base02:"#505050",base03:"#b0b0b0",base04:"#d0d0d0",base05:"#e0e0e0",base06:"#f5f5f5",base07:"#ffffff",base08:"#fb0120",base09:"#fc6d24",base0A:"#fda331",base0B:"#a1c659",base0C:"#76c7b7",base0D:"#6fb3d2",base0E:"#d381c3",base0F:"#be643c"};A0.exports=Oo.default});var T0=O((Ro,_0)=>{"use strict";Ro.__esModule=!0;Ro.default={scheme:"chalk",author:"chris kempson (http://chriskempson.com)",base00:"#151515",base01:"#202020",base02:"#303030",base03:"#505050",base04:"#b0b0b0",base05:"#d0d0d0",base06:"#e0e0e0",base07:"#f5f5f5",base08:"#fb9fb1",base09:"#eda987",base0A:"#ddb26f",base0B:"#acc267",base0C:"#12cfc0",base0D:"#6fc2ef",base0E:"#e1a3ee",base0F:"#deaf8f"};_0.exports=Ro.default});var F0=O((Bo,k0)=>{"use strict";Bo.__esModule=!0;Bo.default={scheme:"codeschool",author:"brettof86",base00:"#232c31",base01:"#1c3657",base02:"#2a343a",base03:"#3f4944",base04:"#84898c",base05:"#9ea7a6",base06:"#a7cfa3",base07:"#b5d8f6",base08:"#2a5491",base09:"#43820d",base0A:"#a03b1e",base0B:"#237986",base0C:"#b02f30",base0D:"#484d79",base0E:"#c59820",base0F:"#c98344"};k0.exports=Bo.default});var O0=O((No,P0)=>{"use strict";No.__esModule=!0;No.default={scheme:"colors",author:"mrmrs (http://clrs.cc)",base00:"#111111",base01:"#333333",base02:"#555555",base03:"#777777",base04:"#999999",base05:"#bbbbbb",base06:"#dddddd",base07:"#ffffff",base08:"#ff4136",base09:"#ff851b",base0A:"#ffdc00",base0B:"#2ecc40",base0C:"#7fdbff",base0D:"#0074d9",base0E:"#b10dc9",base0F:"#85144b"};P0.exports=No.default});var B0=O((jo,R0)=>{"use strict";jo.__esModule=!0;jo.default={scheme:"default",author:"chris kempson (http://chriskempson.com)",base00:"#181818",base01:"#282828",base02:"#383838",base03:"#585858",base04:"#b8b8b8",base05:"#d8d8d8",base06:"#e8e8e8",base07:"#f8f8f8",base08:"#ab4642",base09:"#dc9656",base0A:"#f7ca88",base0B:"#a1b56c",base0C:"#86c1b9",base0D:"#7cafc2",base0E:"#ba8baf",base0F:"#a16946"};R0.exports=jo.default});var j0=O((Lo,N0)=>{"use strict";Lo.__esModule=!0;Lo.default={scheme:"eighties",author:"chris kempson (http://chriskempson.com)",base00:"#2d2d2d",base01:"#393939",base02:"#515151",base03:"#747369",base04:"#a09f93",base05:"#d3d0c8",base06:"#e8e6df",base07:"#f2f0ec",base08:"#f2777a",base09:"#f99157",base0A:"#ffcc66",base0B:"#99cc99",base0C:"#66cccc",base0D:"#6699cc",base0E:"#cc99cc",base0F:"#d27b53"};N0.exports=Lo.default});var M0=O((Mo,L0)=>{"use strict";Mo.__esModule=!0;Mo.default={scheme:"embers",author:"jannik siebert (https://github.com/janniks)",base00:"#16130F",base01:"#2C2620",base02:"#433B32",base03:"#5A5047",base04:"#8A8075",base05:"#A39A90",base06:"#BEB6AE",base07:"#DBD6D1",base08:"#826D57",base09:"#828257",base0A:"#6D8257",base0B:"#57826D",base0C:"#576D82",base0D:"#6D5782",base0E:"#82576D",base0F:"#825757"};L0.exports=Mo.default});var z0=O((Do,D0)=>{"use strict";Do.__esModule=!0;Do.default={scheme:"flat",author:"chris kempson (http://chriskempson.com)",base00:"#2C3E50",base01:"#34495E",base02:"#7F8C8D",base03:"#95A5A6",base04:"#BDC3C7",base05:"#e0e0e0",base06:"#f5f5f5",base07:"#ECF0F1",base08:"#E74C3C",base09:"#E67E22",base0A:"#F1C40F",base0B:"#2ECC71",base0C:"#1ABC9C",base0D:"#3498DB",base0E:"#9B59B6",base0F:"#be643c"};D0.exports=Do.default});var H0=O((zo,G0)=>{"use strict";zo.__esModule=!0;zo.default={scheme:"google",author:"seth wright (http://sethawright.com)",base00:"#1d1f21",base01:"#282a2e",base02:"#373b41",base03:"#969896",base04:"#b4b7b4",base05:"#c5c8c6",base06:"#e0e0e0",base07:"#ffffff",base08:"#CC342B",base09:"#F96A38",base0A:"#FBA922",base0B:"#198844",base0C:"#3971ED",base0D:"#3971ED",base0E:"#A36AC7",base0F:"#3971ED"};G0.exports=zo.default});var V0=O((Go,W0)=>{"use strict";Go.__esModule=!0;Go.default={scheme:"grayscale",author:"alexandre gavioli (https://github.com/alexx2/)",base00:"#101010",base01:"#252525",base02:"#464646",base03:"#525252",base04:"#ababab",base05:"#b9b9b9",base06:"#e3e3e3",base07:"#f7f7f7",base08:"#7c7c7c",base09:"#999999",base0A:"#a0a0a0",base0B:"#8e8e8e",base0C:"#868686",base0D:"#686868",base0E:"#747474",base0F:"#5e5e5e"};W0.exports=Go.default});var J0=O((Ho,U0)=>{"use strict";Ho.__esModule=!0;Ho.default={scheme:"green screen",author:"chris kempson (http://chriskempson.com)",base00:"#001100",base01:"#003300",base02:"#005500",base03:"#007700",base04:"#009900",base05:"#00bb00",base06:"#00dd00",base07:"#00ff00",base08:"#007700",base09:"#009900",base0A:"#007700",base0B:"#00bb00",base0C:"#005500",base0D:"#009900",base0E:"#00bb00",base0F:"#005500"};U0.exports=Ho.default});var q0=O((Wo,Z0)=>{"use strict";Wo.__esModule=!0;Wo.default={scheme:"harmonic16",author:"jannik siebert (https://github.com/janniks)",base00:"#0b1c2c",base01:"#223b54",base02:"#405c79",base03:"#627e99",base04:"#aabcce",base05:"#cbd6e2",base06:"#e5ebf1",base07:"#f7f9fb",base08:"#bf8b56",base09:"#bfbf56",base0A:"#8bbf56",base0B:"#56bf8b",base0C:"#568bbf",base0D:"#8b56bf",base0E:"#bf568b",base0F:"#bf5656"};Z0.exports=Wo.default});var $0=O((Vo,X0)=>{"use strict";Vo.__esModule=!0;Vo.default={scheme:"hopscotch",author:"jan t. sott",base00:"#322931",base01:"#433b42",base02:"#5c545b",base03:"#797379",base04:"#989498",base05:"#b9b5b8",base06:"#d5d3d5",base07:"#ffffff",base08:"#dd464c",base09:"#fd8b19",base0A:"#fdcc59",base0B:"#8fc13e",base0C:"#149b93",base0D:"#1290bf",base0E:"#c85e7c",base0F:"#b33508"};X0.exports=Vo.default});var K0=O((Uo,Y0)=>{"use strict";Uo.__esModule=!0;Uo.default={scheme:"isotope",author:"jan t. sott",base00:"#000000",base01:"#404040",base02:"#606060",base03:"#808080",base04:"#c0c0c0",base05:"#d0d0d0",base06:"#e0e0e0",base07:"#ffffff",base08:"#ff0000",base09:"#ff9900",base0A:"#ff0099",base0B:"#33ff00",base0C:"#00ffff",base0D:"#0066ff",base0E:"#cc00ff",base0F:"#3300ff"};Y0.exports=Uo.default});var eb=O((Jo,Q0)=>{"use strict";Jo.__esModule=!0;Jo.default={scheme:"marrakesh",author:"alexandre gavioli (http://github.com/alexx2/)",base00:"#201602",base01:"#302e00",base02:"#5f5b17",base03:"#6c6823",base04:"#86813b",base05:"#948e48",base06:"#ccc37a",base07:"#faf0a5",base08:"#c35359",base09:"#b36144",base0A:"#a88339",base0B:"#18974e",base0C:"#75a738",base0D:"#477ca1",base0E:"#8868b3",base0F:"#b3588e"};Q0.exports=Jo.default});var ab=O((Zo,tb)=>{"use strict";Zo.__esModule=!0;Zo.default={scheme:"mocha",author:"chris kempson (http://chriskempson.com)",base00:"#3B3228",base01:"#534636",base02:"#645240",base03:"#7e705a",base04:"#b8afad",base05:"#d0c8c6",base06:"#e9e1dd",base07:"#f5eeeb",base08:"#cb6077",base09:"#d28b71",base0A:"#f4bc87",base0B:"#beb55b",base0C:"#7bbda4",base0D:"#8ab3b5",base0E:"#a89bb9",base0F:"#bb9584"};tb.exports=Zo.default});var ib=O((qo,nb)=>{"use strict";qo.__esModule=!0;qo.default={scheme:"monokai",author:"wimer hazenberg (http://www.monokai.nl)",base00:"#272822",base01:"#383830",base02:"#49483e",base03:"#75715e",base04:"#a59f85",base05:"#f8f8f2",base06:"#f5f4f1",base07:"#f9f8f5",base08:"#f92672",base09:"#fd971f",base0A:"#f4bf75",base0B:"#a6e22e",base0C:"#a1efe4",base0D:"#66d9ef",base0E:"#ae81ff",base0F:"#cc6633"};nb.exports=qo.default});var ob=O((Xo,rb)=>{"use strict";Xo.__esModule=!0;Xo.default={scheme:"ocean",author:"chris kempson (http://chriskempson.com)",base00:"#2b303b",base01:"#343d46",base02:"#4f5b66",base03:"#65737e",base04:"#a7adba",base05:"#c0c5ce",base06:"#dfe1e8",base07:"#eff1f5",base08:"#bf616a",base09:"#d08770",base0A:"#ebcb8b",base0B:"#a3be8c",base0C:"#96b5b4",base0D:"#8fa1b3",base0E:"#b48ead",base0F:"#ab7967"};rb.exports=Xo.default});var lb=O(($o,sb)=>{"use strict";$o.__esModule=!0;$o.default={scheme:"paraiso",author:"jan t. sott",base00:"#2f1e2e",base01:"#41323f",base02:"#4f424c",base03:"#776e71",base04:"#8d8687",base05:"#a39e9b",base06:"#b9b6b0",base07:"#e7e9db",base08:"#ef6155",base09:"#f99b15",base0A:"#fec418",base0B:"#48b685",base0C:"#5bc4bf",base0D:"#06b6ef",base0E:"#815ba4",base0F:"#e96ba8"};sb.exports=$o.default});var ub=O((Yo,cb)=>{"use strict";Yo.__esModule=!0;Yo.default={scheme:"pop",author:"chris kempson (http://chriskempson.com)",base00:"#000000",base01:"#202020",base02:"#303030",base03:"#505050",base04:"#b0b0b0",base05:"#d0d0d0",base06:"#e0e0e0",base07:"#ffffff",base08:"#eb008a",base09:"#f29333",base0A:"#f8ca12",base0B:"#37b349",base0C:"#00aabb",base0D:"#0e5a94",base0E:"#b31e8d",base0F:"#7a2d00"};cb.exports=Yo.default});var db=O((Ko,pb)=>{"use strict";Ko.__esModule=!0;Ko.default={scheme:"railscasts",author:"ryan bates (http://railscasts.com)",base00:"#2b2b2b",base01:"#272935",base02:"#3a4055",base03:"#5a647e",base04:"#d4cfc9",base05:"#e6e1dc",base06:"#f4f1ed",base07:"#f9f7f3",base08:"#da4939",base09:"#cc7833",base0A:"#ffc66d",base0B:"#a5c261",base0C:"#519f50",base0D:"#6d9cbe",base0E:"#b6b3eb",base0F:"#bc9458"};pb.exports=Ko.default});var mb=O((Qo,fb)=>{"use strict";Qo.__esModule=!0;Qo.default={scheme:"shapeshifter",author:"tyler benziger (http://tybenz.com)",base00:"#000000",base01:"#040404",base02:"#102015",base03:"#343434",base04:"#555555",base05:"#ababab",base06:"#e0e0e0",base07:"#f9f9f9",base08:"#e92f2f",base09:"#e09448",base0A:"#dddd13",base0B:"#0ed839",base0C:"#23edda",base0D:"#3b48e3",base0E:"#f996e2",base0F:"#69542d"};fb.exports=Qo.default});var vb=O((es,hb)=>{"use strict";es.__esModule=!0;es.default={scheme:"solarized",author:"ethan schoonover (http://ethanschoonover.com/solarized)",base00:"#002b36",base01:"#073642",base02:"#586e75",base03:"#657b83",base04:"#839496",base05:"#93a1a1",base06:"#eee8d5",base07:"#fdf6e3",base08:"#dc322f",base09:"#cb4b16",base0A:"#b58900",base0B:"#859900",base0C:"#2aa198",base0D:"#268bd2",base0E:"#6c71c4",base0F:"#d33682"};hb.exports=es.default});var gb=O((ts,bb)=>{"use strict";ts.__esModule=!0;ts.default={scheme:"summerfruit",author:"christopher corley (http://cscorley.github.io/)",base00:"#151515",base01:"#202020",base02:"#303030",base03:"#505050",base04:"#B0B0B0",base05:"#D0D0D0",base06:"#E0E0E0",base07:"#FFFFFF",base08:"#FF0086",base09:"#FD8900",base0A:"#ABA800",base0B:"#00C918",base0C:"#1faaaa",base0D:"#3777E6",base0E:"#AD00A1",base0F:"#cc6633"};bb.exports=ts.default});var yb=O((as,xb)=>{"use strict";as.__esModule=!0;as.default={scheme:"tomorrow",author:"chris kempson (http://chriskempson.com)",base00:"#1d1f21",base01:"#282a2e",base02:"#373b41",base03:"#969896",base04:"#b4b7b4",base05:"#c5c8c6",base06:"#e0e0e0",base07:"#ffffff",base08:"#cc6666",base09:"#de935f",base0A:"#f0c674",base0B:"#b5bd68",base0C:"#8abeb7",base0D:"#81a2be",base0E:"#b294bb",base0F:"#a3685a"};xb.exports=as.default});var Eb=O((ns,wb)=>{"use strict";ns.__esModule=!0;ns.default={scheme:"london tube",author:"jan t. sott",base00:"#231f20",base01:"#1c3f95",base02:"#5a5758",base03:"#737171",base04:"#959ca1",base05:"#d9d8d8",base06:"#e7e7e8",base07:"#ffffff",base08:"#ee2e24",base09:"#f386a1",base0A:"#ffd204",base0B:"#00853e",base0C:"#85cebc",base0D:"#009ddc",base0E:"#98005d",base0F:"#b06110"};wb.exports=ns.default});var Cb=O((is,Sb)=>{"use strict";is.__esModule=!0;is.default={scheme:"twilight",author:"david hart (http://hart-dev.com)",base00:"#1e1e1e",base01:"#323537",base02:"#464b50",base03:"#5f5a60",base04:"#838184",base05:"#a7a7a7",base06:"#c3c3c3",base07:"#ffffff",base08:"#cf6a4c",base09:"#cda869",base0A:"#f9ee98",base0B:"#8f9d6a",base0C:"#afc4db",base0D:"#7587a6",base0E:"#9b859d",base0F:"#9b703f"};Sb.exports=is.default});var Ab=O(de=>{"use strict";de.__esModule=!0;function me(e){return e&&e.__esModule?e.default:e}var Yk=o0();de.threezerotwofour=me(Yk);var Kk=l0();de.apathy=me(Kk);var Qk=u0();de.ashes=me(Qk);var e5=d0();de.atelierDune=me(e5);var t5=m0();de.atelierForest=me(t5);var a5=v0();de.atelierHeath=me(a5);var n5=g0();de.atelierLakeside=me(n5);var i5=y0();de.atelierSeaside=me(i5);var r5=E0();de.bespin=me(r5);var o5=C0();de.brewer=me(o5);var s5=I0();de.bright=me(s5);var l5=T0();de.chalk=me(l5);var c5=F0();de.codeschool=me(c5);var u5=O0();de.colors=me(u5);var p5=B0();de.default=me(p5);var d5=j0();de.eighties=me(d5);var f5=M0();de.embers=me(f5);var m5=z0();de.flat=me(m5);var h5=H0();de.google=me(h5);var v5=V0();de.grayscale=me(v5);var b5=J0();de.greenscreen=me(b5);var g5=q0();de.harmonic=me(g5);var x5=$0();de.hopscotch=me(x5);var y5=K0();de.isotope=me(y5);var w5=eb();de.marrakesh=me(w5);var E5=ab();de.mocha=me(E5);var S5=ib();de.monokai=me(S5);var C5=ob();de.ocean=me(C5);var A5=lb();de.paraiso=me(A5);var I5=ub();de.pop=me(I5);var _5=db();de.railscasts=me(_5);var T5=mb();de.shapeshifter=me(T5);var k5=vb();de.solarized=me(k5);var F5=gb();de.summerfruit=me(F5);var P5=yb();de.tomorrow=me(P5);var O5=Eb();de.tube=me(O5);var R5=Cb();de.twilight=me(R5)});var Ru=O((w8,Ib)=>{"use strict";Ib.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var Tb=O((E8,_b)=>{_b.exports=function(t){return!t||typeof t=="string"?!1:t instanceof Array||Array.isArray(t)||t.length>=0&&(t.splice instanceof Function||Object.getOwnPropertyDescriptor(t,t.length-1)&&t.constructor.name!=="String")}});var Pb=O((S8,Fb)=>{"use strict";var B5=Tb(),N5=Array.prototype.concat,j5=Array.prototype.slice,kb=Fb.exports=function(t){for(var a=[],n=0,i=t.length;n<i;n++){var r=t[n];B5(r)?a=N5.call(a,j5.call(r)):a.push(r)}return a};kb.wrap=function(e){return function(){return e(kb(arguments))}}});var Nb=O((C8,Bb)=>{var Hi=Ru(),Wi=Pb(),Ob=Object.hasOwnProperty,Rb=Object.create(null);for(rs in Hi)Ob.call(Hi,rs)&&(Rb[Hi[rs]]=rs);var rs,Tt=Bb.exports={to:{},get:{}};Tt.get=function(e){var t=e.substring(0,3).toLowerCase(),a,n;switch(t){case"hsl":a=Tt.get.hsl(e),n="hsl";break;case"hwb":a=Tt.get.hwb(e),n="hwb";break;default:a=Tt.get.rgb(e),n="rgb";break}return a?{model:n,value:a}:null};Tt.get.rgb=function(e){if(!e)return null;var t=/^#([a-f0-9]{3,4})$/i,a=/^#([a-f0-9]{6})([a-f0-9]{2})?$/i,n=/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/,i=/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/,r=/^(\w+)$/,o=[0,0,0,1],s,l,u;if(s=e.match(a)){for(u=s[2],s=s[1],l=0;l<3;l++){var c=l*2;o[l]=parseInt(s.slice(c,c+2),16)}u&&(o[3]=parseInt(u,16)/255)}else if(s=e.match(t)){for(s=s[1],u=s[3],l=0;l<3;l++)o[l]=parseInt(s[l]+s[l],16);u&&(o[3]=parseInt(u+u,16)/255)}else if(s=e.match(n)){for(l=0;l<3;l++)o[l]=parseInt(s[l+1],0);s[4]&&(s[5]?o[3]=parseFloat(s[4])*.01:o[3]=parseFloat(s[4]))}else if(s=e.match(i)){for(l=0;l<3;l++)o[l]=Math.round(parseFloat(s[l+1])*2.55);s[4]&&(s[5]?o[3]=parseFloat(s[4])*.01:o[3]=parseFloat(s[4]))}else return(s=e.match(r))?s[1]==="transparent"?[0,0,0,0]:Ob.call(Hi,s[1])?(o=Hi[s[1]],o[3]=1,o):null:null;for(l=0;l<3;l++)o[l]=Fa(o[l],0,255);return o[3]=Fa(o[3],0,1),o};Tt.get.hsl=function(e){if(!e)return null;var t=/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/,a=e.match(t);if(a){var n=parseFloat(a[4]),i=(parseFloat(a[1])%360+360)%360,r=Fa(parseFloat(a[2]),0,100),o=Fa(parseFloat(a[3]),0,100),s=Fa(isNaN(n)?1:n,0,1);return[i,r,o,s]}return null};Tt.get.hwb=function(e){if(!e)return null;var t=/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/,a=e.match(t);if(a){var n=parseFloat(a[4]),i=(parseFloat(a[1])%360+360)%360,r=Fa(parseFloat(a[2]),0,100),o=Fa(parseFloat(a[3]),0,100),s=Fa(isNaN(n)?1:n,0,1);return[i,r,o,s]}return null};Tt.to.hex=function(){var e=Wi(arguments);return"#"+os(e[0])+os(e[1])+os(e[2])+(e[3]<1?os(Math.round(e[3]*255)):"")};Tt.to.rgb=function(){var e=Wi(arguments);return e.length<4||e[3]===1?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"};Tt.to.rgb.percent=function(){var e=Wi(arguments),t=Math.round(e[0]/255*100),a=Math.round(e[1]/255*100),n=Math.round(e[2]/255*100);return e.length<4||e[3]===1?"rgb("+t+"%, "+a+"%, "+n+"%)":"rgba("+t+"%, "+a+"%, "+n+"%, "+e[3]+")"};Tt.to.hsl=function(){var e=Wi(arguments);return e.length<4||e[3]===1?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"};Tt.to.hwb=function(){var e=Wi(arguments),t="";return e.length>=4&&e[3]!==1&&(t=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+t+")"};Tt.to.keyword=function(e){return Rb[e.slice(0,3)]};function Fa(e,t,a){return Math.min(Math.max(t,e),a)}function os(e){var t=Math.round(e).toString(16).toUpperCase();return t.length<2?"0"+t:t}});var Bu=O((A8,Db)=>{var Ka=Ru(),Mb={};for(ss in Ka)Ka.hasOwnProperty(ss)&&(Mb[Ka[ss]]=ss);var ss,Y=Db.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(vt in Y)if(Y.hasOwnProperty(vt)){if(!("channels"in Y[vt]))throw new Error("missing channels property: "+vt);if(!("labels"in Y[vt]))throw new Error("missing channel labels property: "+vt);if(Y[vt].labels.length!==Y[vt].channels)throw new Error("channel and label counts mismatch: "+vt);jb=Y[vt].channels,Lb=Y[vt].labels,delete Y[vt].channels,delete Y[vt].labels,Object.defineProperty(Y[vt],"channels",{value:jb}),Object.defineProperty(Y[vt],"labels",{value:Lb})}var jb,Lb,vt;Y.rgb.hsl=function(e){var t=e[0]/255,a=e[1]/255,n=e[2]/255,i=Math.min(t,a,n),r=Math.max(t,a,n),o=r-i,s,l,u;return r===i?s=0:t===r?s=(a-n)/o:a===r?s=2+(n-t)/o:n===r&&(s=4+(t-a)/o),s=Math.min(s*60,360),s<0&&(s+=360),u=(i+r)/2,r===i?l=0:u<=.5?l=o/(r+i):l=o/(2-r-i),[s,l*100,u*100]};Y.rgb.hsv=function(e){var t,a,n,i,r,o=e[0]/255,s=e[1]/255,l=e[2]/255,u=Math.max(o,s,l),c=u-Math.min(o,s,l),f=function(p){return(u-p)/6/c+1/2};return c===0?i=r=0:(r=c/u,t=f(o),a=f(s),n=f(l),o===u?i=n-a:s===u?i=1/3+t-n:l===u&&(i=2/3+a-t),i<0?i+=1:i>1&&(i-=1)),[i*360,r*100,u*100]};Y.rgb.hwb=function(e){var t=e[0],a=e[1],n=e[2],i=Y.rgb.hsl(e)[0],r=1/255*Math.min(t,Math.min(a,n));return n=1-1/255*Math.max(t,Math.max(a,n)),[i,r*100,n*100]};Y.rgb.cmyk=function(e){var t=e[0]/255,a=e[1]/255,n=e[2]/255,i,r,o,s;return s=Math.min(1-t,1-a,1-n),i=(1-t-s)/(1-s)||0,r=(1-a-s)/(1-s)||0,o=(1-n-s)/(1-s)||0,[i*100,r*100,o*100,s*100]};function L5(e,t){return Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2)+Math.pow(e[2]-t[2],2)}Y.rgb.keyword=function(e){var t=Mb[e];if(t)return t;var a=1/0,n;for(var i in Ka)if(Ka.hasOwnProperty(i)){var r=Ka[i],o=L5(e,r);o<a&&(a=o,n=i)}return n};Y.keyword.rgb=function(e){return Ka[e]};Y.rgb.xyz=function(e){var t=e[0]/255,a=e[1]/255,n=e[2]/255;t=t>.04045?Math.pow((t+.055)/1.055,2.4):t/12.92,a=a>.04045?Math.pow((a+.055)/1.055,2.4):a/12.92,n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92;var i=t*.4124+a*.3576+n*.1805,r=t*.2126+a*.7152+n*.0722,o=t*.0193+a*.1192+n*.9505;return[i*100,r*100,o*100]};Y.rgb.lab=function(e){var t=Y.rgb.xyz(e),a=t[0],n=t[1],i=t[2],r,o,s;return a/=95.047,n/=100,i/=108.883,a=a>.008856?Math.pow(a,1/3):7.787*a+16/116,n=n>.008856?Math.pow(n,1/3):7.787*n+16/116,i=i>.008856?Math.pow(i,1/3):7.787*i+16/116,r=116*n-16,o=500*(a-n),s=200*(n-i),[r,o,s]};Y.hsl.rgb=function(e){var t=e[0]/360,a=e[1]/100,n=e[2]/100,i,r,o,s,l;if(a===0)return l=n*255,[l,l,l];n<.5?r=n*(1+a):r=n+a-n*a,i=2*n-r,s=[0,0,0];for(var u=0;u<3;u++)o=t+1/3*-(u-1),o<0&&o++,o>1&&o--,6*o<1?l=i+(r-i)*6*o:2*o<1?l=r:3*o<2?l=i+(r-i)*(2/3-o)*6:l=i,s[u]=l*255;return s};Y.hsl.hsv=function(e){var t=e[0],a=e[1]/100,n=e[2]/100,i=a,r=Math.max(n,.01),o,s;return n*=2,a*=n<=1?n:2-n,i*=r<=1?r:2-r,s=(n+a)/2,o=n===0?2*i/(r+i):2*a/(n+a),[t,o*100,s*100]};Y.hsv.rgb=function(e){var t=e[0]/60,a=e[1]/100,n=e[2]/100,i=Math.floor(t)%6,r=t-Math.floor(t),o=255*n*(1-a),s=255*n*(1-a*r),l=255*n*(1-a*(1-r));switch(n*=255,i){case 0:return[n,l,o];case 1:return[s,n,o];case 2:return[o,n,l];case 3:return[o,s,n];case 4:return[l,o,n];case 5:return[n,o,s]}};Y.hsv.hsl=function(e){var t=e[0],a=e[1]/100,n=e[2]/100,i=Math.max(n,.01),r,o,s;return s=(2-a)*n,r=(2-a)*i,o=a*i,o/=r<=1?r:2-r,o=o||0,s/=2,[t,o*100,s*100]};Y.hwb.rgb=function(e){var t=e[0]/360,a=e[1]/100,n=e[2]/100,i=a+n,r,o,s,l;i>1&&(a/=i,n/=i),r=Math.floor(6*t),o=1-n,s=6*t-r,r&1&&(s=1-s),l=a+s*(o-a);var u,c,f;switch(r){default:case 6:case 0:u=o,c=l,f=a;break;case 1:u=l,c=o,f=a;break;case 2:u=a,c=o,f=l;break;case 3:u=a,c=l,f=o;break;case 4:u=l,c=a,f=o;break;case 5:u=o,c=a,f=l;break}return[u*255,c*255,f*255]};Y.cmyk.rgb=function(e){var t=e[0]/100,a=e[1]/100,n=e[2]/100,i=e[3]/100,r,o,s;return r=1-Math.min(1,t*(1-i)+i),o=1-Math.min(1,a*(1-i)+i),s=1-Math.min(1,n*(1-i)+i),[r*255,o*255,s*255]};Y.xyz.rgb=function(e){var t=e[0]/100,a=e[1]/100,n=e[2]/100,i,r,o;return i=t*3.2406+a*-1.5372+n*-.4986,r=t*-.9689+a*1.8758+n*.0415,o=t*.0557+a*-.204+n*1.057,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*12.92,r=r>.0031308?1.055*Math.pow(r,1/2.4)-.055:r*12.92,o=o>.0031308?1.055*Math.pow(o,1/2.4)-.055:o*12.92,i=Math.min(Math.max(0,i),1),r=Math.min(Math.max(0,r),1),o=Math.min(Math.max(0,o),1),[i*255,r*255,o*255]};Y.xyz.lab=function(e){var t=e[0],a=e[1],n=e[2],i,r,o;return t/=95.047,a/=100,n/=108.883,t=t>.008856?Math.pow(t,1/3):7.787*t+16/116,a=a>.008856?Math.pow(a,1/3):7.787*a+16/116,n=n>.008856?Math.pow(n,1/3):7.787*n+16/116,i=116*a-16,r=500*(t-a),o=200*(a-n),[i,r,o]};Y.lab.xyz=function(e){var t=e[0],a=e[1],n=e[2],i,r,o;r=(t+16)/116,i=a/500+r,o=r-n/200;var s=Math.pow(r,3),l=Math.pow(i,3),u=Math.pow(o,3);return r=s>.008856?s:(r-16/116)/7.787,i=l>.008856?l:(i-16/116)/7.787,o=u>.008856?u:(o-16/116)/7.787,i*=95.047,r*=100,o*=108.883,[i,r,o]};Y.lab.lch=function(e){var t=e[0],a=e[1],n=e[2],i,r,o;return i=Math.atan2(n,a),r=i*360/2/Math.PI,r<0&&(r+=360),o=Math.sqrt(a*a+n*n),[t,o,r]};Y.lch.lab=function(e){var t=e[0],a=e[1],n=e[2],i,r,o;return o=n/360*2*Math.PI,i=a*Math.cos(o),r=a*Math.sin(o),[t,i,r]};Y.rgb.ansi16=function(e){var t=e[0],a=e[1],n=e[2],i=1 in arguments?arguments[1]:Y.rgb.hsv(e)[2];if(i=Math.round(i/50),i===0)return 30;var r=30+(Math.round(n/255)<<2|Math.round(a/255)<<1|Math.round(t/255));return i===2&&(r+=60),r};Y.hsv.ansi16=function(e){return Y.rgb.ansi16(Y.hsv.rgb(e),e[2])};Y.rgb.ansi256=function(e){var t=e[0],a=e[1],n=e[2];if(t===a&&a===n)return t<8?16:t>248?231:Math.round((t-8)/247*24)+232;var i=16+36*Math.round(t/255*5)+6*Math.round(a/255*5)+Math.round(n/255*5);return i};Y.ansi16.rgb=function(e){var t=e%10;if(t===0||t===7)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];var a=(~~(e>50)+1)*.5,n=(t&1)*a*255,i=(t>>1&1)*a*255,r=(t>>2&1)*a*255;return[n,i,r]};Y.ansi256.rgb=function(e){if(e>=232){var t=(e-232)*10+8;return[t,t,t]}e-=16;var a,n=Math.floor(e/36)/5*255,i=Math.floor((a=e%36)/6)/5*255,r=a%6/5*255;return[n,i,r]};Y.rgb.hex=function(e){var t=((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255),a=t.toString(16).toUpperCase();return"000000".substring(a.length)+a};Y.hex.rgb=function(e){var t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];var a=t[0];t[0].length===3&&(a=a.split("").map(function(s){return s+s}).join(""));var n=parseInt(a,16),i=n>>16&255,r=n>>8&255,o=n&255;return[i,r,o]};Y.rgb.hcg=function(e){var t=e[0]/255,a=e[1]/255,n=e[2]/255,i=Math.max(Math.max(t,a),n),r=Math.min(Math.min(t,a),n),o=i-r,s,l;return o<1?s=r/(1-o):s=0,o<=0?l=0:i===t?l=(a-n)/o%6:i===a?l=2+(n-t)/o:l=4+(t-a)/o+4,l/=6,l%=1,[l*360,o*100,s*100]};Y.hsl.hcg=function(e){var t=e[1]/100,a=e[2]/100,n=1,i=0;return a<.5?n=2*t*a:n=2*t*(1-a),n<1&&(i=(a-.5*n)/(1-n)),[e[0],n*100,i*100]};Y.hsv.hcg=function(e){var t=e[1]/100,a=e[2]/100,n=t*a,i=0;return n<1&&(i=(a-n)/(1-n)),[e[0],n*100,i*100]};Y.hcg.rgb=function(e){var t=e[0]/360,a=e[1]/100,n=e[2]/100;if(a===0)return[n*255,n*255,n*255];var i=[0,0,0],r=t%1*6,o=r%1,s=1-o,l=0;switch(Math.floor(r)){case 0:i[0]=1,i[1]=o,i[2]=0;break;case 1:i[0]=s,i[1]=1,i[2]=0;break;case 2:i[0]=0,i[1]=1,i[2]=o;break;case 3:i[0]=0,i[1]=s,i[2]=1;break;case 4:i[0]=o,i[1]=0,i[2]=1;break;default:i[0]=1,i[1]=0,i[2]=s}return l=(1-a)*n,[(a*i[0]+l)*255,(a*i[1]+l)*255,(a*i[2]+l)*255]};Y.hcg.hsv=function(e){var t=e[1]/100,a=e[2]/100,n=t+a*(1-t),i=0;return n>0&&(i=t/n),[e[0],i*100,n*100]};Y.hcg.hsl=function(e){var t=e[1]/100,a=e[2]/100,n=a*(1-t)+.5*t,i=0;return n>0&&n<.5?i=t/(2*n):n>=.5&&n<1&&(i=t/(2*(1-n))),[e[0],i*100,n*100]};Y.hcg.hwb=function(e){var t=e[1]/100,a=e[2]/100,n=t+a*(1-t);return[e[0],(n-t)*100,(1-n)*100]};Y.hwb.hcg=function(e){var t=e[1]/100,a=e[2]/100,n=1-a,i=n-t,r=0;return i<1&&(r=(n-i)/(1-i)),[e[0],i*100,r*100]};Y.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]};Y.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]};Y.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]};Y.gray.hsl=Y.gray.hsv=function(e){return[0,0,e[0]]};Y.gray.hwb=function(e){return[0,100,e[0]]};Y.gray.cmyk=function(e){return[0,0,0,e[0]]};Y.gray.lab=function(e){return[e[0],0,0]};Y.gray.hex=function(e){var t=Math.round(e[0]/100*255)&255,a=(t<<16)+(t<<8)+t,n=a.toString(16).toUpperCase();return"000000".substring(n.length)+n};Y.rgb.gray=function(e){var t=(e[0]+e[1]+e[2])/3;return[t/255*100]}});var Gb=O((I8,zb)=>{var ls=Bu();function M5(){for(var e={},t=Object.keys(ls),a=t.length,n=0;n<a;n++)e[t[n]]={distance:-1,parent:null};return e}function D5(e){var t=M5(),a=[e];for(t[e].distance=0;a.length;)for(var n=a.pop(),i=Object.keys(ls[n]),r=i.length,o=0;o<r;o++){var s=i[o],l=t[s];l.distance===-1&&(l.distance=t[n].distance+1,l.parent=n,a.unshift(s))}return t}function z5(e,t){return function(a){return t(e(a))}}function G5(e,t){for(var a=[t[e].parent,e],n=ls[t[e].parent][e],i=t[e].parent;t[i].parent;)a.unshift(t[i].parent),n=z5(ls[t[i].parent][i],n),i=t[i].parent;return n.conversion=a,n}zb.exports=function(e){for(var t=D5(e),a={},n=Object.keys(t),i=n.length,r=0;r<i;r++){var o=n[r],s=t[o];s.parent!==null&&(a[o]=G5(o,t))}return a}});var Wb=O((_8,Hb)=>{var Nu=Bu(),H5=Gb(),Ln={},W5=Object.keys(Nu);function V5(e){var t=function(a){return a==null?a:(arguments.length>1&&(a=Array.prototype.slice.call(arguments)),e(a))};return"conversion"in e&&(t.conversion=e.conversion),t}function U5(e){var t=function(a){if(a==null)return a;arguments.length>1&&(a=Array.prototype.slice.call(arguments));var n=e(a);if(typeof n=="object")for(var i=n.length,r=0;r<i;r++)n[r]=Math.round(n[r]);return n};return"conversion"in e&&(t.conversion=e.conversion),t}W5.forEach(function(e){Ln[e]={},Object.defineProperty(Ln[e],"channels",{value:Nu[e].channels}),Object.defineProperty(Ln[e],"labels",{value:Nu[e].labels});var t=H5(e),a=Object.keys(t);a.forEach(function(n){var i=t[n];Ln[e][n]=U5(i),Ln[e][n].raw=V5(i)})});Hb.exports=Ln});var Jb=O((T8,Ub)=>{"use strict";var Vi=Nb(),kt=Wb(),Mu=[].slice,Vb=["keyword","gray","hex"],ju={};Object.keys(kt).forEach(function(e){ju[Mu.call(kt[e].labels).sort().join("")]=e});var cs={};function st(e,t){if(!(this instanceof st))return new st(e,t);if(t&&t in Vb&&(t=null),t&&!(t in kt))throw new Error("Unknown model: "+t);var a,n;if(e==null)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(e instanceof st)this.model=e.model,this.color=e.color.slice(),this.valpha=e.valpha;else if(typeof e=="string"){var i=Vi.get(e);if(i===null)throw new Error("Unable to parse color from string: "+e);this.model=i.model,n=kt[this.model].channels,this.color=i.value.slice(0,n),this.valpha=typeof i.value[n]=="number"?i.value[n]:1}else if(e.length){this.model=t||"rgb",n=kt[this.model].channels;var r=Mu.call(e,0,n);this.color=Lu(r,n),this.valpha=typeof e[n]=="number"?e[n]:1}else if(typeof e=="number")e&=16777215,this.model="rgb",this.color=[e>>16&255,e>>8&255,e&255],this.valpha=1;else{this.valpha=1;var o=Object.keys(e);"alpha"in e&&(o.splice(o.indexOf("alpha"),1),this.valpha=typeof e.alpha=="number"?e.alpha:0);var s=o.sort().join("");if(!(s in ju))throw new Error("Unable to parse color from object: "+JSON.stringify(e));this.model=ju[s];var l=kt[this.model].labels,u=[];for(a=0;a<l.length;a++)u.push(e[l[a]]);this.color=Lu(u)}if(cs[this.model])for(n=kt[this.model].channels,a=0;a<n;a++){var c=cs[this.model][a];c&&(this.color[a]=c(this.color[a]))}this.valpha=Math.max(0,Math.min(1,this.valpha)),Object.freeze&&Object.freeze(this)}st.prototype={toString:function(){return this.string()},toJSON:function(){return this[this.model]()},string:function(e){var t=this.model in Vi.to?this:this.rgb();t=t.round(typeof e=="number"?e:1);var a=t.valpha===1?t.color:t.color.concat(this.valpha);return Vi.to[t.model](a)},percentString:function(e){var t=this.rgb().round(typeof e=="number"?e:1),a=t.valpha===1?t.color:t.color.concat(this.valpha);return Vi.to.rgb.percent(a)},array:function(){return this.valpha===1?this.color.slice():this.color.concat(this.valpha)},object:function(){for(var e={},t=kt[this.model].channels,a=kt[this.model].labels,n=0;n<t;n++)e[a[n]]=this.color[n];return this.valpha!==1&&(e.alpha=this.valpha),e},unitArray:function(){var e=this.rgb().color;return e[0]/=255,e[1]/=255,e[2]/=255,this.valpha!==1&&e.push(this.valpha),e},unitObject:function(){var e=this.rgb().object();return e.r/=255,e.g/=255,e.b/=255,this.valpha!==1&&(e.alpha=this.valpha),e},round:function(e){return e=Math.max(e||0,0),new st(this.color.map(Z5(e)).concat(this.valpha),this.model)},alpha:function(e){return arguments.length?new st(this.color.concat(Math.max(0,Math.min(1,e))),this.model):this.valpha},red:Ue("rgb",0,et(255)),green:Ue("rgb",1,et(255)),blue:Ue("rgb",2,et(255)),hue:Ue(["hsl","hsv","hsl","hwb","hcg"],0,function(e){return(e%360+360)%360}),saturationl:Ue("hsl",1,et(100)),lightness:Ue("hsl",2,et(100)),saturationv:Ue("hsv",1,et(100)),value:Ue("hsv",2,et(100)),chroma:Ue("hcg",1,et(100)),gray:Ue("hcg",2,et(100)),white:Ue("hwb",1,et(100)),wblack:Ue("hwb",2,et(100)),cyan:Ue("cmyk",0,et(100)),magenta:Ue("cmyk",1,et(100)),yellow:Ue("cmyk",2,et(100)),black:Ue("cmyk",3,et(100)),x:Ue("xyz",0,et(100)),y:Ue("xyz",1,et(100)),z:Ue("xyz",2,et(100)),l:Ue("lab",0,et(100)),a:Ue("lab",1),b:Ue("lab",2),keyword:function(e){return arguments.length?new st(e):kt[this.model].keyword(this.color)},hex:function(e){return arguments.length?new st(e):Vi.to.hex(this.rgb().round().color)},rgbNumber:function(){var e=this.rgb().color;return(e[0]&255)<<16|(e[1]&255)<<8|e[2]&255},luminosity:function(){for(var e=this.rgb().color,t=[],a=0;a<e.length;a++){var n=e[a]/255;t[a]=n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4)}return .2126*t[0]+.7152*t[1]+.0722*t[2]},contrast:function(e){var t=this.luminosity(),a=e.luminosity();return t>a?(t+.05)/(a+.05):(a+.05)/(t+.05)},level:function(e){var t=this.contrast(e);return t>=7.1?"AAA":t>=4.5?"AA":""},isDark:function(){var e=this.rgb().color,t=(e[0]*299+e[1]*587+e[2]*114)/1e3;return t<128},isLight:function(){return!this.isDark()},negate:function(){for(var e=this.rgb(),t=0;t<3;t++)e.color[t]=255-e.color[t];return e},lighten:function(e){var t=this.hsl();return t.color[2]+=t.color[2]*e,t},darken:function(e){var t=this.hsl();return t.color[2]-=t.color[2]*e,t},saturate:function(e){var t=this.hsl();return t.color[1]+=t.color[1]*e,t},desaturate:function(e){var t=this.hsl();return t.color[1]-=t.color[1]*e,t},whiten:function(e){var t=this.hwb();return t.color[1]+=t.color[1]*e,t},blacken:function(e){var t=this.hwb();return t.color[2]+=t.color[2]*e,t},grayscale:function(){var e=this.rgb().color,t=e[0]*.3+e[1]*.59+e[2]*.11;return st.rgb(t,t,t)},fade:function(e){return this.alpha(this.valpha-this.valpha*e)},opaquer:function(e){return this.alpha(this.valpha+this.valpha*e)},rotate:function(e){var t=this.hsl(),a=t.color[0];return a=(a+e)%360,a=a<0?360+a:a,t.color[0]=a,t},mix:function(e,t){if(!e||!e.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e);var a=e.rgb(),n=this.rgb(),i=t===void 0?.5:t,r=2*i-1,o=a.alpha()-n.alpha(),s=((r*o===-1?r:(r+o)/(1+r*o))+1)/2,l=1-s;return st.rgb(s*a.red()+l*n.red(),s*a.green()+l*n.green(),s*a.blue()+l*n.blue(),a.alpha()*i+n.alpha()*(1-i))}};Object.keys(kt).forEach(function(e){if(Vb.indexOf(e)===-1){var t=kt[e].channels;st.prototype[e]=function(){if(this.model===e)return new st(this);if(arguments.length)return new st(arguments,e);var a=typeof arguments[t]=="number"?t:this.valpha;return new st(q5(kt[this.model][e].raw(this.color)).concat(a),e)},st[e]=function(a){return typeof a=="number"&&(a=Lu(Mu.call(arguments),t)),new st(a,e)}}});function J5(e,t){return Number(e.toFixed(t))}function Z5(e){return function(t){return J5(t,e)}}function Ue(e,t,a){return e=Array.isArray(e)?e:[e],e.forEach(function(n){(cs[n]||(cs[n]=[]))[t]=a}),e=e[0],function(n){var i;return arguments.length?(a&&(n=a(n)),i=this[e](),i.color[t]=n,i):(i=this[e]().color[t],a&&(i=a(i)),i)}}function et(e){return function(t){return Math.max(0,Math.min(e,t))}}function q5(e){return Array.isArray(e)?e:[e]}function Lu(e,t){for(var a=0;a<t;a++)typeof e[a]!="number"&&(e[a]=0);return e}Ub.exports=st});var pg=O((k8,ug)=>{var X5="Expected a function",Zb="__lodash_placeholder__",en=1,ps=2,$5=4,Qa=8,Ui=16,Mn=32,Ji=64,eg=128,Y5=256,tg=512,qb=1/0,K5=9007199254740991,Q5=17976931348623157e292,Xb=0/0,eF=[["ary",eg],["bind",en],["bindKey",ps],["curry",Qa],["curryRight",Ui],["flip",tg],["partial",Mn],["partialRight",Ji],["rearg",Y5]],tF="[object Function]",aF="[object GeneratorFunction]",nF="[object Symbol]",iF=/[\\^$.*+?()[\]{}|]/g,rF=/^\s+|\s+$/g,oF=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,sF=/\{\n\/\* \[wrapped with (.+)\] \*/,lF=/,? & /,cF=/^[-+]0x[0-9a-f]+$/i,uF=/^0b[01]+$/i,pF=/^\[object .+?Constructor\]$/,dF=/^0o[0-7]+$/i,fF=/^(?:0|[1-9]\d*)$/,mF=parseInt,hF=typeof global=="object"&&global&&global.Object===Object&&global,vF=typeof self=="object"&&self&&self.Object===Object&&self,qi=hF||vF||Function("return this")();function ag(e,t,a){switch(a.length){case 0:return e.call(t);case 1:return e.call(t,a[0]);case 2:return e.call(t,a[0],a[1]);case 3:return e.call(t,a[0],a[1],a[2])}return e.apply(t,a)}function bF(e,t){for(var a=-1,n=e?e.length:0;++a<n&&t(e[a],a,e)!==!1;);return e}function gF(e,t){var a=e?e.length:0;return!!a&&yF(e,t,0)>-1}function xF(e,t,a,n){for(var i=e.length,r=a+(n?1:-1);n?r--:++r<i;)if(t(e[r],r,e))return r;return-1}function yF(e,t,a){if(t!==t)return xF(e,wF,a);for(var n=a-1,i=e.length;++n<i;)if(e[n]===t)return n;return-1}function wF(e){return e!==e}function EF(e,t){for(var a=e.length,n=0;a--;)e[a]===t&&n++;return n}function SF(e,t){return e==null?void 0:e[t]}function CF(e){var t=!1;if(e!=null&&typeof e.toString!="function")try{t=!!(e+"")}catch(a){}return t}function ng(e,t){for(var a=-1,n=e.length,i=0,r=[];++a<n;){var o=e[a];(o===t||o===Zb)&&(e[a]=Zb,r[i++]=a)}return r}var AF=Function.prototype,ig=Object.prototype,Du=qi["__core-js_shared__"],$b=function(){var e=/[^.]+$/.exec(Du&&Du.keys&&Du.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),rg=AF.toString,IF=ig.hasOwnProperty,og=ig.toString,_F=RegExp("^"+rg.call(IF).replace(iF,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),TF=Object.create,us=Math.max,kF=Math.min,Yb=function(){var e=Kb(Object,"defineProperty"),t=Kb.name;return t&&t.length>2?e:void 0}();function FF(e){return Dn(e)?TF(e):{}}function PF(e){if(!Dn(e)||HF(e))return!1;var t=JF(e)||CF(e)?_F:pF;return t.test(VF(e))}function OF(e,t,a,n){for(var i=-1,r=e.length,o=a.length,s=-1,l=t.length,u=us(r-o,0),c=Array(l+u),f=!n;++s<l;)c[s]=t[s];for(;++i<o;)(f||i<r)&&(c[a[i]]=e[i]);for(;u--;)c[s++]=e[i++];return c}function RF(e,t,a,n){for(var i=-1,r=e.length,o=-1,s=a.length,l=-1,u=t.length,c=us(r-s,0),f=Array(c+u),p=!n;++i<c;)f[i]=e[i];for(var b=i;++l<u;)f[b+l]=t[l];for(;++o<s;)(p||i<r)&&(f[b+a[o]]=e[i++]);return f}function BF(e,t){var a=-1,n=e.length;for(t||(t=Array(n));++a<n;)t[a]=e[a];return t}function NF(e,t,a){var n=t&en,i=Zi(e);function r(){var o=this&&this!==qi&&this instanceof r?i:e;return o.apply(n?a:this,arguments)}return r}function Zi(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var a=FF(e.prototype),n=e.apply(a,t);return Dn(n)?n:a}}function jF(e,t,a){var n=Zi(e);function i(){for(var r=arguments.length,o=Array(r),s=r,l=lg(i);s--;)o[s]=arguments[s];var u=r<3&&o[0]!==l&&o[r-1]!==l?[]:ng(o,l);if(r-=u.length,r<a)return sg(e,t,zu,i.placeholder,void 0,o,u,void 0,void 0,a-r);var c=this&&this!==qi&&this instanceof i?n:e;return ag(c,this,o)}return i}function zu(e,t,a,n,i,r,o,s,l,u){var c=t&eg,f=t&en,p=t&ps,b=t&(Qa|Ui),d=t&tg,m=p?void 0:Zi(e);function h(){for(var v=arguments.length,x=Array(v),E=v;E--;)x[E]=arguments[E];if(b)var g=lg(h),w=EF(x,g);if(n&&(x=OF(x,n,i,b)),r&&(x=RF(x,r,o,b)),v-=w,b&&v<u){var C=ng(x,g);return sg(e,t,zu,h.placeholder,a,x,C,s,l,u-v)}var y=f?a:this,S=p?y[e]:e;return v=x.length,s?x=WF(x,s):d&&v>1&&x.reverse(),c&&l<v&&(x.length=l),this&&this!==qi&&this instanceof h&&(S=m||Zi(S)),S.apply(y,x)}return h}function LF(e,t,a,n){var i=t&en,r=Zi(e);function o(){for(var s=-1,l=arguments.length,u=-1,c=n.length,f=Array(c+l),p=this&&this!==qi&&this instanceof o?r:e;++u<c;)f[u]=n[u];for(;l--;)f[u++]=arguments[++s];return ag(p,i?a:this,f)}return o}function sg(e,t,a,n,i,r,o,s,l,u){var c=t&Qa,f=c?o:void 0,p=c?void 0:o,b=c?r:void 0,d=c?void 0:r;t|=c?Mn:Ji,t&=~(c?Ji:Mn),t&$5||(t&=~(en|ps));var m=a(e,t,i,b,f,d,p,s,l,u);return m.placeholder=n,cg(m,e,t)}function MF(e,t,a,n,i,r,o,s){var l=t&ps;if(!l&&typeof e!="function")throw new TypeError(X5);var u=n?n.length:0;if(u||(t&=~(Mn|Ji),n=i=void 0),o=o===void 0?o:us(Qb(o),0),s=s===void 0?s:Qb(s),u-=i?i.length:0,t&Ji){var c=n,f=i;n=i=void 0}var p=[e,t,a,n,i,c,f,r,o,s];if(e=p[0],t=p[1],a=p[2],n=p[3],i=p[4],s=p[9]=p[9]==null?l?0:e.length:us(p[9]-u,0),!s&&t&(Qa|Ui)&&(t&=~(Qa|Ui)),!t||t==en)var b=NF(e,t,a);else t==Qa||t==Ui?b=jF(e,t,s):(t==Mn||t==(en|Mn))&&!i.length?b=LF(e,t,a,n):b=zu.apply(void 0,p);return cg(b,e,t)}function lg(e){var t=e;return t.placeholder}function Kb(e,t){var a=SF(e,t);return PF(a)?a:void 0}function DF(e){var t=e.match(sF);return t?t[1].split(lF):[]}function zF(e,t){var a=t.length,n=a-1;return t[n]=(a>1?"& ":"")+t[n],t=t.join(a>2?", ":" "),e.replace(oF,`{ /* [wrapped with `+t+`] */ -`)}function DF(e,t){return t=t==null?$5:t,!!t&&(typeof e=="number"||pF.test(e))&&e>-1&&e%1==0&&e<t}function zF(e){return!!$b&&$b in e}function GF(e,t){for(var a=e.length,n=_F(t.length,a),i=OF(e);n--;){var r=t[n];e[n]=DF(r,a)?i[r]:void 0}return e}var cg=Yb?function(e,t,a){var n=t+"";return Yb(e,"toString",{configurable:!0,enumerable:!1,value:XF(MF(n,WF(LF(n),a)))})}:$F;function HF(e){if(e!=null){try{return rg.call(e)}catch(t){}try{return e+""}catch(t){}}return""}function WF(e,t){return hF(K5,function(a){var n="_."+a[0];t&a[1]&&!vF(e,n)&&e.push(n)}),e.sort()}function Gu(e,t,a){t=a?void 0:t;var n=jF(e,Qa,void 0,void 0,void 0,void 0,void 0,t);return n.placeholder=Gu.placeholder,n}function VF(e){var t=Dn(e)?og.call(e):"";return t==Q5||t==eF}function Dn(e){var t=typeof e;return!!e&&(t=="object"||t=="function")}function UF(e){return!!e&&typeof e=="object"}function JF(e){return typeof e=="symbol"||UF(e)&&og.call(e)==tF}function ZF(e){if(!e)return e===0?e:0;if(e=qF(e),e===qb||e===-qb){var t=e<0?-1:1;return t*Y5}return e===e?e:0}function Qb(e){var t=ZF(e),a=t%1;return t===t?a?t-a:t:0}function qF(e){if(typeof e=="number")return e;if(JF(e))return Xb;if(Dn(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Dn(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=e.replace(nF,"");var a=lF.test(e);return a||uF.test(e)?dF(e.slice(2),a?2:8):sF.test(e)?Xb:+e}function XF(e){return function(){return e}}function $F(e){return e}Gu.placeholder={};ug.exports=Gu});var Zg=O((hz,Jg)=>{"use strict";var{PassThrough:NP}=require("stream");Jg.exports=e=>{e={...e};let{array:t}=e,{encoding:a}=e,n=a==="buffer",i=!1;t?i=!(a||n):a=a||"utf8",n&&(a=null);let r=new NP({objectMode:i});a&&r.setEncoding(a);let o=0,s=[];return r.on("data",l=>{s.push(l),i?o=s.length:o+=l.length}),r.getBufferedValue=()=>t?s:n?Buffer.concat(s,o):s.join(""),r.getBufferedLength=()=>o,r}});var qg=O((vz,Yi)=>{"use strict";var{constants:jP}=require("buffer"),LP=require("stream"),{promisify:MP}=require("util"),DP=Zg(),zP=MP(LP.pipeline),vs=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};async function Yu(e,t){if(!e)throw new Error("Expected a stream");t={maxBuffer:1/0,...t};let{maxBuffer:a}=t,n=DP(t);return await new Promise((i,r)=>{let o=s=>{s&&n.getBufferedLength()<=jP.MAX_LENGTH&&(s.bufferedData=n.getBufferedValue()),r(s)};(async()=>{try{await zP(e,n),i()}catch(s){o(s)}})(),n.on("data",()=>{n.getBufferedLength()>a&&o(new vs)})}),n.getBufferedValue()}Yi.exports=Yu;Yi.exports.buffer=(e,t)=>Yu(e,{...t,encoding:"buffer"});Yi.exports.array=(e,t)=>Yu(e,{...t,array:!0});Yi.exports.MaxBufferError=vs});var Ax=O((tr,up)=>{(function(t,a){typeof tr=="object"&&typeof up=="object"?up.exports=a():typeof define=="function"&&define.amd?define([],a):typeof tr=="object"?tr.nunjucks=a():t.nunjucks=a()})(typeof self!="undefined"?self:tr,function(){return function(e){var t={};function a(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,a),i.l=!0,i.exports}return a.m=e,a.c=t,a.d=function(n,i,r){a.o(n,i)||Object.defineProperty(n,i,{configurable:!1,enumerable:!0,get:r})},a.n=function(n){var i=n&&n.__esModule?function(){return n.default}:function(){return n};return a.d(i,"a",i),i},a.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},a.p="",a(a.s=11)}([function(e,s,a){"use strict";var n=Array.prototype,i=Object.prototype,r={"&":"&",'"':""","'":"'","<":"<",">":">","\\":"\"},o=/[&"'<>\\]/g,s=e.exports={};function l(T,j){return i.hasOwnProperty.call(T,j)}s.hasOwnProp=l;function u(T){return r[T]}function c(T,j,M){if(M.Update||(M=new s.TemplateError(M)),M.Update(T),!j){var D=M;M=new Error(D.message),M.name=D.name}return M}s._prettifyError=c;function f(T,j,M){var D,V;T instanceof Error&&(V=T,T=V.name+": "+V.message),Object.setPrototypeOf?(D=new Error(T),Object.setPrototypeOf(D,f.prototype)):(D=this,Object.defineProperty(D,"message",{enumerable:!1,writable:!0,value:T})),Object.defineProperty(D,"name",{value:"Template render error"}),Error.captureStackTrace&&Error.captureStackTrace(D,this.constructor);var q;if(V){var Z=Object.getOwnPropertyDescriptor(V,"stack");q=Z&&(Z.get||function(){return Z.value}),q||(q=function(){return V.stack})}else{var pe=new Error(T).stack;q=function(){return pe}}return Object.defineProperty(D,"stack",{get:function(){return q.call(D)}}),Object.defineProperty(D,"cause",{value:V}),D.lineno=j,D.colno=M,D.firstUpdate=!0,D.Update=function(ee){var oe="("+(ee||"unknown path")+")";return this.firstUpdate&&(this.lineno&&this.colno?oe+=" [Line "+this.lineno+", Column "+this.colno+"]":this.lineno&&(oe+=" [Line "+this.lineno+"]")),oe+=` - `,this.firstUpdate&&(oe+=" "),this.message=oe+(this.message||""),this.firstUpdate=!1,this},D}Object.setPrototypeOf?Object.setPrototypeOf(f.prototype,Error.prototype):f.prototype=Object.create(Error.prototype,{constructor:{value:f}}),s.TemplateError=f;function p(T){return T.replace(o,u)}s.escape=p;function b(T){return i.toString.call(T)==="[object Function]"}s.isFunction=b;function d(T){return i.toString.call(T)==="[object Array]"}s.isArray=d;function h(T){return i.toString.call(T)==="[object String]"}s.isString=h;function m(T){return i.toString.call(T)==="[object Object]"}s.isObject=m;function v(T){return T?typeof T=="string"?T.split("."):[T]:[]}function x(T){var j=v(T);return function(D){for(var V=D,q=0;q<j.length;q++){var Z=j[q];if(l(V,Z))V=V[Z];else return}return V}}s.getAttrGetter=x;function E(T,j,M){for(var D={},V=b(j)?j:x(j),q=0;q<T.length;q++){var Z=T[q],pe=V(Z,q);if(pe===void 0&&M===!0)throw new TypeError('groupby: attribute "'+j+'" resolved to undefined');(D[pe]||(D[pe]=[])).push(Z)}return D}s.groupBy=E;function g(T){return Array.prototype.slice.call(T)}s.toArray=g;function w(T){var j=[];if(!T)return j;for(var M=T.length,D=g(arguments).slice(1),V=-1;++V<M;)P(D,T[V])===-1&&j.push(T[V]);return j}s.without=w;function C(T,j){for(var M="",D=0;D<j;D++)M+=T;return M}s.repeat=C;function y(T,j,M){if(T!=null){if(n.forEach&&T.forEach===n.forEach)T.forEach(j,M);else if(T.length===+T.length)for(var D=0,V=T.length;D<V;D++)j.call(M,T[D],D,T)}}s.each=y;function S(T,j){var M=[];if(T==null)return M;if(n.map&&T.map===n.map)return T.map(j);for(var D=0;D<T.length;D++)M[M.length]=j(T[D],D);return T.length===+T.length&&(M.length=T.length),M}s.map=S;function I(T,j,M){var D=-1;function V(){D++,D<T.length?j(T[D],D,V,M):M()}V()}s.asyncIter=I;function _(T,j,M){var D=F(T||{}),V=D.length,q=-1;function Z(){q++;var pe=D[q];q<V?j(pe,T[pe],q,V,Z):M()}Z()}s.asyncFor=_;function P(T,j,M){return Array.prototype.indexOf.call(T||[],j,M)}s.indexOf=P;function F(T){var j=[];for(var M in T)l(T,M)&&j.push(M);return j}s.keys=F;function B(T){return F(T).map(function(j){return[j,T[j]]})}s._entries=B;function N(T){return F(T).map(function(j){return T[j]})}s._values=N;function L(T,j){return T=T||{},F(j).forEach(function(M){T[M]=j[M]}),T}s._assign=s.extend=L;function k(T,j){if(d(j)||h(j))return j.indexOf(T)!==-1;if(m(j))return T in j;throw new Error('Cannot use "in" operator to search for "'+T+'" in unexpected types.')}s.inOperator=k},function(e,t,a){"use strict";function n(h,m){for(var v=0;v<m.length;v++){var x=m[v];x.enumerable=x.enumerable||!1,x.configurable=!0,"value"in x&&(x.writable=!0),Object.defineProperty(h,r(x.key),x)}}function i(h,m,v){return m&&n(h.prototype,m),v&&n(h,v),Object.defineProperty(h,"prototype",{writable:!1}),h}function r(h){var m=o(h,"string");return typeof m=="symbol"?m:String(m)}function o(h,m){if(typeof h!="object"||h===null)return h;var v=h[Symbol.toPrimitive];if(v!==void 0){var x=v.call(h,m||"default");if(typeof x!="object")return x;throw new TypeError("@@toPrimitive must return a primitive value.")}return(m==="string"?String:Number)(h)}function s(h,m){h.prototype=Object.create(m.prototype),h.prototype.constructor=h,l(h,m)}function l(h,m){return l=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(x,E){return x.__proto__=E,x},l(h,m)}var u=a(16),c=a(0);function f(h,m){return typeof h!="function"||typeof m!="function"?m:function(){var x=this.parent;this.parent=h;var E=m.apply(this,arguments);return this.parent=x,E}}function p(h,m,v){v=v||{},c.keys(v).forEach(function(E){v[E]=f(h.prototype[E],v[E])});var x=function(E){s(g,E);function g(){return E.apply(this,arguments)||this}return i(g,[{key:"typename",get:function(){return m}}]),g}(h);return c._assign(x.prototype,v),x}var b=function(){function h(){this.init.apply(this,arguments)}var m=h.prototype;return m.init=function(){},h.extend=function(x,E){return typeof x=="object"&&(E=x,x="anonymous"),p(this,x,E)},i(h,[{key:"typename",get:function(){return this.constructor.name}}]),h}(),d=function(h){s(m,h);function m(){var x,E;return E=h.call(this)||this,(x=E).init.apply(x,arguments),E}var v=m.prototype;return v.init=function(){},m.extend=function(E,g){return typeof E=="object"&&(g=E,E="anonymous"),p(this,E,g)},i(m,[{key:"typename",get:function(){return this.constructor.name}}]),m}(u);e.exports={Obj:b,EmitterObj:d}},function(e,t,a){"use strict";var n=a(0),i=Array.from,r=typeof Symbol=="function"&&Symbol.iterator&&typeof i=="function",o=function(){function S(_,P){this.variables=Object.create(null),this.parent=_,this.topLevel=!1,this.isolateWrites=P}var I=S.prototype;return I.set=function(P,F,B){var N=P.split("."),L=this.variables,k=this;if(B&&(k=this.resolve(N[0],!0))){k.set(P,F);return}for(var T=0;T<N.length-1;T++){var j=N[T];L[j]||(L[j]={}),L=L[j]}L[N[N.length-1]]=F},I.get=function(P){var F=this.variables[P];return F!==void 0?F:null},I.lookup=function(P){var F=this.parent,B=this.variables[P];return B!==void 0?B:F&&F.lookup(P)},I.resolve=function(P,F){var B=F&&this.isolateWrites?void 0:this.parent,N=this.variables[P];return N!==void 0?this:B&&B.resolve(P)},I.push=function(P){return new S(this,P)},I.pop=function(){return this.parent},S}();function s(S,I,_){return function(){for(var F=arguments.length,B=new Array(F),N=0;N<F;N++)B[N]=arguments[N];var L=f(B),k,T=c(B);if(L>S.length)k=B.slice(0,S.length),B.slice(k.length,L).forEach(function(D,V){V<I.length&&(T[I[V]]=D)}),k.push(T);else if(L<S.length){k=B.slice(0,L);for(var j=L;j<S.length;j++){var M=S[j];k.push(T[M]),delete T[M]}k.push(T)}else k=B;return _.apply(this,k)}}function l(S){return S.__keywords=!0,S}function u(S){return S&&Object.prototype.hasOwnProperty.call(S,"__keywords")}function c(S){var I=S.length;if(I){var _=S[I-1];if(u(_))return _}return{}}function f(S){var I=S.length;if(I===0)return 0;var _=S[I-1];return u(_)?I-1:I}function p(S){if(typeof S!="string")return S;this.val=S,this.length=S.length}p.prototype=Object.create(String.prototype,{length:{writable:!0,configurable:!0,value:0}}),p.prototype.valueOf=function(){return this.val},p.prototype.toString=function(){return this.val};function b(S,I){return S instanceof p?new p(I):I.toString()}function d(S){var I=typeof S;return I==="string"?new p(S):I!=="function"?S:function(P){var F=S.apply(this,arguments);return typeof F=="string"?new p(F):F}}function h(S,I){return S=S!=null?S:"",I&&!(S instanceof p)&&(S=n.escape(S.toString())),S}function m(S,I,_){if(S==null)throw new n.TemplateError("attempted to output null or undefined value",I+1,_+1);return S}function v(S,I){if(S!=null)return typeof S[I]=="function"?function(){for(var _=arguments.length,P=new Array(_),F=0;F<_;F++)P[F]=arguments[F];return S[I].apply(S,P)}:S[I]}function x(S,I,_,P){if(S){if(typeof S!="function")throw new Error("Unable to call `"+I+"`, which is not a function")}else throw new Error("Unable to call `"+I+"`, which is undefined or falsey");return S.apply(_,P)}function E(S,I,_){var P=I.lookup(_);return P!==void 0?P:S.lookup(_)}function g(S,I,_){return S.lineno?S:new n.TemplateError(S,I,_)}function w(S,I,_,P){if(n.isArray(S)){var F=S.length;n.asyncIter(S,function(N,L,k){switch(I){case 1:_(N,L,F,k);break;case 2:_(N[0],N[1],L,F,k);break;case 3:_(N[0],N[1],N[2],L,F,k);break;default:N.push(L,F,k),_.apply(this,N)}},P)}else n.asyncFor(S,function(N,L,k,T,j){_(N,L,k,T,j)},P)}function C(S,I,_,P){var F=0,B,N;function L(V,q){F++,N[V]=q,F===B&&P(null,N.join(""))}if(n.isArray(S))if(B=S.length,N=new Array(B),B===0)P(null,"");else for(var k=0;k<S.length;k++){var T=S[k];switch(I){case 1:_(T,k,B,L);break;case 2:_(T[0],T[1],k,B,L);break;case 3:_(T[0],T[1],T[2],k,B,L);break;default:T.push(k,B,L),_.apply(this,T)}}else{var j=n.keys(S||{});if(B=j.length,N=new Array(B),B===0)P(null,"");else for(var M=0;M<j.length;M++){var D=j[M];_(D,S[D],M,B,L)}}}function y(S){return typeof S!="object"||S===null||n.isArray(S)?S:r&&Symbol.iterator in S?i(S):S}e.exports={Frame:o,makeMacro:s,makeKeywordArgs:l,numArgs:f,suppressValue:h,ensureDefined:m,memberLookup:v,contextOrFrameLookup:E,callWrap:x,handleError:g,isArray:n.isArray,keys:n.keys,SafeString:p,copySafeness:b,markSafe:d,asyncEach:w,asyncAll:C,inOperator:n.inOperator,fromIterator:y}},function(e,t,a){"use strict";function n(te,ie){for(var we=0;we<ie.length;we++){var ge=ie[we];ge.enumerable=ge.enumerable||!1,ge.configurable=!0,"value"in ge&&(ge.writable=!0),Object.defineProperty(te,r(ge.key),ge)}}function i(te,ie,we){return ie&&n(te.prototype,ie),we&&n(te,we),Object.defineProperty(te,"prototype",{writable:!1}),te}function r(te){var ie=o(te,"string");return typeof ie=="symbol"?ie:String(ie)}function o(te,ie){if(typeof te!="object"||te===null)return te;var we=te[Symbol.toPrimitive];if(we!==void 0){var ge=we.call(te,ie||"default");if(typeof ge!="object")return ge;throw new TypeError("@@toPrimitive must return a primitive value.")}return(ie==="string"?String:Number)(te)}function s(te,ie){te.prototype=Object.create(ie.prototype),te.prototype.constructor=te,l(te,ie)}function l(te,ie){return l=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(ge,Ie){return ge.__proto__=Ie,ge},l(te,ie)}var u=a(1),c=u.Obj;function f(te,ie,we){te instanceof ie&&we.push(te),te instanceof p&&te.findAll(ie,we)}var p=function(te){s(ie,te);function ie(){return te.apply(this,arguments)||this}var we=ie.prototype;return we.init=function(Ie,Xe){for(var St=arguments,Za=this,_i=arguments.length,Y_=new Array(_i>2?_i-2:0),$r=2;$r<_i;$r++)Y_[$r-2]=arguments[$r];this.lineno=Ie,this.colno=Xe,this.fields.forEach(function(K_,Q_){var jc=St[Q_+2];jc===void 0&&(jc=null),Za[K_]=jc})},we.findAll=function(Ie,Xe){var St=this;return Xe=Xe||[],this instanceof d?this.children.forEach(function(Za){return f(Za,Ie,Xe)}):this.fields.forEach(function(Za){return f(St[Za],Ie,Xe)}),Xe},we.iterFields=function(Ie){var Xe=this;this.fields.forEach(function(St){Ie(Xe[St],St)})},ie}(c),b=function(te){s(ie,te);function ie(){return te.apply(this,arguments)||this}return i(ie,[{key:"typename",get:function(){return"Value"}},{key:"fields",get:function(){return["value"]}}]),ie}(p),d=function(te){s(ie,te);function ie(){return te.apply(this,arguments)||this}var we=ie.prototype;return we.init=function(Ie,Xe,St){te.prototype.init.call(this,Ie,Xe,St||[])},we.addChild=function(Ie){this.children.push(Ie)},i(ie,[{key:"typename",get:function(){return"NodeList"}},{key:"fields",get:function(){return["children"]}}]),ie}(p),h=d.extend("Root"),m=b.extend("Literal"),v=b.extend("Symbol"),x=d.extend("Group"),E=d.extend("Array"),g=p.extend("Pair",{fields:["key","value"]}),w=d.extend("Dict"),C=p.extend("LookupVal",{fields:["target","val"]}),y=p.extend("If",{fields:["cond","body","else_"]}),S=y.extend("IfAsync"),I=p.extend("InlineIf",{fields:["cond","body","else_"]}),_=p.extend("For",{fields:["arr","name","body","else_"]}),P=_.extend("AsyncEach"),F=_.extend("AsyncAll"),B=p.extend("Macro",{fields:["name","args","body"]}),N=B.extend("Caller"),L=p.extend("Import",{fields:["template","target","withContext"]}),k=function(te){s(ie,te);function ie(){return te.apply(this,arguments)||this}var we=ie.prototype;return we.init=function(Ie,Xe,St,Za,_i){te.prototype.init.call(this,Ie,Xe,St,Za||new d,_i)},i(ie,[{key:"typename",get:function(){return"FromImport"}},{key:"fields",get:function(){return["template","names","withContext"]}}]),ie}(p),T=p.extend("FunCall",{fields:["name","args"]}),j=T.extend("Filter"),M=j.extend("FilterAsync",{fields:["name","args","symbol"]}),D=w.extend("KeywordArgs"),V=p.extend("Block",{fields:["name","body"]}),q=p.extend("Super",{fields:["blockName","symbol"]}),Z=p.extend("TemplateRef",{fields:["template"]}),pe=Z.extend("Extends"),fe=p.extend("Include",{fields:["template","ignoreMissing"]}),ee=p.extend("Set",{fields:["targets","value"]}),oe=p.extend("Switch",{fields:["expr","cases","default"]}),U=p.extend("Case",{fields:["cond","body"]}),X=d.extend("Output"),$=p.extend("Capture",{fields:["body"]}),he=m.extend("TemplateData"),qe=p.extend("UnaryOp",{fields:["target"]}),ze=p.extend("BinOp",{fields:["left","right"]}),ht=ze.extend("In"),R=ze.extend("Is"),z=ze.extend("Or"),J=ze.extend("And"),H=qe.extend("Not"),ne=ze.extend("Add"),K=ze.extend("Concat"),Ae=ze.extend("Sub"),ue=ze.extend("Mul"),Ne=ze.extend("Div"),Nt=ze.extend("FloorDiv"),Vt=ze.extend("Mod"),Ia=ze.extend("Pow"),J_=qe.extend("Neg"),Z_=qe.extend("Pos"),q_=p.extend("Compare",{fields:["expr","ops"]}),X_=p.extend("CompareOperand",{fields:["expr","type"]}),Nc=p.extend("CallExtension",{init:function(ie,we,ge,Ie){this.parent(),this.extName=ie.__name||ie,this.prop=we,this.args=ge||new d,this.contentArgs=Ie||[],this.autoescape=ie.autoescape},fields:["extName","prop","args","contentArgs"]}),$_=Nc.extend("CallExtensionAsync");function Sn(te,ie,we){var ge=te.split(` +`)}function GF(e,t){return t=t==null?K5:t,!!t&&(typeof e=="number"||fF.test(e))&&e>-1&&e%1==0&&e<t}function HF(e){return!!$b&&$b in e}function WF(e,t){for(var a=e.length,n=kF(t.length,a),i=BF(e);n--;){var r=t[n];e[n]=GF(r,a)?i[r]:void 0}return e}var cg=Yb?function(e,t,a){var n=t+"";return Yb(e,"toString",{configurable:!0,enumerable:!1,value:YF(zF(n,UF(DF(n),a)))})}:KF;function VF(e){if(e!=null){try{return rg.call(e)}catch(t){}try{return e+""}catch(t){}}return""}function UF(e,t){return bF(eF,function(a){var n="_."+a[0];t&a[1]&&!gF(e,n)&&e.push(n)}),e.sort()}function Gu(e,t,a){t=a?void 0:t;var n=MF(e,Qa,void 0,void 0,void 0,void 0,void 0,t);return n.placeholder=Gu.placeholder,n}function JF(e){var t=Dn(e)?og.call(e):"";return t==tF||t==aF}function Dn(e){var t=typeof e;return!!e&&(t=="object"||t=="function")}function ZF(e){return!!e&&typeof e=="object"}function qF(e){return typeof e=="symbol"||ZF(e)&&og.call(e)==nF}function XF(e){if(!e)return e===0?e:0;if(e=$F(e),e===qb||e===-qb){var t=e<0?-1:1;return t*Q5}return e===e?e:0}function Qb(e){var t=XF(e),a=t%1;return t===t?a?t-a:t:0}function $F(e){if(typeof e=="number")return e;if(qF(e))return Xb;if(Dn(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Dn(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=e.replace(rF,"");var a=uF.test(e);return a||dF.test(e)?mF(e.slice(2),a?2:8):cF.test(e)?Xb:+e}function YF(e){return function(){return e}}function KF(e){return e}Gu.placeholder={};ug.exports=Gu});var Zg=O((mz,Jg)=>{"use strict";var{PassThrough:LP}=require("stream");Jg.exports=e=>{e={...e};let{array:t}=e,{encoding:a}=e,n=a==="buffer",i=!1;t?i=!(a||n):a=a||"utf8",n&&(a=null);let r=new LP({objectMode:i});a&&r.setEncoding(a);let o=0,s=[];return r.on("data",l=>{s.push(l),i?o=s.length:o+=l.length}),r.getBufferedValue=()=>t?s:n?Buffer.concat(s,o):s.join(""),r.getBufferedLength=()=>o,r}});var qg=O((hz,Yi)=>{"use strict";var{constants:MP}=require("buffer"),DP=require("stream"),{promisify:zP}=require("util"),GP=Zg(),HP=zP(DP.pipeline),vs=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};async function Yu(e,t){if(!e)throw new Error("Expected a stream");t={maxBuffer:1/0,...t};let{maxBuffer:a}=t,n=GP(t);return await new Promise((i,r)=>{let o=s=>{s&&n.getBufferedLength()<=MP.MAX_LENGTH&&(s.bufferedData=n.getBufferedValue()),r(s)};(async()=>{try{await HP(e,n),i()}catch(s){o(s)}})(),n.on("data",()=>{n.getBufferedLength()>a&&o(new vs)})}),n.getBufferedValue()}Yi.exports=Yu;Yi.exports.buffer=(e,t)=>Yu(e,{...t,encoding:"buffer"});Yi.exports.array=(e,t)=>Yu(e,{...t,array:!0});Yi.exports.MaxBufferError=vs});var Ax=O((tr,up)=>{(function(t,a){typeof tr=="object"&&typeof up=="object"?up.exports=a():typeof define=="function"&&define.amd?define([],a):typeof tr=="object"?tr.nunjucks=a():t.nunjucks=a()})(typeof self!="undefined"?self:tr,function(){return function(e){var t={};function a(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,a),i.l=!0,i.exports}return a.m=e,a.c=t,a.d=function(n,i,r){a.o(n,i)||Object.defineProperty(n,i,{configurable:!1,enumerable:!0,get:r})},a.n=function(n){var i=n&&n.__esModule?function(){return n.default}:function(){return n};return a.d(i,"a",i),i},a.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},a.p="",a(a.s=11)}([function(e,s,a){"use strict";var n=Array.prototype,i=Object.prototype,r={"&":"&",'"':""","'":"'","<":"<",">":">","\\":"\"},o=/[&"'<>\\]/g,s=e.exports={};function l(T,N){return i.hasOwnProperty.call(T,N)}s.hasOwnProp=l;function u(T){return r[T]}function c(T,N,M){if(M.Update||(M=new s.TemplateError(M)),M.Update(T),!N){var D=M;M=new Error(D.message),M.name=D.name}return M}s._prettifyError=c;function f(T,N,M){var D,V;T instanceof Error&&(V=T,T=V.name+": "+V.message),Object.setPrototypeOf?(D=new Error(T),Object.setPrototypeOf(D,f.prototype)):(D=this,Object.defineProperty(D,"message",{enumerable:!1,writable:!0,value:T})),Object.defineProperty(D,"name",{value:"Template render error"}),Error.captureStackTrace&&Error.captureStackTrace(D,this.constructor);var q;if(V){var Z=Object.getOwnPropertyDescriptor(V,"stack");q=Z&&(Z.get||function(){return Z.value}),q||(q=function(){return V.stack})}else{var pe=new Error(T).stack;q=function(){return pe}}return Object.defineProperty(D,"stack",{get:function(){return q.call(D)}}),Object.defineProperty(D,"cause",{value:V}),D.lineno=N,D.colno=M,D.firstUpdate=!0,D.Update=function(ee){var oe="("+(ee||"unknown path")+")";return this.firstUpdate&&(this.lineno&&this.colno?oe+=" [Line "+this.lineno+", Column "+this.colno+"]":this.lineno&&(oe+=" [Line "+this.lineno+"]")),oe+=` + `,this.firstUpdate&&(oe+=" "),this.message=oe+(this.message||""),this.firstUpdate=!1,this},D}Object.setPrototypeOf?Object.setPrototypeOf(f.prototype,Error.prototype):f.prototype=Object.create(Error.prototype,{constructor:{value:f}}),s.TemplateError=f;function p(T){return T.replace(o,u)}s.escape=p;function b(T){return i.toString.call(T)==="[object Function]"}s.isFunction=b;function d(T){return i.toString.call(T)==="[object Array]"}s.isArray=d;function m(T){return i.toString.call(T)==="[object String]"}s.isString=m;function h(T){return i.toString.call(T)==="[object Object]"}s.isObject=h;function v(T){return T?typeof T=="string"?T.split("."):[T]:[]}function x(T){var N=v(T);return function(D){for(var V=D,q=0;q<N.length;q++){var Z=N[q];if(l(V,Z))V=V[Z];else return}return V}}s.getAttrGetter=x;function E(T,N,M){for(var D={},V=b(N)?N:x(N),q=0;q<T.length;q++){var Z=T[q],pe=V(Z,q);if(pe===void 0&&M===!0)throw new TypeError('groupby: attribute "'+N+'" resolved to undefined');(D[pe]||(D[pe]=[])).push(Z)}return D}s.groupBy=E;function g(T){return Array.prototype.slice.call(T)}s.toArray=g;function w(T){var N=[];if(!T)return N;for(var M=T.length,D=g(arguments).slice(1),V=-1;++V<M;)P(D,T[V])===-1&&N.push(T[V]);return N}s.without=w;function C(T,N){for(var M="",D=0;D<N;D++)M+=T;return M}s.repeat=C;function y(T,N,M){if(T!=null){if(n.forEach&&T.forEach===n.forEach)T.forEach(N,M);else if(T.length===+T.length)for(var D=0,V=T.length;D<V;D++)N.call(M,T[D],D,T)}}s.each=y;function S(T,N){var M=[];if(T==null)return M;if(n.map&&T.map===n.map)return T.map(N);for(var D=0;D<T.length;D++)M[M.length]=N(T[D],D);return T.length===+T.length&&(M.length=T.length),M}s.map=S;function A(T,N,M){var D=-1;function V(){D++,D<T.length?N(T[D],D,V,M):M()}V()}s.asyncIter=A;function _(T,N,M){var D=F(T||{}),V=D.length,q=-1;function Z(){q++;var pe=D[q];q<V?N(pe,T[pe],q,V,Z):M()}Z()}s.asyncFor=_;function P(T,N,M){return Array.prototype.indexOf.call(T||[],N,M)}s.indexOf=P;function F(T){var N=[];for(var M in T)l(T,M)&&N.push(M);return N}s.keys=F;function B(T){return F(T).map(function(N){return[N,T[N]]})}s._entries=B;function j(T){return F(T).map(function(N){return T[N]})}s._values=j;function L(T,N){return T=T||{},F(N).forEach(function(M){T[M]=N[M]}),T}s._assign=s.extend=L;function k(T,N){if(d(N)||m(N))return N.indexOf(T)!==-1;if(h(N))return T in N;throw new Error('Cannot use "in" operator to search for "'+T+'" in unexpected types.')}s.inOperator=k},function(e,t,a){"use strict";function n(m,h){for(var v=0;v<h.length;v++){var x=h[v];x.enumerable=x.enumerable||!1,x.configurable=!0,"value"in x&&(x.writable=!0),Object.defineProperty(m,r(x.key),x)}}function i(m,h,v){return h&&n(m.prototype,h),v&&n(m,v),Object.defineProperty(m,"prototype",{writable:!1}),m}function r(m){var h=o(m,"string");return typeof h=="symbol"?h:String(h)}function o(m,h){if(typeof m!="object"||m===null)return m;var v=m[Symbol.toPrimitive];if(v!==void 0){var x=v.call(m,h||"default");if(typeof x!="object")return x;throw new TypeError("@@toPrimitive must return a primitive value.")}return(h==="string"?String:Number)(m)}function s(m,h){m.prototype=Object.create(h.prototype),m.prototype.constructor=m,l(m,h)}function l(m,h){return l=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(x,E){return x.__proto__=E,x},l(m,h)}var u=a(16),c=a(0);function f(m,h){return typeof m!="function"||typeof h!="function"?h:function(){var x=this.parent;this.parent=m;var E=h.apply(this,arguments);return this.parent=x,E}}function p(m,h,v){v=v||{},c.keys(v).forEach(function(E){v[E]=f(m.prototype[E],v[E])});var x=function(E){s(g,E);function g(){return E.apply(this,arguments)||this}return i(g,[{key:"typename",get:function(){return h}}]),g}(m);return c._assign(x.prototype,v),x}var b=function(){function m(){this.init.apply(this,arguments)}var h=m.prototype;return h.init=function(){},m.extend=function(x,E){return typeof x=="object"&&(E=x,x="anonymous"),p(this,x,E)},i(m,[{key:"typename",get:function(){return this.constructor.name}}]),m}(),d=function(m){s(h,m);function h(){var x,E;return E=m.call(this)||this,(x=E).init.apply(x,arguments),E}var v=h.prototype;return v.init=function(){},h.extend=function(E,g){return typeof E=="object"&&(g=E,E="anonymous"),p(this,E,g)},i(h,[{key:"typename",get:function(){return this.constructor.name}}]),h}(u);e.exports={Obj:b,EmitterObj:d}},function(e,t,a){"use strict";var n=a(0),i=Array.from,r=typeof Symbol=="function"&&Symbol.iterator&&typeof i=="function",o=function(){function S(_,P){this.variables=Object.create(null),this.parent=_,this.topLevel=!1,this.isolateWrites=P}var A=S.prototype;return A.set=function(P,F,B){var j=P.split("."),L=this.variables,k=this;if(B&&(k=this.resolve(j[0],!0))){k.set(P,F);return}for(var T=0;T<j.length-1;T++){var N=j[T];L[N]||(L[N]={}),L=L[N]}L[j[j.length-1]]=F},A.get=function(P){var F=this.variables[P];return F!==void 0?F:null},A.lookup=function(P){var F=this.parent,B=this.variables[P];return B!==void 0?B:F&&F.lookup(P)},A.resolve=function(P,F){var B=F&&this.isolateWrites?void 0:this.parent,j=this.variables[P];return j!==void 0?this:B&&B.resolve(P)},A.push=function(P){return new S(this,P)},A.pop=function(){return this.parent},S}();function s(S,A,_){return function(){for(var F=arguments.length,B=new Array(F),j=0;j<F;j++)B[j]=arguments[j];var L=f(B),k,T=c(B);if(L>S.length)k=B.slice(0,S.length),B.slice(k.length,L).forEach(function(D,V){V<A.length&&(T[A[V]]=D)}),k.push(T);else if(L<S.length){k=B.slice(0,L);for(var N=L;N<S.length;N++){var M=S[N];k.push(T[M]),delete T[M]}k.push(T)}else k=B;return _.apply(this,k)}}function l(S){return S.__keywords=!0,S}function u(S){return S&&Object.prototype.hasOwnProperty.call(S,"__keywords")}function c(S){var A=S.length;if(A){var _=S[A-1];if(u(_))return _}return{}}function f(S){var A=S.length;if(A===0)return 0;var _=S[A-1];return u(_)?A-1:A}function p(S){if(typeof S!="string")return S;this.val=S,this.length=S.length}p.prototype=Object.create(String.prototype,{length:{writable:!0,configurable:!0,value:0}}),p.prototype.valueOf=function(){return this.val},p.prototype.toString=function(){return this.val};function b(S,A){return S instanceof p?new p(A):A.toString()}function d(S){var A=typeof S;return A==="string"?new p(S):A!=="function"?S:function(P){var F=S.apply(this,arguments);return typeof F=="string"?new p(F):F}}function m(S,A){return S=S!=null?S:"",A&&!(S instanceof p)&&(S=n.escape(S.toString())),S}function h(S,A,_){if(S==null)throw new n.TemplateError("attempted to output null or undefined value",A+1,_+1);return S}function v(S,A){if(S!=null)return typeof S[A]=="function"?function(){for(var _=arguments.length,P=new Array(_),F=0;F<_;F++)P[F]=arguments[F];return S[A].apply(S,P)}:S[A]}function x(S,A,_,P){if(S){if(typeof S!="function")throw new Error("Unable to call `"+A+"`, which is not a function")}else throw new Error("Unable to call `"+A+"`, which is undefined or falsey");return S.apply(_,P)}function E(S,A,_){var P=A.lookup(_);return P!==void 0?P:S.lookup(_)}function g(S,A,_){return S.lineno?S:new n.TemplateError(S,A,_)}function w(S,A,_,P){if(n.isArray(S)){var F=S.length;n.asyncIter(S,function(j,L,k){switch(A){case 1:_(j,L,F,k);break;case 2:_(j[0],j[1],L,F,k);break;case 3:_(j[0],j[1],j[2],L,F,k);break;default:j.push(L,F,k),_.apply(this,j)}},P)}else n.asyncFor(S,function(j,L,k,T,N){_(j,L,k,T,N)},P)}function C(S,A,_,P){var F=0,B,j;function L(V,q){F++,j[V]=q,F===B&&P(null,j.join(""))}if(n.isArray(S))if(B=S.length,j=new Array(B),B===0)P(null,"");else for(var k=0;k<S.length;k++){var T=S[k];switch(A){case 1:_(T,k,B,L);break;case 2:_(T[0],T[1],k,B,L);break;case 3:_(T[0],T[1],T[2],k,B,L);break;default:T.push(k,B,L),_.apply(this,T)}}else{var N=n.keys(S||{});if(B=N.length,j=new Array(B),B===0)P(null,"");else for(var M=0;M<N.length;M++){var D=N[M];_(D,S[D],M,B,L)}}}function y(S){return typeof S!="object"||S===null||n.isArray(S)?S:r&&Symbol.iterator in S?i(S):S}e.exports={Frame:o,makeMacro:s,makeKeywordArgs:l,numArgs:f,suppressValue:m,ensureDefined:h,memberLookup:v,contextOrFrameLookup:E,callWrap:x,handleError:g,isArray:n.isArray,keys:n.keys,SafeString:p,copySafeness:b,markSafe:d,asyncEach:w,asyncAll:C,inOperator:n.inOperator,fromIterator:y}},function(e,t,a){"use strict";function n(te,ie){for(var we=0;we<ie.length;we++){var ge=ie[we];ge.enumerable=ge.enumerable||!1,ge.configurable=!0,"value"in ge&&(ge.writable=!0),Object.defineProperty(te,r(ge.key),ge)}}function i(te,ie,we){return ie&&n(te.prototype,ie),we&&n(te,we),Object.defineProperty(te,"prototype",{writable:!1}),te}function r(te){var ie=o(te,"string");return typeof ie=="symbol"?ie:String(ie)}function o(te,ie){if(typeof te!="object"||te===null)return te;var we=te[Symbol.toPrimitive];if(we!==void 0){var ge=we.call(te,ie||"default");if(typeof ge!="object")return ge;throw new TypeError("@@toPrimitive must return a primitive value.")}return(ie==="string"?String:Number)(te)}function s(te,ie){te.prototype=Object.create(ie.prototype),te.prototype.constructor=te,l(te,ie)}function l(te,ie){return l=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(ge,Ie){return ge.__proto__=Ie,ge},l(te,ie)}var u=a(1),c=u.Obj;function f(te,ie,we){te instanceof ie&&we.push(te),te instanceof p&&te.findAll(ie,we)}var p=function(te){s(ie,te);function ie(){return te.apply(this,arguments)||this}var we=ie.prototype;return we.init=function(Ie,Xe){for(var St=arguments,Za=this,_i=arguments.length,Q_=new Array(_i>2?_i-2:0),$r=2;$r<_i;$r++)Q_[$r-2]=arguments[$r];this.lineno=Ie,this.colno=Xe,this.fields.forEach(function(eT,tT){var jc=St[tT+2];jc===void 0&&(jc=null),Za[eT]=jc})},we.findAll=function(Ie,Xe){var St=this;return Xe=Xe||[],this instanceof d?this.children.forEach(function(Za){return f(Za,Ie,Xe)}):this.fields.forEach(function(Za){return f(St[Za],Ie,Xe)}),Xe},we.iterFields=function(Ie){var Xe=this;this.fields.forEach(function(St){Ie(Xe[St],St)})},ie}(c),b=function(te){s(ie,te);function ie(){return te.apply(this,arguments)||this}return i(ie,[{key:"typename",get:function(){return"Value"}},{key:"fields",get:function(){return["value"]}}]),ie}(p),d=function(te){s(ie,te);function ie(){return te.apply(this,arguments)||this}var we=ie.prototype;return we.init=function(Ie,Xe,St){te.prototype.init.call(this,Ie,Xe,St||[])},we.addChild=function(Ie){this.children.push(Ie)},i(ie,[{key:"typename",get:function(){return"NodeList"}},{key:"fields",get:function(){return["children"]}}]),ie}(p),m=d.extend("Root"),h=b.extend("Literal"),v=b.extend("Symbol"),x=d.extend("Group"),E=d.extend("Array"),g=p.extend("Pair",{fields:["key","value"]}),w=d.extend("Dict"),C=p.extend("LookupVal",{fields:["target","val"]}),y=p.extend("If",{fields:["cond","body","else_"]}),S=y.extend("IfAsync"),A=p.extend("InlineIf",{fields:["cond","body","else_"]}),_=p.extend("For",{fields:["arr","name","body","else_"]}),P=_.extend("AsyncEach"),F=_.extend("AsyncAll"),B=p.extend("Macro",{fields:["name","args","body"]}),j=B.extend("Caller"),L=p.extend("Import",{fields:["template","target","withContext"]}),k=function(te){s(ie,te);function ie(){return te.apply(this,arguments)||this}var we=ie.prototype;return we.init=function(Ie,Xe,St,Za,_i){te.prototype.init.call(this,Ie,Xe,St,Za||new d,_i)},i(ie,[{key:"typename",get:function(){return"FromImport"}},{key:"fields",get:function(){return["template","names","withContext"]}}]),ie}(p),T=p.extend("FunCall",{fields:["name","args"]}),N=T.extend("Filter"),M=N.extend("FilterAsync",{fields:["name","args","symbol"]}),D=w.extend("KeywordArgs"),V=p.extend("Block",{fields:["name","body"]}),q=p.extend("Super",{fields:["blockName","symbol"]}),Z=p.extend("TemplateRef",{fields:["template"]}),pe=Z.extend("Extends"),fe=p.extend("Include",{fields:["template","ignoreMissing"]}),ee=p.extend("Set",{fields:["targets","value"]}),oe=p.extend("Switch",{fields:["expr","cases","default"]}),U=p.extend("Case",{fields:["cond","body"]}),X=d.extend("Output"),$=p.extend("Capture",{fields:["body"]}),he=h.extend("TemplateData"),qe=p.extend("UnaryOp",{fields:["target"]}),ze=p.extend("BinOp",{fields:["left","right"]}),ht=ze.extend("In"),R=ze.extend("Is"),z=ze.extend("Or"),J=ze.extend("And"),H=qe.extend("Not"),ne=ze.extend("Add"),K=ze.extend("Concat"),Ae=ze.extend("Sub"),ue=ze.extend("Mul"),Ne=ze.extend("Div"),Nt=ze.extend("FloorDiv"),Vt=ze.extend("Mod"),Ia=ze.extend("Pow"),q_=qe.extend("Neg"),X_=qe.extend("Pos"),$_=p.extend("Compare",{fields:["expr","ops"]}),Y_=p.extend("CompareOperand",{fields:["expr","type"]}),Nc=p.extend("CallExtension",{init:function(ie,we,ge,Ie){this.parent(),this.extName=ie.__name||ie,this.prop=we,this.args=ge||new d,this.contentArgs=Ie||[],this.autoescape=ie.autoescape},fields:["extName","prop","args","contentArgs"]}),K_=Nc.extend("CallExtensionAsync");function Sn(te,ie,we){var ge=te.split(` `);ge.forEach(function(Ie,Xe){Ie&&(we&&Xe>0||!we)&&process.stdout.write(" ".repeat(ie));var St=Xe===ge.length-1?"":` `;process.stdout.write(""+Ie+St)})}function Ii(te,ie){if(ie=ie||0,Sn(te.typename+": ",ie),te instanceof d)Sn(` `),te.children.forEach(function(Ie){Ii(Ie,ie+2)});else if(te instanceof Nc)Sn(te.extName+"."+te.prop+` `),te.args&&Ii(te.args,ie+2),te.contentArgs&&te.contentArgs.forEach(function(Ie){Ii(Ie,ie+2)});else{var we=[],ge=null;te.iterFields(function(Ie,Xe){Ie instanceof p?we.push([Xe,Ie]):(ge=ge||{},ge[Xe]=Ie)}),ge?Sn(JSON.stringify(ge,null,2)+` `,null,!0):Sn(` -`),we.forEach(function(Ie){var Xe=Ie[0],St=Ie[1];Sn("["+Xe+"] =>",ie+2),Ii(St,ie+4)})}}e.exports={Node:p,Root:h,NodeList:d,Value:b,Literal:m,Symbol:v,Group:x,Array:E,Pair:g,Dict:w,Output:X,Capture:$,TemplateData:he,If:y,IfAsync:S,InlineIf:I,For:_,AsyncEach:P,AsyncAll:F,Macro:B,Caller:N,Import:L,FromImport:k,FunCall:T,Filter:j,FilterAsync:M,KeywordArgs:D,Block:V,Super:q,Extends:pe,Include:fe,Set:ee,Switch:oe,Case:U,LookupVal:C,BinOp:ze,In:ht,Is:R,Or:z,And:J,Not:H,Add:ne,Concat:K,Sub:Ae,Mul:ue,Div:Ne,FloorDiv:Nt,Mod:Vt,Pow:Ia,Neg:J_,Pos:Z_,Compare:q_,CompareOperand:X_,CallExtension:Nc,CallExtensionAsync:$_,printNodes:Ii}},function(e,t){},function(e,t,a){"use strict";function n(m,v){m.prototype=Object.create(v.prototype),m.prototype.constructor=m,i(m,v)}function i(m,v){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(E,g){return E.__proto__=g,E},i(m,v)}var r=a(8),o=a(17),s=a(3),l=a(0),u=l.TemplateError,c=a(2),f=c.Frame,p=a(1),b=p.Obj,d={"==":"==","===":"===","!=":"!=","!==":"!==","<":"<",">":">","<=":"<=",">=":">="},h=function(m){n(v,m);function v(){return m.apply(this,arguments)||this}var x=v.prototype;return x.init=function(g,w){this.templateName=g,this.codebuf=[],this.lastId=0,this.buffer=null,this.bufferStack=[],this._scopeClosers="",this.inBlock=!1,this.throwOnUndefined=w},x.fail=function(g,w,C){throw w!==void 0&&(w+=1),C!==void 0&&(C+=1),new u(g,w,C)},x._pushBuffer=function(){var g=this._tmpid();return this.bufferStack.push(this.buffer),this.buffer=g,this._emit("var "+this.buffer+' = "";'),g},x._popBuffer=function(){this.buffer=this.bufferStack.pop()},x._emit=function(g){this.codebuf.push(g)},x._emitLine=function(g){this._emit(g+` +`),we.forEach(function(Ie){var Xe=Ie[0],St=Ie[1];Sn("["+Xe+"] =>",ie+2),Ii(St,ie+4)})}}e.exports={Node:p,Root:m,NodeList:d,Value:b,Literal:h,Symbol:v,Group:x,Array:E,Pair:g,Dict:w,Output:X,Capture:$,TemplateData:he,If:y,IfAsync:S,InlineIf:A,For:_,AsyncEach:P,AsyncAll:F,Macro:B,Caller:j,Import:L,FromImport:k,FunCall:T,Filter:N,FilterAsync:M,KeywordArgs:D,Block:V,Super:q,Extends:pe,Include:fe,Set:ee,Switch:oe,Case:U,LookupVal:C,BinOp:ze,In:ht,Is:R,Or:z,And:J,Not:H,Add:ne,Concat:K,Sub:Ae,Mul:ue,Div:Ne,FloorDiv:Nt,Mod:Vt,Pow:Ia,Neg:q_,Pos:X_,Compare:$_,CompareOperand:Y_,CallExtension:Nc,CallExtensionAsync:K_,printNodes:Ii}},function(e,t){},function(e,t,a){"use strict";function n(h,v){h.prototype=Object.create(v.prototype),h.prototype.constructor=h,i(h,v)}function i(h,v){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(E,g){return E.__proto__=g,E},i(h,v)}var r=a(8),o=a(17),s=a(3),l=a(0),u=l.TemplateError,c=a(2),f=c.Frame,p=a(1),b=p.Obj,d={"==":"==","===":"===","!=":"!=","!==":"!==","<":"<",">":">","<=":"<=",">=":">="},m=function(h){n(v,h);function v(){return h.apply(this,arguments)||this}var x=v.prototype;return x.init=function(g,w){this.templateName=g,this.codebuf=[],this.lastId=0,this.buffer=null,this.bufferStack=[],this._scopeClosers="",this.inBlock=!1,this.throwOnUndefined=w},x.fail=function(g,w,C){throw w!==void 0&&(w+=1),C!==void 0&&(C+=1),new u(g,w,C)},x._pushBuffer=function(){var g=this._tmpid();return this.bufferStack.push(this.buffer),this.buffer=g,this._emit("var "+this.buffer+' = "";'),g},x._popBuffer=function(){this.buffer=this.bufferStack.pop()},x._emit=function(g){this.codebuf.push(g)},x._emitLine=function(g){this._emit(g+` `)},x._emitLines=function(){for(var g=this,w=arguments.length,C=new Array(w),y=0;y<w;y++)C[y]=arguments[y];C.forEach(function(S){return g._emitLine(S)})},x._emitFuncBegin=function(g,w){this.buffer="output",this._scopeClosers="",this._emitLine("function "+w+"(env, context, frame, runtime, cb) {"),this._emitLine("var lineno = "+g.lineno+";"),this._emitLine("var colno = "+g.colno+";"),this._emitLine("var "+this.buffer+' = "";'),this._emitLine("try {")},x._emitFuncEnd=function(g){g||this._emitLine("cb(null, "+this.buffer+");"),this._closeScopeLevels(),this._emitLine("} catch (e) {"),this._emitLine(" cb(runtime.handleError(e, lineno, colno));"),this._emitLine("}"),this._emitLine("}"),this.buffer=null},x._addScopeLevel=function(){this._scopeClosers+="})"},x._closeScopeLevels=function(){this._emitLine(this._scopeClosers+";"),this._scopeClosers=""},x._withScopedSyntax=function(g){var w=this._scopeClosers;this._scopeClosers="",g.call(this),this._closeScopeLevels(),this._scopeClosers=w},x._makeCallback=function(g){var w=this._tmpid();return"function("+w+(g?","+g:"")+`) { -if(`+w+") { cb("+w+"); return; }"},x._tmpid=function(){return this.lastId++,"t_"+this.lastId},x._templateName=function(){return this.templateName==null?"undefined":JSON.stringify(this.templateName)},x._compileChildren=function(g,w){var C=this;g.children.forEach(function(y){C.compile(y,w)})},x._compileAggregate=function(g,w,C,y){var S=this;C&&this._emit(C),g.children.forEach(function(I,_){_>0&&S._emit(","),S.compile(I,w)}),y&&this._emit(y)},x._compileExpression=function(g,w){this.assertType(g,s.Literal,s.Symbol,s.Group,s.Array,s.Dict,s.FunCall,s.Caller,s.Filter,s.LookupVal,s.Compare,s.InlineIf,s.In,s.Is,s.And,s.Or,s.Not,s.Add,s.Concat,s.Sub,s.Mul,s.Div,s.FloorDiv,s.Mod,s.Pow,s.Neg,s.Pos,s.Compare,s.NodeList),this.compile(g,w)},x.assertType=function(g){for(var w=arguments.length,C=new Array(w>1?w-1:0),y=1;y<w;y++)C[y-1]=arguments[y];C.some(function(S){return g instanceof S})||this.fail("assertType: invalid type: "+g.typename,g.lineno,g.colno)},x.compileCallExtension=function(g,w,C){var y=this,S=g.args,I=g.contentArgs,_=typeof g.autoescape=="boolean"?g.autoescape:!0;if(C||this._emit(this.buffer+" += runtime.suppressValue("),this._emit('env.getExtension("'+g.extName+'")["'+g.prop+'"]('),this._emit("context"),(S||I)&&this._emit(","),S&&(S instanceof s.NodeList||this.fail("compileCallExtension: arguments must be a NodeList, use `parser.parseSignature`"),S.children.forEach(function(F,B){y._compileExpression(F,w),(B!==S.children.length-1||I.length)&&y._emit(",")})),I.length&&I.forEach(function(F,B){if(B>0&&y._emit(","),F){y._emitLine("function(cb) {"),y._emitLine("if(!cb) { cb = function(err) { if(err) { throw err; }}}");var N=y._pushBuffer();y._withScopedSyntax(function(){y.compile(F,w),y._emitLine("cb(null, "+N+");")}),y._popBuffer(),y._emitLine("return "+N+";"),y._emitLine("}")}else y._emit("null")}),C){var P=this._tmpid();this._emitLine(", "+this._makeCallback(P)),this._emitLine(this.buffer+" += runtime.suppressValue("+P+", "+_+" && env.opts.autoescape);"),this._addScopeLevel()}else this._emit(")"),this._emit(", "+_+` && env.opts.autoescape); -`)},x.compileCallExtensionAsync=function(g,w){this.compileCallExtension(g,w,!0)},x.compileNodeList=function(g,w){this._compileChildren(g,w)},x.compileLiteral=function(g){if(typeof g.value=="string"){var w=g.value.replace(/\\/g,"\\\\");w=w.replace(/"/g,'\\"'),w=w.replace(/\n/g,"\\n"),w=w.replace(/\r/g,"\\r"),w=w.replace(/\t/g,"\\t"),w=w.replace(/\u2028/g,"\\u2028"),this._emit('"'+w+'"')}else g.value===null?this._emit("null"):this._emit(g.value.toString())},x.compileSymbol=function(g,w){var C=g.value,y=w.lookup(C);y?this._emit(y):this._emit('runtime.contextOrFrameLookup(context, frame, "'+C+'")')},x.compileGroup=function(g,w){this._compileAggregate(g,w,"(",")")},x.compileArray=function(g,w){this._compileAggregate(g,w,"[","]")},x.compileDict=function(g,w){this._compileAggregate(g,w,"{","}")},x.compilePair=function(g,w){var C=g.key,y=g.value;C instanceof s.Symbol?C=new s.Literal(C.lineno,C.colno,C.value):C instanceof s.Literal&&typeof C.value=="string"||this.fail("compilePair: Dict keys must be strings or names",C.lineno,C.colno),this.compile(C,w),this._emit(": "),this._compileExpression(y,w)},x.compileInlineIf=function(g,w){this._emit("("),this.compile(g.cond,w),this._emit("?"),this.compile(g.body,w),this._emit(":"),g.else_!==null?this.compile(g.else_,w):this._emit('""'),this._emit(")")},x.compileIn=function(g,w){this._emit("runtime.inOperator("),this.compile(g.left,w),this._emit(","),this.compile(g.right,w),this._emit(")")},x.compileIs=function(g,w){var C=g.right.name?g.right.name.value:g.right.value;this._emit('env.getTest("'+C+'").call(context, '),this.compile(g.left,w),g.right.args&&(this._emit(","),this.compile(g.right.args,w)),this._emit(") === true")},x._binOpEmitter=function(g,w,C){this.compile(g.left,w),this._emit(C),this.compile(g.right,w)},x.compileOr=function(g,w){return this._binOpEmitter(g,w," || ")},x.compileAnd=function(g,w){return this._binOpEmitter(g,w," && ")},x.compileAdd=function(g,w){return this._binOpEmitter(g,w," + ")},x.compileConcat=function(g,w){return this._binOpEmitter(g,w,' + "" + ')},x.compileSub=function(g,w){return this._binOpEmitter(g,w," - ")},x.compileMul=function(g,w){return this._binOpEmitter(g,w," * ")},x.compileDiv=function(g,w){return this._binOpEmitter(g,w," / ")},x.compileMod=function(g,w){return this._binOpEmitter(g,w," % ")},x.compileNot=function(g,w){this._emit("!"),this.compile(g.target,w)},x.compileFloorDiv=function(g,w){this._emit("Math.floor("),this.compile(g.left,w),this._emit(" / "),this.compile(g.right,w),this._emit(")")},x.compilePow=function(g,w){this._emit("Math.pow("),this.compile(g.left,w),this._emit(", "),this.compile(g.right,w),this._emit(")")},x.compileNeg=function(g,w){this._emit("-"),this.compile(g.target,w)},x.compilePos=function(g,w){this._emit("+"),this.compile(g.target,w)},x.compileCompare=function(g,w){var C=this;this.compile(g.expr,w),g.ops.forEach(function(y){C._emit(" "+d[y.type]+" "),C.compile(y.expr,w)})},x.compileLookupVal=function(g,w){this._emit("runtime.memberLookup(("),this._compileExpression(g.target,w),this._emit("),"),this._compileExpression(g.val,w),this._emit(")")},x._getNodeName=function(g){switch(g.typename){case"Symbol":return g.value;case"FunCall":return"the return value of ("+this._getNodeName(g.name)+")";case"LookupVal":return this._getNodeName(g.target)+'["'+this._getNodeName(g.val)+'"]';case"Literal":return g.value.toString();default:return"--expression--"}},x.compileFunCall=function(g,w){this._emit("(lineno = "+g.lineno+", colno = "+g.colno+", "),this._emit("runtime.callWrap("),this._compileExpression(g.name,w),this._emit(', "'+this._getNodeName(g.name).replace(/"/g,'\\"')+'", context, '),this._compileAggregate(g.args,w,"[","])"),this._emit(")")},x.compileFilter=function(g,w){var C=g.name;this.assertType(C,s.Symbol),this._emit('env.getFilter("'+C.value+'").call(context, '),this._compileAggregate(g.args,w),this._emit(")")},x.compileFilterAsync=function(g,w){var C=g.name,y=g.symbol.value;this.assertType(C,s.Symbol),w.set(y,y),this._emit('env.getFilter("'+C.value+'").call(context, '),this._compileAggregate(g.args,w),this._emitLine(", "+this._makeCallback(y)),this._addScopeLevel()},x.compileKeywordArgs=function(g,w){this._emit("runtime.makeKeywordArgs("),this.compileDict(g,w),this._emit(")")},x.compileSet=function(g,w){var C=this,y=[];g.targets.forEach(function(S){var I=S.value,_=w.lookup(I);_==null&&(_=C._tmpid(),C._emitLine("var "+_+";")),y.push(_)}),g.value?(this._emit(y.join(" = ")+" = "),this._compileExpression(g.value,w),this._emitLine(";")):(this._emit(y.join(" = ")+" = "),this.compile(g.body,w),this._emitLine(";")),g.targets.forEach(function(S,I){var _=y[I],P=S.value;C._emitLine('frame.set("'+P+'", '+_+", true);"),C._emitLine("if(frame.topLevel) {"),C._emitLine('context.setVariable("'+P+'", '+_+");"),C._emitLine("}"),P.charAt(0)!=="_"&&(C._emitLine("if(frame.topLevel) {"),C._emitLine('context.addExport("'+P+'", '+_+");"),C._emitLine("}"))})},x.compileSwitch=function(g,w){var C=this;this._emit("switch ("),this.compile(g.expr,w),this._emit(") {"),g.cases.forEach(function(y,S){C._emit("case "),C.compile(y.cond,w),C._emit(": "),C.compile(y.body,w),y.body.children.length&&C._emitLine("break;")}),g.default&&(this._emit("default:"),this.compile(g.default,w)),this._emit("}")},x.compileIf=function(g,w,C){var y=this;this._emit("if("),this._compileExpression(g.cond,w),this._emitLine(") {"),this._withScopedSyntax(function(){y.compile(g.body,w),C&&y._emit("cb()")}),g.else_?(this._emitLine(`} +if(`+w+") { cb("+w+"); return; }"},x._tmpid=function(){return this.lastId++,"t_"+this.lastId},x._templateName=function(){return this.templateName==null?"undefined":JSON.stringify(this.templateName)},x._compileChildren=function(g,w){var C=this;g.children.forEach(function(y){C.compile(y,w)})},x._compileAggregate=function(g,w,C,y){var S=this;C&&this._emit(C),g.children.forEach(function(A,_){_>0&&S._emit(","),S.compile(A,w)}),y&&this._emit(y)},x._compileExpression=function(g,w){this.assertType(g,s.Literal,s.Symbol,s.Group,s.Array,s.Dict,s.FunCall,s.Caller,s.Filter,s.LookupVal,s.Compare,s.InlineIf,s.In,s.Is,s.And,s.Or,s.Not,s.Add,s.Concat,s.Sub,s.Mul,s.Div,s.FloorDiv,s.Mod,s.Pow,s.Neg,s.Pos,s.Compare,s.NodeList),this.compile(g,w)},x.assertType=function(g){for(var w=arguments.length,C=new Array(w>1?w-1:0),y=1;y<w;y++)C[y-1]=arguments[y];C.some(function(S){return g instanceof S})||this.fail("assertType: invalid type: "+g.typename,g.lineno,g.colno)},x.compileCallExtension=function(g,w,C){var y=this,S=g.args,A=g.contentArgs,_=typeof g.autoescape=="boolean"?g.autoescape:!0;if(C||this._emit(this.buffer+" += runtime.suppressValue("),this._emit('env.getExtension("'+g.extName+'")["'+g.prop+'"]('),this._emit("context"),(S||A)&&this._emit(","),S&&(S instanceof s.NodeList||this.fail("compileCallExtension: arguments must be a NodeList, use `parser.parseSignature`"),S.children.forEach(function(F,B){y._compileExpression(F,w),(B!==S.children.length-1||A.length)&&y._emit(",")})),A.length&&A.forEach(function(F,B){if(B>0&&y._emit(","),F){y._emitLine("function(cb) {"),y._emitLine("if(!cb) { cb = function(err) { if(err) { throw err; }}}");var j=y._pushBuffer();y._withScopedSyntax(function(){y.compile(F,w),y._emitLine("cb(null, "+j+");")}),y._popBuffer(),y._emitLine("return "+j+";"),y._emitLine("}")}else y._emit("null")}),C){var P=this._tmpid();this._emitLine(", "+this._makeCallback(P)),this._emitLine(this.buffer+" += runtime.suppressValue("+P+", "+_+" && env.opts.autoescape);"),this._addScopeLevel()}else this._emit(")"),this._emit(", "+_+` && env.opts.autoescape); +`)},x.compileCallExtensionAsync=function(g,w){this.compileCallExtension(g,w,!0)},x.compileNodeList=function(g,w){this._compileChildren(g,w)},x.compileLiteral=function(g){if(typeof g.value=="string"){var w=g.value.replace(/\\/g,"\\\\");w=w.replace(/"/g,'\\"'),w=w.replace(/\n/g,"\\n"),w=w.replace(/\r/g,"\\r"),w=w.replace(/\t/g,"\\t"),w=w.replace(/\u2028/g,"\\u2028"),this._emit('"'+w+'"')}else g.value===null?this._emit("null"):this._emit(g.value.toString())},x.compileSymbol=function(g,w){var C=g.value,y=w.lookup(C);y?this._emit(y):this._emit('runtime.contextOrFrameLookup(context, frame, "'+C+'")')},x.compileGroup=function(g,w){this._compileAggregate(g,w,"(",")")},x.compileArray=function(g,w){this._compileAggregate(g,w,"[","]")},x.compileDict=function(g,w){this._compileAggregate(g,w,"{","}")},x.compilePair=function(g,w){var C=g.key,y=g.value;C instanceof s.Symbol?C=new s.Literal(C.lineno,C.colno,C.value):C instanceof s.Literal&&typeof C.value=="string"||this.fail("compilePair: Dict keys must be strings or names",C.lineno,C.colno),this.compile(C,w),this._emit(": "),this._compileExpression(y,w)},x.compileInlineIf=function(g,w){this._emit("("),this.compile(g.cond,w),this._emit("?"),this.compile(g.body,w),this._emit(":"),g.else_!==null?this.compile(g.else_,w):this._emit('""'),this._emit(")")},x.compileIn=function(g,w){this._emit("runtime.inOperator("),this.compile(g.left,w),this._emit(","),this.compile(g.right,w),this._emit(")")},x.compileIs=function(g,w){var C=g.right.name?g.right.name.value:g.right.value;this._emit('env.getTest("'+C+'").call(context, '),this.compile(g.left,w),g.right.args&&(this._emit(","),this.compile(g.right.args,w)),this._emit(") === true")},x._binOpEmitter=function(g,w,C){this.compile(g.left,w),this._emit(C),this.compile(g.right,w)},x.compileOr=function(g,w){return this._binOpEmitter(g,w," || ")},x.compileAnd=function(g,w){return this._binOpEmitter(g,w," && ")},x.compileAdd=function(g,w){return this._binOpEmitter(g,w," + ")},x.compileConcat=function(g,w){return this._binOpEmitter(g,w,' + "" + ')},x.compileSub=function(g,w){return this._binOpEmitter(g,w," - ")},x.compileMul=function(g,w){return this._binOpEmitter(g,w," * ")},x.compileDiv=function(g,w){return this._binOpEmitter(g,w," / ")},x.compileMod=function(g,w){return this._binOpEmitter(g,w," % ")},x.compileNot=function(g,w){this._emit("!"),this.compile(g.target,w)},x.compileFloorDiv=function(g,w){this._emit("Math.floor("),this.compile(g.left,w),this._emit(" / "),this.compile(g.right,w),this._emit(")")},x.compilePow=function(g,w){this._emit("Math.pow("),this.compile(g.left,w),this._emit(", "),this.compile(g.right,w),this._emit(")")},x.compileNeg=function(g,w){this._emit("-"),this.compile(g.target,w)},x.compilePos=function(g,w){this._emit("+"),this.compile(g.target,w)},x.compileCompare=function(g,w){var C=this;this.compile(g.expr,w),g.ops.forEach(function(y){C._emit(" "+d[y.type]+" "),C.compile(y.expr,w)})},x.compileLookupVal=function(g,w){this._emit("runtime.memberLookup(("),this._compileExpression(g.target,w),this._emit("),"),this._compileExpression(g.val,w),this._emit(")")},x._getNodeName=function(g){switch(g.typename){case"Symbol":return g.value;case"FunCall":return"the return value of ("+this._getNodeName(g.name)+")";case"LookupVal":return this._getNodeName(g.target)+'["'+this._getNodeName(g.val)+'"]';case"Literal":return g.value.toString();default:return"--expression--"}},x.compileFunCall=function(g,w){this._emit("(lineno = "+g.lineno+", colno = "+g.colno+", "),this._emit("runtime.callWrap("),this._compileExpression(g.name,w),this._emit(', "'+this._getNodeName(g.name).replace(/"/g,'\\"')+'", context, '),this._compileAggregate(g.args,w,"[","])"),this._emit(")")},x.compileFilter=function(g,w){var C=g.name;this.assertType(C,s.Symbol),this._emit('env.getFilter("'+C.value+'").call(context, '),this._compileAggregate(g.args,w),this._emit(")")},x.compileFilterAsync=function(g,w){var C=g.name,y=g.symbol.value;this.assertType(C,s.Symbol),w.set(y,y),this._emit('env.getFilter("'+C.value+'").call(context, '),this._compileAggregate(g.args,w),this._emitLine(", "+this._makeCallback(y)),this._addScopeLevel()},x.compileKeywordArgs=function(g,w){this._emit("runtime.makeKeywordArgs("),this.compileDict(g,w),this._emit(")")},x.compileSet=function(g,w){var C=this,y=[];g.targets.forEach(function(S){var A=S.value,_=w.lookup(A);_==null&&(_=C._tmpid(),C._emitLine("var "+_+";")),y.push(_)}),g.value?(this._emit(y.join(" = ")+" = "),this._compileExpression(g.value,w),this._emitLine(";")):(this._emit(y.join(" = ")+" = "),this.compile(g.body,w),this._emitLine(";")),g.targets.forEach(function(S,A){var _=y[A],P=S.value;C._emitLine('frame.set("'+P+'", '+_+", true);"),C._emitLine("if(frame.topLevel) {"),C._emitLine('context.setVariable("'+P+'", '+_+");"),C._emitLine("}"),P.charAt(0)!=="_"&&(C._emitLine("if(frame.topLevel) {"),C._emitLine('context.addExport("'+P+'", '+_+");"),C._emitLine("}"))})},x.compileSwitch=function(g,w){var C=this;this._emit("switch ("),this.compile(g.expr,w),this._emit(") {"),g.cases.forEach(function(y,S){C._emit("case "),C.compile(y.cond,w),C._emit(": "),C.compile(y.body,w),y.body.children.length&&C._emitLine("break;")}),g.default&&(this._emit("default:"),this.compile(g.default,w)),this._emit("}")},x.compileIf=function(g,w,C){var y=this;this._emit("if("),this._compileExpression(g.cond,w),this._emitLine(") {"),this._withScopedSyntax(function(){y.compile(g.body,w),C&&y._emit("cb()")}),g.else_?(this._emitLine(`} else {`),this._withScopedSyntax(function(){y.compile(g.else_,w),C&&y._emit("cb()")})):C&&(this._emitLine(`} -else {`),this._emit("cb()")),this._emitLine("}")},x.compileIfAsync=function(g,w){this._emit("(function(cb) {"),this.compileIf(g,w,!0),this._emit("})("+this._makeCallback()),this._addScopeLevel()},x._emitLoopBindings=function(g,w,C,y){var S=this,I=[{name:"index",val:C+" + 1"},{name:"index0",val:C},{name:"revindex",val:y+" - "+C},{name:"revindex0",val:y+" - "+C+" - 1"},{name:"first",val:C+" === 0"},{name:"last",val:C+" === "+y+" - 1"},{name:"length",val:y}];I.forEach(function(_){S._emitLine('frame.set("loop.'+_.name+'", '+_.val+");")})},x.compileFor=function(g,w){var C=this,y=this._tmpid(),S=this._tmpid(),I=this._tmpid();if(w=w.push(),this._emitLine("frame = frame.push();"),this._emit("var "+I+" = "),this._compileExpression(g.arr,w),this._emitLine(";"),this._emit("if("+I+") {"),this._emitLine(I+" = runtime.fromIterator("+I+");"),g.name instanceof s.Array){this._emitLine("var "+y+";"),this._emitLine("if(runtime.isArray("+I+")) {"),this._emitLine("var "+S+" = "+I+".length;"),this._emitLine("for("+y+"=0; "+y+" < "+I+".length; "+y+"++) {"),g.name.children.forEach(function(k,T){var j=C._tmpid();C._emitLine("var "+j+" = "+I+"["+y+"]["+T+"];"),C._emitLine('frame.set("'+k+'", '+I+"["+y+"]["+T+"]);"),w.set(g.name.children[T].value,j)}),this._emitLoopBindings(g,I,y,S),this._withScopedSyntax(function(){C.compile(g.body,w)}),this._emitLine("}"),this._emitLine("} else {");var _=g.name.children,P=_[0],F=_[1],B=this._tmpid(),N=this._tmpid();w.set(P.value,B),w.set(F.value,N),this._emitLine(y+" = -1;"),this._emitLine("var "+S+" = runtime.keys("+I+").length;"),this._emitLine("for(var "+B+" in "+I+") {"),this._emitLine(y+"++;"),this._emitLine("var "+N+" = "+I+"["+B+"];"),this._emitLine('frame.set("'+P.value+'", '+B+");"),this._emitLine('frame.set("'+F.value+'", '+N+");"),this._emitLoopBindings(g,I,y,S),this._withScopedSyntax(function(){C.compile(g.body,w)}),this._emitLine("}"),this._emitLine("}")}else{var L=this._tmpid();w.set(g.name.value,L),this._emitLine("var "+S+" = "+I+".length;"),this._emitLine("for(var "+y+"=0; "+y+" < "+I+".length; "+y+"++) {"),this._emitLine("var "+L+" = "+I+"["+y+"];"),this._emitLine('frame.set("'+g.name.value+'", '+L+");"),this._emitLoopBindings(g,I,y,S),this._withScopedSyntax(function(){C.compile(g.body,w)}),this._emitLine("}")}this._emitLine("}"),g.else_&&(this._emitLine("if (!"+S+") {"),this.compile(g.else_,w),this._emitLine("}")),this._emitLine("frame = frame.pop();")},x._compileAsyncLoop=function(g,w,C){var y=this,S=this._tmpid(),I=this._tmpid(),_=this._tmpid(),P=C?"asyncAll":"asyncEach";if(w=w.push(),this._emitLine("frame = frame.push();"),this._emit("var "+_+" = runtime.fromIterator("),this._compileExpression(g.arr,w),this._emitLine(");"),g.name instanceof s.Array){var F=g.name.children.length;this._emit("runtime."+P+"("+_+", "+F+", function("),g.name.children.forEach(function(L){y._emit(L.value+",")}),this._emit(S+","+I+",next) {"),g.name.children.forEach(function(L){var k=L.value;w.set(k,k),y._emitLine('frame.set("'+k+'", '+k+");")})}else{var B=g.name.value;this._emitLine("runtime."+P+"("+_+", 1, function("+B+", "+S+", "+I+",next) {"),this._emitLine('frame.set("'+B+'", '+B+");"),w.set(B,B)}this._emitLoopBindings(g,_,S,I),this._withScopedSyntax(function(){var L;C&&(L=y._pushBuffer()),y.compile(g.body,w),y._emitLine("next("+S+(L?","+L:"")+");"),C&&y._popBuffer()});var N=this._tmpid();this._emitLine("}, "+this._makeCallback(N)),this._addScopeLevel(),C&&this._emitLine(this.buffer+" += "+N+";"),g.else_&&(this._emitLine("if (!"+_+".length) {"),this.compile(g.else_,w),this._emitLine("}")),this._emitLine("frame = frame.pop();")},x.compileAsyncEach=function(g,w){this._compileAsyncLoop(g,w)},x.compileAsyncAll=function(g,w){this._compileAsyncLoop(g,w,!0)},x._compileMacro=function(g,w){var C=this,y=[],S=null,I="macro_"+this._tmpid(),_=w!==void 0;g.args.children.forEach(function(k,T){T===g.args.children.length-1&&k instanceof s.Dict?S=k:(C.assertType(k,s.Symbol),y.push(k))});var P=[].concat(y.map(function(k){return"l_"+k.value}),["kwargs"]),F=y.map(function(k){return'"'+k.value+'"'}),B=(S&&S.children||[]).map(function(k){return'"'+k.key.value+'"'}),N;_?N=w.push(!0):N=new f,this._emitLines("var "+I+" = runtime.makeMacro(","["+F.join(", ")+"], ","["+B.join(", ")+"], ","function ("+P.join(", ")+") {","var callerFrame = frame;","frame = "+(_?"frame.push(true);":"new runtime.Frame();"),"kwargs = kwargs || {};",'if (Object.prototype.hasOwnProperty.call(kwargs, "caller")) {','frame.set("caller", kwargs.caller); }'),y.forEach(function(k){C._emitLine('frame.set("'+k.value+'", l_'+k.value+");"),N.set(k.value,"l_"+k.value)}),S&&S.children.forEach(function(k){var T=k.key.value;C._emit('frame.set("'+T+'", '),C._emit('Object.prototype.hasOwnProperty.call(kwargs, "'+T+'")'),C._emit(' ? kwargs["'+T+'"] : '),C._compileExpression(k.value,N),C._emit(");")});var L=this._pushBuffer();return this._withScopedSyntax(function(){C.compile(g.body,N)}),this._emitLine("frame = "+(_?"frame.pop();":"callerFrame;")),this._emitLine("return new runtime.SafeString("+L+");"),this._emitLine("});"),this._popBuffer(),I},x.compileMacro=function(g,w){var C=this._compileMacro(g),y=g.name.value;w.set(y,C),w.parent?this._emitLine('frame.set("'+y+'", '+C+");"):(g.name.value.charAt(0)!=="_"&&this._emitLine('context.addExport("'+y+'");'),this._emitLine('context.setVariable("'+y+'", '+C+");"))},x.compileCaller=function(g,w){this._emit("(function (){");var C=this._compileMacro(g,w);this._emit("return "+C+";})()")},x._compileGetTemplate=function(g,w,C,y){var S=this._tmpid(),I=this._templateName(),_=this._makeCallback(S),P=C?"true":"false",F=y?"true":"false";return this._emit("env.getTemplate("),this._compileExpression(g.template,w),this._emitLine(", "+P+", "+I+", "+F+", "+_),S},x.compileImport=function(g,w){var C=g.target.value,y=this._compileGetTemplate(g,w,!1,!1);this._addScopeLevel(),this._emitLine(y+".getExported("+(g.withContext?"context.getVariables(), frame, ":"")+this._makeCallback(y)),this._addScopeLevel(),w.set(C,y),w.parent?this._emitLine('frame.set("'+C+'", '+y+");"):this._emitLine('context.setVariable("'+C+'", '+y+");")},x.compileFromImport=function(g,w){var C=this,y=this._compileGetTemplate(g,w,!1,!1);this._addScopeLevel(),this._emitLine(y+".getExported("+(g.withContext?"context.getVariables(), frame, ":"")+this._makeCallback(y)),this._addScopeLevel(),g.names.children.forEach(function(S){var I,_,P=C._tmpid();S instanceof s.Pair?(I=S.key.value,_=S.value.value):(I=S.value,_=I),C._emitLine("if(Object.prototype.hasOwnProperty.call("+y+', "'+I+'")) {'),C._emitLine("var "+P+" = "+y+"."+I+";"),C._emitLine("} else {"),C._emitLine(`cb(new Error("cannot import '`+I+`'")); return;`),C._emitLine("}"),w.set(_,P),w.parent?C._emitLine('frame.set("'+_+'", '+P+");"):C._emitLine('context.setVariable("'+_+'", '+P+");")})},x.compileBlock=function(g){var w=this._tmpid();this.inBlock||this._emit('(parentTemplate ? function(e, c, f, r, cb) { cb(""); } : '),this._emit('context.getBlock("'+g.name.value+'")'),this.inBlock||this._emit(")"),this._emitLine("(env, context, frame, runtime, "+this._makeCallback(w)),this._emitLine(this.buffer+" += "+w+";"),this._addScopeLevel()},x.compileSuper=function(g,w){var C=g.blockName.value,y=g.symbol.value,S=this._makeCallback(y);this._emitLine('context.getSuper(env, "'+C+'", b_'+C+", frame, runtime, "+S),this._emitLine(y+" = runtime.markSafe("+y+");"),this._addScopeLevel(),w.set(y,y)},x.compileExtends=function(g,w){var C=this._tmpid(),y=this._compileGetTemplate(g,w,!0,!1);this._emitLine("parentTemplate = "+y),this._emitLine("for(var "+C+" in parentTemplate.blocks) {"),this._emitLine("context.addBlock("+C+", parentTemplate.blocks["+C+"]);"),this._emitLine("}"),this._addScopeLevel()},x.compileInclude=function(g,w){this._emitLine("var tasks = [];"),this._emitLine("tasks.push("),this._emitLine("function(callback) {");var C=this._compileGetTemplate(g,w,!1,g.ignoreMissing);this._emitLine("callback(null,"+C+");});"),this._emitLine("});");var y=this._tmpid();this._emitLine("tasks.push("),this._emitLine("function(template, callback){"),this._emitLine("template.render(context.getVariables(), frame, "+this._makeCallback(y)),this._emitLine("callback(null,"+y+");});"),this._emitLine("});"),this._emitLine("tasks.push("),this._emitLine("function(result, callback){"),this._emitLine(this.buffer+" += result;"),this._emitLine("callback(null);"),this._emitLine("});"),this._emitLine("env.waterfall(tasks, function(){"),this._addScopeLevel()},x.compileTemplateData=function(g,w){this.compileLiteral(g,w)},x.compileCapture=function(g,w){var C=this,y=this.buffer;this.buffer="output",this._emitLine("(function() {"),this._emitLine('var output = "";'),this._withScopedSyntax(function(){C.compile(g.body,w)}),this._emitLine("return output;"),this._emitLine("})()"),this.buffer=y},x.compileOutput=function(g,w){var C=this,y=g.children;y.forEach(function(S){S instanceof s.TemplateData?S.value&&(C._emit(C.buffer+" += "),C.compileLiteral(S,w),C._emitLine(";")):(C._emit(C.buffer+" += runtime.suppressValue("),C.throwOnUndefined&&C._emit("runtime.ensureDefined("),C.compile(S,w),C.throwOnUndefined&&C._emit(","+g.lineno+","+g.colno+")"),C._emit(`, env.opts.autoescape); -`))})},x.compileRoot=function(g,w){var C=this;w&&this.fail("compileRoot: root node can't have frame"),w=new f,this._emitFuncBegin(g,"root"),this._emitLine("var parentTemplate = null;"),this._compileChildren(g,w),this._emitLine("if(parentTemplate) {"),this._emitLine("parentTemplate.rootRenderFunc(env, context, frame, runtime, cb);"),this._emitLine("} else {"),this._emitLine("cb(null, "+this.buffer+");"),this._emitLine("}"),this._emitFuncEnd(!0),this.inBlock=!0;var y=[],S=g.findAll(s.Block);S.forEach(function(I,_){var P=I.name.value;if(y.indexOf(P)!==-1)throw new Error('Block "'+P+'" defined more than once.');y.push(P),C._emitFuncBegin(I,"b_"+P);var F=new f;C._emitLine("var frame = frame.push(true);"),C.compile(I.body,F),C._emitFuncEnd()}),this._emitLine("return {"),S.forEach(function(I,_){var P="b_"+I.name.value;C._emitLine(P+": "+P+",")}),this._emitLine(`root: root -};`)},x.compile=function(g,w){var C=this["compile"+g.typename];C?C.call(this,g,w):this.fail("compile: Cannot compile node: "+g.typename,g.lineno,g.colno)},x.getCode=function(){return this.codebuf.join("")},v}(b);e.exports={compile:function(v,x,E,g,w){w===void 0&&(w={});var C=new h(g,w.throwOnUndefined),y=(E||[]).map(function(I){return I.preprocess}).filter(function(I){return!!I}),S=y.reduce(function(I,_){return _(I)},v);return C.compile(o.transform(r.parse(S,E,w),x,g)),C.getCode()},Compiler:h}},function(e,t,a){"use strict";function n(l,u){l.prototype=Object.create(u.prototype),l.prototype.constructor=l,i(l,u)}function i(l,u){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(f,p){return f.__proto__=p,f},i(l,u)}var r=a(4),o=a(1),s=o.EmitterObj;e.exports=function(l){n(u,l);function u(){return l.apply(this,arguments)||this}var c=u.prototype;return c.resolve=function(p,b){return r.resolve(r.dirname(p),b)},c.isRelative=function(p){return p.indexOf("./")===0||p.indexOf("../")===0},u}(s)},function(e,t,a){"use strict";function n(F,B){F.prototype=Object.create(B.prototype),F.prototype.constructor=F,i(F,B)}function i(F,B){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(L,k){return L.__proto__=k,L},i(F,B)}var r=a(12),o=a(15),s=a(0),l=a(5),u=a(18),c=a(10),f=c.FileSystemLoader,p=c.WebLoader,b=c.PrecompiledLoader,d=a(20),h=a(21),m=a(1),v=m.Obj,x=m.EmitterObj,E=a(2),g=E.handleError,w=E.Frame,C=a(22);function y(F,B,N){r(function(){F(B,N)})}var S={type:"code",obj:{root:function(B,N,L,k,T){try{T(null,"")}catch(j){T(g(j,null,null))}}}},I=function(F){n(B,F);function B(){return F.apply(this,arguments)||this}var N=B.prototype;return N.init=function(k,T){var j=this;T=this.opts=T||{},this.opts.dev=!!T.dev,this.opts.autoescape=T.autoescape!=null?T.autoescape:!0,this.opts.throwOnUndefined=!!T.throwOnUndefined,this.opts.trimBlocks=!!T.trimBlocks,this.opts.lstripBlocks=!!T.lstripBlocks,this.loaders=[],k?this.loaders=s.isArray(k)?k:[k]:f?this.loaders=[new f("views")]:p&&(this.loaders=[new p("/views")]),typeof window!="undefined"&&window.nunjucksPrecompiled&&this.loaders.unshift(new b(window.nunjucksPrecompiled)),this._initLoaders(),this.globals=h(),this.filters={},this.tests={},this.asyncFilters=[],this.extensions={},this.extensionsList=[],s._entries(u).forEach(function(M){var D=M[0],V=M[1];return j.addFilter(D,V)}),s._entries(d).forEach(function(M){var D=M[0],V=M[1];return j.addTest(D,V)})},N._initLoaders=function(){var k=this;this.loaders.forEach(function(T){T.cache={},typeof T.on=="function"&&(T.on("update",function(j,M){T.cache[j]=null,k.emit("update",j,M,T)}),T.on("load",function(j,M){k.emit("load",j,M,T)}))})},N.invalidateCache=function(){this.loaders.forEach(function(k){k.cache={}})},N.addExtension=function(k,T){return T.__name=k,this.extensions[k]=T,this.extensionsList.push(T),this},N.removeExtension=function(k){var T=this.getExtension(k);T&&(this.extensionsList=s.without(this.extensionsList,T),delete this.extensions[k])},N.getExtension=function(k){return this.extensions[k]},N.hasExtension=function(k){return!!this.extensions[k]},N.addGlobal=function(k,T){return this.globals[k]=T,this},N.getGlobal=function(k){if(typeof this.globals[k]=="undefined")throw new Error("global not found: "+k);return this.globals[k]},N.addFilter=function(k,T,j){var M=T;return j&&this.asyncFilters.push(k),this.filters[k]=M,this},N.getFilter=function(k){if(!this.filters[k])throw new Error("filter not found: "+k);return this.filters[k]},N.addTest=function(k,T){return this.tests[k]=T,this},N.getTest=function(k){if(!this.tests[k])throw new Error("test not found: "+k);return this.tests[k]},N.resolveTemplate=function(k,T,j){var M=k.isRelative&&T?k.isRelative(j):!1;return M&&k.resolve?k.resolve(T,j):j},N.getTemplate=function(k,T,j,M,D){var V=this,q=this,Z=null;if(k&&k.raw&&(k=k.raw),s.isFunction(j)&&(D=j,j=null,T=T||!1),s.isFunction(T)&&(D=T,T=!1),k instanceof P)Z=k;else{if(typeof k!="string")throw new Error("template names must be a string: "+k);for(var pe=0;pe<this.loaders.length;pe++){var fe=this.loaders[pe];if(Z=fe.cache[this.resolveTemplate(fe,j,k)],Z)break}}if(Z)if(T&&Z.compile(),D){D(null,Z);return}else return Z;var ee,oe=function(X,$){if(!$&&!X&&!M&&(X=new Error("template not found: "+k)),X)if(D){D(X);return}else throw X;var he;$?(he=new P($.src,V,$.path,T),$.noCache||($.loader.cache[k]=he)):he=new P(S,V,"",T),D?D(null,he):ee=he};return s.asyncIter(this.loaders,function(U,X,$,he){function qe(ze,ht){ze?he(ze):ht?(ht.loader=U,he(null,ht)):$()}k=q.resolveTemplate(U,j,k),U.async?U.getSource(k,qe):qe(null,U.getSource(k))},oe),ee},N.express=function(k){return C(this,k)},N.render=function(k,T,j){s.isFunction(T)&&(j=T,T=null);var M=null;return this.getTemplate(k,function(D,V){if(D&&j)y(j,D);else{if(D)throw D;M=V.render(T,j)}}),M},N.renderString=function(k,T,j,M){s.isFunction(j)&&(M=j,j={}),j=j||{};var D=new P(k,this,j.path);return D.render(T,M)},N.waterfall=function(k,T,j){return o(k,T,j)},B}(x),_=function(F){n(B,F);function B(){return F.apply(this,arguments)||this}var N=B.prototype;return N.init=function(k,T,j){var M=this;this.env=j||new I,this.ctx=s.extend({},k),this.blocks={},this.exported=[],s.keys(T).forEach(function(D){M.addBlock(D,T[D])})},N.lookup=function(k){return k in this.env.globals&&!(k in this.ctx)?this.env.globals[k]:this.ctx[k]},N.setVariable=function(k,T){this.ctx[k]=T},N.getVariables=function(){return this.ctx},N.addBlock=function(k,T){return this.blocks[k]=this.blocks[k]||[],this.blocks[k].push(T),this},N.getBlock=function(k){if(!this.blocks[k])throw new Error('unknown block "'+k+'"');return this.blocks[k][0]},N.getSuper=function(k,T,j,M,D,V){var q=s.indexOf(this.blocks[T]||[],j),Z=this.blocks[T][q+1],pe=this;if(q===-1||!Z)throw new Error('no super block available for "'+T+'"');Z(k,pe,M,D,V)},N.addExport=function(k){this.exported.push(k)},N.getExported=function(){var k=this,T={};return this.exported.forEach(function(j){T[j]=k.ctx[j]}),T},B}(v),P=function(F){n(B,F);function B(){return F.apply(this,arguments)||this}var N=B.prototype;return N.init=function(k,T,j,M){if(this.env=T||new I,s.isObject(k))switch(k.type){case"code":this.tmplProps=k.obj;break;case"string":this.tmplStr=k.obj;break;default:throw new Error("Unexpected template object type "+k.type+"; expected 'code', or 'string'")}else if(s.isString(k))this.tmplStr=k;else throw new Error("src must be a string or an object describing the source");if(this.path=j,M)try{this._compile()}catch(D){throw s._prettifyError(this.path,this.env.opts.dev,D)}else this.compiled=!1},N.render=function(k,T,j){var M=this;typeof k=="function"?(j=k,k={}):typeof T=="function"&&(j=T,T=null);var D=!T;try{this.compile()}catch(ee){var V=s._prettifyError(this.path,this.env.opts.dev,ee);if(j)return y(j,V);throw V}var q=new _(k||{},this.blocks,this.env),Z=T?T.push(!0):new w;Z.topLevel=!0;var pe=null,fe=!1;return this.rootRenderFunc(this.env,q,Z,E,function(ee,oe){if(!(fe&&j&&typeof oe!="undefined"))if(ee&&(ee=s._prettifyError(M.path,M.env.opts.dev,ee),fe=!0),j)D?y(j,ee,oe):j(ee,oe);else{if(ee)throw ee;pe=oe}}),pe},N.getExported=function(k,T,j){typeof k=="function"&&(j=k,k={}),typeof T=="function"&&(j=T,T=null);try{this.compile()}catch(V){if(j)return j(V);throw V}var M=T?T.push():new w;M.topLevel=!0;var D=new _(k||{},this.blocks,this.env);this.rootRenderFunc(this.env,D,M,E,function(V){V?j(V,null):j(null,D.getExported())})},N.compile=function(){this.compiled||this._compile()},N._compile=function(){var k;if(this.tmplProps)k=this.tmplProps;else{var T=l.compile(this.tmplStr,this.env.asyncFilters,this.env.extensionsList,this.path,this.env.opts),j=new Function(T);k=j()}this.blocks=this._getBlocks(k),this.rootRenderFunc=k.root,this.compiled=!0},N._getBlocks=function(k){var T={};return s.keys(k).forEach(function(j){j.slice(0,2)==="b_"&&(T[j.slice(2)]=k[j])}),T},B}(v);e.exports={Environment:I,Template:P}},function(e,t,a){"use strict";function n(c,f){c.prototype=Object.create(f.prototype),c.prototype.constructor=c,i(c,f)}function i(c,f){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(b,d){return b.__proto__=d,b},i(c,f)}var r=a(9),o=a(3),s=a(1).Obj,l=a(0),u=function(c){n(f,c);function f(){return c.apply(this,arguments)||this}var p=f.prototype;return p.init=function(d){this.tokens=d,this.peeked=null,this.breakOnBlocks=null,this.dropLeadingWhitespace=!1,this.extensions=[]},p.nextToken=function(d){var h;if(this.peeked)if(!d&&this.peeked.type===r.TOKEN_WHITESPACE)this.peeked=null;else return h=this.peeked,this.peeked=null,h;if(h=this.tokens.nextToken(),!d)for(;h&&h.type===r.TOKEN_WHITESPACE;)h=this.tokens.nextToken();return h},p.peekToken=function(){return this.peeked=this.peeked||this.nextToken(),this.peeked},p.pushToken=function(d){if(this.peeked)throw new Error("pushToken: can only push one token on between reads");this.peeked=d},p.error=function(d,h,m){if(h===void 0||m===void 0){var v=this.peekToken()||{};h=v.lineno,m=v.colno}return h!==void 0&&(h+=1),m!==void 0&&(m+=1),new l.TemplateError(d,h,m)},p.fail=function(d,h,m){throw this.error(d,h,m)},p.skip=function(d){var h=this.nextToken();return!h||h.type!==d?(this.pushToken(h),!1):!0},p.expect=function(d){var h=this.nextToken();return h.type!==d&&this.fail("expected "+d+", got "+h.type,h.lineno,h.colno),h},p.skipValue=function(d,h){var m=this.nextToken();return!m||m.type!==d||m.value!==h?(this.pushToken(m),!1):!0},p.skipSymbol=function(d){return this.skipValue(r.TOKEN_SYMBOL,d)},p.advanceAfterBlockEnd=function(d){var h;return d||(h=this.peekToken(),h||this.fail("unexpected end of file"),h.type!==r.TOKEN_SYMBOL&&this.fail("advanceAfterBlockEnd: expected symbol token or explicit name to be passed"),d=this.nextToken().value),h=this.nextToken(),h&&h.type===r.TOKEN_BLOCK_END?h.value.charAt(0)==="-"&&(this.dropLeadingWhitespace=!0):this.fail("expected block end in "+d+" statement"),h},p.advanceAfterVariableEnd=function(){var d=this.nextToken();d&&d.type===r.TOKEN_VARIABLE_END?this.dropLeadingWhitespace=d.value.charAt(d.value.length-this.tokens.tags.VARIABLE_END.length-1)==="-":(this.pushToken(d),this.fail("expected variable end"))},p.parseFor=function(){var d=this.peekToken(),h,m;this.skipSymbol("for")?(h=new o.For(d.lineno,d.colno),m="endfor"):this.skipSymbol("asyncEach")?(h=new o.AsyncEach(d.lineno,d.colno),m="endeach"):this.skipSymbol("asyncAll")?(h=new o.AsyncAll(d.lineno,d.colno),m="endall"):this.fail("parseFor: expected for{Async}",d.lineno,d.colno),h.name=this.parsePrimary(),h.name instanceof o.Symbol||this.fail("parseFor: variable name expected for loop");var v=this.peekToken().type;if(v===r.TOKEN_COMMA){var x=h.name;for(h.name=new o.Array(x.lineno,x.colno),h.name.addChild(x);this.skip(r.TOKEN_COMMA);){var E=this.parsePrimary();h.name.addChild(E)}}return this.skipSymbol("in")||this.fail('parseFor: expected "in" keyword for loop',d.lineno,d.colno),h.arr=this.parseExpression(),this.advanceAfterBlockEnd(d.value),h.body=this.parseUntilBlocks(m,"else"),this.skipSymbol("else")&&(this.advanceAfterBlockEnd("else"),h.else_=this.parseUntilBlocks(m)),this.advanceAfterBlockEnd(),h},p.parseMacro=function(){var d=this.peekToken();this.skipSymbol("macro")||this.fail("expected macro");var h=this.parsePrimary(!0),m=this.parseSignature(),v=new o.Macro(d.lineno,d.colno,h,m);return this.advanceAfterBlockEnd(d.value),v.body=this.parseUntilBlocks("endmacro"),this.advanceAfterBlockEnd(),v},p.parseCall=function(){var d=this.peekToken();this.skipSymbol("call")||this.fail("expected call");var h=this.parseSignature(!0)||new o.NodeList,m=this.parsePrimary();this.advanceAfterBlockEnd(d.value);var v=this.parseUntilBlocks("endcall");this.advanceAfterBlockEnd();var x=new o.Symbol(d.lineno,d.colno,"caller"),E=new o.Caller(d.lineno,d.colno,x,h,v),g=m.args.children;g[g.length-1]instanceof o.KeywordArgs||g.push(new o.KeywordArgs);var w=g[g.length-1];return w.addChild(new o.Pair(d.lineno,d.colno,x,E)),new o.Output(d.lineno,d.colno,[m])},p.parseWithContext=function(){var d=this.peekToken(),h=null;return this.skipSymbol("with")?h=!0:this.skipSymbol("without")&&(h=!1),h!==null&&(this.skipSymbol("context")||this.fail("parseFrom: expected context after with/without",d.lineno,d.colno)),h},p.parseImport=function(){var d=this.peekToken();this.skipSymbol("import")||this.fail("parseImport: expected import",d.lineno,d.colno);var h=this.parseExpression();this.skipSymbol("as")||this.fail('parseImport: expected "as" keyword',d.lineno,d.colno);var m=this.parseExpression(),v=this.parseWithContext(),x=new o.Import(d.lineno,d.colno,h,m,v);return this.advanceAfterBlockEnd(d.value),x},p.parseFrom=function(){var d=this.peekToken();this.skipSymbol("from")||this.fail("parseFrom: expected from");var h=this.parseExpression();this.skipSymbol("import")||this.fail("parseFrom: expected import",d.lineno,d.colno);for(var m=new o.NodeList,v;;){var x=this.peekToken();if(x.type===r.TOKEN_BLOCK_END){m.children.length||this.fail("parseFrom: Expected at least one import name",d.lineno,d.colno),x.value.charAt(0)==="-"&&(this.dropLeadingWhitespace=!0),this.nextToken();break}m.children.length>0&&!this.skip(r.TOKEN_COMMA)&&this.fail("parseFrom: expected comma",d.lineno,d.colno);var E=this.parsePrimary();if(E.value.charAt(0)==="_"&&this.fail("parseFrom: names starting with an underscore cannot be imported",E.lineno,E.colno),this.skipSymbol("as")){var g=this.parsePrimary();m.addChild(new o.Pair(E.lineno,E.colno,E,g))}else m.addChild(E);v=this.parseWithContext()}return new o.FromImport(d.lineno,d.colno,h,m,v)},p.parseBlock=function(){var d=this.peekToken();this.skipSymbol("block")||this.fail("parseBlock: expected block",d.lineno,d.colno);var h=new o.Block(d.lineno,d.colno);h.name=this.parsePrimary(),h.name instanceof o.Symbol||this.fail("parseBlock: variable name expected",d.lineno,d.colno),this.advanceAfterBlockEnd(d.value),h.body=this.parseUntilBlocks("endblock"),this.skipSymbol("endblock"),this.skipSymbol(h.name.value);var m=this.peekToken();return m||this.fail("parseBlock: expected endblock, got end of file"),this.advanceAfterBlockEnd(m.value),h},p.parseExtends=function(){var d="extends",h=this.peekToken();this.skipSymbol(d)||this.fail("parseTemplateRef: expected "+d);var m=new o.Extends(h.lineno,h.colno);return m.template=this.parseExpression(),this.advanceAfterBlockEnd(h.value),m},p.parseInclude=function(){var d="include",h=this.peekToken();this.skipSymbol(d)||this.fail("parseInclude: expected "+d);var m=new o.Include(h.lineno,h.colno);return m.template=this.parseExpression(),this.skipSymbol("ignore")&&this.skipSymbol("missing")&&(m.ignoreMissing=!0),this.advanceAfterBlockEnd(h.value),m},p.parseIf=function(){var d=this.peekToken(),h;this.skipSymbol("if")||this.skipSymbol("elif")||this.skipSymbol("elseif")?h=new o.If(d.lineno,d.colno):this.skipSymbol("ifAsync")?h=new o.IfAsync(d.lineno,d.colno):this.fail("parseIf: expected if, elif, or elseif",d.lineno,d.colno),h.cond=this.parseExpression(),this.advanceAfterBlockEnd(d.value),h.body=this.parseUntilBlocks("elif","elseif","else","endif");var m=this.peekToken();switch(m&&m.value){case"elseif":case"elif":h.else_=this.parseIf();break;case"else":this.advanceAfterBlockEnd(),h.else_=this.parseUntilBlocks("endif"),this.advanceAfterBlockEnd();break;case"endif":h.else_=null,this.advanceAfterBlockEnd();break;default:this.fail("parseIf: expected elif, else, or endif, got end of file")}return h},p.parseSet=function(){var d=this.peekToken();this.skipSymbol("set")||this.fail("parseSet: expected set",d.lineno,d.colno);for(var h=new o.Set(d.lineno,d.colno,[]),m;(m=this.parsePrimary())&&(h.targets.push(m),!!this.skip(r.TOKEN_COMMA)););return this.skipValue(r.TOKEN_OPERATOR,"=")?(h.value=this.parseExpression(),this.advanceAfterBlockEnd(d.value)):this.skip(r.TOKEN_BLOCK_END)?(h.body=new o.Capture(d.lineno,d.colno,this.parseUntilBlocks("endset")),h.value=null,this.advanceAfterBlockEnd()):this.fail("parseSet: expected = or block end in set tag",d.lineno,d.colno),h},p.parseSwitch=function(){var d="switch",h="endswitch",m="case",v="default",x=this.peekToken();!this.skipSymbol(d)&&!this.skipSymbol(m)&&!this.skipSymbol(v)&&this.fail('parseSwitch: expected "switch," "case" or "default"',x.lineno,x.colno);var E=this.parseExpression();this.advanceAfterBlockEnd(d),this.parseUntilBlocks(m,v,h);var g=this.peekToken(),w=[],C;do{this.skipSymbol(m);var y=this.parseExpression();this.advanceAfterBlockEnd(d);var S=this.parseUntilBlocks(m,v,h);w.push(new o.Case(g.line,g.col,y,S)),g=this.peekToken()}while(g&&g.value===m);switch(g.value){case v:this.advanceAfterBlockEnd(),C=this.parseUntilBlocks(h),this.advanceAfterBlockEnd();break;case h:this.advanceAfterBlockEnd();break;default:this.fail('parseSwitch: expected "case," "default" or "endswitch," got EOF.')}return new o.Switch(x.lineno,x.colno,E,w,C)},p.parseStatement=function(){var d=this.peekToken(),h;if(d.type!==r.TOKEN_SYMBOL&&this.fail("tag name expected",d.lineno,d.colno),this.breakOnBlocks&&l.indexOf(this.breakOnBlocks,d.value)!==-1)return null;switch(d.value){case"raw":return this.parseRaw();case"verbatim":return this.parseRaw("verbatim");case"if":case"ifAsync":return this.parseIf();case"for":case"asyncEach":case"asyncAll":return this.parseFor();case"block":return this.parseBlock();case"extends":return this.parseExtends();case"include":return this.parseInclude();case"set":return this.parseSet();case"macro":return this.parseMacro();case"call":return this.parseCall();case"import":return this.parseImport();case"from":return this.parseFrom();case"filter":return this.parseFilterStatement();case"switch":return this.parseSwitch();default:if(this.extensions.length)for(var m=0;m<this.extensions.length;m++){var v=this.extensions[m];if(l.indexOf(v.tags||[],d.value)!==-1)return v.parse(this,o,r)}this.fail("unknown block tag: "+d.value,d.lineno,d.colno)}return h},p.parseRaw=function(d){d=d||"raw";for(var h="end"+d,m=new RegExp("([\\s\\S]*?){%\\s*("+d+"|"+h+")\\s*(?=%})%}"),v=1,x="",E=null,g=this.advanceAfterBlockEnd();(E=this.tokens._extractRegex(m))&&v>0;){var w=E[0],C=E[1],y=E[2];y===d?v+=1:y===h&&(v-=1),v===0?(x+=C,this.tokens.backN(w.length-C.length)):x+=w}return new o.Output(g.lineno,g.colno,[new o.TemplateData(g.lineno,g.colno,x)])},p.parsePostfix=function(d){for(var h,m=this.peekToken();m;){if(m.type===r.TOKEN_LEFT_PAREN)d=new o.FunCall(m.lineno,m.colno,d,this.parseSignature());else if(m.type===r.TOKEN_LEFT_BRACKET)h=this.parseAggregate(),h.children.length>1&&this.fail("invalid index"),d=new o.LookupVal(m.lineno,m.colno,d,h.children[0]);else if(m.type===r.TOKEN_OPERATOR&&m.value==="."){this.nextToken();var v=this.nextToken();v.type!==r.TOKEN_SYMBOL&&this.fail("expected name as lookup value, got "+v.value,v.lineno,v.colno),h=new o.Literal(v.lineno,v.colno,v.value),d=new o.LookupVal(m.lineno,m.colno,d,h)}else break;m=this.peekToken()}return d},p.parseExpression=function(){var d=this.parseInlineIf();return d},p.parseInlineIf=function(){var d=this.parseOr();if(this.skipSymbol("if")){var h=this.parseOr(),m=d;d=new o.InlineIf(d.lineno,d.colno),d.body=m,d.cond=h,this.skipSymbol("else")?d.else_=this.parseOr():d.else_=null}return d},p.parseOr=function(){for(var d=this.parseAnd();this.skipSymbol("or");){var h=this.parseAnd();d=new o.Or(d.lineno,d.colno,d,h)}return d},p.parseAnd=function(){for(var d=this.parseNot();this.skipSymbol("and");){var h=this.parseNot();d=new o.And(d.lineno,d.colno,d,h)}return d},p.parseNot=function(){var d=this.peekToken();return this.skipSymbol("not")?new o.Not(d.lineno,d.colno,this.parseNot()):this.parseIn()},p.parseIn=function(){for(var d=this.parseIs();;){var h=this.nextToken();if(!h)break;var m=h.type===r.TOKEN_SYMBOL&&h.value==="not";if(m||this.pushToken(h),this.skipSymbol("in")){var v=this.parseIs();d=new o.In(d.lineno,d.colno,d,v),m&&(d=new o.Not(d.lineno,d.colno,d))}else{m&&this.pushToken(h);break}}return d},p.parseIs=function(){var d=this.parseCompare();if(this.skipSymbol("is")){var h=this.skipSymbol("not"),m=this.parseCompare();d=new o.Is(d.lineno,d.colno,d,m),h&&(d=new o.Not(d.lineno,d.colno,d))}return d},p.parseCompare=function(){for(var d=["==","===","!=","!==","<",">","<=",">="],h=this.parseConcat(),m=[];;){var v=this.nextToken();if(v)if(d.indexOf(v.value)!==-1)m.push(new o.CompareOperand(v.lineno,v.colno,this.parseConcat(),v.value));else{this.pushToken(v);break}else break}return m.length?new o.Compare(m[0].lineno,m[0].colno,h,m):h},p.parseConcat=function(){for(var d=this.parseAdd();this.skipValue(r.TOKEN_TILDE,"~");){var h=this.parseAdd();d=new o.Concat(d.lineno,d.colno,d,h)}return d},p.parseAdd=function(){for(var d=this.parseSub();this.skipValue(r.TOKEN_OPERATOR,"+");){var h=this.parseSub();d=new o.Add(d.lineno,d.colno,d,h)}return d},p.parseSub=function(){for(var d=this.parseMul();this.skipValue(r.TOKEN_OPERATOR,"-");){var h=this.parseMul();d=new o.Sub(d.lineno,d.colno,d,h)}return d},p.parseMul=function(){for(var d=this.parseDiv();this.skipValue(r.TOKEN_OPERATOR,"*");){var h=this.parseDiv();d=new o.Mul(d.lineno,d.colno,d,h)}return d},p.parseDiv=function(){for(var d=this.parseFloorDiv();this.skipValue(r.TOKEN_OPERATOR,"/");){var h=this.parseFloorDiv();d=new o.Div(d.lineno,d.colno,d,h)}return d},p.parseFloorDiv=function(){for(var d=this.parseMod();this.skipValue(r.TOKEN_OPERATOR,"//");){var h=this.parseMod();d=new o.FloorDiv(d.lineno,d.colno,d,h)}return d},p.parseMod=function(){for(var d=this.parsePow();this.skipValue(r.TOKEN_OPERATOR,"%");){var h=this.parsePow();d=new o.Mod(d.lineno,d.colno,d,h)}return d},p.parsePow=function(){for(var d=this.parseUnary();this.skipValue(r.TOKEN_OPERATOR,"**");){var h=this.parseUnary();d=new o.Pow(d.lineno,d.colno,d,h)}return d},p.parseUnary=function(d){var h=this.peekToken(),m;return this.skipValue(r.TOKEN_OPERATOR,"-")?m=new o.Neg(h.lineno,h.colno,this.parseUnary(!0)):this.skipValue(r.TOKEN_OPERATOR,"+")?m=new o.Pos(h.lineno,h.colno,this.parseUnary(!0)):m=this.parsePrimary(),d||(m=this.parseFilter(m)),m},p.parsePrimary=function(d){var h=this.nextToken(),m,v=null;if(h?h.type===r.TOKEN_STRING?m=h.value:h.type===r.TOKEN_INT?m=parseInt(h.value,10):h.type===r.TOKEN_FLOAT?m=parseFloat(h.value):h.type===r.TOKEN_BOOLEAN?h.value==="true"?m=!0:h.value==="false"?m=!1:this.fail("invalid boolean: "+h.value,h.lineno,h.colno):h.type===r.TOKEN_NONE?m=null:h.type===r.TOKEN_REGEX&&(m=new RegExp(h.value.body,h.value.flags)):this.fail("expected expression, got end of file"),m!==void 0?v=new o.Literal(h.lineno,h.colno,m):h.type===r.TOKEN_SYMBOL?v=new o.Symbol(h.lineno,h.colno,h.value):(this.pushToken(h),v=this.parseAggregate()),d||(v=this.parsePostfix(v)),v)return v;throw this.error("unexpected token: "+h.value,h.lineno,h.colno)},p.parseFilterName=function(){for(var d=this.expect(r.TOKEN_SYMBOL),h=d.value;this.skipValue(r.TOKEN_OPERATOR,".");)h+="."+this.expect(r.TOKEN_SYMBOL).value;return new o.Symbol(d.lineno,d.colno,h)},p.parseFilterArgs=function(d){if(this.peekToken().type===r.TOKEN_LEFT_PAREN){var h=this.parsePostfix(d);return h.args.children}return[]},p.parseFilter=function(d){for(;this.skip(r.TOKEN_PIPE);){var h=this.parseFilterName();d=new o.Filter(h.lineno,h.colno,h,new o.NodeList(h.lineno,h.colno,[d].concat(this.parseFilterArgs(d))))}return d},p.parseFilterStatement=function(){var d=this.peekToken();this.skipSymbol("filter")||this.fail("parseFilterStatement: expected filter");var h=this.parseFilterName(),m=this.parseFilterArgs(h);this.advanceAfterBlockEnd(d.value);var v=new o.Capture(h.lineno,h.colno,this.parseUntilBlocks("endfilter"));this.advanceAfterBlockEnd();var x=new o.Filter(h.lineno,h.colno,h,new o.NodeList(h.lineno,h.colno,[v].concat(m)));return new o.Output(h.lineno,h.colno,[x])},p.parseAggregate=function(){var d=this.nextToken(),h;switch(d.type){case r.TOKEN_LEFT_PAREN:h=new o.Group(d.lineno,d.colno);break;case r.TOKEN_LEFT_BRACKET:h=new o.Array(d.lineno,d.colno);break;case r.TOKEN_LEFT_CURLY:h=new o.Dict(d.lineno,d.colno);break;default:return null}for(;;){var m=this.peekToken().type;if(m===r.TOKEN_RIGHT_PAREN||m===r.TOKEN_RIGHT_BRACKET||m===r.TOKEN_RIGHT_CURLY){this.nextToken();break}if(h.children.length>0&&(this.skip(r.TOKEN_COMMA)||this.fail("parseAggregate: expected comma after expression",d.lineno,d.colno)),h instanceof o.Dict){var v=this.parsePrimary();this.skip(r.TOKEN_COLON)||this.fail("parseAggregate: expected colon after dict key",d.lineno,d.colno);var x=this.parseExpression();h.addChild(new o.Pair(v.lineno,v.colno,v,x))}else{var E=this.parseExpression();h.addChild(E)}}return h},p.parseSignature=function(d,h){var m=this.peekToken();if(!h&&m.type!==r.TOKEN_LEFT_PAREN){if(d)return null;this.fail("expected arguments",m.lineno,m.colno)}m.type===r.TOKEN_LEFT_PAREN&&(m=this.nextToken());for(var v=new o.NodeList(m.lineno,m.colno),x=new o.KeywordArgs(m.lineno,m.colno),E=!1;;){if(m=this.peekToken(),!h&&m.type===r.TOKEN_RIGHT_PAREN){this.nextToken();break}else if(h&&m.type===r.TOKEN_BLOCK_END)break;if(E&&!this.skip(r.TOKEN_COMMA))this.fail("parseSignature: expected comma after expression",m.lineno,m.colno);else{var g=this.parseExpression();this.skipValue(r.TOKEN_OPERATOR,"=")?x.addChild(new o.Pair(g.lineno,g.colno,g,this.parseExpression())):v.addChild(g)}E=!0}return x.children.length&&v.addChild(x),v},p.parseUntilBlocks=function(){for(var d=this.breakOnBlocks,h=arguments.length,m=new Array(h),v=0;v<h;v++)m[v]=arguments[v];this.breakOnBlocks=m;var x=this.parse();return this.breakOnBlocks=d,x},p.parseNodes=function(){for(var d,h=[];d=this.nextToken();)if(d.type===r.TOKEN_DATA){var m=d.value,v=this.peekToken(),x=v&&v.value;this.dropLeadingWhitespace&&(m=m.replace(/^\s*/,""),this.dropLeadingWhitespace=!1),v&&(v.type===r.TOKEN_BLOCK_START&&x.charAt(x.length-1)==="-"||v.type===r.TOKEN_VARIABLE_START&&x.charAt(this.tokens.tags.VARIABLE_START.length)==="-"||v.type===r.TOKEN_COMMENT&&x.charAt(this.tokens.tags.COMMENT_START.length)==="-")&&(m=m.replace(/\s*$/,"")),h.push(new o.Output(d.lineno,d.colno,[new o.TemplateData(d.lineno,d.colno,m)]))}else if(d.type===r.TOKEN_BLOCK_START){this.dropLeadingWhitespace=!1;var E=this.parseStatement();if(!E)break;h.push(E)}else if(d.type===r.TOKEN_VARIABLE_START){var g=this.parseExpression();this.dropLeadingWhitespace=!1,this.advanceAfterVariableEnd(),h.push(new o.Output(d.lineno,d.colno,[g]))}else d.type===r.TOKEN_COMMENT?this.dropLeadingWhitespace=d.value.charAt(d.value.length-this.tokens.tags.COMMENT_END.length-1)==="-":this.fail("Unexpected token at top-level: "+d.type,d.lineno,d.colno);return h},p.parse=function(){return new o.NodeList(0,0,this.parseNodes())},p.parseAsRoot=function(){return new o.Root(0,0,this.parseNodes())},f}(s);e.exports={parse:function(f,p,b){var d=new u(r.lex(f,b));return p!==void 0&&(d.extensions=p),d.parseAsRoot()},Parser:u}},function(e,t,a){"use strict";var n=a(0),i=` - \r\xA0`,r="()[]{}%*-+~/#,:|.<>=!",o="0123456789",s="{%",l="%}",u="{{",c="}}",f="{#",p="#}",b="string",d="whitespace",h="data",m="block-start",v="block-end",x="variable-start",E="variable-end",g="comment",w="left-paren",C="right-paren",y="left-bracket",S="right-bracket",I="left-curly",_="right-curly",P="operator",F="comma",B="colon",N="tilde",L="pipe",k="int",T="float",j="boolean",M="none",D="symbol",V="special",q="regex";function Z(fe,ee,oe,U){return{type:fe,value:ee,lineno:oe,colno:U}}var pe=function(){function fe(oe,U){this.str=oe,this.index=0,this.len=oe.length,this.lineno=0,this.colno=0,this.in_code=!1,U=U||{};var X=U.tags||{};this.tags={BLOCK_START:X.blockStart||s,BLOCK_END:X.blockEnd||l,VARIABLE_START:X.variableStart||u,VARIABLE_END:X.variableEnd||c,COMMENT_START:X.commentStart||f,COMMENT_END:X.commentEnd||p},this.trimBlocks=!!U.trimBlocks,this.lstripBlocks=!!U.lstripBlocks}var ee=fe.prototype;return ee.nextToken=function(){var U=this.lineno,X=this.colno,$;if(this.in_code){var he=this.current();if(this.isFinished())return null;if(he==='"'||he==="'")return Z(b,this._parseString(he),U,X);if($=this._extract(i))return Z(d,$,U,X);if(($=this._extractString(this.tags.BLOCK_END))||($=this._extractString("-"+this.tags.BLOCK_END)))return this.in_code=!1,this.trimBlocks&&(he=this.current(),he===` +else {`),this._emit("cb()")),this._emitLine("}")},x.compileIfAsync=function(g,w){this._emit("(function(cb) {"),this.compileIf(g,w,!0),this._emit("})("+this._makeCallback()),this._addScopeLevel()},x._emitLoopBindings=function(g,w,C,y){var S=this,A=[{name:"index",val:C+" + 1"},{name:"index0",val:C},{name:"revindex",val:y+" - "+C},{name:"revindex0",val:y+" - "+C+" - 1"},{name:"first",val:C+" === 0"},{name:"last",val:C+" === "+y+" - 1"},{name:"length",val:y}];A.forEach(function(_){S._emitLine('frame.set("loop.'+_.name+'", '+_.val+");")})},x.compileFor=function(g,w){var C=this,y=this._tmpid(),S=this._tmpid(),A=this._tmpid();if(w=w.push(),this._emitLine("frame = frame.push();"),this._emit("var "+A+" = "),this._compileExpression(g.arr,w),this._emitLine(";"),this._emit("if("+A+") {"),this._emitLine(A+" = runtime.fromIterator("+A+");"),g.name instanceof s.Array){this._emitLine("var "+y+";"),this._emitLine("if(runtime.isArray("+A+")) {"),this._emitLine("var "+S+" = "+A+".length;"),this._emitLine("for("+y+"=0; "+y+" < "+A+".length; "+y+"++) {"),g.name.children.forEach(function(k,T){var N=C._tmpid();C._emitLine("var "+N+" = "+A+"["+y+"]["+T+"];"),C._emitLine('frame.set("'+k+'", '+A+"["+y+"]["+T+"]);"),w.set(g.name.children[T].value,N)}),this._emitLoopBindings(g,A,y,S),this._withScopedSyntax(function(){C.compile(g.body,w)}),this._emitLine("}"),this._emitLine("} else {");var _=g.name.children,P=_[0],F=_[1],B=this._tmpid(),j=this._tmpid();w.set(P.value,B),w.set(F.value,j),this._emitLine(y+" = -1;"),this._emitLine("var "+S+" = runtime.keys("+A+").length;"),this._emitLine("for(var "+B+" in "+A+") {"),this._emitLine(y+"++;"),this._emitLine("var "+j+" = "+A+"["+B+"];"),this._emitLine('frame.set("'+P.value+'", '+B+");"),this._emitLine('frame.set("'+F.value+'", '+j+");"),this._emitLoopBindings(g,A,y,S),this._withScopedSyntax(function(){C.compile(g.body,w)}),this._emitLine("}"),this._emitLine("}")}else{var L=this._tmpid();w.set(g.name.value,L),this._emitLine("var "+S+" = "+A+".length;"),this._emitLine("for(var "+y+"=0; "+y+" < "+A+".length; "+y+"++) {"),this._emitLine("var "+L+" = "+A+"["+y+"];"),this._emitLine('frame.set("'+g.name.value+'", '+L+");"),this._emitLoopBindings(g,A,y,S),this._withScopedSyntax(function(){C.compile(g.body,w)}),this._emitLine("}")}this._emitLine("}"),g.else_&&(this._emitLine("if (!"+S+") {"),this.compile(g.else_,w),this._emitLine("}")),this._emitLine("frame = frame.pop();")},x._compileAsyncLoop=function(g,w,C){var y=this,S=this._tmpid(),A=this._tmpid(),_=this._tmpid(),P=C?"asyncAll":"asyncEach";if(w=w.push(),this._emitLine("frame = frame.push();"),this._emit("var "+_+" = runtime.fromIterator("),this._compileExpression(g.arr,w),this._emitLine(");"),g.name instanceof s.Array){var F=g.name.children.length;this._emit("runtime."+P+"("+_+", "+F+", function("),g.name.children.forEach(function(L){y._emit(L.value+",")}),this._emit(S+","+A+",next) {"),g.name.children.forEach(function(L){var k=L.value;w.set(k,k),y._emitLine('frame.set("'+k+'", '+k+");")})}else{var B=g.name.value;this._emitLine("runtime."+P+"("+_+", 1, function("+B+", "+S+", "+A+",next) {"),this._emitLine('frame.set("'+B+'", '+B+");"),w.set(B,B)}this._emitLoopBindings(g,_,S,A),this._withScopedSyntax(function(){var L;C&&(L=y._pushBuffer()),y.compile(g.body,w),y._emitLine("next("+S+(L?","+L:"")+");"),C&&y._popBuffer()});var j=this._tmpid();this._emitLine("}, "+this._makeCallback(j)),this._addScopeLevel(),C&&this._emitLine(this.buffer+" += "+j+";"),g.else_&&(this._emitLine("if (!"+_+".length) {"),this.compile(g.else_,w),this._emitLine("}")),this._emitLine("frame = frame.pop();")},x.compileAsyncEach=function(g,w){this._compileAsyncLoop(g,w)},x.compileAsyncAll=function(g,w){this._compileAsyncLoop(g,w,!0)},x._compileMacro=function(g,w){var C=this,y=[],S=null,A="macro_"+this._tmpid(),_=w!==void 0;g.args.children.forEach(function(k,T){T===g.args.children.length-1&&k instanceof s.Dict?S=k:(C.assertType(k,s.Symbol),y.push(k))});var P=[].concat(y.map(function(k){return"l_"+k.value}),["kwargs"]),F=y.map(function(k){return'"'+k.value+'"'}),B=(S&&S.children||[]).map(function(k){return'"'+k.key.value+'"'}),j;_?j=w.push(!0):j=new f,this._emitLines("var "+A+" = runtime.makeMacro(","["+F.join(", ")+"], ","["+B.join(", ")+"], ","function ("+P.join(", ")+") {","var callerFrame = frame;","frame = "+(_?"frame.push(true);":"new runtime.Frame();"),"kwargs = kwargs || {};",'if (Object.prototype.hasOwnProperty.call(kwargs, "caller")) {','frame.set("caller", kwargs.caller); }'),y.forEach(function(k){C._emitLine('frame.set("'+k.value+'", l_'+k.value+");"),j.set(k.value,"l_"+k.value)}),S&&S.children.forEach(function(k){var T=k.key.value;C._emit('frame.set("'+T+'", '),C._emit('Object.prototype.hasOwnProperty.call(kwargs, "'+T+'")'),C._emit(' ? kwargs["'+T+'"] : '),C._compileExpression(k.value,j),C._emit(");")});var L=this._pushBuffer();return this._withScopedSyntax(function(){C.compile(g.body,j)}),this._emitLine("frame = "+(_?"frame.pop();":"callerFrame;")),this._emitLine("return new runtime.SafeString("+L+");"),this._emitLine("});"),this._popBuffer(),A},x.compileMacro=function(g,w){var C=this._compileMacro(g),y=g.name.value;w.set(y,C),w.parent?this._emitLine('frame.set("'+y+'", '+C+");"):(g.name.value.charAt(0)!=="_"&&this._emitLine('context.addExport("'+y+'");'),this._emitLine('context.setVariable("'+y+'", '+C+");"))},x.compileCaller=function(g,w){this._emit("(function (){");var C=this._compileMacro(g,w);this._emit("return "+C+";})()")},x._compileGetTemplate=function(g,w,C,y){var S=this._tmpid(),A=this._templateName(),_=this._makeCallback(S),P=C?"true":"false",F=y?"true":"false";return this._emit("env.getTemplate("),this._compileExpression(g.template,w),this._emitLine(", "+P+", "+A+", "+F+", "+_),S},x.compileImport=function(g,w){var C=g.target.value,y=this._compileGetTemplate(g,w,!1,!1);this._addScopeLevel(),this._emitLine(y+".getExported("+(g.withContext?"context.getVariables(), frame, ":"")+this._makeCallback(y)),this._addScopeLevel(),w.set(C,y),w.parent?this._emitLine('frame.set("'+C+'", '+y+");"):this._emitLine('context.setVariable("'+C+'", '+y+");")},x.compileFromImport=function(g,w){var C=this,y=this._compileGetTemplate(g,w,!1,!1);this._addScopeLevel(),this._emitLine(y+".getExported("+(g.withContext?"context.getVariables(), frame, ":"")+this._makeCallback(y)),this._addScopeLevel(),g.names.children.forEach(function(S){var A,_,P=C._tmpid();S instanceof s.Pair?(A=S.key.value,_=S.value.value):(A=S.value,_=A),C._emitLine("if(Object.prototype.hasOwnProperty.call("+y+', "'+A+'")) {'),C._emitLine("var "+P+" = "+y+"."+A+";"),C._emitLine("} else {"),C._emitLine(`cb(new Error("cannot import '`+A+`'")); return;`),C._emitLine("}"),w.set(_,P),w.parent?C._emitLine('frame.set("'+_+'", '+P+");"):C._emitLine('context.setVariable("'+_+'", '+P+");")})},x.compileBlock=function(g){var w=this._tmpid();this.inBlock||this._emit('(parentTemplate ? function(e, c, f, r, cb) { cb(""); } : '),this._emit('context.getBlock("'+g.name.value+'")'),this.inBlock||this._emit(")"),this._emitLine("(env, context, frame, runtime, "+this._makeCallback(w)),this._emitLine(this.buffer+" += "+w+";"),this._addScopeLevel()},x.compileSuper=function(g,w){var C=g.blockName.value,y=g.symbol.value,S=this._makeCallback(y);this._emitLine('context.getSuper(env, "'+C+'", b_'+C+", frame, runtime, "+S),this._emitLine(y+" = runtime.markSafe("+y+");"),this._addScopeLevel(),w.set(y,y)},x.compileExtends=function(g,w){var C=this._tmpid(),y=this._compileGetTemplate(g,w,!0,!1);this._emitLine("parentTemplate = "+y),this._emitLine("for(var "+C+" in parentTemplate.blocks) {"),this._emitLine("context.addBlock("+C+", parentTemplate.blocks["+C+"]);"),this._emitLine("}"),this._addScopeLevel()},x.compileInclude=function(g,w){this._emitLine("var tasks = [];"),this._emitLine("tasks.push("),this._emitLine("function(callback) {");var C=this._compileGetTemplate(g,w,!1,g.ignoreMissing);this._emitLine("callback(null,"+C+");});"),this._emitLine("});");var y=this._tmpid();this._emitLine("tasks.push("),this._emitLine("function(template, callback){"),this._emitLine("template.render(context.getVariables(), frame, "+this._makeCallback(y)),this._emitLine("callback(null,"+y+");});"),this._emitLine("});"),this._emitLine("tasks.push("),this._emitLine("function(result, callback){"),this._emitLine(this.buffer+" += result;"),this._emitLine("callback(null);"),this._emitLine("});"),this._emitLine("env.waterfall(tasks, function(){"),this._addScopeLevel()},x.compileTemplateData=function(g,w){this.compileLiteral(g,w)},x.compileCapture=function(g,w){var C=this,y=this.buffer;this.buffer="output",this._emitLine("(function() {"),this._emitLine('var output = "";'),this._withScopedSyntax(function(){C.compile(g.body,w)}),this._emitLine("return output;"),this._emitLine("})()"),this.buffer=y},x.compileOutput=function(g,w){var C=this,y=g.children;y.forEach(function(S){S instanceof s.TemplateData?S.value&&(C._emit(C.buffer+" += "),C.compileLiteral(S,w),C._emitLine(";")):(C._emit(C.buffer+" += runtime.suppressValue("),C.throwOnUndefined&&C._emit("runtime.ensureDefined("),C.compile(S,w),C.throwOnUndefined&&C._emit(","+g.lineno+","+g.colno+")"),C._emit(`, env.opts.autoescape); +`))})},x.compileRoot=function(g,w){var C=this;w&&this.fail("compileRoot: root node can't have frame"),w=new f,this._emitFuncBegin(g,"root"),this._emitLine("var parentTemplate = null;"),this._compileChildren(g,w),this._emitLine("if(parentTemplate) {"),this._emitLine("parentTemplate.rootRenderFunc(env, context, frame, runtime, cb);"),this._emitLine("} else {"),this._emitLine("cb(null, "+this.buffer+");"),this._emitLine("}"),this._emitFuncEnd(!0),this.inBlock=!0;var y=[],S=g.findAll(s.Block);S.forEach(function(A,_){var P=A.name.value;if(y.indexOf(P)!==-1)throw new Error('Block "'+P+'" defined more than once.');y.push(P),C._emitFuncBegin(A,"b_"+P);var F=new f;C._emitLine("var frame = frame.push(true);"),C.compile(A.body,F),C._emitFuncEnd()}),this._emitLine("return {"),S.forEach(function(A,_){var P="b_"+A.name.value;C._emitLine(P+": "+P+",")}),this._emitLine(`root: root +};`)},x.compile=function(g,w){var C=this["compile"+g.typename];C?C.call(this,g,w):this.fail("compile: Cannot compile node: "+g.typename,g.lineno,g.colno)},x.getCode=function(){return this.codebuf.join("")},v}(b);e.exports={compile:function(v,x,E,g,w){w===void 0&&(w={});var C=new m(g,w.throwOnUndefined),y=(E||[]).map(function(A){return A.preprocess}).filter(function(A){return!!A}),S=y.reduce(function(A,_){return _(A)},v);return C.compile(o.transform(r.parse(S,E,w),x,g)),C.getCode()},Compiler:m}},function(e,t,a){"use strict";function n(l,u){l.prototype=Object.create(u.prototype),l.prototype.constructor=l,i(l,u)}function i(l,u){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(f,p){return f.__proto__=p,f},i(l,u)}var r=a(4),o=a(1),s=o.EmitterObj;e.exports=function(l){n(u,l);function u(){return l.apply(this,arguments)||this}var c=u.prototype;return c.resolve=function(p,b){return r.resolve(r.dirname(p),b)},c.isRelative=function(p){return p.indexOf("./")===0||p.indexOf("../")===0},u}(s)},function(e,t,a){"use strict";function n(F,B){F.prototype=Object.create(B.prototype),F.prototype.constructor=F,i(F,B)}function i(F,B){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(L,k){return L.__proto__=k,L},i(F,B)}var r=a(12),o=a(15),s=a(0),l=a(5),u=a(18),c=a(10),f=c.FileSystemLoader,p=c.WebLoader,b=c.PrecompiledLoader,d=a(20),m=a(21),h=a(1),v=h.Obj,x=h.EmitterObj,E=a(2),g=E.handleError,w=E.Frame,C=a(22);function y(F,B,j){r(function(){F(B,j)})}var S={type:"code",obj:{root:function(B,j,L,k,T){try{T(null,"")}catch(N){T(g(N,null,null))}}}},A=function(F){n(B,F);function B(){return F.apply(this,arguments)||this}var j=B.prototype;return j.init=function(k,T){var N=this;T=this.opts=T||{},this.opts.dev=!!T.dev,this.opts.autoescape=T.autoescape!=null?T.autoescape:!0,this.opts.throwOnUndefined=!!T.throwOnUndefined,this.opts.trimBlocks=!!T.trimBlocks,this.opts.lstripBlocks=!!T.lstripBlocks,this.loaders=[],k?this.loaders=s.isArray(k)?k:[k]:f?this.loaders=[new f("views")]:p&&(this.loaders=[new p("/views")]),typeof window!="undefined"&&window.nunjucksPrecompiled&&this.loaders.unshift(new b(window.nunjucksPrecompiled)),this._initLoaders(),this.globals=m(),this.filters={},this.tests={},this.asyncFilters=[],this.extensions={},this.extensionsList=[],s._entries(u).forEach(function(M){var D=M[0],V=M[1];return N.addFilter(D,V)}),s._entries(d).forEach(function(M){var D=M[0],V=M[1];return N.addTest(D,V)})},j._initLoaders=function(){var k=this;this.loaders.forEach(function(T){T.cache={},typeof T.on=="function"&&(T.on("update",function(N,M){T.cache[N]=null,k.emit("update",N,M,T)}),T.on("load",function(N,M){k.emit("load",N,M,T)}))})},j.invalidateCache=function(){this.loaders.forEach(function(k){k.cache={}})},j.addExtension=function(k,T){return T.__name=k,this.extensions[k]=T,this.extensionsList.push(T),this},j.removeExtension=function(k){var T=this.getExtension(k);T&&(this.extensionsList=s.without(this.extensionsList,T),delete this.extensions[k])},j.getExtension=function(k){return this.extensions[k]},j.hasExtension=function(k){return!!this.extensions[k]},j.addGlobal=function(k,T){return this.globals[k]=T,this},j.getGlobal=function(k){if(typeof this.globals[k]=="undefined")throw new Error("global not found: "+k);return this.globals[k]},j.addFilter=function(k,T,N){var M=T;return N&&this.asyncFilters.push(k),this.filters[k]=M,this},j.getFilter=function(k){if(!this.filters[k])throw new Error("filter not found: "+k);return this.filters[k]},j.addTest=function(k,T){return this.tests[k]=T,this},j.getTest=function(k){if(!this.tests[k])throw new Error("test not found: "+k);return this.tests[k]},j.resolveTemplate=function(k,T,N){var M=k.isRelative&&T?k.isRelative(N):!1;return M&&k.resolve?k.resolve(T,N):N},j.getTemplate=function(k,T,N,M,D){var V=this,q=this,Z=null;if(k&&k.raw&&(k=k.raw),s.isFunction(N)&&(D=N,N=null,T=T||!1),s.isFunction(T)&&(D=T,T=!1),k instanceof P)Z=k;else{if(typeof k!="string")throw new Error("template names must be a string: "+k);for(var pe=0;pe<this.loaders.length;pe++){var fe=this.loaders[pe];if(Z=fe.cache[this.resolveTemplate(fe,N,k)],Z)break}}if(Z)if(T&&Z.compile(),D){D(null,Z);return}else return Z;var ee,oe=function(X,$){if(!$&&!X&&!M&&(X=new Error("template not found: "+k)),X)if(D){D(X);return}else throw X;var he;$?(he=new P($.src,V,$.path,T),$.noCache||($.loader.cache[k]=he)):he=new P(S,V,"",T),D?D(null,he):ee=he};return s.asyncIter(this.loaders,function(U,X,$,he){function qe(ze,ht){ze?he(ze):ht?(ht.loader=U,he(null,ht)):$()}k=q.resolveTemplate(U,N,k),U.async?U.getSource(k,qe):qe(null,U.getSource(k))},oe),ee},j.express=function(k){return C(this,k)},j.render=function(k,T,N){s.isFunction(T)&&(N=T,T=null);var M=null;return this.getTemplate(k,function(D,V){if(D&&N)y(N,D);else{if(D)throw D;M=V.render(T,N)}}),M},j.renderString=function(k,T,N,M){s.isFunction(N)&&(M=N,N={}),N=N||{};var D=new P(k,this,N.path);return D.render(T,M)},j.waterfall=function(k,T,N){return o(k,T,N)},B}(x),_=function(F){n(B,F);function B(){return F.apply(this,arguments)||this}var j=B.prototype;return j.init=function(k,T,N){var M=this;this.env=N||new A,this.ctx=s.extend({},k),this.blocks={},this.exported=[],s.keys(T).forEach(function(D){M.addBlock(D,T[D])})},j.lookup=function(k){return k in this.env.globals&&!(k in this.ctx)?this.env.globals[k]:this.ctx[k]},j.setVariable=function(k,T){this.ctx[k]=T},j.getVariables=function(){return this.ctx},j.addBlock=function(k,T){return this.blocks[k]=this.blocks[k]||[],this.blocks[k].push(T),this},j.getBlock=function(k){if(!this.blocks[k])throw new Error('unknown block "'+k+'"');return this.blocks[k][0]},j.getSuper=function(k,T,N,M,D,V){var q=s.indexOf(this.blocks[T]||[],N),Z=this.blocks[T][q+1],pe=this;if(q===-1||!Z)throw new Error('no super block available for "'+T+'"');Z(k,pe,M,D,V)},j.addExport=function(k){this.exported.push(k)},j.getExported=function(){var k=this,T={};return this.exported.forEach(function(N){T[N]=k.ctx[N]}),T},B}(v),P=function(F){n(B,F);function B(){return F.apply(this,arguments)||this}var j=B.prototype;return j.init=function(k,T,N,M){if(this.env=T||new A,s.isObject(k))switch(k.type){case"code":this.tmplProps=k.obj;break;case"string":this.tmplStr=k.obj;break;default:throw new Error("Unexpected template object type "+k.type+"; expected 'code', or 'string'")}else if(s.isString(k))this.tmplStr=k;else throw new Error("src must be a string or an object describing the source");if(this.path=N,M)try{this._compile()}catch(D){throw s._prettifyError(this.path,this.env.opts.dev,D)}else this.compiled=!1},j.render=function(k,T,N){var M=this;typeof k=="function"?(N=k,k={}):typeof T=="function"&&(N=T,T=null);var D=!T;try{this.compile()}catch(ee){var V=s._prettifyError(this.path,this.env.opts.dev,ee);if(N)return y(N,V);throw V}var q=new _(k||{},this.blocks,this.env),Z=T?T.push(!0):new w;Z.topLevel=!0;var pe=null,fe=!1;return this.rootRenderFunc(this.env,q,Z,E,function(ee,oe){if(!(fe&&N&&typeof oe!="undefined"))if(ee&&(ee=s._prettifyError(M.path,M.env.opts.dev,ee),fe=!0),N)D?y(N,ee,oe):N(ee,oe);else{if(ee)throw ee;pe=oe}}),pe},j.getExported=function(k,T,N){typeof k=="function"&&(N=k,k={}),typeof T=="function"&&(N=T,T=null);try{this.compile()}catch(V){if(N)return N(V);throw V}var M=T?T.push():new w;M.topLevel=!0;var D=new _(k||{},this.blocks,this.env);this.rootRenderFunc(this.env,D,M,E,function(V){V?N(V,null):N(null,D.getExported())})},j.compile=function(){this.compiled||this._compile()},j._compile=function(){var k;if(this.tmplProps)k=this.tmplProps;else{var T=l.compile(this.tmplStr,this.env.asyncFilters,this.env.extensionsList,this.path,this.env.opts),N=new Function(T);k=N()}this.blocks=this._getBlocks(k),this.rootRenderFunc=k.root,this.compiled=!0},j._getBlocks=function(k){var T={};return s.keys(k).forEach(function(N){N.slice(0,2)==="b_"&&(T[N.slice(2)]=k[N])}),T},B}(v);e.exports={Environment:A,Template:P}},function(e,t,a){"use strict";function n(c,f){c.prototype=Object.create(f.prototype),c.prototype.constructor=c,i(c,f)}function i(c,f){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(b,d){return b.__proto__=d,b},i(c,f)}var r=a(9),o=a(3),s=a(1).Obj,l=a(0),u=function(c){n(f,c);function f(){return c.apply(this,arguments)||this}var p=f.prototype;return p.init=function(d){this.tokens=d,this.peeked=null,this.breakOnBlocks=null,this.dropLeadingWhitespace=!1,this.extensions=[]},p.nextToken=function(d){var m;if(this.peeked)if(!d&&this.peeked.type===r.TOKEN_WHITESPACE)this.peeked=null;else return m=this.peeked,this.peeked=null,m;if(m=this.tokens.nextToken(),!d)for(;m&&m.type===r.TOKEN_WHITESPACE;)m=this.tokens.nextToken();return m},p.peekToken=function(){return this.peeked=this.peeked||this.nextToken(),this.peeked},p.pushToken=function(d){if(this.peeked)throw new Error("pushToken: can only push one token on between reads");this.peeked=d},p.error=function(d,m,h){if(m===void 0||h===void 0){var v=this.peekToken()||{};m=v.lineno,h=v.colno}return m!==void 0&&(m+=1),h!==void 0&&(h+=1),new l.TemplateError(d,m,h)},p.fail=function(d,m,h){throw this.error(d,m,h)},p.skip=function(d){var m=this.nextToken();return!m||m.type!==d?(this.pushToken(m),!1):!0},p.expect=function(d){var m=this.nextToken();return m.type!==d&&this.fail("expected "+d+", got "+m.type,m.lineno,m.colno),m},p.skipValue=function(d,m){var h=this.nextToken();return!h||h.type!==d||h.value!==m?(this.pushToken(h),!1):!0},p.skipSymbol=function(d){return this.skipValue(r.TOKEN_SYMBOL,d)},p.advanceAfterBlockEnd=function(d){var m;return d||(m=this.peekToken(),m||this.fail("unexpected end of file"),m.type!==r.TOKEN_SYMBOL&&this.fail("advanceAfterBlockEnd: expected symbol token or explicit name to be passed"),d=this.nextToken().value),m=this.nextToken(),m&&m.type===r.TOKEN_BLOCK_END?m.value.charAt(0)==="-"&&(this.dropLeadingWhitespace=!0):this.fail("expected block end in "+d+" statement"),m},p.advanceAfterVariableEnd=function(){var d=this.nextToken();d&&d.type===r.TOKEN_VARIABLE_END?this.dropLeadingWhitespace=d.value.charAt(d.value.length-this.tokens.tags.VARIABLE_END.length-1)==="-":(this.pushToken(d),this.fail("expected variable end"))},p.parseFor=function(){var d=this.peekToken(),m,h;this.skipSymbol("for")?(m=new o.For(d.lineno,d.colno),h="endfor"):this.skipSymbol("asyncEach")?(m=new o.AsyncEach(d.lineno,d.colno),h="endeach"):this.skipSymbol("asyncAll")?(m=new o.AsyncAll(d.lineno,d.colno),h="endall"):this.fail("parseFor: expected for{Async}",d.lineno,d.colno),m.name=this.parsePrimary(),m.name instanceof o.Symbol||this.fail("parseFor: variable name expected for loop");var v=this.peekToken().type;if(v===r.TOKEN_COMMA){var x=m.name;for(m.name=new o.Array(x.lineno,x.colno),m.name.addChild(x);this.skip(r.TOKEN_COMMA);){var E=this.parsePrimary();m.name.addChild(E)}}return this.skipSymbol("in")||this.fail('parseFor: expected "in" keyword for loop',d.lineno,d.colno),m.arr=this.parseExpression(),this.advanceAfterBlockEnd(d.value),m.body=this.parseUntilBlocks(h,"else"),this.skipSymbol("else")&&(this.advanceAfterBlockEnd("else"),m.else_=this.parseUntilBlocks(h)),this.advanceAfterBlockEnd(),m},p.parseMacro=function(){var d=this.peekToken();this.skipSymbol("macro")||this.fail("expected macro");var m=this.parsePrimary(!0),h=this.parseSignature(),v=new o.Macro(d.lineno,d.colno,m,h);return this.advanceAfterBlockEnd(d.value),v.body=this.parseUntilBlocks("endmacro"),this.advanceAfterBlockEnd(),v},p.parseCall=function(){var d=this.peekToken();this.skipSymbol("call")||this.fail("expected call");var m=this.parseSignature(!0)||new o.NodeList,h=this.parsePrimary();this.advanceAfterBlockEnd(d.value);var v=this.parseUntilBlocks("endcall");this.advanceAfterBlockEnd();var x=new o.Symbol(d.lineno,d.colno,"caller"),E=new o.Caller(d.lineno,d.colno,x,m,v),g=h.args.children;g[g.length-1]instanceof o.KeywordArgs||g.push(new o.KeywordArgs);var w=g[g.length-1];return w.addChild(new o.Pair(d.lineno,d.colno,x,E)),new o.Output(d.lineno,d.colno,[h])},p.parseWithContext=function(){var d=this.peekToken(),m=null;return this.skipSymbol("with")?m=!0:this.skipSymbol("without")&&(m=!1),m!==null&&(this.skipSymbol("context")||this.fail("parseFrom: expected context after with/without",d.lineno,d.colno)),m},p.parseImport=function(){var d=this.peekToken();this.skipSymbol("import")||this.fail("parseImport: expected import",d.lineno,d.colno);var m=this.parseExpression();this.skipSymbol("as")||this.fail('parseImport: expected "as" keyword',d.lineno,d.colno);var h=this.parseExpression(),v=this.parseWithContext(),x=new o.Import(d.lineno,d.colno,m,h,v);return this.advanceAfterBlockEnd(d.value),x},p.parseFrom=function(){var d=this.peekToken();this.skipSymbol("from")||this.fail("parseFrom: expected from");var m=this.parseExpression();this.skipSymbol("import")||this.fail("parseFrom: expected import",d.lineno,d.colno);for(var h=new o.NodeList,v;;){var x=this.peekToken();if(x.type===r.TOKEN_BLOCK_END){h.children.length||this.fail("parseFrom: Expected at least one import name",d.lineno,d.colno),x.value.charAt(0)==="-"&&(this.dropLeadingWhitespace=!0),this.nextToken();break}h.children.length>0&&!this.skip(r.TOKEN_COMMA)&&this.fail("parseFrom: expected comma",d.lineno,d.colno);var E=this.parsePrimary();if(E.value.charAt(0)==="_"&&this.fail("parseFrom: names starting with an underscore cannot be imported",E.lineno,E.colno),this.skipSymbol("as")){var g=this.parsePrimary();h.addChild(new o.Pair(E.lineno,E.colno,E,g))}else h.addChild(E);v=this.parseWithContext()}return new o.FromImport(d.lineno,d.colno,m,h,v)},p.parseBlock=function(){var d=this.peekToken();this.skipSymbol("block")||this.fail("parseBlock: expected block",d.lineno,d.colno);var m=new o.Block(d.lineno,d.colno);m.name=this.parsePrimary(),m.name instanceof o.Symbol||this.fail("parseBlock: variable name expected",d.lineno,d.colno),this.advanceAfterBlockEnd(d.value),m.body=this.parseUntilBlocks("endblock"),this.skipSymbol("endblock"),this.skipSymbol(m.name.value);var h=this.peekToken();return h||this.fail("parseBlock: expected endblock, got end of file"),this.advanceAfterBlockEnd(h.value),m},p.parseExtends=function(){var d="extends",m=this.peekToken();this.skipSymbol(d)||this.fail("parseTemplateRef: expected "+d);var h=new o.Extends(m.lineno,m.colno);return h.template=this.parseExpression(),this.advanceAfterBlockEnd(m.value),h},p.parseInclude=function(){var d="include",m=this.peekToken();this.skipSymbol(d)||this.fail("parseInclude: expected "+d);var h=new o.Include(m.lineno,m.colno);return h.template=this.parseExpression(),this.skipSymbol("ignore")&&this.skipSymbol("missing")&&(h.ignoreMissing=!0),this.advanceAfterBlockEnd(m.value),h},p.parseIf=function(){var d=this.peekToken(),m;this.skipSymbol("if")||this.skipSymbol("elif")||this.skipSymbol("elseif")?m=new o.If(d.lineno,d.colno):this.skipSymbol("ifAsync")?m=new o.IfAsync(d.lineno,d.colno):this.fail("parseIf: expected if, elif, or elseif",d.lineno,d.colno),m.cond=this.parseExpression(),this.advanceAfterBlockEnd(d.value),m.body=this.parseUntilBlocks("elif","elseif","else","endif");var h=this.peekToken();switch(h&&h.value){case"elseif":case"elif":m.else_=this.parseIf();break;case"else":this.advanceAfterBlockEnd(),m.else_=this.parseUntilBlocks("endif"),this.advanceAfterBlockEnd();break;case"endif":m.else_=null,this.advanceAfterBlockEnd();break;default:this.fail("parseIf: expected elif, else, or endif, got end of file")}return m},p.parseSet=function(){var d=this.peekToken();this.skipSymbol("set")||this.fail("parseSet: expected set",d.lineno,d.colno);for(var m=new o.Set(d.lineno,d.colno,[]),h;(h=this.parsePrimary())&&(m.targets.push(h),!!this.skip(r.TOKEN_COMMA)););return this.skipValue(r.TOKEN_OPERATOR,"=")?(m.value=this.parseExpression(),this.advanceAfterBlockEnd(d.value)):this.skip(r.TOKEN_BLOCK_END)?(m.body=new o.Capture(d.lineno,d.colno,this.parseUntilBlocks("endset")),m.value=null,this.advanceAfterBlockEnd()):this.fail("parseSet: expected = or block end in set tag",d.lineno,d.colno),m},p.parseSwitch=function(){var d="switch",m="endswitch",h="case",v="default",x=this.peekToken();!this.skipSymbol(d)&&!this.skipSymbol(h)&&!this.skipSymbol(v)&&this.fail('parseSwitch: expected "switch," "case" or "default"',x.lineno,x.colno);var E=this.parseExpression();this.advanceAfterBlockEnd(d),this.parseUntilBlocks(h,v,m);var g=this.peekToken(),w=[],C;do{this.skipSymbol(h);var y=this.parseExpression();this.advanceAfterBlockEnd(d);var S=this.parseUntilBlocks(h,v,m);w.push(new o.Case(g.line,g.col,y,S)),g=this.peekToken()}while(g&&g.value===h);switch(g.value){case v:this.advanceAfterBlockEnd(),C=this.parseUntilBlocks(m),this.advanceAfterBlockEnd();break;case m:this.advanceAfterBlockEnd();break;default:this.fail('parseSwitch: expected "case," "default" or "endswitch," got EOF.')}return new o.Switch(x.lineno,x.colno,E,w,C)},p.parseStatement=function(){var d=this.peekToken(),m;if(d.type!==r.TOKEN_SYMBOL&&this.fail("tag name expected",d.lineno,d.colno),this.breakOnBlocks&&l.indexOf(this.breakOnBlocks,d.value)!==-1)return null;switch(d.value){case"raw":return this.parseRaw();case"verbatim":return this.parseRaw("verbatim");case"if":case"ifAsync":return this.parseIf();case"for":case"asyncEach":case"asyncAll":return this.parseFor();case"block":return this.parseBlock();case"extends":return this.parseExtends();case"include":return this.parseInclude();case"set":return this.parseSet();case"macro":return this.parseMacro();case"call":return this.parseCall();case"import":return this.parseImport();case"from":return this.parseFrom();case"filter":return this.parseFilterStatement();case"switch":return this.parseSwitch();default:if(this.extensions.length)for(var h=0;h<this.extensions.length;h++){var v=this.extensions[h];if(l.indexOf(v.tags||[],d.value)!==-1)return v.parse(this,o,r)}this.fail("unknown block tag: "+d.value,d.lineno,d.colno)}return m},p.parseRaw=function(d){d=d||"raw";for(var m="end"+d,h=new RegExp("([\\s\\S]*?){%\\s*("+d+"|"+m+")\\s*(?=%})%}"),v=1,x="",E=null,g=this.advanceAfterBlockEnd();(E=this.tokens._extractRegex(h))&&v>0;){var w=E[0],C=E[1],y=E[2];y===d?v+=1:y===m&&(v-=1),v===0?(x+=C,this.tokens.backN(w.length-C.length)):x+=w}return new o.Output(g.lineno,g.colno,[new o.TemplateData(g.lineno,g.colno,x)])},p.parsePostfix=function(d){for(var m,h=this.peekToken();h;){if(h.type===r.TOKEN_LEFT_PAREN)d=new o.FunCall(h.lineno,h.colno,d,this.parseSignature());else if(h.type===r.TOKEN_LEFT_BRACKET)m=this.parseAggregate(),m.children.length>1&&this.fail("invalid index"),d=new o.LookupVal(h.lineno,h.colno,d,m.children[0]);else if(h.type===r.TOKEN_OPERATOR&&h.value==="."){this.nextToken();var v=this.nextToken();v.type!==r.TOKEN_SYMBOL&&this.fail("expected name as lookup value, got "+v.value,v.lineno,v.colno),m=new o.Literal(v.lineno,v.colno,v.value),d=new o.LookupVal(h.lineno,h.colno,d,m)}else break;h=this.peekToken()}return d},p.parseExpression=function(){var d=this.parseInlineIf();return d},p.parseInlineIf=function(){var d=this.parseOr();if(this.skipSymbol("if")){var m=this.parseOr(),h=d;d=new o.InlineIf(d.lineno,d.colno),d.body=h,d.cond=m,this.skipSymbol("else")?d.else_=this.parseOr():d.else_=null}return d},p.parseOr=function(){for(var d=this.parseAnd();this.skipSymbol("or");){var m=this.parseAnd();d=new o.Or(d.lineno,d.colno,d,m)}return d},p.parseAnd=function(){for(var d=this.parseNot();this.skipSymbol("and");){var m=this.parseNot();d=new o.And(d.lineno,d.colno,d,m)}return d},p.parseNot=function(){var d=this.peekToken();return this.skipSymbol("not")?new o.Not(d.lineno,d.colno,this.parseNot()):this.parseIn()},p.parseIn=function(){for(var d=this.parseIs();;){var m=this.nextToken();if(!m)break;var h=m.type===r.TOKEN_SYMBOL&&m.value==="not";if(h||this.pushToken(m),this.skipSymbol("in")){var v=this.parseIs();d=new o.In(d.lineno,d.colno,d,v),h&&(d=new o.Not(d.lineno,d.colno,d))}else{h&&this.pushToken(m);break}}return d},p.parseIs=function(){var d=this.parseCompare();if(this.skipSymbol("is")){var m=this.skipSymbol("not"),h=this.parseCompare();d=new o.Is(d.lineno,d.colno,d,h),m&&(d=new o.Not(d.lineno,d.colno,d))}return d},p.parseCompare=function(){for(var d=["==","===","!=","!==","<",">","<=",">="],m=this.parseConcat(),h=[];;){var v=this.nextToken();if(v)if(d.indexOf(v.value)!==-1)h.push(new o.CompareOperand(v.lineno,v.colno,this.parseConcat(),v.value));else{this.pushToken(v);break}else break}return h.length?new o.Compare(h[0].lineno,h[0].colno,m,h):m},p.parseConcat=function(){for(var d=this.parseAdd();this.skipValue(r.TOKEN_TILDE,"~");){var m=this.parseAdd();d=new o.Concat(d.lineno,d.colno,d,m)}return d},p.parseAdd=function(){for(var d=this.parseSub();this.skipValue(r.TOKEN_OPERATOR,"+");){var m=this.parseSub();d=new o.Add(d.lineno,d.colno,d,m)}return d},p.parseSub=function(){for(var d=this.parseMul();this.skipValue(r.TOKEN_OPERATOR,"-");){var m=this.parseMul();d=new o.Sub(d.lineno,d.colno,d,m)}return d},p.parseMul=function(){for(var d=this.parseDiv();this.skipValue(r.TOKEN_OPERATOR,"*");){var m=this.parseDiv();d=new o.Mul(d.lineno,d.colno,d,m)}return d},p.parseDiv=function(){for(var d=this.parseFloorDiv();this.skipValue(r.TOKEN_OPERATOR,"/");){var m=this.parseFloorDiv();d=new o.Div(d.lineno,d.colno,d,m)}return d},p.parseFloorDiv=function(){for(var d=this.parseMod();this.skipValue(r.TOKEN_OPERATOR,"//");){var m=this.parseMod();d=new o.FloorDiv(d.lineno,d.colno,d,m)}return d},p.parseMod=function(){for(var d=this.parsePow();this.skipValue(r.TOKEN_OPERATOR,"%");){var m=this.parsePow();d=new o.Mod(d.lineno,d.colno,d,m)}return d},p.parsePow=function(){for(var d=this.parseUnary();this.skipValue(r.TOKEN_OPERATOR,"**");){var m=this.parseUnary();d=new o.Pow(d.lineno,d.colno,d,m)}return d},p.parseUnary=function(d){var m=this.peekToken(),h;return this.skipValue(r.TOKEN_OPERATOR,"-")?h=new o.Neg(m.lineno,m.colno,this.parseUnary(!0)):this.skipValue(r.TOKEN_OPERATOR,"+")?h=new o.Pos(m.lineno,m.colno,this.parseUnary(!0)):h=this.parsePrimary(),d||(h=this.parseFilter(h)),h},p.parsePrimary=function(d){var m=this.nextToken(),h,v=null;if(m?m.type===r.TOKEN_STRING?h=m.value:m.type===r.TOKEN_INT?h=parseInt(m.value,10):m.type===r.TOKEN_FLOAT?h=parseFloat(m.value):m.type===r.TOKEN_BOOLEAN?m.value==="true"?h=!0:m.value==="false"?h=!1:this.fail("invalid boolean: "+m.value,m.lineno,m.colno):m.type===r.TOKEN_NONE?h=null:m.type===r.TOKEN_REGEX&&(h=new RegExp(m.value.body,m.value.flags)):this.fail("expected expression, got end of file"),h!==void 0?v=new o.Literal(m.lineno,m.colno,h):m.type===r.TOKEN_SYMBOL?v=new o.Symbol(m.lineno,m.colno,m.value):(this.pushToken(m),v=this.parseAggregate()),d||(v=this.parsePostfix(v)),v)return v;throw this.error("unexpected token: "+m.value,m.lineno,m.colno)},p.parseFilterName=function(){for(var d=this.expect(r.TOKEN_SYMBOL),m=d.value;this.skipValue(r.TOKEN_OPERATOR,".");)m+="."+this.expect(r.TOKEN_SYMBOL).value;return new o.Symbol(d.lineno,d.colno,m)},p.parseFilterArgs=function(d){if(this.peekToken().type===r.TOKEN_LEFT_PAREN){var m=this.parsePostfix(d);return m.args.children}return[]},p.parseFilter=function(d){for(;this.skip(r.TOKEN_PIPE);){var m=this.parseFilterName();d=new o.Filter(m.lineno,m.colno,m,new o.NodeList(m.lineno,m.colno,[d].concat(this.parseFilterArgs(d))))}return d},p.parseFilterStatement=function(){var d=this.peekToken();this.skipSymbol("filter")||this.fail("parseFilterStatement: expected filter");var m=this.parseFilterName(),h=this.parseFilterArgs(m);this.advanceAfterBlockEnd(d.value);var v=new o.Capture(m.lineno,m.colno,this.parseUntilBlocks("endfilter"));this.advanceAfterBlockEnd();var x=new o.Filter(m.lineno,m.colno,m,new o.NodeList(m.lineno,m.colno,[v].concat(h)));return new o.Output(m.lineno,m.colno,[x])},p.parseAggregate=function(){var d=this.nextToken(),m;switch(d.type){case r.TOKEN_LEFT_PAREN:m=new o.Group(d.lineno,d.colno);break;case r.TOKEN_LEFT_BRACKET:m=new o.Array(d.lineno,d.colno);break;case r.TOKEN_LEFT_CURLY:m=new o.Dict(d.lineno,d.colno);break;default:return null}for(;;){var h=this.peekToken().type;if(h===r.TOKEN_RIGHT_PAREN||h===r.TOKEN_RIGHT_BRACKET||h===r.TOKEN_RIGHT_CURLY){this.nextToken();break}if(m.children.length>0&&(this.skip(r.TOKEN_COMMA)||this.fail("parseAggregate: expected comma after expression",d.lineno,d.colno)),m instanceof o.Dict){var v=this.parsePrimary();this.skip(r.TOKEN_COLON)||this.fail("parseAggregate: expected colon after dict key",d.lineno,d.colno);var x=this.parseExpression();m.addChild(new o.Pair(v.lineno,v.colno,v,x))}else{var E=this.parseExpression();m.addChild(E)}}return m},p.parseSignature=function(d,m){var h=this.peekToken();if(!m&&h.type!==r.TOKEN_LEFT_PAREN){if(d)return null;this.fail("expected arguments",h.lineno,h.colno)}h.type===r.TOKEN_LEFT_PAREN&&(h=this.nextToken());for(var v=new o.NodeList(h.lineno,h.colno),x=new o.KeywordArgs(h.lineno,h.colno),E=!1;;){if(h=this.peekToken(),!m&&h.type===r.TOKEN_RIGHT_PAREN){this.nextToken();break}else if(m&&h.type===r.TOKEN_BLOCK_END)break;if(E&&!this.skip(r.TOKEN_COMMA))this.fail("parseSignature: expected comma after expression",h.lineno,h.colno);else{var g=this.parseExpression();this.skipValue(r.TOKEN_OPERATOR,"=")?x.addChild(new o.Pair(g.lineno,g.colno,g,this.parseExpression())):v.addChild(g)}E=!0}return x.children.length&&v.addChild(x),v},p.parseUntilBlocks=function(){for(var d=this.breakOnBlocks,m=arguments.length,h=new Array(m),v=0;v<m;v++)h[v]=arguments[v];this.breakOnBlocks=h;var x=this.parse();return this.breakOnBlocks=d,x},p.parseNodes=function(){for(var d,m=[];d=this.nextToken();)if(d.type===r.TOKEN_DATA){var h=d.value,v=this.peekToken(),x=v&&v.value;this.dropLeadingWhitespace&&(h=h.replace(/^\s*/,""),this.dropLeadingWhitespace=!1),v&&(v.type===r.TOKEN_BLOCK_START&&x.charAt(x.length-1)==="-"||v.type===r.TOKEN_VARIABLE_START&&x.charAt(this.tokens.tags.VARIABLE_START.length)==="-"||v.type===r.TOKEN_COMMENT&&x.charAt(this.tokens.tags.COMMENT_START.length)==="-")&&(h=h.replace(/\s*$/,"")),m.push(new o.Output(d.lineno,d.colno,[new o.TemplateData(d.lineno,d.colno,h)]))}else if(d.type===r.TOKEN_BLOCK_START){this.dropLeadingWhitespace=!1;var E=this.parseStatement();if(!E)break;m.push(E)}else if(d.type===r.TOKEN_VARIABLE_START){var g=this.parseExpression();this.dropLeadingWhitespace=!1,this.advanceAfterVariableEnd(),m.push(new o.Output(d.lineno,d.colno,[g]))}else d.type===r.TOKEN_COMMENT?this.dropLeadingWhitespace=d.value.charAt(d.value.length-this.tokens.tags.COMMENT_END.length-1)==="-":this.fail("Unexpected token at top-level: "+d.type,d.lineno,d.colno);return m},p.parse=function(){return new o.NodeList(0,0,this.parseNodes())},p.parseAsRoot=function(){return new o.Root(0,0,this.parseNodes())},f}(s);e.exports={parse:function(f,p,b){var d=new u(r.lex(f,b));return p!==void 0&&(d.extensions=p),d.parseAsRoot()},Parser:u}},function(e,t,a){"use strict";var n=a(0),i=` + \r\xA0`,r="()[]{}%*-+~/#,:|.<>=!",o="0123456789",s="{%",l="%}",u="{{",c="}}",f="{#",p="#}",b="string",d="whitespace",m="data",h="block-start",v="block-end",x="variable-start",E="variable-end",g="comment",w="left-paren",C="right-paren",y="left-bracket",S="right-bracket",A="left-curly",_="right-curly",P="operator",F="comma",B="colon",j="tilde",L="pipe",k="int",T="float",N="boolean",M="none",D="symbol",V="special",q="regex";function Z(fe,ee,oe,U){return{type:fe,value:ee,lineno:oe,colno:U}}var pe=function(){function fe(oe,U){this.str=oe,this.index=0,this.len=oe.length,this.lineno=0,this.colno=0,this.in_code=!1,U=U||{};var X=U.tags||{};this.tags={BLOCK_START:X.blockStart||s,BLOCK_END:X.blockEnd||l,VARIABLE_START:X.variableStart||u,VARIABLE_END:X.variableEnd||c,COMMENT_START:X.commentStart||f,COMMENT_END:X.commentEnd||p},this.trimBlocks=!!U.trimBlocks,this.lstripBlocks=!!U.lstripBlocks}var ee=fe.prototype;return ee.nextToken=function(){var U=this.lineno,X=this.colno,$;if(this.in_code){var he=this.current();if(this.isFinished())return null;if(he==='"'||he==="'")return Z(b,this._parseString(he),U,X);if($=this._extract(i))return Z(d,$,U,X);if(($=this._extractString(this.tags.BLOCK_END))||($=this._extractString("-"+this.tags.BLOCK_END)))return this.in_code=!1,this.trimBlocks&&(he=this.current(),he===` `?this.forward():he==="\r"&&(this.forward(),he=this.current(),he===` -`?this.forward():this.back())),Z(v,$,U,X);if(($=this._extractString(this.tags.VARIABLE_END))||($=this._extractString("-"+this.tags.VARIABLE_END)))return this.in_code=!1,Z(E,$,U,X);if(he==="r"&&this.str.charAt(this.index+1)==="/"){this.forwardN(2);for(var qe="";!this.isFinished();)if(this.current()==="/"&&this.previous()!=="\\"){this.forward();break}else qe+=this.current(),this.forward();for(var ze=["g","i","m","y"],ht="";!this.isFinished();){var R=ze.indexOf(this.current())!==-1;if(R)ht+=this.current(),this.forward();else break}return Z(q,{body:qe,flags:ht},U,X)}else if(r.indexOf(he)!==-1){this.forward();var z=["==","===","!=","!==","<=",">=","//","**"],J=he+this.current(),H;switch(n.indexOf(z,J)!==-1&&(this.forward(),he=J,n.indexOf(z,J+this.current())!==-1&&(he=J+this.current(),this.forward())),he){case"(":H=w;break;case")":H=C;break;case"[":H=y;break;case"]":H=S;break;case"{":H=I;break;case"}":H=_;break;case",":H=F;break;case":":H=B;break;case"~":H=N;break;case"|":H=L;break;default:H=P}return Z(H,he,U,X)}else if($=this._extractUntil(i+r),$.match(/^[-+]?[0-9]+$/))if(this.current()==="."){this.forward();var ne=this._extract(o);return Z(T,$+"."+ne,U,X)}else return Z(k,$,U,X);else{if($.match(/^(true|false)$/))return Z(j,$,U,X);if($==="none")return Z(M,$,U,X);if($==="null")return Z(M,$,U,X);if($)return Z(D,$,U,X);throw new Error("Unexpected value while parsing: "+$)}}else{var K=this.tags.BLOCK_START.charAt(0)+this.tags.VARIABLE_START.charAt(0)+this.tags.COMMENT_START.charAt(0)+this.tags.COMMENT_END.charAt(0);if(this.isFinished())return null;if(($=this._extractString(this.tags.BLOCK_START+"-"))||($=this._extractString(this.tags.BLOCK_START)))return this.in_code=!0,Z(m,$,U,X);if(($=this._extractString(this.tags.VARIABLE_START+"-"))||($=this._extractString(this.tags.VARIABLE_START)))return this.in_code=!0,Z(x,$,U,X);$="";var Ae,ue=!1;for(this._matches(this.tags.COMMENT_START)&&(ue=!0,$=this._extractString(this.tags.COMMENT_START));(Ae=this._extractUntil(K))!==null;)if($+=Ae,(this._matches(this.tags.BLOCK_START)||this._matches(this.tags.VARIABLE_START)||this._matches(this.tags.COMMENT_START))&&!ue){if(this.lstripBlocks&&this._matches(this.tags.BLOCK_START)&&this.colno>0&&this.colno<=$.length){var Ne=$.slice(-this.colno);if(/^\s+$/.test(Ne)&&($=$.slice(0,-this.colno),!$.length))return this.nextToken()}break}else if(this._matches(this.tags.COMMENT_END)){if(!ue)throw new Error("unexpected end of comment");$+=this._extractString(this.tags.COMMENT_END);break}else $+=this.current(),this.forward();if(Ae===null&&ue)throw new Error("expected end of comment, got end of file");return Z(ue?g:h,$,U,X)}},ee._parseString=function(U){this.forward();for(var X="";!this.isFinished()&&this.current()!==U;){var $=this.current();if($==="\\"){switch(this.forward(),this.current()){case"n":X+=` +`?this.forward():this.back())),Z(v,$,U,X);if(($=this._extractString(this.tags.VARIABLE_END))||($=this._extractString("-"+this.tags.VARIABLE_END)))return this.in_code=!1,Z(E,$,U,X);if(he==="r"&&this.str.charAt(this.index+1)==="/"){this.forwardN(2);for(var qe="";!this.isFinished();)if(this.current()==="/"&&this.previous()!=="\\"){this.forward();break}else qe+=this.current(),this.forward();for(var ze=["g","i","m","y"],ht="";!this.isFinished();){var R=ze.indexOf(this.current())!==-1;if(R)ht+=this.current(),this.forward();else break}return Z(q,{body:qe,flags:ht},U,X)}else if(r.indexOf(he)!==-1){this.forward();var z=["==","===","!=","!==","<=",">=","//","**"],J=he+this.current(),H;switch(n.indexOf(z,J)!==-1&&(this.forward(),he=J,n.indexOf(z,J+this.current())!==-1&&(he=J+this.current(),this.forward())),he){case"(":H=w;break;case")":H=C;break;case"[":H=y;break;case"]":H=S;break;case"{":H=A;break;case"}":H=_;break;case",":H=F;break;case":":H=B;break;case"~":H=j;break;case"|":H=L;break;default:H=P}return Z(H,he,U,X)}else if($=this._extractUntil(i+r),$.match(/^[-+]?[0-9]+$/))if(this.current()==="."){this.forward();var ne=this._extract(o);return Z(T,$+"."+ne,U,X)}else return Z(k,$,U,X);else{if($.match(/^(true|false)$/))return Z(N,$,U,X);if($==="none")return Z(M,$,U,X);if($==="null")return Z(M,$,U,X);if($)return Z(D,$,U,X);throw new Error("Unexpected value while parsing: "+$)}}else{var K=this.tags.BLOCK_START.charAt(0)+this.tags.VARIABLE_START.charAt(0)+this.tags.COMMENT_START.charAt(0)+this.tags.COMMENT_END.charAt(0);if(this.isFinished())return null;if(($=this._extractString(this.tags.BLOCK_START+"-"))||($=this._extractString(this.tags.BLOCK_START)))return this.in_code=!0,Z(h,$,U,X);if(($=this._extractString(this.tags.VARIABLE_START+"-"))||($=this._extractString(this.tags.VARIABLE_START)))return this.in_code=!0,Z(x,$,U,X);$="";var Ae,ue=!1;for(this._matches(this.tags.COMMENT_START)&&(ue=!0,$=this._extractString(this.tags.COMMENT_START));(Ae=this._extractUntil(K))!==null;)if($+=Ae,(this._matches(this.tags.BLOCK_START)||this._matches(this.tags.VARIABLE_START)||this._matches(this.tags.COMMENT_START))&&!ue){if(this.lstripBlocks&&this._matches(this.tags.BLOCK_START)&&this.colno>0&&this.colno<=$.length){var Ne=$.slice(-this.colno);if(/^\s+$/.test(Ne)&&($=$.slice(0,-this.colno),!$.length))return this.nextToken()}break}else if(this._matches(this.tags.COMMENT_END)){if(!ue)throw new Error("unexpected end of comment");$+=this._extractString(this.tags.COMMENT_END);break}else $+=this.current(),this.forward();if(Ae===null&&ue)throw new Error("expected end of comment, got end of file");return Z(ue?g:m,$,U,X)}},ee._parseString=function(U){this.forward();for(var X="";!this.isFinished()&&this.current()!==U;){var $=this.current();if($==="\\"){switch(this.forward(),this.current()){case"n":X+=` `;break;case"t":X+=" ";break;case"r":X+="\r";break;default:X+=this.current()}this.forward()}else X+=$,this.forward()}return this.forward(),X},ee._matches=function(U){if(this.index+U.length>this.len)return null;var X=this.str.slice(this.index,this.index+U.length);return X===U},ee._extractString=function(U){return this._matches(U)?(this.forwardN(U.length),U):null},ee._extractUntil=function(U){return this._extractMatching(!0,U||"")},ee._extract=function(U){return this._extractMatching(!1,U)},ee._extractMatching=function(U,X){if(this.isFinished())return null;var $=X.indexOf(this.current());if(U&&$===-1||!U&&$!==-1){var he=this.current();this.forward();for(var qe=X.indexOf(this.current());(U&&qe===-1||!U&&qe!==-1)&&!this.isFinished();)he+=this.current(),this.forward(),qe=X.indexOf(this.current());return he}return""},ee._extractRegex=function(U){var X=this.currentStr().match(U);return X?(this.forwardN(X[0].length),X):null},ee.isFinished=function(){return this.index>=this.len},ee.forwardN=function(U){for(var X=0;X<U;X++)this.forward()},ee.forward=function(){this.index++,this.previous()===` `?(this.lineno++,this.colno=0):this.colno++},ee.backN=function(U){for(var X=0;X<U;X++)this.back()},ee.back=function(){if(this.index--,this.current()===` `){this.lineno--;var U=this.src.lastIndexOf(` -`,this.index-1);U===-1?this.colno=this.index:this.colno=this.index-U}else this.colno--},ee.current=function(){return this.isFinished()?"":this.str.charAt(this.index)},ee.currentStr=function(){return this.isFinished()?"":this.str.substr(this.index)},ee.previous=function(){return this.str.charAt(this.index-1)},fe}();e.exports={lex:function(ee,oe){return new pe(ee,oe)},TOKEN_STRING:b,TOKEN_WHITESPACE:d,TOKEN_DATA:h,TOKEN_BLOCK_START:m,TOKEN_BLOCK_END:v,TOKEN_VARIABLE_START:x,TOKEN_VARIABLE_END:E,TOKEN_COMMENT:g,TOKEN_LEFT_PAREN:w,TOKEN_RIGHT_PAREN:C,TOKEN_LEFT_BRACKET:y,TOKEN_RIGHT_BRACKET:S,TOKEN_LEFT_CURLY:I,TOKEN_RIGHT_CURLY:_,TOKEN_OPERATOR:P,TOKEN_COMMA:F,TOKEN_COLON:B,TOKEN_TILDE:N,TOKEN_PIPE:L,TOKEN_INT:k,TOKEN_FLOAT:T,TOKEN_BOOLEAN:j,TOKEN_NONE:M,TOKEN_SYMBOL:D,TOKEN_SPECIAL:V,TOKEN_REGEX:q}},function(e,t,a){"use strict";function n(u,c){u.prototype=Object.create(c.prototype),u.prototype.constructor=u,i(u,c)}function i(u,c){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(p,b){return p.__proto__=b,p},i(u,c)}var r=a(6),o=a(19),s=o.PrecompiledLoader,l=function(u){n(c,u);function c(p,b){var d;return d=u.call(this)||this,d.baseURL=p||".",b=b||{},d.useCache=!!b.useCache,d.async=!!b.async,d}var f=c.prototype;return f.resolve=function(b,d){throw new Error("relative templates not support in the browser yet")},f.getSource=function(b,d){var h=this,m=this.useCache,v;return this.fetch(this.baseURL+"/"+b,function(x,E){if(x)if(d)d(x.content);else if(x.status===404)v=null;else throw x.content;else v={src:E,path:b,noCache:!m},h.emit("load",b,v),d&&d(null,v)}),v},f.fetch=function(b,d){if(typeof window=="undefined")throw new Error("WebLoader can only by used in a browser");var h=new XMLHttpRequest,m=!0;h.onreadystatechange=function(){h.readyState===4&&m&&(m=!1,h.status===0||h.status===200?d(null,h.responseText):d({status:h.status,content:h.responseText}))},b+=(b.indexOf("?")===-1?"?":"&")+"s="+new Date().getTime(),h.open("GET",b,this.async),h.send()},c}(r);e.exports={WebLoader:l,PrecompiledLoader:s}},function(e,t,a){"use strict";var n=a(0),i=a(7),r=i.Environment,o=i.Template,s=a(6),l=a(10),u=a(23),c=a(5),f=a(8),p=a(9),b=a(2),d=a(3),h=a(25),m;function v(x,E){E=E||{},n.isObject(x)&&(E=x,x=null);var g;return l.FileSystemLoader?g=new l.FileSystemLoader(x,{watch:E.watch,noCache:E.noCache}):l.WebLoader&&(g=new l.WebLoader(x,{useCache:E.web&&E.web.useCache,async:E.web&&E.web.async})),m=new r(g,E),E&&E.express&&m.express(E.express),m}e.exports={Environment:r,Template:o,Loader:s,FileSystemLoader:l.FileSystemLoader,NodeResolveLoader:l.NodeResolveLoader,PrecompiledLoader:l.PrecompiledLoader,WebLoader:l.WebLoader,compiler:c,parser:f,lexer:p,runtime:b,lib:n,nodes:d,installJinjaCompat:h,configure:v,reset:function(){m=void 0},compile:function(E,g,w,C){return m||v(),new o(E,g,w,C)},render:function(E,g,w){return m||v(),m.render(E,g,w)},renderString:function(E,g,w){return m||v(),m.renderString(E,g,w)},precompile:u?u.precompile:void 0,precompileString:u?u.precompileString:void 0}},function(e,t,a){"use strict";var n=a(13),i=[],r=[],o=n.makeRequestCallFromTimer(s);function s(){if(r.length)throw r.shift()}e.exports=l;function l(c){var f;i.length?f=i.pop():f=new u,f.task=c,n(f)}function u(){this.task=null}u.prototype.call=function(){try{this.task.call()}catch(c){l.onerror?l.onerror(c):(r.push(c),o())}finally{this.task=null,i[i.length]=this}}},function(e,t,a){"use strict";(function(n){e.exports=i;function i(h){r.length||(s(),o=!0),r[r.length]=h}var r=[],o=!1,s,l=0,u=1024;function c(){for(;l<r.length;){var h=l;if(l=l+1,r[h].call(),l>u){for(var m=0,v=r.length-l;m<v;m++)r[m]=r[m+l];r.length-=l,l=0}}r.length=0,l=0,o=!1}var f=typeof n!="undefined"?n:self,p=f.MutationObserver||f.WebKitMutationObserver;typeof p=="function"?s=b(c):s=d(c),i.requestFlush=s;function b(h){var m=1,v=new p(h),x=document.createTextNode("");return v.observe(x,{characterData:!0}),function(){m=-m,x.data=m}}function d(h){return function(){var v=setTimeout(E,0),x=setInterval(E,50);function E(){clearTimeout(v),clearInterval(x),h()}}}i.makeRequestCallFromTimer=d}).call(t,a(14))},function(e,t){var a;a=function(){return this}();try{a=a||Function("return this")()||(0,eval)("this")}catch(n){typeof window=="object"&&(a=window)}e.exports=a},function(e,t,a){var n,i;(function(r){"use strict";var o=function(){var f=Array.prototype.slice.call(arguments);typeof f[0]=="function"&&f[0].apply(null,f.splice(1))},s=function(f){typeof setImmediate=="function"?setImmediate(f):typeof process!="undefined"&&process.nextTick?process.nextTick(f):setTimeout(f,0)},l=function(f){var p=function(b){var d=function(){return f.length&&f[b].apply(null,arguments),d.next()};return d.next=function(){return b<f.length-1?p(b+1):null},d};return p(0)},u=Array.isArray||function(f){return Object.prototype.toString.call(f)==="[object Array]"},c=function(f,p,b){var d=b?s:o;if(p=p||function(){},!u(f)){var h=new Error("First argument to waterfall must be an array of functions");return p(h)}if(!f.length)return p();var m=function(v){return function(x){if(x)p.apply(null,arguments),p=function(){};else{var E=Array.prototype.slice.call(arguments,1),g=v.next();g?E.push(m(g)):E.push(p),d(function(){v.apply(null,E)})}}};m(l(f))()};n=[],i=function(){return c}.apply(t,n),i!==void 0&&(e.exports=i)})(this)},function(e,t,a){"use strict";var n=typeof Reflect=="object"?Reflect:null,i=n&&typeof n.apply=="function"?n.apply:function(S,I,_){return Function.prototype.apply.call(S,I,_)},r;n&&typeof n.ownKeys=="function"?r=n.ownKeys:Object.getOwnPropertySymbols?r=function(S){return Object.getOwnPropertyNames(S).concat(Object.getOwnPropertySymbols(S))}:r=function(S){return Object.getOwnPropertyNames(S)};function o(y){console&&console.warn&&console.warn(y)}var s=Number.isNaN||function(S){return S!==S};function l(){l.init.call(this)}e.exports=l,e.exports.once=g,l.EventEmitter=l,l.prototype._events=void 0,l.prototype._eventsCount=0,l.prototype._maxListeners=void 0;var u=10;function c(y){if(typeof y!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof y)}Object.defineProperty(l,"defaultMaxListeners",{enumerable:!0,get:function(){return u},set:function(y){if(typeof y!="number"||y<0||s(y))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+y+".");u=y}}),l.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},l.prototype.setMaxListeners=function(S){if(typeof S!="number"||S<0||s(S))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+S+".");return this._maxListeners=S,this};function f(y){return y._maxListeners===void 0?l.defaultMaxListeners:y._maxListeners}l.prototype.getMaxListeners=function(){return f(this)},l.prototype.emit=function(S){for(var I=[],_=1;_<arguments.length;_++)I.push(arguments[_]);var P=S==="error",F=this._events;if(F!==void 0)P=P&&F.error===void 0;else if(!P)return!1;if(P){var B;if(I.length>0&&(B=I[0]),B instanceof Error)throw B;var N=new Error("Unhandled error."+(B?" ("+B.message+")":""));throw N.context=B,N}var L=F[S];if(L===void 0)return!1;if(typeof L=="function")i(L,this,I);else for(var k=L.length,T=v(L,k),_=0;_<k;++_)i(T[_],this,I);return!0};function p(y,S,I,_){var P,F,B;if(c(I),F=y._events,F===void 0?(F=y._events=Object.create(null),y._eventsCount=0):(F.newListener!==void 0&&(y.emit("newListener",S,I.listener?I.listener:I),F=y._events),B=F[S]),B===void 0)B=F[S]=I,++y._eventsCount;else if(typeof B=="function"?B=F[S]=_?[I,B]:[B,I]:_?B.unshift(I):B.push(I),P=f(y),P>0&&B.length>P&&!B.warned){B.warned=!0;var N=new Error("Possible EventEmitter memory leak detected. "+B.length+" "+String(S)+" listeners added. Use emitter.setMaxListeners() to increase limit");N.name="MaxListenersExceededWarning",N.emitter=y,N.type=S,N.count=B.length,o(N)}return y}l.prototype.addListener=function(S,I){return p(this,S,I,!1)},l.prototype.on=l.prototype.addListener,l.prototype.prependListener=function(S,I){return p(this,S,I,!0)};function b(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(y,S,I){var _={fired:!1,wrapFn:void 0,target:y,type:S,listener:I},P=b.bind(_);return P.listener=I,_.wrapFn=P,P}l.prototype.once=function(S,I){return c(I),this.on(S,d(this,S,I)),this},l.prototype.prependOnceListener=function(S,I){return c(I),this.prependListener(S,d(this,S,I)),this},l.prototype.removeListener=function(S,I){var _,P,F,B,N;if(c(I),P=this._events,P===void 0)return this;if(_=P[S],_===void 0)return this;if(_===I||_.listener===I)--this._eventsCount===0?this._events=Object.create(null):(delete P[S],P.removeListener&&this.emit("removeListener",S,_.listener||I));else if(typeof _!="function"){for(F=-1,B=_.length-1;B>=0;B--)if(_[B]===I||_[B].listener===I){N=_[B].listener,F=B;break}if(F<0)return this;F===0?_.shift():x(_,F),_.length===1&&(P[S]=_[0]),P.removeListener!==void 0&&this.emit("removeListener",S,N||I)}return this},l.prototype.off=l.prototype.removeListener,l.prototype.removeAllListeners=function(S){var I,_,P;if(_=this._events,_===void 0)return this;if(_.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):_[S]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete _[S]),this;if(arguments.length===0){var F=Object.keys(_),B;for(P=0;P<F.length;++P)B=F[P],B!=="removeListener"&&this.removeAllListeners(B);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(I=_[S],typeof I=="function")this.removeListener(S,I);else if(I!==void 0)for(P=I.length-1;P>=0;P--)this.removeListener(S,I[P]);return this};function h(y,S,I){var _=y._events;if(_===void 0)return[];var P=_[S];return P===void 0?[]:typeof P=="function"?I?[P.listener||P]:[P]:I?E(P):v(P,P.length)}l.prototype.listeners=function(S){return h(this,S,!0)},l.prototype.rawListeners=function(S){return h(this,S,!1)},l.listenerCount=function(y,S){return typeof y.listenerCount=="function"?y.listenerCount(S):m.call(y,S)},l.prototype.listenerCount=m;function m(y){var S=this._events;if(S!==void 0){var I=S[y];if(typeof I=="function")return 1;if(I!==void 0)return I.length}return 0}l.prototype.eventNames=function(){return this._eventsCount>0?r(this._events):[]};function v(y,S){for(var I=new Array(S),_=0;_<S;++_)I[_]=y[_];return I}function x(y,S){for(;S+1<y.length;S++)y[S]=y[S+1];y.pop()}function E(y){for(var S=new Array(y.length),I=0;I<S.length;++I)S[I]=y[I].listener||y[I];return S}function g(y,S){return new Promise(function(I,_){function P(B){y.removeListener(S,F),_(B)}function F(){typeof y.removeListener=="function"&&y.removeListener("error",P),I([].slice.call(arguments))}C(y,S,F,{once:!0}),S!=="error"&&w(y,P,{once:!0})})}function w(y,S,I){typeof y.on=="function"&&C(y,"error",S,I)}function C(y,S,I,_){if(typeof y.on=="function")_.once?y.once(S,I):y.on(S,I);else if(typeof y.addEventListener=="function")y.addEventListener(S,function P(F){_.once&&y.removeEventListener(S,P),I(F)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof y)}},function(e,t,a){"use strict";var n=a(3),i=a(0),r=0;function o(){return"hole_"+r++}function s(m,v){for(var x=null,E=0;E<m.length;E++){var g=v(m[E]);g!==m[E]&&(x||(x=m.slice()),x[E]=g)}return x||m}function l(m,v,x){if(!(m instanceof n.Node))return m;if(!x){var E=v(m);if(E&&E!==m)return E}if(m instanceof n.NodeList){var g=s(m.children,function(I){return l(I,v,x)});g!==m.children&&(m=new n[m.typename](m.lineno,m.colno,g))}else if(m instanceof n.CallExtension){var w=l(m.args,v,x),C=s(m.contentArgs,function(I){return l(I,v,x)});(w!==m.args||C!==m.contentArgs)&&(m=new n[m.typename](m.extName,m.prop,w,C))}else{var y=m.fields.map(function(I){return m[I]}),S=s(y,function(I){return l(I,v,x)});S!==y&&(m=new n[m.typename](m.lineno,m.colno),S.forEach(function(I,_){m[m.fields[_]]=I}))}return x&&v(m)||m}function u(m,v){return l(m,v,!0)}function c(m,v,x){var E=[],g=u(x?m[x]:m,function(w){var C;return w instanceof n.Block?w:((w instanceof n.Filter&&i.indexOf(v,w.name.value)!==-1||w instanceof n.CallExtensionAsync)&&(C=new n.Symbol(w.lineno,w.colno,o()),E.push(new n.FilterAsync(w.lineno,w.colno,w.name,w.args,C))),C)});return x?m[x]=g:m=g,E.length?(E.push(m),new n.NodeList(m.lineno,m.colno,E)):m}function f(m,v){return u(m,function(x){return x instanceof n.Output?c(x,v):x instanceof n.Set?c(x,v,"value"):x instanceof n.For?c(x,v,"arr"):x instanceof n.If?c(x,v,"cond"):x instanceof n.CallExtension?c(x,v,"args"):void 0})}function p(m){return l(m,function(v){if(v instanceof n.Block){var x=!1,E=o();v.body=l(v.body,function(g){if(g instanceof n.FunCall&&g.name.value==="super")return x=!0,new n.Symbol(g.lineno,g.colno,E)}),x&&v.body.children.unshift(new n.Super(0,0,v.name,new n.Symbol(0,0,E)))}})}function b(m){return u(m,function(v){if(!(!(v instanceof n.If)&&!(v instanceof n.For))){var x=!1;if(l(v,function(E){if(E instanceof n.FilterAsync||E instanceof n.IfAsync||E instanceof n.AsyncEach||E instanceof n.AsyncAll||E instanceof n.CallExtensionAsync)return x=!0,E}),x){if(v instanceof n.If)return new n.IfAsync(v.lineno,v.colno,v.cond,v.body,v.else_);if(v instanceof n.For&&!(v instanceof n.AsyncAll))return new n.AsyncEach(v.lineno,v.colno,v.arr,v.name,v.body,v.else_)}}})}function d(m,v){return b(p(f(m,v)))}function h(m,v){return d(m,v||[])}e.exports={transform:h}},function(e,r,a){"use strict";var n=a(0),i=a(2),r=e.exports={};function o(R,z){return R==null||R===!1?z:R}r.abs=Math.abs;function s(R){return R!==R}function l(R,z,J){var H,ne=[],K=[];for(H=0;H<R.length;H++)H%z===0&&K.length&&(ne.push(K),K=[]),K.push(R[H]);if(K.length){if(J)for(H=K.length;H<z;H++)K.push(J);ne.push(K)}return ne}r.batch=l;function u(R){R=o(R,"");var z=R.toLowerCase();return i.copySafeness(R,z.charAt(0).toUpperCase()+z.slice(1))}r.capitalize=u;function c(R,z){if(R=o(R,""),z=z||80,R.length>=z)return R;var J=z-R.length,H=n.repeat(" ",J/2-J%2),ne=n.repeat(" ",J/2);return i.copySafeness(R,H+R+ne)}r.center=c;function f(R,z,J){return J?R||z:R!==void 0?R:z}r.default=f;function p(R,z,J){if(!n.isObject(R))throw new n.TemplateError("dictsort filter: val must be an object");var H=[];for(var ne in R)H.push([ne,R[ne]]);var K;if(J===void 0||J==="key")K=0;else if(J==="value")K=1;else throw new n.TemplateError("dictsort filter: You can only sort by either key or value");return H.sort(function(Ae,ue){var Ne=Ae[K],Nt=ue[K];return z||(n.isString(Ne)&&(Ne=Ne.toUpperCase()),n.isString(Nt)&&(Nt=Nt.toUpperCase())),Ne>Nt?1:Ne===Nt?0:-1}),H}r.dictsort=p;function b(R,z){return JSON.stringify(R,null,z)}r.dump=b;function d(R){return R instanceof i.SafeString?R:(R=R==null?"":R,i.markSafe(n.escape(R.toString())))}r.escape=d;function h(R){return R instanceof i.SafeString?R:(R=R==null?"":R,i.markSafe(R.toString()))}r.safe=h;function m(R){return R[0]}r.first=m;function v(R){return R=R==null?"":R,i.markSafe(n.escape(R.toString()))}r.forceescape=v;function x(R,z){return n.groupBy(R,z,this.env.opts.throwOnUndefined)}r.groupby=x;function E(R,z,J){if(R=o(R,""),R==="")return"";z=z||4;var H=R.split(` +`,this.index-1);U===-1?this.colno=this.index:this.colno=this.index-U}else this.colno--},ee.current=function(){return this.isFinished()?"":this.str.charAt(this.index)},ee.currentStr=function(){return this.isFinished()?"":this.str.substr(this.index)},ee.previous=function(){return this.str.charAt(this.index-1)},fe}();e.exports={lex:function(ee,oe){return new pe(ee,oe)},TOKEN_STRING:b,TOKEN_WHITESPACE:d,TOKEN_DATA:m,TOKEN_BLOCK_START:h,TOKEN_BLOCK_END:v,TOKEN_VARIABLE_START:x,TOKEN_VARIABLE_END:E,TOKEN_COMMENT:g,TOKEN_LEFT_PAREN:w,TOKEN_RIGHT_PAREN:C,TOKEN_LEFT_BRACKET:y,TOKEN_RIGHT_BRACKET:S,TOKEN_LEFT_CURLY:A,TOKEN_RIGHT_CURLY:_,TOKEN_OPERATOR:P,TOKEN_COMMA:F,TOKEN_COLON:B,TOKEN_TILDE:j,TOKEN_PIPE:L,TOKEN_INT:k,TOKEN_FLOAT:T,TOKEN_BOOLEAN:N,TOKEN_NONE:M,TOKEN_SYMBOL:D,TOKEN_SPECIAL:V,TOKEN_REGEX:q}},function(e,t,a){"use strict";function n(u,c){u.prototype=Object.create(c.prototype),u.prototype.constructor=u,i(u,c)}function i(u,c){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(p,b){return p.__proto__=b,p},i(u,c)}var r=a(6),o=a(19),s=o.PrecompiledLoader,l=function(u){n(c,u);function c(p,b){var d;return d=u.call(this)||this,d.baseURL=p||".",b=b||{},d.useCache=!!b.useCache,d.async=!!b.async,d}var f=c.prototype;return f.resolve=function(b,d){throw new Error("relative templates not support in the browser yet")},f.getSource=function(b,d){var m=this,h=this.useCache,v;return this.fetch(this.baseURL+"/"+b,function(x,E){if(x)if(d)d(x.content);else if(x.status===404)v=null;else throw x.content;else v={src:E,path:b,noCache:!h},m.emit("load",b,v),d&&d(null,v)}),v},f.fetch=function(b,d){if(typeof window=="undefined")throw new Error("WebLoader can only by used in a browser");var m=new XMLHttpRequest,h=!0;m.onreadystatechange=function(){m.readyState===4&&h&&(h=!1,m.status===0||m.status===200?d(null,m.responseText):d({status:m.status,content:m.responseText}))},b+=(b.indexOf("?")===-1?"?":"&")+"s="+new Date().getTime(),m.open("GET",b,this.async),m.send()},c}(r);e.exports={WebLoader:l,PrecompiledLoader:s}},function(e,t,a){"use strict";var n=a(0),i=a(7),r=i.Environment,o=i.Template,s=a(6),l=a(10),u=a(23),c=a(5),f=a(8),p=a(9),b=a(2),d=a(3),m=a(25),h;function v(x,E){E=E||{},n.isObject(x)&&(E=x,x=null);var g;return l.FileSystemLoader?g=new l.FileSystemLoader(x,{watch:E.watch,noCache:E.noCache}):l.WebLoader&&(g=new l.WebLoader(x,{useCache:E.web&&E.web.useCache,async:E.web&&E.web.async})),h=new r(g,E),E&&E.express&&h.express(E.express),h}e.exports={Environment:r,Template:o,Loader:s,FileSystemLoader:l.FileSystemLoader,NodeResolveLoader:l.NodeResolveLoader,PrecompiledLoader:l.PrecompiledLoader,WebLoader:l.WebLoader,compiler:c,parser:f,lexer:p,runtime:b,lib:n,nodes:d,installJinjaCompat:m,configure:v,reset:function(){h=void 0},compile:function(E,g,w,C){return h||v(),new o(E,g,w,C)},render:function(E,g,w){return h||v(),h.render(E,g,w)},renderString:function(E,g,w){return h||v(),h.renderString(E,g,w)},precompile:u?u.precompile:void 0,precompileString:u?u.precompileString:void 0}},function(e,t,a){"use strict";var n=a(13),i=[],r=[],o=n.makeRequestCallFromTimer(s);function s(){if(r.length)throw r.shift()}e.exports=l;function l(c){var f;i.length?f=i.pop():f=new u,f.task=c,n(f)}function u(){this.task=null}u.prototype.call=function(){try{this.task.call()}catch(c){l.onerror?l.onerror(c):(r.push(c),o())}finally{this.task=null,i[i.length]=this}}},function(e,t,a){"use strict";(function(n){e.exports=i;function i(m){r.length||(s(),o=!0),r[r.length]=m}var r=[],o=!1,s,l=0,u=1024;function c(){for(;l<r.length;){var m=l;if(l=l+1,r[m].call(),l>u){for(var h=0,v=r.length-l;h<v;h++)r[h]=r[h+l];r.length-=l,l=0}}r.length=0,l=0,o=!1}var f=typeof n!="undefined"?n:self,p=f.MutationObserver||f.WebKitMutationObserver;typeof p=="function"?s=b(c):s=d(c),i.requestFlush=s;function b(m){var h=1,v=new p(m),x=document.createTextNode("");return v.observe(x,{characterData:!0}),function(){h=-h,x.data=h}}function d(m){return function(){var v=setTimeout(E,0),x=setInterval(E,50);function E(){clearTimeout(v),clearInterval(x),m()}}}i.makeRequestCallFromTimer=d}).call(t,a(14))},function(e,t){var a;a=function(){return this}();try{a=a||Function("return this")()||(0,eval)("this")}catch(n){typeof window=="object"&&(a=window)}e.exports=a},function(e,t,a){var n,i;(function(r){"use strict";var o=function(){var f=Array.prototype.slice.call(arguments);typeof f[0]=="function"&&f[0].apply(null,f.splice(1))},s=function(f){typeof setImmediate=="function"?setImmediate(f):typeof process!="undefined"&&process.nextTick?process.nextTick(f):setTimeout(f,0)},l=function(f){var p=function(b){var d=function(){return f.length&&f[b].apply(null,arguments),d.next()};return d.next=function(){return b<f.length-1?p(b+1):null},d};return p(0)},u=Array.isArray||function(f){return Object.prototype.toString.call(f)==="[object Array]"},c=function(f,p,b){var d=b?s:o;if(p=p||function(){},!u(f)){var m=new Error("First argument to waterfall must be an array of functions");return p(m)}if(!f.length)return p();var h=function(v){return function(x){if(x)p.apply(null,arguments),p=function(){};else{var E=Array.prototype.slice.call(arguments,1),g=v.next();g?E.push(h(g)):E.push(p),d(function(){v.apply(null,E)})}}};h(l(f))()};n=[],i=function(){return c}.apply(t,n),i!==void 0&&(e.exports=i)})(this)},function(e,t,a){"use strict";var n=typeof Reflect=="object"?Reflect:null,i=n&&typeof n.apply=="function"?n.apply:function(S,A,_){return Function.prototype.apply.call(S,A,_)},r;n&&typeof n.ownKeys=="function"?r=n.ownKeys:Object.getOwnPropertySymbols?r=function(S){return Object.getOwnPropertyNames(S).concat(Object.getOwnPropertySymbols(S))}:r=function(S){return Object.getOwnPropertyNames(S)};function o(y){console&&console.warn&&console.warn(y)}var s=Number.isNaN||function(S){return S!==S};function l(){l.init.call(this)}e.exports=l,e.exports.once=g,l.EventEmitter=l,l.prototype._events=void 0,l.prototype._eventsCount=0,l.prototype._maxListeners=void 0;var u=10;function c(y){if(typeof y!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof y)}Object.defineProperty(l,"defaultMaxListeners",{enumerable:!0,get:function(){return u},set:function(y){if(typeof y!="number"||y<0||s(y))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+y+".");u=y}}),l.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},l.prototype.setMaxListeners=function(S){if(typeof S!="number"||S<0||s(S))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+S+".");return this._maxListeners=S,this};function f(y){return y._maxListeners===void 0?l.defaultMaxListeners:y._maxListeners}l.prototype.getMaxListeners=function(){return f(this)},l.prototype.emit=function(S){for(var A=[],_=1;_<arguments.length;_++)A.push(arguments[_]);var P=S==="error",F=this._events;if(F!==void 0)P=P&&F.error===void 0;else if(!P)return!1;if(P){var B;if(A.length>0&&(B=A[0]),B instanceof Error)throw B;var j=new Error("Unhandled error."+(B?" ("+B.message+")":""));throw j.context=B,j}var L=F[S];if(L===void 0)return!1;if(typeof L=="function")i(L,this,A);else for(var k=L.length,T=v(L,k),_=0;_<k;++_)i(T[_],this,A);return!0};function p(y,S,A,_){var P,F,B;if(c(A),F=y._events,F===void 0?(F=y._events=Object.create(null),y._eventsCount=0):(F.newListener!==void 0&&(y.emit("newListener",S,A.listener?A.listener:A),F=y._events),B=F[S]),B===void 0)B=F[S]=A,++y._eventsCount;else if(typeof B=="function"?B=F[S]=_?[A,B]:[B,A]:_?B.unshift(A):B.push(A),P=f(y),P>0&&B.length>P&&!B.warned){B.warned=!0;var j=new Error("Possible EventEmitter memory leak detected. "+B.length+" "+String(S)+" listeners added. Use emitter.setMaxListeners() to increase limit");j.name="MaxListenersExceededWarning",j.emitter=y,j.type=S,j.count=B.length,o(j)}return y}l.prototype.addListener=function(S,A){return p(this,S,A,!1)},l.prototype.on=l.prototype.addListener,l.prototype.prependListener=function(S,A){return p(this,S,A,!0)};function b(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(y,S,A){var _={fired:!1,wrapFn:void 0,target:y,type:S,listener:A},P=b.bind(_);return P.listener=A,_.wrapFn=P,P}l.prototype.once=function(S,A){return c(A),this.on(S,d(this,S,A)),this},l.prototype.prependOnceListener=function(S,A){return c(A),this.prependListener(S,d(this,S,A)),this},l.prototype.removeListener=function(S,A){var _,P,F,B,j;if(c(A),P=this._events,P===void 0)return this;if(_=P[S],_===void 0)return this;if(_===A||_.listener===A)--this._eventsCount===0?this._events=Object.create(null):(delete P[S],P.removeListener&&this.emit("removeListener",S,_.listener||A));else if(typeof _!="function"){for(F=-1,B=_.length-1;B>=0;B--)if(_[B]===A||_[B].listener===A){j=_[B].listener,F=B;break}if(F<0)return this;F===0?_.shift():x(_,F),_.length===1&&(P[S]=_[0]),P.removeListener!==void 0&&this.emit("removeListener",S,j||A)}return this},l.prototype.off=l.prototype.removeListener,l.prototype.removeAllListeners=function(S){var A,_,P;if(_=this._events,_===void 0)return this;if(_.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):_[S]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete _[S]),this;if(arguments.length===0){var F=Object.keys(_),B;for(P=0;P<F.length;++P)B=F[P],B!=="removeListener"&&this.removeAllListeners(B);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(A=_[S],typeof A=="function")this.removeListener(S,A);else if(A!==void 0)for(P=A.length-1;P>=0;P--)this.removeListener(S,A[P]);return this};function m(y,S,A){var _=y._events;if(_===void 0)return[];var P=_[S];return P===void 0?[]:typeof P=="function"?A?[P.listener||P]:[P]:A?E(P):v(P,P.length)}l.prototype.listeners=function(S){return m(this,S,!0)},l.prototype.rawListeners=function(S){return m(this,S,!1)},l.listenerCount=function(y,S){return typeof y.listenerCount=="function"?y.listenerCount(S):h.call(y,S)},l.prototype.listenerCount=h;function h(y){var S=this._events;if(S!==void 0){var A=S[y];if(typeof A=="function")return 1;if(A!==void 0)return A.length}return 0}l.prototype.eventNames=function(){return this._eventsCount>0?r(this._events):[]};function v(y,S){for(var A=new Array(S),_=0;_<S;++_)A[_]=y[_];return A}function x(y,S){for(;S+1<y.length;S++)y[S]=y[S+1];y.pop()}function E(y){for(var S=new Array(y.length),A=0;A<S.length;++A)S[A]=y[A].listener||y[A];return S}function g(y,S){return new Promise(function(A,_){function P(B){y.removeListener(S,F),_(B)}function F(){typeof y.removeListener=="function"&&y.removeListener("error",P),A([].slice.call(arguments))}C(y,S,F,{once:!0}),S!=="error"&&w(y,P,{once:!0})})}function w(y,S,A){typeof y.on=="function"&&C(y,"error",S,A)}function C(y,S,A,_){if(typeof y.on=="function")_.once?y.once(S,A):y.on(S,A);else if(typeof y.addEventListener=="function")y.addEventListener(S,function P(F){_.once&&y.removeEventListener(S,P),A(F)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof y)}},function(e,t,a){"use strict";var n=a(3),i=a(0),r=0;function o(){return"hole_"+r++}function s(h,v){for(var x=null,E=0;E<h.length;E++){var g=v(h[E]);g!==h[E]&&(x||(x=h.slice()),x[E]=g)}return x||h}function l(h,v,x){if(!(h instanceof n.Node))return h;if(!x){var E=v(h);if(E&&E!==h)return E}if(h instanceof n.NodeList){var g=s(h.children,function(A){return l(A,v,x)});g!==h.children&&(h=new n[h.typename](h.lineno,h.colno,g))}else if(h instanceof n.CallExtension){var w=l(h.args,v,x),C=s(h.contentArgs,function(A){return l(A,v,x)});(w!==h.args||C!==h.contentArgs)&&(h=new n[h.typename](h.extName,h.prop,w,C))}else{var y=h.fields.map(function(A){return h[A]}),S=s(y,function(A){return l(A,v,x)});S!==y&&(h=new n[h.typename](h.lineno,h.colno),S.forEach(function(A,_){h[h.fields[_]]=A}))}return x&&v(h)||h}function u(h,v){return l(h,v,!0)}function c(h,v,x){var E=[],g=u(x?h[x]:h,function(w){var C;return w instanceof n.Block?w:((w instanceof n.Filter&&i.indexOf(v,w.name.value)!==-1||w instanceof n.CallExtensionAsync)&&(C=new n.Symbol(w.lineno,w.colno,o()),E.push(new n.FilterAsync(w.lineno,w.colno,w.name,w.args,C))),C)});return x?h[x]=g:h=g,E.length?(E.push(h),new n.NodeList(h.lineno,h.colno,E)):h}function f(h,v){return u(h,function(x){return x instanceof n.Output?c(x,v):x instanceof n.Set?c(x,v,"value"):x instanceof n.For?c(x,v,"arr"):x instanceof n.If?c(x,v,"cond"):x instanceof n.CallExtension?c(x,v,"args"):void 0})}function p(h){return l(h,function(v){if(v instanceof n.Block){var x=!1,E=o();v.body=l(v.body,function(g){if(g instanceof n.FunCall&&g.name.value==="super")return x=!0,new n.Symbol(g.lineno,g.colno,E)}),x&&v.body.children.unshift(new n.Super(0,0,v.name,new n.Symbol(0,0,E)))}})}function b(h){return u(h,function(v){if(!(!(v instanceof n.If)&&!(v instanceof n.For))){var x=!1;if(l(v,function(E){if(E instanceof n.FilterAsync||E instanceof n.IfAsync||E instanceof n.AsyncEach||E instanceof n.AsyncAll||E instanceof n.CallExtensionAsync)return x=!0,E}),x){if(v instanceof n.If)return new n.IfAsync(v.lineno,v.colno,v.cond,v.body,v.else_);if(v instanceof n.For&&!(v instanceof n.AsyncAll))return new n.AsyncEach(v.lineno,v.colno,v.arr,v.name,v.body,v.else_)}}})}function d(h,v){return b(p(f(h,v)))}function m(h,v){return d(h,v||[])}e.exports={transform:m}},function(e,r,a){"use strict";var n=a(0),i=a(2),r=e.exports={};function o(R,z){return R==null||R===!1?z:R}r.abs=Math.abs;function s(R){return R!==R}function l(R,z,J){var H,ne=[],K=[];for(H=0;H<R.length;H++)H%z===0&&K.length&&(ne.push(K),K=[]),K.push(R[H]);if(K.length){if(J)for(H=K.length;H<z;H++)K.push(J);ne.push(K)}return ne}r.batch=l;function u(R){R=o(R,"");var z=R.toLowerCase();return i.copySafeness(R,z.charAt(0).toUpperCase()+z.slice(1))}r.capitalize=u;function c(R,z){if(R=o(R,""),z=z||80,R.length>=z)return R;var J=z-R.length,H=n.repeat(" ",J/2-J%2),ne=n.repeat(" ",J/2);return i.copySafeness(R,H+R+ne)}r.center=c;function f(R,z,J){return J?R||z:R!==void 0?R:z}r.default=f;function p(R,z,J){if(!n.isObject(R))throw new n.TemplateError("dictsort filter: val must be an object");var H=[];for(var ne in R)H.push([ne,R[ne]]);var K;if(J===void 0||J==="key")K=0;else if(J==="value")K=1;else throw new n.TemplateError("dictsort filter: You can only sort by either key or value");return H.sort(function(Ae,ue){var Ne=Ae[K],Nt=ue[K];return z||(n.isString(Ne)&&(Ne=Ne.toUpperCase()),n.isString(Nt)&&(Nt=Nt.toUpperCase())),Ne>Nt?1:Ne===Nt?0:-1}),H}r.dictsort=p;function b(R,z){return JSON.stringify(R,null,z)}r.dump=b;function d(R){return R instanceof i.SafeString?R:(R=R==null?"":R,i.markSafe(n.escape(R.toString())))}r.escape=d;function m(R){return R instanceof i.SafeString?R:(R=R==null?"":R,i.markSafe(R.toString()))}r.safe=m;function h(R){return R[0]}r.first=h;function v(R){return R=R==null?"":R,i.markSafe(n.escape(R.toString()))}r.forceescape=v;function x(R,z){return n.groupBy(R,z,this.env.opts.throwOnUndefined)}r.groupby=x;function E(R,z,J){if(R=o(R,""),R==="")return"";z=z||4;var H=R.split(` `),ne=n.repeat(" ",z),K=H.map(function(Ae,ue){return ue===0&&!J?Ae:""+ne+Ae}).join(` -`);return i.copySafeness(R,K)}r.indent=E;function g(R,z,J){return z=z||"",J&&(R=n.map(R,function(H){return H[J]})),R.join(z)}r.join=g;function w(R){return R[R.length-1]}r.last=w;function C(R){var z=o(R,"");return z!==void 0?typeof Map=="function"&&z instanceof Map||typeof Set=="function"&&z instanceof Set?z.size:n.isObject(z)&&!(z instanceof i.SafeString)?n.keys(z).length:z.length:0}r.length=C;function y(R){if(n.isString(R))return R.split("");if(n.isObject(R))return n._entries(R||{}).map(function(z){var J=z[0],H=z[1];return{key:J,value:H}});if(n.isArray(R))return R;throw new n.TemplateError("list filter: type not iterable")}r.list=y;function S(R){return R=o(R,""),R.toLowerCase()}r.lower=S;function I(R){return R==null?"":i.copySafeness(R,R.replace(/\r\n|\n/g,`<br /> -`))}r.nl2br=I;function _(R){return R[Math.floor(Math.random()*R.length)]}r.random=_;function P(R){function z(J,H,ne){H===void 0&&(H="truthy");var K=this,Ae=K.env.getTest(H);return n.toArray(J).filter(function(Ne){return Ae.call(K,Ne,ne)===R})}return z}r.reject=P(!1);function F(R,z){return R.filter(function(J){return!J[z]})}r.rejectattr=F,r.select=P(!0);function B(R,z){return R.filter(function(J){return!!J[z]})}r.selectattr=B;function N(R,z,J,H){var ne=R;if(z instanceof RegExp)return R.replace(z,J);typeof H=="undefined"&&(H=-1);var K="";if(typeof z=="number")z=""+z;else if(typeof z!="string")return R;if(typeof R=="number"&&(R=""+R),typeof R!="string"&&!(R instanceof i.SafeString))return R;if(z==="")return K=J+R.split("").join(J)+J,i.copySafeness(R,K);var Ae=R.indexOf(z);if(H===0||Ae===-1)return R;for(var ue=0,Ne=0;Ae>-1&&(H===-1||Ne<H);)K+=R.substring(ue,Ae)+J,ue=Ae+z.length,Ne++,Ae=R.indexOf(z,ue);return ue<R.length&&(K+=R.substring(ue)),i.copySafeness(ne,K)}r.replace=N;function L(R){var z;return n.isString(R)?z=y(R):z=n.map(R,function(J){return J}),z.reverse(),n.isString(R)?i.copySafeness(R,z.join("")):z}r.reverse=L;function k(R,z,J){z=z||0;var H=Math.pow(10,z),ne;return J==="ceil"?ne=Math.ceil:J==="floor"?ne=Math.floor:ne=Math.round,ne(R*H)/H}r.round=k;function T(R,z,J){for(var H=Math.floor(R.length/z),ne=R.length%z,K=[],Ae=0,ue=0;ue<z;ue++){var Ne=Ae+ue*H;ue<ne&&Ae++;var Nt=Ae+(ue+1)*H,Vt=R.slice(Ne,Nt);J&&ue>=ne&&Vt.push(J),K.push(Vt)}return K}r.slice=T;function j(R,z,J){return J===void 0&&(J=0),z&&(R=n.map(R,function(H){return H[z]})),J+R.reduce(function(H,ne){return H+ne},0)}r.sum=j,r.sort=i.makeMacro(["value","reverse","case_sensitive","attribute"],[],function(z,J,H,ne){var K=this,Ae=n.map(z,function(Ne){return Ne}),ue=n.getAttrGetter(ne);return Ae.sort(function(Ne,Nt){var Vt=ne?ue(Ne):Ne,Ia=ne?ue(Nt):Nt;if(K.env.opts.throwOnUndefined&&ne&&(Vt===void 0||Ia===void 0))throw new TypeError('sort: attribute "'+ne+'" resolved to undefined');return!H&&n.isString(Vt)&&n.isString(Ia)&&(Vt=Vt.toLowerCase(),Ia=Ia.toLowerCase()),Vt<Ia?J?1:-1:Vt>Ia?J?-1:1:0}),Ae});function M(R){return i.copySafeness(R,R)}r.string=M;function D(R,z){R=o(R,"");var J=/<\/?([a-z][a-z0-9]*)\b[^>]*>|<!--[\s\S]*?-->/gi,H=q(R.replace(J,"")),ne="";return z?ne=H.replace(/^ +| +$/gm,"").replace(/ +/g," ").replace(/(\r\n)/g,` +`);return i.copySafeness(R,K)}r.indent=E;function g(R,z,J){return z=z||"",J&&(R=n.map(R,function(H){return H[J]})),R.join(z)}r.join=g;function w(R){return R[R.length-1]}r.last=w;function C(R){var z=o(R,"");return z!==void 0?typeof Map=="function"&&z instanceof Map||typeof Set=="function"&&z instanceof Set?z.size:n.isObject(z)&&!(z instanceof i.SafeString)?n.keys(z).length:z.length:0}r.length=C;function y(R){if(n.isString(R))return R.split("");if(n.isObject(R))return n._entries(R||{}).map(function(z){var J=z[0],H=z[1];return{key:J,value:H}});if(n.isArray(R))return R;throw new n.TemplateError("list filter: type not iterable")}r.list=y;function S(R){return R=o(R,""),R.toLowerCase()}r.lower=S;function A(R){return R==null?"":i.copySafeness(R,R.replace(/\r\n|\n/g,`<br /> +`))}r.nl2br=A;function _(R){return R[Math.floor(Math.random()*R.length)]}r.random=_;function P(R){function z(J,H,ne){H===void 0&&(H="truthy");var K=this,Ae=K.env.getTest(H);return n.toArray(J).filter(function(Ne){return Ae.call(K,Ne,ne)===R})}return z}r.reject=P(!1);function F(R,z){return R.filter(function(J){return!J[z]})}r.rejectattr=F,r.select=P(!0);function B(R,z){return R.filter(function(J){return!!J[z]})}r.selectattr=B;function j(R,z,J,H){var ne=R;if(z instanceof RegExp)return R.replace(z,J);typeof H=="undefined"&&(H=-1);var K="";if(typeof z=="number")z=""+z;else if(typeof z!="string")return R;if(typeof R=="number"&&(R=""+R),typeof R!="string"&&!(R instanceof i.SafeString))return R;if(z==="")return K=J+R.split("").join(J)+J,i.copySafeness(R,K);var Ae=R.indexOf(z);if(H===0||Ae===-1)return R;for(var ue=0,Ne=0;Ae>-1&&(H===-1||Ne<H);)K+=R.substring(ue,Ae)+J,ue=Ae+z.length,Ne++,Ae=R.indexOf(z,ue);return ue<R.length&&(K+=R.substring(ue)),i.copySafeness(ne,K)}r.replace=j;function L(R){var z;return n.isString(R)?z=y(R):z=n.map(R,function(J){return J}),z.reverse(),n.isString(R)?i.copySafeness(R,z.join("")):z}r.reverse=L;function k(R,z,J){z=z||0;var H=Math.pow(10,z),ne;return J==="ceil"?ne=Math.ceil:J==="floor"?ne=Math.floor:ne=Math.round,ne(R*H)/H}r.round=k;function T(R,z,J){for(var H=Math.floor(R.length/z),ne=R.length%z,K=[],Ae=0,ue=0;ue<z;ue++){var Ne=Ae+ue*H;ue<ne&&Ae++;var Nt=Ae+(ue+1)*H,Vt=R.slice(Ne,Nt);J&&ue>=ne&&Vt.push(J),K.push(Vt)}return K}r.slice=T;function N(R,z,J){return J===void 0&&(J=0),z&&(R=n.map(R,function(H){return H[z]})),J+R.reduce(function(H,ne){return H+ne},0)}r.sum=N,r.sort=i.makeMacro(["value","reverse","case_sensitive","attribute"],[],function(z,J,H,ne){var K=this,Ae=n.map(z,function(Ne){return Ne}),ue=n.getAttrGetter(ne);return Ae.sort(function(Ne,Nt){var Vt=ne?ue(Ne):Ne,Ia=ne?ue(Nt):Nt;if(K.env.opts.throwOnUndefined&&ne&&(Vt===void 0||Ia===void 0))throw new TypeError('sort: attribute "'+ne+'" resolved to undefined');return!H&&n.isString(Vt)&&n.isString(Ia)&&(Vt=Vt.toLowerCase(),Ia=Ia.toLowerCase()),Vt<Ia?J?1:-1:Vt>Ia?J?-1:1:0}),Ae});function M(R){return i.copySafeness(R,R)}r.string=M;function D(R,z){R=o(R,"");var J=/<\/?([a-z][a-z0-9]*)\b[^>]*>|<!--[\s\S]*?-->/gi,H=q(R.replace(J,"")),ne="";return z?ne=H.replace(/^ +| +$/gm,"").replace(/ +/g," ").replace(/(\r\n)/g,` `).replace(/\n\n\n+/g,` -`):ne=H.replace(/\s+/gi," "),i.copySafeness(R,ne)}r.striptags=D;function V(R){R=o(R,"");var z=R.split(" ").map(function(J){return u(J)});return i.copySafeness(R,z.join(" "))}r.title=V;function q(R){return i.copySafeness(R,R.replace(/^\s*|\s*$/g,""))}r.trim=q;function Z(R,z,J,H){var ne=R;if(R=o(R,""),z=z||255,R.length<=z)return R;if(J)R=R.substring(0,z);else{var K=R.lastIndexOf(" ",z);K===-1&&(K=z),R=R.substring(0,K)}return R+=H!=null?H:"...",i.copySafeness(ne,R)}r.truncate=Z;function pe(R){return R=o(R,""),R.toUpperCase()}r.upper=pe;function fe(R){var z=encodeURIComponent;if(n.isString(R))return z(R);var J=n.isArray(R)?R:n._entries(R);return J.map(function(H){var ne=H[0],K=H[1];return z(ne)+"="+z(K)}).join("&")}r.urlencode=fe;var ee=/^(?:\(|<|<)?(.*?)(?:\.|,|\)|\n|>)?$/,oe=/^[\w.!#$%&'*+\-\/=?\^`{|}~]+@[a-z\d\-]+(\.[a-z\d\-]+)+$/i,U=/^https?:\/\/.*$/,X=/^www\./,$=/\.(?:org|net|com)(?:\:|\/|$)/;function he(R,z,J){s(z)&&(z=1/0);var H=J===!0?' rel="nofollow"':"",ne=R.split(/(\s+)/).filter(function(K){return K&&K.length}).map(function(K){var Ae=K.match(ee),ue=Ae?Ae[1]:K,Ne=ue.substr(0,z);return U.test(ue)?'<a href="'+ue+'"'+H+">"+Ne+"</a>":X.test(ue)?'<a href="http://'+ue+'"'+H+">"+Ne+"</a>":oe.test(ue)?'<a href="mailto:'+ue+'">'+ue+"</a>":$.test(ue)?'<a href="http://'+ue+'"'+H+">"+Ne+"</a>":K});return ne.join("")}r.urlize=he;function qe(R){R=o(R,"");var z=R?R.match(/\w+/g):null;return z?z.length:null}r.wordcount=qe;function ze(R,z){var J=parseFloat(R);return s(J)?z:J}r.float=ze;var ht=i.makeMacro(["value","default","base"],[],function(z,J,H){H===void 0&&(H=10);var ne=parseInt(z,H);return s(ne)?J:ne});r.int=ht,r.d=r.default,r.e=r.escape},function(e,t,a){"use strict";function n(s,l){s.prototype=Object.create(l.prototype),s.prototype.constructor=s,i(s,l)}function i(s,l){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(c,f){return c.__proto__=f,c},i(s,l)}var r=a(6),o=function(s){n(l,s);function l(c){var f;return f=s.call(this)||this,f.precompiled=c||{},f}var u=l.prototype;return u.getSource=function(f){return this.precompiled[f]?{src:{type:"code",obj:this.precompiled[f]},path:f}:null},l}(r);e.exports={PrecompiledLoader:o}},function(e,t,a){"use strict";var n=a(2).SafeString;function i(_){return typeof _=="function"}t.callable=i;function r(_){return _!==void 0}t.defined=r;function o(_,P){return _%P===0}t.divisibleby=o;function s(_){return _ instanceof n}t.escaped=s;function l(_,P){return _===P}t.equalto=l,t.eq=t.equalto,t.sameas=t.equalto;function u(_){return _%2===0}t.even=u;function c(_){return!_}t.falsy=c;function f(_,P){return _>=P}t.ge=f;function p(_,P){return _>P}t.greaterthan=p,t.gt=t.greaterthan;function b(_,P){return _<=P}t.le=b;function d(_,P){return _<P}t.lessthan=d,t.lt=t.lessthan;function h(_){return _.toLowerCase()===_}t.lower=h;function m(_,P){return _!==P}t.ne=m;function v(_){return _===null}t.null=v;function x(_){return typeof _=="number"}t.number=x;function E(_){return _%2===1}t.odd=E;function g(_){return typeof _=="string"}t.string=g;function w(_){return!!_}t.truthy=w;function C(_){return _===void 0}t.undefined=C;function y(_){return _.toUpperCase()===_}t.upper=y;function S(_){return typeof Symbol!="undefined"?!!_[Symbol.iterator]:Array.isArray(_)||typeof _=="string"}t.iterable=S;function I(_){var P=_!=null&&typeof _=="object"&&!Array.isArray(_);return Set?P&&!(_ instanceof Set):P}t.mapping=I},function(e,t,a){"use strict";function n(o){var s=-1;return{current:null,reset:function(){s=-1,this.current=null},next:function(){return s++,s>=o.length&&(s=0),this.current=o[s],this.current}}}function i(o){o=o||",";var s=!0;return function(){var l=s?"":o;return s=!1,l}}function r(){return{range:function(s,l,u){typeof l=="undefined"?(l=s,s=0,u=1):u||(u=1);var c=[];if(u>0)for(var f=s;f<l;f+=u)c.push(f);else for(var p=s;p>l;p+=u)c.push(p);return c},cycler:function(){return n(Array.prototype.slice.call(arguments))},joiner:function(s){return i(s)}}}e.exports=r},function(e,t,a){var n=a(4);e.exports=function(r,o){function s(l,u){if(this.name=l,this.path=l,this.defaultEngine=u.defaultEngine,this.ext=n.extname(l),!this.ext&&!this.defaultEngine)throw new Error("No default engine was specified and no extension was provided.");this.ext||(this.name+=this.ext=(this.defaultEngine[0]!=="."?".":"")+this.defaultEngine)}return s.prototype.render=function(u,c){r.render(this.name,u,c)},o.set("view",s),o.set("nunjucksEnv",r),r}},function(e,t,a){"use strict";var n=a(4),i=a(4),r=a(0),o=r._prettifyError,s=a(5),l=a(7),u=l.Environment,c=a(24);function f(h,m){return Array.isArray(m)?m.some(function(v){return h.match(v)}):!1}function p(h,m){m=m||{},m.isString=!0;var v=m.env||new u([]),x=m.wrapper||c;if(!m.name)throw new Error('the "name" option is required when compiling a string');return x([d(h,m.name,v)],m)}function b(h,m){m=m||{};var v=m.env||new u([]),x=m.wrapper||c;if(m.isString)return p(h,m);var E=n.existsSync(h)&&n.statSync(h),g=[],w=[];function C(I){n.readdirSync(I).forEach(function(_){var P=i.join(I,_),F=P.substr(i.join(h,"/").length),B=n.statSync(P);B&&B.isDirectory()?(F+="/",f(F,m.exclude)||C(P)):f(F,m.include)&&w.push(P)})}if(E.isFile())g.push(d(n.readFileSync(h,"utf-8"),m.name||h,v));else if(E.isDirectory()){C(h);for(var y=0;y<w.length;y++){var S=w[y].replace(i.join(h,"/"),"");try{g.push(d(n.readFileSync(w[y],"utf-8"),S,v))}catch(I){if(m.force)console.error(I);else throw I}}}return x(g,m)}function d(h,m,v){v=v||new u([]);var x=v.asyncFilters,E=v.extensionsList,g;m=m.replace(/\\/g,"/");try{g=s.compile(h,x,E,m,v.opts)}catch(w){throw o(m,!1,w)}return{name:m,template:g}}e.exports={precompile:b,precompileString:p}},function(e,t,a){"use strict";function n(i,r){var o="";r=r||{};for(var s=0;s<i.length;s++){var l=JSON.stringify(i[s].name),u=i[s].template;o+="(function() {(window.nunjucksPrecompiled = window.nunjucksPrecompiled || {})["+l+`] = (function() { +`):ne=H.replace(/\s+/gi," "),i.copySafeness(R,ne)}r.striptags=D;function V(R){R=o(R,"");var z=R.split(" ").map(function(J){return u(J)});return i.copySafeness(R,z.join(" "))}r.title=V;function q(R){return i.copySafeness(R,R.replace(/^\s*|\s*$/g,""))}r.trim=q;function Z(R,z,J,H){var ne=R;if(R=o(R,""),z=z||255,R.length<=z)return R;if(J)R=R.substring(0,z);else{var K=R.lastIndexOf(" ",z);K===-1&&(K=z),R=R.substring(0,K)}return R+=H!=null?H:"...",i.copySafeness(ne,R)}r.truncate=Z;function pe(R){return R=o(R,""),R.toUpperCase()}r.upper=pe;function fe(R){var z=encodeURIComponent;if(n.isString(R))return z(R);var J=n.isArray(R)?R:n._entries(R);return J.map(function(H){var ne=H[0],K=H[1];return z(ne)+"="+z(K)}).join("&")}r.urlencode=fe;var ee=/^(?:\(|<|<)?(.*?)(?:\.|,|\)|\n|>)?$/,oe=/^[\w.!#$%&'*+\-\/=?\^`{|}~]+@[a-z\d\-]+(\.[a-z\d\-]+)+$/i,U=/^https?:\/\/.*$/,X=/^www\./,$=/\.(?:org|net|com)(?:\:|\/|$)/;function he(R,z,J){s(z)&&(z=1/0);var H=J===!0?' rel="nofollow"':"",ne=R.split(/(\s+)/).filter(function(K){return K&&K.length}).map(function(K){var Ae=K.match(ee),ue=Ae?Ae[1]:K,Ne=ue.substr(0,z);return U.test(ue)?'<a href="'+ue+'"'+H+">"+Ne+"</a>":X.test(ue)?'<a href="http://'+ue+'"'+H+">"+Ne+"</a>":oe.test(ue)?'<a href="mailto:'+ue+'">'+ue+"</a>":$.test(ue)?'<a href="http://'+ue+'"'+H+">"+Ne+"</a>":K});return ne.join("")}r.urlize=he;function qe(R){R=o(R,"");var z=R?R.match(/\w+/g):null;return z?z.length:null}r.wordcount=qe;function ze(R,z){var J=parseFloat(R);return s(J)?z:J}r.float=ze;var ht=i.makeMacro(["value","default","base"],[],function(z,J,H){H===void 0&&(H=10);var ne=parseInt(z,H);return s(ne)?J:ne});r.int=ht,r.d=r.default,r.e=r.escape},function(e,t,a){"use strict";function n(s,l){s.prototype=Object.create(l.prototype),s.prototype.constructor=s,i(s,l)}function i(s,l){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(c,f){return c.__proto__=f,c},i(s,l)}var r=a(6),o=function(s){n(l,s);function l(c){var f;return f=s.call(this)||this,f.precompiled=c||{},f}var u=l.prototype;return u.getSource=function(f){return this.precompiled[f]?{src:{type:"code",obj:this.precompiled[f]},path:f}:null},l}(r);e.exports={PrecompiledLoader:o}},function(e,t,a){"use strict";var n=a(2).SafeString;function i(_){return typeof _=="function"}t.callable=i;function r(_){return _!==void 0}t.defined=r;function o(_,P){return _%P===0}t.divisibleby=o;function s(_){return _ instanceof n}t.escaped=s;function l(_,P){return _===P}t.equalto=l,t.eq=t.equalto,t.sameas=t.equalto;function u(_){return _%2===0}t.even=u;function c(_){return!_}t.falsy=c;function f(_,P){return _>=P}t.ge=f;function p(_,P){return _>P}t.greaterthan=p,t.gt=t.greaterthan;function b(_,P){return _<=P}t.le=b;function d(_,P){return _<P}t.lessthan=d,t.lt=t.lessthan;function m(_){return _.toLowerCase()===_}t.lower=m;function h(_,P){return _!==P}t.ne=h;function v(_){return _===null}t.null=v;function x(_){return typeof _=="number"}t.number=x;function E(_){return _%2===1}t.odd=E;function g(_){return typeof _=="string"}t.string=g;function w(_){return!!_}t.truthy=w;function C(_){return _===void 0}t.undefined=C;function y(_){return _.toUpperCase()===_}t.upper=y;function S(_){return typeof Symbol!="undefined"?!!_[Symbol.iterator]:Array.isArray(_)||typeof _=="string"}t.iterable=S;function A(_){var P=_!=null&&typeof _=="object"&&!Array.isArray(_);return Set?P&&!(_ instanceof Set):P}t.mapping=A},function(e,t,a){"use strict";function n(o){var s=-1;return{current:null,reset:function(){s=-1,this.current=null},next:function(){return s++,s>=o.length&&(s=0),this.current=o[s],this.current}}}function i(o){o=o||",";var s=!0;return function(){var l=s?"":o;return s=!1,l}}function r(){return{range:function(s,l,u){typeof l=="undefined"?(l=s,s=0,u=1):u||(u=1);var c=[];if(u>0)for(var f=s;f<l;f+=u)c.push(f);else for(var p=s;p>l;p+=u)c.push(p);return c},cycler:function(){return n(Array.prototype.slice.call(arguments))},joiner:function(s){return i(s)}}}e.exports=r},function(e,t,a){var n=a(4);e.exports=function(r,o){function s(l,u){if(this.name=l,this.path=l,this.defaultEngine=u.defaultEngine,this.ext=n.extname(l),!this.ext&&!this.defaultEngine)throw new Error("No default engine was specified and no extension was provided.");this.ext||(this.name+=this.ext=(this.defaultEngine[0]!=="."?".":"")+this.defaultEngine)}return s.prototype.render=function(u,c){r.render(this.name,u,c)},o.set("view",s),o.set("nunjucksEnv",r),r}},function(e,t,a){"use strict";var n=a(4),i=a(4),r=a(0),o=r._prettifyError,s=a(5),l=a(7),u=l.Environment,c=a(24);function f(m,h){return Array.isArray(h)?h.some(function(v){return m.match(v)}):!1}function p(m,h){h=h||{},h.isString=!0;var v=h.env||new u([]),x=h.wrapper||c;if(!h.name)throw new Error('the "name" option is required when compiling a string');return x([d(m,h.name,v)],h)}function b(m,h){h=h||{};var v=h.env||new u([]),x=h.wrapper||c;if(h.isString)return p(m,h);var E=n.existsSync(m)&&n.statSync(m),g=[],w=[];function C(A){n.readdirSync(A).forEach(function(_){var P=i.join(A,_),F=P.substr(i.join(m,"/").length),B=n.statSync(P);B&&B.isDirectory()?(F+="/",f(F,h.exclude)||C(P)):f(F,h.include)&&w.push(P)})}if(E.isFile())g.push(d(n.readFileSync(m,"utf-8"),h.name||m,v));else if(E.isDirectory()){C(m);for(var y=0;y<w.length;y++){var S=w[y].replace(i.join(m,"/"),"");try{g.push(d(n.readFileSync(w[y],"utf-8"),S,v))}catch(A){if(h.force)console.error(A);else throw A}}}return x(g,h)}function d(m,h,v){v=v||new u([]);var x=v.asyncFilters,E=v.extensionsList,g;h=h.replace(/\\/g,"/");try{g=s.compile(m,x,E,h,v.opts)}catch(w){throw o(h,!1,w)}return{name:h,template:g}}e.exports={precompile:b,precompileString:p}},function(e,t,a){"use strict";function n(i,r){var o="";r=r||{};for(var s=0;s<i.length;s++){var l=JSON.stringify(i[s].name),u=i[s].template;o+="(function() {(window.nunjucksPrecompiled = window.nunjucksPrecompiled || {})["+l+`] = (function() { `+u+` })(); `,r.asFunction&&(o+="return function(ctx, cb) { return nunjucks.render("+l+`, ctx, cb); } `),o+=`})(); -`}return o}e.exports=n},function(e,t,a){function n(){"use strict";var i=this.runtime,r=this.lib,o=this.compiler.Compiler,s=this.parser.Parser,l=this.nodes,u=this.lexer,c=i.contextOrFrameLookup,f=i.memberLookup,p,b;o&&(p=o.prototype.assertType),s&&(b=s.prototype.parseAggregate);function d(){i.contextOrFrameLookup=c,i.memberLookup=f,o&&(o.prototype.assertType=p),s&&(s.prototype.parseAggregate=b)}i.contextOrFrameLookup=function(C,y,S){var I=c.apply(this,arguments);if(I!==void 0)return I;switch(S){case"True":return!0;case"False":return!1;case"None":return null;default:return}};function h(w){return{index:w.index,lineno:w.lineno,colno:w.colno}}if(l&&o&&s){var m=l.Node.extend("Slice",{fields:["start","stop","step"],init:function(C,y,S,I,_){S=S||new l.Literal(C,y,null),I=I||new l.Literal(C,y,null),_=_||new l.Literal(C,y,1),this.parent(C,y,S,I,_)}});o.prototype.assertType=function(C){C instanceof m||p.apply(this,arguments)},o.prototype.compileSlice=function(C,y){this._emit("("),this._compileExpression(C.start,y),this._emit("),("),this._compileExpression(C.stop,y),this._emit("),("),this._compileExpression(C.step,y),this._emit(")")},s.prototype.parseAggregate=function(){var C=this,y=h(this.tokens);y.colno--,y.index--;try{return b.apply(this)}catch(L){var S=h(this.tokens),I=function(){return r._assign(C.tokens,S),L};r._assign(this.tokens,y),this.peeked=!1;var _=this.peekToken();if(_.type!==u.TOKEN_LEFT_BRACKET)throw I();this.nextToken();for(var P=new m(_.lineno,_.colno),F=!1,B=0;B<=P.fields.length&&!this.skip(u.TOKEN_RIGHT_BRACKET);B++){if(B===P.fields.length)if(F)this.fail("parseSlice: too many slice components",_.lineno,_.colno);else break;if(this.skip(u.TOKEN_COLON))F=!0;else{var N=P.fields[B];P[N]=this.parseExpression(),F=this.skip(u.TOKEN_COLON)||F}}if(!F)throw I();return new l.Array(_.lineno,_.colno,[P])}}}function v(w,C,y,S){w=w||[],C===null&&(C=S<0?w.length-1:0),y===null?y=S<0?-1:w.length:y<0&&(y+=w.length),C<0&&(C+=w.length);for(var I=[],_=C;!(_<0||_>w.length||S>0&&_>=y||S<0&&_<=y);_+=S)I.push(i.memberLookup(w,_));return I}function x(w,C){return Object.prototype.hasOwnProperty.call(w,C)}var E={pop:function(C){if(C===void 0)return this.pop();if(C>=this.length||C<0)throw new Error("KeyError");return this.splice(C,1)},append:function(C){return this.push(C)},remove:function(C){for(var y=0;y<this.length;y++)if(this[y]===C)return this.splice(y,1);throw new Error("ValueError")},count:function(C){for(var y=0,S=0;S<this.length;S++)this[S]===C&&y++;return y},index:function(C){var y;if((y=this.indexOf(C))===-1)throw new Error("ValueError");return y},find:function(C){return this.indexOf(C)},insert:function(C,y){return this.splice(C,0,y)}},g={items:function(){return r._entries(this)},values:function(){return r._values(this)},keys:function(){return r.keys(this)},get:function(C,y){var S=this[C];return S===void 0&&(S=y),S},has_key:function(C){return x(this,C)},pop:function(C,y){var S=this[C];if(S===void 0&&y!==void 0)S=y;else{if(S===void 0)throw new Error("KeyError");delete this[C]}return S},popitem:function(){var C=r.keys(this);if(!C.length)throw new Error("KeyError");var y=C[0],S=this[y];return delete this[y],[y,S]},setdefault:function(C,y){return y===void 0&&(y=null),C in this||(this[C]=y),this[C]},update:function(C){return r._assign(this,C),null}};return g.iteritems=g.items,g.itervalues=g.values,g.iterkeys=g.keys,i.memberLookup=function(C,y,S){return arguments.length===4?v.apply(this,arguments):(C=C||{},r.isArray(C)&&x(E,y)?E[y].bind(C):r.isObject(C)&&x(g,y)?g[y].bind(C):f.apply(this,arguments))},d}e.exports=n}])})});var Bs=O((Sp,Kx)=>{var Rs=require("buffer"),ea=Rs.Buffer;function Yx(e,t){for(var a in e)t[a]=e[a]}ea.from&&ea.alloc&&ea.allocUnsafe&&ea.allocUnsafeSlow?Kx.exports=Rs:(Yx(Rs,Sp),Sp.Buffer=pn);function pn(e,t,a){return ea(e,t,a)}pn.prototype=Object.create(ea.prototype);Yx(ea,pn);pn.from=function(e,t,a){if(typeof e=="number")throw new TypeError("Argument must not be a number");return ea(e,t,a)};pn.alloc=function(e,t,a){if(typeof e!="number")throw new TypeError("Argument must be a number");var n=ea(e);return t!==void 0?typeof a=="string"?n.fill(t,a):n.fill(t):n.fill(0),n};pn.allocUnsafe=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return ea(e)};pn.allocUnsafeSlow=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return Rs.SlowBuffer(e)}});var iy=O((ZG,Cp)=>{"use strict";Cp.exports=UO;Cp.exports.parse=XO;var Qx=require("path").basename,NO=Bs().Buffer,jO=/[\x00-\x20"'()*,/:;<=>?@[\\\]{}\x7f]/g,LO=/%[0-9A-Fa-f]{2}/,MO=/%([0-9A-Fa-f]{2})/g,ty=/[^\x20-\x7e\xa0-\xff]/g,DO=/\\([\u0000-\u007f])/g,zO=/([\\"])/g,ey=/;[\x09\x20]*([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*=[\x09\x20]*("(?:[\x20!\x23-\x5b\x5d-\x7e\x80-\xff]|\\[\x20-\x7e])*"|[!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*/g,GO=/^[\x20-\x7e\x80-\xff]+$/,HO=/^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/,WO=/^([A-Za-z0-9!#$%&+\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/,VO=/^([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*(?:$|;)/;function UO(e,t){var a=t||{},n=a.type||"attachment",i=JO(e,a.fallback);return ZO(new ny(n,i))}function JO(e,t){if(e!==void 0){var a={};if(typeof e!="string")throw new TypeError("filename must be a string");if(t===void 0&&(t=!0),typeof t!="string"&&typeof t!="boolean")throw new TypeError("fallback must be a string or boolean");if(typeof t=="string"&&ty.test(t))throw new TypeError("fallback must be ISO-8859-1 string");var n=Qx(e),i=GO.test(n),r=typeof t!="string"?t&&ay(n):Qx(t),o=typeof r=="string"&&r!==n;return(o||!i||LO.test(n))&&(a["filename*"]=n),(i||o)&&(a.filename=o?r:n),a}}function ZO(e){var t=e.parameters,a=e.type;if(!a||typeof a!="string"||!HO.test(a))throw new TypeError("invalid type");var n=String(a).toLowerCase();if(t&&typeof t=="object")for(var i,r=Object.keys(t).sort(),o=0;o<r.length;o++){i=r[o];var s=i.substr(-1)==="*"?QO(t[i]):KO(t[i]);n+="; "+i+"="+s}return n}function qO(e){var t=WO.exec(e);if(!t)throw new TypeError("invalid extended field value");var a=t[1].toLowerCase(),n=t[2],i,r=n.replace(MO,$O);switch(a){case"iso-8859-1":i=ay(r);break;case"utf-8":i=NO.from(r,"binary").toString("utf8");break;default:throw new TypeError("unsupported charset in extended field")}return i}function ay(e){return String(e).replace(ty,"?")}function XO(e){if(!e||typeof e!="string")throw new TypeError("argument string is required");var t=VO.exec(e);if(!t)throw new TypeError("invalid type format");var a=t[0].length,n=t[1].toLowerCase(),i,r=[],o={},s;for(a=ey.lastIndex=t[0].substr(-1)===";"?a-1:a;t=ey.exec(e);){if(t.index!==a)throw new TypeError("invalid parameter format");if(a+=t[0].length,i=t[1].toLowerCase(),s=t[2],r.indexOf(i)!==-1)throw new TypeError("invalid duplicate parameter");if(r.push(i),i.indexOf("*")+1===i.length){i=i.slice(0,-1),s=qO(s),o[i]=s;continue}typeof o[i]!="string"&&(s[0]==='"'&&(s=s.substr(1,s.length-2).replace(DO,"$1")),o[i]=s)}if(a!==-1&&a!==e.length)throw new TypeError("invalid parameter format");return new ny(n,o)}function $O(e,t){return String.fromCharCode(parseInt(t,16))}function YO(e){return"%"+String(e).charCodeAt(0).toString(16).toUpperCase()}function KO(e){var t=String(e);return'"'+t.replace(zO,"\\$1")+'"'}function QO(e){var t=String(e),a=encodeURIComponent(t).replace(jO,YO);return"UTF-8''"+a}function ny(e,t){this.type=e,this.parameters=t}});var oy=O((qG,ry)=>{"use strict";ry.exports=e=>{let t=new Uint8Array(e);if(!(t&&t.length>1))return null;let a=(n,i)=>{i=Object.assign({offset:0},i);for(let r=0;r<n.length;r++)if(n[r]!==t[r+i.offset])return!1;return!0};if(a([255,216,255]))return{ext:"jpg",mime:"image/jpeg"};if(a([137,80,78,71,13,10,26,10]))return{ext:"png",mime:"image/png"};if(a([71,73,70]))return{ext:"gif",mime:"image/gif"};if(a([87,69,66,80],{offset:8}))return{ext:"webp",mime:"image/webp"};if(a([70,76,73,70]))return{ext:"flif",mime:"image/flif"};if((a([73,73,42,0])||a([77,77,0,42]))&&a([67,82],{offset:8}))return{ext:"cr2",mime:"image/x-canon-cr2"};if(a([73,73,42,0])||a([77,77,0,42]))return{ext:"tif",mime:"image/tiff"};if(a([66,77]))return{ext:"bmp",mime:"image/bmp"};if(a([73,73,188]))return{ext:"jxr",mime:"image/vnd.ms-photo"};if(a([56,66,80,83]))return{ext:"psd",mime:"image/vnd.adobe.photoshop"};if(a([80,75,3,4])&&a([109,105,109,101,116,121,112,101,97,112,112,108,105,99,97,116,105,111,110,47,101,112,117,98,43,122,105,112],{offset:30}))return{ext:"epub",mime:"application/epub+zip"};if(a([80,75,3,4])&&a([77,69,84,65,45,73,78,70,47,109,111,122,105,108,108,97,46,114,115,97],{offset:30}))return{ext:"xpi",mime:"application/x-xpinstall"};if(a([80,75])&&(t[2]===3||t[2]===5||t[2]===7)&&(t[3]===4||t[3]===6||t[3]===8))return{ext:"zip",mime:"application/zip"};if(a([117,115,116,97,114],{offset:257}))return{ext:"tar",mime:"application/x-tar"};if(a([82,97,114,33,26,7])&&(t[6]===0||t[6]===1))return{ext:"rar",mime:"application/x-rar-compressed"};if(a([31,139,8]))return{ext:"gz",mime:"application/gzip"};if(a([66,90,104]))return{ext:"bz2",mime:"application/x-bzip2"};if(a([55,122,188,175,39,28]))return{ext:"7z",mime:"application/x-7z-compressed"};if(a([120,1]))return{ext:"dmg",mime:"application/x-apple-diskimage"};if(a([0,0,0])&&(t[3]===24||t[3]===32)&&a([102,116,121,112],{offset:4})||a([51,103,112,53])||a([0,0,0,28,102,116,121,112,109,112,52,50])&&a([109,112,52,49,109,112,52,50,105,115,111,109],{offset:16})||a([0,0,0,28,102,116,121,112,105,115,111,109])||a([0,0,0,28,102,116,121,112,109,112,52,50,0,0,0,0]))return{ext:"mp4",mime:"video/mp4"};if(a([0,0,0,28,102,116,121,112,77,52,86]))return{ext:"m4v",mime:"video/x-m4v"};if(a([77,84,104,100]))return{ext:"mid",mime:"audio/midi"};if(a([26,69,223,163])){let n=t.subarray(4,4100),i=n.findIndex((r,o,s)=>s[o]===66&&s[o+1]===130);if(i>=0){let r=i+3,o=s=>Array.from(s).every((l,u)=>n[r+u]===l.charCodeAt(0));if(o("matroska"))return{ext:"mkv",mime:"video/x-matroska"};if(o("webm"))return{ext:"webm",mime:"video/webm"}}}return a([0,0,0,20,102,116,121,112,113,116,32,32])||a([102,114,101,101],{offset:4})||a([102,116,121,112,113,116,32,32],{offset:4})||a([109,100,97,116],{offset:4})||a([119,105,100,101],{offset:4})?{ext:"mov",mime:"video/quicktime"}:a([82,73,70,70])&&a([65,86,73],{offset:8})?{ext:"avi",mime:"video/x-msvideo"}:a([48,38,178,117,142,102,207,17,166,217])?{ext:"wmv",mime:"video/x-ms-wmv"}:a([0,0,1,186])?{ext:"mpg",mime:"video/mpeg"}:a([73,68,51])||a([255,251])?{ext:"mp3",mime:"audio/mpeg"}:a([102,116,121,112,77,52,65],{offset:4})||a([77,52,65,32])?{ext:"m4a",mime:"audio/m4a"}:a([79,112,117,115,72,101,97,100],{offset:28})?{ext:"opus",mime:"audio/opus"}:a([79,103,103,83])?{ext:"ogg",mime:"audio/ogg"}:a([102,76,97,67])?{ext:"flac",mime:"audio/x-flac"}:a([82,73,70,70])&&a([87,65,86,69],{offset:8})?{ext:"wav",mime:"audio/x-wav"}:a([35,33,65,77,82,10])?{ext:"amr",mime:"audio/amr"}:a([37,80,68,70])?{ext:"pdf",mime:"application/pdf"}:a([77,90])?{ext:"exe",mime:"application/x-msdownload"}:(t[0]===67||t[0]===70)&&a([87,83],{offset:1})?{ext:"swf",mime:"application/x-shockwave-flash"}:a([123,92,114,116,102])?{ext:"rtf",mime:"application/rtf"}:a([0,97,115,109])?{ext:"wasm",mime:"application/wasm"}:a([119,79,70,70])&&(a([0,1,0,0],{offset:4})||a([79,84,84,79],{offset:4}))?{ext:"woff",mime:"application/font-woff"}:a([119,79,70,50])&&(a([0,1,0,0],{offset:4})||a([79,84,84,79],{offset:4}))?{ext:"woff2",mime:"application/font-woff"}:a([76,80],{offset:34})&&(a([0,0,1],{offset:8})||a([1,0,2],{offset:8})||a([2,0,2],{offset:8}))?{ext:"eot",mime:"application/octet-stream"}:a([0,1,0,0,0])?{ext:"ttf",mime:"application/font-sfnt"}:a([79,84,84,79,0])?{ext:"otf",mime:"application/font-sfnt"}:a([0,0,1,0])?{ext:"ico",mime:"image/x-icon"}:a([70,76,86,1])?{ext:"flv",mime:"video/x-flv"}:a([37,33])?{ext:"ps",mime:"application/postscript"}:a([253,55,122,88,90,0])?{ext:"xz",mime:"application/x-xz"}:a([83,81,76,105])?{ext:"sqlite",mime:"application/x-sqlite3"}:a([78,69,83,26])?{ext:"nes",mime:"application/x-nintendo-nes-rom"}:a([67,114,50,52])?{ext:"crx",mime:"application/x-google-chrome-extension"}:a([77,83,67,70])||a([73,83,99,40])?{ext:"cab",mime:"application/vnd.ms-cab-compressed"}:a([33,60,97,114,99,104,62,10,100,101,98,105,97,110,45,98,105,110,97,114,121])?{ext:"deb",mime:"application/x-deb"}:a([33,60,97,114,99,104,62])?{ext:"ar",mime:"application/x-unix-archive"}:a([237,171,238,219])?{ext:"rpm",mime:"application/x-rpm"}:a([31,160])||a([31,157])?{ext:"Z",mime:"application/x-compress"}:a([76,90,73,80])?{ext:"lz",mime:"application/x-lzip"}:a([208,207,17,224,161,177,26,225])?{ext:"msi",mime:"application/x-msi"}:a([6,14,43,52,2,5,1,1,13,1,2,1,1,2])?{ext:"mxf",mime:"application/mxf"}:a([66,76,69,78,68,69,82])?{ext:"blend",mime:"application/x-blender"}:null}});var ly=O((XG,sy)=>{"use strict";var e3=oy(),t3=new Set(["7z","bz2","gz","rar","tar","zip","xz","gz"]);sy.exports=e=>{let t=e3(e);return t3.has(t&&t.ext)?t:null}});var uy=O(($G,cy)=>{var Na=require("constants"),a3=process.cwd,Ns=null,n3=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return Ns||(Ns=a3.call(process)),Ns};try{process.cwd()}catch(e){}typeof process.chdir=="function"&&(Ap=process.chdir,process.chdir=function(e){Ns=null,Ap.call(process,e)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,Ap));var Ap;cy.exports=i3;function i3(e){Na.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&t(e),e.lutimes||a(e),e.chown=r(e.chown),e.fchown=r(e.fchown),e.lchown=r(e.lchown),e.chmod=n(e.chmod),e.fchmod=n(e.fchmod),e.lchmod=n(e.lchmod),e.chownSync=o(e.chownSync),e.fchownSync=o(e.fchownSync),e.lchownSync=o(e.lchownSync),e.chmodSync=i(e.chmodSync),e.fchmodSync=i(e.fchmodSync),e.lchmodSync=i(e.lchmodSync),e.stat=s(e.stat),e.fstat=s(e.fstat),e.lstat=s(e.lstat),e.statSync=l(e.statSync),e.fstatSync=l(e.fstatSync),e.lstatSync=l(e.lstatSync),e.chmod&&!e.lchmod&&(e.lchmod=function(c,f,p){p&&process.nextTick(p)},e.lchmodSync=function(){}),e.chown&&!e.lchown&&(e.lchown=function(c,f,p,b){b&&process.nextTick(b)},e.lchownSync=function(){}),n3==="win32"&&(e.rename=typeof e.rename!="function"?e.rename:function(c){function f(p,b,d){var h=Date.now(),m=0;c(p,b,function v(x){if(x&&(x.code==="EACCES"||x.code==="EPERM"||x.code==="EBUSY")&&Date.now()-h<6e4){setTimeout(function(){e.stat(b,function(E,g){E&&E.code==="ENOENT"?c(p,b,v):d(x)})},m),m<100&&(m+=10);return}d&&d(x)})}return Object.setPrototypeOf&&Object.setPrototypeOf(f,c),f}(e.rename)),e.read=typeof e.read!="function"?e.read:function(c){function f(p,b,d,h,m,v){var x;if(v&&typeof v=="function"){var E=0;x=function(g,w,C){if(g&&g.code==="EAGAIN"&&E<10)return E++,c.call(e,p,b,d,h,m,x);v.apply(this,arguments)}}return c.call(e,p,b,d,h,m,x)}return Object.setPrototypeOf&&Object.setPrototypeOf(f,c),f}(e.read),e.readSync=typeof e.readSync!="function"?e.readSync:function(c){return function(f,p,b,d,h){for(var m=0;;)try{return c.call(e,f,p,b,d,h)}catch(v){if(v.code==="EAGAIN"&&m<10){m++;continue}throw v}}}(e.readSync);function t(c){c.lchmod=function(f,p,b){c.open(f,Na.O_WRONLY|Na.O_SYMLINK,p,function(d,h){if(d){b&&b(d);return}c.fchmod(h,p,function(m){c.close(h,function(v){b&&b(m||v)})})})},c.lchmodSync=function(f,p){var b=c.openSync(f,Na.O_WRONLY|Na.O_SYMLINK,p),d=!0,h;try{h=c.fchmodSync(b,p),d=!1}finally{if(d)try{c.closeSync(b)}catch(m){}else c.closeSync(b)}return h}}function a(c){Na.hasOwnProperty("O_SYMLINK")&&c.futimes?(c.lutimes=function(f,p,b,d){c.open(f,Na.O_SYMLINK,function(h,m){if(h){d&&d(h);return}c.futimes(m,p,b,function(v){c.close(m,function(x){d&&d(v||x)})})})},c.lutimesSync=function(f,p,b){var d=c.openSync(f,Na.O_SYMLINK),h,m=!0;try{h=c.futimesSync(d,p,b),m=!1}finally{if(m)try{c.closeSync(d)}catch(v){}else c.closeSync(d)}return h}):c.futimes&&(c.lutimes=function(f,p,b,d){d&&process.nextTick(d)},c.lutimesSync=function(){})}function n(c){return c&&function(f,p,b){return c.call(e,f,p,function(d){u(d)&&(d=null),b&&b.apply(this,arguments)})}}function i(c){return c&&function(f,p){try{return c.call(e,f,p)}catch(b){if(!u(b))throw b}}}function r(c){return c&&function(f,p,b,d){return c.call(e,f,p,b,function(h){u(h)&&(h=null),d&&d.apply(this,arguments)})}}function o(c){return c&&function(f,p,b){try{return c.call(e,f,p,b)}catch(d){if(!u(d))throw d}}}function s(c){return c&&function(f,p,b){typeof p=="function"&&(b=p,p=null);function d(h,m){m&&(m.uid<0&&(m.uid+=4294967296),m.gid<0&&(m.gid+=4294967296)),b&&b.apply(this,arguments)}return p?c.call(e,f,p,d):c.call(e,f,d)}}function l(c){return c&&function(f,p){var b=p?c.call(e,f,p):c.call(e,f);return b&&(b.uid<0&&(b.uid+=4294967296),b.gid<0&&(b.gid+=4294967296)),b}}function u(c){if(!c||c.code==="ENOSYS")return!0;var f=!process.getuid||process.getuid()!==0;return!!(f&&(c.code==="EINVAL"||c.code==="EPERM"))}}});var fy=O((YG,dy)=>{var py=require("stream").Stream;dy.exports=r3;function r3(e){return{ReadStream:t,WriteStream:a};function t(n,i){if(!(this instanceof t))return new t(n,i);py.call(this);var r=this;this.path=n,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=64*1024,i=i||{};for(var o=Object.keys(i),s=0,l=o.length;s<l;s++){var u=o[s];this[u]=i[u]}if(this.encoding&&this.setEncoding(this.encoding),this.start!==void 0){if(typeof this.start!="number")throw TypeError("start must be a Number");if(this.end===void 0)this.end=1/0;else if(typeof this.end!="number")throw TypeError("end must be a Number");if(this.start>this.end)throw new Error("start must be <= end");this.pos=this.start}if(this.fd!==null){process.nextTick(function(){r._read()});return}e.open(this.path,this.flags,this.mode,function(c,f){if(c){r.emit("error",c),r.readable=!1;return}r.fd=f,r.emit("open",f),r._read()})}function a(n,i){if(!(this instanceof a))return new a(n,i);py.call(this),this.path=n,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0,i=i||{};for(var r=Object.keys(i),o=0,s=r.length;o<s;o++){var l=r[o];this[l]=i[l]}if(this.start!==void 0){if(typeof this.start!="number")throw TypeError("start must be a Number");if(this.start<0)throw new Error("start must be >= zero");this.pos=this.start}this.busy=!1,this._queue=[],this.fd===null&&(this._open=e.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush())}}});var hy=O((KG,my)=>{"use strict";my.exports=s3;var o3=Object.getPrototypeOf||function(e){return e.__proto__};function s3(e){if(e===null||typeof e!="object")return e;if(e instanceof Object)var t={__proto__:o3(e)};else var t=Object.create(null);return Object.getOwnPropertyNames(e).forEach(function(a){Object.defineProperty(t,a,Object.getOwnPropertyDescriptor(e,a))}),t}});var xy=O((QG,Tp)=>{var We=require("fs"),l3=uy(),c3=fy(),u3=hy(),js=require("util"),ct,Ms;typeof Symbol=="function"&&typeof Symbol.for=="function"?(ct=Symbol.for("graceful-fs.queue"),Ms=Symbol.for("graceful-fs.previous")):(ct="___graceful-fs.queue",Ms="___graceful-fs.previous");function p3(){}function gy(e,t){Object.defineProperty(e,ct,{get:function(){return t}})}var dn=p3;js.debuglog?dn=js.debuglog("gfs4"):/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&(dn=function(){var e=js.format.apply(js,arguments);e="GFS4: "+e.split(/\n/).join(` -GFS4: `),console.error(e)});We[ct]||(vy=global[ct]||[],gy(We,vy),We.close=function(e){function t(a,n){return e.call(We,a,function(i){i||by(),typeof n=="function"&&n.apply(this,arguments)})}return Object.defineProperty(t,Ms,{value:e}),t}(We.close),We.closeSync=function(e){function t(a){e.apply(We,arguments),by()}return Object.defineProperty(t,Ms,{value:e}),t}(We.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&process.on("exit",function(){dn(We[ct]),require("assert").equal(We[ct].length,0)}));var vy;global[ct]||gy(global,We[ct]);Tp.exports=Ip(u3(We));process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!We.__patched&&(Tp.exports=Ip(We),We.__patched=!0);function Ip(e){l3(e),e.gracefulify=Ip,e.createReadStream=w,e.createWriteStream=C;var t=e.readFile;e.readFile=a;function a(I,_,P){return typeof _=="function"&&(P=_,_=null),F(I,_,P);function F(B,N,L,k){return t(B,N,function(T){T&&(T.code==="EMFILE"||T.code==="ENFILE")?Jn([F,[B,N,L],T,k||Date.now(),Date.now()]):typeof L=="function"&&L.apply(this,arguments)})}}var n=e.writeFile;e.writeFile=i;function i(I,_,P,F){return typeof P=="function"&&(F=P,P=null),B(I,_,P,F);function B(N,L,k,T,j){return n(N,L,k,function(M){M&&(M.code==="EMFILE"||M.code==="ENFILE")?Jn([B,[N,L,k,T],M,j||Date.now(),Date.now()]):typeof T=="function"&&T.apply(this,arguments)})}}var r=e.appendFile;r&&(e.appendFile=o);function o(I,_,P,F){return typeof P=="function"&&(F=P,P=null),B(I,_,P,F);function B(N,L,k,T,j){return r(N,L,k,function(M){M&&(M.code==="EMFILE"||M.code==="ENFILE")?Jn([B,[N,L,k,T],M,j||Date.now(),Date.now()]):typeof T=="function"&&T.apply(this,arguments)})}}var s=e.copyFile;s&&(e.copyFile=l);function l(I,_,P,F){return typeof P=="function"&&(F=P,P=0),B(I,_,P,F);function B(N,L,k,T,j){return s(N,L,k,function(M){M&&(M.code==="EMFILE"||M.code==="ENFILE")?Jn([B,[N,L,k,T],M,j||Date.now(),Date.now()]):typeof T=="function"&&T.apply(this,arguments)})}}var u=e.readdir;e.readdir=f;var c=/^v[0-5]\./;function f(I,_,P){typeof _=="function"&&(P=_,_=null);var F=c.test(process.version)?function(L,k,T,j){return u(L,B(L,k,T,j))}:function(L,k,T,j){return u(L,k,B(L,k,T,j))};return F(I,_,P);function B(N,L,k,T){return function(j,M){j&&(j.code==="EMFILE"||j.code==="ENFILE")?Jn([F,[N,L,k],j,T||Date.now(),Date.now()]):(M&&M.sort&&M.sort(),typeof k=="function"&&k.call(this,j,M))}}}if(process.version.substr(0,4)==="v0.8"){var p=c3(e);v=p.ReadStream,E=p.WriteStream}var b=e.ReadStream;b&&(v.prototype=Object.create(b.prototype),v.prototype.open=x);var d=e.WriteStream;d&&(E.prototype=Object.create(d.prototype),E.prototype.open=g),Object.defineProperty(e,"ReadStream",{get:function(){return v},set:function(I){v=I},enumerable:!0,configurable:!0}),Object.defineProperty(e,"WriteStream",{get:function(){return E},set:function(I){E=I},enumerable:!0,configurable:!0});var h=v;Object.defineProperty(e,"FileReadStream",{get:function(){return h},set:function(I){h=I},enumerable:!0,configurable:!0});var m=E;Object.defineProperty(e,"FileWriteStream",{get:function(){return m},set:function(I){m=I},enumerable:!0,configurable:!0});function v(I,_){return this instanceof v?(b.apply(this,arguments),this):v.apply(Object.create(v.prototype),arguments)}function x(){var I=this;S(I.path,I.flags,I.mode,function(_,P){_?(I.autoClose&&I.destroy(),I.emit("error",_)):(I.fd=P,I.emit("open",P),I.read())})}function E(I,_){return this instanceof E?(d.apply(this,arguments),this):E.apply(Object.create(E.prototype),arguments)}function g(){var I=this;S(I.path,I.flags,I.mode,function(_,P){_?(I.destroy(),I.emit("error",_)):(I.fd=P,I.emit("open",P))})}function w(I,_){return new e.ReadStream(I,_)}function C(I,_){return new e.WriteStream(I,_)}var y=e.open;e.open=S;function S(I,_,P,F){return typeof P=="function"&&(F=P,P=null),B(I,_,P,F);function B(N,L,k,T,j){return y(N,L,k,function(M,D){M&&(M.code==="EMFILE"||M.code==="ENFILE")?Jn([B,[N,L,k,T],M,j||Date.now(),Date.now()]):typeof T=="function"&&T.apply(this,arguments)})}}return e}function Jn(e){dn("ENQUEUE",e[0].name,e[1]),We[ct].push(e),_p()}var Ls;function by(){for(var e=Date.now(),t=0;t<We[ct].length;++t)We[ct][t].length>2&&(We[ct][t][3]=e,We[ct][t][4]=e);_p()}function _p(){if(clearTimeout(Ls),Ls=void 0,We[ct].length!==0){var e=We[ct].shift(),t=e[0],a=e[1],n=e[2],i=e[3],r=e[4];if(i===void 0)dn("RETRY",t.name,a),t.apply(null,a);else if(Date.now()-i>=6e4){dn("TIMEOUT",t.name,a);var o=a.pop();typeof o=="function"&&o.call(null,n)}else{var s=Date.now()-r,l=Math.max(r-i,1),u=Math.min(l*1.2,100);s>=u?(dn("RETRY",t.name,a),t.apply(null,a.concat([i]))):We[ct].push(e)}Ls===void 0&&(Ls=setTimeout(_p,0))}}});var wy=O((eH,yy)=>{"use strict";yy.exports=e=>{let t=new Uint8Array(e);if(!(t&&t.length>1))return null;let a=(n,i)=>{i=Object.assign({offset:0},i);for(let r=0;r<n.length;r++)if(n[r]!==t[r+i.offset])return!1;return!0};if(a([255,216,255]))return{ext:"jpg",mime:"image/jpeg"};if(a([137,80,78,71,13,10,26,10]))return{ext:"png",mime:"image/png"};if(a([71,73,70]))return{ext:"gif",mime:"image/gif"};if(a([87,69,66,80],{offset:8}))return{ext:"webp",mime:"image/webp"};if(a([70,76,73,70]))return{ext:"flif",mime:"image/flif"};if((a([73,73,42,0])||a([77,77,0,42]))&&a([67,82],{offset:8}))return{ext:"cr2",mime:"image/x-canon-cr2"};if(a([73,73,42,0])||a([77,77,0,42]))return{ext:"tif",mime:"image/tiff"};if(a([66,77]))return{ext:"bmp",mime:"image/bmp"};if(a([73,73,188]))return{ext:"jxr",mime:"image/vnd.ms-photo"};if(a([56,66,80,83]))return{ext:"psd",mime:"image/vnd.adobe.photoshop"};if(a([80,75,3,4])&&a([109,105,109,101,116,121,112,101,97,112,112,108,105,99,97,116,105,111,110,47,101,112,117,98,43,122,105,112],{offset:30}))return{ext:"epub",mime:"application/epub+zip"};if(a([80,75,3,4])&&a([77,69,84,65,45,73,78,70,47,109,111,122,105,108,108,97,46,114,115,97],{offset:30}))return{ext:"xpi",mime:"application/x-xpinstall"};if(a([80,75])&&(t[2]===3||t[2]===5||t[2]===7)&&(t[3]===4||t[3]===6||t[3]===8))return{ext:"zip",mime:"application/zip"};if(a([117,115,116,97,114],{offset:257}))return{ext:"tar",mime:"application/x-tar"};if(a([82,97,114,33,26,7])&&(t[6]===0||t[6]===1))return{ext:"rar",mime:"application/x-rar-compressed"};if(a([31,139,8]))return{ext:"gz",mime:"application/gzip"};if(a([66,90,104]))return{ext:"bz2",mime:"application/x-bzip2"};if(a([55,122,188,175,39,28]))return{ext:"7z",mime:"application/x-7z-compressed"};if(a([120,1]))return{ext:"dmg",mime:"application/x-apple-diskimage"};if(a([0,0,0])&&(t[3]===24||t[3]===32)&&a([102,116,121,112],{offset:4})||a([51,103,112,53])||a([0,0,0,28,102,116,121,112,109,112,52,50])&&a([109,112,52,49,109,112,52,50,105,115,111,109],{offset:16})||a([0,0,0,28,102,116,121,112,105,115,111,109])||a([0,0,0,28,102,116,121,112,109,112,52,50,0,0,0,0]))return{ext:"mp4",mime:"video/mp4"};if(a([0,0,0,28,102,116,121,112,77,52,86]))return{ext:"m4v",mime:"video/x-m4v"};if(a([77,84,104,100]))return{ext:"mid",mime:"audio/midi"};if(a([26,69,223,163])){let n=t.subarray(4,4100),i=n.findIndex((r,o,s)=>s[o]===66&&s[o+1]===130);if(i>=0){let r=i+3,o=s=>Array.from(s).every((l,u)=>n[r+u]===l.charCodeAt(0));if(o("matroska"))return{ext:"mkv",mime:"video/x-matroska"};if(o("webm"))return{ext:"webm",mime:"video/webm"}}}return a([0,0,0,20,102,116,121,112,113,116,32,32])||a([102,114,101,101],{offset:4})||a([102,116,121,112,113,116,32,32],{offset:4})||a([109,100,97,116],{offset:4})||a([119,105,100,101],{offset:4})?{ext:"mov",mime:"video/quicktime"}:a([82,73,70,70])&&a([65,86,73],{offset:8})?{ext:"avi",mime:"video/x-msvideo"}:a([48,38,178,117,142,102,207,17,166,217])?{ext:"wmv",mime:"video/x-ms-wmv"}:a([0,0,1,186])?{ext:"mpg",mime:"video/mpeg"}:a([73,68,51])||a([255,251])?{ext:"mp3",mime:"audio/mpeg"}:a([102,116,121,112,77,52,65],{offset:4})||a([77,52,65,32])?{ext:"m4a",mime:"audio/m4a"}:a([79,112,117,115,72,101,97,100],{offset:28})?{ext:"opus",mime:"audio/opus"}:a([79,103,103,83])?{ext:"ogg",mime:"audio/ogg"}:a([102,76,97,67])?{ext:"flac",mime:"audio/x-flac"}:a([82,73,70,70])&&a([87,65,86,69],{offset:8})?{ext:"wav",mime:"audio/x-wav"}:a([35,33,65,77,82,10])?{ext:"amr",mime:"audio/amr"}:a([37,80,68,70])?{ext:"pdf",mime:"application/pdf"}:a([77,90])?{ext:"exe",mime:"application/x-msdownload"}:(t[0]===67||t[0]===70)&&a([87,83],{offset:1})?{ext:"swf",mime:"application/x-shockwave-flash"}:a([123,92,114,116,102])?{ext:"rtf",mime:"application/rtf"}:a([0,97,115,109])?{ext:"wasm",mime:"application/wasm"}:a([119,79,70,70])&&(a([0,1,0,0],{offset:4})||a([79,84,84,79],{offset:4}))?{ext:"woff",mime:"font/woff"}:a([119,79,70,50])&&(a([0,1,0,0],{offset:4})||a([79,84,84,79],{offset:4}))?{ext:"woff2",mime:"font/woff2"}:a([76,80],{offset:34})&&(a([0,0,1],{offset:8})||a([1,0,2],{offset:8})||a([2,0,2],{offset:8}))?{ext:"eot",mime:"application/octet-stream"}:a([0,1,0,0,0])?{ext:"ttf",mime:"font/ttf"}:a([79,84,84,79,0])?{ext:"otf",mime:"font/otf"}:a([0,0,1,0])?{ext:"ico",mime:"image/x-icon"}:a([70,76,86,1])?{ext:"flv",mime:"video/x-flv"}:a([37,33])?{ext:"ps",mime:"application/postscript"}:a([253,55,122,88,90,0])?{ext:"xz",mime:"application/x-xz"}:a([83,81,76,105])?{ext:"sqlite",mime:"application/x-sqlite3"}:a([78,69,83,26])?{ext:"nes",mime:"application/x-nintendo-nes-rom"}:a([67,114,50,52])?{ext:"crx",mime:"application/x-google-chrome-extension"}:a([77,83,67,70])||a([73,83,99,40])?{ext:"cab",mime:"application/vnd.ms-cab-compressed"}:a([33,60,97,114,99,104,62,10,100,101,98,105,97,110,45,98,105,110,97,114,121])?{ext:"deb",mime:"application/x-deb"}:a([33,60,97,114,99,104,62])?{ext:"ar",mime:"application/x-unix-archive"}:a([237,171,238,219])?{ext:"rpm",mime:"application/x-rpm"}:a([31,160])||a([31,157])?{ext:"Z",mime:"application/x-compress"}:a([76,90,73,80])?{ext:"lz",mime:"application/x-lzip"}:a([208,207,17,224,161,177,26,225])?{ext:"msi",mime:"application/x-msi"}:a([6,14,43,52,2,5,1,1,13,1,2,1,1,2])?{ext:"mxf",mime:"application/mxf"}:a([71],{offset:4})&&(a([71],{offset:192})||a([71],{offset:196}))?{ext:"mts",mime:"video/mp2t"}:a([66,76,69,78,68,69,82])?{ext:"blend",mime:"application/x-blender"}:a([66,80,71,251])?{ext:"bpg",mime:"image/bpg"}:null}});var Ds=O((tH,Ey)=>{"use strict";var va=Ey.exports=function(e){return e!==null&&typeof e=="object"&&typeof e.pipe=="function"};va.writable=function(e){return va(e)&&e.writable!==!1&&typeof e._write=="function"&&typeof e._writableState=="object"};va.readable=function(e){return va(e)&&e.readable!==!1&&typeof e._read=="function"&&typeof e._readableState=="object"};va.duplex=function(e){return va.writable(e)&&va.readable(e)};va.transform=function(e){return va.duplex(e)&&typeof e._transform=="function"&&typeof e._transformState=="object"}});var ir=O((aH,kp)=>{"use strict";typeof process=="undefined"||!process.version||process.version.indexOf("v0.")===0||process.version.indexOf("v1.")===0&&process.version.indexOf("v1.8.")!==0?kp.exports={nextTick:d3}:kp.exports=process;function d3(e,t,a,n){if(typeof e!="function")throw new TypeError('"callback" argument must be a function');var i=arguments.length,r,o;switch(i){case 0:case 1:return process.nextTick(e);case 2:return process.nextTick(function(){e.call(null,t)});case 3:return process.nextTick(function(){e.call(null,t,a)});case 4:return process.nextTick(function(){e.call(null,t,a,n)});default:for(r=new Array(i-1),o=0;o<r.length;)r[o++]=arguments[o];return process.nextTick(function(){e.apply(null,r)})}}});var Zn=O(mt=>{function f3(e){return Array.isArray?Array.isArray(e):zs(e)==="[object Array]"}mt.isArray=f3;function m3(e){return typeof e=="boolean"}mt.isBoolean=m3;function h3(e){return e===null}mt.isNull=h3;function v3(e){return e==null}mt.isNullOrUndefined=v3;function b3(e){return typeof e=="number"}mt.isNumber=b3;function g3(e){return typeof e=="string"}mt.isString=g3;function x3(e){return typeof e=="symbol"}mt.isSymbol=x3;function y3(e){return e===void 0}mt.isUndefined=y3;function w3(e){return zs(e)==="[object RegExp]"}mt.isRegExp=w3;function E3(e){return typeof e=="object"&&e!==null}mt.isObject=E3;function S3(e){return zs(e)==="[object Date]"}mt.isDate=S3;function C3(e){return zs(e)==="[object Error]"||e instanceof Error}mt.isError=C3;function A3(e){return typeof e=="function"}mt.isFunction=A3;function I3(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"||typeof e=="symbol"||typeof e=="undefined"}mt.isPrimitive=I3;mt.isBuffer=require("buffer").Buffer.isBuffer;function zs(e){return Object.prototype.toString.call(e)}});var fn=O((iH,Fp)=>{typeof Object.create=="function"?Fp.exports=function(t,a){a&&(t.super_=a,t.prototype=Object.create(a.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:Fp.exports=function(t,a){if(a){t.super_=a;var n=function(){};n.prototype=a.prototype,t.prototype=new n,t.prototype.constructor=t}}});var Cy=O((rH,Sy)=>{var _3={}.toString;Sy.exports=Array.isArray||function(e){return _3.call(e)=="[object Array]"}});var Pp=O((oH,Ay)=>{Ay.exports=require("events").EventEmitter});var Hs=O((Op,_y)=>{var Gs=require("buffer"),ba=Gs.Buffer;function Iy(e,t){for(var a in e)t[a]=e[a]}ba.from&&ba.alloc&&ba.allocUnsafe&&ba.allocUnsafeSlow?_y.exports=Gs:(Iy(Gs,Op),Op.Buffer=qn);function qn(e,t,a){return ba(e,t,a)}Iy(ba,qn);qn.from=function(e,t,a){if(typeof e=="number")throw new TypeError("Argument must not be a number");return ba(e,t,a)};qn.alloc=function(e,t,a){if(typeof e!="number")throw new TypeError("Argument must be a number");var n=ba(e);return t!==void 0?typeof a=="string"?n.fill(t,a):n.fill(t):n.fill(0),n};qn.allocUnsafe=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return ba(e)};qn.allocUnsafeSlow=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return Gs.SlowBuffer(e)}});var ky=O((sH,Rp)=>{"use strict";function T3(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var Ty=Hs().Buffer,rr=require("util");function k3(e,t,a){e.copy(t,a)}Rp.exports=function(){function e(){T3(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(a){var n={data:a,next:null};this.length>0?this.tail.next=n:this.head=n,this.tail=n,++this.length},e.prototype.unshift=function(a){var n={data:a,next:this.head};this.length===0&&(this.tail=n),this.head=n,++this.length},e.prototype.shift=function(){if(this.length!==0){var a=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,a}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(a){if(this.length===0)return"";for(var n=this.head,i=""+n.data;n=n.next;)i+=a+n.data;return i},e.prototype.concat=function(a){if(this.length===0)return Ty.alloc(0);for(var n=Ty.allocUnsafe(a>>>0),i=this.head,r=0;i;)k3(i.data,n,r),r+=i.data.length,i=i.next;return n},e}();rr&&rr.inspect&&rr.inspect.custom&&(Rp.exports.prototype[rr.inspect.custom]=function(){var e=rr.inspect({length:this.length});return this.constructor.name+" "+e})});var Bp=O((lH,Fy)=>{"use strict";var Ws=ir();function F3(e,t){var a=this,n=this._readableState&&this._readableState.destroyed,i=this._writableState&&this._writableState.destroyed;return n||i?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,Ws.nextTick(Vs,this,e)):Ws.nextTick(Vs,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(r){!t&&r?a._writableState?a._writableState.errorEmitted||(a._writableState.errorEmitted=!0,Ws.nextTick(Vs,a,r)):Ws.nextTick(Vs,a,r):t&&t(r)}),this)}function P3(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function Vs(e,t){e.emit("error",t)}Fy.exports={destroy:F3,undestroy:P3}});var Gp=O((uH,Hy)=>{"use strict";var $n=ir();Hy.exports=Me;var O3=Cy(),or;Me.ReadableState=Ly;var cH=require("events").EventEmitter,By=function(e,t){return e.listeners(t).length},Dp=Pp(),sr=Hs().Buffer,R3=(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:{}).Uint8Array||function(){};function B3(e){return sr.from(e)}function N3(e){return sr.isBuffer(e)||e instanceof R3}var Ny=Object.create(Zn());Ny.inherits=fn();var Np=require("util"),Ce=void 0;Np&&Np.debuglog?Ce=Np.debuglog("stream"):Ce=function(){};var j3=ky(),jy=Bp(),Xn;Ny.inherits(Me,Dp);var jp=["error","close","destroy","pause","resume"];function L3(e,t,a){if(typeof e.prependListener=="function")return e.prependListener(t,a);!e._events||!e._events[t]?e.on(t,a):O3(e._events[t])?e._events[t].unshift(a):e._events[t]=[a,e._events[t]]}function Ly(e,t){or=or||ja(),e=e||{};var a=t instanceof or;this.objectMode=!!e.objectMode,a&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var n=e.highWaterMark,i=e.readableHighWaterMark,r=this.objectMode?16:16*1024;n||n===0?this.highWaterMark=n:a&&(i||i===0)?this.highWaterMark=i:this.highWaterMark=r,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new j3,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(Xn||(Xn=require("string_decoder/").StringDecoder),this.decoder=new Xn(e.encoding),this.encoding=e.encoding)}function Me(e){if(or=or||ja(),!(this instanceof Me))return new Me(e);this._readableState=new Ly(e,this),this.readable=!0,e&&(typeof e.read=="function"&&(this._read=e.read),typeof e.destroy=="function"&&(this._destroy=e.destroy)),Dp.call(this)}Object.defineProperty(Me.prototype,"destroyed",{get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){this._readableState&&(this._readableState.destroyed=e)}});Me.prototype.destroy=jy.destroy;Me.prototype._undestroy=jy.undestroy;Me.prototype._destroy=function(e,t){this.push(null),t(e)};Me.prototype.push=function(e,t){var a=this._readableState,n;return a.objectMode?n=!0:typeof e=="string"&&(t=t||a.defaultEncoding,t!==a.encoding&&(e=sr.from(e,t),t=""),n=!0),My(this,e,t,!1,n)};Me.prototype.unshift=function(e){return My(this,e,null,!0,!1)};function My(e,t,a,n,i){var r=e._readableState;if(t===null)r.reading=!1,G3(e,r);else{var o;i||(o=M3(r,t)),o?e.emit("error",o):r.objectMode||t&&t.length>0?(typeof t!="string"&&!r.objectMode&&Object.getPrototypeOf(t)!==sr.prototype&&(t=B3(t)),n?r.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):Lp(e,r,t,!0):r.ended?e.emit("error",new Error("stream.push() after EOF")):(r.reading=!1,r.decoder&&!a?(t=r.decoder.write(t),r.objectMode||t.length!==0?Lp(e,r,t,!1):Dy(e,r)):Lp(e,r,t,!1))):n||(r.reading=!1)}return D3(r)}function Lp(e,t,a,n){t.flowing&&t.length===0&&!t.sync?(e.emit("data",a),e.read(0)):(t.length+=t.objectMode?1:a.length,n?t.buffer.unshift(a):t.buffer.push(a),t.needReadable&&Us(e)),Dy(e,t)}function M3(e,t){var a;return!N3(t)&&typeof t!="string"&&t!==void 0&&!e.objectMode&&(a=new TypeError("Invalid non-string/buffer chunk")),a}function D3(e){return!e.ended&&(e.needReadable||e.length<e.highWaterMark||e.length===0)}Me.prototype.isPaused=function(){return this._readableState.flowing===!1};Me.prototype.setEncoding=function(e){return Xn||(Xn=require("string_decoder/").StringDecoder),this._readableState.decoder=new Xn(e),this._readableState.encoding=e,this};var Py=8388608;function z3(e){return e>=Py?e=Py:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function Oy(e,t){return e<=0||t.length===0&&t.ended?0:t.objectMode?1:e!==e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=z3(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}Me.prototype.read=function(e){Ce("read",e),e=parseInt(e,10);var t=this._readableState,a=e;if(e!==0&&(t.emittedReadable=!1),e===0&&t.needReadable&&(t.length>=t.highWaterMark||t.ended))return Ce("read: emitReadable",t.length,t.ended),t.length===0&&t.ended?Mp(this):Us(this),null;if(e=Oy(e,t),e===0&&t.ended)return t.length===0&&Mp(this),null;var n=t.needReadable;Ce("need readable",n),(t.length===0||t.length-e<t.highWaterMark)&&(n=!0,Ce("length less than watermark",n)),t.ended||t.reading?(n=!1,Ce("reading or ended",n)):n&&(Ce("do read"),t.reading=!0,t.sync=!0,t.length===0&&(t.needReadable=!0),this._read(t.highWaterMark),t.sync=!1,t.reading||(e=Oy(a,t)));var i;return e>0?i=zy(e,t):i=null,i===null?(t.needReadable=!0,e=0):t.length-=e,t.length===0&&(t.ended||(t.needReadable=!0),a!==e&&t.ended&&Mp(this)),i!==null&&this.emit("data",i),i};function G3(e,t){if(!t.ended){if(t.decoder){var a=t.decoder.end();a&&a.length&&(t.buffer.push(a),t.length+=t.objectMode?1:a.length)}t.ended=!0,Us(e)}}function Us(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(Ce("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?$n.nextTick(Ry,e):Ry(e))}function Ry(e){Ce("emit readable"),e.emit("readable"),zp(e)}function Dy(e,t){t.readingMore||(t.readingMore=!0,$n.nextTick(H3,e,t))}function H3(e,t){for(var a=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length<t.highWaterMark&&(Ce("maybeReadMore read 0"),e.read(0),a!==t.length);)a=t.length;t.readingMore=!1}Me.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))};Me.prototype.pipe=function(e,t){var a=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=e;break;case 1:n.pipes=[n.pipes,e];break;default:n.pipes.push(e);break}n.pipesCount+=1,Ce("pipe count=%d opts=%j",n.pipesCount,t);var i=(!t||t.end!==!1)&&e!==process.stdout&&e!==process.stderr,r=i?s:m;n.endEmitted?$n.nextTick(r):a.once("end",r),e.on("unpipe",o);function o(v,x){Ce("onunpipe"),v===a&&x&&x.hasUnpiped===!1&&(x.hasUnpiped=!0,c())}function s(){Ce("onend"),e.end()}var l=W3(a);e.on("drain",l);var u=!1;function c(){Ce("cleanup"),e.removeListener("close",d),e.removeListener("finish",h),e.removeListener("drain",l),e.removeListener("error",b),e.removeListener("unpipe",o),a.removeListener("end",s),a.removeListener("end",m),a.removeListener("data",p),u=!0,n.awaitDrain&&(!e._writableState||e._writableState.needDrain)&&l()}var f=!1;a.on("data",p);function p(v){Ce("ondata"),f=!1;var x=e.write(v);x===!1&&!f&&((n.pipesCount===1&&n.pipes===e||n.pipesCount>1&&Gy(n.pipes,e)!==-1)&&!u&&(Ce("false write response, pause",n.awaitDrain),n.awaitDrain++,f=!0),a.pause())}function b(v){Ce("onerror",v),m(),e.removeListener("error",b),By(e,"error")===0&&e.emit("error",v)}L3(e,"error",b);function d(){e.removeListener("finish",h),m()}e.once("close",d);function h(){Ce("onfinish"),e.removeListener("close",d),m()}e.once("finish",h);function m(){Ce("unpipe"),a.unpipe(e)}return e.emit("pipe",a),n.flowing||(Ce("pipe resume"),a.resume()),e};function W3(e){return function(){var t=e._readableState;Ce("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,t.awaitDrain===0&&By(e,"data")&&(t.flowing=!0,zp(e))}}Me.prototype.unpipe=function(e){var t=this._readableState,a={hasUnpiped:!1};if(t.pipesCount===0)return this;if(t.pipesCount===1)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,a),this);if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var r=0;r<i;r++)n[r].emit("unpipe",this,{hasUnpiped:!1});return this}var o=Gy(t.pipes,e);return o===-1?this:(t.pipes.splice(o,1),t.pipesCount-=1,t.pipesCount===1&&(t.pipes=t.pipes[0]),e.emit("unpipe",this,a),this)};Me.prototype.on=function(e,t){var a=Dp.prototype.on.call(this,e,t);if(e==="data")this._readableState.flowing!==!1&&this.resume();else if(e==="readable"){var n=this._readableState;!n.endEmitted&&!n.readableListening&&(n.readableListening=n.needReadable=!0,n.emittedReadable=!1,n.reading?n.length&&Us(this):$n.nextTick(V3,this))}return a};Me.prototype.addListener=Me.prototype.on;function V3(e){Ce("readable nexttick read 0"),e.read(0)}Me.prototype.resume=function(){var e=this._readableState;return e.flowing||(Ce("resume"),e.flowing=!0,U3(this,e)),this};function U3(e,t){t.resumeScheduled||(t.resumeScheduled=!0,$n.nextTick(J3,e,t))}function J3(e,t){t.reading||(Ce("resume read 0"),e.read(0)),t.resumeScheduled=!1,t.awaitDrain=0,e.emit("resume"),zp(e),t.flowing&&!t.reading&&e.read(0)}Me.prototype.pause=function(){return Ce("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(Ce("pause"),this._readableState.flowing=!1,this.emit("pause")),this};function zp(e){var t=e._readableState;for(Ce("flow",t.flowing);t.flowing&&e.read()!==null;);}Me.prototype.wrap=function(e){var t=this,a=this._readableState,n=!1;e.on("end",function(){if(Ce("wrapped end"),a.decoder&&!a.ended){var o=a.decoder.end();o&&o.length&&t.push(o)}t.push(null)}),e.on("data",function(o){if(Ce("wrapped data"),a.decoder&&(o=a.decoder.write(o)),!(a.objectMode&&o==null)&&!(!a.objectMode&&(!o||!o.length))){var s=t.push(o);s||(n=!0,e.pause())}});for(var i in e)this[i]===void 0&&typeof e[i]=="function"&&(this[i]=function(o){return function(){return e[o].apply(e,arguments)}}(i));for(var r=0;r<jp.length;r++)e.on(jp[r],this.emit.bind(this,jp[r]));return this._read=function(o){Ce("wrapped _read",o),n&&(n=!1,e.resume())},this};Object.defineProperty(Me.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}});Me._fromList=zy;function zy(e,t){if(t.length===0)return null;var a;return t.objectMode?a=t.buffer.shift():!e||e>=t.length?(t.decoder?a=t.buffer.join(""):t.buffer.length===1?a=t.buffer.head.data:a=t.buffer.concat(t.length),t.buffer.clear()):a=Z3(e,t.buffer,t.decoder),a}function Z3(e,t,a){var n;return e<t.head.data.length?(n=t.head.data.slice(0,e),t.head.data=t.head.data.slice(e)):e===t.head.data.length?n=t.shift():n=a?q3(e,t):X3(e,t),n}function q3(e,t){var a=t.head,n=1,i=a.data;for(e-=i.length;a=a.next;){var r=a.data,o=e>r.length?r.length:e;if(o===r.length?i+=r:i+=r.slice(0,e),e-=o,e===0){o===r.length?(++n,a.next?t.head=a.next:t.head=t.tail=null):(t.head=a,a.data=r.slice(o));break}++n}return t.length-=n,i}function X3(e,t){var a=sr.allocUnsafe(e),n=t.head,i=1;for(n.data.copy(a),e-=n.data.length;n=n.next;){var r=n.data,o=e>r.length?r.length:e;if(r.copy(a,a.length-e,0,o),e-=o,e===0){o===r.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=r.slice(o));break}++i}return t.length-=i,a}function Mp(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,$n.nextTick($3,t,e))}function $3(e,t){!e.endEmitted&&e.length===0&&(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function Gy(e,t){for(var a=0,n=e.length;a<n;a++)if(e[a]===t)return a;return-1}});var Vy=O((pH,Wy)=>{Wy.exports=Y3;function Y3(e,t){if(Hp("noDeprecation"))return e;var a=!1;function n(){if(!a){if(Hp("throwDeprecation"))throw new Error(t);Hp("traceDeprecation")?console.trace(t):console.warn(t),a=!0}return e.apply(this,arguments)}return n}function Hp(e){try{if(!global.localStorage)return!1}catch(a){return!1}var t=global.localStorage[e];return t==null?!1:String(t).toLowerCase()==="true"}});var Vp=O((dH,Ky)=>{"use strict";var mn=ir();Ky.exports=Ye;function Jy(e){var t=this;this.next=null,this.entry=null,this.finish=function(){h6(t,e)}}var K3=!process.browser&&["v0.10","v0.9."].indexOf(process.version.slice(0,5))>-1?setImmediate:mn.nextTick,Yn;Ye.WritableState=cr;var Zy=Object.create(Zn());Zy.inherits=fn();var Q3={deprecate:Vy()},qy=Pp(),Zs=Hs().Buffer,e6=(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:{}).Uint8Array||function(){};function t6(e){return Zs.from(e)}function a6(e){return Zs.isBuffer(e)||e instanceof e6}var Xy=Bp();Zy.inherits(Ye,qy);function n6(){}function cr(e,t){Yn=Yn||ja(),e=e||{};var a=t instanceof Yn;this.objectMode=!!e.objectMode,a&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var n=e.highWaterMark,i=e.writableHighWaterMark,r=this.objectMode?16:16*1024;n||n===0?this.highWaterMark=n:a&&(i||i===0)?this.highWaterMark=i:this.highWaterMark=r,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var o=e.decodeStrings===!1;this.decodeStrings=!o,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(s){u6(t,s)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new Jy(this)}cr.prototype.getBuffer=function(){for(var t=this.bufferedRequest,a=[];t;)a.push(t),t=t.next;return a};(function(){try{Object.defineProperty(cr.prototype,"buffer",{get:Q3.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}})();var Js;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(Js=Function.prototype[Symbol.hasInstance],Object.defineProperty(Ye,Symbol.hasInstance,{value:function(e){return Js.call(this,e)?!0:this!==Ye?!1:e&&e._writableState instanceof cr}})):Js=function(e){return e instanceof this};function Ye(e){if(Yn=Yn||ja(),!Js.call(Ye,this)&&!(this instanceof Yn))return new Ye(e);this._writableState=new cr(e,this),this.writable=!0,e&&(typeof e.write=="function"&&(this._write=e.write),typeof e.writev=="function"&&(this._writev=e.writev),typeof e.destroy=="function"&&(this._destroy=e.destroy),typeof e.final=="function"&&(this._final=e.final)),qy.call(this)}Ye.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))};function i6(e,t){var a=new Error("write after end");e.emit("error",a),mn.nextTick(t,a)}function r6(e,t,a,n){var i=!0,r=!1;return a===null?r=new TypeError("May not write null values to stream"):typeof a!="string"&&a!==void 0&&!t.objectMode&&(r=new TypeError("Invalid non-string/buffer chunk")),r&&(e.emit("error",r),mn.nextTick(n,r),i=!1),i}Ye.prototype.write=function(e,t,a){var n=this._writableState,i=!1,r=!n.objectMode&&a6(e);return r&&!Zs.isBuffer(e)&&(e=t6(e)),typeof t=="function"&&(a=t,t=null),r?t="buffer":t||(t=n.defaultEncoding),typeof a!="function"&&(a=n6),n.ended?i6(this,a):(r||r6(this,n,e,a))&&(n.pendingcb++,i=s6(this,n,r,e,t,a)),i};Ye.prototype.cork=function(){var e=this._writableState;e.corked++};Ye.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,!e.writing&&!e.corked&&!e.bufferProcessing&&e.bufferedRequest&&$y(this,e))};Ye.prototype.setDefaultEncoding=function(t){if(typeof t=="string"&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this};function o6(e,t,a){return!e.objectMode&&e.decodeStrings!==!1&&typeof t=="string"&&(t=Zs.from(t,a)),t}Object.defineProperty(Ye.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function s6(e,t,a,n,i,r){if(!a){var o=o6(t,n,i);n!==o&&(a=!0,i="buffer",n=o)}var s=t.objectMode?1:n.length;t.length+=s;var l=t.length<t.highWaterMark;if(l||(t.needDrain=!0),t.writing||t.corked){var u=t.lastBufferedRequest;t.lastBufferedRequest={chunk:n,encoding:i,isBuf:a,callback:r,next:null},u?u.next=t.lastBufferedRequest:t.bufferedRequest=t.lastBufferedRequest,t.bufferedRequestCount+=1}else Wp(e,t,!1,s,n,i,r);return l}function Wp(e,t,a,n,i,r,o){t.writelen=n,t.writecb=o,t.writing=!0,t.sync=!0,a?e._writev(i,t.onwrite):e._write(i,r,t.onwrite),t.sync=!1}function l6(e,t,a,n,i){--t.pendingcb,a?(mn.nextTick(i,n),mn.nextTick(lr,e,t),e._writableState.errorEmitted=!0,e.emit("error",n)):(i(n),e._writableState.errorEmitted=!0,e.emit("error",n),lr(e,t))}function c6(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}function u6(e,t){var a=e._writableState,n=a.sync,i=a.writecb;if(c6(a),t)l6(e,a,n,t,i);else{var r=Yy(a);!r&&!a.corked&&!a.bufferProcessing&&a.bufferedRequest&&$y(e,a),n?K3(Uy,e,a,r,i):Uy(e,a,r,i)}}function Uy(e,t,a,n){a||p6(e,t),t.pendingcb--,n(),lr(e,t)}function p6(e,t){t.length===0&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}function $y(e,t){t.bufferProcessing=!0;var a=t.bufferedRequest;if(e._writev&&a&&a.next){var n=t.bufferedRequestCount,i=new Array(n),r=t.corkedRequestsFree;r.entry=a;for(var o=0,s=!0;a;)i[o]=a,a.isBuf||(s=!1),a=a.next,o+=1;i.allBuffers=s,Wp(e,t,!0,t.length,i,"",r.finish),t.pendingcb++,t.lastBufferedRequest=null,r.next?(t.corkedRequestsFree=r.next,r.next=null):t.corkedRequestsFree=new Jy(t),t.bufferedRequestCount=0}else{for(;a;){var l=a.chunk,u=a.encoding,c=a.callback,f=t.objectMode?1:l.length;if(Wp(e,t,!1,f,l,u,c),a=a.next,t.bufferedRequestCount--,t.writing)break}a===null&&(t.lastBufferedRequest=null)}t.bufferedRequest=a,t.bufferProcessing=!1}Ye.prototype._write=function(e,t,a){a(new Error("_write() is not implemented"))};Ye.prototype._writev=null;Ye.prototype.end=function(e,t,a){var n=this._writableState;typeof e=="function"?(a=e,e=null,t=null):typeof t=="function"&&(a=t,t=null),e!=null&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||m6(this,n,a)};function Yy(e){return e.ending&&e.length===0&&e.bufferedRequest===null&&!e.finished&&!e.writing}function d6(e,t){e._final(function(a){t.pendingcb--,a&&e.emit("error",a),t.prefinished=!0,e.emit("prefinish"),lr(e,t)})}function f6(e,t){!t.prefinished&&!t.finalCalled&&(typeof e._final=="function"?(t.pendingcb++,t.finalCalled=!0,mn.nextTick(d6,e,t)):(t.prefinished=!0,e.emit("prefinish")))}function lr(e,t){var a=Yy(t);return a&&(f6(e,t),t.pendingcb===0&&(t.finished=!0,e.emit("finish"))),a}function m6(e,t,a){t.ending=!0,lr(e,t),a&&(t.finished?mn.nextTick(a):e.once("finish",a)),t.ended=!0,e.writable=!1}function h6(e,t,a){var n=e.entry;for(e.entry=null;n;){var i=n.callback;t.pendingcb--,i(a),n=n.next}t.corkedRequestsFree.next=e}Object.defineProperty(Ye.prototype,"destroyed",{get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}});Ye.prototype.destroy=Xy.destroy;Ye.prototype._undestroy=Xy.undestroy;Ye.prototype._destroy=function(e,t){this.end(),t(e)}});var ja=O((fH,aw)=>{"use strict";var Qy=ir(),v6=Object.keys||function(e){var t=[];for(var a in e)t.push(a);return t};aw.exports=ga;var ew=Object.create(Zn());ew.inherits=fn();var tw=Gp(),Jp=Vp();ew.inherits(ga,tw);for(Up=v6(Jp.prototype),qs=0;qs<Up.length;qs++)Xs=Up[qs],ga.prototype[Xs]||(ga.prototype[Xs]=Jp.prototype[Xs]);var Up,Xs,qs;function ga(e){if(!(this instanceof ga))return new ga(e);tw.call(this,e),Jp.call(this,e),e&&e.readable===!1&&(this.readable=!1),e&&e.writable===!1&&(this.writable=!1),this.allowHalfOpen=!0,e&&e.allowHalfOpen===!1&&(this.allowHalfOpen=!1),this.once("end",b6)}Object.defineProperty(ga.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function b6(){this.allowHalfOpen||this._writableState.ended||Qy.nextTick(g6,this)}function g6(e){e.end()}Object.defineProperty(ga.prototype,"destroyed",{get:function(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set:function(e){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=e,this._writableState.destroyed=e)}});ga.prototype._destroy=function(e,t){this.push(null),this.end(),Qy.nextTick(t,e)}});var iw=O((mH,nw)=>{nw.exports=ja()});var ow=O((hH,rw)=>{var Zp=iw(),x6=require("util"),Kn=Bs().Buffer;function Je(e){if(!(this instanceof Je))return new Je(e);if(this._bufs=[],this.length=0,typeof e=="function"){this._callback=e;var t=function(n){this._callback&&(this._callback(n),this._callback=null)}.bind(this);this.on("pipe",function(n){n.on("error",t)}),this.on("unpipe",function(n){n.removeListener("error",t)})}else this.append(e);Zp.call(this)}x6.inherits(Je,Zp);Je.prototype._offset=function(t){var a=0,n=0,i;if(t===0)return[0,0];for(;n<this._bufs.length;n++){if(i=a+this._bufs[n].length,t<i||n==this._bufs.length-1)return[n,t-a];a=i}};Je.prototype.append=function(t){var a=0;if(Kn.isBuffer(t))this._appendBuffer(t);else if(Array.isArray(t))for(;a<t.length;a++)this.append(t[a]);else if(t instanceof Je)for(;a<t._bufs.length;a++)this.append(t._bufs[a]);else t!=null&&(typeof t=="number"&&(t=t.toString()),this._appendBuffer(Kn.from(t)));return this};Je.prototype._appendBuffer=function(t){this._bufs.push(t),this.length+=t.length};Je.prototype._write=function(t,a,n){this._appendBuffer(t),typeof n=="function"&&n()};Je.prototype._read=function(t){if(!this.length)return this.push(null);t=Math.min(t,this.length),this.push(this.slice(0,t)),this.consume(t)};Je.prototype.end=function(t){Zp.prototype.end.call(this,t),this._callback&&(this._callback(null,this.slice()),this._callback=null)};Je.prototype.get=function(t){return this.slice(t,t+1)[0]};Je.prototype.slice=function(t,a){return typeof t=="number"&&t<0&&(t+=this.length),typeof a=="number"&&a<0&&(a+=this.length),this.copy(null,0,t,a)};Je.prototype.copy=function(t,a,n,i){if((typeof n!="number"||n<0)&&(n=0),(typeof i!="number"||i>this.length)&&(i=this.length),n>=this.length||i<=0)return t||Kn.alloc(0);var r=!!t,o=this._offset(n),s=i-n,l=s,u=r&&a||0,c=o[1],f,p;if(n===0&&i==this.length){if(!r)return this._bufs.length===1?this._bufs[0]:Kn.concat(this._bufs,this.length);for(p=0;p<this._bufs.length;p++)this._bufs[p].copy(t,u),u+=this._bufs[p].length;return t}if(l<=this._bufs[o[0]].length-c)return r?this._bufs[o[0]].copy(t,a,c,c+l):this._bufs[o[0]].slice(c,c+l);for(r||(t=Kn.allocUnsafe(s)),p=o[0];p<this._bufs.length;p++){if(f=this._bufs[p].length-c,l>f)this._bufs[p].copy(t,u,c),u+=f;else{this._bufs[p].copy(t,u,c,c+l),u+=f;break}l-=f,c&&(c=0)}return t.length>u?t.slice(0,u):t};Je.prototype.shallowSlice=function(t,a){t=t||0,a=a||this.length,t<0&&(t+=this.length),a<0&&(a+=this.length);var n=this._offset(t),i=this._offset(a),r=this._bufs.slice(n[0],i[0]+1);return i[1]==0?r.pop():r[r.length-1]=r[r.length-1].slice(0,i[1]),n[1]!=0&&(r[0]=r[0].slice(n[1])),new Je(r)};Je.prototype.toString=function(t,a,n){return this.slice(a,n).toString(t)};Je.prototype.consume=function(t){if(t=Math.trunc(t),Number.isNaN(t)||t<=0)return this;for(;this._bufs.length;)if(t>=this._bufs[0].length)t-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(t),this.length-=t;break}return this};Je.prototype.duplicate=function(){for(var t=0,a=new Je;t<this._bufs.length;t++)a.append(this._bufs[t]);return a};Je.prototype.destroy=function(){this._bufs.length=0,this.length=0,this.push(null)};(function(){var e={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1};for(var t in e)(function(a){Je.prototype[a]=function(n){return this.slice(n,n+e[a])[a](0)}})(t)})();rw.exports=Je});var lw=O((vH,sw)=>{sw.exports=w6;var y6=Object.prototype.hasOwnProperty;function w6(){for(var e={},t=0;t<arguments.length;t++){var a=arguments[t];for(var n in a)y6.call(a,n)&&(e[n]=a[n])}return e}});var qp=O((bH,uw)=>{uw.exports=S6;var cw=Buffer.from&&Buffer.from!==Uint8Array.from?Buffer.from:E6;function E6(e,t){return new Buffer(e,t)}function S6(e,t){if(Buffer.isBuffer(e))return e;if(typeof e=="string")return cw(e,t);if(Array.isArray(e))return cw(e);throw new Error("Input should be a buffer or a string")}});var dw=O((gH,pw)=>{var C6=function(){try{if(!Buffer.isEncoding("latin1"))return!1;var e=Buffer.alloc?Buffer.alloc(4):new Buffer(4);return e.fill("ab","ucs2"),e.toString("hex")==="61006200"}catch(t){return!1}}();function A6(e){return e.length===1&&e.charCodeAt(0)<256}function $s(e,t,a,n){if(a<0||n>e.length)throw new RangeError("Out of range index");return a=a>>>0,n=n===void 0?e.length:n>>>0,n>a&&e.fill(t,a,n),e}function I6(e,t,a,n){if(a<0||n>e.length)throw new RangeError("Out of range index");if(n<=a)return e;a=a>>>0,n=n===void 0?e.length:n>>>0;for(var i=a,r=t.length;i<=n-r;)t.copy(e,i),i+=r;return i!==n&&t.copy(e,i,0,n-i),e}function _6(e,t,a,n,i){if(C6)return e.fill(t,a,n,i);if(typeof t=="number")return $s(e,t,a,n);if(typeof t=="string"){if(typeof a=="string"?(i=a,a=0,n=e.length):typeof n=="string"&&(i=n,n=e.length),i!==void 0&&typeof i!="string")throw new TypeError("encoding must be a string");if(i==="latin1"&&(i="binary"),typeof i=="string"&&!Buffer.isEncoding(i))throw new TypeError("Unknown encoding: "+i);if(t==="")return $s(e,0,a,n);if(A6(t))return $s(e,t.charCodeAt(0),a,n);t=new Buffer(t,i)}return Buffer.isBuffer(t)?I6(e,t,a,n):$s(e,0,a,n)}pw.exports=_6});var mw=O((xH,fw)=>{function T6(e){if(typeof e!="number")throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative');return Buffer.allocUnsafe?Buffer.allocUnsafe(e):new Buffer(e)}fw.exports=T6});var Xp=O((yH,vw)=>{var hw=dw(),k6=mw();vw.exports=function(t,a,n){if(typeof t!="number")throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative');if(Buffer.alloc)return Buffer.alloc(t,a,n);var i=k6(t);return t===0?i:a===void 0?hw(i,0):(typeof n!="string"&&(n=void 0),hw(i,a,n))}});var Yp=O(ei=>{var F6=qp(),P6=Xp(),O6="0000000000000000000",R6="7777777777777777777",bw="0".charCodeAt(0),B6="ustar\x0000",N6=parseInt("7777",8),j6=function(e,t,a){return typeof e!="number"?a:(e=~~e,e>=t?t:e>=0||(e+=t,e>=0)?e:0)},L6=function(e){switch(e){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null},M6=function(e){switch(e){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0},gw=function(e,t,a,n){for(;a<n;a++)if(e[a]===t)return a;return n},xw=function(e){for(var t=256,a=0;a<148;a++)t+=e[a];for(var n=156;n<512;n++)t+=e[n];return t},La=function(e,t){return e=e.toString(8),e.length>t?R6.slice(0,t)+" ":O6.slice(0,t-e.length)+e+" "};function D6(e){var t;if(e[0]===128)t=!0;else if(e[0]===255)t=!1;else return null;for(var a=!1,n=[],i=e.length-1;i>0;i--){var r=e[i];t?n.push(r):a&&r===0?n.push(0):a?(a=!1,n.push(256-r)):n.push(255-r)}var o=0,s=n.length;for(i=0;i<s;i++)o+=n[i]*Math.pow(256,i);return t?o:-1*o}var Ma=function(e,t,a){if(e=e.slice(t,t+a),t=0,e[t]&128)return D6(e);for(;t<e.length&&e[t]===32;)t++;for(var n=j6(gw(e,32,t,e.length),e.length,e.length);t<n&&e[t]===0;)t++;return n===t?0:parseInt(e.slice(t,n).toString(),8)},Qn=function(e,t,a,n){return e.slice(t,gw(e,0,t,t+a)).toString(n)},$p=function(e){var t=Buffer.byteLength(e),a=Math.floor(Math.log(t)/Math.log(10))+1;return t+a>=Math.pow(10,a)&&a++,t+a+e};ei.decodeLongPath=function(e,t){return Qn(e,0,e.length,t)};ei.encodePax=function(e){var t="";e.name&&(t+=$p(" path="+e.name+` +`}return o}e.exports=n},function(e,t,a){function n(){"use strict";var i=this.runtime,r=this.lib,o=this.compiler.Compiler,s=this.parser.Parser,l=this.nodes,u=this.lexer,c=i.contextOrFrameLookup,f=i.memberLookup,p,b;o&&(p=o.prototype.assertType),s&&(b=s.prototype.parseAggregate);function d(){i.contextOrFrameLookup=c,i.memberLookup=f,o&&(o.prototype.assertType=p),s&&(s.prototype.parseAggregate=b)}i.contextOrFrameLookup=function(C,y,S){var A=c.apply(this,arguments);if(A!==void 0)return A;switch(S){case"True":return!0;case"False":return!1;case"None":return null;default:return}};function m(w){return{index:w.index,lineno:w.lineno,colno:w.colno}}if(l&&o&&s){var h=l.Node.extend("Slice",{fields:["start","stop","step"],init:function(C,y,S,A,_){S=S||new l.Literal(C,y,null),A=A||new l.Literal(C,y,null),_=_||new l.Literal(C,y,1),this.parent(C,y,S,A,_)}});o.prototype.assertType=function(C){C instanceof h||p.apply(this,arguments)},o.prototype.compileSlice=function(C,y){this._emit("("),this._compileExpression(C.start,y),this._emit("),("),this._compileExpression(C.stop,y),this._emit("),("),this._compileExpression(C.step,y),this._emit(")")},s.prototype.parseAggregate=function(){var C=this,y=m(this.tokens);y.colno--,y.index--;try{return b.apply(this)}catch(L){var S=m(this.tokens),A=function(){return r._assign(C.tokens,S),L};r._assign(this.tokens,y),this.peeked=!1;var _=this.peekToken();if(_.type!==u.TOKEN_LEFT_BRACKET)throw A();this.nextToken();for(var P=new h(_.lineno,_.colno),F=!1,B=0;B<=P.fields.length&&!this.skip(u.TOKEN_RIGHT_BRACKET);B++){if(B===P.fields.length)if(F)this.fail("parseSlice: too many slice components",_.lineno,_.colno);else break;if(this.skip(u.TOKEN_COLON))F=!0;else{var j=P.fields[B];P[j]=this.parseExpression(),F=this.skip(u.TOKEN_COLON)||F}}if(!F)throw A();return new l.Array(_.lineno,_.colno,[P])}}}function v(w,C,y,S){w=w||[],C===null&&(C=S<0?w.length-1:0),y===null?y=S<0?-1:w.length:y<0&&(y+=w.length),C<0&&(C+=w.length);for(var A=[],_=C;!(_<0||_>w.length||S>0&&_>=y||S<0&&_<=y);_+=S)A.push(i.memberLookup(w,_));return A}function x(w,C){return Object.prototype.hasOwnProperty.call(w,C)}var E={pop:function(C){if(C===void 0)return this.pop();if(C>=this.length||C<0)throw new Error("KeyError");return this.splice(C,1)},append:function(C){return this.push(C)},remove:function(C){for(var y=0;y<this.length;y++)if(this[y]===C)return this.splice(y,1);throw new Error("ValueError")},count:function(C){for(var y=0,S=0;S<this.length;S++)this[S]===C&&y++;return y},index:function(C){var y;if((y=this.indexOf(C))===-1)throw new Error("ValueError");return y},find:function(C){return this.indexOf(C)},insert:function(C,y){return this.splice(C,0,y)}},g={items:function(){return r._entries(this)},values:function(){return r._values(this)},keys:function(){return r.keys(this)},get:function(C,y){var S=this[C];return S===void 0&&(S=y),S},has_key:function(C){return x(this,C)},pop:function(C,y){var S=this[C];if(S===void 0&&y!==void 0)S=y;else{if(S===void 0)throw new Error("KeyError");delete this[C]}return S},popitem:function(){var C=r.keys(this);if(!C.length)throw new Error("KeyError");var y=C[0],S=this[y];return delete this[y],[y,S]},setdefault:function(C,y){return y===void 0&&(y=null),C in this||(this[C]=y),this[C]},update:function(C){return r._assign(this,C),null}};return g.iteritems=g.items,g.itervalues=g.values,g.iterkeys=g.keys,i.memberLookup=function(C,y,S){return arguments.length===4?v.apply(this,arguments):(C=C||{},r.isArray(C)&&x(E,y)?E[y].bind(C):r.isObject(C)&&x(g,y)?g[y].bind(C):f.apply(this,arguments))},d}e.exports=n}])})});var Bs=O((Sp,ey)=>{var Rs=require("buffer"),ea=Rs.Buffer;function Qx(e,t){for(var a in e)t[a]=e[a]}ea.from&&ea.alloc&&ea.allocUnsafe&&ea.allocUnsafeSlow?ey.exports=Rs:(Qx(Rs,Sp),Sp.Buffer=pn);function pn(e,t,a){return ea(e,t,a)}pn.prototype=Object.create(ea.prototype);Qx(ea,pn);pn.from=function(e,t,a){if(typeof e=="number")throw new TypeError("Argument must not be a number");return ea(e,t,a)};pn.alloc=function(e,t,a){if(typeof e!="number")throw new TypeError("Argument must be a number");var n=ea(e);return t!==void 0?typeof a=="string"?n.fill(t,a):n.fill(t):n.fill(0),n};pn.allocUnsafe=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return ea(e)};pn.allocUnsafeSlow=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return Rs.SlowBuffer(e)}});var oy=O((JG,Cp)=>{"use strict";Cp.exports=VO;Cp.exports.parse=qO;var ty=require("path").basename,BO=Bs().Buffer,NO=/[\x00-\x20"'()*,/:;<=>?@[\\\]{}\x7f]/g,jO=/%[0-9A-Fa-f]{2}/,LO=/%([0-9A-Fa-f]{2})/g,ny=/[^\x20-\x7e\xa0-\xff]/g,MO=/\\([\u0000-\u007f])/g,DO=/([\\"])/g,ay=/;[\x09\x20]*([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*=[\x09\x20]*("(?:[\x20!\x23-\x5b\x5d-\x7e\x80-\xff]|\\[\x20-\x7e])*"|[!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*/g,zO=/^[\x20-\x7e\x80-\xff]+$/,GO=/^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/,HO=/^([A-Za-z0-9!#$%&+\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/,WO=/^([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*(?:$|;)/;function VO(e,t){var a=t||{},n=a.type||"attachment",i=UO(e,a.fallback);return JO(new ry(n,i))}function UO(e,t){if(e!==void 0){var a={};if(typeof e!="string")throw new TypeError("filename must be a string");if(t===void 0&&(t=!0),typeof t!="string"&&typeof t!="boolean")throw new TypeError("fallback must be a string or boolean");if(typeof t=="string"&&ny.test(t))throw new TypeError("fallback must be ISO-8859-1 string");var n=ty(e),i=zO.test(n),r=typeof t!="string"?t&&iy(n):ty(t),o=typeof r=="string"&&r!==n;return(o||!i||jO.test(n))&&(a["filename*"]=n),(i||o)&&(a.filename=o?r:n),a}}function JO(e){var t=e.parameters,a=e.type;if(!a||typeof a!="string"||!GO.test(a))throw new TypeError("invalid type");var n=String(a).toLowerCase();if(t&&typeof t=="object")for(var i,r=Object.keys(t).sort(),o=0;o<r.length;o++){i=r[o];var s=i.substr(-1)==="*"?KO(t[i]):YO(t[i]);n+="; "+i+"="+s}return n}function ZO(e){var t=HO.exec(e);if(!t)throw new TypeError("invalid extended field value");var a=t[1].toLowerCase(),n=t[2],i,r=n.replace(LO,XO);switch(a){case"iso-8859-1":i=iy(r);break;case"utf-8":i=BO.from(r,"binary").toString("utf8");break;default:throw new TypeError("unsupported charset in extended field")}return i}function iy(e){return String(e).replace(ny,"?")}function qO(e){if(!e||typeof e!="string")throw new TypeError("argument string is required");var t=WO.exec(e);if(!t)throw new TypeError("invalid type format");var a=t[0].length,n=t[1].toLowerCase(),i,r=[],o={},s;for(a=ay.lastIndex=t[0].substr(-1)===";"?a-1:a;t=ay.exec(e);){if(t.index!==a)throw new TypeError("invalid parameter format");if(a+=t[0].length,i=t[1].toLowerCase(),s=t[2],r.indexOf(i)!==-1)throw new TypeError("invalid duplicate parameter");if(r.push(i),i.indexOf("*")+1===i.length){i=i.slice(0,-1),s=ZO(s),o[i]=s;continue}typeof o[i]!="string"&&(s[0]==='"'&&(s=s.substr(1,s.length-2).replace(MO,"$1")),o[i]=s)}if(a!==-1&&a!==e.length)throw new TypeError("invalid parameter format");return new ry(n,o)}function XO(e,t){return String.fromCharCode(parseInt(t,16))}function $O(e){return"%"+String(e).charCodeAt(0).toString(16).toUpperCase()}function YO(e){var t=String(e);return'"'+t.replace(DO,"\\$1")+'"'}function KO(e){var t=String(e),a=encodeURIComponent(t).replace(NO,$O);return"UTF-8''"+a}function ry(e,t){this.type=e,this.parameters=t}});var ly=O((ZG,sy)=>{"use strict";sy.exports=e=>{let t=new Uint8Array(e);if(!(t&&t.length>1))return null;let a=(n,i)=>{i=Object.assign({offset:0},i);for(let r=0;r<n.length;r++)if(n[r]!==t[r+i.offset])return!1;return!0};if(a([255,216,255]))return{ext:"jpg",mime:"image/jpeg"};if(a([137,80,78,71,13,10,26,10]))return{ext:"png",mime:"image/png"};if(a([71,73,70]))return{ext:"gif",mime:"image/gif"};if(a([87,69,66,80],{offset:8}))return{ext:"webp",mime:"image/webp"};if(a([70,76,73,70]))return{ext:"flif",mime:"image/flif"};if((a([73,73,42,0])||a([77,77,0,42]))&&a([67,82],{offset:8}))return{ext:"cr2",mime:"image/x-canon-cr2"};if(a([73,73,42,0])||a([77,77,0,42]))return{ext:"tif",mime:"image/tiff"};if(a([66,77]))return{ext:"bmp",mime:"image/bmp"};if(a([73,73,188]))return{ext:"jxr",mime:"image/vnd.ms-photo"};if(a([56,66,80,83]))return{ext:"psd",mime:"image/vnd.adobe.photoshop"};if(a([80,75,3,4])&&a([109,105,109,101,116,121,112,101,97,112,112,108,105,99,97,116,105,111,110,47,101,112,117,98,43,122,105,112],{offset:30}))return{ext:"epub",mime:"application/epub+zip"};if(a([80,75,3,4])&&a([77,69,84,65,45,73,78,70,47,109,111,122,105,108,108,97,46,114,115,97],{offset:30}))return{ext:"xpi",mime:"application/x-xpinstall"};if(a([80,75])&&(t[2]===3||t[2]===5||t[2]===7)&&(t[3]===4||t[3]===6||t[3]===8))return{ext:"zip",mime:"application/zip"};if(a([117,115,116,97,114],{offset:257}))return{ext:"tar",mime:"application/x-tar"};if(a([82,97,114,33,26,7])&&(t[6]===0||t[6]===1))return{ext:"rar",mime:"application/x-rar-compressed"};if(a([31,139,8]))return{ext:"gz",mime:"application/gzip"};if(a([66,90,104]))return{ext:"bz2",mime:"application/x-bzip2"};if(a([55,122,188,175,39,28]))return{ext:"7z",mime:"application/x-7z-compressed"};if(a([120,1]))return{ext:"dmg",mime:"application/x-apple-diskimage"};if(a([0,0,0])&&(t[3]===24||t[3]===32)&&a([102,116,121,112],{offset:4})||a([51,103,112,53])||a([0,0,0,28,102,116,121,112,109,112,52,50])&&a([109,112,52,49,109,112,52,50,105,115,111,109],{offset:16})||a([0,0,0,28,102,116,121,112,105,115,111,109])||a([0,0,0,28,102,116,121,112,109,112,52,50,0,0,0,0]))return{ext:"mp4",mime:"video/mp4"};if(a([0,0,0,28,102,116,121,112,77,52,86]))return{ext:"m4v",mime:"video/x-m4v"};if(a([77,84,104,100]))return{ext:"mid",mime:"audio/midi"};if(a([26,69,223,163])){let n=t.subarray(4,4100),i=n.findIndex((r,o,s)=>s[o]===66&&s[o+1]===130);if(i>=0){let r=i+3,o=s=>Array.from(s).every((l,u)=>n[r+u]===l.charCodeAt(0));if(o("matroska"))return{ext:"mkv",mime:"video/x-matroska"};if(o("webm"))return{ext:"webm",mime:"video/webm"}}}return a([0,0,0,20,102,116,121,112,113,116,32,32])||a([102,114,101,101],{offset:4})||a([102,116,121,112,113,116,32,32],{offset:4})||a([109,100,97,116],{offset:4})||a([119,105,100,101],{offset:4})?{ext:"mov",mime:"video/quicktime"}:a([82,73,70,70])&&a([65,86,73],{offset:8})?{ext:"avi",mime:"video/x-msvideo"}:a([48,38,178,117,142,102,207,17,166,217])?{ext:"wmv",mime:"video/x-ms-wmv"}:a([0,0,1,186])?{ext:"mpg",mime:"video/mpeg"}:a([73,68,51])||a([255,251])?{ext:"mp3",mime:"audio/mpeg"}:a([102,116,121,112,77,52,65],{offset:4})||a([77,52,65,32])?{ext:"m4a",mime:"audio/m4a"}:a([79,112,117,115,72,101,97,100],{offset:28})?{ext:"opus",mime:"audio/opus"}:a([79,103,103,83])?{ext:"ogg",mime:"audio/ogg"}:a([102,76,97,67])?{ext:"flac",mime:"audio/x-flac"}:a([82,73,70,70])&&a([87,65,86,69],{offset:8})?{ext:"wav",mime:"audio/x-wav"}:a([35,33,65,77,82,10])?{ext:"amr",mime:"audio/amr"}:a([37,80,68,70])?{ext:"pdf",mime:"application/pdf"}:a([77,90])?{ext:"exe",mime:"application/x-msdownload"}:(t[0]===67||t[0]===70)&&a([87,83],{offset:1})?{ext:"swf",mime:"application/x-shockwave-flash"}:a([123,92,114,116,102])?{ext:"rtf",mime:"application/rtf"}:a([0,97,115,109])?{ext:"wasm",mime:"application/wasm"}:a([119,79,70,70])&&(a([0,1,0,0],{offset:4})||a([79,84,84,79],{offset:4}))?{ext:"woff",mime:"application/font-woff"}:a([119,79,70,50])&&(a([0,1,0,0],{offset:4})||a([79,84,84,79],{offset:4}))?{ext:"woff2",mime:"application/font-woff"}:a([76,80],{offset:34})&&(a([0,0,1],{offset:8})||a([1,0,2],{offset:8})||a([2,0,2],{offset:8}))?{ext:"eot",mime:"application/octet-stream"}:a([0,1,0,0,0])?{ext:"ttf",mime:"application/font-sfnt"}:a([79,84,84,79,0])?{ext:"otf",mime:"application/font-sfnt"}:a([0,0,1,0])?{ext:"ico",mime:"image/x-icon"}:a([70,76,86,1])?{ext:"flv",mime:"video/x-flv"}:a([37,33])?{ext:"ps",mime:"application/postscript"}:a([253,55,122,88,90,0])?{ext:"xz",mime:"application/x-xz"}:a([83,81,76,105])?{ext:"sqlite",mime:"application/x-sqlite3"}:a([78,69,83,26])?{ext:"nes",mime:"application/x-nintendo-nes-rom"}:a([67,114,50,52])?{ext:"crx",mime:"application/x-google-chrome-extension"}:a([77,83,67,70])||a([73,83,99,40])?{ext:"cab",mime:"application/vnd.ms-cab-compressed"}:a([33,60,97,114,99,104,62,10,100,101,98,105,97,110,45,98,105,110,97,114,121])?{ext:"deb",mime:"application/x-deb"}:a([33,60,97,114,99,104,62])?{ext:"ar",mime:"application/x-unix-archive"}:a([237,171,238,219])?{ext:"rpm",mime:"application/x-rpm"}:a([31,160])||a([31,157])?{ext:"Z",mime:"application/x-compress"}:a([76,90,73,80])?{ext:"lz",mime:"application/x-lzip"}:a([208,207,17,224,161,177,26,225])?{ext:"msi",mime:"application/x-msi"}:a([6,14,43,52,2,5,1,1,13,1,2,1,1,2])?{ext:"mxf",mime:"application/mxf"}:a([66,76,69,78,68,69,82])?{ext:"blend",mime:"application/x-blender"}:null}});var uy=O((qG,cy)=>{"use strict";var QO=ly(),e3=new Set(["7z","bz2","gz","rar","tar","zip","xz","gz"]);cy.exports=e=>{let t=QO(e);return e3.has(t&&t.ext)?t:null}});var dy=O((XG,py)=>{var Na=require("constants"),t3=process.cwd,Ns=null,a3=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return Ns||(Ns=t3.call(process)),Ns};try{process.cwd()}catch(e){}typeof process.chdir=="function"&&(Ap=process.chdir,process.chdir=function(e){Ns=null,Ap.call(process,e)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,Ap));var Ap;py.exports=n3;function n3(e){Na.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&t(e),e.lutimes||a(e),e.chown=r(e.chown),e.fchown=r(e.fchown),e.lchown=r(e.lchown),e.chmod=n(e.chmod),e.fchmod=n(e.fchmod),e.lchmod=n(e.lchmod),e.chownSync=o(e.chownSync),e.fchownSync=o(e.fchownSync),e.lchownSync=o(e.lchownSync),e.chmodSync=i(e.chmodSync),e.fchmodSync=i(e.fchmodSync),e.lchmodSync=i(e.lchmodSync),e.stat=s(e.stat),e.fstat=s(e.fstat),e.lstat=s(e.lstat),e.statSync=l(e.statSync),e.fstatSync=l(e.fstatSync),e.lstatSync=l(e.lstatSync),e.chmod&&!e.lchmod&&(e.lchmod=function(c,f,p){p&&process.nextTick(p)},e.lchmodSync=function(){}),e.chown&&!e.lchown&&(e.lchown=function(c,f,p,b){b&&process.nextTick(b)},e.lchownSync=function(){}),a3==="win32"&&(e.rename=typeof e.rename!="function"?e.rename:function(c){function f(p,b,d){var m=Date.now(),h=0;c(p,b,function v(x){if(x&&(x.code==="EACCES"||x.code==="EPERM"||x.code==="EBUSY")&&Date.now()-m<6e4){setTimeout(function(){e.stat(b,function(E,g){E&&E.code==="ENOENT"?c(p,b,v):d(x)})},h),h<100&&(h+=10);return}d&&d(x)})}return Object.setPrototypeOf&&Object.setPrototypeOf(f,c),f}(e.rename)),e.read=typeof e.read!="function"?e.read:function(c){function f(p,b,d,m,h,v){var x;if(v&&typeof v=="function"){var E=0;x=function(g,w,C){if(g&&g.code==="EAGAIN"&&E<10)return E++,c.call(e,p,b,d,m,h,x);v.apply(this,arguments)}}return c.call(e,p,b,d,m,h,x)}return Object.setPrototypeOf&&Object.setPrototypeOf(f,c),f}(e.read),e.readSync=typeof e.readSync!="function"?e.readSync:function(c){return function(f,p,b,d,m){for(var h=0;;)try{return c.call(e,f,p,b,d,m)}catch(v){if(v.code==="EAGAIN"&&h<10){h++;continue}throw v}}}(e.readSync);function t(c){c.lchmod=function(f,p,b){c.open(f,Na.O_WRONLY|Na.O_SYMLINK,p,function(d,m){if(d){b&&b(d);return}c.fchmod(m,p,function(h){c.close(m,function(v){b&&b(h||v)})})})},c.lchmodSync=function(f,p){var b=c.openSync(f,Na.O_WRONLY|Na.O_SYMLINK,p),d=!0,m;try{m=c.fchmodSync(b,p),d=!1}finally{if(d)try{c.closeSync(b)}catch(h){}else c.closeSync(b)}return m}}function a(c){Na.hasOwnProperty("O_SYMLINK")&&c.futimes?(c.lutimes=function(f,p,b,d){c.open(f,Na.O_SYMLINK,function(m,h){if(m){d&&d(m);return}c.futimes(h,p,b,function(v){c.close(h,function(x){d&&d(v||x)})})})},c.lutimesSync=function(f,p,b){var d=c.openSync(f,Na.O_SYMLINK),m,h=!0;try{m=c.futimesSync(d,p,b),h=!1}finally{if(h)try{c.closeSync(d)}catch(v){}else c.closeSync(d)}return m}):c.futimes&&(c.lutimes=function(f,p,b,d){d&&process.nextTick(d)},c.lutimesSync=function(){})}function n(c){return c&&function(f,p,b){return c.call(e,f,p,function(d){u(d)&&(d=null),b&&b.apply(this,arguments)})}}function i(c){return c&&function(f,p){try{return c.call(e,f,p)}catch(b){if(!u(b))throw b}}}function r(c){return c&&function(f,p,b,d){return c.call(e,f,p,b,function(m){u(m)&&(m=null),d&&d.apply(this,arguments)})}}function o(c){return c&&function(f,p,b){try{return c.call(e,f,p,b)}catch(d){if(!u(d))throw d}}}function s(c){return c&&function(f,p,b){typeof p=="function"&&(b=p,p=null);function d(m,h){h&&(h.uid<0&&(h.uid+=4294967296),h.gid<0&&(h.gid+=4294967296)),b&&b.apply(this,arguments)}return p?c.call(e,f,p,d):c.call(e,f,d)}}function l(c){return c&&function(f,p){var b=p?c.call(e,f,p):c.call(e,f);return b&&(b.uid<0&&(b.uid+=4294967296),b.gid<0&&(b.gid+=4294967296)),b}}function u(c){if(!c||c.code==="ENOSYS")return!0;var f=!process.getuid||process.getuid()!==0;return!!(f&&(c.code==="EINVAL"||c.code==="EPERM"))}}});var hy=O(($G,my)=>{var fy=require("stream").Stream;my.exports=i3;function i3(e){return{ReadStream:t,WriteStream:a};function t(n,i){if(!(this instanceof t))return new t(n,i);fy.call(this);var r=this;this.path=n,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=64*1024,i=i||{};for(var o=Object.keys(i),s=0,l=o.length;s<l;s++){var u=o[s];this[u]=i[u]}if(this.encoding&&this.setEncoding(this.encoding),this.start!==void 0){if(typeof this.start!="number")throw TypeError("start must be a Number");if(this.end===void 0)this.end=1/0;else if(typeof this.end!="number")throw TypeError("end must be a Number");if(this.start>this.end)throw new Error("start must be <= end");this.pos=this.start}if(this.fd!==null){process.nextTick(function(){r._read()});return}e.open(this.path,this.flags,this.mode,function(c,f){if(c){r.emit("error",c),r.readable=!1;return}r.fd=f,r.emit("open",f),r._read()})}function a(n,i){if(!(this instanceof a))return new a(n,i);fy.call(this),this.path=n,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0,i=i||{};for(var r=Object.keys(i),o=0,s=r.length;o<s;o++){var l=r[o];this[l]=i[l]}if(this.start!==void 0){if(typeof this.start!="number")throw TypeError("start must be a Number");if(this.start<0)throw new Error("start must be >= zero");this.pos=this.start}this.busy=!1,this._queue=[],this.fd===null&&(this._open=e.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush())}}});var by=O((YG,vy)=>{"use strict";vy.exports=o3;var r3=Object.getPrototypeOf||function(e){return e.__proto__};function o3(e){if(e===null||typeof e!="object")return e;if(e instanceof Object)var t={__proto__:r3(e)};else var t=Object.create(null);return Object.getOwnPropertyNames(e).forEach(function(a){Object.defineProperty(t,a,Object.getOwnPropertyDescriptor(e,a))}),t}});var wy=O((KG,Tp)=>{var We=require("fs"),s3=dy(),l3=hy(),c3=by(),js=require("util"),ct,Ms;typeof Symbol=="function"&&typeof Symbol.for=="function"?(ct=Symbol.for("graceful-fs.queue"),Ms=Symbol.for("graceful-fs.previous")):(ct="___graceful-fs.queue",Ms="___graceful-fs.previous");function u3(){}function yy(e,t){Object.defineProperty(e,ct,{get:function(){return t}})}var dn=u3;js.debuglog?dn=js.debuglog("gfs4"):/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&(dn=function(){var e=js.format.apply(js,arguments);e="GFS4: "+e.split(/\n/).join(` +GFS4: `),console.error(e)});We[ct]||(gy=global[ct]||[],yy(We,gy),We.close=function(e){function t(a,n){return e.call(We,a,function(i){i||xy(),typeof n=="function"&&n.apply(this,arguments)})}return Object.defineProperty(t,Ms,{value:e}),t}(We.close),We.closeSync=function(e){function t(a){e.apply(We,arguments),xy()}return Object.defineProperty(t,Ms,{value:e}),t}(We.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&process.on("exit",function(){dn(We[ct]),require("assert").equal(We[ct].length,0)}));var gy;global[ct]||yy(global,We[ct]);Tp.exports=Ip(c3(We));process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!We.__patched&&(Tp.exports=Ip(We),We.__patched=!0);function Ip(e){s3(e),e.gracefulify=Ip,e.createReadStream=w,e.createWriteStream=C;var t=e.readFile;e.readFile=a;function a(A,_,P){return typeof _=="function"&&(P=_,_=null),F(A,_,P);function F(B,j,L,k){return t(B,j,function(T){T&&(T.code==="EMFILE"||T.code==="ENFILE")?Jn([F,[B,j,L],T,k||Date.now(),Date.now()]):typeof L=="function"&&L.apply(this,arguments)})}}var n=e.writeFile;e.writeFile=i;function i(A,_,P,F){return typeof P=="function"&&(F=P,P=null),B(A,_,P,F);function B(j,L,k,T,N){return n(j,L,k,function(M){M&&(M.code==="EMFILE"||M.code==="ENFILE")?Jn([B,[j,L,k,T],M,N||Date.now(),Date.now()]):typeof T=="function"&&T.apply(this,arguments)})}}var r=e.appendFile;r&&(e.appendFile=o);function o(A,_,P,F){return typeof P=="function"&&(F=P,P=null),B(A,_,P,F);function B(j,L,k,T,N){return r(j,L,k,function(M){M&&(M.code==="EMFILE"||M.code==="ENFILE")?Jn([B,[j,L,k,T],M,N||Date.now(),Date.now()]):typeof T=="function"&&T.apply(this,arguments)})}}var s=e.copyFile;s&&(e.copyFile=l);function l(A,_,P,F){return typeof P=="function"&&(F=P,P=0),B(A,_,P,F);function B(j,L,k,T,N){return s(j,L,k,function(M){M&&(M.code==="EMFILE"||M.code==="ENFILE")?Jn([B,[j,L,k,T],M,N||Date.now(),Date.now()]):typeof T=="function"&&T.apply(this,arguments)})}}var u=e.readdir;e.readdir=f;var c=/^v[0-5]\./;function f(A,_,P){typeof _=="function"&&(P=_,_=null);var F=c.test(process.version)?function(L,k,T,N){return u(L,B(L,k,T,N))}:function(L,k,T,N){return u(L,k,B(L,k,T,N))};return F(A,_,P);function B(j,L,k,T){return function(N,M){N&&(N.code==="EMFILE"||N.code==="ENFILE")?Jn([F,[j,L,k],N,T||Date.now(),Date.now()]):(M&&M.sort&&M.sort(),typeof k=="function"&&k.call(this,N,M))}}}if(process.version.substr(0,4)==="v0.8"){var p=l3(e);v=p.ReadStream,E=p.WriteStream}var b=e.ReadStream;b&&(v.prototype=Object.create(b.prototype),v.prototype.open=x);var d=e.WriteStream;d&&(E.prototype=Object.create(d.prototype),E.prototype.open=g),Object.defineProperty(e,"ReadStream",{get:function(){return v},set:function(A){v=A},enumerable:!0,configurable:!0}),Object.defineProperty(e,"WriteStream",{get:function(){return E},set:function(A){E=A},enumerable:!0,configurable:!0});var m=v;Object.defineProperty(e,"FileReadStream",{get:function(){return m},set:function(A){m=A},enumerable:!0,configurable:!0});var h=E;Object.defineProperty(e,"FileWriteStream",{get:function(){return h},set:function(A){h=A},enumerable:!0,configurable:!0});function v(A,_){return this instanceof v?(b.apply(this,arguments),this):v.apply(Object.create(v.prototype),arguments)}function x(){var A=this;S(A.path,A.flags,A.mode,function(_,P){_?(A.autoClose&&A.destroy(),A.emit("error",_)):(A.fd=P,A.emit("open",P),A.read())})}function E(A,_){return this instanceof E?(d.apply(this,arguments),this):E.apply(Object.create(E.prototype),arguments)}function g(){var A=this;S(A.path,A.flags,A.mode,function(_,P){_?(A.destroy(),A.emit("error",_)):(A.fd=P,A.emit("open",P))})}function w(A,_){return new e.ReadStream(A,_)}function C(A,_){return new e.WriteStream(A,_)}var y=e.open;e.open=S;function S(A,_,P,F){return typeof P=="function"&&(F=P,P=null),B(A,_,P,F);function B(j,L,k,T,N){return y(j,L,k,function(M,D){M&&(M.code==="EMFILE"||M.code==="ENFILE")?Jn([B,[j,L,k,T],M,N||Date.now(),Date.now()]):typeof T=="function"&&T.apply(this,arguments)})}}return e}function Jn(e){dn("ENQUEUE",e[0].name,e[1]),We[ct].push(e),_p()}var Ls;function xy(){for(var e=Date.now(),t=0;t<We[ct].length;++t)We[ct][t].length>2&&(We[ct][t][3]=e,We[ct][t][4]=e);_p()}function _p(){if(clearTimeout(Ls),Ls=void 0,We[ct].length!==0){var e=We[ct].shift(),t=e[0],a=e[1],n=e[2],i=e[3],r=e[4];if(i===void 0)dn("RETRY",t.name,a),t.apply(null,a);else if(Date.now()-i>=6e4){dn("TIMEOUT",t.name,a);var o=a.pop();typeof o=="function"&&o.call(null,n)}else{var s=Date.now()-r,l=Math.max(r-i,1),u=Math.min(l*1.2,100);s>=u?(dn("RETRY",t.name,a),t.apply(null,a.concat([i]))):We[ct].push(e)}Ls===void 0&&(Ls=setTimeout(_p,0))}}});var Sy=O((QG,Ey)=>{"use strict";Ey.exports=e=>{let t=new Uint8Array(e);if(!(t&&t.length>1))return null;let a=(n,i)=>{i=Object.assign({offset:0},i);for(let r=0;r<n.length;r++)if(n[r]!==t[r+i.offset])return!1;return!0};if(a([255,216,255]))return{ext:"jpg",mime:"image/jpeg"};if(a([137,80,78,71,13,10,26,10]))return{ext:"png",mime:"image/png"};if(a([71,73,70]))return{ext:"gif",mime:"image/gif"};if(a([87,69,66,80],{offset:8}))return{ext:"webp",mime:"image/webp"};if(a([70,76,73,70]))return{ext:"flif",mime:"image/flif"};if((a([73,73,42,0])||a([77,77,0,42]))&&a([67,82],{offset:8}))return{ext:"cr2",mime:"image/x-canon-cr2"};if(a([73,73,42,0])||a([77,77,0,42]))return{ext:"tif",mime:"image/tiff"};if(a([66,77]))return{ext:"bmp",mime:"image/bmp"};if(a([73,73,188]))return{ext:"jxr",mime:"image/vnd.ms-photo"};if(a([56,66,80,83]))return{ext:"psd",mime:"image/vnd.adobe.photoshop"};if(a([80,75,3,4])&&a([109,105,109,101,116,121,112,101,97,112,112,108,105,99,97,116,105,111,110,47,101,112,117,98,43,122,105,112],{offset:30}))return{ext:"epub",mime:"application/epub+zip"};if(a([80,75,3,4])&&a([77,69,84,65,45,73,78,70,47,109,111,122,105,108,108,97,46,114,115,97],{offset:30}))return{ext:"xpi",mime:"application/x-xpinstall"};if(a([80,75])&&(t[2]===3||t[2]===5||t[2]===7)&&(t[3]===4||t[3]===6||t[3]===8))return{ext:"zip",mime:"application/zip"};if(a([117,115,116,97,114],{offset:257}))return{ext:"tar",mime:"application/x-tar"};if(a([82,97,114,33,26,7])&&(t[6]===0||t[6]===1))return{ext:"rar",mime:"application/x-rar-compressed"};if(a([31,139,8]))return{ext:"gz",mime:"application/gzip"};if(a([66,90,104]))return{ext:"bz2",mime:"application/x-bzip2"};if(a([55,122,188,175,39,28]))return{ext:"7z",mime:"application/x-7z-compressed"};if(a([120,1]))return{ext:"dmg",mime:"application/x-apple-diskimage"};if(a([0,0,0])&&(t[3]===24||t[3]===32)&&a([102,116,121,112],{offset:4})||a([51,103,112,53])||a([0,0,0,28,102,116,121,112,109,112,52,50])&&a([109,112,52,49,109,112,52,50,105,115,111,109],{offset:16})||a([0,0,0,28,102,116,121,112,105,115,111,109])||a([0,0,0,28,102,116,121,112,109,112,52,50,0,0,0,0]))return{ext:"mp4",mime:"video/mp4"};if(a([0,0,0,28,102,116,121,112,77,52,86]))return{ext:"m4v",mime:"video/x-m4v"};if(a([77,84,104,100]))return{ext:"mid",mime:"audio/midi"};if(a([26,69,223,163])){let n=t.subarray(4,4100),i=n.findIndex((r,o,s)=>s[o]===66&&s[o+1]===130);if(i>=0){let r=i+3,o=s=>Array.from(s).every((l,u)=>n[r+u]===l.charCodeAt(0));if(o("matroska"))return{ext:"mkv",mime:"video/x-matroska"};if(o("webm"))return{ext:"webm",mime:"video/webm"}}}return a([0,0,0,20,102,116,121,112,113,116,32,32])||a([102,114,101,101],{offset:4})||a([102,116,121,112,113,116,32,32],{offset:4})||a([109,100,97,116],{offset:4})||a([119,105,100,101],{offset:4})?{ext:"mov",mime:"video/quicktime"}:a([82,73,70,70])&&a([65,86,73],{offset:8})?{ext:"avi",mime:"video/x-msvideo"}:a([48,38,178,117,142,102,207,17,166,217])?{ext:"wmv",mime:"video/x-ms-wmv"}:a([0,0,1,186])?{ext:"mpg",mime:"video/mpeg"}:a([73,68,51])||a([255,251])?{ext:"mp3",mime:"audio/mpeg"}:a([102,116,121,112,77,52,65],{offset:4})||a([77,52,65,32])?{ext:"m4a",mime:"audio/m4a"}:a([79,112,117,115,72,101,97,100],{offset:28})?{ext:"opus",mime:"audio/opus"}:a([79,103,103,83])?{ext:"ogg",mime:"audio/ogg"}:a([102,76,97,67])?{ext:"flac",mime:"audio/x-flac"}:a([82,73,70,70])&&a([87,65,86,69],{offset:8})?{ext:"wav",mime:"audio/x-wav"}:a([35,33,65,77,82,10])?{ext:"amr",mime:"audio/amr"}:a([37,80,68,70])?{ext:"pdf",mime:"application/pdf"}:a([77,90])?{ext:"exe",mime:"application/x-msdownload"}:(t[0]===67||t[0]===70)&&a([87,83],{offset:1})?{ext:"swf",mime:"application/x-shockwave-flash"}:a([123,92,114,116,102])?{ext:"rtf",mime:"application/rtf"}:a([0,97,115,109])?{ext:"wasm",mime:"application/wasm"}:a([119,79,70,70])&&(a([0,1,0,0],{offset:4})||a([79,84,84,79],{offset:4}))?{ext:"woff",mime:"font/woff"}:a([119,79,70,50])&&(a([0,1,0,0],{offset:4})||a([79,84,84,79],{offset:4}))?{ext:"woff2",mime:"font/woff2"}:a([76,80],{offset:34})&&(a([0,0,1],{offset:8})||a([1,0,2],{offset:8})||a([2,0,2],{offset:8}))?{ext:"eot",mime:"application/octet-stream"}:a([0,1,0,0,0])?{ext:"ttf",mime:"font/ttf"}:a([79,84,84,79,0])?{ext:"otf",mime:"font/otf"}:a([0,0,1,0])?{ext:"ico",mime:"image/x-icon"}:a([70,76,86,1])?{ext:"flv",mime:"video/x-flv"}:a([37,33])?{ext:"ps",mime:"application/postscript"}:a([253,55,122,88,90,0])?{ext:"xz",mime:"application/x-xz"}:a([83,81,76,105])?{ext:"sqlite",mime:"application/x-sqlite3"}:a([78,69,83,26])?{ext:"nes",mime:"application/x-nintendo-nes-rom"}:a([67,114,50,52])?{ext:"crx",mime:"application/x-google-chrome-extension"}:a([77,83,67,70])||a([73,83,99,40])?{ext:"cab",mime:"application/vnd.ms-cab-compressed"}:a([33,60,97,114,99,104,62,10,100,101,98,105,97,110,45,98,105,110,97,114,121])?{ext:"deb",mime:"application/x-deb"}:a([33,60,97,114,99,104,62])?{ext:"ar",mime:"application/x-unix-archive"}:a([237,171,238,219])?{ext:"rpm",mime:"application/x-rpm"}:a([31,160])||a([31,157])?{ext:"Z",mime:"application/x-compress"}:a([76,90,73,80])?{ext:"lz",mime:"application/x-lzip"}:a([208,207,17,224,161,177,26,225])?{ext:"msi",mime:"application/x-msi"}:a([6,14,43,52,2,5,1,1,13,1,2,1,1,2])?{ext:"mxf",mime:"application/mxf"}:a([71],{offset:4})&&(a([71],{offset:192})||a([71],{offset:196}))?{ext:"mts",mime:"video/mp2t"}:a([66,76,69,78,68,69,82])?{ext:"blend",mime:"application/x-blender"}:a([66,80,71,251])?{ext:"bpg",mime:"image/bpg"}:null}});var Ds=O((eH,Cy)=>{"use strict";var va=Cy.exports=function(e){return e!==null&&typeof e=="object"&&typeof e.pipe=="function"};va.writable=function(e){return va(e)&&e.writable!==!1&&typeof e._write=="function"&&typeof e._writableState=="object"};va.readable=function(e){return va(e)&&e.readable!==!1&&typeof e._read=="function"&&typeof e._readableState=="object"};va.duplex=function(e){return va.writable(e)&&va.readable(e)};va.transform=function(e){return va.duplex(e)&&typeof e._transform=="function"&&typeof e._transformState=="object"}});var ir=O((tH,kp)=>{"use strict";typeof process=="undefined"||!process.version||process.version.indexOf("v0.")===0||process.version.indexOf("v1.")===0&&process.version.indexOf("v1.8.")!==0?kp.exports={nextTick:p3}:kp.exports=process;function p3(e,t,a,n){if(typeof e!="function")throw new TypeError('"callback" argument must be a function');var i=arguments.length,r,o;switch(i){case 0:case 1:return process.nextTick(e);case 2:return process.nextTick(function(){e.call(null,t)});case 3:return process.nextTick(function(){e.call(null,t,a)});case 4:return process.nextTick(function(){e.call(null,t,a,n)});default:for(r=new Array(i-1),o=0;o<r.length;)r[o++]=arguments[o];return process.nextTick(function(){e.apply(null,r)})}}});var Zn=O(mt=>{function d3(e){return Array.isArray?Array.isArray(e):zs(e)==="[object Array]"}mt.isArray=d3;function f3(e){return typeof e=="boolean"}mt.isBoolean=f3;function m3(e){return e===null}mt.isNull=m3;function h3(e){return e==null}mt.isNullOrUndefined=h3;function v3(e){return typeof e=="number"}mt.isNumber=v3;function b3(e){return typeof e=="string"}mt.isString=b3;function g3(e){return typeof e=="symbol"}mt.isSymbol=g3;function x3(e){return e===void 0}mt.isUndefined=x3;function y3(e){return zs(e)==="[object RegExp]"}mt.isRegExp=y3;function w3(e){return typeof e=="object"&&e!==null}mt.isObject=w3;function E3(e){return zs(e)==="[object Date]"}mt.isDate=E3;function S3(e){return zs(e)==="[object Error]"||e instanceof Error}mt.isError=S3;function C3(e){return typeof e=="function"}mt.isFunction=C3;function A3(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"||typeof e=="symbol"||typeof e=="undefined"}mt.isPrimitive=A3;mt.isBuffer=require("buffer").Buffer.isBuffer;function zs(e){return Object.prototype.toString.call(e)}});var fn=O((nH,Fp)=>{typeof Object.create=="function"?Fp.exports=function(t,a){a&&(t.super_=a,t.prototype=Object.create(a.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:Fp.exports=function(t,a){if(a){t.super_=a;var n=function(){};n.prototype=a.prototype,t.prototype=new n,t.prototype.constructor=t}}});var Iy=O((iH,Ay)=>{var I3={}.toString;Ay.exports=Array.isArray||function(e){return I3.call(e)=="[object Array]"}});var Pp=O((rH,_y)=>{_y.exports=require("events").EventEmitter});var Hs=O((Op,ky)=>{var Gs=require("buffer"),ba=Gs.Buffer;function Ty(e,t){for(var a in e)t[a]=e[a]}ba.from&&ba.alloc&&ba.allocUnsafe&&ba.allocUnsafeSlow?ky.exports=Gs:(Ty(Gs,Op),Op.Buffer=qn);function qn(e,t,a){return ba(e,t,a)}Ty(ba,qn);qn.from=function(e,t,a){if(typeof e=="number")throw new TypeError("Argument must not be a number");return ba(e,t,a)};qn.alloc=function(e,t,a){if(typeof e!="number")throw new TypeError("Argument must be a number");var n=ba(e);return t!==void 0?typeof a=="string"?n.fill(t,a):n.fill(t):n.fill(0),n};qn.allocUnsafe=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return ba(e)};qn.allocUnsafeSlow=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return Gs.SlowBuffer(e)}});var Py=O((oH,Rp)=>{"use strict";function _3(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var Fy=Hs().Buffer,rr=require("util");function T3(e,t,a){e.copy(t,a)}Rp.exports=function(){function e(){_3(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(a){var n={data:a,next:null};this.length>0?this.tail.next=n:this.head=n,this.tail=n,++this.length},e.prototype.unshift=function(a){var n={data:a,next:this.head};this.length===0&&(this.tail=n),this.head=n,++this.length},e.prototype.shift=function(){if(this.length!==0){var a=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,a}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(a){if(this.length===0)return"";for(var n=this.head,i=""+n.data;n=n.next;)i+=a+n.data;return i},e.prototype.concat=function(a){if(this.length===0)return Fy.alloc(0);for(var n=Fy.allocUnsafe(a>>>0),i=this.head,r=0;i;)T3(i.data,n,r),r+=i.data.length,i=i.next;return n},e}();rr&&rr.inspect&&rr.inspect.custom&&(Rp.exports.prototype[rr.inspect.custom]=function(){var e=rr.inspect({length:this.length});return this.constructor.name+" "+e})});var Bp=O((sH,Oy)=>{"use strict";var Ws=ir();function k3(e,t){var a=this,n=this._readableState&&this._readableState.destroyed,i=this._writableState&&this._writableState.destroyed;return n||i?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,Ws.nextTick(Vs,this,e)):Ws.nextTick(Vs,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(r){!t&&r?a._writableState?a._writableState.errorEmitted||(a._writableState.errorEmitted=!0,Ws.nextTick(Vs,a,r)):Ws.nextTick(Vs,a,r):t&&t(r)}),this)}function F3(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function Vs(e,t){e.emit("error",t)}Oy.exports={destroy:k3,undestroy:F3}});var Gp=O((cH,Vy)=>{"use strict";var $n=ir();Vy.exports=Me;var P3=Iy(),or;Me.ReadableState=Dy;var lH=require("events").EventEmitter,jy=function(e,t){return e.listeners(t).length},Dp=Pp(),sr=Hs().Buffer,O3=(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:{}).Uint8Array||function(){};function R3(e){return sr.from(e)}function B3(e){return sr.isBuffer(e)||e instanceof O3}var Ly=Object.create(Zn());Ly.inherits=fn();var Np=require("util"),Ce=void 0;Np&&Np.debuglog?Ce=Np.debuglog("stream"):Ce=function(){};var N3=Py(),My=Bp(),Xn;Ly.inherits(Me,Dp);var jp=["error","close","destroy","pause","resume"];function j3(e,t,a){if(typeof e.prependListener=="function")return e.prependListener(t,a);!e._events||!e._events[t]?e.on(t,a):P3(e._events[t])?e._events[t].unshift(a):e._events[t]=[a,e._events[t]]}function Dy(e,t){or=or||ja(),e=e||{};var a=t instanceof or;this.objectMode=!!e.objectMode,a&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var n=e.highWaterMark,i=e.readableHighWaterMark,r=this.objectMode?16:16*1024;n||n===0?this.highWaterMark=n:a&&(i||i===0)?this.highWaterMark=i:this.highWaterMark=r,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new N3,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(Xn||(Xn=require("string_decoder/").StringDecoder),this.decoder=new Xn(e.encoding),this.encoding=e.encoding)}function Me(e){if(or=or||ja(),!(this instanceof Me))return new Me(e);this._readableState=new Dy(e,this),this.readable=!0,e&&(typeof e.read=="function"&&(this._read=e.read),typeof e.destroy=="function"&&(this._destroy=e.destroy)),Dp.call(this)}Object.defineProperty(Me.prototype,"destroyed",{get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){this._readableState&&(this._readableState.destroyed=e)}});Me.prototype.destroy=My.destroy;Me.prototype._undestroy=My.undestroy;Me.prototype._destroy=function(e,t){this.push(null),t(e)};Me.prototype.push=function(e,t){var a=this._readableState,n;return a.objectMode?n=!0:typeof e=="string"&&(t=t||a.defaultEncoding,t!==a.encoding&&(e=sr.from(e,t),t=""),n=!0),zy(this,e,t,!1,n)};Me.prototype.unshift=function(e){return zy(this,e,null,!0,!1)};function zy(e,t,a,n,i){var r=e._readableState;if(t===null)r.reading=!1,z3(e,r);else{var o;i||(o=L3(r,t)),o?e.emit("error",o):r.objectMode||t&&t.length>0?(typeof t!="string"&&!r.objectMode&&Object.getPrototypeOf(t)!==sr.prototype&&(t=R3(t)),n?r.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):Lp(e,r,t,!0):r.ended?e.emit("error",new Error("stream.push() after EOF")):(r.reading=!1,r.decoder&&!a?(t=r.decoder.write(t),r.objectMode||t.length!==0?Lp(e,r,t,!1):Gy(e,r)):Lp(e,r,t,!1))):n||(r.reading=!1)}return M3(r)}function Lp(e,t,a,n){t.flowing&&t.length===0&&!t.sync?(e.emit("data",a),e.read(0)):(t.length+=t.objectMode?1:a.length,n?t.buffer.unshift(a):t.buffer.push(a),t.needReadable&&Us(e)),Gy(e,t)}function L3(e,t){var a;return!B3(t)&&typeof t!="string"&&t!==void 0&&!e.objectMode&&(a=new TypeError("Invalid non-string/buffer chunk")),a}function M3(e){return!e.ended&&(e.needReadable||e.length<e.highWaterMark||e.length===0)}Me.prototype.isPaused=function(){return this._readableState.flowing===!1};Me.prototype.setEncoding=function(e){return Xn||(Xn=require("string_decoder/").StringDecoder),this._readableState.decoder=new Xn(e),this._readableState.encoding=e,this};var Ry=8388608;function D3(e){return e>=Ry?e=Ry:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function By(e,t){return e<=0||t.length===0&&t.ended?0:t.objectMode?1:e!==e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=D3(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}Me.prototype.read=function(e){Ce("read",e),e=parseInt(e,10);var t=this._readableState,a=e;if(e!==0&&(t.emittedReadable=!1),e===0&&t.needReadable&&(t.length>=t.highWaterMark||t.ended))return Ce("read: emitReadable",t.length,t.ended),t.length===0&&t.ended?Mp(this):Us(this),null;if(e=By(e,t),e===0&&t.ended)return t.length===0&&Mp(this),null;var n=t.needReadable;Ce("need readable",n),(t.length===0||t.length-e<t.highWaterMark)&&(n=!0,Ce("length less than watermark",n)),t.ended||t.reading?(n=!1,Ce("reading or ended",n)):n&&(Ce("do read"),t.reading=!0,t.sync=!0,t.length===0&&(t.needReadable=!0),this._read(t.highWaterMark),t.sync=!1,t.reading||(e=By(a,t)));var i;return e>0?i=Hy(e,t):i=null,i===null?(t.needReadable=!0,e=0):t.length-=e,t.length===0&&(t.ended||(t.needReadable=!0),a!==e&&t.ended&&Mp(this)),i!==null&&this.emit("data",i),i};function z3(e,t){if(!t.ended){if(t.decoder){var a=t.decoder.end();a&&a.length&&(t.buffer.push(a),t.length+=t.objectMode?1:a.length)}t.ended=!0,Us(e)}}function Us(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(Ce("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?$n.nextTick(Ny,e):Ny(e))}function Ny(e){Ce("emit readable"),e.emit("readable"),zp(e)}function Gy(e,t){t.readingMore||(t.readingMore=!0,$n.nextTick(G3,e,t))}function G3(e,t){for(var a=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length<t.highWaterMark&&(Ce("maybeReadMore read 0"),e.read(0),a!==t.length);)a=t.length;t.readingMore=!1}Me.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))};Me.prototype.pipe=function(e,t){var a=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=e;break;case 1:n.pipes=[n.pipes,e];break;default:n.pipes.push(e);break}n.pipesCount+=1,Ce("pipe count=%d opts=%j",n.pipesCount,t);var i=(!t||t.end!==!1)&&e!==process.stdout&&e!==process.stderr,r=i?s:h;n.endEmitted?$n.nextTick(r):a.once("end",r),e.on("unpipe",o);function o(v,x){Ce("onunpipe"),v===a&&x&&x.hasUnpiped===!1&&(x.hasUnpiped=!0,c())}function s(){Ce("onend"),e.end()}var l=H3(a);e.on("drain",l);var u=!1;function c(){Ce("cleanup"),e.removeListener("close",d),e.removeListener("finish",m),e.removeListener("drain",l),e.removeListener("error",b),e.removeListener("unpipe",o),a.removeListener("end",s),a.removeListener("end",h),a.removeListener("data",p),u=!0,n.awaitDrain&&(!e._writableState||e._writableState.needDrain)&&l()}var f=!1;a.on("data",p);function p(v){Ce("ondata"),f=!1;var x=e.write(v);x===!1&&!f&&((n.pipesCount===1&&n.pipes===e||n.pipesCount>1&&Wy(n.pipes,e)!==-1)&&!u&&(Ce("false write response, pause",n.awaitDrain),n.awaitDrain++,f=!0),a.pause())}function b(v){Ce("onerror",v),h(),e.removeListener("error",b),jy(e,"error")===0&&e.emit("error",v)}j3(e,"error",b);function d(){e.removeListener("finish",m),h()}e.once("close",d);function m(){Ce("onfinish"),e.removeListener("close",d),h()}e.once("finish",m);function h(){Ce("unpipe"),a.unpipe(e)}return e.emit("pipe",a),n.flowing||(Ce("pipe resume"),a.resume()),e};function H3(e){return function(){var t=e._readableState;Ce("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,t.awaitDrain===0&&jy(e,"data")&&(t.flowing=!0,zp(e))}}Me.prototype.unpipe=function(e){var t=this._readableState,a={hasUnpiped:!1};if(t.pipesCount===0)return this;if(t.pipesCount===1)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,a),this);if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var r=0;r<i;r++)n[r].emit("unpipe",this,{hasUnpiped:!1});return this}var o=Wy(t.pipes,e);return o===-1?this:(t.pipes.splice(o,1),t.pipesCount-=1,t.pipesCount===1&&(t.pipes=t.pipes[0]),e.emit("unpipe",this,a),this)};Me.prototype.on=function(e,t){var a=Dp.prototype.on.call(this,e,t);if(e==="data")this._readableState.flowing!==!1&&this.resume();else if(e==="readable"){var n=this._readableState;!n.endEmitted&&!n.readableListening&&(n.readableListening=n.needReadable=!0,n.emittedReadable=!1,n.reading?n.length&&Us(this):$n.nextTick(W3,this))}return a};Me.prototype.addListener=Me.prototype.on;function W3(e){Ce("readable nexttick read 0"),e.read(0)}Me.prototype.resume=function(){var e=this._readableState;return e.flowing||(Ce("resume"),e.flowing=!0,V3(this,e)),this};function V3(e,t){t.resumeScheduled||(t.resumeScheduled=!0,$n.nextTick(U3,e,t))}function U3(e,t){t.reading||(Ce("resume read 0"),e.read(0)),t.resumeScheduled=!1,t.awaitDrain=0,e.emit("resume"),zp(e),t.flowing&&!t.reading&&e.read(0)}Me.prototype.pause=function(){return Ce("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(Ce("pause"),this._readableState.flowing=!1,this.emit("pause")),this};function zp(e){var t=e._readableState;for(Ce("flow",t.flowing);t.flowing&&e.read()!==null;);}Me.prototype.wrap=function(e){var t=this,a=this._readableState,n=!1;e.on("end",function(){if(Ce("wrapped end"),a.decoder&&!a.ended){var o=a.decoder.end();o&&o.length&&t.push(o)}t.push(null)}),e.on("data",function(o){if(Ce("wrapped data"),a.decoder&&(o=a.decoder.write(o)),!(a.objectMode&&o==null)&&!(!a.objectMode&&(!o||!o.length))){var s=t.push(o);s||(n=!0,e.pause())}});for(var i in e)this[i]===void 0&&typeof e[i]=="function"&&(this[i]=function(o){return function(){return e[o].apply(e,arguments)}}(i));for(var r=0;r<jp.length;r++)e.on(jp[r],this.emit.bind(this,jp[r]));return this._read=function(o){Ce("wrapped _read",o),n&&(n=!1,e.resume())},this};Object.defineProperty(Me.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}});Me._fromList=Hy;function Hy(e,t){if(t.length===0)return null;var a;return t.objectMode?a=t.buffer.shift():!e||e>=t.length?(t.decoder?a=t.buffer.join(""):t.buffer.length===1?a=t.buffer.head.data:a=t.buffer.concat(t.length),t.buffer.clear()):a=J3(e,t.buffer,t.decoder),a}function J3(e,t,a){var n;return e<t.head.data.length?(n=t.head.data.slice(0,e),t.head.data=t.head.data.slice(e)):e===t.head.data.length?n=t.shift():n=a?Z3(e,t):q3(e,t),n}function Z3(e,t){var a=t.head,n=1,i=a.data;for(e-=i.length;a=a.next;){var r=a.data,o=e>r.length?r.length:e;if(o===r.length?i+=r:i+=r.slice(0,e),e-=o,e===0){o===r.length?(++n,a.next?t.head=a.next:t.head=t.tail=null):(t.head=a,a.data=r.slice(o));break}++n}return t.length-=n,i}function q3(e,t){var a=sr.allocUnsafe(e),n=t.head,i=1;for(n.data.copy(a),e-=n.data.length;n=n.next;){var r=n.data,o=e>r.length?r.length:e;if(r.copy(a,a.length-e,0,o),e-=o,e===0){o===r.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=r.slice(o));break}++i}return t.length-=i,a}function Mp(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,$n.nextTick(X3,t,e))}function X3(e,t){!e.endEmitted&&e.length===0&&(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function Wy(e,t){for(var a=0,n=e.length;a<n;a++)if(e[a]===t)return a;return-1}});var Jy=O((uH,Uy)=>{Uy.exports=$3;function $3(e,t){if(Hp("noDeprecation"))return e;var a=!1;function n(){if(!a){if(Hp("throwDeprecation"))throw new Error(t);Hp("traceDeprecation")?console.trace(t):console.warn(t),a=!0}return e.apply(this,arguments)}return n}function Hp(e){try{if(!global.localStorage)return!1}catch(a){return!1}var t=global.localStorage[e];return t==null?!1:String(t).toLowerCase()==="true"}});var Vp=O((pH,ew)=>{"use strict";var mn=ir();ew.exports=Ye;function qy(e){var t=this;this.next=null,this.entry=null,this.finish=function(){m6(t,e)}}var Y3=!process.browser&&["v0.10","v0.9."].indexOf(process.version.slice(0,5))>-1?setImmediate:mn.nextTick,Yn;Ye.WritableState=cr;var Xy=Object.create(Zn());Xy.inherits=fn();var K3={deprecate:Jy()},$y=Pp(),Zs=Hs().Buffer,Q3=(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:{}).Uint8Array||function(){};function e6(e){return Zs.from(e)}function t6(e){return Zs.isBuffer(e)||e instanceof Q3}var Yy=Bp();Xy.inherits(Ye,$y);function a6(){}function cr(e,t){Yn=Yn||ja(),e=e||{};var a=t instanceof Yn;this.objectMode=!!e.objectMode,a&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var n=e.highWaterMark,i=e.writableHighWaterMark,r=this.objectMode?16:16*1024;n||n===0?this.highWaterMark=n:a&&(i||i===0)?this.highWaterMark=i:this.highWaterMark=r,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var o=e.decodeStrings===!1;this.decodeStrings=!o,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(s){c6(t,s)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new qy(this)}cr.prototype.getBuffer=function(){for(var t=this.bufferedRequest,a=[];t;)a.push(t),t=t.next;return a};(function(){try{Object.defineProperty(cr.prototype,"buffer",{get:K3.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}})();var Js;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(Js=Function.prototype[Symbol.hasInstance],Object.defineProperty(Ye,Symbol.hasInstance,{value:function(e){return Js.call(this,e)?!0:this!==Ye?!1:e&&e._writableState instanceof cr}})):Js=function(e){return e instanceof this};function Ye(e){if(Yn=Yn||ja(),!Js.call(Ye,this)&&!(this instanceof Yn))return new Ye(e);this._writableState=new cr(e,this),this.writable=!0,e&&(typeof e.write=="function"&&(this._write=e.write),typeof e.writev=="function"&&(this._writev=e.writev),typeof e.destroy=="function"&&(this._destroy=e.destroy),typeof e.final=="function"&&(this._final=e.final)),$y.call(this)}Ye.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))};function n6(e,t){var a=new Error("write after end");e.emit("error",a),mn.nextTick(t,a)}function i6(e,t,a,n){var i=!0,r=!1;return a===null?r=new TypeError("May not write null values to stream"):typeof a!="string"&&a!==void 0&&!t.objectMode&&(r=new TypeError("Invalid non-string/buffer chunk")),r&&(e.emit("error",r),mn.nextTick(n,r),i=!1),i}Ye.prototype.write=function(e,t,a){var n=this._writableState,i=!1,r=!n.objectMode&&t6(e);return r&&!Zs.isBuffer(e)&&(e=e6(e)),typeof t=="function"&&(a=t,t=null),r?t="buffer":t||(t=n.defaultEncoding),typeof a!="function"&&(a=a6),n.ended?n6(this,a):(r||i6(this,n,e,a))&&(n.pendingcb++,i=o6(this,n,r,e,t,a)),i};Ye.prototype.cork=function(){var e=this._writableState;e.corked++};Ye.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,!e.writing&&!e.corked&&!e.bufferProcessing&&e.bufferedRequest&&Ky(this,e))};Ye.prototype.setDefaultEncoding=function(t){if(typeof t=="string"&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this};function r6(e,t,a){return!e.objectMode&&e.decodeStrings!==!1&&typeof t=="string"&&(t=Zs.from(t,a)),t}Object.defineProperty(Ye.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function o6(e,t,a,n,i,r){if(!a){var o=r6(t,n,i);n!==o&&(a=!0,i="buffer",n=o)}var s=t.objectMode?1:n.length;t.length+=s;var l=t.length<t.highWaterMark;if(l||(t.needDrain=!0),t.writing||t.corked){var u=t.lastBufferedRequest;t.lastBufferedRequest={chunk:n,encoding:i,isBuf:a,callback:r,next:null},u?u.next=t.lastBufferedRequest:t.bufferedRequest=t.lastBufferedRequest,t.bufferedRequestCount+=1}else Wp(e,t,!1,s,n,i,r);return l}function Wp(e,t,a,n,i,r,o){t.writelen=n,t.writecb=o,t.writing=!0,t.sync=!0,a?e._writev(i,t.onwrite):e._write(i,r,t.onwrite),t.sync=!1}function s6(e,t,a,n,i){--t.pendingcb,a?(mn.nextTick(i,n),mn.nextTick(lr,e,t),e._writableState.errorEmitted=!0,e.emit("error",n)):(i(n),e._writableState.errorEmitted=!0,e.emit("error",n),lr(e,t))}function l6(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}function c6(e,t){var a=e._writableState,n=a.sync,i=a.writecb;if(l6(a),t)s6(e,a,n,t,i);else{var r=Qy(a);!r&&!a.corked&&!a.bufferProcessing&&a.bufferedRequest&&Ky(e,a),n?Y3(Zy,e,a,r,i):Zy(e,a,r,i)}}function Zy(e,t,a,n){a||u6(e,t),t.pendingcb--,n(),lr(e,t)}function u6(e,t){t.length===0&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}function Ky(e,t){t.bufferProcessing=!0;var a=t.bufferedRequest;if(e._writev&&a&&a.next){var n=t.bufferedRequestCount,i=new Array(n),r=t.corkedRequestsFree;r.entry=a;for(var o=0,s=!0;a;)i[o]=a,a.isBuf||(s=!1),a=a.next,o+=1;i.allBuffers=s,Wp(e,t,!0,t.length,i,"",r.finish),t.pendingcb++,t.lastBufferedRequest=null,r.next?(t.corkedRequestsFree=r.next,r.next=null):t.corkedRequestsFree=new qy(t),t.bufferedRequestCount=0}else{for(;a;){var l=a.chunk,u=a.encoding,c=a.callback,f=t.objectMode?1:l.length;if(Wp(e,t,!1,f,l,u,c),a=a.next,t.bufferedRequestCount--,t.writing)break}a===null&&(t.lastBufferedRequest=null)}t.bufferedRequest=a,t.bufferProcessing=!1}Ye.prototype._write=function(e,t,a){a(new Error("_write() is not implemented"))};Ye.prototype._writev=null;Ye.prototype.end=function(e,t,a){var n=this._writableState;typeof e=="function"?(a=e,e=null,t=null):typeof t=="function"&&(a=t,t=null),e!=null&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||f6(this,n,a)};function Qy(e){return e.ending&&e.length===0&&e.bufferedRequest===null&&!e.finished&&!e.writing}function p6(e,t){e._final(function(a){t.pendingcb--,a&&e.emit("error",a),t.prefinished=!0,e.emit("prefinish"),lr(e,t)})}function d6(e,t){!t.prefinished&&!t.finalCalled&&(typeof e._final=="function"?(t.pendingcb++,t.finalCalled=!0,mn.nextTick(p6,e,t)):(t.prefinished=!0,e.emit("prefinish")))}function lr(e,t){var a=Qy(t);return a&&(d6(e,t),t.pendingcb===0&&(t.finished=!0,e.emit("finish"))),a}function f6(e,t,a){t.ending=!0,lr(e,t),a&&(t.finished?mn.nextTick(a):e.once("finish",a)),t.ended=!0,e.writable=!1}function m6(e,t,a){var n=e.entry;for(e.entry=null;n;){var i=n.callback;t.pendingcb--,i(a),n=n.next}t.corkedRequestsFree.next=e}Object.defineProperty(Ye.prototype,"destroyed",{get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}});Ye.prototype.destroy=Yy.destroy;Ye.prototype._undestroy=Yy.undestroy;Ye.prototype._destroy=function(e,t){this.end(),t(e)}});var ja=O((dH,iw)=>{"use strict";var tw=ir(),h6=Object.keys||function(e){var t=[];for(var a in e)t.push(a);return t};iw.exports=ga;var aw=Object.create(Zn());aw.inherits=fn();var nw=Gp(),Jp=Vp();aw.inherits(ga,nw);for(Up=h6(Jp.prototype),qs=0;qs<Up.length;qs++)Xs=Up[qs],ga.prototype[Xs]||(ga.prototype[Xs]=Jp.prototype[Xs]);var Up,Xs,qs;function ga(e){if(!(this instanceof ga))return new ga(e);nw.call(this,e),Jp.call(this,e),e&&e.readable===!1&&(this.readable=!1),e&&e.writable===!1&&(this.writable=!1),this.allowHalfOpen=!0,e&&e.allowHalfOpen===!1&&(this.allowHalfOpen=!1),this.once("end",v6)}Object.defineProperty(ga.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function v6(){this.allowHalfOpen||this._writableState.ended||tw.nextTick(b6,this)}function b6(e){e.end()}Object.defineProperty(ga.prototype,"destroyed",{get:function(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set:function(e){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=e,this._writableState.destroyed=e)}});ga.prototype._destroy=function(e,t){this.push(null),this.end(),tw.nextTick(t,e)}});var ow=O((fH,rw)=>{rw.exports=ja()});var lw=O((mH,sw)=>{var Zp=ow(),g6=require("util"),Kn=Bs().Buffer;function Je(e){if(!(this instanceof Je))return new Je(e);if(this._bufs=[],this.length=0,typeof e=="function"){this._callback=e;var t=function(n){this._callback&&(this._callback(n),this._callback=null)}.bind(this);this.on("pipe",function(n){n.on("error",t)}),this.on("unpipe",function(n){n.removeListener("error",t)})}else this.append(e);Zp.call(this)}g6.inherits(Je,Zp);Je.prototype._offset=function(t){var a=0,n=0,i;if(t===0)return[0,0];for(;n<this._bufs.length;n++){if(i=a+this._bufs[n].length,t<i||n==this._bufs.length-1)return[n,t-a];a=i}};Je.prototype.append=function(t){var a=0;if(Kn.isBuffer(t))this._appendBuffer(t);else if(Array.isArray(t))for(;a<t.length;a++)this.append(t[a]);else if(t instanceof Je)for(;a<t._bufs.length;a++)this.append(t._bufs[a]);else t!=null&&(typeof t=="number"&&(t=t.toString()),this._appendBuffer(Kn.from(t)));return this};Je.prototype._appendBuffer=function(t){this._bufs.push(t),this.length+=t.length};Je.prototype._write=function(t,a,n){this._appendBuffer(t),typeof n=="function"&&n()};Je.prototype._read=function(t){if(!this.length)return this.push(null);t=Math.min(t,this.length),this.push(this.slice(0,t)),this.consume(t)};Je.prototype.end=function(t){Zp.prototype.end.call(this,t),this._callback&&(this._callback(null,this.slice()),this._callback=null)};Je.prototype.get=function(t){return this.slice(t,t+1)[0]};Je.prototype.slice=function(t,a){return typeof t=="number"&&t<0&&(t+=this.length),typeof a=="number"&&a<0&&(a+=this.length),this.copy(null,0,t,a)};Je.prototype.copy=function(t,a,n,i){if((typeof n!="number"||n<0)&&(n=0),(typeof i!="number"||i>this.length)&&(i=this.length),n>=this.length||i<=0)return t||Kn.alloc(0);var r=!!t,o=this._offset(n),s=i-n,l=s,u=r&&a||0,c=o[1],f,p;if(n===0&&i==this.length){if(!r)return this._bufs.length===1?this._bufs[0]:Kn.concat(this._bufs,this.length);for(p=0;p<this._bufs.length;p++)this._bufs[p].copy(t,u),u+=this._bufs[p].length;return t}if(l<=this._bufs[o[0]].length-c)return r?this._bufs[o[0]].copy(t,a,c,c+l):this._bufs[o[0]].slice(c,c+l);for(r||(t=Kn.allocUnsafe(s)),p=o[0];p<this._bufs.length;p++){if(f=this._bufs[p].length-c,l>f)this._bufs[p].copy(t,u,c),u+=f;else{this._bufs[p].copy(t,u,c,c+l),u+=f;break}l-=f,c&&(c=0)}return t.length>u?t.slice(0,u):t};Je.prototype.shallowSlice=function(t,a){t=t||0,a=a||this.length,t<0&&(t+=this.length),a<0&&(a+=this.length);var n=this._offset(t),i=this._offset(a),r=this._bufs.slice(n[0],i[0]+1);return i[1]==0?r.pop():r[r.length-1]=r[r.length-1].slice(0,i[1]),n[1]!=0&&(r[0]=r[0].slice(n[1])),new Je(r)};Je.prototype.toString=function(t,a,n){return this.slice(a,n).toString(t)};Je.prototype.consume=function(t){if(t=Math.trunc(t),Number.isNaN(t)||t<=0)return this;for(;this._bufs.length;)if(t>=this._bufs[0].length)t-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(t),this.length-=t;break}return this};Je.prototype.duplicate=function(){for(var t=0,a=new Je;t<this._bufs.length;t++)a.append(this._bufs[t]);return a};Je.prototype.destroy=function(){this._bufs.length=0,this.length=0,this.push(null)};(function(){var e={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1};for(var t in e)(function(a){Je.prototype[a]=function(n){return this.slice(n,n+e[a])[a](0)}})(t)})();sw.exports=Je});var uw=O((hH,cw)=>{cw.exports=y6;var x6=Object.prototype.hasOwnProperty;function y6(){for(var e={},t=0;t<arguments.length;t++){var a=arguments[t];for(var n in a)x6.call(a,n)&&(e[n]=a[n])}return e}});var qp=O((vH,dw)=>{dw.exports=E6;var pw=Buffer.from&&Buffer.from!==Uint8Array.from?Buffer.from:w6;function w6(e,t){return new Buffer(e,t)}function E6(e,t){if(Buffer.isBuffer(e))return e;if(typeof e=="string")return pw(e,t);if(Array.isArray(e))return pw(e);throw new Error("Input should be a buffer or a string")}});var mw=O((bH,fw)=>{var S6=function(){try{if(!Buffer.isEncoding("latin1"))return!1;var e=Buffer.alloc?Buffer.alloc(4):new Buffer(4);return e.fill("ab","ucs2"),e.toString("hex")==="61006200"}catch(t){return!1}}();function C6(e){return e.length===1&&e.charCodeAt(0)<256}function $s(e,t,a,n){if(a<0||n>e.length)throw new RangeError("Out of range index");return a=a>>>0,n=n===void 0?e.length:n>>>0,n>a&&e.fill(t,a,n),e}function A6(e,t,a,n){if(a<0||n>e.length)throw new RangeError("Out of range index");if(n<=a)return e;a=a>>>0,n=n===void 0?e.length:n>>>0;for(var i=a,r=t.length;i<=n-r;)t.copy(e,i),i+=r;return i!==n&&t.copy(e,i,0,n-i),e}function I6(e,t,a,n,i){if(S6)return e.fill(t,a,n,i);if(typeof t=="number")return $s(e,t,a,n);if(typeof t=="string"){if(typeof a=="string"?(i=a,a=0,n=e.length):typeof n=="string"&&(i=n,n=e.length),i!==void 0&&typeof i!="string")throw new TypeError("encoding must be a string");if(i==="latin1"&&(i="binary"),typeof i=="string"&&!Buffer.isEncoding(i))throw new TypeError("Unknown encoding: "+i);if(t==="")return $s(e,0,a,n);if(C6(t))return $s(e,t.charCodeAt(0),a,n);t=new Buffer(t,i)}return Buffer.isBuffer(t)?A6(e,t,a,n):$s(e,0,a,n)}fw.exports=I6});var vw=O((gH,hw)=>{function _6(e){if(typeof e!="number")throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative');return Buffer.allocUnsafe?Buffer.allocUnsafe(e):new Buffer(e)}hw.exports=_6});var Xp=O((xH,gw)=>{var bw=mw(),T6=vw();gw.exports=function(t,a,n){if(typeof t!="number")throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative');if(Buffer.alloc)return Buffer.alloc(t,a,n);var i=T6(t);return t===0?i:a===void 0?bw(i,0):(typeof n!="string"&&(n=void 0),bw(i,a,n))}});var Yp=O(ei=>{var k6=qp(),F6=Xp(),P6="0000000000000000000",O6="7777777777777777777",xw="0".charCodeAt(0),R6="ustar\x0000",B6=parseInt("7777",8),N6=function(e,t,a){return typeof e!="number"?a:(e=~~e,e>=t?t:e>=0||(e+=t,e>=0)?e:0)},j6=function(e){switch(e){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null},L6=function(e){switch(e){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0},yw=function(e,t,a,n){for(;a<n;a++)if(e[a]===t)return a;return n},ww=function(e){for(var t=256,a=0;a<148;a++)t+=e[a];for(var n=156;n<512;n++)t+=e[n];return t},La=function(e,t){return e=e.toString(8),e.length>t?O6.slice(0,t)+" ":P6.slice(0,t-e.length)+e+" "};function M6(e){var t;if(e[0]===128)t=!0;else if(e[0]===255)t=!1;else return null;for(var a=!1,n=[],i=e.length-1;i>0;i--){var r=e[i];t?n.push(r):a&&r===0?n.push(0):a?(a=!1,n.push(256-r)):n.push(255-r)}var o=0,s=n.length;for(i=0;i<s;i++)o+=n[i]*Math.pow(256,i);return t?o:-1*o}var Ma=function(e,t,a){if(e=e.slice(t,t+a),t=0,e[t]&128)return M6(e);for(;t<e.length&&e[t]===32;)t++;for(var n=N6(yw(e,32,t,e.length),e.length,e.length);t<n&&e[t]===0;)t++;return n===t?0:parseInt(e.slice(t,n).toString(),8)},Qn=function(e,t,a,n){return e.slice(t,yw(e,0,t,t+a)).toString(n)},$p=function(e){var t=Buffer.byteLength(e),a=Math.floor(Math.log(t)/Math.log(10))+1;return t+a>=Math.pow(10,a)&&a++,t+a+e};ei.decodeLongPath=function(e,t){return Qn(e,0,e.length,t)};ei.encodePax=function(e){var t="";e.name&&(t+=$p(" path="+e.name+` `)),e.linkname&&(t+=$p(" linkpath="+e.linkname+` `));var a=e.pax;if(a)for(var n in a)t+=$p(" "+n+"="+a[n]+` -`);return F6(t)};ei.decodePax=function(e){for(var t={};e.length;){for(var a=0;a<e.length&&e[a]!==32;)a++;var n=parseInt(e.slice(0,a).toString(),10);if(!n)return t;var i=e.slice(a+1,n-1).toString(),r=i.indexOf("=");if(r===-1)return t;t[i.slice(0,r)]=i.slice(r+1),e=e.slice(n)}return t};ei.encode=function(e){var t=P6(512),a=e.name,n="";if(e.typeflag===5&&a[a.length-1]!=="/"&&(a+="/"),Buffer.byteLength(a)!==a.length)return null;for(;Buffer.byteLength(a)>100;){var i=a.indexOf("/");if(i===-1)return null;n+=n?"/"+a.slice(0,i):a.slice(0,i),a=a.slice(i+1)}return Buffer.byteLength(a)>100||Buffer.byteLength(n)>155||e.linkname&&Buffer.byteLength(e.linkname)>100?null:(t.write(a),t.write(La(e.mode&N6,6),100),t.write(La(e.uid,6),108),t.write(La(e.gid,6),116),t.write(La(e.size,11),124),t.write(La(e.mtime.getTime()/1e3|0,11),136),t[156]=bw+M6(e.type),e.linkname&&t.write(e.linkname,157),t.write(B6,257),e.uname&&t.write(e.uname,265),e.gname&&t.write(e.gname,297),t.write(La(e.devmajor||0,6),329),t.write(La(e.devminor||0,6),337),n&&t.write(n,345),t.write(La(xw(t),6),148),t)};ei.decode=function(e,t){var a=e[156]===0?0:e[156]-bw,n=Qn(e,0,100,t),i=Ma(e,100,8),r=Ma(e,108,8),o=Ma(e,116,8),s=Ma(e,124,12),l=Ma(e,136,12),u=L6(a),c=e[157]===0?null:Qn(e,157,100,t),f=Qn(e,265,32),p=Qn(e,297,32),b=Ma(e,329,8),d=Ma(e,337,8);e[345]&&(n=Qn(e,345,155,t)+"/"+n),a===0&&n&&n[n.length-1]==="/"&&(a=5);var h=xw(e);if(h===8*32)return null;if(h!==Ma(e,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");return{name:n,mode:i,uid:r,gid:o,size:s,mtime:new Date(1e3*l),type:u,linkname:c,uname:f,gname:p,devmajor:b,devminor:d}}});var Kp=O((EH,Ew)=>{"use strict";Ew.exports=xa;var Ys=ja(),ww=Object.create(Zn());ww.inherits=fn();ww.inherits(xa,Ys);function z6(e,t){var a=this._transformState;a.transforming=!1;var n=a.writecb;if(!n)return this.emit("error",new Error("write callback called multiple times"));a.writechunk=null,a.writecb=null,t!=null&&this.push(t),n(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}function xa(e){if(!(this instanceof xa))return new xa(e);Ys.call(this,e),this._transformState={afterTransform:z6.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,e&&(typeof e.transform=="function"&&(this._transform=e.transform),typeof e.flush=="function"&&(this._flush=e.flush)),this.on("prefinish",G6)}function G6(){var e=this;typeof this._flush=="function"?this._flush(function(t,a){yw(e,t,a)}):yw(this,null,null)}xa.prototype.push=function(e,t){return this._transformState.needTransform=!1,Ys.prototype.push.call(this,e,t)};xa.prototype._transform=function(e,t,a){throw new Error("_transform() is not implemented")};xa.prototype._write=function(e,t,a){var n=this._transformState;if(n.writecb=a,n.writechunk=e,n.writeencoding=t,!n.transforming){var i=this._readableState;(n.needTransform||i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}};xa.prototype._read=function(e){var t=this._transformState;t.writechunk!==null&&t.writecb&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0};xa.prototype._destroy=function(e,t){var a=this;Ys.prototype._destroy.call(this,e,function(n){t(n),a.emit("close")})};function yw(e,t,a){if(t)return e.emit("error",t);if(a!=null&&e.push(a),e._writableState.length)throw new Error("Calling transform done when ws.length != 0");if(e._transformState.transforming)throw new Error("Calling transform done when still transforming");return e.push(null)}});var Iw=O((SH,Aw)=>{"use strict";Aw.exports=ur;var Sw=Kp(),Cw=Object.create(Zn());Cw.inherits=fn();Cw.inherits(ur,Sw);function ur(e){if(!(this instanceof ur))return new ur(e);Sw.call(this,e)}ur.prototype._transform=function(e,t,a){a(null,e)}});var ti=O((ta,_w)=>{ta=_w.exports=Gp();ta.Stream=ta;ta.Readable=ta;ta.Writable=Vp();ta.Duplex=ja();ta.Transform=Kp();ta.PassThrough=Iw()});var Bw=O((CH,Rw)=>{var kw=require("util"),H6=ow(),W6=lw(),pr=Yp(),Fw=ti().Writable,Pw=ti().PassThrough,Ow=function(){},Tw=function(e){return e&=511,e&&512-e},V6=function(e,t){var a=new Ks(e,t);return a.end(),a},U6=function(e,t){return t.path&&(e.name=t.path),t.linkpath&&(e.linkname=t.linkpath),t.size&&(e.size=parseInt(t.size,10)),e.pax=t,e},Ks=function(e,t){this._parent=e,this.offset=t,Pw.call(this)};kw.inherits(Ks,Pw);Ks.prototype.destroy=function(e){this._parent.destroy(e)};var ya=function(e){if(!(this instanceof ya))return new ya(e);Fw.call(this,e),e=e||{},this._offset=0,this._buffer=H6(),this._missing=0,this._partial=!1,this._onparse=Ow,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var t=this,a=t._buffer,n=function(){t._continue()},i=function(p){if(t._locked=!1,p)return t.destroy(p);t._stream||n()},r=function(){t._stream=null;var p=Tw(t._header.size);p?t._parse(p,o):t._parse(512,f),t._locked||n()},o=function(){t._buffer.consume(Tw(t._header.size)),t._parse(512,f),n()},s=function(){var p=t._header.size;t._paxGlobal=pr.decodePax(a.slice(0,p)),a.consume(p),r()},l=function(){var p=t._header.size;t._pax=pr.decodePax(a.slice(0,p)),t._paxGlobal&&(t._pax=W6(t._paxGlobal,t._pax)),a.consume(p),r()},u=function(){var p=t._header.size;this._gnuLongPath=pr.decodeLongPath(a.slice(0,p),e.filenameEncoding),a.consume(p),r()},c=function(){var p=t._header.size;this._gnuLongLinkPath=pr.decodeLongPath(a.slice(0,p),e.filenameEncoding),a.consume(p),r()},f=function(){var p=t._offset,b;try{b=t._header=pr.decode(a.slice(0,512),e.filenameEncoding)}catch(d){t.emit("error",d)}if(a.consume(512),!b){t._parse(512,f),n();return}if(b.type==="gnu-long-path"){t._parse(b.size,u),n();return}if(b.type==="gnu-long-link-path"){t._parse(b.size,c),n();return}if(b.type==="pax-global-header"){t._parse(b.size,s),n();return}if(b.type==="pax-header"){t._parse(b.size,l),n();return}if(t._gnuLongPath&&(b.name=t._gnuLongPath,t._gnuLongPath=null),t._gnuLongLinkPath&&(b.linkname=t._gnuLongLinkPath,t._gnuLongLinkPath=null),t._pax&&(t._header=b=U6(b,t._pax),t._pax=null),t._locked=!0,!b.size||b.type==="directory"){t._parse(512,f),t.emit("entry",b,V6(t,p),i);return}t._stream=new Ks(t,p),t.emit("entry",b,t._stream,i),t._parse(b.size,r),n()};this._onheader=f,this._parse(512,f)};kw.inherits(ya,Fw);ya.prototype.destroy=function(e){this._destroyed||(this._destroyed=!0,e&&this.emit("error",e),this.emit("close"),this._stream&&this._stream.emit("close"))};ya.prototype._parse=function(e,t){this._destroyed||(this._offset+=e,this._missing=e,t===this._onheader&&(this._partial=!1),this._onparse=t)};ya.prototype._continue=function(){if(!this._destroyed){var e=this._cb;this._cb=Ow,this._overflow?this._write(this._overflow,void 0,e):e()}};ya.prototype._write=function(e,t,a){if(!this._destroyed){var n=this._stream,i=this._buffer,r=this._missing;if(e.length&&(this._partial=!0),e.length<r)return this._missing-=e.length,this._overflow=null,n?n.write(e,a):(i.append(e),a());this._cb=a,this._missing=0;var o=null;e.length>r&&(o=e.slice(r),e=e.slice(0,r)),n?n.end(e):i.append(e),this._overflow=o,this._onparse()}};ya.prototype._final=function(e){if(this._partial)return this.destroy(new Error("Unexpected end of data"));e()};Rw.exports=ya});var jw=O((AH,Nw)=>{Nw.exports=require("constants")});var Dw=O((IH,Mw)=>{Mw.exports=Lw;function Lw(e,t){if(e&&t)return Lw(e)(t);if(typeof e!="function")throw new TypeError("need wrapper function");return Object.keys(e).forEach(function(n){a[n]=e[n]}),a;function a(){for(var n=new Array(arguments.length),i=0;i<n.length;i++)n[i]=arguments[i];var r=e.apply(this,n),o=n[n.length-1];return typeof r=="function"&&r!==o&&Object.keys(o).forEach(function(s){r[s]=o[s]}),r}}});var ed=O((_H,Qp)=>{var zw=Dw();Qp.exports=zw(Qs);Qp.exports.strict=zw(Gw);Qs.proto=Qs(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return Qs(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return Gw(this)},configurable:!0})});function Qs(e){var t=function(){return t.called?t.value:(t.called=!0,t.value=e.apply(this,arguments))};return t.called=!1,t}function Gw(e){var t=function(){if(t.called)throw new Error(t.onceError);return t.called=!0,t.value=e.apply(this,arguments)},a=e.name||"Function wrapped with `once`";return t.onceError=a+" shouldn't be called more than once",t.called=!1,t}});var td=O((TH,Ww)=>{var J6=ed(),Z6=function(){},q6=function(e){return e.setHeader&&typeof e.abort=="function"},X6=function(e){return e.stdio&&Array.isArray(e.stdio)&&e.stdio.length===3},Hw=function(e,t,a){if(typeof t=="function")return Hw(e,null,t);t||(t={}),a=J6(a||Z6);var n=e._writableState,i=e._readableState,r=t.readable||t.readable!==!1&&e.readable,o=t.writable||t.writable!==!1&&e.writable,s=!1,l=function(){e.writable||u()},u=function(){o=!1,r||a.call(e)},c=function(){r=!1,o||a.call(e)},f=function(m){a.call(e,m?new Error("exited with error code: "+m):null)},p=function(m){a.call(e,m)},b=function(){process.nextTick(d)},d=function(){if(!s){if(r&&!(i&&i.ended&&!i.destroyed))return a.call(e,new Error("premature close"));if(o&&!(n&&n.ended&&!n.destroyed))return a.call(e,new Error("premature close"))}},h=function(){e.req.on("finish",u)};return q6(e)?(e.on("complete",u),e.on("abort",b),e.req?h():e.on("request",h)):o&&!n&&(e.on("end",l),e.on("close",l)),X6(e)&&e.on("exit",f),e.on("end",c),e.on("finish",u),t.error!==!1&&e.on("error",p),e.on("close",b),function(){s=!0,e.removeListener("complete",u),e.removeListener("abort",b),e.removeListener("request",h),e.req&&e.req.removeListener("finish",u),e.removeListener("end",l),e.removeListener("close",l),e.removeListener("finish",u),e.removeListener("exit",f),e.removeListener("end",c),e.removeListener("error",p),e.removeListener("close",b)}};Ww.exports=Hw});var qw=O((kH,Zw)=>{var ai=jw(),Vw=td(),tl=require("util"),$6=Xp(),Y6=qp(),Uw=ti().Readable,ni=ti().Writable,K6=require("string_decoder").StringDecoder,el=Yp(),Q6=parseInt("755",8),eR=parseInt("644",8),Jw=$6(1024),nd=function(){},ad=function(e,t){t&=511,t&&e.push(Jw.slice(0,512-t))};function tR(e){switch(e&ai.S_IFMT){case ai.S_IFBLK:return"block-device";case ai.S_IFCHR:return"character-device";case ai.S_IFDIR:return"directory";case ai.S_IFIFO:return"fifo";case ai.S_IFLNK:return"symlink"}return"file"}var al=function(e){ni.call(this),this.written=0,this._to=e,this._destroyed=!1};tl.inherits(al,ni);al.prototype._write=function(e,t,a){if(this.written+=e.length,this._to.push(e))return a();this._to._drain=a};al.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var nl=function(){ni.call(this),this.linkname="",this._decoder=new K6("utf-8"),this._destroyed=!1};tl.inherits(nl,ni);nl.prototype._write=function(e,t,a){this.linkname+=this._decoder.write(e),a()};nl.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var dr=function(){ni.call(this),this._destroyed=!1};tl.inherits(dr,ni);dr.prototype._write=function(e,t,a){a(new Error("No body allowed for this entry"))};dr.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var aa=function(e){if(!(this instanceof aa))return new aa(e);Uw.call(this,e),this._drain=nd,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};tl.inherits(aa,Uw);aa.prototype.entry=function(e,t,a){if(this._stream)throw new Error("already piping an entry");if(!(this._finalized||this._destroyed)){typeof t=="function"&&(a=t,t=null),a||(a=nd);var n=this;if((!e.size||e.type==="symlink")&&(e.size=0),e.type||(e.type=tR(e.mode)),e.mode||(e.mode=e.type==="directory"?Q6:eR),e.uid||(e.uid=0),e.gid||(e.gid=0),e.mtime||(e.mtime=new Date),typeof t=="string"&&(t=Y6(t)),Buffer.isBuffer(t))return e.size=t.length,this._encode(e),this.push(t),ad(n,e.size),process.nextTick(a),new dr;if(e.type==="symlink"&&!e.linkname){var i=new nl;return Vw(i,function(o){if(o)return n.destroy(),a(o);e.linkname=i.linkname,n._encode(e),a()}),i}if(this._encode(e),e.type!=="file"&&e.type!=="contiguous-file")return process.nextTick(a),new dr;var r=new al(this);return this._stream=r,Vw(r,function(o){if(n._stream=null,o)return n.destroy(),a(o);if(r.written!==e.size)return n.destroy(),a(new Error("size mismatch"));ad(n,e.size),n._finalizing&&n.finalize(),a()}),r}};aa.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(Jw),this.push(null))};aa.prototype.destroy=function(e){this._destroyed||(this._destroyed=!0,e&&this.emit("error",e),this.emit("close"),this._stream&&this._stream.destroy&&this._stream.destroy())};aa.prototype._encode=function(e){if(!e.pax){var t=el.encode(e);if(t){this.push(t);return}}this._encodePax(e)};aa.prototype._encodePax=function(e){var t=el.encodePax({name:e.name,linkname:e.linkname,pax:e.pax}),a={name:"PaxHeader",mode:e.mode,uid:e.uid,gid:e.gid,size:t.length,mtime:e.mtime,type:"pax-header",linkname:e.linkname&&"PaxHeader",uname:e.uname,gname:e.gname,devmajor:e.devmajor,devminor:e.devminor};this.push(el.encode(a)),this.push(t),ad(this,t.length),a.size=e.size,a.type=e.type,this.push(el.encode(a))};aa.prototype._read=function(e){var t=this._drain;this._drain=nd,t()};Zw.exports=aa});var Xw=O(id=>{id.extract=Bw();id.pack=qw()});var il=O((PH,Yw)=>{"use strict";var $w=wy(),aR=Ds(),nR=Xw();Yw.exports=()=>e=>{if(!Buffer.isBuffer(e)&&!aR(e))return Promise.reject(new TypeError(`Expected a Buffer or Stream, got ${typeof e}`));if(Buffer.isBuffer(e)&&(!$w(e)||$w(e).ext!=="tar"))return Promise.resolve([]);let t=nR.extract(),a=[];t.on("entry",(i,r,o)=>{let s=[];r.on("data",l=>s.push(l)),r.on("end",()=>{let l={data:Buffer.concat(s),mode:i.mode,mtime:i.mtime,path:i.name,type:i.type};(i.type==="symlink"||i.type==="link")&&(l.linkname=i.linkname),a.push(l),o()})});let n=new Promise((i,r)=>{Buffer.isBuffer(e)||e.on("error",r),t.on("finish",()=>i(a)),t.on("error",r)});return t.then=n.then.bind(n),t.catch=n.catch.bind(n),Buffer.isBuffer(e)?t.end(e):e.pipe(t),t}});var Qw=O((OH,Kw)=>{"use strict";var ii=e=>Array.from(e).map(t=>t.charCodeAt(0)),iR=ii("META-INF/mozilla.rsa"),rR=ii("[Content_Types].xml"),oR=ii("_rels/.rels");Kw.exports=e=>{let t=new Uint8Array(e);if(!(t&&t.length>1))return null;let a=(n,i)=>{i=Object.assign({offset:0},i);for(let r=0;r<n.length;r++)if(i.mask){if(n[r]!==(i.mask[r]&t[r+i.offset]))return!1}else if(n[r]!==t[r+i.offset])return!1;return!0};if(a([255,216,255]))return{ext:"jpg",mime:"image/jpeg"};if(a([137,80,78,71,13,10,26,10]))return{ext:"png",mime:"image/png"};if(a([71,73,70]))return{ext:"gif",mime:"image/gif"};if(a([87,69,66,80],{offset:8}))return{ext:"webp",mime:"image/webp"};if(a([70,76,73,70]))return{ext:"flif",mime:"image/flif"};if((a([73,73,42,0])||a([77,77,0,42]))&&a([67,82],{offset:8}))return{ext:"cr2",mime:"image/x-canon-cr2"};if(a([73,73,42,0])||a([77,77,0,42]))return{ext:"tif",mime:"image/tiff"};if(a([66,77]))return{ext:"bmp",mime:"image/bmp"};if(a([73,73,188]))return{ext:"jxr",mime:"image/vnd.ms-photo"};if(a([56,66,80,83]))return{ext:"psd",mime:"image/vnd.adobe.photoshop"};if(a([80,75,3,4])){if(a([109,105,109,101,116,121,112,101,97,112,112,108,105,99,97,116,105,111,110,47,101,112,117,98,43,122,105,112],{offset:30}))return{ext:"epub",mime:"application/epub+zip"};if(a(iR,{offset:30}))return{ext:"xpi",mime:"application/x-xpinstall"};if(a(rR,{offset:30})||a(oR,{offset:30})){let n=t.subarray(4,2004),i=o=>o.findIndex((s,l,u)=>u[l]===80&&u[l+1]===75&&u[l+2]===3&&u[l+3]===4),r=i(n);if(r!==-1){let o=t.subarray(r+8,r+8+1e3),s=i(o);if(s!==-1){let l=8+r+s+30;if(a(ii("word/"),{offset:l}))return{ext:"docx",mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"};if(a(ii("ppt/"),{offset:l}))return{ext:"pptx",mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation"};if(a(ii("xl/"),{offset:l}))return{ext:"xlsx",mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}}}}}if(a([80,75])&&(t[2]===3||t[2]===5||t[2]===7)&&(t[3]===4||t[3]===6||t[3]===8))return{ext:"zip",mime:"application/zip"};if(a([117,115,116,97,114],{offset:257}))return{ext:"tar",mime:"application/x-tar"};if(a([82,97,114,33,26,7])&&(t[6]===0||t[6]===1))return{ext:"rar",mime:"application/x-rar-compressed"};if(a([31,139,8]))return{ext:"gz",mime:"application/gzip"};if(a([66,90,104]))return{ext:"bz2",mime:"application/x-bzip2"};if(a([55,122,188,175,39,28]))return{ext:"7z",mime:"application/x-7z-compressed"};if(a([120,1]))return{ext:"dmg",mime:"application/x-apple-diskimage"};if(a([51,103,112,53])||a([0,0,0])&&a([102,116,121,112],{offset:4})&&(a([109,112,52,49],{offset:8})||a([109,112,52,50],{offset:8})||a([105,115,111,109],{offset:8})||a([105,115,111,50],{offset:8})||a([109,109,112,52],{offset:8})||a([77,52,86],{offset:8})||a([100,97,115,104],{offset:8})))return{ext:"mp4",mime:"video/mp4"};if(a([77,84,104,100]))return{ext:"mid",mime:"audio/midi"};if(a([26,69,223,163])){let n=t.subarray(4,4100),i=n.findIndex((r,o,s)=>s[o]===66&&s[o+1]===130);if(i!==-1){let r=i+3,o=s=>Array.from(s).every((l,u)=>n[r+u]===l.charCodeAt(0));if(o("matroska"))return{ext:"mkv",mime:"video/x-matroska"};if(o("webm"))return{ext:"webm",mime:"video/webm"}}}if(a([0,0,0,20,102,116,121,112,113,116,32,32])||a([102,114,101,101],{offset:4})||a([102,116,121,112,113,116,32,32],{offset:4})||a([109,100,97,116],{offset:4})||a([119,105,100,101],{offset:4}))return{ext:"mov",mime:"video/quicktime"};if(a([82,73,70,70])&&a([65,86,73],{offset:8}))return{ext:"avi",mime:"video/x-msvideo"};if(a([48,38,178,117,142,102,207,17,166,217]))return{ext:"wmv",mime:"video/x-ms-wmv"};if(a([0,0,1,186]))return{ext:"mpg",mime:"video/mpeg"};for(let n=0;n<2&&n<t.length-16;n++)if(a([73,68,51],{offset:n})||a([255,226],{offset:n,mask:[255,226]}))return{ext:"mp3",mime:"audio/mpeg"};return a([102,116,121,112,77,52,65],{offset:4})||a([77,52,65,32])?{ext:"m4a",mime:"audio/m4a"}:a([79,112,117,115,72,101,97,100],{offset:28})?{ext:"opus",mime:"audio/opus"}:a([79,103,103,83])?{ext:"ogg",mime:"audio/ogg"}:a([102,76,97,67])?{ext:"flac",mime:"audio/x-flac"}:a([82,73,70,70])&&a([87,65,86,69],{offset:8})?{ext:"wav",mime:"audio/x-wav"}:a([35,33,65,77,82,10])?{ext:"amr",mime:"audio/amr"}:a([37,80,68,70])?{ext:"pdf",mime:"application/pdf"}:a([77,90])?{ext:"exe",mime:"application/x-msdownload"}:(t[0]===67||t[0]===70)&&a([87,83],{offset:1})?{ext:"swf",mime:"application/x-shockwave-flash"}:a([123,92,114,116,102])?{ext:"rtf",mime:"application/rtf"}:a([0,97,115,109])?{ext:"wasm",mime:"application/wasm"}:a([119,79,70,70])&&(a([0,1,0,0],{offset:4})||a([79,84,84,79],{offset:4}))?{ext:"woff",mime:"font/woff"}:a([119,79,70,50])&&(a([0,1,0,0],{offset:4})||a([79,84,84,79],{offset:4}))?{ext:"woff2",mime:"font/woff2"}:a([76,80],{offset:34})&&(a([0,0,1],{offset:8})||a([1,0,2],{offset:8})||a([2,0,2],{offset:8}))?{ext:"eot",mime:"application/octet-stream"}:a([0,1,0,0,0])?{ext:"ttf",mime:"font/ttf"}:a([79,84,84,79,0])?{ext:"otf",mime:"font/otf"}:a([0,0,1,0])?{ext:"ico",mime:"image/x-icon"}:a([70,76,86,1])?{ext:"flv",mime:"video/x-flv"}:a([37,33])?{ext:"ps",mime:"application/postscript"}:a([253,55,122,88,90,0])?{ext:"xz",mime:"application/x-xz"}:a([83,81,76,105])?{ext:"sqlite",mime:"application/x-sqlite3"}:a([78,69,83,26])?{ext:"nes",mime:"application/x-nintendo-nes-rom"}:a([67,114,50,52])?{ext:"crx",mime:"application/x-google-chrome-extension"}:a([77,83,67,70])||a([73,83,99,40])?{ext:"cab",mime:"application/vnd.ms-cab-compressed"}:a([33,60,97,114,99,104,62,10,100,101,98,105,97,110,45,98,105,110,97,114,121])?{ext:"deb",mime:"application/x-deb"}:a([33,60,97,114,99,104,62])?{ext:"ar",mime:"application/x-unix-archive"}:a([237,171,238,219])?{ext:"rpm",mime:"application/x-rpm"}:a([31,160])||a([31,157])?{ext:"Z",mime:"application/x-compress"}:a([76,90,73,80])?{ext:"lz",mime:"application/x-lzip"}:a([208,207,17,224,161,177,26,225])?{ext:"msi",mime:"application/x-msi"}:a([6,14,43,52,2,5,1,1,13,1,2,1,1,2])?{ext:"mxf",mime:"application/mxf"}:a([71],{offset:4})&&(a([71],{offset:192})||a([71],{offset:196}))?{ext:"mts",mime:"video/mp2t"}:a([66,76,69,78,68,69,82])?{ext:"blend",mime:"application/x-blender"}:a([66,80,71,251])?{ext:"bpg",mime:"image/bpg"}:null}});var a1=O((RH,t1)=>{var e1=[0,1,3,7,15,31,63,127,255],fr=function(e){this.stream=e,this.bitOffset=0,this.curByte=0,this.hasByte=!1};fr.prototype._ensureByte=function(){this.hasByte||(this.curByte=this.stream.readByte(),this.hasByte=!0)};fr.prototype.read=function(e){for(var t=0;e>0;){this._ensureByte();var a=8-this.bitOffset;if(e>=a)t<<=a,t|=e1[a]&this.curByte,this.hasByte=!1,this.bitOffset=0,e-=a;else{t<<=e;var n=a-e;t|=(this.curByte&e1[e]<<n)>>n,this.bitOffset+=e,e=0}}return t};fr.prototype.seek=function(e){var t=e%8,a=(e-t)/8;this.bitOffset=t,this.stream.seek(a),this.hasByte=!1};fr.prototype.pi=function(){var e=new Buffer(6),t;for(t=0;t<e.length;t++)e[t]=this.read(8);return e.toString("hex")};t1.exports=fr});var i1=O((BH,n1)=>{var hn=function(){};hn.prototype.readByte=function(){throw new Error("abstract method readByte() not implemented")};hn.prototype.read=function(e,t,a){for(var n=0;n<a;){var i=this.readByte();if(i<0)return n===0?-1:n;e[t++]=i,n++}return n};hn.prototype.seek=function(e){throw new Error("abstract method seek() not implemented")};hn.prototype.writeByte=function(e){throw new Error("abstract method readByte() not implemented")};hn.prototype.write=function(e,t,a){var n;for(n=0;n<a;n++)this.writeByte(e[t++]);return a};hn.prototype.flush=function(){};n1.exports=hn});var o1=O((NH,r1)=>{r1.exports=function(){var e=new Uint32Array([0,79764919,159529838,222504665,319059676,398814059,445009330,507990021,638119352,583659535,797628118,726387553,890018660,835552979,1015980042,944750013,1276238704,1221641927,1167319070,1095957929,1595256236,1540665371,1452775106,1381403509,1780037320,1859660671,1671105958,1733955601,2031960084,2111593891,1889500026,1952343757,2552477408,2632100695,2443283854,2506133561,2334638140,2414271883,2191915858,2254759653,3190512472,3135915759,3081330742,3009969537,2905550212,2850959411,2762807018,2691435357,3560074640,3505614887,3719321342,3648080713,3342211916,3287746299,3467911202,3396681109,4063920168,4143685023,4223187782,4286162673,3779000052,3858754371,3904687514,3967668269,881225847,809987520,1023691545,969234094,662832811,591600412,771767749,717299826,311336399,374308984,453813921,533576470,25881363,88864420,134795389,214552010,2023205639,2086057648,1897238633,1976864222,1804852699,1867694188,1645340341,1724971778,1587496639,1516133128,1461550545,1406951526,1302016099,1230646740,1142491917,1087903418,2896545431,2825181984,2770861561,2716262478,3215044683,3143675388,3055782693,3001194130,2326604591,2389456536,2200899649,2280525302,2578013683,2640855108,2418763421,2498394922,3769900519,3832873040,3912640137,3992402750,4088425275,4151408268,4197601365,4277358050,3334271071,3263032808,3476998961,3422541446,3585640067,3514407732,3694837229,3640369242,1762451694,1842216281,1619975040,1682949687,2047383090,2127137669,1938468188,2001449195,1325665622,1271206113,1183200824,1111960463,1543535498,1489069629,1434599652,1363369299,622672798,568075817,748617968,677256519,907627842,853037301,1067152940,995781531,51762726,131386257,177728840,240578815,269590778,349224269,429104020,491947555,4046411278,4126034873,4172115296,4234965207,3794477266,3874110821,3953728444,4016571915,3609705398,3555108353,3735388376,3664026991,3290680682,3236090077,3449943556,3378572211,3174993278,3120533705,3032266256,2961025959,2923101090,2868635157,2813903052,2742672763,2604032198,2683796849,2461293480,2524268063,2284983834,2364738477,2175806836,2238787779,1569362073,1498123566,1409854455,1355396672,1317987909,1246755826,1192025387,1137557660,2072149281,2135122070,1912620623,1992383480,1753615357,1816598090,1627664531,1707420964,295390185,358241886,404320391,483945776,43990325,106832002,186451547,266083308,932423249,861060070,1041341759,986742920,613929101,542559546,756411363,701822548,3316196985,3244833742,3425377559,3370778784,3601682597,3530312978,3744426955,3689838204,3819031489,3881883254,3928223919,4007849240,4037393693,4100235434,4180117107,4259748804,2310601993,2373574846,2151335527,2231098320,2596047829,2659030626,2470359227,2550115596,2947551409,2876312838,2788305887,2733848168,3165939309,3094707162,3040238851,2985771188]),t=function(){var a=4294967295;this.getCRC=function(){return~a>>>0},this.updateCRC=function(n){a=a<<8^e[(a>>>24^n)&255]},this.updateCRCRun=function(n,i){for(;i-- >0;)a=a<<8^e[(a>>>24^n)&255]}};return t}()});var s1=O((jH,sR)=>{sR.exports={name:"seek-bzip",version:"1.0.6",contributors:["C. Scott Ananian (http://cscott.net)","Eli Skeggs","Kevin Kwok","Rob Landley (http://landley.net)"],description:"a pure-JavaScript Node.JS module for random-access decoding bzip2 data",main:"./lib/index.js",repository:{type:"git",url:"https://github.com/cscott/seek-bzip.git"},license:"MIT",bin:{"seek-bunzip":"./bin/seek-bunzip","seek-table":"./bin/seek-bzip-table"},directories:{test:"test"},dependencies:{commander:"^2.8.1"},devDependencies:{fibers:"~1.0.6",mocha:"~2.2.5"},scripts:{test:"mocha"}}});var h1=O((LH,m1)=>{var lR=a1(),mr=i1(),p1=o1(),d1=s1(),rl=20,l1=258,c1=0,cR=1,uR=2,pR=6,dR=50,fR="314159265359",mR="177245385090",u1=function(e,t){var a=e[t],n;for(n=t;n>0;n--)e[n]=e[n-1];return e[0]=a,a},De={OK:0,LAST_BLOCK:-1,NOT_BZIP_DATA:-2,UNEXPECTED_INPUT_EOF:-3,UNEXPECTED_OUTPUT_EOF:-4,DATA_ERROR:-5,OUT_OF_MEMORY:-6,OBSOLETE_INPUT:-7,END_OF_BLOCK:-8},Da={};Da[De.LAST_BLOCK]="Bad file checksum";Da[De.NOT_BZIP_DATA]="Not bzip data";Da[De.UNEXPECTED_INPUT_EOF]="Unexpected input EOF";Da[De.UNEXPECTED_OUTPUT_EOF]="Unexpected output EOF";Da[De.DATA_ERROR]="Data error";Da[De.OUT_OF_MEMORY]="Out of memory";Da[De.OBSOLETE_INPUT]="Obsolete (pre 0.9.5) bzip format not supported.";var ut=function(e,t){var a=Da[e]||"unknown error";t&&(a+=": "+t);var n=new TypeError(a);throw n.errorCode=e,n},gt=function(e,t){this.writePos=this.writeCurrent=this.writeCount=0,this._start_bunzip(e,t)};gt.prototype._init_block=function(){var e=this._get_next_block();return e?(this.blockCRC=new p1,!0):(this.writeCount=-1,!1)};gt.prototype._start_bunzip=function(e,t){var a=new Buffer(4);(e.read(a,0,4)!==4||String.fromCharCode(a[0],a[1],a[2])!=="BZh")&&ut(De.NOT_BZIP_DATA,"bad magic");var n=a[3]-48;(n<1||n>9)&&ut(De.NOT_BZIP_DATA,"level out of range"),this.reader=new lR(e),this.dbufSize=1e5*n,this.nextoutput=0,this.outputStream=t,this.streamCRC=0};gt.prototype._get_next_block=function(){var e,t,a,n=this.reader,i=n.pi();if(i===mR)return!1;i!==fR&&ut(De.NOT_BZIP_DATA),this.targetBlockCRC=n.read(32)>>>0,this.streamCRC=(this.targetBlockCRC^(this.streamCRC<<1|this.streamCRC>>>31))>>>0,n.read(1)&&ut(De.OBSOLETE_INPUT);var r=n.read(24);r>this.dbufSize&&ut(De.DATA_ERROR,"initial position out of bounds");var o=n.read(16),s=new Buffer(256),l=0;for(e=0;e<16;e++)if(o&1<<15-e){var u=e*16;for(a=n.read(16),t=0;t<16;t++)a&1<<15-t&&(s[l++]=u+t)}var c=n.read(3);(c<uR||c>pR)&&ut(De.DATA_ERROR);var f=n.read(15);f===0&&ut(De.DATA_ERROR);var p=new Buffer(256);for(e=0;e<c;e++)p[e]=e;var b=new Buffer(f);for(e=0;e<f;e++){for(t=0;n.read(1);t++)t>=c&&ut(De.DATA_ERROR);b[e]=u1(p,t)}var d=l+2,h=[],m;for(t=0;t<c;t++){var v=new Buffer(d),x=new Uint16Array(rl+1);for(o=n.read(5),e=0;e<d;e++){for(;(o<1||o>rl)&&ut(De.DATA_ERROR),!!n.read(1);)n.read(1)?o--:o++;v[e]=o}var E,g;for(E=g=v[0],e=1;e<d;e++)v[e]>g?g=v[e]:v[e]<E&&(E=v[e]);m={},h.push(m),m.permute=new Uint16Array(l1),m.limit=new Uint32Array(rl+2),m.base=new Uint32Array(rl+1),m.minLen=E,m.maxLen=g;var w=0;for(e=E;e<=g;e++)for(x[e]=m.limit[e]=0,o=0;o<d;o++)v[o]===e&&(m.permute[w++]=o);for(e=0;e<d;e++)x[v[e]]++;for(w=o=0,e=E;e<g;e++)w+=x[e],m.limit[e]=w-1,w<<=1,o+=x[e],m.base[e+1]=w-o;m.limit[g+1]=Number.MAX_VALUE,m.limit[g]=w+x[g]-1,m.base[E]=0}var C=new Uint32Array(256);for(e=0;e<256;e++)p[e]=e;var y=0,S=0,I=0,_,P=this.dbuf=new Uint32Array(this.dbufSize);for(d=0;;){for(d--||(d=dR-1,I>=f&&ut(De.DATA_ERROR),m=h[b[I++]]),e=m.minLen,t=n.read(e);e>m.maxLen&&ut(De.DATA_ERROR),!(t<=m.limit[e]);e++)t=t<<1|n.read(1);t-=m.base[e],(t<0||t>=l1)&&ut(De.DATA_ERROR);var F=m.permute[t];if(F===c1||F===cR){y||(y=1,o=0),F===c1?o+=y:o+=2*y,y<<=1;continue}if(y)for(y=0,S+o>this.dbufSize&&ut(De.DATA_ERROR),_=s[p[0]],C[_]+=o;o--;)P[S++]=_;if(F>l)break;S>=this.dbufSize&&ut(De.DATA_ERROR),e=F-1,_=u1(p,e),_=s[_],C[_]++,P[S++]=_}for((r<0||r>=S)&&ut(De.DATA_ERROR),t=0,e=0;e<256;e++)a=t+C[e],C[e]=t,t=a;for(e=0;e<S;e++)_=P[e]&255,P[C[_]]|=e<<8,C[_]++;var B=0,N=0,L=0;return S&&(B=P[r],N=B&255,B>>=8,L=-1),this.writePos=B,this.writeCurrent=N,this.writeCount=S,this.writeRun=L,!0};gt.prototype._read_bunzip=function(e,t){var a,n,i;if(this.writeCount<0)return 0;for(var r=0,o=this.dbuf,s=this.writePos,l=this.writeCurrent,u=this.writeCount,c=this.outputsize,f=this.writeRun;u;){for(u--,n=l,s=o[s],l=s&255,s>>=8,f++===3?(a=l,i=n,l=-1):(a=1,i=l),this.blockCRC.updateCRCRun(i,a);a--;)this.outputStream.writeByte(i),this.nextoutput++;l!=n&&(f=0)}return this.writeCount=u,this.blockCRC.getCRC()!==this.targetBlockCRC&&ut(De.DATA_ERROR,"Bad block CRC (got "+this.blockCRC.getCRC().toString(16)+" expected "+this.targetBlockCRC.toString(16)+")"),this.nextoutput};var rd=function(e){if("readByte"in e)return e;var t=new mr;return t.pos=0,t.readByte=function(){return e[this.pos++]},t.seek=function(a){this.pos=a},t.eof=function(){return this.pos>=e.length},t},f1=function(e){var t=new mr,a=!0;if(e)if(typeof e=="number")t.buffer=new Buffer(e),a=!1;else{if("writeByte"in e)return e;t.buffer=e,a=!1}else t.buffer=new Buffer(16384);return t.pos=0,t.writeByte=function(n){if(a&&this.pos>=this.buffer.length){var i=new Buffer(this.buffer.length*2);this.buffer.copy(i),this.buffer=i}this.buffer[this.pos++]=n},t.getBuffer=function(){if(this.pos!==this.buffer.length){if(!a)throw new TypeError("outputsize does not match decoded input");var n=new Buffer(this.pos);this.buffer.copy(n,0,0,this.pos),this.buffer=n}return this.buffer},t._coerced=!0,t};gt.Err=De;gt.decode=function(e,t,a){for(var n=rd(e),i=f1(t),r=new gt(n,i);!("eof"in n&&n.eof());)if(r._init_block())r._read_bunzip();else{var o=r.reader.read(32)>>>0;if(o!==r.streamCRC&&ut(De.DATA_ERROR,"Bad stream CRC (got "+r.streamCRC.toString(16)+" expected "+o.toString(16)+")"),a&&"eof"in n&&!n.eof())r._start_bunzip(n,i);else break}if("getBuffer"in i)return i.getBuffer()};gt.decodeBlock=function(e,t,a){var n=rd(e),i=f1(a),r=new gt(n,i);r.reader.seek(t);var o=r._get_next_block();if(o&&(r.blockCRC=new p1,r.writeCopies=0,r._read_bunzip()),"getBuffer"in i)return i.getBuffer()};gt.table=function(e,t,a){var n=new mr;n.delegate=rd(e),n.pos=0,n.readByte=function(){return this.pos++,this.delegate.readByte()},n.delegate.eof&&(n.eof=n.delegate.eof.bind(n.delegate));var i=new mr;i.pos=0,i.writeByte=function(){this.pos++};for(var r=new gt(n,i),o=r.dbufSize;!("eof"in n&&n.eof());){var s=n.pos*8+r.reader.bitOffset;if(r.reader.hasByte&&(s-=8),r._init_block()){var l=i.pos;r._read_bunzip(),t(s,i.pos-l)}else{var u=r.reader.read(32);if(a&&"eof"in n&&!n.eof())r._start_bunzip(n,i),console.assert(r.dbufSize===o,"shouldn't change block size within multistream file");else break}}};gt.Stream=mr;gt.version=d1.version;gt.license=d1.license;m1.exports=gt});var g1=O((v1,b1)=>{var hR=require("stream");v1=b1.exports=od;od.through=od;function od(e,t,a){e=e||function(c){this.queue(c)},t=t||function(){this.queue(null)};var n=!1,i=!1,r=[],o=!1,s=new hR;s.readable=s.writable=!0,s.paused=!1,s.autoDestroy=!(a&&a.autoDestroy===!1),s.write=function(c){return e.call(this,c),!s.paused};function l(){for(;r.length&&!s.paused;){var c=r.shift();if(c===null)return s.emit("end");s.emit("data",c)}}s.queue=s.push=function(c){return o||(c===null&&(o=!0),r.push(c),l()),s},s.on("end",function(){s.readable=!1,!s.writable&&s.autoDestroy&&process.nextTick(function(){s.destroy()})});function u(){s.writable=!1,t.call(s),!s.readable&&s.autoDestroy&&s.destroy()}return s.end=function(c){if(!n)return n=!0,arguments.length&&s.write(c),u(),s},s.destroy=function(){if(!i)return i=!0,n=!0,r.length=0,s.writable=s.readable=!1,s.emit("close"),s},s.pause=function(){if(!s.paused)return s.paused=!0,s},s.resume=function(){return s.paused&&(s.paused=!1,s.emit("resume")),l(),s.paused||s.emit("drain"),s},s}});var y1=O((MH,x1)=>{function sd(e){this.name="Bzip2Error",this.message=e,this.stack=new Error().stack}sd.prototype=new Error;var pt={Error:function(e){throw new sd(e)}},na={};na.Bzip2Error=sd;na.crcTable=[0,79764919,159529838,222504665,319059676,398814059,445009330,507990021,638119352,583659535,797628118,726387553,890018660,835552979,1015980042,944750013,1276238704,1221641927,1167319070,1095957929,1595256236,1540665371,1452775106,1381403509,1780037320,1859660671,1671105958,1733955601,2031960084,2111593891,1889500026,1952343757,2552477408,2632100695,2443283854,2506133561,2334638140,2414271883,2191915858,2254759653,3190512472,3135915759,3081330742,3009969537,2905550212,2850959411,2762807018,2691435357,3560074640,3505614887,3719321342,3648080713,3342211916,3287746299,3467911202,3396681109,4063920168,4143685023,4223187782,4286162673,3779000052,3858754371,3904687514,3967668269,881225847,809987520,1023691545,969234094,662832811,591600412,771767749,717299826,311336399,374308984,453813921,533576470,25881363,88864420,134795389,214552010,2023205639,2086057648,1897238633,1976864222,1804852699,1867694188,1645340341,1724971778,1587496639,1516133128,1461550545,1406951526,1302016099,1230646740,1142491917,1087903418,2896545431,2825181984,2770861561,2716262478,3215044683,3143675388,3055782693,3001194130,2326604591,2389456536,2200899649,2280525302,2578013683,2640855108,2418763421,2498394922,3769900519,3832873040,3912640137,3992402750,4088425275,4151408268,4197601365,4277358050,3334271071,3263032808,3476998961,3422541446,3585640067,3514407732,3694837229,3640369242,1762451694,1842216281,1619975040,1682949687,2047383090,2127137669,1938468188,2001449195,1325665622,1271206113,1183200824,1111960463,1543535498,1489069629,1434599652,1363369299,622672798,568075817,748617968,677256519,907627842,853037301,1067152940,995781531,51762726,131386257,177728840,240578815,269590778,349224269,429104020,491947555,4046411278,4126034873,4172115296,4234965207,3794477266,3874110821,3953728444,4016571915,3609705398,3555108353,3735388376,3664026991,3290680682,3236090077,3449943556,3378572211,3174993278,3120533705,3032266256,2961025959,2923101090,2868635157,2813903052,2742672763,2604032198,2683796849,2461293480,2524268063,2284983834,2364738477,2175806836,2238787779,1569362073,1498123566,1409854455,1355396672,1317987909,1246755826,1192025387,1137557660,2072149281,2135122070,1912620623,1992383480,1753615357,1816598090,1627664531,1707420964,295390185,358241886,404320391,483945776,43990325,106832002,186451547,266083308,932423249,861060070,1041341759,986742920,613929101,542559546,756411363,701822548,3316196985,3244833742,3425377559,3370778784,3601682597,3530312978,3744426955,3689838204,3819031489,3881883254,3928223919,4007849240,4037393693,4100235434,4180117107,4259748804,2310601993,2373574846,2151335527,2231098320,2596047829,2659030626,2470359227,2550115596,2947551409,2876312838,2788305887,2733848168,3165939309,3094707162,3040238851,2985771188];na.array=function(e){var t=0,a=0,n=[0,1,3,7,15,31,63,127,255];return function(i){for(var r=0;i>0;){var o=8-t;i>=o?(r<<=o,r|=n[o]&e[a++],t=0,i-=o):(r<<=i,r|=(e[a]&n[i]<<8-i-t)>>8-i-t,t+=i,i=0)}return r}};na.simple=function(e,t){var a=na.array(e),n=na.header(a),i=!1,r=1e5*n,o=new Int32Array(r);do i=na.decompress(a,t,o,r);while(!i)};na.header=function(e){this.byteCount=new Int32Array(256),this.symToByte=new Uint8Array(256),this.mtfSymbol=new Int32Array(256),this.selectors=new Uint8Array(32768),e(8*3)!=4348520&&pt.Error("No magic number found");var t=e(8)-48;return(t<1||t>9)&&pt.Error("Not a BZIP archive"),t};na.decompress=function(e,t,a,n,i){for(var r=20,o=258,s=0,l=1,u=50,c=-1,f="",p=0;p<6;p++)f+=e(8).toString(16);if(f=="177245385090"){var b=e(32)|0;return b!==i&&pt.Error("Error in bzip2: crc32 do not match"),e(null),null}f!="314159265359"&&pt.Error("eek not valid bzip data");var d=e(32)|0;e(1)&&pt.Error("unsupported obsolete version");var h=e(24);h>n&&pt.Error("Initial position larger than buffer size");var m=e(16),v=0;for(p=0;p<16;p++)if(m&1<<15-p){var x=e(16);for(D=0;D<16;D++)x&1<<15-D&&(this.symToByte[v++]=16*p+D)}var E=e(3);(E<2||E>6)&&pt.Error("another error");var g=e(15);g==0&&pt.Error("meh");for(var p=0;p<E;p++)this.mtfSymbol[p]=p;for(var p=0;p<g;p++){for(var D=0;e(1);D++)D>=E&&pt.Error("whoops another error");for(var w=this.mtfSymbol[D],x=D-1;x>=0;x--)this.mtfSymbol[x+1]=this.mtfSymbol[x];this.mtfSymbol[0]=w,this.selectors[p]=w}for(var T=v+2,C=[],y=new Uint8Array(o),S=new Uint16Array(r+1),I,D=0;D<E;D++){m=e(5);for(var p=0;p<T;p++){for(;(m<1||m>r)&&pt.Error("I gave up a while ago on writing error messages"),!!e(1);)e(1)?m--:m++;y[p]=m}var _,P;_=P=y[0];for(var p=1;p<T;p++)y[p]>P?P=y[p]:y[p]<_&&(_=y[p]);I=C[D]={},I.permute=new Int32Array(o),I.limit=new Int32Array(r+1),I.base=new Int32Array(r+1),I.minLen=_,I.maxLen=P;for(var F=I.base,B=I.limit,N=0,p=_;p<=P;p++)for(var m=0;m<T;m++)y[m]==p&&(I.permute[N++]=m);for(p=_;p<=P;p++)S[p]=B[p]=0;for(p=0;p<T;p++)S[y[p]]++;for(N=m=0,p=_;p<P;p++)N+=S[p],B[p]=N-1,N<<=1,F[p+1]=N-(m+=S[p]);B[P]=N+S[P]-1,F[_]=0}for(var p=0;p<256;p++)this.mtfSymbol[p]=p,this.byteCount[p]=0;var L,k,T,j;for(L=k=T=j=0;;){for(T--||(T=u-1,j>=g&&pt.Error("meow i'm a kitty, that's an error"),I=C[this.selectors[j++]],F=I.base,B=I.limit),p=I.minLen,D=e(p);p>I.maxLen&&pt.Error("rawr i'm a dinosaur"),!(D<=B[p]);)p++,D=D<<1|e(1);D-=F[p],(D<0||D>=o)&&pt.Error("moo i'm a cow");var M=I.permute[D];if(M==s||M==l){L||(L=1,m=0),M==s?m+=L:m+=2*L,L<<=1;continue}if(L)for(L=0,k+m>n&&pt.Error("Boom."),w=this.symToByte[this.mtfSymbol[0]],this.byteCount[w]+=m;m--;)a[k++]=w;if(M>v)break;k>=n&&pt.Error("I can't think of anything. Error"),p=M-1,w=this.mtfSymbol[p];for(var x=p-1;x>=0;x--)this.mtfSymbol[x+1]=this.mtfSymbol[x];this.mtfSymbol[0]=w,w=this.symToByte[w],this.byteCount[w]++,a[k++]=w}(h<0||h>=k)&&pt.Error("I'm a monkey and I'm throwing something at someone, namely you");for(var D=0,p=0;p<256;p++)x=D+this.byteCount[p],this.byteCount[p]=D,D=x;for(var p=0;p<k;p++)w=a[p]&255,a[this.byteCount[w]]|=p<<8,this.byteCount[w]++;var V=0,q=0,Z=0;k&&(V=a[h],q=V&255,V>>=8,Z=-1),k=k;for(var pe,fe,ee;k;){for(k--,fe=q,V=a[V],q=V&255,V>>=8,Z++==3?(pe=q,ee=fe,q=-1):(pe=1,ee=q);pe--;)c=(c<<8^this.crcTable[(c>>24^ee)&255])&4294967295,t(ee);q!=fe&&(Z=0)}return c=(c^-1)>>>0,(c|0)!=(d|0)&&pt.Error("Error in bzip2: crc32 do not match"),i=(c^(i<<1|i>>>31))&4294967295,i};x1.exports=na});var S1=O((DH,E1)=>{var w1=[0,1,3,7,15,31,63,127,255];E1.exports=function(t){var a=0,n=0,i=t(),r=function(o){if(o===null&&a!=0){a=0,n++;return}for(var s=0;o>0;){n>=i.length&&(n=0,i=t());var l=8-a;a===0&&o>0&&r.bytesRead++,o>=l?(s<<=l,s|=w1[l]&i[n++],a=0,o-=l):(s<<=o,s|=(i[n]&w1[o]<<8-o-a)>>8-o-a,a+=o,o=0)}return s};return r.bytesRead=0,r}});var I1=O((zH,A1)=>{var vR=g1(),C1=y1(),bR=S1();A1.exports=gR;function gR(){var e=[],t=0,a=0,n=!1,i=!1,r=null,o=null;function s(c){if(a){var f=1e5*a,p=new Int32Array(f),b=[],d=function(h){b.push(h)};return o=C1.decompress(r,d,p,f,o),o===null?(a=0,!1):(c(Buffer.from(b)),!0)}else return a=C1.header(r),o=0,!0}var l=0;function u(c){if(!n)try{return s(function(f){c.queue(f),f!==null&&(l+=f.length)})}catch(f){return c.emit("error",f),n=!0,!1}}return vR(function(f){for(e.push(f),t+=f.length,r===null&&(r=bR(function(){return e.shift()}));!n&&t-r.bytesRead+1>=(25e3+1e5*a||4);)u(this)},function(f){for(;!n&&r&&t>r.bytesRead;)u(this);n||(o!==null&&this.emit("error",new Error("input stream ended prematurely")),this.queue(null))})}});var F1=O((GH,k1)=>{"use strict";var _1=il(),T1=Qw(),xR=Ds(),yR=h1(),wR=I1();k1.exports=()=>e=>!Buffer.isBuffer(e)&&!xR(e)?Promise.reject(new TypeError(`Expected a Buffer or Stream, got ${typeof e}`)):Buffer.isBuffer(e)&&(!T1(e)||T1(e).ext!=="bz2")?Promise.resolve([]):Buffer.isBuffer(e)?_1()(yR.decode(e)):_1()(e.pipe(wR()))});var O1=O((HH,P1)=>{"use strict";P1.exports=e=>{let t=new Uint8Array(e);if(!(t&&t.length>1))return null;let a=(n,i)=>{i=Object.assign({offset:0},i);for(let r=0;r<n.length;r++)if(n[r]!==t[r+i.offset])return!1;return!0};if(a([255,216,255]))return{ext:"jpg",mime:"image/jpeg"};if(a([137,80,78,71,13,10,26,10]))return{ext:"png",mime:"image/png"};if(a([71,73,70]))return{ext:"gif",mime:"image/gif"};if(a([87,69,66,80],{offset:8}))return{ext:"webp",mime:"image/webp"};if(a([70,76,73,70]))return{ext:"flif",mime:"image/flif"};if((a([73,73,42,0])||a([77,77,0,42]))&&a([67,82],{offset:8}))return{ext:"cr2",mime:"image/x-canon-cr2"};if(a([73,73,42,0])||a([77,77,0,42]))return{ext:"tif",mime:"image/tiff"};if(a([66,77]))return{ext:"bmp",mime:"image/bmp"};if(a([73,73,188]))return{ext:"jxr",mime:"image/vnd.ms-photo"};if(a([56,66,80,83]))return{ext:"psd",mime:"image/vnd.adobe.photoshop"};if(a([80,75,3,4])&&a([109,105,109,101,116,121,112,101,97,112,112,108,105,99,97,116,105,111,110,47,101,112,117,98,43,122,105,112],{offset:30}))return{ext:"epub",mime:"application/epub+zip"};if(a([80,75,3,4])&&a([77,69,84,65,45,73,78,70,47,109,111,122,105,108,108,97,46,114,115,97],{offset:30}))return{ext:"xpi",mime:"application/x-xpinstall"};if(a([80,75])&&(t[2]===3||t[2]===5||t[2]===7)&&(t[3]===4||t[3]===6||t[3]===8))return{ext:"zip",mime:"application/zip"};if(a([117,115,116,97,114],{offset:257}))return{ext:"tar",mime:"application/x-tar"};if(a([82,97,114,33,26,7])&&(t[6]===0||t[6]===1))return{ext:"rar",mime:"application/x-rar-compressed"};if(a([31,139,8]))return{ext:"gz",mime:"application/gzip"};if(a([66,90,104]))return{ext:"bz2",mime:"application/x-bzip2"};if(a([55,122,188,175,39,28]))return{ext:"7z",mime:"application/x-7z-compressed"};if(a([120,1]))return{ext:"dmg",mime:"application/x-apple-diskimage"};if(a([0,0,0])&&(t[3]===24||t[3]===32)&&a([102,116,121,112],{offset:4})||a([51,103,112,53])||a([0,0,0,28,102,116,121,112,109,112,52,50])&&a([109,112,52,49,109,112,52,50,105,115,111,109],{offset:16})||a([0,0,0,28,102,116,121,112,105,115,111,109])||a([0,0,0,28,102,116,121,112,109,112,52,50,0,0,0,0]))return{ext:"mp4",mime:"video/mp4"};if(a([0,0,0,28,102,116,121,112,77,52,86]))return{ext:"m4v",mime:"video/x-m4v"};if(a([77,84,104,100]))return{ext:"mid",mime:"audio/midi"};if(a([26,69,223,163])){let n=t.subarray(4,4100),i=n.findIndex((r,o,s)=>s[o]===66&&s[o+1]===130);if(i>=0){let r=i+3,o=s=>Array.from(s).every((l,u)=>n[r+u]===l.charCodeAt(0));if(o("matroska"))return{ext:"mkv",mime:"video/x-matroska"};if(o("webm"))return{ext:"webm",mime:"video/webm"}}}return a([0,0,0,20,102,116,121,112,113,116,32,32])||a([102,114,101,101],{offset:4})||a([102,116,121,112,113,116,32,32],{offset:4})||a([109,100,97,116],{offset:4})||a([119,105,100,101],{offset:4})?{ext:"mov",mime:"video/quicktime"}:a([82,73,70,70])&&a([65,86,73],{offset:8})?{ext:"avi",mime:"video/x-msvideo"}:a([48,38,178,117,142,102,207,17,166,217])?{ext:"wmv",mime:"video/x-ms-wmv"}:a([0,0,1,186])?{ext:"mpg",mime:"video/mpeg"}:a([73,68,51])||a([255,251])?{ext:"mp3",mime:"audio/mpeg"}:a([102,116,121,112,77,52,65],{offset:4})||a([77,52,65,32])?{ext:"m4a",mime:"audio/m4a"}:a([79,112,117,115,72,101,97,100],{offset:28})?{ext:"opus",mime:"audio/opus"}:a([79,103,103,83])?{ext:"ogg",mime:"audio/ogg"}:a([102,76,97,67])?{ext:"flac",mime:"audio/x-flac"}:a([82,73,70,70])&&a([87,65,86,69],{offset:8})?{ext:"wav",mime:"audio/x-wav"}:a([35,33,65,77,82,10])?{ext:"amr",mime:"audio/amr"}:a([37,80,68,70])?{ext:"pdf",mime:"application/pdf"}:a([77,90])?{ext:"exe",mime:"application/x-msdownload"}:(t[0]===67||t[0]===70)&&a([87,83],{offset:1})?{ext:"swf",mime:"application/x-shockwave-flash"}:a([123,92,114,116,102])?{ext:"rtf",mime:"application/rtf"}:a([0,97,115,109])?{ext:"wasm",mime:"application/wasm"}:a([119,79,70,70])&&(a([0,1,0,0],{offset:4})||a([79,84,84,79],{offset:4}))?{ext:"woff",mime:"font/woff"}:a([119,79,70,50])&&(a([0,1,0,0],{offset:4})||a([79,84,84,79],{offset:4}))?{ext:"woff2",mime:"font/woff2"}:a([76,80],{offset:34})&&(a([0,0,1],{offset:8})||a([1,0,2],{offset:8})||a([2,0,2],{offset:8}))?{ext:"eot",mime:"application/octet-stream"}:a([0,1,0,0,0])?{ext:"ttf",mime:"font/ttf"}:a([79,84,84,79,0])?{ext:"otf",mime:"font/otf"}:a([0,0,1,0])?{ext:"ico",mime:"image/x-icon"}:a([70,76,86,1])?{ext:"flv",mime:"video/x-flv"}:a([37,33])?{ext:"ps",mime:"application/postscript"}:a([253,55,122,88,90,0])?{ext:"xz",mime:"application/x-xz"}:a([83,81,76,105])?{ext:"sqlite",mime:"application/x-sqlite3"}:a([78,69,83,26])?{ext:"nes",mime:"application/x-nintendo-nes-rom"}:a([67,114,50,52])?{ext:"crx",mime:"application/x-google-chrome-extension"}:a([77,83,67,70])||a([73,83,99,40])?{ext:"cab",mime:"application/vnd.ms-cab-compressed"}:a([33,60,97,114,99,104,62,10,100,101,98,105,97,110,45,98,105,110,97,114,121])?{ext:"deb",mime:"application/x-deb"}:a([33,60,97,114,99,104,62])?{ext:"ar",mime:"application/x-unix-archive"}:a([237,171,238,219])?{ext:"rpm",mime:"application/x-rpm"}:a([31,160])||a([31,157])?{ext:"Z",mime:"application/x-compress"}:a([76,90,73,80])?{ext:"lz",mime:"application/x-lzip"}:a([208,207,17,224,161,177,26,225])?{ext:"msi",mime:"application/x-msi"}:a([6,14,43,52,2,5,1,1,13,1,2,1,1,2])?{ext:"mxf",mime:"application/mxf"}:a([71],{offset:4})&&(a([71],{offset:192})||a([71],{offset:196}))?{ext:"mts",mime:"video/mp2t"}:a([66,76,69,78,68,69,82])?{ext:"blend",mime:"application/x-blender"}:a([66,80,71,251])?{ext:"bpg",mime:"image/bpg"}:null}});var N1=O((WH,B1)=>{"use strict";var ER=require("zlib"),SR=il(),R1=O1(),CR=Ds();B1.exports=()=>e=>{if(!Buffer.isBuffer(e)&&!CR(e))return Promise.reject(new TypeError(`Expected a Buffer or Stream, got ${typeof e}`));if(Buffer.isBuffer(e)&&(!R1(e)||R1(e).ext!=="gz"))return Promise.resolve([]);let t=ER.createGunzip(),a=SR()(t);return Buffer.isBuffer(e)?t.end(e):e.pipe(t),a}});var L1=O((VH,j1)=>{"use strict";j1.exports=function(e){return e&&e.length>1?e[0]===255&&e[1]===216&&e[2]===255?{ext:"jpg",mime:"image/jpeg"}:e[0]===137&&e[1]===80&&e[2]===78&&e[3]===71?{ext:"png",mime:"image/png"}:e[0]===71&&e[1]===73&&e[2]===70?{ext:"gif",mime:"image/gif"}:e[8]===87&&e[9]===69&&e[10]===66&&e[11]===80?{ext:"webp",mime:"image/webp"}:e[0]===70&&e[1]===76&&e[2]===73&&e[3]===70?{ext:"flif",mime:"image/flif"}:(e[0]===73&&e[1]===73&&e[2]===42&&e[3]===0||e[0]===77&&e[1]===77&&e[2]===0&&e[3]===42)&&e[8]===67&&e[9]===82?{ext:"cr2",mime:"image/x-canon-cr2"}:e[0]===73&&e[1]===73&&e[2]===42&&e[3]===0||e[0]===77&&e[1]===77&&e[2]===0&&e[3]===42?{ext:"tif",mime:"image/tiff"}:e[0]===66&&e[1]===77?{ext:"bmp",mime:"image/bmp"}:e[0]===73&&e[1]===73&&e[2]===188?{ext:"jxr",mime:"image/vnd.ms-photo"}:e[0]===56&&e[1]===66&&e[2]===80&&e[3]===83?{ext:"psd",mime:"image/vnd.adobe.photoshop"}:e[0]===80&&e[1]===75&&e[2]===3&&e[3]===4&&e[30]===109&&e[31]===105&&e[32]===109&&e[33]===101&&e[34]===116&&e[35]===121&&e[36]===112&&e[37]===101&&e[38]===97&&e[39]===112&&e[40]===112&&e[41]===108&&e[42]===105&&e[43]===99&&e[44]===97&&e[45]===116&&e[46]===105&&e[47]===111&&e[48]===110&&e[49]===47&&e[50]===101&&e[51]===112&&e[52]===117&&e[53]===98&&e[54]===43&&e[55]===122&&e[56]===105&&e[57]===112?{ext:"epub",mime:"application/epub+zip"}:e[0]===80&&e[1]===75&&e[2]===3&&e[3]===4&&e[30]===77&&e[31]===69&&e[32]===84&&e[33]===65&&e[34]===45&&e[35]===73&&e[36]===78&&e[37]===70&&e[38]===47&&e[39]===109&&e[40]===111&&e[41]===122&&e[42]===105&&e[43]===108&&e[44]===108&&e[45]===97&&e[46]===46&&e[47]===114&&e[48]===115&&e[49]===97?{ext:"xpi",mime:"application/x-xpinstall"}:e[0]===80&&e[1]===75&&(e[2]===3||e[2]===5||e[2]===7)&&(e[3]===4||e[3]===6||e[3]===8)?{ext:"zip",mime:"application/zip"}:e[257]===117&&e[258]===115&&e[259]===116&&e[260]===97&&e[261]===114?{ext:"tar",mime:"application/x-tar"}:e[0]===82&&e[1]===97&&e[2]===114&&e[3]===33&&e[4]===26&&e[5]===7&&(e[6]===0||e[6]===1)?{ext:"rar",mime:"application/x-rar-compressed"}:e[0]===31&&e[1]===139&&e[2]===8?{ext:"gz",mime:"application/gzip"}:e[0]===66&&e[1]===90&&e[2]===104?{ext:"bz2",mime:"application/x-bzip2"}:e[0]===55&&e[1]===122&&e[2]===188&&e[3]===175&&e[4]===39&&e[5]===28?{ext:"7z",mime:"application/x-7z-compressed"}:e[0]===120&&e[1]===1?{ext:"dmg",mime:"application/x-apple-diskimage"}:e[0]===0&&e[1]===0&&e[2]===0&&(e[3]===24||e[3]===32)&&e[4]===102&&e[5]===116&&e[6]===121&&e[7]===112||e[0]===51&&e[1]===103&&e[2]===112&&e[3]===53||e[0]===0&&e[1]===0&&e[2]===0&&e[3]===28&&e[4]===102&&e[5]===116&&e[6]===121&&e[7]===112&&e[8]===109&&e[9]===112&&e[10]===52&&e[11]===50&&e[16]===109&&e[17]===112&&e[18]===52&&e[19]===49&&e[20]===109&&e[21]===112&&e[22]===52&&e[23]===50&&e[24]===105&&e[25]===115&&e[26]===111&&e[27]===109||e[0]===0&&e[1]===0&&e[2]===0&&e[3]===28&&e[4]===102&&e[5]===116&&e[6]===121&&e[7]===112&&e[8]===105&&e[9]===115&&e[10]===111&&e[11]===109||e[0]===0&&e[1]===0&&e[2]===0&&e[3]===28&&e[4]===102&&e[5]===116&&e[6]===121&&e[7]===112&&e[8]===109&&e[9]===112&&e[10]===52&&e[11]===50&&e[12]===0&&e[13]===0&&e[14]===0&&e[15]===0?{ext:"mp4",mime:"video/mp4"}:e[0]===0&&e[1]===0&&e[2]===0&&e[3]===28&&e[4]===102&&e[5]===116&&e[6]===121&&e[7]===112&&e[8]===77&&e[9]===52&&e[10]===86?{ext:"m4v",mime:"video/x-m4v"}:e[0]===77&&e[1]===84&&e[2]===104&&e[3]===100?{ext:"mid",mime:"audio/midi"}:e[31]===109&&e[32]===97&&e[33]===116&&e[34]===114&&e[35]===111&&e[36]===115&&e[37]===107&&e[38]===97?{ext:"mkv",mime:"video/x-matroska"}:e[0]===26&&e[1]===69&&e[2]===223&&e[3]===163?{ext:"webm",mime:"video/webm"}:e[0]===0&&e[1]===0&&e[2]===0&&e[3]===20&&e[4]===102&&e[5]===116&&e[6]===121&&e[7]===112?{ext:"mov",mime:"video/quicktime"}:e[0]===82&&e[1]===73&&e[2]===70&&e[3]===70&&e[8]===65&&e[9]===86&&e[10]===73?{ext:"avi",mime:"video/x-msvideo"}:e[0]===48&&e[1]===38&&e[2]===178&&e[3]===117&&e[4]===142&&e[5]===102&&e[6]===207&&e[7]===17&&e[8]===166&&e[9]===217?{ext:"wmv",mime:"video/x-ms-wmv"}:e[0]===0&&e[1]===0&&e[2]===1&&e[3].toString(16)[0]==="b"?{ext:"mpg",mime:"video/mpeg"}:e[0]===73&&e[1]===68&&e[2]===51||e[0]===255&&e[1]===251?{ext:"mp3",mime:"audio/mpeg"}:e[4]===102&&e[5]===116&&e[6]===121&&e[7]===112&&e[8]===77&&e[9]===52&&e[10]===65||e[0]===77&&e[1]===52&&e[2]===65&&e[3]===32?{ext:"m4a",mime:"audio/m4a"}:e[28]===79&&e[29]===112&&e[30]===117&&e[31]===115&&e[32]===72&&e[33]===101&&e[34]===97&&e[35]===100?{ext:"opus",mime:"audio/opus"}:e[0]===79&&e[1]===103&&e[2]===103&&e[3]===83?{ext:"ogg",mime:"audio/ogg"}:e[0]===102&&e[1]===76&&e[2]===97&&e[3]===67?{ext:"flac",mime:"audio/x-flac"}:e[0]===82&&e[1]===73&&e[2]===70&&e[3]===70&&e[8]===87&&e[9]===65&&e[10]===86&&e[11]===69?{ext:"wav",mime:"audio/x-wav"}:e[0]===35&&e[1]===33&&e[2]===65&&e[3]===77&&e[4]===82&&e[5]===10?{ext:"amr",mime:"audio/amr"}:e[0]===37&&e[1]===80&&e[2]===68&&e[3]===70?{ext:"pdf",mime:"application/pdf"}:e[0]===77&&e[1]===90?{ext:"exe",mime:"application/x-msdownload"}:(e[0]===67||e[0]===70)&&e[1]===87&&e[2]===83?{ext:"swf",mime:"application/x-shockwave-flash"}:e[0]===123&&e[1]===92&&e[2]===114&&e[3]===116&&e[4]===102?{ext:"rtf",mime:"application/rtf"}:e[0]===119&&e[1]===79&&e[2]===70&&e[3]===70&&(e[4]===0&&e[5]===1&&e[6]===0&&e[7]===0||e[4]===79&&e[5]===84&&e[6]===84&&e[7]===79)?{ext:"woff",mime:"application/font-woff"}:e[0]===119&&e[1]===79&&e[2]===70&&e[3]===50&&(e[4]===0&&e[5]===1&&e[6]===0&&e[7]===0||e[4]===79&&e[5]===84&&e[6]===84&&e[7]===79)?{ext:"woff2",mime:"application/font-woff"}:e[34]===76&&e[35]===80&&(e[8]===0&&e[9]===0&&e[10]===1||e[8]===1&&e[9]===0&&e[10]===2||e[8]===2&&e[9]===0&&e[10]===2)?{ext:"eot",mime:"application/octet-stream"}:e[0]===0&&e[1]===1&&e[2]===0&&e[3]===0&&e[4]===0?{ext:"ttf",mime:"application/font-sfnt"}:e[0]===79&&e[1]===84&&e[2]===84&&e[3]===79&&e[4]===0?{ext:"otf",mime:"application/font-sfnt"}:e[0]===0&&e[1]===0&&e[2]===1&&e[3]===0?{ext:"ico",mime:"image/x-icon"}:e[0]===70&&e[1]===76&&e[2]===86&&e[3]===1?{ext:"flv",mime:"video/x-flv"}:e[0]===37&&e[1]===33?{ext:"ps",mime:"application/postscript"}:e[0]===253&&e[1]===55&&e[2]===122&&e[3]===88&&e[4]===90&&e[5]===0?{ext:"xz",mime:"application/x-xz"}:e[0]===83&&e[1]===81&&e[2]===76&&e[3]===105?{ext:"sqlite",mime:"application/x-sqlite3"}:e[0]===78&&e[1]===69&&e[2]===83&&e[3]===26?{ext:"nes",mime:"application/x-nintendo-nes-rom"}:e[0]===67&&e[1]===114&&e[2]===50&&e[3]===52?{ext:"crx",mime:"application/x-google-chrome-extension"}:e[0]===77&&e[1]===83&&e[2]===67&&e[3]===70||e[0]===73&&e[1]===83&&e[2]===99&&e[3]===40?{ext:"cab",mime:"application/vnd.ms-cab-compressed"}:e[0]===33&&e[1]===60&&e[2]===97&&e[3]===114&&e[4]===99&&e[5]===104&&e[6]===62&&e[7]===10&&e[8]===100&&e[9]===101&&e[10]===98&&e[11]===105&&e[12]===97&&e[13]===110&&e[14]===45&&e[15]===98&&e[16]===105&&e[17]===110&&e[18]===97&&e[19]===114&&e[20]===121?{ext:"deb",mime:"application/x-deb"}:e[0]===33&&e[1]===60&&e[2]===97&&e[3]===114&&e[4]===99&&e[5]===104&&e[6]===62?{ext:"ar",mime:"application/x-unix-archive"}:e[0]===237&&e[1]===171&&e[2]===238&&e[3]===219?{ext:"rpm",mime:"application/x-rpm"}:e[0]===31&&e[1]===160||e[0]===31&&e[1]===157?{ext:"Z",mime:"application/x-compress"}:e[0]===76&&e[1]===90&&e[2]===73&&e[3]===80?{ext:"lz",mime:"application/x-lzip"}:e[0]===208&&e[1]===207&&e[2]===17&&e[3]===224&&e[4]===161&&e[5]===177&&e[6]===26&&e[7]===225?{ext:"msi",mime:"application/x-msi"}:null:null}});var U1=O((UH,V1)=>{"use strict";var cd="pending",M1="settled",ol="fulfilled",sl="rejected",AR=function(){},D1=typeof global!="undefined"&&typeof global.process!="undefined"&&typeof global.process.emit=="function",IR=typeof setImmediate=="undefined"?setTimeout:setImmediate,hr=[],ld;function _R(){for(var e=0;e<hr.length;e++)hr[e][0](hr[e][1]);hr=[],ld=!1}function ll(e,t){hr.push([e,t]),ld||(ld=!0,IR(_R,0))}function TR(e,t){function a(i){ud(t,i)}function n(i){vr(t,i)}try{e(a,n)}catch(i){n(i)}}function z1(e){var t=e.owner,a=t._state,n=t._data,i=e[a],r=e.then;if(typeof i=="function"){a=ol;try{n=i(n)}catch(o){vr(r,o)}}G1(r,n)||(a===ol&&ud(r,n),a===sl&&vr(r,n))}function G1(e,t){var a;try{if(e===t)throw new TypeError("A promises callback cannot return that same promise.");if(t&&(typeof t=="function"||typeof t=="object")){var n=t.then;if(typeof n=="function")return n.call(t,function(i){a||(a=!0,t===i?H1(e,i):ud(e,i))},function(i){a||(a=!0,vr(e,i))}),!0}}catch(i){return a||vr(e,i),!0}return!1}function ud(e,t){(e===t||!G1(e,t))&&H1(e,t)}function H1(e,t){e._state===cd&&(e._state=M1,e._data=t,ll(kR,e))}function vr(e,t){e._state===cd&&(e._state=M1,e._data=t,ll(FR,e))}function W1(e){e._then=e._then.forEach(z1)}function kR(e){e._state=ol,W1(e)}function FR(e){e._state=sl,W1(e),!e._handled&&D1&&global.process.emit("unhandledRejection",e._data,e)}function PR(e){global.process.emit("rejectionHandled",e)}function Ft(e){if(typeof e!="function")throw new TypeError("Promise resolver "+e+" is not a function");if(!(this instanceof Ft))throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");this._then=[],TR(e,this)}Ft.prototype={constructor:Ft,_state:cd,_then:null,_data:void 0,_handled:!1,then:function(e,t){var a={owner:this,then:new this.constructor(AR),fulfilled:e,rejected:t};return(t||e)&&!this._handled&&(this._handled=!0,this._state===sl&&D1&&ll(PR,this)),this._state===ol||this._state===sl?ll(z1,a):this._then.push(a),a.then},catch:function(e){return this.then(null,e)}};Ft.all=function(e){if(!Array.isArray(e))throw new TypeError("You must pass an array to Promise.all().");return new Ft(function(t,a){var n=[],i=0;function r(l){return i++,function(u){n[l]=u,--i||t(n)}}for(var o=0,s;o<e.length;o++)s=e[o],s&&typeof s.then=="function"?s.then(r(o),a):n[o]=s;i||t(n)})};Ft.race=function(e){if(!Array.isArray(e))throw new TypeError("You must pass an array to Promise.race().");return new Ft(function(t,a){for(var n=0,i;n<e.length;n++)i=e[n],i&&typeof i.then=="function"?i.then(t,a):t(i)})};Ft.resolve=function(e){return e&&typeof e=="object"&&e.constructor===Ft?e:new Ft(function(t){t(e)})};Ft.reject=function(e){return new Ft(function(t,a){a(e)})};V1.exports=Ft});var Z1=O((JH,J1)=>{"use strict";J1.exports=typeof Promise=="function"?Promise:U1()});var cl=O((ZH,X1)=>{"use strict";var q1=Object.getOwnPropertySymbols,OR=Object.prototype.hasOwnProperty,RR=Object.prototype.propertyIsEnumerable;function BR(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function NR(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var t={},a=0;a<10;a++)t["_"+String.fromCharCode(a)]=a;var n=Object.getOwnPropertyNames(t).map(function(r){return t[r]});if(n.join("")!=="0123456789")return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach(function(r){i[r]=r}),Object.keys(Object.assign({},i)).join("")==="abcdefghijklmnopqrst"}catch(r){return!1}}X1.exports=NR()?Object.assign:function(e,t){for(var a,n=BR(e),i,r=1;r<arguments.length;r++){a=Object(arguments[r]);for(var o in a)OR.call(a,o)&&(n[o]=a[o]);if(q1){i=q1(a);for(var s=0;s<i.length;s++)RR.call(a,i[s])&&(n[i[s]]=a[i[s]])}}return n}});var Y1=O((qH,$1)=>{var jR=require("stream").PassThrough,LR=cl();$1.exports=function(e){e=LR({},e);var t=e.array,a=e.encoding,n=a==="buffer",i=!1;t?i=!(a||n):a=a||"utf8",n&&(a=null);var r=0,o=[],s=new jR({objectMode:i});return a&&s.setEncoding(a),s.on("data",function(l){o.push(l),i?r=o.length:r+=l.length}),s.getBufferedValue=function(){return t?o:n?Buffer.concat(o,r):o.join("")},s.getBufferedLength=function(){return r},s}});var Q1=O((XH,ul)=>{"use strict";var K1=Z1(),pd=cl(),MR=Y1();function dd(e,t){if(!e)return K1.reject(new Error("Expected a stream"));t=pd({maxBuffer:1/0},t);var a=t.maxBuffer,n,i,r=new K1(function(o,s){n=MR(t),e.once("error",l),e.pipe(n),n.on("data",function(){n.getBufferedLength()>a&&s(new Error("maxBuffer exceeded"))}),n.once("error",l),n.on("end",o),i=function(){e.unpipe&&e.unpipe(n)};function l(u){u&&(u.bufferedData=n.getBufferedValue()),s(u)}});return r.then(i,i),r.then(function(){return n.getBufferedValue()})}ul.exports=dd;ul.exports.buffer=function(e,t){return dd(e,pd({},t,{encoding:"buffer"}))};ul.exports.array=function(e,t){return dd(e,pd({},t,{array:!0}))}});var nE=O(($H,aE)=>{"use strict";var eE=function(e,t,a){return function(){for(var n=this,i=new Array(arguments.length),r=0;r<arguments.length;r++)i[r]=arguments[r];return new t(function(o,s){i.push(function(l,u){if(l)s(l);else if(a.multiArgs){for(var c=new Array(arguments.length-1),f=1;f<arguments.length;f++)c[f-1]=arguments[f];o(c)}else o(u)}),e.apply(n,i)})}},tE=aE.exports=function(e,t,a){typeof t!="function"&&(a=t,t=Promise),a=a||{},a.exclude=a.exclude||[/.+Sync$/];var n=function(r){var o=function(s){return typeof s=="string"?r===s:s.test(r)};return a.include?a.include.some(o):!a.exclude.some(o)},i=typeof e=="function"?function(){return a.excludeMain?e.apply(this,arguments):eE(e,t,a).apply(this,arguments)}:{};return Object.keys(e).reduce(function(r,o){var s=e[o];return r[o]=typeof s=="function"&&n(o)?eE(s,t,a):s,r},i)};tE.all=tE});var sE=O((YH,oE)=>{oE.exports=pl;function pl(){this.pending=0,this.max=1/0,this.listeners=[],this.waiting=[],this.error=null}pl.prototype.go=function(e){this.pending<this.max?rE(this,e):this.waiting.push(e)};pl.prototype.wait=function(e){this.pending===0?e(this.error):this.listeners.push(e)};pl.prototype.hold=function(){return iE(this)};function iE(e){e.pending+=1;var t=!1;return a;function a(i){if(t)throw new Error("callback called twice");if(t=!0,e.error=e.error||i,e.pending-=1,e.waiting.length>0&&e.pending<e.max)rE(e,e.waiting.shift());else if(e.pending===0){var r=e.listeners;e.listeners=[],r.forEach(n)}}function n(i){i(e.error)}}function rE(e,t){t(iE(e))}});var cE=O(gr=>{var br=require("fs"),dl=require("util"),fd=require("stream"),lE=fd.Readable,md=fd.Writable,DR=fd.PassThrough,zR=sE(),fl=require("events").EventEmitter;gr.createFromBuffer=GR;gr.createFromFd=HR;gr.BufferSlicer=Ea;gr.FdSlicer=wa;dl.inherits(wa,fl);function wa(e,t){t=t||{},fl.call(this),this.fd=e,this.pend=new zR,this.pend.max=1,this.refCount=0,this.autoClose=!!t.autoClose}wa.prototype.read=function(e,t,a,n,i){var r=this;r.pend.go(function(o){br.read(r.fd,e,t,a,n,function(s,l,u){o(),i(s,l,u)})})};wa.prototype.write=function(e,t,a,n,i){var r=this;r.pend.go(function(o){br.write(r.fd,e,t,a,n,function(s,l,u){o(),i(s,l,u)})})};wa.prototype.createReadStream=function(e){return new ml(this,e)};wa.prototype.createWriteStream=function(e){return new hl(this,e)};wa.prototype.ref=function(){this.refCount+=1};wa.prototype.unref=function(){var e=this;if(e.refCount-=1,e.refCount>0)return;if(e.refCount<0)throw new Error("invalid unref");e.autoClose&&br.close(e.fd,t);function t(a){a?e.emit("error",a):e.emit("close")}};dl.inherits(ml,lE);function ml(e,t){t=t||{},lE.call(this,t),this.context=e,this.context.ref(),this.start=t.start||0,this.endOffset=t.end,this.pos=this.start,this.destroyed=!1}ml.prototype._read=function(e){var t=this;if(!t.destroyed){var a=Math.min(t._readableState.highWaterMark,e);if(t.endOffset!=null&&(a=Math.min(a,t.endOffset-t.pos)),a<=0){t.destroyed=!0,t.push(null),t.context.unref();return}t.context.pend.go(function(n){if(t.destroyed)return n();var i=new Buffer(a);br.read(t.context.fd,i,0,a,t.pos,function(r,o){r?t.destroy(r):o===0?(t.destroyed=!0,t.push(null),t.context.unref()):(t.pos+=o,t.push(i.slice(0,o))),n()})})}};ml.prototype.destroy=function(e){this.destroyed||(e=e||new Error("stream destroyed"),this.destroyed=!0,this.emit("error",e),this.context.unref())};dl.inherits(hl,md);function hl(e,t){t=t||{},md.call(this,t),this.context=e,this.context.ref(),this.start=t.start||0,this.endOffset=t.end==null?1/0:+t.end,this.bytesWritten=0,this.pos=this.start,this.destroyed=!1,this.on("finish",this.destroy.bind(this))}hl.prototype._write=function(e,t,a){var n=this;if(!n.destroyed){if(n.pos+e.length>n.endOffset){var i=new Error("maximum file length exceeded");i.code="ETOOBIG",n.destroy(),a(i);return}n.context.pend.go(function(r){if(n.destroyed)return r();br.write(n.context.fd,e,0,e.length,n.pos,function(o,s){o?(n.destroy(),r(),a(o)):(n.bytesWritten+=s,n.pos+=s,n.emit("progress"),r(),a())})})}};hl.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.context.unref())};dl.inherits(Ea,fl);function Ea(e,t){fl.call(this),t=t||{},this.refCount=0,this.buffer=e,this.maxChunkSize=t.maxChunkSize||Number.MAX_SAFE_INTEGER}Ea.prototype.read=function(e,t,a,n,i){var r=n+a,o=r-this.buffer.length,s=o>0?o:a;this.buffer.copy(e,t,n,r),setImmediate(function(){i(null,s)})};Ea.prototype.write=function(e,t,a,n,i){e.copy(this.buffer,n,t,t+a),setImmediate(function(){i(null,a,e)})};Ea.prototype.createReadStream=function(e){e=e||{};var t=new DR(e);t.destroyed=!1,t.start=e.start||0,t.endOffset=e.end,t.pos=t.endOffset||this.buffer.length;for(var a=this.buffer.slice(t.start,t.pos),n=0;;){var i=n+this.maxChunkSize;if(i>=a.length){n<a.length&&t.write(a.slice(n,a.length));break}t.write(a.slice(n,i)),n=i}return t.end(),t.destroy=function(){t.destroyed=!0},t};Ea.prototype.createWriteStream=function(e){var t=this;e=e||{};var a=new md(e);return a.start=e.start||0,a.endOffset=e.end==null?this.buffer.length:+e.end,a.bytesWritten=0,a.pos=a.start,a.destroyed=!1,a._write=function(n,i,r){if(!a.destroyed){var o=a.pos+n.length;if(o>a.endOffset){var s=new Error("maximum file length exceeded");s.code="ETOOBIG",a.destroyed=!0,r(s);return}n.copy(t.buffer,a.pos,0,n.length),a.bytesWritten+=n.length,a.pos=o,a.emit("progress"),r()}},a.destroy=function(){a.destroyed=!0},a};Ea.prototype.ref=function(){this.refCount+=1};Ea.prototype.unref=function(){if(this.refCount-=1,this.refCount<0)throw new Error("invalid unref")};function GR(e,t){return new Ea(e,t)}function HR(e,t){return new wa(e,t)}});var dE=O((QH,pE)=>{var za=require("buffer").Buffer,hd=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];typeof Int32Array!="undefined"&&(hd=new Int32Array(hd));function uE(e){if(za.isBuffer(e))return e;var t=typeof za.alloc=="function"&&typeof za.from=="function";if(typeof e=="number")return t?za.alloc(e):new za(e);if(typeof e=="string")return t?za.from(e):new za(e);throw new Error("input must be buffer, number, or string, received "+typeof e)}function WR(e){var t=uE(4);return t.writeInt32BE(e,0),t}function vd(e,t){e=uE(e),za.isBuffer(t)&&(t=t.readUInt32BE(0));for(var a=~~t^-1,n=0;n<e.length;n++)a=hd[(a^e[n])&255]^a>>>8;return a^-1}function bd(){return WR(vd.apply(null,arguments))}bd.signed=function(){return vd.apply(null,arguments)};bd.unsigned=function(){return vd.apply(null,arguments)>>>0};pE.exports=bd});var xE=O(ra=>{var gd=require("fs"),VR=require("zlib"),fE=cE(),UR=dE(),gl=require("util"),xl=require("events").EventEmitter,mE=require("stream").Transform,xd=require("stream").PassThrough,JR=require("stream").Writable;ra.open=ZR;ra.fromFd=hE;ra.fromBuffer=qR;ra.fromRandomAccessReader=yd;ra.dosDateTimeToDate=bE;ra.validateFileName=gE;ra.ZipFile=Ga;ra.Entry=xr;ra.RandomAccessReader=Ha;function ZR(e,t,a){typeof t=="function"&&(a=t,t=null),t==null&&(t={}),t.autoClose==null&&(t.autoClose=!0),t.lazyEntries==null&&(t.lazyEntries=!1),t.decodeStrings==null&&(t.decodeStrings=!0),t.validateEntrySizes==null&&(t.validateEntrySizes=!0),t.strictFileNames==null&&(t.strictFileNames=!1),a==null&&(a=bl),gd.open(e,"r",function(n,i){if(n)return a(n);hE(i,t,function(r,o){r&&gd.close(i,bl),a(r,o)})})}function hE(e,t,a){typeof t=="function"&&(a=t,t=null),t==null&&(t={}),t.autoClose==null&&(t.autoClose=!1),t.lazyEntries==null&&(t.lazyEntries=!1),t.decodeStrings==null&&(t.decodeStrings=!0),t.validateEntrySizes==null&&(t.validateEntrySizes=!0),t.strictFileNames==null&&(t.strictFileNames=!1),a==null&&(a=bl),gd.fstat(e,function(n,i){if(n)return a(n);var r=fE.createFromFd(e,{autoClose:!0});yd(r,i.size,t,a)})}function qR(e,t,a){typeof t=="function"&&(a=t,t=null),t==null&&(t={}),t.autoClose=!1,t.lazyEntries==null&&(t.lazyEntries=!1),t.decodeStrings==null&&(t.decodeStrings=!0),t.validateEntrySizes==null&&(t.validateEntrySizes=!0),t.strictFileNames==null&&(t.strictFileNames=!1);var n=fE.createFromBuffer(e,{maxChunkSize:65536});yd(n,e.length,t,a)}function yd(e,t,a,n){typeof a=="function"&&(n=a,a=null),a==null&&(a={}),a.autoClose==null&&(a.autoClose=!0),a.lazyEntries==null&&(a.lazyEntries=!1),a.decodeStrings==null&&(a.decodeStrings=!0);var i=!!a.decodeStrings;if(a.validateEntrySizes==null&&(a.validateEntrySizes=!0),a.strictFileNames==null&&(a.strictFileNames=!1),n==null&&(n=bl),typeof t!="number")throw new Error("expected totalSize parameter to be a number");if(t>Number.MAX_SAFE_INTEGER)throw new Error("zip file too large. only file sizes up to 2^52 are supported due to JavaScript's Number type being an IEEE 754 double.");e.ref();var r=22,o=65535,s=Math.min(r+o,t),l=ia(s),u=t-l.length;ri(e,l,0,s,u,function(c){if(c)return n(c);for(var f=s-r;f>=0;f-=1)if(l.readUInt32LE(f)===101010256){var p=l.slice(f),b=p.readUInt16LE(4);if(b!==0)return n(new Error("multi-disk zip files are not supported: found disk number: "+b));var d=p.readUInt16LE(10),h=p.readUInt32LE(16),m=p.readUInt16LE(20),v=p.length-r;if(m!==v)return n(new Error("invalid comment length. expected: "+v+". found: "+m));var x=i?vl(p,22,p.length,!1):p.slice(22);if(!(d===65535||h===4294967295))return n(null,new Ga(e,h,t,d,x,a.autoClose,a.lazyEntries,i,a.validateEntrySizes,a.strictFileNames));var E=ia(20),g=u+f-E.length;ri(e,E,0,E.length,g,function(w){if(w)return n(w);if(E.readUInt32LE(0)!==117853008)return n(new Error("invalid zip64 end of central directory locator signature"));var C=oi(E,8),y=ia(56);ri(e,y,0,y.length,C,function(S){return S?n(S):y.readUInt32LE(0)!==101075792?n(new Error("invalid zip64 end of central directory record signature")):(d=oi(y,32),h=oi(y,48),n(null,new Ga(e,h,t,d,x,a.autoClose,a.lazyEntries,i,a.validateEntrySizes,a.strictFileNames)))})});return}n(new Error("end of central directory record signature not found"))})}gl.inherits(Ga,xl);function Ga(e,t,a,n,i,r,o,s,l,u){var c=this;xl.call(c),c.reader=e,c.reader.on("error",function(f){vE(c,f)}),c.reader.once("close",function(){c.emit("close")}),c.readEntryCursor=t,c.fileSize=a,c.entryCount=n,c.comment=i,c.entriesRead=0,c.autoClose=!!r,c.lazyEntries=!!o,c.decodeStrings=!!s,c.validateEntrySizes=!!l,c.strictFileNames=!!u,c.isOpen=!0,c.emittedError=!1,c.lazyEntries||c._readEntry()}Ga.prototype.close=function(){this.isOpen&&(this.isOpen=!1,this.reader.unref())};function qt(e,t){e.autoClose&&e.close(),vE(e,t)}function vE(e,t){e.emittedError||(e.emittedError=!0,e.emit("error",t))}Ga.prototype.readEntry=function(){if(!this.lazyEntries)throw new Error("readEntry() called without lazyEntries:true");this._readEntry()};Ga.prototype._readEntry=function(){var e=this;if(e.entryCount===e.entriesRead){setImmediate(function(){e.autoClose&&e.close(),!e.emittedError&&e.emit("end")});return}if(!e.emittedError){var t=ia(46);ri(e.reader,t,0,t.length,e.readEntryCursor,function(a){if(a)return qt(e,a);if(!e.emittedError){var n=new xr,i=t.readUInt32LE(0);if(i!==33639248)return qt(e,new Error("invalid central directory file header signature: 0x"+i.toString(16)));if(n.versionMadeBy=t.readUInt16LE(4),n.versionNeededToExtract=t.readUInt16LE(6),n.generalPurposeBitFlag=t.readUInt16LE(8),n.compressionMethod=t.readUInt16LE(10),n.lastModFileTime=t.readUInt16LE(12),n.lastModFileDate=t.readUInt16LE(14),n.crc32=t.readUInt32LE(16),n.compressedSize=t.readUInt32LE(20),n.uncompressedSize=t.readUInt32LE(24),n.fileNameLength=t.readUInt16LE(28),n.extraFieldLength=t.readUInt16LE(30),n.fileCommentLength=t.readUInt16LE(32),n.internalFileAttributes=t.readUInt16LE(36),n.externalFileAttributes=t.readUInt32LE(38),n.relativeOffsetOfLocalHeader=t.readUInt32LE(42),n.generalPurposeBitFlag&64)return qt(e,new Error("strong encryption is not supported"));e.readEntryCursor+=46,t=ia(n.fileNameLength+n.extraFieldLength+n.fileCommentLength),ri(e.reader,t,0,t.length,e.readEntryCursor,function(r){if(r)return qt(e,r);if(!e.emittedError){var o=(n.generalPurposeBitFlag&2048)!==0;n.fileName=e.decodeStrings?vl(t,0,n.fileNameLength,o):t.slice(0,n.fileNameLength);var s=n.fileNameLength+n.extraFieldLength,l=t.slice(n.fileNameLength,s);n.extraFields=[];for(var u=0;u<l.length-3;){var c=l.readUInt16LE(u+0),f=l.readUInt16LE(u+2),p=u+4,b=p+f;if(b>l.length)return qt(e,new Error("extra field length exceeds extra field buffer size"));var d=ia(f);l.copy(d,0,p,b),n.extraFields.push({id:c,data:d}),u=b}if(n.fileComment=e.decodeStrings?vl(t,s,s+n.fileCommentLength,o):t.slice(s,s+n.fileCommentLength),n.comment=n.fileComment,e.readEntryCursor+=t.length,e.entriesRead+=1,n.uncompressedSize===4294967295||n.compressedSize===4294967295||n.relativeOffsetOfLocalHeader===4294967295){for(var h=null,u=0;u<n.extraFields.length;u++){var m=n.extraFields[u];if(m.id===1){h=m.data;break}}if(h==null)return qt(e,new Error("expected zip64 extended information extra field"));var v=0;if(n.uncompressedSize===4294967295){if(v+8>h.length)return qt(e,new Error("zip64 extended information extra field does not include uncompressed size"));n.uncompressedSize=oi(h,v),v+=8}if(n.compressedSize===4294967295){if(v+8>h.length)return qt(e,new Error("zip64 extended information extra field does not include compressed size"));n.compressedSize=oi(h,v),v+=8}if(n.relativeOffsetOfLocalHeader===4294967295){if(v+8>h.length)return qt(e,new Error("zip64 extended information extra field does not include relative header offset"));n.relativeOffsetOfLocalHeader=oi(h,v),v+=8}}if(e.decodeStrings)for(var u=0;u<n.extraFields.length;u++){var m=n.extraFields[u];if(m.id===28789){if(m.data.length<6||m.data.readUInt8(0)!==1)continue;var x=m.data.readUInt32LE(1);if(UR.unsigned(t.slice(0,n.fileNameLength))!==x)continue;n.fileName=vl(m.data,5,m.data.length,!0);break}}if(e.validateEntrySizes&&n.compressionMethod===0){var E=n.uncompressedSize;if(n.isEncrypted()&&(E+=12),n.compressedSize!==E){var g="compressed/uncompressed size mismatch for stored file: "+n.compressedSize+" != "+n.uncompressedSize;return qt(e,new Error(g))}}if(e.decodeStrings){e.strictFileNames||(n.fileName=n.fileName.replace(/\\/g,"/"));var w=gE(n.fileName,e.validateFileNameOptions);if(w!=null)return qt(e,new Error(w))}e.emit("entry",n),e.lazyEntries||e._readEntry()}})}})}};Ga.prototype.openReadStream=function(e,t,a){var n=this,i=0,r=e.compressedSize;if(a==null)a=t,t={};else{if(t.decrypt!=null){if(!e.isEncrypted())throw new Error("options.decrypt can only be specified for encrypted entries");if(t.decrypt!==!1)throw new Error("invalid options.decrypt value: "+t.decrypt);if(e.isCompressed()&&t.decompress!==!1)throw new Error("entry is encrypted and compressed, and options.decompress !== false")}if(t.decompress!=null){if(!e.isCompressed())throw new Error("options.decompress can only be specified for compressed entries");if(!(t.decompress===!1||t.decompress===!0))throw new Error("invalid options.decompress value: "+t.decompress)}if(t.start!=null||t.end!=null){if(e.isCompressed()&&t.decompress!==!1)throw new Error("start/end range not allowed for compressed entry without options.decompress === false");if(e.isEncrypted()&&t.decrypt!==!1)throw new Error("start/end range not allowed for encrypted entry without options.decrypt === false")}if(t.start!=null){if(i=t.start,i<0)throw new Error("options.start < 0");if(i>e.compressedSize)throw new Error("options.start > entry.compressedSize")}if(t.end!=null){if(r=t.end,r<0)throw new Error("options.end < 0");if(r>e.compressedSize)throw new Error("options.end > entry.compressedSize");if(r<i)throw new Error("options.end < options.start")}}if(!n.isOpen)return a(new Error("closed"));if(e.isEncrypted()&&t.decrypt!==!1)return a(new Error("entry is encrypted, and options.decrypt !== false"));n.reader.ref();var o=ia(30);ri(n.reader,o,0,o.length,e.relativeOffsetOfLocalHeader,function(s){try{if(s)return a(s);var l=o.readUInt32LE(0);if(l!==67324752)return a(new Error("invalid local file header signature: 0x"+l.toString(16)));var u=o.readUInt16LE(26),c=o.readUInt16LE(28),f=e.relativeOffsetOfLocalHeader+o.length+u+c,p;if(e.compressionMethod===0)p=!1;else if(e.compressionMethod===8)p=t.decompress!=null?t.decompress:!0;else return a(new Error("unsupported compression method: "+e.compressionMethod));var b=f,d=b+e.compressedSize;if(e.compressedSize!==0&&d>n.fileSize)return a(new Error("file data overflows file bounds: "+b+" + "+e.compressedSize+" > "+n.fileSize));var h=n.reader.createReadStream({start:b+i,end:b+r}),m=h;if(p){var v=!1,x=VR.createInflateRaw();h.on("error",function(E){setImmediate(function(){v||x.emit("error",E)})}),h.pipe(x),n.validateEntrySizes?(m=new yr(e.uncompressedSize),x.on("error",function(E){setImmediate(function(){v||m.emit("error",E)})}),x.pipe(m)):m=x,m.destroy=function(){v=!0,x!==m&&x.unpipe(m),h.unpipe(x),h.destroy()}}a(null,m)}finally{n.reader.unref()}})};function xr(){}xr.prototype.getLastModDate=function(){return bE(this.lastModFileDate,this.lastModFileTime)};xr.prototype.isEncrypted=function(){return(this.generalPurposeBitFlag&1)!==0};xr.prototype.isCompressed=function(){return this.compressionMethod===8};function bE(e,t){var a=e&31,n=(e>>5&15)-1,i=(e>>9&127)+1980,r=0,o=(t&31)*2,s=t>>5&63,l=t>>11&31;return new Date(i,n,a,l,s,o,r)}function gE(e){return e.indexOf("\\")!==-1?"invalid characters in fileName: "+e:/^[a-zA-Z]:/.test(e)||/^\//.test(e)?"absolute path: "+e:e.split("/").indexOf("..")!==-1?"invalid relative path: "+e:null}function ri(e,t,a,n,i,r){if(n===0)return setImmediate(function(){r(null,ia(0))});e.read(t,a,n,i,function(o,s){if(o)return r(o);if(s<n)return r(new Error("unexpected EOF"));r()})}gl.inherits(yr,mE);function yr(e){mE.call(this),this.actualByteCount=0,this.expectedByteCount=e}yr.prototype._transform=function(e,t,a){if(this.actualByteCount+=e.length,this.actualByteCount>this.expectedByteCount){var n="too many bytes in the stream. expected "+this.expectedByteCount+". got at least "+this.actualByteCount;return a(new Error(n))}a(null,e)};yr.prototype._flush=function(e){if(this.actualByteCount<this.expectedByteCount){var t="not enough bytes in the stream. expected "+this.expectedByteCount+". got only "+this.actualByteCount;return e(new Error(t))}e()};gl.inherits(Ha,xl);function Ha(){xl.call(this),this.refCount=0}Ha.prototype.ref=function(){this.refCount+=1};Ha.prototype.unref=function(){var e=this;if(e.refCount-=1,e.refCount>0)return;if(e.refCount<0)throw new Error("invalid unref");e.close(t);function t(a){if(a)return e.emit("error",a);e.emit("close")}};Ha.prototype.createReadStream=function(e){var t=e.start,a=e.end;if(t===a){var n=new xd;return setImmediate(function(){n.end()}),n}var i=this._readStreamForRange(t,a),r=!1,o=new yl(this);i.on("error",function(l){setImmediate(function(){r||o.emit("error",l)})}),o.destroy=function(){i.unpipe(o),o.unref(),i.destroy()};var s=new yr(a-t);return o.on("error",function(l){setImmediate(function(){r||s.emit("error",l)})}),s.destroy=function(){r=!0,o.unpipe(s),o.destroy()},i.pipe(o).pipe(s)};Ha.prototype._readStreamForRange=function(e,t){throw new Error("not implemented")};Ha.prototype.read=function(e,t,a,n,i){var r=this.createReadStream({start:n,end:n+a}),o=new JR,s=0;o._write=function(l,u,c){l.copy(e,t+s,0,l.length),s+=l.length,c()},o.on("finish",i),r.on("error",function(l){i(l)}),r.pipe(o)};Ha.prototype.close=function(e){setImmediate(e)};gl.inherits(yl,xd);function yl(e){xd.call(this),this.context=e,this.context.ref(),this.unreffedYet=!1}yl.prototype._flush=function(e){this.unref(),e()};yl.prototype.unref=function(e){this.unreffedYet||(this.unreffedYet=!0,this.context.unref())};var XR="\0\u263A\u263B\u2665\u2666\u2663\u2660\u2022\u25D8\u25CB\u25D9\u2642\u2640\u266A\u266B\u263C\u25BA\u25C4\u2195\u203C\xB6\xA7\u25AC\u21A8\u2191\u2193\u2192\u2190\u221F\u2194\u25B2\u25BC !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u2302\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0";function vl(e,t,a,n){if(n)return e.toString("utf8",t,a);for(var i="",r=t;r<a;r++)i+=XR[e[r]];return i}function oi(e,t){var a=e.readUInt32LE(t),n=e.readUInt32LE(t+4);return n*4294967296+a}var ia;typeof Buffer.allocUnsafe=="function"?ia=function(e){return Buffer.allocUnsafe(e)}:ia=function(e){return new Buffer(e)};function bl(e){if(e)throw e}});var SE=O((tW,EE)=>{"use strict";var yE=L1(),$R=Q1(),wE=nE(),YR=xE(),KR=(e,t)=>{let r=e.versionMadeBy>>8;return(t&61440)===40960?"symlink":(t&61440)===16384||r===0&&e.externalFileAttributes===16?"directory":"file"},QR=(e,t)=>{let a={mode:e.externalFileAttributes>>16&65535,mtime:e.getLastModDate(),path:e.fileName};return a.type=KR(e,a.mode),a.mode===0&&a.type==="directory"&&(a.mode=493),a.mode===0&&(a.mode=420),wE(t.openReadStream.bind(t))(e).then($R.buffer).then(n=>(a.data=n,a.type==="symlink"&&(a.linkname=n.toString()),a)).catch(n=>{throw t.close(),n})},eB=e=>new Promise((t,a)=>{let n=[];e.readEntry(),e.on("entry",i=>{QR(i,e).catch(a).then(r=>{n.push(r),e.readEntry()})}),e.on("error",a),e.on("end",()=>t(n))});EE.exports=()=>e=>Buffer.isBuffer(e)?!yE(e)||yE(e).ext!=="zip"?Promise.resolve([]):wE(YR.fromBuffer)(e,{lazyEntries:!0}).then(eB):Promise.reject(new TypeError(`Expected a Buffer, got ${typeof e}`))});var IE=O((aW,AE)=>{"use strict";var CE=(e,t)=>function(){let a=t.promiseModule,n=new Array(arguments.length);for(let i=0;i<arguments.length;i++)n[i]=arguments[i];return new a((i,r)=>{t.errorFirst?n.push(function(o,s){if(t.multiArgs){let l=new Array(arguments.length-1);for(let u=1;u<arguments.length;u++)l[u-1]=arguments[u];o?(l.unshift(o),r(l)):i(l)}else o?r(o):i(s)}):n.push(function(o){if(t.multiArgs){let s=new Array(arguments.length-1);for(let l=0;l<arguments.length;l++)s[l]=arguments[l];i(s)}else i(o)}),e.apply(this,n)})};AE.exports=(e,t)=>{t=Object.assign({exclude:[/.+(Sync|Stream)$/],errorFirst:!0,promiseModule:Promise},t);let a=i=>{let r=o=>typeof o=="string"?i===o:o.test(i);return t.include?t.include.some(r):!t.exclude.some(r)},n;typeof e=="function"?n=function(){return t.excludeMain?e.apply(this,arguments):CE(e,t).apply(this,arguments)}:n=Object.create(Object.getPrototypeOf(e));for(let i in e){let r=e[i];n[i]=typeof r=="function"&&a(i)?CE(r,t):r}return n}});var FE=O((nW,wd)=>{"use strict";var tB=require("fs"),vn=require("path"),_E=IE(),TE={mode:511&~process.umask(),fs:tB},kE=e=>{if(process.platform==="win32"&&/[<>:"|?*]/.test(e.replace(vn.parse(e).root,""))){let a=new Error(`Path contains invalid characters: ${e}`);throw a.code="EINVAL",a}};wd.exports=(e,t)=>Promise.resolve().then(()=>{kE(e),t=Object.assign({},TE,t);let a=_E(t.fs.mkdir),n=_E(t.fs.stat),i=r=>a(r,t.mode).then(()=>r).catch(o=>{if(o.code==="ENOENT"){if(o.message.includes("null bytes")||vn.dirname(r)===r)throw o;return i(vn.dirname(r)).then(()=>i(r))}return n(r).then(s=>s.isDirectory()?r:Promise.reject()).catch(()=>{throw o})});return i(vn.resolve(e))});wd.exports.sync=(e,t)=>{kE(e),t=Object.assign({},TE,t);let a=n=>{try{t.fs.mkdirSync(n,t.mode)}catch(i){if(i.code==="ENOENT"){if(i.message.includes("null bytes")||vn.dirname(n)===n)throw i;return a(vn.dirname(n)),a(n)}try{if(!t.fs.statSync(n).isDirectory())throw new Error("The path is not a directory")}catch(r){throw i}}return n};return a(vn.resolve(e))}});var BE=O((iW,RE)=>{"use strict";var PE=function(e,t,a){return function(){for(var n=this,i=new Array(arguments.length),r=0;r<arguments.length;r++)i[r]=arguments[r];return new t(function(o,s){i.push(function(l,u){if(l)s(l);else if(a.multiArgs){for(var c=new Array(arguments.length-1),f=1;f<arguments.length;f++)c[f-1]=arguments[f];o(c)}else o(u)}),e.apply(n,i)})}},OE=RE.exports=function(e,t,a){typeof t!="function"&&(a=t,t=Promise),a=a||{},a.exclude=a.exclude||[/.+Sync$/];var n=function(r){var o=function(s){return typeof s=="string"?r===s:s.test(r)};return a.include?a.include.some(o):!a.exclude.some(o)},i=typeof e=="function"?function(){return a.excludeMain?e.apply(this,arguments):PE(e,t,a).apply(this,arguments)}:{};return Object.keys(e).reduce(function(r,o){var s=e[o];return r[o]=typeof s=="function"&&n(o)?PE(s,t,a):s,r},i)};OE.all=OE});var jE=O((rW,NE)=>{"use strict";NE.exports=function(t,a){if(a){if(typeof a!="object")throw new TypeError(String(a)+" is not an object. Expected an object that has boolean `includeZero` property.");if("includeZero"in a){if(typeof a.includeZero!="boolean")throw new TypeError(String(a.includeZero)+" is neither true nor false. `includeZero` option must be a Boolean value.");if(a.includeZero&&t===0)return!0}}return Number.isSafeInteger(t)&&t>=1}});var ME=O((oW,LE)=>{"use strict";var wr=require("path"),Er=require("util"),aB=jE();LE.exports=function(t,a,n){if(typeof t!="string")throw new TypeError(Er.inspect(t)+" is not a string. First argument to strip-dirs must be a path string.");if(wr.posix.isAbsolute(t)||wr.win32.isAbsolute(t))throw new Error(`${t} is an absolute path. strip-dirs requires a relative path.`);if(!aB(a,{includeZero:!0}))throw new Error("The Second argument of strip-dirs must be a natural number or 0, but received "+Er.inspect(a)+".");if(n){if(typeof n!="object")throw new TypeError(Er.inspect(n)+" is not an object. Expected an object with a boolean `disallowOverflow` property.");if(Array.isArray(n))throw new TypeError(Er.inspect(n)+" is an array. Expected an object with a boolean `disallowOverflow` property.");if("disallowOverflow"in n&&typeof n.disallowOverflow!="boolean")throw new TypeError(Er.inspect(n.disallowOverflow)+" is neither true nor false. `disallowOverflow` option must be a Boolean value.")}else n={disallowOverflow:!1};let i=wr.normalize(t).split(wr.sep);if(i.length>1&&i[0]==="."&&i.shift(),a>i.length-1){if(n.disallowOverflow)throw new RangeError("Cannot strip more directories than there are.");a=i.length-1}return wr.join.apply(null,i.slice(a))}});var zE=O((sW,DE)=>{"use strict";var wl=require("path"),nB=xy(),iB=il(),rB=F1(),oB=N1(),sB=SE(),Ed=FE(),lB=BE(),cB=ME(),Pt=lB(nB),uB=(e,t)=>t.plugins.length===0?Promise.resolve([]):Promise.all(t.plugins.map(a=>a(e,t))).then(a=>a.reduce((n,i)=>n.concat(i))),Sd=(e,t)=>Pt.realpath(e).catch(a=>{let n=wl.dirname(e);return Sd(n,t)}).then(a=>{if(a.indexOf(t)!==0)throw new Error("Refusing to create a directory outside the output path.");return Ed(e).then(Pt.realpath)}),pB=(e,t)=>Pt.readlink(e).catch(a=>null).then(a=>{if(a)throw new Error("Refusing to write into a symlink");return t}),dB=(e,t,a)=>uB(e,a).then(n=>(a.strip>0&&(n=n.map(i=>(i.path=cB(i.path,a.strip),i)).filter(i=>i.path!==".")),typeof a.filter=="function"&&(n=n.filter(a.filter)),typeof a.map=="function"&&(n=n.map(a.map)),t?Promise.all(n.map(i=>{let r=wl.join(t,i.path),o=i.mode&~process.umask(),s=new Date;return i.type==="directory"?Ed(t).then(l=>Pt.realpath(l)).then(l=>Sd(r,l)).then(()=>Pt.utimes(r,s,i.mtime)).then(()=>i):Ed(t).then(l=>Pt.realpath(l)).then(l=>Sd(wl.dirname(r),l).then(()=>l)).then(l=>i.type==="file"?pB(r,l):l).then(l=>Pt.realpath(wl.dirname(r)).then(u=>{if(u.indexOf(l)!==0)throw new Error("Refusing to write outside output directory: "+u)})).then(()=>i.type==="link"||i.type==="symlink"&&process.platform==="win32"?Pt.link(i.linkname,r):i.type==="symlink"?Pt.symlink(i.linkname,r):Pt.writeFile(r,i.data,{mode:o})).then(()=>i.type==="file"&&Pt.utimes(r,s,i.mtime)).then(()=>i)})):n));DE.exports=(e,t,a)=>typeof e!="string"&&!Buffer.isBuffer(e)?Promise.reject(new TypeError("Input file required")):(typeof t=="object"&&(a=t,t=null),a=Object.assign({plugins:[iB(),rB(),oB(),sB()]},a),(typeof e=="string"?Pt.readFile(e):Promise.resolve(e)).then(i=>dB(i,t,a)))});var HE=O((lW,GE)=>{"use strict";var fB=/[|\\{}()[\]^$+*?.]/g;GE.exports=function(e){if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(fB,"\\$&")}});var VE=O((cW,WE)=>{"use strict";var mB=HE();WE.exports=function(e,t){if(typeof e!="string"||typeof t!="string")throw new TypeError("Expected a string");return e.replace(new RegExp("(?:"+mB(t)+"){2,}","g"),t)}});var UE=O((uW,Cd)=>{"use strict";Cd.exports=()=>/[<>:"\/\\|?*\x00-\x1F]/g;Cd.exports.windowsNames=()=>/^(con|prn|aux|nul|com[0-9]|lpt[0-9])$/i});var ZE=O((pW,JE)=>{"use strict";var hB=/[|\\{}()[\]^$+*?.]/g;JE.exports=function(e){if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(hB,"\\$&")}});var XE=O((dW,qE)=>{"use strict";var vB=ZE();qE.exports=function(e,t){if(typeof e!="string"||typeof t!="string")throw new TypeError;return t=vB(t),e.replace(new RegExp("^"+t+"|"+t+"$","g"),"")}});var YE=O((fW,Id)=>{"use strict";var El=require("path"),bB=VE(),Ad=UE(),gB=XE(),xB=100,$E=/[\u0000-\u001f\u0080-\u009f]/g,yB=/^\.+/,Sl=(e,t={})=>{if(typeof e!="string")throw new TypeError("Expected a string");let a=t.replacement===void 0?"!":t.replacement;if(Ad().test(a)&&$E.test(a))throw new Error("Replacement string cannot contain reserved filename characters");return e=e.replace(Ad(),a),e=e.replace($E,a),e=e.replace(yB,a),a.length>0&&(e=bB(e,a),e=e.length>1?gB(e,a):e),e=Ad.windowsNames().test(e)?e+a:e,e=e.slice(0,xB),e};Sl.path=(e,t)=>(e=El.resolve(e),El.join(El.dirname(e),Sl(El.basename(e),t)));Id.exports=Sl;Id.exports.default=Sl});var eS=O((mW,QE)=>{var wB=ed(),EB=td(),_d=require("fs"),Sr=function(){},SB=/^v?\.0/.test(process.version),Cl=function(e){return typeof e=="function"},CB=function(e){return!SB||!_d?!1:(e instanceof(_d.ReadStream||Sr)||e instanceof(_d.WriteStream||Sr))&&Cl(e.close)},AB=function(e){return e.setHeader&&Cl(e.abort)},IB=function(e,t,a,n){n=wB(n);var i=!1;e.on("close",function(){i=!0}),EB(e,{readable:t,writable:a},function(o){if(o)return n(o);i=!0,n()});var r=!1;return function(o){if(!i&&!r){if(r=!0,CB(e))return e.close(Sr);if(AB(e))return e.abort();if(Cl(e.destroy))return e.destroy();n(o||new Error("stream was destroyed"))}}},KE=function(e){e()},_B=function(e,t){return e.pipe(t)},TB=function(){var e=Array.prototype.slice.call(arguments),t=Cl(e[e.length-1]||Sr)&&e.pop()||Sr;if(Array.isArray(e[0])&&(e=e[0]),e.length<2)throw new Error("pump requires two streams per minimum");var a,n=e.map(function(i,r){var o=r<e.length-1,s=r>0;return IB(i,o,s,function(l){a||(a=l),l&&n.forEach(KE),!o&&(n.forEach(KE),t(a))})});return e.reduce(_B)};QE.exports=TB});var aS=O((hW,tS)=>{"use strict";var{PassThrough:kB}=require("stream");tS.exports=e=>{e=Object.assign({},e);let{array:t}=e,{encoding:a}=e,n=a==="buffer",i=!1;t?i=!(a||n):a=a||"utf8",n&&(a=null);let r=0,o=[],s=new kB({objectMode:i});return a&&s.setEncoding(a),s.on("data",l=>{o.push(l),i?r=o.length:r+=l.length}),s.getBufferedValue=()=>t?o:n?Buffer.concat(o,r):o.join(""),s.getBufferedLength=()=>r,s}});var nS=O((vW,Cr)=>{"use strict";var FB=eS(),PB=aS(),Al=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};function Td(e,t){if(!e)return Promise.reject(new Error("Expected a stream"));t=Object.assign({maxBuffer:1/0},t);let{maxBuffer:a}=t,n;return new Promise((i,r)=>{let o=s=>{s&&(s.bufferedData=n.getBufferedValue()),r(s)};n=FB(e,PB(t),s=>{if(s){o(s);return}i()}),n.on("data",()=>{n.getBufferedLength()>a&&o(new Al)})}).then(()=>n.getBufferedValue())}Cr.exports=Td;Cr.exports.buffer=(e,t)=>Td(e,Object.assign({},t,{encoding:"buffer"}));Cr.exports.array=(e,t)=>Td(e,Object.assign({},t,{array:!0}));Cr.exports.MaxBufferError=Al});var rS=O((bW,iS)=>{"use strict";iS.exports=function(e){return encodeURIComponent(e).replace(/[!'()*]/g,function(t){return"%"+t.charCodeAt(0).toString(16).toUpperCase()})}});var uS=O((gW,cS)=>{"use strict";var lS="%[a-f0-9]{2}",oS=new RegExp("("+lS+")|([^%]+?)","gi"),sS=new RegExp("("+lS+")+","gi");function kd(e,t){try{return[decodeURIComponent(e.join(""))]}catch(i){}if(e.length===1)return e;t=t||1;var a=e.slice(0,t),n=e.slice(t);return Array.prototype.concat.call([],kd(a),kd(n))}function OB(e){try{return decodeURIComponent(e)}catch(n){for(var t=e.match(oS)||[],a=1;a<t.length;a++)e=kd(t,a).join(""),t=e.match(oS)||[];return e}}function RB(e){for(var t={"%FE%FF":"\uFFFD\uFFFD","%FF%FE":"\uFFFD\uFFFD"},a=sS.exec(e);a;){try{t[a[0]]=decodeURIComponent(a[0])}catch(s){var n=OB(a[0]);n!==a[0]&&(t[a[0]]=n)}a=sS.exec(e)}t["%C2"]="\uFFFD";for(var i=Object.keys(t),r=0;r<i.length;r++){var o=i[r];e=e.replace(new RegExp(o,"g"),t[o])}return e}cS.exports=function(e){if(typeof e!="string")throw new TypeError("Expected `encodedURI` to be of type `string`, got `"+typeof e+"`");try{return e=e.replace(/\+/g," "),decodeURIComponent(e)}catch(t){return RB(e)}}});var vS=O(Ar=>{"use strict";var BB=rS(),dS=cl(),pS=uS();function NB(e){switch(e.arrayFormat){case"index":return function(t,a,n){return a===null?[Ot(t,e),"[",n,"]"].join(""):[Ot(t,e),"[",Ot(n,e),"]=",Ot(a,e)].join("")};case"bracket":return function(t,a){return a===null?Ot(t,e):[Ot(t,e),"[]=",Ot(a,e)].join("")};default:return function(t,a){return a===null?Ot(t,e):[Ot(t,e),"=",Ot(a,e)].join("")}}}function jB(e){var t;switch(e.arrayFormat){case"index":return function(a,n,i){if(t=/\[(\d*)\]$/.exec(a),a=a.replace(/\[\d*\]$/,""),!t){i[a]=n;return}i[a]===void 0&&(i[a]={}),i[a][t[1]]=n};case"bracket":return function(a,n,i){if(t=/(\[\])$/.exec(a),a=a.replace(/\[\]$/,""),t){if(i[a]===void 0){i[a]=[n];return}}else{i[a]=n;return}i[a]=[].concat(i[a],n)};default:return function(a,n,i){if(i[a]===void 0){i[a]=n;return}i[a]=[].concat(i[a],n)}}}function Ot(e,t){return t.encode?t.strict?BB(e):encodeURIComponent(e):e}function fS(e){return Array.isArray(e)?e.sort():typeof e=="object"?fS(Object.keys(e)).sort(function(t,a){return Number(t)-Number(a)}).map(function(t){return e[t]}):e}function mS(e){var t=e.indexOf("?");return t===-1?"":e.slice(t+1)}function hS(e,t){t=dS({arrayFormat:"none"},t);var a=jB(t),n=Object.create(null);return typeof e!="string"||(e=e.trim().replace(/^[?#&]/,""),!e)?n:(e.split("&").forEach(function(i){var r=i.replace(/\+/g," ").split("="),o=r.shift(),s=r.length>0?r.join("="):void 0;s=s===void 0?null:pS(s),a(pS(o),s,n)}),Object.keys(n).sort().reduce(function(i,r){var o=n[r];return o&&typeof o=="object"&&!Array.isArray(o)?i[r]=fS(o):i[r]=o,i},Object.create(null)))}Ar.extract=mS;Ar.parse=hS;Ar.stringify=function(e,t){var a={encode:!0,strict:!0,arrayFormat:"none"};t=dS(a,t),t.sort===!1&&(t.sort=function(){});var n=NB(t);return e?Object.keys(e).sort(t.sort).map(function(i){var r=e[i];if(r===void 0)return"";if(r===null)return Ot(i,t);if(Array.isArray(r)){var o=[];return r.slice().forEach(function(s){s!==void 0&&o.push(n(i,s,o.length))}),o.join("&")}return Ot(i,t)+"="+Ot(r,t)}).filter(function(i){return i.length>0}).join("&"):""};Ar.parseUrl=function(e,t){return{url:e.split("?")[0]||"",query:hS(mS(e),t)}}});var Fd=O((yW,bS)=>{"use strict";bS.exports=(e,t)=>{if(typeof e!="string")throw new TypeError(`Expected \`url\` to be of type \`string\`, got \`${typeof e}\``);return e=e.trim(),t=Object.assign({https:!1},t),/^\.*\/|^(?!localhost)\w+:/.test(e)?e:e.replace(/^(?!(?:\w+:)?\/\/)/,t.https?"https://":"http://")}});var Pd=O((wW,gS)=>{"use strict";var LB=Object.prototype.toString;gS.exports=function(e){var t;return LB.call(e)==="[object Object]"&&(t=Object.getPrototypeOf(e),t===null||t===Object.getPrototypeOf({}))}});var yS=O((EW,xS)=>{"use strict";var Od=Pd();xS.exports=(e,t)=>{if(!Od(e))throw new TypeError("Expected a plain object");if(t=t||{},typeof t=="function")throw new TypeError("Specify the compare function as an option instead");let a=t.deep,n=[],i=[],r=o=>{let s=n.indexOf(o);if(s!==-1)return i[s];let l={},u=Object.keys(o).sort(t.compare);n.push(o),i.push(l);for(let c=0;c<u.length;c++){let f=u[c],p=o[f];if(a&&Array.isArray(p)){let b=[];for(let d=0;d<p.length;d++)b[d]=Od(p[d])?r(p[d]):p[d];l[f]=b;continue}l[f]=a&&Od(p)?r(p):p}return l};return r(e)}});var CS=O((SW,SS)=>{"use strict";var Rd=require("url"),MB=require("punycode"),wS=vS(),DB=Fd(),zB=yS(),GB={"http:":80,"https:":443,"ftp:":21},HB={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function ES(e,t){return t.some(a=>a instanceof RegExp?a.test(e):a===e)}SS.exports=(e,t)=>{if(t=Object.assign({normalizeProtocol:!0,normalizeHttps:!1,stripFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},t),typeof e!="string")throw new TypeError("Expected a string");let a=e.startsWith("//");e=DB(e.trim()).replace(/^\/\//,"http://");let n=Rd.parse(e);if(t.normalizeHttps&&n.protocol==="https:"&&(n.protocol="http:"),!n.hostname&&!n.pathname)throw new Error("Invalid URL");delete n.host,delete n.query,t.stripFragment&&delete n.hash;let i=GB[n.protocol];if(Number(n.port)===i&&delete n.port,n.pathname&&(n.pathname=n.pathname.replace(/\/{2,}/g,"/")),n.pathname&&(n.pathname=decodeURI(n.pathname)),t.removeDirectoryIndex===!0&&(t.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(t.removeDirectoryIndex)&&t.removeDirectoryIndex.length>0){let o=n.pathname.split("/"),s=o[o.length-1];ES(s,t.removeDirectoryIndex)&&(o=o.slice(0,o.length-1),n.pathname=o.slice(1).join("/")+"/")}if(HB[n.protocol]){let o=n.protocol+"//"+n.hostname,s=Rd.resolve(o,n.pathname);n.pathname=s.replace(o,"")}n.hostname&&(n.hostname=MB.toUnicode(n.hostname).toLowerCase(),n.hostname=n.hostname.replace(/\.$/,""),t.stripWWW&&(n.hostname=n.hostname.replace(/^www\./,""))),n.search==="?"&&delete n.search;let r=wS.parse(n.search);if(Array.isArray(t.removeQueryParameters))for(let o in r)ES(o,t.removeQueryParameters)&&delete r[o];return t.sortQueryParameters&&(n.search=wS.stringify(zB(r))),n.search!==null&&(n.search=decodeURIComponent(n.search)),e=Rd.format(n),(t.removeTrailingSlash||n.pathname==="/")&&(e=e.replace(/\/$/,"")),a&&!t.normalizeProtocol&&(e=e.replace(/^http:\/\//,"//")),e}});var IS=O((CW,AS)=>{"use strict";var WB=require("stream").PassThrough;AS.exports=e=>{e=Object.assign({},e);let t=e.array,a=e.encoding,n=a==="buffer",i=!1;t?i=!(a||n):a=a||"utf8",n&&(a=null);let r=0,o=[],s=new WB({objectMode:i});return a&&s.setEncoding(a),s.on("data",l=>{o.push(l),i?r=o.length:r+=l.length}),s.getBufferedValue=()=>t?o:n?Buffer.concat(o,r):o.join(""),s.getBufferedLength=()=>r,s}});var _S=O((AW,Il)=>{"use strict";var VB=IS();function Bd(e,t){if(!e)return Promise.reject(new Error("Expected a stream"));t=Object.assign({maxBuffer:1/0},t);let a=t.maxBuffer,n,i,r=new Promise((o,s)=>{let l=u=>{u&&(u.bufferedData=n.getBufferedValue()),s(u)};n=VB(t),e.once("error",l),e.pipe(n),n.on("data",()=>{n.getBufferedLength()>a&&s(new Error("maxBuffer exceeded"))}),n.once("error",l),n.on("end",o),i=()=>{e.unpipe&&e.unpipe(n)}});return r.then(i,i),r.then(()=>n.getBufferedValue())}Il.exports=Bd;Il.exports.buffer=(e,t)=>Bd(e,Object.assign({},t,{encoding:"buffer"}));Il.exports.array=(e,t)=>Bd(e,Object.assign({},t,{array:!0}))});var kS=O((IW,TS)=>{"use strict";function UB(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var JB=[200,203,204,206,300,301,404,405,410,414,501],ZB=[200,203,204,300,301,302,303,307,308,404,405,410,414,501],qB={connection:!0,"keep-alive":!0,"proxy-authenticate":!0,"proxy-authorization":!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0},XB={"content-length":!0,"content-encoding":!0,"transfer-encoding":!0,"content-range":!0};function Nd(e){var t={};if(!e)return t;for(var a=e.trim().split(/\s*,\s*/),r=a,n=Array.isArray(r),i=0,r=n?r:r[Symbol.iterator]();;){var o;if(n){if(i>=r.length)break;o=r[i++]}else{if(i=r.next(),i.done)break;o=i.value}var s=o,l=s.split(/\s*=\s*/,2),u=l[0],c=l[1];t[u]=c===void 0?!0:c.replace(/^"|"$/g,"")}return t}function $B(e){var t=[];for(var a in e){var n=e[a];t.push(n===!0?a:a+"="+n)}if(t.length)return t.join(", ")}TS.exports=function(){function e(t,a){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=n.shared,r=n.cacheHeuristic,o=n.immutableMinTimeToLive,s=n.ignoreCargoCult,l=n._fromObject;if(UB(this,e),l){this._fromObject(l);return}if(!a||!a.headers)throw Error("Response headers missing");this._assertRequestHasHeaders(t),this._responseTime=this.now(),this._isShared=i!==!1,this._cacheHeuristic=r!==void 0?r:.1,this._immutableMinTtl=o!==void 0?o:24*3600*1e3,this._status="status"in a?a.status:200,this._resHeaders=a.headers,this._rescc=Nd(a.headers["cache-control"]),this._method="method"in t?t.method:"GET",this._url=t.url,this._host=t.headers.host,this._noAuthorization=!t.headers.authorization,this._reqHeaders=a.headers.vary?t.headers:null,this._reqcc=Nd(t.headers["cache-control"]),s&&"pre-check"in this._rescc&&"post-check"in this._rescc&&(delete this._rescc["pre-check"],delete this._rescc["post-check"],delete this._rescc["no-cache"],delete this._rescc["no-store"],delete this._rescc["must-revalidate"],this._resHeaders=Object.assign({},this._resHeaders,{"cache-control":$B(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),!a.headers["cache-control"]&&/no-cache/.test(a.headers.pragma)&&(this._rescc["no-cache"]=!0)}return e.prototype.now=function(){return Date.now()},e.prototype.storable=function(){return!!(!this._reqcc["no-store"]&&(this._method==="GET"||this._method==="HEAD"||this._method==="POST"&&this._hasExplicitExpiration())&&ZB.indexOf(this._status)!==-1&&!this._rescc["no-store"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc.public||this._rescc["max-age"]||this._rescc["s-maxage"]||JB.indexOf(this._status)!==-1))},e.prototype._hasExplicitExpiration=function(){return this._isShared&&this._rescc["s-maxage"]||this._rescc["max-age"]||this._resHeaders.expires},e.prototype._assertRequestHasHeaders=function(a){if(!a||!a.headers)throw Error("Request headers missing")},e.prototype.satisfiesWithoutRevalidation=function(a){this._assertRequestHasHeaders(a);var n=Nd(a.headers["cache-control"]);if(n["no-cache"]||/no-cache/.test(a.headers.pragma)||n["max-age"]&&this.age()>n["max-age"]||n["min-fresh"]&&this.timeToLive()<1e3*n["min-fresh"])return!1;if(this.stale()){var i=n["max-stale"]&&!this._rescc["must-revalidate"]&&(n["max-stale"]===!0||n["max-stale"]>this.age()-this.maxAge());if(!i)return!1}return this._requestMatches(a,!1)},e.prototype._requestMatches=function(a,n){return(!this._url||this._url===a.url)&&this._host===a.headers.host&&(!a.method||this._method===a.method||n&&a.method==="HEAD")&&this._varyMatches(a)},e.prototype._allowsStoringAuthenticated=function(){return this._rescc["must-revalidate"]||this._rescc.public||this._rescc["s-maxage"]},e.prototype._varyMatches=function(a){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary==="*")return!1;for(var n=this._resHeaders.vary.trim().toLowerCase().split(/\s*,\s*/),o=n,i=Array.isArray(o),r=0,o=i?o:o[Symbol.iterator]();;){var s;if(i){if(r>=o.length)break;s=o[r++]}else{if(r=o.next(),r.done)break;s=r.value}var l=s;if(a.headers[l]!==this._reqHeaders[l])return!1}return!0},e.prototype._copyWithoutHopByHopHeaders=function(a){var n={};for(var i in a)qB[i]||(n[i]=a[i]);if(a.connection)for(var r=a.connection.trim().split(/\s*,\s*/),l=r,o=Array.isArray(l),s=0,l=o?l:l[Symbol.iterator]();;){var u;if(o){if(s>=l.length)break;u=l[s++]}else{if(s=l.next(),s.done)break;u=s.value}var c=u;delete n[c]}if(n.warning){var f=n.warning.split(/,/).filter(function(p){return!/^\s*1[0-9][0-9]/.test(p)});f.length?n.warning=f.join(",").trim():delete n.warning}return n},e.prototype.responseHeaders=function(){var a=this._copyWithoutHopByHopHeaders(this._resHeaders),n=this.age();return n>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(a.warning=(a.warning?`${a.warning}, `:"")+'113 - "rfc7234 5.5.4"'),a.age=`${Math.round(n)}`,a},e.prototype.date=function(){var a=Date.parse(this._resHeaders.date),n=8*3600*1e3;return Number.isNaN(a)||a<this._responseTime-n||a>this._responseTime+n?this._responseTime:a},e.prototype.age=function(){var a=Math.max(0,(this._responseTime-this.date())/1e3);if(this._resHeaders.age){var n=this._ageValue();n>a&&(a=n)}var i=(this.now()-this._responseTime)/1e3;return a+i},e.prototype._ageValue=function(){var a=parseInt(this._resHeaders.age);return isFinite(a)?a:0},e.prototype.maxAge=function(){if(!this.storable()||this._rescc["no-cache"]||this._isShared&&this._resHeaders["set-cookie"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary==="*")return 0;if(this._isShared){if(this._rescc["proxy-revalidate"])return 0;if(this._rescc["s-maxage"])return parseInt(this._rescc["s-maxage"],10)}if(this._rescc["max-age"])return parseInt(this._rescc["max-age"],10);var a=this._rescc.immutable?this._immutableMinTtl:0,n=this.date();if(this._resHeaders.expires){var i=Date.parse(this._resHeaders.expires);return Number.isNaN(i)||i<n?0:Math.max(a,(i-n)/1e3)}if(this._resHeaders["last-modified"]){var r=Date.parse(this._resHeaders["last-modified"]);if(isFinite(r)&&n>r)return Math.max(a,(n-r)/1e3*this._cacheHeuristic)}return a},e.prototype.timeToLive=function(){return Math.max(0,this.maxAge()-this.age())*1e3},e.prototype.stale=function(){return this.maxAge()<=this.age()},e.fromObject=function(a){return new this(void 0,void 0,{_fromObject:a})},e.prototype._fromObject=function(a){if(this._responseTime)throw Error("Reinitialized");if(!a||a.v!==1)throw Error("Invalid serialization");this._responseTime=a.t,this._isShared=a.sh,this._cacheHeuristic=a.ch,this._immutableMinTtl=a.imm!==void 0?a.imm:24*3600*1e3,this._status=a.st,this._resHeaders=a.resh,this._rescc=a.rescc,this._method=a.m,this._url=a.u,this._host=a.h,this._noAuthorization=a.a,this._reqHeaders=a.reqh,this._reqcc=a.reqcc},e.prototype.toObject=function(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}},e.prototype.revalidationHeaders=function(a){this._assertRequestHasHeaders(a);var n=this._copyWithoutHopByHopHeaders(a.headers);if(delete n["if-range"],!this._requestMatches(a,!0)||!this.storable())return delete n["if-none-match"],delete n["if-modified-since"],n;this._resHeaders.etag&&(n["if-none-match"]=n["if-none-match"]?`${n["if-none-match"]}, ${this._resHeaders.etag}`:this._resHeaders.etag);var i=n["accept-ranges"]||n["if-match"]||n["if-unmodified-since"]||this._method&&this._method!="GET";if(i){if(delete n["if-modified-since"],n["if-none-match"]){var r=n["if-none-match"].split(/,/).filter(function(o){return!/^\s*W\//.test(o)});r.length?n["if-none-match"]=r.join(",").trim():delete n["if-none-match"]}}else this._resHeaders["last-modified"]&&!n["if-modified-since"]&&(n["if-modified-since"]=this._resHeaders["last-modified"]);return n},e.prototype.revalidatedPolicy=function(a,n){if(this._assertRequestHasHeaders(a),!n||!n.headers)throw Error("Response headers missing");var i=!1;if(n.status!==void 0&&n.status!=304?i=!1:n.headers.etag&&!/^\s*W\//.test(n.headers.etag)?i=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\s*W\//,"")===n.headers.etag:this._resHeaders.etag&&n.headers.etag?i=this._resHeaders.etag.replace(/^\s*W\//,"")===n.headers.etag.replace(/^\s*W\//,""):this._resHeaders["last-modified"]?i=this._resHeaders["last-modified"]===n.headers["last-modified"]:!this._resHeaders.etag&&!this._resHeaders["last-modified"]&&!n.headers.etag&&!n.headers["last-modified"]&&(i=!0),!i)return{policy:new this.constructor(a,n),modified:!0};var r={};for(var o in this._resHeaders)r[o]=o in n.headers&&!XB[o]?n.headers[o]:this._resHeaders[o];var s=Object.assign({},n,{status:this._status,method:this._method,headers:r});return{policy:new this.constructor(a,s),modified:!1}},e}()});var jd=O((_W,FS)=>{"use strict";FS.exports=function(e){for(var t={},a=Object.keys(Object(e)),n=0;n<a.length;n++)t[a[n].toLowerCase()]=e[a[n]];return t}});var OS=O((TW,PS)=>{"use strict";var YB=require("stream").Readable,KB=jd(),Ld=class extends YB{constructor(t,a,n,i){if(typeof t!="number")throw new TypeError("Argument `statusCode` should be a number");if(typeof a!="object")throw new TypeError("Argument `headers` should be an object");if(!(n instanceof Buffer))throw new TypeError("Argument `body` should be a buffer");if(typeof i!="string")throw new TypeError("Argument `url` should be a string");super(),this.statusCode=t,this.headers=KB(a),this.body=n,this.url=i}_read(){this.push(this.body),this.push(null)}};PS.exports=Ld});var BS=O((kW,RS)=>{"use strict";RS.exports=function(e){for(var t={},a=Object.keys(Object(e)),n=0;n<a.length;n++)t[a[n].toLowerCase()]=e[a[n]];return t}});var Md=O((FW,NS)=>{"use strict";var QB=["destroy","setTimeout","socket","headers","trailers","rawHeaders","statusCode","httpVersion","httpVersionMinor","httpVersionMajor","rawTrailers","statusMessage"];NS.exports=(e,t)=>{let a=new Set(Object.keys(e).concat(QB));for(let n of a)n in t||(t[n]=typeof e[n]=="function"?e[n].bind(e):e[n])}});var LS=O((PW,jS)=>{"use strict";var eN=require("stream").PassThrough,tN=Md(),aN=e=>{if(!(e&&e.pipe))throw new TypeError("Parameter `response` must be a response stream.");let t=new eN;return tN(e,t),e.pipe(t)};jS.exports=aN});var MS=O(Dd=>{Dd.stringify=function e(t){if(typeof t=="undefined")return t;if(t&&Buffer.isBuffer(t))return JSON.stringify(":base64:"+t.toString("base64"));if(t&&t.toJSON&&(t=t.toJSON()),t&&typeof t=="object"){var a="",n=Array.isArray(t);a=n?"[":"{";var i=!0;for(var r in t){var o=typeof t[r]=="function"||!n&&typeof t[r]=="undefined";Object.hasOwnProperty.call(t,r)&&!o&&(i||(a+=","),i=!1,n?t[r]==null?a+="null":a+=e(t[r]):t[r]!==void 0&&(a+=e(r)+":"+e(t[r])))}return a+=n?"]":"}",a}else return typeof t=="string"?JSON.stringify(/^:/.test(t)?":"+t:t):typeof t=="undefined"?"null":JSON.stringify(t)};Dd.parse=function(e){return JSON.parse(e,function(t,a){return typeof a=="string"?/^:base64:/.test(a)?new Buffer(a.substring(8),"base64"):/^:/.test(a)?a.substring(1):a:a})}});var GS=O((RW,zS)=>{"use strict";var nN=require("events"),DS=MS(),iN=e=>{let t={redis:"@keyv/redis",mongodb:"@keyv/mongo",mongo:"@keyv/mongo",sqlite:"@keyv/sqlite",postgresql:"@keyv/postgres",postgres:"@keyv/postgres",mysql:"@keyv/mysql"};if(e.adapter||e.uri){let a=e.adapter||/^[^:]*/.exec(e.uri)[0];return new(require(t[a]))(e)}return new Map},zd=class extends nN{constructor(t,a){if(super(),this.opts=Object.assign({namespace:"keyv"},typeof t=="string"?{uri:t}:t,a),!this.opts.store){let n=Object.assign({},this.opts);this.opts.store=iN(n)}typeof this.opts.store.on=="function"&&this.opts.store.on("error",n=>this.emit("error",n)),this.opts.store.namespace=this.opts.namespace}_getKeyPrefix(t){return`${this.opts.namespace}:${t}`}get(t){t=this._getKeyPrefix(t);let a=this.opts.store;return Promise.resolve().then(()=>a.get(t)).then(n=>{if(n=typeof n=="string"?DS.parse(n):n,n!==void 0){if(typeof n.expires=="number"&&Date.now()>n.expires){this.delete(t);return}return n.value}})}set(t,a,n){t=this._getKeyPrefix(t),typeof n=="undefined"&&(n=this.opts.ttl),n===0&&(n=void 0);let i=this.opts.store;return Promise.resolve().then(()=>{let r=typeof n=="number"?Date.now()+n:null;return a={value:a,expires:r},i.set(t,DS.stringify(a),n)}).then(()=>!0)}delete(t){t=this._getKeyPrefix(t);let a=this.opts.store;return Promise.resolve().then(()=>a.delete(t))}clear(){let t=this.opts.store;return Promise.resolve().then(()=>t.clear())}};zS.exports=zd});var US=O((BW,VS)=>{"use strict";var rN=require("events"),HS=require("url"),oN=CS(),sN=_S(),Gd=kS(),WS=OS(),lN=BS(),cN=LS(),uN=GS(),Ir=class e{constructor(t,a){if(typeof t!="function")throw new TypeError("Parameter `request` must be a function");return this.cache=new uN({uri:typeof a=="string"&&a,store:typeof a!="string"&&a,namespace:"cacheable-request"}),this.createCacheableRequest(t)}createCacheableRequest(t){return(a,n)=>{typeof a=="string"&&(a=HS.parse(a)),a=Object.assign({headers:{},method:"GET",cache:!0,strictTtl:!1,automaticFailover:!1},a),a.headers=lN(a.headers);let i=new rN,r=oN(HS.format(a)),o=`${a.method}:${r}`,s=!1,l=!1,u=f=>{l=!0;let p=b=>{if(s){let h=Gd.fromObject(s.cachePolicy).revalidatedPolicy(f,b);if(!h.modified){let m=h.policy.responseHeaders();b=new WS(b.statusCode,m,s.body,s.url),b.cachePolicy=h.policy,b.fromCache=!0}}b.fromCache||(b.cachePolicy=new Gd(f,b),b.fromCache=!1);let d;f.cache&&b.cachePolicy.storable()?(d=cN(b),sN.buffer(b).then(h=>{let m={cachePolicy:b.cachePolicy.toObject(),url:b.url,statusCode:b.fromCache?s.statusCode:b.statusCode,body:h},v=f.strictTtl?b.cachePolicy.timeToLive():void 0;return this.cache.set(o,m,v)}).catch(h=>i.emit("error",new e.CacheError(h)))):f.cache&&s&&this.cache.delete(o).catch(h=>i.emit("error",new e.CacheError(h))),i.emit("response",d||b),typeof n=="function"&&n(d||b)};try{let b=t(f,p);i.emit("request",b)}catch(b){i.emit("error",new e.RequestError(b))}},c=f=>Promise.resolve().then(()=>f.cache?this.cache.get(o):void 0).then(p=>{if(typeof p=="undefined")return u(f);let b=Gd.fromObject(p.cachePolicy);if(b.satisfiesWithoutRevalidation(f)){let d=b.responseHeaders(),h=new WS(p.statusCode,d,p.body,p.url);h.cachePolicy=b,h.fromCache=!0,i.emit("response",h),typeof n=="function"&&n(h)}else s=p,f.headers=b.revalidationHeaders(f),u(f)});return this.cache.on("error",f=>i.emit("error",new e.CacheError(f))),c(a).catch(f=>{a.automaticFailover&&!l&&u(a),i.emit("error",new e.CacheError(f))}),i}}};Ir.RequestError=class extends Error{constructor(e){super(e.message),this.name="RequestError",Object.assign(this,e)}};Ir.CacheError=class extends Error{constructor(e){super(e.message),this.name="CacheError",Object.assign(this,e)}};VS.exports=Ir});var JS=O((LW,Wd)=>{"use strict";var Hd=require("stream");function si(e,t,a){typeof a=="undefined"&&(a=t,t=e,e=null),Hd.Duplex.call(this,e),typeof a.read!="function"&&(a=new Hd.Readable(e).wrap(a)),this._writable=t,this._readable=a,this._waiting=!1;var n=this;t.once("finish",function(){n.end()}),this.once("finish",function(){t.end()}),a.on("readable",function(){n._waiting&&(n._waiting=!1,n._read())}),a.once("end",function(){n.push(null)}),(!e||typeof e.bubbleErrors=="undefined"||e.bubbleErrors)&&(t.on("error",function(i){n.emit("error",i)}),a.on("error",function(i){n.emit("error",i)}))}si.prototype=Object.create(Hd.Duplex.prototype,{constructor:{value:si}});si.prototype._write=function(t,a,n){this._writable.write(t,a,n)};si.prototype._read=function(){for(var t,a=0;(t=this._readable.read())!==null;)this.push(t),a++;a===0&&(this._waiting=!0)};Wd.exports=function(t,a,n){return new si(t,a,n)};Wd.exports.DuplexWrapper=si});var KS=O((MW,YS)=>{var ZS=ti().Readable,pN=fn();YS.exports=_l;_l.ctor=qS;_l.obj=mN;var dN=qS();function fN(e){return e=e.slice(),function(t,a){var n=null,i=e.length?e.shift():null;i instanceof Error&&(n=i,i=null),a(n,i)}}function _l(e,t){(typeof e!="object"||Array.isArray(e))&&(t=e,e={});var a=new dN(e);return a._from=Array.isArray(t)?fN(t):t||XS,a}function qS(e,t){typeof e=="function"&&(t=e,e={}),e=$S(e),pN(a,ZS);function a(n){if(!(this instanceof a))return new a(n);this._reading=!1,this._callback=o,this.destroyed=!1,ZS.call(this,n||e);var i=this,r=this._readableState.highWaterMark;function o(s,l){if(!i.destroyed){if(s)return i.destroy(s);if(l===null)return i.push(null);i._reading=!1,i.push(l)&&i._read(r)}}}return a.prototype._from=t||XS,a.prototype._read=function(n){this._reading||this.destroyed||(this._reading=!0,this._from(n,this._callback))},a.prototype.destroy=function(n){if(!this.destroyed){this.destroyed=!0;var i=this;process.nextTick(function(){n&&i.emit("error",n),i.emit("close")})}},a}function mN(e,t){return(typeof e=="function"||Array.isArray(e))&&(t=e,e={}),e=$S(e),e.objectMode=!0,e.highWaterMark=16,_l(e,t)}function XS(){}function $S(e){return e=e||{},e}});var eC=O((DW,QS)=>{"use strict";QS.exports=e=>e instanceof Promise||e!==null&&typeof e=="object"&&typeof e.then=="function"&&typeof e.catch=="function"});var nC=O((zW,Vd)=>{"use strict";var tC=KS(),aC=eC();Vd.exports=e=>{Array.isArray(e)&&(e=e.slice());let t,a;n(e);function n(i){e=i,t=aC(e)?e:null,a=!t&&e[Symbol.iterator]&&typeof e!="string"&&!Buffer.isBuffer(e)?e[Symbol.iterator]():null}return tC(function i(r,o){if(t){t.then(n).then(()=>i.call(this,r,o),o);return}if(a){let l=a.next();setImmediate(o,null,l.done?null:l.value);return}if(e.length===0){setImmediate(o,null,null);return}let s=e.slice(0,r);e=e.slice(r),setImmediate(o,null,s)})};Vd.exports.obj=e=>{Array.isArray(e)&&(e=e.slice());let t,a;n(e);function n(i){e=i,t=aC(e)?e:null,a=!t&&e[Symbol.iterator]?e[Symbol.iterator]():null}return tC.obj(function i(r,o){if(t){t.then(n).then(()=>i.call(this,r,o),o);return}if(a){let s=a.next();setImmediate(o,null,s.done?null:s.value);return}this.push(e),setImmediate(o,null,null)})}});var Zd=O((Ud,Jd)=>{"use strict";Object.defineProperty(Ud,"__esModule",{value:!0});var iC=require("util"),hN=Object.prototype.toString,_r=e=>t=>typeof t===e,Tl=e=>{let t=hN.call(e).slice(8,-1);return t||null},Ke=e=>t=>Tl(t)===e;function oa(e){if(e===null)return"null";if(e===!0||e===!1)return"boolean";let t=typeof e;if(t==="undefined")return"undefined";if(t==="string")return"string";if(t==="number")return"number";if(t==="symbol")return"symbol";if(oa.function_(e))return"Function";if(Array.isArray(e))return"Array";if(Buffer.isBuffer(e))return"Buffer";let a=Tl(e);if(a)return a;if(e instanceof String||e instanceof Boolean||e instanceof Number)throw new TypeError("Please don't use object wrappers for primitive types");return"Object"}(function(e){let t=v=>typeof v=="object";e.undefined=_r("undefined"),e.string=_r("string"),e.number=_r("number"),e.function_=_r("function"),e.null_=v=>v===null,e.class_=v=>e.function_(v)&&v.toString().startsWith("class "),e.boolean=v=>v===!0||v===!1,e.symbol=_r("symbol"),e.array=Array.isArray,e.buffer=Buffer.isBuffer,e.nullOrUndefined=v=>e.null_(v)||e.undefined(v),e.object=v=>!e.nullOrUndefined(v)&&(e.function_(v)||t(v)),e.iterable=v=>!e.nullOrUndefined(v)&&e.function_(v[Symbol.iterator]),e.generator=v=>e.iterable(v)&&e.function_(v.next)&&e.function_(v.throw),e.nativePromise=Ke("Promise");let a=v=>!e.null_(v)&&t(v)&&e.function_(v.then)&&e.function_(v.catch);e.promise=v=>e.nativePromise(v)||a(v);let n=v=>x=>e.function_(x)&&e.function_(x.constructor)&&x.constructor.name===v;e.generatorFunction=n("GeneratorFunction"),e.asyncFunction=n("AsyncFunction"),e.boundFunction=v=>e.function_(v)&&!v.hasOwnProperty("prototype"),e.regExp=Ke("RegExp"),e.date=Ke("Date"),e.error=Ke("Error"),e.map=Ke("Map"),e.set=Ke("Set"),e.weakMap=Ke("WeakMap"),e.weakSet=Ke("WeakSet"),e.int8Array=Ke("Int8Array"),e.uint8Array=Ke("Uint8Array"),e.uint8ClampedArray=Ke("Uint8ClampedArray"),e.int16Array=Ke("Int16Array"),e.uint16Array=Ke("Uint16Array"),e.int32Array=Ke("Int32Array"),e.uint32Array=Ke("Uint32Array"),e.float32Array=Ke("Float32Array"),e.float64Array=Ke("Float64Array"),e.arrayBuffer=Ke("ArrayBuffer"),e.sharedArrayBuffer=Ke("SharedArrayBuffer"),e.dataView=Ke("DataView"),e.directInstanceOf=(v,x)=>e.object(v)&&e.object(x)&&Object.getPrototypeOf(v)===x.prototype,e.truthy=v=>!!v,e.falsy=v=>!v,e.nan=v=>Number.isNaN(v);let i=new Set(["undefined","string","number","boolean","symbol"]);e.primitive=v=>e.null_(v)||i.has(typeof v),e.integer=v=>Number.isInteger(v),e.safeInteger=v=>Number.isSafeInteger(v),e.plainObject=v=>{let x;return Tl(v)==="Object"&&(x=Object.getPrototypeOf(v),x===null||x===Object.getPrototypeOf({}))};let r=new Set(["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array"]);e.typedArray=v=>{let x=Tl(v);return x===null?!1:r.has(x)};let o=v=>e.safeInteger(v)&&v>-1;e.arrayLike=v=>!e.nullOrUndefined(v)&&!e.function_(v)&&o(v.length),e.inRange=(v,x)=>{if(e.number(x))return v>=Math.min(0,x)&&v<=Math.max(x,0);if(e.array(x)&&x.length===2)return v>=Math.min.apply(null,x)&&v<=Math.max.apply(null,x);throw new TypeError(`Invalid range: ${iC.inspect(x)}`)};let s=1,l=["innerHTML","ownerDocument","style","attributes","nodeValue"];e.domElement=v=>e.object(v)&&v.nodeType===s&&e.string(v.nodeName)&&!e.plainObject(v)&&l.every(x=>x in v),e.nodeStream=v=>!e.nullOrUndefined(v)&&t(v)&&e.function_(v.pipe),e.infinite=v=>v===1/0||v===-1/0;let u=v=>x=>e.integer(x)&&Math.abs(x%2)===v;e.even=u(0),e.odd=u(1);let c=v=>e.string(v)&&/\S/.test(v)===!1,f=v=>(e.string(v)||e.array(v))&&v.length===0,p=v=>!e.map(v)&&!e.set(v)&&e.object(v)&&Object.keys(v).length===0,b=v=>(e.map(v)||e.set(v))&&v.size===0;e.empty=v=>e.falsy(v)||f(v)||p(v)||b(v),e.emptyOrWhitespace=v=>e.empty(v)||c(v);let d=(v,x,E)=>{let g=Array.prototype.slice.call(E,1);if(e.function_(x)===!1)throw new TypeError(`Invalid predicate: ${iC.inspect(x)}`);if(g.length===0)throw new TypeError("Invalid number of values");return v.call(g,x)};function h(v){return d(Array.prototype.some,v,arguments)}e.any=h;function m(v){return d(Array.prototype.every,v,arguments)}e.all=m})(oa||(oa={}));Object.defineProperties(oa,{class:{value:oa.class_},function:{value:oa.function_},null:{value:oa.null_}});Ud.default=oa;Jd.exports=oa;Jd.exports.default=oa});var oC=O((GW,rC)=>{"use strict";var vN=require("stream").PassThrough;rC.exports=e=>{e=Object.assign({},e);let t=e.array,a=e.encoding,n=a==="buffer",i=!1;t?i=!(a||n):a=a||"utf8",n&&(a=null);let r=0,o=[],s=new vN({objectMode:i});return a&&s.setEncoding(a),s.on("data",l=>{o.push(l),i?r=o.length:r+=l.length}),s.getBufferedValue=()=>t?o:n?Buffer.concat(o,r):o.join(""),s.getBufferedLength=()=>r,s}});var sC=O((HW,kl)=>{"use strict";var bN=oC();function qd(e,t){if(!e)return Promise.reject(new Error("Expected a stream"));t=Object.assign({maxBuffer:1/0},t);let a=t.maxBuffer,n,i,r=new Promise((o,s)=>{let l=u=>{u&&(u.bufferedData=n.getBufferedValue()),s(u)};n=bN(t),e.once("error",l),e.pipe(n),n.on("data",()=>{n.getBufferedLength()>a&&s(new Error("maxBuffer exceeded"))}),n.once("error",l),n.on("end",o),i=()=>{e.unpipe&&e.unpipe(n)}});return r.then(i,i),r.then(()=>n.getBufferedValue())}kl.exports=qd;kl.exports.buffer=(e,t)=>qd(e,Object.assign({},t,{encoding:"buffer"}));kl.exports.array=(e,t)=>qd(e,Object.assign({},t,{array:!0}))});var cC=O((WW,lC)=>{"use strict";lC.exports=function(e,t){if(e.timeoutTimer)return e;var a=isNaN(t)?t:{socket:t,connect:t},n=e._headers?" to "+e._headers.host:"";a.connect!==void 0&&(e.timeoutTimer=setTimeout(function(){e.abort();var s=new Error("Connection timed out on request"+n);s.code="ETIMEDOUT",e.emit("error",s)},a.connect)),e.on("socket",function(s){if(!(s.connecting||s._connecting)){r();return}s.once("connect",r)});function i(){e.timeoutTimer&&(clearTimeout(e.timeoutTimer),e.timeoutTimer=null)}function r(){i(),a.socket!==void 0&&e.setTimeout(a.socket,function(){e.abort();var s=new Error("Socket timed out on request"+n);s.code="ESOCKETTIMEDOUT",e.emit("error",s)})}return e.on("error",i)}});var pC=O((VW,uC)=>{"use strict";var gN=require("url"),xN=Fd();uC.exports=(e,t)=>{if(typeof e!="string")throw new TypeError(`Expected \`url\` to be of type \`string\`, got \`${typeof e}\` instead.`);let a=xN(e,Object.assign({https:!0},t));return gN.parse(a)}});var fC=O((UW,dC)=>{"use strict";function yN(e){var t={protocol:e.protocol,hostname:e.hostname,hash:e.hash,search:e.search,pathname:e.pathname,path:`${e.pathname}${e.search}`,href:e.href};return e.port!==""&&(t.port=Number(e.port)),(e.username||e.password)&&(t.auth=`${e.username}:${e.password}`),t}dC.exports=yN});var mC=O(()=>{});var vC=O((qW,hC)=>{"use strict";var wN=["ETIMEDOUT","ECONNRESET","EADDRINUSE","ESOCKETTIMEDOUT","ECONNREFUSED","EPIPE","EHOSTUNREACH","EAI_AGAIN"],EN=["ENOTFOUND","ENETUNREACH","UNABLE_TO_GET_ISSUER_CERT","UNABLE_TO_GET_CRL","UNABLE_TO_DECRYPT_CERT_SIGNATURE","UNABLE_TO_DECRYPT_CRL_SIGNATURE","UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY","CERT_SIGNATURE_FAILURE","CRL_SIGNATURE_FAILURE","CERT_NOT_YET_VALID","CERT_HAS_EXPIRED","CRL_NOT_YET_VALID","CRL_HAS_EXPIRED","ERROR_IN_CERT_NOT_BEFORE_FIELD","ERROR_IN_CERT_NOT_AFTER_FIELD","ERROR_IN_CRL_LAST_UPDATE_FIELD","ERROR_IN_CRL_NEXT_UPDATE_FIELD","OUT_OF_MEM","DEPTH_ZERO_SELF_SIGNED_CERT","SELF_SIGNED_CERT_IN_CHAIN","UNABLE_TO_GET_ISSUER_CERT_LOCALLY","UNABLE_TO_VERIFY_LEAF_SIGNATURE","CERT_CHAIN_TOO_LONG","CERT_REVOKED","INVALID_CA","PATH_LENGTH_EXCEEDED","INVALID_PURPOSE","CERT_UNTRUSTED","CERT_REJECTED"];hC.exports=function(e){return!e||!e.code||wN.indexOf(e.code)!==-1?!0:EN.indexOf(e.code)===-1}});var gC=O((XW,bC)=>{"use strict";bC.exports=typeof Symbol=="function"&&typeof Symbol("")=="symbol"});var yC=O(($W,xC)=>{"use strict";xC.exports=gC()&&typeof Symbol.toStringTag=="symbol"});var EC=O((YW,wC)=>{"use strict";wC.exports=function(t){return typeof t=="object"&&t!==null}});var AC=O((KW,CC)=>{"use strict";var SN=yC(),SC=EC(),CN=Object.prototype.toString,AN="[object URL]",IN="hash",_N="host",TN="hostname",kN="href",FN="password",PN="pathname",ON="port",RN="protocol",BN="search",NN="username",Xd=(e,t)=>SC(e)?!SN&&CN.call(e)===AN?!0:!(!(kN in e)||!(RN in e)||!(NN in e)||!(FN in e)||!(TN in e)||!(ON in e)||!(_N in e)||!(PN in e)||!(BN in e)||!(IN in e)||t!==!0&&!SC(e.searchParams)):!1;Xd.lenient=e=>Xd(e,!0);CC.exports=Xd});var Yd=O((QW,$d)=>{"use strict";var Fl=class extends Error{constructor(){super("Promise was canceled"),this.name="CancelError"}get isCanceled(){return!0}},Pl=class e{static fn(t){return function(){let a=[].slice.apply(arguments);return new e((n,i,r)=>{a.push(r),t.apply(null,a).then(n,i)})}}constructor(t){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._promise=new Promise((a,n)=>(this._reject=n,t(i=>{this._isPending=!1,a(i)},i=>{this._isPending=!1,n(i)},i=>{this._cancelHandlers.push(i)})))}then(t,a){return this._promise.then(t,a)}catch(t){return this._promise.catch(t)}finally(t){return this._promise.finally(t)}cancel(){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let t of this._cancelHandlers)t()}catch(t){this._reject(t)}this._isCanceled=!0,this._reject(new Fl)}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(Pl.prototype,Promise.prototype);$d.exports=Pl;$d.exports.CancelError=Fl});var _C=O((eV,IC)=>{"use strict";IC.exports=(e,t)=>(t=t||(()=>{}),e.then(a=>new Promise(n=>{n(t())}).then(()=>a),a=>new Promise(n=>{n(t())}).then(()=>{throw a})))});var Qd=O((tV,Kd)=>{"use strict";var jN=_C(),Ol=class extends Error{constructor(t){super(t),this.name="TimeoutError"}};Kd.exports=(e,t,a)=>new Promise((n,i)=>{if(typeof t!="number"||t<0)throw new TypeError("Expected `ms` to be a positive number");let r=setTimeout(()=>{if(typeof a=="function"){try{n(a())}catch(l){i(l)}return}let o=typeof a=="string"?a:`Promise timed out after ${t} milliseconds`,s=a instanceof Error?a:new Ol(o);typeof e.cancel=="function"&&e.cancel(),i(s)},t);jN(e.then(n,i),()=>{clearTimeout(r)})});Kd.exports.TimeoutError=Ol});var FC=O((aV,kC)=>{"use strict";var TC=(e,t)=>function(){let a=t.promiseModule,n=new Array(arguments.length);for(let i=0;i<arguments.length;i++)n[i]=arguments[i];return new a((i,r)=>{t.errorFirst?n.push(function(o,s){if(t.multiArgs){let l=new Array(arguments.length-1);for(let u=1;u<arguments.length;u++)l[u-1]=arguments[u];o?(l.unshift(o),r(l)):i(l)}else o?r(o):i(s)}):n.push(function(o){if(t.multiArgs){let s=new Array(arguments.length-1);for(let l=0;l<arguments.length;l++)s[l]=arguments[l];i(s)}else i(o)}),e.apply(this,n)})};kC.exports=(e,t)=>{t=Object.assign({exclude:[/.+(Sync|Stream)$/],errorFirst:!0,promiseModule:Promise},t);let a=i=>{let r=o=>typeof o=="string"?i===o:o.test(i);return t.include?t.include.some(r):!t.exclude.some(r)},n;typeof e=="function"?n=function(){return t.excludeMain?e.apply(this,arguments):TC(e,t).apply(this,arguments)}:n=Object.create(Object.getPrototypeOf(e));for(let i in e){let r=e[i];n[i]=typeof r=="function"&&a(i)?TC(r,t):r}return n}});var PC=O((nV,LN)=>{LN.exports={name:"got",version:"8.3.2",description:"Simplified HTTP requests",license:"MIT",repository:"sindresorhus/got",maintainers:[{name:"Sindre Sorhus",email:"sindresorhus@gmail.com",url:"sindresorhus.com"},{name:"Vsevolod Strukchinsky",email:"floatdrop@gmail.com",url:"github.com/floatdrop"},{name:"Alexander Tesfamichael",email:"alex.tesfamichael@gmail.com",url:"alextes.me"}],engines:{node:">=4"},scripts:{test:"xo && nyc ava",coveralls:"nyc report --reporter=text-lcov | coveralls"},files:["index.js","errors.js"],keywords:["http","https","get","got","url","uri","request","util","utility","simple","curl","wget","fetch","net","network","electron"],dependencies:{"@sindresorhus/is":"^0.7.0","cacheable-request":"^2.1.1","decompress-response":"^3.3.0",duplexer3:"^0.1.4","get-stream":"^3.0.0","into-stream":"^3.1.0","is-retry-allowed":"^1.1.0",isurl:"^1.0.0-alpha5","lowercase-keys":"^1.0.0","mimic-response":"^1.0.0","p-cancelable":"^0.4.0","p-timeout":"^2.0.1",pify:"^3.0.0","safe-buffer":"^5.1.1","timed-out":"^4.0.1","url-parse-lax":"^3.0.0","url-to-options":"^1.0.1"},devDependencies:{ava:"^0.25.0",coveralls:"^3.0.0","form-data":"^2.1.1","get-port":"^3.0.0",nyc:"^11.0.2","p-event":"^1.3.0",pem:"^1.4.4",proxyquire:"^1.8.0",sinon:"^4.0.0","slow-stream":"0.0.4",tempfile:"^2.0.0",tempy:"^0.2.1","universal-url":"1.0.0-alpha",xo:"^0.20.0"},ava:{concurrency:4},browser:{"decompress-response":!1,electron:!1}}});var OC=O((iV,la)=>{"use strict";var MN=require("url"),ef=require("http"),DN=Yd(),zN=Zd(),sa=class extends Error{constructor(t,a,n){super(t),Error.captureStackTrace(this,this.constructor),this.name="GotError",zN.undefined(a.code)||(this.code=a.code),Object.assign(this,{host:n.host,hostname:n.hostname,method:n.method,path:n.path,protocol:n.protocol,url:n.href})}};la.exports.GotError=sa;la.exports.CacheError=class extends sa{constructor(e,t){super(e.message,e,t),this.name="CacheError"}};la.exports.RequestError=class extends sa{constructor(e,t){super(e.message,e,t),this.name="RequestError"}};la.exports.ReadError=class extends sa{constructor(e,t){super(e.message,e,t),this.name="ReadError"}};la.exports.ParseError=class extends sa{constructor(e,t,a,n){super(`${e.message} in "${MN.format(a)}": -${n.slice(0,77)}...`,e,a),this.name="ParseError",this.statusCode=t,this.statusMessage=ef.STATUS_CODES[this.statusCode]}};la.exports.HTTPError=class extends sa{constructor(e,t,a,n){t?t=t.replace(/\r?\n/g," ").trim():t=ef.STATUS_CODES[e],super(`Response code ${e} (${t})`,{},n),this.name="HTTPError",this.statusCode=e,this.statusMessage=t,this.headers=a}};la.exports.MaxRedirectsError=class extends sa{constructor(e,t,a){super("Redirected 10 times. Aborting.",{},a),this.name="MaxRedirectsError",this.statusCode=e,this.statusMessage=ef.STATUS_CODES[this.statusCode],this.redirectUrls=t}};la.exports.UnsupportedProtocolError=class extends sa{constructor(e){super(`Unsupported protocol "${e.protocol}"`,{},e),this.name="UnsupportedProtocolError"}};la.exports.CancelError=DN.CancelError});var JC=O((dV,UC)=>{"use strict";var GC=require("events"),GN=require("http"),HN=require("https"),RC=require("stream").PassThrough,WN=require("stream").Transform,Tr=require("url"),BC=require("fs"),NC=require("querystring"),jC=US(),VN=JS(),UN=nC(),xe=Zd(),LC=sC(),JN=cC(),ZN=pC(),qN=fC(),XN=jd(),MC=mC(),$N=Md(),YN=vC(),KN=AC(),QN=Yd(),ej=Qd(),DC=FC(),Rl=Bs().Buffer,zC=PC(),tj=OC(),aj=new Set([300,301,302,303,304,305,307,308]),nj=new Set([300,303,307,308]),tf=e=>xe.nodeStream(e)&&xe.function(e.getBoundary),ij=e=>{let t=e.body;return e.headers["content-length"]?Number(e.headers["content-length"]):!t&&!e.stream?0:xe.string(t)?Rl.byteLength(t):tf(t)?DC(t.getLength.bind(t))():t instanceof BC.ReadStream?DC(BC.stat)(t.path).then(a=>a.size):xe.nodeStream(t)&&xe.buffer(t._buffer)?t._buffer.length:null};function HC(e){e=e||{};let t=new GC,a=e.href||Tr.resolve(Tr.format(e),e.path),n=[],i=xe.object(e.agent)?e.agent:null,r=0,o,s,l=0,u=c=>{if(c.protocol!=="http:"&&c.protocol!=="https:"){t.emit("error",new tt.UnsupportedProtocolError(c));return}let f=c.protocol==="https:"?HN:GN;if(i){let h=c.protocol==="https:"?"https":"http";c.agent=i[h]||c.agent}if(c.useElectronNet&&process.versions.electron){let h=require("electron");f=h.net||h.remote.net}let p,d=new jC(f.request,c.cache)(c,h=>{clearInterval(p),t.emit("uploadProgress",{percent:1,transferred:l,total:s});let m=h.statusCode;h.url=o||a,h.requestUrl=a;let v=c.followRedirect&&"location"in h.headers,x=v&&aj.has(m);if(v&&nj.has(m)||x&&(c.method==="GET"||c.method==="HEAD")){if(h.resume(),m===303&&(c.method="GET"),n.length>=10){t.emit("error",new tt.MaxRedirectsError(m,n,c),null,h);return}let g=Rl.from(h.headers.location,"binary").toString();o=Tr.resolve(Tr.format(c),g),n.push(o);let w=Object.assign({},c,Tr.parse(o));t.emit("redirect",h,w),u(w);return}setImmediate(()=>{try{rj(h,c,t,n)}catch(g){t.emit("error",g)}})});d.on("error",h=>{h instanceof jC.RequestError?t.emit("error",new tt.RequestError(h,c)):t.emit("error",new tt.CacheError(h,c))}),d.once("request",h=>{let m=!1;h.once("abort",v=>{m=!0}),h.once("error",v=>{if(clearInterval(p),m)return;let x=c.retries(++r,v);if(x){setTimeout(u,x,c);return}t.emit("error",new tt.RequestError(v,c))}),t.once("request",v=>{t.emit("uploadProgress",{percent:0,transferred:0,total:s});let x=v.connection;if(x){let E=x.connecting===void 0?x._connecting:x.connecting,g=()=>{p=setInterval(()=>{if(x.destroyed){clearInterval(p);return}let C=l,y=v._header?Rl.byteLength(v._header):0;l=x.bytesWritten-y,s&&l>s&&(l=s),!(l===C||l===s)&&t.emit("uploadProgress",{percent:s?l/s:0,transferred:l,total:s})},150)};E?x.once("connect",g):g()}}),c.gotTimeout&&(clearInterval(p),JN(h,c.gotTimeout)),setImmediate(()=>{t.emit("request",h)})})};return setImmediate(()=>{Promise.resolve(ij(e)).then(c=>{s=c,xe.undefined(e.headers["content-length"])&&xe.undefined(e.headers["transfer-encoding"])&&tf(e.body)&&(e.headers["content-length"]=c),u(e)}).catch(c=>{t.emit("error",c)})}),t}function rj(e,t,a,n){let i=Number(e.headers["content-length"])||null,r=0,o=new WN({transform(l,u,c){r+=l.length;let f=i?r/i:0;f<1&&a.emit("downloadProgress",{percent:f,transferred:r,total:i}),c(null,l)},flush(l){a.emit("downloadProgress",{percent:1,transferred:r,total:i}),l()}});$N(e,o),o.redirectUrls=n;let s=t.decompress===!0&&xe.function(MC)&&t.method!=="HEAD"?MC(o):o;!t.decompress&&["gzip","deflate"].indexOf(e.headers["content-encoding"])!==-1&&(t.encoding=null),a.emit("response",s),a.emit("downloadProgress",{percent:0,transferred:0,total:i}),e.pipe(o)}function oj(e){let t=r=>e.gotTimeout&&e.gotTimeout.request?ej(r,e.gotTimeout.request,new tt.RequestError({message:"Request timed out",code:"ETIMEDOUT"},e)):r,a=new GC,n=new QN((r,o,s)=>{let l=HC(e),u=!1;s(()=>{u=!0}),l.on("request",c=>{if(u&&c.abort(),s(()=>{c.abort()}),xe.nodeStream(e.body)){e.body.pipe(c),e.body=void 0;return}c.end(e.body)}),l.on("response",c=>{(xe.null(e.encoding)?LC.buffer(c):LC(c,e)).catch(p=>o(new tt.ReadError(p,e))).then(p=>{let b=c.statusCode,d=e.followRedirect?299:399;if(c.body=p,e.json&&c.body)try{c.body=JSON.parse(c.body)}catch(h){if(b>=200&&b<300)throw new tt.ParseError(h,b,e,p)}if(e.throwHttpErrors&&b!==304&&(b<200||b>d))throw new tt.HTTPError(b,c.statusMessage,c.headers,e);r(c)}).catch(p=>{Object.defineProperty(p,"response",{value:c}),o(p)})}),l.once("error",o),l.on("redirect",a.emit.bind(a,"redirect")),l.on("uploadProgress",a.emit.bind(a,"uploadProgress")),l.on("downloadProgress",a.emit.bind(a,"downloadProgress"))});Object.defineProperty(n,"canceled",{get(){return n.isCanceled}});let i=t(n);return i.cancel=n.cancel.bind(n),i.on=(r,o)=>(a.on(r,o),i),i}function WC(e){e.stream=!0;let t=new RC,a=new RC,n=VN(t,a),i;if(e.gotTimeout&&e.gotTimeout.request&&(i=setTimeout(()=>{n.emit("error",new tt.RequestError({message:"Request timed out",code:"ETIMEDOUT"},e))},e.gotTimeout.request)),e.json)throw new Error("Got can not be used as a stream when the `json` option is used");e.body&&(n.write=()=>{throw new Error("Got's stream is not writable when the `body` option is used")});let r=HC(e);return r.on("request",o=>{if(n.emit("request",o),xe.nodeStream(e.body)){e.body.pipe(o);return}if(e.body){o.end(e.body);return}if(e.method==="POST"||e.method==="PUT"||e.method==="PATCH"){t.pipe(o);return}o.end()}),r.on("response",o=>{clearTimeout(i);let s=o.statusCode;if(o.on("error",l=>{n.emit("error",new tt.ReadError(l,e))}),o.pipe(a),e.throwHttpErrors&&s!==304&&(s<200||s>299)){n.emit("error",new tt.HTTPError(s,o.statusMessage,o.headers,e),null,o);return}n.emit("response",o)}),r.on("error",n.emit.bind(n,"error")),r.on("redirect",n.emit.bind(n,"redirect")),r.on("uploadProgress",n.emit.bind(n,"uploadProgress")),r.on("downloadProgress",n.emit.bind(n,"downloadProgress")),n}function VC(e,t){if(!xe.string(e)&&!xe.object(e))throw new TypeError(`Parameter \`url\` must be a string or object, not ${xe(e)}`);if(xe.string(e)){e=e.replace(/^unix:/,"http://$&");try{decodeURI(e)}catch(r){throw new Error("Parameter `url` must contain valid UTF-8 character sequences")}if(e=ZN(e),e.auth)throw new Error("Basic authentication must be done with the `auth` option")}else KN.lenient(e)&&(e=qN(e));t=Object.assign({path:"",retries:2,cache:!1,decompress:!0,useElectronNet:!1,throwHttpErrors:!0},e,{protocol:e.protocol||"http:"},t);let a=XN(t.headers);for(let r of Object.keys(a))xe.nullOrUndefined(a[r])&&delete a[r];t.headers=Object.assign({"user-agent":`${zC.name}/${zC.version} (https://github.com/sindresorhus/got)`},a),t.decompress&&xe.undefined(t.headers["accept-encoding"])&&(t.headers["accept-encoding"]="gzip, deflate");let n=t.query;n&&(xe.string(n)||(t.query=NC.stringify(n)),t.path=`${t.path.split("?")[0]}?${t.query}`,delete t.query),t.json&&xe.undefined(t.headers.accept)&&(t.headers.accept="application/json");let i=t.body;if(xe.nullOrUndefined(i))t.method=(t.method||"GET").toUpperCase();else{let r=t.headers;if(!xe.nodeStream(i)&&!xe.string(i)&&!xe.buffer(i)&&!(t.form||t.json))throw new TypeError("The `body` option must be a stream.Readable, string, Buffer or plain Object");let o=xe.plainObject(i)||xe.array(i);if((t.form||t.json)&&!o)throw new TypeError("The `body` option must be a plain Object or Array when the `form` or `json` option is used");if(tf(i)?r["content-type"]=r["content-type"]||`multipart/form-data; boundary=${i.getBoundary()}`:t.form&&o?(r["content-type"]=r["content-type"]||"application/x-www-form-urlencoded",t.body=NC.stringify(i)):t.json&&o&&(r["content-type"]=r["content-type"]||"application/json",t.body=JSON.stringify(i)),xe.undefined(r["content-length"])&&xe.undefined(r["transfer-encoding"])&&!xe.nodeStream(i)){let s=xe.string(t.body)?Rl.byteLength(t.body):t.body.length;r["content-length"]=s}xe.buffer(i)&&(t.body=UN(i),t.body._buffer=i),t.method=(t.method||"POST").toUpperCase()}if(t.hostname==="unix"){let r=/(.+?):(.+)/.exec(t.path);r&&(t.socketPath=r[1],t.path=r[2],t.host=null)}if(!xe.function(t.retries)){let r=t.retries;t.retries=(o,s)=>{if(o>r||!YN(s))return 0;let l=Math.random()*100;return(1<<o)*1e3+l}}return xe.undefined(t.followRedirect)&&(t.followRedirect=!0),t.timeout&&(xe.number(t.timeout)?t.gotTimeout={request:t.timeout}:t.gotTimeout=t.timeout,delete t.timeout),t}function tt(e,t){try{let a=VC(e,t);return a.stream?WC(a):oj(a)}catch(a){return Promise.reject(a)}}tt.stream=(e,t)=>WC(VC(e,t));var sj=["get","post","put","patch","head","delete"];for(let e of sj)tt[e]=(t,a)=>tt(t,Object.assign({},a,{method:e})),tt.stream[e]=(t,a)=>tt.stream(t,Object.assign({},a,{method:e}));Object.assign(tt,tj);UC.exports=tt});var af=O((fV,qC)=>{"use strict";var ZC=(e,t)=>function(...a){let n=t.promiseModule;return new n((i,r)=>{t.multiArgs?a.push((...o)=>{t.errorFirst?o[0]?r(o):(o.shift(),i(o)):i(o)}):t.errorFirst?a.push((o,s)=>{o?r(o):i(s)}):a.push(i),e.apply(this,a)})};qC.exports=(e,t)=>{t=Object.assign({exclude:[/.+(Sync|Stream)$/],errorFirst:!0,promiseModule:Promise},t);let a=typeof e;if(!(e!==null&&(a==="object"||a==="function")))throw new TypeError(`Expected \`input\` to be a \`Function\` or \`Object\`, got \`${e===null?"null":a}\``);let n=r=>{let o=s=>typeof s=="string"?r===s:s.test(r);return t.include?t.include.some(o):!t.exclude.some(o)},i;a==="function"?i=function(...r){return t.excludeMain?e(...r):ZC(e,t).apply(this,r)}:i=Object.create(Object.getPrototypeOf(e));for(let r in e){let o=e[r];i[r]=typeof o=="function"&&n(r)?ZC(o,t):o}return i}});var pA=O((ce,uA)=>{ce=uA.exports=be;var Te;typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?Te=function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("SEMVER"),console.log.apply(console,e)}:Te=function(){};ce.SEMVER_SPEC_VERSION="2.0.0";var rf=256,Bl=Number.MAX_SAFE_INTEGER||9007199254740991,nf=16,Oe=ce.re=[],G=ce.src=[],ve=0,li=ve++;G[li]="0|[1-9]\\d*";var ci=ve++;G[ci]="[0-9]+";var cf=ve++;G[cf]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var $C=ve++;G[$C]="("+G[li]+")\\.("+G[li]+")\\.("+G[li]+")";var YC=ve++;G[YC]="("+G[ci]+")\\.("+G[ci]+")\\.("+G[ci]+")";var of=ve++;G[of]="(?:"+G[li]+"|"+G[cf]+")";var sf=ve++;G[sf]="(?:"+G[ci]+"|"+G[cf]+")";var uf=ve++;G[uf]="(?:-("+G[of]+"(?:\\."+G[of]+")*))";var pf=ve++;G[pf]="(?:-?("+G[sf]+"(?:\\."+G[sf]+")*))";var lf=ve++;G[lf]="[0-9A-Za-z-]+";var Pr=ve++;G[Pr]="(?:\\+("+G[lf]+"(?:\\."+G[lf]+")*))";var df=ve++,KC="v?"+G[$C]+G[uf]+"?"+G[Pr]+"?";G[df]="^"+KC+"$";var ff="[v=\\s]*"+G[YC]+G[pf]+"?"+G[Pr]+"?",mf=ve++;G[mf]="^"+ff+"$";var di=ve++;G[di]="((?:<|>)?=?)";var Nl=ve++;G[Nl]=G[ci]+"|x|X|\\*";var jl=ve++;G[jl]=G[li]+"|x|X|\\*";var bn=ve++;G[bn]="[v=\\s]*("+G[jl]+")(?:\\.("+G[jl]+")(?:\\.("+G[jl]+")(?:"+G[uf]+")?"+G[Pr]+"?)?)?";var pi=ve++;G[pi]="[v=\\s]*("+G[Nl]+")(?:\\.("+G[Nl]+")(?:\\.("+G[Nl]+")(?:"+G[pf]+")?"+G[Pr]+"?)?)?";var QC=ve++;G[QC]="^"+G[di]+"\\s*"+G[bn]+"$";var eA=ve++;G[eA]="^"+G[di]+"\\s*"+G[pi]+"$";var tA=ve++;G[tA]="(?:^|[^\\d])(\\d{1,"+nf+"})(?:\\.(\\d{1,"+nf+"}))?(?:\\.(\\d{1,"+nf+"}))?(?:$|[^\\d])";var Hl=ve++;G[Hl]="(?:~>?)";var Ll=ve++;G[Ll]="(\\s*)"+G[Hl]+"\\s+";Oe[Ll]=new RegExp(G[Ll],"g");var lj="$1~",aA=ve++;G[aA]="^"+G[Hl]+G[bn]+"$";var nA=ve++;G[nA]="^"+G[Hl]+G[pi]+"$";var Wl=ve++;G[Wl]="(?:\\^)";var Ml=ve++;G[Ml]="(\\s*)"+G[Wl]+"\\s+";Oe[Ml]=new RegExp(G[Ml],"g");var cj="$1^",iA=ve++;G[iA]="^"+G[Wl]+G[bn]+"$";var rA=ve++;G[rA]="^"+G[Wl]+G[pi]+"$";var hf=ve++;G[hf]="^"+G[di]+"\\s*("+ff+")$|^$";var vf=ve++;G[vf]="^"+G[di]+"\\s*("+KC+")$|^$";var kr=ve++;G[kr]="(\\s*)"+G[di]+"\\s*("+ff+"|"+G[bn]+")";Oe[kr]=new RegExp(G[kr],"g");var uj="$1$2$3",oA=ve++;G[oA]="^\\s*("+G[bn]+")\\s+-\\s+("+G[bn]+")\\s*$";var sA=ve++;G[sA]="^\\s*("+G[pi]+")\\s+-\\s+("+G[pi]+")\\s*$";var lA=ve++;G[lA]="(<|>)?=?\\s*\\*";for(Wa=0;Wa<ve;Wa++)Te(Wa,G[Wa]),Oe[Wa]||(Oe[Wa]=new RegExp(G[Wa]));var Wa;ce.parse=gn;function gn(e,t){if((!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1}),e instanceof be)return e;if(typeof e!="string"||e.length>rf)return null;var a=t.loose?Oe[mf]:Oe[df];if(!a.test(e))return null;try{return new be(e,t)}catch(n){return null}}ce.valid=pj;function pj(e,t){var a=gn(e,t);return a?a.version:null}ce.clean=dj;function dj(e,t){var a=gn(e.trim().replace(/^[=v]+/,""),t);return a?a.version:null}ce.SemVer=be;function be(e,t){if((!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1}),e instanceof be){if(e.loose===t.loose)return e;e=e.version}else if(typeof e!="string")throw new TypeError("Invalid Version: "+e);if(e.length>rf)throw new TypeError("version is longer than "+rf+" characters");if(!(this instanceof be))return new be(e,t);Te("SemVer",e,t),this.options=t,this.loose=!!t.loose;var a=e.trim().match(t.loose?Oe[mf]:Oe[df]);if(!a)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+a[1],this.minor=+a[2],this.patch=+a[3],this.major>Bl||this.major<0)throw new TypeError("Invalid major version");if(this.minor>Bl||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>Bl||this.patch<0)throw new TypeError("Invalid patch version");a[4]?this.prerelease=a[4].split(".").map(function(n){if(/^[0-9]+$/.test(n)){var i=+n;if(i>=0&&i<Bl)return i}return n}):this.prerelease=[],this.build=a[5]?a[5].split("."):[],this.format()}be.prototype.format=function(){return this.version=this.major+"."+this.minor+"."+this.patch,this.prerelease.length&&(this.version+="-"+this.prerelease.join(".")),this.version};be.prototype.toString=function(){return this.version};be.prototype.compare=function(e){return Te("SemVer.compare",this.version,this.options,e),e instanceof be||(e=new be(e,this.options)),this.compareMain(e)||this.comparePre(e)};be.prototype.compareMain=function(e){return e instanceof be||(e=new be(e,this.options)),ui(this.major,e.major)||ui(this.minor,e.minor)||ui(this.patch,e.patch)};be.prototype.comparePre=function(e){if(e instanceof be||(e=new be(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;var t=0;do{var a=this.prerelease[t],n=e.prerelease[t];if(Te("prerelease compare",t,a,n),a===void 0&&n===void 0)return 0;if(n===void 0)return 1;if(a===void 0)return-1;if(a===n)continue;return ui(a,n)}while(++t)};be.prototype.inc=function(e,t){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t),this.inc("pre",t);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",t),this.inc("pre",t);break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":if(this.prerelease.length===0)this.prerelease=[0];else{for(var a=this.prerelease.length;--a>=0;)typeof this.prerelease[a]=="number"&&(this.prerelease[a]++,a=-2);a===-1&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this};ce.inc=fj;function fj(e,t,a,n){typeof a=="string"&&(n=a,a=void 0);try{return new be(e,a).inc(t,n).version}catch(i){return null}}ce.diff=mj;function mj(e,t){if(bf(e,t))return null;var a=gn(e),n=gn(t),i="";if(a.prerelease.length||n.prerelease.length){i="pre";var r="prerelease"}for(var o in a)if((o==="major"||o==="minor"||o==="patch")&&a[o]!==n[o])return i+o;return r}ce.compareIdentifiers=ui;var XC=/^[0-9]+$/;function ui(e,t){var a=XC.test(e),n=XC.test(t);return a&&n&&(e=+e,t=+t),e===t?0:a&&!n?-1:n&&!a?1:e<t?-1:1}ce.rcompareIdentifiers=hj;function hj(e,t){return ui(t,e)}ce.major=vj;function vj(e,t){return new be(e,t).major}ce.minor=bj;function bj(e,t){return new be(e,t).minor}ce.patch=gj;function gj(e,t){return new be(e,t).patch}ce.compare=Sa;function Sa(e,t,a){return new be(e,a).compare(new be(t,a))}ce.compareLoose=xj;function xj(e,t){return Sa(e,t,!0)}ce.rcompare=yj;function yj(e,t,a){return Sa(t,e,a)}ce.sort=wj;function wj(e,t){return e.sort(function(a,n){return ce.compare(a,n,t)})}ce.rsort=Ej;function Ej(e,t){return e.sort(function(a,n){return ce.rcompare(a,n,t)})}ce.gt=Fr;function Fr(e,t,a){return Sa(e,t,a)>0}ce.lt=Dl;function Dl(e,t,a){return Sa(e,t,a)<0}ce.eq=bf;function bf(e,t,a){return Sa(e,t,a)===0}ce.neq=cA;function cA(e,t,a){return Sa(e,t,a)!==0}ce.gte=gf;function gf(e,t,a){return Sa(e,t,a)>=0}ce.lte=xf;function xf(e,t,a){return Sa(e,t,a)<=0}ce.cmp=zl;function zl(e,t,a,n){switch(t){case"===":return typeof e=="object"&&(e=e.version),typeof a=="object"&&(a=a.version),e===a;case"!==":return typeof e=="object"&&(e=e.version),typeof a=="object"&&(a=a.version),e!==a;case"":case"=":case"==":return bf(e,a,n);case"!=":return cA(e,a,n);case">":return Fr(e,a,n);case">=":return gf(e,a,n);case"<":return Dl(e,a,n);case"<=":return xf(e,a,n);default:throw new TypeError("Invalid operator: "+t)}}ce.Comparator=Gt;function Gt(e,t){if((!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1}),e instanceof Gt){if(e.loose===!!t.loose)return e;e=e.value}if(!(this instanceof Gt))return new Gt(e,t);Te("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===Or?this.value="":this.value=this.operator+this.semver.version,Te("comp",this)}var Or={};Gt.prototype.parse=function(e){var t=this.options.loose?Oe[hf]:Oe[vf],a=e.match(t);if(!a)throw new TypeError("Invalid comparator: "+e);this.operator=a[1],this.operator==="="&&(this.operator=""),a[2]?this.semver=new be(a[2],this.options.loose):this.semver=Or};Gt.prototype.toString=function(){return this.value};Gt.prototype.test=function(e){return Te("Comparator.test",e,this.options.loose),this.semver===Or?!0:(typeof e=="string"&&(e=new be(e,this.options)),zl(e,this.operator,this.semver,this.options))};Gt.prototype.intersects=function(e,t){if(!(e instanceof Gt))throw new TypeError("a Comparator is required");(!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1});var a;if(this.operator==="")return a=new Ve(e.value,t),Gl(this.value,a,t);if(e.operator==="")return a=new Ve(this.value,t),Gl(e.semver,a,t);var n=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),i=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),r=this.semver.version===e.semver.version,o=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),s=zl(this.semver,"<",e.semver,t)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),l=zl(this.semver,">",e.semver,t)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return n||i||r&&o||s||l};ce.Range=Ve;function Ve(e,t){if((!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1}),e instanceof Ve)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new Ve(e.raw,t);if(e instanceof Gt)return new Ve(e.value,t);if(!(this instanceof Ve))return new Ve(e,t);if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(function(a){return this.parseRange(a.trim())},this).filter(function(a){return a.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);this.format()}Ve.prototype.format=function(){return this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim(),this.range};Ve.prototype.toString=function(){return this.range};Ve.prototype.parseRange=function(e){var t=this.options.loose;e=e.trim();var a=t?Oe[sA]:Oe[oA];e=e.replace(a,Oj),Te("hyphen replace",e),e=e.replace(Oe[kr],uj),Te("comparator trim",e,Oe[kr]),e=e.replace(Oe[Ll],lj),e=e.replace(Oe[Ml],cj),e=e.split(/\s+/).join(" ");var n=t?Oe[hf]:Oe[vf],i=e.split(" ").map(function(r){return Cj(r,this.options)},this).join(" ").split(/\s+/);return this.options.loose&&(i=i.filter(function(r){return!!r.match(n)})),i=i.map(function(r){return new Gt(r,this.options)},this),i};Ve.prototype.intersects=function(e,t){if(!(e instanceof Ve))throw new TypeError("a Range is required");return this.set.some(function(a){return a.every(function(n){return e.set.some(function(i){return i.every(function(r){return n.intersects(r,t)})})})})};ce.toComparators=Sj;function Sj(e,t){return new Ve(e,t).set.map(function(a){return a.map(function(n){return n.value}).join(" ").trim().split(" ")})}function Cj(e,t){return Te("comp",e,t),e=_j(e,t),Te("caret",e),e=Aj(e,t),Te("tildes",e),e=kj(e,t),Te("xrange",e),e=Pj(e,t),Te("stars",e),e}function xt(e){return!e||e.toLowerCase()==="x"||e==="*"}function Aj(e,t){return e.trim().split(/\s+/).map(function(a){return Ij(a,t)}).join(" ")}function Ij(e,t){var a=t.loose?Oe[nA]:Oe[aA];return e.replace(a,function(n,i,r,o,s){Te("tilde",e,n,i,r,o,s);var l;return xt(i)?l="":xt(r)?l=">="+i+".0.0 <"+(+i+1)+".0.0":xt(o)?l=">="+i+"."+r+".0 <"+i+"."+(+r+1)+".0":s?(Te("replaceTilde pr",s),l=">="+i+"."+r+"."+o+"-"+s+" <"+i+"."+(+r+1)+".0"):l=">="+i+"."+r+"."+o+" <"+i+"."+(+r+1)+".0",Te("tilde return",l),l})}function _j(e,t){return e.trim().split(/\s+/).map(function(a){return Tj(a,t)}).join(" ")}function Tj(e,t){Te("caret",e,t);var a=t.loose?Oe[rA]:Oe[iA];return e.replace(a,function(n,i,r,o,s){Te("caret",e,n,i,r,o,s);var l;return xt(i)?l="":xt(r)?l=">="+i+".0.0 <"+(+i+1)+".0.0":xt(o)?i==="0"?l=">="+i+"."+r+".0 <"+i+"."+(+r+1)+".0":l=">="+i+"."+r+".0 <"+(+i+1)+".0.0":s?(Te("replaceCaret pr",s),i==="0"?r==="0"?l=">="+i+"."+r+"."+o+"-"+s+" <"+i+"."+r+"."+(+o+1):l=">="+i+"."+r+"."+o+"-"+s+" <"+i+"."+(+r+1)+".0":l=">="+i+"."+r+"."+o+"-"+s+" <"+(+i+1)+".0.0"):(Te("no pr"),i==="0"?r==="0"?l=">="+i+"."+r+"."+o+" <"+i+"."+r+"."+(+o+1):l=">="+i+"."+r+"."+o+" <"+i+"."+(+r+1)+".0":l=">="+i+"."+r+"."+o+" <"+(+i+1)+".0.0"),Te("caret return",l),l})}function kj(e,t){return Te("replaceXRanges",e,t),e.split(/\s+/).map(function(a){return Fj(a,t)}).join(" ")}function Fj(e,t){e=e.trim();var a=t.loose?Oe[eA]:Oe[QC];return e.replace(a,function(n,i,r,o,s,l){Te("xRange",e,n,i,r,o,s,l);var u=xt(r),c=u||xt(o),f=c||xt(s),p=f;return i==="="&&p&&(i=""),u?i===">"||i==="<"?n="<0.0.0":n="*":i&&p?(c&&(o=0),s=0,i===">"?(i=">=",c?(r=+r+1,o=0,s=0):(o=+o+1,s=0)):i==="<="&&(i="<",c?r=+r+1:o=+o+1),n=i+r+"."+o+"."+s):c?n=">="+r+".0.0 <"+(+r+1)+".0.0":f&&(n=">="+r+"."+o+".0 <"+r+"."+(+o+1)+".0"),Te("xRange return",n),n})}function Pj(e,t){return Te("replaceStars",e,t),e.trim().replace(Oe[lA],"")}function Oj(e,t,a,n,i,r,o,s,l,u,c,f,p){return xt(a)?t="":xt(n)?t=">="+a+".0.0":xt(i)?t=">="+a+"."+n+".0":t=">="+t,xt(l)?s="":xt(u)?s="<"+(+l+1)+".0.0":xt(c)?s="<"+l+"."+(+u+1)+".0":f?s="<="+l+"."+u+"."+c+"-"+f:s="<="+s,(t+" "+s).trim()}Ve.prototype.test=function(e){if(!e)return!1;typeof e=="string"&&(e=new be(e,this.options));for(var t=0;t<this.set.length;t++)if(Rj(this.set[t],e,this.options))return!0;return!1};function Rj(e,t,a){for(var n=0;n<e.length;n++)if(!e[n].test(t))return!1;if(t.prerelease.length&&!a.includePrerelease){for(n=0;n<e.length;n++)if(Te(e[n].semver),e[n].semver!==Or&&e[n].semver.prerelease.length>0){var i=e[n].semver;if(i.major===t.major&&i.minor===t.minor&&i.patch===t.patch)return!0}return!1}return!0}ce.satisfies=Gl;function Gl(e,t,a){try{t=new Ve(t,a)}catch(n){return!1}return t.test(e)}ce.maxSatisfying=Bj;function Bj(e,t,a){var n=null,i=null;try{var r=new Ve(t,a)}catch(o){return null}return e.forEach(function(o){r.test(o)&&(!n||i.compare(o)===-1)&&(n=o,i=new be(n,a))}),n}ce.minSatisfying=Nj;function Nj(e,t,a){var n=null,i=null;try{var r=new Ve(t,a)}catch(o){return null}return e.forEach(function(o){r.test(o)&&(!n||i.compare(o)===1)&&(n=o,i=new be(n,a))}),n}ce.minVersion=jj;function jj(e,t){e=new Ve(e,t);var a=new be("0.0.0");if(e.test(a)||(a=new be("0.0.0-0"),e.test(a)))return a;a=null;for(var n=0;n<e.set.length;++n){var i=e.set[n];i.forEach(function(r){var o=new be(r.semver.version);switch(r.operator){case">":o.prerelease.length===0?o.patch++:o.prerelease.push(0),o.raw=o.format();case"":case">=":(!a||Fr(a,o))&&(a=o);break;case"<":case"<=":break;default:throw new Error("Unexpected operation: "+r.operator)}})}return a&&e.test(a)?a:null}ce.validRange=Lj;function Lj(e,t){try{return new Ve(e,t).range||"*"}catch(a){return null}}ce.ltr=Mj;function Mj(e,t,a){return yf(e,t,"<",a)}ce.gtr=Dj;function Dj(e,t,a){return yf(e,t,">",a)}ce.outside=yf;function yf(e,t,a,n){e=new be(e,n),t=new Ve(t,n);var i,r,o,s,l;switch(a){case">":i=Fr,r=xf,o=Dl,s=">",l=">=";break;case"<":i=Dl,r=gf,o=Fr,s="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(Gl(e,t,n))return!1;for(var u=0;u<t.set.length;++u){var c=t.set[u],f=null,p=null;if(c.forEach(function(b){b.semver===Or&&(b=new Gt(">=0.0.0")),f=f||b,p=p||b,i(b.semver,f.semver,n)?f=b:o(b.semver,p.semver,n)&&(p=b)}),f.operator===s||f.operator===l||(!p.operator||p.operator===s)&&r(e,p.semver))return!1;if(p.operator===l&&o(e,p.semver))return!1}return!0}ce.prerelease=zj;function zj(e,t){var a=gn(e,t);return a&&a.prerelease.length?a.prerelease:null}ce.intersects=Gj;function Gj(e,t,a){return e=new Ve(e,a),t=new Ve(t,a),e.intersects(t)}ce.coerce=Hj;function Hj(e){if(e instanceof be)return e;if(typeof e!="string")return null;var t=e.match(Oe[tA]);return t==null?null:gn(t[1]+"."+(t[2]||"0")+"."+(t[3]||"0"))}});var gA=O((mV,Ul)=>{"use strict";var Vl=require("fs"),Ca=require("path"),dA=af(),Wj=pA(),fA={mode:511&~process.umask(),fs:Vl},mA=Wj.satisfies(process.version,">=10.12.0"),hA=e=>{if(process.platform==="win32"&&/[<>:"|?*]/.test(e.replace(Ca.parse(e).root,""))){let a=new Error(`Path contains invalid characters: ${e}`);throw a.code="EINVAL",a}},vA=e=>{let t=new Error(`operation not permitted, mkdir '${e}'`);return t.code="EPERM",t.errno=-4048,t.path=e,t.syscall="mkdir",t},bA=(e,t)=>Promise.resolve().then(()=>{hA(e),t=Object.assign({},fA,t);let a=dA(t.fs.mkdir),n=dA(t.fs.stat);if(mA&&t.fs.mkdir===Vl.mkdir){let r=Ca.resolve(e);return a(r,{mode:t.mode,recursive:!0}).then(()=>r)}let i=r=>a(r,t.mode).then(()=>r).catch(o=>{if(o.code==="EPERM")throw o;if(o.code==="ENOENT"){if(Ca.dirname(r)===r)throw vA(r);if(o.message.includes("null bytes"))throw o;return i(Ca.dirname(r)).then(()=>i(r))}return n(r).then(s=>s.isDirectory()?r:Promise.reject()).catch(()=>{throw o})});return i(Ca.resolve(e))});Ul.exports=bA;Ul.exports.default=bA;Ul.exports.sync=(e,t)=>{if(hA(e),t=Object.assign({},fA,t),mA&&t.fs.mkdirSync===Vl.mkdirSync){let n=Ca.resolve(e);return Vl.mkdirSync(n,{mode:t.mode,recursive:!0}),n}let a=n=>{try{t.fs.mkdirSync(n,t.mode)}catch(i){if(i.code==="EPERM")throw i;if(i.code==="ENOENT"){if(Ca.dirname(n)===n)throw vA(n);if(i.message.includes("null bytes"))throw i;return a(Ca.dirname(n)),a(n)}try{if(!t.fs.statSync(n).isDirectory())throw new Error("The path is not a directory")}catch(r){throw i}}return n};return a(Ca.resolve(e))}});var EA=O((hV,Jl)=>{"use strict";var Vj=Qd(),Uj=Symbol.asyncIterator||"@@asyncIterator",xA=e=>{let t=e.on||e.addListener||e.addEventListener,a=e.off||e.removeListener||e.removeEventListener;if(!t||!a)throw new TypeError("Emitter is not compatible");return{addListener:t.bind(e),removeListener:a.bind(e)}},yA=e=>Array.isArray(e)?e:[e],wA=(e,t,a)=>{let n,i=new Promise((r,o)=>{if(a=Object.assign({rejectionEvents:["error"],multiArgs:!1,resolveImmediately:!1},a),!(a.count>=0&&(a.count===1/0||Number.isInteger(a.count))))throw new TypeError("The `count` option should be at least 0 or more");let s=yA(t),l=[],{addListener:u,removeListener:c}=xA(e),f=(...b)=>{let d=a.multiArgs?b:b[0];a.filter&&!a.filter(d)||(l.push(d),a.count===l.length&&(n(),r(l)))},p=b=>{n(),o(b)};n=()=>{for(let b of s)c(b,f);for(let b of a.rejectionEvents)c(b,p)};for(let b of s)u(b,f);for(let b of a.rejectionEvents)u(b,p);a.resolveImmediately&&r(l)});if(i.cancel=n,typeof a.timeout=="number"){let r=Vj(i,a.timeout);return r.cancel=n,r}return i};Jl.exports=(e,t,a)=>{typeof a=="function"&&(a={filter:a}),a=Object.assign({},a,{count:1,resolveImmediately:!1});let n=wA(e,t,a),i=n.then(r=>r[0]);return i.cancel=n.cancel,i};Jl.exports.multiple=wA;Jl.exports.iterator=(e,t,a)=>{typeof a=="function"&&(a={filter:a});let n=yA(t);a=Object.assign({rejectionEvents:["error"],resolutionEvents:[],limit:1/0,multiArgs:!1},a);let{limit:i}=a;if(!(i>=0&&(i===1/0||Number.isInteger(i))))throw new TypeError("The `limit` option should be a non-negative integer or Infinity");if(i===0)return{[Symbol.asyncIterator](){return this},next(){return Promise.resolve({done:!0,value:void 0})}};let o=!1,{addListener:s,removeListener:l}=xA(e),u=!1,c,f=!1,p=[],b=[],d=0,h=(...E)=>{d++,o=d===i;let g=a.multiArgs?E:E[0];if(p.length>0){let{resolve:w}=p.shift();w({done:!1,value:g}),o&&m();return}b.push(g),o&&m()},m=()=>{u=!0;for(let E of n)l(E,h);for(let E of a.rejectionEvents)l(E,v);for(let E of a.resolutionEvents)l(E,x);for(;p.length>0;){let{resolve:E}=p.shift();E({done:!0,value:void 0})}},v=(...E)=>{if(c=a.multiArgs?E:E[0],p.length>0){let{reject:g}=p.shift();g(c)}else f=!0;m()},x=(...E)=>{let g=a.multiArgs?E:E[0];if(!(a.filter&&!a.filter(g))){if(p.length>0){let{resolve:w}=p.shift();w({done:!0,value:g})}else b.push(g);m()}};for(let E of n)s(E,h);for(let E of a.rejectionEvents)s(E,v);for(let E of a.resolutionEvents)s(E,x);return{[Uj](){return this},next(){if(b.length>0){let E=b.shift();return Promise.resolve({done:u&&b.length===0&&!o,value:E})}return f?(f=!1,Promise.reject(c)):u?Promise.resolve({done:!0,value:void 0}):new Promise((E,g)=>p.push({resolve:E,reject:g}))},return(E){return m(),Promise.resolve({done:u,value:E})}}}});var CA=O(Rr=>{"use strict";Rr.stringToBytes=e=>[...e].map(t=>t.charCodeAt(0));var SA=(e,t,a)=>String.fromCharCode(...e.slice(t,a));Rr.readUInt64LE=(e,t=0)=>{let a=e[t],n=1,i=0;for(;++i<8;)n*=256,a+=e[t+i]*n;return a};Rr.tarHeaderChecksumMatches=e=>{if(e.length<512)return!1;let t=128,a=256,n=0;for(let r=0;r<148;r++){let o=e[r];a+=o,n+=o&t}for(let r=156;r<512;r++){let o=e[r];a+=o,n+=o&t}let i=parseInt(SA(e,148,154),8);return i===a||i===a-(n<<1)};Rr.uint8ArrayUtf8ByteString=SA});var AA=O((exports,module)=>{"use strict";var{stringToBytes,readUInt64LE,tarHeaderChecksumMatches,uint8ArrayUtf8ByteString}=CA(),xpiZipFilename=stringToBytes("META-INF/mozilla.rsa"),oxmlContentTypes=stringToBytes("[Content_Types].xml"),oxmlRels=stringToBytes("_rels/.rels"),fileType=e=>{if(!(e instanceof Uint8Array||e instanceof ArrayBuffer||Buffer.isBuffer(e)))throw new TypeError(`Expected the \`input\` argument to be of type \`Uint8Array\` or \`Buffer\` or \`ArrayBuffer\`, got \`${typeof e}\``);let t=e instanceof Uint8Array?e:new Uint8Array(e);if(!(t&&t.length>1))return;let a=(i,r)=>{r=Object.assign({offset:0},r);for(let o=0;o<i.length;o++)if(r.mask){if(i[o]!==(r.mask[o]&t[o+r.offset]))return!1}else if(i[o]!==t[o+r.offset])return!1;return!0},n=(i,r)=>a(stringToBytes(i),r);if(a([255,216,255]))return{ext:"jpg",mime:"image/jpeg"};if(a([137,80,78,71,13,10,26,10]))return{ext:"png",mime:"image/png"};if(a([71,73,70]))return{ext:"gif",mime:"image/gif"};if(a([87,69,66,80],{offset:8}))return{ext:"webp",mime:"image/webp"};if(a([70,76,73,70]))return{ext:"flif",mime:"image/flif"};if((a([73,73,42,0])||a([77,77,0,42]))&&a([67,82],{offset:8}))return{ext:"cr2",mime:"image/x-canon-cr2"};if(a([73,73,82,79,8,0,0,0,24]))return{ext:"orf",mime:"image/x-olympus-orf"};if(a([73,73,42,0,16,251,134,1]))return{ext:"arw",mime:"image/x-sony-arw"};if(a([73,73,42,0,8,0,0,0,45]))return{ext:"dng",mime:"image/x-adobe-dng"};if(a([73,73,42,0,48,61,114,1,28]))return{ext:"nef",mime:"image/x-nikon-nef"};if(a([73,73,42,0])||a([77,77,0,42]))return{ext:"tif",mime:"image/tiff"};if(a([66,77]))return{ext:"bmp",mime:"image/bmp"};if(a([73,73,188]))return{ext:"jxr",mime:"image/vnd.ms-photo"};if(a([56,66,80,83]))return{ext:"psd",mime:"image/vnd.adobe.photoshop"};if(a([80,75,3,4])){if(a([109,105,109,101,116,121,112,101,97,112,112,108,105,99,97,116,105,111,110,47,101,112,117,98,43,122,105,112],{offset:30}))return{ext:"epub",mime:"application/epub+zip"};if(a(xpiZipFilename,{offset:30}))return{ext:"xpi",mime:"application/x-xpinstall"};if(n("mimetypeapplication/vnd.oasis.opendocument.text",{offset:30}))return{ext:"odt",mime:"application/vnd.oasis.opendocument.text"};if(n("mimetypeapplication/vnd.oasis.opendocument.spreadsheet",{offset:30}))return{ext:"ods",mime:"application/vnd.oasis.opendocument.spreadsheet"};if(n("mimetypeapplication/vnd.oasis.opendocument.presentation",{offset:30}))return{ext:"odp",mime:"application/vnd.oasis.opendocument.presentation"};let i=(l,u=0)=>l.findIndex((c,f,p)=>f>=u&&p[f]===80&&p[f+1]===75&&p[f+2]===3&&p[f+3]===4),r=0,o=!1,s;do{let l=r+30;if(o||(o=a(oxmlContentTypes,{offset:l})||a(oxmlRels,{offset:l})),s||(n("word/",{offset:l})?s={ext:"docx",mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"}:n("ppt/",{offset:l})?s={ext:"pptx",mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation"}:n("xl/",{offset:l})&&(s={ext:"xlsx",mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"})),o&&s)return s;r=i(t,l)}while(r>=0);if(s)return s}if(a([80,75])&&(t[2]===3||t[2]===5||t[2]===7)&&(t[3]===4||t[3]===6||t[3]===8))return{ext:"zip",mime:"application/zip"};if(a([48,48,48,48,48,48],{offset:148,mask:[248,248,248,248,248,248]})&&tarHeaderChecksumMatches(t))return{ext:"tar",mime:"application/x-tar"};if(a([82,97,114,33,26,7])&&(t[6]===0||t[6]===1))return{ext:"rar",mime:"application/x-rar-compressed"};if(a([31,139,8]))return{ext:"gz",mime:"application/gzip"};if(a([66,90,104]))return{ext:"bz2",mime:"application/x-bzip2"};if(a([55,122,188,175,39,28]))return{ext:"7z",mime:"application/x-7z-compressed"};if(a([120,1]))return{ext:"dmg",mime:"application/x-apple-diskimage"};if(a([102,114,101,101],{offset:4})||a([109,100,97,116],{offset:4})||a([109,111,111,118],{offset:4})||a([119,105,100,101],{offset:4}))return{ext:"mov",mime:"video/quicktime"};if(a([102,116,121,112],{offset:4})&&t[8]&96&&t[9]&96&&t[10]&96&&t[11]&96){let i=uint8ArrayUtf8ByteString(t,8,12);switch(i){case"mif1":return{ext:"heic",mime:"image/heif"};case"msf1":return{ext:"heic",mime:"image/heif-sequence"};case"heic":case"heix":return{ext:"heic",mime:"image/heic"};case"hevc":case"hevx":return{ext:"heic",mime:"image/heic-sequence"};case"qt ":return{ext:"mov",mime:"video/quicktime"};case"M4V ":case"M4VH":case"M4VP":return{ext:"m4v",mime:"video/x-m4v"};case"M4P ":return{ext:"m4p",mime:"video/mp4"};case"M4B ":return{ext:"m4b",mime:"audio/mp4"};case"M4A ":return{ext:"m4a",mime:"audio/x-m4a"};case"F4V ":return{ext:"f4v",mime:"video/mp4"};case"F4P ":return{ext:"f4p",mime:"video/mp4"};case"F4A ":return{ext:"f4a",mime:"audio/mp4"};case"F4B ":return{ext:"f4b",mime:"audio/mp4"};default:return i.startsWith("3g")?i.startsWith("3g2")?{ext:"3g2",mime:"video/3gpp2"}:{ext:"3gp",mime:"video/3gpp"}:{ext:"mp4",mime:"video/mp4"}}}if(a([77,84,104,100]))return{ext:"mid",mime:"audio/midi"};if(a([26,69,223,163])){let i=t.subarray(4,4100),r=i.findIndex((o,s,l)=>l[s]===66&&l[s+1]===130);if(r!==-1){let o=r+3,s=l=>[...l].every((u,c)=>i[o+c]===u.charCodeAt(0));if(s("matroska"))return{ext:"mkv",mime:"video/x-matroska"};if(s("webm"))return{ext:"webm",mime:"video/webm"}}}if(a([82,73,70,70])){if(a([65,86,73],{offset:8}))return{ext:"avi",mime:"video/vnd.avi"};if(a([87,65,86,69],{offset:8}))return{ext:"wav",mime:"audio/vnd.wave"};if(a([81,76,67,77],{offset:8}))return{ext:"qcp",mime:"audio/qcelp"}}if(a([48,38,178,117,142,102,207,17,166,217])){let i=30;do{let r=readUInt64LE(t,i+16);if(a([145,7,220,183,183,169,207,17,142,230,0,192,12,32,83,101],{offset:i})){if(a([64,158,105,248,77,91,207,17,168,253,0,128,95,92,68,43],{offset:i+24}))return{ext:"wma",mime:"audio/x-ms-wma"};if(a([192,239,25,188,77,91,207,17,168,253,0,128,95,92,68,43],{offset:i+24}))return{ext:"wmv",mime:"video/x-ms-asf"};break}i+=r}while(i+24<=t.length);return{ext:"asf",mime:"application/vnd.ms-asf"}}if(a([0,0,1,186])||a([0,0,1,179]))return{ext:"mpg",mime:"video/mpeg"};for(let i=0;i<2&&i<t.length-16;i++){if(a([73,68,51],{offset:i})||a([255,226],{offset:i,mask:[255,230]}))return{ext:"mp3",mime:"audio/mpeg"};if(a([255,228],{offset:i,mask:[255,230]}))return{ext:"mp2",mime:"audio/mpeg"};if(a([255,248],{offset:i,mask:[255,252]}))return{ext:"mp2",mime:"audio/mpeg"};if(a([255,240],{offset:i,mask:[255,252]}))return{ext:"mp4",mime:"audio/mpeg"}}if(a([79,112,117,115,72,101,97,100],{offset:28}))return{ext:"opus",mime:"audio/opus"};if(a([79,103,103,83]))return a([128,116,104,101,111,114,97],{offset:28})?{ext:"ogv",mime:"video/ogg"}:a([1,118,105,100,101,111,0],{offset:28})?{ext:"ogm",mime:"video/ogg"}:a([127,70,76,65,67],{offset:28})?{ext:"oga",mime:"audio/ogg"}:a([83,112,101,101,120,32,32],{offset:28})?{ext:"spx",mime:"audio/ogg"}:a([1,118,111,114,98,105,115],{offset:28})?{ext:"ogg",mime:"audio/ogg"}:{ext:"ogx",mime:"application/ogg"};if(a([102,76,97,67]))return{ext:"flac",mime:"audio/x-flac"};if(a([77,65,67,32]))return{ext:"ape",mime:"audio/ape"};if(a([119,118,112,107]))return{ext:"wv",mime:"audio/wavpack"};if(a([35,33,65,77,82,10]))return{ext:"amr",mime:"audio/amr"};if(a([37,80,68,70]))return{ext:"pdf",mime:"application/pdf"};if(a([77,90]))return{ext:"exe",mime:"application/x-msdownload"};if((t[0]===67||t[0]===70)&&a([87,83],{offset:1}))return{ext:"swf",mime:"application/x-shockwave-flash"};if(a([123,92,114,116,102]))return{ext:"rtf",mime:"application/rtf"};if(a([0,97,115,109]))return{ext:"wasm",mime:"application/wasm"};if(a([119,79,70,70])&&(a([0,1,0,0],{offset:4})||a([79,84,84,79],{offset:4})))return{ext:"woff",mime:"font/woff"};if(a([119,79,70,50])&&(a([0,1,0,0],{offset:4})||a([79,84,84,79],{offset:4})))return{ext:"woff2",mime:"font/woff2"};if(a([76,80],{offset:34})&&(a([0,0,1],{offset:8})||a([1,0,2],{offset:8})||a([2,0,2],{offset:8})))return{ext:"eot",mime:"application/vnd.ms-fontobject"};if(a([0,1,0,0,0]))return{ext:"ttf",mime:"font/ttf"};if(a([79,84,84,79,0]))return{ext:"otf",mime:"font/otf"};if(a([0,0,1,0]))return{ext:"ico",mime:"image/x-icon"};if(a([0,0,2,0]))return{ext:"cur",mime:"image/x-icon"};if(a([70,76,86,1]))return{ext:"flv",mime:"video/x-flv"};if(a([37,33]))return{ext:"ps",mime:"application/postscript"};if(a([253,55,122,88,90,0]))return{ext:"xz",mime:"application/x-xz"};if(a([83,81,76,105]))return{ext:"sqlite",mime:"application/x-sqlite3"};if(a([78,69,83,26]))return{ext:"nes",mime:"application/x-nintendo-nes-rom"};if(a([67,114,50,52]))return{ext:"crx",mime:"application/x-google-chrome-extension"};if(a([77,83,67,70])||a([73,83,99,40]))return{ext:"cab",mime:"application/vnd.ms-cab-compressed"};if(a([33,60,97,114,99,104,62,10,100,101,98,105,97,110,45,98,105,110,97,114,121]))return{ext:"deb",mime:"application/x-deb"};if(a([33,60,97,114,99,104,62]))return{ext:"ar",mime:"application/x-unix-archive"};if(a([237,171,238,219]))return{ext:"rpm",mime:"application/x-rpm"};if(a([31,160])||a([31,157]))return{ext:"Z",mime:"application/x-compress"};if(a([76,90,73,80]))return{ext:"lz",mime:"application/x-lzip"};if(a([208,207,17,224,161,177,26,225]))return{ext:"msi",mime:"application/x-msi"};if(a([6,14,43,52,2,5,1,1,13,1,2,1,1,2]))return{ext:"mxf",mime:"application/mxf"};if(a([71],{offset:4})&&(a([71],{offset:192})||a([71],{offset:196})))return{ext:"mts",mime:"video/mp2t"};if(a([66,76,69,78,68,69,82]))return{ext:"blend",mime:"application/x-blender"};if(a([66,80,71,251]))return{ext:"bpg",mime:"image/bpg"};if(a([0,0,0,12,106,80,32,32,13,10,135,10])){if(a([106,112,50,32],{offset:20}))return{ext:"jp2",mime:"image/jp2"};if(a([106,112,120,32],{offset:20}))return{ext:"jpx",mime:"image/jpx"};if(a([106,112,109,32],{offset:20}))return{ext:"jpm",mime:"image/jpm"};if(a([109,106,112,50],{offset:20}))return{ext:"mj2",mime:"image/mj2"}}if(a([70,79,82,77]))return{ext:"aif",mime:"audio/aiff"};if(n("<?xml "))return{ext:"xml",mime:"application/xml"};if(a([66,79,79,75,77,79,66,73],{offset:60}))return{ext:"mobi",mime:"application/x-mobipocket-ebook"};if(a([171,75,84,88,32,49,49,187,13,10,26,10]))return{ext:"ktx",mime:"image/ktx"};if(a([68,73,67,77],{offset:128}))return{ext:"dcm",mime:"application/dicom"};if(a([77,80,43]))return{ext:"mpc",mime:"audio/x-musepack"};if(a([77,80,67,75]))return{ext:"mpc",mime:"audio/x-musepack"};if(a([66,69,71,73,78,58]))return{ext:"ics",mime:"text/calendar"};if(a([103,108,84,70,2,0,0,0]))return{ext:"glb",mime:"model/gltf-binary"};if(a([212,195,178,161])||a([161,178,195,212]))return{ext:"pcap",mime:"application/vnd.tcpdump.pcap"};if(a([68,83,68,32]))return{ext:"dsf",mime:"audio/x-dsf"};if(a([76,0,0,0,1,20,2,0,0,0,0,0,192,0,0,0,0,0,0,70]))return{ext:"lnk",mime:"application/x.ms.shortcut"};if(a([98,111,111,107,0,0,0,0,109,97,114,107,0,0,0,0]))return{ext:"alias",mime:"application/x.apple.alias"};if(n("Creative Voice File"))return{ext:"voc",mime:"audio/x-voc"};if(a([11,119]))return{ext:"ac3",mime:"audio/vnd.dolby.dd-raw"}};module.exports=fileType;Object.defineProperty(fileType,"minimumBytes",{value:4100});fileType.stream=readableStream=>new Promise((resolve,reject)=>{let stream=eval("require")("stream");readableStream.once("readable",()=>{let e=new stream.PassThrough,t=readableStream.read(module.exports.minimumBytes)||readableStream.read();try{e.fileType=fileType(t)}catch(a){reject(a)}readableStream.unshift(t),stream.pipeline?resolve(stream.pipeline(readableStream,e,()=>{})):resolve(readableStream.pipe(e))})})});var IA=O((bV,Jj)=>{Jj.exports={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/3gpp-ims+xml":{source:"iana",compressible:!0},"application/3gpphal+json":{source:"iana",compressible:!0},"application/3gpphalforms+json":{source:"iana",compressible:!0},"application/a2l":{source:"iana"},"application/ace+cbor":{source:"iana"},"application/activemessage":{source:"iana"},"application/activity+json":{source:"iana",compressible:!0},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/alto-updatestreamcontrol+json":{source:"iana",compressible:!0},"application/alto-updatestreamparams+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/at+jwt":{source:"iana"},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",compressible:!0,extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana",compressible:!0,extensions:["atomdeleted"]},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",compressible:!0,extensions:["atomsvc"]},"application/atsc-dwd+xml":{source:"iana",compressible:!0,extensions:["dwd"]},"application/atsc-dynamic-event-message":{source:"iana"},"application/atsc-held+xml":{source:"iana",compressible:!0,extensions:["held"]},"application/atsc-rdt+json":{source:"iana",compressible:!0},"application/atsc-rsat+xml":{source:"iana",compressible:!0,extensions:["rsat"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana",compressible:!0},"application/bacnet-xdd+zip":{source:"iana",compressible:!1},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana",compressible:!0,extensions:["xcs"]},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/captive+json":{source:"iana",compressible:!0},"application/cbor":{source:"iana"},"application/cbor-seq":{source:"iana"},"application/cccex":{source:"iana"},"application/ccmp+xml":{source:"iana",compressible:!0},"application/ccxml+xml":{source:"iana",compressible:!0,extensions:["ccxml"]},"application/cdfx+xml":{source:"iana",compressible:!0,extensions:["cdfx"]},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana",compressible:!0},"application/cellml+xml":{source:"iana",compressible:!0},"application/cfw":{source:"iana"},"application/city+json":{source:"iana",compressible:!0},"application/clr":{source:"iana"},"application/clue+xml":{source:"iana",compressible:!0},"application/clue_info+xml":{source:"iana",compressible:!0},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana",compressible:!0},"application/coap-group+json":{source:"iana",compressible:!0},"application/coap-payload":{source:"iana"},"application/commonground":{source:"iana"},"application/conference-info+xml":{source:"iana",compressible:!0},"application/cose":{source:"iana"},"application/cose-key":{source:"iana"},"application/cose-key-set":{source:"iana"},"application/cpl+xml":{source:"iana",compressible:!0,extensions:["cpl"]},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana",compressible:!0},"application/cstadata+xml":{source:"iana",compressible:!0},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cwt":{source:"iana"},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",compressible:!0,extensions:["mpd"]},"application/dash-patch+xml":{source:"iana",compressible:!0,extensions:["mpp"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",compressible:!0,extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana",compressible:!0},"application/dicom":{source:"iana"},"application/dicom+json":{source:"iana",compressible:!0},"application/dicom+xml":{source:"iana",compressible:!0},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/dns+json":{source:"iana",compressible:!0},"application/dns-message":{source:"iana"},"application/docbook+xml":{source:"apache",compressible:!0,extensions:["dbk"]},"application/dots+cbor":{source:"iana"},"application/dskpp+xml":{source:"iana",compressible:!0},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",compressible:!0,extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/ecmascript":{source:"iana",compressible:!0,extensions:["es","ecma"]},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/efi":{source:"iana"},"application/elm+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/elm+xml":{source:"iana",compressible:!0},"application/emergencycalldata.cap+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/emergencycalldata.comment+xml":{source:"iana",compressible:!0},"application/emergencycalldata.control+xml":{source:"iana",compressible:!0},"application/emergencycalldata.deviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.ecall.msd":{source:"iana"},"application/emergencycalldata.providerinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.serviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.subscriberinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.veds+xml":{source:"iana",compressible:!0},"application/emma+xml":{source:"iana",compressible:!0,extensions:["emma"]},"application/emotionml+xml":{source:"iana",compressible:!0,extensions:["emotionml"]},"application/encaprtp":{source:"iana"},"application/epp+xml":{source:"iana",compressible:!0},"application/epub+zip":{source:"iana",compressible:!1,extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/expect-ct-report+json":{source:"iana",compressible:!0},"application/express":{source:"iana",extensions:["exp"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdt+xml":{source:"iana",compressible:!0,extensions:["fdt"]},"application/fhir+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/fhir+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/fido.trusted-apps+json":{compressible:!0},"application/fits":{source:"iana"},"application/flexfec":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1},"application/framework-attributes+xml":{source:"iana",compressible:!0},"application/geo+json":{source:"iana",compressible:!0,extensions:["geojson"]},"application/geo+json-seq":{source:"iana"},"application/geopackage+sqlite3":{source:"iana"},"application/geoxacml+xml":{source:"iana",compressible:!0},"application/gltf-buffer":{source:"iana"},"application/gml+xml":{source:"iana",compressible:!0,extensions:["gml"]},"application/gpx+xml":{source:"apache",compressible:!0,extensions:["gpx"]},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1,extensions:["gz"]},"application/h224":{source:"iana"},"application/held+xml":{source:"iana",compressible:!0},"application/hjson":{extensions:["hjson"]},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana",compressible:!0},"application/ibe-pkg-reply+xml":{source:"iana",compressible:!0},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",compressible:!0,extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana",compressible:!0,extensions:["its"]},"application/java-archive":{source:"apache",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js","mjs"]},"application/jf2feed+json":{source:"iana",compressible:!0},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/jscalendar+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana",compressible:!0},"application/kpml-response+xml":{source:"iana",compressible:!0},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/lgr+xml":{source:"iana",compressible:!0,extensions:["lgr"]},"application/link-format":{source:"iana"},"application/load-control+xml":{source:"iana",compressible:!0},"application/lost+xml":{source:"iana",compressible:!0,extensions:["lostxml"]},"application/lostsync+xml":{source:"iana",compressible:!0},"application/lpf+zip":{source:"iana",compressible:!1},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",compressible:!0,extensions:["mads"]},"application/manifest+json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",compressible:!0,extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",compressible:!0,extensions:["mathml"]},"application/mathml-content+xml":{source:"iana",compressible:!0},"application/mathml-presentation+xml":{source:"iana",compressible:!0},"application/mbms-associated-procedure-description+xml":{source:"iana",compressible:!0},"application/mbms-deregister+xml":{source:"iana",compressible:!0},"application/mbms-envelope+xml":{source:"iana",compressible:!0},"application/mbms-msk+xml":{source:"iana",compressible:!0},"application/mbms-msk-response+xml":{source:"iana",compressible:!0},"application/mbms-protection-description+xml":{source:"iana",compressible:!0},"application/mbms-reception-report+xml":{source:"iana",compressible:!0},"application/mbms-register+xml":{source:"iana",compressible:!0},"application/mbms-register-response+xml":{source:"iana",compressible:!0},"application/mbms-schedule+xml":{source:"iana",compressible:!0},"application/mbms-user-service-description+xml":{source:"iana",compressible:!0},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana",compressible:!0,extensions:["mpf"]},"application/media_control+xml":{source:"iana",compressible:!0},"application/mediaservercontrol+xml":{source:"iana",compressible:!0,extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",compressible:!0,extensions:["metalink"]},"application/metalink4+xml":{source:"iana",compressible:!0,extensions:["meta4"]},"application/mets+xml":{source:"iana",compressible:!0,extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mipc":{source:"iana"},"application/missing-blocks+cbor-seq":{source:"iana"},"application/mmt-aei+xml":{source:"iana",compressible:!0,extensions:["maei"]},"application/mmt-usd+xml":{source:"iana",compressible:!0,extensions:["musd"]},"application/mods+xml":{source:"iana",compressible:!0,extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana",compressible:!0},"application/mrb-publish+xml":{source:"iana",compressible:!0},"application/msc-ivr+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msc-mixer+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mud+json":{source:"iana",compressible:!0},"application/multipart-core":{source:"iana"},"application/mxf":{source:"iana",extensions:["mxf"]},"application/n-quads":{source:"iana",extensions:["nq"]},"application/n-triples":{source:"iana",extensions:["nt"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana",charset:"US-ASCII"},"application/news-groupinfo":{source:"iana",charset:"US-ASCII"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana",compressible:!0},"application/node":{source:"iana",extensions:["cjs"]},"application/nss":{source:"iana"},"application/oauth-authz-req+jwt":{source:"iana"},"application/oblivious-dns-message":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!1,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odm+xml":{source:"iana",compressible:!0},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",compressible:!0,extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/omdoc+xml":{source:"apache",compressible:!0,extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{source:"iana",compressible:!0},"application/oscore":{source:"iana"},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p21":{source:"iana"},"application/p21+zip":{source:"iana",compressible:!1},"application/p2p-overlay+xml":{source:"iana",compressible:!0,extensions:["relo"]},"application/parityfec":{source:"iana"},"application/passport":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",compressible:!0,extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pem-certificate-chain":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana",extensions:["asc"]},"application/pgp-signature":{source:"iana",extensions:["asc","sig"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pidf-diff+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkcs8-encrypted":{source:"iana"},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",compressible:!0,extensions:["pls"]},"application/poc-settings+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/ppsp-tracker+json":{source:"iana",compressible:!0},"application/problem+json":{source:"iana",compressible:!0},"application/problem+xml":{source:"iana",compressible:!0},"application/provenance+xml":{source:"iana",compressible:!0,extensions:["provx"]},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.cyn":{source:"iana",charset:"7-BIT"},"application/prs.hpub+zip":{source:"iana",compressible:!1},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.xsf+xml":{source:"iana",compressible:!0},"application/pskc+xml":{source:"iana",compressible:!0,extensions:["pskcxml"]},"application/pvd+json":{source:"iana",compressible:!0},"application/qsig":{source:"iana"},"application/raml+yaml":{compressible:!0,extensions:["raml"]},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf","owl"]},"application/reginfo+xml":{source:"iana",compressible:!0,extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"iana"},"application/reputon+json":{source:"iana",compressible:!0},"application/resource-lists+xml":{source:"iana",compressible:!0,extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",compressible:!0,extensions:["rld"]},"application/rfc+xml":{source:"iana",compressible:!0},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana",compressible:!0},"application/rls-services+xml":{source:"iana",compressible:!0,extensions:["rs"]},"application/route-apd+xml":{source:"iana",compressible:!0,extensions:["rapd"]},"application/route-s-tsid+xml":{source:"iana",compressible:!0,extensions:["sls"]},"application/route-usd+xml":{source:"iana",compressible:!0,extensions:["rusd"]},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-publication":{source:"iana"},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",compressible:!0,extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana",compressible:!0},"application/samlmetadata+xml":{source:"iana",compressible:!0},"application/sarif+json":{source:"iana",compressible:!0},"application/sarif-external-properties+json":{source:"iana",compressible:!0},"application/sbe":{source:"iana"},"application/sbml+xml":{source:"iana",compressible:!0,extensions:["sbml"]},"application/scaip+xml":{source:"iana",compressible:!0},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/secevent+jwt":{source:"iana"},"application/senml+cbor":{source:"iana"},"application/senml+json":{source:"iana",compressible:!0},"application/senml+xml":{source:"iana",compressible:!0,extensions:["senmlx"]},"application/senml-etch+cbor":{source:"iana"},"application/senml-etch+json":{source:"iana",compressible:!0},"application/senml-exi":{source:"iana"},"application/sensml+cbor":{source:"iana"},"application/sensml+json":{source:"iana",compressible:!0},"application/sensml+xml":{source:"iana",compressible:!0,extensions:["sensmlx"]},"application/sensml-exi":{source:"iana"},"application/sep+xml":{source:"iana",compressible:!0},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",compressible:!0,extensions:["shf"]},"application/sieve":{source:"iana",extensions:["siv","sieve"]},"application/simple-filter+xml":{source:"iana",compressible:!0},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/sipc":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"iana"},"application/smil+xml":{source:"iana",compressible:!0,extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",compressible:!0,extensions:["srx"]},"application/spdx+json":{source:"iana",compressible:!0},"application/spirits-event+xml":{source:"iana",compressible:!0},"application/sql":{source:"iana"},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",compressible:!0,extensions:["grxml"]},"application/sru+xml":{source:"iana",compressible:!0,extensions:["sru"]},"application/ssdl+xml":{source:"apache",compressible:!0,extensions:["ssdl"]},"application/ssml+xml":{source:"iana",compressible:!0,extensions:["ssml"]},"application/stix+json":{source:"iana",compressible:!0},"application/swid+xml":{source:"iana",compressible:!0,extensions:["swidtag"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/taxii+json":{source:"iana",compressible:!0},"application/td+json":{source:"iana",compressible:!0},"application/tei+xml":{source:"iana",compressible:!0,extensions:["tei","teicorpus"]},"application/tetra_isi":{source:"iana"},"application/thraud+xml":{source:"iana",compressible:!0,extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/tlsrpt+gzip":{source:"iana"},"application/tlsrpt+json":{source:"iana",compressible:!0},"application/tnauthlist":{source:"iana"},"application/token-introspection+jwt":{source:"iana"},"application/toml":{compressible:!0,extensions:["toml"]},"application/trickle-ice-sdpfrag":{source:"iana"},"application/trig":{source:"iana",extensions:["trig"]},"application/ttml+xml":{source:"iana",compressible:!0,extensions:["ttml"]},"application/tve-trigger":{source:"iana"},"application/tzif":{source:"iana"},"application/tzif-leap":{source:"iana"},"application/ubjson":{compressible:!1,extensions:["ubj"]},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana",compressible:!0},"application/urc-ressheet+xml":{source:"iana",compressible:!0,extensions:["rsheet"]},"application/urc-targetdesc+xml":{source:"iana",compressible:!0,extensions:["td"]},"application/urc-uisocketdesc+xml":{source:"iana",compressible:!0},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana",compressible:!0},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.1000minds.decision-model+xml":{source:"iana",compressible:!0,extensions:["1km"]},"application/vnd.3gpp-prose+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-v2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gnas":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.bsf+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gmop+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gtpc":{source:"iana"},"application/vnd.3gpp.interworking-data":{source:"iana"},"application/vnd.3gpp.lpp":{source:"iana"},"application/vnd.3gpp.mc-signalling-ear":{source:"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-payload":{source:"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-signalling":{source:"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-floor-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-signed+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-init-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-transmission-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mid-call+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ngap":{source:"iana"},"application/vnd.3gpp.pfcp":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.s1ap":{source:"iana"},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.sms+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ussd+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3lightssoftware.imagescal":{source:"iana"},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",compressible:!1,extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",compressible:!0,extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"iana",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.afpc.afplinedata":{source:"iana"},"application/vnd.afpc.afplinedata-pagedef":{source:"iana"},"application/vnd.afpc.cmoca-cmresource":{source:"iana"},"application/vnd.afpc.foca-charset":{source:"iana"},"application/vnd.afpc.foca-codedfont":{source:"iana"},"application/vnd.afpc.foca-codepage":{source:"iana"},"application/vnd.afpc.modca":{source:"iana"},"application/vnd.afpc.modca-cmtable":{source:"iana"},"application/vnd.afpc.modca-formdef":{source:"iana"},"application/vnd.afpc.modca-mediummap":{source:"iana"},"application/vnd.afpc.modca-objectcontainer":{source:"iana"},"application/vnd.afpc.modca-overlay":{source:"iana"},"application/vnd.afpc.modca-pagesegment":{source:"iana"},"application/vnd.age":{source:"iana",extensions:["age"]},"application/vnd.ah-barcode":{source:"iana"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amadeus+json":{source:"iana",compressible:!0},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.amazon.mobi8-ebook":{source:"iana"},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana",compressible:!0},"application/vnd.android.ota":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.arrow.file":{source:"iana"},"application/vnd.apache.arrow.stream":{source:"iana"},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.aplextor.warrp+json":{source:"iana",compressible:!0},"application/vnd.apothekende.reservation+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",compressible:!0,extensions:["mpkg"]},"application/vnd.apple.keynote":{source:"iana",extensions:["key"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.numbers":{source:"iana",extensions:["numbers"]},"application/vnd.apple.pages":{source:"iana",extensions:["pages"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"iana"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artisan+json":{source:"iana",compressible:!0},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avalon+json":{source:"iana",compressible:!0},"application/vnd.avistar+xml":{source:"iana",compressible:!0},"application/vnd.balsamiq.bmml+xml":{source:"iana",compressible:!0,extensions:["bmml"]},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.banana-accounting":{source:"iana"},"application/vnd.bbf.usp.error":{source:"iana"},"application/vnd.bbf.usp.msg":{source:"iana"},"application/vnd.bbf.usp.msg+json":{source:"iana",compressible:!0},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.bint.med-content":{source:"iana"},"application/vnd.biopax.rdf+xml":{source:"iana",compressible:!0},"application/vnd.blink-idb-value-wrapper":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.bpf":{source:"iana"},"application/vnd.bpf3":{source:"iana"},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.byu.uapi+json":{source:"iana",compressible:!0},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.capasystems-pg+json":{source:"iana",compressible:!0},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",compressible:!0,extensions:["cdxml"]},"application/vnd.chess-pgn":{source:"iana"},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.ciedi":{source:"iana"},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana",compressible:!0,extensions:["csl"]},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collabio.xodocuments.document":{source:"iana"},"application/vnd.collabio.xodocuments.document-template":{source:"iana"},"application/vnd.collabio.xodocuments.presentation":{source:"iana"},"application/vnd.collabio.xodocuments.presentation-template":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.comicbook+zip":{source:"iana",compressible:!1},"application/vnd.comicbook-rar":{source:"iana"},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.coreos.ignition+json":{source:"iana",compressible:!0},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",compressible:!0,extensions:["wbs"]},"application/vnd.cryptii.pipe+json":{source:"iana",compressible:!0},"application/vnd.crypto-shade-file":{source:"iana"},"application/vnd.cryptomator.encrypted":{source:"iana"},"application/vnd.cryptomator.vault":{source:"iana"},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana",compressible:!0},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana",compressible:!0},"application/vnd.cybank":{source:"iana"},"application/vnd.cyclonedx+json":{source:"iana",compressible:!0},"application/vnd.cyclonedx+xml":{source:"iana",compressible:!0},"application/vnd.d2l.coursepackage1p0+zip":{source:"iana",compressible:!1},"application/vnd.d3m-dataset":{source:"iana"},"application/vnd.d3m-problem":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.datapackage+json":{source:"iana",compressible:!0},"application/vnd.dataresource+json":{source:"iana",compressible:!0},"application/vnd.dbf":{source:"iana",extensions:["dbf"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",compressible:!0,extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume.movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana",compressible:!0},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbisl+xml":{source:"iana",compressible:!0},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-container+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-generic+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-init+xml":{source:"iana",compressible:!0},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecip.rlp":{source:"iana"},"application/vnd.eclipse.ditto+json":{source:"iana",compressible:!0},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.efi.img":{source:"iana"},"application/vnd.efi.iso":{source:"iana"},"application/vnd.emclient.accessrequest+xml":{source:"iana",compressible:!0},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana",compressible:!0},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.espass-espass+zip":{source:"iana",compressible:!1},"application/vnd.eszigno3+xml":{source:"iana",compressible:!0,extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.asic-e+zip":{source:"iana",compressible:!1},"application/vnd.etsi.asic-s+zip":{source:"iana",compressible:!1},"application/vnd.etsi.cug+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvcommand+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvservice+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsync+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvueprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mcid+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana",compressible:!0},"application/vnd.etsi.pstn+xml":{source:"iana",compressible:!0},"application/vnd.etsi.sci+xml":{source:"iana",compressible:!0},"application/vnd.etsi.simservs+xml":{source:"iana",compressible:!0},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana",compressible:!0},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eu.kasparian.car+json":{source:"iana",compressible:!0},"application/vnd.eudora.data":{source:"iana"},"application/vnd.evolv.ecig.profile":{source:"iana"},"application/vnd.evolv.ecig.settings":{source:"iana"},"application/vnd.evolv.ecig.theme":{source:"iana"},"application/vnd.exstream-empower+zip":{source:"iana",compressible:!1},"application/vnd.exstream-package":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.familysearch.gedcom+zip":{source:"iana",compressible:!1},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"iana",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.ffsns":{source:"iana"},"application/vnd.ficlab.flb+zip":{source:"iana",compressible:!1},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{source:"iana",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"iana",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujifilm.fb.docuworks":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.container":{source:"iana"},"application/vnd.fujifilm.fb.jfi+xml":{source:"iana",compressible:!0},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.futoin+cbor":{source:"iana"},"application/vnd.futoin+json":{source:"iana",compressible:!0},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.gentics.grd+json":{source:"iana",compressible:!0},"application/vnd.geo+json":{source:"iana",compressible:!0},"application/vnd.geocube+xml":{source:"iana",compressible:!0},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.slides":{source:"iana"},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"iana",compressible:!0},"application/vnd.gov.sk.e-form+zip":{source:"iana",compressible:!1},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana",compressible:!0},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",compressible:!0,extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",compressible:!0,extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hc+json":{source:"iana",compressible:!0},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.hdt":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hl7cda+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hl7v2+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyper+json":{source:"iana",compressible:!0},"application/vnd.hyper-item+json":{source:"iana",compressible:!0},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"iana"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"iana",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.imagemeter.folder+zip":{source:"iana",compressible:!1},"application/vnd.imagemeter.image+zip":{source:"iana",compressible:!1},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana",compressible:!0},"application/vnd.informix-visionary":{source:"iana"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana",compressible:!0},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.packageitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.planningitem+xml":{source:"iana",compressible:!0},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",compressible:!0,extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.iso11783-10+zip":{source:"iana",compressible:!1},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las":{source:"iana"},"application/vnd.las.las+json":{source:"iana",compressible:!0},"application/vnd.las.las+xml":{source:"iana",compressible:!0,extensions:["lasxml"]},"application/vnd.laszip":{source:"iana"},"application/vnd.leap+json":{source:"iana",compressible:!0},"application/vnd.liberty-request+xml":{source:"iana",compressible:!0},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",compressible:!0,extensions:["lbe"]},"application/vnd.logipipe.circuit+zip":{source:"iana",compressible:!1},"application/vnd.loom":{source:"iana"},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana",extensions:["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.conftoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.license+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxar.archive.3tz+zip":{source:"iana",compressible:!1},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana",compressible:!0},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-outlook":{compressible:!1,extensions:["msg"]},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana",compressible:!0},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana",compressible:!0},"application/vnd.ms-printing.printticket+xml":{source:"apache",compressible:!0},"application/vnd.ms-printschematicket+xml":{source:"iana",compressible:!0},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.nacamar.ybrid+json":{source:"iana",compressible:!0},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nearst.inv+json":{source:"iana",compressible:!0},"application/vnd.nebumind.line":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nimn":{source:"iana"},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana",compressible:!0},"application/vnd.nokia.iptv.config+xml":{source:"iana",compressible:!0},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana",compressible:!0},"application/vnd.nokia.landmarkcollection+xml":{source:"iana",compressible:!0},"application/vnd.nokia.n-gage.ac+xml":{source:"iana",compressible:!0,extensions:["ac"]},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"iana",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana",compressible:!0},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"iana",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.ocf+cbor":{source:"iana"},"application/vnd.oci.image.manifest.v1+json":{source:"iana",compressible:!0},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana",compressible:!0},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana",compressible:!0},"application/vnd.oipf.dae.xhtml+xml":{source:"iana",compressible:!0},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana",compressible:!0},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.oipf.spdlist+xml":{source:"iana",compressible:!0},"application/vnd.oipf.ueprofile+xml":{source:"iana",compressible:!0},"application/vnd.oipf.userprofile+xml":{source:"iana",compressible:!0},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.drm-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.imd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sprov+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-feature-handler+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-pcc+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-subs-invite+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-user-prefs+xml":{source:"iana",compressible:!0},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",compressible:!0,extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana",compressible:!0},"application/vnd.oma.group-usage-list+xml":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+cbor":{source:"iana"},"application/vnd.oma.lwm2m+json":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+tlv":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.final-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.groups+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana",compressible:!0},"application/vnd.oma.xcap-directory+xml":{source:"iana",compressible:!0},"application/vnd.omads-email+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-file+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-folder+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.onepager":{source:"iana"},"application/vnd.onepagertamp":{source:"iana"},"application/vnd.onepagertamx":{source:"iana"},"application/vnd.onepagertat":{source:"iana"},"application/vnd.onepagertatp":{source:"iana"},"application/vnd.onepagertatx":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana",compressible:!0,extensions:["obgx"]},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openstreetmap.data+xml":{source:"iana",compressible:!0,extensions:["osm"]},"application/vnd.opentimestamps.ots":{source:"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"iana",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"iana",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"iana",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana",compressible:!0},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana",compressible:!0},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos.xml":{source:"iana"},"application/vnd.patentdive":{source:"iana"},"application/vnd.patientecommsdoc":{source:"iana"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana",compressible:!0},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.psfs":{source:"iana"},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana",compressible:!0},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quarantainenet":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana",compressible:!0},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.rar":{source:"iana",extensions:["rar"]},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",compressible:!0,extensions:["musicxml"]},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.resilient.logic":{source:"iana"},"application/vnd.restful+json":{source:"iana",compressible:!0},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",compressible:!0,extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sar":{source:"iana"},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.seis+json":{source:"iana",compressible:!0},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shade-save-file":{source:"iana"},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.shootproof+json":{source:"iana",compressible:!0},"application/vnd.shopkick+json":{source:"iana",compressible:!0},"application/vnd.shp":{source:"iana"},"application/vnd.shx":{source:"iana"},"application/vnd.sigrok.session":{source:"iana"},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.snesdev-page-table":{source:"iana"},"application/vnd.software602.filler.form+xml":{source:"iana",compressible:!0,extensions:["fo"]},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",compressible:!0,extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sqlite3":{source:"iana"},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana",compressible:!0,extensions:["wadl"]},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.sycle+xml":{source:"iana",compressible:!0},"application/vnd.syft+json":{source:"iana",compressible:!0},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",charset:"UTF-8",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tableschema+json":{source:"iana",compressible:!0},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{source:"iana",compressible:!0},"application/vnd.tmd.mediaflex.api+xml":{source:"iana",compressible:!0},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.tri.onesource":{source:"iana"},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",compressible:!0,extensions:["uoml"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.vel+json":{source:"iana",compressible:!0},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.veritone.aion+json":{source:"iana",compressible:!0},"application/vnd.veryant.thin":{source:"iana"},"application/vnd.ves.encrypted":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",charset:"UTF-8",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.dpp":{source:"iana"},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana",compressible:!0},"application/vnd.wv.ssp+xml":{source:"iana",compressible:!0},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana",compressible:!0},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",compressible:!0,extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.youtube.yt":{source:"iana"},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",compressible:!0,extensions:["zaz"]},"application/voicexml+xml":{source:"iana",compressible:!0,extensions:["vxml"]},"application/voucher-cms+json":{source:"iana",compressible:!0},"application/vq-rtcpxr":{source:"iana"},"application/wasm":{source:"iana",compressible:!0,extensions:["wasm"]},"application/watcherinfo+xml":{source:"iana",compressible:!0,extensions:["wif"]},"application/webpush-options+json":{source:"iana",compressible:!0},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",compressible:!0,extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",compressible:!0,extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-arj":{compressible:!1,extensions:["arj"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",compressible:!0,extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",compressible:!0,extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",compressible:!0,extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-iwork-keynote-sffkey":{extensions:["key"]},"application/x-iwork-numbers-sffnumbers":{extensions:["numbers"]},"application/x-iwork-pages-sffpages":{extensions:["pages"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-keepass2":{extensions:["kdbx"]},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-pki-message":{source:"iana"},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-virtualbox-hdd":{compressible:!0,extensions:["hdd"]},"application/x-virtualbox-ova":{compressible:!0,extensions:["ova"]},"application/x-virtualbox-ovf":{compressible:!0,extensions:["ovf"]},"application/x-virtualbox-vbox":{compressible:!0,extensions:["vbox"]},"application/x-virtualbox-vbox-extpack":{compressible:!1,extensions:["vbox-extpack"]},"application/x-virtualbox-vdi":{compressible:!0,extensions:["vdi"]},"application/x-virtualbox-vhd":{compressible:!0,extensions:["vhd"]},"application/x-virtualbox-vmdk":{compressible:!0,extensions:["vmdk"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"iana",extensions:["der","crt","pem"]},"application/x-x509-ca-ra-cert":{source:"iana"},"application/x-x509-next-ca-cert":{source:"iana"},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",compressible:!0,extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana",compressible:!0},"application/xaml+xml":{source:"apache",compressible:!0,extensions:["xaml"]},"application/xcap-att+xml":{source:"iana",compressible:!0,extensions:["xav"]},"application/xcap-caps+xml":{source:"iana",compressible:!0,extensions:["xca"]},"application/xcap-diff+xml":{source:"iana",compressible:!0,extensions:["xdf"]},"application/xcap-el+xml":{source:"iana",compressible:!0,extensions:["xel"]},"application/xcap-error+xml":{source:"iana",compressible:!0},"application/xcap-ns+xml":{source:"iana",compressible:!0,extensions:["xns"]},"application/xcon-conference-info+xml":{source:"iana",compressible:!0},"application/xcon-conference-info-diff+xml":{source:"iana",compressible:!0},"application/xenc+xml":{source:"iana",compressible:!0,extensions:["xenc"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache",compressible:!0},"application/xliff+xml":{source:"iana",compressible:!0,extensions:["xlf"]},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd","rng"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana",compressible:!0},"application/xmpp+xml":{source:"iana",compressible:!0},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",compressible:!0,extensions:["xpl"]},"application/xslt+xml":{source:"iana",compressible:!0,extensions:["xsl","xslt"]},"application/xspf+xml":{source:"apache",compressible:!0,extensions:["xspf"]},"application/xv+xml":{source:"iana",compressible:!0,extensions:["mxml","xhvml","xvml","xvm"]},"application/yang":{source:"iana",extensions:["yang"]},"application/yang-data+json":{source:"iana",compressible:!0},"application/yang-data+xml":{source:"iana",compressible:!0},"application/yang-patch+json":{source:"iana",compressible:!0},"application/yang-patch+xml":{source:"iana",compressible:!0},"application/yin+xml":{source:"iana",compressible:!0,extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zlib":{source:"iana"},"application/zstd":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana",compressible:!1,extensions:["3gpp"]},"audio/3gpp2":{source:"iana"},"audio/aac":{source:"iana"},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana",extensions:["amr"]},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/flexfec":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/melp":{source:"iana"},"audio/melp1200":{source:"iana"},"audio/melp2400":{source:"iana"},"audio/melp600":{source:"iana"},"audio/mhas":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/mobile-xmf":{source:"iana",extensions:["mxmf"]},"audio/mp3":{compressible:!1,extensions:["mp3"]},"audio/mp4":{source:"iana",compressible:!1,extensions:["m4a","mp4a"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx","opus"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/scip":{source:"iana"},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sofa":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tetra_acelp":{source:"iana"},"audio/tetra_acelp_bb":{source:"iana"},"audio/tone":{source:"iana"},"audio/tsvcis":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/usac":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dts.uhd":{source:"iana"},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.presonus.multitrack":{source:"iana"},"audio/vnd.qcelp":{source:"iana"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/collection":{source:"iana",extensions:["ttc"]},"font/otf":{source:"iana",compressible:!0,extensions:["otf"]},"font/sfnt":{source:"iana"},"font/ttf":{source:"iana",compressible:!0,extensions:["ttf"]},"font/woff":{source:"iana",extensions:["woff"]},"font/woff2":{source:"iana",extensions:["woff2"]},"image/aces":{source:"iana",extensions:["exr"]},"image/apng":{compressible:!1,extensions:["apng"]},"image/avci":{source:"iana",extensions:["avci"]},"image/avcs":{source:"iana",extensions:["avcs"]},"image/avif":{source:"iana",compressible:!1,extensions:["avif"]},"image/bmp":{source:"iana",compressible:!0,extensions:["bmp"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/dicom-rle":{source:"iana",extensions:["drle"]},"image/emf":{source:"iana",extensions:["emf"]},"image/fits":{source:"iana",extensions:["fits"]},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/heic":{source:"iana",extensions:["heic"]},"image/heic-sequence":{source:"iana",extensions:["heics"]},"image/heif":{source:"iana",extensions:["heif"]},"image/heif-sequence":{source:"iana",extensions:["heifs"]},"image/hej2k":{source:"iana",extensions:["hej2"]},"image/hsj2":{source:"iana",extensions:["hsj2"]},"image/ief":{source:"iana",extensions:["ief"]},"image/jls":{source:"iana",extensions:["jls"]},"image/jp2":{source:"iana",compressible:!1,extensions:["jp2","jpg2"]},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpeg","jpg","jpe"]},"image/jph":{source:"iana",extensions:["jph"]},"image/jphc":{source:"iana",extensions:["jhc"]},"image/jpm":{source:"iana",compressible:!1,extensions:["jpm"]},"image/jpx":{source:"iana",compressible:!1,extensions:["jpx","jpf"]},"image/jxr":{source:"iana",extensions:["jxr"]},"image/jxra":{source:"iana",extensions:["jxra"]},"image/jxrs":{source:"iana",extensions:["jxrs"]},"image/jxs":{source:"iana",extensions:["jxs"]},"image/jxsc":{source:"iana",extensions:["jxsc"]},"image/jxsi":{source:"iana",extensions:["jxsi"]},"image/jxss":{source:"iana",extensions:["jxss"]},"image/ktx":{source:"iana",extensions:["ktx"]},"image/ktx2":{source:"iana",extensions:["ktx2"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif"]},"image/prs.pti":{source:"iana",extensions:["pti"]},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana",extensions:["t38"]},"image/tiff":{source:"iana",compressible:!1,extensions:["tif","tiff"]},"image/tiff-fx":{source:"iana",extensions:["tfx"]},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana",extensions:["azv"]},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana",compressible:!0,extensions:["ico"]},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-dds":{compressible:!0,extensions:["dds"]},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.pco.b16":{source:"iana",extensions:["b16"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana",extensions:["tap"]},"image/vnd.valve.source.texture":{source:"iana",extensions:["vtf"]},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana",extensions:["pcx"]},"image/webp":{source:"apache",extensions:["webp"]},"image/wmf":{source:"iana",extensions:["wmf"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana",extensions:["disposition-notification"]},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana",extensions:["u8msg"]},"message/global-delivery-status":{source:"iana",extensions:["u8dsn"]},"message/global-disposition-notification":{source:"iana",extensions:["u8mdn"]},"message/global-headers":{source:"iana",extensions:["u8hdr"]},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/news":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime"]},"message/s-http":{source:"iana"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"iana"},"message/vnd.wfa.wsc":{source:"iana",extensions:["wsc"]},"model/3mf":{source:"iana",extensions:["3mf"]},"model/e57":{source:"iana"},"model/gltf+json":{source:"iana",compressible:!0,extensions:["gltf"]},"model/gltf-binary":{source:"iana",compressible:!0,extensions:["glb"]},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/mtl":{source:"iana",extensions:["mtl"]},"model/obj":{source:"iana",extensions:["obj"]},"model/step":{source:"iana"},"model/step+xml":{source:"iana",compressible:!0,extensions:["stpx"]},"model/step+zip":{source:"iana",compressible:!1,extensions:["stpz"]},"model/step-xml+zip":{source:"iana",compressible:!1,extensions:["stpxz"]},"model/stl":{source:"iana",extensions:["stl"]},"model/vnd.collada+xml":{source:"iana",compressible:!0,extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana",compressible:!0},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana",extensions:["ogex"]},"model/vnd.parasolid.transmit.binary":{source:"iana",extensions:["x_b"]},"model/vnd.parasolid.transmit.text":{source:"iana",extensions:["x_t"]},"model/vnd.pytha.pyox":{source:"iana"},"model/vnd.rosette.annotated-data-model":{source:"iana"},"model/vnd.sap.vds":{source:"iana",extensions:["vds"]},"model/vnd.usdz+zip":{source:"iana",compressible:!1,extensions:["usdz"]},"model/vnd.valve.source.compiled-map":{source:"iana",extensions:["bsp"]},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana",extensions:["x3db"]},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana",extensions:["x3dv"]},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana"},"multipart/multilingual":{source:"iana"},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/vnd.bint.med-plus":{source:"iana"},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/cql":{source:"iana"},"text/cql-expression":{source:"iana"},"text/cql-identifier":{source:"iana"},"text/css":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"iana"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fhirpath":{source:"iana"},"text/flexfec":{source:"iana"},"text/fwdred":{source:"iana"},"text/gff3":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",compressible:!0},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{compressible:!0,extensions:["less"]},"text/markdown":{source:"iana",compressible:!0,extensions:["markdown","md"]},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mdx":{compressible:!0,extensions:["mdx"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana",charset:"UTF-8"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana",charset:"UTF-8"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/prs.prop.logic":{source:"iana"},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/shaclc":{source:"iana"},"text/shex":{source:"iana",extensions:["shex"]},"text/slim":{extensions:["slim","slm"]},"text/spdx":{source:"iana",extensions:["spdx"]},"text/strings":{source:"iana"},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",charset:"UTF-8",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.ascii-art":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana",charset:"UTF-8"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana",charset:"UTF-8"},"text/vnd.familysearch.gedcom":{source:"iana",extensions:["ged"]},"text/vnd.ficlab.flt":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.gml":{source:"iana"},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.hans":{source:"iana"},"text/vnd.hgl":{source:"iana"},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.senx.warpscript":{source:"iana"},"text/vnd.si.uricatalogue":{source:"iana"},"text/vnd.sosi":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",charset:"UTF-8",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana",charset:"UTF-8"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vtt":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-org":{compressible:!0,extensions:["org"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{compressible:!0,extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"iana"},"video/3gpp":{source:"iana",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"iana"},"video/3gpp2":{source:"iana",extensions:["3g2"]},"video/av1":{source:"iana"},"video/bmpeg":{source:"iana"},"video/bt656":{source:"iana"},"video/celb":{source:"iana"},"video/dv":{source:"iana"},"video/encaprtp":{source:"iana"},"video/ffv1":{source:"iana"},"video/flexfec":{source:"iana"},"video/h261":{source:"iana",extensions:["h261"]},"video/h263":{source:"iana",extensions:["h263"]},"video/h263-1998":{source:"iana"},"video/h263-2000":{source:"iana"},"video/h264":{source:"iana",extensions:["h264"]},"video/h264-rcdo":{source:"iana"},"video/h264-svc":{source:"iana"},"video/h265":{source:"iana"},"video/iso.segment":{source:"iana",extensions:["m4s"]},"video/jpeg":{source:"iana",extensions:["jpgv"]},"video/jpeg2000":{source:"iana"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/jxsv":{source:"iana"},"video/mj2":{source:"iana",extensions:["mj2","mjp2"]},"video/mp1s":{source:"iana"},"video/mp2p":{source:"iana"},"video/mp2t":{source:"iana",extensions:["ts"]},"video/mp4":{source:"iana",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"iana"},"video/mpeg":{source:"iana",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"iana"},"video/mpv":{source:"iana"},"video/nv":{source:"iana"},"video/ogg":{source:"iana",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"iana"},"video/pointer":{source:"iana"},"video/quicktime":{source:"iana",compressible:!1,extensions:["qt","mov"]},"video/raptorfec":{source:"iana"},"video/raw":{source:"iana"},"video/rtp-enc-aescm128":{source:"iana"},"video/rtploopback":{source:"iana"},"video/rtx":{source:"iana"},"video/scip":{source:"iana"},"video/smpte291":{source:"iana"},"video/smpte292m":{source:"iana"},"video/ulpfec":{source:"iana"},"video/vc1":{source:"iana"},"video/vc2":{source:"iana"},"video/vnd.cctv":{source:"iana"},"video/vnd.dece.hd":{source:"iana",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"iana",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"iana"},"video/vnd.dece.pd":{source:"iana",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"iana",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"iana",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"iana"},"video/vnd.directv.mpeg-tts":{source:"iana"},"video/vnd.dlna.mpeg-tts":{source:"iana"},"video/vnd.dvb.file":{source:"iana",extensions:["dvb"]},"video/vnd.fvt":{source:"iana",extensions:["fvt"]},"video/vnd.hns.video":{source:"iana"},"video/vnd.iptvforum.1dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.1dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.2dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.2dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.ttsavc":{source:"iana"},"video/vnd.iptvforum.ttsmpeg2":{source:"iana"},"video/vnd.motorola.video":{source:"iana"},"video/vnd.motorola.videop":{source:"iana"},"video/vnd.mpegurl":{source:"iana",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"iana",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"iana"},"video/vnd.nokia.mp4vr":{source:"iana"},"video/vnd.nokia.videovoip":{source:"iana"},"video/vnd.objectvideo":{source:"iana"},"video/vnd.radgamettools.bink":{source:"iana"},"video/vnd.radgamettools.smacker":{source:"iana"},"video/vnd.sealed.mpeg1":{source:"iana"},"video/vnd.sealed.mpeg4":{source:"iana"},"video/vnd.sealed.swf":{source:"iana"},"video/vnd.sealedmedia.softseal.mov":{source:"iana"},"video/vnd.uvvu.mp4":{source:"iana",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"iana",extensions:["viv"]},"video/vnd.youtube.yt":{source:"iana"},"video/vp8":{source:"iana"},"video/vp9":{source:"iana"},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}}});var TA=O((gV,_A)=>{_A.exports=IA()});var PA=O((xV,FA)=>{"use strict";var kA=TA();FA.exports=function(){var e={};return Object.keys(kA).forEach(function(t){var a=kA[t];a.extensions&&a.extensions.length>0&&a.extensions.forEach(function(n){e[n]=t})}),e}});var BA=O((yV,RA)=>{"use strict";var OA=Pd();RA.exports=function(e,t){if(!OA(e))throw new TypeError("Expected a plain object");t=t||{},typeof t=="function"&&(t={compare:t});var a=t.deep,n=[],i=[],r=function(o){var s=n.indexOf(o);if(s!==-1)return i[s];var l={},u=Object.keys(o).sort(t.compare);n.push(o),i.push(l);for(var c=0;c<u.length;c++){var f=u[c],p=o[f];l[f]=a&&OA(p)?r(p):p}return l};return r(e)}});var jA=O((wV,wf)=>{"use strict";var NA=BA();wf.exports.desc=function(e){return NA(e,function(t,a){return a.length-t.length})};wf.exports.asc=function(e){return NA(e,function(t,a){return t.length-a.length})}});var DA=O((EV,Ef)=>{"use strict";var LA=PA(),MA=jA();Ef.exports=e=>{let t=MA.desc(LA()),a=Object.keys(t).filter(n=>e.endsWith(n));return a.length===0?[]:a.map(n=>({ext:n,mime:t[n]}))};Ef.exports.mime=e=>{let t=MA.desc(LA()),a=Object.keys(t).filter(n=>t[n]===e);return a.length===0?[]:a.map(n=>({ext:n,mime:t[n]}))}});var WA=O((SV,HA)=>{"use strict";var Zj=require("fs"),Br=require("path"),{URL:qj}=require("url"),Xj=iy(),zA=ly(),GA=zE(),$j=YE(),Yj=nS(),Kj=JC(),Qj=gA(),e9=af(),t9=EA(),a9=AA(),n9=DA(),i9=e9(Zj),r9=e=>Br.basename(new qj(e.requestUrl).pathname),o9=e=>{let t=e.headers["content-type"];if(!t)return null;let a=n9.mime(t);return a.length!==1?null:a[0].ext},s9=(e,t)=>{let a=e.headers["content-disposition"];if(a){let i=Xj.parse(a);if(i.parameters&&i.parameters.filename)return i.parameters.filename}let n=r9(e);if(!Br.extname(n)){let i=(a9(t)||{}).ext||o9(e);i&&(n=`${n}.${i}`)}return n};HA.exports=(e,t,a)=>{typeof t=="object"&&(a=t,t=null),a=Object.assign({encoding:null,rejectUnauthorized:process.env.npm_config_strict_ssl!=="false"},a);let n=Kj.stream(e,a),i=t9(n,"response").then(r=>{let o=a.encoding===null?"buffer":a.encoding;return Promise.all([Yj(n,{encoding:o}),r])}).then(r=>{let[o,s]=r;if(!t)return a.extract&&zA(o)?GA(o,a):o;let l=a.filename||$j(s9(s,o)),u=Br.join(t,l);return a.extract&&zA(o)?GA(o,Br.dirname(u),a):Qj(Br.dirname(u)).then(()=>i9.writeFile(u,o)).then(()=>o)});return n.then=i.then.bind(i),n.catch=i.catch.bind(i),n}});var n2=O((RV,a2)=>{var $A=Mc(),{join:p9,delimiter:d9,sep:ZA,posix:qA}=require("path"),XA=process.platform==="win32",YA=new RegExp(`[${qA.sep}${ZA===qA.sep?"":ZA}]`.replace(/(\\)/g,"\\$1")),f9=new RegExp(`^\\.${YA.source}`),KA=e=>Object.assign(new Error(`not found: ${e}`),{code:"ENOENT"}),QA=(e,{path:t=process.env.PATH,pathExt:a=process.env.PATHEXT,delimiter:n=d9})=>{let i=e.match(YA)?[""]:[...XA?[process.cwd()]:[],...(t||"").split(n)];if(XA){let r=a||[".EXE",".CMD",".BAT",".COM"].join(n),o=r.split(n).reduce((s,l)=>(s.push(l),s.push(l.toLowerCase()),s),[]);return e.includes(".")&&o[0]!==""&&o.unshift(""),{pathEnv:i,pathExt:o,pathExtExe:r}}return{pathEnv:i,pathExt:[""]}},e2=(e,t)=>{let a=/^".*"$/.test(e)?e.slice(1,-1):e;return(!a&&f9.test(t)?t.slice(0,2):"")+p9(a,t)},t2=async(e,t={})=>{let{pathEnv:a,pathExt:n,pathExtExe:i}=QA(e,t),r=[];for(let o of a){let s=e2(o,e);for(let l of n){let u=s+l;if(await $A(u,{pathExt:i,ignoreErrors:!0})){if(!t.all)return u;r.push(u)}}}if(t.all&&r.length)return r;if(t.nothrow)return null;throw KA(e)},m9=(e,t={})=>{let{pathEnv:a,pathExt:n,pathExtExe:i}=QA(e,t),r=[];for(let o of a){let s=e2(o,e);for(let l of n){let u=s+l;if($A.sync(u,{pathExt:i,ignoreErrors:!0})){if(!t.all)return u;r.push(u)}}}if(t.all&&r.length)return r;if(t.nothrow)return null;throw KA(e)};a2.exports=t2;t2.sync=m9});var k2=O(ke=>{"use strict";var it=typeof Symbol=="function"&&Symbol.for,zf=it?Symbol.for("react.element"):60103,Gf=it?Symbol.for("react.portal"):60106,ac=it?Symbol.for("react.fragment"):60107,nc=it?Symbol.for("react.strict_mode"):60108,ic=it?Symbol.for("react.profiler"):60114,rc=it?Symbol.for("react.provider"):60109,oc=it?Symbol.for("react.context"):60110,Hf=it?Symbol.for("react.async_mode"):60111,sc=it?Symbol.for("react.concurrent_mode"):60111,lc=it?Symbol.for("react.forward_ref"):60112,cc=it?Symbol.for("react.suspense"):60113,A9=it?Symbol.for("react.suspense_list"):60120,uc=it?Symbol.for("react.memo"):60115,pc=it?Symbol.for("react.lazy"):60116,I9=it?Symbol.for("react.block"):60121,_9=it?Symbol.for("react.fundamental"):60117,T9=it?Symbol.for("react.responder"):60118,k9=it?Symbol.for("react.scope"):60119;function Rt(e){if(typeof e=="object"&&e!==null){var t=e.$$typeof;switch(t){case zf:switch(e=e.type,e){case Hf:case sc:case ac:case ic:case nc:case cc:return e;default:switch(e=e&&e.$$typeof,e){case oc:case lc:case pc:case uc:case rc:return e;default:return t}}case Gf:return t}}}function T2(e){return Rt(e)===sc}ke.AsyncMode=Hf;ke.ConcurrentMode=sc;ke.ContextConsumer=oc;ke.ContextProvider=rc;ke.Element=zf;ke.ForwardRef=lc;ke.Fragment=ac;ke.Lazy=pc;ke.Memo=uc;ke.Portal=Gf;ke.Profiler=ic;ke.StrictMode=nc;ke.Suspense=cc;ke.isAsyncMode=function(e){return T2(e)||Rt(e)===Hf};ke.isConcurrentMode=T2;ke.isContextConsumer=function(e){return Rt(e)===oc};ke.isContextProvider=function(e){return Rt(e)===rc};ke.isElement=function(e){return typeof e=="object"&&e!==null&&e.$$typeof===zf};ke.isForwardRef=function(e){return Rt(e)===lc};ke.isFragment=function(e){return Rt(e)===ac};ke.isLazy=function(e){return Rt(e)===pc};ke.isMemo=function(e){return Rt(e)===uc};ke.isPortal=function(e){return Rt(e)===Gf};ke.isProfiler=function(e){return Rt(e)===ic};ke.isStrictMode=function(e){return Rt(e)===nc};ke.isSuspense=function(e){return Rt(e)===cc};ke.isValidElementType=function(e){return typeof e=="string"||typeof e=="function"||e===ac||e===sc||e===ic||e===nc||e===cc||e===A9||typeof e=="object"&&e!==null&&(e.$$typeof===pc||e.$$typeof===uc||e.$$typeof===rc||e.$$typeof===oc||e.$$typeof===lc||e.$$typeof===_9||e.$$typeof===T9||e.$$typeof===k9||e.$$typeof===I9)};ke.typeOf=Rt});var P2=O((FU,F2)=>{"use strict";F2.exports=k2()});var M2=O((PU,L2)=>{"use strict";var Wf=P2(),F9={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},P9={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},O9={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},N2={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},Vf={};Vf[Wf.ForwardRef]=O9;Vf[Wf.Memo]=N2;function O2(e){return Wf.isMemo(e)?N2:Vf[e.$$typeof]||F9}var R9=Object.defineProperty,B9=Object.getOwnPropertyNames,R2=Object.getOwnPropertySymbols,N9=Object.getOwnPropertyDescriptor,j9=Object.getPrototypeOf,B2=Object.prototype;function j2(e,t,a){if(typeof t!="string"){if(B2){var n=j9(t);n&&n!==B2&&j2(e,n,a)}var i=B9(t);R2&&(i=i.concat(R2(t)));for(var r=O2(e),o=O2(t),s=0;s<i.length;++s){var l=i[s];if(!P9[l]&&!(a&&a[l])&&!(o&&o[l])&&!(r&&r[l])){var u=N9(t,l);try{R9(e,l,u)}catch(c){}}}}return e}L2.exports=j2});var mD={};rT(mD,{default:()=>Bc});module.exports=oT(mD);var En=require("obsidian");var fo=_e(require("node:process"),1),uv=_e(sv(),1);function ou({onlyFirst:e=!1}={}){let t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(t,e?void 0:"g")}var ek=ou();function su(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(ek,"")}var po=_e(require("node:process"),1),lv=require("node:os"),tk=()=>{let{env:e}=po.default;if(po.default.platform==="win32")return e.COMSPEC||"cmd.exe";try{let{shell:t}=(0,lv.userInfo)();if(t)return t}catch(t){}return po.default.platform==="darwin"?e.SHELL||"/bin/zsh":e.SHELL||"/bin/sh"},ak=tk(),cv=ak;var nk=["-ilc",'echo -n "_SHELL_ENV_DELIMITER_"; env; echo -n "_SHELL_ENV_DELIMITER_"; exit'],ik={DISABLE_AUTO_UPDATE:"true"},rk=e=>{e=e.split("_SHELL_ENV_DELIMITER_")[1];let t={};for(let a of su(e).split(` -`).filter(n=>!!n)){let[n,...i]=a.split("=");t[n]=i.join("=")}return t};async function pv(e){if(fo.default.platform==="win32")return fo.default.env;try{let{stdout:t}=await(0,uv.default)(e||cv,nk,{env:ik});return rk(t)}catch(t){if(e)throw t;return fo.default.env}}async function dv(){let{PATH:e}=await pv();return e}var Ba=require("obsidian");var Ni,Q,bv,ok,$a,fv,gv,lu,xv,mo={},yv=[],sk=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,bo=Array.isArray;function ma(e,t){for(var a in t)e[a]=t[a];return e}function wv(e){var t=e.parentNode;t&&t.removeChild(e)}function se(e,t,a){var n,i,r,o={};for(r in t)r=="key"?n=t[r]:r=="ref"?i=t[r]:o[r]=t[r];if(arguments.length>2&&(o.children=arguments.length>3?Ni.call(arguments,2):a),typeof e=="function"&&e.defaultProps!=null)for(r in e.defaultProps)o[r]===void 0&&(o[r]=e.defaultProps[r]);return Ri(e,o,n,i,null)}function Ri(e,t,a,n,i){var r={type:e,props:t,key:a,ref:n,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:i==null?++bv:i};return i==null&&Q.vnode!=null&&Q.vnode(r),r}function uu(){return{current:null}}function rt(e){return e.children}function Ct(e,t){this.props=e,this.context=t}function Bi(e,t){if(t==null)return e.__?Bi(e.__,e.__.__k.indexOf(e)+1):null;for(var a;t<e.__k.length;t++)if((a=e.__k[t])!=null&&a.__e!=null)return a.__e;return typeof e.type=="function"?Bi(e):null}function Ev(e){var t,a;if((e=e.__)!=null&&e.__c!=null){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if((a=e.__k[t])!=null&&a.__e!=null){e.__e=e.__c.base=a.__e;break}return Ev(e)}}function cu(e){(!e.__d&&(e.__d=!0)&&$a.push(e)&&!ho.__r++||fv!==Q.debounceRendering)&&((fv=Q.debounceRendering)||gv)(ho)}function ho(){var e,t,a,n,i,r,o,s;for($a.sort(lu);e=$a.shift();)e.__d&&(t=$a.length,n=void 0,i=void 0,o=(r=(a=e).__v).__e,(s=a.__P)&&(n=[],(i=ma({},r)).__v=r.__v+1,pu(s,r,i,a.__n,s.ownerSVGElement!==void 0,r.__h!=null?[o]:null,n,o==null?Bi(r):o,r.__h),_v(n,r),r.__e!=o&&Ev(r)),$a.length>t&&$a.sort(lu));ho.__r=0}function Sv(e,t,a,n,i,r,o,s,l,u){var c,f,p,b,d,h,m,v=n&&n.__k||yv,x=v.length;for(a.__k=[],c=0;c<t.length;c++)if((b=a.__k[c]=(b=t[c])==null||typeof b=="boolean"||typeof b=="function"?null:typeof b=="string"||typeof b=="number"||typeof b=="bigint"?Ri(null,b,null,null,b):bo(b)?Ri(rt,{children:b},null,null,null):b.__b>0?Ri(b.type,b.props,b.key,b.ref?b.ref:null,b.__v):b)!=null){if(b.__=a,b.__b=a.__b+1,(p=v[c])===null||p&&b.key==p.key&&b.type===p.type)v[c]=void 0;else for(f=0;f<x;f++){if((p=v[f])&&b.key==p.key&&b.type===p.type){v[f]=void 0;break}p=null}pu(e,b,p=p||mo,i,r,o,s,l,u),d=b.__e,(f=b.ref)&&p.ref!=f&&(m||(m=[]),p.ref&&m.push(p.ref,null,b),m.push(f,b.__c||d,b)),d!=null?(h==null&&(h=d),typeof b.type=="function"&&b.__k===p.__k?b.__d=l=Cv(b,l,e):l=Av(e,b,p,v,d,l),typeof a.type=="function"&&(a.__d=l)):l&&p.__e==l&&l.parentNode!=e&&(l=Bi(p))}for(a.__e=h,c=x;c--;)v[c]!=null&&(typeof a.type=="function"&&v[c].__e!=null&&v[c].__e==a.__d&&(a.__d=Iv(n).nextSibling),kv(v[c],v[c]));if(m)for(c=0;c<m.length;c++)Tv(m[c],m[++c],m[++c])}function Cv(e,t,a){for(var n,i=e.__k,r=0;i&&r<i.length;r++)(n=i[r])&&(n.__=e,t=typeof n.type=="function"?Cv(n,t,a):Av(a,n,n,i,n.__e,t));return t}function Yt(e,t){return t=t||[],e==null||typeof e=="boolean"||(bo(e)?e.some(function(a){Yt(a,t)}):t.push(e)),t}function Av(e,t,a,n,i,r){var o,s,l;if(t.__d!==void 0)o=t.__d,t.__d=void 0;else if(a==null||i!=r||i.parentNode==null)e:if(r==null||r.parentNode!==e)e.appendChild(i),o=null;else{for(s=r,l=0;(s=s.nextSibling)&&l<n.length;l+=1)if(s==i)break e;e.insertBefore(i,r),o=r}return o!==void 0?o:i.nextSibling}function Iv(e){var t,a,n;if(e.type==null||typeof e.type=="string")return e.__e;if(e.__k){for(t=e.__k.length-1;t>=0;t--)if((a=e.__k[t])&&(n=Iv(a)))return n}return null}function lk(e,t,a,n,i){var r;for(r in a)r==="children"||r==="key"||r in t||vo(e,r,null,a[r],n);for(r in t)i&&typeof t[r]!="function"||r==="children"||r==="key"||r==="value"||r==="checked"||a[r]===t[r]||vo(e,r,t[r],a[r],n)}function mv(e,t,a){t[0]==="-"?e.setProperty(t,a==null?"":a):e[t]=a==null?"":typeof a!="number"||sk.test(t)?a:a+"px"}function vo(e,t,a,n,i){var r;e:if(t==="style")if(typeof a=="string")e.style.cssText=a;else{if(typeof n=="string"&&(e.style.cssText=n=""),n)for(t in n)a&&t in a||mv(e.style,t,"");if(a)for(t in a)n&&a[t]===n[t]||mv(e.style,t,a[t])}else if(t[0]==="o"&&t[1]==="n")r=t!==(t=t.replace(/Capture$/,"")),t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+r]=a,a?n||e.addEventListener(t,r?vv:hv,r):e.removeEventListener(t,r?vv:hv,r);else if(t!=="dangerouslySetInnerHTML"){if(i)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!=="width"&&t!=="height"&&t!=="href"&&t!=="list"&&t!=="form"&&t!=="tabIndex"&&t!=="download"&&t!=="rowSpan"&&t!=="colSpan"&&t in e)try{e[t]=a==null?"":a;break e}catch(o){}typeof a=="function"||(a==null||a===!1&&t[4]!=="-"?e.removeAttribute(t):e.setAttribute(t,a))}}function hv(e){return this.l[e.type+!1](Q.event?Q.event(e):e)}function vv(e){return this.l[e.type+!0](Q.event?Q.event(e):e)}function pu(e,t,a,n,i,r,o,s,l){var u,c,f,p,b,d,h,m,v,x,E,g,w,C,y,S=t.type;if(t.constructor!==void 0)return null;a.__h!=null&&(l=a.__h,s=t.__e=a.__e,t.__h=null,r=[s]),(u=Q.__b)&&u(t);try{e:if(typeof S=="function"){if(m=t.props,v=(u=S.contextType)&&n[u.__c],x=u?v?v.props.value:u.__:n,a.__c?h=(c=t.__c=a.__c).__=c.__E:("prototype"in S&&S.prototype.render?t.__c=c=new S(m,x):(t.__c=c=new Ct(m,x),c.constructor=S,c.render=uk),v&&v.sub(c),c.props=m,c.state||(c.state={}),c.context=x,c.__n=n,f=c.__d=!0,c.__h=[],c._sb=[]),c.__s==null&&(c.__s=c.state),S.getDerivedStateFromProps!=null&&(c.__s==c.state&&(c.__s=ma({},c.__s)),ma(c.__s,S.getDerivedStateFromProps(m,c.__s))),p=c.props,b=c.state,c.__v=t,f)S.getDerivedStateFromProps==null&&c.componentWillMount!=null&&c.componentWillMount(),c.componentDidMount!=null&&c.__h.push(c.componentDidMount);else{if(S.getDerivedStateFromProps==null&&m!==p&&c.componentWillReceiveProps!=null&&c.componentWillReceiveProps(m,x),!c.__e&&c.shouldComponentUpdate!=null&&c.shouldComponentUpdate(m,c.__s,x)===!1||t.__v===a.__v){for(t.__v!==a.__v&&(c.props=m,c.state=c.__s,c.__d=!1),c.__e=!1,t.__e=a.__e,t.__k=a.__k,t.__k.forEach(function(I){I&&(I.__=t)}),E=0;E<c._sb.length;E++)c.__h.push(c._sb[E]);c._sb=[],c.__h.length&&o.push(c);break e}c.componentWillUpdate!=null&&c.componentWillUpdate(m,c.__s,x),c.componentDidUpdate!=null&&c.__h.push(function(){c.componentDidUpdate(p,b,d)})}if(c.context=x,c.props=m,c.__P=e,g=Q.__r,w=0,"prototype"in S&&S.prototype.render){for(c.state=c.__s,c.__d=!1,g&&g(t),u=c.render(c.props,c.state,c.context),C=0;C<c._sb.length;C++)c.__h.push(c._sb[C]);c._sb=[]}else do c.__d=!1,g&&g(t),u=c.render(c.props,c.state,c.context),c.state=c.__s;while(c.__d&&++w<25);c.state=c.__s,c.getChildContext!=null&&(n=ma(ma({},n),c.getChildContext())),f||c.getSnapshotBeforeUpdate==null||(d=c.getSnapshotBeforeUpdate(p,b)),Sv(e,bo(y=u!=null&&u.type===rt&&u.key==null?u.props.children:u)?y:[y],t,a,n,i,r,o,s,l),c.base=t.__e,t.__h=null,c.__h.length&&o.push(c),h&&(c.__E=c.__=null),c.__e=!1}else r==null&&t.__v===a.__v?(t.__k=a.__k,t.__e=a.__e):t.__e=ck(a.__e,t,a,n,i,r,o,l);(u=Q.diffed)&&u(t)}catch(I){t.__v=null,(l||r!=null)&&(t.__e=s,t.__h=!!l,r[r.indexOf(s)]=null),Q.__e(I,t,a)}}function _v(e,t){Q.__c&&Q.__c(t,e),e.some(function(a){try{e=a.__h,a.__h=[],e.some(function(n){n.call(a)})}catch(n){Q.__e(n,a.__v)}})}function ck(e,t,a,n,i,r,o,s){var l,u,c,f=a.props,p=t.props,b=t.type,d=0;if(b==="svg"&&(i=!0),r!=null){for(;d<r.length;d++)if((l=r[d])&&"setAttribute"in l==!!b&&(b?l.localName===b:l.nodeType===3)){e=l,r[d]=null;break}}if(e==null){if(b===null)return document.createTextNode(p);e=i?document.createElementNS("http://www.w3.org/2000/svg",b):document.createElement(b,p.is&&p),r=null,s=!1}if(b===null)f===p||s&&e.data===p||(e.data=p);else{if(r=r&&Ni.call(e.childNodes),u=(f=a.props||mo).dangerouslySetInnerHTML,c=p.dangerouslySetInnerHTML,!s){if(r!=null)for(f={},d=0;d<e.attributes.length;d++)f[e.attributes[d].name]=e.attributes[d].value;(c||u)&&(c&&(u&&c.__html==u.__html||c.__html===e.innerHTML)||(e.innerHTML=c&&c.__html||""))}if(lk(e,p,f,i,s),c)t.__k=[];else if(Sv(e,bo(d=t.props.children)?d:[d],t,a,n,i&&b!=="foreignObject",r,o,r?r[0]:a.__k&&Bi(a,0),s),r!=null)for(d=r.length;d--;)r[d]!=null&&wv(r[d]);s||("value"in p&&(d=p.value)!==void 0&&(d!==e.value||b==="progress"&&!d||b==="option"&&d!==f.value)&&vo(e,"value",d,f.value,!1),"checked"in p&&(d=p.checked)!==void 0&&d!==e.checked&&vo(e,"checked",d,f.checked,!1))}return e}function Tv(e,t,a){try{typeof e=="function"?e(t):e.current=t}catch(n){Q.__e(n,a)}}function kv(e,t,a){var n,i;if(Q.unmount&&Q.unmount(e),(n=e.ref)&&(n.current&&n.current!==e.__e||Tv(n,null,t)),(n=e.__c)!=null){if(n.componentWillUnmount)try{n.componentWillUnmount()}catch(r){Q.__e(r,t)}n.base=n.__P=null,e.__c=void 0}if(n=e.__k)for(i=0;i<n.length;i++)n[i]&&kv(n[i],t,a||typeof e.type!="function");a||e.__e==null||wv(e.__e),e.__=e.__e=e.__d=void 0}function uk(e,t,a){return this.constructor(e,a)}function On(e,t,a){var n,i,r;Q.__&&Q.__(e,t),i=(n=typeof a=="function")?null:a&&a.__k||t.__k,r=[],pu(t,e=(!n&&a||t).__k=se(rt,null,[e]),i||mo,mo,t.ownerSVGElement!==void 0,!n&&a?[a]:i?null:t.firstChild?Ni.call(t.childNodes):null,r,!n&&a?a:i?i.__e:t.firstChild,n),_v(r,e)}function du(e,t){On(e,t,du)}function Fv(e,t,a){var n,i,r,o,s=ma({},e.props);for(r in e.type&&e.type.defaultProps&&(o=e.type.defaultProps),t)r=="key"?n=t[r]:r=="ref"?i=t[r]:s[r]=t[r]===void 0&&o!==void 0?o[r]:t[r];return arguments.length>2&&(s.children=arguments.length>3?Ni.call(arguments,2):a),Ri(e.type,s,n||e.key,i||e.ref,null)}function _a(e,t){var a={__c:t="__cC"+xv++,__:e,Consumer:function(n,i){return n.children(i)},Provider:function(n){var i,r;return this.getChildContext||(i=[],(r={})[t]=this,this.getChildContext=function(){return r},this.shouldComponentUpdate=function(o){this.props.value!==o.value&&i.some(function(s){s.__e=!0,cu(s)})},this.sub=function(o){i.push(o);var s=o.componentWillUnmount;o.componentWillUnmount=function(){i.splice(i.indexOf(o),1),s&&s.call(o)}}),n.children}};return a.Provider.__=a.Consumer.contextType=a}Ni=yv.slice,Q={__e:function(e,t,a,n){for(var i,r,o;t=t.__;)if((i=t.__c)&&!i.__)try{if((r=i.constructor)&&r.getDerivedStateFromError!=null&&(i.setState(r.getDerivedStateFromError(e)),o=i.__d),i.componentDidCatch!=null&&(i.componentDidCatch(e,n||{}),o=i.__d),o)return i.__E=i}catch(s){e=s}throw e}},bv=0,ok=function(e){return e!=null&&e.constructor===void 0},Ct.prototype.setState=function(e,t){var a;a=this.__s!=null&&this.__s!==this.state?this.__s:this.__s=ma({},this.state),typeof e=="function"&&(e=e(ma({},a),this.props)),e&&ma(a,e),e!=null&&this.__v&&(t&&this._sb.push(t),cu(this))},Ct.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),cu(this))},Ct.prototype.render=rt,$a=[],gv=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,lu=function(e,t){return e.__v.__b-t.__v.__b},ho.__r=0,xv=0;var Ta,je,fu,Pv,Rn=0,Mv=[],go=[],Ov=Q.__b,Rv=Q.__r,Bv=Q.diffed,Nv=Q.__c,jv=Q.unmount;function Bn(e,t){Q.__h&&Q.__h(je,e,Rn||t),Rn=0;var a=je.__H||(je.__H={__:[],__h:[]});return e>=a.__.length&&a.__.push({__V:go}),a.__[e]}function Re(e){return Rn=1,hu(Hv,e)}function hu(e,t,a){var n=Bn(Ta++,2);if(n.t=e,!n.__c&&(n.__=[a?a(t):Hv(void 0,t),function(s){var l=n.__N?n.__N[0]:n.__[0],u=n.t(l,s);l!==u&&(n.__N=[u,n.__[1]],n.__c.setState({}))}],n.__c=je,!je.u)){var i=function(s,l,u){if(!n.__c.__H)return!0;var c=n.__c.__H.__.filter(function(p){return p.__c});if(c.every(function(p){return!p.__N}))return!r||r.call(this,s,l,u);var f=!1;return c.forEach(function(p){if(p.__N){var b=p.__[0];p.__=p.__N,p.__N=void 0,b!==p.__[0]&&(f=!0)}}),!(!f&&n.__c.props===s)&&(!r||r.call(this,s,l,u))};je.u=!0;var r=je.shouldComponentUpdate,o=je.componentWillUpdate;je.componentWillUpdate=function(s,l,u){if(this.__e){var c=r;r=void 0,i(s,l,u),r=c}o&&o.call(this,s,l,u)},je.shouldComponentUpdate=i}return n.__N||n.__}function ha(e,t){var a=Bn(Ta++,3);!Q.__s&&vu(a.__H,t)&&(a.__=e,a.i=t,je.__H.__h.push(a))}function ka(e,t){var a=Bn(Ta++,4);!Q.__s&&vu(a.__H,t)&&(a.__=e,a.i=t,je.__h.push(a))}function ot(e){return Rn=5,At(function(){return{current:e}},[])}function Dv(e,t,a){Rn=6,ka(function(){return typeof e=="function"?(e(t()),function(){return e(null)}):e?(e.current=t(),function(){return e.current=null}):void 0},a==null?a:a.concat(e))}function At(e,t){var a=Bn(Ta++,7);return vu(a.__H,t)?(a.__V=e(),a.i=t,a.__h=e,a.__V):a.__}function Fe(e,t){return Rn=8,At(function(){return e},t)}function Kt(e){var t=je.context[e.__c],a=Bn(Ta++,9);return a.c=e,t?(a.__==null&&(a.__=!0,t.sub(je)),t.props.value):e.__}function zv(e,t){Q.useDebugValue&&Q.useDebugValue(t?t(e):e)}function Gv(){var e=Bn(Ta++,11);if(!e.__){for(var t=je.__v;t!==null&&!t.__m&&t.__!==null;)t=t.__;var a=t.__m||(t.__m=[0,0]);e.__="P"+a[0]+"-"+a[1]++}return e.__}function pk(){for(var e;e=Mv.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(xo),e.__H.__h.forEach(mu),e.__H.__h=[]}catch(t){e.__H.__h=[],Q.__e(t,e.__v)}}Q.__b=function(e){je=null,Ov&&Ov(e)},Q.__r=function(e){Rv&&Rv(e),Ta=0;var t=(je=e.__c).__H;t&&(fu===je?(t.__h=[],je.__h=[],t.__.forEach(function(a){a.__N&&(a.__=a.__N),a.__V=go,a.__N=a.i=void 0})):(t.__h.forEach(xo),t.__h.forEach(mu),t.__h=[],Ta=0)),fu=je},Q.diffed=function(e){Bv&&Bv(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(Mv.push(t)!==1&&Pv===Q.requestAnimationFrame||((Pv=Q.requestAnimationFrame)||dk)(pk)),t.__H.__.forEach(function(a){a.i&&(a.__H=a.i),a.__V!==go&&(a.__=a.__V),a.i=void 0,a.__V=go})),fu=je=null},Q.__c=function(e,t){t.some(function(a){try{a.__h.forEach(xo),a.__h=a.__h.filter(function(n){return!n.__||mu(n)})}catch(n){t.some(function(i){i.__h&&(i.__h=[])}),t=[],Q.__e(n,a.__v)}}),Nv&&Nv(e,t)},Q.unmount=function(e){jv&&jv(e);var t,a=e.__c;a&&a.__H&&(a.__H.__.forEach(function(n){try{xo(n)}catch(i){t=i}}),a.__H=void 0,t&&Q.__e(t,a.__v))};var Lv=typeof requestAnimationFrame=="function";function dk(e){var t,a=function(){clearTimeout(n),Lv&&cancelAnimationFrame(t),setTimeout(e)},n=setTimeout(a,100);Lv&&(t=requestAnimationFrame(a))}function xo(e){var t=je,a=e.__c;typeof a=="function"&&(e.__c=void 0,a()),je=t}function mu(e){var t=je;e.__c=e.__(),je=t}function vu(e,t){return!e||e.length!==t.length||t.some(function(a,n){return a!==e[n]})}function Hv(e,t){return typeof t=="function"?t(e):t}function Yv(e,t){for(var a in t)e[a]=t[a];return e}function gu(e,t){for(var a in e)if(a!=="__source"&&!(a in t))return!0;for(var n in t)if(n!=="__source"&&e[n]!==t[n])return!0;return!1}function bu(e,t){return e===t&&(e!==0||1/e==1/t)||e!=e&&t!=t}function xu(e){this.props=e}function fk(e,t){function a(i){var r=this.props.ref,o=r==i.ref;return!o&&r&&(r.call?r(null):r.current=null),t?!t(this.props,i)||!o:gu(this.props,i)}function n(i){return this.shouldComponentUpdate=a,se(e,i)}return n.displayName="Memo("+(e.displayName||e.name)+")",n.prototype.isReactComponent=!0,n.__f=!0,n}(xu.prototype=new Ct).isPureReactComponent=!0,xu.prototype.shouldComponentUpdate=function(e,t){return gu(this.props,e)||gu(this.state,t)};var Wv=Q.__b;Q.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),Wv&&Wv(e)};var mk=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function Nn(e){function t(a){var n=Yv({},a);return delete n.ref,e(n,a.ref||null)}return t.$$typeof=mk,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t}var Vv=function(e,t){return e==null?null:Yt(Yt(e).map(t))},hk={map:Vv,forEach:Vv,count:function(e){return e?Yt(e).length:0},only:function(e){var t=Yt(e);if(t.length!==1)throw"Children.only";return t[0]},toArray:Yt},vk=Q.__e;Q.__e=function(e,t,a,n){if(e.then){for(var i,r=t;r=r.__;)if((i=r.__c)&&i.__c)return t.__e==null&&(t.__e=a.__e,t.__k=a.__k),i.__c(e,t)}vk(e,t,a,n)};var Uv=Q.unmount;function Kv(e,t,a){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach(function(n){typeof n.__c=="function"&&n.__c()}),e.__c.__H=null),(e=Yv({},e)).__c!=null&&(e.__c.__P===a&&(e.__c.__P=t),e.__c=null),e.__k=e.__k&&e.__k.map(function(n){return Kv(n,t,a)})),e}function Qv(e,t,a){return e&&(e.__v=null,e.__k=e.__k&&e.__k.map(function(n){return Qv(n,t,a)}),e.__c&&e.__c.__P===t&&(e.__e&&a.insertBefore(e.__e,e.__d),e.__c.__e=!0,e.__c.__P=a)),e}function yo(){this.__u=0,this.t=null,this.__b=null}function e0(e){var t=e.__.__c;return t&&t.__a&&t.__a(e)}function bk(e){var t,a,n;function i(r){if(t||(t=e()).then(function(o){a=o.default||o},function(o){n=o}),n)throw n;if(!a)throw t;return se(a,r)}return i.displayName="Lazy",i.__f=!0,i}function ji(){this.u=null,this.o=null}Q.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&e.__h===!0&&(e.type=null),Uv&&Uv(e)},(yo.prototype=new Ct).__c=function(e,t){var a=t.__c,n=this;n.t==null&&(n.t=[]),n.t.push(a);var i=e0(n.__v),r=!1,o=function(){r||(r=!0,a.__R=null,i?i(s):s())};a.__R=o;var s=function(){if(!--n.__u){if(n.state.__a){var u=n.state.__a;n.__v.__k[0]=Qv(u,u.__c.__P,u.__c.__O)}var c;for(n.setState({__a:n.__b=null});c=n.t.pop();)c.forceUpdate()}},l=t.__h===!0;n.__u++||l||n.setState({__a:n.__b=n.__v.__k[0]}),e.then(o,o)},yo.prototype.componentWillUnmount=function(){this.t=[]},yo.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var a=document.createElement("div"),n=this.__v.__k[0].__c;this.__v.__k[0]=Kv(this.__b,a,n.__O=n.__P)}this.__b=null}var i=t.__a&&se(rt,null,e.fallback);return i&&(i.__h=null),[se(rt,null,t.__a?null:e.children),i]};var Jv=function(e,t,a){if(++a[1]===a[0]&&e.o.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.o.size))for(a=e.u;a;){for(;a.length>3;)a.pop()();if(a[1]<a[0])break;e.u=a=a[2]}};function gk(e){return this.getChildContext=function(){return e.context},e.children}function xk(e){var t=this,a=e.i;t.componentWillUnmount=function(){On(null,t.l),t.l=null,t.i=null},t.i&&t.i!==a&&t.componentWillUnmount(),e.__v?(t.l||(t.i=a,t.l={nodeType:1,parentNode:a,childNodes:[],appendChild:function(n){this.childNodes.push(n),t.i.appendChild(n)},insertBefore:function(n,i){this.childNodes.push(n),t.i.appendChild(n)},removeChild:function(n){this.childNodes.splice(this.childNodes.indexOf(n)>>>1,1),t.i.removeChild(n)}}),On(se(gk,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}function yu(e,t){var a=se(xk,{__v:e,i:t});return a.containerInfo=t,a}(ji.prototype=new Ct).__a=function(e){var t=this,a=e0(t.__v),n=t.o.get(e);return n[0]++,function(i){var r=function(){t.props.revealOrder?(n.push(i),Jv(t,e,n)):i()};a?a(r):r()}},ji.prototype.render=function(e){this.u=null,this.o=new Map;var t=Yt(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var a=t.length;a--;)this.o.set(t[a],this.u=[1,0,this.u]);return e.children},ji.prototype.componentDidUpdate=ji.prototype.componentDidMount=function(){var e=this;this.o.forEach(function(t,a){Jv(e,a,t)})};var t0=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.element")||60103,yk=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,wk=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,Ek=/[A-Z0-9]/g,Sk=typeof document!="undefined",Ck=function(e){return(typeof Symbol!="undefined"&&typeof Symbol()=="symbol"?/fil|che|rad/:/fil|che|ra/).test(e)};function Ak(e,t,a){return t.__k==null&&(t.textContent=""),On(e,t),typeof a=="function"&&a(),e?e.__c:null}function Ik(e,t,a){return du(e,t),typeof a=="function"&&a(),e?e.__c:null}Ct.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(Ct.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var Zv=Q.event;function _k(){}function Tk(){return this.cancelBubble}function kk(){return this.defaultPrevented}Q.event=function(e){return Zv&&(e=Zv(e)),e.persist=_k,e.isPropagationStopped=Tk,e.isDefaultPrevented=kk,e.nativeEvent=e};var wu,Fk={enumerable:!1,configurable:!0,get:function(){return this.class}},qv=Q.vnode;Q.vnode=function(e){typeof e.type=="string"&&function(t){var a=t.props,n=t.type,i={};for(var r in a){var o=a[r];if(!(r==="value"&&"defaultValue"in a&&o==null||Sk&&r==="children"&&n==="noscript"||r==="class"||r==="className")){var s=r.toLowerCase();r==="defaultValue"&&"value"in a&&a.value==null?r="value":r==="download"&&o===!0?o="":s==="ondoubleclick"?r="ondblclick":s!=="onchange"||n!=="input"&&n!=="textarea"||Ck(a.type)?s==="onfocus"?r="onfocusin":s==="onblur"?r="onfocusout":wk.test(r)?r=s:n.indexOf("-")===-1&&yk.test(r)?r=r.replace(Ek,"-$&").toLowerCase():o===null&&(o=void 0):s=r="oninput",s==="oninput"&&i[r=s]&&(r="oninputCapture"),i[r]=o}}n=="select"&&i.multiple&&Array.isArray(i.value)&&(i.value=Yt(a.children).forEach(function(l){l.props.selected=i.value.indexOf(l.props.value)!=-1})),n=="select"&&i.defaultValue!=null&&(i.value=Yt(a.children).forEach(function(l){l.props.selected=i.multiple?i.defaultValue.indexOf(l.props.value)!=-1:i.defaultValue==l.props.value})),a.class&&!a.className?(i.class=a.class,Object.defineProperty(i,"className",Fk)):(a.className&&!a.class||a.class&&a.className)&&(i.class=i.className=a.className),t.props=i}(e),e.$$typeof=t0,qv&&qv(e)};var Xv=Q.__r;Q.__r=function(e){Xv&&Xv(e),wu=e.__c};var $v=Q.diffed;Q.diffed=function(e){$v&&$v(e);var t=e.props,a=e.__e;a!=null&&e.type==="textarea"&&"value"in t&&t.value!==a.value&&(a.value=t.value==null?"":t.value),wu=null};var Pk={ReactCurrentDispatcher:{current:{readContext:function(e){return wu.__n[e.__c].props.value}}}};function Ok(e){return se.bind(null,e)}function a0(e){return!!e&&e.$$typeof===t0}function Rk(e){return a0(e)?Fv.apply(null,arguments):e}function Bk(e){return!!e.__k&&(On(null,e),!0)}function Nk(e){return e&&(e.base||e.nodeType===1&&e)||null}var jk=function(e,t){return e(t)},Lk=function(e,t){return e(t)},Mk=rt;function n0(e){e()}function Dk(e){return e}function zk(){return[!1,n0]}var wo=ka;function Gk(e,t){var a=t(),n=Re({h:{__:a,v:t}}),i=n[0].h,r=n[1];return ka(function(){i.__=a,i.v=t,bu(i.__,t())||r({h:i})},[e,a,t]),ha(function(){return bu(i.__,i.v())||r({h:i}),e(function(){bu(i.__,i.v())||r({h:i})})},[e]),a}var A={useState:Re,useId:Gv,useReducer:hu,useEffect:ha,useLayoutEffect:ka,useInsertionEffect:wo,useTransition:zk,useDeferredValue:Dk,useSyncExternalStore:Gk,startTransition:n0,useRef:ot,useImperativeHandle:Dv,useMemo:At,useCallback:Fe,useContext:Kt,useDebugValue:zv,version:"17.0.2",Children:hk,render:Ak,hydrate:Ik,unmountComponentAtNode:Bk,createPortal:yu,createElement:se,createContext:_a,createFactory:Ok,cloneElement:Rk,createRef:uu,Fragment:rt,isValidElement:a0,findDOMNode:Nk,Component:Ct,PureComponent:xu,memo:fk,forwardRef:Nn,flushSync:Lk,unstable_batchedUpdates:jk,StrictMode:Mk,Suspense:yo,SuspenseList:ji,lazy:bk,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:Pk};function W(){return W=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},W.apply(this,arguments)}function Eu(e){let t=Object.prototype.toString.call(e).slice(8,-1);return t==="Object"&&typeof e[Symbol.iterator]=="function"?"Iterable":t==="Custom"&&e.constructor!==Object&&e instanceof Object?"Object":t}function Mi(e){let{styling:t,arrowStyle:a="single",expanded:n,nodeType:i,onClick:r}=e;return A.createElement("div",W({},t("arrowContainer",a),{onClick:r}),A.createElement("div",t(["arrow","arrowSign"],i,n,a),"\u25B6",a==="double"&&A.createElement("div",t(["arrowSign","arrowSignInner"]),"\u25B6")))}function Hk(e,t){return e==="Object"?Object.keys(t).length:e==="Array"?t.length:1/0}function Wk(e){return typeof e.set=="function"}function Vk(e,t,a){let n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:1/0,r;if(e==="Object"){let o=Object.getOwnPropertyNames(t);a&&o.sort(a===!0?void 0:a),o=o.slice(n,i+1),r={entries:o.map(s=>({key:s,value:t[s]}))}}else if(e==="Array")r={entries:t.slice(n,i+1).map((o,s)=>({key:s+n,value:o}))};else{let o=0,s=[],l=!0,u=Wk(t);for(let c of t){if(o>i){l=!1;break}n<=o&&(u&&Array.isArray(c)?typeof c[0]=="string"||typeof c[0]=="number"?s.push({key:c[0],value:c[1]}):s.push({key:`[entry ${o}]`,value:{"[key]":c[0],"[value]":c[1]}}):s.push({key:o,value:c})),o++}r={hasMore:!l,entries:s}}return r}function Su(e,t,a){let n=[];for(;t-e>a*a;)a=a*a;for(let i=e;i<=t;i+=a)n.push({from:i,to:Math.min(t,i+a-1)});return n}function Cu(e,t,a,n){let i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,r=arguments.length>5&&arguments[5]!==void 0?arguments[5]:1/0,o=Vk.bind(null,e,t,a);if(!n)return o().entries;let s=r<1/0,l=Math.min(r-i,Hk(e,t));if(e!=="Iterable"){if(l<=n||n<7)return o(i,r).entries}else if(l<=n&&!s)return o(i,r).entries;let u;if(e==="Iterable"){let{hasMore:c,entries:f}=o(i,i+n-1);u=c?[...f,...Su(i+n,i+2*n-1,n)]:f}else u=s?Su(i,r,n):[...o(0,n-5).entries,...Su(n-4,l-5,n),...o(l-4,l-1).entries];return u}function Au(e){let{styling:t,from:a,to:n,renderChildNodes:i,nodeType:r}=e,[o,s]=Re(!1),l=Fe(()=>{s(!o)},[o]);return o?A.createElement("div",t("itemRange",o),i(e,a,n)):A.createElement("div",W({},t("itemRange",o),{onClick:l}),A.createElement(Mi,{nodeType:r,styling:t,expanded:!1,onClick:l,arrowStyle:"double"}),`${a} ... ${n}`)}function Uk(e){return e.to!==void 0}function i0(e,t,a){let{nodeType:n,data:i,collectionLimit:r,circularCache:o,keyPath:s,postprocessValue:l,sortObjectKeys:u}=e,c=[];return Cu(n,i,u,r,t,a).forEach(f=>{if(Uk(f))c.push(A.createElement(Au,W({},e,{key:`ItemRange--${f.from}-${f.to}`,from:f.from,to:f.to,renderChildNodes:i0})));else{let{key:p,value:b}=f,d=o.indexOf(b)!==-1;c.push(A.createElement(Di,W({},e,{postprocessValue:l,collectionLimit:r,key:`Node--${p}`,keyPath:[p,...s],value:l(b),circularCache:[...o,b],isCircular:d,hideRoot:!1})))}}),c}function Ya(e){let{circularCache:t=[],collectionLimit:a,createItemString:n,data:i,expandable:r,getItemString:o,hideRoot:s,isCircular:l,keyPath:u,labelRenderer:c,level:f=0,nodeType:p,nodeTypeIndicator:b,shouldExpandNodeInitially:d,styling:h}=e,[m,v]=Re(l?!1:d(u,i,f)),x=Fe(()=>{r&&v(!m)},[r,m]),E=m||s&&f===0?i0({...e,circularCache:t,level:f+1}):null,g=A.createElement("span",h("nestedNodeItemType",m),b),w=o(p,i,g,n(i,a),u),C=[u,p,m,r];return s?A.createElement("li",h("rootNode",...C),A.createElement("ul",h("rootNodeChildren",...C),E)):A.createElement("li",h("nestedNode",...C),r&&A.createElement(Mi,{styling:h,nodeType:p,expanded:m,onClick:x}),A.createElement("label",W({},h(["label","nestedNodeLabel"],...C),{onClick:x}),c(...C)),A.createElement("span",W({},h("nestedNodeItemString",...C),{onClick:x}),w),A.createElement("ul",h("nestedNodeChildren",...C),E))}function Jk(e){let t=Object.getOwnPropertyNames(e).length;return`${t} ${t!==1?"keys":"key"}`}function Iu(e){let{data:t,...a}=e;return A.createElement(Ya,W({},a,{data:t,nodeType:"Object",nodeTypeIndicator:a.nodeType==="Error"?"Error()":"{}",createItemString:Jk,expandable:Object.getOwnPropertyNames(t).length>0}))}function Zk(e){return`${e.length} ${e.length!==1?"items":"item"}`}function _u(e){let{data:t,...a}=e;return A.createElement(Ya,W({},a,{data:t,nodeType:"Array",nodeTypeIndicator:"[]",createItemString:Zk,expandable:t.length>0}))}function qk(e,t){let a=0,n=!1;if(Number.isSafeInteger(e.size))a=e.size;else for(let i of e){if(t&&a+1>t){n=!0;break}a+=1}return`${n?">":""}${a} ${a!==1?"entries":"entry"}`}function Tu(e){return A.createElement(Ya,W({},e,{nodeType:"Iterable",nodeTypeIndicator:"()",createItemString:qk,expandable:!0}))}function Ut(e){let{nodeType:t,styling:a,labelRenderer:n,keyPath:i,valueRenderer:r,value:o,valueGetter:s=l=>l}=e;return A.createElement("li",a("value",t,i),A.createElement("label",a(["label","valueLabel"],t,i),n(i,t,!1,!1)),A.createElement("span",a("valueText",t,i),r(s(o),o,...i)))}function Di(e){let{getItemString:t,keyPath:a,labelRenderer:n,styling:i,value:r,valueRenderer:o,isCustomNode:s,...l}=e,u=s(r)?"Custom":Eu(r),c={getItemString:t,key:a[0],keyPath:a,labelRenderer:n,nodeType:u,styling:i,value:r,valueRenderer:o},f={...l,...c,data:r,isCustomNode:s};switch(u){case"Object":case"Error":case"WeakMap":case"WeakSet":return A.createElement(Iu,f);case"Array":return A.createElement(_u,f);case"Iterable":case"Map":case"Set":return A.createElement(Tu,f);case"String":return A.createElement(Ut,W({},c,{valueGetter:p=>`"${p}"`}));case"Number":return A.createElement(Ut,c);case"Boolean":return A.createElement(Ut,W({},c,{valueGetter:p=>p?"true":"false"}));case"Date":return A.createElement(Ut,W({},c,{valueGetter:p=>p.toISOString()}));case"Null":return A.createElement(Ut,W({},c,{valueGetter:()=>"null"}));case"Undefined":return A.createElement(Ut,W({},c,{valueGetter:()=>"undefined"}));case"Function":case"Symbol":return A.createElement(Ut,W({},c,{valueGetter:p=>p.toString()}));case"Custom":return A.createElement(Ut,c);default:return A.createElement(Ut,W({},c,{valueGetter:()=>`<${u}>`}))}}function ft(e){"@babel/helpers - typeof";return ft=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ft(e)}function ku(e,t){if(ft(e)!=="object"||e===null)return e;var a=e[Symbol.toPrimitive];if(a!==void 0){var n=a.call(e,t||"default");if(ft(n)!=="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function zi(e){var t=ku(e,"string");return ft(t)==="symbol"?t:String(t)}function jt(e,t,a){return t=zi(t),t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function Fu(e){if(Array.isArray(e))return e}function Pu(e,t){var a=e==null?null:typeof Symbol!="undefined"&&e[Symbol.iterator]||e["@@iterator"];if(a!=null){var n,i,r,o,s=[],l=!0,u=!1;try{if(r=(a=a.call(e)).next,t===0){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=r.call(a)).done)&&(s.push(n.value),s.length!==t);l=!0);}catch(c){u=!0,i=c}finally{try{if(!l&&a.return!=null&&(o=a.return(),Object(o)!==o))return}finally{if(u)throw i}}return s}}function jn(e,t){(t==null||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a<t;a++)n[a]=e[a];return n}function Gi(e,t){if(e){if(typeof e=="string")return jn(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);if(a==="Object"&&e.constructor&&(a=e.constructor.name),a==="Map"||a==="Set")return Array.from(e);if(a==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a))return jn(e,t)}}function Ou(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Le(e,t){return Fu(e)||Pu(e,t)||Gi(e,t)||Ou()}var Uu=_e(Ab()),Hu=_e(Jb()),Wu=_e(pg());function dg(e){var t=e[0],a=e[1],n=e[2],i,r,o;return i=t*1+a*0+n*1.13983,r=t*1+a*-.39465+n*-.5806,o=t*1+a*2.02311+n*0,i=Math.min(Math.max(0,i),1),r=Math.min(Math.max(0,r),1),o=Math.min(Math.max(0,o),1),[i*255,r*255,o*255]}function fg(e){var t=e[0]/255,a=e[1]/255,n=e[2]/255,i=t*.299+a*.587+n*.114,r=t*-.14713+a*-.28886+n*.436,o=t*.615+a*-.51499+n*-.10001;return[i,r,o]}function mg(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),a.push.apply(a,n)}return a}function It(e){for(var t=1;t<arguments.length;t++){var a=arguments[t]!=null?arguments[t]:{};t%2?mg(Object(a),!0).forEach(function(n){jt(e,n,a[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):mg(Object(a)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(a,n))})}return e}var vg=Uu.default,hg=Object.keys(vg),YF=function(t){return t<.25?1:t<.5?.9-t:1.1-t},KF=function(t){var a=(0,Hu.default)(t),n=fg(a.array()),i=Le(n,3),r=i[0],o=i[1],s=i[2],l=[YF(r),o,s],u=dg(l);return Hu.default.rgb(u).hex()},zn=function(t){return function(a){return{className:[a.className,t.className].filter(Boolean).join(" "),style:It(It({},a.style||{}),t.style||{})}}},QF=function(t,a){if(t===void 0)return a;if(a===void 0)return t;var n=ft(t),i=ft(a);switch(n){case"string":switch(i){case"string":return[a,t].filter(Boolean).join(" ");case"object":return zn({className:t,style:a});case"function":return function(r){for(var o=arguments.length,s=new Array(o>1?o-1:0),l=1;l<o;l++)s[l-1]=arguments[l];return zn({className:t})(a.apply(void 0,[r].concat(s)))}}break;case"object":switch(i){case"string":return zn({className:a,style:t});case"object":return It(It({},a),t);case"function":return function(r){for(var o=arguments.length,s=new Array(o>1?o-1:0),l=1;l<o;l++)s[l-1]=arguments[l];return zn({style:t})(a.apply(void 0,[r].concat(s)))}}break;case"function":switch(i){case"string":return function(r){for(var o=arguments.length,s=new Array(o>1?o-1:0),l=1;l<o;l++)s[l-1]=arguments[l];return t.apply(void 0,[zn(r)({className:a})].concat(s))};case"object":return function(r){for(var o=arguments.length,s=new Array(o>1?o-1:0),l=1;l<o;l++)s[l-1]=arguments[l];return t.apply(void 0,[zn(r)({style:a})].concat(s))};case"function":return function(r){for(var o=arguments.length,s=new Array(o>1?o-1:0),l=1;l<o;l++)s[l-1]=arguments[l];return t.apply(void 0,[a.apply(void 0,[r].concat(s))].concat(s))}}}},eP=function(t,a){var n=Object.keys(a);for(var i in t)n.indexOf(i)===-1&&n.push(i);return n.reduce(function(r,o){return r[o]=QF(t[o],a[o]),r},{})},tP=function(t,a){for(var n=arguments.length,i=new Array(n>2?n-2:0),r=2;r<n;r++)i[r-2]=arguments[r];if(a===null)return t;Array.isArray(a)||(a=[a]);var o=a.map(function(l){return t[l]}).filter(Boolean),s=o.reduce(function(l,u){return typeof u=="string"?l.className=[l.className,u].filter(Boolean).join(" "):ft(u)==="object"?l.style=It(It({},l.style),u):typeof u=="function"&&(l=It(It({},l),u.apply(void 0,[l].concat(i)))),l},{className:"",style:{}});return s.className||delete s.className,Object.keys(s.style).length===0&&delete s.style,s},Vu=function(t){return Object.keys(t).reduce(function(a,n){return a[n]=/^base/.test(n)?KF(t[n]):n==="scheme"?t[n]+":inverted":t[n],a},{})},bg=(0,Wu.default)(function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=t.defaultBase16,i=n===void 0?vg:n,r=t.base16Themes,o=r===void 0?null:r,s=aP(a,o);s&&(a=It(It({},s),a));for(var l=hg.reduce(function(h,m){return h[m]=a[m]||i[m],h},{}),u=Object.keys(a).reduce(function(h,m){return hg.indexOf(m)===-1&&(h[m]=a[m]),h},{}),c=e(l),f=eP(u,c),p=arguments.length,b=new Array(p>3?p-3:0),d=3;d<p;d++)b[d-3]=arguments[d];return(0,Wu.default)(tP,2).apply(void 0,[f].concat(b))},3),gg=function(t){return!!t.extend},aP=function(t,a){if(t&&gg(t)&&t.extend&&(t=t.extend),typeof t=="string"){var n=t.split(":"),i=Le(n,2),r=i[0],o=i[1];a?t=a[r]:t=Uu[r],o==="inverted"&&(t=Vu(t))}return t&&Object.prototype.hasOwnProperty.call(t,"base00")?t:void 0},xg=function(t){return typeof t=="string"?"".concat(t,":inverted"):t&&gg(t)&&t.extend?typeof t.extend=="string"?It(It({},t),{},{extend:"".concat(t.extend,":inverted")}):It(It({},t),{},{extend:Vu(t.extend)}):t&&Vu(t)};var yg={scheme:"solarized",author:"ethan schoonover (http://ethanschoonover.com/solarized)",base00:"#002b36",base01:"#073642",base02:"#586e75",base03:"#657b83",base04:"#839496",base05:"#93a1a1",base06:"#eee8d5",base07:"#fdf6e3",base08:"#dc322f",base09:"#cb4b16",base0A:"#b58900",base0B:"#859900",base0C:"#2aa198",base0D:"#268bd2",base0E:"#6c71c4",base0F:"#d33682"};var nP=e=>({BACKGROUND_COLOR:e.base00,TEXT_COLOR:e.base07,STRING_COLOR:e.base0B,DATE_COLOR:e.base0B,NUMBER_COLOR:e.base09,BOOLEAN_COLOR:e.base09,NULL_COLOR:e.base08,UNDEFINED_COLOR:e.base08,FUNCTION_COLOR:e.base08,SYMBOL_COLOR:e.base08,LABEL_COLOR:e.base0D,ARROW_COLOR:e.base0D,ITEM_STRING_COLOR:e.base0B,ITEM_STRING_EXPANDED_COLOR:e.base03}),iP=e=>({String:e.STRING_COLOR,Date:e.DATE_COLOR,Number:e.NUMBER_COLOR,Boolean:e.BOOLEAN_COLOR,Null:e.NULL_COLOR,Undefined:e.UNDEFINED_COLOR,Function:e.FUNCTION_COLOR,Symbol:e.SYMBOL_COLOR}),rP=e=>{let t=nP(e);return{tree:{border:0,padding:0,marginTop:"0.5em",marginBottom:"0.5em",marginLeft:"0.125em",marginRight:0,listStyle:"none",MozUserSelect:"none",WebkitUserSelect:"none",backgroundColor:t.BACKGROUND_COLOR},value:(a,n,i)=>{let{style:r}=a;return{style:{...r,paddingTop:"0.25em",paddingRight:0,marginLeft:"0.875em",WebkitUserSelect:"text",MozUserSelect:"text",wordWrap:"break-word",paddingLeft:i.length>1?"2.125em":"1.25em",textIndent:"-0.5em",wordBreak:"break-all"}}},label:{display:"inline-block",color:t.LABEL_COLOR},valueLabel:{margin:"0 0.5em 0 0"},valueText:(a,n)=>{let{style:i}=a;return{style:{...i,color:iP(t)[n]}}},itemRange:(a,n)=>({style:{paddingTop:n?0:"0.25em",cursor:"pointer",color:t.LABEL_COLOR}}),arrow:(a,n,i)=>{let{style:r}=a;return{style:{...r,marginLeft:0,transition:"150ms",WebkitTransition:"150ms",MozTransition:"150ms",WebkitTransform:i?"rotateZ(90deg)":"rotateZ(0deg)",MozTransform:i?"rotateZ(90deg)":"rotateZ(0deg)",transform:i?"rotateZ(90deg)":"rotateZ(0deg)",transformOrigin:"45% 50%",WebkitTransformOrigin:"45% 50%",MozTransformOrigin:"45% 50%",position:"relative",lineHeight:"1.1em",fontSize:"0.75em"}}},arrowContainer:(a,n)=>{let{style:i}=a;return{style:{...i,display:"inline-block",paddingRight:"0.5em",paddingLeft:n==="double"?"1em":0,cursor:"pointer"}}},arrowSign:{color:t.ARROW_COLOR},arrowSignInner:{position:"absolute",top:0,left:"-0.4em"},nestedNode:(a,n,i,r,o)=>{let{style:s}=a;return{style:{...s,position:"relative",paddingTop:"0.25em",marginLeft:n.length>1?"0.875em":0,paddingLeft:o?0:"1.125em"}}},rootNode:{padding:0,margin:0},nestedNodeLabel:(a,n,i,r,o)=>{let{style:s}=a;return{style:{...s,margin:0,padding:0,WebkitUserSelect:o?"inherit":"text",MozUserSelect:o?"inherit":"text",cursor:o?"pointer":"default"}}},nestedNodeItemString:(a,n,i,r)=>{let{style:o}=a;return{style:{...o,paddingLeft:"0.5em",cursor:"default",color:r?t.ITEM_STRING_EXPANDED_COLOR:t.ITEM_STRING_COLOR}}},nestedNodeItemType:{marginLeft:"0.3em",marginRight:"0.3em"},nestedNodeChildren:(a,n,i)=>{let{style:r}=a;return{style:{...r,padding:0,margin:0,listStyle:"none",display:i?"block":"none"}}},rootNodeChildren:{padding:0,margin:0,listStyle:"none"}}},oP=bg(rP,{defaultBase16:yg}),wg=oP;var Eg=e=>e,sP=(e,t,a)=>a===0,lP=(e,t,a,n)=>A.createElement("span",null,a," ",n),cP=e=>{let[t]=e;return A.createElement("span",null,t,":")},uP=()=>!1;function Sg(e){let{data:t,theme:a,invertTheme:n,keyPath:i=["root"],labelRenderer:r=cP,valueRenderer:o=Eg,shouldExpandNodeInitially:s=sP,hideRoot:l=!1,getItemString:u=lP,postprocessValue:c=Eg,isCustomNode:f=uP,collectionLimit:p=50,sortObjectKeys:b=!1}=e,d=At(()=>wg(n?xg(a):a),[a,n]);return A.createElement("ul",d("tree"),A.createElement(Di,{keyPath:l?[]:i,value:c(t),isCustomNode:f,styling:d,labelRenderer:r,valueRenderer:o,shouldExpandNodeInitially:s,hideRoot:l,getItemString:u,postprocessValue:c,collectionLimit:p,sortObjectKeys:b}))}var Ra=require("fs"),Be=require("obsidian"),Zt=_e(require("path"));var px=require("node:buffer"),dx=_e(require("node:path"),1),xs=_e(require("node:child_process"),1),Ki=_e(require("node:process"),1),fx=_e(qc(),1);function Ju(e){let t=typeof e=="string"?` +`);return k6(t)};ei.decodePax=function(e){for(var t={};e.length;){for(var a=0;a<e.length&&e[a]!==32;)a++;var n=parseInt(e.slice(0,a).toString(),10);if(!n)return t;var i=e.slice(a+1,n-1).toString(),r=i.indexOf("=");if(r===-1)return t;t[i.slice(0,r)]=i.slice(r+1),e=e.slice(n)}return t};ei.encode=function(e){var t=F6(512),a=e.name,n="";if(e.typeflag===5&&a[a.length-1]!=="/"&&(a+="/"),Buffer.byteLength(a)!==a.length)return null;for(;Buffer.byteLength(a)>100;){var i=a.indexOf("/");if(i===-1)return null;n+=n?"/"+a.slice(0,i):a.slice(0,i),a=a.slice(i+1)}return Buffer.byteLength(a)>100||Buffer.byteLength(n)>155||e.linkname&&Buffer.byteLength(e.linkname)>100?null:(t.write(a),t.write(La(e.mode&B6,6),100),t.write(La(e.uid,6),108),t.write(La(e.gid,6),116),t.write(La(e.size,11),124),t.write(La(e.mtime.getTime()/1e3|0,11),136),t[156]=xw+L6(e.type),e.linkname&&t.write(e.linkname,157),t.write(R6,257),e.uname&&t.write(e.uname,265),e.gname&&t.write(e.gname,297),t.write(La(e.devmajor||0,6),329),t.write(La(e.devminor||0,6),337),n&&t.write(n,345),t.write(La(ww(t),6),148),t)};ei.decode=function(e,t){var a=e[156]===0?0:e[156]-xw,n=Qn(e,0,100,t),i=Ma(e,100,8),r=Ma(e,108,8),o=Ma(e,116,8),s=Ma(e,124,12),l=Ma(e,136,12),u=j6(a),c=e[157]===0?null:Qn(e,157,100,t),f=Qn(e,265,32),p=Qn(e,297,32),b=Ma(e,329,8),d=Ma(e,337,8);e[345]&&(n=Qn(e,345,155,t)+"/"+n),a===0&&n&&n[n.length-1]==="/"&&(a=5);var m=ww(e);if(m===8*32)return null;if(m!==Ma(e,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");return{name:n,mode:i,uid:r,gid:o,size:s,mtime:new Date(1e3*l),type:u,linkname:c,uname:f,gname:p,devmajor:b,devminor:d}}});var Kp=O((wH,Cw)=>{"use strict";Cw.exports=xa;var Ys=ja(),Sw=Object.create(Zn());Sw.inherits=fn();Sw.inherits(xa,Ys);function D6(e,t){var a=this._transformState;a.transforming=!1;var n=a.writecb;if(!n)return this.emit("error",new Error("write callback called multiple times"));a.writechunk=null,a.writecb=null,t!=null&&this.push(t),n(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}function xa(e){if(!(this instanceof xa))return new xa(e);Ys.call(this,e),this._transformState={afterTransform:D6.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,e&&(typeof e.transform=="function"&&(this._transform=e.transform),typeof e.flush=="function"&&(this._flush=e.flush)),this.on("prefinish",z6)}function z6(){var e=this;typeof this._flush=="function"?this._flush(function(t,a){Ew(e,t,a)}):Ew(this,null,null)}xa.prototype.push=function(e,t){return this._transformState.needTransform=!1,Ys.prototype.push.call(this,e,t)};xa.prototype._transform=function(e,t,a){throw new Error("_transform() is not implemented")};xa.prototype._write=function(e,t,a){var n=this._transformState;if(n.writecb=a,n.writechunk=e,n.writeencoding=t,!n.transforming){var i=this._readableState;(n.needTransform||i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}};xa.prototype._read=function(e){var t=this._transformState;t.writechunk!==null&&t.writecb&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0};xa.prototype._destroy=function(e,t){var a=this;Ys.prototype._destroy.call(this,e,function(n){t(n),a.emit("close")})};function Ew(e,t,a){if(t)return e.emit("error",t);if(a!=null&&e.push(a),e._writableState.length)throw new Error("Calling transform done when ws.length != 0");if(e._transformState.transforming)throw new Error("Calling transform done when still transforming");return e.push(null)}});var Tw=O((EH,_w)=>{"use strict";_w.exports=ur;var Aw=Kp(),Iw=Object.create(Zn());Iw.inherits=fn();Iw.inherits(ur,Aw);function ur(e){if(!(this instanceof ur))return new ur(e);Aw.call(this,e)}ur.prototype._transform=function(e,t,a){a(null,e)}});var ti=O((ta,kw)=>{ta=kw.exports=Gp();ta.Stream=ta;ta.Readable=ta;ta.Writable=Vp();ta.Duplex=ja();ta.Transform=Kp();ta.PassThrough=Tw()});var jw=O((SH,Nw)=>{var Pw=require("util"),G6=lw(),H6=uw(),pr=Yp(),Ow=ti().Writable,Rw=ti().PassThrough,Bw=function(){},Fw=function(e){return e&=511,e&&512-e},W6=function(e,t){var a=new Ks(e,t);return a.end(),a},V6=function(e,t){return t.path&&(e.name=t.path),t.linkpath&&(e.linkname=t.linkpath),t.size&&(e.size=parseInt(t.size,10)),e.pax=t,e},Ks=function(e,t){this._parent=e,this.offset=t,Rw.call(this)};Pw.inherits(Ks,Rw);Ks.prototype.destroy=function(e){this._parent.destroy(e)};var ya=function(e){if(!(this instanceof ya))return new ya(e);Ow.call(this,e),e=e||{},this._offset=0,this._buffer=G6(),this._missing=0,this._partial=!1,this._onparse=Bw,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var t=this,a=t._buffer,n=function(){t._continue()},i=function(p){if(t._locked=!1,p)return t.destroy(p);t._stream||n()},r=function(){t._stream=null;var p=Fw(t._header.size);p?t._parse(p,o):t._parse(512,f),t._locked||n()},o=function(){t._buffer.consume(Fw(t._header.size)),t._parse(512,f),n()},s=function(){var p=t._header.size;t._paxGlobal=pr.decodePax(a.slice(0,p)),a.consume(p),r()},l=function(){var p=t._header.size;t._pax=pr.decodePax(a.slice(0,p)),t._paxGlobal&&(t._pax=H6(t._paxGlobal,t._pax)),a.consume(p),r()},u=function(){var p=t._header.size;this._gnuLongPath=pr.decodeLongPath(a.slice(0,p),e.filenameEncoding),a.consume(p),r()},c=function(){var p=t._header.size;this._gnuLongLinkPath=pr.decodeLongPath(a.slice(0,p),e.filenameEncoding),a.consume(p),r()},f=function(){var p=t._offset,b;try{b=t._header=pr.decode(a.slice(0,512),e.filenameEncoding)}catch(d){t.emit("error",d)}if(a.consume(512),!b){t._parse(512,f),n();return}if(b.type==="gnu-long-path"){t._parse(b.size,u),n();return}if(b.type==="gnu-long-link-path"){t._parse(b.size,c),n();return}if(b.type==="pax-global-header"){t._parse(b.size,s),n();return}if(b.type==="pax-header"){t._parse(b.size,l),n();return}if(t._gnuLongPath&&(b.name=t._gnuLongPath,t._gnuLongPath=null),t._gnuLongLinkPath&&(b.linkname=t._gnuLongLinkPath,t._gnuLongLinkPath=null),t._pax&&(t._header=b=V6(b,t._pax),t._pax=null),t._locked=!0,!b.size||b.type==="directory"){t._parse(512,f),t.emit("entry",b,W6(t,p),i);return}t._stream=new Ks(t,p),t.emit("entry",b,t._stream,i),t._parse(b.size,r),n()};this._onheader=f,this._parse(512,f)};Pw.inherits(ya,Ow);ya.prototype.destroy=function(e){this._destroyed||(this._destroyed=!0,e&&this.emit("error",e),this.emit("close"),this._stream&&this._stream.emit("close"))};ya.prototype._parse=function(e,t){this._destroyed||(this._offset+=e,this._missing=e,t===this._onheader&&(this._partial=!1),this._onparse=t)};ya.prototype._continue=function(){if(!this._destroyed){var e=this._cb;this._cb=Bw,this._overflow?this._write(this._overflow,void 0,e):e()}};ya.prototype._write=function(e,t,a){if(!this._destroyed){var n=this._stream,i=this._buffer,r=this._missing;if(e.length&&(this._partial=!0),e.length<r)return this._missing-=e.length,this._overflow=null,n?n.write(e,a):(i.append(e),a());this._cb=a,this._missing=0;var o=null;e.length>r&&(o=e.slice(r),e=e.slice(0,r)),n?n.end(e):i.append(e),this._overflow=o,this._onparse()}};ya.prototype._final=function(e){if(this._partial)return this.destroy(new Error("Unexpected end of data"));e()};Nw.exports=ya});var Mw=O((CH,Lw)=>{Lw.exports=require("constants")});var Gw=O((AH,zw)=>{zw.exports=Dw;function Dw(e,t){if(e&&t)return Dw(e)(t);if(typeof e!="function")throw new TypeError("need wrapper function");return Object.keys(e).forEach(function(n){a[n]=e[n]}),a;function a(){for(var n=new Array(arguments.length),i=0;i<n.length;i++)n[i]=arguments[i];var r=e.apply(this,n),o=n[n.length-1];return typeof r=="function"&&r!==o&&Object.keys(o).forEach(function(s){r[s]=o[s]}),r}}});var ed=O((IH,Qp)=>{var Hw=Gw();Qp.exports=Hw(Qs);Qp.exports.strict=Hw(Ww);Qs.proto=Qs(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return Qs(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return Ww(this)},configurable:!0})});function Qs(e){var t=function(){return t.called?t.value:(t.called=!0,t.value=e.apply(this,arguments))};return t.called=!1,t}function Ww(e){var t=function(){if(t.called)throw new Error(t.onceError);return t.called=!0,t.value=e.apply(this,arguments)},a=e.name||"Function wrapped with `once`";return t.onceError=a+" shouldn't be called more than once",t.called=!1,t}});var td=O((_H,Uw)=>{var U6=ed(),J6=function(){},Z6=function(e){return e.setHeader&&typeof e.abort=="function"},q6=function(e){return e.stdio&&Array.isArray(e.stdio)&&e.stdio.length===3},Vw=function(e,t,a){if(typeof t=="function")return Vw(e,null,t);t||(t={}),a=U6(a||J6);var n=e._writableState,i=e._readableState,r=t.readable||t.readable!==!1&&e.readable,o=t.writable||t.writable!==!1&&e.writable,s=!1,l=function(){e.writable||u()},u=function(){o=!1,r||a.call(e)},c=function(){r=!1,o||a.call(e)},f=function(h){a.call(e,h?new Error("exited with error code: "+h):null)},p=function(h){a.call(e,h)},b=function(){process.nextTick(d)},d=function(){if(!s){if(r&&!(i&&i.ended&&!i.destroyed))return a.call(e,new Error("premature close"));if(o&&!(n&&n.ended&&!n.destroyed))return a.call(e,new Error("premature close"))}},m=function(){e.req.on("finish",u)};return Z6(e)?(e.on("complete",u),e.on("abort",b),e.req?m():e.on("request",m)):o&&!n&&(e.on("end",l),e.on("close",l)),q6(e)&&e.on("exit",f),e.on("end",c),e.on("finish",u),t.error!==!1&&e.on("error",p),e.on("close",b),function(){s=!0,e.removeListener("complete",u),e.removeListener("abort",b),e.removeListener("request",m),e.req&&e.req.removeListener("finish",u),e.removeListener("end",l),e.removeListener("close",l),e.removeListener("finish",u),e.removeListener("exit",f),e.removeListener("end",c),e.removeListener("error",p),e.removeListener("close",b)}};Uw.exports=Vw});var $w=O((TH,Xw)=>{var ai=Mw(),Jw=td(),tl=require("util"),X6=Xp(),$6=qp(),Zw=ti().Readable,ni=ti().Writable,Y6=require("string_decoder").StringDecoder,el=Yp(),K6=parseInt("755",8),Q6=parseInt("644",8),qw=X6(1024),nd=function(){},ad=function(e,t){t&=511,t&&e.push(qw.slice(0,512-t))};function eR(e){switch(e&ai.S_IFMT){case ai.S_IFBLK:return"block-device";case ai.S_IFCHR:return"character-device";case ai.S_IFDIR:return"directory";case ai.S_IFIFO:return"fifo";case ai.S_IFLNK:return"symlink"}return"file"}var al=function(e){ni.call(this),this.written=0,this._to=e,this._destroyed=!1};tl.inherits(al,ni);al.prototype._write=function(e,t,a){if(this.written+=e.length,this._to.push(e))return a();this._to._drain=a};al.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var nl=function(){ni.call(this),this.linkname="",this._decoder=new Y6("utf-8"),this._destroyed=!1};tl.inherits(nl,ni);nl.prototype._write=function(e,t,a){this.linkname+=this._decoder.write(e),a()};nl.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var dr=function(){ni.call(this),this._destroyed=!1};tl.inherits(dr,ni);dr.prototype._write=function(e,t,a){a(new Error("No body allowed for this entry"))};dr.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var aa=function(e){if(!(this instanceof aa))return new aa(e);Zw.call(this,e),this._drain=nd,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};tl.inherits(aa,Zw);aa.prototype.entry=function(e,t,a){if(this._stream)throw new Error("already piping an entry");if(!(this._finalized||this._destroyed)){typeof t=="function"&&(a=t,t=null),a||(a=nd);var n=this;if((!e.size||e.type==="symlink")&&(e.size=0),e.type||(e.type=eR(e.mode)),e.mode||(e.mode=e.type==="directory"?K6:Q6),e.uid||(e.uid=0),e.gid||(e.gid=0),e.mtime||(e.mtime=new Date),typeof t=="string"&&(t=$6(t)),Buffer.isBuffer(t))return e.size=t.length,this._encode(e),this.push(t),ad(n,e.size),process.nextTick(a),new dr;if(e.type==="symlink"&&!e.linkname){var i=new nl;return Jw(i,function(o){if(o)return n.destroy(),a(o);e.linkname=i.linkname,n._encode(e),a()}),i}if(this._encode(e),e.type!=="file"&&e.type!=="contiguous-file")return process.nextTick(a),new dr;var r=new al(this);return this._stream=r,Jw(r,function(o){if(n._stream=null,o)return n.destroy(),a(o);if(r.written!==e.size)return n.destroy(),a(new Error("size mismatch"));ad(n,e.size),n._finalizing&&n.finalize(),a()}),r}};aa.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(qw),this.push(null))};aa.prototype.destroy=function(e){this._destroyed||(this._destroyed=!0,e&&this.emit("error",e),this.emit("close"),this._stream&&this._stream.destroy&&this._stream.destroy())};aa.prototype._encode=function(e){if(!e.pax){var t=el.encode(e);if(t){this.push(t);return}}this._encodePax(e)};aa.prototype._encodePax=function(e){var t=el.encodePax({name:e.name,linkname:e.linkname,pax:e.pax}),a={name:"PaxHeader",mode:e.mode,uid:e.uid,gid:e.gid,size:t.length,mtime:e.mtime,type:"pax-header",linkname:e.linkname&&"PaxHeader",uname:e.uname,gname:e.gname,devmajor:e.devmajor,devminor:e.devminor};this.push(el.encode(a)),this.push(t),ad(this,t.length),a.size=e.size,a.type=e.type,this.push(el.encode(a))};aa.prototype._read=function(e){var t=this._drain;this._drain=nd,t()};Xw.exports=aa});var Yw=O(id=>{id.extract=jw();id.pack=$w()});var il=O((FH,Qw)=>{"use strict";var Kw=Sy(),tR=Ds(),aR=Yw();Qw.exports=()=>e=>{if(!Buffer.isBuffer(e)&&!tR(e))return Promise.reject(new TypeError(`Expected a Buffer or Stream, got ${typeof e}`));if(Buffer.isBuffer(e)&&(!Kw(e)||Kw(e).ext!=="tar"))return Promise.resolve([]);let t=aR.extract(),a=[];t.on("entry",(i,r,o)=>{let s=[];r.on("data",l=>s.push(l)),r.on("end",()=>{let l={data:Buffer.concat(s),mode:i.mode,mtime:i.mtime,path:i.name,type:i.type};(i.type==="symlink"||i.type==="link")&&(l.linkname=i.linkname),a.push(l),o()})});let n=new Promise((i,r)=>{Buffer.isBuffer(e)||e.on("error",r),t.on("finish",()=>i(a)),t.on("error",r)});return t.then=n.then.bind(n),t.catch=n.catch.bind(n),Buffer.isBuffer(e)?t.end(e):e.pipe(t),t}});var t1=O((PH,e1)=>{"use strict";var ii=e=>Array.from(e).map(t=>t.charCodeAt(0)),nR=ii("META-INF/mozilla.rsa"),iR=ii("[Content_Types].xml"),rR=ii("_rels/.rels");e1.exports=e=>{let t=new Uint8Array(e);if(!(t&&t.length>1))return null;let a=(n,i)=>{i=Object.assign({offset:0},i);for(let r=0;r<n.length;r++)if(i.mask){if(n[r]!==(i.mask[r]&t[r+i.offset]))return!1}else if(n[r]!==t[r+i.offset])return!1;return!0};if(a([255,216,255]))return{ext:"jpg",mime:"image/jpeg"};if(a([137,80,78,71,13,10,26,10]))return{ext:"png",mime:"image/png"};if(a([71,73,70]))return{ext:"gif",mime:"image/gif"};if(a([87,69,66,80],{offset:8}))return{ext:"webp",mime:"image/webp"};if(a([70,76,73,70]))return{ext:"flif",mime:"image/flif"};if((a([73,73,42,0])||a([77,77,0,42]))&&a([67,82],{offset:8}))return{ext:"cr2",mime:"image/x-canon-cr2"};if(a([73,73,42,0])||a([77,77,0,42]))return{ext:"tif",mime:"image/tiff"};if(a([66,77]))return{ext:"bmp",mime:"image/bmp"};if(a([73,73,188]))return{ext:"jxr",mime:"image/vnd.ms-photo"};if(a([56,66,80,83]))return{ext:"psd",mime:"image/vnd.adobe.photoshop"};if(a([80,75,3,4])){if(a([109,105,109,101,116,121,112,101,97,112,112,108,105,99,97,116,105,111,110,47,101,112,117,98,43,122,105,112],{offset:30}))return{ext:"epub",mime:"application/epub+zip"};if(a(nR,{offset:30}))return{ext:"xpi",mime:"application/x-xpinstall"};if(a(iR,{offset:30})||a(rR,{offset:30})){let n=t.subarray(4,2004),i=o=>o.findIndex((s,l,u)=>u[l]===80&&u[l+1]===75&&u[l+2]===3&&u[l+3]===4),r=i(n);if(r!==-1){let o=t.subarray(r+8,r+8+1e3),s=i(o);if(s!==-1){let l=8+r+s+30;if(a(ii("word/"),{offset:l}))return{ext:"docx",mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"};if(a(ii("ppt/"),{offset:l}))return{ext:"pptx",mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation"};if(a(ii("xl/"),{offset:l}))return{ext:"xlsx",mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}}}}}if(a([80,75])&&(t[2]===3||t[2]===5||t[2]===7)&&(t[3]===4||t[3]===6||t[3]===8))return{ext:"zip",mime:"application/zip"};if(a([117,115,116,97,114],{offset:257}))return{ext:"tar",mime:"application/x-tar"};if(a([82,97,114,33,26,7])&&(t[6]===0||t[6]===1))return{ext:"rar",mime:"application/x-rar-compressed"};if(a([31,139,8]))return{ext:"gz",mime:"application/gzip"};if(a([66,90,104]))return{ext:"bz2",mime:"application/x-bzip2"};if(a([55,122,188,175,39,28]))return{ext:"7z",mime:"application/x-7z-compressed"};if(a([120,1]))return{ext:"dmg",mime:"application/x-apple-diskimage"};if(a([51,103,112,53])||a([0,0,0])&&a([102,116,121,112],{offset:4})&&(a([109,112,52,49],{offset:8})||a([109,112,52,50],{offset:8})||a([105,115,111,109],{offset:8})||a([105,115,111,50],{offset:8})||a([109,109,112,52],{offset:8})||a([77,52,86],{offset:8})||a([100,97,115,104],{offset:8})))return{ext:"mp4",mime:"video/mp4"};if(a([77,84,104,100]))return{ext:"mid",mime:"audio/midi"};if(a([26,69,223,163])){let n=t.subarray(4,4100),i=n.findIndex((r,o,s)=>s[o]===66&&s[o+1]===130);if(i!==-1){let r=i+3,o=s=>Array.from(s).every((l,u)=>n[r+u]===l.charCodeAt(0));if(o("matroska"))return{ext:"mkv",mime:"video/x-matroska"};if(o("webm"))return{ext:"webm",mime:"video/webm"}}}if(a([0,0,0,20,102,116,121,112,113,116,32,32])||a([102,114,101,101],{offset:4})||a([102,116,121,112,113,116,32,32],{offset:4})||a([109,100,97,116],{offset:4})||a([119,105,100,101],{offset:4}))return{ext:"mov",mime:"video/quicktime"};if(a([82,73,70,70])&&a([65,86,73],{offset:8}))return{ext:"avi",mime:"video/x-msvideo"};if(a([48,38,178,117,142,102,207,17,166,217]))return{ext:"wmv",mime:"video/x-ms-wmv"};if(a([0,0,1,186]))return{ext:"mpg",mime:"video/mpeg"};for(let n=0;n<2&&n<t.length-16;n++)if(a([73,68,51],{offset:n})||a([255,226],{offset:n,mask:[255,226]}))return{ext:"mp3",mime:"audio/mpeg"};return a([102,116,121,112,77,52,65],{offset:4})||a([77,52,65,32])?{ext:"m4a",mime:"audio/m4a"}:a([79,112,117,115,72,101,97,100],{offset:28})?{ext:"opus",mime:"audio/opus"}:a([79,103,103,83])?{ext:"ogg",mime:"audio/ogg"}:a([102,76,97,67])?{ext:"flac",mime:"audio/x-flac"}:a([82,73,70,70])&&a([87,65,86,69],{offset:8})?{ext:"wav",mime:"audio/x-wav"}:a([35,33,65,77,82,10])?{ext:"amr",mime:"audio/amr"}:a([37,80,68,70])?{ext:"pdf",mime:"application/pdf"}:a([77,90])?{ext:"exe",mime:"application/x-msdownload"}:(t[0]===67||t[0]===70)&&a([87,83],{offset:1})?{ext:"swf",mime:"application/x-shockwave-flash"}:a([123,92,114,116,102])?{ext:"rtf",mime:"application/rtf"}:a([0,97,115,109])?{ext:"wasm",mime:"application/wasm"}:a([119,79,70,70])&&(a([0,1,0,0],{offset:4})||a([79,84,84,79],{offset:4}))?{ext:"woff",mime:"font/woff"}:a([119,79,70,50])&&(a([0,1,0,0],{offset:4})||a([79,84,84,79],{offset:4}))?{ext:"woff2",mime:"font/woff2"}:a([76,80],{offset:34})&&(a([0,0,1],{offset:8})||a([1,0,2],{offset:8})||a([2,0,2],{offset:8}))?{ext:"eot",mime:"application/octet-stream"}:a([0,1,0,0,0])?{ext:"ttf",mime:"font/ttf"}:a([79,84,84,79,0])?{ext:"otf",mime:"font/otf"}:a([0,0,1,0])?{ext:"ico",mime:"image/x-icon"}:a([70,76,86,1])?{ext:"flv",mime:"video/x-flv"}:a([37,33])?{ext:"ps",mime:"application/postscript"}:a([253,55,122,88,90,0])?{ext:"xz",mime:"application/x-xz"}:a([83,81,76,105])?{ext:"sqlite",mime:"application/x-sqlite3"}:a([78,69,83,26])?{ext:"nes",mime:"application/x-nintendo-nes-rom"}:a([67,114,50,52])?{ext:"crx",mime:"application/x-google-chrome-extension"}:a([77,83,67,70])||a([73,83,99,40])?{ext:"cab",mime:"application/vnd.ms-cab-compressed"}:a([33,60,97,114,99,104,62,10,100,101,98,105,97,110,45,98,105,110,97,114,121])?{ext:"deb",mime:"application/x-deb"}:a([33,60,97,114,99,104,62])?{ext:"ar",mime:"application/x-unix-archive"}:a([237,171,238,219])?{ext:"rpm",mime:"application/x-rpm"}:a([31,160])||a([31,157])?{ext:"Z",mime:"application/x-compress"}:a([76,90,73,80])?{ext:"lz",mime:"application/x-lzip"}:a([208,207,17,224,161,177,26,225])?{ext:"msi",mime:"application/x-msi"}:a([6,14,43,52,2,5,1,1,13,1,2,1,1,2])?{ext:"mxf",mime:"application/mxf"}:a([71],{offset:4})&&(a([71],{offset:192})||a([71],{offset:196}))?{ext:"mts",mime:"video/mp2t"}:a([66,76,69,78,68,69,82])?{ext:"blend",mime:"application/x-blender"}:a([66,80,71,251])?{ext:"bpg",mime:"image/bpg"}:null}});var i1=O((OH,n1)=>{var a1=[0,1,3,7,15,31,63,127,255],fr=function(e){this.stream=e,this.bitOffset=0,this.curByte=0,this.hasByte=!1};fr.prototype._ensureByte=function(){this.hasByte||(this.curByte=this.stream.readByte(),this.hasByte=!0)};fr.prototype.read=function(e){for(var t=0;e>0;){this._ensureByte();var a=8-this.bitOffset;if(e>=a)t<<=a,t|=a1[a]&this.curByte,this.hasByte=!1,this.bitOffset=0,e-=a;else{t<<=e;var n=a-e;t|=(this.curByte&a1[e]<<n)>>n,this.bitOffset+=e,e=0}}return t};fr.prototype.seek=function(e){var t=e%8,a=(e-t)/8;this.bitOffset=t,this.stream.seek(a),this.hasByte=!1};fr.prototype.pi=function(){var e=new Buffer(6),t;for(t=0;t<e.length;t++)e[t]=this.read(8);return e.toString("hex")};n1.exports=fr});var o1=O((RH,r1)=>{var hn=function(){};hn.prototype.readByte=function(){throw new Error("abstract method readByte() not implemented")};hn.prototype.read=function(e,t,a){for(var n=0;n<a;){var i=this.readByte();if(i<0)return n===0?-1:n;e[t++]=i,n++}return n};hn.prototype.seek=function(e){throw new Error("abstract method seek() not implemented")};hn.prototype.writeByte=function(e){throw new Error("abstract method readByte() not implemented")};hn.prototype.write=function(e,t,a){var n;for(n=0;n<a;n++)this.writeByte(e[t++]);return a};hn.prototype.flush=function(){};r1.exports=hn});var l1=O((BH,s1)=>{s1.exports=function(){var e=new Uint32Array([0,79764919,159529838,222504665,319059676,398814059,445009330,507990021,638119352,583659535,797628118,726387553,890018660,835552979,1015980042,944750013,1276238704,1221641927,1167319070,1095957929,1595256236,1540665371,1452775106,1381403509,1780037320,1859660671,1671105958,1733955601,2031960084,2111593891,1889500026,1952343757,2552477408,2632100695,2443283854,2506133561,2334638140,2414271883,2191915858,2254759653,3190512472,3135915759,3081330742,3009969537,2905550212,2850959411,2762807018,2691435357,3560074640,3505614887,3719321342,3648080713,3342211916,3287746299,3467911202,3396681109,4063920168,4143685023,4223187782,4286162673,3779000052,3858754371,3904687514,3967668269,881225847,809987520,1023691545,969234094,662832811,591600412,771767749,717299826,311336399,374308984,453813921,533576470,25881363,88864420,134795389,214552010,2023205639,2086057648,1897238633,1976864222,1804852699,1867694188,1645340341,1724971778,1587496639,1516133128,1461550545,1406951526,1302016099,1230646740,1142491917,1087903418,2896545431,2825181984,2770861561,2716262478,3215044683,3143675388,3055782693,3001194130,2326604591,2389456536,2200899649,2280525302,2578013683,2640855108,2418763421,2498394922,3769900519,3832873040,3912640137,3992402750,4088425275,4151408268,4197601365,4277358050,3334271071,3263032808,3476998961,3422541446,3585640067,3514407732,3694837229,3640369242,1762451694,1842216281,1619975040,1682949687,2047383090,2127137669,1938468188,2001449195,1325665622,1271206113,1183200824,1111960463,1543535498,1489069629,1434599652,1363369299,622672798,568075817,748617968,677256519,907627842,853037301,1067152940,995781531,51762726,131386257,177728840,240578815,269590778,349224269,429104020,491947555,4046411278,4126034873,4172115296,4234965207,3794477266,3874110821,3953728444,4016571915,3609705398,3555108353,3735388376,3664026991,3290680682,3236090077,3449943556,3378572211,3174993278,3120533705,3032266256,2961025959,2923101090,2868635157,2813903052,2742672763,2604032198,2683796849,2461293480,2524268063,2284983834,2364738477,2175806836,2238787779,1569362073,1498123566,1409854455,1355396672,1317987909,1246755826,1192025387,1137557660,2072149281,2135122070,1912620623,1992383480,1753615357,1816598090,1627664531,1707420964,295390185,358241886,404320391,483945776,43990325,106832002,186451547,266083308,932423249,861060070,1041341759,986742920,613929101,542559546,756411363,701822548,3316196985,3244833742,3425377559,3370778784,3601682597,3530312978,3744426955,3689838204,3819031489,3881883254,3928223919,4007849240,4037393693,4100235434,4180117107,4259748804,2310601993,2373574846,2151335527,2231098320,2596047829,2659030626,2470359227,2550115596,2947551409,2876312838,2788305887,2733848168,3165939309,3094707162,3040238851,2985771188]),t=function(){var a=4294967295;this.getCRC=function(){return~a>>>0},this.updateCRC=function(n){a=a<<8^e[(a>>>24^n)&255]},this.updateCRCRun=function(n,i){for(;i-- >0;)a=a<<8^e[(a>>>24^n)&255]}};return t}()});var c1=O((NH,oR)=>{oR.exports={name:"seek-bzip",version:"1.0.6",contributors:["C. Scott Ananian (http://cscott.net)","Eli Skeggs","Kevin Kwok","Rob Landley (http://landley.net)"],description:"a pure-JavaScript Node.JS module for random-access decoding bzip2 data",main:"./lib/index.js",repository:{type:"git",url:"https://github.com/cscott/seek-bzip.git"},license:"MIT",bin:{"seek-bunzip":"./bin/seek-bunzip","seek-table":"./bin/seek-bzip-table"},directories:{test:"test"},dependencies:{commander:"^2.8.1"},devDependencies:{fibers:"~1.0.6",mocha:"~2.2.5"},scripts:{test:"mocha"}}});var b1=O((jH,v1)=>{var sR=i1(),mr=o1(),f1=l1(),m1=c1(),rl=20,u1=258,p1=0,lR=1,cR=2,uR=6,pR=50,dR="314159265359",fR="177245385090",d1=function(e,t){var a=e[t],n;for(n=t;n>0;n--)e[n]=e[n-1];return e[0]=a,a},De={OK:0,LAST_BLOCK:-1,NOT_BZIP_DATA:-2,UNEXPECTED_INPUT_EOF:-3,UNEXPECTED_OUTPUT_EOF:-4,DATA_ERROR:-5,OUT_OF_MEMORY:-6,OBSOLETE_INPUT:-7,END_OF_BLOCK:-8},Da={};Da[De.LAST_BLOCK]="Bad file checksum";Da[De.NOT_BZIP_DATA]="Not bzip data";Da[De.UNEXPECTED_INPUT_EOF]="Unexpected input EOF";Da[De.UNEXPECTED_OUTPUT_EOF]="Unexpected output EOF";Da[De.DATA_ERROR]="Data error";Da[De.OUT_OF_MEMORY]="Out of memory";Da[De.OBSOLETE_INPUT]="Obsolete (pre 0.9.5) bzip format not supported.";var ut=function(e,t){var a=Da[e]||"unknown error";t&&(a+=": "+t);var n=new TypeError(a);throw n.errorCode=e,n},gt=function(e,t){this.writePos=this.writeCurrent=this.writeCount=0,this._start_bunzip(e,t)};gt.prototype._init_block=function(){var e=this._get_next_block();return e?(this.blockCRC=new f1,!0):(this.writeCount=-1,!1)};gt.prototype._start_bunzip=function(e,t){var a=new Buffer(4);(e.read(a,0,4)!==4||String.fromCharCode(a[0],a[1],a[2])!=="BZh")&&ut(De.NOT_BZIP_DATA,"bad magic");var n=a[3]-48;(n<1||n>9)&&ut(De.NOT_BZIP_DATA,"level out of range"),this.reader=new sR(e),this.dbufSize=1e5*n,this.nextoutput=0,this.outputStream=t,this.streamCRC=0};gt.prototype._get_next_block=function(){var e,t,a,n=this.reader,i=n.pi();if(i===fR)return!1;i!==dR&&ut(De.NOT_BZIP_DATA),this.targetBlockCRC=n.read(32)>>>0,this.streamCRC=(this.targetBlockCRC^(this.streamCRC<<1|this.streamCRC>>>31))>>>0,n.read(1)&&ut(De.OBSOLETE_INPUT);var r=n.read(24);r>this.dbufSize&&ut(De.DATA_ERROR,"initial position out of bounds");var o=n.read(16),s=new Buffer(256),l=0;for(e=0;e<16;e++)if(o&1<<15-e){var u=e*16;for(a=n.read(16),t=0;t<16;t++)a&1<<15-t&&(s[l++]=u+t)}var c=n.read(3);(c<cR||c>uR)&&ut(De.DATA_ERROR);var f=n.read(15);f===0&&ut(De.DATA_ERROR);var p=new Buffer(256);for(e=0;e<c;e++)p[e]=e;var b=new Buffer(f);for(e=0;e<f;e++){for(t=0;n.read(1);t++)t>=c&&ut(De.DATA_ERROR);b[e]=d1(p,t)}var d=l+2,m=[],h;for(t=0;t<c;t++){var v=new Buffer(d),x=new Uint16Array(rl+1);for(o=n.read(5),e=0;e<d;e++){for(;(o<1||o>rl)&&ut(De.DATA_ERROR),!!n.read(1);)n.read(1)?o--:o++;v[e]=o}var E,g;for(E=g=v[0],e=1;e<d;e++)v[e]>g?g=v[e]:v[e]<E&&(E=v[e]);h={},m.push(h),h.permute=new Uint16Array(u1),h.limit=new Uint32Array(rl+2),h.base=new Uint32Array(rl+1),h.minLen=E,h.maxLen=g;var w=0;for(e=E;e<=g;e++)for(x[e]=h.limit[e]=0,o=0;o<d;o++)v[o]===e&&(h.permute[w++]=o);for(e=0;e<d;e++)x[v[e]]++;for(w=o=0,e=E;e<g;e++)w+=x[e],h.limit[e]=w-1,w<<=1,o+=x[e],h.base[e+1]=w-o;h.limit[g+1]=Number.MAX_VALUE,h.limit[g]=w+x[g]-1,h.base[E]=0}var C=new Uint32Array(256);for(e=0;e<256;e++)p[e]=e;var y=0,S=0,A=0,_,P=this.dbuf=new Uint32Array(this.dbufSize);for(d=0;;){for(d--||(d=pR-1,A>=f&&ut(De.DATA_ERROR),h=m[b[A++]]),e=h.minLen,t=n.read(e);e>h.maxLen&&ut(De.DATA_ERROR),!(t<=h.limit[e]);e++)t=t<<1|n.read(1);t-=h.base[e],(t<0||t>=u1)&&ut(De.DATA_ERROR);var F=h.permute[t];if(F===p1||F===lR){y||(y=1,o=0),F===p1?o+=y:o+=2*y,y<<=1;continue}if(y)for(y=0,S+o>this.dbufSize&&ut(De.DATA_ERROR),_=s[p[0]],C[_]+=o;o--;)P[S++]=_;if(F>l)break;S>=this.dbufSize&&ut(De.DATA_ERROR),e=F-1,_=d1(p,e),_=s[_],C[_]++,P[S++]=_}for((r<0||r>=S)&&ut(De.DATA_ERROR),t=0,e=0;e<256;e++)a=t+C[e],C[e]=t,t=a;for(e=0;e<S;e++)_=P[e]&255,P[C[_]]|=e<<8,C[_]++;var B=0,j=0,L=0;return S&&(B=P[r],j=B&255,B>>=8,L=-1),this.writePos=B,this.writeCurrent=j,this.writeCount=S,this.writeRun=L,!0};gt.prototype._read_bunzip=function(e,t){var a,n,i;if(this.writeCount<0)return 0;for(var r=0,o=this.dbuf,s=this.writePos,l=this.writeCurrent,u=this.writeCount,c=this.outputsize,f=this.writeRun;u;){for(u--,n=l,s=o[s],l=s&255,s>>=8,f++===3?(a=l,i=n,l=-1):(a=1,i=l),this.blockCRC.updateCRCRun(i,a);a--;)this.outputStream.writeByte(i),this.nextoutput++;l!=n&&(f=0)}return this.writeCount=u,this.blockCRC.getCRC()!==this.targetBlockCRC&&ut(De.DATA_ERROR,"Bad block CRC (got "+this.blockCRC.getCRC().toString(16)+" expected "+this.targetBlockCRC.toString(16)+")"),this.nextoutput};var rd=function(e){if("readByte"in e)return e;var t=new mr;return t.pos=0,t.readByte=function(){return e[this.pos++]},t.seek=function(a){this.pos=a},t.eof=function(){return this.pos>=e.length},t},h1=function(e){var t=new mr,a=!0;if(e)if(typeof e=="number")t.buffer=new Buffer(e),a=!1;else{if("writeByte"in e)return e;t.buffer=e,a=!1}else t.buffer=new Buffer(16384);return t.pos=0,t.writeByte=function(n){if(a&&this.pos>=this.buffer.length){var i=new Buffer(this.buffer.length*2);this.buffer.copy(i),this.buffer=i}this.buffer[this.pos++]=n},t.getBuffer=function(){if(this.pos!==this.buffer.length){if(!a)throw new TypeError("outputsize does not match decoded input");var n=new Buffer(this.pos);this.buffer.copy(n,0,0,this.pos),this.buffer=n}return this.buffer},t._coerced=!0,t};gt.Err=De;gt.decode=function(e,t,a){for(var n=rd(e),i=h1(t),r=new gt(n,i);!("eof"in n&&n.eof());)if(r._init_block())r._read_bunzip();else{var o=r.reader.read(32)>>>0;if(o!==r.streamCRC&&ut(De.DATA_ERROR,"Bad stream CRC (got "+r.streamCRC.toString(16)+" expected "+o.toString(16)+")"),a&&"eof"in n&&!n.eof())r._start_bunzip(n,i);else break}if("getBuffer"in i)return i.getBuffer()};gt.decodeBlock=function(e,t,a){var n=rd(e),i=h1(a),r=new gt(n,i);r.reader.seek(t);var o=r._get_next_block();if(o&&(r.blockCRC=new f1,r.writeCopies=0,r._read_bunzip()),"getBuffer"in i)return i.getBuffer()};gt.table=function(e,t,a){var n=new mr;n.delegate=rd(e),n.pos=0,n.readByte=function(){return this.pos++,this.delegate.readByte()},n.delegate.eof&&(n.eof=n.delegate.eof.bind(n.delegate));var i=new mr;i.pos=0,i.writeByte=function(){this.pos++};for(var r=new gt(n,i),o=r.dbufSize;!("eof"in n&&n.eof());){var s=n.pos*8+r.reader.bitOffset;if(r.reader.hasByte&&(s-=8),r._init_block()){var l=i.pos;r._read_bunzip(),t(s,i.pos-l)}else{var u=r.reader.read(32);if(a&&"eof"in n&&!n.eof())r._start_bunzip(n,i),console.assert(r.dbufSize===o,"shouldn't change block size within multistream file");else break}}};gt.Stream=mr;gt.version=m1.version;gt.license=m1.license;v1.exports=gt});var y1=O((g1,x1)=>{var mR=require("stream");g1=x1.exports=od;od.through=od;function od(e,t,a){e=e||function(c){this.queue(c)},t=t||function(){this.queue(null)};var n=!1,i=!1,r=[],o=!1,s=new mR;s.readable=s.writable=!0,s.paused=!1,s.autoDestroy=!(a&&a.autoDestroy===!1),s.write=function(c){return e.call(this,c),!s.paused};function l(){for(;r.length&&!s.paused;){var c=r.shift();if(c===null)return s.emit("end");s.emit("data",c)}}s.queue=s.push=function(c){return o||(c===null&&(o=!0),r.push(c),l()),s},s.on("end",function(){s.readable=!1,!s.writable&&s.autoDestroy&&process.nextTick(function(){s.destroy()})});function u(){s.writable=!1,t.call(s),!s.readable&&s.autoDestroy&&s.destroy()}return s.end=function(c){if(!n)return n=!0,arguments.length&&s.write(c),u(),s},s.destroy=function(){if(!i)return i=!0,n=!0,r.length=0,s.writable=s.readable=!1,s.emit("close"),s},s.pause=function(){if(!s.paused)return s.paused=!0,s},s.resume=function(){return s.paused&&(s.paused=!1,s.emit("resume")),l(),s.paused||s.emit("drain"),s},s}});var E1=O((LH,w1)=>{function sd(e){this.name="Bzip2Error",this.message=e,this.stack=new Error().stack}sd.prototype=new Error;var pt={Error:function(e){throw new sd(e)}},na={};na.Bzip2Error=sd;na.crcTable=[0,79764919,159529838,222504665,319059676,398814059,445009330,507990021,638119352,583659535,797628118,726387553,890018660,835552979,1015980042,944750013,1276238704,1221641927,1167319070,1095957929,1595256236,1540665371,1452775106,1381403509,1780037320,1859660671,1671105958,1733955601,2031960084,2111593891,1889500026,1952343757,2552477408,2632100695,2443283854,2506133561,2334638140,2414271883,2191915858,2254759653,3190512472,3135915759,3081330742,3009969537,2905550212,2850959411,2762807018,2691435357,3560074640,3505614887,3719321342,3648080713,3342211916,3287746299,3467911202,3396681109,4063920168,4143685023,4223187782,4286162673,3779000052,3858754371,3904687514,3967668269,881225847,809987520,1023691545,969234094,662832811,591600412,771767749,717299826,311336399,374308984,453813921,533576470,25881363,88864420,134795389,214552010,2023205639,2086057648,1897238633,1976864222,1804852699,1867694188,1645340341,1724971778,1587496639,1516133128,1461550545,1406951526,1302016099,1230646740,1142491917,1087903418,2896545431,2825181984,2770861561,2716262478,3215044683,3143675388,3055782693,3001194130,2326604591,2389456536,2200899649,2280525302,2578013683,2640855108,2418763421,2498394922,3769900519,3832873040,3912640137,3992402750,4088425275,4151408268,4197601365,4277358050,3334271071,3263032808,3476998961,3422541446,3585640067,3514407732,3694837229,3640369242,1762451694,1842216281,1619975040,1682949687,2047383090,2127137669,1938468188,2001449195,1325665622,1271206113,1183200824,1111960463,1543535498,1489069629,1434599652,1363369299,622672798,568075817,748617968,677256519,907627842,853037301,1067152940,995781531,51762726,131386257,177728840,240578815,269590778,349224269,429104020,491947555,4046411278,4126034873,4172115296,4234965207,3794477266,3874110821,3953728444,4016571915,3609705398,3555108353,3735388376,3664026991,3290680682,3236090077,3449943556,3378572211,3174993278,3120533705,3032266256,2961025959,2923101090,2868635157,2813903052,2742672763,2604032198,2683796849,2461293480,2524268063,2284983834,2364738477,2175806836,2238787779,1569362073,1498123566,1409854455,1355396672,1317987909,1246755826,1192025387,1137557660,2072149281,2135122070,1912620623,1992383480,1753615357,1816598090,1627664531,1707420964,295390185,358241886,404320391,483945776,43990325,106832002,186451547,266083308,932423249,861060070,1041341759,986742920,613929101,542559546,756411363,701822548,3316196985,3244833742,3425377559,3370778784,3601682597,3530312978,3744426955,3689838204,3819031489,3881883254,3928223919,4007849240,4037393693,4100235434,4180117107,4259748804,2310601993,2373574846,2151335527,2231098320,2596047829,2659030626,2470359227,2550115596,2947551409,2876312838,2788305887,2733848168,3165939309,3094707162,3040238851,2985771188];na.array=function(e){var t=0,a=0,n=[0,1,3,7,15,31,63,127,255];return function(i){for(var r=0;i>0;){var o=8-t;i>=o?(r<<=o,r|=n[o]&e[a++],t=0,i-=o):(r<<=i,r|=(e[a]&n[i]<<8-i-t)>>8-i-t,t+=i,i=0)}return r}};na.simple=function(e,t){var a=na.array(e),n=na.header(a),i=!1,r=1e5*n,o=new Int32Array(r);do i=na.decompress(a,t,o,r);while(!i)};na.header=function(e){this.byteCount=new Int32Array(256),this.symToByte=new Uint8Array(256),this.mtfSymbol=new Int32Array(256),this.selectors=new Uint8Array(32768),e(8*3)!=4348520&&pt.Error("No magic number found");var t=e(8)-48;return(t<1||t>9)&&pt.Error("Not a BZIP archive"),t};na.decompress=function(e,t,a,n,i){for(var r=20,o=258,s=0,l=1,u=50,c=-1,f="",p=0;p<6;p++)f+=e(8).toString(16);if(f=="177245385090"){var b=e(32)|0;return b!==i&&pt.Error("Error in bzip2: crc32 do not match"),e(null),null}f!="314159265359"&&pt.Error("eek not valid bzip data");var d=e(32)|0;e(1)&&pt.Error("unsupported obsolete version");var m=e(24);m>n&&pt.Error("Initial position larger than buffer size");var h=e(16),v=0;for(p=0;p<16;p++)if(h&1<<15-p){var x=e(16);for(D=0;D<16;D++)x&1<<15-D&&(this.symToByte[v++]=16*p+D)}var E=e(3);(E<2||E>6)&&pt.Error("another error");var g=e(15);g==0&&pt.Error("meh");for(var p=0;p<E;p++)this.mtfSymbol[p]=p;for(var p=0;p<g;p++){for(var D=0;e(1);D++)D>=E&&pt.Error("whoops another error");for(var w=this.mtfSymbol[D],x=D-1;x>=0;x--)this.mtfSymbol[x+1]=this.mtfSymbol[x];this.mtfSymbol[0]=w,this.selectors[p]=w}for(var T=v+2,C=[],y=new Uint8Array(o),S=new Uint16Array(r+1),A,D=0;D<E;D++){h=e(5);for(var p=0;p<T;p++){for(;(h<1||h>r)&&pt.Error("I gave up a while ago on writing error messages"),!!e(1);)e(1)?h--:h++;y[p]=h}var _,P;_=P=y[0];for(var p=1;p<T;p++)y[p]>P?P=y[p]:y[p]<_&&(_=y[p]);A=C[D]={},A.permute=new Int32Array(o),A.limit=new Int32Array(r+1),A.base=new Int32Array(r+1),A.minLen=_,A.maxLen=P;for(var F=A.base,B=A.limit,j=0,p=_;p<=P;p++)for(var h=0;h<T;h++)y[h]==p&&(A.permute[j++]=h);for(p=_;p<=P;p++)S[p]=B[p]=0;for(p=0;p<T;p++)S[y[p]]++;for(j=h=0,p=_;p<P;p++)j+=S[p],B[p]=j-1,j<<=1,F[p+1]=j-(h+=S[p]);B[P]=j+S[P]-1,F[_]=0}for(var p=0;p<256;p++)this.mtfSymbol[p]=p,this.byteCount[p]=0;var L,k,T,N;for(L=k=T=N=0;;){for(T--||(T=u-1,N>=g&&pt.Error("meow i'm a kitty, that's an error"),A=C[this.selectors[N++]],F=A.base,B=A.limit),p=A.minLen,D=e(p);p>A.maxLen&&pt.Error("rawr i'm a dinosaur"),!(D<=B[p]);)p++,D=D<<1|e(1);D-=F[p],(D<0||D>=o)&&pt.Error("moo i'm a cow");var M=A.permute[D];if(M==s||M==l){L||(L=1,h=0),M==s?h+=L:h+=2*L,L<<=1;continue}if(L)for(L=0,k+h>n&&pt.Error("Boom."),w=this.symToByte[this.mtfSymbol[0]],this.byteCount[w]+=h;h--;)a[k++]=w;if(M>v)break;k>=n&&pt.Error("I can't think of anything. Error"),p=M-1,w=this.mtfSymbol[p];for(var x=p-1;x>=0;x--)this.mtfSymbol[x+1]=this.mtfSymbol[x];this.mtfSymbol[0]=w,w=this.symToByte[w],this.byteCount[w]++,a[k++]=w}(m<0||m>=k)&&pt.Error("I'm a monkey and I'm throwing something at someone, namely you");for(var D=0,p=0;p<256;p++)x=D+this.byteCount[p],this.byteCount[p]=D,D=x;for(var p=0;p<k;p++)w=a[p]&255,a[this.byteCount[w]]|=p<<8,this.byteCount[w]++;var V=0,q=0,Z=0;k&&(V=a[m],q=V&255,V>>=8,Z=-1),k=k;for(var pe,fe,ee;k;){for(k--,fe=q,V=a[V],q=V&255,V>>=8,Z++==3?(pe=q,ee=fe,q=-1):(pe=1,ee=q);pe--;)c=(c<<8^this.crcTable[(c>>24^ee)&255])&4294967295,t(ee);q!=fe&&(Z=0)}return c=(c^-1)>>>0,(c|0)!=(d|0)&&pt.Error("Error in bzip2: crc32 do not match"),i=(c^(i<<1|i>>>31))&4294967295,i};w1.exports=na});var A1=O((MH,C1)=>{var S1=[0,1,3,7,15,31,63,127,255];C1.exports=function(t){var a=0,n=0,i=t(),r=function(o){if(o===null&&a!=0){a=0,n++;return}for(var s=0;o>0;){n>=i.length&&(n=0,i=t());var l=8-a;a===0&&o>0&&r.bytesRead++,o>=l?(s<<=l,s|=S1[l]&i[n++],a=0,o-=l):(s<<=o,s|=(i[n]&S1[o]<<8-o-a)>>8-o-a,a+=o,o=0)}return s};return r.bytesRead=0,r}});var T1=O((DH,_1)=>{var hR=y1(),I1=E1(),vR=A1();_1.exports=bR;function bR(){var e=[],t=0,a=0,n=!1,i=!1,r=null,o=null;function s(c){if(a){var f=1e5*a,p=new Int32Array(f),b=[],d=function(m){b.push(m)};return o=I1.decompress(r,d,p,f,o),o===null?(a=0,!1):(c(Buffer.from(b)),!0)}else return a=I1.header(r),o=0,!0}var l=0;function u(c){if(!n)try{return s(function(f){c.queue(f),f!==null&&(l+=f.length)})}catch(f){return c.emit("error",f),n=!0,!1}}return hR(function(f){for(e.push(f),t+=f.length,r===null&&(r=vR(function(){return e.shift()}));!n&&t-r.bytesRead+1>=(25e3+1e5*a||4);)u(this)},function(f){for(;!n&&r&&t>r.bytesRead;)u(this);n||(o!==null&&this.emit("error",new Error("input stream ended prematurely")),this.queue(null))})}});var O1=O((zH,P1)=>{"use strict";var k1=il(),F1=t1(),gR=Ds(),xR=b1(),yR=T1();P1.exports=()=>e=>!Buffer.isBuffer(e)&&!gR(e)?Promise.reject(new TypeError(`Expected a Buffer or Stream, got ${typeof e}`)):Buffer.isBuffer(e)&&(!F1(e)||F1(e).ext!=="bz2")?Promise.resolve([]):Buffer.isBuffer(e)?k1()(xR.decode(e)):k1()(e.pipe(yR()))});var B1=O((GH,R1)=>{"use strict";R1.exports=e=>{let t=new Uint8Array(e);if(!(t&&t.length>1))return null;let a=(n,i)=>{i=Object.assign({offset:0},i);for(let r=0;r<n.length;r++)if(n[r]!==t[r+i.offset])return!1;return!0};if(a([255,216,255]))return{ext:"jpg",mime:"image/jpeg"};if(a([137,80,78,71,13,10,26,10]))return{ext:"png",mime:"image/png"};if(a([71,73,70]))return{ext:"gif",mime:"image/gif"};if(a([87,69,66,80],{offset:8}))return{ext:"webp",mime:"image/webp"};if(a([70,76,73,70]))return{ext:"flif",mime:"image/flif"};if((a([73,73,42,0])||a([77,77,0,42]))&&a([67,82],{offset:8}))return{ext:"cr2",mime:"image/x-canon-cr2"};if(a([73,73,42,0])||a([77,77,0,42]))return{ext:"tif",mime:"image/tiff"};if(a([66,77]))return{ext:"bmp",mime:"image/bmp"};if(a([73,73,188]))return{ext:"jxr",mime:"image/vnd.ms-photo"};if(a([56,66,80,83]))return{ext:"psd",mime:"image/vnd.adobe.photoshop"};if(a([80,75,3,4])&&a([109,105,109,101,116,121,112,101,97,112,112,108,105,99,97,116,105,111,110,47,101,112,117,98,43,122,105,112],{offset:30}))return{ext:"epub",mime:"application/epub+zip"};if(a([80,75,3,4])&&a([77,69,84,65,45,73,78,70,47,109,111,122,105,108,108,97,46,114,115,97],{offset:30}))return{ext:"xpi",mime:"application/x-xpinstall"};if(a([80,75])&&(t[2]===3||t[2]===5||t[2]===7)&&(t[3]===4||t[3]===6||t[3]===8))return{ext:"zip",mime:"application/zip"};if(a([117,115,116,97,114],{offset:257}))return{ext:"tar",mime:"application/x-tar"};if(a([82,97,114,33,26,7])&&(t[6]===0||t[6]===1))return{ext:"rar",mime:"application/x-rar-compressed"};if(a([31,139,8]))return{ext:"gz",mime:"application/gzip"};if(a([66,90,104]))return{ext:"bz2",mime:"application/x-bzip2"};if(a([55,122,188,175,39,28]))return{ext:"7z",mime:"application/x-7z-compressed"};if(a([120,1]))return{ext:"dmg",mime:"application/x-apple-diskimage"};if(a([0,0,0])&&(t[3]===24||t[3]===32)&&a([102,116,121,112],{offset:4})||a([51,103,112,53])||a([0,0,0,28,102,116,121,112,109,112,52,50])&&a([109,112,52,49,109,112,52,50,105,115,111,109],{offset:16})||a([0,0,0,28,102,116,121,112,105,115,111,109])||a([0,0,0,28,102,116,121,112,109,112,52,50,0,0,0,0]))return{ext:"mp4",mime:"video/mp4"};if(a([0,0,0,28,102,116,121,112,77,52,86]))return{ext:"m4v",mime:"video/x-m4v"};if(a([77,84,104,100]))return{ext:"mid",mime:"audio/midi"};if(a([26,69,223,163])){let n=t.subarray(4,4100),i=n.findIndex((r,o,s)=>s[o]===66&&s[o+1]===130);if(i>=0){let r=i+3,o=s=>Array.from(s).every((l,u)=>n[r+u]===l.charCodeAt(0));if(o("matroska"))return{ext:"mkv",mime:"video/x-matroska"};if(o("webm"))return{ext:"webm",mime:"video/webm"}}}return a([0,0,0,20,102,116,121,112,113,116,32,32])||a([102,114,101,101],{offset:4})||a([102,116,121,112,113,116,32,32],{offset:4})||a([109,100,97,116],{offset:4})||a([119,105,100,101],{offset:4})?{ext:"mov",mime:"video/quicktime"}:a([82,73,70,70])&&a([65,86,73],{offset:8})?{ext:"avi",mime:"video/x-msvideo"}:a([48,38,178,117,142,102,207,17,166,217])?{ext:"wmv",mime:"video/x-ms-wmv"}:a([0,0,1,186])?{ext:"mpg",mime:"video/mpeg"}:a([73,68,51])||a([255,251])?{ext:"mp3",mime:"audio/mpeg"}:a([102,116,121,112,77,52,65],{offset:4})||a([77,52,65,32])?{ext:"m4a",mime:"audio/m4a"}:a([79,112,117,115,72,101,97,100],{offset:28})?{ext:"opus",mime:"audio/opus"}:a([79,103,103,83])?{ext:"ogg",mime:"audio/ogg"}:a([102,76,97,67])?{ext:"flac",mime:"audio/x-flac"}:a([82,73,70,70])&&a([87,65,86,69],{offset:8})?{ext:"wav",mime:"audio/x-wav"}:a([35,33,65,77,82,10])?{ext:"amr",mime:"audio/amr"}:a([37,80,68,70])?{ext:"pdf",mime:"application/pdf"}:a([77,90])?{ext:"exe",mime:"application/x-msdownload"}:(t[0]===67||t[0]===70)&&a([87,83],{offset:1})?{ext:"swf",mime:"application/x-shockwave-flash"}:a([123,92,114,116,102])?{ext:"rtf",mime:"application/rtf"}:a([0,97,115,109])?{ext:"wasm",mime:"application/wasm"}:a([119,79,70,70])&&(a([0,1,0,0],{offset:4})||a([79,84,84,79],{offset:4}))?{ext:"woff",mime:"font/woff"}:a([119,79,70,50])&&(a([0,1,0,0],{offset:4})||a([79,84,84,79],{offset:4}))?{ext:"woff2",mime:"font/woff2"}:a([76,80],{offset:34})&&(a([0,0,1],{offset:8})||a([1,0,2],{offset:8})||a([2,0,2],{offset:8}))?{ext:"eot",mime:"application/octet-stream"}:a([0,1,0,0,0])?{ext:"ttf",mime:"font/ttf"}:a([79,84,84,79,0])?{ext:"otf",mime:"font/otf"}:a([0,0,1,0])?{ext:"ico",mime:"image/x-icon"}:a([70,76,86,1])?{ext:"flv",mime:"video/x-flv"}:a([37,33])?{ext:"ps",mime:"application/postscript"}:a([253,55,122,88,90,0])?{ext:"xz",mime:"application/x-xz"}:a([83,81,76,105])?{ext:"sqlite",mime:"application/x-sqlite3"}:a([78,69,83,26])?{ext:"nes",mime:"application/x-nintendo-nes-rom"}:a([67,114,50,52])?{ext:"crx",mime:"application/x-google-chrome-extension"}:a([77,83,67,70])||a([73,83,99,40])?{ext:"cab",mime:"application/vnd.ms-cab-compressed"}:a([33,60,97,114,99,104,62,10,100,101,98,105,97,110,45,98,105,110,97,114,121])?{ext:"deb",mime:"application/x-deb"}:a([33,60,97,114,99,104,62])?{ext:"ar",mime:"application/x-unix-archive"}:a([237,171,238,219])?{ext:"rpm",mime:"application/x-rpm"}:a([31,160])||a([31,157])?{ext:"Z",mime:"application/x-compress"}:a([76,90,73,80])?{ext:"lz",mime:"application/x-lzip"}:a([208,207,17,224,161,177,26,225])?{ext:"msi",mime:"application/x-msi"}:a([6,14,43,52,2,5,1,1,13,1,2,1,1,2])?{ext:"mxf",mime:"application/mxf"}:a([71],{offset:4})&&(a([71],{offset:192})||a([71],{offset:196}))?{ext:"mts",mime:"video/mp2t"}:a([66,76,69,78,68,69,82])?{ext:"blend",mime:"application/x-blender"}:a([66,80,71,251])?{ext:"bpg",mime:"image/bpg"}:null}});var L1=O((HH,j1)=>{"use strict";var wR=require("zlib"),ER=il(),N1=B1(),SR=Ds();j1.exports=()=>e=>{if(!Buffer.isBuffer(e)&&!SR(e))return Promise.reject(new TypeError(`Expected a Buffer or Stream, got ${typeof e}`));if(Buffer.isBuffer(e)&&(!N1(e)||N1(e).ext!=="gz"))return Promise.resolve([]);let t=wR.createGunzip(),a=ER()(t);return Buffer.isBuffer(e)?t.end(e):e.pipe(t),a}});var D1=O((WH,M1)=>{"use strict";M1.exports=function(e){return e&&e.length>1?e[0]===255&&e[1]===216&&e[2]===255?{ext:"jpg",mime:"image/jpeg"}:e[0]===137&&e[1]===80&&e[2]===78&&e[3]===71?{ext:"png",mime:"image/png"}:e[0]===71&&e[1]===73&&e[2]===70?{ext:"gif",mime:"image/gif"}:e[8]===87&&e[9]===69&&e[10]===66&&e[11]===80?{ext:"webp",mime:"image/webp"}:e[0]===70&&e[1]===76&&e[2]===73&&e[3]===70?{ext:"flif",mime:"image/flif"}:(e[0]===73&&e[1]===73&&e[2]===42&&e[3]===0||e[0]===77&&e[1]===77&&e[2]===0&&e[3]===42)&&e[8]===67&&e[9]===82?{ext:"cr2",mime:"image/x-canon-cr2"}:e[0]===73&&e[1]===73&&e[2]===42&&e[3]===0||e[0]===77&&e[1]===77&&e[2]===0&&e[3]===42?{ext:"tif",mime:"image/tiff"}:e[0]===66&&e[1]===77?{ext:"bmp",mime:"image/bmp"}:e[0]===73&&e[1]===73&&e[2]===188?{ext:"jxr",mime:"image/vnd.ms-photo"}:e[0]===56&&e[1]===66&&e[2]===80&&e[3]===83?{ext:"psd",mime:"image/vnd.adobe.photoshop"}:e[0]===80&&e[1]===75&&e[2]===3&&e[3]===4&&e[30]===109&&e[31]===105&&e[32]===109&&e[33]===101&&e[34]===116&&e[35]===121&&e[36]===112&&e[37]===101&&e[38]===97&&e[39]===112&&e[40]===112&&e[41]===108&&e[42]===105&&e[43]===99&&e[44]===97&&e[45]===116&&e[46]===105&&e[47]===111&&e[48]===110&&e[49]===47&&e[50]===101&&e[51]===112&&e[52]===117&&e[53]===98&&e[54]===43&&e[55]===122&&e[56]===105&&e[57]===112?{ext:"epub",mime:"application/epub+zip"}:e[0]===80&&e[1]===75&&e[2]===3&&e[3]===4&&e[30]===77&&e[31]===69&&e[32]===84&&e[33]===65&&e[34]===45&&e[35]===73&&e[36]===78&&e[37]===70&&e[38]===47&&e[39]===109&&e[40]===111&&e[41]===122&&e[42]===105&&e[43]===108&&e[44]===108&&e[45]===97&&e[46]===46&&e[47]===114&&e[48]===115&&e[49]===97?{ext:"xpi",mime:"application/x-xpinstall"}:e[0]===80&&e[1]===75&&(e[2]===3||e[2]===5||e[2]===7)&&(e[3]===4||e[3]===6||e[3]===8)?{ext:"zip",mime:"application/zip"}:e[257]===117&&e[258]===115&&e[259]===116&&e[260]===97&&e[261]===114?{ext:"tar",mime:"application/x-tar"}:e[0]===82&&e[1]===97&&e[2]===114&&e[3]===33&&e[4]===26&&e[5]===7&&(e[6]===0||e[6]===1)?{ext:"rar",mime:"application/x-rar-compressed"}:e[0]===31&&e[1]===139&&e[2]===8?{ext:"gz",mime:"application/gzip"}:e[0]===66&&e[1]===90&&e[2]===104?{ext:"bz2",mime:"application/x-bzip2"}:e[0]===55&&e[1]===122&&e[2]===188&&e[3]===175&&e[4]===39&&e[5]===28?{ext:"7z",mime:"application/x-7z-compressed"}:e[0]===120&&e[1]===1?{ext:"dmg",mime:"application/x-apple-diskimage"}:e[0]===0&&e[1]===0&&e[2]===0&&(e[3]===24||e[3]===32)&&e[4]===102&&e[5]===116&&e[6]===121&&e[7]===112||e[0]===51&&e[1]===103&&e[2]===112&&e[3]===53||e[0]===0&&e[1]===0&&e[2]===0&&e[3]===28&&e[4]===102&&e[5]===116&&e[6]===121&&e[7]===112&&e[8]===109&&e[9]===112&&e[10]===52&&e[11]===50&&e[16]===109&&e[17]===112&&e[18]===52&&e[19]===49&&e[20]===109&&e[21]===112&&e[22]===52&&e[23]===50&&e[24]===105&&e[25]===115&&e[26]===111&&e[27]===109||e[0]===0&&e[1]===0&&e[2]===0&&e[3]===28&&e[4]===102&&e[5]===116&&e[6]===121&&e[7]===112&&e[8]===105&&e[9]===115&&e[10]===111&&e[11]===109||e[0]===0&&e[1]===0&&e[2]===0&&e[3]===28&&e[4]===102&&e[5]===116&&e[6]===121&&e[7]===112&&e[8]===109&&e[9]===112&&e[10]===52&&e[11]===50&&e[12]===0&&e[13]===0&&e[14]===0&&e[15]===0?{ext:"mp4",mime:"video/mp4"}:e[0]===0&&e[1]===0&&e[2]===0&&e[3]===28&&e[4]===102&&e[5]===116&&e[6]===121&&e[7]===112&&e[8]===77&&e[9]===52&&e[10]===86?{ext:"m4v",mime:"video/x-m4v"}:e[0]===77&&e[1]===84&&e[2]===104&&e[3]===100?{ext:"mid",mime:"audio/midi"}:e[31]===109&&e[32]===97&&e[33]===116&&e[34]===114&&e[35]===111&&e[36]===115&&e[37]===107&&e[38]===97?{ext:"mkv",mime:"video/x-matroska"}:e[0]===26&&e[1]===69&&e[2]===223&&e[3]===163?{ext:"webm",mime:"video/webm"}:e[0]===0&&e[1]===0&&e[2]===0&&e[3]===20&&e[4]===102&&e[5]===116&&e[6]===121&&e[7]===112?{ext:"mov",mime:"video/quicktime"}:e[0]===82&&e[1]===73&&e[2]===70&&e[3]===70&&e[8]===65&&e[9]===86&&e[10]===73?{ext:"avi",mime:"video/x-msvideo"}:e[0]===48&&e[1]===38&&e[2]===178&&e[3]===117&&e[4]===142&&e[5]===102&&e[6]===207&&e[7]===17&&e[8]===166&&e[9]===217?{ext:"wmv",mime:"video/x-ms-wmv"}:e[0]===0&&e[1]===0&&e[2]===1&&e[3].toString(16)[0]==="b"?{ext:"mpg",mime:"video/mpeg"}:e[0]===73&&e[1]===68&&e[2]===51||e[0]===255&&e[1]===251?{ext:"mp3",mime:"audio/mpeg"}:e[4]===102&&e[5]===116&&e[6]===121&&e[7]===112&&e[8]===77&&e[9]===52&&e[10]===65||e[0]===77&&e[1]===52&&e[2]===65&&e[3]===32?{ext:"m4a",mime:"audio/m4a"}:e[28]===79&&e[29]===112&&e[30]===117&&e[31]===115&&e[32]===72&&e[33]===101&&e[34]===97&&e[35]===100?{ext:"opus",mime:"audio/opus"}:e[0]===79&&e[1]===103&&e[2]===103&&e[3]===83?{ext:"ogg",mime:"audio/ogg"}:e[0]===102&&e[1]===76&&e[2]===97&&e[3]===67?{ext:"flac",mime:"audio/x-flac"}:e[0]===82&&e[1]===73&&e[2]===70&&e[3]===70&&e[8]===87&&e[9]===65&&e[10]===86&&e[11]===69?{ext:"wav",mime:"audio/x-wav"}:e[0]===35&&e[1]===33&&e[2]===65&&e[3]===77&&e[4]===82&&e[5]===10?{ext:"amr",mime:"audio/amr"}:e[0]===37&&e[1]===80&&e[2]===68&&e[3]===70?{ext:"pdf",mime:"application/pdf"}:e[0]===77&&e[1]===90?{ext:"exe",mime:"application/x-msdownload"}:(e[0]===67||e[0]===70)&&e[1]===87&&e[2]===83?{ext:"swf",mime:"application/x-shockwave-flash"}:e[0]===123&&e[1]===92&&e[2]===114&&e[3]===116&&e[4]===102?{ext:"rtf",mime:"application/rtf"}:e[0]===119&&e[1]===79&&e[2]===70&&e[3]===70&&(e[4]===0&&e[5]===1&&e[6]===0&&e[7]===0||e[4]===79&&e[5]===84&&e[6]===84&&e[7]===79)?{ext:"woff",mime:"application/font-woff"}:e[0]===119&&e[1]===79&&e[2]===70&&e[3]===50&&(e[4]===0&&e[5]===1&&e[6]===0&&e[7]===0||e[4]===79&&e[5]===84&&e[6]===84&&e[7]===79)?{ext:"woff2",mime:"application/font-woff"}:e[34]===76&&e[35]===80&&(e[8]===0&&e[9]===0&&e[10]===1||e[8]===1&&e[9]===0&&e[10]===2||e[8]===2&&e[9]===0&&e[10]===2)?{ext:"eot",mime:"application/octet-stream"}:e[0]===0&&e[1]===1&&e[2]===0&&e[3]===0&&e[4]===0?{ext:"ttf",mime:"application/font-sfnt"}:e[0]===79&&e[1]===84&&e[2]===84&&e[3]===79&&e[4]===0?{ext:"otf",mime:"application/font-sfnt"}:e[0]===0&&e[1]===0&&e[2]===1&&e[3]===0?{ext:"ico",mime:"image/x-icon"}:e[0]===70&&e[1]===76&&e[2]===86&&e[3]===1?{ext:"flv",mime:"video/x-flv"}:e[0]===37&&e[1]===33?{ext:"ps",mime:"application/postscript"}:e[0]===253&&e[1]===55&&e[2]===122&&e[3]===88&&e[4]===90&&e[5]===0?{ext:"xz",mime:"application/x-xz"}:e[0]===83&&e[1]===81&&e[2]===76&&e[3]===105?{ext:"sqlite",mime:"application/x-sqlite3"}:e[0]===78&&e[1]===69&&e[2]===83&&e[3]===26?{ext:"nes",mime:"application/x-nintendo-nes-rom"}:e[0]===67&&e[1]===114&&e[2]===50&&e[3]===52?{ext:"crx",mime:"application/x-google-chrome-extension"}:e[0]===77&&e[1]===83&&e[2]===67&&e[3]===70||e[0]===73&&e[1]===83&&e[2]===99&&e[3]===40?{ext:"cab",mime:"application/vnd.ms-cab-compressed"}:e[0]===33&&e[1]===60&&e[2]===97&&e[3]===114&&e[4]===99&&e[5]===104&&e[6]===62&&e[7]===10&&e[8]===100&&e[9]===101&&e[10]===98&&e[11]===105&&e[12]===97&&e[13]===110&&e[14]===45&&e[15]===98&&e[16]===105&&e[17]===110&&e[18]===97&&e[19]===114&&e[20]===121?{ext:"deb",mime:"application/x-deb"}:e[0]===33&&e[1]===60&&e[2]===97&&e[3]===114&&e[4]===99&&e[5]===104&&e[6]===62?{ext:"ar",mime:"application/x-unix-archive"}:e[0]===237&&e[1]===171&&e[2]===238&&e[3]===219?{ext:"rpm",mime:"application/x-rpm"}:e[0]===31&&e[1]===160||e[0]===31&&e[1]===157?{ext:"Z",mime:"application/x-compress"}:e[0]===76&&e[1]===90&&e[2]===73&&e[3]===80?{ext:"lz",mime:"application/x-lzip"}:e[0]===208&&e[1]===207&&e[2]===17&&e[3]===224&&e[4]===161&&e[5]===177&&e[6]===26&&e[7]===225?{ext:"msi",mime:"application/x-msi"}:null:null}});var Z1=O((VH,J1)=>{"use strict";var cd="pending",z1="settled",ol="fulfilled",sl="rejected",CR=function(){},G1=typeof global!="undefined"&&typeof global.process!="undefined"&&typeof global.process.emit=="function",AR=typeof setImmediate=="undefined"?setTimeout:setImmediate,hr=[],ld;function IR(){for(var e=0;e<hr.length;e++)hr[e][0](hr[e][1]);hr=[],ld=!1}function ll(e,t){hr.push([e,t]),ld||(ld=!0,AR(IR,0))}function _R(e,t){function a(i){ud(t,i)}function n(i){vr(t,i)}try{e(a,n)}catch(i){n(i)}}function H1(e){var t=e.owner,a=t._state,n=t._data,i=e[a],r=e.then;if(typeof i=="function"){a=ol;try{n=i(n)}catch(o){vr(r,o)}}W1(r,n)||(a===ol&&ud(r,n),a===sl&&vr(r,n))}function W1(e,t){var a;try{if(e===t)throw new TypeError("A promises callback cannot return that same promise.");if(t&&(typeof t=="function"||typeof t=="object")){var n=t.then;if(typeof n=="function")return n.call(t,function(i){a||(a=!0,t===i?V1(e,i):ud(e,i))},function(i){a||(a=!0,vr(e,i))}),!0}}catch(i){return a||vr(e,i),!0}return!1}function ud(e,t){(e===t||!W1(e,t))&&V1(e,t)}function V1(e,t){e._state===cd&&(e._state=z1,e._data=t,ll(TR,e))}function vr(e,t){e._state===cd&&(e._state=z1,e._data=t,ll(kR,e))}function U1(e){e._then=e._then.forEach(H1)}function TR(e){e._state=ol,U1(e)}function kR(e){e._state=sl,U1(e),!e._handled&&G1&&global.process.emit("unhandledRejection",e._data,e)}function FR(e){global.process.emit("rejectionHandled",e)}function Ft(e){if(typeof e!="function")throw new TypeError("Promise resolver "+e+" is not a function");if(!(this instanceof Ft))throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");this._then=[],_R(e,this)}Ft.prototype={constructor:Ft,_state:cd,_then:null,_data:void 0,_handled:!1,then:function(e,t){var a={owner:this,then:new this.constructor(CR),fulfilled:e,rejected:t};return(t||e)&&!this._handled&&(this._handled=!0,this._state===sl&&G1&&ll(FR,this)),this._state===ol||this._state===sl?ll(H1,a):this._then.push(a),a.then},catch:function(e){return this.then(null,e)}};Ft.all=function(e){if(!Array.isArray(e))throw new TypeError("You must pass an array to Promise.all().");return new Ft(function(t,a){var n=[],i=0;function r(l){return i++,function(u){n[l]=u,--i||t(n)}}for(var o=0,s;o<e.length;o++)s=e[o],s&&typeof s.then=="function"?s.then(r(o),a):n[o]=s;i||t(n)})};Ft.race=function(e){if(!Array.isArray(e))throw new TypeError("You must pass an array to Promise.race().");return new Ft(function(t,a){for(var n=0,i;n<e.length;n++)i=e[n],i&&typeof i.then=="function"?i.then(t,a):t(i)})};Ft.resolve=function(e){return e&&typeof e=="object"&&e.constructor===Ft?e:new Ft(function(t){t(e)})};Ft.reject=function(e){return new Ft(function(t,a){a(e)})};J1.exports=Ft});var X1=O((UH,q1)=>{"use strict";q1.exports=typeof Promise=="function"?Promise:Z1()});var cl=O((JH,Y1)=>{"use strict";var $1=Object.getOwnPropertySymbols,PR=Object.prototype.hasOwnProperty,OR=Object.prototype.propertyIsEnumerable;function RR(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function BR(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var t={},a=0;a<10;a++)t["_"+String.fromCharCode(a)]=a;var n=Object.getOwnPropertyNames(t).map(function(r){return t[r]});if(n.join("")!=="0123456789")return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach(function(r){i[r]=r}),Object.keys(Object.assign({},i)).join("")==="abcdefghijklmnopqrst"}catch(r){return!1}}Y1.exports=BR()?Object.assign:function(e,t){for(var a,n=RR(e),i,r=1;r<arguments.length;r++){a=Object(arguments[r]);for(var o in a)PR.call(a,o)&&(n[o]=a[o]);if($1){i=$1(a);for(var s=0;s<i.length;s++)OR.call(a,i[s])&&(n[i[s]]=a[i[s]])}}return n}});var Q1=O((ZH,K1)=>{var NR=require("stream").PassThrough,jR=cl();K1.exports=function(e){e=jR({},e);var t=e.array,a=e.encoding,n=a==="buffer",i=!1;t?i=!(a||n):a=a||"utf8",n&&(a=null);var r=0,o=[],s=new NR({objectMode:i});return a&&s.setEncoding(a),s.on("data",function(l){o.push(l),i?r=o.length:r+=l.length}),s.getBufferedValue=function(){return t?o:n?Buffer.concat(o,r):o.join("")},s.getBufferedLength=function(){return r},s}});var tE=O((qH,ul)=>{"use strict";var eE=X1(),pd=cl(),LR=Q1();function dd(e,t){if(!e)return eE.reject(new Error("Expected a stream"));t=pd({maxBuffer:1/0},t);var a=t.maxBuffer,n,i,r=new eE(function(o,s){n=LR(t),e.once("error",l),e.pipe(n),n.on("data",function(){n.getBufferedLength()>a&&s(new Error("maxBuffer exceeded"))}),n.once("error",l),n.on("end",o),i=function(){e.unpipe&&e.unpipe(n)};function l(u){u&&(u.bufferedData=n.getBufferedValue()),s(u)}});return r.then(i,i),r.then(function(){return n.getBufferedValue()})}ul.exports=dd;ul.exports.buffer=function(e,t){return dd(e,pd({},t,{encoding:"buffer"}))};ul.exports.array=function(e,t){return dd(e,pd({},t,{array:!0}))}});var rE=O((XH,iE)=>{"use strict";var aE=function(e,t,a){return function(){for(var n=this,i=new Array(arguments.length),r=0;r<arguments.length;r++)i[r]=arguments[r];return new t(function(o,s){i.push(function(l,u){if(l)s(l);else if(a.multiArgs){for(var c=new Array(arguments.length-1),f=1;f<arguments.length;f++)c[f-1]=arguments[f];o(c)}else o(u)}),e.apply(n,i)})}},nE=iE.exports=function(e,t,a){typeof t!="function"&&(a=t,t=Promise),a=a||{},a.exclude=a.exclude||[/.+Sync$/];var n=function(r){var o=function(s){return typeof s=="string"?r===s:s.test(r)};return a.include?a.include.some(o):!a.exclude.some(o)},i=typeof e=="function"?function(){return a.excludeMain?e.apply(this,arguments):aE(e,t,a).apply(this,arguments)}:{};return Object.keys(e).reduce(function(r,o){var s=e[o];return r[o]=typeof s=="function"&&n(o)?aE(s,t,a):s,r},i)};nE.all=nE});var cE=O(($H,lE)=>{lE.exports=pl;function pl(){this.pending=0,this.max=1/0,this.listeners=[],this.waiting=[],this.error=null}pl.prototype.go=function(e){this.pending<this.max?sE(this,e):this.waiting.push(e)};pl.prototype.wait=function(e){this.pending===0?e(this.error):this.listeners.push(e)};pl.prototype.hold=function(){return oE(this)};function oE(e){e.pending+=1;var t=!1;return a;function a(i){if(t)throw new Error("callback called twice");if(t=!0,e.error=e.error||i,e.pending-=1,e.waiting.length>0&&e.pending<e.max)sE(e,e.waiting.shift());else if(e.pending===0){var r=e.listeners;e.listeners=[],r.forEach(n)}}function n(i){i(e.error)}}function sE(e,t){t(oE(e))}});var pE=O(gr=>{var br=require("fs"),dl=require("util"),fd=require("stream"),uE=fd.Readable,md=fd.Writable,MR=fd.PassThrough,DR=cE(),fl=require("events").EventEmitter;gr.createFromBuffer=zR;gr.createFromFd=GR;gr.BufferSlicer=Ea;gr.FdSlicer=wa;dl.inherits(wa,fl);function wa(e,t){t=t||{},fl.call(this),this.fd=e,this.pend=new DR,this.pend.max=1,this.refCount=0,this.autoClose=!!t.autoClose}wa.prototype.read=function(e,t,a,n,i){var r=this;r.pend.go(function(o){br.read(r.fd,e,t,a,n,function(s,l,u){o(),i(s,l,u)})})};wa.prototype.write=function(e,t,a,n,i){var r=this;r.pend.go(function(o){br.write(r.fd,e,t,a,n,function(s,l,u){o(),i(s,l,u)})})};wa.prototype.createReadStream=function(e){return new ml(this,e)};wa.prototype.createWriteStream=function(e){return new hl(this,e)};wa.prototype.ref=function(){this.refCount+=1};wa.prototype.unref=function(){var e=this;if(e.refCount-=1,e.refCount>0)return;if(e.refCount<0)throw new Error("invalid unref");e.autoClose&&br.close(e.fd,t);function t(a){a?e.emit("error",a):e.emit("close")}};dl.inherits(ml,uE);function ml(e,t){t=t||{},uE.call(this,t),this.context=e,this.context.ref(),this.start=t.start||0,this.endOffset=t.end,this.pos=this.start,this.destroyed=!1}ml.prototype._read=function(e){var t=this;if(!t.destroyed){var a=Math.min(t._readableState.highWaterMark,e);if(t.endOffset!=null&&(a=Math.min(a,t.endOffset-t.pos)),a<=0){t.destroyed=!0,t.push(null),t.context.unref();return}t.context.pend.go(function(n){if(t.destroyed)return n();var i=new Buffer(a);br.read(t.context.fd,i,0,a,t.pos,function(r,o){r?t.destroy(r):o===0?(t.destroyed=!0,t.push(null),t.context.unref()):(t.pos+=o,t.push(i.slice(0,o))),n()})})}};ml.prototype.destroy=function(e){this.destroyed||(e=e||new Error("stream destroyed"),this.destroyed=!0,this.emit("error",e),this.context.unref())};dl.inherits(hl,md);function hl(e,t){t=t||{},md.call(this,t),this.context=e,this.context.ref(),this.start=t.start||0,this.endOffset=t.end==null?1/0:+t.end,this.bytesWritten=0,this.pos=this.start,this.destroyed=!1,this.on("finish",this.destroy.bind(this))}hl.prototype._write=function(e,t,a){var n=this;if(!n.destroyed){if(n.pos+e.length>n.endOffset){var i=new Error("maximum file length exceeded");i.code="ETOOBIG",n.destroy(),a(i);return}n.context.pend.go(function(r){if(n.destroyed)return r();br.write(n.context.fd,e,0,e.length,n.pos,function(o,s){o?(n.destroy(),r(),a(o)):(n.bytesWritten+=s,n.pos+=s,n.emit("progress"),r(),a())})})}};hl.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.context.unref())};dl.inherits(Ea,fl);function Ea(e,t){fl.call(this),t=t||{},this.refCount=0,this.buffer=e,this.maxChunkSize=t.maxChunkSize||Number.MAX_SAFE_INTEGER}Ea.prototype.read=function(e,t,a,n,i){var r=n+a,o=r-this.buffer.length,s=o>0?o:a;this.buffer.copy(e,t,n,r),setImmediate(function(){i(null,s)})};Ea.prototype.write=function(e,t,a,n,i){e.copy(this.buffer,n,t,t+a),setImmediate(function(){i(null,a,e)})};Ea.prototype.createReadStream=function(e){e=e||{};var t=new MR(e);t.destroyed=!1,t.start=e.start||0,t.endOffset=e.end,t.pos=t.endOffset||this.buffer.length;for(var a=this.buffer.slice(t.start,t.pos),n=0;;){var i=n+this.maxChunkSize;if(i>=a.length){n<a.length&&t.write(a.slice(n,a.length));break}t.write(a.slice(n,i)),n=i}return t.end(),t.destroy=function(){t.destroyed=!0},t};Ea.prototype.createWriteStream=function(e){var t=this;e=e||{};var a=new md(e);return a.start=e.start||0,a.endOffset=e.end==null?this.buffer.length:+e.end,a.bytesWritten=0,a.pos=a.start,a.destroyed=!1,a._write=function(n,i,r){if(!a.destroyed){var o=a.pos+n.length;if(o>a.endOffset){var s=new Error("maximum file length exceeded");s.code="ETOOBIG",a.destroyed=!0,r(s);return}n.copy(t.buffer,a.pos,0,n.length),a.bytesWritten+=n.length,a.pos=o,a.emit("progress"),r()}},a.destroy=function(){a.destroyed=!0},a};Ea.prototype.ref=function(){this.refCount+=1};Ea.prototype.unref=function(){if(this.refCount-=1,this.refCount<0)throw new Error("invalid unref")};function zR(e,t){return new Ea(e,t)}function GR(e,t){return new wa(e,t)}});var mE=O((KH,fE)=>{var za=require("buffer").Buffer,hd=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];typeof Int32Array!="undefined"&&(hd=new Int32Array(hd));function dE(e){if(za.isBuffer(e))return e;var t=typeof za.alloc=="function"&&typeof za.from=="function";if(typeof e=="number")return t?za.alloc(e):new za(e);if(typeof e=="string")return t?za.from(e):new za(e);throw new Error("input must be buffer, number, or string, received "+typeof e)}function HR(e){var t=dE(4);return t.writeInt32BE(e,0),t}function vd(e,t){e=dE(e),za.isBuffer(t)&&(t=t.readUInt32BE(0));for(var a=~~t^-1,n=0;n<e.length;n++)a=hd[(a^e[n])&255]^a>>>8;return a^-1}function bd(){return HR(vd.apply(null,arguments))}bd.signed=function(){return vd.apply(null,arguments)};bd.unsigned=function(){return vd.apply(null,arguments)>>>0};fE.exports=bd});var wE=O(ra=>{var gd=require("fs"),WR=require("zlib"),hE=pE(),VR=mE(),gl=require("util"),xl=require("events").EventEmitter,vE=require("stream").Transform,xd=require("stream").PassThrough,UR=require("stream").Writable;ra.open=JR;ra.fromFd=bE;ra.fromBuffer=ZR;ra.fromRandomAccessReader=yd;ra.dosDateTimeToDate=xE;ra.validateFileName=yE;ra.ZipFile=Ga;ra.Entry=xr;ra.RandomAccessReader=Ha;function JR(e,t,a){typeof t=="function"&&(a=t,t=null),t==null&&(t={}),t.autoClose==null&&(t.autoClose=!0),t.lazyEntries==null&&(t.lazyEntries=!1),t.decodeStrings==null&&(t.decodeStrings=!0),t.validateEntrySizes==null&&(t.validateEntrySizes=!0),t.strictFileNames==null&&(t.strictFileNames=!1),a==null&&(a=bl),gd.open(e,"r",function(n,i){if(n)return a(n);bE(i,t,function(r,o){r&&gd.close(i,bl),a(r,o)})})}function bE(e,t,a){typeof t=="function"&&(a=t,t=null),t==null&&(t={}),t.autoClose==null&&(t.autoClose=!1),t.lazyEntries==null&&(t.lazyEntries=!1),t.decodeStrings==null&&(t.decodeStrings=!0),t.validateEntrySizes==null&&(t.validateEntrySizes=!0),t.strictFileNames==null&&(t.strictFileNames=!1),a==null&&(a=bl),gd.fstat(e,function(n,i){if(n)return a(n);var r=hE.createFromFd(e,{autoClose:!0});yd(r,i.size,t,a)})}function ZR(e,t,a){typeof t=="function"&&(a=t,t=null),t==null&&(t={}),t.autoClose=!1,t.lazyEntries==null&&(t.lazyEntries=!1),t.decodeStrings==null&&(t.decodeStrings=!0),t.validateEntrySizes==null&&(t.validateEntrySizes=!0),t.strictFileNames==null&&(t.strictFileNames=!1);var n=hE.createFromBuffer(e,{maxChunkSize:65536});yd(n,e.length,t,a)}function yd(e,t,a,n){typeof a=="function"&&(n=a,a=null),a==null&&(a={}),a.autoClose==null&&(a.autoClose=!0),a.lazyEntries==null&&(a.lazyEntries=!1),a.decodeStrings==null&&(a.decodeStrings=!0);var i=!!a.decodeStrings;if(a.validateEntrySizes==null&&(a.validateEntrySizes=!0),a.strictFileNames==null&&(a.strictFileNames=!1),n==null&&(n=bl),typeof t!="number")throw new Error("expected totalSize parameter to be a number");if(t>Number.MAX_SAFE_INTEGER)throw new Error("zip file too large. only file sizes up to 2^52 are supported due to JavaScript's Number type being an IEEE 754 double.");e.ref();var r=22,o=65535,s=Math.min(r+o,t),l=ia(s),u=t-l.length;ri(e,l,0,s,u,function(c){if(c)return n(c);for(var f=s-r;f>=0;f-=1)if(l.readUInt32LE(f)===101010256){var p=l.slice(f),b=p.readUInt16LE(4);if(b!==0)return n(new Error("multi-disk zip files are not supported: found disk number: "+b));var d=p.readUInt16LE(10),m=p.readUInt32LE(16),h=p.readUInt16LE(20),v=p.length-r;if(h!==v)return n(new Error("invalid comment length. expected: "+v+". found: "+h));var x=i?vl(p,22,p.length,!1):p.slice(22);if(!(d===65535||m===4294967295))return n(null,new Ga(e,m,t,d,x,a.autoClose,a.lazyEntries,i,a.validateEntrySizes,a.strictFileNames));var E=ia(20),g=u+f-E.length;ri(e,E,0,E.length,g,function(w){if(w)return n(w);if(E.readUInt32LE(0)!==117853008)return n(new Error("invalid zip64 end of central directory locator signature"));var C=oi(E,8),y=ia(56);ri(e,y,0,y.length,C,function(S){return S?n(S):y.readUInt32LE(0)!==101075792?n(new Error("invalid zip64 end of central directory record signature")):(d=oi(y,32),m=oi(y,48),n(null,new Ga(e,m,t,d,x,a.autoClose,a.lazyEntries,i,a.validateEntrySizes,a.strictFileNames)))})});return}n(new Error("end of central directory record signature not found"))})}gl.inherits(Ga,xl);function Ga(e,t,a,n,i,r,o,s,l,u){var c=this;xl.call(c),c.reader=e,c.reader.on("error",function(f){gE(c,f)}),c.reader.once("close",function(){c.emit("close")}),c.readEntryCursor=t,c.fileSize=a,c.entryCount=n,c.comment=i,c.entriesRead=0,c.autoClose=!!r,c.lazyEntries=!!o,c.decodeStrings=!!s,c.validateEntrySizes=!!l,c.strictFileNames=!!u,c.isOpen=!0,c.emittedError=!1,c.lazyEntries||c._readEntry()}Ga.prototype.close=function(){this.isOpen&&(this.isOpen=!1,this.reader.unref())};function Zt(e,t){e.autoClose&&e.close(),gE(e,t)}function gE(e,t){e.emittedError||(e.emittedError=!0,e.emit("error",t))}Ga.prototype.readEntry=function(){if(!this.lazyEntries)throw new Error("readEntry() called without lazyEntries:true");this._readEntry()};Ga.prototype._readEntry=function(){var e=this;if(e.entryCount===e.entriesRead){setImmediate(function(){e.autoClose&&e.close(),!e.emittedError&&e.emit("end")});return}if(!e.emittedError){var t=ia(46);ri(e.reader,t,0,t.length,e.readEntryCursor,function(a){if(a)return Zt(e,a);if(!e.emittedError){var n=new xr,i=t.readUInt32LE(0);if(i!==33639248)return Zt(e,new Error("invalid central directory file header signature: 0x"+i.toString(16)));if(n.versionMadeBy=t.readUInt16LE(4),n.versionNeededToExtract=t.readUInt16LE(6),n.generalPurposeBitFlag=t.readUInt16LE(8),n.compressionMethod=t.readUInt16LE(10),n.lastModFileTime=t.readUInt16LE(12),n.lastModFileDate=t.readUInt16LE(14),n.crc32=t.readUInt32LE(16),n.compressedSize=t.readUInt32LE(20),n.uncompressedSize=t.readUInt32LE(24),n.fileNameLength=t.readUInt16LE(28),n.extraFieldLength=t.readUInt16LE(30),n.fileCommentLength=t.readUInt16LE(32),n.internalFileAttributes=t.readUInt16LE(36),n.externalFileAttributes=t.readUInt32LE(38),n.relativeOffsetOfLocalHeader=t.readUInt32LE(42),n.generalPurposeBitFlag&64)return Zt(e,new Error("strong encryption is not supported"));e.readEntryCursor+=46,t=ia(n.fileNameLength+n.extraFieldLength+n.fileCommentLength),ri(e.reader,t,0,t.length,e.readEntryCursor,function(r){if(r)return Zt(e,r);if(!e.emittedError){var o=(n.generalPurposeBitFlag&2048)!==0;n.fileName=e.decodeStrings?vl(t,0,n.fileNameLength,o):t.slice(0,n.fileNameLength);var s=n.fileNameLength+n.extraFieldLength,l=t.slice(n.fileNameLength,s);n.extraFields=[];for(var u=0;u<l.length-3;){var c=l.readUInt16LE(u+0),f=l.readUInt16LE(u+2),p=u+4,b=p+f;if(b>l.length)return Zt(e,new Error("extra field length exceeds extra field buffer size"));var d=ia(f);l.copy(d,0,p,b),n.extraFields.push({id:c,data:d}),u=b}if(n.fileComment=e.decodeStrings?vl(t,s,s+n.fileCommentLength,o):t.slice(s,s+n.fileCommentLength),n.comment=n.fileComment,e.readEntryCursor+=t.length,e.entriesRead+=1,n.uncompressedSize===4294967295||n.compressedSize===4294967295||n.relativeOffsetOfLocalHeader===4294967295){for(var m=null,u=0;u<n.extraFields.length;u++){var h=n.extraFields[u];if(h.id===1){m=h.data;break}}if(m==null)return Zt(e,new Error("expected zip64 extended information extra field"));var v=0;if(n.uncompressedSize===4294967295){if(v+8>m.length)return Zt(e,new Error("zip64 extended information extra field does not include uncompressed size"));n.uncompressedSize=oi(m,v),v+=8}if(n.compressedSize===4294967295){if(v+8>m.length)return Zt(e,new Error("zip64 extended information extra field does not include compressed size"));n.compressedSize=oi(m,v),v+=8}if(n.relativeOffsetOfLocalHeader===4294967295){if(v+8>m.length)return Zt(e,new Error("zip64 extended information extra field does not include relative header offset"));n.relativeOffsetOfLocalHeader=oi(m,v),v+=8}}if(e.decodeStrings)for(var u=0;u<n.extraFields.length;u++){var h=n.extraFields[u];if(h.id===28789){if(h.data.length<6||h.data.readUInt8(0)!==1)continue;var x=h.data.readUInt32LE(1);if(VR.unsigned(t.slice(0,n.fileNameLength))!==x)continue;n.fileName=vl(h.data,5,h.data.length,!0);break}}if(e.validateEntrySizes&&n.compressionMethod===0){var E=n.uncompressedSize;if(n.isEncrypted()&&(E+=12),n.compressedSize!==E){var g="compressed/uncompressed size mismatch for stored file: "+n.compressedSize+" != "+n.uncompressedSize;return Zt(e,new Error(g))}}if(e.decodeStrings){e.strictFileNames||(n.fileName=n.fileName.replace(/\\/g,"/"));var w=yE(n.fileName,e.validateFileNameOptions);if(w!=null)return Zt(e,new Error(w))}e.emit("entry",n),e.lazyEntries||e._readEntry()}})}})}};Ga.prototype.openReadStream=function(e,t,a){var n=this,i=0,r=e.compressedSize;if(a==null)a=t,t={};else{if(t.decrypt!=null){if(!e.isEncrypted())throw new Error("options.decrypt can only be specified for encrypted entries");if(t.decrypt!==!1)throw new Error("invalid options.decrypt value: "+t.decrypt);if(e.isCompressed()&&t.decompress!==!1)throw new Error("entry is encrypted and compressed, and options.decompress !== false")}if(t.decompress!=null){if(!e.isCompressed())throw new Error("options.decompress can only be specified for compressed entries");if(!(t.decompress===!1||t.decompress===!0))throw new Error("invalid options.decompress value: "+t.decompress)}if(t.start!=null||t.end!=null){if(e.isCompressed()&&t.decompress!==!1)throw new Error("start/end range not allowed for compressed entry without options.decompress === false");if(e.isEncrypted()&&t.decrypt!==!1)throw new Error("start/end range not allowed for encrypted entry without options.decrypt === false")}if(t.start!=null){if(i=t.start,i<0)throw new Error("options.start < 0");if(i>e.compressedSize)throw new Error("options.start > entry.compressedSize")}if(t.end!=null){if(r=t.end,r<0)throw new Error("options.end < 0");if(r>e.compressedSize)throw new Error("options.end > entry.compressedSize");if(r<i)throw new Error("options.end < options.start")}}if(!n.isOpen)return a(new Error("closed"));if(e.isEncrypted()&&t.decrypt!==!1)return a(new Error("entry is encrypted, and options.decrypt !== false"));n.reader.ref();var o=ia(30);ri(n.reader,o,0,o.length,e.relativeOffsetOfLocalHeader,function(s){try{if(s)return a(s);var l=o.readUInt32LE(0);if(l!==67324752)return a(new Error("invalid local file header signature: 0x"+l.toString(16)));var u=o.readUInt16LE(26),c=o.readUInt16LE(28),f=e.relativeOffsetOfLocalHeader+o.length+u+c,p;if(e.compressionMethod===0)p=!1;else if(e.compressionMethod===8)p=t.decompress!=null?t.decompress:!0;else return a(new Error("unsupported compression method: "+e.compressionMethod));var b=f,d=b+e.compressedSize;if(e.compressedSize!==0&&d>n.fileSize)return a(new Error("file data overflows file bounds: "+b+" + "+e.compressedSize+" > "+n.fileSize));var m=n.reader.createReadStream({start:b+i,end:b+r}),h=m;if(p){var v=!1,x=WR.createInflateRaw();m.on("error",function(E){setImmediate(function(){v||x.emit("error",E)})}),m.pipe(x),n.validateEntrySizes?(h=new yr(e.uncompressedSize),x.on("error",function(E){setImmediate(function(){v||h.emit("error",E)})}),x.pipe(h)):h=x,h.destroy=function(){v=!0,x!==h&&x.unpipe(h),m.unpipe(x),m.destroy()}}a(null,h)}finally{n.reader.unref()}})};function xr(){}xr.prototype.getLastModDate=function(){return xE(this.lastModFileDate,this.lastModFileTime)};xr.prototype.isEncrypted=function(){return(this.generalPurposeBitFlag&1)!==0};xr.prototype.isCompressed=function(){return this.compressionMethod===8};function xE(e,t){var a=e&31,n=(e>>5&15)-1,i=(e>>9&127)+1980,r=0,o=(t&31)*2,s=t>>5&63,l=t>>11&31;return new Date(i,n,a,l,s,o,r)}function yE(e){return e.indexOf("\\")!==-1?"invalid characters in fileName: "+e:/^[a-zA-Z]:/.test(e)||/^\//.test(e)?"absolute path: "+e:e.split("/").indexOf("..")!==-1?"invalid relative path: "+e:null}function ri(e,t,a,n,i,r){if(n===0)return setImmediate(function(){r(null,ia(0))});e.read(t,a,n,i,function(o,s){if(o)return r(o);if(s<n)return r(new Error("unexpected EOF"));r()})}gl.inherits(yr,vE);function yr(e){vE.call(this),this.actualByteCount=0,this.expectedByteCount=e}yr.prototype._transform=function(e,t,a){if(this.actualByteCount+=e.length,this.actualByteCount>this.expectedByteCount){var n="too many bytes in the stream. expected "+this.expectedByteCount+". got at least "+this.actualByteCount;return a(new Error(n))}a(null,e)};yr.prototype._flush=function(e){if(this.actualByteCount<this.expectedByteCount){var t="not enough bytes in the stream. expected "+this.expectedByteCount+". got only "+this.actualByteCount;return e(new Error(t))}e()};gl.inherits(Ha,xl);function Ha(){xl.call(this),this.refCount=0}Ha.prototype.ref=function(){this.refCount+=1};Ha.prototype.unref=function(){var e=this;if(e.refCount-=1,e.refCount>0)return;if(e.refCount<0)throw new Error("invalid unref");e.close(t);function t(a){if(a)return e.emit("error",a);e.emit("close")}};Ha.prototype.createReadStream=function(e){var t=e.start,a=e.end;if(t===a){var n=new xd;return setImmediate(function(){n.end()}),n}var i=this._readStreamForRange(t,a),r=!1,o=new yl(this);i.on("error",function(l){setImmediate(function(){r||o.emit("error",l)})}),o.destroy=function(){i.unpipe(o),o.unref(),i.destroy()};var s=new yr(a-t);return o.on("error",function(l){setImmediate(function(){r||s.emit("error",l)})}),s.destroy=function(){r=!0,o.unpipe(s),o.destroy()},i.pipe(o).pipe(s)};Ha.prototype._readStreamForRange=function(e,t){throw new Error("not implemented")};Ha.prototype.read=function(e,t,a,n,i){var r=this.createReadStream({start:n,end:n+a}),o=new UR,s=0;o._write=function(l,u,c){l.copy(e,t+s,0,l.length),s+=l.length,c()},o.on("finish",i),r.on("error",function(l){i(l)}),r.pipe(o)};Ha.prototype.close=function(e){setImmediate(e)};gl.inherits(yl,xd);function yl(e){xd.call(this),this.context=e,this.context.ref(),this.unreffedYet=!1}yl.prototype._flush=function(e){this.unref(),e()};yl.prototype.unref=function(e){this.unreffedYet||(this.unreffedYet=!0,this.context.unref())};var qR="\0\u263A\u263B\u2665\u2666\u2663\u2660\u2022\u25D8\u25CB\u25D9\u2642\u2640\u266A\u266B\u263C\u25BA\u25C4\u2195\u203C\xB6\xA7\u25AC\u21A8\u2191\u2193\u2192\u2190\u221F\u2194\u25B2\u25BC !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u2302\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0";function vl(e,t,a,n){if(n)return e.toString("utf8",t,a);for(var i="",r=t;r<a;r++)i+=qR[e[r]];return i}function oi(e,t){var a=e.readUInt32LE(t),n=e.readUInt32LE(t+4);return n*4294967296+a}var ia;typeof Buffer.allocUnsafe=="function"?ia=function(e){return Buffer.allocUnsafe(e)}:ia=function(e){return new Buffer(e)};function bl(e){if(e)throw e}});var AE=O((eW,CE)=>{"use strict";var EE=D1(),XR=tE(),SE=rE(),$R=wE(),YR=(e,t)=>{let r=e.versionMadeBy>>8;return(t&61440)===40960?"symlink":(t&61440)===16384||r===0&&e.externalFileAttributes===16?"directory":"file"},KR=(e,t)=>{let a={mode:e.externalFileAttributes>>16&65535,mtime:e.getLastModDate(),path:e.fileName};return a.type=YR(e,a.mode),a.mode===0&&a.type==="directory"&&(a.mode=493),a.mode===0&&(a.mode=420),SE(t.openReadStream.bind(t))(e).then(XR.buffer).then(n=>(a.data=n,a.type==="symlink"&&(a.linkname=n.toString()),a)).catch(n=>{throw t.close(),n})},QR=e=>new Promise((t,a)=>{let n=[];e.readEntry(),e.on("entry",i=>{KR(i,e).catch(a).then(r=>{n.push(r),e.readEntry()})}),e.on("error",a),e.on("end",()=>t(n))});CE.exports=()=>e=>Buffer.isBuffer(e)?!EE(e)||EE(e).ext!=="zip"?Promise.resolve([]):SE($R.fromBuffer)(e,{lazyEntries:!0}).then(QR):Promise.reject(new TypeError(`Expected a Buffer, got ${typeof e}`))});var TE=O((tW,_E)=>{"use strict";var IE=(e,t)=>function(){let a=t.promiseModule,n=new Array(arguments.length);for(let i=0;i<arguments.length;i++)n[i]=arguments[i];return new a((i,r)=>{t.errorFirst?n.push(function(o,s){if(t.multiArgs){let l=new Array(arguments.length-1);for(let u=1;u<arguments.length;u++)l[u-1]=arguments[u];o?(l.unshift(o),r(l)):i(l)}else o?r(o):i(s)}):n.push(function(o){if(t.multiArgs){let s=new Array(arguments.length-1);for(let l=0;l<arguments.length;l++)s[l]=arguments[l];i(s)}else i(o)}),e.apply(this,n)})};_E.exports=(e,t)=>{t=Object.assign({exclude:[/.+(Sync|Stream)$/],errorFirst:!0,promiseModule:Promise},t);let a=i=>{let r=o=>typeof o=="string"?i===o:o.test(i);return t.include?t.include.some(r):!t.exclude.some(r)},n;typeof e=="function"?n=function(){return t.excludeMain?e.apply(this,arguments):IE(e,t).apply(this,arguments)}:n=Object.create(Object.getPrototypeOf(e));for(let i in e){let r=e[i];n[i]=typeof r=="function"&&a(i)?IE(r,t):r}return n}});var OE=O((aW,wd)=>{"use strict";var eB=require("fs"),vn=require("path"),kE=TE(),FE={mode:511&~process.umask(),fs:eB},PE=e=>{if(process.platform==="win32"&&/[<>:"|?*]/.test(e.replace(vn.parse(e).root,""))){let a=new Error(`Path contains invalid characters: ${e}`);throw a.code="EINVAL",a}};wd.exports=(e,t)=>Promise.resolve().then(()=>{PE(e),t=Object.assign({},FE,t);let a=kE(t.fs.mkdir),n=kE(t.fs.stat),i=r=>a(r,t.mode).then(()=>r).catch(o=>{if(o.code==="ENOENT"){if(o.message.includes("null bytes")||vn.dirname(r)===r)throw o;return i(vn.dirname(r)).then(()=>i(r))}return n(r).then(s=>s.isDirectory()?r:Promise.reject()).catch(()=>{throw o})});return i(vn.resolve(e))});wd.exports.sync=(e,t)=>{PE(e),t=Object.assign({},FE,t);let a=n=>{try{t.fs.mkdirSync(n,t.mode)}catch(i){if(i.code==="ENOENT"){if(i.message.includes("null bytes")||vn.dirname(n)===n)throw i;return a(vn.dirname(n)),a(n)}try{if(!t.fs.statSync(n).isDirectory())throw new Error("The path is not a directory")}catch(r){throw i}}return n};return a(vn.resolve(e))}});var jE=O((nW,NE)=>{"use strict";var RE=function(e,t,a){return function(){for(var n=this,i=new Array(arguments.length),r=0;r<arguments.length;r++)i[r]=arguments[r];return new t(function(o,s){i.push(function(l,u){if(l)s(l);else if(a.multiArgs){for(var c=new Array(arguments.length-1),f=1;f<arguments.length;f++)c[f-1]=arguments[f];o(c)}else o(u)}),e.apply(n,i)})}},BE=NE.exports=function(e,t,a){typeof t!="function"&&(a=t,t=Promise),a=a||{},a.exclude=a.exclude||[/.+Sync$/];var n=function(r){var o=function(s){return typeof s=="string"?r===s:s.test(r)};return a.include?a.include.some(o):!a.exclude.some(o)},i=typeof e=="function"?function(){return a.excludeMain?e.apply(this,arguments):RE(e,t,a).apply(this,arguments)}:{};return Object.keys(e).reduce(function(r,o){var s=e[o];return r[o]=typeof s=="function"&&n(o)?RE(s,t,a):s,r},i)};BE.all=BE});var ME=O((iW,LE)=>{"use strict";LE.exports=function(t,a){if(a){if(typeof a!="object")throw new TypeError(String(a)+" is not an object. Expected an object that has boolean `includeZero` property.");if("includeZero"in a){if(typeof a.includeZero!="boolean")throw new TypeError(String(a.includeZero)+" is neither true nor false. `includeZero` option must be a Boolean value.");if(a.includeZero&&t===0)return!0}}return Number.isSafeInteger(t)&&t>=1}});var zE=O((rW,DE)=>{"use strict";var wr=require("path"),Er=require("util"),tB=ME();DE.exports=function(t,a,n){if(typeof t!="string")throw new TypeError(Er.inspect(t)+" is not a string. First argument to strip-dirs must be a path string.");if(wr.posix.isAbsolute(t)||wr.win32.isAbsolute(t))throw new Error(`${t} is an absolute path. strip-dirs requires a relative path.`);if(!tB(a,{includeZero:!0}))throw new Error("The Second argument of strip-dirs must be a natural number or 0, but received "+Er.inspect(a)+".");if(n){if(typeof n!="object")throw new TypeError(Er.inspect(n)+" is not an object. Expected an object with a boolean `disallowOverflow` property.");if(Array.isArray(n))throw new TypeError(Er.inspect(n)+" is an array. Expected an object with a boolean `disallowOverflow` property.");if("disallowOverflow"in n&&typeof n.disallowOverflow!="boolean")throw new TypeError(Er.inspect(n.disallowOverflow)+" is neither true nor false. `disallowOverflow` option must be a Boolean value.")}else n={disallowOverflow:!1};let i=wr.normalize(t).split(wr.sep);if(i.length>1&&i[0]==="."&&i.shift(),a>i.length-1){if(n.disallowOverflow)throw new RangeError("Cannot strip more directories than there are.");a=i.length-1}return wr.join.apply(null,i.slice(a))}});var HE=O((oW,GE)=>{"use strict";var wl=require("path"),aB=wy(),nB=il(),iB=O1(),rB=L1(),oB=AE(),Ed=OE(),sB=jE(),lB=zE(),Pt=sB(aB),cB=(e,t)=>t.plugins.length===0?Promise.resolve([]):Promise.all(t.plugins.map(a=>a(e,t))).then(a=>a.reduce((n,i)=>n.concat(i))),Sd=(e,t)=>Pt.realpath(e).catch(a=>{let n=wl.dirname(e);return Sd(n,t)}).then(a=>{if(a.indexOf(t)!==0)throw new Error("Refusing to create a directory outside the output path.");return Ed(e).then(Pt.realpath)}),uB=(e,t)=>Pt.readlink(e).catch(a=>null).then(a=>{if(a)throw new Error("Refusing to write into a symlink");return t}),pB=(e,t,a)=>cB(e,a).then(n=>(a.strip>0&&(n=n.map(i=>(i.path=lB(i.path,a.strip),i)).filter(i=>i.path!==".")),typeof a.filter=="function"&&(n=n.filter(a.filter)),typeof a.map=="function"&&(n=n.map(a.map)),t?Promise.all(n.map(i=>{let r=wl.join(t,i.path),o=i.mode&~process.umask(),s=new Date;return i.type==="directory"?Ed(t).then(l=>Pt.realpath(l)).then(l=>Sd(r,l)).then(()=>Pt.utimes(r,s,i.mtime)).then(()=>i):Ed(t).then(l=>Pt.realpath(l)).then(l=>Sd(wl.dirname(r),l).then(()=>l)).then(l=>i.type==="file"?uB(r,l):l).then(l=>Pt.realpath(wl.dirname(r)).then(u=>{if(u.indexOf(l)!==0)throw new Error("Refusing to write outside output directory: "+u)})).then(()=>i.type==="link"||i.type==="symlink"&&process.platform==="win32"?Pt.link(i.linkname,r):i.type==="symlink"?Pt.symlink(i.linkname,r):Pt.writeFile(r,i.data,{mode:o})).then(()=>i.type==="file"&&Pt.utimes(r,s,i.mtime)).then(()=>i)})):n));GE.exports=(e,t,a)=>typeof e!="string"&&!Buffer.isBuffer(e)?Promise.reject(new TypeError("Input file required")):(typeof t=="object"&&(a=t,t=null),a=Object.assign({plugins:[nB(),iB(),rB(),oB()]},a),(typeof e=="string"?Pt.readFile(e):Promise.resolve(e)).then(i=>pB(i,t,a)))});var VE=O((sW,WE)=>{"use strict";var dB=/[|\\{}()[\]^$+*?.]/g;WE.exports=function(e){if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(dB,"\\$&")}});var JE=O((lW,UE)=>{"use strict";var fB=VE();UE.exports=function(e,t){if(typeof e!="string"||typeof t!="string")throw new TypeError("Expected a string");return e.replace(new RegExp("(?:"+fB(t)+"){2,}","g"),t)}});var ZE=O((cW,Cd)=>{"use strict";Cd.exports=()=>/[<>:"\/\\|?*\x00-\x1F]/g;Cd.exports.windowsNames=()=>/^(con|prn|aux|nul|com[0-9]|lpt[0-9])$/i});var XE=O((uW,qE)=>{"use strict";var mB=/[|\\{}()[\]^$+*?.]/g;qE.exports=function(e){if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(mB,"\\$&")}});var YE=O((pW,$E)=>{"use strict";var hB=XE();$E.exports=function(e,t){if(typeof e!="string"||typeof t!="string")throw new TypeError;return t=hB(t),e.replace(new RegExp("^"+t+"|"+t+"$","g"),"")}});var QE=O((dW,Id)=>{"use strict";var El=require("path"),vB=JE(),Ad=ZE(),bB=YE(),gB=100,KE=/[\u0000-\u001f\u0080-\u009f]/g,xB=/^\.+/,Sl=(e,t={})=>{if(typeof e!="string")throw new TypeError("Expected a string");let a=t.replacement===void 0?"!":t.replacement;if(Ad().test(a)&&KE.test(a))throw new Error("Replacement string cannot contain reserved filename characters");return e=e.replace(Ad(),a),e=e.replace(KE,a),e=e.replace(xB,a),a.length>0&&(e=vB(e,a),e=e.length>1?bB(e,a):e),e=Ad.windowsNames().test(e)?e+a:e,e=e.slice(0,gB),e};Sl.path=(e,t)=>(e=El.resolve(e),El.join(El.dirname(e),Sl(El.basename(e),t)));Id.exports=Sl;Id.exports.default=Sl});var aS=O((fW,tS)=>{var yB=ed(),wB=td(),_d=require("fs"),Sr=function(){},EB=/^v?\.0/.test(process.version),Cl=function(e){return typeof e=="function"},SB=function(e){return!EB||!_d?!1:(e instanceof(_d.ReadStream||Sr)||e instanceof(_d.WriteStream||Sr))&&Cl(e.close)},CB=function(e){return e.setHeader&&Cl(e.abort)},AB=function(e,t,a,n){n=yB(n);var i=!1;e.on("close",function(){i=!0}),wB(e,{readable:t,writable:a},function(o){if(o)return n(o);i=!0,n()});var r=!1;return function(o){if(!i&&!r){if(r=!0,SB(e))return e.close(Sr);if(CB(e))return e.abort();if(Cl(e.destroy))return e.destroy();n(o||new Error("stream was destroyed"))}}},eS=function(e){e()},IB=function(e,t){return e.pipe(t)},_B=function(){var e=Array.prototype.slice.call(arguments),t=Cl(e[e.length-1]||Sr)&&e.pop()||Sr;if(Array.isArray(e[0])&&(e=e[0]),e.length<2)throw new Error("pump requires two streams per minimum");var a,n=e.map(function(i,r){var o=r<e.length-1,s=r>0;return AB(i,o,s,function(l){a||(a=l),l&&n.forEach(eS),!o&&(n.forEach(eS),t(a))})});return e.reduce(IB)};tS.exports=_B});var iS=O((mW,nS)=>{"use strict";var{PassThrough:TB}=require("stream");nS.exports=e=>{e=Object.assign({},e);let{array:t}=e,{encoding:a}=e,n=a==="buffer",i=!1;t?i=!(a||n):a=a||"utf8",n&&(a=null);let r=0,o=[],s=new TB({objectMode:i});return a&&s.setEncoding(a),s.on("data",l=>{o.push(l),i?r=o.length:r+=l.length}),s.getBufferedValue=()=>t?o:n?Buffer.concat(o,r):o.join(""),s.getBufferedLength=()=>r,s}});var rS=O((hW,Cr)=>{"use strict";var kB=aS(),FB=iS(),Al=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};function Td(e,t){if(!e)return Promise.reject(new Error("Expected a stream"));t=Object.assign({maxBuffer:1/0},t);let{maxBuffer:a}=t,n;return new Promise((i,r)=>{let o=s=>{s&&(s.bufferedData=n.getBufferedValue()),r(s)};n=kB(e,FB(t),s=>{if(s){o(s);return}i()}),n.on("data",()=>{n.getBufferedLength()>a&&o(new Al)})}).then(()=>n.getBufferedValue())}Cr.exports=Td;Cr.exports.buffer=(e,t)=>Td(e,Object.assign({},t,{encoding:"buffer"}));Cr.exports.array=(e,t)=>Td(e,Object.assign({},t,{array:!0}));Cr.exports.MaxBufferError=Al});var sS=O((vW,oS)=>{"use strict";oS.exports=function(e){return encodeURIComponent(e).replace(/[!'()*]/g,function(t){return"%"+t.charCodeAt(0).toString(16).toUpperCase()})}});var dS=O((bW,pS)=>{"use strict";var uS="%[a-f0-9]{2}",lS=new RegExp("("+uS+")|([^%]+?)","gi"),cS=new RegExp("("+uS+")+","gi");function kd(e,t){try{return[decodeURIComponent(e.join(""))]}catch(i){}if(e.length===1)return e;t=t||1;var a=e.slice(0,t),n=e.slice(t);return Array.prototype.concat.call([],kd(a),kd(n))}function PB(e){try{return decodeURIComponent(e)}catch(n){for(var t=e.match(lS)||[],a=1;a<t.length;a++)e=kd(t,a).join(""),t=e.match(lS)||[];return e}}function OB(e){for(var t={"%FE%FF":"\uFFFD\uFFFD","%FF%FE":"\uFFFD\uFFFD"},a=cS.exec(e);a;){try{t[a[0]]=decodeURIComponent(a[0])}catch(s){var n=PB(a[0]);n!==a[0]&&(t[a[0]]=n)}a=cS.exec(e)}t["%C2"]="\uFFFD";for(var i=Object.keys(t),r=0;r<i.length;r++){var o=i[r];e=e.replace(new RegExp(o,"g"),t[o])}return e}pS.exports=function(e){if(typeof e!="string")throw new TypeError("Expected `encodedURI` to be of type `string`, got `"+typeof e+"`");try{return e=e.replace(/\+/g," "),decodeURIComponent(e)}catch(t){return OB(e)}}});var gS=O(Ar=>{"use strict";var RB=sS(),mS=cl(),fS=dS();function BB(e){switch(e.arrayFormat){case"index":return function(t,a,n){return a===null?[Ot(t,e),"[",n,"]"].join(""):[Ot(t,e),"[",Ot(n,e),"]=",Ot(a,e)].join("")};case"bracket":return function(t,a){return a===null?Ot(t,e):[Ot(t,e),"[]=",Ot(a,e)].join("")};default:return function(t,a){return a===null?Ot(t,e):[Ot(t,e),"=",Ot(a,e)].join("")}}}function NB(e){var t;switch(e.arrayFormat){case"index":return function(a,n,i){if(t=/\[(\d*)\]$/.exec(a),a=a.replace(/\[\d*\]$/,""),!t){i[a]=n;return}i[a]===void 0&&(i[a]={}),i[a][t[1]]=n};case"bracket":return function(a,n,i){if(t=/(\[\])$/.exec(a),a=a.replace(/\[\]$/,""),t){if(i[a]===void 0){i[a]=[n];return}}else{i[a]=n;return}i[a]=[].concat(i[a],n)};default:return function(a,n,i){if(i[a]===void 0){i[a]=n;return}i[a]=[].concat(i[a],n)}}}function Ot(e,t){return t.encode?t.strict?RB(e):encodeURIComponent(e):e}function hS(e){return Array.isArray(e)?e.sort():typeof e=="object"?hS(Object.keys(e)).sort(function(t,a){return Number(t)-Number(a)}).map(function(t){return e[t]}):e}function vS(e){var t=e.indexOf("?");return t===-1?"":e.slice(t+1)}function bS(e,t){t=mS({arrayFormat:"none"},t);var a=NB(t),n=Object.create(null);return typeof e!="string"||(e=e.trim().replace(/^[?#&]/,""),!e)?n:(e.split("&").forEach(function(i){var r=i.replace(/\+/g," ").split("="),o=r.shift(),s=r.length>0?r.join("="):void 0;s=s===void 0?null:fS(s),a(fS(o),s,n)}),Object.keys(n).sort().reduce(function(i,r){var o=n[r];return o&&typeof o=="object"&&!Array.isArray(o)?i[r]=hS(o):i[r]=o,i},Object.create(null)))}Ar.extract=vS;Ar.parse=bS;Ar.stringify=function(e,t){var a={encode:!0,strict:!0,arrayFormat:"none"};t=mS(a,t),t.sort===!1&&(t.sort=function(){});var n=BB(t);return e?Object.keys(e).sort(t.sort).map(function(i){var r=e[i];if(r===void 0)return"";if(r===null)return Ot(i,t);if(Array.isArray(r)){var o=[];return r.slice().forEach(function(s){s!==void 0&&o.push(n(i,s,o.length))}),o.join("&")}return Ot(i,t)+"="+Ot(r,t)}).filter(function(i){return i.length>0}).join("&"):""};Ar.parseUrl=function(e,t){return{url:e.split("?")[0]||"",query:bS(vS(e),t)}}});var Fd=O((xW,xS)=>{"use strict";xS.exports=(e,t)=>{if(typeof e!="string")throw new TypeError(`Expected \`url\` to be of type \`string\`, got \`${typeof e}\``);return e=e.trim(),t=Object.assign({https:!1},t),/^\.*\/|^(?!localhost)\w+:/.test(e)?e:e.replace(/^(?!(?:\w+:)?\/\/)/,t.https?"https://":"http://")}});var Pd=O((yW,yS)=>{"use strict";var jB=Object.prototype.toString;yS.exports=function(e){var t;return jB.call(e)==="[object Object]"&&(t=Object.getPrototypeOf(e),t===null||t===Object.getPrototypeOf({}))}});var ES=O((wW,wS)=>{"use strict";var Od=Pd();wS.exports=(e,t)=>{if(!Od(e))throw new TypeError("Expected a plain object");if(t=t||{},typeof t=="function")throw new TypeError("Specify the compare function as an option instead");let a=t.deep,n=[],i=[],r=o=>{let s=n.indexOf(o);if(s!==-1)return i[s];let l={},u=Object.keys(o).sort(t.compare);n.push(o),i.push(l);for(let c=0;c<u.length;c++){let f=u[c],p=o[f];if(a&&Array.isArray(p)){let b=[];for(let d=0;d<p.length;d++)b[d]=Od(p[d])?r(p[d]):p[d];l[f]=b;continue}l[f]=a&&Od(p)?r(p):p}return l};return r(e)}});var IS=O((EW,AS)=>{"use strict";var Rd=require("url"),LB=require("punycode"),SS=gS(),MB=Fd(),DB=ES(),zB={"http:":80,"https:":443,"ftp:":21},GB={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function CS(e,t){return t.some(a=>a instanceof RegExp?a.test(e):a===e)}AS.exports=(e,t)=>{if(t=Object.assign({normalizeProtocol:!0,normalizeHttps:!1,stripFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},t),typeof e!="string")throw new TypeError("Expected a string");let a=e.startsWith("//");e=MB(e.trim()).replace(/^\/\//,"http://");let n=Rd.parse(e);if(t.normalizeHttps&&n.protocol==="https:"&&(n.protocol="http:"),!n.hostname&&!n.pathname)throw new Error("Invalid URL");delete n.host,delete n.query,t.stripFragment&&delete n.hash;let i=zB[n.protocol];if(Number(n.port)===i&&delete n.port,n.pathname&&(n.pathname=n.pathname.replace(/\/{2,}/g,"/")),n.pathname&&(n.pathname=decodeURI(n.pathname)),t.removeDirectoryIndex===!0&&(t.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(t.removeDirectoryIndex)&&t.removeDirectoryIndex.length>0){let o=n.pathname.split("/"),s=o[o.length-1];CS(s,t.removeDirectoryIndex)&&(o=o.slice(0,o.length-1),n.pathname=o.slice(1).join("/")+"/")}if(GB[n.protocol]){let o=n.protocol+"//"+n.hostname,s=Rd.resolve(o,n.pathname);n.pathname=s.replace(o,"")}n.hostname&&(n.hostname=LB.toUnicode(n.hostname).toLowerCase(),n.hostname=n.hostname.replace(/\.$/,""),t.stripWWW&&(n.hostname=n.hostname.replace(/^www\./,""))),n.search==="?"&&delete n.search;let r=SS.parse(n.search);if(Array.isArray(t.removeQueryParameters))for(let o in r)CS(o,t.removeQueryParameters)&&delete r[o];return t.sortQueryParameters&&(n.search=SS.stringify(DB(r))),n.search!==null&&(n.search=decodeURIComponent(n.search)),e=Rd.format(n),(t.removeTrailingSlash||n.pathname==="/")&&(e=e.replace(/\/$/,"")),a&&!t.normalizeProtocol&&(e=e.replace(/^http:\/\//,"//")),e}});var TS=O((SW,_S)=>{"use strict";var HB=require("stream").PassThrough;_S.exports=e=>{e=Object.assign({},e);let t=e.array,a=e.encoding,n=a==="buffer",i=!1;t?i=!(a||n):a=a||"utf8",n&&(a=null);let r=0,o=[],s=new HB({objectMode:i});return a&&s.setEncoding(a),s.on("data",l=>{o.push(l),i?r=o.length:r+=l.length}),s.getBufferedValue=()=>t?o:n?Buffer.concat(o,r):o.join(""),s.getBufferedLength=()=>r,s}});var kS=O((CW,Il)=>{"use strict";var WB=TS();function Bd(e,t){if(!e)return Promise.reject(new Error("Expected a stream"));t=Object.assign({maxBuffer:1/0},t);let a=t.maxBuffer,n,i,r=new Promise((o,s)=>{let l=u=>{u&&(u.bufferedData=n.getBufferedValue()),s(u)};n=WB(t),e.once("error",l),e.pipe(n),n.on("data",()=>{n.getBufferedLength()>a&&s(new Error("maxBuffer exceeded"))}),n.once("error",l),n.on("end",o),i=()=>{e.unpipe&&e.unpipe(n)}});return r.then(i,i),r.then(()=>n.getBufferedValue())}Il.exports=Bd;Il.exports.buffer=(e,t)=>Bd(e,Object.assign({},t,{encoding:"buffer"}));Il.exports.array=(e,t)=>Bd(e,Object.assign({},t,{array:!0}))});var PS=O((AW,FS)=>{"use strict";function VB(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var UB=[200,203,204,206,300,301,404,405,410,414,501],JB=[200,203,204,300,301,302,303,307,308,404,405,410,414,501],ZB={connection:!0,"keep-alive":!0,"proxy-authenticate":!0,"proxy-authorization":!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0},qB={"content-length":!0,"content-encoding":!0,"transfer-encoding":!0,"content-range":!0};function Nd(e){var t={};if(!e)return t;for(var a=e.trim().split(/\s*,\s*/),r=a,n=Array.isArray(r),i=0,r=n?r:r[Symbol.iterator]();;){var o;if(n){if(i>=r.length)break;o=r[i++]}else{if(i=r.next(),i.done)break;o=i.value}var s=o,l=s.split(/\s*=\s*/,2),u=l[0],c=l[1];t[u]=c===void 0?!0:c.replace(/^"|"$/g,"")}return t}function XB(e){var t=[];for(var a in e){var n=e[a];t.push(n===!0?a:a+"="+n)}if(t.length)return t.join(", ")}FS.exports=function(){function e(t,a){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=n.shared,r=n.cacheHeuristic,o=n.immutableMinTimeToLive,s=n.ignoreCargoCult,l=n._fromObject;if(VB(this,e),l){this._fromObject(l);return}if(!a||!a.headers)throw Error("Response headers missing");this._assertRequestHasHeaders(t),this._responseTime=this.now(),this._isShared=i!==!1,this._cacheHeuristic=r!==void 0?r:.1,this._immutableMinTtl=o!==void 0?o:24*3600*1e3,this._status="status"in a?a.status:200,this._resHeaders=a.headers,this._rescc=Nd(a.headers["cache-control"]),this._method="method"in t?t.method:"GET",this._url=t.url,this._host=t.headers.host,this._noAuthorization=!t.headers.authorization,this._reqHeaders=a.headers.vary?t.headers:null,this._reqcc=Nd(t.headers["cache-control"]),s&&"pre-check"in this._rescc&&"post-check"in this._rescc&&(delete this._rescc["pre-check"],delete this._rescc["post-check"],delete this._rescc["no-cache"],delete this._rescc["no-store"],delete this._rescc["must-revalidate"],this._resHeaders=Object.assign({},this._resHeaders,{"cache-control":XB(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),!a.headers["cache-control"]&&/no-cache/.test(a.headers.pragma)&&(this._rescc["no-cache"]=!0)}return e.prototype.now=function(){return Date.now()},e.prototype.storable=function(){return!!(!this._reqcc["no-store"]&&(this._method==="GET"||this._method==="HEAD"||this._method==="POST"&&this._hasExplicitExpiration())&&JB.indexOf(this._status)!==-1&&!this._rescc["no-store"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc.public||this._rescc["max-age"]||this._rescc["s-maxage"]||UB.indexOf(this._status)!==-1))},e.prototype._hasExplicitExpiration=function(){return this._isShared&&this._rescc["s-maxage"]||this._rescc["max-age"]||this._resHeaders.expires},e.prototype._assertRequestHasHeaders=function(a){if(!a||!a.headers)throw Error("Request headers missing")},e.prototype.satisfiesWithoutRevalidation=function(a){this._assertRequestHasHeaders(a);var n=Nd(a.headers["cache-control"]);if(n["no-cache"]||/no-cache/.test(a.headers.pragma)||n["max-age"]&&this.age()>n["max-age"]||n["min-fresh"]&&this.timeToLive()<1e3*n["min-fresh"])return!1;if(this.stale()){var i=n["max-stale"]&&!this._rescc["must-revalidate"]&&(n["max-stale"]===!0||n["max-stale"]>this.age()-this.maxAge());if(!i)return!1}return this._requestMatches(a,!1)},e.prototype._requestMatches=function(a,n){return(!this._url||this._url===a.url)&&this._host===a.headers.host&&(!a.method||this._method===a.method||n&&a.method==="HEAD")&&this._varyMatches(a)},e.prototype._allowsStoringAuthenticated=function(){return this._rescc["must-revalidate"]||this._rescc.public||this._rescc["s-maxage"]},e.prototype._varyMatches=function(a){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary==="*")return!1;for(var n=this._resHeaders.vary.trim().toLowerCase().split(/\s*,\s*/),o=n,i=Array.isArray(o),r=0,o=i?o:o[Symbol.iterator]();;){var s;if(i){if(r>=o.length)break;s=o[r++]}else{if(r=o.next(),r.done)break;s=r.value}var l=s;if(a.headers[l]!==this._reqHeaders[l])return!1}return!0},e.prototype._copyWithoutHopByHopHeaders=function(a){var n={};for(var i in a)ZB[i]||(n[i]=a[i]);if(a.connection)for(var r=a.connection.trim().split(/\s*,\s*/),l=r,o=Array.isArray(l),s=0,l=o?l:l[Symbol.iterator]();;){var u;if(o){if(s>=l.length)break;u=l[s++]}else{if(s=l.next(),s.done)break;u=s.value}var c=u;delete n[c]}if(n.warning){var f=n.warning.split(/,/).filter(function(p){return!/^\s*1[0-9][0-9]/.test(p)});f.length?n.warning=f.join(",").trim():delete n.warning}return n},e.prototype.responseHeaders=function(){var a=this._copyWithoutHopByHopHeaders(this._resHeaders),n=this.age();return n>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(a.warning=(a.warning?`${a.warning}, `:"")+'113 - "rfc7234 5.5.4"'),a.age=`${Math.round(n)}`,a},e.prototype.date=function(){var a=Date.parse(this._resHeaders.date),n=8*3600*1e3;return Number.isNaN(a)||a<this._responseTime-n||a>this._responseTime+n?this._responseTime:a},e.prototype.age=function(){var a=Math.max(0,(this._responseTime-this.date())/1e3);if(this._resHeaders.age){var n=this._ageValue();n>a&&(a=n)}var i=(this.now()-this._responseTime)/1e3;return a+i},e.prototype._ageValue=function(){var a=parseInt(this._resHeaders.age);return isFinite(a)?a:0},e.prototype.maxAge=function(){if(!this.storable()||this._rescc["no-cache"]||this._isShared&&this._resHeaders["set-cookie"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary==="*")return 0;if(this._isShared){if(this._rescc["proxy-revalidate"])return 0;if(this._rescc["s-maxage"])return parseInt(this._rescc["s-maxage"],10)}if(this._rescc["max-age"])return parseInt(this._rescc["max-age"],10);var a=this._rescc.immutable?this._immutableMinTtl:0,n=this.date();if(this._resHeaders.expires){var i=Date.parse(this._resHeaders.expires);return Number.isNaN(i)||i<n?0:Math.max(a,(i-n)/1e3)}if(this._resHeaders["last-modified"]){var r=Date.parse(this._resHeaders["last-modified"]);if(isFinite(r)&&n>r)return Math.max(a,(n-r)/1e3*this._cacheHeuristic)}return a},e.prototype.timeToLive=function(){return Math.max(0,this.maxAge()-this.age())*1e3},e.prototype.stale=function(){return this.maxAge()<=this.age()},e.fromObject=function(a){return new this(void 0,void 0,{_fromObject:a})},e.prototype._fromObject=function(a){if(this._responseTime)throw Error("Reinitialized");if(!a||a.v!==1)throw Error("Invalid serialization");this._responseTime=a.t,this._isShared=a.sh,this._cacheHeuristic=a.ch,this._immutableMinTtl=a.imm!==void 0?a.imm:24*3600*1e3,this._status=a.st,this._resHeaders=a.resh,this._rescc=a.rescc,this._method=a.m,this._url=a.u,this._host=a.h,this._noAuthorization=a.a,this._reqHeaders=a.reqh,this._reqcc=a.reqcc},e.prototype.toObject=function(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}},e.prototype.revalidationHeaders=function(a){this._assertRequestHasHeaders(a);var n=this._copyWithoutHopByHopHeaders(a.headers);if(delete n["if-range"],!this._requestMatches(a,!0)||!this.storable())return delete n["if-none-match"],delete n["if-modified-since"],n;this._resHeaders.etag&&(n["if-none-match"]=n["if-none-match"]?`${n["if-none-match"]}, ${this._resHeaders.etag}`:this._resHeaders.etag);var i=n["accept-ranges"]||n["if-match"]||n["if-unmodified-since"]||this._method&&this._method!="GET";if(i){if(delete n["if-modified-since"],n["if-none-match"]){var r=n["if-none-match"].split(/,/).filter(function(o){return!/^\s*W\//.test(o)});r.length?n["if-none-match"]=r.join(",").trim():delete n["if-none-match"]}}else this._resHeaders["last-modified"]&&!n["if-modified-since"]&&(n["if-modified-since"]=this._resHeaders["last-modified"]);return n},e.prototype.revalidatedPolicy=function(a,n){if(this._assertRequestHasHeaders(a),!n||!n.headers)throw Error("Response headers missing");var i=!1;if(n.status!==void 0&&n.status!=304?i=!1:n.headers.etag&&!/^\s*W\//.test(n.headers.etag)?i=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\s*W\//,"")===n.headers.etag:this._resHeaders.etag&&n.headers.etag?i=this._resHeaders.etag.replace(/^\s*W\//,"")===n.headers.etag.replace(/^\s*W\//,""):this._resHeaders["last-modified"]?i=this._resHeaders["last-modified"]===n.headers["last-modified"]:!this._resHeaders.etag&&!this._resHeaders["last-modified"]&&!n.headers.etag&&!n.headers["last-modified"]&&(i=!0),!i)return{policy:new this.constructor(a,n),modified:!0};var r={};for(var o in this._resHeaders)r[o]=o in n.headers&&!qB[o]?n.headers[o]:this._resHeaders[o];var s=Object.assign({},n,{status:this._status,method:this._method,headers:r});return{policy:new this.constructor(a,s),modified:!1}},e}()});var jd=O((IW,OS)=>{"use strict";OS.exports=function(e){for(var t={},a=Object.keys(Object(e)),n=0;n<a.length;n++)t[a[n].toLowerCase()]=e[a[n]];return t}});var BS=O((_W,RS)=>{"use strict";var $B=require("stream").Readable,YB=jd(),Ld=class extends $B{constructor(t,a,n,i){if(typeof t!="number")throw new TypeError("Argument `statusCode` should be a number");if(typeof a!="object")throw new TypeError("Argument `headers` should be an object");if(!(n instanceof Buffer))throw new TypeError("Argument `body` should be a buffer");if(typeof i!="string")throw new TypeError("Argument `url` should be a string");super(),this.statusCode=t,this.headers=YB(a),this.body=n,this.url=i}_read(){this.push(this.body),this.push(null)}};RS.exports=Ld});var jS=O((TW,NS)=>{"use strict";NS.exports=function(e){for(var t={},a=Object.keys(Object(e)),n=0;n<a.length;n++)t[a[n].toLowerCase()]=e[a[n]];return t}});var Md=O((kW,LS)=>{"use strict";var KB=["destroy","setTimeout","socket","headers","trailers","rawHeaders","statusCode","httpVersion","httpVersionMinor","httpVersionMajor","rawTrailers","statusMessage"];LS.exports=(e,t)=>{let a=new Set(Object.keys(e).concat(KB));for(let n of a)n in t||(t[n]=typeof e[n]=="function"?e[n].bind(e):e[n])}});var DS=O((FW,MS)=>{"use strict";var QB=require("stream").PassThrough,eN=Md(),tN=e=>{if(!(e&&e.pipe))throw new TypeError("Parameter `response` must be a response stream.");let t=new QB;return eN(e,t),e.pipe(t)};MS.exports=tN});var zS=O(Dd=>{Dd.stringify=function e(t){if(typeof t=="undefined")return t;if(t&&Buffer.isBuffer(t))return JSON.stringify(":base64:"+t.toString("base64"));if(t&&t.toJSON&&(t=t.toJSON()),t&&typeof t=="object"){var a="",n=Array.isArray(t);a=n?"[":"{";var i=!0;for(var r in t){var o=typeof t[r]=="function"||!n&&typeof t[r]=="undefined";Object.hasOwnProperty.call(t,r)&&!o&&(i||(a+=","),i=!1,n?t[r]==null?a+="null":a+=e(t[r]):t[r]!==void 0&&(a+=e(r)+":"+e(t[r])))}return a+=n?"]":"}",a}else return typeof t=="string"?JSON.stringify(/^:/.test(t)?":"+t:t):typeof t=="undefined"?"null":JSON.stringify(t)};Dd.parse=function(e){return JSON.parse(e,function(t,a){return typeof a=="string"?/^:base64:/.test(a)?new Buffer(a.substring(8),"base64"):/^:/.test(a)?a.substring(1):a:a})}});var WS=O((OW,HS)=>{"use strict";var aN=require("events"),GS=zS(),nN=e=>{let t={redis:"@keyv/redis",mongodb:"@keyv/mongo",mongo:"@keyv/mongo",sqlite:"@keyv/sqlite",postgresql:"@keyv/postgres",postgres:"@keyv/postgres",mysql:"@keyv/mysql"};if(e.adapter||e.uri){let a=e.adapter||/^[^:]*/.exec(e.uri)[0];return new(require(t[a]))(e)}return new Map},zd=class extends aN{constructor(t,a){if(super(),this.opts=Object.assign({namespace:"keyv"},typeof t=="string"?{uri:t}:t,a),!this.opts.store){let n=Object.assign({},this.opts);this.opts.store=nN(n)}typeof this.opts.store.on=="function"&&this.opts.store.on("error",n=>this.emit("error",n)),this.opts.store.namespace=this.opts.namespace}_getKeyPrefix(t){return`${this.opts.namespace}:${t}`}get(t){t=this._getKeyPrefix(t);let a=this.opts.store;return Promise.resolve().then(()=>a.get(t)).then(n=>{if(n=typeof n=="string"?GS.parse(n):n,n!==void 0){if(typeof n.expires=="number"&&Date.now()>n.expires){this.delete(t);return}return n.value}})}set(t,a,n){t=this._getKeyPrefix(t),typeof n=="undefined"&&(n=this.opts.ttl),n===0&&(n=void 0);let i=this.opts.store;return Promise.resolve().then(()=>{let r=typeof n=="number"?Date.now()+n:null;return a={value:a,expires:r},i.set(t,GS.stringify(a),n)}).then(()=>!0)}delete(t){t=this._getKeyPrefix(t);let a=this.opts.store;return Promise.resolve().then(()=>a.delete(t))}clear(){let t=this.opts.store;return Promise.resolve().then(()=>t.clear())}};HS.exports=zd});var ZS=O((RW,JS)=>{"use strict";var iN=require("events"),VS=require("url"),rN=IS(),oN=kS(),Gd=PS(),US=BS(),sN=jS(),lN=DS(),cN=WS(),Ir=class e{constructor(t,a){if(typeof t!="function")throw new TypeError("Parameter `request` must be a function");return this.cache=new cN({uri:typeof a=="string"&&a,store:typeof a!="string"&&a,namespace:"cacheable-request"}),this.createCacheableRequest(t)}createCacheableRequest(t){return(a,n)=>{typeof a=="string"&&(a=VS.parse(a)),a=Object.assign({headers:{},method:"GET",cache:!0,strictTtl:!1,automaticFailover:!1},a),a.headers=sN(a.headers);let i=new iN,r=rN(VS.format(a)),o=`${a.method}:${r}`,s=!1,l=!1,u=f=>{l=!0;let p=b=>{if(s){let m=Gd.fromObject(s.cachePolicy).revalidatedPolicy(f,b);if(!m.modified){let h=m.policy.responseHeaders();b=new US(b.statusCode,h,s.body,s.url),b.cachePolicy=m.policy,b.fromCache=!0}}b.fromCache||(b.cachePolicy=new Gd(f,b),b.fromCache=!1);let d;f.cache&&b.cachePolicy.storable()?(d=lN(b),oN.buffer(b).then(m=>{let h={cachePolicy:b.cachePolicy.toObject(),url:b.url,statusCode:b.fromCache?s.statusCode:b.statusCode,body:m},v=f.strictTtl?b.cachePolicy.timeToLive():void 0;return this.cache.set(o,h,v)}).catch(m=>i.emit("error",new e.CacheError(m)))):f.cache&&s&&this.cache.delete(o).catch(m=>i.emit("error",new e.CacheError(m))),i.emit("response",d||b),typeof n=="function"&&n(d||b)};try{let b=t(f,p);i.emit("request",b)}catch(b){i.emit("error",new e.RequestError(b))}},c=f=>Promise.resolve().then(()=>f.cache?this.cache.get(o):void 0).then(p=>{if(typeof p=="undefined")return u(f);let b=Gd.fromObject(p.cachePolicy);if(b.satisfiesWithoutRevalidation(f)){let d=b.responseHeaders(),m=new US(p.statusCode,d,p.body,p.url);m.cachePolicy=b,m.fromCache=!0,i.emit("response",m),typeof n=="function"&&n(m)}else s=p,f.headers=b.revalidationHeaders(f),u(f)});return this.cache.on("error",f=>i.emit("error",new e.CacheError(f))),c(a).catch(f=>{a.automaticFailover&&!l&&u(a),i.emit("error",new e.CacheError(f))}),i}}};Ir.RequestError=class extends Error{constructor(e){super(e.message),this.name="RequestError",Object.assign(this,e)}};Ir.CacheError=class extends Error{constructor(e){super(e.message),this.name="CacheError",Object.assign(this,e)}};JS.exports=Ir});var qS=O((jW,Wd)=>{"use strict";var Hd=require("stream");function si(e,t,a){typeof a=="undefined"&&(a=t,t=e,e=null),Hd.Duplex.call(this,e),typeof a.read!="function"&&(a=new Hd.Readable(e).wrap(a)),this._writable=t,this._readable=a,this._waiting=!1;var n=this;t.once("finish",function(){n.end()}),this.once("finish",function(){t.end()}),a.on("readable",function(){n._waiting&&(n._waiting=!1,n._read())}),a.once("end",function(){n.push(null)}),(!e||typeof e.bubbleErrors=="undefined"||e.bubbleErrors)&&(t.on("error",function(i){n.emit("error",i)}),a.on("error",function(i){n.emit("error",i)}))}si.prototype=Object.create(Hd.Duplex.prototype,{constructor:{value:si}});si.prototype._write=function(t,a,n){this._writable.write(t,a,n)};si.prototype._read=function(){for(var t,a=0;(t=this._readable.read())!==null;)this.push(t),a++;a===0&&(this._waiting=!0)};Wd.exports=function(t,a,n){return new si(t,a,n)};Wd.exports.DuplexWrapper=si});var eC=O((LW,QS)=>{var XS=ti().Readable,uN=fn();QS.exports=_l;_l.ctor=$S;_l.obj=fN;var pN=$S();function dN(e){return e=e.slice(),function(t,a){var n=null,i=e.length?e.shift():null;i instanceof Error&&(n=i,i=null),a(n,i)}}function _l(e,t){(typeof e!="object"||Array.isArray(e))&&(t=e,e={});var a=new pN(e);return a._from=Array.isArray(t)?dN(t):t||YS,a}function $S(e,t){typeof e=="function"&&(t=e,e={}),e=KS(e),uN(a,XS);function a(n){if(!(this instanceof a))return new a(n);this._reading=!1,this._callback=o,this.destroyed=!1,XS.call(this,n||e);var i=this,r=this._readableState.highWaterMark;function o(s,l){if(!i.destroyed){if(s)return i.destroy(s);if(l===null)return i.push(null);i._reading=!1,i.push(l)&&i._read(r)}}}return a.prototype._from=t||YS,a.prototype._read=function(n){this._reading||this.destroyed||(this._reading=!0,this._from(n,this._callback))},a.prototype.destroy=function(n){if(!this.destroyed){this.destroyed=!0;var i=this;process.nextTick(function(){n&&i.emit("error",n),i.emit("close")})}},a}function fN(e,t){return(typeof e=="function"||Array.isArray(e))&&(t=e,e={}),e=KS(e),e.objectMode=!0,e.highWaterMark=16,_l(e,t)}function YS(){}function KS(e){return e=e||{},e}});var aC=O((MW,tC)=>{"use strict";tC.exports=e=>e instanceof Promise||e!==null&&typeof e=="object"&&typeof e.then=="function"&&typeof e.catch=="function"});var rC=O((DW,Vd)=>{"use strict";var nC=eC(),iC=aC();Vd.exports=e=>{Array.isArray(e)&&(e=e.slice());let t,a;n(e);function n(i){e=i,t=iC(e)?e:null,a=!t&&e[Symbol.iterator]&&typeof e!="string"&&!Buffer.isBuffer(e)?e[Symbol.iterator]():null}return nC(function i(r,o){if(t){t.then(n).then(()=>i.call(this,r,o),o);return}if(a){let l=a.next();setImmediate(o,null,l.done?null:l.value);return}if(e.length===0){setImmediate(o,null,null);return}let s=e.slice(0,r);e=e.slice(r),setImmediate(o,null,s)})};Vd.exports.obj=e=>{Array.isArray(e)&&(e=e.slice());let t,a;n(e);function n(i){e=i,t=iC(e)?e:null,a=!t&&e[Symbol.iterator]?e[Symbol.iterator]():null}return nC.obj(function i(r,o){if(t){t.then(n).then(()=>i.call(this,r,o),o);return}if(a){let s=a.next();setImmediate(o,null,s.done?null:s.value);return}this.push(e),setImmediate(o,null,null)})}});var Zd=O((Ud,Jd)=>{"use strict";Object.defineProperty(Ud,"__esModule",{value:!0});var oC=require("util"),mN=Object.prototype.toString,_r=e=>t=>typeof t===e,Tl=e=>{let t=mN.call(e).slice(8,-1);return t||null},Ke=e=>t=>Tl(t)===e;function oa(e){if(e===null)return"null";if(e===!0||e===!1)return"boolean";let t=typeof e;if(t==="undefined")return"undefined";if(t==="string")return"string";if(t==="number")return"number";if(t==="symbol")return"symbol";if(oa.function_(e))return"Function";if(Array.isArray(e))return"Array";if(Buffer.isBuffer(e))return"Buffer";let a=Tl(e);if(a)return a;if(e instanceof String||e instanceof Boolean||e instanceof Number)throw new TypeError("Please don't use object wrappers for primitive types");return"Object"}(function(e){let t=v=>typeof v=="object";e.undefined=_r("undefined"),e.string=_r("string"),e.number=_r("number"),e.function_=_r("function"),e.null_=v=>v===null,e.class_=v=>e.function_(v)&&v.toString().startsWith("class "),e.boolean=v=>v===!0||v===!1,e.symbol=_r("symbol"),e.array=Array.isArray,e.buffer=Buffer.isBuffer,e.nullOrUndefined=v=>e.null_(v)||e.undefined(v),e.object=v=>!e.nullOrUndefined(v)&&(e.function_(v)||t(v)),e.iterable=v=>!e.nullOrUndefined(v)&&e.function_(v[Symbol.iterator]),e.generator=v=>e.iterable(v)&&e.function_(v.next)&&e.function_(v.throw),e.nativePromise=Ke("Promise");let a=v=>!e.null_(v)&&t(v)&&e.function_(v.then)&&e.function_(v.catch);e.promise=v=>e.nativePromise(v)||a(v);let n=v=>x=>e.function_(x)&&e.function_(x.constructor)&&x.constructor.name===v;e.generatorFunction=n("GeneratorFunction"),e.asyncFunction=n("AsyncFunction"),e.boundFunction=v=>e.function_(v)&&!v.hasOwnProperty("prototype"),e.regExp=Ke("RegExp"),e.date=Ke("Date"),e.error=Ke("Error"),e.map=Ke("Map"),e.set=Ke("Set"),e.weakMap=Ke("WeakMap"),e.weakSet=Ke("WeakSet"),e.int8Array=Ke("Int8Array"),e.uint8Array=Ke("Uint8Array"),e.uint8ClampedArray=Ke("Uint8ClampedArray"),e.int16Array=Ke("Int16Array"),e.uint16Array=Ke("Uint16Array"),e.int32Array=Ke("Int32Array"),e.uint32Array=Ke("Uint32Array"),e.float32Array=Ke("Float32Array"),e.float64Array=Ke("Float64Array"),e.arrayBuffer=Ke("ArrayBuffer"),e.sharedArrayBuffer=Ke("SharedArrayBuffer"),e.dataView=Ke("DataView"),e.directInstanceOf=(v,x)=>e.object(v)&&e.object(x)&&Object.getPrototypeOf(v)===x.prototype,e.truthy=v=>!!v,e.falsy=v=>!v,e.nan=v=>Number.isNaN(v);let i=new Set(["undefined","string","number","boolean","symbol"]);e.primitive=v=>e.null_(v)||i.has(typeof v),e.integer=v=>Number.isInteger(v),e.safeInteger=v=>Number.isSafeInteger(v),e.plainObject=v=>{let x;return Tl(v)==="Object"&&(x=Object.getPrototypeOf(v),x===null||x===Object.getPrototypeOf({}))};let r=new Set(["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array"]);e.typedArray=v=>{let x=Tl(v);return x===null?!1:r.has(x)};let o=v=>e.safeInteger(v)&&v>-1;e.arrayLike=v=>!e.nullOrUndefined(v)&&!e.function_(v)&&o(v.length),e.inRange=(v,x)=>{if(e.number(x))return v>=Math.min(0,x)&&v<=Math.max(x,0);if(e.array(x)&&x.length===2)return v>=Math.min.apply(null,x)&&v<=Math.max.apply(null,x);throw new TypeError(`Invalid range: ${oC.inspect(x)}`)};let s=1,l=["innerHTML","ownerDocument","style","attributes","nodeValue"];e.domElement=v=>e.object(v)&&v.nodeType===s&&e.string(v.nodeName)&&!e.plainObject(v)&&l.every(x=>x in v),e.nodeStream=v=>!e.nullOrUndefined(v)&&t(v)&&e.function_(v.pipe),e.infinite=v=>v===1/0||v===-1/0;let u=v=>x=>e.integer(x)&&Math.abs(x%2)===v;e.even=u(0),e.odd=u(1);let c=v=>e.string(v)&&/\S/.test(v)===!1,f=v=>(e.string(v)||e.array(v))&&v.length===0,p=v=>!e.map(v)&&!e.set(v)&&e.object(v)&&Object.keys(v).length===0,b=v=>(e.map(v)||e.set(v))&&v.size===0;e.empty=v=>e.falsy(v)||f(v)||p(v)||b(v),e.emptyOrWhitespace=v=>e.empty(v)||c(v);let d=(v,x,E)=>{let g=Array.prototype.slice.call(E,1);if(e.function_(x)===!1)throw new TypeError(`Invalid predicate: ${oC.inspect(x)}`);if(g.length===0)throw new TypeError("Invalid number of values");return v.call(g,x)};function m(v){return d(Array.prototype.some,v,arguments)}e.any=m;function h(v){return d(Array.prototype.every,v,arguments)}e.all=h})(oa||(oa={}));Object.defineProperties(oa,{class:{value:oa.class_},function:{value:oa.function_},null:{value:oa.null_}});Ud.default=oa;Jd.exports=oa;Jd.exports.default=oa});var lC=O((zW,sC)=>{"use strict";var hN=require("stream").PassThrough;sC.exports=e=>{e=Object.assign({},e);let t=e.array,a=e.encoding,n=a==="buffer",i=!1;t?i=!(a||n):a=a||"utf8",n&&(a=null);let r=0,o=[],s=new hN({objectMode:i});return a&&s.setEncoding(a),s.on("data",l=>{o.push(l),i?r=o.length:r+=l.length}),s.getBufferedValue=()=>t?o:n?Buffer.concat(o,r):o.join(""),s.getBufferedLength=()=>r,s}});var cC=O((GW,kl)=>{"use strict";var vN=lC();function qd(e,t){if(!e)return Promise.reject(new Error("Expected a stream"));t=Object.assign({maxBuffer:1/0},t);let a=t.maxBuffer,n,i,r=new Promise((o,s)=>{let l=u=>{u&&(u.bufferedData=n.getBufferedValue()),s(u)};n=vN(t),e.once("error",l),e.pipe(n),n.on("data",()=>{n.getBufferedLength()>a&&s(new Error("maxBuffer exceeded"))}),n.once("error",l),n.on("end",o),i=()=>{e.unpipe&&e.unpipe(n)}});return r.then(i,i),r.then(()=>n.getBufferedValue())}kl.exports=qd;kl.exports.buffer=(e,t)=>qd(e,Object.assign({},t,{encoding:"buffer"}));kl.exports.array=(e,t)=>qd(e,Object.assign({},t,{array:!0}))});var pC=O((HW,uC)=>{"use strict";uC.exports=function(e,t){if(e.timeoutTimer)return e;var a=isNaN(t)?t:{socket:t,connect:t},n=e._headers?" to "+e._headers.host:"";a.connect!==void 0&&(e.timeoutTimer=setTimeout(function(){e.abort();var s=new Error("Connection timed out on request"+n);s.code="ETIMEDOUT",e.emit("error",s)},a.connect)),e.on("socket",function(s){if(!(s.connecting||s._connecting)){r();return}s.once("connect",r)});function i(){e.timeoutTimer&&(clearTimeout(e.timeoutTimer),e.timeoutTimer=null)}function r(){i(),a.socket!==void 0&&e.setTimeout(a.socket,function(){e.abort();var s=new Error("Socket timed out on request"+n);s.code="ESOCKETTIMEDOUT",e.emit("error",s)})}return e.on("error",i)}});var fC=O((WW,dC)=>{"use strict";var bN=require("url"),gN=Fd();dC.exports=(e,t)=>{if(typeof e!="string")throw new TypeError(`Expected \`url\` to be of type \`string\`, got \`${typeof e}\` instead.`);let a=gN(e,Object.assign({https:!0},t));return bN.parse(a)}});var hC=O((VW,mC)=>{"use strict";function xN(e){var t={protocol:e.protocol,hostname:e.hostname,hash:e.hash,search:e.search,pathname:e.pathname,path:`${e.pathname}${e.search}`,href:e.href};return e.port!==""&&(t.port=Number(e.port)),(e.username||e.password)&&(t.auth=`${e.username}:${e.password}`),t}mC.exports=xN});var vC=O(()=>{});var gC=O((ZW,bC)=>{"use strict";var yN=["ETIMEDOUT","ECONNRESET","EADDRINUSE","ESOCKETTIMEDOUT","ECONNREFUSED","EPIPE","EHOSTUNREACH","EAI_AGAIN"],wN=["ENOTFOUND","ENETUNREACH","UNABLE_TO_GET_ISSUER_CERT","UNABLE_TO_GET_CRL","UNABLE_TO_DECRYPT_CERT_SIGNATURE","UNABLE_TO_DECRYPT_CRL_SIGNATURE","UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY","CERT_SIGNATURE_FAILURE","CRL_SIGNATURE_FAILURE","CERT_NOT_YET_VALID","CERT_HAS_EXPIRED","CRL_NOT_YET_VALID","CRL_HAS_EXPIRED","ERROR_IN_CERT_NOT_BEFORE_FIELD","ERROR_IN_CERT_NOT_AFTER_FIELD","ERROR_IN_CRL_LAST_UPDATE_FIELD","ERROR_IN_CRL_NEXT_UPDATE_FIELD","OUT_OF_MEM","DEPTH_ZERO_SELF_SIGNED_CERT","SELF_SIGNED_CERT_IN_CHAIN","UNABLE_TO_GET_ISSUER_CERT_LOCALLY","UNABLE_TO_VERIFY_LEAF_SIGNATURE","CERT_CHAIN_TOO_LONG","CERT_REVOKED","INVALID_CA","PATH_LENGTH_EXCEEDED","INVALID_PURPOSE","CERT_UNTRUSTED","CERT_REJECTED"];bC.exports=function(e){return!e||!e.code||yN.indexOf(e.code)!==-1?!0:wN.indexOf(e.code)===-1}});var yC=O((qW,xC)=>{"use strict";xC.exports=typeof Symbol=="function"&&typeof Symbol("")=="symbol"});var EC=O((XW,wC)=>{"use strict";wC.exports=yC()&&typeof Symbol.toStringTag=="symbol"});var CC=O(($W,SC)=>{"use strict";SC.exports=function(t){return typeof t=="object"&&t!==null}});var _C=O((YW,IC)=>{"use strict";var EN=EC(),AC=CC(),SN=Object.prototype.toString,CN="[object URL]",AN="hash",IN="host",_N="hostname",TN="href",kN="password",FN="pathname",PN="port",ON="protocol",RN="search",BN="username",Xd=(e,t)=>AC(e)?!EN&&SN.call(e)===CN?!0:!(!(TN in e)||!(ON in e)||!(BN in e)||!(kN in e)||!(_N in e)||!(PN in e)||!(IN in e)||!(FN in e)||!(RN in e)||!(AN in e)||t!==!0&&!AC(e.searchParams)):!1;Xd.lenient=e=>Xd(e,!0);IC.exports=Xd});var Yd=O((KW,$d)=>{"use strict";var Fl=class extends Error{constructor(){super("Promise was canceled"),this.name="CancelError"}get isCanceled(){return!0}},Pl=class e{static fn(t){return function(){let a=[].slice.apply(arguments);return new e((n,i,r)=>{a.push(r),t.apply(null,a).then(n,i)})}}constructor(t){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._promise=new Promise((a,n)=>(this._reject=n,t(i=>{this._isPending=!1,a(i)},i=>{this._isPending=!1,n(i)},i=>{this._cancelHandlers.push(i)})))}then(t,a){return this._promise.then(t,a)}catch(t){return this._promise.catch(t)}finally(t){return this._promise.finally(t)}cancel(){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let t of this._cancelHandlers)t()}catch(t){this._reject(t)}this._isCanceled=!0,this._reject(new Fl)}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(Pl.prototype,Promise.prototype);$d.exports=Pl;$d.exports.CancelError=Fl});var kC=O((QW,TC)=>{"use strict";TC.exports=(e,t)=>(t=t||(()=>{}),e.then(a=>new Promise(n=>{n(t())}).then(()=>a),a=>new Promise(n=>{n(t())}).then(()=>{throw a})))});var Qd=O((eV,Kd)=>{"use strict";var NN=kC(),Ol=class extends Error{constructor(t){super(t),this.name="TimeoutError"}};Kd.exports=(e,t,a)=>new Promise((n,i)=>{if(typeof t!="number"||t<0)throw new TypeError("Expected `ms` to be a positive number");let r=setTimeout(()=>{if(typeof a=="function"){try{n(a())}catch(l){i(l)}return}let o=typeof a=="string"?a:`Promise timed out after ${t} milliseconds`,s=a instanceof Error?a:new Ol(o);typeof e.cancel=="function"&&e.cancel(),i(s)},t);NN(e.then(n,i),()=>{clearTimeout(r)})});Kd.exports.TimeoutError=Ol});var OC=O((tV,PC)=>{"use strict";var FC=(e,t)=>function(){let a=t.promiseModule,n=new Array(arguments.length);for(let i=0;i<arguments.length;i++)n[i]=arguments[i];return new a((i,r)=>{t.errorFirst?n.push(function(o,s){if(t.multiArgs){let l=new Array(arguments.length-1);for(let u=1;u<arguments.length;u++)l[u-1]=arguments[u];o?(l.unshift(o),r(l)):i(l)}else o?r(o):i(s)}):n.push(function(o){if(t.multiArgs){let s=new Array(arguments.length-1);for(let l=0;l<arguments.length;l++)s[l]=arguments[l];i(s)}else i(o)}),e.apply(this,n)})};PC.exports=(e,t)=>{t=Object.assign({exclude:[/.+(Sync|Stream)$/],errorFirst:!0,promiseModule:Promise},t);let a=i=>{let r=o=>typeof o=="string"?i===o:o.test(i);return t.include?t.include.some(r):!t.exclude.some(r)},n;typeof e=="function"?n=function(){return t.excludeMain?e.apply(this,arguments):FC(e,t).apply(this,arguments)}:n=Object.create(Object.getPrototypeOf(e));for(let i in e){let r=e[i];n[i]=typeof r=="function"&&a(i)?FC(r,t):r}return n}});var RC=O((aV,jN)=>{jN.exports={name:"got",version:"8.3.2",description:"Simplified HTTP requests",license:"MIT",repository:"sindresorhus/got",maintainers:[{name:"Sindre Sorhus",email:"sindresorhus@gmail.com",url:"sindresorhus.com"},{name:"Vsevolod Strukchinsky",email:"floatdrop@gmail.com",url:"github.com/floatdrop"},{name:"Alexander Tesfamichael",email:"alex.tesfamichael@gmail.com",url:"alextes.me"}],engines:{node:">=4"},scripts:{test:"xo && nyc ava",coveralls:"nyc report --reporter=text-lcov | coveralls"},files:["index.js","errors.js"],keywords:["http","https","get","got","url","uri","request","util","utility","simple","curl","wget","fetch","net","network","electron"],dependencies:{"@sindresorhus/is":"^0.7.0","cacheable-request":"^2.1.1","decompress-response":"^3.3.0",duplexer3:"^0.1.4","get-stream":"^3.0.0","into-stream":"^3.1.0","is-retry-allowed":"^1.1.0",isurl:"^1.0.0-alpha5","lowercase-keys":"^1.0.0","mimic-response":"^1.0.0","p-cancelable":"^0.4.0","p-timeout":"^2.0.1",pify:"^3.0.0","safe-buffer":"^5.1.1","timed-out":"^4.0.1","url-parse-lax":"^3.0.0","url-to-options":"^1.0.1"},devDependencies:{ava:"^0.25.0",coveralls:"^3.0.0","form-data":"^2.1.1","get-port":"^3.0.0",nyc:"^11.0.2","p-event":"^1.3.0",pem:"^1.4.4",proxyquire:"^1.8.0",sinon:"^4.0.0","slow-stream":"0.0.4",tempfile:"^2.0.0",tempy:"^0.2.1","universal-url":"1.0.0-alpha",xo:"^0.20.0"},ava:{concurrency:4},browser:{"decompress-response":!1,electron:!1}}});var BC=O((nV,la)=>{"use strict";var LN=require("url"),ef=require("http"),MN=Yd(),DN=Zd(),sa=class extends Error{constructor(t,a,n){super(t),Error.captureStackTrace(this,this.constructor),this.name="GotError",DN.undefined(a.code)||(this.code=a.code),Object.assign(this,{host:n.host,hostname:n.hostname,method:n.method,path:n.path,protocol:n.protocol,url:n.href})}};la.exports.GotError=sa;la.exports.CacheError=class extends sa{constructor(e,t){super(e.message,e,t),this.name="CacheError"}};la.exports.RequestError=class extends sa{constructor(e,t){super(e.message,e,t),this.name="RequestError"}};la.exports.ReadError=class extends sa{constructor(e,t){super(e.message,e,t),this.name="ReadError"}};la.exports.ParseError=class extends sa{constructor(e,t,a,n){super(`${e.message} in "${LN.format(a)}": +${n.slice(0,77)}...`,e,a),this.name="ParseError",this.statusCode=t,this.statusMessage=ef.STATUS_CODES[this.statusCode]}};la.exports.HTTPError=class extends sa{constructor(e,t,a,n){t?t=t.replace(/\r?\n/g," ").trim():t=ef.STATUS_CODES[e],super(`Response code ${e} (${t})`,{},n),this.name="HTTPError",this.statusCode=e,this.statusMessage=t,this.headers=a}};la.exports.MaxRedirectsError=class extends sa{constructor(e,t,a){super("Redirected 10 times. Aborting.",{},a),this.name="MaxRedirectsError",this.statusCode=e,this.statusMessage=ef.STATUS_CODES[this.statusCode],this.redirectUrls=t}};la.exports.UnsupportedProtocolError=class extends sa{constructor(e){super(`Unsupported protocol "${e.protocol}"`,{},e),this.name="UnsupportedProtocolError"}};la.exports.CancelError=MN.CancelError});var qC=O((pV,ZC)=>{"use strict";var WC=require("events"),zN=require("http"),GN=require("https"),NC=require("stream").PassThrough,HN=require("stream").Transform,Tr=require("url"),jC=require("fs"),LC=require("querystring"),MC=ZS(),WN=qS(),VN=rC(),xe=Zd(),DC=cC(),UN=pC(),JN=fC(),ZN=hC(),qN=jd(),zC=vC(),XN=Md(),$N=gC(),YN=_C(),KN=Yd(),QN=Qd(),GC=OC(),Rl=Bs().Buffer,HC=RC(),ej=BC(),tj=new Set([300,301,302,303,304,305,307,308]),aj=new Set([300,303,307,308]),tf=e=>xe.nodeStream(e)&&xe.function(e.getBoundary),nj=e=>{let t=e.body;return e.headers["content-length"]?Number(e.headers["content-length"]):!t&&!e.stream?0:xe.string(t)?Rl.byteLength(t):tf(t)?GC(t.getLength.bind(t))():t instanceof jC.ReadStream?GC(jC.stat)(t.path).then(a=>a.size):xe.nodeStream(t)&&xe.buffer(t._buffer)?t._buffer.length:null};function VC(e){e=e||{};let t=new WC,a=e.href||Tr.resolve(Tr.format(e),e.path),n=[],i=xe.object(e.agent)?e.agent:null,r=0,o,s,l=0,u=c=>{if(c.protocol!=="http:"&&c.protocol!=="https:"){t.emit("error",new tt.UnsupportedProtocolError(c));return}let f=c.protocol==="https:"?GN:zN;if(i){let m=c.protocol==="https:"?"https":"http";c.agent=i[m]||c.agent}if(c.useElectronNet&&process.versions.electron){let m=require("electron");f=m.net||m.remote.net}let p,d=new MC(f.request,c.cache)(c,m=>{clearInterval(p),t.emit("uploadProgress",{percent:1,transferred:l,total:s});let h=m.statusCode;m.url=o||a,m.requestUrl=a;let v=c.followRedirect&&"location"in m.headers,x=v&&tj.has(h);if(v&&aj.has(h)||x&&(c.method==="GET"||c.method==="HEAD")){if(m.resume(),h===303&&(c.method="GET"),n.length>=10){t.emit("error",new tt.MaxRedirectsError(h,n,c),null,m);return}let g=Rl.from(m.headers.location,"binary").toString();o=Tr.resolve(Tr.format(c),g),n.push(o);let w=Object.assign({},c,Tr.parse(o));t.emit("redirect",m,w),u(w);return}setImmediate(()=>{try{ij(m,c,t,n)}catch(g){t.emit("error",g)}})});d.on("error",m=>{m instanceof MC.RequestError?t.emit("error",new tt.RequestError(m,c)):t.emit("error",new tt.CacheError(m,c))}),d.once("request",m=>{let h=!1;m.once("abort",v=>{h=!0}),m.once("error",v=>{if(clearInterval(p),h)return;let x=c.retries(++r,v);if(x){setTimeout(u,x,c);return}t.emit("error",new tt.RequestError(v,c))}),t.once("request",v=>{t.emit("uploadProgress",{percent:0,transferred:0,total:s});let x=v.connection;if(x){let E=x.connecting===void 0?x._connecting:x.connecting,g=()=>{p=setInterval(()=>{if(x.destroyed){clearInterval(p);return}let C=l,y=v._header?Rl.byteLength(v._header):0;l=x.bytesWritten-y,s&&l>s&&(l=s),!(l===C||l===s)&&t.emit("uploadProgress",{percent:s?l/s:0,transferred:l,total:s})},150)};E?x.once("connect",g):g()}}),c.gotTimeout&&(clearInterval(p),UN(m,c.gotTimeout)),setImmediate(()=>{t.emit("request",m)})})};return setImmediate(()=>{Promise.resolve(nj(e)).then(c=>{s=c,xe.undefined(e.headers["content-length"])&&xe.undefined(e.headers["transfer-encoding"])&&tf(e.body)&&(e.headers["content-length"]=c),u(e)}).catch(c=>{t.emit("error",c)})}),t}function ij(e,t,a,n){let i=Number(e.headers["content-length"])||null,r=0,o=new HN({transform(l,u,c){r+=l.length;let f=i?r/i:0;f<1&&a.emit("downloadProgress",{percent:f,transferred:r,total:i}),c(null,l)},flush(l){a.emit("downloadProgress",{percent:1,transferred:r,total:i}),l()}});XN(e,o),o.redirectUrls=n;let s=t.decompress===!0&&xe.function(zC)&&t.method!=="HEAD"?zC(o):o;!t.decompress&&["gzip","deflate"].indexOf(e.headers["content-encoding"])!==-1&&(t.encoding=null),a.emit("response",s),a.emit("downloadProgress",{percent:0,transferred:0,total:i}),e.pipe(o)}function rj(e){let t=r=>e.gotTimeout&&e.gotTimeout.request?QN(r,e.gotTimeout.request,new tt.RequestError({message:"Request timed out",code:"ETIMEDOUT"},e)):r,a=new WC,n=new KN((r,o,s)=>{let l=VC(e),u=!1;s(()=>{u=!0}),l.on("request",c=>{if(u&&c.abort(),s(()=>{c.abort()}),xe.nodeStream(e.body)){e.body.pipe(c),e.body=void 0;return}c.end(e.body)}),l.on("response",c=>{(xe.null(e.encoding)?DC.buffer(c):DC(c,e)).catch(p=>o(new tt.ReadError(p,e))).then(p=>{let b=c.statusCode,d=e.followRedirect?299:399;if(c.body=p,e.json&&c.body)try{c.body=JSON.parse(c.body)}catch(m){if(b>=200&&b<300)throw new tt.ParseError(m,b,e,p)}if(e.throwHttpErrors&&b!==304&&(b<200||b>d))throw new tt.HTTPError(b,c.statusMessage,c.headers,e);r(c)}).catch(p=>{Object.defineProperty(p,"response",{value:c}),o(p)})}),l.once("error",o),l.on("redirect",a.emit.bind(a,"redirect")),l.on("uploadProgress",a.emit.bind(a,"uploadProgress")),l.on("downloadProgress",a.emit.bind(a,"downloadProgress"))});Object.defineProperty(n,"canceled",{get(){return n.isCanceled}});let i=t(n);return i.cancel=n.cancel.bind(n),i.on=(r,o)=>(a.on(r,o),i),i}function UC(e){e.stream=!0;let t=new NC,a=new NC,n=WN(t,a),i;if(e.gotTimeout&&e.gotTimeout.request&&(i=setTimeout(()=>{n.emit("error",new tt.RequestError({message:"Request timed out",code:"ETIMEDOUT"},e))},e.gotTimeout.request)),e.json)throw new Error("Got can not be used as a stream when the `json` option is used");e.body&&(n.write=()=>{throw new Error("Got's stream is not writable when the `body` option is used")});let r=VC(e);return r.on("request",o=>{if(n.emit("request",o),xe.nodeStream(e.body)){e.body.pipe(o);return}if(e.body){o.end(e.body);return}if(e.method==="POST"||e.method==="PUT"||e.method==="PATCH"){t.pipe(o);return}o.end()}),r.on("response",o=>{clearTimeout(i);let s=o.statusCode;if(o.on("error",l=>{n.emit("error",new tt.ReadError(l,e))}),o.pipe(a),e.throwHttpErrors&&s!==304&&(s<200||s>299)){n.emit("error",new tt.HTTPError(s,o.statusMessage,o.headers,e),null,o);return}n.emit("response",o)}),r.on("error",n.emit.bind(n,"error")),r.on("redirect",n.emit.bind(n,"redirect")),r.on("uploadProgress",n.emit.bind(n,"uploadProgress")),r.on("downloadProgress",n.emit.bind(n,"downloadProgress")),n}function JC(e,t){if(!xe.string(e)&&!xe.object(e))throw new TypeError(`Parameter \`url\` must be a string or object, not ${xe(e)}`);if(xe.string(e)){e=e.replace(/^unix:/,"http://$&");try{decodeURI(e)}catch(r){throw new Error("Parameter `url` must contain valid UTF-8 character sequences")}if(e=JN(e),e.auth)throw new Error("Basic authentication must be done with the `auth` option")}else YN.lenient(e)&&(e=ZN(e));t=Object.assign({path:"",retries:2,cache:!1,decompress:!0,useElectronNet:!1,throwHttpErrors:!0},e,{protocol:e.protocol||"http:"},t);let a=qN(t.headers);for(let r of Object.keys(a))xe.nullOrUndefined(a[r])&&delete a[r];t.headers=Object.assign({"user-agent":`${HC.name}/${HC.version} (https://github.com/sindresorhus/got)`},a),t.decompress&&xe.undefined(t.headers["accept-encoding"])&&(t.headers["accept-encoding"]="gzip, deflate");let n=t.query;n&&(xe.string(n)||(t.query=LC.stringify(n)),t.path=`${t.path.split("?")[0]}?${t.query}`,delete t.query),t.json&&xe.undefined(t.headers.accept)&&(t.headers.accept="application/json");let i=t.body;if(xe.nullOrUndefined(i))t.method=(t.method||"GET").toUpperCase();else{let r=t.headers;if(!xe.nodeStream(i)&&!xe.string(i)&&!xe.buffer(i)&&!(t.form||t.json))throw new TypeError("The `body` option must be a stream.Readable, string, Buffer or plain Object");let o=xe.plainObject(i)||xe.array(i);if((t.form||t.json)&&!o)throw new TypeError("The `body` option must be a plain Object or Array when the `form` or `json` option is used");if(tf(i)?r["content-type"]=r["content-type"]||`multipart/form-data; boundary=${i.getBoundary()}`:t.form&&o?(r["content-type"]=r["content-type"]||"application/x-www-form-urlencoded",t.body=LC.stringify(i)):t.json&&o&&(r["content-type"]=r["content-type"]||"application/json",t.body=JSON.stringify(i)),xe.undefined(r["content-length"])&&xe.undefined(r["transfer-encoding"])&&!xe.nodeStream(i)){let s=xe.string(t.body)?Rl.byteLength(t.body):t.body.length;r["content-length"]=s}xe.buffer(i)&&(t.body=VN(i),t.body._buffer=i),t.method=(t.method||"POST").toUpperCase()}if(t.hostname==="unix"){let r=/(.+?):(.+)/.exec(t.path);r&&(t.socketPath=r[1],t.path=r[2],t.host=null)}if(!xe.function(t.retries)){let r=t.retries;t.retries=(o,s)=>{if(o>r||!$N(s))return 0;let l=Math.random()*100;return(1<<o)*1e3+l}}return xe.undefined(t.followRedirect)&&(t.followRedirect=!0),t.timeout&&(xe.number(t.timeout)?t.gotTimeout={request:t.timeout}:t.gotTimeout=t.timeout,delete t.timeout),t}function tt(e,t){try{let a=JC(e,t);return a.stream?UC(a):rj(a)}catch(a){return Promise.reject(a)}}tt.stream=(e,t)=>UC(JC(e,t));var oj=["get","post","put","patch","head","delete"];for(let e of oj)tt[e]=(t,a)=>tt(t,Object.assign({},a,{method:e})),tt.stream[e]=(t,a)=>tt.stream(t,Object.assign({},a,{method:e}));Object.assign(tt,ej);ZC.exports=tt});var af=O((dV,$C)=>{"use strict";var XC=(e,t)=>function(...a){let n=t.promiseModule;return new n((i,r)=>{t.multiArgs?a.push((...o)=>{t.errorFirst?o[0]?r(o):(o.shift(),i(o)):i(o)}):t.errorFirst?a.push((o,s)=>{o?r(o):i(s)}):a.push(i),e.apply(this,a)})};$C.exports=(e,t)=>{t=Object.assign({exclude:[/.+(Sync|Stream)$/],errorFirst:!0,promiseModule:Promise},t);let a=typeof e;if(!(e!==null&&(a==="object"||a==="function")))throw new TypeError(`Expected \`input\` to be a \`Function\` or \`Object\`, got \`${e===null?"null":a}\``);let n=r=>{let o=s=>typeof s=="string"?r===s:s.test(r);return t.include?t.include.some(o):!t.exclude.some(o)},i;a==="function"?i=function(...r){return t.excludeMain?e(...r):XC(e,t).apply(this,r)}:i=Object.create(Object.getPrototypeOf(e));for(let r in e){let o=e[r];i[r]=typeof o=="function"&&n(r)?XC(o,t):o}return i}});var fA=O((ce,dA)=>{ce=dA.exports=be;var Te;typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?Te=function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("SEMVER"),console.log.apply(console,e)}:Te=function(){};ce.SEMVER_SPEC_VERSION="2.0.0";var rf=256,Bl=Number.MAX_SAFE_INTEGER||9007199254740991,nf=16,Oe=ce.re=[],G=ce.src=[],ve=0,li=ve++;G[li]="0|[1-9]\\d*";var ci=ve++;G[ci]="[0-9]+";var cf=ve++;G[cf]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var KC=ve++;G[KC]="("+G[li]+")\\.("+G[li]+")\\.("+G[li]+")";var QC=ve++;G[QC]="("+G[ci]+")\\.("+G[ci]+")\\.("+G[ci]+")";var of=ve++;G[of]="(?:"+G[li]+"|"+G[cf]+")";var sf=ve++;G[sf]="(?:"+G[ci]+"|"+G[cf]+")";var uf=ve++;G[uf]="(?:-("+G[of]+"(?:\\."+G[of]+")*))";var pf=ve++;G[pf]="(?:-?("+G[sf]+"(?:\\."+G[sf]+")*))";var lf=ve++;G[lf]="[0-9A-Za-z-]+";var Pr=ve++;G[Pr]="(?:\\+("+G[lf]+"(?:\\."+G[lf]+")*))";var df=ve++,eA="v?"+G[KC]+G[uf]+"?"+G[Pr]+"?";G[df]="^"+eA+"$";var ff="[v=\\s]*"+G[QC]+G[pf]+"?"+G[Pr]+"?",mf=ve++;G[mf]="^"+ff+"$";var di=ve++;G[di]="((?:<|>)?=?)";var Nl=ve++;G[Nl]=G[ci]+"|x|X|\\*";var jl=ve++;G[jl]=G[li]+"|x|X|\\*";var bn=ve++;G[bn]="[v=\\s]*("+G[jl]+")(?:\\.("+G[jl]+")(?:\\.("+G[jl]+")(?:"+G[uf]+")?"+G[Pr]+"?)?)?";var pi=ve++;G[pi]="[v=\\s]*("+G[Nl]+")(?:\\.("+G[Nl]+")(?:\\.("+G[Nl]+")(?:"+G[pf]+")?"+G[Pr]+"?)?)?";var tA=ve++;G[tA]="^"+G[di]+"\\s*"+G[bn]+"$";var aA=ve++;G[aA]="^"+G[di]+"\\s*"+G[pi]+"$";var nA=ve++;G[nA]="(?:^|[^\\d])(\\d{1,"+nf+"})(?:\\.(\\d{1,"+nf+"}))?(?:\\.(\\d{1,"+nf+"}))?(?:$|[^\\d])";var Hl=ve++;G[Hl]="(?:~>?)";var Ll=ve++;G[Ll]="(\\s*)"+G[Hl]+"\\s+";Oe[Ll]=new RegExp(G[Ll],"g");var sj="$1~",iA=ve++;G[iA]="^"+G[Hl]+G[bn]+"$";var rA=ve++;G[rA]="^"+G[Hl]+G[pi]+"$";var Wl=ve++;G[Wl]="(?:\\^)";var Ml=ve++;G[Ml]="(\\s*)"+G[Wl]+"\\s+";Oe[Ml]=new RegExp(G[Ml],"g");var lj="$1^",oA=ve++;G[oA]="^"+G[Wl]+G[bn]+"$";var sA=ve++;G[sA]="^"+G[Wl]+G[pi]+"$";var hf=ve++;G[hf]="^"+G[di]+"\\s*("+ff+")$|^$";var vf=ve++;G[vf]="^"+G[di]+"\\s*("+eA+")$|^$";var kr=ve++;G[kr]="(\\s*)"+G[di]+"\\s*("+ff+"|"+G[bn]+")";Oe[kr]=new RegExp(G[kr],"g");var cj="$1$2$3",lA=ve++;G[lA]="^\\s*("+G[bn]+")\\s+-\\s+("+G[bn]+")\\s*$";var cA=ve++;G[cA]="^\\s*("+G[pi]+")\\s+-\\s+("+G[pi]+")\\s*$";var uA=ve++;G[uA]="(<|>)?=?\\s*\\*";for(Wa=0;Wa<ve;Wa++)Te(Wa,G[Wa]),Oe[Wa]||(Oe[Wa]=new RegExp(G[Wa]));var Wa;ce.parse=gn;function gn(e,t){if((!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1}),e instanceof be)return e;if(typeof e!="string"||e.length>rf)return null;var a=t.loose?Oe[mf]:Oe[df];if(!a.test(e))return null;try{return new be(e,t)}catch(n){return null}}ce.valid=uj;function uj(e,t){var a=gn(e,t);return a?a.version:null}ce.clean=pj;function pj(e,t){var a=gn(e.trim().replace(/^[=v]+/,""),t);return a?a.version:null}ce.SemVer=be;function be(e,t){if((!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1}),e instanceof be){if(e.loose===t.loose)return e;e=e.version}else if(typeof e!="string")throw new TypeError("Invalid Version: "+e);if(e.length>rf)throw new TypeError("version is longer than "+rf+" characters");if(!(this instanceof be))return new be(e,t);Te("SemVer",e,t),this.options=t,this.loose=!!t.loose;var a=e.trim().match(t.loose?Oe[mf]:Oe[df]);if(!a)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+a[1],this.minor=+a[2],this.patch=+a[3],this.major>Bl||this.major<0)throw new TypeError("Invalid major version");if(this.minor>Bl||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>Bl||this.patch<0)throw new TypeError("Invalid patch version");a[4]?this.prerelease=a[4].split(".").map(function(n){if(/^[0-9]+$/.test(n)){var i=+n;if(i>=0&&i<Bl)return i}return n}):this.prerelease=[],this.build=a[5]?a[5].split("."):[],this.format()}be.prototype.format=function(){return this.version=this.major+"."+this.minor+"."+this.patch,this.prerelease.length&&(this.version+="-"+this.prerelease.join(".")),this.version};be.prototype.toString=function(){return this.version};be.prototype.compare=function(e){return Te("SemVer.compare",this.version,this.options,e),e instanceof be||(e=new be(e,this.options)),this.compareMain(e)||this.comparePre(e)};be.prototype.compareMain=function(e){return e instanceof be||(e=new be(e,this.options)),ui(this.major,e.major)||ui(this.minor,e.minor)||ui(this.patch,e.patch)};be.prototype.comparePre=function(e){if(e instanceof be||(e=new be(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;var t=0;do{var a=this.prerelease[t],n=e.prerelease[t];if(Te("prerelease compare",t,a,n),a===void 0&&n===void 0)return 0;if(n===void 0)return 1;if(a===void 0)return-1;if(a===n)continue;return ui(a,n)}while(++t)};be.prototype.inc=function(e,t){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t),this.inc("pre",t);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",t),this.inc("pre",t);break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":if(this.prerelease.length===0)this.prerelease=[0];else{for(var a=this.prerelease.length;--a>=0;)typeof this.prerelease[a]=="number"&&(this.prerelease[a]++,a=-2);a===-1&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this};ce.inc=dj;function dj(e,t,a,n){typeof a=="string"&&(n=a,a=void 0);try{return new be(e,a).inc(t,n).version}catch(i){return null}}ce.diff=fj;function fj(e,t){if(bf(e,t))return null;var a=gn(e),n=gn(t),i="";if(a.prerelease.length||n.prerelease.length){i="pre";var r="prerelease"}for(var o in a)if((o==="major"||o==="minor"||o==="patch")&&a[o]!==n[o])return i+o;return r}ce.compareIdentifiers=ui;var YC=/^[0-9]+$/;function ui(e,t){var a=YC.test(e),n=YC.test(t);return a&&n&&(e=+e,t=+t),e===t?0:a&&!n?-1:n&&!a?1:e<t?-1:1}ce.rcompareIdentifiers=mj;function mj(e,t){return ui(t,e)}ce.major=hj;function hj(e,t){return new be(e,t).major}ce.minor=vj;function vj(e,t){return new be(e,t).minor}ce.patch=bj;function bj(e,t){return new be(e,t).patch}ce.compare=Sa;function Sa(e,t,a){return new be(e,a).compare(new be(t,a))}ce.compareLoose=gj;function gj(e,t){return Sa(e,t,!0)}ce.rcompare=xj;function xj(e,t,a){return Sa(t,e,a)}ce.sort=yj;function yj(e,t){return e.sort(function(a,n){return ce.compare(a,n,t)})}ce.rsort=wj;function wj(e,t){return e.sort(function(a,n){return ce.rcompare(a,n,t)})}ce.gt=Fr;function Fr(e,t,a){return Sa(e,t,a)>0}ce.lt=Dl;function Dl(e,t,a){return Sa(e,t,a)<0}ce.eq=bf;function bf(e,t,a){return Sa(e,t,a)===0}ce.neq=pA;function pA(e,t,a){return Sa(e,t,a)!==0}ce.gte=gf;function gf(e,t,a){return Sa(e,t,a)>=0}ce.lte=xf;function xf(e,t,a){return Sa(e,t,a)<=0}ce.cmp=zl;function zl(e,t,a,n){switch(t){case"===":return typeof e=="object"&&(e=e.version),typeof a=="object"&&(a=a.version),e===a;case"!==":return typeof e=="object"&&(e=e.version),typeof a=="object"&&(a=a.version),e!==a;case"":case"=":case"==":return bf(e,a,n);case"!=":return pA(e,a,n);case">":return Fr(e,a,n);case">=":return gf(e,a,n);case"<":return Dl(e,a,n);case"<=":return xf(e,a,n);default:throw new TypeError("Invalid operator: "+t)}}ce.Comparator=Gt;function Gt(e,t){if((!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1}),e instanceof Gt){if(e.loose===!!t.loose)return e;e=e.value}if(!(this instanceof Gt))return new Gt(e,t);Te("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===Or?this.value="":this.value=this.operator+this.semver.version,Te("comp",this)}var Or={};Gt.prototype.parse=function(e){var t=this.options.loose?Oe[hf]:Oe[vf],a=e.match(t);if(!a)throw new TypeError("Invalid comparator: "+e);this.operator=a[1],this.operator==="="&&(this.operator=""),a[2]?this.semver=new be(a[2],this.options.loose):this.semver=Or};Gt.prototype.toString=function(){return this.value};Gt.prototype.test=function(e){return Te("Comparator.test",e,this.options.loose),this.semver===Or?!0:(typeof e=="string"&&(e=new be(e,this.options)),zl(e,this.operator,this.semver,this.options))};Gt.prototype.intersects=function(e,t){if(!(e instanceof Gt))throw new TypeError("a Comparator is required");(!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1});var a;if(this.operator==="")return a=new Ve(e.value,t),Gl(this.value,a,t);if(e.operator==="")return a=new Ve(this.value,t),Gl(e.semver,a,t);var n=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),i=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),r=this.semver.version===e.semver.version,o=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),s=zl(this.semver,"<",e.semver,t)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),l=zl(this.semver,">",e.semver,t)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return n||i||r&&o||s||l};ce.Range=Ve;function Ve(e,t){if((!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1}),e instanceof Ve)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new Ve(e.raw,t);if(e instanceof Gt)return new Ve(e.value,t);if(!(this instanceof Ve))return new Ve(e,t);if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(function(a){return this.parseRange(a.trim())},this).filter(function(a){return a.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);this.format()}Ve.prototype.format=function(){return this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim(),this.range};Ve.prototype.toString=function(){return this.range};Ve.prototype.parseRange=function(e){var t=this.options.loose;e=e.trim();var a=t?Oe[cA]:Oe[lA];e=e.replace(a,Pj),Te("hyphen replace",e),e=e.replace(Oe[kr],cj),Te("comparator trim",e,Oe[kr]),e=e.replace(Oe[Ll],sj),e=e.replace(Oe[Ml],lj),e=e.split(/\s+/).join(" ");var n=t?Oe[hf]:Oe[vf],i=e.split(" ").map(function(r){return Sj(r,this.options)},this).join(" ").split(/\s+/);return this.options.loose&&(i=i.filter(function(r){return!!r.match(n)})),i=i.map(function(r){return new Gt(r,this.options)},this),i};Ve.prototype.intersects=function(e,t){if(!(e instanceof Ve))throw new TypeError("a Range is required");return this.set.some(function(a){return a.every(function(n){return e.set.some(function(i){return i.every(function(r){return n.intersects(r,t)})})})})};ce.toComparators=Ej;function Ej(e,t){return new Ve(e,t).set.map(function(a){return a.map(function(n){return n.value}).join(" ").trim().split(" ")})}function Sj(e,t){return Te("comp",e,t),e=Ij(e,t),Te("caret",e),e=Cj(e,t),Te("tildes",e),e=Tj(e,t),Te("xrange",e),e=Fj(e,t),Te("stars",e),e}function xt(e){return!e||e.toLowerCase()==="x"||e==="*"}function Cj(e,t){return e.trim().split(/\s+/).map(function(a){return Aj(a,t)}).join(" ")}function Aj(e,t){var a=t.loose?Oe[rA]:Oe[iA];return e.replace(a,function(n,i,r,o,s){Te("tilde",e,n,i,r,o,s);var l;return xt(i)?l="":xt(r)?l=">="+i+".0.0 <"+(+i+1)+".0.0":xt(o)?l=">="+i+"."+r+".0 <"+i+"."+(+r+1)+".0":s?(Te("replaceTilde pr",s),l=">="+i+"."+r+"."+o+"-"+s+" <"+i+"."+(+r+1)+".0"):l=">="+i+"."+r+"."+o+" <"+i+"."+(+r+1)+".0",Te("tilde return",l),l})}function Ij(e,t){return e.trim().split(/\s+/).map(function(a){return _j(a,t)}).join(" ")}function _j(e,t){Te("caret",e,t);var a=t.loose?Oe[sA]:Oe[oA];return e.replace(a,function(n,i,r,o,s){Te("caret",e,n,i,r,o,s);var l;return xt(i)?l="":xt(r)?l=">="+i+".0.0 <"+(+i+1)+".0.0":xt(o)?i==="0"?l=">="+i+"."+r+".0 <"+i+"."+(+r+1)+".0":l=">="+i+"."+r+".0 <"+(+i+1)+".0.0":s?(Te("replaceCaret pr",s),i==="0"?r==="0"?l=">="+i+"."+r+"."+o+"-"+s+" <"+i+"."+r+"."+(+o+1):l=">="+i+"."+r+"."+o+"-"+s+" <"+i+"."+(+r+1)+".0":l=">="+i+"."+r+"."+o+"-"+s+" <"+(+i+1)+".0.0"):(Te("no pr"),i==="0"?r==="0"?l=">="+i+"."+r+"."+o+" <"+i+"."+r+"."+(+o+1):l=">="+i+"."+r+"."+o+" <"+i+"."+(+r+1)+".0":l=">="+i+"."+r+"."+o+" <"+(+i+1)+".0.0"),Te("caret return",l),l})}function Tj(e,t){return Te("replaceXRanges",e,t),e.split(/\s+/).map(function(a){return kj(a,t)}).join(" ")}function kj(e,t){e=e.trim();var a=t.loose?Oe[aA]:Oe[tA];return e.replace(a,function(n,i,r,o,s,l){Te("xRange",e,n,i,r,o,s,l);var u=xt(r),c=u||xt(o),f=c||xt(s),p=f;return i==="="&&p&&(i=""),u?i===">"||i==="<"?n="<0.0.0":n="*":i&&p?(c&&(o=0),s=0,i===">"?(i=">=",c?(r=+r+1,o=0,s=0):(o=+o+1,s=0)):i==="<="&&(i="<",c?r=+r+1:o=+o+1),n=i+r+"."+o+"."+s):c?n=">="+r+".0.0 <"+(+r+1)+".0.0":f&&(n=">="+r+"."+o+".0 <"+r+"."+(+o+1)+".0"),Te("xRange return",n),n})}function Fj(e,t){return Te("replaceStars",e,t),e.trim().replace(Oe[uA],"")}function Pj(e,t,a,n,i,r,o,s,l,u,c,f,p){return xt(a)?t="":xt(n)?t=">="+a+".0.0":xt(i)?t=">="+a+"."+n+".0":t=">="+t,xt(l)?s="":xt(u)?s="<"+(+l+1)+".0.0":xt(c)?s="<"+l+"."+(+u+1)+".0":f?s="<="+l+"."+u+"."+c+"-"+f:s="<="+s,(t+" "+s).trim()}Ve.prototype.test=function(e){if(!e)return!1;typeof e=="string"&&(e=new be(e,this.options));for(var t=0;t<this.set.length;t++)if(Oj(this.set[t],e,this.options))return!0;return!1};function Oj(e,t,a){for(var n=0;n<e.length;n++)if(!e[n].test(t))return!1;if(t.prerelease.length&&!a.includePrerelease){for(n=0;n<e.length;n++)if(Te(e[n].semver),e[n].semver!==Or&&e[n].semver.prerelease.length>0){var i=e[n].semver;if(i.major===t.major&&i.minor===t.minor&&i.patch===t.patch)return!0}return!1}return!0}ce.satisfies=Gl;function Gl(e,t,a){try{t=new Ve(t,a)}catch(n){return!1}return t.test(e)}ce.maxSatisfying=Rj;function Rj(e,t,a){var n=null,i=null;try{var r=new Ve(t,a)}catch(o){return null}return e.forEach(function(o){r.test(o)&&(!n||i.compare(o)===-1)&&(n=o,i=new be(n,a))}),n}ce.minSatisfying=Bj;function Bj(e,t,a){var n=null,i=null;try{var r=new Ve(t,a)}catch(o){return null}return e.forEach(function(o){r.test(o)&&(!n||i.compare(o)===1)&&(n=o,i=new be(n,a))}),n}ce.minVersion=Nj;function Nj(e,t){e=new Ve(e,t);var a=new be("0.0.0");if(e.test(a)||(a=new be("0.0.0-0"),e.test(a)))return a;a=null;for(var n=0;n<e.set.length;++n){var i=e.set[n];i.forEach(function(r){var o=new be(r.semver.version);switch(r.operator){case">":o.prerelease.length===0?o.patch++:o.prerelease.push(0),o.raw=o.format();case"":case">=":(!a||Fr(a,o))&&(a=o);break;case"<":case"<=":break;default:throw new Error("Unexpected operation: "+r.operator)}})}return a&&e.test(a)?a:null}ce.validRange=jj;function jj(e,t){try{return new Ve(e,t).range||"*"}catch(a){return null}}ce.ltr=Lj;function Lj(e,t,a){return yf(e,t,"<",a)}ce.gtr=Mj;function Mj(e,t,a){return yf(e,t,">",a)}ce.outside=yf;function yf(e,t,a,n){e=new be(e,n),t=new Ve(t,n);var i,r,o,s,l;switch(a){case">":i=Fr,r=xf,o=Dl,s=">",l=">=";break;case"<":i=Dl,r=gf,o=Fr,s="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(Gl(e,t,n))return!1;for(var u=0;u<t.set.length;++u){var c=t.set[u],f=null,p=null;if(c.forEach(function(b){b.semver===Or&&(b=new Gt(">=0.0.0")),f=f||b,p=p||b,i(b.semver,f.semver,n)?f=b:o(b.semver,p.semver,n)&&(p=b)}),f.operator===s||f.operator===l||(!p.operator||p.operator===s)&&r(e,p.semver))return!1;if(p.operator===l&&o(e,p.semver))return!1}return!0}ce.prerelease=Dj;function Dj(e,t){var a=gn(e,t);return a&&a.prerelease.length?a.prerelease:null}ce.intersects=zj;function zj(e,t,a){return e=new Ve(e,a),t=new Ve(t,a),e.intersects(t)}ce.coerce=Gj;function Gj(e){if(e instanceof be)return e;if(typeof e!="string")return null;var t=e.match(Oe[nA]);return t==null?null:gn(t[1]+"."+(t[2]||"0")+"."+(t[3]||"0"))}});var yA=O((fV,Ul)=>{"use strict";var Vl=require("fs"),Ca=require("path"),mA=af(),Hj=fA(),hA={mode:511&~process.umask(),fs:Vl},vA=Hj.satisfies(process.version,">=10.12.0"),bA=e=>{if(process.platform==="win32"&&/[<>:"|?*]/.test(e.replace(Ca.parse(e).root,""))){let a=new Error(`Path contains invalid characters: ${e}`);throw a.code="EINVAL",a}},gA=e=>{let t=new Error(`operation not permitted, mkdir '${e}'`);return t.code="EPERM",t.errno=-4048,t.path=e,t.syscall="mkdir",t},xA=(e,t)=>Promise.resolve().then(()=>{bA(e),t=Object.assign({},hA,t);let a=mA(t.fs.mkdir),n=mA(t.fs.stat);if(vA&&t.fs.mkdir===Vl.mkdir){let r=Ca.resolve(e);return a(r,{mode:t.mode,recursive:!0}).then(()=>r)}let i=r=>a(r,t.mode).then(()=>r).catch(o=>{if(o.code==="EPERM")throw o;if(o.code==="ENOENT"){if(Ca.dirname(r)===r)throw gA(r);if(o.message.includes("null bytes"))throw o;return i(Ca.dirname(r)).then(()=>i(r))}return n(r).then(s=>s.isDirectory()?r:Promise.reject()).catch(()=>{throw o})});return i(Ca.resolve(e))});Ul.exports=xA;Ul.exports.default=xA;Ul.exports.sync=(e,t)=>{if(bA(e),t=Object.assign({},hA,t),vA&&t.fs.mkdirSync===Vl.mkdirSync){let n=Ca.resolve(e);return Vl.mkdirSync(n,{mode:t.mode,recursive:!0}),n}let a=n=>{try{t.fs.mkdirSync(n,t.mode)}catch(i){if(i.code==="EPERM")throw i;if(i.code==="ENOENT"){if(Ca.dirname(n)===n)throw gA(n);if(i.message.includes("null bytes"))throw i;return a(Ca.dirname(n)),a(n)}try{if(!t.fs.statSync(n).isDirectory())throw new Error("The path is not a directory")}catch(r){throw i}}return n};return a(Ca.resolve(e))}});var CA=O((mV,Jl)=>{"use strict";var Wj=Qd(),Vj=Symbol.asyncIterator||"@@asyncIterator",wA=e=>{let t=e.on||e.addListener||e.addEventListener,a=e.off||e.removeListener||e.removeEventListener;if(!t||!a)throw new TypeError("Emitter is not compatible");return{addListener:t.bind(e),removeListener:a.bind(e)}},EA=e=>Array.isArray(e)?e:[e],SA=(e,t,a)=>{let n,i=new Promise((r,o)=>{if(a=Object.assign({rejectionEvents:["error"],multiArgs:!1,resolveImmediately:!1},a),!(a.count>=0&&(a.count===1/0||Number.isInteger(a.count))))throw new TypeError("The `count` option should be at least 0 or more");let s=EA(t),l=[],{addListener:u,removeListener:c}=wA(e),f=(...b)=>{let d=a.multiArgs?b:b[0];a.filter&&!a.filter(d)||(l.push(d),a.count===l.length&&(n(),r(l)))},p=b=>{n(),o(b)};n=()=>{for(let b of s)c(b,f);for(let b of a.rejectionEvents)c(b,p)};for(let b of s)u(b,f);for(let b of a.rejectionEvents)u(b,p);a.resolveImmediately&&r(l)});if(i.cancel=n,typeof a.timeout=="number"){let r=Wj(i,a.timeout);return r.cancel=n,r}return i};Jl.exports=(e,t,a)=>{typeof a=="function"&&(a={filter:a}),a=Object.assign({},a,{count:1,resolveImmediately:!1});let n=SA(e,t,a),i=n.then(r=>r[0]);return i.cancel=n.cancel,i};Jl.exports.multiple=SA;Jl.exports.iterator=(e,t,a)=>{typeof a=="function"&&(a={filter:a});let n=EA(t);a=Object.assign({rejectionEvents:["error"],resolutionEvents:[],limit:1/0,multiArgs:!1},a);let{limit:i}=a;if(!(i>=0&&(i===1/0||Number.isInteger(i))))throw new TypeError("The `limit` option should be a non-negative integer or Infinity");if(i===0)return{[Symbol.asyncIterator](){return this},next(){return Promise.resolve({done:!0,value:void 0})}};let o=!1,{addListener:s,removeListener:l}=wA(e),u=!1,c,f=!1,p=[],b=[],d=0,m=(...E)=>{d++,o=d===i;let g=a.multiArgs?E:E[0];if(p.length>0){let{resolve:w}=p.shift();w({done:!1,value:g}),o&&h();return}b.push(g),o&&h()},h=()=>{u=!0;for(let E of n)l(E,m);for(let E of a.rejectionEvents)l(E,v);for(let E of a.resolutionEvents)l(E,x);for(;p.length>0;){let{resolve:E}=p.shift();E({done:!0,value:void 0})}},v=(...E)=>{if(c=a.multiArgs?E:E[0],p.length>0){let{reject:g}=p.shift();g(c)}else f=!0;h()},x=(...E)=>{let g=a.multiArgs?E:E[0];if(!(a.filter&&!a.filter(g))){if(p.length>0){let{resolve:w}=p.shift();w({done:!0,value:g})}else b.push(g);h()}};for(let E of n)s(E,m);for(let E of a.rejectionEvents)s(E,v);for(let E of a.resolutionEvents)s(E,x);return{[Vj](){return this},next(){if(b.length>0){let E=b.shift();return Promise.resolve({done:u&&b.length===0&&!o,value:E})}return f?(f=!1,Promise.reject(c)):u?Promise.resolve({done:!0,value:void 0}):new Promise((E,g)=>p.push({resolve:E,reject:g}))},return(E){return h(),Promise.resolve({done:u,value:E})}}}});var IA=O(Rr=>{"use strict";Rr.stringToBytes=e=>[...e].map(t=>t.charCodeAt(0));var AA=(e,t,a)=>String.fromCharCode(...e.slice(t,a));Rr.readUInt64LE=(e,t=0)=>{let a=e[t],n=1,i=0;for(;++i<8;)n*=256,a+=e[t+i]*n;return a};Rr.tarHeaderChecksumMatches=e=>{if(e.length<512)return!1;let t=128,a=256,n=0;for(let r=0;r<148;r++){let o=e[r];a+=o,n+=o&t}for(let r=156;r<512;r++){let o=e[r];a+=o,n+=o&t}let i=parseInt(AA(e,148,154),8);return i===a||i===a-(n<<1)};Rr.uint8ArrayUtf8ByteString=AA});var _A=O((exports,module)=>{"use strict";var{stringToBytes,readUInt64LE,tarHeaderChecksumMatches,uint8ArrayUtf8ByteString}=IA(),xpiZipFilename=stringToBytes("META-INF/mozilla.rsa"),oxmlContentTypes=stringToBytes("[Content_Types].xml"),oxmlRels=stringToBytes("_rels/.rels"),fileType=e=>{if(!(e instanceof Uint8Array||e instanceof ArrayBuffer||Buffer.isBuffer(e)))throw new TypeError(`Expected the \`input\` argument to be of type \`Uint8Array\` or \`Buffer\` or \`ArrayBuffer\`, got \`${typeof e}\``);let t=e instanceof Uint8Array?e:new Uint8Array(e);if(!(t&&t.length>1))return;let a=(i,r)=>{r=Object.assign({offset:0},r);for(let o=0;o<i.length;o++)if(r.mask){if(i[o]!==(r.mask[o]&t[o+r.offset]))return!1}else if(i[o]!==t[o+r.offset])return!1;return!0},n=(i,r)=>a(stringToBytes(i),r);if(a([255,216,255]))return{ext:"jpg",mime:"image/jpeg"};if(a([137,80,78,71,13,10,26,10]))return{ext:"png",mime:"image/png"};if(a([71,73,70]))return{ext:"gif",mime:"image/gif"};if(a([87,69,66,80],{offset:8}))return{ext:"webp",mime:"image/webp"};if(a([70,76,73,70]))return{ext:"flif",mime:"image/flif"};if((a([73,73,42,0])||a([77,77,0,42]))&&a([67,82],{offset:8}))return{ext:"cr2",mime:"image/x-canon-cr2"};if(a([73,73,82,79,8,0,0,0,24]))return{ext:"orf",mime:"image/x-olympus-orf"};if(a([73,73,42,0,16,251,134,1]))return{ext:"arw",mime:"image/x-sony-arw"};if(a([73,73,42,0,8,0,0,0,45]))return{ext:"dng",mime:"image/x-adobe-dng"};if(a([73,73,42,0,48,61,114,1,28]))return{ext:"nef",mime:"image/x-nikon-nef"};if(a([73,73,42,0])||a([77,77,0,42]))return{ext:"tif",mime:"image/tiff"};if(a([66,77]))return{ext:"bmp",mime:"image/bmp"};if(a([73,73,188]))return{ext:"jxr",mime:"image/vnd.ms-photo"};if(a([56,66,80,83]))return{ext:"psd",mime:"image/vnd.adobe.photoshop"};if(a([80,75,3,4])){if(a([109,105,109,101,116,121,112,101,97,112,112,108,105,99,97,116,105,111,110,47,101,112,117,98,43,122,105,112],{offset:30}))return{ext:"epub",mime:"application/epub+zip"};if(a(xpiZipFilename,{offset:30}))return{ext:"xpi",mime:"application/x-xpinstall"};if(n("mimetypeapplication/vnd.oasis.opendocument.text",{offset:30}))return{ext:"odt",mime:"application/vnd.oasis.opendocument.text"};if(n("mimetypeapplication/vnd.oasis.opendocument.spreadsheet",{offset:30}))return{ext:"ods",mime:"application/vnd.oasis.opendocument.spreadsheet"};if(n("mimetypeapplication/vnd.oasis.opendocument.presentation",{offset:30}))return{ext:"odp",mime:"application/vnd.oasis.opendocument.presentation"};let i=(l,u=0)=>l.findIndex((c,f,p)=>f>=u&&p[f]===80&&p[f+1]===75&&p[f+2]===3&&p[f+3]===4),r=0,o=!1,s;do{let l=r+30;if(o||(o=a(oxmlContentTypes,{offset:l})||a(oxmlRels,{offset:l})),s||(n("word/",{offset:l})?s={ext:"docx",mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"}:n("ppt/",{offset:l})?s={ext:"pptx",mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation"}:n("xl/",{offset:l})&&(s={ext:"xlsx",mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"})),o&&s)return s;r=i(t,l)}while(r>=0);if(s)return s}if(a([80,75])&&(t[2]===3||t[2]===5||t[2]===7)&&(t[3]===4||t[3]===6||t[3]===8))return{ext:"zip",mime:"application/zip"};if(a([48,48,48,48,48,48],{offset:148,mask:[248,248,248,248,248,248]})&&tarHeaderChecksumMatches(t))return{ext:"tar",mime:"application/x-tar"};if(a([82,97,114,33,26,7])&&(t[6]===0||t[6]===1))return{ext:"rar",mime:"application/x-rar-compressed"};if(a([31,139,8]))return{ext:"gz",mime:"application/gzip"};if(a([66,90,104]))return{ext:"bz2",mime:"application/x-bzip2"};if(a([55,122,188,175,39,28]))return{ext:"7z",mime:"application/x-7z-compressed"};if(a([120,1]))return{ext:"dmg",mime:"application/x-apple-diskimage"};if(a([102,114,101,101],{offset:4})||a([109,100,97,116],{offset:4})||a([109,111,111,118],{offset:4})||a([119,105,100,101],{offset:4}))return{ext:"mov",mime:"video/quicktime"};if(a([102,116,121,112],{offset:4})&&t[8]&96&&t[9]&96&&t[10]&96&&t[11]&96){let i=uint8ArrayUtf8ByteString(t,8,12);switch(i){case"mif1":return{ext:"heic",mime:"image/heif"};case"msf1":return{ext:"heic",mime:"image/heif-sequence"};case"heic":case"heix":return{ext:"heic",mime:"image/heic"};case"hevc":case"hevx":return{ext:"heic",mime:"image/heic-sequence"};case"qt ":return{ext:"mov",mime:"video/quicktime"};case"M4V ":case"M4VH":case"M4VP":return{ext:"m4v",mime:"video/x-m4v"};case"M4P ":return{ext:"m4p",mime:"video/mp4"};case"M4B ":return{ext:"m4b",mime:"audio/mp4"};case"M4A ":return{ext:"m4a",mime:"audio/x-m4a"};case"F4V ":return{ext:"f4v",mime:"video/mp4"};case"F4P ":return{ext:"f4p",mime:"video/mp4"};case"F4A ":return{ext:"f4a",mime:"audio/mp4"};case"F4B ":return{ext:"f4b",mime:"audio/mp4"};default:return i.startsWith("3g")?i.startsWith("3g2")?{ext:"3g2",mime:"video/3gpp2"}:{ext:"3gp",mime:"video/3gpp"}:{ext:"mp4",mime:"video/mp4"}}}if(a([77,84,104,100]))return{ext:"mid",mime:"audio/midi"};if(a([26,69,223,163])){let i=t.subarray(4,4100),r=i.findIndex((o,s,l)=>l[s]===66&&l[s+1]===130);if(r!==-1){let o=r+3,s=l=>[...l].every((u,c)=>i[o+c]===u.charCodeAt(0));if(s("matroska"))return{ext:"mkv",mime:"video/x-matroska"};if(s("webm"))return{ext:"webm",mime:"video/webm"}}}if(a([82,73,70,70])){if(a([65,86,73],{offset:8}))return{ext:"avi",mime:"video/vnd.avi"};if(a([87,65,86,69],{offset:8}))return{ext:"wav",mime:"audio/vnd.wave"};if(a([81,76,67,77],{offset:8}))return{ext:"qcp",mime:"audio/qcelp"}}if(a([48,38,178,117,142,102,207,17,166,217])){let i=30;do{let r=readUInt64LE(t,i+16);if(a([145,7,220,183,183,169,207,17,142,230,0,192,12,32,83,101],{offset:i})){if(a([64,158,105,248,77,91,207,17,168,253,0,128,95,92,68,43],{offset:i+24}))return{ext:"wma",mime:"audio/x-ms-wma"};if(a([192,239,25,188,77,91,207,17,168,253,0,128,95,92,68,43],{offset:i+24}))return{ext:"wmv",mime:"video/x-ms-asf"};break}i+=r}while(i+24<=t.length);return{ext:"asf",mime:"application/vnd.ms-asf"}}if(a([0,0,1,186])||a([0,0,1,179]))return{ext:"mpg",mime:"video/mpeg"};for(let i=0;i<2&&i<t.length-16;i++){if(a([73,68,51],{offset:i})||a([255,226],{offset:i,mask:[255,230]}))return{ext:"mp3",mime:"audio/mpeg"};if(a([255,228],{offset:i,mask:[255,230]}))return{ext:"mp2",mime:"audio/mpeg"};if(a([255,248],{offset:i,mask:[255,252]}))return{ext:"mp2",mime:"audio/mpeg"};if(a([255,240],{offset:i,mask:[255,252]}))return{ext:"mp4",mime:"audio/mpeg"}}if(a([79,112,117,115,72,101,97,100],{offset:28}))return{ext:"opus",mime:"audio/opus"};if(a([79,103,103,83]))return a([128,116,104,101,111,114,97],{offset:28})?{ext:"ogv",mime:"video/ogg"}:a([1,118,105,100,101,111,0],{offset:28})?{ext:"ogm",mime:"video/ogg"}:a([127,70,76,65,67],{offset:28})?{ext:"oga",mime:"audio/ogg"}:a([83,112,101,101,120,32,32],{offset:28})?{ext:"spx",mime:"audio/ogg"}:a([1,118,111,114,98,105,115],{offset:28})?{ext:"ogg",mime:"audio/ogg"}:{ext:"ogx",mime:"application/ogg"};if(a([102,76,97,67]))return{ext:"flac",mime:"audio/x-flac"};if(a([77,65,67,32]))return{ext:"ape",mime:"audio/ape"};if(a([119,118,112,107]))return{ext:"wv",mime:"audio/wavpack"};if(a([35,33,65,77,82,10]))return{ext:"amr",mime:"audio/amr"};if(a([37,80,68,70]))return{ext:"pdf",mime:"application/pdf"};if(a([77,90]))return{ext:"exe",mime:"application/x-msdownload"};if((t[0]===67||t[0]===70)&&a([87,83],{offset:1}))return{ext:"swf",mime:"application/x-shockwave-flash"};if(a([123,92,114,116,102]))return{ext:"rtf",mime:"application/rtf"};if(a([0,97,115,109]))return{ext:"wasm",mime:"application/wasm"};if(a([119,79,70,70])&&(a([0,1,0,0],{offset:4})||a([79,84,84,79],{offset:4})))return{ext:"woff",mime:"font/woff"};if(a([119,79,70,50])&&(a([0,1,0,0],{offset:4})||a([79,84,84,79],{offset:4})))return{ext:"woff2",mime:"font/woff2"};if(a([76,80],{offset:34})&&(a([0,0,1],{offset:8})||a([1,0,2],{offset:8})||a([2,0,2],{offset:8})))return{ext:"eot",mime:"application/vnd.ms-fontobject"};if(a([0,1,0,0,0]))return{ext:"ttf",mime:"font/ttf"};if(a([79,84,84,79,0]))return{ext:"otf",mime:"font/otf"};if(a([0,0,1,0]))return{ext:"ico",mime:"image/x-icon"};if(a([0,0,2,0]))return{ext:"cur",mime:"image/x-icon"};if(a([70,76,86,1]))return{ext:"flv",mime:"video/x-flv"};if(a([37,33]))return{ext:"ps",mime:"application/postscript"};if(a([253,55,122,88,90,0]))return{ext:"xz",mime:"application/x-xz"};if(a([83,81,76,105]))return{ext:"sqlite",mime:"application/x-sqlite3"};if(a([78,69,83,26]))return{ext:"nes",mime:"application/x-nintendo-nes-rom"};if(a([67,114,50,52]))return{ext:"crx",mime:"application/x-google-chrome-extension"};if(a([77,83,67,70])||a([73,83,99,40]))return{ext:"cab",mime:"application/vnd.ms-cab-compressed"};if(a([33,60,97,114,99,104,62,10,100,101,98,105,97,110,45,98,105,110,97,114,121]))return{ext:"deb",mime:"application/x-deb"};if(a([33,60,97,114,99,104,62]))return{ext:"ar",mime:"application/x-unix-archive"};if(a([237,171,238,219]))return{ext:"rpm",mime:"application/x-rpm"};if(a([31,160])||a([31,157]))return{ext:"Z",mime:"application/x-compress"};if(a([76,90,73,80]))return{ext:"lz",mime:"application/x-lzip"};if(a([208,207,17,224,161,177,26,225]))return{ext:"msi",mime:"application/x-msi"};if(a([6,14,43,52,2,5,1,1,13,1,2,1,1,2]))return{ext:"mxf",mime:"application/mxf"};if(a([71],{offset:4})&&(a([71],{offset:192})||a([71],{offset:196})))return{ext:"mts",mime:"video/mp2t"};if(a([66,76,69,78,68,69,82]))return{ext:"blend",mime:"application/x-blender"};if(a([66,80,71,251]))return{ext:"bpg",mime:"image/bpg"};if(a([0,0,0,12,106,80,32,32,13,10,135,10])){if(a([106,112,50,32],{offset:20}))return{ext:"jp2",mime:"image/jp2"};if(a([106,112,120,32],{offset:20}))return{ext:"jpx",mime:"image/jpx"};if(a([106,112,109,32],{offset:20}))return{ext:"jpm",mime:"image/jpm"};if(a([109,106,112,50],{offset:20}))return{ext:"mj2",mime:"image/mj2"}}if(a([70,79,82,77]))return{ext:"aif",mime:"audio/aiff"};if(n("<?xml "))return{ext:"xml",mime:"application/xml"};if(a([66,79,79,75,77,79,66,73],{offset:60}))return{ext:"mobi",mime:"application/x-mobipocket-ebook"};if(a([171,75,84,88,32,49,49,187,13,10,26,10]))return{ext:"ktx",mime:"image/ktx"};if(a([68,73,67,77],{offset:128}))return{ext:"dcm",mime:"application/dicom"};if(a([77,80,43]))return{ext:"mpc",mime:"audio/x-musepack"};if(a([77,80,67,75]))return{ext:"mpc",mime:"audio/x-musepack"};if(a([66,69,71,73,78,58]))return{ext:"ics",mime:"text/calendar"};if(a([103,108,84,70,2,0,0,0]))return{ext:"glb",mime:"model/gltf-binary"};if(a([212,195,178,161])||a([161,178,195,212]))return{ext:"pcap",mime:"application/vnd.tcpdump.pcap"};if(a([68,83,68,32]))return{ext:"dsf",mime:"audio/x-dsf"};if(a([76,0,0,0,1,20,2,0,0,0,0,0,192,0,0,0,0,0,0,70]))return{ext:"lnk",mime:"application/x.ms.shortcut"};if(a([98,111,111,107,0,0,0,0,109,97,114,107,0,0,0,0]))return{ext:"alias",mime:"application/x.apple.alias"};if(n("Creative Voice File"))return{ext:"voc",mime:"audio/x-voc"};if(a([11,119]))return{ext:"ac3",mime:"audio/vnd.dolby.dd-raw"}};module.exports=fileType;Object.defineProperty(fileType,"minimumBytes",{value:4100});fileType.stream=readableStream=>new Promise((resolve,reject)=>{let stream=eval("require")("stream");readableStream.once("readable",()=>{let e=new stream.PassThrough,t=readableStream.read(module.exports.minimumBytes)||readableStream.read();try{e.fileType=fileType(t)}catch(a){reject(a)}readableStream.unshift(t),stream.pipeline?resolve(stream.pipeline(readableStream,e,()=>{})):resolve(readableStream.pipe(e))})})});var TA=O((vV,Uj)=>{Uj.exports={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/3gpp-ims+xml":{source:"iana",compressible:!0},"application/3gpphal+json":{source:"iana",compressible:!0},"application/3gpphalforms+json":{source:"iana",compressible:!0},"application/a2l":{source:"iana"},"application/ace+cbor":{source:"iana"},"application/activemessage":{source:"iana"},"application/activity+json":{source:"iana",compressible:!0},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/alto-updatestreamcontrol+json":{source:"iana",compressible:!0},"application/alto-updatestreamparams+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/at+jwt":{source:"iana"},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",compressible:!0,extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana",compressible:!0,extensions:["atomdeleted"]},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",compressible:!0,extensions:["atomsvc"]},"application/atsc-dwd+xml":{source:"iana",compressible:!0,extensions:["dwd"]},"application/atsc-dynamic-event-message":{source:"iana"},"application/atsc-held+xml":{source:"iana",compressible:!0,extensions:["held"]},"application/atsc-rdt+json":{source:"iana",compressible:!0},"application/atsc-rsat+xml":{source:"iana",compressible:!0,extensions:["rsat"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana",compressible:!0},"application/bacnet-xdd+zip":{source:"iana",compressible:!1},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana",compressible:!0,extensions:["xcs"]},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/captive+json":{source:"iana",compressible:!0},"application/cbor":{source:"iana"},"application/cbor-seq":{source:"iana"},"application/cccex":{source:"iana"},"application/ccmp+xml":{source:"iana",compressible:!0},"application/ccxml+xml":{source:"iana",compressible:!0,extensions:["ccxml"]},"application/cdfx+xml":{source:"iana",compressible:!0,extensions:["cdfx"]},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana",compressible:!0},"application/cellml+xml":{source:"iana",compressible:!0},"application/cfw":{source:"iana"},"application/city+json":{source:"iana",compressible:!0},"application/clr":{source:"iana"},"application/clue+xml":{source:"iana",compressible:!0},"application/clue_info+xml":{source:"iana",compressible:!0},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana",compressible:!0},"application/coap-group+json":{source:"iana",compressible:!0},"application/coap-payload":{source:"iana"},"application/commonground":{source:"iana"},"application/conference-info+xml":{source:"iana",compressible:!0},"application/cose":{source:"iana"},"application/cose-key":{source:"iana"},"application/cose-key-set":{source:"iana"},"application/cpl+xml":{source:"iana",compressible:!0,extensions:["cpl"]},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana",compressible:!0},"application/cstadata+xml":{source:"iana",compressible:!0},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cwt":{source:"iana"},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",compressible:!0,extensions:["mpd"]},"application/dash-patch+xml":{source:"iana",compressible:!0,extensions:["mpp"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",compressible:!0,extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana",compressible:!0},"application/dicom":{source:"iana"},"application/dicom+json":{source:"iana",compressible:!0},"application/dicom+xml":{source:"iana",compressible:!0},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/dns+json":{source:"iana",compressible:!0},"application/dns-message":{source:"iana"},"application/docbook+xml":{source:"apache",compressible:!0,extensions:["dbk"]},"application/dots+cbor":{source:"iana"},"application/dskpp+xml":{source:"iana",compressible:!0},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",compressible:!0,extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/ecmascript":{source:"iana",compressible:!0,extensions:["es","ecma"]},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/efi":{source:"iana"},"application/elm+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/elm+xml":{source:"iana",compressible:!0},"application/emergencycalldata.cap+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/emergencycalldata.comment+xml":{source:"iana",compressible:!0},"application/emergencycalldata.control+xml":{source:"iana",compressible:!0},"application/emergencycalldata.deviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.ecall.msd":{source:"iana"},"application/emergencycalldata.providerinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.serviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.subscriberinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.veds+xml":{source:"iana",compressible:!0},"application/emma+xml":{source:"iana",compressible:!0,extensions:["emma"]},"application/emotionml+xml":{source:"iana",compressible:!0,extensions:["emotionml"]},"application/encaprtp":{source:"iana"},"application/epp+xml":{source:"iana",compressible:!0},"application/epub+zip":{source:"iana",compressible:!1,extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/expect-ct-report+json":{source:"iana",compressible:!0},"application/express":{source:"iana",extensions:["exp"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdt+xml":{source:"iana",compressible:!0,extensions:["fdt"]},"application/fhir+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/fhir+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/fido.trusted-apps+json":{compressible:!0},"application/fits":{source:"iana"},"application/flexfec":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1},"application/framework-attributes+xml":{source:"iana",compressible:!0},"application/geo+json":{source:"iana",compressible:!0,extensions:["geojson"]},"application/geo+json-seq":{source:"iana"},"application/geopackage+sqlite3":{source:"iana"},"application/geoxacml+xml":{source:"iana",compressible:!0},"application/gltf-buffer":{source:"iana"},"application/gml+xml":{source:"iana",compressible:!0,extensions:["gml"]},"application/gpx+xml":{source:"apache",compressible:!0,extensions:["gpx"]},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1,extensions:["gz"]},"application/h224":{source:"iana"},"application/held+xml":{source:"iana",compressible:!0},"application/hjson":{extensions:["hjson"]},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana",compressible:!0},"application/ibe-pkg-reply+xml":{source:"iana",compressible:!0},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",compressible:!0,extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana",compressible:!0,extensions:["its"]},"application/java-archive":{source:"apache",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js","mjs"]},"application/jf2feed+json":{source:"iana",compressible:!0},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/jscalendar+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana",compressible:!0},"application/kpml-response+xml":{source:"iana",compressible:!0},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/lgr+xml":{source:"iana",compressible:!0,extensions:["lgr"]},"application/link-format":{source:"iana"},"application/load-control+xml":{source:"iana",compressible:!0},"application/lost+xml":{source:"iana",compressible:!0,extensions:["lostxml"]},"application/lostsync+xml":{source:"iana",compressible:!0},"application/lpf+zip":{source:"iana",compressible:!1},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",compressible:!0,extensions:["mads"]},"application/manifest+json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",compressible:!0,extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",compressible:!0,extensions:["mathml"]},"application/mathml-content+xml":{source:"iana",compressible:!0},"application/mathml-presentation+xml":{source:"iana",compressible:!0},"application/mbms-associated-procedure-description+xml":{source:"iana",compressible:!0},"application/mbms-deregister+xml":{source:"iana",compressible:!0},"application/mbms-envelope+xml":{source:"iana",compressible:!0},"application/mbms-msk+xml":{source:"iana",compressible:!0},"application/mbms-msk-response+xml":{source:"iana",compressible:!0},"application/mbms-protection-description+xml":{source:"iana",compressible:!0},"application/mbms-reception-report+xml":{source:"iana",compressible:!0},"application/mbms-register+xml":{source:"iana",compressible:!0},"application/mbms-register-response+xml":{source:"iana",compressible:!0},"application/mbms-schedule+xml":{source:"iana",compressible:!0},"application/mbms-user-service-description+xml":{source:"iana",compressible:!0},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana",compressible:!0,extensions:["mpf"]},"application/media_control+xml":{source:"iana",compressible:!0},"application/mediaservercontrol+xml":{source:"iana",compressible:!0,extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",compressible:!0,extensions:["metalink"]},"application/metalink4+xml":{source:"iana",compressible:!0,extensions:["meta4"]},"application/mets+xml":{source:"iana",compressible:!0,extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mipc":{source:"iana"},"application/missing-blocks+cbor-seq":{source:"iana"},"application/mmt-aei+xml":{source:"iana",compressible:!0,extensions:["maei"]},"application/mmt-usd+xml":{source:"iana",compressible:!0,extensions:["musd"]},"application/mods+xml":{source:"iana",compressible:!0,extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana",compressible:!0},"application/mrb-publish+xml":{source:"iana",compressible:!0},"application/msc-ivr+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msc-mixer+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mud+json":{source:"iana",compressible:!0},"application/multipart-core":{source:"iana"},"application/mxf":{source:"iana",extensions:["mxf"]},"application/n-quads":{source:"iana",extensions:["nq"]},"application/n-triples":{source:"iana",extensions:["nt"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana",charset:"US-ASCII"},"application/news-groupinfo":{source:"iana",charset:"US-ASCII"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana",compressible:!0},"application/node":{source:"iana",extensions:["cjs"]},"application/nss":{source:"iana"},"application/oauth-authz-req+jwt":{source:"iana"},"application/oblivious-dns-message":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!1,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odm+xml":{source:"iana",compressible:!0},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",compressible:!0,extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/omdoc+xml":{source:"apache",compressible:!0,extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{source:"iana",compressible:!0},"application/oscore":{source:"iana"},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p21":{source:"iana"},"application/p21+zip":{source:"iana",compressible:!1},"application/p2p-overlay+xml":{source:"iana",compressible:!0,extensions:["relo"]},"application/parityfec":{source:"iana"},"application/passport":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",compressible:!0,extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pem-certificate-chain":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana",extensions:["asc"]},"application/pgp-signature":{source:"iana",extensions:["asc","sig"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pidf-diff+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkcs8-encrypted":{source:"iana"},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",compressible:!0,extensions:["pls"]},"application/poc-settings+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/ppsp-tracker+json":{source:"iana",compressible:!0},"application/problem+json":{source:"iana",compressible:!0},"application/problem+xml":{source:"iana",compressible:!0},"application/provenance+xml":{source:"iana",compressible:!0,extensions:["provx"]},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.cyn":{source:"iana",charset:"7-BIT"},"application/prs.hpub+zip":{source:"iana",compressible:!1},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.xsf+xml":{source:"iana",compressible:!0},"application/pskc+xml":{source:"iana",compressible:!0,extensions:["pskcxml"]},"application/pvd+json":{source:"iana",compressible:!0},"application/qsig":{source:"iana"},"application/raml+yaml":{compressible:!0,extensions:["raml"]},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf","owl"]},"application/reginfo+xml":{source:"iana",compressible:!0,extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"iana"},"application/reputon+json":{source:"iana",compressible:!0},"application/resource-lists+xml":{source:"iana",compressible:!0,extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",compressible:!0,extensions:["rld"]},"application/rfc+xml":{source:"iana",compressible:!0},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana",compressible:!0},"application/rls-services+xml":{source:"iana",compressible:!0,extensions:["rs"]},"application/route-apd+xml":{source:"iana",compressible:!0,extensions:["rapd"]},"application/route-s-tsid+xml":{source:"iana",compressible:!0,extensions:["sls"]},"application/route-usd+xml":{source:"iana",compressible:!0,extensions:["rusd"]},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-publication":{source:"iana"},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",compressible:!0,extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana",compressible:!0},"application/samlmetadata+xml":{source:"iana",compressible:!0},"application/sarif+json":{source:"iana",compressible:!0},"application/sarif-external-properties+json":{source:"iana",compressible:!0},"application/sbe":{source:"iana"},"application/sbml+xml":{source:"iana",compressible:!0,extensions:["sbml"]},"application/scaip+xml":{source:"iana",compressible:!0},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/secevent+jwt":{source:"iana"},"application/senml+cbor":{source:"iana"},"application/senml+json":{source:"iana",compressible:!0},"application/senml+xml":{source:"iana",compressible:!0,extensions:["senmlx"]},"application/senml-etch+cbor":{source:"iana"},"application/senml-etch+json":{source:"iana",compressible:!0},"application/senml-exi":{source:"iana"},"application/sensml+cbor":{source:"iana"},"application/sensml+json":{source:"iana",compressible:!0},"application/sensml+xml":{source:"iana",compressible:!0,extensions:["sensmlx"]},"application/sensml-exi":{source:"iana"},"application/sep+xml":{source:"iana",compressible:!0},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",compressible:!0,extensions:["shf"]},"application/sieve":{source:"iana",extensions:["siv","sieve"]},"application/simple-filter+xml":{source:"iana",compressible:!0},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/sipc":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"iana"},"application/smil+xml":{source:"iana",compressible:!0,extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",compressible:!0,extensions:["srx"]},"application/spdx+json":{source:"iana",compressible:!0},"application/spirits-event+xml":{source:"iana",compressible:!0},"application/sql":{source:"iana"},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",compressible:!0,extensions:["grxml"]},"application/sru+xml":{source:"iana",compressible:!0,extensions:["sru"]},"application/ssdl+xml":{source:"apache",compressible:!0,extensions:["ssdl"]},"application/ssml+xml":{source:"iana",compressible:!0,extensions:["ssml"]},"application/stix+json":{source:"iana",compressible:!0},"application/swid+xml":{source:"iana",compressible:!0,extensions:["swidtag"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/taxii+json":{source:"iana",compressible:!0},"application/td+json":{source:"iana",compressible:!0},"application/tei+xml":{source:"iana",compressible:!0,extensions:["tei","teicorpus"]},"application/tetra_isi":{source:"iana"},"application/thraud+xml":{source:"iana",compressible:!0,extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/tlsrpt+gzip":{source:"iana"},"application/tlsrpt+json":{source:"iana",compressible:!0},"application/tnauthlist":{source:"iana"},"application/token-introspection+jwt":{source:"iana"},"application/toml":{compressible:!0,extensions:["toml"]},"application/trickle-ice-sdpfrag":{source:"iana"},"application/trig":{source:"iana",extensions:["trig"]},"application/ttml+xml":{source:"iana",compressible:!0,extensions:["ttml"]},"application/tve-trigger":{source:"iana"},"application/tzif":{source:"iana"},"application/tzif-leap":{source:"iana"},"application/ubjson":{compressible:!1,extensions:["ubj"]},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana",compressible:!0},"application/urc-ressheet+xml":{source:"iana",compressible:!0,extensions:["rsheet"]},"application/urc-targetdesc+xml":{source:"iana",compressible:!0,extensions:["td"]},"application/urc-uisocketdesc+xml":{source:"iana",compressible:!0},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana",compressible:!0},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.1000minds.decision-model+xml":{source:"iana",compressible:!0,extensions:["1km"]},"application/vnd.3gpp-prose+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-v2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gnas":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.bsf+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gmop+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gtpc":{source:"iana"},"application/vnd.3gpp.interworking-data":{source:"iana"},"application/vnd.3gpp.lpp":{source:"iana"},"application/vnd.3gpp.mc-signalling-ear":{source:"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-payload":{source:"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-signalling":{source:"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-floor-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-signed+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-init-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-transmission-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mid-call+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ngap":{source:"iana"},"application/vnd.3gpp.pfcp":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.s1ap":{source:"iana"},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.sms+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ussd+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3lightssoftware.imagescal":{source:"iana"},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",compressible:!1,extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",compressible:!0,extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"iana",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.afpc.afplinedata":{source:"iana"},"application/vnd.afpc.afplinedata-pagedef":{source:"iana"},"application/vnd.afpc.cmoca-cmresource":{source:"iana"},"application/vnd.afpc.foca-charset":{source:"iana"},"application/vnd.afpc.foca-codedfont":{source:"iana"},"application/vnd.afpc.foca-codepage":{source:"iana"},"application/vnd.afpc.modca":{source:"iana"},"application/vnd.afpc.modca-cmtable":{source:"iana"},"application/vnd.afpc.modca-formdef":{source:"iana"},"application/vnd.afpc.modca-mediummap":{source:"iana"},"application/vnd.afpc.modca-objectcontainer":{source:"iana"},"application/vnd.afpc.modca-overlay":{source:"iana"},"application/vnd.afpc.modca-pagesegment":{source:"iana"},"application/vnd.age":{source:"iana",extensions:["age"]},"application/vnd.ah-barcode":{source:"iana"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amadeus+json":{source:"iana",compressible:!0},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.amazon.mobi8-ebook":{source:"iana"},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana",compressible:!0},"application/vnd.android.ota":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.arrow.file":{source:"iana"},"application/vnd.apache.arrow.stream":{source:"iana"},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.aplextor.warrp+json":{source:"iana",compressible:!0},"application/vnd.apothekende.reservation+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",compressible:!0,extensions:["mpkg"]},"application/vnd.apple.keynote":{source:"iana",extensions:["key"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.numbers":{source:"iana",extensions:["numbers"]},"application/vnd.apple.pages":{source:"iana",extensions:["pages"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"iana"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artisan+json":{source:"iana",compressible:!0},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avalon+json":{source:"iana",compressible:!0},"application/vnd.avistar+xml":{source:"iana",compressible:!0},"application/vnd.balsamiq.bmml+xml":{source:"iana",compressible:!0,extensions:["bmml"]},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.banana-accounting":{source:"iana"},"application/vnd.bbf.usp.error":{source:"iana"},"application/vnd.bbf.usp.msg":{source:"iana"},"application/vnd.bbf.usp.msg+json":{source:"iana",compressible:!0},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.bint.med-content":{source:"iana"},"application/vnd.biopax.rdf+xml":{source:"iana",compressible:!0},"application/vnd.blink-idb-value-wrapper":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.bpf":{source:"iana"},"application/vnd.bpf3":{source:"iana"},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.byu.uapi+json":{source:"iana",compressible:!0},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.capasystems-pg+json":{source:"iana",compressible:!0},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",compressible:!0,extensions:["cdxml"]},"application/vnd.chess-pgn":{source:"iana"},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.ciedi":{source:"iana"},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana",compressible:!0,extensions:["csl"]},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collabio.xodocuments.document":{source:"iana"},"application/vnd.collabio.xodocuments.document-template":{source:"iana"},"application/vnd.collabio.xodocuments.presentation":{source:"iana"},"application/vnd.collabio.xodocuments.presentation-template":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.comicbook+zip":{source:"iana",compressible:!1},"application/vnd.comicbook-rar":{source:"iana"},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.coreos.ignition+json":{source:"iana",compressible:!0},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",compressible:!0,extensions:["wbs"]},"application/vnd.cryptii.pipe+json":{source:"iana",compressible:!0},"application/vnd.crypto-shade-file":{source:"iana"},"application/vnd.cryptomator.encrypted":{source:"iana"},"application/vnd.cryptomator.vault":{source:"iana"},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana",compressible:!0},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana",compressible:!0},"application/vnd.cybank":{source:"iana"},"application/vnd.cyclonedx+json":{source:"iana",compressible:!0},"application/vnd.cyclonedx+xml":{source:"iana",compressible:!0},"application/vnd.d2l.coursepackage1p0+zip":{source:"iana",compressible:!1},"application/vnd.d3m-dataset":{source:"iana"},"application/vnd.d3m-problem":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.datapackage+json":{source:"iana",compressible:!0},"application/vnd.dataresource+json":{source:"iana",compressible:!0},"application/vnd.dbf":{source:"iana",extensions:["dbf"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",compressible:!0,extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume.movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana",compressible:!0},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbisl+xml":{source:"iana",compressible:!0},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-container+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-generic+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-init+xml":{source:"iana",compressible:!0},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecip.rlp":{source:"iana"},"application/vnd.eclipse.ditto+json":{source:"iana",compressible:!0},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.efi.img":{source:"iana"},"application/vnd.efi.iso":{source:"iana"},"application/vnd.emclient.accessrequest+xml":{source:"iana",compressible:!0},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana",compressible:!0},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.espass-espass+zip":{source:"iana",compressible:!1},"application/vnd.eszigno3+xml":{source:"iana",compressible:!0,extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.asic-e+zip":{source:"iana",compressible:!1},"application/vnd.etsi.asic-s+zip":{source:"iana",compressible:!1},"application/vnd.etsi.cug+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvcommand+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvservice+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsync+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvueprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mcid+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana",compressible:!0},"application/vnd.etsi.pstn+xml":{source:"iana",compressible:!0},"application/vnd.etsi.sci+xml":{source:"iana",compressible:!0},"application/vnd.etsi.simservs+xml":{source:"iana",compressible:!0},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana",compressible:!0},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eu.kasparian.car+json":{source:"iana",compressible:!0},"application/vnd.eudora.data":{source:"iana"},"application/vnd.evolv.ecig.profile":{source:"iana"},"application/vnd.evolv.ecig.settings":{source:"iana"},"application/vnd.evolv.ecig.theme":{source:"iana"},"application/vnd.exstream-empower+zip":{source:"iana",compressible:!1},"application/vnd.exstream-package":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.familysearch.gedcom+zip":{source:"iana",compressible:!1},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"iana",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.ffsns":{source:"iana"},"application/vnd.ficlab.flb+zip":{source:"iana",compressible:!1},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{source:"iana",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"iana",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujifilm.fb.docuworks":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.container":{source:"iana"},"application/vnd.fujifilm.fb.jfi+xml":{source:"iana",compressible:!0},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.futoin+cbor":{source:"iana"},"application/vnd.futoin+json":{source:"iana",compressible:!0},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.gentics.grd+json":{source:"iana",compressible:!0},"application/vnd.geo+json":{source:"iana",compressible:!0},"application/vnd.geocube+xml":{source:"iana",compressible:!0},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.slides":{source:"iana"},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"iana",compressible:!0},"application/vnd.gov.sk.e-form+zip":{source:"iana",compressible:!1},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana",compressible:!0},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",compressible:!0,extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",compressible:!0,extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hc+json":{source:"iana",compressible:!0},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.hdt":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hl7cda+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hl7v2+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyper+json":{source:"iana",compressible:!0},"application/vnd.hyper-item+json":{source:"iana",compressible:!0},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"iana"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"iana",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.imagemeter.folder+zip":{source:"iana",compressible:!1},"application/vnd.imagemeter.image+zip":{source:"iana",compressible:!1},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana",compressible:!0},"application/vnd.informix-visionary":{source:"iana"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana",compressible:!0},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.packageitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.planningitem+xml":{source:"iana",compressible:!0},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",compressible:!0,extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.iso11783-10+zip":{source:"iana",compressible:!1},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las":{source:"iana"},"application/vnd.las.las+json":{source:"iana",compressible:!0},"application/vnd.las.las+xml":{source:"iana",compressible:!0,extensions:["lasxml"]},"application/vnd.laszip":{source:"iana"},"application/vnd.leap+json":{source:"iana",compressible:!0},"application/vnd.liberty-request+xml":{source:"iana",compressible:!0},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",compressible:!0,extensions:["lbe"]},"application/vnd.logipipe.circuit+zip":{source:"iana",compressible:!1},"application/vnd.loom":{source:"iana"},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana",extensions:["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.conftoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.license+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxar.archive.3tz+zip":{source:"iana",compressible:!1},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana",compressible:!0},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-outlook":{compressible:!1,extensions:["msg"]},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana",compressible:!0},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana",compressible:!0},"application/vnd.ms-printing.printticket+xml":{source:"apache",compressible:!0},"application/vnd.ms-printschematicket+xml":{source:"iana",compressible:!0},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.nacamar.ybrid+json":{source:"iana",compressible:!0},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nearst.inv+json":{source:"iana",compressible:!0},"application/vnd.nebumind.line":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nimn":{source:"iana"},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana",compressible:!0},"application/vnd.nokia.iptv.config+xml":{source:"iana",compressible:!0},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana",compressible:!0},"application/vnd.nokia.landmarkcollection+xml":{source:"iana",compressible:!0},"application/vnd.nokia.n-gage.ac+xml":{source:"iana",compressible:!0,extensions:["ac"]},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"iana",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana",compressible:!0},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"iana",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.ocf+cbor":{source:"iana"},"application/vnd.oci.image.manifest.v1+json":{source:"iana",compressible:!0},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana",compressible:!0},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana",compressible:!0},"application/vnd.oipf.dae.xhtml+xml":{source:"iana",compressible:!0},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana",compressible:!0},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.oipf.spdlist+xml":{source:"iana",compressible:!0},"application/vnd.oipf.ueprofile+xml":{source:"iana",compressible:!0},"application/vnd.oipf.userprofile+xml":{source:"iana",compressible:!0},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.drm-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.imd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sprov+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-feature-handler+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-pcc+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-subs-invite+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-user-prefs+xml":{source:"iana",compressible:!0},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",compressible:!0,extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana",compressible:!0},"application/vnd.oma.group-usage-list+xml":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+cbor":{source:"iana"},"application/vnd.oma.lwm2m+json":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+tlv":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.final-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.groups+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana",compressible:!0},"application/vnd.oma.xcap-directory+xml":{source:"iana",compressible:!0},"application/vnd.omads-email+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-file+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-folder+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.onepager":{source:"iana"},"application/vnd.onepagertamp":{source:"iana"},"application/vnd.onepagertamx":{source:"iana"},"application/vnd.onepagertat":{source:"iana"},"application/vnd.onepagertatp":{source:"iana"},"application/vnd.onepagertatx":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana",compressible:!0,extensions:["obgx"]},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openstreetmap.data+xml":{source:"iana",compressible:!0,extensions:["osm"]},"application/vnd.opentimestamps.ots":{source:"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"iana",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"iana",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"iana",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana",compressible:!0},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana",compressible:!0},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos.xml":{source:"iana"},"application/vnd.patentdive":{source:"iana"},"application/vnd.patientecommsdoc":{source:"iana"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana",compressible:!0},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.psfs":{source:"iana"},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana",compressible:!0},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quarantainenet":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana",compressible:!0},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.rar":{source:"iana",extensions:["rar"]},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",compressible:!0,extensions:["musicxml"]},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.resilient.logic":{source:"iana"},"application/vnd.restful+json":{source:"iana",compressible:!0},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",compressible:!0,extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sar":{source:"iana"},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.seis+json":{source:"iana",compressible:!0},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shade-save-file":{source:"iana"},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.shootproof+json":{source:"iana",compressible:!0},"application/vnd.shopkick+json":{source:"iana",compressible:!0},"application/vnd.shp":{source:"iana"},"application/vnd.shx":{source:"iana"},"application/vnd.sigrok.session":{source:"iana"},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.snesdev-page-table":{source:"iana"},"application/vnd.software602.filler.form+xml":{source:"iana",compressible:!0,extensions:["fo"]},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",compressible:!0,extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sqlite3":{source:"iana"},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana",compressible:!0,extensions:["wadl"]},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.sycle+xml":{source:"iana",compressible:!0},"application/vnd.syft+json":{source:"iana",compressible:!0},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",charset:"UTF-8",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tableschema+json":{source:"iana",compressible:!0},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{source:"iana",compressible:!0},"application/vnd.tmd.mediaflex.api+xml":{source:"iana",compressible:!0},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.tri.onesource":{source:"iana"},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",compressible:!0,extensions:["uoml"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.vel+json":{source:"iana",compressible:!0},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.veritone.aion+json":{source:"iana",compressible:!0},"application/vnd.veryant.thin":{source:"iana"},"application/vnd.ves.encrypted":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",charset:"UTF-8",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.dpp":{source:"iana"},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana",compressible:!0},"application/vnd.wv.ssp+xml":{source:"iana",compressible:!0},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana",compressible:!0},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",compressible:!0,extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.youtube.yt":{source:"iana"},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",compressible:!0,extensions:["zaz"]},"application/voicexml+xml":{source:"iana",compressible:!0,extensions:["vxml"]},"application/voucher-cms+json":{source:"iana",compressible:!0},"application/vq-rtcpxr":{source:"iana"},"application/wasm":{source:"iana",compressible:!0,extensions:["wasm"]},"application/watcherinfo+xml":{source:"iana",compressible:!0,extensions:["wif"]},"application/webpush-options+json":{source:"iana",compressible:!0},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",compressible:!0,extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",compressible:!0,extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-arj":{compressible:!1,extensions:["arj"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",compressible:!0,extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",compressible:!0,extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",compressible:!0,extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-iwork-keynote-sffkey":{extensions:["key"]},"application/x-iwork-numbers-sffnumbers":{extensions:["numbers"]},"application/x-iwork-pages-sffpages":{extensions:["pages"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-keepass2":{extensions:["kdbx"]},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-pki-message":{source:"iana"},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-virtualbox-hdd":{compressible:!0,extensions:["hdd"]},"application/x-virtualbox-ova":{compressible:!0,extensions:["ova"]},"application/x-virtualbox-ovf":{compressible:!0,extensions:["ovf"]},"application/x-virtualbox-vbox":{compressible:!0,extensions:["vbox"]},"application/x-virtualbox-vbox-extpack":{compressible:!1,extensions:["vbox-extpack"]},"application/x-virtualbox-vdi":{compressible:!0,extensions:["vdi"]},"application/x-virtualbox-vhd":{compressible:!0,extensions:["vhd"]},"application/x-virtualbox-vmdk":{compressible:!0,extensions:["vmdk"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"iana",extensions:["der","crt","pem"]},"application/x-x509-ca-ra-cert":{source:"iana"},"application/x-x509-next-ca-cert":{source:"iana"},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",compressible:!0,extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana",compressible:!0},"application/xaml+xml":{source:"apache",compressible:!0,extensions:["xaml"]},"application/xcap-att+xml":{source:"iana",compressible:!0,extensions:["xav"]},"application/xcap-caps+xml":{source:"iana",compressible:!0,extensions:["xca"]},"application/xcap-diff+xml":{source:"iana",compressible:!0,extensions:["xdf"]},"application/xcap-el+xml":{source:"iana",compressible:!0,extensions:["xel"]},"application/xcap-error+xml":{source:"iana",compressible:!0},"application/xcap-ns+xml":{source:"iana",compressible:!0,extensions:["xns"]},"application/xcon-conference-info+xml":{source:"iana",compressible:!0},"application/xcon-conference-info-diff+xml":{source:"iana",compressible:!0},"application/xenc+xml":{source:"iana",compressible:!0,extensions:["xenc"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache",compressible:!0},"application/xliff+xml":{source:"iana",compressible:!0,extensions:["xlf"]},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd","rng"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana",compressible:!0},"application/xmpp+xml":{source:"iana",compressible:!0},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",compressible:!0,extensions:["xpl"]},"application/xslt+xml":{source:"iana",compressible:!0,extensions:["xsl","xslt"]},"application/xspf+xml":{source:"apache",compressible:!0,extensions:["xspf"]},"application/xv+xml":{source:"iana",compressible:!0,extensions:["mxml","xhvml","xvml","xvm"]},"application/yang":{source:"iana",extensions:["yang"]},"application/yang-data+json":{source:"iana",compressible:!0},"application/yang-data+xml":{source:"iana",compressible:!0},"application/yang-patch+json":{source:"iana",compressible:!0},"application/yang-patch+xml":{source:"iana",compressible:!0},"application/yin+xml":{source:"iana",compressible:!0,extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zlib":{source:"iana"},"application/zstd":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana",compressible:!1,extensions:["3gpp"]},"audio/3gpp2":{source:"iana"},"audio/aac":{source:"iana"},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana",extensions:["amr"]},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/flexfec":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/melp":{source:"iana"},"audio/melp1200":{source:"iana"},"audio/melp2400":{source:"iana"},"audio/melp600":{source:"iana"},"audio/mhas":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/mobile-xmf":{source:"iana",extensions:["mxmf"]},"audio/mp3":{compressible:!1,extensions:["mp3"]},"audio/mp4":{source:"iana",compressible:!1,extensions:["m4a","mp4a"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx","opus"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/scip":{source:"iana"},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sofa":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tetra_acelp":{source:"iana"},"audio/tetra_acelp_bb":{source:"iana"},"audio/tone":{source:"iana"},"audio/tsvcis":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/usac":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dts.uhd":{source:"iana"},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.presonus.multitrack":{source:"iana"},"audio/vnd.qcelp":{source:"iana"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/collection":{source:"iana",extensions:["ttc"]},"font/otf":{source:"iana",compressible:!0,extensions:["otf"]},"font/sfnt":{source:"iana"},"font/ttf":{source:"iana",compressible:!0,extensions:["ttf"]},"font/woff":{source:"iana",extensions:["woff"]},"font/woff2":{source:"iana",extensions:["woff2"]},"image/aces":{source:"iana",extensions:["exr"]},"image/apng":{compressible:!1,extensions:["apng"]},"image/avci":{source:"iana",extensions:["avci"]},"image/avcs":{source:"iana",extensions:["avcs"]},"image/avif":{source:"iana",compressible:!1,extensions:["avif"]},"image/bmp":{source:"iana",compressible:!0,extensions:["bmp"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/dicom-rle":{source:"iana",extensions:["drle"]},"image/emf":{source:"iana",extensions:["emf"]},"image/fits":{source:"iana",extensions:["fits"]},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/heic":{source:"iana",extensions:["heic"]},"image/heic-sequence":{source:"iana",extensions:["heics"]},"image/heif":{source:"iana",extensions:["heif"]},"image/heif-sequence":{source:"iana",extensions:["heifs"]},"image/hej2k":{source:"iana",extensions:["hej2"]},"image/hsj2":{source:"iana",extensions:["hsj2"]},"image/ief":{source:"iana",extensions:["ief"]},"image/jls":{source:"iana",extensions:["jls"]},"image/jp2":{source:"iana",compressible:!1,extensions:["jp2","jpg2"]},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpeg","jpg","jpe"]},"image/jph":{source:"iana",extensions:["jph"]},"image/jphc":{source:"iana",extensions:["jhc"]},"image/jpm":{source:"iana",compressible:!1,extensions:["jpm"]},"image/jpx":{source:"iana",compressible:!1,extensions:["jpx","jpf"]},"image/jxr":{source:"iana",extensions:["jxr"]},"image/jxra":{source:"iana",extensions:["jxra"]},"image/jxrs":{source:"iana",extensions:["jxrs"]},"image/jxs":{source:"iana",extensions:["jxs"]},"image/jxsc":{source:"iana",extensions:["jxsc"]},"image/jxsi":{source:"iana",extensions:["jxsi"]},"image/jxss":{source:"iana",extensions:["jxss"]},"image/ktx":{source:"iana",extensions:["ktx"]},"image/ktx2":{source:"iana",extensions:["ktx2"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif"]},"image/prs.pti":{source:"iana",extensions:["pti"]},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana",extensions:["t38"]},"image/tiff":{source:"iana",compressible:!1,extensions:["tif","tiff"]},"image/tiff-fx":{source:"iana",extensions:["tfx"]},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana",extensions:["azv"]},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana",compressible:!0,extensions:["ico"]},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-dds":{compressible:!0,extensions:["dds"]},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.pco.b16":{source:"iana",extensions:["b16"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana",extensions:["tap"]},"image/vnd.valve.source.texture":{source:"iana",extensions:["vtf"]},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana",extensions:["pcx"]},"image/webp":{source:"apache",extensions:["webp"]},"image/wmf":{source:"iana",extensions:["wmf"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana",extensions:["disposition-notification"]},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana",extensions:["u8msg"]},"message/global-delivery-status":{source:"iana",extensions:["u8dsn"]},"message/global-disposition-notification":{source:"iana",extensions:["u8mdn"]},"message/global-headers":{source:"iana",extensions:["u8hdr"]},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/news":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime"]},"message/s-http":{source:"iana"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"iana"},"message/vnd.wfa.wsc":{source:"iana",extensions:["wsc"]},"model/3mf":{source:"iana",extensions:["3mf"]},"model/e57":{source:"iana"},"model/gltf+json":{source:"iana",compressible:!0,extensions:["gltf"]},"model/gltf-binary":{source:"iana",compressible:!0,extensions:["glb"]},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/mtl":{source:"iana",extensions:["mtl"]},"model/obj":{source:"iana",extensions:["obj"]},"model/step":{source:"iana"},"model/step+xml":{source:"iana",compressible:!0,extensions:["stpx"]},"model/step+zip":{source:"iana",compressible:!1,extensions:["stpz"]},"model/step-xml+zip":{source:"iana",compressible:!1,extensions:["stpxz"]},"model/stl":{source:"iana",extensions:["stl"]},"model/vnd.collada+xml":{source:"iana",compressible:!0,extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana",compressible:!0},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana",extensions:["ogex"]},"model/vnd.parasolid.transmit.binary":{source:"iana",extensions:["x_b"]},"model/vnd.parasolid.transmit.text":{source:"iana",extensions:["x_t"]},"model/vnd.pytha.pyox":{source:"iana"},"model/vnd.rosette.annotated-data-model":{source:"iana"},"model/vnd.sap.vds":{source:"iana",extensions:["vds"]},"model/vnd.usdz+zip":{source:"iana",compressible:!1,extensions:["usdz"]},"model/vnd.valve.source.compiled-map":{source:"iana",extensions:["bsp"]},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana",extensions:["x3db"]},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana",extensions:["x3dv"]},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana"},"multipart/multilingual":{source:"iana"},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/vnd.bint.med-plus":{source:"iana"},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/cql":{source:"iana"},"text/cql-expression":{source:"iana"},"text/cql-identifier":{source:"iana"},"text/css":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"iana"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fhirpath":{source:"iana"},"text/flexfec":{source:"iana"},"text/fwdred":{source:"iana"},"text/gff3":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",compressible:!0},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{compressible:!0,extensions:["less"]},"text/markdown":{source:"iana",compressible:!0,extensions:["markdown","md"]},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mdx":{compressible:!0,extensions:["mdx"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana",charset:"UTF-8"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana",charset:"UTF-8"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/prs.prop.logic":{source:"iana"},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/shaclc":{source:"iana"},"text/shex":{source:"iana",extensions:["shex"]},"text/slim":{extensions:["slim","slm"]},"text/spdx":{source:"iana",extensions:["spdx"]},"text/strings":{source:"iana"},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",charset:"UTF-8",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.ascii-art":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana",charset:"UTF-8"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana",charset:"UTF-8"},"text/vnd.familysearch.gedcom":{source:"iana",extensions:["ged"]},"text/vnd.ficlab.flt":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.gml":{source:"iana"},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.hans":{source:"iana"},"text/vnd.hgl":{source:"iana"},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.senx.warpscript":{source:"iana"},"text/vnd.si.uricatalogue":{source:"iana"},"text/vnd.sosi":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",charset:"UTF-8",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana",charset:"UTF-8"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vtt":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-org":{compressible:!0,extensions:["org"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{compressible:!0,extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"iana"},"video/3gpp":{source:"iana",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"iana"},"video/3gpp2":{source:"iana",extensions:["3g2"]},"video/av1":{source:"iana"},"video/bmpeg":{source:"iana"},"video/bt656":{source:"iana"},"video/celb":{source:"iana"},"video/dv":{source:"iana"},"video/encaprtp":{source:"iana"},"video/ffv1":{source:"iana"},"video/flexfec":{source:"iana"},"video/h261":{source:"iana",extensions:["h261"]},"video/h263":{source:"iana",extensions:["h263"]},"video/h263-1998":{source:"iana"},"video/h263-2000":{source:"iana"},"video/h264":{source:"iana",extensions:["h264"]},"video/h264-rcdo":{source:"iana"},"video/h264-svc":{source:"iana"},"video/h265":{source:"iana"},"video/iso.segment":{source:"iana",extensions:["m4s"]},"video/jpeg":{source:"iana",extensions:["jpgv"]},"video/jpeg2000":{source:"iana"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/jxsv":{source:"iana"},"video/mj2":{source:"iana",extensions:["mj2","mjp2"]},"video/mp1s":{source:"iana"},"video/mp2p":{source:"iana"},"video/mp2t":{source:"iana",extensions:["ts"]},"video/mp4":{source:"iana",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"iana"},"video/mpeg":{source:"iana",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"iana"},"video/mpv":{source:"iana"},"video/nv":{source:"iana"},"video/ogg":{source:"iana",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"iana"},"video/pointer":{source:"iana"},"video/quicktime":{source:"iana",compressible:!1,extensions:["qt","mov"]},"video/raptorfec":{source:"iana"},"video/raw":{source:"iana"},"video/rtp-enc-aescm128":{source:"iana"},"video/rtploopback":{source:"iana"},"video/rtx":{source:"iana"},"video/scip":{source:"iana"},"video/smpte291":{source:"iana"},"video/smpte292m":{source:"iana"},"video/ulpfec":{source:"iana"},"video/vc1":{source:"iana"},"video/vc2":{source:"iana"},"video/vnd.cctv":{source:"iana"},"video/vnd.dece.hd":{source:"iana",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"iana",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"iana"},"video/vnd.dece.pd":{source:"iana",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"iana",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"iana",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"iana"},"video/vnd.directv.mpeg-tts":{source:"iana"},"video/vnd.dlna.mpeg-tts":{source:"iana"},"video/vnd.dvb.file":{source:"iana",extensions:["dvb"]},"video/vnd.fvt":{source:"iana",extensions:["fvt"]},"video/vnd.hns.video":{source:"iana"},"video/vnd.iptvforum.1dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.1dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.2dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.2dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.ttsavc":{source:"iana"},"video/vnd.iptvforum.ttsmpeg2":{source:"iana"},"video/vnd.motorola.video":{source:"iana"},"video/vnd.motorola.videop":{source:"iana"},"video/vnd.mpegurl":{source:"iana",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"iana",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"iana"},"video/vnd.nokia.mp4vr":{source:"iana"},"video/vnd.nokia.videovoip":{source:"iana"},"video/vnd.objectvideo":{source:"iana"},"video/vnd.radgamettools.bink":{source:"iana"},"video/vnd.radgamettools.smacker":{source:"iana"},"video/vnd.sealed.mpeg1":{source:"iana"},"video/vnd.sealed.mpeg4":{source:"iana"},"video/vnd.sealed.swf":{source:"iana"},"video/vnd.sealedmedia.softseal.mov":{source:"iana"},"video/vnd.uvvu.mp4":{source:"iana",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"iana",extensions:["viv"]},"video/vnd.youtube.yt":{source:"iana"},"video/vp8":{source:"iana"},"video/vp9":{source:"iana"},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}}});var FA=O((bV,kA)=>{kA.exports=TA()});var RA=O((gV,OA)=>{"use strict";var PA=FA();OA.exports=function(){var e={};return Object.keys(PA).forEach(function(t){var a=PA[t];a.extensions&&a.extensions.length>0&&a.extensions.forEach(function(n){e[n]=t})}),e}});var jA=O((xV,NA)=>{"use strict";var BA=Pd();NA.exports=function(e,t){if(!BA(e))throw new TypeError("Expected a plain object");t=t||{},typeof t=="function"&&(t={compare:t});var a=t.deep,n=[],i=[],r=function(o){var s=n.indexOf(o);if(s!==-1)return i[s];var l={},u=Object.keys(o).sort(t.compare);n.push(o),i.push(l);for(var c=0;c<u.length;c++){var f=u[c],p=o[f];l[f]=a&&BA(p)?r(p):p}return l};return r(e)}});var MA=O((yV,wf)=>{"use strict";var LA=jA();wf.exports.desc=function(e){return LA(e,function(t,a){return a.length-t.length})};wf.exports.asc=function(e){return LA(e,function(t,a){return t.length-a.length})}});var GA=O((wV,Ef)=>{"use strict";var DA=RA(),zA=MA();Ef.exports=e=>{let t=zA.desc(DA()),a=Object.keys(t).filter(n=>e.endsWith(n));return a.length===0?[]:a.map(n=>({ext:n,mime:t[n]}))};Ef.exports.mime=e=>{let t=zA.desc(DA()),a=Object.keys(t).filter(n=>t[n]===e);return a.length===0?[]:a.map(n=>({ext:n,mime:t[n]}))}});var UA=O((EV,VA)=>{"use strict";var Jj=require("fs"),Br=require("path"),{URL:Zj}=require("url"),qj=oy(),HA=uy(),WA=HE(),Xj=QE(),$j=rS(),Yj=qC(),Kj=yA(),Qj=af(),e9=CA(),t9=_A(),a9=GA(),n9=Qj(Jj),i9=e=>Br.basename(new Zj(e.requestUrl).pathname),r9=e=>{let t=e.headers["content-type"];if(!t)return null;let a=a9.mime(t);return a.length!==1?null:a[0].ext},o9=(e,t)=>{let a=e.headers["content-disposition"];if(a){let i=qj.parse(a);if(i.parameters&&i.parameters.filename)return i.parameters.filename}let n=i9(e);if(!Br.extname(n)){let i=(t9(t)||{}).ext||r9(e);i&&(n=`${n}.${i}`)}return n};VA.exports=(e,t,a)=>{typeof t=="object"&&(a=t,t=null),a=Object.assign({encoding:null,rejectUnauthorized:process.env.npm_config_strict_ssl!=="false"},a);let n=Yj.stream(e,a),i=e9(n,"response").then(r=>{let o=a.encoding===null?"buffer":a.encoding;return Promise.all([$j(n,{encoding:o}),r])}).then(r=>{let[o,s]=r;if(!t)return a.extract&&HA(o)?WA(o,a):o;let l=a.filename||Xj(o9(s,o)),u=Br.join(t,l);return a.extract&&HA(o)?WA(o,Br.dirname(u),a):Kj(Br.dirname(u)).then(()=>n9.writeFile(u,o)).then(()=>o)});return n.then=i.then.bind(i),n.catch=i.catch.bind(i),n}});var r2=O((OV,i2)=>{var KA=Mc(),{join:u9,delimiter:p9,sep:XA,posix:$A}=require("path"),YA=process.platform==="win32",QA=new RegExp(`[${$A.sep}${XA===$A.sep?"":XA}]`.replace(/(\\)/g,"\\$1")),d9=new RegExp(`^\\.${QA.source}`),e2=e=>Object.assign(new Error(`not found: ${e}`),{code:"ENOENT"}),t2=(e,{path:t=process.env.PATH,pathExt:a=process.env.PATHEXT,delimiter:n=p9})=>{let i=e.match(QA)?[""]:[...YA?[process.cwd()]:[],...(t||"").split(n)];if(YA){let r=a||[".EXE",".CMD",".BAT",".COM"].join(n),o=r.split(n).reduce((s,l)=>(s.push(l),s.push(l.toLowerCase()),s),[]);return e.includes(".")&&o[0]!==""&&o.unshift(""),{pathEnv:i,pathExt:o,pathExtExe:r}}return{pathEnv:i,pathExt:[""]}},a2=(e,t)=>{let a=/^".*"$/.test(e)?e.slice(1,-1):e;return(!a&&d9.test(t)?t.slice(0,2):"")+u9(a,t)},n2=async(e,t={})=>{let{pathEnv:a,pathExt:n,pathExtExe:i}=t2(e,t),r=[];for(let o of a){let s=a2(o,e);for(let l of n){let u=s+l;if(await KA(u,{pathExt:i,ignoreErrors:!0})){if(!t.all)return u;r.push(u)}}}if(t.all&&r.length)return r;if(t.nothrow)return null;throw e2(e)},f9=(e,t={})=>{let{pathEnv:a,pathExt:n,pathExtExe:i}=t2(e,t),r=[];for(let o of a){let s=a2(o,e);for(let l of n){let u=s+l;if(KA.sync(u,{pathExt:i,ignoreErrors:!0})){if(!t.all)return u;r.push(u)}}}if(t.all&&r.length)return r;if(t.nothrow)return null;throw e2(e)};i2.exports=n2;n2.sync=f9});var P2=O(ke=>{"use strict";var it=typeof Symbol=="function"&&Symbol.for,zf=it?Symbol.for("react.element"):60103,Gf=it?Symbol.for("react.portal"):60106,ac=it?Symbol.for("react.fragment"):60107,nc=it?Symbol.for("react.strict_mode"):60108,ic=it?Symbol.for("react.profiler"):60114,rc=it?Symbol.for("react.provider"):60109,oc=it?Symbol.for("react.context"):60110,Hf=it?Symbol.for("react.async_mode"):60111,sc=it?Symbol.for("react.concurrent_mode"):60111,lc=it?Symbol.for("react.forward_ref"):60112,cc=it?Symbol.for("react.suspense"):60113,C9=it?Symbol.for("react.suspense_list"):60120,uc=it?Symbol.for("react.memo"):60115,pc=it?Symbol.for("react.lazy"):60116,A9=it?Symbol.for("react.block"):60121,I9=it?Symbol.for("react.fundamental"):60117,_9=it?Symbol.for("react.responder"):60118,T9=it?Symbol.for("react.scope"):60119;function Rt(e){if(typeof e=="object"&&e!==null){var t=e.$$typeof;switch(t){case zf:switch(e=e.type,e){case Hf:case sc:case ac:case ic:case nc:case cc:return e;default:switch(e=e&&e.$$typeof,e){case oc:case lc:case pc:case uc:case rc:return e;default:return t}}case Gf:return t}}}function F2(e){return Rt(e)===sc}ke.AsyncMode=Hf;ke.ConcurrentMode=sc;ke.ContextConsumer=oc;ke.ContextProvider=rc;ke.Element=zf;ke.ForwardRef=lc;ke.Fragment=ac;ke.Lazy=pc;ke.Memo=uc;ke.Portal=Gf;ke.Profiler=ic;ke.StrictMode=nc;ke.Suspense=cc;ke.isAsyncMode=function(e){return F2(e)||Rt(e)===Hf};ke.isConcurrentMode=F2;ke.isContextConsumer=function(e){return Rt(e)===oc};ke.isContextProvider=function(e){return Rt(e)===rc};ke.isElement=function(e){return typeof e=="object"&&e!==null&&e.$$typeof===zf};ke.isForwardRef=function(e){return Rt(e)===lc};ke.isFragment=function(e){return Rt(e)===ac};ke.isLazy=function(e){return Rt(e)===pc};ke.isMemo=function(e){return Rt(e)===uc};ke.isPortal=function(e){return Rt(e)===Gf};ke.isProfiler=function(e){return Rt(e)===ic};ke.isStrictMode=function(e){return Rt(e)===nc};ke.isSuspense=function(e){return Rt(e)===cc};ke.isValidElementType=function(e){return typeof e=="string"||typeof e=="function"||e===ac||e===sc||e===ic||e===nc||e===cc||e===C9||typeof e=="object"&&e!==null&&(e.$$typeof===pc||e.$$typeof===uc||e.$$typeof===rc||e.$$typeof===oc||e.$$typeof===lc||e.$$typeof===I9||e.$$typeof===_9||e.$$typeof===T9||e.$$typeof===A9)};ke.typeOf=Rt});var R2=O((kU,O2)=>{"use strict";O2.exports=P2()});var z2=O((FU,D2)=>{"use strict";var Wf=R2(),k9={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},F9={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},P9={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},L2={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},Vf={};Vf[Wf.ForwardRef]=P9;Vf[Wf.Memo]=L2;function B2(e){return Wf.isMemo(e)?L2:Vf[e.$$typeof]||k9}var O9=Object.defineProperty,R9=Object.getOwnPropertyNames,N2=Object.getOwnPropertySymbols,B9=Object.getOwnPropertyDescriptor,N9=Object.getPrototypeOf,j2=Object.prototype;function M2(e,t,a){if(typeof t!="string"){if(j2){var n=N9(t);n&&n!==j2&&M2(e,n,a)}var i=R9(t);N2&&(i=i.concat(N2(t)));for(var r=B2(e),o=B2(t),s=0;s<i.length;++s){var l=i[s];if(!F9[l]&&!(a&&a[l])&&!(o&&o[l])&&!(r&&r[l])){var u=B9(t,l);try{O9(e,l,u)}catch(c){}}}}return e}D2.exports=M2});var fD={};sT(fD,{default:()=>Bc});module.exports=lT(fD);var En=require("obsidian");var fo=_e(require("node:process"),1),uv=_e(sv(),1);function ou({onlyFirst:e=!1}={}){let t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(t,e?void 0:"g")}var ak=ou();function su(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(ak,"")}var po=_e(require("node:process"),1),lv=require("node:os"),nk=()=>{let{env:e}=po.default;if(po.default.platform==="win32")return e.COMSPEC||"cmd.exe";try{let{shell:t}=(0,lv.userInfo)();if(t)return t}catch(t){}return po.default.platform==="darwin"?e.SHELL||"/bin/zsh":e.SHELL||"/bin/sh"},ik=nk(),cv=ik;var rk=["-ilc",'echo -n "_SHELL_ENV_DELIMITER_"; env; echo -n "_SHELL_ENV_DELIMITER_"; exit'],ok={DISABLE_AUTO_UPDATE:"true"},sk=e=>{e=e.split("_SHELL_ENV_DELIMITER_")[1];let t={};for(let a of su(e).split(` +`).filter(n=>!!n)){let[n,...i]=a.split("=");t[n]=i.join("=")}return t};async function pv(e){if(fo.default.platform==="win32")return fo.default.env;try{let{stdout:t}=await(0,uv.default)(e||cv,rk,{env:ok});return sk(t)}catch(t){if(e)throw t;return fo.default.env}}async function dv(){let{PATH:e}=await pv();return e}var Ba=require("obsidian");var Ni,Q,bv,lk,$a,fv,gv,lu,xv,mo={},yv=[],ck=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,bo=Array.isArray;function ma(e,t){for(var a in t)e[a]=t[a];return e}function wv(e){var t=e.parentNode;t&&t.removeChild(e)}function se(e,t,a){var n,i,r,o={};for(r in t)r=="key"?n=t[r]:r=="ref"?i=t[r]:o[r]=t[r];if(arguments.length>2&&(o.children=arguments.length>3?Ni.call(arguments,2):a),typeof e=="function"&&e.defaultProps!=null)for(r in e.defaultProps)o[r]===void 0&&(o[r]=e.defaultProps[r]);return Ri(e,o,n,i,null)}function Ri(e,t,a,n,i){var r={type:e,props:t,key:a,ref:n,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:i==null?++bv:i};return i==null&&Q.vnode!=null&&Q.vnode(r),r}function uu(){return{current:null}}function rt(e){return e.children}function Ct(e,t){this.props=e,this.context=t}function Bi(e,t){if(t==null)return e.__?Bi(e.__,e.__.__k.indexOf(e)+1):null;for(var a;t<e.__k.length;t++)if((a=e.__k[t])!=null&&a.__e!=null)return a.__e;return typeof e.type=="function"?Bi(e):null}function Ev(e){var t,a;if((e=e.__)!=null&&e.__c!=null){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if((a=e.__k[t])!=null&&a.__e!=null){e.__e=e.__c.base=a.__e;break}return Ev(e)}}function cu(e){(!e.__d&&(e.__d=!0)&&$a.push(e)&&!ho.__r++||fv!==Q.debounceRendering)&&((fv=Q.debounceRendering)||gv)(ho)}function ho(){var e,t,a,n,i,r,o,s;for($a.sort(lu);e=$a.shift();)e.__d&&(t=$a.length,n=void 0,i=void 0,o=(r=(a=e).__v).__e,(s=a.__P)&&(n=[],(i=ma({},r)).__v=r.__v+1,pu(s,r,i,a.__n,s.ownerSVGElement!==void 0,r.__h!=null?[o]:null,n,o==null?Bi(r):o,r.__h),_v(n,r),r.__e!=o&&Ev(r)),$a.length>t&&$a.sort(lu));ho.__r=0}function Sv(e,t,a,n,i,r,o,s,l,u){var c,f,p,b,d,m,h,v=n&&n.__k||yv,x=v.length;for(a.__k=[],c=0;c<t.length;c++)if((b=a.__k[c]=(b=t[c])==null||typeof b=="boolean"||typeof b=="function"?null:typeof b=="string"||typeof b=="number"||typeof b=="bigint"?Ri(null,b,null,null,b):bo(b)?Ri(rt,{children:b},null,null,null):b.__b>0?Ri(b.type,b.props,b.key,b.ref?b.ref:null,b.__v):b)!=null){if(b.__=a,b.__b=a.__b+1,(p=v[c])===null||p&&b.key==p.key&&b.type===p.type)v[c]=void 0;else for(f=0;f<x;f++){if((p=v[f])&&b.key==p.key&&b.type===p.type){v[f]=void 0;break}p=null}pu(e,b,p=p||mo,i,r,o,s,l,u),d=b.__e,(f=b.ref)&&p.ref!=f&&(h||(h=[]),p.ref&&h.push(p.ref,null,b),h.push(f,b.__c||d,b)),d!=null?(m==null&&(m=d),typeof b.type=="function"&&b.__k===p.__k?b.__d=l=Cv(b,l,e):l=Av(e,b,p,v,d,l),typeof a.type=="function"&&(a.__d=l)):l&&p.__e==l&&l.parentNode!=e&&(l=Bi(p))}for(a.__e=m,c=x;c--;)v[c]!=null&&(typeof a.type=="function"&&v[c].__e!=null&&v[c].__e==a.__d&&(a.__d=Iv(n).nextSibling),kv(v[c],v[c]));if(h)for(c=0;c<h.length;c++)Tv(h[c],h[++c],h[++c])}function Cv(e,t,a){for(var n,i=e.__k,r=0;i&&r<i.length;r++)(n=i[r])&&(n.__=e,t=typeof n.type=="function"?Cv(n,t,a):Av(a,n,n,i,n.__e,t));return t}function $t(e,t){return t=t||[],e==null||typeof e=="boolean"||(bo(e)?e.some(function(a){$t(a,t)}):t.push(e)),t}function Av(e,t,a,n,i,r){var o,s,l;if(t.__d!==void 0)o=t.__d,t.__d=void 0;else if(a==null||i!=r||i.parentNode==null)e:if(r==null||r.parentNode!==e)e.appendChild(i),o=null;else{for(s=r,l=0;(s=s.nextSibling)&&l<n.length;l+=1)if(s==i)break e;e.insertBefore(i,r),o=r}return o!==void 0?o:i.nextSibling}function Iv(e){var t,a,n;if(e.type==null||typeof e.type=="string")return e.__e;if(e.__k){for(t=e.__k.length-1;t>=0;t--)if((a=e.__k[t])&&(n=Iv(a)))return n}return null}function uk(e,t,a,n,i){var r;for(r in a)r==="children"||r==="key"||r in t||vo(e,r,null,a[r],n);for(r in t)i&&typeof t[r]!="function"||r==="children"||r==="key"||r==="value"||r==="checked"||a[r]===t[r]||vo(e,r,t[r],a[r],n)}function mv(e,t,a){t[0]==="-"?e.setProperty(t,a==null?"":a):e[t]=a==null?"":typeof a!="number"||ck.test(t)?a:a+"px"}function vo(e,t,a,n,i){var r;e:if(t==="style")if(typeof a=="string")e.style.cssText=a;else{if(typeof n=="string"&&(e.style.cssText=n=""),n)for(t in n)a&&t in a||mv(e.style,t,"");if(a)for(t in a)n&&a[t]===n[t]||mv(e.style,t,a[t])}else if(t[0]==="o"&&t[1]==="n")r=t!==(t=t.replace(/Capture$/,"")),t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+r]=a,a?n||e.addEventListener(t,r?vv:hv,r):e.removeEventListener(t,r?vv:hv,r);else if(t!=="dangerouslySetInnerHTML"){if(i)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!=="width"&&t!=="height"&&t!=="href"&&t!=="list"&&t!=="form"&&t!=="tabIndex"&&t!=="download"&&t!=="rowSpan"&&t!=="colSpan"&&t in e)try{e[t]=a==null?"":a;break e}catch(o){}typeof a=="function"||(a==null||a===!1&&t[4]!=="-"?e.removeAttribute(t):e.setAttribute(t,a))}}function hv(e){return this.l[e.type+!1](Q.event?Q.event(e):e)}function vv(e){return this.l[e.type+!0](Q.event?Q.event(e):e)}function pu(e,t,a,n,i,r,o,s,l){var u,c,f,p,b,d,m,h,v,x,E,g,w,C,y,S=t.type;if(t.constructor!==void 0)return null;a.__h!=null&&(l=a.__h,s=t.__e=a.__e,t.__h=null,r=[s]),(u=Q.__b)&&u(t);try{e:if(typeof S=="function"){if(h=t.props,v=(u=S.contextType)&&n[u.__c],x=u?v?v.props.value:u.__:n,a.__c?m=(c=t.__c=a.__c).__=c.__E:("prototype"in S&&S.prototype.render?t.__c=c=new S(h,x):(t.__c=c=new Ct(h,x),c.constructor=S,c.render=dk),v&&v.sub(c),c.props=h,c.state||(c.state={}),c.context=x,c.__n=n,f=c.__d=!0,c.__h=[],c._sb=[]),c.__s==null&&(c.__s=c.state),S.getDerivedStateFromProps!=null&&(c.__s==c.state&&(c.__s=ma({},c.__s)),ma(c.__s,S.getDerivedStateFromProps(h,c.__s))),p=c.props,b=c.state,c.__v=t,f)S.getDerivedStateFromProps==null&&c.componentWillMount!=null&&c.componentWillMount(),c.componentDidMount!=null&&c.__h.push(c.componentDidMount);else{if(S.getDerivedStateFromProps==null&&h!==p&&c.componentWillReceiveProps!=null&&c.componentWillReceiveProps(h,x),!c.__e&&c.shouldComponentUpdate!=null&&c.shouldComponentUpdate(h,c.__s,x)===!1||t.__v===a.__v){for(t.__v!==a.__v&&(c.props=h,c.state=c.__s,c.__d=!1),c.__e=!1,t.__e=a.__e,t.__k=a.__k,t.__k.forEach(function(A){A&&(A.__=t)}),E=0;E<c._sb.length;E++)c.__h.push(c._sb[E]);c._sb=[],c.__h.length&&o.push(c);break e}c.componentWillUpdate!=null&&c.componentWillUpdate(h,c.__s,x),c.componentDidUpdate!=null&&c.__h.push(function(){c.componentDidUpdate(p,b,d)})}if(c.context=x,c.props=h,c.__P=e,g=Q.__r,w=0,"prototype"in S&&S.prototype.render){for(c.state=c.__s,c.__d=!1,g&&g(t),u=c.render(c.props,c.state,c.context),C=0;C<c._sb.length;C++)c.__h.push(c._sb[C]);c._sb=[]}else do c.__d=!1,g&&g(t),u=c.render(c.props,c.state,c.context),c.state=c.__s;while(c.__d&&++w<25);c.state=c.__s,c.getChildContext!=null&&(n=ma(ma({},n),c.getChildContext())),f||c.getSnapshotBeforeUpdate==null||(d=c.getSnapshotBeforeUpdate(p,b)),Sv(e,bo(y=u!=null&&u.type===rt&&u.key==null?u.props.children:u)?y:[y],t,a,n,i,r,o,s,l),c.base=t.__e,t.__h=null,c.__h.length&&o.push(c),m&&(c.__E=c.__=null),c.__e=!1}else r==null&&t.__v===a.__v?(t.__k=a.__k,t.__e=a.__e):t.__e=pk(a.__e,t,a,n,i,r,o,l);(u=Q.diffed)&&u(t)}catch(A){t.__v=null,(l||r!=null)&&(t.__e=s,t.__h=!!l,r[r.indexOf(s)]=null),Q.__e(A,t,a)}}function _v(e,t){Q.__c&&Q.__c(t,e),e.some(function(a){try{e=a.__h,a.__h=[],e.some(function(n){n.call(a)})}catch(n){Q.__e(n,a.__v)}})}function pk(e,t,a,n,i,r,o,s){var l,u,c,f=a.props,p=t.props,b=t.type,d=0;if(b==="svg"&&(i=!0),r!=null){for(;d<r.length;d++)if((l=r[d])&&"setAttribute"in l==!!b&&(b?l.localName===b:l.nodeType===3)){e=l,r[d]=null;break}}if(e==null){if(b===null)return document.createTextNode(p);e=i?document.createElementNS("http://www.w3.org/2000/svg",b):document.createElement(b,p.is&&p),r=null,s=!1}if(b===null)f===p||s&&e.data===p||(e.data=p);else{if(r=r&&Ni.call(e.childNodes),u=(f=a.props||mo).dangerouslySetInnerHTML,c=p.dangerouslySetInnerHTML,!s){if(r!=null)for(f={},d=0;d<e.attributes.length;d++)f[e.attributes[d].name]=e.attributes[d].value;(c||u)&&(c&&(u&&c.__html==u.__html||c.__html===e.innerHTML)||(e.innerHTML=c&&c.__html||""))}if(uk(e,p,f,i,s),c)t.__k=[];else if(Sv(e,bo(d=t.props.children)?d:[d],t,a,n,i&&b!=="foreignObject",r,o,r?r[0]:a.__k&&Bi(a,0),s),r!=null)for(d=r.length;d--;)r[d]!=null&&wv(r[d]);s||("value"in p&&(d=p.value)!==void 0&&(d!==e.value||b==="progress"&&!d||b==="option"&&d!==f.value)&&vo(e,"value",d,f.value,!1),"checked"in p&&(d=p.checked)!==void 0&&d!==e.checked&&vo(e,"checked",d,f.checked,!1))}return e}function Tv(e,t,a){try{typeof e=="function"?e(t):e.current=t}catch(n){Q.__e(n,a)}}function kv(e,t,a){var n,i;if(Q.unmount&&Q.unmount(e),(n=e.ref)&&(n.current&&n.current!==e.__e||Tv(n,null,t)),(n=e.__c)!=null){if(n.componentWillUnmount)try{n.componentWillUnmount()}catch(r){Q.__e(r,t)}n.base=n.__P=null,e.__c=void 0}if(n=e.__k)for(i=0;i<n.length;i++)n[i]&&kv(n[i],t,a||typeof e.type!="function");a||e.__e==null||wv(e.__e),e.__=e.__e=e.__d=void 0}function dk(e,t,a){return this.constructor(e,a)}function On(e,t,a){var n,i,r;Q.__&&Q.__(e,t),i=(n=typeof a=="function")?null:a&&a.__k||t.__k,r=[],pu(t,e=(!n&&a||t).__k=se(rt,null,[e]),i||mo,mo,t.ownerSVGElement!==void 0,!n&&a?[a]:i?null:t.firstChild?Ni.call(t.childNodes):null,r,!n&&a?a:i?i.__e:t.firstChild,n),_v(r,e)}function du(e,t){On(e,t,du)}function Fv(e,t,a){var n,i,r,o,s=ma({},e.props);for(r in e.type&&e.type.defaultProps&&(o=e.type.defaultProps),t)r=="key"?n=t[r]:r=="ref"?i=t[r]:s[r]=t[r]===void 0&&o!==void 0?o[r]:t[r];return arguments.length>2&&(s.children=arguments.length>3?Ni.call(arguments,2):a),Ri(e.type,s,n||e.key,i||e.ref,null)}function _a(e,t){var a={__c:t="__cC"+xv++,__:e,Consumer:function(n,i){return n.children(i)},Provider:function(n){var i,r;return this.getChildContext||(i=[],(r={})[t]=this,this.getChildContext=function(){return r},this.shouldComponentUpdate=function(o){this.props.value!==o.value&&i.some(function(s){s.__e=!0,cu(s)})},this.sub=function(o){i.push(o);var s=o.componentWillUnmount;o.componentWillUnmount=function(){i.splice(i.indexOf(o),1),s&&s.call(o)}}),n.children}};return a.Provider.__=a.Consumer.contextType=a}Ni=yv.slice,Q={__e:function(e,t,a,n){for(var i,r,o;t=t.__;)if((i=t.__c)&&!i.__)try{if((r=i.constructor)&&r.getDerivedStateFromError!=null&&(i.setState(r.getDerivedStateFromError(e)),o=i.__d),i.componentDidCatch!=null&&(i.componentDidCatch(e,n||{}),o=i.__d),o)return i.__E=i}catch(s){e=s}throw e}},bv=0,lk=function(e){return e!=null&&e.constructor===void 0},Ct.prototype.setState=function(e,t){var a;a=this.__s!=null&&this.__s!==this.state?this.__s:this.__s=ma({},this.state),typeof e=="function"&&(e=e(ma({},a),this.props)),e&&ma(a,e),e!=null&&this.__v&&(t&&this._sb.push(t),cu(this))},Ct.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),cu(this))},Ct.prototype.render=rt,$a=[],gv=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,lu=function(e,t){return e.__v.__b-t.__v.__b},ho.__r=0,xv=0;var Ta,je,fu,Pv,Rn=0,Mv=[],go=[],Ov=Q.__b,Rv=Q.__r,Bv=Q.diffed,Nv=Q.__c,jv=Q.unmount;function Bn(e,t){Q.__h&&Q.__h(je,e,Rn||t),Rn=0;var a=je.__H||(je.__H={__:[],__h:[]});return e>=a.__.length&&a.__.push({__V:go}),a.__[e]}function Re(e){return Rn=1,hu(Hv,e)}function hu(e,t,a){var n=Bn(Ta++,2);if(n.t=e,!n.__c&&(n.__=[a?a(t):Hv(void 0,t),function(s){var l=n.__N?n.__N[0]:n.__[0],u=n.t(l,s);l!==u&&(n.__N=[u,n.__[1]],n.__c.setState({}))}],n.__c=je,!je.u)){var i=function(s,l,u){if(!n.__c.__H)return!0;var c=n.__c.__H.__.filter(function(p){return p.__c});if(c.every(function(p){return!p.__N}))return!r||r.call(this,s,l,u);var f=!1;return c.forEach(function(p){if(p.__N){var b=p.__[0];p.__=p.__N,p.__N=void 0,b!==p.__[0]&&(f=!0)}}),!(!f&&n.__c.props===s)&&(!r||r.call(this,s,l,u))};je.u=!0;var r=je.shouldComponentUpdate,o=je.componentWillUpdate;je.componentWillUpdate=function(s,l,u){if(this.__e){var c=r;r=void 0,i(s,l,u),r=c}o&&o.call(this,s,l,u)},je.shouldComponentUpdate=i}return n.__N||n.__}function ha(e,t){var a=Bn(Ta++,3);!Q.__s&&vu(a.__H,t)&&(a.__=e,a.i=t,je.__H.__h.push(a))}function ka(e,t){var a=Bn(Ta++,4);!Q.__s&&vu(a.__H,t)&&(a.__=e,a.i=t,je.__h.push(a))}function ot(e){return Rn=5,At(function(){return{current:e}},[])}function Dv(e,t,a){Rn=6,ka(function(){return typeof e=="function"?(e(t()),function(){return e(null)}):e?(e.current=t(),function(){return e.current=null}):void 0},a==null?a:a.concat(e))}function At(e,t){var a=Bn(Ta++,7);return vu(a.__H,t)?(a.__V=e(),a.i=t,a.__h=e,a.__V):a.__}function Fe(e,t){return Rn=8,At(function(){return e},t)}function Yt(e){var t=je.context[e.__c],a=Bn(Ta++,9);return a.c=e,t?(a.__==null&&(a.__=!0,t.sub(je)),t.props.value):e.__}function zv(e,t){Q.useDebugValue&&Q.useDebugValue(t?t(e):e)}function Gv(){var e=Bn(Ta++,11);if(!e.__){for(var t=je.__v;t!==null&&!t.__m&&t.__!==null;)t=t.__;var a=t.__m||(t.__m=[0,0]);e.__="P"+a[0]+"-"+a[1]++}return e.__}function fk(){for(var e;e=Mv.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(xo),e.__H.__h.forEach(mu),e.__H.__h=[]}catch(t){e.__H.__h=[],Q.__e(t,e.__v)}}Q.__b=function(e){je=null,Ov&&Ov(e)},Q.__r=function(e){Rv&&Rv(e),Ta=0;var t=(je=e.__c).__H;t&&(fu===je?(t.__h=[],je.__h=[],t.__.forEach(function(a){a.__N&&(a.__=a.__N),a.__V=go,a.__N=a.i=void 0})):(t.__h.forEach(xo),t.__h.forEach(mu),t.__h=[],Ta=0)),fu=je},Q.diffed=function(e){Bv&&Bv(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(Mv.push(t)!==1&&Pv===Q.requestAnimationFrame||((Pv=Q.requestAnimationFrame)||mk)(fk)),t.__H.__.forEach(function(a){a.i&&(a.__H=a.i),a.__V!==go&&(a.__=a.__V),a.i=void 0,a.__V=go})),fu=je=null},Q.__c=function(e,t){t.some(function(a){try{a.__h.forEach(xo),a.__h=a.__h.filter(function(n){return!n.__||mu(n)})}catch(n){t.some(function(i){i.__h&&(i.__h=[])}),t=[],Q.__e(n,a.__v)}}),Nv&&Nv(e,t)},Q.unmount=function(e){jv&&jv(e);var t,a=e.__c;a&&a.__H&&(a.__H.__.forEach(function(n){try{xo(n)}catch(i){t=i}}),a.__H=void 0,t&&Q.__e(t,a.__v))};var Lv=typeof requestAnimationFrame=="function";function mk(e){var t,a=function(){clearTimeout(n),Lv&&cancelAnimationFrame(t),setTimeout(e)},n=setTimeout(a,100);Lv&&(t=requestAnimationFrame(a))}function xo(e){var t=je,a=e.__c;typeof a=="function"&&(e.__c=void 0,a()),je=t}function mu(e){var t=je;e.__c=e.__(),je=t}function vu(e,t){return!e||e.length!==t.length||t.some(function(a,n){return a!==e[n]})}function Hv(e,t){return typeof t=="function"?t(e):t}function Yv(e,t){for(var a in t)e[a]=t[a];return e}function gu(e,t){for(var a in e)if(a!=="__source"&&!(a in t))return!0;for(var n in t)if(n!=="__source"&&e[n]!==t[n])return!0;return!1}function bu(e,t){return e===t&&(e!==0||1/e==1/t)||e!=e&&t!=t}function xu(e){this.props=e}function hk(e,t){function a(i){var r=this.props.ref,o=r==i.ref;return!o&&r&&(r.call?r(null):r.current=null),t?!t(this.props,i)||!o:gu(this.props,i)}function n(i){return this.shouldComponentUpdate=a,se(e,i)}return n.displayName="Memo("+(e.displayName||e.name)+")",n.prototype.isReactComponent=!0,n.__f=!0,n}(xu.prototype=new Ct).isPureReactComponent=!0,xu.prototype.shouldComponentUpdate=function(e,t){return gu(this.props,e)||gu(this.state,t)};var Wv=Q.__b;Q.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),Wv&&Wv(e)};var vk=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function Nn(e){function t(a){var n=Yv({},a);return delete n.ref,e(n,a.ref||null)}return t.$$typeof=vk,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t}var Vv=function(e,t){return e==null?null:$t($t(e).map(t))},bk={map:Vv,forEach:Vv,count:function(e){return e?$t(e).length:0},only:function(e){var t=$t(e);if(t.length!==1)throw"Children.only";return t[0]},toArray:$t},gk=Q.__e;Q.__e=function(e,t,a,n){if(e.then){for(var i,r=t;r=r.__;)if((i=r.__c)&&i.__c)return t.__e==null&&(t.__e=a.__e,t.__k=a.__k),i.__c(e,t)}gk(e,t,a,n)};var Uv=Q.unmount;function Kv(e,t,a){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach(function(n){typeof n.__c=="function"&&n.__c()}),e.__c.__H=null),(e=Yv({},e)).__c!=null&&(e.__c.__P===a&&(e.__c.__P=t),e.__c=null),e.__k=e.__k&&e.__k.map(function(n){return Kv(n,t,a)})),e}function Qv(e,t,a){return e&&(e.__v=null,e.__k=e.__k&&e.__k.map(function(n){return Qv(n,t,a)}),e.__c&&e.__c.__P===t&&(e.__e&&a.insertBefore(e.__e,e.__d),e.__c.__e=!0,e.__c.__P=a)),e}function yo(){this.__u=0,this.t=null,this.__b=null}function e0(e){var t=e.__.__c;return t&&t.__a&&t.__a(e)}function xk(e){var t,a,n;function i(r){if(t||(t=e()).then(function(o){a=o.default||o},function(o){n=o}),n)throw n;if(!a)throw t;return se(a,r)}return i.displayName="Lazy",i.__f=!0,i}function ji(){this.u=null,this.o=null}Q.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&e.__h===!0&&(e.type=null),Uv&&Uv(e)},(yo.prototype=new Ct).__c=function(e,t){var a=t.__c,n=this;n.t==null&&(n.t=[]),n.t.push(a);var i=e0(n.__v),r=!1,o=function(){r||(r=!0,a.__R=null,i?i(s):s())};a.__R=o;var s=function(){if(!--n.__u){if(n.state.__a){var u=n.state.__a;n.__v.__k[0]=Qv(u,u.__c.__P,u.__c.__O)}var c;for(n.setState({__a:n.__b=null});c=n.t.pop();)c.forceUpdate()}},l=t.__h===!0;n.__u++||l||n.setState({__a:n.__b=n.__v.__k[0]}),e.then(o,o)},yo.prototype.componentWillUnmount=function(){this.t=[]},yo.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var a=document.createElement("div"),n=this.__v.__k[0].__c;this.__v.__k[0]=Kv(this.__b,a,n.__O=n.__P)}this.__b=null}var i=t.__a&&se(rt,null,e.fallback);return i&&(i.__h=null),[se(rt,null,t.__a?null:e.children),i]};var Jv=function(e,t,a){if(++a[1]===a[0]&&e.o.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.o.size))for(a=e.u;a;){for(;a.length>3;)a.pop()();if(a[1]<a[0])break;e.u=a=a[2]}};function yk(e){return this.getChildContext=function(){return e.context},e.children}function wk(e){var t=this,a=e.i;t.componentWillUnmount=function(){On(null,t.l),t.l=null,t.i=null},t.i&&t.i!==a&&t.componentWillUnmount(),e.__v?(t.l||(t.i=a,t.l={nodeType:1,parentNode:a,childNodes:[],appendChild:function(n){this.childNodes.push(n),t.i.appendChild(n)},insertBefore:function(n,i){this.childNodes.push(n),t.i.appendChild(n)},removeChild:function(n){this.childNodes.splice(this.childNodes.indexOf(n)>>>1,1),t.i.removeChild(n)}}),On(se(yk,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}function yu(e,t){var a=se(wk,{__v:e,i:t});return a.containerInfo=t,a}(ji.prototype=new Ct).__a=function(e){var t=this,a=e0(t.__v),n=t.o.get(e);return n[0]++,function(i){var r=function(){t.props.revealOrder?(n.push(i),Jv(t,e,n)):i()};a?a(r):r()}},ji.prototype.render=function(e){this.u=null,this.o=new Map;var t=$t(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var a=t.length;a--;)this.o.set(t[a],this.u=[1,0,this.u]);return e.children},ji.prototype.componentDidUpdate=ji.prototype.componentDidMount=function(){var e=this;this.o.forEach(function(t,a){Jv(e,a,t)})};var t0=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.element")||60103,Ek=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Sk=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,Ck=/[A-Z0-9]/g,Ak=typeof document!="undefined",Ik=function(e){return(typeof Symbol!="undefined"&&typeof Symbol()=="symbol"?/fil|che|rad/:/fil|che|ra/).test(e)};function _k(e,t,a){return t.__k==null&&(t.textContent=""),On(e,t),typeof a=="function"&&a(),e?e.__c:null}function Tk(e,t,a){return du(e,t),typeof a=="function"&&a(),e?e.__c:null}Ct.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(Ct.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var Zv=Q.event;function kk(){}function Fk(){return this.cancelBubble}function Pk(){return this.defaultPrevented}Q.event=function(e){return Zv&&(e=Zv(e)),e.persist=kk,e.isPropagationStopped=Fk,e.isDefaultPrevented=Pk,e.nativeEvent=e};var wu,Ok={enumerable:!1,configurable:!0,get:function(){return this.class}},qv=Q.vnode;Q.vnode=function(e){typeof e.type=="string"&&function(t){var a=t.props,n=t.type,i={};for(var r in a){var o=a[r];if(!(r==="value"&&"defaultValue"in a&&o==null||Ak&&r==="children"&&n==="noscript"||r==="class"||r==="className")){var s=r.toLowerCase();r==="defaultValue"&&"value"in a&&a.value==null?r="value":r==="download"&&o===!0?o="":s==="ondoubleclick"?r="ondblclick":s!=="onchange"||n!=="input"&&n!=="textarea"||Ik(a.type)?s==="onfocus"?r="onfocusin":s==="onblur"?r="onfocusout":Sk.test(r)?r=s:n.indexOf("-")===-1&&Ek.test(r)?r=r.replace(Ck,"-$&").toLowerCase():o===null&&(o=void 0):s=r="oninput",s==="oninput"&&i[r=s]&&(r="oninputCapture"),i[r]=o}}n=="select"&&i.multiple&&Array.isArray(i.value)&&(i.value=$t(a.children).forEach(function(l){l.props.selected=i.value.indexOf(l.props.value)!=-1})),n=="select"&&i.defaultValue!=null&&(i.value=$t(a.children).forEach(function(l){l.props.selected=i.multiple?i.defaultValue.indexOf(l.props.value)!=-1:i.defaultValue==l.props.value})),a.class&&!a.className?(i.class=a.class,Object.defineProperty(i,"className",Ok)):(a.className&&!a.class||a.class&&a.className)&&(i.class=i.className=a.className),t.props=i}(e),e.$$typeof=t0,qv&&qv(e)};var Xv=Q.__r;Q.__r=function(e){Xv&&Xv(e),wu=e.__c};var $v=Q.diffed;Q.diffed=function(e){$v&&$v(e);var t=e.props,a=e.__e;a!=null&&e.type==="textarea"&&"value"in t&&t.value!==a.value&&(a.value=t.value==null?"":t.value),wu=null};var Rk={ReactCurrentDispatcher:{current:{readContext:function(e){return wu.__n[e.__c].props.value}}}};function Bk(e){return se.bind(null,e)}function a0(e){return!!e&&e.$$typeof===t0}function Nk(e){return a0(e)?Fv.apply(null,arguments):e}function jk(e){return!!e.__k&&(On(null,e),!0)}function Lk(e){return e&&(e.base||e.nodeType===1&&e)||null}var Mk=function(e,t){return e(t)},Dk=function(e,t){return e(t)},zk=rt;function n0(e){e()}function Gk(e){return e}function Hk(){return[!1,n0]}var wo=ka;function Wk(e,t){var a=t(),n=Re({h:{__:a,v:t}}),i=n[0].h,r=n[1];return ka(function(){i.__=a,i.v=t,bu(i.__,t())||r({h:i})},[e,a,t]),ha(function(){return bu(i.__,i.v())||r({h:i}),e(function(){bu(i.__,i.v())||r({h:i})})},[e]),a}var I={useState:Re,useId:Gv,useReducer:hu,useEffect:ha,useLayoutEffect:ka,useInsertionEffect:wo,useTransition:Hk,useDeferredValue:Gk,useSyncExternalStore:Wk,startTransition:n0,useRef:ot,useImperativeHandle:Dv,useMemo:At,useCallback:Fe,useContext:Yt,useDebugValue:zv,version:"17.0.2",Children:bk,render:_k,hydrate:Tk,unmountComponentAtNode:jk,createPortal:yu,createElement:se,createContext:_a,createFactory:Bk,cloneElement:Nk,createRef:uu,Fragment:rt,isValidElement:a0,findDOMNode:Lk,Component:Ct,PureComponent:xu,memo:hk,forwardRef:Nn,flushSync:Dk,unstable_batchedUpdates:Mk,StrictMode:zk,Suspense:yo,SuspenseList:ji,lazy:xk,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:Rk};function W(){return W=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},W.apply(this,arguments)}function Eu(e){let t=Object.prototype.toString.call(e).slice(8,-1);return t==="Object"&&typeof e[Symbol.iterator]=="function"?"Iterable":t==="Custom"&&e.constructor!==Object&&e instanceof Object?"Object":t}function Mi(e){let{styling:t,arrowStyle:a="single",expanded:n,nodeType:i,onClick:r}=e;return I.createElement("div",W({},t("arrowContainer",a),{onClick:r}),I.createElement("div",t(["arrow","arrowSign"],i,n,a),"\u25B6",a==="double"&&I.createElement("div",t(["arrowSign","arrowSignInner"]),"\u25B6")))}function Vk(e,t){return e==="Object"?Object.keys(t).length:e==="Array"?t.length:1/0}function Uk(e){return typeof e.set=="function"}function Jk(e,t,a){let n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:1/0,r;if(e==="Object"){let o=Object.getOwnPropertyNames(t);a&&o.sort(a===!0?void 0:a),o=o.slice(n,i+1),r={entries:o.map(s=>({key:s,value:t[s]}))}}else if(e==="Array")r={entries:t.slice(n,i+1).map((o,s)=>({key:s+n,value:o}))};else{let o=0,s=[],l=!0,u=Uk(t);for(let c of t){if(o>i){l=!1;break}n<=o&&(u&&Array.isArray(c)?typeof c[0]=="string"||typeof c[0]=="number"?s.push({key:c[0],value:c[1]}):s.push({key:`[entry ${o}]`,value:{"[key]":c[0],"[value]":c[1]}}):s.push({key:o,value:c})),o++}r={hasMore:!l,entries:s}}return r}function Su(e,t,a){let n=[];for(;t-e>a*a;)a=a*a;for(let i=e;i<=t;i+=a)n.push({from:i,to:Math.min(t,i+a-1)});return n}function Cu(e,t,a,n){let i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,r=arguments.length>5&&arguments[5]!==void 0?arguments[5]:1/0,o=Jk.bind(null,e,t,a);if(!n)return o().entries;let s=r<1/0,l=Math.min(r-i,Vk(e,t));if(e!=="Iterable"){if(l<=n||n<7)return o(i,r).entries}else if(l<=n&&!s)return o(i,r).entries;let u;if(e==="Iterable"){let{hasMore:c,entries:f}=o(i,i+n-1);u=c?[...f,...Su(i+n,i+2*n-1,n)]:f}else u=s?Su(i,r,n):[...o(0,n-5).entries,...Su(n-4,l-5,n),...o(l-4,l-1).entries];return u}function Au(e){let{styling:t,from:a,to:n,renderChildNodes:i,nodeType:r}=e,[o,s]=Re(!1),l=Fe(()=>{s(!o)},[o]);return o?I.createElement("div",t("itemRange",o),i(e,a,n)):I.createElement("div",W({},t("itemRange",o),{onClick:l}),I.createElement(Mi,{nodeType:r,styling:t,expanded:!1,onClick:l,arrowStyle:"double"}),`${a} ... ${n}`)}function Zk(e){return e.to!==void 0}function i0(e,t,a){let{nodeType:n,data:i,collectionLimit:r,circularCache:o,keyPath:s,postprocessValue:l,sortObjectKeys:u}=e,c=[];return Cu(n,i,u,r,t,a).forEach(f=>{if(Zk(f))c.push(I.createElement(Au,W({},e,{key:`ItemRange--${f.from}-${f.to}`,from:f.from,to:f.to,renderChildNodes:i0})));else{let{key:p,value:b}=f,d=o.indexOf(b)!==-1;c.push(I.createElement(Di,W({},e,{postprocessValue:l,collectionLimit:r,key:`Node--${p}`,keyPath:[p,...s],value:l(b),circularCache:[...o,b],isCircular:d,hideRoot:!1})))}}),c}function Ya(e){let{circularCache:t=[],collectionLimit:a,createItemString:n,data:i,expandable:r,getItemString:o,hideRoot:s,isCircular:l,keyPath:u,labelRenderer:c,level:f=0,nodeType:p,nodeTypeIndicator:b,shouldExpandNodeInitially:d,styling:m}=e,[h,v]=Re(l?!1:d(u,i,f)),x=Fe(()=>{r&&v(!h)},[r,h]),E=h||s&&f===0?i0({...e,circularCache:t,level:f+1}):null,g=I.createElement("span",m("nestedNodeItemType",h),b),w=o(p,i,g,n(i,a),u),C=[u,p,h,r];return s?I.createElement("li",m("rootNode",...C),I.createElement("ul",m("rootNodeChildren",...C),E)):I.createElement("li",m("nestedNode",...C),r&&I.createElement(Mi,{styling:m,nodeType:p,expanded:h,onClick:x}),I.createElement("label",W({},m(["label","nestedNodeLabel"],...C),{onClick:x}),c(...C)),I.createElement("span",W({},m("nestedNodeItemString",...C),{onClick:x}),w),I.createElement("ul",m("nestedNodeChildren",...C),E))}function qk(e){let t=Object.getOwnPropertyNames(e).length;return`${t} ${t!==1?"keys":"key"}`}function Iu(e){let{data:t,...a}=e;return I.createElement(Ya,W({},a,{data:t,nodeType:"Object",nodeTypeIndicator:a.nodeType==="Error"?"Error()":"{}",createItemString:qk,expandable:Object.getOwnPropertyNames(t).length>0}))}function Xk(e){return`${e.length} ${e.length!==1?"items":"item"}`}function _u(e){let{data:t,...a}=e;return I.createElement(Ya,W({},a,{data:t,nodeType:"Array",nodeTypeIndicator:"[]",createItemString:Xk,expandable:t.length>0}))}function $k(e,t){let a=0,n=!1;if(Number.isSafeInteger(e.size))a=e.size;else for(let i of e){if(t&&a+1>t){n=!0;break}a+=1}return`${n?">":""}${a} ${a!==1?"entries":"entry"}`}function Tu(e){return I.createElement(Ya,W({},e,{nodeType:"Iterable",nodeTypeIndicator:"()",createItemString:$k,expandable:!0}))}function Ut(e){let{nodeType:t,styling:a,labelRenderer:n,keyPath:i,valueRenderer:r,value:o,valueGetter:s=l=>l}=e;return I.createElement("li",a("value",t,i),I.createElement("label",a(["label","valueLabel"],t,i),n(i,t,!1,!1)),I.createElement("span",a("valueText",t,i),r(s(o),o,...i)))}function Di(e){let{getItemString:t,keyPath:a,labelRenderer:n,styling:i,value:r,valueRenderer:o,isCustomNode:s,...l}=e,u=s(r)?"Custom":Eu(r),c={getItemString:t,key:a[0],keyPath:a,labelRenderer:n,nodeType:u,styling:i,value:r,valueRenderer:o},f={...l,...c,data:r,isCustomNode:s};switch(u){case"Object":case"Error":case"WeakMap":case"WeakSet":return I.createElement(Iu,f);case"Array":return I.createElement(_u,f);case"Iterable":case"Map":case"Set":return I.createElement(Tu,f);case"String":return I.createElement(Ut,W({},c,{valueGetter:p=>`"${p}"`}));case"Number":return I.createElement(Ut,c);case"Boolean":return I.createElement(Ut,W({},c,{valueGetter:p=>p?"true":"false"}));case"Date":return I.createElement(Ut,W({},c,{valueGetter:p=>p.toISOString()}));case"Null":return I.createElement(Ut,W({},c,{valueGetter:()=>"null"}));case"Undefined":return I.createElement(Ut,W({},c,{valueGetter:()=>"undefined"}));case"Function":case"Symbol":return I.createElement(Ut,W({},c,{valueGetter:p=>p.toString()}));case"Custom":return I.createElement(Ut,c);default:return I.createElement(Ut,W({},c,{valueGetter:()=>`<${u}>`}))}}function ft(e){"@babel/helpers - typeof";return ft=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ft(e)}function ku(e,t){if(ft(e)!=="object"||e===null)return e;var a=e[Symbol.toPrimitive];if(a!==void 0){var n=a.call(e,t||"default");if(ft(n)!=="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function zi(e){var t=ku(e,"string");return ft(t)==="symbol"?t:String(t)}function jt(e,t,a){return t=zi(t),t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function Fu(e){if(Array.isArray(e))return e}function Pu(e,t){var a=e==null?null:typeof Symbol!="undefined"&&e[Symbol.iterator]||e["@@iterator"];if(a!=null){var n,i,r,o,s=[],l=!0,u=!1;try{if(r=(a=a.call(e)).next,t===0){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=r.call(a)).done)&&(s.push(n.value),s.length!==t);l=!0);}catch(c){u=!0,i=c}finally{try{if(!l&&a.return!=null&&(o=a.return(),Object(o)!==o))return}finally{if(u)throw i}}return s}}function jn(e,t){(t==null||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a<t;a++)n[a]=e[a];return n}function Gi(e,t){if(e){if(typeof e=="string")return jn(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);if(a==="Object"&&e.constructor&&(a=e.constructor.name),a==="Map"||a==="Set")return Array.from(e);if(a==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a))return jn(e,t)}}function Ou(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Le(e,t){return Fu(e)||Pu(e,t)||Gi(e,t)||Ou()}var Uu=_e(Ab()),Hu=_e(Jb()),Wu=_e(pg());function dg(e){var t=e[0],a=e[1],n=e[2],i,r,o;return i=t*1+a*0+n*1.13983,r=t*1+a*-.39465+n*-.5806,o=t*1+a*2.02311+n*0,i=Math.min(Math.max(0,i),1),r=Math.min(Math.max(0,r),1),o=Math.min(Math.max(0,o),1),[i*255,r*255,o*255]}function fg(e){var t=e[0]/255,a=e[1]/255,n=e[2]/255,i=t*.299+a*.587+n*.114,r=t*-.14713+a*-.28886+n*.436,o=t*.615+a*-.51499+n*-.10001;return[i,r,o]}function mg(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),a.push.apply(a,n)}return a}function It(e){for(var t=1;t<arguments.length;t++){var a=arguments[t]!=null?arguments[t]:{};t%2?mg(Object(a),!0).forEach(function(n){jt(e,n,a[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):mg(Object(a)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(a,n))})}return e}var vg=Uu.default,hg=Object.keys(vg),QF=function(t){return t<.25?1:t<.5?.9-t:1.1-t},eP=function(t){var a=(0,Hu.default)(t),n=fg(a.array()),i=Le(n,3),r=i[0],o=i[1],s=i[2],l=[QF(r),o,s],u=dg(l);return Hu.default.rgb(u).hex()},zn=function(t){return function(a){return{className:[a.className,t.className].filter(Boolean).join(" "),style:It(It({},a.style||{}),t.style||{})}}},tP=function(t,a){if(t===void 0)return a;if(a===void 0)return t;var n=ft(t),i=ft(a);switch(n){case"string":switch(i){case"string":return[a,t].filter(Boolean).join(" ");case"object":return zn({className:t,style:a});case"function":return function(r){for(var o=arguments.length,s=new Array(o>1?o-1:0),l=1;l<o;l++)s[l-1]=arguments[l];return zn({className:t})(a.apply(void 0,[r].concat(s)))}}break;case"object":switch(i){case"string":return zn({className:a,style:t});case"object":return It(It({},a),t);case"function":return function(r){for(var o=arguments.length,s=new Array(o>1?o-1:0),l=1;l<o;l++)s[l-1]=arguments[l];return zn({style:t})(a.apply(void 0,[r].concat(s)))}}break;case"function":switch(i){case"string":return function(r){for(var o=arguments.length,s=new Array(o>1?o-1:0),l=1;l<o;l++)s[l-1]=arguments[l];return t.apply(void 0,[zn(r)({className:a})].concat(s))};case"object":return function(r){for(var o=arguments.length,s=new Array(o>1?o-1:0),l=1;l<o;l++)s[l-1]=arguments[l];return t.apply(void 0,[zn(r)({style:a})].concat(s))};case"function":return function(r){for(var o=arguments.length,s=new Array(o>1?o-1:0),l=1;l<o;l++)s[l-1]=arguments[l];return t.apply(void 0,[a.apply(void 0,[r].concat(s))].concat(s))}}}},aP=function(t,a){var n=Object.keys(a);for(var i in t)n.indexOf(i)===-1&&n.push(i);return n.reduce(function(r,o){return r[o]=tP(t[o],a[o]),r},{})},nP=function(t,a){for(var n=arguments.length,i=new Array(n>2?n-2:0),r=2;r<n;r++)i[r-2]=arguments[r];if(a===null)return t;Array.isArray(a)||(a=[a]);var o=a.map(function(l){return t[l]}).filter(Boolean),s=o.reduce(function(l,u){return typeof u=="string"?l.className=[l.className,u].filter(Boolean).join(" "):ft(u)==="object"?l.style=It(It({},l.style),u):typeof u=="function"&&(l=It(It({},l),u.apply(void 0,[l].concat(i)))),l},{className:"",style:{}});return s.className||delete s.className,Object.keys(s.style).length===0&&delete s.style,s},Vu=function(t){return Object.keys(t).reduce(function(a,n){return a[n]=/^base/.test(n)?eP(t[n]):n==="scheme"?t[n]+":inverted":t[n],a},{})},bg=(0,Wu.default)(function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=t.defaultBase16,i=n===void 0?vg:n,r=t.base16Themes,o=r===void 0?null:r,s=iP(a,o);s&&(a=It(It({},s),a));for(var l=hg.reduce(function(m,h){return m[h]=a[h]||i[h],m},{}),u=Object.keys(a).reduce(function(m,h){return hg.indexOf(h)===-1&&(m[h]=a[h]),m},{}),c=e(l),f=aP(u,c),p=arguments.length,b=new Array(p>3?p-3:0),d=3;d<p;d++)b[d-3]=arguments[d];return(0,Wu.default)(nP,2).apply(void 0,[f].concat(b))},3),gg=function(t){return!!t.extend},iP=function(t,a){if(t&&gg(t)&&t.extend&&(t=t.extend),typeof t=="string"){var n=t.split(":"),i=Le(n,2),r=i[0],o=i[1];a?t=a[r]:t=Uu[r],o==="inverted"&&(t=Vu(t))}return t&&Object.prototype.hasOwnProperty.call(t,"base00")?t:void 0},xg=function(t){return typeof t=="string"?"".concat(t,":inverted"):t&&gg(t)&&t.extend?typeof t.extend=="string"?It(It({},t),{},{extend:"".concat(t.extend,":inverted")}):It(It({},t),{},{extend:Vu(t.extend)}):t&&Vu(t)};var yg={scheme:"solarized",author:"ethan schoonover (http://ethanschoonover.com/solarized)",base00:"#002b36",base01:"#073642",base02:"#586e75",base03:"#657b83",base04:"#839496",base05:"#93a1a1",base06:"#eee8d5",base07:"#fdf6e3",base08:"#dc322f",base09:"#cb4b16",base0A:"#b58900",base0B:"#859900",base0C:"#2aa198",base0D:"#268bd2",base0E:"#6c71c4",base0F:"#d33682"};var rP=e=>({BACKGROUND_COLOR:e.base00,TEXT_COLOR:e.base07,STRING_COLOR:e.base0B,DATE_COLOR:e.base0B,NUMBER_COLOR:e.base09,BOOLEAN_COLOR:e.base09,NULL_COLOR:e.base08,UNDEFINED_COLOR:e.base08,FUNCTION_COLOR:e.base08,SYMBOL_COLOR:e.base08,LABEL_COLOR:e.base0D,ARROW_COLOR:e.base0D,ITEM_STRING_COLOR:e.base0B,ITEM_STRING_EXPANDED_COLOR:e.base03}),oP=e=>({String:e.STRING_COLOR,Date:e.DATE_COLOR,Number:e.NUMBER_COLOR,Boolean:e.BOOLEAN_COLOR,Null:e.NULL_COLOR,Undefined:e.UNDEFINED_COLOR,Function:e.FUNCTION_COLOR,Symbol:e.SYMBOL_COLOR}),sP=e=>{let t=rP(e);return{tree:{border:0,padding:0,marginTop:"0.5em",marginBottom:"0.5em",marginLeft:"0.125em",marginRight:0,listStyle:"none",MozUserSelect:"none",WebkitUserSelect:"none",backgroundColor:t.BACKGROUND_COLOR},value:(a,n,i)=>{let{style:r}=a;return{style:{...r,paddingTop:"0.25em",paddingRight:0,marginLeft:"0.875em",WebkitUserSelect:"text",MozUserSelect:"text",wordWrap:"break-word",paddingLeft:i.length>1?"2.125em":"1.25em",textIndent:"-0.5em",wordBreak:"break-all"}}},label:{display:"inline-block",color:t.LABEL_COLOR},valueLabel:{margin:"0 0.5em 0 0"},valueText:(a,n)=>{let{style:i}=a;return{style:{...i,color:oP(t)[n]}}},itemRange:(a,n)=>({style:{paddingTop:n?0:"0.25em",cursor:"pointer",color:t.LABEL_COLOR}}),arrow:(a,n,i)=>{let{style:r}=a;return{style:{...r,marginLeft:0,transition:"150ms",WebkitTransition:"150ms",MozTransition:"150ms",WebkitTransform:i?"rotateZ(90deg)":"rotateZ(0deg)",MozTransform:i?"rotateZ(90deg)":"rotateZ(0deg)",transform:i?"rotateZ(90deg)":"rotateZ(0deg)",transformOrigin:"45% 50%",WebkitTransformOrigin:"45% 50%",MozTransformOrigin:"45% 50%",position:"relative",lineHeight:"1.1em",fontSize:"0.75em"}}},arrowContainer:(a,n)=>{let{style:i}=a;return{style:{...i,display:"inline-block",paddingRight:"0.5em",paddingLeft:n==="double"?"1em":0,cursor:"pointer"}}},arrowSign:{color:t.ARROW_COLOR},arrowSignInner:{position:"absolute",top:0,left:"-0.4em"},nestedNode:(a,n,i,r,o)=>{let{style:s}=a;return{style:{...s,position:"relative",paddingTop:"0.25em",marginLeft:n.length>1?"0.875em":0,paddingLeft:o?0:"1.125em"}}},rootNode:{padding:0,margin:0},nestedNodeLabel:(a,n,i,r,o)=>{let{style:s}=a;return{style:{...s,margin:0,padding:0,WebkitUserSelect:o?"inherit":"text",MozUserSelect:o?"inherit":"text",cursor:o?"pointer":"default"}}},nestedNodeItemString:(a,n,i,r)=>{let{style:o}=a;return{style:{...o,paddingLeft:"0.5em",cursor:"default",color:r?t.ITEM_STRING_EXPANDED_COLOR:t.ITEM_STRING_COLOR}}},nestedNodeItemType:{marginLeft:"0.3em",marginRight:"0.3em"},nestedNodeChildren:(a,n,i)=>{let{style:r}=a;return{style:{...r,padding:0,margin:0,listStyle:"none",display:i?"block":"none"}}},rootNodeChildren:{padding:0,margin:0,listStyle:"none"}}},lP=bg(sP,{defaultBase16:yg}),wg=lP;var Eg=e=>e,cP=(e,t,a)=>a===0,uP=(e,t,a,n)=>I.createElement("span",null,a," ",n),pP=e=>{let[t]=e;return I.createElement("span",null,t,":")},dP=()=>!1;function Sg(e){let{data:t,theme:a,invertTheme:n,keyPath:i=["root"],labelRenderer:r=pP,valueRenderer:o=Eg,shouldExpandNodeInitially:s=cP,hideRoot:l=!1,getItemString:u=uP,postprocessValue:c=Eg,isCustomNode:f=dP,collectionLimit:p=50,sortObjectKeys:b=!1}=e,d=At(()=>wg(n?xg(a):a),[a,n]);return I.createElement("ul",d("tree"),I.createElement(Di,{keyPath:l?[]:i,value:c(t),isCustomNode:f,styling:d,labelRenderer:r,valueRenderer:o,shouldExpandNodeInitially:s,hideRoot:l,getItemString:u,postprocessValue:c,collectionLimit:p,sortObjectKeys:b}))}var Ra=require("fs"),Be=require("obsidian"),Jt=_e(require("path"));var px=require("node:buffer"),dx=_e(require("node:path"),1),xs=_e(require("node:child_process"),1),Ki=_e(require("node:process"),1),fx=_e(qc(),1);function Ju(e){let t=typeof e=="string"?` `:` -`.charCodeAt(),a=typeof e=="string"?"\r":"\r".charCodeAt();return e[e.length-1]===t&&(e=e.slice(0,-1)),e[e.length-1]===a&&(e=e.slice(0,-1)),e}var Xi=_e(require("node:process"),1),Gn=_e(require("node:path"),1),Cg=_e(require("node:url"),1);function ds(e={}){let{env:t=process.env,platform:a=process.platform}=e;return a!=="win32"?"PATH":Object.keys(t).reverse().find(n=>n.toUpperCase()==="PATH")||"Path"}function pP(e={}){let{cwd:t=Xi.default.cwd(),path:a=Xi.default.env[ds()],execPath:n=Xi.default.execPath}=e,i,r=t instanceof URL?Cg.default.fileURLToPath(t):t,o=Gn.default.resolve(r),s=[];for(;i!==o;)s.push(Gn.default.join(o,"node_modules/.bin")),i=o,o=Gn.default.resolve(o,"..");return s.push(Gn.default.resolve(r,n,"..")),[...s,a].join(Gn.default.delimiter)}function Ag({env:e=Xi.default.env,...t}={}){e={...e};let a=ds({env:e});return t.path=e[a],e[a]=pP(t),e}var dP=(e,t,a,n)=>{if(a==="length"||a==="prototype"||a==="arguments"||a==="caller")return;let i=Object.getOwnPropertyDescriptor(e,a),r=Object.getOwnPropertyDescriptor(t,a);!fP(i,r)&&n||Object.defineProperty(e,a,r)},fP=function(e,t){return e===void 0||e.configurable||e.writable===t.writable&&e.enumerable===t.enumerable&&e.configurable===t.configurable&&(e.writable||e.value===t.value)},mP=(e,t)=>{let a=Object.getPrototypeOf(t);a!==Object.getPrototypeOf(e)&&Object.setPrototypeOf(e,a)},hP=(e,t)=>`/* Wrapped ${e}*/ -${t}`,vP=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),bP=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),gP=(e,t,a)=>{let n=a===""?"":`with ${a.trim()}() `,i=hP.bind(null,n,t.toString());Object.defineProperty(i,"name",bP),Object.defineProperty(e,"toString",{...vP,value:i})};function Zu(e,t,{ignoreNonConfigurable:a=!1}={}){let{name:n}=e;for(let i of Reflect.ownKeys(t))dP(e,t,i,a);return mP(e,t),gP(e,t,n),e}var fs=new WeakMap,Ig=(e,t={})=>{if(typeof e!="function")throw new TypeError("Expected a function");let a,n=0,i=e.displayName||e.name||"<anonymous>",r=function(...o){if(fs.set(r,++n),n===1)a=e.apply(this,o),e=null;else if(t.throw===!0)throw new Error(`Function \`${i}\` can only be called once`);return a};return Zu(r,e),fs.set(r,n),r};Ig.callCount=e=>{if(!fs.has(e))throw new Error(`The given function \`${e.name}\` is not wrapped by the \`onetime\` package`);return fs.get(e)};var _g=Ig;var Rg=require("node:os");var Tg=()=>{let e=Fg-kg+1;return Array.from({length:e},xP)},xP=(e,t)=>({name:`SIGRT${t+1}`,number:kg+t,action:"terminate",description:"Application-specific signal (realtime)",standard:"posix"}),kg=34,Fg=64;var Og=require("node:os");var Pg=[{name:"SIGHUP",number:1,action:"terminate",description:"Terminal closed",standard:"posix"},{name:"SIGINT",number:2,action:"terminate",description:"User interruption with CTRL-C",standard:"ansi"},{name:"SIGQUIT",number:3,action:"core",description:"User interruption with CTRL-\\",standard:"posix"},{name:"SIGILL",number:4,action:"core",description:"Invalid machine instruction",standard:"ansi"},{name:"SIGTRAP",number:5,action:"core",description:"Debugger breakpoint",standard:"posix"},{name:"SIGABRT",number:6,action:"core",description:"Aborted",standard:"ansi"},{name:"SIGIOT",number:6,action:"core",description:"Aborted",standard:"bsd"},{name:"SIGBUS",number:7,action:"core",description:"Bus error due to misaligned, non-existing address or paging error",standard:"bsd"},{name:"SIGEMT",number:7,action:"terminate",description:"Command should be emulated but is not implemented",standard:"other"},{name:"SIGFPE",number:8,action:"core",description:"Floating point arithmetic error",standard:"ansi"},{name:"SIGKILL",number:9,action:"terminate",description:"Forced termination",standard:"posix",forced:!0},{name:"SIGUSR1",number:10,action:"terminate",description:"Application-specific signal",standard:"posix"},{name:"SIGSEGV",number:11,action:"core",description:"Segmentation fault",standard:"ansi"},{name:"SIGUSR2",number:12,action:"terminate",description:"Application-specific signal",standard:"posix"},{name:"SIGPIPE",number:13,action:"terminate",description:"Broken pipe or socket",standard:"posix"},{name:"SIGALRM",number:14,action:"terminate",description:"Timeout or timer",standard:"posix"},{name:"SIGTERM",number:15,action:"terminate",description:"Termination",standard:"ansi"},{name:"SIGSTKFLT",number:16,action:"terminate",description:"Stack is empty or overflowed",standard:"other"},{name:"SIGCHLD",number:17,action:"ignore",description:"Child process terminated, paused or unpaused",standard:"posix"},{name:"SIGCLD",number:17,action:"ignore",description:"Child process terminated, paused or unpaused",standard:"other"},{name:"SIGCONT",number:18,action:"unpause",description:"Unpaused",standard:"posix",forced:!0},{name:"SIGSTOP",number:19,action:"pause",description:"Paused",standard:"posix",forced:!0},{name:"SIGTSTP",number:20,action:"pause",description:'Paused using CTRL-Z or "suspend"',standard:"posix"},{name:"SIGTTIN",number:21,action:"pause",description:"Background process cannot read terminal input",standard:"posix"},{name:"SIGBREAK",number:21,action:"terminate",description:"User interruption with CTRL-BREAK",standard:"other"},{name:"SIGTTOU",number:22,action:"pause",description:"Background process cannot write to terminal output",standard:"posix"},{name:"SIGURG",number:23,action:"ignore",description:"Socket received out-of-band data",standard:"bsd"},{name:"SIGXCPU",number:24,action:"core",description:"Process timed out",standard:"bsd"},{name:"SIGXFSZ",number:25,action:"core",description:"File too big",standard:"bsd"},{name:"SIGVTALRM",number:26,action:"terminate",description:"Timeout or timer",standard:"bsd"},{name:"SIGPROF",number:27,action:"terminate",description:"Timeout or timer",standard:"bsd"},{name:"SIGWINCH",number:28,action:"ignore",description:"Terminal window size changed",standard:"bsd"},{name:"SIGIO",number:29,action:"terminate",description:"I/O is available",standard:"other"},{name:"SIGPOLL",number:29,action:"terminate",description:"Watched event",standard:"other"},{name:"SIGINFO",number:29,action:"ignore",description:"Request for process information",standard:"other"},{name:"SIGPWR",number:30,action:"terminate",description:"Device running out of power",standard:"systemv"},{name:"SIGSYS",number:31,action:"core",description:"Invalid system call",standard:"other"},{name:"SIGUNUSED",number:31,action:"terminate",description:"Invalid system call",standard:"other"}];var qu=()=>{let e=Tg();return[...Pg,...e].map(yP)},yP=({name:e,number:t,description:a,action:n,forced:i=!1,standard:r})=>{let{signals:{[e]:o}}=Og.constants,s=o!==void 0;return{name:e,number:s?o:t,description:a,supported:s,action:n,forced:i,standard:r}};var wP=()=>{let e=qu();return Object.fromEntries(e.map(EP))},EP=({name:e,number:t,description:a,supported:n,action:i,forced:r,standard:o})=>[e,{name:e,number:t,description:a,supported:n,action:i,forced:r,standard:o}],Bg=wP(),SP=()=>{let e=qu(),t=64+1,a=Array.from({length:t},(n,i)=>CP(i,e));return Object.assign({},...a)},CP=(e,t)=>{let a=AP(e,t);if(a===void 0)return{};let{name:n,description:i,supported:r,action:o,forced:s,standard:l}=a;return{[e]:{name:n,number:e,description:i,supported:r,action:o,forced:s,standard:l}}},AP=(e,t)=>{let a=t.find(({name:n})=>Rg.constants.signals[n]===e);return a!==void 0?a:t.find(n=>n.number===e)},oz=SP();var IP=({timedOut:e,timeout:t,errorCode:a,signal:n,signalDescription:i,exitCode:r,isCanceled:o})=>e?`timed out after ${t} milliseconds`:o?"was canceled":a!==void 0?`failed with ${a}`:n!==void 0?`was killed with ${n} (${i})`:r!==void 0?`failed with exit code ${r}`:"failed",$i=({stdout:e,stderr:t,all:a,error:n,signal:i,exitCode:r,command:o,escapedCommand:s,timedOut:l,isCanceled:u,killed:c,parsed:{options:{timeout:f}}})=>{r=r===null?void 0:r,i=i===null?void 0:i;let p=i===void 0?void 0:Bg[i].description,b=n&&n.code,h=`Command ${IP({timedOut:l,timeout:f,errorCode:b,signal:i,signalDescription:p,exitCode:r,isCanceled:u})}: ${o}`,m=Object.prototype.toString.call(n)==="[object Error]",v=m?`${h} -${n.message}`:h,x=[v,t,e].filter(Boolean).join(` -`);return m?(n.originalMessage=n.message,n.message=x):n=new Error(x),n.shortMessage=v,n.command=o,n.escapedCommand=s,n.exitCode=r,n.signal=i,n.signalDescription=p,n.stdout=e,n.stderr=t,a!==void 0&&(n.all=a),"bufferedData"in n&&delete n.bufferedData,n.failed=!0,n.timedOut=!!l,n.isCanceled=u,n.killed=c&&!l,n};var ms=["stdin","stdout","stderr"],_P=e=>ms.some(t=>e[t]!==void 0),Ng=e=>{if(!e)return;let{stdio:t}=e;if(t===void 0)return ms.map(n=>e[n]);if(_P(e))throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${ms.map(n=>`\`${n}\``).join(", ")}`);if(typeof t=="string")return t;if(!Array.isArray(t))throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof t}\``);let a=Math.max(t.length,ms.length);return Array.from({length:a},(n,i)=>t[i])};var jg=_e(require("node:os"),1),Lg=_e(eu(),1),TP=1e3*5,Mg=(e,t="SIGTERM",a={})=>{let n=e(t);return kP(e,t,a,n),n},kP=(e,t,a,n)=>{if(!FP(t,a,n))return;let i=OP(a),r=setTimeout(()=>{e("SIGKILL")},i);r.unref&&r.unref()},FP=(e,{forceKillAfterTimeout:t},a)=>PP(e)&&t!==!1&&a,PP=e=>e===jg.default.constants.signals.SIGTERM||typeof e=="string"&&e.toUpperCase()==="SIGTERM",OP=({forceKillAfterTimeout:e=!0})=>{if(e===!0)return TP;if(!Number.isFinite(e)||e<0)throw new TypeError(`Expected the \`forceKillAfterTimeout\` option to be a non-negative integer, got \`${e}\` (${typeof e})`);return e},Dg=(e,t)=>{e.kill()&&(t.isCanceled=!0)},RP=(e,t,a)=>{e.kill(t),a(Object.assign(new Error("Timed out"),{timedOut:!0,signal:t}))},zg=(e,{timeout:t,killSignal:a="SIGTERM"},n)=>{if(t===0||t===void 0)return n;let i,r=new Promise((s,l)=>{i=setTimeout(()=>{RP(e,a,l)},t)}),o=n.finally(()=>{clearTimeout(i)});return Promise.race([r,o])},Gg=({timeout:e})=>{if(e!==void 0&&(!Number.isFinite(e)||e<0))throw new TypeError(`Expected the \`timeout\` option to be a non-negative integer, got \`${e}\` (${typeof e})`)},Hg=async(e,{cleanup:t,detached:a},n)=>{if(!t||a)return n;let i=(0,Lg.default)(()=>{e.kill()});return n.finally(()=>{i()})};var Wg=require("node:fs"),Vg=require("node:child_process");function hs(e){return e!==null&&typeof e=="object"&&typeof e.pipe=="function"}function Xu(e){return hs(e)&&e.writable!==!1&&typeof e._write=="function"&&typeof e._writableState=="object"}var BP=e=>e instanceof Vg.ChildProcess&&typeof e.then=="function",$u=(e,t,a)=>{if(typeof a=="string")return e[t].pipe((0,Wg.createWriteStream)(a)),e;if(Xu(a))return e[t].pipe(a),e;if(!BP(a))throw new TypeError("The second argument must be a string, a stream or an Execa child process.");if(!Xu(a.stdin))throw new TypeError("The target child process's stdin must be available.");return e[t].pipe(a.stdin),a},Ug=e=>{e.stdout!==null&&(e.pipeStdout=$u.bind(void 0,e,"stdout")),e.stderr!==null&&(e.pipeStderr=$u.bind(void 0,e,"stderr")),e.all!==void 0&&(e.pipeAll=$u.bind(void 0,e,"all"))};var bs=require("node:fs");var ep=_e(qg(),1),Xg=_e(au(),1),$g=e=>{if(e!==void 0)throw new TypeError("The `input` and `inputFile` options cannot be both set.")},GP=({input:e,inputFile:t})=>typeof t!="string"?e:($g(e),(0,bs.readFileSync)(t)),Yg=e=>{let t=GP(e);if(hs(t))throw new TypeError("The `input` option cannot be a stream in sync mode");return t},HP=({input:e,inputFile:t})=>typeof t!="string"?e:($g(e),(0,bs.createReadStream)(t)),Kg=(e,t)=>{let a=HP(t);a!==void 0&&(hs(a)?a.pipe(e.stdin):e.stdin.end(a))},Qg=(e,{all:t})=>{if(!t||!e.stdout&&!e.stderr)return;let a=(0,Xg.default)();return e.stdout&&a.add(e.stdout),e.stderr&&a.add(e.stderr),a},Ku=async(e,t)=>{if(!(!e||t===void 0)){e.destroy();try{return await t}catch(a){return a.bufferedData}}},Qu=(e,{encoding:t,buffer:a,maxBuffer:n})=>{if(!(!e||!a))return t?(0,ep.default)(e,{encoding:t,maxBuffer:n}):ep.default.buffer(e,{maxBuffer:n})},ex=async({stdout:e,stderr:t,all:a},{encoding:n,buffer:i,maxBuffer:r},o)=>{let s=Qu(e,{encoding:n,buffer:i,maxBuffer:r}),l=Qu(t,{encoding:n,buffer:i,maxBuffer:r}),u=Qu(a,{encoding:n,buffer:i,maxBuffer:r*2});try{return await Promise.all([o,s,l,u])}catch(c){return Promise.all([{error:c,signal:c.signal,timedOut:c.timedOut},Ku(e,s),Ku(t,l),Ku(a,u)])}};var WP=(async()=>{})().constructor.prototype,VP=["then","catch","finally"].map(e=>[e,Reflect.getOwnPropertyDescriptor(WP,e)]),tp=(e,t)=>{for(let[a,n]of VP){let i=typeof t=="function"?(...r)=>Reflect.apply(n.value,t(),r):n.value.bind(t);Reflect.defineProperty(e,a,{...n,value:i})}},tx=e=>new Promise((t,a)=>{e.on("exit",(n,i)=>{t({exitCode:n,signal:i})}),e.on("error",n=>{a(n)}),e.stdin&&e.stdin.on("error",n=>{a(n)})});var ix=require("node:buffer"),rx=require("node:child_process"),ox=(e,t=[])=>Array.isArray(t)?[e,...t]:[e],UP=/^[\w.-]+$/,JP=/"/g,ZP=e=>typeof e!="string"||UP.test(e)?e:`"${e.replace(JP,'\\"')}"`,ap=(e,t)=>ox(e,t).join(" "),np=(e,t)=>ox(e,t).map(a=>ZP(a)).join(" "),qP=/ +/g;var ax=e=>{let t=typeof e;if(t==="string")return e;if(t==="number")return String(e);if(t==="object"&&e!==null&&!(e instanceof rx.ChildProcess)&&"stdout"in e){let a=typeof e.stdout;if(a==="string")return e.stdout;if(ix.Buffer.isBuffer(e.stdout))return e.stdout.toString();throw new TypeError(`Unexpected "${a}" stdout in template expression`)}throw new TypeError(`Unexpected "${t}" in template expression`)},nx=(e,t,a)=>a||e.length===0||t.length===0?[...e,...t]:[...e.slice(0,-1),`${e[e.length-1]}${t[0]}`,...t.slice(1)],XP=({templates:e,expressions:t,tokens:a,index:n,template:i})=>{let r=i!=null?i:e.raw[n],o=r.split(qP).filter(Boolean),s=nx(a,o,r.startsWith(" "));if(n===t.length)return s;let l=t[n],u=Array.isArray(l)?l.map(c=>ax(c)):[ax(l)];return nx(s,u,r.endsWith(" "))},ip=(e,t)=>{let a=[];for(let[n,i]of e.entries())a=XP({templates:e,expressions:t,tokens:a,index:n,template:i});return a};var sx=require("node:util"),lx=_e(require("node:process"),1),cx=(0,sx.debuglog)("execa").enabled,gs=(e,t)=>String(e).padStart(t,"0"),$P=()=>{let e=new Date;return`${gs(e.getHours(),2)}:${gs(e.getMinutes(),2)}:${gs(e.getSeconds(),2)}.${gs(e.getMilliseconds(),3)}`},rp=(e,{verbose:t})=>{t&&lx.default.stderr.write(`[${$P()}] ${e} -`)};var YP=1e3*1e3*100,KP=({env:e,extendEnv:t,preferLocal:a,localDir:n,execPath:i})=>{let r=t?{...Ki.default.env,...e}:e;return a?Ag({env:r,cwd:n,execPath:i}):r},mx=(e,t,a={})=>{let n=fx.default._parse(e,t,a);return e=n.command,t=n.args,a=n.options,a={maxBuffer:YP,buffer:!0,stripFinalNewline:!0,extendEnv:!0,preferLocal:!1,localDir:a.cwd||Ki.default.cwd(),execPath:Ki.default.execPath,encoding:"utf8",reject:!0,cleanup:!0,all:!1,windowsHide:!0,verbose:cx,...a},a.env=KP(a),a.stdio=Ng(a),Ki.default.platform==="win32"&&dx.default.basename(e,".exe")==="cmd"&&t.unshift("/q"),{file:e,args:t,options:a,parsed:n}},Qi=(e,t,a)=>typeof t!="string"&&!px.Buffer.isBuffer(t)?a===void 0?void 0:"":e.stripFinalNewline?Ju(t):t;function er(e,t,a){let n=mx(e,t,a),i=ap(e,t),r=np(e,t);rp(r,n.options),Gg(n.options);let o;try{o=xs.default.spawn(n.file,n.args,n.options)}catch(b){let d=new xs.default.ChildProcess,h=Promise.reject($i({error:b,stdout:"",stderr:"",all:"",command:i,escapedCommand:r,parsed:n,timedOut:!1,isCanceled:!1,killed:!1}));return tp(d,h),d}let s=tx(o),l=zg(o,n.options,s),u=Hg(o,n.options,l),c={isCanceled:!1};o.kill=Mg.bind(null,o.kill.bind(o)),o.cancel=Dg.bind(null,o,c);let p=_g(async()=>{let[{error:b,exitCode:d,signal:h,timedOut:m},v,x,E]=await ex(o,n.options,u),g=Qi(n.options,v),w=Qi(n.options,x),C=Qi(n.options,E);if(b||d!==0||h!==null){let y=$i({error:b,exitCode:d,signal:h,stdout:g,stderr:w,all:C,command:i,escapedCommand:r,parsed:n,timedOut:m,isCanceled:c.isCanceled||(n.options.signal?n.options.signal.aborted:!1),killed:o.killed});if(!n.options.reject)return y;throw y}return{command:i,escapedCommand:r,exitCode:0,stdout:g,stderr:w,all:C,failed:!1,timedOut:!1,isCanceled:!1,killed:!1}});return Kg(o,n.options),o.all=Qg(o,n.options),Ug(o),tp(o,p),o}function QP(e,t,a){let n=mx(e,t,a),i=ap(e,t),r=np(e,t);rp(r,n.options);let o=Yg(n.options),s;try{s=xs.default.spawnSync(n.file,n.args,{...n.options,input:o})}catch(c){throw $i({error:c,stdout:"",stderr:"",all:"",command:i,escapedCommand:r,parsed:n,timedOut:!1,isCanceled:!1,killed:!1})}let l=Qi(n.options,s.stdout,s.error),u=Qi(n.options,s.stderr,s.error);if(s.error||s.status!==0||s.signal!==null){let c=$i({stdout:l,stderr:u,error:s.error,signal:s.signal,exitCode:s.status,command:i,escapedCommand:r,parsed:n,timedOut:s.error&&s.error.code==="ETIMEDOUT",isCanceled:!1,killed:s.signal!==null});if(!n.options.reject)return c;throw c}return{command:i,escapedCommand:r,exitCode:0,stdout:l,stderr:u,failed:!1,timedOut:!1,isCanceled:!1,killed:!1}}var eO=({input:e,inputFile:t,stdio:a})=>e===void 0&&t===void 0&&a===void 0?{stdin:"inherit"}:{},ux=(e={})=>({preferLocal:!0,...eO(e),...e});function hx(e){function t(a,...n){if(!Array.isArray(a))return hx({...e,...a});let[i,...r]=ip(a,n);return er(i,r,ux(e))}return t.sync=(a,...n)=>{if(!Array.isArray(a))throw new TypeError("Please use $(options).sync`command` instead of $.sync(options)`command`.");let[i,...r]=ip(a,n);return QP(i,r,ux(e))},t}var Nz=hx();var lt=_e(require("fs")),op=require("obsidian"),tn=_e(require("os")),Lt=_e(require("path"));function sp(){return require("electron").remote.BrowserWindow.getFocusedWindow()}function lp(e){return e<10?`0${e}`:e.toString()}function an(){return app.vault.adapter.getBasePath()}function _t(){return Lt.default.join(an(),"./.obsidian/plugins/obsidian-zotero-desktop-connector/")}function nn(){return tn.default.platform()==="win32"?"pdfannots2json.exe":`pdfannots2json-${tn.default.platform()}-${tn.default.arch()}`}function vx(){tn.default.platform()!=="win32"&<.default.renameSync(Lt.default.join(_t(),cp()),Lt.default.join(_t(),nn()))}function cp(){return tn.default.platform()==="win32"?"pdfannots2json.exe":"pdfannots2json"}function bx(){return tn.default.platform()==="win32"?"pdf-annots2json.exe":"pdf-annots2json"}function Hn(e){return e?lt.default.existsSync(e):lt.default.existsSync(Lt.default.join(_t(),nn()))}function gx(e){return e?lt.default.existsSync(e):lt.default.existsSync(Lt.default.join(_t(),cp()))}function xx(){return lt.default.existsSync(Lt.default.join(_t(),bx()))}function yx(){lt.default.rmSync(Lt.default.join(_t(),nn()))}function wx(){lt.default.rmSync(Lt.default.join(_t(),cp()))}function Ex(){lt.default.rmSync(Lt.default.join(_t(),bx()))}async function Sx(e){try{let t=await er(e||Lt.default.join(_t(),nn()),["-v"]);if(t.stderr&&!t.stderr.includes("warning"))throw new op.Notice(`Error checking PDF utility version: ${t.stderr}`,1e4),new Error(t.stderr);return t.stdout.trim()}catch(t){throw console.error(t),new op.Notice(`Error checking PDF utility version: ${t.message}`,1e4),t}}function tO(e=0){return e|lt.default.constants.S_IXUSR|lt.default.constants.S_IXGRP|lt.default.constants.S_IXOTH}function aO(e){if(console.error("Error: pdfannots2json not executable",e),e.code==="ENOENT")return!1}function Cx(e){let t=e||Lt.default.join(_t(),nn());try{return lt.default.accessSync(t,lt.default.constants.X_OK),!0}catch(a){}try{let a=lt.default.statSync(t);return lt.default.chmodSync(t,tO(a.mode)),!0}catch(a){return aO(a)}}var Tx=require("obsidian");var Wn=_e(Ax()),ys=require("obsidian");Wn.default.runtime.memberLookup=function(t,a){if(t!=null)return a=="__proto__"||a=="constructor"?function(){return function(){}}:typeof t[a]=="function"?(...n)=>t[a].apply(t,n):t[a]};function nO(e){return e?e.split("."):[]}function iO(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function rO(e){let t=nO(e);return function(n){let i=n;for(let r=0;r<t.length;r++){let o=t[r];if(iO(i,o))i=i[o];else return}return i}}function oO(e,t,a,...n){let i=rO(t);return n.length===0?e:e.filter(r=>{let o=typeof r=="string"?r:i(r);return o?typeof n[0]=="string"&&["startswith","endswith","contains"].includes(a)?(o=o.toString().toLocaleLowerCase(),n.some(s=>{let l=s.toLocaleLowerCase();return a==="startswith"?o.startsWith(l):a==="endswith"?o.endsWith(l):a==="contains"?o.includes(l):!0})):["dateafter","dateonorafter","datebefore","dateonorbefore"].includes(a)?n.some(s=>{if(!ys.moment.isMoment(o)||!ys.moment.isMoment(s))return!1;switch(a){case"dateafter":return o.isAfter(s);case"dateonorafter":return o.isSameOrAfter(s);case"datebefore":return o.isBefore(s);case"dateonorbefore":return o.isSameOrBefore(s)}}):!1:!1})}function sO(e,t){return e instanceof ys.moment?e.format(t):"Error: `format` can only be applied to dates. Tried for format "+typeof e}var Jt=class{constructor(){this.tags=["persist"]}parse(t,a){let n=t.nextToken(),i=t.parseSignature(null,!0);t.advanceAfterBlockEnd(n.value);let r=t.parseUntilBlocks("endpersist");return t.advanceAfterBlockEnd(),new a.CallExtension(this,"run",i,[r])}run(t,a,n){var o;let i="";(o=t==null?void 0:t.ctx)!=null&&o._retained&&t.ctx._retained[a]&&(i=t.ctx._retained[a]);let r=n();return i&&(r=r.trimStart()),new Wn.default.runtime.SafeString(`%% begin ${a} %%${i}${r}%% end ${a} %%`)}static hasPersist(t){return this.re.lastIndex=0,this.re.test(t)}static prepareTemplateData(t,a){let n={};if(!a)return t;this.re.lastIndex=0;for(let i of a.matchAll(this.re))n[i[1]]=i[2];return{...t,_retained:n}}};Jt.id="PersistExtension",Jt.re=/%% begin (.+?) %%([\w\W]*?)%% end \1 %%/gi;var pp=class extends Wn.Loader{constructor(){super(...arguments);this.async=!0;this.wikiLinkRe=/^\[\[([^\]]+)\]\]$/;this.markdownLinkRe=/^\[[^\]]*\]\(([^)]+)\)$/}setSourceFile(a){this.sourceFile=a}getLinkPath(a){let n=a.trim().match(this.wikiLinkRe);return n||(n=a.trim().match(this.markdownLinkRe),n)?n[1]:null}getSource(a,n){let i=this.getLinkPath(a);if(!i)return n(new Error("Cannot find file. Invalid markdown link: "+a),null);let r=app.metadataCache.getFirstLinkpathDest(i,this.sourceFile||"");if(!r)return n(new Error("Cannot find file. File not found: "+a),null);app.vault.cachedRead(r).then(o=>{let s={src:o,path:i,noCache:!0};n(null,s),this.emit("load",a,s)}).catch(o=>{n(o,null)})}},Ix=new pp,ar=new Wn.default.Environment(Ix,{autoescape:!1});ar.addFilter("setAttribute",function(e,t,a){return e[t]=a,e});ar.addFilter("filterby",oO);ar.addFilter("format",sO);ar.addExtension(Jt.id,new Jt);function bt(e,t,a){return new Promise((n,i)=>{Ix.setSourceFile(e),ar.renderString(t,a,(r,o)=>{if(r)return i(r);n(o)})})}var lO=` +`.charCodeAt(),a=typeof e=="string"?"\r":"\r".charCodeAt();return e[e.length-1]===t&&(e=e.slice(0,-1)),e[e.length-1]===a&&(e=e.slice(0,-1)),e}var Xi=_e(require("node:process"),1),Gn=_e(require("node:path"),1),Cg=_e(require("node:url"),1);function ds(e={}){let{env:t=process.env,platform:a=process.platform}=e;return a!=="win32"?"PATH":Object.keys(t).reverse().find(n=>n.toUpperCase()==="PATH")||"Path"}function fP(e={}){let{cwd:t=Xi.default.cwd(),path:a=Xi.default.env[ds()],execPath:n=Xi.default.execPath}=e,i,r=t instanceof URL?Cg.default.fileURLToPath(t):t,o=Gn.default.resolve(r),s=[];for(;i!==o;)s.push(Gn.default.join(o,"node_modules/.bin")),i=o,o=Gn.default.resolve(o,"..");return s.push(Gn.default.resolve(r,n,"..")),[...s,a].join(Gn.default.delimiter)}function Ag({env:e=Xi.default.env,...t}={}){e={...e};let a=ds({env:e});return t.path=e[a],e[a]=fP(t),e}var mP=(e,t,a,n)=>{if(a==="length"||a==="prototype"||a==="arguments"||a==="caller")return;let i=Object.getOwnPropertyDescriptor(e,a),r=Object.getOwnPropertyDescriptor(t,a);!hP(i,r)&&n||Object.defineProperty(e,a,r)},hP=function(e,t){return e===void 0||e.configurable||e.writable===t.writable&&e.enumerable===t.enumerable&&e.configurable===t.configurable&&(e.writable||e.value===t.value)},vP=(e,t)=>{let a=Object.getPrototypeOf(t);a!==Object.getPrototypeOf(e)&&Object.setPrototypeOf(e,a)},bP=(e,t)=>`/* Wrapped ${e}*/ +${t}`,gP=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),xP=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),yP=(e,t,a)=>{let n=a===""?"":`with ${a.trim()}() `,i=bP.bind(null,n,t.toString());Object.defineProperty(i,"name",xP),Object.defineProperty(e,"toString",{...gP,value:i})};function Zu(e,t,{ignoreNonConfigurable:a=!1}={}){let{name:n}=e;for(let i of Reflect.ownKeys(t))mP(e,t,i,a);return vP(e,t),yP(e,t,n),e}var fs=new WeakMap,Ig=(e,t={})=>{if(typeof e!="function")throw new TypeError("Expected a function");let a,n=0,i=e.displayName||e.name||"<anonymous>",r=function(...o){if(fs.set(r,++n),n===1)a=e.apply(this,o),e=null;else if(t.throw===!0)throw new Error(`Function \`${i}\` can only be called once`);return a};return Zu(r,e),fs.set(r,n),r};Ig.callCount=e=>{if(!fs.has(e))throw new Error(`The given function \`${e.name}\` is not wrapped by the \`onetime\` package`);return fs.get(e)};var _g=Ig;var Rg=require("node:os");var Tg=()=>{let e=Fg-kg+1;return Array.from({length:e},wP)},wP=(e,t)=>({name:`SIGRT${t+1}`,number:kg+t,action:"terminate",description:"Application-specific signal (realtime)",standard:"posix"}),kg=34,Fg=64;var Og=require("node:os");var Pg=[{name:"SIGHUP",number:1,action:"terminate",description:"Terminal closed",standard:"posix"},{name:"SIGINT",number:2,action:"terminate",description:"User interruption with CTRL-C",standard:"ansi"},{name:"SIGQUIT",number:3,action:"core",description:"User interruption with CTRL-\\",standard:"posix"},{name:"SIGILL",number:4,action:"core",description:"Invalid machine instruction",standard:"ansi"},{name:"SIGTRAP",number:5,action:"core",description:"Debugger breakpoint",standard:"posix"},{name:"SIGABRT",number:6,action:"core",description:"Aborted",standard:"ansi"},{name:"SIGIOT",number:6,action:"core",description:"Aborted",standard:"bsd"},{name:"SIGBUS",number:7,action:"core",description:"Bus error due to misaligned, non-existing address or paging error",standard:"bsd"},{name:"SIGEMT",number:7,action:"terminate",description:"Command should be emulated but is not implemented",standard:"other"},{name:"SIGFPE",number:8,action:"core",description:"Floating point arithmetic error",standard:"ansi"},{name:"SIGKILL",number:9,action:"terminate",description:"Forced termination",standard:"posix",forced:!0},{name:"SIGUSR1",number:10,action:"terminate",description:"Application-specific signal",standard:"posix"},{name:"SIGSEGV",number:11,action:"core",description:"Segmentation fault",standard:"ansi"},{name:"SIGUSR2",number:12,action:"terminate",description:"Application-specific signal",standard:"posix"},{name:"SIGPIPE",number:13,action:"terminate",description:"Broken pipe or socket",standard:"posix"},{name:"SIGALRM",number:14,action:"terminate",description:"Timeout or timer",standard:"posix"},{name:"SIGTERM",number:15,action:"terminate",description:"Termination",standard:"ansi"},{name:"SIGSTKFLT",number:16,action:"terminate",description:"Stack is empty or overflowed",standard:"other"},{name:"SIGCHLD",number:17,action:"ignore",description:"Child process terminated, paused or unpaused",standard:"posix"},{name:"SIGCLD",number:17,action:"ignore",description:"Child process terminated, paused or unpaused",standard:"other"},{name:"SIGCONT",number:18,action:"unpause",description:"Unpaused",standard:"posix",forced:!0},{name:"SIGSTOP",number:19,action:"pause",description:"Paused",standard:"posix",forced:!0},{name:"SIGTSTP",number:20,action:"pause",description:'Paused using CTRL-Z or "suspend"',standard:"posix"},{name:"SIGTTIN",number:21,action:"pause",description:"Background process cannot read terminal input",standard:"posix"},{name:"SIGBREAK",number:21,action:"terminate",description:"User interruption with CTRL-BREAK",standard:"other"},{name:"SIGTTOU",number:22,action:"pause",description:"Background process cannot write to terminal output",standard:"posix"},{name:"SIGURG",number:23,action:"ignore",description:"Socket received out-of-band data",standard:"bsd"},{name:"SIGXCPU",number:24,action:"core",description:"Process timed out",standard:"bsd"},{name:"SIGXFSZ",number:25,action:"core",description:"File too big",standard:"bsd"},{name:"SIGVTALRM",number:26,action:"terminate",description:"Timeout or timer",standard:"bsd"},{name:"SIGPROF",number:27,action:"terminate",description:"Timeout or timer",standard:"bsd"},{name:"SIGWINCH",number:28,action:"ignore",description:"Terminal window size changed",standard:"bsd"},{name:"SIGIO",number:29,action:"terminate",description:"I/O is available",standard:"other"},{name:"SIGPOLL",number:29,action:"terminate",description:"Watched event",standard:"other"},{name:"SIGINFO",number:29,action:"ignore",description:"Request for process information",standard:"other"},{name:"SIGPWR",number:30,action:"terminate",description:"Device running out of power",standard:"systemv"},{name:"SIGSYS",number:31,action:"core",description:"Invalid system call",standard:"other"},{name:"SIGUNUSED",number:31,action:"terminate",description:"Invalid system call",standard:"other"}];var qu=()=>{let e=Tg();return[...Pg,...e].map(EP)},EP=({name:e,number:t,description:a,action:n,forced:i=!1,standard:r})=>{let{signals:{[e]:o}}=Og.constants,s=o!==void 0;return{name:e,number:s?o:t,description:a,supported:s,action:n,forced:i,standard:r}};var SP=()=>{let e=qu();return Object.fromEntries(e.map(CP))},CP=({name:e,number:t,description:a,supported:n,action:i,forced:r,standard:o})=>[e,{name:e,number:t,description:a,supported:n,action:i,forced:r,standard:o}],Bg=SP(),AP=()=>{let e=qu(),t=64+1,a=Array.from({length:t},(n,i)=>IP(i,e));return Object.assign({},...a)},IP=(e,t)=>{let a=_P(e,t);if(a===void 0)return{};let{name:n,description:i,supported:r,action:o,forced:s,standard:l}=a;return{[e]:{name:n,number:e,description:i,supported:r,action:o,forced:s,standard:l}}},_P=(e,t)=>{let a=t.find(({name:n})=>Rg.constants.signals[n]===e);return a!==void 0?a:t.find(n=>n.number===e)},rz=AP();var TP=({timedOut:e,timeout:t,errorCode:a,signal:n,signalDescription:i,exitCode:r,isCanceled:o})=>e?`timed out after ${t} milliseconds`:o?"was canceled":a!==void 0?`failed with ${a}`:n!==void 0?`was killed with ${n} (${i})`:r!==void 0?`failed with exit code ${r}`:"failed",$i=({stdout:e,stderr:t,all:a,error:n,signal:i,exitCode:r,command:o,escapedCommand:s,timedOut:l,isCanceled:u,killed:c,parsed:{options:{timeout:f}}})=>{r=r===null?void 0:r,i=i===null?void 0:i;let p=i===void 0?void 0:Bg[i].description,b=n&&n.code,m=`Command ${TP({timedOut:l,timeout:f,errorCode:b,signal:i,signalDescription:p,exitCode:r,isCanceled:u})}: ${o}`,h=Object.prototype.toString.call(n)==="[object Error]",v=h?`${m} +${n.message}`:m,x=[v,t,e].filter(Boolean).join(` +`);return h?(n.originalMessage=n.message,n.message=x):n=new Error(x),n.shortMessage=v,n.command=o,n.escapedCommand=s,n.exitCode=r,n.signal=i,n.signalDescription=p,n.stdout=e,n.stderr=t,a!==void 0&&(n.all=a),"bufferedData"in n&&delete n.bufferedData,n.failed=!0,n.timedOut=!!l,n.isCanceled=u,n.killed=c&&!l,n};var ms=["stdin","stdout","stderr"],kP=e=>ms.some(t=>e[t]!==void 0),Ng=e=>{if(!e)return;let{stdio:t}=e;if(t===void 0)return ms.map(n=>e[n]);if(kP(e))throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${ms.map(n=>`\`${n}\``).join(", ")}`);if(typeof t=="string")return t;if(!Array.isArray(t))throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof t}\``);let a=Math.max(t.length,ms.length);return Array.from({length:a},(n,i)=>t[i])};var jg=_e(require("node:os"),1),Lg=_e(eu(),1),FP=1e3*5,Mg=(e,t="SIGTERM",a={})=>{let n=e(t);return PP(e,t,a,n),n},PP=(e,t,a,n)=>{if(!OP(t,a,n))return;let i=BP(a),r=setTimeout(()=>{e("SIGKILL")},i);r.unref&&r.unref()},OP=(e,{forceKillAfterTimeout:t},a)=>RP(e)&&t!==!1&&a,RP=e=>e===jg.default.constants.signals.SIGTERM||typeof e=="string"&&e.toUpperCase()==="SIGTERM",BP=({forceKillAfterTimeout:e=!0})=>{if(e===!0)return FP;if(!Number.isFinite(e)||e<0)throw new TypeError(`Expected the \`forceKillAfterTimeout\` option to be a non-negative integer, got \`${e}\` (${typeof e})`);return e},Dg=(e,t)=>{e.kill()&&(t.isCanceled=!0)},NP=(e,t,a)=>{e.kill(t),a(Object.assign(new Error("Timed out"),{timedOut:!0,signal:t}))},zg=(e,{timeout:t,killSignal:a="SIGTERM"},n)=>{if(t===0||t===void 0)return n;let i,r=new Promise((s,l)=>{i=setTimeout(()=>{NP(e,a,l)},t)}),o=n.finally(()=>{clearTimeout(i)});return Promise.race([r,o])},Gg=({timeout:e})=>{if(e!==void 0&&(!Number.isFinite(e)||e<0))throw new TypeError(`Expected the \`timeout\` option to be a non-negative integer, got \`${e}\` (${typeof e})`)},Hg=async(e,{cleanup:t,detached:a},n)=>{if(!t||a)return n;let i=(0,Lg.default)(()=>{e.kill()});return n.finally(()=>{i()})};var Wg=require("node:fs"),Vg=require("node:child_process");function hs(e){return e!==null&&typeof e=="object"&&typeof e.pipe=="function"}function Xu(e){return hs(e)&&e.writable!==!1&&typeof e._write=="function"&&typeof e._writableState=="object"}var jP=e=>e instanceof Vg.ChildProcess&&typeof e.then=="function",$u=(e,t,a)=>{if(typeof a=="string")return e[t].pipe((0,Wg.createWriteStream)(a)),e;if(Xu(a))return e[t].pipe(a),e;if(!jP(a))throw new TypeError("The second argument must be a string, a stream or an Execa child process.");if(!Xu(a.stdin))throw new TypeError("The target child process's stdin must be available.");return e[t].pipe(a.stdin),a},Ug=e=>{e.stdout!==null&&(e.pipeStdout=$u.bind(void 0,e,"stdout")),e.stderr!==null&&(e.pipeStderr=$u.bind(void 0,e,"stderr")),e.all!==void 0&&(e.pipeAll=$u.bind(void 0,e,"all"))};var bs=require("node:fs");var ep=_e(qg(),1),Xg=_e(au(),1),$g=e=>{if(e!==void 0)throw new TypeError("The `input` and `inputFile` options cannot be both set.")},WP=({input:e,inputFile:t})=>typeof t!="string"?e:($g(e),(0,bs.readFileSync)(t)),Yg=e=>{let t=WP(e);if(hs(t))throw new TypeError("The `input` option cannot be a stream in sync mode");return t},VP=({input:e,inputFile:t})=>typeof t!="string"?e:($g(e),(0,bs.createReadStream)(t)),Kg=(e,t)=>{let a=VP(t);a!==void 0&&(hs(a)?a.pipe(e.stdin):e.stdin.end(a))},Qg=(e,{all:t})=>{if(!t||!e.stdout&&!e.stderr)return;let a=(0,Xg.default)();return e.stdout&&a.add(e.stdout),e.stderr&&a.add(e.stderr),a},Ku=async(e,t)=>{if(!(!e||t===void 0)){e.destroy();try{return await t}catch(a){return a.bufferedData}}},Qu=(e,{encoding:t,buffer:a,maxBuffer:n})=>{if(!(!e||!a))return t?(0,ep.default)(e,{encoding:t,maxBuffer:n}):ep.default.buffer(e,{maxBuffer:n})},ex=async({stdout:e,stderr:t,all:a},{encoding:n,buffer:i,maxBuffer:r},o)=>{let s=Qu(e,{encoding:n,buffer:i,maxBuffer:r}),l=Qu(t,{encoding:n,buffer:i,maxBuffer:r}),u=Qu(a,{encoding:n,buffer:i,maxBuffer:r*2});try{return await Promise.all([o,s,l,u])}catch(c){return Promise.all([{error:c,signal:c.signal,timedOut:c.timedOut},Ku(e,s),Ku(t,l),Ku(a,u)])}};var UP=(async()=>{})().constructor.prototype,JP=["then","catch","finally"].map(e=>[e,Reflect.getOwnPropertyDescriptor(UP,e)]),tp=(e,t)=>{for(let[a,n]of JP){let i=typeof t=="function"?(...r)=>Reflect.apply(n.value,t(),r):n.value.bind(t);Reflect.defineProperty(e,a,{...n,value:i})}},tx=e=>new Promise((t,a)=>{e.on("exit",(n,i)=>{t({exitCode:n,signal:i})}),e.on("error",n=>{a(n)}),e.stdin&&e.stdin.on("error",n=>{a(n)})});var ix=require("node:buffer"),rx=require("node:child_process"),ox=(e,t=[])=>Array.isArray(t)?[e,...t]:[e],ZP=/^[\w.-]+$/,qP=/"/g,XP=e=>typeof e!="string"||ZP.test(e)?e:`"${e.replace(qP,'\\"')}"`,ap=(e,t)=>ox(e,t).join(" "),np=(e,t)=>ox(e,t).map(a=>XP(a)).join(" "),$P=/ +/g;var ax=e=>{let t=typeof e;if(t==="string")return e;if(t==="number")return String(e);if(t==="object"&&e!==null&&!(e instanceof rx.ChildProcess)&&"stdout"in e){let a=typeof e.stdout;if(a==="string")return e.stdout;if(ix.Buffer.isBuffer(e.stdout))return e.stdout.toString();throw new TypeError(`Unexpected "${a}" stdout in template expression`)}throw new TypeError(`Unexpected "${t}" in template expression`)},nx=(e,t,a)=>a||e.length===0||t.length===0?[...e,...t]:[...e.slice(0,-1),`${e[e.length-1]}${t[0]}`,...t.slice(1)],YP=({templates:e,expressions:t,tokens:a,index:n,template:i})=>{let r=i!=null?i:e.raw[n],o=r.split($P).filter(Boolean),s=nx(a,o,r.startsWith(" "));if(n===t.length)return s;let l=t[n],u=Array.isArray(l)?l.map(c=>ax(c)):[ax(l)];return nx(s,u,r.endsWith(" "))},ip=(e,t)=>{let a=[];for(let[n,i]of e.entries())a=YP({templates:e,expressions:t,tokens:a,index:n,template:i});return a};var sx=require("node:util"),lx=_e(require("node:process"),1),cx=(0,sx.debuglog)("execa").enabled,gs=(e,t)=>String(e).padStart(t,"0"),KP=()=>{let e=new Date;return`${gs(e.getHours(),2)}:${gs(e.getMinutes(),2)}:${gs(e.getSeconds(),2)}.${gs(e.getMilliseconds(),3)}`},rp=(e,{verbose:t})=>{t&&lx.default.stderr.write(`[${KP()}] ${e} +`)};var QP=1e3*1e3*100,eO=({env:e,extendEnv:t,preferLocal:a,localDir:n,execPath:i})=>{let r=t?{...Ki.default.env,...e}:e;return a?Ag({env:r,cwd:n,execPath:i}):r},mx=(e,t,a={})=>{let n=fx.default._parse(e,t,a);return e=n.command,t=n.args,a=n.options,a={maxBuffer:QP,buffer:!0,stripFinalNewline:!0,extendEnv:!0,preferLocal:!1,localDir:a.cwd||Ki.default.cwd(),execPath:Ki.default.execPath,encoding:"utf8",reject:!0,cleanup:!0,all:!1,windowsHide:!0,verbose:cx,...a},a.env=eO(a),a.stdio=Ng(a),Ki.default.platform==="win32"&&dx.default.basename(e,".exe")==="cmd"&&t.unshift("/q"),{file:e,args:t,options:a,parsed:n}},Qi=(e,t,a)=>typeof t!="string"&&!px.Buffer.isBuffer(t)?a===void 0?void 0:"":e.stripFinalNewline?Ju(t):t;function er(e,t,a){let n=mx(e,t,a),i=ap(e,t),r=np(e,t);rp(r,n.options),Gg(n.options);let o;try{o=xs.default.spawn(n.file,n.args,n.options)}catch(b){let d=new xs.default.ChildProcess,m=Promise.reject($i({error:b,stdout:"",stderr:"",all:"",command:i,escapedCommand:r,parsed:n,timedOut:!1,isCanceled:!1,killed:!1}));return tp(d,m),d}let s=tx(o),l=zg(o,n.options,s),u=Hg(o,n.options,l),c={isCanceled:!1};o.kill=Mg.bind(null,o.kill.bind(o)),o.cancel=Dg.bind(null,o,c);let p=_g(async()=>{let[{error:b,exitCode:d,signal:m,timedOut:h},v,x,E]=await ex(o,n.options,u),g=Qi(n.options,v),w=Qi(n.options,x),C=Qi(n.options,E);if(b||d!==0||m!==null){let y=$i({error:b,exitCode:d,signal:m,stdout:g,stderr:w,all:C,command:i,escapedCommand:r,parsed:n,timedOut:h,isCanceled:c.isCanceled||(n.options.signal?n.options.signal.aborted:!1),killed:o.killed});if(!n.options.reject)return y;throw y}return{command:i,escapedCommand:r,exitCode:0,stdout:g,stderr:w,all:C,failed:!1,timedOut:!1,isCanceled:!1,killed:!1}});return Kg(o,n.options),o.all=Qg(o,n.options),Ug(o),tp(o,p),o}function tO(e,t,a){let n=mx(e,t,a),i=ap(e,t),r=np(e,t);rp(r,n.options);let o=Yg(n.options),s;try{s=xs.default.spawnSync(n.file,n.args,{...n.options,input:o})}catch(c){throw $i({error:c,stdout:"",stderr:"",all:"",command:i,escapedCommand:r,parsed:n,timedOut:!1,isCanceled:!1,killed:!1})}let l=Qi(n.options,s.stdout,s.error),u=Qi(n.options,s.stderr,s.error);if(s.error||s.status!==0||s.signal!==null){let c=$i({stdout:l,stderr:u,error:s.error,signal:s.signal,exitCode:s.status,command:i,escapedCommand:r,parsed:n,timedOut:s.error&&s.error.code==="ETIMEDOUT",isCanceled:!1,killed:s.signal!==null});if(!n.options.reject)return c;throw c}return{command:i,escapedCommand:r,exitCode:0,stdout:l,stderr:u,failed:!1,timedOut:!1,isCanceled:!1,killed:!1}}var aO=({input:e,inputFile:t,stdio:a})=>e===void 0&&t===void 0&&a===void 0?{stdin:"inherit"}:{},ux=(e={})=>({preferLocal:!0,...aO(e),...e});function hx(e){function t(a,...n){if(!Array.isArray(a))return hx({...e,...a});let[i,...r]=ip(a,n);return er(i,r,ux(e))}return t.sync=(a,...n)=>{if(!Array.isArray(a))throw new TypeError("Please use $(options).sync`command` instead of $.sync(options)`command`.");let[i,...r]=ip(a,n);return tO(i,r,ux(e))},t}var Bz=hx();var lt=_e(require("fs")),op=require("obsidian"),tn=_e(require("os")),Lt=_e(require("path"));function sp(){return require("electron").remote.BrowserWindow.getFocusedWindow()}function lp(e){return e<10?`0${e}`:e.toString()}function an(){return app.vault.adapter.getBasePath()}function _t(){return Lt.default.join(an(),"./.obsidian/plugins/obsidian-zotero-desktop-connector/")}function nn(){return tn.default.platform()==="win32"?"pdfannots2json.exe":`pdfannots2json-${tn.default.platform()}-${tn.default.arch()}`}function vx(){tn.default.platform()!=="win32"&<.default.renameSync(Lt.default.join(_t(),cp()),Lt.default.join(_t(),nn()))}function cp(){return tn.default.platform()==="win32"?"pdfannots2json.exe":"pdfannots2json"}function bx(){return tn.default.platform()==="win32"?"pdf-annots2json.exe":"pdf-annots2json"}function Hn(e){return e?lt.default.existsSync(e):lt.default.existsSync(Lt.default.join(_t(),nn()))}function gx(e){return e?lt.default.existsSync(e):lt.default.existsSync(Lt.default.join(_t(),cp()))}function xx(){return lt.default.existsSync(Lt.default.join(_t(),bx()))}function yx(){lt.default.rmSync(Lt.default.join(_t(),nn()))}function wx(){lt.default.rmSync(Lt.default.join(_t(),cp()))}function Ex(){lt.default.rmSync(Lt.default.join(_t(),bx()))}async function Sx(e){try{let t=await er(e||Lt.default.join(_t(),nn()),["-v"]);if(t.stderr&&!t.stderr.includes("warning"))throw new op.Notice(`Error checking PDF utility version: ${t.stderr}`,1e4),new Error(t.stderr);return t.stdout.trim()}catch(t){throw console.error(t),new op.Notice(`Error checking PDF utility version: ${t.message}`,1e4),t}}function nO(e=0){return e|lt.default.constants.S_IXUSR|lt.default.constants.S_IXGRP|lt.default.constants.S_IXOTH}function iO(e){if(console.error("Error: pdfannots2json not executable",e),e.code==="ENOENT")return!1}function Cx(e){let t=e||Lt.default.join(_t(),nn());try{return lt.default.accessSync(t,lt.default.constants.X_OK),!0}catch(a){}try{let a=lt.default.statSync(t);return lt.default.chmodSync(t,nO(a.mode)),!0}catch(a){return iO(a)}}var Tx=require("obsidian");var Wn=_e(Ax()),ys=require("obsidian");Wn.default.runtime.memberLookup=function(t,a){if(t!=null)return a=="__proto__"||a=="constructor"?function(){return function(){}}:typeof t[a]=="function"?(...n)=>t[a].apply(t,n):t[a]};function rO(e){return e?e.split("."):[]}function oO(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function sO(e){let t=rO(e);return function(n){let i=n;for(let r=0;r<t.length;r++){let o=t[r];if(oO(i,o))i=i[o];else return}return i}}function lO(e,t,a,...n){let i=sO(t);return n.length===0?e:e.filter(r=>{let o=typeof r=="string"?r:i(r);return o?typeof n[0]=="string"&&["startswith","endswith","contains"].includes(a)?(o=o.toString().toLocaleLowerCase(),n.some(s=>{let l=s.toLocaleLowerCase();return a==="startswith"?o.startsWith(l):a==="endswith"?o.endsWith(l):a==="contains"?o.includes(l):!0})):["dateafter","dateonorafter","datebefore","dateonorbefore"].includes(a)?n.some(s=>{if(!ys.moment.isMoment(o)||!ys.moment.isMoment(s))return!1;switch(a){case"dateafter":return o.isAfter(s);case"dateonorafter":return o.isSameOrAfter(s);case"datebefore":return o.isBefore(s);case"dateonorbefore":return o.isSameOrBefore(s)}}):!1:!1})}function cO(e,t){return e instanceof ys.moment?e.format(t):"Error: `format` can only be applied to dates. Tried for format "+typeof e}var Kt=class{constructor(){this.tags=["persist"]}parse(t,a){let n=t.nextToken(),i=t.parseSignature(null,!0);t.advanceAfterBlockEnd(n.value);let r=t.parseUntilBlocks("endpersist");return t.advanceAfterBlockEnd(),new a.CallExtension(this,"run",i,[r])}run(t,a,n){var o;let i="";(o=t==null?void 0:t.ctx)!=null&&o._retained&&t.ctx._retained[a]&&(i=t.ctx._retained[a]);let r=n();return i&&(r=r.trimStart()),new Wn.default.runtime.SafeString(`%% begin ${a} %%${i}${r}%% end ${a} %%`)}static hasPersist(t){return/%% begin (.+?) %%([\w\W]*?)%% end \1 %%/gi.test(t)}static prepareTemplateData(t,a){let n={};if(!a)return t;let i=a.matchAll(/%% begin (.+?) %%([\w\W]*?)%% end \1 %%/gi);for(let r of i)n[r[1]]=r[2];return{...t,_retained:n}}};Kt.id="PersistExtension";var pp=class extends Wn.Loader{constructor(){super(...arguments);this.async=!0}setSourceFile(a){this.sourceFile=a}getLinkPath(a){let n=a.trim().match(/^\[\[([^\]]+)\]\]$/);return n||(n=a.trim().match(/^\[[^\]]*\]\(([^)]+)\)$/),n)?n[1]:null}getSource(a,n){let i=this.getLinkPath(a);if(!i)return n(new Error("Cannot find file. Invalid markdown link: "+a),null);let r=app.metadataCache.getFirstLinkpathDest(i,this.sourceFile||"");if(!r)return n(new Error("Cannot find file. File not found: "+a),null);app.vault.cachedRead(r).then(o=>{let s={src:o,path:i,noCache:!0};n(null,s),this.emit("load",a,s)}).catch(o=>{n(o,null)})}},Ix=new pp,ar=new Wn.default.Environment(Ix,{autoescape:!1});ar.addFilter("setAttribute",function(e,t,a){return e[t]=a,e});ar.addFilter("filterby",lO);ar.addFilter("format",cO);ar.addExtension(Kt.id,new Kt);function bt(e,t,a){return new Promise((n,i)=>{Ix.setSourceFile(e),ar.renderString(t,a,(r,o)=>{if(r)return i(r);n(o)})})}var uO=` {%- if creators and creators.length > 0 -%} {%- for creator in creators -%} {%- if creator.name -%} @@ -60,14 +60,14 @@ ${n.message}`:h,x=[v,t,e].filter(Boolean).join(` {% if not loop.last %}, {% endif %} {%- endfor -%} {%- endif -%} -`,cO=` +`,pO=` {%- if attachments and attachments.length > 0 -%} {%- set file = attachments | filterby("path", "endswith", ".pdf") | first -%} {%- if file and file.path and file.path.endsWith(".pdf") -%} [{{file.title}}](file://{{file.path | replace(" ", "%20")}}) {%- endif -%} {%- endif -%} -`,uO=` +`,dO=` {%- if attachments and attachments.length > 0 -%} {%- set file = attachments | filterby("path", "endswith", ".pdf") | first -%} {%- if file and file.path and file.path.endsWith(".pdf") -%} @@ -93,29 +93,29 @@ ${n.message}`:h,x=[v,t,e].filter(Boolean).join(` {% endfor -%} {%- endif -%} {%- endif -%} -`;async function ws(e,t){var r,o,s;if(!t)return t;let a=(t.creators||[]).reduce((l,u)=>(l[u.creatorType]||(l[u.creatorType]=[]),l[u.creatorType].push(u),l),{});await Promise.all(Object.keys(a).map(async l=>{t[`${l}s`]=(await bt(e,lO,{creators:a[l]})).trim()}));let n=(await bt(e,cO,t)).trim();n&&(t.pdfLink=n);let i=(await bt(e,uO,t)).trim();if(i&&(t.pdfZoteroLink=i),(r=t.notes)!=null&&r.length){let l=t.notes.reduce((u,c)=>c.note?`${u} +`;async function ws(e,t){var r,o,s;if(!t)return t;let a=(t.creators||[]).reduce((l,u)=>(l[u.creatorType]||(l[u.creatorType]=[]),l[u.creatorType].push(u),l),{});await Promise.all(Object.keys(a).map(async l=>{t[`${l}s`]=(await bt(e,uO,{creators:a[l]})).trim()}));let n=(await bt(e,pO,t)).trim();n&&(t.pdfLink=n);let i=(await bt(e,dO,t)).trim();if(i&&(t.pdfZoteroLink=i),(r=t.notes)!=null&&r.length){let l=t.notes.reduce((u,c)=>c.note?`${u} -${c.note.trim()}`:u,"").trim();l&&(t.markdownNotes=l)}return(o=t.tags)!=null&&o.length&&(t.allTags=t.tags.map(l=>l.tag).join(", "),t.hashTags=t.tags.map(l=>`#${l.tag.replace(/\s+/g,"-")}`).join(", ")),(s=t.annotations)!=null&&s.length&&(t.formattedAnnotationsNew=(await bt(e,_x,t)).trim(),t.formattedAnnotations=(await bt(e,_x,{...t,lastExportDate:(0,Tx.moment)(0)})).trim()),t}var Pa=require("obsidian");var kx=require("obsidian"),nt=class extends kx.Modal{constructor(a,n){super(a);this.message=n}onOpen(){this.contentEl.createDiv({text:this.message})}onClose(){this.contentEl.empty()}};var Es=_e(require("path")),Mt={"Content-Type":"application/json","User-Agent":"obsidian/zotero",Accept:"application/json",Connection:"keep-alive"};function Dt(e,t){return e==="Zotero"?"23119":e==="Juris-M"?"24119":t||"23119"}async function Ss(e){let t=Es.default.dirname(e);await app.vault.adapter.exists(t)||await app.vault.createFolder(t)}var pO=/\s*[*?]+\s*/g,dO=/\s*[:"<>|]+\s*/g;function Fx(e){return e.replace(pO," ").trim().replace(dO," - ").trim()}function Vn(e){let t=Es.default.parse(e),a=Fx(t.dir),n=Fx(t.name);return Es.default.join(a,`${n}${t.ext}`)}function fO(e){let t="0",a="0",n="0";e.length==4?(t="0x"+e[1]+e[1],a="0x"+e[2]+e[2],n="0x"+e[3]+e[3]):e.length==7&&(t="0x"+e[1]+e[2],a="0x"+e[3]+e[4],n="0x"+e[5]+e[6]);let i=+t/255,r=+a/255,o=+n/255,s=Math.min(i,r,o),l=Math.max(i,r,o),u=l-s,c=0,f=0,p=0;return u==0?c=0:l==i?c=(r-o)/u%6:l==r?c=(o-i)/u+2:c=(i-r)/u+4,c=Math.round(c*60),c<0&&(c+=360),p=(l+s)/2,f=u==0?0:u/(1-Math.abs(2*p-1)),f=+(f*100).toFixed(1),p=+(p*100).toFixed(1),{h:c,s:f,l:p}}function Px(e){let{h:t,s:a,l:n}=fO(e);return n<12?"Black":n>98?"White":a<2?"Gray":t<15?"Red":t<45?"Orange":t<65?"Yellow":t<170?"Green":t<190?"Cyan":t<263?"Blue":t<280?"Purple":t<335?"Magenta":"Red"}function Qt(e,t,a){let n=t.split("/").pop(),i=`zotero://${e}`,r="";if(/group/.test(t)?r=t.replace("http://zotero.org",i):r=`${i}/library/items/${n}`,a){let o=new URLSearchParams(a);r+=`?${o}`}return r}var Pe=require("obsidian");var dp=class e{constructor(t){this.compare=t;this.heapArray=[];this._limit=0}static getChildrenIndexOf(t){return[t*2+1,t*2+2]}static getParentIndexOf(t){if(t<=0)return-1;let a=t%2?1:2;return Math.floor((t-a)/2)}push(t){return this._sortNodeUp(this.heapArray.push(t)-1),!0}length(){return this.heapArray.length}peek(){return this.heapArray[0]}pop(){let t=this.heapArray.pop();return this.length()>0&&t!==void 0?this.replace(t):t}replace(t){let a=this.heapArray[0];return this.heapArray[0]=t,this._sortNodeDown(0),a}size(){return this.length()}_moveNode(t,a){[this.heapArray[t],this.heapArray[a]]=[this.heapArray[a],this.heapArray[t]]}_sortNodeDown(t){let a=t<this.heapArray.length-1,n=this.heapArray[t],i=(r,o)=>(this.heapArray.length>o&&this.compare(this.heapArray[o],this.heapArray[r])<0&&(r=o),r);for(;a;){let r=e.getChildrenIndexOf(t),o=r.reduce(i,r[0]),s=this.heapArray[o];typeof s!="undefined"&&this.compare(n,s)>0?(this._moveNode(t,o),t=o):a=!1}}_sortNodeUp(t){let a=t>0;for(;a;){let n=e.getParentIndexOf(t);n>=0&&this.compare(this.heapArray[n],this.heapArray[t])>0?(this._moveNode(t,n),t=n):a=!1}}};function mO(e,t){return e.prio-t.prio||e.counter-t.counter}var fp=class{constructor(t,a){this.maxConcurrent=t||1,this.minCycle=a||0,this.queueRunning=new Map,this.queueWaiting=new dp(mO),this.lastRun=0,this.nextTimer=null,this.counter=0}tryRun(){for(;this.queueWaiting.size()>0&&this.queueRunning.size<this.maxConcurrent;){if(Date.now()-this.lastRun<this.minCycle){this.nextTimer===null&&(this.nextTimer=new Promise(a=>activeWindow.setTimeout(()=>{this.nextTimer=null,this.tryRun(),a()},this.minCycle-Date.now()+this.lastRun)));return}let t=this.queueWaiting.pop();if(t!==void 0){let a,i={wait:new Promise(o=>{a=o}),signal:a},r={hash:t.hash,prio:t.prio,finish:i};if(this.queueRunning.has(t.hash))throw new Error("async-await-queue: duplicate hash "+t.hash);this.queueRunning.set(t.hash,r),this.lastRun=Date.now(),t.start.signal()}}}end(t){let a=this.queueRunning.get(t);if(a===void 0)throw new Error("async-await-queue: queue desync for "+t);this.queueRunning.delete(t),a.finish.signal(),this.tryRun()}async wait(t,a){let n=a!=null?a:0,i,r=new Promise(s=>{i=s}),o={hash:t,prio:n,start:{signal:i,wait:r},counter:this.counter++};this.queueWaiting.push(o),this.tryRun(),await r,this.lastRun=Date.now()}run(t,a){let n=a!=null?a:0,i=Symbol();return this.wait(i,n).then(t).finally(()=>{this.end(i)})}stat(){return{running:this.queueRunning.size,waiting:this.queueWaiting.size(),last:this.lastRun}}async flush(t){for(;this.queueRunning.size>0||this.queueWaiting.size()>0;){let a=this.queueWaiting.peek();if(a&&await a.start.wait,t!==void 0&&this.queueWaiting.size()<t)return;this.queueRunning.size>0&&await this.queueRunning.values().next().value.finish.wait}}},Ee=new fp(1);async function Ox(e,t){let a,n=new nt(app,"Fetching notes from Zotero...");n.open();let i=Symbol();try{await Ee.wait(i),a=await(0,Pe.request)({method:"POST",url:`http://127.0.0.1:${Dt(t.database,t.port)}/better-bibtex/json-rpc`,body:JSON.stringify({jsonrpc:"2.0",method:"item.notes",params:[e.map(r=>r.key)]}),headers:Mt})}catch(r){return console.error(r),n.close(),new Pe.Notice(`Error retrieving notes: ${r.message}`,1e4),Ee.end(i),null}Ee.end(i),n.close();try{return JSON.parse(a).result}catch(r){return console.error(r),new Pe.Notice(`Error retrieving notes: ${r.message}`,1e4),null}}async function Rx(e,t){let a,n=new nt(app,"Fetching collections from Zotero...");n.open();let i=Symbol();try{await Ee.wait(i),a=await(0,Pe.request)({method:"POST",url:`http://127.0.0.1:${Dt(t.database,t.port)}/better-bibtex/json-rpc`,body:JSON.stringify({jsonrpc:"2.0",method:"item.collections",params:[[e.key],!0]}),headers:Mt})}catch(r){return console.error(r),n.close(),new Pe.Notice(`Error retrieving notes: ${r.message}`,1e4),Ee.end(i),null}Ee.end(i),n.close();try{return JSON.parse(a).result[e.key].map(s=>{let l=s,u=[s.name];for(;l.parentCollection;)u.push(l.parentCollection.name),l=l.parentCollection;return{key:s.key,name:s.name,fullPath:u.reverse().join("/")}})}catch(r){return console.error(r),new Pe.Notice(`Error retrieving notes: ${r.message}`,1e4),null}}async function Cs(e,t){let a,n=new nt(app,"Fetching collections from Zotero...");n.open();let i=Symbol();try{await Ee.wait(i),a=await(0,Pe.request)({method:"POST",url:`http://127.0.0.1:${Dt(t.database,t.port)}/better-bibtex/json-rpc`,body:JSON.stringify({jsonrpc:"2.0",method:"item.attachments",params:[e.key]}),headers:Mt})}catch(r){return console.error(r),n.close(),new Pe.Notice(`Error retrieving notes: ${r.message}`,1e4),Ee.end(i),null}Ee.end(i),n.close();try{return JSON.parse(a).result}catch(r){return console.error(r),new Pe.Notice(`Error retrieving notes: ${r.message}`,1e4),null}}function Bx(e,t,a,n,i){return mp([e],t,a,n,i)}async function mp(e,t,a,n,i){var l;if(!e||!e.length)return null;let r,o;i||(o=new nt(app,"Fetching data from Zotero..."),o.open());let s=Symbol();try{let u={quickCopy:!0,contentType:"html"};a&&(delete u.quickCopy,u.id=a),await Ee.wait(s),r=await(0,Pe.request)({method:"POST",url:`http://127.0.0.1:${Dt(t.database,t.port)}/better-bibtex/json-rpc`,body:JSON.stringify({jsonrpc:"2.0",method:"item.bibliography",params:[e.map(c=>c.key),u,e[0].library]}),headers:Mt})}catch(u){return console.error(u),!i&&o.close(),new Pe.Notice(`Error retrieving formatted bibliography: ${u.message}`,1e4),Ee.end(s),null}Ee.end(s),!i&&o.close();try{let u=JSON.parse(r);if((l=u.error)!=null&&l.message)throw new Error(u.error.message);return n==="html"?u.result:(0,Pe.htmlToMarkdown)(u.result)}catch(u){console.error(u),console.error(`Response from BBT: ${r}`);let c=`Error converting formatted bibliography to markdown: ${u.message}`;return u.message.includes("element/document/fragment")&&(c="Error: Received empty bibliography from Zotero. Ensure Zotero's quick copy settings are set and the selected citation style is installed."),new Pe.Notice(c,1e4),null}}async function nr(e,t,a){var o;let n,i=new nt(app,"Fetching data from Zotero...");i.open();let r=Symbol();try{await Ee.wait(r),n=await(0,Pe.request)({method:"POST",url:`http://127.0.0.1:${Dt(t.database,t.port)}/better-bibtex/json-rpc`,body:JSON.stringify({jsonrpc:"2.0",method:"item.export",params:[e.map(s=>s.key),"36a3b0b5-bad0-4a04-b79b-441c7cef77db",a]}),headers:Mt})}catch(s){return console.error(s),i.close(),new Pe.Notice(`Error retrieving item data: ${s.message}`,1e4),Ee.end(r),null}Ee.end(r),i.close();try{let s=JSON.parse(n);if((o=s.error)!=null&&o.message)throw new Error(s.error.message);return JSON.parse(s.result[2]).items}catch(s){return console.error(s),new Pe.Notice(`Error retrieving item data: ${s.message}`,1e4),null}}async function Nx(e,t,a){let n,i=new nt(app,"Fetching data from Zotero...");i.open();let r={},o=[],s=Symbol();try{await Ee.wait(s),n=await(0,Pe.request)({method:"POST",url:`http://127.0.0.1:${Dt(a.database,a.port)}/better-bibtex/json-rpc`,body:JSON.stringify({jsonrpc:"2.0",method:"item.citationkey",params:[t.map(f=>{let p=f.split("/").pop();return o.push(p),r[p]=f,`${e}:${p}`})]}),headers:Mt})}catch(f){return console.error(f),i.close(),new Pe.Notice(`Error retrieving item data: ${f.message}`,1e4),Ee.end(s),null}Ee.end(s),i.close();let l={},u=[];try{let f=JSON.parse(n);Object.keys(f.result).forEach(p=>{let b=p.split(":").pop();f.result[p]?(u.push({key:f.result[p],library:e}),l[b]={citekey:f.result[p],uri:r[b]}):l[b]={uri:r[b]}})}catch(f){return console.error(f),new Pe.Notice(`Error retrieving item data: ${f.message}`,1e4),null}let c=u.length?await nr(u,a,e):[];return o.map(f=>{if(l[f].citekey){let p=c.find(b=>{var d;return((d=rn(b))==null?void 0:d.key)===l[f].citekey});if(p)return p}return l[f]})}async function jx(e,t){var r;let a,n=new nt(app,"Fetching data from Zotero...");n.open();let i=Symbol();try{await Ee.wait(i),a=await(0,Pe.request)({method:"POST",url:`http://127.0.0.1:${Dt(t.database,t.port)}/better-bibtex/json-rpc`,body:JSON.stringify({jsonrpc:"2.0",method:"item.export",params:[[e.key],"f4b52ab0-f878-4556-85a0-c7aeedd09dfc",e.library]}),headers:Mt})}catch(o){return console.error(o),n.close(),new Pe.Notice(`Error retrieving item data: ${o.message}`,1e4),Ee.end(i),null}Ee.end(i),n.close();try{let o=JSON.parse(a);if((r=o.error)!=null&&r.message)throw new Error(o.error.message);let l=JSON.parse(o.result[2]).map(u=>{let{issued:c}=u;if(!c||!c["date-parts"])return null;let f=c["date-parts"][0];return f.length?(0,Pe.moment)(`${f[0]}-${f[1]?lp(f[1]):"01"}-${f[2]?lp(f[2]):"01"}`,"YYYY-MM-DD"):null}).filter(u=>u);return l[0]?l[0]:null}catch(o){return console.error(o),new Pe.Notice(`Error retrieving item data: ${o.message}`,1e4),null}}function rn(e){return!e.citekey&&!e.citationKey?null:{key:e.citekey||e.citationKey,library:e.libraryID}}var As=!1,Lx=0;async function hp(e,t){if(As&&Date.now()-Lx<1e3*30)return As;let a;t||(a=new nt(app,"Fetching data from Zotero..."),a.open());let n=Symbol();try{await Ee.wait(n);let i=await(0,Pa.request)({method:"GET",url:`http://127.0.0.1:${Dt(e.database,e.port)}/better-bibtex/cayw?probe=true`,headers:Mt});return a==null||a.close(),As=i==="ready",Lx=Date.now(),Ee.end(n),As}catch(i){return a==null||a.close(),!t&&new Pa.Notice("Cannot connect to Zotero. Please ensure it is running and the Better BibTeX plugin is installed",1e4),Ee.end(n),!1}}function hO(e){switch(e.format){case"formatted-bibliography":return"format=formatted-bibliography";case"formatted-citation":return`format=formatted-citation${e.cslStyle?`&style=${e.cslStyle}`:""}`;case"pandoc":return`format=pandoc${e.brackets?"&brackets=true":""}`;case"latex":return`format=latex&command=${e.command||"cite"}`;case"biblatex":return`format=biblatex&command=${e.command||"autocite"}`}}async function Mx(e,t){let a=sp();if(!await hp(t))return null;let n=new nt(app,"Awaiting item selection from Zotero...");n.open();let i=Symbol();try{if(e.format==="formatted-bibliography"){n.close();let o=await on(t);return await mp(o,t,e.cslStyle)}await Ee.wait(i);let r=await(0,Pa.request)({method:"GET",url:`http://127.0.0.1:${Dt(t.database,t.port)}/better-bibtex/cayw?${hO(e)}`,headers:Mt});return a.show(),n.close(),Ee.end(i),r}catch(r){return a.show(),console.error(r),n.close(),new Pa.Notice(`Error processing citation: ${r.message}`,1e4),Ee.end(i),null}}async function on(e){try{let t=await vO(e);if(!t)return[];let a=t.map(n=>rn(n)).filter(n=>!!n);return a.length?a:[]}catch(t){return[]}}async function vO(e){let t=sp();if(!await hp(e))return null;let a=new nt(app,"Awaiting item selection from Zotero...");a.open();let n=Symbol();try{await Ee.wait(n);let i=await(0,Pa.request)({method:"GET",url:`http://127.0.0.1:${Dt(e.database,e.port)}/better-bibtex/cayw?format=translate&translator=36a3b0b5-bad0-4a04-b79b-441c7cef77db&exportNotes=false`,headers:Mt});return t.show(),a.close(),Ee.end(n),i?JSON.parse(i).items||[]:null}catch(i){return t.show(),console.error(i),a.close(),new Pa.Notice(`Error retrieving cite key: ${i.message}`,1e4),Ee.end(n),null}}var Oa=require("fs"),zt=require("obsidian"),cn=_e(require("path"));var sn=require("obsidian");function Is(e,t){if(!t)return null;let a=app.vault.getAbstractFileByPath(bp(t));return a?app.vault.cachedRead(a):(new sn.Notice(`Error: ${e} template not found ${t}`),null)}async function Dx(e){let{exportFormat:t}=e,a=!t.headerTemplatePath&&!t.annotationTemplatePath&&!t.footerTemplatePath;return t.templatePath||a?{template:await Is("",t.templatePath)}:{headerTemplate:await Is("Header",t.headerTemplatePath),annotationTemplate:await Is("Annotation",t.annotationTemplatePath),footerTemplate:await Is("Footer",t.footerTemplatePath)}}function zx(e){let t=e.match(/%% Import Date: (\S+) %%\n$/);return t&&t[1]?(0,sn.moment)(t[1]):(t=e.match(/%% Export Date: (\S+) %%\n$/),t&&t[1]?(0,sn.moment)(t[1]):(0,sn.moment)(0))}function vp(e){return e+` +${c.note.trim()}`:u,"").trim();l&&(t.markdownNotes=l)}return(o=t.tags)!=null&&o.length&&(t.allTags=t.tags.map(l=>l.tag).join(", "),t.hashTags=t.tags.map(l=>`#${l.tag.replace(/\s+/g,"-")}`).join(", ")),(s=t.annotations)!=null&&s.length&&(t.formattedAnnotationsNew=(await bt(e,_x,t)).trim(),t.formattedAnnotations=(await bt(e,_x,{...t,lastExportDate:(0,Tx.moment)(0)})).trim()),t}var Pa=require("obsidian");var kx=require("obsidian"),nt=class extends kx.Modal{constructor(a,n){super(a);this.message=n}onOpen(){this.contentEl.createDiv({text:this.message})}onClose(){this.contentEl.empty()}};var Es=_e(require("path")),Mt={"Content-Type":"application/json","User-Agent":"obsidian/zotero",Accept:"application/json",Connection:"keep-alive"};function Dt(e,t){return e==="Zotero"?"23119":e==="Juris-M"?"24119":t||"23119"}async function Ss(e){let t=Es.default.dirname(e);await app.vault.adapter.exists(t)||await app.vault.createFolder(t)}function Fx(e){return e.replace(/\s*[*?]+\s*/g," ").trim().replace(/\s*[:"<>|]+\s*/g," - ").trim()}function Vn(e){let t=Es.default.parse(e),a=Fx(t.dir),n=Fx(t.name);return Es.default.join(a,`${n}${t.ext}`)}function fO(e){let t="0",a="0",n="0";e.length==4?(t="0x"+e[1]+e[1],a="0x"+e[2]+e[2],n="0x"+e[3]+e[3]):e.length==7&&(t="0x"+e[1]+e[2],a="0x"+e[3]+e[4],n="0x"+e[5]+e[6]);let i=+t/255,r=+a/255,o=+n/255,s=Math.min(i,r,o),l=Math.max(i,r,o),u=l-s,c=0,f=0,p=0;return u==0?c=0:l==i?c=(r-o)/u%6:l==r?c=(o-i)/u+2:c=(i-r)/u+4,c=Math.round(c*60),c<0&&(c+=360),p=(l+s)/2,f=u==0?0:u/(1-Math.abs(2*p-1)),f=+(f*100).toFixed(1),p=+(p*100).toFixed(1),{h:c,s:f,l:p}}function Px(e){let{h:t,s:a,l:n}=fO(e);return n<12?"Black":n>98?"White":a<2?"Gray":t<15?"Red":t<45?"Orange":t<65?"Yellow":t<170?"Green":t<190?"Cyan":t<263?"Blue":t<280?"Purple":t<335?"Magenta":"Red"}function Qt(e,t,a){let n=t.split("/").pop(),i=`zotero://${e}`,r="";if(/group/.test(t)?r=t.replace("http://zotero.org",i):r=`${i}/library/items/${n}`,a){let o=new URLSearchParams(a);r+=`?${o}`}return r}var Pe=require("obsidian");var dp=class e{constructor(t){this.compare=t;this.heapArray=[];this._limit=0}static getChildrenIndexOf(t){return[t*2+1,t*2+2]}static getParentIndexOf(t){if(t<=0)return-1;let a=t%2?1:2;return Math.floor((t-a)/2)}push(t){return this._sortNodeUp(this.heapArray.push(t)-1),!0}length(){return this.heapArray.length}peek(){return this.heapArray[0]}pop(){let t=this.heapArray.pop();return this.length()>0&&t!==void 0?this.replace(t):t}replace(t){let a=this.heapArray[0];return this.heapArray[0]=t,this._sortNodeDown(0),a}size(){return this.length()}_moveNode(t,a){[this.heapArray[t],this.heapArray[a]]=[this.heapArray[a],this.heapArray[t]]}_sortNodeDown(t){let a=t<this.heapArray.length-1,n=this.heapArray[t],i=(r,o)=>(this.heapArray.length>o&&this.compare(this.heapArray[o],this.heapArray[r])<0&&(r=o),r);for(;a;){let r=e.getChildrenIndexOf(t),o=r.reduce(i,r[0]),s=this.heapArray[o];typeof s!="undefined"&&this.compare(n,s)>0?(this._moveNode(t,o),t=o):a=!1}}_sortNodeUp(t){let a=t>0;for(;a;){let n=e.getParentIndexOf(t);n>=0&&this.compare(this.heapArray[n],this.heapArray[t])>0?(this._moveNode(t,n),t=n):a=!1}}};function mO(e,t){return e.prio-t.prio||e.counter-t.counter}var fp=class{constructor(t,a){this.maxConcurrent=t||1,this.minCycle=a||0,this.queueRunning=new Map,this.queueWaiting=new dp(mO),this.lastRun=0,this.nextTimer=null,this.counter=0}tryRun(){for(;this.queueWaiting.size()>0&&this.queueRunning.size<this.maxConcurrent;){if(Date.now()-this.lastRun<this.minCycle){this.nextTimer===null&&(this.nextTimer=new Promise(a=>activeWindow.setTimeout(()=>{this.nextTimer=null,this.tryRun(),a()},this.minCycle-Date.now()+this.lastRun)));return}let t=this.queueWaiting.pop();if(t!==void 0){let a,i={wait:new Promise(o=>{a=o}),signal:a},r={hash:t.hash,prio:t.prio,finish:i};if(this.queueRunning.has(t.hash))throw new Error("async-await-queue: duplicate hash "+t.hash);this.queueRunning.set(t.hash,r),this.lastRun=Date.now(),t.start.signal()}}}end(t){let a=this.queueRunning.get(t);if(a===void 0)throw new Error("async-await-queue: queue desync for "+t);this.queueRunning.delete(t),a.finish.signal(),this.tryRun()}async wait(t,a){let n=a!=null?a:0,i,r=new Promise(s=>{i=s}),o={hash:t,prio:n,start:{signal:i,wait:r},counter:this.counter++};this.queueWaiting.push(o),this.tryRun(),await r,this.lastRun=Date.now()}run(t,a){let n=a!=null?a:0,i=Symbol();return this.wait(i,n).then(t).finally(()=>{this.end(i)})}stat(){return{running:this.queueRunning.size,waiting:this.queueWaiting.size(),last:this.lastRun}}async flush(t){for(;this.queueRunning.size>0||this.queueWaiting.size()>0;){let a=this.queueWaiting.peek();if(a&&await a.start.wait,t!==void 0&&this.queueWaiting.size()<t)return;this.queueRunning.size>0&&await this.queueRunning.values().next().value.finish.wait}}},Ee=new fp(1);async function Ox(e,t){let a,n=new nt(app,"Fetching notes from Zotero...");n.open();let i=Symbol();try{await Ee.wait(i),a=await(0,Pe.request)({method:"POST",url:`http://127.0.0.1:${Dt(t.database,t.port)}/better-bibtex/json-rpc`,body:JSON.stringify({jsonrpc:"2.0",method:"item.notes",params:[e.map(r=>r.key)]}),headers:Mt})}catch(r){return console.error(r),n.close(),new Pe.Notice(`Error retrieving notes: ${r.message}`,1e4),Ee.end(i),null}Ee.end(i),n.close();try{return JSON.parse(a).result}catch(r){return console.error(r),new Pe.Notice(`Error retrieving notes: ${r.message}`,1e4),null}}async function Rx(e,t){let a,n=new nt(app,"Fetching collections from Zotero...");n.open();let i=Symbol();try{await Ee.wait(i),a=await(0,Pe.request)({method:"POST",url:`http://127.0.0.1:${Dt(t.database,t.port)}/better-bibtex/json-rpc`,body:JSON.stringify({jsonrpc:"2.0",method:"item.collections",params:[[e.key],!0]}),headers:Mt})}catch(r){return console.error(r),n.close(),new Pe.Notice(`Error retrieving notes: ${r.message}`,1e4),Ee.end(i),null}Ee.end(i),n.close();try{return JSON.parse(a).result[e.key].map(s=>{let l=s,u=[s.name];for(;l.parentCollection;)u.push(l.parentCollection.name),l=l.parentCollection;return{key:s.key,name:s.name,fullPath:u.reverse().join("/")}})}catch(r){return console.error(r),new Pe.Notice(`Error retrieving notes: ${r.message}`,1e4),null}}async function Cs(e,t){let a,n=new nt(app,"Fetching collections from Zotero...");n.open();let i=Symbol();try{await Ee.wait(i),a=await(0,Pe.request)({method:"POST",url:`http://127.0.0.1:${Dt(t.database,t.port)}/better-bibtex/json-rpc`,body:JSON.stringify({jsonrpc:"2.0",method:"item.attachments",params:[e.key]}),headers:Mt})}catch(r){return console.error(r),n.close(),new Pe.Notice(`Error retrieving notes: ${r.message}`,1e4),Ee.end(i),null}Ee.end(i),n.close();try{return JSON.parse(a).result}catch(r){return console.error(r),new Pe.Notice(`Error retrieving notes: ${r.message}`,1e4),null}}function Bx(e,t,a,n,i){return mp([e],t,a,n,i)}async function mp(e,t,a,n,i){var l;if(!e||!e.length)return null;let r,o;i||(o=new nt(app,"Fetching data from Zotero..."),o.open());let s=Symbol();try{let u={quickCopy:!0,contentType:"html"};a&&(delete u.quickCopy,u.id=a),await Ee.wait(s),r=await(0,Pe.request)({method:"POST",url:`http://127.0.0.1:${Dt(t.database,t.port)}/better-bibtex/json-rpc`,body:JSON.stringify({jsonrpc:"2.0",method:"item.bibliography",params:[e.map(c=>c.key),u,e[0].library]}),headers:Mt})}catch(u){return console.error(u),!i&&o.close(),new Pe.Notice(`Error retrieving formatted bibliography: ${u.message}`,1e4),Ee.end(s),null}Ee.end(s),!i&&o.close();try{let u=JSON.parse(r);if((l=u.error)!=null&&l.message)throw new Error(u.error.message);return n==="html"?u.result:(0,Pe.htmlToMarkdown)(u.result)}catch(u){console.error(u),console.error(`Response from BBT: ${r}`);let c=`Error converting formatted bibliography to markdown: ${u.message}`;return u.message.includes("element/document/fragment")&&(c="Error: Received empty bibliography from Zotero. Ensure Zotero's quick copy settings are set and the selected citation style is installed."),new Pe.Notice(c,1e4),null}}async function nr(e,t,a){var o;let n,i=new nt(app,"Fetching data from Zotero...");i.open();let r=Symbol();try{await Ee.wait(r),n=await(0,Pe.request)({method:"POST",url:`http://127.0.0.1:${Dt(t.database,t.port)}/better-bibtex/json-rpc`,body:JSON.stringify({jsonrpc:"2.0",method:"item.export",params:[e.map(s=>s.key),"36a3b0b5-bad0-4a04-b79b-441c7cef77db",a]}),headers:Mt})}catch(s){return console.error(s),i.close(),new Pe.Notice(`Error retrieving item data: ${s.message}`,1e4),Ee.end(r),null}Ee.end(r),i.close();try{let s=JSON.parse(n);if((o=s.error)!=null&&o.message)throw new Error(s.error.message);return Array.isArray(s.result)?JSON.parse(s.result[2]).items:JSON.parse(s.result).items}catch(s){return console.error(s),new Pe.Notice(`Error retrieving item data: ${s.message}`,1e4),null}}async function Nx(e,t,a){let n,i=new nt(app,"Fetching data from Zotero...");i.open();let r={},o=[],s=Symbol();try{await Ee.wait(s),n=await(0,Pe.request)({method:"POST",url:`http://127.0.0.1:${Dt(a.database,a.port)}/better-bibtex/json-rpc`,body:JSON.stringify({jsonrpc:"2.0",method:"item.citationkey",params:[t.map(f=>{let p=f.split("/").pop();return o.push(p),r[p]=f,`${e}:${p}`})]}),headers:Mt})}catch(f){return console.error(f),i.close(),new Pe.Notice(`Error retrieving item data: ${f.message}`,1e4),Ee.end(s),null}Ee.end(s),i.close();let l={},u=[];try{let f=JSON.parse(n);Object.keys(f.result).forEach(p=>{let b=p.split(":").pop();f.result[p]?(u.push({key:f.result[p],library:e}),l[b]={citekey:f.result[p],uri:r[b]}):l[b]={uri:r[b]}})}catch(f){return console.error(f),new Pe.Notice(`Error retrieving item data: ${f.message}`,1e4),null}let c=u.length?await nr(u,a,e):[];return o.map(f=>{if(l[f].citekey){let p=c.find(b=>{var d;return((d=rn(b))==null?void 0:d.key)===l[f].citekey});if(p)return p}return l[f]})}async function jx(e,t){var r;let a,n=new nt(app,"Fetching data from Zotero...");n.open();let i=Symbol();try{await Ee.wait(i),a=await(0,Pe.request)({method:"POST",url:`http://127.0.0.1:${Dt(t.database,t.port)}/better-bibtex/json-rpc`,body:JSON.stringify({jsonrpc:"2.0",method:"item.export",params:[[e.key],"f4b52ab0-f878-4556-85a0-c7aeedd09dfc",e.library]}),headers:Mt})}catch(o){return console.error(o),n.close(),new Pe.Notice(`Error retrieving item data: ${o.message}`,1e4),Ee.end(i),null}Ee.end(i),n.close();try{let o=JSON.parse(a);if((r=o.error)!=null&&r.message)throw new Error(o.error.message);let l=(Array.isArray(o.result)?JSON.parse(o.result[2]):JSON.parse(o.result)).map(u=>{let{issued:c}=u;if(!c||!c["date-parts"])return null;let f=c["date-parts"][0];return f.length?(0,Pe.moment)(`${f[0]}-${f[1]?lp(f[1]):"01"}-${f[2]?lp(f[2]):"01"}`,"YYYY-MM-DD"):null}).filter(u=>u);return l[0]?l[0]:null}catch(o){return console.error(o),new Pe.Notice(`Error retrieving item data: ${o.message}`,1e4),null}}function rn(e){return!e.citekey&&!e.citationKey?null:{key:e.citekey||e.citationKey,library:e.libraryID}}var As=!1,Lx=0;async function hp(e,t){if(As&&Date.now()-Lx<1e3*30)return As;let a;t||(a=new nt(app,"Fetching data from Zotero..."),a.open());let n=Symbol();try{await Ee.wait(n);let i=await(0,Pa.request)({method:"GET",url:`http://127.0.0.1:${Dt(e.database,e.port)}/better-bibtex/cayw?probe=true`,headers:Mt});return a==null||a.close(),As=i==="ready",Lx=Date.now(),Ee.end(n),As}catch(i){return a==null||a.close(),!t&&new Pa.Notice("Cannot connect to Zotero. Please ensure it is running and the Better BibTeX plugin is installed",1e4),Ee.end(n),!1}}function hO(e){switch(e.format){case"formatted-bibliography":return"format=formatted-bibliography";case"formatted-citation":return`format=formatted-citation${e.cslStyle?`&style=${e.cslStyle}`:""}`;case"pandoc":return`format=pandoc${e.brackets?"&brackets=true":""}`;case"latex":return`format=latex&command=${e.command||"cite"}`;case"biblatex":return`format=biblatex&command=${e.command||"autocite"}`}}async function Mx(e,t){let a=sp();if(!await hp(t))return null;let n=new nt(app,"Awaiting item selection from Zotero...");n.open();let i=Symbol();try{if(e.format==="formatted-bibliography"){n.close();let o=await on(t);return await mp(o,t,e.cslStyle)}await Ee.wait(i);let r=await(0,Pa.request)({method:"GET",url:`http://127.0.0.1:${Dt(t.database,t.port)}/better-bibtex/cayw?${hO(e)}`,headers:Mt});return a.show(),n.close(),Ee.end(i),r}catch(r){return a.show(),console.error(r),n.close(),new Pa.Notice(`Error processing citation: ${r.message}`,1e4),Ee.end(i),null}}async function on(e){try{let t=await vO(e);if(!t)return[];let a=t.map(n=>rn(n)).filter(n=>!!n);return a.length?a:[]}catch(t){return[]}}async function vO(e){let t=sp();if(!await hp(e))return null;let a=new nt(app,"Awaiting item selection from Zotero...");a.open();let n=Symbol();try{await Ee.wait(n);let i=await(0,Pa.request)({method:"GET",url:`http://127.0.0.1:${Dt(e.database,e.port)}/better-bibtex/cayw?format=translate&translator=36a3b0b5-bad0-4a04-b79b-441c7cef77db&exportNotes=false`,headers:Mt});return t.show(),a.close(),Ee.end(n),i?JSON.parse(i).items||[]:null}catch(i){return t.show(),console.error(i),a.close(),new Pa.Notice(`Error retrieving cite key: ${i.message}`,1e4),Ee.end(n),null}}var Oa=require("fs"),zt=require("obsidian"),cn=_e(require("path"));var sn=require("obsidian");function Is(e,t){if(!t)return null;let a=app.vault.getAbstractFileByPath(bp(t));return a?app.vault.cachedRead(a):(new sn.Notice(`Error: ${e} template not found ${t}`),null)}async function Dx(e){let{exportFormat:t}=e,a=!t.headerTemplatePath&&!t.annotationTemplatePath&&!t.footerTemplatePath;return t.templatePath||a?{template:await Is("",t.templatePath)}:{headerTemplate:await Is("Header",t.headerTemplatePath),annotationTemplate:await Is("Annotation",t.annotationTemplatePath),footerTemplate:await Is("Footer",t.footerTemplatePath)}}function zx(e){let t=e.match(/%% Import Date: (\S+) %%\n$/);return t&&t[1]?(0,sn.moment)(t[1]):(t=e.match(/%% Export Date: (\S+) %%\n$/),t&&t[1]?(0,sn.moment)(t[1]):(0,sn.moment)(0))}function vp(e){return e+` %% Import Date: ${(0,sn.moment)().toISOString(!0)} %% `}function Gx(e){let t=e.match(/%% Begin annotations %%([\w\W]+)%% End annotations %%/);return t&&t[1]?t[1].trim():""}function Hx(e){return` %% Begin annotations %% ${e} %% End annotations %% -`}function ln(e){return e.startsWith("/")?e.replace(/^\/+/,""):e}function bp(e){return e.endsWith(".md")||(e+=".md"),e.startsWith("/")&&(e=ln(e)),e}async function gp(e,t,a,n){let i=new DOMParser().parseFromString(t,"text/html"),r=i.querySelectorAll("[data-annotation]"),o=i.querySelectorAll("[data-citation]");for(let s of Array.from(r))try{let l=s.dataset.annotation,u=l?JSON.parse(decodeURIComponent(l)):null;if(!u)return;let c=u.annotationKey,f=s instanceof HTMLImageElement;if(f){let p=a[c];if(p){let b=cn.default.parse(p),d=await bO(c,b.ext.slice(1),n),m=cn.default.parse(cn.default.join(an(),d)).dir;(0,Oa.existsSync)(m)||(0,Oa.mkdirSync)(m,{recursive:!0});let v=cn.default.join(b.dir,`${c}${b.ext}`);try{if(!(0,Oa.existsSync)(v)){let x=v;if(v=p,!(0,Oa.existsSync)(v))throw new Error("Cannot find annotation image: "+x)}(0,Oa.copyFileSync)(v,cn.default.join(an(),d))}catch(x){new zt.Notice("Error: unable to copy annotation image from Zotero into your vault",7e3),console.error(x)}s.src=d}}s.insertAdjacentElement(f?"afterend":"beforebegin",createEl("a",{text:"Go to annotation",href:Qt("open-pdf",u.attachmentURI,{page:u.pageLabel,annotation:u.annotationKey})})),f?s.insertAdjacentElement("afterend",createEl("br")):s.insertAdjacentElement("beforebegin",createSpan({text:" "}))}catch(l){console.error(l)}return o.forEach(s=>{var l;try{let u=s.dataset.citation,c=u?JSON.parse(decodeURIComponent(u)):null;if(!c||!c.citationItems.length||!((l=c.citationItems[0].uris)!=null&&l.length))return;let f=s.querySelector("span");if(!f)return;let p=f.innerText;f.empty(),f.createEl("a",{text:p,href:Qt("select",c.citationItems[0].uris[0])})}catch(u){console.error(u)}}),i.body.innerHTML}async function xp(e,t){let a=await on(e);if(!a.length)return;let n=await Ox(a,e);if(!n){new zt.Notice("No notes found for selected items",7e3);return}let i=Object.keys(n);if(!i.length){new zt.Notice("No notes found for selected items",7e3);return}let r={};for(let s of a){let l=await Cs(s,e);if(l){let u={};l.forEach(c=>{var f;(f=c.annotations)==null||f.forEach(p=>{p.annotationType==="image"&&(u[p.key]=p.annotationImagePath)})}),r[s.key]=u}}let o={};for(let s of i){let l=[];for(let u of n[s])l.push((0,zt.htmlToMarkdown)(await gp(s,u,r[s],t)));o[s]=l.join(` +`}function ln(e){return e.startsWith("/")?e.replace(/^\/+/,""):e}function bp(e){return e.endsWith(".md")||(e+=".md"),e.startsWith("/")&&(e=ln(e)),e}async function gp(e,t,a,n){let i=new DOMParser().parseFromString(t,"text/html"),r=i.querySelectorAll("[data-annotation]"),o=i.querySelectorAll("[data-citation]");for(let s of Array.from(r))try{let l=s.dataset.annotation,u=l?JSON.parse(decodeURIComponent(l)):null;if(!u)return;let c=u.annotationKey,f=s instanceof HTMLImageElement;if(f){let p=a[c];if(p){let b=cn.default.parse(p),d=await bO(c,b.ext.slice(1),n),h=cn.default.parse(cn.default.join(an(),d)).dir;(0,Oa.existsSync)(h)||(0,Oa.mkdirSync)(h,{recursive:!0});let v=cn.default.join(b.dir,`${c}${b.ext}`);try{if(!(0,Oa.existsSync)(v)){let x=v;if(v=p,!(0,Oa.existsSync)(v))throw new Error("Cannot find annotation image: "+x)}(0,Oa.copyFileSync)(v,cn.default.join(an(),d))}catch(x){new zt.Notice("Error: unable to copy annotation image from Zotero into your vault",7e3),console.error(x)}s.src=d}}s.insertAdjacentElement(f?"afterend":"beforebegin",createEl("a",{text:"Go to annotation",href:Qt("open-pdf",u.attachmentURI,{page:u.pageLabel,annotation:u.annotationKey})})),f?s.insertAdjacentElement("afterend",createEl("br")):s.insertAdjacentElement("beforebegin",createSpan({text:" "}))}catch(l){console.error(l)}return o.forEach(s=>{var l;try{let u=s.dataset.citation,c=u?JSON.parse(decodeURIComponent(u)):null;if(!c||!c.citationItems.length||!((l=c.citationItems[0].uris)!=null&&l.length))return;let f=s.querySelector("span");if(!f)return;let p=f.innerText;f.empty(),f.createEl("a",{text:p,href:Qt("select",c.citationItems[0].uris[0])})}catch(u){console.error(u)}}),i.body.innerHTML}async function xp(e,t){let a=await on(e);if(!a.length)return;let n=await Ox(a,e);if(!n){new zt.Notice("No notes found for selected items",7e3);return}let i=Object.keys(n);if(!i.length){new zt.Notice("No notes found for selected items",7e3);return}let r={};for(let s of a){let l=await Cs(s,e);if(l){let u={};l.forEach(c=>{var f;(f=c.annotations)==null||f.forEach(p=>{p.annotationType==="image"&&(u[p.key]=p.annotationImagePath)})}),r[s.key]=u}}let o={};for(let s of i){let l=[];for(let u of n[s])l.push((0,zt.htmlToMarkdown)(await gp(s,u,r[s],t)));o[s]=l.join(` `)}return o}async function bO(e,t,a){let n=app.vault.getConfig("attachmentFolderPath"),i=n==="."||n==="./",r=null;n.startsWith("./")&&(r=n.slice(2)),i?n=a||"":r&&(n=cn.default.join(a||"",r)),n=(0,zt.normalizePath)(n);let o=app.vault.getAbstractFileByPathInsensitive(n);return!o&&r&&(await app.vault.createFolder(n),o=app.vault.getAbstractFileByPathInsensitive(n)),o instanceof zt.TFolder?`${o.getParentPrefix()+e}.${t}`:`${e}.${t}`}function Wx(e,t){e.replaceSelection(Object.values(t).join(` -`))}async function Vx(e,t){let a=Object.keys(t),n=[];for(let i of a){let r=await gO(e,i,t[i]);if(!r)break;n.push(r)}return n.map(i=>i.path)}async function gO(e,t,a){let n=(0,zt.normalizePath)(Vn(ln(`${e}/${t}.md`))),i=app.vault.getAbstractFileByPath(n);try{i?await app.vault.modify(i,a):(await Ss(n),i=await app.vault.create(n,a))}catch(r){return console.error(r),new zt.Notice(`Error creating file "${n}": ${r.message}`,1e4),null}return i}var un=require("obsidian"),_s=_e(require("path"));var xO={noWrite:"-w",imageOutputPath:"-o",imageBaseName:"-n",imageFormat:"-f",imageDPI:"-d",imageQuality:"-q",ignoreBefore:"-b",attemptOCR:"-e",ocrLang:"-l",tesseractPath:"--tesseract-path",tessDataDir:"--tess-data-dir"};async function yp(e,t,a){let n=new nt(app,"Extracting annotations...");n.open();let i=[e];Object.keys(t).forEach(r=>{let o=t[r];if(o===""||o===void 0)return"";let s=xO[r];typeof o=="boolean"?o&&i.push(s):(i.push(s),typeof o=="string"&&o.startsWith("-")?i.push(`"${o}"`):i.push(o.toString()))});try{if(!Cx(a))return new un.Notice("Error: PDF utility is not executable",1e4),"[]";let o=await er(a||_s.default.join(_t(),nn()),i);if(n.close(),o.stderr.toLowerCase().includes("password"))return new un.Notice(`Error opening ${_s.default.basename(e)}: PDF is password protected`,1e4),"[]";if(o.stderr&&!o.stderr.includes("warning"))throw new un.Notice(`Error processing PDF: ${o.stderr}`,1e4),new Error(o.stderr);return o.stdout}catch(r){if(n.close(),r.message.toLowerCase().includes("password"))return new un.Notice(`Error opening ${_s.default.basename(e)}: PDF is password protected`,1e4),"[]";if(r.message.toLowerCase().includes("type3"))return new un.Notice(`Error processing annotations: ${r.message}`,1e4),"[]";throw console.error(r),new un.Notice(`Error processing PDF: ${r.message}`,1e4),r}}async function yO(e,t){t.note&&(t.note=(0,Be.htmlToMarkdown)(await gp(e.key,t.note,{}))),t.dateAdded&&(t.dateAdded=(0,Be.moment)(t.dateAdded)),t.dateModified&&(t.dateModified=(0,Be.moment)(t.dateModified)),t.desktopURI=Qt("select",t.uri)}function wO(e){var t;e.dateAdded&&(e.dateAdded=(0,Be.moment)(e.dateAdded)),e.dateModified&&(e.dateModified=(0,Be.moment)(e.dateModified)),e.uri&&(e.itemKey=e.uri.split("/").pop(),e.desktopURI=e.select||Qt("select",e.uri),(t=e.path)!=null&&t.endsWith(".pdf")&&(e.pdfURI=Qt("open-pdf",e.uri)))}function Ux(e,t,a){e.date=(0,Be.moment)(e.date),e.attachment=t,e.source="pdf",e.imagePath&&(e.imageBaseName=Zt.default.basename(e.imagePath),e.imageExtension=Zt.default.extname(e.imagePath).slice(1),e.imageRelativePath=(0,Be.normalizePath)(Zt.default.join(a,e.imageBaseName))),e.desktopURI=Qt("open-pdf",t.uri,{page:e.pageLabel})}function Jx(e,t,a,n,i,r=!1){var l;let o=e.annotationPosition.rects[0],s={date:(0,Be.moment)(e.dateModified),attachment:t,page:e.annotationPosition.pageIndex+1,pageLabel:e.annotationPageLabel,id:e.key,type:e.annotationType,x:o[0],y:o[1],color:e.annotationColor,colorCategory:Px(e.annotationColor),desktopURI:Qt("open-pdf",t.uri,{page:e.annotationPageLabel,annotation:e.key}),source:"zotero"};if(e.annotationText&&(s.annotatedText=e.annotationText),e.annotationComment&&(s.comment=e.annotationComment),e.annotationImagePath){let u=Zt.default.parse(e.annotationImagePath);s.imageBaseName=`${i}-${s.page}-x${Math.round(s.x)}-y${Math.round(s.y)}${u.ext}`,s.imageRelativePath=(0,Be.normalizePath)(Zt.default.join(n,s.imageBaseName)),s.imageExtension=u.ext.slice(1);let c=Zt.default.join(a,s.imageBaseName);if(r){(0,Ra.existsSync)(a)||(0,Ra.mkdirSync)(a,{recursive:!0});let f=Zt.default.join(u.dir,`${e.key}${u.ext}`);try{if(!(0,Ra.existsSync)(f)){let p=f;if(f=e.annotationImagePath,!(0,Ra.existsSync)(f))throw new Error("Cannot find annotation image: "+p)}(0,Ra.copyFileSync)(f,c)}catch(p){new Be.Notice("Error: unable to copy annotation image from Zotero into your vault",7e3),console.error(p)}}s.imagePath=c}return(l=e.tags)!=null&&l.length&&(s.tags=e.tags,s.allTags=e.tags.map(u=>u.tag).join(", "),s.hashTags=e.tags.map(u=>`#${u.tag.replace(/\s+/g,"-")}`).join(", ")),s}function Fs(e){let t=[],a=/^\+\s*/;return e.forEach(n=>{if(typeof n.comment=="string"&&a.test(n.comment)){n.comment=n.comment.replace(a,"");let i=t[t.length-1];if(i){i.annotatedText=i.annotatedText?i.annotatedText+"..."+n.annotatedText:n.annotatedText,i.comment=i.comment?i.comment+"..."+n.comment:n.comment;return}}t.push(n)}),t}async function EO(e,t,a,n){var o;if(!((o=e.relations)!=null&&o.length))return[];let i=e.libraryID,r=await Nx(i,e.relations,a);for(let s=0,l=r.length;s<l;s++){let u=r[s];rn(u)&&await Ps(u,t,a,n,!0)}return r}async function Ps(e,t,a,n,i){let r=rn(e);if(e.importDate=t,e.exportDate=t,e.desktopURI=e.select||Qt("select",e.uri,e.itemKey),e.accessDate&&(e.accessDate=(0,Be.moment)(e.accessDate)),e.dateAdded&&(e.dateAdded=(0,Be.moment)(e.dateAdded)),e.dateModified&&(e.dateModified=(0,Be.moment)(e.dateModified)),r){e.citekey||(e.citekey=r.key),e.citationKey||(e.citationKey=r.key);try{e.date=await jx(r,a)}catch(o){}try{e.collections=await Rx(r,a)}catch(o){}try{e.bibliography=await Bx(r,a,n)}catch(o){e.bibliography="Error generating bibliography"}}if(e.notes)for(let o of e.notes)await yO(r,o);if(e.attachments)for(let o of e.attachments)wO(o);i||(e.relations=await EO(e,t,a,n))}function Zx(e,t){let a=e.message;try{if(a){let n=a.match(/\[Line (\d+), Column (\d+)]/);if(n){let r=t.split(/\n/g)[Number(n[1])-1],o=" ".repeat(Number(n[2])-1)+"^";return`${a} +`))}async function Vx(e,t){let a=Object.keys(t),n=[];for(let i of a){let r=await gO(e,i,t[i]);if(!r)break;n.push(r)}return n.map(i=>i.path)}async function gO(e,t,a){let n=(0,zt.normalizePath)(Vn(ln(`${e}/${t}.md`))),i=app.vault.getAbstractFileByPath(n);try{i?await app.vault.modify(i,a):(await Ss(n),i=await app.vault.create(n,a))}catch(r){return console.error(r),new zt.Notice(`Error creating file "${n}": ${r.message}`,1e4),null}return i}var un=require("obsidian"),_s=_e(require("path"));var xO={noWrite:"-w",imageOutputPath:"-o",imageBaseName:"-n",imageFormat:"-f",imageDPI:"-d",imageQuality:"-q",ignoreBefore:"-b",attemptOCR:"-e",ocrLang:"-l",tesseractPath:"--tesseract-path",tessDataDir:"--tess-data-dir"};async function yp(e,t,a){let n=new nt(app,"Extracting annotations...");n.open();let i=[e];Object.keys(t).forEach(r=>{let o=t[r];if(o===""||o===void 0)return"";let s=xO[r];typeof o=="boolean"?o&&i.push(s):(i.push(s),typeof o=="string"&&o.startsWith("-")?i.push(`"${o}"`):i.push(o.toString()))});try{if(!Cx(a))return new un.Notice("Error: PDF utility is not executable",1e4),"[]";let o=await er(a||_s.default.join(_t(),nn()),i);if(n.close(),o.stderr.toLowerCase().includes("password"))return new un.Notice(`Error opening ${_s.default.basename(e)}: PDF is password protected`,1e4),"[]";if(o.stderr&&!o.stderr.includes("warning"))throw new un.Notice(`Error processing PDF: ${o.stderr}`,1e4),new Error(o.stderr);return o.stdout}catch(r){if(n.close(),r.message.toLowerCase().includes("password"))return new un.Notice(`Error opening ${_s.default.basename(e)}: PDF is password protected`,1e4),"[]";if(r.message.toLowerCase().includes("type3"))return new un.Notice(`Error processing annotations: ${r.message}`,1e4),"[]";throw console.error(r),new un.Notice(`Error processing PDF: ${r.message}`,1e4),r}}async function yO(e,t,a,n,i){t.note&&(t.note=(0,Be.htmlToMarkdown)(await gp(e.key,t.note,{}))),t.dateAdded&&(t.dateAdded=(0,Be.moment)(t.dateAdded)),t.dateModified&&(t.dateModified=(0,Be.moment)(t.dateModified)),t.desktopURI=Qt("select",t.uri),t.relations=await Zx(t,e.library,a,n,i)}function wO(e){var t;e.dateAdded&&(e.dateAdded=(0,Be.moment)(e.dateAdded)),e.dateModified&&(e.dateModified=(0,Be.moment)(e.dateModified)),e.uri&&(e.itemKey=e.uri.split("/").pop(),e.desktopURI=e.select||Qt("select",e.uri),(t=e.path)!=null&&t.endsWith(".pdf")&&(e.pdfURI=Qt("open-pdf",e.uri)))}function Ux(e,t,a){e.date=(0,Be.moment)(e.date),e.attachment=t,e.source="pdf",e.imagePath&&(e.imageBaseName=Jt.default.basename(e.imagePath),e.imageExtension=Jt.default.extname(e.imagePath).slice(1),e.imageRelativePath=(0,Be.normalizePath)(Jt.default.join(a,e.imageBaseName))),e.desktopURI=Qt("open-pdf",t.uri,{page:e.pageLabel})}function Jx(e,t,a,n,i,r=!1){var l;let o=e.annotationPosition.rects[0],s={date:(0,Be.moment)(e.dateModified),attachment:t,page:e.annotationPosition.pageIndex+1,pageLabel:e.annotationPageLabel,id:e.key,type:e.annotationType,x:o[0],y:o[1],color:e.annotationColor,colorCategory:Px(e.annotationColor),desktopURI:Qt("open-pdf",t.uri,{page:e.annotationPageLabel,annotation:e.key}),source:"zotero"};if(e.annotationText&&(s.annotatedText=e.annotationText),e.annotationComment&&(s.comment=e.annotationComment),e.annotationImagePath){let u=Jt.default.parse(e.annotationImagePath);s.imageBaseName=`${i}-${s.page}-x${Math.round(s.x)}-y${Math.round(s.y)}${u.ext}`,s.imageRelativePath=(0,Be.normalizePath)(Jt.default.join(n,s.imageBaseName)),s.imageExtension=u.ext.slice(1);let c=Jt.default.join(a,s.imageBaseName);if(r){(0,Ra.existsSync)(a)||(0,Ra.mkdirSync)(a,{recursive:!0});let f=Jt.default.join(u.dir,`${e.key}${u.ext}`);try{if(!(0,Ra.existsSync)(f)){let p=f;if(f=e.annotationImagePath,!(0,Ra.existsSync)(f))throw new Error("Cannot find annotation image: "+p)}(0,Ra.copyFileSync)(f,c)}catch(p){new Be.Notice("Error: unable to copy annotation image from Zotero into your vault",7e3),console.error(p)}}s.imagePath=c}return(l=e.tags)!=null&&l.length&&(s.tags=e.tags,s.allTags=e.tags.map(u=>u.tag).join(", "),s.hashTags=e.tags.map(u=>`#${u.tag.replace(/\s+/g,"-")}`).join(", ")),s}function Fs(e){let t=[],a=/^\+\s*/;return e.forEach(n=>{if(typeof n.comment=="string"&&a.test(n.comment)){n.comment=n.comment.replace(a,"");let i=t[t.length-1];if(i){i.annotatedText=i.annotatedText?i.annotatedText+"..."+n.annotatedText:n.annotatedText,i.comment=i.comment?i.comment+"..."+n.comment:n.comment;return}}t.push(n)}),t}async function Zx(e,t,a,n,i){var o;if(e.relations&&!Array.isArray(e.relations)){let s=[];for(let l of Object.values(e.relations))Array.isArray(l)&&s.push(...l);e.relations=s}if(!((o=e.relations)!=null&&o.length))return[];let r=await Nx(t,e.relations,n);for(let s of r)rn(s)&&await Ps(s,a,n,i,!0);return r}async function Ps(e,t,a,n,i){let r=rn(e);if(e.importDate=t,e.exportDate=t,e.desktopURI=e.select||Qt("select",e.uri,e.itemKey),e.accessDate&&(e.accessDate=(0,Be.moment)(e.accessDate)),e.dateAdded&&(e.dateAdded=(0,Be.moment)(e.dateAdded)),e.dateModified&&(e.dateModified=(0,Be.moment)(e.dateModified)),r){e.citekey||(e.citekey=r.key),e.citationKey||(e.citationKey=r.key);try{e.date=await jx(r,a)}catch(o){}try{e.collections=await Rx(r,a)}catch(o){}try{e.bibliography=await Bx(r,a,n)}catch(o){e.bibliography="Error generating bibliography"}}if(e.notes)for(let o of e.notes)await yO(r,o,t,a,n);if(e.attachments)for(let o of e.attachments)wO(o);i||(e.relations=await Zx(e,e.libraryID,t,a,n))}function qx(e,t){let a=e.message;try{if(a){let n=a.match(/\[Line (\d+), Column (\d+)]/);if(n){let r=t.split(/\n/g)[Number(n[1])-1],o=" ".repeat(Number(n[2])-1)+"^";return`${a} ${r} -${o}`}}}catch(n){}return a}function Ts(e,t,a){new Be.Notice(createFragment(n=>{n.createSpan({text:`Error parsing template "${t}": `}),n.createEl("code",{text:Zx(e,a)})}),1e4)}function ks(e,t,a){return new Error(`Error parsing template "${t}": ${Zx(e,a)}`)}async function wp(e,t,a,n){let{template:i,headerTemplate:r,annotationTemplate:o,footerTemplate:s}=await Dx(e);if(!i&&!r&&!o&&!s)throw new Error(`No templates found for export ${e.exportFormat.name}`);let l="",u=!1;if(i){try{l=await bt(e.exportFormat.templatePath,i,t),u=Jt.hasPersist(l)}catch(h){if(n)throw ks(h,e.exportFormat.templatePath,i);return Ts(h,e.exportFormat.templatePath,i),!1}return u?vp(l):l}let c="",f="",p="";try{c=r?await bt(e.exportFormat.headerTemplatePath,r,t):""}catch(h){if(n)throw ks(h,e.exportFormat.headerTemplatePath,r);return Ts(h,e.exportFormat.headerTemplatePath,r),!1}try{f=o?await bt(e.exportFormat.annotationTemplatePath,o,t):""}catch(h){if(n)throw ks(h,e.exportFormat.annotationTemplatePath,o);return Ts(h,e.exportFormat.annotationTemplatePath,o),!1}try{p=s?await bt(e.exportFormat.footerTemplatePath,s,t):""}catch(h){if(n)throw ks(h,e.exportFormat.footerTemplatePath,s);return Ts(h,e.exportFormat.footerTemplatePath,s),!1}let b=[];r&&c.trim()&&b.push(c);let d=o&&(a+f).trim();return d&&b.push(Hx(a+f)),s&&p.trim()&&b.push(p),d?vp(b.join("")):b.join("")}function SO({exportFormat:e}){return e.templatePath||e.headerTemplatePath||e.annotationTemplatePath||e.footerTemplatePath||""}async function qx(e,t){let a={};try{let n=rn(e);n&&(a=(await Cs(n,t)||[]).reduce((r,o)=>(o!=null&&o.path&&(r[o.path]=o),r),{}))}catch(n){console.error(n)}return a}async function Ep(e,t){var d,h;let a=(0,Be.moment)(),{database:n,exportFormat:i,settings:r}=e,o=SO(e),s=Hn(),l=t||await on(n);if(!l.length)return[];let u=l[0].library,c;try{c=await nr(l,n,u)}catch(m){return[]}let f=[];for(let m=0,v=c.length;m<v;m++)await Ps(c[m],a,n,i.cslStyle);let p=an(),b=new Map;for(let m=0,v=c.length;m<v;m++){let x=c[m],E=x.attachments,g=await qx(x,n);for(let w=0,C=E.length;w<C;w++){let y=E[w],S=y.path,I=S==null?void 0:S.endsWith(".pdf"),_=await ws(o,{annotations:[],...y,...x}),P=i.imageOutputPathTemplate?(0,Be.normalizePath)(Vn(ln(await bt(o,i.imageOutputPathTemplate,_)))):"",F=Zt.default.resolve(p,P),B=i.imageBaseNameTemplate?Vn(ln(await bt(o,i.imageBaseNameTemplate,_))):"image",N=(0,Be.normalizePath)(Vn(ln(await bt(o,i.outputPathTemplate,_)))),L=[];if(I&&((h=(d=g[S])==null?void 0:d.annotations)==null||h.forEach(k=>{var T;(T=k.annotationPosition.rects)!=null&&T.length&&L.push(Jx(k,y,F,P,B,!0))})),L.length&&r.shouldConcat&&(L=Fs(L)),I&&s)try{let k=await yp(S,{imageBaseName:B,imageDPI:r.pdfExportImageDPI,imageFormat:r.pdfExportImageFormat,imageOutputPath:F,imageQuality:r.pdfExportImageQuality,attemptOCR:r.pdfExportImageOCR,ocrLang:r.pdfExportImageOCRLang,tesseractPath:r.pdfExportImageTesseractPath,tessDataDir:r.pdfExportImageTessDataDir},r.exeOverridePath),T=JSON.parse(k);for(let j of T)Ux(j,y,P);r.shouldConcat&&T.length&&(T=Fs(T)),L.push(...T)}catch(k){}if(L.length&&(y.annotations=L),!b.has(N)){let k=app.vault.getAbstractFileByPath(N),T=k?await app.vault.cachedRead(k):"",j=k?Gx(T):"",M=k?zx(T):(0,Be.moment)(0),D=M.valueOf()===0,V=await ws(N,{...x,annotations:L,lastImportDate:M,isFirstImport:D,lastExportDate:M});b.set(N,{file:k,fileContent:T,lastImportDate:M,existingAnnotations:j,templateData:V})}}}for(let[m,v]of b.entries()){let{templateData:x,fileContent:E,existingAnnotations:g,file:w}=v,C=await wp(e,Jt.prepareTemplateData(x,E),g);C&&(w?await app.vault.modify(w,C):(await Ss(m),await app.vault.create(m,C)),f.push(m))}return f}async function Xx(e){let t=(0,Be.moment)(),{database:a,format:n}=e,i=await on(a);if(!i.length)return null;let r=i[0].library,o;try{o=await nr(i,a,r)}catch(l){return null}if(o.length===0)return null;let s=[];for(let l=0,u=o.length;l<u;l++){await Ps(o[l],t,a,n.cslStyle);let c=o[l].attachments||[],p={attachment:c.find(b=>{var d;return!!((d=b.path)!=null&&d.endsWith(".pdf"))})||c.length?c[0]:null,...o[l]};s.push(await bt("",n.template,p))}return s.join(" ")}function CO(e){let t=e.exportFormats.find(n=>!!n.cslStyle);if(t)return t.cslStyle;let a=e.citeFormats.find(n=>!!n.cslStyle);if(a)return a.cslStyle}async function $x(e){var u,c;let t={database:e.database,port:e.port},a=await on(t),n=Hn();if(!a.length)return null;let i=a[0].library,r;try{r=await nr(a,t,i)}catch(f){return null}let o=(0,Be.moment)(),s=CO(e);for(let f=0,p=r.length;f<p;f++)await Ps(r[f],o,t,s);let l=an();for(let f=0,p=r.length;f<p;f++){let b=r[f],d=b.attachments,h=await qx(b,t);for(let m=0,v=d.length;m<v;m++){let x=d[m],E=x.path;if(!(E!=null&&E.endsWith(".pdf")))continue;let g=[];if((c=(u=h[E])==null?void 0:u.annotations)==null||c.forEach(w=>{var C;(C=w.annotationPosition.rects)!=null&&C.length&&g.push(Jx(w,d[m],Zt.default.join(l,"output_path"),"base_name","output_path"))}),e.shouldConcat&&g.length&&(g=Fs(g)),n)try{let w=await yp(E,{noWrite:!0,imageBaseName:"base_name",imageDPI:e.pdfExportImageDPI,imageFormat:e.pdfExportImageFormat,imageOutputPath:Zt.default.join(l,"output_path"),imageQuality:e.pdfExportImageQuality,attemptOCR:e.pdfExportImageOCR,ocrLang:e.pdfExportImageOCRLang,tesseractPath:e.pdfExportImageTesseractPath,tessDataDir:e.pdfExportImageTessDataDir},e.exeOverridePath),C=JSON.parse(w);for(let y of C)Ux(y,d[m],"output_path");e.shouldConcat&&C.length&&(C=Fs(C)),g.push(...C)}catch(w){return!1}g.length&&(x.annotations=g)}}return await Promise.all(r.map(async f=>{let p=f.attachments.find(b=>{var d;return(d=b.path)==null?void 0:d.endsWith(".pdf")});f.annotations=p!=null&&p.annotations?p.annotations:[],f.lastImportDate=(0,Be.moment)(0),f.isFirstImport=!0,f.lastExportDate=(0,Be.moment)(0),await ws("",f)})),r}var Un="zdc-debug",AO={scheme:"Tomorrow",author:"Chris Kempson (http://chriskempson.com)",base00:"#ffffff",base01:"#e0e0e0",base02:"#d6d6d6",base03:"#8e908c",base04:"#969896",base05:"#4d4d4c",base06:"#282a2e",base07:"#1d1f21",base08:"#c82829",base09:"#f5871f",base0A:"#eab700",base0B:"#718c00",base0C:"#3e999f",base0D:"#4271ae",base0E:"#8959a8",base0F:"#a3685a"},IO={scheme:"Tomorrow Night",author:"Chris Kempson (http://chriskempson.com)",base00:"#1d1f21",base01:"#282a2e",base02:"#373b41",base03:"#969896",base04:"#b4b7b4",base05:"#c5c8c6",base06:"#e0e0e0",base07:"#ffffff",base08:"#cc6666",base09:"#de935f",base0A:"#f0c674",base0B:"#b5bd68",base0C:"#8abeb7",base0D:"#81a2be",base0E:"#b294bb",base0F:"#a3685a"};function _O({plugin:e,formatIndex:t,templateData:a}){let[n,i]=A.useState(null),[r,o]=A.useState(null),[s,l]=A.useState(0);return A.useEffect(()=>{let u=e.settings.exportFormats[t],c=u.templatePath?e.app.vault.getAbstractFileByPath(bp(u.templatePath)):null,f=b=>{b&&b===c&&l(Date.now())},p=()=>{l(Date.now())};return e.emitter.on("fileUpdated",f),e.emitter.on("settingsUpdated",p),()=>{e.emitter.off("fileUpdated",f),e.emitter.off("settingsUpdated",p)}},[t]),A.useEffect(()=>{if(i(null),t===null)return;let u={settings:e.settings,database:{database:e.settings.database,port:e.settings.port},exportFormat:e.settings.exportFormats[t]};(async()=>{try{let f="",p=(0,Ba.moment)(0),b=await wp(u,Jt.prepareTemplateData({...a,lastImportDate:p,lastExportDate:p},f),"",!0);o(b||null)}catch(f){i(f.message)}})()},[t,s,a]),!r&&!n?null:A.createElement("div",{className:`zt-json-viewer__preview${n?" error":""}`},A.createElement("pre",null,A.createElement("code",null,n||r)))}function TO({plugin:e}){let[t,a]=A.useState(null),[n,i]=A.useState(null),[r,o]=A.useState(null),s=A.useCallback(()=>{$x(e.settings).then(l=>{!l||l.length===0?a("No data retrieved"):(a(null),i(l[0]))})},[]);return A.createElement("div",{className:"zt-json-viewer"},A.createElement("div",{className:"zt-json-viewer__btns"},A.createElement("div",null,A.createElement("button",{onClick:s},"Prompt For Selection")),A.createElement("div",null,A.createElement("select",{className:"dropdown",onChange:l=>{l.target.value?o(Number(l.target.value)):o(null)}},A.createElement("option",{value:""},"Preview Import Format"),e.settings.exportFormats.map((l,u)=>A.createElement("option",{key:u,value:u},l.name))))),t?A.createElement("div",null,t):A.createElement("div",null,n&&A.createElement(A.Fragment,null,r!==null&&A.createElement(_O,{plugin:e,formatIndex:r,templateData:n}),A.createElement("div",{className:"zt-json-viewer__data"},A.createElement(Sg,{data:n,sortObjectKeys:(l,u)=>l.localeCompare(u),isCustomNode:l=>l instanceof Ba.moment,valueRenderer:BO,labelRenderer:kO,theme:document.body.hasClass("theme-dark")?IO:AO,invertTheme:!1})))))}var Os=class extends Ba.ItemView{constructor(a,n){super(n);this.plugin=a,this.mountJsonViewer()}getViewType(){return Un}getIcon(){return"gear"}getDisplayText(){return"Zotero Data Explorer"}mountJsonViewer(){A.unmountComponentAtNode(this.contentEl),A.render(A.createElement(TO,{plugin:this.plugin}),this.contentEl)}unmountJsonViewer(){A.unmountComponentAtNode(this.contentEl)}async onClose(){this.unmountJsonViewer()}},kO=(e,t)=>{let a=e.length===1,n=e.slice(0,-1),i=FO(n);return A.createElement("span",{onContextMenu:a?void 0:o=>{let s=new Ba.Menu().addItem(l=>l.setIcon("lucide-copy").setTitle("Copy template path").onClick(()=>{navigator.clipboard.writeText(`{{${i}}}`)}));t==="Array"&&s.addItem(l=>l.setIcon("lucide-copy").setTitle("Copy template for loop").onClick(()=>{navigator.clipboard.writeText(`{% for item in ${i} %} +${o}`}}}catch(n){}return a}function Ts(e,t,a){new Be.Notice(createFragment(n=>{n.createSpan({text:`Error parsing template "${t}": `}),n.createEl("code",{text:qx(e,a)})}),1e4)}function ks(e,t,a){return new Error(`Error parsing template "${t}": ${qx(e,a)}`)}async function wp(e,t,a,n){let{template:i,headerTemplate:r,annotationTemplate:o,footerTemplate:s}=await Dx(e);if(!i&&!r&&!o&&!s)throw new Error(`No templates found for export ${e.exportFormat.name}`);let l="",u=!1;if(i){try{l=await bt(e.exportFormat.templatePath,i,t),u=Kt.hasPersist(l)}catch(m){if(n)throw ks(m,e.exportFormat.templatePath,i);return Ts(m,e.exportFormat.templatePath,i),!1}return u?vp(l):l}let c="",f="",p="";try{c=r?await bt(e.exportFormat.headerTemplatePath,r,t):""}catch(m){if(n)throw ks(m,e.exportFormat.headerTemplatePath,r);return Ts(m,e.exportFormat.headerTemplatePath,r),!1}try{f=o?await bt(e.exportFormat.annotationTemplatePath,o,t):""}catch(m){if(n)throw ks(m,e.exportFormat.annotationTemplatePath,o);return Ts(m,e.exportFormat.annotationTemplatePath,o),!1}try{p=s?await bt(e.exportFormat.footerTemplatePath,s,t):""}catch(m){if(n)throw ks(m,e.exportFormat.footerTemplatePath,s);return Ts(m,e.exportFormat.footerTemplatePath,s),!1}let b=[];r&&c.trim()&&b.push(c);let d=o&&(a+f).trim();return d&&b.push(Hx(a+f)),s&&p.trim()&&b.push(p),d?vp(b.join("")):b.join("")}function EO({exportFormat:e}){return e.templatePath||e.headerTemplatePath||e.annotationTemplatePath||e.footerTemplatePath||""}async function Xx(e,t){let a={};try{let n=rn(e);n&&(a=(await Cs(n,t)||[]).reduce((r,o)=>(o!=null&&o.path&&(r[o.path]=o),r),{}))}catch(n){console.error(n)}return a}async function $x(e,t,a){var i;let n=t.attachments.find(r=>{var o,s;return((o=r.path)==null?void 0:o.endsWith(".pdf"))&&((s=r.annotations)==null?void 0:s.length)});return t.annotations=(i=n==null?void 0:n.annotations)!=null?i:[],t.lastImportDate=a,t.lastExportDate=a,t.isFirstImport=a.valueOf()===0,await ws(e,t)}async function Ep(e,t){var h,v;let a=(0,Be.moment)(),{database:n,exportFormat:i,settings:r}=e,o=EO(e),s=Hn(),l=t||await on(n);if(!l.length)return[];let u=l[0].library,c;try{c=await nr(l,n,u)}catch(x){return[]}let f=[];for(let x=0,E=c.length;x<E;x++)await Ps(c[x],a,n,i.cslStyle);let p=an(),b=new Map,d=async(x,E)=>{if(!b.has(x)){let g=app.vault.getAbstractFileByPath(x),w=g?await app.vault.cachedRead(g):"",C=g?Gx(w):"",y=g?zx(w):(0,Be.moment)(0);b.set(x,{item:E,file:g,fileContent:w,lastImportDate:y,existingAnnotations:C})}},m=async x=>(0,Be.normalizePath)(Vn(ln(await bt(o,i.outputPathTemplate,x))));for(let x=0,E=c.length;x<E;x++){let g=c[x],w=g.attachments,C=await Xx(g,n);if(!w.length){let y=await ws(o,{annotations:[],...g}),S=await m(y);await d(S,g);continue}for(let y=0,S=w.length;y<S;y++){let A=w[y],_=A.path,P=_==null?void 0:_.endsWith(".pdf"),F=await ws(o,{annotations:[],...A,...g}),B=i.imageOutputPathTemplate?(0,Be.normalizePath)(Vn(ln(await bt(o,i.imageOutputPathTemplate,F)))):"",j=Jt.default.resolve(p,B),L=i.imageBaseNameTemplate?Vn(ln(await bt(o,i.imageBaseNameTemplate,F))):"image",k=await m(F),T=[];if(P&&((v=(h=C[_])==null?void 0:h.annotations)==null||v.forEach(N=>{var M;(M=N.annotationPosition.rects)!=null&&M.length&&T.push(Jx(N,A,j,B,L,!0))})),T.length&&r.shouldConcat&&(T=Fs(T)),P&&s)try{let N=await yp(_,{imageBaseName:L,imageDPI:r.pdfExportImageDPI,imageFormat:r.pdfExportImageFormat,imageOutputPath:j,imageQuality:r.pdfExportImageQuality,attemptOCR:r.pdfExportImageOCR,ocrLang:r.pdfExportImageOCRLang,tesseractPath:r.pdfExportImageTesseractPath,tessDataDir:r.pdfExportImageTessDataDir},r.exeOverridePath),M=JSON.parse(N);for(let D of M)Ux(D,A,B);r.shouldConcat&&M.length&&(M=Fs(M)),T.push(...M)}catch(N){}T.length&&(A.annotations=T),await d(k,g)}}for(let[x,E]of b.entries())try{let{existingAnnotations:g,file:w,fileContent:C,item:y,lastImportDate:S}=E,A=await $x(x,y,S),_=await wp(e,Kt.prepareTemplateData(A,C),g);if(!_)continue;w?await app.vault.modify(w,_):(await Ss(x),await app.vault.create(x,_)),f.push(x)}catch(g){new Be.Notice(`Import failed for ${x}, check developer console for details`,7e3),console.error(g)}return f}async function Yx(e){let t=(0,Be.moment)(),{database:a,format:n}=e,i=await on(a);if(!i.length)return null;let r=i[0].library,o;try{o=await nr(i,a,r)}catch(l){return null}if(o.length===0)return null;let s=[];for(let l=0,u=o.length;l<u;l++){await Ps(o[l],t,a,n.cslStyle);let c=o[l].attachments||[],p={attachment:c.find(b=>{var d;return!!((d=b.path)!=null&&d.endsWith(".pdf"))})||c.length?c[0]:null,...o[l]};s.push(await bt("",n.template,p))}return s.join(" ")}function SO(e){let t=e.exportFormats.find(n=>!!n.cslStyle);if(t)return t.cslStyle;let a=e.citeFormats.find(n=>!!n.cslStyle);if(a)return a.cslStyle}async function Kx(e){var u,c;let t={database:e.database,port:e.port},a=await on(t),n=Hn();if(!a.length)return null;let i=a[0].library,r;try{r=await nr(a,t,i)}catch(f){return null}let o=(0,Be.moment)(),s=SO(e);for(let f=0,p=r.length;f<p;f++)await Ps(r[f],o,t,s);let l=an();for(let f=0,p=r.length;f<p;f++){let b=r[f],d=b.attachments,m=await Xx(b,t);for(let h=0,v=d.length;h<v;h++){let x=d[h],E=x.path;if(!(E!=null&&E.endsWith(".pdf")))continue;let g=[];if((c=(u=m[E])==null?void 0:u.annotations)==null||c.forEach(w=>{var C;(C=w.annotationPosition.rects)!=null&&C.length&&g.push(Jx(w,d[h],Jt.default.join(l,"output_path"),"base_name","output_path"))}),e.shouldConcat&&g.length&&(g=Fs(g)),n)try{let w=await yp(E,{noWrite:!0,imageBaseName:"base_name",imageDPI:e.pdfExportImageDPI,imageFormat:e.pdfExportImageFormat,imageOutputPath:Jt.default.join(l,"output_path"),imageQuality:e.pdfExportImageQuality,attemptOCR:e.pdfExportImageOCR,ocrLang:e.pdfExportImageOCRLang,tesseractPath:e.pdfExportImageTesseractPath,tessDataDir:e.pdfExportImageTessDataDir},e.exeOverridePath),C=JSON.parse(w);for(let y of C)Ux(y,d[h],"output_path");e.shouldConcat&&C.length&&(C=Fs(C)),g.push(...C)}catch(w){return!1}g.length&&(x.annotations=g)}}return await Promise.all(r.map(async f=>{await $x("",f,(0,Be.moment)(0))})),r}var Un="zdc-debug",CO={scheme:"Tomorrow",author:"Chris Kempson (http://chriskempson.com)",base00:"#ffffff",base01:"#e0e0e0",base02:"#d6d6d6",base03:"#8e908c",base04:"#969896",base05:"#4d4d4c",base06:"#282a2e",base07:"#1d1f21",base08:"#c82829",base09:"#f5871f",base0A:"#eab700",base0B:"#718c00",base0C:"#3e999f",base0D:"#4271ae",base0E:"#8959a8",base0F:"#a3685a"},AO={scheme:"Tomorrow Night",author:"Chris Kempson (http://chriskempson.com)",base00:"#1d1f21",base01:"#282a2e",base02:"#373b41",base03:"#969896",base04:"#b4b7b4",base05:"#c5c8c6",base06:"#e0e0e0",base07:"#ffffff",base08:"#cc6666",base09:"#de935f",base0A:"#f0c674",base0B:"#b5bd68",base0C:"#8abeb7",base0D:"#81a2be",base0E:"#b294bb",base0F:"#a3685a"};function IO({plugin:e,formatIndex:t,templateData:a}){let[n,i]=I.useState(null),[r,o]=I.useState(null),[s,l]=I.useState(0);return I.useEffect(()=>{let u=e.settings.exportFormats[t],c=u.templatePath?e.app.vault.getAbstractFileByPath(bp(u.templatePath)):null,f=b=>{b&&b===c&&l(Date.now())},p=()=>{l(Date.now())};return e.emitter.on("fileUpdated",f),e.emitter.on("settingsUpdated",p),()=>{e.emitter.off("fileUpdated",f),e.emitter.off("settingsUpdated",p)}},[t]),I.useEffect(()=>{if(i(null),t===null)return;let u={settings:e.settings,database:{database:e.settings.database,port:e.settings.port},exportFormat:e.settings.exportFormats[t]};(async()=>{try{let f="",p=(0,Ba.moment)(0),b=await wp(u,Kt.prepareTemplateData({...a,lastImportDate:p,lastExportDate:p},f),"",!0);o(b||null)}catch(f){i(f.message)}})()},[t,s,a]),!r&&!n?null:I.createElement("div",{className:`zt-json-viewer__preview${n?" error":""}`},I.createElement("pre",null,I.createElement("code",null,n||r)))}function _O({plugin:e}){let[t,a]=I.useState(null),[n,i]=I.useState(null),[r,o]=I.useState(null),s=I.useCallback(()=>{Kx(e.settings).then(l=>{!l||l.length===0?a("No data retrieved"):(a(null),i(l[0]))})},[]);return I.createElement("div",{className:"zt-json-viewer"},I.createElement("div",{className:"zt-json-viewer__btns"},I.createElement("div",null,I.createElement("button",{onClick:s},"Prompt For Selection")),I.createElement("div",null,I.createElement("select",{className:"dropdown",onChange:l=>{l.target.value?o(Number(l.target.value)):o(null)}},I.createElement("option",{value:""},"Preview Import Format"),e.settings.exportFormats.map((l,u)=>I.createElement("option",{key:u,value:u},l.name))))),t?I.createElement("div",null,t):I.createElement("div",null,n&&I.createElement(I.Fragment,null,r!==null&&I.createElement(IO,{plugin:e,formatIndex:r,templateData:n}),I.createElement("div",{className:"zt-json-viewer__data"},I.createElement(Sg,{data:n,sortObjectKeys:(l,u)=>l.localeCompare(u),isCustomNode:l=>l instanceof Ba.moment,valueRenderer:RO,labelRenderer:TO,theme:document.body.hasClass("theme-dark")?AO:CO,invertTheme:!1})))))}var Os=class extends Ba.ItemView{constructor(a,n){super(n);this.plugin=a,this.mountJsonViewer()}getViewType(){return Un}getIcon(){return"gear"}getDisplayText(){return"Zotero Data Explorer"}mountJsonViewer(){I.unmountComponentAtNode(this.contentEl),I.render(I.createElement(_O,{plugin:this.plugin}),this.contentEl)}unmountJsonViewer(){I.unmountComponentAtNode(this.contentEl)}async onClose(){this.unmountJsonViewer()}},TO=(e,t)=>{let a=e.length===1,n=e.slice(0,-1),i=kO(n);return I.createElement("span",{onContextMenu:a?void 0:o=>{let s=new Ba.Menu().addItem(l=>l.setIcon("lucide-copy").setTitle("Copy template path").onClick(()=>{navigator.clipboard.writeText(`{{${i}}}`)}));t==="Array"&&s.addItem(l=>l.setIcon("lucide-copy").setTitle("Copy template for loop").onClick(()=>{navigator.clipboard.writeText(`{% for item in ${i} %} {% item %} -{% endfor %}`)})),o.preventDefault(),s.showAtMouseEvent(o)}},a?"Template Data":e[0])},FO=e=>e.map(OO).reverse().join(""),PO=/^[$_\p{ID_Start}][$\u200c\u200d\p{ID_Continue}]*$/u,OO=(e,t,a)=>typeof e=="number"?`[${e}]`:PO.test(e)?t===a.length-1?`${e}`:`.${e}`:`[${JSON.stringify(e)}]`,RO=/^#(?:[\dA-F]{3}){1,2}$|^#(?:[\dA-F]{4}){1,2}$/i,BO=(e,t)=>t instanceof Ba.moment?A.createElement(A.Fragment,null,"\u{1F4C5} ",t.format("l LTS")):typeof t=="string"&&RO.test(t)?A.createElement(A.Fragment,null,A.createElement("span",{style:{backgroundColor:t},className:"zt-color-chip"}),t):typeof t=="string"&&t.length>800?t.slice(0,800)+"...":e;var UA=_e(WA()),Zl=require("obsidian"),Sf=_e(require("os"));var VA=require("obsidian");function ca({name:e,className:t}){return A.createElement("span",{"data-icon":e,className:t,ref:a=>{a&&(0,VA.setIcon)(a,e)}})}function l9({name:e,description:t}){return A.createElement("div",{className:"setting-item-info"},A.createElement("div",{className:"setting-item-name"},e),A.createElement("div",{className:"setting-item-description"},t))}function He({name:e,description:t,children:a,isHeading:n}){return A.createElement("div",{className:`zt-setting-item setting-item${n?" setting-item-heading":""}`},A.createElement(l9,{name:e,description:t}),A.createElement("div",{className:"setting-item-control"},a))}var Va="1.0.15",Cf=1,c9={darwin:{x64:`https://github.com/mgmeyers/pdfannots2json/releases/download/${Va}/pdfannots2json.Mac.Intel.tar.gz`,arm64:`https://github.com/mgmeyers/pdfannots2json/releases/download/${Va}/pdfannots2json.Mac.M1.tar.gz`},linux:{x64:`https://github.com/mgmeyers/pdfannots2json/releases/download/${Va}/pdfannots2json.Linux.x64.tar.gz`},win32:{x64:`https://github.com/mgmeyers/pdfannots2json/releases/download/${Va}/pdfannots2json.Windows.x64.zip`}};function u9(){let e=c9[Sf.default.platform()];if(!e)return null;let t=e[Sf.default.arch()];return t||null}async function Af(){let e=u9();if(console.log("Obsidian Zotero Integration: Downloading "+e),!e)return!1;try{xx()&&Ex(),gx()&&wx(),Hn()&&yx(),await(0,UA.default)(e,_t(),{extract:!0}),vx()}catch(t){console.error(t),new Zl.Notice("Error downloading PDF utility. Check the console for more details.",1e4)}return!0}function JA(e){let[t,a]=A.useState(null),[n,i]=A.useState(!1),[r,o]=A.useState(!1),[s,l]=A.useState(e.settings.exeOverridePath),u=A.useMemo(()=>(0,Zl.debounce)(h=>{l(h),e.updateSetting("exeOverridePath",h)},150,!0),[]);A.useEffect(()=>{let h=Hn(s);o(h),h&&Sx(s).then(m=>{a(`v${Va}`===m)}).catch(()=>{})},[s]);let c=A.useCallback(()=>{i(!0),Af().then(h=>{i(!1),h&&(a(!0),o(!0))})},[]),f=["Extracting data from PDFs requires an external tool.","This plugin will still work without it, but annotations will not be included in exports."],b=A.createElement(He,{name:"PDF Utility Path Override",description:A.createElement(A.Fragment,null,"Override the path to the PDF utility. Specify an absolute path to the pdfannots2json executable."," ",A.createElement("a",{href:"https://github.com/mgmeyers/pdfannots2json/releases",target:"_blank",rel:"noreferrer"},"Download the executable here.")," ","You may need to provide Obsidian the appropriate OS permissions to access the executable.")},A.createElement("input",{onChange:h=>u(h.target.value),type:"text",spellCheck:!1,value:s}),A.createElement("div",{className:"clickable-icon setting-editor-extra-setting-button","aria-label":"Select the pdfannots2json executable",onClick:()=>{let h=require("electron").remote.dialog.showOpenDialogSync({properties:["openFile"]});h&&h.length&&u(h[0])}},A.createElement(ca,{name:"lucide-folder-open"})));if(r&&t)return A.createElement(A.Fragment,null,A.createElement(He,{name:"PDF Utility",description:f.join(" ")},A.createElement("div",{className:"zt-asset-success"},A.createElement("div",{className:"zt-asset-success__icon"},A.createElement(ca,{name:"check-small"})),A.createElement("div",{className:"zt-asset-success__message"},"PDF utility is up to date."))),b);let d=A.createElement(A.Fragment,null,f.join(" ")," ",r&&A.createElement("strong",{className:"mod-warning"},"The PDF extraction tool requires updating. Please re-download."),!r&&!s&&A.createElement("strong",null,"Click the button to download."));return A.createElement(A.Fragment,null,A.createElement(He,{name:"PDF Utility",description:d},!s&&A.createElement("button",{disabled:n,onClick:c},n?"Downloading...":"Download")),b)}var Ja=require("obsidian");var H_=_e(n2());function i2(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),a.push.apply(a,n)}return a}function ae(e){for(var t=1;t<arguments.length;t++){var a=arguments[t]!=null?arguments[t]:{};t%2?i2(Object(a),!0).forEach(function(n){jt(e,n,a[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i2(Object(a)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(a,n))})}return e}function If(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r2(e,t){for(var a=0;a<t.length;a++){var n=t[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,zi(n.key),n)}}function _f(e,t,a){return t&&r2(e.prototype,t),a&&r2(e,a),Object.defineProperty(e,"prototype",{writable:!1}),e}function Nr(e,t){return Nr=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(n,i){return n.__proto__=i,n},Nr(e,t)}function Tf(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Nr(e,t)}function fi(e){return fi=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(a){return a.__proto__||Object.getPrototypeOf(a)},fi(e)}function kf(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function Ff(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Pf(e,t){if(t&&(ft(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return Ff(e)}function Of(e){var t=kf();return function(){var n=fi(e),i;if(t){var r=fi(this).constructor;i=Reflect.construct(n,arguments,r)}else i=n.apply(this,arguments);return Pf(this,i)}}function Rf(e){if(Array.isArray(e))return jn(e)}function Bf(e){if(typeof Symbol!="undefined"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function Nf(){throw new TypeError(`Invalid attempt to spread non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ql(e){return Rf(e)||Bf(e)||Gi(e)||Nf()}function h9(e){if(e.sheet)return e.sheet;for(var t=0;t<document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]}function v9(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),e.nonce!==void 0&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}var o2=function(){function e(a){var n=this;this._insertTag=function(i){var r;n.tags.length===0?n.insertionPoint?r=n.insertionPoint.nextSibling:n.prepend?r=n.container.firstChild:r=n.before:r=n.tags[n.tags.length-1].nextSibling,n.container.insertBefore(i,r),n.tags.push(i)},this.isSpeedy=a.speedy===void 0?!0:a.speedy,this.tags=[],this.ctr=0,this.nonce=a.nonce,this.key=a.key,this.container=a.container,this.prepend=a.prepend,this.insertionPoint=a.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(n){n.forEach(this._insertTag)},t.insert=function(n){this.ctr%(this.isSpeedy?65e3:1)===0&&this._insertTag(v9(this));var i=this.tags[this.tags.length-1];if(!1)var r;if(this.isSpeedy){var o=h9(i);try{o.insertRule(n,o.cssRules.length)}catch(s){}}else i.appendChild(document.createTextNode(n));this.ctr++},t.flush=function(){this.tags.forEach(function(n){return n.parentNode&&n.parentNode.removeChild(n)}),this.tags=[],this.ctr=0},e}();var dt="-ms-",jr="-moz-",Se="-webkit-",Xl="comm",mi="rule",hi="decl";var s2="@import";var $l="@keyframes";var l2="@layer";var c2=Math.abs,xn=String.fromCharCode,u2=Object.assign;function p2(e,t){return $e(e,0)^45?(((t<<2^$e(e,0))<<2^$e(e,1))<<2^$e(e,2))<<2^$e(e,3):0}function Yl(e){return e.trim()}function jf(e,t){return(e=t.exec(e))?e[0]:e}function ye(e,t,a){return e.replace(t,a)}function Lr(e,t){return e.indexOf(t)}function $e(e,t){return e.charCodeAt(t)|0}function Ua(e,t,a){return e.slice(t,a)}function yt(e){return e.length}function bi(e){return e.length}function gi(e,t){return t.push(e),e}function Lf(e,t){return e.map(t).join("")}var Kl=1,xi=1,d2=0,wt=0,Qe=0,wi="";function Mr(e,t,a,n,i,r,o){return{value:e,root:t,parent:a,type:n,props:i,children:r,line:Kl,column:xi,length:o,return:""}}function Ei(e,t){return u2(Mr("",null,null,"",null,null,0),e,{length:-e.length},t)}function f2(){return Qe}function m2(){return Qe=wt>0?$e(wi,--wt):0,xi--,Qe===10&&(xi=1,Kl--),Qe}function Et(){return Qe=wt<d2?$e(wi,wt++):0,xi++,Qe===10&&(xi=1,Kl++),Qe}function Ht(){return $e(wi,wt)}function Dr(){return wt}function Si(e,t){return Ua(wi,e,t)}function yi(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function Ql(e){return Kl=xi=1,d2=yt(wi=e),wt=0,[]}function ec(e){return wi="",e}function Ci(e){return Yl(Si(wt-1,Mf(e===91?e+2:e===40?e+1:e)))}function h2(e){for(;(Qe=Ht())&&Qe<33;)Et();return yi(e)>2||yi(Qe)>3?"":" "}function v2(e,t){for(;--t&&Et()&&!(Qe<48||Qe>102||Qe>57&&Qe<65||Qe>70&&Qe<97););return Si(e,Dr()+(t<6&&Ht()==32&&Et()==32))}function Mf(e){for(;Et();)switch(Qe){case e:return wt;case 34:case 39:e!==34&&e!==39&&Mf(Qe);break;case 40:e===41&&Mf(e);break;case 92:Et();break}return wt}function b2(e,t){for(;Et()&&e+Qe!==47+10;)if(e+Qe===42+42&&Ht()===47)break;return"/*"+Si(t,wt-1)+"*"+xn(e===47?e:Et())}function g2(e){for(;!yi(Ht());)Et();return Si(e,wt)}function w2(e){return ec(tc("",null,null,null,[""],e=Ql(e),0,[0],e))}function tc(e,t,a,n,i,r,o,s,l){for(var u=0,c=0,f=o,p=0,b=0,d=0,h=1,m=1,v=1,x=0,E="",g=i,w=r,C=n,y=E;m;)switch(d=x,x=Et()){case 40:if(d!=108&&$e(y,f-1)==58){Lr(y+=ye(Ci(x),"&","&\f"),"&\f")!=-1&&(v=-1);break}case 34:case 39:case 91:y+=Ci(x);break;case 9:case 10:case 13:case 32:y+=h2(d);break;case 92:y+=v2(Dr()-1,7);continue;case 47:switch(Ht()){case 42:case 47:gi(b9(b2(Et(),Dr()),t,a),l);break;default:y+="/"}break;case 123*h:s[u++]=yt(y)*v;case 125*h:case 59:case 0:switch(x){case 0:case 125:m=0;case 59+c:v==-1&&(y=ye(y,/\f/g,"")),b>0&&yt(y)-f&&gi(b>32?y2(y+";",n,a,f-1):y2(ye(y," ","")+";",n,a,f-2),l);break;case 59:y+=";";default:if(gi(C=x2(y,t,a,u,c,i,s,E,g=[],w=[],f),r),x===123)if(c===0)tc(y,t,C,C,g,r,f,s,w);else switch(p===99&&$e(y,3)===110?100:p){case 100:case 108:case 109:case 115:tc(e,C,C,n&&gi(x2(e,C,C,0,0,i,s,E,i,g=[],f),w),i,w,f,s,n?g:w);break;default:tc(y,C,C,C,[""],w,0,s,w)}}u=c=b=0,h=v=1,E=y="",f=o;break;case 58:f=1+yt(y),b=d;default:if(h<1){if(x==123)--h;else if(x==125&&h++==0&&m2()==125)continue}switch(y+=xn(x),x*h){case 38:v=c>0?1:(y+="\f",-1);break;case 44:s[u++]=(yt(y)-1)*v,v=1;break;case 64:Ht()===45&&(y+=Ci(Et())),p=Ht(),c=f=yt(E=y+=g2(Dr())),x++;break;case 45:d===45&&yt(y)==2&&(h=0)}}return r}function x2(e,t,a,n,i,r,o,s,l,u,c){for(var f=i-1,p=i===0?r:[""],b=bi(p),d=0,h=0,m=0;d<n;++d)for(var v=0,x=Ua(e,f+1,f=c2(h=o[d])),E=e;v<b;++v)(E=Yl(h>0?p[v]+" "+x:ye(x,/&\f/g,p[v])))&&(l[m++]=E);return Mr(e,t,a,i===0?mi:s,l,u,c)}function b9(e,t,a){return Mr(e,t,a,Xl,xn(f2()),Ua(e,2,-2),0)}function y2(e,t,a,n){return Mr(e,t,a,hi,Ua(e,0,n),Ua(e,n+1,-1),n)}function yn(e,t){for(var a="",n=bi(e),i=0;i<n;i++)a+=t(e[i],i,e,t)||"";return a}function E2(e,t,a,n){switch(e.type){case l2:if(e.children.length)break;case s2:case hi:return e.return=e.return||e.value;case Xl:return"";case $l:return e.return=e.value+"{"+yn(e.children,n)+"}";case mi:e.value=e.props.join(",")}return yt(a=yn(e.children,n))?e.return=e.value+"{"+a+"}":""}function S2(e){var t=bi(e);return function(a,n,i,r){for(var o="",s=0;s<t;s++)o+=e[s](a,n,i,r)||"";return o}}function C2(e){return function(t){t.root||(t=t.return)&&e(t)}}function A2(e){var t=Object.create(null);return function(a){return t[a]===void 0&&(t[a]=e(a)),t[a]}}var g9=function(t,a,n){for(var i=0,r=0;i=r,r=Ht(),i===38&&r===12&&(a[n]=1),!yi(r);)Et();return Si(t,wt)},x9=function(t,a){var n=-1,i=44;do switch(yi(i)){case 0:i===38&&Ht()===12&&(a[n]=1),t[n]+=g9(wt-1,a,n);break;case 2:t[n]+=Ci(i);break;case 4:if(i===44){t[++n]=Ht()===58?"&\f":"",a[n]=t[n].length;break}default:t[n]+=xn(i)}while(i=Et());return t},y9=function(t,a){return ec(x9(Ql(t),a))},I2=new WeakMap,w9=function(t){if(!(t.type!=="rule"||!t.parent||t.length<1)){for(var a=t.value,n=t.parent,i=t.column===n.column&&t.line===n.line;n.type!=="rule";)if(n=n.parent,!n)return;if(!(t.props.length===1&&a.charCodeAt(0)!==58&&!I2.get(n))&&!i){I2.set(t,!0);for(var r=[],o=y9(a,r),s=n.props,l=0,u=0;l<o.length;l++)for(var c=0;c<s.length;c++,u++)t.props[u]=r[l]?o[l].replace(/&\f/g,s[c]):s[c]+" "+o[l]}}},E9=function(t){if(t.type==="decl"){var a=t.value;a.charCodeAt(0)===108&&a.charCodeAt(2)===98&&(t.return="",t.value="")}};function _2(e,t){switch(p2(e,t)){case 5103:return Se+"print-"+e+e;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return Se+e+e;case 5349:case 4246:case 4810:case 6968:case 2756:return Se+e+jr+e+dt+e+e;case 6828:case 4268:return Se+e+dt+e+e;case 6165:return Se+e+dt+"flex-"+e+e;case 5187:return Se+e+ye(e,/(\w+).+(:[^]+)/,Se+"box-$1$2"+dt+"flex-$1$2")+e;case 5443:return Se+e+dt+"flex-item-"+ye(e,/flex-|-self/,"")+e;case 4675:return Se+e+dt+"flex-line-pack"+ye(e,/align-content|flex-|-self/,"")+e;case 5548:return Se+e+dt+ye(e,"shrink","negative")+e;case 5292:return Se+e+dt+ye(e,"basis","preferred-size")+e;case 6060:return Se+"box-"+ye(e,"-grow","")+Se+e+dt+ye(e,"grow","positive")+e;case 4554:return Se+ye(e,/([^-])(transform)/g,"$1"+Se+"$2")+e;case 6187:return ye(ye(ye(e,/(zoom-|grab)/,Se+"$1"),/(image-set)/,Se+"$1"),e,"")+e;case 5495:case 3959:return ye(e,/(image-set\([^]*)/,Se+"$1$`$1");case 4968:return ye(ye(e,/(.+:)(flex-)?(.*)/,Se+"box-pack:$3"+dt+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+Se+e+e;case 4095:case 3583:case 4068:case 2532:return ye(e,/(.+)-inline(.+)/,Se+"$1$2")+e;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(yt(e)-1-t>6)switch($e(e,t+1)){case 109:if($e(e,t+4)!==45)break;case 102:return ye(e,/(.+:)(.+)-([^]+)/,"$1"+Se+"$2-$3$1"+jr+($e(e,t+3)==108?"$3":"$2-$3"))+e;case 115:return~Lr(e,"stretch")?_2(ye(e,"stretch","fill-available"),t)+e:e}break;case 4949:if($e(e,t+1)!==115)break;case 6444:switch($e(e,yt(e)-3-(~Lr(e,"!important")&&10))){case 107:return ye(e,":",":"+Se)+e;case 101:return ye(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+Se+($e(e,14)===45?"inline-":"")+"box$3$1"+Se+"$2$3$1"+dt+"$2box$3")+e}break;case 5936:switch($e(e,t+11)){case 114:return Se+e+dt+ye(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return Se+e+dt+ye(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return Se+e+dt+ye(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return Se+e+dt+e+e}return e}var S9=function(t,a,n,i){if(t.length>-1&&!t.return)switch(t.type){case hi:t.return=_2(t.value,t.length);break;case $l:return yn([Ei(t,{value:ye(t.value,"@","@"+Se)})],i);case mi:if(t.length)return Lf(t.props,function(r){switch(jf(r,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return yn([Ei(t,{props:[ye(r,/:(read-\w+)/,":"+jr+"$1")]})],i);case"::placeholder":return yn([Ei(t,{props:[ye(r,/:(plac\w+)/,":"+Se+"input-$1")]}),Ei(t,{props:[ye(r,/:(plac\w+)/,":"+jr+"$1")]}),Ei(t,{props:[ye(r,/:(plac\w+)/,dt+"input-$1")]})],i)}return""})}},C9=[S9],Df=function(t){var a=t.key;if(a==="css"){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,function(h){var m=h.getAttribute("data-emotion");m.indexOf(" ")!==-1&&(document.head.appendChild(h),h.setAttribute("data-s",""))})}var i=t.stylisPlugins||C9,r={},o,s=[];o=t.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+a+' "]'),function(h){for(var m=h.getAttribute("data-emotion").split(" "),v=1;v<m.length;v++)r[m[v]]=!0;s.push(h)});var l,u=[w9,E9];{var c,f=[E2,C2(function(h){c.insert(h)})],p=S2(u.concat(i,f)),b=function(m){return yn(w2(m),p)};l=function(m,v,x,E){c=x,b(m?m+"{"+v.styles+"}":v.styles),E&&(d.inserted[v.name]=!0)}}var d={key:a,sheet:new o2({key:a,container:o,nonce:t.nonce,speedy:t.speedy,prepend:t.prepend,insertionPoint:t.insertionPoint}),nonce:t.nonce,inserted:r,registered:{},insert:l};return d.sheet.hydrate(s),d};var L9=!0;function Uf(e,t,a){var n="";return a.split(" ").forEach(function(i){e[i]!==void 0?t.push(e[i]+";"):n+=i+" "}),n}var dc=function(t,a,n){var i=t.key+"-"+a.name;(n===!1||L9===!1)&&t.registered[i]===void 0&&(t.registered[i]=a.styles)},Jf=function(t,a,n){dc(t,a,n);var i=t.key+"-"+a.name;if(t.inserted[a.name]===void 0){var r=a;do t.insert(a===r?"."+i:"",r,t.sheet,!0),r=r.next;while(r!==void 0)}};function D2(e){for(var t=0,a,n=0,i=e.length;i>=4;++n,i-=4)a=e.charCodeAt(n)&255|(e.charCodeAt(++n)&255)<<8|(e.charCodeAt(++n)&255)<<16|(e.charCodeAt(++n)&255)<<24,a=(a&65535)*1540483477+((a>>>16)*59797<<16),a^=a>>>24,t=(a&65535)*1540483477+((a>>>16)*59797<<16)^(t&65535)*1540483477+((t>>>16)*59797<<16);switch(i){case 3:t^=(e.charCodeAt(n+2)&255)<<16;case 2:t^=(e.charCodeAt(n+1)&255)<<8;case 1:t^=e.charCodeAt(n)&255,t=(t&65535)*1540483477+((t>>>16)*59797<<16)}return t^=t>>>13,t=(t&65535)*1540483477+((t>>>16)*59797<<16),((t^t>>>15)>>>0).toString(36)}var z2={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1};var M9=/[A-Z]|^ms/g,D9=/_EMO_([^_]+?)_([^]*?)_EMO_/g,V2=function(t){return t.charCodeAt(1)===45},G2=function(t){return t!=null&&typeof t!="boolean"},Zf=A2(function(e){return V2(e)?e:e.replace(M9,"-$&").toLowerCase()}),H2=function(t,a){switch(t){case"animation":case"animationName":if(typeof a=="string")return a.replace(D9,function(n,i,r){return ua={name:i,styles:r,next:ua},i})}return z2[t]!==1&&!V2(t)&&typeof a=="number"&&a!==0?a+"px":a};function zr(e,t,a){if(a==null)return"";if(a.__emotion_styles!==void 0)return a;switch(typeof a){case"boolean":return"";case"object":{if(a.anim===1)return ua={name:a.name,styles:a.styles,next:ua},a.name;if(a.styles!==void 0){var n=a.next;if(n!==void 0)for(;n!==void 0;)ua={name:n.name,styles:n.styles,next:ua},n=n.next;var i=a.styles+";";return i}return z9(e,t,a)}case"function":{if(e!==void 0){var r=ua,o=a(e);return ua=r,zr(e,t,o)}break}case"string":if(!1)var s,l;break}if(t==null)return a;var u=t[a];return u!==void 0?u:a}function z9(e,t,a){var n="";if(Array.isArray(a))for(var i=0;i<a.length;i++)n+=zr(e,t,a[i])+";";else for(var r in a){var o=a[r];if(typeof o!="object")t!=null&&t[o]!==void 0?n+=r+"{"+t[o]+"}":G2(o)&&(n+=Zf(r)+":"+H2(r,o)+";");else if(Array.isArray(o)&&typeof o[0]=="string"&&(t==null||t[o[0]]===void 0))for(var s=0;s<o.length;s++)G2(o[s])&&(n+=Zf(r)+":"+H2(r,o[s])+";");else{var l=zr(e,t,o);switch(r){case"animation":case"animationName":{n+=Zf(r)+":"+l+";";break}default:n+=r+"{"+l+"}"}}}return n}var W2=/label:\s*([^\s;\n{]+)\s*(;|$)/g;var ua,fc=function(t,a,n){if(t.length===1&&typeof t[0]=="object"&&t[0]!==null&&t[0].styles!==void 0)return t[0];var i=!0,r="";ua=void 0;var o=t[0];o==null||o.raw===void 0?(i=!1,r+=zr(n,a,o)):r+=o[0];for(var s=1;s<t.length;s++)r+=zr(n,a,t[s]),i&&(r+=o[s]);var l;W2.lastIndex=0;for(var u="",c;(c=W2.exec(r))!==null;)u+="-"+c[1];var f=D2(r)+u;return{name:f,styles:r,next:ua}};var G9=function(t){return t()},H9=wo?wo:!1,qf=H9||G9;var U2=!0,hc={}.hasOwnProperty,mc=_a(typeof HTMLElement!="undefined"?Df({key:"css"}):null),qU=mc.Provider;var $f=function(t){return Nn(function(a,n){var i=Kt(mc);return t(a,i,n)})};U2||($f=function(t){return function(a){var n=Kt(mc);return n===null?(n=Df({key:"css"}),se(mc.Provider,{value:n},t(a,n))):t(a,n)}});var J2=_a({});var Xf="__EMOTION_TYPE_PLEASE_DO_NOT_USE__";var Z2=function(t,a){var n={};for(var i in a)hc.call(a,i)&&(n[i]=a[i]);if(n[Xf]=t,!1)var r;return n},W9=function(t){var a=t.cache,n=t.serialized,i=t.isStringTag;return dc(a,n,i),qf(function(){return Jf(a,n,i)}),null},V9=$f(function(e,t,a){var n=e.css;typeof n=="string"&&t.registered[n]!==void 0&&(n=t.registered[n]);var i=e[Xf],r=[n],o="";typeof e.className=="string"?o=Uf(t.registered,r,e.className):e.className!=null&&(o=e.className+" ");var s=fc(r,void 0,Kt(J2));if(!1)var l;o+=t.key+"-"+s.name;var u={};for(var c in e)hc.call(e,c)&&c!=="css"&&c!==Xf&&(u[c]=e[c]);return u.ref=a,u.className=o,se(rt,null,se(W9,{cache:t,serialized:s,isStringTag:typeof i=="string"}),se(i,u))}),q2=V9;var iJ=_e(M2());var re=function(t,a){var n=arguments;if(a==null||!hc.call(a,"css"))return se.apply(void 0,n);var i=n.length,r=new Array(i);r[0]=q2,r[1]=Z2(t,a);for(var o=2;o<i;o++)r[o]=n[o];return se.apply(null,r)};function Gr(){for(var e=arguments.length,t=new Array(e),a=0;a<e;a++)t[a]=arguments[a];return fc(t)}var X2=function(){var t=Gr.apply(void 0,arguments),a="animation-"+t.name;return{name:a,styles:"@keyframes "+a+"{"+t.styles+"}",anim:1,toString:function(){return"_EMO_"+this.name+"_"+this.styles+"_EMO_"}}};function Yf(e,t){if(e==null)return{};var a={},n=Object.keys(e),i,r;for(r=0;r<n.length;r++)i=n[r],!(t.indexOf(i)>=0)&&(a[i]=e[i]);return a}function Wt(e,t){if(e==null)return{};var a=Yf(e,t),n,i;if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i<r.length;i++)n=r[i],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}function Kf(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function $2(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}var U9=["top","right","bottom","left"],fJ=U9.reduce((e,t)=>e.concat(t,t+"-start",t+"-end"),[]);function pa(e){var t;return((t=e.ownerDocument)==null?void 0:t.defaultView)||window}function eI(e){return pa(e).getComputedStyle(e)}function tI(e){return e instanceof pa(e).Node}function aI(e){return tI(e)?(e.nodeName||"").toLowerCase():"#document"}function am(e){return e instanceof pa(e).HTMLElement}function em(e){return e instanceof pa(e).Element}function Y2(e){return typeof ShadowRoot!="undefined"&&(e instanceof pa(e).ShadowRoot||e instanceof ShadowRoot)}function nI(e){let{overflow:t,overflowX:a,overflowY:n,display:i}=eI(e);return/auto|scroll|overlay|hidden|clip/.test(t+n+a)&&!["inline","contents"].includes(i)}function J9(){return!(typeof CSS=="undefined"||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function Z9(e){return["html","body","#document"].includes(aI(e))}var q9=Math.min,X9=Math.max,bc=Math.round,vc=Math.floor,nm=e=>({x:e,y:e});function $9(e){let t=eI(e),a=parseFloat(t.width)||0,n=parseFloat(t.height)||0,i=am(e),r=i?e.offsetWidth:a,o=i?e.offsetHeight:n,s=bc(a)!==r||bc(n)!==o;return s&&(a=r,n=o),{width:a,height:n,$:s}}function im(e){return em(e)?e:e.contextElement}function Qf(e){let t=im(e);if(!am(t))return nm(1);let a=t.getBoundingClientRect(),{width:n,height:i,$:r}=$9(t),o=(r?bc(a.width):a.width)/n,s=(r?bc(a.height):a.height)/i;return o&&Number.isFinite(o)||(o=1),s&&Number.isFinite(s)||(s=1),{x:o,y:s}}var K2=nm(0);function Y9(e,t,a){var n,i;if(t===void 0&&(t=!0),!J9())return K2;let r=e?pa(e):window;return!a||t&&a!==r?K2:{x:((n=r.visualViewport)==null?void 0:n.offsetLeft)||0,y:((i=r.visualViewport)==null?void 0:i.offsetTop)||0}}function Q2(e,t,a,n){t===void 0&&(t=!1),a===void 0&&(a=!1);let i=e.getBoundingClientRect(),r=im(e),o=nm(1);t&&(n?em(n)&&(o=Qf(n)):o=Qf(e));let s=Y9(r,a,n),l=(i.left+s.x)/o.x,u=(i.top+s.y)/o.y,c=i.width/o.x,f=i.height/o.y;if(r){let p=pa(r),b=n&&em(n)?pa(n):n,d=p.frameElement;for(;d&&n&&b!==p;){let h=Qf(d),m=d.getBoundingClientRect(),v=getComputedStyle(d),x=m.left+(d.clientLeft+parseFloat(v.paddingLeft))*h.x,E=m.top+(d.clientTop+parseFloat(v.paddingTop))*h.y;l*=h.x,u*=h.y,c*=h.x,f*=h.y,l+=x,u+=E,d=pa(d).frameElement}}return $2({width:c,height:f,x:l,y:u})}function iI(e){return((tI(e)?e.ownerDocument:e.document)||window.document).documentElement}function K9(e){if(aI(e)==="html")return e;let t=e.assignedSlot||e.parentNode||Y2(e)&&e.host||iI(e);return Y2(t)?t.host:t}function rI(e){let t=K9(e);return Z9(t)?e.ownerDocument?e.ownerDocument.body:e.body:am(t)&&nI(t)?t:rI(t)}function tm(e,t){var a;t===void 0&&(t=[]);let n=rI(e),i=n===((a=e.ownerDocument)==null?void 0:a.body),r=pa(n);return i?t.concat(r,r.visualViewport||[],nI(n)?n:[]):t.concat(n,tm(n))}function oI(e,t,a,n){n===void 0&&(n={});let{ancestorScroll:i=!0,ancestorResize:r=!0,elementResize:o=typeof ResizeObserver=="function",layoutShift:s=typeof IntersectionObserver=="function",animationFrame:l=!1}=n,u=im(e),c=i||r?[...u?tm(u):[],...tm(t)]:[];c.forEach(m=>{i&&m.addEventListener("scroll",a,{passive:!0}),r&&m.addEventListener("resize",a)});let f=u&&s?function(m,v){let x,E=null,g=iI(m);function w(){clearTimeout(x),E&&E.disconnect(),E=null}return function C(y,S){y===void 0&&(y=!1),S===void 0&&(S=1),w();let{left:I,top:_,width:P,height:F}=m.getBoundingClientRect();if(y||v(),!P||!F)return;let B={rootMargin:-vc(_)+"px "+-vc(g.clientWidth-(I+P))+"px "+-vc(g.clientHeight-(_+F))+"px "+-vc(I)+"px",threshold:X9(0,q9(1,S))||1},N=!0;function L(k){let T=k[0].intersectionRatio;if(T!==S){if(!N)return C();T?C(!1,T):x=setTimeout(()=>{C(!1,1e-7)},100)}N=!1}try{E=new IntersectionObserver(L,{...B,root:g.ownerDocument})}catch(k){E=new IntersectionObserver(L,B)}E.observe(m)}(!0),w}(u,a):null,p,b=-1,d=null;o&&(d=new ResizeObserver(m=>{let[v]=m;v&&v.target===u&&d&&(d.unobserve(t),cancelAnimationFrame(b),b=requestAnimationFrame(()=>{d&&d.observe(t)})),a()}),u&&!l&&d.observe(u),d.observe(t));let h=l?Q2(e):null;return l&&function m(){let v=Q2(e);!h||v.x===h.x&&v.y===h.y&&v.width===h.width&&v.height===h.height||a(),h=v,p=requestAnimationFrame(m)}(),a(),()=>{c.forEach(m=>{i&&m.removeEventListener("scroll",a),r&&m.removeEventListener("resize",a)}),f&&f(),d&&d.disconnect(),d=null,l&&cancelAnimationFrame(p)}}var Q9=ka,gc=Q9;var eL=["className","clearValue","cx","getStyles","getClassNames","getValue","hasValue","isMulti","isRtl","options","selectOption","selectProps","setValue","theme"],Hr=function(){};function tL(e,t){return t?t[0]==="-"?e+t:e+"__"+t:e}function lI(e,t){for(var a=arguments.length,n=new Array(a>2?a-2:0),i=2;i<a;i++)n[i-2]=arguments[i];var r=[].concat(n);if(t&&e)for(var o in t)t.hasOwnProperty(o)&&t[o]&&r.push("".concat(tL(e,o)));return r.filter(function(s){return s}).map(function(s){return String(s).trim()}).join(" ")}var om=function(t){return sL(t)?t.filter(Boolean):ft(t)==="object"&&t!==null?[t]:[]},cI=function(t){t.className,t.clearValue,t.cx,t.getStyles,t.getClassNames,t.getValue,t.hasValue,t.isMulti,t.isRtl,t.options,t.selectOption,t.selectProps,t.setValue,t.theme;var a=Wt(t,eL);return ae({},a)},Ze=function(t,a,n){var i=t.cx,r=t.getStyles,o=t.getClassNames,s=t.className;return{css:r(a,t),className:i(n!=null?n:{},o(a,t),s)}};function uI(e,t,a){if(a){var n=a(e,t);if(typeof n=="string")return n}return e}function Wr(e){return[document.documentElement,document.body,window].indexOf(e)>-1}function aL(e){return Wr(e)?window.innerHeight:e.clientHeight}function pI(e){return Wr(e)?window.pageYOffset:e.scrollTop}function wc(e,t){if(Wr(e)){window.scrollTo(0,t);return}e.scrollTop=t}function nL(e){var t=getComputedStyle(e),a=t.position==="absolute",n=/(auto|scroll)/;if(t.position==="fixed")return document.documentElement;for(var i=e;i=i.parentElement;)if(t=getComputedStyle(i),!(a&&t.position==="static")&&n.test(t.overflow+t.overflowY+t.overflowX))return i;return document.documentElement}function iL(e,t,a,n){return a*((e=e/n-1)*e*e+1)+t}function xc(e,t){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:200,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:Hr,i=pI(e),r=t-i,o=10,s=0;function l(){s+=o;var u=iL(s,i,r,a);wc(e,u),s<a?window.requestAnimationFrame(l):n(e)}l()}function sm(e,t){var a=e.getBoundingClientRect(),n=t.getBoundingClientRect(),i=t.offsetHeight/3;n.bottom+i>a.bottom?wc(e,Math.min(t.offsetTop+t.clientHeight-e.offsetHeight+i,e.scrollHeight)):n.top-i<a.top&&wc(e,Math.max(t.offsetTop-i,0))}function rL(e){var t=e.getBoundingClientRect();return{bottom:t.bottom,height:t.height,left:t.left,right:t.right,top:t.top,width:t.width}}function lm(){try{return document.createEvent("TouchEvent"),!0}catch(e){return!1}}function dI(){try{return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}catch(e){return!1}}var fI=!1,oL={get passive(){return fI=!0}},yc=typeof window!="undefined"?window:{};yc.addEventListener&&yc.removeEventListener&&(yc.addEventListener("p",Hr,oL),yc.removeEventListener("p",Hr,!1));var mI=fI;function hI(e){return e!=null}function sL(e){return Array.isArray(e)}function Vr(e,t,a){return e?t:a}var vI=function(t){for(var a=arguments.length,n=new Array(a>1?a-1:0),i=1;i<a;i++)n[i-1]=arguments[i];var r=Object.entries(t).filter(function(o){var s=Le(o,1),l=s[0];return!n.includes(l)});return r.reduce(function(o,s){var l=Le(s,2),u=l[0],c=l[1];return o[u]=c,o},{})};function lL(e){var t=e.maxHeight,a=e.menuEl,n=e.minHeight,i=e.placement,r=e.shouldScroll,o=e.isFixedPosition,s=e.controlHeight,l=nL(a),u={placement:"bottom",maxHeight:t};if(!a||!a.offsetParent)return u;var c=l.getBoundingClientRect(),f=c.height,p=a.getBoundingClientRect(),b=p.bottom,d=p.height,h=p.top,m=a.offsetParent.getBoundingClientRect(),v=m.top,x=o?window.innerHeight:aL(l),E=pI(l),g=parseInt(getComputedStyle(a).marginBottom,10),w=parseInt(getComputedStyle(a).marginTop,10),C=v-w,y=x-h,S=C+E,I=f-E-h,_=b-x+E+g,P=E+h-w,F=160;switch(i){case"auto":case"bottom":if(y>=d)return{placement:"bottom",maxHeight:t};if(I>=d&&!o)return r&&xc(l,_,F),{placement:"bottom",maxHeight:t};if(!o&&I>=n||o&&y>=n){r&&xc(l,_,F);var B=o?y-g:I-g;return{placement:"bottom",maxHeight:B}}if(i==="auto"||o){var N=t,L=o?C:S;return L>=n&&(N=Math.min(L-g-s,t)),{placement:"top",maxHeight:N}}if(i==="bottom")return r&&wc(l,_),{placement:"bottom",maxHeight:t};break;case"top":if(C>=d)return{placement:"top",maxHeight:t};if(S>=d&&!o)return r&&xc(l,P,F),{placement:"top",maxHeight:t};if(!o&&S>=n||o&&C>=n){var k=t;return(!o&&S>=n||o&&C>=n)&&(k=o?C-w:S-w),r&&xc(l,P,F),{placement:"top",maxHeight:k}}return{placement:"bottom",maxHeight:t};default:throw new Error('Invalid placement provided "'.concat(i,'".'))}return u}function cL(e){var t={bottom:"top",top:"bottom"};return e?t[e]:"bottom"}var bI=function(t){return t==="auto"?"bottom":t},gI=function(t,a){var n,i=t.placement,r=t.theme,o=r.borderRadius,s=r.spacing,l=r.colors;return ae((n={label:"menu"},jt(n,cL(i),"100%"),jt(n,"position","absolute"),jt(n,"width","100%"),jt(n,"zIndex",1),n),a?{}:{backgroundColor:l.neutral0,borderRadius:o,boxShadow:"0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)",marginBottom:s.menuGutter,marginTop:s.menuGutter})},xI=_a(null),yI=function(t){var a=t.children,n=t.minMenuHeight,i=t.maxMenuHeight,r=t.menuPlacement,o=t.menuPosition,s=t.menuShouldScrollIntoView,l=t.theme,u=Kt(xI)||{},c=u.setPortalPlacement,f=ot(null),p=Re(i),b=Le(p,2),d=b[0],h=b[1],m=Re(null),v=Le(m,2),x=v[0],E=v[1],g=l.spacing.controlHeight;return gc(function(){var w=f.current;if(w){var C=o==="fixed",y=s&&!C,S=lL({maxHeight:i,menuEl:w,minHeight:n,placement:r,shouldScroll:y,isFixedPosition:C,controlHeight:g});h(S.maxHeight),E(S.placement),c==null||c(S.placement)}},[i,r,o,s,n,c,g]),a({ref:f,placerProps:ae(ae({},t),{},{placement:x||bI(r),maxHeight:d})})},uL=function(t){var a=t.children,n=t.innerRef,i=t.innerProps;return re("div",W({},Ze(t,"menu",{menu:!0}),{ref:n},i),a)},pL=uL,wI=function(t,a){var n=t.maxHeight,i=t.theme.spacing.baseUnit;return ae({maxHeight:n,overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},a?{}:{paddingBottom:i,paddingTop:i})},dL=function(t){var a=t.children,n=t.innerProps,i=t.innerRef,r=t.isMulti;return re("div",W({},Ze(t,"menuList",{"menu-list":!0,"menu-list--is-multi":r}),{ref:i},n),a)},EI=function(t,a){var n=t.theme,i=n.spacing.baseUnit,r=n.colors;return ae({textAlign:"center"},a?{}:{color:r.neutral40,padding:"".concat(i*2,"px ").concat(i*3,"px")})},SI=EI,CI=EI,AI=function(t){var a=t.children,n=t.innerProps;return re("div",W({},Ze(t,"noOptionsMessage",{"menu-notice":!0,"menu-notice--no-options":!0}),n),a)};AI.defaultProps={children:"No options"};var II=function(t){var a=t.children,n=t.innerProps;return re("div",W({},Ze(t,"loadingMessage",{"menu-notice":!0,"menu-notice--loading":!0}),n),a)};II.defaultProps={children:"Loading..."};var _I=function(t){var a=t.rect,n=t.offset,i=t.position;return{left:a.left,position:i,top:n,width:a.width,zIndex:1}},fL=function(t){var a=t.appendTo,n=t.children,i=t.controlElement,r=t.innerProps,o=t.menuPlacement,s=t.menuPosition,l=ot(null),u=ot(null),c=Re(bI(o)),f=Le(c,2),p=f[0],b=f[1],d=At(function(){return{setPortalPlacement:b}},[]),h=Re(null),m=Le(h,2),v=m[0],x=m[1],E=Fe(function(){if(i){var y=rL(i),S=s==="fixed"?0:window.pageYOffset,I=y[p]+S;(I!==(v==null?void 0:v.offset)||y.left!==(v==null?void 0:v.rect.left)||y.width!==(v==null?void 0:v.rect.width))&&x({offset:I,rect:y})}},[i,s,p,v==null?void 0:v.offset,v==null?void 0:v.rect.left,v==null?void 0:v.rect.width]);gc(function(){E()},[E]);var g=Fe(function(){typeof u.current=="function"&&(u.current(),u.current=null),i&&l.current&&(u.current=oI(i,l.current,E,{elementResize:"ResizeObserver"in window}))},[i,E]);gc(function(){g()},[g]);var w=Fe(function(y){l.current=y,g()},[g]);if(!a&&s!=="fixed"||!v)return null;var C=re("div",W({ref:w},Ze(ae(ae({},t),{},{offset:v.offset,position:s,rect:v.rect}),"menuPortal",{"menu-portal":!0}),r),n);return re(xI.Provider,{value:d},a?yu(C,a):C)},TI=function(t){var a=t.isDisabled,n=t.isRtl;return{label:"container",direction:n?"rtl":void 0,pointerEvents:a?"none":void 0,position:"relative"}},mL=function(t){var a=t.children,n=t.innerProps,i=t.isDisabled,r=t.isRtl;return re("div",W({},Ze(t,"container",{"--is-disabled":i,"--is-rtl":r}),n),a)},kI=function(t,a){var n=t.theme.spacing,i=t.isMulti,r=t.hasValue,o=t.selectProps.controlShouldRenderValue;return ae({alignItems:"center",display:i&&r&&o?"flex":"grid",flex:1,flexWrap:"wrap",WebkitOverflowScrolling:"touch",position:"relative",overflow:"hidden"},a?{}:{padding:"".concat(n.baseUnit/2,"px ").concat(n.baseUnit*2,"px")})},hL=function(t){var a=t.children,n=t.innerProps,i=t.isMulti,r=t.hasValue;return re("div",W({},Ze(t,"valueContainer",{"value-container":!0,"value-container--is-multi":i,"value-container--has-value":r}),n),a)},FI=function(){return{alignItems:"center",alignSelf:"stretch",display:"flex",flexShrink:0}},vL=function(t){var a=t.children,n=t.innerProps;return re("div",W({},Ze(t,"indicatorsContainer",{indicators:!0}),n),a)},sI,bL=["size"];var gL={name:"8mmkcg",styles:"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0"},PI=function(t){var a=t.size,n=Wt(t,bL);return re("svg",W({height:a,width:a,viewBox:"0 0 20 20","aria-hidden":"true",focusable:"false",css:gL},n))},cm=function(t){return re(PI,W({size:20},t),re("path",{d:"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z"}))},OI=function(t){return re(PI,W({size:20},t),re("path",{d:"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"}))},RI=function(t,a){var n=t.isFocused,i=t.theme,r=i.spacing.baseUnit,o=i.colors;return ae({label:"indicatorContainer",display:"flex",transition:"color 150ms"},a?{}:{color:n?o.neutral60:o.neutral20,padding:r*2,":hover":{color:n?o.neutral80:o.neutral40}})},BI=RI,xL=function(t){var a=t.children,n=t.innerProps;return re("div",W({},Ze(t,"dropdownIndicator",{indicator:!0,"dropdown-indicator":!0}),n),a||re(OI,null))},NI=RI,yL=function(t){var a=t.children,n=t.innerProps;return re("div",W({},Ze(t,"clearIndicator",{indicator:!0,"clear-indicator":!0}),n),a||re(cm,null))},jI=function(t,a){var n=t.isDisabled,i=t.theme,r=i.spacing.baseUnit,o=i.colors;return ae({label:"indicatorSeparator",alignSelf:"stretch",width:1},a?{}:{backgroundColor:n?o.neutral10:o.neutral20,marginBottom:r*2,marginTop:r*2})},wL=function(t){var a=t.innerProps;return re("span",W({},a,Ze(t,"indicatorSeparator",{"indicator-separator":!0})))},EL=X2(sI||(sI=Kf([` +{% endfor %}`)})),o.preventDefault(),s.showAtMouseEvent(o)}},a?"Template Data":e[0])},kO=e=>e.map(PO).reverse().join(""),FO=/^[$_\p{ID_Start}][$\u200c\u200d\p{ID_Continue}]*$/u,PO=(e,t,a)=>typeof e=="number"?`[${e}]`:FO.test(e)?t===a.length-1?`${e}`:`.${e}`:`[${JSON.stringify(e)}]`,OO=/^#(?:[\dA-F]{3}){1,2}$|^#(?:[\dA-F]{4}){1,2}$/i,RO=(e,t)=>t instanceof Ba.moment?I.createElement(I.Fragment,null,"\u{1F4C5} ",t.format("l LTS")):typeof t=="string"&&OO.test(t)?I.createElement(I.Fragment,null,I.createElement("span",{style:{backgroundColor:t},className:"zt-color-chip"}),t):typeof t=="string"&&t.length>800?t.slice(0,800)+"...":e;var ZA=_e(UA()),Zl=require("obsidian"),Sf=_e(require("os"));var JA=require("obsidian");function ca({name:e,className:t}){return I.createElement("span",{"data-icon":e,className:t,ref:a=>{a&&(0,JA.setIcon)(a,e)}})}function s9({name:e,description:t}){return I.createElement("div",{className:"setting-item-info"},I.createElement("div",{className:"setting-item-name"},e),I.createElement("div",{className:"setting-item-description"},t))}function He({name:e,description:t,children:a,isHeading:n}){return I.createElement("div",{className:`zt-setting-item setting-item${n?" setting-item-heading":""}`},I.createElement(s9,{name:e,description:t}),I.createElement("div",{className:"setting-item-control"},a))}var Va="1.0.15",Cf=1,l9={darwin:{x64:`https://github.com/mgmeyers/pdfannots2json/releases/download/${Va}/pdfannots2json.Mac.Intel.tar.gz`,arm64:`https://github.com/mgmeyers/pdfannots2json/releases/download/${Va}/pdfannots2json.Mac.M1.tar.gz`},linux:{x64:`https://github.com/mgmeyers/pdfannots2json/releases/download/${Va}/pdfannots2json.Linux.x64.tar.gz`},win32:{x64:`https://github.com/mgmeyers/pdfannots2json/releases/download/${Va}/pdfannots2json.Windows.x64.zip`}};function c9(){let e=l9[Sf.default.platform()];if(!e)return null;let t=e[Sf.default.arch()];return t||null}async function Af(){let e=c9();if(console.log("Obsidian Zotero Integration: Downloading "+e),!e)return!1;try{xx()&&Ex(),gx()&&wx(),Hn()&&yx(),await(0,ZA.default)(e,_t(),{extract:!0}),vx()}catch(t){console.error(t),new Zl.Notice("Error downloading PDF utility. Check the console for more details.",1e4)}return!0}function qA(e){let[t,a]=I.useState(null),[n,i]=I.useState(!1),[r,o]=I.useState(!1),[s,l]=I.useState(e.settings.exeOverridePath),u=I.useMemo(()=>(0,Zl.debounce)(m=>{l(m),e.updateSetting("exeOverridePath",m)},150,!0),[]);I.useEffect(()=>{let m=Hn(s);o(m),m&&Sx(s).then(h=>{a(`v${Va}`===h)}).catch(()=>{})},[s]);let c=I.useCallback(()=>{i(!0),Af().then(m=>{i(!1),m&&(a(!0),o(!0))})},[]),f=["Extracting data from PDFs requires an external tool.","This plugin will still work without it, but annotations will not be included in exports."],b=I.createElement(He,{name:"PDF Utility Path Override",description:I.createElement(I.Fragment,null,"Override the path to the PDF utility. Specify an absolute path to the pdfannots2json executable."," ",I.createElement("a",{href:"https://github.com/mgmeyers/pdfannots2json/releases",target:"_blank",rel:"noreferrer"},"Download the executable here.")," ","You may need to provide Obsidian the appropriate OS permissions to access the executable.")},I.createElement("input",{onChange:m=>u(m.target.value),type:"text",spellCheck:!1,value:s}),I.createElement("div",{className:"clickable-icon setting-editor-extra-setting-button","aria-label":"Select the pdfannots2json executable",onClick:()=>{let m=require("electron").remote.dialog.showOpenDialogSync({properties:["openFile"]});m&&m.length&&u(m[0])}},I.createElement(ca,{name:"lucide-folder-open"})));if(r&&t)return I.createElement(I.Fragment,null,I.createElement(He,{name:"PDF Utility",description:f.join(" ")},I.createElement("div",{className:"zt-asset-success"},I.createElement("div",{className:"zt-asset-success__icon"},I.createElement(ca,{name:"check-small"})),I.createElement("div",{className:"zt-asset-success__message"},"PDF utility is up to date."))),b);let d=I.createElement(I.Fragment,null,f.join(" ")," ",r&&I.createElement("strong",{className:"mod-warning"},"The PDF extraction tool requires updating. Please re-download."),!r&&!s&&I.createElement("strong",null,"Click the button to download."));return I.createElement(I.Fragment,null,I.createElement(He,{name:"PDF Utility",description:d},!s&&I.createElement("button",{disabled:n,onClick:c},n?"Downloading...":"Download")),b)}var Ja=require("obsidian");var V_=_e(r2());function o2(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),a.push.apply(a,n)}return a}function ae(e){for(var t=1;t<arguments.length;t++){var a=arguments[t]!=null?arguments[t]:{};t%2?o2(Object(a),!0).forEach(function(n){jt(e,n,a[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o2(Object(a)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(a,n))})}return e}function If(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s2(e,t){for(var a=0;a<t.length;a++){var n=t[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,zi(n.key),n)}}function _f(e,t,a){return t&&s2(e.prototype,t),a&&s2(e,a),Object.defineProperty(e,"prototype",{writable:!1}),e}function Nr(e,t){return Nr=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(n,i){return n.__proto__=i,n},Nr(e,t)}function Tf(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Nr(e,t)}function fi(e){return fi=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(a){return a.__proto__||Object.getPrototypeOf(a)},fi(e)}function kf(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function Ff(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Pf(e,t){if(t&&(ft(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return Ff(e)}function Of(e){var t=kf();return function(){var n=fi(e),i;if(t){var r=fi(this).constructor;i=Reflect.construct(n,arguments,r)}else i=n.apply(this,arguments);return Pf(this,i)}}function Rf(e){if(Array.isArray(e))return jn(e)}function Bf(e){if(typeof Symbol!="undefined"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function Nf(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ql(e){return Rf(e)||Bf(e)||Gi(e)||Nf()}function m9(e){if(e.sheet)return e.sheet;for(var t=0;t<document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]}function h9(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),e.nonce!==void 0&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}var l2=function(){function e(a){var n=this;this._insertTag=function(i){var r;n.tags.length===0?n.insertionPoint?r=n.insertionPoint.nextSibling:n.prepend?r=n.container.firstChild:r=n.before:r=n.tags[n.tags.length-1].nextSibling,n.container.insertBefore(i,r),n.tags.push(i)},this.isSpeedy=a.speedy===void 0?!0:a.speedy,this.tags=[],this.ctr=0,this.nonce=a.nonce,this.key=a.key,this.container=a.container,this.prepend=a.prepend,this.insertionPoint=a.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(n){n.forEach(this._insertTag)},t.insert=function(n){this.ctr%(this.isSpeedy?65e3:1)===0&&this._insertTag(h9(this));var i=this.tags[this.tags.length-1];if(!1)var r;if(this.isSpeedy){var o=m9(i);try{o.insertRule(n,o.cssRules.length)}catch(s){}}else i.appendChild(document.createTextNode(n));this.ctr++},t.flush=function(){this.tags.forEach(function(n){return n.parentNode&&n.parentNode.removeChild(n)}),this.tags=[],this.ctr=0},e}();var dt="-ms-",jr="-moz-",Se="-webkit-",Xl="comm",mi="rule",hi="decl";var c2="@import";var $l="@keyframes";var u2="@layer";var p2=Math.abs,xn=String.fromCharCode,d2=Object.assign;function f2(e,t){return $e(e,0)^45?(((t<<2^$e(e,0))<<2^$e(e,1))<<2^$e(e,2))<<2^$e(e,3):0}function Yl(e){return e.trim()}function jf(e,t){return(e=t.exec(e))?e[0]:e}function ye(e,t,a){return e.replace(t,a)}function Lr(e,t){return e.indexOf(t)}function $e(e,t){return e.charCodeAt(t)|0}function Ua(e,t,a){return e.slice(t,a)}function yt(e){return e.length}function bi(e){return e.length}function gi(e,t){return t.push(e),e}function Lf(e,t){return e.map(t).join("")}var Kl=1,xi=1,m2=0,wt=0,Qe=0,wi="";function Mr(e,t,a,n,i,r,o){return{value:e,root:t,parent:a,type:n,props:i,children:r,line:Kl,column:xi,length:o,return:""}}function Ei(e,t){return d2(Mr("",null,null,"",null,null,0),e,{length:-e.length},t)}function h2(){return Qe}function v2(){return Qe=wt>0?$e(wi,--wt):0,xi--,Qe===10&&(xi=1,Kl--),Qe}function Et(){return Qe=wt<m2?$e(wi,wt++):0,xi++,Qe===10&&(xi=1,Kl++),Qe}function Ht(){return $e(wi,wt)}function Dr(){return wt}function Si(e,t){return Ua(wi,e,t)}function yi(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function Ql(e){return Kl=xi=1,m2=yt(wi=e),wt=0,[]}function ec(e){return wi="",e}function Ci(e){return Yl(Si(wt-1,Mf(e===91?e+2:e===40?e+1:e)))}function b2(e){for(;(Qe=Ht())&&Qe<33;)Et();return yi(e)>2||yi(Qe)>3?"":" "}function g2(e,t){for(;--t&&Et()&&!(Qe<48||Qe>102||Qe>57&&Qe<65||Qe>70&&Qe<97););return Si(e,Dr()+(t<6&&Ht()==32&&Et()==32))}function Mf(e){for(;Et();)switch(Qe){case e:return wt;case 34:case 39:e!==34&&e!==39&&Mf(Qe);break;case 40:e===41&&Mf(e);break;case 92:Et();break}return wt}function x2(e,t){for(;Et()&&e+Qe!==47+10;)if(e+Qe===42+42&&Ht()===47)break;return"/*"+Si(t,wt-1)+"*"+xn(e===47?e:Et())}function y2(e){for(;!yi(Ht());)Et();return Si(e,wt)}function S2(e){return ec(tc("",null,null,null,[""],e=Ql(e),0,[0],e))}function tc(e,t,a,n,i,r,o,s,l){for(var u=0,c=0,f=o,p=0,b=0,d=0,m=1,h=1,v=1,x=0,E="",g=i,w=r,C=n,y=E;h;)switch(d=x,x=Et()){case 40:if(d!=108&&$e(y,f-1)==58){Lr(y+=ye(Ci(x),"&","&\f"),"&\f")!=-1&&(v=-1);break}case 34:case 39:case 91:y+=Ci(x);break;case 9:case 10:case 13:case 32:y+=b2(d);break;case 92:y+=g2(Dr()-1,7);continue;case 47:switch(Ht()){case 42:case 47:gi(v9(x2(Et(),Dr()),t,a),l);break;default:y+="/"}break;case 123*m:s[u++]=yt(y)*v;case 125*m:case 59:case 0:switch(x){case 0:case 125:h=0;case 59+c:v==-1&&(y=ye(y,/\f/g,"")),b>0&&yt(y)-f&&gi(b>32?E2(y+";",n,a,f-1):E2(ye(y," ","")+";",n,a,f-2),l);break;case 59:y+=";";default:if(gi(C=w2(y,t,a,u,c,i,s,E,g=[],w=[],f),r),x===123)if(c===0)tc(y,t,C,C,g,r,f,s,w);else switch(p===99&&$e(y,3)===110?100:p){case 100:case 108:case 109:case 115:tc(e,C,C,n&&gi(w2(e,C,C,0,0,i,s,E,i,g=[],f),w),i,w,f,s,n?g:w);break;default:tc(y,C,C,C,[""],w,0,s,w)}}u=c=b=0,m=v=1,E=y="",f=o;break;case 58:f=1+yt(y),b=d;default:if(m<1){if(x==123)--m;else if(x==125&&m++==0&&v2()==125)continue}switch(y+=xn(x),x*m){case 38:v=c>0?1:(y+="\f",-1);break;case 44:s[u++]=(yt(y)-1)*v,v=1;break;case 64:Ht()===45&&(y+=Ci(Et())),p=Ht(),c=f=yt(E=y+=y2(Dr())),x++;break;case 45:d===45&&yt(y)==2&&(m=0)}}return r}function w2(e,t,a,n,i,r,o,s,l,u,c){for(var f=i-1,p=i===0?r:[""],b=bi(p),d=0,m=0,h=0;d<n;++d)for(var v=0,x=Ua(e,f+1,f=p2(m=o[d])),E=e;v<b;++v)(E=Yl(m>0?p[v]+" "+x:ye(x,/&\f/g,p[v])))&&(l[h++]=E);return Mr(e,t,a,i===0?mi:s,l,u,c)}function v9(e,t,a){return Mr(e,t,a,Xl,xn(h2()),Ua(e,2,-2),0)}function E2(e,t,a,n){return Mr(e,t,a,hi,Ua(e,0,n),Ua(e,n+1,-1),n)}function yn(e,t){for(var a="",n=bi(e),i=0;i<n;i++)a+=t(e[i],i,e,t)||"";return a}function C2(e,t,a,n){switch(e.type){case u2:if(e.children.length)break;case c2:case hi:return e.return=e.return||e.value;case Xl:return"";case $l:return e.return=e.value+"{"+yn(e.children,n)+"}";case mi:e.value=e.props.join(",")}return yt(a=yn(e.children,n))?e.return=e.value+"{"+a+"}":""}function A2(e){var t=bi(e);return function(a,n,i,r){for(var o="",s=0;s<t;s++)o+=e[s](a,n,i,r)||"";return o}}function I2(e){return function(t){t.root||(t=t.return)&&e(t)}}function _2(e){var t=Object.create(null);return function(a){return t[a]===void 0&&(t[a]=e(a)),t[a]}}var b9=function(t,a,n){for(var i=0,r=0;i=r,r=Ht(),i===38&&r===12&&(a[n]=1),!yi(r);)Et();return Si(t,wt)},g9=function(t,a){var n=-1,i=44;do switch(yi(i)){case 0:i===38&&Ht()===12&&(a[n]=1),t[n]+=b9(wt-1,a,n);break;case 2:t[n]+=Ci(i);break;case 4:if(i===44){t[++n]=Ht()===58?"&\f":"",a[n]=t[n].length;break}default:t[n]+=xn(i)}while(i=Et());return t},x9=function(t,a){return ec(g9(Ql(t),a))},T2=new WeakMap,y9=function(t){if(!(t.type!=="rule"||!t.parent||t.length<1)){for(var a=t.value,n=t.parent,i=t.column===n.column&&t.line===n.line;n.type!=="rule";)if(n=n.parent,!n)return;if(!(t.props.length===1&&a.charCodeAt(0)!==58&&!T2.get(n))&&!i){T2.set(t,!0);for(var r=[],o=x9(a,r),s=n.props,l=0,u=0;l<o.length;l++)for(var c=0;c<s.length;c++,u++)t.props[u]=r[l]?o[l].replace(/&\f/g,s[c]):s[c]+" "+o[l]}}},w9=function(t){if(t.type==="decl"){var a=t.value;a.charCodeAt(0)===108&&a.charCodeAt(2)===98&&(t.return="",t.value="")}};function k2(e,t){switch(f2(e,t)){case 5103:return Se+"print-"+e+e;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return Se+e+e;case 5349:case 4246:case 4810:case 6968:case 2756:return Se+e+jr+e+dt+e+e;case 6828:case 4268:return Se+e+dt+e+e;case 6165:return Se+e+dt+"flex-"+e+e;case 5187:return Se+e+ye(e,/(\w+).+(:[^]+)/,Se+"box-$1$2"+dt+"flex-$1$2")+e;case 5443:return Se+e+dt+"flex-item-"+ye(e,/flex-|-self/,"")+e;case 4675:return Se+e+dt+"flex-line-pack"+ye(e,/align-content|flex-|-self/,"")+e;case 5548:return Se+e+dt+ye(e,"shrink","negative")+e;case 5292:return Se+e+dt+ye(e,"basis","preferred-size")+e;case 6060:return Se+"box-"+ye(e,"-grow","")+Se+e+dt+ye(e,"grow","positive")+e;case 4554:return Se+ye(e,/([^-])(transform)/g,"$1"+Se+"$2")+e;case 6187:return ye(ye(ye(e,/(zoom-|grab)/,Se+"$1"),/(image-set)/,Se+"$1"),e,"")+e;case 5495:case 3959:return ye(e,/(image-set\([^]*)/,Se+"$1$`$1");case 4968:return ye(ye(e,/(.+:)(flex-)?(.*)/,Se+"box-pack:$3"+dt+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+Se+e+e;case 4095:case 3583:case 4068:case 2532:return ye(e,/(.+)-inline(.+)/,Se+"$1$2")+e;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(yt(e)-1-t>6)switch($e(e,t+1)){case 109:if($e(e,t+4)!==45)break;case 102:return ye(e,/(.+:)(.+)-([^]+)/,"$1"+Se+"$2-$3$1"+jr+($e(e,t+3)==108?"$3":"$2-$3"))+e;case 115:return~Lr(e,"stretch")?k2(ye(e,"stretch","fill-available"),t)+e:e}break;case 4949:if($e(e,t+1)!==115)break;case 6444:switch($e(e,yt(e)-3-(~Lr(e,"!important")&&10))){case 107:return ye(e,":",":"+Se)+e;case 101:return ye(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+Se+($e(e,14)===45?"inline-":"")+"box$3$1"+Se+"$2$3$1"+dt+"$2box$3")+e}break;case 5936:switch($e(e,t+11)){case 114:return Se+e+dt+ye(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return Se+e+dt+ye(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return Se+e+dt+ye(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return Se+e+dt+e+e}return e}var E9=function(t,a,n,i){if(t.length>-1&&!t.return)switch(t.type){case hi:t.return=k2(t.value,t.length);break;case $l:return yn([Ei(t,{value:ye(t.value,"@","@"+Se)})],i);case mi:if(t.length)return Lf(t.props,function(r){switch(jf(r,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return yn([Ei(t,{props:[ye(r,/:(read-\w+)/,":"+jr+"$1")]})],i);case"::placeholder":return yn([Ei(t,{props:[ye(r,/:(plac\w+)/,":"+Se+"input-$1")]}),Ei(t,{props:[ye(r,/:(plac\w+)/,":"+jr+"$1")]}),Ei(t,{props:[ye(r,/:(plac\w+)/,dt+"input-$1")]})],i)}return""})}},S9=[E9],Df=function(t){var a=t.key;if(a==="css"){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,function(m){var h=m.getAttribute("data-emotion");h.indexOf(" ")!==-1&&(document.head.appendChild(m),m.setAttribute("data-s",""))})}var i=t.stylisPlugins||S9,r={},o,s=[];o=t.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+a+' "]'),function(m){for(var h=m.getAttribute("data-emotion").split(" "),v=1;v<h.length;v++)r[h[v]]=!0;s.push(m)});var l,u=[y9,w9];{var c,f=[C2,I2(function(m){c.insert(m)})],p=A2(u.concat(i,f)),b=function(h){return yn(S2(h),p)};l=function(h,v,x,E){c=x,b(h?h+"{"+v.styles+"}":v.styles),E&&(d.inserted[v.name]=!0)}}var d={key:a,sheet:new l2({key:a,container:o,nonce:t.nonce,speedy:t.speedy,prepend:t.prepend,insertionPoint:t.insertionPoint}),nonce:t.nonce,inserted:r,registered:{},insert:l};return d.sheet.hydrate(s),d};var j9=!0;function Uf(e,t,a){var n="";return a.split(" ").forEach(function(i){e[i]!==void 0?t.push(e[i]+";"):n+=i+" "}),n}var dc=function(t,a,n){var i=t.key+"-"+a.name;(n===!1||j9===!1)&&t.registered[i]===void 0&&(t.registered[i]=a.styles)},Jf=function(t,a,n){dc(t,a,n);var i=t.key+"-"+a.name;if(t.inserted[a.name]===void 0){var r=a;do t.insert(a===r?"."+i:"",r,t.sheet,!0),r=r.next;while(r!==void 0)}};function G2(e){for(var t=0,a,n=0,i=e.length;i>=4;++n,i-=4)a=e.charCodeAt(n)&255|(e.charCodeAt(++n)&255)<<8|(e.charCodeAt(++n)&255)<<16|(e.charCodeAt(++n)&255)<<24,a=(a&65535)*1540483477+((a>>>16)*59797<<16),a^=a>>>24,t=(a&65535)*1540483477+((a>>>16)*59797<<16)^(t&65535)*1540483477+((t>>>16)*59797<<16);switch(i){case 3:t^=(e.charCodeAt(n+2)&255)<<16;case 2:t^=(e.charCodeAt(n+1)&255)<<8;case 1:t^=e.charCodeAt(n)&255,t=(t&65535)*1540483477+((t>>>16)*59797<<16)}return t^=t>>>13,t=(t&65535)*1540483477+((t>>>16)*59797<<16),((t^t>>>15)>>>0).toString(36)}var H2={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1};var L9=/[A-Z]|^ms/g,M9=/_EMO_([^_]+?)_([^]*?)_EMO_/g,J2=function(t){return t.charCodeAt(1)===45},W2=function(t){return t!=null&&typeof t!="boolean"},Zf=_2(function(e){return J2(e)?e:e.replace(L9,"-$&").toLowerCase()}),V2=function(t,a){switch(t){case"animation":case"animationName":if(typeof a=="string")return a.replace(M9,function(n,i,r){return ua={name:i,styles:r,next:ua},i})}return H2[t]!==1&&!J2(t)&&typeof a=="number"&&a!==0?a+"px":a};function zr(e,t,a){if(a==null)return"";if(a.__emotion_styles!==void 0)return a;switch(typeof a){case"boolean":return"";case"object":{if(a.anim===1)return ua={name:a.name,styles:a.styles,next:ua},a.name;if(a.styles!==void 0){var n=a.next;if(n!==void 0)for(;n!==void 0;)ua={name:n.name,styles:n.styles,next:ua},n=n.next;var i=a.styles+";";return i}return D9(e,t,a)}case"function":{if(e!==void 0){var r=ua,o=a(e);return ua=r,zr(e,t,o)}break}case"string":if(!1)var s,l;break}if(t==null)return a;var u=t[a];return u!==void 0?u:a}function D9(e,t,a){var n="";if(Array.isArray(a))for(var i=0;i<a.length;i++)n+=zr(e,t,a[i])+";";else for(var r in a){var o=a[r];if(typeof o!="object")t!=null&&t[o]!==void 0?n+=r+"{"+t[o]+"}":W2(o)&&(n+=Zf(r)+":"+V2(r,o)+";");else if(Array.isArray(o)&&typeof o[0]=="string"&&(t==null||t[o[0]]===void 0))for(var s=0;s<o.length;s++)W2(o[s])&&(n+=Zf(r)+":"+V2(r,o[s])+";");else{var l=zr(e,t,o);switch(r){case"animation":case"animationName":{n+=Zf(r)+":"+l+";";break}default:n+=r+"{"+l+"}"}}}return n}var U2=/label:\s*([^\s;\n{]+)\s*(;|$)/g;var ua,fc=function(t,a,n){if(t.length===1&&typeof t[0]=="object"&&t[0]!==null&&t[0].styles!==void 0)return t[0];var i=!0,r="";ua=void 0;var o=t[0];o==null||o.raw===void 0?(i=!1,r+=zr(n,a,o)):r+=o[0];for(var s=1;s<t.length;s++)r+=zr(n,a,t[s]),i&&(r+=o[s]);var l;U2.lastIndex=0;for(var u="",c;(c=U2.exec(r))!==null;)u+="-"+c[1];var f=G2(r)+u;return{name:f,styles:r,next:ua}};var z9=function(t){return t()},G9=wo?wo:!1,qf=G9||z9;var Z2=!0,hc={}.hasOwnProperty,mc=_a(typeof HTMLElement!="undefined"?Df({key:"css"}):null),ZU=mc.Provider;var $f=function(t){return Nn(function(a,n){var i=Yt(mc);return t(a,i,n)})};Z2||($f=function(t){return function(a){var n=Yt(mc);return n===null?(n=Df({key:"css"}),se(mc.Provider,{value:n},t(a,n))):t(a,n)}});var q2=_a({});var Xf="__EMOTION_TYPE_PLEASE_DO_NOT_USE__";var X2=function(t,a){var n={};for(var i in a)hc.call(a,i)&&(n[i]=a[i]);if(n[Xf]=t,!1)var r;return n},H9=function(t){var a=t.cache,n=t.serialized,i=t.isStringTag;return dc(a,n,i),qf(function(){return Jf(a,n,i)}),null},W9=$f(function(e,t,a){var n=e.css;typeof n=="string"&&t.registered[n]!==void 0&&(n=t.registered[n]);var i=e[Xf],r=[n],o="";typeof e.className=="string"?o=Uf(t.registered,r,e.className):e.className!=null&&(o=e.className+" ");var s=fc(r,void 0,Yt(q2));if(!1)var l;o+=t.key+"-"+s.name;var u={};for(var c in e)hc.call(e,c)&&c!=="css"&&c!==Xf&&(u[c]=e[c]);return u.ref=a,u.className=o,se(rt,null,se(H9,{cache:t,serialized:s,isStringTag:typeof i=="string"}),se(i,u))}),$2=W9;var nJ=_e(z2());var re=function(t,a){var n=arguments;if(a==null||!hc.call(a,"css"))return se.apply(void 0,n);var i=n.length,r=new Array(i);r[0]=$2,r[1]=X2(t,a);for(var o=2;o<i;o++)r[o]=n[o];return se.apply(null,r)};function Gr(){for(var e=arguments.length,t=new Array(e),a=0;a<e;a++)t[a]=arguments[a];return fc(t)}var Y2=function(){var t=Gr.apply(void 0,arguments),a="animation-"+t.name;return{name:a,styles:"@keyframes "+a+"{"+t.styles+"}",anim:1,toString:function(){return"_EMO_"+this.name+"_"+this.styles+"_EMO_"}}};function Yf(e,t){if(e==null)return{};var a={},n=Object.keys(e),i,r;for(r=0;r<n.length;r++)i=n[r],!(t.indexOf(i)>=0)&&(a[i]=e[i]);return a}function Wt(e,t){if(e==null)return{};var a=Yf(e,t),n,i;if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i<r.length;i++)n=r[i],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}function Kf(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function K2(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}var V9=["top","right","bottom","left"],dJ=V9.reduce((e,t)=>e.concat(t,t+"-start",t+"-end"),[]);function pa(e){var t;return((t=e.ownerDocument)==null?void 0:t.defaultView)||window}function aI(e){return pa(e).getComputedStyle(e)}function nI(e){return e instanceof pa(e).Node}function iI(e){return nI(e)?(e.nodeName||"").toLowerCase():"#document"}function am(e){return e instanceof pa(e).HTMLElement}function em(e){return e instanceof pa(e).Element}function Q2(e){return typeof ShadowRoot!="undefined"&&(e instanceof pa(e).ShadowRoot||e instanceof ShadowRoot)}function rI(e){let{overflow:t,overflowX:a,overflowY:n,display:i}=aI(e);return/auto|scroll|overlay|hidden|clip/.test(t+n+a)&&!["inline","contents"].includes(i)}function U9(){return!(typeof CSS=="undefined"||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function J9(e){return["html","body","#document"].includes(iI(e))}var Z9=Math.min,q9=Math.max,bc=Math.round,vc=Math.floor,nm=e=>({x:e,y:e});function X9(e){let t=aI(e),a=parseFloat(t.width)||0,n=parseFloat(t.height)||0,i=am(e),r=i?e.offsetWidth:a,o=i?e.offsetHeight:n,s=bc(a)!==r||bc(n)!==o;return s&&(a=r,n=o),{width:a,height:n,$:s}}function im(e){return em(e)?e:e.contextElement}function Qf(e){let t=im(e);if(!am(t))return nm(1);let a=t.getBoundingClientRect(),{width:n,height:i,$:r}=X9(t),o=(r?bc(a.width):a.width)/n,s=(r?bc(a.height):a.height)/i;return o&&Number.isFinite(o)||(o=1),s&&Number.isFinite(s)||(s=1),{x:o,y:s}}var eI=nm(0);function $9(e,t,a){var n,i;if(t===void 0&&(t=!0),!U9())return eI;let r=e?pa(e):window;return!a||t&&a!==r?eI:{x:((n=r.visualViewport)==null?void 0:n.offsetLeft)||0,y:((i=r.visualViewport)==null?void 0:i.offsetTop)||0}}function tI(e,t,a,n){t===void 0&&(t=!1),a===void 0&&(a=!1);let i=e.getBoundingClientRect(),r=im(e),o=nm(1);t&&(n?em(n)&&(o=Qf(n)):o=Qf(e));let s=$9(r,a,n),l=(i.left+s.x)/o.x,u=(i.top+s.y)/o.y,c=i.width/o.x,f=i.height/o.y;if(r){let p=pa(r),b=n&&em(n)?pa(n):n,d=p.frameElement;for(;d&&n&&b!==p;){let m=Qf(d),h=d.getBoundingClientRect(),v=getComputedStyle(d),x=h.left+(d.clientLeft+parseFloat(v.paddingLeft))*m.x,E=h.top+(d.clientTop+parseFloat(v.paddingTop))*m.y;l*=m.x,u*=m.y,c*=m.x,f*=m.y,l+=x,u+=E,d=pa(d).frameElement}}return K2({width:c,height:f,x:l,y:u})}function oI(e){return((nI(e)?e.ownerDocument:e.document)||window.document).documentElement}function Y9(e){if(iI(e)==="html")return e;let t=e.assignedSlot||e.parentNode||Q2(e)&&e.host||oI(e);return Q2(t)?t.host:t}function sI(e){let t=Y9(e);return J9(t)?e.ownerDocument?e.ownerDocument.body:e.body:am(t)&&rI(t)?t:sI(t)}function tm(e,t){var a;t===void 0&&(t=[]);let n=sI(e),i=n===((a=e.ownerDocument)==null?void 0:a.body),r=pa(n);return i?t.concat(r,r.visualViewport||[],rI(n)?n:[]):t.concat(n,tm(n))}function lI(e,t,a,n){n===void 0&&(n={});let{ancestorScroll:i=!0,ancestorResize:r=!0,elementResize:o=typeof ResizeObserver=="function",layoutShift:s=typeof IntersectionObserver=="function",animationFrame:l=!1}=n,u=im(e),c=i||r?[...u?tm(u):[],...tm(t)]:[];c.forEach(h=>{i&&h.addEventListener("scroll",a,{passive:!0}),r&&h.addEventListener("resize",a)});let f=u&&s?function(h,v){let x,E=null,g=oI(h);function w(){clearTimeout(x),E&&E.disconnect(),E=null}return function C(y,S){y===void 0&&(y=!1),S===void 0&&(S=1),w();let{left:A,top:_,width:P,height:F}=h.getBoundingClientRect();if(y||v(),!P||!F)return;let B={rootMargin:-vc(_)+"px "+-vc(g.clientWidth-(A+P))+"px "+-vc(g.clientHeight-(_+F))+"px "+-vc(A)+"px",threshold:q9(0,Z9(1,S))||1},j=!0;function L(k){let T=k[0].intersectionRatio;if(T!==S){if(!j)return C();T?C(!1,T):x=setTimeout(()=>{C(!1,1e-7)},100)}j=!1}try{E=new IntersectionObserver(L,{...B,root:g.ownerDocument})}catch(k){E=new IntersectionObserver(L,B)}E.observe(h)}(!0),w}(u,a):null,p,b=-1,d=null;o&&(d=new ResizeObserver(h=>{let[v]=h;v&&v.target===u&&d&&(d.unobserve(t),cancelAnimationFrame(b),b=requestAnimationFrame(()=>{d&&d.observe(t)})),a()}),u&&!l&&d.observe(u),d.observe(t));let m=l?tI(e):null;return l&&function h(){let v=tI(e);!m||v.x===m.x&&v.y===m.y&&v.width===m.width&&v.height===m.height||a(),m=v,p=requestAnimationFrame(h)}(),a(),()=>{c.forEach(h=>{i&&h.removeEventListener("scroll",a),r&&h.removeEventListener("resize",a)}),f&&f(),d&&d.disconnect(),d=null,l&&cancelAnimationFrame(p)}}var K9=ka,gc=K9;var Q9=["className","clearValue","cx","getStyles","getClassNames","getValue","hasValue","isMulti","isRtl","options","selectOption","selectProps","setValue","theme"],Hr=function(){};function eL(e,t){return t?t[0]==="-"?e+t:e+"__"+t:e}function uI(e,t){for(var a=arguments.length,n=new Array(a>2?a-2:0),i=2;i<a;i++)n[i-2]=arguments[i];var r=[].concat(n);if(t&&e)for(var o in t)t.hasOwnProperty(o)&&t[o]&&r.push("".concat(eL(e,o)));return r.filter(function(s){return s}).map(function(s){return String(s).trim()}).join(" ")}var om=function(t){return oL(t)?t.filter(Boolean):ft(t)==="object"&&t!==null?[t]:[]},pI=function(t){t.className,t.clearValue,t.cx,t.getStyles,t.getClassNames,t.getValue,t.hasValue,t.isMulti,t.isRtl,t.options,t.selectOption,t.selectProps,t.setValue,t.theme;var a=Wt(t,Q9);return ae({},a)},Ze=function(t,a,n){var i=t.cx,r=t.getStyles,o=t.getClassNames,s=t.className;return{css:r(a,t),className:i(n!=null?n:{},o(a,t),s)}};function dI(e,t,a){if(a){var n=a(e,t);if(typeof n=="string")return n}return e}function Wr(e){return[document.documentElement,document.body,window].indexOf(e)>-1}function tL(e){return Wr(e)?window.innerHeight:e.clientHeight}function fI(e){return Wr(e)?window.pageYOffset:e.scrollTop}function wc(e,t){if(Wr(e)){window.scrollTo(0,t);return}e.scrollTop=t}function aL(e){var t=getComputedStyle(e),a=t.position==="absolute",n=/(auto|scroll)/;if(t.position==="fixed")return document.documentElement;for(var i=e;i=i.parentElement;)if(t=getComputedStyle(i),!(a&&t.position==="static")&&n.test(t.overflow+t.overflowY+t.overflowX))return i;return document.documentElement}function nL(e,t,a,n){return a*((e=e/n-1)*e*e+1)+t}function xc(e,t){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:200,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:Hr,i=fI(e),r=t-i,o=10,s=0;function l(){s+=o;var u=nL(s,i,r,a);wc(e,u),s<a?window.requestAnimationFrame(l):n(e)}l()}function sm(e,t){var a=e.getBoundingClientRect(),n=t.getBoundingClientRect(),i=t.offsetHeight/3;n.bottom+i>a.bottom?wc(e,Math.min(t.offsetTop+t.clientHeight-e.offsetHeight+i,e.scrollHeight)):n.top-i<a.top&&wc(e,Math.max(t.offsetTop-i,0))}function iL(e){var t=e.getBoundingClientRect();return{bottom:t.bottom,height:t.height,left:t.left,right:t.right,top:t.top,width:t.width}}function lm(){try{return document.createEvent("TouchEvent"),!0}catch(e){return!1}}function mI(){try{return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}catch(e){return!1}}var hI=!1,rL={get passive(){return hI=!0}},yc=typeof window!="undefined"?window:{};yc.addEventListener&&yc.removeEventListener&&(yc.addEventListener("p",Hr,rL),yc.removeEventListener("p",Hr,!1));var vI=hI;function bI(e){return e!=null}function oL(e){return Array.isArray(e)}function Vr(e,t,a){return e?t:a}var gI=function(t){for(var a=arguments.length,n=new Array(a>1?a-1:0),i=1;i<a;i++)n[i-1]=arguments[i];var r=Object.entries(t).filter(function(o){var s=Le(o,1),l=s[0];return!n.includes(l)});return r.reduce(function(o,s){var l=Le(s,2),u=l[0],c=l[1];return o[u]=c,o},{})};function sL(e){var t=e.maxHeight,a=e.menuEl,n=e.minHeight,i=e.placement,r=e.shouldScroll,o=e.isFixedPosition,s=e.controlHeight,l=aL(a),u={placement:"bottom",maxHeight:t};if(!a||!a.offsetParent)return u;var c=l.getBoundingClientRect(),f=c.height,p=a.getBoundingClientRect(),b=p.bottom,d=p.height,m=p.top,h=a.offsetParent.getBoundingClientRect(),v=h.top,x=o?window.innerHeight:tL(l),E=fI(l),g=parseInt(getComputedStyle(a).marginBottom,10),w=parseInt(getComputedStyle(a).marginTop,10),C=v-w,y=x-m,S=C+E,A=f-E-m,_=b-x+E+g,P=E+m-w,F=160;switch(i){case"auto":case"bottom":if(y>=d)return{placement:"bottom",maxHeight:t};if(A>=d&&!o)return r&&xc(l,_,F),{placement:"bottom",maxHeight:t};if(!o&&A>=n||o&&y>=n){r&&xc(l,_,F);var B=o?y-g:A-g;return{placement:"bottom",maxHeight:B}}if(i==="auto"||o){var j=t,L=o?C:S;return L>=n&&(j=Math.min(L-g-s,t)),{placement:"top",maxHeight:j}}if(i==="bottom")return r&&wc(l,_),{placement:"bottom",maxHeight:t};break;case"top":if(C>=d)return{placement:"top",maxHeight:t};if(S>=d&&!o)return r&&xc(l,P,F),{placement:"top",maxHeight:t};if(!o&&S>=n||o&&C>=n){var k=t;return(!o&&S>=n||o&&C>=n)&&(k=o?C-w:S-w),r&&xc(l,P,F),{placement:"top",maxHeight:k}}return{placement:"bottom",maxHeight:t};default:throw new Error('Invalid placement provided "'.concat(i,'".'))}return u}function lL(e){var t={bottom:"top",top:"bottom"};return e?t[e]:"bottom"}var xI=function(t){return t==="auto"?"bottom":t},yI=function(t,a){var n,i=t.placement,r=t.theme,o=r.borderRadius,s=r.spacing,l=r.colors;return ae((n={label:"menu"},jt(n,lL(i),"100%"),jt(n,"position","absolute"),jt(n,"width","100%"),jt(n,"zIndex",1),n),a?{}:{backgroundColor:l.neutral0,borderRadius:o,boxShadow:"0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)",marginBottom:s.menuGutter,marginTop:s.menuGutter})},wI=_a(null),EI=function(t){var a=t.children,n=t.minMenuHeight,i=t.maxMenuHeight,r=t.menuPlacement,o=t.menuPosition,s=t.menuShouldScrollIntoView,l=t.theme,u=Yt(wI)||{},c=u.setPortalPlacement,f=ot(null),p=Re(i),b=Le(p,2),d=b[0],m=b[1],h=Re(null),v=Le(h,2),x=v[0],E=v[1],g=l.spacing.controlHeight;return gc(function(){var w=f.current;if(w){var C=o==="fixed",y=s&&!C,S=sL({maxHeight:i,menuEl:w,minHeight:n,placement:r,shouldScroll:y,isFixedPosition:C,controlHeight:g});m(S.maxHeight),E(S.placement),c==null||c(S.placement)}},[i,r,o,s,n,c,g]),a({ref:f,placerProps:ae(ae({},t),{},{placement:x||xI(r),maxHeight:d})})},cL=function(t){var a=t.children,n=t.innerRef,i=t.innerProps;return re("div",W({},Ze(t,"menu",{menu:!0}),{ref:n},i),a)},uL=cL,SI=function(t,a){var n=t.maxHeight,i=t.theme.spacing.baseUnit;return ae({maxHeight:n,overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},a?{}:{paddingBottom:i,paddingTop:i})},pL=function(t){var a=t.children,n=t.innerProps,i=t.innerRef,r=t.isMulti;return re("div",W({},Ze(t,"menuList",{"menu-list":!0,"menu-list--is-multi":r}),{ref:i},n),a)},CI=function(t,a){var n=t.theme,i=n.spacing.baseUnit,r=n.colors;return ae({textAlign:"center"},a?{}:{color:r.neutral40,padding:"".concat(i*2,"px ").concat(i*3,"px")})},AI=CI,II=CI,_I=function(t){var a=t.children,n=t.innerProps;return re("div",W({},Ze(t,"noOptionsMessage",{"menu-notice":!0,"menu-notice--no-options":!0}),n),a)};_I.defaultProps={children:"No options"};var TI=function(t){var a=t.children,n=t.innerProps;return re("div",W({},Ze(t,"loadingMessage",{"menu-notice":!0,"menu-notice--loading":!0}),n),a)};TI.defaultProps={children:"Loading..."};var kI=function(t){var a=t.rect,n=t.offset,i=t.position;return{left:a.left,position:i,top:n,width:a.width,zIndex:1}},dL=function(t){var a=t.appendTo,n=t.children,i=t.controlElement,r=t.innerProps,o=t.menuPlacement,s=t.menuPosition,l=ot(null),u=ot(null),c=Re(xI(o)),f=Le(c,2),p=f[0],b=f[1],d=At(function(){return{setPortalPlacement:b}},[]),m=Re(null),h=Le(m,2),v=h[0],x=h[1],E=Fe(function(){if(i){var y=iL(i),S=s==="fixed"?0:window.pageYOffset,A=y[p]+S;(A!==(v==null?void 0:v.offset)||y.left!==(v==null?void 0:v.rect.left)||y.width!==(v==null?void 0:v.rect.width))&&x({offset:A,rect:y})}},[i,s,p,v==null?void 0:v.offset,v==null?void 0:v.rect.left,v==null?void 0:v.rect.width]);gc(function(){E()},[E]);var g=Fe(function(){typeof u.current=="function"&&(u.current(),u.current=null),i&&l.current&&(u.current=lI(i,l.current,E,{elementResize:"ResizeObserver"in window}))},[i,E]);gc(function(){g()},[g]);var w=Fe(function(y){l.current=y,g()},[g]);if(!a&&s!=="fixed"||!v)return null;var C=re("div",W({ref:w},Ze(ae(ae({},t),{},{offset:v.offset,position:s,rect:v.rect}),"menuPortal",{"menu-portal":!0}),r),n);return re(wI.Provider,{value:d},a?yu(C,a):C)},FI=function(t){var a=t.isDisabled,n=t.isRtl;return{label:"container",direction:n?"rtl":void 0,pointerEvents:a?"none":void 0,position:"relative"}},fL=function(t){var a=t.children,n=t.innerProps,i=t.isDisabled,r=t.isRtl;return re("div",W({},Ze(t,"container",{"--is-disabled":i,"--is-rtl":r}),n),a)},PI=function(t,a){var n=t.theme.spacing,i=t.isMulti,r=t.hasValue,o=t.selectProps.controlShouldRenderValue;return ae({alignItems:"center",display:i&&r&&o?"flex":"grid",flex:1,flexWrap:"wrap",WebkitOverflowScrolling:"touch",position:"relative",overflow:"hidden"},a?{}:{padding:"".concat(n.baseUnit/2,"px ").concat(n.baseUnit*2,"px")})},mL=function(t){var a=t.children,n=t.innerProps,i=t.isMulti,r=t.hasValue;return re("div",W({},Ze(t,"valueContainer",{"value-container":!0,"value-container--is-multi":i,"value-container--has-value":r}),n),a)},OI=function(){return{alignItems:"center",alignSelf:"stretch",display:"flex",flexShrink:0}},hL=function(t){var a=t.children,n=t.innerProps;return re("div",W({},Ze(t,"indicatorsContainer",{indicators:!0}),n),a)},cI,vL=["size"];var bL={name:"8mmkcg",styles:"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0"},RI=function(t){var a=t.size,n=Wt(t,vL);return re("svg",W({height:a,width:a,viewBox:"0 0 20 20","aria-hidden":"true",focusable:"false",css:bL},n))},cm=function(t){return re(RI,W({size:20},t),re("path",{d:"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z"}))},BI=function(t){return re(RI,W({size:20},t),re("path",{d:"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"}))},NI=function(t,a){var n=t.isFocused,i=t.theme,r=i.spacing.baseUnit,o=i.colors;return ae({label:"indicatorContainer",display:"flex",transition:"color 150ms"},a?{}:{color:n?o.neutral60:o.neutral20,padding:r*2,":hover":{color:n?o.neutral80:o.neutral40}})},jI=NI,gL=function(t){var a=t.children,n=t.innerProps;return re("div",W({},Ze(t,"dropdownIndicator",{indicator:!0,"dropdown-indicator":!0}),n),a||re(BI,null))},LI=NI,xL=function(t){var a=t.children,n=t.innerProps;return re("div",W({},Ze(t,"clearIndicator",{indicator:!0,"clear-indicator":!0}),n),a||re(cm,null))},MI=function(t,a){var n=t.isDisabled,i=t.theme,r=i.spacing.baseUnit,o=i.colors;return ae({label:"indicatorSeparator",alignSelf:"stretch",width:1},a?{}:{backgroundColor:n?o.neutral10:o.neutral20,marginBottom:r*2,marginTop:r*2})},yL=function(t){var a=t.innerProps;return re("span",W({},a,Ze(t,"indicatorSeparator",{"indicator-separator":!0})))},wL=Y2(cI||(cI=Kf([` 0%, 80%, 100% { opacity: 0; } 40% { opacity: 1; } -`]))),LI=function(t,a){var n=t.isFocused,i=t.size,r=t.theme,o=r.colors,s=r.spacing.baseUnit;return ae({label:"loadingIndicator",display:"flex",transition:"color 150ms",alignSelf:"center",fontSize:i,lineHeight:1,marginRight:i,textAlign:"center",verticalAlign:"middle"},a?{}:{color:n?o.neutral60:o.neutral20,padding:s*2})},rm=function(t){var a=t.delay,n=t.offset;return re("span",{css:Gr({animation:"".concat(EL," 1s ease-in-out ").concat(a,"ms infinite;"),backgroundColor:"currentColor",borderRadius:"1em",display:"inline-block",marginLeft:n?"1em":void 0,height:"1em",verticalAlign:"top",width:"1em"},"","")})},MI=function(t){var a=t.innerProps,n=t.isRtl;return re("div",W({},Ze(t,"loadingIndicator",{indicator:!0,"loading-indicator":!0}),a),re(rm,{delay:0,offset:n}),re(rm,{delay:160,offset:!0}),re(rm,{delay:320,offset:!n}))};MI.defaultProps={size:4};var DI=function(t,a){var n=t.isDisabled,i=t.isFocused,r=t.theme,o=r.colors,s=r.borderRadius,l=r.spacing;return ae({label:"control",alignItems:"center",cursor:"default",display:"flex",flexWrap:"wrap",justifyContent:"space-between",minHeight:l.controlHeight,outline:"0 !important",position:"relative",transition:"all 100ms"},a?{}:{backgroundColor:n?o.neutral5:o.neutral0,borderColor:n?o.neutral10:i?o.primary:o.neutral20,borderRadius:s,borderStyle:"solid",borderWidth:1,boxShadow:i?"0 0 0 1px ".concat(o.primary):void 0,"&:hover":{borderColor:i?o.primary:o.neutral30}})},SL=function(t){var a=t.children,n=t.isDisabled,i=t.isFocused,r=t.innerRef,o=t.innerProps,s=t.menuIsOpen;return re("div",W({ref:r},Ze(t,"control",{control:!0,"control--is-disabled":n,"control--is-focused":i,"control--menu-is-open":s}),o),a)},CL=SL,AL=["data"],zI=function(t,a){var n=t.theme.spacing;return a?{}:{paddingBottom:n.baseUnit*2,paddingTop:n.baseUnit*2}},IL=function(t){var a=t.children,n=t.cx,i=t.getStyles,r=t.getClassNames,o=t.Heading,s=t.headingProps,l=t.innerProps,u=t.label,c=t.theme,f=t.selectProps;return re("div",W({},Ze(t,"group",{group:!0}),l),re(o,W({},s,{selectProps:f,theme:c,getStyles:i,getClassNames:r,cx:n}),u),re("div",null,a))},GI=function(t,a){var n=t.theme,i=n.colors,r=n.spacing;return ae({label:"group",cursor:"default",display:"block"},a?{}:{color:i.neutral40,fontSize:"75%",fontWeight:500,marginBottom:"0.25em",paddingLeft:r.baseUnit*3,paddingRight:r.baseUnit*3,textTransform:"uppercase"})},_L=function(t){var a=cI(t);a.data;var n=Wt(a,AL);return re("div",W({},Ze(t,"groupHeading",{"group-heading":!0}),n))},TL=IL,kL=["innerRef","isDisabled","isHidden","inputClassName"],HI=function(t,a){var n=t.isDisabled,i=t.value,r=t.theme,o=r.spacing,s=r.colors;return ae(ae({visibility:n?"hidden":"visible",transform:i?"translateZ(0)":""},FL),a?{}:{margin:o.baseUnit/2,paddingBottom:o.baseUnit/2,paddingTop:o.baseUnit/2,color:s.neutral80})},WI={gridArea:"1 / 2",font:"inherit",minWidth:"2px",border:0,margin:0,outline:0,padding:0},FL={flex:"1 1 auto",display:"inline-grid",gridArea:"1 / 1 / 2 / 3",gridTemplateColumns:"0 min-content","&:after":ae({content:'attr(data-value) " "',visibility:"hidden",whiteSpace:"pre"},WI)},PL=function(t){return ae({label:"input",color:"inherit",background:0,opacity:t?0:1,width:"100%"},WI)},OL=function(t){var a=t.cx,n=t.value,i=cI(t),r=i.innerRef,o=i.isDisabled,s=i.isHidden,l=i.inputClassName,u=Wt(i,kL);return re("div",W({},Ze(t,"input",{"input-container":!0}),{"data-value":n||""}),re("input",W({className:a({input:!0},l),ref:r,style:PL(s),disabled:o},u)))},RL=OL,VI=function(t,a){var n=t.theme,i=n.spacing,r=n.borderRadius,o=n.colors;return ae({label:"multiValue",display:"flex",minWidth:0},a?{}:{backgroundColor:o.neutral10,borderRadius:r/2,margin:i.baseUnit/2})},UI=function(t,a){var n=t.theme,i=n.borderRadius,r=n.colors,o=t.cropWithEllipsis;return ae({overflow:"hidden",textOverflow:o||o===void 0?"ellipsis":void 0,whiteSpace:"nowrap"},a?{}:{borderRadius:i/2,color:r.neutral80,fontSize:"85%",padding:3,paddingLeft:6})},JI=function(t,a){var n=t.theme,i=n.spacing,r=n.borderRadius,o=n.colors,s=t.isFocused;return ae({alignItems:"center",display:"flex"},a?{}:{borderRadius:r/2,backgroundColor:s?o.dangerLight:void 0,paddingLeft:i.baseUnit,paddingRight:i.baseUnit,":hover":{backgroundColor:o.dangerLight,color:o.danger}})},ZI=function(t){var a=t.children,n=t.innerProps;return re("div",n,a)},BL=ZI,NL=ZI;function jL(e){var t=e.children,a=e.innerProps;return re("div",W({role:"button"},a),t||re(cm,{size:14}))}var LL=function(t){var a=t.children,n=t.components,i=t.data,r=t.innerProps,o=t.isDisabled,s=t.removeProps,l=t.selectProps,u=n.Container,c=n.Label,f=n.Remove;return re(u,{data:i,innerProps:ae(ae({},Ze(t,"multiValue",{"multi-value":!0,"multi-value--is-disabled":o})),r),selectProps:l},re(c,{data:i,innerProps:ae({},Ze(t,"multiValueLabel",{"multi-value__label":!0})),selectProps:l},a),re(f,{data:i,innerProps:ae(ae({},Ze(t,"multiValueRemove",{"multi-value__remove":!0})),{},{"aria-label":"Remove ".concat(a||"option")},s),selectProps:l}))},ML=LL,qI=function(t,a){var n=t.isDisabled,i=t.isFocused,r=t.isSelected,o=t.theme,s=o.spacing,l=o.colors;return ae({label:"option",cursor:"default",display:"block",fontSize:"inherit",width:"100%",userSelect:"none",WebkitTapHighlightColor:"rgba(0, 0, 0, 0)"},a?{}:{backgroundColor:r?l.primary:i?l.primary25:"transparent",color:n?l.neutral20:r?l.neutral0:"inherit",padding:"".concat(s.baseUnit*2,"px ").concat(s.baseUnit*3,"px"),":active":{backgroundColor:n?void 0:r?l.primary:l.primary50}})},DL=function(t){var a=t.children,n=t.isDisabled,i=t.isFocused,r=t.isSelected,o=t.innerRef,s=t.innerProps;return re("div",W({},Ze(t,"option",{option:!0,"option--is-disabled":n,"option--is-focused":i,"option--is-selected":r}),{ref:o,"aria-disabled":n},s),a)},zL=DL,XI=function(t,a){var n=t.theme,i=n.spacing,r=n.colors;return ae({label:"placeholder",gridArea:"1 / 1 / 2 / 3"},a?{}:{color:r.neutral50,marginLeft:i.baseUnit/2,marginRight:i.baseUnit/2})},GL=function(t){var a=t.children,n=t.innerProps;return re("div",W({},Ze(t,"placeholder",{placeholder:!0}),n),a)},HL=GL,$I=function(t,a){var n=t.isDisabled,i=t.theme,r=i.spacing,o=i.colors;return ae({label:"singleValue",gridArea:"1 / 1 / 2 / 3",maxWidth:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},a?{}:{color:n?o.neutral40:o.neutral80,marginLeft:r.baseUnit/2,marginRight:r.baseUnit/2})},WL=function(t){var a=t.children,n=t.isDisabled,i=t.innerProps;return re("div",W({},Ze(t,"singleValue",{"single-value":!0,"single-value--is-disabled":n}),i),a)},VL=WL,UL={ClearIndicator:yL,Control:CL,DropdownIndicator:xL,DownChevron:OI,CrossIcon:cm,Group:TL,GroupHeading:_L,IndicatorsContainer:vL,IndicatorSeparator:wL,Input:RL,LoadingIndicator:MI,Menu:pL,MenuList:dL,MenuPortal:fL,LoadingMessage:II,NoOptionsMessage:AI,MultiValue:ML,MultiValueContainer:BL,MultiValueLabel:NL,MultiValueRemove:jL,Option:zL,Placeholder:HL,SelectContainer:mL,SingleValue:VL,ValueContainer:hL},YI=function(t){return ae(ae({},UL),t.components)};var KI=Number.isNaN||function(t){return typeof t=="number"&&t!==t};function JL(e,t){return!!(e===t||KI(e)&&KI(t))}function ZL(e,t){if(e.length!==t.length)return!1;for(var a=0;a<e.length;a++)if(!JL(e[a],t[a]))return!1;return!0}function QI(e,t){t===void 0&&(t=ZL);var a=null;function n(){for(var i=[],r=0;r<arguments.length;r++)i[r]=arguments[r];if(a&&a.lastThis===this&&t(i,a.lastArgs))return a.lastResult;var o=e.apply(this,i);return a={lastResult:o,lastArgs:i,lastThis:this},o}return n.clear=function(){a=null},n}var qL={name:"7pg0cj-a11yText",styles:"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap"},XL=function(t){return re("span",W({css:qL},t))},e_=XL,$L={guidance:function(t){var a=t.isSearchable,n=t.isMulti,i=t.isDisabled,r=t.tabSelectsValue,o=t.context;switch(o){case"menu":return"Use Up and Down to choose options".concat(i?"":", press Enter to select the currently focused option",", press Escape to exit the menu").concat(r?", press Tab to select the option and exit the menu":"",".");case"input":return"".concat(t["aria-label"]||"Select"," is focused ").concat(a?",type to refine list":"",", press Down to open the menu, ").concat(n?" press left to focus selected values":"");case"value":return"Use left and right to toggle between focused values, press Backspace to remove the currently focused value";default:return""}},onChange:function(t){var a=t.action,n=t.label,i=n===void 0?"":n,r=t.labels,o=t.isDisabled;switch(a){case"deselect-option":case"pop-value":case"remove-value":return"option ".concat(i,", deselected.");case"clear":return"All selected options have been cleared.";case"initial-input-focus":return"option".concat(r.length>1?"s":""," ").concat(r.join(","),", selected.");case"select-option":return o?"option ".concat(i," is disabled. Select another option."):"option ".concat(i,", selected.");default:return""}},onFocus:function(t){var a=t.context,n=t.focused,i=t.options,r=t.label,o=r===void 0?"":r,s=t.selectValue,l=t.isDisabled,u=t.isSelected,c=function(d,h){return d&&d.length?"".concat(d.indexOf(h)+1," of ").concat(d.length):""};if(a==="value"&&s)return"value ".concat(o," focused, ").concat(c(s,n),".");if(a==="menu"){var f=l?" disabled":"",p="".concat(u?"selected":"focused").concat(f);return"option ".concat(o," ").concat(p,", ").concat(c(i,n),".")}return""},onFilter:function(t){var a=t.inputValue,n=t.resultsMessage;return"".concat(n).concat(a?" for search term "+a:"",".")}},YL=function(t){var a=t.ariaSelection,n=t.focusedOption,i=t.focusedValue,r=t.focusableOptions,o=t.isFocused,s=t.selectValue,l=t.selectProps,u=t.id,c=l.ariaLiveMessages,f=l.getOptionLabel,p=l.inputValue,b=l.isMulti,d=l.isOptionDisabled,h=l.isSearchable,m=l.menuIsOpen,v=l.options,x=l.screenReaderStatus,E=l.tabSelectsValue,g=l["aria-label"],w=l["aria-live"],C=At(function(){return ae(ae({},$L),c||{})},[c]),y=At(function(){var N="";if(a&&C.onChange){var L=a.option,k=a.options,T=a.removedValue,j=a.removedValues,M=a.value,D=function(oe){return Array.isArray(oe)?null:oe},V=T||L||D(M),q=V?f(V):"",Z=k||j||void 0,pe=Z?Z.map(f):[],fe=ae({isDisabled:V&&d(V,s),label:q,labels:pe},a);N=C.onChange(fe)}return N},[a,C,d,s,f]),S=At(function(){var N="",L=n||i,k=!!(n&&s&&s.includes(n));if(L&&C.onFocus){var T={focused:L,label:f(L),isDisabled:d(L,s),isSelected:k,options:r,context:L===n?"menu":"value",selectValue:s};N=C.onFocus(T)}return N},[n,i,f,d,C,r,s]),I=At(function(){var N="";if(m&&v.length&&C.onFilter){var L=x({count:r.length});N=C.onFilter({inputValue:p,resultsMessage:L})}return N},[r,p,m,C,v,x]),_=At(function(){var N="";if(C.guidance){var L=i?"value":m?"menu":"input";N=C.guidance({"aria-label":g,context:L,isDisabled:n&&d(n,s),isMulti:b,isSearchable:h,tabSelectsValue:E})}return N},[g,n,i,b,d,h,m,C,s,E]),P="".concat(S," ").concat(I," ").concat(_),F=re(rt,null,re("span",{id:"aria-selection"},y),re("span",{id:"aria-context"},P)),B=(a==null?void 0:a.action)==="initial-input-focus";return re(rt,null,re(e_,{id:u},B&&F),re(e_,{"aria-live":w,"aria-atomic":"false","aria-relevant":"additions text"},o&&!B&&F))},KL=YL,pm=[{base:"A",letters:"A\u24B6\uFF21\xC0\xC1\xC2\u1EA6\u1EA4\u1EAA\u1EA8\xC3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\xC4\u01DE\u1EA2\xC5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F"},{base:"AA",letters:"\uA732"},{base:"AE",letters:"\xC6\u01FC\u01E2"},{base:"AO",letters:"\uA734"},{base:"AU",letters:"\uA736"},{base:"AV",letters:"\uA738\uA73A"},{base:"AY",letters:"\uA73C"},{base:"B",letters:"B\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181"},{base:"C",letters:"C\u24B8\uFF23\u0106\u0108\u010A\u010C\xC7\u1E08\u0187\u023B\uA73E"},{base:"D",letters:"D\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779"},{base:"DZ",letters:"\u01F1\u01C4"},{base:"Dz",letters:"\u01F2\u01C5"},{base:"E",letters:"E\u24BA\uFF25\xC8\xC9\xCA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\xCB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E"},{base:"F",letters:"F\u24BB\uFF26\u1E1E\u0191\uA77B"},{base:"G",letters:"G\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E"},{base:"H",letters:"H\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D"},{base:"I",letters:"I\u24BE\uFF29\xCC\xCD\xCE\u0128\u012A\u012C\u0130\xCF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197"},{base:"J",letters:"J\u24BF\uFF2A\u0134\u0248"},{base:"K",letters:"K\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2"},{base:"L",letters:"L\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780"},{base:"LJ",letters:"\u01C7"},{base:"Lj",letters:"\u01C8"},{base:"M",letters:"M\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C"},{base:"N",letters:"N\u24C3\uFF2E\u01F8\u0143\xD1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4"},{base:"NJ",letters:"\u01CA"},{base:"Nj",letters:"\u01CB"},{base:"O",letters:"O\u24C4\uFF2F\xD2\xD3\xD4\u1ED2\u1ED0\u1ED6\u1ED4\xD5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\xD6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\xD8\u01FE\u0186\u019F\uA74A\uA74C"},{base:"OI",letters:"\u01A2"},{base:"OO",letters:"\uA74E"},{base:"OU",letters:"\u0222"},{base:"P",letters:"P\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754"},{base:"Q",letters:"Q\u24C6\uFF31\uA756\uA758\u024A"},{base:"R",letters:"R\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782"},{base:"S",letters:"S\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784"},{base:"T",letters:"T\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786"},{base:"TZ",letters:"\uA728"},{base:"U",letters:"U\u24CA\uFF35\xD9\xDA\xDB\u0168\u1E78\u016A\u1E7A\u016C\xDC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244"},{base:"V",letters:"V\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245"},{base:"VY",letters:"\uA760"},{base:"W",letters:"W\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72"},{base:"X",letters:"X\u24CD\uFF38\u1E8A\u1E8C"},{base:"Y",letters:"Y\u24CE\uFF39\u1EF2\xDD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE"},{base:"Z",letters:"Z\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762"},{base:"a",letters:"a\u24D0\uFF41\u1E9A\xE0\xE1\xE2\u1EA7\u1EA5\u1EAB\u1EA9\xE3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\xE4\u01DF\u1EA3\xE5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250"},{base:"aa",letters:"\uA733"},{base:"ae",letters:"\xE6\u01FD\u01E3"},{base:"ao",letters:"\uA735"},{base:"au",letters:"\uA737"},{base:"av",letters:"\uA739\uA73B"},{base:"ay",letters:"\uA73D"},{base:"b",letters:"b\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253"},{base:"c",letters:"c\u24D2\uFF43\u0107\u0109\u010B\u010D\xE7\u1E09\u0188\u023C\uA73F\u2184"},{base:"d",letters:"d\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A"},{base:"dz",letters:"\u01F3\u01C6"},{base:"e",letters:"e\u24D4\uFF45\xE8\xE9\xEA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\xEB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD"},{base:"f",letters:"f\u24D5\uFF46\u1E1F\u0192\uA77C"},{base:"g",letters:"g\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F"},{base:"h",letters:"h\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265"},{base:"hv",letters:"\u0195"},{base:"i",letters:"i\u24D8\uFF49\xEC\xED\xEE\u0129\u012B\u012D\xEF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131"},{base:"j",letters:"j\u24D9\uFF4A\u0135\u01F0\u0249"},{base:"k",letters:"k\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3"},{base:"l",letters:"l\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747"},{base:"lj",letters:"\u01C9"},{base:"m",letters:"m\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F"},{base:"n",letters:"n\u24DD\uFF4E\u01F9\u0144\xF1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5"},{base:"nj",letters:"\u01CC"},{base:"o",letters:"o\u24DE\uFF4F\xF2\xF3\xF4\u1ED3\u1ED1\u1ED7\u1ED5\xF5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\xF6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\xF8\u01FF\u0254\uA74B\uA74D\u0275"},{base:"oi",letters:"\u01A3"},{base:"ou",letters:"\u0223"},{base:"oo",letters:"\uA74F"},{base:"p",letters:"p\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755"},{base:"q",letters:"q\u24E0\uFF51\u024B\uA757\uA759"},{base:"r",letters:"r\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783"},{base:"s",letters:"s\u24E2\uFF53\xDF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B"},{base:"t",letters:"t\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787"},{base:"tz",letters:"\uA729"},{base:"u",letters:"u\u24E4\uFF55\xF9\xFA\xFB\u0169\u1E79\u016B\u1E7B\u016D\xFC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289"},{base:"v",letters:"v\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C"},{base:"vy",letters:"\uA761"},{base:"w",letters:"w\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73"},{base:"x",letters:"x\u24E7\uFF58\u1E8B\u1E8D"},{base:"y",letters:"y\u24E8\uFF59\u1EF3\xFD\u0177\u1EF9\u0233\u1E8F\xFF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF"},{base:"z",letters:"z\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763"}],QL=new RegExp("["+pm.map(function(e){return e.letters}).join("")+"]","g"),p_={};for(Ec=0;Ec<pm.length;Ec++)for(Sc=pm[Ec],Cc=0;Cc<Sc.letters.length;Cc++)p_[Sc.letters[Cc]]=Sc.base;var Sc,Cc,Ec,d_=function(t){return t.replace(QL,function(a){return p_[a]})},eM=QI(d_),t_=function(t){return t.replace(/^\s+|\s+$/g,"")},tM=function(t){return"".concat(t.label," ").concat(t.value)},aM=function(t){return function(a,n){if(a.data.__isNew__)return!0;var i=ae({ignoreCase:!0,ignoreAccents:!0,stringify:tM,trim:!0,matchFrom:"any"},t),r=i.ignoreCase,o=i.ignoreAccents,s=i.stringify,l=i.trim,u=i.matchFrom,c=l?t_(n):n,f=l?t_(s(a)):s(a);return r&&(c=c.toLowerCase(),f=f.toLowerCase()),o&&(c=eM(c),f=d_(f)),u==="start"?f.substr(0,c.length)===c:f.indexOf(c)>-1}},nM=["innerRef"];function iM(e){var t=e.innerRef,a=Wt(e,nM),n=vI(a,"onExited","in","enter","exit","appear");return re("input",W({ref:t},n,{css:Gr({label:"dummyInput",background:0,border:0,caretColor:"transparent",fontSize:"inherit",gridArea:"1 / 1 / 2 / 3",outline:0,padding:0,width:1,color:"transparent",left:-100,opacity:0,position:"relative",transform:"scale(.01)"},"","")}))}var rM=function(t){t.preventDefault(),t.stopPropagation()};function oM(e){var t=e.isEnabled,a=e.onBottomArrive,n=e.onBottomLeave,i=e.onTopArrive,r=e.onTopLeave,o=ot(!1),s=ot(!1),l=ot(0),u=ot(null),c=Fe(function(m,v){if(u.current!==null){var x=u.current,E=x.scrollTop,g=x.scrollHeight,w=x.clientHeight,C=u.current,y=v>0,S=g-w-E,I=!1;S>v&&o.current&&(n&&n(m),o.current=!1),y&&s.current&&(r&&r(m),s.current=!1),y&&v>S?(a&&!o.current&&a(m),C.scrollTop=g,I=!0,o.current=!0):!y&&-v>E&&(i&&!s.current&&i(m),C.scrollTop=0,I=!0,s.current=!0),I&&rM(m)}},[a,n,i,r]),f=Fe(function(m){c(m,m.deltaY)},[c]),p=Fe(function(m){l.current=m.changedTouches[0].clientY},[]),b=Fe(function(m){var v=l.current-m.changedTouches[0].clientY;c(m,v)},[c]),d=Fe(function(m){if(m){var v=mI?{passive:!1}:!1;m.addEventListener("wheel",f,v),m.addEventListener("touchstart",p,v),m.addEventListener("touchmove",b,v)}},[b,p,f]),h=Fe(function(m){m&&(m.removeEventListener("wheel",f,!1),m.removeEventListener("touchstart",p,!1),m.removeEventListener("touchmove",b,!1))},[b,p,f]);return ha(function(){if(t){var m=u.current;return d(m),function(){h(m)}}},[t,d,h]),function(m){u.current=m}}var a_=["boxSizing","height","overflow","paddingRight","position"],n_={boxSizing:"border-box",overflow:"hidden",position:"relative",height:"100%"};function i_(e){e.preventDefault()}function r_(e){e.stopPropagation()}function o_(){var e=this.scrollTop,t=this.scrollHeight,a=e+this.offsetHeight;e===0?this.scrollTop=1:a===t&&(this.scrollTop=e-1)}function s_(){return"ontouchstart"in window||navigator.maxTouchPoints}var l_=!!(typeof window!="undefined"&&window.document&&window.document.createElement),Ur=0,Ai={capture:!1,passive:!1};function sM(e){var t=e.isEnabled,a=e.accountForScrollbars,n=a===void 0?!0:a,i=ot({}),r=ot(null),o=Fe(function(l){if(l_){var u=document.body,c=u&&u.style;if(n&&a_.forEach(function(d){var h=c&&c[d];i.current[d]=h}),n&&Ur<1){var f=parseInt(i.current.paddingRight,10)||0,p=document.body?document.body.clientWidth:0,b=window.innerWidth-p+f||0;Object.keys(n_).forEach(function(d){var h=n_[d];c&&(c[d]=h)}),c&&(c.paddingRight="".concat(b,"px"))}u&&s_()&&(u.addEventListener("touchmove",i_,Ai),l&&(l.addEventListener("touchstart",o_,Ai),l.addEventListener("touchmove",r_,Ai))),Ur+=1}},[n]),s=Fe(function(l){if(l_){var u=document.body,c=u&&u.style;Ur=Math.max(Ur-1,0),n&&Ur<1&&a_.forEach(function(f){var p=i.current[f];c&&(c[f]=p)}),u&&s_()&&(u.removeEventListener("touchmove",i_,Ai),l&&(l.removeEventListener("touchstart",o_,Ai),l.removeEventListener("touchmove",r_,Ai)))}},[n]);return ha(function(){if(t){var l=r.current;return o(l),function(){s(l)}}},[t,o,s]),function(l){r.current=l}}var lM=function(){return document.activeElement&&document.activeElement.blur()},cM={name:"1kfdb0e",styles:"position:fixed;left:0;bottom:0;right:0;top:0"};function uM(e){var t=e.children,a=e.lockEnabled,n=e.captureEnabled,i=n===void 0?!0:n,r=e.onBottomArrive,o=e.onBottomLeave,s=e.onTopArrive,l=e.onTopLeave,u=oM({isEnabled:i,onBottomArrive:r,onBottomLeave:o,onTopArrive:s,onTopLeave:l}),c=sM({isEnabled:a}),f=function(b){u(b),c(b)};return re(rt,null,a&&re("div",{onClick:lM,css:cM}),t(f))}var pM={name:"1a0ro4n-requiredInput",styles:"label:requiredInput;opacity:0;pointer-events:none;position:absolute;bottom:0;left:0;right:0;width:100%"},dM=function(t){var a=t.name,n=t.onFocus;return re("input",{required:!0,name:a,tabIndex:-1,"aria-hidden":"true",onFocus:n,css:pM,value:"",onChange:function(){}})},fM=dM,mM=function(t){return t.label},hM=function(t){return t.label},vM=function(t){return t.value},bM=function(t){return!!t.isDisabled},gM={clearIndicator:NI,container:TI,control:DI,dropdownIndicator:BI,group:zI,groupHeading:GI,indicatorsContainer:FI,indicatorSeparator:jI,input:HI,loadingIndicator:LI,loadingMessage:CI,menu:gI,menuList:wI,menuPortal:_I,multiValue:VI,multiValueLabel:UI,multiValueRemove:JI,noOptionsMessage:SI,option:qI,placeholder:XI,singleValue:$I,valueContainer:kI};var xM={primary:"#2684FF",primary75:"#4C9AFF",primary50:"#B2D4FF",primary25:"#DEEBFF",danger:"#DE350B",dangerLight:"#FFBDAD",neutral0:"hsl(0, 0%, 100%)",neutral5:"hsl(0, 0%, 95%)",neutral10:"hsl(0, 0%, 90%)",neutral20:"hsl(0, 0%, 80%)",neutral30:"hsl(0, 0%, 70%)",neutral40:"hsl(0, 0%, 60%)",neutral50:"hsl(0, 0%, 50%)",neutral60:"hsl(0, 0%, 40%)",neutral70:"hsl(0, 0%, 30%)",neutral80:"hsl(0, 0%, 20%)",neutral90:"hsl(0, 0%, 10%)"},yM=4,f_=4,wM=38,EM=f_*2,SM={baseUnit:f_,controlHeight:wM,menuGutter:EM},um={borderRadius:yM,colors:xM,spacing:SM},CM={"aria-live":"polite",backspaceRemovesValue:!0,blurInputOnSelect:lm(),captureMenuScroll:!lm(),classNames:{},closeMenuOnSelect:!0,closeMenuOnScroll:!1,components:{},controlShouldRenderValue:!0,escapeClearsValue:!1,filterOption:aM(),formatGroupLabel:mM,getOptionLabel:hM,getOptionValue:vM,isDisabled:!1,isLoading:!1,isMulti:!1,isRtl:!1,isSearchable:!0,isOptionDisabled:bM,loadingMessage:function(){return"Loading..."},maxMenuHeight:300,minMenuHeight:140,menuIsOpen:!1,menuPlacement:"bottom",menuPosition:"absolute",menuShouldBlockScroll:!1,menuShouldScrollIntoView:!dI(),noOptionsMessage:function(){return"No options"},openMenuOnFocus:!1,openMenuOnClick:!0,options:[],pageSize:5,placeholder:"Select...",screenReaderStatus:function(t){var a=t.count;return"".concat(a," result").concat(a!==1?"s":""," available")},styles:{},tabIndex:0,tabSelectsValue:!0,unstyled:!1};function c_(e,t,a,n){var i=b_(e,t,a),r=g_(e,t,a),o=v_(e,t),s=Ac(e,t);return{type:"option",data:t,isDisabled:i,isSelected:r,label:o,value:s,index:n}}function m_(e,t){return e.options.map(function(a,n){if("options"in a){var i=a.options.map(function(o,s){return c_(e,o,t,s)}).filter(function(o){return u_(e,o)});return i.length>0?{type:"group",data:a,options:i,index:n}:void 0}var r=c_(e,a,t,n);return u_(e,r)?r:void 0}).filter(hI)}function h_(e){return e.reduce(function(t,a){return a.type==="group"?t.push.apply(t,ql(a.options.map(function(n){return n.data}))):t.push(a.data),t},[])}function AM(e,t){return h_(m_(e,t))}function u_(e,t){var a=e.inputValue,n=a===void 0?"":a,i=t.data,r=t.isSelected,o=t.label,s=t.value;return(!y_(e)||!r)&&x_(e,{label:o,value:s,data:i},n)}function IM(e,t){var a=e.focusedValue,n=e.selectValue,i=n.indexOf(a);if(i>-1){var r=t.indexOf(a);if(r>-1)return a;if(i<t.length)return t[i]}return null}function _M(e,t){var a=e.focusedOption;return a&&t.indexOf(a)>-1?a:t[0]}var v_=function(t,a){return t.getOptionLabel(a)},Ac=function(t,a){return t.getOptionValue(a)};function b_(e,t,a){return typeof e.isOptionDisabled=="function"?e.isOptionDisabled(t,a):!1}function g_(e,t,a){if(a.indexOf(t)>-1)return!0;if(typeof e.isOptionSelected=="function")return e.isOptionSelected(t,a);var n=Ac(e,t);return a.some(function(i){return Ac(e,i)===n})}function x_(e,t,a){return e.filterOption?e.filterOption(t,a):!0}var y_=function(t){var a=t.hideSelectedOptions,n=t.isMulti;return a===void 0?n:a},TM=1,dm=function(e){Tf(a,e);var t=Of(a);function a(n){var i;if(If(this,a),i=t.call(this,n),i.state={ariaSelection:null,focusedOption:null,focusedValue:null,inputIsHidden:!1,isFocused:!1,selectValue:[],clearFocusValueOnUpdate:!1,prevWasFocused:!1,inputIsHiddenAfterUpdate:void 0,prevProps:void 0},i.blockOptionHover=!1,i.isComposing=!1,i.commonProps=void 0,i.initialTouchX=0,i.initialTouchY=0,i.instancePrefix="",i.openAfterFocus=!1,i.scrollToFocusedOptionOnUpdate=!1,i.userIsDragging=void 0,i.controlRef=null,i.getControlRef=function(s){i.controlRef=s},i.focusedOptionRef=null,i.getFocusedOptionRef=function(s){i.focusedOptionRef=s},i.menuListRef=null,i.getMenuListRef=function(s){i.menuListRef=s},i.inputRef=null,i.getInputRef=function(s){i.inputRef=s},i.focus=i.focusInput,i.blur=i.blurInput,i.onChange=function(s,l){var u=i.props,c=u.onChange,f=u.name;l.name=f,i.ariaOnChange(s,l),c(s,l)},i.setValue=function(s,l,u){var c=i.props,f=c.closeMenuOnSelect,p=c.isMulti,b=c.inputValue;i.onInputChange("",{action:"set-value",prevInputValue:b}),f&&(i.setState({inputIsHiddenAfterUpdate:!p}),i.onMenuClose()),i.setState({clearFocusValueOnUpdate:!0}),i.onChange(s,{action:l,option:u})},i.selectOption=function(s){var l=i.props,u=l.blurInputOnSelect,c=l.isMulti,f=l.name,p=i.state.selectValue,b=c&&i.isOptionSelected(s,p),d=i.isOptionDisabled(s,p);if(b){var h=i.getOptionValue(s);i.setValue(p.filter(function(m){return i.getOptionValue(m)!==h}),"deselect-option",s)}else if(!d)c?i.setValue([].concat(ql(p),[s]),"select-option",s):i.setValue(s,"select-option");else{i.ariaOnChange(s,{action:"select-option",option:s,name:f});return}u&&i.blurInput()},i.removeValue=function(s){var l=i.props.isMulti,u=i.state.selectValue,c=i.getOptionValue(s),f=u.filter(function(b){return i.getOptionValue(b)!==c}),p=Vr(l,f,f[0]||null);i.onChange(p,{action:"remove-value",removedValue:s}),i.focusInput()},i.clearValue=function(){var s=i.state.selectValue;i.onChange(Vr(i.props.isMulti,[],null),{action:"clear",removedValues:s})},i.popValue=function(){var s=i.props.isMulti,l=i.state.selectValue,u=l[l.length-1],c=l.slice(0,l.length-1),f=Vr(s,c,c[0]||null);i.onChange(f,{action:"pop-value",removedValue:u})},i.getValue=function(){return i.state.selectValue},i.cx=function(){for(var s=arguments.length,l=new Array(s),u=0;u<s;u++)l[u]=arguments[u];return lI.apply(void 0,[i.props.classNamePrefix].concat(l))},i.getOptionLabel=function(s){return v_(i.props,s)},i.getOptionValue=function(s){return Ac(i.props,s)},i.getStyles=function(s,l){var u=i.props.unstyled,c=gM[s](l,u);c.boxSizing="border-box";var f=i.props.styles[s];return f?f(c,l):c},i.getClassNames=function(s,l){var u,c;return(u=(c=i.props.classNames)[s])===null||u===void 0?void 0:u.call(c,l)},i.getElementId=function(s){return"".concat(i.instancePrefix,"-").concat(s)},i.getComponents=function(){return YI(i.props)},i.buildCategorizedOptions=function(){return m_(i.props,i.state.selectValue)},i.getCategorizedOptions=function(){return i.props.menuIsOpen?i.buildCategorizedOptions():[]},i.buildFocusableOptions=function(){return h_(i.buildCategorizedOptions())},i.getFocusableOptions=function(){return i.props.menuIsOpen?i.buildFocusableOptions():[]},i.ariaOnChange=function(s,l){i.setState({ariaSelection:ae({value:s},l)})},i.onMenuMouseDown=function(s){s.button===0&&(s.stopPropagation(),s.preventDefault(),i.focusInput())},i.onMenuMouseMove=function(s){i.blockOptionHover=!1},i.onControlMouseDown=function(s){if(!s.defaultPrevented){var l=i.props.openMenuOnClick;i.state.isFocused?i.props.menuIsOpen?s.target.tagName!=="INPUT"&&s.target.tagName!=="TEXTAREA"&&i.onMenuClose():l&&i.openMenu("first"):(l&&(i.openAfterFocus=!0),i.focusInput()),s.target.tagName!=="INPUT"&&s.target.tagName!=="TEXTAREA"&&s.preventDefault()}},i.onDropdownIndicatorMouseDown=function(s){if(!(s&&s.type==="mousedown"&&s.button!==0)&&!i.props.isDisabled){var l=i.props,u=l.isMulti,c=l.menuIsOpen;i.focusInput(),c?(i.setState({inputIsHiddenAfterUpdate:!u}),i.onMenuClose()):i.openMenu("first"),s.preventDefault()}},i.onClearIndicatorMouseDown=function(s){s&&s.type==="mousedown"&&s.button!==0||(i.clearValue(),s.preventDefault(),i.openAfterFocus=!1,s.type==="touchend"?i.focusInput():setTimeout(function(){return i.focusInput()}))},i.onScroll=function(s){typeof i.props.closeMenuOnScroll=="boolean"?s.target instanceof HTMLElement&&Wr(s.target)&&i.props.onMenuClose():typeof i.props.closeMenuOnScroll=="function"&&i.props.closeMenuOnScroll(s)&&i.props.onMenuClose()},i.onCompositionStart=function(){i.isComposing=!0},i.onCompositionEnd=function(){i.isComposing=!1},i.onTouchStart=function(s){var l=s.touches,u=l&&l.item(0);u&&(i.initialTouchX=u.clientX,i.initialTouchY=u.clientY,i.userIsDragging=!1)},i.onTouchMove=function(s){var l=s.touches,u=l&&l.item(0);if(u){var c=Math.abs(u.clientX-i.initialTouchX),f=Math.abs(u.clientY-i.initialTouchY),p=5;i.userIsDragging=c>p||f>p}},i.onTouchEnd=function(s){i.userIsDragging||(i.controlRef&&!i.controlRef.contains(s.target)&&i.menuListRef&&!i.menuListRef.contains(s.target)&&i.blurInput(),i.initialTouchX=0,i.initialTouchY=0)},i.onControlTouchEnd=function(s){i.userIsDragging||i.onControlMouseDown(s)},i.onClearIndicatorTouchEnd=function(s){i.userIsDragging||i.onClearIndicatorMouseDown(s)},i.onDropdownIndicatorTouchEnd=function(s){i.userIsDragging||i.onDropdownIndicatorMouseDown(s)},i.handleInputChange=function(s){var l=i.props.inputValue,u=s.currentTarget.value;i.setState({inputIsHiddenAfterUpdate:!1}),i.onInputChange(u,{action:"input-change",prevInputValue:l}),i.props.menuIsOpen||i.onMenuOpen()},i.onInputFocus=function(s){i.props.onFocus&&i.props.onFocus(s),i.setState({inputIsHiddenAfterUpdate:!1,isFocused:!0}),(i.openAfterFocus||i.props.openMenuOnFocus)&&i.openMenu("first"),i.openAfterFocus=!1},i.onInputBlur=function(s){var l=i.props.inputValue;if(i.menuListRef&&i.menuListRef.contains(document.activeElement)){i.inputRef.focus();return}i.props.onBlur&&i.props.onBlur(s),i.onInputChange("",{action:"input-blur",prevInputValue:l}),i.onMenuClose(),i.setState({focusedValue:null,isFocused:!1})},i.onOptionHover=function(s){i.blockOptionHover||i.state.focusedOption===s||i.setState({focusedOption:s})},i.shouldHideSelectedOptions=function(){return y_(i.props)},i.onValueInputFocus=function(s){s.preventDefault(),s.stopPropagation(),i.focus()},i.onKeyDown=function(s){var l=i.props,u=l.isMulti,c=l.backspaceRemovesValue,f=l.escapeClearsValue,p=l.inputValue,b=l.isClearable,d=l.isDisabled,h=l.menuIsOpen,m=l.onKeyDown,v=l.tabSelectsValue,x=l.openMenuOnFocus,E=i.state,g=E.focusedOption,w=E.focusedValue,C=E.selectValue;if(!d&&!(typeof m=="function"&&(m(s),s.defaultPrevented))){switch(i.blockOptionHover=!0,s.key){case"ArrowLeft":if(!u||p)return;i.focusValue("previous");break;case"ArrowRight":if(!u||p)return;i.focusValue("next");break;case"Delete":case"Backspace":if(p)return;if(w)i.removeValue(w);else{if(!c)return;u?i.popValue():b&&i.clearValue()}break;case"Tab":if(i.isComposing||s.shiftKey||!h||!v||!g||x&&i.isOptionSelected(g,C))return;i.selectOption(g);break;case"Enter":if(s.keyCode===229)break;if(h){if(!g||i.isComposing)return;i.selectOption(g);break}return;case"Escape":h?(i.setState({inputIsHiddenAfterUpdate:!1}),i.onInputChange("",{action:"menu-close",prevInputValue:p}),i.onMenuClose()):b&&f&&i.clearValue();break;case" ":if(p)return;if(!h){i.openMenu("first");break}if(!g)return;i.selectOption(g);break;case"ArrowUp":h?i.focusOption("up"):i.openMenu("last");break;case"ArrowDown":h?i.focusOption("down"):i.openMenu("first");break;case"PageUp":if(!h)return;i.focusOption("pageup");break;case"PageDown":if(!h)return;i.focusOption("pagedown");break;case"Home":if(!h)return;i.focusOption("first");break;case"End":if(!h)return;i.focusOption("last");break;default:return}s.preventDefault()}},i.instancePrefix="react-select-"+(i.props.instanceId||++TM),i.state.selectValue=om(n.value),n.menuIsOpen&&i.state.selectValue.length){var r=i.buildFocusableOptions(),o=r.indexOf(i.state.selectValue[0]);i.state.focusedOption=r[o]}return i}return _f(a,[{key:"componentDidMount",value:function(){this.startListeningComposition(),this.startListeningToTouch(),this.props.closeMenuOnScroll&&document&&document.addEventListener&&document.addEventListener("scroll",this.onScroll,!0),this.props.autoFocus&&this.focusInput(),this.props.menuIsOpen&&this.state.focusedOption&&this.menuListRef&&this.focusedOptionRef&&sm(this.menuListRef,this.focusedOptionRef)}},{key:"componentDidUpdate",value:function(i){var r=this.props,o=r.isDisabled,s=r.menuIsOpen,l=this.state.isFocused;(l&&!o&&i.isDisabled||l&&s&&!i.menuIsOpen)&&this.focusInput(),l&&o&&!i.isDisabled?this.setState({isFocused:!1},this.onMenuClose):!l&&!o&&i.isDisabled&&this.inputRef===document.activeElement&&this.setState({isFocused:!0}),this.menuListRef&&this.focusedOptionRef&&this.scrollToFocusedOptionOnUpdate&&(sm(this.menuListRef,this.focusedOptionRef),this.scrollToFocusedOptionOnUpdate=!1)}},{key:"componentWillUnmount",value:function(){this.stopListeningComposition(),this.stopListeningToTouch(),document.removeEventListener("scroll",this.onScroll,!0)}},{key:"onMenuOpen",value:function(){this.props.onMenuOpen()}},{key:"onMenuClose",value:function(){this.onInputChange("",{action:"menu-close",prevInputValue:this.props.inputValue}),this.props.onMenuClose()}},{key:"onInputChange",value:function(i,r){this.props.onInputChange(i,r)}},{key:"focusInput",value:function(){this.inputRef&&this.inputRef.focus()}},{key:"blurInput",value:function(){this.inputRef&&this.inputRef.blur()}},{key:"openMenu",value:function(i){var r=this,o=this.state,s=o.selectValue,l=o.isFocused,u=this.buildFocusableOptions(),c=i==="first"?0:u.length-1;if(!this.props.isMulti){var f=u.indexOf(s[0]);f>-1&&(c=f)}this.scrollToFocusedOptionOnUpdate=!(l&&this.menuListRef),this.setState({inputIsHiddenAfterUpdate:!1,focusedValue:null,focusedOption:u[c]},function(){return r.onMenuOpen()})}},{key:"focusValue",value:function(i){var r=this.state,o=r.selectValue,s=r.focusedValue;if(this.props.isMulti){this.setState({focusedOption:null});var l=o.indexOf(s);s||(l=-1);var u=o.length-1,c=-1;if(o.length){switch(i){case"previous":l===0?c=0:l===-1?c=u:c=l-1;break;case"next":l>-1&&l<u&&(c=l+1);break}this.setState({inputIsHidden:c!==-1,focusedValue:o[c]})}}}},{key:"focusOption",value:function(){var i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"first",r=this.props.pageSize,o=this.state.focusedOption,s=this.getFocusableOptions();if(s.length){var l=0,u=s.indexOf(o);o||(u=-1),i==="up"?l=u>0?u-1:s.length-1:i==="down"?l=(u+1)%s.length:i==="pageup"?(l=u-r,l<0&&(l=0)):i==="pagedown"?(l=u+r,l>s.length-1&&(l=s.length-1)):i==="last"&&(l=s.length-1),this.scrollToFocusedOptionOnUpdate=!0,this.setState({focusedOption:s[l],focusedValue:null})}}},{key:"getTheme",value:function(){return this.props.theme?typeof this.props.theme=="function"?this.props.theme(um):ae(ae({},um),this.props.theme):um}},{key:"getCommonProps",value:function(){var i=this.clearValue,r=this.cx,o=this.getStyles,s=this.getClassNames,l=this.getValue,u=this.selectOption,c=this.setValue,f=this.props,p=f.isMulti,b=f.isRtl,d=f.options,h=this.hasValue();return{clearValue:i,cx:r,getStyles:o,getClassNames:s,getValue:l,hasValue:h,isMulti:p,isRtl:b,options:d,selectOption:u,selectProps:f,setValue:c,theme:this.getTheme()}}},{key:"hasValue",value:function(){var i=this.state.selectValue;return i.length>0}},{key:"hasOptions",value:function(){return!!this.getFocusableOptions().length}},{key:"isClearable",value:function(){var i=this.props,r=i.isClearable,o=i.isMulti;return r===void 0?o:r}},{key:"isOptionDisabled",value:function(i,r){return b_(this.props,i,r)}},{key:"isOptionSelected",value:function(i,r){return g_(this.props,i,r)}},{key:"filterOption",value:function(i,r){return x_(this.props,i,r)}},{key:"formatOptionLabel",value:function(i,r){if(typeof this.props.formatOptionLabel=="function"){var o=this.props.inputValue,s=this.state.selectValue;return this.props.formatOptionLabel(i,{context:r,inputValue:o,selectValue:s})}else return this.getOptionLabel(i)}},{key:"formatGroupLabel",value:function(i){return this.props.formatGroupLabel(i)}},{key:"startListeningComposition",value:function(){document&&document.addEventListener&&(document.addEventListener("compositionstart",this.onCompositionStart,!1),document.addEventListener("compositionend",this.onCompositionEnd,!1))}},{key:"stopListeningComposition",value:function(){document&&document.removeEventListener&&(document.removeEventListener("compositionstart",this.onCompositionStart),document.removeEventListener("compositionend",this.onCompositionEnd))}},{key:"startListeningToTouch",value:function(){document&&document.addEventListener&&(document.addEventListener("touchstart",this.onTouchStart,!1),document.addEventListener("touchmove",this.onTouchMove,!1),document.addEventListener("touchend",this.onTouchEnd,!1))}},{key:"stopListeningToTouch",value:function(){document&&document.removeEventListener&&(document.removeEventListener("touchstart",this.onTouchStart),document.removeEventListener("touchmove",this.onTouchMove),document.removeEventListener("touchend",this.onTouchEnd))}},{key:"renderInput",value:function(){var i=this.props,r=i.isDisabled,o=i.isSearchable,s=i.inputId,l=i.inputValue,u=i.tabIndex,c=i.form,f=i.menuIsOpen,p=i.required,b=this.getComponents(),d=b.Input,h=this.state,m=h.inputIsHidden,v=h.ariaSelection,x=this.commonProps,E=s||this.getElementId("input"),g=ae(ae(ae({"aria-autocomplete":"list","aria-expanded":f,"aria-haspopup":!0,"aria-errormessage":this.props["aria-errormessage"],"aria-invalid":this.props["aria-invalid"],"aria-label":this.props["aria-label"],"aria-labelledby":this.props["aria-labelledby"],"aria-required":p,role:"combobox"},f&&{"aria-controls":this.getElementId("listbox"),"aria-owns":this.getElementId("listbox")}),!o&&{"aria-readonly":!0}),this.hasValue()?(v==null?void 0:v.action)==="initial-input-focus"&&{"aria-describedby":this.getElementId("live-region")}:{"aria-describedby":this.getElementId("placeholder")});return o?se(d,W({},x,{autoCapitalize:"none",autoComplete:"off",autoCorrect:"off",id:E,innerRef:this.getInputRef,isDisabled:r,isHidden:m,onBlur:this.onInputBlur,onChange:this.handleInputChange,onFocus:this.onInputFocus,spellCheck:"false",tabIndex:u,form:c,type:"text",value:l},g)):se(iM,W({id:E,innerRef:this.getInputRef,onBlur:this.onInputBlur,onChange:Hr,onFocus:this.onInputFocus,disabled:r,tabIndex:u,inputMode:"none",form:c,value:""},g))}},{key:"renderPlaceholderOrValue",value:function(){var i=this,r=this.getComponents(),o=r.MultiValue,s=r.MultiValueContainer,l=r.MultiValueLabel,u=r.MultiValueRemove,c=r.SingleValue,f=r.Placeholder,p=this.commonProps,b=this.props,d=b.controlShouldRenderValue,h=b.isDisabled,m=b.isMulti,v=b.inputValue,x=b.placeholder,E=this.state,g=E.selectValue,w=E.focusedValue,C=E.isFocused;if(!this.hasValue()||!d)return v?null:se(f,W({},p,{key:"placeholder",isDisabled:h,isFocused:C,innerProps:{id:this.getElementId("placeholder")}}),x);if(m)return g.map(function(S,I){var _=S===w,P="".concat(i.getOptionLabel(S),"-").concat(i.getOptionValue(S));return se(o,W({},p,{components:{Container:s,Label:l,Remove:u},isFocused:_,isDisabled:h,key:P,index:I,removeProps:{onClick:function(){return i.removeValue(S)},onTouchEnd:function(){return i.removeValue(S)},onMouseDown:function(B){B.preventDefault()}},data:S}),i.formatOptionLabel(S,"value"))});if(v)return null;var y=g[0];return se(c,W({},p,{data:y,isDisabled:h}),this.formatOptionLabel(y,"value"))}},{key:"renderClearIndicator",value:function(){var i=this.getComponents(),r=i.ClearIndicator,o=this.commonProps,s=this.props,l=s.isDisabled,u=s.isLoading,c=this.state.isFocused;if(!this.isClearable()||!r||l||!this.hasValue()||u)return null;var f={onMouseDown:this.onClearIndicatorMouseDown,onTouchEnd:this.onClearIndicatorTouchEnd,"aria-hidden":"true"};return se(r,W({},o,{innerProps:f,isFocused:c}))}},{key:"renderLoadingIndicator",value:function(){var i=this.getComponents(),r=i.LoadingIndicator,o=this.commonProps,s=this.props,l=s.isDisabled,u=s.isLoading,c=this.state.isFocused;if(!r||!u)return null;var f={"aria-hidden":"true"};return se(r,W({},o,{innerProps:f,isDisabled:l,isFocused:c}))}},{key:"renderIndicatorSeparator",value:function(){var i=this.getComponents(),r=i.DropdownIndicator,o=i.IndicatorSeparator;if(!r||!o)return null;var s=this.commonProps,l=this.props.isDisabled,u=this.state.isFocused;return se(o,W({},s,{isDisabled:l,isFocused:u}))}},{key:"renderDropdownIndicator",value:function(){var i=this.getComponents(),r=i.DropdownIndicator;if(!r)return null;var o=this.commonProps,s=this.props.isDisabled,l=this.state.isFocused,u={onMouseDown:this.onDropdownIndicatorMouseDown,onTouchEnd:this.onDropdownIndicatorTouchEnd,"aria-hidden":"true"};return se(r,W({},o,{innerProps:u,isDisabled:s,isFocused:l}))}},{key:"renderMenu",value:function(){var i=this,r=this.getComponents(),o=r.Group,s=r.GroupHeading,l=r.Menu,u=r.MenuList,c=r.MenuPortal,f=r.LoadingMessage,p=r.NoOptionsMessage,b=r.Option,d=this.commonProps,h=this.state.focusedOption,m=this.props,v=m.captureMenuScroll,x=m.inputValue,E=m.isLoading,g=m.loadingMessage,w=m.minMenuHeight,C=m.maxMenuHeight,y=m.menuIsOpen,S=m.menuPlacement,I=m.menuPosition,_=m.menuPortalTarget,P=m.menuShouldBlockScroll,F=m.menuShouldScrollIntoView,B=m.noOptionsMessage,N=m.onMenuScrollToTop,L=m.onMenuScrollToBottom;if(!y)return null;var k=function(Z,pe){var fe=Z.type,ee=Z.data,oe=Z.isDisabled,U=Z.isSelected,X=Z.label,$=Z.value,he=h===ee,qe=oe?void 0:function(){return i.onOptionHover(ee)},ze=oe?void 0:function(){return i.selectOption(ee)},ht="".concat(i.getElementId("option"),"-").concat(pe),R={id:ht,onClick:ze,onMouseMove:qe,onMouseOver:qe,tabIndex:-1};return se(b,W({},d,{innerProps:R,data:ee,isDisabled:oe,isSelected:U,key:ht,label:X,type:fe,value:$,isFocused:he,innerRef:he?i.getFocusedOptionRef:void 0}),i.formatOptionLabel(Z.data,"menu"))},T;if(this.hasOptions())T=this.getCategorizedOptions().map(function(q){if(q.type==="group"){var Z=q.data,pe=q.options,fe=q.index,ee="".concat(i.getElementId("group"),"-").concat(fe),oe="".concat(ee,"-heading");return se(o,W({},d,{key:ee,data:Z,options:pe,Heading:s,headingProps:{id:oe,data:q.data},label:i.formatGroupLabel(q.data)}),q.options.map(function(U){return k(U,"".concat(fe,"-").concat(U.index))}))}else if(q.type==="option")return k(q,"".concat(q.index))});else if(E){var j=g({inputValue:x});if(j===null)return null;T=se(f,d,j)}else{var M=B({inputValue:x});if(M===null)return null;T=se(p,d,M)}var D={minMenuHeight:w,maxMenuHeight:C,menuPlacement:S,menuPosition:I,menuShouldScrollIntoView:F},V=se(yI,W({},d,D),function(q){var Z=q.ref,pe=q.placerProps,fe=pe.placement,ee=pe.maxHeight;return se(l,W({},d,D,{innerRef:Z,innerProps:{onMouseDown:i.onMenuMouseDown,onMouseMove:i.onMenuMouseMove,id:i.getElementId("listbox")},isLoading:E,placement:fe}),se(uM,{captureEnabled:v,onTopArrive:N,onBottomArrive:L,lockEnabled:P},function(oe){return se(u,W({},d,{innerRef:function(X){i.getMenuListRef(X),oe(X)},isLoading:E,maxHeight:ee,focusedOption:h}),T)}))});return _||I==="fixed"?se(c,W({},d,{appendTo:_,controlElement:this.controlRef,menuPlacement:S,menuPosition:I}),V):V}},{key:"renderFormField",value:function(){var i=this,r=this.props,o=r.delimiter,s=r.isDisabled,l=r.isMulti,u=r.name,c=r.required,f=this.state.selectValue;if(c&&!this.hasValue()&&!s)return se(fM,{name:u,onFocus:this.onValueInputFocus});if(!(!u||s))if(l)if(o){var p=f.map(function(h){return i.getOptionValue(h)}).join(o);return se("input",{name:u,type:"hidden",value:p})}else{var b=f.length>0?f.map(function(h,m){return se("input",{key:"i-".concat(m),name:u,type:"hidden",value:i.getOptionValue(h)})}):se("input",{name:u,type:"hidden",value:""});return se("div",null,b)}else{var d=f[0]?this.getOptionValue(f[0]):"";return se("input",{name:u,type:"hidden",value:d})}}},{key:"renderLiveRegion",value:function(){var i=this.commonProps,r=this.state,o=r.ariaSelection,s=r.focusedOption,l=r.focusedValue,u=r.isFocused,c=r.selectValue,f=this.getFocusableOptions();return se(KL,W({},i,{id:this.getElementId("live-region"),ariaSelection:o,focusedOption:s,focusedValue:l,isFocused:u,selectValue:c,focusableOptions:f}))}},{key:"render",value:function(){var i=this.getComponents(),r=i.Control,o=i.IndicatorsContainer,s=i.SelectContainer,l=i.ValueContainer,u=this.props,c=u.className,f=u.id,p=u.isDisabled,b=u.menuIsOpen,d=this.state.isFocused,h=this.commonProps=this.getCommonProps();return se(s,W({},h,{className:c,innerProps:{id:f,onKeyDown:this.onKeyDown},isDisabled:p,isFocused:d}),this.renderLiveRegion(),se(r,W({},h,{innerRef:this.getControlRef,innerProps:{onMouseDown:this.onControlMouseDown,onTouchEnd:this.onControlTouchEnd},isDisabled:p,isFocused:d,menuIsOpen:b}),se(l,W({},h,{isDisabled:p}),this.renderPlaceholderOrValue(),this.renderInput()),se(o,W({},h,{isDisabled:p}),this.renderClearIndicator(),this.renderLoadingIndicator(),this.renderIndicatorSeparator(),this.renderDropdownIndicator())),this.renderMenu(),this.renderFormField())}}],[{key:"getDerivedStateFromProps",value:function(i,r){var o=r.prevProps,s=r.clearFocusValueOnUpdate,l=r.inputIsHiddenAfterUpdate,u=r.ariaSelection,c=r.isFocused,f=r.prevWasFocused,p=i.options,b=i.value,d=i.menuIsOpen,h=i.inputValue,m=i.isMulti,v=om(b),x={};if(o&&(b!==o.value||p!==o.options||d!==o.menuIsOpen||h!==o.inputValue)){var E=d?AM(i,v):[],g=s?IM(r,v):null,w=_M(r,E);x={selectValue:v,focusedOption:w,focusedValue:g,clearFocusValueOnUpdate:!1}}var C=l!=null&&i!==o?{inputIsHidden:l,inputIsHiddenAfterUpdate:void 0}:{},y=u,S=c&&f;return c&&!S&&(y={value:Vr(m,v,v[0]||null),options:v,action:"initial-input-focus"},S=!f),(u==null?void 0:u.action)==="initial-input-focus"&&(y=null),ae(ae(ae({},x),C),{},{prevProps:i,ariaSelection:y,prevWasFocused:S})}}]),a}(Ct);dm.defaultProps=CM;var kM=["defaultInputValue","defaultMenuIsOpen","defaultValue","inputValue","menuIsOpen","onChange","onInputChange","onMenuClose","onMenuOpen","value"];function w_(e){var t=e.defaultInputValue,a=t===void 0?"":t,n=e.defaultMenuIsOpen,i=n===void 0?!1:n,r=e.defaultValue,o=r===void 0?null:r,s=e.inputValue,l=e.menuIsOpen,u=e.onChange,c=e.onInputChange,f=e.onMenuClose,p=e.onMenuOpen,b=e.value,d=Wt(e,kM),h=Re(s!==void 0?s:a),m=Le(h,2),v=m[0],x=m[1],E=Re(l!==void 0?l:i),g=Le(E,2),w=g[0],C=g[1],y=Re(b!==void 0?b:o),S=Le(y,2),I=S[0],_=S[1],P=Fe(function(j,M){typeof u=="function"&&u(j,M),_(j)},[u]),F=Fe(function(j,M){var D;typeof c=="function"&&(D=c(j,M)),x(D!==void 0?D:j)},[c]),B=Fe(function(){typeof p=="function"&&p(),C(!0)},[p]),N=Fe(function(){typeof f=="function"&&f(),C(!1)},[f]),L=s!==void 0?s:v,k=l!==void 0?l:w,T=b!==void 0?b:I;return ae(ae({},d),{},{inputValue:L,menuIsOpen:k,onChange:P,onInputChange:F,onMenuClose:N,onMenuOpen:B,value:T})}var FM=["defaultOptions","cacheOptions","loadOptions","options","isLoading","onInputChange","filterOption"];function E_(e){var t=e.defaultOptions,a=t===void 0?!1:t,n=e.cacheOptions,i=n===void 0?!1:n,r=e.loadOptions;e.options;var o=e.isLoading,s=o===void 0?!1:o,l=e.onInputChange,u=e.filterOption,c=u===void 0?null:u,f=Wt(e,FM),p=f.inputValue,b=ot(void 0),d=ot(!1),h=Re(Array.isArray(a)?a:void 0),m=Le(h,2),v=m[0],x=m[1],E=Re(typeof p!="undefined"?p:""),g=Le(E,2),w=g[0],C=g[1],y=Re(a===!0),S=Le(y,2),I=S[0],_=S[1],P=Re(void 0),F=Le(P,2),B=F[0],N=F[1],L=Re([]),k=Le(L,2),T=k[0],j=k[1],M=Re(!1),D=Le(M,2),V=D[0],q=D[1],Z=Re({}),pe=Le(Z,2),fe=pe[0],ee=pe[1],oe=Re(void 0),U=Le(oe,2),X=U[0],$=U[1],he=Re(void 0),qe=Le(he,2),ze=qe[0],ht=qe[1];i!==ze&&(ee({}),ht(i)),a!==X&&(x(Array.isArray(a)?a:void 0),$(a)),ha(function(){return d.current=!0,function(){d.current=!1}},[]);var R=Fe(function(H,ne){if(!r)return ne();var K=r(H,ne);K&&typeof K.then=="function"&&K.then(ne,function(){return ne()})},[r]);ha(function(){a===!0&&R(w,function(H){d.current&&(x(H||[]),_(!!b.current))})},[]);var z=Fe(function(H,ne){var K=uI(H,ne,l);if(!K){b.current=void 0,C(""),N(""),j([]),_(!1),q(!1);return}if(i&&fe[K])C(K),N(K),j(fe[K]),_(!1),q(!1);else{var Ae=b.current={};C(K),_(!0),q(!B),R(K,function(ue){d&&Ae===b.current&&(b.current=void 0,_(!1),N(K),j(ue||[]),q(!1),ee(ue?ae(ae({},fe),{},jt({},K,ue)):fe))})}},[i,R,B,fe,l]),J=V?[]:w&&B?T:v||[];return ae(ae({},f),{},{options:J,isLoading:I||s,onInputChange:z,filterOption:c})}var PM=Nn(function(e,t){var a=E_(e),n=w_(a);return se(dm,W({ref:t},n))}),Jr=PM;function Aa(e){return Array.isArray?Array.isArray(e):F_(e)==="[object Array]"}var OM=1/0;function RM(e){if(typeof e=="string")return e;let t=e+"";return t=="0"&&1/e==-OM?"-0":t}function BM(e){return e==null?"":RM(e)}function da(e){return typeof e=="string"}function T_(e){return typeof e=="number"}function NM(e){return e===!0||e===!1||jM(e)&&F_(e)=="[object Boolean]"}function k_(e){return typeof e=="object"}function jM(e){return k_(e)&&e!==null}function Bt(e){return e!=null}function fm(e){return!e.trim().length}function F_(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var LM="Incorrect 'index' type",MM=e=>`Invalid value for key ${e}`,DM=e=>`Pattern length exceeds max of ${e}.`,zM=e=>`Missing ${e} property in key`,GM=e=>`Property 'weight' in key '${e}' must be a positive integer`,S_=Object.prototype.hasOwnProperty,mm=class{constructor(t){this._keys=[],this._keyMap={};let a=0;t.forEach(n=>{let i=P_(n);a+=i.weight,this._keys.push(i),this._keyMap[i.id]=i,a+=i.weight}),this._keys.forEach(n=>{n.weight/=a})}get(t){return this._keyMap[t]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}};function P_(e){let t=null,a=null,n=null,i=1,r=null;if(da(e)||Aa(e))n=e,t=C_(e),a=hm(e);else{if(!S_.call(e,"name"))throw new Error(zM("name"));let o=e.name;if(n=o,S_.call(e,"weight")&&(i=e.weight,i<=0))throw new Error(GM(o));t=C_(o),a=hm(o),r=e.getFn}return{path:t,id:a,weight:i,src:n,getFn:r}}function C_(e){return Aa(e)?e:e.split(".")}function hm(e){return Aa(e)?e.join("."):e}function HM(e,t){let a=[],n=!1,i=(r,o,s)=>{if(Bt(r))if(!o[s])a.push(r);else{let l=o[s],u=r[l];if(!Bt(u))return;if(s===o.length-1&&(da(u)||T_(u)||NM(u)))a.push(BM(u));else if(Aa(u)){n=!0;for(let c=0,f=u.length;c<f;c+=1)i(u[c],o,s+1)}else o.length&&i(u,o,s+1)}};return i(e,da(t)?t.split("."):t,0),n?a:a[0]}var WM={includeMatches:!1,findAllMatches:!1,minMatchCharLength:1},VM={isCaseSensitive:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:(e,t)=>e.score===t.score?e.idx<t.idx?-1:1:e.score<t.score?-1:1},UM={location:0,threshold:.6,distance:100},JM={useExtendedSearch:!1,getFn:HM,ignoreLocation:!1,ignoreFieldNorm:!1,fieldNormWeight:1},le={...VM,...WM,...UM,...JM},ZM=/[^ ]+/g;function qM(e=1,t=3){let a=new Map,n=Math.pow(10,t);return{get(i){let r=i.match(ZM).length;if(a.has(r))return a.get(r);let o=1/Math.pow(r,.5*e),s=parseFloat(Math.round(o*n)/n);return a.set(r,s),s},clear(){a.clear()}}}var Zr=class{constructor({getFn:t=le.getFn,fieldNormWeight:a=le.fieldNormWeight}={}){this.norm=qM(a,3),this.getFn=t,this.isCreated=!1,this.setIndexRecords()}setSources(t=[]){this.docs=t}setIndexRecords(t=[]){this.records=t}setKeys(t=[]){this.keys=t,this._keysMap={},t.forEach((a,n)=>{this._keysMap[a.id]=n})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,da(this.docs[0])?this.docs.forEach((t,a)=>{this._addString(t,a)}):this.docs.forEach((t,a)=>{this._addObject(t,a)}),this.norm.clear())}add(t){let a=this.size();da(t)?this._addString(t,a):this._addObject(t,a)}removeAt(t){this.records.splice(t,1);for(let a=t,n=this.size();a<n;a+=1)this.records[a].i-=1}getValueForItemAtKeyId(t,a){return t[this._keysMap[a]]}size(){return this.records.length}_addString(t,a){if(!Bt(t)||fm(t))return;let n={v:t,i:a,n:this.norm.get(t)};this.records.push(n)}_addObject(t,a){let n={i:a,$:{}};this.keys.forEach((i,r)=>{let o=i.getFn?i.getFn(t):this.getFn(t,i.path);if(Bt(o)){if(Aa(o)){let s=[],l=[{nestedArrIndex:-1,value:o}];for(;l.length;){let{nestedArrIndex:u,value:c}=l.pop();if(Bt(c))if(da(c)&&!fm(c)){let f={v:c,i:u,n:this.norm.get(c)};s.push(f)}else Aa(c)&&c.forEach((f,p)=>{l.push({nestedArrIndex:p,value:f})})}n.$[r]=s}else if(da(o)&&!fm(o)){let s={v:o,n:this.norm.get(o)};n.$[r]=s}}}),this.records.push(n)}toJSON(){return{keys:this.keys,records:this.records}}};function O_(e,t,{getFn:a=le.getFn,fieldNormWeight:n=le.fieldNormWeight}={}){let i=new Zr({getFn:a,fieldNormWeight:n});return i.setKeys(e.map(P_)),i.setSources(t),i.create(),i}function XM(e,{getFn:t=le.getFn,fieldNormWeight:a=le.fieldNormWeight}={}){let{keys:n,records:i}=e,r=new Zr({getFn:t,fieldNormWeight:a});return r.setKeys(n),r.setIndexRecords(i),r}function Ic(e,{errors:t=0,currentLocation:a=0,expectedLocation:n=0,distance:i=le.distance,ignoreLocation:r=le.ignoreLocation}={}){let o=t/e.length;if(r)return o;let s=Math.abs(n-a);return i?o+s/i:s?1:o}function $M(e=[],t=le.minMatchCharLength){let a=[],n=-1,i=-1,r=0;for(let o=e.length;r<o;r+=1){let s=e[r];s&&n===-1?n=r:!s&&n!==-1&&(i=r-1,i-n+1>=t&&a.push([n,i]),n=-1)}return e[r-1]&&r-n>=t&&a.push([n,r-1]),a}var wn=32;function YM(e,t,a,{location:n=le.location,distance:i=le.distance,threshold:r=le.threshold,findAllMatches:o=le.findAllMatches,minMatchCharLength:s=le.minMatchCharLength,includeMatches:l=le.includeMatches,ignoreLocation:u=le.ignoreLocation}={}){if(t.length>wn)throw new Error(DM(wn));let c=t.length,f=e.length,p=Math.max(0,Math.min(n,f)),b=r,d=p,h=s>1||l,m=h?Array(f):[],v;for(;(v=e.indexOf(t,d))>-1;){let y=Ic(t,{currentLocation:v,expectedLocation:p,distance:i,ignoreLocation:u});if(b=Math.min(y,b),d=v+c,h){let S=0;for(;S<c;)m[v+S]=1,S+=1}}d=-1;let x=[],E=1,g=c+f,w=1<<c-1;for(let y=0;y<c;y+=1){let S=0,I=g;for(;S<I;)Ic(t,{errors:y,currentLocation:p+I,expectedLocation:p,distance:i,ignoreLocation:u})<=b?S=I:g=I,I=Math.floor((g-S)/2+S);g=I;let _=Math.max(1,p-I+1),P=o?f:Math.min(p+I,f)+c,F=Array(P+2);F[P+1]=(1<<y)-1;for(let N=P;N>=_;N-=1){let L=N-1,k=a[e.charAt(L)];if(h&&(m[L]=+!!k),F[N]=(F[N+1]<<1|1)&k,y&&(F[N]|=(x[N+1]|x[N])<<1|1|x[N+1]),F[N]&w&&(E=Ic(t,{errors:y,currentLocation:L,expectedLocation:p,distance:i,ignoreLocation:u}),E<=b)){if(b=E,d=L,d<=p)break;_=Math.max(1,2*p-d)}}if(Ic(t,{errors:y+1,currentLocation:p,expectedLocation:p,distance:i,ignoreLocation:u})>b)break;x=F}let C={isMatch:d>=0,score:Math.max(.001,E)};if(h){let y=$M(m,s);y.length?l&&(C.indices=y):C.isMatch=!1}return C}function KM(e){let t={};for(let a=0,n=e.length;a<n;a+=1){let i=e.charAt(a);t[i]=(t[i]||0)|1<<n-a-1}return t}var _c=class{constructor(t,{location:a=le.location,threshold:n=le.threshold,distance:i=le.distance,includeMatches:r=le.includeMatches,findAllMatches:o=le.findAllMatches,minMatchCharLength:s=le.minMatchCharLength,isCaseSensitive:l=le.isCaseSensitive,ignoreLocation:u=le.ignoreLocation}={}){if(this.options={location:a,threshold:n,distance:i,includeMatches:r,findAllMatches:o,minMatchCharLength:s,isCaseSensitive:l,ignoreLocation:u},this.pattern=l?t:t.toLowerCase(),this.chunks=[],!this.pattern.length)return;let c=(p,b)=>{this.chunks.push({pattern:p,alphabet:KM(p),startIndex:b})},f=this.pattern.length;if(f>wn){let p=0,b=f%wn,d=f-b;for(;p<d;)c(this.pattern.substr(p,wn),p),p+=wn;if(b){let h=f-wn;c(this.pattern.substr(h),h)}}else c(this.pattern,0)}searchIn(t){let{isCaseSensitive:a,includeMatches:n}=this.options;if(a||(t=t.toLowerCase()),this.pattern===t){let d={isMatch:!0,score:0};return n&&(d.indices=[[0,t.length-1]]),d}let{location:i,distance:r,threshold:o,findAllMatches:s,minMatchCharLength:l,ignoreLocation:u}=this.options,c=[],f=0,p=!1;this.chunks.forEach(({pattern:d,alphabet:h,startIndex:m})=>{let{isMatch:v,score:x,indices:E}=YM(t,d,h,{location:i+m,distance:r,threshold:o,findAllMatches:s,minMatchCharLength:l,includeMatches:n,ignoreLocation:u});v&&(p=!0),f+=x,v&&E&&(c=[...c,...E])});let b={isMatch:p,score:p?f/this.chunks.length:1};return p&&n&&(b.indices=c),b}},fa=class{constructor(t){this.pattern=t}static isMultiMatch(t){return A_(t,this.multiRegex)}static isSingleMatch(t){return A_(t,this.singleRegex)}search(){}};function A_(e,t){let a=e.match(t);return a?a[1]:null}var vm=class extends fa{constructor(t){super(t)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(t){let a=t===this.pattern;return{isMatch:a,score:a?0:1,indices:[0,this.pattern.length-1]}}},bm=class extends fa{constructor(t){super(t)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(t){let n=t.indexOf(this.pattern)===-1;return{isMatch:n,score:n?0:1,indices:[0,t.length-1]}}},gm=class extends fa{constructor(t){super(t)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(t){let a=t.startsWith(this.pattern);return{isMatch:a,score:a?0:1,indices:[0,this.pattern.length-1]}}},xm=class extends fa{constructor(t){super(t)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(t){let a=!t.startsWith(this.pattern);return{isMatch:a,score:a?0:1,indices:[0,t.length-1]}}},ym=class extends fa{constructor(t){super(t)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(t){let a=t.endsWith(this.pattern);return{isMatch:a,score:a?0:1,indices:[t.length-this.pattern.length,t.length-1]}}},wm=class extends fa{constructor(t){super(t)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(t){let a=!t.endsWith(this.pattern);return{isMatch:a,score:a?0:1,indices:[0,t.length-1]}}},Tc=class extends fa{constructor(t,{location:a=le.location,threshold:n=le.threshold,distance:i=le.distance,includeMatches:r=le.includeMatches,findAllMatches:o=le.findAllMatches,minMatchCharLength:s=le.minMatchCharLength,isCaseSensitive:l=le.isCaseSensitive,ignoreLocation:u=le.ignoreLocation}={}){super(t),this._bitapSearch=new _c(t,{location:a,threshold:n,distance:i,includeMatches:r,findAllMatches:o,minMatchCharLength:s,isCaseSensitive:l,ignoreLocation:u})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(t){return this._bitapSearch.searchIn(t)}},kc=class extends fa{constructor(t){super(t)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(t){let a=0,n,i=[],r=this.pattern.length;for(;(n=t.indexOf(this.pattern,a))>-1;)a=n+r,i.push([n,a-1]);let o=!!i.length;return{isMatch:o,score:o?0:1,indices:i}}},Em=[vm,kc,gm,xm,wm,ym,bm,Tc],I_=Em.length,QM=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,eD="|";function tD(e,t={}){return e.split(eD).map(a=>{let n=a.trim().split(QM).filter(r=>r&&!!r.trim()),i=[];for(let r=0,o=n.length;r<o;r+=1){let s=n[r],l=!1,u=-1;for(;!l&&++u<I_;){let c=Em[u],f=c.isMultiMatch(s);f&&(i.push(new c(f,t)),l=!0)}if(!l)for(u=-1;++u<I_;){let c=Em[u],f=c.isSingleMatch(s);if(f){i.push(new c(f,t));break}}}return i})}var aD=new Set([Tc.type,kc.type]),Sm=class{constructor(t,{isCaseSensitive:a=le.isCaseSensitive,includeMatches:n=le.includeMatches,minMatchCharLength:i=le.minMatchCharLength,ignoreLocation:r=le.ignoreLocation,findAllMatches:o=le.findAllMatches,location:s=le.location,threshold:l=le.threshold,distance:u=le.distance}={}){this.query=null,this.options={isCaseSensitive:a,includeMatches:n,minMatchCharLength:i,findAllMatches:o,ignoreLocation:r,location:s,threshold:l,distance:u},this.pattern=a?t:t.toLowerCase(),this.query=tD(this.pattern,this.options)}static condition(t,a){return a.useExtendedSearch}searchIn(t){let a=this.query;if(!a)return{isMatch:!1,score:1};let{includeMatches:n,isCaseSensitive:i}=this.options;t=i?t:t.toLowerCase();let r=0,o=[],s=0;for(let l=0,u=a.length;l<u;l+=1){let c=a[l];o.length=0,r=0;for(let f=0,p=c.length;f<p;f+=1){let b=c[f],{isMatch:d,indices:h,score:m}=b.search(t);if(d){if(r+=1,s+=m,n){let v=b.constructor.type;aD.has(v)?o=[...o,...h]:o.push(h)}}else{s=0,r=0,o.length=0;break}}if(r){let f={isMatch:!0,score:s/r};return n&&(f.indices=o),f}}return{isMatch:!1,score:1}}},Cm=[];function nD(...e){Cm.push(...e)}function Am(e,t){for(let a=0,n=Cm.length;a<n;a+=1){let i=Cm[a];if(i.condition(e,t))return new i(e,t)}return new _c(e,t)}var Fc={AND:"$and",OR:"$or"},Im={PATH:"$path",PATTERN:"$val"},_m=e=>!!(e[Fc.AND]||e[Fc.OR]),iD=e=>!!e[Im.PATH],rD=e=>!Aa(e)&&k_(e)&&!_m(e),__=e=>({[Fc.AND]:Object.keys(e).map(t=>({[t]:e[t]}))});function R_(e,t,{auto:a=!0}={}){let n=i=>{let r=Object.keys(i),o=iD(i);if(!o&&r.length>1&&!_m(i))return n(__(i));if(rD(i)){let l=o?i[Im.PATH]:r[0],u=o?i[Im.PATTERN]:i[l];if(!da(u))throw new Error(MM(l));let c={keyId:hm(l),pattern:u};return a&&(c.searcher=Am(u,t)),c}let s={children:[],operator:r[0]};return r.forEach(l=>{let u=i[l];Aa(u)&&u.forEach(c=>{s.children.push(n(c))})}),s};return _m(e)||(e=__(e)),n(e)}function oD(e,{ignoreFieldNorm:t=le.ignoreFieldNorm}){e.forEach(a=>{let n=1;a.matches.forEach(({key:i,norm:r,score:o})=>{let s=i?i.weight:null;n*=Math.pow(o===0&&s?Number.EPSILON:o,(s||1)*(t?1:r))}),a.score=n})}function sD(e,t){let a=e.matches;t.matches=[],Bt(a)&&a.forEach(n=>{if(!Bt(n.indices)||!n.indices.length)return;let{indices:i,value:r}=n,o={indices:i,value:r};n.key&&(o.key=n.key.src),n.idx>-1&&(o.refIndex=n.idx),t.matches.push(o)})}function lD(e,t){t.score=e.score}function cD(e,t,{includeMatches:a=le.includeMatches,includeScore:n=le.includeScore}={}){let i=[];return a&&i.push(sD),n&&i.push(lD),e.map(r=>{let{idx:o}=r,s={item:t[o],refIndex:o};return i.length&&i.forEach(l=>{l(r,s)}),s})}var Xt=class{constructor(t,a={},n){this.options={...le,...a},this.options.useExtendedSearch,this._keyStore=new mm(this.options.keys),this.setCollection(t,n)}setCollection(t,a){if(this._docs=t,a&&!(a instanceof Zr))throw new Error(LM);this._myIndex=a||O_(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(t){Bt(t)&&(this._docs.push(t),this._myIndex.add(t))}remove(t=()=>!1){let a=[];for(let n=0,i=this._docs.length;n<i;n+=1){let r=this._docs[n];t(r,n)&&(this.removeAt(n),n-=1,i-=1,a.push(r))}return a}removeAt(t){this._docs.splice(t,1),this._myIndex.removeAt(t)}getIndex(){return this._myIndex}search(t,{limit:a=-1}={}){let{includeMatches:n,includeScore:i,shouldSort:r,sortFn:o,ignoreFieldNorm:s}=this.options,l=da(t)?da(this._docs[0])?this._searchStringList(t):this._searchObjectList(t):this._searchLogical(t);return oD(l,{ignoreFieldNorm:s}),r&&l.sort(o),T_(a)&&a>-1&&(l=l.slice(0,a)),cD(l,this._docs,{includeMatches:n,includeScore:i})}_searchStringList(t){let a=Am(t,this.options),{records:n}=this._myIndex,i=[];return n.forEach(({v:r,i:o,n:s})=>{if(!Bt(r))return;let{isMatch:l,score:u,indices:c}=a.searchIn(r);l&&i.push({item:r,idx:o,matches:[{score:u,value:r,norm:s,indices:c}]})}),i}_searchLogical(t){let a=R_(t,this.options),n=(s,l,u)=>{if(!s.children){let{keyId:f,searcher:p}=s,b=this._findMatches({key:this._keyStore.get(f),value:this._myIndex.getValueForItemAtKeyId(l,f),searcher:p});return b&&b.length?[{idx:u,item:l,matches:b}]:[]}let c=[];for(let f=0,p=s.children.length;f<p;f+=1){let b=s.children[f],d=n(b,l,u);if(d.length)c.push(...d);else if(s.operator===Fc.AND)return[]}return c},i=this._myIndex.records,r={},o=[];return i.forEach(({$:s,i:l})=>{if(Bt(s)){let u=n(a,s,l);u.length&&(r[l]||(r[l]={idx:l,item:s,matches:[]},o.push(r[l])),u.forEach(({matches:c})=>{r[l].matches.push(...c)}))}}),o}_searchObjectList(t){let a=Am(t,this.options),{keys:n,records:i}=this._myIndex,r=[];return i.forEach(({$:o,i:s})=>{if(!Bt(o))return;let l=[];n.forEach((u,c)=>{l.push(...this._findMatches({key:u,value:o[c],searcher:a}))}),l.length&&r.push({idx:s,item:o,matches:l})}),r}_findMatches({key:t,value:a,searcher:n}){if(!Bt(a))return[];let i=[];if(Aa(a))a.forEach(({v:r,i:o,n:s})=>{if(!Bt(r))return;let{isMatch:l,score:u,indices:c}=n.searchIn(r);l&&i.push({score:u,key:t,value:r,idx:o,norm:s,indices:c})});else{let{v:r,n:o}=a,{isMatch:s,score:l,indices:u}=n.searchIn(r);s&&i.push({score:l,key:t,value:r,norm:o,indices:u})}return i}};Xt.version="6.6.2";Xt.createIndex=O_;Xt.parseIndex=XM;Xt.config=le;Xt.parseQuery=R_;nD(Sm);var qr=[{value:"academy-of-management-review",label:"Academy of Management Review"},{value:"accident-analysis-and-prevention",label:"Accident Analysis and Prevention"},{value:"aci-materials-journal",label:"ACI Materials Journal"},{value:"acm-sig-proceedings-long-author-list",label:'ACM SIG Proceedings ("et al." for 15+ authors)'},{value:"acm-sig-proceedings",label:'ACM SIG Proceedings ("et al." for 3+ authors)'},{value:"acm-sigchi-proceedings-extended-abstract-format",label:"ACM SIGCHI Proceedings - Extended Abstract Format"},{value:"acm-sigchi-proceedings",label:"ACM SIGCHI Proceedings (2016)"},{value:"acm-siggraph",label:"ACM SIGGRAPH"},{value:"acme-an-international-journal-for-critical-geographies",label:"ACME: An International Journal for Critical Geographies"},{value:"acta-amazonica",label:"Acta Amazonica"},{value:"acta-anaesthesiologica-scandinavica",label:"Acta Anaesthesiologica Scandinavica"},{value:"acta-anaesthesiologica-taiwanica",label:"Acta Anaesthesiologica Taiwanica"},{value:"acta-botanica-croatica",label:"Acta Botanica Croatica"},{value:"acta-chiropterologica",label:"Acta Chiropterologica"},{value:"acta-chirurgiae-orthopaedicae-et-traumatologiae-cechoslovaca",label:"Acta chirurgiae orthopaedicae et traumatologiae \u010Cechoslovaca"},{value:"acta-hydrotechnica",label:"Acta hydrotechnica"},{value:"acta-ichthyologica-et-piscatoria",label:"Acta Ichthyologica et Piscatoria"},{value:"acta-medica-peruana",label:"Acta M\xE9dica Peruana"},{value:"acta-naturae",label:"Acta Naturae"},{value:"acta-neurobiologiae-experimentalis",label:"Acta Neurobiologiae Experimentalis"},{value:"acta-neurochirurgica",label:"Acta Neurochirurgica"},{value:"acta-ophthalmologica",label:"Acta Ophthalmologica"},{value:"acta-ornithologica",label:"Acta Ornithologica"},{value:"acta-orthopaedica-belgica",label:"Acta Orthop\xE6dica Belgica"},{value:"acta-orthopaedica",label:"Acta Orthopaedica"},{value:"acta-paediatrica",label:"Acta Paediatrica"},{value:"acta-palaeontologica-polonica",label:"Acta Palaeontologica Polonica"},{value:"acta-pharmaceutica-sinica-b",label:"Acta Pharmaceutica Sinica B"},{value:"acta-pharmaceutica",label:"Acta Pharmaceutica"},{value:"acta-philosophica",label:"Acta Philosophica"},{value:"acta-physica-sinica",label:"Acta Physica Sinica (\u7269\u7406\u5B66\u62A5)"},{value:"acta-physiologica",label:"Acta Physiologica"},{value:"acta-polytechnica",label:"Acta Polytechnica"},{value:"acta-radiologica",label:"Acta Radiologica"},{value:"acta-scientiae-veterinariae",label:"Acta Scientiae Veterinariae"},{value:"acta-societatis-botanicorum-poloniae",label:"Acta Societatis Botanicorum Poloniae"},{value:"acta-universitatis-agriculturae-et-silviculturae-mendelianae-brunensis",label:"Acta Universitatis Agriculturae et Silviculturae Mendelianae Brunensis"},{value:"acta-universitatis-agriculturae-sueciae",label:"Acta Universitatis Agriculturae Sueciae (Swedish University of Agricultural Sciences)"},{value:"acta-zoologica-academiae-scientiarum-hungaricae",label:"Acta Zoologica Academiae Scientiarum Hungaricae"},{value:"administrative-science-quarterly",label:"Administrative Science Quarterly"},{value:"advanced-engineering-materials",label:"Advanced Engineering Materials"},{value:"advanced-functional-materials",label:"Advanced Functional Materials"},{value:"advanced-healthcare-materials",label:"Advanced Healthcare Materials"},{value:"advanced-materials",label:"Advanced Materials"},{value:"advanced-optical-materials",label:"Advanced Optical Materials"},{value:"advanced-pharmaceutical-bulletin",label:"Advanced Pharmaceutical Bulletin"},{value:"advances-in-alzheimers-disease",label:"Advances in Alzheimer's Disease"},{value:"advances-in-complex-systems",label:"Advances in Complex Systems"},{value:"aerosol-and-air-quality-research",label:"Aerosol and Air Quality Research"},{value:"aerosol-science-and-technology",label:"Aerosol Science and Technology"},{value:"aerospace-medicine-and-human-performance",label:"Aerospace Medicine and Human Performance"},{value:"african-journal-of-marine-science",label:"African Journal of Marine Science"},{value:"african-online-scientific-information-systems-harvard",label:"African Online Scientific Information Systems - Harvard"},{value:"african-online-scientific-information-systems-vancouver",label:"African Online Scientific Information Systems - Vancouver"},{value:"african-zoology",label:"African Zoology"},{value:"afro-asia",label:"Afro-\xC1sia (Portugu\xEAs - Brasil)"},{value:"age-and-ageing",label:"Age and Ageing"},{value:"ageing-and-society",label:"Ageing & Society"},{value:"aging-and-disease",label:"Aging and Disease"},{value:"aging-cell",label:"Aging Cell"},{value:"aging",label:"Aging"},{value:"agora",label:"Agora"},{value:"agriculturae-conspectus-scientificus",label:"Agriculturae Conspectus Scientificus"},{value:"aib-studi",label:"AIB studi (Italiano)"},{value:"aids",label:"AIDS"},{value:"aims-press",label:"AIMS Press"},{value:"aix-marseille-universite-departement-d-etudes-asiatiques",label:"Aix-Marseille Universit\xE9 - D\xE9partement d'\xE9tudes asiatiques (Fran\xE7ais)"},{value:"al-jamiah-journal-of-islamic-studies",label:"Al-Jami'ah - Journal of Islamic Studies"},{value:"alcohol-and-alcoholism",label:"Alcohol and Alcoholism"},{value:"alcoholism-clinical-and-experimental-research",label:"Alcoholism: Clinical and Experimental Research"},{value:"alkoholizmus-a-drogove-zavislosti",label:"Alkoholizmus a drogov\xE9 z\xE1vislosti"},{value:"allergology-international",label:"Allergology International"},{value:"allergy",label:"Allergy"},{value:"alternatif-politika",label:"Alternatif Politika"},{value:"alternatives-to-animal-experimentation",label:"Alternatives to Animal Experimentation"},{value:"ambio",label:"AMBIO"},{value:"ameghiniana",label:"Ameghiniana"},{value:"american-anthropological-association",label:"American Anthropological Association"},{value:"american-association-for-cancer-research",label:"American Association for Cancer Research"},{value:"american-association-of-petroleum-geologists",label:"American Association of Petroleum Geologists"},{value:"american-chemical-society",label:"American Chemical Society"},{value:"american-fisheries-society",label:"American Fisheries Society"},{value:"american-geophysical-union",label:"American Geophysical Union"},{value:"american-heart-association",label:"American Heart Association"},{value:"american-institute-of-aeronautics-and-astronautics",label:"American Institute of Aeronautics and Astronautics"},{value:"american-institute-of-physics",label:"American Institute of Physics"},{value:"american-journal-of-agricultural-economics",label:"American Journal of Agricultural Economics"},{value:"american-journal-of-archaeology",label:"American Journal of Archaeology"},{value:"american-journal-of-botany",label:"American Journal of Botany"},{value:"american-journal-of-climate-change",label:"American Journal of Climate Change"},{value:"american-journal-of-clinical-pathology",label:"American Journal of Clinical Pathology"},{value:"american-journal-of-enology-and-viticulture",label:"American Journal of Enology and Viticulture"},{value:"american-journal-of-epidemiology",label:"American Journal of Epidemiology"},{value:"american-journal-of-health-behavior",label:"American Journal of Health Behavior"},{value:"american-journal-of-hypertension",label:"American Journal of Hypertension"},{value:"american-journal-of-medical-genetics",label:"American Journal of Medical Genetics"},{value:"american-journal-of-neuroradiology",label:"American Journal of Neuroradiology"},{value:"american-journal-of-orthodontics-and-dentofacial-orthopedics",label:"American Journal of Orthodontics & Dentofacial Orthopedics"},{value:"american-journal-of-plant-sciences",label:"American Journal of Plant Sciences"},{value:"american-journal-of-political-science",label:"American Journal of Political Science"},{value:"american-journal-of-respiratory-and-critical-care-medicine",label:"American Journal of Respiratory and Critical Care Medicine"},{value:"american-journal-of-science",label:"American Journal of Science"},{value:"american-journal-of-sociology",label:"American Journal of Sociology"},{value:"american-journal-of-sonography",label:"American Journal of Sonography"},{value:"american-journal-of-surgical-pathology",label:"American Journal of Surgical Pathology"},{value:"american-journal-of-translational-research",label:"American Journal of Translational Research"},{value:"american-marketing-association",label:"American Marketing Association"},{value:"american-medical-association-10th-edition",label:"American Medical Association 10th edition"},{value:"american-medical-association-alphabetical",label:"American Medical Association 11th edition (sorted alphabetically)"},{value:"american-medical-association-brackets",label:"American Medical Association 11th edition (brackets)"},{value:"american-medical-association-no-et-al",label:'American Medical Association 11th edition (no "et al.")'},{value:"american-medical-association-no-url",label:"American Medical Association 11th edition (no URL)"},{value:"american-medical-association",label:"American Medical Association 11th edition"},{value:"american-meteorological-society",label:"American Meteorological Society"},{value:"american-mineralogist",label:"American Mineralogist"},{value:"american-nuclear-society",label:"American Nuclear Society"},{value:"american-physical-society-et-al",label:"American Physical Society - et al. (if more than 3 authors)"},{value:"american-physics-society-without-titles",label:"American Physical Society (without titles)"},{value:"american-physics-society",label:"American Physical Society"},{value:"american-physiological-society",label:"American Physiological Society"},{value:"american-phytopathological-society",label:"American Phytopathological Society"},{value:"american-political-science-association",label:"American Political Science Association"},{value:"american-school-of-classical-studies-at-athens",label:"American School of Classical Studies at Athens"},{value:"american-society-for-horticultural-science",label:"American Society for Horticultural Science"},{value:"american-society-for-microbiology",label:"American Society for Microbiology"},{value:"american-society-for-pharmacology-and-experimental-therapeutics",label:"American Society for Pharmacology and Experimental Therapeutics"},{value:"american-society-of-agricultural-and-biological-engineers",label:"American Society of Agricultural and Biological Engineers"},{value:"american-society-of-civil-engineers",label:"American Society of Civil Engineers"},{value:"american-society-of-mechanical-engineers",label:"American Society of Mechanical Engineers"},{value:"american-sociological-association",label:"American Sociological Association 6th edition"},{value:"american-statistical-association",label:"American Statistical Association"},{value:"american-veterinary-medical-association",label:"American Veterinary Medical Association"},{value:"amerindia",label:"Amerindia"},{value:"amphibia-reptilia",label:"Amphibia-Reptilia"},{value:"amsterdam-university-press-academic",label:"Amsterdam University Press - Academic"},{value:"anabases",label:"Anabases"},{value:"anaesthesia",label:"Anaesthesia"},{value:"analytical-sciences",label:"Analytical Sciences"},{value:"anatomical-sciences-education",label:"Anatomical Sciences Education"},{value:"ancilla-iuris",label:"Ancilla Iuris"},{value:"andean-geology",label:"Andean Geology"},{value:"anesthesia-and-analgesia",label:"Anesthesia and Analgesia"},{value:"anesthesiology",label:"Anesthesiology"},{value:"angewandte-chemie",label:"Angewandte Chemie International Edition"},{value:"angiologia",label:"Angiologia (Espa\xF1ol)"},{value:"anglia",label:"Anglia"},{value:"animal-conservation",label:"Animal Conservation"},{value:"animal-migration",label:"Animal Migration"},{value:"animal-welfare",label:"Animal Welfare"},{value:"animal",label:"animal"},{value:"annalen-des-naturhistorischen-museums-in-wien",label:"Annalen des Naturhistorischen Museums in Wien"},{value:"annales-de-demographie-historique",label:"Annales de d\xE9mographie historique"},{value:"annales",label:"Annales. Histoire, Sciences sociales (Fran\xE7ais)"},{value:"annals-of-applied-biology",label:"Annals of Applied Biology"},{value:"annals-of-behavioral-medicine",label:"Annals of Behavioral Medicine"},{value:"annals-of-biomedical-engineering",label:"Annals of Biomedical Engineering"},{value:"annals-of-botany",label:"Annals of Botany"},{value:"annals-of-eye-science",label:"Annals of Eye Science"},{value:"annals-of-joint",label:"Annals of Joint"},{value:"annals-of-laboratory-medicine",label:"Annals of Laboratory Medicine"},{value:"annals-of-neurology",label:"Annals of Neurology"},{value:"annals-of-oncology",label:"Annals of Oncology"},{value:"annals-of-public-and-cooperative-economics",label:"Annals of Public and Cooperative Economics"},{value:"annals-of-surgery",label:"Annals of Surgery"},{value:"annals-of-the-association-of-american-geographers",label:"Annals of the Association of American Geographers"},{value:"annals-of-the-new-york-academy-of-sciences",label:"Annals of the New York Academy of Sciences"},{value:"annals-of-work-exposures-and-health",label:"Annals of Work Exposures and Health"},{value:"annual-review-of-astronomy-and-astrophysics",label:"Annual Review of Astronomy and Astrophysics"},{value:"annual-review-of-linguistics",label:"Annual Review of Linguistics"},{value:"annual-review-of-medicine",label:"Annual Review of Medicine"},{value:"annual-review-of-nuclear-and-particle-science",label:"Annual Review of Nuclear and Particle Science"},{value:"annual-reviews-alphabetical",label:"Annual Reviews (sorted alphabetically)"},{value:"annual-reviews-author-date",label:"Annual Reviews (author-date)"},{value:"annual-reviews-without-titles",label:"Annual Reviews (sorted by order of appearance, without titles)"},{value:"annual-reviews",label:"Annual Reviews (sorted by order of appearance)"},{value:"antarctic-science",label:"Antarctic Science"},{value:"anthropologie-et-societes",label:"Anthropologie et Soci\xE9t\xE9s (Fran\xE7ais)"},{value:"anti-trafficking-review",label:"Anti-Trafficking Review"},{value:"anticancer-research",label:"Anticancer Research"},{value:"antipode",label:"Antipode"},{value:"antiquites-africaines",label:"Antiquit\xE9s africaines"},{value:"antiquity",label:"Antiquity"},{value:"apa-5th-edition",label:"American Psychological Association 5th edition"},{value:"apa-6th-edition-no-ampersand",label:"American Psychological Association 6th edition (no ampersand)"},{value:"apa-6th-edition",label:"American Psychological Association 6th edition"},{value:"apa-annotated-bibliography",label:"American Psychological Association 7th edition (annotated bibliography)"},{value:"apa-cv",label:"American Psychological Association 7th edition (curriculum vitae, sorted by descending date)"},{value:"apa-fr-provost",label:"American Psychological Association 6th edition (Provost) (Fran\xE7ais - Canada)"},{value:"apa-no-ampersand",label:"American Psychological Association 7th edition (no ampersand)"},{value:"apa-no-doi-no-issue",label:"American Psychological Association 6th edition (no DOIs, no issue numbers)"},{value:"apa-no-initials",label:"American Psychological Association 7th edition (no initials)"},{value:"apa-numeric-superscript-brackets",label:"American Psychological Association 7th edition (numeric, brackets)"},{value:"apa-numeric-superscript",label:"American Psychological Association 7th edition (numeric, superscript)"},{value:"apa-old-doi-prefix",label:'American Psychological Association 6th edition ("doi:" DOI prefix)'},{value:"apa-single-spaced",label:"American Psychological Association 7th edition (single-spaced bibliography)"},{value:"apa-tr",label:"American Psychological Association 6th edition (T\xFCrk\xE7e)"},{value:"apa-with-abstract",label:"American Psychological Association 7th edition (with abstract)"},{value:"apa",label:"American Psychological Association 7th edition"},{value:"aporia-the-nursing-journal",label:"Aporia: The Nursing Journal"},{value:"applied-clay-science",label:"Applied Clay Science"},{value:"applied-spectroscopy-reviews",label:"Applied Spectroscopy Reviews"},{value:"applied-spectroscopy",label:"Applied Spectroscopy"},{value:"aquatic-conservation",label:"Aquatic Conservation: Marine and Freshwater Ecosystems"},{value:"aquatic-invasions",label:"Aquatic Invasions"},{value:"aquatic-living-resources",label:"Aquatic Living Resources"},{value:"aquitania",label:"Aquitania (Fran\xE7ais)"},{value:"arachne",label:"Arachne"},{value:"arachnology",label:"Arachnology"},{value:"arbok-hins-islenzka-fornleifafelags",label:"\xC1rb\xF3k Hins \xEDslenzka fornleifaf\xE9lags (\xCDslenska)"},{value:"archaeologia-austriaca",label:"Archaeologia Austriaca"},{value:"archaeometry",label:"Archaeometry"},{value:"archaeonautica",label:"Archaeonautica"},{value:"archeologia-classica",label:"Archeologia Classica (Italiano)"},{value:"archeologicke-rozhledy",label:"Archeologick\xE9 rozhledy"},{value:"archeologie-medievale",label:"Arch\xE9ologie m\xE9di\xE9vale (Fran\xE7ais)"},{value:"archeologies-et-sciences-de-lantiquite",label:"Arch\xE9ologies et Sciences de l'Antiquit\xE9 (Fran\xE7ais)"},{value:"archeosciences",label:"ArcheoSciences (Fran\xE7ais)"},{value:"archiv-fur-die-civilistische-praxis",label:"Archiv f\xFCr die civilistische Praxis (Deutsch)"},{value:"archiv-fur-geschichte-der-philosophie",label:"Archiv f\xFCr Geschichte der Philosophie"},{value:"archives-of-hand-and-microsurgery",label:"Archives of Hand and Microsurgery"},{value:"archives-of-physical-medicine-and-rehabilitation",label:"Archives of Physical Medicine and Rehabilitation"},{value:"archivos-de-bronconeumologia",label:"Archivos de Bronconeumolog\xEDa"},{value:"archivos-de-la-sociedad-espanola-de-oftalmologia",label:"Archivos de la Sociedad Espa\xF1ola de Oftalmolog\xEDa (Espa\xF1ol)"},{value:"archivum-latinitatis-medii-aevi",label:"Archivum Latinitatis Medii Aevi (Fran\xE7ais)"},{value:"arctic-antarctic-and-alpine-research",label:"Arctic, Antarctic, and Alpine Research"},{value:"arctic",label:"Arctic"},{value:"arhiv-za-higijenu-rada-i-toksikologiju",label:"Arhiv za higijenu rada i toksikologiju (Archives of Industrial Hygiene and Toxicology)"},{value:"art-history",label:"Art History"},{value:"art-libraries-society-of-north-america-arlisna-reviews",label:"Art Libraries Society of North America: ARLIS/NA Reviews"},{value:"artery-research",label:"Artery Research"},{value:"arthritis-and-rheumatism",label:"Arthritis & Rheumatism"},{value:"arthropod-systematics-and-phylogeny",label:"Arthropod Systematics & Phylogeny"},{value:"arts-university-bournemouth",label:"Arts University Bournemouth"},{value:"arzneimitteltherapie",label:"Arzneimitteltherapie"},{value:"asa-cssa-sssa",label:"American Society of Agronomy, Crop Science Society of America, Soil Science Society of America"},{value:"asaio-journal",label:"ASAIO Journal (American Society for Artificial Internal Organs)"},{value:"asia-and-the-pacific-policy-studies",label:"Asia & the Pacific Policy Studies"},{value:"asia-pacific-journal-of-human-resources",label:"Asia Pacific Journal of Human Resources"},{value:"asian-journal-of-neurosurgery",label:"Asian Journal of Neurosurgery"},{value:"asian-myrmecology",label:"Asian Myrmecology"},{value:"asian-studies-review",label:"Asian Studies Review"},{value:"associacao-brasileira-de-normas-tecnicas-eceme",label:"Escola de Comando e Estado-Maior do Ex\xE9rcito - ABNT (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-instituto-meira-mattos",label:"Escola de Comando e Estado-Maior do Ex\xE9rcito - Instituto Meira Mattos - ABNT (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-ipea",label:"Instituto de Pesquisa Econ\xF4mica Aplicada - ABNT (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-note",label:"Associa\xE7\xE3o Brasileira de Normas T\xE9cnicas (note, Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-ufmg-face-full",label:"Universidade Federal de Minas Gerais - Faculdade de Ci\xEAncias Econ\xF4micas - ABNT (autoria completa) (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-ufmg-face-initials",label:"Universidade Federal de Minas Gerais - Faculdade de Ci\xEAncias Econ\xF4micas - ABNT (autoria abreviada) (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-ufpr",label:"Universidade Federal do Paran\xE1 - ABNT (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-ufrgs-initials",label:"Universidade Federal do Rio Grande do Sul - ABNT (autoria abreviada) (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-ufrgs-note-initials-with-ibid",label:"Universidade Federal do Rio Grande do Sul - ABNT (autoria abreviada, nota, com Ibid.) (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-ufrgs",label:"Universidade Federal do Rio Grande do Sul - ABNT (autoria completa) (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-ufs",label:"Universidade Federal de Sergipe - ABNT (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-unirio-eipp",label:"Universidade Federal do Estado do Rio de Janeiro - Educa\xE7\xE3o Infantil e Pol\xEDticas P\xFAblicas - ABNT (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-usp-fmvz",label:"Universidade de S\xE3o Paulo - Faculdade de Medicina Veterin\xE1ria e Zootecnia - ABNT (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas",label:"Associa\xE7\xE3o Brasileira de Normas T\xE9cnicas (Portugu\xEAs - Brasil)"},{value:"associacao-nacional-de-pesquisa-e-ensino-em-transportes",label:"ANPET - Congresso de Pesquisa e Ensino em Transportes (Portugu\xEAs - Brasil)"},{value:"association-de-science-regionale-de-langue-francaise",label:"Association de Science R\xE9gionale de Langue Fran\xE7aise (Fran\xE7ais)"},{value:"association-for-computational-linguistics",label:"Association for Computational Linguistics - Conference Proceedings"},{value:"association-for-computing-machinery",label:"Association for Computing Machinery"},{value:"atlande",label:"Atlande (author-date, Fran\xE7ais)"},{value:"atlas-of-genetics-and-cytogenetics-in-oncology-and-haematology",label:"Atlas of Genetics and Cytogenetics in Oncology and Haematology"},{value:"ausonius-editions",label:"Ausonius \xC9ditions (Fran\xE7ais)"},{value:"austral-ecology",label:"Austral Ecology"},{value:"austral-entomology",label:"Austral Entomology"},{value:"australian-archaeology",label:"Australian Archaeology"},{value:"australian-critical-care",label:"Australian Critical Care"},{value:"australian-dental-journal",label:"Australian Dental Journal"},{value:"australian-guide-to-legal-citation-3rd-edition",label:"Australian Guide to Legal Citation 3rd edition"},{value:"australian-guide-to-legal-citation",label:"Australian Guide to Legal Citation 4th edition"},{value:"australian-historical-studies",label:"Australian Historical Studies"},{value:"australian-journal-of-earth-sciences",label:"Australian Journal of Earth Sciences"},{value:"australian-journal-of-grape-and-wine-research",label:"Australian Journal of Grape and Wine Research"},{value:"australian-road-research-board",label:"Australian Road Research Board"},{value:"australian-veterinary-journal",label:"Australian Veterinary Journal"},{value:"austrian-journal-of-development-studies",label:"Austrian Journal of Development Studies (Journal f\xFCr Entwicklungspolitik)"},{value:"austrian-legal",label:"Austrian Legal (Deutsch - \xD6sterreich)"},{value:"avian-conservation-and-ecology",label:"Avian Conservation and Ecology"},{value:"avian-diseases",label:"Avian Diseases"},{value:"avian-pathology",label:"Avian Pathology"},{value:"ayer",label:"Ayer (Espa\xF1ol)"},{value:"azr-abkurzungs-und-zitierregeln-der-osterreichischen-rechtssprache-und-europarechtlicher-rechtsquellen",label:"AZR - Abk\xFCrzungs- und Zitierregeln der \xF6sterreichischen Rechtssprache und europarechtlicher Rechtsquellen (Deutsch - \xD6sterreich)"},{value:"babes-bolyai-university-faculty-of-orthodox-theology",label:"Babes-Bolyai University - Faculty of Orthodox Theology (no ibid., Rom\xE2n\u0103)"},{value:"babesch-annual-papers-on-mediterranean-archaeology",label:"BABESCH - Annual Papers on Mediterranean Archaeology"},{value:"baghdad-science-journal",label:"Baghdad Science Journal"},{value:"baishideng-publishing-group",label:"Baishideng Publishing Group"},{value:"bakhtiniana-journal-of-discourse-studies",label:"Bakhtiniana: Journal of Discourse Studies"},{value:"begell-house-apa",label:"Begell House - APA"},{value:"begell-house-chicago-author-date",label:"Begell House - Chicago Manual of Style"},{value:"behaviour",label:"Behaviour"},{value:"beilstein-journal-of-organic-chemistry",label:"Beilstein Journal of Organic Chemistry"},{value:"beltz-padagogik",label:"Beltz - P\xE4dagogik (Deutsch)"},{value:"berghahn-books-author-date-en-gb",label:"Berghahn Books (author-date, English - UK)"},{value:"berlin-school-of-economics-and-law-international-marketing-management",label:"Berlin School of Economics and Law - International Marketing Management"},{value:"bern-university-of-applied-sciences-school-of-agricultural-forest-and-food-sciences-hafl",label:"Bern University of Applied Sciences - School of Agricultural, Forest and Food Sciences HAFL (author-date)"},{value:"betriebswirtschaftliche-forschung-und-praxis",label:"Betriebswirtschaftliche Forschung und Praxis (Deutsch)"},{value:"biblio-3w",label:"Biblio 3W (Espa\xF1ol)"},{value:"bibliothecae-it",label:"Bibliothecae.it (Italiano)"},{value:"bibliotheque-d-archeologie-mediterraneenne-et-africaine-biama",label:"Biblioth\xE8que d'arch\xE9ologie m\xE9diterran\xE9enne et africaine (BiAMA) (Fran\xE7ais)"},{value:"bibliotheque-universitaire-de-medecine-vancouver",label:"Biblioth\xE8que universitaire de m\xE9decine - Vancouver (Fran\xE7ais)"},{value:"bibtex",label:"BibTeX generic citation style"},{value:"biens-symboliques-symbolic-goods",label:"Biens symboliques / Symbolic Goods"},{value:"bioarchaeology-international",label:"Bioarchaeology International"},{value:"bioarchaeology-of-the-near-east",label:"Bioarchaeology of the Near East"},{value:"biochemical-journal",label:"Biochemical Journal"},{value:"biochemical-society-transactions",label:"Biochemical Society Transactions"},{value:"biochemistry-and-molecular-biology-education",label:"Biochemistry and Molecular Biology Education"},{value:"biochemistry",label:"Biochemistry"},{value:"biochimica-et-biophysica-acta",label:"Biochimica et Biophysica Acta"},{value:"bioelectromagnetics",label:"Bioelectromagnetics"},{value:"bioinformatics",label:"Bioinformatics"},{value:"biologia",label:"Biologia"},{value:"biological-and-pharmaceutical-bulletin",label:"Biological and Pharmaceutical Bulletin"},{value:"biological-journal-of-the-linnean-society",label:"Biological Journal of the Linnean Society"},{value:"biological-psychiatry",label:"Biological Psychiatry"},{value:"biological-reviews",label:"Biological Reviews"},{value:"biology-of-reproduction",label:"Biology of Reproduction"},{value:"biomarkers",label:"Biomarkers"},{value:"biomed-central",label:"BioMed Central"},{value:"biomed-research-international",label:"BioMed Research International"},{value:"biometrics",label:"Biometrics"},{value:"biophysical-journal",label:"Biophysical Journal"},{value:"biophysics-and-physicobiology",label:"Biophysics and Physicobiology"},{value:"biopolymers",label:"Biopolymers"},{value:"bioresources",label:"BioResources"},{value:"bioscience",label:"BioScience"},{value:"biosocieties",label:"BioSocieties"},{value:"biostatistics",label:"Biostatistics"},{value:"biota-neotropica",label:"Biota Neotropica"},{value:"biotechniques",label:"BioTechniques"},{value:"biotechnology-and-bioengineering",label:"Biotechnology and Bioengineering"},{value:"biotropica",label:"Biotropica"},{value:"bitonline",label:"b.i.t.online (note, Deutsch)"},{value:"biuletyn-polskiego-towarzystwa-jezykoznawczego",label:"Biuletyn Polskiego Towarzystwa J\u0119zykoznawczego (Polski)"},{value:"blood",label:"Blood"},{value:"bloomsbury-academic",label:"Bloomsbury Academic"},{value:"bluebook-inline",label:"Bluebook Inline"},{value:"bluebook-law-review",label:"Bluebook Law Review"},{value:"bluebook2",label:"Bluebook Law Review (2)"},{value:"bmj",label:"BMJ"},{value:"body-and-society",label:"Body & Society"},{value:"boletin-de-la-sociedad-geologica-mexicana",label:"Bolet\xEDn de la Sociedad Geol\xF3gica Mexicana (Espa\xF1ol - Mexico)"},{value:"boletin-de-pediatria",label:"Bolet\xEDn de Pediatr\xEDa (Espa\xF1ol)"},{value:"bollettino-d-archeologia-online",label:"Bollettino d'archeologia online (Italiano)"},{value:"boreal-environment-research",label:"Boreal Environment Research"},{value:"bourgogne-franche-comte-nature",label:"Bourgogne-Franche-Comt\xE9 Nature (Fran\xE7ais)"},{value:"brachytherapy",label:"Brachytherapy"},{value:"brain-behavior-and-evolution",label:"Brain, Behavior and Evolution"},{value:"brazilian-journal-of-experimental-design-data-analysis-and-inferential-statistics",label:"Brazilian Journal of Experimental Design, Data Analysis and Inferential Statistics"},{value:"brazilian-journal-of-infectious-diseases",label:"Brazilian Journal of Infectious Diseases"},{value:"brazilian-journal-of-psychiatry",label:"Brazilian Journal of Psychiatry"},{value:"brazilian-journal-of-veterinary-research-and-animal-science",label:"Brazilian Journal of Veterinary Research and Animal Science"},{value:"brazilian-oral-research",label:"Brazilian Oral Research"},{value:"brewingscience",label:"BrewingScience"},{value:"briefings-in-bioinformatics",label:"Briefings in Bioinformatics"},{value:"british-journal-of-anaesthesia",label:"British Journal of Anaesthesia"},{value:"british-journal-of-cancer",label:"British Journal of Cancer"},{value:"british-journal-of-dermatology",label:"British Journal of Dermatology"},{value:"british-journal-of-haematology",label:"British Journal of Haematology"},{value:"british-journal-of-industrial-relations",label:"British Journal of Industrial Relations"},{value:"british-journal-of-pharmacology",label:"British Journal of Pharmacology"},{value:"british-journal-of-political-science",label:"British Journal of Political Science"},{value:"british-journal-of-surgery",label:"British Journal of Surgery"},{value:"budownictwo-i-architektura-pl",label:"Budownictwo i Architektura"},{value:"building-structure",label:"Building Structure (\u4E2D\u6587)"},{value:"buletin-agrohorti",label:"Buletin Agrohorti"},{value:"bulletin-de-correspondance-hellenique",label:"Bulletin de correspondance hell\xE9nique"},{value:"bulletin-de-la-societe-entomologique-de-france",label:"Bulletin de la Soci\xE9t\xE9 Entomologique de France"},{value:"bulletin-de-la-societe-prehistorique-francaise",label:"Bulletin de la Soci\xE9t\xE9 pr\xE9historique fran\xE7aise (Fran\xE7ais)"},{value:"bulletin-du-centre-detudes-medievales-dauxerre",label:"Bulletin du Centre d\u2019\xE9tudes m\xE9di\xE9vales d\u2019Auxerre (Fran\xE7ais)"},{value:"bulletin-of-geosciences",label:"Bulletin of Geosciences"},{value:"bulletin-of-marine-science",label:"Bulletin of Marine Science"},{value:"bulletin-of-the-american-schools-of-oriental-research",label:"Bulletin of the American Schools of Oriental Research"},{value:"bulletin-of-the-seismological-society-of-america",label:"Bulletin of the Seismological Society of America"},{value:"bursa-uludag-universitesi-egitim-bilimleri-enstitusu",label:"Bursa Uluda\u011F \xDCniversitesi - E\u011Fitim Bilimleri Enstit\xFCs\xFC"},{value:"bursa-uludag-universitesi-fen-bilimleri-enstitusu",label:"Bursa Uludag \xDCniversitesi Fen Bilimleri Enstit\xFCs\xFC"},{value:"bursa-uludag-universitesi-saglik-bilimleri-enstitusu",label:"Bursa Uluda\u011F \xDCniversitesi - Sa\u011Fl\u0131k Bilimleri Enstit\xFCs\xFC"},{value:"bursa-uludag-universitesi-sosyal-bilimler-enstitusu-metinici-atif",label:"Bursa Uluda\u011F \xDCniversitesi - Sosyal Bilimler Enstit\xFCs\xFC (metinici atif)"},{value:"bursa-uludag-universitesi-sosyal-bilimler-enstitusu",label:"Bursa Uluda\u011F \xDCniversitesi - Sosyal Bilimler Enstit\xFCs\xFC"},{value:"business-ethics-a-european-review",label:"Business Ethics: A European Review"},{value:"byzantina-symmeikta",label:"BYZANTINA SYMMEIKTA"},{value:"byzantine-and-modern-greek-studies",label:"Byzantine and Modern Greek Studies"},{value:"cahiers-d-ethnomusicologie",label:"Cahiers d'ethnomusicologie (Fran\xE7ais)"},{value:"cahiers-du-centre-gustave-glotz",label:"Cahiers du Centre Gustave-Glotz (Fran\xE7ais)"},{value:"california-agriculture",label:"California Agriculture"},{value:"cambridge-journal-of-economics",label:"Cambridge Journal of Economics"},{value:"cambridge-university-press-author-date",label:"Cambridge University Press (author-date)"},{value:"cambridge-university-press-law-note",label:"Cambridge University Press - Law (note)"},{value:"cambridge-university-press-note",label:"Cambridge University Press (note)"},{value:"cambridge-university-press-numeric",label:"Cambridge University Press (numeric)"},{value:"campus-adventiste-du-saleve-faculte-adventiste-de-theologie",label:"Campus adventiste du Sal\xE8ve - Facult\xE9 adventiste de th\xE9ologie (Fran\xE7ais)"},{value:"canadian-biosystems-engineering",label:"Canadian Biosystems Engineering"},{value:"canadian-geotechnical-journal",label:"Canadian Geotechnical Journal"},{value:"canadian-journal-of-chemistry",label:"Canadian Journal of Chemistry"},{value:"canadian-journal-of-dietetic-practice-and-research",label:"Canadian Journal of Dietetic Practice and Research"},{value:"canadian-journal-of-earth-sciences",label:"Canadian Journal of Earth Sciences"},{value:"canadian-journal-of-economics",label:"Canadian Journal of Economics"},{value:"canadian-journal-of-fisheries-and-aquatic-sciences",label:"Canadian Journal of Fisheries and Aquatic Sciences"},{value:"canadian-journal-of-physics",label:"Canadian Journal of Physics"},{value:"canadian-journal-of-public-health",label:"Canadian Journal of Public Health"},{value:"canadian-journal-of-soil-science",label:"Canadian Journal of Soil Science"},{value:"canadian-public-policy",label:"Canadian Public Policy"},{value:"cancer-biomarkers",label:"Cancer Biomarkers"},{value:"cancer-drug-resistance",label:"Cancer Drug Resistance"},{value:"cancer-translational-medicine",label:"Cancer Translational Medicine"},{value:"carcinogenesis",label:"Carcinogenesis"},{value:"cardiff-university-harvard",label:"Cardiff University - Harvard"},{value:"cardiff-university-vancouver",label:"Cardiff University - Vancouver"},{value:"cardiocore",label:"Cardiocore (Espa\xF1ol)"},{value:"cath-lab-digest",label:"Cath Lab Digest"},{value:"catholic-biblical-association",label:"Catholic Biblical Association (full note)"},{value:"cell-numeric-superscript",label:"Cell journals (numeric, superscript)"},{value:"cell-numeric",label:"Cell journals (numeric)"},{value:"cell-research",label:"Cell Research"},{value:"cell-structure-and-function",label:"Cell Structure and Function"},{value:"cell-transplantation",label:"Cell Transplantation"},{value:"cell",label:"Cell"},{value:"cellular-and-molecular-bioengineering",label:"Cellular and Molecular Bioengineering"},{value:"cellular-and-molecular-gastroenterology-and-hepatology",label:"Cellular and Molecular Gastroenterology and Hepatology"},{value:"centaurus",label:"Centaurus"},{value:"centre-de-recherche-sur-les-civilisations-de-l-asie-orientale-auteur-date",label:"Centre de recherche sur les civilisations de l\u2019Asie orientale (Fran\xE7ais - Auteur, Date)"},{value:"centre-de-recherche-sur-les-civilisations-de-l-asie-orientale",label:"Centre de recherche sur les civilisations de l'Asie orientale (Fran\xE7ais - note)"},{value:"cerebral-cortex",label:"Cerebral Cortex"},{value:"ceska-zemedelska-univerzita-v-praze-fakulta-agrobiologie-potravinovych-a-prirodnich-zdroju",label:"\u010Cesk\xE1 zem\u011Bd\u011Blsk\xE1 univerzita v Praze - Fakulta agrobiologie, potravinov\xFDch a p\u0159\xEDrodn\xEDch zdroj\u016F"},{value:"changer-d-epoque",label:"Changer d'\xE9poque (Fran\xE7ais)"},{value:"chemical-and-pharmaceutical-bulletin",label:"Chemical and Pharmaceutical Bulletin"},{value:"chemical-biology-and-drug-design",label:"Chemical Biology & Drug Design"},{value:"chemical-engineering-progress",label:"Chemical Engineering Progress"},{value:"chemical-senses",label:"Chemical Senses"},{value:"chemie-ingenieur-technik",label:"Chemie Ingenieur Technik"},{value:"chemistry-education-research-and-practice",label:"Chemistry Education Research and Practice"},{value:"chest",label:"Chest"},{value:"chicago-annotated-bibliography",label:"Chicago Manual of Style 17th edition (note, annotated bibliography)"},{value:"chicago-author-date-16th-edition",label:"Chicago Manual of Style 16th edition (author-date)"},{value:"chicago-author-date-basque",label:"Chicago Manual of Style 16th edition (author-date, Euskara)"},{value:"chicago-author-date-de",label:"Chicago Manual of Style 16th edition (author-date, Deutsch)"},{value:"chicago-author-date-fr",label:"Chicago Manual of Style 17th edition (author-date, Fran\xE7ais)"},{value:"chicago-author-date",label:"Chicago Manual of Style 17th edition (author-date)"},{value:"chicago-figures",label:"Chicago Manual of Style 16th edition (figures and illustrations)"},{value:"chicago-fullnote-bibliography-16th-edition",label:"Chicago Manual of Style 16th edition (full note)"},{value:"chicago-fullnote-bibliography-fr",label:"Chicago Manual of Style 17th edition (full note, Fran\xE7ais)"},{value:"chicago-fullnote-bibliography-short-title-subsequent",label:"Chicago Manual of Style 17th edition (full note, short title subsequent)"},{value:"chicago-fullnote-bibliography-with-ibid",label:"Chicago Manual of Style 17th edition (full note, with Ibid.)"},{value:"chicago-fullnote-bibliography",label:"Chicago Manual of Style 17th edition (full note)"},{value:"chicago-library-list",label:"Chicago Manual of Style 17th edition (library list)"},{value:"chicago-note-bibliography-16th-edition",label:"Chicago Manual of Style 16th edition (note)"},{value:"chicago-note-bibliography-with-ibid",label:"Chicago Manual of Style 17th edition (note, with Ibid.)"},{value:"chicago-note-bibliography",label:"Chicago Manual of Style 17th edition (note)"},{value:"chimia",label:"CHIMIA"},{value:"china-information",label:"China Information"},{value:"china-national-standard-gb-t-7714-2015-author-date",label:"China National Standard GB/T 7714-2015 (author-date, \u4E2D\u6587)"},{value:"china-national-standard-gb-t-7714-2015-note",label:"China National Standard GB/T 7714-2015 (note, \u4E2D\u6587)"},{value:"china-national-standard-gb-t-7714-2015-numeric",label:"China National Standard GB/T 7714-2015 (numeric, \u4E2D\u6587)"},{value:"chinese-gb7714-1987-numeric",label:"China National Standard GB/T 7714-1987 (numeric, \u4E2D\u6587)"},{value:"chinese-gb7714-2005-author-date",label:"China National Standard GB/T 7714-2005 (author-date, \u4E2D\u6587)"},{value:"chinese-gb7714-2005-numeric",label:"China National Standard GB/T 7714-2005 (numeric, \u4E2D\u6587)"},{value:"chinese-journal-of-aeronautics",label:"Chinese Journal of Aeronautics"},{value:"chinese-medical-journal",label:"Chinese Medical Journal"},{value:"chroniques-des-activites-archeologiques-de-l-ecole-francaise-de-rome",label:"Chroniques des activit\xE9s arch\xE9ologiques de l'Ecole fran\xE7aise de Rome"},{value:"chungara-revista-de-antropologia-chilena",label:"Chungara Revista de Antropolog\xEDa Chilena (Espa\xF1ol - Chile)"},{value:"circulation-journal",label:"Circulation Journal"},{value:"circulation",label:"Circulation"},{value:"cirugia-cardiovascular",label:"Cirugia Cardiovascular (Espa\xF1ol)"},{value:"citation-compass-apa-note",label:"Citation Compass (Kildekompasset) - APA (note)"},{value:"citizen-science-theory-and-practice",label:"Citizen Science: Theory and Practice"},{value:"civilta-italiana",label:"Civilt\xE0 Italiana (Italiano)"},{value:"civitas-revista-de-ciencias-sociais",label:"Civitas: Revista de Ci\xEAncias Sociais"},{value:"cladistics",label:"Cladistics"},{value:"clara-architecture-recherche",label:"CLARA Architecture/Recherche (Fran\xE7ais)"},{value:"clay-minerals",label:"Clay Minerals"},{value:"clays-and-clay-minerals",label:"Clays and Clay Minerals"},{value:"climate-change-economics",label:"Climate Change Economics"},{value:"clinica-e-investigacion-en-arteriosclerosis",label:"Cl\xEDnica e Investigaci\xF3n en Arteriosclerosis (Espa\xF1ol)"},{value:"clinical-anatomy",label:"Clinical Anatomy"},{value:"clinical-dysmorphology",label:"Clinical Dysmorphology"},{value:"clinical-gastroenterology-and-hepatology",label:"Clinical Gastroenterology and Hepatology"},{value:"clinical-hemorheology-and-microcirculation",label:"Clinical Hemorheology and Microcirculation"},{value:"clinical-infectious-diseases",label:"Clinical Infectious Diseases"},{value:"clinical-journal-of-sport-medicine",label:"Clinical Journal of Sport Medicine"},{value:"clinical-journal-of-the-american-society-of-nephrology",label:"Clinical Journal of the American Society of Nephrology"},{value:"clinical-management-issues",label:"Clinical Management Issues"},{value:"clinical-nuclear-medicine",label:"Clinical Nuclear Medicine"},{value:"clinical-oral-implants-research",label:"Clinical Oral Implants Research"},{value:"clinical-orthopaedics-and-related-research",label:"Clinical Orthopaedics and Related Research"},{value:"clinical-otolaryngology",label:"Clinical Otolaryngology"},{value:"clinical-pharmacology-and-therapeutics",label:"Clinical Pharmacology & Therapeutics"},{value:"clinical-physiology-and-functional-imaging",label:"Clinical Physiology and Functional Imaging"},{value:"clinical-radiology",label:"Clinical Radiology"},{value:"clinical-spine-surgery",label:"Clinical Spine Surgery"},{value:"clio-medica",label:"Clio Medica"},{value:"cns-and-neurological-disorders-drug-targets",label:"CNS & Neurological Disorders - Drug Targets"},{value:"cns-spectrums",label:"CNS Spectrums"},{value:"cold-spring-harbor-laboratory-press",label:"Cold Spring Harbor Laboratory Press"},{value:"collection-de-l-ecole-francaise-de-rome-full-note",label:"Collection de l'Ecole fran\xE7aise de Rome (full note, Fran\xE7ais)"},{value:"collection-de-l-ecole-francaise-de-rome-note",label:"Collection de l'Ecole fran\xE7aise de Rome (note, Fran\xE7ais)"},{value:"collection-du-centre-jean-berard",label:"Collection du Centre Jean-B\xE9rard (Fran\xE7ais)"},{value:"collections-electroniques-de-l-inha-author-date",label:"Collections \xE9lectroniques de l'INHA (author-date, Fran\xE7ais)"},{value:"collections-electroniques-de-l-inha-full-note",label:"Collections \xE9lectroniques de l'INHA (full note, Fran\xE7ais)"},{value:"college-montmorency",label:"Coll\xE8ge Montmorency (note, Fran\xE7ais - Canada)"},{value:"college-of-naturopathic-medicine",label:"College of Naturopathic Medicine"},{value:"colombian-journal-of-anesthesiology",label:"Colombian Journal of Anesthesiology"},{value:"colorado-state-university-school-of-biomedical-engineering",label:"Colorado State University - School of Biomedical Engineering"},{value:"comision-economica-para-america-latina-y-el-caribe",label:"Comisi\xF3n Econ\xF3mica para Am\xE9rica Latina y el Caribe (Espa\xF1ol)"},{value:"common-market-law-review",label:"Common Market Law Review"},{value:"communication-et-langages",label:"Communication et Langages"},{value:"comparativ",label:"Comparativ"},{value:"comparative-politics",label:"Comparative Politics"},{value:"comparative-population-studies",label:"Comparative Population Studies"},{value:"computer-und-recht",label:"Computer und Recht (Deutsch)"},{value:"conservation-and-society",label:"Conservation & Society"},{value:"conservation-biology",label:"Conservation Biology"},{value:"conservation-letters",label:"Conservation Letters"},{value:"conservation-physiology",label:"Conservation Physiology"},{value:"contemporary-accounting-research",label:"Contemporary Accounting Research"},{value:"continuity-and-change",label:"Continuity and Change"},{value:"contributions-to-the-archaeology-of-egypt-nubia-and-the-levant",label:"Contributions to the Archaeology of Egypt, Nubia and the Levant"},{value:"copeia",label:"Copeia"},{value:"copernicus-publications",label:"Copernicus Publications"},{value:"coral-reefs",label:"Coral Reefs"},{value:"cornea",label:"Cornea"},{value:"corrosion",label:"Corrosion"},{value:"council-of-science-editors-alphabetical",label:"Council of Science Editors, Citation-Name (numeric, sorted alphabetically)"},{value:"council-of-science-editors-author-date",label:"Council of Science Editors, Name-Year (author-date)"},{value:"council-of-science-editors-brackets",label:"Council of Science Editors, Citation-Sequence (numeric, brackets)"},{value:"council-of-science-editors",label:"Council of Science Editors, Citation-Sequence (numeric)"},{value:"cranfield-university-numeric",label:"Cranfield University (numeric)"},{value:"creativity-and-innovation-management",label:"Creativity and Innovation Management"},{value:"critical-care-medicine",label:"Critical Care Medicine"},{value:"critical-reviews-in-plant-sciences",label:"Critical Reviews in Plant Sciences"},{value:"critical-reviews-in-solid-state-and-materials-sciences",label:"Critical Reviews in Solid State and Materials Sciences"},{value:"crop-breeding-and-applied-biotechnology",label:"Crop Breeding and Applied Biotechnology"},{value:"crustaceana",label:"Crustaceana"},{value:"cuadernos-de-filologia-clasica",label:"Cuadernos de Filolog\xEDa Cl\xE1sica. Estudios Griegos e Indoeuropeos (autor-a\xF1o, Espa\xF1ol)"},{value:"cultivos-tropicales",label:"Cultivos Tropicales (Espa\xF1ol)"},{value:"cultural-geographies",label:"cultural geographies"},{value:"cultural-studies-of-science-education",label:"Cultural Studies of Science Education"},{value:"culture-medicine-and-psychiatry",label:"Culture, Medicine, and Psychiatry"},{value:"cureus",label:"Cureus"},{value:"current-alzheimer-research",label:"Current Alzheimer Research"},{value:"current-gene-therapy",label:"Current Gene Therapy"},{value:"current-neurology-aktualnosci-neurologiczne",label:"Current Neurology - Aktualno\u015Bci Neurologiczne"},{value:"current-opinion-in-endocrinology-diabetes-and-obesity",label:"Current Opinion in Endocrinology, Diabetes and Obesity"},{value:"current-opinion",label:"Current Opinion journals"},{value:"current-pharmaceutical-design",label:"Current Pharmaceutical Design"},{value:"current-proteomics",label:"Current Proteomics"},{value:"current-protocols",label:"Current Protocols journals"},{value:"current-science",label:"Current Science"},{value:"current-topics-in-medicinal-chemistry",label:"Current Topics in Medicinal Chemistry"},{value:"currents-in-biblical-research",label:"Currents in Biblical Research"},{value:"cybium",label:"Cybium"},{value:"cytometry",label:"Cytometry"},{value:"data-science-journal",label:"Data Science Journal"},{value:"database",label:"Database"},{value:"de-buck",label:"De Buck (Nederlands)"},{value:"de-montfort-university-harvard",label:"De Montfort University - Harvard"},{value:"decision-sciences",label:"Decision Sciences"},{value:"demographic-research",label:"Demographic Research"},{value:"der-moderne-staat",label:"der moderne staat (Deutsch)"},{value:"dermatology-online-journal",label:"Dermatology Online Journal"},{value:"deutsche-gesellschaft-fur-psychologie",label:"Deutsche Gesellschaft f\xFCr Psychologie 5. Auflage (Deutsch)"},{value:"deutsche-sprache",label:"Deutsche Sprache (Deutsch)"},{value:"deutsches-archaologisches-institut",label:"Deutsches Arch\xE4ologisches Institut"},{value:"deutsches-arzteblatt",label:"Deutsches \xC4rzteblatt"},{value:"developing-world-bioethics",label:"Developing World Bioethics"},{value:"development-and-change",label:"Development and Change"},{value:"development-policy-review",label:"Development Policy Review"},{value:"developmental-medicine-and-child-neurology",label:"Developmental Medicine & Child Neurology"},{value:"developmental-neurobiology",label:"Developmental Neurobiology"},{value:"diabetologia",label:"Diabetologia"},{value:"diagnostico-prenatal",label:"Diagn\xF3stico Prenatal (Espa\xF1ol)"},{value:"dialisis-y-trasplante",label:"Dialisis y Trasplante (Espa\xF1ol)"},{value:"diatom-research",label:"Diatom Research"},{value:"die-bachelorarbeit-samac-et-al-in-text",label:"Die Bachelorarbeit (Samac et al.) (in-text, Deutsch)"},{value:"die-bachelorarbeit-samac-et-al-note",label:"Die Bachelorarbeit (Samac et al.) (note, Deutsch)"},{value:"digital-humanities-im-deutschsprachigen-raum",label:"Digital Humanities im deutschsprachigen Raum (Deutsch)"},{value:"digital-scholarship-in-the-humanities",label:"Digital Scholarship in the Humanities"},{value:"din-1505-2-alphanumeric",label:"DIN 1505-2 (alphanumeric, Deutsch) - standard superseded by ISO-690"},{value:"din-1505-2-numeric-alphabetical",label:"DIN 1505-2 (numeric, sorted alphabetically, Deutsch) - standard superseded by ISO-690"},{value:"din-1505-2-numeric",label:"DIN 1505-2 (numeric, Deutsch) - standard superseded by ISO-690"},{value:"din-1505-2",label:"DIN 1505-2 (author-date, Deutsch) - standard superseded by ISO-690"},{value:"diplo",label:"Diplo"},{value:"disability-and-rehabilitation",label:"Disability and Rehabilitation"},{value:"discovery-medicine",label:"Discovery Medicine"},{value:"dna-research",label:"DNA Research"},{value:"documents-d-archeologie-francaise",label:"Documents d'arch\xE9ologie fran\xE7aise (Fran\xE7ais)"},{value:"donau-universitat-krems-department-fur-e-governance-in-wirthschaft-und-verwaltung",label:"Donau-Universit\xE4t Krems - Department f\xFCr E-Governance in Wirtschaft und Verwaltung (Deutsch - \xD6sterreich)"},{value:"drug-development-research",label:"Drug Development Research"},{value:"drug-testing-and-analysis",label:"Drug Testing and Analysis"},{value:"drugs-of-today",label:"Drugs of Today"},{value:"durban-university-of-technology-harvard",label:"Durban University of Technology - Harvard"},{value:"e3s-web-of-conferences",label:"E3S Web of Conferences"},{value:"ear-and-hearing",label:"Ear and Hearing"},{value:"early-christianity",label:"Early Christianity"},{value:"early-medieval-europe",label:"Early Medieval Europe"},{value:"early-music-history",label:"Early Music History"},{value:"earth-surface-processes-and-landforms",label:"Earth Surface Processes and Landforms"},{value:"earthquake-engineering-and-structural-dynamics",label:"Earthquake Engineering & Structural Dynamics"},{value:"earthquake-spectra",label:"Earthquake Spectra"},{value:"ecclesial-practices",label:"Ecclesial Practices"},{value:"ecole-de-technologie-superieure-apa",label:"\xC9cole de technologie sup\xE9rieure - APA (Fran\xE7ais - Canada)"},{value:"ecole-pratique-des-hautes-etudes-sciences-historiques-et-philologiques",label:"\xC9cole Pratique des Hautes \xC9tudes - Sciences historiques et philologiques (Fran\xE7ais)"},{value:"ecological-entomology",label:"Ecological Entomology"},{value:"ecological-restoration",label:"Ecological Restoration"},{value:"ecology-and-society",label:"Ecology and Society"},{value:"ecology-letters",label:"Ecology Letters"},{value:"ecology-of-freshwater-fish",label:"Ecology of Freshwater Fish"},{value:"ecology",label:"Ecology"},{value:"econometrica",label:"Econometrica"},{value:"economia-y-politica",label:"Econom\xEDa y Pol\xEDtica (Espa\xF1ol - Chile)"},{value:"economic-commission-for-latin-america-and-the-caribbean",label:"Economic Commission for Latin America and the Caribbean"},{value:"economic-geology",label:"Economic Geology"},{value:"economie-et-statistique",label:"\xC9conomie et Statistique (Fran\xE7ais)"},{value:"ecoscience",label:"\xC9coscience"},{value:"ecosistemas",label:"Ecosistemas (Espa\xF1ol)"},{value:"ecosystems",label:"Ecosystems"},{value:"edward-elgar-business-and-social-sciences",label:"Edward Elgar Publishing - Business and Social Sciences"},{value:"effective-altruism-wiki",label:"Effective Altruism Wiki"},{value:"egretta",label:"Egretta (Deutsch - \xD6sterreich)"},{value:"einaudi",label:"Einaudi (Italiano)"},{value:"eksploatacja-i-niezawodnosc",label:"Eksploatacja i Niezawodnosc - Maintenance and Reliability"},{value:"el-profesional-de-la-informacion",label:"Profesional de la informaci\xF3n (Espa\xF1ol)"},{value:"electrophoresis",label:"Electrophoresis"},{value:"elementa",label:"Elementa"},{value:"elife",label:"eLife"},{value:"elsevier-harvard-without-titles",label:"Elsevier - Harvard (without titles)"},{value:"elsevier-harvard",label:"Elsevier - Harvard (with titles)"},{value:"elsevier-harvard2",label:"Elsevier - Harvard 2"},{value:"elsevier-vancouver-author-date",label:"Elsevier - Vancouver (author-date)"},{value:"elsevier-vancouver",label:"Elsevier - Vancouver"},{value:"elsevier-with-titles-alphabetical",label:"Elsevier (numeric, with titles, sorted alphabetically)"},{value:"elsevier-with-titles",label:"Elsevier (numeric, with titles)"},{value:"elsevier-without-titles",label:"Elsevier (numeric, without titles)"},{value:"embnet-journal",label:"EMBnet.journal"},{value:"embo-press",label:"EMBO Press"},{value:"emerald-harvard",label:"Emerald - Harvard"},{value:"emu-austral-ornithology",label:"Emu - Austral Ornithology"},{value:"endocrine-connections",label:"Endocrine Connections"},{value:"endocrine-press",label:"Endocrine Press"},{value:"endoscopia",label:"Endoscopia (Espa\xF1ol)"},{value:"eneuro",label:"eNeuro"},{value:"enfermeria-clinica",label:"Enfermer\xEDa Cl\xEDnica (Espa\xF1ol)"},{value:"enfermeria-intensiva",label:"Enfermer\xEDa Intensiva (Espa\xF1ol)"},{value:"engineered-regeneration",label:"Engineered Regeneration"},{value:"engineering-in-life-sciences",label:"Engineering in Life Sciences"},{value:"engineering-technology-and-applied-science-research",label:"Engineering, Technology & Applied Science Research"},{value:"ens-de-lyon-centre-d-ingenierie-documentaire",label:"ENS de Lyon - Centre d'ing\xE9nierie documentaire (Fran\xE7ais)"},{value:"entecho",label:"ENTECHO (\u010Ce\u0161tina)"},{value:"entomologia-experimentalis-et-applicata",label:"Entomologia Experimentalis et Applicata"},{value:"entomological-society-of-america",label:"Entomological Society of America"},{value:"environment-and-planning",label:"Environment and Planning"},{value:"environment-and-urbanization",label:"Environment and Urbanization"},{value:"environmental-and-engineering-geoscience",label:"Environmental & Engineering Geoscience"},{value:"environmental-chemistry",label:"Environmental Chemistry"},{value:"environmental-conservation",label:"Environmental Conservation"},{value:"environmental-health-perspectives",label:"Environmental Health Perspectives"},{value:"environmental-microbiology",label:"Environmental Microbiology"},{value:"environmental-values",label:"Environmental Values"},{value:"environnement-risques-et-sante",label:"Environnement, Risques & Sant\xE9"},{value:"ephemerides-theologicae-lovanienses",label:"Ephemerides Theologicae Lovanienses"},{value:"epidemiologie-et-sante-animale",label:"\xC9pid\xE9miologie et Sant\xE9 Animale"},{value:"epidemiology-and-infection",label:"Epidemiology & Infection"},{value:"epilepsia",label:"Epilepsia"},{value:"equine-veterinary-education",label:"Equine Veterinary Education"},{value:"equine-veterinary-journal",label:"Equine Veterinary Journal"},{value:"ergo",label:"Ergo"},{value:"ergoscience",label:"ergoscience"},{value:"errata",label:"Errata: Publica\xE7\xE3o sobre processos editoriais (Portugu\xEAs - Brasil)"},{value:"escuela-nacional-de-antropologia-e-historia-author-date",label:"Escuela Nacional de Antropolog\xEDa e Historia (autor-fecha, Espa\xF1ol - M\xE9xico)"},{value:"escuela-nacional-de-antropologia-e-historia-full-note",label:"Escuela Nacional de Antropolog\xEDa e Historia (nota completa, Espa\xF1ol - M\xE9xico)"},{value:"escuela-nacional-de-antropologia-e-historia-short-note",label:"Escuela Nacional de Antropolog\xEDa e Historia (nota corta, Espa\xF1ol - M\xE9xico)"},{value:"estuaries-and-coasts",label:"Estuaries and Coasts"},{value:"estudios-de-cultura-maya",label:"Estudios de Cultura Maya (Espa\xF1ol - M\xE9xico)"},{value:"estudios-de-fonetica-experimental",label:"Estudios de Fon\xE9tica Experimental"},{value:"estudios-hispanicos",label:"Estudios Hisp\xE1nicos (Espa\xF1ol)"},{value:"ethics-book-reviews",label:"Ethics (for book reviews)"},{value:"ethnobiology-and-conservation",label:"Ethnobiology and Conservation"},{value:"ethnobiology-letters",label:"Ethnobiology Letters"},{value:"ethnographiques-org",label:"ethnographiques.org (Fran\xE7ais)"},{value:"ethnologie-francaise",label:"Ethnologie fran\xE7aise (Fran\xE7ais)"},{value:"ethnomusicology",label:"Ethnomusicology"},{value:"etri-journal",label:"ETRI Journal"},{value:"ets-ecole-de-technologie-superieure",label:"\xC9TS - \xC9cole de technologie sup\xE9rieure (Fran\xE7ais - Canada)"},{value:"eurasian-journal-of-medical-investigation",label:"Eurasian Journal of Medical Investigation"},{value:"eurasian-journal-of-medicine-and-oncology",label:"Eurasian Journal of Medicine and Oncology"},{value:"eurointervention",label:"EuroIntervention"},{value:"europace",label:"Europace"},{value:"european-cells-and-materials",label:"European Cells & Materials"},{value:"european-journal-for-philosophy-of-religion",label:"European Journal for Philosophy of Religion"},{value:"european-journal-of-anaesthesiology",label:"European Journal of Anaesthesiology"},{value:"european-journal-of-clinical-microbiology-and-infectious-diseases",label:"European Journal of Clinical Microbiology & Infectious Diseases"},{value:"european-journal-of-emergency-medicine",label:"European Journal of Emergency Medicine"},{value:"european-journal-of-endocrinology",label:"European Journal of Endocrinology"},{value:"european-journal-of-entomology",label:"European Journal of Entomology"},{value:"european-journal-of-human-genetics",label:"European Journal of Human Genetics"},{value:"european-journal-of-immunology",label:"European Journal of Immunology"},{value:"european-journal-of-information-systems",label:"European Journal of Information Systems"},{value:"european-journal-of-international-law",label:"European Journal of International Law"},{value:"european-journal-of-microbiology-and-immunology",label:"European Journal of Microbiology & Immunology"},{value:"european-journal-of-neuroscience",label:"European Journal of Neuroscience"},{value:"european-journal-of-ophthalmology",label:"European Journal of Ophthalmology"},{value:"european-journal-of-paediatric-neurology",label:"European Journal of Paediatric Neurology"},{value:"european-journal-of-pain",label:"European Journal of Pain"},{value:"european-journal-of-political-research",label:"European Journal of Political Research"},{value:"european-journal-of-public-health",label:"European Journal of Public Health"},{value:"european-journal-of-soil-science",label:"European Journal of Soil Science"},{value:"european-journal-of-taxonomy",label:"European Journal of Taxonomy"},{value:"european-journal-of-theology",label:"European Journal of Theology"},{value:"european-journal-of-ultrasound",label:"European Journal of Ultrasound (Ultraschall in der Medizin)"},{value:"european-journal-of-vascular-and-endovascular-surgery",label:"European Journal of Vascular and Endovascular Surgery"},{value:"european-respiratory-journal",label:"European Respiratory Journal"},{value:"european-retail-research",label:"European Retail Research"},{value:"european-review-of-agricultural-economics",label:"European Review of Agricultural Economics"},{value:"european-society-of-cardiology",label:"European Society of Cardiology"},{value:"european-union-interinstitutional-style-guide-author-date",label:"European Union - Interinstitutional Style Guide (author-date)"},{value:"european-union-interinstitutional-style-guide",label:"European Union - Interinstitutional Style Guide (note)"},{value:"eva-berlin-konferenz",label:"EVA Berlin Konferenz (Deutsch)"},{value:"evidence-based-complementary-and-alternative-medicine",label:"Evidence-Based Complementary and Alternative Medicine"},{value:"evolution-and-development",label:"Evolution & Development"},{value:"evolution-letters",label:"Evolution Letters"},{value:"evolution",label:"Evolution"},{value:"evolutionary-anthropology",label:"Evolutionary Anthropology"},{value:"evolutionary-ecology-research",label:"Evolutionary Ecology Research"},{value:"excli-journal",label:"EXCLI Journal"},{value:"exercer",label:"exercer (Fran\xE7ais)"},{value:"experimental-biology-and-medicine",label:"Experimental Biology and Medicine"},{value:"experimental-biomedical-research",label:"Experimental Biomedical Research"},{value:"experimental-dermatology",label:"Experimental Dermatology"},{value:"expert-reviews-in-molecular-medicine",label:"Expert Reviews in Molecular Medicine"},{value:"express-polymer-letters",label:"eXPRESS Polymer Letters"},{value:"extracellular-vesicles-and-circulating-nucleic-acids",label:"Extracellular Vesicles and Circulating Nucleic Acids"},{value:"eye",label:"Eye"},{value:"fachhochschule-kiel-fachbereich-medien",label:"Fachhochschule Kiel - Fachbereich Medien (Deutsch)"},{value:"fachhochschule-sudwestfalen",label:"Fachhochschule S\xFCdwestfalen (Deutsch)"},{value:"fachhochschule-vorarlberg-author-date",label:"Fachhochschule Vorarlberg (author-date)"},{value:"fachhochschule-vorarlberg-note",label:"Fachhochschule Vorarlberg (note)"},{value:"facial-plastic-surgery-clinics-of-north-america",label:"Facial Plastic Surgery Clinics of North America"},{value:"facolta-teologica-dell-italia-settentrionale-milano",label:"Facolt\xE0 Teologica dell'Italia Settentrionale - Milano (titoli di riviste non abbreviati, Italiano)"},{value:"family-business-review",label:"Family Business Review"},{value:"farmeconomia",label:"Farmeconomia. Health Economics and Therapeutic Pathways"},{value:"fatigue-and-fracture-of-engineering-materials-and-structures",label:"Fatigue & Fracture of Engineering Materials & Structures"},{value:"feminist-economics",label:"Feminist Economics"},{value:"feminist-theory",label:"Feminist Theory"},{value:"ferdinand-porsche-fern-fachhochschule",label:"Ferdinand Porsche Fernfachhochschule (Deutsch - \xD6sterreich)"},{value:"fertility-and-sterility",label:"Fertility and Sterility"},{value:"finance-and-society",label:"Finance and Society"},{value:"finanzarchiv",label:"FinanzArchiv - Public Finance Analysis"},{value:"fine-focus",label:"Fine Focus"},{value:"first-break",label:"First Break"},{value:"first-monday",label:"First Monday"},{value:"fishery-bulletin",label:"Fishery Bulletin"},{value:"flavour-and-fragrance-journal",label:"Flavour and Fragrance Journal"},{value:"florida-entomologist",label:"Florida Entomologist"},{value:"focaal-journal-of-global-and-historical-anthropology",label:"Focaal\u2014Journal of Global and Historical Anthropology"},{value:"foerster-geisteswissenschaft",label:"Sascha Foerster - Geisteswissenschaft (Deutsch)"},{value:"fold-and-r",label:"FOLD&R (Fasti On Line Documents & Research)"},{value:"folia-biologica",label:"Folia Biologica"},{value:"folia-morphologia",label:"Folia Morphologia"},{value:"food-and-agriculture-organization-of-the-united-nations",label:"Food and Agriculture Organization of the United Nations"},{value:"forensic-anthropology",label:"Forensic Anthropology"},{value:"forensic-science-review",label:"Forensic Science Review"},{value:"forest-science",label:"Forest Science"},{value:"forschungsjournal-soziale-bewegungen-fjsb",label:"Forschungsjournal Soziale Bewegungen FJSB(German)"},{value:"forum-qualitative-social-research",label:"Forum: Qualitative Social Research (English)"},{value:"forum-qualitative-sozialforschung",label:"Forum: Qualitative Sozialforschung (Deutsch)"},{value:"frattura-ed-integrita-strutturale-fracture-and-structural-integrity",label:"Frattura ed Integrit\xE0 Strutturale - Fracture and Structural Integrity"},{value:"free-radical-research",label:"Free Radical Research"},{value:"freie-hochschule-stuttgart",label:"Freie Hochschule Stuttgart (Deutsch)"},{value:"freie-universitat-berlin-geographische-wissenschaften",label:"Freie Universit\xE4t Berlin - Geographische Wissenschaften (Deutsch)"},{value:"french-politics",label:"French Politics"},{value:"french1",label:"France (tous les auteurs, num\xE9rotation, Fran\xE7ais)"},{value:"french2",label:"France (auteurs et al., num\xE9rotation, Fran\xE7ais)"},{value:"french3",label:"France (tous les auteurs, auteur-date, Fran\xE7ais)"},{value:"french4",label:"France (auteurs et al., auteur-date, Fran\xE7ais)"},{value:"freshwater-biology",label:"Freshwater Biology"},{value:"freshwater-crayfish",label:"Freshwater Crayfish"},{value:"freshwater-science",label:"Freshwater Science"},{value:"friedrich-schiller-universitat-jena-medizinische-fakultat",label:"Friedrich-Schiller-Universit\xE4t Jena - Medizinische Fakult\xE4t (Deutsch)"},{value:"frontiers-in-bioscience",label:"Frontiers in Bioscience"},{value:"frontiers-in-ecology-and-the-environment",label:"Frontiers in Ecology and the Environment"},{value:"frontiers-in-optics",label:"Frontiers in Optics"},{value:"frontiers-in-physics",label:"Frontiers in Physics"},{value:"frontiers-medical-journals",label:"Frontiers medical journals"},{value:"frontiers-of-biogeography",label:"Frontiers of Biogeography"},{value:"frontiers",label:"Frontiers journals"},{value:"fundamental-and-applied-limnology",label:"Fundamental and Applied Limnology"},{value:"future-medicine",label:"Future Medicine journals"},{value:"future-science-group",label:"Future Science Group"},{value:"g-giappichelli-editore",label:"G. Giappichelli Editore (Italiano)"},{value:"g3",label:"G3: Genes, Genomes, Genetics"},{value:"gaceta-sanitaria",label:"Gaceta Sanitaria"},{value:"gaia",label:"GAIA"},{value:"galatasaray-universitesi-sosyal-bilimler-enstitusu",label:"Galatasaray \xDCniversitesi Sosyal Bilimler Enstit\xFCs\xFC"},{value:"gallia-prehistoire",label:"Gallia Pr\xE9histoire (Fran\xE7ais)"},{value:"gallia",label:"Gallia (Fran\xE7ais)"},{value:"gastroenterology",label:"Gastroenterology"},{value:"gastrointestinal-endoscopy-clinics-of-north-america",label:"Gastrointestinal Endoscopy Clinics of North America"},{value:"gastrointestinal-intervention",label:"Gastrointestinal Intervention"},{value:"gazeta-medica",label:"Gazeta M\xE9dica"},{value:"geistes-und-kulturwissenschaften-heilmann",label:"Geistes- und Kulturwissenschaften (Heilmann) (Deutsch)"},{value:"generic-style-rules-for-linguistics",label:"Generic Style Rules for Linguistics"},{value:"genes-brain-and-behavior",label:"Genes, Brain and Behavior"},{value:"genes-to-cells",label:"Genes to Cells"},{value:"geneses",label:"Gen\xE8ses: Sciences sociales et histoire (Fran\xE7ais)"},{value:"genetics-and-molecular-biology",label:"Genetics and Molecular Biology"},{value:"genetics",label:"Genetics"},{value:"genome-biology-and-evolution",label:"Genome Biology and Evolution"},{value:"genomics-and-informatics",label:"Genomics & Informatics"},{value:"geoarchaeology",label:"Geoarchaeology"},{value:"geobiology",label:"Geobiology"},{value:"geochemical-perspectives-letters",label:"Geochemical Perspectives Letters"},{value:"geochimica-et-cosmochimica-acta",label:"Geochimica et Cosmochimica Acta"},{value:"geochronometria",label:"Geochronometria"},{value:"geografia-fisica-e-dinamica-quaternaria",label:"Geografia Fisica e Dinamica Quaternaria"},{value:"geografie-sbornik-cgs",label:"Geografie Sborn\xEDk \u010CGS"},{value:"geographie-et-cultures",label:"G\xE9ographie et cultures (Fran\xE7ais)"},{value:"geographische-zeitschrift",label:"Geographische Zeitschrift"},{value:"geological-magazine",label:"Geological Magazine"},{value:"geophysical-journal-international",label:"Geophysical Journal International"},{value:"geophysics",label:"Geophysics"},{value:"geopolitics",label:"Geopolitics"},{value:"georg-august-universitat-gottingen-institut-fur-ethnologie-und-ethnologische-sammlung",label:"Georg-August-Universit\xE4t G\xF6ttingen - Institut f\xFCr Ethnologie und Ethnologische Sammlung (Deutsch)"},{value:"geriatrics-and-gerontology-international",label:"Geriatrics & Gerontology International"},{value:"geriatrie-et-psychologie-neuropsychiatrie-du-vieillissement",label:"G\xE9riatrie et Psychologie Neuropsychiatrie du Vieillissement"},{value:"german-council-of-economic-experts",label:"German Council of Economic Experts"},{value:"german-journal-of-agricultural-economics",label:"German Journal of Agricultural Economics"},{value:"german-yearbook-of-international-law",label:"German Yearbook of International Law"},{value:"geschichte-und-gesellschaft",label:"Geschichte und Gesellschaft"},{value:"gesellschaft-fur-popularmusikforschung",label:"Gesellschaft fur Popularmusikforschung (Deutsch)"},{value:"gewerblicher-rechtsschutz-und-urheberrecht",label:"Gewerblicher Rechtsschutz und Urheberrecht (Deutsch)"},{value:"gigascience",label:"GigaScience"},{value:"global-ecology-and-biogeography",label:"Global Ecology and Biogeography"},{value:"glossa",label:"Glossa"},{value:"gost-r-7-0-5-2008-numeric-alphabetical",label:"Russian GOST R 7.0.5-2008 (numeric, sorted alphabetically, \u0420\u0443\u0301\u0441\u0441\u043A\u0438\u0439)"},{value:"gost-r-7-0-5-2008-numeric",label:"Russian GOST R 7.0.5-2008 (numeric)"},{value:"gost-r-7-0-5-2008",label:"Russian GOST R 7.0.5-2008 (\u0420\u0443\u0301\u0441\u0441\u043A\u0438\u0439)"},{value:"government-and-opposition",label:"Government and Opposition"},{value:"grasas-y-aceites",label:"Grasas y Aceites"},{value:"griffith-college-harvard",label:"Griffith College - Harvard"},{value:"groundwater",label:"Groundwater"},{value:"groupe-danthropologie-et-darcheologie-funeraire",label:"Groupe d'anthropologie et d'arch\xE9ologie fun\xE9raire (Fran\xE7ais)"},{value:"guide-des-citations-references-et-abreviations-juridiques",label:"Guide des citations, r\xE9f\xE9rences et abr\xE9viations juridiques 6e \xE9dition (Fran\xE7ais)"},{value:"guide-pour-la-redaction-et-la-presentation-des-theses-a-lusage-des-doctorants",label:"Guide pour la r\xE9daction et la pr\xE9sentation des th\xE8ses \xE0 l'usage des doctorants (Fran\xE7ais)"},{value:"haaga-helia-university-of-applied-sciences-harvard",label:"Haaga-Helia ammattikorkeakoulu - Harvard"},{value:"haematologica",label:"Haematologica"},{value:"haemophilia",label:"Haemophilia"},{value:"hainan-medical-university-journal-publisher",label:"Hainan Medical University Journal Publisher"},{value:"hamburg-school-of-food-science",label:"Hamburg School of Food Science (diploma, Deutsch)"},{value:"hand",label:"HAND"},{value:"handbook-of-clinical-neurology",label:"Handbook of Clinical Neurology"},{value:"harvard-anglia-ruskin-university",label:"Anglia Ruskin University - Harvard"},{value:"harvard-bournemouth-university",label:"Bournemouth University - Harvard"},{value:"harvard-cape-peninsula-university-of-technology",label:"Cape Peninsula University of Technology - Harvard"},{value:"harvard-cardiff-university-old",label:"Cardiff University - (old) Harvard"},{value:"harvard-cite-them-right-10th-edition",label:"Cite Them Right 10th edition - Harvard"},{value:"harvard-cite-them-right-no-et-al",label:'Cite Them Right 11th edition - Harvard (no "et al.")'},{value:"harvard-cite-them-right",label:"Cite Them Right 11th edition - Harvard"},{value:"harvard-coventry-university",label:"Coventry University - Harvard"},{value:"harvard-cranfield-university",label:"Cranfield University - Harvard"},{value:"harvard-deakin-university",label:"Deakin University - Harvard"},{value:"harvard-dundalk-institute-of-technology",label:"Dundalk Institute of Technology - Harvard"},{value:"harvard-durham-university-business-school",label:"Durham University Business School - Harvard"},{value:"harvard-edge-hill-university",label:"Edge Hill University - Harvard"},{value:"harvard-european-archaeology",label:"European Archaeology - Harvard"},{value:"harvard-fachhochschule-salzburg",label:"Fachhochschule Salzburg - Harvard"},{value:"harvard-falmouth-university",label:"Falmouth University - Harvard"},{value:"harvard-gesellschaft-fur-bildung-und-forschung-in-europa",label:"Gesellschaft f\xFCr Bildung und Forschung in Europa - Harvard (Deutsch)"},{value:"harvard-imperial-college-london",label:"Imperial College London - Harvard"},{value:"harvard-institut-fur-praxisforschung-de",label:"Institut f\xFCr Praxisforschung - Harvard (Bahr & Frackmann) (Deutsch)"},{value:"harvard-kings-college-london",label:"King's College London - Harvard"},{value:"harvard-leeds-beckett-university",label:"Leeds Beckett University - Harvard"},{value:"harvard-leeds-metropolitan-university",label:"Leeds Metropolitan University - Harvard"},{value:"harvard-limerick",label:"University of Limerick (Cite it Right) - Harvard"},{value:"harvard-london-south-bank-university",label:"London South Bank University - Harvard"},{value:"harvard-manchester-business-school",label:"Manchester Business School - Harvard"},{value:"harvard-manchester-metropolitan-university",label:"Manchester Metropolitan University - Harvard"},{value:"harvard-melbourne-polytechnic",label:"Melbourne Polytechnic - Harvard"},{value:"harvard-newcastle-university",label:"Newcastle University - Harvard"},{value:"harvard-north-west-university",label:"North-West University - Harvard"},{value:"harvard-oxford-brookes-university-faculty-of-health-and-life-sciences",label:"Oxford Brookes University - Faculty of Health and Life Sciences - Harvard"},{value:"harvard-pontificia-universidad-catolica-del-ecuador",label:"Pontificia Universidad Cat\xF3lica del Ecuador (Espa\xF1ol) - Harvard"},{value:"harvard-robert-gordon-university",label:"Robert Gordon University - Harvard"},{value:"harvard-staffordshire-university",label:"Staffordshire University - Harvard"},{value:"harvard-stellenbosch-university",label:"Stellenbosch University - Harvard"},{value:"harvard-swinburne-university-of-technology",label:"Swinburne University of Technology - Harvard"},{value:"harvard-the-university-of-melbourne",label:"The University of Melbourne - Harvard"},{value:"harvard-the-university-of-northampton",label:"The University of Northampton - Harvard"},{value:"harvard-the-university-of-sheffield-school-of-east-asian-studies",label:"The University of Sheffield - School of East Asian Studies - Harvard"},{value:"harvard-the-university-of-sheffield-town-and-regional-planning",label:"The University of Sheffield - Town and Regional Planning - Harvard"},{value:"harvard-theologisches-seminar-adelshofen",label:"Theologisches Seminar Adelshofen - Harvard (Deutsch)"},{value:"harvard-universiti-teknologi-malaysia",label:"Universiti Teknologi Malaysia - Harvard"},{value:"harvard-universiti-tunku-abdul-rahman",label:"Universiti Tunku Abdul Rahman - Harvard"},{value:"harvard-university-for-the-creative-arts",label:"University for the Creative Arts - Harvard"},{value:"harvard-university-of-abertay-dundee",label:"University of Abertay Dundee - Harvard"},{value:"harvard-university-of-bath",label:"University of Bath - Harvard"},{value:"harvard-university-of-birmingham",label:"University of Birmingham - Harvard"},{value:"harvard-university-of-brighton-school-of-environment-and-technology",label:"University of Brighton School of Environment & Technology - Harvard"},{value:"harvard-university-of-cape-town",label:"University of Cape Town - Harvard"},{value:"harvard-university-of-exeter-geography",label:"University of Exeter - Geography - Harvard"},{value:"harvard-university-of-greenwich",label:"University of Greenwich - Harvard"},{value:"harvard-university-of-kent",label:"University of Kent - Harvard"},{value:"harvard-university-of-leeds",label:"University of Leeds - Harvard"},{value:"harvard-university-of-technology-sydney",label:"University of Technology Sydney - Harvard"},{value:"harvard-university-of-the-west-of-england",label:"University of the West of England (Bristol) - Harvard"},{value:"harvard-university-of-the-west-of-scotland",label:"University of the West of Scotland - Harvard"},{value:"harvard-university-of-westminster",label:"University of Westminster - Harvard"},{value:"harvard-university-of-wolverhampton",label:"University of Wolverhampton - Harvard"},{value:"harvard-university-of-worcester",label:"University of Worcester - Harvard"},{value:"harvard-york-st-john-university",label:"York St John University - Harvard (pre September 2019 entry)"},{value:"haute-ecole-de-gestion-de-geneve-iso-690",label:"Haute \xE9cole de gestion de Gen\xE8ve - ISO 690"},{value:"haute-ecole-pedagogique-fribourg",label:"Haute Ecole p\xE9dagogique Fribourg (Fran\xE7ais)"},{value:"hawaii-international-conference-on-system-sciences-proceedings",label:"Hawaii International Conference on System Sciences Proceedings"},{value:"health-and-human-rights-journal",label:"Health and Human Rights Journal"},{value:"health-and-social-care-in-the-community",label:"Health & Social Care in the Community"},{value:"health-economics-policy-and-law",label:"Health Economics, Policy and Law"},{value:"health-economics",label:"Health Economics"},{value:"health-education-england-harvard",label:"Health Education England - Harvard"},{value:"health-education-research",label:"Health Education Research"},{value:"health-policy-and-planning",label:"Health Policy and Planning"},{value:"health-reform-observer-observatoire-des-reformes-de-sante",label:"Health Reform Observer - Observatoire des R\xE9formes de Sant\xE9"},{value:"health-sports-and-rehabilitation-medicine",label:"Health, Sports & Rehabilitation Medicine"},{value:"heart-failure-clinics",label:"Heart Failure Clinics"},{value:"heart-rhythm",label:"Heart Rhythm"},{value:"heidelberg-university-faculty-of-medicine",label:"Heidelberg University - Faculty of Medicine (Universit\xE4t Heidelberg - Medizinische Fakult\xE4t Heidelberg)"},{value:"heiliger-dienst",label:"Heiliger Dienst (Deutsch)"},{value:"helvetica-chimica-acta",label:"Helvetica Chimica Acta"},{value:"hematology-oncology-clinics-of-north-america",label:"Hematology/Oncology Clinics of North America"},{value:"hemijska-industrija",label:"Hemijska industrija"},{value:"henoch",label:"Henoch"},{value:"hepatology",label:"Hepatology"},{value:"heredity",label:"Heredity"},{value:"herpetologica",label:"Herpetologica"},{value:"hiob-ludolf-centre-for-ethiopian-studies-long-names",label:"Hiob Ludolf Centre for Ethiopian Studies (long names)"},{value:"hiob-ludolf-centre-for-ethiopian-studies-with-url-doi",label:"Hiob Ludolf Centre for Ethiopian Studies (with URL/DOI)"},{value:"hiob-ludolf-centre-for-ethiopian-studies",label:"Hiob Ludolf Centre for Ethiopian Studies"},{value:"hipertension-y-riesgo-vascular",label:"Hipertensi\xF3n y Riesgo Vascular (Espa\xF1ol)"},{value:"histoire-at-politique",label:"Histoire@Politique. Politique, culture, soci\xE9t\xE9 (Fran\xE7ais)"},{value:"histoire-et-mesure",label:"Histoire & Mesure (Fran\xE7ais)"},{value:"histopathology",label:"Histopathology"},{value:"historia-scribere",label:"historia-scribere (Deutsch)"},{value:"historical-materialism",label:"Historical Materialism"},{value:"historical-social-research",label:"Historical Social Research"},{value:"historio-plus",label:"historioPLUS (Deutsch - \xD6sterreich)"},{value:"history-and-theory",label:"History and Theory"},{value:"history-australia",label:"History Australia"},{value:"history-of-the-human-sciences",label:"History of the Human Sciences"},{value:"hochschule-bonn-rhein-sieg",label:"Hochschule Bonn-Rhein-Sieg (Harvard, Deutsch)"},{value:"hochschule-fur-soziale-arbeit-fhnw",label:"Hochschule f\xFCr Soziale Arbeit FHNW (Deutsch - Schweiz)"},{value:"hochschule-fur-wirtschaft-und-recht-berlin",label:"Hochschule f\xFCr Wirtschaft und Recht Berlin (Deutsch)"},{value:"hochschule-hannover-soziale-arbeit",label:"Hochschule Hannover - Soziale Arbeit (Deutsch)"},{value:"hochschule-munchen-fakultat-fur-angewandte-sozialwissenschaften",label:"Hochschule M\xFCnchen - Fakult\xE4t f\xFCr Angewandte Sozialwissenschaften (Deutsch)"},{value:"hochschule-osnabruck-fakultat-agrarwissenschaften-und-landschaftsarchitektur",label:"Hochschule Osnabr\xFCck - Fakult\xE4t Agrarwissenschaften und Landschaftsarchitektur (Deutsch)"},{value:"hochschule-pforzheim-fakultat-fur-wirtschaft-und-recht",label:"Hochschule Pforzheim - Fakult\xE4t f\xFCr Wirtschaft und Recht (Deutsch)"},{value:"hong-kong-journal-of-radiology",label:"Hong Kong Journal of Radiology"},{value:"hospital-a-domicilio",label:"Hospital a Domicilio"},{value:"housing-studies",label:"Housing Studies"},{value:"hpb",label:"HPB"},{value:"human-brain-mapping",label:"Human Brain Mapping"},{value:"human-ecology",label:"Human Ecology"},{value:"human-molecular-genetics",label:"Human Molecular Genetics"},{value:"human-mutation",label:"Human Mutation"},{value:"human-reproduction-update",label:"Human Reproduction Update"},{value:"human-reproduction",label:"Human Reproduction"},{value:"human-resource-management-journal",label:"Human Resource Management Journal"},{value:"human-rights-law-review",label:"Human Rights Law Review"},{value:"human-wildlife-interactions",label:"Human-Wildlife Interactions"},{value:"humanistica-lovaniensia-journal-of-neo-latin-studies",label:"Humanistica Lovaniensia. Journal of Neo-Latin Studies"},{value:"humboldt-state-university-environmental-resources-engineering",label:"Humboldt State University - Environmental Resources Engineering"},{value:"hydrobiologia",label:"Hydrobiologia"},{value:"hydrological-processes",label:"Hydrological Processes"},{value:"hydrological-sciences-journal",label:"Hydrological Sciences Journal"},{value:"hypertension-research",label:"Hypertension Research"},{value:"hypotheses-in-the-life-sciences",label:"Hypotheses in the Life Sciences"},{value:"hystrix-the-italian-journal-of-mammalogy",label:"Hystrix, the Italian Journal of Mammalogy"},{value:"iawa-journal",label:"IAWA Journal"},{value:"ib-tauris-note",label:"I.B. Tauris (note)"},{value:"ibis",label:"Ibis"},{value:"ices-journal-of-marine-science",label:"ICES Journal of Marine Science"},{value:"idojaras-quarterly-journal-of-the-hungarian-meteorological-service",label:"Id\u0151j\xE1r\xE1s - Quarterly Journal of the Hungarian Meteorological Service"},{value:"ie-comunicaciones",label:"IE Comunicaciones"},{value:"ieee-transactions-on-medical-imaging",label:"IEEE Transactions on Medical Imaging"},{value:"ieee-with-url",label:"IEEE (with URL)"},{value:"ieee",label:"IEEE"},{value:"iforest",label:"iForest"},{value:"igaku-toshokan",label:"Igaku Toshokan (\u65E5\u672C\u8A9E)"},{value:"iica-catie",label:"IICA-CATIE (Espa\xF1ol)"},{value:"ilahiyat-studies",label:"Ilahiyat Studies (full note)"},{value:"im-gesprach",label:"Im Gespr\xE4ch - Hefte der Martin Buber-Gesellschaft (Deutsch)"},{value:"incontext-studies-in-translation-and-interculturalism",label:"INContext: Studies in Translation and Interculturalism"},{value:"indian-dermatology-online-journal",label:"Indian Dermatology Online Journal"},{value:"indian-journal-of-medical-research",label:"Indian Journal of Medical Research"},{value:"indian-journal-of-orthopaedics",label:"Indian Journal of Orthopaedics"},{value:"indian-journal-of-physics",label:"Indian Journal of Physics"},{value:"indian-journal-of-traditional-knowledge",label:"Indian Journal of Traditional Knowledge"},{value:"indiana",label:"INDIANA"},{value:"indoor-air",label:"Indoor Air"},{value:"industrial-relations",label:"Industrial Relations"},{value:"infectio",label:"Infectio (Espa\xF1ol)"},{value:"infectious-disease-clinics-of-north-america",label:"Infectious Disease Clinics of North America"},{value:"inflammatory-bowel-diseases",label:"Inflammatory Bowel Diseases"},{value:"influenza-and-other-respiratory-viruses",label:"Influenza and Other Respiratory Viruses"},{value:"infoclio-de-kurzbelege",label:"infoclio.ch (Kurzbelege, Deutsch - Schweiz)"},{value:"infoclio-de",label:"infoclio.ch (Deutsch - Schweiz)"},{value:"infoclio-fr-nocaps",label:"infoclio.ch (sans majuscules, Fran\xE7ais)"},{value:"infoclio-fr-smallcaps",label:"infoclio.ch (petites majuscules, Fran\xE7ais)"},{value:"infomin",label:"Infomin"},{value:"informal-logic",label:"Informal Logic"},{value:"ingenieria-agricola",label:"Ingenier\xEDa Agr\xEDcola (Espa\xF1ol)"},{value:"innovations-therapeutiques-en-oncologie",label:"Innovations & Th\xE9rapeutiques en Oncologie"},{value:"instap-academic-press",label:"INSTAP Academic Press"},{value:"institut-francais-darcheologie-orientale-arab-studies",label:"Institut fran\xE7ais d'arch\xE9ologie orientale - Arab Studies (English)"},{value:"institut-francais-darcheologie-orientale-en",label:"Institut fran\xE7ais d'arch\xE9ologie orientale - Egyptology (English)"},{value:"institut-francais-darcheologie-orientale-etudes-arabes",label:"Institut fran\xE7ais d'arch\xE9ologie orientale - \xE9tudes arabes (Fran\xE7ais)"},{value:"institut-francais-darcheologie-orientale",label:"Institut fran\xE7ais d'arch\xE9ologie orientale - arch\xE9ologie et \xE9gyptologie (Fran\xE7ais)"},{value:"institut-national-de-la-recherche-scientifique-sciences-sociales",label:"Institut national de la recherche scientifique - Sciences sociales (author-date, Fran\xE7ais)"},{value:"institut-national-de-recherches-archeologiques-preventives",label:"Institut national de recherches arch\xE9ologiques pr\xE9ventives (Fran\xE7ais)"},{value:"institut-national-de-sante-publique-du-quebec-napp",label:"Institut national de sant\xE9 publique du Qu\xE9bec - NAPP (Fran\xE7ais - Canada)"},{value:"institut-national-de-sante-publique-du-quebec-topo",label:"Institut national de sant\xE9 publique du Qu\xE9bec - TOPO (Fran\xE7ais - Canada)"},{value:"institut-pertanian-bogor",label:"Institut Pertanian Bogor: Pedoman Penulisan Karya Ilmiah Edisi ke-3 (Bahasa Indonesia)"},{value:"institut-teknologi-bandung-sekolah-pascasarjana",label:"Institut Teknologi Bandung - Sekolah Pascasarjana"},{value:"institute-for-operations-research-and-the-management-sciences",label:"Institute for Operations Research and the Management Sciences"},{value:"institute-of-mathematical-statistics",label:"Institute of Mathematical Statistics journals"},{value:"institute-of-mathematics-and-its-applications",label:"Institute of Mathematics and its Applications"},{value:"institute-of-physics-harvard",label:"Institute of Physics - Harvard"},{value:"institute-of-physics-numeric",label:"Institute of Physics (numeric)"},{value:"instituto-brasileiro-de-informacao-em-ciencia-e-tecnologia-abnt-initials",label:"Instituto Brasileiro de Informa\xE7\xE3o em Ci\xEAncia e Tecnologia - ABNT (autoria abreviada)"},{value:"instituto-brasileiro-de-informacao-em-ciencia-e-tecnologia-abnt",label:"Instituto Brasileiro de Informa\xE7\xE3o em Ci\xEAncia e Tecnologia - ABNT (autoria completa)"},{value:"instituto-de-investigaciones-sobre-la-universidad-y-la-educacion-moderno",label:"Instituto de Investigaciones sobre la Universidad y la Educaci\xF3n - Moderno (autor-fecha, Espa\xF1ol)"},{value:"instituto-de-pesquisas-energeticas-e-nucleares",label:"Instituto de Pesquisas Energ\xE9ticas e Nucleares (Portugu\xEAs - Brasil)"},{value:"instituto-de-pesquisas-tecnologicas",label:"Instituto de Pesquisas Tecnol\xF3gicas (Portugu\xEAs - Brasil)"},{value:"instituto-superior-de-teologia-de-las-islas-canarias",label:"Instituto Superior de Teolog\xEDa de las Islas Canarias (Espa\xF1ol)"},{value:"integrated-science-publishing-journals",label:"Integrated Science Publishing journals"},{value:"integrative-and-comparative-biology",label:"Integrative & Comparative Biology"},{value:"inter-research-science-center",label:"Inter-Research Science Center"},{value:"inter-ro",label:"INTER: Romanian Review for Theological and Religious Studies"},{value:"interaction-design-and-architectures",label:"Interaction Design & Architecture(s)"},{value:"interactive-cardiovascular-and-thoracic-surgery",label:"Interactive CardioVascular and Thoracic Surgery"},{value:"interdisziplinare-anthropologie",label:"Interdisziplin\xE4re Anthropologie (Deutsch)"},{value:"interdisziplinare-zeitschrift-fur-technologie-und-lernen",label:"Interdisziplin\xE4re Zeitschrift f\xFCr Technologie und Lernen (Deutsch)"},{value:"interkulturelle-germanistik-gottingen",label:"Interkulturelle Germanistik G\xF6ttingen (Deutsch)"},{value:"international-atomic-energy-agency",label:"International Atomic Energy Agency"},{value:"international-biodeterioration-and-biodegradation",label:"International Biodeterioration & Biodegradation"},{value:"international-brazilian-journal-of-urology",label:"International Brazilian Journal Of Urology"},{value:"international-conference-on-information-systems-development",label:"International Conference on Information Systems Development"},{value:"international-development-policy",label:"International Development Policy"},{value:"international-energy-agency-organisation-for-economic-co-operation-and-development",label:"International Energy Agency - Organisation for Economic Co-operation and Development"},{value:"international-islamic-university-malaysia-ahmad-ibrahim-kulliyyah-of-laws",label:"International Islamic University Malaysia - Ahmad Ibrahim Kulliyyah of Laws"},{value:"international-journal-for-numerical-methods-in-biomedical-engineering",label:"International Journal for Numerical Methods in Biomedical Engineering"},{value:"international-journal-of-audiology",label:"International Journal of Audiology"},{value:"international-journal-of-automotive-technology",label:"International Journal of Automotive Technology"},{value:"international-journal-of-cancer",label:"International Journal of Cancer"},{value:"international-journal-of-circuit-theory-and-applications",label:"International Journal of Circuit Theory and Applications"},{value:"international-journal-of-climatology",label:"International Journal of Climatology"},{value:"international-journal-of-clinical-research",label:"International Journal of Clinical Research"},{value:"international-journal-of-cosmetic-science",label:"International Journal of Cosmetic Science"},{value:"international-journal-of-electrochemical-science",label:"International Journal of Electrochemical Science"},{value:"international-journal-of-electronic-commerce",label:"International Journal of Electronic Commerce"},{value:"international-journal-of-epidemiology",label:"International Journal of Epidemiology"},{value:"international-journal-of-exercise-science",label:"International Journal of Exercise Science"},{value:"international-journal-of-food-science-and-technology",label:"International Journal of Food Science & Technology"},{value:"international-journal-of-geriatric-psychiatry",label:"International Journal of Geriatric Psychiatry"},{value:"international-journal-of-humanoid-robotics",label:"International Journal of Humanoid Robotics"},{value:"international-journal-of-language-and-communication-disorders",label:"International Journal of Language & Communication Disorders"},{value:"international-journal-of-learner-corpus-research",label:"International Journal of Learner Corpus Research"},{value:"international-journal-of-lexicography",label:"International Journal of Lexicography"},{value:"international-journal-of-management-reviews",label:"International Journal of Management Reviews"},{value:"international-journal-of-nuclear-security",label:"International Journal of Nuclear Security"},{value:"international-journal-of-obstetric-anesthesia",label:"International Journal of Obstetric Anesthesia"},{value:"international-journal-of-occupational-medicine-and-environmental-health",label:"International Journal of Occupational Medicine and Environmental Health"},{value:"international-journal-of-oral-and-maxillofacial-surgery",label:"International Journal of Oral and Maxillofacial Surgery"},{value:"international-journal-of-osteoarchaeology",label:"International Journal of Osteoarchaeology"},{value:"international-journal-of-plant-sciences",label:"International Journal of Plant Sciences"},{value:"international-journal-of-polymer-analysis-and-characterization",label:"International Journal of Polymer Analysis and Characterization"},{value:"international-journal-of-polymeric-materials-and-polymeric-biomaterials",label:"International Journal of Polymeric Materials and Polymeric Biomaterials"},{value:"international-journal-of-population-data-science",label:"International Journal of Population Data Science"},{value:"international-journal-of-quantum-chemistry",label:"International Journal of Quantum Chemistry"},{value:"international-journal-of-radiation-oncology-biology-physics",label:"International Journal of Radiation Oncology, Biology, Physics"},{value:"international-journal-of-research-in-exercise-physiology",label:"International Journal of Research in Exercise Physiology"},{value:"international-journal-of-simulation-modelling",label:"International Journal of Simulation Modelling"},{value:"international-journal-of-spatial-data-infrastructures-research",label:"International Journal of Spatial Data Infrastructures Research"},{value:"international-journal-of-sports-medicine",label:"International Journal of Sport Medicine"},{value:"international-journal-of-urban-and-regional-research",label:"International Journal of Urban and Regional Research"},{value:"international-journal-of-wildland-fire",label:"International Journal of Wildland Fire"},{value:"international-microbiology",label:"International Microbiology"},{value:"international-organization",label:"International Organization"},{value:"international-pig-veterinary-society-congress-proceedings",label:"International Pig Veterinary Society Congress Proceedings"},{value:"international-review-of-the-red-cross",label:"International Review of the Red Cross"},{value:"international-security",label:"International Security"},{value:"international-studies-association",label:"International Studies Association"},{value:"international-union-of-crystallography",label:"International Union of Crystallography journals"},{value:"international-union-of-forest-research-organizations-headquarters",label:"International Union of Forest Research Organizations - Headquarters"},{value:"inventaire-general-du-patrimoine-culturel-iso-690-full-note-with-ibid",label:"Inventaire g\xE9n\xE9ral du patrimoine culturel - ISO-690 (full note, with Ibid., Fran\xE7ais)"},{value:"inventaire-general-du-patrimoine-culturel-iso-690-full-note",label:"Inventaire g\xE9n\xE9ral du patrimoine culturel - ISO-690 (full note, Fran\xE7ais)"},{value:"inventaire-general-du-patrimoine-culturel-iso-690-note",label:"Inventaire g\xE9n\xE9ral du patrimoine culturel - ISO-690 (note, Fran\xE7ais)"},{value:"invertebrate-biology",label:"Invertebrate Biology"},{value:"investigative-radiology",label:"Investigative Radiology"},{value:"invisu",label:"InVisu"},{value:"ios-press-books",label:"IOS Press (books)"},{value:"ipag-business-school-apa",label:"IPAG Business School - APA"},{value:"iran-manual-of-style",label:"Iran Manual of Style - \u0634\u06CC\u0648\u0647\u200C\u0646\u0627\u0645\u0647 \u0627\u06CC\u0631\u0627\u0646 (\u0641\u0627\u0631\u0633\u06CC)"},{value:"iranian-journal-of-basic-medical-sciences",label:"Iranian Journal of Basic Medical Sciences"},{value:"iranian-journal-of-pharmaceutical-research",label:"Iranian Journal of Pharmaceutical Research"},{value:"irish-historical-studies",label:"Irish Historical Studies"},{value:"isabella-stewart-gardner-museum",label:"Isabella Stewart Gardner Museum"},{value:"isnad-dipnotlu",label:"\u0130SNAD At\u0131f Sistemi 2. Edisyon (dipnotlu)"},{value:"isnad-metinici",label:"\u0130SNAD At\u0131f Sistemi 2. Edisyon (metini\xE7i)"},{value:"isnad",label:"\u0130SNAD At\u0131f Sistemi 1. Edisyon (dipnotlu)"},{value:"iso690-author-date-cs",label:"ISO-690 (author-date, \u010Ce\u0161tina)"},{value:"iso690-author-date-de",label:"ISO-690 (author-date, Deutsch)"},{value:"iso690-author-date-en",label:"ISO-690 (author-date, English)"},{value:"iso690-author-date-es",label:"ISO-690 (author-date, Espa\xF1ol)"},{value:"iso690-author-date-fr-no-abstract",label:"ISO-690 (author-date, no abstract, Fran\xE7ais)"},{value:"iso690-author-date-fr",label:"ISO-690 (author-date, Fran\xE7ais)"},{value:"iso690-author-date-pt-br",label:"ISO-690 (author-date, Portugu\xEAs - Brasil)"},{value:"iso690-author-date-sk",label:"ISO-690 (author-date, Sloven\u010Dina)"},{value:"iso690-full-note-cs",label:"ISO-690 (full note, \u010Ce\u0161tina)"},{value:"iso690-full-note-sk",label:"ISO-690 (full note, Sloven\u010Dina)"},{value:"iso690-full-note-with-ibid-ro",label:"ISO-690 (full note, with Ibid., Rom\xE2n\u0103)"},{value:"iso690-note-cs",label:"ISO-690 (note, without bibliography, \u010Ce\u0161tina)"},{value:"iso690-note-fr",label:"ISO-690 (note, no abstract, Fran\xE7ais)"},{value:"iso690-numeric-brackets-cs",label:"ISO-690 (numeric, brackets, \u010Ce\u0161tina)"},{value:"iso690-numeric-cs",label:"ISO-690 (numeric, parentheses, \u010Ce\u0161tina)"},{value:"iso690-numeric-en",label:"ISO-690 (numeric, English)"},{value:"iso690-numeric-fr",label:"ISO-690 (numeric, Fran\xE7ais)"},{value:"iso690-numeric-lt",label:"ISO-690 (numeric, Lietuvi\u0173 kalba)"},{value:"iso690-numeric-sk",label:"ISO-690 (numeric, Sloven\u010Dina)"},{value:"israel-medical-association-journal",label:"Israel Medical Association Journal"},{value:"istanbul-medical-journal",label:"\u0130stanbul Medical Journal"},{value:"istanbul-universitesi-sosyal-bilimler-enstitusu",label:"\u0130stanbul \xDCniversitesi Sosyal Bilimler Enstit\xFCs\xFC (T\xFCrk\xE7e)"},{value:"italian-journal-of-agronomy",label:"Italian Journal of Agronomy"},{value:"italus-hortus",label:"Italus Hortus"},{value:"ithaque",label:"Ithaque (Fran\xE7ais - Canada)"},{value:"iubmb-life",label:"IUBMB Life"},{value:"ius-ecclesiae",label:"Ius Ecclesiae"},{value:"izmir-katip-celebi-universitesi-sosyal-bilimler-enstitusu",label:"\u0130zmir Katip \xC7elebi \xDCniversitesi - Sosyal Bilimler Enstit\xFCs\xFC (T\xFCrk\xE7e)"},{value:"jacc-cardiovascular-imaging",label:"JACC: Cardiovascular Imaging"},{value:"jacc-cardiovascular-interventions",label:"JACC: Cardiovascular Interventions"},{value:"jahrbuch-der-osterreichischen-byzantinischen-gesellschaft",label:"Jahrbuch der \xD6sterreichischen Byzantinischen Gesellschaft"},{value:"jahrbuch-fur-evangelikale-theologie",label:"Jahrbuch f\xFCr evangelikale Theologie (Deutsch)"},{value:"japanese-journal-of-applied-physics",label:"Japanese Journal of Applied Physics"},{value:"javnost-the-public",label:"Javnost - The Public"},{value:"jci-insight",label:"JCI Insight"},{value:"jcom-journal-of-science-communication",label:"JCOM: Journal of Science Communication"},{value:"john-benjamins-publishing-company-iconicity-in-language-and-literature",label:"John Benjamins Publishing Company - Iconicity in Language and Literature"},{value:"john-benjamins-publishing-company-linguistik-aktuell-linguistics-today",label:"John Benjamins Publishing Company - Linguistik Aktuell/Linguistics Today"},{value:"johnson-matthey-technology-review",label:"Johnson Matthey Technology Review"},{value:"journal-and-proceedings-of-the-royal-society-of-new-south-wales",label:"Journal and Proceedings of the Royal Society of New South Wales"},{value:"journal-de-la-societe-des-americanistes",label:"Journal de la Soci\xE9t\xE9 des am\xE9ricanistes"},{value:"journal-de-la-societe-des-oceanistes",label:"Journal de la Soci\xE9t\xE9 des Oc\xE9anistes"},{value:"journal-for-the-history-of-astronomy",label:"Journal for the History of Astronomy"},{value:"journal-for-the-study-of-the-new-testament",label:"Journal for the Study of the New Testament"},{value:"journal-for-veterinary-medicine-biotechnology-and-biosafety",label:"Journal for Veterinary Medicine, Biotechnology and Biosafety"},{value:"journal-fur-kulturpflanzen-journal-of-cultivated-plants",label:"Journal f\xFCr Kulturpflanzen - Journal of Cultivated Plants"},{value:"journal-fur-kunstgeschichte",label:"Journal f\xFCr Kunstgeschichte"},{value:"journal-of-accounting-research",label:"Journal of Accounting Research"},{value:"journal-of-acoustics",label:"Journal of Acoustics"},{value:"journal-of-adolescent-health",label:"Journal of Adolescent Health"},{value:"journal-of-advertising-research",label:"Journal of Advertising Research"},{value:"journal-of-agricultural-and-applied-economics",label:"Journal of Agricultural and Applied Economics"},{value:"journal-of-agricultural-and-resource-economics",label:"Journal of Agricultural and Resource Economics"},{value:"journal-of-alzheimers-disease",label:"Journal of Alzheimer's Disease"},{value:"journal-of-analytical-toxicology",label:"Journal of Analytical Toxicology"},{value:"journal-of-animal-physiology-and-animal-nutrition",label:"Journal of Animal Physiology and Animal Nutrition"},{value:"journal-of-animal-science",label:"Journal of Animal Science"},{value:"journal-of-antimicrobial-chemotherapy",label:"Journal of Antimicrobial Chemotherapy"},{value:"journal-of-aoac-international",label:"Journal of AOAC International"},{value:"journal-of-applied-animal-science",label:"Journal of Applied Animal Science"},{value:"journal-of-applied-clinical-medical-physics",label:"Journal of Applied Clinical Medical Physics"},{value:"journal-of-applied-entomology",label:"Journal of Applied Entomology"},{value:"journal-of-applied-pharmaceutical-research",label:"Journal of Applied Pharmaceutical Research"},{value:"journal-of-applied-philosophy",label:"Journal of Applied Philosophy"},{value:"journal-of-applied-polymer-science",label:"Journal of Applied Polymer Science"},{value:"journal-of-archaeological-research",label:"Journal of Archaeological Research"},{value:"journal-of-atrial-fibrillation",label:"Journal of Atrial Fibrillation"},{value:"journal-of-australian-strength-and-conditioning",label:"Journal of Australian Strength & Conditioning"},{value:"journal-of-avian-biology",label:"Journal of Avian Biology"},{value:"journal-of-basic-microbiology",label:"Journal of Basic Microbiology"},{value:"journal-of-biological-chemistry",label:"The Journal of Biological Chemistry"},{value:"journal-of-biological-regulators-and-homeostatic-agents",label:"Journal of Biological Regulators & Homeostatic Agents"},{value:"journal-of-biomedical-materials-research-part-a",label:"Journal of Biomedical Materials Research Part A"},{value:"journal-of-biosciences",label:"Journal of Biosciences"},{value:"journal-of-bone-and-mineral-research",label:"Journal of Bone and Mineral Research"},{value:"journal-of-brachial-plexus-and-peripheral-nerve-injury",label:"Journal of Brachial Plexus and Peripheral Nerve Injury"},{value:"journal-of-breast-cancer",label:"Journal of Breast Cancer"},{value:"journal-of-burn-care-and-research",label:"Journal of Burn Care & Research"},{value:"journal-of-business-logistics",label:"Journal of Business Logistics"},{value:"journal-of-cachexia-sarcopenia-and-muscle",label:"Journal of Cachexia, Sarcopenia and Muscle"},{value:"journal-of-cardiothoracic-and-vascular-anesthesia",label:"Journal of Cardiothoracic and Vascular Anesthesia"},{value:"journal-of-cellular-and-molecular-medicine",label:"Journal of Cellular and Molecular Medicine"},{value:"journal-of-cellular-biochemistry",label:"Journal of Cellular Biochemistry"},{value:"journal-of-chemistry-and-chemical-engineering",label:"Journal of Chemistry and Chemical Engineering"},{value:"journal-of-chemometrics",label:"Journal of Chemometrics"},{value:"journal-of-clinical-and-translational-science",label:"Journal of Clinical and Translational Science"},{value:"journal-of-clinical-neurology",label:"Journal of Clinical Neurology"},{value:"journal-of-clinical-neurophysiology",label:"Journal of Clinical Neurophysiology"},{value:"journal-of-clinical-oncology",label:"Journal of Clinical Oncology"},{value:"journal-of-clinical-rheumatology",label:"Journal of Clinical Rheumatology"},{value:"journal-of-clinical-sleep-medicine",label:"Journal of Clinical Sleep Medicine"},{value:"journal-of-combinatorics",label:"Journal of Combinatorics"},{value:"journal-of-common-market-studies",label:"Journal of Common Market Studies"},{value:"journal-of-comparative-pathology",label:"Journal of Comparative Pathology"},{value:"journal-of-computational-chemistry",label:"Journal of Computational Chemistry"},{value:"journal-of-computer-applications-in-archaeology",label:"Journal of Computer Applications in Archaeology"},{value:"journal-of-computer-assisted-tomography",label:"Journal of Computer Assisted Tomography"},{value:"journal-of-computer-information-systems",label:"Journal of Computer Information Systems"},{value:"journal-of-consumer-research",label:"Journal of Consumer Research"},{value:"journal-of-contemporary-medicine",label:"Journal of Contemporary Medicine"},{value:"journal-of-contemporary-water-research-and-education",label:"Journal of Contemporary Water Research and Education"},{value:"journal-of-crohns-and-colitis-supplements",label:"Journal of Crohn's and Colitis Supplements"},{value:"journal-of-crohns-and-colitis",label:"Journal of Crohn's and Colitis"},{value:"journal-of-dairy-science",label:"Journal of Dairy Science"},{value:"journal-of-dental-research",label:"Journal of Dental Research"},{value:"journal-of-early-christian-studies",label:"Journal of Early Christian Studies"},{value:"journal-of-economic-impact",label:"Journal of Economic Impact"},{value:"journal-of-egyptian-history",label:"Journal of Egyptian History"},{value:"journal-of-elections-public-opinion-and-parties",label:"Journal of Elections, Public Opinion & Parties"},{value:"journal-of-endodontics",label:"Journal of Endodontics"},{value:"journal-of-environmental-science-and-health-part-b",label:"Journal of Environmental Science and Health, Part B"},{value:"journal-of-ethnobiology",label:"Journal of Ethnobiology"},{value:"journal-of-european-public-policy",label:"Journal of European Public Policy"},{value:"journal-of-evolution-and-health",label:"Journal of Evolution and Health"},{value:"journal-of-evolutionary-biology",label:"Journal of Evolutionary Biology"},{value:"journal-of-experimental-botany",label:"Journal of Experimental Botany"},{value:"journal-of-field-ornithology",label:"Journal of Field Ornithology"},{value:"journal-of-finance",label:"Journal of Finance"},{value:"journal-of-financial-and-quantitative-analysis",label:"Journal of Financial and Quantitative Analysis"},{value:"journal-of-fish-biology",label:"Journal of Fish Biology"},{value:"journal-of-food-protection",label:"Journal of Food Protection"},{value:"journal-of-foraminiferal-research",label:"Journal of Foraminiferal Research"},{value:"journal-of-forensic-sciences",label:"Journal of Forensic Sciences"},{value:"journal-of-frailty-and-aging",label:"Journal of Frailty & Aging"},{value:"journal-of-geriatric-psychiatry-and-neurology",label:"Journal of Geriatric Psychiatry and Neurology"},{value:"journal-of-glaciology",label:"Journal of Glaciology"},{value:"journal-of-global-health",label:"Journal of Global Health"},{value:"journal-of-health-care-for-the-poor-and-underserved",label:"Journal of Health Care for the Poor and Underserved"},{value:"journal-of-hearing-science",label:"Journal of Hearing Science"},{value:"journal-of-historical-linguistics",label:"Journal of Historical Linguistics"},{value:"journal-of-human-evolution",label:"Journal of Human Evolution"},{value:"journal-of-human-rights",label:"Journal of Human Rights"},{value:"journal-of-hypertension",label:"Journal of Hypertension"},{value:"journal-of-industrial-and-engineering-chemistry",label:"Journal of Industrial and Engineering Chemistry"},{value:"journal-of-industrial-ecology",label:"Journal of Industrial Ecology"},{value:"journal-of-infection",label:"Journal of Infection"},{value:"journal-of-infectious-diseases",label:"Journal of Infectious Diseases"},{value:"journal-of-information-technology",label:"Journal of Information Technology"},{value:"journal-of-institutional-and-theoretical-economics",label:"Journal of Institutional and Theoretical Economics"},{value:"journal-of-instrumentation",label:"Journal of Instrumentation"},{value:"journal-of-integrated-omics",label:"Journal of Integrated OMICS"},{value:"journal-of-interactive-marketing",label:"Journal of Interactive Marketing"},{value:"journal-of-intercultural-studies",label:"Journal of Intercultural Studies"},{value:"journal-of-internal-medicine",label:"Journal of Internal Medicine"},{value:"journal-of-international-business-studies",label:"Journal of International Business Studies"},{value:"journal-of-international-economic-law",label:"Journal of International Economic Law"},{value:"journal-of-international-peacekeeping",label:"Journal of International Peacekeeping"},{value:"journal-of-international-relations-and-development",label:"Journal of International Relations and Development"},{value:"journal-of-investigative-dermatology",label:"Journal of Investigative Dermatology"},{value:"journal-of-jewish-studies",label:"Journal of Jewish Studies"},{value:"journal-of-korean-neurosurgical-society",label:"Journal of Korean Neurosurgical Society"},{value:"journal-of-leukocyte-biology",label:"Journal of Leukocyte Biology"},{value:"journal-of-limnology",label:"Journal of Limnology"},{value:"journal-of-linguistics",label:"Journal of Linguistics"},{value:"journal-of-lipid-research",label:"Journal of Lipid Research"},{value:"journal-of-magnetic-resonance-imaging",label:"Journal Of Magnetic Resonance Imaging"},{value:"journal-of-mammalogy",label:"Journal of Mammalogy"},{value:"journal-of-management-information-systems",label:"Journal of Management Information Systems"},{value:"journal-of-management-studies",label:"Journal of Management Studies"},{value:"journal-of-management",label:"Journal of Management"},{value:"journal-of-materials-research",label:"Journal of Materials Research"},{value:"journal-of-mechanical-science-and-technology",label:"Journal of Mechanical Science and Technology"},{value:"journal-of-medical-genetics",label:"Journal of Medical Genetics"},{value:"journal-of-medical-internet-research",label:"Journal of Medical Internet Research"},{value:"journal-of-microbiology-and-biotechnology",label:"Journal of Microbiology and Biotechnology"},{value:"journal-of-microbiology",label:"Journal of Microbiology"},{value:"journal-of-minimally-invasive-gynecology",label:"Journal of Minimally Invasive Gynecology"},{value:"journal-of-molecular-cell-biology",label:"Journal of Molecular Cell Biology"},{value:"journal-of-molecular-endocrinology",label:"Journal of Molecular Endocrinology"},{value:"journal-of-molecular-recognition",label:"Journal of Molecular Recognition"},{value:"journal-of-molecular-signaling",label:"Journal of Molecular Signaling"},{value:"journal-of-move-and-therapeutic-science",label:"Journal of Move and Therapeutic Science"},{value:"journal-of-musculoskeletal-research",label:"Journal of Musculoskeletal Research"},{value:"journal-of-music-technology-and-education",label:"Journal of Music Technology and Education"},{value:"journal-of-nanoscience-and-nanotechnology",label:"Journal of Nanoscience and Nanotechnology"},{value:"journal-of-natural-history",label:"Journal of Natural History"},{value:"journal-of-neolithic-archaeology",label:"Journal of Neolithic Archaeology"},{value:"journal-of-neurochemistry",label:"Journal of Neurochemistry"},{value:"journal-of-neuroendocrinology",label:"Journal of Neuroendocrinology"},{value:"journal-of-neurological-disorders",label:"Journal of Neurological Disorders"},{value:"journal-of-neurophysiology",label:"Journal of Neurophysiology"},{value:"journal-of-neuroscience-and-neuroengineering",label:"Journal of Neuroscience and Neuroengineering"},{value:"journal-of-new-zealand-grasslands",label:"Journal of New Zealand Grasslands"},{value:"journal-of-nutrition",label:"Journal of Nutrition"},{value:"journal-of-oil-palm-research",label:"Journal of Oil Palm Research"},{value:"journal-of-open-research-software",label:"Journal of Open Research Software"},{value:"journal-of-oral-and-maxillofacial-surgery",label:"Journal of Oral and Maxillofacial Surgery"},{value:"journal-of-orthopaedic-research",label:"Journal of Orthopaedic Research"},{value:"journal-of-orthopaedic-trauma",label:"Journal of Orthopaedic Trauma"},{value:"journal-of-orthopaedics-trauma-and-rehabilitation",label:"Journal of Orthopaedics, Trauma and Rehabilitation"},{value:"journal-of-paleontology",label:"Journal of Paleontology"},{value:"journal-of-peace-research",label:"Journal of Peace Research"},{value:"journal-of-pediatric-gastroenterology-and-nutrition",label:"Journal of Pediatric Gastroenterology and Nutrition"},{value:"journal-of-peptide-science",label:"Journal of Peptide Science"},{value:"journal-of-perinatal-medicine",label:"Journal of Perinatal Medicine"},{value:"journal-of-periodontal-research",label:"Journal of Periodontal Research"},{value:"journal-of-petrology",label:"Journal of Petrology"},{value:"journal-of-pharmacy-and-pharmacology",label:"Journal of Pharmacy and Pharmacology"},{value:"journal-of-phycology",label:"Journal of Phycology"},{value:"journal-of-physical-therapy-science",label:"Journal of Physical Therapy Science"},{value:"journal-of-plankton-research",label:"Journal of Plankton Research"},{value:"journal-of-plant-ecology",label:"Journal of Plant Ecology"},{value:"journal-of-plant-nutrition-and-soil-science",label:"Journal of Plant Nutrition and Soil Science"},{value:"journal-of-plant-protection-research",label:"Journal of Plant Protection Research"},{value:"journal-of-political-ideologies",label:"Journal of Political Ideologies"},{value:"journal-of-political-philosophy",label:"Journal of Political Philosophy"},{value:"journal-of-pollination-ecology",label:"Journal of Pollination Ecology"},{value:"journal-of-polymer-science-part-a-polymer-chemistry",label:"Journal of Polymer Science Part A: Polymer Chemistry"},{value:"journal-of-porphyrins-and-phthalocyanines",label:"Journal of Porphyrins and Phthalocyanines"},{value:"journal-of-product-innovation-management",label:"Journal of Product Innovation Management"},{value:"journal-of-psychiatric-and-mental-health-nursing",label:"Journal of Psychiatric and Mental Health Nursing"},{value:"journal-of-psychiatry-and-neuroscience",label:"Journal of Psychiatry & Neuroscience"},{value:"journal-of-raman-spectroscopy",label:"Journal of Raman Spectroscopy"},{value:"journal-of-reconstructive-microsurgery",label:"Journal of Reconstructive Microsurgery"},{value:"journal-of-refugee-studies",label:"Journal of Refugee Studies"},{value:"journal-of-retailing",label:"Journal of Retailing"},{value:"journal-of-rheumatology",label:"Journal of Rheumatology"},{value:"journal-of-roman-archaeology-a",label:"Journal of Roman Archaeology (A)"},{value:"journal-of-roman-archaeology-b",label:"Journal of Roman Archaeology (B)"},{value:"journal-of-science-and-medicine-in-sport",label:"Journal of Science and Medicine in Sport"},{value:"journal-of-separation-science",label:"Journal of Separation Science"},{value:"journal-of-shoulder-and-elbow-surgery",label:"Journal of Shoulder and Elbow Surgery"},{value:"journal-of-simulation",label:"Journal of Simulation"},{value:"journal-of-sleep-research",label:"Journal of Sleep Research"},{value:"journal-of-small-animal-practice",label:"Journal of Small Animal Practice"},{value:"journal-of-small-business-management",label:"Journal of Small Business Management"},{value:"journal-of-social-archaeology",label:"Journal of Social Archaeology"},{value:"journal-of-social-philosophy",label:"Journal of Social Philosophy"},{value:"journal-of-soil-and-water-conservation",label:"Journal of Soil and Water Conservation"},{value:"journal-of-soil-science-and-plant-nutrition",label:"Journal of Soil Science and Plant Nutrition"},{value:"journal-of-sport-and-health-science",label:"Journal of Sport and Health Science"},{value:"journal-of-sports-science-and-medicine",label:"Journal of Sports Science & Medicine"},{value:"journal-of-strength-and-conditioning-research",label:"Journal of Strength and Conditioning Research"},{value:"journal-of-stroke",label:"Journal of Stroke"},{value:"journal-of-structural-geology",label:"Journal of Structural Geology"},{value:"journal-of-studies-on-alcohol-and-drugs",label:"Journal of Studies on Alcohol and Drugs"},{value:"journal-of-surgery-and-medicine",label:"Journal of Surgery and Medicine"},{value:"journal-of-surgical-oncology",label:"Journal of Surgical Oncology"},{value:"journal-of-systematic-palaeontology",label:"Journal of Systematic Palaeontology"},{value:"journal-of-the-air-and-waste-management-association",label:"Journal of the Air & Waste Management Association"},{value:"journal-of-the-american-academy-of-audiology",label:"Journal of the American Academy of Audiology"},{value:"journal-of-the-american-academy-of-orthopaedic-surgeons",label:"Journal of the American Academy of Orthopaedic Surgeons"},{value:"journal-of-the-american-animal-hospital-association",label:"Journal of the American Animal Hospital Association"},{value:"journal-of-the-american-association-of-laboratory-animal-science",label:"Journal of the American Association of Laboratory Animal Science"},{value:"journal-of-the-american-ceramic-society",label:"Journal of the American Ceramic Society"},{value:"journal-of-the-american-college-of-cardiology",label:"Journal of the American College of Cardiology"},{value:"journal-of-the-american-college-of-surgeons",label:"Journal of the American College of Surgeons"},{value:"journal-of-the-american-heart-association",label:"Journal of the American Heart Association"},{value:"journal-of-the-american-society-of-brewing-chemists",label:"Journal of the American Society of Brewing Chemists"},{value:"journal-of-the-american-society-of-nephrology",label:"Journal of the American Society of Nephrology"},{value:"journal-of-the-american-water-resources-association",label:"Journal of the American Water Resources Association"},{value:"journal-of-the-association-for-information-systems",label:"Journal of the Association for Information Systems"},{value:"journal-of-the-association-of-environmental-and-resource-economists",label:"Journal of the Association of Environmental and Resource Economists"},{value:"journal-of-the-botanical-research-institute-of-texas",label:"Journal of the Botanical Research Institute of Texas"},{value:"journal-of-the-brazilian-chemical-society",label:"Journal of the Brazilian Chemical Society"},{value:"journal-of-the-electrochemical-society",label:"Journal of The Electrochemical Society"},{value:"journal-of-the-european-academy-of-dermatology-and-venereology",label:"Journal of the European Academy of Dermatology and Venereology"},{value:"journal-of-the-history-of-collections",label:"Journal of the History of Collections"},{value:"journal-of-the-indian-law-institute",label:"Journal of the Indian Law Institute"},{value:"journal-of-the-korean-society-of-civil-engineers",label:"Journal of the Korean Society of Civil Engineers"},{value:"journal-of-the-marine-biological-association-of-the-united-kingdom",label:"Journal of the Marine Biological Association of the United Kingdom"},{value:"journal-of-the-royal-anthropological-institute",label:"Journal of the Royal Anthropological Institute"},{value:"journal-of-the-royal-society-of-western-australia",label:"Journal of the Royal Society of Western Australia"},{value:"journal-of-the-royal-statistical-society",label:"Journal of the Royal Statistical Society"},{value:"journal-of-the-science-of-food-and-agriculture",label:"Journal of the Science of Food and Agriculture"},{value:"journal-of-the-serbian-chemical-society",label:"Journal of the Serbian Chemical Society"},{value:"journal-of-the-warburg-and-courtauld-institutes",label:"Journal of the Warburg and Courtauld Institutes"},{value:"journal-of-thermal-spray-technology",label:"Journal of Thermal Spray Technology"},{value:"journal-of-threatened-taxa",label:"Journal of Threatened Taxa"},{value:"journal-of-thrombosis-and-haemostasis",label:"Journal of Thrombosis and Haemostasis"},{value:"journal-of-tropical-ecology",label:"Journal of Tropical Ecology"},{value:"journal-of-tropical-life-science",label:"Journal of Tropical Life Science"},{value:"journal-of-universal-computer-science",label:"Journal of Universal Computer Science"},{value:"journal-of-urban-and-environmental-engineering",label:"Journal of Urban and Environmental Engineering"},{value:"journal-of-urban-technology",label:"Journal of Urban Technology"},{value:"journal-of-value-inquiry",label:"The Journal of Value Inquiry"},{value:"journal-of-vegetation-science",label:"Journal of Vegetation Science"},{value:"journal-of-vertebrate-biology",label:"Journal of Vertebrate Biology"},{value:"journal-of-vertebrate-paleontology",label:"Journal of Vertebrate Paleontology"},{value:"journal-of-vestibular-research",label:"Journal of Vestibular Research"},{value:"journal-of-veterinary-diagnostic-investigation",label:"Journal of Veterinary Diagnostic Investigation"},{value:"journal-of-visualized-experiments",label:"Journal of Visualized Experiments"},{value:"journal-of-water-sanitation-and-hygiene-for-development",label:"Journal of Water Sanitation and Hygiene for Development"},{value:"journal-of-wildlife-diseases",label:"Journal of Wildlife Diseases"},{value:"journal-of-zoo-and-wildlife-medicine",label:"Journal of Zoo and Wildlife Medicine"},{value:"journal-of-zoo-biology",label:"Journal of Zoo Biology"},{value:"journal-of-zoology",label:"Journal of Zoology"},{value:"journal-on-efficiency-and-responsibility-in-education-and-science",label:"Journal on Efficiency and Responsibility in Education and Science"},{value:"journalistica",label:"Journalistica (Dansk)"},{value:"jurisprudence",label:"Jurisprudence (\u010Ce\u0161tina)"},{value:"juristische-schulung",label:"Juristische Schulung (Deutsch)"},{value:"juristische-zitierweise-offentliches-recht",label:"Juristische Zitierweise - \xD6ffentliches Recht (Deutsch)"},{value:"juristische-zitierweise-schweizer",label:"Juristische Zitierweise Schweizer (Ryser B\xFCschi et al.) (Deutsch - Schweiz)"},{value:"juristische-zitierweise",label:"Juristische Zitierweise (St\xFCber) (Deutsch)"},{value:"jurnal-ilmu-dan-teknologi-hasil-ternak",label:"Jurnal Ilmu dan Teknologi Hasil Ternak"},{value:"jurnal-pangan-dan-agroindustri",label:"Jurnal Pangan dan Agroindustri (Bahasa Indonesia)"},{value:"jurnal-sains-farmasi-dan-klinis",label:"Jurnal Sains Farmasi & Klinis"},{value:"jyvaskylan-yliopisto-kemian-laitos",label:"Jyv\xE4skyl\xE4n yliopisto - Kemian laitos (Suomi)"},{value:"karabuk-university-graduate-school-of-natural-and-applied-sciences",label:"Karabuk University - Graduate School of Natural and Applied Sciences"},{value:"karger-journals-author-date",label:"Karger journals (author-date)"},{value:"karger-journals",label:"Karger journals"},{value:"karlstad-universitet-harvard",label:"Karlstad Universitet - Harvard (Svenska)"},{value:"karstenia",label:"Karstenia"},{value:"keel-ja-kirjandus",label:"Keel ja Kirjandus (Eesti keel)"},{value:"kidney-research-and-clinical-practice",label:"Kidney Research and Clinical Practice"},{value:"kindheit-und-entwicklung",label:"Kindheit und Entwicklung"},{value:"kit-karlsruher-institut-fur-technologie-germanistik-ndl-neuere-deutsche-literaturwissenschaft",label:"KIT Karlsruher Institut f\xFCr Technologie Germanistik NDL Neuere Deutsche Literaturwissenschaft (German)"},{value:"klinische-padiatrie",label:"Klinische P\xE4diatrie"},{value:"knee-surgery-and-related-research",label:"Knee Surgery & Related Research"},{value:"knee-surgery-sports-traumatology-arthroscopy",label:"Knee Surgery, Sports Traumatology, Arthroscopy"},{value:"knowledge-and-management-of-aquatic-ecosystems",label:"Knowledge & Management of Aquatic Ecosystems"},{value:"kolner-zeitschrift-fur-soziologie-und-sozialpsychologie",label:"K\xF6lner Zeitschrift f\xFCr Soziologie und Sozialpsychologie (Deutsch)"},{value:"kommunikation-und-recht",label:"Kommunikation und Recht (Deutsch)"},{value:"kona-powder-and-particle-journal",label:"KONA Powder and Particle Journal"},{value:"korean-journal-of-anesthesiology",label:"Korean Journal of Anesthesiology"},{value:"korean-journal-of-radiology",label:"Korean Journal of Radiology"},{value:"kritische-ausgabe",label:"Kritische Ausgabe (Deutsch)"},{value:"ksce-journal-of-civil-engineering",label:"KSCE Journal of Civil Engineering"},{value:"kth-royal-institute-of-technology-school-of-computer-science-and-communication-sv",label:"KTH Royal Institute of Technology - School of Computer Science and Communication (Svenska)"},{value:"kth-royal-institute-of-technology-school-of-computer-science-and-communication",label:"KTH Royal Institute of Technology - School of Computer Science and Communication"},{value:"kunstakademie-munster",label:"Kunstakademie M\xFCnster (Deutsch)"},{value:"l-homme",label:"L'homme \u2013 Revue fran\xE7aise d'anthropologie"},{value:"la-revue-des-sciences-de-gestion",label:"La Revue des Sciences de Gestion (Fran\xE7ais)"},{value:"la-trobe-university-apa",label:"La Trobe University - APA 6th edition"},{value:"la-trobe-university-harvard",label:"La Trobe University - Harvard"},{value:"laboratory-animal-science-professional",label:"Laboratory Animal Science Professional"},{value:"lancaster-university-harvard",label:"Lancaster University - Harvard"},{value:"land-degradation-and-development",label:"Land Degradation & Development"},{value:"landes-bioscience-journals",label:"Landes Bioscience Journals"},{value:"language-in-society",label:"Language in Society"},{value:"language",label:"Language"},{value:"lannee-sociologique",label:"L\u2019Ann\xE9e sociologique (Fran\xE7ais)"},{value:"laser-and-photonics-reviews",label:"Laser & Photonics Reviews"},{value:"latin-american-perspectives",label:"Latin American Perspectives"},{value:"latin-american-research-review",label:"Latin American Research Review"},{value:"lauterbornia",label:"Lauterbornia - Internationale Zeitschrift f\xFCr Faunistik und Floristik des S\xFC\xDFwassers (Deutsch)"},{value:"law-and-society-review",label:"Law & Society Review"},{value:"law-citation-manual",label:"Law Citation Manual (\u4E2D\u6CD5\u5B66\u6CE8\u5F15\u624B\u518C, \u4E2D\u6587)"},{value:"law-technology-and-humans",label:"Law, Technology and Humans"},{value:"lcgc",label:"LCGC"},{value:"le-mouvement-social",label:"Le Mouvement Social (Fran\xE7ais)"},{value:"le-tapuscrit-author-date",label:"Le tapuscrit (\xC9cole des hautes \xE9tudes en sciences sociales) (author-date, Fran\xE7ais)"},{value:"le-tapuscrit-note",label:"Le tapuscrit (\xC9cole des hautes \xE9tudes en sciences sociales) (note, Fran\xE7ais)"},{value:"leiden-journal-of-international-law",label:"Leiden Journal of International Law"},{value:"leidraad-voor-juridische-auteurs",label:"Leidraad voor juridische auteurs 2019 (Nederlands)"},{value:"leonardo",label:"Leonardo"},{value:"les-cahiers-du-journalisme",label:"Les Cahiers du journalisme (Fran\xE7ais)"},{value:"les-journees-de-la-recherche-avicole",label:"Les Journ\xE9es de la Recherche Avicole (Fran\xE7ais)"},{value:"les-journees-de-la-recherche-porcine",label:"Les Journ\xE9es de la Recherche Porcine (Fran\xE7ais)"},{value:"les-nouvelles-de-l-archeologie",label:"Les nouvelles de l'arch\xE9ologie (Fran\xE7ais)"},{value:"lethaia",label:"Lethaia"},{value:"letters-in-applied-microbiology",label:"Letters in Applied Microbiology"},{value:"lettres-et-sciences-humaines-fr",label:"Lettres et Sciences Humaines (biblio et notes, Fran\xE7ais)"},{value:"leviathan",label:"Leviathan (Deutsch)"},{value:"lien-social-et-politiques",label:"Lien social et Politiques (Fran\xE7ais)"},{value:"limnetica",label:"Limnetica"},{value:"limnology-and-oceanography",label:"Limnology and Oceanography"},{value:"liver-international",label:"Liver International"},{value:"liverpool-john-moores-university-harvard",label:"Liverpool John Moores University - Harvard"},{value:"lluelles-no-ibid",label:"Guide des r\xE9f\xE9rences pour la r\xE9daction juridique 7e \xE9dition (Notes compl\xE8tes) (Guide Lluelles, no Ibid., Fran\xE7ais - Canada)"},{value:"lluelles",label:"Guide des r\xE9f\xE9rences pour la r\xE9daction juridique 7e \xE9dition (Guide Lluelles, Fran\xE7ais - Canada)"},{value:"london-metropolitan-university-harvard",label:"London Metropolitan University - Harvard"},{value:"london-review-of-international-law",label:"London Review of International Law"},{value:"london-south-bank-university-numeric",label:"London South Bank University (numeric)"},{value:"lund-university-school-of-economics-and-management",label:"Lund University School of Economics and Management"},{value:"macromolecular-reaction-engineering",label:"Macromolecular Reaction Engineering"},{value:"magnetic-resonance-in-medical-sciences",label:"Magnetic Resonance in Medical Sciences"},{value:"magnetic-resonance-in-medicine",label:"Magnetic Resonance in Medicine"},{value:"magnetic-resonance-materials-in-physics-biology-and-medicine",label:"Magnetic Resonance Materials in Physics, Biology and Medicine"},{value:"maison-de-l-orient-et-de-la-mediterranee-en",label:"Maison de l'Orient et de la M\xE9diterran\xE9e (English)"},{value:"maison-de-l-orient-et-de-la-mediterranee",label:"Maison de l'Orient et de la M\xE9diterran\xE9e (Fran\xE7ais)"},{value:"malaysian-orthopaedic-journal",label:"Malaysian Orthopaedic Journal"},{value:"mammal-review",label:"Mammal Review"},{value:"mammalia",label:"Mammalia"},{value:"mammalogy-notes",label:"Mammalogy Notes"},{value:"management-et-avenir",label:"Management & Avenir (Fran\xE7ais)"},{value:"management-international",label:"Management international"},{value:"management-of-biological-invasions",label:"Management of Biological Invasions"},{value:"manchester-university-press-author-date",label:"Manchester University Press monographs (author-date)"},{value:"manchester-university-press",label:"Manchester University Press monographs (note)"},{value:"marine-biology",label:"Marine Biology"},{value:"marine-mammal-science",label:"Marine Mammal Science"},{value:"marine-ornithology",label:"Marine Ornithology"},{value:"marine-turtle-newsletter",label:"Marine Turtle Newsletter"},{value:"marmara-universitesi-turkiyat-arastirmalari-enstitusu",label:"Marmara \xDCniversitesi - T\xFCrkiyat Ara\u015Ft\u0131rmalar\u0131 Enstit\xFCs\xFC (T\xFCrk\xE7e)"},{value:"mary-ann-liebert-harvard",label:"Mary Ann Liebert - Harvard"},{value:"mary-ann-liebert-vancouver",label:"Mary Ann Liebert - Vancouver"},{value:"masarykova-univerzita-pravnicka-fakulta",label:"Masarykova univerzita - Pr\xE1vnick\xE1 fakulta"},{value:"mastozoologia-neotropical",label:"Mastozoologia Neotropical"},{value:"materials-express",label:"Materials Express"},{value:"mathematical-geosciences",label:"Mathematical Geosciences"},{value:"mathematics-and-computers-in-simulation",label:"Mathematics and Computers in Simulation"},{value:"mcdonald-institute-monographs",label:"McDonald Institute Monographs"},{value:"mcgill-en",label:"Canadian Guide to Uniform Legal Citation 9th edition (McGill Guide)"},{value:"mcgill-fr",label:"Manuel canadien de la r\xE9f\xE9rence juridique 9e \xE9dition (Guide McGill, Fran\xE7ais - Canada)"},{value:"medecine-intensive-reanimation",label:"M\xE9decine Intensive R\xE9animation"},{value:"medecine-sciences",label:"m\xE9decine/sciences"},{value:"media-culture-and-society",label:"Media, Culture & Society"},{value:"mediaeval-studies",label:"Mediaeval Studies"},{value:"medical-dosimetry",label:"Medical Dosimetry"},{value:"medical-history",label:"Medical History"},{value:"medicina-clinica",label:"Medicina Cl\xEDnica (Espa\xF1ol)"},{value:"medicina-delle-dipendenze-italian-journal-of-the-addictions",label:"Medicina delle Dipendenze - Italian Journal of the Addictions (Italiano)"},{value:"medicinal-research-reviews",label:"Medicinal Research Reviews"},{value:"medicine-and-science-in-sports-and-exercise",label:"Medicine & Science in Sports & Exercise"},{value:"medicine-publishing",label:"Medicine Publishing"},{value:"medicinski-razgledi",label:"Medicinski razgledi"},{value:"medicinskiy-akademicheskiy-zhurnal",label:"Medicinskiy Akademicheskiy Zhurnal"},{value:"mediterranean-journal-of-chemistry",label:"Mediterranean Journal of Chemistry"},{value:"mediterranean-journal-of-infection-microbes-and-antimicrobials",label:"Mediterranean Journal of Infection, Microbes and Antimicrobials"},{value:"mediterranean-politics",label:"Mediterranean Politics"},{value:"melbourne-school-of-theology",label:"Melbourne School of Theology"},{value:"memorias-do-instituto-oswaldo-cruz",label:"Mem\xF3rias do Instituto Oswaldo Cruz"},{value:"mercator-institut-fur-sprachforderung-und-deutsch-als-zweitsprache",label:"Mercator-Institut f\xFCr Sprachf\xF6rderung und Deutsch als Zweitsprache (Deutsch)"},{value:"mercatus-center",label:"Mercatus Center"},{value:"metallurgical-and-materials-transactions-a",label:"Metallurgical and Materials Transactions A"},{value:"metallurgical-and-materials-transactions",label:"Metallurgical and Materials Transactions"},{value:"meteoritics-and-planetary-science",label:"Meteoritics & Planetary Science"},{value:"meteorological-applications",label:"Meteorological Applications"},{value:"method-and-theory-in-the-study-of-religion",label:"Method & Theory in the Study of Religion"},{value:"methods-of-information-in-medicine",label:"Methods of Information in Medicine"},{value:"metropol-verlag",label:"Metropol Verlag (Deutsch)"},{value:"metropolia-university-of-applied-sciences-harvard",label:"Metropolia Ammattikorkeakoulu - Harvard (Suomi)"},{value:"metropolitiques",label:"M\xE9tropolitiques (Fran\xE7ais)"},{value:"microbial-cell",label:"Microbial Cell"},{value:"microbiology-society",label:"Microbiology Society"},{value:"microcirculation",label:"Microcirculation"},{value:"microscopy-and-microanalysis",label:"Microscopy and Microanalysis"},{value:"middle-east-critique",label:"Middle East Critique"},{value:"midwestern-baptist-theological-seminary",label:"Midwestern Baptist Theological Seminary"},{value:"mimbar-hukum",label:"Mimbar Hukum"},{value:"mimesis-edizioni",label:"Mimesis Edizioni (Italiano)"},{value:"mind-and-language",label:"Mind & Language"},{value:"mineralogical-magazine",label:"Mineralogical Magazine"},{value:"mis-quarterly",label:"MIS Quarterly"},{value:"modern-chinese-literature-and-culture",label:"Modern Chinese Literature and Culture"},{value:"modern-humanities-research-association-author-date",label:"Modern Humanities Research Association 3rd edition (author-date)"},{value:"modern-humanities-research-association",label:"Modern Humanities Research Association 3rd edition (note with bibliography)"},{value:"modern-language-association-6th-edition-note",label:"Modern Language Association 6th edition (note)"},{value:"modern-language-association-7th-edition-underline",label:"Modern Language Association 7th edition (underline)"},{value:"modern-language-association-7th-edition-with-url",label:"Modern Language Association 7th edition (with URL)"},{value:"modern-language-association-7th-edition",label:"Modern Language Association 7th edition"},{value:"modern-language-association-8th-edition",label:"Modern Language Association 8th edition"},{value:"modern-language-association",label:"Modern Language Association 9th edition"},{value:"modern-pathology",label:"Modern Pathology"},{value:"modern-phytomorphology",label:"Modern Phytomorphology"},{value:"mohr-siebeck-recht",label:"Mohr Siebeck - Recht (Deutsch - \xD6sterreich)"},{value:"molecular-and-cellular-proteomics",label:"Molecular & Cellular Proteomics"},{value:"molecular-biology-and-evolution",label:"Molecular Biology and Evolution"},{value:"molecular-biology-of-the-cell",label:"Molecular Biology of the Cell"},{value:"molecular-biology",label:"Molecular Biology"},{value:"molecular-metabolism",label:"Molecular Metabolism"},{value:"molecular-microbiology",label:"Molecular Microbiology"},{value:"molecular-nutrition-and-food-research",label:"Molecular Nutrition & Food Research"},{value:"molecular-oncology",label:"Molecular Oncology"},{value:"molecular-plant-microbe-interactions",label:"Molecular Plant-Microbe Interactions"},{value:"molecular-plant-pathology",label:"Molecular Plant Pathology"},{value:"molecular-plant",label:"Molecular Plant"},{value:"molecular-psychiatry-letters",label:"Molecular Psychiatry (letters to the editor)"},{value:"molecular-psychiatry",label:"Molecular Psychiatry"},{value:"monash-university-csiro",label:"Monash University - CSIRO"},{value:"monash-university-harvard",label:"Monash University - Harvard"},{value:"mondes-en-developpement",label:"Mondes en d\xE9veloppement (Fran\xE7ais)"},{value:"monographs-of-the-palaeontographical-society",label:"Monographs of the Palaeontographical Society"},{value:"moore-theological-college",label:"Moore Theological College"},{value:"moorlands-college",label:"Moorlands College"},{value:"mrs-bulletin",label:"MRS Bulletin"},{value:"multidisciplinary-digital-publishing-institute",label:"Multidisciplinary Digital Publishing Institute"},{value:"multilingual-matters",label:"Multilingual Matters"},{value:"multimed",label:"Multimed (Espa\xF1ol)"},{value:"multiple-sclerosis-journal",label:"Multiple Sclerosis Journal"},{value:"muscle-and-nerve",label:"Muscle & Nerve"},{value:"museum-national-dhistoire-naturelle",label:"Mus\xE9um national d'Histoire naturelle"},{value:"music-theory-spectrum",label:"Music Theory Spectrum"},{value:"mutagenesis",label:"Mutagenesis"},{value:"mycobiology",label:"Mycobiology"},{value:"mycologia",label:"Mycologia"},{value:"myrmecological-news",label:"Myrmecological News"},{value:"nano-biomedicine-and-engineering",label:"Nano Biomedicine and Engineering"},{value:"natbib-plainnat-author-date",label:"natbib - plainnat (author-date)"},{value:"national-archives-of-australia",label:"National Archives of Australia"},{value:"national-institute-of-health-research",label:"National Institute of Health Research"},{value:"national-institute-of-organisation-dynamics-australia-harvard",label:"National Institute of Organisation Dynamics Australia - Harvard"},{value:"national-institute-of-technology-karnataka",label:"National Institute of Technology Karnataka"},{value:"national-institute-of-technology-tiruchirappalli",label:"National Institute of Technology, Tiruchirappalli"},{value:"national-library-of-medicine-grant-proposals",label:"National Library of Medicine (grant proposals with PMCID/PMID)"},{value:"national-marine-fisheries-service-national-environmental-policy-act",label:"National Marine Fisheries Service - National Environmental Policy Act"},{value:"national-natural-science-foundation-of-china",label:"National Natural Science Foundation of China (\u4E2D\u6587)"},{value:"national-science-foundation-grant-proposals",label:"National Science Foundation (grant proposals)"},{value:"national-university-of-singapore-department-of-geography-harvard",label:"National University of Singapore - Department of Geography - Harvard"},{value:"nations-and-nationalism",label:"Nations and Nationalism"},{value:"natur-und-landschaft",label:"Natur und Landschaft (Deutsch)"},{value:"natura-croatica",label:"Natura Croatica"},{value:"nature-neuroscience-brief-communications",label:"Nature Neuroscience (brief communications)"},{value:"nature-no-et-al",label:'Nature (no "et al.")'},{value:"nature-no-superscript",label:"Nature (no superscript)"},{value:"nature-publishing-group-vancouver",label:"Nature Publishing Group - Vancouver"},{value:"nature",label:"Nature"},{value:"natures-sciences-societes",label:"Natures Sciences Soci\xE9t\xE9s"},{value:"nauplius",label:"Nauplius"},{value:"navigation",label:"Navigation"},{value:"nccr-mediality",label:"NCCR Mediality. Medienwandel - Medienwechsel - Medienwissen (Deutsch)"},{value:"necmettin-erbakan-universitesi-fen-ve-muhendislik-bilimleri-dergisi",label:"Necmettin Erbakan \xDCniversitesi Fen ve M\xFChendislik Bilimleri Dergisi (T\xFCrk\xE7e)"},{value:"nehet",label:"NeHeT (Fran\xE7ais)"},{value:"nejm-catalyst-innovations-in-care-delivery",label:"NEJM Catalyst Innovations in Care Delivery"},{value:"nephrology-dialysis-transplantation",label:"Nephrology Dialysis Transplantation"},{value:"netherlands-journal-of-geosciences-geologie-en-mijnbouw",label:"Netherlands Journal of Geosciences - Geologie en Mijnbouw"},{value:"neue-juristische-wochenschrift",label:"Neue Juristische Wochenschrift (Deutsch)"},{value:"neue-kriminalpolitik",label:"Neue Kriminalpolitik (Deutsch)"},{value:"neural-plasticity",label:"Neural Plasticity"},{value:"neuroendocrinology-letters",label:"Neuroendocrinology Letters"},{value:"neuroimaging-clinics-of-north-america",label:"Neuroimaging Clinics of North America"},{value:"neurologia-argentina",label:"Neurolog\xEDa Argentina (Espa\xF1ol)"},{value:"neurologia",label:"Neurolog\xEDa (Espa\xF1ol)"},{value:"neurology-india",label:"Neurology India"},{value:"neurology",label:"Neurology"},{value:"neuropsychopharmacology",label:"Neuropsychopharmacology"},{value:"neurorehabilitation-and-neural-repair",label:"Neurorehabilitation and Neural Repair"},{value:"neuroreport",label:"NeuroReport"},{value:"neurospine",label:"Neurospine"},{value:"neurosurgery-clinics-of-north-america",label:"Neurosurgery Clinics of North America"},{value:"new-harts-rules-the-oxford-style-guide",label:"New Hart's Rules: The Oxford Style Guide"},{value:"new-phytologist",label:"New Phytologist"},{value:"new-solutions",label:"New Solutions"},{value:"new-testament-studies",label:"New Testament Studies"},{value:"new-zealand-dental-journal",label:"New Zealand Dental Journal"},{value:"new-zealand-journal-of-forestry-science",label:"New Zealand Journal of Forestry Science"},{value:"new-zealand-journal-of-history",label:"New Zealand Journal of History"},{value:"new-zealand-plant-protection",label:"New Zealand Plant Protection"},{value:"new-zealand-veterinary-journal",label:"New Zealand Veterinary Journal"},{value:"nist-technical-publication-journal-of-research-of-nist",label:"NIST Technical Publications - Journal of Research of NIST"},{value:"nordic-pulp-and-paper-research-journal",label:"Nordic Pulp & Paper Research Journal"},{value:"norma-portuguesa-405",label:"Norma Portuguesa 405 (Portugu\xEAs)"},{value:"norois",label:"Norois (Fran\xE7ais)"},{value:"norsk-apa-manual-note",label:"Norsk APA-manual - APA 7th edition (note)"},{value:"norsk-apa-manual",label:"Norsk APA-manual - APA 7th edition (author-date)"},{value:"norsk-henvisningsstandard-for-rettsvitenskapelige-tekster",label:"Norsk henvisningsstandard for rettsvitenskapelige tekster (Norsk - Bokm\xE5l)"},{value:"northeastern-naturalist",label:"Northeastern Naturalist"},{value:"nottingham-trent-university-library-harvard",label:"Nottingham Trent University Library - Harvard"},{value:"nouvelles-perspectives-en-sciences-sociales",label:"Nouvelles perspectives en sciences sociales (Fran\xE7ais - Canada)"},{value:"novasinergia",label:"Novasinergia"},{value:"nowa-audiofonologia",label:"Nowa Audiofonologia (Polski)"},{value:"nuclear-receptor-signaling",label:"Nuclear Receptor Signaling"},{value:"nucleic-acids-research-web-server-issue",label:"Nucleic Acids Research - Web Server Issue"},{value:"nucleic-acids-research",label:"Nucleic Acids Research"},{value:"nutrition-research-reviews",label:"Nutrition Research Reviews"},{value:"obafemi-awolowo-university-faculty-of-technology",label:"Obafemi Awolowo University - Faculty of Technology"},{value:"obesity",label:"Obesity"},{value:"obstetrics-and-gynecology-science",label:"Obstetrics & Gynecology Science"},{value:"occupational-medicine",label:"Occupational Medicine"},{value:"ocean-and-coastal-research",label:"Ocean and Coastal Research"},{value:"oceanography",label:"Oceanography"},{value:"oecologia-australis",label:"Oecologia Australis"},{value:"offa",label:"Offa - Berichte und Mitteilungen zur Urgeschichte, Fr\xFChgeschichte und Mittelalterarch\xE4ologie"},{value:"oikos",label:"Oikos"},{value:"oil-shale",label:"Oil Shale"},{value:"oncoimmunology",label:"OncoImmunology"},{value:"oncotarget",label:"Oncotarget"},{value:"open-gender-journal",label:"Open Gender Journal"},{value:"open-window",label:"Open Window - Harvard"},{value:"operative-dentistry",label:"Operative Dentistry"},{value:"ophthalmic-genetics",label:"Ophthalmic Genetics"},{value:"ophthalmology-retina",label:"Ophthalmology Retina"},{value:"ophthalmology",label:"Ophthalmology"},{value:"optics-express",label:"Optics Express"},{value:"optics-letters",label:"Optics Letters"},{value:"opto-electronic-advances",label:"Opto-Electronic Advances"},{value:"optometry-and-vision-science",label:"Optometry & Vision Science"},{value:"opuscula",label:"Opuscula"},{value:"oral-diseases",label:"Oral Diseases"},{value:"organic-geochemistry",label:"Organic Geochemistry"},{value:"organised-sound",label:"Organised Sound"},{value:"organization-studies",label:"Organization Studies"},{value:"organization",label:"Organization"},{value:"organon",label:"Organon"},{value:"ornitologia-neotropical",label:"Ornitolog\xEDa Neotropical"},{value:"orthopedic-clinics-of-north-america",label:"Orthopedic Clinics of North America"},{value:"oryx",label:"Oryx"},{value:"oscola-no-ibid",label:"OSCOLA (Oxford University Standard for Citation of Legal Authorities) (no Ibid.)"},{value:"oscola",label:"OSCOLA (Oxford University Standard for Citation of Legal Authorities)"},{value:"osterreichische-zeitschrift-fur-politikwissenschaft",label:"\xD6sterreichische Zeitschrift f\xFCr Politikwissenschaft (Deutsch - \xD6sterreich)"},{value:"otto-von-guricke-universitat-magdeburg-medizinische-fakultat-numeric",label:"Otto-von-Guericke-Universit\xE4t Magdeburg - Medizinische Fakult\xE4t (numeric)"},{value:"owbarth-verlag",label:"O.W. Barth Verlag (Deutsch)"},{value:"oxford-art-journal",label:"Oxford Art Journal"},{value:"oxford-centre-for-mission-studies-harvard",label:"Oxford Centre for Mission Studies - Harvard"},{value:"oxford-studies-in-ancient-philosophy",label:"Oxford Studies in Ancient Philosophy"},{value:"oxford-studies-on-the-roman-economy",label:"Oxford Studies on the Roman Economy"},{value:"oxford-the-university-of-new-south-wales",label:"The University of New South Wales - Oxford"},{value:"oxford-university-press-humsoc",label:"Oxford University Press HUMSOC"},{value:"oxford-university-press-note",label:"Oxford University Press (note)"},{value:"oxford-university-press-scimed-author-date",label:"Oxford University Press SciMed (author-date)"},{value:"oxford-university-press-scimed-numeric",label:"Oxford University Press SciMed (numeric)"},{value:"oxidation-of-metals",label:"Oxidation of Metals"},{value:"pacific-conservation-biology",label:"Pacific Conservation Biology"},{value:"pacific-science",label:"Pacific Science"},{value:"padagogische-hochschule-bern-institut-vorschulstufe-und-primarstufe",label:"P\xE4dagogische Hochschule Bern - Institut Vorschulstufe und Primarstufe"},{value:"padagogische-hochschule-fachhochschule-nordwestschweiz",label:"P\xE4dagogische Hochschule Fachhochschule Nordwestschweiz (Deutsch - Schweiz)"},{value:"padagogische-hochschule-heidelberg",label:"P\xE4dagogische Hochschule Heidelberg (Deutsch)"},{value:"padagogische-hochschule-vorarlberg",label:"P\xE4dagogische Hochschule Vorarlberg (Deutsch)"},{value:"paediatric-and-perinatal-epidemiology",label:"Paediatric and Perinatal Epidemiology"},{value:"pain-medicine",label:"Pain Medicine"},{value:"pain",label:"PAIN"},{value:"pakistan-journal-of-agricultural-sciences",label:"Pakistan Journal of Agricultural Sciences"},{value:"pakistani-veterinary-journal",label:"Pakistan Veterinary Journal"},{value:"palaeodiversity",label:"Palaeodiversity"},{value:"palaeontographica-abteilung-b-palaeobotany-palaeophytology",label:"Palaeontographica Abteilung B: Palaeobotany - Palaeophytology"},{value:"palaeontologia-electronica",label:"Palaeontologia Electronica"},{value:"palaeontology",label:"Palaeontology"},{value:"palaeovertebrata",label:"Palaeovertebrata"},{value:"palaios",label:"Palaios"},{value:"paleobiology",label:"Paleobiology"},{value:"parasite",label:"Parasite"},{value:"parasitology",label:"Parasitology"},{value:"past-and-present",label:"Past & Present"},{value:"pediatric-allergy-and-immunology",label:"Pediatric Allergy and Immunology"},{value:"pediatric-anesthesia",label:"Pediatric Anesthesia"},{value:"pediatric-blood-and-cancer",label:"Pediatric Blood & Cancer"},{value:"pediatric-infectious-disease-journal",label:"Pediatric Infectious Disease Journal"},{value:"pediatric-physical-therapy",label:"Pediatric Physical Therapy"},{value:"pediatric-practice-and-research",label:"Pediatric Practice and Research"},{value:"pediatric-pulmonology",label:"Pediatric Pulmonology"},{value:"pediatric-research",label:"Pediatric Research"},{value:"pediatric-urology-case-reports",label:"Pediatric Urology Case Reports"},{value:"pedosphere",label:"Pedosphere"},{value:"peerj",label:"PeerJ"},{value:"pensoft-journals",label:"Pensoft Journals"},{value:"periodicum-biologorum",label:"Periodicum Biologorum"},{value:"periodontology-2000",label:"Periodontology 2000"},{value:"permafrost-and-periglacial-processes",label:"Permafrost and Periglacial Processes"},{value:"perspectives-on-sexual-and-reproductive-health",label:"Perspectives on Sexual and Reproductive Health"},{value:"pesquisa-agropecuaria-brasileira",label:"Pesquisa Agropecu\xE1ria Brasileira (Portugu\xEAs - Brasil)"},{value:"pest-management-science",label:"Pest Management Science"},{value:"petit-chicago-author-date",label:"Petit Chicago (author-date, Fran\xE7ais - Canada)"},{value:"pharmacoepidemiology-and-drug-safety",label:"Pharmacoepidemiology and Drug Safety"},{value:"philippika",label:"Philippika (Deutsch)"},{value:"philipps-universitat-marburg-note",label:"Philipps-Universit\xE4t Marburg - Erziehungswissenschaften (note, Deutsch)"},{value:"philosophia-scientiae",label:"Philosophia Scienti\xE6"},{value:"philosophiques",label:"Philosophiques (Fran\xE7ais)"},{value:"philosophy-and-public-affairs",label:"Philosophy & Public Affairs"},{value:"photochemistry-and-photobiology",label:"Photochemistry and Photobiology"},{value:"photosynthetica",label:"Photosynthetica"},{value:"phycological-research",label:"Phycological Research"},{value:"phyllomedusa",label:"Phyllomedusa"},{value:"physiologia-plantarum",label:"Physiologia Plantarum"},{value:"physiological-and-biochemical-zoology",label:"Physiological and Biochemical Zoology"},{value:"physiotherapy-theory-and-practice",label:"Physiotherapy Theory and Practice"},{value:"phytopathologia-mediterranea",label:"Phytopathologia Mediterranea"},{value:"phytotaxa",label:"Phytotaxa"},{value:"pisa-university-press",label:"Pisa University Press"},{value:"planning-practice-and-research",label:"Planning Practice & Research"},{value:"plant-and-cell-physiology",label:"Plant & Cell Physiology"},{value:"plant-biology",label:"Plant Biology"},{value:"plant-biotechnology-journal",label:"Plant Biotechnology Journal"},{value:"plant-cell-and-environment",label:"Plant, Cell & Environment"},{value:"plant-genetic-resources-characterization-and-utilization",label:"Plant Genetic Resources - Characterization and Utilization"},{value:"plant-pathology",label:"Plant Pathology"},{value:"plant-physiology",label:"Plant Physiology"},{value:"plant-species-biology",label:"Plant Species Biology"},{value:"plos",label:"Public Library of Science"},{value:"pnas",label:"Proceedings of the National Academy of Sciences of the United States of America"},{value:"podzemna-voda",label:"Podzemn\xE1 voda (Sloven\u010Dina)"},{value:"polar-research",label:"Polar Research"},{value:"polish-legal",label:"Polish Legal (Polski)"},{value:"politeknik-negeri-manado-jurnal-p3m",label:"Politeknik Negeri Manado - Jurnal Pusat Penelitian dan Pengabdian Kepada Masyarakat (Bahasa Indonesia)"},{value:"political-studies",label:"Political Studies"},{value:"politische-vierteljahresschrift",label:"Politische Vierteljahresschrift (Deutsch)"},{value:"politix",label:"Politix (Fran\xE7ais)"},{value:"polymer-reviews",label:"Polymer Reviews"},{value:"pontifical-athenaeum-regina-apostolorum",label:"Pontifical Athenaeum Regina Apostolorum"},{value:"pontifical-biblical-institute",label:"Pontifical Biblical Institute"},{value:"pontifical-gregorian-university",label:"Pontifical Gregorian University (Italiano)"},{value:"population-space-and-place",label:"Population, Space and Place"},{value:"population",label:"Population (Fran\xE7ais)"},{value:"postepy-higieny-i-medycyny-doswiadczalnej",label:"Post\u0119py Higieny i Medycyny Do\u015Bwiadczalnej (Polski)"},{value:"poultry-science",label:"Poultry Science"},{value:"pour-reussir-note",label:"Pour r\xE9ussir (note, Fran\xE7ais - Canada)"},{value:"pravnik",label:"Pr\xE1vn\xEDk (\u010Ce\u0161tina)"},{value:"praxis",label:"Praxis (Deutsch - Schweiz)"},{value:"prehistoires-mediterraneennes",label:"Pr\xE9histoires m\xE9diterran\xE9ennes"},{value:"prehospital-emergency-care",label:"Prehospital Emergency Care"},{value:"preslia",label:"Preslia - The Journal of the Czech Botanical Society"},{value:"presses-universitaires-de-paris-nanterre",label:"Presses universitaires de Paris Nanterre (note, Fran\xE7ais)"},{value:"presses-universitaires-de-rennes-archeologie-et-culture",label:"Presses Universitaires de Rennes - Arch\xE9ologie et Culture (Fran\xE7ais)"},{value:"presses-universitaires-de-rennes",label:"Presses Universitaires de Rennes (Fran\xE7ais)"},{value:"presses-universitaires-de-strasbourg-note",label:"Presses universitaires de Strasbourg (note, Fran\xE7ais)"},{value:"primary-care-clinics-in-office-practice",label:"Primary Care: Clinics in Office Practice"},{value:"proceedings-of-the-joint-international-grassland-and-international-rangeland-congress-2021",label:"Proceedings of the Joint International Grassland & International Rangeland Congress 2021"},{value:"proceedings-of-the-royal-society-b",label:"Proceedings of the Royal Society B"},{value:"processing-and-application-of-ceramics",label:"Processing and Application of Ceramics"},{value:"production-and-operations-management",label:"Production and Operations Management"},{value:"proinflow",label:"ProInflow (note, \u010Ce\u0161tina)"},{value:"protein-engineering-design-and-selection",label:"Protein Engineering Design and Selection"},{value:"protein-science",label:"Protein Science"},{value:"proteomics",label:"PROTEOMICS"},{value:"psychiatric-clinics-of-north-america",label:"Psychiatric Clinics of North America"},{value:"psychiatric-services",label:"Psychiatric Services"},{value:"psychiatry-and-clinical-neurosciences",label:"Psychiatry and Clinical Neurosciences"},{value:"psychological-medicine",label:"Psychological Medicine"},{value:"psychosomatic-medicine",label:"Psychosomatic Medicine"},{value:"psychosomatics",label:"Psychosomatics"},{value:"public-health-nutrition",label:"Public Health Nutrition"},{value:"pure-and-applied-geophysics",label:"Pure and Applied Geophysics"},{value:"qeios",label:"Qeios"},{value:"quaderni-degli-avogadro-colloquia",label:"Quaderni degli Avogadro Colloquia"},{value:"quaderni-materialisti",label:"Quaderni Materialisti (Italiano)"},{value:"quaderni",label:"Quaderni (Italiano)"},{value:"quaternaire",label:"Quaternaire (Fran\xE7ais)"},{value:"quaternary-international",label:"Quaternary International"},{value:"queen-margaret-university-harvard",label:"Queen Margaret University - Harvard"},{value:"r-and-d-management",label:"R&D Management"},{value:"radiation-protection-dosimetry",label:"Radiation Protection Dosimetry"},{value:"radiochimica-acta",label:"Radiochimica Acta"},{value:"radiographics",label:"RadioGraphics"},{value:"radiography",label:"Radiography"},{value:"radiologic-clinics-of-north-america",label:"Radiologic Clinics of North America"},{value:"radiology",label:"Radiology"},{value:"radiopaedia",label:"Radiopaedia.org"},{value:"raffles-bulletin-of-zoology",label:"Raffles Bulletin of Zoology"},{value:"rassegna-degli-archivi-di-stato",label:"Rassegna degli Archivi di Stato (citazioni estese, italiano)"},{value:"recent-patents-on-drug-delivery-and-formulation",label:"Recent Patents on Drug Delivery & Formulation"},{value:"recherches-en-sciences-de-gestion",label:"Recherches en Sciences de Gestion (Fran\xE7ais)"},{value:"refugee-survey-quarterly",label:"Refugee Survey Quarterly"},{value:"register-studies",label:"Register Studies"},{value:"religion-in-the-roman-empire",label:"Religion in the Roman Empire"},{value:"renewable-agriculture-and-food-systems",label:"Renewable Agriculture and Food Systems"},{value:"reports-of-practical-oncology-and-radiotherapy",label:"Reports of Practical Oncology and Radiotherapy"},{value:"representation",label:"Representation"},{value:"reproduction-fertility-and-development",label:"Reproduction, Fertility and Development"},{value:"reproduction",label:"Reproduction"},{value:"research-and-education-promotion-association",label:"Research and Education Promotion Association"},{value:"research-in-plant-disease",label:"Research in Plant Disease"},{value:"research-institute-for-nature-and-forest",label:"Research Institute for Nature and Forest (Instituut voor Natuur- en Bosonderzoek)"},{value:"research-on-biomedical-engineering",label:"Research on Biomedical Engineering"},{value:"respiratory-care-journal",label:"Respiratory Care Journal"},{value:"restoration-ecology",label:"Restoration Ecology"},{value:"rever-revista-de-estudos-da-religiao",label:"REVER - Revista de Estudos da Religi\xE3o"},{value:"review-of-international-studies",label:"Review of International Studies"},{value:"review-of-political-economy",label:"Review of Political Economy"},{value:"reviews-of-modern-physics-with-titles",label:"Reviews of Modern Physics (with titles)"},{value:"revista-argentina-de-antropologia-biologica",label:"Revista Argentina de Antropologia Biologica (Espa\xF1ol)"},{value:"revista-biblica",label:"Revista B\xEDblica (Espa\xF1ol)"},{value:"revista-brasileira-de-ciencia-do-solo",label:"Revista Brasileira de Ci\xEAncia do Solo"},{value:"revista-chilena-de-derecho-y-tecnologia",label:"Revista Chilena de Derecho y Tecnolog\xEDa (Espa\xF1ol - Chile)"},{value:"revista-ciencias-tecnicas-agropecuarias",label:"Revista Ciencias T\xE9cnicas Agropecuarias (Espa\xF1ol)"},{value:"revista-cubana-de-meteorologia",label:"Revista Cubana de Meteorologia"},{value:"revista-da-sociedade-brasileira-de-medicina-tropical",label:"Revista da Sociedade Brasileira de Medicina Tropical"},{value:"revista-de-biologia-marina-y-oceanografia",label:"Revista de Biolog\xEDa Marina y Oceanograf\xEDa"},{value:"revista-de-biologia-tropical",label:"Revista de Biolog\xEDa Tropical (International Journal of Tropical Biology and Conservation)"},{value:"revista-de-filologia-espanola",label:"Revista de Filolog\xEDa Espa\xF1ola (Espa\xF1ol)"},{value:"revista-do-instituto-de-medicina-tropical-de-sao-paulo",label:"Revista do Instituto de Medicina Tropical de S\xE3o Paulo"},{value:"revista-espanola-de-nutricion-humana-y-dietetica",label:"Revista Espanola de Nutricion Humana y Dietetica (Espa\xF1ol)"},{value:"revista-fave-seccion-ciencias-agrarias",label:"Revista FAVE - Secci\xF3n Ciencias Agrarias (Espa\xF1ol)"},{value:"revista-ladinia",label:"Revista Ladinia"},{value:"revista-latinoamericana-de-metalurgia-y-materiales",label:"Revista Latinoamericana de Metalurgia y Materiales"},{value:"revista-latinoamericana-de-recursos-naturales",label:"Revista Latinoamericana de Recursos Naturales"},{value:"revista-materia",label:"Revista Mat\xE9ria"},{value:"revista-noesis",label:"Revista N\xF3esis"},{value:"revista-peruana-de-medicina-experimental-y-salud-publica",label:"Revista Peruana de Medicina Experimental y Salud P\xFAblica (Espa\xF1ol)"},{value:"revista-portuguesa-de-arqueologia",label:"Revista Portuguesa de Arqueologia"},{value:"revista-virtual-de-quimica",label:"Revista Virtual de Qu\xEDmica (Portugu\xEAs - Brasil)"},{value:"revue-archeologique-de-lest",label:"Revue arch\xE9ologique de l\u2019Est (Fran\xE7ais)"},{value:"revue-archeologique-de-narbonnaise",label:"Revue arch\xE9ologique de Narbonnaise (French)"},{value:"revue-archeologique-du-centre-de-la-france",label:"Revue arch\xE9ologique du Centre de la France (Fran\xE7ais)"},{value:"revue-archeologique",label:"Revue Arch\xE9ologique (Fran\xE7ais)"},{value:"revue-d-elevage-et-de-medecine-veterinaire-des-pays-tropicaux",label:"Revue d'\xE9levage et de m\xE9decine v\xE9t\xE9rinaire des pays tropicaux (Fran\xE7ais)"},{value:"revue-de-medecine-veterinaire",label:"Revue de M\xE9decine V\xE9t\xE9rinaire (Fran\xE7ais)"},{value:"revue-de-qumran",label:"Revue de Qumr\xE2n"},{value:"revue-des-etudes-byzantines",label:"Revue des \xC9tudes Byzantines"},{value:"revue-des-nouvelles-technologies-de-l-information",label:"Revue des Nouvelles Technologies de l'Information (Fran\xE7ais)"},{value:"revue-dhistoire-des-sciences-humaines",label:"Revue d'histoire des sciences humaines (Fran\xE7ais)"},{value:"revue-dhistoire-moderne-et-contemporaine",label:"Revue d'histoire moderne et contemporaine (Fran\xE7ais)"},{value:"revue-europeenne-des-migrations-internationales",label:"Revue Europe\u0301enne des Migrations Internationales"},{value:"revue-forestiere-francaise",label:"Revue foresti\xE8re fran\xE7aise (Fran\xE7ais)"},{value:"revue-francaise-d-administration-publique",label:"Revue fran\xE7aise d'administration publique (Fran\xE7ais)"},{value:"revue-francaise-de-gestion",label:"Revue fran\xE7aise de gestion (Fran\xE7ais)"},{value:"revue-francaise-de-sociologie",label:"Revue fran\xE7aise de sociologie (Fran\xE7ais)"},{value:"rhinology",label:"Rhinology"},{value:"rhodora",label:"Rhodora"},{value:"risk-analysis",label:"Risk Analysis"},{value:"ritid",label:"Riti\xF0: t\xEDmarit Hugv\xEDsindastofnunar (\xCDslenska)"},{value:"rivista-italiana-di-paleontologia-e-stratigrafia",label:"Rivista Italiana di Paleontologia e Stratigrafia"},{value:"rmit-university-harvard",label:"RMIT University - Harvard"},{value:"rofo",label:"R\xF6Fo: Fortschritte auf dem Gebiet der R\xF6ntgenstrahlen und bildgebenden Verfahren"},{value:"romanian-humanities",label:"Romanian Humanities (Rom\xE2n\u0103)"},{value:"rose-school",label:"ROSE School"},{value:"rossiiskii-fiziologicheskii-zhurnal-imeni-i-m-sechenova",label:"\u0420\u043E\u0441\u0441\u0438\u0439\u0441\u043A\u0438\u0439 \u0444\u0438\u0437\u0438\u043E\u043B\u043E\u0433\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0436\u0443\u0440\u043D\u0430\u043B \u0438\u043C. \u0418.\u041C. \u0421\u0435\u0447\u0435\u043D\u043E\u0432\u0430 (\u0420\u0443\u0301\u0441\u0441\u043A\u0438\u0439)"},{value:"royal-college-of-nursing-harvard",label:"Royal College of Nursing - Harvard"},{value:"royal-society-of-chemistry-with-titles",label:"Royal Society of Chemistry (with titles)"},{value:"royal-society-of-chemistry",label:"Royal Society of Chemistry"},{value:"rtf-scan",label:"RTF Scan"},{value:"ruhr-universitat-bochum-lehrstuhl-fur-industrial-sales-and-service-engineering",label:"Ruhr-Universit\xE4t Bochum - Lehrstuhl f\xFCr Industrial Sales and Service Engineering"},{value:"ruhr-universitat-bochum-medizinische-fakultat-numeric",label:"Ruhr-Universit\xE4t Bochum - Medizinische Fakult\xE4t (numerisch, Deutsch)"},{value:"sage-harvard",label:"SAGE - Harvard"},{value:"sage-vancouver-brackets",label:"SAGE - Vancouver (brackets)"},{value:"sage-vancouver",label:"SAGE - Vancouver"},{value:"saglik-bilimleri-universitesi",label:"Sa\u011Fl\u0131k Bilimleri \xDCniversitesi"},{value:"saint-paul-university-faculty-of-canon-law",label:"Saint Paul University - Faculty of Canon Law"},{value:"san-francisco-estuary-and-watershed-science",label:"San Francisco Estuary & Watershed Science"},{value:"sanamed",label:"Sanamed"},{value:"scandinavian-journal-of-infectious-diseases",label:"Scandinavian Journal of Infectious Diseases"},{value:"scandinavian-journal-of-information-systems",label:"Scandinavian Journal of Information Systems"},{value:"scandinavian-journal-of-medicine-and-science-in-sports",label:"Scandinavian Journal of Medicine & Science in Sports"},{value:"scandinavian-journal-of-rheumatology",label:"Scandinavian Journal of Rheumatology"},{value:"scandinavian-journal-of-work-environment-and-health",label:"Scandinavian Journal of Work, Environment & Health"},{value:"scandinavian-political-studies",label:"Scandinavian Political Studies"},{value:"science-and-technology-for-the-built-environment",label:"Science and Technology for the Built Environment"},{value:"science-china-chemistry",label:"Science China Chemistry"},{value:"science-china-earth-sciences",label:"SCIENCE CHINA Earth Sciences"},{value:"science-china-life-sciences",label:"SCIENCE CHINA Life Sciences"},{value:"science-china-materials",label:"SCIENCE CHINA Materials"},{value:"science-translational-medicine",label:"Science Translational Medicine"},{value:"science-without-titles",label:"Science (without titles)"},{value:"science",label:"Science"},{value:"scienceasia",label:"ScienceAsia"},{value:"sciences-po-ecole-doctorale-author-date",label:"Sciences Po - Ecole doctorale (author-date, Fran\xE7ais)"},{value:"sciences-po-ecole-doctorale-note-french",label:"Sciences Po - \xC9cole doctorale (note, Fran\xE7ais)"},{value:"scientia-agriculturae-bohemica",label:"Scientia Agriculturae Bohemica"},{value:"scientia-iranica",label:"Scientia Iranica"},{value:"scientific-review-engineering-and-environmental-sciences",label:"Scientific Review Engineering and Environmental Sciences (Przegl\u0105d Naukowy In\u017Cynieria i Kszta\u0142towanie \u015Arodowiska)"},{value:"scrinium",label:"Scrinium"},{value:"sedimentology",label:"Sedimentology"},{value:"seed-science-and-technology",label:"Seed Science and Technology"},{value:"seed-science-research",label:"Seed Science Research"},{value:"seismological-research-letters",label:"Seismological Research Letters"},{value:"sekolah-tinggi-meteorologi-klimatologi-dan-geofisika",label:"Sekolah Tinggi Meteorologi Klimatologi dan Geofisika (Bahasa Indonesia)"},{value:"seminaire-saint-sulpice-ecole-theologie",label:"S\xE9minaire Saint-Sulpice - Ecole Th\xE9ologie (Fran\xE7ais)"},{value:"seminars-in-pediatric-neurology",label:"Seminars in Pediatric Neurology"},{value:"serbian-archives-of-medicine",label:"Vancouver - Serbian Archives of Medicine"},{value:"serdica-journal-of-computing",label:"Serdica Journal of Computing"},{value:"service-medical-de-l-assurance-maladie",label:"Service M\xE9dical de l'Assurance Maladie (Fran\xE7ais)"},{value:"sexual-development",label:"Sexual Development"},{value:"sexual-health",label:"Sexual Health"},{value:"sheffield-hallam-university-history",label:"Sheffield Hallam University - History"},{value:"shock",label:"Shock"},{value:"sinergie-italian-journal-of-management",label:"Sinergie Italian Journal of Management"},{value:"sist02",label:"SIST02 (\u65E5\u672C\u8A9E)"},{value:"skene-journal-of-theatre-and-drama-studies",label:"Sken\xE8. Journal of Theatre and Drama Studies"},{value:"small",label:"Small"},{value:"smithsonian-institution-scholarly-press-author-date",label:"Smithsonian Institution Scholarly Press (author-date)"},{value:"smithsonian-institution-scholarly-press-botany",label:"Smithsonian Institution Scholarly Press - Botany (author-date)"},{value:"smithsonian-institution-scholarly-press-note",label:"Smithsonian Institution Scholarly Press (note)"},{value:"smyrna-tip-dergisi",label:"Smyrna T\u0131p Dergisi (T\xFCrk\xE7e)"},{value:"social-anthropology",label:"Social Anthropology/Anthropologie Sociale"},{value:"social-cognitive-and-affective-neuroscience",label:"Social Cognitive and Affective Neuroscience"},{value:"sociedade-brasileira-de-computacao",label:"Sociedade Brasileira de Computa\xE7\xE3o"},{value:"societe-archeologique-de-bordeaux",label:"Soci\xE9t\xE9 Arch\xE9ologique de Bordeaux (Fran\xE7ais)"},{value:"societe-francaise-detude-de-la-ceramique-antique-en-gaule",label:"Soci\xE9t\xE9 Fran\xE7aise d\u2019\xC9tude de la C\xE9ramique Antique en Gaule (Fran\xE7ais)"},{value:"societe-nationale-des-groupements-techniques-veterinaires",label:"Soci\xE9t\xE9 Nationale des Groupements Techniques V\xE9t\xE9rinaires (Fran\xE7ais)"},{value:"societes-contemporaines",label:"Soci\xE9t\xE9s Contemporaines"},{value:"society-for-american-archaeology",label:"Society for American Archaeology"},{value:"society-for-historical-archaeology",label:"Society for Historical Archaeology"},{value:"society-for-laboratory-automation-and-screening",label:"Society for Laboratory Automation and Screening"},{value:"society-of-automotive-engineers-technical-papers-numeric",label:"Society of Automotive Engineers Technical Papers (numeric)"},{value:"society-of-biblical-literature-1st-edition-fullnote-bibliography",label:"Society of Biblical Literature 1st edition (full note)"},{value:"society-of-biblical-literature-author-date",label:"Society of Biblical Literature 2nd edition (author-date)"},{value:"society-of-biblical-literature-fullnote-bibliography",label:"Society of Biblical Literature 2nd edition (full note)"},{value:"socio-economic-review",label:"Socio-Economic Review"},{value:"sociology-of-health-and-illness",label:"Sociology of Health & Illness"},{value:"sodertorns-hogskola-harvard-ibid",label:"S\xF6dert\xF6rns h\xF6gskola - Harvard (with Ibid.)"},{value:"sodertorns-hogskola-harvard",label:"S\xF6dert\xF6rns h\xF6gskola - Harvard"},{value:"sodertorns-hogskola-oxford",label:"S\xF6dert\xF6rns h\xF6gskola - Oxford"},{value:"soil-biology-and-biochemistry",label:"Soil Biology and Biochemistry"},{value:"soil-science-and-plant-nutrition",label:"Soil Science and Plant Nutrition"},{value:"solent-university-harvard",label:"Solent University - Harvard"},{value:"solutions",label:"Solutions"},{value:"sorbonne-student-law-review",label:"Sorbonne Student Law Review - Revue juridique des \xE9tudiants de la Sorbonne"},{value:"south-african-actuarial-journal",label:"South African Actuarial Journal"},{value:"south-african-journal-of-animal-science",label:"South African Journal of Animal Science"},{value:"south-african-journal-of-enology-and-viticulture",label:"South African Journal of Enology and Viticulture"},{value:"south-african-journal-of-geology",label:"South African Journal of Geology"},{value:"south-african-medical-journal",label:"South African Medical Journal"},{value:"south-african-theological-seminary",label:"South African Theological Seminary"},{value:"southeastern-geographer",label:"Southeastern Geographer"},{value:"southern-african-journal-of-critical-care",label:"Southern African Journal of Critical Care"},{value:"soziale-welt",label:"Soziale Welt (Deutsch)"},{value:"sozialpadagogisches-institut-berlin-walter-may",label:"Sozialp\xE4dagogisches Institut Berlin - Walter May (Deutsch)"},{value:"sozialwissenschaften-heilmann",label:"Sozialwissenschaften (Heilmann) (Deutsch)"},{value:"soziologie",label:"Soziologie (Deutsch)"},{value:"soziologiemagazin",label:"Soziologiemagazin (Deutsch)"},{value:"spandidos-publications",label:"Spandidos Publications"},{value:"spanish-legal",label:"Spanish Legal (Espa\xF1ol)"},{value:"spectroscopy-letters",label:"Spectroscopy Letters"},{value:"speculum",label:"Speculum"},{value:"spie-bios",label:"SPIE BiOS"},{value:"spie-journals",label:"SPIE journals"},{value:"spie-proceedings",label:"SPIE Conference Proceedings"},{value:"spine",label:"Spine"},{value:"spip-cite",label:"SPIP - Cite plugin"},{value:"sports-health",label:"Sports Health"},{value:"springer-basic-author-date-no-et-al-with-issue",label:'Springer - Basic (author-date, no "et al.", with issue numbers)'},{value:"springer-basic-author-date-no-et-al",label:'Springer - Basic (author-date, no "et al.")'},{value:"springer-basic-author-date",label:"Springer - Basic (author-date)"},{value:"springer-basic-brackets-no-et-al-alphabetical",label:'Springer - Basic (numeric, brackets, no "et al.", alphabetical)'},{value:"springer-basic-brackets-no-et-al",label:'Springer - Basic (numeric, brackets, no "et al.")'},{value:"springer-basic-brackets",label:"Springer - Basic (numeric, brackets)"},{value:"springer-basic-note",label:"Springer - Basic (note)"},{value:"springer-fachzeitschriften-medizin-psychologie",label:"Springer - Fachzeitschriften Medizin Psychologie (Deutsch)"},{value:"springer-humanities-author-date",label:"Springer - Humanities (author-date)"},{value:"springer-humanities-brackets",label:"Springer - Humanities (numeric, brackets)"},{value:"springer-imis-series-migrationsgesellschaften",label:"Springer - IMIS Series Migrationsgesellschaften"},{value:"springer-lecture-notes-in-computer-science-alphabetical",label:"Springer - Lecture Notes in Computer Science (sorted alphabetically)"},{value:"springer-lecture-notes-in-computer-science",label:"Springer - Lecture Notes in Computer Science"},{value:"springer-mathphys-author-date",label:"Springer - MathPhys (author-date)"},{value:"springer-mathphys-brackets",label:"Springer - MathPhys (numeric, brackets)"},{value:"springer-physics-author-date",label:"Springer - Physics (author-date)"},{value:"springer-physics-brackets",label:"Springer - Physics (numeric, brackets)"},{value:"springer-socpsych-author-date",label:"Springer - SocPsych (author-date)"},{value:"springer-socpsych-brackets",label:"Springer - SocPsych (numeric, brackets)"},{value:"springer-vancouver-author-date",label:"Springer - Vancouver (author-date)"},{value:"springer-vancouver-brackets",label:"Springer - Vancouver (brackets)"},{value:"springer-vancouver",label:"Springer - Vancouver"},{value:"springer-vs-author-date",label:"Springer VS (author-date, Deutsch)"},{value:"springerprotocols",label:"SpringerProtocols"},{value:"st-patricks-college",label:"St Patrick's College"},{value:"statistika-statistics-and-economy-journal",label:"Statistika: Statistics and Economy Journal"},{value:"stavebni-obzor",label:"Stavebn\xED obzor (\u010Ce\u0161tina)"},{value:"steel-research-international",label:"Steel Research International"},{value:"steinbeis-hochschule-school-of-management-and-innovation",label:"Steinbeis-Hochschule - School of Management & Innovation (Deutsch)"},{value:"stellenbosch-law-review",label:"Stellenbosch Law Review"},{value:"stem-cells",label:"Stem Cells"},{value:"strategic-design-research-journal",label:"Strategic Design Research Journal"},{value:"strategic-entrepreneurship-journal",label:"Strategic Entrepreneurship Journal"},{value:"strategic-management-journal",label:"Strategic Management Journal"},{value:"stroke",label:"Stroke"},{value:"structural-control-and-health-monitoring",label:"Structural Control and Health Monitoring"},{value:"studi-e-materiali-di-storia-delle-religioni",label:"Studi e materiali di storia delle religioni (Italiano)"},{value:"studi-slavistici-rivista-dellassociazione-italiana-degli-slavisti",label:"Studi Slavistici Rivista dell\u2019Associazione Italiana degli Slavisti"},{value:"studia-bas",label:"Studia BAS (Polski)"},{value:"studies-in-the-history-of-gardens-and-designed-landscapes",label:"Studies in the History of Gardens & Designed Landscapes"},{value:"studii-teologice",label:"Studii Teologice"},{value:"stuttgart-media-university",label:"Hochschule der Medien Stuttgart (Deutsch)"},{value:"style-manual-australian-government-note",label:"Style Manual - Australian Government (note)"},{value:"style-manual-australian-government",label:"Style Manual - Australian Government (author-date)"},{value:"style-manual-for-authors-editors-and-printers-6th-edition-snooks-co",label:"Style manual for authors, editors and printers 6th edition (Snooks & Co.) (author-date)"},{value:"suburban-zeitschrift-fur-kritische-stadtforschung",label:"sub\\urban - Zeitschrift f\xFCr kritische Stadtforschung (Deutsch)"},{value:"sunway-college-johor-bahru",label:"Sunway College Johor Bahru - Harvard"},{value:"surgical-clinics-of-north-america",label:"Surgical Clinics of North America"},{value:"surgical-neurology-international",label:"Surgical Neurology International"},{value:"surgical-pathology-clinics",label:"Surgical Pathology Clinics"},{value:"svensk-exegetisk-arsbok",label:"Svensk exegetisk \xE5rsbok (full note)"},{value:"swedish-legal",label:"Swedish Legal (Svenska)"},{value:"swiss-political-science-review",label:"Swiss Political Science Review"},{value:"sylwan",label:"Sylwan (Polski)"},{value:"synthesis",label:"Synthesis"},{value:"system-dynamics-review",label:"System Dynamics Review"},{value:"systematic-and-applied-microbiology",label:"Systematic and Applied Microbiology"},{value:"systematic-biology",label:"Systematic Biology"},{value:"szociologiai-szemle",label:"Szociol\xF3giai Szemle (Magyar)"},{value:"tabula",label:"T\xE1bula (Espa\xF1ol)"},{value:"tagungsberichte-der-historischen-kommission-fur-ost-und-westpreussische-landesforschung",label:"Tagungsberichte der Historischen Kommission f\xFCr ost- und westpreu\xDFische Landesforschung (Deutsch)"},{value:"tatup-zeitschrift-fur-technikfolgenabschatzung-in-theorie-und-praxis",label:"TATuP - Zeitschrift f\xFCr Technikfolgenabsch\xE4tzung in Theorie und Praxis"},{value:"taxon",label:"Taxon"},{value:"taylor-and-francis-acs",label:"Taylor & Francis - American Chemical Society"},{value:"taylor-and-francis-chicago-author-date",label:"Taylor & Francis - Chicago Manual of Style (author-date)"},{value:"taylor-and-francis-chicago-f",label:"Taylor & Francis - Chicago F"},{value:"taylor-and-francis-council-of-science-editors-author-date",label:"Taylor & Francis - Council of Science Editors (author-date)"},{value:"taylor-and-francis-council-of-science-editors-numeric",label:"Taylor & Francis - Council of Science Editors (numeric)"},{value:"taylor-and-francis-harvard-x",label:"Taylor & Francis - Harvard X"},{value:"taylor-and-francis-national-library-of-medicine",label:"Taylor & Francis - National Library of Medicine"},{value:"taylor-and-francis-numeric-q",label:"Taylor & Francis - Numeric Q"},{value:"taylor-and-francis-vancouver-national-library-of-medicine",label:"Taylor & Francis - Vancouver/National Library of Medicine"},{value:"techniques-et-culture",label:"Techniques&Culture (Fran\xE7ais)"},{value:"technische-universitat-dortmund-ag-virtual-machining",label:"Technische Universit\xE4t Dortmund - AG Virtual Machining (Deutsch)"},{value:"technische-universitat-dresden-betriebswirtschaftslehre-logistik-author-date",label:"Technische Universit\xE4t Dresden - Betriebswirtschaftslehre/Logistik (author-date)"},{value:"technische-universitat-dresden-betriebswirtschaftslehre-marketing",label:"Technische Universit\xE4t Dresden - Betriebswirtschaftslehre/Marketing (author-date)"},{value:"technische-universitat-dresden-betriebswirtschaftslehre-rechnungswesen-controlling",label:"Technische Universit\xE4t Dresden - Betriebswirtschaftslehre/Rechnungswesen/Controlling (Deutsch)"},{value:"technische-universitat-dresden-erziehungswissenschaften-author-date",label:"Technische Universit\xE4t Dresden - Erziehungswissenschaften (author-date)"},{value:"technische-universitat-dresden-finanzwirtschaft-und-finanzdienstleistungen-author-date-with-short-titles",label:"Technische Universit\xE4t Dresden - Finanzwirtschaft und Finanzdienstleistungen (author-date, with short titles)"},{value:"technische-universitat-dresden-finanzwirtschaft-und-finanzdienstleistungen-author-date",label:"Technische Universit\xE4t Dresden - Finanzwirtschaft und Finanzdienstleistungen (author-date)"},{value:"technische-universitat-dresden-finanzwirtschaft-und-finanzdienstleistungen-note",label:"Technische Universit\xE4t Dresden - Finanzwirtschaft und Finanzdienstleistungen (note)"},{value:"technische-universitat-dresden-forstwissenschaft",label:"Technische Universit\xE4t Dresden - Forstwissenschaft (author-date, Deutsch)"},{value:"technische-universitat-dresden-historische-musikwissenschaft-note",label:"Technische Universit\xE4t Dresden - Historische Musikwissenschaft (note, Deutsch)"},{value:"technische-universitat-dresden-kunstgeschichte-note",label:"Technische Universit\xE4t Dresden - Kunstgeschichte (note, Deutsch)"},{value:"technische-universitat-dresden-linguistik",label:"Technische Universit\xE4t Dresden - Linguistik (Deutsch)"},{value:"technische-universitat-dresden-medienwissenschaft-und-neuere-deutsche-literatur-note",label:"Technische Universit\xE4t Dresden - Medienwissenschaft und Neuere Deutsche Literatur (note, Deutsch)"},{value:"technische-universitat-dresden-medizin",label:"Technische Universit\xE4t Dresden - Medizin"},{value:"technische-universitat-dresden-wirtschaftswissenschaften",label:"Technische Universit\xE4t Dresden - Wirtschaftswissenschaften (Deutsch)"},{value:"technische-universitat-munchen-controlling",label:"Technische Universit\xE4t M\xFCnchen - Controlling (Deutsch)"},{value:"technische-universitat-munchen-unternehmensfuhrung",label:"Technische Universit\xE4t M\xFCnchen - Unternehmensf\xFChrung (Deutsch)"},{value:"technische-universitat-wien",label:"Technische Universit\xE4t Wien (dissertation) (Deutsch)"},{value:"teologia-catalunya",label:"Teologia Catalunya"},{value:"termedia-neuropsychiatria-i-neuropsychologia-neuropsychiatry-and-neuropsychology",label:"Termedia Neuropsychiatria i Neuropsychologia/Neuropsychiatry and Neuropsychology"},{value:"terra-nova",label:"Terra Nova"},{value:"tetrahedron-letters",label:"Tetrahedron Letters"},{value:"textual-cultures",label:"Textual Cultures"},{value:"textual-practice",label:"Textual Practice"},{value:"tgm-wien-diplom",label:"TGM Wien Diplomarbeit (Deutsch)"},{value:"tgm-wien-diplomarbeit-onorm",label:"TGM Wien Diplomarbeit \xD6NORM (Deutsch - \xD6sterreich)"},{value:"the-accounting-review",label:"The Accounting Review"},{value:"the-american-journal-of-bioethics",label:"The American Journal of Bioethics"},{value:"the-american-journal-of-cardiology",label:"The American Journal of Cardiology"},{value:"the-american-journal-of-dermatopathology",label:"The American Journal of Dermatopathology"},{value:"the-american-journal-of-gastroenterology",label:"The American Journal of Gastroenterology"},{value:"the-american-journal-of-geriatric-psychiatry",label:"The American Journal of Geriatric Psychiatry"},{value:"the-american-journal-of-human-genetics",label:"The American Journal of Human Genetics"},{value:"the-american-journal-of-pathology",label:"The American Journal of Pathology"},{value:"the-american-journal-of-psychiatry",label:"The American Journal of Psychiatry"},{value:"the-american-journal-of-tropical-medicine-and-hygiene",label:"The American Journal of Tropical Medicine and Hygiene"},{value:"the-american-midland-naturalist",label:"The American Midland Naturalist"},{value:"the-american-naturalist",label:"The American Naturalist"},{value:"the-angle-orthodontist",label:"The Angle Orthodontist"},{value:"the-astrophysical-journal",label:"The Astrophysical Journal"},{value:"the-auk",label:"The Auk"},{value:"the-australian-journal-of-agricultural-and-resource-economics",label:"The Australian Journal of Agricultural and Resource Economics"},{value:"the-biological-bulletin",label:"The Biological Bulletin"},{value:"the-bone-and-joint-journal",label:"The Bone & Joint Journal"},{value:"the-botanical-review",label:"The Botanical Review"},{value:"the-bovine-practitioner",label:"The Bovine Practitioner"},{value:"the-british-journal-for-the-philosophy-of-science",label:"The British Journal for the Philosophy of Science"},{value:"the-british-journal-of-cardiology",label:"The British Journal of Cardiology"},{value:"the-british-journal-of-criminology",label:"The British Journal of Criminology"},{value:"the-british-journal-of-psychiatry",label:"The British Journal of Psychiatry"},{value:"the-british-journal-of-sociology",label:"The British Journal of Sociology"},{value:"the-canadian-geographer",label:"The Canadian Geographer (Le G\xE9ographe canadien)"},{value:"the-canadian-journal-of-chemical-engineering",label:"The Canadian Journal of Chemical Engineering"},{value:"the-canadian-journal-of-psychiatry",label:"The Canadian Journal of Psychiatry"},{value:"the-cancer-journal",label:"The Cancer Journal"},{value:"the-chemical-society-of-japan",label:"The Chemical Society of Japan"},{value:"the-chinese-journal-of-international-politics",label:"The Chinese Journal of International Politics"},{value:"the-company-of-biologists",label:"The Company of Biologists"},{value:"the-design-journal",label:"The Design Journal"},{value:"the-economic-history-review",label:"The Economic History Review"},{value:"the-european-research-journal",label:"The European Research Journal"},{value:"the-faseb-journal",label:"The FASEB Journal"},{value:"the-febs-journal",label:"The FEBS Journal"},{value:"the-geological-society-of-america",label:"The Geological Society of America"},{value:"the-geological-society-of-london",label:"The Geological Society of London"},{value:"the-hastings-center-report",label:"The Hastings Center Report"},{value:"the-historical-journal",label:"The Historical Journal"},{value:"the-holocene",label:"The Holocene"},{value:"the-horticulture-journal",label:"The Horticulture Journal"},{value:"the-institute-of-electronics-information-and-communication-engineers",label:"The Institute of Electronics, Information and Communication Engineers (\u96FB\u5B50\u60C5\u5831\u901A\u4FE1\u5B66\u4F1A)"},{value:"the-institution-of-engineering-and-technology",label:"The Institution of Engineering and Technology"},{value:"the-international-journal-of-developmental-biology",label:"The International Journal of Developmental Biology"},{value:"the-international-journal-of-psychoanalysis",label:"The International Journal of Psychoanalysis"},{value:"the-international-journal-of-tuberculosis-and-lung-disease",label:"The International Journal of Tuberculosis and Lung Disease"},{value:"the-isme-journal",label:"The ISME Journal"},{value:"the-journal-of-adhesive-dentistry",label:"The Journal of Adhesive Dentistry"},{value:"the-journal-of-agricultural-science",label:"The Journal of Agricultural Science"},{value:"the-journal-of-clinical-ethics",label:"The Journal of Clinical Ethics"},{value:"the-journal-of-clinical-investigation",label:"The Journal of Clinical Investigation"},{value:"the-journal-of-comparative-law",label:"The Journal of Comparative Law"},{value:"the-journal-of-comparative-neurology",label:"The Journal of Comparative Neurology"},{value:"the-journal-of-egyptian-archaeology",label:"The Journal of Egyptian Archaeology"},{value:"the-journal-of-eukaryotic-microbiology",label:"The Journal of Eukaryotic Microbiology"},{value:"the-journal-of-foot-and-ankle-surgery",label:"The Journal of Foot & Ankle Surgery"},{value:"the-journal-of-hand-surgery-asian-pacific-volume",label:"The Journal of Hand Surgery Asian-Pacific Volume"},{value:"the-journal-of-hand-surgery-european-volume",label:"The Journal of Hand Surgery (European Volume)"},{value:"the-journal-of-hellenic-studies",label:"The Journal of Hellenic Studies"},{value:"the-journal-of-immunology",label:"The Journal of Immunology"},{value:"the-journal-of-infection-in-developing-countries",label:"The Journal of Infection in Developing Countries"},{value:"the-journal-of-juristic-papyrology",label:"The Journal of Juristic Papyrology"},{value:"the-journal-of-laryngology-and-otology",label:"The Journal of Laryngology & Otology"},{value:"the-journal-of-modern-history",label:"The Journal of Modern History"},{value:"the-journal-of-molecular-diagnostics",label:"The Journal of Molecular Diagnostics"},{value:"the-journal-of-nervous-and-mental-disease",label:"The Journal of Nervous and Mental Disease"},{value:"the-journal-of-neuropsychiatry-and-clinical-neurosciences",label:"The Journal of Neuropsychiatry and Clinical Neurosciences"},{value:"the-journal-of-neuroscience",label:"The Journal of Neuroscience"},{value:"the-journal-of-nuclear-medicine",label:"The Journal of Nuclear Medicine"},{value:"the-journal-of-nutrition-health-and-aging",label:"The Journal of Nutrition, Health & Aging"},{value:"the-journal-of-pain",label:"The Journal of Pain"},{value:"the-journal-of-parasitology",label:"The Journal of Parasitology"},{value:"the-journal-of-pathology",label:"The Journal of Pathology"},{value:"the-journal-of-peasant-studies",label:"The Journal of Peasant Studies"},{value:"the-journal-of-physiology",label:"The Journal of Physiology"},{value:"the-journal-of-pure-and-applied-chemistry-research",label:"The Journal of Pure and Applied Chemistry Research"},{value:"the-journal-of-roman-studies",label:"The Journal of Roman Studies"},{value:"the-journal-of-the-acoustical-society-of-america-numeric",label:"The Journal of the Acoustical Society of America (numeric)"},{value:"the-journal-of-the-acoustical-society-of-america",label:"The Journal of the Acoustical Society of America (author-date)"},{value:"the-journal-of-the-torrey-botanical-society",label:"The Journal of the Torrey Botanical Society"},{value:"the-journal-of-transport-history",label:"The Journal of Transport History"},{value:"the-journal-of-trauma-and-acute-care-surgery",label:"The Journal of Trauma and Acute Care Surgery"},{value:"the-journal-of-urology",label:"The Journal of Urology"},{value:"the-journal-of-veterinary-medical-science",label:"The Journal of Veterinary Medical Science"},{value:"the-journal-of-wildlife-management",label:"The Journal of Wildlife Management"},{value:"the-journals-of-gerontology-series-a",label:"The Journals of Gerontology, Series A: Biological Sciences and Medical Sciences"},{value:"the-korean-journal-of-gastroenterology",label:"The Korean Journal of Gastroenterology"},{value:"the-korean-journal-of-internal-medicine",label:"The Korean Journal of Internal Medicine"},{value:"the-korean-journal-of-mycology",label:"The Korean Journal of Mycology"},{value:"the-lancet",label:"The Lancet"},{value:"the-lichenologist",label:"The Lichenologist"},{value:"the-national-medical-journal-of-india",label:"The National Medical Journal of India"},{value:"the-neuroscientist",label:"The Neuroscientist"},{value:"the-new-england-journal-of-medicine",label:"The New England Journal of Medicine"},{value:"the-oncologist",label:"The Oncologist"},{value:"the-open-university-a251",label:"The Open University - A251 - Arts Course"},{value:"the-open-university-harvard",label:"The Open University - Harvard"},{value:"the-open-university-m801",label:"The Open University - M801 - Research Project and Dissertation"},{value:"the-open-university-numeric-superscript",label:"The Open University (numeric, superscript)"},{value:"the-open-university-numeric",label:"The Open University (numeric)"},{value:"the-open-university-s390",label:"The Open University - S390"},{value:"the-optical-society",label:"The Optical Society"},{value:"the-pan-african-medical-journal",label:"The Pan African Medical Journal"},{value:"the-plant-cell",label:"The Plant Cell"},{value:"the-plant-genome",label:"The Plant Genome"},{value:"the-plant-journal",label:"The Plant Journal"},{value:"the-quarterly-journal-of-economics",label:"The Quarterly Journal of Economics"},{value:"the-review-of-financial-studies",label:"The Review of Financial Studies"},{value:"the-rockefeller-university-press",label:"The Rockefeller University Press"},{value:"the-saudi-journal-for-dental-research",label:"The Saudi Journal for Dental Research"},{value:"the-scandinavian-journal-of-clinical-and-laboratory-investigation",label:"The Scandinavian Journal of Clinical & Laboratory Investigation"},{value:"the-university-of-tokyo-law-review",label:"\u6771\u4EAC\u5927\u5B66\u6CD5\u79D1\u5927\u5B66\u9662\u30ED\u30FC\u30EC\u30D3\u30E5\u30FC (The University of Tokyo Law Review) (\u65E5\u672C\u8A9E)"},{value:"the-university-of-western-australia-harvard",label:"The University of Western Australia - Harvard"},{value:"the-university-of-winchester-harvard",label:"The University of Winchester - Harvard"},{value:"the-world-journal-of-biological-psychiatry",label:"The World Journal of Biological Psychiatry"},{value:"theologie-und-philosophie",label:"Theologie und Philosophie (Deutsch)"},{value:"theory-culture-and-society",label:"Theory, Culture & Society"},{value:"theranostics",label:"Theranostics"},{value:"thieme-german",label:"Thieme-German (Deutsch)"},{value:"thomson-reuters-legal-tax-and-accounting-australia",label:"Thomson Reuters - Legal, Tax & Accounting Australia"},{value:"thrombosis-and-haemostasis",label:"Thrombosis and Haemostasis"},{value:"tijdschrift-voor-economische-en-sociale-geografie",label:"Tijdschrift voor economische en sociale geografie"},{value:"tijdschrift-voor-geneeskunde",label:"Tijdschrift voor Geneeskunde en Gezondheidszorg (Nederlands)"},{value:"topoi-orient-occident-auteur-date",label:"Topoi Orient-Occident (auteur-date, Fran\xE7ais)"},{value:"topoi-orient-occident-classique",label:"Topoi Orient-Occident (classique, Fran\xE7ais)"},{value:"toxicological-sciences",label:"Toxicological Sciences"},{value:"trabajos-de-prehistoria",label:"Trabajos de Prehistoria (Espa\xF1ol)"},{value:"traces",label:"Trac\xE9s: Revue de Sciences Humaines (Fran\xE7ais)"},{value:"traffic-injury-prevention",label:"Traffic Injury Prevention"},{value:"traffic",label:"Traffic"},{value:"transactions-of-the-american-philological-association",label:"Transactions of the American Philological Association"},{value:"transactions-of-the-materials-research-society-of-japan",label:"Transactions of the Materials Research Society of Japan"},{value:"transboundary-and-emerging-diseases",label:"Transboundary and Emerging Diseases"},{value:"transnational-environmental-law",label:"Transnational Environmental Law"},{value:"transplantation",label:"Transplantation"},{value:"transport",label:"Transport"},{value:"transportation-research-record",label:"Transportation Research Record: Journal of the Transportation Research Board"},{value:"transposition",label:"Transposition. Musique et sciences sociales"},{value:"transversalites",label:"Transversalit\xE9s (Fran\xE7ais)"},{value:"tree-physiology",label:"Tree Physiology"},{value:"trends-in-glycoscience-and-glycotechnology",label:"Trends in Glycoscience and Glycotechnology"},{value:"trends-journals",label:"Trends journals"},{value:"triangle",label:"Triangle (Fran\xE7ais)"},{value:"trinity-college-dublin-zoology-botany-environmental-sciences-harvard",label:"Trinity College Dublin - Zoology Botany Environmental Sciences - Harvard"},{value:"tropical-animal-health-and-production",label:"Tropical Animal Health and Production"},{value:"tsaqafah",label:"Tsaqafah"},{value:"turabian-author-date",label:"Turabian 9th edition (author-date)"},{value:"turabian-fullnote-bibliography-no-ibid",label:"Turabian 8th edition (full note, no ibid)"},{value:"turabian-fullnote-bibliography",label:"Turabian 8th edition (full note)"},{value:"turkiye-bilimsel-ve-teknolojik-arastirma-kurumu",label:"T\xDCB\u0130TAK (T\xFCrkiye Bilimsel ve Teknolojik Ara\u015Ft\u0131rma Kurumu) (T\xFCrk\xE7e)"},{value:"twentieth-century-music",label:"Twentieth-Century Music"},{value:"tyndale-bulletin",label:"Tyndale Bulletin"},{value:"u-schylku-starozytnosci",label:"U Schy\u0142ku Staro\u017Cytno\u015Bci (Polski)"},{value:"ucl-institute-of-education-harvard",label:"UCL Institute of Education - Harvard"},{value:"ucl-university-college-apa",label:"UCL University College - APA (Dansk)"},{value:"ucl-university-college-harvard",label:"UCL University College - Harvard (Dansk)"},{value:"ucl-university-college-vancouver",label:"UCL University College - Vancouver (English)"},{value:"uclouvain-centre-charles-de-visscher-pour-le-droit-international-et-europeen",label:"UCLouvain - Centre Charles De Visscher pour le droit international et europ\xE9en (French)"},{value:"ugeskrift-for-laeger",label:"Ugeskrift for L\xE6ger (Dansk)"},{value:"ultrasound-in-medicine-and-biology",label:"Ultrasound in Medicine and Biology"},{value:"ulua-revista-de-historia-sociedad-y-cultura",label:"Ul\xFAa. Revista de Historia, Sociedad y Cultura"},{value:"uludag-universitesi-sosyal-bilimler-enstitusu-author-date",label:"Uluda\u011F \xDCniversitesi - Sosyal Bilimler Enstit\xFCs\xFC (author-date, T\xFCrk\xE7e)"},{value:"uludag-universitesi-sosyal-bilimler-enstitusu-full-note-with-ibid",label:"Uluda\u011F \xDCniversitesi - Sosyal Bilimler Enstit\xFCs\xFC (full note, with Ibid., T\xFCrk\xE7e)"},{value:"uludag-universitesi-sosyal-bilimler-enstitusu-full-note",label:"Uluda\u011F \xDCniversitesi - Sosyal Bilimler Enstit\xFCs\xFC (full note, T\xFCrk\xE7e)"},{value:"uludag-universitesi-sosyal-bilimler-enstitusu-ilahiyat-fakultesi-full-note-with-ibid",label:"Uluda\u011F \xDCniversitesi - Sosyal Bilimler Enstit\xFCs\xFC - \u0130lahiyat Fak\xFCltesi (full note, with Ibid., T\xFCrk\xE7e)"},{value:"uludag-universitesi-sosyal-bilimler-enstitusu-ilahiyat-fakultesi-full-note",label:"Uluda\u011F \xDCniversitesi - Sosyal Bilimler Enstit\xFCs\xFC - \u0130lahiyat Fak\xFCltesi (full note, T\xFCrk\xE7e)"},{value:"unesco-international-institute-for-educational-planning",label:"UNESCO International Institute for Educational Planning"},{value:"unified-style-sheet-for-linguistics-de-gruyter-literature",label:"Unified Stylesheet for Linguistics (de Gruyter Literature)"},{value:"unified-style-sheet-for-linguistics",label:"Unified style sheet for linguistics"},{value:"united-nations-conference-on-trade-and-development",label:"United Nations Conference on Trade and Development"},{value:"united-nations-development-programme-icca-legal-review",label:"United Nations Development Programme ICCA Legal Review"},{value:"united-nations-framework-convention-on-climate-change",label:"United Nations Framework Convention on Climate Change"},{value:"united-states-international-trade-commission",label:"United States International Trade Commission"},{value:"universidad-autonoma-cidudad-juarez-estilo-latino-humanistico",label:"Universidad Aut\xF3noma de Ciudad Ju\xE1rez - Estilo Latino Human\xEDstico"},{value:"universidad-de-leon-harvard",label:"Universidad de Le\xF3n (Espa\xF1a) - Harvard"},{value:"universidad-evangelica-del-paraguay",label:"Universidad Evang\xE9lica del Paraguay (Espa\xF1ol)"},{value:"universidade-de-sao-paulo-escola-de-comunicacoes-e-artes-abnt",label:"Universidade de S\xE3o Paulo - Escola de Comunica\xE7\xF5es e Artes - ABNT (Portugu\xEAs - Brasil)"},{value:"universidade-de-sao-paulo-instituto-de-matematica-e-estatistica",label:"Universidade de S\xE3o Paulo - Instituto de Matem\xE1tica e Estat\xEDstica"},{value:"universidade-do-estado-do-rio-de-janeiro-abnt",label:"Universidade do Estado do Rio de Janeiro - ABNT (Portugu\xEAs - Brasil)"},{value:"universidade-do-porto-faculdade-de-engenharia-chicago-pt",label:"Universidade do Porto - Faculdade de Engenharia - Chicago Manual of Style 17th (author-date) (Portugu\xEAs - Portugal)"},{value:"universidade-do-porto-faculdade-de-engenharia-chicago",label:"Universidade do Porto - Faculdade de Engenharia - Chicago Manual of Style 17th (author-date)"},{value:"universidade-do-porto-faculdade-de-psicologia-e-de-ciencias-da-educacao",label:"Universidade do Porto - Faculdade de Psicologia e de Ci\xEAncias da Educa\xE7\xE3o - APA"},{value:"universidade-estadual-de-alagoas-abnt",label:"Universidade Estadual de Alagoas - ABNT (Portugu\xEAs - Brasil)"},{value:"universidade-estadual-do-oeste-do-parana-programa-institucional-de-bolsas-de-iniciacao-cientifica",label:"Universidade Estadual do Oeste do Paran\xE1 - Programa Institucional de Bolsas de Inicia\xE7\xE3o Cient\xEDfica (Portugu\xEAs - Brasil)"},{value:"universidade-estadual-paulista-campus-de-dracena-abnt",label:"Universidade Estadual Paulista - Campus de Dracena - ABNT (autoria abreviada) (Portugu\xEAs - Brasil)"},{value:"universidade-estadual-paulista-faculdade-de-engenharia-de-guaratingueta-abnt",label:"Universidade Estadual Paulista - Faculdade de Engenharia de Guaratingueta - ABNT (Portugu\xEAs - Brasil)"},{value:"universidade-federal-de-juiz-de-fora",label:"Universidade Federal de Juiz de Fora (Portugu\xEAs - Brasil)"},{value:"universidade-federal-de-pernambuco-abnt",label:"Universidade Federal de Pernambuco - ABNT (Portugu\xEAs - Brasil)"},{value:"universidade-federal-de-sergipe-departamento-de-engenharia-de-producao-abnt",label:"Universidade Federal de Sergipe - Departamento de Engenharia de Produ\xE7\xE3o - ABNT (Portugu\xEAs - Brasil)"},{value:"universidade-federal-do-espirito-santo-abnt-initials",label:"Universidade Federal do Esp\xEDrito Santo - ABNT (autoria abreviada) (Portugu\xEAs - Brasil)"},{value:"universidade-federal-do-espirito-santo-abnt",label:"Universidade Federal do Esp\xEDrito Santo - ABNT (autoria completa) (Portugu\xEAs - Brasil)"},{value:"universidade-federal-do-rio-de-janeiro-instituto-alberto-luiz-coimbra-de-pos-graduacao-e-pesquisa-de-engenharia-abnt",label:"Universidade Federal do Rio de Janeiro - Instituto Alberto Luiz Coimbra de P\xF3s-Gradua\xE7\xE3o e Pesquisa de Engenharia - ABNT (Portugu\xEAs - Brasil)"},{value:"universita-cattolica-del-sacro-cuore",label:"Universit\xE0 Cattolica del Sacro Cuore (note, Italiano)"},{value:"universita-di-bologna-lettere",label:"University of Bologna - Liberal Arts College (Universit\xE0 di Bologna - Facolt\xE0 di Lettere e Filosofia) (Italiano)"},{value:"universita-pontificia-salesiana-it",label:"Universit\xE0 Pontificia Salesiana (Italiano)"},{value:"universita-pontificia-salesiana",label:"Universit\xE0 Pontificia Salesiana"},{value:"universitas-gadjah-mada-departemen-sejarah",label:"Universitas Gadjah Mada - Departemen Sejarah (Bahasa Indonesia)"},{value:"universitas-negeri-semarang-fakultas-matematika-dan-ilmu-pengetahuan-alam",label:"Universitas Negeri Semarang - Fakultas Matematika dan Ilmu Pengetahuan Alam (Bahasa Indonesia)"},{value:"universitas-negeri-yogyakarta-program-pascasarjana",label:"Universitas Negeri Yogyakarta - Program Pascasarjana (Bahasa Indonesia)"},{value:"universitat-basel-deutsche-sprachwissenschaft",label:"Universit\xE4t Basel - Deutsche Sprachwissenschaft"},{value:"universitat-basel-iberoromanistik",label:"Universit\xE4t Basel - Iberoromanistik (Espa\xF1ol)"},{value:"universitat-bern-institut-fur-musikwissenschaft-note",label:"Universit\xE4t Bern - Institut f\xFCr Musikwissenschaft (note, Deutsch)"},{value:"universitat-bern-institut-fur-sozialanthropologie",label:"Universit\xE4t Bern - Institut f\xFCr Sozialanthropologie (Deutsch - Schweiz)"},{value:"universitat-bremen-institut-fur-politikwissenschaft",label:"Universit\xE4t Bremen - Institut f\xFCr Politikwissenschaft (Deutsch)"},{value:"universitat-bremen-lehrstuhl-fur-innovatives-markenmanagement",label:"Universit\xE4t Bremen - Lehrstuhl f\xFCr innovatives Markenmanagement (Deutsch)"},{value:"universitat-freiburg-geschichte",label:"Albert-Ludwigs-Universit\xE4t Freiburg - Geschichte (Deutsch)"},{value:"universitat-heidelberg-historisches-seminar",label:"Universit\xE4t Heidelberg - Historisches Seminar (Deutsch)"},{value:"universitat-heidelberg-medizinische-fakultat-mannheim-numeric",label:"Universit\xE4t Heidelberg - Medizinische Fakult\xE4t Mannheim (numerisch, Deutsch)"},{value:"universitat-mainz-geographisches-institut",label:"Universit\xE4t Mainz - Geographisches Institut (Deutsch)"},{value:"universitat-mannheim-germanistische-linguistik",label:"Universit\xE4t Mannheim - Germanistische Linguistik (Deutsch)"},{value:"universitat-stuttgart-planung-und-partizipation",label:"Universit\xE4t Stuttgart - Planung und Partizipation (Deutsch)"},{value:"universitat-wien-institut-fur-geschichte",label:"Universit\xE4t Wien - Institut f\xFCr Geschichte"},{value:"universitat-zu-koln-seminar-fur-abwl-und-finanzierungslehre",label:"Universit\xE4t zu K\xF6ln - Seminar f\xFCr ABWL und Finanzierungslehre (Deutsch)"},{value:"universitatsmedizin-gottingen",label:"Universit\xE4tsmedizin G\xF6ttingen (Deutsch)"},{value:"universite-catholique-de-louvain-histoire",label:"Universit\xE9 Catholique de Louvain - Histoire (Fran\xE7ais)"},{value:"universite-cheikh-anta-diop-faculte-de-medecine-de-pharmacie-et-dodontologie",label:"Universit\xE9 Cheikh Anta Diop - Facult\xE9 de M\xE9decine de Pharmacie et d'Odontologie (Fran\xE7ais)"},{value:"universite-de-bordeaux-ecole-doctorale-de-droit",label:"Universit\xE9 de Bordeaux - \xC9cole doctorale de droit (Fran\xE7ais)"},{value:"universite-de-geneve-departement-de-langue-et-de-litterature-francaises-modernes",label:"Universit\xE9 de Gen\xE8ve - D\xE9partement de langue et de litt\xE9rature fran\xE7aises modernes (Fran\xE7ais)"},{value:"universite-de-lausanne-histoire",label:"Universit\xE9 de Lausanne - Histoire (Fran\xE7ais)"},{value:"universite-de-liege-droit-par-categorie",label:"Universit\xE9 de Li\xE8ge - Droit (classement par cat\xE9gorie, Fran\xE7ais)"},{value:"universite-de-liege-droit",label:"Universit\xE9 de Li\xE8ge - Droit (Fran\xE7ais)"},{value:"universite-de-liege-histoire",label:"Universit\xE9 de Li\xE8ge - Histoire (Fran\xE7ais)"},{value:"universite-de-montreal-apa",label:"Universit\xE9 de Montr\xE9al - APA (Fran\xE7ais - Canada)"},{value:"universite-de-montreal-faculte-de-musique",label:"Universit\xE9 de Montr\xE9al - Facult\xE9 de musique (Fran\xE7ais - Canada)"},{value:"universite-de-picardie-jules-verne-ufr-de-medecine",label:"Universit\xE9 de Picardie Jules Verne (Amiens) - Th\xE8se de UFR de M\xE9decine"},{value:"universite-de-sherbrooke-departement-de-geomatique",label:"Universit\xE9 de Sherbrooke - D\xE9partement de g\xE9omatique (Fran\xE7ais - Canada)"},{value:"universite-de-sherbrooke-faculte-d-education",label:"Universit\xE9 de Sherbrooke - Facult\xE9 d'\xE9ducation (Fran\xE7ais - Canada)"},{value:"universite-de-sherbrooke-histoire",label:"Universit\xE9 de Sherbrooke - Histoire (Fran\xE7ais - Canada)"},{value:"universite-du-quebec-a-montreal-departement-dhistoire",label:"Universit\xE9 du Qu\xE9bec \xE0 Montr\xE9al - D\xE9partement d\u2019histoire (Fran\xE7ais - Canada)"},{value:"universite-du-quebec-a-montreal-etudes-litteraires-et-semiologie",label:"Universit\xE9 du Qu\xE9bec \xE0 Montr\xE9al - \xC9tudes litt\xE9raires et s\xE9miologie (Fran\xE7ais - Canada)"},{value:"universite-du-quebec-a-montreal",label:"Universit\xE9 du Qu\xE9bec \xE0 Montr\xE9al - APA (Fran\xE7ais - Canada)"},{value:"universite-laval-departement-des-sciences-historiques",label:"Universit\xE9 Laval - D\xE9partement des sciences historiques (Fran\xE7ais - Canada)"},{value:"universite-laval-departement-dinformation-et-de-communication",label:"Universit\xE9 Laval - D\xE9partement d'information et de communication (Fran\xE7ais - Canada)"},{value:"universite-laval-faculte-de-theologie-et-de-sciences-religieuses",label:"Universit\xE9 Laval - Facult\xE9 de th\xE9ologie et de sciences religieuses (Fran\xE7ais - Canada)"},{value:"universite-libre-de-bruxelles-histoire",label:"Universit\xE9 libre de Bruxelles - Histoire (Fran\xE7ais)"},{value:"universite-nangui-abrogoua-sciences-de-la-nature-apa",label:"Universit\xE9 Nangui Abrogoua - Sciences de la Nature - APA (Fran\xE7ais)"},{value:"universiteit-utrecht-onderzoeksgids-geschiedenis",label:"Universiteit Utrecht - Onderzoeksgids Geschiedenis (Nederlands)"},{value:"universitetet-i-oslo-rettsvitenskap",label:"Universitetet i Oslo - Rettsvitenskap (Norsk - Bokm\xE5l)"},{value:"universiti-kebangsaan-malaysia",label:"Universiti Kebangsaan Malaysia (Malay)"},{value:"university-college-dublin-school-of-history-and-archives",label:"University College Dublin - School of History & Archives"},{value:"university-college-lillebaelt-apa",label:"University College Lilleb\xE6lt - APA (Dansk)"},{value:"university-for-the-creative-arts-figures",label:"University for the Creative Arts (figures and illustrations)"},{value:"university-of-aberdeen-school-of-education-harvard",label:"University of Aberdeen - School of Education - Harvard"},{value:"university-of-aleppo-faculty-of-medicine",label:"University of Aleppo - Faculty of Medicine"},{value:"university-of-auckland-history",label:"University of Auckland - History"},{value:"university-of-bradford-harvard",label:"University of Bradford - Harvard"},{value:"university-of-cambridge-faculty-of-history",label:"University of Cambridge - Faculty of History"},{value:"university-of-gothenburg-apa-7th-edition-swedish-legislations",label:"University of Gothenburg - APA 7th edition (Swedish legislations)"},{value:"university-of-gothenburg-apa-swedish-legislations",label:"University of Gothenburg - APA 6th edition (Swedish legislations)"},{value:"university-of-helsinki-faculty-of-theology",label:"Helsingin yliopisto - Teologinen tiedekunta (Suomi)"},{value:"university-of-lincoln-harvard",label:"University of Lincoln - Harvard"},{value:"university-of-new-england-australia-note",label:"University of New England, Australia (note)"},{value:"university-of-roehampton-harvard",label:"University of Roehampton - Harvard"},{value:"university-of-south-africa-harvard",label:"University of South Africa - Harvard"},{value:"university-of-south-australia-2017-harvard",label:"University of South Australia 2017 - Harvard"},{value:"university-of-south-australia-harvard-2011",label:"University of South Australia 2011 - Harvard"},{value:"university-of-south-australia-harvard-2013",label:"University of South Australia 2013 - Harvard"},{value:"university-of-south-wales-harvard",label:"University of South Wales - Harvard"},{value:"university-of-tasmania-simplified-author-date",label:"University of Tasmania - Simplified Author-date"},{value:"university-of-york-apa",label:"University of York - APA 6th edition"},{value:"university-of-york-chicago",label:"University of York - Chicago Manual of Style 16th edition"},{value:"university-of-york-harvard-archaeology",label:"University of York - Harvard - Archaeology"},{value:"university-of-york-harvard-environment",label:"University of York - Harvard - Environment"},{value:"university-of-york-harvard",label:"University of York - Harvard"},{value:"university-of-york-ieee",label:"University of York - IEEE"},{value:"university-of-york-mhra",label:"University of York - Modern Humanities Research Association 3rd edition"},{value:"university-of-york-mla",label:"University of York - Modern Language Association 8th edition"},{value:"university-of-york-oscola",label:"University of York - OSCOLA"},{value:"university-of-york-vancouver",label:"University of York - Vancouver"},{value:"university-of-zabol-fa",label:"University of Zabol (\u0641\u0627\u0631\u0633\u06CC)"},{value:"university-of-zabol",label:"University of Zabol (English)"},{value:"univerza-na-primorskem-fakulteta-za-vede-o-zdravju-apa",label:"Univerza na Primorskem - Fakulteta za vede o zdravju - APA (Sloven\u0161\u010Dina)"},{value:"uniwersytet-im-adama-mickiewicza-w-poznaniu-wydzial-anglistyki",label:"Uniwersytet im. Adama Mickiewicza w Poznaniu - Wydzia\u0142 Anglistyki (English)"},{value:"uniwersytet-kardynala-stefana-wyszynskiego-w-warszawie-autor-rok",label:"Uniwersytet Kardyna\u0142a Stefana Wyszy\u0144skiego w Warszawie (autor-rok, Polski)"},{value:"uniwersytet-kardynala-stefana-wyszynskiego-w-warszawie-przypis",label:"Uniwersytet Kardyna\u0142a Stefana Wyszy\u0144skiego w Warszawie (przypis, Polski)"},{value:"uppsala-universitet-historia",label:"Uppsala universitet - Historia"},{value:"uppsala-universitet-institutionen-for-biologisk-grundutbildning",label:"Uppsala universitet, Institutionen f\xF6r biologisk grundutbildning"},{value:"urad-rs-za-makroekonomske-analize-in-razvoj",label:"Urad RS za makroekonomske analize in razvoj (Sloven\u0161\u010Dina)"},{value:"urban-geography",label:"Urban Geography"},{value:"urban-habitats",label:"Urban Habitats"},{value:"urban-studies",label:"Urban Studies"},{value:"urbani-izziv-en",label:"Urbani izziv (Urban Challenge) (English)"},{value:"urbani-izziv",label:"Urbani izziv (Urban Challenge) (Sloven\u0161\u010Dina)"},{value:"urological-science",label:"Urological Science"},{value:"us-geological-survey",label:"U.S. Geological Survey"},{value:"usda-forest-service-pacific-northwest-research-station",label:"USDA Forest Service - Pacific Northwest Research Station"},{value:"user-modeling-and-user-adapted-interaction",label:"User Modeling and User-Adapted Interaction"},{value:"uspekhi-gerontologii",label:"\u0423\u0441\u043F\u0435\u0445\u0438 \u0433\u0435\u0440\u043E\u043D\u0442\u043E\u043B\u043E\u0433\u0438\u0438 (\u0420\u0443\u0301\u0441\u0441\u043A\u0438\u0439)"},{value:"utah-geological-survey",label:"Utah Geological Survey"},{value:"vancouver-author-date",label:"Vancouver (author-date)"},{value:"vancouver-brackets-no-et-al",label:'Vancouver (brackets, no "et al.")'},{value:"vancouver-brackets-only-year-no-issue",label:"Vancouver (brackets, only year in date, no issue numbers)"},{value:"vancouver-brackets",label:"Vancouver (brackets)"},{value:"vancouver-fr-ca",label:"Vancouver (Fran\xE7ais - Canada)"},{value:"vancouver-imperial-college-london",label:"Imperial College London - Vancouver"},{value:"vancouver-superscript-brackets-only-year",label:"Vancouver (superscript, brackets, only year in date)"},{value:"vancouver-superscript-only-year",label:"Vancouver (superscript, only year in date, no issue numbers)"},{value:"vancouver-superscript",label:"Vancouver (superscript)"},{value:"vancouver",label:"Vancouver"},{value:"veterinaria-italiana",label:"Veterinaria Italiana"},{value:"veterinary-medicine-austria",label:"Veterinary Medicine Austria (Wiener Tier\xE4rztliche Monatsschrift)"},{value:"veterinary-microbiology",label:"Veterinary Microbiology"},{value:"veterinary-pathology",label:"Veterinary Pathology"},{value:"veterinary-radiology-and-ultrasound",label:"Veterinary Radiology & Ultrasound"},{value:"veterinary-record",label:"Veterinary Record"},{value:"victoria-university-harvard",label:"Victoria University - Harvard"},{value:"vienna-legal",label:"Vienna Legal"},{value:"vietnam-ministry-of-education-and-training-en",label:"Vietnam Ministry of Education and Training (English)"},{value:"vietnam-ministry-of-education-and-training-vi",label:"Vietnam Ministry of Education and Training (Ti\u1EBFng Vi\u1EC7t)"},{value:"vigiliae-christianae",label:"Vigiliae Christianae"},{value:"vilnius-gediminas-technical-university",label:"Vilnius Gediminas Technical University (Lietuvi\u0173 kalba)"},{value:"vingtieme-siecle",label:"Vingti\xE8me Si\xE8cle. Revue d'histoire (Fran\xE7ais)"},{value:"vita-latina-auteurs-anciens",label:"Vita Latina (auteurs anciens, Fran\xE7ais)"},{value:"vita-latina",label:"Vita Latina (Fran\xE7ais)"},{value:"vodohospodarske-technicko-ekonomicke-informace-en",label:"Vodohospod\xE1\u0159sk\xE9 technicko-ekonomick\xE9 informace (English)"},{value:"vodohospodarske-technicko-ekonomicke-informace",label:"Vodohospod\xE1\u0159sk\xE9 technicko-ekonomick\xE9 informace (\u010Ce\u0161tina)"},{value:"wader-study",label:"Wader Study"},{value:"water-alternatives",label:"Water Alternatives"},{value:"water-environment-research",label:"Water Environment Research"},{value:"water-sa",label:"Water SA"},{value:"water-science-and-technology",label:"Water Science & Technology"},{value:"waterbirds",label:"Waterbirds"},{value:"weed-research",label:"Weed Research"},{value:"weed-science-society-of-america",label:"Weed Science Society of America"},{value:"west-european-politics",label:"West European Politics"},{value:"western-journal-of-emergency-medicine",label:"Western Journal of Emergency Medicine"},{value:"westfalische-wilhelms-universitat-munster-medizinische-fakultat",label:"Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster - Medizinische Fakult\xE4t (Deutsch)"},{value:"wetlands",label:"Wetlands"},{value:"wheaton-college-phd-in-biblical-and-theological-studies",label:"Wheaton College - Ph.D. in Biblical and Theological Studies"},{value:"who-europe-harvard",label:"WHO Regional Office for Europe - Harvard"},{value:"who-europe-numeric",label:"WHO Regional Office for Europe (numeric)"},{value:"wiesbaden-business-school",label:"Wiesbaden Business School"},{value:"wikipedia-templates",label:"Wikipedia Templates"},{value:"wiley-vch-books",label:"Wiley-VCH books"},{value:"wireless-communications-and-mobile-computing",label:"Wireless Communications and Mobile Computing"},{value:"wirtschaftsuniversitat-wien-abteilung-fur-bildungswissenschaft",label:"Wirtschaftsuniversit\xE4t Wien - Abteilung f\xFCr Bildungswissenschaft (Deutsch - \xD6sterreich)"},{value:"wirtschaftsuniversitat-wien-author-date",label:"Wirtschaftsuniversit\xE4t Wien (author-date)"},{value:"wirtschaftsuniversitat-wien-handel-und-marketing",label:"Wirtschaftsuniversit\xE4t Wien - Handel und Marketing (Deutsch - \xD6sterreich)"},{value:"wirtschaftsuniversitat-wien-health-care-management",label:"Wirtschaftsuniversit\xE4t Wien - Health Care Management"},{value:"wirtschaftsuniversitat-wien-institut-fur-bwl-des-aussenhandels",label:"Wirtschaftsuniversit\xE4t Wien - Institut f\xFCr BWL des Au\xDFenhandels (Deutsch - \xD6sterreich)"},{value:"wirtschaftsuniversitat-wien-institut-fur-transportwirtschaft-und-logistik",label:"Wirtschaftsuniversit\xE4t Wien - Institut f\xFCr Transportwirtschaft und Logistik (Deutsch - \xD6sterreich)"},{value:"wirtschaftsuniversitat-wien-unternehmensrechnung-und-controlling",label:"Wirtschaftsuniversit\xE4t Wien - Unternehmensrechnung und Controlling"},{value:"wirtschaftsuniversitat-wien-wirtschaftspadagogik",label:"Wirtschaftsuniversit\xE4t Wien - Wirtschaftsp\xE4dagogik (Deutsch - \xD6sterreich)"},{value:"wissenschaftlicher-industrielogistik-dialog",label:"Wissenschaftlicher Industrielogistik-Dialog (Deutsch - \xD6sterreich)"},{value:"wolters-kluwerbrede-schrijfwijzer-author-date",label:"Wolters Kluwerbrede Schrijfwijzer (author-date, Nederlands)"},{value:"world-applied-sciences-journal",label:"World Applied Sciences Journal"},{value:"world-congress-on-engineering-asset-management",label:"World Congress on Engineering Asset Management 2010"},{value:"world-mycotoxin-journal",label:"World Mycotoxin Journal"},{value:"world-organisation-for-animal-health-scientific-and-technical-review",label:"World Organisation for Animal Health - Scientific and Technical Review"},{value:"world-politcs",label:"World Politics"},{value:"worlds-poultry-science-journal",label:"World's Poultry Science Journal"},{value:"worlds-veterinary-journal",label:"World's Veterinary Journal"},{value:"xenotransplantation",label:"Xenotransplantation"},{value:"yeast",label:"Yeast"},{value:"yozgat-bozok-universitesi-fen-bilimleri-enstitusu",label:"Yozgat Bozok \xDCniversitesi - Fen Bilimleri Enstit\xFCs\xFC (T\xFCrk\xE7e)"},{value:"zastosowania-komputerow-w-elektrotechnice",label:"Zastosowania Komputer\xF3w w Elektrotechnice"},{value:"zdfm-zeitschrift-fur-diversitatsforschung-und-management",label:"ZDfm \u2013 Zeitschrift f\xFCr Diversit\xE4tsforschung und -management (Deutsch - \xD6sterreich)"},{value:"zdravniski-vestnik",label:"Zdravni\u0161ki Vestnik (Slovenian Medical Journal)"},{value:"zeitgeschichte",label:"Zeitgeschichte (Deutsch)"},{value:"zeithistorische-forschungen",label:"Zeithistorische Forschungen/Studies in Contemporary History"},{value:"zeitschrift-fur-allgemeinmedizin",label:"Zeitschrift f\xFCr Allgemeinmedizin"},{value:"zeitschrift-fur-antikes-christentum",label:"Zeitschrift f\xFCr Antikes Christentum (Journal of Ancient Christianity) (English)"},{value:"zeitschrift-fur-deutsche-philologie",label:"Zeitschrift f\xFCr deutsche Philologie (Deutsch)"},{value:"zeitschrift-fur-die-geschichte-des-oberrheins",label:"Zeitschrift f\xFCr die Geschichte des Oberrheins (Deutsch)"},{value:"zeitschrift-fur-digitale-geisteswissenschaften",label:"Zeitschrift f\xFCr digitale Geisteswissenschaften (Deutsch)"},{value:"zeitschrift-fur-fantastikforschung",label:"Zeitschrift f\xFCr Fantastikforschung (Deutsch)"},{value:"zeitschrift-fur-geschichtsdidaktik",label:"Zeitschrift f\xFCr Geschichtsdidaktik (Deutsch)"},{value:"zeitschrift-fur-internationale-beziehungen",label:"Zeitschrift f\xFCr Internationale Beziehungen (Deutsch)"},{value:"zeitschrift-fur-kunstgeschichte",label:"Zeitschrift f\xFCr Kunstgeschichte"},{value:"zeitschrift-fur-medien-und-kulturforschung",label:"Zeitschrift f\xFCr Medien- und Kulturforschung (Deutsch)"},{value:"zeitschrift-fur-medienwissenschaft",label:"Zeitschrift f\xFCr Medienwissenschaft (Deutsch)"},{value:"zeitschrift-fur-ostmitteleuropa-forschung",label:"Zeitschrift f\xFCr Ostmitteleuropa-Forschung (Deutsch)"},{value:"zeitschrift-fur-padagogik",label:"Zeitschrift f\xFCr P\xE4dagogik (Deutsch)"},{value:"zeitschrift-fur-papyrologie-und-epigraphik",label:"Zeitschrift f\xFCr Papyrologie und Epigraphik"},{value:"zeitschrift-fur-parlamentsfragen",label:"Zeitschrift f\xFCr Parlamentsfragen (Deutsch)"},{value:"zeitschrift-fur-politik",label:"Zeitschrift f\xFCr Politik (German)"},{value:"zeitschrift-fur-qualitative-forschung",label:"Zeitschrift f\xFCr Qualitative Forschung (Deutsch)"},{value:"zeitschrift-fur-religionswissenschaft-author-date",label:"Zeitschrift f\xFCr Religionswissenschaft (author-date)"},{value:"zeitschrift-fur-religionswissenschaft-note",label:"Zeitschrift f\xFCr Religionswissenschaft (note)"},{value:"zeitschrift-fur-soziologie",label:"Zeitschrift f\xFCr Soziologie (Deutsch)"},{value:"zeitschrift-fur-theologie-und-kirche",label:"Zeitschrift f\xFCr Theologie und Kirche (Deutsch)"},{value:"zeitschrift-fur-theologie-und-philosophie",label:"Zeitschrift f\xFCr Theologie und Philosophie"},{value:"zeitschrift-fur-zahnarztliche-implantologie",label:"Zeitschrift f\xFCr Zahn\xE4rztliche Implantologie (Deutsch)"},{value:"zeszyty-prawnicze-bas",label:"Zeszyty Prawnicze BAS (Polski)"},{value:"zilsel",label:"Zilsel (Fran\xE7ais)"},{value:"zitierguide-leitfaden-zum-fachgerechten-zitieren-in-rechtswissenschaftlichen-arbeiten",label:"ZitierGuide: Leitfaden zum fachgerechten Zitieren in rechtswissenschaftlichen Arbeiten (Roger M\xFCller) (Deutsch - Schweiz)"},{value:"zoological-journal-of-the-linnean-society",label:"Zoological Journal of the Linnean Society"},{value:"zootaxa",label:"Zootaxa"},{value:"zwitscher-maschine",label:"Zwitscher-Maschine"},{value:"jm-azr-erstzitat-kurz-mit-verzeichnissen",label:"JM AZR (Erstzitat kurz mit Verzeichnissen)"},{value:"jm-azr",label:"JM AZR"},{value:"jm-chicago-fullnote-bibliography-nagoya",label:"JM Chicago Manual of Style 16th edition (full note) [Nagoya]"},{value:"jm-chicago-fullnote-bibliography-polyglot",label:"JM Chicago Manual of Style 16th edition (full note, polyglot)"},{value:"jm-chicago-fullnote-bibliography",label:"JM Chicago Manual of Style 16th edition (full note)"},{value:"jm-chinese-gb7714-2005-numeric",label:"JM Chinese Std GB/T 7714-2005 (numeric, Chinese)"},{value:"jm-diritto-pubblico-comparato-ed-europeo",label:"JM Diritto pubblico comparato ed europeo"},{value:"harvard-australian-national-university",label:"JM Harvard - Australian National University"},{value:"jm-ibfd-with-page-label",label:"JM IBFD Standard Citations and References (with page label)"},{value:"jm-ibfd",label:"JM IBFD Standard Citations and References"},{value:"jm-indigobook-law-review",label:"JM Indigo Book Law Review"},{value:"jm-indigobook",label:"JM Indigo Book"},{value:"japan-sociological-society",label:"\u65E5\u672C\u793E\u4F1A\u5B66\u4F1A (author-date, Japanese)"},{value:"jm-leg-cit-literaturverzeichnis",label:"JM leg cit mit Literaturverzeichnis"},{value:"jm-leg-cit-ohne-verzeichnisse",label:"JM leg cit ohne Verzeichnisse"},{value:"jm-leg-cit-rechtsquellenverzeichnis-literaturverzeichnis",label:"JM leg cit mit Rechtsquellenverzeichnis und Literaturverzeichnis"},{value:"jm-mgcill-v9",label:"JM - Canadian Guide to Uniform Legal Citation (9th edition) / Manuel canadien de la r\xE9f\xE9rence juridique (9\u1D49 \xE9dition)"},{value:"jm-new-zealand-law",label:"JM New Zealand Law Style"},{value:"jm-oscola",label:"JM OSCOLA - Oxford Standard for Citation of Legal Authorities"},{value:"jm-taylor-and-francis-chicago-author-date",label:"JM Taylor & Francis - Chicago Manual of Style (author-date)"},{value:"jm-turabian-fullnote-bibliography-eu-multi",label:"JM Turabian 8th edition (full note, EU multilingual)"},{value:"jm-turabian-fullnote-bibliography-nl-multi",label:"JM Turabian 8th edition (full note, Dutch multilingual)"},{value:"jm-vis-moot-1",label:"JM Vis Moot variant 1"},{value:"jm-wirtschaftsuniversitat-wien-steuerrecht",label:"JM Wirtschaftsuniversit\xE4t Wien \u2013 Steuerrecht"},{value:"juris-eu.int",label:"Verwijzingen en Afkortingen (Belgium)"}],B_=new Xt(qr,{keys:["label"],minMatchCharLength:3});var Xr={input:e=>({...e,color:"var(--text-normal)"}),singleValue:e=>({...e,color:"var(--text-normal)"}),menu:e=>({...e,backgroundColor:"var(--background-modifier-form-field)",color:"var(--text-normal)"}),option:(e,{isFocused:t,isSelected:a})=>({...e,backgroundColor:t?"var(--interactive-accent)":a?"var(--background-modifier-hover)":void 0,color:t?"var(--text-on-accent)":"var(--text-normal)"}),control:(e,t)=>({...e,backgroundColor:"var(--background-modifier-form-field)",color:"var(--text-normal)",borderColor:t.isFocused?"var(--interactive-accent)":"var(--background-modifier-border)",boxShadow:t.isFocused?"0 0 0 1px var(--interactive-accent)":"none",":hover":{borderColor:t.isFocused?"var(--interactive-accent)":"var(--background-modifier-border)"}})};function uD(e){return B_.search(e).map(t=>t.item)}var N_=0;function Pc(e,t){e===""?t([]):(clearTimeout(N_),N_=activeWindow.setTimeout(()=>{t([{value:e,label:e},...uD(e)])},150))}function Oc(){return A.createElement("span",null,"Type to search CSL styles")}function L_(){return A.createElement("span",null,"Type to search")}function M_(){let e=app.vault.getMarkdownFiles();return new Xt(e,{keys:["basename"],minMatchCharLength:2})}var j_=0,D_=e=>(t,a)=>{t===""?a([]):(clearTimeout(j_),j_=activeWindow.setTimeout(()=>{a(e.search(t).map(n=>({value:n.item.path,label:n.item.path})))},150))};function z_({format:e,index:t,updateFormat:a,removeFormat:n}){let i=A.useMemo(()=>{if(!e.cslStyle)return;let p=qr.find(b=>b.value===e.cslStyle);return p||{label:e.cslStyle,value:e.cslStyle}},[e.cslStyle]),r=A.useCallback(p=>{a(t,{...e,name:p.target.value})},[a,t,e]),o=A.useCallback(p=>{let b=p.target.value,d={...e,format:b};b==="latex"?d.command="cite":b==="biblatex"?d.command="autocite":d.command&&delete d.command,d.format!=="template"&&d.template&&delete d.template,d.format!=="pandoc"&&d.brackets&&delete d.brackets,a(t,d)},[a,t,e]),s=A.useCallback(p=>{a(t,{...e,template:p.target.value})},[a,t,e]),l=A.useCallback(p=>{a(t,{...e,cslStyle:p==null?void 0:p.value})},[a,t,e]),u=A.useCallback(p=>{a(t,{...e,command:p.target.value})},[a,t,e]),c=A.useCallback(()=>{a(t,{...e,brackets:!e.brackets})},[a,t,e]),f=A.useCallback(()=>{n(t)},[n,t]);return A.createElement("div",{className:"zt-format"},A.createElement("div",{className:"zt-format__form"},A.createElement("div",{className:"zt-format__label"},"Name"),A.createElement("div",{className:"zt-format__input-wrapper"},A.createElement("input",{onChange:r,type:"text",value:e.name}),A.createElement("div",{className:"zt-format__delete"},A.createElement("button",{className:"zt-format__delete-btn",onClick:f},A.createElement(ca,{name:"trash"}))))),A.createElement("div",{className:"zt-format__form"},A.createElement("div",{className:"zt-format__label"},"Output Format"),A.createElement("div",{className:"zt-format__input-wrapper"},A.createElement("select",{className:"dropdown",defaultValue:e.format,onChange:o},A.createElement("option",{value:"latex"},"LaTeX"),A.createElement("option",{value:"biblatex"},"BibLaTeX"),A.createElement("option",{value:"pandoc"},"Pandoc"),A.createElement("option",{value:"formatted-citation"},"Formatted Citation"),A.createElement("option",{value:"formatted-bibliography"},"Formatted Bibliography"),A.createElement("option",{value:"template"},"Template")))),e.format==="template"&&A.createElement("div",{className:"zt-format__form"},A.createElement("div",{className:"zt-format__label"},"Template"),A.createElement("div",{className:"zt-format__input-wrapper"},A.createElement("textarea",{rows:4,onChange:s,value:e.template})),A.createElement("div",{className:"zt-format__input-note"},"Citation templates have access to a subset of the Zotero item's data. The item's first attachement is available under the"," ",A.createElement("pre",null,"attachment")," key. Annotations are not provided. Open the data explorer from the command pallet to see available template data. Templates are written using"," ",A.createElement("a",{href:"https://mozilla.github.io/nunjucks/templating.html#variables",target:"_blank",rel:"noreferrer"},"Nunjucks"),"."," ",A.createElement("a",{href:"https://github.com/mgmeyers/obsidian-zotero-integration/blob/main/docs/Templating.md",target:"_blank",rel:"noreferrer"},"See the templating documentation here"),".")),["formatted-citation","formatted-bibliography","template"].contains(e.format)&&A.createElement("div",{className:"zt-format__form"},A.createElement("div",{className:"zt-format__label"},e.format==="template"?"Bibliography Style":"Citation Style"),A.createElement("div",{className:"zt-format__input-wrapper"},A.createElement(Jr,{noOptionsMessage:Oc,placeholder:"Search...",cacheOptions:!0,defaultValue:i,className:"zt-multiselect",loadOptions:Pc,isClearable:!0,onChange:l,styles:Xr})),A.createElement("div",{className:"zt-format__input-note"},"Note, the chosen style must be installed in Zotero. See"," ",A.createElement("a",{target:"_blank",href:"https://www.zotero.org/support/styles",rel:"noreferrer"},"Zotero: Citation Styles"))),["latex","biblatex"].contains(e.format)&&A.createElement("div",{className:"zt-format__form"},A.createElement("div",{className:"zt-format__label"},"Citation Command"),A.createElement("div",{className:"zt-format__input-wrapper"},A.createElement("input",{type:"text",value:e.command,onChange:u}))),e.format==="pandoc"&&A.createElement("div",{className:"zt-format__form"},A.createElement("div",{className:"zt-format__label"},"Include Brackets"),A.createElement("div",{className:"zt-format__input-wrapper"},A.createElement("div",{onClick:c,className:`checkbox-container${e.brackets?" is-enabled":""}`}))))}function G_({format:e,index:t,updateFormat:a,removeFormat:n}){let i=A.useMemo(()=>{let f=M_();return D_(f)},[]),r=A.useMemo(()=>{if(!e.templatePath)return;let f=app.vault.getMarkdownFiles().find(p=>p.path===e.templatePath);return f?{value:f.path,label:f.path}:void 0},[e.templatePath]),o=A.useMemo(()=>{if(!e.cslStyle)return;let f=qr.find(p=>p.value===e.cslStyle);return f||{label:e.cslStyle,value:e.cslStyle}},[e.cslStyle]),s=A.useCallback(f=>{let p=f.target.dataset.key;a(t,{...e,[p]:f.target.value})},[a,t,e]),l=A.useCallback(f=>{a(t,{...e,cslStyle:f==null?void 0:f.value})},[a,t,e]),u=A.useCallback(f=>{a(t,{...e,templatePath:f==null?void 0:f.value})},[a,t,e]),c=A.useCallback(()=>{n(t)},[n,t]);return A.createElement("div",{className:"zt-format"},A.createElement("div",{className:"zt-format__form"},A.createElement("div",{className:"zt-format__label"},"Name"),A.createElement("div",{className:"zt-format__input-wrapper"},A.createElement("input",{onChange:s,type:"text","data-key":"name",value:e.name}),A.createElement("div",{className:"zt-format__delete"},A.createElement("button",{className:"zt-format__delete-btn",onClick:c},A.createElement(ca,{name:"trash"}))))),A.createElement("div",{className:"zt-format__form"},A.createElement("div",{className:"zt-format__label"},"Output Path"),A.createElement("div",{className:"zt-format__input-wrapper"},A.createElement("input",{onChange:s,type:"text","data-key":"outputPathTemplate",value:e.outputPathTemplate})),A.createElement("div",{className:"zt-format__input-note"},"The file path of the exported markdown. Supports templating, eg"," ",A.createElement("pre",null,"My Folder/","{{citekey}}",".md"),". Templates have access to data from the Zotero item and its first attachment.")),A.createElement("div",{className:"zt-format__form"},A.createElement("div",{className:"zt-format__label"},"Image Output Path"),A.createElement("div",{className:"zt-format__input-wrapper"},A.createElement("input",{onChange:s,type:"text","data-key":"imageOutputPathTemplate",value:e.imageOutputPathTemplate})),A.createElement("div",{className:"zt-format__input-note"},"The folder in which images should be saved. Supports templating, eg"," ",A.createElement("pre",null,"Assets/","{{citekey}}","/"),". Templates have access to data from the Zotero item and its first attachment.")),A.createElement("div",{className:"zt-format__form"},A.createElement("div",{className:"zt-format__label"},"Image Base Name"),A.createElement("div",{className:"zt-format__input-wrapper"},A.createElement("input",{onChange:s,type:"text","data-key":"imageBaseNameTemplate",value:e.imageBaseNameTemplate})),A.createElement("div",{className:"zt-format__input-note"},"The base file name of exported images. Eg. ",A.createElement("pre",null,"image")," will result in ",A.createElement("pre",null,"image-1-x123-y456.jpg")," where ",A.createElement("pre",null,"1")," is the page number and ",A.createElement("pre",null,"x123")," and ",A.createElement("pre",null,"y456")," are the x and y coordinates of rectangle annotation on the page. Supports templating. Templates have access to data from the Zotero item and its first attachment.")),A.createElement("div",{className:"zt-format__form"},A.createElement("div",{className:"zt-format__label"},"Template File"),A.createElement("div",{className:"zt-format__input-wrapper"},A.createElement(Jr,{noOptionsMessage:L_,placeholder:"Search...",cacheOptions:!0,defaultValue:r,className:"zt-multiselect",loadOptions:i,isClearable:!0,onChange:u,styles:Xr})),A.createElement("div",{className:"zt-format__input-note"},"Open the data explorer from the command pallet to see available template data. Templates are written using"," ",A.createElement("a",{href:"https://mozilla.github.io/nunjucks/templating.html#variables",target:"_blank",rel:"noreferrer"},"Nunjucks"),"."," ",A.createElement("a",{href:"https://github.com/mgmeyers/obsidian-zotero-integration/blob/main/docs/Templating.md",target:"_blank",rel:"noreferrer"},"See the templating documentation here"),".")),e.headerTemplatePath&&A.createElement("div",{className:"zt-format__form is-deprecated"},A.createElement("div",{className:"zt-format__label"},"Header Template File (deprecated)"),A.createElement("div",{className:"zt-format__input-wrapper"},A.createElement("input",{type:"text",disabled:!0,value:e.headerTemplatePath}),A.createElement("button",{className:"mod-warning",onClick:()=>{a(t,{...e,headerTemplatePath:void 0})}},"Remove Template")),A.createElement("div",{className:"zt-format__input-note"},"Deprecated: Separate template files are no longer needed."," ",A.createElement("a",{href:"https://github.com/mgmeyers/obsidian-zotero-integration/blob/main/docs/Templating.md",target:"_blank",rel:"noreferrer"},"See the templating documentation here"),".")),e.annotationTemplatePath&&A.createElement("div",{className:"zt-format__form is-deprecated"},A.createElement("div",{className:"zt-format__label"},"Annotation Template File (deprecated)"),A.createElement("div",{className:"zt-format__input-wrapper"},A.createElement("input",{type:"text",disabled:!0,value:e.annotationTemplatePath}),A.createElement("button",{className:"mod-warning",onClick:()=>{a(t,{...e,annotationTemplatePath:void 0})}},"Remove Template")),A.createElement("div",{className:"zt-format__input-note"},"Deprecated: Separate template files are no longer needed."," ",A.createElement("a",{href:"https://github.com/mgmeyers/obsidian-zotero-integration/blob/main/docs/Templating.md",target:"_blank",rel:"noreferrer"},"See the templating documentation here"),".")),e.footerTemplatePath&&A.createElement("div",{className:"zt-format__form is-deprecated"},A.createElement("div",{className:"zt-format__label"},"Footer Template File (deprecated)"),A.createElement("div",{className:"zt-format__input-wrapper"},A.createElement("input",{type:"text",disabled:!0,value:e.footerTemplatePath}),A.createElement("button",{className:"mod-warning",onClick:()=>{a(t,{...e,footerTemplatePath:void 0})}},"Remove Template")),A.createElement("div",{className:"zt-format__input-note"},"Deprecated: Separate template files are no longer needed."," ",A.createElement("a",{href:"https://github.com/mgmeyers/obsidian-zotero-integration/blob/main/docs/Templating.md",target:"_blank",rel:"noreferrer"},"See the templating documentation here"),".")),A.createElement("div",{className:"zt-format__form"},A.createElement("div",{className:"zt-format__label"},"Bilbiography Style"),A.createElement("div",{className:"zt-format__input-wrapper"},A.createElement(Jr,{noOptionsMessage:Oc,placeholder:"Search...",cacheOptions:!0,defaultValue:o,className:"zt-multiselect",loadOptions:Pc,isClearable:!0,onChange:l,styles:Xr})),A.createElement("div",{className:"zt-format__input-note"},"Note, the chosen style must be installed in Zotero. See"," ",A.createElement("a",{target:"_blank",href:"https://www.zotero.org/support/styles",rel:"noreferrer"},"Zotero: Citation Styles"))))}function pD({settings:e,addCiteFormat:t,updateCiteFormat:a,removeCiteFormat:n,addExportFormat:i,updateExportFormat:r,removeExportFormat:o,updateSetting:s}){let[l,u]=A.useState(e.citeFormats),[c,f]=A.useState(e.exportFormats),[p,b]=A.useState(!!e.openNoteAfterImport),[d,h]=A.useState(e.pdfExportImageOCR),[m,v]=A.useState(!!e.shouldConcat),x=A.useCallback((0,Ja.debounce)((F,B)=>{u(a(F,B))},200,!0),[a]),E=A.useCallback(()=>{u(t({name:`Format #${l.length+1}`,format:"formatted-citation"}))},[t,l]),g=A.useCallback(F=>{u(n(F))},[n]),w=A.useCallback((0,Ja.debounce)((F,B)=>{f(r(F,B))},200,!0),[r]),C=A.useCallback(()=>{f(i({name:`Import #${c.length+1}`,outputPathTemplate:"{{citekey}}.md",imageOutputPathTemplate:"{{citekey}}/",imageBaseNameTemplate:"image"}))},[i,l]),y=A.useCallback(F=>{f(o(F))},[o]),S=A.useRef(null),I=A.useRef(null),[_,P]=A.useState(e.database==="Custom");return A.createElement("div",null,A.createElement(He,{name:"General Settings",isHeading:!0}),A.createElement(JA,{settings:e,updateSetting:s}),A.createElement(He,{name:"Database",description:"Supports Zotero and Juris-M. Alternatively a custom port number can be specified."},A.createElement("select",{className:"dropdown",defaultValue:e.database,onChange:F=>{let B=F.target.value;s("database",B),P(B==="Custom")}},A.createElement("option",{value:"Zotero"},"Zotero"),A.createElement("option",{value:"Juris-M"},"Juris-M"),A.createElement("option",{value:"Custom"},"Custom"))),_?A.createElement(He,{name:"Port number",description:"If a custom port number has been set in Zotero, enter it here."},A.createElement("input",{onChange:F=>s("port",F.target.value),type:"number",placeholder:"Example: 23119",defaultValue:e.port})):null,A.createElement(He,{name:"Note Import Location",description:"Notes imported from Zotero will be added to this folder in your vault"},A.createElement("input",{onChange:F=>s("noteImportFolder",F.target.value),type:"text",spellCheck:!1,placeholder:"Example: folder 1/folder 2",defaultValue:e.noteImportFolder})),A.createElement(He,{name:"Open the created or updated note(s) after import",description:"The created or updated markdown files resulting from the import will be automatically opened."},A.createElement("div",{onClick:()=>{b(F=>(s("openNoteAfterImport",!F),!F))},className:`checkbox-container${p?" is-enabled":""}`})),A.createElement(He,{name:"Which notes to open after import",description:"Open either the first note imported, the last note imported, or all notes in new tabs."},A.createElement("select",{className:"dropdown",defaultValue:e.whichNotesToOpenAfterImport,disabled:!e.openNoteAfterImport,onChange:F=>s("whichNotesToOpenAfterImport",F.target.value)},A.createElement("option",{value:"first-imported-note"},"First imported note"),A.createElement("option",{value:"last-imported-note"},"Last imported note"),A.createElement("option",{value:"all-imported-notes"},"All imported notes"))),A.createElement(He,{name:"Enable Annotation Concatenation",description:"Annotations extracted from PDFs that begin with '+' will be appended to the previous annotation. Note: Annotation ordering is not always consistent and you may not always acheive the desire concatenation result"},A.createElement("div",{onClick:()=>{v(F=>(s("shouldConcat",!F),!F))},className:`checkbox-container${m?" is-enabled":""}`})),A.createElement(He,{name:"Citation Formats",isHeading:!0}),A.createElement(He,null,A.createElement("button",{onClick:E,className:"mod-cta"},"Add Citation Format")),l.map((F,B)=>A.createElement(z_,{key:B,format:F,index:B,updateFormat:x,removeFormat:g})),A.createElement(He,{name:"Import Formats",isHeading:!0}),A.createElement(He,null,A.createElement("button",{onClick:C,className:"mod-cta"},"Add Import Format")),c.map((F,B)=>A.createElement(G_,{key:c.length-B,format:F,index:B,updateFormat:w,removeFormat:y})),A.createElement(He,{name:"Import Image Settings",description:"Rectangle annotations will be extracted from PDFs as images.",isHeading:!0}),A.createElement(He,{name:"Image Format"},A.createElement("select",{className:"dropdown",defaultValue:e.pdfExportImageFormat,onChange:F=>s("pdfExportImageFormat",F.target.value)},A.createElement("option",{value:"jpg"},"jpg"),A.createElement("option",{value:"png"},"png"))),A.createElement(He,{name:"Image Quality (jpg only)"},A.createElement("input",{min:"0",max:"100",onChange:F=>s("pdfExportImageQuality",Number(F.target.value)),type:"number",defaultValue:e.pdfExportImageQuality.toString()})),A.createElement(He,{name:"Image DPI"},A.createElement("input",{min:"0",onChange:F=>s("pdfExportImageDPI",Number(F.target.value)),type:"number",defaultValue:e.pdfExportImageDPI.toString()})),A.createElement(He,{name:"Image OCR",description:A.createElement("div",null,"Attempt to extract text from images created by rectangle annotations. This requires that"," ",A.createElement("a",{href:"https://tesseract-ocr.github.io/tessdoc/",target:"_blank",rel:"noreferrer"},"tesseract")," ","be installed on your system. Tesseract can be installed from",A.createElement("a",{href:"https://brew.sh/",target:"_blank",rel:"noreferrer"},"homebrew on mac"),", various linux package managers, and from"," ",A.createElement("a",{href:"https://github.com/UB-Mannheim/tesseract/wiki",target:"_blank",rel:"noreferrer"},"here on windows"),".")},A.createElement("div",{onClick:()=>h(F=>(s("pdfExportImageOCR",!F),!F)),className:`checkbox-container${d?" is-enabled":""}`})),A.createElement(He,{name:"Tesseract path",description:A.createElement("div",null,"Required: An absolute path to the tesseract executable. This can be found on mac and linux with the terminal command"," ",A.createElement("pre",null,"which tesseract"))},A.createElement("input",{ref:S,onChange:F=>s("pdfExportImageTesseractPath",F.target.value),type:"text",defaultValue:e.pdfExportImageTesseractPath}),A.createElement("div",{className:"clickable-icon setting-editor-extra-setting-button","aria-label":"Attempt to find tesseract automatically",onClick:async()=>{try{let F=await(0,H_.default)("tesseract");F?(S.current.value=F,s("pdfExportImageTesseractPath",F)):new Ja.Notice("Unable to find tesseract on your system. If it is installed, please manually enter a path.")}catch(F){new Ja.Notice("Unable to find tesseract on your system. If it is installed, please manually enter a path."),console.error(F)}}},A.createElement(ca,{name:"magnifying-glass"}))),A.createElement(He,{name:"Image OCR Language",description:A.createElement("div",null,"Optional: defaults to english. Multiple languages can be specified like so: ",A.createElement("pre",null,"eng+deu"),". Each language must be installed on your system."," ",A.createElement("a",{href:"https://github.com/tesseract-ocr/tessdata",target:"_blank",rel:"noreferrer"},"Languages can be downloaded here"),". (See"," ",A.createElement("a",{href:"https://tesseract-ocr.github.io/tessdoc/Data-Files-in-different-versions.html",target:"_blank",rel:"noreferrer"},"here for a description of the language codes"),")")},A.createElement("input",{onChange:F=>s("pdfExportImageOCRLang",F.target.value),type:"text",defaultValue:e.pdfExportImageOCRLang})),A.createElement(He,{name:"Tesseract data directory",description:"Optional: supply an absolute path to the directory where tesseract's language files reside. This folder should include *.traineddata files for your selected languages."},A.createElement("input",{ref:I,onChange:F=>s("pdfExportImageTessDataDir",F.target.value),type:"text",defaultValue:e.pdfExportImageTessDataDir}),A.createElement("div",{className:"clickable-icon setting-editor-extra-setting-button","aria-label":"Select the tesseract data directory",onClick:()=>{let F=require("electron").remote.dialog.showOpenDialogSync({properties:["openDirectory"]});F&&F.length&&(I.current.value=F[0],s("pdfExportImageTessDataDir",F[0]))}},A.createElement(ca,{name:"lucide-folder-open"}))))}var Rc=class extends Ja.PluginSettingTab{constructor(a,n){super(a,n);this.addCiteFormat=a=>(this.plugin.addFormatCommand(a),this.plugin.settings.citeFormats.unshift(a),this.debouncedSave(),this.plugin.settings.citeFormats.slice());this.updateCiteFormat=(a,n)=>(this.plugin.removeFormatCommand(this.plugin.settings.citeFormats[a]),this.plugin.addFormatCommand(n),this.plugin.settings.citeFormats[a]=n,this.debouncedSave(),this.plugin.settings.citeFormats.slice());this.removeCiteFormat=a=>(this.plugin.removeFormatCommand(this.plugin.settings.citeFormats[a]),this.plugin.settings.citeFormats.splice(a,1),this.debouncedSave(),this.plugin.settings.citeFormats.slice());this.addExportFormat=a=>(this.plugin.addExportCommand(a),this.plugin.settings.exportFormats.unshift(a),this.debouncedSave(),this.plugin.settings.exportFormats.slice());this.updateExportFormat=(a,n)=>(this.plugin.removeExportCommand(this.plugin.settings.exportFormats[a]),this.plugin.addExportCommand(n),this.plugin.settings.exportFormats[a]=n,this.debouncedSave(),this.plugin.settings.exportFormats.slice());this.removeExportFormat=a=>(this.plugin.removeExportCommand(this.plugin.settings.exportFormats[a]),this.plugin.settings.exportFormats.splice(a,1),this.debouncedSave(),this.plugin.settings.exportFormats.slice());this.updateSetting=(a,n)=>{this.plugin.settings[a]=n,this.debouncedSave()};this.plugin=n}display(){A.render(A.createElement(pD,{settings:this.plugin.settings,addCiteFormat:this.addCiteFormat,updateCiteFormat:this.updateCiteFormat,removeCiteFormat:this.removeCiteFormat,addExportFormat:this.addExportFormat,updateExportFormat:this.updateExportFormat,removeExportFormat:this.removeExportFormat,updateSetting:this.updateSetting}),this.containerEl)}debouncedSave(){clearTimeout(this.dbTimer),this.dbTimer=activeWindow.setTimeout(()=>{this.plugin.saveSettings()},150)}hide(){super.hide(),A.unmountComponentAtNode(this.containerEl)}};var W_="obsidian-zotero-desktop-connector:",V_="zdc-",U_="zdc-exp-",dD={database:"Zotero",noteImportFolder:"",pdfExportImageDPI:120,pdfExportImageFormat:"jpg",pdfExportImageQuality:90,citeFormats:[],exportFormats:[],citeSuggestTemplate:"[[{{citekey}}]]",openNoteAfterImport:!1,whichNotesToOpenAfterImport:"first-imported-note"};async function fD(){if(process.platform!=="win32")try{let e=await dv();process.env.PATH=e||["./node_modules/.bin","/.nodebrew/current/bin","/usr/local/bin",process.env.PATH].join(":")}catch(e){console.error(e)}}var Bc=class extends En.Plugin{async onload(){await this.loadSettings(),this.emitter=new En.Events,this.updatePDFUtility(),this.addSettingTab(new Rc(this.app,this)),this.registerView(Un,a=>new Os(this,a)),this.settings.citeFormats.forEach(a=>{this.addFormatCommand(a)}),this.settings.exportFormats.forEach(a=>{this.addExportCommand(a)}),this.addCommand({id:"zdc-insert-notes",name:"Insert notes into current document",editorCallback:a=>{var i;let n={database:this.settings.database,port:this.settings.port};xp(n,(i=this.app.workspace.getActiveFile())==null?void 0:i.parent.path).then(r=>{r&&Wx(a,r)})}}),this.addCommand({id:"zdc-import-notes",name:"Import notes",callback:()=>{let a={database:this.settings.database,port:this.settings.port};xp(a,this.settings.noteImportFolder).then(n=>n?Vx(this.settings.noteImportFolder,n):[]).then(n=>this.openNotes(n))}}),this.addCommand({id:"show-zotero-debug-view",name:"Data explorer",callback:()=>{this.activateDataExplorer()}}),this.registerEvent(this.app.vault.on("modify",a=>{a instanceof En.TFile&&this.emitter.trigger("fileUpdated",a)})),app.workspace.trigger("parse-style-settings"),fD()}onunload(){this.settings.citeFormats.forEach(a=>{this.removeFormatCommand(a)}),this.settings.exportFormats.forEach(a=>{this.removeExportCommand(a)}),this.app.workspace.detachLeavesOfType(Un)}addFormatCommand(a){this.addCommand({id:`${V_}${a.name}`,name:a.name,editorCallback:n=>{let i={database:this.settings.database,port:this.settings.port};a.format==="template"&&a.template.trim()?Xx({database:i,format:a}).then(r=>{typeof r=="string"&&n.replaceSelection(r)}):Mx(a,i).then(r=>{typeof r=="string"&&n.replaceSelection(r)})}})}removeFormatCommand(a){this.app.commands.removeCommand(`${W_}${V_}${a.name}`)}addExportCommand(a){this.addCommand({id:`${U_}${a.name}`,name:a.name,callback:async()=>{let n={database:this.settings.database,port:this.settings.port};this.openNotes(await Ep({settings:this.settings,database:n,exportFormat:a}))}})}removeExportCommand(a){this.app.commands.removeCommand(`${W_}${U_}${a.name}`)}async runImport(a,n,i=1){let r=this.settings.exportFormats.find(s=>s.name===a);if(!r)throw new Error(`Error: Import format "${a}" not found`);let o={database:this.settings.database,port:this.settings.port};n.startsWith("@")&&(n=n.substring(1)),await Ep({settings:this.settings,database:o,exportFormat:r},[{key:n,library:i}])}async openNotes(a){let n=[];if(this.settings.openNoteAfterImport)switch(this.settings.whichNotesToOpenAfterImport){case"first-imported-note":{n.push(a[0]);break}case"last-imported-note":{n.push(a[a.length-1]);break}case"all-imported-notes":{n.push(...a);break}}await new Promise(r=>setTimeout(r,1e3));let i=this.app.workspace.getLeavesOfType("markdown");for(let r of n){let o=this.app.vault.getAbstractFileByPath(r),s=i.find(l=>l.view.file===o);s?app.workspace.revealLeaf(s):o instanceof En.TFile&&await this.app.workspace.getLeaf(!0).openFile(o)}}async loadSettings(){let a=await this.loadData();this.settings={...dD,...a}}async saveSettings(){this.emitter.trigger("settingsUpdated"),await this.saveData(this.settings)}deactivateDataExplorer(){this.app.workspace.detachLeavesOfType(Un)}async activateDataExplorer(){this.deactivateDataExplorer(),await this.app.workspace.createLeafBySplit(this.app.workspace.activeLeaf,"vertical").setViewState({type:Un})}async updatePDFUtility(){let{exeOverridePath:a,_exeInternalVersion:n,exeVersion:i}=this.settings;if(!(a||!i)&&(i!==Va||!n||n!==Cf)){let r=new nt(app,"Updating Obsidian Zotero Integration PDF Utility...");r.open();try{await Af()&&(this.settings.exeVersion=Va,this.settings._exeInternalVersion=Cf,this.saveSettings())}catch(o){}r.close()}}}; +`]))),DI=function(t,a){var n=t.isFocused,i=t.size,r=t.theme,o=r.colors,s=r.spacing.baseUnit;return ae({label:"loadingIndicator",display:"flex",transition:"color 150ms",alignSelf:"center",fontSize:i,lineHeight:1,marginRight:i,textAlign:"center",verticalAlign:"middle"},a?{}:{color:n?o.neutral60:o.neutral20,padding:s*2})},rm=function(t){var a=t.delay,n=t.offset;return re("span",{css:Gr({animation:"".concat(wL," 1s ease-in-out ").concat(a,"ms infinite;"),backgroundColor:"currentColor",borderRadius:"1em",display:"inline-block",marginLeft:n?"1em":void 0,height:"1em",verticalAlign:"top",width:"1em"},"","")})},zI=function(t){var a=t.innerProps,n=t.isRtl;return re("div",W({},Ze(t,"loadingIndicator",{indicator:!0,"loading-indicator":!0}),a),re(rm,{delay:0,offset:n}),re(rm,{delay:160,offset:!0}),re(rm,{delay:320,offset:!n}))};zI.defaultProps={size:4};var GI=function(t,a){var n=t.isDisabled,i=t.isFocused,r=t.theme,o=r.colors,s=r.borderRadius,l=r.spacing;return ae({label:"control",alignItems:"center",cursor:"default",display:"flex",flexWrap:"wrap",justifyContent:"space-between",minHeight:l.controlHeight,outline:"0 !important",position:"relative",transition:"all 100ms"},a?{}:{backgroundColor:n?o.neutral5:o.neutral0,borderColor:n?o.neutral10:i?o.primary:o.neutral20,borderRadius:s,borderStyle:"solid",borderWidth:1,boxShadow:i?"0 0 0 1px ".concat(o.primary):void 0,"&:hover":{borderColor:i?o.primary:o.neutral30}})},EL=function(t){var a=t.children,n=t.isDisabled,i=t.isFocused,r=t.innerRef,o=t.innerProps,s=t.menuIsOpen;return re("div",W({ref:r},Ze(t,"control",{control:!0,"control--is-disabled":n,"control--is-focused":i,"control--menu-is-open":s}),o),a)},SL=EL,CL=["data"],HI=function(t,a){var n=t.theme.spacing;return a?{}:{paddingBottom:n.baseUnit*2,paddingTop:n.baseUnit*2}},AL=function(t){var a=t.children,n=t.cx,i=t.getStyles,r=t.getClassNames,o=t.Heading,s=t.headingProps,l=t.innerProps,u=t.label,c=t.theme,f=t.selectProps;return re("div",W({},Ze(t,"group",{group:!0}),l),re(o,W({},s,{selectProps:f,theme:c,getStyles:i,getClassNames:r,cx:n}),u),re("div",null,a))},WI=function(t,a){var n=t.theme,i=n.colors,r=n.spacing;return ae({label:"group",cursor:"default",display:"block"},a?{}:{color:i.neutral40,fontSize:"75%",fontWeight:500,marginBottom:"0.25em",paddingLeft:r.baseUnit*3,paddingRight:r.baseUnit*3,textTransform:"uppercase"})},IL=function(t){var a=pI(t);a.data;var n=Wt(a,CL);return re("div",W({},Ze(t,"groupHeading",{"group-heading":!0}),n))},_L=AL,TL=["innerRef","isDisabled","isHidden","inputClassName"],VI=function(t,a){var n=t.isDisabled,i=t.value,r=t.theme,o=r.spacing,s=r.colors;return ae(ae({visibility:n?"hidden":"visible",transform:i?"translateZ(0)":""},kL),a?{}:{margin:o.baseUnit/2,paddingBottom:o.baseUnit/2,paddingTop:o.baseUnit/2,color:s.neutral80})},UI={gridArea:"1 / 2",font:"inherit",minWidth:"2px",border:0,margin:0,outline:0,padding:0},kL={flex:"1 1 auto",display:"inline-grid",gridArea:"1 / 1 / 2 / 3",gridTemplateColumns:"0 min-content","&:after":ae({content:'attr(data-value) " "',visibility:"hidden",whiteSpace:"pre"},UI)},FL=function(t){return ae({label:"input",color:"inherit",background:0,opacity:t?0:1,width:"100%"},UI)},PL=function(t){var a=t.cx,n=t.value,i=pI(t),r=i.innerRef,o=i.isDisabled,s=i.isHidden,l=i.inputClassName,u=Wt(i,TL);return re("div",W({},Ze(t,"input",{"input-container":!0}),{"data-value":n||""}),re("input",W({className:a({input:!0},l),ref:r,style:FL(s),disabled:o},u)))},OL=PL,JI=function(t,a){var n=t.theme,i=n.spacing,r=n.borderRadius,o=n.colors;return ae({label:"multiValue",display:"flex",minWidth:0},a?{}:{backgroundColor:o.neutral10,borderRadius:r/2,margin:i.baseUnit/2})},ZI=function(t,a){var n=t.theme,i=n.borderRadius,r=n.colors,o=t.cropWithEllipsis;return ae({overflow:"hidden",textOverflow:o||o===void 0?"ellipsis":void 0,whiteSpace:"nowrap"},a?{}:{borderRadius:i/2,color:r.neutral80,fontSize:"85%",padding:3,paddingLeft:6})},qI=function(t,a){var n=t.theme,i=n.spacing,r=n.borderRadius,o=n.colors,s=t.isFocused;return ae({alignItems:"center",display:"flex"},a?{}:{borderRadius:r/2,backgroundColor:s?o.dangerLight:void 0,paddingLeft:i.baseUnit,paddingRight:i.baseUnit,":hover":{backgroundColor:o.dangerLight,color:o.danger}})},XI=function(t){var a=t.children,n=t.innerProps;return re("div",n,a)},RL=XI,BL=XI;function NL(e){var t=e.children,a=e.innerProps;return re("div",W({role:"button"},a),t||re(cm,{size:14}))}var jL=function(t){var a=t.children,n=t.components,i=t.data,r=t.innerProps,o=t.isDisabled,s=t.removeProps,l=t.selectProps,u=n.Container,c=n.Label,f=n.Remove;return re(u,{data:i,innerProps:ae(ae({},Ze(t,"multiValue",{"multi-value":!0,"multi-value--is-disabled":o})),r),selectProps:l},re(c,{data:i,innerProps:ae({},Ze(t,"multiValueLabel",{"multi-value__label":!0})),selectProps:l},a),re(f,{data:i,innerProps:ae(ae({},Ze(t,"multiValueRemove",{"multi-value__remove":!0})),{},{"aria-label":"Remove ".concat(a||"option")},s),selectProps:l}))},LL=jL,$I=function(t,a){var n=t.isDisabled,i=t.isFocused,r=t.isSelected,o=t.theme,s=o.spacing,l=o.colors;return ae({label:"option",cursor:"default",display:"block",fontSize:"inherit",width:"100%",userSelect:"none",WebkitTapHighlightColor:"rgba(0, 0, 0, 0)"},a?{}:{backgroundColor:r?l.primary:i?l.primary25:"transparent",color:n?l.neutral20:r?l.neutral0:"inherit",padding:"".concat(s.baseUnit*2,"px ").concat(s.baseUnit*3,"px"),":active":{backgroundColor:n?void 0:r?l.primary:l.primary50}})},ML=function(t){var a=t.children,n=t.isDisabled,i=t.isFocused,r=t.isSelected,o=t.innerRef,s=t.innerProps;return re("div",W({},Ze(t,"option",{option:!0,"option--is-disabled":n,"option--is-focused":i,"option--is-selected":r}),{ref:o,"aria-disabled":n},s),a)},DL=ML,YI=function(t,a){var n=t.theme,i=n.spacing,r=n.colors;return ae({label:"placeholder",gridArea:"1 / 1 / 2 / 3"},a?{}:{color:r.neutral50,marginLeft:i.baseUnit/2,marginRight:i.baseUnit/2})},zL=function(t){var a=t.children,n=t.innerProps;return re("div",W({},Ze(t,"placeholder",{placeholder:!0}),n),a)},GL=zL,KI=function(t,a){var n=t.isDisabled,i=t.theme,r=i.spacing,o=i.colors;return ae({label:"singleValue",gridArea:"1 / 1 / 2 / 3",maxWidth:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},a?{}:{color:n?o.neutral40:o.neutral80,marginLeft:r.baseUnit/2,marginRight:r.baseUnit/2})},HL=function(t){var a=t.children,n=t.isDisabled,i=t.innerProps;return re("div",W({},Ze(t,"singleValue",{"single-value":!0,"single-value--is-disabled":n}),i),a)},WL=HL,VL={ClearIndicator:xL,Control:SL,DropdownIndicator:gL,DownChevron:BI,CrossIcon:cm,Group:_L,GroupHeading:IL,IndicatorsContainer:hL,IndicatorSeparator:yL,Input:OL,LoadingIndicator:zI,Menu:uL,MenuList:pL,MenuPortal:dL,LoadingMessage:TI,NoOptionsMessage:_I,MultiValue:LL,MultiValueContainer:RL,MultiValueLabel:BL,MultiValueRemove:NL,Option:DL,Placeholder:GL,SelectContainer:fL,SingleValue:WL,ValueContainer:mL},QI=function(t){return ae(ae({},VL),t.components)};var e_=Number.isNaN||function(t){return typeof t=="number"&&t!==t};function UL(e,t){return!!(e===t||e_(e)&&e_(t))}function JL(e,t){if(e.length!==t.length)return!1;for(var a=0;a<e.length;a++)if(!UL(e[a],t[a]))return!1;return!0}function t_(e,t){t===void 0&&(t=JL);var a=null;function n(){for(var i=[],r=0;r<arguments.length;r++)i[r]=arguments[r];if(a&&a.lastThis===this&&t(i,a.lastArgs))return a.lastResult;var o=e.apply(this,i);return a={lastResult:o,lastArgs:i,lastThis:this},o}return n.clear=function(){a=null},n}var ZL={name:"7pg0cj-a11yText",styles:"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap"},qL=function(t){return re("span",W({css:ZL},t))},a_=qL,XL={guidance:function(t){var a=t.isSearchable,n=t.isMulti,i=t.isDisabled,r=t.tabSelectsValue,o=t.context;switch(o){case"menu":return"Use Up and Down to choose options".concat(i?"":", press Enter to select the currently focused option",", press Escape to exit the menu").concat(r?", press Tab to select the option and exit the menu":"",".");case"input":return"".concat(t["aria-label"]||"Select"," is focused ").concat(a?",type to refine list":"",", press Down to open the menu, ").concat(n?" press left to focus selected values":"");case"value":return"Use left and right to toggle between focused values, press Backspace to remove the currently focused value";default:return""}},onChange:function(t){var a=t.action,n=t.label,i=n===void 0?"":n,r=t.labels,o=t.isDisabled;switch(a){case"deselect-option":case"pop-value":case"remove-value":return"option ".concat(i,", deselected.");case"clear":return"All selected options have been cleared.";case"initial-input-focus":return"option".concat(r.length>1?"s":""," ").concat(r.join(","),", selected.");case"select-option":return o?"option ".concat(i," is disabled. Select another option."):"option ".concat(i,", selected.");default:return""}},onFocus:function(t){var a=t.context,n=t.focused,i=t.options,r=t.label,o=r===void 0?"":r,s=t.selectValue,l=t.isDisabled,u=t.isSelected,c=function(d,m){return d&&d.length?"".concat(d.indexOf(m)+1," of ").concat(d.length):""};if(a==="value"&&s)return"value ".concat(o," focused, ").concat(c(s,n),".");if(a==="menu"){var f=l?" disabled":"",p="".concat(u?"selected":"focused").concat(f);return"option ".concat(o," ").concat(p,", ").concat(c(i,n),".")}return""},onFilter:function(t){var a=t.inputValue,n=t.resultsMessage;return"".concat(n).concat(a?" for search term "+a:"",".")}},$L=function(t){var a=t.ariaSelection,n=t.focusedOption,i=t.focusedValue,r=t.focusableOptions,o=t.isFocused,s=t.selectValue,l=t.selectProps,u=t.id,c=l.ariaLiveMessages,f=l.getOptionLabel,p=l.inputValue,b=l.isMulti,d=l.isOptionDisabled,m=l.isSearchable,h=l.menuIsOpen,v=l.options,x=l.screenReaderStatus,E=l.tabSelectsValue,g=l["aria-label"],w=l["aria-live"],C=At(function(){return ae(ae({},XL),c||{})},[c]),y=At(function(){var j="";if(a&&C.onChange){var L=a.option,k=a.options,T=a.removedValue,N=a.removedValues,M=a.value,D=function(oe){return Array.isArray(oe)?null:oe},V=T||L||D(M),q=V?f(V):"",Z=k||N||void 0,pe=Z?Z.map(f):[],fe=ae({isDisabled:V&&d(V,s),label:q,labels:pe},a);j=C.onChange(fe)}return j},[a,C,d,s,f]),S=At(function(){var j="",L=n||i,k=!!(n&&s&&s.includes(n));if(L&&C.onFocus){var T={focused:L,label:f(L),isDisabled:d(L,s),isSelected:k,options:r,context:L===n?"menu":"value",selectValue:s};j=C.onFocus(T)}return j},[n,i,f,d,C,r,s]),A=At(function(){var j="";if(h&&v.length&&C.onFilter){var L=x({count:r.length});j=C.onFilter({inputValue:p,resultsMessage:L})}return j},[r,p,h,C,v,x]),_=At(function(){var j="";if(C.guidance){var L=i?"value":h?"menu":"input";j=C.guidance({"aria-label":g,context:L,isDisabled:n&&d(n,s),isMulti:b,isSearchable:m,tabSelectsValue:E})}return j},[g,n,i,b,d,m,h,C,s,E]),P="".concat(S," ").concat(A," ").concat(_),F=re(rt,null,re("span",{id:"aria-selection"},y),re("span",{id:"aria-context"},P)),B=(a==null?void 0:a.action)==="initial-input-focus";return re(rt,null,re(a_,{id:u},B&&F),re(a_,{"aria-live":w,"aria-atomic":"false","aria-relevant":"additions text"},o&&!B&&F))},YL=$L,pm=[{base:"A",letters:"A\u24B6\uFF21\xC0\xC1\xC2\u1EA6\u1EA4\u1EAA\u1EA8\xC3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\xC4\u01DE\u1EA2\xC5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F"},{base:"AA",letters:"\uA732"},{base:"AE",letters:"\xC6\u01FC\u01E2"},{base:"AO",letters:"\uA734"},{base:"AU",letters:"\uA736"},{base:"AV",letters:"\uA738\uA73A"},{base:"AY",letters:"\uA73C"},{base:"B",letters:"B\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181"},{base:"C",letters:"C\u24B8\uFF23\u0106\u0108\u010A\u010C\xC7\u1E08\u0187\u023B\uA73E"},{base:"D",letters:"D\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779"},{base:"DZ",letters:"\u01F1\u01C4"},{base:"Dz",letters:"\u01F2\u01C5"},{base:"E",letters:"E\u24BA\uFF25\xC8\xC9\xCA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\xCB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E"},{base:"F",letters:"F\u24BB\uFF26\u1E1E\u0191\uA77B"},{base:"G",letters:"G\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E"},{base:"H",letters:"H\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D"},{base:"I",letters:"I\u24BE\uFF29\xCC\xCD\xCE\u0128\u012A\u012C\u0130\xCF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197"},{base:"J",letters:"J\u24BF\uFF2A\u0134\u0248"},{base:"K",letters:"K\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2"},{base:"L",letters:"L\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780"},{base:"LJ",letters:"\u01C7"},{base:"Lj",letters:"\u01C8"},{base:"M",letters:"M\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C"},{base:"N",letters:"N\u24C3\uFF2E\u01F8\u0143\xD1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4"},{base:"NJ",letters:"\u01CA"},{base:"Nj",letters:"\u01CB"},{base:"O",letters:"O\u24C4\uFF2F\xD2\xD3\xD4\u1ED2\u1ED0\u1ED6\u1ED4\xD5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\xD6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\xD8\u01FE\u0186\u019F\uA74A\uA74C"},{base:"OI",letters:"\u01A2"},{base:"OO",letters:"\uA74E"},{base:"OU",letters:"\u0222"},{base:"P",letters:"P\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754"},{base:"Q",letters:"Q\u24C6\uFF31\uA756\uA758\u024A"},{base:"R",letters:"R\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782"},{base:"S",letters:"S\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784"},{base:"T",letters:"T\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786"},{base:"TZ",letters:"\uA728"},{base:"U",letters:"U\u24CA\uFF35\xD9\xDA\xDB\u0168\u1E78\u016A\u1E7A\u016C\xDC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244"},{base:"V",letters:"V\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245"},{base:"VY",letters:"\uA760"},{base:"W",letters:"W\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72"},{base:"X",letters:"X\u24CD\uFF38\u1E8A\u1E8C"},{base:"Y",letters:"Y\u24CE\uFF39\u1EF2\xDD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE"},{base:"Z",letters:"Z\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762"},{base:"a",letters:"a\u24D0\uFF41\u1E9A\xE0\xE1\xE2\u1EA7\u1EA5\u1EAB\u1EA9\xE3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\xE4\u01DF\u1EA3\xE5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250"},{base:"aa",letters:"\uA733"},{base:"ae",letters:"\xE6\u01FD\u01E3"},{base:"ao",letters:"\uA735"},{base:"au",letters:"\uA737"},{base:"av",letters:"\uA739\uA73B"},{base:"ay",letters:"\uA73D"},{base:"b",letters:"b\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253"},{base:"c",letters:"c\u24D2\uFF43\u0107\u0109\u010B\u010D\xE7\u1E09\u0188\u023C\uA73F\u2184"},{base:"d",letters:"d\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A"},{base:"dz",letters:"\u01F3\u01C6"},{base:"e",letters:"e\u24D4\uFF45\xE8\xE9\xEA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\xEB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD"},{base:"f",letters:"f\u24D5\uFF46\u1E1F\u0192\uA77C"},{base:"g",letters:"g\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F"},{base:"h",letters:"h\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265"},{base:"hv",letters:"\u0195"},{base:"i",letters:"i\u24D8\uFF49\xEC\xED\xEE\u0129\u012B\u012D\xEF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131"},{base:"j",letters:"j\u24D9\uFF4A\u0135\u01F0\u0249"},{base:"k",letters:"k\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3"},{base:"l",letters:"l\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747"},{base:"lj",letters:"\u01C9"},{base:"m",letters:"m\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F"},{base:"n",letters:"n\u24DD\uFF4E\u01F9\u0144\xF1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5"},{base:"nj",letters:"\u01CC"},{base:"o",letters:"o\u24DE\uFF4F\xF2\xF3\xF4\u1ED3\u1ED1\u1ED7\u1ED5\xF5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\xF6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\xF8\u01FF\u0254\uA74B\uA74D\u0275"},{base:"oi",letters:"\u01A3"},{base:"ou",letters:"\u0223"},{base:"oo",letters:"\uA74F"},{base:"p",letters:"p\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755"},{base:"q",letters:"q\u24E0\uFF51\u024B\uA757\uA759"},{base:"r",letters:"r\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783"},{base:"s",letters:"s\u24E2\uFF53\xDF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B"},{base:"t",letters:"t\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787"},{base:"tz",letters:"\uA729"},{base:"u",letters:"u\u24E4\uFF55\xF9\xFA\xFB\u0169\u1E79\u016B\u1E7B\u016D\xFC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289"},{base:"v",letters:"v\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C"},{base:"vy",letters:"\uA761"},{base:"w",letters:"w\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73"},{base:"x",letters:"x\u24E7\uFF58\u1E8B\u1E8D"},{base:"y",letters:"y\u24E8\uFF59\u1EF3\xFD\u0177\u1EF9\u0233\u1E8F\xFF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF"},{base:"z",letters:"z\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763"}],KL=new RegExp("["+pm.map(function(e){return e.letters}).join("")+"]","g"),f_={};for(Ec=0;Ec<pm.length;Ec++)for(Sc=pm[Ec],Cc=0;Cc<Sc.letters.length;Cc++)f_[Sc.letters[Cc]]=Sc.base;var Sc,Cc,Ec,m_=function(t){return t.replace(KL,function(a){return f_[a]})},QL=t_(m_),n_=function(t){return t.replace(/^\s+|\s+$/g,"")},eM=function(t){return"".concat(t.label," ").concat(t.value)},tM=function(t){return function(a,n){if(a.data.__isNew__)return!0;var i=ae({ignoreCase:!0,ignoreAccents:!0,stringify:eM,trim:!0,matchFrom:"any"},t),r=i.ignoreCase,o=i.ignoreAccents,s=i.stringify,l=i.trim,u=i.matchFrom,c=l?n_(n):n,f=l?n_(s(a)):s(a);return r&&(c=c.toLowerCase(),f=f.toLowerCase()),o&&(c=QL(c),f=m_(f)),u==="start"?f.substr(0,c.length)===c:f.indexOf(c)>-1}},aM=["innerRef"];function nM(e){var t=e.innerRef,a=Wt(e,aM),n=gI(a,"onExited","in","enter","exit","appear");return re("input",W({ref:t},n,{css:Gr({label:"dummyInput",background:0,border:0,caretColor:"transparent",fontSize:"inherit",gridArea:"1 / 1 / 2 / 3",outline:0,padding:0,width:1,color:"transparent",left:-100,opacity:0,position:"relative",transform:"scale(.01)"},"","")}))}var iM=function(t){t.preventDefault(),t.stopPropagation()};function rM(e){var t=e.isEnabled,a=e.onBottomArrive,n=e.onBottomLeave,i=e.onTopArrive,r=e.onTopLeave,o=ot(!1),s=ot(!1),l=ot(0),u=ot(null),c=Fe(function(h,v){if(u.current!==null){var x=u.current,E=x.scrollTop,g=x.scrollHeight,w=x.clientHeight,C=u.current,y=v>0,S=g-w-E,A=!1;S>v&&o.current&&(n&&n(h),o.current=!1),y&&s.current&&(r&&r(h),s.current=!1),y&&v>S?(a&&!o.current&&a(h),C.scrollTop=g,A=!0,o.current=!0):!y&&-v>E&&(i&&!s.current&&i(h),C.scrollTop=0,A=!0,s.current=!0),A&&iM(h)}},[a,n,i,r]),f=Fe(function(h){c(h,h.deltaY)},[c]),p=Fe(function(h){l.current=h.changedTouches[0].clientY},[]),b=Fe(function(h){var v=l.current-h.changedTouches[0].clientY;c(h,v)},[c]),d=Fe(function(h){if(h){var v=vI?{passive:!1}:!1;h.addEventListener("wheel",f,v),h.addEventListener("touchstart",p,v),h.addEventListener("touchmove",b,v)}},[b,p,f]),m=Fe(function(h){h&&(h.removeEventListener("wheel",f,!1),h.removeEventListener("touchstart",p,!1),h.removeEventListener("touchmove",b,!1))},[b,p,f]);return ha(function(){if(t){var h=u.current;return d(h),function(){m(h)}}},[t,d,m]),function(h){u.current=h}}var i_=["boxSizing","height","overflow","paddingRight","position"],r_={boxSizing:"border-box",overflow:"hidden",position:"relative",height:"100%"};function o_(e){e.preventDefault()}function s_(e){e.stopPropagation()}function l_(){var e=this.scrollTop,t=this.scrollHeight,a=e+this.offsetHeight;e===0?this.scrollTop=1:a===t&&(this.scrollTop=e-1)}function c_(){return"ontouchstart"in window||navigator.maxTouchPoints}var u_=!!(typeof window!="undefined"&&window.document&&window.document.createElement),Ur=0,Ai={capture:!1,passive:!1};function oM(e){var t=e.isEnabled,a=e.accountForScrollbars,n=a===void 0?!0:a,i=ot({}),r=ot(null),o=Fe(function(l){if(u_){var u=document.body,c=u&&u.style;if(n&&i_.forEach(function(d){var m=c&&c[d];i.current[d]=m}),n&&Ur<1){var f=parseInt(i.current.paddingRight,10)||0,p=document.body?document.body.clientWidth:0,b=window.innerWidth-p+f||0;Object.keys(r_).forEach(function(d){var m=r_[d];c&&(c[d]=m)}),c&&(c.paddingRight="".concat(b,"px"))}u&&c_()&&(u.addEventListener("touchmove",o_,Ai),l&&(l.addEventListener("touchstart",l_,Ai),l.addEventListener("touchmove",s_,Ai))),Ur+=1}},[n]),s=Fe(function(l){if(u_){var u=document.body,c=u&&u.style;Ur=Math.max(Ur-1,0),n&&Ur<1&&i_.forEach(function(f){var p=i.current[f];c&&(c[f]=p)}),u&&c_()&&(u.removeEventListener("touchmove",o_,Ai),l&&(l.removeEventListener("touchstart",l_,Ai),l.removeEventListener("touchmove",s_,Ai)))}},[n]);return ha(function(){if(t){var l=r.current;return o(l),function(){s(l)}}},[t,o,s]),function(l){r.current=l}}var sM=function(){return document.activeElement&&document.activeElement.blur()},lM={name:"1kfdb0e",styles:"position:fixed;left:0;bottom:0;right:0;top:0"};function cM(e){var t=e.children,a=e.lockEnabled,n=e.captureEnabled,i=n===void 0?!0:n,r=e.onBottomArrive,o=e.onBottomLeave,s=e.onTopArrive,l=e.onTopLeave,u=rM({isEnabled:i,onBottomArrive:r,onBottomLeave:o,onTopArrive:s,onTopLeave:l}),c=oM({isEnabled:a}),f=function(b){u(b),c(b)};return re(rt,null,a&&re("div",{onClick:sM,css:lM}),t(f))}var uM={name:"1a0ro4n-requiredInput",styles:"label:requiredInput;opacity:0;pointer-events:none;position:absolute;bottom:0;left:0;right:0;width:100%"},pM=function(t){var a=t.name,n=t.onFocus;return re("input",{required:!0,name:a,tabIndex:-1,"aria-hidden":"true",onFocus:n,css:uM,value:"",onChange:function(){}})},dM=pM,fM=function(t){return t.label},mM=function(t){return t.label},hM=function(t){return t.value},vM=function(t){return!!t.isDisabled},bM={clearIndicator:LI,container:FI,control:GI,dropdownIndicator:jI,group:HI,groupHeading:WI,indicatorsContainer:OI,indicatorSeparator:MI,input:VI,loadingIndicator:DI,loadingMessage:II,menu:yI,menuList:SI,menuPortal:kI,multiValue:JI,multiValueLabel:ZI,multiValueRemove:qI,noOptionsMessage:AI,option:$I,placeholder:YI,singleValue:KI,valueContainer:PI};var gM={primary:"#2684FF",primary75:"#4C9AFF",primary50:"#B2D4FF",primary25:"#DEEBFF",danger:"#DE350B",dangerLight:"#FFBDAD",neutral0:"hsl(0, 0%, 100%)",neutral5:"hsl(0, 0%, 95%)",neutral10:"hsl(0, 0%, 90%)",neutral20:"hsl(0, 0%, 80%)",neutral30:"hsl(0, 0%, 70%)",neutral40:"hsl(0, 0%, 60%)",neutral50:"hsl(0, 0%, 50%)",neutral60:"hsl(0, 0%, 40%)",neutral70:"hsl(0, 0%, 30%)",neutral80:"hsl(0, 0%, 20%)",neutral90:"hsl(0, 0%, 10%)"},xM=4,h_=4,yM=38,wM=h_*2,EM={baseUnit:h_,controlHeight:yM,menuGutter:wM},um={borderRadius:xM,colors:gM,spacing:EM},SM={"aria-live":"polite",backspaceRemovesValue:!0,blurInputOnSelect:lm(),captureMenuScroll:!lm(),classNames:{},closeMenuOnSelect:!0,closeMenuOnScroll:!1,components:{},controlShouldRenderValue:!0,escapeClearsValue:!1,filterOption:tM(),formatGroupLabel:fM,getOptionLabel:mM,getOptionValue:hM,isDisabled:!1,isLoading:!1,isMulti:!1,isRtl:!1,isSearchable:!0,isOptionDisabled:vM,loadingMessage:function(){return"Loading..."},maxMenuHeight:300,minMenuHeight:140,menuIsOpen:!1,menuPlacement:"bottom",menuPosition:"absolute",menuShouldBlockScroll:!1,menuShouldScrollIntoView:!mI(),noOptionsMessage:function(){return"No options"},openMenuOnFocus:!1,openMenuOnClick:!0,options:[],pageSize:5,placeholder:"Select...",screenReaderStatus:function(t){var a=t.count;return"".concat(a," result").concat(a!==1?"s":""," available")},styles:{},tabIndex:0,tabSelectsValue:!0,unstyled:!1};function p_(e,t,a,n){var i=x_(e,t,a),r=y_(e,t,a),o=g_(e,t),s=Ac(e,t);return{type:"option",data:t,isDisabled:i,isSelected:r,label:o,value:s,index:n}}function v_(e,t){return e.options.map(function(a,n){if("options"in a){var i=a.options.map(function(o,s){return p_(e,o,t,s)}).filter(function(o){return d_(e,o)});return i.length>0?{type:"group",data:a,options:i,index:n}:void 0}var r=p_(e,a,t,n);return d_(e,r)?r:void 0}).filter(bI)}function b_(e){return e.reduce(function(t,a){return a.type==="group"?t.push.apply(t,ql(a.options.map(function(n){return n.data}))):t.push(a.data),t},[])}function CM(e,t){return b_(v_(e,t))}function d_(e,t){var a=e.inputValue,n=a===void 0?"":a,i=t.data,r=t.isSelected,o=t.label,s=t.value;return(!E_(e)||!r)&&w_(e,{label:o,value:s,data:i},n)}function AM(e,t){var a=e.focusedValue,n=e.selectValue,i=n.indexOf(a);if(i>-1){var r=t.indexOf(a);if(r>-1)return a;if(i<t.length)return t[i]}return null}function IM(e,t){var a=e.focusedOption;return a&&t.indexOf(a)>-1?a:t[0]}var g_=function(t,a){return t.getOptionLabel(a)},Ac=function(t,a){return t.getOptionValue(a)};function x_(e,t,a){return typeof e.isOptionDisabled=="function"?e.isOptionDisabled(t,a):!1}function y_(e,t,a){if(a.indexOf(t)>-1)return!0;if(typeof e.isOptionSelected=="function")return e.isOptionSelected(t,a);var n=Ac(e,t);return a.some(function(i){return Ac(e,i)===n})}function w_(e,t,a){return e.filterOption?e.filterOption(t,a):!0}var E_=function(t){var a=t.hideSelectedOptions,n=t.isMulti;return a===void 0?n:a},_M=1,dm=function(e){Tf(a,e);var t=Of(a);function a(n){var i;if(If(this,a),i=t.call(this,n),i.state={ariaSelection:null,focusedOption:null,focusedValue:null,inputIsHidden:!1,isFocused:!1,selectValue:[],clearFocusValueOnUpdate:!1,prevWasFocused:!1,inputIsHiddenAfterUpdate:void 0,prevProps:void 0},i.blockOptionHover=!1,i.isComposing=!1,i.commonProps=void 0,i.initialTouchX=0,i.initialTouchY=0,i.instancePrefix="",i.openAfterFocus=!1,i.scrollToFocusedOptionOnUpdate=!1,i.userIsDragging=void 0,i.controlRef=null,i.getControlRef=function(s){i.controlRef=s},i.focusedOptionRef=null,i.getFocusedOptionRef=function(s){i.focusedOptionRef=s},i.menuListRef=null,i.getMenuListRef=function(s){i.menuListRef=s},i.inputRef=null,i.getInputRef=function(s){i.inputRef=s},i.focus=i.focusInput,i.blur=i.blurInput,i.onChange=function(s,l){var u=i.props,c=u.onChange,f=u.name;l.name=f,i.ariaOnChange(s,l),c(s,l)},i.setValue=function(s,l,u){var c=i.props,f=c.closeMenuOnSelect,p=c.isMulti,b=c.inputValue;i.onInputChange("",{action:"set-value",prevInputValue:b}),f&&(i.setState({inputIsHiddenAfterUpdate:!p}),i.onMenuClose()),i.setState({clearFocusValueOnUpdate:!0}),i.onChange(s,{action:l,option:u})},i.selectOption=function(s){var l=i.props,u=l.blurInputOnSelect,c=l.isMulti,f=l.name,p=i.state.selectValue,b=c&&i.isOptionSelected(s,p),d=i.isOptionDisabled(s,p);if(b){var m=i.getOptionValue(s);i.setValue(p.filter(function(h){return i.getOptionValue(h)!==m}),"deselect-option",s)}else if(!d)c?i.setValue([].concat(ql(p),[s]),"select-option",s):i.setValue(s,"select-option");else{i.ariaOnChange(s,{action:"select-option",option:s,name:f});return}u&&i.blurInput()},i.removeValue=function(s){var l=i.props.isMulti,u=i.state.selectValue,c=i.getOptionValue(s),f=u.filter(function(b){return i.getOptionValue(b)!==c}),p=Vr(l,f,f[0]||null);i.onChange(p,{action:"remove-value",removedValue:s}),i.focusInput()},i.clearValue=function(){var s=i.state.selectValue;i.onChange(Vr(i.props.isMulti,[],null),{action:"clear",removedValues:s})},i.popValue=function(){var s=i.props.isMulti,l=i.state.selectValue,u=l[l.length-1],c=l.slice(0,l.length-1),f=Vr(s,c,c[0]||null);i.onChange(f,{action:"pop-value",removedValue:u})},i.getValue=function(){return i.state.selectValue},i.cx=function(){for(var s=arguments.length,l=new Array(s),u=0;u<s;u++)l[u]=arguments[u];return uI.apply(void 0,[i.props.classNamePrefix].concat(l))},i.getOptionLabel=function(s){return g_(i.props,s)},i.getOptionValue=function(s){return Ac(i.props,s)},i.getStyles=function(s,l){var u=i.props.unstyled,c=bM[s](l,u);c.boxSizing="border-box";var f=i.props.styles[s];return f?f(c,l):c},i.getClassNames=function(s,l){var u,c;return(u=(c=i.props.classNames)[s])===null||u===void 0?void 0:u.call(c,l)},i.getElementId=function(s){return"".concat(i.instancePrefix,"-").concat(s)},i.getComponents=function(){return QI(i.props)},i.buildCategorizedOptions=function(){return v_(i.props,i.state.selectValue)},i.getCategorizedOptions=function(){return i.props.menuIsOpen?i.buildCategorizedOptions():[]},i.buildFocusableOptions=function(){return b_(i.buildCategorizedOptions())},i.getFocusableOptions=function(){return i.props.menuIsOpen?i.buildFocusableOptions():[]},i.ariaOnChange=function(s,l){i.setState({ariaSelection:ae({value:s},l)})},i.onMenuMouseDown=function(s){s.button===0&&(s.stopPropagation(),s.preventDefault(),i.focusInput())},i.onMenuMouseMove=function(s){i.blockOptionHover=!1},i.onControlMouseDown=function(s){if(!s.defaultPrevented){var l=i.props.openMenuOnClick;i.state.isFocused?i.props.menuIsOpen?s.target.tagName!=="INPUT"&&s.target.tagName!=="TEXTAREA"&&i.onMenuClose():l&&i.openMenu("first"):(l&&(i.openAfterFocus=!0),i.focusInput()),s.target.tagName!=="INPUT"&&s.target.tagName!=="TEXTAREA"&&s.preventDefault()}},i.onDropdownIndicatorMouseDown=function(s){if(!(s&&s.type==="mousedown"&&s.button!==0)&&!i.props.isDisabled){var l=i.props,u=l.isMulti,c=l.menuIsOpen;i.focusInput(),c?(i.setState({inputIsHiddenAfterUpdate:!u}),i.onMenuClose()):i.openMenu("first"),s.preventDefault()}},i.onClearIndicatorMouseDown=function(s){s&&s.type==="mousedown"&&s.button!==0||(i.clearValue(),s.preventDefault(),i.openAfterFocus=!1,s.type==="touchend"?i.focusInput():setTimeout(function(){return i.focusInput()}))},i.onScroll=function(s){typeof i.props.closeMenuOnScroll=="boolean"?s.target instanceof HTMLElement&&Wr(s.target)&&i.props.onMenuClose():typeof i.props.closeMenuOnScroll=="function"&&i.props.closeMenuOnScroll(s)&&i.props.onMenuClose()},i.onCompositionStart=function(){i.isComposing=!0},i.onCompositionEnd=function(){i.isComposing=!1},i.onTouchStart=function(s){var l=s.touches,u=l&&l.item(0);u&&(i.initialTouchX=u.clientX,i.initialTouchY=u.clientY,i.userIsDragging=!1)},i.onTouchMove=function(s){var l=s.touches,u=l&&l.item(0);if(u){var c=Math.abs(u.clientX-i.initialTouchX),f=Math.abs(u.clientY-i.initialTouchY),p=5;i.userIsDragging=c>p||f>p}},i.onTouchEnd=function(s){i.userIsDragging||(i.controlRef&&!i.controlRef.contains(s.target)&&i.menuListRef&&!i.menuListRef.contains(s.target)&&i.blurInput(),i.initialTouchX=0,i.initialTouchY=0)},i.onControlTouchEnd=function(s){i.userIsDragging||i.onControlMouseDown(s)},i.onClearIndicatorTouchEnd=function(s){i.userIsDragging||i.onClearIndicatorMouseDown(s)},i.onDropdownIndicatorTouchEnd=function(s){i.userIsDragging||i.onDropdownIndicatorMouseDown(s)},i.handleInputChange=function(s){var l=i.props.inputValue,u=s.currentTarget.value;i.setState({inputIsHiddenAfterUpdate:!1}),i.onInputChange(u,{action:"input-change",prevInputValue:l}),i.props.menuIsOpen||i.onMenuOpen()},i.onInputFocus=function(s){i.props.onFocus&&i.props.onFocus(s),i.setState({inputIsHiddenAfterUpdate:!1,isFocused:!0}),(i.openAfterFocus||i.props.openMenuOnFocus)&&i.openMenu("first"),i.openAfterFocus=!1},i.onInputBlur=function(s){var l=i.props.inputValue;if(i.menuListRef&&i.menuListRef.contains(document.activeElement)){i.inputRef.focus();return}i.props.onBlur&&i.props.onBlur(s),i.onInputChange("",{action:"input-blur",prevInputValue:l}),i.onMenuClose(),i.setState({focusedValue:null,isFocused:!1})},i.onOptionHover=function(s){i.blockOptionHover||i.state.focusedOption===s||i.setState({focusedOption:s})},i.shouldHideSelectedOptions=function(){return E_(i.props)},i.onValueInputFocus=function(s){s.preventDefault(),s.stopPropagation(),i.focus()},i.onKeyDown=function(s){var l=i.props,u=l.isMulti,c=l.backspaceRemovesValue,f=l.escapeClearsValue,p=l.inputValue,b=l.isClearable,d=l.isDisabled,m=l.menuIsOpen,h=l.onKeyDown,v=l.tabSelectsValue,x=l.openMenuOnFocus,E=i.state,g=E.focusedOption,w=E.focusedValue,C=E.selectValue;if(!d&&!(typeof h=="function"&&(h(s),s.defaultPrevented))){switch(i.blockOptionHover=!0,s.key){case"ArrowLeft":if(!u||p)return;i.focusValue("previous");break;case"ArrowRight":if(!u||p)return;i.focusValue("next");break;case"Delete":case"Backspace":if(p)return;if(w)i.removeValue(w);else{if(!c)return;u?i.popValue():b&&i.clearValue()}break;case"Tab":if(i.isComposing||s.shiftKey||!m||!v||!g||x&&i.isOptionSelected(g,C))return;i.selectOption(g);break;case"Enter":if(s.keyCode===229)break;if(m){if(!g||i.isComposing)return;i.selectOption(g);break}return;case"Escape":m?(i.setState({inputIsHiddenAfterUpdate:!1}),i.onInputChange("",{action:"menu-close",prevInputValue:p}),i.onMenuClose()):b&&f&&i.clearValue();break;case" ":if(p)return;if(!m){i.openMenu("first");break}if(!g)return;i.selectOption(g);break;case"ArrowUp":m?i.focusOption("up"):i.openMenu("last");break;case"ArrowDown":m?i.focusOption("down"):i.openMenu("first");break;case"PageUp":if(!m)return;i.focusOption("pageup");break;case"PageDown":if(!m)return;i.focusOption("pagedown");break;case"Home":if(!m)return;i.focusOption("first");break;case"End":if(!m)return;i.focusOption("last");break;default:return}s.preventDefault()}},i.instancePrefix="react-select-"+(i.props.instanceId||++_M),i.state.selectValue=om(n.value),n.menuIsOpen&&i.state.selectValue.length){var r=i.buildFocusableOptions(),o=r.indexOf(i.state.selectValue[0]);i.state.focusedOption=r[o]}return i}return _f(a,[{key:"componentDidMount",value:function(){this.startListeningComposition(),this.startListeningToTouch(),this.props.closeMenuOnScroll&&document&&document.addEventListener&&document.addEventListener("scroll",this.onScroll,!0),this.props.autoFocus&&this.focusInput(),this.props.menuIsOpen&&this.state.focusedOption&&this.menuListRef&&this.focusedOptionRef&&sm(this.menuListRef,this.focusedOptionRef)}},{key:"componentDidUpdate",value:function(i){var r=this.props,o=r.isDisabled,s=r.menuIsOpen,l=this.state.isFocused;(l&&!o&&i.isDisabled||l&&s&&!i.menuIsOpen)&&this.focusInput(),l&&o&&!i.isDisabled?this.setState({isFocused:!1},this.onMenuClose):!l&&!o&&i.isDisabled&&this.inputRef===document.activeElement&&this.setState({isFocused:!0}),this.menuListRef&&this.focusedOptionRef&&this.scrollToFocusedOptionOnUpdate&&(sm(this.menuListRef,this.focusedOptionRef),this.scrollToFocusedOptionOnUpdate=!1)}},{key:"componentWillUnmount",value:function(){this.stopListeningComposition(),this.stopListeningToTouch(),document.removeEventListener("scroll",this.onScroll,!0)}},{key:"onMenuOpen",value:function(){this.props.onMenuOpen()}},{key:"onMenuClose",value:function(){this.onInputChange("",{action:"menu-close",prevInputValue:this.props.inputValue}),this.props.onMenuClose()}},{key:"onInputChange",value:function(i,r){this.props.onInputChange(i,r)}},{key:"focusInput",value:function(){this.inputRef&&this.inputRef.focus()}},{key:"blurInput",value:function(){this.inputRef&&this.inputRef.blur()}},{key:"openMenu",value:function(i){var r=this,o=this.state,s=o.selectValue,l=o.isFocused,u=this.buildFocusableOptions(),c=i==="first"?0:u.length-1;if(!this.props.isMulti){var f=u.indexOf(s[0]);f>-1&&(c=f)}this.scrollToFocusedOptionOnUpdate=!(l&&this.menuListRef),this.setState({inputIsHiddenAfterUpdate:!1,focusedValue:null,focusedOption:u[c]},function(){return r.onMenuOpen()})}},{key:"focusValue",value:function(i){var r=this.state,o=r.selectValue,s=r.focusedValue;if(this.props.isMulti){this.setState({focusedOption:null});var l=o.indexOf(s);s||(l=-1);var u=o.length-1,c=-1;if(o.length){switch(i){case"previous":l===0?c=0:l===-1?c=u:c=l-1;break;case"next":l>-1&&l<u&&(c=l+1);break}this.setState({inputIsHidden:c!==-1,focusedValue:o[c]})}}}},{key:"focusOption",value:function(){var i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"first",r=this.props.pageSize,o=this.state.focusedOption,s=this.getFocusableOptions();if(s.length){var l=0,u=s.indexOf(o);o||(u=-1),i==="up"?l=u>0?u-1:s.length-1:i==="down"?l=(u+1)%s.length:i==="pageup"?(l=u-r,l<0&&(l=0)):i==="pagedown"?(l=u+r,l>s.length-1&&(l=s.length-1)):i==="last"&&(l=s.length-1),this.scrollToFocusedOptionOnUpdate=!0,this.setState({focusedOption:s[l],focusedValue:null})}}},{key:"getTheme",value:function(){return this.props.theme?typeof this.props.theme=="function"?this.props.theme(um):ae(ae({},um),this.props.theme):um}},{key:"getCommonProps",value:function(){var i=this.clearValue,r=this.cx,o=this.getStyles,s=this.getClassNames,l=this.getValue,u=this.selectOption,c=this.setValue,f=this.props,p=f.isMulti,b=f.isRtl,d=f.options,m=this.hasValue();return{clearValue:i,cx:r,getStyles:o,getClassNames:s,getValue:l,hasValue:m,isMulti:p,isRtl:b,options:d,selectOption:u,selectProps:f,setValue:c,theme:this.getTheme()}}},{key:"hasValue",value:function(){var i=this.state.selectValue;return i.length>0}},{key:"hasOptions",value:function(){return!!this.getFocusableOptions().length}},{key:"isClearable",value:function(){var i=this.props,r=i.isClearable,o=i.isMulti;return r===void 0?o:r}},{key:"isOptionDisabled",value:function(i,r){return x_(this.props,i,r)}},{key:"isOptionSelected",value:function(i,r){return y_(this.props,i,r)}},{key:"filterOption",value:function(i,r){return w_(this.props,i,r)}},{key:"formatOptionLabel",value:function(i,r){if(typeof this.props.formatOptionLabel=="function"){var o=this.props.inputValue,s=this.state.selectValue;return this.props.formatOptionLabel(i,{context:r,inputValue:o,selectValue:s})}else return this.getOptionLabel(i)}},{key:"formatGroupLabel",value:function(i){return this.props.formatGroupLabel(i)}},{key:"startListeningComposition",value:function(){document&&document.addEventListener&&(document.addEventListener("compositionstart",this.onCompositionStart,!1),document.addEventListener("compositionend",this.onCompositionEnd,!1))}},{key:"stopListeningComposition",value:function(){document&&document.removeEventListener&&(document.removeEventListener("compositionstart",this.onCompositionStart),document.removeEventListener("compositionend",this.onCompositionEnd))}},{key:"startListeningToTouch",value:function(){document&&document.addEventListener&&(document.addEventListener("touchstart",this.onTouchStart,!1),document.addEventListener("touchmove",this.onTouchMove,!1),document.addEventListener("touchend",this.onTouchEnd,!1))}},{key:"stopListeningToTouch",value:function(){document&&document.removeEventListener&&(document.removeEventListener("touchstart",this.onTouchStart),document.removeEventListener("touchmove",this.onTouchMove),document.removeEventListener("touchend",this.onTouchEnd))}},{key:"renderInput",value:function(){var i=this.props,r=i.isDisabled,o=i.isSearchable,s=i.inputId,l=i.inputValue,u=i.tabIndex,c=i.form,f=i.menuIsOpen,p=i.required,b=this.getComponents(),d=b.Input,m=this.state,h=m.inputIsHidden,v=m.ariaSelection,x=this.commonProps,E=s||this.getElementId("input"),g=ae(ae(ae({"aria-autocomplete":"list","aria-expanded":f,"aria-haspopup":!0,"aria-errormessage":this.props["aria-errormessage"],"aria-invalid":this.props["aria-invalid"],"aria-label":this.props["aria-label"],"aria-labelledby":this.props["aria-labelledby"],"aria-required":p,role:"combobox"},f&&{"aria-controls":this.getElementId("listbox"),"aria-owns":this.getElementId("listbox")}),!o&&{"aria-readonly":!0}),this.hasValue()?(v==null?void 0:v.action)==="initial-input-focus"&&{"aria-describedby":this.getElementId("live-region")}:{"aria-describedby":this.getElementId("placeholder")});return o?se(d,W({},x,{autoCapitalize:"none",autoComplete:"off",autoCorrect:"off",id:E,innerRef:this.getInputRef,isDisabled:r,isHidden:h,onBlur:this.onInputBlur,onChange:this.handleInputChange,onFocus:this.onInputFocus,spellCheck:"false",tabIndex:u,form:c,type:"text",value:l},g)):se(nM,W({id:E,innerRef:this.getInputRef,onBlur:this.onInputBlur,onChange:Hr,onFocus:this.onInputFocus,disabled:r,tabIndex:u,inputMode:"none",form:c,value:""},g))}},{key:"renderPlaceholderOrValue",value:function(){var i=this,r=this.getComponents(),o=r.MultiValue,s=r.MultiValueContainer,l=r.MultiValueLabel,u=r.MultiValueRemove,c=r.SingleValue,f=r.Placeholder,p=this.commonProps,b=this.props,d=b.controlShouldRenderValue,m=b.isDisabled,h=b.isMulti,v=b.inputValue,x=b.placeholder,E=this.state,g=E.selectValue,w=E.focusedValue,C=E.isFocused;if(!this.hasValue()||!d)return v?null:se(f,W({},p,{key:"placeholder",isDisabled:m,isFocused:C,innerProps:{id:this.getElementId("placeholder")}}),x);if(h)return g.map(function(S,A){var _=S===w,P="".concat(i.getOptionLabel(S),"-").concat(i.getOptionValue(S));return se(o,W({},p,{components:{Container:s,Label:l,Remove:u},isFocused:_,isDisabled:m,key:P,index:A,removeProps:{onClick:function(){return i.removeValue(S)},onTouchEnd:function(){return i.removeValue(S)},onMouseDown:function(B){B.preventDefault()}},data:S}),i.formatOptionLabel(S,"value"))});if(v)return null;var y=g[0];return se(c,W({},p,{data:y,isDisabled:m}),this.formatOptionLabel(y,"value"))}},{key:"renderClearIndicator",value:function(){var i=this.getComponents(),r=i.ClearIndicator,o=this.commonProps,s=this.props,l=s.isDisabled,u=s.isLoading,c=this.state.isFocused;if(!this.isClearable()||!r||l||!this.hasValue()||u)return null;var f={onMouseDown:this.onClearIndicatorMouseDown,onTouchEnd:this.onClearIndicatorTouchEnd,"aria-hidden":"true"};return se(r,W({},o,{innerProps:f,isFocused:c}))}},{key:"renderLoadingIndicator",value:function(){var i=this.getComponents(),r=i.LoadingIndicator,o=this.commonProps,s=this.props,l=s.isDisabled,u=s.isLoading,c=this.state.isFocused;if(!r||!u)return null;var f={"aria-hidden":"true"};return se(r,W({},o,{innerProps:f,isDisabled:l,isFocused:c}))}},{key:"renderIndicatorSeparator",value:function(){var i=this.getComponents(),r=i.DropdownIndicator,o=i.IndicatorSeparator;if(!r||!o)return null;var s=this.commonProps,l=this.props.isDisabled,u=this.state.isFocused;return se(o,W({},s,{isDisabled:l,isFocused:u}))}},{key:"renderDropdownIndicator",value:function(){var i=this.getComponents(),r=i.DropdownIndicator;if(!r)return null;var o=this.commonProps,s=this.props.isDisabled,l=this.state.isFocused,u={onMouseDown:this.onDropdownIndicatorMouseDown,onTouchEnd:this.onDropdownIndicatorTouchEnd,"aria-hidden":"true"};return se(r,W({},o,{innerProps:u,isDisabled:s,isFocused:l}))}},{key:"renderMenu",value:function(){var i=this,r=this.getComponents(),o=r.Group,s=r.GroupHeading,l=r.Menu,u=r.MenuList,c=r.MenuPortal,f=r.LoadingMessage,p=r.NoOptionsMessage,b=r.Option,d=this.commonProps,m=this.state.focusedOption,h=this.props,v=h.captureMenuScroll,x=h.inputValue,E=h.isLoading,g=h.loadingMessage,w=h.minMenuHeight,C=h.maxMenuHeight,y=h.menuIsOpen,S=h.menuPlacement,A=h.menuPosition,_=h.menuPortalTarget,P=h.menuShouldBlockScroll,F=h.menuShouldScrollIntoView,B=h.noOptionsMessage,j=h.onMenuScrollToTop,L=h.onMenuScrollToBottom;if(!y)return null;var k=function(Z,pe){var fe=Z.type,ee=Z.data,oe=Z.isDisabled,U=Z.isSelected,X=Z.label,$=Z.value,he=m===ee,qe=oe?void 0:function(){return i.onOptionHover(ee)},ze=oe?void 0:function(){return i.selectOption(ee)},ht="".concat(i.getElementId("option"),"-").concat(pe),R={id:ht,onClick:ze,onMouseMove:qe,onMouseOver:qe,tabIndex:-1};return se(b,W({},d,{innerProps:R,data:ee,isDisabled:oe,isSelected:U,key:ht,label:X,type:fe,value:$,isFocused:he,innerRef:he?i.getFocusedOptionRef:void 0}),i.formatOptionLabel(Z.data,"menu"))},T;if(this.hasOptions())T=this.getCategorizedOptions().map(function(q){if(q.type==="group"){var Z=q.data,pe=q.options,fe=q.index,ee="".concat(i.getElementId("group"),"-").concat(fe),oe="".concat(ee,"-heading");return se(o,W({},d,{key:ee,data:Z,options:pe,Heading:s,headingProps:{id:oe,data:q.data},label:i.formatGroupLabel(q.data)}),q.options.map(function(U){return k(U,"".concat(fe,"-").concat(U.index))}))}else if(q.type==="option")return k(q,"".concat(q.index))});else if(E){var N=g({inputValue:x});if(N===null)return null;T=se(f,d,N)}else{var M=B({inputValue:x});if(M===null)return null;T=se(p,d,M)}var D={minMenuHeight:w,maxMenuHeight:C,menuPlacement:S,menuPosition:A,menuShouldScrollIntoView:F},V=se(EI,W({},d,D),function(q){var Z=q.ref,pe=q.placerProps,fe=pe.placement,ee=pe.maxHeight;return se(l,W({},d,D,{innerRef:Z,innerProps:{onMouseDown:i.onMenuMouseDown,onMouseMove:i.onMenuMouseMove,id:i.getElementId("listbox")},isLoading:E,placement:fe}),se(cM,{captureEnabled:v,onTopArrive:j,onBottomArrive:L,lockEnabled:P},function(oe){return se(u,W({},d,{innerRef:function(X){i.getMenuListRef(X),oe(X)},isLoading:E,maxHeight:ee,focusedOption:m}),T)}))});return _||A==="fixed"?se(c,W({},d,{appendTo:_,controlElement:this.controlRef,menuPlacement:S,menuPosition:A}),V):V}},{key:"renderFormField",value:function(){var i=this,r=this.props,o=r.delimiter,s=r.isDisabled,l=r.isMulti,u=r.name,c=r.required,f=this.state.selectValue;if(c&&!this.hasValue()&&!s)return se(dM,{name:u,onFocus:this.onValueInputFocus});if(!(!u||s))if(l)if(o){var p=f.map(function(m){return i.getOptionValue(m)}).join(o);return se("input",{name:u,type:"hidden",value:p})}else{var b=f.length>0?f.map(function(m,h){return se("input",{key:"i-".concat(h),name:u,type:"hidden",value:i.getOptionValue(m)})}):se("input",{name:u,type:"hidden",value:""});return se("div",null,b)}else{var d=f[0]?this.getOptionValue(f[0]):"";return se("input",{name:u,type:"hidden",value:d})}}},{key:"renderLiveRegion",value:function(){var i=this.commonProps,r=this.state,o=r.ariaSelection,s=r.focusedOption,l=r.focusedValue,u=r.isFocused,c=r.selectValue,f=this.getFocusableOptions();return se(YL,W({},i,{id:this.getElementId("live-region"),ariaSelection:o,focusedOption:s,focusedValue:l,isFocused:u,selectValue:c,focusableOptions:f}))}},{key:"render",value:function(){var i=this.getComponents(),r=i.Control,o=i.IndicatorsContainer,s=i.SelectContainer,l=i.ValueContainer,u=this.props,c=u.className,f=u.id,p=u.isDisabled,b=u.menuIsOpen,d=this.state.isFocused,m=this.commonProps=this.getCommonProps();return se(s,W({},m,{className:c,innerProps:{id:f,onKeyDown:this.onKeyDown},isDisabled:p,isFocused:d}),this.renderLiveRegion(),se(r,W({},m,{innerRef:this.getControlRef,innerProps:{onMouseDown:this.onControlMouseDown,onTouchEnd:this.onControlTouchEnd},isDisabled:p,isFocused:d,menuIsOpen:b}),se(l,W({},m,{isDisabled:p}),this.renderPlaceholderOrValue(),this.renderInput()),se(o,W({},m,{isDisabled:p}),this.renderClearIndicator(),this.renderLoadingIndicator(),this.renderIndicatorSeparator(),this.renderDropdownIndicator())),this.renderMenu(),this.renderFormField())}}],[{key:"getDerivedStateFromProps",value:function(i,r){var o=r.prevProps,s=r.clearFocusValueOnUpdate,l=r.inputIsHiddenAfterUpdate,u=r.ariaSelection,c=r.isFocused,f=r.prevWasFocused,p=i.options,b=i.value,d=i.menuIsOpen,m=i.inputValue,h=i.isMulti,v=om(b),x={};if(o&&(b!==o.value||p!==o.options||d!==o.menuIsOpen||m!==o.inputValue)){var E=d?CM(i,v):[],g=s?AM(r,v):null,w=IM(r,E);x={selectValue:v,focusedOption:w,focusedValue:g,clearFocusValueOnUpdate:!1}}var C=l!=null&&i!==o?{inputIsHidden:l,inputIsHiddenAfterUpdate:void 0}:{},y=u,S=c&&f;return c&&!S&&(y={value:Vr(h,v,v[0]||null),options:v,action:"initial-input-focus"},S=!f),(u==null?void 0:u.action)==="initial-input-focus"&&(y=null),ae(ae(ae({},x),C),{},{prevProps:i,ariaSelection:y,prevWasFocused:S})}}]),a}(Ct);dm.defaultProps=SM;var TM=["defaultInputValue","defaultMenuIsOpen","defaultValue","inputValue","menuIsOpen","onChange","onInputChange","onMenuClose","onMenuOpen","value"];function S_(e){var t=e.defaultInputValue,a=t===void 0?"":t,n=e.defaultMenuIsOpen,i=n===void 0?!1:n,r=e.defaultValue,o=r===void 0?null:r,s=e.inputValue,l=e.menuIsOpen,u=e.onChange,c=e.onInputChange,f=e.onMenuClose,p=e.onMenuOpen,b=e.value,d=Wt(e,TM),m=Re(s!==void 0?s:a),h=Le(m,2),v=h[0],x=h[1],E=Re(l!==void 0?l:i),g=Le(E,2),w=g[0],C=g[1],y=Re(b!==void 0?b:o),S=Le(y,2),A=S[0],_=S[1],P=Fe(function(N,M){typeof u=="function"&&u(N,M),_(N)},[u]),F=Fe(function(N,M){var D;typeof c=="function"&&(D=c(N,M)),x(D!==void 0?D:N)},[c]),B=Fe(function(){typeof p=="function"&&p(),C(!0)},[p]),j=Fe(function(){typeof f=="function"&&f(),C(!1)},[f]),L=s!==void 0?s:v,k=l!==void 0?l:w,T=b!==void 0?b:A;return ae(ae({},d),{},{inputValue:L,menuIsOpen:k,onChange:P,onInputChange:F,onMenuClose:j,onMenuOpen:B,value:T})}var kM=["defaultOptions","cacheOptions","loadOptions","options","isLoading","onInputChange","filterOption"];function C_(e){var t=e.defaultOptions,a=t===void 0?!1:t,n=e.cacheOptions,i=n===void 0?!1:n,r=e.loadOptions;e.options;var o=e.isLoading,s=o===void 0?!1:o,l=e.onInputChange,u=e.filterOption,c=u===void 0?null:u,f=Wt(e,kM),p=f.inputValue,b=ot(void 0),d=ot(!1),m=Re(Array.isArray(a)?a:void 0),h=Le(m,2),v=h[0],x=h[1],E=Re(typeof p!="undefined"?p:""),g=Le(E,2),w=g[0],C=g[1],y=Re(a===!0),S=Le(y,2),A=S[0],_=S[1],P=Re(void 0),F=Le(P,2),B=F[0],j=F[1],L=Re([]),k=Le(L,2),T=k[0],N=k[1],M=Re(!1),D=Le(M,2),V=D[0],q=D[1],Z=Re({}),pe=Le(Z,2),fe=pe[0],ee=pe[1],oe=Re(void 0),U=Le(oe,2),X=U[0],$=U[1],he=Re(void 0),qe=Le(he,2),ze=qe[0],ht=qe[1];i!==ze&&(ee({}),ht(i)),a!==X&&(x(Array.isArray(a)?a:void 0),$(a)),ha(function(){return d.current=!0,function(){d.current=!1}},[]);var R=Fe(function(H,ne){if(!r)return ne();var K=r(H,ne);K&&typeof K.then=="function"&&K.then(ne,function(){return ne()})},[r]);ha(function(){a===!0&&R(w,function(H){d.current&&(x(H||[]),_(!!b.current))})},[]);var z=Fe(function(H,ne){var K=dI(H,ne,l);if(!K){b.current=void 0,C(""),j(""),N([]),_(!1),q(!1);return}if(i&&fe[K])C(K),j(K),N(fe[K]),_(!1),q(!1);else{var Ae=b.current={};C(K),_(!0),q(!B),R(K,function(ue){d&&Ae===b.current&&(b.current=void 0,_(!1),j(K),N(ue||[]),q(!1),ee(ue?ae(ae({},fe),{},jt({},K,ue)):fe))})}},[i,R,B,fe,l]),J=V?[]:w&&B?T:v||[];return ae(ae({},f),{},{options:J,isLoading:A||s,onInputChange:z,filterOption:c})}var FM=Nn(function(e,t){var a=C_(e),n=S_(a);return se(dm,W({ref:t},n))}),Jr=FM;function Aa(e){return Array.isArray?Array.isArray(e):O_(e)==="[object Array]"}var PM=1/0;function OM(e){if(typeof e=="string")return e;let t=e+"";return t=="0"&&1/e==-PM?"-0":t}function RM(e){return e==null?"":OM(e)}function da(e){return typeof e=="string"}function F_(e){return typeof e=="number"}function BM(e){return e===!0||e===!1||NM(e)&&O_(e)=="[object Boolean]"}function P_(e){return typeof e=="object"}function NM(e){return P_(e)&&e!==null}function Bt(e){return e!=null}function fm(e){return!e.trim().length}function O_(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var jM="Incorrect 'index' type",LM=e=>`Invalid value for key ${e}`,MM=e=>`Pattern length exceeds max of ${e}.`,DM=e=>`Missing ${e} property in key`,zM=e=>`Property 'weight' in key '${e}' must be a positive integer`,A_=Object.prototype.hasOwnProperty,mm=class{constructor(t){this._keys=[],this._keyMap={};let a=0;t.forEach(n=>{let i=R_(n);a+=i.weight,this._keys.push(i),this._keyMap[i.id]=i,a+=i.weight}),this._keys.forEach(n=>{n.weight/=a})}get(t){return this._keyMap[t]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}};function R_(e){let t=null,a=null,n=null,i=1,r=null;if(da(e)||Aa(e))n=e,t=I_(e),a=hm(e);else{if(!A_.call(e,"name"))throw new Error(DM("name"));let o=e.name;if(n=o,A_.call(e,"weight")&&(i=e.weight,i<=0))throw new Error(zM(o));t=I_(o),a=hm(o),r=e.getFn}return{path:t,id:a,weight:i,src:n,getFn:r}}function I_(e){return Aa(e)?e:e.split(".")}function hm(e){return Aa(e)?e.join("."):e}function GM(e,t){let a=[],n=!1,i=(r,o,s)=>{if(Bt(r))if(!o[s])a.push(r);else{let l=o[s],u=r[l];if(!Bt(u))return;if(s===o.length-1&&(da(u)||F_(u)||BM(u)))a.push(RM(u));else if(Aa(u)){n=!0;for(let c=0,f=u.length;c<f;c+=1)i(u[c],o,s+1)}else o.length&&i(u,o,s+1)}};return i(e,da(t)?t.split("."):t,0),n?a:a[0]}var HM={includeMatches:!1,findAllMatches:!1,minMatchCharLength:1},WM={isCaseSensitive:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:(e,t)=>e.score===t.score?e.idx<t.idx?-1:1:e.score<t.score?-1:1},VM={location:0,threshold:.6,distance:100},UM={useExtendedSearch:!1,getFn:GM,ignoreLocation:!1,ignoreFieldNorm:!1,fieldNormWeight:1},le={...WM,...HM,...VM,...UM},JM=/[^ ]+/g;function ZM(e=1,t=3){let a=new Map,n=Math.pow(10,t);return{get(i){let r=i.match(JM).length;if(a.has(r))return a.get(r);let o=1/Math.pow(r,.5*e),s=parseFloat(Math.round(o*n)/n);return a.set(r,s),s},clear(){a.clear()}}}var Zr=class{constructor({getFn:t=le.getFn,fieldNormWeight:a=le.fieldNormWeight}={}){this.norm=ZM(a,3),this.getFn=t,this.isCreated=!1,this.setIndexRecords()}setSources(t=[]){this.docs=t}setIndexRecords(t=[]){this.records=t}setKeys(t=[]){this.keys=t,this._keysMap={},t.forEach((a,n)=>{this._keysMap[a.id]=n})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,da(this.docs[0])?this.docs.forEach((t,a)=>{this._addString(t,a)}):this.docs.forEach((t,a)=>{this._addObject(t,a)}),this.norm.clear())}add(t){let a=this.size();da(t)?this._addString(t,a):this._addObject(t,a)}removeAt(t){this.records.splice(t,1);for(let a=t,n=this.size();a<n;a+=1)this.records[a].i-=1}getValueForItemAtKeyId(t,a){return t[this._keysMap[a]]}size(){return this.records.length}_addString(t,a){if(!Bt(t)||fm(t))return;let n={v:t,i:a,n:this.norm.get(t)};this.records.push(n)}_addObject(t,a){let n={i:a,$:{}};this.keys.forEach((i,r)=>{let o=i.getFn?i.getFn(t):this.getFn(t,i.path);if(Bt(o)){if(Aa(o)){let s=[],l=[{nestedArrIndex:-1,value:o}];for(;l.length;){let{nestedArrIndex:u,value:c}=l.pop();if(Bt(c))if(da(c)&&!fm(c)){let f={v:c,i:u,n:this.norm.get(c)};s.push(f)}else Aa(c)&&c.forEach((f,p)=>{l.push({nestedArrIndex:p,value:f})})}n.$[r]=s}else if(da(o)&&!fm(o)){let s={v:o,n:this.norm.get(o)};n.$[r]=s}}}),this.records.push(n)}toJSON(){return{keys:this.keys,records:this.records}}};function B_(e,t,{getFn:a=le.getFn,fieldNormWeight:n=le.fieldNormWeight}={}){let i=new Zr({getFn:a,fieldNormWeight:n});return i.setKeys(e.map(R_)),i.setSources(t),i.create(),i}function qM(e,{getFn:t=le.getFn,fieldNormWeight:a=le.fieldNormWeight}={}){let{keys:n,records:i}=e,r=new Zr({getFn:t,fieldNormWeight:a});return r.setKeys(n),r.setIndexRecords(i),r}function Ic(e,{errors:t=0,currentLocation:a=0,expectedLocation:n=0,distance:i=le.distance,ignoreLocation:r=le.ignoreLocation}={}){let o=t/e.length;if(r)return o;let s=Math.abs(n-a);return i?o+s/i:s?1:o}function XM(e=[],t=le.minMatchCharLength){let a=[],n=-1,i=-1,r=0;for(let o=e.length;r<o;r+=1){let s=e[r];s&&n===-1?n=r:!s&&n!==-1&&(i=r-1,i-n+1>=t&&a.push([n,i]),n=-1)}return e[r-1]&&r-n>=t&&a.push([n,r-1]),a}var wn=32;function $M(e,t,a,{location:n=le.location,distance:i=le.distance,threshold:r=le.threshold,findAllMatches:o=le.findAllMatches,minMatchCharLength:s=le.minMatchCharLength,includeMatches:l=le.includeMatches,ignoreLocation:u=le.ignoreLocation}={}){if(t.length>wn)throw new Error(MM(wn));let c=t.length,f=e.length,p=Math.max(0,Math.min(n,f)),b=r,d=p,m=s>1||l,h=m?Array(f):[],v;for(;(v=e.indexOf(t,d))>-1;){let y=Ic(t,{currentLocation:v,expectedLocation:p,distance:i,ignoreLocation:u});if(b=Math.min(y,b),d=v+c,m){let S=0;for(;S<c;)h[v+S]=1,S+=1}}d=-1;let x=[],E=1,g=c+f,w=1<<c-1;for(let y=0;y<c;y+=1){let S=0,A=g;for(;S<A;)Ic(t,{errors:y,currentLocation:p+A,expectedLocation:p,distance:i,ignoreLocation:u})<=b?S=A:g=A,A=Math.floor((g-S)/2+S);g=A;let _=Math.max(1,p-A+1),P=o?f:Math.min(p+A,f)+c,F=Array(P+2);F[P+1]=(1<<y)-1;for(let j=P;j>=_;j-=1){let L=j-1,k=a[e.charAt(L)];if(m&&(h[L]=+!!k),F[j]=(F[j+1]<<1|1)&k,y&&(F[j]|=(x[j+1]|x[j])<<1|1|x[j+1]),F[j]&w&&(E=Ic(t,{errors:y,currentLocation:L,expectedLocation:p,distance:i,ignoreLocation:u}),E<=b)){if(b=E,d=L,d<=p)break;_=Math.max(1,2*p-d)}}if(Ic(t,{errors:y+1,currentLocation:p,expectedLocation:p,distance:i,ignoreLocation:u})>b)break;x=F}let C={isMatch:d>=0,score:Math.max(.001,E)};if(m){let y=XM(h,s);y.length?l&&(C.indices=y):C.isMatch=!1}return C}function YM(e){let t={};for(let a=0,n=e.length;a<n;a+=1){let i=e.charAt(a);t[i]=(t[i]||0)|1<<n-a-1}return t}var _c=class{constructor(t,{location:a=le.location,threshold:n=le.threshold,distance:i=le.distance,includeMatches:r=le.includeMatches,findAllMatches:o=le.findAllMatches,minMatchCharLength:s=le.minMatchCharLength,isCaseSensitive:l=le.isCaseSensitive,ignoreLocation:u=le.ignoreLocation}={}){if(this.options={location:a,threshold:n,distance:i,includeMatches:r,findAllMatches:o,minMatchCharLength:s,isCaseSensitive:l,ignoreLocation:u},this.pattern=l?t:t.toLowerCase(),this.chunks=[],!this.pattern.length)return;let c=(p,b)=>{this.chunks.push({pattern:p,alphabet:YM(p),startIndex:b})},f=this.pattern.length;if(f>wn){let p=0,b=f%wn,d=f-b;for(;p<d;)c(this.pattern.substr(p,wn),p),p+=wn;if(b){let m=f-wn;c(this.pattern.substr(m),m)}}else c(this.pattern,0)}searchIn(t){let{isCaseSensitive:a,includeMatches:n}=this.options;if(a||(t=t.toLowerCase()),this.pattern===t){let d={isMatch:!0,score:0};return n&&(d.indices=[[0,t.length-1]]),d}let{location:i,distance:r,threshold:o,findAllMatches:s,minMatchCharLength:l,ignoreLocation:u}=this.options,c=[],f=0,p=!1;this.chunks.forEach(({pattern:d,alphabet:m,startIndex:h})=>{let{isMatch:v,score:x,indices:E}=$M(t,d,m,{location:i+h,distance:r,threshold:o,findAllMatches:s,minMatchCharLength:l,includeMatches:n,ignoreLocation:u});v&&(p=!0),f+=x,v&&E&&(c=[...c,...E])});let b={isMatch:p,score:p?f/this.chunks.length:1};return p&&n&&(b.indices=c),b}},fa=class{constructor(t){this.pattern=t}static isMultiMatch(t){return __(t,this.multiRegex)}static isSingleMatch(t){return __(t,this.singleRegex)}search(){}};function __(e,t){let a=e.match(t);return a?a[1]:null}var vm=class extends fa{constructor(t){super(t)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(t){let a=t===this.pattern;return{isMatch:a,score:a?0:1,indices:[0,this.pattern.length-1]}}},bm=class extends fa{constructor(t){super(t)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(t){let n=t.indexOf(this.pattern)===-1;return{isMatch:n,score:n?0:1,indices:[0,t.length-1]}}},gm=class extends fa{constructor(t){super(t)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(t){let a=t.startsWith(this.pattern);return{isMatch:a,score:a?0:1,indices:[0,this.pattern.length-1]}}},xm=class extends fa{constructor(t){super(t)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(t){let a=!t.startsWith(this.pattern);return{isMatch:a,score:a?0:1,indices:[0,t.length-1]}}},ym=class extends fa{constructor(t){super(t)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(t){let a=t.endsWith(this.pattern);return{isMatch:a,score:a?0:1,indices:[t.length-this.pattern.length,t.length-1]}}},wm=class extends fa{constructor(t){super(t)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(t){let a=!t.endsWith(this.pattern);return{isMatch:a,score:a?0:1,indices:[0,t.length-1]}}},Tc=class extends fa{constructor(t,{location:a=le.location,threshold:n=le.threshold,distance:i=le.distance,includeMatches:r=le.includeMatches,findAllMatches:o=le.findAllMatches,minMatchCharLength:s=le.minMatchCharLength,isCaseSensitive:l=le.isCaseSensitive,ignoreLocation:u=le.ignoreLocation}={}){super(t),this._bitapSearch=new _c(t,{location:a,threshold:n,distance:i,includeMatches:r,findAllMatches:o,minMatchCharLength:s,isCaseSensitive:l,ignoreLocation:u})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(t){return this._bitapSearch.searchIn(t)}},kc=class extends fa{constructor(t){super(t)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(t){let a=0,n,i=[],r=this.pattern.length;for(;(n=t.indexOf(this.pattern,a))>-1;)a=n+r,i.push([n,a-1]);let o=!!i.length;return{isMatch:o,score:o?0:1,indices:i}}},Em=[vm,kc,gm,xm,wm,ym,bm,Tc],T_=Em.length,KM=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,QM="|";function eD(e,t={}){return e.split(QM).map(a=>{let n=a.trim().split(KM).filter(r=>r&&!!r.trim()),i=[];for(let r=0,o=n.length;r<o;r+=1){let s=n[r],l=!1,u=-1;for(;!l&&++u<T_;){let c=Em[u],f=c.isMultiMatch(s);f&&(i.push(new c(f,t)),l=!0)}if(!l)for(u=-1;++u<T_;){let c=Em[u],f=c.isSingleMatch(s);if(f){i.push(new c(f,t));break}}}return i})}var tD=new Set([Tc.type,kc.type]),Sm=class{constructor(t,{isCaseSensitive:a=le.isCaseSensitive,includeMatches:n=le.includeMatches,minMatchCharLength:i=le.minMatchCharLength,ignoreLocation:r=le.ignoreLocation,findAllMatches:o=le.findAllMatches,location:s=le.location,threshold:l=le.threshold,distance:u=le.distance}={}){this.query=null,this.options={isCaseSensitive:a,includeMatches:n,minMatchCharLength:i,findAllMatches:o,ignoreLocation:r,location:s,threshold:l,distance:u},this.pattern=a?t:t.toLowerCase(),this.query=eD(this.pattern,this.options)}static condition(t,a){return a.useExtendedSearch}searchIn(t){let a=this.query;if(!a)return{isMatch:!1,score:1};let{includeMatches:n,isCaseSensitive:i}=this.options;t=i?t:t.toLowerCase();let r=0,o=[],s=0;for(let l=0,u=a.length;l<u;l+=1){let c=a[l];o.length=0,r=0;for(let f=0,p=c.length;f<p;f+=1){let b=c[f],{isMatch:d,indices:m,score:h}=b.search(t);if(d){if(r+=1,s+=h,n){let v=b.constructor.type;tD.has(v)?o=[...o,...m]:o.push(m)}}else{s=0,r=0,o.length=0;break}}if(r){let f={isMatch:!0,score:s/r};return n&&(f.indices=o),f}}return{isMatch:!1,score:1}}},Cm=[];function aD(...e){Cm.push(...e)}function Am(e,t){for(let a=0,n=Cm.length;a<n;a+=1){let i=Cm[a];if(i.condition(e,t))return new i(e,t)}return new _c(e,t)}var Fc={AND:"$and",OR:"$or"},Im={PATH:"$path",PATTERN:"$val"},_m=e=>!!(e[Fc.AND]||e[Fc.OR]),nD=e=>!!e[Im.PATH],iD=e=>!Aa(e)&&P_(e)&&!_m(e),k_=e=>({[Fc.AND]:Object.keys(e).map(t=>({[t]:e[t]}))});function N_(e,t,{auto:a=!0}={}){let n=i=>{let r=Object.keys(i),o=nD(i);if(!o&&r.length>1&&!_m(i))return n(k_(i));if(iD(i)){let l=o?i[Im.PATH]:r[0],u=o?i[Im.PATTERN]:i[l];if(!da(u))throw new Error(LM(l));let c={keyId:hm(l),pattern:u};return a&&(c.searcher=Am(u,t)),c}let s={children:[],operator:r[0]};return r.forEach(l=>{let u=i[l];Aa(u)&&u.forEach(c=>{s.children.push(n(c))})}),s};return _m(e)||(e=k_(e)),n(e)}function rD(e,{ignoreFieldNorm:t=le.ignoreFieldNorm}){e.forEach(a=>{let n=1;a.matches.forEach(({key:i,norm:r,score:o})=>{let s=i?i.weight:null;n*=Math.pow(o===0&&s?Number.EPSILON:o,(s||1)*(t?1:r))}),a.score=n})}function oD(e,t){let a=e.matches;t.matches=[],Bt(a)&&a.forEach(n=>{if(!Bt(n.indices)||!n.indices.length)return;let{indices:i,value:r}=n,o={indices:i,value:r};n.key&&(o.key=n.key.src),n.idx>-1&&(o.refIndex=n.idx),t.matches.push(o)})}function sD(e,t){t.score=e.score}function lD(e,t,{includeMatches:a=le.includeMatches,includeScore:n=le.includeScore}={}){let i=[];return a&&i.push(oD),n&&i.push(sD),e.map(r=>{let{idx:o}=r,s={item:t[o],refIndex:o};return i.length&&i.forEach(l=>{l(r,s)}),s})}var qt=class{constructor(t,a={},n){this.options={...le,...a},this.options.useExtendedSearch,this._keyStore=new mm(this.options.keys),this.setCollection(t,n)}setCollection(t,a){if(this._docs=t,a&&!(a instanceof Zr))throw new Error(jM);this._myIndex=a||B_(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(t){Bt(t)&&(this._docs.push(t),this._myIndex.add(t))}remove(t=()=>!1){let a=[];for(let n=0,i=this._docs.length;n<i;n+=1){let r=this._docs[n];t(r,n)&&(this.removeAt(n),n-=1,i-=1,a.push(r))}return a}removeAt(t){this._docs.splice(t,1),this._myIndex.removeAt(t)}getIndex(){return this._myIndex}search(t,{limit:a=-1}={}){let{includeMatches:n,includeScore:i,shouldSort:r,sortFn:o,ignoreFieldNorm:s}=this.options,l=da(t)?da(this._docs[0])?this._searchStringList(t):this._searchObjectList(t):this._searchLogical(t);return rD(l,{ignoreFieldNorm:s}),r&&l.sort(o),F_(a)&&a>-1&&(l=l.slice(0,a)),lD(l,this._docs,{includeMatches:n,includeScore:i})}_searchStringList(t){let a=Am(t,this.options),{records:n}=this._myIndex,i=[];return n.forEach(({v:r,i:o,n:s})=>{if(!Bt(r))return;let{isMatch:l,score:u,indices:c}=a.searchIn(r);l&&i.push({item:r,idx:o,matches:[{score:u,value:r,norm:s,indices:c}]})}),i}_searchLogical(t){let a=N_(t,this.options),n=(s,l,u)=>{if(!s.children){let{keyId:f,searcher:p}=s,b=this._findMatches({key:this._keyStore.get(f),value:this._myIndex.getValueForItemAtKeyId(l,f),searcher:p});return b&&b.length?[{idx:u,item:l,matches:b}]:[]}let c=[];for(let f=0,p=s.children.length;f<p;f+=1){let b=s.children[f],d=n(b,l,u);if(d.length)c.push(...d);else if(s.operator===Fc.AND)return[]}return c},i=this._myIndex.records,r={},o=[];return i.forEach(({$:s,i:l})=>{if(Bt(s)){let u=n(a,s,l);u.length&&(r[l]||(r[l]={idx:l,item:s,matches:[]},o.push(r[l])),u.forEach(({matches:c})=>{r[l].matches.push(...c)}))}}),o}_searchObjectList(t){let a=Am(t,this.options),{keys:n,records:i}=this._myIndex,r=[];return i.forEach(({$:o,i:s})=>{if(!Bt(o))return;let l=[];n.forEach((u,c)=>{l.push(...this._findMatches({key:u,value:o[c],searcher:a}))}),l.length&&r.push({idx:s,item:o,matches:l})}),r}_findMatches({key:t,value:a,searcher:n}){if(!Bt(a))return[];let i=[];if(Aa(a))a.forEach(({v:r,i:o,n:s})=>{if(!Bt(r))return;let{isMatch:l,score:u,indices:c}=n.searchIn(r);l&&i.push({score:u,key:t,value:r,idx:o,norm:s,indices:c})});else{let{v:r,n:o}=a,{isMatch:s,score:l,indices:u}=n.searchIn(r);s&&i.push({score:l,key:t,value:r,norm:o,indices:u})}return i}};qt.version="6.6.2";qt.createIndex=B_;qt.parseIndex=qM;qt.config=le;qt.parseQuery=N_;aD(Sm);var qr=[{value:"academy-of-management-review",label:"Academy of Management Review"},{value:"accident-analysis-and-prevention",label:"Accident Analysis and Prevention"},{value:"aci-materials-journal",label:"ACI Materials Journal"},{value:"acm-sig-proceedings-long-author-list",label:'ACM SIG Proceedings ("et al." for 15+ authors)'},{value:"acm-sig-proceedings",label:'ACM SIG Proceedings ("et al." for 3+ authors)'},{value:"acm-sigchi-proceedings-extended-abstract-format",label:"ACM SIGCHI Proceedings - Extended Abstract Format"},{value:"acm-sigchi-proceedings",label:"ACM SIGCHI Proceedings (2016)"},{value:"acm-siggraph",label:"ACM SIGGRAPH"},{value:"acme-an-international-journal-for-critical-geographies",label:"ACME: An International Journal for Critical Geographies"},{value:"acta-amazonica",label:"Acta Amazonica"},{value:"acta-anaesthesiologica-scandinavica",label:"Acta Anaesthesiologica Scandinavica"},{value:"acta-anaesthesiologica-taiwanica",label:"Acta Anaesthesiologica Taiwanica"},{value:"acta-botanica-croatica",label:"Acta Botanica Croatica"},{value:"acta-chiropterologica",label:"Acta Chiropterologica"},{value:"acta-chirurgiae-orthopaedicae-et-traumatologiae-cechoslovaca",label:"Acta chirurgiae orthopaedicae et traumatologiae \u010Cechoslovaca"},{value:"acta-hydrotechnica",label:"Acta hydrotechnica"},{value:"acta-ichthyologica-et-piscatoria",label:"Acta Ichthyologica et Piscatoria"},{value:"acta-medica-peruana",label:"Acta M\xE9dica Peruana"},{value:"acta-naturae",label:"Acta Naturae"},{value:"acta-neurobiologiae-experimentalis",label:"Acta Neurobiologiae Experimentalis"},{value:"acta-neurochirurgica",label:"Acta Neurochirurgica"},{value:"acta-ophthalmologica",label:"Acta Ophthalmologica"},{value:"acta-ornithologica",label:"Acta Ornithologica"},{value:"acta-orthopaedica-belgica",label:"Acta Orthop\xE6dica Belgica"},{value:"acta-orthopaedica",label:"Acta Orthopaedica"},{value:"acta-paediatrica",label:"Acta Paediatrica"},{value:"acta-palaeontologica-polonica",label:"Acta Palaeontologica Polonica"},{value:"acta-pharmaceutica-sinica-b",label:"Acta Pharmaceutica Sinica B"},{value:"acta-pharmaceutica",label:"Acta Pharmaceutica"},{value:"acta-philosophica",label:"Acta Philosophica"},{value:"acta-physica-sinica",label:"Acta Physica Sinica (\u7269\u7406\u5B66\u62A5)"},{value:"acta-physiologica",label:"Acta Physiologica"},{value:"acta-polytechnica",label:"Acta Polytechnica"},{value:"acta-radiologica",label:"Acta Radiologica"},{value:"acta-scientiae-veterinariae",label:"Acta Scientiae Veterinariae"},{value:"acta-societatis-botanicorum-poloniae",label:"Acta Societatis Botanicorum Poloniae"},{value:"acta-universitatis-agriculturae-et-silviculturae-mendelianae-brunensis",label:"Acta Universitatis Agriculturae et Silviculturae Mendelianae Brunensis"},{value:"acta-universitatis-agriculturae-sueciae",label:"Acta Universitatis Agriculturae Sueciae (Swedish University of Agricultural Sciences)"},{value:"acta-zoologica-academiae-scientiarum-hungaricae",label:"Acta Zoologica Academiae Scientiarum Hungaricae"},{value:"administrative-science-quarterly",label:"Administrative Science Quarterly"},{value:"advanced-engineering-materials",label:"Advanced Engineering Materials"},{value:"advanced-functional-materials",label:"Advanced Functional Materials"},{value:"advanced-healthcare-materials",label:"Advanced Healthcare Materials"},{value:"advanced-materials",label:"Advanced Materials"},{value:"advanced-optical-materials",label:"Advanced Optical Materials"},{value:"advanced-pharmaceutical-bulletin",label:"Advanced Pharmaceutical Bulletin"},{value:"advances-in-alzheimers-disease",label:"Advances in Alzheimer's Disease"},{value:"advances-in-complex-systems",label:"Advances in Complex Systems"},{value:"aerosol-and-air-quality-research",label:"Aerosol and Air Quality Research"},{value:"aerosol-science-and-technology",label:"Aerosol Science and Technology"},{value:"aerospace-medicine-and-human-performance",label:"Aerospace Medicine and Human Performance"},{value:"african-journal-of-marine-science",label:"African Journal of Marine Science"},{value:"african-online-scientific-information-systems-harvard",label:"African Online Scientific Information Systems - Harvard"},{value:"african-online-scientific-information-systems-vancouver",label:"African Online Scientific Information Systems - Vancouver"},{value:"african-zoology",label:"African Zoology"},{value:"afro-asia",label:"Afro-\xC1sia (Portugu\xEAs - Brasil)"},{value:"age-and-ageing",label:"Age and Ageing"},{value:"ageing-and-society",label:"Ageing & Society"},{value:"aging-and-disease",label:"Aging and Disease"},{value:"aging-cell",label:"Aging Cell"},{value:"aging",label:"Aging"},{value:"agora",label:"Agora"},{value:"agriculturae-conspectus-scientificus",label:"Agriculturae Conspectus Scientificus"},{value:"aib-studi",label:"AIB studi (Italiano)"},{value:"aids",label:"AIDS"},{value:"aims-press",label:"AIMS Press"},{value:"aix-marseille-universite-departement-d-etudes-asiatiques",label:"Aix-Marseille Universit\xE9 - D\xE9partement d'\xE9tudes asiatiques (Fran\xE7ais)"},{value:"al-jamiah-journal-of-islamic-studies",label:"Al-Jami'ah - Journal of Islamic Studies"},{value:"alcohol-and-alcoholism",label:"Alcohol and Alcoholism"},{value:"alcoholism-clinical-and-experimental-research",label:"Alcoholism: Clinical and Experimental Research"},{value:"alkoholizmus-a-drogove-zavislosti",label:"Alkoholizmus a drogov\xE9 z\xE1vislosti"},{value:"allergology-international",label:"Allergology International"},{value:"allergy",label:"Allergy"},{value:"alternatif-politika",label:"Alternatif Politika"},{value:"alternatives-to-animal-experimentation",label:"Alternatives to Animal Experimentation"},{value:"ambio",label:"AMBIO"},{value:"ameghiniana",label:"Ameghiniana"},{value:"american-anthropological-association",label:"American Anthropological Association"},{value:"american-association-for-cancer-research",label:"American Association for Cancer Research"},{value:"american-association-of-petroleum-geologists",label:"American Association of Petroleum Geologists"},{value:"american-chemical-society",label:"American Chemical Society"},{value:"american-fisheries-society",label:"American Fisheries Society"},{value:"american-geophysical-union",label:"American Geophysical Union"},{value:"american-heart-association",label:"American Heart Association"},{value:"american-institute-of-aeronautics-and-astronautics",label:"American Institute of Aeronautics and Astronautics"},{value:"american-institute-of-physics",label:"American Institute of Physics"},{value:"american-journal-of-agricultural-economics",label:"American Journal of Agricultural Economics"},{value:"american-journal-of-archaeology",label:"American Journal of Archaeology"},{value:"american-journal-of-botany",label:"American Journal of Botany"},{value:"american-journal-of-climate-change",label:"American Journal of Climate Change"},{value:"american-journal-of-clinical-pathology",label:"American Journal of Clinical Pathology"},{value:"american-journal-of-enology-and-viticulture",label:"American Journal of Enology and Viticulture"},{value:"american-journal-of-epidemiology",label:"American Journal of Epidemiology"},{value:"american-journal-of-health-behavior",label:"American Journal of Health Behavior"},{value:"american-journal-of-hypertension",label:"American Journal of Hypertension"},{value:"american-journal-of-medical-genetics",label:"American Journal of Medical Genetics"},{value:"american-journal-of-neuroradiology",label:"American Journal of Neuroradiology"},{value:"american-journal-of-orthodontics-and-dentofacial-orthopedics",label:"American Journal of Orthodontics & Dentofacial Orthopedics"},{value:"american-journal-of-plant-sciences",label:"American Journal of Plant Sciences"},{value:"american-journal-of-political-science",label:"American Journal of Political Science"},{value:"american-journal-of-respiratory-and-critical-care-medicine",label:"American Journal of Respiratory and Critical Care Medicine"},{value:"american-journal-of-science",label:"American Journal of Science"},{value:"american-journal-of-sociology",label:"American Journal of Sociology"},{value:"american-journal-of-sonography",label:"American Journal of Sonography"},{value:"american-journal-of-surgical-pathology",label:"American Journal of Surgical Pathology"},{value:"american-journal-of-translational-research",label:"American Journal of Translational Research"},{value:"american-marketing-association",label:"American Marketing Association"},{value:"american-medical-association-10th-edition",label:"American Medical Association 10th edition"},{value:"american-medical-association-alphabetical",label:"American Medical Association 11th edition (sorted alphabetically)"},{value:"american-medical-association-brackets",label:"American Medical Association 11th edition (brackets)"},{value:"american-medical-association-no-et-al",label:'American Medical Association 11th edition (no "et al.")'},{value:"american-medical-association-no-url",label:"American Medical Association 11th edition (no URL)"},{value:"american-medical-association",label:"American Medical Association 11th edition"},{value:"american-meteorological-society",label:"American Meteorological Society"},{value:"american-mineralogist",label:"American Mineralogist"},{value:"american-nuclear-society",label:"American Nuclear Society"},{value:"american-physical-society-et-al",label:"American Physical Society - et al. (if more than 3 authors)"},{value:"american-physics-society-without-titles",label:"American Physical Society (without titles)"},{value:"american-physics-society",label:"American Physical Society"},{value:"american-physiological-society",label:"American Physiological Society"},{value:"american-phytopathological-society",label:"American Phytopathological Society"},{value:"american-political-science-association",label:"American Political Science Association"},{value:"american-school-of-classical-studies-at-athens",label:"American School of Classical Studies at Athens"},{value:"american-society-for-horticultural-science",label:"American Society for Horticultural Science"},{value:"american-society-for-microbiology",label:"American Society for Microbiology"},{value:"american-society-for-pharmacology-and-experimental-therapeutics",label:"American Society for Pharmacology and Experimental Therapeutics"},{value:"american-society-of-agricultural-and-biological-engineers",label:"American Society of Agricultural and Biological Engineers"},{value:"american-society-of-civil-engineers",label:"American Society of Civil Engineers"},{value:"american-society-of-mechanical-engineers",label:"American Society of Mechanical Engineers"},{value:"american-sociological-association",label:"American Sociological Association 6th edition"},{value:"american-statistical-association",label:"American Statistical Association"},{value:"american-veterinary-medical-association",label:"American Veterinary Medical Association"},{value:"amerindia",label:"Amerindia"},{value:"amphibia-reptilia",label:"Amphibia-Reptilia"},{value:"amsterdam-university-press-academic",label:"Amsterdam University Press - Academic"},{value:"anabases",label:"Anabases"},{value:"anaesthesia",label:"Anaesthesia"},{value:"analytical-sciences",label:"Analytical Sciences"},{value:"anatomical-sciences-education",label:"Anatomical Sciences Education"},{value:"ancilla-iuris",label:"Ancilla Iuris"},{value:"andean-geology",label:"Andean Geology"},{value:"anesthesia-and-analgesia",label:"Anesthesia and Analgesia"},{value:"anesthesiology",label:"Anesthesiology"},{value:"angewandte-chemie",label:"Angewandte Chemie International Edition"},{value:"angiologia",label:"Angiologia (Espa\xF1ol)"},{value:"anglia",label:"Anglia"},{value:"animal-conservation",label:"Animal Conservation"},{value:"animal-migration",label:"Animal Migration"},{value:"animal-welfare",label:"Animal Welfare"},{value:"animal",label:"animal"},{value:"annalen-des-naturhistorischen-museums-in-wien",label:"Annalen des Naturhistorischen Museums in Wien"},{value:"annales-de-demographie-historique",label:"Annales de d\xE9mographie historique"},{value:"annales",label:"Annales. Histoire, Sciences sociales (Fran\xE7ais)"},{value:"annals-of-applied-biology",label:"Annals of Applied Biology"},{value:"annals-of-behavioral-medicine",label:"Annals of Behavioral Medicine"},{value:"annals-of-biomedical-engineering",label:"Annals of Biomedical Engineering"},{value:"annals-of-botany",label:"Annals of Botany"},{value:"annals-of-eye-science",label:"Annals of Eye Science"},{value:"annals-of-joint",label:"Annals of Joint"},{value:"annals-of-laboratory-medicine",label:"Annals of Laboratory Medicine"},{value:"annals-of-neurology",label:"Annals of Neurology"},{value:"annals-of-oncology",label:"Annals of Oncology"},{value:"annals-of-public-and-cooperative-economics",label:"Annals of Public and Cooperative Economics"},{value:"annals-of-surgery",label:"Annals of Surgery"},{value:"annals-of-the-association-of-american-geographers",label:"Annals of the Association of American Geographers"},{value:"annals-of-the-new-york-academy-of-sciences",label:"Annals of the New York Academy of Sciences"},{value:"annals-of-work-exposures-and-health",label:"Annals of Work Exposures and Health"},{value:"annual-review-of-astronomy-and-astrophysics",label:"Annual Review of Astronomy and Astrophysics"},{value:"annual-review-of-linguistics",label:"Annual Review of Linguistics"},{value:"annual-review-of-medicine",label:"Annual Review of Medicine"},{value:"annual-review-of-nuclear-and-particle-science",label:"Annual Review of Nuclear and Particle Science"},{value:"annual-reviews-alphabetical",label:"Annual Reviews (sorted alphabetically)"},{value:"annual-reviews-author-date",label:"Annual Reviews (author-date)"},{value:"annual-reviews-without-titles",label:"Annual Reviews (sorted by order of appearance, without titles)"},{value:"annual-reviews",label:"Annual Reviews (sorted by order of appearance)"},{value:"antarctic-science",label:"Antarctic Science"},{value:"anthropologie-et-societes",label:"Anthropologie et Soci\xE9t\xE9s (Fran\xE7ais)"},{value:"anti-trafficking-review",label:"Anti-Trafficking Review"},{value:"anticancer-research",label:"Anticancer Research"},{value:"antipode",label:"Antipode"},{value:"antiquites-africaines",label:"Antiquit\xE9s africaines"},{value:"antiquity",label:"Antiquity"},{value:"apa-5th-edition",label:"American Psychological Association 5th edition"},{value:"apa-6th-edition-no-ampersand",label:"American Psychological Association 6th edition (no ampersand)"},{value:"apa-6th-edition",label:"American Psychological Association 6th edition"},{value:"apa-annotated-bibliography",label:"American Psychological Association 7th edition (annotated bibliography)"},{value:"apa-cv",label:"American Psychological Association 7th edition (curriculum vitae, sorted by descending date)"},{value:"apa-fr-provost",label:"American Psychological Association 6th edition (Provost) (Fran\xE7ais - Canada)"},{value:"apa-no-ampersand",label:"American Psychological Association 7th edition (no ampersand)"},{value:"apa-no-doi-no-issue",label:"American Psychological Association 6th edition (no DOIs, no issue numbers)"},{value:"apa-no-initials",label:"American Psychological Association 7th edition (no initials)"},{value:"apa-numeric-superscript-brackets",label:"American Psychological Association 7th edition (numeric, brackets)"},{value:"apa-numeric-superscript",label:"American Psychological Association 7th edition (numeric, superscript)"},{value:"apa-old-doi-prefix",label:'American Psychological Association 6th edition ("doi:" DOI prefix)'},{value:"apa-single-spaced",label:"American Psychological Association 7th edition (single-spaced bibliography)"},{value:"apa-tr",label:"American Psychological Association 6th edition (T\xFCrk\xE7e)"},{value:"apa-with-abstract",label:"American Psychological Association 7th edition (with abstract)"},{value:"apa",label:"American Psychological Association 7th edition"},{value:"aporia-the-nursing-journal",label:"Aporia: The Nursing Journal"},{value:"applied-clay-science",label:"Applied Clay Science"},{value:"applied-spectroscopy-reviews",label:"Applied Spectroscopy Reviews"},{value:"applied-spectroscopy",label:"Applied Spectroscopy"},{value:"aquatic-conservation",label:"Aquatic Conservation: Marine and Freshwater Ecosystems"},{value:"aquatic-invasions",label:"Aquatic Invasions"},{value:"aquatic-living-resources",label:"Aquatic Living Resources"},{value:"aquitania",label:"Aquitania (Fran\xE7ais)"},{value:"arachne",label:"Arachne"},{value:"arachnology",label:"Arachnology"},{value:"arbok-hins-islenzka-fornleifafelags",label:"\xC1rb\xF3k Hins \xEDslenzka fornleifaf\xE9lags (\xCDslenska)"},{value:"archaeologia-austriaca",label:"Archaeologia Austriaca"},{value:"archaeometry",label:"Archaeometry"},{value:"archaeonautica",label:"Archaeonautica"},{value:"archeologia-classica",label:"Archeologia Classica (Italiano)"},{value:"archeologicke-rozhledy",label:"Archeologick\xE9 rozhledy"},{value:"archeologie-medievale",label:"Arch\xE9ologie m\xE9di\xE9vale (Fran\xE7ais)"},{value:"archeologies-et-sciences-de-lantiquite",label:"Arch\xE9ologies et Sciences de l'Antiquit\xE9 (Fran\xE7ais)"},{value:"archeosciences",label:"ArcheoSciences (Fran\xE7ais)"},{value:"archiv-fur-die-civilistische-praxis",label:"Archiv f\xFCr die civilistische Praxis (Deutsch)"},{value:"archiv-fur-geschichte-der-philosophie",label:"Archiv f\xFCr Geschichte der Philosophie"},{value:"archives-of-hand-and-microsurgery",label:"Archives of Hand and Microsurgery"},{value:"archives-of-physical-medicine-and-rehabilitation",label:"Archives of Physical Medicine and Rehabilitation"},{value:"archivos-de-bronconeumologia",label:"Archivos de Bronconeumolog\xEDa"},{value:"archivos-de-la-sociedad-espanola-de-oftalmologia",label:"Archivos de la Sociedad Espa\xF1ola de Oftalmolog\xEDa (Espa\xF1ol)"},{value:"archivum-latinitatis-medii-aevi",label:"Archivum Latinitatis Medii Aevi (Fran\xE7ais)"},{value:"arctic-antarctic-and-alpine-research",label:"Arctic, Antarctic, and Alpine Research"},{value:"arctic",label:"Arctic"},{value:"arhiv-za-higijenu-rada-i-toksikologiju",label:"Arhiv za higijenu rada i toksikologiju (Archives of Industrial Hygiene and Toxicology)"},{value:"art-history",label:"Art History"},{value:"art-libraries-society-of-north-america-arlisna-reviews",label:"Art Libraries Society of North America: ARLIS/NA Reviews"},{value:"artery-research",label:"Artery Research"},{value:"arthritis-and-rheumatism",label:"Arthritis & Rheumatism"},{value:"arthropod-systematics-and-phylogeny",label:"Arthropod Systematics & Phylogeny"},{value:"arts-university-bournemouth",label:"Arts University Bournemouth"},{value:"arzneimitteltherapie",label:"Arzneimitteltherapie"},{value:"asa-cssa-sssa",label:"American Society of Agronomy, Crop Science Society of America, Soil Science Society of America"},{value:"asaio-journal",label:"ASAIO Journal (American Society for Artificial Internal Organs)"},{value:"asia-and-the-pacific-policy-studies",label:"Asia & the Pacific Policy Studies"},{value:"asia-pacific-journal-of-human-resources",label:"Asia Pacific Journal of Human Resources"},{value:"asian-journal-of-neurosurgery",label:"Asian Journal of Neurosurgery"},{value:"asian-myrmecology",label:"Asian Myrmecology"},{value:"asian-studies-review",label:"Asian Studies Review"},{value:"associacao-brasileira-de-normas-tecnicas-eceme",label:"Escola de Comando e Estado-Maior do Ex\xE9rcito - ABNT (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-instituto-meira-mattos",label:"Escola de Comando e Estado-Maior do Ex\xE9rcito - Instituto Meira Mattos - ABNT (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-ipea",label:"Instituto de Pesquisa Econ\xF4mica Aplicada - ABNT (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-note",label:"Associa\xE7\xE3o Brasileira de Normas T\xE9cnicas (note, Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-ufmg-face-full",label:"Universidade Federal de Minas Gerais - Faculdade de Ci\xEAncias Econ\xF4micas - ABNT (autoria completa) (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-ufmg-face-initials",label:"Universidade Federal de Minas Gerais - Faculdade de Ci\xEAncias Econ\xF4micas - ABNT (autoria abreviada) (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-ufpr",label:"Universidade Federal do Paran\xE1 - ABNT (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-ufrgs-initials",label:"Universidade Federal do Rio Grande do Sul - ABNT (autoria abreviada) (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-ufrgs-note-initials-with-ibid",label:"Universidade Federal do Rio Grande do Sul - ABNT (autoria abreviada, nota, com Ibid.) (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-ufrgs",label:"Universidade Federal do Rio Grande do Sul - ABNT (autoria completa) (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-ufs",label:"Universidade Federal de Sergipe - ABNT (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-unirio-eipp",label:"Universidade Federal do Estado do Rio de Janeiro - Educa\xE7\xE3o Infantil e Pol\xEDticas P\xFAblicas - ABNT (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-usp-fmvz",label:"Universidade de S\xE3o Paulo - Faculdade de Medicina Veterin\xE1ria e Zootecnia - ABNT (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas",label:"Associa\xE7\xE3o Brasileira de Normas T\xE9cnicas (Portugu\xEAs - Brasil)"},{value:"associacao-nacional-de-pesquisa-e-ensino-em-transportes",label:"ANPET - Congresso de Pesquisa e Ensino em Transportes (Portugu\xEAs - Brasil)"},{value:"association-de-science-regionale-de-langue-francaise",label:"Association de Science R\xE9gionale de Langue Fran\xE7aise (Fran\xE7ais)"},{value:"association-for-computational-linguistics",label:"Association for Computational Linguistics - Conference Proceedings"},{value:"association-for-computing-machinery",label:"Association for Computing Machinery"},{value:"atlande",label:"Atlande (author-date, Fran\xE7ais)"},{value:"atlas-of-genetics-and-cytogenetics-in-oncology-and-haematology",label:"Atlas of Genetics and Cytogenetics in Oncology and Haematology"},{value:"ausonius-editions",label:"Ausonius \xC9ditions (Fran\xE7ais)"},{value:"austral-ecology",label:"Austral Ecology"},{value:"austral-entomology",label:"Austral Entomology"},{value:"australian-archaeology",label:"Australian Archaeology"},{value:"australian-critical-care",label:"Australian Critical Care"},{value:"australian-dental-journal",label:"Australian Dental Journal"},{value:"australian-guide-to-legal-citation-3rd-edition",label:"Australian Guide to Legal Citation 3rd edition"},{value:"australian-guide-to-legal-citation",label:"Australian Guide to Legal Citation 4th edition"},{value:"australian-historical-studies",label:"Australian Historical Studies"},{value:"australian-journal-of-earth-sciences",label:"Australian Journal of Earth Sciences"},{value:"australian-journal-of-grape-and-wine-research",label:"Australian Journal of Grape and Wine Research"},{value:"australian-road-research-board",label:"Australian Road Research Board"},{value:"australian-veterinary-journal",label:"Australian Veterinary Journal"},{value:"austrian-journal-of-development-studies",label:"Austrian Journal of Development Studies (Journal f\xFCr Entwicklungspolitik)"},{value:"austrian-legal",label:"Austrian Legal (Deutsch - \xD6sterreich)"},{value:"avian-conservation-and-ecology",label:"Avian Conservation and Ecology"},{value:"avian-diseases",label:"Avian Diseases"},{value:"avian-pathology",label:"Avian Pathology"},{value:"ayer",label:"Ayer (Espa\xF1ol)"},{value:"azr-abkurzungs-und-zitierregeln-der-osterreichischen-rechtssprache-und-europarechtlicher-rechtsquellen",label:"AZR - Abk\xFCrzungs- und Zitierregeln der \xF6sterreichischen Rechtssprache und europarechtlicher Rechtsquellen (Deutsch - \xD6sterreich)"},{value:"babes-bolyai-university-faculty-of-orthodox-theology",label:"Babes-Bolyai University - Faculty of Orthodox Theology (no ibid., Rom\xE2n\u0103)"},{value:"babesch-annual-papers-on-mediterranean-archaeology",label:"BABESCH - Annual Papers on Mediterranean Archaeology"},{value:"baghdad-science-journal",label:"Baghdad Science Journal"},{value:"baishideng-publishing-group",label:"Baishideng Publishing Group"},{value:"bakhtiniana-journal-of-discourse-studies",label:"Bakhtiniana: Journal of Discourse Studies"},{value:"begell-house-apa",label:"Begell House - APA"},{value:"begell-house-chicago-author-date",label:"Begell House - Chicago Manual of Style"},{value:"behaviour",label:"Behaviour"},{value:"beilstein-journal-of-organic-chemistry",label:"Beilstein Journal of Organic Chemistry"},{value:"beltz-padagogik",label:"Beltz - P\xE4dagogik (Deutsch)"},{value:"berghahn-books-author-date-en-gb",label:"Berghahn Books (author-date, English - UK)"},{value:"berlin-school-of-economics-and-law-international-marketing-management",label:"Berlin School of Economics and Law - International Marketing Management"},{value:"bern-university-of-applied-sciences-school-of-agricultural-forest-and-food-sciences-hafl",label:"Bern University of Applied Sciences - School of Agricultural, Forest and Food Sciences HAFL (author-date)"},{value:"betriebswirtschaftliche-forschung-und-praxis",label:"Betriebswirtschaftliche Forschung und Praxis (Deutsch)"},{value:"biblio-3w",label:"Biblio 3W (Espa\xF1ol)"},{value:"bibliothecae-it",label:"Bibliothecae.it (Italiano)"},{value:"bibliotheque-d-archeologie-mediterraneenne-et-africaine-biama",label:"Biblioth\xE8que d'arch\xE9ologie m\xE9diterran\xE9enne et africaine (BiAMA) (Fran\xE7ais)"},{value:"bibliotheque-universitaire-de-medecine-vancouver",label:"Biblioth\xE8que universitaire de m\xE9decine - Vancouver (Fran\xE7ais)"},{value:"bibtex",label:"BibTeX generic citation style"},{value:"biens-symboliques-symbolic-goods",label:"Biens symboliques / Symbolic Goods"},{value:"bioarchaeology-international",label:"Bioarchaeology International"},{value:"bioarchaeology-of-the-near-east",label:"Bioarchaeology of the Near East"},{value:"biochemical-journal",label:"Biochemical Journal"},{value:"biochemical-society-transactions",label:"Biochemical Society Transactions"},{value:"biochemistry-and-molecular-biology-education",label:"Biochemistry and Molecular Biology Education"},{value:"biochemistry",label:"Biochemistry"},{value:"biochimica-et-biophysica-acta",label:"Biochimica et Biophysica Acta"},{value:"bioelectromagnetics",label:"Bioelectromagnetics"},{value:"bioinformatics",label:"Bioinformatics"},{value:"biologia",label:"Biologia"},{value:"biological-and-pharmaceutical-bulletin",label:"Biological and Pharmaceutical Bulletin"},{value:"biological-journal-of-the-linnean-society",label:"Biological Journal of the Linnean Society"},{value:"biological-psychiatry",label:"Biological Psychiatry"},{value:"biological-reviews",label:"Biological Reviews"},{value:"biology-of-reproduction",label:"Biology of Reproduction"},{value:"biomarkers",label:"Biomarkers"},{value:"biomed-central",label:"BioMed Central"},{value:"biomed-research-international",label:"BioMed Research International"},{value:"biometrics",label:"Biometrics"},{value:"biophysical-journal",label:"Biophysical Journal"},{value:"biophysics-and-physicobiology",label:"Biophysics and Physicobiology"},{value:"biopolymers",label:"Biopolymers"},{value:"bioresources",label:"BioResources"},{value:"bioscience",label:"BioScience"},{value:"biosocieties",label:"BioSocieties"},{value:"biostatistics",label:"Biostatistics"},{value:"biota-neotropica",label:"Biota Neotropica"},{value:"biotechniques",label:"BioTechniques"},{value:"biotechnology-and-bioengineering",label:"Biotechnology and Bioengineering"},{value:"biotropica",label:"Biotropica"},{value:"bitonline",label:"b.i.t.online (note, Deutsch)"},{value:"biuletyn-polskiego-towarzystwa-jezykoznawczego",label:"Biuletyn Polskiego Towarzystwa J\u0119zykoznawczego (Polski)"},{value:"blood",label:"Blood"},{value:"bloomsbury-academic",label:"Bloomsbury Academic"},{value:"bluebook-inline",label:"Bluebook Inline"},{value:"bluebook-law-review",label:"Bluebook Law Review"},{value:"bluebook2",label:"Bluebook Law Review (2)"},{value:"bmj",label:"BMJ"},{value:"body-and-society",label:"Body & Society"},{value:"boletin-de-la-sociedad-geologica-mexicana",label:"Bolet\xEDn de la Sociedad Geol\xF3gica Mexicana (Espa\xF1ol - Mexico)"},{value:"boletin-de-pediatria",label:"Bolet\xEDn de Pediatr\xEDa (Espa\xF1ol)"},{value:"bollettino-d-archeologia-online",label:"Bollettino d'archeologia online (Italiano)"},{value:"boreal-environment-research",label:"Boreal Environment Research"},{value:"bourgogne-franche-comte-nature",label:"Bourgogne-Franche-Comt\xE9 Nature (Fran\xE7ais)"},{value:"brachytherapy",label:"Brachytherapy"},{value:"brain-behavior-and-evolution",label:"Brain, Behavior and Evolution"},{value:"brazilian-journal-of-experimental-design-data-analysis-and-inferential-statistics",label:"Brazilian Journal of Experimental Design, Data Analysis and Inferential Statistics"},{value:"brazilian-journal-of-infectious-diseases",label:"Brazilian Journal of Infectious Diseases"},{value:"brazilian-journal-of-psychiatry",label:"Brazilian Journal of Psychiatry"},{value:"brazilian-journal-of-veterinary-research-and-animal-science",label:"Brazilian Journal of Veterinary Research and Animal Science"},{value:"brazilian-oral-research",label:"Brazilian Oral Research"},{value:"brewingscience",label:"BrewingScience"},{value:"briefings-in-bioinformatics",label:"Briefings in Bioinformatics"},{value:"british-journal-of-anaesthesia",label:"British Journal of Anaesthesia"},{value:"british-journal-of-cancer",label:"British Journal of Cancer"},{value:"british-journal-of-dermatology",label:"British Journal of Dermatology"},{value:"british-journal-of-haematology",label:"British Journal of Haematology"},{value:"british-journal-of-industrial-relations",label:"British Journal of Industrial Relations"},{value:"british-journal-of-pharmacology",label:"British Journal of Pharmacology"},{value:"british-journal-of-political-science",label:"British Journal of Political Science"},{value:"british-journal-of-surgery",label:"British Journal of Surgery"},{value:"budownictwo-i-architektura-pl",label:"Budownictwo i Architektura"},{value:"building-structure",label:"Building Structure (\u4E2D\u6587)"},{value:"buletin-agrohorti",label:"Buletin Agrohorti"},{value:"bulletin-de-correspondance-hellenique",label:"Bulletin de correspondance hell\xE9nique"},{value:"bulletin-de-la-societe-entomologique-de-france",label:"Bulletin de la Soci\xE9t\xE9 Entomologique de France"},{value:"bulletin-de-la-societe-prehistorique-francaise",label:"Bulletin de la Soci\xE9t\xE9 pr\xE9historique fran\xE7aise (Fran\xE7ais)"},{value:"bulletin-du-centre-detudes-medievales-dauxerre",label:"Bulletin du Centre d\u2019\xE9tudes m\xE9di\xE9vales d\u2019Auxerre (Fran\xE7ais)"},{value:"bulletin-of-geosciences",label:"Bulletin of Geosciences"},{value:"bulletin-of-marine-science",label:"Bulletin of Marine Science"},{value:"bulletin-of-the-american-schools-of-oriental-research",label:"Bulletin of the American Schools of Oriental Research"},{value:"bulletin-of-the-seismological-society-of-america",label:"Bulletin of the Seismological Society of America"},{value:"bursa-uludag-universitesi-egitim-bilimleri-enstitusu",label:"Bursa Uluda\u011F \xDCniversitesi - E\u011Fitim Bilimleri Enstit\xFCs\xFC"},{value:"bursa-uludag-universitesi-fen-bilimleri-enstitusu",label:"Bursa Uludag \xDCniversitesi Fen Bilimleri Enstit\xFCs\xFC"},{value:"bursa-uludag-universitesi-saglik-bilimleri-enstitusu",label:"Bursa Uluda\u011F \xDCniversitesi - Sa\u011Fl\u0131k Bilimleri Enstit\xFCs\xFC"},{value:"bursa-uludag-universitesi-sosyal-bilimler-enstitusu-metinici-atif",label:"Bursa Uluda\u011F \xDCniversitesi - Sosyal Bilimler Enstit\xFCs\xFC (metinici atif)"},{value:"bursa-uludag-universitesi-sosyal-bilimler-enstitusu",label:"Bursa Uluda\u011F \xDCniversitesi - Sosyal Bilimler Enstit\xFCs\xFC"},{value:"business-ethics-a-european-review",label:"Business Ethics: A European Review"},{value:"byzantina-symmeikta",label:"BYZANTINA SYMMEIKTA"},{value:"byzantine-and-modern-greek-studies",label:"Byzantine and Modern Greek Studies"},{value:"cahiers-d-ethnomusicologie",label:"Cahiers d'ethnomusicologie (Fran\xE7ais)"},{value:"cahiers-du-centre-gustave-glotz",label:"Cahiers du Centre Gustave-Glotz (Fran\xE7ais)"},{value:"california-agriculture",label:"California Agriculture"},{value:"cambridge-journal-of-economics",label:"Cambridge Journal of Economics"},{value:"cambridge-university-press-author-date",label:"Cambridge University Press (author-date)"},{value:"cambridge-university-press-law-note",label:"Cambridge University Press - Law (note)"},{value:"cambridge-university-press-note",label:"Cambridge University Press (note)"},{value:"cambridge-university-press-numeric",label:"Cambridge University Press (numeric)"},{value:"campus-adventiste-du-saleve-faculte-adventiste-de-theologie",label:"Campus adventiste du Sal\xE8ve - Facult\xE9 adventiste de th\xE9ologie (Fran\xE7ais)"},{value:"canadian-biosystems-engineering",label:"Canadian Biosystems Engineering"},{value:"canadian-geotechnical-journal",label:"Canadian Geotechnical Journal"},{value:"canadian-journal-of-chemistry",label:"Canadian Journal of Chemistry"},{value:"canadian-journal-of-dietetic-practice-and-research",label:"Canadian Journal of Dietetic Practice and Research"},{value:"canadian-journal-of-earth-sciences",label:"Canadian Journal of Earth Sciences"},{value:"canadian-journal-of-economics",label:"Canadian Journal of Economics"},{value:"canadian-journal-of-fisheries-and-aquatic-sciences",label:"Canadian Journal of Fisheries and Aquatic Sciences"},{value:"canadian-journal-of-physics",label:"Canadian Journal of Physics"},{value:"canadian-journal-of-public-health",label:"Canadian Journal of Public Health"},{value:"canadian-journal-of-soil-science",label:"Canadian Journal of Soil Science"},{value:"canadian-public-policy",label:"Canadian Public Policy"},{value:"cancer-biomarkers",label:"Cancer Biomarkers"},{value:"cancer-drug-resistance",label:"Cancer Drug Resistance"},{value:"cancer-translational-medicine",label:"Cancer Translational Medicine"},{value:"carcinogenesis",label:"Carcinogenesis"},{value:"cardiff-university-harvard",label:"Cardiff University - Harvard"},{value:"cardiff-university-vancouver",label:"Cardiff University - Vancouver"},{value:"cardiocore",label:"Cardiocore (Espa\xF1ol)"},{value:"cath-lab-digest",label:"Cath Lab Digest"},{value:"catholic-biblical-association",label:"Catholic Biblical Association (full note)"},{value:"cell-numeric-superscript",label:"Cell journals (numeric, superscript)"},{value:"cell-numeric",label:"Cell journals (numeric)"},{value:"cell-research",label:"Cell Research"},{value:"cell-structure-and-function",label:"Cell Structure and Function"},{value:"cell-transplantation",label:"Cell Transplantation"},{value:"cell",label:"Cell"},{value:"cellular-and-molecular-bioengineering",label:"Cellular and Molecular Bioengineering"},{value:"cellular-and-molecular-gastroenterology-and-hepatology",label:"Cellular and Molecular Gastroenterology and Hepatology"},{value:"centaurus",label:"Centaurus"},{value:"centre-de-recherche-sur-les-civilisations-de-l-asie-orientale-auteur-date",label:"Centre de recherche sur les civilisations de l\u2019Asie orientale (Fran\xE7ais - Auteur, Date)"},{value:"centre-de-recherche-sur-les-civilisations-de-l-asie-orientale",label:"Centre de recherche sur les civilisations de l'Asie orientale (Fran\xE7ais - note)"},{value:"cerebral-cortex",label:"Cerebral Cortex"},{value:"ceska-zemedelska-univerzita-v-praze-fakulta-agrobiologie-potravinovych-a-prirodnich-zdroju",label:"\u010Cesk\xE1 zem\u011Bd\u011Blsk\xE1 univerzita v Praze - Fakulta agrobiologie, potravinov\xFDch a p\u0159\xEDrodn\xEDch zdroj\u016F"},{value:"changer-d-epoque",label:"Changer d'\xE9poque (Fran\xE7ais)"},{value:"chemical-and-pharmaceutical-bulletin",label:"Chemical and Pharmaceutical Bulletin"},{value:"chemical-biology-and-drug-design",label:"Chemical Biology & Drug Design"},{value:"chemical-engineering-progress",label:"Chemical Engineering Progress"},{value:"chemical-senses",label:"Chemical Senses"},{value:"chemie-ingenieur-technik",label:"Chemie Ingenieur Technik"},{value:"chemistry-education-research-and-practice",label:"Chemistry Education Research and Practice"},{value:"chest",label:"Chest"},{value:"chicago-annotated-bibliography",label:"Chicago Manual of Style 17th edition (note, annotated bibliography)"},{value:"chicago-author-date-16th-edition",label:"Chicago Manual of Style 16th edition (author-date)"},{value:"chicago-author-date-basque",label:"Chicago Manual of Style 16th edition (author-date, Euskara)"},{value:"chicago-author-date-de",label:"Chicago Manual of Style 16th edition (author-date, Deutsch)"},{value:"chicago-author-date-fr",label:"Chicago Manual of Style 17th edition (author-date, Fran\xE7ais)"},{value:"chicago-author-date",label:"Chicago Manual of Style 17th edition (author-date)"},{value:"chicago-figures",label:"Chicago Manual of Style 16th edition (figures and illustrations)"},{value:"chicago-fullnote-bibliography-16th-edition",label:"Chicago Manual of Style 16th edition (full note)"},{value:"chicago-fullnote-bibliography-fr",label:"Chicago Manual of Style 17th edition (full note, Fran\xE7ais)"},{value:"chicago-fullnote-bibliography-short-title-subsequent",label:"Chicago Manual of Style 17th edition (full note, short title subsequent)"},{value:"chicago-fullnote-bibliography-with-ibid",label:"Chicago Manual of Style 17th edition (full note, with Ibid.)"},{value:"chicago-fullnote-bibliography",label:"Chicago Manual of Style 17th edition (full note)"},{value:"chicago-library-list",label:"Chicago Manual of Style 17th edition (library list)"},{value:"chicago-note-bibliography-16th-edition",label:"Chicago Manual of Style 16th edition (note)"},{value:"chicago-note-bibliography-with-ibid",label:"Chicago Manual of Style 17th edition (note, with Ibid.)"},{value:"chicago-note-bibliography",label:"Chicago Manual of Style 17th edition (note)"},{value:"chimia",label:"CHIMIA"},{value:"china-information",label:"China Information"},{value:"china-national-standard-gb-t-7714-2015-author-date",label:"China National Standard GB/T 7714-2015 (author-date, \u4E2D\u6587)"},{value:"china-national-standard-gb-t-7714-2015-note",label:"China National Standard GB/T 7714-2015 (note, \u4E2D\u6587)"},{value:"china-national-standard-gb-t-7714-2015-numeric",label:"China National Standard GB/T 7714-2015 (numeric, \u4E2D\u6587)"},{value:"chinese-gb7714-1987-numeric",label:"China National Standard GB/T 7714-1987 (numeric, \u4E2D\u6587)"},{value:"chinese-gb7714-2005-author-date",label:"China National Standard GB/T 7714-2005 (author-date, \u4E2D\u6587)"},{value:"chinese-gb7714-2005-numeric",label:"China National Standard GB/T 7714-2005 (numeric, \u4E2D\u6587)"},{value:"chinese-journal-of-aeronautics",label:"Chinese Journal of Aeronautics"},{value:"chinese-medical-journal",label:"Chinese Medical Journal"},{value:"chroniques-des-activites-archeologiques-de-l-ecole-francaise-de-rome",label:"Chroniques des activit\xE9s arch\xE9ologiques de l'Ecole fran\xE7aise de Rome"},{value:"chungara-revista-de-antropologia-chilena",label:"Chungara Revista de Antropolog\xEDa Chilena (Espa\xF1ol - Chile)"},{value:"circulation-journal",label:"Circulation Journal"},{value:"circulation",label:"Circulation"},{value:"cirugia-cardiovascular",label:"Cirugia Cardiovascular (Espa\xF1ol)"},{value:"citation-compass-apa-note",label:"Citation Compass (Kildekompasset) - APA (note)"},{value:"citizen-science-theory-and-practice",label:"Citizen Science: Theory and Practice"},{value:"civilta-italiana",label:"Civilt\xE0 Italiana (Italiano)"},{value:"civitas-revista-de-ciencias-sociais",label:"Civitas: Revista de Ci\xEAncias Sociais"},{value:"cladistics",label:"Cladistics"},{value:"clara-architecture-recherche",label:"CLARA Architecture/Recherche (Fran\xE7ais)"},{value:"clay-minerals",label:"Clay Minerals"},{value:"clays-and-clay-minerals",label:"Clays and Clay Minerals"},{value:"climate-change-economics",label:"Climate Change Economics"},{value:"clinica-e-investigacion-en-arteriosclerosis",label:"Cl\xEDnica e Investigaci\xF3n en Arteriosclerosis (Espa\xF1ol)"},{value:"clinical-anatomy",label:"Clinical Anatomy"},{value:"clinical-dysmorphology",label:"Clinical Dysmorphology"},{value:"clinical-gastroenterology-and-hepatology",label:"Clinical Gastroenterology and Hepatology"},{value:"clinical-hemorheology-and-microcirculation",label:"Clinical Hemorheology and Microcirculation"},{value:"clinical-infectious-diseases",label:"Clinical Infectious Diseases"},{value:"clinical-journal-of-sport-medicine",label:"Clinical Journal of Sport Medicine"},{value:"clinical-journal-of-the-american-society-of-nephrology",label:"Clinical Journal of the American Society of Nephrology"},{value:"clinical-management-issues",label:"Clinical Management Issues"},{value:"clinical-nuclear-medicine",label:"Clinical Nuclear Medicine"},{value:"clinical-oral-implants-research",label:"Clinical Oral Implants Research"},{value:"clinical-orthopaedics-and-related-research",label:"Clinical Orthopaedics and Related Research"},{value:"clinical-otolaryngology",label:"Clinical Otolaryngology"},{value:"clinical-pharmacology-and-therapeutics",label:"Clinical Pharmacology & Therapeutics"},{value:"clinical-physiology-and-functional-imaging",label:"Clinical Physiology and Functional Imaging"},{value:"clinical-radiology",label:"Clinical Radiology"},{value:"clinical-spine-surgery",label:"Clinical Spine Surgery"},{value:"clio-medica",label:"Clio Medica"},{value:"cns-and-neurological-disorders-drug-targets",label:"CNS & Neurological Disorders - Drug Targets"},{value:"cns-spectrums",label:"CNS Spectrums"},{value:"cold-spring-harbor-laboratory-press",label:"Cold Spring Harbor Laboratory Press"},{value:"collection-de-l-ecole-francaise-de-rome-full-note",label:"Collection de l'Ecole fran\xE7aise de Rome (full note, Fran\xE7ais)"},{value:"collection-de-l-ecole-francaise-de-rome-note",label:"Collection de l'Ecole fran\xE7aise de Rome (note, Fran\xE7ais)"},{value:"collection-du-centre-jean-berard",label:"Collection du Centre Jean-B\xE9rard (Fran\xE7ais)"},{value:"collections-electroniques-de-l-inha-author-date",label:"Collections \xE9lectroniques de l'INHA (author-date, Fran\xE7ais)"},{value:"collections-electroniques-de-l-inha-full-note",label:"Collections \xE9lectroniques de l'INHA (full note, Fran\xE7ais)"},{value:"college-montmorency",label:"Coll\xE8ge Montmorency (note, Fran\xE7ais - Canada)"},{value:"college-of-naturopathic-medicine",label:"College of Naturopathic Medicine"},{value:"colombian-journal-of-anesthesiology",label:"Colombian Journal of Anesthesiology"},{value:"colorado-state-university-school-of-biomedical-engineering",label:"Colorado State University - School of Biomedical Engineering"},{value:"comision-economica-para-america-latina-y-el-caribe",label:"Comisi\xF3n Econ\xF3mica para Am\xE9rica Latina y el Caribe (Espa\xF1ol)"},{value:"common-market-law-review",label:"Common Market Law Review"},{value:"communication-et-langages",label:"Communication et Langages"},{value:"comparativ",label:"Comparativ"},{value:"comparative-politics",label:"Comparative Politics"},{value:"comparative-population-studies",label:"Comparative Population Studies"},{value:"computer-und-recht",label:"Computer und Recht (Deutsch)"},{value:"conservation-and-society",label:"Conservation & Society"},{value:"conservation-biology",label:"Conservation Biology"},{value:"conservation-letters",label:"Conservation Letters"},{value:"conservation-physiology",label:"Conservation Physiology"},{value:"contemporary-accounting-research",label:"Contemporary Accounting Research"},{value:"continuity-and-change",label:"Continuity and Change"},{value:"contributions-to-the-archaeology-of-egypt-nubia-and-the-levant",label:"Contributions to the Archaeology of Egypt, Nubia and the Levant"},{value:"copeia",label:"Copeia"},{value:"copernicus-publications",label:"Copernicus Publications"},{value:"coral-reefs",label:"Coral Reefs"},{value:"cornea",label:"Cornea"},{value:"corrosion",label:"Corrosion"},{value:"council-of-science-editors-alphabetical",label:"Council of Science Editors, Citation-Name (numeric, sorted alphabetically)"},{value:"council-of-science-editors-author-date",label:"Council of Science Editors, Name-Year (author-date)"},{value:"council-of-science-editors-brackets",label:"Council of Science Editors, Citation-Sequence (numeric, brackets)"},{value:"council-of-science-editors",label:"Council of Science Editors, Citation-Sequence (numeric)"},{value:"cranfield-university-numeric",label:"Cranfield University (numeric)"},{value:"creativity-and-innovation-management",label:"Creativity and Innovation Management"},{value:"critical-care-medicine",label:"Critical Care Medicine"},{value:"critical-reviews-in-plant-sciences",label:"Critical Reviews in Plant Sciences"},{value:"critical-reviews-in-solid-state-and-materials-sciences",label:"Critical Reviews in Solid State and Materials Sciences"},{value:"crop-breeding-and-applied-biotechnology",label:"Crop Breeding and Applied Biotechnology"},{value:"crustaceana",label:"Crustaceana"},{value:"cuadernos-de-filologia-clasica",label:"Cuadernos de Filolog\xEDa Cl\xE1sica. Estudios Griegos e Indoeuropeos (autor-a\xF1o, Espa\xF1ol)"},{value:"cultivos-tropicales",label:"Cultivos Tropicales (Espa\xF1ol)"},{value:"cultural-geographies",label:"cultural geographies"},{value:"cultural-studies-of-science-education",label:"Cultural Studies of Science Education"},{value:"culture-medicine-and-psychiatry",label:"Culture, Medicine, and Psychiatry"},{value:"cureus",label:"Cureus"},{value:"current-alzheimer-research",label:"Current Alzheimer Research"},{value:"current-gene-therapy",label:"Current Gene Therapy"},{value:"current-neurology-aktualnosci-neurologiczne",label:"Current Neurology - Aktualno\u015Bci Neurologiczne"},{value:"current-opinion-in-endocrinology-diabetes-and-obesity",label:"Current Opinion in Endocrinology, Diabetes and Obesity"},{value:"current-opinion",label:"Current Opinion journals"},{value:"current-pharmaceutical-design",label:"Current Pharmaceutical Design"},{value:"current-proteomics",label:"Current Proteomics"},{value:"current-protocols",label:"Current Protocols journals"},{value:"current-science",label:"Current Science"},{value:"current-topics-in-medicinal-chemistry",label:"Current Topics in Medicinal Chemistry"},{value:"currents-in-biblical-research",label:"Currents in Biblical Research"},{value:"cybium",label:"Cybium"},{value:"cytometry",label:"Cytometry"},{value:"data-science-journal",label:"Data Science Journal"},{value:"database",label:"Database"},{value:"de-buck",label:"De Buck (Nederlands)"},{value:"de-montfort-university-harvard",label:"De Montfort University - Harvard"},{value:"decision-sciences",label:"Decision Sciences"},{value:"demographic-research",label:"Demographic Research"},{value:"der-moderne-staat",label:"der moderne staat (Deutsch)"},{value:"dermatology-online-journal",label:"Dermatology Online Journal"},{value:"deutsche-gesellschaft-fur-psychologie",label:"Deutsche Gesellschaft f\xFCr Psychologie 5. Auflage (Deutsch)"},{value:"deutsche-sprache",label:"Deutsche Sprache (Deutsch)"},{value:"deutsches-archaologisches-institut",label:"Deutsches Arch\xE4ologisches Institut"},{value:"deutsches-arzteblatt",label:"Deutsches \xC4rzteblatt"},{value:"developing-world-bioethics",label:"Developing World Bioethics"},{value:"development-and-change",label:"Development and Change"},{value:"development-policy-review",label:"Development Policy Review"},{value:"developmental-medicine-and-child-neurology",label:"Developmental Medicine & Child Neurology"},{value:"developmental-neurobiology",label:"Developmental Neurobiology"},{value:"diabetologia",label:"Diabetologia"},{value:"diagnostico-prenatal",label:"Diagn\xF3stico Prenatal (Espa\xF1ol)"},{value:"dialisis-y-trasplante",label:"Dialisis y Trasplante (Espa\xF1ol)"},{value:"diatom-research",label:"Diatom Research"},{value:"die-bachelorarbeit-samac-et-al-in-text",label:"Die Bachelorarbeit (Samac et al.) (in-text, Deutsch)"},{value:"die-bachelorarbeit-samac-et-al-note",label:"Die Bachelorarbeit (Samac et al.) (note, Deutsch)"},{value:"digital-humanities-im-deutschsprachigen-raum",label:"Digital Humanities im deutschsprachigen Raum (Deutsch)"},{value:"digital-scholarship-in-the-humanities",label:"Digital Scholarship in the Humanities"},{value:"din-1505-2-alphanumeric",label:"DIN 1505-2 (alphanumeric, Deutsch) - standard superseded by ISO-690"},{value:"din-1505-2-numeric-alphabetical",label:"DIN 1505-2 (numeric, sorted alphabetically, Deutsch) - standard superseded by ISO-690"},{value:"din-1505-2-numeric",label:"DIN 1505-2 (numeric, Deutsch) - standard superseded by ISO-690"},{value:"din-1505-2",label:"DIN 1505-2 (author-date, Deutsch) - standard superseded by ISO-690"},{value:"diplo",label:"Diplo"},{value:"disability-and-rehabilitation",label:"Disability and Rehabilitation"},{value:"discovery-medicine",label:"Discovery Medicine"},{value:"dna-research",label:"DNA Research"},{value:"documents-d-archeologie-francaise",label:"Documents d'arch\xE9ologie fran\xE7aise (Fran\xE7ais)"},{value:"donau-universitat-krems-department-fur-e-governance-in-wirthschaft-und-verwaltung",label:"Donau-Universit\xE4t Krems - Department f\xFCr E-Governance in Wirtschaft und Verwaltung (Deutsch - \xD6sterreich)"},{value:"drug-development-research",label:"Drug Development Research"},{value:"drug-testing-and-analysis",label:"Drug Testing and Analysis"},{value:"drugs-of-today",label:"Drugs of Today"},{value:"durban-university-of-technology-harvard",label:"Durban University of Technology - Harvard"},{value:"e3s-web-of-conferences",label:"E3S Web of Conferences"},{value:"ear-and-hearing",label:"Ear and Hearing"},{value:"early-christianity",label:"Early Christianity"},{value:"early-medieval-europe",label:"Early Medieval Europe"},{value:"early-music-history",label:"Early Music History"},{value:"earth-surface-processes-and-landforms",label:"Earth Surface Processes and Landforms"},{value:"earthquake-engineering-and-structural-dynamics",label:"Earthquake Engineering & Structural Dynamics"},{value:"earthquake-spectra",label:"Earthquake Spectra"},{value:"ecclesial-practices",label:"Ecclesial Practices"},{value:"ecole-de-technologie-superieure-apa",label:"\xC9cole de technologie sup\xE9rieure - APA (Fran\xE7ais - Canada)"},{value:"ecole-pratique-des-hautes-etudes-sciences-historiques-et-philologiques",label:"\xC9cole Pratique des Hautes \xC9tudes - Sciences historiques et philologiques (Fran\xE7ais)"},{value:"ecological-entomology",label:"Ecological Entomology"},{value:"ecological-restoration",label:"Ecological Restoration"},{value:"ecology-and-society",label:"Ecology and Society"},{value:"ecology-letters",label:"Ecology Letters"},{value:"ecology-of-freshwater-fish",label:"Ecology of Freshwater Fish"},{value:"ecology",label:"Ecology"},{value:"econometrica",label:"Econometrica"},{value:"economia-y-politica",label:"Econom\xEDa y Pol\xEDtica (Espa\xF1ol - Chile)"},{value:"economic-commission-for-latin-america-and-the-caribbean",label:"Economic Commission for Latin America and the Caribbean"},{value:"economic-geology",label:"Economic Geology"},{value:"economie-et-statistique",label:"\xC9conomie et Statistique (Fran\xE7ais)"},{value:"ecoscience",label:"\xC9coscience"},{value:"ecosistemas",label:"Ecosistemas (Espa\xF1ol)"},{value:"ecosystems",label:"Ecosystems"},{value:"edward-elgar-business-and-social-sciences",label:"Edward Elgar Publishing - Business and Social Sciences"},{value:"effective-altruism-wiki",label:"Effective Altruism Wiki"},{value:"egretta",label:"Egretta (Deutsch - \xD6sterreich)"},{value:"einaudi",label:"Einaudi (Italiano)"},{value:"eksploatacja-i-niezawodnosc",label:"Eksploatacja i Niezawodnosc - Maintenance and Reliability"},{value:"el-profesional-de-la-informacion",label:"Profesional de la informaci\xF3n (Espa\xF1ol)"},{value:"electrophoresis",label:"Electrophoresis"},{value:"elementa",label:"Elementa"},{value:"elife",label:"eLife"},{value:"elsevier-harvard-without-titles",label:"Elsevier - Harvard (without titles)"},{value:"elsevier-harvard",label:"Elsevier - Harvard (with titles)"},{value:"elsevier-harvard2",label:"Elsevier - Harvard 2"},{value:"elsevier-vancouver-author-date",label:"Elsevier - Vancouver (author-date)"},{value:"elsevier-vancouver",label:"Elsevier - Vancouver"},{value:"elsevier-with-titles-alphabetical",label:"Elsevier (numeric, with titles, sorted alphabetically)"},{value:"elsevier-with-titles",label:"Elsevier (numeric, with titles)"},{value:"elsevier-without-titles",label:"Elsevier (numeric, without titles)"},{value:"embnet-journal",label:"EMBnet.journal"},{value:"embo-press",label:"EMBO Press"},{value:"emerald-harvard",label:"Emerald - Harvard"},{value:"emu-austral-ornithology",label:"Emu - Austral Ornithology"},{value:"endocrine-connections",label:"Endocrine Connections"},{value:"endocrine-press",label:"Endocrine Press"},{value:"endoscopia",label:"Endoscopia (Espa\xF1ol)"},{value:"eneuro",label:"eNeuro"},{value:"enfermeria-clinica",label:"Enfermer\xEDa Cl\xEDnica (Espa\xF1ol)"},{value:"enfermeria-intensiva",label:"Enfermer\xEDa Intensiva (Espa\xF1ol)"},{value:"engineered-regeneration",label:"Engineered Regeneration"},{value:"engineering-in-life-sciences",label:"Engineering in Life Sciences"},{value:"engineering-technology-and-applied-science-research",label:"Engineering, Technology & Applied Science Research"},{value:"ens-de-lyon-centre-d-ingenierie-documentaire",label:"ENS de Lyon - Centre d'ing\xE9nierie documentaire (Fran\xE7ais)"},{value:"entecho",label:"ENTECHO (\u010Ce\u0161tina)"},{value:"entomologia-experimentalis-et-applicata",label:"Entomologia Experimentalis et Applicata"},{value:"entomological-society-of-america",label:"Entomological Society of America"},{value:"environment-and-planning",label:"Environment and Planning"},{value:"environment-and-urbanization",label:"Environment and Urbanization"},{value:"environmental-and-engineering-geoscience",label:"Environmental & Engineering Geoscience"},{value:"environmental-chemistry",label:"Environmental Chemistry"},{value:"environmental-conservation",label:"Environmental Conservation"},{value:"environmental-health-perspectives",label:"Environmental Health Perspectives"},{value:"environmental-microbiology",label:"Environmental Microbiology"},{value:"environmental-values",label:"Environmental Values"},{value:"environnement-risques-et-sante",label:"Environnement, Risques & Sant\xE9"},{value:"ephemerides-theologicae-lovanienses",label:"Ephemerides Theologicae Lovanienses"},{value:"epidemiologie-et-sante-animale",label:"\xC9pid\xE9miologie et Sant\xE9 Animale"},{value:"epidemiology-and-infection",label:"Epidemiology & Infection"},{value:"epilepsia",label:"Epilepsia"},{value:"equine-veterinary-education",label:"Equine Veterinary Education"},{value:"equine-veterinary-journal",label:"Equine Veterinary Journal"},{value:"ergo",label:"Ergo"},{value:"ergoscience",label:"ergoscience"},{value:"errata",label:"Errata: Publica\xE7\xE3o sobre processos editoriais (Portugu\xEAs - Brasil)"},{value:"escuela-nacional-de-antropologia-e-historia-author-date",label:"Escuela Nacional de Antropolog\xEDa e Historia (autor-fecha, Espa\xF1ol - M\xE9xico)"},{value:"escuela-nacional-de-antropologia-e-historia-full-note",label:"Escuela Nacional de Antropolog\xEDa e Historia (nota completa, Espa\xF1ol - M\xE9xico)"},{value:"escuela-nacional-de-antropologia-e-historia-short-note",label:"Escuela Nacional de Antropolog\xEDa e Historia (nota corta, Espa\xF1ol - M\xE9xico)"},{value:"estuaries-and-coasts",label:"Estuaries and Coasts"},{value:"estudios-de-cultura-maya",label:"Estudios de Cultura Maya (Espa\xF1ol - M\xE9xico)"},{value:"estudios-de-fonetica-experimental",label:"Estudios de Fon\xE9tica Experimental"},{value:"estudios-hispanicos",label:"Estudios Hisp\xE1nicos (Espa\xF1ol)"},{value:"ethics-book-reviews",label:"Ethics (for book reviews)"},{value:"ethnobiology-and-conservation",label:"Ethnobiology and Conservation"},{value:"ethnobiology-letters",label:"Ethnobiology Letters"},{value:"ethnographiques-org",label:"ethnographiques.org (Fran\xE7ais)"},{value:"ethnologie-francaise",label:"Ethnologie fran\xE7aise (Fran\xE7ais)"},{value:"ethnomusicology",label:"Ethnomusicology"},{value:"etri-journal",label:"ETRI Journal"},{value:"ets-ecole-de-technologie-superieure",label:"\xC9TS - \xC9cole de technologie sup\xE9rieure (Fran\xE7ais - Canada)"},{value:"eurasian-journal-of-medical-investigation",label:"Eurasian Journal of Medical Investigation"},{value:"eurasian-journal-of-medicine-and-oncology",label:"Eurasian Journal of Medicine and Oncology"},{value:"eurointervention",label:"EuroIntervention"},{value:"europace",label:"Europace"},{value:"european-cells-and-materials",label:"European Cells & Materials"},{value:"european-journal-for-philosophy-of-religion",label:"European Journal for Philosophy of Religion"},{value:"european-journal-of-anaesthesiology",label:"European Journal of Anaesthesiology"},{value:"european-journal-of-clinical-microbiology-and-infectious-diseases",label:"European Journal of Clinical Microbiology & Infectious Diseases"},{value:"european-journal-of-emergency-medicine",label:"European Journal of Emergency Medicine"},{value:"european-journal-of-endocrinology",label:"European Journal of Endocrinology"},{value:"european-journal-of-entomology",label:"European Journal of Entomology"},{value:"european-journal-of-human-genetics",label:"European Journal of Human Genetics"},{value:"european-journal-of-immunology",label:"European Journal of Immunology"},{value:"european-journal-of-information-systems",label:"European Journal of Information Systems"},{value:"european-journal-of-international-law",label:"European Journal of International Law"},{value:"european-journal-of-microbiology-and-immunology",label:"European Journal of Microbiology & Immunology"},{value:"european-journal-of-neuroscience",label:"European Journal of Neuroscience"},{value:"european-journal-of-ophthalmology",label:"European Journal of Ophthalmology"},{value:"european-journal-of-paediatric-neurology",label:"European Journal of Paediatric Neurology"},{value:"european-journal-of-pain",label:"European Journal of Pain"},{value:"european-journal-of-political-research",label:"European Journal of Political Research"},{value:"european-journal-of-public-health",label:"European Journal of Public Health"},{value:"european-journal-of-soil-science",label:"European Journal of Soil Science"},{value:"european-journal-of-taxonomy",label:"European Journal of Taxonomy"},{value:"european-journal-of-theology",label:"European Journal of Theology"},{value:"european-journal-of-ultrasound",label:"European Journal of Ultrasound (Ultraschall in der Medizin)"},{value:"european-journal-of-vascular-and-endovascular-surgery",label:"European Journal of Vascular and Endovascular Surgery"},{value:"european-respiratory-journal",label:"European Respiratory Journal"},{value:"european-retail-research",label:"European Retail Research"},{value:"european-review-of-agricultural-economics",label:"European Review of Agricultural Economics"},{value:"european-society-of-cardiology",label:"European Society of Cardiology"},{value:"european-union-interinstitutional-style-guide-author-date",label:"European Union - Interinstitutional Style Guide (author-date)"},{value:"european-union-interinstitutional-style-guide",label:"European Union - Interinstitutional Style Guide (note)"},{value:"eva-berlin-konferenz",label:"EVA Berlin Konferenz (Deutsch)"},{value:"evidence-based-complementary-and-alternative-medicine",label:"Evidence-Based Complementary and Alternative Medicine"},{value:"evolution-and-development",label:"Evolution & Development"},{value:"evolution-letters",label:"Evolution Letters"},{value:"evolution",label:"Evolution"},{value:"evolutionary-anthropology",label:"Evolutionary Anthropology"},{value:"evolutionary-ecology-research",label:"Evolutionary Ecology Research"},{value:"excli-journal",label:"EXCLI Journal"},{value:"exercer",label:"exercer (Fran\xE7ais)"},{value:"experimental-biology-and-medicine",label:"Experimental Biology and Medicine"},{value:"experimental-biomedical-research",label:"Experimental Biomedical Research"},{value:"experimental-dermatology",label:"Experimental Dermatology"},{value:"expert-reviews-in-molecular-medicine",label:"Expert Reviews in Molecular Medicine"},{value:"express-polymer-letters",label:"eXPRESS Polymer Letters"},{value:"extracellular-vesicles-and-circulating-nucleic-acids",label:"Extracellular Vesicles and Circulating Nucleic Acids"},{value:"eye",label:"Eye"},{value:"fachhochschule-kiel-fachbereich-medien",label:"Fachhochschule Kiel - Fachbereich Medien (Deutsch)"},{value:"fachhochschule-sudwestfalen",label:"Fachhochschule S\xFCdwestfalen (Deutsch)"},{value:"fachhochschule-vorarlberg-author-date",label:"Fachhochschule Vorarlberg (author-date)"},{value:"fachhochschule-vorarlberg-note",label:"Fachhochschule Vorarlberg (note)"},{value:"facial-plastic-surgery-clinics-of-north-america",label:"Facial Plastic Surgery Clinics of North America"},{value:"facolta-teologica-dell-italia-settentrionale-milano",label:"Facolt\xE0 Teologica dell'Italia Settentrionale - Milano (titoli di riviste non abbreviati, Italiano)"},{value:"family-business-review",label:"Family Business Review"},{value:"farmeconomia",label:"Farmeconomia. Health Economics and Therapeutic Pathways"},{value:"fatigue-and-fracture-of-engineering-materials-and-structures",label:"Fatigue & Fracture of Engineering Materials & Structures"},{value:"feminist-economics",label:"Feminist Economics"},{value:"feminist-theory",label:"Feminist Theory"},{value:"ferdinand-porsche-fern-fachhochschule",label:"Ferdinand Porsche Fernfachhochschule (Deutsch - \xD6sterreich)"},{value:"fertility-and-sterility",label:"Fertility and Sterility"},{value:"finance-and-society",label:"Finance and Society"},{value:"finanzarchiv",label:"FinanzArchiv - Public Finance Analysis"},{value:"fine-focus",label:"Fine Focus"},{value:"first-break",label:"First Break"},{value:"first-monday",label:"First Monday"},{value:"fishery-bulletin",label:"Fishery Bulletin"},{value:"flavour-and-fragrance-journal",label:"Flavour and Fragrance Journal"},{value:"florida-entomologist",label:"Florida Entomologist"},{value:"focaal-journal-of-global-and-historical-anthropology",label:"Focaal\u2014Journal of Global and Historical Anthropology"},{value:"foerster-geisteswissenschaft",label:"Sascha Foerster - Geisteswissenschaft (Deutsch)"},{value:"fold-and-r",label:"FOLD&R (Fasti On Line Documents & Research)"},{value:"folia-biologica",label:"Folia Biologica"},{value:"folia-morphologia",label:"Folia Morphologia"},{value:"food-and-agriculture-organization-of-the-united-nations",label:"Food and Agriculture Organization of the United Nations"},{value:"forensic-anthropology",label:"Forensic Anthropology"},{value:"forensic-science-review",label:"Forensic Science Review"},{value:"forest-science",label:"Forest Science"},{value:"forschungsjournal-soziale-bewegungen-fjsb",label:"Forschungsjournal Soziale Bewegungen FJSB(German)"},{value:"forum-qualitative-social-research",label:"Forum: Qualitative Social Research (English)"},{value:"forum-qualitative-sozialforschung",label:"Forum: Qualitative Sozialforschung (Deutsch)"},{value:"frattura-ed-integrita-strutturale-fracture-and-structural-integrity",label:"Frattura ed Integrit\xE0 Strutturale - Fracture and Structural Integrity"},{value:"free-radical-research",label:"Free Radical Research"},{value:"freie-hochschule-stuttgart",label:"Freie Hochschule Stuttgart (Deutsch)"},{value:"freie-universitat-berlin-geographische-wissenschaften",label:"Freie Universit\xE4t Berlin - Geographische Wissenschaften (Deutsch)"},{value:"french-politics",label:"French Politics"},{value:"french1",label:"France (tous les auteurs, num\xE9rotation, Fran\xE7ais)"},{value:"french2",label:"France (auteurs et al., num\xE9rotation, Fran\xE7ais)"},{value:"french3",label:"France (tous les auteurs, auteur-date, Fran\xE7ais)"},{value:"french4",label:"France (auteurs et al., auteur-date, Fran\xE7ais)"},{value:"freshwater-biology",label:"Freshwater Biology"},{value:"freshwater-crayfish",label:"Freshwater Crayfish"},{value:"freshwater-science",label:"Freshwater Science"},{value:"friedrich-schiller-universitat-jena-medizinische-fakultat",label:"Friedrich-Schiller-Universit\xE4t Jena - Medizinische Fakult\xE4t (Deutsch)"},{value:"frontiers-in-bioscience",label:"Frontiers in Bioscience"},{value:"frontiers-in-ecology-and-the-environment",label:"Frontiers in Ecology and the Environment"},{value:"frontiers-in-optics",label:"Frontiers in Optics"},{value:"frontiers-in-physics",label:"Frontiers in Physics"},{value:"frontiers-medical-journals",label:"Frontiers medical journals"},{value:"frontiers-of-biogeography",label:"Frontiers of Biogeography"},{value:"frontiers",label:"Frontiers journals"},{value:"fundamental-and-applied-limnology",label:"Fundamental and Applied Limnology"},{value:"future-medicine",label:"Future Medicine journals"},{value:"future-science-group",label:"Future Science Group"},{value:"g-giappichelli-editore",label:"G. Giappichelli Editore (Italiano)"},{value:"g3",label:"G3: Genes, Genomes, Genetics"},{value:"gaceta-sanitaria",label:"Gaceta Sanitaria"},{value:"gaia",label:"GAIA"},{value:"galatasaray-universitesi-sosyal-bilimler-enstitusu",label:"Galatasaray \xDCniversitesi Sosyal Bilimler Enstit\xFCs\xFC"},{value:"gallia-prehistoire",label:"Gallia Pr\xE9histoire (Fran\xE7ais)"},{value:"gallia",label:"Gallia (Fran\xE7ais)"},{value:"gastroenterology",label:"Gastroenterology"},{value:"gastrointestinal-endoscopy-clinics-of-north-america",label:"Gastrointestinal Endoscopy Clinics of North America"},{value:"gastrointestinal-intervention",label:"Gastrointestinal Intervention"},{value:"gazeta-medica",label:"Gazeta M\xE9dica"},{value:"geistes-und-kulturwissenschaften-heilmann",label:"Geistes- und Kulturwissenschaften (Heilmann) (Deutsch)"},{value:"generic-style-rules-for-linguistics",label:"Generic Style Rules for Linguistics"},{value:"genes-brain-and-behavior",label:"Genes, Brain and Behavior"},{value:"genes-to-cells",label:"Genes to Cells"},{value:"geneses",label:"Gen\xE8ses: Sciences sociales et histoire (Fran\xE7ais)"},{value:"genetics-and-molecular-biology",label:"Genetics and Molecular Biology"},{value:"genetics",label:"Genetics"},{value:"genome-biology-and-evolution",label:"Genome Biology and Evolution"},{value:"genomics-and-informatics",label:"Genomics & Informatics"},{value:"geoarchaeology",label:"Geoarchaeology"},{value:"geobiology",label:"Geobiology"},{value:"geochemical-perspectives-letters",label:"Geochemical Perspectives Letters"},{value:"geochimica-et-cosmochimica-acta",label:"Geochimica et Cosmochimica Acta"},{value:"geochronometria",label:"Geochronometria"},{value:"geografia-fisica-e-dinamica-quaternaria",label:"Geografia Fisica e Dinamica Quaternaria"},{value:"geografie-sbornik-cgs",label:"Geografie Sborn\xEDk \u010CGS"},{value:"geographie-et-cultures",label:"G\xE9ographie et cultures (Fran\xE7ais)"},{value:"geographische-zeitschrift",label:"Geographische Zeitschrift"},{value:"geological-magazine",label:"Geological Magazine"},{value:"geophysical-journal-international",label:"Geophysical Journal International"},{value:"geophysics",label:"Geophysics"},{value:"geopolitics",label:"Geopolitics"},{value:"georg-august-universitat-gottingen-institut-fur-ethnologie-und-ethnologische-sammlung",label:"Georg-August-Universit\xE4t G\xF6ttingen - Institut f\xFCr Ethnologie und Ethnologische Sammlung (Deutsch)"},{value:"geriatrics-and-gerontology-international",label:"Geriatrics & Gerontology International"},{value:"geriatrie-et-psychologie-neuropsychiatrie-du-vieillissement",label:"G\xE9riatrie et Psychologie Neuropsychiatrie du Vieillissement"},{value:"german-council-of-economic-experts",label:"German Council of Economic Experts"},{value:"german-journal-of-agricultural-economics",label:"German Journal of Agricultural Economics"},{value:"german-yearbook-of-international-law",label:"German Yearbook of International Law"},{value:"geschichte-und-gesellschaft",label:"Geschichte und Gesellschaft"},{value:"gesellschaft-fur-popularmusikforschung",label:"Gesellschaft fur Popularmusikforschung (Deutsch)"},{value:"gewerblicher-rechtsschutz-und-urheberrecht",label:"Gewerblicher Rechtsschutz und Urheberrecht (Deutsch)"},{value:"gigascience",label:"GigaScience"},{value:"global-ecology-and-biogeography",label:"Global Ecology and Biogeography"},{value:"glossa",label:"Glossa"},{value:"gost-r-7-0-5-2008-numeric-alphabetical",label:"Russian GOST R 7.0.5-2008 (numeric, sorted alphabetically, \u0420\u0443\u0301\u0441\u0441\u043A\u0438\u0439)"},{value:"gost-r-7-0-5-2008-numeric",label:"Russian GOST R 7.0.5-2008 (numeric)"},{value:"gost-r-7-0-5-2008",label:"Russian GOST R 7.0.5-2008 (\u0420\u0443\u0301\u0441\u0441\u043A\u0438\u0439)"},{value:"government-and-opposition",label:"Government and Opposition"},{value:"grasas-y-aceites",label:"Grasas y Aceites"},{value:"griffith-college-harvard",label:"Griffith College - Harvard"},{value:"groundwater",label:"Groundwater"},{value:"groupe-danthropologie-et-darcheologie-funeraire",label:"Groupe d'anthropologie et d'arch\xE9ologie fun\xE9raire (Fran\xE7ais)"},{value:"guide-des-citations-references-et-abreviations-juridiques",label:"Guide des citations, r\xE9f\xE9rences et abr\xE9viations juridiques 6e \xE9dition (Fran\xE7ais)"},{value:"guide-pour-la-redaction-et-la-presentation-des-theses-a-lusage-des-doctorants",label:"Guide pour la r\xE9daction et la pr\xE9sentation des th\xE8ses \xE0 l'usage des doctorants (Fran\xE7ais)"},{value:"haaga-helia-university-of-applied-sciences-harvard",label:"Haaga-Helia ammattikorkeakoulu - Harvard"},{value:"haematologica",label:"Haematologica"},{value:"haemophilia",label:"Haemophilia"},{value:"hainan-medical-university-journal-publisher",label:"Hainan Medical University Journal Publisher"},{value:"hamburg-school-of-food-science",label:"Hamburg School of Food Science (diploma, Deutsch)"},{value:"hand",label:"HAND"},{value:"handbook-of-clinical-neurology",label:"Handbook of Clinical Neurology"},{value:"harvard-anglia-ruskin-university",label:"Anglia Ruskin University - Harvard"},{value:"harvard-bournemouth-university",label:"Bournemouth University - Harvard"},{value:"harvard-cape-peninsula-university-of-technology",label:"Cape Peninsula University of Technology - Harvard"},{value:"harvard-cardiff-university-old",label:"Cardiff University - (old) Harvard"},{value:"harvard-cite-them-right-10th-edition",label:"Cite Them Right 10th edition - Harvard"},{value:"harvard-cite-them-right-no-et-al",label:'Cite Them Right 11th edition - Harvard (no "et al.")'},{value:"harvard-cite-them-right",label:"Cite Them Right 11th edition - Harvard"},{value:"harvard-coventry-university",label:"Coventry University - Harvard"},{value:"harvard-cranfield-university",label:"Cranfield University - Harvard"},{value:"harvard-deakin-university",label:"Deakin University - Harvard"},{value:"harvard-dundalk-institute-of-technology",label:"Dundalk Institute of Technology - Harvard"},{value:"harvard-durham-university-business-school",label:"Durham University Business School - Harvard"},{value:"harvard-edge-hill-university",label:"Edge Hill University - Harvard"},{value:"harvard-european-archaeology",label:"European Archaeology - Harvard"},{value:"harvard-fachhochschule-salzburg",label:"Fachhochschule Salzburg - Harvard"},{value:"harvard-falmouth-university",label:"Falmouth University - Harvard"},{value:"harvard-gesellschaft-fur-bildung-und-forschung-in-europa",label:"Gesellschaft f\xFCr Bildung und Forschung in Europa - Harvard (Deutsch)"},{value:"harvard-imperial-college-london",label:"Imperial College London - Harvard"},{value:"harvard-institut-fur-praxisforschung-de",label:"Institut f\xFCr Praxisforschung - Harvard (Bahr & Frackmann) (Deutsch)"},{value:"harvard-kings-college-london",label:"King's College London - Harvard"},{value:"harvard-leeds-beckett-university",label:"Leeds Beckett University - Harvard"},{value:"harvard-leeds-metropolitan-university",label:"Leeds Metropolitan University - Harvard"},{value:"harvard-limerick",label:"University of Limerick (Cite it Right) - Harvard"},{value:"harvard-london-south-bank-university",label:"London South Bank University - Harvard"},{value:"harvard-manchester-business-school",label:"Manchester Business School - Harvard"},{value:"harvard-manchester-metropolitan-university",label:"Manchester Metropolitan University - Harvard"},{value:"harvard-melbourne-polytechnic",label:"Melbourne Polytechnic - Harvard"},{value:"harvard-newcastle-university",label:"Newcastle University - Harvard"},{value:"harvard-north-west-university",label:"North-West University - Harvard"},{value:"harvard-oxford-brookes-university-faculty-of-health-and-life-sciences",label:"Oxford Brookes University - Faculty of Health and Life Sciences - Harvard"},{value:"harvard-pontificia-universidad-catolica-del-ecuador",label:"Pontificia Universidad Cat\xF3lica del Ecuador (Espa\xF1ol) - Harvard"},{value:"harvard-robert-gordon-university",label:"Robert Gordon University - Harvard"},{value:"harvard-staffordshire-university",label:"Staffordshire University - Harvard"},{value:"harvard-stellenbosch-university",label:"Stellenbosch University - Harvard"},{value:"harvard-swinburne-university-of-technology",label:"Swinburne University of Technology - Harvard"},{value:"harvard-the-university-of-melbourne",label:"The University of Melbourne - Harvard"},{value:"harvard-the-university-of-northampton",label:"The University of Northampton - Harvard"},{value:"harvard-the-university-of-sheffield-school-of-east-asian-studies",label:"The University of Sheffield - School of East Asian Studies - Harvard"},{value:"harvard-the-university-of-sheffield-town-and-regional-planning",label:"The University of Sheffield - Town and Regional Planning - Harvard"},{value:"harvard-theologisches-seminar-adelshofen",label:"Theologisches Seminar Adelshofen - Harvard (Deutsch)"},{value:"harvard-universiti-teknologi-malaysia",label:"Universiti Teknologi Malaysia - Harvard"},{value:"harvard-universiti-tunku-abdul-rahman",label:"Universiti Tunku Abdul Rahman - Harvard"},{value:"harvard-university-for-the-creative-arts",label:"University for the Creative Arts - Harvard"},{value:"harvard-university-of-abertay-dundee",label:"University of Abertay Dundee - Harvard"},{value:"harvard-university-of-bath",label:"University of Bath - Harvard"},{value:"harvard-university-of-birmingham",label:"University of Birmingham - Harvard"},{value:"harvard-university-of-brighton-school-of-environment-and-technology",label:"University of Brighton School of Environment & Technology - Harvard"},{value:"harvard-university-of-cape-town",label:"University of Cape Town - Harvard"},{value:"harvard-university-of-exeter-geography",label:"University of Exeter - Geography - Harvard"},{value:"harvard-university-of-greenwich",label:"University of Greenwich - Harvard"},{value:"harvard-university-of-kent",label:"University of Kent - Harvard"},{value:"harvard-university-of-leeds",label:"University of Leeds - Harvard"},{value:"harvard-university-of-technology-sydney",label:"University of Technology Sydney - Harvard"},{value:"harvard-university-of-the-west-of-england",label:"University of the West of England (Bristol) - Harvard"},{value:"harvard-university-of-the-west-of-scotland",label:"University of the West of Scotland - Harvard"},{value:"harvard-university-of-westminster",label:"University of Westminster - Harvard"},{value:"harvard-university-of-wolverhampton",label:"University of Wolverhampton - Harvard"},{value:"harvard-university-of-worcester",label:"University of Worcester - Harvard"},{value:"harvard-york-st-john-university",label:"York St John University - Harvard (pre September 2019 entry)"},{value:"haute-ecole-de-gestion-de-geneve-iso-690",label:"Haute \xE9cole de gestion de Gen\xE8ve - ISO 690"},{value:"haute-ecole-pedagogique-fribourg",label:"Haute Ecole p\xE9dagogique Fribourg (Fran\xE7ais)"},{value:"hawaii-international-conference-on-system-sciences-proceedings",label:"Hawaii International Conference on System Sciences Proceedings"},{value:"health-and-human-rights-journal",label:"Health and Human Rights Journal"},{value:"health-and-social-care-in-the-community",label:"Health & Social Care in the Community"},{value:"health-economics-policy-and-law",label:"Health Economics, Policy and Law"},{value:"health-economics",label:"Health Economics"},{value:"health-education-england-harvard",label:"Health Education England - Harvard"},{value:"health-education-research",label:"Health Education Research"},{value:"health-policy-and-planning",label:"Health Policy and Planning"},{value:"health-reform-observer-observatoire-des-reformes-de-sante",label:"Health Reform Observer - Observatoire des R\xE9formes de Sant\xE9"},{value:"health-sports-and-rehabilitation-medicine",label:"Health, Sports & Rehabilitation Medicine"},{value:"heart-failure-clinics",label:"Heart Failure Clinics"},{value:"heart-rhythm",label:"Heart Rhythm"},{value:"heidelberg-university-faculty-of-medicine",label:"Heidelberg University - Faculty of Medicine (Universit\xE4t Heidelberg - Medizinische Fakult\xE4t Heidelberg)"},{value:"heiliger-dienst",label:"Heiliger Dienst (Deutsch)"},{value:"helvetica-chimica-acta",label:"Helvetica Chimica Acta"},{value:"hematology-oncology-clinics-of-north-america",label:"Hematology/Oncology Clinics of North America"},{value:"hemijska-industrija",label:"Hemijska industrija"},{value:"henoch",label:"Henoch"},{value:"hepatology",label:"Hepatology"},{value:"heredity",label:"Heredity"},{value:"herpetologica",label:"Herpetologica"},{value:"hiob-ludolf-centre-for-ethiopian-studies-long-names",label:"Hiob Ludolf Centre for Ethiopian Studies (long names)"},{value:"hiob-ludolf-centre-for-ethiopian-studies-with-url-doi",label:"Hiob Ludolf Centre for Ethiopian Studies (with URL/DOI)"},{value:"hiob-ludolf-centre-for-ethiopian-studies",label:"Hiob Ludolf Centre for Ethiopian Studies"},{value:"hipertension-y-riesgo-vascular",label:"Hipertensi\xF3n y Riesgo Vascular (Espa\xF1ol)"},{value:"histoire-at-politique",label:"Histoire@Politique. Politique, culture, soci\xE9t\xE9 (Fran\xE7ais)"},{value:"histoire-et-mesure",label:"Histoire & Mesure (Fran\xE7ais)"},{value:"histopathology",label:"Histopathology"},{value:"historia-scribere",label:"historia-scribere (Deutsch)"},{value:"historical-materialism",label:"Historical Materialism"},{value:"historical-social-research",label:"Historical Social Research"},{value:"historio-plus",label:"historioPLUS (Deutsch - \xD6sterreich)"},{value:"history-and-theory",label:"History and Theory"},{value:"history-australia",label:"History Australia"},{value:"history-of-the-human-sciences",label:"History of the Human Sciences"},{value:"hochschule-bonn-rhein-sieg",label:"Hochschule Bonn-Rhein-Sieg (Harvard, Deutsch)"},{value:"hochschule-fur-soziale-arbeit-fhnw",label:"Hochschule f\xFCr Soziale Arbeit FHNW (Deutsch - Schweiz)"},{value:"hochschule-fur-wirtschaft-und-recht-berlin",label:"Hochschule f\xFCr Wirtschaft und Recht Berlin (Deutsch)"},{value:"hochschule-hannover-soziale-arbeit",label:"Hochschule Hannover - Soziale Arbeit (Deutsch)"},{value:"hochschule-munchen-fakultat-fur-angewandte-sozialwissenschaften",label:"Hochschule M\xFCnchen - Fakult\xE4t f\xFCr Angewandte Sozialwissenschaften (Deutsch)"},{value:"hochschule-osnabruck-fakultat-agrarwissenschaften-und-landschaftsarchitektur",label:"Hochschule Osnabr\xFCck - Fakult\xE4t Agrarwissenschaften und Landschaftsarchitektur (Deutsch)"},{value:"hochschule-pforzheim-fakultat-fur-wirtschaft-und-recht",label:"Hochschule Pforzheim - Fakult\xE4t f\xFCr Wirtschaft und Recht (Deutsch)"},{value:"hong-kong-journal-of-radiology",label:"Hong Kong Journal of Radiology"},{value:"hospital-a-domicilio",label:"Hospital a Domicilio"},{value:"housing-studies",label:"Housing Studies"},{value:"hpb",label:"HPB"},{value:"human-brain-mapping",label:"Human Brain Mapping"},{value:"human-ecology",label:"Human Ecology"},{value:"human-molecular-genetics",label:"Human Molecular Genetics"},{value:"human-mutation",label:"Human Mutation"},{value:"human-reproduction-update",label:"Human Reproduction Update"},{value:"human-reproduction",label:"Human Reproduction"},{value:"human-resource-management-journal",label:"Human Resource Management Journal"},{value:"human-rights-law-review",label:"Human Rights Law Review"},{value:"human-wildlife-interactions",label:"Human-Wildlife Interactions"},{value:"humanistica-lovaniensia-journal-of-neo-latin-studies",label:"Humanistica Lovaniensia. Journal of Neo-Latin Studies"},{value:"humboldt-state-university-environmental-resources-engineering",label:"Humboldt State University - Environmental Resources Engineering"},{value:"hydrobiologia",label:"Hydrobiologia"},{value:"hydrological-processes",label:"Hydrological Processes"},{value:"hydrological-sciences-journal",label:"Hydrological Sciences Journal"},{value:"hypertension-research",label:"Hypertension Research"},{value:"hypotheses-in-the-life-sciences",label:"Hypotheses in the Life Sciences"},{value:"hystrix-the-italian-journal-of-mammalogy",label:"Hystrix, the Italian Journal of Mammalogy"},{value:"iawa-journal",label:"IAWA Journal"},{value:"ib-tauris-note",label:"I.B. Tauris (note)"},{value:"ibis",label:"Ibis"},{value:"ices-journal-of-marine-science",label:"ICES Journal of Marine Science"},{value:"idojaras-quarterly-journal-of-the-hungarian-meteorological-service",label:"Id\u0151j\xE1r\xE1s - Quarterly Journal of the Hungarian Meteorological Service"},{value:"ie-comunicaciones",label:"IE Comunicaciones"},{value:"ieee-transactions-on-medical-imaging",label:"IEEE Transactions on Medical Imaging"},{value:"ieee-with-url",label:"IEEE (with URL)"},{value:"ieee",label:"IEEE"},{value:"iforest",label:"iForest"},{value:"igaku-toshokan",label:"Igaku Toshokan (\u65E5\u672C\u8A9E)"},{value:"iica-catie",label:"IICA-CATIE (Espa\xF1ol)"},{value:"ilahiyat-studies",label:"Ilahiyat Studies (full note)"},{value:"im-gesprach",label:"Im Gespr\xE4ch - Hefte der Martin Buber-Gesellschaft (Deutsch)"},{value:"incontext-studies-in-translation-and-interculturalism",label:"INContext: Studies in Translation and Interculturalism"},{value:"indian-dermatology-online-journal",label:"Indian Dermatology Online Journal"},{value:"indian-journal-of-medical-research",label:"Indian Journal of Medical Research"},{value:"indian-journal-of-orthopaedics",label:"Indian Journal of Orthopaedics"},{value:"indian-journal-of-physics",label:"Indian Journal of Physics"},{value:"indian-journal-of-traditional-knowledge",label:"Indian Journal of Traditional Knowledge"},{value:"indiana",label:"INDIANA"},{value:"indoor-air",label:"Indoor Air"},{value:"industrial-relations",label:"Industrial Relations"},{value:"infectio",label:"Infectio (Espa\xF1ol)"},{value:"infectious-disease-clinics-of-north-america",label:"Infectious Disease Clinics of North America"},{value:"inflammatory-bowel-diseases",label:"Inflammatory Bowel Diseases"},{value:"influenza-and-other-respiratory-viruses",label:"Influenza and Other Respiratory Viruses"},{value:"infoclio-de-kurzbelege",label:"infoclio.ch (Kurzbelege, Deutsch - Schweiz)"},{value:"infoclio-de",label:"infoclio.ch (Deutsch - Schweiz)"},{value:"infoclio-fr-nocaps",label:"infoclio.ch (sans majuscules, Fran\xE7ais)"},{value:"infoclio-fr-smallcaps",label:"infoclio.ch (petites majuscules, Fran\xE7ais)"},{value:"infomin",label:"Infomin"},{value:"informal-logic",label:"Informal Logic"},{value:"ingenieria-agricola",label:"Ingenier\xEDa Agr\xEDcola (Espa\xF1ol)"},{value:"innovations-therapeutiques-en-oncologie",label:"Innovations & Th\xE9rapeutiques en Oncologie"},{value:"instap-academic-press",label:"INSTAP Academic Press"},{value:"institut-francais-darcheologie-orientale-arab-studies",label:"Institut fran\xE7ais d'arch\xE9ologie orientale - Arab Studies (English)"},{value:"institut-francais-darcheologie-orientale-en",label:"Institut fran\xE7ais d'arch\xE9ologie orientale - Egyptology (English)"},{value:"institut-francais-darcheologie-orientale-etudes-arabes",label:"Institut fran\xE7ais d'arch\xE9ologie orientale - \xE9tudes arabes (Fran\xE7ais)"},{value:"institut-francais-darcheologie-orientale",label:"Institut fran\xE7ais d'arch\xE9ologie orientale - arch\xE9ologie et \xE9gyptologie (Fran\xE7ais)"},{value:"institut-national-de-la-recherche-scientifique-sciences-sociales",label:"Institut national de la recherche scientifique - Sciences sociales (author-date, Fran\xE7ais)"},{value:"institut-national-de-recherches-archeologiques-preventives",label:"Institut national de recherches arch\xE9ologiques pr\xE9ventives (Fran\xE7ais)"},{value:"institut-national-de-sante-publique-du-quebec-napp",label:"Institut national de sant\xE9 publique du Qu\xE9bec - NAPP (Fran\xE7ais - Canada)"},{value:"institut-national-de-sante-publique-du-quebec-topo",label:"Institut national de sant\xE9 publique du Qu\xE9bec - TOPO (Fran\xE7ais - Canada)"},{value:"institut-pertanian-bogor",label:"Institut Pertanian Bogor: Pedoman Penulisan Karya Ilmiah Edisi ke-3 (Bahasa Indonesia)"},{value:"institut-teknologi-bandung-sekolah-pascasarjana",label:"Institut Teknologi Bandung - Sekolah Pascasarjana"},{value:"institute-for-operations-research-and-the-management-sciences",label:"Institute for Operations Research and the Management Sciences"},{value:"institute-of-mathematical-statistics",label:"Institute of Mathematical Statistics journals"},{value:"institute-of-mathematics-and-its-applications",label:"Institute of Mathematics and its Applications"},{value:"institute-of-physics-harvard",label:"Institute of Physics - Harvard"},{value:"institute-of-physics-numeric",label:"Institute of Physics (numeric)"},{value:"instituto-brasileiro-de-informacao-em-ciencia-e-tecnologia-abnt-initials",label:"Instituto Brasileiro de Informa\xE7\xE3o em Ci\xEAncia e Tecnologia - ABNT (autoria abreviada)"},{value:"instituto-brasileiro-de-informacao-em-ciencia-e-tecnologia-abnt",label:"Instituto Brasileiro de Informa\xE7\xE3o em Ci\xEAncia e Tecnologia - ABNT (autoria completa)"},{value:"instituto-de-investigaciones-sobre-la-universidad-y-la-educacion-moderno",label:"Instituto de Investigaciones sobre la Universidad y la Educaci\xF3n - Moderno (autor-fecha, Espa\xF1ol)"},{value:"instituto-de-pesquisas-energeticas-e-nucleares",label:"Instituto de Pesquisas Energ\xE9ticas e Nucleares (Portugu\xEAs - Brasil)"},{value:"instituto-de-pesquisas-tecnologicas",label:"Instituto de Pesquisas Tecnol\xF3gicas (Portugu\xEAs - Brasil)"},{value:"instituto-superior-de-teologia-de-las-islas-canarias",label:"Instituto Superior de Teolog\xEDa de las Islas Canarias (Espa\xF1ol)"},{value:"integrated-science-publishing-journals",label:"Integrated Science Publishing journals"},{value:"integrative-and-comparative-biology",label:"Integrative & Comparative Biology"},{value:"inter-research-science-center",label:"Inter-Research Science Center"},{value:"inter-ro",label:"INTER: Romanian Review for Theological and Religious Studies"},{value:"interaction-design-and-architectures",label:"Interaction Design & Architecture(s)"},{value:"interactive-cardiovascular-and-thoracic-surgery",label:"Interactive CardioVascular and Thoracic Surgery"},{value:"interdisziplinare-anthropologie",label:"Interdisziplin\xE4re Anthropologie (Deutsch)"},{value:"interdisziplinare-zeitschrift-fur-technologie-und-lernen",label:"Interdisziplin\xE4re Zeitschrift f\xFCr Technologie und Lernen (Deutsch)"},{value:"interkulturelle-germanistik-gottingen",label:"Interkulturelle Germanistik G\xF6ttingen (Deutsch)"},{value:"international-atomic-energy-agency",label:"International Atomic Energy Agency"},{value:"international-biodeterioration-and-biodegradation",label:"International Biodeterioration & Biodegradation"},{value:"international-brazilian-journal-of-urology",label:"International Brazilian Journal Of Urology"},{value:"international-conference-on-information-systems-development",label:"International Conference on Information Systems Development"},{value:"international-development-policy",label:"International Development Policy"},{value:"international-energy-agency-organisation-for-economic-co-operation-and-development",label:"International Energy Agency - Organisation for Economic Co-operation and Development"},{value:"international-islamic-university-malaysia-ahmad-ibrahim-kulliyyah-of-laws",label:"International Islamic University Malaysia - Ahmad Ibrahim Kulliyyah of Laws"},{value:"international-journal-for-numerical-methods-in-biomedical-engineering",label:"International Journal for Numerical Methods in Biomedical Engineering"},{value:"international-journal-of-audiology",label:"International Journal of Audiology"},{value:"international-journal-of-automotive-technology",label:"International Journal of Automotive Technology"},{value:"international-journal-of-cancer",label:"International Journal of Cancer"},{value:"international-journal-of-circuit-theory-and-applications",label:"International Journal of Circuit Theory and Applications"},{value:"international-journal-of-climatology",label:"International Journal of Climatology"},{value:"international-journal-of-clinical-research",label:"International Journal of Clinical Research"},{value:"international-journal-of-cosmetic-science",label:"International Journal of Cosmetic Science"},{value:"international-journal-of-electrochemical-science",label:"International Journal of Electrochemical Science"},{value:"international-journal-of-electronic-commerce",label:"International Journal of Electronic Commerce"},{value:"international-journal-of-epidemiology",label:"International Journal of Epidemiology"},{value:"international-journal-of-exercise-science",label:"International Journal of Exercise Science"},{value:"international-journal-of-food-science-and-technology",label:"International Journal of Food Science & Technology"},{value:"international-journal-of-geriatric-psychiatry",label:"International Journal of Geriatric Psychiatry"},{value:"international-journal-of-humanoid-robotics",label:"International Journal of Humanoid Robotics"},{value:"international-journal-of-language-and-communication-disorders",label:"International Journal of Language & Communication Disorders"},{value:"international-journal-of-learner-corpus-research",label:"International Journal of Learner Corpus Research"},{value:"international-journal-of-lexicography",label:"International Journal of Lexicography"},{value:"international-journal-of-management-reviews",label:"International Journal of Management Reviews"},{value:"international-journal-of-nuclear-security",label:"International Journal of Nuclear Security"},{value:"international-journal-of-obstetric-anesthesia",label:"International Journal of Obstetric Anesthesia"},{value:"international-journal-of-occupational-medicine-and-environmental-health",label:"International Journal of Occupational Medicine and Environmental Health"},{value:"international-journal-of-oral-and-maxillofacial-surgery",label:"International Journal of Oral and Maxillofacial Surgery"},{value:"international-journal-of-osteoarchaeology",label:"International Journal of Osteoarchaeology"},{value:"international-journal-of-plant-sciences",label:"International Journal of Plant Sciences"},{value:"international-journal-of-polymer-analysis-and-characterization",label:"International Journal of Polymer Analysis and Characterization"},{value:"international-journal-of-polymeric-materials-and-polymeric-biomaterials",label:"International Journal of Polymeric Materials and Polymeric Biomaterials"},{value:"international-journal-of-population-data-science",label:"International Journal of Population Data Science"},{value:"international-journal-of-quantum-chemistry",label:"International Journal of Quantum Chemistry"},{value:"international-journal-of-radiation-oncology-biology-physics",label:"International Journal of Radiation Oncology, Biology, Physics"},{value:"international-journal-of-research-in-exercise-physiology",label:"International Journal of Research in Exercise Physiology"},{value:"international-journal-of-simulation-modelling",label:"International Journal of Simulation Modelling"},{value:"international-journal-of-spatial-data-infrastructures-research",label:"International Journal of Spatial Data Infrastructures Research"},{value:"international-journal-of-sports-medicine",label:"International Journal of Sport Medicine"},{value:"international-journal-of-urban-and-regional-research",label:"International Journal of Urban and Regional Research"},{value:"international-journal-of-wildland-fire",label:"International Journal of Wildland Fire"},{value:"international-microbiology",label:"International Microbiology"},{value:"international-organization",label:"International Organization"},{value:"international-pig-veterinary-society-congress-proceedings",label:"International Pig Veterinary Society Congress Proceedings"},{value:"international-review-of-the-red-cross",label:"International Review of the Red Cross"},{value:"international-security",label:"International Security"},{value:"international-studies-association",label:"International Studies Association"},{value:"international-union-of-crystallography",label:"International Union of Crystallography journals"},{value:"international-union-of-forest-research-organizations-headquarters",label:"International Union of Forest Research Organizations - Headquarters"},{value:"inventaire-general-du-patrimoine-culturel-iso-690-full-note-with-ibid",label:"Inventaire g\xE9n\xE9ral du patrimoine culturel - ISO-690 (full note, with Ibid., Fran\xE7ais)"},{value:"inventaire-general-du-patrimoine-culturel-iso-690-full-note",label:"Inventaire g\xE9n\xE9ral du patrimoine culturel - ISO-690 (full note, Fran\xE7ais)"},{value:"inventaire-general-du-patrimoine-culturel-iso-690-note",label:"Inventaire g\xE9n\xE9ral du patrimoine culturel - ISO-690 (note, Fran\xE7ais)"},{value:"invertebrate-biology",label:"Invertebrate Biology"},{value:"investigative-radiology",label:"Investigative Radiology"},{value:"invisu",label:"InVisu"},{value:"ios-press-books",label:"IOS Press (books)"},{value:"ipag-business-school-apa",label:"IPAG Business School - APA"},{value:"iran-manual-of-style",label:"Iran Manual of Style - \u0634\u06CC\u0648\u0647\u200C\u0646\u0627\u0645\u0647 \u0627\u06CC\u0631\u0627\u0646 (\u0641\u0627\u0631\u0633\u06CC)"},{value:"iranian-journal-of-basic-medical-sciences",label:"Iranian Journal of Basic Medical Sciences"},{value:"iranian-journal-of-pharmaceutical-research",label:"Iranian Journal of Pharmaceutical Research"},{value:"irish-historical-studies",label:"Irish Historical Studies"},{value:"isabella-stewart-gardner-museum",label:"Isabella Stewart Gardner Museum"},{value:"isnad-dipnotlu",label:"\u0130SNAD At\u0131f Sistemi 2. Edisyon (dipnotlu)"},{value:"isnad-metinici",label:"\u0130SNAD At\u0131f Sistemi 2. Edisyon (metini\xE7i)"},{value:"isnad",label:"\u0130SNAD At\u0131f Sistemi 1. Edisyon (dipnotlu)"},{value:"iso690-author-date-cs",label:"ISO-690 (author-date, \u010Ce\u0161tina)"},{value:"iso690-author-date-de",label:"ISO-690 (author-date, Deutsch)"},{value:"iso690-author-date-en",label:"ISO-690 (author-date, English)"},{value:"iso690-author-date-es",label:"ISO-690 (author-date, Espa\xF1ol)"},{value:"iso690-author-date-fr-no-abstract",label:"ISO-690 (author-date, no abstract, Fran\xE7ais)"},{value:"iso690-author-date-fr",label:"ISO-690 (author-date, Fran\xE7ais)"},{value:"iso690-author-date-pt-br",label:"ISO-690 (author-date, Portugu\xEAs - Brasil)"},{value:"iso690-author-date-sk",label:"ISO-690 (author-date, Sloven\u010Dina)"},{value:"iso690-full-note-cs",label:"ISO-690 (full note, \u010Ce\u0161tina)"},{value:"iso690-full-note-sk",label:"ISO-690 (full note, Sloven\u010Dina)"},{value:"iso690-full-note-with-ibid-ro",label:"ISO-690 (full note, with Ibid., Rom\xE2n\u0103)"},{value:"iso690-note-cs",label:"ISO-690 (note, without bibliography, \u010Ce\u0161tina)"},{value:"iso690-note-fr",label:"ISO-690 (note, no abstract, Fran\xE7ais)"},{value:"iso690-numeric-brackets-cs",label:"ISO-690 (numeric, brackets, \u010Ce\u0161tina)"},{value:"iso690-numeric-cs",label:"ISO-690 (numeric, parentheses, \u010Ce\u0161tina)"},{value:"iso690-numeric-en",label:"ISO-690 (numeric, English)"},{value:"iso690-numeric-fr",label:"ISO-690 (numeric, Fran\xE7ais)"},{value:"iso690-numeric-lt",label:"ISO-690 (numeric, Lietuvi\u0173 kalba)"},{value:"iso690-numeric-sk",label:"ISO-690 (numeric, Sloven\u010Dina)"},{value:"israel-medical-association-journal",label:"Israel Medical Association Journal"},{value:"istanbul-medical-journal",label:"\u0130stanbul Medical Journal"},{value:"istanbul-universitesi-sosyal-bilimler-enstitusu",label:"\u0130stanbul \xDCniversitesi Sosyal Bilimler Enstit\xFCs\xFC (T\xFCrk\xE7e)"},{value:"italian-journal-of-agronomy",label:"Italian Journal of Agronomy"},{value:"italus-hortus",label:"Italus Hortus"},{value:"ithaque",label:"Ithaque (Fran\xE7ais - Canada)"},{value:"iubmb-life",label:"IUBMB Life"},{value:"ius-ecclesiae",label:"Ius Ecclesiae"},{value:"izmir-katip-celebi-universitesi-sosyal-bilimler-enstitusu",label:"\u0130zmir Katip \xC7elebi \xDCniversitesi - Sosyal Bilimler Enstit\xFCs\xFC (T\xFCrk\xE7e)"},{value:"jacc-cardiovascular-imaging",label:"JACC: Cardiovascular Imaging"},{value:"jacc-cardiovascular-interventions",label:"JACC: Cardiovascular Interventions"},{value:"jahrbuch-der-osterreichischen-byzantinischen-gesellschaft",label:"Jahrbuch der \xD6sterreichischen Byzantinischen Gesellschaft"},{value:"jahrbuch-fur-evangelikale-theologie",label:"Jahrbuch f\xFCr evangelikale Theologie (Deutsch)"},{value:"japanese-journal-of-applied-physics",label:"Japanese Journal of Applied Physics"},{value:"javnost-the-public",label:"Javnost - The Public"},{value:"jci-insight",label:"JCI Insight"},{value:"jcom-journal-of-science-communication",label:"JCOM: Journal of Science Communication"},{value:"john-benjamins-publishing-company-iconicity-in-language-and-literature",label:"John Benjamins Publishing Company - Iconicity in Language and Literature"},{value:"john-benjamins-publishing-company-linguistik-aktuell-linguistics-today",label:"John Benjamins Publishing Company - Linguistik Aktuell/Linguistics Today"},{value:"johnson-matthey-technology-review",label:"Johnson Matthey Technology Review"},{value:"journal-and-proceedings-of-the-royal-society-of-new-south-wales",label:"Journal and Proceedings of the Royal Society of New South Wales"},{value:"journal-de-la-societe-des-americanistes",label:"Journal de la Soci\xE9t\xE9 des am\xE9ricanistes"},{value:"journal-de-la-societe-des-oceanistes",label:"Journal de la Soci\xE9t\xE9 des Oc\xE9anistes"},{value:"journal-for-the-history-of-astronomy",label:"Journal for the History of Astronomy"},{value:"journal-for-the-study-of-the-new-testament",label:"Journal for the Study of the New Testament"},{value:"journal-for-veterinary-medicine-biotechnology-and-biosafety",label:"Journal for Veterinary Medicine, Biotechnology and Biosafety"},{value:"journal-fur-kulturpflanzen-journal-of-cultivated-plants",label:"Journal f\xFCr Kulturpflanzen - Journal of Cultivated Plants"},{value:"journal-fur-kunstgeschichte",label:"Journal f\xFCr Kunstgeschichte"},{value:"journal-of-accounting-research",label:"Journal of Accounting Research"},{value:"journal-of-acoustics",label:"Journal of Acoustics"},{value:"journal-of-adolescent-health",label:"Journal of Adolescent Health"},{value:"journal-of-advertising-research",label:"Journal of Advertising Research"},{value:"journal-of-agricultural-and-applied-economics",label:"Journal of Agricultural and Applied Economics"},{value:"journal-of-agricultural-and-resource-economics",label:"Journal of Agricultural and Resource Economics"},{value:"journal-of-alzheimers-disease",label:"Journal of Alzheimer's Disease"},{value:"journal-of-analytical-toxicology",label:"Journal of Analytical Toxicology"},{value:"journal-of-animal-physiology-and-animal-nutrition",label:"Journal of Animal Physiology and Animal Nutrition"},{value:"journal-of-animal-science",label:"Journal of Animal Science"},{value:"journal-of-antimicrobial-chemotherapy",label:"Journal of Antimicrobial Chemotherapy"},{value:"journal-of-aoac-international",label:"Journal of AOAC International"},{value:"journal-of-applied-animal-science",label:"Journal of Applied Animal Science"},{value:"journal-of-applied-clinical-medical-physics",label:"Journal of Applied Clinical Medical Physics"},{value:"journal-of-applied-entomology",label:"Journal of Applied Entomology"},{value:"journal-of-applied-pharmaceutical-research",label:"Journal of Applied Pharmaceutical Research"},{value:"journal-of-applied-philosophy",label:"Journal of Applied Philosophy"},{value:"journal-of-applied-polymer-science",label:"Journal of Applied Polymer Science"},{value:"journal-of-archaeological-research",label:"Journal of Archaeological Research"},{value:"journal-of-atrial-fibrillation",label:"Journal of Atrial Fibrillation"},{value:"journal-of-australian-strength-and-conditioning",label:"Journal of Australian Strength & Conditioning"},{value:"journal-of-avian-biology",label:"Journal of Avian Biology"},{value:"journal-of-basic-microbiology",label:"Journal of Basic Microbiology"},{value:"journal-of-biological-chemistry",label:"The Journal of Biological Chemistry"},{value:"journal-of-biological-regulators-and-homeostatic-agents",label:"Journal of Biological Regulators & Homeostatic Agents"},{value:"journal-of-biomedical-materials-research-part-a",label:"Journal of Biomedical Materials Research Part A"},{value:"journal-of-biosciences",label:"Journal of Biosciences"},{value:"journal-of-bone-and-mineral-research",label:"Journal of Bone and Mineral Research"},{value:"journal-of-brachial-plexus-and-peripheral-nerve-injury",label:"Journal of Brachial Plexus and Peripheral Nerve Injury"},{value:"journal-of-breast-cancer",label:"Journal of Breast Cancer"},{value:"journal-of-burn-care-and-research",label:"Journal of Burn Care & Research"},{value:"journal-of-business-logistics",label:"Journal of Business Logistics"},{value:"journal-of-cachexia-sarcopenia-and-muscle",label:"Journal of Cachexia, Sarcopenia and Muscle"},{value:"journal-of-cardiothoracic-and-vascular-anesthesia",label:"Journal of Cardiothoracic and Vascular Anesthesia"},{value:"journal-of-cellular-and-molecular-medicine",label:"Journal of Cellular and Molecular Medicine"},{value:"journal-of-cellular-biochemistry",label:"Journal of Cellular Biochemistry"},{value:"journal-of-chemistry-and-chemical-engineering",label:"Journal of Chemistry and Chemical Engineering"},{value:"journal-of-chemometrics",label:"Journal of Chemometrics"},{value:"journal-of-clinical-and-translational-science",label:"Journal of Clinical and Translational Science"},{value:"journal-of-clinical-neurology",label:"Journal of Clinical Neurology"},{value:"journal-of-clinical-neurophysiology",label:"Journal of Clinical Neurophysiology"},{value:"journal-of-clinical-oncology",label:"Journal of Clinical Oncology"},{value:"journal-of-clinical-rheumatology",label:"Journal of Clinical Rheumatology"},{value:"journal-of-clinical-sleep-medicine",label:"Journal of Clinical Sleep Medicine"},{value:"journal-of-combinatorics",label:"Journal of Combinatorics"},{value:"journal-of-common-market-studies",label:"Journal of Common Market Studies"},{value:"journal-of-comparative-pathology",label:"Journal of Comparative Pathology"},{value:"journal-of-computational-chemistry",label:"Journal of Computational Chemistry"},{value:"journal-of-computer-applications-in-archaeology",label:"Journal of Computer Applications in Archaeology"},{value:"journal-of-computer-assisted-tomography",label:"Journal of Computer Assisted Tomography"},{value:"journal-of-computer-information-systems",label:"Journal of Computer Information Systems"},{value:"journal-of-consumer-research",label:"Journal of Consumer Research"},{value:"journal-of-contemporary-medicine",label:"Journal of Contemporary Medicine"},{value:"journal-of-contemporary-water-research-and-education",label:"Journal of Contemporary Water Research and Education"},{value:"journal-of-crohns-and-colitis-supplements",label:"Journal of Crohn's and Colitis Supplements"},{value:"journal-of-crohns-and-colitis",label:"Journal of Crohn's and Colitis"},{value:"journal-of-dairy-science",label:"Journal of Dairy Science"},{value:"journal-of-dental-research",label:"Journal of Dental Research"},{value:"journal-of-early-christian-studies",label:"Journal of Early Christian Studies"},{value:"journal-of-economic-impact",label:"Journal of Economic Impact"},{value:"journal-of-egyptian-history",label:"Journal of Egyptian History"},{value:"journal-of-elections-public-opinion-and-parties",label:"Journal of Elections, Public Opinion & Parties"},{value:"journal-of-endodontics",label:"Journal of Endodontics"},{value:"journal-of-environmental-science-and-health-part-b",label:"Journal of Environmental Science and Health, Part B"},{value:"journal-of-ethnobiology",label:"Journal of Ethnobiology"},{value:"journal-of-european-public-policy",label:"Journal of European Public Policy"},{value:"journal-of-evolution-and-health",label:"Journal of Evolution and Health"},{value:"journal-of-evolutionary-biology",label:"Journal of Evolutionary Biology"},{value:"journal-of-experimental-botany",label:"Journal of Experimental Botany"},{value:"journal-of-field-ornithology",label:"Journal of Field Ornithology"},{value:"journal-of-finance",label:"Journal of Finance"},{value:"journal-of-financial-and-quantitative-analysis",label:"Journal of Financial and Quantitative Analysis"},{value:"journal-of-fish-biology",label:"Journal of Fish Biology"},{value:"journal-of-food-protection",label:"Journal of Food Protection"},{value:"journal-of-foraminiferal-research",label:"Journal of Foraminiferal Research"},{value:"journal-of-forensic-sciences",label:"Journal of Forensic Sciences"},{value:"journal-of-frailty-and-aging",label:"Journal of Frailty & Aging"},{value:"journal-of-geriatric-psychiatry-and-neurology",label:"Journal of Geriatric Psychiatry and Neurology"},{value:"journal-of-glaciology",label:"Journal of Glaciology"},{value:"journal-of-global-health",label:"Journal of Global Health"},{value:"journal-of-health-care-for-the-poor-and-underserved",label:"Journal of Health Care for the Poor and Underserved"},{value:"journal-of-hearing-science",label:"Journal of Hearing Science"},{value:"journal-of-historical-linguistics",label:"Journal of Historical Linguistics"},{value:"journal-of-human-evolution",label:"Journal of Human Evolution"},{value:"journal-of-human-rights",label:"Journal of Human Rights"},{value:"journal-of-hypertension",label:"Journal of Hypertension"},{value:"journal-of-industrial-and-engineering-chemistry",label:"Journal of Industrial and Engineering Chemistry"},{value:"journal-of-industrial-ecology",label:"Journal of Industrial Ecology"},{value:"journal-of-infection",label:"Journal of Infection"},{value:"journal-of-infectious-diseases",label:"Journal of Infectious Diseases"},{value:"journal-of-information-technology",label:"Journal of Information Technology"},{value:"journal-of-institutional-and-theoretical-economics",label:"Journal of Institutional and Theoretical Economics"},{value:"journal-of-instrumentation",label:"Journal of Instrumentation"},{value:"journal-of-integrated-omics",label:"Journal of Integrated OMICS"},{value:"journal-of-interactive-marketing",label:"Journal of Interactive Marketing"},{value:"journal-of-intercultural-studies",label:"Journal of Intercultural Studies"},{value:"journal-of-internal-medicine",label:"Journal of Internal Medicine"},{value:"journal-of-international-business-studies",label:"Journal of International Business Studies"},{value:"journal-of-international-economic-law",label:"Journal of International Economic Law"},{value:"journal-of-international-peacekeeping",label:"Journal of International Peacekeeping"},{value:"journal-of-international-relations-and-development",label:"Journal of International Relations and Development"},{value:"journal-of-investigative-dermatology",label:"Journal of Investigative Dermatology"},{value:"journal-of-jewish-studies",label:"Journal of Jewish Studies"},{value:"journal-of-korean-neurosurgical-society",label:"Journal of Korean Neurosurgical Society"},{value:"journal-of-leukocyte-biology",label:"Journal of Leukocyte Biology"},{value:"journal-of-limnology",label:"Journal of Limnology"},{value:"journal-of-linguistics",label:"Journal of Linguistics"},{value:"journal-of-lipid-research",label:"Journal of Lipid Research"},{value:"journal-of-magnetic-resonance-imaging",label:"Journal Of Magnetic Resonance Imaging"},{value:"journal-of-mammalogy",label:"Journal of Mammalogy"},{value:"journal-of-management-information-systems",label:"Journal of Management Information Systems"},{value:"journal-of-management-studies",label:"Journal of Management Studies"},{value:"journal-of-management",label:"Journal of Management"},{value:"journal-of-materials-research",label:"Journal of Materials Research"},{value:"journal-of-mechanical-science-and-technology",label:"Journal of Mechanical Science and Technology"},{value:"journal-of-medical-genetics",label:"Journal of Medical Genetics"},{value:"journal-of-medical-internet-research",label:"Journal of Medical Internet Research"},{value:"journal-of-microbiology-and-biotechnology",label:"Journal of Microbiology and Biotechnology"},{value:"journal-of-microbiology",label:"Journal of Microbiology"},{value:"journal-of-minimally-invasive-gynecology",label:"Journal of Minimally Invasive Gynecology"},{value:"journal-of-molecular-cell-biology",label:"Journal of Molecular Cell Biology"},{value:"journal-of-molecular-endocrinology",label:"Journal of Molecular Endocrinology"},{value:"journal-of-molecular-recognition",label:"Journal of Molecular Recognition"},{value:"journal-of-molecular-signaling",label:"Journal of Molecular Signaling"},{value:"journal-of-move-and-therapeutic-science",label:"Journal of Move and Therapeutic Science"},{value:"journal-of-musculoskeletal-research",label:"Journal of Musculoskeletal Research"},{value:"journal-of-music-technology-and-education",label:"Journal of Music Technology and Education"},{value:"journal-of-nanoscience-and-nanotechnology",label:"Journal of Nanoscience and Nanotechnology"},{value:"journal-of-natural-history",label:"Journal of Natural History"},{value:"journal-of-neolithic-archaeology",label:"Journal of Neolithic Archaeology"},{value:"journal-of-neurochemistry",label:"Journal of Neurochemistry"},{value:"journal-of-neuroendocrinology",label:"Journal of Neuroendocrinology"},{value:"journal-of-neurological-disorders",label:"Journal of Neurological Disorders"},{value:"journal-of-neurophysiology",label:"Journal of Neurophysiology"},{value:"journal-of-neuroscience-and-neuroengineering",label:"Journal of Neuroscience and Neuroengineering"},{value:"journal-of-new-zealand-grasslands",label:"Journal of New Zealand Grasslands"},{value:"journal-of-nutrition",label:"Journal of Nutrition"},{value:"journal-of-oil-palm-research",label:"Journal of Oil Palm Research"},{value:"journal-of-open-research-software",label:"Journal of Open Research Software"},{value:"journal-of-oral-and-maxillofacial-surgery",label:"Journal of Oral and Maxillofacial Surgery"},{value:"journal-of-orthopaedic-research",label:"Journal of Orthopaedic Research"},{value:"journal-of-orthopaedic-trauma",label:"Journal of Orthopaedic Trauma"},{value:"journal-of-orthopaedics-trauma-and-rehabilitation",label:"Journal of Orthopaedics, Trauma and Rehabilitation"},{value:"journal-of-paleontology",label:"Journal of Paleontology"},{value:"journal-of-peace-research",label:"Journal of Peace Research"},{value:"journal-of-pediatric-gastroenterology-and-nutrition",label:"Journal of Pediatric Gastroenterology and Nutrition"},{value:"journal-of-peptide-science",label:"Journal of Peptide Science"},{value:"journal-of-perinatal-medicine",label:"Journal of Perinatal Medicine"},{value:"journal-of-periodontal-research",label:"Journal of Periodontal Research"},{value:"journal-of-petrology",label:"Journal of Petrology"},{value:"journal-of-pharmacy-and-pharmacology",label:"Journal of Pharmacy and Pharmacology"},{value:"journal-of-phycology",label:"Journal of Phycology"},{value:"journal-of-physical-therapy-science",label:"Journal of Physical Therapy Science"},{value:"journal-of-plankton-research",label:"Journal of Plankton Research"},{value:"journal-of-plant-ecology",label:"Journal of Plant Ecology"},{value:"journal-of-plant-nutrition-and-soil-science",label:"Journal of Plant Nutrition and Soil Science"},{value:"journal-of-plant-protection-research",label:"Journal of Plant Protection Research"},{value:"journal-of-political-ideologies",label:"Journal of Political Ideologies"},{value:"journal-of-political-philosophy",label:"Journal of Political Philosophy"},{value:"journal-of-pollination-ecology",label:"Journal of Pollination Ecology"},{value:"journal-of-polymer-science-part-a-polymer-chemistry",label:"Journal of Polymer Science Part A: Polymer Chemistry"},{value:"journal-of-porphyrins-and-phthalocyanines",label:"Journal of Porphyrins and Phthalocyanines"},{value:"journal-of-product-innovation-management",label:"Journal of Product Innovation Management"},{value:"journal-of-psychiatric-and-mental-health-nursing",label:"Journal of Psychiatric and Mental Health Nursing"},{value:"journal-of-psychiatry-and-neuroscience",label:"Journal of Psychiatry & Neuroscience"},{value:"journal-of-raman-spectroscopy",label:"Journal of Raman Spectroscopy"},{value:"journal-of-reconstructive-microsurgery",label:"Journal of Reconstructive Microsurgery"},{value:"journal-of-refugee-studies",label:"Journal of Refugee Studies"},{value:"journal-of-retailing",label:"Journal of Retailing"},{value:"journal-of-rheumatology",label:"Journal of Rheumatology"},{value:"journal-of-roman-archaeology-a",label:"Journal of Roman Archaeology (A)"},{value:"journal-of-roman-archaeology-b",label:"Journal of Roman Archaeology (B)"},{value:"journal-of-science-and-medicine-in-sport",label:"Journal of Science and Medicine in Sport"},{value:"journal-of-separation-science",label:"Journal of Separation Science"},{value:"journal-of-shoulder-and-elbow-surgery",label:"Journal of Shoulder and Elbow Surgery"},{value:"journal-of-simulation",label:"Journal of Simulation"},{value:"journal-of-sleep-research",label:"Journal of Sleep Research"},{value:"journal-of-small-animal-practice",label:"Journal of Small Animal Practice"},{value:"journal-of-small-business-management",label:"Journal of Small Business Management"},{value:"journal-of-social-archaeology",label:"Journal of Social Archaeology"},{value:"journal-of-social-philosophy",label:"Journal of Social Philosophy"},{value:"journal-of-soil-and-water-conservation",label:"Journal of Soil and Water Conservation"},{value:"journal-of-soil-science-and-plant-nutrition",label:"Journal of Soil Science and Plant Nutrition"},{value:"journal-of-sport-and-health-science",label:"Journal of Sport and Health Science"},{value:"journal-of-sports-science-and-medicine",label:"Journal of Sports Science & Medicine"},{value:"journal-of-strength-and-conditioning-research",label:"Journal of Strength and Conditioning Research"},{value:"journal-of-stroke",label:"Journal of Stroke"},{value:"journal-of-structural-geology",label:"Journal of Structural Geology"},{value:"journal-of-studies-on-alcohol-and-drugs",label:"Journal of Studies on Alcohol and Drugs"},{value:"journal-of-surgery-and-medicine",label:"Journal of Surgery and Medicine"},{value:"journal-of-surgical-oncology",label:"Journal of Surgical Oncology"},{value:"journal-of-systematic-palaeontology",label:"Journal of Systematic Palaeontology"},{value:"journal-of-the-air-and-waste-management-association",label:"Journal of the Air & Waste Management Association"},{value:"journal-of-the-american-academy-of-audiology",label:"Journal of the American Academy of Audiology"},{value:"journal-of-the-american-academy-of-orthopaedic-surgeons",label:"Journal of the American Academy of Orthopaedic Surgeons"},{value:"journal-of-the-american-animal-hospital-association",label:"Journal of the American Animal Hospital Association"},{value:"journal-of-the-american-association-of-laboratory-animal-science",label:"Journal of the American Association of Laboratory Animal Science"},{value:"journal-of-the-american-ceramic-society",label:"Journal of the American Ceramic Society"},{value:"journal-of-the-american-college-of-cardiology",label:"Journal of the American College of Cardiology"},{value:"journal-of-the-american-college-of-surgeons",label:"Journal of the American College of Surgeons"},{value:"journal-of-the-american-heart-association",label:"Journal of the American Heart Association"},{value:"journal-of-the-american-society-of-brewing-chemists",label:"Journal of the American Society of Brewing Chemists"},{value:"journal-of-the-american-society-of-nephrology",label:"Journal of the American Society of Nephrology"},{value:"journal-of-the-american-water-resources-association",label:"Journal of the American Water Resources Association"},{value:"journal-of-the-association-for-information-systems",label:"Journal of the Association for Information Systems"},{value:"journal-of-the-association-of-environmental-and-resource-economists",label:"Journal of the Association of Environmental and Resource Economists"},{value:"journal-of-the-botanical-research-institute-of-texas",label:"Journal of the Botanical Research Institute of Texas"},{value:"journal-of-the-brazilian-chemical-society",label:"Journal of the Brazilian Chemical Society"},{value:"journal-of-the-electrochemical-society",label:"Journal of The Electrochemical Society"},{value:"journal-of-the-european-academy-of-dermatology-and-venereology",label:"Journal of the European Academy of Dermatology and Venereology"},{value:"journal-of-the-history-of-collections",label:"Journal of the History of Collections"},{value:"journal-of-the-indian-law-institute",label:"Journal of the Indian Law Institute"},{value:"journal-of-the-korean-society-of-civil-engineers",label:"Journal of the Korean Society of Civil Engineers"},{value:"journal-of-the-marine-biological-association-of-the-united-kingdom",label:"Journal of the Marine Biological Association of the United Kingdom"},{value:"journal-of-the-royal-anthropological-institute",label:"Journal of the Royal Anthropological Institute"},{value:"journal-of-the-royal-society-of-western-australia",label:"Journal of the Royal Society of Western Australia"},{value:"journal-of-the-royal-statistical-society",label:"Journal of the Royal Statistical Society"},{value:"journal-of-the-science-of-food-and-agriculture",label:"Journal of the Science of Food and Agriculture"},{value:"journal-of-the-serbian-chemical-society",label:"Journal of the Serbian Chemical Society"},{value:"journal-of-the-warburg-and-courtauld-institutes",label:"Journal of the Warburg and Courtauld Institutes"},{value:"journal-of-thermal-spray-technology",label:"Journal of Thermal Spray Technology"},{value:"journal-of-threatened-taxa",label:"Journal of Threatened Taxa"},{value:"journal-of-thrombosis-and-haemostasis",label:"Journal of Thrombosis and Haemostasis"},{value:"journal-of-tropical-ecology",label:"Journal of Tropical Ecology"},{value:"journal-of-tropical-life-science",label:"Journal of Tropical Life Science"},{value:"journal-of-universal-computer-science",label:"Journal of Universal Computer Science"},{value:"journal-of-urban-and-environmental-engineering",label:"Journal of Urban and Environmental Engineering"},{value:"journal-of-urban-technology",label:"Journal of Urban Technology"},{value:"journal-of-value-inquiry",label:"The Journal of Value Inquiry"},{value:"journal-of-vegetation-science",label:"Journal of Vegetation Science"},{value:"journal-of-vertebrate-biology",label:"Journal of Vertebrate Biology"},{value:"journal-of-vertebrate-paleontology",label:"Journal of Vertebrate Paleontology"},{value:"journal-of-vestibular-research",label:"Journal of Vestibular Research"},{value:"journal-of-veterinary-diagnostic-investigation",label:"Journal of Veterinary Diagnostic Investigation"},{value:"journal-of-visualized-experiments",label:"Journal of Visualized Experiments"},{value:"journal-of-water-sanitation-and-hygiene-for-development",label:"Journal of Water Sanitation and Hygiene for Development"},{value:"journal-of-wildlife-diseases",label:"Journal of Wildlife Diseases"},{value:"journal-of-zoo-and-wildlife-medicine",label:"Journal of Zoo and Wildlife Medicine"},{value:"journal-of-zoo-biology",label:"Journal of Zoo Biology"},{value:"journal-of-zoology",label:"Journal of Zoology"},{value:"journal-on-efficiency-and-responsibility-in-education-and-science",label:"Journal on Efficiency and Responsibility in Education and Science"},{value:"journalistica",label:"Journalistica (Dansk)"},{value:"jurisprudence",label:"Jurisprudence (\u010Ce\u0161tina)"},{value:"juristische-schulung",label:"Juristische Schulung (Deutsch)"},{value:"juristische-zitierweise-offentliches-recht",label:"Juristische Zitierweise - \xD6ffentliches Recht (Deutsch)"},{value:"juristische-zitierweise-schweizer",label:"Juristische Zitierweise Schweizer (Ryser B\xFCschi et al.) (Deutsch - Schweiz)"},{value:"juristische-zitierweise",label:"Juristische Zitierweise (St\xFCber) (Deutsch)"},{value:"jurnal-ilmu-dan-teknologi-hasil-ternak",label:"Jurnal Ilmu dan Teknologi Hasil Ternak"},{value:"jurnal-pangan-dan-agroindustri",label:"Jurnal Pangan dan Agroindustri (Bahasa Indonesia)"},{value:"jurnal-sains-farmasi-dan-klinis",label:"Jurnal Sains Farmasi & Klinis"},{value:"jyvaskylan-yliopisto-kemian-laitos",label:"Jyv\xE4skyl\xE4n yliopisto - Kemian laitos (Suomi)"},{value:"karabuk-university-graduate-school-of-natural-and-applied-sciences",label:"Karabuk University - Graduate School of Natural and Applied Sciences"},{value:"karger-journals-author-date",label:"Karger journals (author-date)"},{value:"karger-journals",label:"Karger journals"},{value:"karlstad-universitet-harvard",label:"Karlstad Universitet - Harvard (Svenska)"},{value:"karstenia",label:"Karstenia"},{value:"keel-ja-kirjandus",label:"Keel ja Kirjandus (Eesti keel)"},{value:"kidney-research-and-clinical-practice",label:"Kidney Research and Clinical Practice"},{value:"kindheit-und-entwicklung",label:"Kindheit und Entwicklung"},{value:"kit-karlsruher-institut-fur-technologie-germanistik-ndl-neuere-deutsche-literaturwissenschaft",label:"KIT Karlsruher Institut f\xFCr Technologie Germanistik NDL Neuere Deutsche Literaturwissenschaft (German)"},{value:"klinische-padiatrie",label:"Klinische P\xE4diatrie"},{value:"knee-surgery-and-related-research",label:"Knee Surgery & Related Research"},{value:"knee-surgery-sports-traumatology-arthroscopy",label:"Knee Surgery, Sports Traumatology, Arthroscopy"},{value:"knowledge-and-management-of-aquatic-ecosystems",label:"Knowledge & Management of Aquatic Ecosystems"},{value:"kolner-zeitschrift-fur-soziologie-und-sozialpsychologie",label:"K\xF6lner Zeitschrift f\xFCr Soziologie und Sozialpsychologie (Deutsch)"},{value:"kommunikation-und-recht",label:"Kommunikation und Recht (Deutsch)"},{value:"kona-powder-and-particle-journal",label:"KONA Powder and Particle Journal"},{value:"korean-journal-of-anesthesiology",label:"Korean Journal of Anesthesiology"},{value:"korean-journal-of-radiology",label:"Korean Journal of Radiology"},{value:"kritische-ausgabe",label:"Kritische Ausgabe (Deutsch)"},{value:"ksce-journal-of-civil-engineering",label:"KSCE Journal of Civil Engineering"},{value:"kth-royal-institute-of-technology-school-of-computer-science-and-communication-sv",label:"KTH Royal Institute of Technology - School of Computer Science and Communication (Svenska)"},{value:"kth-royal-institute-of-technology-school-of-computer-science-and-communication",label:"KTH Royal Institute of Technology - School of Computer Science and Communication"},{value:"kunstakademie-munster",label:"Kunstakademie M\xFCnster (Deutsch)"},{value:"l-homme",label:"L'homme \u2013 Revue fran\xE7aise d'anthropologie"},{value:"la-revue-des-sciences-de-gestion",label:"La Revue des Sciences de Gestion (Fran\xE7ais)"},{value:"la-trobe-university-apa",label:"La Trobe University - APA 6th edition"},{value:"la-trobe-university-harvard",label:"La Trobe University - Harvard"},{value:"laboratory-animal-science-professional",label:"Laboratory Animal Science Professional"},{value:"lancaster-university-harvard",label:"Lancaster University - Harvard"},{value:"land-degradation-and-development",label:"Land Degradation & Development"},{value:"landes-bioscience-journals",label:"Landes Bioscience Journals"},{value:"language-in-society",label:"Language in Society"},{value:"language",label:"Language"},{value:"lannee-sociologique",label:"L\u2019Ann\xE9e sociologique (Fran\xE7ais)"},{value:"laser-and-photonics-reviews",label:"Laser & Photonics Reviews"},{value:"latin-american-perspectives",label:"Latin American Perspectives"},{value:"latin-american-research-review",label:"Latin American Research Review"},{value:"lauterbornia",label:"Lauterbornia - Internationale Zeitschrift f\xFCr Faunistik und Floristik des S\xFC\xDFwassers (Deutsch)"},{value:"law-and-society-review",label:"Law & Society Review"},{value:"law-citation-manual",label:"Law Citation Manual (\u4E2D\u6CD5\u5B66\u6CE8\u5F15\u624B\u518C, \u4E2D\u6587)"},{value:"law-technology-and-humans",label:"Law, Technology and Humans"},{value:"lcgc",label:"LCGC"},{value:"le-mouvement-social",label:"Le Mouvement Social (Fran\xE7ais)"},{value:"le-tapuscrit-author-date",label:"Le tapuscrit (\xC9cole des hautes \xE9tudes en sciences sociales) (author-date, Fran\xE7ais)"},{value:"le-tapuscrit-note",label:"Le tapuscrit (\xC9cole des hautes \xE9tudes en sciences sociales) (note, Fran\xE7ais)"},{value:"leiden-journal-of-international-law",label:"Leiden Journal of International Law"},{value:"leidraad-voor-juridische-auteurs",label:"Leidraad voor juridische auteurs 2019 (Nederlands)"},{value:"leonardo",label:"Leonardo"},{value:"les-cahiers-du-journalisme",label:"Les Cahiers du journalisme (Fran\xE7ais)"},{value:"les-journees-de-la-recherche-avicole",label:"Les Journ\xE9es de la Recherche Avicole (Fran\xE7ais)"},{value:"les-journees-de-la-recherche-porcine",label:"Les Journ\xE9es de la Recherche Porcine (Fran\xE7ais)"},{value:"les-nouvelles-de-l-archeologie",label:"Les nouvelles de l'arch\xE9ologie (Fran\xE7ais)"},{value:"lethaia",label:"Lethaia"},{value:"letters-in-applied-microbiology",label:"Letters in Applied Microbiology"},{value:"lettres-et-sciences-humaines-fr",label:"Lettres et Sciences Humaines (biblio et notes, Fran\xE7ais)"},{value:"leviathan",label:"Leviathan (Deutsch)"},{value:"lien-social-et-politiques",label:"Lien social et Politiques (Fran\xE7ais)"},{value:"limnetica",label:"Limnetica"},{value:"limnology-and-oceanography",label:"Limnology and Oceanography"},{value:"liver-international",label:"Liver International"},{value:"liverpool-john-moores-university-harvard",label:"Liverpool John Moores University - Harvard"},{value:"lluelles-no-ibid",label:"Guide des r\xE9f\xE9rences pour la r\xE9daction juridique 7e \xE9dition (Notes compl\xE8tes) (Guide Lluelles, no Ibid., Fran\xE7ais - Canada)"},{value:"lluelles",label:"Guide des r\xE9f\xE9rences pour la r\xE9daction juridique 7e \xE9dition (Guide Lluelles, Fran\xE7ais - Canada)"},{value:"london-metropolitan-university-harvard",label:"London Metropolitan University - Harvard"},{value:"london-review-of-international-law",label:"London Review of International Law"},{value:"london-south-bank-university-numeric",label:"London South Bank University (numeric)"},{value:"lund-university-school-of-economics-and-management",label:"Lund University School of Economics and Management"},{value:"macromolecular-reaction-engineering",label:"Macromolecular Reaction Engineering"},{value:"magnetic-resonance-in-medical-sciences",label:"Magnetic Resonance in Medical Sciences"},{value:"magnetic-resonance-in-medicine",label:"Magnetic Resonance in Medicine"},{value:"magnetic-resonance-materials-in-physics-biology-and-medicine",label:"Magnetic Resonance Materials in Physics, Biology and Medicine"},{value:"maison-de-l-orient-et-de-la-mediterranee-en",label:"Maison de l'Orient et de la M\xE9diterran\xE9e (English)"},{value:"maison-de-l-orient-et-de-la-mediterranee",label:"Maison de l'Orient et de la M\xE9diterran\xE9e (Fran\xE7ais)"},{value:"malaysian-orthopaedic-journal",label:"Malaysian Orthopaedic Journal"},{value:"mammal-review",label:"Mammal Review"},{value:"mammalia",label:"Mammalia"},{value:"mammalogy-notes",label:"Mammalogy Notes"},{value:"management-et-avenir",label:"Management & Avenir (Fran\xE7ais)"},{value:"management-international",label:"Management international"},{value:"management-of-biological-invasions",label:"Management of Biological Invasions"},{value:"manchester-university-press-author-date",label:"Manchester University Press monographs (author-date)"},{value:"manchester-university-press",label:"Manchester University Press monographs (note)"},{value:"marine-biology",label:"Marine Biology"},{value:"marine-mammal-science",label:"Marine Mammal Science"},{value:"marine-ornithology",label:"Marine Ornithology"},{value:"marine-turtle-newsletter",label:"Marine Turtle Newsletter"},{value:"marmara-universitesi-turkiyat-arastirmalari-enstitusu",label:"Marmara \xDCniversitesi - T\xFCrkiyat Ara\u015Ft\u0131rmalar\u0131 Enstit\xFCs\xFC (T\xFCrk\xE7e)"},{value:"mary-ann-liebert-harvard",label:"Mary Ann Liebert - Harvard"},{value:"mary-ann-liebert-vancouver",label:"Mary Ann Liebert - Vancouver"},{value:"masarykova-univerzita-pravnicka-fakulta",label:"Masarykova univerzita - Pr\xE1vnick\xE1 fakulta"},{value:"mastozoologia-neotropical",label:"Mastozoologia Neotropical"},{value:"materials-express",label:"Materials Express"},{value:"mathematical-geosciences",label:"Mathematical Geosciences"},{value:"mathematics-and-computers-in-simulation",label:"Mathematics and Computers in Simulation"},{value:"mcdonald-institute-monographs",label:"McDonald Institute Monographs"},{value:"mcgill-en",label:"Canadian Guide to Uniform Legal Citation 9th edition (McGill Guide)"},{value:"mcgill-fr",label:"Manuel canadien de la r\xE9f\xE9rence juridique 9e \xE9dition (Guide McGill, Fran\xE7ais - Canada)"},{value:"medecine-intensive-reanimation",label:"M\xE9decine Intensive R\xE9animation"},{value:"medecine-sciences",label:"m\xE9decine/sciences"},{value:"media-culture-and-society",label:"Media, Culture & Society"},{value:"mediaeval-studies",label:"Mediaeval Studies"},{value:"medical-dosimetry",label:"Medical Dosimetry"},{value:"medical-history",label:"Medical History"},{value:"medicina-clinica",label:"Medicina Cl\xEDnica (Espa\xF1ol)"},{value:"medicina-delle-dipendenze-italian-journal-of-the-addictions",label:"Medicina delle Dipendenze - Italian Journal of the Addictions (Italiano)"},{value:"medicinal-research-reviews",label:"Medicinal Research Reviews"},{value:"medicine-and-science-in-sports-and-exercise",label:"Medicine & Science in Sports & Exercise"},{value:"medicine-publishing",label:"Medicine Publishing"},{value:"medicinski-razgledi",label:"Medicinski razgledi"},{value:"medicinskiy-akademicheskiy-zhurnal",label:"Medicinskiy Akademicheskiy Zhurnal"},{value:"mediterranean-journal-of-chemistry",label:"Mediterranean Journal of Chemistry"},{value:"mediterranean-journal-of-infection-microbes-and-antimicrobials",label:"Mediterranean Journal of Infection, Microbes and Antimicrobials"},{value:"mediterranean-politics",label:"Mediterranean Politics"},{value:"melbourne-school-of-theology",label:"Melbourne School of Theology"},{value:"memorias-do-instituto-oswaldo-cruz",label:"Mem\xF3rias do Instituto Oswaldo Cruz"},{value:"mercator-institut-fur-sprachforderung-und-deutsch-als-zweitsprache",label:"Mercator-Institut f\xFCr Sprachf\xF6rderung und Deutsch als Zweitsprache (Deutsch)"},{value:"mercatus-center",label:"Mercatus Center"},{value:"metallurgical-and-materials-transactions-a",label:"Metallurgical and Materials Transactions A"},{value:"metallurgical-and-materials-transactions",label:"Metallurgical and Materials Transactions"},{value:"meteoritics-and-planetary-science",label:"Meteoritics & Planetary Science"},{value:"meteorological-applications",label:"Meteorological Applications"},{value:"method-and-theory-in-the-study-of-religion",label:"Method & Theory in the Study of Religion"},{value:"methods-of-information-in-medicine",label:"Methods of Information in Medicine"},{value:"metropol-verlag",label:"Metropol Verlag (Deutsch)"},{value:"metropolia-university-of-applied-sciences-harvard",label:"Metropolia Ammattikorkeakoulu - Harvard (Suomi)"},{value:"metropolitiques",label:"M\xE9tropolitiques (Fran\xE7ais)"},{value:"microbial-cell",label:"Microbial Cell"},{value:"microbiology-society",label:"Microbiology Society"},{value:"microcirculation",label:"Microcirculation"},{value:"microscopy-and-microanalysis",label:"Microscopy and Microanalysis"},{value:"middle-east-critique",label:"Middle East Critique"},{value:"midwestern-baptist-theological-seminary",label:"Midwestern Baptist Theological Seminary"},{value:"mimbar-hukum",label:"Mimbar Hukum"},{value:"mimesis-edizioni",label:"Mimesis Edizioni (Italiano)"},{value:"mind-and-language",label:"Mind & Language"},{value:"mineralogical-magazine",label:"Mineralogical Magazine"},{value:"mis-quarterly",label:"MIS Quarterly"},{value:"modern-chinese-literature-and-culture",label:"Modern Chinese Literature and Culture"},{value:"modern-humanities-research-association-author-date",label:"Modern Humanities Research Association 3rd edition (author-date)"},{value:"modern-humanities-research-association",label:"Modern Humanities Research Association 3rd edition (note with bibliography)"},{value:"modern-language-association-6th-edition-note",label:"Modern Language Association 6th edition (note)"},{value:"modern-language-association-7th-edition-underline",label:"Modern Language Association 7th edition (underline)"},{value:"modern-language-association-7th-edition-with-url",label:"Modern Language Association 7th edition (with URL)"},{value:"modern-language-association-7th-edition",label:"Modern Language Association 7th edition"},{value:"modern-language-association-8th-edition",label:"Modern Language Association 8th edition"},{value:"modern-language-association",label:"Modern Language Association 9th edition"},{value:"modern-pathology",label:"Modern Pathology"},{value:"modern-phytomorphology",label:"Modern Phytomorphology"},{value:"mohr-siebeck-recht",label:"Mohr Siebeck - Recht (Deutsch - \xD6sterreich)"},{value:"molecular-and-cellular-proteomics",label:"Molecular & Cellular Proteomics"},{value:"molecular-biology-and-evolution",label:"Molecular Biology and Evolution"},{value:"molecular-biology-of-the-cell",label:"Molecular Biology of the Cell"},{value:"molecular-biology",label:"Molecular Biology"},{value:"molecular-metabolism",label:"Molecular Metabolism"},{value:"molecular-microbiology",label:"Molecular Microbiology"},{value:"molecular-nutrition-and-food-research",label:"Molecular Nutrition & Food Research"},{value:"molecular-oncology",label:"Molecular Oncology"},{value:"molecular-plant-microbe-interactions",label:"Molecular Plant-Microbe Interactions"},{value:"molecular-plant-pathology",label:"Molecular Plant Pathology"},{value:"molecular-plant",label:"Molecular Plant"},{value:"molecular-psychiatry-letters",label:"Molecular Psychiatry (letters to the editor)"},{value:"molecular-psychiatry",label:"Molecular Psychiatry"},{value:"monash-university-csiro",label:"Monash University - CSIRO"},{value:"monash-university-harvard",label:"Monash University - Harvard"},{value:"mondes-en-developpement",label:"Mondes en d\xE9veloppement (Fran\xE7ais)"},{value:"monographs-of-the-palaeontographical-society",label:"Monographs of the Palaeontographical Society"},{value:"moore-theological-college",label:"Moore Theological College"},{value:"moorlands-college",label:"Moorlands College"},{value:"mrs-bulletin",label:"MRS Bulletin"},{value:"multidisciplinary-digital-publishing-institute",label:"Multidisciplinary Digital Publishing Institute"},{value:"multilingual-matters",label:"Multilingual Matters"},{value:"multimed",label:"Multimed (Espa\xF1ol)"},{value:"multiple-sclerosis-journal",label:"Multiple Sclerosis Journal"},{value:"muscle-and-nerve",label:"Muscle & Nerve"},{value:"museum-national-dhistoire-naturelle",label:"Mus\xE9um national d'Histoire naturelle"},{value:"music-theory-spectrum",label:"Music Theory Spectrum"},{value:"mutagenesis",label:"Mutagenesis"},{value:"mycobiology",label:"Mycobiology"},{value:"mycologia",label:"Mycologia"},{value:"myrmecological-news",label:"Myrmecological News"},{value:"nano-biomedicine-and-engineering",label:"Nano Biomedicine and Engineering"},{value:"natbib-plainnat-author-date",label:"natbib - plainnat (author-date)"},{value:"national-archives-of-australia",label:"National Archives of Australia"},{value:"national-institute-of-health-research",label:"National Institute of Health Research"},{value:"national-institute-of-organisation-dynamics-australia-harvard",label:"National Institute of Organisation Dynamics Australia - Harvard"},{value:"national-institute-of-technology-karnataka",label:"National Institute of Technology Karnataka"},{value:"national-institute-of-technology-tiruchirappalli",label:"National Institute of Technology, Tiruchirappalli"},{value:"national-library-of-medicine-grant-proposals",label:"National Library of Medicine (grant proposals with PMCID/PMID)"},{value:"national-marine-fisheries-service-national-environmental-policy-act",label:"National Marine Fisheries Service - National Environmental Policy Act"},{value:"national-natural-science-foundation-of-china",label:"National Natural Science Foundation of China (\u4E2D\u6587)"},{value:"national-science-foundation-grant-proposals",label:"National Science Foundation (grant proposals)"},{value:"national-university-of-singapore-department-of-geography-harvard",label:"National University of Singapore - Department of Geography - Harvard"},{value:"nations-and-nationalism",label:"Nations and Nationalism"},{value:"natur-und-landschaft",label:"Natur und Landschaft (Deutsch)"},{value:"natura-croatica",label:"Natura Croatica"},{value:"nature-neuroscience-brief-communications",label:"Nature Neuroscience (brief communications)"},{value:"nature-no-et-al",label:'Nature (no "et al.")'},{value:"nature-no-superscript",label:"Nature (no superscript)"},{value:"nature-publishing-group-vancouver",label:"Nature Publishing Group - Vancouver"},{value:"nature",label:"Nature"},{value:"natures-sciences-societes",label:"Natures Sciences Soci\xE9t\xE9s"},{value:"nauplius",label:"Nauplius"},{value:"navigation",label:"Navigation"},{value:"nccr-mediality",label:"NCCR Mediality. Medienwandel - Medienwechsel - Medienwissen (Deutsch)"},{value:"necmettin-erbakan-universitesi-fen-ve-muhendislik-bilimleri-dergisi",label:"Necmettin Erbakan \xDCniversitesi Fen ve M\xFChendislik Bilimleri Dergisi (T\xFCrk\xE7e)"},{value:"nehet",label:"NeHeT (Fran\xE7ais)"},{value:"nejm-catalyst-innovations-in-care-delivery",label:"NEJM Catalyst Innovations in Care Delivery"},{value:"nephrology-dialysis-transplantation",label:"Nephrology Dialysis Transplantation"},{value:"netherlands-journal-of-geosciences-geologie-en-mijnbouw",label:"Netherlands Journal of Geosciences - Geologie en Mijnbouw"},{value:"neue-juristische-wochenschrift",label:"Neue Juristische Wochenschrift (Deutsch)"},{value:"neue-kriminalpolitik",label:"Neue Kriminalpolitik (Deutsch)"},{value:"neural-plasticity",label:"Neural Plasticity"},{value:"neuroendocrinology-letters",label:"Neuroendocrinology Letters"},{value:"neuroimaging-clinics-of-north-america",label:"Neuroimaging Clinics of North America"},{value:"neurologia-argentina",label:"Neurolog\xEDa Argentina (Espa\xF1ol)"},{value:"neurologia",label:"Neurolog\xEDa (Espa\xF1ol)"},{value:"neurology-india",label:"Neurology India"},{value:"neurology",label:"Neurology"},{value:"neuropsychopharmacology",label:"Neuropsychopharmacology"},{value:"neurorehabilitation-and-neural-repair",label:"Neurorehabilitation and Neural Repair"},{value:"neuroreport",label:"NeuroReport"},{value:"neurospine",label:"Neurospine"},{value:"neurosurgery-clinics-of-north-america",label:"Neurosurgery Clinics of North America"},{value:"new-harts-rules-the-oxford-style-guide",label:"New Hart's Rules: The Oxford Style Guide"},{value:"new-phytologist",label:"New Phytologist"},{value:"new-solutions",label:"New Solutions"},{value:"new-testament-studies",label:"New Testament Studies"},{value:"new-zealand-dental-journal",label:"New Zealand Dental Journal"},{value:"new-zealand-journal-of-forestry-science",label:"New Zealand Journal of Forestry Science"},{value:"new-zealand-journal-of-history",label:"New Zealand Journal of History"},{value:"new-zealand-plant-protection",label:"New Zealand Plant Protection"},{value:"new-zealand-veterinary-journal",label:"New Zealand Veterinary Journal"},{value:"nist-technical-publication-journal-of-research-of-nist",label:"NIST Technical Publications - Journal of Research of NIST"},{value:"nordic-pulp-and-paper-research-journal",label:"Nordic Pulp & Paper Research Journal"},{value:"norma-portuguesa-405",label:"Norma Portuguesa 405 (Portugu\xEAs)"},{value:"norois",label:"Norois (Fran\xE7ais)"},{value:"norsk-apa-manual-note",label:"Norsk APA-manual - APA 7th edition (note)"},{value:"norsk-apa-manual",label:"Norsk APA-manual - APA 7th edition (author-date)"},{value:"norsk-henvisningsstandard-for-rettsvitenskapelige-tekster",label:"Norsk henvisningsstandard for rettsvitenskapelige tekster (Norsk - Bokm\xE5l)"},{value:"northeastern-naturalist",label:"Northeastern Naturalist"},{value:"nottingham-trent-university-library-harvard",label:"Nottingham Trent University Library - Harvard"},{value:"nouvelles-perspectives-en-sciences-sociales",label:"Nouvelles perspectives en sciences sociales (Fran\xE7ais - Canada)"},{value:"novasinergia",label:"Novasinergia"},{value:"nowa-audiofonologia",label:"Nowa Audiofonologia (Polski)"},{value:"nuclear-receptor-signaling",label:"Nuclear Receptor Signaling"},{value:"nucleic-acids-research-web-server-issue",label:"Nucleic Acids Research - Web Server Issue"},{value:"nucleic-acids-research",label:"Nucleic Acids Research"},{value:"nutrition-research-reviews",label:"Nutrition Research Reviews"},{value:"obafemi-awolowo-university-faculty-of-technology",label:"Obafemi Awolowo University - Faculty of Technology"},{value:"obesity",label:"Obesity"},{value:"obstetrics-and-gynecology-science",label:"Obstetrics & Gynecology Science"},{value:"occupational-medicine",label:"Occupational Medicine"},{value:"ocean-and-coastal-research",label:"Ocean and Coastal Research"},{value:"oceanography",label:"Oceanography"},{value:"oecologia-australis",label:"Oecologia Australis"},{value:"offa",label:"Offa - Berichte und Mitteilungen zur Urgeschichte, Fr\xFChgeschichte und Mittelalterarch\xE4ologie"},{value:"oikos",label:"Oikos"},{value:"oil-shale",label:"Oil Shale"},{value:"oncoimmunology",label:"OncoImmunology"},{value:"oncotarget",label:"Oncotarget"},{value:"open-gender-journal",label:"Open Gender Journal"},{value:"open-window",label:"Open Window - Harvard"},{value:"operative-dentistry",label:"Operative Dentistry"},{value:"ophthalmic-genetics",label:"Ophthalmic Genetics"},{value:"ophthalmology-retina",label:"Ophthalmology Retina"},{value:"ophthalmology",label:"Ophthalmology"},{value:"optics-express",label:"Optics Express"},{value:"optics-letters",label:"Optics Letters"},{value:"opto-electronic-advances",label:"Opto-Electronic Advances"},{value:"optometry-and-vision-science",label:"Optometry & Vision Science"},{value:"opuscula",label:"Opuscula"},{value:"oral-diseases",label:"Oral Diseases"},{value:"organic-geochemistry",label:"Organic Geochemistry"},{value:"organised-sound",label:"Organised Sound"},{value:"organization-studies",label:"Organization Studies"},{value:"organization",label:"Organization"},{value:"organon",label:"Organon"},{value:"ornitologia-neotropical",label:"Ornitolog\xEDa Neotropical"},{value:"orthopedic-clinics-of-north-america",label:"Orthopedic Clinics of North America"},{value:"oryx",label:"Oryx"},{value:"oscola-no-ibid",label:"OSCOLA (Oxford University Standard for Citation of Legal Authorities) (no Ibid.)"},{value:"oscola",label:"OSCOLA (Oxford University Standard for Citation of Legal Authorities)"},{value:"osterreichische-zeitschrift-fur-politikwissenschaft",label:"\xD6sterreichische Zeitschrift f\xFCr Politikwissenschaft (Deutsch - \xD6sterreich)"},{value:"otto-von-guricke-universitat-magdeburg-medizinische-fakultat-numeric",label:"Otto-von-Guericke-Universit\xE4t Magdeburg - Medizinische Fakult\xE4t (numeric)"},{value:"owbarth-verlag",label:"O.W. Barth Verlag (Deutsch)"},{value:"oxford-art-journal",label:"Oxford Art Journal"},{value:"oxford-centre-for-mission-studies-harvard",label:"Oxford Centre for Mission Studies - Harvard"},{value:"oxford-studies-in-ancient-philosophy",label:"Oxford Studies in Ancient Philosophy"},{value:"oxford-studies-on-the-roman-economy",label:"Oxford Studies on the Roman Economy"},{value:"oxford-the-university-of-new-south-wales",label:"The University of New South Wales - Oxford"},{value:"oxford-university-press-humsoc",label:"Oxford University Press HUMSOC"},{value:"oxford-university-press-note",label:"Oxford University Press (note)"},{value:"oxford-university-press-scimed-author-date",label:"Oxford University Press SciMed (author-date)"},{value:"oxford-university-press-scimed-numeric",label:"Oxford University Press SciMed (numeric)"},{value:"oxidation-of-metals",label:"Oxidation of Metals"},{value:"pacific-conservation-biology",label:"Pacific Conservation Biology"},{value:"pacific-science",label:"Pacific Science"},{value:"padagogische-hochschule-bern-institut-vorschulstufe-und-primarstufe",label:"P\xE4dagogische Hochschule Bern - Institut Vorschulstufe und Primarstufe"},{value:"padagogische-hochschule-fachhochschule-nordwestschweiz",label:"P\xE4dagogische Hochschule Fachhochschule Nordwestschweiz (Deutsch - Schweiz)"},{value:"padagogische-hochschule-heidelberg",label:"P\xE4dagogische Hochschule Heidelberg (Deutsch)"},{value:"padagogische-hochschule-vorarlberg",label:"P\xE4dagogische Hochschule Vorarlberg (Deutsch)"},{value:"paediatric-and-perinatal-epidemiology",label:"Paediatric and Perinatal Epidemiology"},{value:"pain-medicine",label:"Pain Medicine"},{value:"pain",label:"PAIN"},{value:"pakistan-journal-of-agricultural-sciences",label:"Pakistan Journal of Agricultural Sciences"},{value:"pakistani-veterinary-journal",label:"Pakistan Veterinary Journal"},{value:"palaeodiversity",label:"Palaeodiversity"},{value:"palaeontographica-abteilung-b-palaeobotany-palaeophytology",label:"Palaeontographica Abteilung B: Palaeobotany - Palaeophytology"},{value:"palaeontologia-electronica",label:"Palaeontologia Electronica"},{value:"palaeontology",label:"Palaeontology"},{value:"palaeovertebrata",label:"Palaeovertebrata"},{value:"palaios",label:"Palaios"},{value:"paleobiology",label:"Paleobiology"},{value:"parasite",label:"Parasite"},{value:"parasitology",label:"Parasitology"},{value:"past-and-present",label:"Past & Present"},{value:"pediatric-allergy-and-immunology",label:"Pediatric Allergy and Immunology"},{value:"pediatric-anesthesia",label:"Pediatric Anesthesia"},{value:"pediatric-blood-and-cancer",label:"Pediatric Blood & Cancer"},{value:"pediatric-infectious-disease-journal",label:"Pediatric Infectious Disease Journal"},{value:"pediatric-physical-therapy",label:"Pediatric Physical Therapy"},{value:"pediatric-practice-and-research",label:"Pediatric Practice and Research"},{value:"pediatric-pulmonology",label:"Pediatric Pulmonology"},{value:"pediatric-research",label:"Pediatric Research"},{value:"pediatric-urology-case-reports",label:"Pediatric Urology Case Reports"},{value:"pedosphere",label:"Pedosphere"},{value:"peerj",label:"PeerJ"},{value:"pensoft-journals",label:"Pensoft Journals"},{value:"periodicum-biologorum",label:"Periodicum Biologorum"},{value:"periodontology-2000",label:"Periodontology 2000"},{value:"permafrost-and-periglacial-processes",label:"Permafrost and Periglacial Processes"},{value:"perspectives-on-sexual-and-reproductive-health",label:"Perspectives on Sexual and Reproductive Health"},{value:"pesquisa-agropecuaria-brasileira",label:"Pesquisa Agropecu\xE1ria Brasileira (Portugu\xEAs - Brasil)"},{value:"pest-management-science",label:"Pest Management Science"},{value:"petit-chicago-author-date",label:"Petit Chicago (author-date, Fran\xE7ais - Canada)"},{value:"pharmacoepidemiology-and-drug-safety",label:"Pharmacoepidemiology and Drug Safety"},{value:"philippika",label:"Philippika (Deutsch)"},{value:"philipps-universitat-marburg-note",label:"Philipps-Universit\xE4t Marburg - Erziehungswissenschaften (note, Deutsch)"},{value:"philosophia-scientiae",label:"Philosophia Scienti\xE6"},{value:"philosophiques",label:"Philosophiques (Fran\xE7ais)"},{value:"philosophy-and-public-affairs",label:"Philosophy & Public Affairs"},{value:"photochemistry-and-photobiology",label:"Photochemistry and Photobiology"},{value:"photosynthetica",label:"Photosynthetica"},{value:"phycological-research",label:"Phycological Research"},{value:"phyllomedusa",label:"Phyllomedusa"},{value:"physiologia-plantarum",label:"Physiologia Plantarum"},{value:"physiological-and-biochemical-zoology",label:"Physiological and Biochemical Zoology"},{value:"physiotherapy-theory-and-practice",label:"Physiotherapy Theory and Practice"},{value:"phytopathologia-mediterranea",label:"Phytopathologia Mediterranea"},{value:"phytotaxa",label:"Phytotaxa"},{value:"pisa-university-press",label:"Pisa University Press"},{value:"planning-practice-and-research",label:"Planning Practice & Research"},{value:"plant-and-cell-physiology",label:"Plant & Cell Physiology"},{value:"plant-biology",label:"Plant Biology"},{value:"plant-biotechnology-journal",label:"Plant Biotechnology Journal"},{value:"plant-cell-and-environment",label:"Plant, Cell & Environment"},{value:"plant-genetic-resources-characterization-and-utilization",label:"Plant Genetic Resources - Characterization and Utilization"},{value:"plant-pathology",label:"Plant Pathology"},{value:"plant-physiology",label:"Plant Physiology"},{value:"plant-species-biology",label:"Plant Species Biology"},{value:"plos",label:"Public Library of Science"},{value:"pnas",label:"Proceedings of the National Academy of Sciences of the United States of America"},{value:"podzemna-voda",label:"Podzemn\xE1 voda (Sloven\u010Dina)"},{value:"polar-research",label:"Polar Research"},{value:"polish-legal",label:"Polish Legal (Polski)"},{value:"politeknik-negeri-manado-jurnal-p3m",label:"Politeknik Negeri Manado - Jurnal Pusat Penelitian dan Pengabdian Kepada Masyarakat (Bahasa Indonesia)"},{value:"political-studies",label:"Political Studies"},{value:"politische-vierteljahresschrift",label:"Politische Vierteljahresschrift (Deutsch)"},{value:"politix",label:"Politix (Fran\xE7ais)"},{value:"polymer-reviews",label:"Polymer Reviews"},{value:"pontifical-athenaeum-regina-apostolorum",label:"Pontifical Athenaeum Regina Apostolorum"},{value:"pontifical-biblical-institute",label:"Pontifical Biblical Institute"},{value:"pontifical-gregorian-university",label:"Pontifical Gregorian University (Italiano)"},{value:"population-space-and-place",label:"Population, Space and Place"},{value:"population",label:"Population (Fran\xE7ais)"},{value:"postepy-higieny-i-medycyny-doswiadczalnej",label:"Post\u0119py Higieny i Medycyny Do\u015Bwiadczalnej (Polski)"},{value:"poultry-science",label:"Poultry Science"},{value:"pour-reussir-note",label:"Pour r\xE9ussir (note, Fran\xE7ais - Canada)"},{value:"pravnik",label:"Pr\xE1vn\xEDk (\u010Ce\u0161tina)"},{value:"praxis",label:"Praxis (Deutsch - Schweiz)"},{value:"prehistoires-mediterraneennes",label:"Pr\xE9histoires m\xE9diterran\xE9ennes"},{value:"prehospital-emergency-care",label:"Prehospital Emergency Care"},{value:"preslia",label:"Preslia - The Journal of the Czech Botanical Society"},{value:"presses-universitaires-de-paris-nanterre",label:"Presses universitaires de Paris Nanterre (note, Fran\xE7ais)"},{value:"presses-universitaires-de-rennes-archeologie-et-culture",label:"Presses Universitaires de Rennes - Arch\xE9ologie et Culture (Fran\xE7ais)"},{value:"presses-universitaires-de-rennes",label:"Presses Universitaires de Rennes (Fran\xE7ais)"},{value:"presses-universitaires-de-strasbourg-note",label:"Presses universitaires de Strasbourg (note, Fran\xE7ais)"},{value:"primary-care-clinics-in-office-practice",label:"Primary Care: Clinics in Office Practice"},{value:"proceedings-of-the-joint-international-grassland-and-international-rangeland-congress-2021",label:"Proceedings of the Joint International Grassland & International Rangeland Congress 2021"},{value:"proceedings-of-the-royal-society-b",label:"Proceedings of the Royal Society B"},{value:"processing-and-application-of-ceramics",label:"Processing and Application of Ceramics"},{value:"production-and-operations-management",label:"Production and Operations Management"},{value:"proinflow",label:"ProInflow (note, \u010Ce\u0161tina)"},{value:"protein-engineering-design-and-selection",label:"Protein Engineering Design and Selection"},{value:"protein-science",label:"Protein Science"},{value:"proteomics",label:"PROTEOMICS"},{value:"psychiatric-clinics-of-north-america",label:"Psychiatric Clinics of North America"},{value:"psychiatric-services",label:"Psychiatric Services"},{value:"psychiatry-and-clinical-neurosciences",label:"Psychiatry and Clinical Neurosciences"},{value:"psychological-medicine",label:"Psychological Medicine"},{value:"psychosomatic-medicine",label:"Psychosomatic Medicine"},{value:"psychosomatics",label:"Psychosomatics"},{value:"public-health-nutrition",label:"Public Health Nutrition"},{value:"pure-and-applied-geophysics",label:"Pure and Applied Geophysics"},{value:"qeios",label:"Qeios"},{value:"quaderni-degli-avogadro-colloquia",label:"Quaderni degli Avogadro Colloquia"},{value:"quaderni-materialisti",label:"Quaderni Materialisti (Italiano)"},{value:"quaderni",label:"Quaderni (Italiano)"},{value:"quaternaire",label:"Quaternaire (Fran\xE7ais)"},{value:"quaternary-international",label:"Quaternary International"},{value:"queen-margaret-university-harvard",label:"Queen Margaret University - Harvard"},{value:"r-and-d-management",label:"R&D Management"},{value:"radiation-protection-dosimetry",label:"Radiation Protection Dosimetry"},{value:"radiochimica-acta",label:"Radiochimica Acta"},{value:"radiographics",label:"RadioGraphics"},{value:"radiography",label:"Radiography"},{value:"radiologic-clinics-of-north-america",label:"Radiologic Clinics of North America"},{value:"radiology",label:"Radiology"},{value:"radiopaedia",label:"Radiopaedia.org"},{value:"raffles-bulletin-of-zoology",label:"Raffles Bulletin of Zoology"},{value:"rassegna-degli-archivi-di-stato",label:"Rassegna degli Archivi di Stato (citazioni estese, italiano)"},{value:"recent-patents-on-drug-delivery-and-formulation",label:"Recent Patents on Drug Delivery & Formulation"},{value:"recherches-en-sciences-de-gestion",label:"Recherches en Sciences de Gestion (Fran\xE7ais)"},{value:"refugee-survey-quarterly",label:"Refugee Survey Quarterly"},{value:"register-studies",label:"Register Studies"},{value:"religion-in-the-roman-empire",label:"Religion in the Roman Empire"},{value:"renewable-agriculture-and-food-systems",label:"Renewable Agriculture and Food Systems"},{value:"reports-of-practical-oncology-and-radiotherapy",label:"Reports of Practical Oncology and Radiotherapy"},{value:"representation",label:"Representation"},{value:"reproduction-fertility-and-development",label:"Reproduction, Fertility and Development"},{value:"reproduction",label:"Reproduction"},{value:"research-and-education-promotion-association",label:"Research and Education Promotion Association"},{value:"research-in-plant-disease",label:"Research in Plant Disease"},{value:"research-institute-for-nature-and-forest",label:"Research Institute for Nature and Forest (Instituut voor Natuur- en Bosonderzoek)"},{value:"research-on-biomedical-engineering",label:"Research on Biomedical Engineering"},{value:"respiratory-care-journal",label:"Respiratory Care Journal"},{value:"restoration-ecology",label:"Restoration Ecology"},{value:"rever-revista-de-estudos-da-religiao",label:"REVER - Revista de Estudos da Religi\xE3o"},{value:"review-of-international-studies",label:"Review of International Studies"},{value:"review-of-political-economy",label:"Review of Political Economy"},{value:"reviews-of-modern-physics-with-titles",label:"Reviews of Modern Physics (with titles)"},{value:"revista-argentina-de-antropologia-biologica",label:"Revista Argentina de Antropologia Biologica (Espa\xF1ol)"},{value:"revista-biblica",label:"Revista B\xEDblica (Espa\xF1ol)"},{value:"revista-brasileira-de-ciencia-do-solo",label:"Revista Brasileira de Ci\xEAncia do Solo"},{value:"revista-chilena-de-derecho-y-tecnologia",label:"Revista Chilena de Derecho y Tecnolog\xEDa (Espa\xF1ol - Chile)"},{value:"revista-ciencias-tecnicas-agropecuarias",label:"Revista Ciencias T\xE9cnicas Agropecuarias (Espa\xF1ol)"},{value:"revista-cubana-de-meteorologia",label:"Revista Cubana de Meteorologia"},{value:"revista-da-sociedade-brasileira-de-medicina-tropical",label:"Revista da Sociedade Brasileira de Medicina Tropical"},{value:"revista-de-biologia-marina-y-oceanografia",label:"Revista de Biolog\xEDa Marina y Oceanograf\xEDa"},{value:"revista-de-biologia-tropical",label:"Revista de Biolog\xEDa Tropical (International Journal of Tropical Biology and Conservation)"},{value:"revista-de-filologia-espanola",label:"Revista de Filolog\xEDa Espa\xF1ola (Espa\xF1ol)"},{value:"revista-do-instituto-de-medicina-tropical-de-sao-paulo",label:"Revista do Instituto de Medicina Tropical de S\xE3o Paulo"},{value:"revista-espanola-de-nutricion-humana-y-dietetica",label:"Revista Espanola de Nutricion Humana y Dietetica (Espa\xF1ol)"},{value:"revista-fave-seccion-ciencias-agrarias",label:"Revista FAVE - Secci\xF3n Ciencias Agrarias (Espa\xF1ol)"},{value:"revista-ladinia",label:"Revista Ladinia"},{value:"revista-latinoamericana-de-metalurgia-y-materiales",label:"Revista Latinoamericana de Metalurgia y Materiales"},{value:"revista-latinoamericana-de-recursos-naturales",label:"Revista Latinoamericana de Recursos Naturales"},{value:"revista-materia",label:"Revista Mat\xE9ria"},{value:"revista-noesis",label:"Revista N\xF3esis"},{value:"revista-peruana-de-medicina-experimental-y-salud-publica",label:"Revista Peruana de Medicina Experimental y Salud P\xFAblica (Espa\xF1ol)"},{value:"revista-portuguesa-de-arqueologia",label:"Revista Portuguesa de Arqueologia"},{value:"revista-virtual-de-quimica",label:"Revista Virtual de Qu\xEDmica (Portugu\xEAs - Brasil)"},{value:"revue-archeologique-de-lest",label:"Revue arch\xE9ologique de l\u2019Est (Fran\xE7ais)"},{value:"revue-archeologique-de-narbonnaise",label:"Revue arch\xE9ologique de Narbonnaise (French)"},{value:"revue-archeologique-du-centre-de-la-france",label:"Revue arch\xE9ologique du Centre de la France (Fran\xE7ais)"},{value:"revue-archeologique",label:"Revue Arch\xE9ologique (Fran\xE7ais)"},{value:"revue-d-elevage-et-de-medecine-veterinaire-des-pays-tropicaux",label:"Revue d'\xE9levage et de m\xE9decine v\xE9t\xE9rinaire des pays tropicaux (Fran\xE7ais)"},{value:"revue-de-medecine-veterinaire",label:"Revue de M\xE9decine V\xE9t\xE9rinaire (Fran\xE7ais)"},{value:"revue-de-qumran",label:"Revue de Qumr\xE2n"},{value:"revue-des-etudes-byzantines",label:"Revue des \xC9tudes Byzantines"},{value:"revue-des-nouvelles-technologies-de-l-information",label:"Revue des Nouvelles Technologies de l'Information (Fran\xE7ais)"},{value:"revue-dhistoire-des-sciences-humaines",label:"Revue d'histoire des sciences humaines (Fran\xE7ais)"},{value:"revue-dhistoire-moderne-et-contemporaine",label:"Revue d'histoire moderne et contemporaine (Fran\xE7ais)"},{value:"revue-europeenne-des-migrations-internationales",label:"Revue Europe\u0301enne des Migrations Internationales"},{value:"revue-forestiere-francaise",label:"Revue foresti\xE8re fran\xE7aise (Fran\xE7ais)"},{value:"revue-francaise-d-administration-publique",label:"Revue fran\xE7aise d'administration publique (Fran\xE7ais)"},{value:"revue-francaise-de-gestion",label:"Revue fran\xE7aise de gestion (Fran\xE7ais)"},{value:"revue-francaise-de-sociologie",label:"Revue fran\xE7aise de sociologie (Fran\xE7ais)"},{value:"rhinology",label:"Rhinology"},{value:"rhodora",label:"Rhodora"},{value:"risk-analysis",label:"Risk Analysis"},{value:"ritid",label:"Riti\xF0: t\xEDmarit Hugv\xEDsindastofnunar (\xCDslenska)"},{value:"rivista-italiana-di-paleontologia-e-stratigrafia",label:"Rivista Italiana di Paleontologia e Stratigrafia"},{value:"rmit-university-harvard",label:"RMIT University - Harvard"},{value:"rofo",label:"R\xF6Fo: Fortschritte auf dem Gebiet der R\xF6ntgenstrahlen und bildgebenden Verfahren"},{value:"romanian-humanities",label:"Romanian Humanities (Rom\xE2n\u0103)"},{value:"rose-school",label:"ROSE School"},{value:"rossiiskii-fiziologicheskii-zhurnal-imeni-i-m-sechenova",label:"\u0420\u043E\u0441\u0441\u0438\u0439\u0441\u043A\u0438\u0439 \u0444\u0438\u0437\u0438\u043E\u043B\u043E\u0433\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0436\u0443\u0440\u043D\u0430\u043B \u0438\u043C. \u0418.\u041C. \u0421\u0435\u0447\u0435\u043D\u043E\u0432\u0430 (\u0420\u0443\u0301\u0441\u0441\u043A\u0438\u0439)"},{value:"royal-college-of-nursing-harvard",label:"Royal College of Nursing - Harvard"},{value:"royal-society-of-chemistry-with-titles",label:"Royal Society of Chemistry (with titles)"},{value:"royal-society-of-chemistry",label:"Royal Society of Chemistry"},{value:"rtf-scan",label:"RTF Scan"},{value:"ruhr-universitat-bochum-lehrstuhl-fur-industrial-sales-and-service-engineering",label:"Ruhr-Universit\xE4t Bochum - Lehrstuhl f\xFCr Industrial Sales and Service Engineering"},{value:"ruhr-universitat-bochum-medizinische-fakultat-numeric",label:"Ruhr-Universit\xE4t Bochum - Medizinische Fakult\xE4t (numerisch, Deutsch)"},{value:"sage-harvard",label:"SAGE - Harvard"},{value:"sage-vancouver-brackets",label:"SAGE - Vancouver (brackets)"},{value:"sage-vancouver",label:"SAGE - Vancouver"},{value:"saglik-bilimleri-universitesi",label:"Sa\u011Fl\u0131k Bilimleri \xDCniversitesi"},{value:"saint-paul-university-faculty-of-canon-law",label:"Saint Paul University - Faculty of Canon Law"},{value:"san-francisco-estuary-and-watershed-science",label:"San Francisco Estuary & Watershed Science"},{value:"sanamed",label:"Sanamed"},{value:"scandinavian-journal-of-infectious-diseases",label:"Scandinavian Journal of Infectious Diseases"},{value:"scandinavian-journal-of-information-systems",label:"Scandinavian Journal of Information Systems"},{value:"scandinavian-journal-of-medicine-and-science-in-sports",label:"Scandinavian Journal of Medicine & Science in Sports"},{value:"scandinavian-journal-of-rheumatology",label:"Scandinavian Journal of Rheumatology"},{value:"scandinavian-journal-of-work-environment-and-health",label:"Scandinavian Journal of Work, Environment & Health"},{value:"scandinavian-political-studies",label:"Scandinavian Political Studies"},{value:"science-and-technology-for-the-built-environment",label:"Science and Technology for the Built Environment"},{value:"science-china-chemistry",label:"Science China Chemistry"},{value:"science-china-earth-sciences",label:"SCIENCE CHINA Earth Sciences"},{value:"science-china-life-sciences",label:"SCIENCE CHINA Life Sciences"},{value:"science-china-materials",label:"SCIENCE CHINA Materials"},{value:"science-translational-medicine",label:"Science Translational Medicine"},{value:"science-without-titles",label:"Science (without titles)"},{value:"science",label:"Science"},{value:"scienceasia",label:"ScienceAsia"},{value:"sciences-po-ecole-doctorale-author-date",label:"Sciences Po - Ecole doctorale (author-date, Fran\xE7ais)"},{value:"sciences-po-ecole-doctorale-note-french",label:"Sciences Po - \xC9cole doctorale (note, Fran\xE7ais)"},{value:"scientia-agriculturae-bohemica",label:"Scientia Agriculturae Bohemica"},{value:"scientia-iranica",label:"Scientia Iranica"},{value:"scientific-review-engineering-and-environmental-sciences",label:"Scientific Review Engineering and Environmental Sciences (Przegl\u0105d Naukowy In\u017Cynieria i Kszta\u0142towanie \u015Arodowiska)"},{value:"scrinium",label:"Scrinium"},{value:"sedimentology",label:"Sedimentology"},{value:"seed-science-and-technology",label:"Seed Science and Technology"},{value:"seed-science-research",label:"Seed Science Research"},{value:"seismological-research-letters",label:"Seismological Research Letters"},{value:"sekolah-tinggi-meteorologi-klimatologi-dan-geofisika",label:"Sekolah Tinggi Meteorologi Klimatologi dan Geofisika (Bahasa Indonesia)"},{value:"seminaire-saint-sulpice-ecole-theologie",label:"S\xE9minaire Saint-Sulpice - Ecole Th\xE9ologie (Fran\xE7ais)"},{value:"seminars-in-pediatric-neurology",label:"Seminars in Pediatric Neurology"},{value:"serbian-archives-of-medicine",label:"Vancouver - Serbian Archives of Medicine"},{value:"serdica-journal-of-computing",label:"Serdica Journal of Computing"},{value:"service-medical-de-l-assurance-maladie",label:"Service M\xE9dical de l'Assurance Maladie (Fran\xE7ais)"},{value:"sexual-development",label:"Sexual Development"},{value:"sexual-health",label:"Sexual Health"},{value:"sheffield-hallam-university-history",label:"Sheffield Hallam University - History"},{value:"shock",label:"Shock"},{value:"sinergie-italian-journal-of-management",label:"Sinergie Italian Journal of Management"},{value:"sist02",label:"SIST02 (\u65E5\u672C\u8A9E)"},{value:"skene-journal-of-theatre-and-drama-studies",label:"Sken\xE8. Journal of Theatre and Drama Studies"},{value:"small",label:"Small"},{value:"smithsonian-institution-scholarly-press-author-date",label:"Smithsonian Institution Scholarly Press (author-date)"},{value:"smithsonian-institution-scholarly-press-botany",label:"Smithsonian Institution Scholarly Press - Botany (author-date)"},{value:"smithsonian-institution-scholarly-press-note",label:"Smithsonian Institution Scholarly Press (note)"},{value:"smyrna-tip-dergisi",label:"Smyrna T\u0131p Dergisi (T\xFCrk\xE7e)"},{value:"social-anthropology",label:"Social Anthropology/Anthropologie Sociale"},{value:"social-cognitive-and-affective-neuroscience",label:"Social Cognitive and Affective Neuroscience"},{value:"sociedade-brasileira-de-computacao",label:"Sociedade Brasileira de Computa\xE7\xE3o"},{value:"societe-archeologique-de-bordeaux",label:"Soci\xE9t\xE9 Arch\xE9ologique de Bordeaux (Fran\xE7ais)"},{value:"societe-francaise-detude-de-la-ceramique-antique-en-gaule",label:"Soci\xE9t\xE9 Fran\xE7aise d\u2019\xC9tude de la C\xE9ramique Antique en Gaule (Fran\xE7ais)"},{value:"societe-nationale-des-groupements-techniques-veterinaires",label:"Soci\xE9t\xE9 Nationale des Groupements Techniques V\xE9t\xE9rinaires (Fran\xE7ais)"},{value:"societes-contemporaines",label:"Soci\xE9t\xE9s Contemporaines"},{value:"society-for-american-archaeology",label:"Society for American Archaeology"},{value:"society-for-historical-archaeology",label:"Society for Historical Archaeology"},{value:"society-for-laboratory-automation-and-screening",label:"Society for Laboratory Automation and Screening"},{value:"society-of-automotive-engineers-technical-papers-numeric",label:"Society of Automotive Engineers Technical Papers (numeric)"},{value:"society-of-biblical-literature-1st-edition-fullnote-bibliography",label:"Society of Biblical Literature 1st edition (full note)"},{value:"society-of-biblical-literature-author-date",label:"Society of Biblical Literature 2nd edition (author-date)"},{value:"society-of-biblical-literature-fullnote-bibliography",label:"Society of Biblical Literature 2nd edition (full note)"},{value:"socio-economic-review",label:"Socio-Economic Review"},{value:"sociology-of-health-and-illness",label:"Sociology of Health & Illness"},{value:"sodertorns-hogskola-harvard-ibid",label:"S\xF6dert\xF6rns h\xF6gskola - Harvard (with Ibid.)"},{value:"sodertorns-hogskola-harvard",label:"S\xF6dert\xF6rns h\xF6gskola - Harvard"},{value:"sodertorns-hogskola-oxford",label:"S\xF6dert\xF6rns h\xF6gskola - Oxford"},{value:"soil-biology-and-biochemistry",label:"Soil Biology and Biochemistry"},{value:"soil-science-and-plant-nutrition",label:"Soil Science and Plant Nutrition"},{value:"solent-university-harvard",label:"Solent University - Harvard"},{value:"solutions",label:"Solutions"},{value:"sorbonne-student-law-review",label:"Sorbonne Student Law Review - Revue juridique des \xE9tudiants de la Sorbonne"},{value:"south-african-actuarial-journal",label:"South African Actuarial Journal"},{value:"south-african-journal-of-animal-science",label:"South African Journal of Animal Science"},{value:"south-african-journal-of-enology-and-viticulture",label:"South African Journal of Enology and Viticulture"},{value:"south-african-journal-of-geology",label:"South African Journal of Geology"},{value:"south-african-medical-journal",label:"South African Medical Journal"},{value:"south-african-theological-seminary",label:"South African Theological Seminary"},{value:"southeastern-geographer",label:"Southeastern Geographer"},{value:"southern-african-journal-of-critical-care",label:"Southern African Journal of Critical Care"},{value:"soziale-welt",label:"Soziale Welt (Deutsch)"},{value:"sozialpadagogisches-institut-berlin-walter-may",label:"Sozialp\xE4dagogisches Institut Berlin - Walter May (Deutsch)"},{value:"sozialwissenschaften-heilmann",label:"Sozialwissenschaften (Heilmann) (Deutsch)"},{value:"soziologie",label:"Soziologie (Deutsch)"},{value:"soziologiemagazin",label:"Soziologiemagazin (Deutsch)"},{value:"spandidos-publications",label:"Spandidos Publications"},{value:"spanish-legal",label:"Spanish Legal (Espa\xF1ol)"},{value:"spectroscopy-letters",label:"Spectroscopy Letters"},{value:"speculum",label:"Speculum"},{value:"spie-bios",label:"SPIE BiOS"},{value:"spie-journals",label:"SPIE journals"},{value:"spie-proceedings",label:"SPIE Conference Proceedings"},{value:"spine",label:"Spine"},{value:"spip-cite",label:"SPIP - Cite plugin"},{value:"sports-health",label:"Sports Health"},{value:"springer-basic-author-date-no-et-al-with-issue",label:'Springer - Basic (author-date, no "et al.", with issue numbers)'},{value:"springer-basic-author-date-no-et-al",label:'Springer - Basic (author-date, no "et al.")'},{value:"springer-basic-author-date",label:"Springer - Basic (author-date)"},{value:"springer-basic-brackets-no-et-al-alphabetical",label:'Springer - Basic (numeric, brackets, no "et al.", alphabetical)'},{value:"springer-basic-brackets-no-et-al",label:'Springer - Basic (numeric, brackets, no "et al.")'},{value:"springer-basic-brackets",label:"Springer - Basic (numeric, brackets)"},{value:"springer-basic-note",label:"Springer - Basic (note)"},{value:"springer-fachzeitschriften-medizin-psychologie",label:"Springer - Fachzeitschriften Medizin Psychologie (Deutsch)"},{value:"springer-humanities-author-date",label:"Springer - Humanities (author-date)"},{value:"springer-humanities-brackets",label:"Springer - Humanities (numeric, brackets)"},{value:"springer-imis-series-migrationsgesellschaften",label:"Springer - IMIS Series Migrationsgesellschaften"},{value:"springer-lecture-notes-in-computer-science-alphabetical",label:"Springer - Lecture Notes in Computer Science (sorted alphabetically)"},{value:"springer-lecture-notes-in-computer-science",label:"Springer - Lecture Notes in Computer Science"},{value:"springer-mathphys-author-date",label:"Springer - MathPhys (author-date)"},{value:"springer-mathphys-brackets",label:"Springer - MathPhys (numeric, brackets)"},{value:"springer-physics-author-date",label:"Springer - Physics (author-date)"},{value:"springer-physics-brackets",label:"Springer - Physics (numeric, brackets)"},{value:"springer-socpsych-author-date",label:"Springer - SocPsych (author-date)"},{value:"springer-socpsych-brackets",label:"Springer - SocPsych (numeric, brackets)"},{value:"springer-vancouver-author-date",label:"Springer - Vancouver (author-date)"},{value:"springer-vancouver-brackets",label:"Springer - Vancouver (brackets)"},{value:"springer-vancouver",label:"Springer - Vancouver"},{value:"springer-vs-author-date",label:"Springer VS (author-date, Deutsch)"},{value:"springerprotocols",label:"SpringerProtocols"},{value:"st-patricks-college",label:"St Patrick's College"},{value:"statistika-statistics-and-economy-journal",label:"Statistika: Statistics and Economy Journal"},{value:"stavebni-obzor",label:"Stavebn\xED obzor (\u010Ce\u0161tina)"},{value:"steel-research-international",label:"Steel Research International"},{value:"steinbeis-hochschule-school-of-management-and-innovation",label:"Steinbeis-Hochschule - School of Management & Innovation (Deutsch)"},{value:"stellenbosch-law-review",label:"Stellenbosch Law Review"},{value:"stem-cells",label:"Stem Cells"},{value:"strategic-design-research-journal",label:"Strategic Design Research Journal"},{value:"strategic-entrepreneurship-journal",label:"Strategic Entrepreneurship Journal"},{value:"strategic-management-journal",label:"Strategic Management Journal"},{value:"stroke",label:"Stroke"},{value:"structural-control-and-health-monitoring",label:"Structural Control and Health Monitoring"},{value:"studi-e-materiali-di-storia-delle-religioni",label:"Studi e materiali di storia delle religioni (Italiano)"},{value:"studi-slavistici-rivista-dellassociazione-italiana-degli-slavisti",label:"Studi Slavistici Rivista dell\u2019Associazione Italiana degli Slavisti"},{value:"studia-bas",label:"Studia BAS (Polski)"},{value:"studies-in-the-history-of-gardens-and-designed-landscapes",label:"Studies in the History of Gardens & Designed Landscapes"},{value:"studii-teologice",label:"Studii Teologice"},{value:"stuttgart-media-university",label:"Hochschule der Medien Stuttgart (Deutsch)"},{value:"style-manual-australian-government-note",label:"Style Manual - Australian Government (note)"},{value:"style-manual-australian-government",label:"Style Manual - Australian Government (author-date)"},{value:"style-manual-for-authors-editors-and-printers-6th-edition-snooks-co",label:"Style manual for authors, editors and printers 6th edition (Snooks & Co.) (author-date)"},{value:"suburban-zeitschrift-fur-kritische-stadtforschung",label:"sub\\urban - Zeitschrift f\xFCr kritische Stadtforschung (Deutsch)"},{value:"sunway-college-johor-bahru",label:"Sunway College Johor Bahru - Harvard"},{value:"surgical-clinics-of-north-america",label:"Surgical Clinics of North America"},{value:"surgical-neurology-international",label:"Surgical Neurology International"},{value:"surgical-pathology-clinics",label:"Surgical Pathology Clinics"},{value:"svensk-exegetisk-arsbok",label:"Svensk exegetisk \xE5rsbok (full note)"},{value:"swedish-legal",label:"Swedish Legal (Svenska)"},{value:"swiss-political-science-review",label:"Swiss Political Science Review"},{value:"sylwan",label:"Sylwan (Polski)"},{value:"synthesis",label:"Synthesis"},{value:"system-dynamics-review",label:"System Dynamics Review"},{value:"systematic-and-applied-microbiology",label:"Systematic and Applied Microbiology"},{value:"systematic-biology",label:"Systematic Biology"},{value:"szociologiai-szemle",label:"Szociol\xF3giai Szemle (Magyar)"},{value:"tabula",label:"T\xE1bula (Espa\xF1ol)"},{value:"tagungsberichte-der-historischen-kommission-fur-ost-und-westpreussische-landesforschung",label:"Tagungsberichte der Historischen Kommission f\xFCr ost- und westpreu\xDFische Landesforschung (Deutsch)"},{value:"tatup-zeitschrift-fur-technikfolgenabschatzung-in-theorie-und-praxis",label:"TATuP - Zeitschrift f\xFCr Technikfolgenabsch\xE4tzung in Theorie und Praxis"},{value:"taxon",label:"Taxon"},{value:"taylor-and-francis-acs",label:"Taylor & Francis - American Chemical Society"},{value:"taylor-and-francis-chicago-author-date",label:"Taylor & Francis - Chicago Manual of Style (author-date)"},{value:"taylor-and-francis-chicago-f",label:"Taylor & Francis - Chicago F"},{value:"taylor-and-francis-council-of-science-editors-author-date",label:"Taylor & Francis - Council of Science Editors (author-date)"},{value:"taylor-and-francis-council-of-science-editors-numeric",label:"Taylor & Francis - Council of Science Editors (numeric)"},{value:"taylor-and-francis-harvard-x",label:"Taylor & Francis - Harvard X"},{value:"taylor-and-francis-national-library-of-medicine",label:"Taylor & Francis - National Library of Medicine"},{value:"taylor-and-francis-numeric-q",label:"Taylor & Francis - Numeric Q"},{value:"taylor-and-francis-vancouver-national-library-of-medicine",label:"Taylor & Francis - Vancouver/National Library of Medicine"},{value:"techniques-et-culture",label:"Techniques&Culture (Fran\xE7ais)"},{value:"technische-universitat-dortmund-ag-virtual-machining",label:"Technische Universit\xE4t Dortmund - AG Virtual Machining (Deutsch)"},{value:"technische-universitat-dresden-betriebswirtschaftslehre-logistik-author-date",label:"Technische Universit\xE4t Dresden - Betriebswirtschaftslehre/Logistik (author-date)"},{value:"technische-universitat-dresden-betriebswirtschaftslehre-marketing",label:"Technische Universit\xE4t Dresden - Betriebswirtschaftslehre/Marketing (author-date)"},{value:"technische-universitat-dresden-betriebswirtschaftslehre-rechnungswesen-controlling",label:"Technische Universit\xE4t Dresden - Betriebswirtschaftslehre/Rechnungswesen/Controlling (Deutsch)"},{value:"technische-universitat-dresden-erziehungswissenschaften-author-date",label:"Technische Universit\xE4t Dresden - Erziehungswissenschaften (author-date)"},{value:"technische-universitat-dresden-finanzwirtschaft-und-finanzdienstleistungen-author-date-with-short-titles",label:"Technische Universit\xE4t Dresden - Finanzwirtschaft und Finanzdienstleistungen (author-date, with short titles)"},{value:"technische-universitat-dresden-finanzwirtschaft-und-finanzdienstleistungen-author-date",label:"Technische Universit\xE4t Dresden - Finanzwirtschaft und Finanzdienstleistungen (author-date)"},{value:"technische-universitat-dresden-finanzwirtschaft-und-finanzdienstleistungen-note",label:"Technische Universit\xE4t Dresden - Finanzwirtschaft und Finanzdienstleistungen (note)"},{value:"technische-universitat-dresden-forstwissenschaft",label:"Technische Universit\xE4t Dresden - Forstwissenschaft (author-date, Deutsch)"},{value:"technische-universitat-dresden-historische-musikwissenschaft-note",label:"Technische Universit\xE4t Dresden - Historische Musikwissenschaft (note, Deutsch)"},{value:"technische-universitat-dresden-kunstgeschichte-note",label:"Technische Universit\xE4t Dresden - Kunstgeschichte (note, Deutsch)"},{value:"technische-universitat-dresden-linguistik",label:"Technische Universit\xE4t Dresden - Linguistik (Deutsch)"},{value:"technische-universitat-dresden-medienwissenschaft-und-neuere-deutsche-literatur-note",label:"Technische Universit\xE4t Dresden - Medienwissenschaft und Neuere Deutsche Literatur (note, Deutsch)"},{value:"technische-universitat-dresden-medizin",label:"Technische Universit\xE4t Dresden - Medizin"},{value:"technische-universitat-dresden-wirtschaftswissenschaften",label:"Technische Universit\xE4t Dresden - Wirtschaftswissenschaften (Deutsch)"},{value:"technische-universitat-munchen-controlling",label:"Technische Universit\xE4t M\xFCnchen - Controlling (Deutsch)"},{value:"technische-universitat-munchen-unternehmensfuhrung",label:"Technische Universit\xE4t M\xFCnchen - Unternehmensf\xFChrung (Deutsch)"},{value:"technische-universitat-wien",label:"Technische Universit\xE4t Wien (dissertation) (Deutsch)"},{value:"teologia-catalunya",label:"Teologia Catalunya"},{value:"termedia-neuropsychiatria-i-neuropsychologia-neuropsychiatry-and-neuropsychology",label:"Termedia Neuropsychiatria i Neuropsychologia/Neuropsychiatry and Neuropsychology"},{value:"terra-nova",label:"Terra Nova"},{value:"tetrahedron-letters",label:"Tetrahedron Letters"},{value:"textual-cultures",label:"Textual Cultures"},{value:"textual-practice",label:"Textual Practice"},{value:"tgm-wien-diplom",label:"TGM Wien Diplomarbeit (Deutsch)"},{value:"tgm-wien-diplomarbeit-onorm",label:"TGM Wien Diplomarbeit \xD6NORM (Deutsch - \xD6sterreich)"},{value:"the-accounting-review",label:"The Accounting Review"},{value:"the-american-journal-of-bioethics",label:"The American Journal of Bioethics"},{value:"the-american-journal-of-cardiology",label:"The American Journal of Cardiology"},{value:"the-american-journal-of-dermatopathology",label:"The American Journal of Dermatopathology"},{value:"the-american-journal-of-gastroenterology",label:"The American Journal of Gastroenterology"},{value:"the-american-journal-of-geriatric-psychiatry",label:"The American Journal of Geriatric Psychiatry"},{value:"the-american-journal-of-human-genetics",label:"The American Journal of Human Genetics"},{value:"the-american-journal-of-pathology",label:"The American Journal of Pathology"},{value:"the-american-journal-of-psychiatry",label:"The American Journal of Psychiatry"},{value:"the-american-journal-of-tropical-medicine-and-hygiene",label:"The American Journal of Tropical Medicine and Hygiene"},{value:"the-american-midland-naturalist",label:"The American Midland Naturalist"},{value:"the-american-naturalist",label:"The American Naturalist"},{value:"the-angle-orthodontist",label:"The Angle Orthodontist"},{value:"the-astrophysical-journal",label:"The Astrophysical Journal"},{value:"the-auk",label:"The Auk"},{value:"the-australian-journal-of-agricultural-and-resource-economics",label:"The Australian Journal of Agricultural and Resource Economics"},{value:"the-biological-bulletin",label:"The Biological Bulletin"},{value:"the-bone-and-joint-journal",label:"The Bone & Joint Journal"},{value:"the-botanical-review",label:"The Botanical Review"},{value:"the-bovine-practitioner",label:"The Bovine Practitioner"},{value:"the-british-journal-for-the-philosophy-of-science",label:"The British Journal for the Philosophy of Science"},{value:"the-british-journal-of-cardiology",label:"The British Journal of Cardiology"},{value:"the-british-journal-of-criminology",label:"The British Journal of Criminology"},{value:"the-british-journal-of-psychiatry",label:"The British Journal of Psychiatry"},{value:"the-british-journal-of-sociology",label:"The British Journal of Sociology"},{value:"the-canadian-geographer",label:"The Canadian Geographer (Le G\xE9ographe canadien)"},{value:"the-canadian-journal-of-chemical-engineering",label:"The Canadian Journal of Chemical Engineering"},{value:"the-canadian-journal-of-psychiatry",label:"The Canadian Journal of Psychiatry"},{value:"the-cancer-journal",label:"The Cancer Journal"},{value:"the-chemical-society-of-japan",label:"The Chemical Society of Japan"},{value:"the-chinese-journal-of-international-politics",label:"The Chinese Journal of International Politics"},{value:"the-company-of-biologists",label:"The Company of Biologists"},{value:"the-design-journal",label:"The Design Journal"},{value:"the-economic-history-review",label:"The Economic History Review"},{value:"the-european-research-journal",label:"The European Research Journal"},{value:"the-faseb-journal",label:"The FASEB Journal"},{value:"the-febs-journal",label:"The FEBS Journal"},{value:"the-geological-society-of-america",label:"The Geological Society of America"},{value:"the-geological-society-of-london",label:"The Geological Society of London"},{value:"the-hastings-center-report",label:"The Hastings Center Report"},{value:"the-historical-journal",label:"The Historical Journal"},{value:"the-holocene",label:"The Holocene"},{value:"the-horticulture-journal",label:"The Horticulture Journal"},{value:"the-institute-of-electronics-information-and-communication-engineers",label:"The Institute of Electronics, Information and Communication Engineers (\u96FB\u5B50\u60C5\u5831\u901A\u4FE1\u5B66\u4F1A)"},{value:"the-institution-of-engineering-and-technology",label:"The Institution of Engineering and Technology"},{value:"the-international-journal-of-developmental-biology",label:"The International Journal of Developmental Biology"},{value:"the-international-journal-of-psychoanalysis",label:"The International Journal of Psychoanalysis"},{value:"the-international-journal-of-tuberculosis-and-lung-disease",label:"The International Journal of Tuberculosis and Lung Disease"},{value:"the-isme-journal",label:"The ISME Journal"},{value:"the-journal-of-adhesive-dentistry",label:"The Journal of Adhesive Dentistry"},{value:"the-journal-of-agricultural-science",label:"The Journal of Agricultural Science"},{value:"the-journal-of-clinical-ethics",label:"The Journal of Clinical Ethics"},{value:"the-journal-of-clinical-investigation",label:"The Journal of Clinical Investigation"},{value:"the-journal-of-comparative-law",label:"The Journal of Comparative Law"},{value:"the-journal-of-comparative-neurology",label:"The Journal of Comparative Neurology"},{value:"the-journal-of-egyptian-archaeology",label:"The Journal of Egyptian Archaeology"},{value:"the-journal-of-eukaryotic-microbiology",label:"The Journal of Eukaryotic Microbiology"},{value:"the-journal-of-foot-and-ankle-surgery",label:"The Journal of Foot & Ankle Surgery"},{value:"the-journal-of-hand-surgery-asian-pacific-volume",label:"The Journal of Hand Surgery Asian-Pacific Volume"},{value:"the-journal-of-hand-surgery-european-volume",label:"The Journal of Hand Surgery (European Volume)"},{value:"the-journal-of-hellenic-studies",label:"The Journal of Hellenic Studies"},{value:"the-journal-of-immunology",label:"The Journal of Immunology"},{value:"the-journal-of-infection-in-developing-countries",label:"The Journal of Infection in Developing Countries"},{value:"the-journal-of-juristic-papyrology",label:"The Journal of Juristic Papyrology"},{value:"the-journal-of-laryngology-and-otology",label:"The Journal of Laryngology & Otology"},{value:"the-journal-of-modern-history",label:"The Journal of Modern History"},{value:"the-journal-of-molecular-diagnostics",label:"The Journal of Molecular Diagnostics"},{value:"the-journal-of-nervous-and-mental-disease",label:"The Journal of Nervous and Mental Disease"},{value:"the-journal-of-neuropsychiatry-and-clinical-neurosciences",label:"The Journal of Neuropsychiatry and Clinical Neurosciences"},{value:"the-journal-of-neuroscience",label:"The Journal of Neuroscience"},{value:"the-journal-of-nuclear-medicine",label:"The Journal of Nuclear Medicine"},{value:"the-journal-of-nutrition-health-and-aging",label:"The Journal of Nutrition, Health & Aging"},{value:"the-journal-of-pain",label:"The Journal of Pain"},{value:"the-journal-of-parasitology",label:"The Journal of Parasitology"},{value:"the-journal-of-pathology",label:"The Journal of Pathology"},{value:"the-journal-of-peasant-studies",label:"The Journal of Peasant Studies"},{value:"the-journal-of-physiology",label:"The Journal of Physiology"},{value:"the-journal-of-pure-and-applied-chemistry-research",label:"The Journal of Pure and Applied Chemistry Research"},{value:"the-journal-of-roman-studies",label:"The Journal of Roman Studies"},{value:"the-journal-of-the-acoustical-society-of-america-numeric",label:"The Journal of the Acoustical Society of America (numeric)"},{value:"the-journal-of-the-acoustical-society-of-america",label:"The Journal of the Acoustical Society of America (author-date)"},{value:"the-journal-of-the-torrey-botanical-society",label:"The Journal of the Torrey Botanical Society"},{value:"the-journal-of-transport-history",label:"The Journal of Transport History"},{value:"the-journal-of-trauma-and-acute-care-surgery",label:"The Journal of Trauma and Acute Care Surgery"},{value:"the-journal-of-urology",label:"The Journal of Urology"},{value:"the-journal-of-veterinary-medical-science",label:"The Journal of Veterinary Medical Science"},{value:"the-journal-of-wildlife-management",label:"The Journal of Wildlife Management"},{value:"the-journals-of-gerontology-series-a",label:"The Journals of Gerontology, Series A: Biological Sciences and Medical Sciences"},{value:"the-korean-journal-of-gastroenterology",label:"The Korean Journal of Gastroenterology"},{value:"the-korean-journal-of-internal-medicine",label:"The Korean Journal of Internal Medicine"},{value:"the-korean-journal-of-mycology",label:"The Korean Journal of Mycology"},{value:"the-lancet",label:"The Lancet"},{value:"the-lichenologist",label:"The Lichenologist"},{value:"the-national-medical-journal-of-india",label:"The National Medical Journal of India"},{value:"the-neuroscientist",label:"The Neuroscientist"},{value:"the-new-england-journal-of-medicine",label:"The New England Journal of Medicine"},{value:"the-oncologist",label:"The Oncologist"},{value:"the-open-university-a251",label:"The Open University - A251 - Arts Course"},{value:"the-open-university-harvard",label:"The Open University - Harvard"},{value:"the-open-university-m801",label:"The Open University - M801 - Research Project and Dissertation"},{value:"the-open-university-numeric-superscript",label:"The Open University (numeric, superscript)"},{value:"the-open-university-numeric",label:"The Open University (numeric)"},{value:"the-open-university-s390",label:"The Open University - S390"},{value:"the-optical-society",label:"The Optical Society"},{value:"the-pan-african-medical-journal",label:"The Pan African Medical Journal"},{value:"the-plant-cell",label:"The Plant Cell"},{value:"the-plant-genome",label:"The Plant Genome"},{value:"the-plant-journal",label:"The Plant Journal"},{value:"the-quarterly-journal-of-economics",label:"The Quarterly Journal of Economics"},{value:"the-review-of-financial-studies",label:"The Review of Financial Studies"},{value:"the-rockefeller-university-press",label:"The Rockefeller University Press"},{value:"the-saudi-journal-for-dental-research",label:"The Saudi Journal for Dental Research"},{value:"the-scandinavian-journal-of-clinical-and-laboratory-investigation",label:"The Scandinavian Journal of Clinical & Laboratory Investigation"},{value:"the-university-of-tokyo-law-review",label:"\u6771\u4EAC\u5927\u5B66\u6CD5\u79D1\u5927\u5B66\u9662\u30ED\u30FC\u30EC\u30D3\u30E5\u30FC (The University of Tokyo Law Review) (\u65E5\u672C\u8A9E)"},{value:"the-university-of-western-australia-harvard",label:"The University of Western Australia - Harvard"},{value:"the-university-of-winchester-harvard",label:"The University of Winchester - Harvard"},{value:"the-world-journal-of-biological-psychiatry",label:"The World Journal of Biological Psychiatry"},{value:"theologie-und-philosophie",label:"Theologie und Philosophie (Deutsch)"},{value:"theory-culture-and-society",label:"Theory, Culture & Society"},{value:"theranostics",label:"Theranostics"},{value:"thieme-german",label:"Thieme-German (Deutsch)"},{value:"thomson-reuters-legal-tax-and-accounting-australia",label:"Thomson Reuters - Legal, Tax & Accounting Australia"},{value:"thrombosis-and-haemostasis",label:"Thrombosis and Haemostasis"},{value:"tijdschrift-voor-economische-en-sociale-geografie",label:"Tijdschrift voor economische en sociale geografie"},{value:"tijdschrift-voor-geneeskunde",label:"Tijdschrift voor Geneeskunde en Gezondheidszorg (Nederlands)"},{value:"topoi-orient-occident-auteur-date",label:"Topoi Orient-Occident (auteur-date, Fran\xE7ais)"},{value:"topoi-orient-occident-classique",label:"Topoi Orient-Occident (classique, Fran\xE7ais)"},{value:"toxicological-sciences",label:"Toxicological Sciences"},{value:"trabajos-de-prehistoria",label:"Trabajos de Prehistoria (Espa\xF1ol)"},{value:"traces",label:"Trac\xE9s: Revue de Sciences Humaines (Fran\xE7ais)"},{value:"traffic-injury-prevention",label:"Traffic Injury Prevention"},{value:"traffic",label:"Traffic"},{value:"transactions-of-the-american-philological-association",label:"Transactions of the American Philological Association"},{value:"transactions-of-the-materials-research-society-of-japan",label:"Transactions of the Materials Research Society of Japan"},{value:"transboundary-and-emerging-diseases",label:"Transboundary and Emerging Diseases"},{value:"transnational-environmental-law",label:"Transnational Environmental Law"},{value:"transplantation",label:"Transplantation"},{value:"transport",label:"Transport"},{value:"transportation-research-record",label:"Transportation Research Record: Journal of the Transportation Research Board"},{value:"transposition",label:"Transposition. Musique et sciences sociales"},{value:"transversalites",label:"Transversalit\xE9s (Fran\xE7ais)"},{value:"tree-physiology",label:"Tree Physiology"},{value:"trends-in-glycoscience-and-glycotechnology",label:"Trends in Glycoscience and Glycotechnology"},{value:"trends-journals",label:"Trends journals"},{value:"triangle",label:"Triangle (Fran\xE7ais)"},{value:"trinity-college-dublin-zoology-botany-environmental-sciences-harvard",label:"Trinity College Dublin - Zoology Botany Environmental Sciences - Harvard"},{value:"tropical-animal-health-and-production",label:"Tropical Animal Health and Production"},{value:"tsaqafah",label:"Tsaqafah"},{value:"turabian-author-date",label:"Turabian 9th edition (author-date)"},{value:"turabian-fullnote-bibliography-no-ibid",label:"Turabian 8th edition (full note, no ibid)"},{value:"turabian-fullnote-bibliography",label:"Turabian 8th edition (full note)"},{value:"turkiye-bilimsel-ve-teknolojik-arastirma-kurumu",label:"T\xDCB\u0130TAK (T\xFCrkiye Bilimsel ve Teknolojik Ara\u015Ft\u0131rma Kurumu) (T\xFCrk\xE7e)"},{value:"twentieth-century-music",label:"Twentieth-Century Music"},{value:"tyndale-bulletin",label:"Tyndale Bulletin"},{value:"u-schylku-starozytnosci",label:"U Schy\u0142ku Staro\u017Cytno\u015Bci (Polski)"},{value:"ucl-institute-of-education-harvard",label:"UCL Institute of Education - Harvard"},{value:"ucl-university-college-apa",label:"UCL University College - APA (Dansk)"},{value:"ucl-university-college-harvard",label:"UCL University College - Harvard (Dansk)"},{value:"ucl-university-college-vancouver",label:"UCL University College - Vancouver (English)"},{value:"uclouvain-centre-charles-de-visscher-pour-le-droit-international-et-europeen",label:"UCLouvain - Centre Charles De Visscher pour le droit international et europ\xE9en (French)"},{value:"ugeskrift-for-laeger",label:"Ugeskrift for L\xE6ger (Dansk)"},{value:"ultrasound-in-medicine-and-biology",label:"Ultrasound in Medicine and Biology"},{value:"ulua-revista-de-historia-sociedad-y-cultura",label:"Ul\xFAa. Revista de Historia, Sociedad y Cultura"},{value:"uludag-universitesi-sosyal-bilimler-enstitusu-author-date",label:"Uluda\u011F \xDCniversitesi - Sosyal Bilimler Enstit\xFCs\xFC (author-date, T\xFCrk\xE7e)"},{value:"uludag-universitesi-sosyal-bilimler-enstitusu-full-note-with-ibid",label:"Uluda\u011F \xDCniversitesi - Sosyal Bilimler Enstit\xFCs\xFC (full note, with Ibid., T\xFCrk\xE7e)"},{value:"uludag-universitesi-sosyal-bilimler-enstitusu-full-note",label:"Uluda\u011F \xDCniversitesi - Sosyal Bilimler Enstit\xFCs\xFC (full note, T\xFCrk\xE7e)"},{value:"uludag-universitesi-sosyal-bilimler-enstitusu-ilahiyat-fakultesi-full-note-with-ibid",label:"Uluda\u011F \xDCniversitesi - Sosyal Bilimler Enstit\xFCs\xFC - \u0130lahiyat Fak\xFCltesi (full note, with Ibid., T\xFCrk\xE7e)"},{value:"uludag-universitesi-sosyal-bilimler-enstitusu-ilahiyat-fakultesi-full-note",label:"Uluda\u011F \xDCniversitesi - Sosyal Bilimler Enstit\xFCs\xFC - \u0130lahiyat Fak\xFCltesi (full note, T\xFCrk\xE7e)"},{value:"unesco-international-institute-for-educational-planning",label:"UNESCO International Institute for Educational Planning"},{value:"unified-style-sheet-for-linguistics-de-gruyter-literature",label:"Unified Stylesheet for Linguistics (de Gruyter Literature)"},{value:"unified-style-sheet-for-linguistics",label:"Unified style sheet for linguistics"},{value:"united-nations-conference-on-trade-and-development",label:"United Nations Conference on Trade and Development"},{value:"united-nations-development-programme-icca-legal-review",label:"United Nations Development Programme ICCA Legal Review"},{value:"united-nations-framework-convention-on-climate-change",label:"United Nations Framework Convention on Climate Change"},{value:"united-states-international-trade-commission",label:"United States International Trade Commission"},{value:"universidad-autonoma-cidudad-juarez-estilo-latino-humanistico",label:"Universidad Aut\xF3noma de Ciudad Ju\xE1rez - Estilo Latino Human\xEDstico"},{value:"universidad-de-leon-harvard",label:"Universidad de Le\xF3n (Espa\xF1a) - Harvard"},{value:"universidad-evangelica-del-paraguay",label:"Universidad Evang\xE9lica del Paraguay (Espa\xF1ol)"},{value:"universidade-de-sao-paulo-escola-de-comunicacoes-e-artes-abnt",label:"Universidade de S\xE3o Paulo - Escola de Comunica\xE7\xF5es e Artes - ABNT (Portugu\xEAs - Brasil)"},{value:"universidade-de-sao-paulo-instituto-de-matematica-e-estatistica",label:"Universidade de S\xE3o Paulo - Instituto de Matem\xE1tica e Estat\xEDstica"},{value:"universidade-do-estado-do-rio-de-janeiro-abnt",label:"Universidade do Estado do Rio de Janeiro - ABNT (Portugu\xEAs - Brasil)"},{value:"universidade-do-porto-faculdade-de-engenharia-chicago-pt",label:"Universidade do Porto - Faculdade de Engenharia - Chicago Manual of Style 17th (author-date) (Portugu\xEAs - Portugal)"},{value:"universidade-do-porto-faculdade-de-engenharia-chicago",label:"Universidade do Porto - Faculdade de Engenharia - Chicago Manual of Style 17th (author-date)"},{value:"universidade-do-porto-faculdade-de-psicologia-e-de-ciencias-da-educacao",label:"Universidade do Porto - Faculdade de Psicologia e de Ci\xEAncias da Educa\xE7\xE3o - APA"},{value:"universidade-estadual-de-alagoas-abnt",label:"Universidade Estadual de Alagoas - ABNT (Portugu\xEAs - Brasil)"},{value:"universidade-estadual-do-oeste-do-parana-programa-institucional-de-bolsas-de-iniciacao-cientifica",label:"Universidade Estadual do Oeste do Paran\xE1 - Programa Institucional de Bolsas de Inicia\xE7\xE3o Cient\xEDfica (Portugu\xEAs - Brasil)"},{value:"universidade-estadual-paulista-campus-de-dracena-abnt",label:"Universidade Estadual Paulista - Campus de Dracena - ABNT (autoria abreviada) (Portugu\xEAs - Brasil)"},{value:"universidade-estadual-paulista-faculdade-de-engenharia-de-guaratingueta-abnt",label:"Universidade Estadual Paulista - Faculdade de Engenharia de Guaratingueta - ABNT (Portugu\xEAs - Brasil)"},{value:"universidade-federal-de-juiz-de-fora",label:"Universidade Federal de Juiz de Fora (Portugu\xEAs - Brasil)"},{value:"universidade-federal-de-pernambuco-abnt",label:"Universidade Federal de Pernambuco - ABNT (Portugu\xEAs - Brasil)"},{value:"universidade-federal-de-sergipe-departamento-de-engenharia-de-producao-abnt",label:"Universidade Federal de Sergipe - Departamento de Engenharia de Produ\xE7\xE3o - ABNT (Portugu\xEAs - Brasil)"},{value:"universidade-federal-do-espirito-santo-abnt-initials",label:"Universidade Federal do Esp\xEDrito Santo - ABNT (autoria abreviada) (Portugu\xEAs - Brasil)"},{value:"universidade-federal-do-espirito-santo-abnt",label:"Universidade Federal do Esp\xEDrito Santo - ABNT (autoria completa) (Portugu\xEAs - Brasil)"},{value:"universidade-federal-do-rio-de-janeiro-instituto-alberto-luiz-coimbra-de-pos-graduacao-e-pesquisa-de-engenharia-abnt",label:"Universidade Federal do Rio de Janeiro - Instituto Alberto Luiz Coimbra de P\xF3s-Gradua\xE7\xE3o e Pesquisa de Engenharia - ABNT (Portugu\xEAs - Brasil)"},{value:"universita-cattolica-del-sacro-cuore",label:"Universit\xE0 Cattolica del Sacro Cuore (note, Italiano)"},{value:"universita-di-bologna-lettere",label:"University of Bologna - Liberal Arts College (Universit\xE0 di Bologna - Facolt\xE0 di Lettere e Filosofia) (Italiano)"},{value:"universita-pontificia-salesiana-it",label:"Universit\xE0 Pontificia Salesiana (Italiano)"},{value:"universita-pontificia-salesiana",label:"Universit\xE0 Pontificia Salesiana"},{value:"universitas-gadjah-mada-departemen-sejarah",label:"Universitas Gadjah Mada - Departemen Sejarah (Bahasa Indonesia)"},{value:"universitas-negeri-semarang-fakultas-matematika-dan-ilmu-pengetahuan-alam",label:"Universitas Negeri Semarang - Fakultas Matematika dan Ilmu Pengetahuan Alam (Bahasa Indonesia)"},{value:"universitas-negeri-yogyakarta-program-pascasarjana",label:"Universitas Negeri Yogyakarta - Program Pascasarjana (Bahasa Indonesia)"},{value:"universitat-basel-deutsche-sprachwissenschaft",label:"Universit\xE4t Basel - Deutsche Sprachwissenschaft"},{value:"universitat-basel-iberoromanistik",label:"Universit\xE4t Basel - Iberoromanistik (Espa\xF1ol)"},{value:"universitat-bern-institut-fur-musikwissenschaft-note",label:"Universit\xE4t Bern - Institut f\xFCr Musikwissenschaft (note, Deutsch)"},{value:"universitat-bern-institut-fur-sozialanthropologie",label:"Universit\xE4t Bern - Institut f\xFCr Sozialanthropologie (Deutsch - Schweiz)"},{value:"universitat-bremen-institut-fur-politikwissenschaft",label:"Universit\xE4t Bremen - Institut f\xFCr Politikwissenschaft (Deutsch)"},{value:"universitat-bremen-lehrstuhl-fur-innovatives-markenmanagement",label:"Universit\xE4t Bremen - Lehrstuhl f\xFCr innovatives Markenmanagement (Deutsch)"},{value:"universitat-freiburg-geschichte",label:"Albert-Ludwigs-Universit\xE4t Freiburg - Geschichte (Deutsch)"},{value:"universitat-heidelberg-historisches-seminar",label:"Universit\xE4t Heidelberg - Historisches Seminar (Deutsch)"},{value:"universitat-heidelberg-medizinische-fakultat-mannheim-numeric",label:"Universit\xE4t Heidelberg - Medizinische Fakult\xE4t Mannheim (numerisch, Deutsch)"},{value:"universitat-mainz-geographisches-institut",label:"Universit\xE4t Mainz - Geographisches Institut (Deutsch)"},{value:"universitat-mannheim-germanistische-linguistik",label:"Universit\xE4t Mannheim - Germanistische Linguistik (Deutsch)"},{value:"universitat-stuttgart-planung-und-partizipation",label:"Universit\xE4t Stuttgart - Planung und Partizipation (Deutsch)"},{value:"universitat-wien-institut-fur-geschichte",label:"Universit\xE4t Wien - Institut f\xFCr Geschichte"},{value:"universitat-zu-koln-seminar-fur-abwl-und-finanzierungslehre",label:"Universit\xE4t zu K\xF6ln - Seminar f\xFCr ABWL und Finanzierungslehre (Deutsch)"},{value:"universitatsmedizin-gottingen",label:"Universit\xE4tsmedizin G\xF6ttingen (Deutsch)"},{value:"universite-catholique-de-louvain-histoire",label:"Universit\xE9 Catholique de Louvain - Histoire (Fran\xE7ais)"},{value:"universite-cheikh-anta-diop-faculte-de-medecine-de-pharmacie-et-dodontologie",label:"Universit\xE9 Cheikh Anta Diop - Facult\xE9 de M\xE9decine de Pharmacie et d'Odontologie (Fran\xE7ais)"},{value:"universite-de-bordeaux-ecole-doctorale-de-droit",label:"Universit\xE9 de Bordeaux - \xC9cole doctorale de droit (Fran\xE7ais)"},{value:"universite-de-geneve-departement-de-langue-et-de-litterature-francaises-modernes",label:"Universit\xE9 de Gen\xE8ve - D\xE9partement de langue et de litt\xE9rature fran\xE7aises modernes (Fran\xE7ais)"},{value:"universite-de-lausanne-histoire",label:"Universit\xE9 de Lausanne - Histoire (Fran\xE7ais)"},{value:"universite-de-liege-droit-par-categorie",label:"Universit\xE9 de Li\xE8ge - Droit (classement par cat\xE9gorie, Fran\xE7ais)"},{value:"universite-de-liege-droit",label:"Universit\xE9 de Li\xE8ge - Droit (Fran\xE7ais)"},{value:"universite-de-liege-histoire",label:"Universit\xE9 de Li\xE8ge - Histoire (Fran\xE7ais)"},{value:"universite-de-montreal-apa",label:"Universit\xE9 de Montr\xE9al - APA (Fran\xE7ais - Canada)"},{value:"universite-de-montreal-faculte-de-musique",label:"Universit\xE9 de Montr\xE9al - Facult\xE9 de musique (Fran\xE7ais - Canada)"},{value:"universite-de-picardie-jules-verne-ufr-de-medecine",label:"Universit\xE9 de Picardie Jules Verne (Amiens) - Th\xE8se de UFR de M\xE9decine"},{value:"universite-de-sherbrooke-departement-de-geomatique",label:"Universit\xE9 de Sherbrooke - D\xE9partement de g\xE9omatique (Fran\xE7ais - Canada)"},{value:"universite-de-sherbrooke-faculte-d-education",label:"Universit\xE9 de Sherbrooke - Facult\xE9 d'\xE9ducation (Fran\xE7ais - Canada)"},{value:"universite-de-sherbrooke-histoire",label:"Universit\xE9 de Sherbrooke - Histoire (Fran\xE7ais - Canada)"},{value:"universite-du-quebec-a-montreal-departement-dhistoire",label:"Universit\xE9 du Qu\xE9bec \xE0 Montr\xE9al - D\xE9partement d\u2019histoire (Fran\xE7ais - Canada)"},{value:"universite-du-quebec-a-montreal-etudes-litteraires-et-semiologie",label:"Universit\xE9 du Qu\xE9bec \xE0 Montr\xE9al - \xC9tudes litt\xE9raires et s\xE9miologie (Fran\xE7ais - Canada)"},{value:"universite-du-quebec-a-montreal",label:"Universit\xE9 du Qu\xE9bec \xE0 Montr\xE9al - APA (Fran\xE7ais - Canada)"},{value:"universite-laval-departement-des-sciences-historiques",label:"Universit\xE9 Laval - D\xE9partement des sciences historiques (Fran\xE7ais - Canada)"},{value:"universite-laval-departement-dinformation-et-de-communication",label:"Universit\xE9 Laval - D\xE9partement d'information et de communication (Fran\xE7ais - Canada)"},{value:"universite-laval-faculte-de-theologie-et-de-sciences-religieuses",label:"Universit\xE9 Laval - Facult\xE9 de th\xE9ologie et de sciences religieuses (Fran\xE7ais - Canada)"},{value:"universite-libre-de-bruxelles-histoire",label:"Universit\xE9 libre de Bruxelles - Histoire (Fran\xE7ais)"},{value:"universite-nangui-abrogoua-sciences-de-la-nature-apa",label:"Universit\xE9 Nangui Abrogoua - Sciences de la Nature - APA (Fran\xE7ais)"},{value:"universiteit-utrecht-onderzoeksgids-geschiedenis",label:"Universiteit Utrecht - Onderzoeksgids Geschiedenis (Nederlands)"},{value:"universitetet-i-oslo-rettsvitenskap",label:"Universitetet i Oslo - Rettsvitenskap (Norsk - Bokm\xE5l)"},{value:"universiti-kebangsaan-malaysia",label:"Universiti Kebangsaan Malaysia (Malay)"},{value:"university-college-dublin-school-of-history-and-archives",label:"University College Dublin - School of History & Archives"},{value:"university-college-lillebaelt-apa",label:"University College Lilleb\xE6lt - APA (Dansk)"},{value:"university-for-the-creative-arts-figures",label:"University for the Creative Arts (figures and illustrations)"},{value:"university-of-aberdeen-school-of-education-harvard",label:"University of Aberdeen - School of Education - Harvard"},{value:"university-of-aleppo-faculty-of-medicine",label:"University of Aleppo - Faculty of Medicine"},{value:"university-of-auckland-history",label:"University of Auckland - History"},{value:"university-of-bradford-harvard",label:"University of Bradford - Harvard"},{value:"university-of-cambridge-faculty-of-history",label:"University of Cambridge - Faculty of History"},{value:"university-of-gothenburg-apa-7th-edition-swedish-legislations",label:"University of Gothenburg - APA 7th edition (Swedish legislations)"},{value:"university-of-gothenburg-apa-swedish-legislations",label:"University of Gothenburg - APA 6th edition (Swedish legislations)"},{value:"university-of-helsinki-faculty-of-theology",label:"Helsingin yliopisto - Teologinen tiedekunta (Suomi)"},{value:"university-of-lincoln-harvard",label:"University of Lincoln - Harvard"},{value:"university-of-new-england-australia-note",label:"University of New England, Australia (note)"},{value:"university-of-roehampton-harvard",label:"University of Roehampton - Harvard"},{value:"university-of-south-africa-harvard",label:"University of South Africa - Harvard"},{value:"university-of-south-australia-2017-harvard",label:"University of South Australia 2017 - Harvard"},{value:"university-of-south-australia-harvard-2011",label:"University of South Australia 2011 - Harvard"},{value:"university-of-south-australia-harvard-2013",label:"University of South Australia 2013 - Harvard"},{value:"university-of-south-wales-harvard",label:"University of South Wales - Harvard"},{value:"university-of-tasmania-simplified-author-date",label:"University of Tasmania - Simplified Author-date"},{value:"university-of-york-apa",label:"University of York - APA 6th edition"},{value:"university-of-york-chicago",label:"University of York - Chicago Manual of Style 16th edition"},{value:"university-of-york-harvard-archaeology",label:"University of York - Harvard - Archaeology"},{value:"university-of-york-harvard-environment",label:"University of York - Harvard - Environment"},{value:"university-of-york-harvard",label:"University of York - Harvard"},{value:"university-of-york-ieee",label:"University of York - IEEE"},{value:"university-of-york-mhra",label:"University of York - Modern Humanities Research Association 3rd edition"},{value:"university-of-york-mla",label:"University of York - Modern Language Association 8th edition"},{value:"university-of-york-oscola",label:"University of York - OSCOLA"},{value:"university-of-york-vancouver",label:"University of York - Vancouver"},{value:"university-of-zabol-fa",label:"University of Zabol (\u0641\u0627\u0631\u0633\u06CC)"},{value:"university-of-zabol",label:"University of Zabol (English)"},{value:"univerza-na-primorskem-fakulteta-za-vede-o-zdravju-apa",label:"Univerza na Primorskem - Fakulteta za vede o zdravju - APA (Sloven\u0161\u010Dina)"},{value:"uniwersytet-im-adama-mickiewicza-w-poznaniu-wydzial-anglistyki",label:"Uniwersytet im. Adama Mickiewicza w Poznaniu - Wydzia\u0142 Anglistyki (English)"},{value:"uniwersytet-kardynala-stefana-wyszynskiego-w-warszawie-autor-rok",label:"Uniwersytet Kardyna\u0142a Stefana Wyszy\u0144skiego w Warszawie (autor-rok, Polski)"},{value:"uniwersytet-kardynala-stefana-wyszynskiego-w-warszawie-przypis",label:"Uniwersytet Kardyna\u0142a Stefana Wyszy\u0144skiego w Warszawie (przypis, Polski)"},{value:"uppsala-universitet-historia",label:"Uppsala universitet - Historia"},{value:"uppsala-universitet-institutionen-for-biologisk-grundutbildning",label:"Uppsala universitet, Institutionen f\xF6r biologisk grundutbildning"},{value:"urad-rs-za-makroekonomske-analize-in-razvoj",label:"Urad RS za makroekonomske analize in razvoj (Sloven\u0161\u010Dina)"},{value:"urban-geography",label:"Urban Geography"},{value:"urban-habitats",label:"Urban Habitats"},{value:"urban-studies",label:"Urban Studies"},{value:"urbani-izziv-en",label:"Urbani izziv (Urban Challenge) (English)"},{value:"urbani-izziv",label:"Urbani izziv (Urban Challenge) (Sloven\u0161\u010Dina)"},{value:"urological-science",label:"Urological Science"},{value:"us-geological-survey",label:"U.S. Geological Survey"},{value:"usda-forest-service-pacific-northwest-research-station",label:"USDA Forest Service - Pacific Northwest Research Station"},{value:"user-modeling-and-user-adapted-interaction",label:"User Modeling and User-Adapted Interaction"},{value:"uspekhi-gerontologii",label:"\u0423\u0441\u043F\u0435\u0445\u0438 \u0433\u0435\u0440\u043E\u043D\u0442\u043E\u043B\u043E\u0433\u0438\u0438 (\u0420\u0443\u0301\u0441\u0441\u043A\u0438\u0439)"},{value:"utah-geological-survey",label:"Utah Geological Survey"},{value:"vancouver-author-date",label:"Vancouver (author-date)"},{value:"vancouver-brackets-no-et-al",label:'Vancouver (brackets, no "et al.")'},{value:"vancouver-brackets-only-year-no-issue",label:"Vancouver (brackets, only year in date, no issue numbers)"},{value:"vancouver-brackets",label:"Vancouver (brackets)"},{value:"vancouver-fr-ca",label:"Vancouver (Fran\xE7ais - Canada)"},{value:"vancouver-imperial-college-london",label:"Imperial College London - Vancouver"},{value:"vancouver-superscript-brackets-only-year",label:"Vancouver (superscript, brackets, only year in date)"},{value:"vancouver-superscript-only-year",label:"Vancouver (superscript, only year in date, no issue numbers)"},{value:"vancouver-superscript",label:"Vancouver (superscript)"},{value:"vancouver",label:"Vancouver"},{value:"veterinaria-italiana",label:"Veterinaria Italiana"},{value:"veterinary-medicine-austria",label:"Veterinary Medicine Austria (Wiener Tier\xE4rztliche Monatsschrift)"},{value:"veterinary-microbiology",label:"Veterinary Microbiology"},{value:"veterinary-pathology",label:"Veterinary Pathology"},{value:"veterinary-radiology-and-ultrasound",label:"Veterinary Radiology & Ultrasound"},{value:"veterinary-record",label:"Veterinary Record"},{value:"victoria-university-harvard",label:"Victoria University - Harvard"},{value:"vienna-legal",label:"Vienna Legal"},{value:"vietnam-ministry-of-education-and-training-en",label:"Vietnam Ministry of Education and Training (English)"},{value:"vietnam-ministry-of-education-and-training-vi",label:"Vietnam Ministry of Education and Training (Ti\u1EBFng Vi\u1EC7t)"},{value:"vigiliae-christianae",label:"Vigiliae Christianae"},{value:"vilnius-gediminas-technical-university",label:"Vilnius Gediminas Technical University (Lietuvi\u0173 kalba)"},{value:"vingtieme-siecle",label:"Vingti\xE8me Si\xE8cle. Revue d'histoire (Fran\xE7ais)"},{value:"vita-latina-auteurs-anciens",label:"Vita Latina (auteurs anciens, Fran\xE7ais)"},{value:"vita-latina",label:"Vita Latina (Fran\xE7ais)"},{value:"vodohospodarske-technicko-ekonomicke-informace-en",label:"Vodohospod\xE1\u0159sk\xE9 technicko-ekonomick\xE9 informace (English)"},{value:"vodohospodarske-technicko-ekonomicke-informace",label:"Vodohospod\xE1\u0159sk\xE9 technicko-ekonomick\xE9 informace (\u010Ce\u0161tina)"},{value:"wader-study",label:"Wader Study"},{value:"water-alternatives",label:"Water Alternatives"},{value:"water-environment-research",label:"Water Environment Research"},{value:"water-sa",label:"Water SA"},{value:"water-science-and-technology",label:"Water Science & Technology"},{value:"waterbirds",label:"Waterbirds"},{value:"weed-research",label:"Weed Research"},{value:"weed-science-society-of-america",label:"Weed Science Society of America"},{value:"west-european-politics",label:"West European Politics"},{value:"western-journal-of-emergency-medicine",label:"Western Journal of Emergency Medicine"},{value:"westfalische-wilhelms-universitat-munster-medizinische-fakultat",label:"Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster - Medizinische Fakult\xE4t (Deutsch)"},{value:"wetlands",label:"Wetlands"},{value:"wheaton-college-phd-in-biblical-and-theological-studies",label:"Wheaton College - Ph.D. in Biblical and Theological Studies"},{value:"who-europe-harvard",label:"WHO Regional Office for Europe - Harvard"},{value:"who-europe-numeric",label:"WHO Regional Office for Europe (numeric)"},{value:"wiesbaden-business-school",label:"Wiesbaden Business School"},{value:"wikipedia-templates",label:"Wikipedia Templates"},{value:"wiley-vch-books",label:"Wiley-VCH books"},{value:"wireless-communications-and-mobile-computing",label:"Wireless Communications and Mobile Computing"},{value:"wirtschaftsuniversitat-wien-abteilung-fur-bildungswissenschaft",label:"Wirtschaftsuniversit\xE4t Wien - Abteilung f\xFCr Bildungswissenschaft (Deutsch - \xD6sterreich)"},{value:"wirtschaftsuniversitat-wien-author-date",label:"Wirtschaftsuniversit\xE4t Wien (author-date)"},{value:"wirtschaftsuniversitat-wien-handel-und-marketing",label:"Wirtschaftsuniversit\xE4t Wien - Handel und Marketing (Deutsch - \xD6sterreich)"},{value:"wirtschaftsuniversitat-wien-health-care-management",label:"Wirtschaftsuniversit\xE4t Wien - Health Care Management"},{value:"wirtschaftsuniversitat-wien-institut-fur-bwl-des-aussenhandels",label:"Wirtschaftsuniversit\xE4t Wien - Institut f\xFCr BWL des Au\xDFenhandels (Deutsch - \xD6sterreich)"},{value:"wirtschaftsuniversitat-wien-institut-fur-transportwirtschaft-und-logistik",label:"Wirtschaftsuniversit\xE4t Wien - Institut f\xFCr Transportwirtschaft und Logistik (Deutsch - \xD6sterreich)"},{value:"wirtschaftsuniversitat-wien-unternehmensrechnung-und-controlling",label:"Wirtschaftsuniversit\xE4t Wien - Unternehmensrechnung und Controlling"},{value:"wirtschaftsuniversitat-wien-wirtschaftspadagogik",label:"Wirtschaftsuniversit\xE4t Wien - Wirtschaftsp\xE4dagogik (Deutsch - \xD6sterreich)"},{value:"wissenschaftlicher-industrielogistik-dialog",label:"Wissenschaftlicher Industrielogistik-Dialog (Deutsch - \xD6sterreich)"},{value:"wolters-kluwerbrede-schrijfwijzer-author-date",label:"Wolters Kluwerbrede Schrijfwijzer (author-date, Nederlands)"},{value:"world-applied-sciences-journal",label:"World Applied Sciences Journal"},{value:"world-congress-on-engineering-asset-management",label:"World Congress on Engineering Asset Management 2010"},{value:"world-mycotoxin-journal",label:"World Mycotoxin Journal"},{value:"world-organisation-for-animal-health-scientific-and-technical-review",label:"World Organisation for Animal Health - Scientific and Technical Review"},{value:"world-politcs",label:"World Politics"},{value:"worlds-poultry-science-journal",label:"World's Poultry Science Journal"},{value:"worlds-veterinary-journal",label:"World's Veterinary Journal"},{value:"xenotransplantation",label:"Xenotransplantation"},{value:"yeast",label:"Yeast"},{value:"yozgat-bozok-universitesi-fen-bilimleri-enstitusu",label:"Yozgat Bozok \xDCniversitesi - Fen Bilimleri Enstit\xFCs\xFC (T\xFCrk\xE7e)"},{value:"zastosowania-komputerow-w-elektrotechnice",label:"Zastosowania Komputer\xF3w w Elektrotechnice"},{value:"zdfm-zeitschrift-fur-diversitatsforschung-und-management",label:"ZDfm \u2013 Zeitschrift f\xFCr Diversit\xE4tsforschung und -management (Deutsch - \xD6sterreich)"},{value:"zdravniski-vestnik",label:"Zdravni\u0161ki Vestnik (Slovenian Medical Journal)"},{value:"zeitgeschichte",label:"Zeitgeschichte (Deutsch)"},{value:"zeithistorische-forschungen",label:"Zeithistorische Forschungen/Studies in Contemporary History"},{value:"zeitschrift-fur-allgemeinmedizin",label:"Zeitschrift f\xFCr Allgemeinmedizin"},{value:"zeitschrift-fur-antikes-christentum",label:"Zeitschrift f\xFCr Antikes Christentum (Journal of Ancient Christianity) (English)"},{value:"zeitschrift-fur-deutsche-philologie",label:"Zeitschrift f\xFCr deutsche Philologie (Deutsch)"},{value:"zeitschrift-fur-die-geschichte-des-oberrheins",label:"Zeitschrift f\xFCr die Geschichte des Oberrheins (Deutsch)"},{value:"zeitschrift-fur-digitale-geisteswissenschaften",label:"Zeitschrift f\xFCr digitale Geisteswissenschaften (Deutsch)"},{value:"zeitschrift-fur-fantastikforschung",label:"Zeitschrift f\xFCr Fantastikforschung (Deutsch)"},{value:"zeitschrift-fur-geschichtsdidaktik",label:"Zeitschrift f\xFCr Geschichtsdidaktik (Deutsch)"},{value:"zeitschrift-fur-internationale-beziehungen",label:"Zeitschrift f\xFCr Internationale Beziehungen (Deutsch)"},{value:"zeitschrift-fur-kunstgeschichte",label:"Zeitschrift f\xFCr Kunstgeschichte"},{value:"zeitschrift-fur-medien-und-kulturforschung",label:"Zeitschrift f\xFCr Medien- und Kulturforschung (Deutsch)"},{value:"zeitschrift-fur-medienwissenschaft",label:"Zeitschrift f\xFCr Medienwissenschaft (Deutsch)"},{value:"zeitschrift-fur-ostmitteleuropa-forschung",label:"Zeitschrift f\xFCr Ostmitteleuropa-Forschung (Deutsch)"},{value:"zeitschrift-fur-padagogik",label:"Zeitschrift f\xFCr P\xE4dagogik (Deutsch)"},{value:"zeitschrift-fur-papyrologie-und-epigraphik",label:"Zeitschrift f\xFCr Papyrologie und Epigraphik"},{value:"zeitschrift-fur-parlamentsfragen",label:"Zeitschrift f\xFCr Parlamentsfragen (Deutsch)"},{value:"zeitschrift-fur-politik",label:"Zeitschrift f\xFCr Politik (German)"},{value:"zeitschrift-fur-qualitative-forschung",label:"Zeitschrift f\xFCr Qualitative Forschung (Deutsch)"},{value:"zeitschrift-fur-religionswissenschaft-author-date",label:"Zeitschrift f\xFCr Religionswissenschaft (author-date)"},{value:"zeitschrift-fur-religionswissenschaft-note",label:"Zeitschrift f\xFCr Religionswissenschaft (note)"},{value:"zeitschrift-fur-soziologie",label:"Zeitschrift f\xFCr Soziologie (Deutsch)"},{value:"zeitschrift-fur-theologie-und-kirche",label:"Zeitschrift f\xFCr Theologie und Kirche (Deutsch)"},{value:"zeitschrift-fur-theologie-und-philosophie",label:"Zeitschrift f\xFCr Theologie und Philosophie"},{value:"zeitschrift-fur-zahnarztliche-implantologie",label:"Zeitschrift f\xFCr Zahn\xE4rztliche Implantologie (Deutsch)"},{value:"zeszyty-prawnicze-bas",label:"Zeszyty Prawnicze BAS (Polski)"},{value:"zilsel",label:"Zilsel (Fran\xE7ais)"},{value:"zitierguide-leitfaden-zum-fachgerechten-zitieren-in-rechtswissenschaftlichen-arbeiten",label:"ZitierGuide: Leitfaden zum fachgerechten Zitieren in rechtswissenschaftlichen Arbeiten (Roger M\xFCller) (Deutsch - Schweiz)"},{value:"zoological-journal-of-the-linnean-society",label:"Zoological Journal of the Linnean Society"},{value:"zootaxa",label:"Zootaxa"},{value:"zwitscher-maschine",label:"Zwitscher-Maschine"},{value:"jm-azr-erstzitat-kurz-mit-verzeichnissen",label:"JM AZR (Erstzitat kurz mit Verzeichnissen)"},{value:"jm-azr",label:"JM AZR"},{value:"jm-chicago-fullnote-bibliography-nagoya",label:"JM Chicago Manual of Style 16th edition (full note) [Nagoya]"},{value:"jm-chicago-fullnote-bibliography-polyglot",label:"JM Chicago Manual of Style 16th edition (full note, polyglot)"},{value:"jm-chicago-fullnote-bibliography",label:"JM Chicago Manual of Style 16th edition (full note)"},{value:"jm-chinese-gb7714-2005-numeric",label:"JM Chinese Std GB/T 7714-2005 (numeric, Chinese)"},{value:"jm-diritto-pubblico-comparato-ed-europeo",label:"JM Diritto pubblico comparato ed europeo"},{value:"harvard-australian-national-university",label:"JM Harvard - Australian National University"},{value:"jm-ibfd-with-page-label",label:"JM IBFD Standard Citations and References (with page label)"},{value:"jm-ibfd",label:"JM IBFD Standard Citations and References"},{value:"jm-indigobook-law-review",label:"JM Indigo Book Law Review"},{value:"jm-indigobook",label:"JM Indigo Book"},{value:"japan-sociological-society",label:"\u65E5\u672C\u793E\u4F1A\u5B66\u4F1A (author-date, Japanese)"},{value:"jm-leg-cit-literaturverzeichnis",label:"JM leg cit mit Literaturverzeichnis"},{value:"jm-leg-cit-ohne-verzeichnisse",label:"JM leg cit ohne Verzeichnisse"},{value:"jm-leg-cit-rechtsquellenverzeichnis-literaturverzeichnis",label:"JM leg cit mit Rechtsquellenverzeichnis und Literaturverzeichnis"},{value:"jm-mgcill-v9",label:"JM - Canadian Guide to Uniform Legal Citation (9th edition) / Manuel canadien de la r\xE9f\xE9rence juridique (9\u1D49 \xE9dition)"},{value:"jm-new-zealand-law",label:"JM New Zealand Law Style"},{value:"jm-oscola",label:"JM OSCOLA - Oxford Standard for Citation of Legal Authorities"},{value:"jm-taylor-and-francis-chicago-author-date",label:"JM Taylor & Francis - Chicago Manual of Style (author-date)"},{value:"jm-turabian-fullnote-bibliography-eu-multi",label:"JM Turabian 8th edition (full note, EU multilingual)"},{value:"jm-turabian-fullnote-bibliography-nl-multi",label:"JM Turabian 8th edition (full note, Dutch multilingual)"},{value:"jm-vis-moot-1",label:"JM Vis Moot variant 1"},{value:"jm-wirtschaftsuniversitat-wien-steuerrecht",label:"JM Wirtschaftsuniversit\xE4t Wien \u2013 Steuerrecht"},{value:"juris-eu.int",label:"Verwijzingen en Afkortingen (Belgium)"}],j_=new qt(qr,{keys:["label"],minMatchCharLength:3});var Xr={input:e=>({...e,color:"var(--text-normal)"}),singleValue:e=>({...e,color:"var(--text-normal)"}),menu:e=>({...e,backgroundColor:"var(--background-modifier-form-field)",color:"var(--text-normal)"}),option:(e,{isFocused:t,isSelected:a})=>({...e,backgroundColor:t?"var(--interactive-accent)":a?"var(--background-modifier-hover)":void 0,color:t?"var(--text-on-accent)":"var(--text-normal)"}),control:(e,t)=>({...e,backgroundColor:"var(--background-modifier-form-field)",color:"var(--text-normal)",borderColor:t.isFocused?"var(--interactive-accent)":"var(--background-modifier-border)",boxShadow:t.isFocused?"0 0 0 1px var(--interactive-accent)":"none",":hover":{borderColor:t.isFocused?"var(--interactive-accent)":"var(--background-modifier-border)"}})};function cD(e){return j_.search(e).map(t=>t.item)}var L_=0;function Pc(e,t){e===""?t([]):(clearTimeout(L_),L_=activeWindow.setTimeout(()=>{t([{value:e,label:e},...cD(e)])},150))}function Oc(){return I.createElement("span",null,"Type to search CSL styles")}function D_(){return I.createElement("span",null,"Type to search")}function z_(){let e=app.vault.getMarkdownFiles();return new qt(e,{keys:["basename"],minMatchCharLength:2})}var M_=0,G_=e=>(t,a)=>{t===""?a([]):(clearTimeout(M_),M_=activeWindow.setTimeout(()=>{a(e.search(t).map(n=>({value:n.item.path,label:n.item.path})))},150))};function H_({format:e,index:t,updateFormat:a,removeFormat:n}){let i=I.useMemo(()=>{if(!e.cslStyle)return;let p=qr.find(b=>b.value===e.cslStyle);return p||{label:e.cslStyle,value:e.cslStyle}},[e.cslStyle]),r=I.useCallback(p=>{a(t,{...e,name:p.target.value})},[a,t,e]),o=I.useCallback(p=>{let b=p.target.value,d={...e,format:b};b==="latex"?d.command="cite":b==="biblatex"?d.command="autocite":d.command&&delete d.command,d.format!=="template"&&d.template&&delete d.template,d.format!=="pandoc"&&d.brackets&&delete d.brackets,a(t,d)},[a,t,e]),s=I.useCallback(p=>{a(t,{...e,template:p.target.value})},[a,t,e]),l=I.useCallback(p=>{a(t,{...e,cslStyle:p==null?void 0:p.value})},[a,t,e]),u=I.useCallback(p=>{a(t,{...e,command:p.target.value})},[a,t,e]),c=I.useCallback(()=>{a(t,{...e,brackets:!e.brackets})},[a,t,e]),f=I.useCallback(()=>{n(t)},[n,t]);return I.createElement("div",{className:"zt-format"},I.createElement("div",{className:"zt-format__form"},I.createElement("div",{className:"zt-format__label"},"Name"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement("input",{onChange:r,type:"text",value:e.name}),I.createElement("div",{className:"zt-format__delete"},I.createElement("button",{className:"zt-format__delete-btn",onClick:f},I.createElement(ca,{name:"trash"}))))),I.createElement("div",{className:"zt-format__form"},I.createElement("div",{className:"zt-format__label"},"Output Format"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement("select",{className:"dropdown",defaultValue:e.format,onChange:o},I.createElement("option",{value:"latex"},"LaTeX"),I.createElement("option",{value:"biblatex"},"BibLaTeX"),I.createElement("option",{value:"pandoc"},"Pandoc"),I.createElement("option",{value:"formatted-citation"},"Formatted Citation"),I.createElement("option",{value:"formatted-bibliography"},"Formatted Bibliography"),I.createElement("option",{value:"template"},"Template")))),e.format==="template"&&I.createElement("div",{className:"zt-format__form"},I.createElement("div",{className:"zt-format__label"},"Template"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement("textarea",{rows:4,onChange:s,value:e.template})),I.createElement("div",{className:"zt-format__input-note"},"Citation templates have access to a subset of the Zotero item's data. The item's first attachement is available under the"," ",I.createElement("pre",null,"attachment")," key. Annotations are not provided. Open the data explorer from the command pallet to see available template data. Templates are written using"," ",I.createElement("a",{href:"https://mozilla.github.io/nunjucks/templating.html#variables",target:"_blank",rel:"noreferrer"},"Nunjucks"),"."," ",I.createElement("a",{href:"https://github.com/mgmeyers/obsidian-zotero-integration/blob/main/docs/Templating.md",target:"_blank",rel:"noreferrer"},"See the templating documentation here"),".")),["formatted-citation","formatted-bibliography","template"].contains(e.format)&&I.createElement("div",{className:"zt-format__form"},I.createElement("div",{className:"zt-format__label"},e.format==="template"?"Bibliography Style":"Citation Style"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement(Jr,{noOptionsMessage:Oc,placeholder:"Search...",cacheOptions:!0,defaultValue:i,className:"zt-multiselect",loadOptions:Pc,isClearable:!0,onChange:l,styles:Xr})),I.createElement("div",{className:"zt-format__input-note"},"Note, the chosen style must be installed in Zotero. See"," ",I.createElement("a",{target:"_blank",href:"https://www.zotero.org/support/styles",rel:"noreferrer"},"Zotero: Citation Styles"))),["latex","biblatex"].contains(e.format)&&I.createElement("div",{className:"zt-format__form"},I.createElement("div",{className:"zt-format__label"},"Citation Command"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement("input",{type:"text",value:e.command,onChange:u}))),e.format==="pandoc"&&I.createElement("div",{className:"zt-format__form"},I.createElement("div",{className:"zt-format__label"},"Include Brackets"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement("div",{onClick:c,className:`checkbox-container${e.brackets?" is-enabled":""}`}))))}function W_({format:e,index:t,updateFormat:a,removeFormat:n}){let i=I.useMemo(()=>{let f=z_();return G_(f)},[]),r=I.useMemo(()=>{if(!e.templatePath)return;let f=app.vault.getMarkdownFiles().find(p=>p.path===e.templatePath);return f?{value:f.path,label:f.path}:void 0},[e.templatePath]),o=I.useMemo(()=>{if(!e.cslStyle)return;let f=qr.find(p=>p.value===e.cslStyle);return f||{label:e.cslStyle,value:e.cslStyle}},[e.cslStyle]),s=I.useCallback(f=>{let p=f.target.dataset.key;a(t,{...e,[p]:f.target.value})},[a,t,e]),l=I.useCallback(f=>{a(t,{...e,cslStyle:f==null?void 0:f.value})},[a,t,e]),u=I.useCallback(f=>{a(t,{...e,templatePath:f==null?void 0:f.value})},[a,t,e]),c=I.useCallback(()=>{n(t)},[n,t]);return I.createElement("div",{className:"zt-format"},I.createElement("div",{className:"zt-format__form"},I.createElement("div",{className:"zt-format__label"},"Name"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement("input",{onChange:s,type:"text","data-key":"name",value:e.name}),I.createElement("div",{className:"zt-format__delete"},I.createElement("button",{className:"zt-format__delete-btn",onClick:c},I.createElement(ca,{name:"trash"}))))),I.createElement("div",{className:"zt-format__form"},I.createElement("div",{className:"zt-format__label"},"Output Path"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement("input",{onChange:s,type:"text","data-key":"outputPathTemplate",value:e.outputPathTemplate})),I.createElement("div",{className:"zt-format__input-note"},"The file path of the exported markdown. Supports templating, eg"," ",I.createElement("pre",null,"My Folder/","{{citekey}}",".md"),". Templates have access to data from the Zotero item and its first attachment.")),I.createElement("div",{className:"zt-format__form"},I.createElement("div",{className:"zt-format__label"},"Image Output Path"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement("input",{onChange:s,type:"text","data-key":"imageOutputPathTemplate",value:e.imageOutputPathTemplate})),I.createElement("div",{className:"zt-format__input-note"},"The folder in which images should be saved. Supports templating, eg"," ",I.createElement("pre",null,"Assets/","{{citekey}}","/"),". Templates have access to data from the Zotero item and its first attachment.")),I.createElement("div",{className:"zt-format__form"},I.createElement("div",{className:"zt-format__label"},"Image Base Name"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement("input",{onChange:s,type:"text","data-key":"imageBaseNameTemplate",value:e.imageBaseNameTemplate})),I.createElement("div",{className:"zt-format__input-note"},"The base file name of exported images. Eg. ",I.createElement("pre",null,"image")," will result in ",I.createElement("pre",null,"image-1-x123-y456.jpg")," where ",I.createElement("pre",null,"1")," is the page number and ",I.createElement("pre",null,"x123")," and ",I.createElement("pre",null,"y456")," are the x and y coordinates of rectangle annotation on the page. Supports templating. Templates have access to data from the Zotero item and its first attachment.")),I.createElement("div",{className:"zt-format__form"},I.createElement("div",{className:"zt-format__label"},"Template File"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement(Jr,{noOptionsMessage:D_,placeholder:"Search...",cacheOptions:!0,defaultValue:r,className:"zt-multiselect",loadOptions:i,isClearable:!0,onChange:u,styles:Xr})),I.createElement("div",{className:"zt-format__input-note"},"Open the data explorer from the command pallet to see available template data. Templates are written using"," ",I.createElement("a",{href:"https://mozilla.github.io/nunjucks/templating.html#variables",target:"_blank",rel:"noreferrer"},"Nunjucks"),"."," ",I.createElement("a",{href:"https://github.com/mgmeyers/obsidian-zotero-integration/blob/main/docs/Templating.md",target:"_blank",rel:"noreferrer"},"See the templating documentation here"),".")),e.headerTemplatePath&&I.createElement("div",{className:"zt-format__form is-deprecated"},I.createElement("div",{className:"zt-format__label"},"Header Template File (deprecated)"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement("input",{type:"text",disabled:!0,value:e.headerTemplatePath}),I.createElement("button",{className:"mod-warning",onClick:()=>{a(t,{...e,headerTemplatePath:void 0})}},"Remove Template")),I.createElement("div",{className:"zt-format__input-note"},"Deprecated: Separate template files are no longer needed."," ",I.createElement("a",{href:"https://github.com/mgmeyers/obsidian-zotero-integration/blob/main/docs/Templating.md",target:"_blank",rel:"noreferrer"},"See the templating documentation here"),".")),e.annotationTemplatePath&&I.createElement("div",{className:"zt-format__form is-deprecated"},I.createElement("div",{className:"zt-format__label"},"Annotation Template File (deprecated)"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement("input",{type:"text",disabled:!0,value:e.annotationTemplatePath}),I.createElement("button",{className:"mod-warning",onClick:()=>{a(t,{...e,annotationTemplatePath:void 0})}},"Remove Template")),I.createElement("div",{className:"zt-format__input-note"},"Deprecated: Separate template files are no longer needed."," ",I.createElement("a",{href:"https://github.com/mgmeyers/obsidian-zotero-integration/blob/main/docs/Templating.md",target:"_blank",rel:"noreferrer"},"See the templating documentation here"),".")),e.footerTemplatePath&&I.createElement("div",{className:"zt-format__form is-deprecated"},I.createElement("div",{className:"zt-format__label"},"Footer Template File (deprecated)"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement("input",{type:"text",disabled:!0,value:e.footerTemplatePath}),I.createElement("button",{className:"mod-warning",onClick:()=>{a(t,{...e,footerTemplatePath:void 0})}},"Remove Template")),I.createElement("div",{className:"zt-format__input-note"},"Deprecated: Separate template files are no longer needed."," ",I.createElement("a",{href:"https://github.com/mgmeyers/obsidian-zotero-integration/blob/main/docs/Templating.md",target:"_blank",rel:"noreferrer"},"See the templating documentation here"),".")),I.createElement("div",{className:"zt-format__form"},I.createElement("div",{className:"zt-format__label"},"Bilbiography Style"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement(Jr,{noOptionsMessage:Oc,placeholder:"Search...",cacheOptions:!0,defaultValue:o,className:"zt-multiselect",loadOptions:Pc,isClearable:!0,onChange:l,styles:Xr})),I.createElement("div",{className:"zt-format__input-note"},"Note, the chosen style must be installed in Zotero. See"," ",I.createElement("a",{target:"_blank",href:"https://www.zotero.org/support/styles",rel:"noreferrer"},"Zotero: Citation Styles"))))}function uD({settings:e,addCiteFormat:t,updateCiteFormat:a,removeCiteFormat:n,addExportFormat:i,updateExportFormat:r,removeExportFormat:o,updateSetting:s}){let[l,u]=I.useState(e.citeFormats),[c,f]=I.useState(e.exportFormats),[p,b]=I.useState(!!e.openNoteAfterImport),[d,m]=I.useState(e.pdfExportImageOCR),[h,v]=I.useState(!!e.shouldConcat),x=I.useCallback((0,Ja.debounce)((F,B)=>{u(a(F,B))},200,!0),[a]),E=I.useCallback(()=>{u(t({name:`Format #${l.length+1}`,format:"formatted-citation"}))},[t,l]),g=I.useCallback(F=>{u(n(F))},[n]),w=I.useCallback((0,Ja.debounce)((F,B)=>{f(r(F,B))},200,!0),[r]),C=I.useCallback(()=>{f(i({name:`Import #${c.length+1}`,outputPathTemplate:"{{citekey}}.md",imageOutputPathTemplate:"{{citekey}}/",imageBaseNameTemplate:"image"}))},[i,l]),y=I.useCallback(F=>{f(o(F))},[o]),S=I.useRef(null),A=I.useRef(null),[_,P]=I.useState(e.database==="Custom");return I.createElement("div",null,I.createElement(He,{name:"General Settings",isHeading:!0}),I.createElement(qA,{settings:e,updateSetting:s}),I.createElement(He,{name:"Database",description:"Supports Zotero and Juris-M. Alternatively a custom port number can be specified."},I.createElement("select",{className:"dropdown",defaultValue:e.database,onChange:F=>{let B=F.target.value;s("database",B),P(B==="Custom")}},I.createElement("option",{value:"Zotero"},"Zotero"),I.createElement("option",{value:"Juris-M"},"Juris-M"),I.createElement("option",{value:"Custom"},"Custom"))),_?I.createElement(He,{name:"Port number",description:"If a custom port number has been set in Zotero, enter it here."},I.createElement("input",{onChange:F=>s("port",F.target.value),type:"number",placeholder:"Example: 23119",defaultValue:e.port})):null,I.createElement(He,{name:"Note Import Location",description:"Notes imported from Zotero will be added to this folder in your vault"},I.createElement("input",{onChange:F=>s("noteImportFolder",F.target.value),type:"text",spellCheck:!1,placeholder:"Example: folder 1/folder 2",defaultValue:e.noteImportFolder})),I.createElement(He,{name:"Open the created or updated note(s) after import",description:"The created or updated markdown files resulting from the import will be automatically opened."},I.createElement("div",{onClick:()=>{b(F=>(s("openNoteAfterImport",!F),!F))},className:`checkbox-container${p?" is-enabled":""}`})),I.createElement(He,{name:"Which notes to open after import",description:"Open either the first note imported, the last note imported, or all notes in new tabs."},I.createElement("select",{className:"dropdown",defaultValue:e.whichNotesToOpenAfterImport,disabled:!e.openNoteAfterImport,onChange:F=>s("whichNotesToOpenAfterImport",F.target.value)},I.createElement("option",{value:"first-imported-note"},"First imported note"),I.createElement("option",{value:"last-imported-note"},"Last imported note"),I.createElement("option",{value:"all-imported-notes"},"All imported notes"))),I.createElement(He,{name:"Enable Annotation Concatenation",description:"Annotations extracted from PDFs that begin with '+' will be appended to the previous annotation. Note: Annotation ordering is not always consistent and you may not always acheive the desire concatenation result"},I.createElement("div",{onClick:()=>{v(F=>(s("shouldConcat",!F),!F))},className:`checkbox-container${h?" is-enabled":""}`})),I.createElement(He,{name:"Citation Formats",isHeading:!0}),I.createElement(He,null,I.createElement("button",{onClick:E,className:"mod-cta"},"Add Citation Format")),l.map((F,B)=>I.createElement(H_,{key:B,format:F,index:B,updateFormat:x,removeFormat:g})),I.createElement(He,{name:"Import Formats",isHeading:!0}),I.createElement(He,null,I.createElement("button",{onClick:C,className:"mod-cta"},"Add Import Format")),c.map((F,B)=>I.createElement(W_,{key:c.length-B,format:F,index:B,updateFormat:w,removeFormat:y})),I.createElement(He,{name:"Import Image Settings",description:"Rectangle annotations will be extracted from PDFs as images.",isHeading:!0}),I.createElement(He,{name:"Image Format"},I.createElement("select",{className:"dropdown",defaultValue:e.pdfExportImageFormat,onChange:F=>s("pdfExportImageFormat",F.target.value)},I.createElement("option",{value:"jpg"},"jpg"),I.createElement("option",{value:"png"},"png"))),I.createElement(He,{name:"Image Quality (jpg only)"},I.createElement("input",{min:"0",max:"100",onChange:F=>s("pdfExportImageQuality",Number(F.target.value)),type:"number",defaultValue:e.pdfExportImageQuality.toString()})),I.createElement(He,{name:"Image DPI"},I.createElement("input",{min:"0",onChange:F=>s("pdfExportImageDPI",Number(F.target.value)),type:"number",defaultValue:e.pdfExportImageDPI.toString()})),I.createElement(He,{name:"Image OCR",description:I.createElement("div",null,"Attempt to extract text from images created by rectangle annotations. This requires that"," ",I.createElement("a",{href:"https://tesseract-ocr.github.io/tessdoc/",target:"_blank",rel:"noreferrer"},"tesseract")," ","be installed on your system. Tesseract can be installed from",I.createElement("a",{href:"https://brew.sh/",target:"_blank",rel:"noreferrer"},"homebrew on mac"),", various linux package managers, and from"," ",I.createElement("a",{href:"https://github.com/UB-Mannheim/tesseract/wiki",target:"_blank",rel:"noreferrer"},"here on windows"),".")},I.createElement("div",{onClick:()=>m(F=>(s("pdfExportImageOCR",!F),!F)),className:`checkbox-container${d?" is-enabled":""}`})),I.createElement(He,{name:"Tesseract path",description:I.createElement("div",null,"Required: An absolute path to the tesseract executable. This can be found on mac and linux with the terminal command"," ",I.createElement("pre",null,"which tesseract"))},I.createElement("input",{ref:S,onChange:F=>s("pdfExportImageTesseractPath",F.target.value),type:"text",defaultValue:e.pdfExportImageTesseractPath}),I.createElement("div",{className:"clickable-icon setting-editor-extra-setting-button","aria-label":"Attempt to find tesseract automatically",onClick:async()=>{try{let F=await(0,V_.default)("tesseract");F?(S.current.value=F,s("pdfExportImageTesseractPath",F)):new Ja.Notice("Unable to find tesseract on your system. If it is installed, please manually enter a path.")}catch(F){new Ja.Notice("Unable to find tesseract on your system. If it is installed, please manually enter a path."),console.error(F)}}},I.createElement(ca,{name:"magnifying-glass"}))),I.createElement(He,{name:"Image OCR Language",description:I.createElement("div",null,"Optional: defaults to english. Multiple languages can be specified like so: ",I.createElement("pre",null,"eng+deu"),". Each language must be installed on your system."," ",I.createElement("a",{href:"https://github.com/tesseract-ocr/tessdata",target:"_blank",rel:"noreferrer"},"Languages can be downloaded here"),". (See"," ",I.createElement("a",{href:"https://tesseract-ocr.github.io/tessdoc/Data-Files-in-different-versions.html",target:"_blank",rel:"noreferrer"},"here for a description of the language codes"),")")},I.createElement("input",{onChange:F=>s("pdfExportImageOCRLang",F.target.value),type:"text",defaultValue:e.pdfExportImageOCRLang})),I.createElement(He,{name:"Tesseract data directory",description:"Optional: supply an absolute path to the directory where tesseract's language files reside. This folder should include *.traineddata files for your selected languages."},I.createElement("input",{ref:A,onChange:F=>s("pdfExportImageTessDataDir",F.target.value),type:"text",defaultValue:e.pdfExportImageTessDataDir}),I.createElement("div",{className:"clickable-icon setting-editor-extra-setting-button","aria-label":"Select the tesseract data directory",onClick:()=>{let F=require("electron").remote.dialog.showOpenDialogSync({properties:["openDirectory"]});F&&F.length&&(A.current.value=F[0],s("pdfExportImageTessDataDir",F[0]))}},I.createElement(ca,{name:"lucide-folder-open"}))))}var Rc=class extends Ja.PluginSettingTab{constructor(a,n){super(a,n);this.addCiteFormat=a=>(this.plugin.addFormatCommand(a),this.plugin.settings.citeFormats.unshift(a),this.debouncedSave(),this.plugin.settings.citeFormats.slice());this.updateCiteFormat=(a,n)=>(this.plugin.removeFormatCommand(this.plugin.settings.citeFormats[a]),this.plugin.addFormatCommand(n),this.plugin.settings.citeFormats[a]=n,this.debouncedSave(),this.plugin.settings.citeFormats.slice());this.removeCiteFormat=a=>(this.plugin.removeFormatCommand(this.plugin.settings.citeFormats[a]),this.plugin.settings.citeFormats.splice(a,1),this.debouncedSave(),this.plugin.settings.citeFormats.slice());this.addExportFormat=a=>(this.plugin.addExportCommand(a),this.plugin.settings.exportFormats.unshift(a),this.debouncedSave(),this.plugin.settings.exportFormats.slice());this.updateExportFormat=(a,n)=>(this.plugin.removeExportCommand(this.plugin.settings.exportFormats[a]),this.plugin.addExportCommand(n),this.plugin.settings.exportFormats[a]=n,this.debouncedSave(),this.plugin.settings.exportFormats.slice());this.removeExportFormat=a=>(this.plugin.removeExportCommand(this.plugin.settings.exportFormats[a]),this.plugin.settings.exportFormats.splice(a,1),this.debouncedSave(),this.plugin.settings.exportFormats.slice());this.updateSetting=(a,n)=>{this.plugin.settings[a]=n,this.debouncedSave()};this.plugin=n}display(){I.render(I.createElement(uD,{settings:this.plugin.settings,addCiteFormat:this.addCiteFormat,updateCiteFormat:this.updateCiteFormat,removeCiteFormat:this.removeCiteFormat,addExportFormat:this.addExportFormat,updateExportFormat:this.updateExportFormat,removeExportFormat:this.removeExportFormat,updateSetting:this.updateSetting}),this.containerEl)}debouncedSave(){clearTimeout(this.dbTimer),this.dbTimer=activeWindow.setTimeout(()=>{this.plugin.saveSettings()},150)}hide(){super.hide(),I.unmountComponentAtNode(this.containerEl)}};var U_="obsidian-zotero-desktop-connector:",J_="zdc-",Z_="zdc-exp-",pD={database:"Zotero",noteImportFolder:"",pdfExportImageDPI:120,pdfExportImageFormat:"jpg",pdfExportImageQuality:90,citeFormats:[],exportFormats:[],citeSuggestTemplate:"[[{{citekey}}]]",openNoteAfterImport:!1,whichNotesToOpenAfterImport:"first-imported-note"};async function dD(){if(process.platform!=="win32")try{let e=await dv();process.env.PATH=e||["./node_modules/.bin","/.nodebrew/current/bin","/usr/local/bin",process.env.PATH].join(":")}catch(e){console.error(e)}}var Bc=class extends En.Plugin{async onload(){await this.loadSettings(),this.emitter=new En.Events,this.updatePDFUtility(),this.addSettingTab(new Rc(this.app,this)),this.registerView(Un,a=>new Os(this,a)),this.settings.citeFormats.forEach(a=>{this.addFormatCommand(a)}),this.settings.exportFormats.forEach(a=>{this.addExportCommand(a)}),this.addCommand({id:"zdc-insert-notes",name:"Insert notes into current document",editorCallback:a=>{var i;let n={database:this.settings.database,port:this.settings.port};xp(n,(i=this.app.workspace.getActiveFile())==null?void 0:i.parent.path).then(r=>{r&&Wx(a,r)})}}),this.addCommand({id:"zdc-import-notes",name:"Import notes",callback:()=>{let a={database:this.settings.database,port:this.settings.port};xp(a,this.settings.noteImportFolder).then(n=>n?Vx(this.settings.noteImportFolder,n):[]).then(n=>this.openNotes(n))}}),this.addCommand({id:"show-zotero-debug-view",name:"Data explorer",callback:()=>{this.activateDataExplorer()}}),this.registerEvent(this.app.vault.on("modify",a=>{a instanceof En.TFile&&this.emitter.trigger("fileUpdated",a)})),app.workspace.trigger("parse-style-settings"),dD()}onunload(){this.settings.citeFormats.forEach(a=>{this.removeFormatCommand(a)}),this.settings.exportFormats.forEach(a=>{this.removeExportCommand(a)}),this.app.workspace.detachLeavesOfType(Un)}addFormatCommand(a){this.addCommand({id:`${J_}${a.name}`,name:a.name,editorCallback:n=>{let i={database:this.settings.database,port:this.settings.port};a.format==="template"&&a.template.trim()?Yx({database:i,format:a}).then(r=>{typeof r=="string"&&n.replaceSelection(r)}):Mx(a,i).then(r=>{typeof r=="string"&&n.replaceSelection(r)})}})}removeFormatCommand(a){this.app.commands.removeCommand(`${U_}${J_}${a.name}`)}addExportCommand(a){this.addCommand({id:`${Z_}${a.name}`,name:a.name,callback:async()=>{let n={database:this.settings.database,port:this.settings.port};this.openNotes(await Ep({settings:this.settings,database:n,exportFormat:a}))}})}removeExportCommand(a){this.app.commands.removeCommand(`${U_}${Z_}${a.name}`)}async runImport(a,n,i=1){let r=this.settings.exportFormats.find(s=>s.name===a);if(!r)throw new Error(`Error: Import format "${a}" not found`);let o={database:this.settings.database,port:this.settings.port};n.startsWith("@")&&(n=n.substring(1)),await Ep({settings:this.settings,database:o,exportFormat:r},[{key:n,library:i}])}async openNotes(a){let n=[];if(this.settings.openNoteAfterImport)switch(this.settings.whichNotesToOpenAfterImport){case"first-imported-note":{n.push(a[0]);break}case"last-imported-note":{n.push(a[a.length-1]);break}case"all-imported-notes":{n.push(...a);break}}await new Promise(r=>setTimeout(r,1e3));let i=this.app.workspace.getLeavesOfType("markdown");for(let r of n){let o=this.app.vault.getAbstractFileByPath(r),s=i.find(l=>l.view.file===o);s?app.workspace.revealLeaf(s):o instanceof En.TFile&&await this.app.workspace.getLeaf(!0).openFile(o)}}async loadSettings(){let a=await this.loadData();this.settings={...pD,...a}}async saveSettings(){this.emitter.trigger("settingsUpdated"),await this.saveData(this.settings)}deactivateDataExplorer(){this.app.workspace.detachLeavesOfType(Un)}async activateDataExplorer(){this.deactivateDataExplorer(),await this.app.workspace.createLeafBySplit(this.app.workspace.activeLeaf,"vertical").setViewState({type:Un})}async updatePDFUtility(){let{exeOverridePath:a,_exeInternalVersion:n,exeVersion:i}=this.settings;if(!(a||!i)&&(i!==Va||!n||n!==Cf)){let r=new nt(app,"Updating Obsidian Zotero Integration PDF Utility...");r.open();try{await Af()&&(this.settings.exeVersion=Va,this.settings._exeInternalVersion=Cf,this.saveSettings())}catch(o){}r.close()}}}; /*! Bundled license information: nunjucks/browser/nunjucks.js: diff --git a/.obsidian/plugins/obsidian-zotero-desktop-connector/manifest.json b/.obsidian/plugins/obsidian-zotero-desktop-connector/manifest.json index e6fc513..c513dbc 100644 --- a/.obsidian/plugins/obsidian-zotero-desktop-connector/manifest.json +++ b/.obsidian/plugins/obsidian-zotero-desktop-connector/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-zotero-desktop-connector", "name": "Zotero Integration", - "version": "3.1.1", + "version": "3.1.7", "minAppVersion": "1.1.1", "description": "Insert and import citations, bibliographies, notes, and PDF annotations from Zotero.", "author": "mgmeyers", diff --git a/.obsidian/plugins/table-editor-obsidian/main.js b/.obsidian/plugins/table-editor-obsidian/main.js index a3dfb9a..231b82d 100644 --- a/.obsidian/plugins/table-editor-obsidian/main.js +++ b/.obsidian/plugins/table-editor-obsidian/main.js @@ -4,7 +4,7 @@ var obsidian = require('obsidian'); var state = require('@codemirror/state'); var view = require('@codemirror/view'); -/*! ***************************************************************************** +/****************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any @@ -18,7 +18,7 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */ -/* global Reflect, Promise */ +/* global Reflect, Promise, SuppressedError, Symbol */ var extendStatics = function(d, b) { extendStatics = Object.setPrototypeOf || @@ -28,6 +28,8 @@ var extendStatics = function(d, b) { }; function __extends(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); @@ -60,7 +62,7 @@ function __generator(thisArg, body) { function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); - while (_) try { + while (g && (g = 0, op[0] && (_ = 0)), _) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { @@ -82,6 +84,11 @@ function __generator(thisArg, body) { } } +typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; +}; + var icons = { spreadsheet: "\n<svg version=\"1.1\" viewBox=\"0 0 482.81 482.81\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill=\"currentColor\" d=\"m457.58 25.464-432.83 0.42151c-13.658 0.013314-24.758 11.115-24.757 24.757l0.031024 347.45c7.4833e-4 8.3808 4.211 15.772 10.608 20.259 3.4533 2.4499 5.0716 3.2901 8.879 3.9022 1.7033 0.37333 3.4561 0.59471 5.2692 0.59294l432.84-0.42151c1.809-1e-3 3.5618-0.21823 5.2568-0.59294h1.2174v-0.37196c10.505-2.8727 18.279-12.397 18.278-23.788l-0.031-347.43c1e-3 -13.649-11.107-24.763-24.768-24.763zm3.5453 24.763v71.344h-163.31v-74.886h159.76c1.9641 0.0014 3.5467 1.5922 3.5467 3.5425zm-1.6737 350.37h-161.6v-67.207h163.31v64.268c1e-3 1.2572-0.70549 2.321-1.7033 2.9386zm-438.21-2.5171v-64.268h76.646v67.207h-74.942c-0.99784-0.61765-1.7033-1.6814-1.7033-2.9386zm255.28-155.18v69.688h-157.42v-69.688zm0 90.913v67.207h-157.42v-67.207zm-0.031-211.83h-157.42v-74.886h157.42zm0 21.226v77.826h-157.42v-77.826zm-178.64 77.826h-76.646v-77.826h76.646zm0.03102 21.862v69.688h-76.646v-69.688zm199.95 69.268v-69.697h163.31v69.697zm-0.031-91.552v-77.826h163.31v77.826z\" stroke-width=\"1.3725\"/>\n</svg>", alignLeft: "\n<svg class=\"widget-icon\" enable-background=\"new 0 0 512 512\" version=\"1.1\" viewBox=\"0 0 512 512\" xmlns=\"http://www.w3.org/2000/svg\">\n <g transform=\"matrix(-1 0 0 1 512 0)\">\n <path d=\"m501.33 170.67h-320c-5.896 0-10.667 4.771-10.667 10.667v21.333c0 5.896 4.771 10.667 10.667 10.667h320c5.896 0 10.667-4.771 10.667-10.667v-21.333c0-5.896-4.771-10.667-10.667-10.667z\"/>\n <path d=\"m501.33 298.67h-490.67c-5.896 0-10.667 4.771-10.667 10.666v21.333c0 5.896 4.771 10.667 10.667 10.667h490.67c5.896 0 10.667-4.771 10.667-10.667v-21.333c-1e-3 -5.895-4.772-10.666-10.668-10.666z\"/>\n <path d=\"m501.33 426.67h-320c-5.896 0-10.667 4.771-10.667 10.667v21.333c0 5.896 4.771 10.667 10.667 10.667h320c5.896 0 10.667-4.771 10.667-10.667v-21.333c0-5.896-4.771-10.667-10.667-10.667z\"/>\n <path d=\"m501.33 42.667h-490.67c-5.896 0-10.667 4.771-10.667 10.666v21.333c0 5.896 4.771 10.667 10.667 10.667h490.67c5.896 0 10.667-4.771 10.667-10.667v-21.333c-1e-3 -5.895-4.772-10.666-10.668-10.666z\"/>\n </g>\n</svg>", @@ -114,19 +121,19 @@ var addIcons = function () { var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; -function createCommonjsModule(fn, basedir, module) { - return module = { - path: basedir, - exports: {}, - require: function (path, base) { - return commonjsRequire(path, (base === undefined || base === null) ? module.path : base); - } - }, fn(module, module.exports), module.exports; -} - function getAugmentedNamespace(n) { - if (n.__esModule) return n; - var a = Object.defineProperty({}, '__esModule', {value: true}); + if (n.__esModule) return n; + var f = n.default; + if (typeof f == "function") { + var a = function a () { + if (this instanceof a) { + return Reflect.construct(f, arguments, this.constructor); + } + return f.apply(this, arguments); + }; + a.prototype = f.prototype; + } else a = {}; + Object.defineProperty(a, '__esModule', {value: true}); Object.keys(n).forEach(function (k) { var d = Object.getOwnPropertyDescriptor(n, k); Object.defineProperty(a, k, d.get ? d : { @@ -139,13 +146,12 @@ function getAugmentedNamespace(n) { return a; } -function commonjsRequire () { - throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs'); -} +var lib$1 = {}; -var point = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Point = void 0; +var point = {}; + +Object.defineProperty(point, "__esModule", { value: true }); +point.Point = void 0; /** * A `Point` represents a point in the text editor. */ @@ -167,16 +173,16 @@ class Point { return this.row === point.row && this.column === point.column; } } -exports.Point = Point; -}); +point.Point = Point; -var range = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Range = void 0; +var range$1 = {}; + +Object.defineProperty(range$1, "__esModule", { value: true }); +range$1.Range = void 0; /** * A `Range` object represents a range in the text editor. */ -class Range { +let Range$1 = class Range { /** * Creates a new `Range` object. * @@ -187,13 +193,13 @@ class Range { this.start = start; this.end = end; } -} -exports.Range = Range; -}); +}; +range$1.Range = Range$1; -var focus = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Focus = void 0; +var focus = {}; + +Object.defineProperty(focus, "__esModule", { value: true }); +focus.Focus = void 0; /** * A `Focus` object represents which cell is focused in the table. * @@ -250,12 +256,12 @@ class Focus { return new Focus(this.row, this.column, offset); } } -exports.Focus = Focus; -}); +focus.Focus = Focus; -var alignment = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.HeaderAlignment = exports.DefaultAlignment = exports.Alignment = void 0; +var alignment = {}; + +Object.defineProperty(alignment, "__esModule", { value: true }); +alignment.HeaderAlignment = alignment.DefaultAlignment = alignment.Alignment = void 0; /** * Represents column alignment. * @@ -271,7 +277,7 @@ var Alignment; Alignment["LEFT"] = "left"; Alignment["RIGHT"] = "right"; Alignment["CENTER"] = "center"; -})(Alignment = exports.Alignment || (exports.Alignment = {})); +})(Alignment || (alignment.Alignment = Alignment = {})); /** * Represents default column alignment * @@ -285,7 +291,7 @@ var DefaultAlignment; DefaultAlignment["LEFT"] = "left"; DefaultAlignment["RIGHT"] = "right"; DefaultAlignment["CENTER"] = "center"; -})(DefaultAlignment = exports.DefaultAlignment || (exports.DefaultAlignment = {})); +})(DefaultAlignment || (alignment.DefaultAlignment = DefaultAlignment = {})); /** * Represents alignment of header cells. * @@ -301,13 +307,13 @@ var HeaderAlignment; HeaderAlignment["LEFT"] = "left"; HeaderAlignment["RIGHT"] = "right"; HeaderAlignment["CENTER"] = "center"; -})(HeaderAlignment = exports.HeaderAlignment || (exports.HeaderAlignment = {})); -}); +})(HeaderAlignment || (alignment.HeaderAlignment = HeaderAlignment = {})); -var tableCell = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.TableCell = void 0; +var tableCell = {}; +Object.defineProperty(tableCell, "__esModule", { value: true }); +tableCell.TableCell = void 0; +const alignment_1 = alignment; /** * A `TableCell` object represents a table cell. * @@ -359,14 +365,14 @@ class TableCell { } if (this.content[0] === ':') { if (this.content[this.content.length - 1] === ':') { - return alignment.Alignment.CENTER; + return alignment_1.Alignment.CENTER; } - return alignment.Alignment.LEFT; + return alignment_1.Alignment.LEFT; } if (this.content[this.content.length - 1] === ':') { - return alignment.Alignment.RIGHT; + return alignment_1.Alignment.RIGHT; } - return alignment.Alignment.NONE; + return alignment_1.Alignment.NONE; } /** * Computes a relative position in the trimmed content from that in the raw content. @@ -396,13 +402,13 @@ class TableCell { return contentOffset + this.paddingLeft; } } -exports.TableCell = TableCell; -}); +tableCell.TableCell = TableCell; -var tableRow = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.TableRow = void 0; +var tableRow = {}; +Object.defineProperty(tableRow, "__esModule", { value: true }); +tableRow.TableRow = void 0; +const table_cell_1 = tableCell; /** * A `TableRow` object represents a table row. * @@ -450,7 +456,7 @@ class TableRow { */ setCellAt(index, value) { const cells = this.getCells(); // a copy - cells[index] = new tableCell.TableCell(value); + cells[index] = new table_cell_1.TableCell(value); return new TableRow(cells, this.marginLeft, this.marginRight); } /** @@ -472,22450 +478,22547 @@ class TableRow { return this._cells.every((cell) => cell.isDelimiter()); } } -exports.TableRow = TableRow; -}); +tableRow.TableRow = TableRow; -var neverthrow = createCommonjsModule(function (module, exports) { -/** - * Retrieved from - * https://github.com/supermacro/neverthrow - * - * MIT License - * Copyright (c) 2019 Giorgio Delgado - */ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Err = exports.Ok = exports.err = exports.ok = void 0; -const ok = (value) => new Ok(value); -exports.ok = ok; -const err = (err) => new Err(err); -exports.err = err; -class Ok { - constructor(value) { - this.value = value; - this.match = (ok, _err) => ok(this.value); - } - isOk() { - return true; - } - isErr() { - return !this.isOk(); - } - map(f) { - return exports.ok(f(this.value)); - } - mapErr(_f) { - return exports.ok(this.value); - } - // add info on how this is really useful for converting a - // Result<Result<T, E2>, E1> - // into a Result<T, E2> - andThen(f) { - return f(this.value); - } - unwrapOr(_v) { - return this.value; - } - _unsafeUnwrap() { - return this.value; - } - _unsafeUnwrapErr() { - throw new Error('Called `_unsafeUnwrapErr` on an Ok'); - } -} -exports.Ok = Ok; -class Err { - constructor(error) { - this.error = error; - this.match = (_ok, err) => err(this.error); - } - isOk() { - return false; - } - isErr() { - return !this.isOk(); - } - map(_f) { - return exports.err(this.error); - } - mapErr(f) { - return exports.err(f(this.error)); - } - andThen(_f) { - return exports.err(this.error); - } - unwrapOr(v) { - return v; - } - _unsafeUnwrap() { - throw new Error('Called `_unsafeUnwrap` on an Err'); - } - _unsafeUnwrapErr() { - return this.error; - } -} -exports.Err = Err; -}); +var table = {}; -var ast_utils = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.prettyPrintAST = exports.checkChildLength = exports.checkType = exports.errRelativeReferenceIndex = exports.errIndex0 = void 0; -exports.errIndex0 = new Error('Index 0 used to create a reference'); -exports.errRelativeReferenceIndex = new Error('Can not use relative reference where absolute reference is required'); -const checkType = (ast, ...expectedTypes) => { - if (expectedTypes.indexOf(ast.type) >= 0) { - return; - } - return new Error(`Formula element '${ast.text}' is a ${ast.type} but expected ` + - `one of ${expectedTypes} in this position.`); -}; -exports.checkType = checkType; -const checkChildLength = (ast, len) => { - if (ast.children.length === len) { - return; - } - return new Error(`Formula element '${ast.text}' was expected to have ${len} ` + - `elements, but had ${ast.children.length}`); -}; -exports.checkChildLength = checkChildLength; -const prettyPrintAST = (token, level = 0) => { - console.log(' '.repeat(level) + - `|-${token.type}${token.children.length === 0 ? '=' + token.text : ''}`); - if (token.children) { - token.children.forEach((c) => { - exports.prettyPrintAST(c, level + 1); - }); - } -}; -exports.prettyPrintAST = prettyPrintAST; -}); +var calc = {}; -var decimal = createCommonjsModule(function (module) { +var neverthrow = {}; + +(function (exports) { + /** + * Retrieved from + * https://github.com/supermacro/neverthrow + * + * MIT License + * Copyright (c) 2019 Giorgio Delgado + */ + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Err = exports.Ok = exports.err = exports.ok = void 0; + const ok = (value) => new Ok(value); + exports.ok = ok; + const err = (err) => new Err(err); + exports.err = err; + class Ok { + constructor(value) { + this.value = value; + this.match = (ok, _err) => ok(this.value); + } + isOk() { + return true; + } + isErr() { + return !this.isOk(); + } + map(f) { + return (0, exports.ok)(f(this.value)); + } + mapErr(_f) { + return (0, exports.ok)(this.value); + } + // add info on how this is really useful for converting a + // Result<Result<T, E2>, E1> + // into a Result<T, E2> + andThen(f) { + return f(this.value); + } + unwrapOr(_v) { + return this.value; + } + _unsafeUnwrap() { + return this.value; + } + _unsafeUnwrapErr() { + throw new Error('Called `_unsafeUnwrapErr` on an Ok'); + } + } + exports.Ok = Ok; + class Err { + constructor(error) { + this.error = error; + this.match = (_ok, err) => err(this.error); + } + isOk() { + return false; + } + isErr() { + return !this.isOk(); + } + map(_f) { + return (0, exports.err)(this.error); + } + mapErr(f) { + return (0, exports.err)(f(this.error)); + } + andThen(_f) { + return (0, exports.err)(this.error); + } + unwrapOr(v) { + return v; + } + _unsafeUnwrap() { + throw new Error('Called `_unsafeUnwrap` on an Err'); + } + _unsafeUnwrapErr() { + return this.error; + } + } + exports.Err = Err; +} (neverthrow)); + +var algebraic_operation = {}; + +var ast_utils = {}; + +(function (exports) { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.prettyPrintAST = exports.checkChildLength = exports.checkType = exports.errRelativeReferenceIndex = exports.errIndex0 = void 0; + exports.errIndex0 = new Error('Index 0 used to create a reference'); + exports.errRelativeReferenceIndex = new Error('Can not use relative reference where absolute reference is required'); + const checkType = (ast, ...expectedTypes) => { + if (expectedTypes.indexOf(ast.type) >= 0) { + return; + } + return new Error(`Formula element '${ast.text}' is a ${ast.type} but expected ` + + `one of ${expectedTypes} in this position.`); + }; + exports.checkType = checkType; + const checkChildLength = (ast, len) => { + if (ast.children.length === len) { + return; + } + return new Error(`Formula element '${ast.text}' was expected to have ${len} ` + + `elements, but had ${ast.children.length}`); + }; + exports.checkChildLength = checkChildLength; + const prettyPrintAST = (token, level = 0) => { + console.log(' '.repeat(level) + + `|-${token.type}${token.children.length === 0 ? '=' + token.text : ''}`); + if (token.children) { + token.children.forEach((c) => { + (0, exports.prettyPrintAST)(c, level + 1); + }); + } + }; + exports.prettyPrintAST = prettyPrintAST; +} (ast_utils)); + +var results = {}; + +var decimal = {exports: {}}; + +(function (module) { (function (globalScope) { - /*! - * decimal.js v10.4.3 - * An arbitrary-precision Decimal type for JavaScript. - * https://github.com/MikeMcl/decimal.js - * Copyright (c) 2022 Michael Mclaughlin <M8ch88l@gmail.com> - * MIT Licence - */ - - - // ----------------------------------- EDITABLE DEFAULTS ------------------------------------ // - - - // The maximum exponent magnitude. - // The limit on the value of `toExpNeg`, `toExpPos`, `minE` and `maxE`. - var EXP_LIMIT = 9e15, // 0 to 9e15 - - // The limit on the value of `precision`, and on the value of the first argument to - // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`. - MAX_DIGITS = 1e9, // 0 to 1e9 - - // Base conversion alphabet. - NUMERALS = '0123456789abcdef', + /*! + * decimal.js v10.4.3 + * An arbitrary-precision Decimal type for JavaScript. + * https://github.com/MikeMcl/decimal.js + * Copyright (c) 2022 Michael Mclaughlin <M8ch88l@gmail.com> + * MIT Licence + */ + + + // ----------------------------------- EDITABLE DEFAULTS ------------------------------------ // + + + // The maximum exponent magnitude. + // The limit on the value of `toExpNeg`, `toExpPos`, `minE` and `maxE`. + var EXP_LIMIT = 9e15, // 0 to 9e15 + + // The limit on the value of `precision`, and on the value of the first argument to + // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`. + MAX_DIGITS = 1e9, // 0 to 1e9 + + // Base conversion alphabet. + NUMERALS = '0123456789abcdef', - // The natural logarithm of 10 (1025 digits). - LN10 = '2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058', + // The natural logarithm of 10 (1025 digits). + LN10 = '2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058', - // Pi (1025 digits). - PI = '3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789', + // Pi (1025 digits). + PI = '3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789', - // The initial configuration properties of the Decimal constructor. - DEFAULTS = { + // The initial configuration properties of the Decimal constructor. + DEFAULTS = { - // These values must be integers within the stated ranges (inclusive). - // Most of these values can be changed at run-time using the `Decimal.config` method. - - // The maximum number of significant digits of the result of a calculation or base conversion. - // E.g. `Decimal.config({ precision: 20 });` - precision: 20, // 1 to MAX_DIGITS - - // The rounding mode used when rounding to `precision`. - // - // ROUND_UP 0 Away from zero. - // ROUND_DOWN 1 Towards zero. - // ROUND_CEIL 2 Towards +Infinity. - // ROUND_FLOOR 3 Towards -Infinity. - // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up. - // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down. - // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour. - // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity. - // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity. - // - // E.g. - // `Decimal.rounding = 4;` - // `Decimal.rounding = Decimal.ROUND_HALF_UP;` - rounding: 4, // 0 to 8 - - // The modulo mode used when calculating the modulus: a mod n. - // The quotient (q = a / n) is calculated according to the corresponding rounding mode. - // The remainder (r) is calculated as: r = a - n * q. - // - // UP 0 The remainder is positive if the dividend is negative, else is negative. - // DOWN 1 The remainder has the same sign as the dividend (JavaScript %). - // FLOOR 3 The remainder has the same sign as the divisor (Python %). - // HALF_EVEN 6 The IEEE 754 remainder function. - // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). Always positive. - // - // Truncated division (1), floored division (3), the IEEE 754 remainder (6), and Euclidian - // division (9) are commonly used for the modulus operation. The other rounding modes can also - // be used, but they may not give useful results. - modulo: 1, // 0 to 9 - - // The exponent value at and beneath which `toString` returns exponential notation. - // JavaScript numbers: -7 - toExpNeg: -7, // 0 to -EXP_LIMIT - - // The exponent value at and above which `toString` returns exponential notation. - // JavaScript numbers: 21 - toExpPos: 21, // 0 to EXP_LIMIT - - // The minimum exponent value, beneath which underflow to zero occurs. - // JavaScript numbers: -324 (5e-324) - minE: -EXP_LIMIT, // -1 to -EXP_LIMIT - - // The maximum exponent value, above which overflow to Infinity occurs. - // JavaScript numbers: 308 (1.7976931348623157e+308) - maxE: EXP_LIMIT, // 1 to EXP_LIMIT - - // Whether to use cryptographically-secure random number generation, if available. - crypto: false // true/false - }, - - - // ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- // - - - Decimal, inexact, noConflict, quadrant, - external = true, - - decimalError = '[DecimalError] ', - invalidArgument = decimalError + 'Invalid argument: ', - precisionLimitExceeded = decimalError + 'Precision limit exceeded', - cryptoUnavailable = decimalError + 'crypto unavailable', - tag = '[object Decimal]', - - mathfloor = Math.floor, - mathpow = Math.pow, - - isBinary = /^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i, - isHex = /^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i, - isOctal = /^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i, - isDecimal = /^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i, - - BASE = 1e7, - LOG_BASE = 7, - MAX_SAFE_INTEGER = 9007199254740991, - - LN10_PRECISION = LN10.length - 1, - PI_PRECISION = PI.length - 1, - - // Decimal.prototype object - P = { toStringTag: tag }; - - - // Decimal prototype methods - - - /* - * absoluteValue abs - * ceil - * clampedTo clamp - * comparedTo cmp - * cosine cos - * cubeRoot cbrt - * decimalPlaces dp - * dividedBy div - * dividedToIntegerBy divToInt - * equals eq - * floor - * greaterThan gt - * greaterThanOrEqualTo gte - * hyperbolicCosine cosh - * hyperbolicSine sinh - * hyperbolicTangent tanh - * inverseCosine acos - * inverseHyperbolicCosine acosh - * inverseHyperbolicSine asinh - * inverseHyperbolicTangent atanh - * inverseSine asin - * inverseTangent atan - * isFinite - * isInteger isInt - * isNaN - * isNegative isNeg - * isPositive isPos - * isZero - * lessThan lt - * lessThanOrEqualTo lte - * logarithm log - * [maximum] [max] - * [minimum] [min] - * minus sub - * modulo mod - * naturalExponential exp - * naturalLogarithm ln - * negated neg - * plus add - * precision sd - * round - * sine sin - * squareRoot sqrt - * tangent tan - * times mul - * toBinary - * toDecimalPlaces toDP - * toExponential - * toFixed - * toFraction - * toHexadecimal toHex - * toNearest - * toNumber - * toOctal - * toPower pow - * toPrecision - * toSignificantDigits toSD - * toString - * truncated trunc - * valueOf toJSON - */ - - - /* - * Return a new Decimal whose value is the absolute value of this Decimal. - * - */ - P.absoluteValue = P.abs = function () { - var x = new this.constructor(this); - if (x.s < 0) x.s = 1; - return finalise(x); - }; - - - /* - * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the - * direction of positive Infinity. - * - */ - P.ceil = function () { - return finalise(new this.constructor(this), this.e + 1, 2); - }; - - - /* - * Return a new Decimal whose value is the value of this Decimal clamped to the range - * delineated by `min` and `max`. - * - * min {number|string|Decimal} - * max {number|string|Decimal} - * - */ - P.clampedTo = P.clamp = function (min, max) { - var k, - x = this, - Ctor = x.constructor; - min = new Ctor(min); - max = new Ctor(max); - if (!min.s || !max.s) return new Ctor(NaN); - if (min.gt(max)) throw Error(invalidArgument + max); - k = x.cmp(min); - return k < 0 ? min : x.cmp(max) > 0 ? max : new Ctor(x); - }; - - - /* - * Return - * 1 if the value of this Decimal is greater than the value of `y`, - * -1 if the value of this Decimal is less than the value of `y`, - * 0 if they have the same value, - * NaN if the value of either Decimal is NaN. - * - */ - P.comparedTo = P.cmp = function (y) { - var i, j, xdL, ydL, - x = this, - xd = x.d, - yd = (y = new x.constructor(y)).d, - xs = x.s, - ys = y.s; - - // Either NaN or ±Infinity? - if (!xd || !yd) { - return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1; - } - - // Either zero? - if (!xd[0] || !yd[0]) return xd[0] ? xs : yd[0] ? -ys : 0; - - // Signs differ? - if (xs !== ys) return xs; - - // Compare exponents. - if (x.e !== y.e) return x.e > y.e ^ xs < 0 ? 1 : -1; - - xdL = xd.length; - ydL = yd.length; - - // Compare digit by digit. - for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) { - if (xd[i] !== yd[i]) return xd[i] > yd[i] ^ xs < 0 ? 1 : -1; - } - - // Compare lengths. - return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1; - }; - - - /* - * Return a new Decimal whose value is the cosine of the value in radians of this Decimal. - * - * Domain: [-Infinity, Infinity] - * Range: [-1, 1] - * - * cos(0) = 1 - * cos(-0) = 1 - * cos(Infinity) = NaN - * cos(-Infinity) = NaN - * cos(NaN) = NaN - * - */ - P.cosine = P.cos = function () { - var pr, rm, - x = this, - Ctor = x.constructor; - - if (!x.d) return new Ctor(NaN); - - // cos(0) = cos(-0) = 1 - if (!x.d[0]) return new Ctor(1); - - pr = Ctor.precision; - rm = Ctor.rounding; - Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE; - Ctor.rounding = 1; - - x = cosine(Ctor, toLessThanHalfPi(Ctor, x)); - - Ctor.precision = pr; - Ctor.rounding = rm; - - return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true); - }; - - - /* - * - * Return a new Decimal whose value is the cube root of the value of this Decimal, rounded to - * `precision` significant digits using rounding mode `rounding`. - * - * cbrt(0) = 0 - * cbrt(-0) = -0 - * cbrt(1) = 1 - * cbrt(-1) = -1 - * cbrt(N) = N - * cbrt(-I) = -I - * cbrt(I) = I - * - * Math.cbrt(x) = (x < 0 ? -Math.pow(-x, 1/3) : Math.pow(x, 1/3)) - * - */ - P.cubeRoot = P.cbrt = function () { - var e, m, n, r, rep, s, sd, t, t3, t3plusx, - x = this, - Ctor = x.constructor; - - if (!x.isFinite() || x.isZero()) return new Ctor(x); - external = false; - - // Initial estimate. - s = x.s * mathpow(x.s * x, 1 / 3); - - // Math.cbrt underflow/overflow? - // Pass x to Math.pow as integer, then adjust the exponent of the result. - if (!s || Math.abs(s) == 1 / 0) { - n = digitsToString(x.d); - e = x.e; - - // Adjust n exponent so it is a multiple of 3 away from x exponent. - if (s = (e - n.length + 1) % 3) n += (s == 1 || s == -2 ? '0' : '00'); - s = mathpow(n, 1 / 3); - - // Rarely, e may be one less than the result exponent value. - e = mathfloor((e + 1) / 3) - (e % 3 == (e < 0 ? -1 : 2)); - - if (s == 1 / 0) { - n = '5e' + e; - } else { - n = s.toExponential(); - n = n.slice(0, n.indexOf('e') + 1) + e; - } - - r = new Ctor(n); - r.s = x.s; - } else { - r = new Ctor(s.toString()); - } - - sd = (e = Ctor.precision) + 3; - - // Halley's method. - // TODO? Compare Newton's method. - for (;;) { - t = r; - t3 = t.times(t).times(t); - t3plusx = t3.plus(x); - r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1); - - // TODO? Replace with for-loop and checkRoundingDigits. - if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) { - n = n.slice(sd - 3, sd + 1); - - // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or 4999 - // , i.e. approaching a rounding boundary, continue the iteration. - if (n == '9999' || !rep && n == '4999') { - - // On the first iteration only, check to see if rounding up gives the exact result as the - // nines may infinitely repeat. - if (!rep) { - finalise(t, e + 1, 0); - - if (t.times(t).times(t).eq(x)) { - r = t; - break; - } - } - - sd += 4; - rep = 1; - } else { - - // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result. - // If not, then there are further digits and m will be truthy. - if (!+n || !+n.slice(1) && n.charAt(0) == '5') { - - // Truncate to the first rounding digit. - finalise(r, e + 1, 1); - m = !r.times(r).times(r).eq(x); - } - - break; - } - } - } - - external = true; - - return finalise(r, e, Ctor.rounding, m); - }; - - - /* - * Return the number of decimal places of the value of this Decimal. - * - */ - P.decimalPlaces = P.dp = function () { - var w, - d = this.d, - n = NaN; - - if (d) { - w = d.length - 1; - n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE; - - // Subtract the number of trailing zeros of the last word. - w = d[w]; - if (w) for (; w % 10 == 0; w /= 10) n--; - if (n < 0) n = 0; - } - - return n; - }; - - - /* - * n / 0 = I - * n / N = N - * n / I = 0 - * 0 / n = 0 - * 0 / 0 = N - * 0 / N = N - * 0 / I = 0 - * N / n = N - * N / 0 = N - * N / N = N - * N / I = N - * I / n = I - * I / 0 = I - * I / N = N - * I / I = N - * - * Return a new Decimal whose value is the value of this Decimal divided by `y`, rounded to - * `precision` significant digits using rounding mode `rounding`. - * - */ - P.dividedBy = P.div = function (y) { - return divide(this, new this.constructor(y)); - }; - - - /* - * Return a new Decimal whose value is the integer part of dividing the value of this Decimal - * by the value of `y`, rounded to `precision` significant digits using rounding mode `rounding`. - * - */ - P.dividedToIntegerBy = P.divToInt = function (y) { - var x = this, - Ctor = x.constructor; - return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding); - }; - - - /* - * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false. - * - */ - P.equals = P.eq = function (y) { - return this.cmp(y) === 0; - }; - - - /* - * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the - * direction of negative Infinity. - * - */ - P.floor = function () { - return finalise(new this.constructor(this), this.e + 1, 3); - }; - - - /* - * Return true if the value of this Decimal is greater than the value of `y`, otherwise return - * false. - * - */ - P.greaterThan = P.gt = function (y) { - return this.cmp(y) > 0; - }; - - - /* - * Return true if the value of this Decimal is greater than or equal to the value of `y`, - * otherwise return false. - * - */ - P.greaterThanOrEqualTo = P.gte = function (y) { - var k = this.cmp(y); - return k == 1 || k === 0; - }; - - - /* - * Return a new Decimal whose value is the hyperbolic cosine of the value in radians of this - * Decimal. - * - * Domain: [-Infinity, Infinity] - * Range: [1, Infinity] - * - * cosh(x) = 1 + x^2/2! + x^4/4! + x^6/6! + ... - * - * cosh(0) = 1 - * cosh(-0) = 1 - * cosh(Infinity) = Infinity - * cosh(-Infinity) = Infinity - * cosh(NaN) = NaN - * - * x time taken (ms) result - * 1000 9 9.8503555700852349694e+433 - * 10000 25 4.4034091128314607936e+4342 - * 100000 171 1.4033316802130615897e+43429 - * 1000000 3817 1.5166076984010437725e+434294 - * 10000000 abandoned after 2 minute wait - * - * TODO? Compare performance of cosh(x) = 0.5 * (exp(x) + exp(-x)) - * - */ - P.hyperbolicCosine = P.cosh = function () { - var k, n, pr, rm, len, - x = this, - Ctor = x.constructor, - one = new Ctor(1); - - if (!x.isFinite()) return new Ctor(x.s ? 1 / 0 : NaN); - if (x.isZero()) return one; - - pr = Ctor.precision; - rm = Ctor.rounding; - Ctor.precision = pr + Math.max(x.e, x.sd()) + 4; - Ctor.rounding = 1; - len = x.d.length; - - // Argument reduction: cos(4x) = 1 - 8cos^2(x) + 8cos^4(x) + 1 - // i.e. cos(x) = 1 - cos^2(x/4)(8 - 8cos^2(x/4)) - - // Estimate the optimum number of times to use the argument reduction. - // TODO? Estimation reused from cosine() and may not be optimal here. - if (len < 32) { - k = Math.ceil(len / 3); - n = (1 / tinyPow(4, k)).toString(); - } else { - k = 16; - n = '2.3283064365386962890625e-10'; - } - - x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true); - - // Reverse argument reduction - var cosh2_x, - i = k, - d8 = new Ctor(8); - for (; i--;) { - cosh2_x = x.times(x); - x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8)))); - } - - return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true); - }; - - - /* - * Return a new Decimal whose value is the hyperbolic sine of the value in radians of this - * Decimal. - * - * Domain: [-Infinity, Infinity] - * Range: [-Infinity, Infinity] - * - * sinh(x) = x + x^3/3! + x^5/5! + x^7/7! + ... - * - * sinh(0) = 0 - * sinh(-0) = -0 - * sinh(Infinity) = Infinity - * sinh(-Infinity) = -Infinity - * sinh(NaN) = NaN - * - * x time taken (ms) - * 10 2 ms - * 100 5 ms - * 1000 14 ms - * 10000 82 ms - * 100000 886 ms 1.4033316802130615897e+43429 - * 200000 2613 ms - * 300000 5407 ms - * 400000 8824 ms - * 500000 13026 ms 8.7080643612718084129e+217146 - * 1000000 48543 ms - * - * TODO? Compare performance of sinh(x) = 0.5 * (exp(x) - exp(-x)) - * - */ - P.hyperbolicSine = P.sinh = function () { - var k, pr, rm, len, - x = this, - Ctor = x.constructor; - - if (!x.isFinite() || x.isZero()) return new Ctor(x); - - pr = Ctor.precision; - rm = Ctor.rounding; - Ctor.precision = pr + Math.max(x.e, x.sd()) + 4; - Ctor.rounding = 1; - len = x.d.length; - - if (len < 3) { - x = taylorSeries(Ctor, 2, x, x, true); - } else { - - // Alternative argument reduction: sinh(3x) = sinh(x)(3 + 4sinh^2(x)) - // i.e. sinh(x) = sinh(x/3)(3 + 4sinh^2(x/3)) - // 3 multiplications and 1 addition - - // Argument reduction: sinh(5x) = sinh(x)(5 + sinh^2(x)(20 + 16sinh^2(x))) - // i.e. sinh(x) = sinh(x/5)(5 + sinh^2(x/5)(20 + 16sinh^2(x/5))) - // 4 multiplications and 2 additions - - // Estimate the optimum number of times to use the argument reduction. - k = 1.4 * Math.sqrt(len); - k = k > 16 ? 16 : k | 0; - - x = x.times(1 / tinyPow(5, k)); - x = taylorSeries(Ctor, 2, x, x, true); - - // Reverse argument reduction - var sinh2_x, - d5 = new Ctor(5), - d16 = new Ctor(16), - d20 = new Ctor(20); - for (; k--;) { - sinh2_x = x.times(x); - x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20)))); - } - } - - Ctor.precision = pr; - Ctor.rounding = rm; - - return finalise(x, pr, rm, true); - }; - - - /* - * Return a new Decimal whose value is the hyperbolic tangent of the value in radians of this - * Decimal. - * - * Domain: [-Infinity, Infinity] - * Range: [-1, 1] - * - * tanh(x) = sinh(x) / cosh(x) - * - * tanh(0) = 0 - * tanh(-0) = -0 - * tanh(Infinity) = 1 - * tanh(-Infinity) = -1 - * tanh(NaN) = NaN - * - */ - P.hyperbolicTangent = P.tanh = function () { - var pr, rm, - x = this, - Ctor = x.constructor; - - if (!x.isFinite()) return new Ctor(x.s); - if (x.isZero()) return new Ctor(x); - - pr = Ctor.precision; - rm = Ctor.rounding; - Ctor.precision = pr + 7; - Ctor.rounding = 1; - - return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm); - }; - - - /* - * Return a new Decimal whose value is the arccosine (inverse cosine) in radians of the value of - * this Decimal. - * - * Domain: [-1, 1] - * Range: [0, pi] - * - * acos(x) = pi/2 - asin(x) - * - * acos(0) = pi/2 - * acos(-0) = pi/2 - * acos(1) = 0 - * acos(-1) = pi - * acos(1/2) = pi/3 - * acos(-1/2) = 2*pi/3 - * acos(|x| > 1) = NaN - * acos(NaN) = NaN - * - */ - P.inverseCosine = P.acos = function () { - var halfPi, - x = this, - Ctor = x.constructor, - k = x.abs().cmp(1), - pr = Ctor.precision, - rm = Ctor.rounding; - - if (k !== -1) { - return k === 0 - // |x| is 1 - ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0) - // |x| > 1 or x is NaN - : new Ctor(NaN); - } - - if (x.isZero()) return getPi(Ctor, pr + 4, rm).times(0.5); - - // TODO? Special case acos(0.5) = pi/3 and acos(-0.5) = 2*pi/3 - - Ctor.precision = pr + 6; - Ctor.rounding = 1; - - x = x.asin(); - halfPi = getPi(Ctor, pr + 4, rm).times(0.5); - - Ctor.precision = pr; - Ctor.rounding = rm; - - return halfPi.minus(x); - }; - - - /* - * Return a new Decimal whose value is the inverse of the hyperbolic cosine in radians of the - * value of this Decimal. - * - * Domain: [1, Infinity] - * Range: [0, Infinity] - * - * acosh(x) = ln(x + sqrt(x^2 - 1)) - * - * acosh(x < 1) = NaN - * acosh(NaN) = NaN - * acosh(Infinity) = Infinity - * acosh(-Infinity) = NaN - * acosh(0) = NaN - * acosh(-0) = NaN - * acosh(1) = 0 - * acosh(-1) = NaN - * - */ - P.inverseHyperbolicCosine = P.acosh = function () { - var pr, rm, - x = this, - Ctor = x.constructor; - - if (x.lte(1)) return new Ctor(x.eq(1) ? 0 : NaN); - if (!x.isFinite()) return new Ctor(x); - - pr = Ctor.precision; - rm = Ctor.rounding; - Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4; - Ctor.rounding = 1; - external = false; - - x = x.times(x).minus(1).sqrt().plus(x); - - external = true; - Ctor.precision = pr; - Ctor.rounding = rm; - - return x.ln(); - }; - - - /* - * Return a new Decimal whose value is the inverse of the hyperbolic sine in radians of the value - * of this Decimal. - * - * Domain: [-Infinity, Infinity] - * Range: [-Infinity, Infinity] - * - * asinh(x) = ln(x + sqrt(x^2 + 1)) - * - * asinh(NaN) = NaN - * asinh(Infinity) = Infinity - * asinh(-Infinity) = -Infinity - * asinh(0) = 0 - * asinh(-0) = -0 - * - */ - P.inverseHyperbolicSine = P.asinh = function () { - var pr, rm, - x = this, - Ctor = x.constructor; - - if (!x.isFinite() || x.isZero()) return new Ctor(x); - - pr = Ctor.precision; - rm = Ctor.rounding; - Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6; - Ctor.rounding = 1; - external = false; - - x = x.times(x).plus(1).sqrt().plus(x); - - external = true; - Ctor.precision = pr; - Ctor.rounding = rm; - - return x.ln(); - }; - - - /* - * Return a new Decimal whose value is the inverse of the hyperbolic tangent in radians of the - * value of this Decimal. - * - * Domain: [-1, 1] - * Range: [-Infinity, Infinity] - * - * atanh(x) = 0.5 * ln((1 + x) / (1 - x)) - * - * atanh(|x| > 1) = NaN - * atanh(NaN) = NaN - * atanh(Infinity) = NaN - * atanh(-Infinity) = NaN - * atanh(0) = 0 - * atanh(-0) = -0 - * atanh(1) = Infinity - * atanh(-1) = -Infinity - * - */ - P.inverseHyperbolicTangent = P.atanh = function () { - var pr, rm, wpr, xsd, - x = this, - Ctor = x.constructor; - - if (!x.isFinite()) return new Ctor(NaN); - if (x.e >= 0) return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN); - - pr = Ctor.precision; - rm = Ctor.rounding; - xsd = x.sd(); - - if (Math.max(xsd, pr) < 2 * -x.e - 1) return finalise(new Ctor(x), pr, rm, true); - - Ctor.precision = wpr = xsd - x.e; - - x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1); - - Ctor.precision = pr + 4; - Ctor.rounding = 1; - - x = x.ln(); - - Ctor.precision = pr; - Ctor.rounding = rm; - - return x.times(0.5); - }; - - - /* - * Return a new Decimal whose value is the arcsine (inverse sine) in radians of the value of this - * Decimal. - * - * Domain: [-Infinity, Infinity] - * Range: [-pi/2, pi/2] - * - * asin(x) = 2*atan(x/(1 + sqrt(1 - x^2))) - * - * asin(0) = 0 - * asin(-0) = -0 - * asin(1/2) = pi/6 - * asin(-1/2) = -pi/6 - * asin(1) = pi/2 - * asin(-1) = -pi/2 - * asin(|x| > 1) = NaN - * asin(NaN) = NaN - * - * TODO? Compare performance of Taylor series. - * - */ - P.inverseSine = P.asin = function () { - var halfPi, k, - pr, rm, - x = this, - Ctor = x.constructor; - - if (x.isZero()) return new Ctor(x); - - k = x.abs().cmp(1); - pr = Ctor.precision; - rm = Ctor.rounding; - - if (k !== -1) { - - // |x| is 1 - if (k === 0) { - halfPi = getPi(Ctor, pr + 4, rm).times(0.5); - halfPi.s = x.s; - return halfPi; - } - - // |x| > 1 or x is NaN - return new Ctor(NaN); - } - - // TODO? Special case asin(1/2) = pi/6 and asin(-1/2) = -pi/6 - - Ctor.precision = pr + 6; - Ctor.rounding = 1; - - x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan(); - - Ctor.precision = pr; - Ctor.rounding = rm; - - return x.times(2); - }; - - - /* - * Return a new Decimal whose value is the arctangent (inverse tangent) in radians of the value - * of this Decimal. - * - * Domain: [-Infinity, Infinity] - * Range: [-pi/2, pi/2] - * - * atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ... - * - * atan(0) = 0 - * atan(-0) = -0 - * atan(1) = pi/4 - * atan(-1) = -pi/4 - * atan(Infinity) = pi/2 - * atan(-Infinity) = -pi/2 - * atan(NaN) = NaN - * - */ - P.inverseTangent = P.atan = function () { - var i, j, k, n, px, t, r, wpr, x2, - x = this, - Ctor = x.constructor, - pr = Ctor.precision, - rm = Ctor.rounding; - - if (!x.isFinite()) { - if (!x.s) return new Ctor(NaN); - if (pr + 4 <= PI_PRECISION) { - r = getPi(Ctor, pr + 4, rm).times(0.5); - r.s = x.s; - return r; - } - } else if (x.isZero()) { - return new Ctor(x); - } else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) { - r = getPi(Ctor, pr + 4, rm).times(0.25); - r.s = x.s; - return r; - } - - Ctor.precision = wpr = pr + 10; - Ctor.rounding = 1; - - // TODO? if (x >= 1 && pr <= PI_PRECISION) atan(x) = halfPi * x.s - atan(1 / x); - - // Argument reduction - // Ensure |x| < 0.42 - // atan(x) = 2 * atan(x / (1 + sqrt(1 + x^2))) - - k = Math.min(28, wpr / LOG_BASE + 2 | 0); - - for (i = k; i; --i) x = x.div(x.times(x).plus(1).sqrt().plus(1)); - - external = false; - - j = Math.ceil(wpr / LOG_BASE); - n = 1; - x2 = x.times(x); - r = new Ctor(x); - px = x; - - // atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ... - for (; i !== -1;) { - px = px.times(x2); - t = r.minus(px.div(n += 2)); - - px = px.times(x2); - r = t.plus(px.div(n += 2)); - - if (r.d[j] !== void 0) for (i = j; r.d[i] === t.d[i] && i--;); - } - - if (k) r = r.times(2 << (k - 1)); - - external = true; - - return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true); - }; - - - /* - * Return true if the value of this Decimal is a finite number, otherwise return false. - * - */ - P.isFinite = function () { - return !!this.d; - }; - - - /* - * Return true if the value of this Decimal is an integer, otherwise return false. - * - */ - P.isInteger = P.isInt = function () { - return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2; - }; - - - /* - * Return true if the value of this Decimal is NaN, otherwise return false. - * - */ - P.isNaN = function () { - return !this.s; - }; - - - /* - * Return true if the value of this Decimal is negative, otherwise return false. - * - */ - P.isNegative = P.isNeg = function () { - return this.s < 0; - }; - - - /* - * Return true if the value of this Decimal is positive, otherwise return false. - * - */ - P.isPositive = P.isPos = function () { - return this.s > 0; - }; - - - /* - * Return true if the value of this Decimal is 0 or -0, otherwise return false. - * - */ - P.isZero = function () { - return !!this.d && this.d[0] === 0; - }; - - - /* - * Return true if the value of this Decimal is less than `y`, otherwise return false. - * - */ - P.lessThan = P.lt = function (y) { - return this.cmp(y) < 0; - }; - - - /* - * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false. - * - */ - P.lessThanOrEqualTo = P.lte = function (y) { - return this.cmp(y) < 1; - }; - - - /* - * Return the logarithm of the value of this Decimal to the specified base, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - * If no base is specified, return log[10](arg). - * - * log[base](arg) = ln(arg) / ln(base) - * - * The result will always be correctly rounded if the base of the log is 10, and 'almost always' - * otherwise: - * - * Depending on the rounding mode, the result may be incorrectly rounded if the first fifteen - * rounding digits are [49]99999999999999 or [50]00000000000000. In that case, the maximum error - * between the result and the correctly rounded result will be one ulp (unit in the last place). - * - * log[-b](a) = NaN - * log[0](a) = NaN - * log[1](a) = NaN - * log[NaN](a) = NaN - * log[Infinity](a) = NaN - * log[b](0) = -Infinity - * log[b](-0) = -Infinity - * log[b](-a) = NaN - * log[b](1) = 0 - * log[b](Infinity) = Infinity - * log[b](NaN) = NaN - * - * [base] {number|string|Decimal} The base of the logarithm. - * - */ - P.logarithm = P.log = function (base) { - var isBase10, d, denominator, k, inf, num, sd, r, - arg = this, - Ctor = arg.constructor, - pr = Ctor.precision, - rm = Ctor.rounding, - guard = 5; - - // Default base is 10. - if (base == null) { - base = new Ctor(10); - isBase10 = true; - } else { - base = new Ctor(base); - d = base.d; - - // Return NaN if base is negative, or non-finite, or is 0 or 1. - if (base.s < 0 || !d || !d[0] || base.eq(1)) return new Ctor(NaN); - - isBase10 = base.eq(10); - } - - d = arg.d; - - // Is arg negative, non-finite, 0 or 1? - if (arg.s < 0 || !d || !d[0] || arg.eq(1)) { - return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0); - } - - // The result will have a non-terminating decimal expansion if base is 10 and arg is not an - // integer power of 10. - if (isBase10) { - if (d.length > 1) { - inf = true; - } else { - for (k = d[0]; k % 10 === 0;) k /= 10; - inf = k !== 1; - } - } - - external = false; - sd = pr + guard; - num = naturalLogarithm(arg, sd); - denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd); - - // The result will have 5 rounding digits. - r = divide(num, denominator, sd, 1); - - // If at a rounding boundary, i.e. the result's rounding digits are [49]9999 or [50]0000, - // calculate 10 further digits. - // - // If the result is known to have an infinite decimal expansion, repeat this until it is clear - // that the result is above or below the boundary. Otherwise, if after calculating the 10 - // further digits, the last 14 are nines, round up and assume the result is exact. - // Also assume the result is exact if the last 14 are zero. - // - // Example of a result that will be incorrectly rounded: - // log[1048576](4503599627370502) = 2.60000000000000009610279511444746... - // The above result correctly rounded using ROUND_CEIL to 1 decimal place should be 2.7, but it - // will be given as 2.6 as there are 15 zeros immediately after the requested decimal place, so - // the exact result would be assumed to be 2.6, which rounded using ROUND_CEIL to 1 decimal - // place is still 2.6. - if (checkRoundingDigits(r.d, k = pr, rm)) { - - do { - sd += 10; - num = naturalLogarithm(arg, sd); - denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd); - r = divide(num, denominator, sd, 1); - - if (!inf) { - - // Check for 14 nines from the 2nd rounding digit, as the first may be 4. - if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 1e14) { - r = finalise(r, pr + 1, 0); - } - - break; - } - } while (checkRoundingDigits(r.d, k += 10, rm)); - } - - external = true; - - return finalise(r, pr, rm); - }; - - - /* - * Return a new Decimal whose value is the maximum of the arguments and the value of this Decimal. - * - * arguments {number|string|Decimal} - * - P.max = function () { - Array.prototype.push.call(arguments, this); - return maxOrMin(this.constructor, arguments, 'lt'); - }; - */ - - - /* - * Return a new Decimal whose value is the minimum of the arguments and the value of this Decimal. - * - * arguments {number|string|Decimal} - * - P.min = function () { - Array.prototype.push.call(arguments, this); - return maxOrMin(this.constructor, arguments, 'gt'); - }; - */ - - - /* - * n - 0 = n - * n - N = N - * n - I = -I - * 0 - n = -n - * 0 - 0 = 0 - * 0 - N = N - * 0 - I = -I - * N - n = N - * N - 0 = N - * N - N = N - * N - I = N - * I - n = I - * I - 0 = I - * I - N = N - * I - I = N - * - * Return a new Decimal whose value is the value of this Decimal minus `y`, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - */ - P.minus = P.sub = function (y) { - var d, e, i, j, k, len, pr, rm, xd, xe, xLTy, yd, - x = this, - Ctor = x.constructor; - - y = new Ctor(y); - - // If either is not finite... - if (!x.d || !y.d) { - - // Return NaN if either is NaN. - if (!x.s || !y.s) y = new Ctor(NaN); - - // Return y negated if x is finite and y is ±Infinity. - else if (x.d) y.s = -y.s; - - // Return x if y is finite and x is ±Infinity. - // Return x if both are ±Infinity with different signs. - // Return NaN if both are ±Infinity with the same sign. - else y = new Ctor(y.d || x.s !== y.s ? x : NaN); - - return y; - } - - // If signs differ... - if (x.s != y.s) { - y.s = -y.s; - return x.plus(y); - } - - xd = x.d; - yd = y.d; - pr = Ctor.precision; - rm = Ctor.rounding; - - // If either is zero... - if (!xd[0] || !yd[0]) { - - // Return y negated if x is zero and y is non-zero. - if (yd[0]) y.s = -y.s; - - // Return x if y is zero and x is non-zero. - else if (xd[0]) y = new Ctor(x); - - // Return zero if both are zero. - // From IEEE 754 (2008) 6.3: 0 - 0 = -0 - -0 = -0 when rounding to -Infinity. - else return new Ctor(rm === 3 ? -0 : 0); - - return external ? finalise(y, pr, rm) : y; - } - - // x and y are finite, non-zero numbers with the same sign. - - // Calculate base 1e7 exponents. - e = mathfloor(y.e / LOG_BASE); - xe = mathfloor(x.e / LOG_BASE); - - xd = xd.slice(); - k = xe - e; - - // If base 1e7 exponents differ... - if (k) { - xLTy = k < 0; - - if (xLTy) { - d = xd; - k = -k; - len = yd.length; - } else { - d = yd; - e = xe; - len = xd.length; - } - - // Numbers with massively different exponents would result in a very high number of - // zeros needing to be prepended, but this can be avoided while still ensuring correct - // rounding by limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`. - i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2; - - if (k > i) { - k = i; - d.length = 1; - } - - // Prepend zeros to equalise exponents. - d.reverse(); - for (i = k; i--;) d.push(0); - d.reverse(); - - // Base 1e7 exponents equal. - } else { - - // Check digits to determine which is the bigger number. - - i = xd.length; - len = yd.length; - xLTy = i < len; - if (xLTy) len = i; - - for (i = 0; i < len; i++) { - if (xd[i] != yd[i]) { - xLTy = xd[i] < yd[i]; - break; - } - } - - k = 0; - } - - if (xLTy) { - d = xd; - xd = yd; - yd = d; - y.s = -y.s; - } - - len = xd.length; - - // Append zeros to `xd` if shorter. - // Don't add zeros to `yd` if shorter as subtraction only needs to start at `yd` length. - for (i = yd.length - len; i > 0; --i) xd[len++] = 0; - - // Subtract yd from xd. - for (i = yd.length; i > k;) { - - if (xd[--i] < yd[i]) { - for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1; - --xd[j]; - xd[i] += BASE; - } - - xd[i] -= yd[i]; - } - - // Remove trailing zeros. - for (; xd[--len] === 0;) xd.pop(); - - // Remove leading zeros and adjust exponent accordingly. - for (; xd[0] === 0; xd.shift()) --e; - - // Zero? - if (!xd[0]) return new Ctor(rm === 3 ? -0 : 0); - - y.d = xd; - y.e = getBase10Exponent(xd, e); - - return external ? finalise(y, pr, rm) : y; - }; - - - /* - * n % 0 = N - * n % N = N - * n % I = n - * 0 % n = 0 - * -0 % n = -0 - * 0 % 0 = N - * 0 % N = N - * 0 % I = 0 - * N % n = N - * N % 0 = N - * N % N = N - * N % I = N - * I % n = N - * I % 0 = N - * I % N = N - * I % I = N - * - * Return a new Decimal whose value is the value of this Decimal modulo `y`, rounded to - * `precision` significant digits using rounding mode `rounding`. - * - * The result depends on the modulo mode. - * - */ - P.modulo = P.mod = function (y) { - var q, - x = this, - Ctor = x.constructor; - - y = new Ctor(y); - - // Return NaN if x is ±Infinity or NaN, or y is NaN or ±0. - if (!x.d || !y.s || y.d && !y.d[0]) return new Ctor(NaN); - - // Return x if y is ±Infinity or x is ±0. - if (!y.d || x.d && !x.d[0]) { - return finalise(new Ctor(x), Ctor.precision, Ctor.rounding); - } - - // Prevent rounding of intermediate calculations. - external = false; - - if (Ctor.modulo == 9) { - - // Euclidian division: q = sign(y) * floor(x / abs(y)) - // result = x - q * y where 0 <= result < abs(y) - q = divide(x, y.abs(), 0, 3, 1); - q.s *= y.s; - } else { - q = divide(x, y, 0, Ctor.modulo, 1); - } - - q = q.times(y); - - external = true; - - return x.minus(q); - }; - - - /* - * Return a new Decimal whose value is the natural exponential of the value of this Decimal, - * i.e. the base e raised to the power the value of this Decimal, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - */ - P.naturalExponential = P.exp = function () { - return naturalExponential(this); - }; - - - /* - * Return a new Decimal whose value is the natural logarithm of the value of this Decimal, - * rounded to `precision` significant digits using rounding mode `rounding`. - * - */ - P.naturalLogarithm = P.ln = function () { - return naturalLogarithm(this); - }; - - - /* - * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by - * -1. - * - */ - P.negated = P.neg = function () { - var x = new this.constructor(this); - x.s = -x.s; - return finalise(x); - }; - - - /* - * n + 0 = n - * n + N = N - * n + I = I - * 0 + n = n - * 0 + 0 = 0 - * 0 + N = N - * 0 + I = I - * N + n = N - * N + 0 = N - * N + N = N - * N + I = N - * I + n = I - * I + 0 = I - * I + N = N - * I + I = I - * - * Return a new Decimal whose value is the value of this Decimal plus `y`, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - */ - P.plus = P.add = function (y) { - var carry, d, e, i, k, len, pr, rm, xd, yd, - x = this, - Ctor = x.constructor; - - y = new Ctor(y); - - // If either is not finite... - if (!x.d || !y.d) { - - // Return NaN if either is NaN. - if (!x.s || !y.s) y = new Ctor(NaN); - - // Return x if y is finite and x is ±Infinity. - // Return x if both are ±Infinity with the same sign. - // Return NaN if both are ±Infinity with different signs. - // Return y if x is finite and y is ±Infinity. - else if (!x.d) y = new Ctor(y.d || x.s === y.s ? x : NaN); - - return y; - } - - // If signs differ... - if (x.s != y.s) { - y.s = -y.s; - return x.minus(y); - } - - xd = x.d; - yd = y.d; - pr = Ctor.precision; - rm = Ctor.rounding; - - // If either is zero... - if (!xd[0] || !yd[0]) { - - // Return x if y is zero. - // Return y if y is non-zero. - if (!yd[0]) y = new Ctor(x); - - return external ? finalise(y, pr, rm) : y; - } - - // x and y are finite, non-zero numbers with the same sign. - - // Calculate base 1e7 exponents. - k = mathfloor(x.e / LOG_BASE); - e = mathfloor(y.e / LOG_BASE); - - xd = xd.slice(); - i = k - e; - - // If base 1e7 exponents differ... - if (i) { - - if (i < 0) { - d = xd; - i = -i; - len = yd.length; - } else { - d = yd; - e = k; - len = xd.length; - } - - // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1. - k = Math.ceil(pr / LOG_BASE); - len = k > len ? k + 1 : len + 1; - - if (i > len) { - i = len; - d.length = 1; - } - - // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts. - d.reverse(); - for (; i--;) d.push(0); - d.reverse(); - } - - len = xd.length; - i = yd.length; - - // If yd is longer than xd, swap xd and yd so xd points to the longer array. - if (len - i < 0) { - i = len; - d = yd; - yd = xd; - xd = d; - } - - // Only start adding at yd.length - 1 as the further digits of xd can be left as they are. - for (carry = 0; i;) { - carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0; - xd[i] %= BASE; - } - - if (carry) { - xd.unshift(carry); - ++e; - } - - // Remove trailing zeros. - // No need to check for zero, as +x + +y != 0 && -x + -y != 0 - for (len = xd.length; xd[--len] == 0;) xd.pop(); - - y.d = xd; - y.e = getBase10Exponent(xd, e); - - return external ? finalise(y, pr, rm) : y; - }; - - - /* - * Return the number of significant digits of the value of this Decimal. - * - * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0. - * - */ - P.precision = P.sd = function (z) { - var k, - x = this; - - if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z); - - if (x.d) { - k = getPrecision(x.d); - if (z && x.e + 1 > k) k = x.e + 1; - } else { - k = NaN; - } - - return k; - }; - - - /* - * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using - * rounding mode `rounding`. - * - */ - P.round = function () { - var x = this, - Ctor = x.constructor; - - return finalise(new Ctor(x), x.e + 1, Ctor.rounding); - }; - - - /* - * Return a new Decimal whose value is the sine of the value in radians of this Decimal. - * - * Domain: [-Infinity, Infinity] - * Range: [-1, 1] - * - * sin(x) = x - x^3/3! + x^5/5! - ... - * - * sin(0) = 0 - * sin(-0) = -0 - * sin(Infinity) = NaN - * sin(-Infinity) = NaN - * sin(NaN) = NaN - * - */ - P.sine = P.sin = function () { - var pr, rm, - x = this, - Ctor = x.constructor; - - if (!x.isFinite()) return new Ctor(NaN); - if (x.isZero()) return new Ctor(x); - - pr = Ctor.precision; - rm = Ctor.rounding; - Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE; - Ctor.rounding = 1; - - x = sine(Ctor, toLessThanHalfPi(Ctor, x)); - - Ctor.precision = pr; - Ctor.rounding = rm; - - return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true); - }; - - - /* - * Return a new Decimal whose value is the square root of this Decimal, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - * sqrt(-n) = N - * sqrt(N) = N - * sqrt(-I) = N - * sqrt(I) = I - * sqrt(0) = 0 - * sqrt(-0) = -0 - * - */ - P.squareRoot = P.sqrt = function () { - var m, n, sd, r, rep, t, - x = this, - d = x.d, - e = x.e, - s = x.s, - Ctor = x.constructor; - - // Negative/NaN/Infinity/zero? - if (s !== 1 || !d || !d[0]) { - return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0); - } - - external = false; - - // Initial estimate. - s = Math.sqrt(+x); - - // Math.sqrt underflow/overflow? - // Pass x to Math.sqrt as integer, then adjust the exponent of the result. - if (s == 0 || s == 1 / 0) { - n = digitsToString(d); - - if ((n.length + e) % 2 == 0) n += '0'; - s = Math.sqrt(n); - e = mathfloor((e + 1) / 2) - (e < 0 || e % 2); - - if (s == 1 / 0) { - n = '5e' + e; - } else { - n = s.toExponential(); - n = n.slice(0, n.indexOf('e') + 1) + e; - } - - r = new Ctor(n); - } else { - r = new Ctor(s.toString()); - } - - sd = (e = Ctor.precision) + 3; - - // Newton-Raphson iteration. - for (;;) { - t = r; - r = t.plus(divide(x, t, sd + 2, 1)).times(0.5); - - // TODO? Replace with for-loop and checkRoundingDigits. - if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) { - n = n.slice(sd - 3, sd + 1); - - // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or - // 4999, i.e. approaching a rounding boundary, continue the iteration. - if (n == '9999' || !rep && n == '4999') { - - // On the first iteration only, check to see if rounding up gives the exact result as the - // nines may infinitely repeat. - if (!rep) { - finalise(t, e + 1, 0); - - if (t.times(t).eq(x)) { - r = t; - break; - } - } - - sd += 4; - rep = 1; - } else { - - // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result. - // If not, then there are further digits and m will be truthy. - if (!+n || !+n.slice(1) && n.charAt(0) == '5') { - - // Truncate to the first rounding digit. - finalise(r, e + 1, 1); - m = !r.times(r).eq(x); - } - - break; - } - } - } - - external = true; - - return finalise(r, e, Ctor.rounding, m); - }; - - - /* - * Return a new Decimal whose value is the tangent of the value in radians of this Decimal. - * - * Domain: [-Infinity, Infinity] - * Range: [-Infinity, Infinity] - * - * tan(0) = 0 - * tan(-0) = -0 - * tan(Infinity) = NaN - * tan(-Infinity) = NaN - * tan(NaN) = NaN - * - */ - P.tangent = P.tan = function () { - var pr, rm, - x = this, - Ctor = x.constructor; - - if (!x.isFinite()) return new Ctor(NaN); - if (x.isZero()) return new Ctor(x); - - pr = Ctor.precision; - rm = Ctor.rounding; - Ctor.precision = pr + 10; - Ctor.rounding = 1; - - x = x.sin(); - x.s = 1; - x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0); - - Ctor.precision = pr; - Ctor.rounding = rm; - - return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true); - }; - - - /* - * n * 0 = 0 - * n * N = N - * n * I = I - * 0 * n = 0 - * 0 * 0 = 0 - * 0 * N = N - * 0 * I = N - * N * n = N - * N * 0 = N - * N * N = N - * N * I = N - * I * n = I - * I * 0 = N - * I * N = N - * I * I = I - * - * Return a new Decimal whose value is this Decimal times `y`, rounded to `precision` significant - * digits using rounding mode `rounding`. - * - */ - P.times = P.mul = function (y) { - var carry, e, i, k, r, rL, t, xdL, ydL, - x = this, - Ctor = x.constructor, - xd = x.d, - yd = (y = new Ctor(y)).d; - - y.s *= x.s; - - // If either is NaN, ±Infinity or ±0... - if (!xd || !xd[0] || !yd || !yd[0]) { - - return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd - - // Return NaN if either is NaN. - // Return NaN if x is ±0 and y is ±Infinity, or y is ±0 and x is ±Infinity. - ? NaN - - // Return ±Infinity if either is ±Infinity. - // Return ±0 if either is ±0. - : !xd || !yd ? y.s / 0 : y.s * 0); - } - - e = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE); - xdL = xd.length; - ydL = yd.length; - - // Ensure xd points to the longer array. - if (xdL < ydL) { - r = xd; - xd = yd; - yd = r; - rL = xdL; - xdL = ydL; - ydL = rL; - } - - // Initialise the result array with zeros. - r = []; - rL = xdL + ydL; - for (i = rL; i--;) r.push(0); - - // Multiply! - for (i = ydL; --i >= 0;) { - carry = 0; - for (k = xdL + i; k > i;) { - t = r[k] + yd[i] * xd[k - i - 1] + carry; - r[k--] = t % BASE | 0; - carry = t / BASE | 0; - } - - r[k] = (r[k] + carry) % BASE | 0; - } - - // Remove trailing zeros. - for (; !r[--rL];) r.pop(); - - if (carry) ++e; - else r.shift(); - - y.d = r; - y.e = getBase10Exponent(r, e); - - return external ? finalise(y, Ctor.precision, Ctor.rounding) : y; - }; - - - /* - * Return a string representing the value of this Decimal in base 2, round to `sd` significant - * digits using rounding mode `rm`. - * - * If the optional `sd` argument is present then return binary exponential notation. - * - * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - */ - P.toBinary = function (sd, rm) { - return toStringBinary(this, 2, sd, rm); - }; - - - /* - * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp` - * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted. - * - * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal. - * - * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - */ - P.toDecimalPlaces = P.toDP = function (dp, rm) { - var x = this, - Ctor = x.constructor; - - x = new Ctor(x); - if (dp === void 0) return x; - - checkInt32(dp, 0, MAX_DIGITS); - - if (rm === void 0) rm = Ctor.rounding; - else checkInt32(rm, 0, 8); - - return finalise(x, dp + x.e + 1, rm); - }; - - - /* - * Return a string representing the value of this Decimal in exponential notation rounded to - * `dp` fixed decimal places using rounding mode `rounding`. - * - * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - */ - P.toExponential = function (dp, rm) { - var str, - x = this, - Ctor = x.constructor; - - if (dp === void 0) { - str = finiteToString(x, true); - } else { - checkInt32(dp, 0, MAX_DIGITS); - - if (rm === void 0) rm = Ctor.rounding; - else checkInt32(rm, 0, 8); - - x = finalise(new Ctor(x), dp + 1, rm); - str = finiteToString(x, true, dp + 1); - } - - return x.isNeg() && !x.isZero() ? '-' + str : str; - }; - - - /* - * Return a string representing the value of this Decimal in normal (fixed-point) notation to - * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is - * omitted. - * - * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'. - * - * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'. - * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'. - * (-0).toFixed(3) is '0.000'. - * (-0.5).toFixed(0) is '-0'. - * - */ - P.toFixed = function (dp, rm) { - var str, y, - x = this, - Ctor = x.constructor; - - if (dp === void 0) { - str = finiteToString(x); - } else { - checkInt32(dp, 0, MAX_DIGITS); - - if (rm === void 0) rm = Ctor.rounding; - else checkInt32(rm, 0, 8); - - y = finalise(new Ctor(x), dp + x.e + 1, rm); - str = finiteToString(y, false, dp + y.e + 1); - } - - // To determine whether to add the minus sign look at the value before it was rounded, - // i.e. look at `x` rather than `y`. - return x.isNeg() && !x.isZero() ? '-' + str : str; - }; - - - /* - * Return an array representing the value of this Decimal as a simple fraction with an integer - * numerator and an integer denominator. - * - * The denominator will be a positive non-zero value less than or equal to the specified maximum - * denominator. If a maximum denominator is not specified, the denominator will be the lowest - * value necessary to represent the number exactly. - * - * [maxD] {number|string|Decimal} Maximum denominator. Integer >= 1 and < Infinity. - * - */ - P.toFraction = function (maxD) { - var d, d0, d1, d2, e, k, n, n0, n1, pr, q, r, - x = this, - xd = x.d, - Ctor = x.constructor; - - if (!xd) return new Ctor(x); - - n1 = d0 = new Ctor(1); - d1 = n0 = new Ctor(0); - - d = new Ctor(d1); - e = d.e = getPrecision(xd) - x.e - 1; - k = e % LOG_BASE; - d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k); - - if (maxD == null) { - - // d is 10**e, the minimum max-denominator needed. - maxD = e > 0 ? d : n1; - } else { - n = new Ctor(maxD); - if (!n.isInt() || n.lt(n1)) throw Error(invalidArgument + n); - maxD = n.gt(d) ? (e > 0 ? d : n1) : n; - } - - external = false; - n = new Ctor(digitsToString(xd)); - pr = Ctor.precision; - Ctor.precision = e = xd.length * LOG_BASE * 2; - - for (;;) { - q = divide(n, d, 0, 1, 1); - d2 = d0.plus(q.times(d1)); - if (d2.cmp(maxD) == 1) break; - d0 = d1; - d1 = d2; - d2 = n1; - n1 = n0.plus(q.times(d2)); - n0 = d2; - d2 = d; - d = n.minus(q.times(d2)); - n = d2; - } - - d2 = divide(maxD.minus(d0), d1, 0, 1, 1); - n0 = n0.plus(d2.times(n1)); - d0 = d0.plus(d2.times(d1)); - n0.s = n1.s = x.s; - - // Determine which fraction is closer to x, n0/d0 or n1/d1? - r = divide(n1, d1, e, 1).minus(x).abs().cmp(divide(n0, d0, e, 1).minus(x).abs()) < 1 - ? [n1, d1] : [n0, d0]; - - Ctor.precision = pr; - external = true; - - return r; - }; - - - /* - * Return a string representing the value of this Decimal in base 16, round to `sd` significant - * digits using rounding mode `rm`. - * - * If the optional `sd` argument is present then return binary exponential notation. - * - * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - */ - P.toHexadecimal = P.toHex = function (sd, rm) { - return toStringBinary(this, 16, sd, rm); - }; - - - /* - * Returns a new Decimal whose value is the nearest multiple of `y` in the direction of rounding - * mode `rm`, or `Decimal.rounding` if `rm` is omitted, to the value of this Decimal. - * - * The return value will always have the same sign as this Decimal, unless either this Decimal - * or `y` is NaN, in which case the return value will be also be NaN. - * - * The return value is not affected by the value of `precision`. - * - * y {number|string|Decimal} The magnitude to round to a multiple of. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - * 'toNearest() rounding mode not an integer: {rm}' - * 'toNearest() rounding mode out of range: {rm}' - * - */ - P.toNearest = function (y, rm) { - var x = this, - Ctor = x.constructor; - - x = new Ctor(x); - - if (y == null) { - - // If x is not finite, return x. - if (!x.d) return x; - - y = new Ctor(1); - rm = Ctor.rounding; - } else { - y = new Ctor(y); - if (rm === void 0) { - rm = Ctor.rounding; - } else { - checkInt32(rm, 0, 8); - } - - // If x is not finite, return x if y is not NaN, else NaN. - if (!x.d) return y.s ? x : y; - - // If y is not finite, return Infinity with the sign of x if y is Infinity, else NaN. - if (!y.d) { - if (y.s) y.s = x.s; - return y; - } - } - - // If y is not zero, calculate the nearest multiple of y to x. - if (y.d[0]) { - external = false; - x = divide(x, y, 0, rm, 1).times(y); - external = true; - finalise(x); - - // If y is zero, return zero with the sign of x. - } else { - y.s = x.s; - x = y; - } - - return x; - }; - - - /* - * Return the value of this Decimal converted to a number primitive. - * Zero keeps its sign. - * - */ - P.toNumber = function () { - return +this; - }; - - - /* - * Return a string representing the value of this Decimal in base 8, round to `sd` significant - * digits using rounding mode `rm`. - * - * If the optional `sd` argument is present then return binary exponential notation. - * - * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - */ - P.toOctal = function (sd, rm) { - return toStringBinary(this, 8, sd, rm); - }; - - - /* - * Return a new Decimal whose value is the value of this Decimal raised to the power `y`, rounded - * to `precision` significant digits using rounding mode `rounding`. - * - * ECMAScript compliant. - * - * pow(x, NaN) = NaN - * pow(x, ±0) = 1 - - * pow(NaN, non-zero) = NaN - * pow(abs(x) > 1, +Infinity) = +Infinity - * pow(abs(x) > 1, -Infinity) = +0 - * pow(abs(x) == 1, ±Infinity) = NaN - * pow(abs(x) < 1, +Infinity) = +0 - * pow(abs(x) < 1, -Infinity) = +Infinity - * pow(+Infinity, y > 0) = +Infinity - * pow(+Infinity, y < 0) = +0 - * pow(-Infinity, odd integer > 0) = -Infinity - * pow(-Infinity, even integer > 0) = +Infinity - * pow(-Infinity, odd integer < 0) = -0 - * pow(-Infinity, even integer < 0) = +0 - * pow(+0, y > 0) = +0 - * pow(+0, y < 0) = +Infinity - * pow(-0, odd integer > 0) = -0 - * pow(-0, even integer > 0) = +0 - * pow(-0, odd integer < 0) = -Infinity - * pow(-0, even integer < 0) = +Infinity - * pow(finite x < 0, finite non-integer) = NaN - * - * For non-integer or very large exponents pow(x, y) is calculated using - * - * x^y = exp(y*ln(x)) - * - * Assuming the first 15 rounding digits are each equally likely to be any digit 0-9, the - * probability of an incorrectly rounded result - * P([49]9{14} | [50]0{14}) = 2 * 0.2 * 10^-14 = 4e-15 = 1/2.5e+14 - * i.e. 1 in 250,000,000,000,000 - * - * If a result is incorrectly rounded the maximum error will be 1 ulp (unit in last place). - * - * y {number|string|Decimal} The power to which to raise this Decimal. - * - */ - P.toPower = P.pow = function (y) { - var e, k, pr, r, rm, s, - x = this, - Ctor = x.constructor, - yn = +(y = new Ctor(y)); - - // Either ±Infinity, NaN or ±0? - if (!x.d || !y.d || !x.d[0] || !y.d[0]) return new Ctor(mathpow(+x, yn)); - - x = new Ctor(x); - - if (x.eq(1)) return x; - - pr = Ctor.precision; - rm = Ctor.rounding; - - if (y.eq(1)) return finalise(x, pr, rm); - - // y exponent - e = mathfloor(y.e / LOG_BASE); - - // If y is a small integer use the 'exponentiation by squaring' algorithm. - if (e >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) { - r = intPow(Ctor, x, k, pr); - return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm); - } - - s = x.s; - - // if x is negative - if (s < 0) { - - // if y is not an integer - if (e < y.d.length - 1) return new Ctor(NaN); - - // Result is positive if x is negative and the last digit of integer y is even. - if ((y.d[e] & 1) == 0) s = 1; - - // if x.eq(-1) - if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) { - x.s = s; - return x; - } - } - - // Estimate result exponent. - // x^y = 10^e, where e = y * log10(x) - // log10(x) = log10(x_significand) + x_exponent - // log10(x_significand) = ln(x_significand) / ln(10) - k = mathpow(+x, yn); - e = k == 0 || !isFinite(k) - ? mathfloor(yn * (Math.log('0.' + digitsToString(x.d)) / Math.LN10 + x.e + 1)) - : new Ctor(k + '').e; - - // Exponent estimate may be incorrect e.g. x: 0.999999999999999999, y: 2.29, e: 0, r.e: -1. - - // Overflow/underflow? - if (e > Ctor.maxE + 1 || e < Ctor.minE - 1) return new Ctor(e > 0 ? s / 0 : 0); - - external = false; - Ctor.rounding = x.s = 1; - - // Estimate the extra guard digits needed to ensure five correct rounding digits from - // naturalLogarithm(x). Example of failure without these extra digits (precision: 10): - // new Decimal(2.32456).pow('2087987436534566.46411') - // should be 1.162377823e+764914905173815, but is 1.162355823e+764914905173815 - k = Math.min(12, (e + '').length); - - // r = x^y = exp(y*ln(x)) - r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr); - - // r may be Infinity, e.g. (0.9999999999999999).pow(-1e+40) - if (r.d) { - - // Truncate to the required precision plus five rounding digits. - r = finalise(r, pr + 5, 1); - - // If the rounding digits are [49]9999 or [50]0000 increase the precision by 10 and recalculate - // the result. - if (checkRoundingDigits(r.d, pr, rm)) { - e = pr + 10; - - // Truncate to the increased precision plus five rounding digits. - r = finalise(naturalExponential(y.times(naturalLogarithm(x, e + k)), e), e + 5, 1); - - // Check for 14 nines from the 2nd rounding digit (the first rounding digit may be 4 or 9). - if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 1e14) { - r = finalise(r, pr + 1, 0); - } - } - } - - r.s = s; - external = true; - Ctor.rounding = rm; - - return finalise(r, pr, rm); - }; - - - /* - * Return a string representing the value of this Decimal rounded to `sd` significant digits - * using rounding mode `rounding`. - * - * Return exponential notation if `sd` is less than the number of digits necessary to represent - * the integer part of the value in normal notation. - * - * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - */ - P.toPrecision = function (sd, rm) { - var str, - x = this, - Ctor = x.constructor; - - if (sd === void 0) { - str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos); - } else { - checkInt32(sd, 1, MAX_DIGITS); - - if (rm === void 0) rm = Ctor.rounding; - else checkInt32(rm, 0, 8); - - x = finalise(new Ctor(x), sd, rm); - str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd); - } - - return x.isNeg() && !x.isZero() ? '-' + str : str; - }; - - - /* - * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd` - * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if - * omitted. - * - * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - * 'toSD() digits out of range: {sd}' - * 'toSD() digits not an integer: {sd}' - * 'toSD() rounding mode not an integer: {rm}' - * 'toSD() rounding mode out of range: {rm}' - * - */ - P.toSignificantDigits = P.toSD = function (sd, rm) { - var x = this, - Ctor = x.constructor; - - if (sd === void 0) { - sd = Ctor.precision; - rm = Ctor.rounding; - } else { - checkInt32(sd, 1, MAX_DIGITS); - - if (rm === void 0) rm = Ctor.rounding; - else checkInt32(rm, 0, 8); - } - - return finalise(new Ctor(x), sd, rm); - }; - - - /* - * Return a string representing the value of this Decimal. - * - * Return exponential notation if this Decimal has a positive exponent equal to or greater than - * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`. - * - */ - P.toString = function () { - var x = this, - Ctor = x.constructor, - str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos); - - return x.isNeg() && !x.isZero() ? '-' + str : str; - }; - - - /* - * Return a new Decimal whose value is the value of this Decimal truncated to a whole number. - * - */ - P.truncated = P.trunc = function () { - return finalise(new this.constructor(this), this.e + 1, 1); - }; - - - /* - * Return a string representing the value of this Decimal. - * Unlike `toString`, negative zero will include the minus sign. - * - */ - P.valueOf = P.toJSON = function () { - var x = this, - Ctor = x.constructor, - str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos); - - return x.isNeg() ? '-' + str : str; - }; - - - // Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers. - - - /* - * digitsToString P.cubeRoot, P.logarithm, P.squareRoot, P.toFraction, P.toPower, - * finiteToString, naturalExponential, naturalLogarithm - * checkInt32 P.toDecimalPlaces, P.toExponential, P.toFixed, P.toNearest, - * P.toPrecision, P.toSignificantDigits, toStringBinary, random - * checkRoundingDigits P.logarithm, P.toPower, naturalExponential, naturalLogarithm - * convertBase toStringBinary, parseOther - * cos P.cos - * divide P.atanh, P.cubeRoot, P.dividedBy, P.dividedToIntegerBy, - * P.logarithm, P.modulo, P.squareRoot, P.tan, P.tanh, P.toFraction, - * P.toNearest, toStringBinary, naturalExponential, naturalLogarithm, - * taylorSeries, atan2, parseOther - * finalise P.absoluteValue, P.atan, P.atanh, P.ceil, P.cos, P.cosh, - * P.cubeRoot, P.dividedToIntegerBy, P.floor, P.logarithm, P.minus, - * P.modulo, P.negated, P.plus, P.round, P.sin, P.sinh, P.squareRoot, - * P.tan, P.times, P.toDecimalPlaces, P.toExponential, P.toFixed, - * P.toNearest, P.toPower, P.toPrecision, P.toSignificantDigits, - * P.truncated, divide, getLn10, getPi, naturalExponential, - * naturalLogarithm, ceil, floor, round, trunc - * finiteToString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf, - * toStringBinary - * getBase10Exponent P.minus, P.plus, P.times, parseOther - * getLn10 P.logarithm, naturalLogarithm - * getPi P.acos, P.asin, P.atan, toLessThanHalfPi, atan2 - * getPrecision P.precision, P.toFraction - * getZeroString digitsToString, finiteToString - * intPow P.toPower, parseOther - * isOdd toLessThanHalfPi - * maxOrMin max, min - * naturalExponential P.naturalExponential, P.toPower - * naturalLogarithm P.acosh, P.asinh, P.atanh, P.logarithm, P.naturalLogarithm, - * P.toPower, naturalExponential - * nonFiniteToString finiteToString, toStringBinary - * parseDecimal Decimal - * parseOther Decimal - * sin P.sin - * taylorSeries P.cosh, P.sinh, cos, sin - * toLessThanHalfPi P.cos, P.sin - * toStringBinary P.toBinary, P.toHexadecimal, P.toOctal - * truncate intPow - * - * Throws: P.logarithm, P.precision, P.toFraction, checkInt32, getLn10, getPi, - * naturalLogarithm, config, parseOther, random, Decimal - */ - - - function digitsToString(d) { - var i, k, ws, - indexOfLastWord = d.length - 1, - str = '', - w = d[0]; - - if (indexOfLastWord > 0) { - str += w; - for (i = 1; i < indexOfLastWord; i++) { - ws = d[i] + ''; - k = LOG_BASE - ws.length; - if (k) str += getZeroString(k); - str += ws; - } - - w = d[i]; - ws = w + ''; - k = LOG_BASE - ws.length; - if (k) str += getZeroString(k); - } else if (w === 0) { - return '0'; - } - - // Remove trailing zeros of last w. - for (; w % 10 === 0;) w /= 10; - - return str + w; - } - - - function checkInt32(i, min, max) { - if (i !== ~~i || i < min || i > max) { - throw Error(invalidArgument + i); - } - } - - - /* - * Check 5 rounding digits if `repeating` is null, 4 otherwise. - * `repeating == null` if caller is `log` or `pow`, - * `repeating != null` if caller is `naturalLogarithm` or `naturalExponential`. - */ - function checkRoundingDigits(d, i, rm, repeating) { - var di, k, r, rd; - - // Get the length of the first word of the array d. - for (k = d[0]; k >= 10; k /= 10) --i; - - // Is the rounding digit in the first word of d? - if (--i < 0) { - i += LOG_BASE; - di = 0; - } else { - di = Math.ceil((i + 1) / LOG_BASE); - i %= LOG_BASE; - } - - // i is the index (0 - 6) of the rounding digit. - // E.g. if within the word 3487563 the first rounding digit is 5, - // then i = 4, k = 1000, rd = 3487563 % 1000 = 563 - k = mathpow(10, LOG_BASE - i); - rd = d[di] % k | 0; - - if (repeating == null) { - if (i < 3) { - if (i == 0) rd = rd / 100 | 0; - else if (i == 1) rd = rd / 10 | 0; - r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 50000 || rd == 0; - } else { - r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) && - (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 || - (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0; - } - } else { - if (i < 4) { - if (i == 0) rd = rd / 1000 | 0; - else if (i == 1) rd = rd / 100 | 0; - else if (i == 2) rd = rd / 10 | 0; - r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999; - } else { - r = ((repeating || rm < 4) && rd + 1 == k || - (!repeating && rm > 3) && rd + 1 == k / 2) && - (d[di + 1] / k / 1000 | 0) == mathpow(10, i - 3) - 1; - } - } - - return r; - } - - - // Convert string of `baseIn` to an array of numbers of `baseOut`. - // Eg. convertBase('255', 10, 16) returns [15, 15]. - // Eg. convertBase('ff', 16, 10) returns [2, 5, 5]. - function convertBase(str, baseIn, baseOut) { - var j, - arr = [0], - arrL, - i = 0, - strL = str.length; - - for (; i < strL;) { - for (arrL = arr.length; arrL--;) arr[arrL] *= baseIn; - arr[0] += NUMERALS.indexOf(str.charAt(i++)); - for (j = 0; j < arr.length; j++) { - if (arr[j] > baseOut - 1) { - if (arr[j + 1] === void 0) arr[j + 1] = 0; - arr[j + 1] += arr[j] / baseOut | 0; - arr[j] %= baseOut; - } - } - } - - return arr.reverse(); - } - - - /* - * cos(x) = 1 - x^2/2! + x^4/4! - ... - * |x| < pi/2 - * - */ - function cosine(Ctor, x) { - var k, len, y; - - if (x.isZero()) return x; - - // Argument reduction: cos(4x) = 8*(cos^4(x) - cos^2(x)) + 1 - // i.e. cos(x) = 8*(cos^4(x/4) - cos^2(x/4)) + 1 - - // Estimate the optimum number of times to use the argument reduction. - len = x.d.length; - if (len < 32) { - k = Math.ceil(len / 3); - y = (1 / tinyPow(4, k)).toString(); - } else { - k = 16; - y = '2.3283064365386962890625e-10'; - } - - Ctor.precision += k; - - x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1)); - - // Reverse argument reduction - for (var i = k; i--;) { - var cos2x = x.times(x); - x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1); - } - - Ctor.precision -= k; - - return x; - } - - - /* - * Perform division in the specified base. - */ - var divide = (function () { - - // Assumes non-zero x and k, and hence non-zero result. - function multiplyInteger(x, k, base) { - var temp, - carry = 0, - i = x.length; - - for (x = x.slice(); i--;) { - temp = x[i] * k + carry; - x[i] = temp % base | 0; - carry = temp / base | 0; - } - - if (carry) x.unshift(carry); - - return x; - } - - function compare(a, b, aL, bL) { - var i, r; - - if (aL != bL) { - r = aL > bL ? 1 : -1; - } else { - for (i = r = 0; i < aL; i++) { - if (a[i] != b[i]) { - r = a[i] > b[i] ? 1 : -1; - break; - } - } - } - - return r; - } - - function subtract(a, b, aL, base) { - var i = 0; - - // Subtract b from a. - for (; aL--;) { - a[aL] -= i; - i = a[aL] < b[aL] ? 1 : 0; - a[aL] = i * base + a[aL] - b[aL]; - } - - // Remove leading zeros. - for (; !a[0] && a.length > 1;) a.shift(); - } - - return function (x, y, pr, rm, dp, base) { - var cmp, e, i, k, logBase, more, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0, - yL, yz, - Ctor = x.constructor, - sign = x.s == y.s ? 1 : -1, - xd = x.d, - yd = y.d; - - // Either NaN, Infinity or 0? - if (!xd || !xd[0] || !yd || !yd[0]) { - - return new Ctor(// Return NaN if either NaN, or both Infinity or 0. - !x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN : - - // Return ±0 if x is 0 or y is ±Infinity, or return ±Infinity as y is 0. - xd && xd[0] == 0 || !yd ? sign * 0 : sign / 0); - } - - if (base) { - logBase = 1; - e = x.e - y.e; - } else { - base = BASE; - logBase = LOG_BASE; - e = mathfloor(x.e / logBase) - mathfloor(y.e / logBase); - } - - yL = yd.length; - xL = xd.length; - q = new Ctor(sign); - qd = q.d = []; - - // Result exponent may be one less than e. - // The digit array of a Decimal from toStringBinary may have trailing zeros. - for (i = 0; yd[i] == (xd[i] || 0); i++); - - if (yd[i] > (xd[i] || 0)) e--; - - if (pr == null) { - sd = pr = Ctor.precision; - rm = Ctor.rounding; - } else if (dp) { - sd = pr + (x.e - y.e) + 1; - } else { - sd = pr; - } - - if (sd < 0) { - qd.push(1); - more = true; - } else { - - // Convert precision in number of base 10 digits to base 1e7 digits. - sd = sd / logBase + 2 | 0; - i = 0; - - // divisor < 1e7 - if (yL == 1) { - k = 0; - yd = yd[0]; - sd++; - - // k is the carry. - for (; (i < xL || k) && sd--; i++) { - t = k * base + (xd[i] || 0); - qd[i] = t / yd | 0; - k = t % yd | 0; - } - - more = k || i < xL; - - // divisor >= 1e7 - } else { - - // Normalise xd and yd so highest order digit of yd is >= base/2 - k = base / (yd[0] + 1) | 0; - - if (k > 1) { - yd = multiplyInteger(yd, k, base); - xd = multiplyInteger(xd, k, base); - yL = yd.length; - xL = xd.length; - } - - xi = yL; - rem = xd.slice(0, yL); - remL = rem.length; - - // Add zeros to make remainder as long as divisor. - for (; remL < yL;) rem[remL++] = 0; - - yz = yd.slice(); - yz.unshift(0); - yd0 = yd[0]; - - if (yd[1] >= base / 2) ++yd0; - - do { - k = 0; - - // Compare divisor and remainder. - cmp = compare(yd, rem, yL, remL); - - // If divisor < remainder. - if (cmp < 0) { - - // Calculate trial digit, k. - rem0 = rem[0]; - if (yL != remL) rem0 = rem0 * base + (rem[1] || 0); - - // k will be how many times the divisor goes into the current remainder. - k = rem0 / yd0 | 0; - - // Algorithm: - // 1. product = divisor * trial digit (k) - // 2. if product > remainder: product -= divisor, k-- - // 3. remainder -= product - // 4. if product was < remainder at 2: - // 5. compare new remainder and divisor - // 6. If remainder > divisor: remainder -= divisor, k++ - - if (k > 1) { - if (k >= base) k = base - 1; - - // product = divisor * trial digit. - prod = multiplyInteger(yd, k, base); - prodL = prod.length; - remL = rem.length; - - // Compare product and remainder. - cmp = compare(prod, rem, prodL, remL); - - // product > remainder. - if (cmp == 1) { - k--; - - // Subtract divisor from product. - subtract(prod, yL < prodL ? yz : yd, prodL, base); - } - } else { - - // cmp is -1. - // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1 - // to avoid it. If k is 1 there is a need to compare yd and rem again below. - if (k == 0) cmp = k = 1; - prod = yd.slice(); - } - - prodL = prod.length; - if (prodL < remL) prod.unshift(0); - - // Subtract product from remainder. - subtract(rem, prod, remL, base); - - // If product was < previous remainder. - if (cmp == -1) { - remL = rem.length; - - // Compare divisor and new remainder. - cmp = compare(yd, rem, yL, remL); - - // If divisor < new remainder, subtract divisor from remainder. - if (cmp < 1) { - k++; - - // Subtract divisor from remainder. - subtract(rem, yL < remL ? yz : yd, remL, base); - } - } - - remL = rem.length; - } else if (cmp === 0) { - k++; - rem = [0]; - } // if cmp === 1, k will be 0 - - // Add the next digit, k, to the result array. - qd[i++] = k; - - // Update the remainder. - if (cmp && rem[0]) { - rem[remL++] = xd[xi] || 0; - } else { - rem = [xd[xi]]; - remL = 1; - } - - } while ((xi++ < xL || rem[0] !== void 0) && sd--); - - more = rem[0] !== void 0; - } - - // Leading zero? - if (!qd[0]) qd.shift(); - } - - // logBase is 1 when divide is being used for base conversion. - if (logBase == 1) { - q.e = e; - inexact = more; - } else { - - // To calculate q.e, first get the number of digits of qd[0]. - for (i = 1, k = qd[0]; k >= 10; k /= 10) i++; - q.e = i + e * logBase - 1; - - finalise(q, dp ? pr + q.e + 1 : pr, rm, more); - } - - return q; - }; - })(); - - - /* - * Round `x` to `sd` significant digits using rounding mode `rm`. - * Check for over/under-flow. - */ - function finalise(x, sd, rm, isTruncated) { - var digits, i, j, k, rd, roundUp, w, xd, xdi, - Ctor = x.constructor; - - // Don't round if sd is null or undefined. - out: if (sd != null) { - xd = x.d; - - // Infinity/NaN. - if (!xd) return x; - - // rd: the rounding digit, i.e. the digit after the digit that may be rounded up. - // w: the word of xd containing rd, a base 1e7 number. - // xdi: the index of w within xd. - // digits: the number of digits of w. - // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if - // they had leading zeros) - // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero). - - // Get the length of the first word of the digits array xd. - for (digits = 1, k = xd[0]; k >= 10; k /= 10) digits++; - i = sd - digits; - - // Is the rounding digit in the first word of xd? - if (i < 0) { - i += LOG_BASE; - j = sd; - w = xd[xdi = 0]; - - // Get the rounding digit at index j of w. - rd = w / mathpow(10, digits - j - 1) % 10 | 0; - } else { - xdi = Math.ceil((i + 1) / LOG_BASE); - k = xd.length; - if (xdi >= k) { - if (isTruncated) { - - // Needed by `naturalExponential`, `naturalLogarithm` and `squareRoot`. - for (; k++ <= xdi;) xd.push(0); - w = rd = 0; - digits = 1; - i %= LOG_BASE; - j = i - LOG_BASE + 1; - } else { - break out; - } - } else { - w = k = xd[xdi]; - - // Get the number of digits of w. - for (digits = 1; k >= 10; k /= 10) digits++; - - // Get the index of rd within w. - i %= LOG_BASE; - - // Get the index of rd within w, adjusted for leading zeros. - // The number of leading zeros of w is given by LOG_BASE - digits. - j = i - LOG_BASE + digits; - - // Get the rounding digit at index j of w. - rd = j < 0 ? 0 : w / mathpow(10, digits - j - 1) % 10 | 0; - } - } - - // Are there any non-zero digits after the rounding digit? - isTruncated = isTruncated || sd < 0 || - xd[xdi + 1] !== void 0 || (j < 0 ? w : w % mathpow(10, digits - j - 1)); - - // The expression `w % mathpow(10, digits - j - 1)` returns all the digits of w to the right - // of the digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression - // will give 714. - - roundUp = rm < 4 - ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) - : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 && - - // Check whether the digit to the left of the rounding digit is odd. - ((i > 0 ? j > 0 ? w / mathpow(10, digits - j) : 0 : xd[xdi - 1]) % 10) & 1 || - rm == (x.s < 0 ? 8 : 7)); - - if (sd < 1 || !xd[0]) { - xd.length = 0; - if (roundUp) { - - // Convert sd to decimal places. - sd -= x.e + 1; - - // 1, 0.1, 0.01, 0.001, 0.0001 etc. - xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE); - x.e = -sd || 0; - } else { - - // Zero. - xd[0] = x.e = 0; - } - - return x; - } - - // Remove excess digits. - if (i == 0) { - xd.length = xdi; - k = 1; - xdi--; - } else { - xd.length = xdi + 1; - k = mathpow(10, LOG_BASE - i); - - // E.g. 56700 becomes 56000 if 7 is the rounding digit. - // j > 0 means i > number of leading zeros of w. - xd[xdi] = j > 0 ? (w / mathpow(10, digits - j) % mathpow(10, j) | 0) * k : 0; - } - - if (roundUp) { - for (;;) { - - // Is the digit to be rounded up in the first word of xd? - if (xdi == 0) { - - // i will be the length of xd[0] before k is added. - for (i = 1, j = xd[0]; j >= 10; j /= 10) i++; - j = xd[0] += k; - for (k = 1; j >= 10; j /= 10) k++; - - // if i != k the length has increased. - if (i != k) { - x.e++; - if (xd[0] == BASE) xd[0] = 1; - } - - break; - } else { - xd[xdi] += k; - if (xd[xdi] != BASE) break; - xd[xdi--] = 0; - k = 1; - } - } - } - - // Remove trailing zeros. - for (i = xd.length; xd[--i] === 0;) xd.pop(); - } - - if (external) { - - // Overflow? - if (x.e > Ctor.maxE) { - - // Infinity. - x.d = null; - x.e = NaN; - - // Underflow? - } else if (x.e < Ctor.minE) { - - // Zero. - x.e = 0; - x.d = [0]; - // Ctor.underflow = true; - } // else Ctor.underflow = false; - } - - return x; - } - - - function finiteToString(x, isExp, sd) { - if (!x.isFinite()) return nonFiniteToString(x); - var k, - e = x.e, - str = digitsToString(x.d), - len = str.length; - - if (isExp) { - if (sd && (k = sd - len) > 0) { - str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k); - } else if (len > 1) { - str = str.charAt(0) + '.' + str.slice(1); - } - - str = str + (x.e < 0 ? 'e' : 'e+') + x.e; - } else if (e < 0) { - str = '0.' + getZeroString(-e - 1) + str; - if (sd && (k = sd - len) > 0) str += getZeroString(k); - } else if (e >= len) { - str += getZeroString(e + 1 - len); - if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k); - } else { - if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k); - if (sd && (k = sd - len) > 0) { - if (e + 1 === len) str += '.'; - str += getZeroString(k); - } - } - - return str; - } - - - // Calculate the base 10 exponent from the base 1e7 exponent. - function getBase10Exponent(digits, e) { - var w = digits[0]; - - // Add the number of digits of the first word of the digits array. - for ( e *= LOG_BASE; w >= 10; w /= 10) e++; - return e; - } - - - function getLn10(Ctor, sd, pr) { - if (sd > LN10_PRECISION) { - - // Reset global state in case the exception is caught. - external = true; - if (pr) Ctor.precision = pr; - throw Error(precisionLimitExceeded); - } - return finalise(new Ctor(LN10), sd, 1, true); - } - - - function getPi(Ctor, sd, rm) { - if (sd > PI_PRECISION) throw Error(precisionLimitExceeded); - return finalise(new Ctor(PI), sd, rm, true); - } - - - function getPrecision(digits) { - var w = digits.length - 1, - len = w * LOG_BASE + 1; - - w = digits[w]; - - // If non-zero... - if (w) { - - // Subtract the number of trailing zeros of the last word. - for (; w % 10 == 0; w /= 10) len--; - - // Add the number of digits of the first word. - for (w = digits[0]; w >= 10; w /= 10) len++; - } - - return len; - } - - - function getZeroString(k) { - var zs = ''; - for (; k--;) zs += '0'; - return zs; - } - - - /* - * Return a new Decimal whose value is the value of Decimal `x` to the power `n`, where `n` is an - * integer of type number. - * - * Implements 'exponentiation by squaring'. Called by `pow` and `parseOther`. - * - */ - function intPow(Ctor, x, n, pr) { - var isTruncated, - r = new Ctor(1), - - // Max n of 9007199254740991 takes 53 loop iterations. - // Maximum digits array length; leaves [28, 34] guard digits. - k = Math.ceil(pr / LOG_BASE + 4); - - external = false; - - for (;;) { - if (n % 2) { - r = r.times(x); - if (truncate(r.d, k)) isTruncated = true; - } - - n = mathfloor(n / 2); - if (n === 0) { - - // To ensure correct rounding when r.d is truncated, increment the last word if it is zero. - n = r.d.length - 1; - if (isTruncated && r.d[n] === 0) ++r.d[n]; - break; - } - - x = x.times(x); - truncate(x.d, k); - } - - external = true; - - return r; - } - - - function isOdd(n) { - return n.d[n.d.length - 1] & 1; - } - - - /* - * Handle `max` and `min`. `ltgt` is 'lt' or 'gt'. - */ - function maxOrMin(Ctor, args, ltgt) { - var y, - x = new Ctor(args[0]), - i = 0; - - for (; ++i < args.length;) { - y = new Ctor(args[i]); - if (!y.s) { - x = y; - break; - } else if (x[ltgt](y)) { - x = y; - } - } - - return x; - } - - - /* - * Return a new Decimal whose value is the natural exponential of `x` rounded to `sd` significant - * digits. - * - * Taylor/Maclaurin series. - * - * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ... - * - * Argument reduction: - * Repeat x = x / 32, k += 5, until |x| < 0.1 - * exp(x) = exp(x / 2^k)^(2^k) - * - * Previously, the argument was initially reduced by - * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10) - * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was - * found to be slower than just dividing repeatedly by 32 as above. - * - * Max integer argument: exp('20723265836946413') = 6.3e+9000000000000000 - * Min integer argument: exp('-20723265836946411') = 1.2e-9000000000000000 - * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324) - * - * exp(Infinity) = Infinity - * exp(-Infinity) = 0 - * exp(NaN) = NaN - * exp(±0) = 1 - * - * exp(x) is non-terminating for any finite, non-zero x. - * - * The result will always be correctly rounded. - * - */ - function naturalExponential(x, sd) { - var denominator, guard, j, pow, sum, t, wpr, - rep = 0, - i = 0, - k = 0, - Ctor = x.constructor, - rm = Ctor.rounding, - pr = Ctor.precision; - - // 0/NaN/Infinity? - if (!x.d || !x.d[0] || x.e > 17) { - - return new Ctor(x.d - ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0 - : x.s ? x.s < 0 ? 0 : x : 0 / 0); - } - - if (sd == null) { - external = false; - wpr = pr; - } else { - wpr = sd; - } - - t = new Ctor(0.03125); - - // while abs(x) >= 0.1 - while (x.e > -2) { - - // x = x / 2^5 - x = x.times(t); - k += 5; - } - - // Use 2 * log10(2^k) + 5 (empirically derived) to estimate the increase in precision - // necessary to ensure the first 4 rounding digits are correct. - guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0; - wpr += guard; - denominator = pow = sum = new Ctor(1); - Ctor.precision = wpr; - - for (;;) { - pow = finalise(pow.times(x), wpr, 1); - denominator = denominator.times(++i); - t = sum.plus(divide(pow, denominator, wpr, 1)); - - if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) { - j = k; - while (j--) sum = finalise(sum.times(sum), wpr, 1); - - // Check to see if the first 4 rounding digits are [49]999. - // If so, repeat the summation with a higher precision, otherwise - // e.g. with precision: 18, rounding: 1 - // exp(18.404272462595034083567793919843761) = 98372560.1229999999 (should be 98372560.123) - // `wpr - guard` is the index of first rounding digit. - if (sd == null) { - - if (rep < 3 && checkRoundingDigits(sum.d, wpr - guard, rm, rep)) { - Ctor.precision = wpr += 10; - denominator = pow = t = new Ctor(1); - i = 0; - rep++; - } else { - return finalise(sum, Ctor.precision = pr, rm, external = true); - } - } else { - Ctor.precision = pr; - return sum; - } - } - - sum = t; - } - } - - - /* - * Return a new Decimal whose value is the natural logarithm of `x` rounded to `sd` significant - * digits. - * - * ln(-n) = NaN - * ln(0) = -Infinity - * ln(-0) = -Infinity - * ln(1) = 0 - * ln(Infinity) = Infinity - * ln(-Infinity) = NaN - * ln(NaN) = NaN - * - * ln(n) (n != 1) is non-terminating. - * - */ - function naturalLogarithm(y, sd) { - var c, c0, denominator, e, numerator, rep, sum, t, wpr, x1, x2, - n = 1, - guard = 10, - x = y, - xd = x.d, - Ctor = x.constructor, - rm = Ctor.rounding, - pr = Ctor.precision; - - // Is x negative or Infinity, NaN, 0 or 1? - if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) { - return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x); - } - - if (sd == null) { - external = false; - wpr = pr; - } else { - wpr = sd; - } - - Ctor.precision = wpr += guard; - c = digitsToString(xd); - c0 = c.charAt(0); - - if (Math.abs(e = x.e) < 1.5e15) { - - // Argument reduction. - // The series converges faster the closer the argument is to 1, so using - // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b - // multiply the argument by itself until the leading digits of the significand are 7, 8, 9, - // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can - // later be divided by this number, then separate out the power of 10 using - // ln(a*10^b) = ln(a) + b*ln(10). - - // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14). - //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) { - // max n is 6 (gives 0.7 - 1.3) - while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) { - x = x.times(y); - c = digitsToString(x.d); - c0 = c.charAt(0); - n++; - } - - e = x.e; - - if (c0 > 1) { - x = new Ctor('0.' + c); - e++; - } else { - x = new Ctor(c0 + '.' + c.slice(1)); - } - } else { - - // The argument reduction method above may result in overflow if the argument y is a massive - // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this - // function using ln(x*10^e) = ln(x) + e*ln(10). - t = getLn10(Ctor, wpr + 2, pr).times(e + ''); - x = naturalLogarithm(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t); - Ctor.precision = pr; - - return sd == null ? finalise(x, pr, rm, external = true) : x; - } - - // x1 is x reduced to a value near 1. - x1 = x; - - // Taylor series. - // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...) - // where x = (y - 1)/(y + 1) (|x| < 1) - sum = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1); - x2 = finalise(x.times(x), wpr, 1); - denominator = 3; - - for (;;) { - numerator = finalise(numerator.times(x2), wpr, 1); - t = sum.plus(divide(numerator, new Ctor(denominator), wpr, 1)); - - if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) { - sum = sum.times(2); - - // Reverse the argument reduction. Check that e is not 0 because, besides preventing an - // unnecessary calculation, -0 + 0 = +0 and to ensure correct rounding -0 needs to stay -0. - if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + '')); - sum = divide(sum, new Ctor(n), wpr, 1); - - // Is rm > 3 and the first 4 rounding digits 4999, or rm < 4 (or the summation has - // been repeated previously) and the first 4 rounding digits 9999? - // If so, restart the summation with a higher precision, otherwise - // e.g. with precision: 12, rounding: 1 - // ln(135520028.6126091714265381533) = 18.7246299999 when it should be 18.72463. - // `wpr - guard` is the index of first rounding digit. - if (sd == null) { - if (checkRoundingDigits(sum.d, wpr - guard, rm, rep)) { - Ctor.precision = wpr += guard; - t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1); - x2 = finalise(x.times(x), wpr, 1); - denominator = rep = 1; - } else { - return finalise(sum, Ctor.precision = pr, rm, external = true); - } - } else { - Ctor.precision = pr; - return sum; - } - } - - sum = t; - denominator += 2; - } - } - - - // ±Infinity, NaN. - function nonFiniteToString(x) { - // Unsigned. - return String(x.s * x.s / 0); - } - - - /* - * Parse the value of a new Decimal `x` from string `str`. - */ - function parseDecimal(x, str) { - var e, i, len; - - // Decimal point? - if ((e = str.indexOf('.')) > -1) str = str.replace('.', ''); - - // Exponential form? - if ((i = str.search(/e/i)) > 0) { - - // Determine exponent. - if (e < 0) e = i; - e += +str.slice(i + 1); - str = str.substring(0, i); - } else if (e < 0) { - - // Integer. - e = str.length; - } - - // Determine leading zeros. - for (i = 0; str.charCodeAt(i) === 48; i++); - - // Determine trailing zeros. - for (len = str.length; str.charCodeAt(len - 1) === 48; --len); - str = str.slice(i, len); - - if (str) { - len -= i; - x.e = e = e - i - 1; - x.d = []; - - // Transform base - - // e is the base 10 exponent. - // i is where to slice str to get the first word of the digits array. - i = (e + 1) % LOG_BASE; - if (e < 0) i += LOG_BASE; - - if (i < len) { - if (i) x.d.push(+str.slice(0, i)); - for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE)); - str = str.slice(i); - i = LOG_BASE - str.length; - } else { - i -= len; - } - - for (; i--;) str += '0'; - x.d.push(+str); - - if (external) { - - // Overflow? - if (x.e > x.constructor.maxE) { - - // Infinity. - x.d = null; - x.e = NaN; - - // Underflow? - } else if (x.e < x.constructor.minE) { - - // Zero. - x.e = 0; - x.d = [0]; - // x.constructor.underflow = true; - } // else x.constructor.underflow = false; - } - } else { - - // Zero. - x.e = 0; - x.d = [0]; - } - - return x; - } - - - /* - * Parse the value of a new Decimal `x` from a string `str`, which is not a decimal value. - */ - function parseOther(x, str) { - var base, Ctor, divisor, i, isFloat, len, p, xd, xe; - - if (str.indexOf('_') > -1) { - str = str.replace(/(\d)_(?=\d)/g, '$1'); - if (isDecimal.test(str)) return parseDecimal(x, str); - } else if (str === 'Infinity' || str === 'NaN') { - if (!+str) x.s = NaN; - x.e = NaN; - x.d = null; - return x; - } - - if (isHex.test(str)) { - base = 16; - str = str.toLowerCase(); - } else if (isBinary.test(str)) { - base = 2; - } else if (isOctal.test(str)) { - base = 8; - } else { - throw Error(invalidArgument + str); - } - - // Is there a binary exponent part? - i = str.search(/p/i); - - if (i > 0) { - p = +str.slice(i + 1); - str = str.substring(2, i); - } else { - str = str.slice(2); - } - - // Convert `str` as an integer then divide the result by `base` raised to a power such that the - // fraction part will be restored. - i = str.indexOf('.'); - isFloat = i >= 0; - Ctor = x.constructor; - - if (isFloat) { - str = str.replace('.', ''); - len = str.length; - i = len - i; - - // log[10](16) = 1.2041... , log[10](88) = 1.9444.... - divisor = intPow(Ctor, new Ctor(base), i, i * 2); - } - - xd = convertBase(str, base, BASE); - xe = xd.length - 1; - - // Remove trailing zeros. - for (i = xe; xd[i] === 0; --i) xd.pop(); - if (i < 0) return new Ctor(x.s * 0); - x.e = getBase10Exponent(xd, xe); - x.d = xd; - external = false; - - // At what precision to perform the division to ensure exact conversion? - // maxDecimalIntegerPartDigitCount = ceil(log[10](b) * otherBaseIntegerPartDigitCount) - // log[10](2) = 0.30103, log[10](8) = 0.90309, log[10](16) = 1.20412 - // E.g. ceil(1.2 * 3) = 4, so up to 4 decimal digits are needed to represent 3 hex int digits. - // maxDecimalFractionPartDigitCount = {Hex:4|Oct:3|Bin:1} * otherBaseFractionPartDigitCount - // Therefore using 4 * the number of digits of str will always be enough. - if (isFloat) x = divide(x, divisor, len * 4); - - // Multiply by the binary exponent part if present. - if (p) x = x.times(Math.abs(p) < 54 ? mathpow(2, p) : Decimal.pow(2, p)); - external = true; - - return x; - } - - - /* - * sin(x) = x - x^3/3! + x^5/5! - ... - * |x| < pi/2 - * - */ - function sine(Ctor, x) { - var k, - len = x.d.length; - - if (len < 3) { - return x.isZero() ? x : taylorSeries(Ctor, 2, x, x); - } - - // Argument reduction: sin(5x) = 16*sin^5(x) - 20*sin^3(x) + 5*sin(x) - // i.e. sin(x) = 16*sin^5(x/5) - 20*sin^3(x/5) + 5*sin(x/5) - // and sin(x) = sin(x/5)(5 + sin^2(x/5)(16sin^2(x/5) - 20)) - - // Estimate the optimum number of times to use the argument reduction. - k = 1.4 * Math.sqrt(len); - k = k > 16 ? 16 : k | 0; - - x = x.times(1 / tinyPow(5, k)); - x = taylorSeries(Ctor, 2, x, x); - - // Reverse argument reduction - var sin2_x, - d5 = new Ctor(5), - d16 = new Ctor(16), - d20 = new Ctor(20); - for (; k--;) { - sin2_x = x.times(x); - x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20)))); - } - - return x; - } - - - // Calculate Taylor series for `cos`, `cosh`, `sin` and `sinh`. - function taylorSeries(Ctor, n, x, y, isHyperbolic) { - var j, t, u, x2, - pr = Ctor.precision, - k = Math.ceil(pr / LOG_BASE); - - external = false; - x2 = x.times(x); - u = new Ctor(y); - - for (;;) { - t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1); - u = isHyperbolic ? y.plus(t) : y.minus(t); - y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1); - t = u.plus(y); - - if (t.d[k] !== void 0) { - for (j = k; t.d[j] === u.d[j] && j--;); - if (j == -1) break; - } - - j = u; - u = y; - y = t; - t = j; - } - - external = true; - t.d.length = k + 1; - - return t; - } - - - // Exponent e must be positive and non-zero. - function tinyPow(b, e) { - var n = b; - while (--e) n *= b; - return n; - } - - - // Return the absolute value of `x` reduced to less than or equal to half pi. - function toLessThanHalfPi(Ctor, x) { - var t, - isNeg = x.s < 0, - pi = getPi(Ctor, Ctor.precision, 1), - halfPi = pi.times(0.5); - - x = x.abs(); - - if (x.lte(halfPi)) { - quadrant = isNeg ? 4 : 1; - return x; - } - - t = x.divToInt(pi); - - if (t.isZero()) { - quadrant = isNeg ? 3 : 2; - } else { - x = x.minus(t.times(pi)); - - // 0 <= x < pi - if (x.lte(halfPi)) { - quadrant = isOdd(t) ? (isNeg ? 2 : 3) : (isNeg ? 4 : 1); - return x; - } - - quadrant = isOdd(t) ? (isNeg ? 1 : 4) : (isNeg ? 3 : 2); - } - - return x.minus(pi).abs(); - } - - - /* - * Return the value of Decimal `x` as a string in base `baseOut`. - * - * If the optional `sd` argument is present include a binary exponent suffix. - */ - function toStringBinary(x, baseOut, sd, rm) { - var base, e, i, k, len, roundUp, str, xd, y, - Ctor = x.constructor, - isExp = sd !== void 0; - - if (isExp) { - checkInt32(sd, 1, MAX_DIGITS); - if (rm === void 0) rm = Ctor.rounding; - else checkInt32(rm, 0, 8); - } else { - sd = Ctor.precision; - rm = Ctor.rounding; - } - - if (!x.isFinite()) { - str = nonFiniteToString(x); - } else { - str = finiteToString(x); - i = str.indexOf('.'); - - // Use exponential notation according to `toExpPos` and `toExpNeg`? No, but if required: - // maxBinaryExponent = floor((decimalExponent + 1) * log[2](10)) - // minBinaryExponent = floor(decimalExponent * log[2](10)) - // log[2](10) = 3.321928094887362347870319429489390175864 - - if (isExp) { - base = 2; - if (baseOut == 16) { - sd = sd * 4 - 3; - } else if (baseOut == 8) { - sd = sd * 3 - 2; - } - } else { - base = baseOut; - } - - // Convert the number as an integer then divide the result by its base raised to a power such - // that the fraction part will be restored. - - // Non-integer. - if (i >= 0) { - str = str.replace('.', ''); - y = new Ctor(1); - y.e = str.length - i; - y.d = convertBase(finiteToString(y), 10, base); - y.e = y.d.length; - } - - xd = convertBase(str, 10, base); - e = len = xd.length; - - // Remove trailing zeros. - for (; xd[--len] == 0;) xd.pop(); - - if (!xd[0]) { - str = isExp ? '0p+0' : '0'; - } else { - if (i < 0) { - e--; - } else { - x = new Ctor(x); - x.d = xd; - x.e = e; - x = divide(x, y, sd, rm, 0, base); - xd = x.d; - e = x.e; - roundUp = inexact; - } - - // The rounding digit, i.e. the digit after the digit that may be rounded up. - i = xd[sd]; - k = base / 2; - roundUp = roundUp || xd[sd + 1] !== void 0; - - roundUp = rm < 4 - ? (i !== void 0 || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2)) - : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 || - rm === (x.s < 0 ? 8 : 7)); - - xd.length = sd; - - if (roundUp) { - - // Rounding up may mean the previous digit has to be rounded up and so on. - for (; ++xd[--sd] > base - 1;) { - xd[sd] = 0; - if (!sd) { - ++e; - xd.unshift(1); - } - } - } - - // Determine trailing zeros. - for (len = xd.length; !xd[len - 1]; --len); - - // E.g. [4, 11, 15] becomes 4bf. - for (i = 0, str = ''; i < len; i++) str += NUMERALS.charAt(xd[i]); - - // Add binary exponent suffix? - if (isExp) { - if (len > 1) { - if (baseOut == 16 || baseOut == 8) { - i = baseOut == 16 ? 4 : 3; - for (--len; len % i; len++) str += '0'; - xd = convertBase(str, base, baseOut); - for (len = xd.length; !xd[len - 1]; --len); - - // xd[0] will always be be 1 - for (i = 1, str = '1.'; i < len; i++) str += NUMERALS.charAt(xd[i]); - } else { - str = str.charAt(0) + '.' + str.slice(1); - } - } - - str = str + (e < 0 ? 'p' : 'p+') + e; - } else if (e < 0) { - for (; ++e;) str = '0' + str; - str = '0.' + str; - } else { - if (++e > len) for (e -= len; e-- ;) str += '0'; - else if (e < len) str = str.slice(0, e) + '.' + str.slice(e); - } - } - - str = (baseOut == 16 ? '0x' : baseOut == 2 ? '0b' : baseOut == 8 ? '0o' : '') + str; - } - - return x.s < 0 ? '-' + str : str; - } - - - // Does not strip trailing zeros. - function truncate(arr, len) { - if (arr.length > len) { - arr.length = len; - return true; - } - } - - - // Decimal methods - - - /* - * abs - * acos - * acosh - * add - * asin - * asinh - * atan - * atanh - * atan2 - * cbrt - * ceil - * clamp - * clone - * config - * cos - * cosh - * div - * exp - * floor - * hypot - * ln - * log - * log2 - * log10 - * max - * min - * mod - * mul - * pow - * random - * round - * set - * sign - * sin - * sinh - * sqrt - * sub - * sum - * tan - * tanh - * trunc - */ - - - /* - * Return a new Decimal whose value is the absolute value of `x`. - * - * x {number|string|Decimal} - * - */ - function abs(x) { - return new this(x).abs(); - } - - - /* - * Return a new Decimal whose value is the arccosine in radians of `x`. - * - * x {number|string|Decimal} - * - */ - function acos(x) { - return new this(x).acos(); - } - - - /* - * Return a new Decimal whose value is the inverse of the hyperbolic cosine of `x`, rounded to - * `precision` significant digits using rounding mode `rounding`. - * - * x {number|string|Decimal} A value in radians. - * - */ - function acosh(x) { - return new this(x).acosh(); - } - - - /* - * Return a new Decimal whose value is the sum of `x` and `y`, rounded to `precision` significant - * digits using rounding mode `rounding`. - * - * x {number|string|Decimal} - * y {number|string|Decimal} - * - */ - function add(x, y) { - return new this(x).plus(y); - } - - - /* - * Return a new Decimal whose value is the arcsine in radians of `x`, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - * x {number|string|Decimal} - * - */ - function asin(x) { - return new this(x).asin(); - } - - - /* - * Return a new Decimal whose value is the inverse of the hyperbolic sine of `x`, rounded to - * `precision` significant digits using rounding mode `rounding`. - * - * x {number|string|Decimal} A value in radians. - * - */ - function asinh(x) { - return new this(x).asinh(); - } - - - /* - * Return a new Decimal whose value is the arctangent in radians of `x`, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - * x {number|string|Decimal} - * - */ - function atan(x) { - return new this(x).atan(); - } - - - /* - * Return a new Decimal whose value is the inverse of the hyperbolic tangent of `x`, rounded to - * `precision` significant digits using rounding mode `rounding`. - * - * x {number|string|Decimal} A value in radians. - * - */ - function atanh(x) { - return new this(x).atanh(); - } - - - /* - * Return a new Decimal whose value is the arctangent in radians of `y/x` in the range -pi to pi - * (inclusive), rounded to `precision` significant digits using rounding mode `rounding`. - * - * Domain: [-Infinity, Infinity] - * Range: [-pi, pi] - * - * y {number|string|Decimal} The y-coordinate. - * x {number|string|Decimal} The x-coordinate. - * - * atan2(±0, -0) = ±pi - * atan2(±0, +0) = ±0 - * atan2(±0, -x) = ±pi for x > 0 - * atan2(±0, x) = ±0 for x > 0 - * atan2(-y, ±0) = -pi/2 for y > 0 - * atan2(y, ±0) = pi/2 for y > 0 - * atan2(±y, -Infinity) = ±pi for finite y > 0 - * atan2(±y, +Infinity) = ±0 for finite y > 0 - * atan2(±Infinity, x) = ±pi/2 for finite x - * atan2(±Infinity, -Infinity) = ±3*pi/4 - * atan2(±Infinity, +Infinity) = ±pi/4 - * atan2(NaN, x) = NaN - * atan2(y, NaN) = NaN - * - */ - function atan2(y, x) { - y = new this(y); - x = new this(x); - var r, - pr = this.precision, - rm = this.rounding, - wpr = pr + 4; - - // Either NaN - if (!y.s || !x.s) { - r = new this(NaN); - - // Both ±Infinity - } else if (!y.d && !x.d) { - r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75); - r.s = y.s; - - // x is ±Infinity or y is ±0 - } else if (!x.d || y.isZero()) { - r = x.s < 0 ? getPi(this, pr, rm) : new this(0); - r.s = y.s; - - // y is ±Infinity or x is ±0 - } else if (!y.d || x.isZero()) { - r = getPi(this, wpr, 1).times(0.5); - r.s = y.s; - - // Both non-zero and finite - } else if (x.s < 0) { - this.precision = wpr; - this.rounding = 1; - r = this.atan(divide(y, x, wpr, 1)); - x = getPi(this, wpr, 1); - this.precision = pr; - this.rounding = rm; - r = y.s < 0 ? r.minus(x) : r.plus(x); - } else { - r = this.atan(divide(y, x, wpr, 1)); - } - - return r; - } - - - /* - * Return a new Decimal whose value is the cube root of `x`, rounded to `precision` significant - * digits using rounding mode `rounding`. - * - * x {number|string|Decimal} - * - */ - function cbrt(x) { - return new this(x).cbrt(); - } - - - /* - * Return a new Decimal whose value is `x` rounded to an integer using `ROUND_CEIL`. - * - * x {number|string|Decimal} - * - */ - function ceil(x) { - return finalise(x = new this(x), x.e + 1, 2); - } - - - /* - * Return a new Decimal whose value is `x` clamped to the range delineated by `min` and `max`. - * - * x {number|string|Decimal} - * min {number|string|Decimal} - * max {number|string|Decimal} - * - */ - function clamp(x, min, max) { - return new this(x).clamp(min, max); - } - - - /* - * Configure global settings for a Decimal constructor. - * - * `obj` is an object with one or more of the following properties, - * - * precision {number} - * rounding {number} - * toExpNeg {number} - * toExpPos {number} - * maxE {number} - * minE {number} - * modulo {number} - * crypto {boolean|number} - * defaults {true} - * - * E.g. Decimal.config({ precision: 20, rounding: 4 }) - * - */ - function config(obj) { - if (!obj || typeof obj !== 'object') throw Error(decimalError + 'Object expected'); - var i, p, v, - useDefaults = obj.defaults === true, - ps = [ - 'precision', 1, MAX_DIGITS, - 'rounding', 0, 8, - 'toExpNeg', -EXP_LIMIT, 0, - 'toExpPos', 0, EXP_LIMIT, - 'maxE', 0, EXP_LIMIT, - 'minE', -EXP_LIMIT, 0, - 'modulo', 0, 9 - ]; - - for (i = 0; i < ps.length; i += 3) { - if (p = ps[i], useDefaults) this[p] = DEFAULTS[p]; - if ((v = obj[p]) !== void 0) { - if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v; - else throw Error(invalidArgument + p + ': ' + v); - } - } - - if (p = 'crypto', useDefaults) this[p] = DEFAULTS[p]; - if ((v = obj[p]) !== void 0) { - if (v === true || v === false || v === 0 || v === 1) { - if (v) { - if (typeof crypto != 'undefined' && crypto && - (crypto.getRandomValues || crypto.randomBytes)) { - this[p] = true; - } else { - throw Error(cryptoUnavailable); - } - } else { - this[p] = false; - } - } else { - throw Error(invalidArgument + p + ': ' + v); - } - } - - return this; - } - - - /* - * Return a new Decimal whose value is the cosine of `x`, rounded to `precision` significant - * digits using rounding mode `rounding`. - * - * x {number|string|Decimal} A value in radians. - * - */ - function cos(x) { - return new this(x).cos(); - } - - - /* - * Return a new Decimal whose value is the hyperbolic cosine of `x`, rounded to precision - * significant digits using rounding mode `rounding`. - * - * x {number|string|Decimal} A value in radians. - * - */ - function cosh(x) { - return new this(x).cosh(); - } - - - /* - * Create and return a Decimal constructor with the same configuration properties as this Decimal - * constructor. - * - */ - function clone(obj) { - var i, p, ps; - - /* - * The Decimal constructor and exported function. - * Return a new Decimal instance. - * - * v {number|string|Decimal} A numeric value. - * - */ - function Decimal(v) { - var e, i, t, - x = this; - - // Decimal called without new. - if (!(x instanceof Decimal)) return new Decimal(v); - - // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor - // which points to Object. - x.constructor = Decimal; - - // Duplicate. - if (isDecimalInstance(v)) { - x.s = v.s; - - if (external) { - if (!v.d || v.e > Decimal.maxE) { - - // Infinity. - x.e = NaN; - x.d = null; - } else if (v.e < Decimal.minE) { - - // Zero. - x.e = 0; - x.d = [0]; - } else { - x.e = v.e; - x.d = v.d.slice(); - } - } else { - x.e = v.e; - x.d = v.d ? v.d.slice() : v.d; - } - - return; - } - - t = typeof v; - - if (t === 'number') { - if (v === 0) { - x.s = 1 / v < 0 ? -1 : 1; - x.e = 0; - x.d = [0]; - return; - } - - if (v < 0) { - v = -v; - x.s = -1; - } else { - x.s = 1; - } - - // Fast path for small integers. - if (v === ~~v && v < 1e7) { - for (e = 0, i = v; i >= 10; i /= 10) e++; - - if (external) { - if (e > Decimal.maxE) { - x.e = NaN; - x.d = null; - } else if (e < Decimal.minE) { - x.e = 0; - x.d = [0]; - } else { - x.e = e; - x.d = [v]; - } - } else { - x.e = e; - x.d = [v]; - } - - return; - - // Infinity, NaN. - } else if (v * 0 !== 0) { - if (!v) x.s = NaN; - x.e = NaN; - x.d = null; - return; - } - - return parseDecimal(x, v.toString()); - - } else if (t !== 'string') { - throw Error(invalidArgument + v); - } - - // Minus sign? - if ((i = v.charCodeAt(0)) === 45) { - v = v.slice(1); - x.s = -1; - } else { - // Plus sign? - if (i === 43) v = v.slice(1); - x.s = 1; - } - - return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v); - } - - Decimal.prototype = P; - - Decimal.ROUND_UP = 0; - Decimal.ROUND_DOWN = 1; - Decimal.ROUND_CEIL = 2; - Decimal.ROUND_FLOOR = 3; - Decimal.ROUND_HALF_UP = 4; - Decimal.ROUND_HALF_DOWN = 5; - Decimal.ROUND_HALF_EVEN = 6; - Decimal.ROUND_HALF_CEIL = 7; - Decimal.ROUND_HALF_FLOOR = 8; - Decimal.EUCLID = 9; - - Decimal.config = Decimal.set = config; - Decimal.clone = clone; - Decimal.isDecimal = isDecimalInstance; - - Decimal.abs = abs; - Decimal.acos = acos; - Decimal.acosh = acosh; // ES6 - Decimal.add = add; - Decimal.asin = asin; - Decimal.asinh = asinh; // ES6 - Decimal.atan = atan; - Decimal.atanh = atanh; // ES6 - Decimal.atan2 = atan2; - Decimal.cbrt = cbrt; // ES6 - Decimal.ceil = ceil; - Decimal.clamp = clamp; - Decimal.cos = cos; - Decimal.cosh = cosh; // ES6 - Decimal.div = div; - Decimal.exp = exp; - Decimal.floor = floor; - Decimal.hypot = hypot; // ES6 - Decimal.ln = ln; - Decimal.log = log; - Decimal.log10 = log10; // ES6 - Decimal.log2 = log2; // ES6 - Decimal.max = max; - Decimal.min = min; - Decimal.mod = mod; - Decimal.mul = mul; - Decimal.pow = pow; - Decimal.random = random; - Decimal.round = round; - Decimal.sign = sign; // ES6 - Decimal.sin = sin; - Decimal.sinh = sinh; // ES6 - Decimal.sqrt = sqrt; - Decimal.sub = sub; - Decimal.sum = sum; - Decimal.tan = tan; - Decimal.tanh = tanh; // ES6 - Decimal.trunc = trunc; // ES6 - - if (obj === void 0) obj = {}; - if (obj) { - if (obj.defaults !== true) { - ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'maxE', 'minE', 'modulo', 'crypto']; - for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p]; - } - } - - Decimal.config(obj); - - return Decimal; - } - - - /* - * Return a new Decimal whose value is `x` divided by `y`, rounded to `precision` significant - * digits using rounding mode `rounding`. - * - * x {number|string|Decimal} - * y {number|string|Decimal} - * - */ - function div(x, y) { - return new this(x).div(y); - } - - - /* - * Return a new Decimal whose value is the natural exponential of `x`, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - * x {number|string|Decimal} The power to which to raise the base of the natural log. - * - */ - function exp(x) { - return new this(x).exp(); - } - - - /* - * Return a new Decimal whose value is `x` round to an integer using `ROUND_FLOOR`. - * - * x {number|string|Decimal} - * - */ - function floor(x) { - return finalise(x = new this(x), x.e + 1, 3); - } - - - /* - * Return a new Decimal whose value is the square root of the sum of the squares of the arguments, - * rounded to `precision` significant digits using rounding mode `rounding`. - * - * hypot(a, b, ...) = sqrt(a^2 + b^2 + ...) - * - * arguments {number|string|Decimal} - * - */ - function hypot() { - var i, n, - t = new this(0); - - external = false; - - for (i = 0; i < arguments.length;) { - n = new this(arguments[i++]); - if (!n.d) { - if (n.s) { - external = true; - return new this(1 / 0); - } - t = n; - } else if (t.d) { - t = t.plus(n.times(n)); - } - } - - external = true; - - return t.sqrt(); - } - - - /* - * Return true if object is a Decimal instance (where Decimal is any Decimal constructor), - * otherwise return false. - * - */ - function isDecimalInstance(obj) { - return obj instanceof Decimal || obj && obj.toStringTag === tag || false; - } - - - /* - * Return a new Decimal whose value is the natural logarithm of `x`, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - * x {number|string|Decimal} - * - */ - function ln(x) { - return new this(x).ln(); - } - - - /* - * Return a new Decimal whose value is the log of `x` to the base `y`, or to base 10 if no base - * is specified, rounded to `precision` significant digits using rounding mode `rounding`. - * - * log[y](x) - * - * x {number|string|Decimal} The argument of the logarithm. - * y {number|string|Decimal} The base of the logarithm. - * - */ - function log(x, y) { - return new this(x).log(y); - } - - - /* - * Return a new Decimal whose value is the base 2 logarithm of `x`, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - * x {number|string|Decimal} - * - */ - function log2(x) { - return new this(x).log(2); - } - - - /* - * Return a new Decimal whose value is the base 10 logarithm of `x`, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - * x {number|string|Decimal} - * - */ - function log10(x) { - return new this(x).log(10); - } - - - /* - * Return a new Decimal whose value is the maximum of the arguments. - * - * arguments {number|string|Decimal} - * - */ - function max() { - return maxOrMin(this, arguments, 'lt'); - } - - - /* - * Return a new Decimal whose value is the minimum of the arguments. - * - * arguments {number|string|Decimal} - * - */ - function min() { - return maxOrMin(this, arguments, 'gt'); - } - - - /* - * Return a new Decimal whose value is `x` modulo `y`, rounded to `precision` significant digits - * using rounding mode `rounding`. - * - * x {number|string|Decimal} - * y {number|string|Decimal} - * - */ - function mod(x, y) { - return new this(x).mod(y); - } - - - /* - * Return a new Decimal whose value is `x` multiplied by `y`, rounded to `precision` significant - * digits using rounding mode `rounding`. - * - * x {number|string|Decimal} - * y {number|string|Decimal} - * - */ - function mul(x, y) { - return new this(x).mul(y); - } - - - /* - * Return a new Decimal whose value is `x` raised to the power `y`, rounded to precision - * significant digits using rounding mode `rounding`. - * - * x {number|string|Decimal} The base. - * y {number|string|Decimal} The exponent. - * - */ - function pow(x, y) { - return new this(x).pow(y); - } - - - /* - * Returns a new Decimal with a random value equal to or greater than 0 and less than 1, and with - * `sd`, or `Decimal.precision` if `sd` is omitted, significant digits (or less if trailing zeros - * are produced). - * - * [sd] {number} Significant digits. Integer, 0 to MAX_DIGITS inclusive. - * - */ - function random(sd) { - var d, e, k, n, - i = 0, - r = new this(1), - rd = []; - - if (sd === void 0) sd = this.precision; - else checkInt32(sd, 1, MAX_DIGITS); - - k = Math.ceil(sd / LOG_BASE); - - if (!this.crypto) { - for (; i < k;) rd[i++] = Math.random() * 1e7 | 0; - - // Browsers supporting crypto.getRandomValues. - } else if (crypto.getRandomValues) { - d = crypto.getRandomValues(new Uint32Array(k)); - - for (; i < k;) { - n = d[i]; - - // 0 <= n < 4294967296 - // Probability n >= 4.29e9, is 4967296 / 4294967296 = 0.00116 (1 in 865). - if (n >= 4.29e9) { - d[i] = crypto.getRandomValues(new Uint32Array(1))[0]; - } else { - - // 0 <= n <= 4289999999 - // 0 <= (n % 1e7) <= 9999999 - rd[i++] = n % 1e7; - } - } - - // Node.js supporting crypto.randomBytes. - } else if (crypto.randomBytes) { - - // buffer - d = crypto.randomBytes(k *= 4); - - for (; i < k;) { - - // 0 <= n < 2147483648 - n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 0x7f) << 24); - - // Probability n >= 2.14e9, is 7483648 / 2147483648 = 0.0035 (1 in 286). - if (n >= 2.14e9) { - crypto.randomBytes(4).copy(d, i); - } else { - - // 0 <= n <= 2139999999 - // 0 <= (n % 1e7) <= 9999999 - rd.push(n % 1e7); - i += 4; - } - } - - i = k / 4; - } else { - throw Error(cryptoUnavailable); - } - - k = rd[--i]; - sd %= LOG_BASE; - - // Convert trailing digits to zeros according to sd. - if (k && sd) { - n = mathpow(10, LOG_BASE - sd); - rd[i] = (k / n | 0) * n; - } - - // Remove trailing words which are zero. - for (; rd[i] === 0; i--) rd.pop(); - - // Zero? - if (i < 0) { - e = 0; - rd = [0]; - } else { - e = -1; - - // Remove leading words which are zero and adjust exponent accordingly. - for (; rd[0] === 0; e -= LOG_BASE) rd.shift(); - - // Count the digits of the first word of rd to determine leading zeros. - for (k = 1, n = rd[0]; n >= 10; n /= 10) k++; - - // Adjust the exponent for leading zeros of the first word of rd. - if (k < LOG_BASE) e -= LOG_BASE - k; - } - - r.e = e; - r.d = rd; - - return r; - } - - - /* - * Return a new Decimal whose value is `x` rounded to an integer using rounding mode `rounding`. - * - * To emulate `Math.round`, set rounding to 7 (ROUND_HALF_CEIL). - * - * x {number|string|Decimal} - * - */ - function round(x) { - return finalise(x = new this(x), x.e + 1, this.rounding); - } - - - /* - * Return - * 1 if x > 0, - * -1 if x < 0, - * 0 if x is 0, - * -0 if x is -0, - * NaN otherwise - * - * x {number|string|Decimal} - * - */ - function sign(x) { - x = new this(x); - return x.d ? (x.d[0] ? x.s : 0 * x.s) : x.s || NaN; - } - - - /* - * Return a new Decimal whose value is the sine of `x`, rounded to `precision` significant digits - * using rounding mode `rounding`. - * - * x {number|string|Decimal} A value in radians. - * - */ - function sin(x) { - return new this(x).sin(); - } - - - /* - * Return a new Decimal whose value is the hyperbolic sine of `x`, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - * x {number|string|Decimal} A value in radians. - * - */ - function sinh(x) { - return new this(x).sinh(); - } - - - /* - * Return a new Decimal whose value is the square root of `x`, rounded to `precision` significant - * digits using rounding mode `rounding`. - * - * x {number|string|Decimal} - * - */ - function sqrt(x) { - return new this(x).sqrt(); - } - - - /* - * Return a new Decimal whose value is `x` minus `y`, rounded to `precision` significant digits - * using rounding mode `rounding`. - * - * x {number|string|Decimal} - * y {number|string|Decimal} - * - */ - function sub(x, y) { - return new this(x).sub(y); - } - - - /* - * Return a new Decimal whose value is the sum of the arguments, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - * Only the result is rounded, not the intermediate calculations. - * - * arguments {number|string|Decimal} - * - */ - function sum() { - var i = 0, - args = arguments, - x = new this(args[i]); - - external = false; - for (; x.s && ++i < args.length;) x = x.plus(args[i]); - external = true; - - return finalise(x, this.precision, this.rounding); - } - - - /* - * Return a new Decimal whose value is the tangent of `x`, rounded to `precision` significant - * digits using rounding mode `rounding`. - * - * x {number|string|Decimal} A value in radians. - * - */ - function tan(x) { - return new this(x).tan(); - } - - - /* - * Return a new Decimal whose value is the hyperbolic tangent of `x`, rounded to `precision` - * significant digits using rounding mode `rounding`. - * - * x {number|string|Decimal} A value in radians. - * - */ - function tanh(x) { - return new this(x).tanh(); - } - - - /* - * Return a new Decimal whose value is `x` truncated to an integer. - * - * x {number|string|Decimal} - * - */ - function trunc(x) { - return finalise(x = new this(x), x.e + 1, 1); - } - - - // Create and configure initial Decimal constructor. - Decimal = clone(DEFAULTS); - Decimal.prototype.constructor = Decimal; - Decimal['default'] = Decimal.Decimal = Decimal; - - // Create the internal constants from their string values. - LN10 = new Decimal(LN10); - PI = new Decimal(PI); - - - // Export. - - - // AMD. - if ( module.exports) { - if (typeof Symbol == 'function' && typeof Symbol.iterator == 'symbol') { - P[Symbol['for']('nodejs.util.inspect.custom')] = P.toString; - P[Symbol.toStringTag] = 'Decimal'; - } - - module.exports = Decimal; - - // Browser. - } else { - if (!globalScope) { - globalScope = typeof self != 'undefined' && self && self.self == self ? self : window; - } - - noConflict = globalScope.Decimal; - Decimal.noConflict = function () { - globalScope.Decimal = noConflict; - return Decimal; - }; - - globalScope.Decimal = Decimal; - } -})(commonjsGlobal); -}); - -var lodash = createCommonjsModule(function (module, exports) { + // These values must be integers within the stated ranges (inclusive). + // Most of these values can be changed at run-time using the `Decimal.config` method. + + // The maximum number of significant digits of the result of a calculation or base conversion. + // E.g. `Decimal.config({ precision: 20 });` + precision: 20, // 1 to MAX_DIGITS + + // The rounding mode used when rounding to `precision`. + // + // ROUND_UP 0 Away from zero. + // ROUND_DOWN 1 Towards zero. + // ROUND_CEIL 2 Towards +Infinity. + // ROUND_FLOOR 3 Towards -Infinity. + // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up. + // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down. + // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour. + // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity. + // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity. + // + // E.g. + // `Decimal.rounding = 4;` + // `Decimal.rounding = Decimal.ROUND_HALF_UP;` + rounding: 4, // 0 to 8 + + // The modulo mode used when calculating the modulus: a mod n. + // The quotient (q = a / n) is calculated according to the corresponding rounding mode. + // The remainder (r) is calculated as: r = a - n * q. + // + // UP 0 The remainder is positive if the dividend is negative, else is negative. + // DOWN 1 The remainder has the same sign as the dividend (JavaScript %). + // FLOOR 3 The remainder has the same sign as the divisor (Python %). + // HALF_EVEN 6 The IEEE 754 remainder function. + // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). Always positive. + // + // Truncated division (1), floored division (3), the IEEE 754 remainder (6), and Euclidian + // division (9) are commonly used for the modulus operation. The other rounding modes can also + // be used, but they may not give useful results. + modulo: 1, // 0 to 9 + + // The exponent value at and beneath which `toString` returns exponential notation. + // JavaScript numbers: -7 + toExpNeg: -7, // 0 to -EXP_LIMIT + + // The exponent value at and above which `toString` returns exponential notation. + // JavaScript numbers: 21 + toExpPos: 21, // 0 to EXP_LIMIT + + // The minimum exponent value, beneath which underflow to zero occurs. + // JavaScript numbers: -324 (5e-324) + minE: -EXP_LIMIT, // -1 to -EXP_LIMIT + + // The maximum exponent value, above which overflow to Infinity occurs. + // JavaScript numbers: 308 (1.7976931348623157e+308) + maxE: EXP_LIMIT, // 1 to EXP_LIMIT + + // Whether to use cryptographically-secure random number generation, if available. + crypto: false // true/false + }, + + + // ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- // + + + Decimal, inexact, noConflict, quadrant, + external = true, + + decimalError = '[DecimalError] ', + invalidArgument = decimalError + 'Invalid argument: ', + precisionLimitExceeded = decimalError + 'Precision limit exceeded', + cryptoUnavailable = decimalError + 'crypto unavailable', + tag = '[object Decimal]', + + mathfloor = Math.floor, + mathpow = Math.pow, + + isBinary = /^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i, + isHex = /^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i, + isOctal = /^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i, + isDecimal = /^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i, + + BASE = 1e7, + LOG_BASE = 7, + MAX_SAFE_INTEGER = 9007199254740991, + + LN10_PRECISION = LN10.length - 1, + PI_PRECISION = PI.length - 1, + + // Decimal.prototype object + P = { toStringTag: tag }; + + + // Decimal prototype methods + + + /* + * absoluteValue abs + * ceil + * clampedTo clamp + * comparedTo cmp + * cosine cos + * cubeRoot cbrt + * decimalPlaces dp + * dividedBy div + * dividedToIntegerBy divToInt + * equals eq + * floor + * greaterThan gt + * greaterThanOrEqualTo gte + * hyperbolicCosine cosh + * hyperbolicSine sinh + * hyperbolicTangent tanh + * inverseCosine acos + * inverseHyperbolicCosine acosh + * inverseHyperbolicSine asinh + * inverseHyperbolicTangent atanh + * inverseSine asin + * inverseTangent atan + * isFinite + * isInteger isInt + * isNaN + * isNegative isNeg + * isPositive isPos + * isZero + * lessThan lt + * lessThanOrEqualTo lte + * logarithm log + * [maximum] [max] + * [minimum] [min] + * minus sub + * modulo mod + * naturalExponential exp + * naturalLogarithm ln + * negated neg + * plus add + * precision sd + * round + * sine sin + * squareRoot sqrt + * tangent tan + * times mul + * toBinary + * toDecimalPlaces toDP + * toExponential + * toFixed + * toFraction + * toHexadecimal toHex + * toNearest + * toNumber + * toOctal + * toPower pow + * toPrecision + * toSignificantDigits toSD + * toString + * truncated trunc + * valueOf toJSON + */ + + + /* + * Return a new Decimal whose value is the absolute value of this Decimal. + * + */ + P.absoluteValue = P.abs = function () { + var x = new this.constructor(this); + if (x.s < 0) x.s = 1; + return finalise(x); + }; + + + /* + * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the + * direction of positive Infinity. + * + */ + P.ceil = function () { + return finalise(new this.constructor(this), this.e + 1, 2); + }; + + + /* + * Return a new Decimal whose value is the value of this Decimal clamped to the range + * delineated by `min` and `max`. + * + * min {number|string|Decimal} + * max {number|string|Decimal} + * + */ + P.clampedTo = P.clamp = function (min, max) { + var k, + x = this, + Ctor = x.constructor; + min = new Ctor(min); + max = new Ctor(max); + if (!min.s || !max.s) return new Ctor(NaN); + if (min.gt(max)) throw Error(invalidArgument + max); + k = x.cmp(min); + return k < 0 ? min : x.cmp(max) > 0 ? max : new Ctor(x); + }; + + + /* + * Return + * 1 if the value of this Decimal is greater than the value of `y`, + * -1 if the value of this Decimal is less than the value of `y`, + * 0 if they have the same value, + * NaN if the value of either Decimal is NaN. + * + */ + P.comparedTo = P.cmp = function (y) { + var i, j, xdL, ydL, + x = this, + xd = x.d, + yd = (y = new x.constructor(y)).d, + xs = x.s, + ys = y.s; + + // Either NaN or ±Infinity? + if (!xd || !yd) { + return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1; + } + + // Either zero? + if (!xd[0] || !yd[0]) return xd[0] ? xs : yd[0] ? -ys : 0; + + // Signs differ? + if (xs !== ys) return xs; + + // Compare exponents. + if (x.e !== y.e) return x.e > y.e ^ xs < 0 ? 1 : -1; + + xdL = xd.length; + ydL = yd.length; + + // Compare digit by digit. + for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) { + if (xd[i] !== yd[i]) return xd[i] > yd[i] ^ xs < 0 ? 1 : -1; + } + + // Compare lengths. + return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1; + }; + + + /* + * Return a new Decimal whose value is the cosine of the value in radians of this Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [-1, 1] + * + * cos(0) = 1 + * cos(-0) = 1 + * cos(Infinity) = NaN + * cos(-Infinity) = NaN + * cos(NaN) = NaN + * + */ + P.cosine = P.cos = function () { + var pr, rm, + x = this, + Ctor = x.constructor; + + if (!x.d) return new Ctor(NaN); + + // cos(0) = cos(-0) = 1 + if (!x.d[0]) return new Ctor(1); + + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE; + Ctor.rounding = 1; + + x = cosine(Ctor, toLessThanHalfPi(Ctor, x)); + + Ctor.precision = pr; + Ctor.rounding = rm; + + return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true); + }; + + + /* + * + * Return a new Decimal whose value is the cube root of the value of this Decimal, rounded to + * `precision` significant digits using rounding mode `rounding`. + * + * cbrt(0) = 0 + * cbrt(-0) = -0 + * cbrt(1) = 1 + * cbrt(-1) = -1 + * cbrt(N) = N + * cbrt(-I) = -I + * cbrt(I) = I + * + * Math.cbrt(x) = (x < 0 ? -Math.pow(-x, 1/3) : Math.pow(x, 1/3)) + * + */ + P.cubeRoot = P.cbrt = function () { + var e, m, n, r, rep, s, sd, t, t3, t3plusx, + x = this, + Ctor = x.constructor; + + if (!x.isFinite() || x.isZero()) return new Ctor(x); + external = false; + + // Initial estimate. + s = x.s * mathpow(x.s * x, 1 / 3); + + // Math.cbrt underflow/overflow? + // Pass x to Math.pow as integer, then adjust the exponent of the result. + if (!s || Math.abs(s) == 1 / 0) { + n = digitsToString(x.d); + e = x.e; + + // Adjust n exponent so it is a multiple of 3 away from x exponent. + if (s = (e - n.length + 1) % 3) n += (s == 1 || s == -2 ? '0' : '00'); + s = mathpow(n, 1 / 3); + + // Rarely, e may be one less than the result exponent value. + e = mathfloor((e + 1) / 3) - (e % 3 == (e < 0 ? -1 : 2)); + + if (s == 1 / 0) { + n = '5e' + e; + } else { + n = s.toExponential(); + n = n.slice(0, n.indexOf('e') + 1) + e; + } + + r = new Ctor(n); + r.s = x.s; + } else { + r = new Ctor(s.toString()); + } + + sd = (e = Ctor.precision) + 3; + + // Halley's method. + // TODO? Compare Newton's method. + for (;;) { + t = r; + t3 = t.times(t).times(t); + t3plusx = t3.plus(x); + r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1); + + // TODO? Replace with for-loop and checkRoundingDigits. + if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) { + n = n.slice(sd - 3, sd + 1); + + // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or 4999 + // , i.e. approaching a rounding boundary, continue the iteration. + if (n == '9999' || !rep && n == '4999') { + + // On the first iteration only, check to see if rounding up gives the exact result as the + // nines may infinitely repeat. + if (!rep) { + finalise(t, e + 1, 0); + + if (t.times(t).times(t).eq(x)) { + r = t; + break; + } + } + + sd += 4; + rep = 1; + } else { + + // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result. + // If not, then there are further digits and m will be truthy. + if (!+n || !+n.slice(1) && n.charAt(0) == '5') { + + // Truncate to the first rounding digit. + finalise(r, e + 1, 1); + m = !r.times(r).times(r).eq(x); + } + + break; + } + } + } + + external = true; + + return finalise(r, e, Ctor.rounding, m); + }; + + + /* + * Return the number of decimal places of the value of this Decimal. + * + */ + P.decimalPlaces = P.dp = function () { + var w, + d = this.d, + n = NaN; + + if (d) { + w = d.length - 1; + n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE; + + // Subtract the number of trailing zeros of the last word. + w = d[w]; + if (w) for (; w % 10 == 0; w /= 10) n--; + if (n < 0) n = 0; + } + + return n; + }; + + + /* + * n / 0 = I + * n / N = N + * n / I = 0 + * 0 / n = 0 + * 0 / 0 = N + * 0 / N = N + * 0 / I = 0 + * N / n = N + * N / 0 = N + * N / N = N + * N / I = N + * I / n = I + * I / 0 = I + * I / N = N + * I / I = N + * + * Return a new Decimal whose value is the value of this Decimal divided by `y`, rounded to + * `precision` significant digits using rounding mode `rounding`. + * + */ + P.dividedBy = P.div = function (y) { + return divide(this, new this.constructor(y)); + }; + + + /* + * Return a new Decimal whose value is the integer part of dividing the value of this Decimal + * by the value of `y`, rounded to `precision` significant digits using rounding mode `rounding`. + * + */ + P.dividedToIntegerBy = P.divToInt = function (y) { + var x = this, + Ctor = x.constructor; + return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding); + }; + + + /* + * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false. + * + */ + P.equals = P.eq = function (y) { + return this.cmp(y) === 0; + }; + + + /* + * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the + * direction of negative Infinity. + * + */ + P.floor = function () { + return finalise(new this.constructor(this), this.e + 1, 3); + }; + + + /* + * Return true if the value of this Decimal is greater than the value of `y`, otherwise return + * false. + * + */ + P.greaterThan = P.gt = function (y) { + return this.cmp(y) > 0; + }; + + + /* + * Return true if the value of this Decimal is greater than or equal to the value of `y`, + * otherwise return false. + * + */ + P.greaterThanOrEqualTo = P.gte = function (y) { + var k = this.cmp(y); + return k == 1 || k === 0; + }; + + + /* + * Return a new Decimal whose value is the hyperbolic cosine of the value in radians of this + * Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [1, Infinity] + * + * cosh(x) = 1 + x^2/2! + x^4/4! + x^6/6! + ... + * + * cosh(0) = 1 + * cosh(-0) = 1 + * cosh(Infinity) = Infinity + * cosh(-Infinity) = Infinity + * cosh(NaN) = NaN + * + * x time taken (ms) result + * 1000 9 9.8503555700852349694e+433 + * 10000 25 4.4034091128314607936e+4342 + * 100000 171 1.4033316802130615897e+43429 + * 1000000 3817 1.5166076984010437725e+434294 + * 10000000 abandoned after 2 minute wait + * + * TODO? Compare performance of cosh(x) = 0.5 * (exp(x) + exp(-x)) + * + */ + P.hyperbolicCosine = P.cosh = function () { + var k, n, pr, rm, len, + x = this, + Ctor = x.constructor, + one = new Ctor(1); + + if (!x.isFinite()) return new Ctor(x.s ? 1 / 0 : NaN); + if (x.isZero()) return one; + + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + Math.max(x.e, x.sd()) + 4; + Ctor.rounding = 1; + len = x.d.length; + + // Argument reduction: cos(4x) = 1 - 8cos^2(x) + 8cos^4(x) + 1 + // i.e. cos(x) = 1 - cos^2(x/4)(8 - 8cos^2(x/4)) + + // Estimate the optimum number of times to use the argument reduction. + // TODO? Estimation reused from cosine() and may not be optimal here. + if (len < 32) { + k = Math.ceil(len / 3); + n = (1 / tinyPow(4, k)).toString(); + } else { + k = 16; + n = '2.3283064365386962890625e-10'; + } + + x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true); + + // Reverse argument reduction + var cosh2_x, + i = k, + d8 = new Ctor(8); + for (; i--;) { + cosh2_x = x.times(x); + x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8)))); + } + + return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true); + }; + + + /* + * Return a new Decimal whose value is the hyperbolic sine of the value in radians of this + * Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [-Infinity, Infinity] + * + * sinh(x) = x + x^3/3! + x^5/5! + x^7/7! + ... + * + * sinh(0) = 0 + * sinh(-0) = -0 + * sinh(Infinity) = Infinity + * sinh(-Infinity) = -Infinity + * sinh(NaN) = NaN + * + * x time taken (ms) + * 10 2 ms + * 100 5 ms + * 1000 14 ms + * 10000 82 ms + * 100000 886 ms 1.4033316802130615897e+43429 + * 200000 2613 ms + * 300000 5407 ms + * 400000 8824 ms + * 500000 13026 ms 8.7080643612718084129e+217146 + * 1000000 48543 ms + * + * TODO? Compare performance of sinh(x) = 0.5 * (exp(x) - exp(-x)) + * + */ + P.hyperbolicSine = P.sinh = function () { + var k, pr, rm, len, + x = this, + Ctor = x.constructor; + + if (!x.isFinite() || x.isZero()) return new Ctor(x); + + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + Math.max(x.e, x.sd()) + 4; + Ctor.rounding = 1; + len = x.d.length; + + if (len < 3) { + x = taylorSeries(Ctor, 2, x, x, true); + } else { + + // Alternative argument reduction: sinh(3x) = sinh(x)(3 + 4sinh^2(x)) + // i.e. sinh(x) = sinh(x/3)(3 + 4sinh^2(x/3)) + // 3 multiplications and 1 addition + + // Argument reduction: sinh(5x) = sinh(x)(5 + sinh^2(x)(20 + 16sinh^2(x))) + // i.e. sinh(x) = sinh(x/5)(5 + sinh^2(x/5)(20 + 16sinh^2(x/5))) + // 4 multiplications and 2 additions + + // Estimate the optimum number of times to use the argument reduction. + k = 1.4 * Math.sqrt(len); + k = k > 16 ? 16 : k | 0; + + x = x.times(1 / tinyPow(5, k)); + x = taylorSeries(Ctor, 2, x, x, true); + + // Reverse argument reduction + var sinh2_x, + d5 = new Ctor(5), + d16 = new Ctor(16), + d20 = new Ctor(20); + for (; k--;) { + sinh2_x = x.times(x); + x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20)))); + } + } + + Ctor.precision = pr; + Ctor.rounding = rm; + + return finalise(x, pr, rm, true); + }; + + + /* + * Return a new Decimal whose value is the hyperbolic tangent of the value in radians of this + * Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [-1, 1] + * + * tanh(x) = sinh(x) / cosh(x) + * + * tanh(0) = 0 + * tanh(-0) = -0 + * tanh(Infinity) = 1 + * tanh(-Infinity) = -1 + * tanh(NaN) = NaN + * + */ + P.hyperbolicTangent = P.tanh = function () { + var pr, rm, + x = this, + Ctor = x.constructor; + + if (!x.isFinite()) return new Ctor(x.s); + if (x.isZero()) return new Ctor(x); + + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + 7; + Ctor.rounding = 1; + + return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm); + }; + + + /* + * Return a new Decimal whose value is the arccosine (inverse cosine) in radians of the value of + * this Decimal. + * + * Domain: [-1, 1] + * Range: [0, pi] + * + * acos(x) = pi/2 - asin(x) + * + * acos(0) = pi/2 + * acos(-0) = pi/2 + * acos(1) = 0 + * acos(-1) = pi + * acos(1/2) = pi/3 + * acos(-1/2) = 2*pi/3 + * acos(|x| > 1) = NaN + * acos(NaN) = NaN + * + */ + P.inverseCosine = P.acos = function () { + var halfPi, + x = this, + Ctor = x.constructor, + k = x.abs().cmp(1), + pr = Ctor.precision, + rm = Ctor.rounding; + + if (k !== -1) { + return k === 0 + // |x| is 1 + ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0) + // |x| > 1 or x is NaN + : new Ctor(NaN); + } + + if (x.isZero()) return getPi(Ctor, pr + 4, rm).times(0.5); + + // TODO? Special case acos(0.5) = pi/3 and acos(-0.5) = 2*pi/3 + + Ctor.precision = pr + 6; + Ctor.rounding = 1; + + x = x.asin(); + halfPi = getPi(Ctor, pr + 4, rm).times(0.5); + + Ctor.precision = pr; + Ctor.rounding = rm; + + return halfPi.minus(x); + }; + + + /* + * Return a new Decimal whose value is the inverse of the hyperbolic cosine in radians of the + * value of this Decimal. + * + * Domain: [1, Infinity] + * Range: [0, Infinity] + * + * acosh(x) = ln(x + sqrt(x^2 - 1)) + * + * acosh(x < 1) = NaN + * acosh(NaN) = NaN + * acosh(Infinity) = Infinity + * acosh(-Infinity) = NaN + * acosh(0) = NaN + * acosh(-0) = NaN + * acosh(1) = 0 + * acosh(-1) = NaN + * + */ + P.inverseHyperbolicCosine = P.acosh = function () { + var pr, rm, + x = this, + Ctor = x.constructor; + + if (x.lte(1)) return new Ctor(x.eq(1) ? 0 : NaN); + if (!x.isFinite()) return new Ctor(x); + + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4; + Ctor.rounding = 1; + external = false; + + x = x.times(x).minus(1).sqrt().plus(x); + + external = true; + Ctor.precision = pr; + Ctor.rounding = rm; + + return x.ln(); + }; + + + /* + * Return a new Decimal whose value is the inverse of the hyperbolic sine in radians of the value + * of this Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [-Infinity, Infinity] + * + * asinh(x) = ln(x + sqrt(x^2 + 1)) + * + * asinh(NaN) = NaN + * asinh(Infinity) = Infinity + * asinh(-Infinity) = -Infinity + * asinh(0) = 0 + * asinh(-0) = -0 + * + */ + P.inverseHyperbolicSine = P.asinh = function () { + var pr, rm, + x = this, + Ctor = x.constructor; + + if (!x.isFinite() || x.isZero()) return new Ctor(x); + + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6; + Ctor.rounding = 1; + external = false; + + x = x.times(x).plus(1).sqrt().plus(x); + + external = true; + Ctor.precision = pr; + Ctor.rounding = rm; + + return x.ln(); + }; + + + /* + * Return a new Decimal whose value is the inverse of the hyperbolic tangent in radians of the + * value of this Decimal. + * + * Domain: [-1, 1] + * Range: [-Infinity, Infinity] + * + * atanh(x) = 0.5 * ln((1 + x) / (1 - x)) + * + * atanh(|x| > 1) = NaN + * atanh(NaN) = NaN + * atanh(Infinity) = NaN + * atanh(-Infinity) = NaN + * atanh(0) = 0 + * atanh(-0) = -0 + * atanh(1) = Infinity + * atanh(-1) = -Infinity + * + */ + P.inverseHyperbolicTangent = P.atanh = function () { + var pr, rm, wpr, xsd, + x = this, + Ctor = x.constructor; + + if (!x.isFinite()) return new Ctor(NaN); + if (x.e >= 0) return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN); + + pr = Ctor.precision; + rm = Ctor.rounding; + xsd = x.sd(); + + if (Math.max(xsd, pr) < 2 * -x.e - 1) return finalise(new Ctor(x), pr, rm, true); + + Ctor.precision = wpr = xsd - x.e; + + x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1); + + Ctor.precision = pr + 4; + Ctor.rounding = 1; + + x = x.ln(); + + Ctor.precision = pr; + Ctor.rounding = rm; + + return x.times(0.5); + }; + + + /* + * Return a new Decimal whose value is the arcsine (inverse sine) in radians of the value of this + * Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [-pi/2, pi/2] + * + * asin(x) = 2*atan(x/(1 + sqrt(1 - x^2))) + * + * asin(0) = 0 + * asin(-0) = -0 + * asin(1/2) = pi/6 + * asin(-1/2) = -pi/6 + * asin(1) = pi/2 + * asin(-1) = -pi/2 + * asin(|x| > 1) = NaN + * asin(NaN) = NaN + * + * TODO? Compare performance of Taylor series. + * + */ + P.inverseSine = P.asin = function () { + var halfPi, k, + pr, rm, + x = this, + Ctor = x.constructor; + + if (x.isZero()) return new Ctor(x); + + k = x.abs().cmp(1); + pr = Ctor.precision; + rm = Ctor.rounding; + + if (k !== -1) { + + // |x| is 1 + if (k === 0) { + halfPi = getPi(Ctor, pr + 4, rm).times(0.5); + halfPi.s = x.s; + return halfPi; + } + + // |x| > 1 or x is NaN + return new Ctor(NaN); + } + + // TODO? Special case asin(1/2) = pi/6 and asin(-1/2) = -pi/6 + + Ctor.precision = pr + 6; + Ctor.rounding = 1; + + x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan(); + + Ctor.precision = pr; + Ctor.rounding = rm; + + return x.times(2); + }; + + + /* + * Return a new Decimal whose value is the arctangent (inverse tangent) in radians of the value + * of this Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [-pi/2, pi/2] + * + * atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ... + * + * atan(0) = 0 + * atan(-0) = -0 + * atan(1) = pi/4 + * atan(-1) = -pi/4 + * atan(Infinity) = pi/2 + * atan(-Infinity) = -pi/2 + * atan(NaN) = NaN + * + */ + P.inverseTangent = P.atan = function () { + var i, j, k, n, px, t, r, wpr, x2, + x = this, + Ctor = x.constructor, + pr = Ctor.precision, + rm = Ctor.rounding; + + if (!x.isFinite()) { + if (!x.s) return new Ctor(NaN); + if (pr + 4 <= PI_PRECISION) { + r = getPi(Ctor, pr + 4, rm).times(0.5); + r.s = x.s; + return r; + } + } else if (x.isZero()) { + return new Ctor(x); + } else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) { + r = getPi(Ctor, pr + 4, rm).times(0.25); + r.s = x.s; + return r; + } + + Ctor.precision = wpr = pr + 10; + Ctor.rounding = 1; + + // TODO? if (x >= 1 && pr <= PI_PRECISION) atan(x) = halfPi * x.s - atan(1 / x); + + // Argument reduction + // Ensure |x| < 0.42 + // atan(x) = 2 * atan(x / (1 + sqrt(1 + x^2))) + + k = Math.min(28, wpr / LOG_BASE + 2 | 0); + + for (i = k; i; --i) x = x.div(x.times(x).plus(1).sqrt().plus(1)); + + external = false; + + j = Math.ceil(wpr / LOG_BASE); + n = 1; + x2 = x.times(x); + r = new Ctor(x); + px = x; + + // atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ... + for (; i !== -1;) { + px = px.times(x2); + t = r.minus(px.div(n += 2)); + + px = px.times(x2); + r = t.plus(px.div(n += 2)); + + if (r.d[j] !== void 0) for (i = j; r.d[i] === t.d[i] && i--;); + } + + if (k) r = r.times(2 << (k - 1)); + + external = true; + + return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true); + }; + + + /* + * Return true if the value of this Decimal is a finite number, otherwise return false. + * + */ + P.isFinite = function () { + return !!this.d; + }; + + + /* + * Return true if the value of this Decimal is an integer, otherwise return false. + * + */ + P.isInteger = P.isInt = function () { + return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2; + }; + + + /* + * Return true if the value of this Decimal is NaN, otherwise return false. + * + */ + P.isNaN = function () { + return !this.s; + }; + + + /* + * Return true if the value of this Decimal is negative, otherwise return false. + * + */ + P.isNegative = P.isNeg = function () { + return this.s < 0; + }; + + + /* + * Return true if the value of this Decimal is positive, otherwise return false. + * + */ + P.isPositive = P.isPos = function () { + return this.s > 0; + }; + + + /* + * Return true if the value of this Decimal is 0 or -0, otherwise return false. + * + */ + P.isZero = function () { + return !!this.d && this.d[0] === 0; + }; + + + /* + * Return true if the value of this Decimal is less than `y`, otherwise return false. + * + */ + P.lessThan = P.lt = function (y) { + return this.cmp(y) < 0; + }; + + + /* + * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false. + * + */ + P.lessThanOrEqualTo = P.lte = function (y) { + return this.cmp(y) < 1; + }; + + + /* + * Return the logarithm of the value of this Decimal to the specified base, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * If no base is specified, return log[10](arg). + * + * log[base](arg) = ln(arg) / ln(base) + * + * The result will always be correctly rounded if the base of the log is 10, and 'almost always' + * otherwise: + * + * Depending on the rounding mode, the result may be incorrectly rounded if the first fifteen + * rounding digits are [49]99999999999999 or [50]00000000000000. In that case, the maximum error + * between the result and the correctly rounded result will be one ulp (unit in the last place). + * + * log[-b](a) = NaN + * log[0](a) = NaN + * log[1](a) = NaN + * log[NaN](a) = NaN + * log[Infinity](a) = NaN + * log[b](0) = -Infinity + * log[b](-0) = -Infinity + * log[b](-a) = NaN + * log[b](1) = 0 + * log[b](Infinity) = Infinity + * log[b](NaN) = NaN + * + * [base] {number|string|Decimal} The base of the logarithm. + * + */ + P.logarithm = P.log = function (base) { + var isBase10, d, denominator, k, inf, num, sd, r, + arg = this, + Ctor = arg.constructor, + pr = Ctor.precision, + rm = Ctor.rounding, + guard = 5; + + // Default base is 10. + if (base == null) { + base = new Ctor(10); + isBase10 = true; + } else { + base = new Ctor(base); + d = base.d; + + // Return NaN if base is negative, or non-finite, or is 0 or 1. + if (base.s < 0 || !d || !d[0] || base.eq(1)) return new Ctor(NaN); + + isBase10 = base.eq(10); + } + + d = arg.d; + + // Is arg negative, non-finite, 0 or 1? + if (arg.s < 0 || !d || !d[0] || arg.eq(1)) { + return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0); + } + + // The result will have a non-terminating decimal expansion if base is 10 and arg is not an + // integer power of 10. + if (isBase10) { + if (d.length > 1) { + inf = true; + } else { + for (k = d[0]; k % 10 === 0;) k /= 10; + inf = k !== 1; + } + } + + external = false; + sd = pr + guard; + num = naturalLogarithm(arg, sd); + denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd); + + // The result will have 5 rounding digits. + r = divide(num, denominator, sd, 1); + + // If at a rounding boundary, i.e. the result's rounding digits are [49]9999 or [50]0000, + // calculate 10 further digits. + // + // If the result is known to have an infinite decimal expansion, repeat this until it is clear + // that the result is above or below the boundary. Otherwise, if after calculating the 10 + // further digits, the last 14 are nines, round up and assume the result is exact. + // Also assume the result is exact if the last 14 are zero. + // + // Example of a result that will be incorrectly rounded: + // log[1048576](4503599627370502) = 2.60000000000000009610279511444746... + // The above result correctly rounded using ROUND_CEIL to 1 decimal place should be 2.7, but it + // will be given as 2.6 as there are 15 zeros immediately after the requested decimal place, so + // the exact result would be assumed to be 2.6, which rounded using ROUND_CEIL to 1 decimal + // place is still 2.6. + if (checkRoundingDigits(r.d, k = pr, rm)) { + + do { + sd += 10; + num = naturalLogarithm(arg, sd); + denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd); + r = divide(num, denominator, sd, 1); + + if (!inf) { + + // Check for 14 nines from the 2nd rounding digit, as the first may be 4. + if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 1e14) { + r = finalise(r, pr + 1, 0); + } + + break; + } + } while (checkRoundingDigits(r.d, k += 10, rm)); + } + + external = true; + + return finalise(r, pr, rm); + }; + + + /* + * Return a new Decimal whose value is the maximum of the arguments and the value of this Decimal. + * + * arguments {number|string|Decimal} + * + P.max = function () { + Array.prototype.push.call(arguments, this); + return maxOrMin(this.constructor, arguments, 'lt'); + }; + */ + + + /* + * Return a new Decimal whose value is the minimum of the arguments and the value of this Decimal. + * + * arguments {number|string|Decimal} + * + P.min = function () { + Array.prototype.push.call(arguments, this); + return maxOrMin(this.constructor, arguments, 'gt'); + }; + */ + + + /* + * n - 0 = n + * n - N = N + * n - I = -I + * 0 - n = -n + * 0 - 0 = 0 + * 0 - N = N + * 0 - I = -I + * N - n = N + * N - 0 = N + * N - N = N + * N - I = N + * I - n = I + * I - 0 = I + * I - N = N + * I - I = N + * + * Return a new Decimal whose value is the value of this Decimal minus `y`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + */ + P.minus = P.sub = function (y) { + var d, e, i, j, k, len, pr, rm, xd, xe, xLTy, yd, + x = this, + Ctor = x.constructor; + + y = new Ctor(y); + + // If either is not finite... + if (!x.d || !y.d) { + + // Return NaN if either is NaN. + if (!x.s || !y.s) y = new Ctor(NaN); + + // Return y negated if x is finite and y is ±Infinity. + else if (x.d) y.s = -y.s; + + // Return x if y is finite and x is ±Infinity. + // Return x if both are ±Infinity with different signs. + // Return NaN if both are ±Infinity with the same sign. + else y = new Ctor(y.d || x.s !== y.s ? x : NaN); + + return y; + } + + // If signs differ... + if (x.s != y.s) { + y.s = -y.s; + return x.plus(y); + } + + xd = x.d; + yd = y.d; + pr = Ctor.precision; + rm = Ctor.rounding; + + // If either is zero... + if (!xd[0] || !yd[0]) { + + // Return y negated if x is zero and y is non-zero. + if (yd[0]) y.s = -y.s; + + // Return x if y is zero and x is non-zero. + else if (xd[0]) y = new Ctor(x); + + // Return zero if both are zero. + // From IEEE 754 (2008) 6.3: 0 - 0 = -0 - -0 = -0 when rounding to -Infinity. + else return new Ctor(rm === 3 ? -0 : 0); + + return external ? finalise(y, pr, rm) : y; + } + + // x and y are finite, non-zero numbers with the same sign. + + // Calculate base 1e7 exponents. + e = mathfloor(y.e / LOG_BASE); + xe = mathfloor(x.e / LOG_BASE); + + xd = xd.slice(); + k = xe - e; + + // If base 1e7 exponents differ... + if (k) { + xLTy = k < 0; + + if (xLTy) { + d = xd; + k = -k; + len = yd.length; + } else { + d = yd; + e = xe; + len = xd.length; + } + + // Numbers with massively different exponents would result in a very high number of + // zeros needing to be prepended, but this can be avoided while still ensuring correct + // rounding by limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`. + i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2; + + if (k > i) { + k = i; + d.length = 1; + } + + // Prepend zeros to equalise exponents. + d.reverse(); + for (i = k; i--;) d.push(0); + d.reverse(); + + // Base 1e7 exponents equal. + } else { + + // Check digits to determine which is the bigger number. + + i = xd.length; + len = yd.length; + xLTy = i < len; + if (xLTy) len = i; + + for (i = 0; i < len; i++) { + if (xd[i] != yd[i]) { + xLTy = xd[i] < yd[i]; + break; + } + } + + k = 0; + } + + if (xLTy) { + d = xd; + xd = yd; + yd = d; + y.s = -y.s; + } + + len = xd.length; + + // Append zeros to `xd` if shorter. + // Don't add zeros to `yd` if shorter as subtraction only needs to start at `yd` length. + for (i = yd.length - len; i > 0; --i) xd[len++] = 0; + + // Subtract yd from xd. + for (i = yd.length; i > k;) { + + if (xd[--i] < yd[i]) { + for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1; + --xd[j]; + xd[i] += BASE; + } + + xd[i] -= yd[i]; + } + + // Remove trailing zeros. + for (; xd[--len] === 0;) xd.pop(); + + // Remove leading zeros and adjust exponent accordingly. + for (; xd[0] === 0; xd.shift()) --e; + + // Zero? + if (!xd[0]) return new Ctor(rm === 3 ? -0 : 0); + + y.d = xd; + y.e = getBase10Exponent(xd, e); + + return external ? finalise(y, pr, rm) : y; + }; + + + /* + * n % 0 = N + * n % N = N + * n % I = n + * 0 % n = 0 + * -0 % n = -0 + * 0 % 0 = N + * 0 % N = N + * 0 % I = 0 + * N % n = N + * N % 0 = N + * N % N = N + * N % I = N + * I % n = N + * I % 0 = N + * I % N = N + * I % I = N + * + * Return a new Decimal whose value is the value of this Decimal modulo `y`, rounded to + * `precision` significant digits using rounding mode `rounding`. + * + * The result depends on the modulo mode. + * + */ + P.modulo = P.mod = function (y) { + var q, + x = this, + Ctor = x.constructor; + + y = new Ctor(y); + + // Return NaN if x is ±Infinity or NaN, or y is NaN or ±0. + if (!x.d || !y.s || y.d && !y.d[0]) return new Ctor(NaN); + + // Return x if y is ±Infinity or x is ±0. + if (!y.d || x.d && !x.d[0]) { + return finalise(new Ctor(x), Ctor.precision, Ctor.rounding); + } + + // Prevent rounding of intermediate calculations. + external = false; + + if (Ctor.modulo == 9) { + + // Euclidian division: q = sign(y) * floor(x / abs(y)) + // result = x - q * y where 0 <= result < abs(y) + q = divide(x, y.abs(), 0, 3, 1); + q.s *= y.s; + } else { + q = divide(x, y, 0, Ctor.modulo, 1); + } + + q = q.times(y); + + external = true; + + return x.minus(q); + }; + + + /* + * Return a new Decimal whose value is the natural exponential of the value of this Decimal, + * i.e. the base e raised to the power the value of this Decimal, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + */ + P.naturalExponential = P.exp = function () { + return naturalExponential(this); + }; + + + /* + * Return a new Decimal whose value is the natural logarithm of the value of this Decimal, + * rounded to `precision` significant digits using rounding mode `rounding`. + * + */ + P.naturalLogarithm = P.ln = function () { + return naturalLogarithm(this); + }; + + + /* + * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by + * -1. + * + */ + P.negated = P.neg = function () { + var x = new this.constructor(this); + x.s = -x.s; + return finalise(x); + }; + + + /* + * n + 0 = n + * n + N = N + * n + I = I + * 0 + n = n + * 0 + 0 = 0 + * 0 + N = N + * 0 + I = I + * N + n = N + * N + 0 = N + * N + N = N + * N + I = N + * I + n = I + * I + 0 = I + * I + N = N + * I + I = I + * + * Return a new Decimal whose value is the value of this Decimal plus `y`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + */ + P.plus = P.add = function (y) { + var carry, d, e, i, k, len, pr, rm, xd, yd, + x = this, + Ctor = x.constructor; + + y = new Ctor(y); + + // If either is not finite... + if (!x.d || !y.d) { + + // Return NaN if either is NaN. + if (!x.s || !y.s) y = new Ctor(NaN); + + // Return x if y is finite and x is ±Infinity. + // Return x if both are ±Infinity with the same sign. + // Return NaN if both are ±Infinity with different signs. + // Return y if x is finite and y is ±Infinity. + else if (!x.d) y = new Ctor(y.d || x.s === y.s ? x : NaN); + + return y; + } + + // If signs differ... + if (x.s != y.s) { + y.s = -y.s; + return x.minus(y); + } + + xd = x.d; + yd = y.d; + pr = Ctor.precision; + rm = Ctor.rounding; + + // If either is zero... + if (!xd[0] || !yd[0]) { + + // Return x if y is zero. + // Return y if y is non-zero. + if (!yd[0]) y = new Ctor(x); + + return external ? finalise(y, pr, rm) : y; + } + + // x and y are finite, non-zero numbers with the same sign. + + // Calculate base 1e7 exponents. + k = mathfloor(x.e / LOG_BASE); + e = mathfloor(y.e / LOG_BASE); + + xd = xd.slice(); + i = k - e; + + // If base 1e7 exponents differ... + if (i) { + + if (i < 0) { + d = xd; + i = -i; + len = yd.length; + } else { + d = yd; + e = k; + len = xd.length; + } + + // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1. + k = Math.ceil(pr / LOG_BASE); + len = k > len ? k + 1 : len + 1; + + if (i > len) { + i = len; + d.length = 1; + } + + // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts. + d.reverse(); + for (; i--;) d.push(0); + d.reverse(); + } + + len = xd.length; + i = yd.length; + + // If yd is longer than xd, swap xd and yd so xd points to the longer array. + if (len - i < 0) { + i = len; + d = yd; + yd = xd; + xd = d; + } + + // Only start adding at yd.length - 1 as the further digits of xd can be left as they are. + for (carry = 0; i;) { + carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0; + xd[i] %= BASE; + } + + if (carry) { + xd.unshift(carry); + ++e; + } + + // Remove trailing zeros. + // No need to check for zero, as +x + +y != 0 && -x + -y != 0 + for (len = xd.length; xd[--len] == 0;) xd.pop(); + + y.d = xd; + y.e = getBase10Exponent(xd, e); + + return external ? finalise(y, pr, rm) : y; + }; + + + /* + * Return the number of significant digits of the value of this Decimal. + * + * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0. + * + */ + P.precision = P.sd = function (z) { + var k, + x = this; + + if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z); + + if (x.d) { + k = getPrecision(x.d); + if (z && x.e + 1 > k) k = x.e + 1; + } else { + k = NaN; + } + + return k; + }; + + + /* + * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using + * rounding mode `rounding`. + * + */ + P.round = function () { + var x = this, + Ctor = x.constructor; + + return finalise(new Ctor(x), x.e + 1, Ctor.rounding); + }; + + + /* + * Return a new Decimal whose value is the sine of the value in radians of this Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [-1, 1] + * + * sin(x) = x - x^3/3! + x^5/5! - ... + * + * sin(0) = 0 + * sin(-0) = -0 + * sin(Infinity) = NaN + * sin(-Infinity) = NaN + * sin(NaN) = NaN + * + */ + P.sine = P.sin = function () { + var pr, rm, + x = this, + Ctor = x.constructor; + + if (!x.isFinite()) return new Ctor(NaN); + if (x.isZero()) return new Ctor(x); + + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE; + Ctor.rounding = 1; + + x = sine(Ctor, toLessThanHalfPi(Ctor, x)); + + Ctor.precision = pr; + Ctor.rounding = rm; + + return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true); + }; + + + /* + * Return a new Decimal whose value is the square root of this Decimal, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * sqrt(-n) = N + * sqrt(N) = N + * sqrt(-I) = N + * sqrt(I) = I + * sqrt(0) = 0 + * sqrt(-0) = -0 + * + */ + P.squareRoot = P.sqrt = function () { + var m, n, sd, r, rep, t, + x = this, + d = x.d, + e = x.e, + s = x.s, + Ctor = x.constructor; + + // Negative/NaN/Infinity/zero? + if (s !== 1 || !d || !d[0]) { + return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0); + } + + external = false; + + // Initial estimate. + s = Math.sqrt(+x); + + // Math.sqrt underflow/overflow? + // Pass x to Math.sqrt as integer, then adjust the exponent of the result. + if (s == 0 || s == 1 / 0) { + n = digitsToString(d); + + if ((n.length + e) % 2 == 0) n += '0'; + s = Math.sqrt(n); + e = mathfloor((e + 1) / 2) - (e < 0 || e % 2); + + if (s == 1 / 0) { + n = '5e' + e; + } else { + n = s.toExponential(); + n = n.slice(0, n.indexOf('e') + 1) + e; + } + + r = new Ctor(n); + } else { + r = new Ctor(s.toString()); + } + + sd = (e = Ctor.precision) + 3; + + // Newton-Raphson iteration. + for (;;) { + t = r; + r = t.plus(divide(x, t, sd + 2, 1)).times(0.5); + + // TODO? Replace with for-loop and checkRoundingDigits. + if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) { + n = n.slice(sd - 3, sd + 1); + + // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or + // 4999, i.e. approaching a rounding boundary, continue the iteration. + if (n == '9999' || !rep && n == '4999') { + + // On the first iteration only, check to see if rounding up gives the exact result as the + // nines may infinitely repeat. + if (!rep) { + finalise(t, e + 1, 0); + + if (t.times(t).eq(x)) { + r = t; + break; + } + } + + sd += 4; + rep = 1; + } else { + + // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result. + // If not, then there are further digits and m will be truthy. + if (!+n || !+n.slice(1) && n.charAt(0) == '5') { + + // Truncate to the first rounding digit. + finalise(r, e + 1, 1); + m = !r.times(r).eq(x); + } + + break; + } + } + } + + external = true; + + return finalise(r, e, Ctor.rounding, m); + }; + + + /* + * Return a new Decimal whose value is the tangent of the value in radians of this Decimal. + * + * Domain: [-Infinity, Infinity] + * Range: [-Infinity, Infinity] + * + * tan(0) = 0 + * tan(-0) = -0 + * tan(Infinity) = NaN + * tan(-Infinity) = NaN + * tan(NaN) = NaN + * + */ + P.tangent = P.tan = function () { + var pr, rm, + x = this, + Ctor = x.constructor; + + if (!x.isFinite()) return new Ctor(NaN); + if (x.isZero()) return new Ctor(x); + + pr = Ctor.precision; + rm = Ctor.rounding; + Ctor.precision = pr + 10; + Ctor.rounding = 1; + + x = x.sin(); + x.s = 1; + x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0); + + Ctor.precision = pr; + Ctor.rounding = rm; + + return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true); + }; + + + /* + * n * 0 = 0 + * n * N = N + * n * I = I + * 0 * n = 0 + * 0 * 0 = 0 + * 0 * N = N + * 0 * I = N + * N * n = N + * N * 0 = N + * N * N = N + * N * I = N + * I * n = I + * I * 0 = N + * I * N = N + * I * I = I + * + * Return a new Decimal whose value is this Decimal times `y`, rounded to `precision` significant + * digits using rounding mode `rounding`. + * + */ + P.times = P.mul = function (y) { + var carry, e, i, k, r, rL, t, xdL, ydL, + x = this, + Ctor = x.constructor, + xd = x.d, + yd = (y = new Ctor(y)).d; + + y.s *= x.s; + + // If either is NaN, ±Infinity or ±0... + if (!xd || !xd[0] || !yd || !yd[0]) { + + return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd + + // Return NaN if either is NaN. + // Return NaN if x is ±0 and y is ±Infinity, or y is ±0 and x is ±Infinity. + ? NaN + + // Return ±Infinity if either is ±Infinity. + // Return ±0 if either is ±0. + : !xd || !yd ? y.s / 0 : y.s * 0); + } + + e = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE); + xdL = xd.length; + ydL = yd.length; + + // Ensure xd points to the longer array. + if (xdL < ydL) { + r = xd; + xd = yd; + yd = r; + rL = xdL; + xdL = ydL; + ydL = rL; + } + + // Initialise the result array with zeros. + r = []; + rL = xdL + ydL; + for (i = rL; i--;) r.push(0); + + // Multiply! + for (i = ydL; --i >= 0;) { + carry = 0; + for (k = xdL + i; k > i;) { + t = r[k] + yd[i] * xd[k - i - 1] + carry; + r[k--] = t % BASE | 0; + carry = t / BASE | 0; + } + + r[k] = (r[k] + carry) % BASE | 0; + } + + // Remove trailing zeros. + for (; !r[--rL];) r.pop(); + + if (carry) ++e; + else r.shift(); + + y.d = r; + y.e = getBase10Exponent(r, e); + + return external ? finalise(y, Ctor.precision, Ctor.rounding) : y; + }; + + + /* + * Return a string representing the value of this Decimal in base 2, round to `sd` significant + * digits using rounding mode `rm`. + * + * If the optional `sd` argument is present then return binary exponential notation. + * + * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + */ + P.toBinary = function (sd, rm) { + return toStringBinary(this, 2, sd, rm); + }; + + + /* + * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp` + * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted. + * + * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal. + * + * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + */ + P.toDecimalPlaces = P.toDP = function (dp, rm) { + var x = this, + Ctor = x.constructor; + + x = new Ctor(x); + if (dp === void 0) return x; + + checkInt32(dp, 0, MAX_DIGITS); + + if (rm === void 0) rm = Ctor.rounding; + else checkInt32(rm, 0, 8); + + return finalise(x, dp + x.e + 1, rm); + }; + + + /* + * Return a string representing the value of this Decimal in exponential notation rounded to + * `dp` fixed decimal places using rounding mode `rounding`. + * + * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + */ + P.toExponential = function (dp, rm) { + var str, + x = this, + Ctor = x.constructor; + + if (dp === void 0) { + str = finiteToString(x, true); + } else { + checkInt32(dp, 0, MAX_DIGITS); + + if (rm === void 0) rm = Ctor.rounding; + else checkInt32(rm, 0, 8); + + x = finalise(new Ctor(x), dp + 1, rm); + str = finiteToString(x, true, dp + 1); + } + + return x.isNeg() && !x.isZero() ? '-' + str : str; + }; + + + /* + * Return a string representing the value of this Decimal in normal (fixed-point) notation to + * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is + * omitted. + * + * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'. + * + * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'. + * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'. + * (-0).toFixed(3) is '0.000'. + * (-0.5).toFixed(0) is '-0'. + * + */ + P.toFixed = function (dp, rm) { + var str, y, + x = this, + Ctor = x.constructor; + + if (dp === void 0) { + str = finiteToString(x); + } else { + checkInt32(dp, 0, MAX_DIGITS); + + if (rm === void 0) rm = Ctor.rounding; + else checkInt32(rm, 0, 8); + + y = finalise(new Ctor(x), dp + x.e + 1, rm); + str = finiteToString(y, false, dp + y.e + 1); + } + + // To determine whether to add the minus sign look at the value before it was rounded, + // i.e. look at `x` rather than `y`. + return x.isNeg() && !x.isZero() ? '-' + str : str; + }; + + + /* + * Return an array representing the value of this Decimal as a simple fraction with an integer + * numerator and an integer denominator. + * + * The denominator will be a positive non-zero value less than or equal to the specified maximum + * denominator. If a maximum denominator is not specified, the denominator will be the lowest + * value necessary to represent the number exactly. + * + * [maxD] {number|string|Decimal} Maximum denominator. Integer >= 1 and < Infinity. + * + */ + P.toFraction = function (maxD) { + var d, d0, d1, d2, e, k, n, n0, n1, pr, q, r, + x = this, + xd = x.d, + Ctor = x.constructor; + + if (!xd) return new Ctor(x); + + n1 = d0 = new Ctor(1); + d1 = n0 = new Ctor(0); + + d = new Ctor(d1); + e = d.e = getPrecision(xd) - x.e - 1; + k = e % LOG_BASE; + d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k); + + if (maxD == null) { + + // d is 10**e, the minimum max-denominator needed. + maxD = e > 0 ? d : n1; + } else { + n = new Ctor(maxD); + if (!n.isInt() || n.lt(n1)) throw Error(invalidArgument + n); + maxD = n.gt(d) ? (e > 0 ? d : n1) : n; + } + + external = false; + n = new Ctor(digitsToString(xd)); + pr = Ctor.precision; + Ctor.precision = e = xd.length * LOG_BASE * 2; + + for (;;) { + q = divide(n, d, 0, 1, 1); + d2 = d0.plus(q.times(d1)); + if (d2.cmp(maxD) == 1) break; + d0 = d1; + d1 = d2; + d2 = n1; + n1 = n0.plus(q.times(d2)); + n0 = d2; + d2 = d; + d = n.minus(q.times(d2)); + n = d2; + } + + d2 = divide(maxD.minus(d0), d1, 0, 1, 1); + n0 = n0.plus(d2.times(n1)); + d0 = d0.plus(d2.times(d1)); + n0.s = n1.s = x.s; + + // Determine which fraction is closer to x, n0/d0 or n1/d1? + r = divide(n1, d1, e, 1).minus(x).abs().cmp(divide(n0, d0, e, 1).minus(x).abs()) < 1 + ? [n1, d1] : [n0, d0]; + + Ctor.precision = pr; + external = true; + + return r; + }; + + + /* + * Return a string representing the value of this Decimal in base 16, round to `sd` significant + * digits using rounding mode `rm`. + * + * If the optional `sd` argument is present then return binary exponential notation. + * + * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + */ + P.toHexadecimal = P.toHex = function (sd, rm) { + return toStringBinary(this, 16, sd, rm); + }; + + + /* + * Returns a new Decimal whose value is the nearest multiple of `y` in the direction of rounding + * mode `rm`, or `Decimal.rounding` if `rm` is omitted, to the value of this Decimal. + * + * The return value will always have the same sign as this Decimal, unless either this Decimal + * or `y` is NaN, in which case the return value will be also be NaN. + * + * The return value is not affected by the value of `precision`. + * + * y {number|string|Decimal} The magnitude to round to a multiple of. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * 'toNearest() rounding mode not an integer: {rm}' + * 'toNearest() rounding mode out of range: {rm}' + * + */ + P.toNearest = function (y, rm) { + var x = this, + Ctor = x.constructor; + + x = new Ctor(x); + + if (y == null) { + + // If x is not finite, return x. + if (!x.d) return x; + + y = new Ctor(1); + rm = Ctor.rounding; + } else { + y = new Ctor(y); + if (rm === void 0) { + rm = Ctor.rounding; + } else { + checkInt32(rm, 0, 8); + } + + // If x is not finite, return x if y is not NaN, else NaN. + if (!x.d) return y.s ? x : y; + + // If y is not finite, return Infinity with the sign of x if y is Infinity, else NaN. + if (!y.d) { + if (y.s) y.s = x.s; + return y; + } + } + + // If y is not zero, calculate the nearest multiple of y to x. + if (y.d[0]) { + external = false; + x = divide(x, y, 0, rm, 1).times(y); + external = true; + finalise(x); + + // If y is zero, return zero with the sign of x. + } else { + y.s = x.s; + x = y; + } + + return x; + }; + + + /* + * Return the value of this Decimal converted to a number primitive. + * Zero keeps its sign. + * + */ + P.toNumber = function () { + return +this; + }; + + + /* + * Return a string representing the value of this Decimal in base 8, round to `sd` significant + * digits using rounding mode `rm`. + * + * If the optional `sd` argument is present then return binary exponential notation. + * + * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + */ + P.toOctal = function (sd, rm) { + return toStringBinary(this, 8, sd, rm); + }; + + + /* + * Return a new Decimal whose value is the value of this Decimal raised to the power `y`, rounded + * to `precision` significant digits using rounding mode `rounding`. + * + * ECMAScript compliant. + * + * pow(x, NaN) = NaN + * pow(x, ±0) = 1 + + * pow(NaN, non-zero) = NaN + * pow(abs(x) > 1, +Infinity) = +Infinity + * pow(abs(x) > 1, -Infinity) = +0 + * pow(abs(x) == 1, ±Infinity) = NaN + * pow(abs(x) < 1, +Infinity) = +0 + * pow(abs(x) < 1, -Infinity) = +Infinity + * pow(+Infinity, y > 0) = +Infinity + * pow(+Infinity, y < 0) = +0 + * pow(-Infinity, odd integer > 0) = -Infinity + * pow(-Infinity, even integer > 0) = +Infinity + * pow(-Infinity, odd integer < 0) = -0 + * pow(-Infinity, even integer < 0) = +0 + * pow(+0, y > 0) = +0 + * pow(+0, y < 0) = +Infinity + * pow(-0, odd integer > 0) = -0 + * pow(-0, even integer > 0) = +0 + * pow(-0, odd integer < 0) = -Infinity + * pow(-0, even integer < 0) = +Infinity + * pow(finite x < 0, finite non-integer) = NaN + * + * For non-integer or very large exponents pow(x, y) is calculated using + * + * x^y = exp(y*ln(x)) + * + * Assuming the first 15 rounding digits are each equally likely to be any digit 0-9, the + * probability of an incorrectly rounded result + * P([49]9{14} | [50]0{14}) = 2 * 0.2 * 10^-14 = 4e-15 = 1/2.5e+14 + * i.e. 1 in 250,000,000,000,000 + * + * If a result is incorrectly rounded the maximum error will be 1 ulp (unit in last place). + * + * y {number|string|Decimal} The power to which to raise this Decimal. + * + */ + P.toPower = P.pow = function (y) { + var e, k, pr, r, rm, s, + x = this, + Ctor = x.constructor, + yn = +(y = new Ctor(y)); + + // Either ±Infinity, NaN or ±0? + if (!x.d || !y.d || !x.d[0] || !y.d[0]) return new Ctor(mathpow(+x, yn)); + + x = new Ctor(x); + + if (x.eq(1)) return x; + + pr = Ctor.precision; + rm = Ctor.rounding; + + if (y.eq(1)) return finalise(x, pr, rm); + + // y exponent + e = mathfloor(y.e / LOG_BASE); + + // If y is a small integer use the 'exponentiation by squaring' algorithm. + if (e >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) { + r = intPow(Ctor, x, k, pr); + return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm); + } + + s = x.s; + + // if x is negative + if (s < 0) { + + // if y is not an integer + if (e < y.d.length - 1) return new Ctor(NaN); + + // Result is positive if x is negative and the last digit of integer y is even. + if ((y.d[e] & 1) == 0) s = 1; + + // if x.eq(-1) + if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) { + x.s = s; + return x; + } + } + + // Estimate result exponent. + // x^y = 10^e, where e = y * log10(x) + // log10(x) = log10(x_significand) + x_exponent + // log10(x_significand) = ln(x_significand) / ln(10) + k = mathpow(+x, yn); + e = k == 0 || !isFinite(k) + ? mathfloor(yn * (Math.log('0.' + digitsToString(x.d)) / Math.LN10 + x.e + 1)) + : new Ctor(k + '').e; + + // Exponent estimate may be incorrect e.g. x: 0.999999999999999999, y: 2.29, e: 0, r.e: -1. + + // Overflow/underflow? + if (e > Ctor.maxE + 1 || e < Ctor.minE - 1) return new Ctor(e > 0 ? s / 0 : 0); + + external = false; + Ctor.rounding = x.s = 1; + + // Estimate the extra guard digits needed to ensure five correct rounding digits from + // naturalLogarithm(x). Example of failure without these extra digits (precision: 10): + // new Decimal(2.32456).pow('2087987436534566.46411') + // should be 1.162377823e+764914905173815, but is 1.162355823e+764914905173815 + k = Math.min(12, (e + '').length); + + // r = x^y = exp(y*ln(x)) + r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr); + + // r may be Infinity, e.g. (0.9999999999999999).pow(-1e+40) + if (r.d) { + + // Truncate to the required precision plus five rounding digits. + r = finalise(r, pr + 5, 1); + + // If the rounding digits are [49]9999 or [50]0000 increase the precision by 10 and recalculate + // the result. + if (checkRoundingDigits(r.d, pr, rm)) { + e = pr + 10; + + // Truncate to the increased precision plus five rounding digits. + r = finalise(naturalExponential(y.times(naturalLogarithm(x, e + k)), e), e + 5, 1); + + // Check for 14 nines from the 2nd rounding digit (the first rounding digit may be 4 or 9). + if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 1e14) { + r = finalise(r, pr + 1, 0); + } + } + } + + r.s = s; + external = true; + Ctor.rounding = rm; + + return finalise(r, pr, rm); + }; + + + /* + * Return a string representing the value of this Decimal rounded to `sd` significant digits + * using rounding mode `rounding`. + * + * Return exponential notation if `sd` is less than the number of digits necessary to represent + * the integer part of the value in normal notation. + * + * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + */ + P.toPrecision = function (sd, rm) { + var str, + x = this, + Ctor = x.constructor; + + if (sd === void 0) { + str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos); + } else { + checkInt32(sd, 1, MAX_DIGITS); + + if (rm === void 0) rm = Ctor.rounding; + else checkInt32(rm, 0, 8); + + x = finalise(new Ctor(x), sd, rm); + str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd); + } + + return x.isNeg() && !x.isZero() ? '-' + str : str; + }; + + + /* + * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd` + * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if + * omitted. + * + * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * 'toSD() digits out of range: {sd}' + * 'toSD() digits not an integer: {sd}' + * 'toSD() rounding mode not an integer: {rm}' + * 'toSD() rounding mode out of range: {rm}' + * + */ + P.toSignificantDigits = P.toSD = function (sd, rm) { + var x = this, + Ctor = x.constructor; + + if (sd === void 0) { + sd = Ctor.precision; + rm = Ctor.rounding; + } else { + checkInt32(sd, 1, MAX_DIGITS); + + if (rm === void 0) rm = Ctor.rounding; + else checkInt32(rm, 0, 8); + } + + return finalise(new Ctor(x), sd, rm); + }; + + + /* + * Return a string representing the value of this Decimal. + * + * Return exponential notation if this Decimal has a positive exponent equal to or greater than + * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`. + * + */ + P.toString = function () { + var x = this, + Ctor = x.constructor, + str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos); + + return x.isNeg() && !x.isZero() ? '-' + str : str; + }; + + + /* + * Return a new Decimal whose value is the value of this Decimal truncated to a whole number. + * + */ + P.truncated = P.trunc = function () { + return finalise(new this.constructor(this), this.e + 1, 1); + }; + + + /* + * Return a string representing the value of this Decimal. + * Unlike `toString`, negative zero will include the minus sign. + * + */ + P.valueOf = P.toJSON = function () { + var x = this, + Ctor = x.constructor, + str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos); + + return x.isNeg() ? '-' + str : str; + }; + + + // Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers. + + + /* + * digitsToString P.cubeRoot, P.logarithm, P.squareRoot, P.toFraction, P.toPower, + * finiteToString, naturalExponential, naturalLogarithm + * checkInt32 P.toDecimalPlaces, P.toExponential, P.toFixed, P.toNearest, + * P.toPrecision, P.toSignificantDigits, toStringBinary, random + * checkRoundingDigits P.logarithm, P.toPower, naturalExponential, naturalLogarithm + * convertBase toStringBinary, parseOther + * cos P.cos + * divide P.atanh, P.cubeRoot, P.dividedBy, P.dividedToIntegerBy, + * P.logarithm, P.modulo, P.squareRoot, P.tan, P.tanh, P.toFraction, + * P.toNearest, toStringBinary, naturalExponential, naturalLogarithm, + * taylorSeries, atan2, parseOther + * finalise P.absoluteValue, P.atan, P.atanh, P.ceil, P.cos, P.cosh, + * P.cubeRoot, P.dividedToIntegerBy, P.floor, P.logarithm, P.minus, + * P.modulo, P.negated, P.plus, P.round, P.sin, P.sinh, P.squareRoot, + * P.tan, P.times, P.toDecimalPlaces, P.toExponential, P.toFixed, + * P.toNearest, P.toPower, P.toPrecision, P.toSignificantDigits, + * P.truncated, divide, getLn10, getPi, naturalExponential, + * naturalLogarithm, ceil, floor, round, trunc + * finiteToString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf, + * toStringBinary + * getBase10Exponent P.minus, P.plus, P.times, parseOther + * getLn10 P.logarithm, naturalLogarithm + * getPi P.acos, P.asin, P.atan, toLessThanHalfPi, atan2 + * getPrecision P.precision, P.toFraction + * getZeroString digitsToString, finiteToString + * intPow P.toPower, parseOther + * isOdd toLessThanHalfPi + * maxOrMin max, min + * naturalExponential P.naturalExponential, P.toPower + * naturalLogarithm P.acosh, P.asinh, P.atanh, P.logarithm, P.naturalLogarithm, + * P.toPower, naturalExponential + * nonFiniteToString finiteToString, toStringBinary + * parseDecimal Decimal + * parseOther Decimal + * sin P.sin + * taylorSeries P.cosh, P.sinh, cos, sin + * toLessThanHalfPi P.cos, P.sin + * toStringBinary P.toBinary, P.toHexadecimal, P.toOctal + * truncate intPow + * + * Throws: P.logarithm, P.precision, P.toFraction, checkInt32, getLn10, getPi, + * naturalLogarithm, config, parseOther, random, Decimal + */ + + + function digitsToString(d) { + var i, k, ws, + indexOfLastWord = d.length - 1, + str = '', + w = d[0]; + + if (indexOfLastWord > 0) { + str += w; + for (i = 1; i < indexOfLastWord; i++) { + ws = d[i] + ''; + k = LOG_BASE - ws.length; + if (k) str += getZeroString(k); + str += ws; + } + + w = d[i]; + ws = w + ''; + k = LOG_BASE - ws.length; + if (k) str += getZeroString(k); + } else if (w === 0) { + return '0'; + } + + // Remove trailing zeros of last w. + for (; w % 10 === 0;) w /= 10; + + return str + w; + } + + + function checkInt32(i, min, max) { + if (i !== ~~i || i < min || i > max) { + throw Error(invalidArgument + i); + } + } + + + /* + * Check 5 rounding digits if `repeating` is null, 4 otherwise. + * `repeating == null` if caller is `log` or `pow`, + * `repeating != null` if caller is `naturalLogarithm` or `naturalExponential`. + */ + function checkRoundingDigits(d, i, rm, repeating) { + var di, k, r, rd; + + // Get the length of the first word of the array d. + for (k = d[0]; k >= 10; k /= 10) --i; + + // Is the rounding digit in the first word of d? + if (--i < 0) { + i += LOG_BASE; + di = 0; + } else { + di = Math.ceil((i + 1) / LOG_BASE); + i %= LOG_BASE; + } + + // i is the index (0 - 6) of the rounding digit. + // E.g. if within the word 3487563 the first rounding digit is 5, + // then i = 4, k = 1000, rd = 3487563 % 1000 = 563 + k = mathpow(10, LOG_BASE - i); + rd = d[di] % k | 0; + + if (repeating == null) { + if (i < 3) { + if (i == 0) rd = rd / 100 | 0; + else if (i == 1) rd = rd / 10 | 0; + r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 50000 || rd == 0; + } else { + r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) && + (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 || + (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0; + } + } else { + if (i < 4) { + if (i == 0) rd = rd / 1000 | 0; + else if (i == 1) rd = rd / 100 | 0; + else if (i == 2) rd = rd / 10 | 0; + r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999; + } else { + r = ((repeating || rm < 4) && rd + 1 == k || + (!repeating && rm > 3) && rd + 1 == k / 2) && + (d[di + 1] / k / 1000 | 0) == mathpow(10, i - 3) - 1; + } + } + + return r; + } + + + // Convert string of `baseIn` to an array of numbers of `baseOut`. + // Eg. convertBase('255', 10, 16) returns [15, 15]. + // Eg. convertBase('ff', 16, 10) returns [2, 5, 5]. + function convertBase(str, baseIn, baseOut) { + var j, + arr = [0], + arrL, + i = 0, + strL = str.length; + + for (; i < strL;) { + for (arrL = arr.length; arrL--;) arr[arrL] *= baseIn; + arr[0] += NUMERALS.indexOf(str.charAt(i++)); + for (j = 0; j < arr.length; j++) { + if (arr[j] > baseOut - 1) { + if (arr[j + 1] === void 0) arr[j + 1] = 0; + arr[j + 1] += arr[j] / baseOut | 0; + arr[j] %= baseOut; + } + } + } + + return arr.reverse(); + } + + + /* + * cos(x) = 1 - x^2/2! + x^4/4! - ... + * |x| < pi/2 + * + */ + function cosine(Ctor, x) { + var k, len, y; + + if (x.isZero()) return x; + + // Argument reduction: cos(4x) = 8*(cos^4(x) - cos^2(x)) + 1 + // i.e. cos(x) = 8*(cos^4(x/4) - cos^2(x/4)) + 1 + + // Estimate the optimum number of times to use the argument reduction. + len = x.d.length; + if (len < 32) { + k = Math.ceil(len / 3); + y = (1 / tinyPow(4, k)).toString(); + } else { + k = 16; + y = '2.3283064365386962890625e-10'; + } + + Ctor.precision += k; + + x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1)); + + // Reverse argument reduction + for (var i = k; i--;) { + var cos2x = x.times(x); + x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1); + } + + Ctor.precision -= k; + + return x; + } + + + /* + * Perform division in the specified base. + */ + var divide = (function () { + + // Assumes non-zero x and k, and hence non-zero result. + function multiplyInteger(x, k, base) { + var temp, + carry = 0, + i = x.length; + + for (x = x.slice(); i--;) { + temp = x[i] * k + carry; + x[i] = temp % base | 0; + carry = temp / base | 0; + } + + if (carry) x.unshift(carry); + + return x; + } + + function compare(a, b, aL, bL) { + var i, r; + + if (aL != bL) { + r = aL > bL ? 1 : -1; + } else { + for (i = r = 0; i < aL; i++) { + if (a[i] != b[i]) { + r = a[i] > b[i] ? 1 : -1; + break; + } + } + } + + return r; + } + + function subtract(a, b, aL, base) { + var i = 0; + + // Subtract b from a. + for (; aL--;) { + a[aL] -= i; + i = a[aL] < b[aL] ? 1 : 0; + a[aL] = i * base + a[aL] - b[aL]; + } + + // Remove leading zeros. + for (; !a[0] && a.length > 1;) a.shift(); + } + + return function (x, y, pr, rm, dp, base) { + var cmp, e, i, k, logBase, more, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0, + yL, yz, + Ctor = x.constructor, + sign = x.s == y.s ? 1 : -1, + xd = x.d, + yd = y.d; + + // Either NaN, Infinity or 0? + if (!xd || !xd[0] || !yd || !yd[0]) { + + return new Ctor(// Return NaN if either NaN, or both Infinity or 0. + !x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN : + + // Return ±0 if x is 0 or y is ±Infinity, or return ±Infinity as y is 0. + xd && xd[0] == 0 || !yd ? sign * 0 : sign / 0); + } + + if (base) { + logBase = 1; + e = x.e - y.e; + } else { + base = BASE; + logBase = LOG_BASE; + e = mathfloor(x.e / logBase) - mathfloor(y.e / logBase); + } + + yL = yd.length; + xL = xd.length; + q = new Ctor(sign); + qd = q.d = []; + + // Result exponent may be one less than e. + // The digit array of a Decimal from toStringBinary may have trailing zeros. + for (i = 0; yd[i] == (xd[i] || 0); i++); + + if (yd[i] > (xd[i] || 0)) e--; + + if (pr == null) { + sd = pr = Ctor.precision; + rm = Ctor.rounding; + } else if (dp) { + sd = pr + (x.e - y.e) + 1; + } else { + sd = pr; + } + + if (sd < 0) { + qd.push(1); + more = true; + } else { + + // Convert precision in number of base 10 digits to base 1e7 digits. + sd = sd / logBase + 2 | 0; + i = 0; + + // divisor < 1e7 + if (yL == 1) { + k = 0; + yd = yd[0]; + sd++; + + // k is the carry. + for (; (i < xL || k) && sd--; i++) { + t = k * base + (xd[i] || 0); + qd[i] = t / yd | 0; + k = t % yd | 0; + } + + more = k || i < xL; + + // divisor >= 1e7 + } else { + + // Normalise xd and yd so highest order digit of yd is >= base/2 + k = base / (yd[0] + 1) | 0; + + if (k > 1) { + yd = multiplyInteger(yd, k, base); + xd = multiplyInteger(xd, k, base); + yL = yd.length; + xL = xd.length; + } + + xi = yL; + rem = xd.slice(0, yL); + remL = rem.length; + + // Add zeros to make remainder as long as divisor. + for (; remL < yL;) rem[remL++] = 0; + + yz = yd.slice(); + yz.unshift(0); + yd0 = yd[0]; + + if (yd[1] >= base / 2) ++yd0; + + do { + k = 0; + + // Compare divisor and remainder. + cmp = compare(yd, rem, yL, remL); + + // If divisor < remainder. + if (cmp < 0) { + + // Calculate trial digit, k. + rem0 = rem[0]; + if (yL != remL) rem0 = rem0 * base + (rem[1] || 0); + + // k will be how many times the divisor goes into the current remainder. + k = rem0 / yd0 | 0; + + // Algorithm: + // 1. product = divisor * trial digit (k) + // 2. if product > remainder: product -= divisor, k-- + // 3. remainder -= product + // 4. if product was < remainder at 2: + // 5. compare new remainder and divisor + // 6. If remainder > divisor: remainder -= divisor, k++ + + if (k > 1) { + if (k >= base) k = base - 1; + + // product = divisor * trial digit. + prod = multiplyInteger(yd, k, base); + prodL = prod.length; + remL = rem.length; + + // Compare product and remainder. + cmp = compare(prod, rem, prodL, remL); + + // product > remainder. + if (cmp == 1) { + k--; + + // Subtract divisor from product. + subtract(prod, yL < prodL ? yz : yd, prodL, base); + } + } else { + + // cmp is -1. + // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1 + // to avoid it. If k is 1 there is a need to compare yd and rem again below. + if (k == 0) cmp = k = 1; + prod = yd.slice(); + } + + prodL = prod.length; + if (prodL < remL) prod.unshift(0); + + // Subtract product from remainder. + subtract(rem, prod, remL, base); + + // If product was < previous remainder. + if (cmp == -1) { + remL = rem.length; + + // Compare divisor and new remainder. + cmp = compare(yd, rem, yL, remL); + + // If divisor < new remainder, subtract divisor from remainder. + if (cmp < 1) { + k++; + + // Subtract divisor from remainder. + subtract(rem, yL < remL ? yz : yd, remL, base); + } + } + + remL = rem.length; + } else if (cmp === 0) { + k++; + rem = [0]; + } // if cmp === 1, k will be 0 + + // Add the next digit, k, to the result array. + qd[i++] = k; + + // Update the remainder. + if (cmp && rem[0]) { + rem[remL++] = xd[xi] || 0; + } else { + rem = [xd[xi]]; + remL = 1; + } + + } while ((xi++ < xL || rem[0] !== void 0) && sd--); + + more = rem[0] !== void 0; + } + + // Leading zero? + if (!qd[0]) qd.shift(); + } + + // logBase is 1 when divide is being used for base conversion. + if (logBase == 1) { + q.e = e; + inexact = more; + } else { + + // To calculate q.e, first get the number of digits of qd[0]. + for (i = 1, k = qd[0]; k >= 10; k /= 10) i++; + q.e = i + e * logBase - 1; + + finalise(q, dp ? pr + q.e + 1 : pr, rm, more); + } + + return q; + }; + })(); + + + /* + * Round `x` to `sd` significant digits using rounding mode `rm`. + * Check for over/under-flow. + */ + function finalise(x, sd, rm, isTruncated) { + var digits, i, j, k, rd, roundUp, w, xd, xdi, + Ctor = x.constructor; + + // Don't round if sd is null or undefined. + out: if (sd != null) { + xd = x.d; + + // Infinity/NaN. + if (!xd) return x; + + // rd: the rounding digit, i.e. the digit after the digit that may be rounded up. + // w: the word of xd containing rd, a base 1e7 number. + // xdi: the index of w within xd. + // digits: the number of digits of w. + // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if + // they had leading zeros) + // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero). + + // Get the length of the first word of the digits array xd. + for (digits = 1, k = xd[0]; k >= 10; k /= 10) digits++; + i = sd - digits; + + // Is the rounding digit in the first word of xd? + if (i < 0) { + i += LOG_BASE; + j = sd; + w = xd[xdi = 0]; + + // Get the rounding digit at index j of w. + rd = w / mathpow(10, digits - j - 1) % 10 | 0; + } else { + xdi = Math.ceil((i + 1) / LOG_BASE); + k = xd.length; + if (xdi >= k) { + if (isTruncated) { + + // Needed by `naturalExponential`, `naturalLogarithm` and `squareRoot`. + for (; k++ <= xdi;) xd.push(0); + w = rd = 0; + digits = 1; + i %= LOG_BASE; + j = i - LOG_BASE + 1; + } else { + break out; + } + } else { + w = k = xd[xdi]; + + // Get the number of digits of w. + for (digits = 1; k >= 10; k /= 10) digits++; + + // Get the index of rd within w. + i %= LOG_BASE; + + // Get the index of rd within w, adjusted for leading zeros. + // The number of leading zeros of w is given by LOG_BASE - digits. + j = i - LOG_BASE + digits; + + // Get the rounding digit at index j of w. + rd = j < 0 ? 0 : w / mathpow(10, digits - j - 1) % 10 | 0; + } + } + + // Are there any non-zero digits after the rounding digit? + isTruncated = isTruncated || sd < 0 || + xd[xdi + 1] !== void 0 || (j < 0 ? w : w % mathpow(10, digits - j - 1)); + + // The expression `w % mathpow(10, digits - j - 1)` returns all the digits of w to the right + // of the digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression + // will give 714. + + roundUp = rm < 4 + ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) + : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 && + + // Check whether the digit to the left of the rounding digit is odd. + ((i > 0 ? j > 0 ? w / mathpow(10, digits - j) : 0 : xd[xdi - 1]) % 10) & 1 || + rm == (x.s < 0 ? 8 : 7)); + + if (sd < 1 || !xd[0]) { + xd.length = 0; + if (roundUp) { + + // Convert sd to decimal places. + sd -= x.e + 1; + + // 1, 0.1, 0.01, 0.001, 0.0001 etc. + xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE); + x.e = -sd || 0; + } else { + + // Zero. + xd[0] = x.e = 0; + } + + return x; + } + + // Remove excess digits. + if (i == 0) { + xd.length = xdi; + k = 1; + xdi--; + } else { + xd.length = xdi + 1; + k = mathpow(10, LOG_BASE - i); + + // E.g. 56700 becomes 56000 if 7 is the rounding digit. + // j > 0 means i > number of leading zeros of w. + xd[xdi] = j > 0 ? (w / mathpow(10, digits - j) % mathpow(10, j) | 0) * k : 0; + } + + if (roundUp) { + for (;;) { + + // Is the digit to be rounded up in the first word of xd? + if (xdi == 0) { + + // i will be the length of xd[0] before k is added. + for (i = 1, j = xd[0]; j >= 10; j /= 10) i++; + j = xd[0] += k; + for (k = 1; j >= 10; j /= 10) k++; + + // if i != k the length has increased. + if (i != k) { + x.e++; + if (xd[0] == BASE) xd[0] = 1; + } + + break; + } else { + xd[xdi] += k; + if (xd[xdi] != BASE) break; + xd[xdi--] = 0; + k = 1; + } + } + } + + // Remove trailing zeros. + for (i = xd.length; xd[--i] === 0;) xd.pop(); + } + + if (external) { + + // Overflow? + if (x.e > Ctor.maxE) { + + // Infinity. + x.d = null; + x.e = NaN; + + // Underflow? + } else if (x.e < Ctor.minE) { + + // Zero. + x.e = 0; + x.d = [0]; + // Ctor.underflow = true; + } // else Ctor.underflow = false; + } + + return x; + } + + + function finiteToString(x, isExp, sd) { + if (!x.isFinite()) return nonFiniteToString(x); + var k, + e = x.e, + str = digitsToString(x.d), + len = str.length; + + if (isExp) { + if (sd && (k = sd - len) > 0) { + str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k); + } else if (len > 1) { + str = str.charAt(0) + '.' + str.slice(1); + } + + str = str + (x.e < 0 ? 'e' : 'e+') + x.e; + } else if (e < 0) { + str = '0.' + getZeroString(-e - 1) + str; + if (sd && (k = sd - len) > 0) str += getZeroString(k); + } else if (e >= len) { + str += getZeroString(e + 1 - len); + if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k); + } else { + if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k); + if (sd && (k = sd - len) > 0) { + if (e + 1 === len) str += '.'; + str += getZeroString(k); + } + } + + return str; + } + + + // Calculate the base 10 exponent from the base 1e7 exponent. + function getBase10Exponent(digits, e) { + var w = digits[0]; + + // Add the number of digits of the first word of the digits array. + for ( e *= LOG_BASE; w >= 10; w /= 10) e++; + return e; + } + + + function getLn10(Ctor, sd, pr) { + if (sd > LN10_PRECISION) { + + // Reset global state in case the exception is caught. + external = true; + if (pr) Ctor.precision = pr; + throw Error(precisionLimitExceeded); + } + return finalise(new Ctor(LN10), sd, 1, true); + } + + + function getPi(Ctor, sd, rm) { + if (sd > PI_PRECISION) throw Error(precisionLimitExceeded); + return finalise(new Ctor(PI), sd, rm, true); + } + + + function getPrecision(digits) { + var w = digits.length - 1, + len = w * LOG_BASE + 1; + + w = digits[w]; + + // If non-zero... + if (w) { + + // Subtract the number of trailing zeros of the last word. + for (; w % 10 == 0; w /= 10) len--; + + // Add the number of digits of the first word. + for (w = digits[0]; w >= 10; w /= 10) len++; + } + + return len; + } + + + function getZeroString(k) { + var zs = ''; + for (; k--;) zs += '0'; + return zs; + } + + + /* + * Return a new Decimal whose value is the value of Decimal `x` to the power `n`, where `n` is an + * integer of type number. + * + * Implements 'exponentiation by squaring'. Called by `pow` and `parseOther`. + * + */ + function intPow(Ctor, x, n, pr) { + var isTruncated, + r = new Ctor(1), + + // Max n of 9007199254740991 takes 53 loop iterations. + // Maximum digits array length; leaves [28, 34] guard digits. + k = Math.ceil(pr / LOG_BASE + 4); + + external = false; + + for (;;) { + if (n % 2) { + r = r.times(x); + if (truncate(r.d, k)) isTruncated = true; + } + + n = mathfloor(n / 2); + if (n === 0) { + + // To ensure correct rounding when r.d is truncated, increment the last word if it is zero. + n = r.d.length - 1; + if (isTruncated && r.d[n] === 0) ++r.d[n]; + break; + } + + x = x.times(x); + truncate(x.d, k); + } + + external = true; + + return r; + } + + + function isOdd(n) { + return n.d[n.d.length - 1] & 1; + } + + + /* + * Handle `max` and `min`. `ltgt` is 'lt' or 'gt'. + */ + function maxOrMin(Ctor, args, ltgt) { + var y, + x = new Ctor(args[0]), + i = 0; + + for (; ++i < args.length;) { + y = new Ctor(args[i]); + if (!y.s) { + x = y; + break; + } else if (x[ltgt](y)) { + x = y; + } + } + + return x; + } + + + /* + * Return a new Decimal whose value is the natural exponential of `x` rounded to `sd` significant + * digits. + * + * Taylor/Maclaurin series. + * + * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ... + * + * Argument reduction: + * Repeat x = x / 32, k += 5, until |x| < 0.1 + * exp(x) = exp(x / 2^k)^(2^k) + * + * Previously, the argument was initially reduced by + * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10) + * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was + * found to be slower than just dividing repeatedly by 32 as above. + * + * Max integer argument: exp('20723265836946413') = 6.3e+9000000000000000 + * Min integer argument: exp('-20723265836946411') = 1.2e-9000000000000000 + * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324) + * + * exp(Infinity) = Infinity + * exp(-Infinity) = 0 + * exp(NaN) = NaN + * exp(±0) = 1 + * + * exp(x) is non-terminating for any finite, non-zero x. + * + * The result will always be correctly rounded. + * + */ + function naturalExponential(x, sd) { + var denominator, guard, j, pow, sum, t, wpr, + rep = 0, + i = 0, + k = 0, + Ctor = x.constructor, + rm = Ctor.rounding, + pr = Ctor.precision; + + // 0/NaN/Infinity? + if (!x.d || !x.d[0] || x.e > 17) { + + return new Ctor(x.d + ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0 + : x.s ? x.s < 0 ? 0 : x : 0 / 0); + } + + if (sd == null) { + external = false; + wpr = pr; + } else { + wpr = sd; + } + + t = new Ctor(0.03125); + + // while abs(x) >= 0.1 + while (x.e > -2) { + + // x = x / 2^5 + x = x.times(t); + k += 5; + } + + // Use 2 * log10(2^k) + 5 (empirically derived) to estimate the increase in precision + // necessary to ensure the first 4 rounding digits are correct. + guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0; + wpr += guard; + denominator = pow = sum = new Ctor(1); + Ctor.precision = wpr; + + for (;;) { + pow = finalise(pow.times(x), wpr, 1); + denominator = denominator.times(++i); + t = sum.plus(divide(pow, denominator, wpr, 1)); + + if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) { + j = k; + while (j--) sum = finalise(sum.times(sum), wpr, 1); + + // Check to see if the first 4 rounding digits are [49]999. + // If so, repeat the summation with a higher precision, otherwise + // e.g. with precision: 18, rounding: 1 + // exp(18.404272462595034083567793919843761) = 98372560.1229999999 (should be 98372560.123) + // `wpr - guard` is the index of first rounding digit. + if (sd == null) { + + if (rep < 3 && checkRoundingDigits(sum.d, wpr - guard, rm, rep)) { + Ctor.precision = wpr += 10; + denominator = pow = t = new Ctor(1); + i = 0; + rep++; + } else { + return finalise(sum, Ctor.precision = pr, rm, external = true); + } + } else { + Ctor.precision = pr; + return sum; + } + } + + sum = t; + } + } + + + /* + * Return a new Decimal whose value is the natural logarithm of `x` rounded to `sd` significant + * digits. + * + * ln(-n) = NaN + * ln(0) = -Infinity + * ln(-0) = -Infinity + * ln(1) = 0 + * ln(Infinity) = Infinity + * ln(-Infinity) = NaN + * ln(NaN) = NaN + * + * ln(n) (n != 1) is non-terminating. + * + */ + function naturalLogarithm(y, sd) { + var c, c0, denominator, e, numerator, rep, sum, t, wpr, x1, x2, + n = 1, + guard = 10, + x = y, + xd = x.d, + Ctor = x.constructor, + rm = Ctor.rounding, + pr = Ctor.precision; + + // Is x negative or Infinity, NaN, 0 or 1? + if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) { + return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x); + } + + if (sd == null) { + external = false; + wpr = pr; + } else { + wpr = sd; + } + + Ctor.precision = wpr += guard; + c = digitsToString(xd); + c0 = c.charAt(0); + + if (Math.abs(e = x.e) < 1.5e15) { + + // Argument reduction. + // The series converges faster the closer the argument is to 1, so using + // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b + // multiply the argument by itself until the leading digits of the significand are 7, 8, 9, + // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can + // later be divided by this number, then separate out the power of 10 using + // ln(a*10^b) = ln(a) + b*ln(10). + + // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14). + //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) { + // max n is 6 (gives 0.7 - 1.3) + while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) { + x = x.times(y); + c = digitsToString(x.d); + c0 = c.charAt(0); + n++; + } + + e = x.e; + + if (c0 > 1) { + x = new Ctor('0.' + c); + e++; + } else { + x = new Ctor(c0 + '.' + c.slice(1)); + } + } else { + + // The argument reduction method above may result in overflow if the argument y is a massive + // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this + // function using ln(x*10^e) = ln(x) + e*ln(10). + t = getLn10(Ctor, wpr + 2, pr).times(e + ''); + x = naturalLogarithm(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t); + Ctor.precision = pr; + + return sd == null ? finalise(x, pr, rm, external = true) : x; + } + + // x1 is x reduced to a value near 1. + x1 = x; + + // Taylor series. + // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...) + // where x = (y - 1)/(y + 1) (|x| < 1) + sum = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1); + x2 = finalise(x.times(x), wpr, 1); + denominator = 3; + + for (;;) { + numerator = finalise(numerator.times(x2), wpr, 1); + t = sum.plus(divide(numerator, new Ctor(denominator), wpr, 1)); + + if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) { + sum = sum.times(2); + + // Reverse the argument reduction. Check that e is not 0 because, besides preventing an + // unnecessary calculation, -0 + 0 = +0 and to ensure correct rounding -0 needs to stay -0. + if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + '')); + sum = divide(sum, new Ctor(n), wpr, 1); + + // Is rm > 3 and the first 4 rounding digits 4999, or rm < 4 (or the summation has + // been repeated previously) and the first 4 rounding digits 9999? + // If so, restart the summation with a higher precision, otherwise + // e.g. with precision: 12, rounding: 1 + // ln(135520028.6126091714265381533) = 18.7246299999 when it should be 18.72463. + // `wpr - guard` is the index of first rounding digit. + if (sd == null) { + if (checkRoundingDigits(sum.d, wpr - guard, rm, rep)) { + Ctor.precision = wpr += guard; + t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1); + x2 = finalise(x.times(x), wpr, 1); + denominator = rep = 1; + } else { + return finalise(sum, Ctor.precision = pr, rm, external = true); + } + } else { + Ctor.precision = pr; + return sum; + } + } + + sum = t; + denominator += 2; + } + } + + + // ±Infinity, NaN. + function nonFiniteToString(x) { + // Unsigned. + return String(x.s * x.s / 0); + } + + + /* + * Parse the value of a new Decimal `x` from string `str`. + */ + function parseDecimal(x, str) { + var e, i, len; + + // Decimal point? + if ((e = str.indexOf('.')) > -1) str = str.replace('.', ''); + + // Exponential form? + if ((i = str.search(/e/i)) > 0) { + + // Determine exponent. + if (e < 0) e = i; + e += +str.slice(i + 1); + str = str.substring(0, i); + } else if (e < 0) { + + // Integer. + e = str.length; + } + + // Determine leading zeros. + for (i = 0; str.charCodeAt(i) === 48; i++); + + // Determine trailing zeros. + for (len = str.length; str.charCodeAt(len - 1) === 48; --len); + str = str.slice(i, len); + + if (str) { + len -= i; + x.e = e = e - i - 1; + x.d = []; + + // Transform base + + // e is the base 10 exponent. + // i is where to slice str to get the first word of the digits array. + i = (e + 1) % LOG_BASE; + if (e < 0) i += LOG_BASE; + + if (i < len) { + if (i) x.d.push(+str.slice(0, i)); + for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE)); + str = str.slice(i); + i = LOG_BASE - str.length; + } else { + i -= len; + } + + for (; i--;) str += '0'; + x.d.push(+str); + + if (external) { + + // Overflow? + if (x.e > x.constructor.maxE) { + + // Infinity. + x.d = null; + x.e = NaN; + + // Underflow? + } else if (x.e < x.constructor.minE) { + + // Zero. + x.e = 0; + x.d = [0]; + // x.constructor.underflow = true; + } // else x.constructor.underflow = false; + } + } else { + + // Zero. + x.e = 0; + x.d = [0]; + } + + return x; + } + + + /* + * Parse the value of a new Decimal `x` from a string `str`, which is not a decimal value. + */ + function parseOther(x, str) { + var base, Ctor, divisor, i, isFloat, len, p, xd, xe; + + if (str.indexOf('_') > -1) { + str = str.replace(/(\d)_(?=\d)/g, '$1'); + if (isDecimal.test(str)) return parseDecimal(x, str); + } else if (str === 'Infinity' || str === 'NaN') { + if (!+str) x.s = NaN; + x.e = NaN; + x.d = null; + return x; + } + + if (isHex.test(str)) { + base = 16; + str = str.toLowerCase(); + } else if (isBinary.test(str)) { + base = 2; + } else if (isOctal.test(str)) { + base = 8; + } else { + throw Error(invalidArgument + str); + } + + // Is there a binary exponent part? + i = str.search(/p/i); + + if (i > 0) { + p = +str.slice(i + 1); + str = str.substring(2, i); + } else { + str = str.slice(2); + } + + // Convert `str` as an integer then divide the result by `base` raised to a power such that the + // fraction part will be restored. + i = str.indexOf('.'); + isFloat = i >= 0; + Ctor = x.constructor; + + if (isFloat) { + str = str.replace('.', ''); + len = str.length; + i = len - i; + + // log[10](16) = 1.2041... , log[10](88) = 1.9444.... + divisor = intPow(Ctor, new Ctor(base), i, i * 2); + } + + xd = convertBase(str, base, BASE); + xe = xd.length - 1; + + // Remove trailing zeros. + for (i = xe; xd[i] === 0; --i) xd.pop(); + if (i < 0) return new Ctor(x.s * 0); + x.e = getBase10Exponent(xd, xe); + x.d = xd; + external = false; + + // At what precision to perform the division to ensure exact conversion? + // maxDecimalIntegerPartDigitCount = ceil(log[10](b) * otherBaseIntegerPartDigitCount) + // log[10](2) = 0.30103, log[10](8) = 0.90309, log[10](16) = 1.20412 + // E.g. ceil(1.2 * 3) = 4, so up to 4 decimal digits are needed to represent 3 hex int digits. + // maxDecimalFractionPartDigitCount = {Hex:4|Oct:3|Bin:1} * otherBaseFractionPartDigitCount + // Therefore using 4 * the number of digits of str will always be enough. + if (isFloat) x = divide(x, divisor, len * 4); + + // Multiply by the binary exponent part if present. + if (p) x = x.times(Math.abs(p) < 54 ? mathpow(2, p) : Decimal.pow(2, p)); + external = true; + + return x; + } + + + /* + * sin(x) = x - x^3/3! + x^5/5! - ... + * |x| < pi/2 + * + */ + function sine(Ctor, x) { + var k, + len = x.d.length; + + if (len < 3) { + return x.isZero() ? x : taylorSeries(Ctor, 2, x, x); + } + + // Argument reduction: sin(5x) = 16*sin^5(x) - 20*sin^3(x) + 5*sin(x) + // i.e. sin(x) = 16*sin^5(x/5) - 20*sin^3(x/5) + 5*sin(x/5) + // and sin(x) = sin(x/5)(5 + sin^2(x/5)(16sin^2(x/5) - 20)) + + // Estimate the optimum number of times to use the argument reduction. + k = 1.4 * Math.sqrt(len); + k = k > 16 ? 16 : k | 0; + + x = x.times(1 / tinyPow(5, k)); + x = taylorSeries(Ctor, 2, x, x); + + // Reverse argument reduction + var sin2_x, + d5 = new Ctor(5), + d16 = new Ctor(16), + d20 = new Ctor(20); + for (; k--;) { + sin2_x = x.times(x); + x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20)))); + } + + return x; + } + + + // Calculate Taylor series for `cos`, `cosh`, `sin` and `sinh`. + function taylorSeries(Ctor, n, x, y, isHyperbolic) { + var j, t, u, x2, + pr = Ctor.precision, + k = Math.ceil(pr / LOG_BASE); + + external = false; + x2 = x.times(x); + u = new Ctor(y); + + for (;;) { + t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1); + u = isHyperbolic ? y.plus(t) : y.minus(t); + y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1); + t = u.plus(y); + + if (t.d[k] !== void 0) { + for (j = k; t.d[j] === u.d[j] && j--;); + if (j == -1) break; + } + + j = u; + u = y; + y = t; + t = j; + } + + external = true; + t.d.length = k + 1; + + return t; + } + + + // Exponent e must be positive and non-zero. + function tinyPow(b, e) { + var n = b; + while (--e) n *= b; + return n; + } + + + // Return the absolute value of `x` reduced to less than or equal to half pi. + function toLessThanHalfPi(Ctor, x) { + var t, + isNeg = x.s < 0, + pi = getPi(Ctor, Ctor.precision, 1), + halfPi = pi.times(0.5); + + x = x.abs(); + + if (x.lte(halfPi)) { + quadrant = isNeg ? 4 : 1; + return x; + } + + t = x.divToInt(pi); + + if (t.isZero()) { + quadrant = isNeg ? 3 : 2; + } else { + x = x.minus(t.times(pi)); + + // 0 <= x < pi + if (x.lte(halfPi)) { + quadrant = isOdd(t) ? (isNeg ? 2 : 3) : (isNeg ? 4 : 1); + return x; + } + + quadrant = isOdd(t) ? (isNeg ? 1 : 4) : (isNeg ? 3 : 2); + } + + return x.minus(pi).abs(); + } + + + /* + * Return the value of Decimal `x` as a string in base `baseOut`. + * + * If the optional `sd` argument is present include a binary exponent suffix. + */ + function toStringBinary(x, baseOut, sd, rm) { + var base, e, i, k, len, roundUp, str, xd, y, + Ctor = x.constructor, + isExp = sd !== void 0; + + if (isExp) { + checkInt32(sd, 1, MAX_DIGITS); + if (rm === void 0) rm = Ctor.rounding; + else checkInt32(rm, 0, 8); + } else { + sd = Ctor.precision; + rm = Ctor.rounding; + } + + if (!x.isFinite()) { + str = nonFiniteToString(x); + } else { + str = finiteToString(x); + i = str.indexOf('.'); + + // Use exponential notation according to `toExpPos` and `toExpNeg`? No, but if required: + // maxBinaryExponent = floor((decimalExponent + 1) * log[2](10)) + // minBinaryExponent = floor(decimalExponent * log[2](10)) + // log[2](10) = 3.321928094887362347870319429489390175864 + + if (isExp) { + base = 2; + if (baseOut == 16) { + sd = sd * 4 - 3; + } else if (baseOut == 8) { + sd = sd * 3 - 2; + } + } else { + base = baseOut; + } + + // Convert the number as an integer then divide the result by its base raised to a power such + // that the fraction part will be restored. + + // Non-integer. + if (i >= 0) { + str = str.replace('.', ''); + y = new Ctor(1); + y.e = str.length - i; + y.d = convertBase(finiteToString(y), 10, base); + y.e = y.d.length; + } + + xd = convertBase(str, 10, base); + e = len = xd.length; + + // Remove trailing zeros. + for (; xd[--len] == 0;) xd.pop(); + + if (!xd[0]) { + str = isExp ? '0p+0' : '0'; + } else { + if (i < 0) { + e--; + } else { + x = new Ctor(x); + x.d = xd; + x.e = e; + x = divide(x, y, sd, rm, 0, base); + xd = x.d; + e = x.e; + roundUp = inexact; + } + + // The rounding digit, i.e. the digit after the digit that may be rounded up. + i = xd[sd]; + k = base / 2; + roundUp = roundUp || xd[sd + 1] !== void 0; + + roundUp = rm < 4 + ? (i !== void 0 || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2)) + : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 || + rm === (x.s < 0 ? 8 : 7)); + + xd.length = sd; + + if (roundUp) { + + // Rounding up may mean the previous digit has to be rounded up and so on. + for (; ++xd[--sd] > base - 1;) { + xd[sd] = 0; + if (!sd) { + ++e; + xd.unshift(1); + } + } + } + + // Determine trailing zeros. + for (len = xd.length; !xd[len - 1]; --len); + + // E.g. [4, 11, 15] becomes 4bf. + for (i = 0, str = ''; i < len; i++) str += NUMERALS.charAt(xd[i]); + + // Add binary exponent suffix? + if (isExp) { + if (len > 1) { + if (baseOut == 16 || baseOut == 8) { + i = baseOut == 16 ? 4 : 3; + for (--len; len % i; len++) str += '0'; + xd = convertBase(str, base, baseOut); + for (len = xd.length; !xd[len - 1]; --len); + + // xd[0] will always be be 1 + for (i = 1, str = '1.'; i < len; i++) str += NUMERALS.charAt(xd[i]); + } else { + str = str.charAt(0) + '.' + str.slice(1); + } + } + + str = str + (e < 0 ? 'p' : 'p+') + e; + } else if (e < 0) { + for (; ++e;) str = '0' + str; + str = '0.' + str; + } else { + if (++e > len) for (e -= len; e-- ;) str += '0'; + else if (e < len) str = str.slice(0, e) + '.' + str.slice(e); + } + } + + str = (baseOut == 16 ? '0x' : baseOut == 2 ? '0b' : baseOut == 8 ? '0o' : '') + str; + } + + return x.s < 0 ? '-' + str : str; + } + + + // Does not strip trailing zeros. + function truncate(arr, len) { + if (arr.length > len) { + arr.length = len; + return true; + } + } + + + // Decimal methods + + + /* + * abs + * acos + * acosh + * add + * asin + * asinh + * atan + * atanh + * atan2 + * cbrt + * ceil + * clamp + * clone + * config + * cos + * cosh + * div + * exp + * floor + * hypot + * ln + * log + * log2 + * log10 + * max + * min + * mod + * mul + * pow + * random + * round + * set + * sign + * sin + * sinh + * sqrt + * sub + * sum + * tan + * tanh + * trunc + */ + + + /* + * Return a new Decimal whose value is the absolute value of `x`. + * + * x {number|string|Decimal} + * + */ + function abs(x) { + return new this(x).abs(); + } + + + /* + * Return a new Decimal whose value is the arccosine in radians of `x`. + * + * x {number|string|Decimal} + * + */ + function acos(x) { + return new this(x).acos(); + } + + + /* + * Return a new Decimal whose value is the inverse of the hyperbolic cosine of `x`, rounded to + * `precision` significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function acosh(x) { + return new this(x).acosh(); + } + + + /* + * Return a new Decimal whose value is the sum of `x` and `y`, rounded to `precision` significant + * digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * y {number|string|Decimal} + * + */ + function add(x, y) { + return new this(x).plus(y); + } + + + /* + * Return a new Decimal whose value is the arcsine in radians of `x`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * + */ + function asin(x) { + return new this(x).asin(); + } + + + /* + * Return a new Decimal whose value is the inverse of the hyperbolic sine of `x`, rounded to + * `precision` significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function asinh(x) { + return new this(x).asinh(); + } + + + /* + * Return a new Decimal whose value is the arctangent in radians of `x`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * + */ + function atan(x) { + return new this(x).atan(); + } + + + /* + * Return a new Decimal whose value is the inverse of the hyperbolic tangent of `x`, rounded to + * `precision` significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function atanh(x) { + return new this(x).atanh(); + } + + + /* + * Return a new Decimal whose value is the arctangent in radians of `y/x` in the range -pi to pi + * (inclusive), rounded to `precision` significant digits using rounding mode `rounding`. + * + * Domain: [-Infinity, Infinity] + * Range: [-pi, pi] + * + * y {number|string|Decimal} The y-coordinate. + * x {number|string|Decimal} The x-coordinate. + * + * atan2(±0, -0) = ±pi + * atan2(±0, +0) = ±0 + * atan2(±0, -x) = ±pi for x > 0 + * atan2(±0, x) = ±0 for x > 0 + * atan2(-y, ±0) = -pi/2 for y > 0 + * atan2(y, ±0) = pi/2 for y > 0 + * atan2(±y, -Infinity) = ±pi for finite y > 0 + * atan2(±y, +Infinity) = ±0 for finite y > 0 + * atan2(±Infinity, x) = ±pi/2 for finite x + * atan2(±Infinity, -Infinity) = ±3*pi/4 + * atan2(±Infinity, +Infinity) = ±pi/4 + * atan2(NaN, x) = NaN + * atan2(y, NaN) = NaN + * + */ + function atan2(y, x) { + y = new this(y); + x = new this(x); + var r, + pr = this.precision, + rm = this.rounding, + wpr = pr + 4; + + // Either NaN + if (!y.s || !x.s) { + r = new this(NaN); + + // Both ±Infinity + } else if (!y.d && !x.d) { + r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75); + r.s = y.s; + + // x is ±Infinity or y is ±0 + } else if (!x.d || y.isZero()) { + r = x.s < 0 ? getPi(this, pr, rm) : new this(0); + r.s = y.s; + + // y is ±Infinity or x is ±0 + } else if (!y.d || x.isZero()) { + r = getPi(this, wpr, 1).times(0.5); + r.s = y.s; + + // Both non-zero and finite + } else if (x.s < 0) { + this.precision = wpr; + this.rounding = 1; + r = this.atan(divide(y, x, wpr, 1)); + x = getPi(this, wpr, 1); + this.precision = pr; + this.rounding = rm; + r = y.s < 0 ? r.minus(x) : r.plus(x); + } else { + r = this.atan(divide(y, x, wpr, 1)); + } + + return r; + } + + + /* + * Return a new Decimal whose value is the cube root of `x`, rounded to `precision` significant + * digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * + */ + function cbrt(x) { + return new this(x).cbrt(); + } + + + /* + * Return a new Decimal whose value is `x` rounded to an integer using `ROUND_CEIL`. + * + * x {number|string|Decimal} + * + */ + function ceil(x) { + return finalise(x = new this(x), x.e + 1, 2); + } + + + /* + * Return a new Decimal whose value is `x` clamped to the range delineated by `min` and `max`. + * + * x {number|string|Decimal} + * min {number|string|Decimal} + * max {number|string|Decimal} + * + */ + function clamp(x, min, max) { + return new this(x).clamp(min, max); + } + + + /* + * Configure global settings for a Decimal constructor. + * + * `obj` is an object with one or more of the following properties, + * + * precision {number} + * rounding {number} + * toExpNeg {number} + * toExpPos {number} + * maxE {number} + * minE {number} + * modulo {number} + * crypto {boolean|number} + * defaults {true} + * + * E.g. Decimal.config({ precision: 20, rounding: 4 }) + * + */ + function config(obj) { + if (!obj || typeof obj !== 'object') throw Error(decimalError + 'Object expected'); + var i, p, v, + useDefaults = obj.defaults === true, + ps = [ + 'precision', 1, MAX_DIGITS, + 'rounding', 0, 8, + 'toExpNeg', -EXP_LIMIT, 0, + 'toExpPos', 0, EXP_LIMIT, + 'maxE', 0, EXP_LIMIT, + 'minE', -EXP_LIMIT, 0, + 'modulo', 0, 9 + ]; + + for (i = 0; i < ps.length; i += 3) { + if (p = ps[i], useDefaults) this[p] = DEFAULTS[p]; + if ((v = obj[p]) !== void 0) { + if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v; + else throw Error(invalidArgument + p + ': ' + v); + } + } + + if (p = 'crypto', useDefaults) this[p] = DEFAULTS[p]; + if ((v = obj[p]) !== void 0) { + if (v === true || v === false || v === 0 || v === 1) { + if (v) { + if (typeof crypto != 'undefined' && crypto && + (crypto.getRandomValues || crypto.randomBytes)) { + this[p] = true; + } else { + throw Error(cryptoUnavailable); + } + } else { + this[p] = false; + } + } else { + throw Error(invalidArgument + p + ': ' + v); + } + } + + return this; + } + + + /* + * Return a new Decimal whose value is the cosine of `x`, rounded to `precision` significant + * digits using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function cos(x) { + return new this(x).cos(); + } + + + /* + * Return a new Decimal whose value is the hyperbolic cosine of `x`, rounded to precision + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function cosh(x) { + return new this(x).cosh(); + } + + + /* + * Create and return a Decimal constructor with the same configuration properties as this Decimal + * constructor. + * + */ + function clone(obj) { + var i, p, ps; + + /* + * The Decimal constructor and exported function. + * Return a new Decimal instance. + * + * v {number|string|Decimal} A numeric value. + * + */ + function Decimal(v) { + var e, i, t, + x = this; + + // Decimal called without new. + if (!(x instanceof Decimal)) return new Decimal(v); + + // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor + // which points to Object. + x.constructor = Decimal; + + // Duplicate. + if (isDecimalInstance(v)) { + x.s = v.s; + + if (external) { + if (!v.d || v.e > Decimal.maxE) { + + // Infinity. + x.e = NaN; + x.d = null; + } else if (v.e < Decimal.minE) { + + // Zero. + x.e = 0; + x.d = [0]; + } else { + x.e = v.e; + x.d = v.d.slice(); + } + } else { + x.e = v.e; + x.d = v.d ? v.d.slice() : v.d; + } + + return; + } + + t = typeof v; + + if (t === 'number') { + if (v === 0) { + x.s = 1 / v < 0 ? -1 : 1; + x.e = 0; + x.d = [0]; + return; + } + + if (v < 0) { + v = -v; + x.s = -1; + } else { + x.s = 1; + } + + // Fast path for small integers. + if (v === ~~v && v < 1e7) { + for (e = 0, i = v; i >= 10; i /= 10) e++; + + if (external) { + if (e > Decimal.maxE) { + x.e = NaN; + x.d = null; + } else if (e < Decimal.minE) { + x.e = 0; + x.d = [0]; + } else { + x.e = e; + x.d = [v]; + } + } else { + x.e = e; + x.d = [v]; + } + + return; + + // Infinity, NaN. + } else if (v * 0 !== 0) { + if (!v) x.s = NaN; + x.e = NaN; + x.d = null; + return; + } + + return parseDecimal(x, v.toString()); + + } else if (t !== 'string') { + throw Error(invalidArgument + v); + } + + // Minus sign? + if ((i = v.charCodeAt(0)) === 45) { + v = v.slice(1); + x.s = -1; + } else { + // Plus sign? + if (i === 43) v = v.slice(1); + x.s = 1; + } + + return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v); + } + + Decimal.prototype = P; + + Decimal.ROUND_UP = 0; + Decimal.ROUND_DOWN = 1; + Decimal.ROUND_CEIL = 2; + Decimal.ROUND_FLOOR = 3; + Decimal.ROUND_HALF_UP = 4; + Decimal.ROUND_HALF_DOWN = 5; + Decimal.ROUND_HALF_EVEN = 6; + Decimal.ROUND_HALF_CEIL = 7; + Decimal.ROUND_HALF_FLOOR = 8; + Decimal.EUCLID = 9; + + Decimal.config = Decimal.set = config; + Decimal.clone = clone; + Decimal.isDecimal = isDecimalInstance; + + Decimal.abs = abs; + Decimal.acos = acos; + Decimal.acosh = acosh; // ES6 + Decimal.add = add; + Decimal.asin = asin; + Decimal.asinh = asinh; // ES6 + Decimal.atan = atan; + Decimal.atanh = atanh; // ES6 + Decimal.atan2 = atan2; + Decimal.cbrt = cbrt; // ES6 + Decimal.ceil = ceil; + Decimal.clamp = clamp; + Decimal.cos = cos; + Decimal.cosh = cosh; // ES6 + Decimal.div = div; + Decimal.exp = exp; + Decimal.floor = floor; + Decimal.hypot = hypot; // ES6 + Decimal.ln = ln; + Decimal.log = log; + Decimal.log10 = log10; // ES6 + Decimal.log2 = log2; // ES6 + Decimal.max = max; + Decimal.min = min; + Decimal.mod = mod; + Decimal.mul = mul; + Decimal.pow = pow; + Decimal.random = random; + Decimal.round = round; + Decimal.sign = sign; // ES6 + Decimal.sin = sin; + Decimal.sinh = sinh; // ES6 + Decimal.sqrt = sqrt; + Decimal.sub = sub; + Decimal.sum = sum; + Decimal.tan = tan; + Decimal.tanh = tanh; // ES6 + Decimal.trunc = trunc; // ES6 + + if (obj === void 0) obj = {}; + if (obj) { + if (obj.defaults !== true) { + ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'maxE', 'minE', 'modulo', 'crypto']; + for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p]; + } + } + + Decimal.config(obj); + + return Decimal; + } + + + /* + * Return a new Decimal whose value is `x` divided by `y`, rounded to `precision` significant + * digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * y {number|string|Decimal} + * + */ + function div(x, y) { + return new this(x).div(y); + } + + + /* + * Return a new Decimal whose value is the natural exponential of `x`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} The power to which to raise the base of the natural log. + * + */ + function exp(x) { + return new this(x).exp(); + } + + + /* + * Return a new Decimal whose value is `x` round to an integer using `ROUND_FLOOR`. + * + * x {number|string|Decimal} + * + */ + function floor(x) { + return finalise(x = new this(x), x.e + 1, 3); + } + + + /* + * Return a new Decimal whose value is the square root of the sum of the squares of the arguments, + * rounded to `precision` significant digits using rounding mode `rounding`. + * + * hypot(a, b, ...) = sqrt(a^2 + b^2 + ...) + * + * arguments {number|string|Decimal} + * + */ + function hypot() { + var i, n, + t = new this(0); + + external = false; + + for (i = 0; i < arguments.length;) { + n = new this(arguments[i++]); + if (!n.d) { + if (n.s) { + external = true; + return new this(1 / 0); + } + t = n; + } else if (t.d) { + t = t.plus(n.times(n)); + } + } + + external = true; + + return t.sqrt(); + } + + + /* + * Return true if object is a Decimal instance (where Decimal is any Decimal constructor), + * otherwise return false. + * + */ + function isDecimalInstance(obj) { + return obj instanceof Decimal || obj && obj.toStringTag === tag || false; + } + + + /* + * Return a new Decimal whose value is the natural logarithm of `x`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * + */ + function ln(x) { + return new this(x).ln(); + } + + + /* + * Return a new Decimal whose value is the log of `x` to the base `y`, or to base 10 if no base + * is specified, rounded to `precision` significant digits using rounding mode `rounding`. + * + * log[y](x) + * + * x {number|string|Decimal} The argument of the logarithm. + * y {number|string|Decimal} The base of the logarithm. + * + */ + function log(x, y) { + return new this(x).log(y); + } + + + /* + * Return a new Decimal whose value is the base 2 logarithm of `x`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * + */ + function log2(x) { + return new this(x).log(2); + } + + + /* + * Return a new Decimal whose value is the base 10 logarithm of `x`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * + */ + function log10(x) { + return new this(x).log(10); + } + + + /* + * Return a new Decimal whose value is the maximum of the arguments. + * + * arguments {number|string|Decimal} + * + */ + function max() { + return maxOrMin(this, arguments, 'lt'); + } + + + /* + * Return a new Decimal whose value is the minimum of the arguments. + * + * arguments {number|string|Decimal} + * + */ + function min() { + return maxOrMin(this, arguments, 'gt'); + } + + + /* + * Return a new Decimal whose value is `x` modulo `y`, rounded to `precision` significant digits + * using rounding mode `rounding`. + * + * x {number|string|Decimal} + * y {number|string|Decimal} + * + */ + function mod(x, y) { + return new this(x).mod(y); + } + + + /* + * Return a new Decimal whose value is `x` multiplied by `y`, rounded to `precision` significant + * digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * y {number|string|Decimal} + * + */ + function mul(x, y) { + return new this(x).mul(y); + } + + + /* + * Return a new Decimal whose value is `x` raised to the power `y`, rounded to precision + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} The base. + * y {number|string|Decimal} The exponent. + * + */ + function pow(x, y) { + return new this(x).pow(y); + } + + + /* + * Returns a new Decimal with a random value equal to or greater than 0 and less than 1, and with + * `sd`, or `Decimal.precision` if `sd` is omitted, significant digits (or less if trailing zeros + * are produced). + * + * [sd] {number} Significant digits. Integer, 0 to MAX_DIGITS inclusive. + * + */ + function random(sd) { + var d, e, k, n, + i = 0, + r = new this(1), + rd = []; + + if (sd === void 0) sd = this.precision; + else checkInt32(sd, 1, MAX_DIGITS); + + k = Math.ceil(sd / LOG_BASE); + + if (!this.crypto) { + for (; i < k;) rd[i++] = Math.random() * 1e7 | 0; + + // Browsers supporting crypto.getRandomValues. + } else if (crypto.getRandomValues) { + d = crypto.getRandomValues(new Uint32Array(k)); + + for (; i < k;) { + n = d[i]; + + // 0 <= n < 4294967296 + // Probability n >= 4.29e9, is 4967296 / 4294967296 = 0.00116 (1 in 865). + if (n >= 4.29e9) { + d[i] = crypto.getRandomValues(new Uint32Array(1))[0]; + } else { + + // 0 <= n <= 4289999999 + // 0 <= (n % 1e7) <= 9999999 + rd[i++] = n % 1e7; + } + } + + // Node.js supporting crypto.randomBytes. + } else if (crypto.randomBytes) { + + // buffer + d = crypto.randomBytes(k *= 4); + + for (; i < k;) { + + // 0 <= n < 2147483648 + n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 0x7f) << 24); + + // Probability n >= 2.14e9, is 7483648 / 2147483648 = 0.0035 (1 in 286). + if (n >= 2.14e9) { + crypto.randomBytes(4).copy(d, i); + } else { + + // 0 <= n <= 2139999999 + // 0 <= (n % 1e7) <= 9999999 + rd.push(n % 1e7); + i += 4; + } + } + + i = k / 4; + } else { + throw Error(cryptoUnavailable); + } + + k = rd[--i]; + sd %= LOG_BASE; + + // Convert trailing digits to zeros according to sd. + if (k && sd) { + n = mathpow(10, LOG_BASE - sd); + rd[i] = (k / n | 0) * n; + } + + // Remove trailing words which are zero. + for (; rd[i] === 0; i--) rd.pop(); + + // Zero? + if (i < 0) { + e = 0; + rd = [0]; + } else { + e = -1; + + // Remove leading words which are zero and adjust exponent accordingly. + for (; rd[0] === 0; e -= LOG_BASE) rd.shift(); + + // Count the digits of the first word of rd to determine leading zeros. + for (k = 1, n = rd[0]; n >= 10; n /= 10) k++; + + // Adjust the exponent for leading zeros of the first word of rd. + if (k < LOG_BASE) e -= LOG_BASE - k; + } + + r.e = e; + r.d = rd; + + return r; + } + + + /* + * Return a new Decimal whose value is `x` rounded to an integer using rounding mode `rounding`. + * + * To emulate `Math.round`, set rounding to 7 (ROUND_HALF_CEIL). + * + * x {number|string|Decimal} + * + */ + function round(x) { + return finalise(x = new this(x), x.e + 1, this.rounding); + } + + + /* + * Return + * 1 if x > 0, + * -1 if x < 0, + * 0 if x is 0, + * -0 if x is -0, + * NaN otherwise + * + * x {number|string|Decimal} + * + */ + function sign(x) { + x = new this(x); + return x.d ? (x.d[0] ? x.s : 0 * x.s) : x.s || NaN; + } + + + /* + * Return a new Decimal whose value is the sine of `x`, rounded to `precision` significant digits + * using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function sin(x) { + return new this(x).sin(); + } + + + /* + * Return a new Decimal whose value is the hyperbolic sine of `x`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function sinh(x) { + return new this(x).sinh(); + } + + + /* + * Return a new Decimal whose value is the square root of `x`, rounded to `precision` significant + * digits using rounding mode `rounding`. + * + * x {number|string|Decimal} + * + */ + function sqrt(x) { + return new this(x).sqrt(); + } + + + /* + * Return a new Decimal whose value is `x` minus `y`, rounded to `precision` significant digits + * using rounding mode `rounding`. + * + * x {number|string|Decimal} + * y {number|string|Decimal} + * + */ + function sub(x, y) { + return new this(x).sub(y); + } + + + /* + * Return a new Decimal whose value is the sum of the arguments, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * Only the result is rounded, not the intermediate calculations. + * + * arguments {number|string|Decimal} + * + */ + function sum() { + var i = 0, + args = arguments, + x = new this(args[i]); + + external = false; + for (; x.s && ++i < args.length;) x = x.plus(args[i]); + external = true; + + return finalise(x, this.precision, this.rounding); + } + + + /* + * Return a new Decimal whose value is the tangent of `x`, rounded to `precision` significant + * digits using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function tan(x) { + return new this(x).tan(); + } + + + /* + * Return a new Decimal whose value is the hyperbolic tangent of `x`, rounded to `precision` + * significant digits using rounding mode `rounding`. + * + * x {number|string|Decimal} A value in radians. + * + */ + function tanh(x) { + return new this(x).tanh(); + } + + + /* + * Return a new Decimal whose value is `x` truncated to an integer. + * + * x {number|string|Decimal} + * + */ + function trunc(x) { + return finalise(x = new this(x), x.e + 1, 1); + } + + + // Create and configure initial Decimal constructor. + Decimal = clone(DEFAULTS); + Decimal.prototype.constructor = Decimal; + Decimal['default'] = Decimal.Decimal = Decimal; + + // Create the internal constants from their string values. + LN10 = new Decimal(LN10); + PI = new Decimal(PI); + + + // Export. + + + // AMD. + if (module.exports) { + if (typeof Symbol == 'function' && typeof Symbol.iterator == 'symbol') { + P[Symbol['for']('nodejs.util.inspect.custom')] = P.toString; + P[Symbol.toStringTag] = 'Decimal'; + } + + module.exports = Decimal; + + // Browser. + } else { + if (!globalScope) { + globalScope = typeof self != 'undefined' && self && self.self == self ? self : window; + } + + noConflict = globalScope.Decimal; + Decimal.noConflict = function () { + globalScope.Decimal = noConflict; + return Decimal; + }; + + globalScope.Decimal = Decimal; + } + })(commonjsGlobal); +} (decimal)); + +var decimalExports = decimal.exports; + +var lodash = {exports: {}}; + +/** + * @license + * Lodash <https://lodash.com/> + * Copyright OpenJS Foundation and other contributors <https://openjsf.org/> + * Released under MIT license <https://lodash.com/license> + * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE> + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ +lodash.exports; + +(function (module, exports) { (function() { - /** Used as a safe reference for `undefined` in pre-ES5 environments. */ - var undefined$1; - - /** Used as the semantic version number. */ - var VERSION = '4.17.20'; - - /** Used as the size to enable large array optimizations. */ - var LARGE_ARRAY_SIZE = 200; - - /** Error message constants. */ - var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.', - FUNC_ERROR_TEXT = 'Expected a function'; - - /** Used to stand-in for `undefined` hash values. */ - var HASH_UNDEFINED = '__lodash_hash_undefined__'; - - /** Used as the maximum memoize cache size. */ - var MAX_MEMOIZE_SIZE = 500; - - /** Used as the internal argument placeholder. */ - var PLACEHOLDER = '__lodash_placeholder__'; - - /** Used to compose bitmasks for cloning. */ - var CLONE_DEEP_FLAG = 1, - CLONE_FLAT_FLAG = 2, - CLONE_SYMBOLS_FLAG = 4; - - /** Used to compose bitmasks for value comparisons. */ - var COMPARE_PARTIAL_FLAG = 1, - COMPARE_UNORDERED_FLAG = 2; - - /** Used to compose bitmasks for function metadata. */ - var WRAP_BIND_FLAG = 1, - WRAP_BIND_KEY_FLAG = 2, - WRAP_CURRY_BOUND_FLAG = 4, - WRAP_CURRY_FLAG = 8, - WRAP_CURRY_RIGHT_FLAG = 16, - WRAP_PARTIAL_FLAG = 32, - WRAP_PARTIAL_RIGHT_FLAG = 64, - WRAP_ARY_FLAG = 128, - WRAP_REARG_FLAG = 256, - WRAP_FLIP_FLAG = 512; - - /** Used as default options for `_.truncate`. */ - var DEFAULT_TRUNC_LENGTH = 30, - DEFAULT_TRUNC_OMISSION = '...'; - - /** Used to detect hot functions by number of calls within a span of milliseconds. */ - var HOT_COUNT = 800, - HOT_SPAN = 16; - - /** Used to indicate the type of lazy iteratees. */ - var LAZY_FILTER_FLAG = 1, - LAZY_MAP_FLAG = 2, - LAZY_WHILE_FLAG = 3; - - /** Used as references for various `Number` constants. */ - var INFINITY = 1 / 0, - MAX_SAFE_INTEGER = 9007199254740991, - MAX_INTEGER = 1.7976931348623157e+308, - NAN = 0 / 0; - - /** Used as references for the maximum length and index of an array. */ - var MAX_ARRAY_LENGTH = 4294967295, - MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, - HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; - - /** Used to associate wrap methods with their bit flags. */ - var wrapFlags = [ - ['ary', WRAP_ARY_FLAG], - ['bind', WRAP_BIND_FLAG], - ['bindKey', WRAP_BIND_KEY_FLAG], - ['curry', WRAP_CURRY_FLAG], - ['curryRight', WRAP_CURRY_RIGHT_FLAG], - ['flip', WRAP_FLIP_FLAG], - ['partial', WRAP_PARTIAL_FLAG], - ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], - ['rearg', WRAP_REARG_FLAG] - ]; - - /** `Object#toString` result references. */ - var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - asyncTag = '[object AsyncFunction]', - boolTag = '[object Boolean]', - dateTag = '[object Date]', - domExcTag = '[object DOMException]', - errorTag = '[object Error]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - mapTag = '[object Map]', - numberTag = '[object Number]', - nullTag = '[object Null]', - objectTag = '[object Object]', - promiseTag = '[object Promise]', - proxyTag = '[object Proxy]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - symbolTag = '[object Symbol]', - undefinedTag = '[object Undefined]', - weakMapTag = '[object WeakMap]', - weakSetTag = '[object WeakSet]'; - - var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]', - float32Tag = '[object Float32Array]', - float64Tag = '[object Float64Array]', - int8Tag = '[object Int8Array]', - int16Tag = '[object Int16Array]', - int32Tag = '[object Int32Array]', - uint8Tag = '[object Uint8Array]', - uint8ClampedTag = '[object Uint8ClampedArray]', - uint16Tag = '[object Uint16Array]', - uint32Tag = '[object Uint32Array]'; - - /** Used to match empty string literals in compiled template source. */ - var reEmptyStringLeading = /\b__p \+= '';/g, - reEmptyStringMiddle = /\b(__p \+=) '' \+/g, - reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; - - /** Used to match HTML entities and HTML characters. */ - var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, - reUnescapedHtml = /[&<>"']/g, - reHasEscapedHtml = RegExp(reEscapedHtml.source), - reHasUnescapedHtml = RegExp(reUnescapedHtml.source); - - /** Used to match template delimiters. */ - var reEscape = /<%-([\s\S]+?)%>/g, - reEvaluate = /<%([\s\S]+?)%>/g, - reInterpolate = /<%=([\s\S]+?)%>/g; - - /** Used to match property names within property paths. */ - var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, - reIsPlainProp = /^\w*$/, - rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; - - /** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ - var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, - reHasRegExpChar = RegExp(reRegExpChar.source); - - /** Used to match leading and trailing whitespace. */ - var reTrim = /^\s+|\s+$/g, - reTrimStart = /^\s+/, - reTrimEnd = /\s+$/; - - /** Used to match wrap detail comments. */ - var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, - reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, - reSplitDetails = /,? & /; - - /** Used to match words composed of alphanumeric characters. */ - var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; - - /** Used to match backslashes in property paths. */ - var reEscapeChar = /\\(\\)?/g; - - /** - * Used to match - * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components). - */ - var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; - - /** Used to match `RegExp` flags from their coerced string values. */ - var reFlags = /\w*$/; - - /** Used to detect bad signed hexadecimal string values. */ - var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; - - /** Used to detect binary string values. */ - var reIsBinary = /^0b[01]+$/i; - - /** Used to detect host constructors (Safari). */ - var reIsHostCtor = /^\[object .+?Constructor\]$/; - - /** Used to detect octal string values. */ - var reIsOctal = /^0o[0-7]+$/i; - - /** Used to detect unsigned integer values. */ - var reIsUint = /^(?:0|[1-9]\d*)$/; - - /** Used to match Latin Unicode letters (excluding mathematical operators). */ - var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; - - /** Used to ensure capturing order of template delimiters. */ - var reNoMatch = /($^)/; - - /** Used to match unescaped characters in compiled string literals. */ - var reUnescapedString = /['\n\r\u2028\u2029\\]/g; - - /** Used to compose unicode character classes. */ - var rsAstralRange = '\\ud800-\\udfff', - rsComboMarksRange = '\\u0300-\\u036f', - reComboHalfMarksRange = '\\ufe20-\\ufe2f', - rsComboSymbolsRange = '\\u20d0-\\u20ff', - rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, - rsDingbatRange = '\\u2700-\\u27bf', - rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', - rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', - rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', - rsPunctuationRange = '\\u2000-\\u206f', - rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', - rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', - rsVarRange = '\\ufe0e\\ufe0f', - rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; - - /** Used to compose unicode capture groups. */ - var rsApos = "['\u2019]", - rsAstral = '[' + rsAstralRange + ']', - rsBreak = '[' + rsBreakRange + ']', - rsCombo = '[' + rsComboRange + ']', - rsDigits = '\\d+', - rsDingbat = '[' + rsDingbatRange + ']', - rsLower = '[' + rsLowerRange + ']', - rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', - rsFitz = '\\ud83c[\\udffb-\\udfff]', - rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', - rsNonAstral = '[^' + rsAstralRange + ']', - rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', - rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', - rsUpper = '[' + rsUpperRange + ']', - rsZWJ = '\\u200d'; - - /** Used to compose unicode regexes. */ - var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')', - rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')', - rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?', - rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?', - reOptMod = rsModifier + '?', - rsOptVar = '[' + rsVarRange + ']?', - rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', - rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])', - rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])', - rsSeq = rsOptVar + reOptMod + rsOptJoin, - rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq, - rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; - - /** Used to match apostrophes. */ - var reApos = RegExp(rsApos, 'g'); - - /** - * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and - * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). - */ - var reComboMark = RegExp(rsCombo, 'g'); - - /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ - var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); - - /** Used to match complex or compound words. */ - var reUnicodeWord = RegExp([ - rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', - rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', - rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, - rsUpper + '+' + rsOptContrUpper, - rsOrdUpper, - rsOrdLower, - rsDigits, - rsEmoji - ].join('|'), 'g'); - - /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ - var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); - - /** Used to detect strings that need a more robust regexp to match words. */ - var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; - - /** Used to assign default `context` object properties. */ - var contextProps = [ - 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array', - 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object', - 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array', - 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', - '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout' - ]; - - /** Used to make template sourceURLs easier to identify. */ - var templateCounter = -1; - - /** Used to identify `toStringTag` values of typed arrays. */ - var typedArrayTags = {}; - typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = - typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = - typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = - typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = - typedArrayTags[uint32Tag] = true; - typedArrayTags[argsTag] = typedArrayTags[arrayTag] = - typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = - typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = - typedArrayTags[errorTag] = typedArrayTags[funcTag] = - typedArrayTags[mapTag] = typedArrayTags[numberTag] = - typedArrayTags[objectTag] = typedArrayTags[regexpTag] = - typedArrayTags[setTag] = typedArrayTags[stringTag] = - typedArrayTags[weakMapTag] = false; - - /** Used to identify `toStringTag` values supported by `_.clone`. */ - var cloneableTags = {}; - cloneableTags[argsTag] = cloneableTags[arrayTag] = - cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = - cloneableTags[boolTag] = cloneableTags[dateTag] = - cloneableTags[float32Tag] = cloneableTags[float64Tag] = - cloneableTags[int8Tag] = cloneableTags[int16Tag] = - cloneableTags[int32Tag] = cloneableTags[mapTag] = - cloneableTags[numberTag] = cloneableTags[objectTag] = - cloneableTags[regexpTag] = cloneableTags[setTag] = - cloneableTags[stringTag] = cloneableTags[symbolTag] = - cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = - cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; - cloneableTags[errorTag] = cloneableTags[funcTag] = - cloneableTags[weakMapTag] = false; - - /** Used to map Latin Unicode letters to basic Latin letters. */ - var deburredLetters = { - // Latin-1 Supplement block. - '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', - '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', - '\xc7': 'C', '\xe7': 'c', - '\xd0': 'D', '\xf0': 'd', - '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', - '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', - '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', - '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', - '\xd1': 'N', '\xf1': 'n', - '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', - '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', - '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', - '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', - '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', - '\xc6': 'Ae', '\xe6': 'ae', - '\xde': 'Th', '\xfe': 'th', - '\xdf': 'ss', - // Latin Extended-A block. - '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', - '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', - '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', - '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', - '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', - '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', - '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', - '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', - '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', - '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', - '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', - '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', - '\u0134': 'J', '\u0135': 'j', - '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', - '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', - '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', - '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', - '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', - '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', - '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', - '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', - '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', - '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', - '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', - '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', - '\u0163': 't', '\u0165': 't', '\u0167': 't', - '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', - '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', - '\u0174': 'W', '\u0175': 'w', - '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', - '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', - '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', - '\u0132': 'IJ', '\u0133': 'ij', - '\u0152': 'Oe', '\u0153': 'oe', - '\u0149': "'n", '\u017f': 's' - }; - - /** Used to map characters to HTML entities. */ - var htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''' - }; - - /** Used to map HTML entities to characters. */ - var htmlUnescapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - ''': "'" - }; - - /** Used to escape characters for inclusion in compiled string literals. */ - var stringEscapes = { - '\\': '\\', - "'": "'", - '\n': 'n', - '\r': 'r', - '\u2028': 'u2028', - '\u2029': 'u2029' - }; - - /** Built-in method references without a dependency on `root`. */ - var freeParseFloat = parseFloat, - freeParseInt = parseInt; - - /** Detect free variable `global` from Node.js. */ - var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; - - /** Detect free variable `self`. */ - var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - - /** Used as a reference to the global object. */ - var root = freeGlobal || freeSelf || Function('return this')(); - - /** Detect free variable `exports`. */ - var freeExports = exports && !exports.nodeType && exports; - - /** Detect free variable `module`. */ - var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module; - - /** Detect the popular CommonJS extension `module.exports`. */ - var moduleExports = freeModule && freeModule.exports === freeExports; - - /** Detect free variable `process` from Node.js. */ - var freeProcess = moduleExports && freeGlobal.process; - - /** Used to access faster Node.js helpers. */ - var nodeUtil = (function() { - try { - // Use `util.types` for Node.js 10+. - var types = freeModule && freeModule.require && freeModule.require('util').types; - - if (types) { - return types; - } - - // Legacy `process.binding('util')` for Node.js < 10. - return freeProcess && freeProcess.binding && freeProcess.binding('util'); - } catch (e) {} - }()); - - /* Node.js helper references. */ - var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, - nodeIsDate = nodeUtil && nodeUtil.isDate, - nodeIsMap = nodeUtil && nodeUtil.isMap, - nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, - nodeIsSet = nodeUtil && nodeUtil.isSet, - nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; - - /*--------------------------------------------------------------------------*/ - - /** - * A faster alternative to `Function#apply`, this function invokes `func` - * with the `this` binding of `thisArg` and the arguments of `args`. - * - * @private - * @param {Function} func The function to invoke. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} args The arguments to invoke `func` with. - * @returns {*} Returns the result of `func`. - */ - function apply(func, thisArg, args) { - switch (args.length) { - case 0: return func.call(thisArg); - case 1: return func.call(thisArg, args[0]); - case 2: return func.call(thisArg, args[0], args[1]); - case 3: return func.call(thisArg, args[0], args[1], args[2]); - } - return func.apply(thisArg, args); - } - - /** - * A specialized version of `baseAggregator` for arrays. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform keys. - * @param {Object} accumulator The initial aggregated object. - * @returns {Function} Returns `accumulator`. - */ - function arrayAggregator(array, setter, iteratee, accumulator) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - var value = array[index]; - setter(accumulator, value, iteratee(value), array); - } - return accumulator; - } - - /** - * A specialized version of `_.forEach` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ - function arrayEach(array, iteratee) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (iteratee(array[index], index, array) === false) { - break; - } - } - return array; - } - - /** - * A specialized version of `_.forEachRight` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ - function arrayEachRight(array, iteratee) { - var length = array == null ? 0 : array.length; - - while (length--) { - if (iteratee(array[length], length, array) === false) { - break; - } - } - return array; - } - - /** - * A specialized version of `_.every` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false`. - */ - function arrayEvery(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (!predicate(array[index], index, array)) { - return false; - } - } - return true; - } - - /** - * A specialized version of `_.filter` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ - function arrayFilter(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result[resIndex++] = value; - } - } - return result; - } - - /** - * A specialized version of `_.includes` for arrays without support for - * specifying an index to search from. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ - function arrayIncludes(array, value) { - var length = array == null ? 0 : array.length; - return !!length && baseIndexOf(array, value, 0) > -1; - } - - /** - * This function is like `arrayIncludes` except that it accepts a comparator. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @param {Function} comparator The comparator invoked per element. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ - function arrayIncludesWith(array, value, comparator) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (comparator(value, array[index])) { - return true; - } - } - return false; - } - - /** - * A specialized version of `_.map` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ - function arrayMap(array, iteratee) { - var index = -1, - length = array == null ? 0 : array.length, - result = Array(length); - - while (++index < length) { - result[index] = iteratee(array[index], index, array); - } - return result; - } - - /** - * Appends the elements of `values` to `array`. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to append. - * @returns {Array} Returns `array`. - */ - function arrayPush(array, values) { - var index = -1, - length = values.length, - offset = array.length; - - while (++index < length) { - array[offset + index] = values[index]; - } - return array; - } - - /** - * A specialized version of `_.reduce` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initAccum] Specify using the first element of `array` as - * the initial value. - * @returns {*} Returns the accumulated value. - */ - function arrayReduce(array, iteratee, accumulator, initAccum) { - var index = -1, - length = array == null ? 0 : array.length; - - if (initAccum && length) { - accumulator = array[++index]; - } - while (++index < length) { - accumulator = iteratee(accumulator, array[index], index, array); - } - return accumulator; - } - - /** - * A specialized version of `_.reduceRight` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initAccum] Specify using the last element of `array` as - * the initial value. - * @returns {*} Returns the accumulated value. - */ - function arrayReduceRight(array, iteratee, accumulator, initAccum) { - var length = array == null ? 0 : array.length; - if (initAccum && length) { - accumulator = array[--length]; - } - while (length--) { - accumulator = iteratee(accumulator, array[length], length, array); - } - return accumulator; - } - - /** - * A specialized version of `_.some` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ - function arraySome(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (predicate(array[index], index, array)) { - return true; - } - } - return false; - } - - /** - * Gets the size of an ASCII `string`. - * - * @private - * @param {string} string The string inspect. - * @returns {number} Returns the string size. - */ - var asciiSize = baseProperty('length'); - - /** - * Converts an ASCII `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function asciiToArray(string) { - return string.split(''); - } - - /** - * Splits an ASCII `string` into an array of its words. - * - * @private - * @param {string} The string to inspect. - * @returns {Array} Returns the words of `string`. - */ - function asciiWords(string) { - return string.match(reAsciiWord) || []; - } - - /** - * The base implementation of methods like `_.findKey` and `_.findLastKey`, - * without support for iteratee shorthands, which iterates over `collection` - * using `eachFunc`. - * - * @private - * @param {Array|Object} collection The collection to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {Function} eachFunc The function to iterate over `collection`. - * @returns {*} Returns the found element or its key, else `undefined`. - */ - function baseFindKey(collection, predicate, eachFunc) { - var result; - eachFunc(collection, function(value, key, collection) { - if (predicate(value, key, collection)) { - result = key; - return false; - } - }); - return result; - } - - /** - * The base implementation of `_.findIndex` and `_.findLastIndex` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {number} fromIndex The index to search from. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseFindIndex(array, predicate, fromIndex, fromRight) { - var length = array.length, - index = fromIndex + (fromRight ? 1 : -1); - - while ((fromRight ? index-- : ++index < length)) { - if (predicate(array[index], index, array)) { - return index; - } - } - return -1; - } - - /** - * The base implementation of `_.indexOf` without `fromIndex` bounds checks. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseIndexOf(array, value, fromIndex) { - return value === value - ? strictIndexOf(array, value, fromIndex) - : baseFindIndex(array, baseIsNaN, fromIndex); - } - - /** - * This function is like `baseIndexOf` except that it accepts a comparator. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @param {Function} comparator The comparator invoked per element. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseIndexOfWith(array, value, fromIndex, comparator) { - var index = fromIndex - 1, - length = array.length; - - while (++index < length) { - if (comparator(array[index], value)) { - return index; - } - } - return -1; - } - - /** - * The base implementation of `_.isNaN` without support for number objects. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - */ - function baseIsNaN(value) { - return value !== value; - } - - /** - * The base implementation of `_.mean` and `_.meanBy` without support for - * iteratee shorthands. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {number} Returns the mean. - */ - function baseMean(array, iteratee) { - var length = array == null ? 0 : array.length; - return length ? (baseSum(array, iteratee) / length) : NAN; - } - - /** - * The base implementation of `_.property` without support for deep paths. - * - * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new accessor function. - */ - function baseProperty(key) { - return function(object) { - return object == null ? undefined$1 : object[key]; - }; - } - - /** - * The base implementation of `_.propertyOf` without support for deep paths. - * - * @private - * @param {Object} object The object to query. - * @returns {Function} Returns the new accessor function. - */ - function basePropertyOf(object) { - return function(key) { - return object == null ? undefined$1 : object[key]; - }; - } - - /** - * The base implementation of `_.reduce` and `_.reduceRight`, without support - * for iteratee shorthands, which iterates over `collection` using `eachFunc`. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} accumulator The initial value. - * @param {boolean} initAccum Specify using the first or last element of - * `collection` as the initial value. - * @param {Function} eachFunc The function to iterate over `collection`. - * @returns {*} Returns the accumulated value. - */ - function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { - eachFunc(collection, function(value, index, collection) { - accumulator = initAccum - ? (initAccum = false, value) - : iteratee(accumulator, value, index, collection); - }); - return accumulator; - } - - /** - * The base implementation of `_.sortBy` which uses `comparer` to define the - * sort order of `array` and replaces criteria objects with their corresponding - * values. - * - * @private - * @param {Array} array The array to sort. - * @param {Function} comparer The function to define sort order. - * @returns {Array} Returns `array`. - */ - function baseSortBy(array, comparer) { - var length = array.length; - - array.sort(comparer); - while (length--) { - array[length] = array[length].value; - } - return array; - } - - /** - * The base implementation of `_.sum` and `_.sumBy` without support for - * iteratee shorthands. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {number} Returns the sum. - */ - function baseSum(array, iteratee) { - var result, - index = -1, - length = array.length; - - while (++index < length) { - var current = iteratee(array[index]); - if (current !== undefined$1) { - result = result === undefined$1 ? current : (result + current); - } - } - return result; - } - - /** - * The base implementation of `_.times` without support for iteratee shorthands - * or max array length checks. - * - * @private - * @param {number} n The number of times to invoke `iteratee`. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the array of results. - */ - function baseTimes(n, iteratee) { - var index = -1, - result = Array(n); - - while (++index < n) { - result[index] = iteratee(index); - } - return result; - } - - /** - * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array - * of key-value pairs for `object` corresponding to the property names of `props`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the key-value pairs. - */ - function baseToPairs(object, props) { - return arrayMap(props, function(key) { - return [key, object[key]]; - }); - } - - /** - * The base implementation of `_.unary` without support for storing metadata. - * - * @private - * @param {Function} func The function to cap arguments for. - * @returns {Function} Returns the new capped function. - */ - function baseUnary(func) { - return function(value) { - return func(value); - }; - } - - /** - * The base implementation of `_.values` and `_.valuesIn` which creates an - * array of `object` property values corresponding to the property names - * of `props`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the array of property values. - */ - function baseValues(object, props) { - return arrayMap(props, function(key) { - return object[key]; - }); - } - - /** - * Checks if a `cache` value for `key` exists. - * - * @private - * @param {Object} cache The cache to query. - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function cacheHas(cache, key) { - return cache.has(key); - } - - /** - * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol - * that is not found in the character symbols. - * - * @private - * @param {Array} strSymbols The string symbols to inspect. - * @param {Array} chrSymbols The character symbols to find. - * @returns {number} Returns the index of the first unmatched string symbol. - */ - function charsStartIndex(strSymbols, chrSymbols) { - var index = -1, - length = strSymbols.length; - - while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} - return index; - } - - /** - * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol - * that is not found in the character symbols. - * - * @private - * @param {Array} strSymbols The string symbols to inspect. - * @param {Array} chrSymbols The character symbols to find. - * @returns {number} Returns the index of the last unmatched string symbol. - */ - function charsEndIndex(strSymbols, chrSymbols) { - var index = strSymbols.length; - - while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} - return index; - } - - /** - * Gets the number of `placeholder` occurrences in `array`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} placeholder The placeholder to search for. - * @returns {number} Returns the placeholder count. - */ - function countHolders(array, placeholder) { - var length = array.length, - result = 0; - - while (length--) { - if (array[length] === placeholder) { - ++result; - } - } - return result; - } - - /** - * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A - * letters to basic Latin letters. - * - * @private - * @param {string} letter The matched letter to deburr. - * @returns {string} Returns the deburred letter. - */ - var deburrLetter = basePropertyOf(deburredLetters); - - /** - * Used by `_.escape` to convert characters to HTML entities. - * - * @private - * @param {string} chr The matched character to escape. - * @returns {string} Returns the escaped character. - */ - var escapeHtmlChar = basePropertyOf(htmlEscapes); - - /** - * Used by `_.template` to escape characters for inclusion in compiled string literals. - * - * @private - * @param {string} chr The matched character to escape. - * @returns {string} Returns the escaped character. - */ - function escapeStringChar(chr) { - return '\\' + stringEscapes[chr]; - } - - /** - * Gets the value at `key` of `object`. - * - * @private - * @param {Object} [object] The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ - function getValue(object, key) { - return object == null ? undefined$1 : object[key]; - } - - /** - * Checks if `string` contains Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a symbol is found, else `false`. - */ - function hasUnicode(string) { - return reHasUnicode.test(string); - } - - /** - * Checks if `string` contains a word composed of Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a word is found, else `false`. - */ - function hasUnicodeWord(string) { - return reHasUnicodeWord.test(string); - } - - /** - * Converts `iterator` to an array. - * - * @private - * @param {Object} iterator The iterator to convert. - * @returns {Array} Returns the converted array. - */ - function iteratorToArray(iterator) { - var data, - result = []; - - while (!(data = iterator.next()).done) { - result.push(data.value); - } - return result; - } - - /** - * Converts `map` to its key-value pairs. - * - * @private - * @param {Object} map The map to convert. - * @returns {Array} Returns the key-value pairs. - */ - function mapToArray(map) { - var index = -1, - result = Array(map.size); - - map.forEach(function(value, key) { - result[++index] = [key, value]; - }); - return result; - } - - /** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ - function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); - }; - } - - /** - * Replaces all `placeholder` elements in `array` with an internal placeholder - * and returns an array of their indexes. - * - * @private - * @param {Array} array The array to modify. - * @param {*} placeholder The placeholder to replace. - * @returns {Array} Returns the new array of placeholder indexes. - */ - function replaceHolders(array, placeholder) { - var index = -1, - length = array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (value === placeholder || value === PLACEHOLDER) { - array[index] = PLACEHOLDER; - result[resIndex++] = index; - } - } - return result; - } - - /** - * Converts `set` to an array of its values. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the values. - */ - function setToArray(set) { - var index = -1, - result = Array(set.size); - - set.forEach(function(value) { - result[++index] = value; - }); - return result; - } - - /** - * Converts `set` to its value-value pairs. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the value-value pairs. - */ - function setToPairs(set) { - var index = -1, - result = Array(set.size); - - set.forEach(function(value) { - result[++index] = [value, value]; - }); - return result; - } - - /** - * A specialized version of `_.indexOf` which performs strict equality - * comparisons of values, i.e. `===`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function strictIndexOf(array, value, fromIndex) { - var index = fromIndex - 1, - length = array.length; - - while (++index < length) { - if (array[index] === value) { - return index; - } - } - return -1; - } - - /** - * A specialized version of `_.lastIndexOf` which performs strict equality - * comparisons of values, i.e. `===`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function strictLastIndexOf(array, value, fromIndex) { - var index = fromIndex + 1; - while (index--) { - if (array[index] === value) { - return index; - } - } - return index; - } - - /** - * Gets the number of symbols in `string`. - * - * @private - * @param {string} string The string to inspect. - * @returns {number} Returns the string size. - */ - function stringSize(string) { - return hasUnicode(string) - ? unicodeSize(string) - : asciiSize(string); - } - - /** - * Converts `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function stringToArray(string) { - return hasUnicode(string) - ? unicodeToArray(string) - : asciiToArray(string); - } - - /** - * Used by `_.unescape` to convert HTML entities to characters. - * - * @private - * @param {string} chr The matched character to unescape. - * @returns {string} Returns the unescaped character. - */ - var unescapeHtmlChar = basePropertyOf(htmlUnescapes); - - /** - * Gets the size of a Unicode `string`. - * - * @private - * @param {string} string The string inspect. - * @returns {number} Returns the string size. - */ - function unicodeSize(string) { - var result = reUnicode.lastIndex = 0; - while (reUnicode.test(string)) { - ++result; - } - return result; - } - - /** - * Converts a Unicode `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function unicodeToArray(string) { - return string.match(reUnicode) || []; - } - - /** - * Splits a Unicode `string` into an array of its words. - * - * @private - * @param {string} The string to inspect. - * @returns {Array} Returns the words of `string`. - */ - function unicodeWords(string) { - return string.match(reUnicodeWord) || []; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Create a new pristine `lodash` function using the `context` object. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Util - * @param {Object} [context=root] The context object. - * @returns {Function} Returns a new `lodash` function. - * @example - * - * _.mixin({ 'foo': _.constant('foo') }); - * - * var lodash = _.runInContext(); - * lodash.mixin({ 'bar': lodash.constant('bar') }); - * - * _.isFunction(_.foo); - * // => true - * _.isFunction(_.bar); - * // => false - * - * lodash.isFunction(lodash.foo); - * // => false - * lodash.isFunction(lodash.bar); - * // => true - * - * // Create a suped-up `defer` in Node.js. - * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer; - */ - var runInContext = (function runInContext(context) { - context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps)); - - /** Built-in constructor references. */ - var Array = context.Array, - Date = context.Date, - Error = context.Error, - Function = context.Function, - Math = context.Math, - Object = context.Object, - RegExp = context.RegExp, - String = context.String, - TypeError = context.TypeError; - - /** Used for built-in method references. */ - var arrayProto = Array.prototype, - funcProto = Function.prototype, - objectProto = Object.prototype; - - /** Used to detect overreaching core-js shims. */ - var coreJsData = context['__core-js_shared__']; - - /** Used to resolve the decompiled source of functions. */ - var funcToString = funcProto.toString; - - /** Used to check objects for own properties. */ - var hasOwnProperty = objectProto.hasOwnProperty; - - /** Used to generate unique IDs. */ - var idCounter = 0; - - /** Used to detect methods masquerading as native. */ - var maskSrcKey = (function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); - return uid ? ('Symbol(src)_1.' + uid) : ''; - }()); - - /** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ - var nativeObjectToString = objectProto.toString; - - /** Used to infer the `Object` constructor. */ - var objectCtorString = funcToString.call(Object); - - /** Used to restore the original `_` reference in `_.noConflict`. */ - var oldDash = root._; - - /** Used to detect if a method is native. */ - var reIsNative = RegExp('^' + - funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' - ); - - /** Built-in value references. */ - var Buffer = moduleExports ? context.Buffer : undefined$1, - Symbol = context.Symbol, - Uint8Array = context.Uint8Array, - allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined$1, - getPrototype = overArg(Object.getPrototypeOf, Object), - objectCreate = Object.create, - propertyIsEnumerable = objectProto.propertyIsEnumerable, - splice = arrayProto.splice, - spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined$1, - symIterator = Symbol ? Symbol.iterator : undefined$1, - symToStringTag = Symbol ? Symbol.toStringTag : undefined$1; - - var defineProperty = (function() { - try { - var func = getNative(Object, 'defineProperty'); - func({}, '', {}); - return func; - } catch (e) {} - }()); - - /** Mocked built-ins. */ - var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, - ctxNow = Date && Date.now !== root.Date.now && Date.now, - ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; - - /* Built-in method references for those with the same name as other `lodash` methods. */ - var nativeCeil = Math.ceil, - nativeFloor = Math.floor, - nativeGetSymbols = Object.getOwnPropertySymbols, - nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined$1, - nativeIsFinite = context.isFinite, - nativeJoin = arrayProto.join, - nativeKeys = overArg(Object.keys, Object), - nativeMax = Math.max, - nativeMin = Math.min, - nativeNow = Date.now, - nativeParseInt = context.parseInt, - nativeRandom = Math.random, - nativeReverse = arrayProto.reverse; - - /* Built-in method references that are verified to be native. */ - var DataView = getNative(context, 'DataView'), - Map = getNative(context, 'Map'), - Promise = getNative(context, 'Promise'), - Set = getNative(context, 'Set'), - WeakMap = getNative(context, 'WeakMap'), - nativeCreate = getNative(Object, 'create'); - - /** Used to store function metadata. */ - var metaMap = WeakMap && new WeakMap; - - /** Used to lookup unminified function names. */ - var realNames = {}; - - /** Used to detect maps, sets, and weakmaps. */ - var dataViewCtorString = toSource(DataView), - mapCtorString = toSource(Map), - promiseCtorString = toSource(Promise), - setCtorString = toSource(Set), - weakMapCtorString = toSource(WeakMap); - - /** Used to convert symbols to primitives and strings. */ - var symbolProto = Symbol ? Symbol.prototype : undefined$1, - symbolValueOf = symbolProto ? symbolProto.valueOf : undefined$1, - symbolToString = symbolProto ? symbolProto.toString : undefined$1; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a `lodash` object which wraps `value` to enable implicit method - * chain sequences. Methods that operate on and return arrays, collections, - * and functions can be chained together. Methods that retrieve a single value - * or may return a primitive value will automatically end the chain sequence - * and return the unwrapped value. Otherwise, the value must be unwrapped - * with `_#value`. - * - * Explicit chain sequences, which must be unwrapped with `_#value`, may be - * enabled using `_.chain`. - * - * The execution of chained methods is lazy, that is, it's deferred until - * `_#value` is implicitly or explicitly called. - * - * Lazy evaluation allows several methods to support shortcut fusion. - * Shortcut fusion is an optimization to merge iteratee calls; this avoids - * the creation of intermediate arrays and can greatly reduce the number of - * iteratee executions. Sections of a chain sequence qualify for shortcut - * fusion if the section is applied to an array and iteratees accept only - * one argument. The heuristic for whether a section qualifies for shortcut - * fusion is subject to change. - * - * Chaining is supported in custom builds as long as the `_#value` method is - * directly or indirectly included in the build. - * - * In addition to lodash methods, wrappers have `Array` and `String` methods. - * - * The wrapper `Array` methods are: - * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift` - * - * The wrapper `String` methods are: - * `replace` and `split` - * - * The wrapper methods that support shortcut fusion are: - * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`, - * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`, - * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray` - * - * The chainable wrapper methods are: - * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`, - * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`, - * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, - * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`, - * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`, - * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`, - * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`, - * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`, - * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`, - * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`, - * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`, - * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`, - * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`, - * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`, - * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`, - * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`, - * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`, - * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`, - * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`, - * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`, - * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`, - * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`, - * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, - * `zipObject`, `zipObjectDeep`, and `zipWith` - * - * The wrapper methods that are **not** chainable by default are: - * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`, - * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`, - * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`, - * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`, - * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`, - * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, - * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, - * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, - * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, - * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, - * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, - * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, - * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`, - * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`, - * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, - * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`, - * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, - * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`, - * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`, - * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`, - * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`, - * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`, - * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, - * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, - * `upperFirst`, `value`, and `words` - * - * @name _ - * @constructor - * @category Seq - * @param {*} value The value to wrap in a `lodash` instance. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * function square(n) { - * return n * n; - * } - * - * var wrapped = _([1, 2, 3]); - * - * // Returns an unwrapped value. - * wrapped.reduce(_.add); - * // => 6 - * - * // Returns a wrapped value. - * var squares = wrapped.map(square); - * - * _.isArray(squares); - * // => false - * - * _.isArray(squares.value()); - * // => true - */ - function lodash(value) { - if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { - if (value instanceof LodashWrapper) { - return value; - } - if (hasOwnProperty.call(value, '__wrapped__')) { - return wrapperClone(value); - } - } - return new LodashWrapper(value); - } - - /** - * The base implementation of `_.create` without support for assigning - * properties to the created object. - * - * @private - * @param {Object} proto The object to inherit from. - * @returns {Object} Returns the new object. - */ - var baseCreate = (function() { - function object() {} - return function(proto) { - if (!isObject(proto)) { - return {}; - } - if (objectCreate) { - return objectCreate(proto); - } - object.prototype = proto; - var result = new object; - object.prototype = undefined$1; - return result; - }; - }()); - - /** - * The function whose prototype chain sequence wrappers inherit from. - * - * @private - */ - function baseLodash() { - // No operation performed. - } - - /** - * The base constructor for creating `lodash` wrapper objects. - * - * @private - * @param {*} value The value to wrap. - * @param {boolean} [chainAll] Enable explicit method chain sequences. - */ - function LodashWrapper(value, chainAll) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__chain__ = !!chainAll; - this.__index__ = 0; - this.__values__ = undefined$1; - } - - /** - * By default, the template delimiters used by lodash are like those in - * embedded Ruby (ERB) as well as ES2015 template strings. Change the - * following template settings to use alternative delimiters. - * - * @static - * @memberOf _ - * @type {Object} - */ - lodash.templateSettings = { - - /** - * Used to detect `data` property values to be HTML-escaped. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - 'escape': reEscape, - - /** - * Used to detect code to be evaluated. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - 'evaluate': reEvaluate, - - /** - * Used to detect `data` property values to inject. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - 'interpolate': reInterpolate, - - /** - * Used to reference the data object in the template text. - * - * @memberOf _.templateSettings - * @type {string} - */ - 'variable': '', - - /** - * Used to import variables into the compiled template. - * - * @memberOf _.templateSettings - * @type {Object} - */ - 'imports': { - - /** - * A reference to the `lodash` function. - * - * @memberOf _.templateSettings.imports - * @type {Function} - */ - '_': lodash - } - }; - - // Ensure wrappers are instances of `baseLodash`. - lodash.prototype = baseLodash.prototype; - lodash.prototype.constructor = lodash; - - LodashWrapper.prototype = baseCreate(baseLodash.prototype); - LodashWrapper.prototype.constructor = LodashWrapper; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. - * - * @private - * @constructor - * @param {*} value The value to wrap. - */ - function LazyWrapper(value) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__dir__ = 1; - this.__filtered__ = false; - this.__iteratees__ = []; - this.__takeCount__ = MAX_ARRAY_LENGTH; - this.__views__ = []; - } - - /** - * Creates a clone of the lazy wrapper object. - * - * @private - * @name clone - * @memberOf LazyWrapper - * @returns {Object} Returns the cloned `LazyWrapper` object. - */ - function lazyClone() { - var result = new LazyWrapper(this.__wrapped__); - result.__actions__ = copyArray(this.__actions__); - result.__dir__ = this.__dir__; - result.__filtered__ = this.__filtered__; - result.__iteratees__ = copyArray(this.__iteratees__); - result.__takeCount__ = this.__takeCount__; - result.__views__ = copyArray(this.__views__); - return result; - } - - /** - * Reverses the direction of lazy iteration. - * - * @private - * @name reverse - * @memberOf LazyWrapper - * @returns {Object} Returns the new reversed `LazyWrapper` object. - */ - function lazyReverse() { - if (this.__filtered__) { - var result = new LazyWrapper(this); - result.__dir__ = -1; - result.__filtered__ = true; - } else { - result = this.clone(); - result.__dir__ *= -1; - } - return result; - } - - /** - * Extracts the unwrapped value from its lazy wrapper. - * - * @private - * @name value - * @memberOf LazyWrapper - * @returns {*} Returns the unwrapped value. - */ - function lazyValue() { - var array = this.__wrapped__.value(), - dir = this.__dir__, - isArr = isArray(array), - isRight = dir < 0, - arrLength = isArr ? array.length : 0, - view = getView(0, arrLength, this.__views__), - start = view.start, - end = view.end, - length = end - start, - index = isRight ? end : (start - 1), - iteratees = this.__iteratees__, - iterLength = iteratees.length, - resIndex = 0, - takeCount = nativeMin(length, this.__takeCount__); - - if (!isArr || (!isRight && arrLength == length && takeCount == length)) { - return baseWrapperValue(array, this.__actions__); - } - var result = []; - - outer: - while (length-- && resIndex < takeCount) { - index += dir; - - var iterIndex = -1, - value = array[index]; - - while (++iterIndex < iterLength) { - var data = iteratees[iterIndex], - iteratee = data.iteratee, - type = data.type, - computed = iteratee(value); - - if (type == LAZY_MAP_FLAG) { - value = computed; - } else if (!computed) { - if (type == LAZY_FILTER_FLAG) { - continue outer; - } else { - break outer; - } - } - } - result[resIndex++] = value; - } - return result; - } - - // Ensure `LazyWrapper` is an instance of `baseLodash`. - LazyWrapper.prototype = baseCreate(baseLodash.prototype); - LazyWrapper.prototype.constructor = LazyWrapper; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a hash object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function Hash(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - /** - * Removes all key-value entries from the hash. - * - * @private - * @name clear - * @memberOf Hash - */ - function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; - this.size = 0; - } - - /** - * Removes `key` and its value from the hash. - * - * @private - * @name delete - * @memberOf Hash - * @param {Object} hash The hash to modify. - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function hashDelete(key) { - var result = this.has(key) && delete this.__data__[key]; - this.size -= result ? 1 : 0; - return result; - } - - /** - * Gets the hash value for `key`. - * - * @private - * @name get - * @memberOf Hash - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result = data[key]; - return result === HASH_UNDEFINED ? undefined$1 : result; - } - return hasOwnProperty.call(data, key) ? data[key] : undefined$1; - } - - /** - * Checks if a hash value for `key` exists. - * - * @private - * @name has - * @memberOf Hash - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function hashHas(key) { - var data = this.__data__; - return nativeCreate ? (data[key] !== undefined$1) : hasOwnProperty.call(data, key); - } - - /** - * Sets the hash `key` to `value`. - * - * @private - * @name set - * @memberOf Hash - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the hash instance. - */ - function hashSet(key, value) { - var data = this.__data__; - this.size += this.has(key) ? 0 : 1; - data[key] = (nativeCreate && value === undefined$1) ? HASH_UNDEFINED : value; - return this; - } - - // Add methods to `Hash`. - Hash.prototype.clear = hashClear; - Hash.prototype['delete'] = hashDelete; - Hash.prototype.get = hashGet; - Hash.prototype.has = hashHas; - Hash.prototype.set = hashSet; - - /*------------------------------------------------------------------------*/ - - /** - * Creates an list cache object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function ListCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - /** - * Removes all key-value entries from the list cache. - * - * @private - * @name clear - * @memberOf ListCache - */ - function listCacheClear() { - this.__data__ = []; - this.size = 0; - } - - /** - * Removes `key` and its value from the list cache. - * - * @private - * @name delete - * @memberOf ListCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function listCacheDelete(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); - } - --this.size; - return true; - } - - /** - * Gets the list cache value for `key`. - * - * @private - * @name get - * @memberOf ListCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function listCacheGet(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - return index < 0 ? undefined$1 : data[index][1]; - } - - /** - * Checks if a list cache value for `key` exists. - * - * @private - * @name has - * @memberOf ListCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; - } - - /** - * Sets the list cache `key` to `value`. - * - * @private - * @name set - * @memberOf ListCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the list cache instance. - */ - function listCacheSet(key, value) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - ++this.size; - data.push([key, value]); - } else { - data[index][1] = value; - } - return this; - } - - // Add methods to `ListCache`. - ListCache.prototype.clear = listCacheClear; - ListCache.prototype['delete'] = listCacheDelete; - ListCache.prototype.get = listCacheGet; - ListCache.prototype.has = listCacheHas; - ListCache.prototype.set = listCacheSet; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a map cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function MapCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - /** - * Removes all key-value entries from the map. - * - * @private - * @name clear - * @memberOf MapCache - */ - function mapCacheClear() { - this.size = 0; - this.__data__ = { - 'hash': new Hash, - 'map': new (Map || ListCache), - 'string': new Hash - }; - } - - /** - * Removes `key` and its value from the map. - * - * @private - * @name delete - * @memberOf MapCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function mapCacheDelete(key) { - var result = getMapData(this, key)['delete'](key); - this.size -= result ? 1 : 0; - return result; - } - - /** - * Gets the map value for `key`. - * - * @private - * @name get - * @memberOf MapCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function mapCacheGet(key) { - return getMapData(this, key).get(key); - } - - /** - * Checks if a map value for `key` exists. - * - * @private - * @name has - * @memberOf MapCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function mapCacheHas(key) { - return getMapData(this, key).has(key); - } - - /** - * Sets the map `key` to `value`. - * - * @private - * @name set - * @memberOf MapCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the map cache instance. - */ - function mapCacheSet(key, value) { - var data = getMapData(this, key), - size = data.size; - - data.set(key, value); - this.size += data.size == size ? 0 : 1; - return this; - } - - // Add methods to `MapCache`. - MapCache.prototype.clear = mapCacheClear; - MapCache.prototype['delete'] = mapCacheDelete; - MapCache.prototype.get = mapCacheGet; - MapCache.prototype.has = mapCacheHas; - MapCache.prototype.set = mapCacheSet; - - /*------------------------------------------------------------------------*/ - - /** - * - * Creates an array cache object to store unique values. - * - * @private - * @constructor - * @param {Array} [values] The values to cache. - */ - function SetCache(values) { - var index = -1, - length = values == null ? 0 : values.length; - - this.__data__ = new MapCache; - while (++index < length) { - this.add(values[index]); - } - } - - /** - * Adds `value` to the array cache. - * - * @private - * @name add - * @memberOf SetCache - * @alias push - * @param {*} value The value to cache. - * @returns {Object} Returns the cache instance. - */ - function setCacheAdd(value) { - this.__data__.set(value, HASH_UNDEFINED); - return this; - } - - /** - * Checks if `value` is in the array cache. - * - * @private - * @name has - * @memberOf SetCache - * @param {*} value The value to search for. - * @returns {number} Returns `true` if `value` is found, else `false`. - */ - function setCacheHas(value) { - return this.__data__.has(value); - } - - // Add methods to `SetCache`. - SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; - SetCache.prototype.has = setCacheHas; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a stack cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function Stack(entries) { - var data = this.__data__ = new ListCache(entries); - this.size = data.size; - } - - /** - * Removes all key-value entries from the stack. - * - * @private - * @name clear - * @memberOf Stack - */ - function stackClear() { - this.__data__ = new ListCache; - this.size = 0; - } - - /** - * Removes `key` and its value from the stack. - * - * @private - * @name delete - * @memberOf Stack - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function stackDelete(key) { - var data = this.__data__, - result = data['delete'](key); - - this.size = data.size; - return result; - } - - /** - * Gets the stack value for `key`. - * - * @private - * @name get - * @memberOf Stack - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function stackGet(key) { - return this.__data__.get(key); - } - - /** - * Checks if a stack value for `key` exists. - * - * @private - * @name has - * @memberOf Stack - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function stackHas(key) { - return this.__data__.has(key); - } - - /** - * Sets the stack `key` to `value`. - * - * @private - * @name set - * @memberOf Stack - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the stack cache instance. - */ - function stackSet(key, value) { - var data = this.__data__; - if (data instanceof ListCache) { - var pairs = data.__data__; - if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { - pairs.push([key, value]); - this.size = ++data.size; - return this; - } - data = this.__data__ = new MapCache(pairs); - } - data.set(key, value); - this.size = data.size; - return this; - } - - // Add methods to `Stack`. - Stack.prototype.clear = stackClear; - Stack.prototype['delete'] = stackDelete; - Stack.prototype.get = stackGet; - Stack.prototype.has = stackHas; - Stack.prototype.set = stackSet; - - /*------------------------------------------------------------------------*/ - - /** - * Creates an array of the enumerable property names of the array-like `value`. - * - * @private - * @param {*} value The value to query. - * @param {boolean} inherited Specify returning inherited property names. - * @returns {Array} Returns the array of property names. - */ - function arrayLikeKeys(value, inherited) { - var isArr = isArray(value), - isArg = !isArr && isArguments(value), - isBuff = !isArr && !isArg && isBuffer(value), - isType = !isArr && !isArg && !isBuff && isTypedArray(value), - skipIndexes = isArr || isArg || isBuff || isType, - result = skipIndexes ? baseTimes(value.length, String) : [], - length = result.length; - - for (var key in value) { - if ((inherited || hasOwnProperty.call(value, key)) && - !(skipIndexes && ( - // Safari 9 has enumerable `arguments.length` in strict mode. - key == 'length' || - // Node.js 0.10 has enumerable non-index properties on buffers. - (isBuff && (key == 'offset' || key == 'parent')) || - // PhantomJS 2 has enumerable non-index properties on typed arrays. - (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || - // Skip index properties. - isIndex(key, length) - ))) { - result.push(key); - } - } - return result; - } - - /** - * A specialized version of `_.sample` for arrays. - * - * @private - * @param {Array} array The array to sample. - * @returns {*} Returns the random element. - */ - function arraySample(array) { - var length = array.length; - return length ? array[baseRandom(0, length - 1)] : undefined$1; - } - - /** - * A specialized version of `_.sampleSize` for arrays. - * - * @private - * @param {Array} array The array to sample. - * @param {number} n The number of elements to sample. - * @returns {Array} Returns the random elements. - */ - function arraySampleSize(array, n) { - return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length)); - } - - /** - * A specialized version of `_.shuffle` for arrays. - * - * @private - * @param {Array} array The array to shuffle. - * @returns {Array} Returns the new shuffled array. - */ - function arrayShuffle(array) { - return shuffleSelf(copyArray(array)); - } - - /** - * This function is like `assignValue` except that it doesn't assign - * `undefined` values. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ - function assignMergeValue(object, key, value) { - if ((value !== undefined$1 && !eq(object[key], value)) || - (value === undefined$1 && !(key in object))) { - baseAssignValue(object, key, value); - } - } - - /** - * Assigns `value` to `key` of `object` if the existing value is not equivalent - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ - function assignValue(object, key, value) { - var objValue = object[key]; - if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || - (value === undefined$1 && !(key in object))) { - baseAssignValue(object, key, value); - } - } - - /** - * Gets the index at which the `key` is found in `array` of key-value pairs. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} key The key to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; - } - } - return -1; - } - - /** - * Aggregates elements of `collection` on `accumulator` with keys transformed - * by `iteratee` and values set by `setter`. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform keys. - * @param {Object} accumulator The initial aggregated object. - * @returns {Function} Returns `accumulator`. - */ - function baseAggregator(collection, setter, iteratee, accumulator) { - baseEach(collection, function(value, key, collection) { - setter(accumulator, value, iteratee(value), collection); - }); - return accumulator; - } - - /** - * The base implementation of `_.assign` without support for multiple sources - * or `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @returns {Object} Returns `object`. - */ - function baseAssign(object, source) { - return object && copyObject(source, keys(source), object); - } - - /** - * The base implementation of `_.assignIn` without support for multiple sources - * or `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @returns {Object} Returns `object`. - */ - function baseAssignIn(object, source) { - return object && copyObject(source, keysIn(source), object); - } - - /** - * The base implementation of `assignValue` and `assignMergeValue` without - * value checks. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ - function baseAssignValue(object, key, value) { - if (key == '__proto__' && defineProperty) { - defineProperty(object, key, { - 'configurable': true, - 'enumerable': true, - 'value': value, - 'writable': true - }); - } else { - object[key] = value; - } - } - - /** - * The base implementation of `_.at` without support for individual paths. - * - * @private - * @param {Object} object The object to iterate over. - * @param {string[]} paths The property paths to pick. - * @returns {Array} Returns the picked elements. - */ - function baseAt(object, paths) { - var index = -1, - length = paths.length, - result = Array(length), - skip = object == null; - - while (++index < length) { - result[index] = skip ? undefined$1 : get(object, paths[index]); - } - return result; - } - - /** - * The base implementation of `_.clamp` which doesn't coerce arguments. - * - * @private - * @param {number} number The number to clamp. - * @param {number} [lower] The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the clamped number. - */ - function baseClamp(number, lower, upper) { - if (number === number) { - if (upper !== undefined$1) { - number = number <= upper ? number : upper; - } - if (lower !== undefined$1) { - number = number >= lower ? number : lower; - } - } - return number; - } - - /** - * The base implementation of `_.clone` and `_.cloneDeep` which tracks - * traversed objects. - * - * @private - * @param {*} value The value to clone. - * @param {boolean} bitmask The bitmask flags. - * 1 - Deep clone - * 2 - Flatten inherited properties - * 4 - Clone symbols - * @param {Function} [customizer] The function to customize cloning. - * @param {string} [key] The key of `value`. - * @param {Object} [object] The parent object of `value`. - * @param {Object} [stack] Tracks traversed objects and their clone counterparts. - * @returns {*} Returns the cloned value. - */ - function baseClone(value, bitmask, customizer, key, object, stack) { - var result, - isDeep = bitmask & CLONE_DEEP_FLAG, - isFlat = bitmask & CLONE_FLAT_FLAG, - isFull = bitmask & CLONE_SYMBOLS_FLAG; - - if (customizer) { - result = object ? customizer(value, key, object, stack) : customizer(value); - } - if (result !== undefined$1) { - return result; - } - if (!isObject(value)) { - return value; - } - var isArr = isArray(value); - if (isArr) { - result = initCloneArray(value); - if (!isDeep) { - return copyArray(value, result); - } - } else { - var tag = getTag(value), - isFunc = tag == funcTag || tag == genTag; - - if (isBuffer(value)) { - return cloneBuffer(value, isDeep); - } - if (tag == objectTag || tag == argsTag || (isFunc && !object)) { - result = (isFlat || isFunc) ? {} : initCloneObject(value); - if (!isDeep) { - return isFlat - ? copySymbolsIn(value, baseAssignIn(result, value)) - : copySymbols(value, baseAssign(result, value)); - } - } else { - if (!cloneableTags[tag]) { - return object ? value : {}; - } - result = initCloneByTag(value, tag, isDeep); - } - } - // Check for circular references and return its corresponding clone. - stack || (stack = new Stack); - var stacked = stack.get(value); - if (stacked) { - return stacked; - } - stack.set(value, result); - - if (isSet(value)) { - value.forEach(function(subValue) { - result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); - }); - } else if (isMap(value)) { - value.forEach(function(subValue, key) { - result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); - }); - } - - var keysFunc = isFull - ? (isFlat ? getAllKeysIn : getAllKeys) - : (isFlat ? keysIn : keys); - - var props = isArr ? undefined$1 : keysFunc(value); - arrayEach(props || value, function(subValue, key) { - if (props) { - key = subValue; - subValue = value[key]; - } - // Recursively populate clone (susceptible to call stack limits). - assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); - }); - return result; - } - - /** - * The base implementation of `_.conforms` which doesn't clone `source`. - * - * @private - * @param {Object} source The object of property predicates to conform to. - * @returns {Function} Returns the new spec function. - */ - function baseConforms(source) { - var props = keys(source); - return function(object) { - return baseConformsTo(object, source, props); - }; - } - - /** - * The base implementation of `_.conformsTo` which accepts `props` to check. - * - * @private - * @param {Object} object The object to inspect. - * @param {Object} source The object of property predicates to conform to. - * @returns {boolean} Returns `true` if `object` conforms, else `false`. - */ - function baseConformsTo(object, source, props) { - var length = props.length; - if (object == null) { - return !length; - } - object = Object(object); - while (length--) { - var key = props[length], - predicate = source[key], - value = object[key]; - - if ((value === undefined$1 && !(key in object)) || !predicate(value)) { - return false; - } - } - return true; - } - - /** - * The base implementation of `_.delay` and `_.defer` which accepts `args` - * to provide to `func`. - * - * @private - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {Array} args The arguments to provide to `func`. - * @returns {number|Object} Returns the timer id or timeout object. - */ - function baseDelay(func, wait, args) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return setTimeout(function() { func.apply(undefined$1, args); }, wait); - } - - /** - * The base implementation of methods like `_.difference` without support - * for excluding multiple arrays or iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Array} values The values to exclude. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of filtered values. - */ - function baseDifference(array, values, iteratee, comparator) { - var index = -1, - includes = arrayIncludes, - isCommon = true, - length = array.length, - result = [], - valuesLength = values.length; - - if (!length) { - return result; - } - if (iteratee) { - values = arrayMap(values, baseUnary(iteratee)); - } - if (comparator) { - includes = arrayIncludesWith; - isCommon = false; - } - else if (values.length >= LARGE_ARRAY_SIZE) { - includes = cacheHas; - isCommon = false; - values = new SetCache(values); - } - outer: - while (++index < length) { - var value = array[index], - computed = iteratee == null ? value : iteratee(value); - - value = (comparator || value !== 0) ? value : 0; - if (isCommon && computed === computed) { - var valuesIndex = valuesLength; - while (valuesIndex--) { - if (values[valuesIndex] === computed) { - continue outer; - } - } - result.push(value); - } - else if (!includes(values, computed, comparator)) { - result.push(value); - } - } - return result; - } - - /** - * The base implementation of `_.forEach` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - */ - var baseEach = createBaseEach(baseForOwn); - - /** - * The base implementation of `_.forEachRight` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - */ - var baseEachRight = createBaseEach(baseForOwnRight, true); - - /** - * The base implementation of `_.every` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false` - */ - function baseEvery(collection, predicate) { - var result = true; - baseEach(collection, function(value, index, collection) { - result = !!predicate(value, index, collection); - return result; - }); - return result; - } - - /** - * The base implementation of methods like `_.max` and `_.min` which accepts a - * `comparator` to determine the extremum value. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The iteratee invoked per iteration. - * @param {Function} comparator The comparator used to compare values. - * @returns {*} Returns the extremum value. - */ - function baseExtremum(array, iteratee, comparator) { - var index = -1, - length = array.length; - - while (++index < length) { - var value = array[index], - current = iteratee(value); - - if (current != null && (computed === undefined$1 - ? (current === current && !isSymbol(current)) - : comparator(current, computed) - )) { - var computed = current, - result = value; - } - } - return result; - } - - /** - * The base implementation of `_.fill` without an iteratee call guard. - * - * @private - * @param {Array} array The array to fill. - * @param {*} value The value to fill `array` with. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns `array`. - */ - function baseFill(array, value, start, end) { - var length = array.length; - - start = toInteger(start); - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = (end === undefined$1 || end > length) ? length : toInteger(end); - if (end < 0) { - end += length; - } - end = start > end ? 0 : toLength(end); - while (start < end) { - array[start++] = value; - } - return array; - } - - /** - * The base implementation of `_.filter` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ - function baseFilter(collection, predicate) { - var result = []; - baseEach(collection, function(value, index, collection) { - if (predicate(value, index, collection)) { - result.push(value); - } - }); - return result; - } - - /** - * The base implementation of `_.flatten` with support for restricting flattening. - * - * @private - * @param {Array} array The array to flatten. - * @param {number} depth The maximum recursion depth. - * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. - * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. - * @param {Array} [result=[]] The initial result value. - * @returns {Array} Returns the new flattened array. - */ - function baseFlatten(array, depth, predicate, isStrict, result) { - var index = -1, - length = array.length; - - predicate || (predicate = isFlattenable); - result || (result = []); - - while (++index < length) { - var value = array[index]; - if (depth > 0 && predicate(value)) { - if (depth > 1) { - // Recursively flatten arrays (susceptible to call stack limits). - baseFlatten(value, depth - 1, predicate, isStrict, result); - } else { - arrayPush(result, value); - } - } else if (!isStrict) { - result[result.length] = value; - } - } - return result; - } - - /** - * The base implementation of `baseForOwn` which iterates over `object` - * properties returned by `keysFunc` and invokes `iteratee` for each property. - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ - var baseFor = createBaseFor(); - - /** - * This function is like `baseFor` except that it iterates over properties - * in the opposite order. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ - var baseForRight = createBaseFor(true); - - /** - * The base implementation of `_.forOwn` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ - function baseForOwn(object, iteratee) { - return object && baseFor(object, iteratee, keys); - } - - /** - * The base implementation of `_.forOwnRight` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ - function baseForOwnRight(object, iteratee) { - return object && baseForRight(object, iteratee, keys); - } - - /** - * The base implementation of `_.functions` which creates an array of - * `object` function property names filtered from `props`. - * - * @private - * @param {Object} object The object to inspect. - * @param {Array} props The property names to filter. - * @returns {Array} Returns the function names. - */ - function baseFunctions(object, props) { - return arrayFilter(props, function(key) { - return isFunction(object[key]); - }); - } - - /** - * The base implementation of `_.get` without support for default values. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @returns {*} Returns the resolved value. - */ - function baseGet(object, path) { - path = castPath(path, object); - - var index = 0, - length = path.length; - - while (object != null && index < length) { - object = object[toKey(path[index++])]; - } - return (index && index == length) ? object : undefined$1; - } - - /** - * The base implementation of `getAllKeys` and `getAllKeysIn` which uses - * `keysFunc` and `symbolsFunc` to get the enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Function} keysFunc The function to get the keys of `object`. - * @param {Function} symbolsFunc The function to get the symbols of `object`. - * @returns {Array} Returns the array of property names and symbols. - */ - function baseGetAllKeys(object, keysFunc, symbolsFunc) { - var result = keysFunc(object); - return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); - } - - /** - * The base implementation of `getTag` without fallbacks for buggy environments. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ - function baseGetTag(value) { - if (value == null) { - return value === undefined$1 ? undefinedTag : nullTag; - } - return (symToStringTag && symToStringTag in Object(value)) - ? getRawTag(value) - : objectToString(value); - } - - /** - * The base implementation of `_.gt` which doesn't coerce arguments. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than `other`, - * else `false`. - */ - function baseGt(value, other) { - return value > other; - } - - /** - * The base implementation of `_.has` without support for deep paths. - * - * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ - function baseHas(object, key) { - return object != null && hasOwnProperty.call(object, key); - } - - /** - * The base implementation of `_.hasIn` without support for deep paths. - * - * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ - function baseHasIn(object, key) { - return object != null && key in Object(object); - } - - /** - * The base implementation of `_.inRange` which doesn't coerce arguments. - * - * @private - * @param {number} number The number to check. - * @param {number} start The start of the range. - * @param {number} end The end of the range. - * @returns {boolean} Returns `true` if `number` is in the range, else `false`. - */ - function baseInRange(number, start, end) { - return number >= nativeMin(start, end) && number < nativeMax(start, end); - } - - /** - * The base implementation of methods like `_.intersection`, without support - * for iteratee shorthands, that accepts an array of arrays to inspect. - * - * @private - * @param {Array} arrays The arrays to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of shared values. - */ - function baseIntersection(arrays, iteratee, comparator) { - var includes = comparator ? arrayIncludesWith : arrayIncludes, - length = arrays[0].length, - othLength = arrays.length, - othIndex = othLength, - caches = Array(othLength), - maxLength = Infinity, - result = []; - - while (othIndex--) { - var array = arrays[othIndex]; - if (othIndex && iteratee) { - array = arrayMap(array, baseUnary(iteratee)); - } - maxLength = nativeMin(array.length, maxLength); - caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120)) - ? new SetCache(othIndex && array) - : undefined$1; - } - array = arrays[0]; - - var index = -1, - seen = caches[0]; - - outer: - while (++index < length && result.length < maxLength) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - value = (comparator || value !== 0) ? value : 0; - if (!(seen - ? cacheHas(seen, computed) - : includes(result, computed, comparator) - )) { - othIndex = othLength; - while (--othIndex) { - var cache = caches[othIndex]; - if (!(cache - ? cacheHas(cache, computed) - : includes(arrays[othIndex], computed, comparator)) - ) { - continue outer; - } - } - if (seen) { - seen.push(computed); - } - result.push(value); - } - } - return result; - } - - /** - * The base implementation of `_.invert` and `_.invertBy` which inverts - * `object` with values transformed by `iteratee` and set by `setter`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform values. - * @param {Object} accumulator The initial inverted object. - * @returns {Function} Returns `accumulator`. - */ - function baseInverter(object, setter, iteratee, accumulator) { - baseForOwn(object, function(value, key, object) { - setter(accumulator, iteratee(value), key, object); - }); - return accumulator; - } - - /** - * The base implementation of `_.invoke` without support for individual - * method arguments. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the method to invoke. - * @param {Array} args The arguments to invoke the method with. - * @returns {*} Returns the result of the invoked method. - */ - function baseInvoke(object, path, args) { - path = castPath(path, object); - object = parent(object, path); - var func = object == null ? object : object[toKey(last(path))]; - return func == null ? undefined$1 : apply(func, object, args); - } - - /** - * The base implementation of `_.isArguments`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - */ - function baseIsArguments(value) { - return isObjectLike(value) && baseGetTag(value) == argsTag; - } - - /** - * The base implementation of `_.isArrayBuffer` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. - */ - function baseIsArrayBuffer(value) { - return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; - } - - /** - * The base implementation of `_.isDate` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a date object, else `false`. - */ - function baseIsDate(value) { - return isObjectLike(value) && baseGetTag(value) == dateTag; - } - - /** - * The base implementation of `_.isEqual` which supports partial comparisons - * and tracks traversed objects. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {boolean} bitmask The bitmask flags. - * 1 - Unordered comparison - * 2 - Partial comparison - * @param {Function} [customizer] The function to customize comparisons. - * @param {Object} [stack] Tracks traversed `value` and `other` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ - function baseIsEqual(value, other, bitmask, customizer, stack) { - if (value === other) { - return true; - } - if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { - return value !== value && other !== other; - } - return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); - } - - /** - * A specialized version of `baseIsEqual` for arrays and objects which performs - * deep comparisons and tracks traversed objects enabling objects with circular - * references to be compared. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} [stack] Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { - var objIsArr = isArray(object), - othIsArr = isArray(other), - objTag = objIsArr ? arrayTag : getTag(object), - othTag = othIsArr ? arrayTag : getTag(other); - - objTag = objTag == argsTag ? objectTag : objTag; - othTag = othTag == argsTag ? objectTag : othTag; - - var objIsObj = objTag == objectTag, - othIsObj = othTag == objectTag, - isSameTag = objTag == othTag; - - if (isSameTag && isBuffer(object)) { - if (!isBuffer(other)) { - return false; - } - objIsArr = true; - objIsObj = false; - } - if (isSameTag && !objIsObj) { - stack || (stack = new Stack); - return (objIsArr || isTypedArray(object)) - ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) - : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); - } - if (!(bitmask & COMPARE_PARTIAL_FLAG)) { - var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), - othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); - - if (objIsWrapped || othIsWrapped) { - var objUnwrapped = objIsWrapped ? object.value() : object, - othUnwrapped = othIsWrapped ? other.value() : other; - - stack || (stack = new Stack); - return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); - } - } - if (!isSameTag) { - return false; - } - stack || (stack = new Stack); - return equalObjects(object, other, bitmask, customizer, equalFunc, stack); - } - - /** - * The base implementation of `_.isMap` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a map, else `false`. - */ - function baseIsMap(value) { - return isObjectLike(value) && getTag(value) == mapTag; - } - - /** - * The base implementation of `_.isMatch` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Array} matchData The property names, values, and compare flags to match. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - */ - function baseIsMatch(object, source, matchData, customizer) { - var index = matchData.length, - length = index, - noCustomizer = !customizer; - - if (object == null) { - return !length; - } - object = Object(object); - while (index--) { - var data = matchData[index]; - if ((noCustomizer && data[2]) - ? data[1] !== object[data[0]] - : !(data[0] in object) - ) { - return false; - } - } - while (++index < length) { - data = matchData[index]; - var key = data[0], - objValue = object[key], - srcValue = data[1]; - - if (noCustomizer && data[2]) { - if (objValue === undefined$1 && !(key in object)) { - return false; - } - } else { - var stack = new Stack; - if (customizer) { - var result = customizer(objValue, srcValue, key, object, source, stack); - } - if (!(result === undefined$1 - ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) - : result - )) { - return false; - } - } - } - return true; - } - - /** - * The base implementation of `_.isNative` without bad shim checks. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - */ - function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; - } - var pattern = isFunction(value) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); - } - - /** - * The base implementation of `_.isRegExp` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. - */ - function baseIsRegExp(value) { - return isObjectLike(value) && baseGetTag(value) == regexpTag; - } - - /** - * The base implementation of `_.isSet` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a set, else `false`. - */ - function baseIsSet(value) { - return isObjectLike(value) && getTag(value) == setTag; - } - - /** - * The base implementation of `_.isTypedArray` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - */ - function baseIsTypedArray(value) { - return isObjectLike(value) && - isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; - } - - /** - * The base implementation of `_.iteratee`. - * - * @private - * @param {*} [value=_.identity] The value to convert to an iteratee. - * @returns {Function} Returns the iteratee. - */ - function baseIteratee(value) { - // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. - // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. - if (typeof value == 'function') { - return value; - } - if (value == null) { - return identity; - } - if (typeof value == 'object') { - return isArray(value) - ? baseMatchesProperty(value[0], value[1]) - : baseMatches(value); - } - return property(value); - } - - /** - * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function baseKeys(object) { - if (!isPrototype(object)) { - return nativeKeys(object); - } - var result = []; - for (var key in Object(object)) { - if (hasOwnProperty.call(object, key) && key != 'constructor') { - result.push(key); - } - } - return result; - } - - /** - * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function baseKeysIn(object) { - if (!isObject(object)) { - return nativeKeysIn(object); - } - var isProto = isPrototype(object), - result = []; - - for (var key in object) { - if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { - result.push(key); - } - } - return result; - } - - /** - * The base implementation of `_.lt` which doesn't coerce arguments. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than `other`, - * else `false`. - */ - function baseLt(value, other) { - return value < other; - } - - /** - * The base implementation of `_.map` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ - function baseMap(collection, iteratee) { - var index = -1, - result = isArrayLike(collection) ? Array(collection.length) : []; - - baseEach(collection, function(value, key, collection) { - result[++index] = iteratee(value, key, collection); - }); - return result; - } - - /** - * The base implementation of `_.matches` which doesn't clone `source`. - * - * @private - * @param {Object} source The object of property values to match. - * @returns {Function} Returns the new spec function. - */ - function baseMatches(source) { - var matchData = getMatchData(source); - if (matchData.length == 1 && matchData[0][2]) { - return matchesStrictComparable(matchData[0][0], matchData[0][1]); - } - return function(object) { - return object === source || baseIsMatch(object, source, matchData); - }; - } - - /** - * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. - * - * @private - * @param {string} path The path of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ - function baseMatchesProperty(path, srcValue) { - if (isKey(path) && isStrictComparable(srcValue)) { - return matchesStrictComparable(toKey(path), srcValue); - } - return function(object) { - var objValue = get(object, path); - return (objValue === undefined$1 && objValue === srcValue) - ? hasIn(object, path) - : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); - }; - } - - /** - * The base implementation of `_.merge` without support for multiple sources. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {number} srcIndex The index of `source`. - * @param {Function} [customizer] The function to customize merged values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - */ - function baseMerge(object, source, srcIndex, customizer, stack) { - if (object === source) { - return; - } - baseFor(source, function(srcValue, key) { - stack || (stack = new Stack); - if (isObject(srcValue)) { - baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); - } - else { - var newValue = customizer - ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) - : undefined$1; - - if (newValue === undefined$1) { - newValue = srcValue; - } - assignMergeValue(object, key, newValue); - } - }, keysIn); - } - - /** - * A specialized version of `baseMerge` for arrays and objects which performs - * deep merges and tracks traversed objects enabling objects with circular - * references to be merged. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {string} key The key of the value to merge. - * @param {number} srcIndex The index of `source`. - * @param {Function} mergeFunc The function to merge values. - * @param {Function} [customizer] The function to customize assigned values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - */ - function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { - var objValue = safeGet(object, key), - srcValue = safeGet(source, key), - stacked = stack.get(srcValue); - - if (stacked) { - assignMergeValue(object, key, stacked); - return; - } - var newValue = customizer - ? customizer(objValue, srcValue, (key + ''), object, source, stack) - : undefined$1; - - var isCommon = newValue === undefined$1; - - if (isCommon) { - var isArr = isArray(srcValue), - isBuff = !isArr && isBuffer(srcValue), - isTyped = !isArr && !isBuff && isTypedArray(srcValue); - - newValue = srcValue; - if (isArr || isBuff || isTyped) { - if (isArray(objValue)) { - newValue = objValue; - } - else if (isArrayLikeObject(objValue)) { - newValue = copyArray(objValue); - } - else if (isBuff) { - isCommon = false; - newValue = cloneBuffer(srcValue, true); - } - else if (isTyped) { - isCommon = false; - newValue = cloneTypedArray(srcValue, true); - } - else { - newValue = []; - } - } - else if (isPlainObject(srcValue) || isArguments(srcValue)) { - newValue = objValue; - if (isArguments(objValue)) { - newValue = toPlainObject(objValue); - } - else if (!isObject(objValue) || isFunction(objValue)) { - newValue = initCloneObject(srcValue); - } - } - else { - isCommon = false; - } - } - if (isCommon) { - // Recursively merge objects and arrays (susceptible to call stack limits). - stack.set(srcValue, newValue); - mergeFunc(newValue, srcValue, srcIndex, customizer, stack); - stack['delete'](srcValue); - } - assignMergeValue(object, key, newValue); - } - - /** - * The base implementation of `_.nth` which doesn't coerce arguments. - * - * @private - * @param {Array} array The array to query. - * @param {number} n The index of the element to return. - * @returns {*} Returns the nth element of `array`. - */ - function baseNth(array, n) { - var length = array.length; - if (!length) { - return; - } - n += n < 0 ? length : 0; - return isIndex(n, length) ? array[n] : undefined$1; - } - - /** - * The base implementation of `_.orderBy` without param guards. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. - * @param {string[]} orders The sort orders of `iteratees`. - * @returns {Array} Returns the new sorted array. - */ - function baseOrderBy(collection, iteratees, orders) { - if (iteratees.length) { - iteratees = arrayMap(iteratees, function(iteratee) { - if (isArray(iteratee)) { - return function(value) { - return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee); - } - } - return iteratee; - }); - } else { - iteratees = [identity]; - } - - var index = -1; - iteratees = arrayMap(iteratees, baseUnary(getIteratee())); - - var result = baseMap(collection, function(value, key, collection) { - var criteria = arrayMap(iteratees, function(iteratee) { - return iteratee(value); - }); - return { 'criteria': criteria, 'index': ++index, 'value': value }; - }); - - return baseSortBy(result, function(object, other) { - return compareMultiple(object, other, orders); - }); - } - - /** - * The base implementation of `_.pick` without support for individual - * property identifiers. - * - * @private - * @param {Object} object The source object. - * @param {string[]} paths The property paths to pick. - * @returns {Object} Returns the new object. - */ - function basePick(object, paths) { - return basePickBy(object, paths, function(value, path) { - return hasIn(object, path); - }); - } - - /** - * The base implementation of `_.pickBy` without support for iteratee shorthands. - * - * @private - * @param {Object} object The source object. - * @param {string[]} paths The property paths to pick. - * @param {Function} predicate The function invoked per property. - * @returns {Object} Returns the new object. - */ - function basePickBy(object, paths, predicate) { - var index = -1, - length = paths.length, - result = {}; - - while (++index < length) { - var path = paths[index], - value = baseGet(object, path); - - if (predicate(value, path)) { - baseSet(result, castPath(path, object), value); - } - } - return result; - } - - /** - * A specialized version of `baseProperty` which supports deep paths. - * - * @private - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new accessor function. - */ - function basePropertyDeep(path) { - return function(object) { - return baseGet(object, path); - }; - } - - /** - * The base implementation of `_.pullAllBy` without support for iteratee - * shorthands. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns `array`. - */ - function basePullAll(array, values, iteratee, comparator) { - var indexOf = comparator ? baseIndexOfWith : baseIndexOf, - index = -1, - length = values.length, - seen = array; - - if (array === values) { - values = copyArray(values); - } - if (iteratee) { - seen = arrayMap(array, baseUnary(iteratee)); - } - while (++index < length) { - var fromIndex = 0, - value = values[index], - computed = iteratee ? iteratee(value) : value; - - while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) { - if (seen !== array) { - splice.call(seen, fromIndex, 1); - } - splice.call(array, fromIndex, 1); - } - } - return array; - } - - /** - * The base implementation of `_.pullAt` without support for individual - * indexes or capturing the removed elements. - * - * @private - * @param {Array} array The array to modify. - * @param {number[]} indexes The indexes of elements to remove. - * @returns {Array} Returns `array`. - */ - function basePullAt(array, indexes) { - var length = array ? indexes.length : 0, - lastIndex = length - 1; - - while (length--) { - var index = indexes[length]; - if (length == lastIndex || index !== previous) { - var previous = index; - if (isIndex(index)) { - splice.call(array, index, 1); - } else { - baseUnset(array, index); - } - } - } - return array; - } - - /** - * The base implementation of `_.random` without support for returning - * floating-point numbers. - * - * @private - * @param {number} lower The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the random number. - */ - function baseRandom(lower, upper) { - return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); - } - - /** - * The base implementation of `_.range` and `_.rangeRight` which doesn't - * coerce arguments. - * - * @private - * @param {number} start The start of the range. - * @param {number} end The end of the range. - * @param {number} step The value to increment or decrement by. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Array} Returns the range of numbers. - */ - function baseRange(start, end, step, fromRight) { - var index = -1, - length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), - result = Array(length); - - while (length--) { - result[fromRight ? length : ++index] = start; - start += step; - } - return result; - } - - /** - * The base implementation of `_.repeat` which doesn't coerce arguments. - * - * @private - * @param {string} string The string to repeat. - * @param {number} n The number of times to repeat the string. - * @returns {string} Returns the repeated string. - */ - function baseRepeat(string, n) { - var result = ''; - if (!string || n < 1 || n > MAX_SAFE_INTEGER) { - return result; - } - // Leverage the exponentiation by squaring algorithm for a faster repeat. - // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. - do { - if (n % 2) { - result += string; - } - n = nativeFloor(n / 2); - if (n) { - string += string; - } - } while (n); - - return result; - } - - /** - * The base implementation of `_.rest` which doesn't validate or coerce arguments. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @returns {Function} Returns the new function. - */ - function baseRest(func, start) { - return setToString(overRest(func, start, identity), func + ''); - } - - /** - * The base implementation of `_.sample`. - * - * @private - * @param {Array|Object} collection The collection to sample. - * @returns {*} Returns the random element. - */ - function baseSample(collection) { - return arraySample(values(collection)); - } - - /** - * The base implementation of `_.sampleSize` without param guards. - * - * @private - * @param {Array|Object} collection The collection to sample. - * @param {number} n The number of elements to sample. - * @returns {Array} Returns the random elements. - */ - function baseSampleSize(collection, n) { - var array = values(collection); - return shuffleSelf(array, baseClamp(n, 0, array.length)); - } - - /** - * The base implementation of `_.set`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @param {Function} [customizer] The function to customize path creation. - * @returns {Object} Returns `object`. - */ - function baseSet(object, path, value, customizer) { - if (!isObject(object)) { - return object; - } - path = castPath(path, object); - - var index = -1, - length = path.length, - lastIndex = length - 1, - nested = object; - - while (nested != null && ++index < length) { - var key = toKey(path[index]), - newValue = value; - - if (key === '__proto__' || key === 'constructor' || key === 'prototype') { - return object; - } - - if (index != lastIndex) { - var objValue = nested[key]; - newValue = customizer ? customizer(objValue, key, nested) : undefined$1; - if (newValue === undefined$1) { - newValue = isObject(objValue) - ? objValue - : (isIndex(path[index + 1]) ? [] : {}); - } - } - assignValue(nested, key, newValue); - nested = nested[key]; - } - return object; - } - - /** - * The base implementation of `setData` without support for hot loop shorting. - * - * @private - * @param {Function} func The function to associate metadata with. - * @param {*} data The metadata. - * @returns {Function} Returns `func`. - */ - var baseSetData = !metaMap ? identity : function(func, data) { - metaMap.set(func, data); - return func; - }; - - /** - * The base implementation of `setToString` without support for hot loop shorting. - * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. - */ - var baseSetToString = !defineProperty ? identity : function(func, string) { - return defineProperty(func, 'toString', { - 'configurable': true, - 'enumerable': false, - 'value': constant(string), - 'writable': true - }); - }; - - /** - * The base implementation of `_.shuffle`. - * - * @private - * @param {Array|Object} collection The collection to shuffle. - * @returns {Array} Returns the new shuffled array. - */ - function baseShuffle(collection) { - return shuffleSelf(values(collection)); - } - - /** - * The base implementation of `_.slice` without an iteratee call guard. - * - * @private - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. - */ - function baseSlice(array, start, end) { - var index = -1, - length = array.length; - - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = end > length ? length : end; - if (end < 0) { - end += length; - } - length = start > end ? 0 : ((end - start) >>> 0); - start >>>= 0; - - var result = Array(length); - while (++index < length) { - result[index] = array[index + start]; - } - return result; - } - - /** - * The base implementation of `_.some` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ - function baseSome(collection, predicate) { - var result; - - baseEach(collection, function(value, index, collection) { - result = predicate(value, index, collection); - return !result; - }); - return !!result; - } - - /** - * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which - * performs a binary search of `array` to determine the index at which `value` - * should be inserted into `array` in order to maintain its sort order. - * - * @private - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {boolean} [retHighest] Specify returning the highest qualified index. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - */ - function baseSortedIndex(array, value, retHighest) { - var low = 0, - high = array == null ? low : array.length; - - if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { - while (low < high) { - var mid = (low + high) >>> 1, - computed = array[mid]; - - if (computed !== null && !isSymbol(computed) && - (retHighest ? (computed <= value) : (computed < value))) { - low = mid + 1; - } else { - high = mid; - } - } - return high; - } - return baseSortedIndexBy(array, value, identity, retHighest); - } - - /** - * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy` - * which invokes `iteratee` for `value` and each element of `array` to compute - * their sort ranking. The iteratee is invoked with one argument; (value). - * - * @private - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function} iteratee The iteratee invoked per element. - * @param {boolean} [retHighest] Specify returning the highest qualified index. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - */ - function baseSortedIndexBy(array, value, iteratee, retHighest) { - var low = 0, - high = array == null ? 0 : array.length; - if (high === 0) { - return 0; - } - - value = iteratee(value); - var valIsNaN = value !== value, - valIsNull = value === null, - valIsSymbol = isSymbol(value), - valIsUndefined = value === undefined$1; - - while (low < high) { - var mid = nativeFloor((low + high) / 2), - computed = iteratee(array[mid]), - othIsDefined = computed !== undefined$1, - othIsNull = computed === null, - othIsReflexive = computed === computed, - othIsSymbol = isSymbol(computed); - - if (valIsNaN) { - var setLow = retHighest || othIsReflexive; - } else if (valIsUndefined) { - setLow = othIsReflexive && (retHighest || othIsDefined); - } else if (valIsNull) { - setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); - } else if (valIsSymbol) { - setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); - } else if (othIsNull || othIsSymbol) { - setLow = false; - } else { - setLow = retHighest ? (computed <= value) : (computed < value); - } - if (setLow) { - low = mid + 1; - } else { - high = mid; - } - } - return nativeMin(high, MAX_ARRAY_INDEX); - } - - /** - * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @returns {Array} Returns the new duplicate free array. - */ - function baseSortedUniq(array, iteratee) { - var index = -1, - length = array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - if (!index || !eq(computed, seen)) { - var seen = computed; - result[resIndex++] = value === 0 ? 0 : value; - } - } - return result; - } - - /** - * The base implementation of `_.toNumber` which doesn't ensure correct - * conversions of binary, hexadecimal, or octal string values. - * - * @private - * @param {*} value The value to process. - * @returns {number} Returns the number. - */ - function baseToNumber(value) { - if (typeof value == 'number') { - return value; - } - if (isSymbol(value)) { - return NAN; - } - return +value; - } - - /** - * The base implementation of `_.toString` which doesn't convert nullish - * values to empty strings. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ - function baseToString(value) { - // Exit early for strings to avoid a performance hit in some environments. - if (typeof value == 'string') { - return value; - } - if (isArray(value)) { - // Recursively convert values (susceptible to call stack limits). - return arrayMap(value, baseToString) + ''; - } - if (isSymbol(value)) { - return symbolToString ? symbolToString.call(value) : ''; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; - } - - /** - * The base implementation of `_.uniqBy` without support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new duplicate free array. - */ - function baseUniq(array, iteratee, comparator) { - var index = -1, - includes = arrayIncludes, - length = array.length, - isCommon = true, - result = [], - seen = result; - - if (comparator) { - isCommon = false; - includes = arrayIncludesWith; - } - else if (length >= LARGE_ARRAY_SIZE) { - var set = iteratee ? null : createSet(array); - if (set) { - return setToArray(set); - } - isCommon = false; - includes = cacheHas; - seen = new SetCache; - } - else { - seen = iteratee ? [] : result; - } - outer: - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - value = (comparator || value !== 0) ? value : 0; - if (isCommon && computed === computed) { - var seenIndex = seen.length; - while (seenIndex--) { - if (seen[seenIndex] === computed) { - continue outer; - } - } - if (iteratee) { - seen.push(computed); - } - result.push(value); - } - else if (!includes(seen, computed, comparator)) { - if (seen !== result) { - seen.push(computed); - } - result.push(value); - } - } - return result; - } - - /** - * The base implementation of `_.unset`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The property path to unset. - * @returns {boolean} Returns `true` if the property is deleted, else `false`. - */ - function baseUnset(object, path) { - path = castPath(path, object); - object = parent(object, path); - return object == null || delete object[toKey(last(path))]; - } - - /** - * The base implementation of `_.update`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to update. - * @param {Function} updater The function to produce the updated value. - * @param {Function} [customizer] The function to customize path creation. - * @returns {Object} Returns `object`. - */ - function baseUpdate(object, path, updater, customizer) { - return baseSet(object, path, updater(baseGet(object, path)), customizer); - } - - /** - * The base implementation of methods like `_.dropWhile` and `_.takeWhile` - * without support for iteratee shorthands. - * - * @private - * @param {Array} array The array to query. - * @param {Function} predicate The function invoked per iteration. - * @param {boolean} [isDrop] Specify dropping elements instead of taking them. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Array} Returns the slice of `array`. - */ - function baseWhile(array, predicate, isDrop, fromRight) { - var length = array.length, - index = fromRight ? length : -1; - - while ((fromRight ? index-- : ++index < length) && - predicate(array[index], index, array)) {} - - return isDrop - ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length)) - : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index)); - } - - /** - * The base implementation of `wrapperValue` which returns the result of - * performing a sequence of actions on the unwrapped `value`, where each - * successive action is supplied the return value of the previous. - * - * @private - * @param {*} value The unwrapped value. - * @param {Array} actions Actions to perform to resolve the unwrapped value. - * @returns {*} Returns the resolved value. - */ - function baseWrapperValue(value, actions) { - var result = value; - if (result instanceof LazyWrapper) { - result = result.value(); - } - return arrayReduce(actions, function(result, action) { - return action.func.apply(action.thisArg, arrayPush([result], action.args)); - }, result); - } - - /** - * The base implementation of methods like `_.xor`, without support for - * iteratee shorthands, that accepts an array of arrays to inspect. - * - * @private - * @param {Array} arrays The arrays to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of values. - */ - function baseXor(arrays, iteratee, comparator) { - var length = arrays.length; - if (length < 2) { - return length ? baseUniq(arrays[0]) : []; - } - var index = -1, - result = Array(length); - - while (++index < length) { - var array = arrays[index], - othIndex = -1; - - while (++othIndex < length) { - if (othIndex != index) { - result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator); - } - } - } - return baseUniq(baseFlatten(result, 1), iteratee, comparator); - } - - /** - * This base implementation of `_.zipObject` which assigns values using `assignFunc`. - * - * @private - * @param {Array} props The property identifiers. - * @param {Array} values The property values. - * @param {Function} assignFunc The function to assign values. - * @returns {Object} Returns the new object. - */ - function baseZipObject(props, values, assignFunc) { - var index = -1, - length = props.length, - valsLength = values.length, - result = {}; - - while (++index < length) { - var value = index < valsLength ? values[index] : undefined$1; - assignFunc(result, props[index], value); - } - return result; - } - - /** - * Casts `value` to an empty array if it's not an array like object. - * - * @private - * @param {*} value The value to inspect. - * @returns {Array|Object} Returns the cast array-like object. - */ - function castArrayLikeObject(value) { - return isArrayLikeObject(value) ? value : []; - } - - /** - * Casts `value` to `identity` if it's not a function. - * - * @private - * @param {*} value The value to inspect. - * @returns {Function} Returns cast function. - */ - function castFunction(value) { - return typeof value == 'function' ? value : identity; - } - - /** - * Casts `value` to a path array if it's not one. - * - * @private - * @param {*} value The value to inspect. - * @param {Object} [object] The object to query keys on. - * @returns {Array} Returns the cast property path array. - */ - function castPath(value, object) { - if (isArray(value)) { - return value; - } - return isKey(value, object) ? [value] : stringToPath(toString(value)); - } - - /** - * A `baseRest` alias which can be replaced with `identity` by module - * replacement plugins. - * - * @private - * @type {Function} - * @param {Function} func The function to apply a rest parameter to. - * @returns {Function} Returns the new function. - */ - var castRest = baseRest; - - /** - * Casts `array` to a slice if it's needed. - * - * @private - * @param {Array} array The array to inspect. - * @param {number} start The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the cast slice. - */ - function castSlice(array, start, end) { - var length = array.length; - end = end === undefined$1 ? length : end; - return (!start && end >= length) ? array : baseSlice(array, start, end); - } - - /** - * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout). - * - * @private - * @param {number|Object} id The timer id or timeout object of the timer to clear. - */ - var clearTimeout = ctxClearTimeout || function(id) { - return root.clearTimeout(id); - }; - - /** - * Creates a clone of `buffer`. - * - * @private - * @param {Buffer} buffer The buffer to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Buffer} Returns the cloned buffer. - */ - function cloneBuffer(buffer, isDeep) { - if (isDeep) { - return buffer.slice(); - } - var length = buffer.length, - result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); - - buffer.copy(result); - return result; - } - - /** - * Creates a clone of `arrayBuffer`. - * - * @private - * @param {ArrayBuffer} arrayBuffer The array buffer to clone. - * @returns {ArrayBuffer} Returns the cloned array buffer. - */ - function cloneArrayBuffer(arrayBuffer) { - var result = new arrayBuffer.constructor(arrayBuffer.byteLength); - new Uint8Array(result).set(new Uint8Array(arrayBuffer)); - return result; - } - - /** - * Creates a clone of `dataView`. - * - * @private - * @param {Object} dataView The data view to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned data view. - */ - function cloneDataView(dataView, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; - return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); - } - - /** - * Creates a clone of `regexp`. - * - * @private - * @param {Object} regexp The regexp to clone. - * @returns {Object} Returns the cloned regexp. - */ - function cloneRegExp(regexp) { - var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); - result.lastIndex = regexp.lastIndex; - return result; - } - - /** - * Creates a clone of the `symbol` object. - * - * @private - * @param {Object} symbol The symbol object to clone. - * @returns {Object} Returns the cloned symbol object. - */ - function cloneSymbol(symbol) { - return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; - } - - /** - * Creates a clone of `typedArray`. - * - * @private - * @param {Object} typedArray The typed array to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned typed array. - */ - function cloneTypedArray(typedArray, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; - return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); - } - - /** - * Compares values to sort them in ascending order. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {number} Returns the sort order indicator for `value`. - */ - function compareAscending(value, other) { - if (value !== other) { - var valIsDefined = value !== undefined$1, - valIsNull = value === null, - valIsReflexive = value === value, - valIsSymbol = isSymbol(value); - - var othIsDefined = other !== undefined$1, - othIsNull = other === null, - othIsReflexive = other === other, - othIsSymbol = isSymbol(other); - - if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || - (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || - (valIsNull && othIsDefined && othIsReflexive) || - (!valIsDefined && othIsReflexive) || - !valIsReflexive) { - return 1; - } - if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || - (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || - (othIsNull && valIsDefined && valIsReflexive) || - (!othIsDefined && valIsReflexive) || - !othIsReflexive) { - return -1; - } - } - return 0; - } - - /** - * Used by `_.orderBy` to compare multiple properties of a value to another - * and stable sort them. - * - * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, - * specify an order of "desc" for descending or "asc" for ascending sort order - * of corresponding values. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {boolean[]|string[]} orders The order to sort by for each property. - * @returns {number} Returns the sort order indicator for `object`. - */ - function compareMultiple(object, other, orders) { - var index = -1, - objCriteria = object.criteria, - othCriteria = other.criteria, - length = objCriteria.length, - ordersLength = orders.length; - - while (++index < length) { - var result = compareAscending(objCriteria[index], othCriteria[index]); - if (result) { - if (index >= ordersLength) { - return result; - } - var order = orders[index]; - return result * (order == 'desc' ? -1 : 1); - } - } - // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications - // that causes it, under certain circumstances, to provide the same value for - // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 - // for more details. - // - // This also ensures a stable sort in V8 and other engines. - // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. - return object.index - other.index; - } - - /** - * Creates an array that is the composition of partially applied arguments, - * placeholders, and provided arguments into a single array of arguments. - * - * @private - * @param {Array} args The provided arguments. - * @param {Array} partials The arguments to prepend to those provided. - * @param {Array} holders The `partials` placeholder indexes. - * @params {boolean} [isCurried] Specify composing for a curried function. - * @returns {Array} Returns the new array of composed arguments. - */ - function composeArgs(args, partials, holders, isCurried) { - var argsIndex = -1, - argsLength = args.length, - holdersLength = holders.length, - leftIndex = -1, - leftLength = partials.length, - rangeLength = nativeMax(argsLength - holdersLength, 0), - result = Array(leftLength + rangeLength), - isUncurried = !isCurried; - - while (++leftIndex < leftLength) { - result[leftIndex] = partials[leftIndex]; - } - while (++argsIndex < holdersLength) { - if (isUncurried || argsIndex < argsLength) { - result[holders[argsIndex]] = args[argsIndex]; - } - } - while (rangeLength--) { - result[leftIndex++] = args[argsIndex++]; - } - return result; - } - - /** - * This function is like `composeArgs` except that the arguments composition - * is tailored for `_.partialRight`. - * - * @private - * @param {Array} args The provided arguments. - * @param {Array} partials The arguments to append to those provided. - * @param {Array} holders The `partials` placeholder indexes. - * @params {boolean} [isCurried] Specify composing for a curried function. - * @returns {Array} Returns the new array of composed arguments. - */ - function composeArgsRight(args, partials, holders, isCurried) { - var argsIndex = -1, - argsLength = args.length, - holdersIndex = -1, - holdersLength = holders.length, - rightIndex = -1, - rightLength = partials.length, - rangeLength = nativeMax(argsLength - holdersLength, 0), - result = Array(rangeLength + rightLength), - isUncurried = !isCurried; - - while (++argsIndex < rangeLength) { - result[argsIndex] = args[argsIndex]; - } - var offset = argsIndex; - while (++rightIndex < rightLength) { - result[offset + rightIndex] = partials[rightIndex]; - } - while (++holdersIndex < holdersLength) { - if (isUncurried || argsIndex < argsLength) { - result[offset + holders[holdersIndex]] = args[argsIndex++]; - } - } - return result; - } - - /** - * Copies the values of `source` to `array`. - * - * @private - * @param {Array} source The array to copy values from. - * @param {Array} [array=[]] The array to copy values to. - * @returns {Array} Returns `array`. - */ - function copyArray(source, array) { - var index = -1, - length = source.length; - - array || (array = Array(length)); - while (++index < length) { - array[index] = source[index]; - } - return array; - } - - /** - * Copies properties of `source` to `object`. - * - * @private - * @param {Object} source The object to copy properties from. - * @param {Array} props The property identifiers to copy. - * @param {Object} [object={}] The object to copy properties to. - * @param {Function} [customizer] The function to customize copied values. - * @returns {Object} Returns `object`. - */ - function copyObject(source, props, object, customizer) { - var isNew = !object; - object || (object = {}); - - var index = -1, - length = props.length; - - while (++index < length) { - var key = props[index]; - - var newValue = customizer - ? customizer(object[key], source[key], key, object, source) - : undefined$1; - - if (newValue === undefined$1) { - newValue = source[key]; - } - if (isNew) { - baseAssignValue(object, key, newValue); - } else { - assignValue(object, key, newValue); - } - } - return object; - } - - /** - * Copies own symbols of `source` to `object`. - * - * @private - * @param {Object} source The object to copy symbols from. - * @param {Object} [object={}] The object to copy symbols to. - * @returns {Object} Returns `object`. - */ - function copySymbols(source, object) { - return copyObject(source, getSymbols(source), object); - } - - /** - * Copies own and inherited symbols of `source` to `object`. - * - * @private - * @param {Object} source The object to copy symbols from. - * @param {Object} [object={}] The object to copy symbols to. - * @returns {Object} Returns `object`. - */ - function copySymbolsIn(source, object) { - return copyObject(source, getSymbolsIn(source), object); - } - - /** - * Creates a function like `_.groupBy`. - * - * @private - * @param {Function} setter The function to set accumulator values. - * @param {Function} [initializer] The accumulator object initializer. - * @returns {Function} Returns the new aggregator function. - */ - function createAggregator(setter, initializer) { - return function(collection, iteratee) { - var func = isArray(collection) ? arrayAggregator : baseAggregator, - accumulator = initializer ? initializer() : {}; - - return func(collection, setter, getIteratee(iteratee, 2), accumulator); - }; - } - - /** - * Creates a function like `_.assign`. - * - * @private - * @param {Function} assigner The function to assign values. - * @returns {Function} Returns the new assigner function. - */ - function createAssigner(assigner) { - return baseRest(function(object, sources) { - var index = -1, - length = sources.length, - customizer = length > 1 ? sources[length - 1] : undefined$1, - guard = length > 2 ? sources[2] : undefined$1; - - customizer = (assigner.length > 3 && typeof customizer == 'function') - ? (length--, customizer) - : undefined$1; - - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - customizer = length < 3 ? undefined$1 : customizer; - length = 1; - } - object = Object(object); - while (++index < length) { - var source = sources[index]; - if (source) { - assigner(object, source, index, customizer); - } - } - return object; - }); - } - - /** - * Creates a `baseEach` or `baseEachRight` function. - * - * @private - * @param {Function} eachFunc The function to iterate over a collection. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ - function createBaseEach(eachFunc, fromRight) { - return function(collection, iteratee) { - if (collection == null) { - return collection; - } - if (!isArrayLike(collection)) { - return eachFunc(collection, iteratee); - } - var length = collection.length, - index = fromRight ? length : -1, - iterable = Object(collection); - - while ((fromRight ? index-- : ++index < length)) { - if (iteratee(iterable[index], index, iterable) === false) { - break; - } - } - return collection; - }; - } - - /** - * Creates a base function for methods like `_.forIn` and `_.forOwn`. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ - function createBaseFor(fromRight) { - return function(object, iteratee, keysFunc) { - var index = -1, - iterable = Object(object), - props = keysFunc(object), - length = props.length; - - while (length--) { - var key = props[fromRight ? length : ++index]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; - }; - } - - /** - * Creates a function that wraps `func` to invoke it with the optional `this` - * binding of `thisArg`. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} [thisArg] The `this` binding of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createBind(func, bitmask, thisArg) { - var isBind = bitmask & WRAP_BIND_FLAG, - Ctor = createCtor(func); - - function wrapper() { - var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - return fn.apply(isBind ? thisArg : this, arguments); - } - return wrapper; - } - - /** - * Creates a function like `_.lowerFirst`. - * - * @private - * @param {string} methodName The name of the `String` case method to use. - * @returns {Function} Returns the new case function. - */ - function createCaseFirst(methodName) { - return function(string) { - string = toString(string); - - var strSymbols = hasUnicode(string) - ? stringToArray(string) - : undefined$1; - - var chr = strSymbols - ? strSymbols[0] - : string.charAt(0); - - var trailing = strSymbols - ? castSlice(strSymbols, 1).join('') - : string.slice(1); - - return chr[methodName]() + trailing; - }; - } - - /** - * Creates a function like `_.camelCase`. - * - * @private - * @param {Function} callback The function to combine each word. - * @returns {Function} Returns the new compounder function. - */ - function createCompounder(callback) { - return function(string) { - return arrayReduce(words(deburr(string).replace(reApos, '')), callback, ''); - }; - } - - /** - * Creates a function that produces an instance of `Ctor` regardless of - * whether it was invoked as part of a `new` expression or by `call` or `apply`. - * - * @private - * @param {Function} Ctor The constructor to wrap. - * @returns {Function} Returns the new wrapped function. - */ - function createCtor(Ctor) { - return function() { - // Use a `switch` statement to work with class constructors. See - // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist - // for more details. - var args = arguments; - switch (args.length) { - case 0: return new Ctor; - case 1: return new Ctor(args[0]); - case 2: return new Ctor(args[0], args[1]); - case 3: return new Ctor(args[0], args[1], args[2]); - case 4: return new Ctor(args[0], args[1], args[2], args[3]); - case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); - case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); - case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); - } - var thisBinding = baseCreate(Ctor.prototype), - result = Ctor.apply(thisBinding, args); - - // Mimic the constructor's `return` behavior. - // See https://es5.github.io/#x13.2.2 for more details. - return isObject(result) ? result : thisBinding; - }; - } - - /** - * Creates a function that wraps `func` to enable currying. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {number} arity The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createCurry(func, bitmask, arity) { - var Ctor = createCtor(func); - - function wrapper() { - var length = arguments.length, - args = Array(length), - index = length, - placeholder = getHolder(wrapper); - - while (index--) { - args[index] = arguments[index]; - } - var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder) - ? [] - : replaceHolders(args, placeholder); - - length -= holders.length; - if (length < arity) { - return createRecurry( - func, bitmask, createHybrid, wrapper.placeholder, undefined$1, - args, holders, undefined$1, undefined$1, arity - length); - } - var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - return apply(fn, this, args); - } - return wrapper; - } - - /** - * Creates a `_.find` or `_.findLast` function. - * - * @private - * @param {Function} findIndexFunc The function to find the collection index. - * @returns {Function} Returns the new find function. - */ - function createFind(findIndexFunc) { - return function(collection, predicate, fromIndex) { - var iterable = Object(collection); - if (!isArrayLike(collection)) { - var iteratee = getIteratee(predicate, 3); - collection = keys(collection); - predicate = function(key) { return iteratee(iterable[key], key, iterable); }; - } - var index = findIndexFunc(collection, predicate, fromIndex); - return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined$1; - }; - } - - /** - * Creates a `_.flow` or `_.flowRight` function. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new flow function. - */ - function createFlow(fromRight) { - return flatRest(function(funcs) { - var length = funcs.length, - index = length, - prereq = LodashWrapper.prototype.thru; - - if (fromRight) { - funcs.reverse(); - } - while (index--) { - var func = funcs[index]; - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - if (prereq && !wrapper && getFuncName(func) == 'wrapper') { - var wrapper = new LodashWrapper([], true); - } - } - index = wrapper ? index : length; - while (++index < length) { - func = funcs[index]; - - var funcName = getFuncName(func), - data = funcName == 'wrapper' ? getData(func) : undefined$1; - - if (data && isLaziable(data[0]) && - data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && - !data[4].length && data[9] == 1 - ) { - wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); - } else { - wrapper = (func.length == 1 && isLaziable(func)) - ? wrapper[funcName]() - : wrapper.thru(func); - } - } - return function() { - var args = arguments, - value = args[0]; - - if (wrapper && args.length == 1 && isArray(value)) { - return wrapper.plant(value).value(); - } - var index = 0, - result = length ? funcs[index].apply(this, args) : value; - - while (++index < length) { - result = funcs[index].call(this, result); - } - return result; - }; - }); - } - - /** - * Creates a function that wraps `func` to invoke it with optional `this` - * binding of `thisArg`, partial application, and currying. - * - * @private - * @param {Function|string} func The function or method name to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to prepend to those provided to - * the new function. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [partialsRight] The arguments to append to those provided - * to the new function. - * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { - var isAry = bitmask & WRAP_ARY_FLAG, - isBind = bitmask & WRAP_BIND_FLAG, - isBindKey = bitmask & WRAP_BIND_KEY_FLAG, - isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), - isFlip = bitmask & WRAP_FLIP_FLAG, - Ctor = isBindKey ? undefined$1 : createCtor(func); - - function wrapper() { - var length = arguments.length, - args = Array(length), - index = length; - - while (index--) { - args[index] = arguments[index]; - } - if (isCurried) { - var placeholder = getHolder(wrapper), - holdersCount = countHolders(args, placeholder); - } - if (partials) { - args = composeArgs(args, partials, holders, isCurried); - } - if (partialsRight) { - args = composeArgsRight(args, partialsRight, holdersRight, isCurried); - } - length -= holdersCount; - if (isCurried && length < arity) { - var newHolders = replaceHolders(args, placeholder); - return createRecurry( - func, bitmask, createHybrid, wrapper.placeholder, thisArg, - args, newHolders, argPos, ary, arity - length - ); - } - var thisBinding = isBind ? thisArg : this, - fn = isBindKey ? thisBinding[func] : func; - - length = args.length; - if (argPos) { - args = reorder(args, argPos); - } else if (isFlip && length > 1) { - args.reverse(); - } - if (isAry && ary < length) { - args.length = ary; - } - if (this && this !== root && this instanceof wrapper) { - fn = Ctor || createCtor(fn); - } - return fn.apply(thisBinding, args); - } - return wrapper; - } - - /** - * Creates a function like `_.invertBy`. - * - * @private - * @param {Function} setter The function to set accumulator values. - * @param {Function} toIteratee The function to resolve iteratees. - * @returns {Function} Returns the new inverter function. - */ - function createInverter(setter, toIteratee) { - return function(object, iteratee) { - return baseInverter(object, setter, toIteratee(iteratee), {}); - }; - } - - /** - * Creates a function that performs a mathematical operation on two values. - * - * @private - * @param {Function} operator The function to perform the operation. - * @param {number} [defaultValue] The value used for `undefined` arguments. - * @returns {Function} Returns the new mathematical operation function. - */ - function createMathOperation(operator, defaultValue) { - return function(value, other) { - var result; - if (value === undefined$1 && other === undefined$1) { - return defaultValue; - } - if (value !== undefined$1) { - result = value; - } - if (other !== undefined$1) { - if (result === undefined$1) { - return other; - } - if (typeof value == 'string' || typeof other == 'string') { - value = baseToString(value); - other = baseToString(other); - } else { - value = baseToNumber(value); - other = baseToNumber(other); - } - result = operator(value, other); - } - return result; - }; - } - - /** - * Creates a function like `_.over`. - * - * @private - * @param {Function} arrayFunc The function to iterate over iteratees. - * @returns {Function} Returns the new over function. - */ - function createOver(arrayFunc) { - return flatRest(function(iteratees) { - iteratees = arrayMap(iteratees, baseUnary(getIteratee())); - return baseRest(function(args) { - var thisArg = this; - return arrayFunc(iteratees, function(iteratee) { - return apply(iteratee, thisArg, args); - }); - }); - }); - } - - /** - * Creates the padding for `string` based on `length`. The `chars` string - * is truncated if the number of characters exceeds `length`. - * - * @private - * @param {number} length The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padding for `string`. - */ - function createPadding(length, chars) { - chars = chars === undefined$1 ? ' ' : baseToString(chars); - - var charsLength = chars.length; - if (charsLength < 2) { - return charsLength ? baseRepeat(chars, length) : chars; - } - var result = baseRepeat(chars, nativeCeil(length / stringSize(chars))); - return hasUnicode(chars) - ? castSlice(stringToArray(result), 0, length).join('') - : result.slice(0, length); - } - - /** - * Creates a function that wraps `func` to invoke it with the `this` binding - * of `thisArg` and `partials` prepended to the arguments it receives. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} partials The arguments to prepend to those provided to - * the new function. - * @returns {Function} Returns the new wrapped function. - */ - function createPartial(func, bitmask, thisArg, partials) { - var isBind = bitmask & WRAP_BIND_FLAG, - Ctor = createCtor(func); - - function wrapper() { - var argsIndex = -1, - argsLength = arguments.length, - leftIndex = -1, - leftLength = partials.length, - args = Array(leftLength + argsLength), - fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - - while (++leftIndex < leftLength) { - args[leftIndex] = partials[leftIndex]; - } - while (argsLength--) { - args[leftIndex++] = arguments[++argsIndex]; - } - return apply(fn, isBind ? thisArg : this, args); - } - return wrapper; - } - - /** - * Creates a `_.range` or `_.rangeRight` function. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new range function. - */ - function createRange(fromRight) { - return function(start, end, step) { - if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { - end = step = undefined$1; - } - // Ensure the sign of `-0` is preserved. - start = toFinite(start); - if (end === undefined$1) { - end = start; - start = 0; - } else { - end = toFinite(end); - } - step = step === undefined$1 ? (start < end ? 1 : -1) : toFinite(step); - return baseRange(start, end, step, fromRight); - }; - } - - /** - * Creates a function that performs a relational operation on two values. - * - * @private - * @param {Function} operator The function to perform the operation. - * @returns {Function} Returns the new relational operation function. - */ - function createRelationalOperation(operator) { - return function(value, other) { - if (!(typeof value == 'string' && typeof other == 'string')) { - value = toNumber(value); - other = toNumber(other); - } - return operator(value, other); - }; - } - - /** - * Creates a function that wraps `func` to continue currying. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {Function} wrapFunc The function to create the `func` wrapper. - * @param {*} placeholder The placeholder value. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to prepend to those provided to - * the new function. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) { - var isCurry = bitmask & WRAP_CURRY_FLAG, - newHolders = isCurry ? holders : undefined$1, - newHoldersRight = isCurry ? undefined$1 : holders, - newPartials = isCurry ? partials : undefined$1, - newPartialsRight = isCurry ? undefined$1 : partials; - - bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG); - bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG); - - if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { - bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG); - } - var newData = [ - func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, - newHoldersRight, argPos, ary, arity - ]; - - var result = wrapFunc.apply(undefined$1, newData); - if (isLaziable(func)) { - setData(result, newData); - } - result.placeholder = placeholder; - return setWrapToString(result, func, bitmask); - } - - /** - * Creates a function like `_.round`. - * - * @private - * @param {string} methodName The name of the `Math` method to use when rounding. - * @returns {Function} Returns the new round function. - */ - function createRound(methodName) { - var func = Math[methodName]; - return function(number, precision) { - number = toNumber(number); - precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); - if (precision && nativeIsFinite(number)) { - // Shift with exponential notation to avoid floating-point issues. - // See [MDN](https://mdn.io/round#Examples) for more details. - var pair = (toString(number) + 'e').split('e'), - value = func(pair[0] + 'e' + (+pair[1] + precision)); - - pair = (toString(value) + 'e').split('e'); - return +(pair[0] + 'e' + (+pair[1] - precision)); - } - return func(number); - }; - } - - /** - * Creates a set object of `values`. - * - * @private - * @param {Array} values The values to add to the set. - * @returns {Object} Returns the new set. - */ - var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { - return new Set(values); - }; - - /** - * Creates a `_.toPairs` or `_.toPairsIn` function. - * - * @private - * @param {Function} keysFunc The function to get the keys of a given object. - * @returns {Function} Returns the new pairs function. - */ - function createToPairs(keysFunc) { - return function(object) { - var tag = getTag(object); - if (tag == mapTag) { - return mapToArray(object); - } - if (tag == setTag) { - return setToPairs(object); - } - return baseToPairs(object, keysFunc(object)); - }; - } - - /** - * Creates a function that either curries or invokes `func` with optional - * `this` binding and partially applied arguments. - * - * @private - * @param {Function|string} func The function or method name to wrap. - * @param {number} bitmask The bitmask flags. - * 1 - `_.bind` - * 2 - `_.bindKey` - * 4 - `_.curry` or `_.curryRight` of a bound function - * 8 - `_.curry` - * 16 - `_.curryRight` - * 32 - `_.partial` - * 64 - `_.partialRight` - * 128 - `_.rearg` - * 256 - `_.ary` - * 512 - `_.flip` - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to be partially applied. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { - var isBindKey = bitmask & WRAP_BIND_KEY_FLAG; - if (!isBindKey && typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - var length = partials ? partials.length : 0; - if (!length) { - bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG); - partials = holders = undefined$1; - } - ary = ary === undefined$1 ? ary : nativeMax(toInteger(ary), 0); - arity = arity === undefined$1 ? arity : toInteger(arity); - length -= holders ? holders.length : 0; - - if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) { - var partialsRight = partials, - holdersRight = holders; - - partials = holders = undefined$1; - } - var data = isBindKey ? undefined$1 : getData(func); - - var newData = [ - func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, - argPos, ary, arity - ]; - - if (data) { - mergeData(newData, data); - } - func = newData[0]; - bitmask = newData[1]; - thisArg = newData[2]; - partials = newData[3]; - holders = newData[4]; - arity = newData[9] = newData[9] === undefined$1 - ? (isBindKey ? 0 : func.length) - : nativeMax(newData[9] - length, 0); - - if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { - bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); - } - if (!bitmask || bitmask == WRAP_BIND_FLAG) { - var result = createBind(func, bitmask, thisArg); - } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) { - result = createCurry(func, bitmask, arity); - } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) { - result = createPartial(func, bitmask, thisArg, partials); - } else { - result = createHybrid.apply(undefined$1, newData); - } - var setter = data ? baseSetData : setData; - return setWrapToString(setter(result, newData), func, bitmask); - } - - /** - * Used by `_.defaults` to customize its `_.assignIn` use to assign properties - * of source objects to the destination object for all destination properties - * that resolve to `undefined`. - * - * @private - * @param {*} objValue The destination value. - * @param {*} srcValue The source value. - * @param {string} key The key of the property to assign. - * @param {Object} object The parent object of `objValue`. - * @returns {*} Returns the value to assign. - */ - function customDefaultsAssignIn(objValue, srcValue, key, object) { - if (objValue === undefined$1 || - (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) { - return srcValue; - } - return objValue; - } - - /** - * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source - * objects into destination objects that are passed thru. - * - * @private - * @param {*} objValue The destination value. - * @param {*} srcValue The source value. - * @param {string} key The key of the property to merge. - * @param {Object} object The parent object of `objValue`. - * @param {Object} source The parent object of `srcValue`. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - * @returns {*} Returns the value to assign. - */ - function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { - if (isObject(objValue) && isObject(srcValue)) { - // Recursively merge objects and arrays (susceptible to call stack limits). - stack.set(srcValue, objValue); - baseMerge(objValue, srcValue, undefined$1, customDefaultsMerge, stack); - stack['delete'](srcValue); - } - return objValue; - } - - /** - * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain - * objects. - * - * @private - * @param {*} value The value to inspect. - * @param {string} key The key of the property to inspect. - * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`. - */ - function customOmitClone(value) { - return isPlainObject(value) ? undefined$1 : value; - } - - /** - * A specialized version of `baseIsEqualDeep` for arrays with support for - * partial deep comparisons. - * - * @private - * @param {Array} array The array to compare. - * @param {Array} other The other array to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `array` and `other` objects. - * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. - */ - function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, - arrLength = array.length, - othLength = other.length; - - if (arrLength != othLength && !(isPartial && othLength > arrLength)) { - return false; - } - // Check that cyclic values are equal. - var arrStacked = stack.get(array); - var othStacked = stack.get(other); - if (arrStacked && othStacked) { - return arrStacked == other && othStacked == array; - } - var index = -1, - result = true, - seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined$1; - - stack.set(array, other); - stack.set(other, array); - - // Ignore non-index properties. - while (++index < arrLength) { - var arrValue = array[index], - othValue = other[index]; - - if (customizer) { - var compared = isPartial - ? customizer(othValue, arrValue, index, other, array, stack) - : customizer(arrValue, othValue, index, array, other, stack); - } - if (compared !== undefined$1) { - if (compared) { - continue; - } - result = false; - break; - } - // Recursively compare arrays (susceptible to call stack limits). - if (seen) { - if (!arraySome(other, function(othValue, othIndex) { - if (!cacheHas(seen, othIndex) && - (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { - return seen.push(othIndex); - } - })) { - result = false; - break; - } - } else if (!( - arrValue === othValue || - equalFunc(arrValue, othValue, bitmask, customizer, stack) - )) { - result = false; - break; - } - } - stack['delete'](array); - stack['delete'](other); - return result; - } - - /** - * A specialized version of `baseIsEqualDeep` for comparing objects of - * the same `toStringTag`. - * - * **Note:** This function only supports comparing values with tags of - * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {string} tag The `toStringTag` of the objects to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { - switch (tag) { - case dataViewTag: - if ((object.byteLength != other.byteLength) || - (object.byteOffset != other.byteOffset)) { - return false; - } - object = object.buffer; - other = other.buffer; - - case arrayBufferTag: - if ((object.byteLength != other.byteLength) || - !equalFunc(new Uint8Array(object), new Uint8Array(other))) { - return false; - } - return true; - - case boolTag: - case dateTag: - case numberTag: - // Coerce booleans to `1` or `0` and dates to milliseconds. - // Invalid dates are coerced to `NaN`. - return eq(+object, +other); - - case errorTag: - return object.name == other.name && object.message == other.message; - - case regexpTag: - case stringTag: - // Coerce regexes to strings and treat strings, primitives and objects, - // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring - // for more details. - return object == (other + ''); - - case mapTag: - var convert = mapToArray; - - case setTag: - var isPartial = bitmask & COMPARE_PARTIAL_FLAG; - convert || (convert = setToArray); - - if (object.size != other.size && !isPartial) { - return false; - } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked) { - return stacked == other; - } - bitmask |= COMPARE_UNORDERED_FLAG; - - // Recursively compare objects (susceptible to call stack limits). - stack.set(object, other); - var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); - stack['delete'](object); - return result; - - case symbolTag: - if (symbolValueOf) { - return symbolValueOf.call(object) == symbolValueOf.call(other); - } - } - return false; - } - - /** - * A specialized version of `baseIsEqualDeep` for objects with support for - * partial deep comparisons. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, - objProps = getAllKeys(object), - objLength = objProps.length, - othProps = getAllKeys(other), - othLength = othProps.length; - - if (objLength != othLength && !isPartial) { - return false; - } - var index = objLength; - while (index--) { - var key = objProps[index]; - if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { - return false; - } - } - // Check that cyclic values are equal. - var objStacked = stack.get(object); - var othStacked = stack.get(other); - if (objStacked && othStacked) { - return objStacked == other && othStacked == object; - } - var result = true; - stack.set(object, other); - stack.set(other, object); - - var skipCtor = isPartial; - while (++index < objLength) { - key = objProps[index]; - var objValue = object[key], - othValue = other[key]; - - if (customizer) { - var compared = isPartial - ? customizer(othValue, objValue, key, other, object, stack) - : customizer(objValue, othValue, key, object, other, stack); - } - // Recursively compare objects (susceptible to call stack limits). - if (!(compared === undefined$1 - ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) - : compared - )) { - result = false; - break; - } - skipCtor || (skipCtor = key == 'constructor'); - } - if (result && !skipCtor) { - var objCtor = object.constructor, - othCtor = other.constructor; - - // Non `Object` object instances with different constructors are not equal. - if (objCtor != othCtor && - ('constructor' in object && 'constructor' in other) && - !(typeof objCtor == 'function' && objCtor instanceof objCtor && - typeof othCtor == 'function' && othCtor instanceof othCtor)) { - result = false; - } - } - stack['delete'](object); - stack['delete'](other); - return result; - } - - /** - * A specialized version of `baseRest` which flattens the rest array. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @returns {Function} Returns the new function. - */ - function flatRest(func) { - return setToString(overRest(func, undefined$1, flatten), func + ''); - } - - /** - * Creates an array of own enumerable property names and symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. - */ - function getAllKeys(object) { - return baseGetAllKeys(object, keys, getSymbols); - } - - /** - * Creates an array of own and inherited enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. - */ - function getAllKeysIn(object) { - return baseGetAllKeys(object, keysIn, getSymbolsIn); - } - - /** - * Gets metadata for `func`. - * - * @private - * @param {Function} func The function to query. - * @returns {*} Returns the metadata for `func`. - */ - var getData = !metaMap ? noop : function(func) { - return metaMap.get(func); - }; - - /** - * Gets the name of `func`. - * - * @private - * @param {Function} func The function to query. - * @returns {string} Returns the function name. - */ - function getFuncName(func) { - var result = (func.name + ''), - array = realNames[result], - length = hasOwnProperty.call(realNames, result) ? array.length : 0; - - while (length--) { - var data = array[length], - otherFunc = data.func; - if (otherFunc == null || otherFunc == func) { - return data.name; - } - } - return result; - } - - /** - * Gets the argument placeholder value for `func`. - * - * @private - * @param {Function} func The function to inspect. - * @returns {*} Returns the placeholder value. - */ - function getHolder(func) { - var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func; - return object.placeholder; - } - - /** - * Gets the appropriate "iteratee" function. If `_.iteratee` is customized, - * this function returns the custom method, otherwise it returns `baseIteratee`. - * If arguments are provided, the chosen function is invoked with them and - * its result is returned. - * - * @private - * @param {*} [value] The value to convert to an iteratee. - * @param {number} [arity] The arity of the created iteratee. - * @returns {Function} Returns the chosen function or its result. - */ - function getIteratee() { - var result = lodash.iteratee || iteratee; - result = result === iteratee ? baseIteratee : result; - return arguments.length ? result(arguments[0], arguments[1]) : result; - } - - /** - * Gets the data for `map`. - * - * @private - * @param {Object} map The map to query. - * @param {string} key The reference key. - * @returns {*} Returns the map data. - */ - function getMapData(map, key) { - var data = map.__data__; - return isKeyable(key) - ? data[typeof key == 'string' ? 'string' : 'hash'] - : data.map; - } - - /** - * Gets the property names, values, and compare flags of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the match data of `object`. - */ - function getMatchData(object) { - var result = keys(object), - length = result.length; - - while (length--) { - var key = result[length], - value = object[key]; - - result[length] = [key, value, isStrictComparable(value)]; - } - return result; - } - - /** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ - function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined$1; - } - - /** - * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the raw `toStringTag`. - */ - function getRawTag(value) { - var isOwn = hasOwnProperty.call(value, symToStringTag), - tag = value[symToStringTag]; - - try { - value[symToStringTag] = undefined$1; - var unmasked = true; - } catch (e) {} - - var result = nativeObjectToString.call(value); - if (unmasked) { - if (isOwn) { - value[symToStringTag] = tag; - } else { - delete value[symToStringTag]; - } - } - return result; - } - - /** - * Creates an array of the own enumerable symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ - var getSymbols = !nativeGetSymbols ? stubArray : function(object) { - if (object == null) { - return []; - } - object = Object(object); - return arrayFilter(nativeGetSymbols(object), function(symbol) { - return propertyIsEnumerable.call(object, symbol); - }); - }; - - /** - * Creates an array of the own and inherited enumerable symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ - var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { - var result = []; - while (object) { - arrayPush(result, getSymbols(object)); - object = getPrototype(object); - } - return result; - }; - - /** - * Gets the `toStringTag` of `value`. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ - var getTag = baseGetTag; - - // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. - if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || - (Map && getTag(new Map) != mapTag) || - (Promise && getTag(Promise.resolve()) != promiseTag) || - (Set && getTag(new Set) != setTag) || - (WeakMap && getTag(new WeakMap) != weakMapTag)) { - getTag = function(value) { - var result = baseGetTag(value), - Ctor = result == objectTag ? value.constructor : undefined$1, - ctorString = Ctor ? toSource(Ctor) : ''; - - if (ctorString) { - switch (ctorString) { - case dataViewCtorString: return dataViewTag; - case mapCtorString: return mapTag; - case promiseCtorString: return promiseTag; - case setCtorString: return setTag; - case weakMapCtorString: return weakMapTag; - } - } - return result; - }; - } - - /** - * Gets the view, applying any `transforms` to the `start` and `end` positions. - * - * @private - * @param {number} start The start of the view. - * @param {number} end The end of the view. - * @param {Array} transforms The transformations to apply to the view. - * @returns {Object} Returns an object containing the `start` and `end` - * positions of the view. - */ - function getView(start, end, transforms) { - var index = -1, - length = transforms.length; - - while (++index < length) { - var data = transforms[index], - size = data.size; - - switch (data.type) { - case 'drop': start += size; break; - case 'dropRight': end -= size; break; - case 'take': end = nativeMin(end, start + size); break; - case 'takeRight': start = nativeMax(start, end - size); break; - } - } - return { 'start': start, 'end': end }; - } - - /** - * Extracts wrapper details from the `source` body comment. - * - * @private - * @param {string} source The source to inspect. - * @returns {Array} Returns the wrapper details. - */ - function getWrapDetails(source) { - var match = source.match(reWrapDetails); - return match ? match[1].split(reSplitDetails) : []; - } - - /** - * Checks if `path` exists on `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @param {Function} hasFunc The function to check properties. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - */ - function hasPath(object, path, hasFunc) { - path = castPath(path, object); - - var index = -1, - length = path.length, - result = false; - - while (++index < length) { - var key = toKey(path[index]); - if (!(result = object != null && hasFunc(object, key))) { - break; - } - object = object[key]; - } - if (result || ++index != length) { - return result; - } - length = object == null ? 0 : object.length; - return !!length && isLength(length) && isIndex(key, length) && - (isArray(object) || isArguments(object)); - } - - /** - * Initializes an array clone. - * - * @private - * @param {Array} array The array to clone. - * @returns {Array} Returns the initialized clone. - */ - function initCloneArray(array) { - var length = array.length, - result = new array.constructor(length); - - // Add properties assigned by `RegExp#exec`. - if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { - result.index = array.index; - result.input = array.input; - } - return result; - } - - /** - * Initializes an object clone. - * - * @private - * @param {Object} object The object to clone. - * @returns {Object} Returns the initialized clone. - */ - function initCloneObject(object) { - return (typeof object.constructor == 'function' && !isPrototype(object)) - ? baseCreate(getPrototype(object)) - : {}; - } - - /** - * Initializes an object clone based on its `toStringTag`. - * - * **Note:** This function only supports cloning values with tags of - * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. - * - * @private - * @param {Object} object The object to clone. - * @param {string} tag The `toStringTag` of the object to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the initialized clone. - */ - function initCloneByTag(object, tag, isDeep) { - var Ctor = object.constructor; - switch (tag) { - case arrayBufferTag: - return cloneArrayBuffer(object); - - case boolTag: - case dateTag: - return new Ctor(+object); - - case dataViewTag: - return cloneDataView(object, isDeep); - - case float32Tag: case float64Tag: - case int8Tag: case int16Tag: case int32Tag: - case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: - return cloneTypedArray(object, isDeep); - - case mapTag: - return new Ctor; - - case numberTag: - case stringTag: - return new Ctor(object); - - case regexpTag: - return cloneRegExp(object); - - case setTag: - return new Ctor; - - case symbolTag: - return cloneSymbol(object); - } - } - - /** - * Inserts wrapper `details` in a comment at the top of the `source` body. - * - * @private - * @param {string} source The source to modify. - * @returns {Array} details The details to insert. - * @returns {string} Returns the modified source. - */ - function insertWrapDetails(source, details) { - var length = details.length; - if (!length) { - return source; - } - var lastIndex = length - 1; - details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex]; - details = details.join(length > 2 ? ', ' : ' '); - return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n'); - } - - /** - * Checks if `value` is a flattenable `arguments` object or array. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. - */ - function isFlattenable(value) { - return isArray(value) || isArguments(value) || - !!(spreadableSymbol && value && value[spreadableSymbol]); - } - - /** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ - function isIndex(value, length) { - var type = typeof value; - length = length == null ? MAX_SAFE_INTEGER : length; - - return !!length && - (type == 'number' || - (type != 'symbol' && reIsUint.test(value))) && - (value > -1 && value % 1 == 0 && value < length); - } - - /** - * Checks if the given arguments are from an iteratee call. - * - * @private - * @param {*} value The potential iteratee value argument. - * @param {*} index The potential iteratee index or key argument. - * @param {*} object The potential iteratee object argument. - * @returns {boolean} Returns `true` if the arguments are from an iteratee call, - * else `false`. - */ - function isIterateeCall(value, index, object) { - if (!isObject(object)) { - return false; - } - var type = typeof index; - if (type == 'number' - ? (isArrayLike(object) && isIndex(index, object.length)) - : (type == 'string' && index in object) - ) { - return eq(object[index], value); - } - return false; - } - - /** - * Checks if `value` is a property name and not a property path. - * - * @private - * @param {*} value The value to check. - * @param {Object} [object] The object to query keys on. - * @returns {boolean} Returns `true` if `value` is a property name, else `false`. - */ - function isKey(value, object) { - if (isArray(value)) { - return false; - } - var type = typeof value; - if (type == 'number' || type == 'symbol' || type == 'boolean' || - value == null || isSymbol(value)) { - return true; - } - return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || - (object != null && value in Object(object)); - } - - /** - * Checks if `value` is suitable for use as unique object key. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is suitable, else `false`. - */ - function isKeyable(value) { - var type = typeof value; - return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') - ? (value !== '__proto__') - : (value === null); - } - - /** - * Checks if `func` has a lazy counterpart. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` has a lazy counterpart, - * else `false`. - */ - function isLaziable(func) { - var funcName = getFuncName(func), - other = lodash[funcName]; - - if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { - return false; - } - if (func === other) { - return true; - } - var data = getData(other); - return !!data && func === data[0]; - } - - /** - * Checks if `func` has its source masked. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is masked, else `false`. - */ - function isMasked(func) { - return !!maskSrcKey && (maskSrcKey in func); - } - - /** - * Checks if `func` is capable of being masked. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `func` is maskable, else `false`. - */ - var isMaskable = coreJsData ? isFunction : stubFalse; - - /** - * Checks if `value` is likely a prototype object. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. - */ - function isPrototype(value) { - var Ctor = value && value.constructor, - proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; - - return value === proto; - } - - /** - * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` if suitable for strict - * equality comparisons, else `false`. - */ - function isStrictComparable(value) { - return value === value && !isObject(value); - } - - /** - * A specialized version of `matchesProperty` for source values suitable - * for strict equality comparisons, i.e. `===`. - * - * @private - * @param {string} key The key of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ - function matchesStrictComparable(key, srcValue) { - return function(object) { - if (object == null) { - return false; - } - return object[key] === srcValue && - (srcValue !== undefined$1 || (key in Object(object))); - }; - } - - /** - * A specialized version of `_.memoize` which clears the memoized function's - * cache when it exceeds `MAX_MEMOIZE_SIZE`. - * - * @private - * @param {Function} func The function to have its output memoized. - * @returns {Function} Returns the new memoized function. - */ - function memoizeCapped(func) { - var result = memoize(func, function(key) { - if (cache.size === MAX_MEMOIZE_SIZE) { - cache.clear(); - } - return key; - }); - - var cache = result.cache; - return result; - } - - /** - * Merges the function metadata of `source` into `data`. - * - * Merging metadata reduces the number of wrappers used to invoke a function. - * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` - * may be applied regardless of execution order. Methods like `_.ary` and - * `_.rearg` modify function arguments, making the order in which they are - * executed important, preventing the merging of metadata. However, we make - * an exception for a safe combined case where curried functions have `_.ary` - * and or `_.rearg` applied. - * - * @private - * @param {Array} data The destination metadata. - * @param {Array} source The source metadata. - * @returns {Array} Returns `data`. - */ - function mergeData(data, source) { - var bitmask = data[1], - srcBitmask = source[1], - newBitmask = bitmask | srcBitmask, - isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); - - var isCombo = - ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) || - ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) || - ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG)); - - // Exit early if metadata can't be merged. - if (!(isCommon || isCombo)) { - return data; - } - // Use source `thisArg` if available. - if (srcBitmask & WRAP_BIND_FLAG) { - data[2] = source[2]; - // Set when currying a bound function. - newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG; - } - // Compose partial arguments. - var value = source[3]; - if (value) { - var partials = data[3]; - data[3] = partials ? composeArgs(partials, value, source[4]) : value; - data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4]; - } - // Compose partial right arguments. - value = source[5]; - if (value) { - partials = data[5]; - data[5] = partials ? composeArgsRight(partials, value, source[6]) : value; - data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6]; - } - // Use source `argPos` if available. - value = source[7]; - if (value) { - data[7] = value; - } - // Use source `ary` if it's smaller. - if (srcBitmask & WRAP_ARY_FLAG) { - data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); - } - // Use source `arity` if one is not provided. - if (data[9] == null) { - data[9] = source[9]; - } - // Use source `func` and merge bitmasks. - data[0] = source[0]; - data[1] = newBitmask; - - return data; - } - - /** - * This function is like - * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * except that it includes inherited enumerable properties. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function nativeKeysIn(object) { - var result = []; - if (object != null) { - for (var key in Object(object)) { - result.push(key); - } - } - return result; - } - - /** - * Converts `value` to a string using `Object.prototype.toString`. - * - * @private - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - */ - function objectToString(value) { - return nativeObjectToString.call(value); - } - - /** - * A specialized version of `baseRest` which transforms the rest array. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @param {Function} transform The rest array transform. - * @returns {Function} Returns the new function. - */ - function overRest(func, start, transform) { - start = nativeMax(start === undefined$1 ? (func.length - 1) : start, 0); - return function() { - var args = arguments, - index = -1, - length = nativeMax(args.length - start, 0), - array = Array(length); - - while (++index < length) { - array[index] = args[start + index]; - } - index = -1; - var otherArgs = Array(start + 1); - while (++index < start) { - otherArgs[index] = args[index]; - } - otherArgs[start] = transform(array); - return apply(func, this, otherArgs); - }; - } - - /** - * Gets the parent value at `path` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} path The path to get the parent value of. - * @returns {*} Returns the parent value. - */ - function parent(object, path) { - return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); - } - - /** - * Reorder `array` according to the specified indexes where the element at - * the first index is assigned as the first element, the element at - * the second index is assigned as the second element, and so on. - * - * @private - * @param {Array} array The array to reorder. - * @param {Array} indexes The arranged array indexes. - * @returns {Array} Returns `array`. - */ - function reorder(array, indexes) { - var arrLength = array.length, - length = nativeMin(indexes.length, arrLength), - oldArray = copyArray(array); - - while (length--) { - var index = indexes[length]; - array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined$1; - } - return array; - } - - /** - * Gets the value at `key`, unless `key` is "__proto__" or "constructor". - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ - function safeGet(object, key) { - if (key === 'constructor' && typeof object[key] === 'function') { - return; - } - - if (key == '__proto__') { - return; - } - - return object[key]; - } - - /** - * Sets metadata for `func`. - * - * **Note:** If this function becomes hot, i.e. is invoked a lot in a short - * period of time, it will trip its breaker and transition to an identity - * function to avoid garbage collection pauses in V8. See - * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070) - * for more details. - * - * @private - * @param {Function} func The function to associate metadata with. - * @param {*} data The metadata. - * @returns {Function} Returns `func`. - */ - var setData = shortOut(baseSetData); - - /** - * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout). - * - * @private - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @returns {number|Object} Returns the timer id or timeout object. - */ - var setTimeout = ctxSetTimeout || function(func, wait) { - return root.setTimeout(func, wait); - }; - - /** - * Sets the `toString` method of `func` to return `string`. - * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. - */ - var setToString = shortOut(baseSetToString); - - /** - * Sets the `toString` method of `wrapper` to mimic the source of `reference` - * with wrapper details in a comment at the top of the source body. - * - * @private - * @param {Function} wrapper The function to modify. - * @param {Function} reference The reference function. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @returns {Function} Returns `wrapper`. - */ - function setWrapToString(wrapper, reference, bitmask) { - var source = (reference + ''); - return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); - } - - /** - * Creates a function that'll short out and invoke `identity` instead - * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` - * milliseconds. - * - * @private - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new shortable function. - */ - function shortOut(func) { - var count = 0, - lastCalled = 0; - - return function() { - var stamp = nativeNow(), - remaining = HOT_SPAN - (stamp - lastCalled); - - lastCalled = stamp; - if (remaining > 0) { - if (++count >= HOT_COUNT) { - return arguments[0]; - } - } else { - count = 0; - } - return func.apply(undefined$1, arguments); - }; - } - - /** - * A specialized version of `_.shuffle` which mutates and sets the size of `array`. - * - * @private - * @param {Array} array The array to shuffle. - * @param {number} [size=array.length] The size of `array`. - * @returns {Array} Returns `array`. - */ - function shuffleSelf(array, size) { - var index = -1, - length = array.length, - lastIndex = length - 1; - - size = size === undefined$1 ? length : size; - while (++index < size) { - var rand = baseRandom(index, lastIndex), - value = array[rand]; - - array[rand] = array[index]; - array[index] = value; - } - array.length = size; - return array; - } - - /** - * Converts `string` to a property path array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the property path array. - */ - var stringToPath = memoizeCapped(function(string) { - var result = []; - if (string.charCodeAt(0) === 46 /* . */) { - result.push(''); - } - string.replace(rePropName, function(match, number, quote, subString) { - result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); - }); - return result; - }); - - /** - * Converts `value` to a string key if it's not a string or symbol. - * - * @private - * @param {*} value The value to inspect. - * @returns {string|symbol} Returns the key. - */ - function toKey(value) { - if (typeof value == 'string' || isSymbol(value)) { - return value; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; - } - - /** - * Converts `func` to its source code. - * - * @private - * @param {Function} func The function to convert. - * @returns {string} Returns the source code. - */ - function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e) {} - try { - return (func + ''); - } catch (e) {} - } - return ''; - } - - /** - * Updates wrapper `details` based on `bitmask` flags. - * - * @private - * @returns {Array} details The details to modify. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @returns {Array} Returns `details`. - */ - function updateWrapDetails(details, bitmask) { - arrayEach(wrapFlags, function(pair) { - var value = '_.' + pair[0]; - if ((bitmask & pair[1]) && !arrayIncludes(details, value)) { - details.push(value); - } - }); - return details.sort(); - } - - /** - * Creates a clone of `wrapper`. - * - * @private - * @param {Object} wrapper The wrapper to clone. - * @returns {Object} Returns the cloned wrapper. - */ - function wrapperClone(wrapper) { - if (wrapper instanceof LazyWrapper) { - return wrapper.clone(); - } - var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); - result.__actions__ = copyArray(wrapper.__actions__); - result.__index__ = wrapper.__index__; - result.__values__ = wrapper.__values__; - return result; - } - - /*------------------------------------------------------------------------*/ - - /** - * Creates an array of elements split into groups the length of `size`. - * If `array` can't be split evenly, the final chunk will be the remaining - * elements. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to process. - * @param {number} [size=1] The length of each chunk - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the new array of chunks. - * @example - * - * _.chunk(['a', 'b', 'c', 'd'], 2); - * // => [['a', 'b'], ['c', 'd']] - * - * _.chunk(['a', 'b', 'c', 'd'], 3); - * // => [['a', 'b', 'c'], ['d']] - */ - function chunk(array, size, guard) { - if ((guard ? isIterateeCall(array, size, guard) : size === undefined$1)) { - size = 1; - } else { - size = nativeMax(toInteger(size), 0); - } - var length = array == null ? 0 : array.length; - if (!length || size < 1) { - return []; - } - var index = 0, - resIndex = 0, - result = Array(nativeCeil(length / size)); - - while (index < length) { - result[resIndex++] = baseSlice(array, index, (index += size)); - } - return result; - } - - /** - * Creates an array with all falsey values removed. The values `false`, `null`, - * `0`, `""`, `undefined`, and `NaN` are falsey. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to compact. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.compact([0, 1, false, 2, '', 3]); - * // => [1, 2, 3] - */ - function compact(array) { - var index = -1, - length = array == null ? 0 : array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (value) { - result[resIndex++] = value; - } - } - return result; - } - - /** - * Creates a new array concatenating `array` with any additional arrays - * and/or values. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to concatenate. - * @param {...*} [values] The values to concatenate. - * @returns {Array} Returns the new concatenated array. - * @example - * - * var array = [1]; - * var other = _.concat(array, 2, [3], [[4]]); - * - * console.log(other); - * // => [1, 2, 3, [4]] - * - * console.log(array); - * // => [1] - */ - function concat() { - var length = arguments.length; - if (!length) { - return []; - } - var args = Array(length - 1), - array = arguments[0], - index = length; - - while (index--) { - args[index - 1] = arguments[index]; - } - return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)); - } - - /** - * Creates an array of `array` values not included in the other given arrays - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. The order and references of result values are - * determined by the first array. - * - * **Note:** Unlike `_.pullAll`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @returns {Array} Returns the new array of filtered values. - * @see _.without, _.xor - * @example - * - * _.difference([2, 1], [2, 3]); - * // => [1] - */ - var difference = baseRest(function(array, values) { - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) - : []; - }); - - /** - * This method is like `_.difference` except that it accepts `iteratee` which - * is invoked for each element of `array` and `values` to generate the criterion - * by which they're compared. The order and references of result values are - * determined by the first array. The iteratee is invoked with one argument: - * (value). - * - * **Note:** Unlike `_.pullAllBy`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [1.2] - * - * // The `_.property` iteratee shorthand. - * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x'); - * // => [{ 'x': 2 }] - */ - var differenceBy = baseRest(function(array, values) { - var iteratee = last(values); - if (isArrayLikeObject(iteratee)) { - iteratee = undefined$1; - } - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)) - : []; - }); - - /** - * This method is like `_.difference` except that it accepts `comparator` - * which is invoked to compare elements of `array` to `values`. The order and - * references of result values are determined by the first array. The comparator - * is invoked with two arguments: (arrVal, othVal). - * - * **Note:** Unlike `_.pullAllWith`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * - * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual); - * // => [{ 'x': 2, 'y': 1 }] - */ - var differenceWith = baseRest(function(array, values) { - var comparator = last(values); - if (isArrayLikeObject(comparator)) { - comparator = undefined$1; - } - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined$1, comparator) - : []; - }); - - /** - * Creates a slice of `array` with `n` elements dropped from the beginning. - * - * @static - * @memberOf _ - * @since 0.5.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to drop. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.drop([1, 2, 3]); - * // => [2, 3] - * - * _.drop([1, 2, 3], 2); - * // => [3] - * - * _.drop([1, 2, 3], 5); - * // => [] - * - * _.drop([1, 2, 3], 0); - * // => [1, 2, 3] - */ - function drop(array, n, guard) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - n = (guard || n === undefined$1) ? 1 : toInteger(n); - return baseSlice(array, n < 0 ? 0 : n, length); - } - - /** - * Creates a slice of `array` with `n` elements dropped from the end. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to drop. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.dropRight([1, 2, 3]); - * // => [1, 2] - * - * _.dropRight([1, 2, 3], 2); - * // => [1] - * - * _.dropRight([1, 2, 3], 5); - * // => [] - * - * _.dropRight([1, 2, 3], 0); - * // => [1, 2, 3] - */ - function dropRight(array, n, guard) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - n = (guard || n === undefined$1) ? 1 : toInteger(n); - n = length - n; - return baseSlice(array, 0, n < 0 ? 0 : n); - } - - /** - * Creates a slice of `array` excluding elements dropped from the end. - * Elements are dropped until `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.dropRightWhile(users, function(o) { return !o.active; }); - * // => objects for ['barney'] - * - * // The `_.matches` iteratee shorthand. - * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false }); - * // => objects for ['barney', 'fred'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.dropRightWhile(users, ['active', false]); - * // => objects for ['barney'] - * - * // The `_.property` iteratee shorthand. - * _.dropRightWhile(users, 'active'); - * // => objects for ['barney', 'fred', 'pebbles'] - */ - function dropRightWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3), true, true) - : []; - } - - /** - * Creates a slice of `array` excluding elements dropped from the beginning. - * Elements are dropped until `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.dropWhile(users, function(o) { return !o.active; }); - * // => objects for ['pebbles'] - * - * // The `_.matches` iteratee shorthand. - * _.dropWhile(users, { 'user': 'barney', 'active': false }); - * // => objects for ['fred', 'pebbles'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.dropWhile(users, ['active', false]); - * // => objects for ['pebbles'] - * - * // The `_.property` iteratee shorthand. - * _.dropWhile(users, 'active'); - * // => objects for ['barney', 'fred', 'pebbles'] - */ - function dropWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3), true) - : []; - } - - /** - * Fills elements of `array` with `value` from `start` up to, but not - * including, `end`. - * - * **Note:** This method mutates `array`. - * - * @static - * @memberOf _ - * @since 3.2.0 - * @category Array - * @param {Array} array The array to fill. - * @param {*} value The value to fill `array` with. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns `array`. - * @example - * - * var array = [1, 2, 3]; - * - * _.fill(array, 'a'); - * console.log(array); - * // => ['a', 'a', 'a'] - * - * _.fill(Array(3), 2); - * // => [2, 2, 2] - * - * _.fill([4, 6, 8, 10], '*', 1, 3); - * // => [4, '*', '*', 10] - */ - function fill(array, value, start, end) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { - start = 0; - end = length; - } - return baseFill(array, value, start, end); - } - - /** - * This method is like `_.find` except that it returns the index of the first - * element `predicate` returns truthy for instead of the element itself. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.findIndex(users, function(o) { return o.user == 'barney'; }); - * // => 0 - * - * // The `_.matches` iteratee shorthand. - * _.findIndex(users, { 'user': 'fred', 'active': false }); - * // => 1 - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findIndex(users, ['active', false]); - * // => 0 - * - * // The `_.property` iteratee shorthand. - * _.findIndex(users, 'active'); - * // => 2 - */ - function findIndex(array, predicate, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = fromIndex == null ? 0 : toInteger(fromIndex); - if (index < 0) { - index = nativeMax(length + index, 0); - } - return baseFindIndex(array, getIteratee(predicate, 3), index); - } - - /** - * This method is like `_.findIndex` except that it iterates over elements - * of `collection` from right to left. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=array.length-1] The index to search from. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); - * // => 2 - * - * // The `_.matches` iteratee shorthand. - * _.findLastIndex(users, { 'user': 'barney', 'active': true }); - * // => 0 - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findLastIndex(users, ['active', false]); - * // => 2 - * - * // The `_.property` iteratee shorthand. - * _.findLastIndex(users, 'active'); - * // => 0 - */ - function findLastIndex(array, predicate, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = length - 1; - if (fromIndex !== undefined$1) { - index = toInteger(fromIndex); - index = fromIndex < 0 - ? nativeMax(length + index, 0) - : nativeMin(index, length - 1); - } - return baseFindIndex(array, getIteratee(predicate, 3), index, true); - } - - /** - * Flattens `array` a single level deep. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to flatten. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flatten([1, [2, [3, [4]], 5]]); - * // => [1, 2, [3, [4]], 5] - */ - function flatten(array) { - var length = array == null ? 0 : array.length; - return length ? baseFlatten(array, 1) : []; - } - - /** - * Recursively flattens `array`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to flatten. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flattenDeep([1, [2, [3, [4]], 5]]); - * // => [1, 2, 3, 4, 5] - */ - function flattenDeep(array) { - var length = array == null ? 0 : array.length; - return length ? baseFlatten(array, INFINITY) : []; - } - - /** - * Recursively flatten `array` up to `depth` times. - * - * @static - * @memberOf _ - * @since 4.4.0 - * @category Array - * @param {Array} array The array to flatten. - * @param {number} [depth=1] The maximum recursion depth. - * @returns {Array} Returns the new flattened array. - * @example - * - * var array = [1, [2, [3, [4]], 5]]; - * - * _.flattenDepth(array, 1); - * // => [1, 2, [3, [4]], 5] - * - * _.flattenDepth(array, 2); - * // => [1, 2, 3, [4], 5] - */ - function flattenDepth(array, depth) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - depth = depth === undefined$1 ? 1 : toInteger(depth); - return baseFlatten(array, depth); - } - - /** - * The inverse of `_.toPairs`; this method returns an object composed - * from key-value `pairs`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} pairs The key-value pairs. - * @returns {Object} Returns the new object. - * @example - * - * _.fromPairs([['a', 1], ['b', 2]]); - * // => { 'a': 1, 'b': 2 } - */ - function fromPairs(pairs) { - var index = -1, - length = pairs == null ? 0 : pairs.length, - result = {}; - - while (++index < length) { - var pair = pairs[index]; - result[pair[0]] = pair[1]; - } - return result; - } - - /** - * Gets the first element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @alias first - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the first element of `array`. - * @example - * - * _.head([1, 2, 3]); - * // => 1 - * - * _.head([]); - * // => undefined - */ - function head(array) { - return (array && array.length) ? array[0] : undefined$1; - } - - /** - * Gets the index at which the first occurrence of `value` is found in `array` - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. If `fromIndex` is negative, it's used as the - * offset from the end of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.indexOf([1, 2, 1, 2], 2); - * // => 1 - * - * // Search from the `fromIndex`. - * _.indexOf([1, 2, 1, 2], 2, 2); - * // => 3 - */ - function indexOf(array, value, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = fromIndex == null ? 0 : toInteger(fromIndex); - if (index < 0) { - index = nativeMax(length + index, 0); - } - return baseIndexOf(array, value, index); - } - - /** - * Gets all but the last element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.initial([1, 2, 3]); - * // => [1, 2] - */ - function initial(array) { - var length = array == null ? 0 : array.length; - return length ? baseSlice(array, 0, -1) : []; - } - - /** - * Creates an array of unique values that are included in all given arrays - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. The order and references of result values are - * determined by the first array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of intersecting values. - * @example - * - * _.intersection([2, 1], [2, 3]); - * // => [2] - */ - var intersection = baseRest(function(arrays) { - var mapped = arrayMap(arrays, castArrayLikeObject); - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped) - : []; - }); - - /** - * This method is like `_.intersection` except that it accepts `iteratee` - * which is invoked for each element of each `arrays` to generate the criterion - * by which they're compared. The order and references of result values are - * determined by the first array. The iteratee is invoked with one argument: - * (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of intersecting values. - * @example - * - * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [2.1] - * - * // The `_.property` iteratee shorthand. - * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }] - */ - var intersectionBy = baseRest(function(arrays) { - var iteratee = last(arrays), - mapped = arrayMap(arrays, castArrayLikeObject); - - if (iteratee === last(mapped)) { - iteratee = undefined$1; - } else { - mapped.pop(); - } - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped, getIteratee(iteratee, 2)) - : []; - }); - - /** - * This method is like `_.intersection` except that it accepts `comparator` - * which is invoked to compare elements of `arrays`. The order and references - * of result values are determined by the first array. The comparator is - * invoked with two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of intersecting values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.intersectionWith(objects, others, _.isEqual); - * // => [{ 'x': 1, 'y': 2 }] - */ - var intersectionWith = baseRest(function(arrays) { - var comparator = last(arrays), - mapped = arrayMap(arrays, castArrayLikeObject); - - comparator = typeof comparator == 'function' ? comparator : undefined$1; - if (comparator) { - mapped.pop(); - } - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped, undefined$1, comparator) - : []; - }); - - /** - * Converts all elements in `array` into a string separated by `separator`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to convert. - * @param {string} [separator=','] The element separator. - * @returns {string} Returns the joined string. - * @example - * - * _.join(['a', 'b', 'c'], '~'); - * // => 'a~b~c' - */ - function join(array, separator) { - return array == null ? '' : nativeJoin.call(array, separator); - } - - /** - * Gets the last element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the last element of `array`. - * @example - * - * _.last([1, 2, 3]); - * // => 3 - */ - function last(array) { - var length = array == null ? 0 : array.length; - return length ? array[length - 1] : undefined$1; - } - - /** - * This method is like `_.indexOf` except that it iterates over elements of - * `array` from right to left. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=array.length-1] The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.lastIndexOf([1, 2, 1, 2], 2); - * // => 3 - * - * // Search from the `fromIndex`. - * _.lastIndexOf([1, 2, 1, 2], 2, 2); - * // => 1 - */ - function lastIndexOf(array, value, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = length; - if (fromIndex !== undefined$1) { - index = toInteger(fromIndex); - index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); - } - return value === value - ? strictLastIndexOf(array, value, index) - : baseFindIndex(array, baseIsNaN, index, true); - } - - /** - * Gets the element at index `n` of `array`. If `n` is negative, the nth - * element from the end is returned. - * - * @static - * @memberOf _ - * @since 4.11.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=0] The index of the element to return. - * @returns {*} Returns the nth element of `array`. - * @example - * - * var array = ['a', 'b', 'c', 'd']; - * - * _.nth(array, 1); - * // => 'b' - * - * _.nth(array, -2); - * // => 'c'; - */ - function nth(array, n) { - return (array && array.length) ? baseNth(array, toInteger(n)) : undefined$1; - } - - /** - * Removes all given values from `array` using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove` - * to remove elements from an array by predicate. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {...*} [values] The values to remove. - * @returns {Array} Returns `array`. - * @example - * - * var array = ['a', 'b', 'c', 'a', 'b', 'c']; - * - * _.pull(array, 'a', 'c'); - * console.log(array); - * // => ['b', 'b'] - */ - var pull = baseRest(pullAll); - - /** - * This method is like `_.pull` except that it accepts an array of values to remove. - * - * **Note:** Unlike `_.difference`, this method mutates `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @returns {Array} Returns `array`. - * @example - * - * var array = ['a', 'b', 'c', 'a', 'b', 'c']; - * - * _.pullAll(array, ['a', 'c']); - * console.log(array); - * // => ['b', 'b'] - */ - function pullAll(array, values) { - return (array && array.length && values && values.length) - ? basePullAll(array, values) - : array; - } - - /** - * This method is like `_.pullAll` except that it accepts `iteratee` which is - * invoked for each element of `array` and `values` to generate the criterion - * by which they're compared. The iteratee is invoked with one argument: (value). - * - * **Note:** Unlike `_.differenceBy`, this method mutates `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns `array`. - * @example - * - * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; - * - * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); - * console.log(array); - * // => [{ 'x': 2 }] - */ - function pullAllBy(array, values, iteratee) { - return (array && array.length && values && values.length) - ? basePullAll(array, values, getIteratee(iteratee, 2)) - : array; - } - - /** - * This method is like `_.pullAll` except that it accepts `comparator` which - * is invoked to compare elements of `array` to `values`. The comparator is - * invoked with two arguments: (arrVal, othVal). - * - * **Note:** Unlike `_.differenceWith`, this method mutates `array`. - * - * @static - * @memberOf _ - * @since 4.6.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns `array`. - * @example - * - * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; - * - * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); - * console.log(array); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] - */ - function pullAllWith(array, values, comparator) { - return (array && array.length && values && values.length) - ? basePullAll(array, values, undefined$1, comparator) - : array; - } - - /** - * Removes elements from `array` corresponding to `indexes` and returns an - * array of removed elements. - * - * **Note:** Unlike `_.at`, this method mutates `array`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {...(number|number[])} [indexes] The indexes of elements to remove. - * @returns {Array} Returns the new array of removed elements. - * @example - * - * var array = ['a', 'b', 'c', 'd']; - * var pulled = _.pullAt(array, [1, 3]); - * - * console.log(array); - * // => ['a', 'c'] - * - * console.log(pulled); - * // => ['b', 'd'] - */ - var pullAt = flatRest(function(array, indexes) { - var length = array == null ? 0 : array.length, - result = baseAt(array, indexes); - - basePullAt(array, arrayMap(indexes, function(index) { - return isIndex(index, length) ? +index : index; - }).sort(compareAscending)); - - return result; - }); - - /** - * Removes all elements from `array` that `predicate` returns truthy for - * and returns an array of the removed elements. The predicate is invoked - * with three arguments: (value, index, array). - * - * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull` - * to pull elements from an array by value. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new array of removed elements. - * @example - * - * var array = [1, 2, 3, 4]; - * var evens = _.remove(array, function(n) { - * return n % 2 == 0; - * }); - * - * console.log(array); - * // => [1, 3] - * - * console.log(evens); - * // => [2, 4] - */ - function remove(array, predicate) { - var result = []; - if (!(array && array.length)) { - return result; - } - var index = -1, - indexes = [], - length = array.length; - - predicate = getIteratee(predicate, 3); - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result.push(value); - indexes.push(index); - } - } - basePullAt(array, indexes); - return result; - } - - /** - * Reverses `array` so that the first element becomes the last, the second - * element becomes the second to last, and so on. - * - * **Note:** This method mutates `array` and is based on - * [`Array#reverse`](https://mdn.io/Array/reverse). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to modify. - * @returns {Array} Returns `array`. - * @example - * - * var array = [1, 2, 3]; - * - * _.reverse(array); - * // => [3, 2, 1] - * - * console.log(array); - * // => [3, 2, 1] - */ - function reverse(array) { - return array == null ? array : nativeReverse.call(array); - } - - /** - * Creates a slice of `array` from `start` up to, but not including, `end`. - * - * **Note:** This method is used instead of - * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are - * returned. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. - */ - function slice(array, start, end) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { - start = 0; - end = length; - } - else { - start = start == null ? 0 : toInteger(start); - end = end === undefined$1 ? length : toInteger(end); - } - return baseSlice(array, start, end); - } - - /** - * Uses a binary search to determine the lowest index at which `value` - * should be inserted into `array` in order to maintain its sort order. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * _.sortedIndex([30, 50], 40); - * // => 1 - */ - function sortedIndex(array, value) { - return baseSortedIndex(array, value); - } - - /** - * This method is like `_.sortedIndex` except that it accepts `iteratee` - * which is invoked for `value` and each element of `array` to compute their - * sort ranking. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * var objects = [{ 'x': 4 }, { 'x': 5 }]; - * - * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); - * // => 0 - * - * // The `_.property` iteratee shorthand. - * _.sortedIndexBy(objects, { 'x': 4 }, 'x'); - * // => 0 - */ - function sortedIndexBy(array, value, iteratee) { - return baseSortedIndexBy(array, value, getIteratee(iteratee, 2)); - } - - /** - * This method is like `_.indexOf` except that it performs a binary - * search on a sorted `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.sortedIndexOf([4, 5, 5, 5, 6], 5); - * // => 1 - */ - function sortedIndexOf(array, value) { - var length = array == null ? 0 : array.length; - if (length) { - var index = baseSortedIndex(array, value); - if (index < length && eq(array[index], value)) { - return index; - } - } - return -1; - } - - /** - * This method is like `_.sortedIndex` except that it returns the highest - * index at which `value` should be inserted into `array` in order to - * maintain its sort order. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * _.sortedLastIndex([4, 5, 5, 5, 6], 5); - * // => 4 - */ - function sortedLastIndex(array, value) { - return baseSortedIndex(array, value, true); - } - - /** - * This method is like `_.sortedLastIndex` except that it accepts `iteratee` - * which is invoked for `value` and each element of `array` to compute their - * sort ranking. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * var objects = [{ 'x': 4 }, { 'x': 5 }]; - * - * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); - * // => 1 - * - * // The `_.property` iteratee shorthand. - * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x'); - * // => 1 - */ - function sortedLastIndexBy(array, value, iteratee) { - return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true); - } - - /** - * This method is like `_.lastIndexOf` except that it performs a binary - * search on a sorted `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5); - * // => 3 - */ - function sortedLastIndexOf(array, value) { - var length = array == null ? 0 : array.length; - if (length) { - var index = baseSortedIndex(array, value, true) - 1; - if (eq(array[index], value)) { - return index; - } - } - return -1; - } - - /** - * This method is like `_.uniq` except that it's designed and optimized - * for sorted arrays. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.sortedUniq([1, 1, 2]); - * // => [1, 2] - */ - function sortedUniq(array) { - return (array && array.length) - ? baseSortedUniq(array) - : []; - } - - /** - * This method is like `_.uniqBy` except that it's designed and optimized - * for sorted arrays. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor); - * // => [1.1, 2.3] - */ - function sortedUniqBy(array, iteratee) { - return (array && array.length) - ? baseSortedUniq(array, getIteratee(iteratee, 2)) - : []; - } - - /** - * Gets all but the first element of `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to query. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.tail([1, 2, 3]); - * // => [2, 3] - */ - function tail(array) { - var length = array == null ? 0 : array.length; - return length ? baseSlice(array, 1, length) : []; - } - - /** - * Creates a slice of `array` with `n` elements taken from the beginning. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to take. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.take([1, 2, 3]); - * // => [1] - * - * _.take([1, 2, 3], 2); - * // => [1, 2] - * - * _.take([1, 2, 3], 5); - * // => [1, 2, 3] - * - * _.take([1, 2, 3], 0); - * // => [] - */ - function take(array, n, guard) { - if (!(array && array.length)) { - return []; - } - n = (guard || n === undefined$1) ? 1 : toInteger(n); - return baseSlice(array, 0, n < 0 ? 0 : n); - } - - /** - * Creates a slice of `array` with `n` elements taken from the end. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to take. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.takeRight([1, 2, 3]); - * // => [3] - * - * _.takeRight([1, 2, 3], 2); - * // => [2, 3] - * - * _.takeRight([1, 2, 3], 5); - * // => [1, 2, 3] - * - * _.takeRight([1, 2, 3], 0); - * // => [] - */ - function takeRight(array, n, guard) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - n = (guard || n === undefined$1) ? 1 : toInteger(n); - n = length - n; - return baseSlice(array, n < 0 ? 0 : n, length); - } - - /** - * Creates a slice of `array` with elements taken from the end. Elements are - * taken until `predicate` returns falsey. The predicate is invoked with - * three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.takeRightWhile(users, function(o) { return !o.active; }); - * // => objects for ['fred', 'pebbles'] - * - * // The `_.matches` iteratee shorthand. - * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false }); - * // => objects for ['pebbles'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.takeRightWhile(users, ['active', false]); - * // => objects for ['fred', 'pebbles'] - * - * // The `_.property` iteratee shorthand. - * _.takeRightWhile(users, 'active'); - * // => [] - */ - function takeRightWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3), false, true) - : []; - } - - /** - * Creates a slice of `array` with elements taken from the beginning. Elements - * are taken until `predicate` returns falsey. The predicate is invoked with - * three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.takeWhile(users, function(o) { return !o.active; }); - * // => objects for ['barney', 'fred'] - * - * // The `_.matches` iteratee shorthand. - * _.takeWhile(users, { 'user': 'barney', 'active': false }); - * // => objects for ['barney'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.takeWhile(users, ['active', false]); - * // => objects for ['barney', 'fred'] - * - * // The `_.property` iteratee shorthand. - * _.takeWhile(users, 'active'); - * // => [] - */ - function takeWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3)) - : []; - } - - /** - * Creates an array of unique values, in order, from all given arrays using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of combined values. - * @example - * - * _.union([2], [1, 2]); - * // => [2, 1] - */ - var union = baseRest(function(arrays) { - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); - }); - - /** - * This method is like `_.union` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by - * which uniqueness is computed. Result values are chosen from the first - * array in which the value occurs. The iteratee is invoked with one argument: - * (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of combined values. - * @example - * - * _.unionBy([2.1], [1.2, 2.3], Math.floor); - * // => [2.1, 1.2] - * - * // The `_.property` iteratee shorthand. - * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] - */ - var unionBy = baseRest(function(arrays) { - var iteratee = last(arrays); - if (isArrayLikeObject(iteratee)) { - iteratee = undefined$1; - } - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)); - }); - - /** - * This method is like `_.union` except that it accepts `comparator` which - * is invoked to compare elements of `arrays`. Result values are chosen from - * the first array in which the value occurs. The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of combined values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.unionWith(objects, others, _.isEqual); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] - */ - var unionWith = baseRest(function(arrays) { - var comparator = last(arrays); - comparator = typeof comparator == 'function' ? comparator : undefined$1; - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined$1, comparator); - }); - - /** - * Creates a duplicate-free version of an array, using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons, in which only the first occurrence of each element - * is kept. The order of result values is determined by the order they occur - * in the array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.uniq([2, 1, 2]); - * // => [2, 1] - */ - function uniq(array) { - return (array && array.length) ? baseUniq(array) : []; - } - - /** - * This method is like `_.uniq` except that it accepts `iteratee` which is - * invoked for each element in `array` to generate the criterion by which - * uniqueness is computed. The order of result values is determined by the - * order they occur in the array. The iteratee is invoked with one argument: - * (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.uniqBy([2.1, 1.2, 2.3], Math.floor); - * // => [2.1, 1.2] - * - * // The `_.property` iteratee shorthand. - * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] - */ - function uniqBy(array, iteratee) { - return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : []; - } - - /** - * This method is like `_.uniq` except that it accepts `comparator` which - * is invoked to compare elements of `array`. The order of result values is - * determined by the order they occur in the array.The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.uniqWith(objects, _.isEqual); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }] - */ - function uniqWith(array, comparator) { - comparator = typeof comparator == 'function' ? comparator : undefined$1; - return (array && array.length) ? baseUniq(array, undefined$1, comparator) : []; - } - - /** - * This method is like `_.zip` except that it accepts an array of grouped - * elements and creates an array regrouping the elements to their pre-zip - * configuration. - * - * @static - * @memberOf _ - * @since 1.2.0 - * @category Array - * @param {Array} array The array of grouped elements to process. - * @returns {Array} Returns the new array of regrouped elements. - * @example - * - * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]); - * // => [['a', 1, true], ['b', 2, false]] - * - * _.unzip(zipped); - * // => [['a', 'b'], [1, 2], [true, false]] - */ - function unzip(array) { - if (!(array && array.length)) { - return []; - } - var length = 0; - array = arrayFilter(array, function(group) { - if (isArrayLikeObject(group)) { - length = nativeMax(group.length, length); - return true; - } - }); - return baseTimes(length, function(index) { - return arrayMap(array, baseProperty(index)); - }); - } - - /** - * This method is like `_.unzip` except that it accepts `iteratee` to specify - * how regrouped values should be combined. The iteratee is invoked with the - * elements of each group: (...group). - * - * @static - * @memberOf _ - * @since 3.8.0 - * @category Array - * @param {Array} array The array of grouped elements to process. - * @param {Function} [iteratee=_.identity] The function to combine - * regrouped values. - * @returns {Array} Returns the new array of regrouped elements. - * @example - * - * var zipped = _.zip([1, 2], [10, 20], [100, 200]); - * // => [[1, 10, 100], [2, 20, 200]] - * - * _.unzipWith(zipped, _.add); - * // => [3, 30, 300] - */ - function unzipWith(array, iteratee) { - if (!(array && array.length)) { - return []; - } - var result = unzip(array); - if (iteratee == null) { - return result; - } - return arrayMap(result, function(group) { - return apply(iteratee, undefined$1, group); - }); - } - - /** - * Creates an array excluding all given values using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * **Note:** Unlike `_.pull`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...*} [values] The values to exclude. - * @returns {Array} Returns the new array of filtered values. - * @see _.difference, _.xor - * @example - * - * _.without([2, 1, 2, 3], 1, 2); - * // => [3] - */ - var without = baseRest(function(array, values) { - return isArrayLikeObject(array) - ? baseDifference(array, values) - : []; - }); - - /** - * Creates an array of unique values that is the - * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) - * of the given arrays. The order of result values is determined by the order - * they occur in the arrays. - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of filtered values. - * @see _.difference, _.without - * @example - * - * _.xor([2, 1], [2, 3]); - * // => [1, 3] - */ - var xor = baseRest(function(arrays) { - return baseXor(arrayFilter(arrays, isArrayLikeObject)); - }); - - /** - * This method is like `_.xor` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by - * which by which they're compared. The order of result values is determined - * by the order they occur in the arrays. The iteratee is invoked with one - * argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [1.2, 3.4] - * - * // The `_.property` iteratee shorthand. - * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 2 }] - */ - var xorBy = baseRest(function(arrays) { - var iteratee = last(arrays); - if (isArrayLikeObject(iteratee)) { - iteratee = undefined$1; - } - return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2)); - }); - - /** - * This method is like `_.xor` except that it accepts `comparator` which is - * invoked to compare elements of `arrays`. The order of result values is - * determined by the order they occur in the arrays. The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.xorWith(objects, others, _.isEqual); - * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] - */ - var xorWith = baseRest(function(arrays) { - var comparator = last(arrays); - comparator = typeof comparator == 'function' ? comparator : undefined$1; - return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined$1, comparator); - }); - - /** - * Creates an array of grouped elements, the first of which contains the - * first elements of the given arrays, the second of which contains the - * second elements of the given arrays, and so on. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {...Array} [arrays] The arrays to process. - * @returns {Array} Returns the new array of grouped elements. - * @example - * - * _.zip(['a', 'b'], [1, 2], [true, false]); - * // => [['a', 1, true], ['b', 2, false]] - */ - var zip = baseRest(unzip); - - /** - * This method is like `_.fromPairs` except that it accepts two arrays, - * one of property identifiers and one of corresponding values. - * - * @static - * @memberOf _ - * @since 0.4.0 - * @category Array - * @param {Array} [props=[]] The property identifiers. - * @param {Array} [values=[]] The property values. - * @returns {Object} Returns the new object. - * @example - * - * _.zipObject(['a', 'b'], [1, 2]); - * // => { 'a': 1, 'b': 2 } - */ - function zipObject(props, values) { - return baseZipObject(props || [], values || [], assignValue); - } - - /** - * This method is like `_.zipObject` except that it supports property paths. - * - * @static - * @memberOf _ - * @since 4.1.0 - * @category Array - * @param {Array} [props=[]] The property identifiers. - * @param {Array} [values=[]] The property values. - * @returns {Object} Returns the new object. - * @example - * - * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]); - * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } } - */ - function zipObjectDeep(props, values) { - return baseZipObject(props || [], values || [], baseSet); - } - - /** - * This method is like `_.zip` except that it accepts `iteratee` to specify - * how grouped values should be combined. The iteratee is invoked with the - * elements of each group: (...group). - * - * @static - * @memberOf _ - * @since 3.8.0 - * @category Array - * @param {...Array} [arrays] The arrays to process. - * @param {Function} [iteratee=_.identity] The function to combine - * grouped values. - * @returns {Array} Returns the new array of grouped elements. - * @example - * - * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) { - * return a + b + c; - * }); - * // => [111, 222] - */ - var zipWith = baseRest(function(arrays) { - var length = arrays.length, - iteratee = length > 1 ? arrays[length - 1] : undefined$1; - - iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined$1; - return unzipWith(arrays, iteratee); - }); - - /*------------------------------------------------------------------------*/ - - /** - * Creates a `lodash` wrapper instance that wraps `value` with explicit method - * chain sequences enabled. The result of such sequences must be unwrapped - * with `_#value`. - * - * @static - * @memberOf _ - * @since 1.3.0 - * @category Seq - * @param {*} value The value to wrap. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'pebbles', 'age': 1 } - * ]; - * - * var youngest = _ - * .chain(users) - * .sortBy('age') - * .map(function(o) { - * return o.user + ' is ' + o.age; - * }) - * .head() - * .value(); - * // => 'pebbles is 1' - */ - function chain(value) { - var result = lodash(value); - result.__chain__ = true; - return result; - } - - /** - * This method invokes `interceptor` and returns `value`. The interceptor - * is invoked with one argument; (value). The purpose of this method is to - * "tap into" a method chain sequence in order to modify intermediate results. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Seq - * @param {*} value The value to provide to `interceptor`. - * @param {Function} interceptor The function to invoke. - * @returns {*} Returns `value`. - * @example - * - * _([1, 2, 3]) - * .tap(function(array) { - * // Mutate input array. - * array.pop(); - * }) - * .reverse() - * .value(); - * // => [2, 1] - */ - function tap(value, interceptor) { - interceptor(value); - return value; - } - - /** - * This method is like `_.tap` except that it returns the result of `interceptor`. - * The purpose of this method is to "pass thru" values replacing intermediate - * results in a method chain sequence. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Seq - * @param {*} value The value to provide to `interceptor`. - * @param {Function} interceptor The function to invoke. - * @returns {*} Returns the result of `interceptor`. - * @example - * - * _(' abc ') - * .chain() - * .trim() - * .thru(function(value) { - * return [value]; - * }) - * .value(); - * // => ['abc'] - */ - function thru(value, interceptor) { - return interceptor(value); - } - - /** - * This method is the wrapper version of `_.at`. - * - * @name at - * @memberOf _ - * @since 1.0.0 - * @category Seq - * @param {...(string|string[])} [paths] The property paths to pick. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; - * - * _(object).at(['a[0].b.c', 'a[1]']).value(); - * // => [3, 4] - */ - var wrapperAt = flatRest(function(paths) { - var length = paths.length, - start = length ? paths[0] : 0, - value = this.__wrapped__, - interceptor = function(object) { return baseAt(object, paths); }; - - if (length > 1 || this.__actions__.length || - !(value instanceof LazyWrapper) || !isIndex(start)) { - return this.thru(interceptor); - } - value = value.slice(start, +start + (length ? 1 : 0)); - value.__actions__.push({ - 'func': thru, - 'args': [interceptor], - 'thisArg': undefined$1 - }); - return new LodashWrapper(value, this.__chain__).thru(function(array) { - if (length && !array.length) { - array.push(undefined$1); - } - return array; - }); - }); - - /** - * Creates a `lodash` wrapper instance with explicit method chain sequences enabled. - * - * @name chain - * @memberOf _ - * @since 0.1.0 - * @category Seq - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 } - * ]; - * - * // A sequence without explicit chaining. - * _(users).head(); - * // => { 'user': 'barney', 'age': 36 } - * - * // A sequence with explicit chaining. - * _(users) - * .chain() - * .head() - * .pick('user') - * .value(); - * // => { 'user': 'barney' } - */ - function wrapperChain() { - return chain(this); - } - - /** - * Executes the chain sequence and returns the wrapped result. - * - * @name commit - * @memberOf _ - * @since 3.2.0 - * @category Seq - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var array = [1, 2]; - * var wrapped = _(array).push(3); - * - * console.log(array); - * // => [1, 2] - * - * wrapped = wrapped.commit(); - * console.log(array); - * // => [1, 2, 3] - * - * wrapped.last(); - * // => 3 - * - * console.log(array); - * // => [1, 2, 3] - */ - function wrapperCommit() { - return new LodashWrapper(this.value(), this.__chain__); - } - - /** - * Gets the next value on a wrapped object following the - * [iterator protocol](https://mdn.io/iteration_protocols#iterator). - * - * @name next - * @memberOf _ - * @since 4.0.0 - * @category Seq - * @returns {Object} Returns the next iterator value. - * @example - * - * var wrapped = _([1, 2]); - * - * wrapped.next(); - * // => { 'done': false, 'value': 1 } - * - * wrapped.next(); - * // => { 'done': false, 'value': 2 } - * - * wrapped.next(); - * // => { 'done': true, 'value': undefined } - */ - function wrapperNext() { - if (this.__values__ === undefined$1) { - this.__values__ = toArray(this.value()); - } - var done = this.__index__ >= this.__values__.length, - value = done ? undefined$1 : this.__values__[this.__index__++]; - - return { 'done': done, 'value': value }; - } - - /** - * Enables the wrapper to be iterable. - * - * @name Symbol.iterator - * @memberOf _ - * @since 4.0.0 - * @category Seq - * @returns {Object} Returns the wrapper object. - * @example - * - * var wrapped = _([1, 2]); - * - * wrapped[Symbol.iterator]() === wrapped; - * // => true - * - * Array.from(wrapped); - * // => [1, 2] - */ - function wrapperToIterator() { - return this; - } - - /** - * Creates a clone of the chain sequence planting `value` as the wrapped value. - * - * @name plant - * @memberOf _ - * @since 3.2.0 - * @category Seq - * @param {*} value The value to plant. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * function square(n) { - * return n * n; - * } - * - * var wrapped = _([1, 2]).map(square); - * var other = wrapped.plant([3, 4]); - * - * other.value(); - * // => [9, 16] - * - * wrapped.value(); - * // => [1, 4] - */ - function wrapperPlant(value) { - var result, - parent = this; - - while (parent instanceof baseLodash) { - var clone = wrapperClone(parent); - clone.__index__ = 0; - clone.__values__ = undefined$1; - if (result) { - previous.__wrapped__ = clone; - } else { - result = clone; - } - var previous = clone; - parent = parent.__wrapped__; - } - previous.__wrapped__ = value; - return result; - } - - /** - * This method is the wrapper version of `_.reverse`. - * - * **Note:** This method mutates the wrapped array. - * - * @name reverse - * @memberOf _ - * @since 0.1.0 - * @category Seq - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var array = [1, 2, 3]; - * - * _(array).reverse().value() - * // => [3, 2, 1] - * - * console.log(array); - * // => [3, 2, 1] - */ - function wrapperReverse() { - var value = this.__wrapped__; - if (value instanceof LazyWrapper) { - var wrapped = value; - if (this.__actions__.length) { - wrapped = new LazyWrapper(this); - } - wrapped = wrapped.reverse(); - wrapped.__actions__.push({ - 'func': thru, - 'args': [reverse], - 'thisArg': undefined$1 - }); - return new LodashWrapper(wrapped, this.__chain__); - } - return this.thru(reverse); - } - - /** - * Executes the chain sequence to resolve the unwrapped value. - * - * @name value - * @memberOf _ - * @since 0.1.0 - * @alias toJSON, valueOf - * @category Seq - * @returns {*} Returns the resolved unwrapped value. - * @example - * - * _([1, 2, 3]).value(); - * // => [1, 2, 3] - */ - function wrapperValue() { - return baseWrapperValue(this.__wrapped__, this.__actions__); - } - - /*------------------------------------------------------------------------*/ - - /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` thru `iteratee`. The corresponding value of - * each key is the number of times the key was returned by `iteratee`. The - * iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 0.5.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The iteratee to transform keys. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.countBy([6.1, 4.2, 6.3], Math.floor); - * // => { '4': 1, '6': 2 } - * - * // The `_.property` iteratee shorthand. - * _.countBy(['one', 'two', 'three'], 'length'); - * // => { '3': 2, '5': 1 } - */ - var countBy = createAggregator(function(result, value, key) { - if (hasOwnProperty.call(result, key)) { - ++result[key]; - } else { - baseAssignValue(result, key, 1); - } - }); - - /** - * Checks if `predicate` returns truthy for **all** elements of `collection`. - * Iteration is stopped once `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index|key, collection). - * - * **Note:** This method returns `true` for - * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because - * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of - * elements of empty collections. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false`. - * @example - * - * _.every([true, 1, null, 'yes'], Boolean); - * // => false - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * // The `_.matches` iteratee shorthand. - * _.every(users, { 'user': 'barney', 'active': false }); - * // => false - * - * // The `_.matchesProperty` iteratee shorthand. - * _.every(users, ['active', false]); - * // => true - * - * // The `_.property` iteratee shorthand. - * _.every(users, 'active'); - * // => false - */ - function every(collection, predicate, guard) { - var func = isArray(collection) ? arrayEvery : baseEvery; - if (guard && isIterateeCall(collection, predicate, guard)) { - predicate = undefined$1; - } - return func(collection, getIteratee(predicate, 3)); - } - - /** - * Iterates over elements of `collection`, returning an array of all elements - * `predicate` returns truthy for. The predicate is invoked with three - * arguments: (value, index|key, collection). - * - * **Note:** Unlike `_.remove`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - * @see _.reject - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * _.filter(users, function(o) { return !o.active; }); - * // => objects for ['fred'] - * - * // The `_.matches` iteratee shorthand. - * _.filter(users, { 'age': 36, 'active': true }); - * // => objects for ['barney'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.filter(users, ['active', false]); - * // => objects for ['fred'] - * - * // The `_.property` iteratee shorthand. - * _.filter(users, 'active'); - * // => objects for ['barney'] - * - * // Combining several predicates using `_.overEvery` or `_.overSome`. - * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]])); - * // => objects for ['fred', 'barney'] - */ - function filter(collection, predicate) { - var func = isArray(collection) ? arrayFilter : baseFilter; - return func(collection, getIteratee(predicate, 3)); - } - - /** - * Iterates over elements of `collection`, returning the first element - * `predicate` returns truthy for. The predicate is invoked with three - * arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=0] The index to search from. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false }, - * { 'user': 'pebbles', 'age': 1, 'active': true } - * ]; - * - * _.find(users, function(o) { return o.age < 40; }); - * // => object for 'barney' - * - * // The `_.matches` iteratee shorthand. - * _.find(users, { 'age': 1, 'active': true }); - * // => object for 'pebbles' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.find(users, ['active', false]); - * // => object for 'fred' - * - * // The `_.property` iteratee shorthand. - * _.find(users, 'active'); - * // => object for 'barney' - */ - var find = createFind(findIndex); - - /** - * This method is like `_.find` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Collection - * @param {Array|Object} collection The collection to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=collection.length-1] The index to search from. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * _.findLast([1, 2, 3, 4], function(n) { - * return n % 2 == 1; - * }); - * // => 3 - */ - var findLast = createFind(findLastIndex); - - /** - * Creates a flattened array of values by running each element in `collection` - * thru `iteratee` and flattening the mapped results. The iteratee is invoked - * with three arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new flattened array. - * @example - * - * function duplicate(n) { - * return [n, n]; - * } - * - * _.flatMap([1, 2], duplicate); - * // => [1, 1, 2, 2] - */ - function flatMap(collection, iteratee) { - return baseFlatten(map(collection, iteratee), 1); - } - - /** - * This method is like `_.flatMap` except that it recursively flattens the - * mapped results. - * - * @static - * @memberOf _ - * @since 4.7.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new flattened array. - * @example - * - * function duplicate(n) { - * return [[[n, n]]]; - * } - * - * _.flatMapDeep([1, 2], duplicate); - * // => [1, 1, 2, 2] - */ - function flatMapDeep(collection, iteratee) { - return baseFlatten(map(collection, iteratee), INFINITY); - } - - /** - * This method is like `_.flatMap` except that it recursively flattens the - * mapped results up to `depth` times. - * - * @static - * @memberOf _ - * @since 4.7.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {number} [depth=1] The maximum recursion depth. - * @returns {Array} Returns the new flattened array. - * @example - * - * function duplicate(n) { - * return [[[n, n]]]; - * } - * - * _.flatMapDepth([1, 2], duplicate, 2); - * // => [[1, 1], [2, 2]] - */ - function flatMapDepth(collection, iteratee, depth) { - depth = depth === undefined$1 ? 1 : toInteger(depth); - return baseFlatten(map(collection, iteratee), depth); - } - - /** - * Iterates over elements of `collection` and invokes `iteratee` for each element. - * The iteratee is invoked with three arguments: (value, index|key, collection). - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * **Note:** As with other "Collections" methods, objects with a "length" - * property are iterated like arrays. To avoid this behavior use `_.forIn` - * or `_.forOwn` for object iteration. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @alias each - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - * @see _.forEachRight - * @example - * - * _.forEach([1, 2], function(value) { - * console.log(value); - * }); - * // => Logs `1` then `2`. - * - * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a' then 'b' (iteration order is not guaranteed). - */ - function forEach(collection, iteratee) { - var func = isArray(collection) ? arrayEach : baseEach; - return func(collection, getIteratee(iteratee, 3)); - } - - /** - * This method is like `_.forEach` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @alias eachRight - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - * @see _.forEach - * @example - * - * _.forEachRight([1, 2], function(value) { - * console.log(value); - * }); - * // => Logs `2` then `1`. - */ - function forEachRight(collection, iteratee) { - var func = isArray(collection) ? arrayEachRight : baseEachRight; - return func(collection, getIteratee(iteratee, 3)); - } - - /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` thru `iteratee`. The order of grouped values - * is determined by the order they occur in `collection`. The corresponding - * value of each key is an array of elements responsible for generating the - * key. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The iteratee to transform keys. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.groupBy([6.1, 4.2, 6.3], Math.floor); - * // => { '4': [4.2], '6': [6.1, 6.3] } - * - * // The `_.property` iteratee shorthand. - * _.groupBy(['one', 'two', 'three'], 'length'); - * // => { '3': ['one', 'two'], '5': ['three'] } - */ - var groupBy = createAggregator(function(result, value, key) { - if (hasOwnProperty.call(result, key)) { - result[key].push(value); - } else { - baseAssignValue(result, key, [value]); - } - }); - - /** - * Checks if `value` is in `collection`. If `collection` is a string, it's - * checked for a substring of `value`, otherwise - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * is used for equality comparisons. If `fromIndex` is negative, it's used as - * the offset from the end of `collection`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object|string} collection The collection to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. - * @returns {boolean} Returns `true` if `value` is found, else `false`. - * @example - * - * _.includes([1, 2, 3], 1); - * // => true - * - * _.includes([1, 2, 3], 1, 2); - * // => false - * - * _.includes({ 'a': 1, 'b': 2 }, 1); - * // => true - * - * _.includes('abcd', 'bc'); - * // => true - */ - function includes(collection, value, fromIndex, guard) { - collection = isArrayLike(collection) ? collection : values(collection); - fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0; - - var length = collection.length; - if (fromIndex < 0) { - fromIndex = nativeMax(length + fromIndex, 0); - } - return isString(collection) - ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1) - : (!!length && baseIndexOf(collection, value, fromIndex) > -1); - } - - /** - * Invokes the method at `path` of each element in `collection`, returning - * an array of the results of each invoked method. Any additional arguments - * are provided to each invoked method. If `path` is a function, it's invoked - * for, and `this` bound to, each element in `collection`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Array|Function|string} path The path of the method to invoke or - * the function invoked per iteration. - * @param {...*} [args] The arguments to invoke each method with. - * @returns {Array} Returns the array of results. - * @example - * - * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort'); - * // => [[1, 5, 7], [1, 2, 3]] - * - * _.invokeMap([123, 456], String.prototype.split, ''); - * // => [['1', '2', '3'], ['4', '5', '6']] - */ - var invokeMap = baseRest(function(collection, path, args) { - var index = -1, - isFunc = typeof path == 'function', - result = isArrayLike(collection) ? Array(collection.length) : []; - - baseEach(collection, function(value) { - result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args); - }); - return result; - }); - - /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` thru `iteratee`. The corresponding value of - * each key is the last element responsible for generating the key. The - * iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The iteratee to transform keys. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * var array = [ - * { 'dir': 'left', 'code': 97 }, - * { 'dir': 'right', 'code': 100 } - * ]; - * - * _.keyBy(array, function(o) { - * return String.fromCharCode(o.code); - * }); - * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } - * - * _.keyBy(array, 'dir'); - * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } - */ - var keyBy = createAggregator(function(result, value, key) { - baseAssignValue(result, key, value); - }); - - /** - * Creates an array of values by running each element in `collection` thru - * `iteratee`. The iteratee is invoked with three arguments: - * (value, index|key, collection). - * - * Many lodash methods are guarded to work as iteratees for methods like - * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. - * - * The guarded methods are: - * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, - * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, - * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, - * `template`, `trim`, `trimEnd`, `trimStart`, and `words` - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - * @example - * - * function square(n) { - * return n * n; - * } - * - * _.map([4, 8], square); - * // => [16, 64] - * - * _.map({ 'a': 4, 'b': 8 }, square); - * // => [16, 64] (iteration order is not guaranteed) - * - * var users = [ - * { 'user': 'barney' }, - * { 'user': 'fred' } - * ]; - * - * // The `_.property` iteratee shorthand. - * _.map(users, 'user'); - * // => ['barney', 'fred'] - */ - function map(collection, iteratee) { - var func = isArray(collection) ? arrayMap : baseMap; - return func(collection, getIteratee(iteratee, 3)); - } - - /** - * This method is like `_.sortBy` except that it allows specifying the sort - * orders of the iteratees to sort by. If `orders` is unspecified, all values - * are sorted in ascending order. Otherwise, specify an order of "desc" for - * descending or "asc" for ascending sort order of corresponding values. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]] - * The iteratees to sort by. - * @param {string[]} [orders] The sort orders of `iteratees`. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. - * @returns {Array} Returns the new sorted array. - * @example - * - * var users = [ - * { 'user': 'fred', 'age': 48 }, - * { 'user': 'barney', 'age': 34 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'barney', 'age': 36 } - * ]; - * - * // Sort by `user` in ascending order and by `age` in descending order. - * _.orderBy(users, ['user', 'age'], ['asc', 'desc']); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] - */ - function orderBy(collection, iteratees, orders, guard) { - if (collection == null) { - return []; - } - if (!isArray(iteratees)) { - iteratees = iteratees == null ? [] : [iteratees]; - } - orders = guard ? undefined$1 : orders; - if (!isArray(orders)) { - orders = orders == null ? [] : [orders]; - } - return baseOrderBy(collection, iteratees, orders); - } - - /** - * Creates an array of elements split into two groups, the first of which - * contains elements `predicate` returns truthy for, the second of which - * contains elements `predicate` returns falsey for. The predicate is - * invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the array of grouped elements. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': true }, - * { 'user': 'pebbles', 'age': 1, 'active': false } - * ]; - * - * _.partition(users, function(o) { return o.active; }); - * // => objects for [['fred'], ['barney', 'pebbles']] - * - * // The `_.matches` iteratee shorthand. - * _.partition(users, { 'age': 1, 'active': false }); - * // => objects for [['pebbles'], ['barney', 'fred']] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.partition(users, ['active', false]); - * // => objects for [['barney', 'pebbles'], ['fred']] - * - * // The `_.property` iteratee shorthand. - * _.partition(users, 'active'); - * // => objects for [['fred'], ['barney', 'pebbles']] - */ - var partition = createAggregator(function(result, value, key) { - result[key ? 0 : 1].push(value); - }, function() { return [[], []]; }); - - /** - * Reduces `collection` to a value which is the accumulated result of running - * each element in `collection` thru `iteratee`, where each successive - * invocation is supplied the return value of the previous. If `accumulator` - * is not given, the first element of `collection` is used as the initial - * value. The iteratee is invoked with four arguments: - * (accumulator, value, index|key, collection). - * - * Many lodash methods are guarded to work as iteratees for methods like - * `_.reduce`, `_.reduceRight`, and `_.transform`. - * - * The guarded methods are: - * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, - * and `sortBy` - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @returns {*} Returns the accumulated value. - * @see _.reduceRight - * @example - * - * _.reduce([1, 2], function(sum, n) { - * return sum + n; - * }, 0); - * // => 3 - * - * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { - * (result[value] || (result[value] = [])).push(key); - * return result; - * }, {}); - * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) - */ - function reduce(collection, iteratee, accumulator) { - var func = isArray(collection) ? arrayReduce : baseReduce, - initAccum = arguments.length < 3; - - return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach); - } - - /** - * This method is like `_.reduce` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @returns {*} Returns the accumulated value. - * @see _.reduce - * @example - * - * var array = [[0, 1], [2, 3], [4, 5]]; - * - * _.reduceRight(array, function(flattened, other) { - * return flattened.concat(other); - * }, []); - * // => [4, 5, 2, 3, 0, 1] - */ - function reduceRight(collection, iteratee, accumulator) { - var func = isArray(collection) ? arrayReduceRight : baseReduce, - initAccum = arguments.length < 3; - - return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight); - } - - /** - * The opposite of `_.filter`; this method returns the elements of `collection` - * that `predicate` does **not** return truthy for. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - * @see _.filter - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': true } - * ]; - * - * _.reject(users, function(o) { return !o.active; }); - * // => objects for ['fred'] - * - * // The `_.matches` iteratee shorthand. - * _.reject(users, { 'age': 40, 'active': true }); - * // => objects for ['barney'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.reject(users, ['active', false]); - * // => objects for ['fred'] - * - * // The `_.property` iteratee shorthand. - * _.reject(users, 'active'); - * // => objects for ['barney'] - */ - function reject(collection, predicate) { - var func = isArray(collection) ? arrayFilter : baseFilter; - return func(collection, negate(getIteratee(predicate, 3))); - } - - /** - * Gets a random element from `collection`. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Collection - * @param {Array|Object} collection The collection to sample. - * @returns {*} Returns the random element. - * @example - * - * _.sample([1, 2, 3, 4]); - * // => 2 - */ - function sample(collection) { - var func = isArray(collection) ? arraySample : baseSample; - return func(collection); - } - - /** - * Gets `n` random elements at unique keys from `collection` up to the - * size of `collection`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to sample. - * @param {number} [n=1] The number of elements to sample. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the random elements. - * @example - * - * _.sampleSize([1, 2, 3], 2); - * // => [3, 1] - * - * _.sampleSize([1, 2, 3], 4); - * // => [2, 3, 1] - */ - function sampleSize(collection, n, guard) { - if ((guard ? isIterateeCall(collection, n, guard) : n === undefined$1)) { - n = 1; - } else { - n = toInteger(n); - } - var func = isArray(collection) ? arraySampleSize : baseSampleSize; - return func(collection, n); - } - - /** - * Creates an array of shuffled values, using a version of the - * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to shuffle. - * @returns {Array} Returns the new shuffled array. - * @example - * - * _.shuffle([1, 2, 3, 4]); - * // => [4, 1, 3, 2] - */ - function shuffle(collection) { - var func = isArray(collection) ? arrayShuffle : baseShuffle; - return func(collection); - } - - /** - * Gets the size of `collection` by returning its length for array-like - * values or the number of own enumerable string keyed properties for objects. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object|string} collection The collection to inspect. - * @returns {number} Returns the collection size. - * @example - * - * _.size([1, 2, 3]); - * // => 3 - * - * _.size({ 'a': 1, 'b': 2 }); - * // => 2 - * - * _.size('pebbles'); - * // => 7 - */ - function size(collection) { - if (collection == null) { - return 0; - } - if (isArrayLike(collection)) { - return isString(collection) ? stringSize(collection) : collection.length; - } - var tag = getTag(collection); - if (tag == mapTag || tag == setTag) { - return collection.size; - } - return baseKeys(collection).length; - } - - /** - * Checks if `predicate` returns truthy for **any** element of `collection`. - * Iteration is stopped once `predicate` returns truthy. The predicate is - * invoked with three arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - * @example - * - * _.some([null, 0, 'yes', false], Boolean); - * // => true - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false } - * ]; - * - * // The `_.matches` iteratee shorthand. - * _.some(users, { 'user': 'barney', 'active': false }); - * // => false - * - * // The `_.matchesProperty` iteratee shorthand. - * _.some(users, ['active', false]); - * // => true - * - * // The `_.property` iteratee shorthand. - * _.some(users, 'active'); - * // => true - */ - function some(collection, predicate, guard) { - var func = isArray(collection) ? arraySome : baseSome; - if (guard && isIterateeCall(collection, predicate, guard)) { - predicate = undefined$1; - } - return func(collection, getIteratee(predicate, 3)); - } - - /** - * Creates an array of elements, sorted in ascending order by the results of - * running each element in a collection thru each iteratee. This method - * performs a stable sort, that is, it preserves the original sort order of - * equal elements. The iteratees are invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {...(Function|Function[])} [iteratees=[_.identity]] - * The iteratees to sort by. - * @returns {Array} Returns the new sorted array. - * @example - * - * var users = [ - * { 'user': 'fred', 'age': 48 }, - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 30 }, - * { 'user': 'barney', 'age': 34 } - * ]; - * - * _.sortBy(users, [function(o) { return o.user; }]); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] - * - * _.sortBy(users, ['user', 'age']); - * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] - */ - var sortBy = baseRest(function(collection, iteratees) { - if (collection == null) { - return []; - } - var length = iteratees.length; - if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { - iteratees = []; - } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { - iteratees = [iteratees[0]]; - } - return baseOrderBy(collection, baseFlatten(iteratees, 1), []); - }); - - /*------------------------------------------------------------------------*/ - - /** - * Gets the timestamp of the number of milliseconds that have elapsed since - * the Unix epoch (1 January 1970 00:00:00 UTC). - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Date - * @returns {number} Returns the timestamp. - * @example - * - * _.defer(function(stamp) { - * console.log(_.now() - stamp); - * }, _.now()); - * // => Logs the number of milliseconds it took for the deferred invocation. - */ - var now = ctxNow || function() { - return root.Date.now(); - }; - - /*------------------------------------------------------------------------*/ - - /** - * The opposite of `_.before`; this method creates a function that invokes - * `func` once it's called `n` or more times. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {number} n The number of calls before `func` is invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var saves = ['profile', 'settings']; - * - * var done = _.after(saves.length, function() { - * console.log('done saving!'); - * }); - * - * _.forEach(saves, function(type) { - * asyncSave({ 'type': type, 'complete': done }); - * }); - * // => Logs 'done saving!' after the two async saves have completed. - */ - function after(n, func) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - n = toInteger(n); - return function() { - if (--n < 1) { - return func.apply(this, arguments); - } - }; - } - - /** - * Creates a function that invokes `func`, with up to `n` arguments, - * ignoring any additional arguments. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} func The function to cap arguments for. - * @param {number} [n=func.length] The arity cap. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new capped function. - * @example - * - * _.map(['6', '8', '10'], _.ary(parseInt, 1)); - * // => [6, 8, 10] - */ - function ary(func, n, guard) { - n = guard ? undefined$1 : n; - n = (func && n == null) ? func.length : n; - return createWrap(func, WRAP_ARY_FLAG, undefined$1, undefined$1, undefined$1, undefined$1, n); - } - - /** - * Creates a function that invokes `func`, with the `this` binding and arguments - * of the created function, while it's called less than `n` times. Subsequent - * calls to the created function return the result of the last `func` invocation. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {number} n The number of calls at which `func` is no longer invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * jQuery(element).on('click', _.before(5, addContactToList)); - * // => Allows adding up to 4 contacts to the list. - */ - function before(n, func) { - var result; - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - n = toInteger(n); - return function() { - if (--n > 0) { - result = func.apply(this, arguments); - } - if (n <= 1) { - func = undefined$1; - } - return result; - }; - } - - /** - * Creates a function that invokes `func` with the `this` binding of `thisArg` - * and `partials` prepended to the arguments it receives. - * - * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, - * may be used as a placeholder for partially applied arguments. - * - * **Note:** Unlike native `Function#bind`, this method doesn't set the "length" - * property of bound functions. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to bind. - * @param {*} thisArg The `this` binding of `func`. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * function greet(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * } - * - * var object = { 'user': 'fred' }; - * - * var bound = _.bind(greet, object, 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * // Bound with placeholders. - * var bound = _.bind(greet, object, _, '!'); - * bound('hi'); - * // => 'hi fred!' - */ - var bind = baseRest(function(func, thisArg, partials) { - var bitmask = WRAP_BIND_FLAG; - if (partials.length) { - var holders = replaceHolders(partials, getHolder(bind)); - bitmask |= WRAP_PARTIAL_FLAG; - } - return createWrap(func, bitmask, thisArg, partials, holders); - }); - - /** - * Creates a function that invokes the method at `object[key]` with `partials` - * prepended to the arguments it receives. - * - * This method differs from `_.bind` by allowing bound functions to reference - * methods that may be redefined or don't yet exist. See - * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern) - * for more details. - * - * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * @static - * @memberOf _ - * @since 0.10.0 - * @category Function - * @param {Object} object The object to invoke the method on. - * @param {string} key The key of the method. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * var object = { - * 'user': 'fred', - * 'greet': function(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * } - * }; - * - * var bound = _.bindKey(object, 'greet', 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * object.greet = function(greeting, punctuation) { - * return greeting + 'ya ' + this.user + punctuation; - * }; - * - * bound('!'); - * // => 'hiya fred!' - * - * // Bound with placeholders. - * var bound = _.bindKey(object, 'greet', _, '!'); - * bound('hi'); - * // => 'hiya fred!' - */ - var bindKey = baseRest(function(object, key, partials) { - var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG; - if (partials.length) { - var holders = replaceHolders(partials, getHolder(bindKey)); - bitmask |= WRAP_PARTIAL_FLAG; - } - return createWrap(key, bitmask, object, partials, holders); - }); - - /** - * Creates a function that accepts arguments of `func` and either invokes - * `func` returning its result, if at least `arity` number of arguments have - * been provided, or returns a function that accepts the remaining `func` - * arguments, and so on. The arity of `func` may be specified if `func.length` - * is not sufficient. - * - * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, - * may be used as a placeholder for provided arguments. - * - * **Note:** This method doesn't set the "length" property of curried functions. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Function - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new curried function. - * @example - * - * var abc = function(a, b, c) { - * return [a, b, c]; - * }; - * - * var curried = _.curry(abc); - * - * curried(1)(2)(3); - * // => [1, 2, 3] - * - * curried(1, 2)(3); - * // => [1, 2, 3] - * - * curried(1, 2, 3); - * // => [1, 2, 3] - * - * // Curried with placeholders. - * curried(1)(_, 3)(2); - * // => [1, 2, 3] - */ - function curry(func, arity, guard) { - arity = guard ? undefined$1 : arity; - var result = createWrap(func, WRAP_CURRY_FLAG, undefined$1, undefined$1, undefined$1, undefined$1, undefined$1, arity); - result.placeholder = curry.placeholder; - return result; - } - - /** - * This method is like `_.curry` except that arguments are applied to `func` - * in the manner of `_.partialRight` instead of `_.partial`. - * - * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for provided arguments. - * - * **Note:** This method doesn't set the "length" property of curried functions. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new curried function. - * @example - * - * var abc = function(a, b, c) { - * return [a, b, c]; - * }; - * - * var curried = _.curryRight(abc); - * - * curried(3)(2)(1); - * // => [1, 2, 3] - * - * curried(2, 3)(1); - * // => [1, 2, 3] - * - * curried(1, 2, 3); - * // => [1, 2, 3] - * - * // Curried with placeholders. - * curried(3)(1, _)(2); - * // => [1, 2, 3] - */ - function curryRight(func, arity, guard) { - arity = guard ? undefined$1 : arity; - var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined$1, undefined$1, undefined$1, undefined$1, undefined$1, arity); - result.placeholder = curryRight.placeholder; - return result; - } - - /** - * Creates a debounced function that delays invoking `func` until after `wait` - * milliseconds have elapsed since the last time the debounced function was - * invoked. The debounced function comes with a `cancel` method to cancel - * delayed `func` invocations and a `flush` method to immediately invoke them. - * Provide `options` to indicate whether `func` should be invoked on the - * leading and/or trailing edge of the `wait` timeout. The `func` is invoked - * with the last arguments provided to the debounced function. Subsequent - * calls to the debounced function return the result of the last `func` - * invocation. - * - * **Note:** If `leading` and `trailing` options are `true`, `func` is - * invoked on the trailing edge of the timeout only if the debounced function - * is invoked more than once during the `wait` timeout. - * - * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred - * until to the next tick, similar to `setTimeout` with a timeout of `0`. - * - * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) - * for details over the differences between `_.debounce` and `_.throttle`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to debounce. - * @param {number} [wait=0] The number of milliseconds to delay. - * @param {Object} [options={}] The options object. - * @param {boolean} [options.leading=false] - * Specify invoking on the leading edge of the timeout. - * @param {number} [options.maxWait] - * The maximum time `func` is allowed to be delayed before it's invoked. - * @param {boolean} [options.trailing=true] - * Specify invoking on the trailing edge of the timeout. - * @returns {Function} Returns the new debounced function. - * @example - * - * // Avoid costly calculations while the window size is in flux. - * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); - * - * // Invoke `sendMail` when clicked, debouncing subsequent calls. - * jQuery(element).on('click', _.debounce(sendMail, 300, { - * 'leading': true, - * 'trailing': false - * })); - * - * // Ensure `batchLog` is invoked once after 1 second of debounced calls. - * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); - * var source = new EventSource('/stream'); - * jQuery(source).on('message', debounced); - * - * // Cancel the trailing debounced invocation. - * jQuery(window).on('popstate', debounced.cancel); - */ - function debounce(func, wait, options) { - var lastArgs, - lastThis, - maxWait, - result, - timerId, - lastCallTime, - lastInvokeTime = 0, - leading = false, - maxing = false, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - wait = toNumber(wait) || 0; - if (isObject(options)) { - leading = !!options.leading; - maxing = 'maxWait' in options; - maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; - trailing = 'trailing' in options ? !!options.trailing : trailing; - } - - function invokeFunc(time) { - var args = lastArgs, - thisArg = lastThis; - - lastArgs = lastThis = undefined$1; - lastInvokeTime = time; - result = func.apply(thisArg, args); - return result; - } - - function leadingEdge(time) { - // Reset any `maxWait` timer. - lastInvokeTime = time; - // Start the timer for the trailing edge. - timerId = setTimeout(timerExpired, wait); - // Invoke the leading edge. - return leading ? invokeFunc(time) : result; - } - - function remainingWait(time) { - var timeSinceLastCall = time - lastCallTime, - timeSinceLastInvoke = time - lastInvokeTime, - timeWaiting = wait - timeSinceLastCall; - - return maxing - ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) - : timeWaiting; - } - - function shouldInvoke(time) { - var timeSinceLastCall = time - lastCallTime, - timeSinceLastInvoke = time - lastInvokeTime; - - // Either this is the first call, activity has stopped and we're at the - // trailing edge, the system time has gone backwards and we're treating - // it as the trailing edge, or we've hit the `maxWait` limit. - return (lastCallTime === undefined$1 || (timeSinceLastCall >= wait) || - (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); - } - - function timerExpired() { - var time = now(); - if (shouldInvoke(time)) { - return trailingEdge(time); - } - // Restart the timer. - timerId = setTimeout(timerExpired, remainingWait(time)); - } - - function trailingEdge(time) { - timerId = undefined$1; - - // Only invoke if we have `lastArgs` which means `func` has been - // debounced at least once. - if (trailing && lastArgs) { - return invokeFunc(time); - } - lastArgs = lastThis = undefined$1; - return result; - } - - function cancel() { - if (timerId !== undefined$1) { - clearTimeout(timerId); - } - lastInvokeTime = 0; - lastArgs = lastCallTime = lastThis = timerId = undefined$1; - } - - function flush() { - return timerId === undefined$1 ? result : trailingEdge(now()); - } - - function debounced() { - var time = now(), - isInvoking = shouldInvoke(time); - - lastArgs = arguments; - lastThis = this; - lastCallTime = time; - - if (isInvoking) { - if (timerId === undefined$1) { - return leadingEdge(lastCallTime); - } - if (maxing) { - // Handle invocations in a tight loop. - clearTimeout(timerId); - timerId = setTimeout(timerExpired, wait); - return invokeFunc(lastCallTime); - } - } - if (timerId === undefined$1) { - timerId = setTimeout(timerExpired, wait); - } - return result; - } - debounced.cancel = cancel; - debounced.flush = flush; - return debounced; - } - - /** - * Defers invoking the `func` until the current call stack has cleared. Any - * additional arguments are provided to `func` when it's invoked. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to defer. - * @param {...*} [args] The arguments to invoke `func` with. - * @returns {number} Returns the timer id. - * @example - * - * _.defer(function(text) { - * console.log(text); - * }, 'deferred'); - * // => Logs 'deferred' after one millisecond. - */ - var defer = baseRest(function(func, args) { - return baseDelay(func, 1, args); - }); - - /** - * Invokes `func` after `wait` milliseconds. Any additional arguments are - * provided to `func` when it's invoked. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {...*} [args] The arguments to invoke `func` with. - * @returns {number} Returns the timer id. - * @example - * - * _.delay(function(text) { - * console.log(text); - * }, 1000, 'later'); - * // => Logs 'later' after one second. - */ - var delay = baseRest(function(func, wait, args) { - return baseDelay(func, toNumber(wait) || 0, args); - }); - - /** - * Creates a function that invokes `func` with arguments reversed. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Function - * @param {Function} func The function to flip arguments for. - * @returns {Function} Returns the new flipped function. - * @example - * - * var flipped = _.flip(function() { - * return _.toArray(arguments); - * }); - * - * flipped('a', 'b', 'c', 'd'); - * // => ['d', 'c', 'b', 'a'] - */ - function flip(func) { - return createWrap(func, WRAP_FLIP_FLAG); - } - - /** - * Creates a function that memoizes the result of `func`. If `resolver` is - * provided, it determines the cache key for storing the result based on the - * arguments provided to the memoized function. By default, the first argument - * provided to the memoized function is used as the map cache key. The `func` - * is invoked with the `this` binding of the memoized function. - * - * **Note:** The cache is exposed as the `cache` property on the memoized - * function. Its creation may be customized by replacing the `_.memoize.Cache` - * constructor with one whose instances implement the - * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) - * method interface of `clear`, `delete`, `get`, `has`, and `set`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] The function to resolve the cache key. - * @returns {Function} Returns the new memoized function. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * var other = { 'c': 3, 'd': 4 }; - * - * var values = _.memoize(_.values); - * values(object); - * // => [1, 2] - * - * values(other); - * // => [3, 4] - * - * object.a = 2; - * values(object); - * // => [1, 2] - * - * // Modify the result cache. - * values.cache.set(object, ['a', 'b']); - * values(object); - * // => ['a', 'b'] - * - * // Replace `_.memoize.Cache`. - * _.memoize.Cache = WeakMap; - */ - function memoize(func, resolver) { - if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { - throw new TypeError(FUNC_ERROR_TEXT); - } - var memoized = function() { - var args = arguments, - key = resolver ? resolver.apply(this, args) : args[0], - cache = memoized.cache; - - if (cache.has(key)) { - return cache.get(key); - } - var result = func.apply(this, args); - memoized.cache = cache.set(key, result) || cache; - return result; - }; - memoized.cache = new (memoize.Cache || MapCache); - return memoized; - } - - // Expose `MapCache`. - memoize.Cache = MapCache; - - /** - * Creates a function that negates the result of the predicate `func`. The - * `func` predicate is invoked with the `this` binding and arguments of the - * created function. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} predicate The predicate to negate. - * @returns {Function} Returns the new negated function. - * @example - * - * function isEven(n) { - * return n % 2 == 0; - * } - * - * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); - * // => [1, 3, 5] - */ - function negate(predicate) { - if (typeof predicate != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return function() { - var args = arguments; - switch (args.length) { - case 0: return !predicate.call(this); - case 1: return !predicate.call(this, args[0]); - case 2: return !predicate.call(this, args[0], args[1]); - case 3: return !predicate.call(this, args[0], args[1], args[2]); - } - return !predicate.apply(this, args); - }; - } - - /** - * Creates a function that is restricted to invoking `func` once. Repeat calls - * to the function return the value of the first invocation. The `func` is - * invoked with the `this` binding and arguments of the created function. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var initialize = _.once(createApplication); - * initialize(); - * initialize(); - * // => `createApplication` is invoked once - */ - function once(func) { - return before(2, func); - } - - /** - * Creates a function that invokes `func` with its arguments transformed. - * - * @static - * @since 4.0.0 - * @memberOf _ - * @category Function - * @param {Function} func The function to wrap. - * @param {...(Function|Function[])} [transforms=[_.identity]] - * The argument transforms. - * @returns {Function} Returns the new function. - * @example - * - * function doubled(n) { - * return n * 2; - * } - * - * function square(n) { - * return n * n; - * } - * - * var func = _.overArgs(function(x, y) { - * return [x, y]; - * }, [square, doubled]); - * - * func(9, 3); - * // => [81, 6] - * - * func(10, 5); - * // => [100, 10] - */ - var overArgs = castRest(function(func, transforms) { - transforms = (transforms.length == 1 && isArray(transforms[0])) - ? arrayMap(transforms[0], baseUnary(getIteratee())) - : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee())); - - var funcsLength = transforms.length; - return baseRest(function(args) { - var index = -1, - length = nativeMin(args.length, funcsLength); - - while (++index < length) { - args[index] = transforms[index].call(this, args[index]); - } - return apply(func, this, args); - }); - }); - - /** - * Creates a function that invokes `func` with `partials` prepended to the - * arguments it receives. This method is like `_.bind` except it does **not** - * alter the `this` binding. - * - * The `_.partial.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * **Note:** This method doesn't set the "length" property of partially - * applied functions. - * - * @static - * @memberOf _ - * @since 0.2.0 - * @category Function - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * function greet(greeting, name) { - * return greeting + ' ' + name; - * } - * - * var sayHelloTo = _.partial(greet, 'hello'); - * sayHelloTo('fred'); - * // => 'hello fred' - * - * // Partially applied with placeholders. - * var greetFred = _.partial(greet, _, 'fred'); - * greetFred('hi'); - * // => 'hi fred' - */ - var partial = baseRest(function(func, partials) { - var holders = replaceHolders(partials, getHolder(partial)); - return createWrap(func, WRAP_PARTIAL_FLAG, undefined$1, partials, holders); - }); - - /** - * This method is like `_.partial` except that partially applied arguments - * are appended to the arguments it receives. - * - * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * **Note:** This method doesn't set the "length" property of partially - * applied functions. - * - * @static - * @memberOf _ - * @since 1.0.0 - * @category Function - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * function greet(greeting, name) { - * return greeting + ' ' + name; - * } - * - * var greetFred = _.partialRight(greet, 'fred'); - * greetFred('hi'); - * // => 'hi fred' - * - * // Partially applied with placeholders. - * var sayHelloTo = _.partialRight(greet, 'hello', _); - * sayHelloTo('fred'); - * // => 'hello fred' - */ - var partialRight = baseRest(function(func, partials) { - var holders = replaceHolders(partials, getHolder(partialRight)); - return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined$1, partials, holders); - }); - - /** - * Creates a function that invokes `func` with arguments arranged according - * to the specified `indexes` where the argument value at the first index is - * provided as the first argument, the argument value at the second index is - * provided as the second argument, and so on. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} func The function to rearrange arguments for. - * @param {...(number|number[])} indexes The arranged argument indexes. - * @returns {Function} Returns the new function. - * @example - * - * var rearged = _.rearg(function(a, b, c) { - * return [a, b, c]; - * }, [2, 0, 1]); - * - * rearged('b', 'c', 'a') - * // => ['a', 'b', 'c'] - */ - var rearg = flatRest(function(func, indexes) { - return createWrap(func, WRAP_REARG_FLAG, undefined$1, undefined$1, undefined$1, indexes); - }); - - /** - * Creates a function that invokes `func` with the `this` binding of the - * created function and arguments from `start` and beyond provided as - * an array. - * - * **Note:** This method is based on the - * [rest parameter](https://mdn.io/rest_parameters). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Function - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @returns {Function} Returns the new function. - * @example - * - * var say = _.rest(function(what, names) { - * return what + ' ' + _.initial(names).join(', ') + - * (_.size(names) > 1 ? ', & ' : '') + _.last(names); - * }); - * - * say('hello', 'fred', 'barney', 'pebbles'); - * // => 'hello fred, barney, & pebbles' - */ - function rest(func, start) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - start = start === undefined$1 ? start : toInteger(start); - return baseRest(func, start); - } - - /** - * Creates a function that invokes `func` with the `this` binding of the - * create function and an array of arguments much like - * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply). - * - * **Note:** This method is based on the - * [spread operator](https://mdn.io/spread_operator). - * - * @static - * @memberOf _ - * @since 3.2.0 - * @category Function - * @param {Function} func The function to spread arguments over. - * @param {number} [start=0] The start position of the spread. - * @returns {Function} Returns the new function. - * @example - * - * var say = _.spread(function(who, what) { - * return who + ' says ' + what; - * }); - * - * say(['fred', 'hello']); - * // => 'fred says hello' - * - * var numbers = Promise.all([ - * Promise.resolve(40), - * Promise.resolve(36) - * ]); - * - * numbers.then(_.spread(function(x, y) { - * return x + y; - * })); - * // => a Promise of 76 - */ - function spread(func, start) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - start = start == null ? 0 : nativeMax(toInteger(start), 0); - return baseRest(function(args) { - var array = args[start], - otherArgs = castSlice(args, 0, start); - - if (array) { - arrayPush(otherArgs, array); - } - return apply(func, this, otherArgs); - }); - } - - /** - * Creates a throttled function that only invokes `func` at most once per - * every `wait` milliseconds. The throttled function comes with a `cancel` - * method to cancel delayed `func` invocations and a `flush` method to - * immediately invoke them. Provide `options` to indicate whether `func` - * should be invoked on the leading and/or trailing edge of the `wait` - * timeout. The `func` is invoked with the last arguments provided to the - * throttled function. Subsequent calls to the throttled function return the - * result of the last `func` invocation. - * - * **Note:** If `leading` and `trailing` options are `true`, `func` is - * invoked on the trailing edge of the timeout only if the throttled function - * is invoked more than once during the `wait` timeout. - * - * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred - * until to the next tick, similar to `setTimeout` with a timeout of `0`. - * - * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) - * for details over the differences between `_.throttle` and `_.debounce`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to throttle. - * @param {number} [wait=0] The number of milliseconds to throttle invocations to. - * @param {Object} [options={}] The options object. - * @param {boolean} [options.leading=true] - * Specify invoking on the leading edge of the timeout. - * @param {boolean} [options.trailing=true] - * Specify invoking on the trailing edge of the timeout. - * @returns {Function} Returns the new throttled function. - * @example - * - * // Avoid excessively updating the position while scrolling. - * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); - * - * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. - * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); - * jQuery(element).on('click', throttled); - * - * // Cancel the trailing throttled invocation. - * jQuery(window).on('popstate', throttled.cancel); - */ - function throttle(func, wait, options) { - var leading = true, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - if (isObject(options)) { - leading = 'leading' in options ? !!options.leading : leading; - trailing = 'trailing' in options ? !!options.trailing : trailing; - } - return debounce(func, wait, { - 'leading': leading, - 'maxWait': wait, - 'trailing': trailing - }); - } - - /** - * Creates a function that accepts up to one argument, ignoring any - * additional arguments. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Function - * @param {Function} func The function to cap arguments for. - * @returns {Function} Returns the new capped function. - * @example - * - * _.map(['6', '8', '10'], _.unary(parseInt)); - * // => [6, 8, 10] - */ - function unary(func) { - return ary(func, 1); - } - - /** - * Creates a function that provides `value` to `wrapper` as its first - * argument. Any additional arguments provided to the function are appended - * to those provided to the `wrapper`. The wrapper is invoked with the `this` - * binding of the created function. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {*} value The value to wrap. - * @param {Function} [wrapper=identity] The wrapper function. - * @returns {Function} Returns the new function. - * @example - * - * var p = _.wrap(_.escape, function(func, text) { - * return '<p>' + func(text) + '</p>'; - * }); - * - * p('fred, barney, & pebbles'); - * // => '<p>fred, barney, & pebbles</p>' - */ - function wrap(value, wrapper) { - return partial(castFunction(wrapper), value); - } - - /*------------------------------------------------------------------------*/ - - /** - * Casts `value` as an array if it's not one. - * - * @static - * @memberOf _ - * @since 4.4.0 - * @category Lang - * @param {*} value The value to inspect. - * @returns {Array} Returns the cast array. - * @example - * - * _.castArray(1); - * // => [1] - * - * _.castArray({ 'a': 1 }); - * // => [{ 'a': 1 }] - * - * _.castArray('abc'); - * // => ['abc'] - * - * _.castArray(null); - * // => [null] - * - * _.castArray(undefined); - * // => [undefined] - * - * _.castArray(); - * // => [] - * - * var array = [1, 2, 3]; - * console.log(_.castArray(array) === array); - * // => true - */ - function castArray() { - if (!arguments.length) { - return []; - } - var value = arguments[0]; - return isArray(value) ? value : [value]; - } - - /** - * Creates a shallow clone of `value`. - * - * **Note:** This method is loosely based on the - * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) - * and supports cloning arrays, array buffers, booleans, date objects, maps, - * numbers, `Object` objects, regexes, sets, strings, symbols, and typed - * arrays. The own enumerable properties of `arguments` objects are cloned - * as plain objects. An empty object is returned for uncloneable values such - * as error objects, functions, DOM nodes, and WeakMaps. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to clone. - * @returns {*} Returns the cloned value. - * @see _.cloneDeep - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var shallow = _.clone(objects); - * console.log(shallow[0] === objects[0]); - * // => true - */ - function clone(value) { - return baseClone(value, CLONE_SYMBOLS_FLAG); - } - - /** - * This method is like `_.clone` except that it accepts `customizer` which - * is invoked to produce the cloned value. If `customizer` returns `undefined`, - * cloning is handled by the method instead. The `customizer` is invoked with - * up to four arguments; (value [, index|key, object, stack]). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to clone. - * @param {Function} [customizer] The function to customize cloning. - * @returns {*} Returns the cloned value. - * @see _.cloneDeepWith - * @example - * - * function customizer(value) { - * if (_.isElement(value)) { - * return value.cloneNode(false); - * } - * } - * - * var el = _.cloneWith(document.body, customizer); - * - * console.log(el === document.body); - * // => false - * console.log(el.nodeName); - * // => 'BODY' - * console.log(el.childNodes.length); - * // => 0 - */ - function cloneWith(value, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined$1; - return baseClone(value, CLONE_SYMBOLS_FLAG, customizer); - } - - /** - * This method is like `_.clone` except that it recursively clones `value`. - * - * @static - * @memberOf _ - * @since 1.0.0 - * @category Lang - * @param {*} value The value to recursively clone. - * @returns {*} Returns the deep cloned value. - * @see _.clone - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var deep = _.cloneDeep(objects); - * console.log(deep[0] === objects[0]); - * // => false - */ - function cloneDeep(value) { - return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); - } - - /** - * This method is like `_.cloneWith` except that it recursively clones `value`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to recursively clone. - * @param {Function} [customizer] The function to customize cloning. - * @returns {*} Returns the deep cloned value. - * @see _.cloneWith - * @example - * - * function customizer(value) { - * if (_.isElement(value)) { - * return value.cloneNode(true); - * } - * } - * - * var el = _.cloneDeepWith(document.body, customizer); - * - * console.log(el === document.body); - * // => false - * console.log(el.nodeName); - * // => 'BODY' - * console.log(el.childNodes.length); - * // => 20 - */ - function cloneDeepWith(value, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined$1; - return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer); - } - - /** - * Checks if `object` conforms to `source` by invoking the predicate - * properties of `source` with the corresponding property values of `object`. - * - * **Note:** This method is equivalent to `_.conforms` when `source` is - * partially applied. - * - * @static - * @memberOf _ - * @since 4.14.0 - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property predicates to conform to. - * @returns {boolean} Returns `true` if `object` conforms, else `false`. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * - * _.conformsTo(object, { 'b': function(n) { return n > 1; } }); - * // => true - * - * _.conformsTo(object, { 'b': function(n) { return n > 2; } }); - * // => false - */ - function conformsTo(object, source) { - return source == null || baseConformsTo(object, source, keys(source)); - } - - /** - * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true - */ - function eq(value, other) { - return value === other || (value !== value && other !== other); - } - - /** - * Checks if `value` is greater than `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than `other`, - * else `false`. - * @see _.lt - * @example - * - * _.gt(3, 1); - * // => true - * - * _.gt(3, 3); - * // => false - * - * _.gt(1, 3); - * // => false - */ - var gt = createRelationalOperation(baseGt); - - /** - * Checks if `value` is greater than or equal to `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than or equal to - * `other`, else `false`. - * @see _.lte - * @example - * - * _.gte(3, 1); - * // => true - * - * _.gte(3, 3); - * // => true - * - * _.gte(1, 3); - * // => false - */ - var gte = createRelationalOperation(function(value, other) { - return value >= other; - }); - - /** - * Checks if `value` is likely an `arguments` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - * else `false`. - * @example - * - * _.isArguments(function() { return arguments; }()); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ - var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { - return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && - !propertyIsEnumerable.call(value, 'callee'); - }; - - /** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ - var isArray = Array.isArray; - - /** - * Checks if `value` is classified as an `ArrayBuffer` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. - * @example - * - * _.isArrayBuffer(new ArrayBuffer(2)); - * // => true - * - * _.isArrayBuffer(new Array(2)); - * // => false - */ - var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; - - /** - * Checks if `value` is array-like. A value is considered array-like if it's - * not a function and has a `value.length` that's an integer greater than or - * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - * @example - * - * _.isArrayLike([1, 2, 3]); - * // => true - * - * _.isArrayLike(document.body.children); - * // => true - * - * _.isArrayLike('abc'); - * // => true - * - * _.isArrayLike(_.noop); - * // => false - */ - function isArrayLike(value) { - return value != null && isLength(value.length) && !isFunction(value); - } - - /** - * This method is like `_.isArrayLike` except that it also checks if `value` - * is an object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array-like object, - * else `false`. - * @example - * - * _.isArrayLikeObject([1, 2, 3]); - * // => true - * - * _.isArrayLikeObject(document.body.children); - * // => true - * - * _.isArrayLikeObject('abc'); - * // => false - * - * _.isArrayLikeObject(_.noop); - * // => false - */ - function isArrayLikeObject(value) { - return isObjectLike(value) && isArrayLike(value); - } - - /** - * Checks if `value` is classified as a boolean primitive or object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. - * @example - * - * _.isBoolean(false); - * // => true - * - * _.isBoolean(null); - * // => false - */ - function isBoolean(value) { - return value === true || value === false || - (isObjectLike(value) && baseGetTag(value) == boolTag); - } - - /** - * Checks if `value` is a buffer. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. - * @example - * - * _.isBuffer(new Buffer(2)); - * // => true - * - * _.isBuffer(new Uint8Array(2)); - * // => false - */ - var isBuffer = nativeIsBuffer || stubFalse; - - /** - * Checks if `value` is classified as a `Date` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a date object, else `false`. - * @example - * - * _.isDate(new Date); - * // => true - * - * _.isDate('Mon April 23 2012'); - * // => false - */ - var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; - - /** - * Checks if `value` is likely a DOM element. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. - * @example - * - * _.isElement(document.body); - * // => true - * - * _.isElement('<body>'); - * // => false - */ - function isElement(value) { - return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value); - } - - /** - * Checks if `value` is an empty object, collection, map, or set. - * - * Objects are considered empty if they have no own enumerable string keyed - * properties. - * - * Array-like values such as `arguments` objects, arrays, buffers, strings, or - * jQuery-like collections are considered empty if they have a `length` of `0`. - * Similarly, maps and sets are considered empty if they have a `size` of `0`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is empty, else `false`. - * @example - * - * _.isEmpty(null); - * // => true - * - * _.isEmpty(true); - * // => true - * - * _.isEmpty(1); - * // => true - * - * _.isEmpty([1, 2, 3]); - * // => false - * - * _.isEmpty({ 'a': 1 }); - * // => false - */ - function isEmpty(value) { - if (value == null) { - return true; - } - if (isArrayLike(value) && - (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || - isBuffer(value) || isTypedArray(value) || isArguments(value))) { - return !value.length; - } - var tag = getTag(value); - if (tag == mapTag || tag == setTag) { - return !value.size; - } - if (isPrototype(value)) { - return !baseKeys(value).length; - } - for (var key in value) { - if (hasOwnProperty.call(value, key)) { - return false; - } - } - return true; - } - - /** - * Performs a deep comparison between two values to determine if they are - * equivalent. - * - * **Note:** This method supports comparing arrays, array buffers, booleans, - * date objects, error objects, maps, numbers, `Object` objects, regexes, - * sets, strings, symbols, and typed arrays. `Object` objects are compared - * by their own, not inherited, enumerable properties. Functions and DOM - * nodes are compared by strict equality, i.e. `===`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.isEqual(object, other); - * // => true - * - * object === other; - * // => false - */ - function isEqual(value, other) { - return baseIsEqual(value, other); - } - - /** - * This method is like `_.isEqual` except that it accepts `customizer` which - * is invoked to compare values. If `customizer` returns `undefined`, comparisons - * are handled by the method instead. The `customizer` is invoked with up to - * six arguments: (objValue, othValue [, index|key, object, other, stack]). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * function isGreeting(value) { - * return /^h(?:i|ello)$/.test(value); - * } - * - * function customizer(objValue, othValue) { - * if (isGreeting(objValue) && isGreeting(othValue)) { - * return true; - * } - * } - * - * var array = ['hello', 'goodbye']; - * var other = ['hi', 'goodbye']; - * - * _.isEqualWith(array, other, customizer); - * // => true - */ - function isEqualWith(value, other, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined$1; - var result = customizer ? customizer(value, other) : undefined$1; - return result === undefined$1 ? baseIsEqual(value, other, undefined$1, customizer) : !!result; - } - - /** - * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, - * `SyntaxError`, `TypeError`, or `URIError` object. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an error object, else `false`. - * @example - * - * _.isError(new Error); - * // => true - * - * _.isError(Error); - * // => false - */ - function isError(value) { - if (!isObjectLike(value)) { - return false; - } - var tag = baseGetTag(value); - return tag == errorTag || tag == domExcTag || - (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value)); - } - - /** - * Checks if `value` is a finite primitive number. - * - * **Note:** This method is based on - * [`Number.isFinite`](https://mdn.io/Number/isFinite). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. - * @example - * - * _.isFinite(3); - * // => true - * - * _.isFinite(Number.MIN_VALUE); - * // => true - * - * _.isFinite(Infinity); - * // => false - * - * _.isFinite('3'); - * // => false - */ - function isFinite(value) { - return typeof value == 'number' && nativeIsFinite(value); - } - - /** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ - function isFunction(value) { - if (!isObject(value)) { - return false; - } - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 9 which returns 'object' for typed arrays and other constructors. - var tag = baseGetTag(value); - return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; - } - - /** - * Checks if `value` is an integer. - * - * **Note:** This method is based on - * [`Number.isInteger`](https://mdn.io/Number/isInteger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an integer, else `false`. - * @example - * - * _.isInteger(3); - * // => true - * - * _.isInteger(Number.MIN_VALUE); - * // => false - * - * _.isInteger(Infinity); - * // => false - * - * _.isInteger('3'); - * // => false - */ - function isInteger(value) { - return typeof value == 'number' && value == toInteger(value); - } - - /** - * Checks if `value` is a valid array-like length. - * - * **Note:** This method is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * @example - * - * _.isLength(3); - * // => true - * - * _.isLength(Number.MIN_VALUE); - * // => false - * - * _.isLength(Infinity); - * // => false - * - * _.isLength('3'); - * // => false - */ - function isLength(value) { - return typeof value == 'number' && - value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; - } - - /** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ - function isObject(value) { - var type = typeof value; - return value != null && (type == 'object' || type == 'function'); - } - - /** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ - function isObjectLike(value) { - return value != null && typeof value == 'object'; - } - - /** - * Checks if `value` is classified as a `Map` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a map, else `false`. - * @example - * - * _.isMap(new Map); - * // => true - * - * _.isMap(new WeakMap); - * // => false - */ - var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; - - /** - * Performs a partial deep comparison between `object` and `source` to - * determine if `object` contains equivalent property values. - * - * **Note:** This method is equivalent to `_.matches` when `source` is - * partially applied. - * - * Partial comparisons will match empty array and empty object `source` - * values against any array or object value, respectively. See `_.isEqual` - * for a list of supported value comparisons. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * - * _.isMatch(object, { 'b': 2 }); - * // => true - * - * _.isMatch(object, { 'b': 1 }); - * // => false - */ - function isMatch(object, source) { - return object === source || baseIsMatch(object, source, getMatchData(source)); - } - - /** - * This method is like `_.isMatch` except that it accepts `customizer` which - * is invoked to compare values. If `customizer` returns `undefined`, comparisons - * are handled by the method instead. The `customizer` is invoked with five - * arguments: (objValue, srcValue, index|key, object, source). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - * @example - * - * function isGreeting(value) { - * return /^h(?:i|ello)$/.test(value); - * } - * - * function customizer(objValue, srcValue) { - * if (isGreeting(objValue) && isGreeting(srcValue)) { - * return true; - * } - * } - * - * var object = { 'greeting': 'hello' }; - * var source = { 'greeting': 'hi' }; - * - * _.isMatchWith(object, source, customizer); - * // => true - */ - function isMatchWith(object, source, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined$1; - return baseIsMatch(object, source, getMatchData(source), customizer); - } - - /** - * Checks if `value` is `NaN`. - * - * **Note:** This method is based on - * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as - * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for - * `undefined` and other non-number values. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - * @example - * - * _.isNaN(NaN); - * // => true - * - * _.isNaN(new Number(NaN)); - * // => true - * - * isNaN(undefined); - * // => true - * - * _.isNaN(undefined); - * // => false - */ - function isNaN(value) { - // An `NaN` primitive is the only value that is not equal to itself. - // Perform the `toStringTag` check first to avoid errors with some - // ActiveX objects in IE. - return isNumber(value) && value != +value; - } - - /** - * Checks if `value` is a pristine native function. - * - * **Note:** This method can't reliably detect native functions in the presence - * of the core-js package because core-js circumvents this kind of detection. - * Despite multiple requests, the core-js maintainer has made it clear: any - * attempt to fix the detection will be obstructed. As a result, we're left - * with little choice but to throw an error. Unfortunately, this also affects - * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill), - * which rely on core-js. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - * @example - * - * _.isNative(Array.prototype.push); - * // => true - * - * _.isNative(_); - * // => false - */ - function isNative(value) { - if (isMaskable(value)) { - throw new Error(CORE_ERROR_TEXT); - } - return baseIsNative(value); - } - - /** - * Checks if `value` is `null`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `null`, else `false`. - * @example - * - * _.isNull(null); - * // => true - * - * _.isNull(void 0); - * // => false - */ - function isNull(value) { - return value === null; - } - - /** - * Checks if `value` is `null` or `undefined`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is nullish, else `false`. - * @example - * - * _.isNil(null); - * // => true - * - * _.isNil(void 0); - * // => true - * - * _.isNil(NaN); - * // => false - */ - function isNil(value) { - return value == null; - } - - /** - * Checks if `value` is classified as a `Number` primitive or object. - * - * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are - * classified as numbers, use the `_.isFinite` method. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a number, else `false`. - * @example - * - * _.isNumber(3); - * // => true - * - * _.isNumber(Number.MIN_VALUE); - * // => true - * - * _.isNumber(Infinity); - * // => true - * - * _.isNumber('3'); - * // => false - */ - function isNumber(value) { - return typeof value == 'number' || - (isObjectLike(value) && baseGetTag(value) == numberTag); - } - - /** - * Checks if `value` is a plain object, that is, an object created by the - * `Object` constructor or one with a `[[Prototype]]` of `null`. - * - * @static - * @memberOf _ - * @since 0.8.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * _.isPlainObject(new Foo); - * // => false - * - * _.isPlainObject([1, 2, 3]); - * // => false - * - * _.isPlainObject({ 'x': 0, 'y': 0 }); - * // => true - * - * _.isPlainObject(Object.create(null)); - * // => true - */ - function isPlainObject(value) { - if (!isObjectLike(value) || baseGetTag(value) != objectTag) { - return false; - } - var proto = getPrototype(value); - if (proto === null) { - return true; - } - var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; - return typeof Ctor == 'function' && Ctor instanceof Ctor && - funcToString.call(Ctor) == objectCtorString; - } - - /** - * Checks if `value` is classified as a `RegExp` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. - * @example - * - * _.isRegExp(/abc/); - * // => true - * - * _.isRegExp('/abc/'); - * // => false - */ - var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; - - /** - * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754 - * double precision number which isn't the result of a rounded unsafe integer. - * - * **Note:** This method is based on - * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`. - * @example - * - * _.isSafeInteger(3); - * // => true - * - * _.isSafeInteger(Number.MIN_VALUE); - * // => false - * - * _.isSafeInteger(Infinity); - * // => false - * - * _.isSafeInteger('3'); - * // => false - */ - function isSafeInteger(value) { - return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER; - } - - /** - * Checks if `value` is classified as a `Set` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a set, else `false`. - * @example - * - * _.isSet(new Set); - * // => true - * - * _.isSet(new WeakSet); - * // => false - */ - var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; - - /** - * Checks if `value` is classified as a `String` primitive or object. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a string, else `false`. - * @example - * - * _.isString('abc'); - * // => true - * - * _.isString(1); - * // => false - */ - function isString(value) { - return typeof value == 'string' || - (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); - } - - /** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ - function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && baseGetTag(value) == symbolTag); - } - - /** - * Checks if `value` is classified as a typed array. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - * @example - * - * _.isTypedArray(new Uint8Array); - * // => true - * - * _.isTypedArray([]); - * // => false - */ - var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; - - /** - * Checks if `value` is `undefined`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. - * @example - * - * _.isUndefined(void 0); - * // => true - * - * _.isUndefined(null); - * // => false - */ - function isUndefined(value) { - return value === undefined$1; - } - - /** - * Checks if `value` is classified as a `WeakMap` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a weak map, else `false`. - * @example - * - * _.isWeakMap(new WeakMap); - * // => true - * - * _.isWeakMap(new Map); - * // => false - */ - function isWeakMap(value) { - return isObjectLike(value) && getTag(value) == weakMapTag; - } - - /** - * Checks if `value` is classified as a `WeakSet` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a weak set, else `false`. - * @example - * - * _.isWeakSet(new WeakSet); - * // => true - * - * _.isWeakSet(new Set); - * // => false - */ - function isWeakSet(value) { - return isObjectLike(value) && baseGetTag(value) == weakSetTag; - } - - /** - * Checks if `value` is less than `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than `other`, - * else `false`. - * @see _.gt - * @example - * - * _.lt(1, 3); - * // => true - * - * _.lt(3, 3); - * // => false - * - * _.lt(3, 1); - * // => false - */ - var lt = createRelationalOperation(baseLt); - - /** - * Checks if `value` is less than or equal to `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than or equal to - * `other`, else `false`. - * @see _.gte - * @example - * - * _.lte(1, 3); - * // => true - * - * _.lte(3, 3); - * // => true - * - * _.lte(3, 1); - * // => false - */ - var lte = createRelationalOperation(function(value, other) { - return value <= other; - }); - - /** - * Converts `value` to an array. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to convert. - * @returns {Array} Returns the converted array. - * @example - * - * _.toArray({ 'a': 1, 'b': 2 }); - * // => [1, 2] - * - * _.toArray('abc'); - * // => ['a', 'b', 'c'] - * - * _.toArray(1); - * // => [] - * - * _.toArray(null); - * // => [] - */ - function toArray(value) { - if (!value) { - return []; - } - if (isArrayLike(value)) { - return isString(value) ? stringToArray(value) : copyArray(value); - } - if (symIterator && value[symIterator]) { - return iteratorToArray(value[symIterator]()); - } - var tag = getTag(value), - func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values); - - return func(value); - } - - /** - * Converts `value` to a finite number. - * - * @static - * @memberOf _ - * @since 4.12.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted number. - * @example - * - * _.toFinite(3.2); - * // => 3.2 - * - * _.toFinite(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toFinite(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toFinite('3.2'); - * // => 3.2 - */ - function toFinite(value) { - if (!value) { - return value === 0 ? value : 0; - } - value = toNumber(value); - if (value === INFINITY || value === -INFINITY) { - var sign = (value < 0 ? -1 : 1); - return sign * MAX_INTEGER; - } - return value === value ? value : 0; - } - - /** - * Converts `value` to an integer. - * - * **Note:** This method is loosely based on - * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toInteger(3.2); - * // => 3 - * - * _.toInteger(Number.MIN_VALUE); - * // => 0 - * - * _.toInteger(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toInteger('3.2'); - * // => 3 - */ - function toInteger(value) { - var result = toFinite(value), - remainder = result % 1; - - return result === result ? (remainder ? result - remainder : result) : 0; - } - - /** - * Converts `value` to an integer suitable for use as the length of an - * array-like object. - * - * **Note:** This method is based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toLength(3.2); - * // => 3 - * - * _.toLength(Number.MIN_VALUE); - * // => 0 - * - * _.toLength(Infinity); - * // => 4294967295 - * - * _.toLength('3.2'); - * // => 3 - */ - function toLength(value) { - return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0; - } - - /** - * Converts `value` to a number. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to process. - * @returns {number} Returns the number. - * @example - * - * _.toNumber(3.2); - * // => 3.2 - * - * _.toNumber(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toNumber(Infinity); - * // => Infinity - * - * _.toNumber('3.2'); - * // => 3.2 - */ - function toNumber(value) { - if (typeof value == 'number') { - return value; - } - if (isSymbol(value)) { - return NAN; - } - if (isObject(value)) { - var other = typeof value.valueOf == 'function' ? value.valueOf() : value; - value = isObject(other) ? (other + '') : other; - } - if (typeof value != 'string') { - return value === 0 ? value : +value; - } - value = value.replace(reTrim, ''); - var isBinary = reIsBinary.test(value); - return (isBinary || reIsOctal.test(value)) - ? freeParseInt(value.slice(2), isBinary ? 2 : 8) - : (reIsBadHex.test(value) ? NAN : +value); - } - - /** - * Converts `value` to a plain object flattening inherited enumerable string - * keyed properties of `value` to own properties of the plain object. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {Object} Returns the converted plain object. - * @example - * - * function Foo() { - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.assign({ 'a': 1 }, new Foo); - * // => { 'a': 1, 'b': 2 } - * - * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); - * // => { 'a': 1, 'b': 2, 'c': 3 } - */ - function toPlainObject(value) { - return copyObject(value, keysIn(value)); - } - - /** - * Converts `value` to a safe integer. A safe integer can be compared and - * represented correctly. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toSafeInteger(3.2); - * // => 3 - * - * _.toSafeInteger(Number.MIN_VALUE); - * // => 0 - * - * _.toSafeInteger(Infinity); - * // => 9007199254740991 - * - * _.toSafeInteger('3.2'); - * // => 3 - */ - function toSafeInteger(value) { - return value - ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) - : (value === 0 ? value : 0); - } - - /** - * Converts `value` to a string. An empty string is returned for `null` - * and `undefined` values. The sign of `-0` is preserved. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - * @example - * - * _.toString(null); - * // => '' - * - * _.toString(-0); - * // => '-0' - * - * _.toString([1, 2, 3]); - * // => '1,2,3' - */ - function toString(value) { - return value == null ? '' : baseToString(value); - } - - /*------------------------------------------------------------------------*/ - - /** - * Assigns own enumerable string keyed properties of source objects to the - * destination object. Source objects are applied from left to right. - * Subsequent sources overwrite property assignments of previous sources. - * - * **Note:** This method mutates `object` and is loosely based on - * [`Object.assign`](https://mdn.io/Object/assign). - * - * @static - * @memberOf _ - * @since 0.10.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.assignIn - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * function Bar() { - * this.c = 3; - * } - * - * Foo.prototype.b = 2; - * Bar.prototype.d = 4; - * - * _.assign({ 'a': 0 }, new Foo, new Bar); - * // => { 'a': 1, 'c': 3 } - */ - var assign = createAssigner(function(object, source) { - if (isPrototype(source) || isArrayLike(source)) { - copyObject(source, keys(source), object); - return; - } - for (var key in source) { - if (hasOwnProperty.call(source, key)) { - assignValue(object, key, source[key]); - } - } - }); - - /** - * This method is like `_.assign` except that it iterates over own and - * inherited source properties. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias extend - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.assign - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * function Bar() { - * this.c = 3; - * } - * - * Foo.prototype.b = 2; - * Bar.prototype.d = 4; - * - * _.assignIn({ 'a': 0 }, new Foo, new Bar); - * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } - */ - var assignIn = createAssigner(function(object, source) { - copyObject(source, keysIn(source), object); - }); - - /** - * This method is like `_.assignIn` except that it accepts `customizer` - * which is invoked to produce the assigned values. If `customizer` returns - * `undefined`, assignment is handled by the method instead. The `customizer` - * is invoked with five arguments: (objValue, srcValue, key, object, source). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias extendWith - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @see _.assignWith - * @example - * - * function customizer(objValue, srcValue) { - * return _.isUndefined(objValue) ? srcValue : objValue; - * } - * - * var defaults = _.partialRight(_.assignInWith, customizer); - * - * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ - var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { - copyObject(source, keysIn(source), object, customizer); - }); - - /** - * This method is like `_.assign` except that it accepts `customizer` - * which is invoked to produce the assigned values. If `customizer` returns - * `undefined`, assignment is handled by the method instead. The `customizer` - * is invoked with five arguments: (objValue, srcValue, key, object, source). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @see _.assignInWith - * @example - * - * function customizer(objValue, srcValue) { - * return _.isUndefined(objValue) ? srcValue : objValue; - * } - * - * var defaults = _.partialRight(_.assignWith, customizer); - * - * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ - var assignWith = createAssigner(function(object, source, srcIndex, customizer) { - copyObject(source, keys(source), object, customizer); - }); - - /** - * Creates an array of values corresponding to `paths` of `object`. - * - * @static - * @memberOf _ - * @since 1.0.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {...(string|string[])} [paths] The property paths to pick. - * @returns {Array} Returns the picked values. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; - * - * _.at(object, ['a[0].b.c', 'a[1]']); - * // => [3, 4] - */ - var at = flatRest(baseAt); - - /** - * Creates an object that inherits from the `prototype` object. If a - * `properties` object is given, its own enumerable string keyed properties - * are assigned to the created object. - * - * @static - * @memberOf _ - * @since 2.3.0 - * @category Object - * @param {Object} prototype The object to inherit from. - * @param {Object} [properties] The properties to assign to the object. - * @returns {Object} Returns the new object. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * function Circle() { - * Shape.call(this); - * } - * - * Circle.prototype = _.create(Shape.prototype, { - * 'constructor': Circle - * }); - * - * var circle = new Circle; - * circle instanceof Circle; - * // => true - * - * circle instanceof Shape; - * // => true - */ - function create(prototype, properties) { - var result = baseCreate(prototype); - return properties == null ? result : baseAssign(result, properties); - } - - /** - * Assigns own and inherited enumerable string keyed properties of source - * objects to the destination object for all destination properties that - * resolve to `undefined`. Source objects are applied from left to right. - * Once a property is set, additional values of the same property are ignored. - * - * **Note:** This method mutates `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.defaultsDeep - * @example - * - * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ - var defaults = baseRest(function(object, sources) { - object = Object(object); - - var index = -1; - var length = sources.length; - var guard = length > 2 ? sources[2] : undefined$1; - - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - length = 1; - } - - while (++index < length) { - var source = sources[index]; - var props = keysIn(source); - var propsIndex = -1; - var propsLength = props.length; - - while (++propsIndex < propsLength) { - var key = props[propsIndex]; - var value = object[key]; - - if (value === undefined$1 || - (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) { - object[key] = source[key]; - } - } - } - - return object; - }); - - /** - * This method is like `_.defaults` except that it recursively assigns - * default properties. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 3.10.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.defaults - * @example - * - * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } }); - * // => { 'a': { 'b': 2, 'c': 3 } } - */ - var defaultsDeep = baseRest(function(args) { - args.push(undefined$1, customDefaultsMerge); - return apply(mergeWith, undefined$1, args); - }); - - /** - * This method is like `_.find` except that it returns the key of the first - * element `predicate` returns truthy for instead of the element itself. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Object - * @param {Object} object The object to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {string|undefined} Returns the key of the matched element, - * else `undefined`. - * @example - * - * var users = { - * 'barney': { 'age': 36, 'active': true }, - * 'fred': { 'age': 40, 'active': false }, - * 'pebbles': { 'age': 1, 'active': true } - * }; - * - * _.findKey(users, function(o) { return o.age < 40; }); - * // => 'barney' (iteration order is not guaranteed) - * - * // The `_.matches` iteratee shorthand. - * _.findKey(users, { 'age': 1, 'active': true }); - * // => 'pebbles' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findKey(users, ['active', false]); - * // => 'fred' - * - * // The `_.property` iteratee shorthand. - * _.findKey(users, 'active'); - * // => 'barney' - */ - function findKey(object, predicate) { - return baseFindKey(object, getIteratee(predicate, 3), baseForOwn); - } - - /** - * This method is like `_.findKey` except that it iterates over elements of - * a collection in the opposite order. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Object - * @param {Object} object The object to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {string|undefined} Returns the key of the matched element, - * else `undefined`. - * @example - * - * var users = { - * 'barney': { 'age': 36, 'active': true }, - * 'fred': { 'age': 40, 'active': false }, - * 'pebbles': { 'age': 1, 'active': true } - * }; - * - * _.findLastKey(users, function(o) { return o.age < 40; }); - * // => returns 'pebbles' assuming `_.findKey` returns 'barney' - * - * // The `_.matches` iteratee shorthand. - * _.findLastKey(users, { 'age': 36, 'active': true }); - * // => 'barney' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findLastKey(users, ['active', false]); - * // => 'fred' - * - * // The `_.property` iteratee shorthand. - * _.findLastKey(users, 'active'); - * // => 'pebbles' - */ - function findLastKey(object, predicate) { - return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight); - } - - /** - * Iterates over own and inherited enumerable string keyed properties of an - * object and invokes `iteratee` for each property. The iteratee is invoked - * with three arguments: (value, key, object). Iteratee functions may exit - * iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @since 0.3.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forInRight - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forIn(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). - */ - function forIn(object, iteratee) { - return object == null - ? object - : baseFor(object, getIteratee(iteratee, 3), keysIn); - } - - /** - * This method is like `_.forIn` except that it iterates over properties of - * `object` in the opposite order. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forIn - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forInRight(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'. - */ - function forInRight(object, iteratee) { - return object == null - ? object - : baseForRight(object, getIteratee(iteratee, 3), keysIn); - } - - /** - * Iterates over own enumerable string keyed properties of an object and - * invokes `iteratee` for each property. The iteratee is invoked with three - * arguments: (value, key, object). Iteratee functions may exit iteration - * early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @since 0.3.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forOwnRight - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forOwn(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a' then 'b' (iteration order is not guaranteed). - */ - function forOwn(object, iteratee) { - return object && baseForOwn(object, getIteratee(iteratee, 3)); - } - - /** - * This method is like `_.forOwn` except that it iterates over properties of - * `object` in the opposite order. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forOwn - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forOwnRight(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'. - */ - function forOwnRight(object, iteratee) { - return object && baseForOwnRight(object, getIteratee(iteratee, 3)); - } - - /** - * Creates an array of function property names from own enumerable properties - * of `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to inspect. - * @returns {Array} Returns the function names. - * @see _.functionsIn - * @example - * - * function Foo() { - * this.a = _.constant('a'); - * this.b = _.constant('b'); - * } - * - * Foo.prototype.c = _.constant('c'); - * - * _.functions(new Foo); - * // => ['a', 'b'] - */ - function functions(object) { - return object == null ? [] : baseFunctions(object, keys(object)); - } - - /** - * Creates an array of function property names from own and inherited - * enumerable properties of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to inspect. - * @returns {Array} Returns the function names. - * @see _.functions - * @example - * - * function Foo() { - * this.a = _.constant('a'); - * this.b = _.constant('b'); - * } - * - * Foo.prototype.c = _.constant('c'); - * - * _.functionsIn(new Foo); - * // => ['a', 'b', 'c'] - */ - function functionsIn(object) { - return object == null ? [] : baseFunctions(object, keysIn(object)); - } - - /** - * Gets the value at `path` of `object`. If the resolved value is - * `undefined`, the `defaultValue` is returned in its place. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.get(object, 'a[0].b.c'); - * // => 3 - * - * _.get(object, ['a', '0', 'b', 'c']); - * // => 3 - * - * _.get(object, 'a.b.c', 'default'); - * // => 'default' - */ - function get(object, path, defaultValue) { - var result = object == null ? undefined$1 : baseGet(object, path); - return result === undefined$1 ? defaultValue : result; - } - - /** - * Checks if `path` is a direct property of `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = { 'a': { 'b': 2 } }; - * var other = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.has(object, 'a'); - * // => true - * - * _.has(object, 'a.b'); - * // => true - * - * _.has(object, ['a', 'b']); - * // => true - * - * _.has(other, 'a'); - * // => false - */ - function has(object, path) { - return object != null && hasPath(object, path, baseHas); - } - - /** - * Checks if `path` is a direct or inherited property of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.hasIn(object, 'a'); - * // => true - * - * _.hasIn(object, 'a.b'); - * // => true - * - * _.hasIn(object, ['a', 'b']); - * // => true - * - * _.hasIn(object, 'b'); - * // => false - */ - function hasIn(object, path) { - return object != null && hasPath(object, path, baseHasIn); - } - - /** - * Creates an object composed of the inverted keys and values of `object`. - * If `object` contains duplicate values, subsequent values overwrite - * property assignments of previous values. - * - * @static - * @memberOf _ - * @since 0.7.0 - * @category Object - * @param {Object} object The object to invert. - * @returns {Object} Returns the new inverted object. - * @example - * - * var object = { 'a': 1, 'b': 2, 'c': 1 }; - * - * _.invert(object); - * // => { '1': 'c', '2': 'b' } - */ - var invert = createInverter(function(result, value, key) { - if (value != null && - typeof value.toString != 'function') { - value = nativeObjectToString.call(value); - } - - result[value] = key; - }, constant(identity)); - - /** - * This method is like `_.invert` except that the inverted object is generated - * from the results of running each element of `object` thru `iteratee`. The - * corresponding inverted value of each inverted key is an array of keys - * responsible for generating the inverted value. The iteratee is invoked - * with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.1.0 - * @category Object - * @param {Object} object The object to invert. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Object} Returns the new inverted object. - * @example - * - * var object = { 'a': 1, 'b': 2, 'c': 1 }; - * - * _.invertBy(object); - * // => { '1': ['a', 'c'], '2': ['b'] } - * - * _.invertBy(object, function(value) { - * return 'group' + value; - * }); - * // => { 'group1': ['a', 'c'], 'group2': ['b'] } - */ - var invertBy = createInverter(function(result, value, key) { - if (value != null && - typeof value.toString != 'function') { - value = nativeObjectToString.call(value); - } - - if (hasOwnProperty.call(result, value)) { - result[value].push(key); - } else { - result[value] = [key]; - } - }, getIteratee); - - /** - * Invokes the method at `path` of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the method to invoke. - * @param {...*} [args] The arguments to invoke the method with. - * @returns {*} Returns the result of the invoked method. - * @example - * - * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] }; - * - * _.invoke(object, 'a[0].b.c.slice', 1, 3); - * // => [2, 3] - */ - var invoke = baseRest(baseInvoke); - - /** - * Creates an array of the own enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * for more details. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keys(new Foo); - * // => ['a', 'b'] (iteration order is not guaranteed) - * - * _.keys('hi'); - * // => ['0', '1'] - */ - function keys(object) { - return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); - } - - /** - * Creates an array of the own and inherited enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keysIn(new Foo); - * // => ['a', 'b', 'c'] (iteration order is not guaranteed) - */ - function keysIn(object) { - return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); - } - - /** - * The opposite of `_.mapValues`; this method creates an object with the - * same values as `object` and keys generated by running each own enumerable - * string keyed property of `object` thru `iteratee`. The iteratee is invoked - * with three arguments: (value, key, object). - * - * @static - * @memberOf _ - * @since 3.8.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns the new mapped object. - * @see _.mapValues - * @example - * - * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { - * return key + value; - * }); - * // => { 'a1': 1, 'b2': 2 } - */ - function mapKeys(object, iteratee) { - var result = {}; - iteratee = getIteratee(iteratee, 3); - - baseForOwn(object, function(value, key, object) { - baseAssignValue(result, iteratee(value, key, object), value); - }); - return result; - } - - /** - * Creates an object with the same keys as `object` and values generated - * by running each own enumerable string keyed property of `object` thru - * `iteratee`. The iteratee is invoked with three arguments: - * (value, key, object). - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns the new mapped object. - * @see _.mapKeys - * @example - * - * var users = { - * 'fred': { 'user': 'fred', 'age': 40 }, - * 'pebbles': { 'user': 'pebbles', 'age': 1 } - * }; - * - * _.mapValues(users, function(o) { return o.age; }); - * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) - * - * // The `_.property` iteratee shorthand. - * _.mapValues(users, 'age'); - * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) - */ - function mapValues(object, iteratee) { - var result = {}; - iteratee = getIteratee(iteratee, 3); - - baseForOwn(object, function(value, key, object) { - baseAssignValue(result, key, iteratee(value, key, object)); - }); - return result; - } - - /** - * This method is like `_.assign` except that it recursively merges own and - * inherited enumerable string keyed properties of source objects into the - * destination object. Source properties that resolve to `undefined` are - * skipped if a destination value exists. Array and plain object properties - * are merged recursively. Other objects and value types are overridden by - * assignment. Source objects are applied from left to right. Subsequent - * sources overwrite property assignments of previous sources. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 0.5.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @example - * - * var object = { - * 'a': [{ 'b': 2 }, { 'd': 4 }] - * }; - * - * var other = { - * 'a': [{ 'c': 3 }, { 'e': 5 }] - * }; - * - * _.merge(object, other); - * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } - */ - var merge = createAssigner(function(object, source, srcIndex) { - baseMerge(object, source, srcIndex); - }); - - /** - * This method is like `_.merge` except that it accepts `customizer` which - * is invoked to produce the merged values of the destination and source - * properties. If `customizer` returns `undefined`, merging is handled by the - * method instead. The `customizer` is invoked with six arguments: - * (objValue, srcValue, key, object, source, stack). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} customizer The function to customize assigned values. - * @returns {Object} Returns `object`. - * @example - * - * function customizer(objValue, srcValue) { - * if (_.isArray(objValue)) { - * return objValue.concat(srcValue); - * } - * } - * - * var object = { 'a': [1], 'b': [2] }; - * var other = { 'a': [3], 'b': [4] }; - * - * _.mergeWith(object, other, customizer); - * // => { 'a': [1, 3], 'b': [2, 4] } - */ - var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { - baseMerge(object, source, srcIndex, customizer); - }); - - /** - * The opposite of `_.pick`; this method creates an object composed of the - * own and inherited enumerable property paths of `object` that are not omitted. - * - * **Note:** This method is considerably slower than `_.pick`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The source object. - * @param {...(string|string[])} [paths] The property paths to omit. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.omit(object, ['a', 'c']); - * // => { 'b': '2' } - */ - var omit = flatRest(function(object, paths) { - var result = {}; - if (object == null) { - return result; - } - var isDeep = false; - paths = arrayMap(paths, function(path) { - path = castPath(path, object); - isDeep || (isDeep = path.length > 1); - return path; - }); - copyObject(object, getAllKeysIn(object), result); - if (isDeep) { - result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone); - } - var length = paths.length; - while (length--) { - baseUnset(result, paths[length]); - } - return result; - }); - - /** - * The opposite of `_.pickBy`; this method creates an object composed of - * the own and inherited enumerable string keyed properties of `object` that - * `predicate` doesn't return truthy for. The predicate is invoked with two - * arguments: (value, key). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The source object. - * @param {Function} [predicate=_.identity] The function invoked per property. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.omitBy(object, _.isNumber); - * // => { 'b': '2' } - */ - function omitBy(object, predicate) { - return pickBy(object, negate(getIteratee(predicate))); - } - - /** - * Creates an object composed of the picked `object` properties. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The source object. - * @param {...(string|string[])} [paths] The property paths to pick. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.pick(object, ['a', 'c']); - * // => { 'a': 1, 'c': 3 } - */ - var pick = flatRest(function(object, paths) { - return object == null ? {} : basePick(object, paths); - }); - - /** - * Creates an object composed of the `object` properties `predicate` returns - * truthy for. The predicate is invoked with two arguments: (value, key). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The source object. - * @param {Function} [predicate=_.identity] The function invoked per property. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.pickBy(object, _.isNumber); - * // => { 'a': 1, 'c': 3 } - */ - function pickBy(object, predicate) { - if (object == null) { - return {}; - } - var props = arrayMap(getAllKeysIn(object), function(prop) { - return [prop]; - }); - predicate = getIteratee(predicate); - return basePickBy(object, props, function(value, path) { - return predicate(value, path[0]); - }); - } - - /** - * This method is like `_.get` except that if the resolved value is a - * function it's invoked with the `this` binding of its parent object and - * its result is returned. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to resolve. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] }; - * - * _.result(object, 'a[0].b.c1'); - * // => 3 - * - * _.result(object, 'a[0].b.c2'); - * // => 4 - * - * _.result(object, 'a[0].b.c3', 'default'); - * // => 'default' - * - * _.result(object, 'a[0].b.c3', _.constant('default')); - * // => 'default' - */ - function result(object, path, defaultValue) { - path = castPath(path, object); - - var index = -1, - length = path.length; - - // Ensure the loop is entered when path is empty. - if (!length) { - length = 1; - object = undefined$1; - } - while (++index < length) { - var value = object == null ? undefined$1 : object[toKey(path[index])]; - if (value === undefined$1) { - index = length; - value = defaultValue; - } - object = isFunction(value) ? value.call(object) : value; - } - return object; - } - - /** - * Sets the value at `path` of `object`. If a portion of `path` doesn't exist, - * it's created. Arrays are created for missing index properties while objects - * are created for all other missing properties. Use `_.setWith` to customize - * `path` creation. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @returns {Object} Returns `object`. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.set(object, 'a[0].b.c', 4); - * console.log(object.a[0].b.c); - * // => 4 - * - * _.set(object, ['x', '0', 'y', 'z'], 5); - * console.log(object.x[0].y.z); - * // => 5 - */ - function set(object, path, value) { - return object == null ? object : baseSet(object, path, value); - } - - /** - * This method is like `_.set` except that it accepts `customizer` which is - * invoked to produce the objects of `path`. If `customizer` returns `undefined` - * path creation is handled by the method instead. The `customizer` is invoked - * with three arguments: (nsValue, key, nsObject). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @example - * - * var object = {}; - * - * _.setWith(object, '[0][1]', 'a', Object); - * // => { '0': { '1': 'a' } } - */ - function setWith(object, path, value, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined$1; - return object == null ? object : baseSet(object, path, value, customizer); - } - - /** - * Creates an array of own enumerable string keyed-value pairs for `object` - * which can be consumed by `_.fromPairs`. If `object` is a map or set, its - * entries are returned. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias entries - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the key-value pairs. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.toPairs(new Foo); - * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed) - */ - var toPairs = createToPairs(keys); - - /** - * Creates an array of own and inherited enumerable string keyed-value pairs - * for `object` which can be consumed by `_.fromPairs`. If `object` is a map - * or set, its entries are returned. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias entriesIn - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the key-value pairs. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.toPairsIn(new Foo); - * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed) - */ - var toPairsIn = createToPairs(keysIn); - - /** - * An alternative to `_.reduce`; this method transforms `object` to a new - * `accumulator` object which is the result of running each of its own - * enumerable string keyed properties thru `iteratee`, with each invocation - * potentially mutating the `accumulator` object. If `accumulator` is not - * provided, a new object with the same `[[Prototype]]` will be used. The - * iteratee is invoked with four arguments: (accumulator, value, key, object). - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @since 1.3.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The custom accumulator value. - * @returns {*} Returns the accumulated value. - * @example - * - * _.transform([2, 3, 4], function(result, n) { - * result.push(n *= n); - * return n % 2 == 0; - * }, []); - * // => [4, 9] - * - * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { - * (result[value] || (result[value] = [])).push(key); - * }, {}); - * // => { '1': ['a', 'c'], '2': ['b'] } - */ - function transform(object, iteratee, accumulator) { - var isArr = isArray(object), - isArrLike = isArr || isBuffer(object) || isTypedArray(object); - - iteratee = getIteratee(iteratee, 4); - if (accumulator == null) { - var Ctor = object && object.constructor; - if (isArrLike) { - accumulator = isArr ? new Ctor : []; - } - else if (isObject(object)) { - accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; - } - else { - accumulator = {}; - } - } - (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) { - return iteratee(accumulator, value, index, object); - }); - return accumulator; - } - - /** - * Removes the property at `path` of `object`. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to unset. - * @returns {boolean} Returns `true` if the property is deleted, else `false`. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 7 } }] }; - * _.unset(object, 'a[0].b.c'); - * // => true - * - * console.log(object); - * // => { 'a': [{ 'b': {} }] }; - * - * _.unset(object, ['a', '0', 'b', 'c']); - * // => true - * - * console.log(object); - * // => { 'a': [{ 'b': {} }] }; - */ - function unset(object, path) { - return object == null ? true : baseUnset(object, path); - } - - /** - * This method is like `_.set` except that accepts `updater` to produce the - * value to set. Use `_.updateWith` to customize `path` creation. The `updater` - * is invoked with one argument: (value). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.6.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {Function} updater The function to produce the updated value. - * @returns {Object} Returns `object`. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.update(object, 'a[0].b.c', function(n) { return n * n; }); - * console.log(object.a[0].b.c); - * // => 9 - * - * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; }); - * console.log(object.x[0].y.z); - * // => 0 - */ - function update(object, path, updater) { - return object == null ? object : baseUpdate(object, path, castFunction(updater)); - } - - /** - * This method is like `_.update` except that it accepts `customizer` which is - * invoked to produce the objects of `path`. If `customizer` returns `undefined` - * path creation is handled by the method instead. The `customizer` is invoked - * with three arguments: (nsValue, key, nsObject). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.6.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {Function} updater The function to produce the updated value. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @example - * - * var object = {}; - * - * _.updateWith(object, '[0][1]', _.constant('a'), Object); - * // => { '0': { '1': 'a' } } - */ - function updateWith(object, path, updater, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined$1; - return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer); - } - - /** - * Creates an array of the own enumerable string keyed property values of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property values. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.values(new Foo); - * // => [1, 2] (iteration order is not guaranteed) - * - * _.values('hi'); - * // => ['h', 'i'] - */ - function values(object) { - return object == null ? [] : baseValues(object, keys(object)); - } - - /** - * Creates an array of the own and inherited enumerable string keyed property - * values of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property values. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.valuesIn(new Foo); - * // => [1, 2, 3] (iteration order is not guaranteed) - */ - function valuesIn(object) { - return object == null ? [] : baseValues(object, keysIn(object)); - } - - /*------------------------------------------------------------------------*/ - - /** - * Clamps `number` within the inclusive `lower` and `upper` bounds. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Number - * @param {number} number The number to clamp. - * @param {number} [lower] The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the clamped number. - * @example - * - * _.clamp(-10, -5, 5); - * // => -5 - * - * _.clamp(10, -5, 5); - * // => 5 - */ - function clamp(number, lower, upper) { - if (upper === undefined$1) { - upper = lower; - lower = undefined$1; - } - if (upper !== undefined$1) { - upper = toNumber(upper); - upper = upper === upper ? upper : 0; - } - if (lower !== undefined$1) { - lower = toNumber(lower); - lower = lower === lower ? lower : 0; - } - return baseClamp(toNumber(number), lower, upper); - } - - /** - * Checks if `n` is between `start` and up to, but not including, `end`. If - * `end` is not specified, it's set to `start` with `start` then set to `0`. - * If `start` is greater than `end` the params are swapped to support - * negative ranges. - * - * @static - * @memberOf _ - * @since 3.3.0 - * @category Number - * @param {number} number The number to check. - * @param {number} [start=0] The start of the range. - * @param {number} end The end of the range. - * @returns {boolean} Returns `true` if `number` is in the range, else `false`. - * @see _.range, _.rangeRight - * @example - * - * _.inRange(3, 2, 4); - * // => true - * - * _.inRange(4, 8); - * // => true - * - * _.inRange(4, 2); - * // => false - * - * _.inRange(2, 2); - * // => false - * - * _.inRange(1.2, 2); - * // => true - * - * _.inRange(5.2, 4); - * // => false - * - * _.inRange(-3, -2, -6); - * // => true - */ - function inRange(number, start, end) { - start = toFinite(start); - if (end === undefined$1) { - end = start; - start = 0; - } else { - end = toFinite(end); - } - number = toNumber(number); - return baseInRange(number, start, end); - } - - /** - * Produces a random number between the inclusive `lower` and `upper` bounds. - * If only one argument is provided a number between `0` and the given number - * is returned. If `floating` is `true`, or either `lower` or `upper` are - * floats, a floating-point number is returned instead of an integer. - * - * **Note:** JavaScript follows the IEEE-754 standard for resolving - * floating-point values which can produce unexpected results. - * - * @static - * @memberOf _ - * @since 0.7.0 - * @category Number - * @param {number} [lower=0] The lower bound. - * @param {number} [upper=1] The upper bound. - * @param {boolean} [floating] Specify returning a floating-point number. - * @returns {number} Returns the random number. - * @example - * - * _.random(0, 5); - * // => an integer between 0 and 5 - * - * _.random(5); - * // => also an integer between 0 and 5 - * - * _.random(5, true); - * // => a floating-point number between 0 and 5 - * - * _.random(1.2, 5.2); - * // => a floating-point number between 1.2 and 5.2 - */ - function random(lower, upper, floating) { - if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) { - upper = floating = undefined$1; - } - if (floating === undefined$1) { - if (typeof upper == 'boolean') { - floating = upper; - upper = undefined$1; - } - else if (typeof lower == 'boolean') { - floating = lower; - lower = undefined$1; - } - } - if (lower === undefined$1 && upper === undefined$1) { - lower = 0; - upper = 1; - } - else { - lower = toFinite(lower); - if (upper === undefined$1) { - upper = lower; - lower = 0; - } else { - upper = toFinite(upper); - } - } - if (lower > upper) { - var temp = lower; - lower = upper; - upper = temp; - } - if (floating || lower % 1 || upper % 1) { - var rand = nativeRandom(); - return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper); - } - return baseRandom(lower, upper); - } - - /*------------------------------------------------------------------------*/ - - /** - * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the camel cased string. - * @example - * - * _.camelCase('Foo Bar'); - * // => 'fooBar' - * - * _.camelCase('--foo-bar--'); - * // => 'fooBar' - * - * _.camelCase('__FOO_BAR__'); - * // => 'fooBar' - */ - var camelCase = createCompounder(function(result, word, index) { - word = word.toLowerCase(); - return result + (index ? capitalize(word) : word); - }); - - /** - * Converts the first character of `string` to upper case and the remaining - * to lower case. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to capitalize. - * @returns {string} Returns the capitalized string. - * @example - * - * _.capitalize('FRED'); - * // => 'Fred' - */ - function capitalize(string) { - return upperFirst(toString(string).toLowerCase()); - } - - /** - * Deburrs `string` by converting - * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) - * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A) - * letters to basic Latin letters and removing - * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to deburr. - * @returns {string} Returns the deburred string. - * @example - * - * _.deburr('déjà vu'); - * // => 'deja vu' - */ - function deburr(string) { - string = toString(string); - return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); - } - - /** - * Checks if `string` ends with the given target string. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to inspect. - * @param {string} [target] The string to search for. - * @param {number} [position=string.length] The position to search up to. - * @returns {boolean} Returns `true` if `string` ends with `target`, - * else `false`. - * @example - * - * _.endsWith('abc', 'c'); - * // => true - * - * _.endsWith('abc', 'b'); - * // => false - * - * _.endsWith('abc', 'b', 2); - * // => true - */ - function endsWith(string, target, position) { - string = toString(string); - target = baseToString(target); - - var length = string.length; - position = position === undefined$1 - ? length - : baseClamp(toInteger(position), 0, length); - - var end = position; - position -= target.length; - return position >= 0 && string.slice(position, end) == target; - } - - /** - * Converts the characters "&", "<", ">", '"', and "'" in `string` to their - * corresponding HTML entities. - * - * **Note:** No other characters are escaped. To escape additional - * characters use a third-party library like [_he_](https://mths.be/he). - * - * Though the ">" character is escaped for symmetry, characters like - * ">" and "/" don't need escaping in HTML and have no special meaning - * unless they're part of a tag or unquoted attribute value. See - * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) - * (under "semi-related fun fact") for more details. - * - * When working with HTML you should always - * [quote attribute values](http://wonko.com/post/html-escaping) to reduce - * XSS vectors. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escape('fred, barney, & pebbles'); - * // => 'fred, barney, & pebbles' - */ - function escape(string) { - string = toString(string); - return (string && reHasUnescapedHtml.test(string)) - ? string.replace(reUnescapedHtml, escapeHtmlChar) - : string; - } - - /** - * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", - * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escapeRegExp('[lodash](https://lodash.com/)'); - * // => '\[lodash\]\(https://lodash\.com/\)' - */ - function escapeRegExp(string) { - string = toString(string); - return (string && reHasRegExpChar.test(string)) - ? string.replace(reRegExpChar, '\\$&') - : string; - } - - /** - * Converts `string` to - * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the kebab cased string. - * @example - * - * _.kebabCase('Foo Bar'); - * // => 'foo-bar' - * - * _.kebabCase('fooBar'); - * // => 'foo-bar' - * - * _.kebabCase('__FOO_BAR__'); - * // => 'foo-bar' - */ - var kebabCase = createCompounder(function(result, word, index) { - return result + (index ? '-' : '') + word.toLowerCase(); - }); - - /** - * Converts `string`, as space separated words, to lower case. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the lower cased string. - * @example - * - * _.lowerCase('--Foo-Bar--'); - * // => 'foo bar' - * - * _.lowerCase('fooBar'); - * // => 'foo bar' - * - * _.lowerCase('__FOO_BAR__'); - * // => 'foo bar' - */ - var lowerCase = createCompounder(function(result, word, index) { - return result + (index ? ' ' : '') + word.toLowerCase(); - }); - - /** - * Converts the first character of `string` to lower case. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the converted string. - * @example - * - * _.lowerFirst('Fred'); - * // => 'fred' - * - * _.lowerFirst('FRED'); - * // => 'fRED' - */ - var lowerFirst = createCaseFirst('toLowerCase'); - - /** - * Pads `string` on the left and right sides if it's shorter than `length`. - * Padding characters are truncated if they can't be evenly divided by `length`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to pad. - * @param {number} [length=0] The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padded string. - * @example - * - * _.pad('abc', 8); - * // => ' abc ' - * - * _.pad('abc', 8, '_-'); - * // => '_-abc_-_' - * - * _.pad('abc', 3); - * // => 'abc' - */ - function pad(string, length, chars) { - string = toString(string); - length = toInteger(length); - - var strLength = length ? stringSize(string) : 0; - if (!length || strLength >= length) { - return string; - } - var mid = (length - strLength) / 2; - return ( - createPadding(nativeFloor(mid), chars) + - string + - createPadding(nativeCeil(mid), chars) - ); - } - - /** - * Pads `string` on the right side if it's shorter than `length`. Padding - * characters are truncated if they exceed `length`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to pad. - * @param {number} [length=0] The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padded string. - * @example - * - * _.padEnd('abc', 6); - * // => 'abc ' - * - * _.padEnd('abc', 6, '_-'); - * // => 'abc_-_' - * - * _.padEnd('abc', 3); - * // => 'abc' - */ - function padEnd(string, length, chars) { - string = toString(string); - length = toInteger(length); - - var strLength = length ? stringSize(string) : 0; - return (length && strLength < length) - ? (string + createPadding(length - strLength, chars)) - : string; - } - - /** - * Pads `string` on the left side if it's shorter than `length`. Padding - * characters are truncated if they exceed `length`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to pad. - * @param {number} [length=0] The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padded string. - * @example - * - * _.padStart('abc', 6); - * // => ' abc' - * - * _.padStart('abc', 6, '_-'); - * // => '_-_abc' - * - * _.padStart('abc', 3); - * // => 'abc' - */ - function padStart(string, length, chars) { - string = toString(string); - length = toInteger(length); - - var strLength = length ? stringSize(string) : 0; - return (length && strLength < length) - ? (createPadding(length - strLength, chars) + string) - : string; - } - - /** - * Converts `string` to an integer of the specified radix. If `radix` is - * `undefined` or `0`, a `radix` of `10` is used unless `value` is a - * hexadecimal, in which case a `radix` of `16` is used. - * - * **Note:** This method aligns with the - * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category String - * @param {string} string The string to convert. - * @param {number} [radix=10] The radix to interpret `value` by. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {number} Returns the converted integer. - * @example - * - * _.parseInt('08'); - * // => 8 - * - * _.map(['6', '08', '10'], _.parseInt); - * // => [6, 8, 10] - */ - function parseInt(string, radix, guard) { - if (guard || radix == null) { - radix = 0; - } else if (radix) { - radix = +radix; - } - return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0); - } - - /** - * Repeats the given string `n` times. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to repeat. - * @param {number} [n=1] The number of times to repeat the string. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {string} Returns the repeated string. - * @example - * - * _.repeat('*', 3); - * // => '***' - * - * _.repeat('abc', 2); - * // => 'abcabc' - * - * _.repeat('abc', 0); - * // => '' - */ - function repeat(string, n, guard) { - if ((guard ? isIterateeCall(string, n, guard) : n === undefined$1)) { - n = 1; - } else { - n = toInteger(n); - } - return baseRepeat(toString(string), n); - } - - /** - * Replaces matches for `pattern` in `string` with `replacement`. - * - * **Note:** This method is based on - * [`String#replace`](https://mdn.io/String/replace). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to modify. - * @param {RegExp|string} pattern The pattern to replace. - * @param {Function|string} replacement The match replacement. - * @returns {string} Returns the modified string. - * @example - * - * _.replace('Hi Fred', 'Fred', 'Barney'); - * // => 'Hi Barney' - */ - function replace() { - var args = arguments, - string = toString(args[0]); - - return args.length < 3 ? string : string.replace(args[1], args[2]); - } - - /** - * Converts `string` to - * [snake case](https://en.wikipedia.org/wiki/Snake_case). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the snake cased string. - * @example - * - * _.snakeCase('Foo Bar'); - * // => 'foo_bar' - * - * _.snakeCase('fooBar'); - * // => 'foo_bar' - * - * _.snakeCase('--FOO-BAR--'); - * // => 'foo_bar' - */ - var snakeCase = createCompounder(function(result, word, index) { - return result + (index ? '_' : '') + word.toLowerCase(); - }); - - /** - * Splits `string` by `separator`. - * - * **Note:** This method is based on - * [`String#split`](https://mdn.io/String/split). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to split. - * @param {RegExp|string} separator The separator pattern to split by. - * @param {number} [limit] The length to truncate results to. - * @returns {Array} Returns the string segments. - * @example - * - * _.split('a-b-c', '-', 2); - * // => ['a', 'b'] - */ - function split(string, separator, limit) { - if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) { - separator = limit = undefined$1; - } - limit = limit === undefined$1 ? MAX_ARRAY_LENGTH : limit >>> 0; - if (!limit) { - return []; - } - string = toString(string); - if (string && ( - typeof separator == 'string' || - (separator != null && !isRegExp(separator)) - )) { - separator = baseToString(separator); - if (!separator && hasUnicode(string)) { - return castSlice(stringToArray(string), 0, limit); - } - } - return string.split(separator, limit); - } - - /** - * Converts `string` to - * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage). - * - * @static - * @memberOf _ - * @since 3.1.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the start cased string. - * @example - * - * _.startCase('--foo-bar--'); - * // => 'Foo Bar' - * - * _.startCase('fooBar'); - * // => 'Foo Bar' - * - * _.startCase('__FOO_BAR__'); - * // => 'FOO BAR' - */ - var startCase = createCompounder(function(result, word, index) { - return result + (index ? ' ' : '') + upperFirst(word); - }); - - /** - * Checks if `string` starts with the given target string. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to inspect. - * @param {string} [target] The string to search for. - * @param {number} [position=0] The position to search from. - * @returns {boolean} Returns `true` if `string` starts with `target`, - * else `false`. - * @example - * - * _.startsWith('abc', 'a'); - * // => true - * - * _.startsWith('abc', 'b'); - * // => false - * - * _.startsWith('abc', 'b', 1); - * // => true - */ - function startsWith(string, target, position) { - string = toString(string); - position = position == null - ? 0 - : baseClamp(toInteger(position), 0, string.length); - - target = baseToString(target); - return string.slice(position, position + target.length) == target; - } - - /** - * Creates a compiled template function that can interpolate data properties - * in "interpolate" delimiters, HTML-escape interpolated data properties in - * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data - * properties may be accessed as free variables in the template. If a setting - * object is given, it takes precedence over `_.templateSettings` values. - * - * **Note:** In the development build `_.template` utilizes - * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) - * for easier debugging. - * - * For more information on precompiling templates see - * [lodash's custom builds documentation](https://lodash.com/custom-builds). - * - * For more information on Chrome extension sandboxes see - * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval). - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category String - * @param {string} [string=''] The template string. - * @param {Object} [options={}] The options object. - * @param {RegExp} [options.escape=_.templateSettings.escape] - * The HTML "escape" delimiter. - * @param {RegExp} [options.evaluate=_.templateSettings.evaluate] - * The "evaluate" delimiter. - * @param {Object} [options.imports=_.templateSettings.imports] - * An object to import into the template as free variables. - * @param {RegExp} [options.interpolate=_.templateSettings.interpolate] - * The "interpolate" delimiter. - * @param {string} [options.sourceURL='lodash.templateSources[n]'] - * The sourceURL of the compiled template. - * @param {string} [options.variable='obj'] - * The data object variable name. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the compiled template function. - * @example - * - * // Use the "interpolate" delimiter to create a compiled template. - * var compiled = _.template('hello <%= user %>!'); - * compiled({ 'user': 'fred' }); - * // => 'hello fred!' - * - * // Use the HTML "escape" delimiter to escape data property values. - * var compiled = _.template('<b><%- value %></b>'); - * compiled({ 'value': '<script>' }); - * // => '<b><script></b>' - * - * // Use the "evaluate" delimiter to execute JavaScript and generate HTML. - * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>'); - * compiled({ 'users': ['fred', 'barney'] }); - * // => '<li>fred</li><li>barney</li>' - * - * // Use the internal `print` function in "evaluate" delimiters. - * var compiled = _.template('<% print("hello " + user); %>!'); - * compiled({ 'user': 'barney' }); - * // => 'hello barney!' - * - * // Use the ES template literal delimiter as an "interpolate" delimiter. - * // Disable support by replacing the "interpolate" delimiter. - * var compiled = _.template('hello ${ user }!'); - * compiled({ 'user': 'pebbles' }); - * // => 'hello pebbles!' - * - * // Use backslashes to treat delimiters as plain text. - * var compiled = _.template('<%= "\\<%- value %\\>" %>'); - * compiled({ 'value': 'ignored' }); - * // => '<%- value %>' - * - * // Use the `imports` option to import `jQuery` as `jq`. - * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>'; - * var compiled = _.template(text, { 'imports': { 'jq': jQuery } }); - * compiled({ 'users': ['fred', 'barney'] }); - * // => '<li>fred</li><li>barney</li>' - * - * // Use the `sourceURL` option to specify a custom sourceURL for the template. - * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' }); - * compiled(data); - * // => Find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector. - * - * // Use the `variable` option to ensure a with-statement isn't used in the compiled template. - * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' }); - * compiled.source; - * // => function(data) { - * // var __t, __p = ''; - * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!'; - * // return __p; - * // } - * - * // Use custom template delimiters. - * _.templateSettings.interpolate = /{{([\s\S]+?)}}/g; - * var compiled = _.template('hello {{ user }}!'); - * compiled({ 'user': 'mustache' }); - * // => 'hello mustache!' - * - * // Use the `source` property to inline compiled templates for meaningful - * // line numbers in error messages and stack traces. - * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\ - * var JST = {\ - * "main": ' + _.template(mainText).source + '\ - * };\ - * '); - */ - function template(string, options, guard) { - // Based on John Resig's `tmpl` implementation - // (http://ejohn.org/blog/javascript-micro-templating/) - // and Laura Doktorova's doT.js (https://github.com/olado/doT). - var settings = lodash.templateSettings; - - if (guard && isIterateeCall(string, options, guard)) { - options = undefined$1; - } - string = toString(string); - options = assignInWith({}, options, settings, customDefaultsAssignIn); - - var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn), - importsKeys = keys(imports), - importsValues = baseValues(imports, importsKeys); - - var isEscaping, - isEvaluating, - index = 0, - interpolate = options.interpolate || reNoMatch, - source = "__p += '"; - - // Compile the regexp to match each delimiter. - var reDelimiters = RegExp( - (options.escape || reNoMatch).source + '|' + - interpolate.source + '|' + - (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' + - (options.evaluate || reNoMatch).source + '|$' - , 'g'); - - // Use a sourceURL for easier debugging. - // The sourceURL gets injected into the source that's eval-ed, so be careful - // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in - // and escape the comment, thus injecting code that gets evaled. - var sourceURL = '//# sourceURL=' + - (hasOwnProperty.call(options, 'sourceURL') - ? (options.sourceURL + '').replace(/\s/g, ' ') - : ('lodash.templateSources[' + (++templateCounter) + ']') - ) + '\n'; - - string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) { - interpolateValue || (interpolateValue = esTemplateValue); - - // Escape characters that can't be included in string literals. - source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar); - - // Replace delimiters with snippets. - if (escapeValue) { - isEscaping = true; - source += "' +\n__e(" + escapeValue + ") +\n'"; - } - if (evaluateValue) { - isEvaluating = true; - source += "';\n" + evaluateValue + ";\n__p += '"; - } - if (interpolateValue) { - source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'"; - } - index = offset + match.length; - - // The JS engine embedded in Adobe products needs `match` returned in - // order to produce the correct `offset` value. - return match; - }); - - source += "';\n"; - - // If `variable` is not specified wrap a with-statement around the generated - // code to add the data object to the top of the scope chain. - var variable = hasOwnProperty.call(options, 'variable') && options.variable; - if (!variable) { - source = 'with (obj) {\n' + source + '\n}\n'; - } - // Cleanup code by stripping empty strings. - source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source) - .replace(reEmptyStringMiddle, '$1') - .replace(reEmptyStringTrailing, '$1;'); - - // Frame code as the function body. - source = 'function(' + (variable || 'obj') + ') {\n' + - (variable - ? '' - : 'obj || (obj = {});\n' - ) + - "var __t, __p = ''" + - (isEscaping - ? ', __e = _.escape' - : '' - ) + - (isEvaluating - ? ', __j = Array.prototype.join;\n' + - "function print() { __p += __j.call(arguments, '') }\n" - : ';\n' - ) + - source + - 'return __p\n}'; - - var result = attempt(function() { - return Function(importsKeys, sourceURL + 'return ' + source) - .apply(undefined$1, importsValues); - }); - - // Provide the compiled function's source by its `toString` method or - // the `source` property as a convenience for inlining compiled templates. - result.source = source; - if (isError(result)) { - throw result; - } - return result; - } - - /** - * Converts `string`, as a whole, to lower case just like - * [String#toLowerCase](https://mdn.io/toLowerCase). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the lower cased string. - * @example - * - * _.toLower('--Foo-Bar--'); - * // => '--foo-bar--' - * - * _.toLower('fooBar'); - * // => 'foobar' - * - * _.toLower('__FOO_BAR__'); - * // => '__foo_bar__' - */ - function toLower(value) { - return toString(value).toLowerCase(); - } - - /** - * Converts `string`, as a whole, to upper case just like - * [String#toUpperCase](https://mdn.io/toUpperCase). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the upper cased string. - * @example - * - * _.toUpper('--foo-bar--'); - * // => '--FOO-BAR--' - * - * _.toUpper('fooBar'); - * // => 'FOOBAR' - * - * _.toUpper('__foo_bar__'); - * // => '__FOO_BAR__' - */ - function toUpper(value) { - return toString(value).toUpperCase(); - } - - /** - * Removes leading and trailing whitespace or specified characters from `string`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to trim. - * @param {string} [chars=whitespace] The characters to trim. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {string} Returns the trimmed string. - * @example - * - * _.trim(' abc '); - * // => 'abc' - * - * _.trim('-_-abc-_-', '_-'); - * // => 'abc' - * - * _.map([' foo ', ' bar '], _.trim); - * // => ['foo', 'bar'] - */ - function trim(string, chars, guard) { - string = toString(string); - if (string && (guard || chars === undefined$1)) { - return string.replace(reTrim, ''); - } - if (!string || !(chars = baseToString(chars))) { - return string; - } - var strSymbols = stringToArray(string), - chrSymbols = stringToArray(chars), - start = charsStartIndex(strSymbols, chrSymbols), - end = charsEndIndex(strSymbols, chrSymbols) + 1; - - return castSlice(strSymbols, start, end).join(''); - } - - /** - * Removes trailing whitespace or specified characters from `string`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to trim. - * @param {string} [chars=whitespace] The characters to trim. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {string} Returns the trimmed string. - * @example - * - * _.trimEnd(' abc '); - * // => ' abc' - * - * _.trimEnd('-_-abc-_-', '_-'); - * // => '-_-abc' - */ - function trimEnd(string, chars, guard) { - string = toString(string); - if (string && (guard || chars === undefined$1)) { - return string.replace(reTrimEnd, ''); - } - if (!string || !(chars = baseToString(chars))) { - return string; - } - var strSymbols = stringToArray(string), - end = charsEndIndex(strSymbols, stringToArray(chars)) + 1; - - return castSlice(strSymbols, 0, end).join(''); - } - - /** - * Removes leading whitespace or specified characters from `string`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to trim. - * @param {string} [chars=whitespace] The characters to trim. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {string} Returns the trimmed string. - * @example - * - * _.trimStart(' abc '); - * // => 'abc ' - * - * _.trimStart('-_-abc-_-', '_-'); - * // => 'abc-_-' - */ - function trimStart(string, chars, guard) { - string = toString(string); - if (string && (guard || chars === undefined$1)) { - return string.replace(reTrimStart, ''); - } - if (!string || !(chars = baseToString(chars))) { - return string; - } - var strSymbols = stringToArray(string), - start = charsStartIndex(strSymbols, stringToArray(chars)); - - return castSlice(strSymbols, start).join(''); - } - - /** - * Truncates `string` if it's longer than the given maximum string length. - * The last characters of the truncated string are replaced with the omission - * string which defaults to "...". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to truncate. - * @param {Object} [options={}] The options object. - * @param {number} [options.length=30] The maximum string length. - * @param {string} [options.omission='...'] The string to indicate text is omitted. - * @param {RegExp|string} [options.separator] The separator pattern to truncate to. - * @returns {string} Returns the truncated string. - * @example - * - * _.truncate('hi-diddly-ho there, neighborino'); - * // => 'hi-diddly-ho there, neighbo...' - * - * _.truncate('hi-diddly-ho there, neighborino', { - * 'length': 24, - * 'separator': ' ' - * }); - * // => 'hi-diddly-ho there,...' - * - * _.truncate('hi-diddly-ho there, neighborino', { - * 'length': 24, - * 'separator': /,? +/ - * }); - * // => 'hi-diddly-ho there...' - * - * _.truncate('hi-diddly-ho there, neighborino', { - * 'omission': ' [...]' - * }); - * // => 'hi-diddly-ho there, neig [...]' - */ - function truncate(string, options) { - var length = DEFAULT_TRUNC_LENGTH, - omission = DEFAULT_TRUNC_OMISSION; - - if (isObject(options)) { - var separator = 'separator' in options ? options.separator : separator; - length = 'length' in options ? toInteger(options.length) : length; - omission = 'omission' in options ? baseToString(options.omission) : omission; - } - string = toString(string); - - var strLength = string.length; - if (hasUnicode(string)) { - var strSymbols = stringToArray(string); - strLength = strSymbols.length; - } - if (length >= strLength) { - return string; - } - var end = length - stringSize(omission); - if (end < 1) { - return omission; - } - var result = strSymbols - ? castSlice(strSymbols, 0, end).join('') - : string.slice(0, end); - - if (separator === undefined$1) { - return result + omission; - } - if (strSymbols) { - end += (result.length - end); - } - if (isRegExp(separator)) { - if (string.slice(end).search(separator)) { - var match, - substring = result; - - if (!separator.global) { - separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g'); - } - separator.lastIndex = 0; - while ((match = separator.exec(substring))) { - var newEnd = match.index; - } - result = result.slice(0, newEnd === undefined$1 ? end : newEnd); - } - } else if (string.indexOf(baseToString(separator), end) != end) { - var index = result.lastIndexOf(separator); - if (index > -1) { - result = result.slice(0, index); - } - } - return result + omission; - } - - /** - * The inverse of `_.escape`; this method converts the HTML entities - * `&`, `<`, `>`, `"`, and `'` in `string` to - * their corresponding characters. - * - * **Note:** No other HTML entities are unescaped. To unescape additional - * HTML entities use a third-party library like [_he_](https://mths.be/he). - * - * @static - * @memberOf _ - * @since 0.6.0 - * @category String - * @param {string} [string=''] The string to unescape. - * @returns {string} Returns the unescaped string. - * @example - * - * _.unescape('fred, barney, & pebbles'); - * // => 'fred, barney, & pebbles' - */ - function unescape(string) { - string = toString(string); - return (string && reHasEscapedHtml.test(string)) - ? string.replace(reEscapedHtml, unescapeHtmlChar) - : string; - } - - /** - * Converts `string`, as space separated words, to upper case. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the upper cased string. - * @example - * - * _.upperCase('--foo-bar'); - * // => 'FOO BAR' - * - * _.upperCase('fooBar'); - * // => 'FOO BAR' - * - * _.upperCase('__foo_bar__'); - * // => 'FOO BAR' - */ - var upperCase = createCompounder(function(result, word, index) { - return result + (index ? ' ' : '') + word.toUpperCase(); - }); - - /** - * Converts the first character of `string` to upper case. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the converted string. - * @example - * - * _.upperFirst('fred'); - * // => 'Fred' - * - * _.upperFirst('FRED'); - * // => 'FRED' - */ - var upperFirst = createCaseFirst('toUpperCase'); - - /** - * Splits `string` into an array of its words. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to inspect. - * @param {RegExp|string} [pattern] The pattern to match words. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the words of `string`. - * @example - * - * _.words('fred, barney, & pebbles'); - * // => ['fred', 'barney', 'pebbles'] - * - * _.words('fred, barney, & pebbles', /[^, ]+/g); - * // => ['fred', 'barney', '&', 'pebbles'] - */ - function words(string, pattern, guard) { - string = toString(string); - pattern = guard ? undefined$1 : pattern; - - if (pattern === undefined$1) { - return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string); - } - return string.match(pattern) || []; - } - - /*------------------------------------------------------------------------*/ - - /** - * Attempts to invoke `func`, returning either the result or the caught error - * object. Any additional arguments are provided to `func` when it's invoked. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Util - * @param {Function} func The function to attempt. - * @param {...*} [args] The arguments to invoke `func` with. - * @returns {*} Returns the `func` result or error object. - * @example - * - * // Avoid throwing errors for invalid selectors. - * var elements = _.attempt(function(selector) { - * return document.querySelectorAll(selector); - * }, '>_>'); - * - * if (_.isError(elements)) { - * elements = []; - * } - */ - var attempt = baseRest(function(func, args) { - try { - return apply(func, undefined$1, args); - } catch (e) { - return isError(e) ? e : new Error(e); - } - }); - - /** - * Binds methods of an object to the object itself, overwriting the existing - * method. - * - * **Note:** This method doesn't set the "length" property of bound functions. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {Object} object The object to bind and assign the bound methods to. - * @param {...(string|string[])} methodNames The object method names to bind. - * @returns {Object} Returns `object`. - * @example - * - * var view = { - * 'label': 'docs', - * 'click': function() { - * console.log('clicked ' + this.label); - * } - * }; - * - * _.bindAll(view, ['click']); - * jQuery(element).on('click', view.click); - * // => Logs 'clicked docs' when clicked. - */ - var bindAll = flatRest(function(object, methodNames) { - arrayEach(methodNames, function(key) { - key = toKey(key); - baseAssignValue(object, key, bind(object[key], object)); - }); - return object; - }); - - /** - * Creates a function that iterates over `pairs` and invokes the corresponding - * function of the first predicate to return truthy. The predicate-function - * pairs are invoked with the `this` binding and arguments of the created - * function. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Util - * @param {Array} pairs The predicate-function pairs. - * @returns {Function} Returns the new composite function. - * @example - * - * var func = _.cond([ - * [_.matches({ 'a': 1 }), _.constant('matches A')], - * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')], - * [_.stubTrue, _.constant('no match')] - * ]); - * - * func({ 'a': 1, 'b': 2 }); - * // => 'matches A' - * - * func({ 'a': 0, 'b': 1 }); - * // => 'matches B' - * - * func({ 'a': '1', 'b': '2' }); - * // => 'no match' - */ - function cond(pairs) { - var length = pairs == null ? 0 : pairs.length, - toIteratee = getIteratee(); - - pairs = !length ? [] : arrayMap(pairs, function(pair) { - if (typeof pair[1] != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return [toIteratee(pair[0]), pair[1]]; - }); - - return baseRest(function(args) { - var index = -1; - while (++index < length) { - var pair = pairs[index]; - if (apply(pair[0], this, args)) { - return apply(pair[1], this, args); - } - } - }); - } - - /** - * Creates a function that invokes the predicate properties of `source` with - * the corresponding property values of a given object, returning `true` if - * all predicates return truthy, else `false`. - * - * **Note:** The created function is equivalent to `_.conformsTo` with - * `source` partially applied. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Util - * @param {Object} source The object of property predicates to conform to. - * @returns {Function} Returns the new spec function. - * @example - * - * var objects = [ - * { 'a': 2, 'b': 1 }, - * { 'a': 1, 'b': 2 } - * ]; - * - * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } })); - * // => [{ 'a': 1, 'b': 2 }] - */ - function conforms(source) { - return baseConforms(baseClone(source, CLONE_DEEP_FLAG)); - } - - /** - * Creates a function that returns `value`. - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Util - * @param {*} value The value to return from the new function. - * @returns {Function} Returns the new constant function. - * @example - * - * var objects = _.times(2, _.constant({ 'a': 1 })); - * - * console.log(objects); - * // => [{ 'a': 1 }, { 'a': 1 }] - * - * console.log(objects[0] === objects[1]); - * // => true - */ - function constant(value) { - return function() { - return value; - }; - } - - /** - * Checks `value` to determine whether a default value should be returned in - * its place. The `defaultValue` is returned if `value` is `NaN`, `null`, - * or `undefined`. - * - * @static - * @memberOf _ - * @since 4.14.0 - * @category Util - * @param {*} value The value to check. - * @param {*} defaultValue The default value. - * @returns {*} Returns the resolved value. - * @example - * - * _.defaultTo(1, 10); - * // => 1 - * - * _.defaultTo(undefined, 10); - * // => 10 - */ - function defaultTo(value, defaultValue) { - return (value == null || value !== value) ? defaultValue : value; - } - - /** - * Creates a function that returns the result of invoking the given functions - * with the `this` binding of the created function, where each successive - * invocation is supplied the return value of the previous. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Util - * @param {...(Function|Function[])} [funcs] The functions to invoke. - * @returns {Function} Returns the new composite function. - * @see _.flowRight - * @example - * - * function square(n) { - * return n * n; - * } - * - * var addSquare = _.flow([_.add, square]); - * addSquare(1, 2); - * // => 9 - */ - var flow = createFlow(); - - /** - * This method is like `_.flow` except that it creates a function that - * invokes the given functions from right to left. - * - * @static - * @since 3.0.0 - * @memberOf _ - * @category Util - * @param {...(Function|Function[])} [funcs] The functions to invoke. - * @returns {Function} Returns the new composite function. - * @see _.flow - * @example - * - * function square(n) { - * return n * n; - * } - * - * var addSquare = _.flowRight([square, _.add]); - * addSquare(1, 2); - * // => 9 - */ - var flowRight = createFlow(true); - - /** - * This method returns the first argument it receives. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {*} value Any value. - * @returns {*} Returns `value`. - * @example - * - * var object = { 'a': 1 }; - * - * console.log(_.identity(object) === object); - * // => true - */ - function identity(value) { - return value; - } - - /** - * Creates a function that invokes `func` with the arguments of the created - * function. If `func` is a property name, the created function returns the - * property value for a given element. If `func` is an array or object, the - * created function returns `true` for elements that contain the equivalent - * source properties, otherwise it returns `false`. - * - * @static - * @since 4.0.0 - * @memberOf _ - * @category Util - * @param {*} [func=_.identity] The value to convert to a callback. - * @returns {Function} Returns the callback. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * // The `_.matches` iteratee shorthand. - * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true })); - * // => [{ 'user': 'barney', 'age': 36, 'active': true }] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.filter(users, _.iteratee(['user', 'fred'])); - * // => [{ 'user': 'fred', 'age': 40 }] - * - * // The `_.property` iteratee shorthand. - * _.map(users, _.iteratee('user')); - * // => ['barney', 'fred'] - * - * // Create custom iteratee shorthands. - * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) { - * return !_.isRegExp(func) ? iteratee(func) : function(string) { - * return func.test(string); - * }; - * }); - * - * _.filter(['abc', 'def'], /ef/); - * // => ['def'] - */ - function iteratee(func) { - return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG)); - } - - /** - * Creates a function that performs a partial deep comparison between a given - * object and `source`, returning `true` if the given object has equivalent - * property values, else `false`. - * - * **Note:** The created function is equivalent to `_.isMatch` with `source` - * partially applied. - * - * Partial comparisons will match empty array and empty object `source` - * values against any array or object value, respectively. See `_.isEqual` - * for a list of supported value comparisons. - * - * **Note:** Multiple values can be checked by combining several matchers - * using `_.overSome` - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Util - * @param {Object} source The object of property values to match. - * @returns {Function} Returns the new spec function. - * @example - * - * var objects = [ - * { 'a': 1, 'b': 2, 'c': 3 }, - * { 'a': 4, 'b': 5, 'c': 6 } - * ]; - * - * _.filter(objects, _.matches({ 'a': 4, 'c': 6 })); - * // => [{ 'a': 4, 'b': 5, 'c': 6 }] - * - * // Checking for several possible values - * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })])); - * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }] - */ - function matches(source) { - return baseMatches(baseClone(source, CLONE_DEEP_FLAG)); - } - - /** - * Creates a function that performs a partial deep comparison between the - * value at `path` of a given object to `srcValue`, returning `true` if the - * object value is equivalent, else `false`. - * - * **Note:** Partial comparisons will match empty array and empty object - * `srcValue` values against any array or object value, respectively. See - * `_.isEqual` for a list of supported value comparisons. - * - * **Note:** Multiple values can be checked by combining several matchers - * using `_.overSome` - * - * @static - * @memberOf _ - * @since 3.2.0 - * @category Util - * @param {Array|string} path The path of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - * @example - * - * var objects = [ - * { 'a': 1, 'b': 2, 'c': 3 }, - * { 'a': 4, 'b': 5, 'c': 6 } - * ]; - * - * _.find(objects, _.matchesProperty('a', 4)); - * // => { 'a': 4, 'b': 5, 'c': 6 } - * - * // Checking for several possible values - * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)])); - * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }] - */ - function matchesProperty(path, srcValue) { - return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG)); - } - - /** - * Creates a function that invokes the method at `path` of a given object. - * Any additional arguments are provided to the invoked method. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Util - * @param {Array|string} path The path of the method to invoke. - * @param {...*} [args] The arguments to invoke the method with. - * @returns {Function} Returns the new invoker function. - * @example - * - * var objects = [ - * { 'a': { 'b': _.constant(2) } }, - * { 'a': { 'b': _.constant(1) } } - * ]; - * - * _.map(objects, _.method('a.b')); - * // => [2, 1] - * - * _.map(objects, _.method(['a', 'b'])); - * // => [2, 1] - */ - var method = baseRest(function(path, args) { - return function(object) { - return baseInvoke(object, path, args); - }; - }); - - /** - * The opposite of `_.method`; this method creates a function that invokes - * the method at a given path of `object`. Any additional arguments are - * provided to the invoked method. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Util - * @param {Object} object The object to query. - * @param {...*} [args] The arguments to invoke the method with. - * @returns {Function} Returns the new invoker function. - * @example - * - * var array = _.times(3, _.constant), - * object = { 'a': array, 'b': array, 'c': array }; - * - * _.map(['a[2]', 'c[0]'], _.methodOf(object)); - * // => [2, 0] - * - * _.map([['a', '2'], ['c', '0']], _.methodOf(object)); - * // => [2, 0] - */ - var methodOf = baseRest(function(object, args) { - return function(path) { - return baseInvoke(object, path, args); - }; - }); - - /** - * Adds all own enumerable string keyed function properties of a source - * object to the destination object. If `object` is a function, then methods - * are added to its prototype as well. - * - * **Note:** Use `_.runInContext` to create a pristine `lodash` function to - * avoid conflicts caused by modifying the original. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {Function|Object} [object=lodash] The destination object. - * @param {Object} source The object of functions to add. - * @param {Object} [options={}] The options object. - * @param {boolean} [options.chain=true] Specify whether mixins are chainable. - * @returns {Function|Object} Returns `object`. - * @example - * - * function vowels(string) { - * return _.filter(string, function(v) { - * return /[aeiou]/i.test(v); - * }); - * } - * - * _.mixin({ 'vowels': vowels }); - * _.vowels('fred'); - * // => ['e'] - * - * _('fred').vowels().value(); - * // => ['e'] - * - * _.mixin({ 'vowels': vowels }, { 'chain': false }); - * _('fred').vowels(); - * // => ['e'] - */ - function mixin(object, source, options) { - var props = keys(source), - methodNames = baseFunctions(source, props); - - if (options == null && - !(isObject(source) && (methodNames.length || !props.length))) { - options = source; - source = object; - object = this; - methodNames = baseFunctions(source, keys(source)); - } - var chain = !(isObject(options) && 'chain' in options) || !!options.chain, - isFunc = isFunction(object); - - arrayEach(methodNames, function(methodName) { - var func = source[methodName]; - object[methodName] = func; - if (isFunc) { - object.prototype[methodName] = function() { - var chainAll = this.__chain__; - if (chain || chainAll) { - var result = object(this.__wrapped__), - actions = result.__actions__ = copyArray(this.__actions__); - - actions.push({ 'func': func, 'args': arguments, 'thisArg': object }); - result.__chain__ = chainAll; - return result; - } - return func.apply(object, arrayPush([this.value()], arguments)); - }; - } - }); - - return object; - } - - /** - * Reverts the `_` variable to its previous value and returns a reference to - * the `lodash` function. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @returns {Function} Returns the `lodash` function. - * @example - * - * var lodash = _.noConflict(); - */ - function noConflict() { - if (root._ === this) { - root._ = oldDash; - } - return this; - } - - /** - * This method returns `undefined`. - * - * @static - * @memberOf _ - * @since 2.3.0 - * @category Util - * @example - * - * _.times(2, _.noop); - * // => [undefined, undefined] - */ - function noop() { - // No operation performed. - } - - /** - * Creates a function that gets the argument at index `n`. If `n` is negative, - * the nth argument from the end is returned. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Util - * @param {number} [n=0] The index of the argument to return. - * @returns {Function} Returns the new pass-thru function. - * @example - * - * var func = _.nthArg(1); - * func('a', 'b', 'c', 'd'); - * // => 'b' - * - * var func = _.nthArg(-2); - * func('a', 'b', 'c', 'd'); - * // => 'c' - */ - function nthArg(n) { - n = toInteger(n); - return baseRest(function(args) { - return baseNth(args, n); - }); - } - - /** - * Creates a function that invokes `iteratees` with the arguments it receives - * and returns their results. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Util - * @param {...(Function|Function[])} [iteratees=[_.identity]] - * The iteratees to invoke. - * @returns {Function} Returns the new function. - * @example - * - * var func = _.over([Math.max, Math.min]); - * - * func(1, 2, 3, 4); - * // => [4, 1] - */ - var over = createOver(arrayMap); - - /** - * Creates a function that checks if **all** of the `predicates` return - * truthy when invoked with the arguments it receives. - * - * Following shorthands are possible for providing predicates. - * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate. - * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Util - * @param {...(Function|Function[])} [predicates=[_.identity]] - * The predicates to check. - * @returns {Function} Returns the new function. - * @example - * - * var func = _.overEvery([Boolean, isFinite]); - * - * func('1'); - * // => true - * - * func(null); - * // => false - * - * func(NaN); - * // => false - */ - var overEvery = createOver(arrayEvery); - - /** - * Creates a function that checks if **any** of the `predicates` return - * truthy when invoked with the arguments it receives. - * - * Following shorthands are possible for providing predicates. - * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate. - * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Util - * @param {...(Function|Function[])} [predicates=[_.identity]] - * The predicates to check. - * @returns {Function} Returns the new function. - * @example - * - * var func = _.overSome([Boolean, isFinite]); - * - * func('1'); - * // => true - * - * func(null); - * // => true - * - * func(NaN); - * // => false - * - * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }]) - * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]]) - */ - var overSome = createOver(arraySome); - - /** - * Creates a function that returns the value at `path` of a given object. - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Util - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new accessor function. - * @example - * - * var objects = [ - * { 'a': { 'b': 2 } }, - * { 'a': { 'b': 1 } } - * ]; - * - * _.map(objects, _.property('a.b')); - * // => [2, 1] - * - * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); - * // => [1, 2] - */ - function property(path) { - return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); - } - - /** - * The opposite of `_.property`; this method creates a function that returns - * the value at a given path of `object`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Util - * @param {Object} object The object to query. - * @returns {Function} Returns the new accessor function. - * @example - * - * var array = [0, 1, 2], - * object = { 'a': array, 'b': array, 'c': array }; - * - * _.map(['a[2]', 'c[0]'], _.propertyOf(object)); - * // => [2, 0] - * - * _.map([['a', '2'], ['c', '0']], _.propertyOf(object)); - * // => [2, 0] - */ - function propertyOf(object) { - return function(path) { - return object == null ? undefined$1 : baseGet(object, path); - }; - } - - /** - * Creates an array of numbers (positive and/or negative) progressing from - * `start` up to, but not including, `end`. A step of `-1` is used if a negative - * `start` is specified without an `end` or `step`. If `end` is not specified, - * it's set to `start` with `start` then set to `0`. - * - * **Note:** JavaScript follows the IEEE-754 standard for resolving - * floating-point values which can produce unexpected results. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {number} [start=0] The start of the range. - * @param {number} end The end of the range. - * @param {number} [step=1] The value to increment or decrement by. - * @returns {Array} Returns the range of numbers. - * @see _.inRange, _.rangeRight - * @example - * - * _.range(4); - * // => [0, 1, 2, 3] - * - * _.range(-4); - * // => [0, -1, -2, -3] - * - * _.range(1, 5); - * // => [1, 2, 3, 4] - * - * _.range(0, 20, 5); - * // => [0, 5, 10, 15] - * - * _.range(0, -4, -1); - * // => [0, -1, -2, -3] - * - * _.range(1, 4, 0); - * // => [1, 1, 1] - * - * _.range(0); - * // => [] - */ - var range = createRange(); - - /** - * This method is like `_.range` except that it populates values in - * descending order. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Util - * @param {number} [start=0] The start of the range. - * @param {number} end The end of the range. - * @param {number} [step=1] The value to increment or decrement by. - * @returns {Array} Returns the range of numbers. - * @see _.inRange, _.range - * @example - * - * _.rangeRight(4); - * // => [3, 2, 1, 0] - * - * _.rangeRight(-4); - * // => [-3, -2, -1, 0] - * - * _.rangeRight(1, 5); - * // => [4, 3, 2, 1] - * - * _.rangeRight(0, 20, 5); - * // => [15, 10, 5, 0] - * - * _.rangeRight(0, -4, -1); - * // => [-3, -2, -1, 0] - * - * _.rangeRight(1, 4, 0); - * // => [1, 1, 1] - * - * _.rangeRight(0); - * // => [] - */ - var rangeRight = createRange(true); - - /** - * This method returns a new empty array. - * - * @static - * @memberOf _ - * @since 4.13.0 - * @category Util - * @returns {Array} Returns the new empty array. - * @example - * - * var arrays = _.times(2, _.stubArray); - * - * console.log(arrays); - * // => [[], []] - * - * console.log(arrays[0] === arrays[1]); - * // => false - */ - function stubArray() { - return []; - } - - /** - * This method returns `false`. - * - * @static - * @memberOf _ - * @since 4.13.0 - * @category Util - * @returns {boolean} Returns `false`. - * @example - * - * _.times(2, _.stubFalse); - * // => [false, false] - */ - function stubFalse() { - return false; - } - - /** - * This method returns a new empty object. - * - * @static - * @memberOf _ - * @since 4.13.0 - * @category Util - * @returns {Object} Returns the new empty object. - * @example - * - * var objects = _.times(2, _.stubObject); - * - * console.log(objects); - * // => [{}, {}] - * - * console.log(objects[0] === objects[1]); - * // => false - */ - function stubObject() { - return {}; - } - - /** - * This method returns an empty string. - * - * @static - * @memberOf _ - * @since 4.13.0 - * @category Util - * @returns {string} Returns the empty string. - * @example - * - * _.times(2, _.stubString); - * // => ['', ''] - */ - function stubString() { - return ''; - } - - /** - * This method returns `true`. - * - * @static - * @memberOf _ - * @since 4.13.0 - * @category Util - * @returns {boolean} Returns `true`. - * @example - * - * _.times(2, _.stubTrue); - * // => [true, true] - */ - function stubTrue() { - return true; - } - - /** - * Invokes the iteratee `n` times, returning an array of the results of - * each invocation. The iteratee is invoked with one argument; (index). - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {number} n The number of times to invoke `iteratee`. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the array of results. - * @example - * - * _.times(3, String); - * // => ['0', '1', '2'] - * - * _.times(4, _.constant(0)); - * // => [0, 0, 0, 0] - */ - function times(n, iteratee) { - n = toInteger(n); - if (n < 1 || n > MAX_SAFE_INTEGER) { - return []; - } - var index = MAX_ARRAY_LENGTH, - length = nativeMin(n, MAX_ARRAY_LENGTH); - - iteratee = getIteratee(iteratee); - n -= MAX_ARRAY_LENGTH; - - var result = baseTimes(length, iteratee); - while (++index < n) { - iteratee(index); - } - return result; - } - - /** - * Converts `value` to a property path array. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Util - * @param {*} value The value to convert. - * @returns {Array} Returns the new property path array. - * @example - * - * _.toPath('a.b.c'); - * // => ['a', 'b', 'c'] - * - * _.toPath('a[0].b.c'); - * // => ['a', '0', 'b', 'c'] - */ - function toPath(value) { - if (isArray(value)) { - return arrayMap(value, toKey); - } - return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value))); - } - - /** - * Generates a unique ID. If `prefix` is given, the ID is appended to it. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {string} [prefix=''] The value to prefix the ID with. - * @returns {string} Returns the unique ID. - * @example - * - * _.uniqueId('contact_'); - * // => 'contact_104' - * - * _.uniqueId(); - * // => '105' - */ - function uniqueId(prefix) { - var id = ++idCounter; - return toString(prefix) + id; - } - - /*------------------------------------------------------------------------*/ - - /** - * Adds two numbers. - * - * @static - * @memberOf _ - * @since 3.4.0 - * @category Math - * @param {number} augend The first number in an addition. - * @param {number} addend The second number in an addition. - * @returns {number} Returns the total. - * @example - * - * _.add(6, 4); - * // => 10 - */ - var add = createMathOperation(function(augend, addend) { - return augend + addend; - }, 0); - - /** - * Computes `number` rounded up to `precision`. - * - * @static - * @memberOf _ - * @since 3.10.0 - * @category Math - * @param {number} number The number to round up. - * @param {number} [precision=0] The precision to round up to. - * @returns {number} Returns the rounded up number. - * @example - * - * _.ceil(4.006); - * // => 5 - * - * _.ceil(6.004, 2); - * // => 6.01 - * - * _.ceil(6040, -2); - * // => 6100 - */ - var ceil = createRound('ceil'); - - /** - * Divide two numbers. - * - * @static - * @memberOf _ - * @since 4.7.0 - * @category Math - * @param {number} dividend The first number in a division. - * @param {number} divisor The second number in a division. - * @returns {number} Returns the quotient. - * @example - * - * _.divide(6, 4); - * // => 1.5 - */ - var divide = createMathOperation(function(dividend, divisor) { - return dividend / divisor; - }, 1); - - /** - * Computes `number` rounded down to `precision`. - * - * @static - * @memberOf _ - * @since 3.10.0 - * @category Math - * @param {number} number The number to round down. - * @param {number} [precision=0] The precision to round down to. - * @returns {number} Returns the rounded down number. - * @example - * - * _.floor(4.006); - * // => 4 - * - * _.floor(0.046, 2); - * // => 0.04 - * - * _.floor(4060, -2); - * // => 4000 - */ - var floor = createRound('floor'); - - /** - * Computes the maximum value of `array`. If `array` is empty or falsey, - * `undefined` is returned. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Math - * @param {Array} array The array to iterate over. - * @returns {*} Returns the maximum value. - * @example - * - * _.max([4, 2, 8, 6]); - * // => 8 - * - * _.max([]); - * // => undefined - */ - function max(array) { - return (array && array.length) - ? baseExtremum(array, identity, baseGt) - : undefined$1; - } - - /** - * This method is like `_.max` except that it accepts `iteratee` which is - * invoked for each element in `array` to generate the criterion by which - * the value is ranked. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Math - * @param {Array} array The array to iterate over. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {*} Returns the maximum value. - * @example - * - * var objects = [{ 'n': 1 }, { 'n': 2 }]; - * - * _.maxBy(objects, function(o) { return o.n; }); - * // => { 'n': 2 } - * - * // The `_.property` iteratee shorthand. - * _.maxBy(objects, 'n'); - * // => { 'n': 2 } - */ - function maxBy(array, iteratee) { - return (array && array.length) - ? baseExtremum(array, getIteratee(iteratee, 2), baseGt) - : undefined$1; - } - - /** - * Computes the mean of the values in `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Math - * @param {Array} array The array to iterate over. - * @returns {number} Returns the mean. - * @example - * - * _.mean([4, 2, 8, 6]); - * // => 5 - */ - function mean(array) { - return baseMean(array, identity); - } - - /** - * This method is like `_.mean` except that it accepts `iteratee` which is - * invoked for each element in `array` to generate the value to be averaged. - * The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.7.0 - * @category Math - * @param {Array} array The array to iterate over. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {number} Returns the mean. - * @example - * - * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }]; - * - * _.meanBy(objects, function(o) { return o.n; }); - * // => 5 - * - * // The `_.property` iteratee shorthand. - * _.meanBy(objects, 'n'); - * // => 5 - */ - function meanBy(array, iteratee) { - return baseMean(array, getIteratee(iteratee, 2)); - } - - /** - * Computes the minimum value of `array`. If `array` is empty or falsey, - * `undefined` is returned. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Math - * @param {Array} array The array to iterate over. - * @returns {*} Returns the minimum value. - * @example - * - * _.min([4, 2, 8, 6]); - * // => 2 - * - * _.min([]); - * // => undefined - */ - function min(array) { - return (array && array.length) - ? baseExtremum(array, identity, baseLt) - : undefined$1; - } - - /** - * This method is like `_.min` except that it accepts `iteratee` which is - * invoked for each element in `array` to generate the criterion by which - * the value is ranked. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Math - * @param {Array} array The array to iterate over. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {*} Returns the minimum value. - * @example - * - * var objects = [{ 'n': 1 }, { 'n': 2 }]; - * - * _.minBy(objects, function(o) { return o.n; }); - * // => { 'n': 1 } - * - * // The `_.property` iteratee shorthand. - * _.minBy(objects, 'n'); - * // => { 'n': 1 } - */ - function minBy(array, iteratee) { - return (array && array.length) - ? baseExtremum(array, getIteratee(iteratee, 2), baseLt) - : undefined$1; - } - - /** - * Multiply two numbers. - * - * @static - * @memberOf _ - * @since 4.7.0 - * @category Math - * @param {number} multiplier The first number in a multiplication. - * @param {number} multiplicand The second number in a multiplication. - * @returns {number} Returns the product. - * @example - * - * _.multiply(6, 4); - * // => 24 - */ - var multiply = createMathOperation(function(multiplier, multiplicand) { - return multiplier * multiplicand; - }, 1); - - /** - * Computes `number` rounded to `precision`. - * - * @static - * @memberOf _ - * @since 3.10.0 - * @category Math - * @param {number} number The number to round. - * @param {number} [precision=0] The precision to round to. - * @returns {number} Returns the rounded number. - * @example - * - * _.round(4.006); - * // => 4 - * - * _.round(4.006, 2); - * // => 4.01 - * - * _.round(4060, -2); - * // => 4100 - */ - var round = createRound('round'); - - /** - * Subtract two numbers. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Math - * @param {number} minuend The first number in a subtraction. - * @param {number} subtrahend The second number in a subtraction. - * @returns {number} Returns the difference. - * @example - * - * _.subtract(6, 4); - * // => 2 - */ - var subtract = createMathOperation(function(minuend, subtrahend) { - return minuend - subtrahend; - }, 0); - - /** - * Computes the sum of the values in `array`. - * - * @static - * @memberOf _ - * @since 3.4.0 - * @category Math - * @param {Array} array The array to iterate over. - * @returns {number} Returns the sum. - * @example - * - * _.sum([4, 2, 8, 6]); - * // => 20 - */ - function sum(array) { - return (array && array.length) - ? baseSum(array, identity) - : 0; - } - - /** - * This method is like `_.sum` except that it accepts `iteratee` which is - * invoked for each element in `array` to generate the value to be summed. - * The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Math - * @param {Array} array The array to iterate over. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {number} Returns the sum. - * @example - * - * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }]; - * - * _.sumBy(objects, function(o) { return o.n; }); - * // => 20 - * - * // The `_.property` iteratee shorthand. - * _.sumBy(objects, 'n'); - * // => 20 - */ - function sumBy(array, iteratee) { - return (array && array.length) - ? baseSum(array, getIteratee(iteratee, 2)) - : 0; - } - - /*------------------------------------------------------------------------*/ - - // Add methods that return wrapped values in chain sequences. - lodash.after = after; - lodash.ary = ary; - lodash.assign = assign; - lodash.assignIn = assignIn; - lodash.assignInWith = assignInWith; - lodash.assignWith = assignWith; - lodash.at = at; - lodash.before = before; - lodash.bind = bind; - lodash.bindAll = bindAll; - lodash.bindKey = bindKey; - lodash.castArray = castArray; - lodash.chain = chain; - lodash.chunk = chunk; - lodash.compact = compact; - lodash.concat = concat; - lodash.cond = cond; - lodash.conforms = conforms; - lodash.constant = constant; - lodash.countBy = countBy; - lodash.create = create; - lodash.curry = curry; - lodash.curryRight = curryRight; - lodash.debounce = debounce; - lodash.defaults = defaults; - lodash.defaultsDeep = defaultsDeep; - lodash.defer = defer; - lodash.delay = delay; - lodash.difference = difference; - lodash.differenceBy = differenceBy; - lodash.differenceWith = differenceWith; - lodash.drop = drop; - lodash.dropRight = dropRight; - lodash.dropRightWhile = dropRightWhile; - lodash.dropWhile = dropWhile; - lodash.fill = fill; - lodash.filter = filter; - lodash.flatMap = flatMap; - lodash.flatMapDeep = flatMapDeep; - lodash.flatMapDepth = flatMapDepth; - lodash.flatten = flatten; - lodash.flattenDeep = flattenDeep; - lodash.flattenDepth = flattenDepth; - lodash.flip = flip; - lodash.flow = flow; - lodash.flowRight = flowRight; - lodash.fromPairs = fromPairs; - lodash.functions = functions; - lodash.functionsIn = functionsIn; - lodash.groupBy = groupBy; - lodash.initial = initial; - lodash.intersection = intersection; - lodash.intersectionBy = intersectionBy; - lodash.intersectionWith = intersectionWith; - lodash.invert = invert; - lodash.invertBy = invertBy; - lodash.invokeMap = invokeMap; - lodash.iteratee = iteratee; - lodash.keyBy = keyBy; - lodash.keys = keys; - lodash.keysIn = keysIn; - lodash.map = map; - lodash.mapKeys = mapKeys; - lodash.mapValues = mapValues; - lodash.matches = matches; - lodash.matchesProperty = matchesProperty; - lodash.memoize = memoize; - lodash.merge = merge; - lodash.mergeWith = mergeWith; - lodash.method = method; - lodash.methodOf = methodOf; - lodash.mixin = mixin; - lodash.negate = negate; - lodash.nthArg = nthArg; - lodash.omit = omit; - lodash.omitBy = omitBy; - lodash.once = once; - lodash.orderBy = orderBy; - lodash.over = over; - lodash.overArgs = overArgs; - lodash.overEvery = overEvery; - lodash.overSome = overSome; - lodash.partial = partial; - lodash.partialRight = partialRight; - lodash.partition = partition; - lodash.pick = pick; - lodash.pickBy = pickBy; - lodash.property = property; - lodash.propertyOf = propertyOf; - lodash.pull = pull; - lodash.pullAll = pullAll; - lodash.pullAllBy = pullAllBy; - lodash.pullAllWith = pullAllWith; - lodash.pullAt = pullAt; - lodash.range = range; - lodash.rangeRight = rangeRight; - lodash.rearg = rearg; - lodash.reject = reject; - lodash.remove = remove; - lodash.rest = rest; - lodash.reverse = reverse; - lodash.sampleSize = sampleSize; - lodash.set = set; - lodash.setWith = setWith; - lodash.shuffle = shuffle; - lodash.slice = slice; - lodash.sortBy = sortBy; - lodash.sortedUniq = sortedUniq; - lodash.sortedUniqBy = sortedUniqBy; - lodash.split = split; - lodash.spread = spread; - lodash.tail = tail; - lodash.take = take; - lodash.takeRight = takeRight; - lodash.takeRightWhile = takeRightWhile; - lodash.takeWhile = takeWhile; - lodash.tap = tap; - lodash.throttle = throttle; - lodash.thru = thru; - lodash.toArray = toArray; - lodash.toPairs = toPairs; - lodash.toPairsIn = toPairsIn; - lodash.toPath = toPath; - lodash.toPlainObject = toPlainObject; - lodash.transform = transform; - lodash.unary = unary; - lodash.union = union; - lodash.unionBy = unionBy; - lodash.unionWith = unionWith; - lodash.uniq = uniq; - lodash.uniqBy = uniqBy; - lodash.uniqWith = uniqWith; - lodash.unset = unset; - lodash.unzip = unzip; - lodash.unzipWith = unzipWith; - lodash.update = update; - lodash.updateWith = updateWith; - lodash.values = values; - lodash.valuesIn = valuesIn; - lodash.without = without; - lodash.words = words; - lodash.wrap = wrap; - lodash.xor = xor; - lodash.xorBy = xorBy; - lodash.xorWith = xorWith; - lodash.zip = zip; - lodash.zipObject = zipObject; - lodash.zipObjectDeep = zipObjectDeep; - lodash.zipWith = zipWith; - - // Add aliases. - lodash.entries = toPairs; - lodash.entriesIn = toPairsIn; - lodash.extend = assignIn; - lodash.extendWith = assignInWith; - - // Add methods to `lodash.prototype`. - mixin(lodash, lodash); - - /*------------------------------------------------------------------------*/ - - // Add methods that return unwrapped values in chain sequences. - lodash.add = add; - lodash.attempt = attempt; - lodash.camelCase = camelCase; - lodash.capitalize = capitalize; - lodash.ceil = ceil; - lodash.clamp = clamp; - lodash.clone = clone; - lodash.cloneDeep = cloneDeep; - lodash.cloneDeepWith = cloneDeepWith; - lodash.cloneWith = cloneWith; - lodash.conformsTo = conformsTo; - lodash.deburr = deburr; - lodash.defaultTo = defaultTo; - lodash.divide = divide; - lodash.endsWith = endsWith; - lodash.eq = eq; - lodash.escape = escape; - lodash.escapeRegExp = escapeRegExp; - lodash.every = every; - lodash.find = find; - lodash.findIndex = findIndex; - lodash.findKey = findKey; - lodash.findLast = findLast; - lodash.findLastIndex = findLastIndex; - lodash.findLastKey = findLastKey; - lodash.floor = floor; - lodash.forEach = forEach; - lodash.forEachRight = forEachRight; - lodash.forIn = forIn; - lodash.forInRight = forInRight; - lodash.forOwn = forOwn; - lodash.forOwnRight = forOwnRight; - lodash.get = get; - lodash.gt = gt; - lodash.gte = gte; - lodash.has = has; - lodash.hasIn = hasIn; - lodash.head = head; - lodash.identity = identity; - lodash.includes = includes; - lodash.indexOf = indexOf; - lodash.inRange = inRange; - lodash.invoke = invoke; - lodash.isArguments = isArguments; - lodash.isArray = isArray; - lodash.isArrayBuffer = isArrayBuffer; - lodash.isArrayLike = isArrayLike; - lodash.isArrayLikeObject = isArrayLikeObject; - lodash.isBoolean = isBoolean; - lodash.isBuffer = isBuffer; - lodash.isDate = isDate; - lodash.isElement = isElement; - lodash.isEmpty = isEmpty; - lodash.isEqual = isEqual; - lodash.isEqualWith = isEqualWith; - lodash.isError = isError; - lodash.isFinite = isFinite; - lodash.isFunction = isFunction; - lodash.isInteger = isInteger; - lodash.isLength = isLength; - lodash.isMap = isMap; - lodash.isMatch = isMatch; - lodash.isMatchWith = isMatchWith; - lodash.isNaN = isNaN; - lodash.isNative = isNative; - lodash.isNil = isNil; - lodash.isNull = isNull; - lodash.isNumber = isNumber; - lodash.isObject = isObject; - lodash.isObjectLike = isObjectLike; - lodash.isPlainObject = isPlainObject; - lodash.isRegExp = isRegExp; - lodash.isSafeInteger = isSafeInteger; - lodash.isSet = isSet; - lodash.isString = isString; - lodash.isSymbol = isSymbol; - lodash.isTypedArray = isTypedArray; - lodash.isUndefined = isUndefined; - lodash.isWeakMap = isWeakMap; - lodash.isWeakSet = isWeakSet; - lodash.join = join; - lodash.kebabCase = kebabCase; - lodash.last = last; - lodash.lastIndexOf = lastIndexOf; - lodash.lowerCase = lowerCase; - lodash.lowerFirst = lowerFirst; - lodash.lt = lt; - lodash.lte = lte; - lodash.max = max; - lodash.maxBy = maxBy; - lodash.mean = mean; - lodash.meanBy = meanBy; - lodash.min = min; - lodash.minBy = minBy; - lodash.stubArray = stubArray; - lodash.stubFalse = stubFalse; - lodash.stubObject = stubObject; - lodash.stubString = stubString; - lodash.stubTrue = stubTrue; - lodash.multiply = multiply; - lodash.nth = nth; - lodash.noConflict = noConflict; - lodash.noop = noop; - lodash.now = now; - lodash.pad = pad; - lodash.padEnd = padEnd; - lodash.padStart = padStart; - lodash.parseInt = parseInt; - lodash.random = random; - lodash.reduce = reduce; - lodash.reduceRight = reduceRight; - lodash.repeat = repeat; - lodash.replace = replace; - lodash.result = result; - lodash.round = round; - lodash.runInContext = runInContext; - lodash.sample = sample; - lodash.size = size; - lodash.snakeCase = snakeCase; - lodash.some = some; - lodash.sortedIndex = sortedIndex; - lodash.sortedIndexBy = sortedIndexBy; - lodash.sortedIndexOf = sortedIndexOf; - lodash.sortedLastIndex = sortedLastIndex; - lodash.sortedLastIndexBy = sortedLastIndexBy; - lodash.sortedLastIndexOf = sortedLastIndexOf; - lodash.startCase = startCase; - lodash.startsWith = startsWith; - lodash.subtract = subtract; - lodash.sum = sum; - lodash.sumBy = sumBy; - lodash.template = template; - lodash.times = times; - lodash.toFinite = toFinite; - lodash.toInteger = toInteger; - lodash.toLength = toLength; - lodash.toLower = toLower; - lodash.toNumber = toNumber; - lodash.toSafeInteger = toSafeInteger; - lodash.toString = toString; - lodash.toUpper = toUpper; - lodash.trim = trim; - lodash.trimEnd = trimEnd; - lodash.trimStart = trimStart; - lodash.truncate = truncate; - lodash.unescape = unescape; - lodash.uniqueId = uniqueId; - lodash.upperCase = upperCase; - lodash.upperFirst = upperFirst; - - // Add aliases. - lodash.each = forEach; - lodash.eachRight = forEachRight; - lodash.first = head; - - mixin(lodash, (function() { - var source = {}; - baseForOwn(lodash, function(func, methodName) { - if (!hasOwnProperty.call(lodash.prototype, methodName)) { - source[methodName] = func; - } - }); - return source; - }()), { 'chain': false }); - - /*------------------------------------------------------------------------*/ - - /** - * The semantic version number. - * - * @static - * @memberOf _ - * @type {string} - */ - lodash.VERSION = VERSION; - - // Assign default placeholders. - arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) { - lodash[methodName].placeholder = lodash; - }); - - // Add `LazyWrapper` methods for `_.drop` and `_.take` variants. - arrayEach(['drop', 'take'], function(methodName, index) { - LazyWrapper.prototype[methodName] = function(n) { - n = n === undefined$1 ? 1 : nativeMax(toInteger(n), 0); - - var result = (this.__filtered__ && !index) - ? new LazyWrapper(this) - : this.clone(); - - if (result.__filtered__) { - result.__takeCount__ = nativeMin(n, result.__takeCount__); - } else { - result.__views__.push({ - 'size': nativeMin(n, MAX_ARRAY_LENGTH), - 'type': methodName + (result.__dir__ < 0 ? 'Right' : '') - }); - } - return result; - }; - - LazyWrapper.prototype[methodName + 'Right'] = function(n) { - return this.reverse()[methodName](n).reverse(); - }; - }); - - // Add `LazyWrapper` methods that accept an `iteratee` value. - arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) { - var type = index + 1, - isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG; - - LazyWrapper.prototype[methodName] = function(iteratee) { - var result = this.clone(); - result.__iteratees__.push({ - 'iteratee': getIteratee(iteratee, 3), - 'type': type - }); - result.__filtered__ = result.__filtered__ || isFilter; - return result; - }; - }); - - // Add `LazyWrapper` methods for `_.head` and `_.last`. - arrayEach(['head', 'last'], function(methodName, index) { - var takeName = 'take' + (index ? 'Right' : ''); - - LazyWrapper.prototype[methodName] = function() { - return this[takeName](1).value()[0]; - }; - }); - - // Add `LazyWrapper` methods for `_.initial` and `_.tail`. - arrayEach(['initial', 'tail'], function(methodName, index) { - var dropName = 'drop' + (index ? '' : 'Right'); - - LazyWrapper.prototype[methodName] = function() { - return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1); - }; - }); - - LazyWrapper.prototype.compact = function() { - return this.filter(identity); - }; - - LazyWrapper.prototype.find = function(predicate) { - return this.filter(predicate).head(); - }; - - LazyWrapper.prototype.findLast = function(predicate) { - return this.reverse().find(predicate); - }; - - LazyWrapper.prototype.invokeMap = baseRest(function(path, args) { - if (typeof path == 'function') { - return new LazyWrapper(this); - } - return this.map(function(value) { - return baseInvoke(value, path, args); - }); - }); - - LazyWrapper.prototype.reject = function(predicate) { - return this.filter(negate(getIteratee(predicate))); - }; - - LazyWrapper.prototype.slice = function(start, end) { - start = toInteger(start); - - var result = this; - if (result.__filtered__ && (start > 0 || end < 0)) { - return new LazyWrapper(result); - } - if (start < 0) { - result = result.takeRight(-start); - } else if (start) { - result = result.drop(start); - } - if (end !== undefined$1) { - end = toInteger(end); - result = end < 0 ? result.dropRight(-end) : result.take(end - start); - } - return result; - }; - - LazyWrapper.prototype.takeRightWhile = function(predicate) { - return this.reverse().takeWhile(predicate).reverse(); - }; - - LazyWrapper.prototype.toArray = function() { - return this.take(MAX_ARRAY_LENGTH); - }; - - // Add `LazyWrapper` methods to `lodash.prototype`. - baseForOwn(LazyWrapper.prototype, function(func, methodName) { - var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName), - isTaker = /^(?:head|last)$/.test(methodName), - lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName], - retUnwrapped = isTaker || /^find/.test(methodName); - - if (!lodashFunc) { - return; - } - lodash.prototype[methodName] = function() { - var value = this.__wrapped__, - args = isTaker ? [1] : arguments, - isLazy = value instanceof LazyWrapper, - iteratee = args[0], - useLazy = isLazy || isArray(value); - - var interceptor = function(value) { - var result = lodashFunc.apply(lodash, arrayPush([value], args)); - return (isTaker && chainAll) ? result[0] : result; - }; - - if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) { - // Avoid lazy use if the iteratee has a "length" value other than `1`. - isLazy = useLazy = false; - } - var chainAll = this.__chain__, - isHybrid = !!this.__actions__.length, - isUnwrapped = retUnwrapped && !chainAll, - onlyLazy = isLazy && !isHybrid; - - if (!retUnwrapped && useLazy) { - value = onlyLazy ? value : new LazyWrapper(this); - var result = func.apply(value, args); - result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined$1 }); - return new LodashWrapper(result, chainAll); - } - if (isUnwrapped && onlyLazy) { - return func.apply(this, args); - } - result = this.thru(interceptor); - return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result; - }; - }); - - // Add `Array` methods to `lodash.prototype`. - arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) { - var func = arrayProto[methodName], - chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru', - retUnwrapped = /^(?:pop|shift)$/.test(methodName); - - lodash.prototype[methodName] = function() { - var args = arguments; - if (retUnwrapped && !this.__chain__) { - var value = this.value(); - return func.apply(isArray(value) ? value : [], args); - } - return this[chainName](function(value) { - return func.apply(isArray(value) ? value : [], args); - }); - }; - }); - - // Map minified method names to their real names. - baseForOwn(LazyWrapper.prototype, function(func, methodName) { - var lodashFunc = lodash[methodName]; - if (lodashFunc) { - var key = lodashFunc.name + ''; - if (!hasOwnProperty.call(realNames, key)) { - realNames[key] = []; - } - realNames[key].push({ 'name': methodName, 'func': lodashFunc }); - } - }); - - realNames[createHybrid(undefined$1, WRAP_BIND_KEY_FLAG).name] = [{ - 'name': 'wrapper', - 'func': undefined$1 - }]; - - // Add methods to `LazyWrapper`. - LazyWrapper.prototype.clone = lazyClone; - LazyWrapper.prototype.reverse = lazyReverse; - LazyWrapper.prototype.value = lazyValue; - - // Add chain sequence methods to the `lodash` wrapper. - lodash.prototype.at = wrapperAt; - lodash.prototype.chain = wrapperChain; - lodash.prototype.commit = wrapperCommit; - lodash.prototype.next = wrapperNext; - lodash.prototype.plant = wrapperPlant; - lodash.prototype.reverse = wrapperReverse; - lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue; - - // Add lazy aliases. - lodash.prototype.first = lodash.prototype.head; - - if (symIterator) { - lodash.prototype[symIterator] = wrapperToIterator; - } - return lodash; - }); - - /*--------------------------------------------------------------------------*/ - - // Export lodash. - var _ = runInContext(); - - // Some AMD build optimizers, like r.js, check for condition patterns like: - if (freeModule) { - // Export for Node.js. - (freeModule.exports = _)._ = _; - // Export for CommonJS support. - freeExports._ = _; - } - else { - // Export to the global object. - root._ = _; - } -}.call(commonjsGlobal)); -}); - -var results = createCommonjsModule(function (module, exports) { -var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Value = exports.Arity = exports.FloatOrMilliseconds = void 0; -const decimal_js_1 = __importDefault(decimal); - -const datetimeRe = new RegExp('[1-9][0-9]{3}-[01][0-9]-[0-3][0-9][T ][0-2][0-9]:[0-5][0-9]'); -const FloatOrMilliseconds = (value) => { - const v = value.trim(); - if (v === '') { - return new decimal_js_1.default(0); - } - if (datetimeRe.test(v)) { - return new decimal_js_1.default(new Date(v).valueOf()); - } - const decimalValue = new decimal_js_1.default(v); - return decimalValue.isNaN() ? new decimal_js_1.default(0) : decimalValue; -}; -exports.FloatOrMilliseconds = FloatOrMilliseconds; -class Arity { - constructor(rows, columns) { - this.isRow = () => this.rows > 1 && this.cols === 1; - this.isColumn = () => this.rows === 1 && this.cols > 1; - this.isCell = () => this.rows === 1 && this.cols === 1; - this.rows = rows; - this.cols = columns; - } + /** Used as a safe reference for `undefined` in pre-ES5 environments. */ + var undefined$1; + + /** Used as the semantic version number. */ + var VERSION = '4.17.21'; + + /** Used as the size to enable large array optimizations. */ + var LARGE_ARRAY_SIZE = 200; + + /** Error message constants. */ + var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.', + FUNC_ERROR_TEXT = 'Expected a function', + INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`'; + + /** Used to stand-in for `undefined` hash values. */ + var HASH_UNDEFINED = '__lodash_hash_undefined__'; + + /** Used as the maximum memoize cache size. */ + var MAX_MEMOIZE_SIZE = 500; + + /** Used as the internal argument placeholder. */ + var PLACEHOLDER = '__lodash_placeholder__'; + + /** Used to compose bitmasks for cloning. */ + var CLONE_DEEP_FLAG = 1, + CLONE_FLAT_FLAG = 2, + CLONE_SYMBOLS_FLAG = 4; + + /** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + + /** Used to compose bitmasks for function metadata. */ + var WRAP_BIND_FLAG = 1, + WRAP_BIND_KEY_FLAG = 2, + WRAP_CURRY_BOUND_FLAG = 4, + WRAP_CURRY_FLAG = 8, + WRAP_CURRY_RIGHT_FLAG = 16, + WRAP_PARTIAL_FLAG = 32, + WRAP_PARTIAL_RIGHT_FLAG = 64, + WRAP_ARY_FLAG = 128, + WRAP_REARG_FLAG = 256, + WRAP_FLIP_FLAG = 512; + + /** Used as default options for `_.truncate`. */ + var DEFAULT_TRUNC_LENGTH = 30, + DEFAULT_TRUNC_OMISSION = '...'; + + /** Used to detect hot functions by number of calls within a span of milliseconds. */ + var HOT_COUNT = 800, + HOT_SPAN = 16; + + /** Used to indicate the type of lazy iteratees. */ + var LAZY_FILTER_FLAG = 1, + LAZY_MAP_FLAG = 2, + LAZY_WHILE_FLAG = 3; + + /** Used as references for various `Number` constants. */ + var INFINITY = 1 / 0, + MAX_SAFE_INTEGER = 9007199254740991, + MAX_INTEGER = 1.7976931348623157e+308, + NAN = 0 / 0; + + /** Used as references for the maximum length and index of an array. */ + var MAX_ARRAY_LENGTH = 4294967295, + MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, + HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; + + /** Used to associate wrap methods with their bit flags. */ + var wrapFlags = [ + ['ary', WRAP_ARY_FLAG], + ['bind', WRAP_BIND_FLAG], + ['bindKey', WRAP_BIND_KEY_FLAG], + ['curry', WRAP_CURRY_FLAG], + ['curryRight', WRAP_CURRY_RIGHT_FLAG], + ['flip', WRAP_FLIP_FLAG], + ['partial', WRAP_PARTIAL_FLAG], + ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], + ['rearg', WRAP_REARG_FLAG] + ]; + + /** `Object#toString` result references. */ + var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + asyncTag = '[object AsyncFunction]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + domExcTag = '[object DOMException]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + nullTag = '[object Null]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + proxyTag = '[object Proxy]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]', + undefinedTag = '[object Undefined]', + weakMapTag = '[object WeakMap]', + weakSetTag = '[object WeakSet]'; + + var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + + /** Used to match empty string literals in compiled template source. */ + var reEmptyStringLeading = /\b__p \+= '';/g, + reEmptyStringMiddle = /\b(__p \+=) '' \+/g, + reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; + + /** Used to match HTML entities and HTML characters. */ + var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, + reUnescapedHtml = /[&<>"']/g, + reHasEscapedHtml = RegExp(reEscapedHtml.source), + reHasUnescapedHtml = RegExp(reUnescapedHtml.source); + + /** Used to match template delimiters. */ + var reEscape = /<%-([\s\S]+?)%>/g, + reEvaluate = /<%([\s\S]+?)%>/g, + reInterpolate = /<%=([\s\S]+?)%>/g; + + /** Used to match property names within property paths. */ + var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/, + rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + + /** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, + reHasRegExpChar = RegExp(reRegExpChar.source); + + /** Used to match leading whitespace. */ + var reTrimStart = /^\s+/; + + /** Used to match a single whitespace character. */ + var reWhitespace = /\s/; + + /** Used to match wrap detail comments. */ + var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, + reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, + reSplitDetails = /,? & /; + + /** Used to match words composed of alphanumeric characters. */ + var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; + + /** + * Used to validate the `validate` option in `_.template` variable. + * + * Forbids characters which could potentially change the meaning of the function argument definition: + * - "()," (modification of function parameters) + * - "=" (default value) + * - "[]{}" (destructuring of function parameters) + * - "/" (beginning of a comment) + * - whitespace + */ + var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/; + + /** Used to match backslashes in property paths. */ + var reEscapeChar = /\\(\\)?/g; + + /** + * Used to match + * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components). + */ + var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; + + /** Used to match `RegExp` flags from their coerced string values. */ + var reFlags = /\w*$/; + + /** Used to detect bad signed hexadecimal string values. */ + var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + + /** Used to detect binary string values. */ + var reIsBinary = /^0b[01]+$/i; + + /** Used to detect host constructors (Safari). */ + var reIsHostCtor = /^\[object .+?Constructor\]$/; + + /** Used to detect octal string values. */ + var reIsOctal = /^0o[0-7]+$/i; + + /** Used to detect unsigned integer values. */ + var reIsUint = /^(?:0|[1-9]\d*)$/; + + /** Used to match Latin Unicode letters (excluding mathematical operators). */ + var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; + + /** Used to ensure capturing order of template delimiters. */ + var reNoMatch = /($^)/; + + /** Used to match unescaped characters in compiled string literals. */ + var reUnescapedString = /['\n\r\u2028\u2029\\]/g; + + /** Used to compose unicode character classes. */ + var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsDingbatRange = '\\u2700-\\u27bf', + rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', + rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', + rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', + rsPunctuationRange = '\\u2000-\\u206f', + rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', + rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', + rsVarRange = '\\ufe0e\\ufe0f', + rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; + + /** Used to compose unicode capture groups. */ + var rsApos = "['\u2019]", + rsAstral = '[' + rsAstralRange + ']', + rsBreak = '[' + rsBreakRange + ']', + rsCombo = '[' + rsComboRange + ']', + rsDigits = '\\d+', + rsDingbat = '[' + rsDingbatRange + ']', + rsLower = '[' + rsLowerRange + ']', + rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', + rsFitz = '\\ud83c[\\udffb-\\udfff]', + rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', + rsNonAstral = '[^' + rsAstralRange + ']', + rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', + rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', + rsUpper = '[' + rsUpperRange + ']', + rsZWJ = '\\u200d'; + + /** Used to compose unicode regexes. */ + var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')', + rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')', + rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?', + rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?', + reOptMod = rsModifier + '?', + rsOptVar = '[' + rsVarRange + ']?', + rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', + rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])', + rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])', + rsSeq = rsOptVar + reOptMod + rsOptJoin, + rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq, + rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; + + /** Used to match apostrophes. */ + var reApos = RegExp(rsApos, 'g'); + + /** + * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and + * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). + */ + var reComboMark = RegExp(rsCombo, 'g'); + + /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ + var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); + + /** Used to match complex or compound words. */ + var reUnicodeWord = RegExp([ + rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', + rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', + rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, + rsUpper + '+' + rsOptContrUpper, + rsOrdUpper, + rsOrdLower, + rsDigits, + rsEmoji + ].join('|'), 'g'); + + /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ + var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); + + /** Used to detect strings that need a more robust regexp to match words. */ + var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; + + /** Used to assign default `context` object properties. */ + var contextProps = [ + 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array', + 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object', + 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array', + 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', + '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout' + ]; + + /** Used to make template sourceURLs easier to identify. */ + var templateCounter = -1; + + /** Used to identify `toStringTag` values of typed arrays. */ + var typedArrayTags = {}; + typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = + typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = + typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = + typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = + typedArrayTags[uint32Tag] = true; + typedArrayTags[argsTag] = typedArrayTags[arrayTag] = + typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = + typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = + typedArrayTags[errorTag] = typedArrayTags[funcTag] = + typedArrayTags[mapTag] = typedArrayTags[numberTag] = + typedArrayTags[objectTag] = typedArrayTags[regexpTag] = + typedArrayTags[setTag] = typedArrayTags[stringTag] = + typedArrayTags[weakMapTag] = false; + + /** Used to identify `toStringTag` values supported by `_.clone`. */ + var cloneableTags = {}; + cloneableTags[argsTag] = cloneableTags[arrayTag] = + cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = + cloneableTags[boolTag] = cloneableTags[dateTag] = + cloneableTags[float32Tag] = cloneableTags[float64Tag] = + cloneableTags[int8Tag] = cloneableTags[int16Tag] = + cloneableTags[int32Tag] = cloneableTags[mapTag] = + cloneableTags[numberTag] = cloneableTags[objectTag] = + cloneableTags[regexpTag] = cloneableTags[setTag] = + cloneableTags[stringTag] = cloneableTags[symbolTag] = + cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = + cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; + cloneableTags[errorTag] = cloneableTags[funcTag] = + cloneableTags[weakMapTag] = false; + + /** Used to map Latin Unicode letters to basic Latin letters. */ + var deburredLetters = { + // Latin-1 Supplement block. + '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', + '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', + '\xc7': 'C', '\xe7': 'c', + '\xd0': 'D', '\xf0': 'd', + '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', + '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', + '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', + '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', + '\xd1': 'N', '\xf1': 'n', + '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', + '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', + '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', + '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', + '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', + '\xc6': 'Ae', '\xe6': 'ae', + '\xde': 'Th', '\xfe': 'th', + '\xdf': 'ss', + // Latin Extended-A block. + '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', + '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', + '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', + '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', + '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', + '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', + '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', + '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', + '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', + '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', + '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', + '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', + '\u0134': 'J', '\u0135': 'j', + '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', + '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', + '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', + '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', + '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', + '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', + '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', + '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', + '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', + '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', + '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', + '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', + '\u0163': 't', '\u0165': 't', '\u0167': 't', + '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', + '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', + '\u0174': 'W', '\u0175': 'w', + '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', + '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', + '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', + '\u0132': 'IJ', '\u0133': 'ij', + '\u0152': 'Oe', '\u0153': 'oe', + '\u0149': "'n", '\u017f': 's' + }; + + /** Used to map characters to HTML entities. */ + var htmlEscapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' + }; + + /** Used to map HTML entities to characters. */ + var htmlUnescapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + ''': "'" + }; + + /** Used to escape characters for inclusion in compiled string literals. */ + var stringEscapes = { + '\\': '\\', + "'": "'", + '\n': 'n', + '\r': 'r', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + /** Built-in method references without a dependency on `root`. */ + var freeParseFloat = parseFloat, + freeParseInt = parseInt; + + /** Detect free variable `global` from Node.js. */ + var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; + + /** Detect free variable `self`. */ + var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + + /** Used as a reference to the global object. */ + var root = freeGlobal || freeSelf || Function('return this')(); + + /** Detect free variable `exports`. */ + var freeExports = exports && !exports.nodeType && exports; + + /** Detect free variable `module`. */ + var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module; + + /** Detect the popular CommonJS extension `module.exports`. */ + var moduleExports = freeModule && freeModule.exports === freeExports; + + /** Detect free variable `process` from Node.js. */ + var freeProcess = moduleExports && freeGlobal.process; + + /** Used to access faster Node.js helpers. */ + var nodeUtil = (function() { + try { + // Use `util.types` for Node.js 10+. + var types = freeModule && freeModule.require && freeModule.require('util').types; + + if (types) { + return types; + } + + // Legacy `process.binding('util')` for Node.js < 10. + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} + }()); + + /* Node.js helper references. */ + var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, + nodeIsDate = nodeUtil && nodeUtil.isDate, + nodeIsMap = nodeUtil && nodeUtil.isMap, + nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, + nodeIsSet = nodeUtil && nodeUtil.isSet, + nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + + /*--------------------------------------------------------------------------*/ + + /** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ + function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); + } + + /** + * A specialized version of `baseAggregator` for arrays. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */ + function arrayAggregator(array, setter, iteratee, accumulator) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + var value = array[index]; + setter(accumulator, value, iteratee(value), array); + } + return accumulator; + } + + /** + * A specialized version of `_.forEach` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEach(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; + } + + /** + * A specialized version of `_.forEachRight` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEachRight(array, iteratee) { + var length = array == null ? 0 : array.length; + + while (length--) { + if (iteratee(array[length], length, array) === false) { + break; + } + } + return array; + } + + /** + * A specialized version of `_.every` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + */ + function arrayEvery(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (!predicate(array[index], index, array)) { + return false; + } + } + return true; + } + + /** + * A specialized version of `_.filter` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function arrayFilter(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[resIndex++] = value; + } + } + return result; + } + + /** + * A specialized version of `_.includes` for arrays without support for + * specifying an index to search from. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ + function arrayIncludes(array, value) { + var length = array == null ? 0 : array.length; + return !!length && baseIndexOf(array, value, 0) > -1; + } + + /** + * This function is like `arrayIncludes` except that it accepts a comparator. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @param {Function} comparator The comparator invoked per element. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ + function arrayIncludesWith(array, value, comparator) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (comparator(value, array[index])) { + return true; + } + } + return false; + } + + /** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function arrayMap(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; + } + + /** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ + function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; + } + + /** + * A specialized version of `_.reduce` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the first element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduce(array, iteratee, accumulator, initAccum) { + var index = -1, + length = array == null ? 0 : array.length; + + if (initAccum && length) { + accumulator = array[++index]; + } + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; + } + + /** + * A specialized version of `_.reduceRight` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the last element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduceRight(array, iteratee, accumulator, initAccum) { + var length = array == null ? 0 : array.length; + if (initAccum && length) { + accumulator = array[--length]; + } + while (length--) { + accumulator = iteratee(accumulator, array[length], length, array); + } + return accumulator; + } + + /** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function arraySome(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; + } + + /** + * Gets the size of an ASCII `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ + var asciiSize = baseProperty('length'); + + /** + * Converts an ASCII `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function asciiToArray(string) { + return string.split(''); + } + + /** + * Splits an ASCII `string` into an array of its words. + * + * @private + * @param {string} The string to inspect. + * @returns {Array} Returns the words of `string`. + */ + function asciiWords(string) { + return string.match(reAsciiWord) || []; + } + + /** + * The base implementation of methods like `_.findKey` and `_.findLastKey`, + * without support for iteratee shorthands, which iterates over `collection` + * using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the found element or its key, else `undefined`. + */ + function baseFindKey(collection, predicate, eachFunc) { + var result; + eachFunc(collection, function(value, key, collection) { + if (predicate(value, key, collection)) { + result = key; + return false; + } + }); + return result; + } + + /** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 1 : -1); + + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; + } + + /** + * The base implementation of `_.indexOf` without `fromIndex` bounds checks. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseIndexOf(array, value, fromIndex) { + return value === value + ? strictIndexOf(array, value, fromIndex) + : baseFindIndex(array, baseIsNaN, fromIndex); + } + + /** + * This function is like `baseIndexOf` except that it accepts a comparator. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @param {Function} comparator The comparator invoked per element. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseIndexOfWith(array, value, fromIndex, comparator) { + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (comparator(array[index], value)) { + return index; + } + } + return -1; + } + + /** + * The base implementation of `_.isNaN` without support for number objects. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + */ + function baseIsNaN(value) { + return value !== value; + } + + /** + * The base implementation of `_.mean` and `_.meanBy` without support for + * iteratee shorthands. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {number} Returns the mean. + */ + function baseMean(array, iteratee) { + var length = array == null ? 0 : array.length; + return length ? (baseSum(array, iteratee) / length) : NAN; + } + + /** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ + function baseProperty(key) { + return function(object) { + return object == null ? undefined$1 : object[key]; + }; + } + + /** + * The base implementation of `_.propertyOf` without support for deep paths. + * + * @private + * @param {Object} object The object to query. + * @returns {Function} Returns the new accessor function. + */ + function basePropertyOf(object) { + return function(key) { + return object == null ? undefined$1 : object[key]; + }; + } + + /** + * The base implementation of `_.reduce` and `_.reduceRight`, without support + * for iteratee shorthands, which iterates over `collection` using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} accumulator The initial value. + * @param {boolean} initAccum Specify using the first or last element of + * `collection` as the initial value. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the accumulated value. + */ + function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { + eachFunc(collection, function(value, index, collection) { + accumulator = initAccum + ? (initAccum = false, value) + : iteratee(accumulator, value, index, collection); + }); + return accumulator; + } + + /** + * The base implementation of `_.sortBy` which uses `comparer` to define the + * sort order of `array` and replaces criteria objects with their corresponding + * values. + * + * @private + * @param {Array} array The array to sort. + * @param {Function} comparer The function to define sort order. + * @returns {Array} Returns `array`. + */ + function baseSortBy(array, comparer) { + var length = array.length; + + array.sort(comparer); + while (length--) { + array[length] = array[length].value; + } + return array; + } + + /** + * The base implementation of `_.sum` and `_.sumBy` without support for + * iteratee shorthands. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {number} Returns the sum. + */ + function baseSum(array, iteratee) { + var result, + index = -1, + length = array.length; + + while (++index < length) { + var current = iteratee(array[index]); + if (current !== undefined$1) { + result = result === undefined$1 ? current : (result + current); + } + } + return result; + } + + /** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ + function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; + } + + /** + * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array + * of key-value pairs for `object` corresponding to the property names of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the key-value pairs. + */ + function baseToPairs(object, props) { + return arrayMap(props, function(key) { + return [key, object[key]]; + }); + } + + /** + * The base implementation of `_.trim`. + * + * @private + * @param {string} string The string to trim. + * @returns {string} Returns the trimmed string. + */ + function baseTrim(string) { + return string + ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '') + : string; + } + + /** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ + function baseUnary(func) { + return function(value) { + return func(value); + }; + } + + /** + * The base implementation of `_.values` and `_.valuesIn` which creates an + * array of `object` property values corresponding to the property names + * of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the array of property values. + */ + function baseValues(object, props) { + return arrayMap(props, function(key) { + return object[key]; + }); + } + + /** + * Checks if a `cache` value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function cacheHas(cache, key) { + return cache.has(key); + } + + /** + * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the first unmatched string symbol. + */ + function charsStartIndex(strSymbols, chrSymbols) { + var index = -1, + length = strSymbols.length; + + while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} + return index; + } + + /** + * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the last unmatched string symbol. + */ + function charsEndIndex(strSymbols, chrSymbols) { + var index = strSymbols.length; + + while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} + return index; + } + + /** + * Gets the number of `placeholder` occurrences in `array`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} placeholder The placeholder to search for. + * @returns {number} Returns the placeholder count. + */ + function countHolders(array, placeholder) { + var length = array.length, + result = 0; + + while (length--) { + if (array[length] === placeholder) { + ++result; + } + } + return result; + } + + /** + * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A + * letters to basic Latin letters. + * + * @private + * @param {string} letter The matched letter to deburr. + * @returns {string} Returns the deburred letter. + */ + var deburrLetter = basePropertyOf(deburredLetters); + + /** + * Used by `_.escape` to convert characters to HTML entities. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ + var escapeHtmlChar = basePropertyOf(htmlEscapes); + + /** + * Used by `_.template` to escape characters for inclusion in compiled string literals. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ + function escapeStringChar(chr) { + return '\\' + stringEscapes[chr]; + } + + /** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ + function getValue(object, key) { + return object == null ? undefined$1 : object[key]; + } + + /** + * Checks if `string` contains Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a symbol is found, else `false`. + */ + function hasUnicode(string) { + return reHasUnicode.test(string); + } + + /** + * Checks if `string` contains a word composed of Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a word is found, else `false`. + */ + function hasUnicodeWord(string) { + return reHasUnicodeWord.test(string); + } + + /** + * Converts `iterator` to an array. + * + * @private + * @param {Object} iterator The iterator to convert. + * @returns {Array} Returns the converted array. + */ + function iteratorToArray(iterator) { + var data, + result = []; + + while (!(data = iterator.next()).done) { + result.push(data.value); + } + return result; + } + + /** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ + function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; + } + + /** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ + function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; + } + + /** + * Replaces all `placeholder` elements in `array` with an internal placeholder + * and returns an array of their indexes. + * + * @private + * @param {Array} array The array to modify. + * @param {*} placeholder The placeholder to replace. + * @returns {Array} Returns the new array of placeholder indexes. + */ + function replaceHolders(array, placeholder) { + var index = -1, + length = array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (value === placeholder || value === PLACEHOLDER) { + array[index] = PLACEHOLDER; + result[resIndex++] = index; + } + } + return result; + } + + /** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ + function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; + } + + /** + * Converts `set` to its value-value pairs. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the value-value pairs. + */ + function setToPairs(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = [value, value]; + }); + return result; + } + + /** + * A specialized version of `_.indexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function strictIndexOf(array, value, fromIndex) { + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; + } + + /** + * A specialized version of `_.lastIndexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function strictLastIndexOf(array, value, fromIndex) { + var index = fromIndex + 1; + while (index--) { + if (array[index] === value) { + return index; + } + } + return index; + } + + /** + * Gets the number of symbols in `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the string size. + */ + function stringSize(string) { + return hasUnicode(string) + ? unicodeSize(string) + : asciiSize(string); + } + + /** + * Converts `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function stringToArray(string) { + return hasUnicode(string) + ? unicodeToArray(string) + : asciiToArray(string); + } + + /** + * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace + * character of `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the index of the last non-whitespace character. + */ + function trimmedEndIndex(string) { + var index = string.length; + + while (index-- && reWhitespace.test(string.charAt(index))) {} + return index; + } + + /** + * Used by `_.unescape` to convert HTML entities to characters. + * + * @private + * @param {string} chr The matched character to unescape. + * @returns {string} Returns the unescaped character. + */ + var unescapeHtmlChar = basePropertyOf(htmlUnescapes); + + /** + * Gets the size of a Unicode `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ + function unicodeSize(string) { + var result = reUnicode.lastIndex = 0; + while (reUnicode.test(string)) { + ++result; + } + return result; + } + + /** + * Converts a Unicode `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function unicodeToArray(string) { + return string.match(reUnicode) || []; + } + + /** + * Splits a Unicode `string` into an array of its words. + * + * @private + * @param {string} The string to inspect. + * @returns {Array} Returns the words of `string`. + */ + function unicodeWords(string) { + return string.match(reUnicodeWord) || []; + } + + /*--------------------------------------------------------------------------*/ + + /** + * Create a new pristine `lodash` function using the `context` object. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Util + * @param {Object} [context=root] The context object. + * @returns {Function} Returns a new `lodash` function. + * @example + * + * _.mixin({ 'foo': _.constant('foo') }); + * + * var lodash = _.runInContext(); + * lodash.mixin({ 'bar': lodash.constant('bar') }); + * + * _.isFunction(_.foo); + * // => true + * _.isFunction(_.bar); + * // => false + * + * lodash.isFunction(lodash.foo); + * // => false + * lodash.isFunction(lodash.bar); + * // => true + * + * // Create a suped-up `defer` in Node.js. + * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer; + */ + var runInContext = (function runInContext(context) { + context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps)); + + /** Built-in constructor references. */ + var Array = context.Array, + Date = context.Date, + Error = context.Error, + Function = context.Function, + Math = context.Math, + Object = context.Object, + RegExp = context.RegExp, + String = context.String, + TypeError = context.TypeError; + + /** Used for built-in method references. */ + var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; + + /** Used to detect overreaching core-js shims. */ + var coreJsData = context['__core-js_shared__']; + + /** Used to resolve the decompiled source of functions. */ + var funcToString = funcProto.toString; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** Used to generate unique IDs. */ + var idCounter = 0; + + /** Used to detect methods masquerading as native. */ + var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; + }()); + + /** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ + var nativeObjectToString = objectProto.toString; + + /** Used to infer the `Object` constructor. */ + var objectCtorString = funcToString.call(Object); + + /** Used to restore the original `_` reference in `_.noConflict`. */ + var oldDash = root._; + + /** Used to detect if a method is native. */ + var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' + ); + + /** Built-in value references. */ + var Buffer = moduleExports ? context.Buffer : undefined$1, + Symbol = context.Symbol, + Uint8Array = context.Uint8Array, + allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined$1, + getPrototype = overArg(Object.getPrototypeOf, Object), + objectCreate = Object.create, + propertyIsEnumerable = objectProto.propertyIsEnumerable, + splice = arrayProto.splice, + spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined$1, + symIterator = Symbol ? Symbol.iterator : undefined$1, + symToStringTag = Symbol ? Symbol.toStringTag : undefined$1; + + var defineProperty = (function() { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} + }()); + + /** Mocked built-ins. */ + var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, + ctxNow = Date && Date.now !== root.Date.now && Date.now, + ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; + + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeCeil = Math.ceil, + nativeFloor = Math.floor, + nativeGetSymbols = Object.getOwnPropertySymbols, + nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined$1, + nativeIsFinite = context.isFinite, + nativeJoin = arrayProto.join, + nativeKeys = overArg(Object.keys, Object), + nativeMax = Math.max, + nativeMin = Math.min, + nativeNow = Date.now, + nativeParseInt = context.parseInt, + nativeRandom = Math.random, + nativeReverse = arrayProto.reverse; + + /* Built-in method references that are verified to be native. */ + var DataView = getNative(context, 'DataView'), + Map = getNative(context, 'Map'), + Promise = getNative(context, 'Promise'), + Set = getNative(context, 'Set'), + WeakMap = getNative(context, 'WeakMap'), + nativeCreate = getNative(Object, 'create'); + + /** Used to store function metadata. */ + var metaMap = WeakMap && new WeakMap; + + /** Used to lookup unminified function names. */ + var realNames = {}; + + /** Used to detect maps, sets, and weakmaps. */ + var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); + + /** Used to convert symbols to primitives and strings. */ + var symbolProto = Symbol ? Symbol.prototype : undefined$1, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined$1, + symbolToString = symbolProto ? symbolProto.toString : undefined$1; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a `lodash` object which wraps `value` to enable implicit method + * chain sequences. Methods that operate on and return arrays, collections, + * and functions can be chained together. Methods that retrieve a single value + * or may return a primitive value will automatically end the chain sequence + * and return the unwrapped value. Otherwise, the value must be unwrapped + * with `_#value`. + * + * Explicit chain sequences, which must be unwrapped with `_#value`, may be + * enabled using `_.chain`. + * + * The execution of chained methods is lazy, that is, it's deferred until + * `_#value` is implicitly or explicitly called. + * + * Lazy evaluation allows several methods to support shortcut fusion. + * Shortcut fusion is an optimization to merge iteratee calls; this avoids + * the creation of intermediate arrays and can greatly reduce the number of + * iteratee executions. Sections of a chain sequence qualify for shortcut + * fusion if the section is applied to an array and iteratees accept only + * one argument. The heuristic for whether a section qualifies for shortcut + * fusion is subject to change. + * + * Chaining is supported in custom builds as long as the `_#value` method is + * directly or indirectly included in the build. + * + * In addition to lodash methods, wrappers have `Array` and `String` methods. + * + * The wrapper `Array` methods are: + * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift` + * + * The wrapper `String` methods are: + * `replace` and `split` + * + * The wrapper methods that support shortcut fusion are: + * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`, + * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`, + * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray` + * + * The chainable wrapper methods are: + * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`, + * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`, + * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, + * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`, + * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`, + * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`, + * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`, + * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`, + * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`, + * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`, + * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`, + * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`, + * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`, + * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`, + * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`, + * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`, + * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`, + * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`, + * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`, + * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`, + * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`, + * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`, + * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, + * `zipObject`, `zipObjectDeep`, and `zipWith` + * + * The wrapper methods that are **not** chainable by default are: + * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`, + * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`, + * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`, + * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`, + * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`, + * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, + * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, + * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, + * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, + * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, + * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, + * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, + * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`, + * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`, + * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, + * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`, + * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, + * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`, + * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`, + * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`, + * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`, + * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`, + * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, + * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, + * `upperFirst`, `value`, and `words` + * + * @name _ + * @constructor + * @category Seq + * @param {*} value The value to wrap in a `lodash` instance. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var wrapped = _([1, 2, 3]); + * + * // Returns an unwrapped value. + * wrapped.reduce(_.add); + * // => 6 + * + * // Returns a wrapped value. + * var squares = wrapped.map(square); + * + * _.isArray(squares); + * // => false + * + * _.isArray(squares.value()); + * // => true + */ + function lodash(value) { + if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { + if (value instanceof LodashWrapper) { + return value; + } + if (hasOwnProperty.call(value, '__wrapped__')) { + return wrapperClone(value); + } + } + return new LodashWrapper(value); + } + + /** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} proto The object to inherit from. + * @returns {Object} Returns the new object. + */ + var baseCreate = (function() { + function object() {} + return function(proto) { + if (!isObject(proto)) { + return {}; + } + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result = new object; + object.prototype = undefined$1; + return result; + }; + }()); + + /** + * The function whose prototype chain sequence wrappers inherit from. + * + * @private + */ + function baseLodash() { + // No operation performed. + } + + /** + * The base constructor for creating `lodash` wrapper objects. + * + * @private + * @param {*} value The value to wrap. + * @param {boolean} [chainAll] Enable explicit method chain sequences. + */ + function LodashWrapper(value, chainAll) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__chain__ = !!chainAll; + this.__index__ = 0; + this.__values__ = undefined$1; + } + + /** + * By default, the template delimiters used by lodash are like those in + * embedded Ruby (ERB) as well as ES2015 template strings. Change the + * following template settings to use alternative delimiters. + * + * @static + * @memberOf _ + * @type {Object} + */ + lodash.templateSettings = { + + /** + * Used to detect `data` property values to be HTML-escaped. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'escape': reEscape, + + /** + * Used to detect code to be evaluated. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'evaluate': reEvaluate, + + /** + * Used to detect `data` property values to inject. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'interpolate': reInterpolate, + + /** + * Used to reference the data object in the template text. + * + * @memberOf _.templateSettings + * @type {string} + */ + 'variable': '', + + /** + * Used to import variables into the compiled template. + * + * @memberOf _.templateSettings + * @type {Object} + */ + 'imports': { + + /** + * A reference to the `lodash` function. + * + * @memberOf _.templateSettings.imports + * @type {Function} + */ + '_': lodash + } + }; + + // Ensure wrappers are instances of `baseLodash`. + lodash.prototype = baseLodash.prototype; + lodash.prototype.constructor = lodash; + + LodashWrapper.prototype = baseCreate(baseLodash.prototype); + LodashWrapper.prototype.constructor = LodashWrapper; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. + * + * @private + * @constructor + * @param {*} value The value to wrap. + */ + function LazyWrapper(value) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__dir__ = 1; + this.__filtered__ = false; + this.__iteratees__ = []; + this.__takeCount__ = MAX_ARRAY_LENGTH; + this.__views__ = []; + } + + /** + * Creates a clone of the lazy wrapper object. + * + * @private + * @name clone + * @memberOf LazyWrapper + * @returns {Object} Returns the cloned `LazyWrapper` object. + */ + function lazyClone() { + var result = new LazyWrapper(this.__wrapped__); + result.__actions__ = copyArray(this.__actions__); + result.__dir__ = this.__dir__; + result.__filtered__ = this.__filtered__; + result.__iteratees__ = copyArray(this.__iteratees__); + result.__takeCount__ = this.__takeCount__; + result.__views__ = copyArray(this.__views__); + return result; + } + + /** + * Reverses the direction of lazy iteration. + * + * @private + * @name reverse + * @memberOf LazyWrapper + * @returns {Object} Returns the new reversed `LazyWrapper` object. + */ + function lazyReverse() { + if (this.__filtered__) { + var result = new LazyWrapper(this); + result.__dir__ = -1; + result.__filtered__ = true; + } else { + result = this.clone(); + result.__dir__ *= -1; + } + return result; + } + + /** + * Extracts the unwrapped value from its lazy wrapper. + * + * @private + * @name value + * @memberOf LazyWrapper + * @returns {*} Returns the unwrapped value. + */ + function lazyValue() { + var array = this.__wrapped__.value(), + dir = this.__dir__, + isArr = isArray(array), + isRight = dir < 0, + arrLength = isArr ? array.length : 0, + view = getView(0, arrLength, this.__views__), + start = view.start, + end = view.end, + length = end - start, + index = isRight ? end : (start - 1), + iteratees = this.__iteratees__, + iterLength = iteratees.length, + resIndex = 0, + takeCount = nativeMin(length, this.__takeCount__); + + if (!isArr || (!isRight && arrLength == length && takeCount == length)) { + return baseWrapperValue(array, this.__actions__); + } + var result = []; + + outer: + while (length-- && resIndex < takeCount) { + index += dir; + + var iterIndex = -1, + value = array[index]; + + while (++iterIndex < iterLength) { + var data = iteratees[iterIndex], + iteratee = data.iteratee, + type = data.type, + computed = iteratee(value); + + if (type == LAZY_MAP_FLAG) { + value = computed; + } else if (!computed) { + if (type == LAZY_FILTER_FLAG) { + continue outer; + } else { + break outer; + } + } + } + result[resIndex++] = value; + } + return result; + } + + // Ensure `LazyWrapper` is an instance of `baseLodash`. + LazyWrapper.prototype = baseCreate(baseLodash.prototype); + LazyWrapper.prototype.constructor = LazyWrapper; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function Hash(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ + function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; + } + + /** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; + } + + /** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined$1 : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined$1; + } + + /** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function hashHas(key) { + var data = this.__data__; + return nativeCreate ? (data[key] !== undefined$1) : hasOwnProperty.call(data, key); + } + + /** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ + function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = (nativeCreate && value === undefined$1) ? HASH_UNDEFINED : value; + return this; + } + + // Add methods to `Hash`. + Hash.prototype.clear = hashClear; + Hash.prototype['delete'] = hashDelete; + Hash.prototype.get = hashGet; + Hash.prototype.has = hashHas; + Hash.prototype.set = hashSet; + + /*------------------------------------------------------------------------*/ + + /** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function ListCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ + function listCacheClear() { + this.__data__ = []; + this.size = 0; + } + + /** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; + } + + /** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined$1 : data[index][1]; + } + + /** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; + } + + /** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ + function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; + } + + // Add methods to `ListCache`. + ListCache.prototype.clear = listCacheClear; + ListCache.prototype['delete'] = listCacheDelete; + ListCache.prototype.get = listCacheGet; + ListCache.prototype.has = listCacheHas; + ListCache.prototype.set = listCacheSet; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function MapCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ + function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; + } + + /** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function mapCacheDelete(key) { + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; + } + + /** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function mapCacheGet(key) { + return getMapData(this, key).get(key); + } + + /** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function mapCacheHas(key) { + return getMapData(this, key).has(key); + } + + /** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ + function mapCacheSet(key, value) { + var data = getMapData(this, key), + size = data.size; + + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; + } + + // Add methods to `MapCache`. + MapCache.prototype.clear = mapCacheClear; + MapCache.prototype['delete'] = mapCacheDelete; + MapCache.prototype.get = mapCacheGet; + MapCache.prototype.has = mapCacheHas; + MapCache.prototype.set = mapCacheSet; + + /*------------------------------------------------------------------------*/ + + /** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ + function SetCache(values) { + var index = -1, + length = values == null ? 0 : values.length; + + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } + } + + /** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ + function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; + } + + /** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ + function setCacheHas(value) { + return this.__data__.has(value); + } + + // Add methods to `SetCache`. + SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; + SetCache.prototype.has = setCacheHas; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function Stack(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; + } + + /** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ + function stackClear() { + this.__data__ = new ListCache; + this.size = 0; + } + + /** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function stackDelete(key) { + var data = this.__data__, + result = data['delete'](key); + + this.size = data.size; + return result; + } + + /** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function stackGet(key) { + return this.__data__.get(key); + } + + /** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function stackHas(key) { + return this.__data__.has(key); + } + + /** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ + function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new MapCache(pairs); + } + data.set(key, value); + this.size = data.size; + return this; + } + + // Add methods to `Stack`. + Stack.prototype.clear = stackClear; + Stack.prototype['delete'] = stackDelete; + Stack.prototype.get = stackGet; + Stack.prototype.has = stackHas; + Stack.prototype.set = stackSet; + + /*------------------------------------------------------------------------*/ + + /** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ + function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + isIndex(key, length) + ))) { + result.push(key); + } + } + return result; + } + + /** + * A specialized version of `_.sample` for arrays. + * + * @private + * @param {Array} array The array to sample. + * @returns {*} Returns the random element. + */ + function arraySample(array) { + var length = array.length; + return length ? array[baseRandom(0, length - 1)] : undefined$1; + } + + /** + * A specialized version of `_.sampleSize` for arrays. + * + * @private + * @param {Array} array The array to sample. + * @param {number} n The number of elements to sample. + * @returns {Array} Returns the random elements. + */ + function arraySampleSize(array, n) { + return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length)); + } + + /** + * A specialized version of `_.shuffle` for arrays. + * + * @private + * @param {Array} array The array to shuffle. + * @returns {Array} Returns the new shuffled array. + */ + function arrayShuffle(array) { + return shuffleSelf(copyArray(array)); + } + + /** + * This function is like `assignValue` except that it doesn't assign + * `undefined` values. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignMergeValue(object, key, value) { + if ((value !== undefined$1 && !eq(object[key], value)) || + (value === undefined$1 && !(key in object))) { + baseAssignValue(object, key, value); + } + } + + /** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined$1 && !(key in object))) { + baseAssignValue(object, key, value); + } + } + + /** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; + } + + /** + * Aggregates elements of `collection` on `accumulator` with keys transformed + * by `iteratee` and values set by `setter`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */ + function baseAggregator(collection, setter, iteratee, accumulator) { + baseEach(collection, function(value, key, collection) { + setter(accumulator, value, iteratee(value), collection); + }); + return accumulator; + } + + /** + * The base implementation of `_.assign` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ + function baseAssign(object, source) { + return object && copyObject(source, keys(source), object); + } + + /** + * The base implementation of `_.assignIn` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ + function baseAssignIn(object, source) { + return object && copyObject(source, keysIn(source), object); + } + + /** + * The base implementation of `assignValue` and `assignMergeValue` without + * value checks. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function baseAssignValue(object, key, value) { + if (key == '__proto__' && defineProperty) { + defineProperty(object, key, { + 'configurable': true, + 'enumerable': true, + 'value': value, + 'writable': true + }); + } else { + object[key] = value; + } + } + + /** + * The base implementation of `_.at` without support for individual paths. + * + * @private + * @param {Object} object The object to iterate over. + * @param {string[]} paths The property paths to pick. + * @returns {Array} Returns the picked elements. + */ + function baseAt(object, paths) { + var index = -1, + length = paths.length, + result = Array(length), + skip = object == null; + + while (++index < length) { + result[index] = skip ? undefined$1 : get(object, paths[index]); + } + return result; + } + + /** + * The base implementation of `_.clamp` which doesn't coerce arguments. + * + * @private + * @param {number} number The number to clamp. + * @param {number} [lower] The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the clamped number. + */ + function baseClamp(number, lower, upper) { + if (number === number) { + if (upper !== undefined$1) { + number = number <= upper ? number : upper; + } + if (lower !== undefined$1) { + number = number >= lower ? number : lower; + } + } + return number; + } + + /** + * The base implementation of `_.clone` and `_.cloneDeep` which tracks + * traversed objects. + * + * @private + * @param {*} value The value to clone. + * @param {boolean} bitmask The bitmask flags. + * 1 - Deep clone + * 2 - Flatten inherited properties + * 4 - Clone symbols + * @param {Function} [customizer] The function to customize cloning. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The parent object of `value`. + * @param {Object} [stack] Tracks traversed objects and their clone counterparts. + * @returns {*} Returns the cloned value. + */ + function baseClone(value, bitmask, customizer, key, object, stack) { + var result, + isDeep = bitmask & CLONE_DEEP_FLAG, + isFlat = bitmask & CLONE_FLAT_FLAG, + isFull = bitmask & CLONE_SYMBOLS_FLAG; + + if (customizer) { + result = object ? customizer(value, key, object, stack) : customizer(value); + } + if (result !== undefined$1) { + return result; + } + if (!isObject(value)) { + return value; + } + var isArr = isArray(value); + if (isArr) { + result = initCloneArray(value); + if (!isDeep) { + return copyArray(value, result); + } + } else { + var tag = getTag(value), + isFunc = tag == funcTag || tag == genTag; + + if (isBuffer(value)) { + return cloneBuffer(value, isDeep); + } + if (tag == objectTag || tag == argsTag || (isFunc && !object)) { + result = (isFlat || isFunc) ? {} : initCloneObject(value); + if (!isDeep) { + return isFlat + ? copySymbolsIn(value, baseAssignIn(result, value)) + : copySymbols(value, baseAssign(result, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + result = initCloneByTag(value, tag, isDeep); + } + } + // Check for circular references and return its corresponding clone. + stack || (stack = new Stack); + var stacked = stack.get(value); + if (stacked) { + return stacked; + } + stack.set(value, result); + + if (isSet(value)) { + value.forEach(function(subValue) { + result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); + }); + } else if (isMap(value)) { + value.forEach(function(subValue, key) { + result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + } + + var keysFunc = isFull + ? (isFlat ? getAllKeysIn : getAllKeys) + : (isFlat ? keysIn : keys); + + var props = isArr ? undefined$1 : keysFunc(value); + arrayEach(props || value, function(subValue, key) { + if (props) { + key = subValue; + subValue = value[key]; + } + // Recursively populate clone (susceptible to call stack limits). + assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + return result; + } + + /** + * The base implementation of `_.conforms` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property predicates to conform to. + * @returns {Function} Returns the new spec function. + */ + function baseConforms(source) { + var props = keys(source); + return function(object) { + return baseConformsTo(object, source, props); + }; + } + + /** + * The base implementation of `_.conformsTo` which accepts `props` to check. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property predicates to conform to. + * @returns {boolean} Returns `true` if `object` conforms, else `false`. + */ + function baseConformsTo(object, source, props) { + var length = props.length; + if (object == null) { + return !length; + } + object = Object(object); + while (length--) { + var key = props[length], + predicate = source[key], + value = object[key]; + + if ((value === undefined$1 && !(key in object)) || !predicate(value)) { + return false; + } + } + return true; + } + + /** + * The base implementation of `_.delay` and `_.defer` which accepts `args` + * to provide to `func`. + * + * @private + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {Array} args The arguments to provide to `func`. + * @returns {number|Object} Returns the timer id or timeout object. + */ + function baseDelay(func, wait, args) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return setTimeout(function() { func.apply(undefined$1, args); }, wait); + } + + /** + * The base implementation of methods like `_.difference` without support + * for excluding multiple arrays or iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Array} values The values to exclude. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + */ + function baseDifference(array, values, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + isCommon = true, + length = array.length, + result = [], + valuesLength = values.length; + + if (!length) { + return result; + } + if (iteratee) { + values = arrayMap(values, baseUnary(iteratee)); + } + if (comparator) { + includes = arrayIncludesWith; + isCommon = false; + } + else if (values.length >= LARGE_ARRAY_SIZE) { + includes = cacheHas; + isCommon = false; + values = new SetCache(values); + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee == null ? value : iteratee(value); + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var valuesIndex = valuesLength; + while (valuesIndex--) { + if (values[valuesIndex] === computed) { + continue outer; + } + } + result.push(value); + } + else if (!includes(values, computed, comparator)) { + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.forEach` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ + var baseEach = createBaseEach(baseForOwn); + + /** + * The base implementation of `_.forEachRight` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ + var baseEachRight = createBaseEach(baseForOwnRight, true); + + /** + * The base implementation of `_.every` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false` + */ + function baseEvery(collection, predicate) { + var result = true; + baseEach(collection, function(value, index, collection) { + result = !!predicate(value, index, collection); + return result; + }); + return result; + } + + /** + * The base implementation of methods like `_.max` and `_.min` which accepts a + * `comparator` to determine the extremum value. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The iteratee invoked per iteration. + * @param {Function} comparator The comparator used to compare values. + * @returns {*} Returns the extremum value. + */ + function baseExtremum(array, iteratee, comparator) { + var index = -1, + length = array.length; + + while (++index < length) { + var value = array[index], + current = iteratee(value); + + if (current != null && (computed === undefined$1 + ? (current === current && !isSymbol(current)) + : comparator(current, computed) + )) { + var computed = current, + result = value; + } + } + return result; + } + + /** + * The base implementation of `_.fill` without an iteratee call guard. + * + * @private + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + */ + function baseFill(array, value, start, end) { + var length = array.length; + + start = toInteger(start); + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = (end === undefined$1 || end > length) ? length : toInteger(end); + if (end < 0) { + end += length; + } + end = start > end ? 0 : toLength(end); + while (start < end) { + array[start++] = value; + } + return array; + } + + /** + * The base implementation of `_.filter` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function baseFilter(collection, predicate) { + var result = []; + baseEach(collection, function(value, index, collection) { + if (predicate(value, index, collection)) { + result.push(value); + } + }); + return result; + } + + /** + * The base implementation of `_.flatten` with support for restricting flattening. + * + * @private + * @param {Array} array The array to flatten. + * @param {number} depth The maximum recursion depth. + * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. + * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. + * @param {Array} [result=[]] The initial result value. + * @returns {Array} Returns the new flattened array. + */ + function baseFlatten(array, depth, predicate, isStrict, result) { + var index = -1, + length = array.length; + + predicate || (predicate = isFlattenable); + result || (result = []); + + while (++index < length) { + var value = array[index]; + if (depth > 0 && predicate(value)) { + if (depth > 1) { + // Recursively flatten arrays (susceptible to call stack limits). + baseFlatten(value, depth - 1, predicate, isStrict, result); + } else { + arrayPush(result, value); + } + } else if (!isStrict) { + result[result.length] = value; + } + } + return result; + } + + /** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ + var baseFor = createBaseFor(); + + /** + * This function is like `baseFor` except that it iterates over properties + * in the opposite order. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ + var baseForRight = createBaseFor(true); + + /** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwn(object, iteratee) { + return object && baseFor(object, iteratee, keys); + } + + /** + * The base implementation of `_.forOwnRight` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwnRight(object, iteratee) { + return object && baseForRight(object, iteratee, keys); + } + + /** + * The base implementation of `_.functions` which creates an array of + * `object` function property names filtered from `props`. + * + * @private + * @param {Object} object The object to inspect. + * @param {Array} props The property names to filter. + * @returns {Array} Returns the function names. + */ + function baseFunctions(object, props) { + return arrayFilter(props, function(key) { + return isFunction(object[key]); + }); + } + + /** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ + function baseGet(object, path) { + path = castPath(path, object); + + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + return (index && index == length) ? object : undefined$1; + } + + /** + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ + function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); + } + + /** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + function baseGetTag(value) { + if (value == null) { + return value === undefined$1 ? undefinedTag : nullTag; + } + return (symToStringTag && symToStringTag in Object(value)) + ? getRawTag(value) + : objectToString(value); + } + + /** + * The base implementation of `_.gt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + */ + function baseGt(value, other) { + return value > other; + } + + /** + * The base implementation of `_.has` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ + function baseHas(object, key) { + return object != null && hasOwnProperty.call(object, key); + } + + /** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ + function baseHasIn(object, key) { + return object != null && key in Object(object); + } + + /** + * The base implementation of `_.inRange` which doesn't coerce arguments. + * + * @private + * @param {number} number The number to check. + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @returns {boolean} Returns `true` if `number` is in the range, else `false`. + */ + function baseInRange(number, start, end) { + return number >= nativeMin(start, end) && number < nativeMax(start, end); + } + + /** + * The base implementation of methods like `_.intersection`, without support + * for iteratee shorthands, that accepts an array of arrays to inspect. + * + * @private + * @param {Array} arrays The arrays to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of shared values. + */ + function baseIntersection(arrays, iteratee, comparator) { + var includes = comparator ? arrayIncludesWith : arrayIncludes, + length = arrays[0].length, + othLength = arrays.length, + othIndex = othLength, + caches = Array(othLength), + maxLength = Infinity, + result = []; + + while (othIndex--) { + var array = arrays[othIndex]; + if (othIndex && iteratee) { + array = arrayMap(array, baseUnary(iteratee)); + } + maxLength = nativeMin(array.length, maxLength); + caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120)) + ? new SetCache(othIndex && array) + : undefined$1; + } + array = arrays[0]; + + var index = -1, + seen = caches[0]; + + outer: + while (++index < length && result.length < maxLength) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (!(seen + ? cacheHas(seen, computed) + : includes(result, computed, comparator) + )) { + othIndex = othLength; + while (--othIndex) { + var cache = caches[othIndex]; + if (!(cache + ? cacheHas(cache, computed) + : includes(arrays[othIndex], computed, comparator)) + ) { + continue outer; + } + } + if (seen) { + seen.push(computed); + } + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.invert` and `_.invertBy` which inverts + * `object` with values transformed by `iteratee` and set by `setter`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform values. + * @param {Object} accumulator The initial inverted object. + * @returns {Function} Returns `accumulator`. + */ + function baseInverter(object, setter, iteratee, accumulator) { + baseForOwn(object, function(value, key, object) { + setter(accumulator, iteratee(value), key, object); + }); + return accumulator; + } + + /** + * The base implementation of `_.invoke` without support for individual + * method arguments. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the method to invoke. + * @param {Array} args The arguments to invoke the method with. + * @returns {*} Returns the result of the invoked method. + */ + function baseInvoke(object, path, args) { + path = castPath(path, object); + object = parent(object, path); + var func = object == null ? object : object[toKey(last(path))]; + return func == null ? undefined$1 : apply(func, object, args); + } + + /** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ + function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; + } + + /** + * The base implementation of `_.isArrayBuffer` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. + */ + function baseIsArrayBuffer(value) { + return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; + } + + /** + * The base implementation of `_.isDate` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a date object, else `false`. + */ + function baseIsDate(value) { + return isObjectLike(value) && baseGetTag(value) == dateTag; + } + + /** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {boolean} bitmask The bitmask flags. + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Function} [customizer] The function to customize comparisons. + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ + function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); + } + + /** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = objIsArr ? arrayTag : getTag(object), + othTag = othIsArr ? arrayTag : getTag(other); + + objTag = objTag == argsTag ? objectTag : objTag; + othTag = othTag == argsTag ? objectTag : othTag; + + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; + + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + objIsArr = true; + objIsObj = false; + } + if (isSameTag && !objIsObj) { + stack || (stack = new Stack); + return (objIsArr || isTypedArray(object)) + ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) + : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + } + if (!(bitmask & COMPARE_PARTIAL_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + + stack || (stack = new Stack); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + if (!isSameTag) { + return false; + } + stack || (stack = new Stack); + return equalObjects(object, other, bitmask, customizer, equalFunc, stack); + } + + /** + * The base implementation of `_.isMap` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + */ + function baseIsMap(value) { + return isObjectLike(value) && getTag(value) == mapTag; + } + + /** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ + function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; + + if (object == null) { + return !length; + } + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; + + if (noCustomizer && data[2]) { + if (objValue === undefined$1 && !(key in object)) { + return false; + } + } else { + var stack = new Stack; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined$1 + ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) + : result + )) { + return false; + } + } + } + return true; + } + + /** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ + function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); + } + + /** + * The base implementation of `_.isRegExp` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. + */ + function baseIsRegExp(value) { + return isObjectLike(value) && baseGetTag(value) == regexpTag; + } + + /** + * The base implementation of `_.isSet` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + */ + function baseIsSet(value) { + return isObjectLike(value) && getTag(value) == setTag; + } + + /** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ + function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; + } + + /** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ + function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity; + } + if (typeof value == 'object') { + return isArray(value) + ? baseMatchesProperty(value[0], value[1]) + : baseMatches(value); + } + return property(value); + } + + /** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; + } + + /** + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); + } + var isProto = isPrototype(object), + result = []; + + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + return result; + } + + /** + * The base implementation of `_.lt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, + * else `false`. + */ + function baseLt(value, other) { + return value < other; + } + + /** + * The base implementation of `_.map` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function baseMap(collection, iteratee) { + var index = -1, + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value, key, collection) { + result[++index] = iteratee(value, key, collection); + }); + return result; + } + + /** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ + function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; + } + + /** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ + function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); + } + return function(object) { + var objValue = get(object, path); + return (objValue === undefined$1 && objValue === srcValue) + ? hasIn(object, path) + : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); + }; + } + + /** + * The base implementation of `_.merge` without support for multiple sources. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {number} srcIndex The index of `source`. + * @param {Function} [customizer] The function to customize merged values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ + function baseMerge(object, source, srcIndex, customizer, stack) { + if (object === source) { + return; + } + baseFor(source, function(srcValue, key) { + stack || (stack = new Stack); + if (isObject(srcValue)) { + baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); + } + else { + var newValue = customizer + ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) + : undefined$1; + + if (newValue === undefined$1) { + newValue = srcValue; + } + assignMergeValue(object, key, newValue); + } + }, keysIn); + } + + /** + * A specialized version of `baseMerge` for arrays and objects which performs + * deep merges and tracks traversed objects enabling objects with circular + * references to be merged. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {string} key The key of the value to merge. + * @param {number} srcIndex The index of `source`. + * @param {Function} mergeFunc The function to merge values. + * @param {Function} [customizer] The function to customize assigned values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ + function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { + var objValue = safeGet(object, key), + srcValue = safeGet(source, key), + stacked = stack.get(srcValue); + + if (stacked) { + assignMergeValue(object, key, stacked); + return; + } + var newValue = customizer + ? customizer(objValue, srcValue, (key + ''), object, source, stack) + : undefined$1; + + var isCommon = newValue === undefined$1; + + if (isCommon) { + var isArr = isArray(srcValue), + isBuff = !isArr && isBuffer(srcValue), + isTyped = !isArr && !isBuff && isTypedArray(srcValue); + + newValue = srcValue; + if (isArr || isBuff || isTyped) { + if (isArray(objValue)) { + newValue = objValue; + } + else if (isArrayLikeObject(objValue)) { + newValue = copyArray(objValue); + } + else if (isBuff) { + isCommon = false; + newValue = cloneBuffer(srcValue, true); + } + else if (isTyped) { + isCommon = false; + newValue = cloneTypedArray(srcValue, true); + } + else { + newValue = []; + } + } + else if (isPlainObject(srcValue) || isArguments(srcValue)) { + newValue = objValue; + if (isArguments(objValue)) { + newValue = toPlainObject(objValue); + } + else if (!isObject(objValue) || isFunction(objValue)) { + newValue = initCloneObject(srcValue); + } + } + else { + isCommon = false; + } + } + if (isCommon) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, newValue); + mergeFunc(newValue, srcValue, srcIndex, customizer, stack); + stack['delete'](srcValue); + } + assignMergeValue(object, key, newValue); + } + + /** + * The base implementation of `_.nth` which doesn't coerce arguments. + * + * @private + * @param {Array} array The array to query. + * @param {number} n The index of the element to return. + * @returns {*} Returns the nth element of `array`. + */ + function baseNth(array, n) { + var length = array.length; + if (!length) { + return; + } + n += n < 0 ? length : 0; + return isIndex(n, length) ? array[n] : undefined$1; + } + + /** + * The base implementation of `_.orderBy` without param guards. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. + * @param {string[]} orders The sort orders of `iteratees`. + * @returns {Array} Returns the new sorted array. + */ + function baseOrderBy(collection, iteratees, orders) { + if (iteratees.length) { + iteratees = arrayMap(iteratees, function(iteratee) { + if (isArray(iteratee)) { + return function(value) { + return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee); + } + } + return iteratee; + }); + } else { + iteratees = [identity]; + } + + var index = -1; + iteratees = arrayMap(iteratees, baseUnary(getIteratee())); + + var result = baseMap(collection, function(value, key, collection) { + var criteria = arrayMap(iteratees, function(iteratee) { + return iteratee(value); + }); + return { 'criteria': criteria, 'index': ++index, 'value': value }; + }); + + return baseSortBy(result, function(object, other) { + return compareMultiple(object, other, orders); + }); + } + + /** + * The base implementation of `_.pick` without support for individual + * property identifiers. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @returns {Object} Returns the new object. + */ + function basePick(object, paths) { + return basePickBy(object, paths, function(value, path) { + return hasIn(object, path); + }); + } + + /** + * The base implementation of `_.pickBy` without support for iteratee shorthands. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @param {Function} predicate The function invoked per property. + * @returns {Object} Returns the new object. + */ + function basePickBy(object, paths, predicate) { + var index = -1, + length = paths.length, + result = {}; + + while (++index < length) { + var path = paths[index], + value = baseGet(object, path); + + if (predicate(value, path)) { + baseSet(result, castPath(path, object), value); + } + } + return result; + } + + /** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ + function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; + } + + /** + * The base implementation of `_.pullAllBy` without support for iteratee + * shorthands. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns `array`. + */ + function basePullAll(array, values, iteratee, comparator) { + var indexOf = comparator ? baseIndexOfWith : baseIndexOf, + index = -1, + length = values.length, + seen = array; + + if (array === values) { + values = copyArray(values); + } + if (iteratee) { + seen = arrayMap(array, baseUnary(iteratee)); + } + while (++index < length) { + var fromIndex = 0, + value = values[index], + computed = iteratee ? iteratee(value) : value; + + while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) { + if (seen !== array) { + splice.call(seen, fromIndex, 1); + } + splice.call(array, fromIndex, 1); + } + } + return array; + } + + /** + * The base implementation of `_.pullAt` without support for individual + * indexes or capturing the removed elements. + * + * @private + * @param {Array} array The array to modify. + * @param {number[]} indexes The indexes of elements to remove. + * @returns {Array} Returns `array`. + */ + function basePullAt(array, indexes) { + var length = array ? indexes.length : 0, + lastIndex = length - 1; + + while (length--) { + var index = indexes[length]; + if (length == lastIndex || index !== previous) { + var previous = index; + if (isIndex(index)) { + splice.call(array, index, 1); + } else { + baseUnset(array, index); + } + } + } + return array; + } + + /** + * The base implementation of `_.random` without support for returning + * floating-point numbers. + * + * @private + * @param {number} lower The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the random number. + */ + function baseRandom(lower, upper) { + return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); + } + + /** + * The base implementation of `_.range` and `_.rangeRight` which doesn't + * coerce arguments. + * + * @private + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @param {number} step The value to increment or decrement by. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the range of numbers. + */ + function baseRange(start, end, step, fromRight) { + var index = -1, + length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), + result = Array(length); + + while (length--) { + result[fromRight ? length : ++index] = start; + start += step; + } + return result; + } + + /** + * The base implementation of `_.repeat` which doesn't coerce arguments. + * + * @private + * @param {string} string The string to repeat. + * @param {number} n The number of times to repeat the string. + * @returns {string} Returns the repeated string. + */ + function baseRepeat(string, n) { + var result = ''; + if (!string || n < 1 || n > MAX_SAFE_INTEGER) { + return result; + } + // Leverage the exponentiation by squaring algorithm for a faster repeat. + // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. + do { + if (n % 2) { + result += string; + } + n = nativeFloor(n / 2); + if (n) { + string += string; + } + } while (n); + + return result; + } + + /** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ + function baseRest(func, start) { + return setToString(overRest(func, start, identity), func + ''); + } + + /** + * The base implementation of `_.sample`. + * + * @private + * @param {Array|Object} collection The collection to sample. + * @returns {*} Returns the random element. + */ + function baseSample(collection) { + return arraySample(values(collection)); + } + + /** + * The base implementation of `_.sampleSize` without param guards. + * + * @private + * @param {Array|Object} collection The collection to sample. + * @param {number} n The number of elements to sample. + * @returns {Array} Returns the random elements. + */ + function baseSampleSize(collection, n) { + var array = values(collection); + return shuffleSelf(array, baseClamp(n, 0, array.length)); + } + + /** + * The base implementation of `_.set`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ + function baseSet(object, path, value, customizer) { + if (!isObject(object)) { + return object; + } + path = castPath(path, object); + + var index = -1, + length = path.length, + lastIndex = length - 1, + nested = object; + + while (nested != null && ++index < length) { + var key = toKey(path[index]), + newValue = value; + + if (key === '__proto__' || key === 'constructor' || key === 'prototype') { + return object; + } + + if (index != lastIndex) { + var objValue = nested[key]; + newValue = customizer ? customizer(objValue, key, nested) : undefined$1; + if (newValue === undefined$1) { + newValue = isObject(objValue) + ? objValue + : (isIndex(path[index + 1]) ? [] : {}); + } + } + assignValue(nested, key, newValue); + nested = nested[key]; + } + return object; + } + + /** + * The base implementation of `setData` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. + */ + var baseSetData = !metaMap ? identity : function(func, data) { + metaMap.set(func, data); + return func; + }; + + /** + * The base implementation of `setToString` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ + var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, 'toString', { + 'configurable': true, + 'enumerable': false, + 'value': constant(string), + 'writable': true + }); + }; + + /** + * The base implementation of `_.shuffle`. + * + * @private + * @param {Array|Object} collection The collection to shuffle. + * @returns {Array} Returns the new shuffled array. + */ + function baseShuffle(collection) { + return shuffleSelf(values(collection)); + } + + /** + * The base implementation of `_.slice` without an iteratee call guard. + * + * @private + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function baseSlice(array, start, end) { + var index = -1, + length = array.length; + + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = end > length ? length : end; + if (end < 0) { + end += length; + } + length = start > end ? 0 : ((end - start) >>> 0); + start >>>= 0; + + var result = Array(length); + while (++index < length) { + result[index] = array[index + start]; + } + return result; + } + + /** + * The base implementation of `_.some` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function baseSome(collection, predicate) { + var result; + + baseEach(collection, function(value, index, collection) { + result = predicate(value, index, collection); + return !result; + }); + return !!result; + } + + /** + * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which + * performs a binary search of `array` to determine the index at which `value` + * should be inserted into `array` in order to maintain its sort order. + * + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + */ + function baseSortedIndex(array, value, retHighest) { + var low = 0, + high = array == null ? low : array.length; + + if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { + while (low < high) { + var mid = (low + high) >>> 1, + computed = array[mid]; + + if (computed !== null && !isSymbol(computed) && + (retHighest ? (computed <= value) : (computed < value))) { + low = mid + 1; + } else { + high = mid; + } + } + return high; + } + return baseSortedIndexBy(array, value, identity, retHighest); + } + + /** + * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy` + * which invokes `iteratee` for `value` and each element of `array` to compute + * their sort ranking. The iteratee is invoked with one argument; (value). + * + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} iteratee The iteratee invoked per element. + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + */ + function baseSortedIndexBy(array, value, iteratee, retHighest) { + var low = 0, + high = array == null ? 0 : array.length; + if (high === 0) { + return 0; + } + + value = iteratee(value); + var valIsNaN = value !== value, + valIsNull = value === null, + valIsSymbol = isSymbol(value), + valIsUndefined = value === undefined$1; + + while (low < high) { + var mid = nativeFloor((low + high) / 2), + computed = iteratee(array[mid]), + othIsDefined = computed !== undefined$1, + othIsNull = computed === null, + othIsReflexive = computed === computed, + othIsSymbol = isSymbol(computed); + + if (valIsNaN) { + var setLow = retHighest || othIsReflexive; + } else if (valIsUndefined) { + setLow = othIsReflexive && (retHighest || othIsDefined); + } else if (valIsNull) { + setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); + } else if (valIsSymbol) { + setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); + } else if (othIsNull || othIsSymbol) { + setLow = false; + } else { + setLow = retHighest ? (computed <= value) : (computed < value); + } + if (setLow) { + low = mid + 1; + } else { + high = mid; + } + } + return nativeMin(high, MAX_ARRAY_INDEX); + } + + /** + * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ + function baseSortedUniq(array, iteratee) { + var index = -1, + length = array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + if (!index || !eq(computed, seen)) { + var seen = computed; + result[resIndex++] = value === 0 ? 0 : value; + } + } + return result; + } + + /** + * The base implementation of `_.toNumber` which doesn't ensure correct + * conversions of binary, hexadecimal, or octal string values. + * + * @private + * @param {*} value The value to process. + * @returns {number} Returns the number. + */ + function baseToNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + return +value; + } + + /** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ + function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isArray(value)) { + // Recursively convert values (susceptible to call stack limits). + return arrayMap(value, baseToString) + ''; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; + } + + /** + * The base implementation of `_.uniqBy` without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ + function baseUniq(array, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + length = array.length, + isCommon = true, + result = [], + seen = result; + + if (comparator) { + isCommon = false; + includes = arrayIncludesWith; + } + else if (length >= LARGE_ARRAY_SIZE) { + var set = iteratee ? null : createSet(array); + if (set) { + return setToArray(set); + } + isCommon = false; + includes = cacheHas; + seen = new SetCache; + } + else { + seen = iteratee ? [] : result; + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; + } + } + if (iteratee) { + seen.push(computed); + } + result.push(value); + } + else if (!includes(seen, computed, comparator)) { + if (seen !== result) { + seen.push(computed); + } + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.unset`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The property path to unset. + * @returns {boolean} Returns `true` if the property is deleted, else `false`. + */ + function baseUnset(object, path) { + path = castPath(path, object); + object = parent(object, path); + return object == null || delete object[toKey(last(path))]; + } + + /** + * The base implementation of `_.update`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to update. + * @param {Function} updater The function to produce the updated value. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ + function baseUpdate(object, path, updater, customizer) { + return baseSet(object, path, updater(baseGet(object, path)), customizer); + } + + /** + * The base implementation of methods like `_.dropWhile` and `_.takeWhile` + * without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to query. + * @param {Function} predicate The function invoked per iteration. + * @param {boolean} [isDrop] Specify dropping elements instead of taking them. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the slice of `array`. + */ + function baseWhile(array, predicate, isDrop, fromRight) { + var length = array.length, + index = fromRight ? length : -1; + + while ((fromRight ? index-- : ++index < length) && + predicate(array[index], index, array)) {} + + return isDrop + ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length)) + : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index)); + } + + /** + * The base implementation of `wrapperValue` which returns the result of + * performing a sequence of actions on the unwrapped `value`, where each + * successive action is supplied the return value of the previous. + * + * @private + * @param {*} value The unwrapped value. + * @param {Array} actions Actions to perform to resolve the unwrapped value. + * @returns {*} Returns the resolved value. + */ + function baseWrapperValue(value, actions) { + var result = value; + if (result instanceof LazyWrapper) { + result = result.value(); + } + return arrayReduce(actions, function(result, action) { + return action.func.apply(action.thisArg, arrayPush([result], action.args)); + }, result); + } + + /** + * The base implementation of methods like `_.xor`, without support for + * iteratee shorthands, that accepts an array of arrays to inspect. + * + * @private + * @param {Array} arrays The arrays to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of values. + */ + function baseXor(arrays, iteratee, comparator) { + var length = arrays.length; + if (length < 2) { + return length ? baseUniq(arrays[0]) : []; + } + var index = -1, + result = Array(length); + + while (++index < length) { + var array = arrays[index], + othIndex = -1; + + while (++othIndex < length) { + if (othIndex != index) { + result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator); + } + } + } + return baseUniq(baseFlatten(result, 1), iteratee, comparator); + } + + /** + * This base implementation of `_.zipObject` which assigns values using `assignFunc`. + * + * @private + * @param {Array} props The property identifiers. + * @param {Array} values The property values. + * @param {Function} assignFunc The function to assign values. + * @returns {Object} Returns the new object. + */ + function baseZipObject(props, values, assignFunc) { + var index = -1, + length = props.length, + valsLength = values.length, + result = {}; + + while (++index < length) { + var value = index < valsLength ? values[index] : undefined$1; + assignFunc(result, props[index], value); + } + return result; + } + + /** + * Casts `value` to an empty array if it's not an array like object. + * + * @private + * @param {*} value The value to inspect. + * @returns {Array|Object} Returns the cast array-like object. + */ + function castArrayLikeObject(value) { + return isArrayLikeObject(value) ? value : []; + } + + /** + * Casts `value` to `identity` if it's not a function. + * + * @private + * @param {*} value The value to inspect. + * @returns {Function} Returns cast function. + */ + function castFunction(value) { + return typeof value == 'function' ? value : identity; + } + + /** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @param {Object} [object] The object to query keys on. + * @returns {Array} Returns the cast property path array. + */ + function castPath(value, object) { + if (isArray(value)) { + return value; + } + return isKey(value, object) ? [value] : stringToPath(toString(value)); + } + + /** + * A `baseRest` alias which can be replaced with `identity` by module + * replacement plugins. + * + * @private + * @type {Function} + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. + */ + var castRest = baseRest; + + /** + * Casts `array` to a slice if it's needed. + * + * @private + * @param {Array} array The array to inspect. + * @param {number} start The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the cast slice. + */ + function castSlice(array, start, end) { + var length = array.length; + end = end === undefined$1 ? length : end; + return (!start && end >= length) ? array : baseSlice(array, start, end); + } + + /** + * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout). + * + * @private + * @param {number|Object} id The timer id or timeout object of the timer to clear. + */ + var clearTimeout = ctxClearTimeout || function(id) { + return root.clearTimeout(id); + }; + + /** + * Creates a clone of `buffer`. + * + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. + */ + function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + var length = buffer.length, + result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); + + buffer.copy(result); + return result; + } + + /** + * Creates a clone of `arrayBuffer`. + * + * @private + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ + function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array(result).set(new Uint8Array(arrayBuffer)); + return result; + } + + /** + * Creates a clone of `dataView`. + * + * @private + * @param {Object} dataView The data view to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned data view. + */ + function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); + } + + /** + * Creates a clone of `regexp`. + * + * @private + * @param {Object} regexp The regexp to clone. + * @returns {Object} Returns the cloned regexp. + */ + function cloneRegExp(regexp) { + var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result.lastIndex = regexp.lastIndex; + return result; + } + + /** + * Creates a clone of the `symbol` object. + * + * @private + * @param {Object} symbol The symbol object to clone. + * @returns {Object} Returns the cloned symbol object. + */ + function cloneSymbol(symbol) { + return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; + } + + /** + * Creates a clone of `typedArray`. + * + * @private + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. + */ + function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); + } + + /** + * Compares values to sort them in ascending order. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {number} Returns the sort order indicator for `value`. + */ + function compareAscending(value, other) { + if (value !== other) { + var valIsDefined = value !== undefined$1, + valIsNull = value === null, + valIsReflexive = value === value, + valIsSymbol = isSymbol(value); + + var othIsDefined = other !== undefined$1, + othIsNull = other === null, + othIsReflexive = other === other, + othIsSymbol = isSymbol(other); + + if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || + (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || + (valIsNull && othIsDefined && othIsReflexive) || + (!valIsDefined && othIsReflexive) || + !valIsReflexive) { + return 1; + } + if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || + (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || + (othIsNull && valIsDefined && valIsReflexive) || + (!othIsDefined && valIsReflexive) || + !othIsReflexive) { + return -1; + } + } + return 0; + } + + /** + * Used by `_.orderBy` to compare multiple properties of a value to another + * and stable sort them. + * + * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, + * specify an order of "desc" for descending or "asc" for ascending sort order + * of corresponding values. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {boolean[]|string[]} orders The order to sort by for each property. + * @returns {number} Returns the sort order indicator for `object`. + */ + function compareMultiple(object, other, orders) { + var index = -1, + objCriteria = object.criteria, + othCriteria = other.criteria, + length = objCriteria.length, + ordersLength = orders.length; + + while (++index < length) { + var result = compareAscending(objCriteria[index], othCriteria[index]); + if (result) { + if (index >= ordersLength) { + return result; + } + var order = orders[index]; + return result * (order == 'desc' ? -1 : 1); + } + } + // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications + // that causes it, under certain circumstances, to provide the same value for + // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 + // for more details. + // + // This also ensures a stable sort in V8 and other engines. + // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. + return object.index - other.index; + } + + /** + * Creates an array that is the composition of partially applied arguments, + * placeholders, and provided arguments into a single array of arguments. + * + * @private + * @param {Array} args The provided arguments. + * @param {Array} partials The arguments to prepend to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @params {boolean} [isCurried] Specify composing for a curried function. + * @returns {Array} Returns the new array of composed arguments. + */ + function composeArgs(args, partials, holders, isCurried) { + var argsIndex = -1, + argsLength = args.length, + holdersLength = holders.length, + leftIndex = -1, + leftLength = partials.length, + rangeLength = nativeMax(argsLength - holdersLength, 0), + result = Array(leftLength + rangeLength), + isUncurried = !isCurried; + + while (++leftIndex < leftLength) { + result[leftIndex] = partials[leftIndex]; + } + while (++argsIndex < holdersLength) { + if (isUncurried || argsIndex < argsLength) { + result[holders[argsIndex]] = args[argsIndex]; + } + } + while (rangeLength--) { + result[leftIndex++] = args[argsIndex++]; + } + return result; + } + + /** + * This function is like `composeArgs` except that the arguments composition + * is tailored for `_.partialRight`. + * + * @private + * @param {Array} args The provided arguments. + * @param {Array} partials The arguments to append to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @params {boolean} [isCurried] Specify composing for a curried function. + * @returns {Array} Returns the new array of composed arguments. + */ + function composeArgsRight(args, partials, holders, isCurried) { + var argsIndex = -1, + argsLength = args.length, + holdersIndex = -1, + holdersLength = holders.length, + rightIndex = -1, + rightLength = partials.length, + rangeLength = nativeMax(argsLength - holdersLength, 0), + result = Array(rangeLength + rightLength), + isUncurried = !isCurried; + + while (++argsIndex < rangeLength) { + result[argsIndex] = args[argsIndex]; + } + var offset = argsIndex; + while (++rightIndex < rightLength) { + result[offset + rightIndex] = partials[rightIndex]; + } + while (++holdersIndex < holdersLength) { + if (isUncurried || argsIndex < argsLength) { + result[offset + holders[holdersIndex]] = args[argsIndex++]; + } + } + return result; + } + + /** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ + function copyArray(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; + } + + /** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. + */ + function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined$1; + + if (newValue === undefined$1) { + newValue = source[key]; + } + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); + } + } + return object; + } + + /** + * Copies own symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ + function copySymbols(source, object) { + return copyObject(source, getSymbols(source), object); + } + + /** + * Copies own and inherited symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ + function copySymbolsIn(source, object) { + return copyObject(source, getSymbolsIn(source), object); + } + + /** + * Creates a function like `_.groupBy`. + * + * @private + * @param {Function} setter The function to set accumulator values. + * @param {Function} [initializer] The accumulator object initializer. + * @returns {Function} Returns the new aggregator function. + */ + function createAggregator(setter, initializer) { + return function(collection, iteratee) { + var func = isArray(collection) ? arrayAggregator : baseAggregator, + accumulator = initializer ? initializer() : {}; + + return func(collection, setter, getIteratee(iteratee, 2), accumulator); + }; + } + + /** + * Creates a function like `_.assign`. + * + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. + */ + function createAssigner(assigner) { + return baseRest(function(object, sources) { + var index = -1, + length = sources.length, + customizer = length > 1 ? sources[length - 1] : undefined$1, + guard = length > 2 ? sources[2] : undefined$1; + + customizer = (assigner.length > 3 && typeof customizer == 'function') + ? (length--, customizer) + : undefined$1; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined$1 : customizer; + length = 1; + } + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); + } + + /** + * Creates a `baseEach` or `baseEachRight` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ + function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + if (collection == null) { + return collection; + } + if (!isArrayLike(collection)) { + return eachFunc(collection, iteratee); + } + var length = collection.length, + index = fromRight ? length : -1, + iterable = Object(collection); + + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; + } + + /** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ + function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; + } + + /** + * Creates a function that wraps `func` to invoke it with the optional `this` + * binding of `thisArg`. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} [thisArg] The `this` binding of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createBind(func, bitmask, thisArg) { + var isBind = bitmask & WRAP_BIND_FLAG, + Ctor = createCtor(func); + + function wrapper() { + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return fn.apply(isBind ? thisArg : this, arguments); + } + return wrapper; + } + + /** + * Creates a function like `_.lowerFirst`. + * + * @private + * @param {string} methodName The name of the `String` case method to use. + * @returns {Function} Returns the new case function. + */ + function createCaseFirst(methodName) { + return function(string) { + string = toString(string); + + var strSymbols = hasUnicode(string) + ? stringToArray(string) + : undefined$1; + + var chr = strSymbols + ? strSymbols[0] + : string.charAt(0); + + var trailing = strSymbols + ? castSlice(strSymbols, 1).join('') + : string.slice(1); + + return chr[methodName]() + trailing; + }; + } + + /** + * Creates a function like `_.camelCase`. + * + * @private + * @param {Function} callback The function to combine each word. + * @returns {Function} Returns the new compounder function. + */ + function createCompounder(callback) { + return function(string) { + return arrayReduce(words(deburr(string).replace(reApos, '')), callback, ''); + }; + } + + /** + * Creates a function that produces an instance of `Ctor` regardless of + * whether it was invoked as part of a `new` expression or by `call` or `apply`. + * + * @private + * @param {Function} Ctor The constructor to wrap. + * @returns {Function} Returns the new wrapped function. + */ + function createCtor(Ctor) { + return function() { + // Use a `switch` statement to work with class constructors. See + // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist + // for more details. + var args = arguments; + switch (args.length) { + case 0: return new Ctor; + case 1: return new Ctor(args[0]); + case 2: return new Ctor(args[0], args[1]); + case 3: return new Ctor(args[0], args[1], args[2]); + case 4: return new Ctor(args[0], args[1], args[2], args[3]); + case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); + case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); + case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); + } + var thisBinding = baseCreate(Ctor.prototype), + result = Ctor.apply(thisBinding, args); + + // Mimic the constructor's `return` behavior. + // See https://es5.github.io/#x13.2.2 for more details. + return isObject(result) ? result : thisBinding; + }; + } + + /** + * Creates a function that wraps `func` to enable currying. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {number} arity The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createCurry(func, bitmask, arity) { + var Ctor = createCtor(func); + + function wrapper() { + var length = arguments.length, + args = Array(length), + index = length, + placeholder = getHolder(wrapper); + + while (index--) { + args[index] = arguments[index]; + } + var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder) + ? [] + : replaceHolders(args, placeholder); + + length -= holders.length; + if (length < arity) { + return createRecurry( + func, bitmask, createHybrid, wrapper.placeholder, undefined$1, + args, holders, undefined$1, undefined$1, arity - length); + } + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return apply(fn, this, args); + } + return wrapper; + } + + /** + * Creates a `_.find` or `_.findLast` function. + * + * @private + * @param {Function} findIndexFunc The function to find the collection index. + * @returns {Function} Returns the new find function. + */ + function createFind(findIndexFunc) { + return function(collection, predicate, fromIndex) { + var iterable = Object(collection); + if (!isArrayLike(collection)) { + var iteratee = getIteratee(predicate, 3); + collection = keys(collection); + predicate = function(key) { return iteratee(iterable[key], key, iterable); }; + } + var index = findIndexFunc(collection, predicate, fromIndex); + return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined$1; + }; + } + + /** + * Creates a `_.flow` or `_.flowRight` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new flow function. + */ + function createFlow(fromRight) { + return flatRest(function(funcs) { + var length = funcs.length, + index = length, + prereq = LodashWrapper.prototype.thru; + + if (fromRight) { + funcs.reverse(); + } + while (index--) { + var func = funcs[index]; + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (prereq && !wrapper && getFuncName(func) == 'wrapper') { + var wrapper = new LodashWrapper([], true); + } + } + index = wrapper ? index : length; + while (++index < length) { + func = funcs[index]; + + var funcName = getFuncName(func), + data = funcName == 'wrapper' ? getData(func) : undefined$1; + + if (data && isLaziable(data[0]) && + data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && + !data[4].length && data[9] == 1 + ) { + wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); + } else { + wrapper = (func.length == 1 && isLaziable(func)) + ? wrapper[funcName]() + : wrapper.thru(func); + } + } + return function() { + var args = arguments, + value = args[0]; + + if (wrapper && args.length == 1 && isArray(value)) { + return wrapper.plant(value).value(); + } + var index = 0, + result = length ? funcs[index].apply(this, args) : value; + + while (++index < length) { + result = funcs[index].call(this, result); + } + return result; + }; + }); + } + + /** + * Creates a function that wraps `func` to invoke it with optional `this` + * binding of `thisArg`, partial application, and currying. + * + * @private + * @param {Function|string} func The function or method name to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to prepend to those provided to + * the new function. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [partialsRight] The arguments to append to those provided + * to the new function. + * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { + var isAry = bitmask & WRAP_ARY_FLAG, + isBind = bitmask & WRAP_BIND_FLAG, + isBindKey = bitmask & WRAP_BIND_KEY_FLAG, + isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), + isFlip = bitmask & WRAP_FLIP_FLAG, + Ctor = isBindKey ? undefined$1 : createCtor(func); + + function wrapper() { + var length = arguments.length, + args = Array(length), + index = length; + + while (index--) { + args[index] = arguments[index]; + } + if (isCurried) { + var placeholder = getHolder(wrapper), + holdersCount = countHolders(args, placeholder); + } + if (partials) { + args = composeArgs(args, partials, holders, isCurried); + } + if (partialsRight) { + args = composeArgsRight(args, partialsRight, holdersRight, isCurried); + } + length -= holdersCount; + if (isCurried && length < arity) { + var newHolders = replaceHolders(args, placeholder); + return createRecurry( + func, bitmask, createHybrid, wrapper.placeholder, thisArg, + args, newHolders, argPos, ary, arity - length + ); + } + var thisBinding = isBind ? thisArg : this, + fn = isBindKey ? thisBinding[func] : func; + + length = args.length; + if (argPos) { + args = reorder(args, argPos); + } else if (isFlip && length > 1) { + args.reverse(); + } + if (isAry && ary < length) { + args.length = ary; + } + if (this && this !== root && this instanceof wrapper) { + fn = Ctor || createCtor(fn); + } + return fn.apply(thisBinding, args); + } + return wrapper; + } + + /** + * Creates a function like `_.invertBy`. + * + * @private + * @param {Function} setter The function to set accumulator values. + * @param {Function} toIteratee The function to resolve iteratees. + * @returns {Function} Returns the new inverter function. + */ + function createInverter(setter, toIteratee) { + return function(object, iteratee) { + return baseInverter(object, setter, toIteratee(iteratee), {}); + }; + } + + /** + * Creates a function that performs a mathematical operation on two values. + * + * @private + * @param {Function} operator The function to perform the operation. + * @param {number} [defaultValue] The value used for `undefined` arguments. + * @returns {Function} Returns the new mathematical operation function. + */ + function createMathOperation(operator, defaultValue) { + return function(value, other) { + var result; + if (value === undefined$1 && other === undefined$1) { + return defaultValue; + } + if (value !== undefined$1) { + result = value; + } + if (other !== undefined$1) { + if (result === undefined$1) { + return other; + } + if (typeof value == 'string' || typeof other == 'string') { + value = baseToString(value); + other = baseToString(other); + } else { + value = baseToNumber(value); + other = baseToNumber(other); + } + result = operator(value, other); + } + return result; + }; + } + + /** + * Creates a function like `_.over`. + * + * @private + * @param {Function} arrayFunc The function to iterate over iteratees. + * @returns {Function} Returns the new over function. + */ + function createOver(arrayFunc) { + return flatRest(function(iteratees) { + iteratees = arrayMap(iteratees, baseUnary(getIteratee())); + return baseRest(function(args) { + var thisArg = this; + return arrayFunc(iteratees, function(iteratee) { + return apply(iteratee, thisArg, args); + }); + }); + }); + } + + /** + * Creates the padding for `string` based on `length`. The `chars` string + * is truncated if the number of characters exceeds `length`. + * + * @private + * @param {number} length The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padding for `string`. + */ + function createPadding(length, chars) { + chars = chars === undefined$1 ? ' ' : baseToString(chars); + + var charsLength = chars.length; + if (charsLength < 2) { + return charsLength ? baseRepeat(chars, length) : chars; + } + var result = baseRepeat(chars, nativeCeil(length / stringSize(chars))); + return hasUnicode(chars) + ? castSlice(stringToArray(result), 0, length).join('') + : result.slice(0, length); + } + + /** + * Creates a function that wraps `func` to invoke it with the `this` binding + * of `thisArg` and `partials` prepended to the arguments it receives. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} partials The arguments to prepend to those provided to + * the new function. + * @returns {Function} Returns the new wrapped function. + */ + function createPartial(func, bitmask, thisArg, partials) { + var isBind = bitmask & WRAP_BIND_FLAG, + Ctor = createCtor(func); + + function wrapper() { + var argsIndex = -1, + argsLength = arguments.length, + leftIndex = -1, + leftLength = partials.length, + args = Array(leftLength + argsLength), + fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + + while (++leftIndex < leftLength) { + args[leftIndex] = partials[leftIndex]; + } + while (argsLength--) { + args[leftIndex++] = arguments[++argsIndex]; + } + return apply(fn, isBind ? thisArg : this, args); + } + return wrapper; + } + + /** + * Creates a `_.range` or `_.rangeRight` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new range function. + */ + function createRange(fromRight) { + return function(start, end, step) { + if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { + end = step = undefined$1; + } + // Ensure the sign of `-0` is preserved. + start = toFinite(start); + if (end === undefined$1) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + step = step === undefined$1 ? (start < end ? 1 : -1) : toFinite(step); + return baseRange(start, end, step, fromRight); + }; + } + + /** + * Creates a function that performs a relational operation on two values. + * + * @private + * @param {Function} operator The function to perform the operation. + * @returns {Function} Returns the new relational operation function. + */ + function createRelationalOperation(operator) { + return function(value, other) { + if (!(typeof value == 'string' && typeof other == 'string')) { + value = toNumber(value); + other = toNumber(other); + } + return operator(value, other); + }; + } + + /** + * Creates a function that wraps `func` to continue currying. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {Function} wrapFunc The function to create the `func` wrapper. + * @param {*} placeholder The placeholder value. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to prepend to those provided to + * the new function. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) { + var isCurry = bitmask & WRAP_CURRY_FLAG, + newHolders = isCurry ? holders : undefined$1, + newHoldersRight = isCurry ? undefined$1 : holders, + newPartials = isCurry ? partials : undefined$1, + newPartialsRight = isCurry ? undefined$1 : partials; + + bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG); + bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG); + + if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { + bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG); + } + var newData = [ + func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, + newHoldersRight, argPos, ary, arity + ]; + + var result = wrapFunc.apply(undefined$1, newData); + if (isLaziable(func)) { + setData(result, newData); + } + result.placeholder = placeholder; + return setWrapToString(result, func, bitmask); + } + + /** + * Creates a function like `_.round`. + * + * @private + * @param {string} methodName The name of the `Math` method to use when rounding. + * @returns {Function} Returns the new round function. + */ + function createRound(methodName) { + var func = Math[methodName]; + return function(number, precision) { + number = toNumber(number); + precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); + if (precision && nativeIsFinite(number)) { + // Shift with exponential notation to avoid floating-point issues. + // See [MDN](https://mdn.io/round#Examples) for more details. + var pair = (toString(number) + 'e').split('e'), + value = func(pair[0] + 'e' + (+pair[1] + precision)); + + pair = (toString(value) + 'e').split('e'); + return +(pair[0] + 'e' + (+pair[1] - precision)); + } + return func(number); + }; + } + + /** + * Creates a set object of `values`. + * + * @private + * @param {Array} values The values to add to the set. + * @returns {Object} Returns the new set. + */ + var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { + return new Set(values); + }; + + /** + * Creates a `_.toPairs` or `_.toPairsIn` function. + * + * @private + * @param {Function} keysFunc The function to get the keys of a given object. + * @returns {Function} Returns the new pairs function. + */ + function createToPairs(keysFunc) { + return function(object) { + var tag = getTag(object); + if (tag == mapTag) { + return mapToArray(object); + } + if (tag == setTag) { + return setToPairs(object); + } + return baseToPairs(object, keysFunc(object)); + }; + } + + /** + * Creates a function that either curries or invokes `func` with optional + * `this` binding and partially applied arguments. + * + * @private + * @param {Function|string} func The function or method name to wrap. + * @param {number} bitmask The bitmask flags. + * 1 - `_.bind` + * 2 - `_.bindKey` + * 4 - `_.curry` or `_.curryRight` of a bound function + * 8 - `_.curry` + * 16 - `_.curryRight` + * 32 - `_.partial` + * 64 - `_.partialRight` + * 128 - `_.rearg` + * 256 - `_.ary` + * 512 - `_.flip` + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to be partially applied. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { + var isBindKey = bitmask & WRAP_BIND_KEY_FLAG; + if (!isBindKey && typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + var length = partials ? partials.length : 0; + if (!length) { + bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG); + partials = holders = undefined$1; + } + ary = ary === undefined$1 ? ary : nativeMax(toInteger(ary), 0); + arity = arity === undefined$1 ? arity : toInteger(arity); + length -= holders ? holders.length : 0; + + if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) { + var partialsRight = partials, + holdersRight = holders; + + partials = holders = undefined$1; + } + var data = isBindKey ? undefined$1 : getData(func); + + var newData = [ + func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, + argPos, ary, arity + ]; + + if (data) { + mergeData(newData, data); + } + func = newData[0]; + bitmask = newData[1]; + thisArg = newData[2]; + partials = newData[3]; + holders = newData[4]; + arity = newData[9] = newData[9] === undefined$1 + ? (isBindKey ? 0 : func.length) + : nativeMax(newData[9] - length, 0); + + if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { + bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); + } + if (!bitmask || bitmask == WRAP_BIND_FLAG) { + var result = createBind(func, bitmask, thisArg); + } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) { + result = createCurry(func, bitmask, arity); + } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) { + result = createPartial(func, bitmask, thisArg, partials); + } else { + result = createHybrid.apply(undefined$1, newData); + } + var setter = data ? baseSetData : setData; + return setWrapToString(setter(result, newData), func, bitmask); + } + + /** + * Used by `_.defaults` to customize its `_.assignIn` use to assign properties + * of source objects to the destination object for all destination properties + * that resolve to `undefined`. + * + * @private + * @param {*} objValue The destination value. + * @param {*} srcValue The source value. + * @param {string} key The key of the property to assign. + * @param {Object} object The parent object of `objValue`. + * @returns {*} Returns the value to assign. + */ + function customDefaultsAssignIn(objValue, srcValue, key, object) { + if (objValue === undefined$1 || + (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) { + return srcValue; + } + return objValue; + } + + /** + * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source + * objects into destination objects that are passed thru. + * + * @private + * @param {*} objValue The destination value. + * @param {*} srcValue The source value. + * @param {string} key The key of the property to merge. + * @param {Object} object The parent object of `objValue`. + * @param {Object} source The parent object of `srcValue`. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + * @returns {*} Returns the value to assign. + */ + function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { + if (isObject(objValue) && isObject(srcValue)) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, objValue); + baseMerge(objValue, srcValue, undefined$1, customDefaultsMerge, stack); + stack['delete'](srcValue); + } + return objValue; + } + + /** + * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain + * objects. + * + * @private + * @param {*} value The value to inspect. + * @param {string} key The key of the property to inspect. + * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`. + */ + function customOmitClone(value) { + return isPlainObject(value) ? undefined$1 : value; + } + + /** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ + function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Check that cyclic values are equal. + var arrStacked = stack.get(array); + var othStacked = stack.get(other); + if (arrStacked && othStacked) { + return arrStacked == other && othStacked == array; + } + var index = -1, + result = true, + seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined$1; + + stack.set(array, other); + stack.set(other, array); + + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined$1) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!cacheHas(seen, othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, bitmask, customizer, stack) + )) { + result = false; + break; + } + } + stack['delete'](array); + stack['delete'](other); + return result; + } + + /** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; + + case arrayBufferTag: + if ((object.byteLength != other.byteLength) || + !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; + } + return true; + + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); + + case errorTag: + return object.name == other.name && object.message == other.message; + + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); + + case mapTag: + var convert = mapToArray; + + case setTag: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG; + convert || (convert = setToArray); + + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= COMPARE_UNORDERED_FLAG; + + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack['delete'](object); + return result; + + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; + } + + /** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + objProps = getAllKeys(object), + objLength = objProps.length, + othProps = getAllKeys(other), + othLength = othProps.length; + + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; + } + } + // Check that cyclic values are equal. + var objStacked = stack.get(object); + var othStacked = stack.get(other); + if (objStacked && othStacked) { + return objStacked == other && othStacked == object; + } + var result = true; + stack.set(object, other); + stack.set(other, object); + + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined$1 + ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + stack['delete'](object); + stack['delete'](other); + return result; + } + + /** + * A specialized version of `baseRest` which flattens the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. + */ + function flatRest(func) { + return setToString(overRest(func, undefined$1, flatten), func + ''); + } + + /** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ + function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); + } + + /** + * Creates an array of own and inherited enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ + function getAllKeysIn(object) { + return baseGetAllKeys(object, keysIn, getSymbolsIn); + } + + /** + * Gets metadata for `func`. + * + * @private + * @param {Function} func The function to query. + * @returns {*} Returns the metadata for `func`. + */ + var getData = !metaMap ? noop : function(func) { + return metaMap.get(func); + }; + + /** + * Gets the name of `func`. + * + * @private + * @param {Function} func The function to query. + * @returns {string} Returns the function name. + */ + function getFuncName(func) { + var result = (func.name + ''), + array = realNames[result], + length = hasOwnProperty.call(realNames, result) ? array.length : 0; + + while (length--) { + var data = array[length], + otherFunc = data.func; + if (otherFunc == null || otherFunc == func) { + return data.name; + } + } + return result; + } + + /** + * Gets the argument placeholder value for `func`. + * + * @private + * @param {Function} func The function to inspect. + * @returns {*} Returns the placeholder value. + */ + function getHolder(func) { + var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func; + return object.placeholder; + } + + /** + * Gets the appropriate "iteratee" function. If `_.iteratee` is customized, + * this function returns the custom method, otherwise it returns `baseIteratee`. + * If arguments are provided, the chosen function is invoked with them and + * its result is returned. + * + * @private + * @param {*} [value] The value to convert to an iteratee. + * @param {number} [arity] The arity of the created iteratee. + * @returns {Function} Returns the chosen function or its result. + */ + function getIteratee() { + var result = lodash.iteratee || iteratee; + result = result === iteratee ? baseIteratee : result; + return arguments.length ? result(arguments[0], arguments[1]) : result; + } + + /** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ + function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; + } + + /** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ + function getMatchData(object) { + var result = keys(object), + length = result.length; + + while (length--) { + var key = result[length], + value = object[key]; + + result[length] = [key, value, isStrictComparable(value)]; + } + return result; + } + + /** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined$1; + } + + /** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ + function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; + + try { + value[symToStringTag] = undefined$1; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; + } + + /** + * Creates an array of the own enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ + var getSymbols = !nativeGetSymbols ? stubArray : function(object) { + if (object == null) { + return []; + } + object = Object(object); + return arrayFilter(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable.call(object, symbol); + }); + }; + + /** + * Creates an array of the own and inherited enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ + var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { + var result = []; + while (object) { + arrayPush(result, getSymbols(object)); + object = getPrototype(object); + } + return result; + }; + + /** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + var getTag = baseGetTag; + + // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. + if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = baseGetTag(value), + Ctor = result == objectTag ? value.constructor : undefined$1, + ctorString = Ctor ? toSource(Ctor) : ''; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; + } + } + return result; + }; + } + + /** + * Gets the view, applying any `transforms` to the `start` and `end` positions. + * + * @private + * @param {number} start The start of the view. + * @param {number} end The end of the view. + * @param {Array} transforms The transformations to apply to the view. + * @returns {Object} Returns an object containing the `start` and `end` + * positions of the view. + */ + function getView(start, end, transforms) { + var index = -1, + length = transforms.length; + + while (++index < length) { + var data = transforms[index], + size = data.size; + + switch (data.type) { + case 'drop': start += size; break; + case 'dropRight': end -= size; break; + case 'take': end = nativeMin(end, start + size); break; + case 'takeRight': start = nativeMax(start, end - size); break; + } + } + return { 'start': start, 'end': end }; + } + + /** + * Extracts wrapper details from the `source` body comment. + * + * @private + * @param {string} source The source to inspect. + * @returns {Array} Returns the wrapper details. + */ + function getWrapDetails(source) { + var match = source.match(reWrapDetails); + return match ? match[1].split(reSplitDetails) : []; + } + + /** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ + function hasPath(object, path, hasFunc) { + path = castPath(path, object); + + var index = -1, + length = path.length, + result = false; + + while (++index < length) { + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result || ++index != length) { + return result; + } + length = object == null ? 0 : object.length; + return !!length && isLength(length) && isIndex(key, length) && + (isArray(object) || isArguments(object)); + } + + /** + * Initializes an array clone. + * + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. + */ + function initCloneArray(array) { + var length = array.length, + result = new array.constructor(length); + + // Add properties assigned by `RegExp#exec`. + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; + } + + /** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneObject(object) { + return (typeof object.constructor == 'function' && !isPrototype(object)) + ? baseCreate(getPrototype(object)) + : {}; + } + + /** + * Initializes an object clone based on its `toStringTag`. + * + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. + * + * @private + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return cloneArrayBuffer(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case dataViewTag: + return cloneDataView(object, isDeep); + + case float32Tag: case float64Tag: + case int8Tag: case int16Tag: case int32Tag: + case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: + return cloneTypedArray(object, isDeep); + + case mapTag: + return new Ctor; + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + return cloneRegExp(object); + + case setTag: + return new Ctor; + + case symbolTag: + return cloneSymbol(object); + } + } + + /** + * Inserts wrapper `details` in a comment at the top of the `source` body. + * + * @private + * @param {string} source The source to modify. + * @returns {Array} details The details to insert. + * @returns {string} Returns the modified source. + */ + function insertWrapDetails(source, details) { + var length = details.length; + if (!length) { + return source; + } + var lastIndex = length - 1; + details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex]; + details = details.join(length > 2 ? ', ' : ' '); + return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n'); + } + + /** + * Checks if `value` is a flattenable `arguments` object or array. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. + */ + function isFlattenable(value) { + return isArray(value) || isArguments(value) || + !!(spreadableSymbol && value && value[spreadableSymbol]); + } + + /** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ + function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; + + return !!length && + (type == 'number' || + (type != 'symbol' && reIsUint.test(value))) && + (value > -1 && value % 1 == 0 && value < length); + } + + /** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ + function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; + } + + /** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ + function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); + } + + /** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ + function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); + } + + /** + * Checks if `func` has a lazy counterpart. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` has a lazy counterpart, + * else `false`. + */ + function isLaziable(func) { + var funcName = getFuncName(func), + other = lodash[funcName]; + + if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { + return false; + } + if (func === other) { + return true; + } + var data = getData(other); + return !!data && func === data[0]; + } + + /** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ + function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); + } + + /** + * Checks if `func` is capable of being masked. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `func` is maskable, else `false`. + */ + var isMaskable = coreJsData ? isFunction : stubFalse; + + /** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ + function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; + } + + /** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ + function isStrictComparable(value) { + return value === value && !isObject(value); + } + + /** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ + function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined$1 || (key in Object(object))); + }; + } + + /** + * A specialized version of `_.memoize` which clears the memoized function's + * cache when it exceeds `MAX_MEMOIZE_SIZE`. + * + * @private + * @param {Function} func The function to have its output memoized. + * @returns {Function} Returns the new memoized function. + */ + function memoizeCapped(func) { + var result = memoize(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + return key; + }); + + var cache = result.cache; + return result; + } + + /** + * Merges the function metadata of `source` into `data`. + * + * Merging metadata reduces the number of wrappers used to invoke a function. + * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` + * may be applied regardless of execution order. Methods like `_.ary` and + * `_.rearg` modify function arguments, making the order in which they are + * executed important, preventing the merging of metadata. However, we make + * an exception for a safe combined case where curried functions have `_.ary` + * and or `_.rearg` applied. + * + * @private + * @param {Array} data The destination metadata. + * @param {Array} source The source metadata. + * @returns {Array} Returns `data`. + */ + function mergeData(data, source) { + var bitmask = data[1], + srcBitmask = source[1], + newBitmask = bitmask | srcBitmask, + isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); + + var isCombo = + ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) || + ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) || + ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG)); + + // Exit early if metadata can't be merged. + if (!(isCommon || isCombo)) { + return data; + } + // Use source `thisArg` if available. + if (srcBitmask & WRAP_BIND_FLAG) { + data[2] = source[2]; + // Set when currying a bound function. + newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG; + } + // Compose partial arguments. + var value = source[3]; + if (value) { + var partials = data[3]; + data[3] = partials ? composeArgs(partials, value, source[4]) : value; + data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4]; + } + // Compose partial right arguments. + value = source[5]; + if (value) { + partials = data[5]; + data[5] = partials ? composeArgsRight(partials, value, source[6]) : value; + data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6]; + } + // Use source `argPos` if available. + value = source[7]; + if (value) { + data[7] = value; + } + // Use source `ary` if it's smaller. + if (srcBitmask & WRAP_ARY_FLAG) { + data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); + } + // Use source `arity` if one is not provided. + if (data[9] == null) { + data[9] = source[9]; + } + // Use source `func` and merge bitmasks. + data[0] = source[0]; + data[1] = newBitmask; + + return data; + } + + /** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; + } + + /** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ + function objectToString(value) { + return nativeObjectToString.call(value); + } + + /** + * A specialized version of `baseRest` which transforms the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @param {Function} transform The rest array transform. + * @returns {Function} Returns the new function. + */ + function overRest(func, start, transform) { + start = nativeMax(start === undefined$1 ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); + }; + } + + /** + * Gets the parent value at `path` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} path The path to get the parent value of. + * @returns {*} Returns the parent value. + */ + function parent(object, path) { + return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); + } + + /** + * Reorder `array` according to the specified indexes where the element at + * the first index is assigned as the first element, the element at + * the second index is assigned as the second element, and so on. + * + * @private + * @param {Array} array The array to reorder. + * @param {Array} indexes The arranged array indexes. + * @returns {Array} Returns `array`. + */ + function reorder(array, indexes) { + var arrLength = array.length, + length = nativeMin(indexes.length, arrLength), + oldArray = copyArray(array); + + while (length--) { + var index = indexes[length]; + array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined$1; + } + return array; + } + + /** + * Gets the value at `key`, unless `key` is "__proto__" or "constructor". + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ + function safeGet(object, key) { + if (key === 'constructor' && typeof object[key] === 'function') { + return; + } + + if (key == '__proto__') { + return; + } + + return object[key]; + } + + /** + * Sets metadata for `func`. + * + * **Note:** If this function becomes hot, i.e. is invoked a lot in a short + * period of time, it will trip its breaker and transition to an identity + * function to avoid garbage collection pauses in V8. See + * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070) + * for more details. + * + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. + */ + var setData = shortOut(baseSetData); + + /** + * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout). + * + * @private + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @returns {number|Object} Returns the timer id or timeout object. + */ + var setTimeout = ctxSetTimeout || function(func, wait) { + return root.setTimeout(func, wait); + }; + + /** + * Sets the `toString` method of `func` to return `string`. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ + var setToString = shortOut(baseSetToString); + + /** + * Sets the `toString` method of `wrapper` to mimic the source of `reference` + * with wrapper details in a comment at the top of the source body. + * + * @private + * @param {Function} wrapper The function to modify. + * @param {Function} reference The reference function. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @returns {Function} Returns `wrapper`. + */ + function setWrapToString(wrapper, reference, bitmask) { + var source = (reference + ''); + return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); + } + + /** + * Creates a function that'll short out and invoke `identity` instead + * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` + * milliseconds. + * + * @private + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new shortable function. + */ + function shortOut(func) { + var count = 0, + lastCalled = 0; + + return function() { + var stamp = nativeNow(), + remaining = HOT_SPAN - (stamp - lastCalled); + + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; + } + return func.apply(undefined$1, arguments); + }; + } + + /** + * A specialized version of `_.shuffle` which mutates and sets the size of `array`. + * + * @private + * @param {Array} array The array to shuffle. + * @param {number} [size=array.length] The size of `array`. + * @returns {Array} Returns `array`. + */ + function shuffleSelf(array, size) { + var index = -1, + length = array.length, + lastIndex = length - 1; + + size = size === undefined$1 ? length : size; + while (++index < size) { + var rand = baseRandom(index, lastIndex), + value = array[rand]; + + array[rand] = array[index]; + array[index] = value; + } + array.length = size; + return array; + } + + /** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ + var stringToPath = memoizeCapped(function(string) { + var result = []; + if (string.charCodeAt(0) === 46 /* . */) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, subString) { + result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; + }); + + /** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ + function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; + } + + /** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. + */ + function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; + } + + /** + * Updates wrapper `details` based on `bitmask` flags. + * + * @private + * @returns {Array} details The details to modify. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @returns {Array} Returns `details`. + */ + function updateWrapDetails(details, bitmask) { + arrayEach(wrapFlags, function(pair) { + var value = '_.' + pair[0]; + if ((bitmask & pair[1]) && !arrayIncludes(details, value)) { + details.push(value); + } + }); + return details.sort(); + } + + /** + * Creates a clone of `wrapper`. + * + * @private + * @param {Object} wrapper The wrapper to clone. + * @returns {Object} Returns the cloned wrapper. + */ + function wrapperClone(wrapper) { + if (wrapper instanceof LazyWrapper) { + return wrapper.clone(); + } + var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); + result.__actions__ = copyArray(wrapper.__actions__); + result.__index__ = wrapper.__index__; + result.__values__ = wrapper.__values__; + return result; + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates an array of elements split into groups the length of `size`. + * If `array` can't be split evenly, the final chunk will be the remaining + * elements. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to process. + * @param {number} [size=1] The length of each chunk + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the new array of chunks. + * @example + * + * _.chunk(['a', 'b', 'c', 'd'], 2); + * // => [['a', 'b'], ['c', 'd']] + * + * _.chunk(['a', 'b', 'c', 'd'], 3); + * // => [['a', 'b', 'c'], ['d']] + */ + function chunk(array, size, guard) { + if ((guard ? isIterateeCall(array, size, guard) : size === undefined$1)) { + size = 1; + } else { + size = nativeMax(toInteger(size), 0); + } + var length = array == null ? 0 : array.length; + if (!length || size < 1) { + return []; + } + var index = 0, + resIndex = 0, + result = Array(nativeCeil(length / size)); + + while (index < length) { + result[resIndex++] = baseSlice(array, index, (index += size)); + } + return result; + } + + /** + * Creates an array with all falsey values removed. The values `false`, `null`, + * `0`, `""`, `undefined`, and `NaN` are falsey. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to compact. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.compact([0, 1, false, 2, '', 3]); + * // => [1, 2, 3] + */ + function compact(array) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (value) { + result[resIndex++] = value; + } + } + return result; + } + + /** + * Creates a new array concatenating `array` with any additional arrays + * and/or values. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to concatenate. + * @param {...*} [values] The values to concatenate. + * @returns {Array} Returns the new concatenated array. + * @example + * + * var array = [1]; + * var other = _.concat(array, 2, [3], [[4]]); + * + * console.log(other); + * // => [1, 2, 3, [4]] + * + * console.log(array); + * // => [1] + */ + function concat() { + var length = arguments.length; + if (!length) { + return []; + } + var args = Array(length - 1), + array = arguments[0], + index = length; + + while (index--) { + args[index - 1] = arguments[index]; + } + return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)); + } + + /** + * Creates an array of `array` values not included in the other given arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. The order and references of result values are + * determined by the first array. + * + * **Note:** Unlike `_.pullAll`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @see _.without, _.xor + * @example + * + * _.difference([2, 1], [2, 3]); + * // => [1] + */ + var difference = baseRest(function(array, values) { + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) + : []; + }); + + /** + * This method is like `_.difference` except that it accepts `iteratee` which + * is invoked for each element of `array` and `values` to generate the criterion + * by which they're compared. The order and references of result values are + * determined by the first array. The iteratee is invoked with one argument: + * (value). + * + * **Note:** Unlike `_.pullAllBy`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [1.2] + * + * // The `_.property` iteratee shorthand. + * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x'); + * // => [{ 'x': 2 }] + */ + var differenceBy = baseRest(function(array, values) { + var iteratee = last(values); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined$1; + } + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)) + : []; + }); + + /** + * This method is like `_.difference` except that it accepts `comparator` + * which is invoked to compare elements of `array` to `values`. The order and + * references of result values are determined by the first array. The comparator + * is invoked with two arguments: (arrVal, othVal). + * + * **Note:** Unlike `_.pullAllWith`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * + * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual); + * // => [{ 'x': 2, 'y': 1 }] + */ + var differenceWith = baseRest(function(array, values) { + var comparator = last(values); + if (isArrayLikeObject(comparator)) { + comparator = undefined$1; + } + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined$1, comparator) + : []; + }); + + /** + * Creates a slice of `array` with `n` elements dropped from the beginning. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.drop([1, 2, 3]); + * // => [2, 3] + * + * _.drop([1, 2, 3], 2); + * // => [3] + * + * _.drop([1, 2, 3], 5); + * // => [] + * + * _.drop([1, 2, 3], 0); + * // => [1, 2, 3] + */ + function drop(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined$1) ? 1 : toInteger(n); + return baseSlice(array, n < 0 ? 0 : n, length); + } + + /** + * Creates a slice of `array` with `n` elements dropped from the end. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.dropRight([1, 2, 3]); + * // => [1, 2] + * + * _.dropRight([1, 2, 3], 2); + * // => [1] + * + * _.dropRight([1, 2, 3], 5); + * // => [] + * + * _.dropRight([1, 2, 3], 0); + * // => [1, 2, 3] + */ + function dropRight(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined$1) ? 1 : toInteger(n); + n = length - n; + return baseSlice(array, 0, n < 0 ? 0 : n); + } + + /** + * Creates a slice of `array` excluding elements dropped from the end. + * Elements are dropped until `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.dropRightWhile(users, function(o) { return !o.active; }); + * // => objects for ['barney'] + * + * // The `_.matches` iteratee shorthand. + * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false }); + * // => objects for ['barney', 'fred'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.dropRightWhile(users, ['active', false]); + * // => objects for ['barney'] + * + * // The `_.property` iteratee shorthand. + * _.dropRightWhile(users, 'active'); + * // => objects for ['barney', 'fred', 'pebbles'] + */ + function dropRightWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), true, true) + : []; + } + + /** + * Creates a slice of `array` excluding elements dropped from the beginning. + * Elements are dropped until `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.dropWhile(users, function(o) { return !o.active; }); + * // => objects for ['pebbles'] + * + * // The `_.matches` iteratee shorthand. + * _.dropWhile(users, { 'user': 'barney', 'active': false }); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.dropWhile(users, ['active', false]); + * // => objects for ['pebbles'] + * + * // The `_.property` iteratee shorthand. + * _.dropWhile(users, 'active'); + * // => objects for ['barney', 'fred', 'pebbles'] + */ + function dropWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), true) + : []; + } + + /** + * Fills elements of `array` with `value` from `start` up to, but not + * including, `end`. + * + * **Note:** This method mutates `array`. + * + * @static + * @memberOf _ + * @since 3.2.0 + * @category Array + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + * @example + * + * var array = [1, 2, 3]; + * + * _.fill(array, 'a'); + * console.log(array); + * // => ['a', 'a', 'a'] + * + * _.fill(Array(3), 2); + * // => [2, 2, 2] + * + * _.fill([4, 6, 8, 10], '*', 1, 3); + * // => [4, '*', '*', 10] + */ + function fill(array, value, start, end) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { + start = 0; + end = length; + } + return baseFill(array, value, start, end); + } + + /** + * This method is like `_.find` except that it returns the index of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.findIndex(users, function(o) { return o.user == 'barney'; }); + * // => 0 + * + * // The `_.matches` iteratee shorthand. + * _.findIndex(users, { 'user': 'fred', 'active': false }); + * // => 1 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findIndex(users, ['active', false]); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.findIndex(users, 'active'); + * // => 2 + */ + function findIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseFindIndex(array, getIteratee(predicate, 3), index); + } + + /** + * This method is like `_.findIndex` except that it iterates over elements + * of `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=array.length-1] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); + * // => 2 + * + * // The `_.matches` iteratee shorthand. + * _.findLastIndex(users, { 'user': 'barney', 'active': true }); + * // => 0 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findLastIndex(users, ['active', false]); + * // => 2 + * + * // The `_.property` iteratee shorthand. + * _.findLastIndex(users, 'active'); + * // => 0 + */ + function findLastIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = length - 1; + if (fromIndex !== undefined$1) { + index = toInteger(fromIndex); + index = fromIndex < 0 + ? nativeMax(length + index, 0) + : nativeMin(index, length - 1); + } + return baseFindIndex(array, getIteratee(predicate, 3), index, true); + } + + /** + * Flattens `array` a single level deep. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flatten([1, [2, [3, [4]], 5]]); + * // => [1, 2, [3, [4]], 5] + */ + function flatten(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, 1) : []; + } + + /** + * Recursively flattens `array`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flattenDeep([1, [2, [3, [4]], 5]]); + * // => [1, 2, 3, 4, 5] + */ + function flattenDeep(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, INFINITY) : []; + } + + /** + * Recursively flatten `array` up to `depth` times. + * + * @static + * @memberOf _ + * @since 4.4.0 + * @category Array + * @param {Array} array The array to flatten. + * @param {number} [depth=1] The maximum recursion depth. + * @returns {Array} Returns the new flattened array. + * @example + * + * var array = [1, [2, [3, [4]], 5]]; + * + * _.flattenDepth(array, 1); + * // => [1, 2, [3, [4]], 5] + * + * _.flattenDepth(array, 2); + * // => [1, 2, 3, [4], 5] + */ + function flattenDepth(array, depth) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + depth = depth === undefined$1 ? 1 : toInteger(depth); + return baseFlatten(array, depth); + } + + /** + * The inverse of `_.toPairs`; this method returns an object composed + * from key-value `pairs`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} pairs The key-value pairs. + * @returns {Object} Returns the new object. + * @example + * + * _.fromPairs([['a', 1], ['b', 2]]); + * // => { 'a': 1, 'b': 2 } + */ + function fromPairs(pairs) { + var index = -1, + length = pairs == null ? 0 : pairs.length, + result = {}; + + while (++index < length) { + var pair = pairs[index]; + result[pair[0]] = pair[1]; + } + return result; + } + + /** + * Gets the first element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias first + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the first element of `array`. + * @example + * + * _.head([1, 2, 3]); + * // => 1 + * + * _.head([]); + * // => undefined + */ + function head(array) { + return (array && array.length) ? array[0] : undefined$1; + } + + /** + * Gets the index at which the first occurrence of `value` is found in `array` + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. If `fromIndex` is negative, it's used as the + * offset from the end of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.indexOf([1, 2, 1, 2], 2); + * // => 1 + * + * // Search from the `fromIndex`. + * _.indexOf([1, 2, 1, 2], 2, 2); + * // => 3 + */ + function indexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseIndexOf(array, value, index); + } + + /** + * Gets all but the last element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.initial([1, 2, 3]); + * // => [1, 2] + */ + function initial(array) { + var length = array == null ? 0 : array.length; + return length ? baseSlice(array, 0, -1) : []; + } + + /** + * Creates an array of unique values that are included in all given arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. The order and references of result values are + * determined by the first array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * _.intersection([2, 1], [2, 3]); + * // => [2] + */ + var intersection = baseRest(function(arrays) { + var mapped = arrayMap(arrays, castArrayLikeObject); + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped) + : []; + }); + + /** + * This method is like `_.intersection` except that it accepts `iteratee` + * which is invoked for each element of each `arrays` to generate the criterion + * by which they're compared. The order and references of result values are + * determined by the first array. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [2.1] + * + * // The `_.property` iteratee shorthand. + * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }] + */ + var intersectionBy = baseRest(function(arrays) { + var iteratee = last(arrays), + mapped = arrayMap(arrays, castArrayLikeObject); + + if (iteratee === last(mapped)) { + iteratee = undefined$1; + } else { + mapped.pop(); + } + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped, getIteratee(iteratee, 2)) + : []; + }); + + /** + * This method is like `_.intersection` except that it accepts `comparator` + * which is invoked to compare elements of `arrays`. The order and references + * of result values are determined by the first array. The comparator is + * invoked with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.intersectionWith(objects, others, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }] + */ + var intersectionWith = baseRest(function(arrays) { + var comparator = last(arrays), + mapped = arrayMap(arrays, castArrayLikeObject); + + comparator = typeof comparator == 'function' ? comparator : undefined$1; + if (comparator) { + mapped.pop(); + } + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped, undefined$1, comparator) + : []; + }); + + /** + * Converts all elements in `array` into a string separated by `separator`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to convert. + * @param {string} [separator=','] The element separator. + * @returns {string} Returns the joined string. + * @example + * + * _.join(['a', 'b', 'c'], '~'); + * // => 'a~b~c' + */ + function join(array, separator) { + return array == null ? '' : nativeJoin.call(array, separator); + } + + /** + * Gets the last element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the last element of `array`. + * @example + * + * _.last([1, 2, 3]); + * // => 3 + */ + function last(array) { + var length = array == null ? 0 : array.length; + return length ? array[length - 1] : undefined$1; + } + + /** + * This method is like `_.indexOf` except that it iterates over elements of + * `array` from right to left. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=array.length-1] The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.lastIndexOf([1, 2, 1, 2], 2); + * // => 3 + * + * // Search from the `fromIndex`. + * _.lastIndexOf([1, 2, 1, 2], 2, 2); + * // => 1 + */ + function lastIndexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = length; + if (fromIndex !== undefined$1) { + index = toInteger(fromIndex); + index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); + } + return value === value + ? strictLastIndexOf(array, value, index) + : baseFindIndex(array, baseIsNaN, index, true); + } + + /** + * Gets the element at index `n` of `array`. If `n` is negative, the nth + * element from the end is returned. + * + * @static + * @memberOf _ + * @since 4.11.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=0] The index of the element to return. + * @returns {*} Returns the nth element of `array`. + * @example + * + * var array = ['a', 'b', 'c', 'd']; + * + * _.nth(array, 1); + * // => 'b' + * + * _.nth(array, -2); + * // => 'c'; + */ + function nth(array, n) { + return (array && array.length) ? baseNth(array, toInteger(n)) : undefined$1; + } + + /** + * Removes all given values from `array` using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove` + * to remove elements from an array by predicate. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {...*} [values] The values to remove. + * @returns {Array} Returns `array`. + * @example + * + * var array = ['a', 'b', 'c', 'a', 'b', 'c']; + * + * _.pull(array, 'a', 'c'); + * console.log(array); + * // => ['b', 'b'] + */ + var pull = baseRest(pullAll); + + /** + * This method is like `_.pull` except that it accepts an array of values to remove. + * + * **Note:** Unlike `_.difference`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @returns {Array} Returns `array`. + * @example + * + * var array = ['a', 'b', 'c', 'a', 'b', 'c']; + * + * _.pullAll(array, ['a', 'c']); + * console.log(array); + * // => ['b', 'b'] + */ + function pullAll(array, values) { + return (array && array.length && values && values.length) + ? basePullAll(array, values) + : array; + } + + /** + * This method is like `_.pullAll` except that it accepts `iteratee` which is + * invoked for each element of `array` and `values` to generate the criterion + * by which they're compared. The iteratee is invoked with one argument: (value). + * + * **Note:** Unlike `_.differenceBy`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns `array`. + * @example + * + * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; + * + * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); + * console.log(array); + * // => [{ 'x': 2 }] + */ + function pullAllBy(array, values, iteratee) { + return (array && array.length && values && values.length) + ? basePullAll(array, values, getIteratee(iteratee, 2)) + : array; + } + + /** + * This method is like `_.pullAll` except that it accepts `comparator` which + * is invoked to compare elements of `array` to `values`. The comparator is + * invoked with two arguments: (arrVal, othVal). + * + * **Note:** Unlike `_.differenceWith`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns `array`. + * @example + * + * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; + * + * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); + * console.log(array); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] + */ + function pullAllWith(array, values, comparator) { + return (array && array.length && values && values.length) + ? basePullAll(array, values, undefined$1, comparator) + : array; + } + + /** + * Removes elements from `array` corresponding to `indexes` and returns an + * array of removed elements. + * + * **Note:** Unlike `_.at`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {...(number|number[])} [indexes] The indexes of elements to remove. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = ['a', 'b', 'c', 'd']; + * var pulled = _.pullAt(array, [1, 3]); + * + * console.log(array); + * // => ['a', 'c'] + * + * console.log(pulled); + * // => ['b', 'd'] + */ + var pullAt = flatRest(function(array, indexes) { + var length = array == null ? 0 : array.length, + result = baseAt(array, indexes); + + basePullAt(array, arrayMap(indexes, function(index) { + return isIndex(index, length) ? +index : index; + }).sort(compareAscending)); + + return result; + }); + + /** + * Removes all elements from `array` that `predicate` returns truthy for + * and returns an array of the removed elements. The predicate is invoked + * with three arguments: (value, index, array). + * + * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull` + * to pull elements from an array by value. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = [1, 2, 3, 4]; + * var evens = _.remove(array, function(n) { + * return n % 2 == 0; + * }); + * + * console.log(array); + * // => [1, 3] + * + * console.log(evens); + * // => [2, 4] + */ + function remove(array, predicate) { + var result = []; + if (!(array && array.length)) { + return result; + } + var index = -1, + indexes = [], + length = array.length; + + predicate = getIteratee(predicate, 3); + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result.push(value); + indexes.push(index); + } + } + basePullAt(array, indexes); + return result; + } + + /** + * Reverses `array` so that the first element becomes the last, the second + * element becomes the second to last, and so on. + * + * **Note:** This method mutates `array` and is based on + * [`Array#reverse`](https://mdn.io/Array/reverse). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @returns {Array} Returns `array`. + * @example + * + * var array = [1, 2, 3]; + * + * _.reverse(array); + * // => [3, 2, 1] + * + * console.log(array); + * // => [3, 2, 1] + */ + function reverse(array) { + return array == null ? array : nativeReverse.call(array); + } + + /** + * Creates a slice of `array` from `start` up to, but not including, `end`. + * + * **Note:** This method is used instead of + * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are + * returned. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function slice(array, start, end) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { + start = 0; + end = length; + } + else { + start = start == null ? 0 : toInteger(start); + end = end === undefined$1 ? length : toInteger(end); + } + return baseSlice(array, start, end); + } + + /** + * Uses a binary search to determine the lowest index at which `value` + * should be inserted into `array` in order to maintain its sort order. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * _.sortedIndex([30, 50], 40); + * // => 1 + */ + function sortedIndex(array, value) { + return baseSortedIndex(array, value); + } + + /** + * This method is like `_.sortedIndex` except that it accepts `iteratee` + * which is invoked for `value` and each element of `array` to compute their + * sort ranking. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * var objects = [{ 'x': 4 }, { 'x': 5 }]; + * + * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.sortedIndexBy(objects, { 'x': 4 }, 'x'); + * // => 0 + */ + function sortedIndexBy(array, value, iteratee) { + return baseSortedIndexBy(array, value, getIteratee(iteratee, 2)); + } + + /** + * This method is like `_.indexOf` except that it performs a binary + * search on a sorted `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.sortedIndexOf([4, 5, 5, 5, 6], 5); + * // => 1 + */ + function sortedIndexOf(array, value) { + var length = array == null ? 0 : array.length; + if (length) { + var index = baseSortedIndex(array, value); + if (index < length && eq(array[index], value)) { + return index; + } + } + return -1; + } + + /** + * This method is like `_.sortedIndex` except that it returns the highest + * index at which `value` should be inserted into `array` in order to + * maintain its sort order. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * _.sortedLastIndex([4, 5, 5, 5, 6], 5); + * // => 4 + */ + function sortedLastIndex(array, value) { + return baseSortedIndex(array, value, true); + } + + /** + * This method is like `_.sortedLastIndex` except that it accepts `iteratee` + * which is invoked for `value` and each element of `array` to compute their + * sort ranking. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * var objects = [{ 'x': 4 }, { 'x': 5 }]; + * + * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); + * // => 1 + * + * // The `_.property` iteratee shorthand. + * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x'); + * // => 1 + */ + function sortedLastIndexBy(array, value, iteratee) { + return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true); + } + + /** + * This method is like `_.lastIndexOf` except that it performs a binary + * search on a sorted `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5); + * // => 3 + */ + function sortedLastIndexOf(array, value) { + var length = array == null ? 0 : array.length; + if (length) { + var index = baseSortedIndex(array, value, true) - 1; + if (eq(array[index], value)) { + return index; + } + } + return -1; + } + + /** + * This method is like `_.uniq` except that it's designed and optimized + * for sorted arrays. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.sortedUniq([1, 1, 2]); + * // => [1, 2] + */ + function sortedUniq(array) { + return (array && array.length) + ? baseSortedUniq(array) + : []; + } + + /** + * This method is like `_.uniqBy` except that it's designed and optimized + * for sorted arrays. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor); + * // => [1.1, 2.3] + */ + function sortedUniqBy(array, iteratee) { + return (array && array.length) + ? baseSortedUniq(array, getIteratee(iteratee, 2)) + : []; + } + + /** + * Gets all but the first element of `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.tail([1, 2, 3]); + * // => [2, 3] + */ + function tail(array) { + var length = array == null ? 0 : array.length; + return length ? baseSlice(array, 1, length) : []; + } + + /** + * Creates a slice of `array` with `n` elements taken from the beginning. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.take([1, 2, 3]); + * // => [1] + * + * _.take([1, 2, 3], 2); + * // => [1, 2] + * + * _.take([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.take([1, 2, 3], 0); + * // => [] + */ + function take(array, n, guard) { + if (!(array && array.length)) { + return []; + } + n = (guard || n === undefined$1) ? 1 : toInteger(n); + return baseSlice(array, 0, n < 0 ? 0 : n); + } + + /** + * Creates a slice of `array` with `n` elements taken from the end. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.takeRight([1, 2, 3]); + * // => [3] + * + * _.takeRight([1, 2, 3], 2); + * // => [2, 3] + * + * _.takeRight([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.takeRight([1, 2, 3], 0); + * // => [] + */ + function takeRight(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined$1) ? 1 : toInteger(n); + n = length - n; + return baseSlice(array, n < 0 ? 0 : n, length); + } + + /** + * Creates a slice of `array` with elements taken from the end. Elements are + * taken until `predicate` returns falsey. The predicate is invoked with + * three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.takeRightWhile(users, function(o) { return !o.active; }); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.matches` iteratee shorthand. + * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false }); + * // => objects for ['pebbles'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.takeRightWhile(users, ['active', false]); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.property` iteratee shorthand. + * _.takeRightWhile(users, 'active'); + * // => [] + */ + function takeRightWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), false, true) + : []; + } + + /** + * Creates a slice of `array` with elements taken from the beginning. Elements + * are taken until `predicate` returns falsey. The predicate is invoked with + * three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.takeWhile(users, function(o) { return !o.active; }); + * // => objects for ['barney', 'fred'] + * + * // The `_.matches` iteratee shorthand. + * _.takeWhile(users, { 'user': 'barney', 'active': false }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.takeWhile(users, ['active', false]); + * // => objects for ['barney', 'fred'] + * + * // The `_.property` iteratee shorthand. + * _.takeWhile(users, 'active'); + * // => [] + */ + function takeWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3)) + : []; + } + + /** + * Creates an array of unique values, in order, from all given arrays using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.union([2], [1, 2]); + * // => [2, 1] + */ + var union = baseRest(function(arrays) { + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); + }); + + /** + * This method is like `_.union` except that it accepts `iteratee` which is + * invoked for each element of each `arrays` to generate the criterion by + * which uniqueness is computed. Result values are chosen from the first + * array in which the value occurs. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.unionBy([2.1], [1.2, 2.3], Math.floor); + * // => [2.1, 1.2] + * + * // The `_.property` iteratee shorthand. + * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] + */ + var unionBy = baseRest(function(arrays) { + var iteratee = last(arrays); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined$1; + } + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)); + }); + + /** + * This method is like `_.union` except that it accepts `comparator` which + * is invoked to compare elements of `arrays`. Result values are chosen from + * the first array in which the value occurs. The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of combined values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.unionWith(objects, others, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] + */ + var unionWith = baseRest(function(arrays) { + var comparator = last(arrays); + comparator = typeof comparator == 'function' ? comparator : undefined$1; + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined$1, comparator); + }); + + /** + * Creates a duplicate-free version of an array, using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons, in which only the first occurrence of each element + * is kept. The order of result values is determined by the order they occur + * in the array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.uniq([2, 1, 2]); + * // => [2, 1] + */ + function uniq(array) { + return (array && array.length) ? baseUniq(array) : []; + } + + /** + * This method is like `_.uniq` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the criterion by which + * uniqueness is computed. The order of result values is determined by the + * order they occur in the array. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.uniqBy([2.1, 1.2, 2.3], Math.floor); + * // => [2.1, 1.2] + * + * // The `_.property` iteratee shorthand. + * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] + */ + function uniqBy(array, iteratee) { + return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : []; + } + + /** + * This method is like `_.uniq` except that it accepts `comparator` which + * is invoked to compare elements of `array`. The order of result values is + * determined by the order they occur in the array.The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.uniqWith(objects, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }] + */ + function uniqWith(array, comparator) { + comparator = typeof comparator == 'function' ? comparator : undefined$1; + return (array && array.length) ? baseUniq(array, undefined$1, comparator) : []; + } + + /** + * This method is like `_.zip` except that it accepts an array of grouped + * elements and creates an array regrouping the elements to their pre-zip + * configuration. + * + * @static + * @memberOf _ + * @since 1.2.0 + * @category Array + * @param {Array} array The array of grouped elements to process. + * @returns {Array} Returns the new array of regrouped elements. + * @example + * + * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]); + * // => [['a', 1, true], ['b', 2, false]] + * + * _.unzip(zipped); + * // => [['a', 'b'], [1, 2], [true, false]] + */ + function unzip(array) { + if (!(array && array.length)) { + return []; + } + var length = 0; + array = arrayFilter(array, function(group) { + if (isArrayLikeObject(group)) { + length = nativeMax(group.length, length); + return true; + } + }); + return baseTimes(length, function(index) { + return arrayMap(array, baseProperty(index)); + }); + } + + /** + * This method is like `_.unzip` except that it accepts `iteratee` to specify + * how regrouped values should be combined. The iteratee is invoked with the + * elements of each group: (...group). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Array + * @param {Array} array The array of grouped elements to process. + * @param {Function} [iteratee=_.identity] The function to combine + * regrouped values. + * @returns {Array} Returns the new array of regrouped elements. + * @example + * + * var zipped = _.zip([1, 2], [10, 20], [100, 200]); + * // => [[1, 10, 100], [2, 20, 200]] + * + * _.unzipWith(zipped, _.add); + * // => [3, 30, 300] + */ + function unzipWith(array, iteratee) { + if (!(array && array.length)) { + return []; + } + var result = unzip(array); + if (iteratee == null) { + return result; + } + return arrayMap(result, function(group) { + return apply(iteratee, undefined$1, group); + }); + } + + /** + * Creates an array excluding all given values using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * **Note:** Unlike `_.pull`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...*} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @see _.difference, _.xor + * @example + * + * _.without([2, 1, 2, 3], 1, 2); + * // => [3] + */ + var without = baseRest(function(array, values) { + return isArrayLikeObject(array) + ? baseDifference(array, values) + : []; + }); + + /** + * Creates an array of unique values that is the + * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) + * of the given arrays. The order of result values is determined by the order + * they occur in the arrays. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of filtered values. + * @see _.difference, _.without + * @example + * + * _.xor([2, 1], [2, 3]); + * // => [1, 3] + */ + var xor = baseRest(function(arrays) { + return baseXor(arrayFilter(arrays, isArrayLikeObject)); + }); + + /** + * This method is like `_.xor` except that it accepts `iteratee` which is + * invoked for each element of each `arrays` to generate the criterion by + * which by which they're compared. The order of result values is determined + * by the order they occur in the arrays. The iteratee is invoked with one + * argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [1.2, 3.4] + * + * // The `_.property` iteratee shorthand. + * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 2 }] + */ + var xorBy = baseRest(function(arrays) { + var iteratee = last(arrays); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined$1; + } + return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2)); + }); + + /** + * This method is like `_.xor` except that it accepts `comparator` which is + * invoked to compare elements of `arrays`. The order of result values is + * determined by the order they occur in the arrays. The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.xorWith(objects, others, _.isEqual); + * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] + */ + var xorWith = baseRest(function(arrays) { + var comparator = last(arrays); + comparator = typeof comparator == 'function' ? comparator : undefined$1; + return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined$1, comparator); + }); + + /** + * Creates an array of grouped elements, the first of which contains the + * first elements of the given arrays, the second of which contains the + * second elements of the given arrays, and so on. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @returns {Array} Returns the new array of grouped elements. + * @example + * + * _.zip(['a', 'b'], [1, 2], [true, false]); + * // => [['a', 1, true], ['b', 2, false]] + */ + var zip = baseRest(unzip); + + /** + * This method is like `_.fromPairs` except that it accepts two arrays, + * one of property identifiers and one of corresponding values. + * + * @static + * @memberOf _ + * @since 0.4.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObject(['a', 'b'], [1, 2]); + * // => { 'a': 1, 'b': 2 } + */ + function zipObject(props, values) { + return baseZipObject(props || [], values || [], assignValue); + } + + /** + * This method is like `_.zipObject` except that it supports property paths. + * + * @static + * @memberOf _ + * @since 4.1.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]); + * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } } + */ + function zipObjectDeep(props, values) { + return baseZipObject(props || [], values || [], baseSet); + } + + /** + * This method is like `_.zip` except that it accepts `iteratee` to specify + * how grouped values should be combined. The iteratee is invoked with the + * elements of each group: (...group). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @param {Function} [iteratee=_.identity] The function to combine + * grouped values. + * @returns {Array} Returns the new array of grouped elements. + * @example + * + * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) { + * return a + b + c; + * }); + * // => [111, 222] + */ + var zipWith = baseRest(function(arrays) { + var length = arrays.length, + iteratee = length > 1 ? arrays[length - 1] : undefined$1; + + iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined$1; + return unzipWith(arrays, iteratee); + }); + + /*------------------------------------------------------------------------*/ + + /** + * Creates a `lodash` wrapper instance that wraps `value` with explicit method + * chain sequences enabled. The result of such sequences must be unwrapped + * with `_#value`. + * + * @static + * @memberOf _ + * @since 1.3.0 + * @category Seq + * @param {*} value The value to wrap. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'pebbles', 'age': 1 } + * ]; + * + * var youngest = _ + * .chain(users) + * .sortBy('age') + * .map(function(o) { + * return o.user + ' is ' + o.age; + * }) + * .head() + * .value(); + * // => 'pebbles is 1' + */ + function chain(value) { + var result = lodash(value); + result.__chain__ = true; + return result; + } + + /** + * This method invokes `interceptor` and returns `value`. The interceptor + * is invoked with one argument; (value). The purpose of this method is to + * "tap into" a method chain sequence in order to modify intermediate results. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @returns {*} Returns `value`. + * @example + * + * _([1, 2, 3]) + * .tap(function(array) { + * // Mutate input array. + * array.pop(); + * }) + * .reverse() + * .value(); + * // => [2, 1] + */ + function tap(value, interceptor) { + interceptor(value); + return value; + } + + /** + * This method is like `_.tap` except that it returns the result of `interceptor`. + * The purpose of this method is to "pass thru" values replacing intermediate + * results in a method chain sequence. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Seq + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @returns {*} Returns the result of `interceptor`. + * @example + * + * _(' abc ') + * .chain() + * .trim() + * .thru(function(value) { + * return [value]; + * }) + * .value(); + * // => ['abc'] + */ + function thru(value, interceptor) { + return interceptor(value); + } + + /** + * This method is the wrapper version of `_.at`. + * + * @name at + * @memberOf _ + * @since 1.0.0 + * @category Seq + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; + * + * _(object).at(['a[0].b.c', 'a[1]']).value(); + * // => [3, 4] + */ + var wrapperAt = flatRest(function(paths) { + var length = paths.length, + start = length ? paths[0] : 0, + value = this.__wrapped__, + interceptor = function(object) { return baseAt(object, paths); }; + + if (length > 1 || this.__actions__.length || + !(value instanceof LazyWrapper) || !isIndex(start)) { + return this.thru(interceptor); + } + value = value.slice(start, +start + (length ? 1 : 0)); + value.__actions__.push({ + 'func': thru, + 'args': [interceptor], + 'thisArg': undefined$1 + }); + return new LodashWrapper(value, this.__chain__).thru(function(array) { + if (length && !array.length) { + array.push(undefined$1); + } + return array; + }); + }); + + /** + * Creates a `lodash` wrapper instance with explicit method chain sequences enabled. + * + * @name chain + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 } + * ]; + * + * // A sequence without explicit chaining. + * _(users).head(); + * // => { 'user': 'barney', 'age': 36 } + * + * // A sequence with explicit chaining. + * _(users) + * .chain() + * .head() + * .pick('user') + * .value(); + * // => { 'user': 'barney' } + */ + function wrapperChain() { + return chain(this); + } + + /** + * Executes the chain sequence and returns the wrapped result. + * + * @name commit + * @memberOf _ + * @since 3.2.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2]; + * var wrapped = _(array).push(3); + * + * console.log(array); + * // => [1, 2] + * + * wrapped = wrapped.commit(); + * console.log(array); + * // => [1, 2, 3] + * + * wrapped.last(); + * // => 3 + * + * console.log(array); + * // => [1, 2, 3] + */ + function wrapperCommit() { + return new LodashWrapper(this.value(), this.__chain__); + } + + /** + * Gets the next value on a wrapped object following the + * [iterator protocol](https://mdn.io/iteration_protocols#iterator). + * + * @name next + * @memberOf _ + * @since 4.0.0 + * @category Seq + * @returns {Object} Returns the next iterator value. + * @example + * + * var wrapped = _([1, 2]); + * + * wrapped.next(); + * // => { 'done': false, 'value': 1 } + * + * wrapped.next(); + * // => { 'done': false, 'value': 2 } + * + * wrapped.next(); + * // => { 'done': true, 'value': undefined } + */ + function wrapperNext() { + if (this.__values__ === undefined$1) { + this.__values__ = toArray(this.value()); + } + var done = this.__index__ >= this.__values__.length, + value = done ? undefined$1 : this.__values__[this.__index__++]; + + return { 'done': done, 'value': value }; + } + + /** + * Enables the wrapper to be iterable. + * + * @name Symbol.iterator + * @memberOf _ + * @since 4.0.0 + * @category Seq + * @returns {Object} Returns the wrapper object. + * @example + * + * var wrapped = _([1, 2]); + * + * wrapped[Symbol.iterator]() === wrapped; + * // => true + * + * Array.from(wrapped); + * // => [1, 2] + */ + function wrapperToIterator() { + return this; + } + + /** + * Creates a clone of the chain sequence planting `value` as the wrapped value. + * + * @name plant + * @memberOf _ + * @since 3.2.0 + * @category Seq + * @param {*} value The value to plant. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var wrapped = _([1, 2]).map(square); + * var other = wrapped.plant([3, 4]); + * + * other.value(); + * // => [9, 16] + * + * wrapped.value(); + * // => [1, 4] + */ + function wrapperPlant(value) { + var result, + parent = this; + + while (parent instanceof baseLodash) { + var clone = wrapperClone(parent); + clone.__index__ = 0; + clone.__values__ = undefined$1; + if (result) { + previous.__wrapped__ = clone; + } else { + result = clone; + } + var previous = clone; + parent = parent.__wrapped__; + } + previous.__wrapped__ = value; + return result; + } + + /** + * This method is the wrapper version of `_.reverse`. + * + * **Note:** This method mutates the wrapped array. + * + * @name reverse + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2, 3]; + * + * _(array).reverse().value() + * // => [3, 2, 1] + * + * console.log(array); + * // => [3, 2, 1] + */ + function wrapperReverse() { + var value = this.__wrapped__; + if (value instanceof LazyWrapper) { + var wrapped = value; + if (this.__actions__.length) { + wrapped = new LazyWrapper(this); + } + wrapped = wrapped.reverse(); + wrapped.__actions__.push({ + 'func': thru, + 'args': [reverse], + 'thisArg': undefined$1 + }); + return new LodashWrapper(wrapped, this.__chain__); + } + return this.thru(reverse); + } + + /** + * Executes the chain sequence to resolve the unwrapped value. + * + * @name value + * @memberOf _ + * @since 0.1.0 + * @alias toJSON, valueOf + * @category Seq + * @returns {*} Returns the resolved unwrapped value. + * @example + * + * _([1, 2, 3]).value(); + * // => [1, 2, 3] + */ + function wrapperValue() { + return baseWrapperValue(this.__wrapped__, this.__actions__); + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The corresponding value of + * each key is the number of times the key was returned by `iteratee`. The + * iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.countBy([6.1, 4.2, 6.3], Math.floor); + * // => { '4': 1, '6': 2 } + * + * // The `_.property` iteratee shorthand. + * _.countBy(['one', 'two', 'three'], 'length'); + * // => { '3': 2, '5': 1 } + */ + var countBy = createAggregator(function(result, value, key) { + if (hasOwnProperty.call(result, key)) { + ++result[key]; + } else { + baseAssignValue(result, key, 1); + } + }); + + /** + * Checks if `predicate` returns truthy for **all** elements of `collection`. + * Iteration is stopped once `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index|key, collection). + * + * **Note:** This method returns `true` for + * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because + * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of + * elements of empty collections. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + * @example + * + * _.every([true, 1, null, 'yes'], Boolean); + * // => false + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.every(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // The `_.matchesProperty` iteratee shorthand. + * _.every(users, ['active', false]); + * // => true + * + * // The `_.property` iteratee shorthand. + * _.every(users, 'active'); + * // => false + */ + function every(collection, predicate, guard) { + var func = isArray(collection) ? arrayEvery : baseEvery; + if (guard && isIterateeCall(collection, predicate, guard)) { + predicate = undefined$1; + } + return func(collection, getIteratee(predicate, 3)); + } + + /** + * Iterates over elements of `collection`, returning an array of all elements + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * **Note:** Unlike `_.remove`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.reject + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * _.filter(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.filter(users, { 'age': 36, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.filter(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.filter(users, 'active'); + * // => objects for ['barney'] + * + * // Combining several predicates using `_.overEvery` or `_.overSome`. + * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]])); + * // => objects for ['fred', 'barney'] + */ + function filter(collection, predicate) { + var func = isArray(collection) ? arrayFilter : baseFilter; + return func(collection, getIteratee(predicate, 3)); + } + + /** + * Iterates over elements of `collection`, returning the first element + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false }, + * { 'user': 'pebbles', 'age': 1, 'active': true } + * ]; + * + * _.find(users, function(o) { return o.age < 40; }); + * // => object for 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.find(users, { 'age': 1, 'active': true }); + * // => object for 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.find(users, ['active', false]); + * // => object for 'fred' + * + * // The `_.property` iteratee shorthand. + * _.find(users, 'active'); + * // => object for 'barney' + */ + var find = createFind(findIndex); + + /** + * This method is like `_.find` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=collection.length-1] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * _.findLast([1, 2, 3, 4], function(n) { + * return n % 2 == 1; + * }); + * // => 3 + */ + var findLast = createFind(findLastIndex); + + /** + * Creates a flattened array of values by running each element in `collection` + * thru `iteratee` and flattening the mapped results. The iteratee is invoked + * with three arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [n, n]; + * } + * + * _.flatMap([1, 2], duplicate); + * // => [1, 1, 2, 2] + */ + function flatMap(collection, iteratee) { + return baseFlatten(map(collection, iteratee), 1); + } + + /** + * This method is like `_.flatMap` except that it recursively flattens the + * mapped results. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [[[n, n]]]; + * } + * + * _.flatMapDeep([1, 2], duplicate); + * // => [1, 1, 2, 2] + */ + function flatMapDeep(collection, iteratee) { + return baseFlatten(map(collection, iteratee), INFINITY); + } + + /** + * This method is like `_.flatMap` except that it recursively flattens the + * mapped results up to `depth` times. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {number} [depth=1] The maximum recursion depth. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [[[n, n]]]; + * } + * + * _.flatMapDepth([1, 2], duplicate, 2); + * // => [[1, 1], [2, 2]] + */ + function flatMapDepth(collection, iteratee, depth) { + depth = depth === undefined$1 ? 1 : toInteger(depth); + return baseFlatten(map(collection, iteratee), depth); + } + + /** + * Iterates over elements of `collection` and invokes `iteratee` for each element. + * The iteratee is invoked with three arguments: (value, index|key, collection). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * **Note:** As with other "Collections" methods, objects with a "length" + * property are iterated like arrays. To avoid this behavior use `_.forIn` + * or `_.forOwn` for object iteration. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias each + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEachRight + * @example + * + * _.forEach([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `1` then `2`. + * + * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ + function forEach(collection, iteratee) { + var func = isArray(collection) ? arrayEach : baseEach; + return func(collection, getIteratee(iteratee, 3)); + } + + /** + * This method is like `_.forEach` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @alias eachRight + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEach + * @example + * + * _.forEachRight([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `2` then `1`. + */ + function forEachRight(collection, iteratee) { + var func = isArray(collection) ? arrayEachRight : baseEachRight; + return func(collection, getIteratee(iteratee, 3)); + } + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The order of grouped values + * is determined by the order they occur in `collection`. The corresponding + * value of each key is an array of elements responsible for generating the + * key. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.groupBy([6.1, 4.2, 6.3], Math.floor); + * // => { '4': [4.2], '6': [6.1, 6.3] } + * + * // The `_.property` iteratee shorthand. + * _.groupBy(['one', 'two', 'three'], 'length'); + * // => { '3': ['one', 'two'], '5': ['three'] } + */ + var groupBy = createAggregator(function(result, value, key) { + if (hasOwnProperty.call(result, key)) { + result[key].push(value); + } else { + baseAssignValue(result, key, [value]); + } + }); + + /** + * Checks if `value` is in `collection`. If `collection` is a string, it's + * checked for a substring of `value`, otherwise + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * is used for equality comparisons. If `fromIndex` is negative, it's used as + * the offset from the end of `collection`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. + * @returns {boolean} Returns `true` if `value` is found, else `false`. + * @example + * + * _.includes([1, 2, 3], 1); + * // => true + * + * _.includes([1, 2, 3], 1, 2); + * // => false + * + * _.includes({ 'a': 1, 'b': 2 }, 1); + * // => true + * + * _.includes('abcd', 'bc'); + * // => true + */ + function includes(collection, value, fromIndex, guard) { + collection = isArrayLike(collection) ? collection : values(collection); + fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0; + + var length = collection.length; + if (fromIndex < 0) { + fromIndex = nativeMax(length + fromIndex, 0); + } + return isString(collection) + ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1) + : (!!length && baseIndexOf(collection, value, fromIndex) > -1); + } + + /** + * Invokes the method at `path` of each element in `collection`, returning + * an array of the results of each invoked method. Any additional arguments + * are provided to each invoked method. If `path` is a function, it's invoked + * for, and `this` bound to, each element in `collection`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Array|Function|string} path The path of the method to invoke or + * the function invoked per iteration. + * @param {...*} [args] The arguments to invoke each method with. + * @returns {Array} Returns the array of results. + * @example + * + * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort'); + * // => [[1, 5, 7], [1, 2, 3]] + * + * _.invokeMap([123, 456], String.prototype.split, ''); + * // => [['1', '2', '3'], ['4', '5', '6']] + */ + var invokeMap = baseRest(function(collection, path, args) { + var index = -1, + isFunc = typeof path == 'function', + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value) { + result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args); + }); + return result; + }); + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The corresponding value of + * each key is the last element responsible for generating the key. The + * iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * var array = [ + * { 'dir': 'left', 'code': 97 }, + * { 'dir': 'right', 'code': 100 } + * ]; + * + * _.keyBy(array, function(o) { + * return String.fromCharCode(o.code); + * }); + * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } + * + * _.keyBy(array, 'dir'); + * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } + */ + var keyBy = createAggregator(function(result, value, key) { + baseAssignValue(result, key, value); + }); + + /** + * Creates an array of values by running each element in `collection` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. + * + * The guarded methods are: + * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, + * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, + * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, + * `template`, `trim`, `trimEnd`, `trimStart`, and `words` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + * @example + * + * function square(n) { + * return n * n; + * } + * + * _.map([4, 8], square); + * // => [16, 64] + * + * _.map({ 'a': 4, 'b': 8 }, square); + * // => [16, 64] (iteration order is not guaranteed) + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * // The `_.property` iteratee shorthand. + * _.map(users, 'user'); + * // => ['barney', 'fred'] + */ + function map(collection, iteratee) { + var func = isArray(collection) ? arrayMap : baseMap; + return func(collection, getIteratee(iteratee, 3)); + } + + /** + * This method is like `_.sortBy` except that it allows specifying the sort + * orders of the iteratees to sort by. If `orders` is unspecified, all values + * are sorted in ascending order. Otherwise, specify an order of "desc" for + * descending or "asc" for ascending sort order of corresponding values. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]] + * The iteratees to sort by. + * @param {string[]} [orders] The sort orders of `iteratees`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 34 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'barney', 'age': 36 } + * ]; + * + * // Sort by `user` in ascending order and by `age` in descending order. + * _.orderBy(users, ['user', 'age'], ['asc', 'desc']); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] + */ + function orderBy(collection, iteratees, orders, guard) { + if (collection == null) { + return []; + } + if (!isArray(iteratees)) { + iteratees = iteratees == null ? [] : [iteratees]; + } + orders = guard ? undefined$1 : orders; + if (!isArray(orders)) { + orders = orders == null ? [] : [orders]; + } + return baseOrderBy(collection, iteratees, orders); + } + + /** + * Creates an array of elements split into two groups, the first of which + * contains elements `predicate` returns truthy for, the second of which + * contains elements `predicate` returns falsey for. The predicate is + * invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the array of grouped elements. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true }, + * { 'user': 'pebbles', 'age': 1, 'active': false } + * ]; + * + * _.partition(users, function(o) { return o.active; }); + * // => objects for [['fred'], ['barney', 'pebbles']] + * + * // The `_.matches` iteratee shorthand. + * _.partition(users, { 'age': 1, 'active': false }); + * // => objects for [['pebbles'], ['barney', 'fred']] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.partition(users, ['active', false]); + * // => objects for [['barney', 'pebbles'], ['fred']] + * + * // The `_.property` iteratee shorthand. + * _.partition(users, 'active'); + * // => objects for [['fred'], ['barney', 'pebbles']] + */ + var partition = createAggregator(function(result, value, key) { + result[key ? 0 : 1].push(value); + }, function() { return [[], []]; }); + + /** + * Reduces `collection` to a value which is the accumulated result of running + * each element in `collection` thru `iteratee`, where each successive + * invocation is supplied the return value of the previous. If `accumulator` + * is not given, the first element of `collection` is used as the initial + * value. The iteratee is invoked with four arguments: + * (accumulator, value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.reduce`, `_.reduceRight`, and `_.transform`. + * + * The guarded methods are: + * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, + * and `sortBy` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduceRight + * @example + * + * _.reduce([1, 2], function(sum, n) { + * return sum + n; + * }, 0); + * // => 3 + * + * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * return result; + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) + */ + function reduce(collection, iteratee, accumulator) { + var func = isArray(collection) ? arrayReduce : baseReduce, + initAccum = arguments.length < 3; + + return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach); + } + + /** + * This method is like `_.reduce` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduce + * @example + * + * var array = [[0, 1], [2, 3], [4, 5]]; + * + * _.reduceRight(array, function(flattened, other) { + * return flattened.concat(other); + * }, []); + * // => [4, 5, 2, 3, 0, 1] + */ + function reduceRight(collection, iteratee, accumulator) { + var func = isArray(collection) ? arrayReduceRight : baseReduce, + initAccum = arguments.length < 3; + + return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight); + } + + /** + * The opposite of `_.filter`; this method returns the elements of `collection` + * that `predicate` does **not** return truthy for. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.filter + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true } + * ]; + * + * _.reject(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.reject(users, { 'age': 40, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.reject(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.reject(users, 'active'); + * // => objects for ['barney'] + */ + function reject(collection, predicate) { + var func = isArray(collection) ? arrayFilter : baseFilter; + return func(collection, negate(getIteratee(predicate, 3))); + } + + /** + * Gets a random element from `collection`. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Collection + * @param {Array|Object} collection The collection to sample. + * @returns {*} Returns the random element. + * @example + * + * _.sample([1, 2, 3, 4]); + * // => 2 + */ + function sample(collection) { + var func = isArray(collection) ? arraySample : baseSample; + return func(collection); + } + + /** + * Gets `n` random elements at unique keys from `collection` up to the + * size of `collection`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to sample. + * @param {number} [n=1] The number of elements to sample. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the random elements. + * @example + * + * _.sampleSize([1, 2, 3], 2); + * // => [3, 1] + * + * _.sampleSize([1, 2, 3], 4); + * // => [2, 3, 1] + */ + function sampleSize(collection, n, guard) { + if ((guard ? isIterateeCall(collection, n, guard) : n === undefined$1)) { + n = 1; + } else { + n = toInteger(n); + } + var func = isArray(collection) ? arraySampleSize : baseSampleSize; + return func(collection, n); + } + + /** + * Creates an array of shuffled values, using a version of the + * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to shuffle. + * @returns {Array} Returns the new shuffled array. + * @example + * + * _.shuffle([1, 2, 3, 4]); + * // => [4, 1, 3, 2] + */ + function shuffle(collection) { + var func = isArray(collection) ? arrayShuffle : baseShuffle; + return func(collection); + } + + /** + * Gets the size of `collection` by returning its length for array-like + * values or the number of own enumerable string keyed properties for objects. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @returns {number} Returns the collection size. + * @example + * + * _.size([1, 2, 3]); + * // => 3 + * + * _.size({ 'a': 1, 'b': 2 }); + * // => 2 + * + * _.size('pebbles'); + * // => 7 + */ + function size(collection) { + if (collection == null) { + return 0; + } + if (isArrayLike(collection)) { + return isString(collection) ? stringSize(collection) : collection.length; + } + var tag = getTag(collection); + if (tag == mapTag || tag == setTag) { + return collection.size; + } + return baseKeys(collection).length; + } + + /** + * Checks if `predicate` returns truthy for **any** element of `collection`. + * Iteration is stopped once `predicate` returns truthy. The predicate is + * invoked with three arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + * @example + * + * _.some([null, 0, 'yes', false], Boolean); + * // => true + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.some(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // The `_.matchesProperty` iteratee shorthand. + * _.some(users, ['active', false]); + * // => true + * + * // The `_.property` iteratee shorthand. + * _.some(users, 'active'); + * // => true + */ + function some(collection, predicate, guard) { + var func = isArray(collection) ? arraySome : baseSome; + if (guard && isIterateeCall(collection, predicate, guard)) { + predicate = undefined$1; + } + return func(collection, getIteratee(predicate, 3)); + } + + /** + * Creates an array of elements, sorted in ascending order by the results of + * running each element in a collection thru each iteratee. This method + * performs a stable sort, that is, it preserves the original sort order of + * equal elements. The iteratees are invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {...(Function|Function[])} [iteratees=[_.identity]] + * The iteratees to sort by. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 30 }, + * { 'user': 'barney', 'age': 34 } + * ]; + * + * _.sortBy(users, [function(o) { return o.user; }]); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] + * + * _.sortBy(users, ['user', 'age']); + * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] + */ + var sortBy = baseRest(function(collection, iteratees) { + if (collection == null) { + return []; + } + var length = iteratees.length; + if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { + iteratees = []; + } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { + iteratees = [iteratees[0]]; + } + return baseOrderBy(collection, baseFlatten(iteratees, 1), []); + }); + + /*------------------------------------------------------------------------*/ + + /** + * Gets the timestamp of the number of milliseconds that have elapsed since + * the Unix epoch (1 January 1970 00:00:00 UTC). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Date + * @returns {number} Returns the timestamp. + * @example + * + * _.defer(function(stamp) { + * console.log(_.now() - stamp); + * }, _.now()); + * // => Logs the number of milliseconds it took for the deferred invocation. + */ + var now = ctxNow || function() { + return root.Date.now(); + }; + + /*------------------------------------------------------------------------*/ + + /** + * The opposite of `_.before`; this method creates a function that invokes + * `func` once it's called `n` or more times. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {number} n The number of calls before `func` is invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var saves = ['profile', 'settings']; + * + * var done = _.after(saves.length, function() { + * console.log('done saving!'); + * }); + * + * _.forEach(saves, function(type) { + * asyncSave({ 'type': type, 'complete': done }); + * }); + * // => Logs 'done saving!' after the two async saves have completed. + */ + function after(n, func) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + n = toInteger(n); + return function() { + if (--n < 1) { + return func.apply(this, arguments); + } + }; + } + + /** + * Creates a function that invokes `func`, with up to `n` arguments, + * ignoring any additional arguments. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to cap arguments for. + * @param {number} [n=func.length] The arity cap. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new capped function. + * @example + * + * _.map(['6', '8', '10'], _.ary(parseInt, 1)); + * // => [6, 8, 10] + */ + function ary(func, n, guard) { + n = guard ? undefined$1 : n; + n = (func && n == null) ? func.length : n; + return createWrap(func, WRAP_ARY_FLAG, undefined$1, undefined$1, undefined$1, undefined$1, n); + } + + /** + * Creates a function that invokes `func`, with the `this` binding and arguments + * of the created function, while it's called less than `n` times. Subsequent + * calls to the created function return the result of the last `func` invocation. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {number} n The number of calls at which `func` is no longer invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * jQuery(element).on('click', _.before(5, addContactToList)); + * // => Allows adding up to 4 contacts to the list. + */ + function before(n, func) { + var result; + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + n = toInteger(n); + return function() { + if (--n > 0) { + result = func.apply(this, arguments); + } + if (n <= 1) { + func = undefined$1; + } + return result; + }; + } + + /** + * Creates a function that invokes `func` with the `this` binding of `thisArg` + * and `partials` prepended to the arguments it receives. + * + * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for partially applied arguments. + * + * **Note:** Unlike native `Function#bind`, this method doesn't set the "length" + * property of bound functions. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to bind. + * @param {*} thisArg The `this` binding of `func`. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * function greet(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * + * var object = { 'user': 'fred' }; + * + * var bound = _.bind(greet, object, 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * // Bound with placeholders. + * var bound = _.bind(greet, object, _, '!'); + * bound('hi'); + * // => 'hi fred!' + */ + var bind = baseRest(function(func, thisArg, partials) { + var bitmask = WRAP_BIND_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, getHolder(bind)); + bitmask |= WRAP_PARTIAL_FLAG; + } + return createWrap(func, bitmask, thisArg, partials, holders); + }); + + /** + * Creates a function that invokes the method at `object[key]` with `partials` + * prepended to the arguments it receives. + * + * This method differs from `_.bind` by allowing bound functions to reference + * methods that may be redefined or don't yet exist. See + * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern) + * for more details. + * + * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * @static + * @memberOf _ + * @since 0.10.0 + * @category Function + * @param {Object} object The object to invoke the method on. + * @param {string} key The key of the method. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * var object = { + * 'user': 'fred', + * 'greet': function(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * }; + * + * var bound = _.bindKey(object, 'greet', 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * object.greet = function(greeting, punctuation) { + * return greeting + 'ya ' + this.user + punctuation; + * }; + * + * bound('!'); + * // => 'hiya fred!' + * + * // Bound with placeholders. + * var bound = _.bindKey(object, 'greet', _, '!'); + * bound('hi'); + * // => 'hiya fred!' + */ + var bindKey = baseRest(function(object, key, partials) { + var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, getHolder(bindKey)); + bitmask |= WRAP_PARTIAL_FLAG; + } + return createWrap(key, bitmask, object, partials, holders); + }); + + /** + * Creates a function that accepts arguments of `func` and either invokes + * `func` returning its result, if at least `arity` number of arguments have + * been provided, or returns a function that accepts the remaining `func` + * arguments, and so on. The arity of `func` may be specified if `func.length` + * is not sufficient. + * + * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for provided arguments. + * + * **Note:** This method doesn't set the "length" property of curried functions. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curry(abc); + * + * curried(1)(2)(3); + * // => [1, 2, 3] + * + * curried(1, 2)(3); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // Curried with placeholders. + * curried(1)(_, 3)(2); + * // => [1, 2, 3] + */ + function curry(func, arity, guard) { + arity = guard ? undefined$1 : arity; + var result = createWrap(func, WRAP_CURRY_FLAG, undefined$1, undefined$1, undefined$1, undefined$1, undefined$1, arity); + result.placeholder = curry.placeholder; + return result; + } + + /** + * This method is like `_.curry` except that arguments are applied to `func` + * in the manner of `_.partialRight` instead of `_.partial`. + * + * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for provided arguments. + * + * **Note:** This method doesn't set the "length" property of curried functions. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curryRight(abc); + * + * curried(3)(2)(1); + * // => [1, 2, 3] + * + * curried(2, 3)(1); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // Curried with placeholders. + * curried(3)(1, _)(2); + * // => [1, 2, 3] + */ + function curryRight(func, arity, guard) { + arity = guard ? undefined$1 : arity; + var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined$1, undefined$1, undefined$1, undefined$1, undefined$1, arity); + result.placeholder = curryRight.placeholder; + return result; + } + + /** + * Creates a debounced function that delays invoking `func` until after `wait` + * milliseconds have elapsed since the last time the debounced function was + * invoked. The debounced function comes with a `cancel` method to cancel + * delayed `func` invocations and a `flush` method to immediately invoke them. + * Provide `options` to indicate whether `func` should be invoked on the + * leading and/or trailing edge of the `wait` timeout. The `func` is invoked + * with the last arguments provided to the debounced function. Subsequent + * calls to the debounced function return the result of the last `func` + * invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the debounced function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.debounce` and `_.throttle`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to debounce. + * @param {number} [wait=0] The number of milliseconds to delay. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=false] + * Specify invoking on the leading edge of the timeout. + * @param {number} [options.maxWait] + * The maximum time `func` is allowed to be delayed before it's invoked. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new debounced function. + * @example + * + * // Avoid costly calculations while the window size is in flux. + * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); + * + * // Invoke `sendMail` when clicked, debouncing subsequent calls. + * jQuery(element).on('click', _.debounce(sendMail, 300, { + * 'leading': true, + * 'trailing': false + * })); + * + * // Ensure `batchLog` is invoked once after 1 second of debounced calls. + * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); + * var source = new EventSource('/stream'); + * jQuery(source).on('message', debounced); + * + * // Cancel the trailing debounced invocation. + * jQuery(window).on('popstate', debounced.cancel); + */ + function debounce(func, wait, options) { + var lastArgs, + lastThis, + maxWait, + result, + timerId, + lastCallTime, + lastInvokeTime = 0, + leading = false, + maxing = false, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + wait = toNumber(wait) || 0; + if (isObject(options)) { + leading = !!options.leading; + maxing = 'maxWait' in options; + maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + + function invokeFunc(time) { + var args = lastArgs, + thisArg = lastThis; + + lastArgs = lastThis = undefined$1; + lastInvokeTime = time; + result = func.apply(thisArg, args); + return result; + } + + function leadingEdge(time) { + // Reset any `maxWait` timer. + lastInvokeTime = time; + // Start the timer for the trailing edge. + timerId = setTimeout(timerExpired, wait); + // Invoke the leading edge. + return leading ? invokeFunc(time) : result; + } + + function remainingWait(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime, + timeWaiting = wait - timeSinceLastCall; + + return maxing + ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) + : timeWaiting; + } + + function shouldInvoke(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime; + + // Either this is the first call, activity has stopped and we're at the + // trailing edge, the system time has gone backwards and we're treating + // it as the trailing edge, or we've hit the `maxWait` limit. + return (lastCallTime === undefined$1 || (timeSinceLastCall >= wait) || + (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); + } + + function timerExpired() { + var time = now(); + if (shouldInvoke(time)) { + return trailingEdge(time); + } + // Restart the timer. + timerId = setTimeout(timerExpired, remainingWait(time)); + } + + function trailingEdge(time) { + timerId = undefined$1; + + // Only invoke if we have `lastArgs` which means `func` has been + // debounced at least once. + if (trailing && lastArgs) { + return invokeFunc(time); + } + lastArgs = lastThis = undefined$1; + return result; + } + + function cancel() { + if (timerId !== undefined$1) { + clearTimeout(timerId); + } + lastInvokeTime = 0; + lastArgs = lastCallTime = lastThis = timerId = undefined$1; + } + + function flush() { + return timerId === undefined$1 ? result : trailingEdge(now()); + } + + function debounced() { + var time = now(), + isInvoking = shouldInvoke(time); + + lastArgs = arguments; + lastThis = this; + lastCallTime = time; + + if (isInvoking) { + if (timerId === undefined$1) { + return leadingEdge(lastCallTime); + } + if (maxing) { + // Handle invocations in a tight loop. + clearTimeout(timerId); + timerId = setTimeout(timerExpired, wait); + return invokeFunc(lastCallTime); + } + } + if (timerId === undefined$1) { + timerId = setTimeout(timerExpired, wait); + } + return result; + } + debounced.cancel = cancel; + debounced.flush = flush; + return debounced; + } + + /** + * Defers invoking the `func` until the current call stack has cleared. Any + * additional arguments are provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to defer. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {number} Returns the timer id. + * @example + * + * _.defer(function(text) { + * console.log(text); + * }, 'deferred'); + * // => Logs 'deferred' after one millisecond. + */ + var defer = baseRest(function(func, args) { + return baseDelay(func, 1, args); + }); + + /** + * Invokes `func` after `wait` milliseconds. Any additional arguments are + * provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {number} Returns the timer id. + * @example + * + * _.delay(function(text) { + * console.log(text); + * }, 1000, 'later'); + * // => Logs 'later' after one second. + */ + var delay = baseRest(function(func, wait, args) { + return baseDelay(func, toNumber(wait) || 0, args); + }); + + /** + * Creates a function that invokes `func` with arguments reversed. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to flip arguments for. + * @returns {Function} Returns the new flipped function. + * @example + * + * var flipped = _.flip(function() { + * return _.toArray(arguments); + * }); + * + * flipped('a', 'b', 'c', 'd'); + * // => ['d', 'c', 'b', 'a'] + */ + function flip(func) { + return createWrap(func, WRAP_FLIP_FLAG); + } + + /** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `clear`, `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ + function memoize(func, resolver) { + if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result) || cache; + return result; + }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; + } + + // Expose `MapCache`. + memoize.Cache = MapCache; + + /** + * Creates a function that negates the result of the predicate `func`. The + * `func` predicate is invoked with the `this` binding and arguments of the + * created function. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} predicate The predicate to negate. + * @returns {Function} Returns the new negated function. + * @example + * + * function isEven(n) { + * return n % 2 == 0; + * } + * + * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); + * // => [1, 3, 5] + */ + function negate(predicate) { + if (typeof predicate != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return function() { + var args = arguments; + switch (args.length) { + case 0: return !predicate.call(this); + case 1: return !predicate.call(this, args[0]); + case 2: return !predicate.call(this, args[0], args[1]); + case 3: return !predicate.call(this, args[0], args[1], args[2]); + } + return !predicate.apply(this, args); + }; + } + + /** + * Creates a function that is restricted to invoking `func` once. Repeat calls + * to the function return the value of the first invocation. The `func` is + * invoked with the `this` binding and arguments of the created function. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var initialize = _.once(createApplication); + * initialize(); + * initialize(); + * // => `createApplication` is invoked once + */ + function once(func) { + return before(2, func); + } + + /** + * Creates a function that invokes `func` with its arguments transformed. + * + * @static + * @since 4.0.0 + * @memberOf _ + * @category Function + * @param {Function} func The function to wrap. + * @param {...(Function|Function[])} [transforms=[_.identity]] + * The argument transforms. + * @returns {Function} Returns the new function. + * @example + * + * function doubled(n) { + * return n * 2; + * } + * + * function square(n) { + * return n * n; + * } + * + * var func = _.overArgs(function(x, y) { + * return [x, y]; + * }, [square, doubled]); + * + * func(9, 3); + * // => [81, 6] + * + * func(10, 5); + * // => [100, 10] + */ + var overArgs = castRest(function(func, transforms) { + transforms = (transforms.length == 1 && isArray(transforms[0])) + ? arrayMap(transforms[0], baseUnary(getIteratee())) + : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee())); + + var funcsLength = transforms.length; + return baseRest(function(args) { + var index = -1, + length = nativeMin(args.length, funcsLength); + + while (++index < length) { + args[index] = transforms[index].call(this, args[index]); + } + return apply(func, this, args); + }); + }); + + /** + * Creates a function that invokes `func` with `partials` prepended to the + * arguments it receives. This method is like `_.bind` except it does **not** + * alter the `this` binding. + * + * The `_.partial.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * **Note:** This method doesn't set the "length" property of partially + * applied functions. + * + * @static + * @memberOf _ + * @since 0.2.0 + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example + * + * function greet(greeting, name) { + * return greeting + ' ' + name; + * } + * + * var sayHelloTo = _.partial(greet, 'hello'); + * sayHelloTo('fred'); + * // => 'hello fred' + * + * // Partially applied with placeholders. + * var greetFred = _.partial(greet, _, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + */ + var partial = baseRest(function(func, partials) { + var holders = replaceHolders(partials, getHolder(partial)); + return createWrap(func, WRAP_PARTIAL_FLAG, undefined$1, partials, holders); + }); + + /** + * This method is like `_.partial` except that partially applied arguments + * are appended to the arguments it receives. + * + * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * **Note:** This method doesn't set the "length" property of partially + * applied functions. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example + * + * function greet(greeting, name) { + * return greeting + ' ' + name; + * } + * + * var greetFred = _.partialRight(greet, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + * + * // Partially applied with placeholders. + * var sayHelloTo = _.partialRight(greet, 'hello', _); + * sayHelloTo('fred'); + * // => 'hello fred' + */ + var partialRight = baseRest(function(func, partials) { + var holders = replaceHolders(partials, getHolder(partialRight)); + return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined$1, partials, holders); + }); + + /** + * Creates a function that invokes `func` with arguments arranged according + * to the specified `indexes` where the argument value at the first index is + * provided as the first argument, the argument value at the second index is + * provided as the second argument, and so on. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to rearrange arguments for. + * @param {...(number|number[])} indexes The arranged argument indexes. + * @returns {Function} Returns the new function. + * @example + * + * var rearged = _.rearg(function(a, b, c) { + * return [a, b, c]; + * }, [2, 0, 1]); + * + * rearged('b', 'c', 'a') + * // => ['a', 'b', 'c'] + */ + var rearg = flatRest(function(func, indexes) { + return createWrap(func, WRAP_REARG_FLAG, undefined$1, undefined$1, undefined$1, indexes); + }); + + /** + * Creates a function that invokes `func` with the `this` binding of the + * created function and arguments from `start` and beyond provided as + * an array. + * + * **Note:** This method is based on the + * [rest parameter](https://mdn.io/rest_parameters). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + * @example + * + * var say = _.rest(function(what, names) { + * return what + ' ' + _.initial(names).join(', ') + + * (_.size(names) > 1 ? ', & ' : '') + _.last(names); + * }); + * + * say('hello', 'fred', 'barney', 'pebbles'); + * // => 'hello fred, barney, & pebbles' + */ + function rest(func, start) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + start = start === undefined$1 ? start : toInteger(start); + return baseRest(func, start); + } + + /** + * Creates a function that invokes `func` with the `this` binding of the + * create function and an array of arguments much like + * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply). + * + * **Note:** This method is based on the + * [spread operator](https://mdn.io/spread_operator). + * + * @static + * @memberOf _ + * @since 3.2.0 + * @category Function + * @param {Function} func The function to spread arguments over. + * @param {number} [start=0] The start position of the spread. + * @returns {Function} Returns the new function. + * @example + * + * var say = _.spread(function(who, what) { + * return who + ' says ' + what; + * }); + * + * say(['fred', 'hello']); + * // => 'fred says hello' + * + * var numbers = Promise.all([ + * Promise.resolve(40), + * Promise.resolve(36) + * ]); + * + * numbers.then(_.spread(function(x, y) { + * return x + y; + * })); + * // => a Promise of 76 + */ + function spread(func, start) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + start = start == null ? 0 : nativeMax(toInteger(start), 0); + return baseRest(function(args) { + var array = args[start], + otherArgs = castSlice(args, 0, start); + + if (array) { + arrayPush(otherArgs, array); + } + return apply(func, this, otherArgs); + }); + } + + /** + * Creates a throttled function that only invokes `func` at most once per + * every `wait` milliseconds. The throttled function comes with a `cancel` + * method to cancel delayed `func` invocations and a `flush` method to + * immediately invoke them. Provide `options` to indicate whether `func` + * should be invoked on the leading and/or trailing edge of the `wait` + * timeout. The `func` is invoked with the last arguments provided to the + * throttled function. Subsequent calls to the throttled function return the + * result of the last `func` invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the throttled function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.throttle` and `_.debounce`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to throttle. + * @param {number} [wait=0] The number of milliseconds to throttle invocations to. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=true] + * Specify invoking on the leading edge of the timeout. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new throttled function. + * @example + * + * // Avoid excessively updating the position while scrolling. + * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); + * + * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. + * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); + * jQuery(element).on('click', throttled); + * + * // Cancel the trailing throttled invocation. + * jQuery(window).on('popstate', throttled.cancel); + */ + function throttle(func, wait, options) { + var leading = true, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (isObject(options)) { + leading = 'leading' in options ? !!options.leading : leading; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + return debounce(func, wait, { + 'leading': leading, + 'maxWait': wait, + 'trailing': trailing + }); + } + + /** + * Creates a function that accepts up to one argument, ignoring any + * additional arguments. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + * @example + * + * _.map(['6', '8', '10'], _.unary(parseInt)); + * // => [6, 8, 10] + */ + function unary(func) { + return ary(func, 1); + } + + /** + * Creates a function that provides `value` to `wrapper` as its first + * argument. Any additional arguments provided to the function are appended + * to those provided to the `wrapper`. The wrapper is invoked with the `this` + * binding of the created function. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {*} value The value to wrap. + * @param {Function} [wrapper=identity] The wrapper function. + * @returns {Function} Returns the new function. + * @example + * + * var p = _.wrap(_.escape, function(func, text) { + * return '<p>' + func(text) + '</p>'; + * }); + * + * p('fred, barney, & pebbles'); + * // => '<p>fred, barney, & pebbles</p>' + */ + function wrap(value, wrapper) { + return partial(castFunction(wrapper), value); + } + + /*------------------------------------------------------------------------*/ + + /** + * Casts `value` as an array if it's not one. + * + * @static + * @memberOf _ + * @since 4.4.0 + * @category Lang + * @param {*} value The value to inspect. + * @returns {Array} Returns the cast array. + * @example + * + * _.castArray(1); + * // => [1] + * + * _.castArray({ 'a': 1 }); + * // => [{ 'a': 1 }] + * + * _.castArray('abc'); + * // => ['abc'] + * + * _.castArray(null); + * // => [null] + * + * _.castArray(undefined); + * // => [undefined] + * + * _.castArray(); + * // => [] + * + * var array = [1, 2, 3]; + * console.log(_.castArray(array) === array); + * // => true + */ + function castArray() { + if (!arguments.length) { + return []; + } + var value = arguments[0]; + return isArray(value) ? value : [value]; + } + + /** + * Creates a shallow clone of `value`. + * + * **Note:** This method is loosely based on the + * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) + * and supports cloning arrays, array buffers, booleans, date objects, maps, + * numbers, `Object` objects, regexes, sets, strings, symbols, and typed + * arrays. The own enumerable properties of `arguments` objects are cloned + * as plain objects. An empty object is returned for uncloneable values such + * as error objects, functions, DOM nodes, and WeakMaps. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to clone. + * @returns {*} Returns the cloned value. + * @see _.cloneDeep + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var shallow = _.clone(objects); + * console.log(shallow[0] === objects[0]); + * // => true + */ + function clone(value) { + return baseClone(value, CLONE_SYMBOLS_FLAG); + } + + /** + * This method is like `_.clone` except that it accepts `customizer` which + * is invoked to produce the cloned value. If `customizer` returns `undefined`, + * cloning is handled by the method instead. The `customizer` is invoked with + * up to four arguments; (value [, index|key, object, stack]). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to clone. + * @param {Function} [customizer] The function to customize cloning. + * @returns {*} Returns the cloned value. + * @see _.cloneDeepWith + * @example + * + * function customizer(value) { + * if (_.isElement(value)) { + * return value.cloneNode(false); + * } + * } + * + * var el = _.cloneWith(document.body, customizer); + * + * console.log(el === document.body); + * // => false + * console.log(el.nodeName); + * // => 'BODY' + * console.log(el.childNodes.length); + * // => 0 + */ + function cloneWith(value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined$1; + return baseClone(value, CLONE_SYMBOLS_FLAG, customizer); + } + + /** + * This method is like `_.clone` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @returns {*} Returns the deep cloned value. + * @see _.clone + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var deep = _.cloneDeep(objects); + * console.log(deep[0] === objects[0]); + * // => false + */ + function cloneDeep(value) { + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); + } + + /** + * This method is like `_.cloneWith` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @param {Function} [customizer] The function to customize cloning. + * @returns {*} Returns the deep cloned value. + * @see _.cloneWith + * @example + * + * function customizer(value) { + * if (_.isElement(value)) { + * return value.cloneNode(true); + * } + * } + * + * var el = _.cloneDeepWith(document.body, customizer); + * + * console.log(el === document.body); + * // => false + * console.log(el.nodeName); + * // => 'BODY' + * console.log(el.childNodes.length); + * // => 20 + */ + function cloneDeepWith(value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined$1; + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer); + } + + /** + * Checks if `object` conforms to `source` by invoking the predicate + * properties of `source` with the corresponding property values of `object`. + * + * **Note:** This method is equivalent to `_.conforms` when `source` is + * partially applied. + * + * @static + * @memberOf _ + * @since 4.14.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property predicates to conform to. + * @returns {boolean} Returns `true` if `object` conforms, else `false`. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * + * _.conformsTo(object, { 'b': function(n) { return n > 1; } }); + * // => true + * + * _.conformsTo(object, { 'b': function(n) { return n > 2; } }); + * // => false + */ + function conformsTo(object, source) { + return source == null || baseConformsTo(object, source, keys(source)); + } + + /** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ + function eq(value, other) { + return value === other || (value !== value && other !== other); + } + + /** + * Checks if `value` is greater than `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + * @see _.lt + * @example + * + * _.gt(3, 1); + * // => true + * + * _.gt(3, 3); + * // => false + * + * _.gt(1, 3); + * // => false + */ + var gt = createRelationalOperation(baseGt); + + /** + * Checks if `value` is greater than or equal to `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than or equal to + * `other`, else `false`. + * @see _.lte + * @example + * + * _.gte(3, 1); + * // => true + * + * _.gte(3, 3); + * // => true + * + * _.gte(1, 3); + * // => false + */ + var gte = createRelationalOperation(function(value, other) { + return value >= other; + }); + + /** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ + var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); + }; + + /** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ + var isArray = Array.isArray; + + /** + * Checks if `value` is classified as an `ArrayBuffer` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. + * @example + * + * _.isArrayBuffer(new ArrayBuffer(2)); + * // => true + * + * _.isArrayBuffer(new Array(2)); + * // => false + */ + var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; + + /** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ + function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); + } + + /** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ + function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); + } + + /** + * Checks if `value` is classified as a boolean primitive or object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. + * @example + * + * _.isBoolean(false); + * // => true + * + * _.isBoolean(null); + * // => false + */ + function isBoolean(value) { + return value === true || value === false || + (isObjectLike(value) && baseGetTag(value) == boolTag); + } + + /** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ + var isBuffer = nativeIsBuffer || stubFalse; + + /** + * Checks if `value` is classified as a `Date` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a date object, else `false`. + * @example + * + * _.isDate(new Date); + * // => true + * + * _.isDate('Mon April 23 2012'); + * // => false + */ + var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; + + /** + * Checks if `value` is likely a DOM element. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. + * @example + * + * _.isElement(document.body); + * // => true + * + * _.isElement('<body>'); + * // => false + */ + function isElement(value) { + return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value); + } + + /** + * Checks if `value` is an empty object, collection, map, or set. + * + * Objects are considered empty if they have no own enumerable string keyed + * properties. + * + * Array-like values such as `arguments` objects, arrays, buffers, strings, or + * jQuery-like collections are considered empty if they have a `length` of `0`. + * Similarly, maps and sets are considered empty if they have a `size` of `0`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is empty, else `false`. + * @example + * + * _.isEmpty(null); + * // => true + * + * _.isEmpty(true); + * // => true + * + * _.isEmpty(1); + * // => true + * + * _.isEmpty([1, 2, 3]); + * // => false + * + * _.isEmpty({ 'a': 1 }); + * // => false + */ + function isEmpty(value) { + if (value == null) { + return true; + } + if (isArrayLike(value) && + (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || + isBuffer(value) || isTypedArray(value) || isArguments(value))) { + return !value.length; + } + var tag = getTag(value); + if (tag == mapTag || tag == setTag) { + return !value.size; + } + if (isPrototype(value)) { + return !baseKeys(value).length; + } + for (var key in value) { + if (hasOwnProperty.call(value, key)) { + return false; + } + } + return true; + } + + /** + * Performs a deep comparison between two values to determine if they are + * equivalent. + * + * **Note:** This method supports comparing arrays, array buffers, booleans, + * date objects, error objects, maps, numbers, `Object` objects, regexes, + * sets, strings, symbols, and typed arrays. `Object` objects are compared + * by their own, not inherited, enumerable properties. Functions and DOM + * nodes are compared by strict equality, i.e. `===`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.isEqual(object, other); + * // => true + * + * object === other; + * // => false + */ + function isEqual(value, other) { + return baseIsEqual(value, other); + } + + /** + * This method is like `_.isEqual` except that it accepts `customizer` which + * is invoked to compare values. If `customizer` returns `undefined`, comparisons + * are handled by the method instead. The `customizer` is invoked with up to + * six arguments: (objValue, othValue [, index|key, object, other, stack]). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * function isGreeting(value) { + * return /^h(?:i|ello)$/.test(value); + * } + * + * function customizer(objValue, othValue) { + * if (isGreeting(objValue) && isGreeting(othValue)) { + * return true; + * } + * } + * + * var array = ['hello', 'goodbye']; + * var other = ['hi', 'goodbye']; + * + * _.isEqualWith(array, other, customizer); + * // => true + */ + function isEqualWith(value, other, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined$1; + var result = customizer ? customizer(value, other) : undefined$1; + return result === undefined$1 ? baseIsEqual(value, other, undefined$1, customizer) : !!result; + } + + /** + * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, + * `SyntaxError`, `TypeError`, or `URIError` object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an error object, else `false`. + * @example + * + * _.isError(new Error); + * // => true + * + * _.isError(Error); + * // => false + */ + function isError(value) { + if (!isObjectLike(value)) { + return false; + } + var tag = baseGetTag(value); + return tag == errorTag || tag == domExcTag || + (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value)); + } + + /** + * Checks if `value` is a finite primitive number. + * + * **Note:** This method is based on + * [`Number.isFinite`](https://mdn.io/Number/isFinite). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. + * @example + * + * _.isFinite(3); + * // => true + * + * _.isFinite(Number.MIN_VALUE); + * // => true + * + * _.isFinite(Infinity); + * // => false + * + * _.isFinite('3'); + * // => false + */ + function isFinite(value) { + return typeof value == 'number' && nativeIsFinite(value); + } + + /** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ + function isFunction(value) { + if (!isObject(value)) { + return false; + } + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; + } + + /** + * Checks if `value` is an integer. + * + * **Note:** This method is based on + * [`Number.isInteger`](https://mdn.io/Number/isInteger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an integer, else `false`. + * @example + * + * _.isInteger(3); + * // => true + * + * _.isInteger(Number.MIN_VALUE); + * // => false + * + * _.isInteger(Infinity); + * // => false + * + * _.isInteger('3'); + * // => false + */ + function isInteger(value) { + return typeof value == 'number' && value == toInteger(value); + } + + /** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ + function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + + /** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ + function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); + } + + /** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ + function isObjectLike(value) { + return value != null && typeof value == 'object'; + } + + /** + * Checks if `value` is classified as a `Map` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + * @example + * + * _.isMap(new Map); + * // => true + * + * _.isMap(new WeakMap); + * // => false + */ + var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; + + /** + * Performs a partial deep comparison between `object` and `source` to + * determine if `object` contains equivalent property values. + * + * **Note:** This method is equivalent to `_.matches` when `source` is + * partially applied. + * + * Partial comparisons will match empty array and empty object `source` + * values against any array or object value, respectively. See `_.isEqual` + * for a list of supported value comparisons. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * + * _.isMatch(object, { 'b': 2 }); + * // => true + * + * _.isMatch(object, { 'b': 1 }); + * // => false + */ + function isMatch(object, source) { + return object === source || baseIsMatch(object, source, getMatchData(source)); + } + + /** + * This method is like `_.isMatch` except that it accepts `customizer` which + * is invoked to compare values. If `customizer` returns `undefined`, comparisons + * are handled by the method instead. The `customizer` is invoked with five + * arguments: (objValue, srcValue, index|key, object, source). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * @example + * + * function isGreeting(value) { + * return /^h(?:i|ello)$/.test(value); + * } + * + * function customizer(objValue, srcValue) { + * if (isGreeting(objValue) && isGreeting(srcValue)) { + * return true; + * } + * } + * + * var object = { 'greeting': 'hello' }; + * var source = { 'greeting': 'hi' }; + * + * _.isMatchWith(object, source, customizer); + * // => true + */ + function isMatchWith(object, source, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined$1; + return baseIsMatch(object, source, getMatchData(source), customizer); + } + + /** + * Checks if `value` is `NaN`. + * + * **Note:** This method is based on + * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as + * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for + * `undefined` and other non-number values. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + * @example + * + * _.isNaN(NaN); + * // => true + * + * _.isNaN(new Number(NaN)); + * // => true + * + * isNaN(undefined); + * // => true + * + * _.isNaN(undefined); + * // => false + */ + function isNaN(value) { + // An `NaN` primitive is the only value that is not equal to itself. + // Perform the `toStringTag` check first to avoid errors with some + // ActiveX objects in IE. + return isNumber(value) && value != +value; + } + + /** + * Checks if `value` is a pristine native function. + * + * **Note:** This method can't reliably detect native functions in the presence + * of the core-js package because core-js circumvents this kind of detection. + * Despite multiple requests, the core-js maintainer has made it clear: any + * attempt to fix the detection will be obstructed. As a result, we're left + * with little choice but to throw an error. Unfortunately, this also affects + * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill), + * which rely on core-js. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + * @example + * + * _.isNative(Array.prototype.push); + * // => true + * + * _.isNative(_); + * // => false + */ + function isNative(value) { + if (isMaskable(value)) { + throw new Error(CORE_ERROR_TEXT); + } + return baseIsNative(value); + } + + /** + * Checks if `value` is `null`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `null`, else `false`. + * @example + * + * _.isNull(null); + * // => true + * + * _.isNull(void 0); + * // => false + */ + function isNull(value) { + return value === null; + } + + /** + * Checks if `value` is `null` or `undefined`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is nullish, else `false`. + * @example + * + * _.isNil(null); + * // => true + * + * _.isNil(void 0); + * // => true + * + * _.isNil(NaN); + * // => false + */ + function isNil(value) { + return value == null; + } + + /** + * Checks if `value` is classified as a `Number` primitive or object. + * + * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are + * classified as numbers, use the `_.isFinite` method. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a number, else `false`. + * @example + * + * _.isNumber(3); + * // => true + * + * _.isNumber(Number.MIN_VALUE); + * // => true + * + * _.isNumber(Infinity); + * // => true + * + * _.isNumber('3'); + * // => false + */ + function isNumber(value) { + return typeof value == 'number' || + (isObjectLike(value) && baseGetTag(value) == numberTag); + } + + /** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ + function isPlainObject(value) { + if (!isObjectLike(value) || baseGetTag(value) != objectTag) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return typeof Ctor == 'function' && Ctor instanceof Ctor && + funcToString.call(Ctor) == objectCtorString; + } + + /** + * Checks if `value` is classified as a `RegExp` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. + * @example + * + * _.isRegExp(/abc/); + * // => true + * + * _.isRegExp('/abc/'); + * // => false + */ + var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; + + /** + * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754 + * double precision number which isn't the result of a rounded unsafe integer. + * + * **Note:** This method is based on + * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`. + * @example + * + * _.isSafeInteger(3); + * // => true + * + * _.isSafeInteger(Number.MIN_VALUE); + * // => false + * + * _.isSafeInteger(Infinity); + * // => false + * + * _.isSafeInteger('3'); + * // => false + */ + function isSafeInteger(value) { + return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER; + } + + /** + * Checks if `value` is classified as a `Set` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + * @example + * + * _.isSet(new Set); + * // => true + * + * _.isSet(new WeakSet); + * // => false + */ + var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; + + /** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a string, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ + function isString(value) { + return typeof value == 'string' || + (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); + } + + /** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ + function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && baseGetTag(value) == symbolTag); + } + + /** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ + var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + + /** + * Checks if `value` is `undefined`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + * @example + * + * _.isUndefined(void 0); + * // => true + * + * _.isUndefined(null); + * // => false + */ + function isUndefined(value) { + return value === undefined$1; + } + + /** + * Checks if `value` is classified as a `WeakMap` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a weak map, else `false`. + * @example + * + * _.isWeakMap(new WeakMap); + * // => true + * + * _.isWeakMap(new Map); + * // => false + */ + function isWeakMap(value) { + return isObjectLike(value) && getTag(value) == weakMapTag; + } + + /** + * Checks if `value` is classified as a `WeakSet` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a weak set, else `false`. + * @example + * + * _.isWeakSet(new WeakSet); + * // => true + * + * _.isWeakSet(new Set); + * // => false + */ + function isWeakSet(value) { + return isObjectLike(value) && baseGetTag(value) == weakSetTag; + } + + /** + * Checks if `value` is less than `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, + * else `false`. + * @see _.gt + * @example + * + * _.lt(1, 3); + * // => true + * + * _.lt(3, 3); + * // => false + * + * _.lt(3, 1); + * // => false + */ + var lt = createRelationalOperation(baseLt); + + /** + * Checks if `value` is less than or equal to `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than or equal to + * `other`, else `false`. + * @see _.gte + * @example + * + * _.lte(1, 3); + * // => true + * + * _.lte(3, 3); + * // => true + * + * _.lte(3, 1); + * // => false + */ + var lte = createRelationalOperation(function(value, other) { + return value <= other; + }); + + /** + * Converts `value` to an array. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to convert. + * @returns {Array} Returns the converted array. + * @example + * + * _.toArray({ 'a': 1, 'b': 2 }); + * // => [1, 2] + * + * _.toArray('abc'); + * // => ['a', 'b', 'c'] + * + * _.toArray(1); + * // => [] + * + * _.toArray(null); + * // => [] + */ + function toArray(value) { + if (!value) { + return []; + } + if (isArrayLike(value)) { + return isString(value) ? stringToArray(value) : copyArray(value); + } + if (symIterator && value[symIterator]) { + return iteratorToArray(value[symIterator]()); + } + var tag = getTag(value), + func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values); + + return func(value); + } + + /** + * Converts `value` to a finite number. + * + * @static + * @memberOf _ + * @since 4.12.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted number. + * @example + * + * _.toFinite(3.2); + * // => 3.2 + * + * _.toFinite(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toFinite(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toFinite('3.2'); + * // => 3.2 + */ + function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = (value < 0 ? -1 : 1); + return sign * MAX_INTEGER; + } + return value === value ? value : 0; + } + + /** + * Converts `value` to an integer. + * + * **Note:** This method is loosely based on + * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toInteger(3.2); + * // => 3 + * + * _.toInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toInteger(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toInteger('3.2'); + * // => 3 + */ + function toInteger(value) { + var result = toFinite(value), + remainder = result % 1; + + return result === result ? (remainder ? result - remainder : result) : 0; + } + + /** + * Converts `value` to an integer suitable for use as the length of an + * array-like object. + * + * **Note:** This method is based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toLength(3.2); + * // => 3 + * + * _.toLength(Number.MIN_VALUE); + * // => 0 + * + * _.toLength(Infinity); + * // => 4294967295 + * + * _.toLength('3.2'); + * // => 3 + */ + function toLength(value) { + return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0; + } + + /** + * Converts `value` to a number. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {number} Returns the number. + * @example + * + * _.toNumber(3.2); + * // => 3.2 + * + * _.toNumber(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toNumber(Infinity); + * // => Infinity + * + * _.toNumber('3.2'); + * // => 3.2 + */ + function toNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject(value)) { + var other = typeof value.valueOf == 'function' ? value.valueOf() : value; + value = isObject(other) ? (other + '') : other; + } + if (typeof value != 'string') { + return value === 0 ? value : +value; + } + value = baseTrim(value); + var isBinary = reIsBinary.test(value); + return (isBinary || reIsOctal.test(value)) + ? freeParseInt(value.slice(2), isBinary ? 2 : 8) + : (reIsBadHex.test(value) ? NAN : +value); + } + + /** + * Converts `value` to a plain object flattening inherited enumerable string + * keyed properties of `value` to own properties of the plain object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {Object} Returns the converted plain object. + * @example + * + * function Foo() { + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.assign({ 'a': 1 }, new Foo); + * // => { 'a': 1, 'b': 2 } + * + * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); + * // => { 'a': 1, 'b': 2, 'c': 3 } + */ + function toPlainObject(value) { + return copyObject(value, keysIn(value)); + } + + /** + * Converts `value` to a safe integer. A safe integer can be compared and + * represented correctly. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toSafeInteger(3.2); + * // => 3 + * + * _.toSafeInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toSafeInteger(Infinity); + * // => 9007199254740991 + * + * _.toSafeInteger('3.2'); + * // => 3 + */ + function toSafeInteger(value) { + return value + ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) + : (value === 0 ? value : 0); + } + + /** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ + function toString(value) { + return value == null ? '' : baseToString(value); + } + + /*------------------------------------------------------------------------*/ + + /** + * Assigns own enumerable string keyed properties of source objects to the + * destination object. Source objects are applied from left to right. + * Subsequent sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object` and is loosely based on + * [`Object.assign`](https://mdn.io/Object/assign). + * + * @static + * @memberOf _ + * @since 0.10.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.assignIn + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * function Bar() { + * this.c = 3; + * } + * + * Foo.prototype.b = 2; + * Bar.prototype.d = 4; + * + * _.assign({ 'a': 0 }, new Foo, new Bar); + * // => { 'a': 1, 'c': 3 } + */ + var assign = createAssigner(function(object, source) { + if (isPrototype(source) || isArrayLike(source)) { + copyObject(source, keys(source), object); + return; + } + for (var key in source) { + if (hasOwnProperty.call(source, key)) { + assignValue(object, key, source[key]); + } + } + }); + + /** + * This method is like `_.assign` except that it iterates over own and + * inherited source properties. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias extend + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.assign + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * function Bar() { + * this.c = 3; + * } + * + * Foo.prototype.b = 2; + * Bar.prototype.d = 4; + * + * _.assignIn({ 'a': 0 }, new Foo, new Bar); + * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } + */ + var assignIn = createAssigner(function(object, source) { + copyObject(source, keysIn(source), object); + }); + + /** + * This method is like `_.assignIn` except that it accepts `customizer` + * which is invoked to produce the assigned values. If `customizer` returns + * `undefined`, assignment is handled by the method instead. The `customizer` + * is invoked with five arguments: (objValue, srcValue, key, object, source). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias extendWith + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @see _.assignWith + * @example + * + * function customizer(objValue, srcValue) { + * return _.isUndefined(objValue) ? srcValue : objValue; + * } + * + * var defaults = _.partialRight(_.assignInWith, customizer); + * + * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ + var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { + copyObject(source, keysIn(source), object, customizer); + }); + + /** + * This method is like `_.assign` except that it accepts `customizer` + * which is invoked to produce the assigned values. If `customizer` returns + * `undefined`, assignment is handled by the method instead. The `customizer` + * is invoked with five arguments: (objValue, srcValue, key, object, source). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @see _.assignInWith + * @example + * + * function customizer(objValue, srcValue) { + * return _.isUndefined(objValue) ? srcValue : objValue; + * } + * + * var defaults = _.partialRight(_.assignWith, customizer); + * + * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ + var assignWith = createAssigner(function(object, source, srcIndex, customizer) { + copyObject(source, keys(source), object, customizer); + }); + + /** + * Creates an array of values corresponding to `paths` of `object`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Array} Returns the picked values. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; + * + * _.at(object, ['a[0].b.c', 'a[1]']); + * // => [3, 4] + */ + var at = flatRest(baseAt); + + /** + * Creates an object that inherits from the `prototype` object. If a + * `properties` object is given, its own enumerable string keyed properties + * are assigned to the created object. + * + * @static + * @memberOf _ + * @since 2.3.0 + * @category Object + * @param {Object} prototype The object to inherit from. + * @param {Object} [properties] The properties to assign to the object. + * @returns {Object} Returns the new object. + * @example + * + * function Shape() { + * this.x = 0; + * this.y = 0; + * } + * + * function Circle() { + * Shape.call(this); + * } + * + * Circle.prototype = _.create(Shape.prototype, { + * 'constructor': Circle + * }); + * + * var circle = new Circle; + * circle instanceof Circle; + * // => true + * + * circle instanceof Shape; + * // => true + */ + function create(prototype, properties) { + var result = baseCreate(prototype); + return properties == null ? result : baseAssign(result, properties); + } + + /** + * Assigns own and inherited enumerable string keyed properties of source + * objects to the destination object for all destination properties that + * resolve to `undefined`. Source objects are applied from left to right. + * Once a property is set, additional values of the same property are ignored. + * + * **Note:** This method mutates `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaultsDeep + * @example + * + * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ + var defaults = baseRest(function(object, sources) { + object = Object(object); + + var index = -1; + var length = sources.length; + var guard = length > 2 ? sources[2] : undefined$1; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + length = 1; + } + + while (++index < length) { + var source = sources[index]; + var props = keysIn(source); + var propsIndex = -1; + var propsLength = props.length; + + while (++propsIndex < propsLength) { + var key = props[propsIndex]; + var value = object[key]; + + if (value === undefined$1 || + (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) { + object[key] = source[key]; + } + } + } + + return object; + }); + + /** + * This method is like `_.defaults` except that it recursively assigns + * default properties. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 3.10.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaults + * @example + * + * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } }); + * // => { 'a': { 'b': 2, 'c': 3 } } + */ + var defaultsDeep = baseRest(function(args) { + args.push(undefined$1, customDefaultsMerge); + return apply(mergeWith, undefined$1, args); + }); + + /** + * This method is like `_.find` except that it returns the key of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Object + * @param {Object} object The object to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {string|undefined} Returns the key of the matched element, + * else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findKey(users, function(o) { return o.age < 40; }); + * // => 'barney' (iteration order is not guaranteed) + * + * // The `_.matches` iteratee shorthand. + * _.findKey(users, { 'age': 1, 'active': true }); + * // => 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findKey(users, ['active', false]); + * // => 'fred' + * + * // The `_.property` iteratee shorthand. + * _.findKey(users, 'active'); + * // => 'barney' + */ + function findKey(object, predicate) { + return baseFindKey(object, getIteratee(predicate, 3), baseForOwn); + } + + /** + * This method is like `_.findKey` except that it iterates over elements of + * a collection in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {string|undefined} Returns the key of the matched element, + * else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findLastKey(users, function(o) { return o.age < 40; }); + * // => returns 'pebbles' assuming `_.findKey` returns 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.findLastKey(users, { 'age': 36, 'active': true }); + * // => 'barney' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findLastKey(users, ['active', false]); + * // => 'fred' + * + * // The `_.property` iteratee shorthand. + * _.findLastKey(users, 'active'); + * // => 'pebbles' + */ + function findLastKey(object, predicate) { + return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight); + } + + /** + * Iterates over own and inherited enumerable string keyed properties of an + * object and invokes `iteratee` for each property. The iteratee is invoked + * with three arguments: (value, key, object). Iteratee functions may exit + * iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forInRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forIn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). + */ + function forIn(object, iteratee) { + return object == null + ? object + : baseFor(object, getIteratee(iteratee, 3), keysIn); + } + + /** + * This method is like `_.forIn` except that it iterates over properties of + * `object` in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forIn + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forInRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'. + */ + function forInRight(object, iteratee) { + return object == null + ? object + : baseForRight(object, getIteratee(iteratee, 3), keysIn); + } + + /** + * Iterates over own enumerable string keyed properties of an object and + * invokes `iteratee` for each property. The iteratee is invoked with three + * arguments: (value, key, object). Iteratee functions may exit iteration + * early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwnRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ + function forOwn(object, iteratee) { + return object && baseForOwn(object, getIteratee(iteratee, 3)); + } + + /** + * This method is like `_.forOwn` except that it iterates over properties of + * `object` in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwn + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwnRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'. + */ + function forOwnRight(object, iteratee) { + return object && baseForOwnRight(object, getIteratee(iteratee, 3)); + } + + /** + * Creates an array of function property names from own enumerable properties + * of `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the function names. + * @see _.functionsIn + * @example + * + * function Foo() { + * this.a = _.constant('a'); + * this.b = _.constant('b'); + * } + * + * Foo.prototype.c = _.constant('c'); + * + * _.functions(new Foo); + * // => ['a', 'b'] + */ + function functions(object) { + return object == null ? [] : baseFunctions(object, keys(object)); + } + + /** + * Creates an array of function property names from own and inherited + * enumerable properties of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the function names. + * @see _.functions + * @example + * + * function Foo() { + * this.a = _.constant('a'); + * this.b = _.constant('b'); + * } + * + * Foo.prototype.c = _.constant('c'); + * + * _.functionsIn(new Foo); + * // => ['a', 'b', 'c'] + */ + function functionsIn(object) { + return object == null ? [] : baseFunctions(object, keysIn(object)); + } + + /** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ + function get(object, path, defaultValue) { + var result = object == null ? undefined$1 : baseGet(object, path); + return result === undefined$1 ? defaultValue : result; + } + + /** + * Checks if `path` is a direct property of `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = { 'a': { 'b': 2 } }; + * var other = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.has(object, 'a'); + * // => true + * + * _.has(object, 'a.b'); + * // => true + * + * _.has(object, ['a', 'b']); + * // => true + * + * _.has(other, 'a'); + * // => false + */ + function has(object, path) { + return object != null && hasPath(object, path, baseHas); + } + + /** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */ + function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); + } + + /** + * Creates an object composed of the inverted keys and values of `object`. + * If `object` contains duplicate values, subsequent values overwrite + * property assignments of previous values. + * + * @static + * @memberOf _ + * @since 0.7.0 + * @category Object + * @param {Object} object The object to invert. + * @returns {Object} Returns the new inverted object. + * @example + * + * var object = { 'a': 1, 'b': 2, 'c': 1 }; + * + * _.invert(object); + * // => { '1': 'c', '2': 'b' } + */ + var invert = createInverter(function(result, value, key) { + if (value != null && + typeof value.toString != 'function') { + value = nativeObjectToString.call(value); + } + + result[value] = key; + }, constant(identity)); + + /** + * This method is like `_.invert` except that the inverted object is generated + * from the results of running each element of `object` thru `iteratee`. The + * corresponding inverted value of each inverted key is an array of keys + * responsible for generating the inverted value. The iteratee is invoked + * with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.1.0 + * @category Object + * @param {Object} object The object to invert. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Object} Returns the new inverted object. + * @example + * + * var object = { 'a': 1, 'b': 2, 'c': 1 }; + * + * _.invertBy(object); + * // => { '1': ['a', 'c'], '2': ['b'] } + * + * _.invertBy(object, function(value) { + * return 'group' + value; + * }); + * // => { 'group1': ['a', 'c'], 'group2': ['b'] } + */ + var invertBy = createInverter(function(result, value, key) { + if (value != null && + typeof value.toString != 'function') { + value = nativeObjectToString.call(value); + } + + if (hasOwnProperty.call(result, value)) { + result[value].push(key); + } else { + result[value] = [key]; + } + }, getIteratee); + + /** + * Invokes the method at `path` of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the method to invoke. + * @param {...*} [args] The arguments to invoke the method with. + * @returns {*} Returns the result of the invoked method. + * @example + * + * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] }; + * + * _.invoke(object, 'a[0].b.c.slice', 1, 3); + * // => [2, 3] + */ + var invoke = baseRest(baseInvoke); + + /** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ + function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); + } + + /** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ + function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); + } + + /** + * The opposite of `_.mapValues`; this method creates an object with the + * same values as `object` and keys generated by running each own enumerable + * string keyed property of `object` thru `iteratee`. The iteratee is invoked + * with three arguments: (value, key, object). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapValues + * @example + * + * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { + * return key + value; + * }); + * // => { 'a1': 1, 'b2': 2 } + */ + function mapKeys(object, iteratee) { + var result = {}; + iteratee = getIteratee(iteratee, 3); + + baseForOwn(object, function(value, key, object) { + baseAssignValue(result, iteratee(value, key, object), value); + }); + return result; + } + + /** + * Creates an object with the same keys as `object` and values generated + * by running each own enumerable string keyed property of `object` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, key, object). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapKeys + * @example + * + * var users = { + * 'fred': { 'user': 'fred', 'age': 40 }, + * 'pebbles': { 'user': 'pebbles', 'age': 1 } + * }; + * + * _.mapValues(users, function(o) { return o.age; }); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + * + * // The `_.property` iteratee shorthand. + * _.mapValues(users, 'age'); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + */ + function mapValues(object, iteratee) { + var result = {}; + iteratee = getIteratee(iteratee, 3); + + baseForOwn(object, function(value, key, object) { + baseAssignValue(result, key, iteratee(value, key, object)); + }); + return result; + } + + /** + * This method is like `_.assign` except that it recursively merges own and + * inherited enumerable string keyed properties of source objects into the + * destination object. Source properties that resolve to `undefined` are + * skipped if a destination value exists. Array and plain object properties + * are merged recursively. Other objects and value types are overridden by + * assignment. Source objects are applied from left to right. Subsequent + * sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @example + * + * var object = { + * 'a': [{ 'b': 2 }, { 'd': 4 }] + * }; + * + * var other = { + * 'a': [{ 'c': 3 }, { 'e': 5 }] + * }; + * + * _.merge(object, other); + * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } + */ + var merge = createAssigner(function(object, source, srcIndex) { + baseMerge(object, source, srcIndex); + }); + + /** + * This method is like `_.merge` except that it accepts `customizer` which + * is invoked to produce the merged values of the destination and source + * properties. If `customizer` returns `undefined`, merging is handled by the + * method instead. The `customizer` is invoked with six arguments: + * (objValue, srcValue, key, object, source, stack). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} customizer The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * function customizer(objValue, srcValue) { + * if (_.isArray(objValue)) { + * return objValue.concat(srcValue); + * } + * } + * + * var object = { 'a': [1], 'b': [2] }; + * var other = { 'a': [3], 'b': [4] }; + * + * _.mergeWith(object, other, customizer); + * // => { 'a': [1, 3], 'b': [2, 4] } + */ + var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { + baseMerge(object, source, srcIndex, customizer); + }); + + /** + * The opposite of `_.pick`; this method creates an object composed of the + * own and inherited enumerable property paths of `object` that are not omitted. + * + * **Note:** This method is considerably slower than `_.pick`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to omit. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.omit(object, ['a', 'c']); + * // => { 'b': '2' } + */ + var omit = flatRest(function(object, paths) { + var result = {}; + if (object == null) { + return result; + } + var isDeep = false; + paths = arrayMap(paths, function(path) { + path = castPath(path, object); + isDeep || (isDeep = path.length > 1); + return path; + }); + copyObject(object, getAllKeysIn(object), result); + if (isDeep) { + result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone); + } + var length = paths.length; + while (length--) { + baseUnset(result, paths[length]); + } + return result; + }); + + /** + * The opposite of `_.pickBy`; this method creates an object composed of + * the own and inherited enumerable string keyed properties of `object` that + * `predicate` doesn't return truthy for. The predicate is invoked with two + * arguments: (value, key). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The source object. + * @param {Function} [predicate=_.identity] The function invoked per property. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.omitBy(object, _.isNumber); + * // => { 'b': '2' } + */ + function omitBy(object, predicate) { + return pickBy(object, negate(getIteratee(predicate))); + } + + /** + * Creates an object composed of the picked `object` properties. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.pick(object, ['a', 'c']); + * // => { 'a': 1, 'c': 3 } + */ + var pick = flatRest(function(object, paths) { + return object == null ? {} : basePick(object, paths); + }); + + /** + * Creates an object composed of the `object` properties `predicate` returns + * truthy for. The predicate is invoked with two arguments: (value, key). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The source object. + * @param {Function} [predicate=_.identity] The function invoked per property. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.pickBy(object, _.isNumber); + * // => { 'a': 1, 'c': 3 } + */ + function pickBy(object, predicate) { + if (object == null) { + return {}; + } + var props = arrayMap(getAllKeysIn(object), function(prop) { + return [prop]; + }); + predicate = getIteratee(predicate); + return basePickBy(object, props, function(value, path) { + return predicate(value, path[0]); + }); + } + + /** + * This method is like `_.get` except that if the resolved value is a + * function it's invoked with the `this` binding of its parent object and + * its result is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to resolve. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] }; + * + * _.result(object, 'a[0].b.c1'); + * // => 3 + * + * _.result(object, 'a[0].b.c2'); + * // => 4 + * + * _.result(object, 'a[0].b.c3', 'default'); + * // => 'default' + * + * _.result(object, 'a[0].b.c3', _.constant('default')); + * // => 'default' + */ + function result(object, path, defaultValue) { + path = castPath(path, object); + + var index = -1, + length = path.length; + + // Ensure the loop is entered when path is empty. + if (!length) { + length = 1; + object = undefined$1; + } + while (++index < length) { + var value = object == null ? undefined$1 : object[toKey(path[index])]; + if (value === undefined$1) { + index = length; + value = defaultValue; + } + object = isFunction(value) ? value.call(object) : value; + } + return object; + } + + /** + * Sets the value at `path` of `object`. If a portion of `path` doesn't exist, + * it's created. Arrays are created for missing index properties while objects + * are created for all other missing properties. Use `_.setWith` to customize + * `path` creation. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @returns {Object} Returns `object`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.set(object, 'a[0].b.c', 4); + * console.log(object.a[0].b.c); + * // => 4 + * + * _.set(object, ['x', '0', 'y', 'z'], 5); + * console.log(object.x[0].y.z); + * // => 5 + */ + function set(object, path, value) { + return object == null ? object : baseSet(object, path, value); + } + + /** + * This method is like `_.set` except that it accepts `customizer` which is + * invoked to produce the objects of `path`. If `customizer` returns `undefined` + * path creation is handled by the method instead. The `customizer` is invoked + * with three arguments: (nsValue, key, nsObject). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * var object = {}; + * + * _.setWith(object, '[0][1]', 'a', Object); + * // => { '0': { '1': 'a' } } + */ + function setWith(object, path, value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined$1; + return object == null ? object : baseSet(object, path, value, customizer); + } + + /** + * Creates an array of own enumerable string keyed-value pairs for `object` + * which can be consumed by `_.fromPairs`. If `object` is a map or set, its + * entries are returned. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias entries + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the key-value pairs. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.toPairs(new Foo); + * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed) + */ + var toPairs = createToPairs(keys); + + /** + * Creates an array of own and inherited enumerable string keyed-value pairs + * for `object` which can be consumed by `_.fromPairs`. If `object` is a map + * or set, its entries are returned. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias entriesIn + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the key-value pairs. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.toPairsIn(new Foo); + * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed) + */ + var toPairsIn = createToPairs(keysIn); + + /** + * An alternative to `_.reduce`; this method transforms `object` to a new + * `accumulator` object which is the result of running each of its own + * enumerable string keyed properties thru `iteratee`, with each invocation + * potentially mutating the `accumulator` object. If `accumulator` is not + * provided, a new object with the same `[[Prototype]]` will be used. The + * iteratee is invoked with four arguments: (accumulator, value, key, object). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 1.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The custom accumulator value. + * @returns {*} Returns the accumulated value. + * @example + * + * _.transform([2, 3, 4], function(result, n) { + * result.push(n *= n); + * return n % 2 == 0; + * }, []); + * // => [4, 9] + * + * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } + */ + function transform(object, iteratee, accumulator) { + var isArr = isArray(object), + isArrLike = isArr || isBuffer(object) || isTypedArray(object); + + iteratee = getIteratee(iteratee, 4); + if (accumulator == null) { + var Ctor = object && object.constructor; + if (isArrLike) { + accumulator = isArr ? new Ctor : []; + } + else if (isObject(object)) { + accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; + } + else { + accumulator = {}; + } + } + (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) { + return iteratee(accumulator, value, index, object); + }); + return accumulator; + } + + /** + * Removes the property at `path` of `object`. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to unset. + * @returns {boolean} Returns `true` if the property is deleted, else `false`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 7 } }] }; + * _.unset(object, 'a[0].b.c'); + * // => true + * + * console.log(object); + * // => { 'a': [{ 'b': {} }] }; + * + * _.unset(object, ['a', '0', 'b', 'c']); + * // => true + * + * console.log(object); + * // => { 'a': [{ 'b': {} }] }; + */ + function unset(object, path) { + return object == null ? true : baseUnset(object, path); + } + + /** + * This method is like `_.set` except that accepts `updater` to produce the + * value to set. Use `_.updateWith` to customize `path` creation. The `updater` + * is invoked with one argument: (value). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {Function} updater The function to produce the updated value. + * @returns {Object} Returns `object`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.update(object, 'a[0].b.c', function(n) { return n * n; }); + * console.log(object.a[0].b.c); + * // => 9 + * + * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; }); + * console.log(object.x[0].y.z); + * // => 0 + */ + function update(object, path, updater) { + return object == null ? object : baseUpdate(object, path, castFunction(updater)); + } + + /** + * This method is like `_.update` except that it accepts `customizer` which is + * invoked to produce the objects of `path`. If `customizer` returns `undefined` + * path creation is handled by the method instead. The `customizer` is invoked + * with three arguments: (nsValue, key, nsObject). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {Function} updater The function to produce the updated value. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * var object = {}; + * + * _.updateWith(object, '[0][1]', _.constant('a'), Object); + * // => { '0': { '1': 'a' } } + */ + function updateWith(object, path, updater, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined$1; + return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer); + } + + /** + * Creates an array of the own enumerable string keyed property values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.values(new Foo); + * // => [1, 2] (iteration order is not guaranteed) + * + * _.values('hi'); + * // => ['h', 'i'] + */ + function values(object) { + return object == null ? [] : baseValues(object, keys(object)); + } + + /** + * Creates an array of the own and inherited enumerable string keyed property + * values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.valuesIn(new Foo); + * // => [1, 2, 3] (iteration order is not guaranteed) + */ + function valuesIn(object) { + return object == null ? [] : baseValues(object, keysIn(object)); + } + + /*------------------------------------------------------------------------*/ + + /** + * Clamps `number` within the inclusive `lower` and `upper` bounds. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Number + * @param {number} number The number to clamp. + * @param {number} [lower] The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the clamped number. + * @example + * + * _.clamp(-10, -5, 5); + * // => -5 + * + * _.clamp(10, -5, 5); + * // => 5 + */ + function clamp(number, lower, upper) { + if (upper === undefined$1) { + upper = lower; + lower = undefined$1; + } + if (upper !== undefined$1) { + upper = toNumber(upper); + upper = upper === upper ? upper : 0; + } + if (lower !== undefined$1) { + lower = toNumber(lower); + lower = lower === lower ? lower : 0; + } + return baseClamp(toNumber(number), lower, upper); + } + + /** + * Checks if `n` is between `start` and up to, but not including, `end`. If + * `end` is not specified, it's set to `start` with `start` then set to `0`. + * If `start` is greater than `end` the params are swapped to support + * negative ranges. + * + * @static + * @memberOf _ + * @since 3.3.0 + * @category Number + * @param {number} number The number to check. + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @returns {boolean} Returns `true` if `number` is in the range, else `false`. + * @see _.range, _.rangeRight + * @example + * + * _.inRange(3, 2, 4); + * // => true + * + * _.inRange(4, 8); + * // => true + * + * _.inRange(4, 2); + * // => false + * + * _.inRange(2, 2); + * // => false + * + * _.inRange(1.2, 2); + * // => true + * + * _.inRange(5.2, 4); + * // => false + * + * _.inRange(-3, -2, -6); + * // => true + */ + function inRange(number, start, end) { + start = toFinite(start); + if (end === undefined$1) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + number = toNumber(number); + return baseInRange(number, start, end); + } + + /** + * Produces a random number between the inclusive `lower` and `upper` bounds. + * If only one argument is provided a number between `0` and the given number + * is returned. If `floating` is `true`, or either `lower` or `upper` are + * floats, a floating-point number is returned instead of an integer. + * + * **Note:** JavaScript follows the IEEE-754 standard for resolving + * floating-point values which can produce unexpected results. + * + * @static + * @memberOf _ + * @since 0.7.0 + * @category Number + * @param {number} [lower=0] The lower bound. + * @param {number} [upper=1] The upper bound. + * @param {boolean} [floating] Specify returning a floating-point number. + * @returns {number} Returns the random number. + * @example + * + * _.random(0, 5); + * // => an integer between 0 and 5 + * + * _.random(5); + * // => also an integer between 0 and 5 + * + * _.random(5, true); + * // => a floating-point number between 0 and 5 + * + * _.random(1.2, 5.2); + * // => a floating-point number between 1.2 and 5.2 + */ + function random(lower, upper, floating) { + if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) { + upper = floating = undefined$1; + } + if (floating === undefined$1) { + if (typeof upper == 'boolean') { + floating = upper; + upper = undefined$1; + } + else if (typeof lower == 'boolean') { + floating = lower; + lower = undefined$1; + } + } + if (lower === undefined$1 && upper === undefined$1) { + lower = 0; + upper = 1; + } + else { + lower = toFinite(lower); + if (upper === undefined$1) { + upper = lower; + lower = 0; + } else { + upper = toFinite(upper); + } + } + if (lower > upper) { + var temp = lower; + lower = upper; + upper = temp; + } + if (floating || lower % 1 || upper % 1) { + var rand = nativeRandom(); + return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper); + } + return baseRandom(lower, upper); + } + + /*------------------------------------------------------------------------*/ + + /** + * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the camel cased string. + * @example + * + * _.camelCase('Foo Bar'); + * // => 'fooBar' + * + * _.camelCase('--foo-bar--'); + * // => 'fooBar' + * + * _.camelCase('__FOO_BAR__'); + * // => 'fooBar' + */ + var camelCase = createCompounder(function(result, word, index) { + word = word.toLowerCase(); + return result + (index ? capitalize(word) : word); + }); + + /** + * Converts the first character of `string` to upper case and the remaining + * to lower case. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to capitalize. + * @returns {string} Returns the capitalized string. + * @example + * + * _.capitalize('FRED'); + * // => 'Fred' + */ + function capitalize(string) { + return upperFirst(toString(string).toLowerCase()); + } + + /** + * Deburrs `string` by converting + * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) + * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A) + * letters to basic Latin letters and removing + * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to deburr. + * @returns {string} Returns the deburred string. + * @example + * + * _.deburr('déjà vu'); + * // => 'deja vu' + */ + function deburr(string) { + string = toString(string); + return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); + } + + /** + * Checks if `string` ends with the given target string. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to inspect. + * @param {string} [target] The string to search for. + * @param {number} [position=string.length] The position to search up to. + * @returns {boolean} Returns `true` if `string` ends with `target`, + * else `false`. + * @example + * + * _.endsWith('abc', 'c'); + * // => true + * + * _.endsWith('abc', 'b'); + * // => false + * + * _.endsWith('abc', 'b', 2); + * // => true + */ + function endsWith(string, target, position) { + string = toString(string); + target = baseToString(target); + + var length = string.length; + position = position === undefined$1 + ? length + : baseClamp(toInteger(position), 0, length); + + var end = position; + position -= target.length; + return position >= 0 && string.slice(position, end) == target; + } + + /** + * Converts the characters "&", "<", ">", '"', and "'" in `string` to their + * corresponding HTML entities. + * + * **Note:** No other characters are escaped. To escape additional + * characters use a third-party library like [_he_](https://mths.be/he). + * + * Though the ">" character is escaped for symmetry, characters like + * ">" and "/" don't need escaping in HTML and have no special meaning + * unless they're part of a tag or unquoted attribute value. See + * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) + * (under "semi-related fun fact") for more details. + * + * When working with HTML you should always + * [quote attribute values](http://wonko.com/post/html-escaping) to reduce + * XSS vectors. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escape('fred, barney, & pebbles'); + * // => 'fred, barney, & pebbles' + */ + function escape(string) { + string = toString(string); + return (string && reHasUnescapedHtml.test(string)) + ? string.replace(reUnescapedHtml, escapeHtmlChar) + : string; + } + + /** + * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", + * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escapeRegExp('[lodash](https://lodash.com/)'); + * // => '\[lodash\]\(https://lodash\.com/\)' + */ + function escapeRegExp(string) { + string = toString(string); + return (string && reHasRegExpChar.test(string)) + ? string.replace(reRegExpChar, '\\$&') + : string; + } + + /** + * Converts `string` to + * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the kebab cased string. + * @example + * + * _.kebabCase('Foo Bar'); + * // => 'foo-bar' + * + * _.kebabCase('fooBar'); + * // => 'foo-bar' + * + * _.kebabCase('__FOO_BAR__'); + * // => 'foo-bar' + */ + var kebabCase = createCompounder(function(result, word, index) { + return result + (index ? '-' : '') + word.toLowerCase(); + }); + + /** + * Converts `string`, as space separated words, to lower case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the lower cased string. + * @example + * + * _.lowerCase('--Foo-Bar--'); + * // => 'foo bar' + * + * _.lowerCase('fooBar'); + * // => 'foo bar' + * + * _.lowerCase('__FOO_BAR__'); + * // => 'foo bar' + */ + var lowerCase = createCompounder(function(result, word, index) { + return result + (index ? ' ' : '') + word.toLowerCase(); + }); + + /** + * Converts the first character of `string` to lower case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.lowerFirst('Fred'); + * // => 'fred' + * + * _.lowerFirst('FRED'); + * // => 'fRED' + */ + var lowerFirst = createCaseFirst('toLowerCase'); + + /** + * Pads `string` on the left and right sides if it's shorter than `length`. + * Padding characters are truncated if they can't be evenly divided by `length`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.pad('abc', 8); + * // => ' abc ' + * + * _.pad('abc', 8, '_-'); + * // => '_-abc_-_' + * + * _.pad('abc', 3); + * // => 'abc' + */ + function pad(string, length, chars) { + string = toString(string); + length = toInteger(length); + + var strLength = length ? stringSize(string) : 0; + if (!length || strLength >= length) { + return string; + } + var mid = (length - strLength) / 2; + return ( + createPadding(nativeFloor(mid), chars) + + string + + createPadding(nativeCeil(mid), chars) + ); + } + + /** + * Pads `string` on the right side if it's shorter than `length`. Padding + * characters are truncated if they exceed `length`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.padEnd('abc', 6); + * // => 'abc ' + * + * _.padEnd('abc', 6, '_-'); + * // => 'abc_-_' + * + * _.padEnd('abc', 3); + * // => 'abc' + */ + function padEnd(string, length, chars) { + string = toString(string); + length = toInteger(length); + + var strLength = length ? stringSize(string) : 0; + return (length && strLength < length) + ? (string + createPadding(length - strLength, chars)) + : string; + } + + /** + * Pads `string` on the left side if it's shorter than `length`. Padding + * characters are truncated if they exceed `length`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.padStart('abc', 6); + * // => ' abc' + * + * _.padStart('abc', 6, '_-'); + * // => '_-_abc' + * + * _.padStart('abc', 3); + * // => 'abc' + */ + function padStart(string, length, chars) { + string = toString(string); + length = toInteger(length); + + var strLength = length ? stringSize(string) : 0; + return (length && strLength < length) + ? (createPadding(length - strLength, chars) + string) + : string; + } + + /** + * Converts `string` to an integer of the specified radix. If `radix` is + * `undefined` or `0`, a `radix` of `10` is used unless `value` is a + * hexadecimal, in which case a `radix` of `16` is used. + * + * **Note:** This method aligns with the + * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category String + * @param {string} string The string to convert. + * @param {number} [radix=10] The radix to interpret `value` by. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {number} Returns the converted integer. + * @example + * + * _.parseInt('08'); + * // => 8 + * + * _.map(['6', '08', '10'], _.parseInt); + * // => [6, 8, 10] + */ + function parseInt(string, radix, guard) { + if (guard || radix == null) { + radix = 0; + } else if (radix) { + radix = +radix; + } + return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0); + } + + /** + * Repeats the given string `n` times. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to repeat. + * @param {number} [n=1] The number of times to repeat the string. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {string} Returns the repeated string. + * @example + * + * _.repeat('*', 3); + * // => '***' + * + * _.repeat('abc', 2); + * // => 'abcabc' + * + * _.repeat('abc', 0); + * // => '' + */ + function repeat(string, n, guard) { + if ((guard ? isIterateeCall(string, n, guard) : n === undefined$1)) { + n = 1; + } else { + n = toInteger(n); + } + return baseRepeat(toString(string), n); + } + + /** + * Replaces matches for `pattern` in `string` with `replacement`. + * + * **Note:** This method is based on + * [`String#replace`](https://mdn.io/String/replace). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to modify. + * @param {RegExp|string} pattern The pattern to replace. + * @param {Function|string} replacement The match replacement. + * @returns {string} Returns the modified string. + * @example + * + * _.replace('Hi Fred', 'Fred', 'Barney'); + * // => 'Hi Barney' + */ + function replace() { + var args = arguments, + string = toString(args[0]); + + return args.length < 3 ? string : string.replace(args[1], args[2]); + } + + /** + * Converts `string` to + * [snake case](https://en.wikipedia.org/wiki/Snake_case). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the snake cased string. + * @example + * + * _.snakeCase('Foo Bar'); + * // => 'foo_bar' + * + * _.snakeCase('fooBar'); + * // => 'foo_bar' + * + * _.snakeCase('--FOO-BAR--'); + * // => 'foo_bar' + */ + var snakeCase = createCompounder(function(result, word, index) { + return result + (index ? '_' : '') + word.toLowerCase(); + }); + + /** + * Splits `string` by `separator`. + * + * **Note:** This method is based on + * [`String#split`](https://mdn.io/String/split). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to split. + * @param {RegExp|string} separator The separator pattern to split by. + * @param {number} [limit] The length to truncate results to. + * @returns {Array} Returns the string segments. + * @example + * + * _.split('a-b-c', '-', 2); + * // => ['a', 'b'] + */ + function split(string, separator, limit) { + if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) { + separator = limit = undefined$1; + } + limit = limit === undefined$1 ? MAX_ARRAY_LENGTH : limit >>> 0; + if (!limit) { + return []; + } + string = toString(string); + if (string && ( + typeof separator == 'string' || + (separator != null && !isRegExp(separator)) + )) { + separator = baseToString(separator); + if (!separator && hasUnicode(string)) { + return castSlice(stringToArray(string), 0, limit); + } + } + return string.split(separator, limit); + } + + /** + * Converts `string` to + * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage). + * + * @static + * @memberOf _ + * @since 3.1.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the start cased string. + * @example + * + * _.startCase('--foo-bar--'); + * // => 'Foo Bar' + * + * _.startCase('fooBar'); + * // => 'Foo Bar' + * + * _.startCase('__FOO_BAR__'); + * // => 'FOO BAR' + */ + var startCase = createCompounder(function(result, word, index) { + return result + (index ? ' ' : '') + upperFirst(word); + }); + + /** + * Checks if `string` starts with the given target string. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to inspect. + * @param {string} [target] The string to search for. + * @param {number} [position=0] The position to search from. + * @returns {boolean} Returns `true` if `string` starts with `target`, + * else `false`. + * @example + * + * _.startsWith('abc', 'a'); + * // => true + * + * _.startsWith('abc', 'b'); + * // => false + * + * _.startsWith('abc', 'b', 1); + * // => true + */ + function startsWith(string, target, position) { + string = toString(string); + position = position == null + ? 0 + : baseClamp(toInteger(position), 0, string.length); + + target = baseToString(target); + return string.slice(position, position + target.length) == target; + } + + /** + * Creates a compiled template function that can interpolate data properties + * in "interpolate" delimiters, HTML-escape interpolated data properties in + * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data + * properties may be accessed as free variables in the template. If a setting + * object is given, it takes precedence over `_.templateSettings` values. + * + * **Note:** In the development build `_.template` utilizes + * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) + * for easier debugging. + * + * For more information on precompiling templates see + * [lodash's custom builds documentation](https://lodash.com/custom-builds). + * + * For more information on Chrome extension sandboxes see + * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval). + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category String + * @param {string} [string=''] The template string. + * @param {Object} [options={}] The options object. + * @param {RegExp} [options.escape=_.templateSettings.escape] + * The HTML "escape" delimiter. + * @param {RegExp} [options.evaluate=_.templateSettings.evaluate] + * The "evaluate" delimiter. + * @param {Object} [options.imports=_.templateSettings.imports] + * An object to import into the template as free variables. + * @param {RegExp} [options.interpolate=_.templateSettings.interpolate] + * The "interpolate" delimiter. + * @param {string} [options.sourceURL='lodash.templateSources[n]'] + * The sourceURL of the compiled template. + * @param {string} [options.variable='obj'] + * The data object variable name. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the compiled template function. + * @example + * + * // Use the "interpolate" delimiter to create a compiled template. + * var compiled = _.template('hello <%= user %>!'); + * compiled({ 'user': 'fred' }); + * // => 'hello fred!' + * + * // Use the HTML "escape" delimiter to escape data property values. + * var compiled = _.template('<b><%- value %></b>'); + * compiled({ 'value': '<script>' }); + * // => '<b><script></b>' + * + * // Use the "evaluate" delimiter to execute JavaScript and generate HTML. + * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>'); + * compiled({ 'users': ['fred', 'barney'] }); + * // => '<li>fred</li><li>barney</li>' + * + * // Use the internal `print` function in "evaluate" delimiters. + * var compiled = _.template('<% print("hello " + user); %>!'); + * compiled({ 'user': 'barney' }); + * // => 'hello barney!' + * + * // Use the ES template literal delimiter as an "interpolate" delimiter. + * // Disable support by replacing the "interpolate" delimiter. + * var compiled = _.template('hello ${ user }!'); + * compiled({ 'user': 'pebbles' }); + * // => 'hello pebbles!' + * + * // Use backslashes to treat delimiters as plain text. + * var compiled = _.template('<%= "\\<%- value %\\>" %>'); + * compiled({ 'value': 'ignored' }); + * // => '<%- value %>' + * + * // Use the `imports` option to import `jQuery` as `jq`. + * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>'; + * var compiled = _.template(text, { 'imports': { 'jq': jQuery } }); + * compiled({ 'users': ['fred', 'barney'] }); + * // => '<li>fred</li><li>barney</li>' + * + * // Use the `sourceURL` option to specify a custom sourceURL for the template. + * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' }); + * compiled(data); + * // => Find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector. + * + * // Use the `variable` option to ensure a with-statement isn't used in the compiled template. + * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' }); + * compiled.source; + * // => function(data) { + * // var __t, __p = ''; + * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!'; + * // return __p; + * // } + * + * // Use custom template delimiters. + * _.templateSettings.interpolate = /{{([\s\S]+?)}}/g; + * var compiled = _.template('hello {{ user }}!'); + * compiled({ 'user': 'mustache' }); + * // => 'hello mustache!' + * + * // Use the `source` property to inline compiled templates for meaningful + * // line numbers in error messages and stack traces. + * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\ + * var JST = {\ + * "main": ' + _.template(mainText).source + '\ + * };\ + * '); + */ + function template(string, options, guard) { + // Based on John Resig's `tmpl` implementation + // (http://ejohn.org/blog/javascript-micro-templating/) + // and Laura Doktorova's doT.js (https://github.com/olado/doT). + var settings = lodash.templateSettings; + + if (guard && isIterateeCall(string, options, guard)) { + options = undefined$1; + } + string = toString(string); + options = assignInWith({}, options, settings, customDefaultsAssignIn); + + var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn), + importsKeys = keys(imports), + importsValues = baseValues(imports, importsKeys); + + var isEscaping, + isEvaluating, + index = 0, + interpolate = options.interpolate || reNoMatch, + source = "__p += '"; + + // Compile the regexp to match each delimiter. + var reDelimiters = RegExp( + (options.escape || reNoMatch).source + '|' + + interpolate.source + '|' + + (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' + + (options.evaluate || reNoMatch).source + '|$' + , 'g'); + + // Use a sourceURL for easier debugging. + // The sourceURL gets injected into the source that's eval-ed, so be careful + // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in + // and escape the comment, thus injecting code that gets evaled. + var sourceURL = '//# sourceURL=' + + (hasOwnProperty.call(options, 'sourceURL') + ? (options.sourceURL + '').replace(/\s/g, ' ') + : ('lodash.templateSources[' + (++templateCounter) + ']') + ) + '\n'; + + string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) { + interpolateValue || (interpolateValue = esTemplateValue); + + // Escape characters that can't be included in string literals. + source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar); + + // Replace delimiters with snippets. + if (escapeValue) { + isEscaping = true; + source += "' +\n__e(" + escapeValue + ") +\n'"; + } + if (evaluateValue) { + isEvaluating = true; + source += "';\n" + evaluateValue + ";\n__p += '"; + } + if (interpolateValue) { + source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'"; + } + index = offset + match.length; + + // The JS engine embedded in Adobe products needs `match` returned in + // order to produce the correct `offset` value. + return match; + }); + + source += "';\n"; + + // If `variable` is not specified wrap a with-statement around the generated + // code to add the data object to the top of the scope chain. + var variable = hasOwnProperty.call(options, 'variable') && options.variable; + if (!variable) { + source = 'with (obj) {\n' + source + '\n}\n'; + } + // Throw an error if a forbidden character was found in `variable`, to prevent + // potential command injection attacks. + else if (reForbiddenIdentifierChars.test(variable)) { + throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT); + } + + // Cleanup code by stripping empty strings. + source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source) + .replace(reEmptyStringMiddle, '$1') + .replace(reEmptyStringTrailing, '$1;'); + + // Frame code as the function body. + source = 'function(' + (variable || 'obj') + ') {\n' + + (variable + ? '' + : 'obj || (obj = {});\n' + ) + + "var __t, __p = ''" + + (isEscaping + ? ', __e = _.escape' + : '' + ) + + (isEvaluating + ? ', __j = Array.prototype.join;\n' + + "function print() { __p += __j.call(arguments, '') }\n" + : ';\n' + ) + + source + + 'return __p\n}'; + + var result = attempt(function() { + return Function(importsKeys, sourceURL + 'return ' + source) + .apply(undefined$1, importsValues); + }); + + // Provide the compiled function's source by its `toString` method or + // the `source` property as a convenience for inlining compiled templates. + result.source = source; + if (isError(result)) { + throw result; + } + return result; + } + + /** + * Converts `string`, as a whole, to lower case just like + * [String#toLowerCase](https://mdn.io/toLowerCase). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the lower cased string. + * @example + * + * _.toLower('--Foo-Bar--'); + * // => '--foo-bar--' + * + * _.toLower('fooBar'); + * // => 'foobar' + * + * _.toLower('__FOO_BAR__'); + * // => '__foo_bar__' + */ + function toLower(value) { + return toString(value).toLowerCase(); + } + + /** + * Converts `string`, as a whole, to upper case just like + * [String#toUpperCase](https://mdn.io/toUpperCase). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the upper cased string. + * @example + * + * _.toUpper('--foo-bar--'); + * // => '--FOO-BAR--' + * + * _.toUpper('fooBar'); + * // => 'FOOBAR' + * + * _.toUpper('__foo_bar__'); + * // => '__FOO_BAR__' + */ + function toUpper(value) { + return toString(value).toUpperCase(); + } + + /** + * Removes leading and trailing whitespace or specified characters from `string`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to trim. + * @param {string} [chars=whitespace] The characters to trim. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {string} Returns the trimmed string. + * @example + * + * _.trim(' abc '); + * // => 'abc' + * + * _.trim('-_-abc-_-', '_-'); + * // => 'abc' + * + * _.map([' foo ', ' bar '], _.trim); + * // => ['foo', 'bar'] + */ + function trim(string, chars, guard) { + string = toString(string); + if (string && (guard || chars === undefined$1)) { + return baseTrim(string); + } + if (!string || !(chars = baseToString(chars))) { + return string; + } + var strSymbols = stringToArray(string), + chrSymbols = stringToArray(chars), + start = charsStartIndex(strSymbols, chrSymbols), + end = charsEndIndex(strSymbols, chrSymbols) + 1; + + return castSlice(strSymbols, start, end).join(''); + } + + /** + * Removes trailing whitespace or specified characters from `string`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to trim. + * @param {string} [chars=whitespace] The characters to trim. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {string} Returns the trimmed string. + * @example + * + * _.trimEnd(' abc '); + * // => ' abc' + * + * _.trimEnd('-_-abc-_-', '_-'); + * // => '-_-abc' + */ + function trimEnd(string, chars, guard) { + string = toString(string); + if (string && (guard || chars === undefined$1)) { + return string.slice(0, trimmedEndIndex(string) + 1); + } + if (!string || !(chars = baseToString(chars))) { + return string; + } + var strSymbols = stringToArray(string), + end = charsEndIndex(strSymbols, stringToArray(chars)) + 1; + + return castSlice(strSymbols, 0, end).join(''); + } + + /** + * Removes leading whitespace or specified characters from `string`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to trim. + * @param {string} [chars=whitespace] The characters to trim. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {string} Returns the trimmed string. + * @example + * + * _.trimStart(' abc '); + * // => 'abc ' + * + * _.trimStart('-_-abc-_-', '_-'); + * // => 'abc-_-' + */ + function trimStart(string, chars, guard) { + string = toString(string); + if (string && (guard || chars === undefined$1)) { + return string.replace(reTrimStart, ''); + } + if (!string || !(chars = baseToString(chars))) { + return string; + } + var strSymbols = stringToArray(string), + start = charsStartIndex(strSymbols, stringToArray(chars)); + + return castSlice(strSymbols, start).join(''); + } + + /** + * Truncates `string` if it's longer than the given maximum string length. + * The last characters of the truncated string are replaced with the omission + * string which defaults to "...". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to truncate. + * @param {Object} [options={}] The options object. + * @param {number} [options.length=30] The maximum string length. + * @param {string} [options.omission='...'] The string to indicate text is omitted. + * @param {RegExp|string} [options.separator] The separator pattern to truncate to. + * @returns {string} Returns the truncated string. + * @example + * + * _.truncate('hi-diddly-ho there, neighborino'); + * // => 'hi-diddly-ho there, neighbo...' + * + * _.truncate('hi-diddly-ho there, neighborino', { + * 'length': 24, + * 'separator': ' ' + * }); + * // => 'hi-diddly-ho there,...' + * + * _.truncate('hi-diddly-ho there, neighborino', { + * 'length': 24, + * 'separator': /,? +/ + * }); + * // => 'hi-diddly-ho there...' + * + * _.truncate('hi-diddly-ho there, neighborino', { + * 'omission': ' [...]' + * }); + * // => 'hi-diddly-ho there, neig [...]' + */ + function truncate(string, options) { + var length = DEFAULT_TRUNC_LENGTH, + omission = DEFAULT_TRUNC_OMISSION; + + if (isObject(options)) { + var separator = 'separator' in options ? options.separator : separator; + length = 'length' in options ? toInteger(options.length) : length; + omission = 'omission' in options ? baseToString(options.omission) : omission; + } + string = toString(string); + + var strLength = string.length; + if (hasUnicode(string)) { + var strSymbols = stringToArray(string); + strLength = strSymbols.length; + } + if (length >= strLength) { + return string; + } + var end = length - stringSize(omission); + if (end < 1) { + return omission; + } + var result = strSymbols + ? castSlice(strSymbols, 0, end).join('') + : string.slice(0, end); + + if (separator === undefined$1) { + return result + omission; + } + if (strSymbols) { + end += (result.length - end); + } + if (isRegExp(separator)) { + if (string.slice(end).search(separator)) { + var match, + substring = result; + + if (!separator.global) { + separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g'); + } + separator.lastIndex = 0; + while ((match = separator.exec(substring))) { + var newEnd = match.index; + } + result = result.slice(0, newEnd === undefined$1 ? end : newEnd); + } + } else if (string.indexOf(baseToString(separator), end) != end) { + var index = result.lastIndexOf(separator); + if (index > -1) { + result = result.slice(0, index); + } + } + return result + omission; + } + + /** + * The inverse of `_.escape`; this method converts the HTML entities + * `&`, `<`, `>`, `"`, and `'` in `string` to + * their corresponding characters. + * + * **Note:** No other HTML entities are unescaped. To unescape additional + * HTML entities use a third-party library like [_he_](https://mths.be/he). + * + * @static + * @memberOf _ + * @since 0.6.0 + * @category String + * @param {string} [string=''] The string to unescape. + * @returns {string} Returns the unescaped string. + * @example + * + * _.unescape('fred, barney, & pebbles'); + * // => 'fred, barney, & pebbles' + */ + function unescape(string) { + string = toString(string); + return (string && reHasEscapedHtml.test(string)) + ? string.replace(reEscapedHtml, unescapeHtmlChar) + : string; + } + + /** + * Converts `string`, as space separated words, to upper case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the upper cased string. + * @example + * + * _.upperCase('--foo-bar'); + * // => 'FOO BAR' + * + * _.upperCase('fooBar'); + * // => 'FOO BAR' + * + * _.upperCase('__foo_bar__'); + * // => 'FOO BAR' + */ + var upperCase = createCompounder(function(result, word, index) { + return result + (index ? ' ' : '') + word.toUpperCase(); + }); + + /** + * Converts the first character of `string` to upper case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.upperFirst('fred'); + * // => 'Fred' + * + * _.upperFirst('FRED'); + * // => 'FRED' + */ + var upperFirst = createCaseFirst('toUpperCase'); + + /** + * Splits `string` into an array of its words. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to inspect. + * @param {RegExp|string} [pattern] The pattern to match words. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the words of `string`. + * @example + * + * _.words('fred, barney, & pebbles'); + * // => ['fred', 'barney', 'pebbles'] + * + * _.words('fred, barney, & pebbles', /[^, ]+/g); + * // => ['fred', 'barney', '&', 'pebbles'] + */ + function words(string, pattern, guard) { + string = toString(string); + pattern = guard ? undefined$1 : pattern; + + if (pattern === undefined$1) { + return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string); + } + return string.match(pattern) || []; + } + + /*------------------------------------------------------------------------*/ + + /** + * Attempts to invoke `func`, returning either the result or the caught error + * object. Any additional arguments are provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Util + * @param {Function} func The function to attempt. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {*} Returns the `func` result or error object. + * @example + * + * // Avoid throwing errors for invalid selectors. + * var elements = _.attempt(function(selector) { + * return document.querySelectorAll(selector); + * }, '>_>'); + * + * if (_.isError(elements)) { + * elements = []; + * } + */ + var attempt = baseRest(function(func, args) { + try { + return apply(func, undefined$1, args); + } catch (e) { + return isError(e) ? e : new Error(e); + } + }); + + /** + * Binds methods of an object to the object itself, overwriting the existing + * method. + * + * **Note:** This method doesn't set the "length" property of bound functions. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {Object} object The object to bind and assign the bound methods to. + * @param {...(string|string[])} methodNames The object method names to bind. + * @returns {Object} Returns `object`. + * @example + * + * var view = { + * 'label': 'docs', + * 'click': function() { + * console.log('clicked ' + this.label); + * } + * }; + * + * _.bindAll(view, ['click']); + * jQuery(element).on('click', view.click); + * // => Logs 'clicked docs' when clicked. + */ + var bindAll = flatRest(function(object, methodNames) { + arrayEach(methodNames, function(key) { + key = toKey(key); + baseAssignValue(object, key, bind(object[key], object)); + }); + return object; + }); + + /** + * Creates a function that iterates over `pairs` and invokes the corresponding + * function of the first predicate to return truthy. The predicate-function + * pairs are invoked with the `this` binding and arguments of the created + * function. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {Array} pairs The predicate-function pairs. + * @returns {Function} Returns the new composite function. + * @example + * + * var func = _.cond([ + * [_.matches({ 'a': 1 }), _.constant('matches A')], + * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')], + * [_.stubTrue, _.constant('no match')] + * ]); + * + * func({ 'a': 1, 'b': 2 }); + * // => 'matches A' + * + * func({ 'a': 0, 'b': 1 }); + * // => 'matches B' + * + * func({ 'a': '1', 'b': '2' }); + * // => 'no match' + */ + function cond(pairs) { + var length = pairs == null ? 0 : pairs.length, + toIteratee = getIteratee(); + + pairs = !length ? [] : arrayMap(pairs, function(pair) { + if (typeof pair[1] != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return [toIteratee(pair[0]), pair[1]]; + }); + + return baseRest(function(args) { + var index = -1; + while (++index < length) { + var pair = pairs[index]; + if (apply(pair[0], this, args)) { + return apply(pair[1], this, args); + } + } + }); + } + + /** + * Creates a function that invokes the predicate properties of `source` with + * the corresponding property values of a given object, returning `true` if + * all predicates return truthy, else `false`. + * + * **Note:** The created function is equivalent to `_.conformsTo` with + * `source` partially applied. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {Object} source The object of property predicates to conform to. + * @returns {Function} Returns the new spec function. + * @example + * + * var objects = [ + * { 'a': 2, 'b': 1 }, + * { 'a': 1, 'b': 2 } + * ]; + * + * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } })); + * // => [{ 'a': 1, 'b': 2 }] + */ + function conforms(source) { + return baseConforms(baseClone(source, CLONE_DEEP_FLAG)); + } + + /** + * Creates a function that returns `value`. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {*} value The value to return from the new function. + * @returns {Function} Returns the new constant function. + * @example + * + * var objects = _.times(2, _.constant({ 'a': 1 })); + * + * console.log(objects); + * // => [{ 'a': 1 }, { 'a': 1 }] + * + * console.log(objects[0] === objects[1]); + * // => true + */ + function constant(value) { + return function() { + return value; + }; + } + + /** + * Checks `value` to determine whether a default value should be returned in + * its place. The `defaultValue` is returned if `value` is `NaN`, `null`, + * or `undefined`. + * + * @static + * @memberOf _ + * @since 4.14.0 + * @category Util + * @param {*} value The value to check. + * @param {*} defaultValue The default value. + * @returns {*} Returns the resolved value. + * @example + * + * _.defaultTo(1, 10); + * // => 1 + * + * _.defaultTo(undefined, 10); + * // => 10 + */ + function defaultTo(value, defaultValue) { + return (value == null || value !== value) ? defaultValue : value; + } + + /** + * Creates a function that returns the result of invoking the given functions + * with the `this` binding of the created function, where each successive + * invocation is supplied the return value of the previous. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Util + * @param {...(Function|Function[])} [funcs] The functions to invoke. + * @returns {Function} Returns the new composite function. + * @see _.flowRight + * @example + * + * function square(n) { + * return n * n; + * } + * + * var addSquare = _.flow([_.add, square]); + * addSquare(1, 2); + * // => 9 + */ + var flow = createFlow(); + + /** + * This method is like `_.flow` except that it creates a function that + * invokes the given functions from right to left. + * + * @static + * @since 3.0.0 + * @memberOf _ + * @category Util + * @param {...(Function|Function[])} [funcs] The functions to invoke. + * @returns {Function} Returns the new composite function. + * @see _.flow + * @example + * + * function square(n) { + * return n * n; + * } + * + * var addSquare = _.flowRight([square, _.add]); + * addSquare(1, 2); + * // => 9 + */ + var flowRight = createFlow(true); + + /** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */ + function identity(value) { + return value; + } + + /** + * Creates a function that invokes `func` with the arguments of the created + * function. If `func` is a property name, the created function returns the + * property value for a given element. If `func` is an array or object, the + * created function returns `true` for elements that contain the equivalent + * source properties, otherwise it returns `false`. + * + * @static + * @since 4.0.0 + * @memberOf _ + * @category Util + * @param {*} [func=_.identity] The value to convert to a callback. + * @returns {Function} Returns the callback. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true })); + * // => [{ 'user': 'barney', 'age': 36, 'active': true }] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.filter(users, _.iteratee(['user', 'fred'])); + * // => [{ 'user': 'fred', 'age': 40 }] + * + * // The `_.property` iteratee shorthand. + * _.map(users, _.iteratee('user')); + * // => ['barney', 'fred'] + * + * // Create custom iteratee shorthands. + * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) { + * return !_.isRegExp(func) ? iteratee(func) : function(string) { + * return func.test(string); + * }; + * }); + * + * _.filter(['abc', 'def'], /ef/); + * // => ['def'] + */ + function iteratee(func) { + return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG)); + } + + /** + * Creates a function that performs a partial deep comparison between a given + * object and `source`, returning `true` if the given object has equivalent + * property values, else `false`. + * + * **Note:** The created function is equivalent to `_.isMatch` with `source` + * partially applied. + * + * Partial comparisons will match empty array and empty object `source` + * values against any array or object value, respectively. See `_.isEqual` + * for a list of supported value comparisons. + * + * **Note:** Multiple values can be checked by combining several matchers + * using `_.overSome` + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Util + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + * @example + * + * var objects = [ + * { 'a': 1, 'b': 2, 'c': 3 }, + * { 'a': 4, 'b': 5, 'c': 6 } + * ]; + * + * _.filter(objects, _.matches({ 'a': 4, 'c': 6 })); + * // => [{ 'a': 4, 'b': 5, 'c': 6 }] + * + * // Checking for several possible values + * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })])); + * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }] + */ + function matches(source) { + return baseMatches(baseClone(source, CLONE_DEEP_FLAG)); + } + + /** + * Creates a function that performs a partial deep comparison between the + * value at `path` of a given object to `srcValue`, returning `true` if the + * object value is equivalent, else `false`. + * + * **Note:** Partial comparisons will match empty array and empty object + * `srcValue` values against any array or object value, respectively. See + * `_.isEqual` for a list of supported value comparisons. + * + * **Note:** Multiple values can be checked by combining several matchers + * using `_.overSome` + * + * @static + * @memberOf _ + * @since 3.2.0 + * @category Util + * @param {Array|string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + * @example + * + * var objects = [ + * { 'a': 1, 'b': 2, 'c': 3 }, + * { 'a': 4, 'b': 5, 'c': 6 } + * ]; + * + * _.find(objects, _.matchesProperty('a', 4)); + * // => { 'a': 4, 'b': 5, 'c': 6 } + * + * // Checking for several possible values + * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)])); + * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }] + */ + function matchesProperty(path, srcValue) { + return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG)); + } + + /** + * Creates a function that invokes the method at `path` of a given object. + * Any additional arguments are provided to the invoked method. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Util + * @param {Array|string} path The path of the method to invoke. + * @param {...*} [args] The arguments to invoke the method with. + * @returns {Function} Returns the new invoker function. + * @example + * + * var objects = [ + * { 'a': { 'b': _.constant(2) } }, + * { 'a': { 'b': _.constant(1) } } + * ]; + * + * _.map(objects, _.method('a.b')); + * // => [2, 1] + * + * _.map(objects, _.method(['a', 'b'])); + * // => [2, 1] + */ + var method = baseRest(function(path, args) { + return function(object) { + return baseInvoke(object, path, args); + }; + }); + + /** + * The opposite of `_.method`; this method creates a function that invokes + * the method at a given path of `object`. Any additional arguments are + * provided to the invoked method. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Util + * @param {Object} object The object to query. + * @param {...*} [args] The arguments to invoke the method with. + * @returns {Function} Returns the new invoker function. + * @example + * + * var array = _.times(3, _.constant), + * object = { 'a': array, 'b': array, 'c': array }; + * + * _.map(['a[2]', 'c[0]'], _.methodOf(object)); + * // => [2, 0] + * + * _.map([['a', '2'], ['c', '0']], _.methodOf(object)); + * // => [2, 0] + */ + var methodOf = baseRest(function(object, args) { + return function(path) { + return baseInvoke(object, path, args); + }; + }); + + /** + * Adds all own enumerable string keyed function properties of a source + * object to the destination object. If `object` is a function, then methods + * are added to its prototype as well. + * + * **Note:** Use `_.runInContext` to create a pristine `lodash` function to + * avoid conflicts caused by modifying the original. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {Function|Object} [object=lodash] The destination object. + * @param {Object} source The object of functions to add. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.chain=true] Specify whether mixins are chainable. + * @returns {Function|Object} Returns `object`. + * @example + * + * function vowels(string) { + * return _.filter(string, function(v) { + * return /[aeiou]/i.test(v); + * }); + * } + * + * _.mixin({ 'vowels': vowels }); + * _.vowels('fred'); + * // => ['e'] + * + * _('fred').vowels().value(); + * // => ['e'] + * + * _.mixin({ 'vowels': vowels }, { 'chain': false }); + * _('fred').vowels(); + * // => ['e'] + */ + function mixin(object, source, options) { + var props = keys(source), + methodNames = baseFunctions(source, props); + + if (options == null && + !(isObject(source) && (methodNames.length || !props.length))) { + options = source; + source = object; + object = this; + methodNames = baseFunctions(source, keys(source)); + } + var chain = !(isObject(options) && 'chain' in options) || !!options.chain, + isFunc = isFunction(object); + + arrayEach(methodNames, function(methodName) { + var func = source[methodName]; + object[methodName] = func; + if (isFunc) { + object.prototype[methodName] = function() { + var chainAll = this.__chain__; + if (chain || chainAll) { + var result = object(this.__wrapped__), + actions = result.__actions__ = copyArray(this.__actions__); + + actions.push({ 'func': func, 'args': arguments, 'thisArg': object }); + result.__chain__ = chainAll; + return result; + } + return func.apply(object, arrayPush([this.value()], arguments)); + }; + } + }); + + return object; + } + + /** + * Reverts the `_` variable to its previous value and returns a reference to + * the `lodash` function. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @returns {Function} Returns the `lodash` function. + * @example + * + * var lodash = _.noConflict(); + */ + function noConflict() { + if (root._ === this) { + root._ = oldDash; + } + return this; + } + + /** + * This method returns `undefined`. + * + * @static + * @memberOf _ + * @since 2.3.0 + * @category Util + * @example + * + * _.times(2, _.noop); + * // => [undefined, undefined] + */ + function noop() { + // No operation performed. + } + + /** + * Creates a function that gets the argument at index `n`. If `n` is negative, + * the nth argument from the end is returned. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {number} [n=0] The index of the argument to return. + * @returns {Function} Returns the new pass-thru function. + * @example + * + * var func = _.nthArg(1); + * func('a', 'b', 'c', 'd'); + * // => 'b' + * + * var func = _.nthArg(-2); + * func('a', 'b', 'c', 'd'); + * // => 'c' + */ + function nthArg(n) { + n = toInteger(n); + return baseRest(function(args) { + return baseNth(args, n); + }); + } + + /** + * Creates a function that invokes `iteratees` with the arguments it receives + * and returns their results. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {...(Function|Function[])} [iteratees=[_.identity]] + * The iteratees to invoke. + * @returns {Function} Returns the new function. + * @example + * + * var func = _.over([Math.max, Math.min]); + * + * func(1, 2, 3, 4); + * // => [4, 1] + */ + var over = createOver(arrayMap); + + /** + * Creates a function that checks if **all** of the `predicates` return + * truthy when invoked with the arguments it receives. + * + * Following shorthands are possible for providing predicates. + * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate. + * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {...(Function|Function[])} [predicates=[_.identity]] + * The predicates to check. + * @returns {Function} Returns the new function. + * @example + * + * var func = _.overEvery([Boolean, isFinite]); + * + * func('1'); + * // => true + * + * func(null); + * // => false + * + * func(NaN); + * // => false + */ + var overEvery = createOver(arrayEvery); + + /** + * Creates a function that checks if **any** of the `predicates` return + * truthy when invoked with the arguments it receives. + * + * Following shorthands are possible for providing predicates. + * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate. + * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {...(Function|Function[])} [predicates=[_.identity]] + * The predicates to check. + * @returns {Function} Returns the new function. + * @example + * + * var func = _.overSome([Boolean, isFinite]); + * + * func('1'); + * // => true + * + * func(null); + * // => true + * + * func(NaN); + * // => false + * + * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }]) + * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]]) + */ + var overSome = createOver(arraySome); + + /** + * Creates a function that returns the value at `path` of a given object. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + * @example + * + * var objects = [ + * { 'a': { 'b': 2 } }, + * { 'a': { 'b': 1 } } + * ]; + * + * _.map(objects, _.property('a.b')); + * // => [2, 1] + * + * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); + * // => [1, 2] + */ + function property(path) { + return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); + } + + /** + * The opposite of `_.property`; this method creates a function that returns + * the value at a given path of `object`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Util + * @param {Object} object The object to query. + * @returns {Function} Returns the new accessor function. + * @example + * + * var array = [0, 1, 2], + * object = { 'a': array, 'b': array, 'c': array }; + * + * _.map(['a[2]', 'c[0]'], _.propertyOf(object)); + * // => [2, 0] + * + * _.map([['a', '2'], ['c', '0']], _.propertyOf(object)); + * // => [2, 0] + */ + function propertyOf(object) { + return function(path) { + return object == null ? undefined$1 : baseGet(object, path); + }; + } + + /** + * Creates an array of numbers (positive and/or negative) progressing from + * `start` up to, but not including, `end`. A step of `-1` is used if a negative + * `start` is specified without an `end` or `step`. If `end` is not specified, + * it's set to `start` with `start` then set to `0`. + * + * **Note:** JavaScript follows the IEEE-754 standard for resolving + * floating-point values which can produce unexpected results. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @param {number} [step=1] The value to increment or decrement by. + * @returns {Array} Returns the range of numbers. + * @see _.inRange, _.rangeRight + * @example + * + * _.range(4); + * // => [0, 1, 2, 3] + * + * _.range(-4); + * // => [0, -1, -2, -3] + * + * _.range(1, 5); + * // => [1, 2, 3, 4] + * + * _.range(0, 20, 5); + * // => [0, 5, 10, 15] + * + * _.range(0, -4, -1); + * // => [0, -1, -2, -3] + * + * _.range(1, 4, 0); + * // => [1, 1, 1] + * + * _.range(0); + * // => [] + */ + var range = createRange(); + + /** + * This method is like `_.range` except that it populates values in + * descending order. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @param {number} [step=1] The value to increment or decrement by. + * @returns {Array} Returns the range of numbers. + * @see _.inRange, _.range + * @example + * + * _.rangeRight(4); + * // => [3, 2, 1, 0] + * + * _.rangeRight(-4); + * // => [-3, -2, -1, 0] + * + * _.rangeRight(1, 5); + * // => [4, 3, 2, 1] + * + * _.rangeRight(0, 20, 5); + * // => [15, 10, 5, 0] + * + * _.rangeRight(0, -4, -1); + * // => [-3, -2, -1, 0] + * + * _.rangeRight(1, 4, 0); + * // => [1, 1, 1] + * + * _.rangeRight(0); + * // => [] + */ + var rangeRight = createRange(true); + + /** + * This method returns a new empty array. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {Array} Returns the new empty array. + * @example + * + * var arrays = _.times(2, _.stubArray); + * + * console.log(arrays); + * // => [[], []] + * + * console.log(arrays[0] === arrays[1]); + * // => false + */ + function stubArray() { + return []; + } + + /** + * This method returns `false`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `false`. + * @example + * + * _.times(2, _.stubFalse); + * // => [false, false] + */ + function stubFalse() { + return false; + } + + /** + * This method returns a new empty object. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {Object} Returns the new empty object. + * @example + * + * var objects = _.times(2, _.stubObject); + * + * console.log(objects); + * // => [{}, {}] + * + * console.log(objects[0] === objects[1]); + * // => false + */ + function stubObject() { + return {}; + } + + /** + * This method returns an empty string. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {string} Returns the empty string. + * @example + * + * _.times(2, _.stubString); + * // => ['', ''] + */ + function stubString() { + return ''; + } + + /** + * This method returns `true`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `true`. + * @example + * + * _.times(2, _.stubTrue); + * // => [true, true] + */ + function stubTrue() { + return true; + } + + /** + * Invokes the iteratee `n` times, returning an array of the results of + * each invocation. The iteratee is invoked with one argument; (index). + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the array of results. + * @example + * + * _.times(3, String); + * // => ['0', '1', '2'] + * + * _.times(4, _.constant(0)); + * // => [0, 0, 0, 0] + */ + function times(n, iteratee) { + n = toInteger(n); + if (n < 1 || n > MAX_SAFE_INTEGER) { + return []; + } + var index = MAX_ARRAY_LENGTH, + length = nativeMin(n, MAX_ARRAY_LENGTH); + + iteratee = getIteratee(iteratee); + n -= MAX_ARRAY_LENGTH; + + var result = baseTimes(length, iteratee); + while (++index < n) { + iteratee(index); + } + return result; + } + + /** + * Converts `value` to a property path array. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {*} value The value to convert. + * @returns {Array} Returns the new property path array. + * @example + * + * _.toPath('a.b.c'); + * // => ['a', 'b', 'c'] + * + * _.toPath('a[0].b.c'); + * // => ['a', '0', 'b', 'c'] + */ + function toPath(value) { + if (isArray(value)) { + return arrayMap(value, toKey); + } + return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value))); + } + + /** + * Generates a unique ID. If `prefix` is given, the ID is appended to it. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {string} [prefix=''] The value to prefix the ID with. + * @returns {string} Returns the unique ID. + * @example + * + * _.uniqueId('contact_'); + * // => 'contact_104' + * + * _.uniqueId(); + * // => '105' + */ + function uniqueId(prefix) { + var id = ++idCounter; + return toString(prefix) + id; + } + + /*------------------------------------------------------------------------*/ + + /** + * Adds two numbers. + * + * @static + * @memberOf _ + * @since 3.4.0 + * @category Math + * @param {number} augend The first number in an addition. + * @param {number} addend The second number in an addition. + * @returns {number} Returns the total. + * @example + * + * _.add(6, 4); + * // => 10 + */ + var add = createMathOperation(function(augend, addend) { + return augend + addend; + }, 0); + + /** + * Computes `number` rounded up to `precision`. + * + * @static + * @memberOf _ + * @since 3.10.0 + * @category Math + * @param {number} number The number to round up. + * @param {number} [precision=0] The precision to round up to. + * @returns {number} Returns the rounded up number. + * @example + * + * _.ceil(4.006); + * // => 5 + * + * _.ceil(6.004, 2); + * // => 6.01 + * + * _.ceil(6040, -2); + * // => 6100 + */ + var ceil = createRound('ceil'); + + /** + * Divide two numbers. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Math + * @param {number} dividend The first number in a division. + * @param {number} divisor The second number in a division. + * @returns {number} Returns the quotient. + * @example + * + * _.divide(6, 4); + * // => 1.5 + */ + var divide = createMathOperation(function(dividend, divisor) { + return dividend / divisor; + }, 1); + + /** + * Computes `number` rounded down to `precision`. + * + * @static + * @memberOf _ + * @since 3.10.0 + * @category Math + * @param {number} number The number to round down. + * @param {number} [precision=0] The precision to round down to. + * @returns {number} Returns the rounded down number. + * @example + * + * _.floor(4.006); + * // => 4 + * + * _.floor(0.046, 2); + * // => 0.04 + * + * _.floor(4060, -2); + * // => 4000 + */ + var floor = createRound('floor'); + + /** + * Computes the maximum value of `array`. If `array` is empty or falsey, + * `undefined` is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Math + * @param {Array} array The array to iterate over. + * @returns {*} Returns the maximum value. + * @example + * + * _.max([4, 2, 8, 6]); + * // => 8 + * + * _.max([]); + * // => undefined + */ + function max(array) { + return (array && array.length) + ? baseExtremum(array, identity, baseGt) + : undefined$1; + } + + /** + * This method is like `_.max` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the criterion by which + * the value is ranked. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Math + * @param {Array} array The array to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {*} Returns the maximum value. + * @example + * + * var objects = [{ 'n': 1 }, { 'n': 2 }]; + * + * _.maxBy(objects, function(o) { return o.n; }); + * // => { 'n': 2 } + * + * // The `_.property` iteratee shorthand. + * _.maxBy(objects, 'n'); + * // => { 'n': 2 } + */ + function maxBy(array, iteratee) { + return (array && array.length) + ? baseExtremum(array, getIteratee(iteratee, 2), baseGt) + : undefined$1; + } + + /** + * Computes the mean of the values in `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Math + * @param {Array} array The array to iterate over. + * @returns {number} Returns the mean. + * @example + * + * _.mean([4, 2, 8, 6]); + * // => 5 + */ + function mean(array) { + return baseMean(array, identity); + } + + /** + * This method is like `_.mean` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the value to be averaged. + * The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Math + * @param {Array} array The array to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the mean. + * @example + * + * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }]; + * + * _.meanBy(objects, function(o) { return o.n; }); + * // => 5 + * + * // The `_.property` iteratee shorthand. + * _.meanBy(objects, 'n'); + * // => 5 + */ + function meanBy(array, iteratee) { + return baseMean(array, getIteratee(iteratee, 2)); + } + + /** + * Computes the minimum value of `array`. If `array` is empty or falsey, + * `undefined` is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Math + * @param {Array} array The array to iterate over. + * @returns {*} Returns the minimum value. + * @example + * + * _.min([4, 2, 8, 6]); + * // => 2 + * + * _.min([]); + * // => undefined + */ + function min(array) { + return (array && array.length) + ? baseExtremum(array, identity, baseLt) + : undefined$1; + } + + /** + * This method is like `_.min` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the criterion by which + * the value is ranked. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Math + * @param {Array} array The array to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {*} Returns the minimum value. + * @example + * + * var objects = [{ 'n': 1 }, { 'n': 2 }]; + * + * _.minBy(objects, function(o) { return o.n; }); + * // => { 'n': 1 } + * + * // The `_.property` iteratee shorthand. + * _.minBy(objects, 'n'); + * // => { 'n': 1 } + */ + function minBy(array, iteratee) { + return (array && array.length) + ? baseExtremum(array, getIteratee(iteratee, 2), baseLt) + : undefined$1; + } + + /** + * Multiply two numbers. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Math + * @param {number} multiplier The first number in a multiplication. + * @param {number} multiplicand The second number in a multiplication. + * @returns {number} Returns the product. + * @example + * + * _.multiply(6, 4); + * // => 24 + */ + var multiply = createMathOperation(function(multiplier, multiplicand) { + return multiplier * multiplicand; + }, 1); + + /** + * Computes `number` rounded to `precision`. + * + * @static + * @memberOf _ + * @since 3.10.0 + * @category Math + * @param {number} number The number to round. + * @param {number} [precision=0] The precision to round to. + * @returns {number} Returns the rounded number. + * @example + * + * _.round(4.006); + * // => 4 + * + * _.round(4.006, 2); + * // => 4.01 + * + * _.round(4060, -2); + * // => 4100 + */ + var round = createRound('round'); + + /** + * Subtract two numbers. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Math + * @param {number} minuend The first number in a subtraction. + * @param {number} subtrahend The second number in a subtraction. + * @returns {number} Returns the difference. + * @example + * + * _.subtract(6, 4); + * // => 2 + */ + var subtract = createMathOperation(function(minuend, subtrahend) { + return minuend - subtrahend; + }, 0); + + /** + * Computes the sum of the values in `array`. + * + * @static + * @memberOf _ + * @since 3.4.0 + * @category Math + * @param {Array} array The array to iterate over. + * @returns {number} Returns the sum. + * @example + * + * _.sum([4, 2, 8, 6]); + * // => 20 + */ + function sum(array) { + return (array && array.length) + ? baseSum(array, identity) + : 0; + } + + /** + * This method is like `_.sum` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the value to be summed. + * The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Math + * @param {Array} array The array to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the sum. + * @example + * + * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }]; + * + * _.sumBy(objects, function(o) { return o.n; }); + * // => 20 + * + * // The `_.property` iteratee shorthand. + * _.sumBy(objects, 'n'); + * // => 20 + */ + function sumBy(array, iteratee) { + return (array && array.length) + ? baseSum(array, getIteratee(iteratee, 2)) + : 0; + } + + /*------------------------------------------------------------------------*/ + + // Add methods that return wrapped values in chain sequences. + lodash.after = after; + lodash.ary = ary; + lodash.assign = assign; + lodash.assignIn = assignIn; + lodash.assignInWith = assignInWith; + lodash.assignWith = assignWith; + lodash.at = at; + lodash.before = before; + lodash.bind = bind; + lodash.bindAll = bindAll; + lodash.bindKey = bindKey; + lodash.castArray = castArray; + lodash.chain = chain; + lodash.chunk = chunk; + lodash.compact = compact; + lodash.concat = concat; + lodash.cond = cond; + lodash.conforms = conforms; + lodash.constant = constant; + lodash.countBy = countBy; + lodash.create = create; + lodash.curry = curry; + lodash.curryRight = curryRight; + lodash.debounce = debounce; + lodash.defaults = defaults; + lodash.defaultsDeep = defaultsDeep; + lodash.defer = defer; + lodash.delay = delay; + lodash.difference = difference; + lodash.differenceBy = differenceBy; + lodash.differenceWith = differenceWith; + lodash.drop = drop; + lodash.dropRight = dropRight; + lodash.dropRightWhile = dropRightWhile; + lodash.dropWhile = dropWhile; + lodash.fill = fill; + lodash.filter = filter; + lodash.flatMap = flatMap; + lodash.flatMapDeep = flatMapDeep; + lodash.flatMapDepth = flatMapDepth; + lodash.flatten = flatten; + lodash.flattenDeep = flattenDeep; + lodash.flattenDepth = flattenDepth; + lodash.flip = flip; + lodash.flow = flow; + lodash.flowRight = flowRight; + lodash.fromPairs = fromPairs; + lodash.functions = functions; + lodash.functionsIn = functionsIn; + lodash.groupBy = groupBy; + lodash.initial = initial; + lodash.intersection = intersection; + lodash.intersectionBy = intersectionBy; + lodash.intersectionWith = intersectionWith; + lodash.invert = invert; + lodash.invertBy = invertBy; + lodash.invokeMap = invokeMap; + lodash.iteratee = iteratee; + lodash.keyBy = keyBy; + lodash.keys = keys; + lodash.keysIn = keysIn; + lodash.map = map; + lodash.mapKeys = mapKeys; + lodash.mapValues = mapValues; + lodash.matches = matches; + lodash.matchesProperty = matchesProperty; + lodash.memoize = memoize; + lodash.merge = merge; + lodash.mergeWith = mergeWith; + lodash.method = method; + lodash.methodOf = methodOf; + lodash.mixin = mixin; + lodash.negate = negate; + lodash.nthArg = nthArg; + lodash.omit = omit; + lodash.omitBy = omitBy; + lodash.once = once; + lodash.orderBy = orderBy; + lodash.over = over; + lodash.overArgs = overArgs; + lodash.overEvery = overEvery; + lodash.overSome = overSome; + lodash.partial = partial; + lodash.partialRight = partialRight; + lodash.partition = partition; + lodash.pick = pick; + lodash.pickBy = pickBy; + lodash.property = property; + lodash.propertyOf = propertyOf; + lodash.pull = pull; + lodash.pullAll = pullAll; + lodash.pullAllBy = pullAllBy; + lodash.pullAllWith = pullAllWith; + lodash.pullAt = pullAt; + lodash.range = range; + lodash.rangeRight = rangeRight; + lodash.rearg = rearg; + lodash.reject = reject; + lodash.remove = remove; + lodash.rest = rest; + lodash.reverse = reverse; + lodash.sampleSize = sampleSize; + lodash.set = set; + lodash.setWith = setWith; + lodash.shuffle = shuffle; + lodash.slice = slice; + lodash.sortBy = sortBy; + lodash.sortedUniq = sortedUniq; + lodash.sortedUniqBy = sortedUniqBy; + lodash.split = split; + lodash.spread = spread; + lodash.tail = tail; + lodash.take = take; + lodash.takeRight = takeRight; + lodash.takeRightWhile = takeRightWhile; + lodash.takeWhile = takeWhile; + lodash.tap = tap; + lodash.throttle = throttle; + lodash.thru = thru; + lodash.toArray = toArray; + lodash.toPairs = toPairs; + lodash.toPairsIn = toPairsIn; + lodash.toPath = toPath; + lodash.toPlainObject = toPlainObject; + lodash.transform = transform; + lodash.unary = unary; + lodash.union = union; + lodash.unionBy = unionBy; + lodash.unionWith = unionWith; + lodash.uniq = uniq; + lodash.uniqBy = uniqBy; + lodash.uniqWith = uniqWith; + lodash.unset = unset; + lodash.unzip = unzip; + lodash.unzipWith = unzipWith; + lodash.update = update; + lodash.updateWith = updateWith; + lodash.values = values; + lodash.valuesIn = valuesIn; + lodash.without = without; + lodash.words = words; + lodash.wrap = wrap; + lodash.xor = xor; + lodash.xorBy = xorBy; + lodash.xorWith = xorWith; + lodash.zip = zip; + lodash.zipObject = zipObject; + lodash.zipObjectDeep = zipObjectDeep; + lodash.zipWith = zipWith; + + // Add aliases. + lodash.entries = toPairs; + lodash.entriesIn = toPairsIn; + lodash.extend = assignIn; + lodash.extendWith = assignInWith; + + // Add methods to `lodash.prototype`. + mixin(lodash, lodash); + + /*------------------------------------------------------------------------*/ + + // Add methods that return unwrapped values in chain sequences. + lodash.add = add; + lodash.attempt = attempt; + lodash.camelCase = camelCase; + lodash.capitalize = capitalize; + lodash.ceil = ceil; + lodash.clamp = clamp; + lodash.clone = clone; + lodash.cloneDeep = cloneDeep; + lodash.cloneDeepWith = cloneDeepWith; + lodash.cloneWith = cloneWith; + lodash.conformsTo = conformsTo; + lodash.deburr = deburr; + lodash.defaultTo = defaultTo; + lodash.divide = divide; + lodash.endsWith = endsWith; + lodash.eq = eq; + lodash.escape = escape; + lodash.escapeRegExp = escapeRegExp; + lodash.every = every; + lodash.find = find; + lodash.findIndex = findIndex; + lodash.findKey = findKey; + lodash.findLast = findLast; + lodash.findLastIndex = findLastIndex; + lodash.findLastKey = findLastKey; + lodash.floor = floor; + lodash.forEach = forEach; + lodash.forEachRight = forEachRight; + lodash.forIn = forIn; + lodash.forInRight = forInRight; + lodash.forOwn = forOwn; + lodash.forOwnRight = forOwnRight; + lodash.get = get; + lodash.gt = gt; + lodash.gte = gte; + lodash.has = has; + lodash.hasIn = hasIn; + lodash.head = head; + lodash.identity = identity; + lodash.includes = includes; + lodash.indexOf = indexOf; + lodash.inRange = inRange; + lodash.invoke = invoke; + lodash.isArguments = isArguments; + lodash.isArray = isArray; + lodash.isArrayBuffer = isArrayBuffer; + lodash.isArrayLike = isArrayLike; + lodash.isArrayLikeObject = isArrayLikeObject; + lodash.isBoolean = isBoolean; + lodash.isBuffer = isBuffer; + lodash.isDate = isDate; + lodash.isElement = isElement; + lodash.isEmpty = isEmpty; + lodash.isEqual = isEqual; + lodash.isEqualWith = isEqualWith; + lodash.isError = isError; + lodash.isFinite = isFinite; + lodash.isFunction = isFunction; + lodash.isInteger = isInteger; + lodash.isLength = isLength; + lodash.isMap = isMap; + lodash.isMatch = isMatch; + lodash.isMatchWith = isMatchWith; + lodash.isNaN = isNaN; + lodash.isNative = isNative; + lodash.isNil = isNil; + lodash.isNull = isNull; + lodash.isNumber = isNumber; + lodash.isObject = isObject; + lodash.isObjectLike = isObjectLike; + lodash.isPlainObject = isPlainObject; + lodash.isRegExp = isRegExp; + lodash.isSafeInteger = isSafeInteger; + lodash.isSet = isSet; + lodash.isString = isString; + lodash.isSymbol = isSymbol; + lodash.isTypedArray = isTypedArray; + lodash.isUndefined = isUndefined; + lodash.isWeakMap = isWeakMap; + lodash.isWeakSet = isWeakSet; + lodash.join = join; + lodash.kebabCase = kebabCase; + lodash.last = last; + lodash.lastIndexOf = lastIndexOf; + lodash.lowerCase = lowerCase; + lodash.lowerFirst = lowerFirst; + lodash.lt = lt; + lodash.lte = lte; + lodash.max = max; + lodash.maxBy = maxBy; + lodash.mean = mean; + lodash.meanBy = meanBy; + lodash.min = min; + lodash.minBy = minBy; + lodash.stubArray = stubArray; + lodash.stubFalse = stubFalse; + lodash.stubObject = stubObject; + lodash.stubString = stubString; + lodash.stubTrue = stubTrue; + lodash.multiply = multiply; + lodash.nth = nth; + lodash.noConflict = noConflict; + lodash.noop = noop; + lodash.now = now; + lodash.pad = pad; + lodash.padEnd = padEnd; + lodash.padStart = padStart; + lodash.parseInt = parseInt; + lodash.random = random; + lodash.reduce = reduce; + lodash.reduceRight = reduceRight; + lodash.repeat = repeat; + lodash.replace = replace; + lodash.result = result; + lodash.round = round; + lodash.runInContext = runInContext; + lodash.sample = sample; + lodash.size = size; + lodash.snakeCase = snakeCase; + lodash.some = some; + lodash.sortedIndex = sortedIndex; + lodash.sortedIndexBy = sortedIndexBy; + lodash.sortedIndexOf = sortedIndexOf; + lodash.sortedLastIndex = sortedLastIndex; + lodash.sortedLastIndexBy = sortedLastIndexBy; + lodash.sortedLastIndexOf = sortedLastIndexOf; + lodash.startCase = startCase; + lodash.startsWith = startsWith; + lodash.subtract = subtract; + lodash.sum = sum; + lodash.sumBy = sumBy; + lodash.template = template; + lodash.times = times; + lodash.toFinite = toFinite; + lodash.toInteger = toInteger; + lodash.toLength = toLength; + lodash.toLower = toLower; + lodash.toNumber = toNumber; + lodash.toSafeInteger = toSafeInteger; + lodash.toString = toString; + lodash.toUpper = toUpper; + lodash.trim = trim; + lodash.trimEnd = trimEnd; + lodash.trimStart = trimStart; + lodash.truncate = truncate; + lodash.unescape = unescape; + lodash.uniqueId = uniqueId; + lodash.upperCase = upperCase; + lodash.upperFirst = upperFirst; + + // Add aliases. + lodash.each = forEach; + lodash.eachRight = forEachRight; + lodash.first = head; + + mixin(lodash, (function() { + var source = {}; + baseForOwn(lodash, function(func, methodName) { + if (!hasOwnProperty.call(lodash.prototype, methodName)) { + source[methodName] = func; + } + }); + return source; + }()), { 'chain': false }); + + /*------------------------------------------------------------------------*/ + + /** + * The semantic version number. + * + * @static + * @memberOf _ + * @type {string} + */ + lodash.VERSION = VERSION; + + // Assign default placeholders. + arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) { + lodash[methodName].placeholder = lodash; + }); + + // Add `LazyWrapper` methods for `_.drop` and `_.take` variants. + arrayEach(['drop', 'take'], function(methodName, index) { + LazyWrapper.prototype[methodName] = function(n) { + n = n === undefined$1 ? 1 : nativeMax(toInteger(n), 0); + + var result = (this.__filtered__ && !index) + ? new LazyWrapper(this) + : this.clone(); + + if (result.__filtered__) { + result.__takeCount__ = nativeMin(n, result.__takeCount__); + } else { + result.__views__.push({ + 'size': nativeMin(n, MAX_ARRAY_LENGTH), + 'type': methodName + (result.__dir__ < 0 ? 'Right' : '') + }); + } + return result; + }; + + LazyWrapper.prototype[methodName + 'Right'] = function(n) { + return this.reverse()[methodName](n).reverse(); + }; + }); + + // Add `LazyWrapper` methods that accept an `iteratee` value. + arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) { + var type = index + 1, + isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG; + + LazyWrapper.prototype[methodName] = function(iteratee) { + var result = this.clone(); + result.__iteratees__.push({ + 'iteratee': getIteratee(iteratee, 3), + 'type': type + }); + result.__filtered__ = result.__filtered__ || isFilter; + return result; + }; + }); + + // Add `LazyWrapper` methods for `_.head` and `_.last`. + arrayEach(['head', 'last'], function(methodName, index) { + var takeName = 'take' + (index ? 'Right' : ''); + + LazyWrapper.prototype[methodName] = function() { + return this[takeName](1).value()[0]; + }; + }); + + // Add `LazyWrapper` methods for `_.initial` and `_.tail`. + arrayEach(['initial', 'tail'], function(methodName, index) { + var dropName = 'drop' + (index ? '' : 'Right'); + + LazyWrapper.prototype[methodName] = function() { + return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1); + }; + }); + + LazyWrapper.prototype.compact = function() { + return this.filter(identity); + }; + + LazyWrapper.prototype.find = function(predicate) { + return this.filter(predicate).head(); + }; + + LazyWrapper.prototype.findLast = function(predicate) { + return this.reverse().find(predicate); + }; + + LazyWrapper.prototype.invokeMap = baseRest(function(path, args) { + if (typeof path == 'function') { + return new LazyWrapper(this); + } + return this.map(function(value) { + return baseInvoke(value, path, args); + }); + }); + + LazyWrapper.prototype.reject = function(predicate) { + return this.filter(negate(getIteratee(predicate))); + }; + + LazyWrapper.prototype.slice = function(start, end) { + start = toInteger(start); + + var result = this; + if (result.__filtered__ && (start > 0 || end < 0)) { + return new LazyWrapper(result); + } + if (start < 0) { + result = result.takeRight(-start); + } else if (start) { + result = result.drop(start); + } + if (end !== undefined$1) { + end = toInteger(end); + result = end < 0 ? result.dropRight(-end) : result.take(end - start); + } + return result; + }; + + LazyWrapper.prototype.takeRightWhile = function(predicate) { + return this.reverse().takeWhile(predicate).reverse(); + }; + + LazyWrapper.prototype.toArray = function() { + return this.take(MAX_ARRAY_LENGTH); + }; + + // Add `LazyWrapper` methods to `lodash.prototype`. + baseForOwn(LazyWrapper.prototype, function(func, methodName) { + var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName), + isTaker = /^(?:head|last)$/.test(methodName), + lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName], + retUnwrapped = isTaker || /^find/.test(methodName); + + if (!lodashFunc) { + return; + } + lodash.prototype[methodName] = function() { + var value = this.__wrapped__, + args = isTaker ? [1] : arguments, + isLazy = value instanceof LazyWrapper, + iteratee = args[0], + useLazy = isLazy || isArray(value); + + var interceptor = function(value) { + var result = lodashFunc.apply(lodash, arrayPush([value], args)); + return (isTaker && chainAll) ? result[0] : result; + }; + + if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) { + // Avoid lazy use if the iteratee has a "length" value other than `1`. + isLazy = useLazy = false; + } + var chainAll = this.__chain__, + isHybrid = !!this.__actions__.length, + isUnwrapped = retUnwrapped && !chainAll, + onlyLazy = isLazy && !isHybrid; + + if (!retUnwrapped && useLazy) { + value = onlyLazy ? value : new LazyWrapper(this); + var result = func.apply(value, args); + result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined$1 }); + return new LodashWrapper(result, chainAll); + } + if (isUnwrapped && onlyLazy) { + return func.apply(this, args); + } + result = this.thru(interceptor); + return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result; + }; + }); + + // Add `Array` methods to `lodash.prototype`. + arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) { + var func = arrayProto[methodName], + chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru', + retUnwrapped = /^(?:pop|shift)$/.test(methodName); + + lodash.prototype[methodName] = function() { + var args = arguments; + if (retUnwrapped && !this.__chain__) { + var value = this.value(); + return func.apply(isArray(value) ? value : [], args); + } + return this[chainName](function(value) { + return func.apply(isArray(value) ? value : [], args); + }); + }; + }); + + // Map minified method names to their real names. + baseForOwn(LazyWrapper.prototype, function(func, methodName) { + var lodashFunc = lodash[methodName]; + if (lodashFunc) { + var key = lodashFunc.name + ''; + if (!hasOwnProperty.call(realNames, key)) { + realNames[key] = []; + } + realNames[key].push({ 'name': methodName, 'func': lodashFunc }); + } + }); + + realNames[createHybrid(undefined$1, WRAP_BIND_KEY_FLAG).name] = [{ + 'name': 'wrapper', + 'func': undefined$1 + }]; + + // Add methods to `LazyWrapper`. + LazyWrapper.prototype.clone = lazyClone; + LazyWrapper.prototype.reverse = lazyReverse; + LazyWrapper.prototype.value = lazyValue; + + // Add chain sequence methods to the `lodash` wrapper. + lodash.prototype.at = wrapperAt; + lodash.prototype.chain = wrapperChain; + lodash.prototype.commit = wrapperCommit; + lodash.prototype.next = wrapperNext; + lodash.prototype.plant = wrapperPlant; + lodash.prototype.reverse = wrapperReverse; + lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue; + + // Add lazy aliases. + lodash.prototype.first = lodash.prototype.head; + + if (symIterator) { + lodash.prototype[symIterator] = wrapperToIterator; + } + return lodash; + }); + + /*--------------------------------------------------------------------------*/ + + // Export lodash. + var _ = runInContext(); + + // Some AMD build optimizers, like r.js, check for condition patterns like: + if (freeModule) { + // Export for Node.js. + (freeModule.exports = _)._ = _; + // Export for CommonJS support. + freeExports._ = _; + } + else { + // Export to the global object. + root._ = _; + } + }.call(commonjsGlobal)); +} (lodash, lodash.exports)); + +var lodashExports = lodash.exports; + +(function (exports) { + var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Value = exports.Arity = exports.FloatOrMilliseconds = void 0; + const decimal_js_1 = __importDefault(decimalExports); + const lodash_1 = lodashExports; + const datetimeRe = new RegExp('[1-9][0-9]{3}-[01][0-9]-[0-3][0-9][T ][0-2][0-9]:[0-5][0-9]'); + const durationRe = new RegExp('^-?[0-9]+:[0-5][0-9]'); + const FloatOrMilliseconds = (value) => { + const v = value.trim(); + if (v === '') { + return new decimal_js_1.default(0); + } + if (datetimeRe.test(v)) { + return new decimal_js_1.default(new Date(v).valueOf()); + } + if (durationRe.test(v)) { + const neg = v.charAt(0) == '-'; + const w = v.slice(neg ? 1 : 0); + const minutes = parseInt(w.slice(0, -3)) * 60 + parseInt(w.slice(-2)); + return new decimal_js_1.default((neg ? -1 : 1) * minutes * 60000); + } + const decimalValue = new decimal_js_1.default(v); + return decimalValue.isNaN() ? new decimal_js_1.default(0) : decimalValue; + }; + exports.FloatOrMilliseconds = FloatOrMilliseconds; + class Arity { + constructor(rows, columns) { + this.isRow = () => this.rows > 1 && this.cols === 1; + this.isColumn = () => this.rows === 1 && this.cols > 1; + this.isCell = () => this.rows === 1 && this.cols === 1; + this.rows = rows; + this.cols = columns; + } + } + exports.Arity = Arity; + class Value { + constructor(val) { + this.get = (row, column) => this.val[row][column]; + this.getAsNumber = (row, column) => { + const value = this.get(row, column); + return (0, exports.FloatOrMilliseconds)(value); + }; + /** + * getArity returns the dimensions of the contained value, in rows and columns + */ + this.getArity = () => { + const maxCols = this.val.reduce((max, currentRow) => Math.max(max, currentRow.length), 0); + return new Arity(this.val.length, maxCols); + }; + this.toString = () => { + if (this.getArity().isCell()) { + return this.get(0, 0); + } + return `[${(0, lodash_1.flatten)(this.val) + .map((val) => val.trim()) + .filter((val) => val !== '') + .join(', ')}]`; + }; + this.val = val; + } + } + exports.Value = Value; +} (results)); + +var hasRequiredAlgebraic_operation; + +function requireAlgebraic_operation () { + if (hasRequiredAlgebraic_operation) return algebraic_operation; + hasRequiredAlgebraic_operation = 1; + Object.defineProperty(algebraic_operation, "__esModule", { value: true }); + algebraic_operation.AlgebraicOperation = void 0; + const neverthrow_1 = neverthrow; + const ast_utils_1 = ast_utils; + const calc_1 = requireCalc(); + const results_1 = results; + const lodash_1 = lodashExports; + class AlgebraicOperation { + constructor(ast, table) { + this.getValue = (table, cell) => { + switch (this.operator) { + case '+': + return this.add(table, cell); + case '-': + return this.subtract(table, cell); + case '*': + return this.multiply(table, cell); + case '/': + return this.divide(table, cell); + default: + return (0, neverthrow_1.err)(Error('Invalid algbraic operator: ' + this.operator)); + } + }; + /** + * withCellAndRange aids in performing a numeric operation on cells in a + * table where at least one of the two operands is a single cell. Optionally, + * the two sides of the operation can be swapped, so the single cell is + * always on the right. + */ + this.withCellAndRange = (table, cell, name, canHaveRightRange, fn) => { + const leftValue = this.leftSource.getValue(table, cell); + if (leftValue.isErr()) { + return (0, neverthrow_1.err)(leftValue.error); + } + const rightValue = this.rightSource.getValue(table, cell); + if (rightValue.isErr()) { + return (0, neverthrow_1.err)(rightValue.error); + } + const leftArity = leftValue.value.getArity(); + const rightArity = rightValue.value.getArity(); + if (!rightArity.isCell() && !leftArity.isCell()) { + return (0, neverthrow_1.err)(Error(`At least one operand in algebraic "${name}" must be a single cell.`)); + } + if (!rightArity.isCell() && !canHaveRightRange) { + return (0, neverthrow_1.err)(Error(`Right operand in algebraic "${name}" must be a single cell.`)); + } + if (rightArity.isCell()) { + const rightCellValue = rightValue.value.getAsNumber(0, 0); + const result = (0, lodash_1.map)(leftValue.value.val, (currentRow) => (0, lodash_1.map)(currentRow, (currentCell) => { + const leftCellValue = (0, results_1.FloatOrMilliseconds)(currentCell); + return fn(leftCellValue, rightCellValue).toString(); + })); + return (0, neverthrow_1.ok)(new results_1.Value(result)); + } + const leftCellValue = leftValue.value.getAsNumber(0, 0); + const result = (0, lodash_1.map)(rightValue.value.val, (currentRow) => (0, lodash_1.map)(currentRow, (currentCell) => { + const rightCellValue = (0, results_1.FloatOrMilliseconds)(currentCell); + return fn(leftCellValue, rightCellValue).toString(); + })); + return (0, neverthrow_1.ok)(new results_1.Value(result)); + }; + this.add = (table, cell) => this.withCellAndRange(table, cell, 'add', true, (left, right) => left.plus(right)); + this.subtract = (table, cell) => this.withCellAndRange(table, cell, 'subtract', true, (left, right) => left.minus(right)); + this.multiply = (table, cell) => this.withCellAndRange(table, cell, 'multiply', true, (left, right) => left.times(right)); + this.divide = (table, cell) => this.withCellAndRange(table, cell, 'divide', false, (left, right) => left.dividedBy(right)); + const typeErr = (0, ast_utils_1.checkType)(ast, 'algebraic_operation'); + if (typeErr) { + throw typeErr; + } + const lengthError = (0, ast_utils_1.checkChildLength)(ast, 3); + if (lengthError) { + throw lengthError; + } + const childTypeErr = (0, ast_utils_1.checkType)(ast.children[1], 'algebraic_operator'); + if (childTypeErr) { + throw childTypeErr; + } + this.operator = ast.children[1].text; + try { + this.leftSource = new calc_1.Source(ast.children[0], table); + this.rightSource = new calc_1.Source(ast.children[2], table); + } + catch (error) { + // Still in a constructor, so nothing we can do but throw again + throw error; + } + } + } + algebraic_operation.AlgebraicOperation = AlgebraicOperation; + return algebraic_operation; } -exports.Arity = Arity; -class Value { - constructor(val) { - this.get = (row, column) => this.val[row][column]; - this.getAsNumber = (row, column) => { - const value = this.get(row, column); - return exports.FloatOrMilliseconds(value); - }; - /** - * getArity returns the dimensions of the contained value, in rows and columns - */ - this.getArity = () => { - const maxCols = this.val.reduce((max, currentRow) => Math.max(max, currentRow.length), 0); - return new Arity(this.val.length, maxCols); - }; - this.toString = () => { - if (this.getArity().isCell()) { - return this.get(0, 0); - } - return `[${lodash.flatten(this.val) - .map((val) => val.trim()) - .filter((val) => val !== '') - .join(', ')}]`; - }; - this.val = val; - } + +var conditional_function = {}; + +var hasRequiredConditional_function; + +function requireConditional_function () { + if (hasRequiredConditional_function) return conditional_function; + hasRequiredConditional_function = 1; + Object.defineProperty(conditional_function, "__esModule", { value: true }); + conditional_function.ConditionalFunctionCall = void 0; + const neverthrow_1 = neverthrow; + const ast_utils_1 = ast_utils; + const calc_1 = requireCalc(); + class ConditionalFunctionCall { + constructor(ast, table) { + this.getValue = (table, cell) => this.predicate + .eval(table, cell) + .andThen((predicateResult) => predicateResult + ? this.leftSource.getValue(table, cell) + : this.rightSource.getValue(table, cell)); + const typeError = (0, ast_utils_1.checkType)(ast, 'conditional_function_call'); + if (typeError) { + throw typeError; + } + const lengthError = (0, ast_utils_1.checkChildLength)(ast, 3); + if (lengthError) { + throw lengthError; + } + try { + this.predicate = new Predicate(ast.children[0], table); + this.leftSource = new calc_1.Source(ast.children[1], table); + this.rightSource = new calc_1.Source(ast.children[2], table); + } + catch (error) { + // Still in a constructor, so nothing we can do but throw again + throw error; + } + } + } + conditional_function.ConditionalFunctionCall = ConditionalFunctionCall; + class Predicate { + constructor(ast, table) { + this.eval = (table, cell) => { + const leftData = this.leftSource.getValue(table, cell); + if (leftData.isErr()) { + return (0, neverthrow_1.err)(leftData.error); + } + const rightData = this.rightSource.getValue(table, cell); + if (rightData.isErr()) { + return (0, neverthrow_1.err)(rightData.error); + } + const leftArity = leftData.value.getArity(); + const rightArity = rightData.value.getArity(); + if (!leftArity.isCell()) { + return (0, neverthrow_1.err)(Error('Can only use comparison operator on a single cell. Left side is not a cell.')); + } + if (!rightArity.isCell()) { + return (0, neverthrow_1.err)(Error('Can only use comparison operator on a single cell. Right side is not a cell.')); + } + const leftVal = leftData.value.getAsNumber(0, 0); + const rightVal = rightData.value.getAsNumber(0, 0); + switch (this.operator) { + case '>': + return (0, neverthrow_1.ok)(leftVal.greaterThan(rightVal)); + case '>=': + return (0, neverthrow_1.ok)(leftVal.greaterThanOrEqualTo(rightVal)); + case '<': + return (0, neverthrow_1.ok)(leftVal.lessThan(rightVal)); + case '<=': + return (0, neverthrow_1.ok)(leftVal.lessThanOrEqualTo(rightVal)); + case '==': + return (0, neverthrow_1.ok)(leftVal.equals(rightVal)); + case '!=': + return (0, neverthrow_1.ok)(!leftVal.equals(rightVal)); + default: + return (0, neverthrow_1.err)(Error('Invalid conditional operator: ' + this.operator)); + } + }; + const typeError = (0, ast_utils_1.checkType)(ast, 'predicate'); + if (typeError) { + throw typeError; + } + const lengthError = (0, ast_utils_1.checkChildLength)(ast, 3); + if (lengthError) { + throw lengthError; + } + const childTypeError = (0, ast_utils_1.checkType)(ast.children[1], 'conditional_operator'); + if (childTypeError) { + throw childTypeError; + } + this.operator = ast.children[1].text; + try { + this.leftSource = new calc_1.Source(ast.children[0], table); + this.rightSource = new calc_1.Source(ast.children[2], table); + } + catch (error) { + // Still in a constructor, so nothing we can do but throw again + throw error; + } + } + } + return conditional_function; } -exports.Value = Value; -}); - -var algebraic_operation = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AlgebraicOperation = void 0; - - - - - -class AlgebraicOperation { - constructor(ast, table) { - this.getValue = (table, cell) => { - switch (this.operator) { - case '+': - return this.add(table, cell); - case '-': - return this.subtract(table, cell); - case '*': - return this.multiply(table, cell); - case '/': - return this.divide(table, cell); - default: - return neverthrow.err(Error('Invalid algbraic operator: ' + this.operator)); - } - }; - /** - * withCellAndRange aids in performing a numeric operation on cells in a - * table where at least one of the two operands is a single cell. Optionally, - * the two sides of the operation can be swapped, so the single cell is - * always on the right. - */ - this.withCellAndRange = (table, cell, name, canHaveRightRange, fn) => { - const leftValue = this.leftSource.getValue(table, cell); - if (leftValue.isErr()) { - return neverthrow.err(leftValue.error); - } - const rightValue = this.rightSource.getValue(table, cell); - if (rightValue.isErr()) { - return neverthrow.err(rightValue.error); - } - const leftArity = leftValue.value.getArity(); - const rightArity = rightValue.value.getArity(); - if (!rightArity.isCell() && !leftArity.isCell()) { - return neverthrow.err(Error(`At least one operand in algebraic "${name}" must be a single cell.`)); - } - if (!rightArity.isCell() && !canHaveRightRange) { - return neverthrow.err(Error(`Right operand in algebraic "${name}" must be a single cell.`)); - } - if (rightArity.isCell()) { - const rightCellValue = rightValue.value.getAsNumber(0, 0); - const result = lodash.map(leftValue.value.val, (currentRow) => lodash.map(currentRow, (currentCell) => { - const leftCellValue = results.FloatOrMilliseconds(currentCell); - return fn(leftCellValue, rightCellValue).toString(); - })); - return neverthrow.ok(new results.Value(result)); - } - const leftCellValue = leftValue.value.getAsNumber(0, 0); - const result = lodash.map(rightValue.value.val, (currentRow) => lodash.map(currentRow, (currentCell) => { - const rightCellValue = results.FloatOrMilliseconds(currentCell); - return fn(leftCellValue, rightCellValue).toString(); - })); - return neverthrow.ok(new results.Value(result)); - }; - this.add = (table, cell) => this.withCellAndRange(table, cell, 'add', true, (left, right) => left.plus(right)); - this.subtract = (table, cell) => this.withCellAndRange(table, cell, 'subtract', true, (left, right) => left.minus(right)); - this.multiply = (table, cell) => this.withCellAndRange(table, cell, 'multiply', true, (left, right) => left.times(right)); - this.divide = (table, cell) => this.withCellAndRange(table, cell, 'divide', false, (left, right) => left.dividedBy(right)); - const typeErr = ast_utils.checkType(ast, 'algebraic_operation'); - if (typeErr) { - throw typeErr; - } - const lengthError = ast_utils.checkChildLength(ast, 3); - if (lengthError) { - throw lengthError; - } - const childTypeErr = ast_utils.checkType(ast.children[1], 'algebraic_operator'); - if (childTypeErr) { - throw childTypeErr; - } - this.operator = ast.children[1].text; - try { - this.leftSource = new calc.Source(ast.children[0], table); - this.rightSource = new calc.Source(ast.children[2], table); - } - catch (error) { - // Still in a constructor, so nothing we can do but throw again - throw error; - } - } -} -exports.AlgebraicOperation = AlgebraicOperation; -}); - -var conditional_function = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ConditionalFunctionCall = void 0; - - - -class ConditionalFunctionCall { - constructor(ast, table) { - this.getValue = (table, cell) => this.predicate - .eval(table, cell) - .andThen((predicateResult) => predicateResult - ? this.leftSource.getValue(table, cell) - : this.rightSource.getValue(table, cell)); - const typeError = ast_utils.checkType(ast, 'conditional_function_call'); - if (typeError) { - throw typeError; - } - const lengthError = ast_utils.checkChildLength(ast, 3); - if (lengthError) { - throw lengthError; - } - try { - this.predicate = new Predicate(ast.children[0], table); - this.leftSource = new calc.Source(ast.children[1], table); - this.rightSource = new calc.Source(ast.children[2], table); - } - catch (error) { - // Still in a constructor, so nothing we can do but throw again - throw error; - } - } -} -exports.ConditionalFunctionCall = ConditionalFunctionCall; -class Predicate { - constructor(ast, table) { - this.eval = (table, cell) => { - const leftData = this.leftSource.getValue(table, cell); - if (leftData.isErr()) { - return neverthrow.err(leftData.error); - } - const rightData = this.rightSource.getValue(table, cell); - if (rightData.isErr()) { - return neverthrow.err(rightData.error); - } - const leftArity = leftData.value.getArity(); - const rightArity = rightData.value.getArity(); - if (!leftArity.isCell()) { - return neverthrow.err(Error('Can only use comparison operator on a single cell. Left side is not a cell.')); - } - if (!rightArity.isCell()) { - return neverthrow.err(Error('Can only use comparison operator on a single cell. Right side is not a cell.')); - } - const leftVal = leftData.value.getAsNumber(0, 0); - const rightVal = rightData.value.getAsNumber(0, 0); - switch (this.operator) { - case '>': - return neverthrow.ok(leftVal.greaterThan(rightVal)); - case '>=': - return neverthrow.ok(leftVal.greaterThanOrEqualTo(rightVal)); - case '<': - return neverthrow.ok(leftVal.lessThan(rightVal)); - case '<=': - return neverthrow.ok(leftVal.lessThanOrEqualTo(rightVal)); - case '==': - return neverthrow.ok(leftVal.equals(rightVal)); - case '!=': - return neverthrow.ok(!leftVal.equals(rightVal)); - default: - return neverthrow.err(Error('Invalid conditional operator: ' + this.operator)); - } - }; - const typeError = ast_utils.checkType(ast, 'predicate'); - if (typeError) { - throw typeError; - } - const lengthError = ast_utils.checkChildLength(ast, 3); - if (lengthError) { - throw lengthError; - } - const childTypeError = ast_utils.checkType(ast.children[1], 'conditional_operator'); - if (childTypeError) { - throw childTypeError; - } - this.operator = ast.children[1].text; - try { - this.leftSource = new calc.Source(ast.children[0], table); - this.rightSource = new calc.Source(ast.children[2], table); - } - catch (error) { - // Still in a constructor, so nothing we can do but throw again - throw error; - } - } -} -}); - -var constant = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Constant = void 0; - +var constant = {}; +Object.defineProperty(constant, "__esModule", { value: true }); +constant.Constant = void 0; +const neverthrow_1$5 = neverthrow; +const ast_utils_1$6 = ast_utils; +const results_1$4 = results; class Constant { constructor(ast, table) { - const typeErr = ast_utils.checkType(ast, 'real', 'float'); + const typeErr = (0, ast_utils_1$6.checkType)(ast, 'real', 'float'); if (typeErr) { throw typeErr; } @@ -22930,56 +23033,58 @@ class Constant { } } getValue(table, currentCell) { - return neverthrow.ok(new results.Value([[this.value.toString()]])); + return (0, neverthrow_1$5.ok)(new results_1$4.Value([[this.value.toString()]])); } } -exports.Constant = Constant; -}); - -var column = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AbsoluteColumn = exports.Column = exports.newColumn = void 0; +constant.Constant = Constant; +var destination = {}; +var column = {}; +Object.defineProperty(column, "__esModule", { value: true }); +column.AbsoluteColumn = column.Column = column.newColumn = void 0; +const neverthrow_1$4 = neverthrow; +const ast_utils_1$5 = ast_utils; +const results_1$3 = results; const newColumn = (ast, table) => { try { switch (ast.type) { case 'relative_column': - return neverthrow.ok(new RelativeColumn(ast, table)); + return (0, neverthrow_1$4.ok)(new RelativeColumn(ast, table)); case 'absolute_column': - return neverthrow.ok(new AbsoluteColumn(ast, table)); + return (0, neverthrow_1$4.ok)(new AbsoluteColumn(ast, table)); default: - return neverthrow.err(new Error(`Formula element '${ast.text}' is a ${ast.type} but expected an ` + + return (0, neverthrow_1$4.err)(new Error(`Formula element '${ast.text}' is a ${ast.type} but expected an ` + 'relatve_column or absolute_column in this position.')); } } catch (error) { - return neverthrow.err(error); + return (0, neverthrow_1$4.err)(error); } }; -exports.newColumn = newColumn; +column.newColumn = newColumn; class Column { constructor() { this.getValue = (table, currentCell) => { var _a; const val = ((_a = table.getCellAt(currentCell.row, this.getIndex(currentCell))) === null || _a === void 0 ? void 0 : _a.toText()) || ''; - return neverthrow.ok(new results.Value([[val]])); + return (0, neverthrow_1$4.ok)(new results_1$3.Value([[val]])); }; } } -exports.Column = Column; +column.Column = Column; class RelativeColumn extends Column { constructor(ast, table) { super(); this.getIndex = (currentCell) => currentCell.column + this.offset; - this.getAbsoluteIndex = () => neverthrow.err(ast_utils.errRelativeReferenceIndex); - const typeError = ast_utils.checkType(ast, 'relative_column'); + this.getAbsoluteIndex = () => (0, neverthrow_1$4.err)(ast_utils_1$5.errRelativeReferenceIndex); + const typeError = (0, ast_utils_1$5.checkType)(ast, 'relative_column'); if (typeError) { throw typeError; } - const lengthError = ast_utils.checkChildLength(ast, 1); + const lengthError = (0, ast_utils_1$5.checkChildLength)(ast, 1); if (lengthError) { throw lengthError; } @@ -22991,7 +23096,7 @@ class AbsoluteColumn extends Column { constructor(ast, table) { super(); this.getIndex = (currentCell) => this.index; - this.getAbsoluteIndex = () => neverthrow.ok(this.index); + this.getAbsoluteIndex = () => (0, neverthrow_1$4.ok)(this.index); let index = -1; let symbol = ''; switch (ast.children.length) { @@ -22999,9 +23104,9 @@ class AbsoluteColumn extends Column { symbol = ast.text[1]; break; case 1: - const typeError = ast_utils.checkType(ast.children[0], 'int'); + const typeError = (0, ast_utils_1$5.checkType)(ast.children[0], 'int'); if (typeError) { - throw neverthrow.err(typeError); + throw (0, neverthrow_1$4.err)(typeError); } index = parseInt(ast.children[0].text); break; @@ -23022,58 +23127,62 @@ class AbsoluteColumn extends Column { throw new Error(`Invalid column symbol '${symbol}'`); } if (index === 0) { - throw ast_utils.errIndex0; + throw ast_utils_1$5.errIndex0; } this.index = index - 1; // -1 for being zero indexed } } -exports.AbsoluteColumn = AbsoluteColumn; -}); +column.AbsoluteColumn = AbsoluteColumn; -var row = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AbsoluteRow = exports.Row = exports.newRow = void 0; +var range = {}; +var reference = {}; +var row = {}; +Object.defineProperty(row, "__esModule", { value: true }); +row.AbsoluteRow = row.Row = row.newRow = void 0; +const neverthrow_1$3 = neverthrow; +const ast_utils_1$4 = ast_utils; +const results_1$2 = results; const newRow = (ast, table) => { try { switch (ast.type) { case 'relative_row': - return neverthrow.ok(new RelativeRow(ast, table)); + return (0, neverthrow_1$3.ok)(new RelativeRow(ast, table)); case 'absolute_row': - return neverthrow.ok(new AbsoluteRow(ast, table)); + return (0, neverthrow_1$3.ok)(new AbsoluteRow(ast, table)); default: - return neverthrow.err(new Error(`Formula element '${ast.text}' is a ${ast.type} but expected an ` + + return (0, neverthrow_1$3.err)(new Error(`Formula element '${ast.text}' is a ${ast.type} but expected an ` + 'relatve_row or absolute_row in this position.')); } } catch (error) { - return neverthrow.err(error); + return (0, neverthrow_1$3.err)(error); } }; -exports.newRow = newRow; +row.newRow = newRow; class Row { constructor() { this.getValue = (table, currentCell) => { var _a; const val = ((_a = table .getCellAt(this.getIndex(currentCell), currentCell.column)) === null || _a === void 0 ? void 0 : _a.toText()) || ''; - return neverthrow.ok(new results.Value([[val]])); + return (0, neverthrow_1$3.ok)(new results_1$2.Value([[val]])); }; } } -exports.Row = Row; +row.Row = Row; class RelativeRow extends Row { constructor(ast, table) { super(); this.getIndex = (currentCell) => currentCell.row + this.offset; - this.getAbsoluteIndex = () => neverthrow.err(ast_utils.errRelativeReferenceIndex); - const typeError = ast_utils.checkType(ast, 'relative_row'); + this.getAbsoluteIndex = () => (0, neverthrow_1$3.err)(ast_utils_1$4.errRelativeReferenceIndex); + const typeError = (0, ast_utils_1$4.checkType)(ast, 'relative_row'); if (typeError) { throw typeError; } - const lengthError = ast_utils.checkChildLength(ast, 1); + const lengthError = (0, ast_utils_1$4.checkChildLength)(ast, 1); if (lengthError) { throw lengthError; } @@ -23085,7 +23194,7 @@ class AbsoluteRow extends Row { constructor(ast, table) { super(); this.getIndex = (currentCell) => this.index; - this.getAbsoluteIndex = () => neverthrow.ok(this.index); + this.getAbsoluteIndex = () => (0, neverthrow_1$3.ok)(this.index); let index = -1; let symbol = ''; switch (ast.children.length) { @@ -23093,9 +23202,9 @@ class AbsoluteRow extends Row { symbol = ast.text[1]; break; case 1: - const typeError = ast_utils.checkType(ast.children[0], 'int'); + const typeError = (0, ast_utils_1$4.checkType)(ast.children[0], 'int'); if (typeError) { - throw neverthrow.err(typeError); + throw (0, neverthrow_1$3.err)(typeError); } index = parseInt(ast.children[0].text); break; @@ -23119,7 +23228,7 @@ class AbsoluteRow extends Row { throw new Error(`Invalid row symbol '${symbol}'`); } if (index === 0) { - throw ast_utils.errIndex0; + throw ast_utils_1$4.errIndex0; } if (index === 1) { this.index = 0; // account for being zero indexed @@ -23129,17 +23238,15 @@ class AbsoluteRow extends Row { } } } -exports.AbsoluteRow = AbsoluteRow; -}); - -var reference = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Reference = void 0; - - - - +row.AbsoluteRow = AbsoluteRow; +Object.defineProperty(reference, "__esModule", { value: true }); +reference.Reference = void 0; +const neverthrow_1$2 = neverthrow; +const ast_utils_1$3 = ast_utils; +const column_1$1 = column; +const results_1$1 = results; +const row_1$1 = row; class Reference { constructor(ast, table) { this.getValue = (table, currentCell) => { @@ -23151,9 +23258,9 @@ class Reference { : currentCell.column, }; const val = ((_a = table.getCellAt(cell.row, cell.column)) === null || _a === void 0 ? void 0 : _a.toText()) || ''; - return neverthrow.ok(new results.Value([[val]])); + return (0, neverthrow_1$2.ok)(new results_1$1.Value([[val]])); }; - const typeErr = ast_utils.checkType(ast, 'source_reference', 'absolute_reference', 'relative_reference'); + const typeErr = (0, ast_utils_1$3.checkType)(ast, 'source_reference', 'absolute_reference', 'relative_reference'); if (typeErr) { throw typeErr; } @@ -23165,9 +23272,9 @@ class Reference { if (this.row !== undefined) { throw Error('Reference may only have at most 1 row, more than 1 provided'); } - const createdRow = row.newRow(child, table); + const createdRow = (0, row_1$1.newRow)(child, table); if (createdRow.isErr()) { - if (createdRow.error === ast_utils.errIndex0) { + if (createdRow.error === ast_utils_1$3.errIndex0) { // not actually an error, just indicates using current index break; } @@ -23180,9 +23287,9 @@ class Reference { if (this.column !== undefined) { throw Error('Reference may only have at most 1 column, more than 1 provided'); } - const createdCol = column.newColumn(child, table); + const createdCol = (0, column_1$1.newColumn)(child, table); if (createdCol.isErr()) { - if (createdCol.error === ast_utils.errIndex0) { + if (createdCol.error === ast_utils_1$3.errIndex0) { // not actually an error, just indicates using current index break; } @@ -23194,17 +23301,15 @@ class Reference { } } } -exports.Reference = Reference; -}); - -var range$1 = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Range = void 0; - - - - +reference.Reference = Reference; +Object.defineProperty(range, "__esModule", { value: true }); +range.Range = void 0; +const neverthrow_1$1 = neverthrow; +const ast_utils_1$2 = ast_utils; +const reference_1 = reference; +const results_1 = results; +const lodash_1$1 = lodashExports; class Range { constructor(ast, table) { this.getValue = (table, currentCell) => { @@ -23222,14 +23327,14 @@ class Range { const endRow = this.endRow ? this.endRow.getIndex(currentCell) : currentCell.row; - return neverthrow.ok(new results.Value(lodash.map(lodash.range(startRow, endRow + 1), (row) => lodash.map(lodash.range(startColumn, endColumn + 1), (col) => { var _a; return ((_a = table.getCellAt(row, col)) === null || _a === void 0 ? void 0 : _a.toText()) || ''; })))); + return (0, neverthrow_1$1.ok)(new results_1.Value((0, lodash_1$1.map)((0, lodash_1$1.range)(startRow, endRow + 1), (row) => (0, lodash_1$1.map)((0, lodash_1$1.range)(startColumn, endColumn + 1), (col) => { var _a; return ((_a = table.getCellAt(row, col)) === null || _a === void 0 ? void 0 : _a.toText()) || ''; })))); }; // There needs to be a distinction between ranges for source and destination // a destination range does not allow relative references, which would // solve this issue with getting the index. this.asCells = () => { if (!this.startColumn || !this.startRow || !this.endRow) { - return neverthrow.err(new Error('A range used as a desintation must define rows and cells')); + return (0, neverthrow_1$1.err)(new Error('A range used as a desintation must define rows and cells')); } // If the second reference in the range does not include a column, // use the start column. @@ -23245,42 +23350,42 @@ class Range { endRowIndex.isErr() || startColumnIndex.isErr() || endColumnIndex.isErr()) { - return neverthrow.err(new Error('A relative range can not be used in a formula destination')); + return (0, neverthrow_1$1.err)(new Error('A relative range can not be used in a formula destination')); } const minRow = Math.min(startRowIndex.value, endRowIndex.value); const maxRow = Math.max(startRowIndex.value, endRowIndex.value); const minColumn = Math.min(startColumnIndex.value, endColumnIndex.value); const maxColumn = Math.max(startColumnIndex.value, endColumnIndex.value); - return neverthrow.ok(lodash.flatMap(lodash.range(minRow, maxRow + 1), (rowNum) => lodash.range(minColumn, maxColumn + 1).map((colNum) => ({ row: rowNum, column: colNum })))); + return (0, neverthrow_1$1.ok)((0, lodash_1$1.flatMap)((0, lodash_1$1.range)(minRow, maxRow + 1), (rowNum) => (0, lodash_1$1.range)(minColumn, maxColumn + 1).map((colNum) => ({ row: rowNum, column: colNum })))); }; - let typeErr = ast_utils.checkType(ast, 'range'); + let typeErr = (0, ast_utils_1$2.checkType)(ast, 'range'); if (typeErr) { throw typeErr; } - let lengthError = ast_utils.checkChildLength(ast, 2); + let lengthError = (0, ast_utils_1$2.checkChildLength)(ast, 2); if (lengthError) { throw lengthError; } const startChild = ast.children[0]; const endChild = ast.children[1]; - typeErr = ast_utils.checkType(startChild, 'source_reference'); + typeErr = (0, ast_utils_1$2.checkType)(startChild, 'source_reference'); if (typeErr) { throw typeErr; } - typeErr = ast_utils.checkType(endChild, 'source_reference'); + typeErr = (0, ast_utils_1$2.checkType)(endChild, 'source_reference'); if (typeErr) { throw typeErr; } - lengthError = ast_utils.checkChildLength(startChild, 1); + lengthError = (0, ast_utils_1$2.checkChildLength)(startChild, 1); if (lengthError) { throw lengthError; } - lengthError = ast_utils.checkChildLength(endChild, 1); + lengthError = (0, ast_utils_1$2.checkChildLength)(endChild, 1); if (lengthError) { throw lengthError; } - const start = new reference.Reference(startChild.children[0], table); - const end = new reference.Reference(endChild.children[0], table); + const start = new reference_1.Reference(startChild.children[0], table); + const end = new reference_1.Reference(endChild.children[0], table); if ((start.row && !end.row) || (end.row && !start.row)) { throw new Error('Range must use references of the same kind'); } @@ -23307,75 +23412,73 @@ class Range { } } } -exports.Range = Range; -}); - -var destination = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.RangeDestination = exports.CellDestination = exports.ColumnDestination = exports.RowDestination = exports.newDestination = void 0; - - - - - +range.Range = Range; +Object.defineProperty(destination, "__esModule", { value: true }); +destination.RangeDestination = destination.CellDestination = destination.ColumnDestination = destination.RowDestination = destination.newDestination = void 0; +const neverthrow_1 = neverthrow; +const ast_utils_1$1 = ast_utils; +const column_1 = column; +const range_1$1 = range; +const row_1 = row; +const lodash_1 = lodashExports; const newDestination = (ast, table, formatter) => { - const typeErr = ast_utils.checkType(ast, 'destination'); + const typeErr = (0, ast_utils_1$1.checkType)(ast, 'destination'); if (typeErr) { - return neverthrow.err(typeErr); + return (0, neverthrow_1.err)(typeErr); } - const lengthError = ast_utils.checkChildLength(ast, 1); + const lengthError = (0, ast_utils_1$1.checkChildLength)(ast, 1); if (lengthError) { - return neverthrow.err(lengthError); + return (0, neverthrow_1.err)(lengthError); } const child = ast.children[0]; if (child.type === 'range') { - return neverthrow.ok(new RangeDestination(child, table, formatter)); + return (0, neverthrow_1.ok)(new RangeDestination(child, table, formatter)); } // must be either an absolute_reference try { switch (child.children.length) { case 2: - return neverthrow.ok(new CellDestination(child, table, formatter)); + return (0, neverthrow_1.ok)(new CellDestination(child, table, formatter)); case 1: const innerChild = child.children[0]; if (innerChild.type === 'absolute_row') { - return neverthrow.ok(new RowDestination(child, table, formatter)); + return (0, neverthrow_1.ok)(new RowDestination(child, table, formatter)); } else if (innerChild.type === 'absolute_column') { - return neverthrow.ok(new ColumnDestination(child, table, formatter)); + return (0, neverthrow_1.ok)(new ColumnDestination(child, table, formatter)); } default: - return neverthrow.err(new Error('Unexpected destination type ' + child.type)); + return (0, neverthrow_1.err)(new Error('Unexpected destination type ' + child.type)); } } catch (error) { - if (error === ast_utils.errIndex0) { - return neverthrow.err(new Error('Index 0 may not be used in a destination')); + if (error === ast_utils_1$1.errIndex0) { + return (0, neverthrow_1.err)(new Error('Index 0 may not be used in a destination')); } - return neverthrow.err(error); + return (0, neverthrow_1.err)(error); } }; -exports.newDestination = newDestination; +destination.newDestination = newDestination; class RowDestination { constructor(ast, table, formatter) { this.merge = (source, table) => { // for cell in row... - const cells = lodash.range(0, table.getWidth()).map((columnNum) => ({ row: this.row.index, column: columnNum })); + const cells = (0, lodash_1.range)(0, table.getWidth()).map((columnNum) => ({ row: this.row.index, column: columnNum })); return mergeForCells(source, table, cells, this.formatter); }; this.formatter = formatter; - const typeErr = ast_utils.checkType(ast, 'absolute_reference'); + const typeErr = (0, ast_utils_1$1.checkType)(ast, 'absolute_reference'); if (typeErr) { throw typeErr; } - const lengthError = ast_utils.checkChildLength(ast, 1); + const lengthError = (0, ast_utils_1$1.checkChildLength)(ast, 1); if (lengthError) { throw lengthError; } const child = ast.children[0]; try { - this.row = new row.AbsoluteRow(child, table); + this.row = new row_1.AbsoluteRow(child, table); } catch (error) { // In a constructor, so we must throw @@ -23383,26 +23486,26 @@ class RowDestination { } } } -exports.RowDestination = RowDestination; +destination.RowDestination = RowDestination; class ColumnDestination { constructor(ast, table, formatter) { this.merge = (source, table) => { // for cell in column (excluding header)... - const cells = lodash.range(2, table.getHeight()).map((rowNum) => ({ row: rowNum, column: this.column.index })); + const cells = (0, lodash_1.range)(2, table.getHeight()).map((rowNum) => ({ row: rowNum, column: this.column.index })); return mergeForCells(source, table, cells, this.formatter); }; this.formatter = formatter; - const typeErr = ast_utils.checkType(ast, 'absolute_reference'); + const typeErr = (0, ast_utils_1$1.checkType)(ast, 'absolute_reference'); if (typeErr) { throw typeErr; } - const lengthError = ast_utils.checkChildLength(ast, 1); + const lengthError = (0, ast_utils_1$1.checkChildLength)(ast, 1); if (lengthError) { throw lengthError; } const child = ast.children[0]; try { - this.column = new column.AbsoluteColumn(child, table); + this.column = new column_1.AbsoluteColumn(child, table); } catch (error) { // In a constructor, so we must throw @@ -23410,7 +23513,7 @@ class ColumnDestination { } } } -exports.ColumnDestination = ColumnDestination; +destination.ColumnDestination = ColumnDestination; class CellDestination { constructor(ast, table, formatter) { this.merge = (source, table) => { @@ -23418,20 +23521,20 @@ class CellDestination { return mergeForCells(source, table, [cell], this.formatter); }; this.formatter = formatter; - const typeErr = ast_utils.checkType(ast, 'absolute_reference'); + const typeErr = (0, ast_utils_1$1.checkType)(ast, 'absolute_reference'); if (typeErr) { throw typeErr; } // A cell needs to have two children, a row and a column - const lengthError = ast_utils.checkChildLength(ast, 2); + const lengthError = (0, ast_utils_1$1.checkChildLength)(ast, 2); if (lengthError) { throw lengthError; } const rowChild = ast.children[0]; const colChild = ast.children[1]; try { - this.row = new row.AbsoluteRow(rowChild, table); - this.column = new column.AbsoluteColumn(colChild, table); + this.row = new row_1.AbsoluteRow(rowChild, table); + this.column = new column_1.AbsoluteColumn(colChild, table); } catch (error) { // In a constructor, so we must throw @@ -23439,50 +23542,50 @@ class CellDestination { } } } -exports.CellDestination = CellDestination; +destination.CellDestination = CellDestination; class RangeDestination { constructor(ast, table, formatter) { this.merge = (source, table) => this.range .asCells() .andThen((cells) => mergeForCells(source, table, cells, this.formatter)); this.formatter = formatter; - const typeErr = ast_utils.checkType(ast, 'range'); + const typeErr = (0, ast_utils_1$1.checkType)(ast, 'range'); if (typeErr) { throw typeErr; } - const lengthError = ast_utils.checkChildLength(ast, 2); + const lengthError = (0, ast_utils_1$1.checkChildLength)(ast, 2); if (lengthError) { throw lengthError; } ast.children.forEach((child) => { - let childTypeErr = ast_utils.checkType(child, 'source_reference'); + let childTypeErr = (0, ast_utils_1$1.checkType)(child, 'source_reference'); if (childTypeErr) { throw childTypeErr; } - const childLengthError = ast_utils.checkChildLength(child, 1); + const childLengthError = (0, ast_utils_1$1.checkChildLength)(child, 1); if (childLengthError) { throw childLengthError; } - childTypeErr = ast_utils.checkType(child.children[0], 'absolute_reference'); + childTypeErr = (0, ast_utils_1$1.checkType)(child.children[0], 'absolute_reference'); if (childTypeErr) { throw childTypeErr; } }); - this.range = new range$1.Range(ast, table); + this.range = new range_1$1.Range(ast, table); } } -exports.RangeDestination = RangeDestination; +destination.RangeDestination = RangeDestination; const mergeForCells = (source, table, cells, formatter) => cells.reduce((currentTable, currentCell) => currentTable.andThen((t) => source .getValue(t, currentCell) - .andThen((val) => neverthrow.ok(val.toString())) - .andThen((val) => neverthrow.ok(val.trim() === '' ? '0' : val)) - .andThen((val) => neverthrow.ok(t.setCellAt(currentCell.row, currentCell.column, formatter.format(val))))), neverthrow.ok(table)); -}); + .andThen((val) => (0, neverthrow_1.ok)(val.toString())) + .andThen((val) => (0, neverthrow_1.ok)(val.trim() === '' ? '0' : val)) + .andThen((val) => (0, neverthrow_1.ok)(t.setCellAt(currentCell.row, currentCell.column, formatter.format(val))))), (0, neverthrow_1.ok)(table)); -var display_directive = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.DisplayDirective = exports.DefaultFormatter = void 0; +var display_directive = {}; +Object.defineProperty(display_directive, "__esModule", { value: true }); +display_directive.DisplayDirective = display_directive.DefaultFormatter = void 0; +const ast_utils_1 = ast_utils; class DefaultFormatter { constructor() { this.format = (num) => { @@ -23493,7 +23596,7 @@ class DefaultFormatter { }; } } -exports.DefaultFormatter = DefaultFormatter; +display_directive.DefaultFormatter = DefaultFormatter; class DisplayDirective { constructor(ast) { this.format = (num) => { @@ -23509,1628 +23612,1714 @@ class DisplayDirective { const min = pad(date.getMinutes()); return `${y}-${mo}-${d} ${h}:${min}`; } + if (this.displayAsHourMinute) { + let sign = parsed < 0 ? '-' : ''; + const minutes = Math.floor(Math.abs(parsed) / 60000); + const pad = (v) => `0${v}`.slice(-2); + const h = pad(Math.floor(minutes / 60)); + const m = pad(minutes % 60); + return `${sign}${h}:${m}`; + } return parsed.toFixed(this.decimalLength); }; - let typeError = ast_utils.checkType(ast, 'display_directive'); + let typeError = (0, ast_utils_1.checkType)(ast, 'display_directive'); if (typeError) { throw typeError; } - let lengthError = ast_utils.checkChildLength(ast, 1); + let lengthError = (0, ast_utils_1.checkChildLength)(ast, 1); if (lengthError) { throw lengthError; } const displayDirectiveOption = ast.children[0]; - typeError = ast_utils.checkType(displayDirectiveOption, 'display_directive_option'); + typeError = (0, ast_utils_1.checkType)(displayDirectiveOption, 'display_directive_option'); if (typeError) { throw typeError; } - lengthError = ast_utils.checkChildLength(displayDirectiveOption, 1); + lengthError = (0, ast_utils_1.checkChildLength)(displayDirectiveOption, 1); if (lengthError) { throw lengthError; } const formattingDirective = displayDirectiveOption.children[0]; - typeError = ast_utils.checkType(formattingDirective, 'formatting_directive', 'datetime_directive'); + typeError = (0, ast_utils_1.checkType)(formattingDirective, 'formatting_directive', 'datetime_directive', 'hourminute_directive'); if (typeError) { throw typeError; } this.displayAsDatetime = formattingDirective.type === 'datetime_directive'; - if (this.displayAsDatetime) { + this.displayAsHourMinute = + formattingDirective.type === 'hourminute_directive'; + if (this.displayAsDatetime || this.displayAsHourMinute) { this.decimalLength = -1; return; } - lengthError = ast_utils.checkChildLength(formattingDirective, 1); + lengthError = (0, ast_utils_1.checkChildLength)(formattingDirective, 1); if (lengthError) { throw lengthError; } const formattingDirectiveLength = formattingDirective.children[0]; - typeError = ast_utils.checkType(formattingDirectiveLength, 'int'); + typeError = (0, ast_utils_1.checkType)(formattingDirectiveLength, 'int'); if (typeError) { throw typeError; } this.decimalLength = parseInt(formattingDirectiveLength.text); } } -exports.DisplayDirective = DisplayDirective; -}); +display_directive.DisplayDirective = DisplayDirective; -var single_param_function = createCommonjsModule(function (module, exports) { -var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.SingleParamFunctionCall = void 0; +var single_param_function = {}; +var hasRequiredSingle_param_function; - - -const decimal_js_1 = __importDefault(decimal); -class SingleParamFunctionCall { - constructor(ast, table) { - this.getValue = (table, cell) => this.param.getValue(table, cell).andThen((sourceData) => - // The operation functions do not throw errors because data arity has - // already been validated. - neverthrow.ok(this.op(sourceData))); - const typeError = ast_utils.checkType(ast, 'single_param_function_call'); - if (typeError) { - throw typeError; - } - const lengthError = ast_utils.checkChildLength(ast, 2); - if (lengthError) { - throw lengthError; - } - const childTypeError = ast_utils.checkType(ast.children[0], 'single_param_function'); - if (childTypeError) { - throw childTypeError; - } - const functionName = ast.children[0].text; - switch (functionName) { - case 'sum': - this.op = sum; - break; - case 'mean': - this.op = mean; - break; - default: - throw Error('Unknown single param function call: ' + functionName); - } - this.param = new calc.Source(ast.children[1], table); - } +function requireSingle_param_function () { + if (hasRequiredSingle_param_function) return single_param_function; + hasRequiredSingle_param_function = 1; + var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; + }; + Object.defineProperty(single_param_function, "__esModule", { value: true }); + single_param_function.SingleParamFunctionCall = void 0; + const neverthrow_1 = neverthrow; + const ast_utils_1 = ast_utils; + const calc_1 = requireCalc(); + const results_1 = results; + const decimal_js_1 = __importDefault(decimalExports); + class SingleParamFunctionCall { + constructor(ast, table) { + this.getValue = (table, cell) => this.param.getValue(table, cell).andThen((sourceData) => + // The operation functions do not throw errors because data arity has + // already been validated. + (0, neverthrow_1.ok)(this.op(sourceData))); + const typeError = (0, ast_utils_1.checkType)(ast, 'single_param_function_call'); + if (typeError) { + throw typeError; + } + const lengthError = (0, ast_utils_1.checkChildLength)(ast, 2); + if (lengthError) { + throw lengthError; + } + const childTypeError = (0, ast_utils_1.checkType)(ast.children[0], 'single_param_function'); + if (childTypeError) { + throw childTypeError; + } + const functionName = ast.children[0].text; + switch (functionName) { + case 'sum': + this.op = sum; + break; + case 'mean': + this.op = mean; + break; + default: + throw Error('Unknown single param function call: ' + functionName); + } + this.param = new calc_1.Source(ast.children[1], table); + } + } + single_param_function.SingleParamFunctionCall = SingleParamFunctionCall; + /** + * Sum all the cells in the input value, producing a single cell output. + */ + const sum = (value) => { + const total = value.val.reduce((runningTotal, currentRow) => currentRow.reduce((rowTotal, currentCell) => { + const currentCellValue = (0, results_1.FloatOrMilliseconds)(currentCell); + return currentCellValue.add(rowTotal); + }, runningTotal), new decimal_js_1.default(0)); + return new results_1.Value([[total.toString()]]); + }; + /** + * Mean of all the cells in the input value, producing a single cell output. + */ + const mean = (value) => { + const { total, count } = value.val.reduce(({ total: runningTotal1, count: currentCount1 }, currentRow) => currentRow.reduce(({ total: runningTotal2, count: currentCount2 }, currentCell) => ({ + total: runningTotal2 + +currentCell, + count: currentCount2 + 1, + }), { total: runningTotal1, count: currentCount1 }), { total: 0, count: 0 }); + return new results_1.Value([[(total / count).toString()]]); + }; + return single_param_function; } -exports.SingleParamFunctionCall = SingleParamFunctionCall; -/** - * Sum all the cells in the input value, producing a single cell output. - */ -const sum = (value) => { - const total = value.val.reduce((runningTotal, currentRow) => currentRow.reduce((rowTotal, currentCell) => { - const currentCellValue = results.FloatOrMilliseconds(currentCell); - return currentCellValue.add(rowTotal); - }, runningTotal), new decimal_js_1.default(0)); - return new results.Value([[total.toString()]]); -}; -/** - * Mean of all the cells in the input value, producing a single cell output. - */ -const mean = (value) => { - const { total, count } = value.val.reduce(({ total: runningTotal1, count: currentCount1 }, currentRow) => currentRow.reduce(({ total: runningTotal2, count: currentCount2 }, currentCell) => ({ - total: runningTotal2 + +currentCell, - count: currentCount2 + 1, - }), { total: runningTotal1, count: currentCount1 }), { total: 0, count: 0 }); - return new results.Value([[(total / count).toString()]]); -}; -}); -var TokenError_1 = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.TokenError = void 0; -class TokenError extends Error { - constructor(message, token) { - super(message); - this.message = message; - this.token = token; - if (token && token.errors) - token.errors.push(this); - else - throw this; - } - inspect() { - return 'SyntaxError: ' + this.message; - } +var dist = {}; + +var Parser = {}; + +var TokenError = {}; + +var hasRequiredTokenError; + +function requireTokenError () { + if (hasRequiredTokenError) return TokenError; + hasRequiredTokenError = 1; + Object.defineProperty(TokenError, "__esModule", { value: true }); + TokenError.TokenError = void 0; + let TokenError$1 = class TokenError extends Error { + constructor(message, token) { + super(message); + this.message = message; + this.token = token; + if (token && token.errors) + token.errors.push(this); + else + throw this; + } + inspect() { + return 'SyntaxError: ' + this.message; + } + }; + TokenError.TokenError = TokenError$1; + + return TokenError; } -exports.TokenError = TokenError; -}); +var hasRequiredParser; -var Parser_1 = createCommonjsModule(function (module, exports) { -// https://www.ics.uci.edu/~pattis/ICS-33/lectures/ebnf.pdf -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Parser = exports.findRuleByName = exports.parseRuleName = exports.escapeRegExp = exports.readToken = void 0; -const UPPER_SNAKE_RE = /^[A-Z0-9_]+$/; -const decorationRE = /(\?|\+|\*)$/; -const preDecorationRE = /^(@|&|!)/; -const WS_RULE = 'WS'; - -function readToken(txt, expr) { - let result = expr.exec(txt); - if (result && result.index == 0) { - if (result[0].length == 0 && expr.source.length > 0) - return null; - return { - type: null, - text: result[0], - rest: txt.substr(result[0].length), - start: 0, - end: result[0].length - 1, - fullText: result[0], - errors: [], - children: [], - parent: null - }; - } - return null; +function requireParser () { + if (hasRequiredParser) return Parser; + hasRequiredParser = 1; + // https://www.ics.uci.edu/~pattis/ICS-33/lectures/ebnf.pdf + Object.defineProperty(Parser, "__esModule", { value: true }); + Parser.Parser = Parser.findRuleByName = Parser.parseRuleName = Parser.escapeRegExp = Parser.readToken = void 0; + const UPPER_SNAKE_RE = /^[A-Z0-9_]+$/; + const decorationRE = /(\?|\+|\*)$/; + const preDecorationRE = /^(@|&|!)/; + const WS_RULE = 'WS'; + const TokenError_1 = requireTokenError(); + function readToken(txt, expr) { + let result = expr.exec(txt); + if (result && result.index == 0) { + if (result[0].length == 0 && expr.source.length > 0) + return null; + return { + type: null, + text: result[0], + rest: txt.substr(result[0].length), + start: 0, + end: result[0].length - 1, + fullText: result[0], + errors: [], + children: [], + parent: null + }; + } + return null; + } + Parser.readToken = readToken; + function escapeRegExp(str) { + return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&'); + } + Parser.escapeRegExp = escapeRegExp; + function fixRest(token) { + token.rest = ''; + token.children && token.children.forEach(c => fixRest(c)); + } + function fixPositions(token, start) { + token.start += start; + token.end += start; + token.children && token.children.forEach(c => fixPositions(c, token.start)); + } + function agregateErrors(errors, token) { + if (token.errors && token.errors.length) + token.errors.forEach(err => errors.push(err)); + token.children && token.children.forEach(tok => agregateErrors(errors, tok)); + } + function parseRuleName(name) { + let postDecoration = decorationRE.exec(name); + let preDecoration = preDecorationRE.exec(name); + let postDecorationText = (postDecoration && postDecoration[0]) || ''; + let preDecorationText = (preDecoration && preDecoration[0]) || ''; + let out = { + raw: name, + name: name.replace(decorationRE, '').replace(preDecorationRE, ''), + isOptional: postDecorationText == '?' || postDecorationText == '*', + allowRepetition: postDecorationText == '+' || postDecorationText == '*', + atLeastOne: postDecorationText == '+', + lookupPositive: preDecorationText == '&', + lookupNegative: preDecorationText == '!', + pinned: preDecorationText == '@', + lookup: false, + isLiteral: false + }; + out.isLiteral = out.name[0] == "'" || out.name[0] == '"'; + out.lookup = out.lookupNegative || out.lookupPositive; + return out; + } + Parser.parseRuleName = parseRuleName; + function findRuleByName(name, parser) { + let parsed = parseRuleName(name); + return parser.cachedRules[parsed.name] || null; + } + Parser.findRuleByName = findRuleByName; + /// Removes all the nodes starting with 'RULE_' + function stripRules(token, re) { + if (token.children) { + let localRules = token.children.filter(x => x.type && re.test(x.type)); + for (let i = 0; i < localRules.length; i++) { + let indexOnChildren = token.children.indexOf(localRules[i]); + if (indexOnChildren != -1) { + token.children.splice(indexOnChildren, 1); + } + } + token.children.forEach(c => stripRules(c, re)); + } + } + const ignoreMissingRules = ['EOF']; + let Parser$1 = class Parser { + constructor(grammarRules, options) { + this.grammarRules = grammarRules; + this.options = options; + this.cachedRules = {}; + this.debug = options ? options.debug === true : false; + let errors = []; + let neededRules = []; + grammarRules.forEach(rule => { + let parsedName = parseRuleName(rule.name); + if (parsedName.name in this.cachedRules) { + errors.push('Duplicated rule ' + parsedName.name); + return; + } + else { + this.cachedRules[parsedName.name] = rule; + } + if (!rule.bnf || !rule.bnf.length) { + let error = 'Missing rule content, rule: ' + rule.name; + if (errors.indexOf(error) == -1) + errors.push(error); + } + else { + rule.bnf.forEach(options => { + if (typeof options[0] === 'string') { + let parsed = parseRuleName(options[0]); + if (parsed.name == rule.name) { + let error = 'Left recursion is not allowed, rule: ' + rule.name; + if (errors.indexOf(error) == -1) + errors.push(error); + } + } + options.forEach(option => { + if (typeof option == 'string') { + let name = parseRuleName(option); + if (!name.isLiteral && + neededRules.indexOf(name.name) == -1 && + ignoreMissingRules.indexOf(name.name) == -1) + neededRules.push(name.name); + } + }); + }); + } + if (WS_RULE == rule.name) + rule.implicitWs = false; + if (rule.implicitWs) { + if (neededRules.indexOf(WS_RULE) == -1) + neededRules.push(WS_RULE); + } + if (rule.recover) { + if (neededRules.indexOf(rule.recover) == -1) + neededRules.push(rule.recover); + } + }); + neededRules.forEach(ruleName => { + if (!(ruleName in this.cachedRules)) { + errors.push('Missing rule ' + ruleName); + } + }); + if (errors.length) + throw new Error(errors.join('\n')); + } + getAST(txt, target) { + if (!target) { + target = this.grammarRules.filter(x => !x.fragment && x.name.indexOf('%') != 0)[0].name; + } + let result = this.parse(txt, target); + if (result) { + agregateErrors(result.errors, result); + fixPositions(result, 0); + // REMOVE ALL THE TAGS MATCHING /^%/ + stripRules(result, /^%/); + if (!this.options || !this.options.keepUpperRules) + stripRules(result, UPPER_SNAKE_RE); + let rest = result.rest; + if (rest) { + new TokenError_1.TokenError('Unexpected end of input: \n' + rest, result); + } + fixRest(result); + result.rest = rest; + } + return result; + } + emitSource() { + return 'CANNOT EMIT SOURCE FROM BASE Parser'; + } + parse(txt, target, recursion = 0) { + let out = null; + let type = parseRuleName(target); + let expr; + let printable = this.debug && /*!isLiteral &*/ !UPPER_SNAKE_RE.test(type.name); + printable && + console.log(new Array(recursion).join('│ ') + 'Trying to get ' + target + ' from ' + JSON.stringify(txt.split('\n')[0])); + let realType = type.name; + let targetLex = findRuleByName(type.name, this); + if (type.name == 'EOF') { + if (txt.length) { + return null; + } + else if (txt.length == 0) { + return { + type: 'EOF', + text: '', + rest: '', + start: 0, + end: 0, + fullText: '', + errors: [], + children: [], + parent: null + }; + } + } + try { + if (!targetLex && type.isLiteral) { + let src = type.name.trim(); + if (src.startsWith('"')) { + src = JSON.parse(src); + } + else if (src.startsWith("'")) { + src = src.replace(/^'(.+)'$/, '$1').replace(/\\'/g, "'"); + } + if (src === '') { + return { + type: '%%EMPTY%%', + text: '', + rest: txt, + start: 0, + end: 0, + fullText: '', + errors: [], + children: [], + parent: null + }; + } + expr = new RegExp(escapeRegExp(src)); + realType = null; + } + } + catch (e) { + if (e instanceof ReferenceError) { + console.error(e); + } + return null; + } + if (expr) { + let result = readToken(txt, expr); + if (result) { + result.type = realType; + return result; + } + } + else { + let options = targetLex.bnf; + if (options instanceof Array) { + options.forEach(phases => { + if (out) + return; + let pinned = null; + let tmp = { + type: type.name, + text: '', + children: [], + end: 0, + errors: [], + fullText: '', + parent: null, + start: 0, + rest: txt + }; + if (targetLex.fragment) + tmp.fragment = true; + let tmpTxt = txt; + let position = 0; + let allOptional = phases.length > 0; + let foundSomething = false; + for (let i = 0; i < phases.length; i++) { + if (typeof phases[i] == 'string') { + let localTarget = parseRuleName(phases[i]); + allOptional = allOptional && localTarget.isOptional; + let got; + let foundAtLeastOne = false; + do { + got = null; + if (targetLex.implicitWs) { + got = this.parse(tmpTxt, localTarget.name, recursion + 1); + if (!got) { + let WS; + do { + WS = this.parse(tmpTxt, WS_RULE, recursion + 1); + if (WS) { + tmp.text = tmp.text + WS.text; + tmp.end = tmp.text.length; + WS.parent = tmp; + tmp.children.push(WS); + tmpTxt = tmpTxt.substr(WS.text.length); + position += WS.text.length; + } + else { + break; + } + } while (WS && WS.text.length); + } + } + got = got || this.parse(tmpTxt, localTarget.name, recursion + 1); + // rule ::= "true" ![a-zA-Z] + // negative lookup, if it does not match, we should continue + if (localTarget.lookupNegative) { + if (got) + return /* cancel this path */; + break; + } + if (localTarget.lookupPositive) { + if (!got) + return; + } + if (!got) { + if (localTarget.isOptional) + break; + if (localTarget.atLeastOne && foundAtLeastOne) + break; + } + if (got && targetLex.pinned == i + 1) { + pinned = got; + printable && console.log(new Array(recursion + 1).join('│ ') + '└─ ' + got.type + ' PINNED'); + } + if (!got) + got = this.parseRecovery(targetLex, tmpTxt, recursion + 1); + if (!got) { + if (pinned) { + out = tmp; + got = { + type: 'SyntaxError', + text: tmpTxt, + children: [], + end: tmpTxt.length, + errors: [], + fullText: '', + parent: null, + start: 0, + rest: '' + }; + if (tmpTxt.length) { + new TokenError_1.TokenError(`Unexpected end of input. Expecting ${localTarget.name} Got: ${tmpTxt}`, got); + } + else { + new TokenError_1.TokenError(`Unexpected end of input. Missing ${localTarget.name}`, got); + } + printable && + console.log(new Array(recursion + 1).join('│ ') + '└─ ' + got.type + ' ' + JSON.stringify(got.text)); + } + else { + return; + } + } + foundAtLeastOne = true; + foundSomething = true; + if (got.type == '%%EMPTY%%') { + break; + } + got.start += position; + got.end += position; + if (!localTarget.lookupPositive && got.type) { + if (got.fragment) { + got.children && + got.children.forEach(x => { + x.start += position; + x.end += position; + x.parent = tmp; + tmp.children.push(x); + }); + } + else { + got.parent = tmp; + tmp.children.push(got); + } + } + if (localTarget.lookup) + got.lookup = true; + printable && + console.log(new Array(recursion + 1).join('│ ') + '└─ ' + got.type + ' ' + JSON.stringify(got.text)); + // Eat it from the input stream, only if it is not a lookup + if (!localTarget.lookup && !got.lookup) { + tmp.text = tmp.text + got.text; + tmp.end = tmp.text.length; + tmpTxt = tmpTxt.substr(got.text.length); + position += got.text.length; + } + tmp.rest = tmpTxt; + } while (got && localTarget.allowRepetition && tmpTxt.length && !got.lookup); + } /* IS A REGEXP */ + else { + let got = readToken(tmpTxt, phases[i]); + if (!got) { + return; + } + printable && + console.log(new Array(recursion + 1).join('│ ') + '└> ' + JSON.stringify(got.text) + phases[i].source); + foundSomething = true; + got.start += position; + got.end += position; + tmp.text = tmp.text + got.text; + tmp.end = tmp.text.length; + tmpTxt = tmpTxt.substr(got.text.length); + position += got.text.length; + tmp.rest = tmpTxt; + } + } + if (foundSomething) { + out = tmp; + printable && + console.log(new Array(recursion).join('│ ') + '├<─┴< PUSHING ' + out.type + ' ' + JSON.stringify(out.text)); + } + }); + } + if (out && targetLex.simplifyWhenOneChildren && out.children.length == 1) { + out = out.children[0]; + } + } + if (!out) { + printable && console.log(target + ' NOT RESOLVED FROM ' + txt); + } + return out; + } + parseRecovery(recoverableToken, tmpTxt, recursion) { + if (recoverableToken.recover && tmpTxt.length) { + let printable = this.debug; + printable && + console.log(new Array(recursion + 1).join('│ ') + + 'Trying to recover until token ' + + recoverableToken.recover + + ' from ' + + JSON.stringify(tmpTxt.split('\n')[0] + tmpTxt.split('\n')[1])); + let tmp = { + type: 'SyntaxError', + text: '', + children: [], + end: 0, + errors: [], + fullText: '', + parent: null, + start: 0, + rest: '' + }; + let got; + do { + got = this.parse(tmpTxt, recoverableToken.recover, recursion + 1); + if (got) { + new TokenError_1.TokenError('Unexpected input: "' + tmp.text + `" Expecting: ${recoverableToken.name}`, tmp); + break; + } + else { + tmp.text = tmp.text + tmpTxt[0]; + tmp.end = tmp.text.length; + tmpTxt = tmpTxt.substr(1); + } + } while (!got && tmpTxt.length > 0); + if (tmp.text.length > 0 && got) { + printable && console.log(new Array(recursion + 1).join('│ ') + 'Recovered text: ' + JSON.stringify(tmp.text)); + return tmp; + } + } + return null; + } + }; + Parser.Parser = Parser$1; + Parser.default = Parser$1; + + return Parser; } -exports.readToken = readToken; -function escapeRegExp(str) { - return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&'); + +var Grammars = {}; + +var BNF = {}; + +var SemanticHelpers = {}; + +var hasRequiredSemanticHelpers; + +function requireSemanticHelpers () { + if (hasRequiredSemanticHelpers) return SemanticHelpers; + hasRequiredSemanticHelpers = 1; + Object.defineProperty(SemanticHelpers, "__esModule", { value: true }); + SemanticHelpers.findChildrenByType = void 0; + /** + * Finds all the direct childs of a specifyed type + */ + function findChildrenByType(token, type) { + return token.children ? token.children.filter(x => x.type == type) : []; + } + SemanticHelpers.findChildrenByType = findChildrenByType; + + return SemanticHelpers; } -exports.escapeRegExp = escapeRegExp; -function fixRest(token) { - token.rest = ''; - token.children && token.children.forEach(c => fixRest(c)); + +var hasRequiredBNF; + +function requireBNF () { + if (hasRequiredBNF) return BNF; + hasRequiredBNF = 1; + // https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form + Object.defineProperty(BNF, "__esModule", { value: true }); + /* + syntax ::= RULE_EOL* rule+ + rule ::= " "* "<" rule-name ">" " "* "::=" firstExpression otherExpression* " "* RULE_EOL+ " "* + firstExpression ::= " "* list + otherExpression ::= " "* "|" " "* list + RULE_EOL ::= "\r" | "\n" + list ::= term " "* list | term + term ::= literal | "<" rule-name ">" + literal ::= '"' RULE_CHARACTER1* '"' | "'" RULE_CHARACTER2* "'" + RULE_CHARACTER ::= " " | RULE_LETTER | RULE_DIGIT | RULE_SYMBOL + RULE_LETTER ::= "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" | "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z" + RULE_DIGIT ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" + RULE_SYMBOL ::= "-" | "_" | "!" | "#" | "$" | "%" | "&" | "(" | ")" | "*" | "+" | "," | "-" | "." | "/" | ":" | ";" | "<" | "=" | ">" | "?" | "@" | "[" | "\" | "]" | "^" | "_" | "`" | "{" | "|" | "}" | "~" + RULE_CHARACTER1 ::= RULE_CHARACTER | "'" + RULE_CHARACTER2 ::= RULE_CHARACTER | '"' + rule-name ::= RULE_LETTER RULE_CHAR* + RULE_CHAR ::= RULE_LETTER | RULE_DIGIT | "_" | "-" + */ + const SemanticHelpers_1 = requireSemanticHelpers(); + const Parser_1 = requireParser(); + var BNF$1; + (function (BNF) { + BNF.RULES = [ + { + name: 'syntax', + bnf: [['RULE_EOL*', 'rule+']] + }, + { + name: 'rule', + bnf: [ + [ + '" "*', + '"<"', + 'rule-name', + '">"', + '" "*', + '"::="', + 'firstExpression', + 'otherExpression*', + '" "*', + 'RULE_EOL+', + '" "*' + ] + ] + }, + { + name: 'firstExpression', + bnf: [['" "*', 'list']] + }, + { + name: 'otherExpression', + bnf: [['" "*', '"|"', '" "*', 'list']] + }, + { + name: 'RULE_EOL', + bnf: [['"\\r"'], ['"\\n"']] + }, + { + name: 'list', + bnf: [['term', '" "*', 'list'], ['term']] + }, + { + name: 'term', + bnf: [['literal'], ['"<"', 'rule-name', '">"']] + }, + { + name: 'literal', + bnf: [[`'"'`, 'RULE_CHARACTER1*', `'"'`], [`"'"`, 'RULE_CHARACTER2*', `"'"`]] + }, + { + name: 'RULE_CHARACTER', + bnf: [['" "'], ['RULE_LETTER'], ['RULE_DIGIT'], ['RULE_SYMBOL']] + }, + { + name: 'RULE_LETTER', + bnf: [ + ['"A"'], + ['"B"'], + ['"C"'], + ['"D"'], + ['"E"'], + ['"F"'], + ['"G"'], + ['"H"'], + ['"I"'], + ['"J"'], + ['"K"'], + ['"L"'], + ['"M"'], + ['"N"'], + ['"O"'], + ['"P"'], + ['"Q"'], + ['"R"'], + ['"S"'], + ['"T"'], + ['"U"'], + ['"V"'], + ['"W"'], + ['"X"'], + ['"Y"'], + ['"Z"'], + ['"a"'], + ['"b"'], + ['"c"'], + ['"d"'], + ['"e"'], + ['"f"'], + ['"g"'], + ['"h"'], + ['"i"'], + ['"j"'], + ['"k"'], + ['"l"'], + ['"m"'], + ['"n"'], + ['"o"'], + ['"p"'], + ['"q"'], + ['"r"'], + ['"s"'], + ['"t"'], + ['"u"'], + ['"v"'], + ['"w"'], + ['"x"'], + ['"y"'], + ['"z"'] + ] + }, + { + name: 'RULE_DIGIT', + bnf: [['"0"'], ['"1"'], ['"2"'], ['"3"'], ['"4"'], ['"5"'], ['"6"'], ['"7"'], ['"8"'], ['"9"']] + }, + { + name: 'RULE_SYMBOL', + bnf: [ + ['"-"'], + ['"_"'], + ['"!"'], + ['"#"'], + ['"$"'], + ['"%"'], + ['"&"'], + ['"("'], + ['")"'], + ['"*"'], + ['"+"'], + ['","'], + ['"-"'], + ['"."'], + ['"/"'], + ['":"'], + ['";"'], + ['"<"'], + ['"="'], + ['">"'], + ['"?"'], + ['"@"'], + ['"["'], + ['"\\"'], + ['"]"'], + ['"^"'], + ['"_"'], + ['"`"'], + ['"{"'], + ['"|"'], + ['"}"'], + ['"~"'] + ] + }, + { + name: 'RULE_CHARACTER1', + bnf: [['RULE_CHARACTER'], [`"'"`]] + }, + { + name: 'RULE_CHARACTER2', + bnf: [['RULE_CHARACTER'], [`'"'`]] + }, + { + name: 'rule-name', + bnf: [['RULE_LETTER', 'RULE_CHAR*']] + }, + { + name: 'RULE_CHAR', + bnf: [['RULE_LETTER'], ['RULE_DIGIT'], ['"_"'], ['"-"']] + } + ]; + BNF.defaultParser = new Parser_1.Parser(BNF.RULES, { debug: false }); + function getAllTerms(expr) { + let terms = SemanticHelpers_1.findChildrenByType(expr, 'term').map(term => { + return SemanticHelpers_1.findChildrenByType(term, 'literal').concat(SemanticHelpers_1.findChildrenByType(term, 'rule-name'))[0].text; + }); + SemanticHelpers_1.findChildrenByType(expr, 'list').forEach(expr => { + terms = terms.concat(getAllTerms(expr)); + }); + return terms; + } + function getRules(source, parser = BNF.defaultParser) { + let ast = parser.getAST(source); + if (!ast) + throw new Error('Could not parse ' + source); + if (ast.errors && ast.errors.length) { + throw ast.errors[0]; + } + let rules = SemanticHelpers_1.findChildrenByType(ast, 'rule'); + let ret = rules.map((rule) => { + let name = SemanticHelpers_1.findChildrenByType(rule, 'rule-name')[0].text; + let expressions = SemanticHelpers_1.findChildrenByType(rule, 'firstExpression').concat(SemanticHelpers_1.findChildrenByType(rule, 'otherExpression')); + let bnf = []; + expressions.forEach(expr => { + bnf.push(getAllTerms(expr)); + }); + return { + name: name, + bnf + }; + }); + if (!ret.some(x => x.name == 'EOL')) { + ret.push({ + name: 'EOL', + bnf: [['"\\r\\n"', '"\\r"', '"\\n"']] + }); + } + return ret; + } + BNF.getRules = getRules; + function Transform(source, subParser = BNF.defaultParser) { + return getRules(source.join(''), subParser); + } + BNF.Transform = Transform; + class Parser extends Parser_1.Parser { + constructor(source, options) { + const subParser = options && options.debugRulesParser === true ? new Parser_1.Parser(BNF.RULES, { debug: true }) : BNF.defaultParser; + super(getRules(source, subParser), options); + this.source = source; + } + emitSource() { + return this.source; + } + } + BNF.Parser = Parser; + })(BNF$1 || (BNF$1 = {})); + BNF.default = BNF$1; + + return BNF; } -function fixPositions(token, start) { - token.start += start; - token.end += start; - token.children && token.children.forEach(c => fixPositions(c, token.start)); + +var W3CEBNF = {}; + +var hasRequiredW3CEBNF; + +function requireW3CEBNF () { + if (hasRequiredW3CEBNF) return W3CEBNF; + hasRequiredW3CEBNF = 1; + // https://www.w3.org/TR/REC-xml/#NT-Name + // http://www.bottlecaps.de/rr/ui + Object.defineProperty(W3CEBNF, "__esModule", { value: true }); + // Grammar ::= Production* + // Production ::= NCName '::=' Choice + // NCName ::= [http://www.w3.org/TR/xml-names/#NT-NCName] + // Choice ::= SequenceOrDifference ( '|' SequenceOrDifference )* + // SequenceOrDifference ::= (Item ( '-' Item | Item* ))? + // Item ::= Primary ( '?' | '*' | '+' )? + // Primary ::= NCName | StringLiteral | CharCode | CharClass | '(' Choice ')' + // StringLiteral ::= '"' [^"]* '"' | "'" [^']* "'" + // CharCode ::= '#x' [0-9a-fA-F]+ + // CharClass ::= '[' '^'? ( RULE_Char | CharCode | CharRange | CharCodeRange )+ ']' + // RULE_Char ::= [http://www.w3.org/TR/xml#NT-RULE_Char] + // CharRange ::= RULE_Char '-' ( RULE_Char - ']' ) + // CharCodeRange ::= CharCode '-' CharCode + // RULE_WHITESPACE ::= RULE_S | Comment + // RULE_S ::= #x9 | #xA | #xD | #x20 + // Comment ::= '/*' ( [^*] | '*'+ [^*/] )* '*'* '*/' + const Parser_1 = requireParser(); + var BNF; + (function (BNF) { + BNF.RULES = [ + { + name: 'Grammar', + bnf: [['RULE_S*', '%Atomic*', 'EOF']] + }, + { + name: '%Atomic', + bnf: [['Production', 'RULE_S*']], + fragment: true + }, + { + name: 'Production', + bnf: [['NCName', 'RULE_S*', '"::="', 'RULE_WHITESPACE*', 'Choice', 'RULE_WHITESPACE*', 'RULE_EOL+', 'RULE_S*']] + }, + { + name: 'NCName', + bnf: [[/[a-zA-Z][a-zA-Z_0-9]*/]] + }, + { + name: 'Choice', + bnf: [['SequenceOrDifference', '%_Choice_1*']], + fragment: true + }, + { + name: '%_Choice_1', + bnf: [['RULE_WHITESPACE*', '"|"', 'RULE_WHITESPACE*', 'SequenceOrDifference']], + fragment: true + }, + { + name: 'SequenceOrDifference', + bnf: [['Item', 'RULE_WHITESPACE*', '%_Item_1?']] + }, + { + name: '%_Item_1', + bnf: [['Minus', 'Item'], ['Item*']], + fragment: true + }, + { + name: 'Minus', + bnf: [['"-"']] + }, + { + name: 'Item', + bnf: [['RULE_WHITESPACE*', '%Primary', 'PrimaryDecoration?']], + fragment: true + }, + { + name: 'PrimaryDecoration', + bnf: [['"?"'], ['"*"'], ['"+"']] + }, + { + name: 'DecorationName', + bnf: [['"ebnf://"', /[^\x5D#]+/]] + }, + { + name: '%Primary', + bnf: [['NCName'], ['StringLiteral'], ['CharCode'], ['CharClass'], ['SubItem']], + fragment: true + }, + { + name: 'SubItem', + bnf: [['"("', 'RULE_WHITESPACE*', 'Choice', 'RULE_WHITESPACE*', '")"']] + }, + { + name: 'StringLiteral', + bnf: [[`'"'`, /[^"]*/, `'"'`], [`"'"`, /[^']*/, `"'"`]], + pinned: 1 + }, + { + name: 'CharCode', + bnf: [['"#x"', /[0-9a-zA-Z]+/]] + }, + { + name: 'CharClass', + bnf: [["'['", "'^'?", '%RULE_CharClass_1+', '"]"']] + }, + { + name: '%RULE_CharClass_1', + bnf: [['CharCodeRange'], ['CharRange'], ['CharCode'], ['RULE_Char']], + fragment: true + }, + { + name: 'RULE_Char', + bnf: [[/\x09/], [/\x0A/], [/\x0D/], [/[\x20-\x5c]/], [/[\x5e-\uD7FF]/], [/[\uE000-\uFFFD]/]] + }, + { + name: 'CharRange', + bnf: [['RULE_Char', '"-"', 'RULE_Char']] + }, + { + name: 'CharCodeRange', + bnf: [['CharCode', '"-"', 'CharCode']] + }, + { + name: 'RULE_WHITESPACE', + bnf: [['%RULE_WHITESPACE_CHAR*'], ['Comment', 'RULE_WHITESPACE*']] + }, + { + name: 'RULE_S', + bnf: [['RULE_WHITESPACE', 'RULE_S*'], ['RULE_EOL', 'RULE_S*']] + }, + { + name: '%RULE_WHITESPACE_CHAR', + bnf: [[/\x09/], [/\x20/]], + fragment: true + }, + { + name: 'Comment', + bnf: [['"/*"', '%RULE_Comment_Body*', '"*/"']] + }, + { + name: '%RULE_Comment_Body', + bnf: [['!"*/"', /[^*]/]], + fragment: true + }, + { + name: 'RULE_EOL', + bnf: [[/\x0D/, /\x0A/], [/\x0A/], [/\x0D/]] + }, + { + name: 'Link', + bnf: [["'['", 'Url', "']'"]] + }, + { + name: 'Url', + bnf: [[/[^\x5D:/?#]/, '"://"', /[^\x5D#]+/, '%Url1?']] + }, + { + name: '%Url1', + bnf: [['"#"', 'NCName']], + fragment: true + } + ]; + BNF.defaultParser = new Parser_1.Parser(BNF.RULES, { debug: false }); + const preDecorationRE = /^(!|&)/; + const decorationRE = /(\?|\+|\*)$/; + const subExpressionRE = /^%/; + function getBNFRule(name, parser) { + if (typeof name == 'string') { + if (preDecorationRE.test(name)) + return ''; + let subexpression = subExpressionRE.test(name); + if (subexpression) { + let decoration = decorationRE.exec(name); + let decorationText = decoration ? decoration[0] + ' ' : ''; + let lonely = isLonelyRule(name, parser); + if (lonely) + return getBNFBody(name, parser) + decorationText; + return '(' + getBNFBody(name, parser) + ')' + decorationText; + } + return name; + } + else { + return name.source + .replace(/\\(?:x|u)([a-zA-Z0-9]+)/g, '#x$1') + .replace(/\[\\(?:x|u)([a-zA-Z0-9]+)-\\(?:x|u)([a-zA-Z0-9]+)\]/g, '[#x$1-#x$2]'); + } + } + /// Returns true if the rule is a string literal or regular expression without a descendant tree + function isLonelyRule(name, parser) { + let rule = Parser_1.findRuleByName(name, parser); + return (rule && + rule.bnf.length == 1 && + rule.bnf[0].length == 1 && + (rule.bnf[0][0] instanceof RegExp || rule.bnf[0][0][0] == '"' || rule.bnf[0][0][0] == "'")); + } + function getBNFChoice(rules, parser) { + return rules.map(x => getBNFRule(x, parser)).join(' '); + } + function getBNFBody(name, parser) { + let rule = Parser_1.findRuleByName(name, parser); + if (rule) + return rule.bnf.map(x => getBNFChoice(x, parser)).join(' | '); + return 'RULE_NOT_FOUND {' + name + '}'; + } + function emit(parser) { + let acumulator = []; + parser.grammarRules.forEach(l => { + if (!/^%/.test(l.name)) { + let recover = l.recover ? ' /* { recoverUntil=' + l.recover + ' } */' : ''; + acumulator.push(l.name + ' ::= ' + getBNFBody(l.name, parser) + recover); + } + }); + return acumulator.join('\n'); + } + BNF.emit = emit; + let subitems = 0; + function restar(total, resta) { + console.log('reberia restar ' + resta + ' a ' + total); + throw new Error('Difference not supported yet'); + } + function convertRegex(txt) { + return new RegExp(txt + .replace(/#x([a-zA-Z0-9]{4})/g, '\\u$1') + .replace(/#x([a-zA-Z0-9]{3})/g, '\\u0$1') + .replace(/#x([a-zA-Z0-9]{2})/g, '\\x$1') + .replace(/#x([a-zA-Z0-9]{1})/g, '\\x0$1')); + } + function getSubItems(tmpRules, seq, parentName) { + let anterior = null; + let bnfSeq = []; + seq.children.forEach((x, i) => { + if (x.type == 'Minus') { + restar(anterior, x); + } + let decoration = seq.children[i + 1]; + decoration = (decoration && decoration.type == 'PrimaryDecoration' && decoration.text) || ''; + let preDecoration = ''; + switch (x.type) { + case 'SubItem': + let name = '%' + (parentName + subitems++); + createRule(tmpRules, x, name); + bnfSeq.push(preDecoration + name + decoration); + break; + case 'NCName': + case 'StringLiteral': + bnfSeq.push(preDecoration + x.text + decoration); + break; + case 'CharCode': + case 'CharClass': + if (decoration || preDecoration) { + let newRule = { + name: '%' + (parentName + subitems++), + bnf: [[convertRegex(x.text)]] + }; + tmpRules.push(newRule); + bnfSeq.push(preDecoration + newRule.name + decoration); + } + else { + bnfSeq.push(convertRegex(x.text)); + } + break; + case 'PrimaryDecoration': + break; + default: + throw new Error(' HOW SHOULD I PARSE THIS? ' + x.type + ' -> ' + JSON.stringify(x.text)); + } + anterior = x; + }); + return bnfSeq; + } + function createRule(tmpRules, token, name) { + let bnf = token.children.filter(x => x.type == 'SequenceOrDifference').map(s => getSubItems(tmpRules, s, name)); + let rule = { + name, + bnf + }; + let recover = null; + bnf.forEach(x => { + recover = recover || x['recover']; + delete x['recover']; + }); + if (name.indexOf('%') == 0) + rule.fragment = true; + if (recover) + rule.recover = recover; + tmpRules.push(rule); + } + function getRules(source, parser = BNF.defaultParser) { + let ast = parser.getAST(source); + if (!ast) + throw new Error('Could not parse ' + source); + if (ast.errors && ast.errors.length) { + throw ast.errors[0]; + } + let tmpRules = []; + ast.children.filter(x => x.type == 'Production').map((x) => { + let name = x.children.filter(x => x.type == 'NCName')[0].text; + createRule(tmpRules, x, name); + }); + return tmpRules; + } + BNF.getRules = getRules; + function Transform(source, subParser = BNF.defaultParser) { + return getRules(source.join(''), subParser); + } + BNF.Transform = Transform; + class Parser extends Parser_1.Parser { + constructor(source, options) { + const subParser = options && options.debugRulesParser === true ? new Parser_1.Parser(BNF.RULES, { debug: true }) : BNF.defaultParser; + super(getRules(source, subParser), options); + } + emitSource() { + return emit(this); + } + } + BNF.Parser = Parser; + })(BNF || (BNF = {})); + W3CEBNF.default = BNF; + + return W3CEBNF; } -function agregateErrors(errors, token) { - if (token.errors && token.errors.length) - token.errors.forEach(err => errors.push(err)); - token.children && token.children.forEach(tok => agregateErrors(errors, tok)); + +var Custom = {}; + +var hasRequiredCustom; + +function requireCustom () { + if (hasRequiredCustom) return Custom; + hasRequiredCustom = 1; + // https://www.w3.org/TR/REC-xml/#NT-Name + // http://www.bottlecaps.de/rr/ui + Object.defineProperty(Custom, "__esModule", { value: true }); + // Grammar ::= Production* + // Production ::= NCName '::=' Choice + // NCName ::= [http://www.w3.org/TR/xml-names/#NT-NCName] + // Choice ::= SequenceOrDifference ( '|' SequenceOrDifference )* + // SequenceOrDifference ::= (Item ( '-' Item | Item* ))? + // Item ::= Primary ( '?' | '*' | '+' )? + // Primary ::= NCName | StringLiteral | CharCode | CharClass | '(' Choice ')' + // StringLiteral ::= '"' [^"]* '"' | "'" [^']* "'" + // CharCode ::= '#x' [0-9a-fA-F]+ + // CharClass ::= '[' '^'? ( RULE_Char | CharCode | CharRange | CharCodeRange )+ ']' + // RULE_Char ::= [http://www.w3.org/TR/xml#NT-RULE_Char] + // CharRange ::= RULE_Char '-' ( RULE_Char - ']' ) + // CharCodeRange ::= CharCode '-' CharCode + // RULE_WHITESPACE ::= RULE_S | Comment + // RULE_S ::= #x9 | #xA | #xD | #x20 + // Comment ::= '/*' ( [^*] | '*'+ [^*/] )* '*'* '*/' + const TokenError_1 = requireTokenError(); + const Parser_1 = requireParser(); + var BNF; + (function (BNF) { + BNF.RULES = [ + { + name: 'Grammar', + bnf: [['RULE_S*', 'Attributes?', 'RULE_S*', '%Atomic*', 'EOF']] + }, + { + name: '%Atomic', + bnf: [['Production', 'RULE_S*']], + fragment: true + }, + { + name: 'Production', + bnf: [ + [ + 'NCName', + 'RULE_S*', + '"::="', + 'RULE_WHITESPACE*', + '%Choice', + 'RULE_WHITESPACE*', + 'Attributes?', + 'RULE_EOL+', + 'RULE_S*' + ] + ] + }, + { + name: 'NCName', + bnf: [[/[a-zA-Z][a-zA-Z_0-9]*/]] + }, + { + name: 'Attributes', + bnf: [['"{"', 'Attribute', '%Attributes*', 'RULE_S*', '"}"']] + }, + { + name: '%Attributes', + bnf: [['RULE_S*', '","', 'Attribute']], + fragment: true + }, + { + name: 'Attribute', + bnf: [['RULE_S*', 'NCName', 'RULE_WHITESPACE*', '"="', 'RULE_WHITESPACE*', 'AttributeValue']] + }, + { + name: 'AttributeValue', + bnf: [['NCName'], [/[1-9][0-9]*/]] + }, + { + name: '%Choice', + bnf: [['SequenceOrDifference', '%_Choice_1*']], + fragment: true + }, + { + name: '%_Choice_1', + bnf: [['RULE_S*', '"|"', 'RULE_S*', 'SequenceOrDifference']], + fragment: true + }, + { + name: 'SequenceOrDifference', + bnf: [['%Item', 'RULE_WHITESPACE*', '%_Item_1?']] + }, + { + name: '%_Item_1', + bnf: [['Minus', '%Item'], ['%Item*']], + fragment: true + }, + { + name: 'Minus', + bnf: [['"-"']] + }, + { + name: '%Item', + bnf: [['RULE_WHITESPACE*', 'PrimaryPreDecoration?', '%Primary', 'PrimaryDecoration?']], + fragment: true + }, + { + name: 'PrimaryDecoration', + bnf: [['"?"'], ['"*"'], ['"+"']] + }, + { + name: 'PrimaryPreDecoration', + bnf: [['"&"'], ['"!"'], ['"~"']] + }, + { + name: '%Primary', + bnf: [['NCName'], ['StringLiteral'], ['CharCode'], ['CharClass'], ['SubItem']], + fragment: true + }, + { + name: 'SubItem', + bnf: [['"("', 'RULE_S*', '%Choice', 'RULE_S*', '")"']] + }, + { + name: 'StringLiteral', + bnf: [[`'"'`, /[^"]*/, `'"'`], [`"'"`, /[^']*/, `"'"`]] + }, + { + name: 'CharCode', + bnf: [['"#x"', /[0-9a-zA-Z]+/]] + }, + { + name: 'CharClass', + bnf: [["'['", "'^'?", '%RULE_CharClass_1+', '"]"']] + }, + { + name: '%RULE_CharClass_1', + bnf: [['CharCodeRange'], ['CharRange'], ['CharCode'], ['RULE_Char']], + fragment: true + }, + { + name: 'RULE_Char', + bnf: [[/\x09/], [/\x0A/], [/\x0D/], [/[\x20-\x5c]/], [/[\x5e-\uD7FF]/], [/[\uE000-\uFFFD]/]] + }, + { + name: 'CharRange', + bnf: [['RULE_Char', '"-"', 'RULE_Char']] + }, + { + name: 'CharCodeRange', + bnf: [['CharCode', '"-"', 'CharCode']] + }, + { + name: 'RULE_WHITESPACE', + bnf: [['%RULE_WHITESPACE_CHAR*'], ['Comment', 'RULE_WHITESPACE*']] + }, + { + name: 'RULE_S', + bnf: [['RULE_WHITESPACE', 'RULE_S*'], ['RULE_EOL', 'RULE_S*']] + }, + { + name: '%RULE_WHITESPACE_CHAR', + bnf: [[/\x09/], [/\x20/]], + fragment: true + }, + { + name: 'Comment', + bnf: [['"/*"', '%RULE_Comment_Body*', '"*/"']] + }, + { + name: '%RULE_Comment_Body', + bnf: [[/[^*]/], ['"*"+', /[^/]*/]], + fragment: true + }, + { + name: 'RULE_EOL', + bnf: [[/\x0D/, /\x0A/], [/\x0A/], [/\x0D/]] + }, + { + name: 'Link', + bnf: [["'['", 'Url', "']'"]] + }, + { + name: 'Url', + bnf: [[/[^\x5D:/?#]/, '"://"', /[^\x5D#]+/, '%Url1?']] + }, + { + name: '%Url1', + bnf: [['"#"', 'NCName']], + fragment: true + } + ]; + BNF.defaultParser = new Parser_1.Parser(BNF.RULES, { debug: false }); + const preDecorationRE = /^(!|&)/; + const decorationRE = /(\?|\+|\*)$/; + const subExpressionRE = /^%/; + function getBNFRule(name, parser) { + if (typeof name == 'string') { + let decoration = decorationRE.exec(name); + let preDecoration = preDecorationRE.exec(name); + let preDecorationText = preDecoration ? preDecoration[0] : ''; + let decorationText = decoration ? decoration[0] + ' ' : ''; + let subexpression = subExpressionRE.test(name); + if (subexpression) { + let lonely = isLonelyRule(name, parser); + if (lonely) + return preDecorationText + getBNFBody(name, parser) + decorationText; + return preDecorationText + '(' + getBNFBody(name, parser) + ')' + decorationText; + } + return name.replace(preDecorationRE, preDecorationText); + } + else { + return name.source + .replace(/\\(?:x|u)([a-zA-Z0-9]+)/g, '#x$1') + .replace(/\[\\(?:x|u)([a-zA-Z0-9]+)-\\(?:x|u)([a-zA-Z0-9]+)\]/g, '[#x$1-#x$2]'); + } + } + /// Returns true if the rule is a string literal or regular expression without a descendant tree + function isLonelyRule(name, parser) { + let rule = Parser_1.findRuleByName(name, parser); + return (rule && + rule.bnf.length == 1 && + rule.bnf[0].length == 1 && + (rule.bnf[0][0] instanceof RegExp || rule.bnf[0][0][0] == '"' || rule.bnf[0][0][0] == "'")); + } + function getBNFChoice(rules, parser) { + return rules.map(x => getBNFRule(x, parser)).join(' '); + } + function getBNFBody(name, parser) { + let rule = Parser_1.findRuleByName(name, parser); + if (rule) + return rule.bnf.map(x => getBNFChoice(x, parser)).join(' | '); + return 'RULE_NOT_FOUND {' + name + '}'; + } + function emit(parser) { + let acumulator = []; + parser.grammarRules.forEach(l => { + if (!/^%/.test(l.name)) { + let recover = l.recover ? ' { recoverUntil=' + l.recover + ' }' : ''; + acumulator.push(l.name + ' ::= ' + getBNFBody(l.name, parser) + recover); + } + }); + return acumulator.join('\n'); + } + BNF.emit = emit; + let subitems = 0; + function restar(total, resta) { + console.log('reberia restar ' + resta + ' a ' + total); + throw new Error('Difference not supported yet'); + } + function convertRegex(txt) { + return new RegExp(txt + .replace(/#x([a-zA-Z0-9]{4})/g, '\\u$1') + .replace(/#x([a-zA-Z0-9]{3})/g, '\\u0$1') + .replace(/#x([a-zA-Z0-9]{2})/g, '\\x$1') + .replace(/#x([a-zA-Z0-9]{1})/g, '\\x0$1')); + } + function getSubItems(tmpRules, seq, parentName, parentAttributes) { + let anterior = null; + let bnfSeq = []; + seq.children.forEach((x, i) => { + if (x.type == 'Minus') { + restar(anterior, x); + } + let decoration = seq.children[i + 1]; + decoration = (decoration && decoration.type == 'PrimaryDecoration' && decoration.text) || ''; + let preDecoration = ''; + if (anterior && anterior.type == 'PrimaryPreDecoration') { + preDecoration = anterior.text; + } + let pinned = preDecoration == '~' ? 1 : undefined; + if (pinned) { + preDecoration = ''; + } + switch (x.type) { + case 'SubItem': + let name = '%' + (parentName + subitems++); + createRule(tmpRules, x, name, parentAttributes); + bnfSeq.push(preDecoration + name + decoration); + break; + case 'NCName': + bnfSeq.push(preDecoration + x.text + decoration); + break; + case 'StringLiteral': + if (decoration || preDecoration || !/^['"/()a-zA-Z0-9&_.:=,+*\-\^\\]+$/.test(x.text)) { + bnfSeq.push(preDecoration + x.text + decoration); + } + else { + for (const c of x.text.slice(1, -1)) { + if (parentAttributes && parentAttributes["ignoreCase"] == "true" && /[a-zA-Z]/.test(c)) { + bnfSeq.push(new RegExp("[" + c.toUpperCase() + c.toLowerCase() + "]")); + } + else { + bnfSeq.push(new RegExp(Parser_1.escapeRegExp(c))); + } + } + } + break; + case 'CharCode': + case 'CharClass': + if (decoration || preDecoration) { + let newRule = { + name: '%' + (parentName + subitems++), + bnf: [[convertRegex(x.text)]], + pinned + }; + tmpRules.push(newRule); + bnfSeq.push(preDecoration + newRule.name + decoration); + } + else { + bnfSeq.push(convertRegex(x.text)); + } + break; + case 'PrimaryPreDecoration': + case 'PrimaryDecoration': + break; + default: + throw new Error(' HOW SHOULD I PARSE THIS? ' + x.type + ' -> ' + JSON.stringify(x.text)); + } + anterior = x; + }); + return bnfSeq; + } + function createRule(tmpRules, token, name, parentAttributes = undefined) { + let attrNode = token.children.filter(x => x.type == 'Attributes')[0]; + let attributes = {}; + if (attrNode) { + attrNode.children.forEach(x => { + let name = x.children.filter(x => x.type == 'NCName')[0].text; + if (name in attributes) { + throw new TokenError_1.TokenError('Duplicated attribute ' + name, x); + } + else { + attributes[name] = x.children.filter(x => x.type == 'AttributeValue')[0].text; + } + }); + } + let bnf = token.children.filter(x => x.type == 'SequenceOrDifference').map(s => getSubItems(tmpRules, s, name, parentAttributes ? parentAttributes : attributes)); + let rule = { + name, + bnf + }; + if (name.indexOf('%') == 0) + rule.fragment = true; + if (attributes['recoverUntil']) { + rule.recover = attributes['recoverUntil']; + if (rule.bnf.length > 1) + throw new TokenError_1.TokenError('only one-option productions are suitable for error recovering', token); + } + if ('pin' in attributes) { + let num = parseInt(attributes['pin']); + if (!isNaN(num)) { + rule.pinned = num; + } + if (rule.bnf.length > 1) + throw new TokenError_1.TokenError('only one-option productions are suitable for pinning', token); + } + if ('ws' in attributes) { + rule.implicitWs = attributes['ws'] != 'explicit'; + } + else { + rule.implicitWs = null; + } + rule.fragment = rule.fragment || attributes['fragment'] == 'true'; + rule.simplifyWhenOneChildren = attributes['simplifyWhenOneChildren'] == 'true'; + tmpRules.push(rule); + } + function getRules(source, parser = BNF.defaultParser) { + let ast = parser.getAST(source); + if (!ast) + throw new Error('Could not parse ' + source); + if (ast.errors && ast.errors.length) { + throw ast.errors[0]; + } + let implicitWs = null; + let attrNode = ast.children.filter(x => x.type == 'Attributes')[0]; + let attributes = {}; + if (attrNode) { + attrNode.children.forEach(x => { + let name = x.children.filter(x => x.type == 'NCName')[0].text; + if (name in attributes) { + throw new TokenError_1.TokenError('Duplicated attribute ' + name, x); + } + else { + attributes[name] = x.children.filter(x => x.type == 'AttributeValue')[0].text; + } + }); + } + implicitWs = attributes['ws'] == 'implicit'; + let tmpRules = []; + ast.children.filter(x => x.type == 'Production').map((x) => { + let name = x.children.filter(x => x.type == 'NCName')[0].text; + createRule(tmpRules, x, name); + }); + tmpRules.forEach(rule => { + if (rule.implicitWs === null) + rule.implicitWs = implicitWs; + }); + return tmpRules; + } + BNF.getRules = getRules; + function Transform(source, subParser = BNF.defaultParser) { + return getRules(source.join(''), subParser); + } + BNF.Transform = Transform; + class Parser extends Parser_1.Parser { + constructor(source, options) { + const subParser = options && options.debugRulesParser === true ? new Parser_1.Parser(BNF.RULES, { debug: true }) : BNF.defaultParser; + super(getRules(source, subParser), options); + } + emitSource() { + return emit(this); + } + } + BNF.Parser = Parser; + })(BNF || (BNF = {})); + Custom.default = BNF; + + return Custom; } -function parseRuleName(name) { - let postDecoration = decorationRE.exec(name); - let preDecoration = preDecorationRE.exec(name); - let postDecorationText = (postDecoration && postDecoration[0]) || ''; - let preDecorationText = (preDecoration && preDecoration[0]) || ''; - let out = { - raw: name, - name: name.replace(decorationRE, '').replace(preDecorationRE, ''), - isOptional: postDecorationText == '?' || postDecorationText == '*', - allowRepetition: postDecorationText == '+' || postDecorationText == '*', - atLeastOne: postDecorationText == '+', - lookupPositive: preDecorationText == '&', - lookupNegative: preDecorationText == '!', - pinned: preDecorationText == '@', - lookup: false, - isLiteral: false - }; - out.isLiteral = out.name[0] == "'" || out.name[0] == '"'; - out.lookup = out.lookupNegative || out.lookupPositive; - return out; + +var hasRequiredGrammars; + +function requireGrammars () { + if (hasRequiredGrammars) return Grammars; + hasRequiredGrammars = 1; + (function (exports) { + Object.defineProperty(exports, "__esModule", { value: true }); + var BNF_1 = requireBNF(); + Object.defineProperty(exports, "BNF", { enumerable: true, get: function () { return BNF_1.default; } }); + var W3CEBNF_1 = requireW3CEBNF(); + Object.defineProperty(exports, "W3C", { enumerable: true, get: function () { return W3CEBNF_1.default; } }); + var Custom_1 = requireCustom(); + Object.defineProperty(exports, "Custom", { enumerable: true, get: function () { return Custom_1.default; } }); + + } (Grammars)); + return Grammars; } -exports.parseRuleName = parseRuleName; -function findRuleByName(name, parser) { - let parsed = parseRuleName(name); - return parser.cachedRules[parsed.name] || null; + +var hasRequiredDist; + +function requireDist () { + if (hasRequiredDist) return dist; + hasRequiredDist = 1; + (function (exports) { + Object.defineProperty(exports, "__esModule", { value: true }); + var Parser_1 = requireParser(); + Object.defineProperty(exports, "Parser", { enumerable: true, get: function () { return Parser_1.Parser; } }); + var TokenError_1 = requireTokenError(); + Object.defineProperty(exports, "TokenError", { enumerable: true, get: function () { return TokenError_1.TokenError; } }); + exports.Grammars = requireGrammars(); + + } (dist)); + return dist; } -exports.findRuleByName = findRuleByName; -/// Removes all the nodes starting with 'RULE_' -function stripRules(token, re) { - if (token.children) { - let localRules = token.children.filter(x => x.type && re.test(x.type)); - for (let i = 0; i < localRules.length; i++) { - let indexOnChildren = token.children.indexOf(localRules[i]); - if (indexOnChildren != -1) { - token.children.splice(indexOnChildren, 1); - } - } - token.children.forEach(c => stripRules(c, re)); - } -} -const ignoreMissingRules = ['EOF']; -class Parser { - constructor(grammarRules, options) { - this.grammarRules = grammarRules; - this.options = options; - this.cachedRules = {}; - this.debug = options ? options.debug === true : false; - let errors = []; - let neededRules = []; - grammarRules.forEach(rule => { - let parsedName = parseRuleName(rule.name); - if (parsedName.name in this.cachedRules) { - errors.push('Duplicated rule ' + parsedName.name); - return; - } - else { - this.cachedRules[parsedName.name] = rule; - } - if (!rule.bnf || !rule.bnf.length) { - let error = 'Missing rule content, rule: ' + rule.name; - if (errors.indexOf(error) == -1) - errors.push(error); - } - else { - rule.bnf.forEach(options => { - if (typeof options[0] === 'string') { - let parsed = parseRuleName(options[0]); - if (parsed.name == rule.name) { - let error = 'Left recursion is not allowed, rule: ' + rule.name; - if (errors.indexOf(error) == -1) - errors.push(error); - } - } - options.forEach(option => { - if (typeof option == 'string') { - let name = parseRuleName(option); - if (!name.isLiteral && - neededRules.indexOf(name.name) == -1 && - ignoreMissingRules.indexOf(name.name) == -1) - neededRules.push(name.name); - } - }); - }); - } - if (WS_RULE == rule.name) - rule.implicitWs = false; - if (rule.implicitWs) { - if (neededRules.indexOf(WS_RULE) == -1) - neededRules.push(WS_RULE); - } - if (rule.recover) { - if (neededRules.indexOf(rule.recover) == -1) - neededRules.push(rule.recover); - } - }); - neededRules.forEach(ruleName => { - if (!(ruleName in this.cachedRules)) { - errors.push('Missing rule ' + ruleName); - } - }); - if (errors.length) - throw new Error(errors.join('\n')); - } - getAST(txt, target) { - if (!target) { - target = this.grammarRules.filter(x => !x.fragment && x.name.indexOf('%') != 0)[0].name; - } - let result = this.parse(txt, target); - if (result) { - agregateErrors(result.errors, result); - fixPositions(result, 0); - // REMOVE ALL THE TAGS MATCHING /^%/ - stripRules(result, /^%/); - if (!this.options || !this.options.keepUpperRules) - stripRules(result, UPPER_SNAKE_RE); - let rest = result.rest; - if (rest) { - new TokenError_1.TokenError('Unexpected end of input: \n' + rest, result); - } - fixRest(result); - result.rest = rest; - } - return result; - } - emitSource() { - return 'CANNOT EMIT SOURCE FROM BASE Parser'; - } - parse(txt, target, recursion = 0) { - let out = null; - let type = parseRuleName(target); - let expr; - let printable = this.debug && /*!isLiteral &*/ !UPPER_SNAKE_RE.test(type.name); - printable && - console.log(new Array(recursion).join('│ ') + 'Trying to get ' + target + ' from ' + JSON.stringify(txt.split('\n')[0])); - let realType = type.name; - let targetLex = findRuleByName(type.name, this); - if (type.name == 'EOF') { - if (txt.length) { - return null; - } - else if (txt.length == 0) { - return { - type: 'EOF', - text: '', - rest: '', - start: 0, - end: 0, - fullText: '', - errors: [], - children: [], - parent: null - }; - } - } - try { - if (!targetLex && type.isLiteral) { - // tslint:disable-next-line: no-eval - let src = eval(type.name); - if (src === '') { - return { - type: '%%EMPTY%%', - text: '', - rest: txt, - start: 0, - end: 0, - fullText: '', - errors: [], - children: [], - parent: null - }; - } - expr = new RegExp(escapeRegExp(src)); - realType = null; - } - } - catch (e) { - if (e instanceof ReferenceError) { - console.error(e); - } - return null; - } - if (expr) { - let result = readToken(txt, expr); - if (result) { - result.type = realType; - return result; - } - } - else { - let options = targetLex.bnf; - if (options instanceof Array) { - options.forEach(phases => { - if (out) - return; - let pinned = null; - let tmp = { - type: type.name, - text: '', - children: [], - end: 0, - errors: [], - fullText: '', - parent: null, - start: 0, - rest: txt - }; - if (targetLex.fragment) - tmp.fragment = true; - let tmpTxt = txt; - let position = 0; - let allOptional = phases.length > 0; - let foundSomething = false; - for (let i = 0; i < phases.length; i++) { - if (typeof phases[i] == 'string') { - let localTarget = parseRuleName(phases[i]); - allOptional = allOptional && localTarget.isOptional; - let got; - let foundAtLeastOne = false; - do { - got = null; - if (targetLex.implicitWs) { - got = this.parse(tmpTxt, localTarget.name, recursion + 1); - if (!got) { - let WS; - do { - WS = this.parse(tmpTxt, WS_RULE, recursion + 1); - if (WS) { - tmp.text = tmp.text + WS.text; - tmp.end = tmp.text.length; - WS.parent = tmp; - tmp.children.push(WS); - tmpTxt = tmpTxt.substr(WS.text.length); - position += WS.text.length; - } - else { - break; - } - } while (WS && WS.text.length); - } - } - got = got || this.parse(tmpTxt, localTarget.name, recursion + 1); - // rule ::= "true" ![a-zA-Z] - // negative lookup, if it does not match, we should continue - if (localTarget.lookupNegative) { - if (got) - return /* cancel this path */; - break; - } - if (localTarget.lookupPositive) { - if (!got) - return; - } - if (!got) { - if (localTarget.isOptional) - break; - if (localTarget.atLeastOne && foundAtLeastOne) - break; - } - if (got && targetLex.pinned == i + 1) { - pinned = got; - printable && console.log(new Array(recursion + 1).join('│ ') + '└─ ' + got.type + ' PINNED'); - } - if (!got) - got = this.parseRecovery(targetLex, tmpTxt, recursion + 1); - if (!got) { - if (pinned) { - out = tmp; - got = { - type: 'SyntaxError', - text: tmpTxt, - children: [], - end: tmpTxt.length, - errors: [], - fullText: '', - parent: null, - start: 0, - rest: '' - }; - if (tmpTxt.length) { - new TokenError_1.TokenError(`Unexpected end of input. Expecting ${localTarget.name} Got: ${tmpTxt}`, got); - } - else { - new TokenError_1.TokenError(`Unexpected end of input. Missing ${localTarget.name}`, got); - } - printable && - console.log(new Array(recursion + 1).join('│ ') + '└─ ' + got.type + ' ' + JSON.stringify(got.text)); - } - else { - return; - } - } - foundAtLeastOne = true; - foundSomething = true; - if (got.type == '%%EMPTY%%') { - break; - } - got.start += position; - got.end += position; - if (!localTarget.lookupPositive && got.type) { - if (got.fragment) { - got.children && - got.children.forEach(x => { - x.start += position; - x.end += position; - x.parent = tmp; - tmp.children.push(x); - }); - } - else { - got.parent = tmp; - tmp.children.push(got); - } - } - if (localTarget.lookup) - got.lookup = true; - printable && - console.log(new Array(recursion + 1).join('│ ') + '└─ ' + got.type + ' ' + JSON.stringify(got.text)); - // Eat it from the input stream, only if it is not a lookup - if (!localTarget.lookup && !got.lookup) { - tmp.text = tmp.text + got.text; - tmp.end = tmp.text.length; - tmpTxt = tmpTxt.substr(got.text.length); - position += got.text.length; - } - tmp.rest = tmpTxt; - } while (got && localTarget.allowRepetition && tmpTxt.length && !got.lookup); - } /* IS A REGEXP */ - else { - let got = readToken(tmpTxt, phases[i]); - if (!got) { - return; - } - printable && - console.log(new Array(recursion + 1).join('│ ') + '└> ' + JSON.stringify(got.text) + phases[i].source); - foundSomething = true; - got.start += position; - got.end += position; - tmp.text = tmp.text + got.text; - tmp.end = tmp.text.length; - tmpTxt = tmpTxt.substr(got.text.length); - position += got.text.length; - tmp.rest = tmpTxt; - } - } - if (foundSomething) { - out = tmp; - printable && - console.log(new Array(recursion).join('│ ') + '├<─┴< PUSHING ' + out.type + ' ' + JSON.stringify(out.text)); - } - }); - } - if (out && targetLex.simplifyWhenOneChildren && out.children.length == 1) { - out = out.children[0]; - } - } - if (!out) { - printable && console.log(target + ' NOT RESOLVED FROM ' + txt); - } - return out; - } - parseRecovery(recoverableToken, tmpTxt, recursion) { - if (recoverableToken.recover && tmpTxt.length) { - let printable = this.debug; - printable && - console.log(new Array(recursion + 1).join('│ ') + - 'Trying to recover until token ' + - recoverableToken.recover + - ' from ' + - JSON.stringify(tmpTxt.split('\n')[0] + tmpTxt.split('\n')[1])); - let tmp = { - type: 'SyntaxError', - text: '', - children: [], - end: 0, - errors: [], - fullText: '', - parent: null, - start: 0, - rest: '' - }; - let got; - do { - got = this.parse(tmpTxt, recoverableToken.recover, recursion + 1); - if (got) { - new TokenError_1.TokenError('Unexpected input: "' + tmp.text + `" Expecting: ${recoverableToken.name}`, tmp); - break; - } - else { - tmp.text = tmp.text + tmpTxt[0]; - tmp.end = tmp.text.length; - tmpTxt = tmpTxt.substr(1); - } - } while (!got && tmpTxt.length > 0); - if (tmp.text.length > 0 && got) { - printable && console.log(new Array(recursion + 1).join('│ ') + 'Recovered text: ' + JSON.stringify(tmp.text)); - return tmp; - } - } - return null; - } -} -exports.Parser = Parser; -exports.default = Parser; -}); +var hasRequiredCalc; -var SemanticHelpers = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.findChildrenByType = void 0; -/** - * Finds all the direct childs of a specifyed type - */ -function findChildrenByType(token, type) { - return token.children ? token.children.filter(x => x.type == type) : []; -} -exports.findChildrenByType = findChildrenByType; - -}); - -var BNF_1 = createCommonjsModule(function (module, exports) { -// https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form -Object.defineProperty(exports, "__esModule", { value: true }); -/* -syntax ::= RULE_EOL* rule+ -rule ::= " "* "<" rule-name ">" " "* "::=" firstExpression otherExpression* " "* RULE_EOL+ " "* -firstExpression ::= " "* list -otherExpression ::= " "* "|" " "* list -RULE_EOL ::= "\r" | "\n" -list ::= term " "* list | term -term ::= literal | "<" rule-name ">" -literal ::= '"' RULE_CHARACTER1* '"' | "'" RULE_CHARACTER2* "'" -RULE_CHARACTER ::= " " | RULE_LETTER | RULE_DIGIT | RULE_SYMBOL -RULE_LETTER ::= "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" | "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z" -RULE_DIGIT ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" -RULE_SYMBOL ::= "-" | "_" | "!" | "#" | "$" | "%" | "&" | "(" | ")" | "*" | "+" | "," | "-" | "." | "/" | ":" | ";" | "<" | "=" | ">" | "?" | "@" | "[" | "\" | "]" | "^" | "_" | "`" | "{" | "|" | "}" | "~" -RULE_CHARACTER1 ::= RULE_CHARACTER | "'" -RULE_CHARACTER2 ::= RULE_CHARACTER | '"' -rule-name ::= RULE_LETTER RULE_CHAR* -RULE_CHAR ::= RULE_LETTER | RULE_DIGIT | "_" | "-" -*/ - - -var BNF; -(function (BNF) { - BNF.RULES = [ - { - name: 'syntax', - bnf: [['RULE_EOL*', 'rule+']] - }, - { - name: 'rule', - bnf: [ - [ - '" "*', - '"<"', - 'rule-name', - '">"', - '" "*', - '"::="', - 'firstExpression', - 'otherExpression*', - '" "*', - 'RULE_EOL+', - '" "*' - ] - ] - }, - { - name: 'firstExpression', - bnf: [['" "*', 'list']] - }, - { - name: 'otherExpression', - bnf: [['" "*', '"|"', '" "*', 'list']] - }, - { - name: 'RULE_EOL', - bnf: [['"\\r"'], ['"\\n"']] - }, - { - name: 'list', - bnf: [['term', '" "*', 'list'], ['term']] - }, - { - name: 'term', - bnf: [['literal'], ['"<"', 'rule-name', '">"']] - }, - { - name: 'literal', - bnf: [[`'"'`, 'RULE_CHARACTER1*', `'"'`], [`"'"`, 'RULE_CHARACTER2*', `"'"`]] - }, - { - name: 'RULE_CHARACTER', - bnf: [['" "'], ['RULE_LETTER'], ['RULE_DIGIT'], ['RULE_SYMBOL']] - }, - { - name: 'RULE_LETTER', - bnf: [ - ['"A"'], - ['"B"'], - ['"C"'], - ['"D"'], - ['"E"'], - ['"F"'], - ['"G"'], - ['"H"'], - ['"I"'], - ['"J"'], - ['"K"'], - ['"L"'], - ['"M"'], - ['"N"'], - ['"O"'], - ['"P"'], - ['"Q"'], - ['"R"'], - ['"S"'], - ['"T"'], - ['"U"'], - ['"V"'], - ['"W"'], - ['"X"'], - ['"Y"'], - ['"Z"'], - ['"a"'], - ['"b"'], - ['"c"'], - ['"d"'], - ['"e"'], - ['"f"'], - ['"g"'], - ['"h"'], - ['"i"'], - ['"j"'], - ['"k"'], - ['"l"'], - ['"m"'], - ['"n"'], - ['"o"'], - ['"p"'], - ['"q"'], - ['"r"'], - ['"s"'], - ['"t"'], - ['"u"'], - ['"v"'], - ['"w"'], - ['"x"'], - ['"y"'], - ['"z"'] - ] - }, - { - name: 'RULE_DIGIT', - bnf: [['"0"'], ['"1"'], ['"2"'], ['"3"'], ['"4"'], ['"5"'], ['"6"'], ['"7"'], ['"8"'], ['"9"']] - }, - { - name: 'RULE_SYMBOL', - bnf: [ - ['"-"'], - ['"_"'], - ['"!"'], - ['"#"'], - ['"$"'], - ['"%"'], - ['"&"'], - ['"("'], - ['")"'], - ['"*"'], - ['"+"'], - ['","'], - ['"-"'], - ['"."'], - ['"/"'], - ['":"'], - ['";"'], - ['"<"'], - ['"="'], - ['">"'], - ['"?"'], - ['"@"'], - ['"["'], - ['"\\"'], - ['"]"'], - ['"^"'], - ['"_"'], - ['"`"'], - ['"{"'], - ['"|"'], - ['"}"'], - ['"~"'] - ] - }, - { - name: 'RULE_CHARACTER1', - bnf: [['RULE_CHARACTER'], [`"'"`]] - }, - { - name: 'RULE_CHARACTER2', - bnf: [['RULE_CHARACTER'], [`'"'`]] - }, - { - name: 'rule-name', - bnf: [['RULE_LETTER', 'RULE_CHAR*']] - }, - { - name: 'RULE_CHAR', - bnf: [['RULE_LETTER'], ['RULE_DIGIT'], ['"_"'], ['"-"']] - } - ]; - BNF.defaultParser = new Parser_1.Parser(BNF.RULES, { debug: false }); - function getAllTerms(expr) { - let terms = SemanticHelpers.findChildrenByType(expr, 'term').map(term => { - return SemanticHelpers.findChildrenByType(term, 'literal').concat(SemanticHelpers.findChildrenByType(term, 'rule-name'))[0].text; - }); - SemanticHelpers.findChildrenByType(expr, 'list').forEach(expr => { - terms = terms.concat(getAllTerms(expr)); - }); - return terms; - } - function getRules(source, parser = BNF.defaultParser) { - let ast = parser.getAST(source); - if (!ast) - throw new Error('Could not parse ' + source); - if (ast.errors && ast.errors.length) { - throw ast.errors[0]; - } - let rules = SemanticHelpers.findChildrenByType(ast, 'rule'); - let ret = rules.map((rule) => { - let name = SemanticHelpers.findChildrenByType(rule, 'rule-name')[0].text; - let expressions = SemanticHelpers.findChildrenByType(rule, 'firstExpression').concat(SemanticHelpers.findChildrenByType(rule, 'otherExpression')); - let bnf = []; - expressions.forEach(expr => { - bnf.push(getAllTerms(expr)); - }); - return { - name: name, - bnf - }; - }); - if (!ret.some(x => x.name == 'EOL')) { - ret.push({ - name: 'EOL', - bnf: [['"\\r\\n"', '"\\r"', '"\\n"']] - }); - } - return ret; - } - BNF.getRules = getRules; - function Transform(source, subParser = BNF.defaultParser) { - return getRules(source.join(''), subParser); - } - BNF.Transform = Transform; - class Parser extends Parser_1.Parser { - constructor(source, options) { - const subParser = options && options.debugRulesParser === true ? new Parser_1.Parser(BNF.RULES, { debug: true }) : BNF.defaultParser; - super(getRules(source, subParser), options); - this.source = source; - } - emitSource() { - return this.source; - } - } - BNF.Parser = Parser; -})(BNF || (BNF = {})); -exports.default = BNF; - -}); - -var W3CEBNF = createCommonjsModule(function (module, exports) { -// https://www.w3.org/TR/REC-xml/#NT-Name -// http://www.bottlecaps.de/rr/ui -Object.defineProperty(exports, "__esModule", { value: true }); -// Grammar ::= Production* -// Production ::= NCName '::=' Choice -// NCName ::= [http://www.w3.org/TR/xml-names/#NT-NCName] -// Choice ::= SequenceOrDifference ( '|' SequenceOrDifference )* -// SequenceOrDifference ::= (Item ( '-' Item | Item* ))? -// Item ::= Primary ( '?' | '*' | '+' )? -// Primary ::= NCName | StringLiteral | CharCode | CharClass | '(' Choice ')' -// StringLiteral ::= '"' [^"]* '"' | "'" [^']* "'" -// CharCode ::= '#x' [0-9a-fA-F]+ -// CharClass ::= '[' '^'? ( RULE_Char | CharCode | CharRange | CharCodeRange )+ ']' -// RULE_Char ::= [http://www.w3.org/TR/xml#NT-RULE_Char] -// CharRange ::= RULE_Char '-' ( RULE_Char - ']' ) -// CharCodeRange ::= CharCode '-' CharCode -// RULE_WHITESPACE ::= RULE_S | Comment -// RULE_S ::= #x9 | #xA | #xD | #x20 -// Comment ::= '/*' ( [^*] | '*'+ [^*/] )* '*'* '*/' - -var BNF; -(function (BNF) { - BNF.RULES = [ - { - name: 'Grammar', - bnf: [['RULE_S*', '%Atomic*', 'EOF']] - }, - { - name: '%Atomic', - bnf: [['Production', 'RULE_S*']], - fragment: true - }, - { - name: 'Production', - bnf: [['NCName', 'RULE_S*', '"::="', 'RULE_WHITESPACE*', 'Choice', 'RULE_WHITESPACE*', 'RULE_EOL+', 'RULE_S*']] - }, - { - name: 'NCName', - bnf: [[/[a-zA-Z][a-zA-Z_0-9]*/]] - }, - { - name: 'Choice', - bnf: [['SequenceOrDifference', '%_Choice_1*']], - fragment: true - }, - { - name: '%_Choice_1', - bnf: [['RULE_WHITESPACE*', '"|"', 'RULE_WHITESPACE*', 'SequenceOrDifference']], - fragment: true - }, - { - name: 'SequenceOrDifference', - bnf: [['Item', 'RULE_WHITESPACE*', '%_Item_1?']] - }, - { - name: '%_Item_1', - bnf: [['Minus', 'Item'], ['Item*']], - fragment: true - }, - { - name: 'Minus', - bnf: [['"-"']] - }, - { - name: 'Item', - bnf: [['RULE_WHITESPACE*', '%Primary', 'PrimaryDecoration?']], - fragment: true - }, - { - name: 'PrimaryDecoration', - bnf: [['"?"'], ['"*"'], ['"+"']] - }, - { - name: 'DecorationName', - bnf: [['"ebnf://"', /[^\x5D#]+/]] - }, - { - name: '%Primary', - bnf: [['NCName'], ['StringLiteral'], ['CharCode'], ['CharClass'], ['SubItem']], - fragment: true - }, - { - name: 'SubItem', - bnf: [['"("', 'RULE_WHITESPACE*', 'Choice', 'RULE_WHITESPACE*', '")"']] - }, - { - name: 'StringLiteral', - bnf: [[`'"'`, /[^"]*/, `'"'`], [`"'"`, /[^']*/, `"'"`]], - pinned: 1 - }, - { - name: 'CharCode', - bnf: [['"#x"', /[0-9a-zA-Z]+/]] - }, - { - name: 'CharClass', - bnf: [["'['", "'^'?", '%RULE_CharClass_1+', '"]"']] - }, - { - name: '%RULE_CharClass_1', - bnf: [['CharCodeRange'], ['CharRange'], ['CharCode'], ['RULE_Char']], - fragment: true - }, - { - name: 'RULE_Char', - bnf: [[/\x09/], [/\x0A/], [/\x0D/], [/[\x20-\x5c]/], [/[\x5e-\uD7FF]/], [/[\uE000-\uFFFD]/]] - }, - { - name: 'CharRange', - bnf: [['RULE_Char', '"-"', 'RULE_Char']] - }, - { - name: 'CharCodeRange', - bnf: [['CharCode', '"-"', 'CharCode']] - }, - { - name: 'RULE_WHITESPACE', - bnf: [['%RULE_WHITESPACE_CHAR*'], ['Comment', 'RULE_WHITESPACE*']] - }, - { - name: 'RULE_S', - bnf: [['RULE_WHITESPACE', 'RULE_S*'], ['RULE_EOL', 'RULE_S*']] - }, - { - name: '%RULE_WHITESPACE_CHAR', - bnf: [[/\x09/], [/\x20/]], - fragment: true - }, - { - name: 'Comment', - bnf: [['"/*"', '%RULE_Comment_Body*', '"*/"']] - }, - { - name: '%RULE_Comment_Body', - bnf: [['!"*/"', /[^*]/]], - fragment: true - }, - { - name: 'RULE_EOL', - bnf: [[/\x0D/, /\x0A/], [/\x0A/], [/\x0D/]] - }, - { - name: 'Link', - bnf: [["'['", 'Url', "']'"]] - }, - { - name: 'Url', - bnf: [[/[^\x5D:/?#]/, '"://"', /[^\x5D#]+/, '%Url1?']] - }, - { - name: '%Url1', - bnf: [['"#"', 'NCName']], - fragment: true - } - ]; - BNF.defaultParser = new Parser_1.Parser(BNF.RULES, { debug: false }); - const preDecorationRE = /^(!|&)/; - const decorationRE = /(\?|\+|\*)$/; - const subExpressionRE = /^%/; - function getBNFRule(name, parser) { - if (typeof name == 'string') { - if (preDecorationRE.test(name)) - return ''; - let subexpression = subExpressionRE.test(name); - if (subexpression) { - let decoration = decorationRE.exec(name); - let decorationText = decoration ? decoration[0] + ' ' : ''; - let lonely = isLonelyRule(name, parser); - if (lonely) - return getBNFBody(name, parser) + decorationText; - return '(' + getBNFBody(name, parser) + ')' + decorationText; - } - return name; - } - else { - return name.source - .replace(/\\(?:x|u)([a-zA-Z0-9]+)/g, '#x$1') - .replace(/\[\\(?:x|u)([a-zA-Z0-9]+)-\\(?:x|u)([a-zA-Z0-9]+)\]/g, '[#x$1-#x$2]'); - } - } - /// Returns true if the rule is a string literal or regular expression without a descendant tree - function isLonelyRule(name, parser) { - let rule = Parser_1.findRuleByName(name, parser); - return (rule && - rule.bnf.length == 1 && - rule.bnf[0].length == 1 && - (rule.bnf[0][0] instanceof RegExp || rule.bnf[0][0][0] == '"' || rule.bnf[0][0][0] == "'")); - } - function getBNFChoice(rules, parser) { - return rules.map(x => getBNFRule(x, parser)).join(' '); - } - function getBNFBody(name, parser) { - let rule = Parser_1.findRuleByName(name, parser); - if (rule) - return rule.bnf.map(x => getBNFChoice(x, parser)).join(' | '); - return 'RULE_NOT_FOUND {' + name + '}'; - } - function emit(parser) { - let acumulator = []; - parser.grammarRules.forEach(l => { - if (!/^%/.test(l.name)) { - let recover = l.recover ? ' /* { recoverUntil=' + l.recover + ' } */' : ''; - acumulator.push(l.name + ' ::= ' + getBNFBody(l.name, parser) + recover); - } - }); - return acumulator.join('\n'); - } - BNF.emit = emit; - let subitems = 0; - function restar(total, resta) { - console.log('reberia restar ' + resta + ' a ' + total); - throw new Error('Difference not supported yet'); - } - function convertRegex(txt) { - return new RegExp(txt - .replace(/#x([a-zA-Z0-9]{4})/g, '\\u$1') - .replace(/#x([a-zA-Z0-9]{3})/g, '\\u0$1') - .replace(/#x([a-zA-Z0-9]{2})/g, '\\x$1') - .replace(/#x([a-zA-Z0-9]{1})/g, '\\x0$1')); - } - function getSubItems(tmpRules, seq, parentName) { - let anterior = null; - let bnfSeq = []; - seq.children.forEach((x, i) => { - if (x.type == 'Minus') { - restar(anterior, x); - } - let decoration = seq.children[i + 1]; - decoration = (decoration && decoration.type == 'PrimaryDecoration' && decoration.text) || ''; - let preDecoration = ''; - switch (x.type) { - case 'SubItem': - let name = '%' + (parentName + subitems++); - createRule(tmpRules, x, name); - bnfSeq.push(preDecoration + name + decoration); - break; - case 'NCName': - case 'StringLiteral': - bnfSeq.push(preDecoration + x.text + decoration); - break; - case 'CharCode': - case 'CharClass': - if (decoration || preDecoration) { - let newRule = { - name: '%' + (parentName + subitems++), - bnf: [[convertRegex(x.text)]] - }; - tmpRules.push(newRule); - bnfSeq.push(preDecoration + newRule.name + decoration); - } - else { - bnfSeq.push(convertRegex(x.text)); - } - break; - case 'PrimaryDecoration': - break; - default: - throw new Error(' HOW SHOULD I PARSE THIS? ' + x.type + ' -> ' + JSON.stringify(x.text)); - } - anterior = x; - }); - return bnfSeq; - } - function createRule(tmpRules, token, name) { - let bnf = token.children.filter(x => x.type == 'SequenceOrDifference').map(s => getSubItems(tmpRules, s, name)); - let rule = { - name, - bnf - }; - let recover = null; - bnf.forEach(x => { - recover = recover || x['recover']; - delete x['recover']; - }); - if (name.indexOf('%') == 0) - rule.fragment = true; - if (recover) - rule.recover = recover; - tmpRules.push(rule); - } - function getRules(source, parser = BNF.defaultParser) { - let ast = parser.getAST(source); - if (!ast) - throw new Error('Could not parse ' + source); - if (ast.errors && ast.errors.length) { - throw ast.errors[0]; - } - let tmpRules = []; - ast.children.filter(x => x.type == 'Production').map((x) => { - let name = x.children.filter(x => x.type == 'NCName')[0].text; - createRule(tmpRules, x, name); - }); - return tmpRules; - } - BNF.getRules = getRules; - function Transform(source, subParser = BNF.defaultParser) { - return getRules(source.join(''), subParser); - } - BNF.Transform = Transform; - class Parser extends Parser_1.Parser { - constructor(source, options) { - const subParser = options && options.debugRulesParser === true ? new Parser_1.Parser(BNF.RULES, { debug: true }) : BNF.defaultParser; - super(getRules(source, subParser), options); - } - emitSource() { - return emit(this); - } - } - BNF.Parser = Parser; -})(BNF || (BNF = {})); -exports.default = BNF; - -}); - -var Custom = createCommonjsModule(function (module, exports) { -// https://www.w3.org/TR/REC-xml/#NT-Name -// http://www.bottlecaps.de/rr/ui -Object.defineProperty(exports, "__esModule", { value: true }); -// Grammar ::= Production* -// Production ::= NCName '::=' Choice -// NCName ::= [http://www.w3.org/TR/xml-names/#NT-NCName] -// Choice ::= SequenceOrDifference ( '|' SequenceOrDifference )* -// SequenceOrDifference ::= (Item ( '-' Item | Item* ))? -// Item ::= Primary ( '?' | '*' | '+' )? -// Primary ::= NCName | StringLiteral | CharCode | CharClass | '(' Choice ')' -// StringLiteral ::= '"' [^"]* '"' | "'" [^']* "'" -// CharCode ::= '#x' [0-9a-fA-F]+ -// CharClass ::= '[' '^'? ( RULE_Char | CharCode | CharRange | CharCodeRange )+ ']' -// RULE_Char ::= [http://www.w3.org/TR/xml#NT-RULE_Char] -// CharRange ::= RULE_Char '-' ( RULE_Char - ']' ) -// CharCodeRange ::= CharCode '-' CharCode -// RULE_WHITESPACE ::= RULE_S | Comment -// RULE_S ::= #x9 | #xA | #xD | #x20 -// Comment ::= '/*' ( [^*] | '*'+ [^*/] )* '*'* '*/' - - -var BNF; -(function (BNF) { - BNF.RULES = [ - { - name: 'Grammar', - bnf: [['RULE_S*', 'Attributes?', 'RULE_S*', '%Atomic*', 'EOF']] - }, - { - name: '%Atomic', - bnf: [['Production', 'RULE_S*']], - fragment: true - }, - { - name: 'Production', - bnf: [ - [ - 'NCName', - 'RULE_S*', - '"::="', - 'RULE_WHITESPACE*', - '%Choice', - 'RULE_WHITESPACE*', - 'Attributes?', - 'RULE_EOL+', - 'RULE_S*' - ] - ] - }, - { - name: 'NCName', - bnf: [[/[a-zA-Z][a-zA-Z_0-9]*/]] - }, - { - name: 'Attributes', - bnf: [['"{"', 'Attribute', '%Attributes*', 'RULE_S*', '"}"']] - }, - { - name: '%Attributes', - bnf: [['RULE_S*', '","', 'Attribute']], - fragment: true - }, - { - name: 'Attribute', - bnf: [['RULE_S*', 'NCName', 'RULE_WHITESPACE*', '"="', 'RULE_WHITESPACE*', 'AttributeValue']] - }, - { - name: 'AttributeValue', - bnf: [['NCName'], [/[1-9][0-9]*/]] - }, - { - name: '%Choice', - bnf: [['SequenceOrDifference', '%_Choice_1*']], - fragment: true - }, - { - name: '%_Choice_1', - bnf: [['RULE_S*', '"|"', 'RULE_S*', 'SequenceOrDifference']], - fragment: true - }, - { - name: 'SequenceOrDifference', - bnf: [['%Item', 'RULE_WHITESPACE*', '%_Item_1?']] - }, - { - name: '%_Item_1', - bnf: [['Minus', '%Item'], ['%Item*']], - fragment: true - }, - { - name: 'Minus', - bnf: [['"-"']] - }, - { - name: '%Item', - bnf: [['RULE_WHITESPACE*', 'PrimaryPreDecoration?', '%Primary', 'PrimaryDecoration?']], - fragment: true - }, - { - name: 'PrimaryDecoration', - bnf: [['"?"'], ['"*"'], ['"+"']] - }, - { - name: 'PrimaryPreDecoration', - bnf: [['"&"'], ['"!"'], ['"~"']] - }, - { - name: '%Primary', - bnf: [['NCName'], ['StringLiteral'], ['CharCode'], ['CharClass'], ['SubItem']], - fragment: true - }, - { - name: 'SubItem', - bnf: [['"("', 'RULE_S*', '%Choice', 'RULE_S*', '")"']] - }, - { - name: 'StringLiteral', - bnf: [[`'"'`, /[^"]*/, `'"'`], [`"'"`, /[^']*/, `"'"`]] - }, - { - name: 'CharCode', - bnf: [['"#x"', /[0-9a-zA-Z]+/]] - }, - { - name: 'CharClass', - bnf: [["'['", "'^'?", '%RULE_CharClass_1+', '"]"']] - }, - { - name: '%RULE_CharClass_1', - bnf: [['CharCodeRange'], ['CharRange'], ['CharCode'], ['RULE_Char']], - fragment: true - }, - { - name: 'RULE_Char', - bnf: [[/\x09/], [/\x0A/], [/\x0D/], [/[\x20-\x5c]/], [/[\x5e-\uD7FF]/], [/[\uE000-\uFFFD]/]] - }, - { - name: 'CharRange', - bnf: [['RULE_Char', '"-"', 'RULE_Char']] - }, - { - name: 'CharCodeRange', - bnf: [['CharCode', '"-"', 'CharCode']] - }, - { - name: 'RULE_WHITESPACE', - bnf: [['%RULE_WHITESPACE_CHAR*'], ['Comment', 'RULE_WHITESPACE*']] - }, - { - name: 'RULE_S', - bnf: [['RULE_WHITESPACE', 'RULE_S*'], ['RULE_EOL', 'RULE_S*']] - }, - { - name: '%RULE_WHITESPACE_CHAR', - bnf: [[/\x09/], [/\x20/]], - fragment: true - }, - { - name: 'Comment', - bnf: [['"/*"', '%RULE_Comment_Body*', '"*/"']] - }, - { - name: '%RULE_Comment_Body', - bnf: [[/[^*]/], ['"*"+', /[^/]*/]], - fragment: true - }, - { - name: 'RULE_EOL', - bnf: [[/\x0D/, /\x0A/], [/\x0A/], [/\x0D/]] - }, - { - name: 'Link', - bnf: [["'['", 'Url', "']'"]] - }, - { - name: 'Url', - bnf: [[/[^\x5D:/?#]/, '"://"', /[^\x5D#]+/, '%Url1?']] - }, - { - name: '%Url1', - bnf: [['"#"', 'NCName']], - fragment: true - } - ]; - BNF.defaultParser = new Parser_1.Parser(BNF.RULES, { debug: false }); - const preDecorationRE = /^(!|&)/; - const decorationRE = /(\?|\+|\*)$/; - const subExpressionRE = /^%/; - function getBNFRule(name, parser) { - if (typeof name == 'string') { - let decoration = decorationRE.exec(name); - let preDecoration = preDecorationRE.exec(name); - let preDecorationText = preDecoration ? preDecoration[0] : ''; - let decorationText = decoration ? decoration[0] + ' ' : ''; - let subexpression = subExpressionRE.test(name); - if (subexpression) { - let lonely = isLonelyRule(name, parser); - if (lonely) - return preDecorationText + getBNFBody(name, parser) + decorationText; - return preDecorationText + '(' + getBNFBody(name, parser) + ')' + decorationText; - } - return name.replace(preDecorationRE, preDecorationText); - } - else { - return name.source - .replace(/\\(?:x|u)([a-zA-Z0-9]+)/g, '#x$1') - .replace(/\[\\(?:x|u)([a-zA-Z0-9]+)-\\(?:x|u)([a-zA-Z0-9]+)\]/g, '[#x$1-#x$2]'); - } - } - /// Returns true if the rule is a string literal or regular expression without a descendant tree - function isLonelyRule(name, parser) { - let rule = Parser_1.findRuleByName(name, parser); - return (rule && - rule.bnf.length == 1 && - rule.bnf[0].length == 1 && - (rule.bnf[0][0] instanceof RegExp || rule.bnf[0][0][0] == '"' || rule.bnf[0][0][0] == "'")); - } - function getBNFChoice(rules, parser) { - return rules.map(x => getBNFRule(x, parser)).join(' '); - } - function getBNFBody(name, parser) { - let rule = Parser_1.findRuleByName(name, parser); - if (rule) - return rule.bnf.map(x => getBNFChoice(x, parser)).join(' | '); - return 'RULE_NOT_FOUND {' + name + '}'; - } - function emit(parser) { - let acumulator = []; - parser.grammarRules.forEach(l => { - if (!/^%/.test(l.name)) { - let recover = l.recover ? ' { recoverUntil=' + l.recover + ' }' : ''; - acumulator.push(l.name + ' ::= ' + getBNFBody(l.name, parser) + recover); - } - }); - return acumulator.join('\n'); - } - BNF.emit = emit; - let subitems = 0; - function restar(total, resta) { - console.log('reberia restar ' + resta + ' a ' + total); - throw new Error('Difference not supported yet'); - } - function convertRegex(txt) { - return new RegExp(txt - .replace(/#x([a-zA-Z0-9]{4})/g, '\\u$1') - .replace(/#x([a-zA-Z0-9]{3})/g, '\\u0$1') - .replace(/#x([a-zA-Z0-9]{2})/g, '\\x$1') - .replace(/#x([a-zA-Z0-9]{1})/g, '\\x0$1')); - } - function getSubItems(tmpRules, seq, parentName, parentAttributes) { - let anterior = null; - let bnfSeq = []; - seq.children.forEach((x, i) => { - if (x.type == 'Minus') { - restar(anterior, x); - } - let decoration = seq.children[i + 1]; - decoration = (decoration && decoration.type == 'PrimaryDecoration' && decoration.text) || ''; - let preDecoration = ''; - if (anterior && anterior.type == 'PrimaryPreDecoration') { - preDecoration = anterior.text; - } - let pinned = preDecoration == '~' ? 1 : undefined; - if (pinned) { - preDecoration = ''; - } - switch (x.type) { - case 'SubItem': - let name = '%' + (parentName + subitems++); - createRule(tmpRules, x, name, parentAttributes); - bnfSeq.push(preDecoration + name + decoration); - break; - case 'NCName': - bnfSeq.push(preDecoration + x.text + decoration); - break; - case 'StringLiteral': - if (decoration || preDecoration || !/^['"/()a-zA-Z0-9&_.:=,+*\-\^\\]+$/.test(x.text)) { - bnfSeq.push(preDecoration + x.text + decoration); - } - else { - for (const c of x.text.slice(1, -1)) { - if (parentAttributes && parentAttributes["ignoreCase"] == "true" && /[a-zA-Z]/.test(c)) { - bnfSeq.push(new RegExp("[" + c.toUpperCase() + c.toLowerCase() + "]")); - } - else { - bnfSeq.push(new RegExp(Parser_1.escapeRegExp(c))); - } - } - } - break; - case 'CharCode': - case 'CharClass': - if (decoration || preDecoration) { - let newRule = { - name: '%' + (parentName + subitems++), - bnf: [[convertRegex(x.text)]], - pinned - }; - tmpRules.push(newRule); - bnfSeq.push(preDecoration + newRule.name + decoration); - } - else { - bnfSeq.push(convertRegex(x.text)); - } - break; - case 'PrimaryPreDecoration': - case 'PrimaryDecoration': - break; - default: - throw new Error(' HOW SHOULD I PARSE THIS? ' + x.type + ' -> ' + JSON.stringify(x.text)); - } - anterior = x; - }); - return bnfSeq; - } - function createRule(tmpRules, token, name, parentAttributes = undefined) { - let attrNode = token.children.filter(x => x.type == 'Attributes')[0]; - let attributes = {}; - if (attrNode) { - attrNode.children.forEach(x => { - let name = x.children.filter(x => x.type == 'NCName')[0].text; - if (name in attributes) { - throw new TokenError_1.TokenError('Duplicated attribute ' + name, x); - } - else { - attributes[name] = x.children.filter(x => x.type == 'AttributeValue')[0].text; - } - }); - } - let bnf = token.children.filter(x => x.type == 'SequenceOrDifference').map(s => getSubItems(tmpRules, s, name, parentAttributes ? parentAttributes : attributes)); - let rule = { - name, - bnf - }; - if (name.indexOf('%') == 0) - rule.fragment = true; - if (attributes['recoverUntil']) { - rule.recover = attributes['recoverUntil']; - if (rule.bnf.length > 1) - throw new TokenError_1.TokenError('only one-option productions are suitable for error recovering', token); - } - if ('pin' in attributes) { - let num = parseInt(attributes['pin']); - if (!isNaN(num)) { - rule.pinned = num; - } - if (rule.bnf.length > 1) - throw new TokenError_1.TokenError('only one-option productions are suitable for pinning', token); - } - if ('ws' in attributes) { - rule.implicitWs = attributes['ws'] != 'explicit'; - } - else { - rule.implicitWs = null; - } - rule.fragment = rule.fragment || attributes['fragment'] == 'true'; - rule.simplifyWhenOneChildren = attributes['simplifyWhenOneChildren'] == 'true'; - tmpRules.push(rule); - } - function getRules(source, parser = BNF.defaultParser) { - let ast = parser.getAST(source); - if (!ast) - throw new Error('Could not parse ' + source); - if (ast.errors && ast.errors.length) { - throw ast.errors[0]; - } - let implicitWs = null; - let attrNode = ast.children.filter(x => x.type == 'Attributes')[0]; - let attributes = {}; - if (attrNode) { - attrNode.children.forEach(x => { - let name = x.children.filter(x => x.type == 'NCName')[0].text; - if (name in attributes) { - throw new TokenError_1.TokenError('Duplicated attribute ' + name, x); - } - else { - attributes[name] = x.children.filter(x => x.type == 'AttributeValue')[0].text; - } - }); - } - implicitWs = attributes['ws'] == 'implicit'; - let tmpRules = []; - ast.children.filter(x => x.type == 'Production').map((x) => { - let name = x.children.filter(x => x.type == 'NCName')[0].text; - createRule(tmpRules, x, name); - }); - tmpRules.forEach(rule => { - if (rule.implicitWs === null) - rule.implicitWs = implicitWs; - }); - return tmpRules; - } - BNF.getRules = getRules; - function Transform(source, subParser = BNF.defaultParser) { - return getRules(source.join(''), subParser); - } - BNF.Transform = Transform; - class Parser extends Parser_1.Parser { - constructor(source, options) { - const subParser = options && options.debugRulesParser === true ? new Parser_1.Parser(BNF.RULES, { debug: true }) : BNF.defaultParser; - super(getRules(source, subParser), options); - } - emitSource() { - return emit(this); - } - } - BNF.Parser = Parser; -})(BNF || (BNF = {})); -exports.default = BNF; - -}); - -var Grammars = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); - -Object.defineProperty(exports, "BNF", { enumerable: true, get: function () { return BNF_1.default; } }); - -Object.defineProperty(exports, "W3C", { enumerable: true, get: function () { return W3CEBNF.default; } }); - -Object.defineProperty(exports, "Custom", { enumerable: true, get: function () { return Custom.default; } }); - -}); - -var dist = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); - -Object.defineProperty(exports, "Parser", { enumerable: true, get: function () { return Parser_1.Parser; } }); - -Object.defineProperty(exports, "TokenError", { enumerable: true, get: function () { return TokenError_1.TokenError; } }); -exports.Grammars = Grammars; - -}); - -var calc = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.parseFormula = exports.parseAndApply = exports.Source = exports.Formula = void 0; - - - - - - - - - - - - -/** - * W3C grammar describing a valid formula at the bottom of a table. - * - * The library being used to parse the formula does not suport EBNF, only BNF, - * so W3C syntax was used in order to get access to extended features. - * - * The parser generates a PEG parser, whic is not able to handle ambiguity. The - * order of constructions is significant. - * See https://github.com/lys-lang/node-ebnf/issues/34 - */ -const parserGrammar = ` +function requireCalc () { + if (hasRequiredCalc) return calc; + hasRequiredCalc = 1; + (function (exports) { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.parseFormula = exports.parseAndApply = exports.Source = exports.Formula = void 0; + const neverthrow_1 = neverthrow; + const algebraic_operation_1 = requireAlgebraic_operation(); + const ast_utils_1 = ast_utils; + const conditional_function_1 = requireConditional_function(); + const constant_1 = constant; + const destination_1 = destination; + const display_directive_1 = display_directive; + const range_1 = range; + const reference_1 = reference; + const single_param_function_1 = requireSingle_param_function(); + const ebnf_1 = requireDist(); + const lodash_1 = lodashExports; + /** + * W3C grammar describing a valid formula at the bottom of a table. + * + * The library being used to parse the formula does not suport EBNF, only BNF, + * so W3C syntax was used in order to get access to extended features. + * + * The parser generates a PEG parser, whic is not able to handle ambiguity. The + * order of constructions is significant. + * See https://github.com/lys-lang/node-ebnf/issues/34 + */ + const parserGrammar = ` tblfm_line ::= "<!-- TBLFM: " formula_list " -->" formula_list ::= formula ( "::" formula_list )? formula ::= destination "=" source display_directive? @@ -25160,153 +25349,155 @@ algebraic_operation ::= "(" source " "? algebraic_operator " "? source ")" algebraic_operator ::= "+" | "-" | "*" | "/" display_directive ::= ";" display_directive_option -display_directive_option ::= formatting_directive | datetime_directive +display_directive_option ::= formatting_directive | datetime_directive | hourminute_directive formatting_directive ::= "%." int "f" -datetime_directive ::= "dt" +datetime_directive ::= "dt" +hourminute_directive ::= "hm" float ::= "-"? int "." int real ::= "-"? int int ::= [0-9]+ `; -class Formula { - constructor(ast, table) { - this.merge = (table) => this.destination.merge(this.source, table); - let formatter = new display_directive.DefaultFormatter(); - if (ast.children.length === 3) { - formatter = new display_directive.DisplayDirective(ast.children[2]); - } - const destination$1 = destination.newDestination(ast.children[0], table, formatter); - if (destination$1.isErr()) { - throw destination$1.error; - } - this.destination = destination$1.value; - this.source = new Source(ast.children[1], table); - } + class Formula { + constructor(ast, table) { + this.merge = (table) => this.destination.merge(this.source, table); + let formatter = new display_directive_1.DefaultFormatter(); + if (ast.children.length === 3) { + formatter = new display_directive_1.DisplayDirective(ast.children[2]); + } + const destination = (0, destination_1.newDestination)(ast.children[0], table, formatter); + if (destination.isErr()) { + throw destination.error; + } + this.destination = destination.value; + this.source = new Source(ast.children[1], table); + } + } + exports.Formula = Formula; + class Source { + constructor(ast, table) { + /** + * getValue returns the evaluated value for this source recursively. + */ + this.getValue = (table, currentCell) => this.locationDescriptor.getValue(table, currentCell); + if (ast.type !== 'source' && ast.type !== 'source_without_range') { + throw Error('Invalid AST token type of ' + ast.type); + } + if (ast.children.length !== 1) { + throw Error('Unexpected children length in Source'); + } + const paramChild = ast.children[0]; + const vp = newValueProvider(paramChild, table); + if (vp.isErr()) { + throw vp.error; + } + this.locationDescriptor = vp.value; + } + } + exports.Source = Source; + const newValueProvider = (ast, table) => { + try { + switch (ast.type) { + case 'range': + return (0, neverthrow_1.ok)(new range_1.Range(ast, table)); + case 'source_reference': + const lengthError = (0, ast_utils_1.checkChildLength)(ast, 1); + if (lengthError) { + return (0, neverthrow_1.err)(lengthError); + } + return (0, neverthrow_1.ok)(new reference_1.Reference(ast.children[0], table)); + case 'single_param_function_call': + return (0, neverthrow_1.ok)(new single_param_function_1.SingleParamFunctionCall(ast, table)); + case 'conditional_function_call': + return (0, neverthrow_1.ok)(new conditional_function_1.ConditionalFunctionCall(ast, table)); + case 'algebraic_operation': + return (0, neverthrow_1.ok)(new algebraic_operation_1.AlgebraicOperation(ast, table)); + case 'real': + return (0, neverthrow_1.ok)(new constant_1.Constant(ast, table)); + case 'float': + return (0, neverthrow_1.ok)(new constant_1.Constant(ast, table)); + default: + throw Error('Unrecognized valueProvider type ' + ast.type); + } + } + catch (error) { + return (0, neverthrow_1.err)(error); + } + }; + const parseAndApply = (formulaLines, table) => { + // Parse each formula line, flattening the resulting lists of formulas into a + // single list, but returning an error if any formula fails to parse. + const formulas = formulaLines.reduce((prev, formulaLine) => prev.andThen((currentFormulas) => { + const newFormulas = (0, exports.parseFormula)(formulaLine, table); + if (newFormulas.isErr()) { + return newFormulas; + } + return (0, neverthrow_1.ok)((0, lodash_1.concat)(newFormulas.value, currentFormulas)); + }), (0, neverthrow_1.ok)([])); + // If there is no error, + return formulas.andThen((innerFormulas) => + // for each formula + innerFormulas.reduceRight((prevValue, formula) => + // If the previous formula didn't give an error + prevValue.andThen((prevTable) => + // attempt to apply this formula to the table and return the result + formula.merge(prevTable)), + // Start with the current table state + (0, neverthrow_1.ok)(table))); + }; + exports.parseAndApply = parseAndApply; + /** + * Parse the provided line, returning any found formulas. A single line may + * contain zero or more formulas. + * + * @param line A line of the form `<!-- TBFM: {FORMULA}::{FORMULA} -->` + */ + const parseFormula = (line, table) => { + const parser = new ebnf_1.Grammars.W3C.Parser(parserGrammar); + const ast = parser.getAST(line); + // TODO: Determine how to return errors when a formula-like string + // is not actually a valid formula. + if (!ast) { + return (0, neverthrow_1.err)(new Error(`Formula '${line}' could not be parsed`)); + } + const typeError = (0, ast_utils_1.checkType)(ast, 'tblfm_line'); + if (typeError) { + return (0, neverthrow_1.err)(typeError); + } + const lengthError = (0, ast_utils_1.checkChildLength)(ast, 1); + if (lengthError) { + return (0, neverthrow_1.err)(lengthError); + } + let unparsedFormulas = ast.children[0].children; + const formulas = []; + try { + do { + formulas.push(new Formula(unparsedFormulas[0], table)); + if (unparsedFormulas.length > 1 && + unparsedFormulas[1].type === 'formula_list') { + unparsedFormulas = unparsedFormulas[1].children; + } + else { + unparsedFormulas = []; + } + } while (unparsedFormulas.length > 0); + return (0, neverthrow_1.ok)(formulas); + } + catch (error) { + return (0, neverthrow_1.err)(error); + } + }; + exports.parseFormula = parseFormula; + } (calc)); + return calc; } -exports.Formula = Formula; -class Source { - constructor(ast, table) { - /** - * getValue returns the evaluated value for this source recursively. - */ - this.getValue = (table, currentCell) => this.locationDescriptor.getValue(table, currentCell); - if (ast.type !== 'source' && ast.type !== 'source_without_range') { - throw Error('Invalid AST token type of ' + ast.type); - } - if (ast.children.length !== 1) { - throw Error('Unexpected children length in Source'); - } - const paramChild = ast.children[0]; - const vp = newValueProvider(paramChild, table); - if (vp.isErr()) { - throw vp.error; - } - this.locationDescriptor = vp.value; - } -} -exports.Source = Source; -const newValueProvider = (ast, table) => { - try { - switch (ast.type) { - case 'range': - return neverthrow.ok(new range$1.Range(ast, table)); - case 'source_reference': - const lengthError = ast_utils.checkChildLength(ast, 1); - if (lengthError) { - return neverthrow.err(lengthError); - } - return neverthrow.ok(new reference.Reference(ast.children[0], table)); - case 'single_param_function_call': - return neverthrow.ok(new single_param_function.SingleParamFunctionCall(ast, table)); - case 'conditional_function_call': - return neverthrow.ok(new conditional_function.ConditionalFunctionCall(ast, table)); - case 'algebraic_operation': - return neverthrow.ok(new algebraic_operation.AlgebraicOperation(ast, table)); - case 'real': - return neverthrow.ok(new constant.Constant(ast, table)); - case 'float': - return neverthrow.ok(new constant.Constant(ast, table)); - default: - throw Error('Unrecognized valueProvider type ' + ast.type); - } - } - catch (error) { - return neverthrow.err(error); - } -}; -const parseAndApply = (formulaLines, table) => { - // Parse each formula line, flattening the resulting lists of formulas into a - // single list, but returning an error if any formula fails to parse. - const formulas = formulaLines.reduce((prev, formulaLine) => prev.andThen((currentFormulas) => { - const newFormulas = exports.parseFormula(formulaLine, table); - if (newFormulas.isErr()) { - return newFormulas; - } - return neverthrow.ok(lodash.concat(newFormulas.value, currentFormulas)); - }), neverthrow.ok([])); - // If there is no error, - return formulas.andThen((innerFormulas) => - // for each formula - innerFormulas.reduceRight((prevValue, formula) => - // If the previous formula didn't give an error - prevValue.andThen((prevTable) => - // attempt to apply this formula to the table and return the result - formula.merge(prevTable)), - // Start with the current table state - neverthrow.ok(table))); -}; -exports.parseAndApply = parseAndApply; -/** - * Parse the provided line, returning any found formulas. A single line may - * contain zero or more formulas. - * - * @param line A line of the form `<!-- TBFM: {FORMULA}::{FORMULA} -->` - */ -const parseFormula = (line, table) => { - const parser = new dist.Grammars.W3C.Parser(parserGrammar); - const ast = parser.getAST(line); - // TODO: Determine how to return errors when a formula-like string - // is not actually a valid formula. - if (!ast) { - return neverthrow.err(new Error(`Formula '${line}' could not be parsed`)); - } - const typeError = ast_utils.checkType(ast, 'tblfm_line'); - if (typeError) { - return neverthrow.err(typeError); - } - const lengthError = ast_utils.checkChildLength(ast, 1); - if (lengthError) { - return neverthrow.err(lengthError); - } - let unparsedFormulas = ast.children[0].children; - const formulas = []; - try { - do { - formulas.push(new Formula(unparsedFormulas[0], table)); - if (unparsedFormulas.length > 1 && - unparsedFormulas[1].type === 'formula_list') { - unparsedFormulas = unparsedFormulas[1].children; - } - else { - unparsedFormulas = []; - } - } while (unparsedFormulas.length > 0); - return neverthrow.ok(formulas); - } - catch (error) { - return neverthrow.err(error); - } -}; -exports.parseFormula = parseFormula; -}); - -var table = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Table = void 0; - - - +Object.defineProperty(table, "__esModule", { value: true }); +table.Table = void 0; +const calc_1 = requireCalc(); +const focus_1 = focus; +const point_1 = point; +const range_1 = range$1; /** * A `Table` object represents a table. * @@ -25429,7 +25620,7 @@ class Table { return undefined; } if (pos.column < row.marginLeft.length + 1) { - return new focus.Focus(rowIndex, -1, pos.column); + return new focus_1.Focus(rowIndex, -1, pos.column); } const cellWidths = row.getCells().map((cell) => cell.rawContent.length); let columnPos = row.marginLeft.length + 1; // left margin + a pipe @@ -25441,7 +25632,7 @@ class Table { columnPos += cellWidths[columnIndex] + 1; } const offset = pos.column - columnPos; - return new focus.Focus(rowIndex, columnIndex, offset); + return new focus_1.Focus(rowIndex, columnIndex, offset); } /** * Computes a position in the text editor from a focus. @@ -25458,7 +25649,7 @@ class Table { } const rowPos = focus.row + rowOffset; if (focus.column < 0) { - return new point.Point(rowPos, focus.offset); + return new point_1.Point(rowPos, focus.offset); } const cellWidths = row.getCells().map((cell) => cell.rawContent.length); const maxIndex = Math.min(focus.column, cellWidths.length); @@ -25466,7 +25657,7 @@ class Table { for (let columnIndex = 0; columnIndex < maxIndex; columnIndex++) { columnPos += cellWidths[columnIndex] + 1; } - return new point.Point(rowPos, columnPos + focus.offset); + return new point_1.Point(rowPos, columnPos + focus.offset); } /** * Computes a selection range from a focus. @@ -25495,188 +25686,191 @@ class Table { columnPos += cellWidths[columnIndex] + 1; } columnPos += cell.paddingLeft; - return new range.Range(new point.Point(rowPos, columnPos), new point.Point(rowPos, columnPos + cell.content.length)); + return new range_1.Range(new point_1.Point(rowPos, columnPos), new point_1.Point(rowPos, columnPos + cell.content.length)); } /** * Evaluate the formula, applying the results to this table and returning the * changes as a new table. */ applyFormulas(formulaLines) { - return calc.parseAndApply(formulaLines, this); + return (0, calc_1.parseAndApply)(formulaLines, this); } } -exports.Table = Table; -}); +table.Table = Table; -var parser = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.readTable = exports._marginRegex = exports.marginRegexSrc = exports._readRow = exports._splitCells = void 0; +var parser = {}; +(function (exports) { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.readTable = exports._marginRegex = exports.marginRegexSrc = exports._readRow = exports._splitCells = void 0; + const table_1 = table; + const table_cell_1 = tableCell; + const table_row_1 = tableRow; + /** + * Splits a text into cells. + * + * @private + */ + const _splitCells = (text) => { + const cells = []; + let buf = ''; + let rest = text; + while (rest !== '') { + switch (rest[0]) { + case '`': + // read code span + { + const startMatch = rest.match(/^`*/); + if (startMatch === null) { + // case statement ensures first char is a ` and we cannot get here. + // This just satisfies the compiler. + break; + } + const start = startMatch[0]; + let buf1 = start; + let rest1 = rest.substr(start.length); + let closed = false; + while (rest1 !== '') { + if (rest1[0] === '`') { + const endMatch = rest1.match(/^`*/); + if (endMatch === null) { + // case statement ensures first char is a ` and we cannot get here. + // This just satisfies the compiler. + break; + } + const end = endMatch[0]; + buf1 += end; + rest1 = rest1.substr(end.length); + if (end.length === start.length) { + closed = true; + break; + } + } + else { + buf1 += rest1[0]; + rest1 = rest1.substr(1); + } + } + if (closed) { + buf += buf1; + rest = rest1; + } + else { + buf += '`'; + rest = rest.substr(1); + } + } + break; + case '\\': + // escape next character + if (rest.length >= 2) { + buf += rest.substr(0, 2); + rest = rest.substr(2); + } + else { + buf += '\\'; + rest = rest.substr(1); + } + break; + case '[': + // If we encounter a renamed [[link|Link]], automatically escape the pipe + buf += '['; + rest = rest.substr(1); + if (/\[[^\\|\]]+\|[^|\]]+]]/.test(rest)) { + const idx = rest.indexOf('|'); + buf += rest.slice(0, idx); + buf += '\\|'; + rest = rest.substr(idx + 1); + } + break; + case '|': + // flush buffer + cells.push(buf); + buf = ''; + rest = rest.substr(1); + break; + default: + buf += rest[0]; + rest = rest.substr(1); + } + } + cells.push(buf); + return cells; + }; + exports._splitCells = _splitCells; + /** + * Reads a table row. + * + * @private + * @param text - A text. + * @param [leftMarginRegex=/^\s*$/] - A regular expression object that matches left margin. + */ + const _readRow = (text, leftMarginRegex = /^\s*$/) => { + let cells = (0, exports._splitCells)(text); + let marginLeft; + if (cells.length > 0 && leftMarginRegex.test(cells[0])) { + marginLeft = cells[0]; + cells = cells.slice(1); + } + else { + marginLeft = ''; + } + let marginRight; + if (cells.length > 1 && /^\s*$/.test(cells[cells.length - 1])) { + marginRight = cells[cells.length - 1]; + cells = cells.slice(0, cells.length - 1); + } + else { + marginRight = ''; + } + return new table_row_1.TableRow(cells.map((cell) => new table_cell_1.TableCell(cell)), marginLeft, marginRight); + }; + exports._readRow = _readRow; + /** + * Creates a regex source string of margin character class. + * + * @private + * @param chars - A set of additional margin characters. + * A pipe `|`, a backslash `\`, and a backquote will be ignored. + * @return A regex source string. + */ + const marginRegexSrc = (chars) => { + let cs = ''; + // for (const c chars.values()) { + chars.forEach((c) => { + if (c !== '|' && c !== '\\' && c !== '`') { + cs += `\\u{${c.codePointAt(0).toString(16)}}`; + } + }); + return `[\\s${cs}]*`; + }; + exports.marginRegexSrc = marginRegexSrc; + /** + * Creates a regular expression object that matches margin of tables. + * + * @private + * @param chars - A set of additional margin characters. + * A pipe `|`, a backslash `\`, and a backquote will be ignored. + * @return An regular expression object that matches margin of tables. + */ + const _marginRegex = (chars) => new RegExp(`^${(0, exports.marginRegexSrc)(chars)}$`, 'u'); + exports._marginRegex = _marginRegex; + /** + * Reads a table from lines. + * + * @private + * @param lines - An array of texts, each text represents a row. + * @param options - An object containing options for parsing. + * @returns The table read from the lines. + */ + const readTable = (lines, options) => { + const leftMarginRegex = (0, exports._marginRegex)(options.leftMarginChars); + return new table_1.Table(lines.map((line) => (0, exports._readRow)(line, leftMarginRegex))); + }; + exports.readTable = readTable; +} (parser)); - -/** - * Splits a text into cells. - * - * @private - */ -const _splitCells = (text) => { - const cells = []; - let buf = ''; - let rest = text; - while (rest !== '') { - switch (rest[0]) { - case '`': - // read code span - { - const startMatch = rest.match(/^`*/); - if (startMatch === null) { - // case statement ensures first char is a ` and we cannot get here. - // This just satisfies the compiler. - break; - } - const start = startMatch[0]; - let buf1 = start; - let rest1 = rest.substr(start.length); - let closed = false; - while (rest1 !== '') { - if (rest1[0] === '`') { - const endMatch = rest1.match(/^`*/); - if (endMatch === null) { - // case statement ensures first char is a ` and we cannot get here. - // This just satisfies the compiler. - break; - } - const end = endMatch[0]; - buf1 += end; - rest1 = rest1.substr(end.length); - if (end.length === start.length) { - closed = true; - break; - } - } - else { - buf1 += rest1[0]; - rest1 = rest1.substr(1); - } - } - if (closed) { - buf += buf1; - rest = rest1; - } - else { - buf += '`'; - rest = rest.substr(1); - } - } - break; - case '\\': - // escape next character - if (rest.length >= 2) { - buf += rest.substr(0, 2); - rest = rest.substr(2); - } - else { - buf += '\\'; - rest = rest.substr(1); - } - break; - case '[': - // If we encounter a renamed [[link|Link]], automatically escape the pipe - buf += '['; - rest = rest.substr(1); - if (/\[[^\\|\]]+\|[^|\]]+]]/.test(rest)) { - const idx = rest.indexOf('|'); - buf += rest.slice(0, idx); - buf += '\\|'; - rest = rest.substr(idx + 1); - } - break; - case '|': - // flush buffer - cells.push(buf); - buf = ''; - rest = rest.substr(1); - break; - default: - buf += rest[0]; - rest = rest.substr(1); - } - } - cells.push(buf); - return cells; -}; -exports._splitCells = _splitCells; -/** - * Reads a table row. - * - * @private - * @param text - A text. - * @param [leftMarginRegex=/^\s*$/] - A regular expression object that matches left margin. - */ -const _readRow = (text, leftMarginRegex = /^\s*$/) => { - let cells = exports._splitCells(text); - let marginLeft; - if (cells.length > 0 && leftMarginRegex.test(cells[0])) { - marginLeft = cells[0]; - cells = cells.slice(1); - } - else { - marginLeft = ''; - } - let marginRight; - if (cells.length > 1 && /^\s*$/.test(cells[cells.length - 1])) { - marginRight = cells[cells.length - 1]; - cells = cells.slice(0, cells.length - 1); - } - else { - marginRight = ''; - } - return new tableRow.TableRow(cells.map((cell) => new tableCell.TableCell(cell)), marginLeft, marginRight); -}; -exports._readRow = _readRow; -/** - * Creates a regex source string of margin character class. - * - * @private - * @param chars - A set of additional margin characters. - * A pipe `|`, a backslash `\`, and a backquote will be ignored. - * @return A regex source string. - */ -const marginRegexSrc = (chars) => { - let cs = ''; - // for (const c chars.values()) { - chars.forEach((c) => { - if (c !== '|' && c !== '\\' && c !== '`') { - cs += `\\u{${c.codePointAt(0).toString(16)}}`; - } - }); - return `[\\s${cs}]*`; -}; -exports.marginRegexSrc = marginRegexSrc; -/** - * Creates a regular expression object that matches margin of tables. - * - * @private - * @param chars - A set of additional margin characters. - * A pipe `|`, a backslash `\`, and a backquote will be ignored. - * @return An regular expression object that matches margin of tables. - */ -const _marginRegex = (chars) => new RegExp(`^${exports.marginRegexSrc(chars)}$`, 'u'); -exports._marginRegex = _marginRegex; -/** - * Reads a table from lines. - * - * @private - * @param lines - An array of texts, each text represents a row. - * @param options - An object containing options for parsing. - * @returns The table read from the lines. - */ -const readTable = (lines, options) => { - const leftMarginRegex = exports._marginRegex(options.leftMarginChars); - return new table.Table(lines.map((line) => exports._readRow(line, leftMarginRegex))); -}; -exports.readTable = readTable; -}); +var formatter = {}; /* * Generated by script. DO NOT EDIT! @@ -26378,691 +26572,694 @@ var lib = /*#__PURE__*/Object.freeze({ getEAW: getEAW }); -var meaw_1 = /*@__PURE__*/getAugmentedNamespace(lib); +var require$$4 = /*@__PURE__*/getAugmentedNamespace(lib); -var formatter = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.moveColumn = exports.deleteColumn = exports.insertColumn = exports.moveRow = exports.deleteRow = exports.insertRow = exports.alterAlignment = exports.formatTable = exports.FormatType = exports._weakFormatTable = exports._formatTable = exports._padText = exports._alignText = exports._computeTextWidth = exports.completeTable = exports._extendArray = exports._delimiterText = void 0; +(function (exports) { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.moveColumn = exports.deleteColumn = exports.insertColumn = exports.moveRow = exports.deleteRow = exports.insertRow = exports.alterAlignment = exports.formatTable = exports.FormatType = exports._weakFormatTable = exports._formatTable = exports._padText = exports._alignText = exports._computeTextWidth = exports.completeTable = exports._extendArray = exports._delimiterText = void 0; + const alignment_1 = alignment; + const table_1 = table; + const table_cell_1 = tableCell; + const table_row_1 = tableRow; + const meaw_1 = require$$4; + /** + * Creates a delimiter text. + * + * @private + * @param width - Width of the horizontal bar of delimiter. + * @throws {Error} Unknown alignment. + */ + const _delimiterText = (alignment, width) => { + const bar = '-'.repeat(width); + switch (alignment) { + case alignment_1.Alignment.NONE: + return ` ${bar} `; + case alignment_1.Alignment.LEFT: + return `:${bar} `; + case alignment_1.Alignment.RIGHT: + return ` ${bar}:`; + case alignment_1.Alignment.CENTER: + return `:${bar}:`; + default: + throw new Error('Unknown alignment: ' + alignment); + } + }; + exports._delimiterText = _delimiterText; + /** + * Extends array size. + * + * @private + * @param callback - Callback function to fill newly created cells. + * @returns Extended array. + */ + const _extendArray = (arr, size, callback) => { + const extended = arr.slice(); + for (let i = arr.length; i < size; i++) { + extended.push(callback(i, arr)); + } + return extended; + }; + exports._extendArray = _extendArray; + /** + * Completes a table by adding missing delimiter and cells. + * After completion, all rows in the table have the same width. + * + * @private + * + * @throws {Error} Empty table. + */ + const completeTable = (table, options) => { + const tableHeight = table.getHeight(); + const tableWidth = table.getWidth(); + if (tableHeight === 0) { + throw new Error('Empty table'); + } + const rows = table.getRows(); + const newRows = []; + // header + const headerRow = rows[0]; + const headerCells = headerRow.getCells(); + newRows.push(new table_row_1.TableRow((0, exports._extendArray)(headerCells, tableWidth, (j) => new table_cell_1.TableCell(j === headerCells.length ? headerRow.marginRight : '')), headerRow.marginLeft, headerCells.length < tableWidth ? '' : headerRow.marginRight)); + // delimiter + const delimiterRow = table.getDelimiterRow(); + if (delimiterRow !== undefined) { + const delimiterCells = delimiterRow.getCells(); + newRows.push(new table_row_1.TableRow((0, exports._extendArray)(delimiterCells, tableWidth, (j) => new table_cell_1.TableCell((0, exports._delimiterText)(alignment_1.Alignment.NONE, j === delimiterCells.length + ? Math.max(options.minDelimiterWidth, delimiterRow.marginRight.length - 2) + : options.minDelimiterWidth))), delimiterRow.marginLeft, delimiterCells.length < tableWidth ? '' : delimiterRow.marginRight)); + } + else { + newRows.push(new table_row_1.TableRow((0, exports._extendArray)([], tableWidth, () => new table_cell_1.TableCell((0, exports._delimiterText)(alignment_1.Alignment.NONE, options.minDelimiterWidth))), '', '')); + } + // body + for (let i = delimiterRow !== undefined ? 2 : 1; i < tableHeight; i++) { + const row = rows[i]; + const cells = row.getCells(); + newRows.push(new table_row_1.TableRow((0, exports._extendArray)(cells, tableWidth, (j) => new table_cell_1.TableCell(j === cells.length ? row.marginRight : '')), row.marginLeft, cells.length < tableWidth ? '' : row.marginRight)); + } + return { + table: new table_1.Table(newRows), + delimiterInserted: delimiterRow === undefined, + }; + }; + exports.completeTable = completeTable; + /** + * Calculates the width of a text based on characters' EAW properties. + * + * @private + * + * @returns Calculated width of the text. + */ + const _computeTextWidth = (text, options) => { + const normalized = options.normalize ? text.normalize('NFC') : text; + let w = 0; + for (const char of normalized) { + if (options.wideChars.has(char)) { + w += 2; + continue; + } + if (options.narrowChars.has(char)) { + w += 1; + continue; + } + switch ((0, meaw_1.getEAW)(char)) { + case 'F': + case 'W': + w += 2; + break; + case 'A': + w += options.ambiguousAsWide ? 2 : 1; + break; + default: + w += 1; + } + } + return w; + }; + exports._computeTextWidth = _computeTextWidth; + /** + * Returns a aligned cell content. + * + * @throws {Error} Unknown alignment. + * @throws {Error} Unexpected default alignment. + */ + const _alignText = (text, width, alignment, options) => { + const space = width - (0, exports._computeTextWidth)(text, options); + if (space < 0) { + return text; + } + switch (alignment) { + case alignment_1.Alignment.NONE: + throw new Error('Unexpected default alignment'); + case alignment_1.Alignment.LEFT: + return text + ' '.repeat(space); + case alignment_1.Alignment.RIGHT: + return ' '.repeat(space) + text; + case alignment_1.Alignment.CENTER: + return (' '.repeat(Math.floor(space / 2)) + + text + + ' '.repeat(Math.ceil(space / 2))); + default: + throw new Error('Unknown alignment: ' + alignment); + } + }; + exports._alignText = _alignText; + /** + * Just adds one space paddings to both sides of a text. + * + * @private + */ + const _padText = (text) => ` ${text} `; + exports._padText = _padText; + /** + * Formats a table. + * + * @private + */ + const _formatTable = (table, options) => { + const tableHeight = table.getHeight(); + const tableWidth = table.getWidth(); + if (tableHeight === 0) { + return { + table, + marginLeft: '', + }; + } + const marginLeft = table.getRows()[0].marginLeft; + if (tableWidth === 0) { + const rows = new Array(tableHeight).fill(new table_row_1.TableRow([], marginLeft, '')); + return { + table: new table_1.Table(rows), + marginLeft, + }; + } + // compute column widths + const delimiterRow = table.getDelimiterRow(); + const columnWidths = new Array(tableWidth).fill(0); + if (delimiterRow !== undefined) { + const delimiterRowWidth = delimiterRow.getWidth(); + for (let j = 0; j < delimiterRowWidth; j++) { + columnWidths[j] = options.minDelimiterWidth; + } + } + for (let i = 0; i < tableHeight; i++) { + if (delimiterRow !== undefined && i === 1) { + continue; + } + const row = table.getRows()[i]; + const rowWidth = row.getWidth(); + for (let j = 0; j < rowWidth; j++) { + columnWidths[j] = Math.max(columnWidths[j], (0, exports._computeTextWidth)(row.getCellAt(j).content, options.textWidthOptions)); + } + } + // get column alignments + const alignments = delimiterRow !== undefined + ? (0, exports._extendArray)(delimiterRow.getCells().map((cell) => cell.getAlignment()), tableWidth, + // Safe conversion because DefaultAlignment is a subset of Alignment + () => options.defaultAlignment) + : new Array(tableWidth).fill(options.defaultAlignment); + // format + const rows = []; + // header + const headerRow = table.getRows()[0]; + rows.push(new table_row_1.TableRow(headerRow + .getCells() + .map((cell, j) => new table_cell_1.TableCell((0, exports._padText)((0, exports._alignText)(cell.content, columnWidths[j], options.headerAlignment === alignment_1.HeaderAlignment.FOLLOW + ? alignments[j] === alignment_1.Alignment.NONE + ? options.defaultAlignment + : alignments[j] + : options.headerAlignment, options.textWidthOptions)))), marginLeft, '')); + // delimiter + if (delimiterRow !== undefined) { + rows.push(new table_row_1.TableRow(delimiterRow + .getCells() + .map((cell, j) => new table_cell_1.TableCell((0, exports._delimiterText)(alignments[j], columnWidths[j]))), marginLeft, '')); + } + // body + for (let i = delimiterRow !== undefined ? 2 : 1; i < tableHeight; i++) { + const row = table.getRows()[i]; + rows.push(new table_row_1.TableRow(row + .getCells() + .map((cell, j) => new table_cell_1.TableCell((0, exports._padText)((0, exports._alignText)(cell.content, columnWidths[j], alignments[j] === alignment_1.Alignment.NONE + ? options.defaultAlignment + : alignments[j], options.textWidthOptions)))), marginLeft, '')); + } + return { + table: new table_1.Table(rows), + marginLeft, + }; + }; + exports._formatTable = _formatTable; + /** + * Formats a table weakly. + * Rows are formatted independently to each other, cell contents are just trimmed and not aligned. + * This is useful when using a non-monospaced font or dealing with wide tables. + * + * @private + */ + const _weakFormatTable = (table, options) => { + const tableHeight = table.getHeight(); + const tableWidth = table.getWidth(); + if (tableHeight === 0) { + return { + table, + marginLeft: '', + }; + } + const marginLeft = table.getRows()[0].marginLeft; + if (tableWidth === 0) { + const rows = new Array(tableHeight).fill(new table_row_1.TableRow([], marginLeft, '')); + return { + table: new table_1.Table(rows), + marginLeft, + }; + } + const delimiterRow = table.getDelimiterRow(); + // format + const rows = []; + // header + const headerRow = table.getRows()[0]; + rows.push(new table_row_1.TableRow(headerRow.getCells().map((cell) => new table_cell_1.TableCell((0, exports._padText)(cell.content))), marginLeft, '')); + // delimiter + if (delimiterRow !== undefined) { + rows.push(new table_row_1.TableRow(delimiterRow + .getCells() + .map((cell) => new table_cell_1.TableCell((0, exports._delimiterText)(cell.getAlignment(), options.minDelimiterWidth))), marginLeft, '')); + } + // body + for (let i = delimiterRow !== undefined ? 2 : 1; i < tableHeight; i++) { + const row = table.getRows()[i]; + rows.push(new table_row_1.TableRow(row.getCells().map((cell) => new table_cell_1.TableCell((0, exports._padText)(cell.content))), marginLeft, '')); + } + return { + table: new table_1.Table(rows), + marginLeft, + }; + }; + exports._weakFormatTable = _weakFormatTable; + /** + * Represents table format type. + * + * - `FormatType.NORMAL` - Formats table normally. + * - `FormatType.WEAK` - Formats table weakly, rows are formatted independently to each other, cell + * contents are just trimmed and not aligned. + */ + var FormatType; + (function (FormatType) { + FormatType["NORMAL"] = "normal"; + FormatType["WEAK"] = "weak"; + })(FormatType || (exports.FormatType = FormatType = {})); + /** + * Formats a table. + * + * @private + * + * @throws {Error} Unknown format type. + */ + const formatTable = (table, options) => { + switch (options.formatType) { + case FormatType.NORMAL: + return (0, exports._formatTable)(table, options); + case FormatType.WEAK: + return (0, exports._weakFormatTable)(table, options); + default: + throw new Error('Unknown format type: ' + options.formatType); + } + }; + exports.formatTable = formatTable; + /** + * Alters a column's alignment of a table. + * + * @private + * @param table - A completed non-empty table. + * @param columnIndex - An index of the column. + * @param alignment - A new alignment of the column. + * @param options - An object containing options for completion. + * @returns {Table} An altered table object. + * If the column index is out of range, returns the original table. + */ + const alterAlignment = (table, columnIndex, alignment, options) => { + if (table.getHeight() < 1) { + return table; + } + const delimiterRow = table.getRows()[1]; + if (columnIndex < 0 || delimiterRow.getWidth() - 1 < columnIndex) { + return table; + } + const delimiterCells = delimiterRow.getCells(); + delimiterCells[columnIndex] = new table_cell_1.TableCell((0, exports._delimiterText)(alignment, options.minDelimiterWidth)); + const rows = table.getRows(); + rows[1] = new table_row_1.TableRow(delimiterCells, delimiterRow.marginLeft, delimiterRow.marginRight); + return new table_1.Table(rows); + }; + exports.alterAlignment = alterAlignment; + /** + * Inserts a row to a table. + * The row is always inserted after the header and the delimiter rows, even if the index specifies + * the header or the delimiter. + * + * @private + * @param table - A completed non-empty table. + * @param rowIndex - An row index at which a new row will be inserted. + * @param row - A table row to be inserted. + * @returns An altered table obejct. + */ + const insertRow = (table, rowIndex, row) => { + const rows = table.getRows(); + rows.splice(Math.max(rowIndex, 2), 0, row); + return new table_1.Table(rows); + }; + exports.insertRow = insertRow; + /** + * Deletes a row in a table. + * If the index specifies the header row, the cells are emptied but the row will not be removed. + * If the index specifies the delimiter row, it does nothing. + * + * @private + * @param table - A completed non-empty table. + * @param rowIndex - An index of the row to be deleted. + * @returns An altered table obejct. + */ + const deleteRow = (table, rowIndex) => { + if (rowIndex === 1) { + return table; + } + const rows = table.getRows(); + if (rowIndex === 0) { + const headerRow = rows[0]; + rows[0] = new table_row_1.TableRow(new Array(headerRow.getWidth()).fill(new table_cell_1.TableCell('')), headerRow.marginLeft, headerRow.marginRight); + } + else { + rows.splice(rowIndex, 1); + } + return new table_1.Table(rows); + }; + exports.deleteRow = deleteRow; + /** + * Moves a row at the index to the specified destination. + * + * @private + * @param table - A completed non-empty table. + * @param rowIndex - Index of the row to be moved. + * @param destIndex - Index of the destination. + * @returns An altered table object. + */ + const moveRow = (table, rowIndex, destIndex) => { + if (rowIndex <= 1 || destIndex <= 1 || rowIndex === destIndex) { + return table; + } + const rows = table.getRows(); + const row = rows[rowIndex]; + rows.splice(rowIndex, 1); + rows.splice(destIndex, 0, row); + return new table_1.Table(rows); + }; + exports.moveRow = moveRow; + /** + * Inserts a column to a table. + * + * @private + * @param table - A completed non-empty table. + * @param columnIndex - An column index at which the new column will be inserted. + * @param column - An array of cells. + * @param options - An object containing options for completion. + * @returns An altered table obejct. + */ + const insertColumn = (table, columnIndex, column, options) => { + const rows = table.getRows(); + for (let i = 0; i < rows.length; i++) { + const row = rows[i]; + const cells = rows[i].getCells(); + const cell = i === 1 + ? new table_cell_1.TableCell((0, exports._delimiterText)(alignment_1.Alignment.NONE, options.minDelimiterWidth)) + : column[i > 1 ? i - 1 : i]; + cells.splice(columnIndex, 0, cell); + rows[i] = new table_row_1.TableRow(cells, row.marginLeft, row.marginRight); + } + return new table_1.Table(rows); + }; + exports.insertColumn = insertColumn; + /** + * Deletes a column in a table. + * If there will be no columns after the deletion, the cells are emptied but the column will not be + * removed. + * + * @private + * @param table - A completed non-empty table. + * @param columnIndex - An index of the column to be deleted. + * @param options - An object containing options for completion. + * @returns An altered table object. + */ + const deleteColumn = (table, columnIndex, options) => { + const rows = table.getRows(); + for (let i = 0; i < rows.length; i++) { + const row = rows[i]; + let cells = row.getCells(); + if (cells.length <= 1) { + cells = [ + new table_cell_1.TableCell(i === 1 + ? (0, exports._delimiterText)(alignment_1.Alignment.NONE, options.minDelimiterWidth) + : ''), + ]; + } + else { + cells.splice(columnIndex, 1); + } + rows[i] = new table_row_1.TableRow(cells, row.marginLeft, row.marginRight); + } + return new table_1.Table(rows); + }; + exports.deleteColumn = deleteColumn; + /** + * Moves a column at the index to the specified destination. + * + * @private + * @param table - A completed non-empty table. + * @param columnIndex - Index of the column to be moved. + * @param destIndex - Index of the destination. + * @returns An altered table object. + */ + const moveColumn = (table, columnIndex, destIndex) => { + if (columnIndex === destIndex) { + return table; + } + const rows = table.getRows(); + for (let i = 0; i < rows.length; i++) { + const row = rows[i]; + const cells = row.getCells(); + const cell = cells[columnIndex]; + cells.splice(columnIndex, 1); + cells.splice(destIndex, 0, cell); + rows[i] = new table_row_1.TableRow(cells, row.marginLeft, row.marginRight); + } + return new table_1.Table(rows); + }; + exports.moveColumn = moveColumn; +} (formatter)); +var editScript = {}; +(function (exports) { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.shortestEditScript = exports.applyEditScript = exports._applyCommand = exports.Delete = exports.Insert = void 0; + /** + * The `Insert` class represents an insertion of a line. + * + * @private + */ + class Insert { + /** + * Creats a new `Insert` object. + * + * @param row - Row index, starts from `0`. + * @param line - A string to be inserted at the row. + */ + constructor(row, line) { + this.row = row; + this.line = line; + } + } + exports.Insert = Insert; + /** + * The `Delete` class represents a deletion of a line. + * + * @private + */ + class Delete { + /** + * Creates a new `Delete` object. + * + * @param row - Row index, starts from `0`. + */ + constructor(row) { + this.row = row; + } + } + exports.Delete = Delete; + /** + * Applies a command to the text editor. + * + * @private + * @param textEditor - An interface to the text editor. + * @param command - A command. + * @param rowOffset - Offset to the row index of the command. + */ + const _applyCommand = (textEditor, command, rowOffset) => { + if (command instanceof Insert) { + textEditor.insertLine(rowOffset + command.row, command.line); + } + else if (command instanceof Delete) { + textEditor.deleteLine(rowOffset + command.row); + } + else { + throw new Error('Unknown command'); + } + }; + exports._applyCommand = _applyCommand; + /** + * Apply an edit script (array of commands) to the text editor. + * + * @private + * @param textEditor - An interface to the text editor. + * @param script - An array of commands. + * The commands are applied sequentially in the order of the array. + * @param rowOffset - Offset to the row index of the commands. + */ + const applyEditScript = (textEditor, script, rowOffset) => { + for (const command of script) { + (0, exports._applyCommand)(textEditor, command, rowOffset); + } + }; + exports.applyEditScript = applyEditScript; + /** + * Linked list used to remember edit script. + * + * @private + */ + class IList { + get car() { + throw new Error('Not implemented'); + } + get cdr() { + throw new Error('Not implemented'); + } + isEmpty() { + throw new Error('Not implemented'); + } + unshift(value) { + return new Cons(value, this); + } + toArray() { + const arr = []; + let rest = this; + while (!rest.isEmpty()) { + arr.push(rest.car); + rest = rest.cdr; + } + return arr; + } + } + /** + * @private + */ + class Nil extends IList { + constructor() { + super(); + } + get car() { + throw new Error('Empty list'); + } + get cdr() { + throw new Error('Empty list'); + } + isEmpty() { + return true; + } + } + /** + * @private + */ + class Cons extends IList { + constructor(car, cdr) { + super(); + this._car = car; + this._cdr = cdr; + } + get car() { + return this._car; + } + get cdr() { + return this._cdr; + } + isEmpty() { + return false; + } + } + /** + * Computes the shortest edit script between two arrays of strings. + * + * @private + * @param from - An array of string the edit starts from. + * @param to - An array of string the edit goes to. + * @param [limit=-1] - Upper limit of edit distance to be searched. + * If negative, there is no limit. + * @returns The shortest edit script that turns `from` into `to`; + * `undefined` if no edit script is found in the given range. + */ + const shortestEditScript = (from, to, limit = -1) => { + const fromLen = from.length; + const toLen = to.length; + const maxd = limit >= 0 ? Math.min(limit, fromLen + toLen) : fromLen + toLen; + const mem = new Array(Math.min(maxd, fromLen) + Math.min(maxd, toLen) + 1); + const offset = Math.min(maxd, fromLen); + for (let d = 0; d <= maxd; d++) { + const mink = d <= fromLen ? -d : d - 2 * fromLen; + const maxk = d <= toLen ? d : -d + 2 * toLen; + for (let k = mink; k <= maxk; k += 2) { + let i; + let script; + if (d === 0) { + i = 0; + script = new Nil(); + } + else if (k === -d) { + i = mem[offset + k + 1].i + 1; + script = mem[offset + k + 1].script.unshift(new Delete(i + k)); + } + else if (k === d) { + i = mem[offset + k - 1].i; + script = mem[offset + k - 1].script.unshift(new Insert(i + k - 1, to[i + k - 1])); + } + else { + const vi = mem[offset + k + 1].i + 1; + const hi = mem[offset + k - 1].i; + if (vi > hi) { + i = vi; + script = mem[offset + k + 1].script.unshift(new Delete(i + k)); + } + else { + i = hi; + script = mem[offset + k - 1].script.unshift(new Insert(i + k - 1, to[i + k - 1])); + } + } + while (i < fromLen && i + k < toLen && from[i] === to[i + k]) { + i += 1; + } + if (k === toLen - fromLen && i === fromLen) { + return script.toArray().reverse(); + } + mem[offset + k] = { i, script }; + } + } + return undefined; + }; + exports.shortestEditScript = shortestEditScript; +} (editScript)); +var textEditor = {}; - -/** - * Creates a delimiter text. - * - * @private - * @param width - Width of the horizontal bar of delimiter. - * @throws {Error} Unknown alignment. - */ -const _delimiterText = (alignment$1, width) => { - const bar = '-'.repeat(width); - switch (alignment$1) { - case alignment.Alignment.NONE: - return ` ${bar} `; - case alignment.Alignment.LEFT: - return `:${bar} `; - case alignment.Alignment.RIGHT: - return ` ${bar}:`; - case alignment.Alignment.CENTER: - return `:${bar}:`; - default: - throw new Error('Unknown alignment: ' + alignment$1); - } -}; -exports._delimiterText = _delimiterText; -/** - * Extends array size. - * - * @private - * @param callback - Callback function to fill newly created cells. - * @returns Extended array. - */ -const _extendArray = (arr, size, callback) => { - const extended = arr.slice(); - for (let i = arr.length; i < size; i++) { - extended.push(callback(i, arr)); - } - return extended; -}; -exports._extendArray = _extendArray; -/** - * Completes a table by adding missing delimiter and cells. - * After completion, all rows in the table have the same width. - * - * @private - * - * @throws {Error} Empty table. - */ -const completeTable = (table$1, options) => { - const tableHeight = table$1.getHeight(); - const tableWidth = table$1.getWidth(); - if (tableHeight === 0) { - throw new Error('Empty table'); - } - const rows = table$1.getRows(); - const newRows = []; - // header - const headerRow = rows[0]; - const headerCells = headerRow.getCells(); - newRows.push(new tableRow.TableRow(exports._extendArray(headerCells, tableWidth, (j) => new tableCell.TableCell(j === headerCells.length ? headerRow.marginRight : '')), headerRow.marginLeft, headerCells.length < tableWidth ? '' : headerRow.marginRight)); - // delimiter - const delimiterRow = table$1.getDelimiterRow(); - if (delimiterRow !== undefined) { - const delimiterCells = delimiterRow.getCells(); - newRows.push(new tableRow.TableRow(exports._extendArray(delimiterCells, tableWidth, (j) => new tableCell.TableCell(exports._delimiterText(alignment.Alignment.NONE, j === delimiterCells.length - ? Math.max(options.minDelimiterWidth, delimiterRow.marginRight.length - 2) - : options.minDelimiterWidth))), delimiterRow.marginLeft, delimiterCells.length < tableWidth ? '' : delimiterRow.marginRight)); - } - else { - newRows.push(new tableRow.TableRow(exports._extendArray([], tableWidth, () => new tableCell.TableCell(exports._delimiterText(alignment.Alignment.NONE, options.minDelimiterWidth))), '', '')); - } - // body - for (let i = delimiterRow !== undefined ? 2 : 1; i < tableHeight; i++) { - const row = rows[i]; - const cells = row.getCells(); - newRows.push(new tableRow.TableRow(exports._extendArray(cells, tableWidth, (j) => new tableCell.TableCell(j === cells.length ? row.marginRight : '')), row.marginLeft, cells.length < tableWidth ? '' : row.marginRight)); - } - return { - table: new table.Table(newRows), - delimiterInserted: delimiterRow === undefined, - }; -}; -exports.completeTable = completeTable; -/** - * Calculates the width of a text based on characters' EAW properties. - * - * @private - * - * @returns Calculated width of the text. - */ -const _computeTextWidth = (text, options) => { - const normalized = options.normalize ? text.normalize('NFC') : text; - let w = 0; - for (const char of normalized) { - if (options.wideChars.has(char)) { - w += 2; - continue; - } - if (options.narrowChars.has(char)) { - w += 1; - continue; - } - switch (meaw_1.getEAW(char)) { - case 'F': - case 'W': - w += 2; - break; - case 'A': - w += options.ambiguousAsWide ? 2 : 1; - break; - default: - w += 1; - } - } - return w; -}; -exports._computeTextWidth = _computeTextWidth; -/** - * Returns a aligned cell content. - * - * @throws {Error} Unknown alignment. - * @throws {Error} Unexpected default alignment. - */ -const _alignText = (text, width, alignment$1, options) => { - const space = width - exports._computeTextWidth(text, options); - if (space < 0) { - return text; - } - switch (alignment$1) { - case alignment.Alignment.NONE: - throw new Error('Unexpected default alignment'); - case alignment.Alignment.LEFT: - return text + ' '.repeat(space); - case alignment.Alignment.RIGHT: - return ' '.repeat(space) + text; - case alignment.Alignment.CENTER: - return (' '.repeat(Math.floor(space / 2)) + - text + - ' '.repeat(Math.ceil(space / 2))); - default: - throw new Error('Unknown alignment: ' + alignment$1); - } -}; -exports._alignText = _alignText; -/** - * Just adds one space paddings to both sides of a text. - * - * @private - */ -const _padText = (text) => ` ${text} `; -exports._padText = _padText; -/** - * Formats a table. - * - * @private - */ -const _formatTable = (table$1, options) => { - const tableHeight = table$1.getHeight(); - const tableWidth = table$1.getWidth(); - if (tableHeight === 0) { - return { - table: table$1, - marginLeft: '', - }; - } - const marginLeft = table$1.getRows()[0].marginLeft; - if (tableWidth === 0) { - const rows = new Array(tableHeight).fill(new tableRow.TableRow([], marginLeft, '')); - return { - table: new table.Table(rows), - marginLeft, - }; - } - // compute column widths - const delimiterRow = table$1.getDelimiterRow(); - const columnWidths = new Array(tableWidth).fill(0); - if (delimiterRow !== undefined) { - const delimiterRowWidth = delimiterRow.getWidth(); - for (let j = 0; j < delimiterRowWidth; j++) { - columnWidths[j] = options.minDelimiterWidth; - } - } - for (let i = 0; i < tableHeight; i++) { - if (delimiterRow !== undefined && i === 1) { - continue; - } - const row = table$1.getRows()[i]; - const rowWidth = row.getWidth(); - for (let j = 0; j < rowWidth; j++) { - columnWidths[j] = Math.max(columnWidths[j], exports._computeTextWidth(row.getCellAt(j).content, options.textWidthOptions)); - } - } - // get column alignments - const alignments = delimiterRow !== undefined - ? exports._extendArray(delimiterRow.getCells().map((cell) => cell.getAlignment()), tableWidth, - // Safe conversion because DefaultAlignment is a subset of Alignment - () => options.defaultAlignment) - : new Array(tableWidth).fill(options.defaultAlignment); - // format - const rows = []; - // header - const headerRow = table$1.getRows()[0]; - rows.push(new tableRow.TableRow(headerRow - .getCells() - .map((cell, j) => new tableCell.TableCell(exports._padText(exports._alignText(cell.content, columnWidths[j], options.headerAlignment === alignment.HeaderAlignment.FOLLOW - ? alignments[j] === alignment.Alignment.NONE - ? options.defaultAlignment - : alignments[j] - : options.headerAlignment, options.textWidthOptions)))), marginLeft, '')); - // delimiter - if (delimiterRow !== undefined) { - rows.push(new tableRow.TableRow(delimiterRow - .getCells() - .map((cell, j) => new tableCell.TableCell(exports._delimiterText(alignments[j], columnWidths[j]))), marginLeft, '')); - } - // body - for (let i = delimiterRow !== undefined ? 2 : 1; i < tableHeight; i++) { - const row = table$1.getRows()[i]; - rows.push(new tableRow.TableRow(row - .getCells() - .map((cell, j) => new tableCell.TableCell(exports._padText(exports._alignText(cell.content, columnWidths[j], alignments[j] === alignment.Alignment.NONE - ? options.defaultAlignment - : alignments[j], options.textWidthOptions)))), marginLeft, '')); - } - return { - table: new table.Table(rows), - marginLeft, - }; -}; -exports._formatTable = _formatTable; -/** - * Formats a table weakly. - * Rows are formatted independently to each other, cell contents are just trimmed and not aligned. - * This is useful when using a non-monospaced font or dealing with wide tables. - * - * @private - */ -const _weakFormatTable = (table$1, options) => { - const tableHeight = table$1.getHeight(); - const tableWidth = table$1.getWidth(); - if (tableHeight === 0) { - return { - table: table$1, - marginLeft: '', - }; - } - const marginLeft = table$1.getRows()[0].marginLeft; - if (tableWidth === 0) { - const rows = new Array(tableHeight).fill(new tableRow.TableRow([], marginLeft, '')); - return { - table: new table.Table(rows), - marginLeft, - }; - } - const delimiterRow = table$1.getDelimiterRow(); - // format - const rows = []; - // header - const headerRow = table$1.getRows()[0]; - rows.push(new tableRow.TableRow(headerRow.getCells().map((cell) => new tableCell.TableCell(exports._padText(cell.content))), marginLeft, '')); - // delimiter - if (delimiterRow !== undefined) { - rows.push(new tableRow.TableRow(delimiterRow - .getCells() - .map((cell) => new tableCell.TableCell(exports._delimiterText(cell.getAlignment(), options.minDelimiterWidth))), marginLeft, '')); - } - // body - for (let i = delimiterRow !== undefined ? 2 : 1; i < tableHeight; i++) { - const row = table$1.getRows()[i]; - rows.push(new tableRow.TableRow(row.getCells().map((cell) => new tableCell.TableCell(exports._padText(cell.content))), marginLeft, '')); - } - return { - table: new table.Table(rows), - marginLeft, - }; -}; -exports._weakFormatTable = _weakFormatTable; -/** - * Represents table format type. - * - * - `FormatType.NORMAL` - Formats table normally. - * - `FormatType.WEAK` - Formats table weakly, rows are formatted independently to each other, cell - * contents are just trimmed and not aligned. - */ -var FormatType; -(function (FormatType) { - FormatType["NORMAL"] = "normal"; - FormatType["WEAK"] = "weak"; -})(FormatType = exports.FormatType || (exports.FormatType = {})); -/** - * Formats a table. - * - * @private - * - * @throws {Error} Unknown format type. - */ -const formatTable = (table, options) => { - switch (options.formatType) { - case FormatType.NORMAL: - return exports._formatTable(table, options); - case FormatType.WEAK: - return exports._weakFormatTable(table, options); - default: - throw new Error('Unknown format type: ' + options.formatType); - } -}; -exports.formatTable = formatTable; -/** - * Alters a column's alignment of a table. - * - * @private - * @param table - A completed non-empty table. - * @param columnIndex - An index of the column. - * @param alignment - A new alignment of the column. - * @param options - An object containing options for completion. - * @returns {Table} An altered table object. - * If the column index is out of range, returns the original table. - */ -const alterAlignment = (table$1, columnIndex, alignment, options) => { - if (table$1.getHeight() < 1) { - return table$1; - } - const delimiterRow = table$1.getRows()[1]; - if (columnIndex < 0 || delimiterRow.getWidth() - 1 < columnIndex) { - return table$1; - } - const delimiterCells = delimiterRow.getCells(); - delimiterCells[columnIndex] = new tableCell.TableCell(exports._delimiterText(alignment, options.minDelimiterWidth)); - const rows = table$1.getRows(); - rows[1] = new tableRow.TableRow(delimiterCells, delimiterRow.marginLeft, delimiterRow.marginRight); - return new table.Table(rows); -}; -exports.alterAlignment = alterAlignment; -/** - * Inserts a row to a table. - * The row is always inserted after the header and the delimiter rows, even if the index specifies - * the header or the delimiter. - * - * @private - * @param table - A completed non-empty table. - * @param rowIndex - An row index at which a new row will be inserted. - * @param row - A table row to be inserted. - * @returns An altered table obejct. - */ -const insertRow = (table$1, rowIndex, row) => { - const rows = table$1.getRows(); - rows.splice(Math.max(rowIndex, 2), 0, row); - return new table.Table(rows); -}; -exports.insertRow = insertRow; -/** - * Deletes a row in a table. - * If the index specifies the header row, the cells are emptied but the row will not be removed. - * If the index specifies the delimiter row, it does nothing. - * - * @private - * @param table - A completed non-empty table. - * @param rowIndex - An index of the row to be deleted. - * @returns An altered table obejct. - */ -const deleteRow = (table$1, rowIndex) => { - if (rowIndex === 1) { - return table$1; - } - const rows = table$1.getRows(); - if (rowIndex === 0) { - const headerRow = rows[0]; - rows[0] = new tableRow.TableRow(new Array(headerRow.getWidth()).fill(new tableCell.TableCell('')), headerRow.marginLeft, headerRow.marginRight); - } - else { - rows.splice(rowIndex, 1); - } - return new table.Table(rows); -}; -exports.deleteRow = deleteRow; -/** - * Moves a row at the index to the specified destination. - * - * @private - * @param table - A completed non-empty table. - * @param rowIndex - Index of the row to be moved. - * @param destIndex - Index of the destination. - * @returns An altered table object. - */ -const moveRow = (table$1, rowIndex, destIndex) => { - if (rowIndex <= 1 || destIndex <= 1 || rowIndex === destIndex) { - return table$1; - } - const rows = table$1.getRows(); - const row = rows[rowIndex]; - rows.splice(rowIndex, 1); - rows.splice(destIndex, 0, row); - return new table.Table(rows); -}; -exports.moveRow = moveRow; -/** - * Inserts a column to a table. - * - * @private - * @param table - A completed non-empty table. - * @param columnIndex - An column index at which the new column will be inserted. - * @param column - An array of cells. - * @param options - An object containing options for completion. - * @returns An altered table obejct. - */ -const insertColumn = (table$1, columnIndex, column, options) => { - const rows = table$1.getRows(); - for (let i = 0; i < rows.length; i++) { - const row = rows[i]; - const cells = rows[i].getCells(); - const cell = i === 1 - ? new tableCell.TableCell(exports._delimiterText(alignment.Alignment.NONE, options.minDelimiterWidth)) - : column[i > 1 ? i - 1 : i]; - cells.splice(columnIndex, 0, cell); - rows[i] = new tableRow.TableRow(cells, row.marginLeft, row.marginRight); - } - return new table.Table(rows); -}; -exports.insertColumn = insertColumn; -/** - * Deletes a column in a table. - * If there will be no columns after the deletion, the cells are emptied but the column will not be - * removed. - * - * @private - * @param table - A completed non-empty table. - * @param columnIndex - An index of the column to be deleted. - * @param options - An object containing options for completion. - * @returns An altered table object. - */ -const deleteColumn = (table$1, columnIndex, options) => { - const rows = table$1.getRows(); - for (let i = 0; i < rows.length; i++) { - const row = rows[i]; - let cells = row.getCells(); - if (cells.length <= 1) { - cells = [ - new tableCell.TableCell(i === 1 - ? exports._delimiterText(alignment.Alignment.NONE, options.minDelimiterWidth) - : ''), - ]; - } - else { - cells.splice(columnIndex, 1); - } - rows[i] = new tableRow.TableRow(cells, row.marginLeft, row.marginRight); - } - return new table.Table(rows); -}; -exports.deleteColumn = deleteColumn; -/** - * Moves a column at the index to the specified destination. - * - * @private - * @param table - A completed non-empty table. - * @param columnIndex - Index of the column to be moved. - * @param destIndex - Index of the destination. - * @returns An altered table object. - */ -const moveColumn = (table$1, columnIndex, destIndex) => { - if (columnIndex === destIndex) { - return table$1; - } - const rows = table$1.getRows(); - for (let i = 0; i < rows.length; i++) { - const row = rows[i]; - const cells = row.getCells(); - const cell = cells[columnIndex]; - cells.splice(columnIndex, 1); - cells.splice(destIndex, 0, cell); - rows[i] = new tableRow.TableRow(cells, row.marginLeft, row.marginRight); - } - return new table.Table(rows); -}; -exports.moveColumn = moveColumn; -}); - -var editScript = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.shortestEditScript = exports.applyEditScript = exports._applyCommand = exports.Delete = exports.Insert = void 0; -/** - * The `Insert` class represents an insertion of a line. - * - * @private - */ -class Insert { - /** - * Creats a new `Insert` object. - * - * @param row - Row index, starts from `0`. - * @param line - A string to be inserted at the row. - */ - constructor(row, line) { - this.row = row; - this.line = line; - } -} -exports.Insert = Insert; -/** - * The `Delete` class represents a deletion of a line. - * - * @private - */ -class Delete { - /** - * Creates a new `Delete` object. - * - * @param row - Row index, starts from `0`. - */ - constructor(row) { - this.row = row; - } -} -exports.Delete = Delete; -/** - * Applies a command to the text editor. - * - * @private - * @param textEditor - An interface to the text editor. - * @param command - A command. - * @param rowOffset - Offset to the row index of the command. - */ -const _applyCommand = (textEditor, command, rowOffset) => { - if (command instanceof Insert) { - textEditor.insertLine(rowOffset + command.row, command.line); - } - else if (command instanceof Delete) { - textEditor.deleteLine(rowOffset + command.row); - } - else { - throw new Error('Unknown command'); - } -}; -exports._applyCommand = _applyCommand; -/** - * Apply an edit script (array of commands) to the text editor. - * - * @private - * @param textEditor - An interface to the text editor. - * @param script - An array of commands. - * The commands are applied sequentially in the order of the array. - * @param rowOffset - Offset to the row index of the commands. - */ -const applyEditScript = (textEditor, script, rowOffset) => { - for (const command of script) { - exports._applyCommand(textEditor, command, rowOffset); - } -}; -exports.applyEditScript = applyEditScript; -/** - * Linked list used to remember edit script. - * - * @private - */ -class IList { - get car() { - throw new Error('Not implemented'); - } - get cdr() { - throw new Error('Not implemented'); - } - isEmpty() { - throw new Error('Not implemented'); - } - unshift(value) { - return new Cons(value, this); - } - toArray() { - const arr = []; - let rest = this; - while (!rest.isEmpty()) { - arr.push(rest.car); - rest = rest.cdr; - } - return arr; - } -} -/** - * @private - */ -class Nil extends IList { - constructor() { - super(); - } - get car() { - throw new Error('Empty list'); - } - get cdr() { - throw new Error('Empty list'); - } - isEmpty() { - return true; - } -} -/** - * @private - */ -class Cons extends IList { - constructor(car, cdr) { - super(); - this._car = car; - this._cdr = cdr; - } - get car() { - return this._car; - } - get cdr() { - return this._cdr; - } - isEmpty() { - return false; - } -} -/** - * Computes the shortest edit script between two arrays of strings. - * - * @private - * @param from - An array of string the edit starts from. - * @param to - An array of string the edit goes to. - * @param [limit=-1] - Upper limit of edit distance to be searched. - * If negative, there is no limit. - * @returns The shortest edit script that turns `from` into `to`; - * `undefined` if no edit script is found in the given range. - */ -const shortestEditScript = (from, to, limit = -1) => { - const fromLen = from.length; - const toLen = to.length; - const maxd = limit >= 0 ? Math.min(limit, fromLen + toLen) : fromLen + toLen; - const mem = new Array(Math.min(maxd, fromLen) + Math.min(maxd, toLen) + 1); - const offset = Math.min(maxd, fromLen); - for (let d = 0; d <= maxd; d++) { - const mink = d <= fromLen ? -d : d - 2 * fromLen; - const maxk = d <= toLen ? d : -d + 2 * toLen; - for (let k = mink; k <= maxk; k += 2) { - let i; - let script; - if (d === 0) { - i = 0; - script = new Nil(); - } - else if (k === -d) { - i = mem[offset + k + 1].i + 1; - script = mem[offset + k + 1].script.unshift(new Delete(i + k)); - } - else if (k === d) { - i = mem[offset + k - 1].i; - script = mem[offset + k - 1].script.unshift(new Insert(i + k - 1, to[i + k - 1])); - } - else { - const vi = mem[offset + k + 1].i + 1; - const hi = mem[offset + k - 1].i; - if (vi > hi) { - i = vi; - script = mem[offset + k + 1].script.unshift(new Delete(i + k)); - } - else { - i = hi; - script = mem[offset + k - 1].script.unshift(new Insert(i + k - 1, to[i + k - 1])); - } - } - while (i < fromLen && i + k < toLen && from[i] === to[i + k]) { - i += 1; - } - if (k === toLen - fromLen && i === fromLen) { - return script.toArray().reverse(); - } - mem[offset + k] = { i, script }; - } - } - return undefined; -}; -exports.shortestEditScript = shortestEditScript; -}); - -var textEditor = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ITextEditor = void 0; +Object.defineProperty(textEditor, "__esModule", { value: true }); +textEditor.ITextEditor = void 0; /** * The `ITextEditor` represents an interface to a text editor. * @@ -27155,1004 +27352,1007 @@ class ITextEditor { throw new Error('Not implemented: transact'); } } -exports.ITextEditor = ITextEditor; -}); +textEditor.ITextEditor = ITextEditor; -var options = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.defaultOptions = exports.optionsWithDefaults = void 0; +var options = {}; +(function (exports) { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.defaultOptions = exports.optionsWithDefaults = void 0; + const alignment_1 = alignment; + const formatter_1 = formatter; + const DEFAULT_TEXT_WIDTH_OPTIONS = { + normalize: true, + wideChars: new Set(), + narrowChars: new Set(), + ambiguousAsWide: false, + }; + const DEFAULT_OPTIONS = { + leftMarginChars: new Set(), + formatType: formatter_1.FormatType.NORMAL, + minDelimiterWidth: 3, + defaultAlignment: alignment_1.DefaultAlignment.LEFT, + headerAlignment: alignment_1.HeaderAlignment.FOLLOW, + smartCursor: false, + }; + /** + * Create an Options object for the formatter. + * The default values are used for options that are not specified. + * + * The available options and default values are listed below. + * + * | property name | type | description | default value | + * | ------------------- | --------------------------------- | ------------------------------------------------------- | ------------------------ | + * | `leftMarginChars` | {@link Set}<{@link string}> | A set of additional left margin characters. | `new Set()` | + * | `formatType` | {@link FormatType} | Format type, normal or weak. | `FormatType.NORMAL` | + * | `minDelimiterWidth` | {@link number} | Minimum width of delimiters. | `3` | + * | `defaultAlignment` | {@link DefaultAlignment} | Default alignment of columns. | `DefaultAlignment.LEFT` | + * | `headerAlignment` | {@link HeaderAlignment} | Alignment of header cells. | `HeaderAlignment.FOLLOW` | + * | `textWidthOptions` | {@link TextWidthOptions} | An object containing options for computing text widths. | | + * | `smartCursor` | {@link boolean} | Enables "Smart Cursor" feature. | `false` | + * + * The available options for `textWidthOptions` are the following ones. + * + * | property name | type | description | default value | + * | ----------------- | --------------------------------- | ----------------------------------------------------- | ------------- | + * | `normalize` | {@link boolean} | Normalizes texts before computing text widths. | `true` | + * | `wideChars` | {@link Set}<{@link string}> | A set of characters that should be treated as wide. | `new Set()` | + * | `narrowChars` | {@link Set}<{@link string}> | A set of characters that should be treated as narrow. | `new Set()` | + * | `ambiguousAsWide` | {@link boolean} | Treats East Asian Ambiguous characters as wide. | `false` | + * + */ + const optionsWithDefaults = (options) => (Object.assign(Object.assign(Object.assign({}, DEFAULT_OPTIONS), options), { textWidthOptions: options.textWidthOptions + ? Object.assign(Object.assign({}, DEFAULT_TEXT_WIDTH_OPTIONS), options.textWidthOptions) : DEFAULT_TEXT_WIDTH_OPTIONS })); + exports.optionsWithDefaults = optionsWithDefaults; + exports.defaultOptions = (0, exports.optionsWithDefaults)({}); +} (options)); -const DEFAULT_TEXT_WIDTH_OPTIONS = { - normalize: true, - wideChars: new Set(), - narrowChars: new Set(), - ambiguousAsWide: false, -}; -const DEFAULT_OPTIONS = { - leftMarginChars: new Set(), - formatType: formatter.FormatType.NORMAL, - minDelimiterWidth: 3, - defaultAlignment: alignment.DefaultAlignment.LEFT, - headerAlignment: alignment.HeaderAlignment.FOLLOW, - smartCursor: false, -}; -/** - * Create an Options object for the formatter. - * The default values are used for options that are not specified. - * - * The available options and default values are listed below. - * - * | property name | type | description | default value | - * | ------------------- | --------------------------------- | ------------------------------------------------------- | ------------------------ | - * | `leftMarginChars` | {@link Set}<{@link string}> | A set of additional left margin characters. | `new Set()` | - * | `formatType` | {@link FormatType} | Format type, normal or weak. | `FormatType.NORMAL` | - * | `minDelimiterWidth` | {@link number} | Minimum width of delimiters. | `3` | - * | `defaultAlignment` | {@link DefaultAlignment} | Default alignment of columns. | `DefaultAlignment.LEFT` | - * | `headerAlignment` | {@link HeaderAlignment} | Alignment of header cells. | `HeaderAlignment.FOLLOW` | - * | `textWidthOptions` | {@link TextWidthOptions} | An object containing options for computing text widths. | | - * | `smartCursor` | {@link boolean} | Enables "Smart Cursor" feature. | `false` | - * - * The available options for `textWidthOptions` are the following ones. - * - * | property name | type | description | default value | - * | ----------------- | --------------------------------- | ----------------------------------------------------- | ------------- | - * | `normalize` | {@link boolean} | Normalizes texts before computing text widths. | `true` | - * | `wideChars` | {@link Set}<{@link string}> | A set of characters that should be treated as wide. | `new Set()` | - * | `narrowChars` | {@link Set}<{@link string}> | A set of characters that should be treated as narrow. | `new Set()` | - * | `ambiguousAsWide` | {@link boolean} | Treats East Asian Ambiguous characters as wide. | `false` | - * - */ -const optionsWithDefaults = (options) => (Object.assign(Object.assign(Object.assign({}, DEFAULT_OPTIONS), options), { textWidthOptions: options.textWidthOptions - ? Object.assign(Object.assign({}, DEFAULT_TEXT_WIDTH_OPTIONS), options.textWidthOptions) : DEFAULT_TEXT_WIDTH_OPTIONS })); -exports.optionsWithDefaults = optionsWithDefaults; -exports.defaultOptions = exports.optionsWithDefaults({}); -}); +var tableEditor = {}; -var tableEditor = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.TableEditor = exports._computeNewOffset = exports._createIsTableFormulaRegex = exports._createIsTableRowRegex = exports.SortOrder = void 0; +(function (exports) { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.TableEditor = exports._computeNewOffset = exports._createIsTableFormulaRegex = exports._createIsTableRowRegex = exports.SortOrder = void 0; + const edit_script_1 = editScript; + const focus_1 = focus; + const formatter_1 = formatter; + const parser_1 = parser; + const point_1 = point; + const range_1 = range$1; + const table_1 = table; + const table_cell_1 = tableCell; + const table_row_1 = tableRow; + var SortOrder; + (function (SortOrder) { + SortOrder["Ascending"] = "ascending"; + SortOrder["Descending"] = "descending"; + })(SortOrder || (exports.SortOrder = SortOrder = {})); + /** + * Creates a regular expression object that matches a table row. + * + * @param leftMarginChars - A set of additional left margin characters. + * A pipe `|`, a backslash `\`, and a backquote will be ignored. + * @returns A regular expression object that matches a table row. + */ + const _createIsTableRowRegex = (leftMarginChars) => new RegExp(`^${(0, parser_1.marginRegexSrc)(leftMarginChars)}\\|`, 'u'); + exports._createIsTableRowRegex = _createIsTableRowRegex; + const _createIsTableFormulaRegex = (leftMarginChars) => new RegExp(`^${(0, parser_1.marginRegexSrc)(leftMarginChars)}<!-- ?.+-->$`, 'u'); + exports._createIsTableFormulaRegex = _createIsTableFormulaRegex; + /** + * Computes new focus offset from information of completed and formatted tables. + * + * @private + * @param focus - A focus. + * @param table - A completed but not formatted table with original cell contents. + * @param formatted - Information of the formatted table. + * @param moved - Indicates whether the focus position is moved by a command or not. + */ + const _computeNewOffset = (focus, table, formatted, moved) => { + if (moved) { + const formattedFocusedCell = formatted.table.getFocusedCell(focus); + if (formattedFocusedCell !== undefined) { + return formattedFocusedCell.computeRawOffset(0); + } + return focus.column < 0 ? formatted.marginLeft.length : 0; + } + const focusedCell = table.getFocusedCell(focus); + const formattedFocusedCell = formatted.table.getFocusedCell(focus); + if (focusedCell !== undefined && formattedFocusedCell !== undefined) { + const contentOffset = Math.min(focusedCell.computeContentOffset(focus.offset), formattedFocusedCell.content.length); + return formattedFocusedCell.computeRawOffset(contentOffset); + } + return focus.column < 0 ? formatted.marginLeft.length : 0; + }; + exports._computeNewOffset = _computeNewOffset; + /** + * The `TableEditor` class is at the center of the markdown-table-editor. + * When a command is executed, it reads a table from the text editor, does some operation on the + * table, and then apply the result to the text editor. + * + * To use this class, the text editor (or an interface to it) must implement {@link ITextEditor}. + */ + class TableEditor { + /** + * Creates a new table editor instance. + * + * @param textEditor - A text editor interface. + */ + constructor(textEditor) { + this._textEditor = textEditor; + // smart cursor + this._scActive = false; + } + /** + * Resets the smart cursor. + * Call this method when the table editor is inactivated. + */ + resetSmartCursor() { + this._scActive = false; + } + /** + * Checks if the cursor is in a table row. Returns false if the cursor is in a + * table formula row (see cursorIsInTableFormula). + * This is useful to check whether the table editor should be activated or not. + * + * @returns `true` if the cursor is in a table row. + */ + cursorIsInTable(options) { + const re = (0, exports._createIsTableRowRegex)(options.leftMarginChars); + const pos = this._textEditor.getCursorPosition(); + return (this._textEditor.acceptsTableEdit(pos.row) && + re.test(this._textEditor.getLine(pos.row))); + } + /** + * Checks if the cursor is in a formula row below a table. + * This is useful to check whether the table editor should be activated or not. + * + * @returns `true` if the cursor is in a formula row. + */ + cursorIsInTableFormula(options) { + const formulaRe = (0, exports._createIsTableFormulaRegex)(options.leftMarginChars); + const pos = this._textEditor.getCursorPosition(); + return (this._textEditor.acceptsTableEdit(pos.row) && + formulaRe.test(this._textEditor.getLine(pos.row))); + } + /** + * Finds a table under the current cursor position. + * + * @returns undefined if there is no table or the determined focus is invalid. + */ + _findTable(options) { + const re = (0, exports._createIsTableRowRegex)(options.leftMarginChars); + const formulaRe = (0, exports._createIsTableFormulaRegex)(options.leftMarginChars); + let pos = this._textEditor.getCursorPosition(); + const lastRow = this._textEditor.getLastRow(); + const lines = []; + const formulaLines = []; + let startRow = pos.row; + let endRow = pos.row; // endRow is last line before fomulas + // if the cursor is on formula line, work up until we find the last row of the table + { + let line = this._textEditor.getLine(pos.row); + while (formulaRe.test(line) && pos.row >= 0) { + pos = new point_1.Point(pos.row - 1, pos.column); + endRow--; + line = this._textEditor.getLine(pos.row); + } + } + // current line + { + const line = this._textEditor.getLine(pos.row); + if (!this._textEditor.acceptsTableEdit(pos.row) || !re.test(line)) { + return undefined; + } + lines.push(line); + } + // previous lines + for (let row = pos.row - 1; row >= 0; row--) { + const line = this._textEditor.getLine(row); + if (!this._textEditor.acceptsTableEdit(row) || !re.test(line)) { + break; + } + lines.unshift(line); + startRow = row; + } + // next lines + for (let row = pos.row + 1; row <= lastRow; row++) { + const line = this._textEditor.getLine(row); + if (!this._textEditor.acceptsTableEdit(row) || !re.test(line)) { + break; + } + lines.push(line); + endRow = row; + } + // formula lines + for (let row = endRow + 1; row <= lastRow; row++) { + const line = this._textEditor.getLine(row); + if (!this._textEditor.acceptsTableEdit(row) || !formulaRe.test(line)) { + break; + } + formulaLines.push(line); + } + const range = new range_1.Range(new point_1.Point(startRow, 0), new point_1.Point(endRow, lines[lines.length - 1].length)); + const table = (0, parser_1.readTable)(lines, options); + const focus = table.focusOfPosition(pos, startRow); + if (focus === undefined) { + // TODO: Validate this for correctness + return undefined; + } + return { range, lines, formulaLines, table, focus }; + } + /** + * Finds a table and does an operation with it. + * + * @private + * @param func - A function that does some operation on table information obtained by + * {@link TableEditor#_findTable}. + */ + _withTable(options, func) { + const info = this._findTable(options); + if (info === undefined) { + return; + } + return func(info); + } + /** + * Updates lines in a given range in the text editor. + * + * @private + * @param startRow - Start row index, starts from `0`. + * @param endRow - End row index. + * Lines from `startRow` to `endRow - 1` are replaced. + * @param newLines - New lines. + * @param [oldLines=undefined] - Old lines to be replaced. + */ + _updateLines(startRow, endRow, newLines, oldLines = undefined) { + if (oldLines !== undefined) { + // apply the shortest edit script + // if a table is edited in a normal manner, the edit distance never exceeds 3 + const ses = (0, edit_script_1.shortestEditScript)(oldLines, newLines, 3); + if (ses !== undefined) { + (0, edit_script_1.applyEditScript)(this._textEditor, ses, startRow); + return; + } + } + this._textEditor.replaceLines(startRow, endRow, newLines); + } + /** + * Moves the cursor position to the focused cell, + * + * @private + * @param startRow - Row index where the table starts in the text editor. + * @param table - A table. + * @param focus - A focus to which the cursor will be moved. + */ + _moveToFocus(startRow, table, focus) { + const pos = table.positionOfFocus(focus, startRow); + if (pos !== undefined) { + this._textEditor.setCursorPosition(pos); + } + } + /** + * Selects the focused cell. + * If the cell has no content to be selected, then just moves the cursor position. + * + * @private + * @param startRow - Row index where the table starts in the text editor. + * @param table - A table. + * @param focus - A focus to be selected. + */ + _selectFocus(startRow, table, focus) { + const range = table.selectionRangeOfFocus(focus, startRow); + if (range !== undefined) { + this._textEditor.setSelectionRange(range); + } + else { + this._moveToFocus(startRow, table, focus); + } + } + /** + * Formats the table under the cursor. + */ + format(options) { + this.withCompletedTable(options, ({ range, lines, table, focus }) => { + const newFocus = focus; + // apply + this._textEditor.transact(() => { + this._updateLines(range.start.row, range.end.row + 1, table.toLines(), lines); + this._moveToFocus(range.start.row, table, newFocus); + }); + }); + } + /** + * Formats and escapes from the table. + */ + escape(options) { + this._withTable(options, ({ range, lines, table, focus }) => { + // complete + const completed = (0, formatter_1.completeTable)(table, options); + // format + const formatted = (0, formatter_1.formatTable)(completed.table, options); + // apply + const newRow = range.end.row + (completed.delimiterInserted ? 2 : 1); + this._textEditor.transact(() => { + this._updateLines(range.start.row, range.end.row + 1, formatted.table.toLines(), lines); + let newPos; + if (newRow > this._textEditor.getLastRow()) { + this._textEditor.insertLine(newRow, ''); + newPos = new point_1.Point(newRow, 0); + } + else { + const re = new RegExp(`^${(0, parser_1.marginRegexSrc)(options.leftMarginChars)}`, 'u'); + const nextLine = this._textEditor.getLine(newRow); + // @ts-expect-error TODO + const margin = re.exec(nextLine)[0]; + newPos = new point_1.Point(newRow, margin.length); + } + this._textEditor.setCursorPosition(newPos); + }); + this.resetSmartCursor(); + }); + } + /** + * Alters the alignment of the focused column. + */ + alignColumn(alignment, options) { + this.withCompletedTable(options, ({ range, lines, table, focus }) => { + let newFocus = focus; + // alter alignment + let altered = table; + if (0 <= newFocus.column && + newFocus.column <= altered.getHeaderWidth() - 1) { + altered = (0, formatter_1.alterAlignment)(table, newFocus.column, alignment, options); + } + // format + const formatted = (0, formatter_1.formatTable)(altered, options); + newFocus = newFocus.setOffset((0, exports._computeNewOffset)(newFocus, table, formatted, false)); + // apply + this._textEditor.transact(() => { + this._updateLines(range.start.row, range.end.row + 1, formatted.table.toLines(), lines); + this._moveToFocus(range.start.row, formatted.table, newFocus); + }); + }); + } + /** + * Selects the focused cell content. + */ + selectCell(options) { + this.withCompletedTable(options, ({ range, lines, table, focus }) => { + const newFocus = focus; + // apply + this._textEditor.transact(() => { + this._updateLines(range.start.row, range.end.row + 1, table.toLines(), lines); + this._selectFocus(range.start.row, table, newFocus); + }); + }); + } + /** + * Moves the focus to another cell. + * + * @param rowOffset - Offset in row. + * @param columnOffset - Offset in column. + */ + moveFocus(rowOffset, columnOffset, options) { + this.withCompletedTable(options, ({ range, lines, table, focus }) => { + let newFocus = focus; + const startFocus = newFocus; + // move focus + if (rowOffset !== 0) { + const height = table.getHeight(); + // skip delimiter row + const skip = newFocus.row < 1 && newFocus.row + rowOffset >= 1 + ? 1 + : newFocus.row > 1 && newFocus.row + rowOffset <= 1 + ? -1 + : 0; + newFocus = newFocus.setRow(Math.min(Math.max(newFocus.row + rowOffset + skip, 0), height <= 2 ? 0 : height - 1)); + } + if (columnOffset !== 0) { + const width = table.getHeaderWidth(); + if (!(newFocus.column < 0 && columnOffset < 0) && + !(newFocus.column > width - 1 && columnOffset > 0)) { + newFocus = newFocus.setColumn(Math.min(Math.max(newFocus.column + columnOffset, 0), width - 1)); + } + } + const moved = !newFocus.posEquals(startFocus); + // format + const formatted = (0, formatter_1.formatTable)(table, options); + newFocus = newFocus.setOffset((0, exports._computeNewOffset)(newFocus, table, formatted, moved)); + // apply + this._textEditor.transact(() => { + this._updateLines(range.start.row, range.end.row + 1, formatted.table.toLines(), lines); + if (moved) { + this._selectFocus(range.start.row, formatted.table, newFocus); + } + else { + this._moveToFocus(range.start.row, formatted.table, newFocus); + } + }); + if (moved) { + this.resetSmartCursor(); + } + }); + } + /** + * Moves the focus to the next cell. + */ + nextCell(options) { + this._withTable(options, ({ range, lines, table, focus }) => { + // reset smart cursor if moved + const focusMoved = (this._scTablePos !== undefined && + !range.start.equals(this._scTablePos)) || + (this._scLastFocus !== undefined && + !focus.posEquals(this._scLastFocus)); + if (this._scActive && focusMoved) { + this.resetSmartCursor(); + } + let newFocus = focus; + // complete + const completed = (0, formatter_1.completeTable)(table, options); + if (completed.delimiterInserted && newFocus.row > 0) { + newFocus = newFocus.setRow(newFocus.row + 1); + } + const startFocus = newFocus; + let altered = completed.table; + // move focus + if (newFocus.row === 1) { + // move to next row + newFocus = newFocus.setRow(2); + if (options.smartCursor) { + if (newFocus.column < 0 || + altered.getHeaderWidth() - 1 < newFocus.column) { + newFocus = newFocus.setColumn(0); + } + } + else { + newFocus = newFocus.setColumn(0); + } + // insert an empty row if needed + if (newFocus.row > altered.getHeight() - 1) { + const row = new Array(altered.getHeaderWidth()).fill(new table_cell_1.TableCell('')); + altered = (0, formatter_1.insertRow)(altered, altered.getHeight(), new table_row_1.TableRow(row, '', '')); + } + } + else { + // insert an empty column if needed + if (newFocus.column > altered.getHeaderWidth() - 1) { + const column = new Array(altered.getHeight() - 1).fill(new table_cell_1.TableCell('')); + altered = (0, formatter_1.insertColumn)(altered, altered.getHeaderWidth(), column, options); + } + // move to next column + newFocus = newFocus.setColumn(newFocus.column + 1); + } + // format + const formatted = (0, formatter_1.formatTable)(altered, options); + newFocus = newFocus.setOffset((0, exports._computeNewOffset)(newFocus, altered, formatted, true)); + // apply + const newLines = formatted.table.toLines(); + if (newFocus.column > formatted.table.getHeaderWidth() - 1) { + // add margin + newLines[newFocus.row] += ' '; + newFocus = newFocus.setOffset(1); + } + this._textEditor.transact(() => { + this._updateLines(range.start.row, range.end.row + 1, newLines, lines); + this._selectFocus(range.start.row, formatted.table, newFocus); + }); + if (options.smartCursor) { + if (!this._scActive) { + // activate smart cursor + this._scActive = true; + this._scTablePos = range.start; + if (startFocus.column < 0 || + formatted.table.getHeaderWidth() - 1 < startFocus.column) { + this._scStartFocus = new focus_1.Focus(startFocus.row, 0, 0); + } + else { + this._scStartFocus = startFocus; + } + } + this._scLastFocus = newFocus; + } + }); + } + /** + * Moves the focus to the previous cell. + */ + previousCell(options) { + this.withCompletedTable(options, ({ range, lines, table, focus }) => { + let newFocus = focus; + const startFocus = newFocus; + // move focus + if (newFocus.row === 0) { + if (newFocus.column > 0) { + newFocus = newFocus.setColumn(newFocus.column - 1); + } + } + else if (newFocus.row === 1) { + newFocus = new focus_1.Focus(0, table.getHeaderWidth() - 1, newFocus.offset); + } + else { + if (newFocus.column > 0) { + newFocus = newFocus.setColumn(newFocus.column - 1); + } + else { + newFocus = new focus_1.Focus(newFocus.row === 2 ? 0 : newFocus.row - 1, table.getHeaderWidth() - 1, newFocus.offset); + } + } + const moved = !newFocus.posEquals(startFocus); + // format + const formatted = (0, formatter_1.formatTable)(table, options); + newFocus = newFocus.setOffset((0, exports._computeNewOffset)(newFocus, table, formatted, moved)); + // apply + this._textEditor.transact(() => { + this._updateLines(range.start.row, range.end.row + 1, formatted.table.toLines(), lines); + if (moved) { + this._selectFocus(range.start.row, formatted.table, newFocus); + } + else { + this._moveToFocus(range.start.row, formatted.table, newFocus); + } + }); + if (moved) { + this.resetSmartCursor(); + } + }); + } + /** + * Moves the focus to the next row. + */ + nextRow(options) { + this._withTable(options, ({ range, lines, table, focus }) => { + // reset smart cursor if moved + const focusMoved = (this._scTablePos !== undefined && + !range.start.equals(this._scTablePos)) || + (this._scLastFocus !== undefined && + !focus.posEquals(this._scLastFocus)); + if (this._scActive && focusMoved) { + this.resetSmartCursor(); + } + let newFocus = focus; + // complete + const completed = (0, formatter_1.completeTable)(table, options); + if (completed.delimiterInserted && newFocus.row > 0) { + newFocus = newFocus.setRow(newFocus.row + 1); + } + const startFocus = newFocus; + let altered = completed.table; + // move focus + if (newFocus.row === 0) { + newFocus = newFocus.setRow(2); + } + else { + newFocus = newFocus.setRow(newFocus.row + 1); + } + if (options.smartCursor) { + if (this._scActive && this._scStartFocus !== undefined) { + newFocus = newFocus.setColumn(this._scStartFocus.column); + } + else if (newFocus.column < 0 || + altered.getHeaderWidth() - 1 < newFocus.column) { + newFocus = newFocus.setColumn(0); + } + } + else { + newFocus = newFocus.setColumn(0); + } + // insert empty row if needed + if (newFocus.row > altered.getHeight() - 1) { + const row = new Array(altered.getHeaderWidth()).fill(new table_cell_1.TableCell('')); + altered = (0, formatter_1.insertRow)(altered, altered.getHeight(), new table_row_1.TableRow(row, '', '')); + } + // format + const formatted = (0, formatter_1.formatTable)(altered, options); + newFocus = newFocus.setOffset((0, exports._computeNewOffset)(newFocus, altered, formatted, true)); + // apply + this._textEditor.transact(() => { + this._updateLines(range.start.row, range.end.row + 1, formatted.table.toLines(), lines); + this._selectFocus(range.start.row, formatted.table, newFocus); + }); + if (options.smartCursor) { + if (!this._scActive) { + // activate smart cursor + this._scActive = true; + this._scTablePos = range.start; + if (startFocus.column < 0 || + formatted.table.getHeaderWidth() - 1 < startFocus.column) { + this._scStartFocus = new focus_1.Focus(startFocus.row, 0, 0); + } + else { + this._scStartFocus = startFocus; + } + } + this._scLastFocus = newFocus; + } + }); + } + /** + * Inserts an empty row at the current focus. + */ + insertRow(options) { + this.withCompletedTable(options, ({ range, lines, formulaLines, table, focus }) => { + let newFocus = focus; + // move focus + if (newFocus.row <= 1) { + newFocus = newFocus.setRow(2); + } + newFocus = newFocus.setColumn(0); + // insert an empty row + const row = new Array(table.getHeaderWidth()).fill(new table_cell_1.TableCell('')); + const altered = (0, formatter_1.insertRow)(table, newFocus.row, new table_row_1.TableRow(row, '', '')); + this.formatAndApply(options, range, lines, formulaLines, altered, newFocus); + }); + } + /** + * Deletes a row at the current focus. + */ + deleteRow(options) { + this.withCompletedTable(options, ({ range, lines, formulaLines, table, focus }) => { + let newFocus = focus; + // delete a row + let altered = table; + let moved = false; + if (newFocus.row !== 1) { + altered = (0, formatter_1.deleteRow)(altered, newFocus.row); + moved = true; + if (newFocus.row > altered.getHeight() - 1) { + newFocus = newFocus.setRow(newFocus.row === 2 ? 0 : newFocus.row - 1); + } + } + this.formatAndApply(options, range, lines, formulaLines, altered, newFocus, moved); + }); + } + /** + * Moves the focused row by the specified offset. + * + * @param offset - An offset the row is moved by. + */ + moveRow(offset, options) { + this.withCompletedTable(options, ({ range, lines, formulaLines, table, focus }) => { + let newFocus = focus; + // move row + let altered = table; + if (newFocus.row > 1) { + const dest = Math.min(Math.max(newFocus.row + offset, 2), altered.getHeight() - 1); + altered = (0, formatter_1.moveRow)(altered, newFocus.row, dest); + newFocus = newFocus.setRow(dest); + } + this.formatAndApply(options, range, lines, formulaLines, altered, newFocus); + }); + } + evaluateFormulas(options) { + return this.withCompletedTable(options, ({ range, lines, formulaLines, table, focus, }) => { + const result = table.applyFormulas(formulaLines); + if (result.isErr()) { + return result.error; + } + this.formatAndApply(options, range, lines, formulaLines, result.value, focus, false); + }); + } + /** + * Sorts rows alphanumerically using the column at the current focus. + * If all cells in the sorting column are numbers, the column is sorted + * numerically. + */ + sortRows(sortOrder, options) { + this.withCompletedTable(options, ({ range, lines, formulaLines, table, focus }) => { + const bodyRows = table.getRows().slice(2); + const isNumber = (s) => /^\s*[-+]?((\d+(\.\d+)?)|(\d+\.)|(\.\d+))([eE][-+]?\d+)?\s*$/.test(s); + const notAllNums = bodyRows + .map((row) => { var _a; return (_a = row.getCellAt(focus.column)) === null || _a === void 0 ? void 0 : _a.content; }) + .some((cell) => cell !== undefined && cell !== '' && !isNumber(cell)); + bodyRows.sort((rowA, rowB) => { + const cellA = rowA.getCellAt(focus.column); + const cellB = rowB.getCellAt(focus.column); + if (cellA === undefined || cellA.content === '') { + if (cellB === undefined || cellB.content === '') { + return 0; + } + return -1; + } + else if (cellB === undefined || cellB.content === '') { + return 1; + } + const contentA = notAllNums + ? cellA.content.replace(/[*~_$]/g, '') + : parseFloat(cellA.content); + const contentB = notAllNums + ? cellB.content.replace(/[*~_$]/g, '') + : parseFloat(cellB.content); + if (contentA === contentB) { + return 0; + } + else if (contentA === undefined) { + return -1; + } + else if (contentB === undefined) { + return 1; + } + return contentA < contentB ? -1 : 1; + }); + if (sortOrder === SortOrder.Descending) { + bodyRows.reverse(); + } + const allRows = table.getRows().slice(0, 2).concat(bodyRows); + const newTable = new table_1.Table(allRows); + const { table: formattedTable, focus: newFocus } = this.formatAndApply(options, range, lines, formulaLines, newTable, focus, true); + this._moveToFocus(range.start.row, formattedTable, newFocus); + }); + } + /** + * Inserts an empty column at the current focus. + */ + insertColumn(options) { + this.withCompletedTable(options, ({ range, lines, formulaLines, table, focus }) => { + let newFocus = focus; + // move focus + if (newFocus.row === 1) { + newFocus = newFocus.setRow(0); + } + if (newFocus.column < 0) { + newFocus = newFocus.setColumn(0); + } + // insert an empty column + const column = new Array(table.getHeight() - 1).fill(new table_cell_1.TableCell('')); + const altered = (0, formatter_1.insertColumn)(table, newFocus.column, column, options); + this.formatAndApply(options, range, lines, formulaLines, altered, newFocus); + }); + } + /** + * Deletes a column at the current focus. + */ + deleteColumn(options) { + this.withCompletedTable(options, ({ range, lines, formulaLines, table, focus }) => { + let newFocus = focus; + // move focus + if (newFocus.row === 1) { + newFocus = newFocus.setRow(0); + } + // delete a column + let altered = table; + let moved = false; + if (0 <= newFocus.column && + newFocus.column <= altered.getHeaderWidth() - 1) { + altered = (0, formatter_1.deleteColumn)(table, newFocus.column, options); + moved = true; + if (newFocus.column > altered.getHeaderWidth() - 1) { + newFocus = newFocus.setColumn(altered.getHeaderWidth() - 1); + } + } + this.formatAndApply(options, range, lines, formulaLines, altered, newFocus, moved); + }); + } + /** + * Moves the focused column by the specified offset. + * + * @param offset - An offset the column is moved by. + */ + moveColumn(offset, options) { + this.withCompletedTable(options, ({ range, lines, formulaLines, table, focus }) => { + let newFocus = focus; + // move column + let altered = table; + if (0 <= newFocus.column && + newFocus.column <= altered.getHeaderWidth() - 1) { + const dest = Math.min(Math.max(newFocus.column + offset, 0), altered.getHeaderWidth() - 1); + altered = (0, formatter_1.moveColumn)(altered, newFocus.column, dest); + newFocus = newFocus.setColumn(dest); + } + this.formatAndApply(options, range, lines, formulaLines, altered, newFocus); + }); + } + /** + * Formats all the tables in the text editor. + */ + formatAll(options) { + this._textEditor.transact(() => { + const re = (0, exports._createIsTableRowRegex)(options.leftMarginChars); + let pos = this._textEditor.getCursorPosition(); + let lines = []; + let startRow = undefined; + let lastRow = this._textEditor.getLastRow(); + // find tables + for (let row = 0; row <= lastRow; row++) { + const line = this._textEditor.getLine(row); + if (this._textEditor.acceptsTableEdit(row) && re.test(line)) { + lines.push(line); + if (startRow === undefined) { + startRow = row; + } + } + else if (startRow !== undefined) { + // get table info + const endRow = row - 1; + const range = new range_1.Range(new point_1.Point(startRow, 0), new point_1.Point(endRow, lines[lines.length - 1].length)); + // formulaLines empty because formatting does not involve formulas + const table = (0, parser_1.readTable)(lines, options); + const focus = table.focusOfPosition(pos, startRow); + let diff; + if (focus !== undefined) { + // format + let newFocus = focus; + const completed = (0, formatter_1.completeTable)(table, options); + if (completed.delimiterInserted && newFocus.row > 0) { + newFocus = newFocus.setRow(newFocus.row + 1); + } + const formatted = (0, formatter_1.formatTable)(completed.table, options); + newFocus = newFocus.setOffset((0, exports._computeNewOffset)(newFocus, completed.table, formatted, false)); + // apply + const newLines = formatted.table.toLines(); + this._updateLines(range.start.row, range.end.row + 1, newLines, lines); + // update cursor position + diff = newLines.length - lines.length; + pos = formatted.table.positionOfFocus(newFocus, startRow); + } + else { + // format + const completed = (0, formatter_1.completeTable)(table, options); + const formatted = (0, formatter_1.formatTable)(completed.table, options); + // apply + const newLines = formatted.table.toLines(); + this._updateLines(range.start.row, range.end.row + 1, newLines, lines); + // update cursor position + diff = newLines.length - lines.length; + if (pos.row > endRow) { + pos = new point_1.Point(pos.row + diff, pos.column); + } + } + // reset + lines = []; + startRow = undefined; + // update + lastRow += diff; + row += diff; + } + } + if (startRow !== undefined) { + // get table info + const endRow = lastRow; + const range = new range_1.Range(new point_1.Point(startRow, 0), new point_1.Point(endRow, lines[lines.length - 1].length)); + // formulaLines empty because formatting does not involve formulas + const table = (0, parser_1.readTable)(lines, options); + const focus = table.focusOfPosition(pos, startRow); + // format + let newFocus = focus; + const completed = (0, formatter_1.completeTable)(table, options); + // @ts-expect-error TODO + if (completed.delimiterInserted && newFocus.row > 0) { + // @ts-expect-error TODO + newFocus = newFocus.setRow(newFocus.row + 1); + } + const formatted = (0, formatter_1.formatTable)(completed.table, options); + // @ts-expect-error TODO + newFocus = newFocus.setOffset( + // @ts-expect-error TODO + (0, exports._computeNewOffset)(newFocus, completed.table, formatted, false)); + // apply + const newLines = formatted.table.toLines(); + this._updateLines(range.start.row, range.end.row + 1, newLines, lines); + // @ts-expect-error TODO + pos = formatted.table.positionOfFocus(newFocus, startRow); + } + this._textEditor.setCursorPosition(pos); + }); + } + /** + * Exports the table as a two dimensional string array + */ + exportTable(withtHeaders, options) { + return this.withCompletedTable(options, ({ range, lines, formulaLines, table, focus }) => { + const bodyRows = table.getRows(); + if (bodyRows.length > 0 && !withtHeaders) { + bodyRows.splice(0, 2); + } + // else if(bodyRows.length > 1) bodyRows.splice(1, 1); + return bodyRows.map((row) => row.getCells().map((cell) => cell.content)); + }); + } + /** + * Exports the table as a two dimensional string array + */ + exportCSV(withtHeaders, options) { + const r = this.exportTable(withtHeaders, options); + return !r ? undefined : r.map((row) => row.join('\t')).join('\n'); + } + /** + * Finds a table, completes it, then does an operation with it. + * + * @param func - A function that does some operation on table information obtained by + * {@link TableEditor#_findTable}. + */ + withCompletedTable(options, func) { + return this._withTable(options, (tableInfo) => { + let newFocus = tableInfo.focus; + // complete + const completed = (0, formatter_1.completeTable)(tableInfo.table, options); + if (completed.delimiterInserted && newFocus.row > 0) { + newFocus = newFocus.setRow(newFocus.row + 1); + } + // format + const formatted = (0, formatter_1.formatTable)(completed.table, options); + newFocus = newFocus.setOffset((0, exports._computeNewOffset)(newFocus, completed.table, formatted, false)); + tableInfo.table = formatted.table; + tableInfo.focus = newFocus; + return func(tableInfo); + }); + } + /** + * Formats the table and applies any changes based on the difference between + * originalLines and the newTable. Should generally be the last function call + * in a TableEditor function. + */ + formatAndApply(options, range, originalLines, formulaLines, newTable, newFocus, moved = false) { + // format + const formatted = (0, formatter_1.formatTable)(newTable, options); + newFocus = newFocus.setOffset((0, exports._computeNewOffset)(newFocus, newTable, formatted, moved)); + // apply + this._textEditor.transact(() => { + this._updateLines(range.start.row, range.end.row + 1, formatted.table.toLines(), originalLines); + if (moved) { + this._selectFocus(range.start.row, formatted.table, newFocus); + } + else { + this._moveToFocus(range.start.row, formatted.table, newFocus); + } + }); + this.resetSmartCursor(); + return { + range, + lines: originalLines, + formulaLines, + table: formatted.table, + focus: newFocus, + }; + } + } + exports.TableEditor = TableEditor; +} (tableEditor)); - - - - - - - - -var SortOrder; -(function (SortOrder) { - SortOrder["Ascending"] = "ascending"; - SortOrder["Descending"] = "descending"; -})(SortOrder = exports.SortOrder || (exports.SortOrder = {})); -/** - * Creates a regular expression object that matches a table row. - * - * @param leftMarginChars - A set of additional left margin characters. - * A pipe `|`, a backslash `\`, and a backquote will be ignored. - * @returns A regular expression object that matches a table row. - */ -const _createIsTableRowRegex = (leftMarginChars) => new RegExp(`^${parser.marginRegexSrc(leftMarginChars)}\\|`, 'u'); -exports._createIsTableRowRegex = _createIsTableRowRegex; -const _createIsTableFormulaRegex = (leftMarginChars) => new RegExp(`^${parser.marginRegexSrc(leftMarginChars)}<!-- ?.+-->$`, 'u'); -exports._createIsTableFormulaRegex = _createIsTableFormulaRegex; -/** - * Computes new focus offset from information of completed and formatted tables. - * - * @private - * @param focus - A focus. - * @param table - A completed but not formatted table with original cell contents. - * @param formatted - Information of the formatted table. - * @param moved - Indicates whether the focus position is moved by a command or not. - */ -const _computeNewOffset = (focus, table, formatted, moved) => { - if (moved) { - const formattedFocusedCell = formatted.table.getFocusedCell(focus); - if (formattedFocusedCell !== undefined) { - return formattedFocusedCell.computeRawOffset(0); - } - return focus.column < 0 ? formatted.marginLeft.length : 0; - } - const focusedCell = table.getFocusedCell(focus); - const formattedFocusedCell = formatted.table.getFocusedCell(focus); - if (focusedCell !== undefined && formattedFocusedCell !== undefined) { - const contentOffset = Math.min(focusedCell.computeContentOffset(focus.offset), formattedFocusedCell.content.length); - return formattedFocusedCell.computeRawOffset(contentOffset); - } - return focus.column < 0 ? formatted.marginLeft.length : 0; -}; -exports._computeNewOffset = _computeNewOffset; -/** - * The `TableEditor` class is at the center of the markdown-table-editor. - * When a command is executed, it reads a table from the text editor, does some operation on the - * table, and then apply the result to the text editor. - * - * To use this class, the text editor (or an interface to it) must implement {@link ITextEditor}. - */ -class TableEditor { - /** - * Creates a new table editor instance. - * - * @param textEditor - A text editor interface. - */ - constructor(textEditor) { - this._textEditor = textEditor; - // smart cursor - this._scActive = false; - } - /** - * Resets the smart cursor. - * Call this method when the table editor is inactivated. - */ - resetSmartCursor() { - this._scActive = false; - } - /** - * Checks if the cursor is in a table row. Returns false if the cursor is in a - * table formula row (see cursorIsInTableFormula). - * This is useful to check whether the table editor should be activated or not. - * - * @returns `true` if the cursor is in a table row. - */ - cursorIsInTable(options) { - const re = exports._createIsTableRowRegex(options.leftMarginChars); - const pos = this._textEditor.getCursorPosition(); - return (this._textEditor.acceptsTableEdit(pos.row) && - re.test(this._textEditor.getLine(pos.row))); - } - /** - * Checks if the cursor is in a formula row below a table. - * This is useful to check whether the table editor should be activated or not. - * - * @returns `true` if the cursor is in a formula row. - */ - cursorIsInTableFormula(options) { - const formulaRe = exports._createIsTableFormulaRegex(options.leftMarginChars); - const pos = this._textEditor.getCursorPosition(); - return (this._textEditor.acceptsTableEdit(pos.row) && - formulaRe.test(this._textEditor.getLine(pos.row))); - } - /** - * Finds a table under the current cursor position. - * - * @returns undefined if there is no table or the determined focus is invalid. - */ - _findTable(options) { - const re = exports._createIsTableRowRegex(options.leftMarginChars); - const formulaRe = exports._createIsTableFormulaRegex(options.leftMarginChars); - let pos = this._textEditor.getCursorPosition(); - const lastRow = this._textEditor.getLastRow(); - const lines = []; - const formulaLines = []; - let startRow = pos.row; - let endRow = pos.row; // endRow is last line before fomulas - // if the cursor is on formula line, work up until we find the last row of the table - { - let line = this._textEditor.getLine(pos.row); - while (formulaRe.test(line) && pos.row >= 0) { - pos = new point.Point(pos.row - 1, pos.column); - endRow--; - line = this._textEditor.getLine(pos.row); - } - } - // current line - { - const line = this._textEditor.getLine(pos.row); - if (!this._textEditor.acceptsTableEdit(pos.row) || !re.test(line)) { - return undefined; - } - lines.push(line); - } - // previous lines - for (let row = pos.row - 1; row >= 0; row--) { - const line = this._textEditor.getLine(row); - if (!this._textEditor.acceptsTableEdit(row) || !re.test(line)) { - break; - } - lines.unshift(line); - startRow = row; - } - // next lines - for (let row = pos.row + 1; row <= lastRow; row++) { - const line = this._textEditor.getLine(row); - if (!this._textEditor.acceptsTableEdit(row) || !re.test(line)) { - break; - } - lines.push(line); - endRow = row; - } - // formula lines - for (let row = endRow + 1; row <= lastRow; row++) { - const line = this._textEditor.getLine(row); - if (!this._textEditor.acceptsTableEdit(row) || !formulaRe.test(line)) { - break; - } - formulaLines.push(line); - } - const range$1 = new range.Range(new point.Point(startRow, 0), new point.Point(endRow, lines[lines.length - 1].length)); - const table = parser.readTable(lines, options); - const focus = table.focusOfPosition(pos, startRow); - if (focus === undefined) { - // TODO: Validate this for correctness - return undefined; - } - return { range: range$1, lines, formulaLines, table, focus }; - } - /** - * Finds a table and does an operation with it. - * - * @private - * @param func - A function that does some operation on table information obtained by - * {@link TableEditor#_findTable}. - */ - _withTable(options, func) { - const info = this._findTable(options); - if (info === undefined) { - return; - } - return func(info); - } - /** - * Updates lines in a given range in the text editor. - * - * @private - * @param startRow - Start row index, starts from `0`. - * @param endRow - End row index. - * Lines from `startRow` to `endRow - 1` are replaced. - * @param newLines - New lines. - * @param [oldLines=undefined] - Old lines to be replaced. - */ - _updateLines(startRow, endRow, newLines, oldLines = undefined) { - if (oldLines !== undefined) { - // apply the shortest edit script - // if a table is edited in a normal manner, the edit distance never exceeds 3 - const ses = editScript.shortestEditScript(oldLines, newLines, 3); - if (ses !== undefined) { - editScript.applyEditScript(this._textEditor, ses, startRow); - return; - } - } - this._textEditor.replaceLines(startRow, endRow, newLines); - } - /** - * Moves the cursor position to the focused cell, - * - * @private - * @param startRow - Row index where the table starts in the text editor. - * @param table - A table. - * @param focus - A focus to which the cursor will be moved. - */ - _moveToFocus(startRow, table, focus) { - const pos = table.positionOfFocus(focus, startRow); - if (pos !== undefined) { - this._textEditor.setCursorPosition(pos); - } - } - /** - * Selects the focused cell. - * If the cell has no content to be selected, then just moves the cursor position. - * - * @private - * @param startRow - Row index where the table starts in the text editor. - * @param table - A table. - * @param focus - A focus to be selected. - */ - _selectFocus(startRow, table, focus) { - const range = table.selectionRangeOfFocus(focus, startRow); - if (range !== undefined) { - this._textEditor.setSelectionRange(range); - } - else { - this._moveToFocus(startRow, table, focus); - } - } - /** - * Formats the table under the cursor. - */ - format(options) { - this.withCompletedTable(options, ({ range, lines, table, focus }) => { - const newFocus = focus; - // apply - this._textEditor.transact(() => { - this._updateLines(range.start.row, range.end.row + 1, table.toLines(), lines); - this._moveToFocus(range.start.row, table, newFocus); - }); - }); - } - /** - * Formats and escapes from the table. - */ - escape(options) { - this._withTable(options, ({ range, lines, table, focus }) => { - // complete - const completed = formatter.completeTable(table, options); - // format - const formatted = formatter.formatTable(completed.table, options); - // apply - const newRow = range.end.row + (completed.delimiterInserted ? 2 : 1); - this._textEditor.transact(() => { - this._updateLines(range.start.row, range.end.row + 1, formatted.table.toLines(), lines); - let newPos; - if (newRow > this._textEditor.getLastRow()) { - this._textEditor.insertLine(newRow, ''); - newPos = new point.Point(newRow, 0); - } - else { - const re = new RegExp(`^${parser.marginRegexSrc(options.leftMarginChars)}`, 'u'); - const nextLine = this._textEditor.getLine(newRow); - // @ts-expect-error TODO - const margin = re.exec(nextLine)[0]; - newPos = new point.Point(newRow, margin.length); - } - this._textEditor.setCursorPosition(newPos); - }); - this.resetSmartCursor(); - }); - } - /** - * Alters the alignment of the focused column. - */ - alignColumn(alignment, options) { - this.withCompletedTable(options, ({ range, lines, table, focus }) => { - let newFocus = focus; - // alter alignment - let altered = table; - if (0 <= newFocus.column && - newFocus.column <= altered.getHeaderWidth() - 1) { - altered = formatter.alterAlignment(table, newFocus.column, alignment, options); - } - // format - const formatted = formatter.formatTable(altered, options); - newFocus = newFocus.setOffset(exports._computeNewOffset(newFocus, table, formatted, false)); - // apply - this._textEditor.transact(() => { - this._updateLines(range.start.row, range.end.row + 1, formatted.table.toLines(), lines); - this._moveToFocus(range.start.row, formatted.table, newFocus); - }); - }); - } - /** - * Selects the focused cell content. - */ - selectCell(options) { - this.withCompletedTable(options, ({ range, lines, table, focus }) => { - const newFocus = focus; - // apply - this._textEditor.transact(() => { - this._updateLines(range.start.row, range.end.row + 1, table.toLines(), lines); - this._selectFocus(range.start.row, table, newFocus); - }); - }); - } - /** - * Moves the focus to another cell. - * - * @param rowOffset - Offset in row. - * @param columnOffset - Offset in column. - */ - moveFocus(rowOffset, columnOffset, options) { - this.withCompletedTable(options, ({ range, lines, table, focus }) => { - let newFocus = focus; - const startFocus = newFocus; - // move focus - if (rowOffset !== 0) { - const height = table.getHeight(); - // skip delimiter row - const skip = newFocus.row < 1 && newFocus.row + rowOffset >= 1 - ? 1 - : newFocus.row > 1 && newFocus.row + rowOffset <= 1 - ? -1 - : 0; - newFocus = newFocus.setRow(Math.min(Math.max(newFocus.row + rowOffset + skip, 0), height <= 2 ? 0 : height - 1)); - } - if (columnOffset !== 0) { - const width = table.getHeaderWidth(); - if (!(newFocus.column < 0 && columnOffset < 0) && - !(newFocus.column > width - 1 && columnOffset > 0)) { - newFocus = newFocus.setColumn(Math.min(Math.max(newFocus.column + columnOffset, 0), width - 1)); - } - } - const moved = !newFocus.posEquals(startFocus); - // format - const formatted = formatter.formatTable(table, options); - newFocus = newFocus.setOffset(exports._computeNewOffset(newFocus, table, formatted, moved)); - // apply - this._textEditor.transact(() => { - this._updateLines(range.start.row, range.end.row + 1, formatted.table.toLines(), lines); - if (moved) { - this._selectFocus(range.start.row, formatted.table, newFocus); - } - else { - this._moveToFocus(range.start.row, formatted.table, newFocus); - } - }); - if (moved) { - this.resetSmartCursor(); - } - }); - } - /** - * Moves the focus to the next cell. - */ - nextCell(options) { - this._withTable(options, ({ range, lines, table, focus: focus$1 }) => { - // reset smart cursor if moved - const focusMoved = (this._scTablePos !== undefined && - !range.start.equals(this._scTablePos)) || - (this._scLastFocus !== undefined && - !focus$1.posEquals(this._scLastFocus)); - if (this._scActive && focusMoved) { - this.resetSmartCursor(); - } - let newFocus = focus$1; - // complete - const completed = formatter.completeTable(table, options); - if (completed.delimiterInserted && newFocus.row > 0) { - newFocus = newFocus.setRow(newFocus.row + 1); - } - const startFocus = newFocus; - let altered = completed.table; - // move focus - if (newFocus.row === 1) { - // move to next row - newFocus = newFocus.setRow(2); - if (options.smartCursor) { - if (newFocus.column < 0 || - altered.getHeaderWidth() - 1 < newFocus.column) { - newFocus = newFocus.setColumn(0); - } - } - else { - newFocus = newFocus.setColumn(0); - } - // insert an empty row if needed - if (newFocus.row > altered.getHeight() - 1) { - const row = new Array(altered.getHeaderWidth()).fill(new tableCell.TableCell('')); - altered = formatter.insertRow(altered, altered.getHeight(), new tableRow.TableRow(row, '', '')); - } - } - else { - // insert an empty column if needed - if (newFocus.column > altered.getHeaderWidth() - 1) { - const column = new Array(altered.getHeight() - 1).fill(new tableCell.TableCell('')); - altered = formatter.insertColumn(altered, altered.getHeaderWidth(), column, options); - } - // move to next column - newFocus = newFocus.setColumn(newFocus.column + 1); - } - // format - const formatted = formatter.formatTable(altered, options); - newFocus = newFocus.setOffset(exports._computeNewOffset(newFocus, altered, formatted, true)); - // apply - const newLines = formatted.table.toLines(); - if (newFocus.column > formatted.table.getHeaderWidth() - 1) { - // add margin - newLines[newFocus.row] += ' '; - newFocus = newFocus.setOffset(1); - } - this._textEditor.transact(() => { - this._updateLines(range.start.row, range.end.row + 1, newLines, lines); - this._selectFocus(range.start.row, formatted.table, newFocus); - }); - if (options.smartCursor) { - if (!this._scActive) { - // activate smart cursor - this._scActive = true; - this._scTablePos = range.start; - if (startFocus.column < 0 || - formatted.table.getHeaderWidth() - 1 < startFocus.column) { - this._scStartFocus = new focus.Focus(startFocus.row, 0, 0); - } - else { - this._scStartFocus = startFocus; - } - } - this._scLastFocus = newFocus; - } - }); - } - /** - * Moves the focus to the previous cell. - */ - previousCell(options) { - this.withCompletedTable(options, ({ range, lines, table, focus: focus$1 }) => { - let newFocus = focus$1; - const startFocus = newFocus; - // move focus - if (newFocus.row === 0) { - if (newFocus.column > 0) { - newFocus = newFocus.setColumn(newFocus.column - 1); - } - } - else if (newFocus.row === 1) { - newFocus = new focus.Focus(0, table.getHeaderWidth() - 1, newFocus.offset); - } - else { - if (newFocus.column > 0) { - newFocus = newFocus.setColumn(newFocus.column - 1); - } - else { - newFocus = new focus.Focus(newFocus.row === 2 ? 0 : newFocus.row - 1, table.getHeaderWidth() - 1, newFocus.offset); - } - } - const moved = !newFocus.posEquals(startFocus); - // format - const formatted = formatter.formatTable(table, options); - newFocus = newFocus.setOffset(exports._computeNewOffset(newFocus, table, formatted, moved)); - // apply - this._textEditor.transact(() => { - this._updateLines(range.start.row, range.end.row + 1, formatted.table.toLines(), lines); - if (moved) { - this._selectFocus(range.start.row, formatted.table, newFocus); - } - else { - this._moveToFocus(range.start.row, formatted.table, newFocus); - } - }); - if (moved) { - this.resetSmartCursor(); - } - }); - } - /** - * Moves the focus to the next row. - */ - nextRow(options) { - this._withTable(options, ({ range, lines, table, focus: focus$1 }) => { - // reset smart cursor if moved - const focusMoved = (this._scTablePos !== undefined && - !range.start.equals(this._scTablePos)) || - (this._scLastFocus !== undefined && - !focus$1.posEquals(this._scLastFocus)); - if (this._scActive && focusMoved) { - this.resetSmartCursor(); - } - let newFocus = focus$1; - // complete - const completed = formatter.completeTable(table, options); - if (completed.delimiterInserted && newFocus.row > 0) { - newFocus = newFocus.setRow(newFocus.row + 1); - } - const startFocus = newFocus; - let altered = completed.table; - // move focus - if (newFocus.row === 0) { - newFocus = newFocus.setRow(2); - } - else { - newFocus = newFocus.setRow(newFocus.row + 1); - } - if (options.smartCursor) { - if (this._scActive && this._scStartFocus !== undefined) { - newFocus = newFocus.setColumn(this._scStartFocus.column); - } - else if (newFocus.column < 0 || - altered.getHeaderWidth() - 1 < newFocus.column) { - newFocus = newFocus.setColumn(0); - } - } - else { - newFocus = newFocus.setColumn(0); - } - // insert empty row if needed - if (newFocus.row > altered.getHeight() - 1) { - const row = new Array(altered.getHeaderWidth()).fill(new tableCell.TableCell('')); - altered = formatter.insertRow(altered, altered.getHeight(), new tableRow.TableRow(row, '', '')); - } - // format - const formatted = formatter.formatTable(altered, options); - newFocus = newFocus.setOffset(exports._computeNewOffset(newFocus, altered, formatted, true)); - // apply - this._textEditor.transact(() => { - this._updateLines(range.start.row, range.end.row + 1, formatted.table.toLines(), lines); - this._selectFocus(range.start.row, formatted.table, newFocus); - }); - if (options.smartCursor) { - if (!this._scActive) { - // activate smart cursor - this._scActive = true; - this._scTablePos = range.start; - if (startFocus.column < 0 || - formatted.table.getHeaderWidth() - 1 < startFocus.column) { - this._scStartFocus = new focus.Focus(startFocus.row, 0, 0); - } - else { - this._scStartFocus = startFocus; - } - } - this._scLastFocus = newFocus; - } - }); - } - /** - * Inserts an empty row at the current focus. - */ - insertRow(options) { - this.withCompletedTable(options, ({ range, lines, formulaLines, table, focus }) => { - let newFocus = focus; - // move focus - if (newFocus.row <= 1) { - newFocus = newFocus.setRow(2); - } - newFocus = newFocus.setColumn(0); - // insert an empty row - const row = new Array(table.getHeaderWidth()).fill(new tableCell.TableCell('')); - const altered = formatter.insertRow(table, newFocus.row, new tableRow.TableRow(row, '', '')); - this.formatAndApply(options, range, lines, formulaLines, altered, newFocus); - }); - } - /** - * Deletes a row at the current focus. - */ - deleteRow(options) { - this.withCompletedTable(options, ({ range, lines, formulaLines, table, focus }) => { - let newFocus = focus; - // delete a row - let altered = table; - let moved = false; - if (newFocus.row !== 1) { - altered = formatter.deleteRow(altered, newFocus.row); - moved = true; - if (newFocus.row > altered.getHeight() - 1) { - newFocus = newFocus.setRow(newFocus.row === 2 ? 0 : newFocus.row - 1); - } - } - this.formatAndApply(options, range, lines, formulaLines, altered, newFocus, moved); - }); - } - /** - * Moves the focused row by the specified offset. - * - * @param offset - An offset the row is moved by. - */ - moveRow(offset, options) { - this.withCompletedTable(options, ({ range, lines, formulaLines, table, focus }) => { - let newFocus = focus; - // move row - let altered = table; - if (newFocus.row > 1) { - const dest = Math.min(Math.max(newFocus.row + offset, 2), altered.getHeight() - 1); - altered = formatter.moveRow(altered, newFocus.row, dest); - newFocus = newFocus.setRow(dest); - } - this.formatAndApply(options, range, lines, formulaLines, altered, newFocus); - }); - } - evaluateFormulas(options) { - return this.withCompletedTable(options, ({ range, lines, formulaLines, table, focus, }) => { - const result = table.applyFormulas(formulaLines); - if (result.isErr()) { - return result.error; - } - const { table: formattedTable, focus: newFocus } = this.formatAndApply(options, range, lines, formulaLines, result.value, focus, false); - }); - } - /** - * Sorts rows alphanumerically using the column at the current focus. - * If all cells in the sorting column are numbers, the column is sorted - * numerically. - */ - sortRows(sortOrder, options) { - this.withCompletedTable(options, ({ range, lines, formulaLines, table: table$1, focus }) => { - const bodyRows = table$1.getRows().slice(2); - const isNumber = (s) => /^\s*[-+]?((\d+(\.\d+)?)|(\d+\.)|(\.\d+))([eE][-+]?\d+)?\s*$/.test(s); - const notAllNums = bodyRows - .map((row) => { var _a; return (_a = row.getCellAt(focus.column)) === null || _a === void 0 ? void 0 : _a.content; }) - .some((cell) => cell !== undefined && cell !== '' && !isNumber(cell)); - bodyRows.sort((rowA, rowB) => { - const cellA = rowA.getCellAt(focus.column); - const cellB = rowB.getCellAt(focus.column); - if (cellA === undefined || cellA.content === '') { - if (cellB === undefined || cellB.content === '') { - return 0; - } - return -1; - } - else if (cellB === undefined || cellB.content === '') { - return 1; - } - const contentA = notAllNums - ? cellA.content.replace(/[*~_$]/g, '') - : parseFloat(cellA.content); - const contentB = notAllNums - ? cellB.content.replace(/[*~_$]/g, '') - : parseFloat(cellB.content); - if (contentA === contentB) { - return 0; - } - else if (contentA === undefined) { - return -1; - } - else if (contentB === undefined) { - return 1; - } - return contentA < contentB ? -1 : 1; - }); - if (sortOrder === SortOrder.Descending) { - bodyRows.reverse(); - } - const allRows = table$1.getRows().slice(0, 2).concat(bodyRows); - const newTable = new table.Table(allRows); - const { table: formattedTable, focus: newFocus } = this.formatAndApply(options, range, lines, formulaLines, newTable, focus, true); - this._moveToFocus(range.start.row, formattedTable, newFocus); - }); - } - /** - * Inserts an empty column at the current focus. - */ - insertColumn(options) { - this.withCompletedTable(options, ({ range, lines, formulaLines, table, focus }) => { - let newFocus = focus; - // move focus - if (newFocus.row === 1) { - newFocus = newFocus.setRow(0); - } - if (newFocus.column < 0) { - newFocus = newFocus.setColumn(0); - } - // insert an empty column - const column = new Array(table.getHeight() - 1).fill(new tableCell.TableCell('')); - const altered = formatter.insertColumn(table, newFocus.column, column, options); - this.formatAndApply(options, range, lines, formulaLines, altered, newFocus); - }); - } - /** - * Deletes a column at the current focus. - */ - deleteColumn(options) { - this.withCompletedTable(options, ({ range, lines, formulaLines, table, focus }) => { - let newFocus = focus; - // move focus - if (newFocus.row === 1) { - newFocus = newFocus.setRow(0); - } - // delete a column - let altered = table; - let moved = false; - if (0 <= newFocus.column && - newFocus.column <= altered.getHeaderWidth() - 1) { - altered = formatter.deleteColumn(table, newFocus.column, options); - moved = true; - if (newFocus.column > altered.getHeaderWidth() - 1) { - newFocus = newFocus.setColumn(altered.getHeaderWidth() - 1); - } - } - this.formatAndApply(options, range, lines, formulaLines, altered, newFocus, moved); - }); - } - /** - * Moves the focused column by the specified offset. - * - * @param offset - An offset the column is moved by. - */ - moveColumn(offset, options) { - this.withCompletedTable(options, ({ range, lines, formulaLines, table, focus }) => { - let newFocus = focus; - // move column - let altered = table; - if (0 <= newFocus.column && - newFocus.column <= altered.getHeaderWidth() - 1) { - const dest = Math.min(Math.max(newFocus.column + offset, 0), altered.getHeaderWidth() - 1); - altered = formatter.moveColumn(altered, newFocus.column, dest); - newFocus = newFocus.setColumn(dest); - } - this.formatAndApply(options, range, lines, formulaLines, altered, newFocus); - }); - } - /** - * Formats all the tables in the text editor. - */ - formatAll(options) { - this._textEditor.transact(() => { - const re = exports._createIsTableRowRegex(options.leftMarginChars); - let pos = this._textEditor.getCursorPosition(); - let lines = []; - let startRow = undefined; - let lastRow = this._textEditor.getLastRow(); - // find tables - for (let row = 0; row <= lastRow; row++) { - const line = this._textEditor.getLine(row); - if (this._textEditor.acceptsTableEdit(row) && re.test(line)) { - lines.push(line); - if (startRow === undefined) { - startRow = row; - } - } - else if (startRow !== undefined) { - // get table info - const endRow = row - 1; - const range$1 = new range.Range(new point.Point(startRow, 0), new point.Point(endRow, lines[lines.length - 1].length)); - // formulaLines empty because formatting does not involve formulas - const table = parser.readTable(lines, options); - const focus = table.focusOfPosition(pos, startRow); - let diff; - if (focus !== undefined) { - // format - let newFocus = focus; - const completed = formatter.completeTable(table, options); - if (completed.delimiterInserted && newFocus.row > 0) { - newFocus = newFocus.setRow(newFocus.row + 1); - } - const formatted = formatter.formatTable(completed.table, options); - newFocus = newFocus.setOffset(exports._computeNewOffset(newFocus, completed.table, formatted, false)); - // apply - const newLines = formatted.table.toLines(); - this._updateLines(range$1.start.row, range$1.end.row + 1, newLines, lines); - // update cursor position - diff = newLines.length - lines.length; - pos = formatted.table.positionOfFocus(newFocus, startRow); - } - else { - // format - const completed = formatter.completeTable(table, options); - const formatted = formatter.formatTable(completed.table, options); - // apply - const newLines = formatted.table.toLines(); - this._updateLines(range$1.start.row, range$1.end.row + 1, newLines, lines); - // update cursor position - diff = newLines.length - lines.length; - if (pos.row > endRow) { - pos = new point.Point(pos.row + diff, pos.column); - } - } - // reset - lines = []; - startRow = undefined; - // update - lastRow += diff; - row += diff; - } - } - if (startRow !== undefined) { - // get table info - const endRow = lastRow; - const range$1 = new range.Range(new point.Point(startRow, 0), new point.Point(endRow, lines[lines.length - 1].length)); - // formulaLines empty because formatting does not involve formulas - const table = parser.readTable(lines, options); - const focus = table.focusOfPosition(pos, startRow); - // format - let newFocus = focus; - const completed = formatter.completeTable(table, options); - // @ts-expect-error TODO - if (completed.delimiterInserted && newFocus.row > 0) { - // @ts-expect-error TODO - newFocus = newFocus.setRow(newFocus.row + 1); - } - const formatted = formatter.formatTable(completed.table, options); - // @ts-expect-error TODO - newFocus = newFocus.setOffset( - // @ts-expect-error TODO - exports._computeNewOffset(newFocus, completed.table, formatted, false)); - // apply - const newLines = formatted.table.toLines(); - this._updateLines(range$1.start.row, range$1.end.row + 1, newLines, lines); - // @ts-expect-error TODO - pos = formatted.table.positionOfFocus(newFocus, startRow); - } - this._textEditor.setCursorPosition(pos); - }); - } - /** - * Exports the table as a two dimensional string array - */ - exportTable(withtHeaders, options) { - return this.withCompletedTable(options, ({ range, lines, formulaLines, table, focus }) => { - const bodyRows = table.getRows(); - if (bodyRows.length > 0 && !withtHeaders) { - bodyRows.splice(0, 2); - } - // else if(bodyRows.length > 1) bodyRows.splice(1, 1); - return bodyRows.map((row) => row.getCells().map((cell) => cell.content)); - }); - } - /** - * Exports the table as a two dimensional string array - */ - exportCSV(withtHeaders, options) { - const r = this.exportTable(withtHeaders, options); - return !r ? undefined : r.map((row) => row.join('\t')).join('\n'); - } - /** - * Finds a table, completes it, then does an operation with it. - * - * @param func - A function that does some operation on table information obtained by - * {@link TableEditor#_findTable}. - */ - withCompletedTable(options, func) { - return this._withTable(options, (tableInfo) => { - let newFocus = tableInfo.focus; - // complete - const completed = formatter.completeTable(tableInfo.table, options); - if (completed.delimiterInserted && newFocus.row > 0) { - newFocus = newFocus.setRow(newFocus.row + 1); - } - // format - const formatted = formatter.formatTable(completed.table, options); - newFocus = newFocus.setOffset(exports._computeNewOffset(newFocus, completed.table, formatted, false)); - tableInfo.table = formatted.table; - tableInfo.focus = newFocus; - return func(tableInfo); - }); - } - /** - * Formats the table and applies any changes based on the difference between - * originalLines and the newTable. Should generally be the last function call - * in a TableEditor function. - */ - formatAndApply(options, range, originalLines, formulaLines, newTable, newFocus, moved = false) { - // format - const formatted = formatter.formatTable(newTable, options); - newFocus = newFocus.setOffset(exports._computeNewOffset(newFocus, newTable, formatted, moved)); - // apply - this._textEditor.transact(() => { - this._updateLines(range.start.row, range.end.row + 1, formatted.table.toLines(), originalLines); - if (moved) { - this._selectFocus(range.start.row, formatted.table, newFocus); - } - else { - this._moveToFocus(range.start.row, formatted.table, newFocus); - } - }); - this.resetSmartCursor(); - return { - range, - lines: originalLines, - formulaLines, - table: formatted.table, - focus: newFocus, - }; - } -} -exports.TableEditor = TableEditor; -}); - -var lib$1 = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.SortOrder = exports.TableEditor = exports.optionsWithDefaults = exports.defaultOptions = exports.ITextEditor = exports.shortestEditScript = exports.applyEditScript = exports.Delete = exports.Insert = exports.moveColumn = exports.deleteColumn = exports.insertColumn = exports.moveRow = exports.deleteRow = exports.insertRow = exports.alterAlignment = exports.formatTable = exports.completeTable = exports.FormatType = exports.readTable = exports.Table = exports.TableRow = exports.TableCell = exports.HeaderAlignment = exports.DefaultAlignment = exports.Alignment = exports.Focus = exports.Range = exports.Point = void 0; - -Object.defineProperty(exports, "Point", { enumerable: true, get: function () { return point.Point; } }); - -Object.defineProperty(exports, "Range", { enumerable: true, get: function () { return range.Range; } }); - -Object.defineProperty(exports, "Focus", { enumerable: true, get: function () { return focus.Focus; } }); - -Object.defineProperty(exports, "Alignment", { enumerable: true, get: function () { return alignment.Alignment; } }); -Object.defineProperty(exports, "DefaultAlignment", { enumerable: true, get: function () { return alignment.DefaultAlignment; } }); -Object.defineProperty(exports, "HeaderAlignment", { enumerable: true, get: function () { return alignment.HeaderAlignment; } }); - -Object.defineProperty(exports, "TableCell", { enumerable: true, get: function () { return tableCell.TableCell; } }); - -Object.defineProperty(exports, "TableRow", { enumerable: true, get: function () { return tableRow.TableRow; } }); - -Object.defineProperty(exports, "Table", { enumerable: true, get: function () { return table.Table; } }); - -Object.defineProperty(exports, "readTable", { enumerable: true, get: function () { return parser.readTable; } }); - -Object.defineProperty(exports, "FormatType", { enumerable: true, get: function () { return formatter.FormatType; } }); -Object.defineProperty(exports, "completeTable", { enumerable: true, get: function () { return formatter.completeTable; } }); -Object.defineProperty(exports, "formatTable", { enumerable: true, get: function () { return formatter.formatTable; } }); -Object.defineProperty(exports, "alterAlignment", { enumerable: true, get: function () { return formatter.alterAlignment; } }); -Object.defineProperty(exports, "insertRow", { enumerable: true, get: function () { return formatter.insertRow; } }); -Object.defineProperty(exports, "deleteRow", { enumerable: true, get: function () { return formatter.deleteRow; } }); -Object.defineProperty(exports, "moveRow", { enumerable: true, get: function () { return formatter.moveRow; } }); -Object.defineProperty(exports, "insertColumn", { enumerable: true, get: function () { return formatter.insertColumn; } }); -Object.defineProperty(exports, "deleteColumn", { enumerable: true, get: function () { return formatter.deleteColumn; } }); -Object.defineProperty(exports, "moveColumn", { enumerable: true, get: function () { return formatter.moveColumn; } }); - -Object.defineProperty(exports, "Insert", { enumerable: true, get: function () { return editScript.Insert; } }); -Object.defineProperty(exports, "Delete", { enumerable: true, get: function () { return editScript.Delete; } }); -Object.defineProperty(exports, "applyEditScript", { enumerable: true, get: function () { return editScript.applyEditScript; } }); -Object.defineProperty(exports, "shortestEditScript", { enumerable: true, get: function () { return editScript.shortestEditScript; } }); - -Object.defineProperty(exports, "ITextEditor", { enumerable: true, get: function () { return textEditor.ITextEditor; } }); - -Object.defineProperty(exports, "defaultOptions", { enumerable: true, get: function () { return options.defaultOptions; } }); -Object.defineProperty(exports, "optionsWithDefaults", { enumerable: true, get: function () { return options.optionsWithDefaults; } }); - -Object.defineProperty(exports, "TableEditor", { enumerable: true, get: function () { return tableEditor.TableEditor; } }); -Object.defineProperty(exports, "SortOrder", { enumerable: true, get: function () { return tableEditor.SortOrder; } }); -}); +(function (exports) { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.SortOrder = exports.TableEditor = exports.optionsWithDefaults = exports.defaultOptions = exports.ITextEditor = exports.shortestEditScript = exports.applyEditScript = exports.Delete = exports.Insert = exports.moveColumn = exports.deleteColumn = exports.insertColumn = exports.moveRow = exports.deleteRow = exports.insertRow = exports.alterAlignment = exports.formatTable = exports.completeTable = exports.FormatType = exports.readTable = exports.Table = exports.TableRow = exports.TableCell = exports.HeaderAlignment = exports.DefaultAlignment = exports.Alignment = exports.Focus = exports.Range = exports.Point = void 0; + var point_1 = point; + Object.defineProperty(exports, "Point", { enumerable: true, get: function () { return point_1.Point; } }); + var range_1 = range$1; + Object.defineProperty(exports, "Range", { enumerable: true, get: function () { return range_1.Range; } }); + var focus_1 = focus; + Object.defineProperty(exports, "Focus", { enumerable: true, get: function () { return focus_1.Focus; } }); + var alignment_1 = alignment; + Object.defineProperty(exports, "Alignment", { enumerable: true, get: function () { return alignment_1.Alignment; } }); + Object.defineProperty(exports, "DefaultAlignment", { enumerable: true, get: function () { return alignment_1.DefaultAlignment; } }); + Object.defineProperty(exports, "HeaderAlignment", { enumerable: true, get: function () { return alignment_1.HeaderAlignment; } }); + var table_cell_1 = tableCell; + Object.defineProperty(exports, "TableCell", { enumerable: true, get: function () { return table_cell_1.TableCell; } }); + var table_row_1 = tableRow; + Object.defineProperty(exports, "TableRow", { enumerable: true, get: function () { return table_row_1.TableRow; } }); + var table_1 = table; + Object.defineProperty(exports, "Table", { enumerable: true, get: function () { return table_1.Table; } }); + var parser_1 = parser; + Object.defineProperty(exports, "readTable", { enumerable: true, get: function () { return parser_1.readTable; } }); + var formatter_js_1 = formatter; + Object.defineProperty(exports, "FormatType", { enumerable: true, get: function () { return formatter_js_1.FormatType; } }); + Object.defineProperty(exports, "completeTable", { enumerable: true, get: function () { return formatter_js_1.completeTable; } }); + Object.defineProperty(exports, "formatTable", { enumerable: true, get: function () { return formatter_js_1.formatTable; } }); + Object.defineProperty(exports, "alterAlignment", { enumerable: true, get: function () { return formatter_js_1.alterAlignment; } }); + Object.defineProperty(exports, "insertRow", { enumerable: true, get: function () { return formatter_js_1.insertRow; } }); + Object.defineProperty(exports, "deleteRow", { enumerable: true, get: function () { return formatter_js_1.deleteRow; } }); + Object.defineProperty(exports, "moveRow", { enumerable: true, get: function () { return formatter_js_1.moveRow; } }); + Object.defineProperty(exports, "insertColumn", { enumerable: true, get: function () { return formatter_js_1.insertColumn; } }); + Object.defineProperty(exports, "deleteColumn", { enumerable: true, get: function () { return formatter_js_1.deleteColumn; } }); + Object.defineProperty(exports, "moveColumn", { enumerable: true, get: function () { return formatter_js_1.moveColumn; } }); + var edit_script_1 = editScript; + Object.defineProperty(exports, "Insert", { enumerable: true, get: function () { return edit_script_1.Insert; } }); + Object.defineProperty(exports, "Delete", { enumerable: true, get: function () { return edit_script_1.Delete; } }); + Object.defineProperty(exports, "applyEditScript", { enumerable: true, get: function () { return edit_script_1.applyEditScript; } }); + Object.defineProperty(exports, "shortestEditScript", { enumerable: true, get: function () { return edit_script_1.shortestEditScript; } }); + var text_editor_1 = textEditor; + Object.defineProperty(exports, "ITextEditor", { enumerable: true, get: function () { return text_editor_1.ITextEditor; } }); + var options_1 = options; + Object.defineProperty(exports, "defaultOptions", { enumerable: true, get: function () { return options_1.defaultOptions; } }); + Object.defineProperty(exports, "optionsWithDefaults", { enumerable: true, get: function () { return options_1.optionsWithDefaults; } }); + var table_editor_1 = tableEditor; + Object.defineProperty(exports, "TableEditor", { enumerable: true, get: function () { return table_editor_1.TableEditor; } }); + Object.defineProperty(exports, "SortOrder", { enumerable: true, get: function () { return table_editor_1.SortOrder; } }); +} (lib$1)); var defaultSettings = { formatType: lib$1.FormatType.NORMAL, @@ -28184,23 +28384,16 @@ var ObsidianTextEditor = /** @class */ (function () { var _this = this; this.getCursorPosition = function () { var position = _this.editor.getCursor(); - console.debug("getCursorPosition was called: line " + position.line + ", ch " + position.ch); return new lib$1.Point(position.line, position.ch); }; this.setCursorPosition = function (pos) { - console.debug("setCursorPosition was called: line " + pos.row + ", ch " + pos.column); _this.editor.setCursor({ line: pos.row, ch: pos.column }); }; this.setSelectionRange = function (range) { - console.debug('setSelectionRange was called'); _this.editor.setSelection({ line: range.start.row, ch: range.start.column }, { line: range.end.row, ch: range.end.column }); }; - this.getLastRow = function () { - console.debug('getLastRow was called'); - return _this.editor.lastLine(); - }; + this.getLastRow = function () { return _this.editor.lastLine(); }; this.acceptsTableEdit = function (row) { - console.debug("acceptsTableEdit was called on row " + row); var cache = _this.app.metadataCache.getFileCache(_this.file); if (!cache.sections) { return true; @@ -28212,7 +28405,6 @@ var ObsidianTextEditor = /** @class */ (function () { section.type !== 'math'; }); if (table === undefined) { - console.debug('acceptsTableEdit returning false, table not found'); return false; } // Check that the text `-tx-` is not on the line immediately preceeding the @@ -28227,13 +28419,8 @@ var ObsidianTextEditor = /** @class */ (function () { } return true; }; - this.getLine = function (row) { - console.debug("getLine was called on line " + row); - return _this.editor.getLine(row); - }; + this.getLine = function (row) { return _this.editor.getLine(row); }; this.insertLine = function (row, line) { - console.debug("insertLine was called at line " + row); - console.debug("New line: " + line); if (row > _this.getLastRow()) { _this.editor.replaceRange('\n' + line, { line: row, ch: 0 }); } @@ -28242,7 +28429,6 @@ var ObsidianTextEditor = /** @class */ (function () { } }; this.deleteLine = function (row) { - console.debug("deleteLine was called on line " + row); // If on the last line of the file, we cannot replace to the next row. // Instead, replace all the contents of this line. if (row === _this.getLastRow()) { @@ -28560,13 +28746,18 @@ var TableEditorPlugin = /** @class */ (function (_super) { preventDefault: true, }); } - return state.Prec.override(view.keymap.of(keymaps)); + return state.Prec.highest(view.keymap.of(keymaps)); }; _this.newPerformTableActionCM6 = function (fn) { return function () { - var leaf = _this.app.workspace.activeLeaf; - if (leaf.view instanceof obsidian.MarkdownView) { - var te = new TableEditor(_this.app, leaf.view.file, leaf.view.editor, _this.settings); + var view = _this.app.workspace.getActiveViewOfType(obsidian.MarkdownView); + if (view) { + var currentMode = view.currentMode; + if ('sourceMode' in currentMode && !currentMode.sourceMode) { + // Avoid conflicting with WYSIWYG tables in live preview mode. + return false; + } + var te = new TableEditor(_this.app, view.file, view.editor, _this.settings); if (te.cursorIsInTable()) { fn(te); return true; @@ -28664,20 +28855,13 @@ var TableEditorPlugin = /** @class */ (function (_super) { return [4 /*yield*/, this.loadSettings()]; case 1: _a.sent(); - this.registerView(TableControlsViewType, function (leaf) { - return (_this.tableControlsView = new TableControlsView(leaf, _this.settings)); - }); + this.registerView(TableControlsViewType, function (leaf) { return new TableControlsView(leaf, _this.settings); }); addIcons(); if (this.settings.showRibbonIcon) { this.addRibbonIcon('spreadsheet', 'Advanced Tables Toolbar', function () { _this.toggleTableControlsView(); }); } - this.cmEditors = []; - this.registerCodeMirror(function (cm) { - _this.cmEditors.push(cm); - cm.on('keydown', _this.handleKeyDown); - }); // CM6 editor extension for remapping keys this.registerEditorExtension(this.makeEditorExtension()); this.addCommand({ @@ -28725,9 +28909,10 @@ var TableEditorPlugin = /** @class */ (function (_super) { this.addCommand({ id: 'format-all-tables', name: 'Format all tables in this file', - editorCheckCallback: this.newPerformTableAction(function (te) { + editorCallback: function (editor, view) { + var te = new TableEditor(_this.app, view.file, editor, _this.settings); te.formatAllTables(); - }), + }, }); this.addCommand({ id: 'insert-column', @@ -28871,13 +29056,6 @@ var TableEditorPlugin = /** @class */ (function (_super) { }); }); }; - TableEditorPlugin.prototype.onunload = function () { - var _this = this; - console.log('unloading markdown-table-editor plugin'); - this.cmEditors.forEach(function (cm) { - cm.off('keydown', _this.handleKeyDown); - }); - }; TableEditorPlugin.prototype.loadSettings = function () { return __awaiter(this, void 0, void 0, function () { var settingsOptions, _a, _b, _c; @@ -28986,4 +29164,4 @@ var buyMeACoffee = "\n<svg width=\"150\" height=\"42\" viewBox=\"0 0 260 73\" fi var paypal = "\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"150\" height=\"40\">\n<path fill=\"#253B80\" d=\"M46.211 6.749h-6.839a.95.95 0 0 0-.939.802l-2.766 17.537a.57.57 0 0 0 .564.658h3.265a.95.95 0 0 0 .939-.803l.746-4.73a.95.95 0 0 1 .938-.803h2.165c4.505 0 7.105-2.18 7.784-6.5.306-1.89.013-3.375-.872-4.415-.972-1.142-2.696-1.746-4.985-1.746zM47 13.154c-.374 2.454-2.249 2.454-4.062 2.454h-1.032l.724-4.583a.57.57 0 0 1 .563-.481h.473c1.235 0 2.4 0 3.002.704.359.42.469 1.044.332 1.906zM66.654 13.075h-3.275a.57.57 0 0 0-.563.481l-.145.916-.229-.332c-.709-1.029-2.29-1.373-3.868-1.373-3.619 0-6.71 2.741-7.312 6.586-.313 1.918.132 3.752 1.22 5.031.998 1.176 2.426 1.666 4.125 1.666 2.916 0 4.533-1.875 4.533-1.875l-.146.91a.57.57 0 0 0 .562.66h2.95a.95.95 0 0 0 .939-.803l1.77-11.209a.568.568 0 0 0-.561-.658zm-4.565 6.374c-.316 1.871-1.801 3.127-3.695 3.127-.951 0-1.711-.305-2.199-.883-.484-.574-.668-1.391-.514-2.301.295-1.855 1.805-3.152 3.67-3.152.93 0 1.686.309 2.184.892.499.589.697 1.411.554 2.317zM84.096 13.075h-3.291a.954.954 0 0 0-.787.417l-4.539 6.686-1.924-6.425a.953.953 0 0 0-.912-.678h-3.234a.57.57 0 0 0-.541.754l3.625 10.638-3.408 4.811a.57.57 0 0 0 .465.9h3.287a.949.949 0 0 0 .781-.408l10.946-15.8a.57.57 0 0 0-.468-.895z\"/>\n<path fill=\"#179BD7\" d=\"M94.992 6.749h-6.84a.95.95 0 0 0-.938.802l-2.766 17.537a.569.569 0 0 0 .562.658h3.51a.665.665 0 0 0 .656-.562l.785-4.971a.95.95 0 0 1 .938-.803h2.164c4.506 0 7.105-2.18 7.785-6.5.307-1.89.012-3.375-.873-4.415-.971-1.142-2.694-1.746-4.983-1.746zm.789 6.405c-.373 2.454-2.248 2.454-4.062 2.454h-1.031l.725-4.583a.568.568 0 0 1 .562-.481h.473c1.234 0 2.4 0 3.002.704.359.42.468 1.044.331 1.906zM115.434 13.075h-3.273a.567.567 0 0 0-.562.481l-.145.916-.23-.332c-.709-1.029-2.289-1.373-3.867-1.373-3.619 0-6.709 2.741-7.311 6.586-.312 1.918.131 3.752 1.219 5.031 1 1.176 2.426 1.666 4.125 1.666 2.916 0 4.533-1.875 4.533-1.875l-.146.91a.57.57 0 0 0 .564.66h2.949a.95.95 0 0 0 .938-.803l1.771-11.209a.571.571 0 0 0-.565-.658zm-4.565 6.374c-.314 1.871-1.801 3.127-3.695 3.127-.949 0-1.711-.305-2.199-.883-.484-.574-.666-1.391-.514-2.301.297-1.855 1.805-3.152 3.67-3.152.93 0 1.686.309 2.184.892.501.589.699 1.411.554 2.317zM119.295 7.23l-2.807 17.858a.569.569 0 0 0 .562.658h2.822c.469 0 .867-.34.939-.803l2.768-17.536a.57.57 0 0 0-.562-.659h-3.16a.571.571 0 0 0-.562.482z\"/>\n<path fill=\"#253B80\" d=\"M7.266 29.154l.523-3.322-1.165-.027H1.061L4.927 1.292a.316.316 0 0 1 .314-.268h9.38c3.114 0 5.263.648 6.385 1.927.526.6.861 1.227 1.023 1.917.17.724.173 1.589.007 2.644l-.012.077v.676l.526.298a3.69 3.69 0 0 1 1.065.812c.45.513.741 1.165.864 1.938.127.795.085 1.741-.123 2.812-.24 1.232-.628 2.305-1.152 3.183a6.547 6.547 0 0 1-1.825 2c-.696.494-1.523.869-2.458 1.109-.906.236-1.939.355-3.072.355h-.73c-.522 0-1.029.188-1.427.525a2.21 2.21 0 0 0-.744 1.328l-.055.299-.924 5.855-.042.215c-.011.068-.03.102-.058.125a.155.155 0 0 1-.096.035H7.266z\"/>\n<path fill=\"#179BD7\" d=\"M23.048 7.667c-.028.179-.06.362-.096.55-1.237 6.351-5.469 8.545-10.874 8.545H9.326c-.661 0-1.218.48-1.321 1.132L6.596 26.83l-.399 2.533a.704.704 0 0 0 .695.814h4.881c.578 0 1.069-.42 1.16-.99l.048-.248.919-5.832.059-.32c.09-.572.582-.992 1.16-.992h.73c4.729 0 8.431-1.92 9.513-7.476.452-2.321.218-4.259-.978-5.622a4.667 4.667 0 0 0-1.336-1.03z\"/>\n<path fill=\"#222D65\" d=\"M21.754 7.151a9.757 9.757 0 0 0-1.203-.267 15.284 15.284 0 0 0-2.426-.177h-7.352a1.172 1.172 0 0 0-1.159.992L8.05 17.605l-.045.289a1.336 1.336 0 0 1 1.321-1.132h2.752c5.405 0 9.637-2.195 10.874-8.545.037-.188.068-.371.096-.55a6.594 6.594 0 0 0-1.017-.429 9.045 9.045 0 0 0-.277-.087z\"/>\n<path fill=\"#253B80\" d=\"M9.614 7.699a1.169 1.169 0 0 1 1.159-.991h7.352c.871 0 1.684.057 2.426.177a9.757 9.757 0 0 1 1.481.353c.365.121.704.264 1.017.429.368-2.347-.003-3.945-1.272-5.392C20.378.682 17.853 0 14.622 0h-9.38c-.66 0-1.223.48-1.325 1.133L.01 25.898a.806.806 0 0 0 .795.932h5.791l1.454-9.225 1.564-9.906z\"/>\n</svg>"; module.exports = TableEditorPlugin; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsInNyYy9pY29ucy50cyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL3BvaW50LmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvcmFuZ2UuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9mb2N1cy5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL2FsaWdubWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL3RhYmxlLWNlbGwuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi90YWJsZS1yb3cuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9uZXZlcnRocm93L25ldmVydGhyb3cuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9jYWxjL2FzdF91dGlscy5qcyIsIm5vZGVfbW9kdWxlcy9kZWNpbWFsLmpzL2RlY2ltYWwuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2xvZGFzaC5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL2NhbGMvcmVzdWx0cy5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL2NhbGMvYWxnZWJyYWljX29wZXJhdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL2NhbGMvY29uZGl0aW9uYWxfZnVuY3Rpb24uanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9jYWxjL2NvbnN0YW50LmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvY2FsYy9jb2x1bW4uanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9jYWxjL3Jvdy5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL2NhbGMvcmVmZXJlbmNlLmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvY2FsYy9yYW5nZS5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL2NhbGMvZGVzdGluYXRpb24uanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9jYWxjL2Rpc3BsYXlfZGlyZWN0aXZlLmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvY2FsYy9zaW5nbGVfcGFyYW1fZnVuY3Rpb24uanMiLCJub2RlX21vZHVsZXMvZWJuZi9kaXN0L1Rva2VuRXJyb3IuanMiLCJub2RlX21vZHVsZXMvZWJuZi9kaXN0L1BhcnNlci5qcyIsIm5vZGVfbW9kdWxlcy9lYm5mL2Rpc3QvU2VtYW50aWNIZWxwZXJzLmpzIiwibm9kZV9tb2R1bGVzL2VibmYvZGlzdC9HcmFtbWFycy9CTkYuanMiLCJub2RlX21vZHVsZXMvZWJuZi9kaXN0L0dyYW1tYXJzL1czQ0VCTkYuanMiLCJub2RlX21vZHVsZXMvZWJuZi9kaXN0L0dyYW1tYXJzL0N1c3RvbS5qcyIsIm5vZGVfbW9kdWxlcy9lYm5mL2Rpc3QvR3JhbW1hcnMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZWJuZi9kaXN0L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvY2FsYy9jYWxjLmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvdGFibGUuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9wYXJzZXIuanMiLCJub2RlX21vZHVsZXMvbWVhdy9saWIvaW5kZXgubWpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvZm9ybWF0dGVyLmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvZWRpdC1zY3JpcHQuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi90ZXh0LWVkaXRvci5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL29wdGlvbnMuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi90YWJsZS1lZGl0b3IuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9pbmRleC5qcyIsInNyYy9zZXR0aW5ncy50cyIsInNyYy9vYnNpZGlhbi10ZXh0LWVkaXRvci50cyIsInNyYy90YWJsZS1lZGl0b3IudHMiLCJzcmMvdGFibGUtY29udHJvbHMtdmlldy50cyIsInNyYy9tYWluLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcblBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcblBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbi8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlICovXHJcblxyXG52YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcclxuICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcclxuICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19hc3NpZ24gPSBmdW5jdGlvbigpIHtcclxuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7XHJcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XHJcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3Jlc3QocywgZSkge1xyXG4gICAgdmFyIHQgPSB7fTtcclxuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxyXG4gICAgICAgIHRbcF0gPSBzW3BdO1xyXG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxyXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XHJcbiAgICAgICAgfVxyXG4gICAgcmV0dXJuIHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XHJcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcclxuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XHJcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XHJcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xyXG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcclxuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XHJcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcclxuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XHJcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cclxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2NyZWF0ZUJpbmRpbmcgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH0pO1xyXG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIG9bazJdID0gbVtrXTtcclxufSk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHBvcnRTdGFyKG0sIG8pIHtcclxuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgcCkpIF9fY3JlYXRlQmluZGluZyhvLCBtLCBwKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fdmFsdWVzKG8pIHtcclxuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XHJcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcclxuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcclxuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheXMoKSB7XHJcbiAgICBmb3IgKHZhciBzID0gMCwgaSA9IDAsIGlsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGlsOyBpKyspIHMgKz0gYXJndW1lbnRzW2ldLmxlbmd0aDtcclxuICAgIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcclxuICAgICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcclxuICAgICAgICAgICAgcltrXSA9IGFbal07XHJcbiAgICByZXR1cm4gcjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0KHYpIHtcclxuICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0dlbmVyYXRvcih0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlmIChnW25dKSBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7IH1cclxuICAgIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHsgcmVzdW1lKFwibmV4dFwiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNEZWxlZ2F0b3Iobykge1xyXG4gICAgdmFyIGksIHA7XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlbbl0gPSBvW25dID8gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChwID0gIXApID8geyB2YWx1ZTogX19hd2FpdChvW25dKHYpKSwgZG9uZTogbiA9PT0gXCJyZXR1cm5cIiB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIG0gPSBvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgaTtcclxuICAgIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIGQsIHYpIHsgUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZnVuY3Rpb24odikgeyByZXNvbHZlKHsgdmFsdWU6IHYsIGRvbmU6IGQgfSk7IH0sIHJlamVjdCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWFrZVRlbXBsYXRlT2JqZWN0KGNvb2tlZCwgcmF3KSB7XHJcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxyXG4gICAgcmV0dXJuIGNvb2tlZDtcclxufTtcclxuXHJcbnZhciBfX3NldE1vZHVsZURlZmF1bHQgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcImRlZmF1bHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdiB9KTtcclxufSkgOiBmdW5jdGlvbihvLCB2KSB7XHJcbiAgICBvW1wiZGVmYXVsdFwiXSA9IHY7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChrICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgX19jcmVhdGVCaW5kaW5nKHJlc3VsdCwgbW9kLCBrKTtcclxuICAgIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnREZWZhdWx0KG1vZCkge1xyXG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBkZWZhdWx0OiBtb2QgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRHZXQocmVjZWl2ZXIsIHByaXZhdGVNYXApIHtcclxuICAgIGlmICghcHJpdmF0ZU1hcC5oYXMocmVjZWl2ZXIpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2VcIik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcHJpdmF0ZU1hcC5nZXQocmVjZWl2ZXIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZFNldChyZWNlaXZlciwgcHJpdmF0ZU1hcCwgdmFsdWUpIHtcclxuICAgIGlmICghcHJpdmF0ZU1hcC5oYXMocmVjZWl2ZXIpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcImF0dGVtcHRlZCB0byBzZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2VcIik7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlTWFwLnNldChyZWNlaXZlciwgdmFsdWUpO1xyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG59XHJcbiIsImltcG9ydCB7IGFkZEljb24gfSBmcm9tICdvYnNpZGlhbic7XG5cbmV4cG9ydCBjb25zdCBpY29uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgc3ByZWFkc2hlZXQ6IGBcbjxzdmcgdmVyc2lvbj1cIjEuMVwiIHZpZXdCb3g9XCIwIDAgNDgyLjgxIDQ4Mi44MVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJtNDU3LjU4IDI1LjQ2NC00MzIuODMgMC40MjE1MWMtMTMuNjU4IDAuMDEzMzE0LTI0Ljc1OCAxMS4xMTUtMjQuNzU3IDI0Ljc1N2wwLjAzMTAyNCAzNDcuNDVjNy40ODMzZS00IDguMzgwOCA0LjIxMSAxNS43NzIgMTAuNjA4IDIwLjI1OSAzLjQ1MzMgMi40NDk5IDUuMDcxNiAzLjI5MDEgOC44NzkgMy45MDIyIDEuNzAzMyAwLjM3MzMzIDMuNDU2MSAwLjU5NDcxIDUuMjY5MiAwLjU5Mjk0bDQzMi44NC0wLjQyMTUxYzEuODA5LTFlLTMgMy41NjE4LTAuMjE4MjMgNS4yNTY4LTAuNTkyOTRoMS4yMTc0di0wLjM3MTk2YzEwLjUwNS0yLjg3MjcgMTguMjc5LTEyLjM5NyAxOC4yNzgtMjMuNzg4bC0wLjAzMS0zNDcuNDNjMWUtMyAtMTMuNjQ5LTExLjEwNy0yNC43NjMtMjQuNzY4LTI0Ljc2M3ptMy41NDUzIDI0Ljc2M3Y3MS4zNDRoLTE2My4zMXYtNzQuODg2aDE1OS43NmMxLjk2NDEgMC4wMDE0IDMuNTQ2NyAxLjU5MjIgMy41NDY3IDMuNTQyNXptLTEuNjczNyAzNTAuMzdoLTE2MS42di02Ny4yMDdoMTYzLjMxdjY0LjI2OGMxZS0zIDEuMjU3Mi0wLjcwNTQ5IDIuMzIxLTEuNzAzMyAyLjkzODZ6bS00MzguMjEtMi41MTcxdi02NC4yNjhoNzYuNjQ2djY3LjIwN2gtNzQuOTQyYy0wLjk5Nzg0LTAuNjE3NjUtMS43MDMzLTEuNjgxNC0xLjcwMzMtMi45Mzg2em0yNTUuMjgtMTU1LjE4djY5LjY4OGgtMTU3LjQydi02OS42ODh6bTAgOTAuOTEzdjY3LjIwN2gtMTU3LjQydi02Ny4yMDd6bS0wLjAzMS0yMTEuODNoLTE1Ny40MnYtNzQuODg2aDE1Ny40MnptMCAyMS4yMjZ2NzcuODI2aC0xNTcuNDJ2LTc3LjgyNnptLTE3OC42NCA3Ny44MjZoLTc2LjY0NnYtNzcuODI2aDc2LjY0NnptMC4wMzEwMiAyMS44NjJ2NjkuNjg4aC03Ni42NDZ2LTY5LjY4OHptMTk5Ljk1IDY5LjI2OHYtNjkuNjk3aDE2My4zMXY2OS42OTd6bS0wLjAzMS05MS41NTJ2LTc3LjgyNmgxNjMuMzF2NzcuODI2elwiIHN0cm9rZS13aWR0aD1cIjEuMzcyNVwiLz5cbjwvc3ZnPmAsXG4gIGFsaWduTGVmdDogYFxuPHN2ZyBjbGFzcz1cIndpZGdldC1pY29uXCIgZW5hYmxlLWJhY2tncm91bmQ9XCJuZXcgMCAwIDUxMiA1MTJcIiB2ZXJzaW9uPVwiMS4xXCIgdmlld0JveD1cIjAgMCA1MTIgNTEyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICA8ZyB0cmFuc2Zvcm09XCJtYXRyaXgoLTEgMCAwIDEgNTEyIDApXCI+XG4gICAgPHBhdGggZD1cIm01MDEuMzMgMTcwLjY3aC0zMjBjLTUuODk2IDAtMTAuNjY3IDQuNzcxLTEwLjY2NyAxMC42Njd2MjEuMzMzYzAgNS44OTYgNC43NzEgMTAuNjY3IDEwLjY2NyAxMC42NjdoMzIwYzUuODk2IDAgMTAuNjY3LTQuNzcxIDEwLjY2Ny0xMC42Njd2LTIxLjMzM2MwLTUuODk2LTQuNzcxLTEwLjY2Ny0xMC42NjctMTAuNjY3elwiLz5cbiAgICA8cGF0aCBkPVwibTUwMS4zMyAyOTguNjdoLTQ5MC42N2MtNS44OTYgMC0xMC42NjcgNC43NzEtMTAuNjY3IDEwLjY2NnYyMS4zMzNjMCA1Ljg5NiA0Ljc3MSAxMC42NjcgMTAuNjY3IDEwLjY2N2g0OTAuNjdjNS44OTYgMCAxMC42NjctNC43NzEgMTAuNjY3LTEwLjY2N3YtMjEuMzMzYy0xZS0zIC01Ljg5NS00Ljc3Mi0xMC42NjYtMTAuNjY4LTEwLjY2NnpcIi8+XG4gICAgPHBhdGggZD1cIm01MDEuMzMgNDI2LjY3aC0zMjBjLTUuODk2IDAtMTAuNjY3IDQuNzcxLTEwLjY2NyAxMC42Njd2MjEuMzMzYzAgNS44OTYgNC43NzEgMTAuNjY3IDEwLjY2NyAxMC42NjdoMzIwYzUuODk2IDAgMTAuNjY3LTQuNzcxIDEwLjY2Ny0xMC42Njd2LTIxLjMzM2MwLTUuODk2LTQuNzcxLTEwLjY2Ny0xMC42NjctMTAuNjY3elwiLz5cbiAgICA8cGF0aCBkPVwibTUwMS4zMyA0Mi42NjdoLTQ5MC42N2MtNS44OTYgMC0xMC42NjcgNC43NzEtMTAuNjY3IDEwLjY2NnYyMS4zMzNjMCA1Ljg5NiA0Ljc3MSAxMC42NjcgMTAuNjY3IDEwLjY2N2g0OTAuNjdjNS44OTYgMCAxMC42NjctNC43NzEgMTAuNjY3LTEwLjY2N3YtMjEuMzMzYy0xZS0zIC01Ljg5NS00Ljc3Mi0xMC42NjYtMTAuNjY4LTEwLjY2NnpcIi8+XG4gIDwvZz5cbjwvc3ZnPmAsXG4gIGFsaWduQ2VudGVyOiBgXG48c3ZnIGNsYXNzPVwid2lkZ2V0LWljb25cIiBlbmFibGUtYmFja2dyb3VuZD1cIm5ldyAwIDAgNTEyIDUxMlwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxnIHRyYW5zZm9ybT1cIm1hdHJpeCgtMSAwIDAgMSA1MTIgMClcIj5cbiAgICA8cGF0aCBkPVwibTQxNiAxNzAuNjdoLTMyMGMtNS44OTYgMC0xMC42NjcgNC43NzEtMTAuNjY3IDEwLjY2N3YyMS4zMzNjMCA1Ljg5NiA0Ljc3MSAxMC42NjcgMTAuNjY3IDEwLjY2N2gzMjBjNS44OTYgMCAxMC42NjctNC43NzEgMTAuNjY3LTEwLjY2N3YtMjEuMzMzYzAtNS44OTYtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42Njd6XCIvPlxuICAgIDxwYXRoIGQ9XCJtNTAxLjMzIDI5OC42N2gtNDkwLjY3Yy01Ljg5NiAwLTEwLjY2NyA0Ljc3MS0xMC42NjcgMTAuNjY2djIxLjMzM2MwIDUuODk2IDQuNzcxIDEwLjY2NyAxMC42NjcgMTAuNjY3aDQ5MC42N2M1Ljg5NiAwIDEwLjY2Ny00Ljc3MSAxMC42NjctMTAuNjY3di0yMS4zMzNjLTFlLTMgLTUuODk1LTQuNzcyLTEwLjY2Ni0xMC42NjgtMTAuNjY2elwiLz5cbiAgICA8cGF0aCBkPVwibTQxNiA0MjYuNjdoLTMyMGMtNS44OTYgMC0xMC42NjcgNC43NzEtMTAuNjY3IDEwLjY2N3YyMS4zMzNjMCA1Ljg5NiA0Ljc3MSAxMC42NjcgMTAuNjY3IDEwLjY2N2gzMjBjNS44OTYgMCAxMC42NjctNC43NzEgMTAuNjY3LTEwLjY2N3YtMjEuMzMzYzAtNS44OTYtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42Njd6XCIvPlxuICAgIDxwYXRoIGQ9XCJtNTAxLjMzIDQyLjY2N2gtNDkwLjY3Yy01Ljg5NiAwLTEwLjY2NyA0Ljc3MS0xMC42NjcgMTAuNjY2djIxLjMzM2MwIDUuODk2IDQuNzcxIDEwLjY2NyAxMC42NjcgMTAuNjY3aDQ5MC42N2M1Ljg5NiAwIDEwLjY2Ny00Ljc3MSAxMC42NjctMTAuNjY3di0yMS4zMzNjLTFlLTMgLTUuODk1LTQuNzcyLTEwLjY2Ni0xMC42NjgtMTAuNjY2elwiLz5cbiAgPC9nPlxuPC9zdmc+YCxcbiAgYWxpZ25SaWdodDogYFxuPHN2ZyBjbGFzcz1cIndpZGdldC1pY29uXCIgZW5hYmxlLWJhY2tncm91bmQ9XCJuZXcgMCAwIDUxMiA1MTJcIiB2ZXJzaW9uPVwiMS4xXCIgdmlld0JveD1cIjAgMCA1MTIgNTEyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICA8cGF0aCBkPVwibTUwMS4zMyAxNzAuNjdoLTMyMGMtNS44OTYgMC0xMC42NjcgNC43NzEtMTAuNjY3IDEwLjY2N3YyMS4zMzNjMCA1Ljg5NiA0Ljc3MSAxMC42NjcgMTAuNjY3IDEwLjY2N2gzMjBjNS44OTYgMCAxMC42NjctNC43NzEgMTAuNjY3LTEwLjY2N3YtMjEuMzMzYzAtNS44OTYtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42Njd6XCIvPlxuICA8cGF0aCBkPVwibTUwMS4zMyAyOTguNjdoLTQ5MC42N2MtNS44OTYgMC0xMC42NjcgNC43NzEtMTAuNjY3IDEwLjY2NnYyMS4zMzNjMCA1Ljg5NiA0Ljc3MSAxMC42NjcgMTAuNjY3IDEwLjY2N2g0OTAuNjdjNS44OTYgMCAxMC42NjctNC43NzEgMTAuNjY3LTEwLjY2N3YtMjEuMzMzYy0xZS0zIC01Ljg5NS00Ljc3Mi0xMC42NjYtMTAuNjY4LTEwLjY2NnpcIi8+XG4gIDxwYXRoIGQ9XCJtNTAxLjMzIDQyNi42N2gtMzIwYy01Ljg5NiAwLTEwLjY2NyA0Ljc3MS0xMC42NjcgMTAuNjY3djIxLjMzM2MwIDUuODk2IDQuNzcxIDEwLjY2NyAxMC42NjcgMTAuNjY3aDMyMGM1Ljg5NiAwIDEwLjY2Ny00Ljc3MSAxMC42NjctMTAuNjY3di0yMS4zMzNjMC01Ljg5Ni00Ljc3MS0xMC42NjctMTAuNjY3LTEwLjY2N3pcIi8+XG4gIDxwYXRoIGQ9XCJtNTAxLjMzIDQyLjY2N2gtNDkwLjY3Yy01Ljg5NiAwLTEwLjY2NyA0Ljc3MS0xMC42NjcgMTAuNjY2djIxLjMzM2MwIDUuODk2IDQuNzcxIDEwLjY2NyAxMC42NjcgMTAuNjY3aDQ5MC42N2M1Ljg5NiAwIDEwLjY2Ny00Ljc3MSAxMC42NjctMTAuNjY3di0yMS4zMzNjLTFlLTMgLTUuODk1LTQuNzcyLTEwLjY2Ni0xMC42NjgtMTAuNjY2elwiLz5cbjwvc3ZnPmAsXG4gIGRlbGV0ZUNvbHVtbjogYFxuPHN2ZyBjbGFzcz1cIndpZGdldC1pY29uXCIgZW5hYmxlLWJhY2tncm91bmQ9XCJuZXcgMCAwIDI2IDI2XCIgdmVyc2lvbj1cIjEuMVwiIHZpZXdCb3g9XCIwIDAgMjYgMjZcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxwYXRoIGQ9XCJtMTMuNTk0IDIwLjg1djMuMTVoLTEwdi0yMmgxMHYzLjE1YzAuNjMzLTAuMzIzIDEuMzA0LTAuNTY1IDItMC43Mjd2LTMuNDIzYzAtMC41NTEtMC40NDgtMS0xLTFoLTEyYy0wLjU1IDAtMSAwLjQ0OS0xIDF2MjRjMCAwLjU1MSAwLjQ0OSAxIDEgMWgxMmMwLjU1MiAwIDEtMC40NDkgMS0xdi0zLjQyNGMtMC42OTYtMC4xNjEtMS4zNjctMC40MDMtMi0wLjcyNnpcIi8+XG4gIDxwYXRoIGQ9XCJtMTcuNTk0IDYuMTg4Yy0zLjc2MiAwLTYuODEzIDMuMDUxLTYuODEyIDYuODEzLTFlLTMgMy43NjEgMy4wNSA2LjgxMiA2LjgxMiA2LjgxMnM2LjgxMy0zLjA1MSA2LjgxMy02LjgxMy0zLjA1Mi02LjgxMi02LjgxMy02LjgxMnptMy42MzIgNy44MDItNy4yNjcgMWUtM3YtMS45ODJoNy4yNjhsLTFlLTMgMS45ODF6XCIvPlxuPC9zdmc+YCxcbiAgZGVsZXRlUm93OiBgXG48c3ZnIGNsYXNzPVwid2lkZ2V0LWljb25cIiBlbmFibGUtYmFja2dyb3VuZD1cIm5ldyAwIDAgMTUuMzgxIDE1LjM4MVwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiMCAwIDE1LjM4MSAxNS4zODFcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxwYXRoIGQ9XCJNMCwxLjczMnY3LjczMmg2LjA1M2MwLTAuMDM1LTAuMDA0LTAuMDctMC4wMDQtMC4xMDRjMC0wLjQzNCwwLjA2MS0wLjg1NCwwLjE2NS0xLjI1NUgxLjM2VjMuMDkyICAgIGgxMi42NjJ2Mi4xOTJjMC41NDYsMC4zOTYsMS4wMSwwLjg5NywxLjM1OSwxLjQ3N1YxLjczMkgwelwiLz5cbiAgPHBhdGggZD1cIm0xMS4xOTYgNS4yOGMtMi4zMDcgMC00LjE4MyAxLjg3Ny00LjE4MyA0LjE4NCAwIDIuMzA4IDEuODc2IDQuMTg1IDQuMTgzIDQuMTg1IDIuMzA5IDAgNC4xODUtMS44NzcgNC4xODUtNC4xODUgMC0yLjMwNy0xLjg3Ni00LjE4NC00LjE4NS00LjE4NHptMCA3LjIzM2MtMS42NzkgMC0zLjA0Ny0xLjM2Ny0zLjA0Ny0zLjA0OSAwLTEuNjggMS4zNjgtMy4wNDkgMy4wNDctMy4wNDkgMS42ODQgMCAzLjA1IDEuMzY5IDMuMDUgMy4wNDkgMCAxLjY4Mi0xLjM2NiAzLjA0OS0zLjA1IDMuMDQ5elwiLz5cbiAgPHJlY3QgeD1cIjkuMzEyXCIgeT1cIjguNzU5XCIgd2lkdGg9XCIzLjg0NFwiIGhlaWdodD1cIjEuMTA0XCIvPlxuPC9zdmc+YCxcbiAgaW5zZXJ0Q29sdW1uOiBgXG48c3ZnIGNsYXNzPVwid2lkZ2V0LWljb25cIiB2ZXJzaW9uPVwiMS4xXCIgdmlld0JveD1cIi0yMSAwIDUxMiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxwYXRoIGQ9XCJtMjg4IDEwNi42N2MtMy45MjU4IDAtNy44NTE2LTEuNDI5Ny0xMC45MjItNC4zMTI1bC04MC03NC42NjRjLTQuODAwOC00LjQ4MDUtNi4zNzg5LTExLjQ1Ny0zLjk2ODgtMTcuNTU5IDIuNDEwMi02LjEwMTYgOC4zMjAzLTEwLjEzMyAxNC44OTEtMTAuMTMzaDE2MGM2LjU3MDMgMCAxMi40OCA0LjAxMTcgMTQuODkxIDEwLjEzMyAyLjQxMDIgNi4xMjUgMC44MzIwMyAxMy4wNzgtMy45Njg4IDE3LjU1OWwtODAgNzQuNjY0Yy0zLjA3MDMgMi44ODI4LTYuOTk2MSA0LjMxMjUtMTAuOTIyIDQuMzEyNXptLTM5LjQwMi03NC42NjggMzkuNDAyIDM2Ljc3NyAzOS40MDItMzYuNzc3elwiLz5cbiAgPHBhdGggZD1cIm00MzIgNTEyaC01My4zMzJjLTIwLjU5IDAtMzcuMzM2LTE2Ljc0Ni0zNy4zMzYtMzcuMzMydi0zMzAuNjdjMC0yMC41ODYgMTYuNzQ2LTM3LjMzMiAzNy4zMzYtMzcuMzMyaDUzLjMzMmMyMC41ODYgMCAzNy4zMzIgMTYuNzQ2IDM3LjMzMiAzNy4zMzJ2MzMwLjY3YzAgMjAuNTg2LTE2Ljc0NiAzNy4zMzItMzcuMzMyIDM3LjMzMnptLTUzLjMzMi0zNzMuMzNjLTIuOTQ1MyAwLTUuMzM1OSAyLjM4NjctNS4zMzU5IDUuMzMydjMzMC42N2MwIDIuOTQxNCAyLjM5MDYgNS4zMzIgNS4zMzU5IDUuMzMyaDUzLjMzMmMyLjk0NTMgMCA1LjMzMi0yLjM5MDYgNS4zMzItNS4zMzJ2LTMzMC42N2MwLTIuOTQ1My0yLjM4NjctNS4zMzItNS4zMzItNS4zMzJ6XCIvPlxuICA8cGF0aCBkPVwibTE5Ny4zMyA1MTJoLTE2MGMtMjAuNTg2IDAtMzcuMzMyLTE2Ljc0Ni0zNy4zMzItMzcuMzMydi0zMzAuNjdjMC0yMC41ODYgMTYuNzQ2LTM3LjMzMiAzNy4zMzItMzcuMzMyaDE2MGMyMC41OSAwIDM3LjMzNiAxNi43NDYgMzcuMzM2IDM3LjMzMnYzMzAuNjdjMCAyMC41ODYtMTYuNzQ2IDM3LjMzMi0zNy4zMzYgMzcuMzMyem0tMTYwLTM3My4zM2MtMi45NDE0IDAtNS4zMzIgMi4zODY3LTUuMzMyIDUuMzMydjMzMC42N2MwIDIuOTQxNCAyLjM5MDYgNS4zMzIgNS4zMzIgNS4zMzJoMTYwYzIuOTQ1MyAwIDUuMzM1OS0yLjM5MDYgNS4zMzU5LTUuMzMydi0zMzAuNjdjMC0yLjk0NTMtMi4zOTA2LTUuMzMyLTUuMzM1OS01LjMzMnpcIi8+XG4gIDxwYXRoIGQ9XCJtNDUzLjMzIDMyNS4zM2gtOTZjLTguODMyIDAtMTYtNy4xNjgtMTYtMTZzNy4xNjgtMTYgMTYtMTZoOTZjOC44MzIgMCAxNiA3LjE2OCAxNiAxNnMtNy4xNjggMTYtMTYgMTZ6XCIvPlxuICA8cGF0aCBkPVwibTIxOC42NyAzMjUuMzNoLTIwMi42N2MtOC44MzIgMC0xNi03LjE2OC0xNi0xNnM3LjE2OC0xNiAxNi0xNmgyMDIuNjdjOC44MzIgMCAxNiA3LjE2OCAxNiAxNnMtNy4xNjggMTYtMTYgMTZ6XCIvPlxuICA8cGF0aCBkPVwibTExNy4zMyA1MTJjLTguODMyIDAtMTYtNy4xNjgtMTYtMTZ2LTM3My4zM2MwLTguODMyIDcuMTY4LTE2IDE2LTE2czE2IDcuMTY4IDE2IDE2djM3My4zM2MwIDguODMyLTcuMTY4IDE2LTE2IDE2elwiLz5cbjwvc3ZnPmAsXG4gIGluc2VydFJvdzogYFxuPHN2ZyBjbGFzcz1cIndpZGdldC1pY29uXCIgdmVyc2lvbj1cIjEuMVwiIHZpZXdCb3g9XCIwIC0yMSA1MTIgNTEyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICA8cGF0aCBkPVwibTE2IDI3Ny4zM2MtMS45ODQ0IDAtMy45Njg4LTAuMzYzMjgtNS44NjcyLTEuMTA5NC02LjEyMTEtMi40MTAyLTEwLjEzMy04LjMyMDMtMTAuMTMzLTE0Ljg5MXYtMTYwYzAtNi41NzAzIDQuMDExNy0xMi40OCAxMC4xMzMtMTQuODkxIDYuMTQ0NS0yLjQxMDIgMTMuMDc4LTAuODUxNTYgMTcuNTU5IDMuOTY4OGw3NC42NjQgODBjNS43NjE3IDYuMTQ0NSA1Ljc2MTcgMTUuNjggMCAyMS44MjRsLTc0LjY2NCA4MGMtMy4wOTM4IDMuMzI4MS03LjMzOTggNS4wOTc3LTExLjY5MSA1LjA5Nzd6bTE2LTEzNS40djc4LjgwNWwzNi43NzctMzkuNDAyelwiLz5cbiAgPHBhdGggZD1cIm00NzQuNjcgMTI4aC0zMzAuNjdjLTIwLjU4NiAwLTM3LjMzMi0xNi43NDYtMzcuMzMyLTM3LjMzMnYtNTMuMzM2YzAtMjAuNTg2IDE2Ljc0Ni0zNy4zMzIgMzcuMzMyLTM3LjMzMmgzMzAuNjdjMjAuNTg2IDAgMzcuMzMyIDE2Ljc0NiAzNy4zMzIgMzcuMzMydjUzLjMzNmMwIDIwLjU4Ni0xNi43NDYgMzcuMzMyLTM3LjMzMiAzNy4zMzJ6bS0zMzAuNjctOTZjLTIuOTQ1MyAwLTUuMzMyIDIuMzkwNi01LjMzMiA1LjMzMnY1My4zMzZjMCAyLjk0MTQgMi4zODY3IDUuMzMyIDUuMzMyIDUuMzMyaDMzMC42N2MyLjk0MTQgMCA1LjMzMi0yLjM5MDYgNS4zMzItNS4zMzJ2LTUzLjMzNmMwLTIuOTQxNC0yLjM5MDYtNS4zMzItNS4zMzItNS4zMzJ6XCIvPlxuICA8cGF0aCBkPVwibTQ3NC42NyA0NjkuMzNoLTMzMC42N2MtMjAuNTg2IDAtMzcuMzMyLTE2Ljc0Ni0zNy4zMzItMzcuMzMydi0xNjBjMC0yMC41ODYgMTYuNzQ2LTM3LjMzMiAzNy4zMzItMzcuMzMyaDMzMC42N2MyMC41ODYgMCAzNy4zMzIgMTYuNzQ2IDM3LjMzMiAzNy4zMzJ2MTYwYzAgMjAuNTg2LTE2Ljc0NiAzNy4zMzItMzcuMzMyIDM3LjMzMnptLTMzMC42Ny0yMDIuNjZjLTIuOTQ1MyAwLTUuMzMyIDIuMzg2Ny01LjMzMiA1LjMzMnYxNjBjMCAyLjk0NTMgMi4zODY3IDUuMzMyIDUuMzMyIDUuMzMyaDMzMC42N2MyLjk0MTQgMCA1LjMzMi0yLjM4NjcgNS4zMzItNS4zMzJ2LTE2MGMwLTIuOTQ1My0yLjM5MDYtNS4zMzItNS4zMzItNS4zMzJ6XCIvPlxuICA8cGF0aCBkPVwibTMwOS4zMyAxMjhjLTguODMyIDAtMTYtNy4xNjgtMTYtMTZ2LTk2YzAtOC44MzIgNy4xNjgtMTYgMTYtMTZzMTYgNy4xNjggMTYgMTZ2OTZjMCA4LjgzMi03LjE2OCAxNi0xNiAxNnpcIi8+XG4gIDxwYXRoIGQ9XCJtMzA5LjMzIDQ2OS4zM2MtOC44MzIgMC0xNi03LjE2OC0xNi0xNnYtMjAyLjY2YzAtOC44MzIgNy4xNjgtMTYgMTYtMTZzMTYgNy4xNjggMTYgMTZ2MjAyLjY2YzAgOC44MzItNy4xNjggMTYtMTYgMTZ6XCIvPlxuICA8cGF0aCBkPVwibTQ5NiAzNjhoLTM3My4zM2MtOC44MzIgMC0xNi03LjE2OC0xNi0xNnM3LjE2OC0xNiAxNi0xNmgzNzMuMzNjOC44MzIgMCAxNiA3LjE2OCAxNiAxNnMtNy4xNjggMTYtMTYgMTZ6XCIvPlxuPC9zdmc+YCxcbiAgbW92ZUNvbHVtbkxlZnQ6IGBcbjxzdmcgY2xhc3M9XCJ3aWRnZXQtaWNvblwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiMCAwIDUxMi4wMiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxwYXRoIGQ9XCJtMzU3LjM1IDUxMi4wMWg5NmMzMi4zNjMgMCA1OC42NjgtMjYuMzA1IDU4LjY2OC01OC42Njh2LTM5NC42NmMwLTMyLjM2My0yNi4zMDUtNTguNjY4LTU4LjY2OC01OC42NjhoLTk2Yy0zMi4zNjMgMC01OC42NjQgMjYuMzA1LTU4LjY2NCA1OC42Njh2Mzk0LjY2YzAgMzIuMzYzIDI2LjMwMSA1OC42NjggNTguNjY0IDU4LjY2OHptOTYtNDgwYzE0LjY5OSAwIDI2LjY2OCAxMS45NjkgMjYuNjY4IDI2LjY2OHYzOTQuNjZjMCAxNC42OTktMTEuOTY5IDI2LjY2OC0yNi42NjggMjYuNjY4aC05NmMtMTQuNjk5IDAtMjYuNjY0LTExLjk2OS0yNi42NjQtMjYuNjY4di0zOTQuNjZjMC0xNC42OTkgMTEuOTY1LTI2LjY2OCAyNi42NjQtMjYuNjY4elwiLz5cbiAgPHBhdGggZD1cIm0xNi4wMTYgMjcyLjAxaDIyNGM4LjgzMiAwIDE2LTcuMTY4IDE2LTE2cy03LjE2OC0xNi0xNi0xNmgtMjI0Yy04LjgzMiAwLTE2IDcuMTY4LTE2IDE2czcuMTY4IDE2IDE2IDE2elwiLz5cbiAgPHBhdGggZD1cIm0xMDEuMzUgMzU3LjM0YzQuMDk3NiAwIDguMTkxNC0xLjU1NDcgMTEuMzA5LTQuNjkxNCA2LjI1LTYuMjUgNi4yNS0xNi4zODMgMC0yMi42MzdsLTc0LjAyNy03NC4wMjMgNzQuMDI3LTc0LjAyN2M2LjI1LTYuMjUgNi4yNS0xNi4zODcgMC0yMi42MzdzLTE2LjM4My02LjI1LTIyLjYzNyAwbC04NS4zMzIgODUuMzM2Yy02LjI1IDYuMjUtNi4yNSAxNi4zODMgMCAyMi42MzNsODUuMzMyIDg1LjMzMmMzLjEzNjcgMy4xNjAyIDcuMjM0NCA0LjcxNDggMTEuMzI4IDQuNzE0OHpcIi8+XG48L3N2Zz5gLFxuICBtb3ZlQ29sdW1uUmlnaHQ6IGBcbjxzdmcgY2xhc3M9XCJ3aWRnZXQtaWNvblwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiMCAwIDUxMi4wMiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxwYXRoIGQ9XCJtMTU0LjY3IDUxMi4wMWgtOTZjLTMyLjM2MyAwLTU4LjY2OC0yNi4zMDUtNTguNjY4LTU4LjY2OHYtMzk0LjY2YzAtMzIuMzYzIDI2LjMwNS01OC42NjggNTguNjY4LTU4LjY2OGg5NmMzMi4zNjMgMCA1OC42NjQgMjYuMzA1IDU4LjY2NCA1OC42Njh2Mzk0LjY2YzAgMzIuMzYzLTI2LjMwMSA1OC42NjgtNTguNjY0IDU4LjY2OHptLTk2LTQ4MGMtMTQuNjk5IDAtMjYuNjY4IDExLjk2OS0yNi42NjggMjYuNjY4djM5NC42NmMwIDE0LjY5OSAxMS45NjkgMjYuNjY4IDI2LjY2OCAyNi42NjhoOTZjMTQuNjk5IDAgMjYuNjY0LTExLjk2OSAyNi42NjQtMjYuNjY4di0zOTQuNjZjMC0xNC42OTktMTEuOTY1LTI2LjY2OC0yNi42NjQtMjYuNjY4elwiLz5cbiAgPHBhdGggZD1cIm00OTYgMjcyLjAxaC0yMjRjLTguODMyIDAtMTYtNy4xNjgtMTYtMTYgMC04LjgzMiA3LjE2OC0xNiAxNi0xNmgyMjRjOC44MzIgMCAxNiA3LjE2OCAxNiAxNiAwIDguODMyLTcuMTY4IDE2LTE2IDE2elwiLz5cbiAgPHBhdGggZD1cIm00MTAuNjcgMzU3LjM0Yy00LjA5NzcgMC04LjE5MTQtMS41NTQ3LTExLjMwOS00LjY5MTQtNi4yNS02LjI1LTYuMjUtMTYuMzgzIDAtMjIuNjM3bDc0LjAyNy03NC4wMjMtNzQuMDI3LTc0LjAyN2MtNi4yNS02LjI1LTYuMjUtMTYuMzg3IDAtMjIuNjM3czE2LjM4My02LjI1IDIyLjYzNyAwbDg1LjMzMiA4NS4zMzZjNi4yNSA2LjI1IDYuMjUgMTYuMzgzIDAgMjIuNjMzbC04NS4zMzIgODUuMzMyYy0zLjEzNjcgMy4xNjAyLTcuMjM0NCA0LjcxNDgtMTEuMzI4IDQuNzE0OHpcIi8+XG48L3N2Zz5gLFxuICBtb3ZlUm93RG93bjogYFxuPHN2ZyBjbGFzcz1cIndpZGdldC1pY29uXCIgdmVyc2lvbj1cIjEuMVwiIHZpZXdCb3g9XCIwIDAgNTEyIDUxMlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgPHBhdGggZD1cIm00NTMuMzMgMjEzLjMzaC0zOTQuNjZjLTMyLjM2MyAwLTU4LjY2OC0yNi4zMDEtNTguNjY4LTU4LjY2NHYtOTZjMC0zMi4zNjMgMjYuMzA1LTU4LjY2OCA1OC42NjgtNTguNjY4aDM5NC42NmMzMi4zNjMgMCA1OC42NjggMjYuMzA1IDU4LjY2OCA1OC42Njh2OTZjMCAzMi4zNjMtMjYuMzA1IDU4LjY2NC01OC42NjggNTguNjY0em0tMzk0LjY2LTE4MS4zM2MtMTQuNjk5IDAtMjYuNjY4IDExLjk2OS0yNi42NjggMjYuNjY4djk2YzAgMTQuNjk5IDExLjk2OSAyNi42NjQgMjYuNjY4IDI2LjY2NGgzOTQuNjZjMTQuNjk5IDAgMjYuNjY4LTExLjk2NSAyNi42NjgtMjYuNjY0di05NmMwLTE0LjY5OS0xMS45NjktMjYuNjY4LTI2LjY2OC0yNi42Njh6XCIvPlxuICA8cGF0aCBkPVwibTI1NiA1MTJjLTguODMyIDAtMTYtNy4xNjgtMTYtMTZ2LTIyNGMwLTguODMyIDcuMTY4LTE2IDE2LTE2czE2IDcuMTY4IDE2IDE2djIyNGMwIDguODMyLTcuMTY4IDE2LTE2IDE2elwiLz5cbiAgPHBhdGggZD1cIm0yNTYgNTEyYy00LjA5NzcgMC04LjE5MTQtMS41NTg2LTExLjMwOS00LjY5MTRsLTg1LjMzMi04NS4zMzZjLTYuMjUtNi4yNS02LjI1LTE2LjM4MyAwLTIyLjYzM3MxNi4zODMtNi4yNSAyMi42MzcgMGw3NC4wMjMgNzQuMDI3IDc0LjAyNy03NC4wMjdjNi4yNS02LjI1IDE2LjM4Ny02LjI1IDIyLjYzNyAwczYuMjUgMTYuMzgzIDAgMjIuNjMzbC04NS4zMzYgODUuMzM2Yy0zLjE1NjIgMy4xMzI4LTcuMjUgNC42OTE0LTExLjM0OCA0LjY5MTR6XCIvPlxuPC9zdmc+YCxcbiAgbW92ZVJvd1VwOiBgXG48c3ZnIGNsYXNzPVwid2lkZ2V0LWljb25cIiB2ZXJzaW9uPVwiMS4xXCIgdmlld0JveD1cIjAgMCA1MTIgNTEyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICA8cGF0aCBkPVwibTQ1My4zMyAyOTguNjdoLTM5NC42NmMtMzIuMzYzIDAtNTguNjY4IDI2LjMwMS01OC42NjggNTguNjY0djk2YzAgMzIuMzYzIDI2LjMwNSA1OC42NjggNTguNjY4IDU4LjY2OGgzOTQuNjZjMzIuMzYzIDAgNTguNjY4LTI2LjMwNSA1OC42NjgtNTguNjY4di05NmMwLTMyLjM2My0yNi4zMDUtNTguNjY0LTU4LjY2OC01OC42NjR6bS0zOTQuNjYgMTgxLjMzYy0xNC42OTkgMC0yNi42NjgtMTEuOTY5LTI2LjY2OC0yNi42Njh2LTk2YzAtMTQuNjk5IDExLjk2OS0yNi42NjQgMjYuNjY4LTI2LjY2NGgzOTQuNjZjMTQuNjk5IDAgMjYuNjY4IDExLjk2NSAyNi42NjggMjYuNjY0djk2YzAgMTQuNjk5LTExLjk2OSAyNi42NjgtMjYuNjY4IDI2LjY2OHpcIi8+XG4gIDxwYXRoIGQ9XCJtMjU2IDBjLTguODMyIDAtMTYgNy4xNjgtMTYgMTZ2MjI0YzAgOC44MzIgNy4xNjggMTYgMTYgMTZzMTYtNy4xNjggMTYtMTZ2LTIyNGMwLTguODMyLTcuMTY4LTE2LTE2LTE2elwiLz5cbiAgPHBhdGggZD1cIm0yNTYgMGMtNC4wOTc3IDAtOC4xOTE0IDEuNTU4Ni0xMS4zMDkgNC42OTE0bC04NS4zMzIgODUuMzM2Yy02LjI1IDYuMjUtNi4yNSAxNi4zODMgMCAyMi42MzNzMTYuMzgzIDYuMjUgMjIuNjM3IDBsNzQuMDIzLTc0LjAyNyA3NC4wMjcgNzQuMDI3YzYuMjUgNi4yNSAxNi4zODcgNi4yNSAyMi42MzcgMHM2LjI1LTE2LjM4MyAwLTIyLjYzM2wtODUuMzM2LTg1LjMzNmMtMy4xNTYyLTMuMTMyOC03LjI1LTQuNjkxNC0xMS4zNDgtNC42OTE0elwiLz5cbjwvc3ZnPmAsXG4gIHNvcnRBc2M6IGBcbjxzdmcgY2xhc3M9XCJ3aWRnZXQtaWNvblwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxnIHRyYW5zZm9ybT1cIm1hdHJpeCgxIDAgMCAtMSAwIDUwMS4xNSlcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzNcIj5cbiAgICA8cGF0aCBkPVwibTM1My42IDc0LjQ4NmMtMTEuNzc2IDAtMjEuMzMzIDkuNTU3My0yMS4zMzMgMjEuMzMzdjI5OC42N2MwIDExLjc3NiA5LjU1NzMgMjEuMzMzIDIxLjMzMyAyMS4zMzNzMjEuMzMzLTkuNTU3MyAyMS4zMzMtMjEuMzMzdi0yOTguNjdjMC0xMS43NzYtOS41NTczLTIxLjMzMy0yMS4zMzMtMjEuMzMzelwiLz5cbiAgICA8cGF0aCBkPVwibTM1My42IDc0LjQ4NmMtNS40NjM2IDAtMTAuOTIyIDIuMDc4MS0xNS4wNzkgNi4yNTUybC0xMTMuNzggMTEzLjc4Yy04LjMzMzMgOC4zMzMzLTguMzMzMyAyMS44NDQgMCAzMC4xNzcgOC4zMzMzIDguMzMzMyAyMS44NDQgOC4zMzMzIDMwLjE4MyAwbDk4LjY5Ny05OC43MDMgOTguNzAzIDk4LjcwM2M4LjMzMzMgOC4zMzMzIDIxLjg0OSA4LjMzMzMgMzAuMTgzIDAgOC4zMzMzLTguMzMzMyA4LjMzMzMtMjEuODQ0IDAtMzAuMTc3bC0xMTMuNzgtMTEzLjc4Yy00LjIwODMtNC4xNzcxLTkuNjY2Ny02LjI1NTItMTUuMTMxLTYuMjU1MnpcIi8+XG4gIDwvZz5cbiAgPHBhdGggZD1cIm0xNjYuMDQgMjEwLjExcS01LjA5NzEtMTMuNDkyLTkuNTk0NS0yNi4zODUtNC40OTc0LTEzLjE5Mi05LjI5NDctMjYuNjg1aC05NC4xNDZsLTE4Ljg4OSA1My4wN2gtMzAuMjgzcTExLjk5My0zMi45ODEgMjIuNDg3LTYwLjg2NSAxMC40OTQtMjguMTg0IDIwLjM4OC01My4zNjkgMTAuMTk0LTI1LjE4NiAyMC4wODktNDcuOTczIDkuODk0My0yMy4wODcgMjAuNjg4LTQ1LjU3NGgyNi42ODVxMTAuNzk0IDIyLjQ4NyAyMC42ODggNDUuNTc0IDkuODk0MyAyMi43ODcgMTkuNzg5IDQ3Ljk3MyAxMC4xOTQgMjUuMTg2IDIwLjY4OCA1My4zNjkgMTAuNDk0IDI3Ljg4NCAyMi40ODcgNjAuODY1em0tMjcuMjg0LTc3LjA1NnEtOS41OTQ1LTI2LjA4NS0xOS4xODktNTAuMzcxLTkuMjk0Ny0yNC41ODYtMTkuNDg5LTQ3LjA3My0xMC40OTQgMjIuNDg3LTIwLjA4OSA0Ny4wNzMtOS4yOTQ3IDI0LjI4Ni0xOC41ODkgNTAuMzcxelwiLz5cbiAgPHBhdGggZD1cIm0xNzMuMjQgMzI1LjI1cS02Ljg5NiA3Ljc5NTUtMTYuMTkxIDE4Ljg4OS04Ljk5NDggMTAuNzk0LTE5LjE4OSAyNC4yODYtMTAuMTk0IDEzLjE5Mi0yMC45ODggMjguMTg0LTEwLjc5NCAxNC42OTItMjEuMjg4IDI5Ljk4My0xMC4xOTQgMTQuOTkxLTE5LjQ4OSAyOS45ODMtOS4yOTQ3IDE0Ljk5MS0xNi43OSAyOC40ODRoMTE2LjkzdjI0Ljg4NmgtMTUwLjgxdi0xOS40ODlxNi4yOTY0LTExLjk5MyAxNC42OTItMjYuMzg1IDguNjk1LTE0LjM5MiAxOC4yOS0yOS4zODMgOS44OTQzLTE0Ljk5MSAyMC4zODgtMzAuMjgzdDIwLjY4OC0yOS4zODNxMTAuNDk0LTE0LjA5MiAyMC4wODgtMjYuMzg1IDkuODk0My0xMi4yOTMgMTcuOTktMjEuNTg4aC0xMDYuNzR2LTI0Ljg4NmgxNDIuNDJ6XCIvPlxuPC9zdmc+YCxcbiAgc29ydERlc2M6IGBcbjxzdmcgY2xhc3M9XCJ3aWRnZXQtaWNvblwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxnIHRyYW5zZm9ybT1cIm1hdHJpeCgxIDAgMCAtMSAwIDUwMS4xNSlcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzNcIj5cbiAgICA8cGF0aCBkPVwibTM1My42IDc0LjQ4NmMtMTEuNzc2IDAtMjEuMzMzIDkuNTU3My0yMS4zMzMgMjEuMzMzdjI5OC42N2MwIDExLjc3NiA5LjU1NzMgMjEuMzMzIDIxLjMzMyAyMS4zMzNzMjEuMzMzLTkuNTU3MyAyMS4zMzMtMjEuMzMzdi0yOTguNjdjMC0xMS43NzYtOS41NTczLTIxLjMzMy0yMS4zMzMtMjEuMzMzelwiLz5cbiAgICA8cGF0aCBkPVwibTM1My42IDc0LjQ4NmMtNS40NjM2IDAtMTAuOTIyIDIuMDc4MS0xNS4wNzkgNi4yNTUybC0xMTMuNzggMTEzLjc4Yy04LjMzMzMgOC4zMzMzLTguMzMzMyAyMS44NDQgMCAzMC4xNzcgOC4zMzMzIDguMzMzMyAyMS44NDQgOC4zMzMzIDMwLjE4MyAwbDk4LjY5Ny05OC43MDMgOTguNzAzIDk4LjcwM2M4LjMzMzMgOC4zMzMzIDIxLjg0OSA4LjMzMzMgMzAuMTgzIDAgOC4zMzMzLTguMzMzMyA4LjMzMzMtMjEuODQ0IDAtMzAuMTc3bC0xMTMuNzgtMTEzLjc4Yy00LjIwODMtNC4xNzcxLTkuNjY2Ny02LjI1NTItMTUuMTMxLTYuMjU1MnpcIi8+XG4gIDwvZz5cbiAgPHBhdGggZD1cIm0xNjkuMTEgNTA3LjcycS01LjA5NzEtMTMuNDkyLTkuNTk0NS0yNi4zODUtNC40OTc0LTEzLjE5Mi05LjI5NDctMjYuNjg1aC05NC4xNDZsLTE4Ljg4OSA1My4wN2gtMzAuMjgzcTExLjk5My0zMi45ODEgMjIuNDg3LTYwLjg2NSAxMC40OTQtMjguMTg0IDIwLjM4OC01My4zNjkgMTAuMTk0LTI1LjE4NiAyMC4wODgtNDcuOTczIDkuODk0My0yMy4wODcgMjAuNjg4LTQ1LjU3NGgyNi42ODVxMTAuNzk0IDIyLjQ4NyAyMC42ODggNDUuNTc0IDkuODk0MyAyMi43ODcgMTkuNzg5IDQ3Ljk3MyAxMC4xOTQgMjUuMTg2IDIwLjY4OCA1My4zNjkgMTAuNDk0IDI3Ljg4NCAyMi40ODcgNjAuODY1em0tMjcuMjg0LTc3LjA1NnEtOS41OTQ1LTI2LjA4NS0xOS4xODktNTAuMzcxLTkuMjk0Ny0yNC41ODYtMTkuNDg5LTQ3LjA3My0xMC40OTQgMjIuNDg3LTIwLjA4OSA0Ny4wNzMtOS4yOTQ3IDI0LjI4Ni0xOC41ODkgNTAuMzcxelwiLz5cbiAgPHBhdGggZD1cIm0xNzYuMzEgMjcuNjM5cS02Ljg5NiA3Ljc5NTUtMTYuMTkxIDE4Ljg4OS04Ljk5NDggMTAuNzk0LTE5LjE4OSAyNC4yODYtMTAuMTk0IDEzLjE5Mi0yMC45ODggMjguMTg0LTEwLjc5NCAxNC42OTItMjEuMjg4IDI5Ljk4My0xMC4xOTQgMTQuOTkxLTE5LjQ4OSAyOS45ODMtOS4yOTQ3IDE0Ljk5MS0xNi43OSAyOC40ODRoMTE2LjkzdjI0Ljg4NmgtMTUwLjgxdi0xOS40ODlxNi4yOTY0LTExLjk5MyAxNC42OTItMjYuMzg1IDguNjk1LTE0LjM5MiAxOC4yOS0yOS4zODMgOS44OTQzLTE0Ljk5MSAyMC4zODgtMzAuMjgzIDEwLjQ5NC0xNS4yOTEgMjAuNjg4LTI5LjM4MyAxMC40OTQtMTQuMDkyIDIwLjA4OC0yNi4zODUgOS44OTQzLTEyLjI5MyAxNy45OS0yMS41ODhoLTEwNi43NHYtMjQuODg2aDE0Mi40MnpcIi8+XG48L3N2Zz5gLFxuICBmb3JtdWxhOiBgXG48c3ZnIGNsYXNzPVwid2lkZ2V0LWljb25cIiB2ZXJzaW9uPVwiMS4xXCIgdmlld0JveD1cIjAgMCA1MTIgNTEyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICA8cGF0aCBkPVwibTI2My41MSA2Mi45NjdjMS42NzItMTEuMTM0IDkuMzI2LTIyLjk2NyAyMC4yMjItMjIuOTY3IDExLjAyOCAwIDIwIDguOTcyIDIwIDIwaDQwYzAtMzMuMDg0LTI2LjkxNi02MC02MC02MC0zMy42MjkgMC01NS41MjcgMjguNjkxLTU5Ljc4NCA1Ny4wNzNsLTEyLjg2MiA4Ni45MjdoLTYxLjM1NHY0MGg1NS40MzZsLTM5LjIyIDI2NS4wNy0wLjExNiAwLjkzN2MtMS4wNjMgMTAuNjItOS4zOTMgMjEuOTktMjAuMSAyMS45OS0xMS4wMjggMC0yMC04Ljk3Mi0yMC0yMGgtNDBjMCAzMy4wODQgMjYuOTE2IDYwIDYwIDYwIDMzLjY2MSAwIDU2Ljc3MS0yOS4xNDEgNTkuODQ4LTU3LjQ5Nmw0MC4wMjMtMjcwLjVoNjAuMTI5di00MGgtNTQuMjExbDExLjk4OS04MS4wMzN6XCIvPlxuICA8cG9seWdvbiBwb2ludHM9XCI0MjYuMjcgMjQ4IDM3OC4yNCAyNDggMzUyLjI1IDI4Ny4wOCAzMzQuOTIgMjQ4IDI5MS4xNyAyNDggMzI2IDMyNi41NyAyNzAuNTIgNDEwIDMxOC41NiA0MTAgMzQ1LjIxIDM2OS45MiAzNjIuOTggNDEwIDQwNi43MyA0MTAgMzcxLjQ2IDMzMC40M1wiLz5cbjwvc3ZnPmAsXG4gIGhlbHA6IGBcbjxzdmcgY2xhc3M9XCJ3aWRnZXQtaWNvblwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxwYXRoIGQ9XCJtMjQ4LjE2IDM0My4yMmMtMTQuNjM5IDAtMjYuNDkxIDEyLjItMjYuNDkxIDI2Ljg0IDAgMTQuMjkxIDExLjUwMyAyNi44NCAyNi40OTEgMjYuODRzMjYuODQtMTIuNTQ4IDI2Ljg0LTI2Ljg0YzAtMTQuNjQtMTIuMTk5LTI2Ljg0LTI2Ljg0LTI2Ljg0elwiLz5cbiAgPHBhdGggZD1cIm0yNTIuNjkgMTQwYy00Ny4wNTcgMC02OC42NjggMjcuODg1LTY4LjY2OCA0Ni43MDggMCAxMy41OTUgMTEuNTAyIDE5Ljg2OSAyMC45MTQgMTkuODY5IDE4LjgyMiAwIDExLjE1NC0yNi44NCA0Ni43MDgtMjYuODQgMTcuNDI5IDAgMzEuMzcyIDcuNjY5IDMxLjM3MiAyMy43MDMgMCAxOC44MjQtMTkuNTIgMjkuNjI5LTMxLjAyMyAzOS4zODktMTAuMTA4IDguNzE0LTIzLjM1NCAyMy4wMDYtMjMuMzU0IDUyLjk4MyAwIDE4LjEyNSA0Ljg3OSAyMy4zNTQgMTkuMTcxIDIzLjM1NCAxNy4wOCAwIDIwLjU2NS03LjY2OCAyMC41NjUtMTQuMjkxIDAtMTguMTI2IDAuMzUtMjguNTgzIDE5LjUyMS00My41NzEgOS40MTEtNy4zMiAzOS4wNC0zMS4wMjMgMzkuMDQtNjMuNzg5cy0yOS42MjktNTcuNTE1LTc0LjI0Ni01Ny41MTV6XCIvPlxuICA8cGF0aCBkPVwibTI1NiAwYy0xNDEuNDggMC0yNTYgMTE0LjUtMjU2IDI1NnYyMzZjMCAxMS4wNDYgOC45NTQgMjAgMjAgMjBoMjM2YzE0MS40OCAwIDI1Ni0xMTQuNSAyNTYtMjU2IDAtMTQxLjQ4LTExNC41LTI1Ni0yNTYtMjU2em0wIDQ3MmgtMjE2di0yMTZjMC0xMTkuMzggOTYuNjA3LTIxNiAyMTYtMjE2IDExOS4zOCAwIDIxNiA5Ni42MDcgMjE2IDIxNiAwIDExOS4zOC05Ni42MDcgMjE2LTIxNiAyMTZ6XCIvPlxuPC9zdmc+YCxcbiAgY3N2OiBgXG48c3ZnIGNsYXNzPVwid2lkZ2V0LWljb25cIiB2ZXJzaW9uPVwiMS4xXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiA8cGF0aCBkPVwibTQuOTk3OSA5di04aDE0LjUwMmwzLjUgMy41IDJlLTcgMTguNWgtMTltMTQtMjJ2NWg1bS0xNiA3aC0yYy0xIDAtMiAwLjUtMiAxLjV2MS41czFlLTggMC41IDAgMS41IDEgMS41IDIgMS41aDJtNi4yNS02aC0yLjVjLTEuNSAwLTIgMC41LTIgMS41czAuNSAxLjUgMiAxLjUgMiAwLjUgMiAxLjUtMC41IDEuNS0yIDEuNWgtMi41bTEyLjI1LTd2MC41YzAgMC41LTIuNSA2LjUtMi41IDYuNWgtMC41cy0yLjUtNi0yLjUtNi41di0wLjVcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cInZhcigtLXRleHQtbXV0ZWQpXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIvPlxuPC9zdmc+YCxcbiAgYXJyb3dlbnRlcjogYFxuPHN2ZyB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICA8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgZD1cIm00LjY0MTE5IDEyLjUgMi44NzI4MyAyLjcwMzhjLjMwMTYzLjI4MzkuMzE2MDIuNzU4Ni4wMzIxMyAxLjA2MDItLjI4Mzg5LjMwMTctLjc1ODU0LjMxNi0xLjA2MDE3LjAzMjFsLTQuMjUtNGMtLjE1MDU5LS4xNDE3LS4yMzU5OC0uMzM5My0uMjM1OTgtLjU0NjFzLjA4NTM5LS40MDQ0LjIzNTk4LS41NDYybDQuMjUtMy45OTk5NWMuMzAxNjMtLjI4Mzg5Ljc3NjI4LS4yNjk1IDEuMDYwMTcuMDMyMTNzLjI2OTUuNzc2MjgtLjAzMjEzIDEuMDYwMTdsLTIuODcyODQgMi43MDM4NWgxMC4xMDg4MmMuOTY2NSAwIDEuNzUtLjc4MzUgMS43NS0xLjc1di00LjVjMC0uNDE0MjEuMzM1OC0uNzUuNzUtLjc1cy43NS4zMzU3OS43NS43NXY0LjVjMCAxLjc5NDktMS40NTUxIDMuMjUtMy4yNSAzLjI1elwiLz5cbjwvc3ZnPmAsXG4gIGFycm93dGFiOiBgXG48c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwibTE4LjIwNzEwNjggMTEuMjkyODkzMi02LjUtNi40OTk5OTk5OGMtLjM5MDUyNDMtLjM5MDUyNDI5LTEuMDIzNjg5My0uMzkwNTI0MjktMS40MTQyMTM2IDAtLjM2MDQ4Mzk0LjM2MDQ4Mzk2LS4zODgyMTM0OC45Mjc3MTUwMi0uMDgzMTg4NiAxLjMyMDAwNjIybC4wODMxODg2LjA5NDIwNzM0IDQuNzkzMTA2OCA0Ljc5Mjg5MzIyaC0xMS4wODZjLS41MTI4MzU4NCAwLS45MzU1MDcxNi4zODYwNDAyLS45OTMyNzIyNy44ODMzNzg5bC0uMDA2NzI3NzMuMTE2NjIxMWMwIC41MTI4MzU4LjM4NjA0MDE5LjkzNTUwNzIuODgzMzc4ODcuOTkzMjcyM2wuMTE2NjIxMTMuMDA2NzI3N2gxMS4wODZsLTQuNzkzMTA2OCA0Ljc5Mjg5MzJjLS4zNjA0ODM5NC4zNjA0ODQtLjM4ODIxMzQ4LjkyNzcxNS0uMDgzMTg4NiAxLjMyMDAwNjJsLjA4MzE4ODYuMDk0MjA3NGMuMzYwNDg0LjM2MDQ4MzkuOTI3NzE1LjM4ODIxMzUgMS4zMjAwMDYyLjA4MzE4ODZsLjA5NDIwNzQtLjA4MzE4ODYgNi41LTYuNWMuMzYwNDgzOS0uMzYwNDg0LjM4ODIxMzUtLjkyNzcxNS4wODMxODg2LTEuMzIwMDA2MmwtLjA4MzE4ODYtLjA5NDIwNzQtNi41LTYuNDk5OTk5OTh6bTIuNzkyODkzMiA3LjIwNzEwNjh2LTEzYzAtLjU1MjI4NDc1LS40NDc3MTUzLTEtMS0xcy0xIC40NDc3MTUyNS0xIDF2MTNjMCAuNTUyMjg0Ny40NDc3MTUzIDEgMSAxczEtLjQ0NzcxNTMgMS0xelwiIGZpbGw9XCIjMjEyMTIxXCIvPlxuPC9zdmc+YCxcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRJY29ucyA9ICgpOiB2b2lkID0+IHtcbiAgT2JqZWN0LmtleXMoaWNvbnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgIC8vIERvbid0IGFkZCB0aGUgJ2hlbHAnIGljb24gaGVyZSBhcyBpdCB3aWxsIG92ZXJ3cml0ZSB0aGUgbmF0aXZlIG9uZS5cbiAgICBpZiAoa2V5ICE9PSAnaGVscCcpIHtcbiAgICAgIGFkZEljb24oa2V5LCBpY29uc1trZXldKTtcbiAgICB9XG4gIH0pO1xufTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Qb2ludCA9IHZvaWQgMDtcbi8qKlxuICogQSBgUG9pbnRgIHJlcHJlc2VudHMgYSBwb2ludCBpbiB0aGUgdGV4dCBlZGl0b3IuXG4gKi9cbmNsYXNzIFBvaW50IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGBQb2ludGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHJvdyAtIFJvdyBvZiB0aGUgcG9pbnQsIHN0YXJ0cyBmcm9tIDAuXG4gICAgICogQHBhcmFtIGNvbHVtbiAtIENvbHVtbiBvZiB0aGUgcG9pbnQsIHN0YXJ0cyBmcm9tIDAuXG4gICAgICovXG4gICAgY29uc3RydWN0b3Iocm93LCBjb2x1bW4pIHtcbiAgICAgICAgdGhpcy5yb3cgPSByb3c7XG4gICAgICAgIHRoaXMuY29sdW1uID0gY29sdW1uO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIHBvaW50IGlzIGVxdWFsIHRvIGFub3RoZXIgcG9pbnQuXG4gICAgICovXG4gICAgZXF1YWxzKHBvaW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvdyA9PT0gcG9pbnQucm93ICYmIHRoaXMuY29sdW1uID09PSBwb2ludC5jb2x1bW47XG4gICAgfVxufVxuZXhwb3J0cy5Qb2ludCA9IFBvaW50O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlJhbmdlID0gdm9pZCAwO1xuLyoqXG4gKiBBIGBSYW5nZWAgb2JqZWN0IHJlcHJlc2VudHMgYSByYW5nZSBpbiB0aGUgdGV4dCBlZGl0b3IuXG4gKi9cbmNsYXNzIFJhbmdlIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGBSYW5nZWAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHN0YXJ0IC0gVGhlIHN0YXJ0IHBvaW50IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0gZW5kIC0gVGhlIGVuZCBwb2ludCBvZiB0aGUgcmFuZ2UuXG4gICAgICovXG4gICAgY29uc3RydWN0b3Ioc3RhcnQsIGVuZCkge1xuICAgICAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gICAgICAgIHRoaXMuZW5kID0gZW5kO1xuICAgIH1cbn1cbmV4cG9ydHMuUmFuZ2UgPSBSYW5nZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Gb2N1cyA9IHZvaWQgMDtcbi8qKlxuICogQSBgRm9jdXNgIG9iamVjdCByZXByZXNlbnRzIHdoaWNoIGNlbGwgaXMgZm9jdXNlZCBpbiB0aGUgdGFibGUuXG4gKlxuICogTm90ZSB0aGF0IGByb3dgIGFuZCBgY29sdW1uYCBwcm9wZXJ0aWVzIHNwZWNpZml5IGEgY2VsbCdzIHBvc2l0aW9uIGluIHRoZVxuICogdGFibGUsIG5vdCB0aGUgY3Vyc29yJ3MgcG9zaXRpb24gaW4gdGhlIHRleHQgZWRpdG9yIGFzIHtAbGluayBQb2ludH0gY2xhc3MuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuY2xhc3MgRm9jdXMge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgYEZvY3VzYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm93IC0gUm93IG9mIHRoZSBmb2N1c2VkIGNlbGwuXG4gICAgICogQHBhcmFtIGNvbHVtbiAtIENvbHVtbiBvZiB0aGUgZm9jdXNlZCBjZWxsLlxuICAgICAqIEBwYXJhbSBvZmZzZXQgLSBSYXcgb2Zmc2V0IGluIHRoZSBjZWxsLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHJvdywgY29sdW1uLCBvZmZzZXQpIHtcbiAgICAgICAgdGhpcy5yb3cgPSByb3c7XG4gICAgICAgIHRoaXMuY29sdW1uID0gY29sdW1uO1xuICAgICAgICB0aGlzLm9mZnNldCA9IG9mZnNldDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHR3byBmb2N1c2VzIHBvaW50IHRoZSBzYW1lIGNlbGwuXG4gICAgICogT2Zmc2V0cyBhcmUgaWdub3JlZC5cbiAgICAgKi9cbiAgICBwb3NFcXVhbHMoZm9jdXMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm93ID09PSBmb2N1cy5yb3cgJiYgdGhpcy5jb2x1bW4gPT09IGZvY3VzLmNvbHVtbjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNvcHkgb2YgdGhlIGZvY3VzIG9iamVjdCBieSBzZXR0aW5nIGl0cyByb3cgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByb3cgLSBSb3cgb2YgdGhlIGZvY3VzZWQgY2VsbC5cbiAgICAgKiBAcmV0dXJucyBBIG5ldyBmb2N1cyBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIHJvdy5cbiAgICAgKi9cbiAgICBzZXRSb3cocm93KSB7XG4gICAgICAgIHJldHVybiBuZXcgRm9jdXMocm93LCB0aGlzLmNvbHVtbiwgdGhpcy5vZmZzZXQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY29weSBvZiB0aGUgZm9jdXMgb2JqZWN0IGJ5IHNldHRpbmcgaXRzIGNvbHVtbiB0byB0aGUgc3BlY2lmaWVkIHZhbHVlLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbHVtbiAtIENvbHVtbiBvZiB0aGUgZm9jdXNlZCBjZWxsLlxuICAgICAqIEByZXR1cm5zIEEgbmV3IGZvY3VzIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQgY29sdW1uLlxuICAgICAqL1xuICAgIHNldENvbHVtbihjb2x1bW4pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBGb2N1cyh0aGlzLnJvdywgY29sdW1uLCB0aGlzLm9mZnNldCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjb3B5IG9mIHRoZSBmb2N1cyBvYmplY3QgYnkgc2V0dGluZyBpdHMgb2Zmc2V0IHRvIHRoZSBzcGVjaWZpZWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb2Zmc2V0IC0gT2Zmc2V0IGluIHRoZSBmb2N1c2VkIGNlbGwuXG4gICAgICogQHJldHVybnMgQSBuZXcgZm9jdXMgb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBvZmZzZXQuXG4gICAgICovXG4gICAgc2V0T2Zmc2V0KG9mZnNldCkge1xuICAgICAgICByZXR1cm4gbmV3IEZvY3VzKHRoaXMucm93LCB0aGlzLmNvbHVtbiwgb2Zmc2V0KTtcbiAgICB9XG59XG5leHBvcnRzLkZvY3VzID0gRm9jdXM7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuSGVhZGVyQWxpZ25tZW50ID0gZXhwb3J0cy5EZWZhdWx0QWxpZ25tZW50ID0gZXhwb3J0cy5BbGlnbm1lbnQgPSB2b2lkIDA7XG4vKipcbiAqIFJlcHJlc2VudHMgY29sdW1uIGFsaWdubWVudC5cbiAqXG4gKiAtIGBBbGlnbm1lbnQuTk9ORWAgLSBVc2UgZGVmYXVsdCBhbGlnbm1lbnQuXG4gKiAtIGBBbGlnbm1lbnQuTEVGVGAgLSBBbGlnbiBsZWZ0LlxuICogLSBgQWxpZ25tZW50LlJJR0hUYCAtIEFsaWduIHJpZ2h0LlxuICogLSBgQWxpZ25tZW50LkNFTlRFUmAgLSBBbGlnbiBjZW50ZXIuXG4gKlxuICovXG52YXIgQWxpZ25tZW50O1xuKGZ1bmN0aW9uIChBbGlnbm1lbnQpIHtcbiAgICBBbGlnbm1lbnRbXCJOT05FXCJdID0gXCJub25lXCI7XG4gICAgQWxpZ25tZW50W1wiTEVGVFwiXSA9IFwibGVmdFwiO1xuICAgIEFsaWdubWVudFtcIlJJR0hUXCJdID0gXCJyaWdodFwiO1xuICAgIEFsaWdubWVudFtcIkNFTlRFUlwiXSA9IFwiY2VudGVyXCI7XG59KShBbGlnbm1lbnQgPSBleHBvcnRzLkFsaWdubWVudCB8fCAoZXhwb3J0cy5BbGlnbm1lbnQgPSB7fSkpO1xuLyoqXG4gKiBSZXByZXNlbnRzIGRlZmF1bHQgY29sdW1uIGFsaWdubWVudFxuICpcbiAqIC0gYERlZmF1bHRBbGlnbm1lbnQuTEVGVGAgLSBBbGlnbiBsZWZ0LlxuICogLSBgRGVmYXVsdEFsaWdubWVudC5SSUdIVGAgLSBBbGlnbiByaWdodC5cbiAqIC0gYERlZmF1bHRBbGlnbm1lbnQuQ0VOVEVSYCAtIEFsaWduIGNlbnRlci5cbiAqXG4gKi9cbnZhciBEZWZhdWx0QWxpZ25tZW50O1xuKGZ1bmN0aW9uIChEZWZhdWx0QWxpZ25tZW50KSB7XG4gICAgRGVmYXVsdEFsaWdubWVudFtcIkxFRlRcIl0gPSBcImxlZnRcIjtcbiAgICBEZWZhdWx0QWxpZ25tZW50W1wiUklHSFRcIl0gPSBcInJpZ2h0XCI7XG4gICAgRGVmYXVsdEFsaWdubWVudFtcIkNFTlRFUlwiXSA9IFwiY2VudGVyXCI7XG59KShEZWZhdWx0QWxpZ25tZW50ID0gZXhwb3J0cy5EZWZhdWx0QWxpZ25tZW50IHx8IChleHBvcnRzLkRlZmF1bHRBbGlnbm1lbnQgPSB7fSkpO1xuLyoqXG4gKiBSZXByZXNlbnRzIGFsaWdubWVudCBvZiBoZWFkZXIgY2VsbHMuXG4gKlxuICogLSBgSGVhZGVyQWxpZ25tZW50LkZPTExPV2AgLSBGb2xsb3cgY29sdW1uJ3MgYWxpZ25tZW50LlxuICogLSBgSGVhZGVyQWxpZ25tZW50LkxFRlRgIC0gQWxpZ24gbGVmdC5cbiAqIC0gYEhlYWRlckFsaWdubWVudC5SSUdIVGAgLSBBbGlnbiByaWdodC5cbiAqIC0gYEhlYWRlckFsaWdubWVudC5DRU5URVJgIC0gQWxpZ24gY2VudGVyLlxuICpcbiAqL1xudmFyIEhlYWRlckFsaWdubWVudDtcbihmdW5jdGlvbiAoSGVhZGVyQWxpZ25tZW50KSB7XG4gICAgSGVhZGVyQWxpZ25tZW50W1wiRk9MTE9XXCJdID0gXCJmb2xsb3dcIjtcbiAgICBIZWFkZXJBbGlnbm1lbnRbXCJMRUZUXCJdID0gXCJsZWZ0XCI7XG4gICAgSGVhZGVyQWxpZ25tZW50W1wiUklHSFRcIl0gPSBcInJpZ2h0XCI7XG4gICAgSGVhZGVyQWxpZ25tZW50W1wiQ0VOVEVSXCJdID0gXCJjZW50ZXJcIjtcbn0pKEhlYWRlckFsaWdubWVudCA9IGV4cG9ydHMuSGVhZGVyQWxpZ25tZW50IHx8IChleHBvcnRzLkhlYWRlckFsaWdubWVudCA9IHt9KSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVGFibGVDZWxsID0gdm9pZCAwO1xuY29uc3QgYWxpZ25tZW50XzEgPSByZXF1aXJlKFwiLi9hbGlnbm1lbnRcIik7XG4vKipcbiAqIEEgYFRhYmxlQ2VsbGAgb2JqZWN0IHJlcHJlc2VudHMgYSB0YWJsZSBjZWxsLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmNsYXNzIFRhYmxlQ2VsbCB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBgVGFibGVDZWxsYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmF3Q29udGVudCAtIFJhdyBjb250ZW50IG9mIHRoZSBjZWxsLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHJhd0NvbnRlbnQpIHtcbiAgICAgICAgdGhpcy5yYXdDb250ZW50ID0gcmF3Q29udGVudDtcbiAgICAgICAgdGhpcy5jb250ZW50ID0gcmF3Q29udGVudC50cmltKCk7XG4gICAgICAgIHRoaXMucGFkZGluZ0xlZnQgPVxuICAgICAgICAgICAgdGhpcy5jb250ZW50ID09PSAnJ1xuICAgICAgICAgICAgICAgID8gdGhpcy5yYXdDb250ZW50ID09PSAnJ1xuICAgICAgICAgICAgICAgICAgICA/IDBcbiAgICAgICAgICAgICAgICAgICAgOiAxXG4gICAgICAgICAgICAgICAgOiB0aGlzLnJhd0NvbnRlbnQubGVuZ3RoIC0gdGhpcy5yYXdDb250ZW50LnRyaW1MZWZ0KCkubGVuZ3RoO1xuICAgICAgICB0aGlzLnBhZGRpbmdSaWdodCA9XG4gICAgICAgICAgICB0aGlzLnJhd0NvbnRlbnQubGVuZ3RoIC0gdGhpcy5jb250ZW50Lmxlbmd0aCAtIHRoaXMucGFkZGluZ0xlZnQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbnZlcnMgdGhlIGNlbGwgdG8gYSB0ZXh0IHJlcHJlc2VudGF0aW9uLlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIHJhdyBjb250ZW50IG9mIHRoZSBjZWxsLlxuICAgICAqL1xuICAgIHRvVGV4dCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmF3Q29udGVudDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBjZWxsIGlzIGEgZGVsaW1pdGVyIGkuZS4gaXQgb25seSBjb250YWlucyBoeXBoZW5zIGAtYCB3aXRoIG9wdGlvbmFsIG9uZVxuICAgICAqIGxlYWRpbmcgYW5kIHRyYWlsaW5nIGNvbG9ucyBgOmAuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGNlbGwgaXMgYSBkZWxpbWl0ZXIuXG4gICAgICovXG4gICAgaXNEZWxpbWl0ZXIoKSB7XG4gICAgICAgIHJldHVybiAvXlxccyo6Py0rOj9cXHMqJC8udGVzdCh0aGlzLnJhd0NvbnRlbnQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBhbGlnbm1lbnQgdGhlIGNlbGwgcmVwcmVzZW50cy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBhbGlnbm1lbnQgdGhlIGNlbGwgcmVwcmVzZW50czsgYHVuZGVmaW5lZGAgaWYgdGhlIGNlbGwgaXMgbm90IGEgZGVsaW1pdGVyLlxuICAgICAqL1xuICAgIGdldEFsaWdubWVudCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRGVsaW1pdGVyKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY29udGVudFswXSA9PT0gJzonKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jb250ZW50W3RoaXMuY29udGVudC5sZW5ndGggLSAxXSA9PT0gJzonKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFsaWdubWVudF8xLkFsaWdubWVudC5DRU5URVI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYWxpZ25tZW50XzEuQWxpZ25tZW50LkxFRlQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY29udGVudFt0aGlzLmNvbnRlbnQubGVuZ3RoIC0gMV0gPT09ICc6Jykge1xuICAgICAgICAgICAgcmV0dXJuIGFsaWdubWVudF8xLkFsaWdubWVudC5SSUdIVDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWxpZ25tZW50XzEuQWxpZ25tZW50Lk5PTkU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGEgcmVsYXRpdmUgcG9zaXRpb24gaW4gdGhlIHRyaW1tZWQgY29udGVudCBmcm9tIHRoYXQgaW4gdGhlIHJhdyBjb250ZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIHJhd09mZnNldCAtIFJlbGF0aXZlIHBvc2l0aW9uIGluIHRoZSByYXcgY29udGVudC5cbiAgICAgKiBAcmV0dXJucyAtIFJlbGF0aXZlIHBvc2l0aW9uIGluIHRoZSB0cmltbWVkIGNvbnRlbnQuXG4gICAgICovXG4gICAgY29tcHV0ZUNvbnRlbnRPZmZzZXQocmF3T2Zmc2V0KSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnQgPT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmF3T2Zmc2V0IDwgdGhpcy5wYWRkaW5nTGVmdCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJhd09mZnNldCA8IHRoaXMucGFkZGluZ0xlZnQgKyB0aGlzLmNvbnRlbnQubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gcmF3T2Zmc2V0IC0gdGhpcy5wYWRkaW5nTGVmdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50Lmxlbmd0aDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYSByZWxhdGl2ZSBwb3NpdGlvbiBpbiB0aGUgcmF3IGNvbnRlbnQgZnJvbSB0aGF0IGluIHRoZSB0cmltbWVkIGNvbnRlbnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udGVudE9mZnNldCAtIFJlbGF0aXZlIHBvc2l0aW9uIGluIHRoZSB0cmltbWVkIGNvbnRlbnQuXG4gICAgICogQHJldHVybnMgLSBSZWxhdGl2ZSBwb3NpdGlvbiBpbiB0aGUgcmF3IGNvbnRlbnQuXG4gICAgICovXG4gICAgY29tcHV0ZVJhd09mZnNldChjb250ZW50T2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiBjb250ZW50T2Zmc2V0ICsgdGhpcy5wYWRkaW5nTGVmdDtcbiAgICB9XG59XG5leHBvcnRzLlRhYmxlQ2VsbCA9IFRhYmxlQ2VsbDtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5UYWJsZVJvdyA9IHZvaWQgMDtcbmNvbnN0IHRhYmxlX2NlbGxfMSA9IHJlcXVpcmUoXCIuL3RhYmxlLWNlbGxcIik7XG4vKipcbiAqIEEgYFRhYmxlUm93YCBvYmplY3QgcmVwcmVzZW50cyBhIHRhYmxlIHJvdy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5jbGFzcyBUYWJsZVJvdyB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBgVGFibGVSb3dgIG9iamVjLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNlbGxzIC0gQ2VsbHMgdGhhdCB0aGUgcm93IGNvbnRhaW5zLlxuICAgICAqIEBwYXJhbSBtYXJnaW5MZWZ0IC0gTWFyZ2luIHN0cmluZyBhdCB0aGUgbGVmdCBvZiB0aGUgcm93LlxuICAgICAqIEBwYXJhbSBtYXJnaW5SaWdodCAtIE1hcmdpbiBzdHJpbmcgYXQgdGhlIHJpZ2h0IG9mIHRoZSByb3cuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoY2VsbHMsIG1hcmdpbkxlZnQsIG1hcmdpblJpZ2h0KSB7XG4gICAgICAgIHRoaXMuX2NlbGxzID0gY2VsbHMuc2xpY2UoKTtcbiAgICAgICAgdGhpcy5tYXJnaW5MZWZ0ID0gbWFyZ2luTGVmdDtcbiAgICAgICAgdGhpcy5tYXJnaW5SaWdodCA9IG1hcmdpblJpZ2h0O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBudW1iZXIgb2YgdGhlIGNlbGxzIGluIHRoZSByb3cuXG4gICAgICovXG4gICAgZ2V0V2lkdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jZWxscy5sZW5ndGg7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGNlbGxzIHRoYXQgdGhlIHJvdyBjb250YWlucy5cbiAgICAgKi9cbiAgICBnZXRDZWxscygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NlbGxzLnNsaWNlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldHMgYSBjZWxsIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaW5kZXggLSBJbmRleC5cbiAgICAgKiBAcmV0dXJucyBUaGUgY2VsbCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4IGlmIGV4aXN0czsgYHVuZGVmaW5lZGAgaWYgbm8gY2VsbCBpcyBmb3VuZC5cbiAgICAgKi9cbiAgICBnZXRDZWxsQXQoaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NlbGxzW2luZGV4XTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyBhIGNlbGwgaW4gdGhlIHJvdyB0byBhIG5ldyB2YWx1ZSwgcmV0dXJuaW5nIGEgY29weSBvZiB0aGUgcm93XG4gICAgICogd2l0aCB0aGUgbW9kaWZpZWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBJZiBhbiBpbnZhbGlkIGluZGV4IGlzIHByb3ZpZGVkLCB0aGUgcm93IHdpbGwgYmUgdW5jaGFuZ2VkLlxuICAgICAqL1xuICAgIHNldENlbGxBdChpbmRleCwgdmFsdWUpIHtcbiAgICAgICAgY29uc3QgY2VsbHMgPSB0aGlzLmdldENlbGxzKCk7IC8vIGEgY29weVxuICAgICAgICBjZWxsc1tpbmRleF0gPSBuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbCh2YWx1ZSk7XG4gICAgICAgIHJldHVybiBuZXcgVGFibGVSb3coY2VsbHMsIHRoaXMubWFyZ2luTGVmdCwgdGhpcy5tYXJnaW5SaWdodCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbnZlcnMgdGhlIHJvdyB0byBhIHRleHQgcmVwcmVzZW50YXRpb24uXG4gICAgICovXG4gICAgdG9UZXh0KCkge1xuICAgICAgICBpZiAodGhpcy5fY2VsbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXJnaW5MZWZ0O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNlbGxzID0gdGhpcy5fY2VsbHMubWFwKChjZWxsKSA9PiBjZWxsLnRvVGV4dCgpKS5qb2luKCd8Jyk7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLm1hcmdpbkxlZnR9fCR7Y2VsbHN9fCR7dGhpcy5tYXJnaW5SaWdodH1gO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIHJvdyBpcyBhIGRlbGltaXRlciBvciBub3QuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHJvdyBpcyBhIGRlbGltaXRlciBpLmUuIGFsbCB0aGUgY2VsbHMgY29udGFpbmVkIGFyZSBkZWxpbWl0ZXJzLlxuICAgICAqL1xuICAgIGlzRGVsaW1pdGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2VsbHMuZXZlcnkoKGNlbGwpID0+IGNlbGwuaXNEZWxpbWl0ZXIoKSk7XG4gICAgfVxufVxuZXhwb3J0cy5UYWJsZVJvdyA9IFRhYmxlUm93O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIFJldHJpZXZlZCBmcm9tXG4gKiAgIGh0dHBzOi8vZ2l0aHViLmNvbS9zdXBlcm1hY3JvL25ldmVydGhyb3dcbiAqXG4gKiBNSVQgTGljZW5zZVxuICogQ29weXJpZ2h0IChjKSAyMDE5IEdpb3JnaW8gRGVsZ2Fkb1xuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkVyciA9IGV4cG9ydHMuT2sgPSBleHBvcnRzLmVyciA9IGV4cG9ydHMub2sgPSB2b2lkIDA7XG5jb25zdCBvayA9ICh2YWx1ZSkgPT4gbmV3IE9rKHZhbHVlKTtcbmV4cG9ydHMub2sgPSBvaztcbmNvbnN0IGVyciA9IChlcnIpID0+IG5ldyBFcnIoZXJyKTtcbmV4cG9ydHMuZXJyID0gZXJyO1xuY2xhc3MgT2sge1xuICAgIGNvbnN0cnVjdG9yKHZhbHVlKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5tYXRjaCA9IChvaywgX2VycikgPT4gb2sodGhpcy52YWx1ZSk7XG4gICAgfVxuICAgIGlzT2soKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpc0VycigpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzT2soKTtcbiAgICB9XG4gICAgbWFwKGYpIHtcbiAgICAgICAgcmV0dXJuIGV4cG9ydHMub2soZih0aGlzLnZhbHVlKSk7XG4gICAgfVxuICAgIG1hcEVycihfZikge1xuICAgICAgICByZXR1cm4gZXhwb3J0cy5vayh0aGlzLnZhbHVlKTtcbiAgICB9XG4gICAgLy8gYWRkIGluZm8gb24gaG93IHRoaXMgaXMgcmVhbGx5IHVzZWZ1bCBmb3IgY29udmVydGluZyBhXG4gICAgLy8gUmVzdWx0PFJlc3VsdDxULCBFMj4sIEUxPlxuICAgIC8vIGludG8gYSBSZXN1bHQ8VCwgRTI+XG4gICAgYW5kVGhlbihmKSB7XG4gICAgICAgIHJldHVybiBmKHRoaXMudmFsdWUpO1xuICAgIH1cbiAgICB1bndyYXBPcihfdikge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG4gICAgX3Vuc2FmZVVud3JhcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICAgIF91bnNhZmVVbndyYXBFcnIoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2FsbGVkIGBfdW5zYWZlVW53cmFwRXJyYCBvbiBhbiBPaycpO1xuICAgIH1cbn1cbmV4cG9ydHMuT2sgPSBPaztcbmNsYXNzIEVyciB7XG4gICAgY29uc3RydWN0b3IoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yO1xuICAgICAgICB0aGlzLm1hdGNoID0gKF9vaywgZXJyKSA9PiBlcnIodGhpcy5lcnJvcik7XG4gICAgfVxuICAgIGlzT2soKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaXNFcnIoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5pc09rKCk7XG4gICAgfVxuICAgIG1hcChfZikge1xuICAgICAgICByZXR1cm4gZXhwb3J0cy5lcnIodGhpcy5lcnJvcik7XG4gICAgfVxuICAgIG1hcEVycihmKSB7XG4gICAgICAgIHJldHVybiBleHBvcnRzLmVycihmKHRoaXMuZXJyb3IpKTtcbiAgICB9XG4gICAgYW5kVGhlbihfZikge1xuICAgICAgICByZXR1cm4gZXhwb3J0cy5lcnIodGhpcy5lcnJvcik7XG4gICAgfVxuICAgIHVud3JhcE9yKHYpIHtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuICAgIF91bnNhZmVVbndyYXAoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2FsbGVkIGBfdW5zYWZlVW53cmFwYCBvbiBhbiBFcnInKTtcbiAgICB9XG4gICAgX3Vuc2FmZVVud3JhcEVycigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3I7XG4gICAgfVxufVxuZXhwb3J0cy5FcnIgPSBFcnI7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMucHJldHR5UHJpbnRBU1QgPSBleHBvcnRzLmNoZWNrQ2hpbGRMZW5ndGggPSBleHBvcnRzLmNoZWNrVHlwZSA9IGV4cG9ydHMuZXJyUmVsYXRpdmVSZWZlcmVuY2VJbmRleCA9IGV4cG9ydHMuZXJySW5kZXgwID0gdm9pZCAwO1xuZXhwb3J0cy5lcnJJbmRleDAgPSBuZXcgRXJyb3IoJ0luZGV4IDAgdXNlZCB0byBjcmVhdGUgYSByZWZlcmVuY2UnKTtcbmV4cG9ydHMuZXJyUmVsYXRpdmVSZWZlcmVuY2VJbmRleCA9IG5ldyBFcnJvcignQ2FuIG5vdCB1c2UgcmVsYXRpdmUgcmVmZXJlbmNlIHdoZXJlIGFic29sdXRlIHJlZmVyZW5jZSBpcyByZXF1aXJlZCcpO1xuY29uc3QgY2hlY2tUeXBlID0gKGFzdCwgLi4uZXhwZWN0ZWRUeXBlcykgPT4ge1xuICAgIGlmIChleHBlY3RlZFR5cGVzLmluZGV4T2YoYXN0LnR5cGUpID49IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEVycm9yKGBGb3JtdWxhIGVsZW1lbnQgJyR7YXN0LnRleHR9JyBpcyBhICR7YXN0LnR5cGV9IGJ1dCBleHBlY3RlZCBgICtcbiAgICAgICAgYG9uZSBvZiAke2V4cGVjdGVkVHlwZXN9IGluIHRoaXMgcG9zaXRpb24uYCk7XG59O1xuZXhwb3J0cy5jaGVja1R5cGUgPSBjaGVja1R5cGU7XG5jb25zdCBjaGVja0NoaWxkTGVuZ3RoID0gKGFzdCwgbGVuKSA9PiB7XG4gICAgaWYgKGFzdC5jaGlsZHJlbi5sZW5ndGggPT09IGxlbikge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiBuZXcgRXJyb3IoYEZvcm11bGEgZWxlbWVudCAnJHthc3QudGV4dH0nIHdhcyBleHBlY3RlZCB0byBoYXZlICR7bGVufSBgICtcbiAgICAgICAgYGVsZW1lbnRzLCBidXQgaGFkICR7YXN0LmNoaWxkcmVuLmxlbmd0aH1gKTtcbn07XG5leHBvcnRzLmNoZWNrQ2hpbGRMZW5ndGggPSBjaGVja0NoaWxkTGVuZ3RoO1xuY29uc3QgcHJldHR5UHJpbnRBU1QgPSAodG9rZW4sIGxldmVsID0gMCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKCcgICcucmVwZWF0KGxldmVsKSArXG4gICAgICAgIGB8LSR7dG9rZW4udHlwZX0ke3Rva2VuLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCA/ICc9JyArIHRva2VuLnRleHQgOiAnJ31gKTtcbiAgICBpZiAodG9rZW4uY2hpbGRyZW4pIHtcbiAgICAgICAgdG9rZW4uY2hpbGRyZW4uZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgZXhwb3J0cy5wcmV0dHlQcmludEFTVChjLCBsZXZlbCArIDEpO1xuICAgICAgICB9KTtcbiAgICB9XG59O1xuZXhwb3J0cy5wcmV0dHlQcmludEFTVCA9IHByZXR0eVByaW50QVNUO1xuIiwiOyhmdW5jdGlvbiAoZ2xvYmFsU2NvcGUpIHtcclxuICAndXNlIHN0cmljdCc7XHJcblxyXG5cclxuICAvKiFcclxuICAgKiAgZGVjaW1hbC5qcyB2MTAuNC4zXHJcbiAgICogIEFuIGFyYml0cmFyeS1wcmVjaXNpb24gRGVjaW1hbCB0eXBlIGZvciBKYXZhU2NyaXB0LlxyXG4gICAqICBodHRwczovL2dpdGh1Yi5jb20vTWlrZU1jbC9kZWNpbWFsLmpzXHJcbiAgICogIENvcHlyaWdodCAoYykgMjAyMiBNaWNoYWVsIE1jbGF1Z2hsaW4gPE04Y2g4OGxAZ21haWwuY29tPlxyXG4gICAqICBNSVQgTGljZW5jZVxyXG4gICAqL1xyXG5cclxuXHJcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIEVESVRBQkxFIERFRkFVTFRTICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cclxuXHJcblxyXG4gICAgLy8gVGhlIG1heGltdW0gZXhwb25lbnQgbWFnbml0dWRlLlxyXG4gICAgLy8gVGhlIGxpbWl0IG9uIHRoZSB2YWx1ZSBvZiBgdG9FeHBOZWdgLCBgdG9FeHBQb3NgLCBgbWluRWAgYW5kIGBtYXhFYC5cclxuICB2YXIgRVhQX0xJTUlUID0gOWUxNSwgICAgICAgICAgICAgICAgICAgICAgLy8gMCB0byA5ZTE1XHJcblxyXG4gICAgLy8gVGhlIGxpbWl0IG9uIHRoZSB2YWx1ZSBvZiBgcHJlY2lzaW9uYCwgYW5kIG9uIHRoZSB2YWx1ZSBvZiB0aGUgZmlyc3QgYXJndW1lbnQgdG9cclxuICAgIC8vIGB0b0RlY2ltYWxQbGFjZXNgLCBgdG9FeHBvbmVudGlhbGAsIGB0b0ZpeGVkYCwgYHRvUHJlY2lzaW9uYCBhbmQgYHRvU2lnbmlmaWNhbnREaWdpdHNgLlxyXG4gICAgTUFYX0RJR0lUUyA9IDFlOSwgICAgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIDFlOVxyXG5cclxuICAgIC8vIEJhc2UgY29udmVyc2lvbiBhbHBoYWJldC5cclxuICAgIE5VTUVSQUxTID0gJzAxMjM0NTY3ODlhYmNkZWYnLFxyXG5cclxuICAgIC8vIFRoZSBuYXR1cmFsIGxvZ2FyaXRobSBvZiAxMCAoMTAyNSBkaWdpdHMpLlxyXG4gICAgTE4xMCA9ICcyLjMwMjU4NTA5Mjk5NDA0NTY4NDAxNzk5MTQ1NDY4NDM2NDIwNzYwMTEwMTQ4ODYyODc3Mjk3NjAzMzMyNzkwMDk2NzU3MjYwOTY3NzM1MjQ4MDIzNTk5NzIwNTA4OTU5ODI5ODM0MTk2Nzc4NDA0MjI4NjI0ODYzMzQwOTUyNTQ2NTA4MjgwNjc1NjY2NjI4NzM2OTA5ODc4MTY4OTQ4MjkwNzIwODMyNTU1NDY4MDg0Mzc5OTg5NDgyNjIzMzE5ODUyODM5MzUwNTMwODk2NTM3NzczMjYyODg0NjE2MzM2NjIyMjI4NzY5ODIxOTg4Njc0NjU0MzY2NzQ3NDQwNDI0MzI3NDM2NTE1NTA0ODkzNDMxNDkzOTM5MTQ3OTYxOTQwNDQwMDIyMjEwNTEwMTcxNDE3NDgwMDM2ODgwODQwMTI2NDcwODA2ODU1Njc3NDMyMTYyMjgzNTUyMjAxMTQ4MDQ2NjM3MTU2NTkxMjEzNzM0NTA3NDc4NTY5NDc2ODM0NjM2MTY3OTIxMDE4MDY0NDUwNzA2NDgwMDAyNzc1MDI2ODQ5MTY3NDY1NTA1ODY4NTY5MzU2NzM0MjA2NzA1ODExMzY0MjkyMjQ1NTQ0MDU3NTg5MjU3MjQyMDgyNDEzMTQ2OTU2ODkwMTY3NTg5NDAyNTY3NzYzMTEzNTY5MTkyOTIwMzMzNzY1ODcxNDE2NjAyMzAxMDU3MDMwODk2MzQ1NzIwNzU0NDAzNzA4NDc0Njk5NDAxNjgyNjkyODI4MDg0ODExODQyODkzMTQ4NDg1MjQ5NDg2NDQ4NzE5Mjc4MDk2NzYyNzEyNzU3NzUzOTcwMjc2Njg2MDU5NTI0OTY3MTY2NzQxODM0ODU3MDQ0MjI1MDcxOTc5NjUwMDQ3MTQ5NTEwNTA0OTIyMTQ3NzY1Njc2MzY5Mzg2NjI5NzY5Nzk1MjIxMTA3MTgyNjQ1NDk3MzQ3NzI2NjI0MjU3MDk0MjkzMjI1ODI3OTg1MDI1ODU1MDk3ODUyNjUzODMyMDc2MDY3MjYzMTcxNjQzMDk1MDU5OTUwODc4MDc1MjM3MTAzMzMxMDExOTc4NTc1NDczMzE1NDE0MjE4MDg0Mjc1NDM4NjM1OTE3NzgxMTcwNTQzMDk4Mjc0ODIzODUwNDU2NDgwMTkwOTU2MTAyOTkyOTE4MjQzMTgyMzc1MjUzNTc3MDk3NTA1Mzk1NjUxODc2OTc1MTAzNzQ5NzA4ODg2OTIxODAyMDUxODkzMzk1MDcyMzg1MzkyMDUxNDQ2MzQxOTcyNjUyODcyODY5NjUxMTA4NjI1NzE0OTIxOTg4NDk5Nzg3NDg4NzM3NzEzNDU2ODYyMDkxNjcwNTgnLFxyXG5cclxuICAgIC8vIFBpICgxMDI1IGRpZ2l0cykuXHJcbiAgICBQSSA9ICczLjE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MzM4MzI3OTUwMjg4NDE5NzE2OTM5OTM3NTEwNTgyMDk3NDk0NDU5MjMwNzgxNjQwNjI4NjIwODk5ODYyODAzNDgyNTM0MjExNzA2Nzk4MjE0ODA4NjUxMzI4MjMwNjY0NzA5Mzg0NDYwOTU1MDU4MjIzMTcyNTM1OTQwODEyODQ4MTExNzQ1MDI4NDEwMjcwMTkzODUyMTEwNTU1OTY0NDYyMjk0ODk1NDkzMDM4MTk2NDQyODgxMDk3NTY2NTkzMzQ0NjEyODQ3NTY0ODIzMzc4Njc4MzE2NTI3MTIwMTkwOTE0NTY0ODU2NjkyMzQ2MDM0ODYxMDQ1NDMyNjY0ODIxMzM5MzYwNzI2MDI0OTE0MTI3MzcyNDU4NzAwNjYwNjMxNTU4ODE3NDg4MTUyMDkyMDk2MjgyOTI1NDA5MTcxNTM2NDM2Nzg5MjU5MDM2MDAxMTMzMDUzMDU0ODgyMDQ2NjUyMTM4NDE0Njk1MTk0MTUxMTYwOTQzMzA1NzI3MDM2NTc1OTU5MTk1MzA5MjE4NjExNzM4MTkzMjYxMTc5MzEwNTExODU0ODA3NDQ2MjM3OTk2Mjc0OTU2NzM1MTg4NTc1MjcyNDg5MTIyNzkzODE4MzAxMTk0OTEyOTgzMzY3MzM2MjQ0MDY1NjY0MzA4NjAyMTM5NDk0NjM5NTIyNDczNzE5MDcwMjE3OTg2MDk0MzcwMjc3MDUzOTIxNzE3NjI5MzE3Njc1MjM4NDY3NDgxODQ2NzY2OTQwNTEzMjAwMDU2ODEyNzE0NTI2MzU2MDgyNzc4NTc3MTM0Mjc1Nzc4OTYwOTE3MzYzNzE3ODcyMTQ2ODQ0MDkwMTIyNDk1MzQzMDE0NjU0OTU4NTM3MTA1MDc5MjI3OTY4OTI1ODkyMzU0MjAxOTk1NjExMjEyOTAyMTk2MDg2NDAzNDQxODE1OTgxMzYyOTc3NDc3MTMwOTk2MDUxODcwNzIxMTM0OTk5OTk5ODM3Mjk3ODA0OTk1MTA1OTczMTczMjgxNjA5NjMxODU5NTAyNDQ1OTQ1NTM0NjkwODMwMjY0MjUyMjMwODI1MzM0NDY4NTAzNTI2MTkzMTE4ODE3MTAxMDAwMzEzNzgzODc1Mjg4NjU4NzUzMzIwODM4MTQyMDYxNzE3NzY2OTE0NzMwMzU5ODI1MzQ5MDQyODc1NTQ2ODczMTE1OTU2Mjg2Mzg4MjM1Mzc4NzU5Mzc1MTk1Nzc4MTg1Nzc4MDUzMjE3MTIyNjgwNjYxMzAwMTkyNzg3NjYxMTE5NTkwOTIxNjQyMDE5ODkzODA5NTI1NzIwMTA2NTQ4NTg2MzI3ODknLFxyXG5cclxuXHJcbiAgICAvLyBUaGUgaW5pdGlhbCBjb25maWd1cmF0aW9uIHByb3BlcnRpZXMgb2YgdGhlIERlY2ltYWwgY29uc3RydWN0b3IuXHJcbiAgICBERUZBVUxUUyA9IHtcclxuXHJcbiAgICAgIC8vIFRoZXNlIHZhbHVlcyBtdXN0IGJlIGludGVnZXJzIHdpdGhpbiB0aGUgc3RhdGVkIHJhbmdlcyAoaW5jbHVzaXZlKS5cclxuICAgICAgLy8gTW9zdCBvZiB0aGVzZSB2YWx1ZXMgY2FuIGJlIGNoYW5nZWQgYXQgcnVuLXRpbWUgdXNpbmcgdGhlIGBEZWNpbWFsLmNvbmZpZ2AgbWV0aG9kLlxyXG5cclxuICAgICAgLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cyBvZiB0aGUgcmVzdWx0IG9mIGEgY2FsY3VsYXRpb24gb3IgYmFzZSBjb252ZXJzaW9uLlxyXG4gICAgICAvLyBFLmcuIGBEZWNpbWFsLmNvbmZpZyh7IHByZWNpc2lvbjogMjAgfSk7YFxyXG4gICAgICBwcmVjaXNpb246IDIwLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxIHRvIE1BWF9ESUdJVFNcclxuXHJcbiAgICAgIC8vIFRoZSByb3VuZGluZyBtb2RlIHVzZWQgd2hlbiByb3VuZGluZyB0byBgcHJlY2lzaW9uYC5cclxuICAgICAgLy9cclxuICAgICAgLy8gUk9VTkRfVVAgICAgICAgICAwIEF3YXkgZnJvbSB6ZXJvLlxyXG4gICAgICAvLyBST1VORF9ET1dOICAgICAgIDEgVG93YXJkcyB6ZXJvLlxyXG4gICAgICAvLyBST1VORF9DRUlMICAgICAgIDIgVG93YXJkcyArSW5maW5pdHkuXHJcbiAgICAgIC8vIFJPVU5EX0ZMT09SICAgICAgMyBUb3dhcmRzIC1JbmZpbml0eS5cclxuICAgICAgLy8gUk9VTkRfSEFMRl9VUCAgICA0IFRvd2FyZHMgbmVhcmVzdCBuZWlnaGJvdXIuIElmIGVxdWlkaXN0YW50LCB1cC5cclxuICAgICAgLy8gUk9VTkRfSEFMRl9ET1dOICA1IFRvd2FyZHMgbmVhcmVzdCBuZWlnaGJvdXIuIElmIGVxdWlkaXN0YW50LCBkb3duLlxyXG4gICAgICAvLyBST1VORF9IQUxGX0VWRU4gIDYgVG93YXJkcyBuZWFyZXN0IG5laWdoYm91ci4gSWYgZXF1aWRpc3RhbnQsIHRvd2FyZHMgZXZlbiBuZWlnaGJvdXIuXHJcbiAgICAgIC8vIFJPVU5EX0hBTEZfQ0VJTCAgNyBUb3dhcmRzIG5lYXJlc3QgbmVpZ2hib3VyLiBJZiBlcXVpZGlzdGFudCwgdG93YXJkcyArSW5maW5pdHkuXHJcbiAgICAgIC8vIFJPVU5EX0hBTEZfRkxPT1IgOCBUb3dhcmRzIG5lYXJlc3QgbmVpZ2hib3VyLiBJZiBlcXVpZGlzdGFudCwgdG93YXJkcyAtSW5maW5pdHkuXHJcbiAgICAgIC8vXHJcbiAgICAgIC8vIEUuZy5cclxuICAgICAgLy8gYERlY2ltYWwucm91bmRpbmcgPSA0O2BcclxuICAgICAgLy8gYERlY2ltYWwucm91bmRpbmcgPSBEZWNpbWFsLlJPVU5EX0hBTEZfVVA7YFxyXG4gICAgICByb3VuZGluZzogNCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIDhcclxuXHJcbiAgICAgIC8vIFRoZSBtb2R1bG8gbW9kZSB1c2VkIHdoZW4gY2FsY3VsYXRpbmcgdGhlIG1vZHVsdXM6IGEgbW9kIG4uXHJcbiAgICAgIC8vIFRoZSBxdW90aWVudCAocSA9IGEgLyBuKSBpcyBjYWxjdWxhdGVkIGFjY29yZGluZyB0byB0aGUgY29ycmVzcG9uZGluZyByb3VuZGluZyBtb2RlLlxyXG4gICAgICAvLyBUaGUgcmVtYWluZGVyIChyKSBpcyBjYWxjdWxhdGVkIGFzOiByID0gYSAtIG4gKiBxLlxyXG4gICAgICAvL1xyXG4gICAgICAvLyBVUCAgICAgICAgIDAgVGhlIHJlbWFpbmRlciBpcyBwb3NpdGl2ZSBpZiB0aGUgZGl2aWRlbmQgaXMgbmVnYXRpdmUsIGVsc2UgaXMgbmVnYXRpdmUuXHJcbiAgICAgIC8vIERPV04gICAgICAgMSBUaGUgcmVtYWluZGVyIGhhcyB0aGUgc2FtZSBzaWduIGFzIHRoZSBkaXZpZGVuZCAoSmF2YVNjcmlwdCAlKS5cclxuICAgICAgLy8gRkxPT1IgICAgICAzIFRoZSByZW1haW5kZXIgaGFzIHRoZSBzYW1lIHNpZ24gYXMgdGhlIGRpdmlzb3IgKFB5dGhvbiAlKS5cclxuICAgICAgLy8gSEFMRl9FVkVOICA2IFRoZSBJRUVFIDc1NCByZW1haW5kZXIgZnVuY3Rpb24uXHJcbiAgICAgIC8vIEVVQ0xJRCAgICAgOSBFdWNsaWRpYW4gZGl2aXNpb24uIHEgPSBzaWduKG4pICogZmxvb3IoYSAvIGFicyhuKSkuIEFsd2F5cyBwb3NpdGl2ZS5cclxuICAgICAgLy9cclxuICAgICAgLy8gVHJ1bmNhdGVkIGRpdmlzaW9uICgxKSwgZmxvb3JlZCBkaXZpc2lvbiAoMyksIHRoZSBJRUVFIDc1NCByZW1haW5kZXIgKDYpLCBhbmQgRXVjbGlkaWFuXHJcbiAgICAgIC8vIGRpdmlzaW9uICg5KSBhcmUgY29tbW9ubHkgdXNlZCBmb3IgdGhlIG1vZHVsdXMgb3BlcmF0aW9uLiBUaGUgb3RoZXIgcm91bmRpbmcgbW9kZXMgY2FuIGFsc29cclxuICAgICAgLy8gYmUgdXNlZCwgYnV0IHRoZXkgbWF5IG5vdCBnaXZlIHVzZWZ1bCByZXN1bHRzLlxyXG4gICAgICBtb2R1bG86IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIDlcclxuXHJcbiAgICAgIC8vIFRoZSBleHBvbmVudCB2YWx1ZSBhdCBhbmQgYmVuZWF0aCB3aGljaCBgdG9TdHJpbmdgIHJldHVybnMgZXhwb25lbnRpYWwgbm90YXRpb24uXHJcbiAgICAgIC8vIEphdmFTY3JpcHQgbnVtYmVyczogLTdcclxuICAgICAgdG9FeHBOZWc6IC03LCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMCB0byAtRVhQX0xJTUlUXHJcblxyXG4gICAgICAvLyBUaGUgZXhwb25lbnQgdmFsdWUgYXQgYW5kIGFib3ZlIHdoaWNoIGB0b1N0cmluZ2AgcmV0dXJucyBleHBvbmVudGlhbCBub3RhdGlvbi5cclxuICAgICAgLy8gSmF2YVNjcmlwdCBudW1iZXJzOiAyMVxyXG4gICAgICB0b0V4cFBvczogIDIxLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIEVYUF9MSU1JVFxyXG5cclxuICAgICAgLy8gVGhlIG1pbmltdW0gZXhwb25lbnQgdmFsdWUsIGJlbmVhdGggd2hpY2ggdW5kZXJmbG93IHRvIHplcm8gb2NjdXJzLlxyXG4gICAgICAvLyBKYXZhU2NyaXB0IG51bWJlcnM6IC0zMjQgICg1ZS0zMjQpXHJcbiAgICAgIG1pbkU6IC1FWFBfTElNSVQsICAgICAgICAgICAgICAgICAgICAgIC8vIC0xIHRvIC1FWFBfTElNSVRcclxuXHJcbiAgICAgIC8vIFRoZSBtYXhpbXVtIGV4cG9uZW50IHZhbHVlLCBhYm92ZSB3aGljaCBvdmVyZmxvdyB0byBJbmZpbml0eSBvY2N1cnMuXHJcbiAgICAgIC8vIEphdmFTY3JpcHQgbnVtYmVyczogMzA4ICAoMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDgpXHJcbiAgICAgIG1heEU6IEVYUF9MSU1JVCwgICAgICAgICAgICAgICAgICAgICAgIC8vIDEgdG8gRVhQX0xJTUlUXHJcblxyXG4gICAgICAvLyBXaGV0aGVyIHRvIHVzZSBjcnlwdG9ncmFwaGljYWxseS1zZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uLCBpZiBhdmFpbGFibGUuXHJcbiAgICAgIGNyeXB0bzogZmFsc2UgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRydWUvZmFsc2VcclxuICAgIH0sXHJcblxyXG5cclxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFTkQgT0YgRURJVEFCTEUgREVGQVVMVFMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvL1xyXG5cclxuXHJcbiAgICBEZWNpbWFsLCBpbmV4YWN0LCBub0NvbmZsaWN0LCBxdWFkcmFudCxcclxuICAgIGV4dGVybmFsID0gdHJ1ZSxcclxuXHJcbiAgICBkZWNpbWFsRXJyb3IgPSAnW0RlY2ltYWxFcnJvcl0gJyxcclxuICAgIGludmFsaWRBcmd1bWVudCA9IGRlY2ltYWxFcnJvciArICdJbnZhbGlkIGFyZ3VtZW50OiAnLFxyXG4gICAgcHJlY2lzaW9uTGltaXRFeGNlZWRlZCA9IGRlY2ltYWxFcnJvciArICdQcmVjaXNpb24gbGltaXQgZXhjZWVkZWQnLFxyXG4gICAgY3J5cHRvVW5hdmFpbGFibGUgPSBkZWNpbWFsRXJyb3IgKyAnY3J5cHRvIHVuYXZhaWxhYmxlJyxcclxuICAgIHRhZyA9ICdbb2JqZWN0IERlY2ltYWxdJyxcclxuXHJcbiAgICBtYXRoZmxvb3IgPSBNYXRoLmZsb29yLFxyXG4gICAgbWF0aHBvdyA9IE1hdGgucG93LFxyXG5cclxuICAgIGlzQmluYXJ5ID0gL14wYihbMDFdKyhcXC5bMDFdKik/fFxcLlswMV0rKShwWystXT9cXGQrKT8kL2ksXHJcbiAgICBpc0hleCA9IC9eMHgoWzAtOWEtZl0rKFxcLlswLTlhLWZdKik/fFxcLlswLTlhLWZdKykocFsrLV0/XFxkKyk/JC9pLFxyXG4gICAgaXNPY3RhbCA9IC9eMG8oWzAtN10rKFxcLlswLTddKik/fFxcLlswLTddKykocFsrLV0/XFxkKyk/JC9pLFxyXG4gICAgaXNEZWNpbWFsID0gL14oXFxkKyhcXC5cXGQqKT98XFwuXFxkKykoZVsrLV0/XFxkKyk/JC9pLFxyXG5cclxuICAgIEJBU0UgPSAxZTcsXHJcbiAgICBMT0dfQkFTRSA9IDcsXHJcbiAgICBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MSxcclxuXHJcbiAgICBMTjEwX1BSRUNJU0lPTiA9IExOMTAubGVuZ3RoIC0gMSxcclxuICAgIFBJX1BSRUNJU0lPTiA9IFBJLmxlbmd0aCAtIDEsXHJcblxyXG4gICAgLy8gRGVjaW1hbC5wcm90b3R5cGUgb2JqZWN0XHJcbiAgICBQID0geyB0b1N0cmluZ1RhZzogdGFnIH07XHJcblxyXG5cclxuICAvLyBEZWNpbWFsIHByb3RvdHlwZSBtZXRob2RzXHJcblxyXG5cclxuICAvKlxyXG4gICAqICBhYnNvbHV0ZVZhbHVlICAgICAgICAgICAgIGFic1xyXG4gICAqICBjZWlsXHJcbiAgICogIGNsYW1wZWRUbyAgICAgICAgICAgICAgICAgY2xhbXBcclxuICAgKiAgY29tcGFyZWRUbyAgICAgICAgICAgICAgICBjbXBcclxuICAgKiAgY29zaW5lICAgICAgICAgICAgICAgICAgICBjb3NcclxuICAgKiAgY3ViZVJvb3QgICAgICAgICAgICAgICAgICBjYnJ0XHJcbiAgICogIGRlY2ltYWxQbGFjZXMgICAgICAgICAgICAgZHBcclxuICAgKiAgZGl2aWRlZEJ5ICAgICAgICAgICAgICAgICBkaXZcclxuICAgKiAgZGl2aWRlZFRvSW50ZWdlckJ5ICAgICAgICBkaXZUb0ludFxyXG4gICAqICBlcXVhbHMgICAgICAgICAgICAgICAgICAgIGVxXHJcbiAgICogIGZsb29yXHJcbiAgICogIGdyZWF0ZXJUaGFuICAgICAgICAgICAgICAgZ3RcclxuICAgKiAgZ3JlYXRlclRoYW5PckVxdWFsVG8gICAgICBndGVcclxuICAgKiAgaHlwZXJib2xpY0Nvc2luZSAgICAgICAgICBjb3NoXHJcbiAgICogIGh5cGVyYm9saWNTaW5lICAgICAgICAgICAgc2luaFxyXG4gICAqICBoeXBlcmJvbGljVGFuZ2VudCAgICAgICAgIHRhbmhcclxuICAgKiAgaW52ZXJzZUNvc2luZSAgICAgICAgICAgICBhY29zXHJcbiAgICogIGludmVyc2VIeXBlcmJvbGljQ29zaW5lICAgYWNvc2hcclxuICAgKiAgaW52ZXJzZUh5cGVyYm9saWNTaW5lICAgICBhc2luaFxyXG4gICAqICBpbnZlcnNlSHlwZXJib2xpY1RhbmdlbnQgIGF0YW5oXHJcbiAgICogIGludmVyc2VTaW5lICAgICAgICAgICAgICAgYXNpblxyXG4gICAqICBpbnZlcnNlVGFuZ2VudCAgICAgICAgICAgIGF0YW5cclxuICAgKiAgaXNGaW5pdGVcclxuICAgKiAgaXNJbnRlZ2VyICAgICAgICAgICAgICAgICBpc0ludFxyXG4gICAqICBpc05hTlxyXG4gICAqICBpc05lZ2F0aXZlICAgICAgICAgICAgICAgIGlzTmVnXHJcbiAgICogIGlzUG9zaXRpdmUgICAgICAgICAgICAgICAgaXNQb3NcclxuICAgKiAgaXNaZXJvXHJcbiAgICogIGxlc3NUaGFuICAgICAgICAgICAgICAgICAgbHRcclxuICAgKiAgbGVzc1RoYW5PckVxdWFsVG8gICAgICAgICBsdGVcclxuICAgKiAgbG9nYXJpdGhtICAgICAgICAgICAgICAgICBsb2dcclxuICAgKiAgW21heGltdW1dICAgICAgICAgICAgICAgICBbbWF4XVxyXG4gICAqICBbbWluaW11bV0gICAgICAgICAgICAgICAgIFttaW5dXHJcbiAgICogIG1pbnVzICAgICAgICAgICAgICAgICAgICAgc3ViXHJcbiAgICogIG1vZHVsbyAgICAgICAgICAgICAgICAgICAgbW9kXHJcbiAgICogIG5hdHVyYWxFeHBvbmVudGlhbCAgICAgICAgZXhwXHJcbiAgICogIG5hdHVyYWxMb2dhcml0aG0gICAgICAgICAgbG5cclxuICAgKiAgbmVnYXRlZCAgICAgICAgICAgICAgICAgICBuZWdcclxuICAgKiAgcGx1cyAgICAgICAgICAgICAgICAgICAgICBhZGRcclxuICAgKiAgcHJlY2lzaW9uICAgICAgICAgICAgICAgICBzZFxyXG4gICAqICByb3VuZFxyXG4gICAqICBzaW5lICAgICAgICAgICAgICAgICAgICAgIHNpblxyXG4gICAqICBzcXVhcmVSb290ICAgICAgICAgICAgICAgIHNxcnRcclxuICAgKiAgdGFuZ2VudCAgICAgICAgICAgICAgICAgICB0YW5cclxuICAgKiAgdGltZXMgICAgICAgICAgICAgICAgICAgICBtdWxcclxuICAgKiAgdG9CaW5hcnlcclxuICAgKiAgdG9EZWNpbWFsUGxhY2VzICAgICAgICAgICB0b0RQXHJcbiAgICogIHRvRXhwb25lbnRpYWxcclxuICAgKiAgdG9GaXhlZFxyXG4gICAqICB0b0ZyYWN0aW9uXHJcbiAgICogIHRvSGV4YWRlY2ltYWwgICAgICAgICAgICAgdG9IZXhcclxuICAgKiAgdG9OZWFyZXN0XHJcbiAgICogIHRvTnVtYmVyXHJcbiAgICogIHRvT2N0YWxcclxuICAgKiAgdG9Qb3dlciAgICAgICAgICAgICAgICAgICBwb3dcclxuICAgKiAgdG9QcmVjaXNpb25cclxuICAgKiAgdG9TaWduaWZpY2FudERpZ2l0cyAgICAgICB0b1NEXHJcbiAgICogIHRvU3RyaW5nXHJcbiAgICogIHRydW5jYXRlZCAgICAgICAgICAgICAgICAgdHJ1bmNcclxuICAgKiAgdmFsdWVPZiAgICAgICAgICAgICAgICAgICB0b0pTT05cclxuICAgKi9cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbC5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuYWJzb2x1dGVWYWx1ZSA9IFAuYWJzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIHggPSBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzKTtcclxuICAgIGlmICh4LnMgPCAwKSB4LnMgPSAxO1xyXG4gICAgcmV0dXJuIGZpbmFsaXNlKHgpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgcm91bmRlZCB0byBhIHdob2xlIG51bWJlciBpbiB0aGVcclxuICAgKiBkaXJlY3Rpb24gb2YgcG9zaXRpdmUgSW5maW5pdHkuXHJcbiAgICpcclxuICAgKi9cclxuICBQLmNlaWwgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gZmluYWxpc2UobmV3IHRoaXMuY29uc3RydWN0b3IodGhpcyksIHRoaXMuZSArIDEsIDIpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgY2xhbXBlZCB0byB0aGUgcmFuZ2VcclxuICAgKiBkZWxpbmVhdGVkIGJ5IGBtaW5gIGFuZCBgbWF4YC5cclxuICAgKlxyXG4gICAqIG1pbiB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqIG1heCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5jbGFtcGVkVG8gPSBQLmNsYW1wID0gZnVuY3Rpb24gKG1pbiwgbWF4KSB7XHJcbiAgICB2YXIgayxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG4gICAgbWluID0gbmV3IEN0b3IobWluKTtcclxuICAgIG1heCA9IG5ldyBDdG9yKG1heCk7XHJcbiAgICBpZiAoIW1pbi5zIHx8ICFtYXgucykgcmV0dXJuIG5ldyBDdG9yKE5hTik7XHJcbiAgICBpZiAobWluLmd0KG1heCkpIHRocm93IEVycm9yKGludmFsaWRBcmd1bWVudCArIG1heCk7XHJcbiAgICBrID0geC5jbXAobWluKTtcclxuICAgIHJldHVybiBrIDwgMCA/IG1pbiA6IHguY21wKG1heCkgPiAwID8gbWF4IDogbmV3IEN0b3IoeCk7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuXHJcbiAgICogICAxICAgIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgaXMgZ3JlYXRlciB0aGFuIHRoZSB2YWx1ZSBvZiBgeWAsXHJcbiAgICogIC0xICAgIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgaXMgbGVzcyB0aGFuIHRoZSB2YWx1ZSBvZiBgeWAsXHJcbiAgICogICAwICAgIGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSB2YWx1ZSxcclxuICAgKiAgIE5hTiAgaWYgdGhlIHZhbHVlIG9mIGVpdGhlciBEZWNpbWFsIGlzIE5hTi5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuY29tcGFyZWRUbyA9IFAuY21wID0gZnVuY3Rpb24gKHkpIHtcclxuICAgIHZhciBpLCBqLCB4ZEwsIHlkTCxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIHhkID0geC5kLFxyXG4gICAgICB5ZCA9ICh5ID0gbmV3IHguY29uc3RydWN0b3IoeSkpLmQsXHJcbiAgICAgIHhzID0geC5zLFxyXG4gICAgICB5cyA9IHkucztcclxuXHJcbiAgICAvLyBFaXRoZXIgTmFOIG9yIMKxSW5maW5pdHk/XHJcbiAgICBpZiAoIXhkIHx8ICF5ZCkge1xyXG4gICAgICByZXR1cm4gIXhzIHx8ICF5cyA/IE5hTiA6IHhzICE9PSB5cyA/IHhzIDogeGQgPT09IHlkID8gMCA6ICF4ZCBeIHhzIDwgMCA/IDEgOiAtMTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBFaXRoZXIgemVybz9cclxuICAgIGlmICgheGRbMF0gfHwgIXlkWzBdKSByZXR1cm4geGRbMF0gPyB4cyA6IHlkWzBdID8gLXlzIDogMDtcclxuXHJcbiAgICAvLyBTaWducyBkaWZmZXI/XHJcbiAgICBpZiAoeHMgIT09IHlzKSByZXR1cm4geHM7XHJcblxyXG4gICAgLy8gQ29tcGFyZSBleHBvbmVudHMuXHJcbiAgICBpZiAoeC5lICE9PSB5LmUpIHJldHVybiB4LmUgPiB5LmUgXiB4cyA8IDAgPyAxIDogLTE7XHJcblxyXG4gICAgeGRMID0geGQubGVuZ3RoO1xyXG4gICAgeWRMID0geWQubGVuZ3RoO1xyXG5cclxuICAgIC8vIENvbXBhcmUgZGlnaXQgYnkgZGlnaXQuXHJcbiAgICBmb3IgKGkgPSAwLCBqID0geGRMIDwgeWRMID8geGRMIDogeWRMOyBpIDwgajsgKytpKSB7XHJcbiAgICAgIGlmICh4ZFtpXSAhPT0geWRbaV0pIHJldHVybiB4ZFtpXSA+IHlkW2ldIF4geHMgPCAwID8gMSA6IC0xO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENvbXBhcmUgbGVuZ3Rocy5cclxuICAgIHJldHVybiB4ZEwgPT09IHlkTCA/IDAgOiB4ZEwgPiB5ZEwgXiB4cyA8IDAgPyAxIDogLTE7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGNvc2luZSBvZiB0aGUgdmFsdWUgaW4gcmFkaWFucyBvZiB0aGlzIERlY2ltYWwuXHJcbiAgICpcclxuICAgKiBEb21haW46IFstSW5maW5pdHksIEluZmluaXR5XVxyXG4gICAqIFJhbmdlOiBbLTEsIDFdXHJcbiAgICpcclxuICAgKiBjb3MoMCkgICAgICAgICA9IDFcclxuICAgKiBjb3MoLTApICAgICAgICA9IDFcclxuICAgKiBjb3MoSW5maW5pdHkpICA9IE5hTlxyXG4gICAqIGNvcygtSW5maW5pdHkpID0gTmFOXHJcbiAgICogY29zKE5hTikgICAgICAgPSBOYU5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuY29zaW5lID0gUC5jb3MgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgcHIsIHJtLFxyXG4gICAgICB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3I7XHJcblxyXG4gICAgaWYgKCF4LmQpIHJldHVybiBuZXcgQ3RvcihOYU4pO1xyXG5cclxuICAgIC8vIGNvcygwKSA9IGNvcygtMCkgPSAxXHJcbiAgICBpZiAoIXguZFswXSkgcmV0dXJuIG5ldyBDdG9yKDEpO1xyXG5cclxuICAgIHByID0gQ3Rvci5wcmVjaXNpb247XHJcbiAgICBybSA9IEN0b3Iucm91bmRpbmc7XHJcbiAgICBDdG9yLnByZWNpc2lvbiA9IHByICsgTWF0aC5tYXgoeC5lLCB4LnNkKCkpICsgTE9HX0JBU0U7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gMTtcclxuXHJcbiAgICB4ID0gY29zaW5lKEN0b3IsIHRvTGVzc1RoYW5IYWxmUGkoQ3RvciwgeCkpO1xyXG5cclxuICAgIEN0b3IucHJlY2lzaW9uID0gcHI7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gcm07XHJcblxyXG4gICAgcmV0dXJuIGZpbmFsaXNlKHF1YWRyYW50ID09IDIgfHwgcXVhZHJhbnQgPT0gMyA/IHgubmVnKCkgOiB4LCBwciwgcm0sIHRydWUpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGN1YmUgcm9vdCBvZiB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsLCByb3VuZGVkIHRvXHJcbiAgICogYHByZWNpc2lvbmAgc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqICBjYnJ0KDApICA9ICAwXHJcbiAgICogIGNicnQoLTApID0gLTBcclxuICAgKiAgY2JydCgxKSAgPSAgMVxyXG4gICAqICBjYnJ0KC0xKSA9IC0xXHJcbiAgICogIGNicnQoTikgID0gIE5cclxuICAgKiAgY2JydCgtSSkgPSAtSVxyXG4gICAqICBjYnJ0KEkpICA9ICBJXHJcbiAgICpcclxuICAgKiBNYXRoLmNicnQoeCkgPSAoeCA8IDAgPyAtTWF0aC5wb3coLXgsIDEvMykgOiBNYXRoLnBvdyh4LCAxLzMpKVxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5jdWJlUm9vdCA9IFAuY2JydCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBlLCBtLCBuLCByLCByZXAsIHMsIHNkLCB0LCB0MywgdDNwbHVzeCxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgIGlmICgheC5pc0Zpbml0ZSgpIHx8IHguaXNaZXJvKCkpIHJldHVybiBuZXcgQ3Rvcih4KTtcclxuICAgIGV4dGVybmFsID0gZmFsc2U7XHJcblxyXG4gICAgLy8gSW5pdGlhbCBlc3RpbWF0ZS5cclxuICAgIHMgPSB4LnMgKiBtYXRocG93KHgucyAqIHgsIDEgLyAzKTtcclxuXHJcbiAgICAgLy8gTWF0aC5jYnJ0IHVuZGVyZmxvdy9vdmVyZmxvdz9cclxuICAgICAvLyBQYXNzIHggdG8gTWF0aC5wb3cgYXMgaW50ZWdlciwgdGhlbiBhZGp1c3QgdGhlIGV4cG9uZW50IG9mIHRoZSByZXN1bHQuXHJcbiAgICBpZiAoIXMgfHwgTWF0aC5hYnMocykgPT0gMSAvIDApIHtcclxuICAgICAgbiA9IGRpZ2l0c1RvU3RyaW5nKHguZCk7XHJcbiAgICAgIGUgPSB4LmU7XHJcblxyXG4gICAgICAvLyBBZGp1c3QgbiBleHBvbmVudCBzbyBpdCBpcyBhIG11bHRpcGxlIG9mIDMgYXdheSBmcm9tIHggZXhwb25lbnQuXHJcbiAgICAgIGlmIChzID0gKGUgLSBuLmxlbmd0aCArIDEpICUgMykgbiArPSAocyA9PSAxIHx8IHMgPT0gLTIgPyAnMCcgOiAnMDAnKTtcclxuICAgICAgcyA9IG1hdGhwb3cobiwgMSAvIDMpO1xyXG5cclxuICAgICAgLy8gUmFyZWx5LCBlIG1heSBiZSBvbmUgbGVzcyB0aGFuIHRoZSByZXN1bHQgZXhwb25lbnQgdmFsdWUuXHJcbiAgICAgIGUgPSBtYXRoZmxvb3IoKGUgKyAxKSAvIDMpIC0gKGUgJSAzID09IChlIDwgMCA/IC0xIDogMikpO1xyXG5cclxuICAgICAgaWYgKHMgPT0gMSAvIDApIHtcclxuICAgICAgICBuID0gJzVlJyArIGU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbiA9IHMudG9FeHBvbmVudGlhbCgpO1xyXG4gICAgICAgIG4gPSBuLnNsaWNlKDAsIG4uaW5kZXhPZignZScpICsgMSkgKyBlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByID0gbmV3IEN0b3Iobik7XHJcbiAgICAgIHIucyA9IHgucztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHIgPSBuZXcgQ3RvcihzLnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHNkID0gKGUgPSBDdG9yLnByZWNpc2lvbikgKyAzO1xyXG5cclxuICAgIC8vIEhhbGxleSdzIG1ldGhvZC5cclxuICAgIC8vIFRPRE8/IENvbXBhcmUgTmV3dG9uJ3MgbWV0aG9kLlxyXG4gICAgZm9yICg7Oykge1xyXG4gICAgICB0ID0gcjtcclxuICAgICAgdDMgPSB0LnRpbWVzKHQpLnRpbWVzKHQpO1xyXG4gICAgICB0M3BsdXN4ID0gdDMucGx1cyh4KTtcclxuICAgICAgciA9IGRpdmlkZSh0M3BsdXN4LnBsdXMoeCkudGltZXModCksIHQzcGx1c3gucGx1cyh0MyksIHNkICsgMiwgMSk7XHJcblxyXG4gICAgICAvLyBUT0RPPyBSZXBsYWNlIHdpdGggZm9yLWxvb3AgYW5kIGNoZWNrUm91bmRpbmdEaWdpdHMuXHJcbiAgICAgIGlmIChkaWdpdHNUb1N0cmluZyh0LmQpLnNsaWNlKDAsIHNkKSA9PT0gKG4gPSBkaWdpdHNUb1N0cmluZyhyLmQpKS5zbGljZSgwLCBzZCkpIHtcclxuICAgICAgICBuID0gbi5zbGljZShzZCAtIDMsIHNkICsgMSk7XHJcblxyXG4gICAgICAgIC8vIFRoZSA0dGggcm91bmRpbmcgZGlnaXQgbWF5IGJlIGluIGVycm9yIGJ5IC0xIHNvIGlmIHRoZSA0IHJvdW5kaW5nIGRpZ2l0cyBhcmUgOTk5OSBvciA0OTk5XHJcbiAgICAgICAgLy8gLCBpLmUuIGFwcHJvYWNoaW5nIGEgcm91bmRpbmcgYm91bmRhcnksIGNvbnRpbnVlIHRoZSBpdGVyYXRpb24uXHJcbiAgICAgICAgaWYgKG4gPT0gJzk5OTknIHx8ICFyZXAgJiYgbiA9PSAnNDk5OScpIHtcclxuXHJcbiAgICAgICAgICAvLyBPbiB0aGUgZmlyc3QgaXRlcmF0aW9uIG9ubHksIGNoZWNrIHRvIHNlZSBpZiByb3VuZGluZyB1cCBnaXZlcyB0aGUgZXhhY3QgcmVzdWx0IGFzIHRoZVxyXG4gICAgICAgICAgLy8gbmluZXMgbWF5IGluZmluaXRlbHkgcmVwZWF0LlxyXG4gICAgICAgICAgaWYgKCFyZXApIHtcclxuICAgICAgICAgICAgZmluYWxpc2UodCwgZSArIDEsIDApO1xyXG5cclxuICAgICAgICAgICAgaWYgKHQudGltZXModCkudGltZXModCkuZXEoeCkpIHtcclxuICAgICAgICAgICAgICByID0gdDtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHNkICs9IDQ7XHJcbiAgICAgICAgICByZXAgPSAxO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgLy8gSWYgdGhlIHJvdW5kaW5nIGRpZ2l0cyBhcmUgbnVsbCwgMHswLDR9IG9yIDUwezAsM30sIGNoZWNrIGZvciBhbiBleGFjdCByZXN1bHQuXHJcbiAgICAgICAgICAvLyBJZiBub3QsIHRoZW4gdGhlcmUgYXJlIGZ1cnRoZXIgZGlnaXRzIGFuZCBtIHdpbGwgYmUgdHJ1dGh5LlxyXG4gICAgICAgICAgaWYgKCErbiB8fCAhK24uc2xpY2UoMSkgJiYgbi5jaGFyQXQoMCkgPT0gJzUnKSB7XHJcblxyXG4gICAgICAgICAgICAvLyBUcnVuY2F0ZSB0byB0aGUgZmlyc3Qgcm91bmRpbmcgZGlnaXQuXHJcbiAgICAgICAgICAgIGZpbmFsaXNlKHIsIGUgKyAxLCAxKTtcclxuICAgICAgICAgICAgbSA9ICFyLnRpbWVzKHIpLnRpbWVzKHIpLmVxKHgpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gZmluYWxpc2UociwgZSwgQ3Rvci5yb3VuZGluZywgbSk7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIHRoZSBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbC5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuZGVjaW1hbFBsYWNlcyA9IFAuZHAgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgdyxcclxuICAgICAgZCA9IHRoaXMuZCxcclxuICAgICAgbiA9IE5hTjtcclxuXHJcbiAgICBpZiAoZCkge1xyXG4gICAgICB3ID0gZC5sZW5ndGggLSAxO1xyXG4gICAgICBuID0gKHcgLSBtYXRoZmxvb3IodGhpcy5lIC8gTE9HX0JBU0UpKSAqIExPR19CQVNFO1xyXG5cclxuICAgICAgLy8gU3VidHJhY3QgdGhlIG51bWJlciBvZiB0cmFpbGluZyB6ZXJvcyBvZiB0aGUgbGFzdCB3b3JkLlxyXG4gICAgICB3ID0gZFt3XTtcclxuICAgICAgaWYgKHcpIGZvciAoOyB3ICUgMTAgPT0gMDsgdyAvPSAxMCkgbi0tO1xyXG4gICAgICBpZiAobiA8IDApIG4gPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBuO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqICBuIC8gMCA9IElcclxuICAgKiAgbiAvIE4gPSBOXHJcbiAgICogIG4gLyBJID0gMFxyXG4gICAqICAwIC8gbiA9IDBcclxuICAgKiAgMCAvIDAgPSBOXHJcbiAgICogIDAgLyBOID0gTlxyXG4gICAqICAwIC8gSSA9IDBcclxuICAgKiAgTiAvIG4gPSBOXHJcbiAgICogIE4gLyAwID0gTlxyXG4gICAqICBOIC8gTiA9IE5cclxuICAgKiAgTiAvIEkgPSBOXHJcbiAgICogIEkgLyBuID0gSVxyXG4gICAqICBJIC8gMCA9IElcclxuICAgKiAgSSAvIE4gPSBOXHJcbiAgICogIEkgLyBJID0gTlxyXG4gICAqXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCBkaXZpZGVkIGJ5IGB5YCwgcm91bmRlZCB0b1xyXG4gICAqIGBwcmVjaXNpb25gIHNpZ25pZmljYW50IGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKi9cclxuICBQLmRpdmlkZWRCeSA9IFAuZGl2ID0gZnVuY3Rpb24gKHkpIHtcclxuICAgIHJldHVybiBkaXZpZGUodGhpcywgbmV3IHRoaXMuY29uc3RydWN0b3IoeSkpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBpbnRlZ2VyIHBhcnQgb2YgZGl2aWRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbFxyXG4gICAqIGJ5IHRoZSB2YWx1ZSBvZiBgeWAsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAgc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuZGl2aWRlZFRvSW50ZWdlckJ5ID0gUC5kaXZUb0ludCA9IGZ1bmN0aW9uICh5KSB7XHJcbiAgICB2YXIgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG4gICAgcmV0dXJuIGZpbmFsaXNlKGRpdmlkZSh4LCBuZXcgQ3Rvcih5KSwgMCwgMSwgMSksIEN0b3IucHJlY2lzaW9uLCBDdG9yLnJvdW5kaW5nKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIGlzIGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiBgeWAsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICpcclxuICAgKi9cclxuICBQLmVxdWFscyA9IFAuZXEgPSBmdW5jdGlvbiAoeSkge1xyXG4gICAgcmV0dXJuIHRoaXMuY21wKHkpID09PSAwO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgcm91bmRlZCB0byBhIHdob2xlIG51bWJlciBpbiB0aGVcclxuICAgKiBkaXJlY3Rpb24gb2YgbmVnYXRpdmUgSW5maW5pdHkuXHJcbiAgICpcclxuICAgKi9cclxuICBQLmZsb29yID0gZnVuY3Rpb24gKCkge1xyXG4gICAgcmV0dXJuIGZpbmFsaXNlKG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMpLCB0aGlzLmUgKyAxLCAzKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIGlzIGdyZWF0ZXIgdGhhbiB0aGUgdmFsdWUgb2YgYHlgLCBvdGhlcndpc2UgcmV0dXJuXHJcbiAgICogZmFsc2UuXHJcbiAgICpcclxuICAgKi9cclxuICBQLmdyZWF0ZXJUaGFuID0gUC5ndCA9IGZ1bmN0aW9uICh5KSB7XHJcbiAgICByZXR1cm4gdGhpcy5jbXAoeSkgPiAwO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiBgeWAsXHJcbiAgICogb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuZ3JlYXRlclRoYW5PckVxdWFsVG8gPSBQLmd0ZSA9IGZ1bmN0aW9uICh5KSB7XHJcbiAgICB2YXIgayA9IHRoaXMuY21wKHkpO1xyXG4gICAgcmV0dXJuIGsgPT0gMSB8fCBrID09PSAwO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBoeXBlcmJvbGljIGNvc2luZSBvZiB0aGUgdmFsdWUgaW4gcmFkaWFucyBvZiB0aGlzXHJcbiAgICogRGVjaW1hbC5cclxuICAgKlxyXG4gICAqIERvbWFpbjogWy1JbmZpbml0eSwgSW5maW5pdHldXHJcbiAgICogUmFuZ2U6IFsxLCBJbmZpbml0eV1cclxuICAgKlxyXG4gICAqIGNvc2goeCkgPSAxICsgeF4yLzIhICsgeF40LzQhICsgeF42LzYhICsgLi4uXHJcbiAgICpcclxuICAgKiBjb3NoKDApICAgICAgICAgPSAxXHJcbiAgICogY29zaCgtMCkgICAgICAgID0gMVxyXG4gICAqIGNvc2goSW5maW5pdHkpICA9IEluZmluaXR5XHJcbiAgICogY29zaCgtSW5maW5pdHkpID0gSW5maW5pdHlcclxuICAgKiBjb3NoKE5hTikgICAgICAgPSBOYU5cclxuICAgKlxyXG4gICAqICB4ICAgICAgICB0aW1lIHRha2VuIChtcykgICByZXN1bHRcclxuICAgKiAxMDAwICAgICAgOSAgICAgICAgICAgICAgICAgOS44NTAzNTU1NzAwODUyMzQ5Njk0ZSs0MzNcclxuICAgKiAxMDAwMCAgICAgMjUgICAgICAgICAgICAgICAgNC40MDM0MDkxMTI4MzE0NjA3OTM2ZSs0MzQyXHJcbiAgICogMTAwMDAwICAgIDE3MSAgICAgICAgICAgICAgIDEuNDAzMzMxNjgwMjEzMDYxNTg5N2UrNDM0MjlcclxuICAgKiAxMDAwMDAwICAgMzgxNyAgICAgICAgICAgICAgMS41MTY2MDc2OTg0MDEwNDM3NzI1ZSs0MzQyOTRcclxuICAgKiAxMDAwMDAwMCAgYWJhbmRvbmVkIGFmdGVyIDIgbWludXRlIHdhaXRcclxuICAgKlxyXG4gICAqIFRPRE8/IENvbXBhcmUgcGVyZm9ybWFuY2Ugb2YgY29zaCh4KSA9IDAuNSAqIChleHAoeCkgKyBleHAoLXgpKVxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5oeXBlcmJvbGljQ29zaW5lID0gUC5jb3NoID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIGssIG4sIHByLCBybSwgbGVuLFxyXG4gICAgICB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3IsXHJcbiAgICAgIG9uZSA9IG5ldyBDdG9yKDEpO1xyXG5cclxuICAgIGlmICgheC5pc0Zpbml0ZSgpKSByZXR1cm4gbmV3IEN0b3IoeC5zID8gMSAvIDAgOiBOYU4pO1xyXG4gICAgaWYgKHguaXNaZXJvKCkpIHJldHVybiBvbmU7XHJcblxyXG4gICAgcHIgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgIHJtID0gQ3Rvci5yb3VuZGluZztcclxuICAgIEN0b3IucHJlY2lzaW9uID0gcHIgKyBNYXRoLm1heCh4LmUsIHguc2QoKSkgKyA0O1xyXG4gICAgQ3Rvci5yb3VuZGluZyA9IDE7XHJcbiAgICBsZW4gPSB4LmQubGVuZ3RoO1xyXG5cclxuICAgIC8vIEFyZ3VtZW50IHJlZHVjdGlvbjogY29zKDR4KSA9IDEgLSA4Y29zXjIoeCkgKyA4Y29zXjQoeCkgKyAxXHJcbiAgICAvLyBpLmUuIGNvcyh4KSA9IDEgLSBjb3NeMih4LzQpKDggLSA4Y29zXjIoeC80KSlcclxuXHJcbiAgICAvLyBFc3RpbWF0ZSB0aGUgb3B0aW11bSBudW1iZXIgb2YgdGltZXMgdG8gdXNlIHRoZSBhcmd1bWVudCByZWR1Y3Rpb24uXHJcbiAgICAvLyBUT0RPPyBFc3RpbWF0aW9uIHJldXNlZCBmcm9tIGNvc2luZSgpIGFuZCBtYXkgbm90IGJlIG9wdGltYWwgaGVyZS5cclxuICAgIGlmIChsZW4gPCAzMikge1xyXG4gICAgICBrID0gTWF0aC5jZWlsKGxlbiAvIDMpO1xyXG4gICAgICBuID0gKDEgLyB0aW55UG93KDQsIGspKS50b1N0cmluZygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgayA9IDE2O1xyXG4gICAgICBuID0gJzIuMzI4MzA2NDM2NTM4Njk2Mjg5MDYyNWUtMTAnO1xyXG4gICAgfVxyXG5cclxuICAgIHggPSB0YXlsb3JTZXJpZXMoQ3RvciwgMSwgeC50aW1lcyhuKSwgbmV3IEN0b3IoMSksIHRydWUpO1xyXG5cclxuICAgIC8vIFJldmVyc2UgYXJndW1lbnQgcmVkdWN0aW9uXHJcbiAgICB2YXIgY29zaDJfeCxcclxuICAgICAgaSA9IGssXHJcbiAgICAgIGQ4ID0gbmV3IEN0b3IoOCk7XHJcbiAgICBmb3IgKDsgaS0tOykge1xyXG4gICAgICBjb3NoMl94ID0geC50aW1lcyh4KTtcclxuICAgICAgeCA9IG9uZS5taW51cyhjb3NoMl94LnRpbWVzKGQ4Lm1pbnVzKGNvc2gyX3gudGltZXMoZDgpKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmaW5hbGlzZSh4LCBDdG9yLnByZWNpc2lvbiA9IHByLCBDdG9yLnJvdW5kaW5nID0gcm0sIHRydWUpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBoeXBlcmJvbGljIHNpbmUgb2YgdGhlIHZhbHVlIGluIHJhZGlhbnMgb2YgdGhpc1xyXG4gICAqIERlY2ltYWwuXHJcbiAgICpcclxuICAgKiBEb21haW46IFstSW5maW5pdHksIEluZmluaXR5XVxyXG4gICAqIFJhbmdlOiBbLUluZmluaXR5LCBJbmZpbml0eV1cclxuICAgKlxyXG4gICAqIHNpbmgoeCkgPSB4ICsgeF4zLzMhICsgeF41LzUhICsgeF43LzchICsgLi4uXHJcbiAgICpcclxuICAgKiBzaW5oKDApICAgICAgICAgPSAwXHJcbiAgICogc2luaCgtMCkgICAgICAgID0gLTBcclxuICAgKiBzaW5oKEluZmluaXR5KSAgPSBJbmZpbml0eVxyXG4gICAqIHNpbmgoLUluZmluaXR5KSA9IC1JbmZpbml0eVxyXG4gICAqIHNpbmgoTmFOKSAgICAgICA9IE5hTlxyXG4gICAqXHJcbiAgICogeCAgICAgICAgdGltZSB0YWtlbiAobXMpXHJcbiAgICogMTAgICAgICAgMiBtc1xyXG4gICAqIDEwMCAgICAgIDUgbXNcclxuICAgKiAxMDAwICAgICAxNCBtc1xyXG4gICAqIDEwMDAwICAgIDgyIG1zXHJcbiAgICogMTAwMDAwICAgODg2IG1zICAgICAgICAgICAgMS40MDMzMzE2ODAyMTMwNjE1ODk3ZSs0MzQyOVxyXG4gICAqIDIwMDAwMCAgIDI2MTMgbXNcclxuICAgKiAzMDAwMDAgICA1NDA3IG1zXHJcbiAgICogNDAwMDAwICAgODgyNCBtc1xyXG4gICAqIDUwMDAwMCAgIDEzMDI2IG1zICAgICAgICAgIDguNzA4MDY0MzYxMjcxODA4NDEyOWUrMjE3MTQ2XHJcbiAgICogMTAwMDAwMCAgNDg1NDMgbXNcclxuICAgKlxyXG4gICAqIFRPRE8/IENvbXBhcmUgcGVyZm9ybWFuY2Ugb2Ygc2luaCh4KSA9IDAuNSAqIChleHAoeCkgLSBleHAoLXgpKVxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5oeXBlcmJvbGljU2luZSA9IFAuc2luaCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBrLCBwciwgcm0sIGxlbixcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgIGlmICgheC5pc0Zpbml0ZSgpIHx8IHguaXNaZXJvKCkpIHJldHVybiBuZXcgQ3Rvcih4KTtcclxuXHJcbiAgICBwciA9IEN0b3IucHJlY2lzaW9uO1xyXG4gICAgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSBwciArIE1hdGgubWF4KHguZSwgeC5zZCgpKSArIDQ7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gMTtcclxuICAgIGxlbiA9IHguZC5sZW5ndGg7XHJcblxyXG4gICAgaWYgKGxlbiA8IDMpIHtcclxuICAgICAgeCA9IHRheWxvclNlcmllcyhDdG9yLCAyLCB4LCB4LCB0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAvLyBBbHRlcm5hdGl2ZSBhcmd1bWVudCByZWR1Y3Rpb246IHNpbmgoM3gpID0gc2luaCh4KSgzICsgNHNpbmheMih4KSlcclxuICAgICAgLy8gaS5lLiBzaW5oKHgpID0gc2luaCh4LzMpKDMgKyA0c2luaF4yKHgvMykpXHJcbiAgICAgIC8vIDMgbXVsdGlwbGljYXRpb25zIGFuZCAxIGFkZGl0aW9uXHJcblxyXG4gICAgICAvLyBBcmd1bWVudCByZWR1Y3Rpb246IHNpbmgoNXgpID0gc2luaCh4KSg1ICsgc2luaF4yKHgpKDIwICsgMTZzaW5oXjIoeCkpKVxyXG4gICAgICAvLyBpLmUuIHNpbmgoeCkgPSBzaW5oKHgvNSkoNSArIHNpbmheMih4LzUpKDIwICsgMTZzaW5oXjIoeC81KSkpXHJcbiAgICAgIC8vIDQgbXVsdGlwbGljYXRpb25zIGFuZCAyIGFkZGl0aW9uc1xyXG5cclxuICAgICAgLy8gRXN0aW1hdGUgdGhlIG9wdGltdW0gbnVtYmVyIG9mIHRpbWVzIHRvIHVzZSB0aGUgYXJndW1lbnQgcmVkdWN0aW9uLlxyXG4gICAgICBrID0gMS40ICogTWF0aC5zcXJ0KGxlbik7XHJcbiAgICAgIGsgPSBrID4gMTYgPyAxNiA6IGsgfCAwO1xyXG5cclxuICAgICAgeCA9IHgudGltZXMoMSAvIHRpbnlQb3coNSwgaykpO1xyXG4gICAgICB4ID0gdGF5bG9yU2VyaWVzKEN0b3IsIDIsIHgsIHgsIHRydWUpO1xyXG5cclxuICAgICAgLy8gUmV2ZXJzZSBhcmd1bWVudCByZWR1Y3Rpb25cclxuICAgICAgdmFyIHNpbmgyX3gsXHJcbiAgICAgICAgZDUgPSBuZXcgQ3Rvcig1KSxcclxuICAgICAgICBkMTYgPSBuZXcgQ3RvcigxNiksXHJcbiAgICAgICAgZDIwID0gbmV3IEN0b3IoMjApO1xyXG4gICAgICBmb3IgKDsgay0tOykge1xyXG4gICAgICAgIHNpbmgyX3ggPSB4LnRpbWVzKHgpO1xyXG4gICAgICAgIHggPSB4LnRpbWVzKGQ1LnBsdXMoc2luaDJfeC50aW1lcyhkMTYudGltZXMoc2luaDJfeCkucGx1cyhkMjApKSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSBwcjtcclxuICAgIEN0b3Iucm91bmRpbmcgPSBybTtcclxuXHJcbiAgICByZXR1cm4gZmluYWxpc2UoeCwgcHIsIHJtLCB0cnVlKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgaHlwZXJib2xpYyB0YW5nZW50IG9mIHRoZSB2YWx1ZSBpbiByYWRpYW5zIG9mIHRoaXNcclxuICAgKiBEZWNpbWFsLlxyXG4gICAqXHJcbiAgICogRG9tYWluOiBbLUluZmluaXR5LCBJbmZpbml0eV1cclxuICAgKiBSYW5nZTogWy0xLCAxXVxyXG4gICAqXHJcbiAgICogdGFuaCh4KSA9IHNpbmgoeCkgLyBjb3NoKHgpXHJcbiAgICpcclxuICAgKiB0YW5oKDApICAgICAgICAgPSAwXHJcbiAgICogdGFuaCgtMCkgICAgICAgID0gLTBcclxuICAgKiB0YW5oKEluZmluaXR5KSAgPSAxXHJcbiAgICogdGFuaCgtSW5maW5pdHkpID0gLTFcclxuICAgKiB0YW5oKE5hTikgICAgICAgPSBOYU5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuaHlwZXJib2xpY1RhbmdlbnQgPSBQLnRhbmggPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgcHIsIHJtLFxyXG4gICAgICB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3I7XHJcblxyXG4gICAgaWYgKCF4LmlzRmluaXRlKCkpIHJldHVybiBuZXcgQ3Rvcih4LnMpO1xyXG4gICAgaWYgKHguaXNaZXJvKCkpIHJldHVybiBuZXcgQ3Rvcih4KTtcclxuXHJcbiAgICBwciA9IEN0b3IucHJlY2lzaW9uO1xyXG4gICAgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSBwciArIDc7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gMTtcclxuXHJcbiAgICByZXR1cm4gZGl2aWRlKHguc2luaCgpLCB4LmNvc2goKSwgQ3Rvci5wcmVjaXNpb24gPSBwciwgQ3Rvci5yb3VuZGluZyA9IHJtKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgYXJjY29zaW5lIChpbnZlcnNlIGNvc2luZSkgaW4gcmFkaWFucyBvZiB0aGUgdmFsdWUgb2ZcclxuICAgKiB0aGlzIERlY2ltYWwuXHJcbiAgICpcclxuICAgKiBEb21haW46IFstMSwgMV1cclxuICAgKiBSYW5nZTogWzAsIHBpXVxyXG4gICAqXHJcbiAgICogYWNvcyh4KSA9IHBpLzIgLSBhc2luKHgpXHJcbiAgICpcclxuICAgKiBhY29zKDApICAgICAgID0gcGkvMlxyXG4gICAqIGFjb3MoLTApICAgICAgPSBwaS8yXHJcbiAgICogYWNvcygxKSAgICAgICA9IDBcclxuICAgKiBhY29zKC0xKSAgICAgID0gcGlcclxuICAgKiBhY29zKDEvMikgICAgID0gcGkvM1xyXG4gICAqIGFjb3MoLTEvMikgICAgPSAyKnBpLzNcclxuICAgKiBhY29zKHx4fCA+IDEpID0gTmFOXHJcbiAgICogYWNvcyhOYU4pICAgICA9IE5hTlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5pbnZlcnNlQ29zaW5lID0gUC5hY29zID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIGhhbGZQaSxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yLFxyXG4gICAgICBrID0geC5hYnMoKS5jbXAoMSksXHJcbiAgICAgIHByID0gQ3Rvci5wcmVjaXNpb24sXHJcbiAgICAgIHJtID0gQ3Rvci5yb3VuZGluZztcclxuXHJcbiAgICBpZiAoayAhPT0gLTEpIHtcclxuICAgICAgcmV0dXJuIGsgPT09IDBcclxuICAgICAgICAvLyB8eHwgaXMgMVxyXG4gICAgICAgID8geC5pc05lZygpID8gZ2V0UGkoQ3RvciwgcHIsIHJtKSA6IG5ldyBDdG9yKDApXHJcbiAgICAgICAgLy8gfHh8ID4gMSBvciB4IGlzIE5hTlxyXG4gICAgICAgIDogbmV3IEN0b3IoTmFOKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoeC5pc1plcm8oKSkgcmV0dXJuIGdldFBpKEN0b3IsIHByICsgNCwgcm0pLnRpbWVzKDAuNSk7XHJcblxyXG4gICAgLy8gVE9ETz8gU3BlY2lhbCBjYXNlIGFjb3MoMC41KSA9IHBpLzMgYW5kIGFjb3MoLTAuNSkgPSAyKnBpLzNcclxuXHJcbiAgICBDdG9yLnByZWNpc2lvbiA9IHByICsgNjtcclxuICAgIEN0b3Iucm91bmRpbmcgPSAxO1xyXG5cclxuICAgIHggPSB4LmFzaW4oKTtcclxuICAgIGhhbGZQaSA9IGdldFBpKEN0b3IsIHByICsgNCwgcm0pLnRpbWVzKDAuNSk7XHJcblxyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSBwcjtcclxuICAgIEN0b3Iucm91bmRpbmcgPSBybTtcclxuXHJcbiAgICByZXR1cm4gaGFsZlBpLm1pbnVzKHgpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBpbnZlcnNlIG9mIHRoZSBoeXBlcmJvbGljIGNvc2luZSBpbiByYWRpYW5zIG9mIHRoZVxyXG4gICAqIHZhbHVlIG9mIHRoaXMgRGVjaW1hbC5cclxuICAgKlxyXG4gICAqIERvbWFpbjogWzEsIEluZmluaXR5XVxyXG4gICAqIFJhbmdlOiBbMCwgSW5maW5pdHldXHJcbiAgICpcclxuICAgKiBhY29zaCh4KSA9IGxuKHggKyBzcXJ0KHheMiAtIDEpKVxyXG4gICAqXHJcbiAgICogYWNvc2goeCA8IDEpICAgICA9IE5hTlxyXG4gICAqIGFjb3NoKE5hTikgICAgICAgPSBOYU5cclxuICAgKiBhY29zaChJbmZpbml0eSkgID0gSW5maW5pdHlcclxuICAgKiBhY29zaCgtSW5maW5pdHkpID0gTmFOXHJcbiAgICogYWNvc2goMCkgICAgICAgICA9IE5hTlxyXG4gICAqIGFjb3NoKC0wKSAgICAgICAgPSBOYU5cclxuICAgKiBhY29zaCgxKSAgICAgICAgID0gMFxyXG4gICAqIGFjb3NoKC0xKSAgICAgICAgPSBOYU5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuaW52ZXJzZUh5cGVyYm9saWNDb3NpbmUgPSBQLmFjb3NoID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIHByLCBybSxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgIGlmICh4Lmx0ZSgxKSkgcmV0dXJuIG5ldyBDdG9yKHguZXEoMSkgPyAwIDogTmFOKTtcclxuICAgIGlmICgheC5pc0Zpbml0ZSgpKSByZXR1cm4gbmV3IEN0b3IoeCk7XHJcblxyXG4gICAgcHIgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgIHJtID0gQ3Rvci5yb3VuZGluZztcclxuICAgIEN0b3IucHJlY2lzaW9uID0gcHIgKyBNYXRoLm1heChNYXRoLmFicyh4LmUpLCB4LnNkKCkpICsgNDtcclxuICAgIEN0b3Iucm91bmRpbmcgPSAxO1xyXG4gICAgZXh0ZXJuYWwgPSBmYWxzZTtcclxuXHJcbiAgICB4ID0geC50aW1lcyh4KS5taW51cygxKS5zcXJ0KCkucGx1cyh4KTtcclxuXHJcbiAgICBleHRlcm5hbCA9IHRydWU7XHJcbiAgICBDdG9yLnByZWNpc2lvbiA9IHByO1xyXG4gICAgQ3Rvci5yb3VuZGluZyA9IHJtO1xyXG5cclxuICAgIHJldHVybiB4LmxuKCk7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGludmVyc2Ugb2YgdGhlIGh5cGVyYm9saWMgc2luZSBpbiByYWRpYW5zIG9mIHRoZSB2YWx1ZVxyXG4gICAqIG9mIHRoaXMgRGVjaW1hbC5cclxuICAgKlxyXG4gICAqIERvbWFpbjogWy1JbmZpbml0eSwgSW5maW5pdHldXHJcbiAgICogUmFuZ2U6IFstSW5maW5pdHksIEluZmluaXR5XVxyXG4gICAqXHJcbiAgICogYXNpbmgoeCkgPSBsbih4ICsgc3FydCh4XjIgKyAxKSlcclxuICAgKlxyXG4gICAqIGFzaW5oKE5hTikgICAgICAgPSBOYU5cclxuICAgKiBhc2luaChJbmZpbml0eSkgID0gSW5maW5pdHlcclxuICAgKiBhc2luaCgtSW5maW5pdHkpID0gLUluZmluaXR5XHJcbiAgICogYXNpbmgoMCkgICAgICAgICA9IDBcclxuICAgKiBhc2luaCgtMCkgICAgICAgID0gLTBcclxuICAgKlxyXG4gICAqL1xyXG4gIFAuaW52ZXJzZUh5cGVyYm9saWNTaW5lID0gUC5hc2luaCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBwciwgcm0sXHJcbiAgICAgIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICBpZiAoIXguaXNGaW5pdGUoKSB8fCB4LmlzWmVybygpKSByZXR1cm4gbmV3IEN0b3IoeCk7XHJcblxyXG4gICAgcHIgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgIHJtID0gQ3Rvci5yb3VuZGluZztcclxuICAgIEN0b3IucHJlY2lzaW9uID0gcHIgKyAyICogTWF0aC5tYXgoTWF0aC5hYnMoeC5lKSwgeC5zZCgpKSArIDY7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gMTtcclxuICAgIGV4dGVybmFsID0gZmFsc2U7XHJcblxyXG4gICAgeCA9IHgudGltZXMoeCkucGx1cygxKS5zcXJ0KCkucGx1cyh4KTtcclxuXHJcbiAgICBleHRlcm5hbCA9IHRydWU7XHJcbiAgICBDdG9yLnByZWNpc2lvbiA9IHByO1xyXG4gICAgQ3Rvci5yb3VuZGluZyA9IHJtO1xyXG5cclxuICAgIHJldHVybiB4LmxuKCk7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGludmVyc2Ugb2YgdGhlIGh5cGVyYm9saWMgdGFuZ2VudCBpbiByYWRpYW5zIG9mIHRoZVxyXG4gICAqIHZhbHVlIG9mIHRoaXMgRGVjaW1hbC5cclxuICAgKlxyXG4gICAqIERvbWFpbjogWy0xLCAxXVxyXG4gICAqIFJhbmdlOiBbLUluZmluaXR5LCBJbmZpbml0eV1cclxuICAgKlxyXG4gICAqIGF0YW5oKHgpID0gMC41ICogbG4oKDEgKyB4KSAvICgxIC0geCkpXHJcbiAgICpcclxuICAgKiBhdGFuaCh8eHwgPiAxKSAgID0gTmFOXHJcbiAgICogYXRhbmgoTmFOKSAgICAgICA9IE5hTlxyXG4gICAqIGF0YW5oKEluZmluaXR5KSAgPSBOYU5cclxuICAgKiBhdGFuaCgtSW5maW5pdHkpID0gTmFOXHJcbiAgICogYXRhbmgoMCkgICAgICAgICA9IDBcclxuICAgKiBhdGFuaCgtMCkgICAgICAgID0gLTBcclxuICAgKiBhdGFuaCgxKSAgICAgICAgID0gSW5maW5pdHlcclxuICAgKiBhdGFuaCgtMSkgICAgICAgID0gLUluZmluaXR5XHJcbiAgICpcclxuICAgKi9cclxuICBQLmludmVyc2VIeXBlcmJvbGljVGFuZ2VudCA9IFAuYXRhbmggPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgcHIsIHJtLCB3cHIsIHhzZCxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgIGlmICgheC5pc0Zpbml0ZSgpKSByZXR1cm4gbmV3IEN0b3IoTmFOKTtcclxuICAgIGlmICh4LmUgPj0gMCkgcmV0dXJuIG5ldyBDdG9yKHguYWJzKCkuZXEoMSkgPyB4LnMgLyAwIDogeC5pc1plcm8oKSA/IHggOiBOYU4pO1xyXG5cclxuICAgIHByID0gQ3Rvci5wcmVjaXNpb247XHJcbiAgICBybSA9IEN0b3Iucm91bmRpbmc7XHJcbiAgICB4c2QgPSB4LnNkKCk7XHJcblxyXG4gICAgaWYgKE1hdGgubWF4KHhzZCwgcHIpIDwgMiAqIC14LmUgLSAxKSByZXR1cm4gZmluYWxpc2UobmV3IEN0b3IoeCksIHByLCBybSwgdHJ1ZSk7XHJcblxyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSB3cHIgPSB4c2QgLSB4LmU7XHJcblxyXG4gICAgeCA9IGRpdmlkZSh4LnBsdXMoMSksIG5ldyBDdG9yKDEpLm1pbnVzKHgpLCB3cHIgKyBwciwgMSk7XHJcblxyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSBwciArIDQ7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gMTtcclxuXHJcbiAgICB4ID0geC5sbigpO1xyXG5cclxuICAgIEN0b3IucHJlY2lzaW9uID0gcHI7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gcm07XHJcblxyXG4gICAgcmV0dXJuIHgudGltZXMoMC41KTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgYXJjc2luZSAoaW52ZXJzZSBzaW5lKSBpbiByYWRpYW5zIG9mIHRoZSB2YWx1ZSBvZiB0aGlzXHJcbiAgICogRGVjaW1hbC5cclxuICAgKlxyXG4gICAqIERvbWFpbjogWy1JbmZpbml0eSwgSW5maW5pdHldXHJcbiAgICogUmFuZ2U6IFstcGkvMiwgcGkvMl1cclxuICAgKlxyXG4gICAqIGFzaW4oeCkgPSAyKmF0YW4oeC8oMSArIHNxcnQoMSAtIHheMikpKVxyXG4gICAqXHJcbiAgICogYXNpbigwKSAgICAgICA9IDBcclxuICAgKiBhc2luKC0wKSAgICAgID0gLTBcclxuICAgKiBhc2luKDEvMikgICAgID0gcGkvNlxyXG4gICAqIGFzaW4oLTEvMikgICAgPSAtcGkvNlxyXG4gICAqIGFzaW4oMSkgICAgICAgPSBwaS8yXHJcbiAgICogYXNpbigtMSkgICAgICA9IC1waS8yXHJcbiAgICogYXNpbih8eHwgPiAxKSA9IE5hTlxyXG4gICAqIGFzaW4oTmFOKSAgICAgPSBOYU5cclxuICAgKlxyXG4gICAqIFRPRE8/IENvbXBhcmUgcGVyZm9ybWFuY2Ugb2YgVGF5bG9yIHNlcmllcy5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuaW52ZXJzZVNpbmUgPSBQLmFzaW4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgaGFsZlBpLCBrLFxyXG4gICAgICBwciwgcm0sXHJcbiAgICAgIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICBpZiAoeC5pc1plcm8oKSkgcmV0dXJuIG5ldyBDdG9yKHgpO1xyXG5cclxuICAgIGsgPSB4LmFicygpLmNtcCgxKTtcclxuICAgIHByID0gQ3Rvci5wcmVjaXNpb247XHJcbiAgICBybSA9IEN0b3Iucm91bmRpbmc7XHJcblxyXG4gICAgaWYgKGsgIT09IC0xKSB7XHJcblxyXG4gICAgICAvLyB8eHwgaXMgMVxyXG4gICAgICBpZiAoayA9PT0gMCkge1xyXG4gICAgICAgIGhhbGZQaSA9IGdldFBpKEN0b3IsIHByICsgNCwgcm0pLnRpbWVzKDAuNSk7XHJcbiAgICAgICAgaGFsZlBpLnMgPSB4LnM7XHJcbiAgICAgICAgcmV0dXJuIGhhbGZQaTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gfHh8ID4gMSBvciB4IGlzIE5hTlxyXG4gICAgICByZXR1cm4gbmV3IEN0b3IoTmFOKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUT0RPPyBTcGVjaWFsIGNhc2UgYXNpbigxLzIpID0gcGkvNiBhbmQgYXNpbigtMS8yKSA9IC1waS82XHJcblxyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSBwciArIDY7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gMTtcclxuXHJcbiAgICB4ID0geC5kaXYobmV3IEN0b3IoMSkubWludXMoeC50aW1lcyh4KSkuc3FydCgpLnBsdXMoMSkpLmF0YW4oKTtcclxuXHJcbiAgICBDdG9yLnByZWNpc2lvbiA9IHByO1xyXG4gICAgQ3Rvci5yb3VuZGluZyA9IHJtO1xyXG5cclxuICAgIHJldHVybiB4LnRpbWVzKDIpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBhcmN0YW5nZW50IChpbnZlcnNlIHRhbmdlbnQpIGluIHJhZGlhbnMgb2YgdGhlIHZhbHVlXHJcbiAgICogb2YgdGhpcyBEZWNpbWFsLlxyXG4gICAqXHJcbiAgICogRG9tYWluOiBbLUluZmluaXR5LCBJbmZpbml0eV1cclxuICAgKiBSYW5nZTogWy1waS8yLCBwaS8yXVxyXG4gICAqXHJcbiAgICogYXRhbih4KSA9IHggLSB4XjMvMyArIHheNS81IC0geF43LzcgKyAuLi5cclxuICAgKlxyXG4gICAqIGF0YW4oMCkgICAgICAgICA9IDBcclxuICAgKiBhdGFuKC0wKSAgICAgICAgPSAtMFxyXG4gICAqIGF0YW4oMSkgICAgICAgICA9IHBpLzRcclxuICAgKiBhdGFuKC0xKSAgICAgICAgPSAtcGkvNFxyXG4gICAqIGF0YW4oSW5maW5pdHkpICA9IHBpLzJcclxuICAgKiBhdGFuKC1JbmZpbml0eSkgPSAtcGkvMlxyXG4gICAqIGF0YW4oTmFOKSAgICAgICA9IE5hTlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5pbnZlcnNlVGFuZ2VudCA9IFAuYXRhbiA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBpLCBqLCBrLCBuLCBweCwgdCwgciwgd3ByLCB4MixcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yLFxyXG4gICAgICBwciA9IEN0b3IucHJlY2lzaW9uLFxyXG4gICAgICBybSA9IEN0b3Iucm91bmRpbmc7XHJcblxyXG4gICAgaWYgKCF4LmlzRmluaXRlKCkpIHtcclxuICAgICAgaWYgKCF4LnMpIHJldHVybiBuZXcgQ3RvcihOYU4pO1xyXG4gICAgICBpZiAocHIgKyA0IDw9IFBJX1BSRUNJU0lPTikge1xyXG4gICAgICAgIHIgPSBnZXRQaShDdG9yLCBwciArIDQsIHJtKS50aW1lcygwLjUpO1xyXG4gICAgICAgIHIucyA9IHgucztcclxuICAgICAgICByZXR1cm4gcjtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh4LmlzWmVybygpKSB7XHJcbiAgICAgIHJldHVybiBuZXcgQ3Rvcih4KTtcclxuICAgIH0gZWxzZSBpZiAoeC5hYnMoKS5lcSgxKSAmJiBwciArIDQgPD0gUElfUFJFQ0lTSU9OKSB7XHJcbiAgICAgIHIgPSBnZXRQaShDdG9yLCBwciArIDQsIHJtKS50aW1lcygwLjI1KTtcclxuICAgICAgci5zID0geC5zO1xyXG4gICAgICByZXR1cm4gcjtcclxuICAgIH1cclxuXHJcbiAgICBDdG9yLnByZWNpc2lvbiA9IHdwciA9IHByICsgMTA7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gMTtcclxuXHJcbiAgICAvLyBUT0RPPyBpZiAoeCA+PSAxICYmIHByIDw9IFBJX1BSRUNJU0lPTikgYXRhbih4KSA9IGhhbGZQaSAqIHgucyAtIGF0YW4oMSAvIHgpO1xyXG5cclxuICAgIC8vIEFyZ3VtZW50IHJlZHVjdGlvblxyXG4gICAgLy8gRW5zdXJlIHx4fCA8IDAuNDJcclxuICAgIC8vIGF0YW4oeCkgPSAyICogYXRhbih4IC8gKDEgKyBzcXJ0KDEgKyB4XjIpKSlcclxuXHJcbiAgICBrID0gTWF0aC5taW4oMjgsIHdwciAvIExPR19CQVNFICsgMiB8IDApO1xyXG5cclxuICAgIGZvciAoaSA9IGs7IGk7IC0taSkgeCA9IHguZGl2KHgudGltZXMoeCkucGx1cygxKS5zcXJ0KCkucGx1cygxKSk7XHJcblxyXG4gICAgZXh0ZXJuYWwgPSBmYWxzZTtcclxuXHJcbiAgICBqID0gTWF0aC5jZWlsKHdwciAvIExPR19CQVNFKTtcclxuICAgIG4gPSAxO1xyXG4gICAgeDIgPSB4LnRpbWVzKHgpO1xyXG4gICAgciA9IG5ldyBDdG9yKHgpO1xyXG4gICAgcHggPSB4O1xyXG5cclxuICAgIC8vIGF0YW4oeCkgPSB4IC0geF4zLzMgKyB4XjUvNSAtIHheNy83ICsgLi4uXHJcbiAgICBmb3IgKDsgaSAhPT0gLTE7KSB7XHJcbiAgICAgIHB4ID0gcHgudGltZXMoeDIpO1xyXG4gICAgICB0ID0gci5taW51cyhweC5kaXYobiArPSAyKSk7XHJcblxyXG4gICAgICBweCA9IHB4LnRpbWVzKHgyKTtcclxuICAgICAgciA9IHQucGx1cyhweC5kaXYobiArPSAyKSk7XHJcblxyXG4gICAgICBpZiAoci5kW2pdICE9PSB2b2lkIDApIGZvciAoaSA9IGo7IHIuZFtpXSA9PT0gdC5kW2ldICYmIGktLTspO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChrKSByID0gci50aW1lcygyIDw8IChrIC0gMSkpO1xyXG5cclxuICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gZmluYWxpc2UociwgQ3Rvci5wcmVjaXNpb24gPSBwciwgQ3Rvci5yb3VuZGluZyA9IHJtLCB0cnVlKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIGlzIGEgZmluaXRlIG51bWJlciwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuaXNGaW5pdGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gISF0aGlzLmQ7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCBpcyBhbiBpbnRlZ2VyLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5pc0ludGVnZXIgPSBQLmlzSW50ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgcmV0dXJuICEhdGhpcy5kICYmIG1hdGhmbG9vcih0aGlzLmUgLyBMT0dfQkFTRSkgPiB0aGlzLmQubGVuZ3RoIC0gMjtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIGlzIE5hTiwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuaXNOYU4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gIXRoaXMucztcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIGlzIG5lZ2F0aXZlLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5pc05lZ2F0aXZlID0gUC5pc05lZyA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHJldHVybiB0aGlzLnMgPCAwO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgaXMgcG9zaXRpdmUsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICpcclxuICAgKi9cclxuICBQLmlzUG9zaXRpdmUgPSBQLmlzUG9zID0gZnVuY3Rpb24gKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucyA+IDA7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCBpcyAwIG9yIC0wLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5pc1plcm8gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gISF0aGlzLmQgJiYgdGhpcy5kWzBdID09PSAwO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgaXMgbGVzcyB0aGFuIGB5YCwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAubGVzc1RoYW4gPSBQLmx0ID0gZnVuY3Rpb24gKHkpIHtcclxuICAgIHJldHVybiB0aGlzLmNtcCh5KSA8IDA7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYHlgLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5sZXNzVGhhbk9yRXF1YWxUbyA9IFAubHRlID0gZnVuY3Rpb24gKHkpIHtcclxuICAgIHJldHVybiB0aGlzLmNtcCh5KSA8IDE7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIHRoZSBsb2dhcml0aG0gb2YgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCB0byB0aGUgc3BlY2lmaWVkIGJhc2UsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmBcclxuICAgKiBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogSWYgbm8gYmFzZSBpcyBzcGVjaWZpZWQsIHJldHVybiBsb2dbMTBdKGFyZykuXHJcbiAgICpcclxuICAgKiBsb2dbYmFzZV0oYXJnKSA9IGxuKGFyZykgLyBsbihiYXNlKVxyXG4gICAqXHJcbiAgICogVGhlIHJlc3VsdCB3aWxsIGFsd2F5cyBiZSBjb3JyZWN0bHkgcm91bmRlZCBpZiB0aGUgYmFzZSBvZiB0aGUgbG9nIGlzIDEwLCBhbmQgJ2FsbW9zdCBhbHdheXMnXHJcbiAgICogb3RoZXJ3aXNlOlxyXG4gICAqXHJcbiAgICogRGVwZW5kaW5nIG9uIHRoZSByb3VuZGluZyBtb2RlLCB0aGUgcmVzdWx0IG1heSBiZSBpbmNvcnJlY3RseSByb3VuZGVkIGlmIHRoZSBmaXJzdCBmaWZ0ZWVuXHJcbiAgICogcm91bmRpbmcgZGlnaXRzIGFyZSBbNDldOTk5OTk5OTk5OTk5OTkgb3IgWzUwXTAwMDAwMDAwMDAwMDAwLiBJbiB0aGF0IGNhc2UsIHRoZSBtYXhpbXVtIGVycm9yXHJcbiAgICogYmV0d2VlbiB0aGUgcmVzdWx0IGFuZCB0aGUgY29ycmVjdGx5IHJvdW5kZWQgcmVzdWx0IHdpbGwgYmUgb25lIHVscCAodW5pdCBpbiB0aGUgbGFzdCBwbGFjZSkuXHJcbiAgICpcclxuICAgKiBsb2dbLWJdKGEpICAgICAgID0gTmFOXHJcbiAgICogbG9nWzBdKGEpICAgICAgICA9IE5hTlxyXG4gICAqIGxvZ1sxXShhKSAgICAgICAgPSBOYU5cclxuICAgKiBsb2dbTmFOXShhKSAgICAgID0gTmFOXHJcbiAgICogbG9nW0luZmluaXR5XShhKSA9IE5hTlxyXG4gICAqIGxvZ1tiXSgwKSAgICAgICAgPSAtSW5maW5pdHlcclxuICAgKiBsb2dbYl0oLTApICAgICAgID0gLUluZmluaXR5XHJcbiAgICogbG9nW2JdKC1hKSAgICAgICA9IE5hTlxyXG4gICAqIGxvZ1tiXSgxKSAgICAgICAgPSAwXHJcbiAgICogbG9nW2JdKEluZmluaXR5KSA9IEluZmluaXR5XHJcbiAgICogbG9nW2JdKE5hTikgICAgICA9IE5hTlxyXG4gICAqXHJcbiAgICogW2Jhc2VdIHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9IFRoZSBiYXNlIG9mIHRoZSBsb2dhcml0aG0uXHJcbiAgICpcclxuICAgKi9cclxuICBQLmxvZ2FyaXRobSA9IFAubG9nID0gZnVuY3Rpb24gKGJhc2UpIHtcclxuICAgIHZhciBpc0Jhc2UxMCwgZCwgZGVub21pbmF0b3IsIGssIGluZiwgbnVtLCBzZCwgcixcclxuICAgICAgYXJnID0gdGhpcyxcclxuICAgICAgQ3RvciA9IGFyZy5jb25zdHJ1Y3RvcixcclxuICAgICAgcHIgPSBDdG9yLnByZWNpc2lvbixcclxuICAgICAgcm0gPSBDdG9yLnJvdW5kaW5nLFxyXG4gICAgICBndWFyZCA9IDU7XHJcblxyXG4gICAgLy8gRGVmYXVsdCBiYXNlIGlzIDEwLlxyXG4gICAgaWYgKGJhc2UgPT0gbnVsbCkge1xyXG4gICAgICBiYXNlID0gbmV3IEN0b3IoMTApO1xyXG4gICAgICBpc0Jhc2UxMCA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBiYXNlID0gbmV3IEN0b3IoYmFzZSk7XHJcbiAgICAgIGQgPSBiYXNlLmQ7XHJcblxyXG4gICAgICAvLyBSZXR1cm4gTmFOIGlmIGJhc2UgaXMgbmVnYXRpdmUsIG9yIG5vbi1maW5pdGUsIG9yIGlzIDAgb3IgMS5cclxuICAgICAgaWYgKGJhc2UucyA8IDAgfHwgIWQgfHwgIWRbMF0gfHwgYmFzZS5lcSgxKSkgcmV0dXJuIG5ldyBDdG9yKE5hTik7XHJcblxyXG4gICAgICBpc0Jhc2UxMCA9IGJhc2UuZXEoMTApO1xyXG4gICAgfVxyXG5cclxuICAgIGQgPSBhcmcuZDtcclxuXHJcbiAgICAvLyBJcyBhcmcgbmVnYXRpdmUsIG5vbi1maW5pdGUsIDAgb3IgMT9cclxuICAgIGlmIChhcmcucyA8IDAgfHwgIWQgfHwgIWRbMF0gfHwgYXJnLmVxKDEpKSB7XHJcbiAgICAgIHJldHVybiBuZXcgQ3RvcihkICYmICFkWzBdID8gLTEgLyAwIDogYXJnLnMgIT0gMSA/IE5hTiA6IGQgPyAwIDogMSAvIDApO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFRoZSByZXN1bHQgd2lsbCBoYXZlIGEgbm9uLXRlcm1pbmF0aW5nIGRlY2ltYWwgZXhwYW5zaW9uIGlmIGJhc2UgaXMgMTAgYW5kIGFyZyBpcyBub3QgYW5cclxuICAgIC8vIGludGVnZXIgcG93ZXIgb2YgMTAuXHJcbiAgICBpZiAoaXNCYXNlMTApIHtcclxuICAgICAgaWYgKGQubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIGluZiA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9yIChrID0gZFswXTsgayAlIDEwID09PSAwOykgayAvPSAxMDtcclxuICAgICAgICBpbmYgPSBrICE9PSAxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZXh0ZXJuYWwgPSBmYWxzZTtcclxuICAgIHNkID0gcHIgKyBndWFyZDtcclxuICAgIG51bSA9IG5hdHVyYWxMb2dhcml0aG0oYXJnLCBzZCk7XHJcbiAgICBkZW5vbWluYXRvciA9IGlzQmFzZTEwID8gZ2V0TG4xMChDdG9yLCBzZCArIDEwKSA6IG5hdHVyYWxMb2dhcml0aG0oYmFzZSwgc2QpO1xyXG5cclxuICAgIC8vIFRoZSByZXN1bHQgd2lsbCBoYXZlIDUgcm91bmRpbmcgZGlnaXRzLlxyXG4gICAgciA9IGRpdmlkZShudW0sIGRlbm9taW5hdG9yLCBzZCwgMSk7XHJcblxyXG4gICAgLy8gSWYgYXQgYSByb3VuZGluZyBib3VuZGFyeSwgaS5lLiB0aGUgcmVzdWx0J3Mgcm91bmRpbmcgZGlnaXRzIGFyZSBbNDldOTk5OSBvciBbNTBdMDAwMCxcclxuICAgIC8vIGNhbGN1bGF0ZSAxMCBmdXJ0aGVyIGRpZ2l0cy5cclxuICAgIC8vXHJcbiAgICAvLyBJZiB0aGUgcmVzdWx0IGlzIGtub3duIHRvIGhhdmUgYW4gaW5maW5pdGUgZGVjaW1hbCBleHBhbnNpb24sIHJlcGVhdCB0aGlzIHVudGlsIGl0IGlzIGNsZWFyXHJcbiAgICAvLyB0aGF0IHRoZSByZXN1bHQgaXMgYWJvdmUgb3IgYmVsb3cgdGhlIGJvdW5kYXJ5LiBPdGhlcndpc2UsIGlmIGFmdGVyIGNhbGN1bGF0aW5nIHRoZSAxMFxyXG4gICAgLy8gZnVydGhlciBkaWdpdHMsIHRoZSBsYXN0IDE0IGFyZSBuaW5lcywgcm91bmQgdXAgYW5kIGFzc3VtZSB0aGUgcmVzdWx0IGlzIGV4YWN0LlxyXG4gICAgLy8gQWxzbyBhc3N1bWUgdGhlIHJlc3VsdCBpcyBleGFjdCBpZiB0aGUgbGFzdCAxNCBhcmUgemVyby5cclxuICAgIC8vXHJcbiAgICAvLyBFeGFtcGxlIG9mIGEgcmVzdWx0IHRoYXQgd2lsbCBiZSBpbmNvcnJlY3RseSByb3VuZGVkOlxyXG4gICAgLy8gbG9nWzEwNDg1NzZdKDQ1MDM1OTk2MjczNzA1MDIpID0gMi42MDAwMDAwMDAwMDAwMDAwOTYxMDI3OTUxMTQ0NDc0Ni4uLlxyXG4gICAgLy8gVGhlIGFib3ZlIHJlc3VsdCBjb3JyZWN0bHkgcm91bmRlZCB1c2luZyBST1VORF9DRUlMIHRvIDEgZGVjaW1hbCBwbGFjZSBzaG91bGQgYmUgMi43LCBidXQgaXRcclxuICAgIC8vIHdpbGwgYmUgZ2l2ZW4gYXMgMi42IGFzIHRoZXJlIGFyZSAxNSB6ZXJvcyBpbW1lZGlhdGVseSBhZnRlciB0aGUgcmVxdWVzdGVkIGRlY2ltYWwgcGxhY2UsIHNvXHJcbiAgICAvLyB0aGUgZXhhY3QgcmVzdWx0IHdvdWxkIGJlIGFzc3VtZWQgdG8gYmUgMi42LCB3aGljaCByb3VuZGVkIHVzaW5nIFJPVU5EX0NFSUwgdG8gMSBkZWNpbWFsXHJcbiAgICAvLyBwbGFjZSBpcyBzdGlsbCAyLjYuXHJcbiAgICBpZiAoY2hlY2tSb3VuZGluZ0RpZ2l0cyhyLmQsIGsgPSBwciwgcm0pKSB7XHJcblxyXG4gICAgICBkbyB7XHJcbiAgICAgICAgc2QgKz0gMTA7XHJcbiAgICAgICAgbnVtID0gbmF0dXJhbExvZ2FyaXRobShhcmcsIHNkKTtcclxuICAgICAgICBkZW5vbWluYXRvciA9IGlzQmFzZTEwID8gZ2V0TG4xMChDdG9yLCBzZCArIDEwKSA6IG5hdHVyYWxMb2dhcml0aG0oYmFzZSwgc2QpO1xyXG4gICAgICAgIHIgPSBkaXZpZGUobnVtLCBkZW5vbWluYXRvciwgc2QsIDEpO1xyXG5cclxuICAgICAgICBpZiAoIWluZikge1xyXG5cclxuICAgICAgICAgIC8vIENoZWNrIGZvciAxNCBuaW5lcyBmcm9tIHRoZSAybmQgcm91bmRpbmcgZGlnaXQsIGFzIHRoZSBmaXJzdCBtYXkgYmUgNC5cclxuICAgICAgICAgIGlmICgrZGlnaXRzVG9TdHJpbmcoci5kKS5zbGljZShrICsgMSwgayArIDE1KSArIDEgPT0gMWUxNCkge1xyXG4gICAgICAgICAgICByID0gZmluYWxpc2UociwgcHIgKyAxLCAwKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0gd2hpbGUgKGNoZWNrUm91bmRpbmdEaWdpdHMoci5kLCBrICs9IDEwLCBybSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gZmluYWxpc2UociwgcHIsIHJtKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgbWF4aW11bSBvZiB0aGUgYXJndW1lbnRzIGFuZCB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsLlxyXG4gICAqXHJcbiAgICogYXJndW1lbnRzIHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICpcclxuICBQLm1heCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmNhbGwoYXJndW1lbnRzLCB0aGlzKTtcclxuICAgIHJldHVybiBtYXhPck1pbih0aGlzLmNvbnN0cnVjdG9yLCBhcmd1bWVudHMsICdsdCcpO1xyXG4gIH07XHJcbiAgICovXHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBtaW5pbXVtIG9mIHRoZSBhcmd1bWVudHMgYW5kIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwuXHJcbiAgICpcclxuICAgKiBhcmd1bWVudHMge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKlxyXG4gIFAubWluID0gZnVuY3Rpb24gKCkge1xyXG4gICAgQXJyYXkucHJvdG90eXBlLnB1c2guY2FsbChhcmd1bWVudHMsIHRoaXMpO1xyXG4gICAgcmV0dXJuIG1heE9yTWluKHRoaXMuY29uc3RydWN0b3IsIGFyZ3VtZW50cywgJ2d0Jyk7XHJcbiAgfTtcclxuICAgKi9cclxuXHJcblxyXG4gIC8qXHJcbiAgICogIG4gLSAwID0gblxyXG4gICAqICBuIC0gTiA9IE5cclxuICAgKiAgbiAtIEkgPSAtSVxyXG4gICAqICAwIC0gbiA9IC1uXHJcbiAgICogIDAgLSAwID0gMFxyXG4gICAqICAwIC0gTiA9IE5cclxuICAgKiAgMCAtIEkgPSAtSVxyXG4gICAqICBOIC0gbiA9IE5cclxuICAgKiAgTiAtIDAgPSBOXHJcbiAgICogIE4gLSBOID0gTlxyXG4gICAqICBOIC0gSSA9IE5cclxuICAgKiAgSSAtIG4gPSBJXHJcbiAgICogIEkgLSAwID0gSVxyXG4gICAqICBJIC0gTiA9IE5cclxuICAgKiAgSSAtIEkgPSBOXHJcbiAgICpcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIG1pbnVzIGB5YCwgcm91bmRlZCB0byBgcHJlY2lzaW9uYFxyXG4gICAqIHNpZ25pZmljYW50IGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKi9cclxuICBQLm1pbnVzID0gUC5zdWIgPSBmdW5jdGlvbiAoeSkge1xyXG4gICAgdmFyIGQsIGUsIGksIGosIGssIGxlbiwgcHIsIHJtLCB4ZCwgeGUsIHhMVHksIHlkLFxyXG4gICAgICB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3I7XHJcblxyXG4gICAgeSA9IG5ldyBDdG9yKHkpO1xyXG5cclxuICAgIC8vIElmIGVpdGhlciBpcyBub3QgZmluaXRlLi4uXHJcbiAgICBpZiAoIXguZCB8fCAheS5kKSB7XHJcblxyXG4gICAgICAvLyBSZXR1cm4gTmFOIGlmIGVpdGhlciBpcyBOYU4uXHJcbiAgICAgIGlmICgheC5zIHx8ICF5LnMpIHkgPSBuZXcgQ3RvcihOYU4pO1xyXG5cclxuICAgICAgLy8gUmV0dXJuIHkgbmVnYXRlZCBpZiB4IGlzIGZpbml0ZSBhbmQgeSBpcyDCsUluZmluaXR5LlxyXG4gICAgICBlbHNlIGlmICh4LmQpIHkucyA9IC15LnM7XHJcblxyXG4gICAgICAvLyBSZXR1cm4geCBpZiB5IGlzIGZpbml0ZSBhbmQgeCBpcyDCsUluZmluaXR5LlxyXG4gICAgICAvLyBSZXR1cm4geCBpZiBib3RoIGFyZSDCsUluZmluaXR5IHdpdGggZGlmZmVyZW50IHNpZ25zLlxyXG4gICAgICAvLyBSZXR1cm4gTmFOIGlmIGJvdGggYXJlIMKxSW5maW5pdHkgd2l0aCB0aGUgc2FtZSBzaWduLlxyXG4gICAgICBlbHNlIHkgPSBuZXcgQ3Rvcih5LmQgfHwgeC5zICE9PSB5LnMgPyB4IDogTmFOKTtcclxuXHJcbiAgICAgIHJldHVybiB5O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIElmIHNpZ25zIGRpZmZlci4uLlxyXG4gICAgaWYgKHgucyAhPSB5LnMpIHtcclxuICAgICAgeS5zID0gLXkucztcclxuICAgICAgcmV0dXJuIHgucGx1cyh5KTtcclxuICAgIH1cclxuXHJcbiAgICB4ZCA9IHguZDtcclxuICAgIHlkID0geS5kO1xyXG4gICAgcHIgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgIHJtID0gQ3Rvci5yb3VuZGluZztcclxuXHJcbiAgICAvLyBJZiBlaXRoZXIgaXMgemVyby4uLlxyXG4gICAgaWYgKCF4ZFswXSB8fCAheWRbMF0pIHtcclxuXHJcbiAgICAgIC8vIFJldHVybiB5IG5lZ2F0ZWQgaWYgeCBpcyB6ZXJvIGFuZCB5IGlzIG5vbi16ZXJvLlxyXG4gICAgICBpZiAoeWRbMF0pIHkucyA9IC15LnM7XHJcblxyXG4gICAgICAvLyBSZXR1cm4geCBpZiB5IGlzIHplcm8gYW5kIHggaXMgbm9uLXplcm8uXHJcbiAgICAgIGVsc2UgaWYgKHhkWzBdKSB5ID0gbmV3IEN0b3IoeCk7XHJcblxyXG4gICAgICAvLyBSZXR1cm4gemVybyBpZiBib3RoIGFyZSB6ZXJvLlxyXG4gICAgICAvLyBGcm9tIElFRUUgNzU0ICgyMDA4KSA2LjM6IDAgLSAwID0gLTAgLSAtMCA9IC0wIHdoZW4gcm91bmRpbmcgdG8gLUluZmluaXR5LlxyXG4gICAgICBlbHNlIHJldHVybiBuZXcgQ3RvcihybSA9PT0gMyA/IC0wIDogMCk7XHJcblxyXG4gICAgICByZXR1cm4gZXh0ZXJuYWwgPyBmaW5hbGlzZSh5LCBwciwgcm0pIDogeTtcclxuICAgIH1cclxuXHJcbiAgICAvLyB4IGFuZCB5IGFyZSBmaW5pdGUsIG5vbi16ZXJvIG51bWJlcnMgd2l0aCB0aGUgc2FtZSBzaWduLlxyXG5cclxuICAgIC8vIENhbGN1bGF0ZSBiYXNlIDFlNyBleHBvbmVudHMuXHJcbiAgICBlID0gbWF0aGZsb29yKHkuZSAvIExPR19CQVNFKTtcclxuICAgIHhlID0gbWF0aGZsb29yKHguZSAvIExPR19CQVNFKTtcclxuXHJcbiAgICB4ZCA9IHhkLnNsaWNlKCk7XHJcbiAgICBrID0geGUgLSBlO1xyXG5cclxuICAgIC8vIElmIGJhc2UgMWU3IGV4cG9uZW50cyBkaWZmZXIuLi5cclxuICAgIGlmIChrKSB7XHJcbiAgICAgIHhMVHkgPSBrIDwgMDtcclxuXHJcbiAgICAgIGlmICh4TFR5KSB7XHJcbiAgICAgICAgZCA9IHhkO1xyXG4gICAgICAgIGsgPSAtaztcclxuICAgICAgICBsZW4gPSB5ZC5sZW5ndGg7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZCA9IHlkO1xyXG4gICAgICAgIGUgPSB4ZTtcclxuICAgICAgICBsZW4gPSB4ZC5sZW5ndGg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIE51bWJlcnMgd2l0aCBtYXNzaXZlbHkgZGlmZmVyZW50IGV4cG9uZW50cyB3b3VsZCByZXN1bHQgaW4gYSB2ZXJ5IGhpZ2ggbnVtYmVyIG9mXHJcbiAgICAgIC8vIHplcm9zIG5lZWRpbmcgdG8gYmUgcHJlcGVuZGVkLCBidXQgdGhpcyBjYW4gYmUgYXZvaWRlZCB3aGlsZSBzdGlsbCBlbnN1cmluZyBjb3JyZWN0XHJcbiAgICAgIC8vIHJvdW5kaW5nIGJ5IGxpbWl0aW5nIHRoZSBudW1iZXIgb2YgemVyb3MgdG8gYE1hdGguY2VpbChwciAvIExPR19CQVNFKSArIDJgLlxyXG4gICAgICBpID0gTWF0aC5tYXgoTWF0aC5jZWlsKHByIC8gTE9HX0JBU0UpLCBsZW4pICsgMjtcclxuXHJcbiAgICAgIGlmIChrID4gaSkge1xyXG4gICAgICAgIGsgPSBpO1xyXG4gICAgICAgIGQubGVuZ3RoID0gMTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUHJlcGVuZCB6ZXJvcyB0byBlcXVhbGlzZSBleHBvbmVudHMuXHJcbiAgICAgIGQucmV2ZXJzZSgpO1xyXG4gICAgICBmb3IgKGkgPSBrOyBpLS07KSBkLnB1c2goMCk7XHJcbiAgICAgIGQucmV2ZXJzZSgpO1xyXG5cclxuICAgIC8vIEJhc2UgMWU3IGV4cG9uZW50cyBlcXVhbC5cclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAvLyBDaGVjayBkaWdpdHMgdG8gZGV0ZXJtaW5lIHdoaWNoIGlzIHRoZSBiaWdnZXIgbnVtYmVyLlxyXG5cclxuICAgICAgaSA9IHhkLmxlbmd0aDtcclxuICAgICAgbGVuID0geWQubGVuZ3RoO1xyXG4gICAgICB4TFR5ID0gaSA8IGxlbjtcclxuICAgICAgaWYgKHhMVHkpIGxlbiA9IGk7XHJcblxyXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICBpZiAoeGRbaV0gIT0geWRbaV0pIHtcclxuICAgICAgICAgIHhMVHkgPSB4ZFtpXSA8IHlkW2ldO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBrID0gMDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoeExUeSkge1xyXG4gICAgICBkID0geGQ7XHJcbiAgICAgIHhkID0geWQ7XHJcbiAgICAgIHlkID0gZDtcclxuICAgICAgeS5zID0gLXkucztcclxuICAgIH1cclxuXHJcbiAgICBsZW4gPSB4ZC5sZW5ndGg7XHJcblxyXG4gICAgLy8gQXBwZW5kIHplcm9zIHRvIGB4ZGAgaWYgc2hvcnRlci5cclxuICAgIC8vIERvbid0IGFkZCB6ZXJvcyB0byBgeWRgIGlmIHNob3J0ZXIgYXMgc3VidHJhY3Rpb24gb25seSBuZWVkcyB0byBzdGFydCBhdCBgeWRgIGxlbmd0aC5cclxuICAgIGZvciAoaSA9IHlkLmxlbmd0aCAtIGxlbjsgaSA+IDA7IC0taSkgeGRbbGVuKytdID0gMDtcclxuXHJcbiAgICAvLyBTdWJ0cmFjdCB5ZCBmcm9tIHhkLlxyXG4gICAgZm9yIChpID0geWQubGVuZ3RoOyBpID4gazspIHtcclxuXHJcbiAgICAgIGlmICh4ZFstLWldIDwgeWRbaV0pIHtcclxuICAgICAgICBmb3IgKGogPSBpOyBqICYmIHhkWy0tal0gPT09IDA7KSB4ZFtqXSA9IEJBU0UgLSAxO1xyXG4gICAgICAgIC0teGRbal07XHJcbiAgICAgICAgeGRbaV0gKz0gQkFTRTtcclxuICAgICAgfVxyXG5cclxuICAgICAgeGRbaV0gLT0geWRbaV07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmVtb3ZlIHRyYWlsaW5nIHplcm9zLlxyXG4gICAgZm9yICg7IHhkWy0tbGVuXSA9PT0gMDspIHhkLnBvcCgpO1xyXG5cclxuICAgIC8vIFJlbW92ZSBsZWFkaW5nIHplcm9zIGFuZCBhZGp1c3QgZXhwb25lbnQgYWNjb3JkaW5nbHkuXHJcbiAgICBmb3IgKDsgeGRbMF0gPT09IDA7IHhkLnNoaWZ0KCkpIC0tZTtcclxuXHJcbiAgICAvLyBaZXJvP1xyXG4gICAgaWYgKCF4ZFswXSkgcmV0dXJuIG5ldyBDdG9yKHJtID09PSAzID8gLTAgOiAwKTtcclxuXHJcbiAgICB5LmQgPSB4ZDtcclxuICAgIHkuZSA9IGdldEJhc2UxMEV4cG9uZW50KHhkLCBlKTtcclxuXHJcbiAgICByZXR1cm4gZXh0ZXJuYWwgPyBmaW5hbGlzZSh5LCBwciwgcm0pIDogeTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiAgIG4gJSAwID0gIE5cclxuICAgKiAgIG4gJSBOID0gIE5cclxuICAgKiAgIG4gJSBJID0gIG5cclxuICAgKiAgIDAgJSBuID0gIDBcclxuICAgKiAgLTAgJSBuID0gLTBcclxuICAgKiAgIDAgJSAwID0gIE5cclxuICAgKiAgIDAgJSBOID0gIE5cclxuICAgKiAgIDAgJSBJID0gIDBcclxuICAgKiAgIE4gJSBuID0gIE5cclxuICAgKiAgIE4gJSAwID0gIE5cclxuICAgKiAgIE4gJSBOID0gIE5cclxuICAgKiAgIE4gJSBJID0gIE5cclxuICAgKiAgIEkgJSBuID0gIE5cclxuICAgKiAgIEkgJSAwID0gIE5cclxuICAgKiAgIEkgJSBOID0gIE5cclxuICAgKiAgIEkgJSBJID0gIE5cclxuICAgKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgbW9kdWxvIGB5YCwgcm91bmRlZCB0b1xyXG4gICAqIGBwcmVjaXNpb25gIHNpZ25pZmljYW50IGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiBUaGUgcmVzdWx0IGRlcGVuZHMgb24gdGhlIG1vZHVsbyBtb2RlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5tb2R1bG8gPSBQLm1vZCA9IGZ1bmN0aW9uICh5KSB7XHJcbiAgICB2YXIgcSxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgIHkgPSBuZXcgQ3Rvcih5KTtcclxuXHJcbiAgICAvLyBSZXR1cm4gTmFOIGlmIHggaXMgwrFJbmZpbml0eSBvciBOYU4sIG9yIHkgaXMgTmFOIG9yIMKxMC5cclxuICAgIGlmICgheC5kIHx8ICF5LnMgfHwgeS5kICYmICF5LmRbMF0pIHJldHVybiBuZXcgQ3RvcihOYU4pO1xyXG5cclxuICAgIC8vIFJldHVybiB4IGlmIHkgaXMgwrFJbmZpbml0eSBvciB4IGlzIMKxMC5cclxuICAgIGlmICgheS5kIHx8IHguZCAmJiAheC5kWzBdKSB7XHJcbiAgICAgIHJldHVybiBmaW5hbGlzZShuZXcgQ3Rvcih4KSwgQ3Rvci5wcmVjaXNpb24sIEN0b3Iucm91bmRpbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFByZXZlbnQgcm91bmRpbmcgb2YgaW50ZXJtZWRpYXRlIGNhbGN1bGF0aW9ucy5cclxuICAgIGV4dGVybmFsID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKEN0b3IubW9kdWxvID09IDkpIHtcclxuXHJcbiAgICAgIC8vIEV1Y2xpZGlhbiBkaXZpc2lvbjogcSA9IHNpZ24oeSkgKiBmbG9vcih4IC8gYWJzKHkpKVxyXG4gICAgICAvLyByZXN1bHQgPSB4IC0gcSAqIHkgICAgd2hlcmUgIDAgPD0gcmVzdWx0IDwgYWJzKHkpXHJcbiAgICAgIHEgPSBkaXZpZGUoeCwgeS5hYnMoKSwgMCwgMywgMSk7XHJcbiAgICAgIHEucyAqPSB5LnM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBxID0gZGl2aWRlKHgsIHksIDAsIEN0b3IubW9kdWxvLCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBxID0gcS50aW1lcyh5KTtcclxuXHJcbiAgICBleHRlcm5hbCA9IHRydWU7XHJcblxyXG4gICAgcmV0dXJuIHgubWludXMocSk7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIG5hdHVyYWwgZXhwb25lbnRpYWwgb2YgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCxcclxuICAgKiBpLmUuIHRoZSBiYXNlIGUgcmFpc2VkIHRvIHRoZSBwb3dlciB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gXHJcbiAgICogc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAubmF0dXJhbEV4cG9uZW50aWFsID0gUC5leHAgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gbmF0dXJhbEV4cG9uZW50aWFsKHRoaXMpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBuYXR1cmFsIGxvZ2FyaXRobSBvZiB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsLFxyXG4gICAqIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAgc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAubmF0dXJhbExvZ2FyaXRobSA9IFAubG4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gbmF0dXJhbExvZ2FyaXRobSh0aGlzKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIG5lZ2F0ZWQsIGkuZS4gYXMgaWYgbXVsdGlwbGllZCBieVxyXG4gICAqIC0xLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5uZWdhdGVkID0gUC5uZWcgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgeCA9IG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMpO1xyXG4gICAgeC5zID0gLXgucztcclxuICAgIHJldHVybiBmaW5hbGlzZSh4KTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiAgbiArIDAgPSBuXHJcbiAgICogIG4gKyBOID0gTlxyXG4gICAqICBuICsgSSA9IElcclxuICAgKiAgMCArIG4gPSBuXHJcbiAgICogIDAgKyAwID0gMFxyXG4gICAqICAwICsgTiA9IE5cclxuICAgKiAgMCArIEkgPSBJXHJcbiAgICogIE4gKyBuID0gTlxyXG4gICAqICBOICsgMCA9IE5cclxuICAgKiAgTiArIE4gPSBOXHJcbiAgICogIE4gKyBJID0gTlxyXG4gICAqICBJICsgbiA9IElcclxuICAgKiAgSSArIDAgPSBJXHJcbiAgICogIEkgKyBOID0gTlxyXG4gICAqICBJICsgSSA9IElcclxuICAgKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgcGx1cyBgeWAsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmBcclxuICAgKiBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5wbHVzID0gUC5hZGQgPSBmdW5jdGlvbiAoeSkge1xyXG4gICAgdmFyIGNhcnJ5LCBkLCBlLCBpLCBrLCBsZW4sIHByLCBybSwgeGQsIHlkLFxyXG4gICAgICB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3I7XHJcblxyXG4gICAgeSA9IG5ldyBDdG9yKHkpO1xyXG5cclxuICAgIC8vIElmIGVpdGhlciBpcyBub3QgZmluaXRlLi4uXHJcbiAgICBpZiAoIXguZCB8fCAheS5kKSB7XHJcblxyXG4gICAgICAvLyBSZXR1cm4gTmFOIGlmIGVpdGhlciBpcyBOYU4uXHJcbiAgICAgIGlmICgheC5zIHx8ICF5LnMpIHkgPSBuZXcgQ3RvcihOYU4pO1xyXG5cclxuICAgICAgLy8gUmV0dXJuIHggaWYgeSBpcyBmaW5pdGUgYW5kIHggaXMgwrFJbmZpbml0eS5cclxuICAgICAgLy8gUmV0dXJuIHggaWYgYm90aCBhcmUgwrFJbmZpbml0eSB3aXRoIHRoZSBzYW1lIHNpZ24uXHJcbiAgICAgIC8vIFJldHVybiBOYU4gaWYgYm90aCBhcmUgwrFJbmZpbml0eSB3aXRoIGRpZmZlcmVudCBzaWducy5cclxuICAgICAgLy8gUmV0dXJuIHkgaWYgeCBpcyBmaW5pdGUgYW5kIHkgaXMgwrFJbmZpbml0eS5cclxuICAgICAgZWxzZSBpZiAoIXguZCkgeSA9IG5ldyBDdG9yKHkuZCB8fCB4LnMgPT09IHkucyA/IHggOiBOYU4pO1xyXG5cclxuICAgICAgcmV0dXJuIHk7XHJcbiAgICB9XHJcblxyXG4gICAgIC8vIElmIHNpZ25zIGRpZmZlci4uLlxyXG4gICAgaWYgKHgucyAhPSB5LnMpIHtcclxuICAgICAgeS5zID0gLXkucztcclxuICAgICAgcmV0dXJuIHgubWludXMoeSk7XHJcbiAgICB9XHJcblxyXG4gICAgeGQgPSB4LmQ7XHJcbiAgICB5ZCA9IHkuZDtcclxuICAgIHByID0gQ3Rvci5wcmVjaXNpb247XHJcbiAgICBybSA9IEN0b3Iucm91bmRpbmc7XHJcblxyXG4gICAgLy8gSWYgZWl0aGVyIGlzIHplcm8uLi5cclxuICAgIGlmICgheGRbMF0gfHwgIXlkWzBdKSB7XHJcblxyXG4gICAgICAvLyBSZXR1cm4geCBpZiB5IGlzIHplcm8uXHJcbiAgICAgIC8vIFJldHVybiB5IGlmIHkgaXMgbm9uLXplcm8uXHJcbiAgICAgIGlmICgheWRbMF0pIHkgPSBuZXcgQ3Rvcih4KTtcclxuXHJcbiAgICAgIHJldHVybiBleHRlcm5hbCA/IGZpbmFsaXNlKHksIHByLCBybSkgOiB5O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHggYW5kIHkgYXJlIGZpbml0ZSwgbm9uLXplcm8gbnVtYmVycyB3aXRoIHRoZSBzYW1lIHNpZ24uXHJcblxyXG4gICAgLy8gQ2FsY3VsYXRlIGJhc2UgMWU3IGV4cG9uZW50cy5cclxuICAgIGsgPSBtYXRoZmxvb3IoeC5lIC8gTE9HX0JBU0UpO1xyXG4gICAgZSA9IG1hdGhmbG9vcih5LmUgLyBMT0dfQkFTRSk7XHJcblxyXG4gICAgeGQgPSB4ZC5zbGljZSgpO1xyXG4gICAgaSA9IGsgLSBlO1xyXG5cclxuICAgIC8vIElmIGJhc2UgMWU3IGV4cG9uZW50cyBkaWZmZXIuLi5cclxuICAgIGlmIChpKSB7XHJcblxyXG4gICAgICBpZiAoaSA8IDApIHtcclxuICAgICAgICBkID0geGQ7XHJcbiAgICAgICAgaSA9IC1pO1xyXG4gICAgICAgIGxlbiA9IHlkLmxlbmd0aDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBkID0geWQ7XHJcbiAgICAgICAgZSA9IGs7XHJcbiAgICAgICAgbGVuID0geGQubGVuZ3RoO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBMaW1pdCBudW1iZXIgb2YgemVyb3MgcHJlcGVuZGVkIHRvIG1heChjZWlsKHByIC8gTE9HX0JBU0UpLCBsZW4pICsgMS5cclxuICAgICAgayA9IE1hdGguY2VpbChwciAvIExPR19CQVNFKTtcclxuICAgICAgbGVuID0gayA+IGxlbiA/IGsgKyAxIDogbGVuICsgMTtcclxuXHJcbiAgICAgIGlmIChpID4gbGVuKSB7XHJcbiAgICAgICAgaSA9IGxlbjtcclxuICAgICAgICBkLmxlbmd0aCA9IDE7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFByZXBlbmQgemVyb3MgdG8gZXF1YWxpc2UgZXhwb25lbnRzLiBOb3RlOiBGYXN0ZXIgdG8gdXNlIHJldmVyc2UgdGhlbiBkbyB1bnNoaWZ0cy5cclxuICAgICAgZC5yZXZlcnNlKCk7XHJcbiAgICAgIGZvciAoOyBpLS07KSBkLnB1c2goMCk7XHJcbiAgICAgIGQucmV2ZXJzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGxlbiA9IHhkLmxlbmd0aDtcclxuICAgIGkgPSB5ZC5sZW5ndGg7XHJcblxyXG4gICAgLy8gSWYgeWQgaXMgbG9uZ2VyIHRoYW4geGQsIHN3YXAgeGQgYW5kIHlkIHNvIHhkIHBvaW50cyB0byB0aGUgbG9uZ2VyIGFycmF5LlxyXG4gICAgaWYgKGxlbiAtIGkgPCAwKSB7XHJcbiAgICAgIGkgPSBsZW47XHJcbiAgICAgIGQgPSB5ZDtcclxuICAgICAgeWQgPSB4ZDtcclxuICAgICAgeGQgPSBkO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE9ubHkgc3RhcnQgYWRkaW5nIGF0IHlkLmxlbmd0aCAtIDEgYXMgdGhlIGZ1cnRoZXIgZGlnaXRzIG9mIHhkIGNhbiBiZSBsZWZ0IGFzIHRoZXkgYXJlLlxyXG4gICAgZm9yIChjYXJyeSA9IDA7IGk7KSB7XHJcbiAgICAgIGNhcnJ5ID0gKHhkWy0taV0gPSB4ZFtpXSArIHlkW2ldICsgY2FycnkpIC8gQkFTRSB8IDA7XHJcbiAgICAgIHhkW2ldICU9IEJBU0U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNhcnJ5KSB7XHJcbiAgICAgIHhkLnVuc2hpZnQoY2FycnkpO1xyXG4gICAgICArK2U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmVtb3ZlIHRyYWlsaW5nIHplcm9zLlxyXG4gICAgLy8gTm8gbmVlZCB0byBjaGVjayBmb3IgemVybywgYXMgK3ggKyAreSAhPSAwICYmIC14ICsgLXkgIT0gMFxyXG4gICAgZm9yIChsZW4gPSB4ZC5sZW5ndGg7IHhkWy0tbGVuXSA9PSAwOykgeGQucG9wKCk7XHJcblxyXG4gICAgeS5kID0geGQ7XHJcbiAgICB5LmUgPSBnZXRCYXNlMTBFeHBvbmVudCh4ZCwgZSk7XHJcblxyXG4gICAgcmV0dXJuIGV4dGVybmFsID8gZmluYWxpc2UoeSwgcHIsIHJtKSA6IHk7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIHRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzIG9mIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwuXHJcbiAgICpcclxuICAgKiBbel0ge2Jvb2xlYW58bnVtYmVyfSBXaGV0aGVyIHRvIGNvdW50IGludGVnZXItcGFydCB0cmFpbGluZyB6ZXJvczogdHJ1ZSwgZmFsc2UsIDEgb3IgMC5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAucHJlY2lzaW9uID0gUC5zZCA9IGZ1bmN0aW9uICh6KSB7XHJcbiAgICB2YXIgayxcclxuICAgICAgeCA9IHRoaXM7XHJcblxyXG4gICAgaWYgKHogIT09IHZvaWQgMCAmJiB6ICE9PSAhIXogJiYgeiAhPT0gMSAmJiB6ICE9PSAwKSB0aHJvdyBFcnJvcihpbnZhbGlkQXJndW1lbnQgKyB6KTtcclxuXHJcbiAgICBpZiAoeC5kKSB7XHJcbiAgICAgIGsgPSBnZXRQcmVjaXNpb24oeC5kKTtcclxuICAgICAgaWYgKHogJiYgeC5lICsgMSA+IGspIGsgPSB4LmUgKyAxO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgayA9IE5hTjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaztcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIHJvdW5kZWQgdG8gYSB3aG9sZSBudW1iZXIgdXNpbmdcclxuICAgKiByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKi9cclxuICBQLnJvdW5kID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICByZXR1cm4gZmluYWxpc2UobmV3IEN0b3IoeCksIHguZSArIDEsIEN0b3Iucm91bmRpbmcpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBzaW5lIG9mIHRoZSB2YWx1ZSBpbiByYWRpYW5zIG9mIHRoaXMgRGVjaW1hbC5cclxuICAgKlxyXG4gICAqIERvbWFpbjogWy1JbmZpbml0eSwgSW5maW5pdHldXHJcbiAgICogUmFuZ2U6IFstMSwgMV1cclxuICAgKlxyXG4gICAqIHNpbih4KSA9IHggLSB4XjMvMyEgKyB4XjUvNSEgLSAuLi5cclxuICAgKlxyXG4gICAqIHNpbigwKSAgICAgICAgID0gMFxyXG4gICAqIHNpbigtMCkgICAgICAgID0gLTBcclxuICAgKiBzaW4oSW5maW5pdHkpICA9IE5hTlxyXG4gICAqIHNpbigtSW5maW5pdHkpID0gTmFOXHJcbiAgICogc2luKE5hTikgICAgICAgPSBOYU5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuc2luZSA9IFAuc2luID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIHByLCBybSxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgIGlmICgheC5pc0Zpbml0ZSgpKSByZXR1cm4gbmV3IEN0b3IoTmFOKTtcclxuICAgIGlmICh4LmlzWmVybygpKSByZXR1cm4gbmV3IEN0b3IoeCk7XHJcblxyXG4gICAgcHIgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgIHJtID0gQ3Rvci5yb3VuZGluZztcclxuICAgIEN0b3IucHJlY2lzaW9uID0gcHIgKyBNYXRoLm1heCh4LmUsIHguc2QoKSkgKyBMT0dfQkFTRTtcclxuICAgIEN0b3Iucm91bmRpbmcgPSAxO1xyXG5cclxuICAgIHggPSBzaW5lKEN0b3IsIHRvTGVzc1RoYW5IYWxmUGkoQ3RvciwgeCkpO1xyXG5cclxuICAgIEN0b3IucHJlY2lzaW9uID0gcHI7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gcm07XHJcblxyXG4gICAgcmV0dXJuIGZpbmFsaXNlKHF1YWRyYW50ID4gMiA/IHgubmVnKCkgOiB4LCBwciwgcm0sIHRydWUpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGlzIERlY2ltYWwsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmBcclxuICAgKiBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogIHNxcnQoLW4pID0gIE5cclxuICAgKiAgc3FydChOKSAgPSAgTlxyXG4gICAqICBzcXJ0KC1JKSA9ICBOXHJcbiAgICogIHNxcnQoSSkgID0gIElcclxuICAgKiAgc3FydCgwKSAgPSAgMFxyXG4gICAqICBzcXJ0KC0wKSA9IC0wXHJcbiAgICpcclxuICAgKi9cclxuICBQLnNxdWFyZVJvb3QgPSBQLnNxcnQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgbSwgbiwgc2QsIHIsIHJlcCwgdCxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIGQgPSB4LmQsXHJcbiAgICAgIGUgPSB4LmUsXHJcbiAgICAgIHMgPSB4LnMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgIC8vIE5lZ2F0aXZlL05hTi9JbmZpbml0eS96ZXJvP1xyXG4gICAgaWYgKHMgIT09IDEgfHwgIWQgfHwgIWRbMF0pIHtcclxuICAgICAgcmV0dXJuIG5ldyBDdG9yKCFzIHx8IHMgPCAwICYmICghZCB8fCBkWzBdKSA/IE5hTiA6IGQgPyB4IDogMSAvIDApO1xyXG4gICAgfVxyXG5cclxuICAgIGV4dGVybmFsID0gZmFsc2U7XHJcblxyXG4gICAgLy8gSW5pdGlhbCBlc3RpbWF0ZS5cclxuICAgIHMgPSBNYXRoLnNxcnQoK3gpO1xyXG5cclxuICAgIC8vIE1hdGguc3FydCB1bmRlcmZsb3cvb3ZlcmZsb3c/XHJcbiAgICAvLyBQYXNzIHggdG8gTWF0aC5zcXJ0IGFzIGludGVnZXIsIHRoZW4gYWRqdXN0IHRoZSBleHBvbmVudCBvZiB0aGUgcmVzdWx0LlxyXG4gICAgaWYgKHMgPT0gMCB8fCBzID09IDEgLyAwKSB7XHJcbiAgICAgIG4gPSBkaWdpdHNUb1N0cmluZyhkKTtcclxuXHJcbiAgICAgIGlmICgobi5sZW5ndGggKyBlKSAlIDIgPT0gMCkgbiArPSAnMCc7XHJcbiAgICAgIHMgPSBNYXRoLnNxcnQobik7XHJcbiAgICAgIGUgPSBtYXRoZmxvb3IoKGUgKyAxKSAvIDIpIC0gKGUgPCAwIHx8IGUgJSAyKTtcclxuXHJcbiAgICAgIGlmIChzID09IDEgLyAwKSB7XHJcbiAgICAgICAgbiA9ICc1ZScgKyBlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG4gPSBzLnRvRXhwb25lbnRpYWwoKTtcclxuICAgICAgICBuID0gbi5zbGljZSgwLCBuLmluZGV4T2YoJ2UnKSArIDEpICsgZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgciA9IG5ldyBDdG9yKG4pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgciA9IG5ldyBDdG9yKHMudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2QgPSAoZSA9IEN0b3IucHJlY2lzaW9uKSArIDM7XHJcblxyXG4gICAgLy8gTmV3dG9uLVJhcGhzb24gaXRlcmF0aW9uLlxyXG4gICAgZm9yICg7Oykge1xyXG4gICAgICB0ID0gcjtcclxuICAgICAgciA9IHQucGx1cyhkaXZpZGUoeCwgdCwgc2QgKyAyLCAxKSkudGltZXMoMC41KTtcclxuXHJcbiAgICAgIC8vIFRPRE8/IFJlcGxhY2Ugd2l0aCBmb3ItbG9vcCBhbmQgY2hlY2tSb3VuZGluZ0RpZ2l0cy5cclxuICAgICAgaWYgKGRpZ2l0c1RvU3RyaW5nKHQuZCkuc2xpY2UoMCwgc2QpID09PSAobiA9IGRpZ2l0c1RvU3RyaW5nKHIuZCkpLnNsaWNlKDAsIHNkKSkge1xyXG4gICAgICAgIG4gPSBuLnNsaWNlKHNkIC0gMywgc2QgKyAxKTtcclxuXHJcbiAgICAgICAgLy8gVGhlIDR0aCByb3VuZGluZyBkaWdpdCBtYXkgYmUgaW4gZXJyb3IgYnkgLTEgc28gaWYgdGhlIDQgcm91bmRpbmcgZGlnaXRzIGFyZSA5OTk5IG9yXHJcbiAgICAgICAgLy8gNDk5OSwgaS5lLiBhcHByb2FjaGluZyBhIHJvdW5kaW5nIGJvdW5kYXJ5LCBjb250aW51ZSB0aGUgaXRlcmF0aW9uLlxyXG4gICAgICAgIGlmIChuID09ICc5OTk5JyB8fCAhcmVwICYmIG4gPT0gJzQ5OTknKSB7XHJcblxyXG4gICAgICAgICAgLy8gT24gdGhlIGZpcnN0IGl0ZXJhdGlvbiBvbmx5LCBjaGVjayB0byBzZWUgaWYgcm91bmRpbmcgdXAgZ2l2ZXMgdGhlIGV4YWN0IHJlc3VsdCBhcyB0aGVcclxuICAgICAgICAgIC8vIG5pbmVzIG1heSBpbmZpbml0ZWx5IHJlcGVhdC5cclxuICAgICAgICAgIGlmICghcmVwKSB7XHJcbiAgICAgICAgICAgIGZpbmFsaXNlKHQsIGUgKyAxLCAwKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0LnRpbWVzKHQpLmVxKHgpKSB7XHJcbiAgICAgICAgICAgICAgciA9IHQ7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBzZCArPSA0O1xyXG4gICAgICAgICAgcmVwID0gMTtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vIElmIHRoZSByb3VuZGluZyBkaWdpdHMgYXJlIG51bGwsIDB7MCw0fSBvciA1MHswLDN9LCBjaGVjayBmb3IgYW4gZXhhY3QgcmVzdWx0LlxyXG4gICAgICAgICAgLy8gSWYgbm90LCB0aGVuIHRoZXJlIGFyZSBmdXJ0aGVyIGRpZ2l0cyBhbmQgbSB3aWxsIGJlIHRydXRoeS5cclxuICAgICAgICAgIGlmICghK24gfHwgIStuLnNsaWNlKDEpICYmIG4uY2hhckF0KDApID09ICc1Jykge1xyXG5cclxuICAgICAgICAgICAgLy8gVHJ1bmNhdGUgdG8gdGhlIGZpcnN0IHJvdW5kaW5nIGRpZ2l0LlxyXG4gICAgICAgICAgICBmaW5hbGlzZShyLCBlICsgMSwgMSk7XHJcbiAgICAgICAgICAgIG0gPSAhci50aW1lcyhyKS5lcSh4KTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHRlcm5hbCA9IHRydWU7XHJcblxyXG4gICAgcmV0dXJuIGZpbmFsaXNlKHIsIGUsIEN0b3Iucm91bmRpbmcsIG0pO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB0YW5nZW50IG9mIHRoZSB2YWx1ZSBpbiByYWRpYW5zIG9mIHRoaXMgRGVjaW1hbC5cclxuICAgKlxyXG4gICAqIERvbWFpbjogWy1JbmZpbml0eSwgSW5maW5pdHldXHJcbiAgICogUmFuZ2U6IFstSW5maW5pdHksIEluZmluaXR5XVxyXG4gICAqXHJcbiAgICogdGFuKDApICAgICAgICAgPSAwXHJcbiAgICogdGFuKC0wKSAgICAgICAgPSAtMFxyXG4gICAqIHRhbihJbmZpbml0eSkgID0gTmFOXHJcbiAgICogdGFuKC1JbmZpbml0eSkgPSBOYU5cclxuICAgKiB0YW4oTmFOKSAgICAgICA9IE5hTlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC50YW5nZW50ID0gUC50YW4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgcHIsIHJtLFxyXG4gICAgICB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3I7XHJcblxyXG4gICAgaWYgKCF4LmlzRmluaXRlKCkpIHJldHVybiBuZXcgQ3RvcihOYU4pO1xyXG4gICAgaWYgKHguaXNaZXJvKCkpIHJldHVybiBuZXcgQ3Rvcih4KTtcclxuXHJcbiAgICBwciA9IEN0b3IucHJlY2lzaW9uO1xyXG4gICAgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSBwciArIDEwO1xyXG4gICAgQ3Rvci5yb3VuZGluZyA9IDE7XHJcblxyXG4gICAgeCA9IHguc2luKCk7XHJcbiAgICB4LnMgPSAxO1xyXG4gICAgeCA9IGRpdmlkZSh4LCBuZXcgQ3RvcigxKS5taW51cyh4LnRpbWVzKHgpKS5zcXJ0KCksIHByICsgMTAsIDApO1xyXG5cclxuICAgIEN0b3IucHJlY2lzaW9uID0gcHI7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gcm07XHJcblxyXG4gICAgcmV0dXJuIGZpbmFsaXNlKHF1YWRyYW50ID09IDIgfHwgcXVhZHJhbnQgPT0gNCA/IHgubmVnKCkgOiB4LCBwciwgcm0sIHRydWUpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqICBuICogMCA9IDBcclxuICAgKiAgbiAqIE4gPSBOXHJcbiAgICogIG4gKiBJID0gSVxyXG4gICAqICAwICogbiA9IDBcclxuICAgKiAgMCAqIDAgPSAwXHJcbiAgICogIDAgKiBOID0gTlxyXG4gICAqICAwICogSSA9IE5cclxuICAgKiAgTiAqIG4gPSBOXHJcbiAgICogIE4gKiAwID0gTlxyXG4gICAqICBOICogTiA9IE5cclxuICAgKiAgTiAqIEkgPSBOXHJcbiAgICogIEkgKiBuID0gSVxyXG4gICAqICBJICogMCA9IE5cclxuICAgKiAgSSAqIE4gPSBOXHJcbiAgICogIEkgKiBJID0gSVxyXG4gICAqXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhpcyBEZWNpbWFsIHRpbWVzIGB5YCwgcm91bmRlZCB0byBgcHJlY2lzaW9uYCBzaWduaWZpY2FudFxyXG4gICAqIGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKi9cclxuICBQLnRpbWVzID0gUC5tdWwgPSBmdW5jdGlvbiAoeSkge1xyXG4gICAgdmFyIGNhcnJ5LCBlLCBpLCBrLCByLCByTCwgdCwgeGRMLCB5ZEwsXHJcbiAgICAgIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcixcclxuICAgICAgeGQgPSB4LmQsXHJcbiAgICAgIHlkID0gKHkgPSBuZXcgQ3Rvcih5KSkuZDtcclxuXHJcbiAgICB5LnMgKj0geC5zO1xyXG5cclxuICAgICAvLyBJZiBlaXRoZXIgaXMgTmFOLCDCsUluZmluaXR5IG9yIMKxMC4uLlxyXG4gICAgaWYgKCF4ZCB8fCAheGRbMF0gfHwgIXlkIHx8ICF5ZFswXSkge1xyXG5cclxuICAgICAgcmV0dXJuIG5ldyBDdG9yKCF5LnMgfHwgeGQgJiYgIXhkWzBdICYmICF5ZCB8fCB5ZCAmJiAheWRbMF0gJiYgIXhkXHJcblxyXG4gICAgICAgIC8vIFJldHVybiBOYU4gaWYgZWl0aGVyIGlzIE5hTi5cclxuICAgICAgICAvLyBSZXR1cm4gTmFOIGlmIHggaXMgwrEwIGFuZCB5IGlzIMKxSW5maW5pdHksIG9yIHkgaXMgwrEwIGFuZCB4IGlzIMKxSW5maW5pdHkuXHJcbiAgICAgICAgPyBOYU5cclxuXHJcbiAgICAgICAgLy8gUmV0dXJuIMKxSW5maW5pdHkgaWYgZWl0aGVyIGlzIMKxSW5maW5pdHkuXHJcbiAgICAgICAgLy8gUmV0dXJuIMKxMCBpZiBlaXRoZXIgaXMgwrEwLlxyXG4gICAgICAgIDogIXhkIHx8ICF5ZCA/IHkucyAvIDAgOiB5LnMgKiAwKTtcclxuICAgIH1cclxuXHJcbiAgICBlID0gbWF0aGZsb29yKHguZSAvIExPR19CQVNFKSArIG1hdGhmbG9vcih5LmUgLyBMT0dfQkFTRSk7XHJcbiAgICB4ZEwgPSB4ZC5sZW5ndGg7XHJcbiAgICB5ZEwgPSB5ZC5sZW5ndGg7XHJcblxyXG4gICAgLy8gRW5zdXJlIHhkIHBvaW50cyB0byB0aGUgbG9uZ2VyIGFycmF5LlxyXG4gICAgaWYgKHhkTCA8IHlkTCkge1xyXG4gICAgICByID0geGQ7XHJcbiAgICAgIHhkID0geWQ7XHJcbiAgICAgIHlkID0gcjtcclxuICAgICAgckwgPSB4ZEw7XHJcbiAgICAgIHhkTCA9IHlkTDtcclxuICAgICAgeWRMID0gckw7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSW5pdGlhbGlzZSB0aGUgcmVzdWx0IGFycmF5IHdpdGggemVyb3MuXHJcbiAgICByID0gW107XHJcbiAgICByTCA9IHhkTCArIHlkTDtcclxuICAgIGZvciAoaSA9IHJMOyBpLS07KSByLnB1c2goMCk7XHJcblxyXG4gICAgLy8gTXVsdGlwbHkhXHJcbiAgICBmb3IgKGkgPSB5ZEw7IC0taSA+PSAwOykge1xyXG4gICAgICBjYXJyeSA9IDA7XHJcbiAgICAgIGZvciAoayA9IHhkTCArIGk7IGsgPiBpOykge1xyXG4gICAgICAgIHQgPSByW2tdICsgeWRbaV0gKiB4ZFtrIC0gaSAtIDFdICsgY2Fycnk7XHJcbiAgICAgICAgcltrLS1dID0gdCAlIEJBU0UgfCAwO1xyXG4gICAgICAgIGNhcnJ5ID0gdCAvIEJBU0UgfCAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByW2tdID0gKHJba10gKyBjYXJyeSkgJSBCQVNFIHwgMDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZW1vdmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICBmb3IgKDsgIXJbLS1yTF07KSByLnBvcCgpO1xyXG5cclxuICAgIGlmIChjYXJyeSkgKytlO1xyXG4gICAgZWxzZSByLnNoaWZ0KCk7XHJcblxyXG4gICAgeS5kID0gcjtcclxuICAgIHkuZSA9IGdldEJhc2UxMEV4cG9uZW50KHIsIGUpO1xyXG5cclxuICAgIHJldHVybiBleHRlcm5hbCA/IGZpbmFsaXNlKHksIEN0b3IucHJlY2lzaW9uLCBDdG9yLnJvdW5kaW5nKSA6IHk7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIGluIGJhc2UgMiwgcm91bmQgdG8gYHNkYCBzaWduaWZpY2FudFxyXG4gICAqIGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGBybWAuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgb3B0aW9uYWwgYHNkYCBhcmd1bWVudCBpcyBwcmVzZW50IHRoZW4gcmV0dXJuIGJpbmFyeSBleHBvbmVudGlhbCBub3RhdGlvbi5cclxuICAgKlxyXG4gICAqIFtzZF0ge251bWJlcn0gU2lnbmlmaWNhbnQgZGlnaXRzLiBJbnRlZ2VyLCAxIHRvIE1BWF9ESUdJVFMgaW5jbHVzaXZlLlxyXG4gICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAudG9CaW5hcnkgPSBmdW5jdGlvbiAoc2QsIHJtKSB7XHJcbiAgICByZXR1cm4gdG9TdHJpbmdCaW5hcnkodGhpcywgMiwgc2QsIHJtKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIHJvdW5kZWQgdG8gYSBtYXhpbXVtIG9mIGBkcGBcclxuICAgKiBkZWNpbWFsIHBsYWNlcyB1c2luZyByb3VuZGluZyBtb2RlIGBybWAgb3IgYHJvdW5kaW5nYCBpZiBgcm1gIGlzIG9taXR0ZWQuXHJcbiAgICpcclxuICAgKiBJZiBgZHBgIGlzIG9taXR0ZWQsIHJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwuXHJcbiAgICpcclxuICAgKiBbZHBdIHtudW1iZXJ9IERlY2ltYWwgcGxhY2VzLiBJbnRlZ2VyLCAwIHRvIE1BWF9ESUdJVFMgaW5jbHVzaXZlLlxyXG4gICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAudG9EZWNpbWFsUGxhY2VzID0gUC50b0RQID0gZnVuY3Rpb24gKGRwLCBybSkge1xyXG4gICAgdmFyIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICB4ID0gbmV3IEN0b3IoeCk7XHJcbiAgICBpZiAoZHAgPT09IHZvaWQgMCkgcmV0dXJuIHg7XHJcblxyXG4gICAgY2hlY2tJbnQzMihkcCwgMCwgTUFYX0RJR0lUUyk7XHJcblxyXG4gICAgaWYgKHJtID09PSB2b2lkIDApIHJtID0gQ3Rvci5yb3VuZGluZztcclxuICAgIGVsc2UgY2hlY2tJbnQzMihybSwgMCwgOCk7XHJcblxyXG4gICAgcmV0dXJuIGZpbmFsaXNlKHgsIGRwICsgeC5lICsgMSwgcm0pO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCBpbiBleHBvbmVudGlhbCBub3RhdGlvbiByb3VuZGVkIHRvXHJcbiAgICogYGRwYCBmaXhlZCBkZWNpbWFsIHBsYWNlcyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiBbZHBdIHtudW1iZXJ9IERlY2ltYWwgcGxhY2VzLiBJbnRlZ2VyLCAwIHRvIE1BWF9ESUdJVFMgaW5jbHVzaXZlLlxyXG4gICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAudG9FeHBvbmVudGlhbCA9IGZ1bmN0aW9uIChkcCwgcm0pIHtcclxuICAgIHZhciBzdHIsXHJcbiAgICAgIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICBpZiAoZHAgPT09IHZvaWQgMCkge1xyXG4gICAgICBzdHIgPSBmaW5pdGVUb1N0cmluZyh4LCB0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNoZWNrSW50MzIoZHAsIDAsIE1BWF9ESUdJVFMpO1xyXG5cclxuICAgICAgaWYgKHJtID09PSB2b2lkIDApIHJtID0gQ3Rvci5yb3VuZGluZztcclxuICAgICAgZWxzZSBjaGVja0ludDMyKHJtLCAwLCA4KTtcclxuXHJcbiAgICAgIHggPSBmaW5hbGlzZShuZXcgQ3Rvcih4KSwgZHAgKyAxLCBybSk7XHJcbiAgICAgIHN0ciA9IGZpbml0ZVRvU3RyaW5nKHgsIHRydWUsIGRwICsgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHguaXNOZWcoKSAmJiAheC5pc1plcm8oKSA/ICctJyArIHN0ciA6IHN0cjtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgaW4gbm9ybWFsIChmaXhlZC1wb2ludCkgbm90YXRpb24gdG9cclxuICAgKiBgZHBgIGZpeGVkIGRlY2ltYWwgcGxhY2VzIGFuZCByb3VuZGVkIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJtYCBvciBgcm91bmRpbmdgIGlmIGBybWAgaXNcclxuICAgKiBvbWl0dGVkLlxyXG4gICAqXHJcbiAgICogQXMgd2l0aCBKYXZhU2NyaXB0IG51bWJlcnMsICgtMCkudG9GaXhlZCgwKSBpcyAnMCcsIGJ1dCBlLmcuICgtMC4wMDAwMSkudG9GaXhlZCgwKSBpcyAnLTAnLlxyXG4gICAqXHJcbiAgICogW2RwXSB7bnVtYmVyfSBEZWNpbWFsIHBsYWNlcy4gSW50ZWdlciwgMCB0byBNQVhfRElHSVRTIGluY2x1c2l2ZS5cclxuICAgKiBbcm1dIHtudW1iZXJ9IFJvdW5kaW5nIG1vZGUuIEludGVnZXIsIDAgdG8gOCBpbmNsdXNpdmUuXHJcbiAgICpcclxuICAgKiAoLTApLnRvRml4ZWQoMCkgaXMgJzAnLCBidXQgKC0wLjEpLnRvRml4ZWQoMCkgaXMgJy0wJy5cclxuICAgKiAoLTApLnRvRml4ZWQoMSkgaXMgJzAuMCcsIGJ1dCAoLTAuMDEpLnRvRml4ZWQoMSkgaXMgJy0wLjAnLlxyXG4gICAqICgtMCkudG9GaXhlZCgzKSBpcyAnMC4wMDAnLlxyXG4gICAqICgtMC41KS50b0ZpeGVkKDApIGlzICctMCcuXHJcbiAgICpcclxuICAgKi9cclxuICBQLnRvRml4ZWQgPSBmdW5jdGlvbiAoZHAsIHJtKSB7XHJcbiAgICB2YXIgc3RyLCB5LFxyXG4gICAgICB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3I7XHJcblxyXG4gICAgaWYgKGRwID09PSB2b2lkIDApIHtcclxuICAgICAgc3RyID0gZmluaXRlVG9TdHJpbmcoeCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjaGVja0ludDMyKGRwLCAwLCBNQVhfRElHSVRTKTtcclxuXHJcbiAgICAgIGlmIChybSA9PT0gdm9pZCAwKSBybSA9IEN0b3Iucm91bmRpbmc7XHJcbiAgICAgIGVsc2UgY2hlY2tJbnQzMihybSwgMCwgOCk7XHJcblxyXG4gICAgICB5ID0gZmluYWxpc2UobmV3IEN0b3IoeCksIGRwICsgeC5lICsgMSwgcm0pO1xyXG4gICAgICBzdHIgPSBmaW5pdGVUb1N0cmluZyh5LCBmYWxzZSwgZHAgKyB5LmUgKyAxKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUbyBkZXRlcm1pbmUgd2hldGhlciB0byBhZGQgdGhlIG1pbnVzIHNpZ24gbG9vayBhdCB0aGUgdmFsdWUgYmVmb3JlIGl0IHdhcyByb3VuZGVkLFxyXG4gICAgLy8gaS5lLiBsb29rIGF0IGB4YCByYXRoZXIgdGhhbiBgeWAuXHJcbiAgICByZXR1cm4geC5pc05lZygpICYmICF4LmlzWmVybygpID8gJy0nICsgc3RyIDogc3RyO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhbiBhcnJheSByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCBhcyBhIHNpbXBsZSBmcmFjdGlvbiB3aXRoIGFuIGludGVnZXJcclxuICAgKiBudW1lcmF0b3IgYW5kIGFuIGludGVnZXIgZGVub21pbmF0b3IuXHJcbiAgICpcclxuICAgKiBUaGUgZGVub21pbmF0b3Igd2lsbCBiZSBhIHBvc2l0aXZlIG5vbi16ZXJvIHZhbHVlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgc3BlY2lmaWVkIG1heGltdW1cclxuICAgKiBkZW5vbWluYXRvci4gSWYgYSBtYXhpbXVtIGRlbm9taW5hdG9yIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBkZW5vbWluYXRvciB3aWxsIGJlIHRoZSBsb3dlc3RcclxuICAgKiB2YWx1ZSBuZWNlc3NhcnkgdG8gcmVwcmVzZW50IHRoZSBudW1iZXIgZXhhY3RseS5cclxuICAgKlxyXG4gICAqIFttYXhEXSB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfSBNYXhpbXVtIGRlbm9taW5hdG9yLiBJbnRlZ2VyID49IDEgYW5kIDwgSW5maW5pdHkuXHJcbiAgICpcclxuICAgKi9cclxuICBQLnRvRnJhY3Rpb24gPSBmdW5jdGlvbiAobWF4RCkge1xyXG4gICAgdmFyIGQsIGQwLCBkMSwgZDIsIGUsIGssIG4sIG4wLCBuMSwgcHIsIHEsIHIsXHJcbiAgICAgIHggPSB0aGlzLFxyXG4gICAgICB4ZCA9IHguZCxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3I7XHJcblxyXG4gICAgaWYgKCF4ZCkgcmV0dXJuIG5ldyBDdG9yKHgpO1xyXG5cclxuICAgIG4xID0gZDAgPSBuZXcgQ3RvcigxKTtcclxuICAgIGQxID0gbjAgPSBuZXcgQ3RvcigwKTtcclxuXHJcbiAgICBkID0gbmV3IEN0b3IoZDEpO1xyXG4gICAgZSA9IGQuZSA9IGdldFByZWNpc2lvbih4ZCkgLSB4LmUgLSAxO1xyXG4gICAgayA9IGUgJSBMT0dfQkFTRTtcclxuICAgIGQuZFswXSA9IG1hdGhwb3coMTAsIGsgPCAwID8gTE9HX0JBU0UgKyBrIDogayk7XHJcblxyXG4gICAgaWYgKG1heEQgPT0gbnVsbCkge1xyXG5cclxuICAgICAgLy8gZCBpcyAxMCoqZSwgdGhlIG1pbmltdW0gbWF4LWRlbm9taW5hdG9yIG5lZWRlZC5cclxuICAgICAgbWF4RCA9IGUgPiAwID8gZCA6IG4xO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbiA9IG5ldyBDdG9yKG1heEQpO1xyXG4gICAgICBpZiAoIW4uaXNJbnQoKSB8fCBuLmx0KG4xKSkgdGhyb3cgRXJyb3IoaW52YWxpZEFyZ3VtZW50ICsgbik7XHJcbiAgICAgIG1heEQgPSBuLmd0KGQpID8gKGUgPiAwID8gZCA6IG4xKSA6IG47XHJcbiAgICB9XHJcblxyXG4gICAgZXh0ZXJuYWwgPSBmYWxzZTtcclxuICAgIG4gPSBuZXcgQ3RvcihkaWdpdHNUb1N0cmluZyh4ZCkpO1xyXG4gICAgcHIgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgIEN0b3IucHJlY2lzaW9uID0gZSA9IHhkLmxlbmd0aCAqIExPR19CQVNFICogMjtcclxuXHJcbiAgICBmb3IgKDs7KSAge1xyXG4gICAgICBxID0gZGl2aWRlKG4sIGQsIDAsIDEsIDEpO1xyXG4gICAgICBkMiA9IGQwLnBsdXMocS50aW1lcyhkMSkpO1xyXG4gICAgICBpZiAoZDIuY21wKG1heEQpID09IDEpIGJyZWFrO1xyXG4gICAgICBkMCA9IGQxO1xyXG4gICAgICBkMSA9IGQyO1xyXG4gICAgICBkMiA9IG4xO1xyXG4gICAgICBuMSA9IG4wLnBsdXMocS50aW1lcyhkMikpO1xyXG4gICAgICBuMCA9IGQyO1xyXG4gICAgICBkMiA9IGQ7XHJcbiAgICAgIGQgPSBuLm1pbnVzKHEudGltZXMoZDIpKTtcclxuICAgICAgbiA9IGQyO1xyXG4gICAgfVxyXG5cclxuICAgIGQyID0gZGl2aWRlKG1heEQubWludXMoZDApLCBkMSwgMCwgMSwgMSk7XHJcbiAgICBuMCA9IG4wLnBsdXMoZDIudGltZXMobjEpKTtcclxuICAgIGQwID0gZDAucGx1cyhkMi50aW1lcyhkMSkpO1xyXG4gICAgbjAucyA9IG4xLnMgPSB4LnM7XHJcblxyXG4gICAgLy8gRGV0ZXJtaW5lIHdoaWNoIGZyYWN0aW9uIGlzIGNsb3NlciB0byB4LCBuMC9kMCBvciBuMS9kMT9cclxuICAgIHIgPSBkaXZpZGUobjEsIGQxLCBlLCAxKS5taW51cyh4KS5hYnMoKS5jbXAoZGl2aWRlKG4wLCBkMCwgZSwgMSkubWludXMoeCkuYWJzKCkpIDwgMVxyXG4gICAgICAgID8gW24xLCBkMV0gOiBbbjAsIGQwXTtcclxuXHJcbiAgICBDdG9yLnByZWNpc2lvbiA9IHByO1xyXG4gICAgZXh0ZXJuYWwgPSB0cnVlO1xyXG5cclxuICAgIHJldHVybiByO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCBpbiBiYXNlIDE2LCByb3VuZCB0byBgc2RgIHNpZ25pZmljYW50XHJcbiAgICogZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJtYC5cclxuICAgKlxyXG4gICAqIElmIHRoZSBvcHRpb25hbCBgc2RgIGFyZ3VtZW50IGlzIHByZXNlbnQgdGhlbiByZXR1cm4gYmluYXJ5IGV4cG9uZW50aWFsIG5vdGF0aW9uLlxyXG4gICAqXHJcbiAgICogW3NkXSB7bnVtYmVyfSBTaWduaWZpY2FudCBkaWdpdHMuIEludGVnZXIsIDEgdG8gTUFYX0RJR0lUUyBpbmNsdXNpdmUuXHJcbiAgICogW3JtXSB7bnVtYmVyfSBSb3VuZGluZyBtb2RlLiBJbnRlZ2VyLCAwIHRvIDggaW5jbHVzaXZlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC50b0hleGFkZWNpbWFsID0gUC50b0hleCA9IGZ1bmN0aW9uIChzZCwgcm0pIHtcclxuICAgIHJldHVybiB0b1N0cmluZ0JpbmFyeSh0aGlzLCAxNiwgc2QsIHJtKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm5zIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIG5lYXJlc3QgbXVsdGlwbGUgb2YgYHlgIGluIHRoZSBkaXJlY3Rpb24gb2Ygcm91bmRpbmdcclxuICAgKiBtb2RlIGBybWAsIG9yIGBEZWNpbWFsLnJvdW5kaW5nYCBpZiBgcm1gIGlzIG9taXR0ZWQsIHRvIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwuXHJcbiAgICpcclxuICAgKiBUaGUgcmV0dXJuIHZhbHVlIHdpbGwgYWx3YXlzIGhhdmUgdGhlIHNhbWUgc2lnbiBhcyB0aGlzIERlY2ltYWwsIHVubGVzcyBlaXRoZXIgdGhpcyBEZWNpbWFsXHJcbiAgICogb3IgYHlgIGlzIE5hTiwgaW4gd2hpY2ggY2FzZSB0aGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgYWxzbyBiZSBOYU4uXHJcbiAgICpcclxuICAgKiBUaGUgcmV0dXJuIHZhbHVlIGlzIG5vdCBhZmZlY3RlZCBieSB0aGUgdmFsdWUgb2YgYHByZWNpc2lvbmAuXHJcbiAgICpcclxuICAgKiB5IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9IFRoZSBtYWduaXR1ZGUgdG8gcm91bmQgdG8gYSBtdWx0aXBsZSBvZi5cclxuICAgKiBbcm1dIHtudW1iZXJ9IFJvdW5kaW5nIG1vZGUuIEludGVnZXIsIDAgdG8gOCBpbmNsdXNpdmUuXHJcbiAgICpcclxuICAgKiAndG9OZWFyZXN0KCkgcm91bmRpbmcgbW9kZSBub3QgYW4gaW50ZWdlcjoge3JtfSdcclxuICAgKiAndG9OZWFyZXN0KCkgcm91bmRpbmcgbW9kZSBvdXQgb2YgcmFuZ2U6IHtybX0nXHJcbiAgICpcclxuICAgKi9cclxuICBQLnRvTmVhcmVzdCA9IGZ1bmN0aW9uICh5LCBybSkge1xyXG4gICAgdmFyIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICB4ID0gbmV3IEN0b3IoeCk7XHJcblxyXG4gICAgaWYgKHkgPT0gbnVsbCkge1xyXG5cclxuICAgICAgLy8gSWYgeCBpcyBub3QgZmluaXRlLCByZXR1cm4geC5cclxuICAgICAgaWYgKCF4LmQpIHJldHVybiB4O1xyXG5cclxuICAgICAgeSA9IG5ldyBDdG9yKDEpO1xyXG4gICAgICBybSA9IEN0b3Iucm91bmRpbmc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB5ID0gbmV3IEN0b3IoeSk7XHJcbiAgICAgIGlmIChybSA9PT0gdm9pZCAwKSB7XHJcbiAgICAgICAgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNoZWNrSW50MzIocm0sIDAsIDgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBJZiB4IGlzIG5vdCBmaW5pdGUsIHJldHVybiB4IGlmIHkgaXMgbm90IE5hTiwgZWxzZSBOYU4uXHJcbiAgICAgIGlmICgheC5kKSByZXR1cm4geS5zID8geCA6IHk7XHJcblxyXG4gICAgICAvLyBJZiB5IGlzIG5vdCBmaW5pdGUsIHJldHVybiBJbmZpbml0eSB3aXRoIHRoZSBzaWduIG9mIHggaWYgeSBpcyBJbmZpbml0eSwgZWxzZSBOYU4uXHJcbiAgICAgIGlmICgheS5kKSB7XHJcbiAgICAgICAgaWYgKHkucykgeS5zID0geC5zO1xyXG4gICAgICAgIHJldHVybiB5O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWYgeSBpcyBub3QgemVybywgY2FsY3VsYXRlIHRoZSBuZWFyZXN0IG11bHRpcGxlIG9mIHkgdG8geC5cclxuICAgIGlmICh5LmRbMF0pIHtcclxuICAgICAgZXh0ZXJuYWwgPSBmYWxzZTtcclxuICAgICAgeCA9IGRpdmlkZSh4LCB5LCAwLCBybSwgMSkudGltZXMoeSk7XHJcbiAgICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuICAgICAgZmluYWxpc2UoeCk7XHJcblxyXG4gICAgLy8gSWYgeSBpcyB6ZXJvLCByZXR1cm4gemVybyB3aXRoIHRoZSBzaWduIG9mIHguXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB5LnMgPSB4LnM7XHJcbiAgICAgIHggPSB5O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB4O1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIGNvbnZlcnRlZCB0byBhIG51bWJlciBwcmltaXRpdmUuXHJcbiAgICogWmVybyBrZWVwcyBpdHMgc2lnbi5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAudG9OdW1iZXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gK3RoaXM7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIGluIGJhc2UgOCwgcm91bmQgdG8gYHNkYCBzaWduaWZpY2FudFxyXG4gICAqIGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGBybWAuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgb3B0aW9uYWwgYHNkYCBhcmd1bWVudCBpcyBwcmVzZW50IHRoZW4gcmV0dXJuIGJpbmFyeSBleHBvbmVudGlhbCBub3RhdGlvbi5cclxuICAgKlxyXG4gICAqIFtzZF0ge251bWJlcn0gU2lnbmlmaWNhbnQgZGlnaXRzLiBJbnRlZ2VyLCAxIHRvIE1BWF9ESUdJVFMgaW5jbHVzaXZlLlxyXG4gICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAudG9PY3RhbCA9IGZ1bmN0aW9uIChzZCwgcm0pIHtcclxuICAgIHJldHVybiB0b1N0cmluZ0JpbmFyeSh0aGlzLCA4LCBzZCwgcm0pO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgcmFpc2VkIHRvIHRoZSBwb3dlciBgeWAsIHJvdW5kZWRcclxuICAgKiB0byBgcHJlY2lzaW9uYCBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogRUNNQVNjcmlwdCBjb21wbGlhbnQuXHJcbiAgICpcclxuICAgKiAgIHBvdyh4LCBOYU4pICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBOYU5cclxuICAgKiAgIHBvdyh4LCDCsTApICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMVxyXG5cclxuICAgKiAgIHBvdyhOYU4sIG5vbi16ZXJvKSAgICAgICAgICAgICAgICAgICAgPSBOYU5cclxuICAgKiAgIHBvdyhhYnMoeCkgPiAxLCArSW5maW5pdHkpICAgICAgICAgICAgPSArSW5maW5pdHlcclxuICAgKiAgIHBvdyhhYnMoeCkgPiAxLCAtSW5maW5pdHkpICAgICAgICAgICAgPSArMFxyXG4gICAqICAgcG93KGFicyh4KSA9PSAxLCDCsUluZmluaXR5KSAgICAgICAgICAgPSBOYU5cclxuICAgKiAgIHBvdyhhYnMoeCkgPCAxLCArSW5maW5pdHkpICAgICAgICAgICAgPSArMFxyXG4gICAqICAgcG93KGFicyh4KSA8IDEsIC1JbmZpbml0eSkgICAgICAgICAgICA9ICtJbmZpbml0eVxyXG4gICAqICAgcG93KCtJbmZpbml0eSwgeSA+IDApICAgICAgICAgICAgICAgICA9ICtJbmZpbml0eVxyXG4gICAqICAgcG93KCtJbmZpbml0eSwgeSA8IDApICAgICAgICAgICAgICAgICA9ICswXHJcbiAgICogICBwb3coLUluZmluaXR5LCBvZGQgaW50ZWdlciA+IDApICAgICAgID0gLUluZmluaXR5XHJcbiAgICogICBwb3coLUluZmluaXR5LCBldmVuIGludGVnZXIgPiAwKSAgICAgID0gK0luZmluaXR5XHJcbiAgICogICBwb3coLUluZmluaXR5LCBvZGQgaW50ZWdlciA8IDApICAgICAgID0gLTBcclxuICAgKiAgIHBvdygtSW5maW5pdHksIGV2ZW4gaW50ZWdlciA8IDApICAgICAgPSArMFxyXG4gICAqICAgcG93KCswLCB5ID4gMCkgICAgICAgICAgICAgICAgICAgICAgICA9ICswXHJcbiAgICogICBwb3coKzAsIHkgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgID0gK0luZmluaXR5XHJcbiAgICogICBwb3coLTAsIG9kZCBpbnRlZ2VyID4gMCkgICAgICAgICAgICAgID0gLTBcclxuICAgKiAgIHBvdygtMCwgZXZlbiBpbnRlZ2VyID4gMCkgICAgICAgICAgICAgPSArMFxyXG4gICAqICAgcG93KC0wLCBvZGQgaW50ZWdlciA8IDApICAgICAgICAgICAgICA9IC1JbmZpbml0eVxyXG4gICAqICAgcG93KC0wLCBldmVuIGludGVnZXIgPCAwKSAgICAgICAgICAgICA9ICtJbmZpbml0eVxyXG4gICAqICAgcG93KGZpbml0ZSB4IDwgMCwgZmluaXRlIG5vbi1pbnRlZ2VyKSA9IE5hTlxyXG4gICAqXHJcbiAgICogRm9yIG5vbi1pbnRlZ2VyIG9yIHZlcnkgbGFyZ2UgZXhwb25lbnRzIHBvdyh4LCB5KSBpcyBjYWxjdWxhdGVkIHVzaW5nXHJcbiAgICpcclxuICAgKiAgIHheeSA9IGV4cCh5KmxuKHgpKVxyXG4gICAqXHJcbiAgICogQXNzdW1pbmcgdGhlIGZpcnN0IDE1IHJvdW5kaW5nIGRpZ2l0cyBhcmUgZWFjaCBlcXVhbGx5IGxpa2VseSB0byBiZSBhbnkgZGlnaXQgMC05LCB0aGVcclxuICAgKiBwcm9iYWJpbGl0eSBvZiBhbiBpbmNvcnJlY3RseSByb3VuZGVkIHJlc3VsdFxyXG4gICAqIFAoWzQ5XTl7MTR9IHwgWzUwXTB7MTR9KSA9IDIgKiAwLjIgKiAxMF4tMTQgPSA0ZS0xNSA9IDEvMi41ZSsxNFxyXG4gICAqIGkuZS4gMSBpbiAyNTAsMDAwLDAwMCwwMDAsMDAwXHJcbiAgICpcclxuICAgKiBJZiBhIHJlc3VsdCBpcyBpbmNvcnJlY3RseSByb3VuZGVkIHRoZSBtYXhpbXVtIGVycm9yIHdpbGwgYmUgMSB1bHAgKHVuaXQgaW4gbGFzdCBwbGFjZSkuXHJcbiAgICpcclxuICAgKiB5IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9IFRoZSBwb3dlciB0byB3aGljaCB0byByYWlzZSB0aGlzIERlY2ltYWwuXHJcbiAgICpcclxuICAgKi9cclxuICBQLnRvUG93ZXIgPSBQLnBvdyA9IGZ1bmN0aW9uICh5KSB7XHJcbiAgICB2YXIgZSwgaywgcHIsIHIsIHJtLCBzLFxyXG4gICAgICB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3IsXHJcbiAgICAgIHluID0gKyh5ID0gbmV3IEN0b3IoeSkpO1xyXG5cclxuICAgIC8vIEVpdGhlciDCsUluZmluaXR5LCBOYU4gb3IgwrEwP1xyXG4gICAgaWYgKCF4LmQgfHwgIXkuZCB8fCAheC5kWzBdIHx8ICF5LmRbMF0pIHJldHVybiBuZXcgQ3RvcihtYXRocG93KCt4LCB5bikpO1xyXG5cclxuICAgIHggPSBuZXcgQ3Rvcih4KTtcclxuXHJcbiAgICBpZiAoeC5lcSgxKSkgcmV0dXJuIHg7XHJcblxyXG4gICAgcHIgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgIHJtID0gQ3Rvci5yb3VuZGluZztcclxuXHJcbiAgICBpZiAoeS5lcSgxKSkgcmV0dXJuIGZpbmFsaXNlKHgsIHByLCBybSk7XHJcblxyXG4gICAgLy8geSBleHBvbmVudFxyXG4gICAgZSA9IG1hdGhmbG9vcih5LmUgLyBMT0dfQkFTRSk7XHJcblxyXG4gICAgLy8gSWYgeSBpcyBhIHNtYWxsIGludGVnZXIgdXNlIHRoZSAnZXhwb25lbnRpYXRpb24gYnkgc3F1YXJpbmcnIGFsZ29yaXRobS5cclxuICAgIGlmIChlID49IHkuZC5sZW5ndGggLSAxICYmIChrID0geW4gPCAwID8gLXluIDogeW4pIDw9IE1BWF9TQUZFX0lOVEVHRVIpIHtcclxuICAgICAgciA9IGludFBvdyhDdG9yLCB4LCBrLCBwcik7XHJcbiAgICAgIHJldHVybiB5LnMgPCAwID8gbmV3IEN0b3IoMSkuZGl2KHIpIDogZmluYWxpc2UociwgcHIsIHJtKTtcclxuICAgIH1cclxuXHJcbiAgICBzID0geC5zO1xyXG5cclxuICAgIC8vIGlmIHggaXMgbmVnYXRpdmVcclxuICAgIGlmIChzIDwgMCkge1xyXG5cclxuICAgICAgLy8gaWYgeSBpcyBub3QgYW4gaW50ZWdlclxyXG4gICAgICBpZiAoZSA8IHkuZC5sZW5ndGggLSAxKSByZXR1cm4gbmV3IEN0b3IoTmFOKTtcclxuXHJcbiAgICAgIC8vIFJlc3VsdCBpcyBwb3NpdGl2ZSBpZiB4IGlzIG5lZ2F0aXZlIGFuZCB0aGUgbGFzdCBkaWdpdCBvZiBpbnRlZ2VyIHkgaXMgZXZlbi5cclxuICAgICAgaWYgKCh5LmRbZV0gJiAxKSA9PSAwKSBzID0gMTtcclxuXHJcbiAgICAgIC8vIGlmIHguZXEoLTEpXHJcbiAgICAgIGlmICh4LmUgPT0gMCAmJiB4LmRbMF0gPT0gMSAmJiB4LmQubGVuZ3RoID09IDEpIHtcclxuICAgICAgICB4LnMgPSBzO1xyXG4gICAgICAgIHJldHVybiB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRXN0aW1hdGUgcmVzdWx0IGV4cG9uZW50LlxyXG4gICAgLy8geF55ID0gMTBeZSwgIHdoZXJlIGUgPSB5ICogbG9nMTAoeClcclxuICAgIC8vIGxvZzEwKHgpID0gbG9nMTAoeF9zaWduaWZpY2FuZCkgKyB4X2V4cG9uZW50XHJcbiAgICAvLyBsb2cxMCh4X3NpZ25pZmljYW5kKSA9IGxuKHhfc2lnbmlmaWNhbmQpIC8gbG4oMTApXHJcbiAgICBrID0gbWF0aHBvdygreCwgeW4pO1xyXG4gICAgZSA9IGsgPT0gMCB8fCAhaXNGaW5pdGUoaylcclxuICAgICAgPyBtYXRoZmxvb3IoeW4gKiAoTWF0aC5sb2coJzAuJyArIGRpZ2l0c1RvU3RyaW5nKHguZCkpIC8gTWF0aC5MTjEwICsgeC5lICsgMSkpXHJcbiAgICAgIDogbmV3IEN0b3IoayArICcnKS5lO1xyXG5cclxuICAgIC8vIEV4cG9uZW50IGVzdGltYXRlIG1heSBiZSBpbmNvcnJlY3QgZS5nLiB4OiAwLjk5OTk5OTk5OTk5OTk5OTk5OSwgeTogMi4yOSwgZTogMCwgci5lOiAtMS5cclxuXHJcbiAgICAvLyBPdmVyZmxvdy91bmRlcmZsb3c/XHJcbiAgICBpZiAoZSA+IEN0b3IubWF4RSArIDEgfHwgZSA8IEN0b3IubWluRSAtIDEpIHJldHVybiBuZXcgQ3RvcihlID4gMCA/IHMgLyAwIDogMCk7XHJcblxyXG4gICAgZXh0ZXJuYWwgPSBmYWxzZTtcclxuICAgIEN0b3Iucm91bmRpbmcgPSB4LnMgPSAxO1xyXG5cclxuICAgIC8vIEVzdGltYXRlIHRoZSBleHRyYSBndWFyZCBkaWdpdHMgbmVlZGVkIHRvIGVuc3VyZSBmaXZlIGNvcnJlY3Qgcm91bmRpbmcgZGlnaXRzIGZyb21cclxuICAgIC8vIG5hdHVyYWxMb2dhcml0aG0oeCkuIEV4YW1wbGUgb2YgZmFpbHVyZSB3aXRob3V0IHRoZXNlIGV4dHJhIGRpZ2l0cyAocHJlY2lzaW9uOiAxMCk6XHJcbiAgICAvLyBuZXcgRGVjaW1hbCgyLjMyNDU2KS5wb3coJzIwODc5ODc0MzY1MzQ1NjYuNDY0MTEnKVxyXG4gICAgLy8gc2hvdWxkIGJlIDEuMTYyMzc3ODIzZSs3NjQ5MTQ5MDUxNzM4MTUsIGJ1dCBpcyAxLjE2MjM1NTgyM2UrNzY0OTE0OTA1MTczODE1XHJcbiAgICBrID0gTWF0aC5taW4oMTIsIChlICsgJycpLmxlbmd0aCk7XHJcblxyXG4gICAgLy8gciA9IHheeSA9IGV4cCh5KmxuKHgpKVxyXG4gICAgciA9IG5hdHVyYWxFeHBvbmVudGlhbCh5LnRpbWVzKG5hdHVyYWxMb2dhcml0aG0oeCwgcHIgKyBrKSksIHByKTtcclxuXHJcbiAgICAvLyByIG1heSBiZSBJbmZpbml0eSwgZS5nLiAoMC45OTk5OTk5OTk5OTk5OTk5KS5wb3coLTFlKzQwKVxyXG4gICAgaWYgKHIuZCkge1xyXG5cclxuICAgICAgLy8gVHJ1bmNhdGUgdG8gdGhlIHJlcXVpcmVkIHByZWNpc2lvbiBwbHVzIGZpdmUgcm91bmRpbmcgZGlnaXRzLlxyXG4gICAgICByID0gZmluYWxpc2UociwgcHIgKyA1LCAxKTtcclxuXHJcbiAgICAgIC8vIElmIHRoZSByb3VuZGluZyBkaWdpdHMgYXJlIFs0OV05OTk5IG9yIFs1MF0wMDAwIGluY3JlYXNlIHRoZSBwcmVjaXNpb24gYnkgMTAgYW5kIHJlY2FsY3VsYXRlXHJcbiAgICAgIC8vIHRoZSByZXN1bHQuXHJcbiAgICAgIGlmIChjaGVja1JvdW5kaW5nRGlnaXRzKHIuZCwgcHIsIHJtKSkge1xyXG4gICAgICAgIGUgPSBwciArIDEwO1xyXG5cclxuICAgICAgICAvLyBUcnVuY2F0ZSB0byB0aGUgaW5jcmVhc2VkIHByZWNpc2lvbiBwbHVzIGZpdmUgcm91bmRpbmcgZGlnaXRzLlxyXG4gICAgICAgIHIgPSBmaW5hbGlzZShuYXR1cmFsRXhwb25lbnRpYWwoeS50aW1lcyhuYXR1cmFsTG9nYXJpdGhtKHgsIGUgKyBrKSksIGUpLCBlICsgNSwgMSk7XHJcblxyXG4gICAgICAgIC8vIENoZWNrIGZvciAxNCBuaW5lcyBmcm9tIHRoZSAybmQgcm91bmRpbmcgZGlnaXQgKHRoZSBmaXJzdCByb3VuZGluZyBkaWdpdCBtYXkgYmUgNCBvciA5KS5cclxuICAgICAgICBpZiAoK2RpZ2l0c1RvU3RyaW5nKHIuZCkuc2xpY2UocHIgKyAxLCBwciArIDE1KSArIDEgPT0gMWUxNCkge1xyXG4gICAgICAgICAgciA9IGZpbmFsaXNlKHIsIHByICsgMSwgMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgci5zID0gcztcclxuICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuICAgIEN0b3Iucm91bmRpbmcgPSBybTtcclxuXHJcbiAgICByZXR1cm4gZmluYWxpc2UociwgcHIsIHJtKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgcm91bmRlZCB0byBgc2RgIHNpZ25pZmljYW50IGRpZ2l0c1xyXG4gICAqIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIFJldHVybiBleHBvbmVudGlhbCBub3RhdGlvbiBpZiBgc2RgIGlzIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBuZWNlc3NhcnkgdG8gcmVwcmVzZW50XHJcbiAgICogdGhlIGludGVnZXIgcGFydCBvZiB0aGUgdmFsdWUgaW4gbm9ybWFsIG5vdGF0aW9uLlxyXG4gICAqXHJcbiAgICogW3NkXSB7bnVtYmVyfSBTaWduaWZpY2FudCBkaWdpdHMuIEludGVnZXIsIDEgdG8gTUFYX0RJR0lUUyBpbmNsdXNpdmUuXHJcbiAgICogW3JtXSB7bnVtYmVyfSBSb3VuZGluZyBtb2RlLiBJbnRlZ2VyLCAwIHRvIDggaW5jbHVzaXZlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC50b1ByZWNpc2lvbiA9IGZ1bmN0aW9uIChzZCwgcm0pIHtcclxuICAgIHZhciBzdHIsXHJcbiAgICAgIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICBpZiAoc2QgPT09IHZvaWQgMCkge1xyXG4gICAgICBzdHIgPSBmaW5pdGVUb1N0cmluZyh4LCB4LmUgPD0gQ3Rvci50b0V4cE5lZyB8fCB4LmUgPj0gQ3Rvci50b0V4cFBvcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjaGVja0ludDMyKHNkLCAxLCBNQVhfRElHSVRTKTtcclxuXHJcbiAgICAgIGlmIChybSA9PT0gdm9pZCAwKSBybSA9IEN0b3Iucm91bmRpbmc7XHJcbiAgICAgIGVsc2UgY2hlY2tJbnQzMihybSwgMCwgOCk7XHJcblxyXG4gICAgICB4ID0gZmluYWxpc2UobmV3IEN0b3IoeCksIHNkLCBybSk7XHJcbiAgICAgIHN0ciA9IGZpbml0ZVRvU3RyaW5nKHgsIHNkIDw9IHguZSB8fCB4LmUgPD0gQ3Rvci50b0V4cE5lZywgc2QpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB4LmlzTmVnKCkgJiYgIXguaXNaZXJvKCkgPyAnLScgKyBzdHIgOiBzdHI7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCByb3VuZGVkIHRvIGEgbWF4aW11bSBvZiBgc2RgXHJcbiAgICogc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJtYCwgb3IgdG8gYHByZWNpc2lvbmAgYW5kIGByb3VuZGluZ2AgcmVzcGVjdGl2ZWx5IGlmXHJcbiAgICogb21pdHRlZC5cclxuICAgKlxyXG4gICAqIFtzZF0ge251bWJlcn0gU2lnbmlmaWNhbnQgZGlnaXRzLiBJbnRlZ2VyLCAxIHRvIE1BWF9ESUdJVFMgaW5jbHVzaXZlLlxyXG4gICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgKlxyXG4gICAqICd0b1NEKCkgZGlnaXRzIG91dCBvZiByYW5nZToge3NkfSdcclxuICAgKiAndG9TRCgpIGRpZ2l0cyBub3QgYW4gaW50ZWdlcjoge3NkfSdcclxuICAgKiAndG9TRCgpIHJvdW5kaW5nIG1vZGUgbm90IGFuIGludGVnZXI6IHtybX0nXHJcbiAgICogJ3RvU0QoKSByb3VuZGluZyBtb2RlIG91dCBvZiByYW5nZToge3JtfSdcclxuICAgKlxyXG4gICAqL1xyXG4gIFAudG9TaWduaWZpY2FudERpZ2l0cyA9IFAudG9TRCA9IGZ1bmN0aW9uIChzZCwgcm0pIHtcclxuICAgIHZhciB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3I7XHJcblxyXG4gICAgaWYgKHNkID09PSB2b2lkIDApIHtcclxuICAgICAgc2QgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgICAgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY2hlY2tJbnQzMihzZCwgMSwgTUFYX0RJR0lUUyk7XHJcblxyXG4gICAgICBpZiAocm0gPT09IHZvaWQgMCkgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgICBlbHNlIGNoZWNrSW50MzIocm0sIDAsIDgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmaW5hbGlzZShuZXcgQ3Rvcih4KSwgc2QsIHJtKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwuXHJcbiAgICpcclxuICAgKiBSZXR1cm4gZXhwb25lbnRpYWwgbm90YXRpb24gaWYgdGhpcyBEZWNpbWFsIGhhcyBhIHBvc2l0aXZlIGV4cG9uZW50IGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhblxyXG4gICAqIGB0b0V4cFBvc2AsIG9yIGEgbmVnYXRpdmUgZXhwb25lbnQgZXF1YWwgdG8gb3IgbGVzcyB0aGFuIGB0b0V4cE5lZ2AuXHJcbiAgICpcclxuICAgKi9cclxuICBQLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcixcclxuICAgICAgc3RyID0gZmluaXRlVG9TdHJpbmcoeCwgeC5lIDw9IEN0b3IudG9FeHBOZWcgfHwgeC5lID49IEN0b3IudG9FeHBQb3MpO1xyXG5cclxuICAgIHJldHVybiB4LmlzTmVnKCkgJiYgIXguaXNaZXJvKCkgPyAnLScgKyBzdHIgOiBzdHI7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCB0cnVuY2F0ZWQgdG8gYSB3aG9sZSBudW1iZXIuXHJcbiAgICpcclxuICAgKi9cclxuICBQLnRydW5jYXRlZCA9IFAudHJ1bmMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gZmluYWxpc2UobmV3IHRoaXMuY29uc3RydWN0b3IodGhpcyksIHRoaXMuZSArIDEsIDEpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbC5cclxuICAgKiBVbmxpa2UgYHRvU3RyaW5nYCwgbmVnYXRpdmUgemVybyB3aWxsIGluY2x1ZGUgdGhlIG1pbnVzIHNpZ24uXHJcbiAgICpcclxuICAgKi9cclxuICBQLnZhbHVlT2YgPSBQLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3IsXHJcbiAgICAgIHN0ciA9IGZpbml0ZVRvU3RyaW5nKHgsIHguZSA8PSBDdG9yLnRvRXhwTmVnIHx8IHguZSA+PSBDdG9yLnRvRXhwUG9zKTtcclxuXHJcbiAgICByZXR1cm4geC5pc05lZygpID8gJy0nICsgc3RyIDogc3RyO1xyXG4gIH07XHJcblxyXG5cclxuICAvLyBIZWxwZXIgZnVuY3Rpb25zIGZvciBEZWNpbWFsLnByb3RvdHlwZSAoUCkgYW5kL29yIERlY2ltYWwgbWV0aG9kcywgYW5kIHRoZWlyIGNhbGxlcnMuXHJcblxyXG5cclxuICAvKlxyXG4gICAqICBkaWdpdHNUb1N0cmluZyAgICAgICAgICAgUC5jdWJlUm9vdCwgUC5sb2dhcml0aG0sIFAuc3F1YXJlUm9vdCwgUC50b0ZyYWN0aW9uLCBQLnRvUG93ZXIsXHJcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5pdGVUb1N0cmluZywgbmF0dXJhbEV4cG9uZW50aWFsLCBuYXR1cmFsTG9nYXJpdGhtXHJcbiAgICogIGNoZWNrSW50MzIgICAgICAgICAgICAgICBQLnRvRGVjaW1hbFBsYWNlcywgUC50b0V4cG9uZW50aWFsLCBQLnRvRml4ZWQsIFAudG9OZWFyZXN0LFxyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgUC50b1ByZWNpc2lvbiwgUC50b1NpZ25pZmljYW50RGlnaXRzLCB0b1N0cmluZ0JpbmFyeSwgcmFuZG9tXHJcbiAgICogIGNoZWNrUm91bmRpbmdEaWdpdHMgICAgICBQLmxvZ2FyaXRobSwgUC50b1Bvd2VyLCBuYXR1cmFsRXhwb25lbnRpYWwsIG5hdHVyYWxMb2dhcml0aG1cclxuICAgKiAgY29udmVydEJhc2UgICAgICAgICAgICAgIHRvU3RyaW5nQmluYXJ5LCBwYXJzZU90aGVyXHJcbiAgICogIGNvcyAgICAgICAgICAgICAgICAgICAgICBQLmNvc1xyXG4gICAqICBkaXZpZGUgICAgICAgICAgICAgICAgICAgUC5hdGFuaCwgUC5jdWJlUm9vdCwgUC5kaXZpZGVkQnksIFAuZGl2aWRlZFRvSW50ZWdlckJ5LFxyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgUC5sb2dhcml0aG0sIFAubW9kdWxvLCBQLnNxdWFyZVJvb3QsIFAudGFuLCBQLnRhbmgsIFAudG9GcmFjdGlvbixcclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFAudG9OZWFyZXN0LCB0b1N0cmluZ0JpbmFyeSwgbmF0dXJhbEV4cG9uZW50aWFsLCBuYXR1cmFsTG9nYXJpdGhtLFxyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF5bG9yU2VyaWVzLCBhdGFuMiwgcGFyc2VPdGhlclxyXG4gICAqICBmaW5hbGlzZSAgICAgICAgICAgICAgICAgUC5hYnNvbHV0ZVZhbHVlLCBQLmF0YW4sIFAuYXRhbmgsIFAuY2VpbCwgUC5jb3MsIFAuY29zaCxcclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFAuY3ViZVJvb3QsIFAuZGl2aWRlZFRvSW50ZWdlckJ5LCBQLmZsb29yLCBQLmxvZ2FyaXRobSwgUC5taW51cyxcclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFAubW9kdWxvLCBQLm5lZ2F0ZWQsIFAucGx1cywgUC5yb3VuZCwgUC5zaW4sIFAuc2luaCwgUC5zcXVhcmVSb290LFxyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgUC50YW4sIFAudGltZXMsIFAudG9EZWNpbWFsUGxhY2VzLCBQLnRvRXhwb25lbnRpYWwsIFAudG9GaXhlZCxcclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFAudG9OZWFyZXN0LCBQLnRvUG93ZXIsIFAudG9QcmVjaXNpb24sIFAudG9TaWduaWZpY2FudERpZ2l0cyxcclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFAudHJ1bmNhdGVkLCBkaXZpZGUsIGdldExuMTAsIGdldFBpLCBuYXR1cmFsRXhwb25lbnRpYWwsXHJcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICBuYXR1cmFsTG9nYXJpdGhtLCBjZWlsLCBmbG9vciwgcm91bmQsIHRydW5jXHJcbiAgICogIGZpbml0ZVRvU3RyaW5nICAgICAgICAgICBQLnRvRXhwb25lbnRpYWwsIFAudG9GaXhlZCwgUC50b1ByZWNpc2lvbiwgUC50b1N0cmluZywgUC52YWx1ZU9mLFxyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9TdHJpbmdCaW5hcnlcclxuICAgKiAgZ2V0QmFzZTEwRXhwb25lbnQgICAgICAgIFAubWludXMsIFAucGx1cywgUC50aW1lcywgcGFyc2VPdGhlclxyXG4gICAqICBnZXRMbjEwICAgICAgICAgICAgICAgICAgUC5sb2dhcml0aG0sIG5hdHVyYWxMb2dhcml0aG1cclxuICAgKiAgZ2V0UGkgICAgICAgICAgICAgICAgICAgIFAuYWNvcywgUC5hc2luLCBQLmF0YW4sIHRvTGVzc1RoYW5IYWxmUGksIGF0YW4yXHJcbiAgICogIGdldFByZWNpc2lvbiAgICAgICAgICAgICBQLnByZWNpc2lvbiwgUC50b0ZyYWN0aW9uXHJcbiAgICogIGdldFplcm9TdHJpbmcgICAgICAgICAgICBkaWdpdHNUb1N0cmluZywgZmluaXRlVG9TdHJpbmdcclxuICAgKiAgaW50UG93ICAgICAgICAgICAgICAgICAgIFAudG9Qb3dlciwgcGFyc2VPdGhlclxyXG4gICAqICBpc09kZCAgICAgICAgICAgICAgICAgICAgdG9MZXNzVGhhbkhhbGZQaVxyXG4gICAqICBtYXhPck1pbiAgICAgICAgICAgICAgICAgbWF4LCBtaW5cclxuICAgKiAgbmF0dXJhbEV4cG9uZW50aWFsICAgICAgIFAubmF0dXJhbEV4cG9uZW50aWFsLCBQLnRvUG93ZXJcclxuICAgKiAgbmF0dXJhbExvZ2FyaXRobSAgICAgICAgIFAuYWNvc2gsIFAuYXNpbmgsIFAuYXRhbmgsIFAubG9nYXJpdGhtLCBQLm5hdHVyYWxMb2dhcml0aG0sXHJcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICBQLnRvUG93ZXIsIG5hdHVyYWxFeHBvbmVudGlhbFxyXG4gICAqICBub25GaW5pdGVUb1N0cmluZyAgICAgICAgZmluaXRlVG9TdHJpbmcsIHRvU3RyaW5nQmluYXJ5XHJcbiAgICogIHBhcnNlRGVjaW1hbCAgICAgICAgICAgICBEZWNpbWFsXHJcbiAgICogIHBhcnNlT3RoZXIgICAgICAgICAgICAgICBEZWNpbWFsXHJcbiAgICogIHNpbiAgICAgICAgICAgICAgICAgICAgICBQLnNpblxyXG4gICAqICB0YXlsb3JTZXJpZXMgICAgICAgICAgICAgUC5jb3NoLCBQLnNpbmgsIGNvcywgc2luXHJcbiAgICogIHRvTGVzc1RoYW5IYWxmUGkgICAgICAgICBQLmNvcywgUC5zaW5cclxuICAgKiAgdG9TdHJpbmdCaW5hcnkgICAgICAgICAgIFAudG9CaW5hcnksIFAudG9IZXhhZGVjaW1hbCwgUC50b09jdGFsXHJcbiAgICogIHRydW5jYXRlICAgICAgICAgICAgICAgICBpbnRQb3dcclxuICAgKlxyXG4gICAqICBUaHJvd3M6ICAgICAgICAgICAgICAgICAgUC5sb2dhcml0aG0sIFAucHJlY2lzaW9uLCBQLnRvRnJhY3Rpb24sIGNoZWNrSW50MzIsIGdldExuMTAsIGdldFBpLFxyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0dXJhbExvZ2FyaXRobSwgY29uZmlnLCBwYXJzZU90aGVyLCByYW5kb20sIERlY2ltYWxcclxuICAgKi9cclxuXHJcblxyXG4gIGZ1bmN0aW9uIGRpZ2l0c1RvU3RyaW5nKGQpIHtcclxuICAgIHZhciBpLCBrLCB3cyxcclxuICAgICAgaW5kZXhPZkxhc3RXb3JkID0gZC5sZW5ndGggLSAxLFxyXG4gICAgICBzdHIgPSAnJyxcclxuICAgICAgdyA9IGRbMF07XHJcblxyXG4gICAgaWYgKGluZGV4T2ZMYXN0V29yZCA+IDApIHtcclxuICAgICAgc3RyICs9IHc7XHJcbiAgICAgIGZvciAoaSA9IDE7IGkgPCBpbmRleE9mTGFzdFdvcmQ7IGkrKykge1xyXG4gICAgICAgIHdzID0gZFtpXSArICcnO1xyXG4gICAgICAgIGsgPSBMT0dfQkFTRSAtIHdzLmxlbmd0aDtcclxuICAgICAgICBpZiAoaykgc3RyICs9IGdldFplcm9TdHJpbmcoayk7XHJcbiAgICAgICAgc3RyICs9IHdzO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB3ID0gZFtpXTtcclxuICAgICAgd3MgPSB3ICsgJyc7XHJcbiAgICAgIGsgPSBMT0dfQkFTRSAtIHdzLmxlbmd0aDtcclxuICAgICAgaWYgKGspIHN0ciArPSBnZXRaZXJvU3RyaW5nKGspO1xyXG4gICAgfSBlbHNlIGlmICh3ID09PSAwKSB7XHJcbiAgICAgIHJldHVybiAnMCc7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmVtb3ZlIHRyYWlsaW5nIHplcm9zIG9mIGxhc3Qgdy5cclxuICAgIGZvciAoOyB3ICUgMTAgPT09IDA7KSB3IC89IDEwO1xyXG5cclxuICAgIHJldHVybiBzdHIgKyB3O1xyXG4gIH1cclxuXHJcblxyXG4gIGZ1bmN0aW9uIGNoZWNrSW50MzIoaSwgbWluLCBtYXgpIHtcclxuICAgIGlmIChpICE9PSB+fmkgfHwgaSA8IG1pbiB8fCBpID4gbWF4KSB7XHJcbiAgICAgIHRocm93IEVycm9yKGludmFsaWRBcmd1bWVudCArIGkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogQ2hlY2sgNSByb3VuZGluZyBkaWdpdHMgaWYgYHJlcGVhdGluZ2AgaXMgbnVsbCwgNCBvdGhlcndpc2UuXHJcbiAgICogYHJlcGVhdGluZyA9PSBudWxsYCBpZiBjYWxsZXIgaXMgYGxvZ2Agb3IgYHBvd2AsXHJcbiAgICogYHJlcGVhdGluZyAhPSBudWxsYCBpZiBjYWxsZXIgaXMgYG5hdHVyYWxMb2dhcml0aG1gIG9yIGBuYXR1cmFsRXhwb25lbnRpYWxgLlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGNoZWNrUm91bmRpbmdEaWdpdHMoZCwgaSwgcm0sIHJlcGVhdGluZykge1xyXG4gICAgdmFyIGRpLCBrLCByLCByZDtcclxuXHJcbiAgICAvLyBHZXQgdGhlIGxlbmd0aCBvZiB0aGUgZmlyc3Qgd29yZCBvZiB0aGUgYXJyYXkgZC5cclxuICAgIGZvciAoayA9IGRbMF07IGsgPj0gMTA7IGsgLz0gMTApIC0taTtcclxuXHJcbiAgICAvLyBJcyB0aGUgcm91bmRpbmcgZGlnaXQgaW4gdGhlIGZpcnN0IHdvcmQgb2YgZD9cclxuICAgIGlmICgtLWkgPCAwKSB7XHJcbiAgICAgIGkgKz0gTE9HX0JBU0U7XHJcbiAgICAgIGRpID0gMDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRpID0gTWF0aC5jZWlsKChpICsgMSkgLyBMT0dfQkFTRSk7XHJcbiAgICAgIGkgJT0gTE9HX0JBU0U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gaSBpcyB0aGUgaW5kZXggKDAgLSA2KSBvZiB0aGUgcm91bmRpbmcgZGlnaXQuXHJcbiAgICAvLyBFLmcuIGlmIHdpdGhpbiB0aGUgd29yZCAzNDg3NTYzIHRoZSBmaXJzdCByb3VuZGluZyBkaWdpdCBpcyA1LFxyXG4gICAgLy8gdGhlbiBpID0gNCwgayA9IDEwMDAsIHJkID0gMzQ4NzU2MyAlIDEwMDAgPSA1NjNcclxuICAgIGsgPSBtYXRocG93KDEwLCBMT0dfQkFTRSAtIGkpO1xyXG4gICAgcmQgPSBkW2RpXSAlIGsgfCAwO1xyXG5cclxuICAgIGlmIChyZXBlYXRpbmcgPT0gbnVsbCkge1xyXG4gICAgICBpZiAoaSA8IDMpIHtcclxuICAgICAgICBpZiAoaSA9PSAwKSByZCA9IHJkIC8gMTAwIHwgMDtcclxuICAgICAgICBlbHNlIGlmIChpID09IDEpIHJkID0gcmQgLyAxMCB8IDA7XHJcbiAgICAgICAgciA9IHJtIDwgNCAmJiByZCA9PSA5OTk5OSB8fCBybSA+IDMgJiYgcmQgPT0gNDk5OTkgfHwgcmQgPT0gNTAwMDAgfHwgcmQgPT0gMDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByID0gKHJtIDwgNCAmJiByZCArIDEgPT0gayB8fCBybSA+IDMgJiYgcmQgKyAxID09IGsgLyAyKSAmJlxyXG4gICAgICAgICAgKGRbZGkgKyAxXSAvIGsgLyAxMDAgfCAwKSA9PSBtYXRocG93KDEwLCBpIC0gMikgLSAxIHx8XHJcbiAgICAgICAgICAgIChyZCA9PSBrIC8gMiB8fCByZCA9PSAwKSAmJiAoZFtkaSArIDFdIC8gayAvIDEwMCB8IDApID09IDA7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChpIDwgNCkge1xyXG4gICAgICAgIGlmIChpID09IDApIHJkID0gcmQgLyAxMDAwIHwgMDtcclxuICAgICAgICBlbHNlIGlmIChpID09IDEpIHJkID0gcmQgLyAxMDAgfCAwO1xyXG4gICAgICAgIGVsc2UgaWYgKGkgPT0gMikgcmQgPSByZCAvIDEwIHwgMDtcclxuICAgICAgICByID0gKHJlcGVhdGluZyB8fCBybSA8IDQpICYmIHJkID09IDk5OTkgfHwgIXJlcGVhdGluZyAmJiBybSA+IDMgJiYgcmQgPT0gNDk5OTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByID0gKChyZXBlYXRpbmcgfHwgcm0gPCA0KSAmJiByZCArIDEgPT0gayB8fFxyXG4gICAgICAgICghcmVwZWF0aW5nICYmIHJtID4gMykgJiYgcmQgKyAxID09IGsgLyAyKSAmJlxyXG4gICAgICAgICAgKGRbZGkgKyAxXSAvIGsgLyAxMDAwIHwgMCkgPT0gbWF0aHBvdygxMCwgaSAtIDMpIC0gMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIENvbnZlcnQgc3RyaW5nIG9mIGBiYXNlSW5gIHRvIGFuIGFycmF5IG9mIG51bWJlcnMgb2YgYGJhc2VPdXRgLlxyXG4gIC8vIEVnLiBjb252ZXJ0QmFzZSgnMjU1JywgMTAsIDE2KSByZXR1cm5zIFsxNSwgMTVdLlxyXG4gIC8vIEVnLiBjb252ZXJ0QmFzZSgnZmYnLCAxNiwgMTApIHJldHVybnMgWzIsIDUsIDVdLlxyXG4gIGZ1bmN0aW9uIGNvbnZlcnRCYXNlKHN0ciwgYmFzZUluLCBiYXNlT3V0KSB7XHJcbiAgICB2YXIgaixcclxuICAgICAgYXJyID0gWzBdLFxyXG4gICAgICBhcnJMLFxyXG4gICAgICBpID0gMCxcclxuICAgICAgc3RyTCA9IHN0ci5sZW5ndGg7XHJcblxyXG4gICAgZm9yICg7IGkgPCBzdHJMOykge1xyXG4gICAgICBmb3IgKGFyckwgPSBhcnIubGVuZ3RoOyBhcnJMLS07KSBhcnJbYXJyTF0gKj0gYmFzZUluO1xyXG4gICAgICBhcnJbMF0gKz0gTlVNRVJBTFMuaW5kZXhPZihzdHIuY2hhckF0KGkrKykpO1xyXG4gICAgICBmb3IgKGogPSAwOyBqIDwgYXJyLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgaWYgKGFycltqXSA+IGJhc2VPdXQgLSAxKSB7XHJcbiAgICAgICAgICBpZiAoYXJyW2ogKyAxXSA9PT0gdm9pZCAwKSBhcnJbaiArIDFdID0gMDtcclxuICAgICAgICAgIGFycltqICsgMV0gKz0gYXJyW2pdIC8gYmFzZU91dCB8IDA7XHJcbiAgICAgICAgICBhcnJbal0gJT0gYmFzZU91dDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYXJyLnJldmVyc2UoKTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIGNvcyh4KSA9IDEgLSB4XjIvMiEgKyB4XjQvNCEgLSAuLi5cclxuICAgKiB8eHwgPCBwaS8yXHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBjb3NpbmUoQ3RvciwgeCkge1xyXG4gICAgdmFyIGssIGxlbiwgeTtcclxuXHJcbiAgICBpZiAoeC5pc1plcm8oKSkgcmV0dXJuIHg7XHJcblxyXG4gICAgLy8gQXJndW1lbnQgcmVkdWN0aW9uOiBjb3MoNHgpID0gOCooY29zXjQoeCkgLSBjb3NeMih4KSkgKyAxXHJcbiAgICAvLyBpLmUuIGNvcyh4KSA9IDgqKGNvc140KHgvNCkgLSBjb3NeMih4LzQpKSArIDFcclxuXHJcbiAgICAvLyBFc3RpbWF0ZSB0aGUgb3B0aW11bSBudW1iZXIgb2YgdGltZXMgdG8gdXNlIHRoZSBhcmd1bWVudCByZWR1Y3Rpb24uXHJcbiAgICBsZW4gPSB4LmQubGVuZ3RoO1xyXG4gICAgaWYgKGxlbiA8IDMyKSB7XHJcbiAgICAgIGsgPSBNYXRoLmNlaWwobGVuIC8gMyk7XHJcbiAgICAgIHkgPSAoMSAvIHRpbnlQb3coNCwgaykpLnRvU3RyaW5nKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBrID0gMTY7XHJcbiAgICAgIHkgPSAnMi4zMjgzMDY0MzY1Mzg2OTYyODkwNjI1ZS0xMCc7XHJcbiAgICB9XHJcblxyXG4gICAgQ3Rvci5wcmVjaXNpb24gKz0gaztcclxuXHJcbiAgICB4ID0gdGF5bG9yU2VyaWVzKEN0b3IsIDEsIHgudGltZXMoeSksIG5ldyBDdG9yKDEpKTtcclxuXHJcbiAgICAvLyBSZXZlcnNlIGFyZ3VtZW50IHJlZHVjdGlvblxyXG4gICAgZm9yICh2YXIgaSA9IGs7IGktLTspIHtcclxuICAgICAgdmFyIGNvczJ4ID0geC50aW1lcyh4KTtcclxuICAgICAgeCA9IGNvczJ4LnRpbWVzKGNvczJ4KS5taW51cyhjb3MyeCkudGltZXMoOCkucGx1cygxKTtcclxuICAgIH1cclxuXHJcbiAgICBDdG9yLnByZWNpc2lvbiAtPSBrO1xyXG5cclxuICAgIHJldHVybiB4O1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUGVyZm9ybSBkaXZpc2lvbiBpbiB0aGUgc3BlY2lmaWVkIGJhc2UuXHJcbiAgICovXHJcbiAgdmFyIGRpdmlkZSA9IChmdW5jdGlvbiAoKSB7XHJcblxyXG4gICAgLy8gQXNzdW1lcyBub24temVybyB4IGFuZCBrLCBhbmQgaGVuY2Ugbm9uLXplcm8gcmVzdWx0LlxyXG4gICAgZnVuY3Rpb24gbXVsdGlwbHlJbnRlZ2VyKHgsIGssIGJhc2UpIHtcclxuICAgICAgdmFyIHRlbXAsXHJcbiAgICAgICAgY2FycnkgPSAwLFxyXG4gICAgICAgIGkgPSB4Lmxlbmd0aDtcclxuXHJcbiAgICAgIGZvciAoeCA9IHguc2xpY2UoKTsgaS0tOykge1xyXG4gICAgICAgIHRlbXAgPSB4W2ldICogayArIGNhcnJ5O1xyXG4gICAgICAgIHhbaV0gPSB0ZW1wICUgYmFzZSB8IDA7XHJcbiAgICAgICAgY2FycnkgPSB0ZW1wIC8gYmFzZSB8IDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChjYXJyeSkgeC51bnNoaWZ0KGNhcnJ5KTtcclxuXHJcbiAgICAgIHJldHVybiB4O1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGNvbXBhcmUoYSwgYiwgYUwsIGJMKSB7XHJcbiAgICAgIHZhciBpLCByO1xyXG5cclxuICAgICAgaWYgKGFMICE9IGJMKSB7XHJcbiAgICAgICAgciA9IGFMID4gYkwgPyAxIDogLTE7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9yIChpID0gciA9IDA7IGkgPCBhTDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoYVtpXSAhPSBiW2ldKSB7XHJcbiAgICAgICAgICAgIHIgPSBhW2ldID4gYltpXSA/IDEgOiAtMTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gcjtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBzdWJ0cmFjdChhLCBiLCBhTCwgYmFzZSkge1xyXG4gICAgICB2YXIgaSA9IDA7XHJcblxyXG4gICAgICAvLyBTdWJ0cmFjdCBiIGZyb20gYS5cclxuICAgICAgZm9yICg7IGFMLS07KSB7XHJcbiAgICAgICAgYVthTF0gLT0gaTtcclxuICAgICAgICBpID0gYVthTF0gPCBiW2FMXSA/IDEgOiAwO1xyXG4gICAgICAgIGFbYUxdID0gaSAqIGJhc2UgKyBhW2FMXSAtIGJbYUxdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBSZW1vdmUgbGVhZGluZyB6ZXJvcy5cclxuICAgICAgZm9yICg7ICFhWzBdICYmIGEubGVuZ3RoID4gMTspIGEuc2hpZnQoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHgsIHksIHByLCBybSwgZHAsIGJhc2UpIHtcclxuICAgICAgdmFyIGNtcCwgZSwgaSwgaywgbG9nQmFzZSwgbW9yZSwgcHJvZCwgcHJvZEwsIHEsIHFkLCByZW0sIHJlbUwsIHJlbTAsIHNkLCB0LCB4aSwgeEwsIHlkMCxcclxuICAgICAgICB5TCwgeXosXHJcbiAgICAgICAgQ3RvciA9IHguY29uc3RydWN0b3IsXHJcbiAgICAgICAgc2lnbiA9IHgucyA9PSB5LnMgPyAxIDogLTEsXHJcbiAgICAgICAgeGQgPSB4LmQsXHJcbiAgICAgICAgeWQgPSB5LmQ7XHJcblxyXG4gICAgICAvLyBFaXRoZXIgTmFOLCBJbmZpbml0eSBvciAwP1xyXG4gICAgICBpZiAoIXhkIHx8ICF4ZFswXSB8fCAheWQgfHwgIXlkWzBdKSB7XHJcblxyXG4gICAgICAgIHJldHVybiBuZXcgQ3RvcigvLyBSZXR1cm4gTmFOIGlmIGVpdGhlciBOYU4sIG9yIGJvdGggSW5maW5pdHkgb3IgMC5cclxuICAgICAgICAgICF4LnMgfHwgIXkucyB8fCAoeGQgPyB5ZCAmJiB4ZFswXSA9PSB5ZFswXSA6ICF5ZCkgPyBOYU4gOlxyXG5cclxuICAgICAgICAgIC8vIFJldHVybiDCsTAgaWYgeCBpcyAwIG9yIHkgaXMgwrFJbmZpbml0eSwgb3IgcmV0dXJuIMKxSW5maW5pdHkgYXMgeSBpcyAwLlxyXG4gICAgICAgICAgeGQgJiYgeGRbMF0gPT0gMCB8fCAheWQgPyBzaWduICogMCA6IHNpZ24gLyAwKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGJhc2UpIHtcclxuICAgICAgICBsb2dCYXNlID0gMTtcclxuICAgICAgICBlID0geC5lIC0geS5lO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGJhc2UgPSBCQVNFO1xyXG4gICAgICAgIGxvZ0Jhc2UgPSBMT0dfQkFTRTtcclxuICAgICAgICBlID0gbWF0aGZsb29yKHguZSAvIGxvZ0Jhc2UpIC0gbWF0aGZsb29yKHkuZSAvIGxvZ0Jhc2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB5TCA9IHlkLmxlbmd0aDtcclxuICAgICAgeEwgPSB4ZC5sZW5ndGg7XHJcbiAgICAgIHEgPSBuZXcgQ3RvcihzaWduKTtcclxuICAgICAgcWQgPSBxLmQgPSBbXTtcclxuXHJcbiAgICAgIC8vIFJlc3VsdCBleHBvbmVudCBtYXkgYmUgb25lIGxlc3MgdGhhbiBlLlxyXG4gICAgICAvLyBUaGUgZGlnaXQgYXJyYXkgb2YgYSBEZWNpbWFsIGZyb20gdG9TdHJpbmdCaW5hcnkgbWF5IGhhdmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICAgIGZvciAoaSA9IDA7IHlkW2ldID09ICh4ZFtpXSB8fCAwKTsgaSsrKTtcclxuXHJcbiAgICAgIGlmICh5ZFtpXSA+ICh4ZFtpXSB8fCAwKSkgZS0tO1xyXG5cclxuICAgICAgaWYgKHByID09IG51bGwpIHtcclxuICAgICAgICBzZCA9IHByID0gQ3Rvci5wcmVjaXNpb247XHJcbiAgICAgICAgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgICB9IGVsc2UgaWYgKGRwKSB7XHJcbiAgICAgICAgc2QgPSBwciArICh4LmUgLSB5LmUpICsgMTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZCA9IHByO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoc2QgPCAwKSB7XHJcbiAgICAgICAgcWQucHVzaCgxKTtcclxuICAgICAgICBtb3JlID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgLy8gQ29udmVydCBwcmVjaXNpb24gaW4gbnVtYmVyIG9mIGJhc2UgMTAgZGlnaXRzIHRvIGJhc2UgMWU3IGRpZ2l0cy5cclxuICAgICAgICBzZCA9IHNkIC8gbG9nQmFzZSArIDIgfCAwO1xyXG4gICAgICAgIGkgPSAwO1xyXG5cclxuICAgICAgICAvLyBkaXZpc29yIDwgMWU3XHJcbiAgICAgICAgaWYgKHlMID09IDEpIHtcclxuICAgICAgICAgIGsgPSAwO1xyXG4gICAgICAgICAgeWQgPSB5ZFswXTtcclxuICAgICAgICAgIHNkKys7XHJcblxyXG4gICAgICAgICAgLy8gayBpcyB0aGUgY2FycnkuXHJcbiAgICAgICAgICBmb3IgKDsgKGkgPCB4TCB8fCBrKSAmJiBzZC0tOyBpKyspIHtcclxuICAgICAgICAgICAgdCA9IGsgKiBiYXNlICsgKHhkW2ldIHx8IDApO1xyXG4gICAgICAgICAgICBxZFtpXSA9IHQgLyB5ZCB8IDA7XHJcbiAgICAgICAgICAgIGsgPSB0ICUgeWQgfCAwO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIG1vcmUgPSBrIHx8IGkgPCB4TDtcclxuXHJcbiAgICAgICAgLy8gZGl2aXNvciA+PSAxZTdcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vIE5vcm1hbGlzZSB4ZCBhbmQgeWQgc28gaGlnaGVzdCBvcmRlciBkaWdpdCBvZiB5ZCBpcyA+PSBiYXNlLzJcclxuICAgICAgICAgIGsgPSBiYXNlIC8gKHlkWzBdICsgMSkgfCAwO1xyXG5cclxuICAgICAgICAgIGlmIChrID4gMSkge1xyXG4gICAgICAgICAgICB5ZCA9IG11bHRpcGx5SW50ZWdlcih5ZCwgaywgYmFzZSk7XHJcbiAgICAgICAgICAgIHhkID0gbXVsdGlwbHlJbnRlZ2VyKHhkLCBrLCBiYXNlKTtcclxuICAgICAgICAgICAgeUwgPSB5ZC5sZW5ndGg7XHJcbiAgICAgICAgICAgIHhMID0geGQubGVuZ3RoO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHhpID0geUw7XHJcbiAgICAgICAgICByZW0gPSB4ZC5zbGljZSgwLCB5TCk7XHJcbiAgICAgICAgICByZW1MID0gcmVtLmxlbmd0aDtcclxuXHJcbiAgICAgICAgICAvLyBBZGQgemVyb3MgdG8gbWFrZSByZW1haW5kZXIgYXMgbG9uZyBhcyBkaXZpc29yLlxyXG4gICAgICAgICAgZm9yICg7IHJlbUwgPCB5TDspIHJlbVtyZW1MKytdID0gMDtcclxuXHJcbiAgICAgICAgICB5eiA9IHlkLnNsaWNlKCk7XHJcbiAgICAgICAgICB5ei51bnNoaWZ0KDApO1xyXG4gICAgICAgICAgeWQwID0geWRbMF07XHJcblxyXG4gICAgICAgICAgaWYgKHlkWzFdID49IGJhc2UgLyAyKSArK3lkMDtcclxuXHJcbiAgICAgICAgICBkbyB7XHJcbiAgICAgICAgICAgIGsgPSAwO1xyXG5cclxuICAgICAgICAgICAgLy8gQ29tcGFyZSBkaXZpc29yIGFuZCByZW1haW5kZXIuXHJcbiAgICAgICAgICAgIGNtcCA9IGNvbXBhcmUoeWQsIHJlbSwgeUwsIHJlbUwpO1xyXG5cclxuICAgICAgICAgICAgLy8gSWYgZGl2aXNvciA8IHJlbWFpbmRlci5cclxuICAgICAgICAgICAgaWYgKGNtcCA8IDApIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRyaWFsIGRpZ2l0LCBrLlxyXG4gICAgICAgICAgICAgIHJlbTAgPSByZW1bMF07XHJcbiAgICAgICAgICAgICAgaWYgKHlMICE9IHJlbUwpIHJlbTAgPSByZW0wICogYmFzZSArIChyZW1bMV0gfHwgMCk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIGsgd2lsbCBiZSBob3cgbWFueSB0aW1lcyB0aGUgZGl2aXNvciBnb2VzIGludG8gdGhlIGN1cnJlbnQgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgIGsgPSByZW0wIC8geWQwIHwgMDtcclxuXHJcbiAgICAgICAgICAgICAgLy8gIEFsZ29yaXRobTpcclxuICAgICAgICAgICAgICAvLyAgMS4gcHJvZHVjdCA9IGRpdmlzb3IgKiB0cmlhbCBkaWdpdCAoaylcclxuICAgICAgICAgICAgICAvLyAgMi4gaWYgcHJvZHVjdCA+IHJlbWFpbmRlcjogcHJvZHVjdCAtPSBkaXZpc29yLCBrLS1cclxuICAgICAgICAgICAgICAvLyAgMy4gcmVtYWluZGVyIC09IHByb2R1Y3RcclxuICAgICAgICAgICAgICAvLyAgNC4gaWYgcHJvZHVjdCB3YXMgPCByZW1haW5kZXIgYXQgMjpcclxuICAgICAgICAgICAgICAvLyAgICA1LiBjb21wYXJlIG5ldyByZW1haW5kZXIgYW5kIGRpdmlzb3JcclxuICAgICAgICAgICAgICAvLyAgICA2LiBJZiByZW1haW5kZXIgPiBkaXZpc29yOiByZW1haW5kZXIgLT0gZGl2aXNvciwgaysrXHJcblxyXG4gICAgICAgICAgICAgIGlmIChrID4gMSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGsgPj0gYmFzZSkgayA9IGJhc2UgLSAxO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIHByb2R1Y3QgPSBkaXZpc29yICogdHJpYWwgZGlnaXQuXHJcbiAgICAgICAgICAgICAgICBwcm9kID0gbXVsdGlwbHlJbnRlZ2VyKHlkLCBrLCBiYXNlKTtcclxuICAgICAgICAgICAgICAgIHByb2RMID0gcHJvZC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICByZW1MID0gcmVtLmxlbmd0aDtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBDb21wYXJlIHByb2R1Y3QgYW5kIHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAgIGNtcCA9IGNvbXBhcmUocHJvZCwgcmVtLCBwcm9kTCwgcmVtTCk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gcHJvZHVjdCA+IHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAgIGlmIChjbXAgPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICBrLS07XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBTdWJ0cmFjdCBkaXZpc29yIGZyb20gcHJvZHVjdC5cclxuICAgICAgICAgICAgICAgICAgc3VidHJhY3QocHJvZCwgeUwgPCBwcm9kTCA/IHl6IDogeWQsIHByb2RMLCBiYXNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIGNtcCBpcyAtMS5cclxuICAgICAgICAgICAgICAgIC8vIElmIGsgaXMgMCwgdGhlcmUgaXMgbm8gbmVlZCB0byBjb21wYXJlIHlkIGFuZCByZW0gYWdhaW4gYmVsb3csIHNvIGNoYW5nZSBjbXAgdG8gMVxyXG4gICAgICAgICAgICAgICAgLy8gdG8gYXZvaWQgaXQuIElmIGsgaXMgMSB0aGVyZSBpcyBhIG5lZWQgdG8gY29tcGFyZSB5ZCBhbmQgcmVtIGFnYWluIGJlbG93LlxyXG4gICAgICAgICAgICAgICAgaWYgKGsgPT0gMCkgY21wID0gayA9IDE7XHJcbiAgICAgICAgICAgICAgICBwcm9kID0geWQuc2xpY2UoKTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIHByb2RMID0gcHJvZC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgaWYgKHByb2RMIDwgcmVtTCkgcHJvZC51bnNoaWZ0KDApO1xyXG5cclxuICAgICAgICAgICAgICAvLyBTdWJ0cmFjdCBwcm9kdWN0IGZyb20gcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgIHN1YnRyYWN0KHJlbSwgcHJvZCwgcmVtTCwgYmFzZSk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIElmIHByb2R1Y3Qgd2FzIDwgcHJldmlvdXMgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgIGlmIChjbXAgPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIHJlbUwgPSByZW0ubGVuZ3RoO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIENvbXBhcmUgZGl2aXNvciBhbmQgbmV3IHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAgIGNtcCA9IGNvbXBhcmUoeWQsIHJlbSwgeUwsIHJlbUwpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIElmIGRpdmlzb3IgPCBuZXcgcmVtYWluZGVyLCBzdWJ0cmFjdCBkaXZpc29yIGZyb20gcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgICAgaWYgKGNtcCA8IDEpIHtcclxuICAgICAgICAgICAgICAgICAgaysrO1xyXG5cclxuICAgICAgICAgICAgICAgICAgLy8gU3VidHJhY3QgZGl2aXNvciBmcm9tIHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAgICAgc3VidHJhY3QocmVtLCB5TCA8IHJlbUwgPyB5eiA6IHlkLCByZW1MLCBiYXNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIHJlbUwgPSByZW0ubGVuZ3RoO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNtcCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgIGsrKztcclxuICAgICAgICAgICAgICByZW0gPSBbMF07XHJcbiAgICAgICAgICAgIH0gICAgLy8gaWYgY21wID09PSAxLCBrIHdpbGwgYmUgMFxyXG5cclxuICAgICAgICAgICAgLy8gQWRkIHRoZSBuZXh0IGRpZ2l0LCBrLCB0byB0aGUgcmVzdWx0IGFycmF5LlxyXG4gICAgICAgICAgICBxZFtpKytdID0gaztcclxuXHJcbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICBpZiAoY21wICYmIHJlbVswXSkge1xyXG4gICAgICAgICAgICAgIHJlbVtyZW1MKytdID0geGRbeGldIHx8IDA7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmVtID0gW3hkW3hpXV07XHJcbiAgICAgICAgICAgICAgcmVtTCA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9IHdoaWxlICgoeGkrKyA8IHhMIHx8IHJlbVswXSAhPT0gdm9pZCAwKSAmJiBzZC0tKTtcclxuXHJcbiAgICAgICAgICBtb3JlID0gcmVtWzBdICE9PSB2b2lkIDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBMZWFkaW5nIHplcm8/XHJcbiAgICAgICAgaWYgKCFxZFswXSkgcWQuc2hpZnQoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gbG9nQmFzZSBpcyAxIHdoZW4gZGl2aWRlIGlzIGJlaW5nIHVzZWQgZm9yIGJhc2UgY29udmVyc2lvbi5cclxuICAgICAgaWYgKGxvZ0Jhc2UgPT0gMSkge1xyXG4gICAgICAgIHEuZSA9IGU7XHJcbiAgICAgICAgaW5leGFjdCA9IG1vcmU7XHJcbiAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgIC8vIFRvIGNhbGN1bGF0ZSBxLmUsIGZpcnN0IGdldCB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBvZiBxZFswXS5cclxuICAgICAgICBmb3IgKGkgPSAxLCBrID0gcWRbMF07IGsgPj0gMTA7IGsgLz0gMTApIGkrKztcclxuICAgICAgICBxLmUgPSBpICsgZSAqIGxvZ0Jhc2UgLSAxO1xyXG5cclxuICAgICAgICBmaW5hbGlzZShxLCBkcCA/IHByICsgcS5lICsgMSA6IHByLCBybSwgbW9yZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBxO1xyXG4gICAgfTtcclxuICB9KSgpO1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSb3VuZCBgeGAgdG8gYHNkYCBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm1gLlxyXG4gICAqIENoZWNrIGZvciBvdmVyL3VuZGVyLWZsb3cuXHJcbiAgICovXHJcbiAgIGZ1bmN0aW9uIGZpbmFsaXNlKHgsIHNkLCBybSwgaXNUcnVuY2F0ZWQpIHtcclxuICAgIHZhciBkaWdpdHMsIGksIGosIGssIHJkLCByb3VuZFVwLCB3LCB4ZCwgeGRpLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICAvLyBEb24ndCByb3VuZCBpZiBzZCBpcyBudWxsIG9yIHVuZGVmaW5lZC5cclxuICAgIG91dDogaWYgKHNkICE9IG51bGwpIHtcclxuICAgICAgeGQgPSB4LmQ7XHJcblxyXG4gICAgICAvLyBJbmZpbml0eS9OYU4uXHJcbiAgICAgIGlmICgheGQpIHJldHVybiB4O1xyXG5cclxuICAgICAgLy8gcmQ6IHRoZSByb3VuZGluZyBkaWdpdCwgaS5lLiB0aGUgZGlnaXQgYWZ0ZXIgdGhlIGRpZ2l0IHRoYXQgbWF5IGJlIHJvdW5kZWQgdXAuXHJcbiAgICAgIC8vIHc6IHRoZSB3b3JkIG9mIHhkIGNvbnRhaW5pbmcgcmQsIGEgYmFzZSAxZTcgbnVtYmVyLlxyXG4gICAgICAvLyB4ZGk6IHRoZSBpbmRleCBvZiB3IHdpdGhpbiB4ZC5cclxuICAgICAgLy8gZGlnaXRzOiB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBvZiB3LlxyXG4gICAgICAvLyBpOiB3aGF0IHdvdWxkIGJlIHRoZSBpbmRleCBvZiByZCB3aXRoaW4gdyBpZiBhbGwgdGhlIG51bWJlcnMgd2VyZSA3IGRpZ2l0cyBsb25nIChpLmUuIGlmXHJcbiAgICAgIC8vIHRoZXkgaGFkIGxlYWRpbmcgemVyb3MpXHJcbiAgICAgIC8vIGo6IGlmID4gMCwgdGhlIGFjdHVhbCBpbmRleCBvZiByZCB3aXRoaW4gdyAoaWYgPCAwLCByZCBpcyBhIGxlYWRpbmcgemVybykuXHJcblxyXG4gICAgICAvLyBHZXQgdGhlIGxlbmd0aCBvZiB0aGUgZmlyc3Qgd29yZCBvZiB0aGUgZGlnaXRzIGFycmF5IHhkLlxyXG4gICAgICBmb3IgKGRpZ2l0cyA9IDEsIGsgPSB4ZFswXTsgayA+PSAxMDsgayAvPSAxMCkgZGlnaXRzKys7XHJcbiAgICAgIGkgPSBzZCAtIGRpZ2l0cztcclxuXHJcbiAgICAgIC8vIElzIHRoZSByb3VuZGluZyBkaWdpdCBpbiB0aGUgZmlyc3Qgd29yZCBvZiB4ZD9cclxuICAgICAgaWYgKGkgPCAwKSB7XHJcbiAgICAgICAgaSArPSBMT0dfQkFTRTtcclxuICAgICAgICBqID0gc2Q7XHJcbiAgICAgICAgdyA9IHhkW3hkaSA9IDBdO1xyXG5cclxuICAgICAgICAvLyBHZXQgdGhlIHJvdW5kaW5nIGRpZ2l0IGF0IGluZGV4IGogb2Ygdy5cclxuICAgICAgICByZCA9IHcgLyBtYXRocG93KDEwLCBkaWdpdHMgLSBqIC0gMSkgJSAxMCB8IDA7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgeGRpID0gTWF0aC5jZWlsKChpICsgMSkgLyBMT0dfQkFTRSk7XHJcbiAgICAgICAgayA9IHhkLmxlbmd0aDtcclxuICAgICAgICBpZiAoeGRpID49IGspIHtcclxuICAgICAgICAgIGlmIChpc1RydW5jYXRlZCkge1xyXG5cclxuICAgICAgICAgICAgLy8gTmVlZGVkIGJ5IGBuYXR1cmFsRXhwb25lbnRpYWxgLCBgbmF0dXJhbExvZ2FyaXRobWAgYW5kIGBzcXVhcmVSb290YC5cclxuICAgICAgICAgICAgZm9yICg7IGsrKyA8PSB4ZGk7KSB4ZC5wdXNoKDApO1xyXG4gICAgICAgICAgICB3ID0gcmQgPSAwO1xyXG4gICAgICAgICAgICBkaWdpdHMgPSAxO1xyXG4gICAgICAgICAgICBpICU9IExPR19CQVNFO1xyXG4gICAgICAgICAgICBqID0gaSAtIExPR19CQVNFICsgMTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGJyZWFrIG91dDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdyA9IGsgPSB4ZFt4ZGldO1xyXG5cclxuICAgICAgICAgIC8vIEdldCB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBvZiB3LlxyXG4gICAgICAgICAgZm9yIChkaWdpdHMgPSAxOyBrID49IDEwOyBrIC89IDEwKSBkaWdpdHMrKztcclxuXHJcbiAgICAgICAgICAvLyBHZXQgdGhlIGluZGV4IG9mIHJkIHdpdGhpbiB3LlxyXG4gICAgICAgICAgaSAlPSBMT0dfQkFTRTtcclxuXHJcbiAgICAgICAgICAvLyBHZXQgdGhlIGluZGV4IG9mIHJkIHdpdGhpbiB3LCBhZGp1c3RlZCBmb3IgbGVhZGluZyB6ZXJvcy5cclxuICAgICAgICAgIC8vIFRoZSBudW1iZXIgb2YgbGVhZGluZyB6ZXJvcyBvZiB3IGlzIGdpdmVuIGJ5IExPR19CQVNFIC0gZGlnaXRzLlxyXG4gICAgICAgICAgaiA9IGkgLSBMT0dfQkFTRSArIGRpZ2l0cztcclxuXHJcbiAgICAgICAgICAvLyBHZXQgdGhlIHJvdW5kaW5nIGRpZ2l0IGF0IGluZGV4IGogb2Ygdy5cclxuICAgICAgICAgIHJkID0gaiA8IDAgPyAwIDogdyAvIG1hdGhwb3coMTAsIGRpZ2l0cyAtIGogLSAxKSAlIDEwIHwgMDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEFyZSB0aGVyZSBhbnkgbm9uLXplcm8gZGlnaXRzIGFmdGVyIHRoZSByb3VuZGluZyBkaWdpdD9cclxuICAgICAgaXNUcnVuY2F0ZWQgPSBpc1RydW5jYXRlZCB8fCBzZCA8IDAgfHxcclxuICAgICAgICB4ZFt4ZGkgKyAxXSAhPT0gdm9pZCAwIHx8IChqIDwgMCA/IHcgOiB3ICUgbWF0aHBvdygxMCwgZGlnaXRzIC0gaiAtIDEpKTtcclxuXHJcbiAgICAgIC8vIFRoZSBleHByZXNzaW9uIGB3ICUgbWF0aHBvdygxMCwgZGlnaXRzIC0gaiAtIDEpYCByZXR1cm5zIGFsbCB0aGUgZGlnaXRzIG9mIHcgdG8gdGhlIHJpZ2h0XHJcbiAgICAgIC8vIG9mIHRoZSBkaWdpdCBhdCAobGVmdC10by1yaWdodCkgaW5kZXggaiwgZS5nLiBpZiB3IGlzIDkwODcxNCBhbmQgaiBpcyAyLCB0aGUgZXhwcmVzc2lvblxyXG4gICAgICAvLyB3aWxsIGdpdmUgNzE0LlxyXG5cclxuICAgICAgcm91bmRVcCA9IHJtIDwgNFxyXG4gICAgICAgID8gKHJkIHx8IGlzVHJ1bmNhdGVkKSAmJiAocm0gPT0gMCB8fCBybSA9PSAoeC5zIDwgMCA/IDMgOiAyKSlcclxuICAgICAgICA6IHJkID4gNSB8fCByZCA9PSA1ICYmIChybSA9PSA0IHx8IGlzVHJ1bmNhdGVkIHx8IHJtID09IDYgJiZcclxuXHJcbiAgICAgICAgICAvLyBDaGVjayB3aGV0aGVyIHRoZSBkaWdpdCB0byB0aGUgbGVmdCBvZiB0aGUgcm91bmRpbmcgZGlnaXQgaXMgb2RkLlxyXG4gICAgICAgICAgKChpID4gMCA/IGogPiAwID8gdyAvIG1hdGhwb3coMTAsIGRpZ2l0cyAtIGopIDogMCA6IHhkW3hkaSAtIDFdKSAlIDEwKSAmIDEgfHxcclxuICAgICAgICAgICAgcm0gPT0gKHgucyA8IDAgPyA4IDogNykpO1xyXG5cclxuICAgICAgaWYgKHNkIDwgMSB8fCAheGRbMF0pIHtcclxuICAgICAgICB4ZC5sZW5ndGggPSAwO1xyXG4gICAgICAgIGlmIChyb3VuZFVwKSB7XHJcblxyXG4gICAgICAgICAgLy8gQ29udmVydCBzZCB0byBkZWNpbWFsIHBsYWNlcy5cclxuICAgICAgICAgIHNkIC09IHguZSArIDE7XHJcblxyXG4gICAgICAgICAgLy8gMSwgMC4xLCAwLjAxLCAwLjAwMSwgMC4wMDAxIGV0Yy5cclxuICAgICAgICAgIHhkWzBdID0gbWF0aHBvdygxMCwgKExPR19CQVNFIC0gc2QgJSBMT0dfQkFTRSkgJSBMT0dfQkFTRSk7XHJcbiAgICAgICAgICB4LmUgPSAtc2QgfHwgMDtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vIFplcm8uXHJcbiAgICAgICAgICB4ZFswXSA9IHguZSA9IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4geDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUmVtb3ZlIGV4Y2VzcyBkaWdpdHMuXHJcbiAgICAgIGlmIChpID09IDApIHtcclxuICAgICAgICB4ZC5sZW5ndGggPSB4ZGk7XHJcbiAgICAgICAgayA9IDE7XHJcbiAgICAgICAgeGRpLS07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgeGQubGVuZ3RoID0geGRpICsgMTtcclxuICAgICAgICBrID0gbWF0aHBvdygxMCwgTE9HX0JBU0UgLSBpKTtcclxuXHJcbiAgICAgICAgLy8gRS5nLiA1NjcwMCBiZWNvbWVzIDU2MDAwIGlmIDcgaXMgdGhlIHJvdW5kaW5nIGRpZ2l0LlxyXG4gICAgICAgIC8vIGogPiAwIG1lYW5zIGkgPiBudW1iZXIgb2YgbGVhZGluZyB6ZXJvcyBvZiB3LlxyXG4gICAgICAgIHhkW3hkaV0gPSBqID4gMCA/ICh3IC8gbWF0aHBvdygxMCwgZGlnaXRzIC0gaikgJSBtYXRocG93KDEwLCBqKSB8IDApICogayA6IDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChyb3VuZFVwKSB7XHJcbiAgICAgICAgZm9yICg7Oykge1xyXG5cclxuICAgICAgICAgIC8vIElzIHRoZSBkaWdpdCB0byBiZSByb3VuZGVkIHVwIGluIHRoZSBmaXJzdCB3b3JkIG9mIHhkP1xyXG4gICAgICAgICAgaWYgKHhkaSA9PSAwKSB7XHJcblxyXG4gICAgICAgICAgICAvLyBpIHdpbGwgYmUgdGhlIGxlbmd0aCBvZiB4ZFswXSBiZWZvcmUgayBpcyBhZGRlZC5cclxuICAgICAgICAgICAgZm9yIChpID0gMSwgaiA9IHhkWzBdOyBqID49IDEwOyBqIC89IDEwKSBpKys7XHJcbiAgICAgICAgICAgIGogPSB4ZFswXSArPSBrO1xyXG4gICAgICAgICAgICBmb3IgKGsgPSAxOyBqID49IDEwOyBqIC89IDEwKSBrKys7XHJcblxyXG4gICAgICAgICAgICAvLyBpZiBpICE9IGsgdGhlIGxlbmd0aCBoYXMgaW5jcmVhc2VkLlxyXG4gICAgICAgICAgICBpZiAoaSAhPSBrKSB7XHJcbiAgICAgICAgICAgICAgeC5lKys7XHJcbiAgICAgICAgICAgICAgaWYgKHhkWzBdID09IEJBU0UpIHhkWzBdID0gMTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB4ZFt4ZGldICs9IGs7XHJcbiAgICAgICAgICAgIGlmICh4ZFt4ZGldICE9IEJBU0UpIGJyZWFrO1xyXG4gICAgICAgICAgICB4ZFt4ZGktLV0gPSAwO1xyXG4gICAgICAgICAgICBrID0gMTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFJlbW92ZSB0cmFpbGluZyB6ZXJvcy5cclxuICAgICAgZm9yIChpID0geGQubGVuZ3RoOyB4ZFstLWldID09PSAwOykgeGQucG9wKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGV4dGVybmFsKSB7XHJcblxyXG4gICAgICAvLyBPdmVyZmxvdz9cclxuICAgICAgaWYgKHguZSA+IEN0b3IubWF4RSkge1xyXG5cclxuICAgICAgICAvLyBJbmZpbml0eS5cclxuICAgICAgICB4LmQgPSBudWxsO1xyXG4gICAgICAgIHguZSA9IE5hTjtcclxuXHJcbiAgICAgIC8vIFVuZGVyZmxvdz9cclxuICAgICAgfSBlbHNlIGlmICh4LmUgPCBDdG9yLm1pbkUpIHtcclxuXHJcbiAgICAgICAgLy8gWmVyby5cclxuICAgICAgICB4LmUgPSAwO1xyXG4gICAgICAgIHguZCA9IFswXTtcclxuICAgICAgICAvLyBDdG9yLnVuZGVyZmxvdyA9IHRydWU7XHJcbiAgICAgIH0gLy8gZWxzZSBDdG9yLnVuZGVyZmxvdyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB4O1xyXG4gIH1cclxuXHJcblxyXG4gIGZ1bmN0aW9uIGZpbml0ZVRvU3RyaW5nKHgsIGlzRXhwLCBzZCkge1xyXG4gICAgaWYgKCF4LmlzRmluaXRlKCkpIHJldHVybiBub25GaW5pdGVUb1N0cmluZyh4KTtcclxuICAgIHZhciBrLFxyXG4gICAgICBlID0geC5lLFxyXG4gICAgICBzdHIgPSBkaWdpdHNUb1N0cmluZyh4LmQpLFxyXG4gICAgICBsZW4gPSBzdHIubGVuZ3RoO1xyXG5cclxuICAgIGlmIChpc0V4cCkge1xyXG4gICAgICBpZiAoc2QgJiYgKGsgPSBzZCAtIGxlbikgPiAwKSB7XHJcbiAgICAgICAgc3RyID0gc3RyLmNoYXJBdCgwKSArICcuJyArIHN0ci5zbGljZSgxKSArIGdldFplcm9TdHJpbmcoayk7XHJcbiAgICAgIH0gZWxzZSBpZiAobGVuID4gMSkge1xyXG4gICAgICAgIHN0ciA9IHN0ci5jaGFyQXQoMCkgKyAnLicgKyBzdHIuc2xpY2UoMSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHN0ciA9IHN0ciArICh4LmUgPCAwID8gJ2UnIDogJ2UrJykgKyB4LmU7XHJcbiAgICB9IGVsc2UgaWYgKGUgPCAwKSB7XHJcbiAgICAgIHN0ciA9ICcwLicgKyBnZXRaZXJvU3RyaW5nKC1lIC0gMSkgKyBzdHI7XHJcbiAgICAgIGlmIChzZCAmJiAoayA9IHNkIC0gbGVuKSA+IDApIHN0ciArPSBnZXRaZXJvU3RyaW5nKGspO1xyXG4gICAgfSBlbHNlIGlmIChlID49IGxlbikge1xyXG4gICAgICBzdHIgKz0gZ2V0WmVyb1N0cmluZyhlICsgMSAtIGxlbik7XHJcbiAgICAgIGlmIChzZCAmJiAoayA9IHNkIC0gZSAtIDEpID4gMCkgc3RyID0gc3RyICsgJy4nICsgZ2V0WmVyb1N0cmluZyhrKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICgoayA9IGUgKyAxKSA8IGxlbikgc3RyID0gc3RyLnNsaWNlKDAsIGspICsgJy4nICsgc3RyLnNsaWNlKGspO1xyXG4gICAgICBpZiAoc2QgJiYgKGsgPSBzZCAtIGxlbikgPiAwKSB7XHJcbiAgICAgICAgaWYgKGUgKyAxID09PSBsZW4pIHN0ciArPSAnLic7XHJcbiAgICAgICAgc3RyICs9IGdldFplcm9TdHJpbmcoayk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3RyO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIENhbGN1bGF0ZSB0aGUgYmFzZSAxMCBleHBvbmVudCBmcm9tIHRoZSBiYXNlIDFlNyBleHBvbmVudC5cclxuICBmdW5jdGlvbiBnZXRCYXNlMTBFeHBvbmVudChkaWdpdHMsIGUpIHtcclxuICAgIHZhciB3ID0gZGlnaXRzWzBdO1xyXG5cclxuICAgIC8vIEFkZCB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBvZiB0aGUgZmlyc3Qgd29yZCBvZiB0aGUgZGlnaXRzIGFycmF5LlxyXG4gICAgZm9yICggZSAqPSBMT0dfQkFTRTsgdyA+PSAxMDsgdyAvPSAxMCkgZSsrO1xyXG4gICAgcmV0dXJuIGU7XHJcbiAgfVxyXG5cclxuXHJcbiAgZnVuY3Rpb24gZ2V0TG4xMChDdG9yLCBzZCwgcHIpIHtcclxuICAgIGlmIChzZCA+IExOMTBfUFJFQ0lTSU9OKSB7XHJcblxyXG4gICAgICAvLyBSZXNldCBnbG9iYWwgc3RhdGUgaW4gY2FzZSB0aGUgZXhjZXB0aW9uIGlzIGNhdWdodC5cclxuICAgICAgZXh0ZXJuYWwgPSB0cnVlO1xyXG4gICAgICBpZiAocHIpIEN0b3IucHJlY2lzaW9uID0gcHI7XHJcbiAgICAgIHRocm93IEVycm9yKHByZWNpc2lvbkxpbWl0RXhjZWVkZWQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZpbmFsaXNlKG5ldyBDdG9yKExOMTApLCBzZCwgMSwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZnVuY3Rpb24gZ2V0UGkoQ3Rvciwgc2QsIHJtKSB7XHJcbiAgICBpZiAoc2QgPiBQSV9QUkVDSVNJT04pIHRocm93IEVycm9yKHByZWNpc2lvbkxpbWl0RXhjZWVkZWQpO1xyXG4gICAgcmV0dXJuIGZpbmFsaXNlKG5ldyBDdG9yKFBJKSwgc2QsIHJtLCB0cnVlKTtcclxuICB9XHJcblxyXG5cclxuICBmdW5jdGlvbiBnZXRQcmVjaXNpb24oZGlnaXRzKSB7XHJcbiAgICB2YXIgdyA9IGRpZ2l0cy5sZW5ndGggLSAxLFxyXG4gICAgICBsZW4gPSB3ICogTE9HX0JBU0UgKyAxO1xyXG5cclxuICAgIHcgPSBkaWdpdHNbd107XHJcblxyXG4gICAgLy8gSWYgbm9uLXplcm8uLi5cclxuICAgIGlmICh3KSB7XHJcblxyXG4gICAgICAvLyBTdWJ0cmFjdCB0aGUgbnVtYmVyIG9mIHRyYWlsaW5nIHplcm9zIG9mIHRoZSBsYXN0IHdvcmQuXHJcbiAgICAgIGZvciAoOyB3ICUgMTAgPT0gMDsgdyAvPSAxMCkgbGVuLS07XHJcblxyXG4gICAgICAvLyBBZGQgdGhlIG51bWJlciBvZiBkaWdpdHMgb2YgdGhlIGZpcnN0IHdvcmQuXHJcbiAgICAgIGZvciAodyA9IGRpZ2l0c1swXTsgdyA+PSAxMDsgdyAvPSAxMCkgbGVuKys7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGxlbjtcclxuICB9XHJcblxyXG5cclxuICBmdW5jdGlvbiBnZXRaZXJvU3RyaW5nKGspIHtcclxuICAgIHZhciB6cyA9ICcnO1xyXG4gICAgZm9yICg7IGstLTspIHpzICs9ICcwJztcclxuICAgIHJldHVybiB6cztcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiBEZWNpbWFsIGB4YCB0byB0aGUgcG93ZXIgYG5gLCB3aGVyZSBgbmAgaXMgYW5cclxuICAgKiBpbnRlZ2VyIG9mIHR5cGUgbnVtYmVyLlxyXG4gICAqXHJcbiAgICogSW1wbGVtZW50cyAnZXhwb25lbnRpYXRpb24gYnkgc3F1YXJpbmcnLiBDYWxsZWQgYnkgYHBvd2AgYW5kIGBwYXJzZU90aGVyYC5cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGludFBvdyhDdG9yLCB4LCBuLCBwcikge1xyXG4gICAgdmFyIGlzVHJ1bmNhdGVkLFxyXG4gICAgICByID0gbmV3IEN0b3IoMSksXHJcblxyXG4gICAgICAvLyBNYXggbiBvZiA5MDA3MTk5MjU0NzQwOTkxIHRha2VzIDUzIGxvb3AgaXRlcmF0aW9ucy5cclxuICAgICAgLy8gTWF4aW11bSBkaWdpdHMgYXJyYXkgbGVuZ3RoOyBsZWF2ZXMgWzI4LCAzNF0gZ3VhcmQgZGlnaXRzLlxyXG4gICAgICBrID0gTWF0aC5jZWlsKHByIC8gTE9HX0JBU0UgKyA0KTtcclxuXHJcbiAgICBleHRlcm5hbCA9IGZhbHNlO1xyXG5cclxuICAgIGZvciAoOzspIHtcclxuICAgICAgaWYgKG4gJSAyKSB7XHJcbiAgICAgICAgciA9IHIudGltZXMoeCk7XHJcbiAgICAgICAgaWYgKHRydW5jYXRlKHIuZCwgaykpIGlzVHJ1bmNhdGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbiA9IG1hdGhmbG9vcihuIC8gMik7XHJcbiAgICAgIGlmIChuID09PSAwKSB7XHJcblxyXG4gICAgICAgIC8vIFRvIGVuc3VyZSBjb3JyZWN0IHJvdW5kaW5nIHdoZW4gci5kIGlzIHRydW5jYXRlZCwgaW5jcmVtZW50IHRoZSBsYXN0IHdvcmQgaWYgaXQgaXMgemVyby5cclxuICAgICAgICBuID0gci5kLmxlbmd0aCAtIDE7XHJcbiAgICAgICAgaWYgKGlzVHJ1bmNhdGVkICYmIHIuZFtuXSA9PT0gMCkgKytyLmRbbl07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHggPSB4LnRpbWVzKHgpO1xyXG4gICAgICB0cnVuY2F0ZSh4LmQsIGspO1xyXG4gICAgfVxyXG5cclxuICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gcjtcclxuICB9XHJcblxyXG5cclxuICBmdW5jdGlvbiBpc09kZChuKSB7XHJcbiAgICByZXR1cm4gbi5kW24uZC5sZW5ndGggLSAxXSAmIDE7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBIYW5kbGUgYG1heGAgYW5kIGBtaW5gLiBgbHRndGAgaXMgJ2x0JyBvciAnZ3QnLlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIG1heE9yTWluKEN0b3IsIGFyZ3MsIGx0Z3QpIHtcclxuICAgIHZhciB5LFxyXG4gICAgICB4ID0gbmV3IEN0b3IoYXJnc1swXSksXHJcbiAgICAgIGkgPSAwO1xyXG5cclxuICAgIGZvciAoOyArK2kgPCBhcmdzLmxlbmd0aDspIHtcclxuICAgICAgeSA9IG5ldyBDdG9yKGFyZ3NbaV0pO1xyXG4gICAgICBpZiAoIXkucykge1xyXG4gICAgICAgIHggPSB5O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9IGVsc2UgaWYgKHhbbHRndF0oeSkpIHtcclxuICAgICAgICB4ID0geTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB4O1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIG5hdHVyYWwgZXhwb25lbnRpYWwgb2YgYHhgIHJvdW5kZWQgdG8gYHNkYCBzaWduaWZpY2FudFxyXG4gICAqIGRpZ2l0cy5cclxuICAgKlxyXG4gICAqIFRheWxvci9NYWNsYXVyaW4gc2VyaWVzLlxyXG4gICAqXHJcbiAgICogZXhwKHgpID0geF4wLzAhICsgeF4xLzEhICsgeF4yLzIhICsgeF4zLzMhICsgLi4uXHJcbiAgICpcclxuICAgKiBBcmd1bWVudCByZWR1Y3Rpb246XHJcbiAgICogICBSZXBlYXQgeCA9IHggLyAzMiwgayArPSA1LCB1bnRpbCB8eHwgPCAwLjFcclxuICAgKiAgIGV4cCh4KSA9IGV4cCh4IC8gMl5rKV4oMl5rKVxyXG4gICAqXHJcbiAgICogUHJldmlvdXNseSwgdGhlIGFyZ3VtZW50IHdhcyBpbml0aWFsbHkgcmVkdWNlZCBieVxyXG4gICAqIGV4cCh4KSA9IGV4cChyKSAqIDEwXmsgIHdoZXJlIHIgPSB4IC0gayAqIGxuMTAsIGsgPSBmbG9vcih4IC8gbG4xMClcclxuICAgKiB0byBmaXJzdCBwdXQgciBpbiB0aGUgcmFuZ2UgWzAsIGxuMTBdLCBiZWZvcmUgZGl2aWRpbmcgYnkgMzIgdW50aWwgfHh8IDwgMC4xLCBidXQgdGhpcyB3YXNcclxuICAgKiBmb3VuZCB0byBiZSBzbG93ZXIgdGhhbiBqdXN0IGRpdmlkaW5nIHJlcGVhdGVkbHkgYnkgMzIgYXMgYWJvdmUuXHJcbiAgICpcclxuICAgKiBNYXggaW50ZWdlciBhcmd1bWVudDogZXhwKCcyMDcyMzI2NTgzNjk0NjQxMycpID0gNi4zZSs5MDAwMDAwMDAwMDAwMDAwXHJcbiAgICogTWluIGludGVnZXIgYXJndW1lbnQ6IGV4cCgnLTIwNzIzMjY1ODM2OTQ2NDExJykgPSAxLjJlLTkwMDAwMDAwMDAwMDAwMDBcclxuICAgKiAoTWF0aCBvYmplY3QgaW50ZWdlciBtaW4vbWF4OiBNYXRoLmV4cCg3MDkpID0gOC4yZSszMDcsIE1hdGguZXhwKC03NDUpID0gNWUtMzI0KVxyXG4gICAqXHJcbiAgICogIGV4cChJbmZpbml0eSkgID0gSW5maW5pdHlcclxuICAgKiAgZXhwKC1JbmZpbml0eSkgPSAwXHJcbiAgICogIGV4cChOYU4pICAgICAgID0gTmFOXHJcbiAgICogIGV4cCjCsTApICAgICAgICA9IDFcclxuICAgKlxyXG4gICAqICBleHAoeCkgaXMgbm9uLXRlcm1pbmF0aW5nIGZvciBhbnkgZmluaXRlLCBub24temVybyB4LlxyXG4gICAqXHJcbiAgICogIFRoZSByZXN1bHQgd2lsbCBhbHdheXMgYmUgY29ycmVjdGx5IHJvdW5kZWQuXHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBuYXR1cmFsRXhwb25lbnRpYWwoeCwgc2QpIHtcclxuICAgIHZhciBkZW5vbWluYXRvciwgZ3VhcmQsIGosIHBvdywgc3VtLCB0LCB3cHIsXHJcbiAgICAgIHJlcCA9IDAsXHJcbiAgICAgIGkgPSAwLFxyXG4gICAgICBrID0gMCxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3IsXHJcbiAgICAgIHJtID0gQ3Rvci5yb3VuZGluZyxcclxuICAgICAgcHIgPSBDdG9yLnByZWNpc2lvbjtcclxuXHJcbiAgICAvLyAwL05hTi9JbmZpbml0eT9cclxuICAgIGlmICgheC5kIHx8ICF4LmRbMF0gfHwgeC5lID4gMTcpIHtcclxuXHJcbiAgICAgIHJldHVybiBuZXcgQ3Rvcih4LmRcclxuICAgICAgICA/ICF4LmRbMF0gPyAxIDogeC5zIDwgMCA/IDAgOiAxIC8gMFxyXG4gICAgICAgIDogeC5zID8geC5zIDwgMCA/IDAgOiB4IDogMCAvIDApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzZCA9PSBudWxsKSB7XHJcbiAgICAgIGV4dGVybmFsID0gZmFsc2U7XHJcbiAgICAgIHdwciA9IHByO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgd3ByID0gc2Q7XHJcbiAgICB9XHJcblxyXG4gICAgdCA9IG5ldyBDdG9yKDAuMDMxMjUpO1xyXG5cclxuICAgIC8vIHdoaWxlIGFicyh4KSA+PSAwLjFcclxuICAgIHdoaWxlICh4LmUgPiAtMikge1xyXG5cclxuICAgICAgLy8geCA9IHggLyAyXjVcclxuICAgICAgeCA9IHgudGltZXModCk7XHJcbiAgICAgIGsgKz0gNTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBVc2UgMiAqIGxvZzEwKDJeaykgKyA1IChlbXBpcmljYWxseSBkZXJpdmVkKSB0byBlc3RpbWF0ZSB0aGUgaW5jcmVhc2UgaW4gcHJlY2lzaW9uXHJcbiAgICAvLyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoZSBmaXJzdCA0IHJvdW5kaW5nIGRpZ2l0cyBhcmUgY29ycmVjdC5cclxuICAgIGd1YXJkID0gTWF0aC5sb2cobWF0aHBvdygyLCBrKSkgLyBNYXRoLkxOMTAgKiAyICsgNSB8IDA7XHJcbiAgICB3cHIgKz0gZ3VhcmQ7XHJcbiAgICBkZW5vbWluYXRvciA9IHBvdyA9IHN1bSA9IG5ldyBDdG9yKDEpO1xyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSB3cHI7XHJcblxyXG4gICAgZm9yICg7Oykge1xyXG4gICAgICBwb3cgPSBmaW5hbGlzZShwb3cudGltZXMoeCksIHdwciwgMSk7XHJcbiAgICAgIGRlbm9taW5hdG9yID0gZGVub21pbmF0b3IudGltZXMoKytpKTtcclxuICAgICAgdCA9IHN1bS5wbHVzKGRpdmlkZShwb3csIGRlbm9taW5hdG9yLCB3cHIsIDEpKTtcclxuXHJcbiAgICAgIGlmIChkaWdpdHNUb1N0cmluZyh0LmQpLnNsaWNlKDAsIHdwcikgPT09IGRpZ2l0c1RvU3RyaW5nKHN1bS5kKS5zbGljZSgwLCB3cHIpKSB7XHJcbiAgICAgICAgaiA9IGs7XHJcbiAgICAgICAgd2hpbGUgKGotLSkgc3VtID0gZmluYWxpc2Uoc3VtLnRpbWVzKHN1bSksIHdwciwgMSk7XHJcblxyXG4gICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgZmlyc3QgNCByb3VuZGluZyBkaWdpdHMgYXJlIFs0OV05OTkuXHJcbiAgICAgICAgLy8gSWYgc28sIHJlcGVhdCB0aGUgc3VtbWF0aW9uIHdpdGggYSBoaWdoZXIgcHJlY2lzaW9uLCBvdGhlcndpc2VcclxuICAgICAgICAvLyBlLmcuIHdpdGggcHJlY2lzaW9uOiAxOCwgcm91bmRpbmc6IDFcclxuICAgICAgICAvLyBleHAoMTguNDA0MjcyNDYyNTk1MDM0MDgzNTY3NzkzOTE5ODQzNzYxKSA9IDk4MzcyNTYwLjEyMjk5OTk5OTkgKHNob3VsZCBiZSA5ODM3MjU2MC4xMjMpXHJcbiAgICAgICAgLy8gYHdwciAtIGd1YXJkYCBpcyB0aGUgaW5kZXggb2YgZmlyc3Qgcm91bmRpbmcgZGlnaXQuXHJcbiAgICAgICAgaWYgKHNkID09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICBpZiAocmVwIDwgMyAmJiBjaGVja1JvdW5kaW5nRGlnaXRzKHN1bS5kLCB3cHIgLSBndWFyZCwgcm0sIHJlcCkpIHtcclxuICAgICAgICAgICAgQ3Rvci5wcmVjaXNpb24gPSB3cHIgKz0gMTA7XHJcbiAgICAgICAgICAgIGRlbm9taW5hdG9yID0gcG93ID0gdCA9IG5ldyBDdG9yKDEpO1xyXG4gICAgICAgICAgICBpID0gMDtcclxuICAgICAgICAgICAgcmVwKys7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gZmluYWxpc2Uoc3VtLCBDdG9yLnByZWNpc2lvbiA9IHByLCBybSwgZXh0ZXJuYWwgPSB0cnVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgQ3Rvci5wcmVjaXNpb24gPSBwcjtcclxuICAgICAgICAgIHJldHVybiBzdW07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBzdW0gPSB0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIG5hdHVyYWwgbG9nYXJpdGhtIG9mIGB4YCByb3VuZGVkIHRvIGBzZGAgc2lnbmlmaWNhbnRcclxuICAgKiBkaWdpdHMuXHJcbiAgICpcclxuICAgKiAgbG4oLW4pICAgICAgICA9IE5hTlxyXG4gICAqICBsbigwKSAgICAgICAgID0gLUluZmluaXR5XHJcbiAgICogIGxuKC0wKSAgICAgICAgPSAtSW5maW5pdHlcclxuICAgKiAgbG4oMSkgICAgICAgICA9IDBcclxuICAgKiAgbG4oSW5maW5pdHkpICA9IEluZmluaXR5XHJcbiAgICogIGxuKC1JbmZpbml0eSkgPSBOYU5cclxuICAgKiAgbG4oTmFOKSAgICAgICA9IE5hTlxyXG4gICAqXHJcbiAgICogIGxuKG4pIChuICE9IDEpIGlzIG5vbi10ZXJtaW5hdGluZy5cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIG5hdHVyYWxMb2dhcml0aG0oeSwgc2QpIHtcclxuICAgIHZhciBjLCBjMCwgZGVub21pbmF0b3IsIGUsIG51bWVyYXRvciwgcmVwLCBzdW0sIHQsIHdwciwgeDEsIHgyLFxyXG4gICAgICBuID0gMSxcclxuICAgICAgZ3VhcmQgPSAxMCxcclxuICAgICAgeCA9IHksXHJcbiAgICAgIHhkID0geC5kLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcixcclxuICAgICAgcm0gPSBDdG9yLnJvdW5kaW5nLFxyXG4gICAgICBwciA9IEN0b3IucHJlY2lzaW9uO1xyXG5cclxuICAgIC8vIElzIHggbmVnYXRpdmUgb3IgSW5maW5pdHksIE5hTiwgMCBvciAxP1xyXG4gICAgaWYgKHgucyA8IDAgfHwgIXhkIHx8ICF4ZFswXSB8fCAheC5lICYmIHhkWzBdID09IDEgJiYgeGQubGVuZ3RoID09IDEpIHtcclxuICAgICAgcmV0dXJuIG5ldyBDdG9yKHhkICYmICF4ZFswXSA/IC0xIC8gMCA6IHgucyAhPSAxID8gTmFOIDogeGQgPyAwIDogeCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNkID09IG51bGwpIHtcclxuICAgICAgZXh0ZXJuYWwgPSBmYWxzZTtcclxuICAgICAgd3ByID0gcHI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB3cHIgPSBzZDtcclxuICAgIH1cclxuXHJcbiAgICBDdG9yLnByZWNpc2lvbiA9IHdwciArPSBndWFyZDtcclxuICAgIGMgPSBkaWdpdHNUb1N0cmluZyh4ZCk7XHJcbiAgICBjMCA9IGMuY2hhckF0KDApO1xyXG5cclxuICAgIGlmIChNYXRoLmFicyhlID0geC5lKSA8IDEuNWUxNSkge1xyXG5cclxuICAgICAgLy8gQXJndW1lbnQgcmVkdWN0aW9uLlxyXG4gICAgICAvLyBUaGUgc2VyaWVzIGNvbnZlcmdlcyBmYXN0ZXIgdGhlIGNsb3NlciB0aGUgYXJndW1lbnQgaXMgdG8gMSwgc28gdXNpbmdcclxuICAgICAgLy8gbG4oYV5iKSA9IGIgKiBsbihhKSwgICBsbihhKSA9IGxuKGFeYikgLyBiXHJcbiAgICAgIC8vIG11bHRpcGx5IHRoZSBhcmd1bWVudCBieSBpdHNlbGYgdW50aWwgdGhlIGxlYWRpbmcgZGlnaXRzIG9mIHRoZSBzaWduaWZpY2FuZCBhcmUgNywgOCwgOSxcclxuICAgICAgLy8gMTAsIDExLCAxMiBvciAxMywgcmVjb3JkaW5nIHRoZSBudW1iZXIgb2YgbXVsdGlwbGljYXRpb25zIHNvIHRoZSBzdW0gb2YgdGhlIHNlcmllcyBjYW5cclxuICAgICAgLy8gbGF0ZXIgYmUgZGl2aWRlZCBieSB0aGlzIG51bWJlciwgdGhlbiBzZXBhcmF0ZSBvdXQgdGhlIHBvd2VyIG9mIDEwIHVzaW5nXHJcbiAgICAgIC8vIGxuKGEqMTBeYikgPSBsbihhKSArIGIqbG4oMTApLlxyXG5cclxuICAgICAgLy8gbWF4IG4gaXMgMjEgKGdpdmVzIDAuOSwgMS4wIG9yIDEuMSkgKDllMTUgLyAyMSA9IDQuMmUxNCkuXHJcbiAgICAgIC8vd2hpbGUgKGMwIDwgOSAmJiBjMCAhPSAxIHx8IGMwID09IDEgJiYgYy5jaGFyQXQoMSkgPiAxKSB7XHJcbiAgICAgIC8vIG1heCBuIGlzIDYgKGdpdmVzIDAuNyAtIDEuMylcclxuICAgICAgd2hpbGUgKGMwIDwgNyAmJiBjMCAhPSAxIHx8IGMwID09IDEgJiYgYy5jaGFyQXQoMSkgPiAzKSB7XHJcbiAgICAgICAgeCA9IHgudGltZXMoeSk7XHJcbiAgICAgICAgYyA9IGRpZ2l0c1RvU3RyaW5nKHguZCk7XHJcbiAgICAgICAgYzAgPSBjLmNoYXJBdCgwKTtcclxuICAgICAgICBuKys7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGUgPSB4LmU7XHJcblxyXG4gICAgICBpZiAoYzAgPiAxKSB7XHJcbiAgICAgICAgeCA9IG5ldyBDdG9yKCcwLicgKyBjKTtcclxuICAgICAgICBlKys7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgeCA9IG5ldyBDdG9yKGMwICsgJy4nICsgYy5zbGljZSgxKSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAvLyBUaGUgYXJndW1lbnQgcmVkdWN0aW9uIG1ldGhvZCBhYm92ZSBtYXkgcmVzdWx0IGluIG92ZXJmbG93IGlmIHRoZSBhcmd1bWVudCB5IGlzIGEgbWFzc2l2ZVxyXG4gICAgICAvLyBudW1iZXIgd2l0aCBleHBvbmVudCA+PSAxNTAwMDAwMDAwMDAwMDAwICg5ZTE1IC8gNiA9IDEuNWUxNSksIHNvIGluc3RlYWQgcmVjYWxsIHRoaXNcclxuICAgICAgLy8gZnVuY3Rpb24gdXNpbmcgbG4oeCoxMF5lKSA9IGxuKHgpICsgZSpsbigxMCkuXHJcbiAgICAgIHQgPSBnZXRMbjEwKEN0b3IsIHdwciArIDIsIHByKS50aW1lcyhlICsgJycpO1xyXG4gICAgICB4ID0gbmF0dXJhbExvZ2FyaXRobShuZXcgQ3RvcihjMCArICcuJyArIGMuc2xpY2UoMSkpLCB3cHIgLSBndWFyZCkucGx1cyh0KTtcclxuICAgICAgQ3Rvci5wcmVjaXNpb24gPSBwcjtcclxuXHJcbiAgICAgIHJldHVybiBzZCA9PSBudWxsID8gZmluYWxpc2UoeCwgcHIsIHJtLCBleHRlcm5hbCA9IHRydWUpIDogeDtcclxuICAgIH1cclxuXHJcbiAgICAvLyB4MSBpcyB4IHJlZHVjZWQgdG8gYSB2YWx1ZSBuZWFyIDEuXHJcbiAgICB4MSA9IHg7XHJcblxyXG4gICAgLy8gVGF5bG9yIHNlcmllcy5cclxuICAgIC8vIGxuKHkpID0gbG4oKDEgKyB4KS8oMSAtIHgpKSA9IDIoeCArIHheMy8zICsgeF41LzUgKyB4XjcvNyArIC4uLilcclxuICAgIC8vIHdoZXJlIHggPSAoeSAtIDEpLyh5ICsgMSkgICAgKHx4fCA8IDEpXHJcbiAgICBzdW0gPSBudW1lcmF0b3IgPSB4ID0gZGl2aWRlKHgubWludXMoMSksIHgucGx1cygxKSwgd3ByLCAxKTtcclxuICAgIHgyID0gZmluYWxpc2UoeC50aW1lcyh4KSwgd3ByLCAxKTtcclxuICAgIGRlbm9taW5hdG9yID0gMztcclxuXHJcbiAgICBmb3IgKDs7KSB7XHJcbiAgICAgIG51bWVyYXRvciA9IGZpbmFsaXNlKG51bWVyYXRvci50aW1lcyh4MiksIHdwciwgMSk7XHJcbiAgICAgIHQgPSBzdW0ucGx1cyhkaXZpZGUobnVtZXJhdG9yLCBuZXcgQ3RvcihkZW5vbWluYXRvciksIHdwciwgMSkpO1xyXG5cclxuICAgICAgaWYgKGRpZ2l0c1RvU3RyaW5nKHQuZCkuc2xpY2UoMCwgd3ByKSA9PT0gZGlnaXRzVG9TdHJpbmcoc3VtLmQpLnNsaWNlKDAsIHdwcikpIHtcclxuICAgICAgICBzdW0gPSBzdW0udGltZXMoMik7XHJcblxyXG4gICAgICAgIC8vIFJldmVyc2UgdGhlIGFyZ3VtZW50IHJlZHVjdGlvbi4gQ2hlY2sgdGhhdCBlIGlzIG5vdCAwIGJlY2F1c2UsIGJlc2lkZXMgcHJldmVudGluZyBhblxyXG4gICAgICAgIC8vIHVubmVjZXNzYXJ5IGNhbGN1bGF0aW9uLCAtMCArIDAgPSArMCBhbmQgdG8gZW5zdXJlIGNvcnJlY3Qgcm91bmRpbmcgLTAgbmVlZHMgdG8gc3RheSAtMC5cclxuICAgICAgICBpZiAoZSAhPT0gMCkgc3VtID0gc3VtLnBsdXMoZ2V0TG4xMChDdG9yLCB3cHIgKyAyLCBwcikudGltZXMoZSArICcnKSk7XHJcbiAgICAgICAgc3VtID0gZGl2aWRlKHN1bSwgbmV3IEN0b3IobiksIHdwciwgMSk7XHJcblxyXG4gICAgICAgIC8vIElzIHJtID4gMyBhbmQgdGhlIGZpcnN0IDQgcm91bmRpbmcgZGlnaXRzIDQ5OTksIG9yIHJtIDwgNCAob3IgdGhlIHN1bW1hdGlvbiBoYXNcclxuICAgICAgICAvLyBiZWVuIHJlcGVhdGVkIHByZXZpb3VzbHkpIGFuZCB0aGUgZmlyc3QgNCByb3VuZGluZyBkaWdpdHMgOTk5OT9cclxuICAgICAgICAvLyBJZiBzbywgcmVzdGFydCB0aGUgc3VtbWF0aW9uIHdpdGggYSBoaWdoZXIgcHJlY2lzaW9uLCBvdGhlcndpc2VcclxuICAgICAgICAvLyBlLmcuIHdpdGggcHJlY2lzaW9uOiAxMiwgcm91bmRpbmc6IDFcclxuICAgICAgICAvLyBsbigxMzU1MjAwMjguNjEyNjA5MTcxNDI2NTM4MTUzMykgPSAxOC43MjQ2Mjk5OTk5IHdoZW4gaXQgc2hvdWxkIGJlIDE4LjcyNDYzLlxyXG4gICAgICAgIC8vIGB3cHIgLSBndWFyZGAgaXMgdGhlIGluZGV4IG9mIGZpcnN0IHJvdW5kaW5nIGRpZ2l0LlxyXG4gICAgICAgIGlmIChzZCA9PSBudWxsKSB7XHJcbiAgICAgICAgICBpZiAoY2hlY2tSb3VuZGluZ0RpZ2l0cyhzdW0uZCwgd3ByIC0gZ3VhcmQsIHJtLCByZXApKSB7XHJcbiAgICAgICAgICAgIEN0b3IucHJlY2lzaW9uID0gd3ByICs9IGd1YXJkO1xyXG4gICAgICAgICAgICB0ID0gbnVtZXJhdG9yID0geCA9IGRpdmlkZSh4MS5taW51cygxKSwgeDEucGx1cygxKSwgd3ByLCAxKTtcclxuICAgICAgICAgICAgeDIgPSBmaW5hbGlzZSh4LnRpbWVzKHgpLCB3cHIsIDEpO1xyXG4gICAgICAgICAgICBkZW5vbWluYXRvciA9IHJlcCA9IDE7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gZmluYWxpc2Uoc3VtLCBDdG9yLnByZWNpc2lvbiA9IHByLCBybSwgZXh0ZXJuYWwgPSB0cnVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgQ3Rvci5wcmVjaXNpb24gPSBwcjtcclxuICAgICAgICAgIHJldHVybiBzdW07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBzdW0gPSB0O1xyXG4gICAgICBkZW5vbWluYXRvciArPSAyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIMKxSW5maW5pdHksIE5hTi5cclxuICBmdW5jdGlvbiBub25GaW5pdGVUb1N0cmluZyh4KSB7XHJcbiAgICAvLyBVbnNpZ25lZC5cclxuICAgIHJldHVybiBTdHJpbmcoeC5zICogeC5zIC8gMCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBQYXJzZSB0aGUgdmFsdWUgb2YgYSBuZXcgRGVjaW1hbCBgeGAgZnJvbSBzdHJpbmcgYHN0cmAuXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gcGFyc2VEZWNpbWFsKHgsIHN0cikge1xyXG4gICAgdmFyIGUsIGksIGxlbjtcclxuXHJcbiAgICAvLyBEZWNpbWFsIHBvaW50P1xyXG4gICAgaWYgKChlID0gc3RyLmluZGV4T2YoJy4nKSkgPiAtMSkgc3RyID0gc3RyLnJlcGxhY2UoJy4nLCAnJyk7XHJcblxyXG4gICAgLy8gRXhwb25lbnRpYWwgZm9ybT9cclxuICAgIGlmICgoaSA9IHN0ci5zZWFyY2goL2UvaSkpID4gMCkge1xyXG5cclxuICAgICAgLy8gRGV0ZXJtaW5lIGV4cG9uZW50LlxyXG4gICAgICBpZiAoZSA8IDApIGUgPSBpO1xyXG4gICAgICBlICs9ICtzdHIuc2xpY2UoaSArIDEpO1xyXG4gICAgICBzdHIgPSBzdHIuc3Vic3RyaW5nKDAsIGkpO1xyXG4gICAgfSBlbHNlIGlmIChlIDwgMCkge1xyXG5cclxuICAgICAgLy8gSW50ZWdlci5cclxuICAgICAgZSA9IHN0ci5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRGV0ZXJtaW5lIGxlYWRpbmcgemVyb3MuXHJcbiAgICBmb3IgKGkgPSAwOyBzdHIuY2hhckNvZGVBdChpKSA9PT0gNDg7IGkrKyk7XHJcblxyXG4gICAgLy8gRGV0ZXJtaW5lIHRyYWlsaW5nIHplcm9zLlxyXG4gICAgZm9yIChsZW4gPSBzdHIubGVuZ3RoOyBzdHIuY2hhckNvZGVBdChsZW4gLSAxKSA9PT0gNDg7IC0tbGVuKTtcclxuICAgIHN0ciA9IHN0ci5zbGljZShpLCBsZW4pO1xyXG5cclxuICAgIGlmIChzdHIpIHtcclxuICAgICAgbGVuIC09IGk7XHJcbiAgICAgIHguZSA9IGUgPSBlIC0gaSAtIDE7XHJcbiAgICAgIHguZCA9IFtdO1xyXG5cclxuICAgICAgLy8gVHJhbnNmb3JtIGJhc2VcclxuXHJcbiAgICAgIC8vIGUgaXMgdGhlIGJhc2UgMTAgZXhwb25lbnQuXHJcbiAgICAgIC8vIGkgaXMgd2hlcmUgdG8gc2xpY2Ugc3RyIHRvIGdldCB0aGUgZmlyc3Qgd29yZCBvZiB0aGUgZGlnaXRzIGFycmF5LlxyXG4gICAgICBpID0gKGUgKyAxKSAlIExPR19CQVNFO1xyXG4gICAgICBpZiAoZSA8IDApIGkgKz0gTE9HX0JBU0U7XHJcblxyXG4gICAgICBpZiAoaSA8IGxlbikge1xyXG4gICAgICAgIGlmIChpKSB4LmQucHVzaCgrc3RyLnNsaWNlKDAsIGkpKTtcclxuICAgICAgICBmb3IgKGxlbiAtPSBMT0dfQkFTRTsgaSA8IGxlbjspIHguZC5wdXNoKCtzdHIuc2xpY2UoaSwgaSArPSBMT0dfQkFTRSkpO1xyXG4gICAgICAgIHN0ciA9IHN0ci5zbGljZShpKTtcclxuICAgICAgICBpID0gTE9HX0JBU0UgLSBzdHIubGVuZ3RoO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGkgLT0gbGVuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmb3IgKDsgaS0tOykgc3RyICs9ICcwJztcclxuICAgICAgeC5kLnB1c2goK3N0cik7XHJcblxyXG4gICAgICBpZiAoZXh0ZXJuYWwpIHtcclxuXHJcbiAgICAgICAgLy8gT3ZlcmZsb3c/XHJcbiAgICAgICAgaWYgKHguZSA+IHguY29uc3RydWN0b3IubWF4RSkge1xyXG5cclxuICAgICAgICAgIC8vIEluZmluaXR5LlxyXG4gICAgICAgICAgeC5kID0gbnVsbDtcclxuICAgICAgICAgIHguZSA9IE5hTjtcclxuXHJcbiAgICAgICAgLy8gVW5kZXJmbG93P1xyXG4gICAgICAgIH0gZWxzZSBpZiAoeC5lIDwgeC5jb25zdHJ1Y3Rvci5taW5FKSB7XHJcblxyXG4gICAgICAgICAgLy8gWmVyby5cclxuICAgICAgICAgIHguZSA9IDA7XHJcbiAgICAgICAgICB4LmQgPSBbMF07XHJcbiAgICAgICAgICAvLyB4LmNvbnN0cnVjdG9yLnVuZGVyZmxvdyA9IHRydWU7XHJcbiAgICAgICAgfSAvLyBlbHNlIHguY29uc3RydWN0b3IudW5kZXJmbG93ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAvLyBaZXJvLlxyXG4gICAgICB4LmUgPSAwO1xyXG4gICAgICB4LmQgPSBbMF07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHg7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBQYXJzZSB0aGUgdmFsdWUgb2YgYSBuZXcgRGVjaW1hbCBgeGAgZnJvbSBhIHN0cmluZyBgc3RyYCwgd2hpY2ggaXMgbm90IGEgZGVjaW1hbCB2YWx1ZS5cclxuICAgKi9cclxuICBmdW5jdGlvbiBwYXJzZU90aGVyKHgsIHN0cikge1xyXG4gICAgdmFyIGJhc2UsIEN0b3IsIGRpdmlzb3IsIGksIGlzRmxvYXQsIGxlbiwgcCwgeGQsIHhlO1xyXG5cclxuICAgIGlmIChzdHIuaW5kZXhPZignXycpID4gLTEpIHtcclxuICAgICAgc3RyID0gc3RyLnJlcGxhY2UoLyhcXGQpXyg/PVxcZCkvZywgJyQxJyk7XHJcbiAgICAgIGlmIChpc0RlY2ltYWwudGVzdChzdHIpKSByZXR1cm4gcGFyc2VEZWNpbWFsKHgsIHN0cik7XHJcbiAgICB9IGVsc2UgaWYgKHN0ciA9PT0gJ0luZmluaXR5JyB8fCBzdHIgPT09ICdOYU4nKSB7XHJcbiAgICAgIGlmICghK3N0cikgeC5zID0gTmFOO1xyXG4gICAgICB4LmUgPSBOYU47XHJcbiAgICAgIHguZCA9IG51bGw7XHJcbiAgICAgIHJldHVybiB4O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpc0hleC50ZXN0KHN0cikpICB7XHJcbiAgICAgIGJhc2UgPSAxNjtcclxuICAgICAgc3RyID0gc3RyLnRvTG93ZXJDYXNlKCk7XHJcbiAgICB9IGVsc2UgaWYgKGlzQmluYXJ5LnRlc3Qoc3RyKSkgIHtcclxuICAgICAgYmFzZSA9IDI7XHJcbiAgICB9IGVsc2UgaWYgKGlzT2N0YWwudGVzdChzdHIpKSAge1xyXG4gICAgICBiYXNlID0gODtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IEVycm9yKGludmFsaWRBcmd1bWVudCArIHN0cik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSXMgdGhlcmUgYSBiaW5hcnkgZXhwb25lbnQgcGFydD9cclxuICAgIGkgPSBzdHIuc2VhcmNoKC9wL2kpO1xyXG5cclxuICAgIGlmIChpID4gMCkge1xyXG4gICAgICBwID0gK3N0ci5zbGljZShpICsgMSk7XHJcbiAgICAgIHN0ciA9IHN0ci5zdWJzdHJpbmcoMiwgaSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzdHIgPSBzdHIuc2xpY2UoMik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ29udmVydCBgc3RyYCBhcyBhbiBpbnRlZ2VyIHRoZW4gZGl2aWRlIHRoZSByZXN1bHQgYnkgYGJhc2VgIHJhaXNlZCB0byBhIHBvd2VyIHN1Y2ggdGhhdCB0aGVcclxuICAgIC8vIGZyYWN0aW9uIHBhcnQgd2lsbCBiZSByZXN0b3JlZC5cclxuICAgIGkgPSBzdHIuaW5kZXhPZignLicpO1xyXG4gICAgaXNGbG9hdCA9IGkgPj0gMDtcclxuICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgIGlmIChpc0Zsb2F0KSB7XHJcbiAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKCcuJywgJycpO1xyXG4gICAgICBsZW4gPSBzdHIubGVuZ3RoO1xyXG4gICAgICBpID0gbGVuIC0gaTtcclxuXHJcbiAgICAgIC8vIGxvZ1sxMF0oMTYpID0gMS4yMDQxLi4uICwgbG9nWzEwXSg4OCkgPSAxLjk0NDQuLi4uXHJcbiAgICAgIGRpdmlzb3IgPSBpbnRQb3coQ3RvciwgbmV3IEN0b3IoYmFzZSksIGksIGkgKiAyKTtcclxuICAgIH1cclxuXHJcbiAgICB4ZCA9IGNvbnZlcnRCYXNlKHN0ciwgYmFzZSwgQkFTRSk7XHJcbiAgICB4ZSA9IHhkLmxlbmd0aCAtIDE7XHJcblxyXG4gICAgLy8gUmVtb3ZlIHRyYWlsaW5nIHplcm9zLlxyXG4gICAgZm9yIChpID0geGU7IHhkW2ldID09PSAwOyAtLWkpIHhkLnBvcCgpO1xyXG4gICAgaWYgKGkgPCAwKSByZXR1cm4gbmV3IEN0b3IoeC5zICogMCk7XHJcbiAgICB4LmUgPSBnZXRCYXNlMTBFeHBvbmVudCh4ZCwgeGUpO1xyXG4gICAgeC5kID0geGQ7XHJcbiAgICBleHRlcm5hbCA9IGZhbHNlO1xyXG5cclxuICAgIC8vIEF0IHdoYXQgcHJlY2lzaW9uIHRvIHBlcmZvcm0gdGhlIGRpdmlzaW9uIHRvIGVuc3VyZSBleGFjdCBjb252ZXJzaW9uP1xyXG4gICAgLy8gbWF4RGVjaW1hbEludGVnZXJQYXJ0RGlnaXRDb3VudCA9IGNlaWwobG9nWzEwXShiKSAqIG90aGVyQmFzZUludGVnZXJQYXJ0RGlnaXRDb3VudClcclxuICAgIC8vIGxvZ1sxMF0oMikgPSAwLjMwMTAzLCBsb2dbMTBdKDgpID0gMC45MDMwOSwgbG9nWzEwXSgxNikgPSAxLjIwNDEyXHJcbiAgICAvLyBFLmcuIGNlaWwoMS4yICogMykgPSA0LCBzbyB1cCB0byA0IGRlY2ltYWwgZGlnaXRzIGFyZSBuZWVkZWQgdG8gcmVwcmVzZW50IDMgaGV4IGludCBkaWdpdHMuXHJcbiAgICAvLyBtYXhEZWNpbWFsRnJhY3Rpb25QYXJ0RGlnaXRDb3VudCA9IHtIZXg6NHxPY3Q6M3xCaW46MX0gKiBvdGhlckJhc2VGcmFjdGlvblBhcnREaWdpdENvdW50XHJcbiAgICAvLyBUaGVyZWZvcmUgdXNpbmcgNCAqIHRoZSBudW1iZXIgb2YgZGlnaXRzIG9mIHN0ciB3aWxsIGFsd2F5cyBiZSBlbm91Z2guXHJcbiAgICBpZiAoaXNGbG9hdCkgeCA9IGRpdmlkZSh4LCBkaXZpc29yLCBsZW4gKiA0KTtcclxuXHJcbiAgICAvLyBNdWx0aXBseSBieSB0aGUgYmluYXJ5IGV4cG9uZW50IHBhcnQgaWYgcHJlc2VudC5cclxuICAgIGlmIChwKSB4ID0geC50aW1lcyhNYXRoLmFicyhwKSA8IDU0ID8gbWF0aHBvdygyLCBwKSA6IERlY2ltYWwucG93KDIsIHApKTtcclxuICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4geDtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIHNpbih4KSA9IHggLSB4XjMvMyEgKyB4XjUvNSEgLSAuLi5cclxuICAgKiB8eHwgPCBwaS8yXHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBzaW5lKEN0b3IsIHgpIHtcclxuICAgIHZhciBrLFxyXG4gICAgICBsZW4gPSB4LmQubGVuZ3RoO1xyXG5cclxuICAgIGlmIChsZW4gPCAzKSB7XHJcbiAgICAgIHJldHVybiB4LmlzWmVybygpID8geCA6IHRheWxvclNlcmllcyhDdG9yLCAyLCB4LCB4KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBBcmd1bWVudCByZWR1Y3Rpb246IHNpbig1eCkgPSAxNipzaW5eNSh4KSAtIDIwKnNpbl4zKHgpICsgNSpzaW4oeClcclxuICAgIC8vIGkuZS4gc2luKHgpID0gMTYqc2luXjUoeC81KSAtIDIwKnNpbl4zKHgvNSkgKyA1KnNpbih4LzUpXHJcbiAgICAvLyBhbmQgIHNpbih4KSA9IHNpbih4LzUpKDUgKyBzaW5eMih4LzUpKDE2c2luXjIoeC81KSAtIDIwKSlcclxuXHJcbiAgICAvLyBFc3RpbWF0ZSB0aGUgb3B0aW11bSBudW1iZXIgb2YgdGltZXMgdG8gdXNlIHRoZSBhcmd1bWVudCByZWR1Y3Rpb24uXHJcbiAgICBrID0gMS40ICogTWF0aC5zcXJ0KGxlbik7XHJcbiAgICBrID0gayA+IDE2ID8gMTYgOiBrIHwgMDtcclxuXHJcbiAgICB4ID0geC50aW1lcygxIC8gdGlueVBvdyg1LCBrKSk7XHJcbiAgICB4ID0gdGF5bG9yU2VyaWVzKEN0b3IsIDIsIHgsIHgpO1xyXG5cclxuICAgIC8vIFJldmVyc2UgYXJndW1lbnQgcmVkdWN0aW9uXHJcbiAgICB2YXIgc2luMl94LFxyXG4gICAgICBkNSA9IG5ldyBDdG9yKDUpLFxyXG4gICAgICBkMTYgPSBuZXcgQ3RvcigxNiksXHJcbiAgICAgIGQyMCA9IG5ldyBDdG9yKDIwKTtcclxuICAgIGZvciAoOyBrLS07KSB7XHJcbiAgICAgIHNpbjJfeCA9IHgudGltZXMoeCk7XHJcbiAgICAgIHggPSB4LnRpbWVzKGQ1LnBsdXMoc2luMl94LnRpbWVzKGQxNi50aW1lcyhzaW4yX3gpLm1pbnVzKGQyMCkpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHg7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gQ2FsY3VsYXRlIFRheWxvciBzZXJpZXMgZm9yIGBjb3NgLCBgY29zaGAsIGBzaW5gIGFuZCBgc2luaGAuXHJcbiAgZnVuY3Rpb24gdGF5bG9yU2VyaWVzKEN0b3IsIG4sIHgsIHksIGlzSHlwZXJib2xpYykge1xyXG4gICAgdmFyIGosIHQsIHUsIHgyLFxyXG4gICAgICBpID0gMSxcclxuICAgICAgcHIgPSBDdG9yLnByZWNpc2lvbixcclxuICAgICAgayA9IE1hdGguY2VpbChwciAvIExPR19CQVNFKTtcclxuXHJcbiAgICBleHRlcm5hbCA9IGZhbHNlO1xyXG4gICAgeDIgPSB4LnRpbWVzKHgpO1xyXG4gICAgdSA9IG5ldyBDdG9yKHkpO1xyXG5cclxuICAgIGZvciAoOzspIHtcclxuICAgICAgdCA9IGRpdmlkZSh1LnRpbWVzKHgyKSwgbmV3IEN0b3IobisrICogbisrKSwgcHIsIDEpO1xyXG4gICAgICB1ID0gaXNIeXBlcmJvbGljID8geS5wbHVzKHQpIDogeS5taW51cyh0KTtcclxuICAgICAgeSA9IGRpdmlkZSh0LnRpbWVzKHgyKSwgbmV3IEN0b3IobisrICogbisrKSwgcHIsIDEpO1xyXG4gICAgICB0ID0gdS5wbHVzKHkpO1xyXG5cclxuICAgICAgaWYgKHQuZFtrXSAhPT0gdm9pZCAwKSB7XHJcbiAgICAgICAgZm9yIChqID0gazsgdC5kW2pdID09PSB1LmRbal0gJiYgai0tOyk7XHJcbiAgICAgICAgaWYgKGogPT0gLTEpIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBqID0gdTtcclxuICAgICAgdSA9IHk7XHJcbiAgICAgIHkgPSB0O1xyXG4gICAgICB0ID0gajtcclxuICAgICAgaSsrO1xyXG4gICAgfVxyXG5cclxuICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuICAgIHQuZC5sZW5ndGggPSBrICsgMTtcclxuXHJcbiAgICByZXR1cm4gdDtcclxuICB9XHJcblxyXG5cclxuICAvLyBFeHBvbmVudCBlIG11c3QgYmUgcG9zaXRpdmUgYW5kIG5vbi16ZXJvLlxyXG4gIGZ1bmN0aW9uIHRpbnlQb3coYiwgZSkge1xyXG4gICAgdmFyIG4gPSBiO1xyXG4gICAgd2hpbGUgKC0tZSkgbiAqPSBiO1xyXG4gICAgcmV0dXJuIG47XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gUmV0dXJuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBgeGAgcmVkdWNlZCB0byBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gaGFsZiBwaS5cclxuICBmdW5jdGlvbiB0b0xlc3NUaGFuSGFsZlBpKEN0b3IsIHgpIHtcclxuICAgIHZhciB0LFxyXG4gICAgICBpc05lZyA9IHgucyA8IDAsXHJcbiAgICAgIHBpID0gZ2V0UGkoQ3RvciwgQ3Rvci5wcmVjaXNpb24sIDEpLFxyXG4gICAgICBoYWxmUGkgPSBwaS50aW1lcygwLjUpO1xyXG5cclxuICAgIHggPSB4LmFicygpO1xyXG5cclxuICAgIGlmICh4Lmx0ZShoYWxmUGkpKSB7XHJcbiAgICAgIHF1YWRyYW50ID0gaXNOZWcgPyA0IDogMTtcclxuICAgICAgcmV0dXJuIHg7XHJcbiAgICB9XHJcblxyXG4gICAgdCA9IHguZGl2VG9JbnQocGkpO1xyXG5cclxuICAgIGlmICh0LmlzWmVybygpKSB7XHJcbiAgICAgIHF1YWRyYW50ID0gaXNOZWcgPyAzIDogMjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHggPSB4Lm1pbnVzKHQudGltZXMocGkpKTtcclxuXHJcbiAgICAgIC8vIDAgPD0geCA8IHBpXHJcbiAgICAgIGlmICh4Lmx0ZShoYWxmUGkpKSB7XHJcbiAgICAgICAgcXVhZHJhbnQgPSBpc09kZCh0KSA/IChpc05lZyA/IDIgOiAzKSA6IChpc05lZyA/IDQgOiAxKTtcclxuICAgICAgICByZXR1cm4geDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcXVhZHJhbnQgPSBpc09kZCh0KSA/IChpc05lZyA/IDEgOiA0KSA6IChpc05lZyA/IDMgOiAyKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4geC5taW51cyhwaSkuYWJzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gdGhlIHZhbHVlIG9mIERlY2ltYWwgYHhgIGFzIGEgc3RyaW5nIGluIGJhc2UgYGJhc2VPdXRgLlxyXG4gICAqXHJcbiAgICogSWYgdGhlIG9wdGlvbmFsIGBzZGAgYXJndW1lbnQgaXMgcHJlc2VudCBpbmNsdWRlIGEgYmluYXJ5IGV4cG9uZW50IHN1ZmZpeC5cclxuICAgKi9cclxuICBmdW5jdGlvbiB0b1N0cmluZ0JpbmFyeSh4LCBiYXNlT3V0LCBzZCwgcm0pIHtcclxuICAgIHZhciBiYXNlLCBlLCBpLCBrLCBsZW4sIHJvdW5kVXAsIHN0ciwgeGQsIHksXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yLFxyXG4gICAgICBpc0V4cCA9IHNkICE9PSB2b2lkIDA7XHJcblxyXG4gICAgaWYgKGlzRXhwKSB7XHJcbiAgICAgIGNoZWNrSW50MzIoc2QsIDEsIE1BWF9ESUdJVFMpO1xyXG4gICAgICBpZiAocm0gPT09IHZvaWQgMCkgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgICBlbHNlIGNoZWNrSW50MzIocm0sIDAsIDgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2QgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgICAgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICgheC5pc0Zpbml0ZSgpKSB7XHJcbiAgICAgIHN0ciA9IG5vbkZpbml0ZVRvU3RyaW5nKHgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3RyID0gZmluaXRlVG9TdHJpbmcoeCk7XHJcbiAgICAgIGkgPSBzdHIuaW5kZXhPZignLicpO1xyXG5cclxuICAgICAgLy8gVXNlIGV4cG9uZW50aWFsIG5vdGF0aW9uIGFjY29yZGluZyB0byBgdG9FeHBQb3NgIGFuZCBgdG9FeHBOZWdgPyBObywgYnV0IGlmIHJlcXVpcmVkOlxyXG4gICAgICAvLyBtYXhCaW5hcnlFeHBvbmVudCA9IGZsb29yKChkZWNpbWFsRXhwb25lbnQgKyAxKSAqIGxvZ1syXSgxMCkpXHJcbiAgICAgIC8vIG1pbkJpbmFyeUV4cG9uZW50ID0gZmxvb3IoZGVjaW1hbEV4cG9uZW50ICogbG9nWzJdKDEwKSlcclxuICAgICAgLy8gbG9nWzJdKDEwKSA9IDMuMzIxOTI4MDk0ODg3MzYyMzQ3ODcwMzE5NDI5NDg5MzkwMTc1ODY0XHJcblxyXG4gICAgICBpZiAoaXNFeHApIHtcclxuICAgICAgICBiYXNlID0gMjtcclxuICAgICAgICBpZiAoYmFzZU91dCA9PSAxNikge1xyXG4gICAgICAgICAgc2QgPSBzZCAqIDQgLSAzO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoYmFzZU91dCA9PSA4KSB7XHJcbiAgICAgICAgICBzZCA9IHNkICogMyAtIDI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGJhc2UgPSBiYXNlT3V0O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBDb252ZXJ0IHRoZSBudW1iZXIgYXMgYW4gaW50ZWdlciB0aGVuIGRpdmlkZSB0aGUgcmVzdWx0IGJ5IGl0cyBiYXNlIHJhaXNlZCB0byBhIHBvd2VyIHN1Y2hcclxuICAgICAgLy8gdGhhdCB0aGUgZnJhY3Rpb24gcGFydCB3aWxsIGJlIHJlc3RvcmVkLlxyXG5cclxuICAgICAgLy8gTm9uLWludGVnZXIuXHJcbiAgICAgIGlmIChpID49IDApIHtcclxuICAgICAgICBzdHIgPSBzdHIucmVwbGFjZSgnLicsICcnKTtcclxuICAgICAgICB5ID0gbmV3IEN0b3IoMSk7XHJcbiAgICAgICAgeS5lID0gc3RyLmxlbmd0aCAtIGk7XHJcbiAgICAgICAgeS5kID0gY29udmVydEJhc2UoZmluaXRlVG9TdHJpbmcoeSksIDEwLCBiYXNlKTtcclxuICAgICAgICB5LmUgPSB5LmQubGVuZ3RoO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB4ZCA9IGNvbnZlcnRCYXNlKHN0ciwgMTAsIGJhc2UpO1xyXG4gICAgICBlID0gbGVuID0geGQubGVuZ3RoO1xyXG5cclxuICAgICAgLy8gUmVtb3ZlIHRyYWlsaW5nIHplcm9zLlxyXG4gICAgICBmb3IgKDsgeGRbLS1sZW5dID09IDA7KSB4ZC5wb3AoKTtcclxuXHJcbiAgICAgIGlmICgheGRbMF0pIHtcclxuICAgICAgICBzdHIgPSBpc0V4cCA/ICcwcCswJyA6ICcwJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoaSA8IDApIHtcclxuICAgICAgICAgIGUtLTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgeCA9IG5ldyBDdG9yKHgpO1xyXG4gICAgICAgICAgeC5kID0geGQ7XHJcbiAgICAgICAgICB4LmUgPSBlO1xyXG4gICAgICAgICAgeCA9IGRpdmlkZSh4LCB5LCBzZCwgcm0sIDAsIGJhc2UpO1xyXG4gICAgICAgICAgeGQgPSB4LmQ7XHJcbiAgICAgICAgICBlID0geC5lO1xyXG4gICAgICAgICAgcm91bmRVcCA9IGluZXhhY3Q7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBUaGUgcm91bmRpbmcgZGlnaXQsIGkuZS4gdGhlIGRpZ2l0IGFmdGVyIHRoZSBkaWdpdCB0aGF0IG1heSBiZSByb3VuZGVkIHVwLlxyXG4gICAgICAgIGkgPSB4ZFtzZF07XHJcbiAgICAgICAgayA9IGJhc2UgLyAyO1xyXG4gICAgICAgIHJvdW5kVXAgPSByb3VuZFVwIHx8IHhkW3NkICsgMV0gIT09IHZvaWQgMDtcclxuXHJcbiAgICAgICAgcm91bmRVcCA9IHJtIDwgNFxyXG4gICAgICAgICAgPyAoaSAhPT0gdm9pZCAwIHx8IHJvdW5kVXApICYmIChybSA9PT0gMCB8fCBybSA9PT0gKHgucyA8IDAgPyAzIDogMikpXHJcbiAgICAgICAgICA6IGkgPiBrIHx8IGkgPT09IGsgJiYgKHJtID09PSA0IHx8IHJvdW5kVXAgfHwgcm0gPT09IDYgJiYgeGRbc2QgLSAxXSAmIDEgfHxcclxuICAgICAgICAgICAgcm0gPT09ICh4LnMgPCAwID8gOCA6IDcpKTtcclxuXHJcbiAgICAgICAgeGQubGVuZ3RoID0gc2Q7XHJcblxyXG4gICAgICAgIGlmIChyb3VuZFVwKSB7XHJcblxyXG4gICAgICAgICAgLy8gUm91bmRpbmcgdXAgbWF5IG1lYW4gdGhlIHByZXZpb3VzIGRpZ2l0IGhhcyB0byBiZSByb3VuZGVkIHVwIGFuZCBzbyBvbi5cclxuICAgICAgICAgIGZvciAoOyArK3hkWy0tc2RdID4gYmFzZSAtIDE7KSB7XHJcbiAgICAgICAgICAgIHhkW3NkXSA9IDA7XHJcbiAgICAgICAgICAgIGlmICghc2QpIHtcclxuICAgICAgICAgICAgICArK2U7XHJcbiAgICAgICAgICAgICAgeGQudW5zaGlmdCgxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gRGV0ZXJtaW5lIHRyYWlsaW5nIHplcm9zLlxyXG4gICAgICAgIGZvciAobGVuID0geGQubGVuZ3RoOyAheGRbbGVuIC0gMV07IC0tbGVuKTtcclxuXHJcbiAgICAgICAgLy8gRS5nLiBbNCwgMTEsIDE1XSBiZWNvbWVzIDRiZi5cclxuICAgICAgICBmb3IgKGkgPSAwLCBzdHIgPSAnJzsgaSA8IGxlbjsgaSsrKSBzdHIgKz0gTlVNRVJBTFMuY2hhckF0KHhkW2ldKTtcclxuXHJcbiAgICAgICAgLy8gQWRkIGJpbmFyeSBleHBvbmVudCBzdWZmaXg/XHJcbiAgICAgICAgaWYgKGlzRXhwKSB7XHJcbiAgICAgICAgICBpZiAobGVuID4gMSkge1xyXG4gICAgICAgICAgICBpZiAoYmFzZU91dCA9PSAxNiB8fCBiYXNlT3V0ID09IDgpIHtcclxuICAgICAgICAgICAgICBpID0gYmFzZU91dCA9PSAxNiA/IDQgOiAzO1xyXG4gICAgICAgICAgICAgIGZvciAoLS1sZW47IGxlbiAlIGk7IGxlbisrKSBzdHIgKz0gJzAnO1xyXG4gICAgICAgICAgICAgIHhkID0gY29udmVydEJhc2Uoc3RyLCBiYXNlLCBiYXNlT3V0KTtcclxuICAgICAgICAgICAgICBmb3IgKGxlbiA9IHhkLmxlbmd0aDsgIXhkW2xlbiAtIDFdOyAtLWxlbik7XHJcblxyXG4gICAgICAgICAgICAgIC8vIHhkWzBdIHdpbGwgYWx3YXlzIGJlIGJlIDFcclxuICAgICAgICAgICAgICBmb3IgKGkgPSAxLCBzdHIgPSAnMS4nOyBpIDwgbGVuOyBpKyspIHN0ciArPSBOVU1FUkFMUy5jaGFyQXQoeGRbaV0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHN0ciA9IHN0ci5jaGFyQXQoMCkgKyAnLicgKyBzdHIuc2xpY2UoMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBzdHIgPSAgc3RyICsgKGUgPCAwID8gJ3AnIDogJ3ArJykgKyBlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZSA8IDApIHtcclxuICAgICAgICAgIGZvciAoOyArK2U7KSBzdHIgPSAnMCcgKyBzdHI7XHJcbiAgICAgICAgICBzdHIgPSAnMC4nICsgc3RyO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoKytlID4gbGVuKSBmb3IgKGUgLT0gbGVuOyBlLS0gOykgc3RyICs9ICcwJztcclxuICAgICAgICAgIGVsc2UgaWYgKGUgPCBsZW4pIHN0ciA9IHN0ci5zbGljZSgwLCBlKSArICcuJyArIHN0ci5zbGljZShlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHN0ciA9IChiYXNlT3V0ID09IDE2ID8gJzB4JyA6IGJhc2VPdXQgPT0gMiA/ICcwYicgOiBiYXNlT3V0ID09IDggPyAnMG8nIDogJycpICsgc3RyO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB4LnMgPCAwID8gJy0nICsgc3RyIDogc3RyO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIERvZXMgbm90IHN0cmlwIHRyYWlsaW5nIHplcm9zLlxyXG4gIGZ1bmN0aW9uIHRydW5jYXRlKGFyciwgbGVuKSB7XHJcbiAgICBpZiAoYXJyLmxlbmd0aCA+IGxlbikge1xyXG4gICAgICBhcnIubGVuZ3RoID0gbGVuO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvLyBEZWNpbWFsIG1ldGhvZHNcclxuXHJcblxyXG4gIC8qXHJcbiAgICogIGFic1xyXG4gICAqICBhY29zXHJcbiAgICogIGFjb3NoXHJcbiAgICogIGFkZFxyXG4gICAqICBhc2luXHJcbiAgICogIGFzaW5oXHJcbiAgICogIGF0YW5cclxuICAgKiAgYXRhbmhcclxuICAgKiAgYXRhbjJcclxuICAgKiAgY2JydFxyXG4gICAqICBjZWlsXHJcbiAgICogIGNsYW1wXHJcbiAgICogIGNsb25lXHJcbiAgICogIGNvbmZpZ1xyXG4gICAqICBjb3NcclxuICAgKiAgY29zaFxyXG4gICAqICBkaXZcclxuICAgKiAgZXhwXHJcbiAgICogIGZsb29yXHJcbiAgICogIGh5cG90XHJcbiAgICogIGxuXHJcbiAgICogIGxvZ1xyXG4gICAqICBsb2cyXHJcbiAgICogIGxvZzEwXHJcbiAgICogIG1heFxyXG4gICAqICBtaW5cclxuICAgKiAgbW9kXHJcbiAgICogIG11bFxyXG4gICAqICBwb3dcclxuICAgKiAgcmFuZG9tXHJcbiAgICogIHJvdW5kXHJcbiAgICogIHNldFxyXG4gICAqICBzaWduXHJcbiAgICogIHNpblxyXG4gICAqICBzaW5oXHJcbiAgICogIHNxcnRcclxuICAgKiAgc3ViXHJcbiAgICogIHN1bVxyXG4gICAqICB0YW5cclxuICAgKiAgdGFuaFxyXG4gICAqICB0cnVuY1xyXG4gICAqL1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgYHhgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gYWJzKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5hYnMoKTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBhcmNjb3NpbmUgaW4gcmFkaWFucyBvZiBgeGAuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBhY29zKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5hY29zKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgaW52ZXJzZSBvZiB0aGUgaHlwZXJib2xpYyBjb3NpbmUgb2YgYHhgLCByb3VuZGVkIHRvXHJcbiAgICogYHByZWNpc2lvbmAgc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH0gQSB2YWx1ZSBpbiByYWRpYW5zLlxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gYWNvc2goeCkge1xyXG4gICAgcmV0dXJuIG5ldyB0aGlzKHgpLmFjb3NoKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgc3VtIG9mIGB4YCBhbmQgYHlgLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gIHNpZ25pZmljYW50XHJcbiAgICogZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKiB5IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBhZGQoeCwgeSkge1xyXG4gICAgcmV0dXJuIG5ldyB0aGlzKHgpLnBsdXMoeSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgYXJjc2luZSBpbiByYWRpYW5zIG9mIGB4YCwgcm91bmRlZCB0byBgcHJlY2lzaW9uYFxyXG4gICAqIHNpZ25pZmljYW50IGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBhc2luKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5hc2luKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgaW52ZXJzZSBvZiB0aGUgaHlwZXJib2xpYyBzaW5lIG9mIGB4YCwgcm91bmRlZCB0b1xyXG4gICAqIGBwcmVjaXNpb25gIHNpZ25pZmljYW50IGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9IEEgdmFsdWUgaW4gcmFkaWFucy5cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGFzaW5oKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5hc2luaCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGFyY3RhbmdlbnQgaW4gcmFkaWFucyBvZiBgeGAsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmBcclxuICAgKiBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gYXRhbih4KSB7XHJcbiAgICByZXR1cm4gbmV3IHRoaXMoeCkuYXRhbigpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGludmVyc2Ugb2YgdGhlIGh5cGVyYm9saWMgdGFuZ2VudCBvZiBgeGAsIHJvdW5kZWQgdG9cclxuICAgKiBgcHJlY2lzaW9uYCBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfSBBIHZhbHVlIGluIHJhZGlhbnMuXHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBhdGFuaCh4KSB7XHJcbiAgICByZXR1cm4gbmV3IHRoaXMoeCkuYXRhbmgoKTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBhcmN0YW5nZW50IGluIHJhZGlhbnMgb2YgYHkveGAgaW4gdGhlIHJhbmdlIC1waSB0byBwaVxyXG4gICAqIChpbmNsdXNpdmUpLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gIHNpZ25pZmljYW50IGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiBEb21haW46IFstSW5maW5pdHksIEluZmluaXR5XVxyXG4gICAqIFJhbmdlOiBbLXBpLCBwaV1cclxuICAgKlxyXG4gICAqIHkge251bWJlcnxzdHJpbmd8RGVjaW1hbH0gVGhlIHktY29vcmRpbmF0ZS5cclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9IFRoZSB4LWNvb3JkaW5hdGUuXHJcbiAgICpcclxuICAgKiBhdGFuMijCsTAsIC0wKSAgICAgICAgICAgICAgID0gwrFwaVxyXG4gICAqIGF0YW4yKMKxMCwgKzApICAgICAgICAgICAgICAgPSDCsTBcclxuICAgKiBhdGFuMijCsTAsIC14KSAgICAgICAgICAgICAgID0gwrFwaSBmb3IgeCA+IDBcclxuICAgKiBhdGFuMijCsTAsIHgpICAgICAgICAgICAgICAgID0gwrEwIGZvciB4ID4gMFxyXG4gICAqIGF0YW4yKC15LCDCsTApICAgICAgICAgICAgICAgPSAtcGkvMiBmb3IgeSA+IDBcclxuICAgKiBhdGFuMih5LCDCsTApICAgICAgICAgICAgICAgID0gcGkvMiBmb3IgeSA+IDBcclxuICAgKiBhdGFuMijCsXksIC1JbmZpbml0eSkgICAgICAgID0gwrFwaSBmb3IgZmluaXRlIHkgPiAwXHJcbiAgICogYXRhbjIowrF5LCArSW5maW5pdHkpICAgICAgICA9IMKxMCBmb3IgZmluaXRlIHkgPiAwXHJcbiAgICogYXRhbjIowrFJbmZpbml0eSwgeCkgICAgICAgICA9IMKxcGkvMiBmb3IgZmluaXRlIHhcclxuICAgKiBhdGFuMijCsUluZmluaXR5LCAtSW5maW5pdHkpID0gwrEzKnBpLzRcclxuICAgKiBhdGFuMijCsUluZmluaXR5LCArSW5maW5pdHkpID0gwrFwaS80XHJcbiAgICogYXRhbjIoTmFOLCB4KSA9IE5hTlxyXG4gICAqIGF0YW4yKHksIE5hTikgPSBOYU5cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGF0YW4yKHksIHgpIHtcclxuICAgIHkgPSBuZXcgdGhpcyh5KTtcclxuICAgIHggPSBuZXcgdGhpcyh4KTtcclxuICAgIHZhciByLFxyXG4gICAgICBwciA9IHRoaXMucHJlY2lzaW9uLFxyXG4gICAgICBybSA9IHRoaXMucm91bmRpbmcsXHJcbiAgICAgIHdwciA9IHByICsgNDtcclxuXHJcbiAgICAvLyBFaXRoZXIgTmFOXHJcbiAgICBpZiAoIXkucyB8fCAheC5zKSB7XHJcbiAgICAgIHIgPSBuZXcgdGhpcyhOYU4pO1xyXG5cclxuICAgIC8vIEJvdGggwrFJbmZpbml0eVxyXG4gICAgfSBlbHNlIGlmICgheS5kICYmICF4LmQpIHtcclxuICAgICAgciA9IGdldFBpKHRoaXMsIHdwciwgMSkudGltZXMoeC5zID4gMCA/IDAuMjUgOiAwLjc1KTtcclxuICAgICAgci5zID0geS5zO1xyXG5cclxuICAgIC8vIHggaXMgwrFJbmZpbml0eSBvciB5IGlzIMKxMFxyXG4gICAgfSBlbHNlIGlmICgheC5kIHx8IHkuaXNaZXJvKCkpIHtcclxuICAgICAgciA9IHgucyA8IDAgPyBnZXRQaSh0aGlzLCBwciwgcm0pIDogbmV3IHRoaXMoMCk7XHJcbiAgICAgIHIucyA9IHkucztcclxuXHJcbiAgICAvLyB5IGlzIMKxSW5maW5pdHkgb3IgeCBpcyDCsTBcclxuICAgIH0gZWxzZSBpZiAoIXkuZCB8fCB4LmlzWmVybygpKSB7XHJcbiAgICAgIHIgPSBnZXRQaSh0aGlzLCB3cHIsIDEpLnRpbWVzKDAuNSk7XHJcbiAgICAgIHIucyA9IHkucztcclxuXHJcbiAgICAvLyBCb3RoIG5vbi16ZXJvIGFuZCBmaW5pdGVcclxuICAgIH0gZWxzZSBpZiAoeC5zIDwgMCkge1xyXG4gICAgICB0aGlzLnByZWNpc2lvbiA9IHdwcjtcclxuICAgICAgdGhpcy5yb3VuZGluZyA9IDE7XHJcbiAgICAgIHIgPSB0aGlzLmF0YW4oZGl2aWRlKHksIHgsIHdwciwgMSkpO1xyXG4gICAgICB4ID0gZ2V0UGkodGhpcywgd3ByLCAxKTtcclxuICAgICAgdGhpcy5wcmVjaXNpb24gPSBwcjtcclxuICAgICAgdGhpcy5yb3VuZGluZyA9IHJtO1xyXG4gICAgICByID0geS5zIDwgMCA/IHIubWludXMoeCkgOiByLnBsdXMoeCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByID0gdGhpcy5hdGFuKGRpdmlkZSh5LCB4LCB3cHIsIDEpKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcjtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBjdWJlIHJvb3Qgb2YgYHhgLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gIHNpZ25pZmljYW50XHJcbiAgICogZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGNicnQoeCkge1xyXG4gICAgcmV0dXJuIG5ldyB0aGlzKHgpLmNicnQoKTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIGB4YCByb3VuZGVkIHRvIGFuIGludGVnZXIgdXNpbmcgYFJPVU5EX0NFSUxgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gY2VpbCh4KSB7XHJcbiAgICByZXR1cm4gZmluYWxpc2UoeCA9IG5ldyB0aGlzKHgpLCB4LmUgKyAxLCAyKTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIGB4YCBjbGFtcGVkIHRvIHRoZSByYW5nZSBkZWxpbmVhdGVkIGJ5IGBtaW5gIGFuZCBgbWF4YC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKiBtaW4ge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKiBtYXgge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGNsYW1wKHgsIG1pbiwgbWF4KSB7XHJcbiAgICByZXR1cm4gbmV3IHRoaXMoeCkuY2xhbXAobWluLCBtYXgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogQ29uZmlndXJlIGdsb2JhbCBzZXR0aW5ncyBmb3IgYSBEZWNpbWFsIGNvbnN0cnVjdG9yLlxyXG4gICAqXHJcbiAgICogYG9iamAgaXMgYW4gb2JqZWN0IHdpdGggb25lIG9yIG1vcmUgb2YgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzLFxyXG4gICAqXHJcbiAgICogICBwcmVjaXNpb24gIHtudW1iZXJ9XHJcbiAgICogICByb3VuZGluZyAgIHtudW1iZXJ9XHJcbiAgICogICB0b0V4cE5lZyAgIHtudW1iZXJ9XHJcbiAgICogICB0b0V4cFBvcyAgIHtudW1iZXJ9XHJcbiAgICogICBtYXhFICAgICAgIHtudW1iZXJ9XHJcbiAgICogICBtaW5FICAgICAgIHtudW1iZXJ9XHJcbiAgICogICBtb2R1bG8gICAgIHtudW1iZXJ9XHJcbiAgICogICBjcnlwdG8gICAgIHtib29sZWFufG51bWJlcn1cclxuICAgKiAgIGRlZmF1bHRzICAge3RydWV9XHJcbiAgICpcclxuICAgKiBFLmcuIERlY2ltYWwuY29uZmlnKHsgcHJlY2lzaW9uOiAyMCwgcm91bmRpbmc6IDQgfSlcclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGNvbmZpZyhvYmopIHtcclxuICAgIGlmICghb2JqIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB0aHJvdyBFcnJvcihkZWNpbWFsRXJyb3IgKyAnT2JqZWN0IGV4cGVjdGVkJyk7XHJcbiAgICB2YXIgaSwgcCwgdixcclxuICAgICAgdXNlRGVmYXVsdHMgPSBvYmouZGVmYXVsdHMgPT09IHRydWUsXHJcbiAgICAgIHBzID0gW1xyXG4gICAgICAgICdwcmVjaXNpb24nLCAxLCBNQVhfRElHSVRTLFxyXG4gICAgICAgICdyb3VuZGluZycsIDAsIDgsXHJcbiAgICAgICAgJ3RvRXhwTmVnJywgLUVYUF9MSU1JVCwgMCxcclxuICAgICAgICAndG9FeHBQb3MnLCAwLCBFWFBfTElNSVQsXHJcbiAgICAgICAgJ21heEUnLCAwLCBFWFBfTElNSVQsXHJcbiAgICAgICAgJ21pbkUnLCAtRVhQX0xJTUlULCAwLFxyXG4gICAgICAgICdtb2R1bG8nLCAwLCA5XHJcbiAgICAgIF07XHJcblxyXG4gICAgZm9yIChpID0gMDsgaSA8IHBzLmxlbmd0aDsgaSArPSAzKSB7XHJcbiAgICAgIGlmIChwID0gcHNbaV0sIHVzZURlZmF1bHRzKSB0aGlzW3BdID0gREVGQVVMVFNbcF07XHJcbiAgICAgIGlmICgodiA9IG9ialtwXSkgIT09IHZvaWQgMCkge1xyXG4gICAgICAgIGlmIChtYXRoZmxvb3IodikgPT09IHYgJiYgdiA+PSBwc1tpICsgMV0gJiYgdiA8PSBwc1tpICsgMl0pIHRoaXNbcF0gPSB2O1xyXG4gICAgICAgIGVsc2UgdGhyb3cgRXJyb3IoaW52YWxpZEFyZ3VtZW50ICsgcCArICc6ICcgKyB2KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChwID0gJ2NyeXB0bycsIHVzZURlZmF1bHRzKSB0aGlzW3BdID0gREVGQVVMVFNbcF07XHJcbiAgICBpZiAoKHYgPSBvYmpbcF0pICE9PSB2b2lkIDApIHtcclxuICAgICAgaWYgKHYgPT09IHRydWUgfHwgdiA9PT0gZmFsc2UgfHwgdiA9PT0gMCB8fCB2ID09PSAxKSB7XHJcbiAgICAgICAgaWYgKHYpIHtcclxuICAgICAgICAgIGlmICh0eXBlb2YgY3J5cHRvICE9ICd1bmRlZmluZWQnICYmIGNyeXB0byAmJlxyXG4gICAgICAgICAgICAoY3J5cHRvLmdldFJhbmRvbVZhbHVlcyB8fCBjcnlwdG8ucmFuZG9tQnl0ZXMpKSB7XHJcbiAgICAgICAgICAgIHRoaXNbcF0gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoY3J5cHRvVW5hdmFpbGFibGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzW3BdID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRocm93IEVycm9yKGludmFsaWRBcmd1bWVudCArIHAgKyAnOiAnICsgdik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBjb3NpbmUgb2YgYHhgLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gIHNpZ25pZmljYW50XHJcbiAgICogZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH0gQSB2YWx1ZSBpbiByYWRpYW5zLlxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gY29zKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5jb3MoKTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBoeXBlcmJvbGljIGNvc2luZSBvZiBgeGAsIHJvdW5kZWQgdG8gcHJlY2lzaW9uXHJcbiAgICogc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH0gQSB2YWx1ZSBpbiByYWRpYW5zLlxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gY29zaCh4KSB7XHJcbiAgICByZXR1cm4gbmV3IHRoaXMoeCkuY29zaCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogQ3JlYXRlIGFuZCByZXR1cm4gYSBEZWNpbWFsIGNvbnN0cnVjdG9yIHdpdGggdGhlIHNhbWUgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIGFzIHRoaXMgRGVjaW1hbFxyXG4gICAqIGNvbnN0cnVjdG9yLlxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gY2xvbmUob2JqKSB7XHJcbiAgICB2YXIgaSwgcCwgcHM7XHJcblxyXG4gICAgLypcclxuICAgICAqIFRoZSBEZWNpbWFsIGNvbnN0cnVjdG9yIGFuZCBleHBvcnRlZCBmdW5jdGlvbi5cclxuICAgICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIGluc3RhbmNlLlxyXG4gICAgICpcclxuICAgICAqIHYge251bWJlcnxzdHJpbmd8RGVjaW1hbH0gQSBudW1lcmljIHZhbHVlLlxyXG4gICAgICpcclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gRGVjaW1hbCh2KSB7XHJcbiAgICAgIHZhciBlLCBpLCB0LFxyXG4gICAgICAgIHggPSB0aGlzO1xyXG5cclxuICAgICAgLy8gRGVjaW1hbCBjYWxsZWQgd2l0aG91dCBuZXcuXHJcbiAgICAgIGlmICghKHggaW5zdGFuY2VvZiBEZWNpbWFsKSkgcmV0dXJuIG5ldyBEZWNpbWFsKHYpO1xyXG5cclxuICAgICAgLy8gUmV0YWluIGEgcmVmZXJlbmNlIHRvIHRoaXMgRGVjaW1hbCBjb25zdHJ1Y3RvciwgYW5kIHNoYWRvdyBEZWNpbWFsLnByb3RvdHlwZS5jb25zdHJ1Y3RvclxyXG4gICAgICAvLyB3aGljaCBwb2ludHMgdG8gT2JqZWN0LlxyXG4gICAgICB4LmNvbnN0cnVjdG9yID0gRGVjaW1hbDtcclxuXHJcbiAgICAgIC8vIER1cGxpY2F0ZS5cclxuICAgICAgaWYgKGlzRGVjaW1hbEluc3RhbmNlKHYpKSB7XHJcbiAgICAgICAgeC5zID0gdi5zO1xyXG5cclxuICAgICAgICBpZiAoZXh0ZXJuYWwpIHtcclxuICAgICAgICAgIGlmICghdi5kIHx8IHYuZSA+IERlY2ltYWwubWF4RSkge1xyXG5cclxuICAgICAgICAgICAgLy8gSW5maW5pdHkuXHJcbiAgICAgICAgICAgIHguZSA9IE5hTjtcclxuICAgICAgICAgICAgeC5kID0gbnVsbDtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodi5lIDwgRGVjaW1hbC5taW5FKSB7XHJcblxyXG4gICAgICAgICAgICAvLyBaZXJvLlxyXG4gICAgICAgICAgICB4LmUgPSAwO1xyXG4gICAgICAgICAgICB4LmQgPSBbMF07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB4LmUgPSB2LmU7XHJcbiAgICAgICAgICAgIHguZCA9IHYuZC5zbGljZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB4LmUgPSB2LmU7XHJcbiAgICAgICAgICB4LmQgPSB2LmQgPyB2LmQuc2xpY2UoKSA6IHYuZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdCA9IHR5cGVvZiB2O1xyXG5cclxuICAgICAgaWYgKHQgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgaWYgKHYgPT09IDApIHtcclxuICAgICAgICAgIHgucyA9IDEgLyB2IDwgMCA/IC0xIDogMTtcclxuICAgICAgICAgIHguZSA9IDA7XHJcbiAgICAgICAgICB4LmQgPSBbMF07XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodiA8IDApIHtcclxuICAgICAgICAgIHYgPSAtdjtcclxuICAgICAgICAgIHgucyA9IC0xO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB4LnMgPSAxO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gRmFzdCBwYXRoIGZvciBzbWFsbCBpbnRlZ2Vycy5cclxuICAgICAgICBpZiAodiA9PT0gfn52ICYmIHYgPCAxZTcpIHtcclxuICAgICAgICAgIGZvciAoZSA9IDAsIGkgPSB2OyBpID49IDEwOyBpIC89IDEwKSBlKys7XHJcblxyXG4gICAgICAgICAgaWYgKGV4dGVybmFsKSB7XHJcbiAgICAgICAgICAgIGlmIChlID4gRGVjaW1hbC5tYXhFKSB7XHJcbiAgICAgICAgICAgICAgeC5lID0gTmFOO1xyXG4gICAgICAgICAgICAgIHguZCA9IG51bGw7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZSA8IERlY2ltYWwubWluRSkge1xyXG4gICAgICAgICAgICAgIHguZSA9IDA7XHJcbiAgICAgICAgICAgICAgeC5kID0gWzBdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHguZSA9IGU7XHJcbiAgICAgICAgICAgICAgeC5kID0gW3ZdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB4LmUgPSBlO1xyXG4gICAgICAgICAgICB4LmQgPSBbdl07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAvLyBJbmZpbml0eSwgTmFOLlxyXG4gICAgICAgIH0gZWxzZSBpZiAodiAqIDAgIT09IDApIHtcclxuICAgICAgICAgIGlmICghdikgeC5zID0gTmFOO1xyXG4gICAgICAgICAgeC5lID0gTmFOO1xyXG4gICAgICAgICAgeC5kID0gbnVsbDtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBwYXJzZURlY2ltYWwoeCwgdi50b1N0cmluZygpKTtcclxuXHJcbiAgICAgIH0gZWxzZSBpZiAodCAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgICB0aHJvdyBFcnJvcihpbnZhbGlkQXJndW1lbnQgKyB2KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gTWludXMgc2lnbj9cclxuICAgICAgaWYgKChpID0gdi5jaGFyQ29kZUF0KDApKSA9PT0gNDUpIHtcclxuICAgICAgICB2ID0gdi5zbGljZSgxKTtcclxuICAgICAgICB4LnMgPSAtMTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBQbHVzIHNpZ24/XHJcbiAgICAgICAgaWYgKGkgPT09IDQzKSB2ID0gdi5zbGljZSgxKTtcclxuICAgICAgICB4LnMgPSAxO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gaXNEZWNpbWFsLnRlc3QodikgPyBwYXJzZURlY2ltYWwoeCwgdikgOiBwYXJzZU90aGVyKHgsIHYpO1xyXG4gICAgfVxyXG5cclxuICAgIERlY2ltYWwucHJvdG90eXBlID0gUDtcclxuXHJcbiAgICBEZWNpbWFsLlJPVU5EX1VQID0gMDtcclxuICAgIERlY2ltYWwuUk9VTkRfRE9XTiA9IDE7XHJcbiAgICBEZWNpbWFsLlJPVU5EX0NFSUwgPSAyO1xyXG4gICAgRGVjaW1hbC5ST1VORF9GTE9PUiA9IDM7XHJcbiAgICBEZWNpbWFsLlJPVU5EX0hBTEZfVVAgPSA0O1xyXG4gICAgRGVjaW1hbC5ST1VORF9IQUxGX0RPV04gPSA1O1xyXG4gICAgRGVjaW1hbC5ST1VORF9IQUxGX0VWRU4gPSA2O1xyXG4gICAgRGVjaW1hbC5ST1VORF9IQUxGX0NFSUwgPSA3O1xyXG4gICAgRGVjaW1hbC5ST1VORF9IQUxGX0ZMT09SID0gODtcclxuICAgIERlY2ltYWwuRVVDTElEID0gOTtcclxuXHJcbiAgICBEZWNpbWFsLmNvbmZpZyA9IERlY2ltYWwuc2V0ID0gY29uZmlnO1xyXG4gICAgRGVjaW1hbC5jbG9uZSA9IGNsb25lO1xyXG4gICAgRGVjaW1hbC5pc0RlY2ltYWwgPSBpc0RlY2ltYWxJbnN0YW5jZTtcclxuXHJcbiAgICBEZWNpbWFsLmFicyA9IGFicztcclxuICAgIERlY2ltYWwuYWNvcyA9IGFjb3M7XHJcbiAgICBEZWNpbWFsLmFjb3NoID0gYWNvc2g7ICAgICAgICAvLyBFUzZcclxuICAgIERlY2ltYWwuYWRkID0gYWRkO1xyXG4gICAgRGVjaW1hbC5hc2luID0gYXNpbjtcclxuICAgIERlY2ltYWwuYXNpbmggPSBhc2luaDsgICAgICAgIC8vIEVTNlxyXG4gICAgRGVjaW1hbC5hdGFuID0gYXRhbjtcclxuICAgIERlY2ltYWwuYXRhbmggPSBhdGFuaDsgICAgICAgIC8vIEVTNlxyXG4gICAgRGVjaW1hbC5hdGFuMiA9IGF0YW4yO1xyXG4gICAgRGVjaW1hbC5jYnJ0ID0gY2JydDsgICAgICAgICAgLy8gRVM2XHJcbiAgICBEZWNpbWFsLmNlaWwgPSBjZWlsO1xyXG4gICAgRGVjaW1hbC5jbGFtcCA9IGNsYW1wO1xyXG4gICAgRGVjaW1hbC5jb3MgPSBjb3M7XHJcbiAgICBEZWNpbWFsLmNvc2ggPSBjb3NoOyAgICAgICAgICAvLyBFUzZcclxuICAgIERlY2ltYWwuZGl2ID0gZGl2O1xyXG4gICAgRGVjaW1hbC5leHAgPSBleHA7XHJcbiAgICBEZWNpbWFsLmZsb29yID0gZmxvb3I7XHJcbiAgICBEZWNpbWFsLmh5cG90ID0gaHlwb3Q7ICAgICAgICAvLyBFUzZcclxuICAgIERlY2ltYWwubG4gPSBsbjtcclxuICAgIERlY2ltYWwubG9nID0gbG9nO1xyXG4gICAgRGVjaW1hbC5sb2cxMCA9IGxvZzEwOyAgICAgICAgLy8gRVM2XHJcbiAgICBEZWNpbWFsLmxvZzIgPSBsb2cyOyAgICAgICAgICAvLyBFUzZcclxuICAgIERlY2ltYWwubWF4ID0gbWF4O1xyXG4gICAgRGVjaW1hbC5taW4gPSBtaW47XHJcbiAgICBEZWNpbWFsLm1vZCA9IG1vZDtcclxuICAgIERlY2ltYWwubXVsID0gbXVsO1xyXG4gICAgRGVjaW1hbC5wb3cgPSBwb3c7XHJcbiAgICBEZWNpbWFsLnJhbmRvbSA9IHJhbmRvbTtcclxuICAgIERlY2ltYWwucm91bmQgPSByb3VuZDtcclxuICAgIERlY2ltYWwuc2lnbiA9IHNpZ247ICAgICAgICAgIC8vIEVTNlxyXG4gICAgRGVjaW1hbC5zaW4gPSBzaW47XHJcbiAgICBEZWNpbWFsLnNpbmggPSBzaW5oOyAgICAgICAgICAvLyBFUzZcclxuICAgIERlY2ltYWwuc3FydCA9IHNxcnQ7XHJcbiAgICBEZWNpbWFsLnN1YiA9IHN1YjtcclxuICAgIERlY2ltYWwuc3VtID0gc3VtO1xyXG4gICAgRGVjaW1hbC50YW4gPSB0YW47XHJcbiAgICBEZWNpbWFsLnRhbmggPSB0YW5oOyAgICAgICAgICAvLyBFUzZcclxuICAgIERlY2ltYWwudHJ1bmMgPSB0cnVuYzsgICAgICAgIC8vIEVTNlxyXG5cclxuICAgIGlmIChvYmogPT09IHZvaWQgMCkgb2JqID0ge307XHJcbiAgICBpZiAob2JqKSB7XHJcbiAgICAgIGlmIChvYmouZGVmYXVsdHMgIT09IHRydWUpIHtcclxuICAgICAgICBwcyA9IFsncHJlY2lzaW9uJywgJ3JvdW5kaW5nJywgJ3RvRXhwTmVnJywgJ3RvRXhwUG9zJywgJ21heEUnLCAnbWluRScsICdtb2R1bG8nLCAnY3J5cHRvJ107XHJcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHBzLmxlbmd0aDspIGlmICghb2JqLmhhc093blByb3BlcnR5KHAgPSBwc1tpKytdKSkgb2JqW3BdID0gdGhpc1twXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIERlY2ltYWwuY29uZmlnKG9iaik7XHJcblxyXG4gICAgcmV0dXJuIERlY2ltYWw7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyBgeGAgZGl2aWRlZCBieSBgeWAsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAgc2lnbmlmaWNhbnRcclxuICAgKiBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqIHkge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGRpdih4LCB5KSB7XHJcbiAgICByZXR1cm4gbmV3IHRoaXMoeCkuZGl2KHkpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIG5hdHVyYWwgZXhwb25lbnRpYWwgb2YgYHhgLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gXHJcbiAgICogc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH0gVGhlIHBvd2VyIHRvIHdoaWNoIHRvIHJhaXNlIHRoZSBiYXNlIG9mIHRoZSBuYXR1cmFsIGxvZy5cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGV4cCh4KSB7XHJcbiAgICByZXR1cm4gbmV3IHRoaXMoeCkuZXhwKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyBgeGAgcm91bmQgdG8gYW4gaW50ZWdlciB1c2luZyBgUk9VTkRfRkxPT1JgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gZmxvb3IoeCkge1xyXG4gICAgcmV0dXJuIGZpbmFsaXNlKHggPSBuZXcgdGhpcyh4KSwgeC5lICsgMSwgMyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgc3F1YXJlIHJvb3Qgb2YgdGhlIHN1bSBvZiB0aGUgc3F1YXJlcyBvZiB0aGUgYXJndW1lbnRzLFxyXG4gICAqIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAgc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIGh5cG90KGEsIGIsIC4uLikgPSBzcXJ0KGFeMiArIGJeMiArIC4uLilcclxuICAgKlxyXG4gICAqIGFyZ3VtZW50cyB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gaHlwb3QoKSB7XHJcbiAgICB2YXIgaSwgbixcclxuICAgICAgdCA9IG5ldyB0aGlzKDApO1xyXG5cclxuICAgIGV4dGVybmFsID0gZmFsc2U7XHJcblxyXG4gICAgZm9yIChpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7KSB7XHJcbiAgICAgIG4gPSBuZXcgdGhpcyhhcmd1bWVudHNbaSsrXSk7XHJcbiAgICAgIGlmICghbi5kKSB7XHJcbiAgICAgICAgaWYgKG4ucykge1xyXG4gICAgICAgICAgZXh0ZXJuYWwgPSB0cnVlO1xyXG4gICAgICAgICAgcmV0dXJuIG5ldyB0aGlzKDEgLyAwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdCA9IG47XHJcbiAgICAgIH0gZWxzZSBpZiAodC5kKSB7XHJcbiAgICAgICAgdCA9IHQucGx1cyhuLnRpbWVzKG4pKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gdC5zcXJ0KCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gdHJ1ZSBpZiBvYmplY3QgaXMgYSBEZWNpbWFsIGluc3RhbmNlICh3aGVyZSBEZWNpbWFsIGlzIGFueSBEZWNpbWFsIGNvbnN0cnVjdG9yKSxcclxuICAgKiBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gaXNEZWNpbWFsSW5zdGFuY2Uob2JqKSB7XHJcbiAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgRGVjaW1hbCB8fCBvYmogJiYgb2JqLnRvU3RyaW5nVGFnID09PSB0YWcgfHwgZmFsc2U7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgbmF0dXJhbCBsb2dhcml0aG0gb2YgYHhgLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gXHJcbiAgICogc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGxuKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5sbigpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGxvZyBvZiBgeGAgdG8gdGhlIGJhc2UgYHlgLCBvciB0byBiYXNlIDEwIGlmIG5vIGJhc2VcclxuICAgKiBpcyBzcGVjaWZpZWQsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAgc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIGxvZ1t5XSh4KVxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfSBUaGUgYXJndW1lbnQgb2YgdGhlIGxvZ2FyaXRobS5cclxuICAgKiB5IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9IFRoZSBiYXNlIG9mIHRoZSBsb2dhcml0aG0uXHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBsb2coeCwgeSkge1xyXG4gICAgcmV0dXJuIG5ldyB0aGlzKHgpLmxvZyh5KTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBiYXNlIDIgbG9nYXJpdGhtIG9mIGB4YCwgcm91bmRlZCB0byBgcHJlY2lzaW9uYFxyXG4gICAqIHNpZ25pZmljYW50IGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBsb2cyKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5sb2coMik7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgYmFzZSAxMCBsb2dhcml0aG0gb2YgYHhgLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gXHJcbiAgICogc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGxvZzEwKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5sb2coMTApO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIG1heGltdW0gb2YgdGhlIGFyZ3VtZW50cy5cclxuICAgKlxyXG4gICAqIGFyZ3VtZW50cyB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gbWF4KCkge1xyXG4gICAgcmV0dXJuIG1heE9yTWluKHRoaXMsIGFyZ3VtZW50cywgJ2x0Jyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgbWluaW11bSBvZiB0aGUgYXJndW1lbnRzLlxyXG4gICAqXHJcbiAgICogYXJndW1lbnRzIHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBtaW4oKSB7XHJcbiAgICByZXR1cm4gbWF4T3JNaW4odGhpcywgYXJndW1lbnRzLCAnZ3QnKTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIGB4YCBtb2R1bG8gYHlgLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gIHNpZ25pZmljYW50IGRpZ2l0c1xyXG4gICAqIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKiB5IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBtb2QoeCwgeSkge1xyXG4gICAgcmV0dXJuIG5ldyB0aGlzKHgpLm1vZCh5KTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIGB4YCBtdWx0aXBsaWVkIGJ5IGB5YCwgcm91bmRlZCB0byBgcHJlY2lzaW9uYCBzaWduaWZpY2FudFxyXG4gICAqIGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICogeSB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gbXVsKHgsIHkpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5tdWwoeSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyBgeGAgcmFpc2VkIHRvIHRoZSBwb3dlciBgeWAsIHJvdW5kZWQgdG8gcHJlY2lzaW9uXHJcbiAgICogc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH0gVGhlIGJhc2UuXHJcbiAgICogeSB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfSBUaGUgZXhwb25lbnQuXHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBwb3coeCwgeSkge1xyXG4gICAgcmV0dXJuIG5ldyB0aGlzKHgpLnBvdyh5KTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybnMgYSBuZXcgRGVjaW1hbCB3aXRoIGEgcmFuZG9tIHZhbHVlIGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbiAwIGFuZCBsZXNzIHRoYW4gMSwgYW5kIHdpdGhcclxuICAgKiBgc2RgLCBvciBgRGVjaW1hbC5wcmVjaXNpb25gIGlmIGBzZGAgaXMgb21pdHRlZCwgc2lnbmlmaWNhbnQgZGlnaXRzIChvciBsZXNzIGlmIHRyYWlsaW5nIHplcm9zXHJcbiAgICogYXJlIHByb2R1Y2VkKS5cclxuICAgKlxyXG4gICAqIFtzZF0ge251bWJlcn0gU2lnbmlmaWNhbnQgZGlnaXRzLiBJbnRlZ2VyLCAwIHRvIE1BWF9ESUdJVFMgaW5jbHVzaXZlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gcmFuZG9tKHNkKSB7XHJcbiAgICB2YXIgZCwgZSwgaywgbixcclxuICAgICAgaSA9IDAsXHJcbiAgICAgIHIgPSBuZXcgdGhpcygxKSxcclxuICAgICAgcmQgPSBbXTtcclxuXHJcbiAgICBpZiAoc2QgPT09IHZvaWQgMCkgc2QgPSB0aGlzLnByZWNpc2lvbjtcclxuICAgIGVsc2UgY2hlY2tJbnQzMihzZCwgMSwgTUFYX0RJR0lUUyk7XHJcblxyXG4gICAgayA9IE1hdGguY2VpbChzZCAvIExPR19CQVNFKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuY3J5cHRvKSB7XHJcbiAgICAgIGZvciAoOyBpIDwgazspIHJkW2krK10gPSBNYXRoLnJhbmRvbSgpICogMWU3IHwgMDtcclxuXHJcbiAgICAvLyBCcm93c2VycyBzdXBwb3J0aW5nIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMuXHJcbiAgICB9IGVsc2UgaWYgKGNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcclxuICAgICAgZCA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQzMkFycmF5KGspKTtcclxuXHJcbiAgICAgIGZvciAoOyBpIDwgazspIHtcclxuICAgICAgICBuID0gZFtpXTtcclxuXHJcbiAgICAgICAgLy8gMCA8PSBuIDwgNDI5NDk2NzI5NlxyXG4gICAgICAgIC8vIFByb2JhYmlsaXR5IG4gPj0gNC4yOWU5LCBpcyA0OTY3Mjk2IC8gNDI5NDk2NzI5NiA9IDAuMDAxMTYgKDEgaW4gODY1KS5cclxuICAgICAgICBpZiAobiA+PSA0LjI5ZTkpIHtcclxuICAgICAgICAgIGRbaV0gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheSgxKSlbMF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAvLyAwIDw9IG4gPD0gNDI4OTk5OTk5OVxyXG4gICAgICAgICAgLy8gMCA8PSAobiAlIDFlNykgPD0gOTk5OTk5OVxyXG4gICAgICAgICAgcmRbaSsrXSA9IG4gJSAxZTc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgLy8gTm9kZS5qcyBzdXBwb3J0aW5nIGNyeXB0by5yYW5kb21CeXRlcy5cclxuICAgIH0gZWxzZSBpZiAoY3J5cHRvLnJhbmRvbUJ5dGVzKSB7XHJcblxyXG4gICAgICAvLyBidWZmZXJcclxuICAgICAgZCA9IGNyeXB0by5yYW5kb21CeXRlcyhrICo9IDQpO1xyXG5cclxuICAgICAgZm9yICg7IGkgPCBrOykge1xyXG5cclxuICAgICAgICAvLyAwIDw9IG4gPCAyMTQ3NDgzNjQ4XHJcbiAgICAgICAgbiA9IGRbaV0gKyAoZFtpICsgMV0gPDwgOCkgKyAoZFtpICsgMl0gPDwgMTYpICsgKChkW2kgKyAzXSAmIDB4N2YpIDw8IDI0KTtcclxuXHJcbiAgICAgICAgLy8gUHJvYmFiaWxpdHkgbiA+PSAyLjE0ZTksIGlzIDc0ODM2NDggLyAyMTQ3NDgzNjQ4ID0gMC4wMDM1ICgxIGluIDI4NikuXHJcbiAgICAgICAgaWYgKG4gPj0gMi4xNGU5KSB7XHJcbiAgICAgICAgICBjcnlwdG8ucmFuZG9tQnl0ZXMoNCkuY29weShkLCBpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vIDAgPD0gbiA8PSAyMTM5OTk5OTk5XHJcbiAgICAgICAgICAvLyAwIDw9IChuICUgMWU3KSA8PSA5OTk5OTk5XHJcbiAgICAgICAgICByZC5wdXNoKG4gJSAxZTcpO1xyXG4gICAgICAgICAgaSArPSA0O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaSA9IGsgLyA0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhyb3cgRXJyb3IoY3J5cHRvVW5hdmFpbGFibGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGsgPSByZFstLWldO1xyXG4gICAgc2QgJT0gTE9HX0JBU0U7XHJcblxyXG4gICAgLy8gQ29udmVydCB0cmFpbGluZyBkaWdpdHMgdG8gemVyb3MgYWNjb3JkaW5nIHRvIHNkLlxyXG4gICAgaWYgKGsgJiYgc2QpIHtcclxuICAgICAgbiA9IG1hdGhwb3coMTAsIExPR19CQVNFIC0gc2QpO1xyXG4gICAgICByZFtpXSA9IChrIC8gbiB8IDApICogbjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZW1vdmUgdHJhaWxpbmcgd29yZHMgd2hpY2ggYXJlIHplcm8uXHJcbiAgICBmb3IgKDsgcmRbaV0gPT09IDA7IGktLSkgcmQucG9wKCk7XHJcblxyXG4gICAgLy8gWmVybz9cclxuICAgIGlmIChpIDwgMCkge1xyXG4gICAgICBlID0gMDtcclxuICAgICAgcmQgPSBbMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBlID0gLTE7XHJcblxyXG4gICAgICAvLyBSZW1vdmUgbGVhZGluZyB3b3JkcyB3aGljaCBhcmUgemVybyBhbmQgYWRqdXN0IGV4cG9uZW50IGFjY29yZGluZ2x5LlxyXG4gICAgICBmb3IgKDsgcmRbMF0gPT09IDA7IGUgLT0gTE9HX0JBU0UpIHJkLnNoaWZ0KCk7XHJcblxyXG4gICAgICAvLyBDb3VudCB0aGUgZGlnaXRzIG9mIHRoZSBmaXJzdCB3b3JkIG9mIHJkIHRvIGRldGVybWluZSBsZWFkaW5nIHplcm9zLlxyXG4gICAgICBmb3IgKGsgPSAxLCBuID0gcmRbMF07IG4gPj0gMTA7IG4gLz0gMTApIGsrKztcclxuXHJcbiAgICAgIC8vIEFkanVzdCB0aGUgZXhwb25lbnQgZm9yIGxlYWRpbmcgemVyb3Mgb2YgdGhlIGZpcnN0IHdvcmQgb2YgcmQuXHJcbiAgICAgIGlmIChrIDwgTE9HX0JBU0UpIGUgLT0gTE9HX0JBU0UgLSBrO1xyXG4gICAgfVxyXG5cclxuICAgIHIuZSA9IGU7XHJcbiAgICByLmQgPSByZDtcclxuXHJcbiAgICByZXR1cm4gcjtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIGB4YCByb3VuZGVkIHRvIGFuIGludGVnZXIgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogVG8gZW11bGF0ZSBgTWF0aC5yb3VuZGAsIHNldCByb3VuZGluZyB0byA3IChST1VORF9IQUxGX0NFSUwpLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gcm91bmQoeCkge1xyXG4gICAgcmV0dXJuIGZpbmFsaXNlKHggPSBuZXcgdGhpcyh4KSwgeC5lICsgMSwgdGhpcy5yb3VuZGluZyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm5cclxuICAgKiAgIDEgICAgaWYgeCA+IDAsXHJcbiAgICogIC0xICAgIGlmIHggPCAwLFxyXG4gICAqICAgMCAgICBpZiB4IGlzIDAsXHJcbiAgICogIC0wICAgIGlmIHggaXMgLTAsXHJcbiAgICogICBOYU4gIG90aGVyd2lzZVxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gc2lnbih4KSB7XHJcbiAgICB4ID0gbmV3IHRoaXMoeCk7XHJcbiAgICByZXR1cm4geC5kID8gKHguZFswXSA/IHgucyA6IDAgKiB4LnMpIDogeC5zIHx8IE5hTjtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBzaW5lIG9mIGB4YCwgcm91bmRlZCB0byBgcHJlY2lzaW9uYCBzaWduaWZpY2FudCBkaWdpdHNcclxuICAgKiB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9IEEgdmFsdWUgaW4gcmFkaWFucy5cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIHNpbih4KSB7XHJcbiAgICByZXR1cm4gbmV3IHRoaXMoeCkuc2luKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgaHlwZXJib2xpYyBzaW5lIG9mIGB4YCwgcm91bmRlZCB0byBgcHJlY2lzaW9uYFxyXG4gICAqIHNpZ25pZmljYW50IGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9IEEgdmFsdWUgaW4gcmFkaWFucy5cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIHNpbmgoeCkge1xyXG4gICAgcmV0dXJuIG5ldyB0aGlzKHgpLnNpbmgoKTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBzcXVhcmUgcm9vdCBvZiBgeGAsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAgc2lnbmlmaWNhbnRcclxuICAgKiBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gc3FydCh4KSB7XHJcbiAgICByZXR1cm4gbmV3IHRoaXMoeCkuc3FydCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgYHhgIG1pbnVzIGB5YCwgcm91bmRlZCB0byBgcHJlY2lzaW9uYCBzaWduaWZpY2FudCBkaWdpdHNcclxuICAgKiB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICogeSB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gc3ViKHgsIHkpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5zdWIoeSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgc3VtIG9mIHRoZSBhcmd1bWVudHMsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmBcclxuICAgKiBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogT25seSB0aGUgcmVzdWx0IGlzIHJvdW5kZWQsIG5vdCB0aGUgaW50ZXJtZWRpYXRlIGNhbGN1bGF0aW9ucy5cclxuICAgKlxyXG4gICAqIGFyZ3VtZW50cyB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gc3VtKCkge1xyXG4gICAgdmFyIGkgPSAwLFxyXG4gICAgICBhcmdzID0gYXJndW1lbnRzLFxyXG4gICAgICB4ID0gbmV3IHRoaXMoYXJnc1tpXSk7XHJcblxyXG4gICAgZXh0ZXJuYWwgPSBmYWxzZTtcclxuICAgIGZvciAoOyB4LnMgJiYgKytpIDwgYXJncy5sZW5ndGg7KSB4ID0geC5wbHVzKGFyZ3NbaV0pO1xyXG4gICAgZXh0ZXJuYWwgPSB0cnVlO1xyXG5cclxuICAgIHJldHVybiBmaW5hbGlzZSh4LCB0aGlzLnByZWNpc2lvbiwgdGhpcy5yb3VuZGluZyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgdGFuZ2VudCBvZiBgeGAsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAgc2lnbmlmaWNhbnRcclxuICAgKiBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfSBBIHZhbHVlIGluIHJhZGlhbnMuXHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiB0YW4oeCkge1xyXG4gICAgcmV0dXJuIG5ldyB0aGlzKHgpLnRhbigpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGh5cGVyYm9saWMgdGFuZ2VudCBvZiBgeGAsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmBcclxuICAgKiBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfSBBIHZhbHVlIGluIHJhZGlhbnMuXHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiB0YW5oKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS50YW5oKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyBgeGAgdHJ1bmNhdGVkIHRvIGFuIGludGVnZXIuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiB0cnVuYyh4KSB7XHJcbiAgICByZXR1cm4gZmluYWxpc2UoeCA9IG5ldyB0aGlzKHgpLCB4LmUgKyAxLCAxKTtcclxuICB9XHJcblxyXG5cclxuICAvLyBDcmVhdGUgYW5kIGNvbmZpZ3VyZSBpbml0aWFsIERlY2ltYWwgY29uc3RydWN0b3IuXHJcbiAgRGVjaW1hbCA9IGNsb25lKERFRkFVTFRTKTtcclxuICBEZWNpbWFsLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IERlY2ltYWw7XHJcbiAgRGVjaW1hbFsnZGVmYXVsdCddID0gRGVjaW1hbC5EZWNpbWFsID0gRGVjaW1hbDtcclxuXHJcbiAgLy8gQ3JlYXRlIHRoZSBpbnRlcm5hbCBjb25zdGFudHMgZnJvbSB0aGVpciBzdHJpbmcgdmFsdWVzLlxyXG4gIExOMTAgPSBuZXcgRGVjaW1hbChMTjEwKTtcclxuICBQSSA9IG5ldyBEZWNpbWFsKFBJKTtcclxuXHJcblxyXG4gIC8vIEV4cG9ydC5cclxuXHJcblxyXG4gIC8vIEFNRC5cclxuICBpZiAodHlwZW9mIGRlZmluZSA9PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcclxuICAgIGRlZmluZShmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiBEZWNpbWFsO1xyXG4gICAgfSk7XHJcblxyXG4gIC8vIE5vZGUgYW5kIG90aGVyIGVudmlyb25tZW50cyB0aGF0IHN1cHBvcnQgbW9kdWxlLmV4cG9ydHMuXHJcbiAgfSBlbHNlIGlmICh0eXBlb2YgbW9kdWxlICE9ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7XHJcbiAgICBpZiAodHlwZW9mIFN5bWJvbCA9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT0gJ3N5bWJvbCcpIHtcclxuICAgICAgUFtTeW1ib2xbJ2ZvciddKCdub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbScpXSA9IFAudG9TdHJpbmc7XHJcbiAgICAgIFBbU3ltYm9sLnRvU3RyaW5nVGFnXSA9ICdEZWNpbWFsJztcclxuICAgIH1cclxuXHJcbiAgICBtb2R1bGUuZXhwb3J0cyA9IERlY2ltYWw7XHJcblxyXG4gIC8vIEJyb3dzZXIuXHJcbiAgfSBlbHNlIHtcclxuICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcclxuICAgICAgZ2xvYmFsU2NvcGUgPSB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmICYmIHNlbGYuc2VsZiA9PSBzZWxmID8gc2VsZiA6IHdpbmRvdztcclxuICAgIH1cclxuXHJcbiAgICBub0NvbmZsaWN0ID0gZ2xvYmFsU2NvcGUuRGVjaW1hbDtcclxuICAgIERlY2ltYWwubm9Db25mbGljdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgZ2xvYmFsU2NvcGUuRGVjaW1hbCA9IG5vQ29uZmxpY3Q7XHJcbiAgICAgIHJldHVybiBEZWNpbWFsO1xyXG4gICAgfTtcclxuXHJcbiAgICBnbG9iYWxTY29wZS5EZWNpbWFsID0gRGVjaW1hbDtcclxuICB9XHJcbn0pKHRoaXMpO1xyXG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBMb2Rhc2ggPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBDb3B5cmlnaHQgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyA8aHR0cHM6Ly9vcGVuanNmLm9yZy8+XG4gKiBSZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKi9cbjsoZnVuY3Rpb24oKSB7XG5cbiAgLyoqIFVzZWQgYXMgYSBzYWZlIHJlZmVyZW5jZSBmb3IgYHVuZGVmaW5lZGAgaW4gcHJlLUVTNSBlbnZpcm9ubWVudHMuICovXG4gIHZhciB1bmRlZmluZWQ7XG5cbiAgLyoqIFVzZWQgYXMgdGhlIHNlbWFudGljIHZlcnNpb24gbnVtYmVyLiAqL1xuICB2YXIgVkVSU0lPTiA9ICc0LjE3LjIwJztcblxuICAvKiogVXNlZCBhcyB0aGUgc2l6ZSB0byBlbmFibGUgbGFyZ2UgYXJyYXkgb3B0aW1pemF0aW9ucy4gKi9cbiAgdmFyIExBUkdFX0FSUkFZX1NJWkUgPSAyMDA7XG5cbiAgLyoqIEVycm9yIG1lc3NhZ2UgY29uc3RhbnRzLiAqL1xuICB2YXIgQ09SRV9FUlJPUl9URVhUID0gJ1Vuc3VwcG9ydGVkIGNvcmUtanMgdXNlLiBUcnkgaHR0cHM6Ly9ucG1zLmlvL3NlYXJjaD9xPXBvbnlmaWxsLicsXG4gICAgICBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbiAgLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xuICB2YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbiAgLyoqIFVzZWQgYXMgdGhlIG1heGltdW0gbWVtb2l6ZSBjYWNoZSBzaXplLiAqL1xuICB2YXIgTUFYX01FTU9JWkVfU0laRSA9IDUwMDtcblxuICAvKiogVXNlZCBhcyB0aGUgaW50ZXJuYWwgYXJndW1lbnQgcGxhY2Vob2xkZXIuICovXG4gIHZhciBQTEFDRUhPTERFUiA9ICdfX2xvZGFzaF9wbGFjZWhvbGRlcl9fJztcblxuICAvKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciBjbG9uaW5nLiAqL1xuICB2YXIgQ0xPTkVfREVFUF9GTEFHID0gMSxcbiAgICAgIENMT05FX0ZMQVRfRkxBRyA9IDIsXG4gICAgICBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4gIC8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xuICB2YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbiAgLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgZnVuY3Rpb24gbWV0YWRhdGEuICovXG4gIHZhciBXUkFQX0JJTkRfRkxBRyA9IDEsXG4gICAgICBXUkFQX0JJTkRfS0VZX0ZMQUcgPSAyLFxuICAgICAgV1JBUF9DVVJSWV9CT1VORF9GTEFHID0gNCxcbiAgICAgIFdSQVBfQ1VSUllfRkxBRyA9IDgsXG4gICAgICBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcgPSAxNixcbiAgICAgIFdSQVBfUEFSVElBTF9GTEFHID0gMzIsXG4gICAgICBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRyA9IDY0LFxuICAgICAgV1JBUF9BUllfRkxBRyA9IDEyOCxcbiAgICAgIFdSQVBfUkVBUkdfRkxBRyA9IDI1NixcbiAgICAgIFdSQVBfRkxJUF9GTEFHID0gNTEyO1xuXG4gIC8qKiBVc2VkIGFzIGRlZmF1bHQgb3B0aW9ucyBmb3IgYF8udHJ1bmNhdGVgLiAqL1xuICB2YXIgREVGQVVMVF9UUlVOQ19MRU5HVEggPSAzMCxcbiAgICAgIERFRkFVTFRfVFJVTkNfT01JU1NJT04gPSAnLi4uJztcblxuICAvKiogVXNlZCB0byBkZXRlY3QgaG90IGZ1bmN0aW9ucyBieSBudW1iZXIgb2YgY2FsbHMgd2l0aGluIGEgc3BhbiBvZiBtaWxsaXNlY29uZHMuICovXG4gIHZhciBIT1RfQ09VTlQgPSA4MDAsXG4gICAgICBIT1RfU1BBTiA9IDE2O1xuXG4gIC8qKiBVc2VkIHRvIGluZGljYXRlIHRoZSB0eXBlIG9mIGxhenkgaXRlcmF0ZWVzLiAqL1xuICB2YXIgTEFaWV9GSUxURVJfRkxBRyA9IDEsXG4gICAgICBMQVpZX01BUF9GTEFHID0gMixcbiAgICAgIExBWllfV0hJTEVfRkxBRyA9IDM7XG5cbiAgLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG4gIHZhciBJTkZJTklUWSA9IDEgLyAwLFxuICAgICAgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTEsXG4gICAgICBNQVhfSU5URUdFUiA9IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4LFxuICAgICAgTkFOID0gMCAvIDA7XG5cbiAgLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdGhlIG1heGltdW0gbGVuZ3RoIGFuZCBpbmRleCBvZiBhbiBhcnJheS4gKi9cbiAgdmFyIE1BWF9BUlJBWV9MRU5HVEggPSA0Mjk0OTY3Mjk1LFxuICAgICAgTUFYX0FSUkFZX0lOREVYID0gTUFYX0FSUkFZX0xFTkdUSCAtIDEsXG4gICAgICBIQUxGX01BWF9BUlJBWV9MRU5HVEggPSBNQVhfQVJSQVlfTEVOR1RIID4+PiAxO1xuXG4gIC8qKiBVc2VkIHRvIGFzc29jaWF0ZSB3cmFwIG1ldGhvZHMgd2l0aCB0aGVpciBiaXQgZmxhZ3MuICovXG4gIHZhciB3cmFwRmxhZ3MgPSBbXG4gICAgWydhcnknLCBXUkFQX0FSWV9GTEFHXSxcbiAgICBbJ2JpbmQnLCBXUkFQX0JJTkRfRkxBR10sXG4gICAgWydiaW5kS2V5JywgV1JBUF9CSU5EX0tFWV9GTEFHXSxcbiAgICBbJ2N1cnJ5JywgV1JBUF9DVVJSWV9GTEFHXSxcbiAgICBbJ2N1cnJ5UmlnaHQnLCBXUkFQX0NVUlJZX1JJR0hUX0ZMQUddLFxuICAgIFsnZmxpcCcsIFdSQVBfRkxJUF9GTEFHXSxcbiAgICBbJ3BhcnRpYWwnLCBXUkFQX1BBUlRJQUxfRkxBR10sXG4gICAgWydwYXJ0aWFsUmlnaHQnLCBXUkFQX1BBUlRJQUxfUklHSFRfRkxBR10sXG4gICAgWydyZWFyZycsIFdSQVBfUkVBUkdfRkxBR11cbiAgXTtcblxuICAvKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG4gIHZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgICBhc3luY1RhZyA9ICdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJyxcbiAgICAgIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgICAgZG9tRXhjVGFnID0gJ1tvYmplY3QgRE9NRXhjZXB0aW9uXScsXG4gICAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsXG4gICAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgICAgbnVsbFRhZyA9ICdbb2JqZWN0IE51bGxdJyxcbiAgICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgICAgcHJvbWlzZVRhZyA9ICdbb2JqZWN0IFByb21pc2VdJyxcbiAgICAgIHByb3h5VGFnID0gJ1tvYmplY3QgUHJveHldJyxcbiAgICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nLFxuICAgICAgdW5kZWZpbmVkVGFnID0gJ1tvYmplY3QgVW5kZWZpbmVkXScsXG4gICAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nLFxuICAgICAgd2Vha1NldFRhZyA9ICdbb2JqZWN0IFdlYWtTZXRdJztcblxuICB2YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGVtcHR5IHN0cmluZyBsaXRlcmFscyBpbiBjb21waWxlZCB0ZW1wbGF0ZSBzb3VyY2UuICovXG4gIHZhciByZUVtcHR5U3RyaW5nTGVhZGluZyA9IC9cXGJfX3AgXFwrPSAnJzsvZyxcbiAgICAgIHJlRW1wdHlTdHJpbmdNaWRkbGUgPSAvXFxiKF9fcCBcXCs9KSAnJyBcXCsvZyxcbiAgICAgIHJlRW1wdHlTdHJpbmdUcmFpbGluZyA9IC8oX19lXFwoLio/XFwpfFxcYl9fdFxcKSkgXFwrXFxuJyc7L2c7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggSFRNTCBlbnRpdGllcyBhbmQgSFRNTCBjaGFyYWN0ZXJzLiAqL1xuICB2YXIgcmVFc2NhcGVkSHRtbCA9IC8mKD86YW1wfGx0fGd0fHF1b3R8IzM5KTsvZyxcbiAgICAgIHJlVW5lc2NhcGVkSHRtbCA9IC9bJjw+XCInXS9nLFxuICAgICAgcmVIYXNFc2NhcGVkSHRtbCA9IFJlZ0V4cChyZUVzY2FwZWRIdG1sLnNvdXJjZSksXG4gICAgICByZUhhc1VuZXNjYXBlZEh0bWwgPSBSZWdFeHAocmVVbmVzY2FwZWRIdG1sLnNvdXJjZSk7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggdGVtcGxhdGUgZGVsaW1pdGVycy4gKi9cbiAgdmFyIHJlRXNjYXBlID0gLzwlLShbXFxzXFxTXSs/KSU+L2csXG4gICAgICByZUV2YWx1YXRlID0gLzwlKFtcXHNcXFNdKz8pJT4vZyxcbiAgICAgIHJlSW50ZXJwb2xhdGUgPSAvPCU9KFtcXHNcXFNdKz8pJT4vZztcblxuICAvKiogVXNlZCB0byBtYXRjaCBwcm9wZXJ0eSBuYW1lcyB3aXRoaW4gcHJvcGVydHkgcGF0aHMuICovXG4gIHZhciByZUlzRGVlcFByb3AgPSAvXFwufFxcWyg/OlteW1xcXV0qfChbXCInXSkoPzooPyFcXDEpW15cXFxcXXxcXFxcLikqP1xcMSlcXF0vLFxuICAgICAgcmVJc1BsYWluUHJvcCA9IC9eXFx3KiQvLFxuICAgICAgcmVQcm9wTmFtZSA9IC9bXi5bXFxdXSt8XFxbKD86KC0/XFxkKyg/OlxcLlxcZCspPyl8KFtcIiddKSgoPzooPyFcXDIpW15cXFxcXXxcXFxcLikqPylcXDIpXFxdfCg/PSg/OlxcLnxcXFtcXF0pKD86XFwufFxcW1xcXXwkKSkvZztcblxuICAvKipcbiAgICogVXNlZCB0byBtYXRjaCBgUmVnRXhwYFxuICAgKiBbc3ludGF4IGNoYXJhY3RlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXBhdHRlcm5zKS5cbiAgICovXG4gIHZhciByZVJlZ0V4cENoYXIgPSAvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2csXG4gICAgICByZUhhc1JlZ0V4cENoYXIgPSBSZWdFeHAocmVSZWdFeHBDaGFyLnNvdXJjZSk7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gKi9cbiAgdmFyIHJlVHJpbSA9IC9eXFxzK3xcXHMrJC9nLFxuICAgICAgcmVUcmltU3RhcnQgPSAvXlxccysvLFxuICAgICAgcmVUcmltRW5kID0gL1xccyskLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB3cmFwIGRldGFpbCBjb21tZW50cy4gKi9cbiAgdmFyIHJlV3JhcENvbW1lbnQgPSAvXFx7KD86XFxuXFwvXFwqIFxcW3dyYXBwZWQgd2l0aCAuK1xcXSBcXCpcXC8pP1xcbj8vLFxuICAgICAgcmVXcmFwRGV0YWlscyA9IC9cXHtcXG5cXC9cXCogXFxbd3JhcHBlZCB3aXRoICguKylcXF0gXFwqLyxcbiAgICAgIHJlU3BsaXREZXRhaWxzID0gLyw/ICYgLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB3b3JkcyBjb21wb3NlZCBvZiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4gKi9cbiAgdmFyIHJlQXNjaWlXb3JkID0gL1teXFx4MDAtXFx4MmZcXHgzYS1cXHg0MFxceDViLVxceDYwXFx4N2ItXFx4N2ZdKy9nO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGJhY2tzbGFzaGVzIGluIHByb3BlcnR5IHBhdGhzLiAqL1xuICB2YXIgcmVFc2NhcGVDaGFyID0gL1xcXFwoXFxcXCk/L2c7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gbWF0Y2hcbiAgICogW0VTIHRlbXBsYXRlIGRlbGltaXRlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRlbXBsYXRlLWxpdGVyYWwtbGV4aWNhbC1jb21wb25lbnRzKS5cbiAgICovXG4gIHZhciByZUVzVGVtcGxhdGUgPSAvXFwkXFx7KFteXFxcXH1dKig/OlxcXFwuW15cXFxcfV0qKSopXFx9L2c7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGAgZmxhZ3MgZnJvbSB0aGVpciBjb2VyY2VkIHN0cmluZyB2YWx1ZXMuICovXG4gIHZhciByZUZsYWdzID0gL1xcdyokLztcblxuICAvKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL1xuICB2YXIgcmVJc0JhZEhleCA9IC9eWy0rXTB4WzAtOWEtZl0rJC9pO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBiaW5hcnkgc3RyaW5nIHZhbHVlcy4gKi9cbiAgdmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL1xuICB2YXIgcmVJc0hvc3RDdG9yID0gL15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLztcblxuICAvKiogVXNlZCB0byBkZXRlY3Qgb2N0YWwgc3RyaW5nIHZhbHVlcy4gKi9cbiAgdmFyIHJlSXNPY3RhbCA9IC9eMG9bMC03XSskL2k7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzLiAqL1xuICB2YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIExhdGluIFVuaWNvZGUgbGV0dGVycyAoZXhjbHVkaW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRvcnMpLiAqL1xuICB2YXIgcmVMYXRpbiA9IC9bXFx4YzAtXFx4ZDZcXHhkOC1cXHhmNlxceGY4LVxceGZmXFx1MDEwMC1cXHUwMTdmXS9nO1xuXG4gIC8qKiBVc2VkIHRvIGVuc3VyZSBjYXB0dXJpbmcgb3JkZXIgb2YgdGVtcGxhdGUgZGVsaW1pdGVycy4gKi9cbiAgdmFyIHJlTm9NYXRjaCA9IC8oJF4pLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB1bmVzY2FwZWQgY2hhcmFjdGVycyBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuICovXG4gIHZhciByZVVuZXNjYXBlZFN0cmluZyA9IC9bJ1xcblxcclxcdTIwMjhcXHUyMDI5XFxcXF0vZztcblxuICAvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovXG4gIHZhciByc0FzdHJhbFJhbmdlID0gJ1xcXFx1ZDgwMC1cXFxcdWRmZmYnLFxuICAgICAgcnNDb21ib01hcmtzUmFuZ2UgPSAnXFxcXHUwMzAwLVxcXFx1MDM2ZicsXG4gICAgICByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgPSAnXFxcXHVmZTIwLVxcXFx1ZmUyZicsXG4gICAgICByc0NvbWJvU3ltYm9sc1JhbmdlID0gJ1xcXFx1MjBkMC1cXFxcdTIwZmYnLFxuICAgICAgcnNDb21ib1JhbmdlID0gcnNDb21ib01hcmtzUmFuZ2UgKyByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgKyByc0NvbWJvU3ltYm9sc1JhbmdlLFxuICAgICAgcnNEaW5nYmF0UmFuZ2UgPSAnXFxcXHUyNzAwLVxcXFx1MjdiZicsXG4gICAgICByc0xvd2VyUmFuZ2UgPSAnYS16XFxcXHhkZi1cXFxceGY2XFxcXHhmOC1cXFxceGZmJyxcbiAgICAgIHJzTWF0aE9wUmFuZ2UgPSAnXFxcXHhhY1xcXFx4YjFcXFxceGQ3XFxcXHhmNycsXG4gICAgICByc05vbkNoYXJSYW5nZSA9ICdcXFxceDAwLVxcXFx4MmZcXFxceDNhLVxcXFx4NDBcXFxceDViLVxcXFx4NjBcXFxceDdiLVxcXFx4YmYnLFxuICAgICAgcnNQdW5jdHVhdGlvblJhbmdlID0gJ1xcXFx1MjAwMC1cXFxcdTIwNmYnLFxuICAgICAgcnNTcGFjZVJhbmdlID0gJyBcXFxcdFxcXFx4MGJcXFxcZlxcXFx4YTBcXFxcdWZlZmZcXFxcblxcXFxyXFxcXHUyMDI4XFxcXHUyMDI5XFxcXHUxNjgwXFxcXHUxODBlXFxcXHUyMDAwXFxcXHUyMDAxXFxcXHUyMDAyXFxcXHUyMDAzXFxcXHUyMDA0XFxcXHUyMDA1XFxcXHUyMDA2XFxcXHUyMDA3XFxcXHUyMDA4XFxcXHUyMDA5XFxcXHUyMDBhXFxcXHUyMDJmXFxcXHUyMDVmXFxcXHUzMDAwJyxcbiAgICAgIHJzVXBwZXJSYW5nZSA9ICdBLVpcXFxceGMwLVxcXFx4ZDZcXFxceGQ4LVxcXFx4ZGUnLFxuICAgICAgcnNWYXJSYW5nZSA9ICdcXFxcdWZlMGVcXFxcdWZlMGYnLFxuICAgICAgcnNCcmVha1JhbmdlID0gcnNNYXRoT3BSYW5nZSArIHJzTm9uQ2hhclJhbmdlICsgcnNQdW5jdHVhdGlvblJhbmdlICsgcnNTcGFjZVJhbmdlO1xuXG4gIC8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjYXB0dXJlIGdyb3Vwcy4gKi9cbiAgdmFyIHJzQXBvcyA9IFwiWydcXHUyMDE5XVwiLFxuICAgICAgcnNBc3RyYWwgPSAnWycgKyByc0FzdHJhbFJhbmdlICsgJ10nLFxuICAgICAgcnNCcmVhayA9ICdbJyArIHJzQnJlYWtSYW5nZSArICddJyxcbiAgICAgIHJzQ29tYm8gPSAnWycgKyByc0NvbWJvUmFuZ2UgKyAnXScsXG4gICAgICByc0RpZ2l0cyA9ICdcXFxcZCsnLFxuICAgICAgcnNEaW5nYmF0ID0gJ1snICsgcnNEaW5nYmF0UmFuZ2UgKyAnXScsXG4gICAgICByc0xvd2VyID0gJ1snICsgcnNMb3dlclJhbmdlICsgJ10nLFxuICAgICAgcnNNaXNjID0gJ1teJyArIHJzQXN0cmFsUmFuZ2UgKyByc0JyZWFrUmFuZ2UgKyByc0RpZ2l0cyArIHJzRGluZ2JhdFJhbmdlICsgcnNMb3dlclJhbmdlICsgcnNVcHBlclJhbmdlICsgJ10nLFxuICAgICAgcnNGaXR6ID0gJ1xcXFx1ZDgzY1tcXFxcdWRmZmItXFxcXHVkZmZmXScsXG4gICAgICByc01vZGlmaWVyID0gJyg/OicgKyByc0NvbWJvICsgJ3wnICsgcnNGaXR6ICsgJyknLFxuICAgICAgcnNOb25Bc3RyYWwgPSAnW14nICsgcnNBc3RyYWxSYW5nZSArICddJyxcbiAgICAgIHJzUmVnaW9uYWwgPSAnKD86XFxcXHVkODNjW1xcXFx1ZGRlNi1cXFxcdWRkZmZdKXsyfScsXG4gICAgICByc1N1cnJQYWlyID0gJ1tcXFxcdWQ4MDAtXFxcXHVkYmZmXVtcXFxcdWRjMDAtXFxcXHVkZmZmXScsXG4gICAgICByc1VwcGVyID0gJ1snICsgcnNVcHBlclJhbmdlICsgJ10nLFxuICAgICAgcnNaV0ogPSAnXFxcXHUyMDBkJztcblxuICAvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgcmVnZXhlcy4gKi9cbiAgdmFyIHJzTWlzY0xvd2VyID0gJyg/OicgKyByc0xvd2VyICsgJ3wnICsgcnNNaXNjICsgJyknLFxuICAgICAgcnNNaXNjVXBwZXIgPSAnKD86JyArIHJzVXBwZXIgKyAnfCcgKyByc01pc2MgKyAnKScsXG4gICAgICByc09wdENvbnRyTG93ZXIgPSAnKD86JyArIHJzQXBvcyArICcoPzpkfGxsfG18cmV8c3x0fHZlKSk/JyxcbiAgICAgIHJzT3B0Q29udHJVcHBlciA9ICcoPzonICsgcnNBcG9zICsgJyg/OkR8TEx8TXxSRXxTfFR8VkUpKT8nLFxuICAgICAgcmVPcHRNb2QgPSByc01vZGlmaWVyICsgJz8nLFxuICAgICAgcnNPcHRWYXIgPSAnWycgKyByc1ZhclJhbmdlICsgJ10/JyxcbiAgICAgIHJzT3B0Sm9pbiA9ICcoPzonICsgcnNaV0ogKyAnKD86JyArIFtyc05vbkFzdHJhbCwgcnNSZWdpb25hbCwgcnNTdXJyUGFpcl0uam9pbignfCcpICsgJyknICsgcnNPcHRWYXIgKyByZU9wdE1vZCArICcpKicsXG4gICAgICByc09yZExvd2VyID0gJ1xcXFxkKig/OjFzdHwybmR8M3JkfCg/IVsxMjNdKVxcXFxkdGgpKD89XFxcXGJ8W0EtWl9dKScsXG4gICAgICByc09yZFVwcGVyID0gJ1xcXFxkKig/OjFTVHwyTkR8M1JEfCg/IVsxMjNdKVxcXFxkVEgpKD89XFxcXGJ8W2Etel9dKScsXG4gICAgICByc1NlcSA9IHJzT3B0VmFyICsgcmVPcHRNb2QgKyByc09wdEpvaW4sXG4gICAgICByc0Vtb2ppID0gJyg/OicgKyBbcnNEaW5nYmF0LCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyXS5qb2luKCd8JykgKyAnKScgKyByc1NlcSxcbiAgICAgIHJzU3ltYm9sID0gJyg/OicgKyBbcnNOb25Bc3RyYWwgKyByc0NvbWJvICsgJz8nLCByc0NvbWJvLCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyLCByc0FzdHJhbF0uam9pbignfCcpICsgJyknO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGFwb3N0cm9waGVzLiAqL1xuICB2YXIgcmVBcG9zID0gUmVnRXhwKHJzQXBvcywgJ2cnKTtcblxuICAvKipcbiAgICogVXNlZCB0byBtYXRjaCBbY29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21iaW5pbmdfRGlhY3JpdGljYWxfTWFya3MpIGFuZFxuICAgKiBbY29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzIGZvciBzeW1ib2xzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21iaW5pbmdfRGlhY3JpdGljYWxfTWFya3NfZm9yX1N5bWJvbHMpLlxuICAgKi9cbiAgdmFyIHJlQ29tYm9NYXJrID0gUmVnRXhwKHJzQ29tYm8sICdnJyk7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggW3N0cmluZyBzeW1ib2xzXShodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC11bmljb2RlKS4gKi9cbiAgdmFyIHJlVW5pY29kZSA9IFJlZ0V4cChyc0ZpdHogKyAnKD89JyArIHJzRml0eiArICcpfCcgKyByc1N5bWJvbCArIHJzU2VxLCAnZycpO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGNvbXBsZXggb3IgY29tcG91bmQgd29yZHMuICovXG4gIHZhciByZVVuaWNvZGVXb3JkID0gUmVnRXhwKFtcbiAgICByc1VwcGVyICsgJz8nICsgcnNMb3dlciArICcrJyArIHJzT3B0Q29udHJMb3dlciArICcoPz0nICsgW3JzQnJlYWssIHJzVXBwZXIsICckJ10uam9pbignfCcpICsgJyknLFxuICAgIHJzTWlzY1VwcGVyICsgJysnICsgcnNPcHRDb250clVwcGVyICsgJyg/PScgKyBbcnNCcmVhaywgcnNVcHBlciArIHJzTWlzY0xvd2VyLCAnJCddLmpvaW4oJ3wnKSArICcpJyxcbiAgICByc1VwcGVyICsgJz8nICsgcnNNaXNjTG93ZXIgKyAnKycgKyByc09wdENvbnRyTG93ZXIsXG4gICAgcnNVcHBlciArICcrJyArIHJzT3B0Q29udHJVcHBlcixcbiAgICByc09yZFVwcGVyLFxuICAgIHJzT3JkTG93ZXIsXG4gICAgcnNEaWdpdHMsXG4gICAgcnNFbW9qaVxuICBdLmpvaW4oJ3wnKSwgJ2cnKTtcblxuICAvKiogVXNlZCB0byBkZXRlY3Qgc3RyaW5ncyB3aXRoIFt6ZXJvLXdpZHRoIGpvaW5lcnMgb3IgY29kZSBwb2ludHMgZnJvbSB0aGUgYXN0cmFsIHBsYW5lc10oaHR0cDovL2Vldi5lZS9ibG9nLzIwMTUvMDkvMTIvZGFyay1jb3JuZXJzLW9mLXVuaWNvZGUvKS4gKi9cbiAgdmFyIHJlSGFzVW5pY29kZSA9IFJlZ0V4cCgnWycgKyByc1pXSiArIHJzQXN0cmFsUmFuZ2UgICsgcnNDb21ib1JhbmdlICsgcnNWYXJSYW5nZSArICddJyk7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IHN0cmluZ3MgdGhhdCBuZWVkIGEgbW9yZSByb2J1c3QgcmVnZXhwIHRvIG1hdGNoIHdvcmRzLiAqL1xuICB2YXIgcmVIYXNVbmljb2RlV29yZCA9IC9bYS16XVtBLVpdfFtBLVpdezJ9W2Etel18WzAtOV1bYS16QS1aXXxbYS16QS1aXVswLTldfFteYS16QS1aMC05IF0vO1xuXG4gIC8qKiBVc2VkIHRvIGFzc2lnbiBkZWZhdWx0IGBjb250ZXh0YCBvYmplY3QgcHJvcGVydGllcy4gKi9cbiAgdmFyIGNvbnRleHRQcm9wcyA9IFtcbiAgICAnQXJyYXknLCAnQnVmZmVyJywgJ0RhdGFWaWV3JywgJ0RhdGUnLCAnRXJyb3InLCAnRmxvYXQzMkFycmF5JywgJ0Zsb2F0NjRBcnJheScsXG4gICAgJ0Z1bmN0aW9uJywgJ0ludDhBcnJheScsICdJbnQxNkFycmF5JywgJ0ludDMyQXJyYXknLCAnTWFwJywgJ01hdGgnLCAnT2JqZWN0JyxcbiAgICAnUHJvbWlzZScsICdSZWdFeHAnLCAnU2V0JywgJ1N0cmluZycsICdTeW1ib2wnLCAnVHlwZUVycm9yJywgJ1VpbnQ4QXJyYXknLFxuICAgICdVaW50OENsYW1wZWRBcnJheScsICdVaW50MTZBcnJheScsICdVaW50MzJBcnJheScsICdXZWFrTWFwJyxcbiAgICAnXycsICdjbGVhclRpbWVvdXQnLCAnaXNGaW5pdGUnLCAncGFyc2VJbnQnLCAnc2V0VGltZW91dCdcbiAgXTtcblxuICAvKiogVXNlZCB0byBtYWtlIHRlbXBsYXRlIHNvdXJjZVVSTHMgZWFzaWVyIHRvIGlkZW50aWZ5LiAqL1xuICB2YXIgdGVtcGxhdGVDb3VudGVyID0gLTE7XG5cbiAgLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xuICB2YXIgdHlwZWRBcnJheVRhZ3MgPSB7fTtcbiAgdHlwZWRBcnJheVRhZ3NbZmxvYXQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1tmbG9hdDY0VGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbaW50MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQxNlRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbiAgdHlwZWRBcnJheVRhZ3NbYXJnc1RhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheVRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1thcnJheUJ1ZmZlclRhZ10gPSB0eXBlZEFycmF5VGFnc1tib29sVGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW2RhdGFWaWV3VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGVUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddID0gdHlwZWRBcnJheVRhZ3NbZnVuY1RhZ10gPVxuICB0eXBlZEFycmF5VGFnc1ttYXBUYWddID0gdHlwZWRBcnJheVRhZ3NbbnVtYmVyVGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPSB0eXBlZEFycmF5VGFnc1tyZWdleHBUYWddID1cbiAgdHlwZWRBcnJheVRhZ3Nbc2V0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3N0cmluZ1RhZ10gPVxuICB0eXBlZEFycmF5VGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4gIC8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIHN1cHBvcnRlZCBieSBgXy5jbG9uZWAuICovXG4gIHZhciBjbG9uZWFibGVUYWdzID0ge307XG4gIGNsb25lYWJsZVRhZ3NbYXJnc1RhZ10gPSBjbG9uZWFibGVUYWdzW2FycmF5VGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRhVmlld1RhZ10gPVxuICBjbG9uZWFibGVUYWdzW2Jvb2xUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRlVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbZmxvYXQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW2Zsb2F0NjRUYWddID1cbiAgY2xvbmVhYmxlVGFnc1tpbnQ4VGFnXSA9IGNsb25lYWJsZVRhZ3NbaW50MTZUYWddID1cbiAgY2xvbmVhYmxlVGFnc1tpbnQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW21hcFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW251bWJlclRhZ10gPSBjbG9uZWFibGVUYWdzW29iamVjdFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW3JlZ2V4cFRhZ10gPSBjbG9uZWFibGVUYWdzW3NldFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW3N0cmluZ1RhZ10gPSBjbG9uZWFibGVUYWdzW3N5bWJvbFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW3VpbnQ4VGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbdWludDE2VGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG4gIGNsb25lYWJsZVRhZ3NbZXJyb3JUYWddID0gY2xvbmVhYmxlVGFnc1tmdW5jVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuICAvKiogVXNlZCB0byBtYXAgTGF0aW4gVW5pY29kZSBsZXR0ZXJzIHRvIGJhc2ljIExhdGluIGxldHRlcnMuICovXG4gIHZhciBkZWJ1cnJlZExldHRlcnMgPSB7XG4gICAgLy8gTGF0aW4tMSBTdXBwbGVtZW50IGJsb2NrLlxuICAgICdcXHhjMCc6ICdBJywgICdcXHhjMSc6ICdBJywgJ1xceGMyJzogJ0EnLCAnXFx4YzMnOiAnQScsICdcXHhjNCc6ICdBJywgJ1xceGM1JzogJ0EnLFxuICAgICdcXHhlMCc6ICdhJywgICdcXHhlMSc6ICdhJywgJ1xceGUyJzogJ2EnLCAnXFx4ZTMnOiAnYScsICdcXHhlNCc6ICdhJywgJ1xceGU1JzogJ2EnLFxuICAgICdcXHhjNyc6ICdDJywgICdcXHhlNyc6ICdjJyxcbiAgICAnXFx4ZDAnOiAnRCcsICAnXFx4ZjAnOiAnZCcsXG4gICAgJ1xceGM4JzogJ0UnLCAgJ1xceGM5JzogJ0UnLCAnXFx4Y2EnOiAnRScsICdcXHhjYic6ICdFJyxcbiAgICAnXFx4ZTgnOiAnZScsICAnXFx4ZTknOiAnZScsICdcXHhlYSc6ICdlJywgJ1xceGViJzogJ2UnLFxuICAgICdcXHhjYyc6ICdJJywgICdcXHhjZCc6ICdJJywgJ1xceGNlJzogJ0knLCAnXFx4Y2YnOiAnSScsXG4gICAgJ1xceGVjJzogJ2knLCAgJ1xceGVkJzogJ2knLCAnXFx4ZWUnOiAnaScsICdcXHhlZic6ICdpJyxcbiAgICAnXFx4ZDEnOiAnTicsICAnXFx4ZjEnOiAnbicsXG4gICAgJ1xceGQyJzogJ08nLCAgJ1xceGQzJzogJ08nLCAnXFx4ZDQnOiAnTycsICdcXHhkNSc6ICdPJywgJ1xceGQ2JzogJ08nLCAnXFx4ZDgnOiAnTycsXG4gICAgJ1xceGYyJzogJ28nLCAgJ1xceGYzJzogJ28nLCAnXFx4ZjQnOiAnbycsICdcXHhmNSc6ICdvJywgJ1xceGY2JzogJ28nLCAnXFx4ZjgnOiAnbycsXG4gICAgJ1xceGQ5JzogJ1UnLCAgJ1xceGRhJzogJ1UnLCAnXFx4ZGInOiAnVScsICdcXHhkYyc6ICdVJyxcbiAgICAnXFx4ZjknOiAndScsICAnXFx4ZmEnOiAndScsICdcXHhmYic6ICd1JywgJ1xceGZjJzogJ3UnLFxuICAgICdcXHhkZCc6ICdZJywgICdcXHhmZCc6ICd5JywgJ1xceGZmJzogJ3knLFxuICAgICdcXHhjNic6ICdBZScsICdcXHhlNic6ICdhZScsXG4gICAgJ1xceGRlJzogJ1RoJywgJ1xceGZlJzogJ3RoJyxcbiAgICAnXFx4ZGYnOiAnc3MnLFxuICAgIC8vIExhdGluIEV4dGVuZGVkLUEgYmxvY2suXG4gICAgJ1xcdTAxMDAnOiAnQScsICAnXFx1MDEwMic6ICdBJywgJ1xcdTAxMDQnOiAnQScsXG4gICAgJ1xcdTAxMDEnOiAnYScsICAnXFx1MDEwMyc6ICdhJywgJ1xcdTAxMDUnOiAnYScsXG4gICAgJ1xcdTAxMDYnOiAnQycsICAnXFx1MDEwOCc6ICdDJywgJ1xcdTAxMGEnOiAnQycsICdcXHUwMTBjJzogJ0MnLFxuICAgICdcXHUwMTA3JzogJ2MnLCAgJ1xcdTAxMDknOiAnYycsICdcXHUwMTBiJzogJ2MnLCAnXFx1MDEwZCc6ICdjJyxcbiAgICAnXFx1MDEwZSc6ICdEJywgICdcXHUwMTEwJzogJ0QnLCAnXFx1MDEwZic6ICdkJywgJ1xcdTAxMTEnOiAnZCcsXG4gICAgJ1xcdTAxMTInOiAnRScsICAnXFx1MDExNCc6ICdFJywgJ1xcdTAxMTYnOiAnRScsICdcXHUwMTE4JzogJ0UnLCAnXFx1MDExYSc6ICdFJyxcbiAgICAnXFx1MDExMyc6ICdlJywgICdcXHUwMTE1JzogJ2UnLCAnXFx1MDExNyc6ICdlJywgJ1xcdTAxMTknOiAnZScsICdcXHUwMTFiJzogJ2UnLFxuICAgICdcXHUwMTFjJzogJ0cnLCAgJ1xcdTAxMWUnOiAnRycsICdcXHUwMTIwJzogJ0cnLCAnXFx1MDEyMic6ICdHJyxcbiAgICAnXFx1MDExZCc6ICdnJywgICdcXHUwMTFmJzogJ2cnLCAnXFx1MDEyMSc6ICdnJywgJ1xcdTAxMjMnOiAnZycsXG4gICAgJ1xcdTAxMjQnOiAnSCcsICAnXFx1MDEyNic6ICdIJywgJ1xcdTAxMjUnOiAnaCcsICdcXHUwMTI3JzogJ2gnLFxuICAgICdcXHUwMTI4JzogJ0knLCAgJ1xcdTAxMmEnOiAnSScsICdcXHUwMTJjJzogJ0knLCAnXFx1MDEyZSc6ICdJJywgJ1xcdTAxMzAnOiAnSScsXG4gICAgJ1xcdTAxMjknOiAnaScsICAnXFx1MDEyYic6ICdpJywgJ1xcdTAxMmQnOiAnaScsICdcXHUwMTJmJzogJ2knLCAnXFx1MDEzMSc6ICdpJyxcbiAgICAnXFx1MDEzNCc6ICdKJywgICdcXHUwMTM1JzogJ2onLFxuICAgICdcXHUwMTM2JzogJ0snLCAgJ1xcdTAxMzcnOiAnaycsICdcXHUwMTM4JzogJ2snLFxuICAgICdcXHUwMTM5JzogJ0wnLCAgJ1xcdTAxM2InOiAnTCcsICdcXHUwMTNkJzogJ0wnLCAnXFx1MDEzZic6ICdMJywgJ1xcdTAxNDEnOiAnTCcsXG4gICAgJ1xcdTAxM2EnOiAnbCcsICAnXFx1MDEzYyc6ICdsJywgJ1xcdTAxM2UnOiAnbCcsICdcXHUwMTQwJzogJ2wnLCAnXFx1MDE0Mic6ICdsJyxcbiAgICAnXFx1MDE0Myc6ICdOJywgICdcXHUwMTQ1JzogJ04nLCAnXFx1MDE0Nyc6ICdOJywgJ1xcdTAxNGEnOiAnTicsXG4gICAgJ1xcdTAxNDQnOiAnbicsICAnXFx1MDE0Nic6ICduJywgJ1xcdTAxNDgnOiAnbicsICdcXHUwMTRiJzogJ24nLFxuICAgICdcXHUwMTRjJzogJ08nLCAgJ1xcdTAxNGUnOiAnTycsICdcXHUwMTUwJzogJ08nLFxuICAgICdcXHUwMTRkJzogJ28nLCAgJ1xcdTAxNGYnOiAnbycsICdcXHUwMTUxJzogJ28nLFxuICAgICdcXHUwMTU0JzogJ1InLCAgJ1xcdTAxNTYnOiAnUicsICdcXHUwMTU4JzogJ1InLFxuICAgICdcXHUwMTU1JzogJ3InLCAgJ1xcdTAxNTcnOiAncicsICdcXHUwMTU5JzogJ3InLFxuICAgICdcXHUwMTVhJzogJ1MnLCAgJ1xcdTAxNWMnOiAnUycsICdcXHUwMTVlJzogJ1MnLCAnXFx1MDE2MCc6ICdTJyxcbiAgICAnXFx1MDE1Yic6ICdzJywgICdcXHUwMTVkJzogJ3MnLCAnXFx1MDE1Zic6ICdzJywgJ1xcdTAxNjEnOiAncycsXG4gICAgJ1xcdTAxNjInOiAnVCcsICAnXFx1MDE2NCc6ICdUJywgJ1xcdTAxNjYnOiAnVCcsXG4gICAgJ1xcdTAxNjMnOiAndCcsICAnXFx1MDE2NSc6ICd0JywgJ1xcdTAxNjcnOiAndCcsXG4gICAgJ1xcdTAxNjgnOiAnVScsICAnXFx1MDE2YSc6ICdVJywgJ1xcdTAxNmMnOiAnVScsICdcXHUwMTZlJzogJ1UnLCAnXFx1MDE3MCc6ICdVJywgJ1xcdTAxNzInOiAnVScsXG4gICAgJ1xcdTAxNjknOiAndScsICAnXFx1MDE2Yic6ICd1JywgJ1xcdTAxNmQnOiAndScsICdcXHUwMTZmJzogJ3UnLCAnXFx1MDE3MSc6ICd1JywgJ1xcdTAxNzMnOiAndScsXG4gICAgJ1xcdTAxNzQnOiAnVycsICAnXFx1MDE3NSc6ICd3JyxcbiAgICAnXFx1MDE3Nic6ICdZJywgICdcXHUwMTc3JzogJ3knLCAnXFx1MDE3OCc6ICdZJyxcbiAgICAnXFx1MDE3OSc6ICdaJywgICdcXHUwMTdiJzogJ1onLCAnXFx1MDE3ZCc6ICdaJyxcbiAgICAnXFx1MDE3YSc6ICd6JywgICdcXHUwMTdjJzogJ3onLCAnXFx1MDE3ZSc6ICd6JyxcbiAgICAnXFx1MDEzMic6ICdJSicsICdcXHUwMTMzJzogJ2lqJyxcbiAgICAnXFx1MDE1Mic6ICdPZScsICdcXHUwMTUzJzogJ29lJyxcbiAgICAnXFx1MDE0OSc6IFwiJ25cIiwgJ1xcdTAxN2YnOiAncydcbiAgfTtcblxuICAvKiogVXNlZCB0byBtYXAgY2hhcmFjdGVycyB0byBIVE1MIGVudGl0aWVzLiAqL1xuICB2YXIgaHRtbEVzY2FwZXMgPSB7XG4gICAgJyYnOiAnJmFtcDsnLFxuICAgICc8JzogJyZsdDsnLFxuICAgICc+JzogJyZndDsnLFxuICAgICdcIic6ICcmcXVvdDsnLFxuICAgIFwiJ1wiOiAnJiMzOTsnXG4gIH07XG5cbiAgLyoqIFVzZWQgdG8gbWFwIEhUTUwgZW50aXRpZXMgdG8gY2hhcmFjdGVycy4gKi9cbiAgdmFyIGh0bWxVbmVzY2FwZXMgPSB7XG4gICAgJyZhbXA7JzogJyYnLFxuICAgICcmbHQ7JzogJzwnLFxuICAgICcmZ3Q7JzogJz4nLFxuICAgICcmcXVvdDsnOiAnXCInLFxuICAgICcmIzM5Oyc6IFwiJ1wiXG4gIH07XG5cbiAgLyoqIFVzZWQgdG8gZXNjYXBlIGNoYXJhY3RlcnMgZm9yIGluY2x1c2lvbiBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuICovXG4gIHZhciBzdHJpbmdFc2NhcGVzID0ge1xuICAgICdcXFxcJzogJ1xcXFwnLFxuICAgIFwiJ1wiOiBcIidcIixcbiAgICAnXFxuJzogJ24nLFxuICAgICdcXHInOiAncicsXG4gICAgJ1xcdTIwMjgnOiAndTIwMjgnLFxuICAgICdcXHUyMDI5JzogJ3UyMDI5J1xuICB9O1xuXG4gIC8qKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB3aXRob3V0IGEgZGVwZW5kZW5jeSBvbiBgcm9vdGAuICovXG4gIHZhciBmcmVlUGFyc2VGbG9hdCA9IHBhcnNlRmxvYXQsXG4gICAgICBmcmVlUGFyc2VJbnQgPSBwYXJzZUludDtcblxuICAvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xuICB2YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbiAgLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbiAgdmFyIGZyZWVTZWxmID0gdHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZiAmJiBzZWxmLk9iamVjdCA9PT0gT2JqZWN0ICYmIHNlbGY7XG5cbiAgLyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG4gIHZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG4gIC8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG4gIHZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuICAvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG4gIHZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbiAgLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbiAgdmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbiAgLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBwcm9jZXNzYCBmcm9tIE5vZGUuanMuICovXG4gIHZhciBmcmVlUHJvY2VzcyA9IG1vZHVsZUV4cG9ydHMgJiYgZnJlZUdsb2JhbC5wcm9jZXNzO1xuXG4gIC8qKiBVc2VkIHRvIGFjY2VzcyBmYXN0ZXIgTm9kZS5qcyBoZWxwZXJzLiAqL1xuICB2YXIgbm9kZVV0aWwgPSAoZnVuY3Rpb24oKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFVzZSBgdXRpbC50eXBlc2AgZm9yIE5vZGUuanMgMTArLlxuICAgICAgdmFyIHR5cGVzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlKCd1dGlsJykudHlwZXM7XG5cbiAgICAgIGlmICh0eXBlcykge1xuICAgICAgICByZXR1cm4gdHlwZXM7XG4gICAgICB9XG5cbiAgICAgIC8vIExlZ2FjeSBgcHJvY2Vzcy5iaW5kaW5nKCd1dGlsJylgIGZvciBOb2RlLmpzIDwgMTAuXG4gICAgICByZXR1cm4gZnJlZVByb2Nlc3MgJiYgZnJlZVByb2Nlc3MuYmluZGluZyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nKCd1dGlsJyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfSgpKTtcblxuICAvKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xuICB2YXIgbm9kZUlzQXJyYXlCdWZmZXIgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc0FycmF5QnVmZmVyLFxuICAgICAgbm9kZUlzRGF0ZSA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzRGF0ZSxcbiAgICAgIG5vZGVJc01hcCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzTWFwLFxuICAgICAgbm9kZUlzUmVnRXhwID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNSZWdFeHAsXG4gICAgICBub2RlSXNTZXQgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1NldCxcbiAgICAgIG5vZGVJc1R5cGVkQXJyYXkgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1R5cGVkQXJyYXk7XG5cbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgLyoqXG4gICAqIEEgZmFzdGVyIGFsdGVybmF0aXZlIHRvIGBGdW5jdGlvbiNhcHBseWAsIHRoaXMgZnVuY3Rpb24gaW52b2tlcyBgZnVuY2BcbiAgICogd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgYHRoaXNBcmdgIGFuZCB0aGUgYXJndW1lbnRzIG9mIGBhcmdzYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICAgKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuXG4gICAqL1xuICBmdW5jdGlvbiBhcHBseShmdW5jLCB0aGlzQXJnLCBhcmdzKSB7XG4gICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgY2FzZSAwOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcpO1xuICAgICAgY2FzZSAxOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0pO1xuICAgICAgY2FzZSAyOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgICAgY2FzZSAzOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgIH1cbiAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VBZ2dyZWdhdG9yYCBmb3IgYXJyYXlzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGBhY2N1bXVsYXRvcmAgdmFsdWVzLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCBhZ2dyZWdhdGVkIG9iamVjdC5cbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBhY2N1bXVsYXRvcmAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUFnZ3JlZ2F0b3IoYXJyYXksIHNldHRlciwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgIHNldHRlcihhY2N1bXVsYXRvciwgdmFsdWUsIGl0ZXJhdGVlKHZhbHVlKSwgYXJyYXkpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZvckVhY2hgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlFYWNoKGFycmF5LCBpdGVyYXRlZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5mb3JFYWNoUmlnaHRgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlFYWNoUmlnaHQoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICBpZiAoaXRlcmF0ZWUoYXJyYXlbbGVuZ3RoXSwgbGVuZ3RoLCBhcnJheSkgPT09IGZhbHNlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmV2ZXJ5YCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFsbCBlbGVtZW50cyBwYXNzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gICAqICBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUV2ZXJ5KGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKCFwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZpbHRlcmAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlGaWx0ZXIoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5pbmNsdWRlc2AgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIHNwZWNpZnlpbmcgYW4gaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0gdGFyZ2V0IFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHRhcmdldGAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5SW5jbHVkZXMoYXJyYXksIHZhbHVlKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgIHJldHVybiAhIWxlbmd0aCAmJiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIDApID4gLTE7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBhcnJheUluY2x1ZGVzYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGEgY29tcGFyYXRvci5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB0YXJnZXQgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB0YXJnZXRgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUluY2x1ZGVzV2l0aChhcnJheSwgdmFsdWUsIGNvbXBhcmF0b3IpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGNvbXBhcmF0b3IodmFsdWUsIGFycmF5W2luZGV4XSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWFwYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAgICogc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheU1hcChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBlbmRzIHRoZSBlbGVtZW50cyBvZiBgdmFsdWVzYCB0byBgYXJyYXlgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhcHBlbmQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlQdXNoKGFycmF5LCB2YWx1ZXMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgICAgb2Zmc2V0ID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGFycmF5W29mZnNldCArIGluZGV4XSA9IHZhbHVlc1tpbmRleF07XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ucmVkdWNlYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2luaXRBY2N1bV0gU3BlY2lmeSB1c2luZyB0aGUgZmlyc3QgZWxlbWVudCBvZiBgYXJyYXlgIGFzXG4gICAqICB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlSZWR1Y2UoYXJyYXksIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgaWYgKGluaXRBY2N1bSAmJiBsZW5ndGgpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gYXJyYXlbKytpbmRleF07XG4gICAgfVxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCBhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSk7XG4gICAgfVxuICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ucmVkdWNlUmlnaHRgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHBhcmFtIHtib29sZWFufSBbaW5pdEFjY3VtXSBTcGVjaWZ5IHVzaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgYGFycmF5YCBhc1xuICAgKiAgdGhlIGluaXRpYWwgdmFsdWUuXG4gICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5UmVkdWNlUmlnaHQoYXJyYXksIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgIGlmIChpbml0QWNjdW0gJiYgbGVuZ3RoKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGFycmF5Wy0tbGVuZ3RoXTtcbiAgICB9XG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCBhcnJheVtsZW5ndGhdLCBsZW5ndGgsIGFycmF5KTtcbiAgICB9XG4gICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zb21lYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAgICogc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlTb21lKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzaXplIG9mIGFuIEFTQ0lJIGBzdHJpbmdgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgaW5zcGVjdC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3RyaW5nIHNpemUuXG4gICAqL1xuICB2YXIgYXNjaWlTaXplID0gYmFzZVByb3BlcnR5KCdsZW5ndGgnKTtcblxuICAvKipcbiAgICogQ29udmVydHMgYW4gQVNDSUkgYHN0cmluZ2AgdG8gYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAgICovXG4gIGZ1bmN0aW9uIGFzY2lpVG9BcnJheShzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyaW5nLnNwbGl0KCcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdHMgYW4gQVNDSUkgYHN0cmluZ2AgaW50byBhbiBhcnJheSBvZiBpdHMgd29yZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgd29yZHMgb2YgYHN0cmluZ2AuXG4gICAqL1xuICBmdW5jdGlvbiBhc2NpaVdvcmRzKHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcubWF0Y2gocmVBc2NpaVdvcmQpIHx8IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5maW5kS2V5YCBhbmQgYF8uZmluZExhc3RLZXlgLFxuICAgKiB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMsIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYGNvbGxlY3Rpb25gXG4gICAqIHVzaW5nIGBlYWNoRnVuY2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGBjb2xsZWN0aW9uYC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZvdW5kIGVsZW1lbnQgb3IgaXRzIGtleSwgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VGaW5kS2V5KGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZWFjaEZ1bmMpIHtcbiAgICB2YXIgcmVzdWx0O1xuICAgIGVhY2hGdW5jKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGtleSwgY29sbGVjdGlvbikpIHtcbiAgICAgICAgcmVzdWx0ID0ga2V5O1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maW5kSW5kZXhgIGFuZCBgXy5maW5kTGFzdEluZGV4YCB3aXRob3V0XG4gICAqIHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZUZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgsIGZyb21SaWdodCkge1xuICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgIGluZGV4ID0gZnJvbUluZGV4ICsgKGZyb21SaWdodCA/IDEgOiAtMSk7XG5cbiAgICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkge1xuICAgICAgaWYgKHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW5kZXhPZmAgd2l0aG91dCBgZnJvbUluZGV4YCBib3VuZHMgY2hlY2tzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWVcbiAgICAgID8gc3RyaWN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleClcbiAgICAgIDogYmFzZUZpbmRJbmRleChhcnJheSwgYmFzZUlzTmFOLCBmcm9tSW5kZXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYmFzZUluZGV4T2ZgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYSBjb21wYXJhdG9yLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VJbmRleE9mV2l0aChhcnJheSwgdmFsdWUsIGZyb21JbmRleCwgY29tcGFyYXRvcikge1xuICAgIHZhciBpbmRleCA9IGZyb21JbmRleCAtIDEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoY29tcGFyYXRvcihhcnJheVtpbmRleF0sIHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hTmAgd2l0aG91dCBzdXBwb3J0IGZvciBudW1iZXIgb2JqZWN0cy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGBOYU5gLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlSXNOYU4odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1lYW5gIGFuZCBgXy5tZWFuQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbWVhbi5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VNZWFuKGFycmF5LCBpdGVyYXRlZSkge1xuICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICByZXR1cm4gbGVuZ3RoID8gKGJhc2VTdW0oYXJyYXksIGl0ZXJhdGVlKSAvIGxlbmd0aCkgOiBOQU47XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVByb3BlcnR5KGtleSkge1xuICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlPZmAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVByb3BlcnR5T2Yob2JqZWN0KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZWR1Y2VgIGFuZCBgXy5yZWR1Y2VSaWdodGAsIHdpdGhvdXQgc3VwcG9ydFxuICAgKiBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcywgd2hpY2ggaXRlcmF0ZXMgb3ZlciBgY29sbGVjdGlvbmAgdXNpbmcgYGVhY2hGdW5jYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0geyp9IGFjY3VtdWxhdG9yIFRoZSBpbml0aWFsIHZhbHVlLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGluaXRBY2N1bSBTcGVjaWZ5IHVzaW5nIHRoZSBmaXJzdCBvciBsYXN0IGVsZW1lbnQgb2ZcbiAgICogIGBjb2xsZWN0aW9uYCBhcyB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZWFjaEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGl0ZXJhdGUgb3ZlciBgY29sbGVjdGlvbmAuXG4gICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VSZWR1Y2UoY29sbGVjdGlvbiwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0sIGVhY2hGdW5jKSB7XG4gICAgZWFjaEZ1bmMoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGluaXRBY2N1bVxuICAgICAgICA/IChpbml0QWNjdW0gPSBmYWxzZSwgdmFsdWUpXG4gICAgICAgIDogaXRlcmF0ZWUoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gICAgfSk7XG4gICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvcnRCeWAgd2hpY2ggdXNlcyBgY29tcGFyZXJgIHRvIGRlZmluZSB0aGVcbiAgICogc29ydCBvcmRlciBvZiBgYXJyYXlgIGFuZCByZXBsYWNlcyBjcml0ZXJpYSBvYmplY3RzIHdpdGggdGhlaXIgY29ycmVzcG9uZGluZ1xuICAgKiB2YWx1ZXMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzb3J0LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJlciBUaGUgZnVuY3Rpb24gdG8gZGVmaW5lIHNvcnQgb3JkZXIuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVNvcnRCeShhcnJheSwgY29tcGFyZXIpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgYXJyYXkuc29ydChjb21wYXJlcik7XG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICBhcnJheVtsZW5ndGhdID0gYXJyYXlbbGVuZ3RoXS52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnN1bWAgYW5kIGBfLnN1bUJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN1bS5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VTdW0oYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgdmFyIHJlc3VsdCxcbiAgICAgICAgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciBjdXJyZW50ID0gaXRlcmF0ZWUoYXJyYXlbaW5kZXhdKTtcbiAgICAgIGlmIChjdXJyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBjdXJyZW50IDogKHJlc3VsdCArIGN1cnJlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRpbWVzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHNcbiAgICogb3IgbWF4IGFycmF5IGxlbmd0aCBjaGVja3MuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gaW52b2tlIGBpdGVyYXRlZWAuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VUaW1lcyhuLCBpdGVyYXRlZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICByZXN1bHQgPSBBcnJheShuKTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGluZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1BhaXJzYCBhbmQgYF8udG9QYWlyc0luYCB3aGljaCBjcmVhdGVzIGFuIGFycmF5XG4gICAqIG9mIGtleS12YWx1ZSBwYWlycyBmb3IgYG9iamVjdGAgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvcGVydHkgbmFtZXMgb2YgYHByb3BzYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgbmFtZXMgdG8gZ2V0IHZhbHVlcyBmb3IuXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VUb1BhaXJzKG9iamVjdCwgcHJvcHMpIHtcbiAgICByZXR1cm4gYXJyYXlNYXAocHJvcHMsIGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIFtrZXksIG9iamVjdFtrZXldXTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmFyeWAgd2l0aG91dCBzdXBwb3J0IGZvciBzdG9yaW5nIG1ldGFkYXRhLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjYXAgYXJndW1lbnRzIGZvci5cbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVVuYXJ5KGZ1bmMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHJldHVybiBmdW5jKHZhbHVlKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnZhbHVlc2AgYW5kIGBfLnZhbHVlc0luYCB3aGljaCBjcmVhdGVzIGFuXG4gICAqIGFycmF5IG9mIGBvYmplY3RgIHByb3BlcnR5IHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9wZXJ0eSBuYW1lc1xuICAgKiBvZiBgcHJvcHNgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBuYW1lcyB0byBnZXQgdmFsdWVzIGZvci5cbiAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVZhbHVlcyhvYmplY3QsIHByb3BzKSB7XG4gICAgcmV0dXJuIGFycmF5TWFwKHByb3BzLCBmdW5jdGlvbihrZXkpIHtcbiAgICAgIHJldHVybiBvYmplY3Rba2V5XTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBgY2FjaGVgIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjYWNoZSBUaGUgY2FjaGUgdG8gcXVlcnkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBjYWNoZUhhcyhjYWNoZSwga2V5KSB7XG4gICAgcmV0dXJuIGNhY2hlLmhhcyhrZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8udHJpbWAgYW5kIGBfLnRyaW1TdGFydGAgdG8gZ2V0IHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgc3RyaW5nIHN5bWJvbFxuICAgKiB0aGF0IGlzIG5vdCBmb3VuZCBpbiB0aGUgY2hhcmFjdGVyIHN5bWJvbHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IHN0clN5bWJvbHMgVGhlIHN0cmluZyBzeW1ib2xzIHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7QXJyYXl9IGNoclN5bWJvbHMgVGhlIGNoYXJhY3RlciBzeW1ib2xzIHRvIGZpbmQuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCB1bm1hdGNoZWQgc3RyaW5nIHN5bWJvbC5cbiAgICovXG4gIGZ1bmN0aW9uIGNoYXJzU3RhcnRJbmRleChzdHJTeW1ib2xzLCBjaHJTeW1ib2xzKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IHN0clN5bWJvbHMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGggJiYgYmFzZUluZGV4T2YoY2hyU3ltYm9scywgc3RyU3ltYm9sc1tpbmRleF0sIDApID4gLTEpIHt9XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8udHJpbWAgYW5kIGBfLnRyaW1FbmRgIHRvIGdldCB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgc3RyaW5nIHN5bWJvbFxuICAgKiB0aGF0IGlzIG5vdCBmb3VuZCBpbiB0aGUgY2hhcmFjdGVyIHN5bWJvbHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IHN0clN5bWJvbHMgVGhlIHN0cmluZyBzeW1ib2xzIHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7QXJyYXl9IGNoclN5bWJvbHMgVGhlIGNoYXJhY3RlciBzeW1ib2xzIHRvIGZpbmQuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IHVubWF0Y2hlZCBzdHJpbmcgc3ltYm9sLlxuICAgKi9cbiAgZnVuY3Rpb24gY2hhcnNFbmRJbmRleChzdHJTeW1ib2xzLCBjaHJTeW1ib2xzKSB7XG4gICAgdmFyIGluZGV4ID0gc3RyU3ltYm9scy5sZW5ndGg7XG5cbiAgICB3aGlsZSAoaW5kZXgtLSAmJiBiYXNlSW5kZXhPZihjaHJTeW1ib2xzLCBzdHJTeW1ib2xzW2luZGV4XSwgMCkgPiAtMSkge31cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgbnVtYmVyIG9mIGBwbGFjZWhvbGRlcmAgb2NjdXJyZW5jZXMgaW4gYGFycmF5YC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0gcGxhY2Vob2xkZXIgVGhlIHBsYWNlaG9sZGVyIHRvIHNlYXJjaCBmb3IuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHBsYWNlaG9sZGVyIGNvdW50LlxuICAgKi9cbiAgZnVuY3Rpb24gY291bnRIb2xkZXJzKGFycmF5LCBwbGFjZWhvbGRlcikge1xuICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgIHJlc3VsdCA9IDA7XG5cbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIGlmIChhcnJheVtsZW5ndGhdID09PSBwbGFjZWhvbGRlcikge1xuICAgICAgICArK3Jlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLmRlYnVycmAgdG8gY29udmVydCBMYXRpbi0xIFN1cHBsZW1lbnQgYW5kIExhdGluIEV4dGVuZGVkLUFcbiAgICogbGV0dGVycyB0byBiYXNpYyBMYXRpbiBsZXR0ZXJzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbGV0dGVyIFRoZSBtYXRjaGVkIGxldHRlciB0byBkZWJ1cnIuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGRlYnVycmVkIGxldHRlci5cbiAgICovXG4gIHZhciBkZWJ1cnJMZXR0ZXIgPSBiYXNlUHJvcGVydHlPZihkZWJ1cnJlZExldHRlcnMpO1xuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLmVzY2FwZWAgdG8gY29udmVydCBjaGFyYWN0ZXJzIHRvIEhUTUwgZW50aXRpZXMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaHIgVGhlIG1hdGNoZWQgY2hhcmFjdGVyIHRvIGVzY2FwZS5cbiAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZXNjYXBlZCBjaGFyYWN0ZXIuXG4gICAqL1xuICB2YXIgZXNjYXBlSHRtbENoYXIgPSBiYXNlUHJvcGVydHlPZihodG1sRXNjYXBlcyk7XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8udGVtcGxhdGVgIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIGZvciBpbmNsdXNpb24gaW4gY29tcGlsZWQgc3RyaW5nIGxpdGVyYWxzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2hyIFRoZSBtYXRjaGVkIGNoYXJhY3RlciB0byBlc2NhcGUuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVzY2FwZWQgY2hhcmFjdGVyLlxuICAgKi9cbiAgZnVuY3Rpb24gZXNjYXBlU3RyaW5nQ2hhcihjaHIpIHtcbiAgICByZXR1cm4gJ1xcXFwnICsgc3RyaW5nRXNjYXBlc1tjaHJdO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAgICovXG4gIGZ1bmN0aW9uIGdldFZhbHVlKG9iamVjdCwga2V5KSB7XG4gICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGBzdHJpbmdgIGNvbnRhaW5zIFVuaWNvZGUgc3ltYm9scy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhIHN5bWJvbCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gaGFzVW5pY29kZShzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVIYXNVbmljb2RlLnRlc3Qoc3RyaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYHN0cmluZ2AgY29udGFpbnMgYSB3b3JkIGNvbXBvc2VkIG9mIFVuaWNvZGUgc3ltYm9scy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhIHdvcmQgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGhhc1VuaWNvZGVXb3JkKHN0cmluZykge1xuICAgIHJldHVybiByZUhhc1VuaWNvZGVXb3JkLnRlc3Qoc3RyaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBgaXRlcmF0b3JgIHRvIGFuIGFycmF5LlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gaXRlcmF0b3IgVGhlIGl0ZXJhdG9yIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICAgKi9cbiAgZnVuY3Rpb24gaXRlcmF0b3JUb0FycmF5KGl0ZXJhdG9yKSB7XG4gICAgdmFyIGRhdGEsXG4gICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgd2hpbGUgKCEoZGF0YSA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgcmVzdWx0LnB1c2goZGF0YS52YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYG1hcGAgdG8gaXRzIGtleS12YWx1ZSBwYWlycy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUga2V5LXZhbHVlIHBhaXJzLlxuICAgKi9cbiAgZnVuY3Rpb24gbWFwVG9BcnJheShtYXApIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgcmVzdWx0ID0gQXJyYXkobWFwLnNpemUpO1xuXG4gICAgbWFwLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAgcmVzdWx0WysraW5kZXhdID0gW2tleSwgdmFsdWVdO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHVuYXJ5IGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBpdHMgYXJndW1lbnQgdHJhbnNmb3JtZWQuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJhbnNmb3JtLlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICovXG4gIGZ1bmN0aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGFyZykge1xuICAgICAgcmV0dXJuIGZ1bmModHJhbnNmb3JtKGFyZykpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZXMgYWxsIGBwbGFjZWhvbGRlcmAgZWxlbWVudHMgaW4gYGFycmF5YCB3aXRoIGFuIGludGVybmFsIHBsYWNlaG9sZGVyXG4gICAqIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHRoZWlyIGluZGV4ZXMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAqIEBwYXJhbSB7Kn0gcGxhY2Vob2xkZXIgVGhlIHBsYWNlaG9sZGVyIHRvIHJlcGxhY2UuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAqL1xuICBmdW5jdGlvbiByZXBsYWNlSG9sZGVycyhhcnJheSwgcGxhY2Vob2xkZXIpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gcGxhY2Vob2xkZXIgfHwgdmFsdWUgPT09IFBMQUNFSE9MREVSKSB7XG4gICAgICAgIGFycmF5W2luZGV4XSA9IFBMQUNFSE9MREVSO1xuICAgICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSBpbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBgc2V0YCB0byBhbiBhcnJheSBvZiBpdHMgdmFsdWVzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gc2V0IFRoZSBzZXQgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB2YWx1ZXMuXG4gICAqL1xuICBmdW5jdGlvbiBzZXRUb0FycmF5KHNldCkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICByZXN1bHQgPSBBcnJheShzZXQuc2l6ZSk7XG5cbiAgICBzZXQuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgcmVzdWx0WysraW5kZXhdID0gdmFsdWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBgc2V0YCB0byBpdHMgdmFsdWUtdmFsdWUgcGFpcnMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBzZXQgVGhlIHNldCB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHZhbHVlLXZhbHVlIHBhaXJzLlxuICAgKi9cbiAgZnVuY3Rpb24gc2V0VG9QYWlycyhzZXQpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgcmVzdWx0ID0gQXJyYXkoc2V0LnNpemUpO1xuXG4gICAgc2V0LmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHJlc3VsdFsrK2luZGV4XSA9IFt2YWx1ZSwgdmFsdWVdO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmluZGV4T2ZgIHdoaWNoIHBlcmZvcm1zIHN0cmljdCBlcXVhbGl0eVxuICAgKiBjb21wYXJpc29ucyBvZiB2YWx1ZXMsIGkuZS4gYD09PWAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICovXG4gIGZ1bmN0aW9uIHN0cmljdEluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgaW5kZXggPSBmcm9tSW5kZXggLSAxLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGFycmF5W2luZGV4XSA9PT0gdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmxhc3RJbmRleE9mYCB3aGljaCBwZXJmb3JtcyBzdHJpY3QgZXF1YWxpdHlcbiAgICogY29tcGFyaXNvbnMgb2YgdmFsdWVzLCBpLmUuIGA9PT1gLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAqL1xuICBmdW5jdGlvbiBzdHJpY3RMYXN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgIHZhciBpbmRleCA9IGZyb21JbmRleCArIDE7XG4gICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgIGlmIChhcnJheVtpbmRleF0gPT09IHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIG51bWJlciBvZiBzeW1ib2xzIGluIGBzdHJpbmdgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3RyaW5nIHNpemUuXG4gICAqL1xuICBmdW5jdGlvbiBzdHJpbmdTaXplKHN0cmluZykge1xuICAgIHJldHVybiBoYXNVbmljb2RlKHN0cmluZylcbiAgICAgID8gdW5pY29kZVNpemUoc3RyaW5nKVxuICAgICAgOiBhc2NpaVNpemUoc3RyaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBhbiBhcnJheS5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICAgKi9cbiAgZnVuY3Rpb24gc3RyaW5nVG9BcnJheShzdHJpbmcpIHtcbiAgICByZXR1cm4gaGFzVW5pY29kZShzdHJpbmcpXG4gICAgICA/IHVuaWNvZGVUb0FycmF5KHN0cmluZylcbiAgICAgIDogYXNjaWlUb0FycmF5KHN0cmluZyk7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBieSBgXy51bmVzY2FwZWAgdG8gY29udmVydCBIVE1MIGVudGl0aWVzIHRvIGNoYXJhY3RlcnMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaHIgVGhlIG1hdGNoZWQgY2hhcmFjdGVyIHRvIHVuZXNjYXBlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB1bmVzY2FwZWQgY2hhcmFjdGVyLlxuICAgKi9cbiAgdmFyIHVuZXNjYXBlSHRtbENoYXIgPSBiYXNlUHJvcGVydHlPZihodG1sVW5lc2NhcGVzKTtcblxuICAvKipcbiAgICogR2V0cyB0aGUgc2l6ZSBvZiBhIFVuaWNvZGUgYHN0cmluZ2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdHJpbmcgc2l6ZS5cbiAgICovXG4gIGZ1bmN0aW9uIHVuaWNvZGVTaXplKHN0cmluZykge1xuICAgIHZhciByZXN1bHQgPSByZVVuaWNvZGUubGFzdEluZGV4ID0gMDtcbiAgICB3aGlsZSAocmVVbmljb2RlLnRlc3Qoc3RyaW5nKSkge1xuICAgICAgKytyZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBVbmljb2RlIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiB1bmljb2RlVG9BcnJheShzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyaW5nLm1hdGNoKHJlVW5pY29kZSkgfHwgW107XG4gIH1cblxuICAvKipcbiAgICogU3BsaXRzIGEgVW5pY29kZSBgc3RyaW5nYCBpbnRvIGFuIGFycmF5IG9mIGl0cyB3b3Jkcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB3b3JkcyBvZiBgc3RyaW5nYC5cbiAgICovXG4gIGZ1bmN0aW9uIHVuaWNvZGVXb3JkcyhzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyaW5nLm1hdGNoKHJlVW5pY29kZVdvcmQpIHx8IFtdO1xuICB9XG5cbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBwcmlzdGluZSBgbG9kYXNoYCBmdW5jdGlvbiB1c2luZyB0aGUgYGNvbnRleHRgIG9iamVjdC5cbiAgICpcbiAgICogQHN0YXRpY1xuICAgKiBAbWVtYmVyT2YgX1xuICAgKiBAc2luY2UgMS4xLjBcbiAgICogQGNhdGVnb3J5IFV0aWxcbiAgICogQHBhcmFtIHtPYmplY3R9IFtjb250ZXh0PXJvb3RdIFRoZSBjb250ZXh0IG9iamVjdC5cbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGEgbmV3IGBsb2Rhc2hgIGZ1bmN0aW9uLlxuICAgKiBAZXhhbXBsZVxuICAgKlxuICAgKiBfLm1peGluKHsgJ2Zvbyc6IF8uY29uc3RhbnQoJ2ZvbycpIH0pO1xuICAgKlxuICAgKiB2YXIgbG9kYXNoID0gXy5ydW5JbkNvbnRleHQoKTtcbiAgICogbG9kYXNoLm1peGluKHsgJ2Jhcic6IGxvZGFzaC5jb25zdGFudCgnYmFyJykgfSk7XG4gICAqXG4gICAqIF8uaXNGdW5jdGlvbihfLmZvbyk7XG4gICAqIC8vID0+IHRydWVcbiAgICogXy5pc0Z1bmN0aW9uKF8uYmFyKTtcbiAgICogLy8gPT4gZmFsc2VcbiAgICpcbiAgICogbG9kYXNoLmlzRnVuY3Rpb24obG9kYXNoLmZvbyk7XG4gICAqIC8vID0+IGZhbHNlXG4gICAqIGxvZGFzaC5pc0Z1bmN0aW9uKGxvZGFzaC5iYXIpO1xuICAgKiAvLyA9PiB0cnVlXG4gICAqXG4gICAqIC8vIENyZWF0ZSBhIHN1cGVkLXVwIGBkZWZlcmAgaW4gTm9kZS5qcy5cbiAgICogdmFyIGRlZmVyID0gXy5ydW5JbkNvbnRleHQoeyAnc2V0VGltZW91dCc6IHNldEltbWVkaWF0ZSB9KS5kZWZlcjtcbiAgICovXG4gIHZhciBydW5JbkNvbnRleHQgPSAoZnVuY3Rpb24gcnVuSW5Db250ZXh0KGNvbnRleHQpIHtcbiAgICBjb250ZXh0ID0gY29udGV4dCA9PSBudWxsID8gcm9vdCA6IF8uZGVmYXVsdHMocm9vdC5PYmplY3QoKSwgY29udGV4dCwgXy5waWNrKHJvb3QsIGNvbnRleHRQcm9wcykpO1xuXG4gICAgLyoqIEJ1aWx0LWluIGNvbnN0cnVjdG9yIHJlZmVyZW5jZXMuICovXG4gICAgdmFyIEFycmF5ID0gY29udGV4dC5BcnJheSxcbiAgICAgICAgRGF0ZSA9IGNvbnRleHQuRGF0ZSxcbiAgICAgICAgRXJyb3IgPSBjb250ZXh0LkVycm9yLFxuICAgICAgICBGdW5jdGlvbiA9IGNvbnRleHQuRnVuY3Rpb24sXG4gICAgICAgIE1hdGggPSBjb250ZXh0Lk1hdGgsXG4gICAgICAgIE9iamVjdCA9IGNvbnRleHQuT2JqZWN0LFxuICAgICAgICBSZWdFeHAgPSBjb250ZXh0LlJlZ0V4cCxcbiAgICAgICAgU3RyaW5nID0gY29udGV4dC5TdHJpbmcsXG4gICAgICAgIFR5cGVFcnJvciA9IGNvbnRleHQuVHlwZUVycm9yO1xuXG4gICAgLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xuICAgIHZhciBhcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlLFxuICAgICAgICBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuICAgIC8qKiBVc2VkIHRvIGRldGVjdCBvdmVycmVhY2hpbmcgY29yZS1qcyBzaGltcy4gKi9cbiAgICB2YXIgY29yZUpzRGF0YSA9IGNvbnRleHRbJ19fY29yZS1qc19zaGFyZWRfXyddO1xuXG4gICAgLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xuICAgIHZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbiAgICAvKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbiAgICB2YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuICAgIC8qKiBVc2VkIHRvIGdlbmVyYXRlIHVuaXF1ZSBJRHMuICovXG4gICAgdmFyIGlkQ291bnRlciA9IDA7XG5cbiAgICAvKiogVXNlZCB0byBkZXRlY3QgbWV0aG9kcyBtYXNxdWVyYWRpbmcgYXMgbmF0aXZlLiAqL1xuICAgIHZhciBtYXNrU3JjS2V5ID0gKGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHVpZCA9IC9bXi5dKyQvLmV4ZWMoY29yZUpzRGF0YSAmJiBjb3JlSnNEYXRhLmtleXMgJiYgY29yZUpzRGF0YS5rZXlzLklFX1BST1RPIHx8ICcnKTtcbiAgICAgIHJldHVybiB1aWQgPyAoJ1N5bWJvbChzcmMpXzEuJyArIHVpZCkgOiAnJztcbiAgICB9KCkpO1xuXG4gICAgLyoqXG4gICAgICogVXNlZCB0byByZXNvbHZlIHRoZVxuICAgICAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICAgICAqIG9mIHZhbHVlcy5cbiAgICAgKi9cbiAgICB2YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuICAgIC8qKiBVc2VkIHRvIGluZmVyIHRoZSBgT2JqZWN0YCBjb25zdHJ1Y3Rvci4gKi9cbiAgICB2YXIgb2JqZWN0Q3RvclN0cmluZyA9IGZ1bmNUb1N0cmluZy5jYWxsKE9iamVjdCk7XG5cbiAgICAvKiogVXNlZCB0byByZXN0b3JlIHRoZSBvcmlnaW5hbCBgX2AgcmVmZXJlbmNlIGluIGBfLm5vQ29uZmxpY3RgLiAqL1xuICAgIHZhciBvbGREYXNoID0gcm9vdC5fO1xuXG4gICAgLyoqIFVzZWQgdG8gZGV0ZWN0IGlmIGEgbWV0aG9kIGlzIG5hdGl2ZS4gKi9cbiAgICB2YXIgcmVJc05hdGl2ZSA9IFJlZ0V4cCgnXicgK1xuICAgICAgZnVuY1RvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgICAgIC5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLCAnJDEuKj8nKSArICckJ1xuICAgICk7XG5cbiAgICAvKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbiAgICB2YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IGNvbnRleHQuQnVmZmVyIDogdW5kZWZpbmVkLFxuICAgICAgICBTeW1ib2wgPSBjb250ZXh0LlN5bWJvbCxcbiAgICAgICAgVWludDhBcnJheSA9IGNvbnRleHQuVWludDhBcnJheSxcbiAgICAgICAgYWxsb2NVbnNhZmUgPSBCdWZmZXIgPyBCdWZmZXIuYWxsb2NVbnNhZmUgOiB1bmRlZmluZWQsXG4gICAgICAgIGdldFByb3RvdHlwZSA9IG92ZXJBcmcoT2JqZWN0LmdldFByb3RvdHlwZU9mLCBPYmplY3QpLFxuICAgICAgICBvYmplY3RDcmVhdGUgPSBPYmplY3QuY3JlYXRlLFxuICAgICAgICBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlLFxuICAgICAgICBzcGxpY2UgPSBhcnJheVByb3RvLnNwbGljZSxcbiAgICAgICAgc3ByZWFkYWJsZVN5bWJvbCA9IFN5bWJvbCA/IFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGUgOiB1bmRlZmluZWQsXG4gICAgICAgIHN5bUl0ZXJhdG9yID0gU3ltYm9sID8gU3ltYm9sLml0ZXJhdG9yIDogdW5kZWZpbmVkLFxuICAgICAgICBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuICAgIHZhciBkZWZpbmVQcm9wZXJ0eSA9IChmdW5jdGlvbigpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBmdW5jID0gZ2V0TmF0aXZlKE9iamVjdCwgJ2RlZmluZVByb3BlcnR5Jyk7XG4gICAgICAgIGZ1bmMoe30sICcnLCB7fSk7XG4gICAgICAgIHJldHVybiBmdW5jO1xuICAgICAgfSBjYXRjaCAoZSkge31cbiAgICB9KCkpO1xuXG4gICAgLyoqIE1vY2tlZCBidWlsdC1pbnMuICovXG4gICAgdmFyIGN0eENsZWFyVGltZW91dCA9IGNvbnRleHQuY2xlYXJUaW1lb3V0ICE9PSByb290LmNsZWFyVGltZW91dCAmJiBjb250ZXh0LmNsZWFyVGltZW91dCxcbiAgICAgICAgY3R4Tm93ID0gRGF0ZSAmJiBEYXRlLm5vdyAhPT0gcm9vdC5EYXRlLm5vdyAmJiBEYXRlLm5vdyxcbiAgICAgICAgY3R4U2V0VGltZW91dCA9IGNvbnRleHQuc2V0VGltZW91dCAhPT0gcm9vdC5zZXRUaW1lb3V0ICYmIGNvbnRleHQuc2V0VGltZW91dDtcblxuICAgIC8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbiAgICB2YXIgbmF0aXZlQ2VpbCA9IE1hdGguY2VpbCxcbiAgICAgICAgbmF0aXZlRmxvb3IgPSBNYXRoLmZsb29yLFxuICAgICAgICBuYXRpdmVHZXRTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxcbiAgICAgICAgbmF0aXZlSXNCdWZmZXIgPSBCdWZmZXIgPyBCdWZmZXIuaXNCdWZmZXIgOiB1bmRlZmluZWQsXG4gICAgICAgIG5hdGl2ZUlzRmluaXRlID0gY29udGV4dC5pc0Zpbml0ZSxcbiAgICAgICAgbmF0aXZlSm9pbiA9IGFycmF5UHJvdG8uam9pbixcbiAgICAgICAgbmF0aXZlS2V5cyA9IG92ZXJBcmcoT2JqZWN0LmtleXMsIE9iamVjdCksXG4gICAgICAgIG5hdGl2ZU1heCA9IE1hdGgubWF4LFxuICAgICAgICBuYXRpdmVNaW4gPSBNYXRoLm1pbixcbiAgICAgICAgbmF0aXZlTm93ID0gRGF0ZS5ub3csXG4gICAgICAgIG5hdGl2ZVBhcnNlSW50ID0gY29udGV4dC5wYXJzZUludCxcbiAgICAgICAgbmF0aXZlUmFuZG9tID0gTWF0aC5yYW5kb20sXG4gICAgICAgIG5hdGl2ZVJldmVyc2UgPSBhcnJheVByb3RvLnJldmVyc2U7XG5cbiAgICAvKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG4gICAgdmFyIERhdGFWaWV3ID0gZ2V0TmF0aXZlKGNvbnRleHQsICdEYXRhVmlldycpLFxuICAgICAgICBNYXAgPSBnZXROYXRpdmUoY29udGV4dCwgJ01hcCcpLFxuICAgICAgICBQcm9taXNlID0gZ2V0TmF0aXZlKGNvbnRleHQsICdQcm9taXNlJyksXG4gICAgICAgIFNldCA9IGdldE5hdGl2ZShjb250ZXh0LCAnU2V0JyksXG4gICAgICAgIFdlYWtNYXAgPSBnZXROYXRpdmUoY29udGV4dCwgJ1dlYWtNYXAnKSxcbiAgICAgICAgbmF0aXZlQ3JlYXRlID0gZ2V0TmF0aXZlKE9iamVjdCwgJ2NyZWF0ZScpO1xuXG4gICAgLyoqIFVzZWQgdG8gc3RvcmUgZnVuY3Rpb24gbWV0YWRhdGEuICovXG4gICAgdmFyIG1ldGFNYXAgPSBXZWFrTWFwICYmIG5ldyBXZWFrTWFwO1xuXG4gICAgLyoqIFVzZWQgdG8gbG9va3VwIHVubWluaWZpZWQgZnVuY3Rpb24gbmFtZXMuICovXG4gICAgdmFyIHJlYWxOYW1lcyA9IHt9O1xuXG4gICAgLyoqIFVzZWQgdG8gZGV0ZWN0IG1hcHMsIHNldHMsIGFuZCB3ZWFrbWFwcy4gKi9cbiAgICB2YXIgZGF0YVZpZXdDdG9yU3RyaW5nID0gdG9Tb3VyY2UoRGF0YVZpZXcpLFxuICAgICAgICBtYXBDdG9yU3RyaW5nID0gdG9Tb3VyY2UoTWFwKSxcbiAgICAgICAgcHJvbWlzZUN0b3JTdHJpbmcgPSB0b1NvdXJjZShQcm9taXNlKSxcbiAgICAgICAgc2V0Q3RvclN0cmluZyA9IHRvU291cmNlKFNldCksXG4gICAgICAgIHdlYWtNYXBDdG9yU3RyaW5nID0gdG9Tb3VyY2UoV2Vha01hcCk7XG5cbiAgICAvKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbiAgICB2YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgICAgICBzeW1ib2xWYWx1ZU9mID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by52YWx1ZU9mIDogdW5kZWZpbmVkLFxuICAgICAgICBzeW1ib2xUb1N0cmluZyA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udG9TdHJpbmcgOiB1bmRlZmluZWQ7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYGxvZGFzaGAgb2JqZWN0IHdoaWNoIHdyYXBzIGB2YWx1ZWAgdG8gZW5hYmxlIGltcGxpY2l0IG1ldGhvZFxuICAgICAqIGNoYWluIHNlcXVlbmNlcy4gTWV0aG9kcyB0aGF0IG9wZXJhdGUgb24gYW5kIHJldHVybiBhcnJheXMsIGNvbGxlY3Rpb25zLFxuICAgICAqIGFuZCBmdW5jdGlvbnMgY2FuIGJlIGNoYWluZWQgdG9nZXRoZXIuIE1ldGhvZHMgdGhhdCByZXRyaWV2ZSBhIHNpbmdsZSB2YWx1ZVxuICAgICAqIG9yIG1heSByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUgd2lsbCBhdXRvbWF0aWNhbGx5IGVuZCB0aGUgY2hhaW4gc2VxdWVuY2VcbiAgICAgKiBhbmQgcmV0dXJuIHRoZSB1bndyYXBwZWQgdmFsdWUuIE90aGVyd2lzZSwgdGhlIHZhbHVlIG11c3QgYmUgdW53cmFwcGVkXG4gICAgICogd2l0aCBgXyN2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBFeHBsaWNpdCBjaGFpbiBzZXF1ZW5jZXMsIHdoaWNoIG11c3QgYmUgdW53cmFwcGVkIHdpdGggYF8jdmFsdWVgLCBtYXkgYmVcbiAgICAgKiBlbmFibGVkIHVzaW5nIGBfLmNoYWluYC5cbiAgICAgKlxuICAgICAqIFRoZSBleGVjdXRpb24gb2YgY2hhaW5lZCBtZXRob2RzIGlzIGxhenksIHRoYXQgaXMsIGl0J3MgZGVmZXJyZWQgdW50aWxcbiAgICAgKiBgXyN2YWx1ZWAgaXMgaW1wbGljaXRseSBvciBleHBsaWNpdGx5IGNhbGxlZC5cbiAgICAgKlxuICAgICAqIExhenkgZXZhbHVhdGlvbiBhbGxvd3Mgc2V2ZXJhbCBtZXRob2RzIHRvIHN1cHBvcnQgc2hvcnRjdXQgZnVzaW9uLlxuICAgICAqIFNob3J0Y3V0IGZ1c2lvbiBpcyBhbiBvcHRpbWl6YXRpb24gdG8gbWVyZ2UgaXRlcmF0ZWUgY2FsbHM7IHRoaXMgYXZvaWRzXG4gICAgICogdGhlIGNyZWF0aW9uIG9mIGludGVybWVkaWF0ZSBhcnJheXMgYW5kIGNhbiBncmVhdGx5IHJlZHVjZSB0aGUgbnVtYmVyIG9mXG4gICAgICogaXRlcmF0ZWUgZXhlY3V0aW9ucy4gU2VjdGlvbnMgb2YgYSBjaGFpbiBzZXF1ZW5jZSBxdWFsaWZ5IGZvciBzaG9ydGN1dFxuICAgICAqIGZ1c2lvbiBpZiB0aGUgc2VjdGlvbiBpcyBhcHBsaWVkIHRvIGFuIGFycmF5IGFuZCBpdGVyYXRlZXMgYWNjZXB0IG9ubHlcbiAgICAgKiBvbmUgYXJndW1lbnQuIFRoZSBoZXVyaXN0aWMgZm9yIHdoZXRoZXIgYSBzZWN0aW9uIHF1YWxpZmllcyBmb3Igc2hvcnRjdXRcbiAgICAgKiBmdXNpb24gaXMgc3ViamVjdCB0byBjaGFuZ2UuXG4gICAgICpcbiAgICAgKiBDaGFpbmluZyBpcyBzdXBwb3J0ZWQgaW4gY3VzdG9tIGJ1aWxkcyBhcyBsb25nIGFzIHRoZSBgXyN2YWx1ZWAgbWV0aG9kIGlzXG4gICAgICogZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBpbmNsdWRlZCBpbiB0aGUgYnVpbGQuXG4gICAgICpcbiAgICAgKiBJbiBhZGRpdGlvbiB0byBsb2Rhc2ggbWV0aG9kcywgd3JhcHBlcnMgaGF2ZSBgQXJyYXlgIGFuZCBgU3RyaW5nYCBtZXRob2RzLlxuICAgICAqXG4gICAgICogVGhlIHdyYXBwZXIgYEFycmF5YCBtZXRob2RzIGFyZTpcbiAgICAgKiBgY29uY2F0YCwgYGpvaW5gLCBgcG9wYCwgYHB1c2hgLCBgc2hpZnRgLCBgc29ydGAsIGBzcGxpY2VgLCBhbmQgYHVuc2hpZnRgXG4gICAgICpcbiAgICAgKiBUaGUgd3JhcHBlciBgU3RyaW5nYCBtZXRob2RzIGFyZTpcbiAgICAgKiBgcmVwbGFjZWAgYW5kIGBzcGxpdGBcbiAgICAgKlxuICAgICAqIFRoZSB3cmFwcGVyIG1ldGhvZHMgdGhhdCBzdXBwb3J0IHNob3J0Y3V0IGZ1c2lvbiBhcmU6XG4gICAgICogYGF0YCwgYGNvbXBhY3RgLCBgZHJvcGAsIGBkcm9wUmlnaHRgLCBgZHJvcFdoaWxlYCwgYGZpbHRlcmAsIGBmaW5kYCxcbiAgICAgKiBgZmluZExhc3RgLCBgaGVhZGAsIGBpbml0aWFsYCwgYGxhc3RgLCBgbWFwYCwgYHJlamVjdGAsIGByZXZlcnNlYCwgYHNsaWNlYCxcbiAgICAgKiBgdGFpbGAsIGB0YWtlYCwgYHRha2VSaWdodGAsIGB0YWtlUmlnaHRXaGlsZWAsIGB0YWtlV2hpbGVgLCBhbmQgYHRvQXJyYXlgXG4gICAgICpcbiAgICAgKiBUaGUgY2hhaW5hYmxlIHdyYXBwZXIgbWV0aG9kcyBhcmU6XG4gICAgICogYGFmdGVyYCwgYGFyeWAsIGBhc3NpZ25gLCBgYXNzaWduSW5gLCBgYXNzaWduSW5XaXRoYCwgYGFzc2lnbldpdGhgLCBgYXRgLFxuICAgICAqIGBiZWZvcmVgLCBgYmluZGAsIGBiaW5kQWxsYCwgYGJpbmRLZXlgLCBgY2FzdEFycmF5YCwgYGNoYWluYCwgYGNodW5rYCxcbiAgICAgKiBgY29tbWl0YCwgYGNvbXBhY3RgLCBgY29uY2F0YCwgYGNvbmZvcm1zYCwgYGNvbnN0YW50YCwgYGNvdW50QnlgLCBgY3JlYXRlYCxcbiAgICAgKiBgY3VycnlgLCBgZGVib3VuY2VgLCBgZGVmYXVsdHNgLCBgZGVmYXVsdHNEZWVwYCwgYGRlZmVyYCwgYGRlbGF5YCxcbiAgICAgKiBgZGlmZmVyZW5jZWAsIGBkaWZmZXJlbmNlQnlgLCBgZGlmZmVyZW5jZVdpdGhgLCBgZHJvcGAsIGBkcm9wUmlnaHRgLFxuICAgICAqIGBkcm9wUmlnaHRXaGlsZWAsIGBkcm9wV2hpbGVgLCBgZXh0ZW5kYCwgYGV4dGVuZFdpdGhgLCBgZmlsbGAsIGBmaWx0ZXJgLFxuICAgICAqIGBmbGF0TWFwYCwgYGZsYXRNYXBEZWVwYCwgYGZsYXRNYXBEZXB0aGAsIGBmbGF0dGVuYCwgYGZsYXR0ZW5EZWVwYCxcbiAgICAgKiBgZmxhdHRlbkRlcHRoYCwgYGZsaXBgLCBgZmxvd2AsIGBmbG93UmlnaHRgLCBgZnJvbVBhaXJzYCwgYGZ1bmN0aW9uc2AsXG4gICAgICogYGZ1bmN0aW9uc0luYCwgYGdyb3VwQnlgLCBgaW5pdGlhbGAsIGBpbnRlcnNlY3Rpb25gLCBgaW50ZXJzZWN0aW9uQnlgLFxuICAgICAqIGBpbnRlcnNlY3Rpb25XaXRoYCwgYGludmVydGAsIGBpbnZlcnRCeWAsIGBpbnZva2VNYXBgLCBgaXRlcmF0ZWVgLCBga2V5QnlgLFxuICAgICAqIGBrZXlzYCwgYGtleXNJbmAsIGBtYXBgLCBgbWFwS2V5c2AsIGBtYXBWYWx1ZXNgLCBgbWF0Y2hlc2AsIGBtYXRjaGVzUHJvcGVydHlgLFxuICAgICAqIGBtZW1vaXplYCwgYG1lcmdlYCwgYG1lcmdlV2l0aGAsIGBtZXRob2RgLCBgbWV0aG9kT2ZgLCBgbWl4aW5gLCBgbmVnYXRlYCxcbiAgICAgKiBgbnRoQXJnYCwgYG9taXRgLCBgb21pdEJ5YCwgYG9uY2VgLCBgb3JkZXJCeWAsIGBvdmVyYCwgYG92ZXJBcmdzYCxcbiAgICAgKiBgb3ZlckV2ZXJ5YCwgYG92ZXJTb21lYCwgYHBhcnRpYWxgLCBgcGFydGlhbFJpZ2h0YCwgYHBhcnRpdGlvbmAsIGBwaWNrYCxcbiAgICAgKiBgcGlja0J5YCwgYHBsYW50YCwgYHByb3BlcnR5YCwgYHByb3BlcnR5T2ZgLCBgcHVsbGAsIGBwdWxsQWxsYCwgYHB1bGxBbGxCeWAsXG4gICAgICogYHB1bGxBbGxXaXRoYCwgYHB1bGxBdGAsIGBwdXNoYCwgYHJhbmdlYCwgYHJhbmdlUmlnaHRgLCBgcmVhcmdgLCBgcmVqZWN0YCxcbiAgICAgKiBgcmVtb3ZlYCwgYHJlc3RgLCBgcmV2ZXJzZWAsIGBzYW1wbGVTaXplYCwgYHNldGAsIGBzZXRXaXRoYCwgYHNodWZmbGVgLFxuICAgICAqIGBzbGljZWAsIGBzb3J0YCwgYHNvcnRCeWAsIGBzcGxpY2VgLCBgc3ByZWFkYCwgYHRhaWxgLCBgdGFrZWAsIGB0YWtlUmlnaHRgLFxuICAgICAqIGB0YWtlUmlnaHRXaGlsZWAsIGB0YWtlV2hpbGVgLCBgdGFwYCwgYHRocm90dGxlYCwgYHRocnVgLCBgdG9BcnJheWAsXG4gICAgICogYHRvUGFpcnNgLCBgdG9QYWlyc0luYCwgYHRvUGF0aGAsIGB0b1BsYWluT2JqZWN0YCwgYHRyYW5zZm9ybWAsIGB1bmFyeWAsXG4gICAgICogYHVuaW9uYCwgYHVuaW9uQnlgLCBgdW5pb25XaXRoYCwgYHVuaXFgLCBgdW5pcUJ5YCwgYHVuaXFXaXRoYCwgYHVuc2V0YCxcbiAgICAgKiBgdW5zaGlmdGAsIGB1bnppcGAsIGB1bnppcFdpdGhgLCBgdXBkYXRlYCwgYHVwZGF0ZVdpdGhgLCBgdmFsdWVzYCxcbiAgICAgKiBgdmFsdWVzSW5gLCBgd2l0aG91dGAsIGB3cmFwYCwgYHhvcmAsIGB4b3JCeWAsIGB4b3JXaXRoYCwgYHppcGAsXG4gICAgICogYHppcE9iamVjdGAsIGB6aXBPYmplY3REZWVwYCwgYW5kIGB6aXBXaXRoYFxuICAgICAqXG4gICAgICogVGhlIHdyYXBwZXIgbWV0aG9kcyB0aGF0IGFyZSAqKm5vdCoqIGNoYWluYWJsZSBieSBkZWZhdWx0IGFyZTpcbiAgICAgKiBgYWRkYCwgYGF0dGVtcHRgLCBgY2FtZWxDYXNlYCwgYGNhcGl0YWxpemVgLCBgY2VpbGAsIGBjbGFtcGAsIGBjbG9uZWAsXG4gICAgICogYGNsb25lRGVlcGAsIGBjbG9uZURlZXBXaXRoYCwgYGNsb25lV2l0aGAsIGBjb25mb3Jtc1RvYCwgYGRlYnVycmAsXG4gICAgICogYGRlZmF1bHRUb2AsIGBkaXZpZGVgLCBgZWFjaGAsIGBlYWNoUmlnaHRgLCBgZW5kc1dpdGhgLCBgZXFgLCBgZXNjYXBlYCxcbiAgICAgKiBgZXNjYXBlUmVnRXhwYCwgYGV2ZXJ5YCwgYGZpbmRgLCBgZmluZEluZGV4YCwgYGZpbmRLZXlgLCBgZmluZExhc3RgLFxuICAgICAqIGBmaW5kTGFzdEluZGV4YCwgYGZpbmRMYXN0S2V5YCwgYGZpcnN0YCwgYGZsb29yYCwgYGZvckVhY2hgLCBgZm9yRWFjaFJpZ2h0YCxcbiAgICAgKiBgZm9ySW5gLCBgZm9ySW5SaWdodGAsIGBmb3JPd25gLCBgZm9yT3duUmlnaHRgLCBgZ2V0YCwgYGd0YCwgYGd0ZWAsIGBoYXNgLFxuICAgICAqIGBoYXNJbmAsIGBoZWFkYCwgYGlkZW50aXR5YCwgYGluY2x1ZGVzYCwgYGluZGV4T2ZgLCBgaW5SYW5nZWAsIGBpbnZva2VgLFxuICAgICAqIGBpc0FyZ3VtZW50c2AsIGBpc0FycmF5YCwgYGlzQXJyYXlCdWZmZXJgLCBgaXNBcnJheUxpa2VgLCBgaXNBcnJheUxpa2VPYmplY3RgLFxuICAgICAqIGBpc0Jvb2xlYW5gLCBgaXNCdWZmZXJgLCBgaXNEYXRlYCwgYGlzRWxlbWVudGAsIGBpc0VtcHR5YCwgYGlzRXF1YWxgLFxuICAgICAqIGBpc0VxdWFsV2l0aGAsIGBpc0Vycm9yYCwgYGlzRmluaXRlYCwgYGlzRnVuY3Rpb25gLCBgaXNJbnRlZ2VyYCwgYGlzTGVuZ3RoYCxcbiAgICAgKiBgaXNNYXBgLCBgaXNNYXRjaGAsIGBpc01hdGNoV2l0aGAsIGBpc05hTmAsIGBpc05hdGl2ZWAsIGBpc05pbGAsIGBpc051bGxgLFxuICAgICAqIGBpc051bWJlcmAsIGBpc09iamVjdGAsIGBpc09iamVjdExpa2VgLCBgaXNQbGFpbk9iamVjdGAsIGBpc1JlZ0V4cGAsXG4gICAgICogYGlzU2FmZUludGVnZXJgLCBgaXNTZXRgLCBgaXNTdHJpbmdgLCBgaXNVbmRlZmluZWRgLCBgaXNUeXBlZEFycmF5YCxcbiAgICAgKiBgaXNXZWFrTWFwYCwgYGlzV2Vha1NldGAsIGBqb2luYCwgYGtlYmFiQ2FzZWAsIGBsYXN0YCwgYGxhc3RJbmRleE9mYCxcbiAgICAgKiBgbG93ZXJDYXNlYCwgYGxvd2VyRmlyc3RgLCBgbHRgLCBgbHRlYCwgYG1heGAsIGBtYXhCeWAsIGBtZWFuYCwgYG1lYW5CeWAsXG4gICAgICogYG1pbmAsIGBtaW5CeWAsIGBtdWx0aXBseWAsIGBub0NvbmZsaWN0YCwgYG5vb3BgLCBgbm93YCwgYG50aGAsIGBwYWRgLFxuICAgICAqIGBwYWRFbmRgLCBgcGFkU3RhcnRgLCBgcGFyc2VJbnRgLCBgcG9wYCwgYHJhbmRvbWAsIGByZWR1Y2VgLCBgcmVkdWNlUmlnaHRgLFxuICAgICAqIGByZXBlYXRgLCBgcmVzdWx0YCwgYHJvdW5kYCwgYHJ1bkluQ29udGV4dGAsIGBzYW1wbGVgLCBgc2hpZnRgLCBgc2l6ZWAsXG4gICAgICogYHNuYWtlQ2FzZWAsIGBzb21lYCwgYHNvcnRlZEluZGV4YCwgYHNvcnRlZEluZGV4QnlgLCBgc29ydGVkTGFzdEluZGV4YCxcbiAgICAgKiBgc29ydGVkTGFzdEluZGV4QnlgLCBgc3RhcnRDYXNlYCwgYHN0YXJ0c1dpdGhgLCBgc3R1YkFycmF5YCwgYHN0dWJGYWxzZWAsXG4gICAgICogYHN0dWJPYmplY3RgLCBgc3R1YlN0cmluZ2AsIGBzdHViVHJ1ZWAsIGBzdWJ0cmFjdGAsIGBzdW1gLCBgc3VtQnlgLFxuICAgICAqIGB0ZW1wbGF0ZWAsIGB0aW1lc2AsIGB0b0Zpbml0ZWAsIGB0b0ludGVnZXJgLCBgdG9KU09OYCwgYHRvTGVuZ3RoYCxcbiAgICAgKiBgdG9Mb3dlcmAsIGB0b051bWJlcmAsIGB0b1NhZmVJbnRlZ2VyYCwgYHRvU3RyaW5nYCwgYHRvVXBwZXJgLCBgdHJpbWAsXG4gICAgICogYHRyaW1FbmRgLCBgdHJpbVN0YXJ0YCwgYHRydW5jYXRlYCwgYHVuZXNjYXBlYCwgYHVuaXF1ZUlkYCwgYHVwcGVyQ2FzZWAsXG4gICAgICogYHVwcGVyRmlyc3RgLCBgdmFsdWVgLCBhbmQgYHdvcmRzYFxuICAgICAqXG4gICAgICogQG5hbWUgX1xuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byB3cmFwIGluIGEgYGxvZGFzaGAgaW5zdGFuY2UuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gICAgICogICByZXR1cm4gbiAqIG47XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIHdyYXBwZWQgPSBfKFsxLCAyLCAzXSk7XG4gICAgICpcbiAgICAgKiAvLyBSZXR1cm5zIGFuIHVud3JhcHBlZCB2YWx1ZS5cbiAgICAgKiB3cmFwcGVkLnJlZHVjZShfLmFkZCk7XG4gICAgICogLy8gPT4gNlxuICAgICAqXG4gICAgICogLy8gUmV0dXJucyBhIHdyYXBwZWQgdmFsdWUuXG4gICAgICogdmFyIHNxdWFyZXMgPSB3cmFwcGVkLm1hcChzcXVhcmUpO1xuICAgICAqXG4gICAgICogXy5pc0FycmF5KHNxdWFyZXMpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoc3F1YXJlcy52YWx1ZSgpKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gbG9kYXNoKHZhbHVlKSB7XG4gICAgICBpZiAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiAhaXNBcnJheSh2YWx1ZSkgJiYgISh2YWx1ZSBpbnN0YW5jZW9mIExhenlXcmFwcGVyKSkge1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBMb2Rhc2hXcmFwcGVyKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnX193cmFwcGVkX18nKSkge1xuICAgICAgICAgIHJldHVybiB3cmFwcGVyQ2xvbmUodmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNyZWF0ZWAgd2l0aG91dCBzdXBwb3J0IGZvciBhc3NpZ25pbmdcbiAgICAgKiBwcm9wZXJ0aWVzIHRvIHRoZSBjcmVhdGVkIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHByb3RvIFRoZSBvYmplY3QgdG8gaW5oZXJpdCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICovXG4gICAgdmFyIGJhc2VDcmVhdGUgPSAoZnVuY3Rpb24oKSB7XG4gICAgICBmdW5jdGlvbiBvYmplY3QoKSB7fVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHByb3RvKSB7XG4gICAgICAgIGlmICghaXNPYmplY3QocHJvdG8pKSB7XG4gICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChvYmplY3RDcmVhdGUpIHtcbiAgICAgICAgICByZXR1cm4gb2JqZWN0Q3JlYXRlKHByb3RvKTtcbiAgICAgICAgfVxuICAgICAgICBvYmplY3QucHJvdG90eXBlID0gcHJvdG87XG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgb2JqZWN0O1xuICAgICAgICBvYmplY3QucHJvdG90eXBlID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICB9KCkpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGZ1bmN0aW9uIHdob3NlIHByb3RvdHlwZSBjaGFpbiBzZXF1ZW5jZSB3cmFwcGVycyBpbmhlcml0IGZyb20uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VMb2Rhc2goKSB7XG4gICAgICAvLyBObyBvcGVyYXRpb24gcGVyZm9ybWVkLlxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGNvbnN0cnVjdG9yIGZvciBjcmVhdGluZyBgbG9kYXNoYCB3cmFwcGVyIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbY2hhaW5BbGxdIEVuYWJsZSBleHBsaWNpdCBtZXRob2QgY2hhaW4gc2VxdWVuY2VzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIExvZGFzaFdyYXBwZXIodmFsdWUsIGNoYWluQWxsKSB7XG4gICAgICB0aGlzLl9fd3JhcHBlZF9fID0gdmFsdWU7XG4gICAgICB0aGlzLl9fYWN0aW9uc19fID0gW107XG4gICAgICB0aGlzLl9fY2hhaW5fXyA9ICEhY2hhaW5BbGw7XG4gICAgICB0aGlzLl9faW5kZXhfXyA9IDA7XG4gICAgICB0aGlzLl9fdmFsdWVzX18gPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQnkgZGVmYXVsdCwgdGhlIHRlbXBsYXRlIGRlbGltaXRlcnMgdXNlZCBieSBsb2Rhc2ggYXJlIGxpa2UgdGhvc2UgaW5cbiAgICAgKiBlbWJlZGRlZCBSdWJ5IChFUkIpIGFzIHdlbGwgYXMgRVMyMDE1IHRlbXBsYXRlIHN0cmluZ3MuIENoYW5nZSB0aGVcbiAgICAgKiBmb2xsb3dpbmcgdGVtcGxhdGUgc2V0dGluZ3MgdG8gdXNlIGFsdGVybmF0aXZlIGRlbGltaXRlcnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgICAqL1xuICAgIGxvZGFzaC50ZW1wbGF0ZVNldHRpbmdzID0ge1xuXG4gICAgICAvKipcbiAgICAgICAqIFVzZWQgdG8gZGV0ZWN0IGBkYXRhYCBwcm9wZXJ0eSB2YWx1ZXMgdG8gYmUgSFRNTC1lc2NhcGVkLlxuICAgICAgICpcbiAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICAgICAqIEB0eXBlIHtSZWdFeHB9XG4gICAgICAgKi9cbiAgICAgICdlc2NhcGUnOiByZUVzY2FwZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBVc2VkIHRvIGRldGVjdCBjb2RlIHRvIGJlIGV2YWx1YXRlZC5cbiAgICAgICAqXG4gICAgICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAgICAgKiBAdHlwZSB7UmVnRXhwfVxuICAgICAgICovXG4gICAgICAnZXZhbHVhdGUnOiByZUV2YWx1YXRlLFxuXG4gICAgICAvKipcbiAgICAgICAqIFVzZWQgdG8gZGV0ZWN0IGBkYXRhYCBwcm9wZXJ0eSB2YWx1ZXMgdG8gaW5qZWN0LlxuICAgICAgICpcbiAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICAgICAqIEB0eXBlIHtSZWdFeHB9XG4gICAgICAgKi9cbiAgICAgICdpbnRlcnBvbGF0ZSc6IHJlSW50ZXJwb2xhdGUsXG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byByZWZlcmVuY2UgdGhlIGRhdGEgb2JqZWN0IGluIHRoZSB0ZW1wbGF0ZSB0ZXh0LlxuICAgICAgICpcbiAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICAgKi9cbiAgICAgICd2YXJpYWJsZSc6ICcnLFxuXG4gICAgICAvKipcbiAgICAgICAqIFVzZWQgdG8gaW1wb3J0IHZhcmlhYmxlcyBpbnRvIHRoZSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAgICAgICAqXG4gICAgICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAgICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgICAgICovXG4gICAgICAnaW1wb3J0cyc6IHtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQSByZWZlcmVuY2UgdG8gdGhlIGBsb2Rhc2hgIGZ1bmN0aW9uLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzLmltcG9ydHNcbiAgICAgICAgICogQHR5cGUge0Z1bmN0aW9ufVxuICAgICAgICAgKi9cbiAgICAgICAgJ18nOiBsb2Rhc2hcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gRW5zdXJlIHdyYXBwZXJzIGFyZSBpbnN0YW5jZXMgb2YgYGJhc2VMb2Rhc2hgLlxuICAgIGxvZGFzaC5wcm90b3R5cGUgPSBiYXNlTG9kYXNoLnByb3RvdHlwZTtcbiAgICBsb2Rhc2gucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gbG9kYXNoO1xuXG4gICAgTG9kYXNoV3JhcHBlci5wcm90b3R5cGUgPSBiYXNlQ3JlYXRlKGJhc2VMb2Rhc2gucHJvdG90eXBlKTtcbiAgICBMb2Rhc2hXcmFwcGVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IExvZGFzaFdyYXBwZXI7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbGF6eSB3cmFwcGVyIG9iamVjdCB3aGljaCB3cmFwcyBgdmFsdWVgIHRvIGVuYWJsZSBsYXp5IGV2YWx1YXRpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHdyYXAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gTGF6eVdyYXBwZXIodmFsdWUpIHtcbiAgICAgIHRoaXMuX193cmFwcGVkX18gPSB2YWx1ZTtcbiAgICAgIHRoaXMuX19hY3Rpb25zX18gPSBbXTtcbiAgICAgIHRoaXMuX19kaXJfXyA9IDE7XG4gICAgICB0aGlzLl9fZmlsdGVyZWRfXyA9IGZhbHNlO1xuICAgICAgdGhpcy5fX2l0ZXJhdGVlc19fID0gW107XG4gICAgICB0aGlzLl9fdGFrZUNvdW50X18gPSBNQVhfQVJSQVlfTEVOR1RIO1xuICAgICAgdGhpcy5fX3ZpZXdzX18gPSBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgdGhlIGxhenkgd3JhcHBlciBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGNsb25lXG4gICAgICogQG1lbWJlck9mIExhenlXcmFwcGVyXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIGBMYXp5V3JhcHBlcmAgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxhenlDbG9uZSgpIHtcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgTGF6eVdyYXBwZXIodGhpcy5fX3dyYXBwZWRfXyk7XG4gICAgICByZXN1bHQuX19hY3Rpb25zX18gPSBjb3B5QXJyYXkodGhpcy5fX2FjdGlvbnNfXyk7XG4gICAgICByZXN1bHQuX19kaXJfXyA9IHRoaXMuX19kaXJfXztcbiAgICAgIHJlc3VsdC5fX2ZpbHRlcmVkX18gPSB0aGlzLl9fZmlsdGVyZWRfXztcbiAgICAgIHJlc3VsdC5fX2l0ZXJhdGVlc19fID0gY29weUFycmF5KHRoaXMuX19pdGVyYXRlZXNfXyk7XG4gICAgICByZXN1bHQuX190YWtlQ291bnRfXyA9IHRoaXMuX190YWtlQ291bnRfXztcbiAgICAgIHJlc3VsdC5fX3ZpZXdzX18gPSBjb3B5QXJyYXkodGhpcy5fX3ZpZXdzX18pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXZlcnNlcyB0aGUgZGlyZWN0aW9uIG9mIGxhenkgaXRlcmF0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSByZXZlcnNlXG4gICAgICogQG1lbWJlck9mIExhenlXcmFwcGVyXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IHJldmVyc2VkIGBMYXp5V3JhcHBlcmAgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxhenlSZXZlcnNlKCkge1xuICAgICAgaWYgKHRoaXMuX19maWx0ZXJlZF9fKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgTGF6eVdyYXBwZXIodGhpcyk7XG4gICAgICAgIHJlc3VsdC5fX2Rpcl9fID0gLTE7XG4gICAgICAgIHJlc3VsdC5fX2ZpbHRlcmVkX18gPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5jbG9uZSgpO1xuICAgICAgICByZXN1bHQuX19kaXJfXyAqPSAtMTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXh0cmFjdHMgdGhlIHVud3JhcHBlZCB2YWx1ZSBmcm9tIGl0cyBsYXp5IHdyYXBwZXIuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIHZhbHVlXG4gICAgICogQG1lbWJlck9mIExhenlXcmFwcGVyXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHVud3JhcHBlZCB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsYXp5VmFsdWUoKSB7XG4gICAgICB2YXIgYXJyYXkgPSB0aGlzLl9fd3JhcHBlZF9fLnZhbHVlKCksXG4gICAgICAgICAgZGlyID0gdGhpcy5fX2Rpcl9fLFxuICAgICAgICAgIGlzQXJyID0gaXNBcnJheShhcnJheSksXG4gICAgICAgICAgaXNSaWdodCA9IGRpciA8IDAsXG4gICAgICAgICAgYXJyTGVuZ3RoID0gaXNBcnIgPyBhcnJheS5sZW5ndGggOiAwLFxuICAgICAgICAgIHZpZXcgPSBnZXRWaWV3KDAsIGFyckxlbmd0aCwgdGhpcy5fX3ZpZXdzX18pLFxuICAgICAgICAgIHN0YXJ0ID0gdmlldy5zdGFydCxcbiAgICAgICAgICBlbmQgPSB2aWV3LmVuZCxcbiAgICAgICAgICBsZW5ndGggPSBlbmQgLSBzdGFydCxcbiAgICAgICAgICBpbmRleCA9IGlzUmlnaHQgPyBlbmQgOiAoc3RhcnQgLSAxKSxcbiAgICAgICAgICBpdGVyYXRlZXMgPSB0aGlzLl9faXRlcmF0ZWVzX18sXG4gICAgICAgICAgaXRlckxlbmd0aCA9IGl0ZXJhdGVlcy5sZW5ndGgsXG4gICAgICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgICAgIHRha2VDb3VudCA9IG5hdGl2ZU1pbihsZW5ndGgsIHRoaXMuX190YWtlQ291bnRfXyk7XG5cbiAgICAgIGlmICghaXNBcnIgfHwgKCFpc1JpZ2h0ICYmIGFyckxlbmd0aCA9PSBsZW5ndGggJiYgdGFrZUNvdW50ID09IGxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VXcmFwcGVyVmFsdWUoYXJyYXksIHRoaXMuX19hY3Rpb25zX18pO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuXG4gICAgICBvdXRlcjpcbiAgICAgIHdoaWxlIChsZW5ndGgtLSAmJiByZXNJbmRleCA8IHRha2VDb3VudCkge1xuICAgICAgICBpbmRleCArPSBkaXI7XG5cbiAgICAgICAgdmFyIGl0ZXJJbmRleCA9IC0xLFxuICAgICAgICAgICAgdmFsdWUgPSBhcnJheVtpbmRleF07XG5cbiAgICAgICAgd2hpbGUgKCsraXRlckluZGV4IDwgaXRlckxlbmd0aCkge1xuICAgICAgICAgIHZhciBkYXRhID0gaXRlcmF0ZWVzW2l0ZXJJbmRleF0sXG4gICAgICAgICAgICAgIGl0ZXJhdGVlID0gZGF0YS5pdGVyYXRlZSxcbiAgICAgICAgICAgICAgdHlwZSA9IGRhdGEudHlwZSxcbiAgICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSh2YWx1ZSk7XG5cbiAgICAgICAgICBpZiAodHlwZSA9PSBMQVpZX01BUF9GTEFHKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGNvbXB1dGVkO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIWNvbXB1dGVkKSB7XG4gICAgICAgICAgICBpZiAodHlwZSA9PSBMQVpZX0ZJTFRFUl9GTEFHKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYnJlYWsgb3V0ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvLyBFbnN1cmUgYExhenlXcmFwcGVyYCBpcyBhbiBpbnN0YW5jZSBvZiBgYmFzZUxvZGFzaGAuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlID0gYmFzZUNyZWF0ZShiYXNlTG9kYXNoLnByb3RvdHlwZSk7XG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTGF6eVdyYXBwZXI7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgaGFzaCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIEhhc2goZW50cmllcykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICAgICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBoYXNoLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBjbGVhclxuICAgICAqIEBtZW1iZXJPZiBIYXNoXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzaENsZWFyKCkge1xuICAgICAgdGhpcy5fX2RhdGFfXyA9IG5hdGl2ZUNyZWF0ZSA/IG5hdGl2ZUNyZWF0ZShudWxsKSA6IHt9O1xuICAgICAgdGhpcy5zaXplID0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgaGFzaC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZGVsZXRlXG4gICAgICogQG1lbWJlck9mIEhhc2hcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gaGFzaCBUaGUgaGFzaCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc2hEZWxldGUoa2V5KSB7XG4gICAgICB2YXIgcmVzdWx0ID0gdGhpcy5oYXMoa2V5KSAmJiBkZWxldGUgdGhpcy5fX2RhdGFfX1trZXldO1xuICAgICAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBoYXNoIHZhbHVlIGZvciBga2V5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZ2V0XG4gICAgICogQG1lbWJlck9mIEhhc2hcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzaEdldChrZXkpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgICAgIGlmIChuYXRpdmVDcmVhdGUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGRhdGFba2V5XTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdCA9PT0gSEFTSF9VTkRFRklORUQgPyB1bmRlZmluZWQgOiByZXN1bHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpID8gZGF0YVtrZXldIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBhIGhhc2ggdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgaGFzXG4gICAgICogQG1lbWJlck9mIEhhc2hcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzaEhhcyhrZXkpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgICAgIHJldHVybiBuYXRpdmVDcmVhdGUgPyAoZGF0YVtrZXldICE9PSB1bmRlZmluZWQpIDogaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGhhc2ggYGtleWAgdG8gYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgc2V0XG4gICAgICogQG1lbWJlck9mIEhhc2hcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaGFzaCBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoU2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgICAgIHRoaXMuc2l6ZSArPSB0aGlzLmhhcyhrZXkpID8gMCA6IDE7XG4gICAgICBkYXRhW2tleV0gPSAobmF0aXZlQ3JlYXRlICYmIHZhbHVlID09PSB1bmRlZmluZWQpID8gSEFTSF9VTkRFRklORUQgOiB2YWx1ZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEFkZCBtZXRob2RzIHRvIGBIYXNoYC5cbiAgICBIYXNoLnByb3RvdHlwZS5jbGVhciA9IGhhc2hDbGVhcjtcbiAgICBIYXNoLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBoYXNoRGVsZXRlO1xuICAgIEhhc2gucHJvdG90eXBlLmdldCA9IGhhc2hHZXQ7XG4gICAgSGFzaC5wcm90b3R5cGUuaGFzID0gaGFzaEhhcztcbiAgICBIYXNoLnByb3RvdHlwZS5zZXQgPSBoYXNoU2V0O1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBsaXN0IGNhY2hlIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gTGlzdENhY2hlKGVudHJpZXMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbGlzdCBjYWNoZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgY2xlYXJcbiAgICAgKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlQ2xlYXIoKSB7XG4gICAgICB0aGlzLl9fZGF0YV9fID0gW107XG4gICAgICB0aGlzLnNpemUgPSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBkZWxldGVcbiAgICAgKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxpc3RDYWNoZURlbGV0ZShrZXkpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciBsYXN0SW5kZXggPSBkYXRhLmxlbmd0aCAtIDE7XG4gICAgICBpZiAoaW5kZXggPT0gbGFzdEluZGV4KSB7XG4gICAgICAgIGRhdGEucG9wKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzcGxpY2UuY2FsbChkYXRhLCBpbmRleCwgMSk7XG4gICAgICB9XG4gICAgICAtLXRoaXMuc2l6ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBnZXRcbiAgICAgKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxpc3RDYWNoZUdldChrZXkpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gICAgICByZXR1cm4gaW5kZXggPCAwID8gdW5kZWZpbmVkIDogZGF0YVtpbmRleF1bMV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGEgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBoYXNcbiAgICAgKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxpc3RDYWNoZUhhcyhrZXkpIHtcbiAgICAgIHJldHVybiBhc3NvY0luZGV4T2YodGhpcy5fX2RhdGFfXywga2V5KSA+IC0xO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGxpc3QgY2FjaGUgYGtleWAgdG8gYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgc2V0XG4gICAgICogQG1lbWJlck9mIExpc3RDYWNoZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBsaXN0IGNhY2hlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxpc3RDYWNoZVNldChrZXksIHZhbHVlKSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICAgICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICArK3RoaXMuc2l6ZTtcbiAgICAgICAgZGF0YS5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRhW2luZGV4XVsxXSA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYExpc3RDYWNoZWAuXG4gICAgTGlzdENhY2hlLnByb3RvdHlwZS5jbGVhciA9IGxpc3RDYWNoZUNsZWFyO1xuICAgIExpc3RDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbGlzdENhY2hlRGVsZXRlO1xuICAgIExpc3RDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbGlzdENhY2hlR2V0O1xuICAgIExpc3RDYWNoZS5wcm90b3R5cGUuaGFzID0gbGlzdENhY2hlSGFzO1xuICAgIExpc3RDYWNoZS5wcm90b3R5cGUuc2V0ID0gbGlzdENhY2hlU2V0O1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG1hcCBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBNYXBDYWNoZShlbnRyaWVzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgICAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIG1hcC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgY2xlYXJcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBDYWNoZUNsZWFyKCkge1xuICAgICAgdGhpcy5zaXplID0gMDtcbiAgICAgIHRoaXMuX19kYXRhX18gPSB7XG4gICAgICAgICdoYXNoJzogbmV3IEhhc2gsXG4gICAgICAgICdtYXAnOiBuZXcgKE1hcCB8fCBMaXN0Q2FjaGUpLFxuICAgICAgICAnc3RyaW5nJzogbmV3IEhhc2hcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIG1hcC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZGVsZXRlXG4gICAgICogQG1lbWJlck9mIE1hcENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcENhY2hlRGVsZXRlKGtleSkge1xuICAgICAgdmFyIHJlc3VsdCA9IGdldE1hcERhdGEodGhpcywga2V5KVsnZGVsZXRlJ10oa2V5KTtcbiAgICAgIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbWFwIHZhbHVlIGZvciBga2V5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZ2V0XG4gICAgICogQG1lbWJlck9mIE1hcENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcENhY2hlR2V0KGtleSkge1xuICAgICAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5nZXQoa2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYSBtYXAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgaGFzXG4gICAgICogQG1lbWJlck9mIE1hcENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcENhY2hlSGFzKGtleSkge1xuICAgICAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5oYXMoa2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBtYXAgYGtleWAgdG8gYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgc2V0XG4gICAgICogQG1lbWJlck9mIE1hcENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG1hcCBjYWNoZSBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBDYWNoZVNldChrZXksIHZhbHVlKSB7XG4gICAgICB2YXIgZGF0YSA9IGdldE1hcERhdGEodGhpcywga2V5KSxcbiAgICAgICAgICBzaXplID0gZGF0YS5zaXplO1xuXG4gICAgICBkYXRhLnNldChrZXksIHZhbHVlKTtcbiAgICAgIHRoaXMuc2l6ZSArPSBkYXRhLnNpemUgPT0gc2l6ZSA/IDAgOiAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYE1hcENhY2hlYC5cbiAgICBNYXBDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBtYXBDYWNoZUNsZWFyO1xuICAgIE1hcENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBtYXBDYWNoZURlbGV0ZTtcbiAgICBNYXBDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbWFwQ2FjaGVHZXQ7XG4gICAgTWFwQ2FjaGUucHJvdG90eXBlLmhhcyA9IG1hcENhY2hlSGFzO1xuICAgIE1hcENhY2hlLnByb3RvdHlwZS5zZXQgPSBtYXBDYWNoZVNldDtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBjYWNoZSBvYmplY3QgdG8gc3RvcmUgdW5pcXVlIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBjYWNoZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBTZXRDYWNoZSh2YWx1ZXMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHZhbHVlcyA9PSBudWxsID8gMCA6IHZhbHVlcy5sZW5ndGg7XG5cbiAgICAgIHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGU7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB0aGlzLmFkZCh2YWx1ZXNbaW5kZXhdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGB2YWx1ZWAgdG8gdGhlIGFycmF5IGNhY2hlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBhZGRcbiAgICAgKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAgICAgKiBAYWxpYXMgcHVzaFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNhY2hlLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNhY2hlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldENhY2hlQWRkKHZhbHVlKSB7XG4gICAgICB0aGlzLl9fZGF0YV9fLnNldCh2YWx1ZSwgSEFTSF9VTkRFRklORUQpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgaW4gdGhlIGFycmF5IGNhY2hlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBoYXNcbiAgICAgKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXRDYWNoZUhhcyh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgU2V0Q2FjaGVgLlxuICAgIFNldENhY2hlLnByb3RvdHlwZS5hZGQgPSBTZXRDYWNoZS5wcm90b3R5cGUucHVzaCA9IHNldENhY2hlQWRkO1xuICAgIFNldENhY2hlLnByb3RvdHlwZS5oYXMgPSBzZXRDYWNoZUhhcztcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzdGFjayBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBTdGFjayhlbnRyaWVzKSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlKGVudHJpZXMpO1xuICAgICAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIHN0YWNrLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBjbGVhclxuICAgICAqIEBtZW1iZXJPZiBTdGFja1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrQ2xlYXIoKSB7XG4gICAgICB0aGlzLl9fZGF0YV9fID0gbmV3IExpc3RDYWNoZTtcbiAgICAgIHRoaXMuc2l6ZSA9IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIHN0YWNrLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBkZWxldGVcbiAgICAgKiBAbWVtYmVyT2YgU3RhY2tcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhY2tEZWxldGUoa2V5KSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICAgICAgcmVzdWx0ID0gZGF0YVsnZGVsZXRlJ10oa2V5KTtcblxuICAgICAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBzdGFjayB2YWx1ZSBmb3IgYGtleWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGdldFxuICAgICAqIEBtZW1iZXJPZiBTdGFja1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdGFja0dldChrZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9fZGF0YV9fLmdldChrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBhIHN0YWNrIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGhhc1xuICAgICAqIEBtZW1iZXJPZiBTdGFja1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdGFja0hhcyhrZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHN0YWNrIGBrZXlgIHRvIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIHNldFxuICAgICAqIEBtZW1iZXJPZiBTdGFja1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBzdGFjayBjYWNoZSBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdGFja1NldChrZXksIHZhbHVlKSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gICAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIExpc3RDYWNoZSkge1xuICAgICAgICB2YXIgcGFpcnMgPSBkYXRhLl9fZGF0YV9fO1xuICAgICAgICBpZiAoIU1hcCB8fCAocGFpcnMubGVuZ3RoIDwgTEFSR0VfQVJSQVlfU0laRSAtIDEpKSB7XG4gICAgICAgICAgcGFpcnMucHVzaChba2V5LCB2YWx1ZV0pO1xuICAgICAgICAgIHRoaXMuc2l6ZSA9ICsrZGF0YS5zaXplO1xuICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIGRhdGEgPSB0aGlzLl9fZGF0YV9fID0gbmV3IE1hcENhY2hlKHBhaXJzKTtcbiAgICAgIH1cbiAgICAgIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYFN0YWNrYC5cbiAgICBTdGFjay5wcm90b3R5cGUuY2xlYXIgPSBzdGFja0NsZWFyO1xuICAgIFN0YWNrLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBzdGFja0RlbGV0ZTtcbiAgICBTdGFjay5wcm90b3R5cGUuZ2V0ID0gc3RhY2tHZXQ7XG4gICAgU3RhY2sucHJvdG90eXBlLmhhcyA9IHN0YWNrSGFzO1xuICAgIFN0YWNrLnByb3RvdHlwZS5zZXQgPSBzdGFja1NldDtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgdGhlIGFycmF5LWxpa2UgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBpbmhlcml0ZWQgU3BlY2lmeSByZXR1cm5pbmcgaW5oZXJpdGVkIHByb3BlcnR5IG5hbWVzLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXJyYXlMaWtlS2V5cyh2YWx1ZSwgaW5oZXJpdGVkKSB7XG4gICAgICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKSxcbiAgICAgICAgICBpc0FyZyA9ICFpc0FyciAmJiBpc0FyZ3VtZW50cyh2YWx1ZSksXG4gICAgICAgICAgaXNCdWZmID0gIWlzQXJyICYmICFpc0FyZyAmJiBpc0J1ZmZlcih2YWx1ZSksXG4gICAgICAgICAgaXNUeXBlID0gIWlzQXJyICYmICFpc0FyZyAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheSh2YWx1ZSksXG4gICAgICAgICAgc2tpcEluZGV4ZXMgPSBpc0FyciB8fCBpc0FyZyB8fCBpc0J1ZmYgfHwgaXNUeXBlLFxuICAgICAgICAgIHJlc3VsdCA9IHNraXBJbmRleGVzID8gYmFzZVRpbWVzKHZhbHVlLmxlbmd0aCwgU3RyaW5nKSA6IFtdLFxuICAgICAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgICAgICBpZiAoKGluaGVyaXRlZCB8fCBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpKSAmJlxuICAgICAgICAgICAgIShza2lwSW5kZXhlcyAmJiAoXG4gICAgICAgICAgICAgICAvLyBTYWZhcmkgOSBoYXMgZW51bWVyYWJsZSBgYXJndW1lbnRzLmxlbmd0aGAgaW4gc3RyaWN0IG1vZGUuXG4gICAgICAgICAgICAgICBrZXkgPT0gJ2xlbmd0aCcgfHxcbiAgICAgICAgICAgICAgIC8vIE5vZGUuanMgMC4xMCBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiBidWZmZXJzLlxuICAgICAgICAgICAgICAgKGlzQnVmZiAmJiAoa2V5ID09ICdvZmZzZXQnIHx8IGtleSA9PSAncGFyZW50JykpIHx8XG4gICAgICAgICAgICAgICAvLyBQaGFudG9tSlMgMiBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiB0eXBlZCBhcnJheXMuXG4gICAgICAgICAgICAgICAoaXNUeXBlICYmIChrZXkgPT0gJ2J1ZmZlcicgfHwga2V5ID09ICdieXRlTGVuZ3RoJyB8fCBrZXkgPT0gJ2J5dGVPZmZzZXQnKSkgfHxcbiAgICAgICAgICAgICAgIC8vIFNraXAgaW5kZXggcHJvcGVydGllcy5cbiAgICAgICAgICAgICAgIGlzSW5kZXgoa2V5LCBsZW5ndGgpXG4gICAgICAgICAgICApKSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNhbXBsZWAgZm9yIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNhbXBsZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXJyYXlTYW1wbGUoYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYXJyYXlbYmFzZVJhbmRvbSgwLCBsZW5ndGggLSAxKV0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNhbXBsZVNpemVgIGZvciBhcnJheXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzYW1wbGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byBzYW1wbGUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5kb20gZWxlbWVudHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXJyYXlTYW1wbGVTaXplKGFycmF5LCBuKSB7XG4gICAgICByZXR1cm4gc2h1ZmZsZVNlbGYoY29weUFycmF5KGFycmF5KSwgYmFzZUNsYW1wKG4sIDAsIGFycmF5Lmxlbmd0aCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zaHVmZmxlYCBmb3IgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2h1ZmZsZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzaHVmZmxlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnJheVNodWZmbGUoYXJyYXkpIHtcbiAgICAgIHJldHVybiBzaHVmZmxlU2VsZihjb3B5QXJyYXkoYXJyYXkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGFzc2lnblZhbHVlYCBleGNlcHQgdGhhdCBpdCBkb2Vzbid0IGFzc2lnblxuICAgICAqIGB1bmRlZmluZWRgIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgICAgIGlmICgodmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhZXEob2JqZWN0W2tleV0sIHZhbHVlKSkgfHxcbiAgICAgICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgICAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBc3NpZ25zIGB2YWx1ZWAgdG8gYGtleWAgb2YgYG9iamVjdGAgaWYgdGhlIGV4aXN0aW5nIHZhbHVlIGlzIG5vdCBlcXVpdmFsZW50XG4gICAgICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICAgICAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV07XG4gICAgICBpZiAoIShoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJiBlcShvYmpWYWx1ZSwgdmFsdWUpKSB8fFxuICAgICAgICAgICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpKSB7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGluZGV4IGF0IHdoaWNoIHRoZSBga2V5YCBpcyBmb3VuZCBpbiBgYXJyYXlgIG9mIGtleS12YWx1ZSBwYWlycy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXNzb2NJbmRleE9mKGFycmF5LCBrZXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgaWYgKGVxKGFycmF5W2xlbmd0aF1bMF0sIGtleSkpIHtcbiAgICAgICAgICByZXR1cm4gbGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWdncmVnYXRlcyBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAgb24gYGFjY3VtdWxhdG9yYCB3aXRoIGtleXMgdHJhbnNmb3JtZWRcbiAgICAgKiBieSBgaXRlcmF0ZWVgIGFuZCB2YWx1ZXMgc2V0IGJ5IGBzZXR0ZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc2V0dGVyIFRoZSBmdW5jdGlvbiB0byBzZXQgYGFjY3VtdWxhdG9yYCB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSBrZXlzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCBhZ2dyZWdhdGVkIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGFjY3VtdWxhdG9yYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQWdncmVnYXRvcihjb2xsZWN0aW9uLCBzZXR0ZXIsIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICAgICAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGtleSwgY29sbGVjdGlvbikge1xuICAgICAgICBzZXR0ZXIoYWNjdW11bGF0b3IsIHZhbHVlLCBpdGVyYXRlZSh2YWx1ZSksIGNvbGxlY3Rpb24pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uYXNzaWduYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXNcbiAgICAgKiBvciBgY3VzdG9taXplcmAgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBc3NpZ24ob2JqZWN0LCBzb3VyY2UpIHtcbiAgICAgIHJldHVybiBvYmplY3QgJiYgY29weU9iamVjdChzb3VyY2UsIGtleXMoc291cmNlKSwgb2JqZWN0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hc3NpZ25JbmAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzXG4gICAgICogb3IgYGN1c3RvbWl6ZXJgIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQXNzaWduSW4ob2JqZWN0LCBzb3VyY2UpIHtcbiAgICAgIHJldHVybiBvYmplY3QgJiYgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBhc3NpZ25WYWx1ZWAgYW5kIGBhc3NpZ25NZXJnZVZhbHVlYCB3aXRob3V0XG4gICAgICogdmFsdWUgY2hlY2tzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gICAgICBpZiAoa2V5ID09ICdfX3Byb3RvX18nICYmIGRlZmluZVByb3BlcnR5KSB7XG4gICAgICAgIGRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5LCB7XG4gICAgICAgICAgJ2NvbmZpZ3VyYWJsZSc6IHRydWUsXG4gICAgICAgICAgJ2VudW1lcmFibGUnOiB0cnVlLFxuICAgICAgICAgICd2YWx1ZSc6IHZhbHVlLFxuICAgICAgICAgICd3cml0YWJsZSc6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmF0YCB3aXRob3V0IHN1cHBvcnQgZm9yIGluZGl2aWR1YWwgcGF0aHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aHMgVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBwaWNrZWQgZWxlbWVudHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUF0KG9iamVjdCwgcGF0aHMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHBhdGhzLmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpLFxuICAgICAgICAgIHNraXAgPSBvYmplY3QgPT0gbnVsbDtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0W2luZGV4XSA9IHNraXAgPyB1bmRlZmluZWQgOiBnZXQob2JqZWN0LCBwYXRoc1tpbmRleF0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jbGFtcGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gY2xhbXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsb3dlcl0gVGhlIGxvd2VyIGJvdW5kLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB1cHBlciBUaGUgdXBwZXIgYm91bmQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY2xhbXBlZCBudW1iZXIuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUNsYW1wKG51bWJlciwgbG93ZXIsIHVwcGVyKSB7XG4gICAgICBpZiAobnVtYmVyID09PSBudW1iZXIpIHtcbiAgICAgICAgaWYgKHVwcGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBudW1iZXIgPSBudW1iZXIgPD0gdXBwZXIgPyBudW1iZXIgOiB1cHBlcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG93ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG51bWJlciA9IG51bWJlciA+PSBsb3dlciA/IG51bWJlciA6IGxvd2VyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVtYmVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNsb25lYCBhbmQgYF8uY2xvbmVEZWVwYCB3aGljaCB0cmFja3NcbiAgICAgKiB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICAgICAqICAxIC0gRGVlcCBjbG9uZVxuICAgICAqICAyIC0gRmxhdHRlbiBpbmhlcml0ZWQgcHJvcGVydGllc1xuICAgICAqICA0IC0gQ2xvbmUgc3ltYm9sc1xuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNsb25pbmcuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtrZXldIFRoZSBrZXkgb2YgYHZhbHVlYC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIHBhcmVudCBvYmplY3Qgb2YgYHZhbHVlYC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIG9iamVjdHMgYW5kIHRoZWlyIGNsb25lIGNvdW50ZXJwYXJ0cy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VDbG9uZSh2YWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCBvYmplY3QsIHN0YWNrKSB7XG4gICAgICB2YXIgcmVzdWx0LFxuICAgICAgICAgIGlzRGVlcCA9IGJpdG1hc2sgJiBDTE9ORV9ERUVQX0ZMQUcsXG4gICAgICAgICAgaXNGbGF0ID0gYml0bWFzayAmIENMT05FX0ZMQVRfRkxBRyxcbiAgICAgICAgICBpc0Z1bGwgPSBiaXRtYXNrICYgQ0xPTkVfU1lNQk9MU19GTEFHO1xuXG4gICAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgICByZXN1bHQgPSBvYmplY3QgPyBjdXN0b21pemVyKHZhbHVlLCBrZXksIG9iamVjdCwgc3RhY2spIDogY3VzdG9taXplcih2YWx1ZSk7XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHZhciBpc0FyciA9IGlzQXJyYXkodmFsdWUpO1xuICAgICAgaWYgKGlzQXJyKSB7XG4gICAgICAgIHJlc3VsdCA9IGluaXRDbG9uZUFycmF5KHZhbHVlKTtcbiAgICAgICAgaWYgKCFpc0RlZXApIHtcbiAgICAgICAgICByZXR1cm4gY29weUFycmF5KHZhbHVlLCByZXN1bHQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKSxcbiAgICAgICAgICAgIGlzRnVuYyA9IHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWc7XG5cbiAgICAgICAgaWYgKGlzQnVmZmVyKHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBjbG9uZUJ1ZmZlcih2YWx1ZSwgaXNEZWVwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGFnID09IG9iamVjdFRhZyB8fCB0YWcgPT0gYXJnc1RhZyB8fCAoaXNGdW5jICYmICFvYmplY3QpKSB7XG4gICAgICAgICAgcmVzdWx0ID0gKGlzRmxhdCB8fCBpc0Z1bmMpID8ge30gOiBpbml0Q2xvbmVPYmplY3QodmFsdWUpO1xuICAgICAgICAgIGlmICghaXNEZWVwKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNGbGF0XG4gICAgICAgICAgICAgID8gY29weVN5bWJvbHNJbih2YWx1ZSwgYmFzZUFzc2lnbkluKHJlc3VsdCwgdmFsdWUpKVxuICAgICAgICAgICAgICA6IGNvcHlTeW1ib2xzKHZhbHVlLCBiYXNlQXNzaWduKHJlc3VsdCwgdmFsdWUpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCFjbG9uZWFibGVUYWdzW3RhZ10pIHtcbiAgICAgICAgICAgIHJldHVybiBvYmplY3QgPyB2YWx1ZSA6IHt9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQgPSBpbml0Q2xvbmVCeVRhZyh2YWx1ZSwgdGFnLCBpc0RlZXApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBDaGVjayBmb3IgY2lyY3VsYXIgcmVmZXJlbmNlcyBhbmQgcmV0dXJuIGl0cyBjb3JyZXNwb25kaW5nIGNsb25lLlxuICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KHZhbHVlKTtcbiAgICAgIGlmIChzdGFja2VkKSB7XG4gICAgICAgIHJldHVybiBzdGFja2VkO1xuICAgICAgfVxuICAgICAgc3RhY2suc2V0KHZhbHVlLCByZXN1bHQpO1xuXG4gICAgICBpZiAoaXNTZXQodmFsdWUpKSB7XG4gICAgICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24oc3ViVmFsdWUpIHtcbiAgICAgICAgICByZXN1bHQuYWRkKGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3ViVmFsdWUsIHZhbHVlLCBzdGFjaykpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoaXNNYXAodmFsdWUpKSB7XG4gICAgICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24oc3ViVmFsdWUsIGtleSkge1xuICAgICAgICAgIHJlc3VsdC5zZXQoa2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB2YXIga2V5c0Z1bmMgPSBpc0Z1bGxcbiAgICAgICAgPyAoaXNGbGF0ID8gZ2V0QWxsS2V5c0luIDogZ2V0QWxsS2V5cylcbiAgICAgICAgOiAoaXNGbGF0ID8ga2V5c0luIDoga2V5cyk7XG5cbiAgICAgIHZhciBwcm9wcyA9IGlzQXJyID8gdW5kZWZpbmVkIDoga2V5c0Z1bmModmFsdWUpO1xuICAgICAgYXJyYXlFYWNoKHByb3BzIHx8IHZhbHVlLCBmdW5jdGlvbihzdWJWYWx1ZSwga2V5KSB7XG4gICAgICAgIGlmIChwcm9wcykge1xuICAgICAgICAgIGtleSA9IHN1YlZhbHVlO1xuICAgICAgICAgIHN1YlZhbHVlID0gdmFsdWVba2V5XTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWN1cnNpdmVseSBwb3B1bGF0ZSBjbG9uZSAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBhc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIHZhbHVlLCBzdGFjaykpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNvbmZvcm1zYCB3aGljaCBkb2Vzbid0IGNsb25lIGBzb3VyY2VgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgcHJlZGljYXRlcyB0byBjb25mb3JtIHRvLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUNvbmZvcm1zKHNvdXJjZSkge1xuICAgICAgdmFyIHByb3BzID0ga2V5cyhzb3VyY2UpO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICByZXR1cm4gYmFzZUNvbmZvcm1zVG8ob2JqZWN0LCBzb3VyY2UsIHByb3BzKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY29uZm9ybXNUb2Agd2hpY2ggYWNjZXB0cyBgcHJvcHNgIHRvIGNoZWNrLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgcHJlZGljYXRlcyB0byBjb25mb3JtIHRvLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBjb25mb3JtcywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VDb25mb3Jtc1RvKG9iamVjdCwgc291cmNlLCBwcm9wcykge1xuICAgICAgdmFyIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcbiAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gIWxlbmd0aDtcbiAgICAgIH1cbiAgICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIHZhciBrZXkgPSBwcm9wc1tsZW5ndGhdLFxuICAgICAgICAgICAgcHJlZGljYXRlID0gc291cmNlW2tleV0sXG4gICAgICAgICAgICB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgICAgIGlmICgodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSB8fCAhcHJlZGljYXRlKHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZGVsYXlgIGFuZCBgXy5kZWZlcmAgd2hpY2ggYWNjZXB0cyBgYXJnc2BcbiAgICAgKiB0byBwcm92aWRlIHRvIGBmdW5jYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVsYXkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHdhaXQgVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkgaW52b2NhdGlvbi5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gcHJvdmlkZSB0byBgZnVuY2AuXG4gICAgICogQHJldHVybnMge251bWJlcnxPYmplY3R9IFJldHVybnMgdGhlIHRpbWVyIGlkIG9yIHRpbWVvdXQgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VEZWxheShmdW5jLCB3YWl0LCBhcmdzKSB7XG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpIHsgZnVuYy5hcHBseSh1bmRlZmluZWQsIGFyZ3MpOyB9LCB3YWl0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8uZGlmZmVyZW5jZWAgd2l0aG91dCBzdXBwb3J0XG4gICAgICogZm9yIGV4Y2x1ZGluZyBtdWx0aXBsZSBhcnJheXMgb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRGlmZmVyZW5jZShhcnJheSwgdmFsdWVzLCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzLFxuICAgICAgICAgIGlzQ29tbW9uID0gdHJ1ZSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0gW10sXG4gICAgICAgICAgdmFsdWVzTGVuZ3RoID0gdmFsdWVzLmxlbmd0aDtcblxuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVyYXRlZSkge1xuICAgICAgICB2YWx1ZXMgPSBhcnJheU1hcCh2YWx1ZXMsIGJhc2VVbmFyeShpdGVyYXRlZSkpO1xuICAgICAgfVxuICAgICAgaWYgKGNvbXBhcmF0b3IpIHtcbiAgICAgICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzV2l0aDtcbiAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHZhbHVlcy5sZW5ndGggPj0gTEFSR0VfQVJSQVlfU0laRSkge1xuICAgICAgICBpbmNsdWRlcyA9IGNhY2hlSGFzO1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICB2YWx1ZXMgPSBuZXcgU2V0Q2FjaGUodmFsdWVzKTtcbiAgICAgIH1cbiAgICAgIG91dGVyOlxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA9PSBudWxsID8gdmFsdWUgOiBpdGVyYXRlZSh2YWx1ZSk7XG5cbiAgICAgICAgdmFsdWUgPSAoY29tcGFyYXRvciB8fCB2YWx1ZSAhPT0gMCkgPyB2YWx1ZSA6IDA7XG4gICAgICAgIGlmIChpc0NvbW1vbiAmJiBjb21wdXRlZCA9PT0gY29tcHV0ZWQpIHtcbiAgICAgICAgICB2YXIgdmFsdWVzSW5kZXggPSB2YWx1ZXNMZW5ndGg7XG4gICAgICAgICAgd2hpbGUgKHZhbHVlc0luZGV4LS0pIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZXNbdmFsdWVzSW5kZXhdID09PSBjb21wdXRlZCkge1xuICAgICAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFpbmNsdWRlcyh2YWx1ZXMsIGNvbXB1dGVkLCBjb21wYXJhdG9yKSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JFYWNoYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICAgICAqL1xuICAgIHZhciBiYXNlRWFjaCA9IGNyZWF0ZUJhc2VFYWNoKGJhc2VGb3JPd24pO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yRWFjaFJpZ2h0YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICAgICAqL1xuICAgIHZhciBiYXNlRWFjaFJpZ2h0ID0gY3JlYXRlQmFzZUVhY2goYmFzZUZvck93blJpZ2h0LCB0cnVlKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmV2ZXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYWxsIGVsZW1lbnRzIHBhc3MgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAgICAgKiAgZWxzZSBgZmFsc2VgXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUV2ZXJ5KGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IHRydWU7XG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgcmVzdWx0ID0gISFwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8ubWF4YCBhbmQgYF8ubWluYCB3aGljaCBhY2NlcHRzIGFcbiAgICAgKiBgY29tcGFyYXRvcmAgdG8gZGV0ZXJtaW5lIHRoZSBleHRyZW11bSB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgdXNlZCB0byBjb21wYXJlIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZXh0cmVtdW0gdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUV4dHJlbXVtKGFycmF5LCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgICBjdXJyZW50ID0gaXRlcmF0ZWUodmFsdWUpO1xuXG4gICAgICAgIGlmIChjdXJyZW50ICE9IG51bGwgJiYgKGNvbXB1dGVkID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgPyAoY3VycmVudCA9PT0gY3VycmVudCAmJiAhaXNTeW1ib2woY3VycmVudCkpXG4gICAgICAgICAgICAgIDogY29tcGFyYXRvcihjdXJyZW50LCBjb21wdXRlZClcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICB2YXIgY29tcHV0ZWQgPSBjdXJyZW50LFxuICAgICAgICAgICAgICByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maWxsYCB3aXRob3V0IGFuIGl0ZXJhdGVlIGNhbGwgZ3VhcmQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmaWxsLlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGZpbGwgYGFycmF5YCB3aXRoLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZW5kPWFycmF5Lmxlbmd0aF0gVGhlIGVuZCBwb3NpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRmlsbChhcnJheSwgdmFsdWUsIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICAgIHN0YXJ0ID0gdG9JbnRlZ2VyKHN0YXJ0KTtcbiAgICAgIGlmIChzdGFydCA8IDApIHtcbiAgICAgICAgc3RhcnQgPSAtc3RhcnQgPiBsZW5ndGggPyAwIDogKGxlbmd0aCArIHN0YXJ0KTtcbiAgICAgIH1cbiAgICAgIGVuZCA9IChlbmQgPT09IHVuZGVmaW5lZCB8fCBlbmQgPiBsZW5ndGgpID8gbGVuZ3RoIDogdG9JbnRlZ2VyKGVuZCk7XG4gICAgICBpZiAoZW5kIDwgMCkge1xuICAgICAgICBlbmQgKz0gbGVuZ3RoO1xuICAgICAgfVxuICAgICAgZW5kID0gc3RhcnQgPiBlbmQgPyAwIDogdG9MZW5ndGgoZW5kKTtcbiAgICAgIHdoaWxlIChzdGFydCA8IGVuZCkge1xuICAgICAgICBhcnJheVtzdGFydCsrXSA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbHRlcmAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUZpbHRlcihjb2xsZWN0aW9uLCBwcmVkaWNhdGUpIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikge1xuICAgICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikpIHtcbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mbGF0dGVuYCB3aXRoIHN1cHBvcnQgZm9yIHJlc3RyaWN0aW5nIGZsYXR0ZW5pbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aCBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbcHJlZGljYXRlPWlzRmxhdHRlbmFibGVdIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNTdHJpY3RdIFJlc3RyaWN0IHRvIHZhbHVlcyB0aGF0IHBhc3MgYHByZWRpY2F0ZWAgY2hlY2tzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtyZXN1bHQ9W11dIFRoZSBpbml0aWFsIHJlc3VsdCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUZsYXR0ZW4oYXJyYXksIGRlcHRoLCBwcmVkaWNhdGUsIGlzU3RyaWN0LCByZXN1bHQpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgICAgcHJlZGljYXRlIHx8IChwcmVkaWNhdGUgPSBpc0ZsYXR0ZW5hYmxlKTtcbiAgICAgIHJlc3VsdCB8fCAocmVzdWx0ID0gW10pO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgICAgIGlmIChkZXB0aCA+IDAgJiYgcHJlZGljYXRlKHZhbHVlKSkge1xuICAgICAgICAgIGlmIChkZXB0aCA+IDEpIHtcbiAgICAgICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGZsYXR0ZW4gYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgICAgICBiYXNlRmxhdHRlbih2YWx1ZSwgZGVwdGggLSAxLCBwcmVkaWNhdGUsIGlzU3RyaWN0LCByZXN1bHQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhcnJheVB1c2gocmVzdWx0LCB2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFpc1N0cmljdCkge1xuICAgICAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBiYXNlRm9yT3duYCB3aGljaCBpdGVyYXRlcyBvdmVyIGBvYmplY3RgXG4gICAgICogcHJvcGVydGllcyByZXR1cm5lZCBieSBga2V5c0Z1bmNgIGFuZCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggcHJvcGVydHkuXG4gICAgICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBgb2JqZWN0YC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIHZhciBiYXNlRm9yID0gY3JlYXRlQmFzZUZvcigpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBiYXNlRm9yYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIHByb3BlcnRpZXNcbiAgICAgKiBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgdmFyIGJhc2VGb3JSaWdodCA9IGNyZWF0ZUJhc2VGb3IodHJ1ZSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JPd25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUZvck93bihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICYmIGJhc2VGb3Iob2JqZWN0LCBpdGVyYXRlZSwga2V5cyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yT3duUmlnaHRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUZvck93blJpZ2h0KG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgJiYgYmFzZUZvclJpZ2h0KG9iamVjdCwgaXRlcmF0ZWUsIGtleXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZ1bmN0aW9uc2Agd2hpY2ggY3JlYXRlcyBhbiBhcnJheSBvZlxuICAgICAqIGBvYmplY3RgIGZ1bmN0aW9uIHByb3BlcnR5IG5hbWVzIGZpbHRlcmVkIGZyb20gYHByb3BzYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGZpbHRlci5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGZ1bmN0aW9uIG5hbWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VGdW5jdGlvbnMob2JqZWN0LCBwcm9wcykge1xuICAgICAgcmV0dXJuIGFycmF5RmlsdGVyKHByb3BzLCBmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24ob2JqZWN0W2tleV0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZ2V0YCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZmF1bHQgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUdldChvYmplY3QsIHBhdGgpIHtcbiAgICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gICAgICB2YXIgaW5kZXggPSAwLFxuICAgICAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAob2JqZWN0ICE9IG51bGwgJiYgaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgb2JqZWN0ID0gb2JqZWN0W3RvS2V5KHBhdGhbaW5kZXgrK10pXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAoaW5kZXggJiYgaW5kZXggPT0gbGVuZ3RoKSA/IG9iamVjdCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0QWxsS2V5c2AgYW5kIGBnZXRBbGxLZXlzSW5gIHdoaWNoIHVzZXNcbiAgICAgKiBga2V5c0Z1bmNgIGFuZCBgc3ltYm9sc0Z1bmNgIHRvIGdldCB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmRcbiAgICAgKiBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBgb2JqZWN0YC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzeW1ib2xzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzRnVuYywgc3ltYm9sc0Z1bmMpIHtcbiAgICAgIHZhciByZXN1bHQgPSBrZXlzRnVuYyhvYmplY3QpO1xuICAgICAgcmV0dXJuIGlzQXJyYXkob2JqZWN0KSA/IHJlc3VsdCA6IGFycmF5UHVzaChyZXN1bHQsIHN5bWJvbHNGdW5jKG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRUYWdgIHdpdGhvdXQgZmFsbGJhY2tzIGZvciBidWdneSBlbnZpcm9ubWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUdldFRhZyh2YWx1ZSkge1xuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWRUYWcgOiBudWxsVGFnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChzeW1Ub1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1RhZyBpbiBPYmplY3QodmFsdWUpKVxuICAgICAgICA/IGdldFJhd1RhZyh2YWx1ZSlcbiAgICAgICAgOiBvYmplY3RUb1N0cmluZyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZ3RgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBgb3RoZXJgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUd0KHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIHZhbHVlID4gb3RoZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaGFzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBrZXkgVGhlIGtleSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUhhcyhvYmplY3QsIGtleSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmhhc0luYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBrZXkgVGhlIGtleSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUhhc0luKG9iamVjdCwga2V5KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYga2V5IGluIE9iamVjdChvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmluUmFuZ2VgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciBUaGUgbnVtYmVyIHRvIGNoZWNrLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBudW1iZXJgIGlzIGluIHRoZSByYW5nZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJblJhbmdlKG51bWJlciwgc3RhcnQsIGVuZCkge1xuICAgICAgcmV0dXJuIG51bWJlciA+PSBuYXRpdmVNaW4oc3RhcnQsIGVuZCkgJiYgbnVtYmVyIDwgbmF0aXZlTWF4KHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5pbnRlcnNlY3Rpb25gLCB3aXRob3V0IHN1cHBvcnRcbiAgICAgKiBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcywgdGhhdCBhY2NlcHRzIGFuIGFycmF5IG9mIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheXMgVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2Ygc2hhcmVkIHZhbHVlcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSW50ZXJzZWN0aW9uKGFycmF5cywgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHZhciBpbmNsdWRlcyA9IGNvbXBhcmF0b3IgPyBhcnJheUluY2x1ZGVzV2l0aCA6IGFycmF5SW5jbHVkZXMsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXlzWzBdLmxlbmd0aCxcbiAgICAgICAgICBvdGhMZW5ndGggPSBhcnJheXMubGVuZ3RoLFxuICAgICAgICAgIG90aEluZGV4ID0gb3RoTGVuZ3RoLFxuICAgICAgICAgIGNhY2hlcyA9IEFycmF5KG90aExlbmd0aCksXG4gICAgICAgICAgbWF4TGVuZ3RoID0gSW5maW5pdHksXG4gICAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICAgIHdoaWxlIChvdGhJbmRleC0tKSB7XG4gICAgICAgIHZhciBhcnJheSA9IGFycmF5c1tvdGhJbmRleF07XG4gICAgICAgIGlmIChvdGhJbmRleCAmJiBpdGVyYXRlZSkge1xuICAgICAgICAgIGFycmF5ID0gYXJyYXlNYXAoYXJyYXksIGJhc2VVbmFyeShpdGVyYXRlZSkpO1xuICAgICAgICB9XG4gICAgICAgIG1heExlbmd0aCA9IG5hdGl2ZU1pbihhcnJheS5sZW5ndGgsIG1heExlbmd0aCk7XG4gICAgICAgIGNhY2hlc1tvdGhJbmRleF0gPSAhY29tcGFyYXRvciAmJiAoaXRlcmF0ZWUgfHwgKGxlbmd0aCA+PSAxMjAgJiYgYXJyYXkubGVuZ3RoID49IDEyMCkpXG4gICAgICAgICAgPyBuZXcgU2V0Q2FjaGUob3RoSW5kZXggJiYgYXJyYXkpXG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBhcnJheSA9IGFycmF5c1swXTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgc2VlbiA9IGNhY2hlc1swXTtcblxuICAgICAgb3V0ZXI6XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCAmJiByZXN1bHQubGVuZ3RoIDwgbWF4TGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPyBpdGVyYXRlZSh2YWx1ZSkgOiB2YWx1ZTtcblxuICAgICAgICB2YWx1ZSA9IChjb21wYXJhdG9yIHx8IHZhbHVlICE9PSAwKSA/IHZhbHVlIDogMDtcbiAgICAgICAgaWYgKCEoc2VlblxuICAgICAgICAgICAgICA/IGNhY2hlSGFzKHNlZW4sIGNvbXB1dGVkKVxuICAgICAgICAgICAgICA6IGluY2x1ZGVzKHJlc3VsdCwgY29tcHV0ZWQsIGNvbXBhcmF0b3IpXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgb3RoSW5kZXggPSBvdGhMZW5ndGg7XG4gICAgICAgICAgd2hpbGUgKC0tb3RoSW5kZXgpIHtcbiAgICAgICAgICAgIHZhciBjYWNoZSA9IGNhY2hlc1tvdGhJbmRleF07XG4gICAgICAgICAgICBpZiAoIShjYWNoZVxuICAgICAgICAgICAgICAgICAgPyBjYWNoZUhhcyhjYWNoZSwgY29tcHV0ZWQpXG4gICAgICAgICAgICAgICAgICA6IGluY2x1ZGVzKGFycmF5c1tvdGhJbmRleF0sIGNvbXB1dGVkLCBjb21wYXJhdG9yKSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzZWVuKSB7XG4gICAgICAgICAgICBzZWVuLnB1c2goY29tcHV0ZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW52ZXJ0YCBhbmQgYF8uaW52ZXJ0QnlgIHdoaWNoIGludmVydHNcbiAgICAgKiBgb2JqZWN0YCB3aXRoIHZhbHVlcyB0cmFuc2Zvcm1lZCBieSBgaXRlcmF0ZWVgIGFuZCBzZXQgYnkgYHNldHRlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc2V0dGVyIFRoZSBmdW5jdGlvbiB0byBzZXQgYGFjY3VtdWxhdG9yYCB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGFjY3VtdWxhdG9yIFRoZSBpbml0aWFsIGludmVydGVkIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGFjY3VtdWxhdG9yYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSW52ZXJ0ZXIob2JqZWN0LCBzZXR0ZXIsIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICAgICAgYmFzZUZvck93bihvYmplY3QsIGZ1bmN0aW9uKHZhbHVlLCBrZXksIG9iamVjdCkge1xuICAgICAgICBzZXR0ZXIoYWNjdW11bGF0b3IsIGl0ZXJhdGVlKHZhbHVlKSwga2V5LCBvYmplY3QpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW52b2tlYCB3aXRob3V0IHN1cHBvcnQgZm9yIGluZGl2aWR1YWxcbiAgICAgKiBtZXRob2QgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIG1ldGhvZCB0byBpbnZva2UuXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIGludm9rZSB0aGUgbWV0aG9kIHdpdGguXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgaW52b2tlZCBtZXRob2QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUludm9rZShvYmplY3QsIHBhdGgsIGFyZ3MpIHtcbiAgICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuICAgICAgb2JqZWN0ID0gcGFyZW50KG9iamVjdCwgcGF0aCk7XG4gICAgICB2YXIgZnVuYyA9IG9iamVjdCA9PSBudWxsID8gb2JqZWN0IDogb2JqZWN0W3RvS2V5KGxhc3QocGF0aCkpXTtcbiAgICAgIHJldHVybiBmdW5jID09IG51bGwgPyB1bmRlZmluZWQgOiBhcHBseShmdW5jLCBvYmplY3QsIGFyZ3MpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzQXJndW1lbnRzYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc0FyZ3VtZW50cyh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYXJnc1RhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0FycmF5QnVmZmVyYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXkgYnVmZmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzQXJyYXlCdWZmZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGFycmF5QnVmZmVyVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzRGF0ZWAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZGF0ZSBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNEYXRlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBkYXRlVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzRXF1YWxgIHdoaWNoIHN1cHBvcnRzIHBhcnRpYWwgY29tcGFyaXNvbnNcbiAgICAgKiBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICAgICAqICAxIC0gVW5vcmRlcmVkIGNvbXBhcmlzb25cbiAgICAgKiAgMiAtIFBhcnRpYWwgY29tcGFyaXNvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgYHZhbHVlYCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzRXF1YWwodmFsdWUsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykge1xuICAgICAgaWYgKHZhbHVlID09PSBvdGhlcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IG90aGVyID09IG51bGwgfHwgKCFpc09iamVjdExpa2UodmFsdWUpICYmICFpc09iamVjdExpa2Uob3RoZXIpKSkge1xuICAgICAgICByZXR1cm4gdmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlSXNFcXVhbERlZXAodmFsdWUsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBiYXNlSXNFcXVhbCwgc3RhY2spO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxgIGZvciBhcnJheXMgYW5kIG9iamVjdHMgd2hpY2ggcGVyZm9ybXNcbiAgICAgKiBkZWVwIGNvbXBhcmlzb25zIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMgZW5hYmxpbmcgb2JqZWN0cyB3aXRoIGNpcmN1bGFyXG4gICAgICogcmVmZXJlbmNlcyB0byBiZSBjb21wYXJlZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNFcXVhbERlZXAob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICAgICAgdmFyIG9iaklzQXJyID0gaXNBcnJheShvYmplY3QpLFxuICAgICAgICAgIG90aElzQXJyID0gaXNBcnJheShvdGhlciksXG4gICAgICAgICAgb2JqVGFnID0gb2JqSXNBcnIgPyBhcnJheVRhZyA6IGdldFRhZyhvYmplY3QpLFxuICAgICAgICAgIG90aFRhZyA9IG90aElzQXJyID8gYXJyYXlUYWcgOiBnZXRUYWcob3RoZXIpO1xuXG4gICAgICBvYmpUYWcgPSBvYmpUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG9ialRhZztcbiAgICAgIG90aFRhZyA9IG90aFRhZyA9PSBhcmdzVGFnID8gb2JqZWN0VGFnIDogb3RoVGFnO1xuXG4gICAgICB2YXIgb2JqSXNPYmogPSBvYmpUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgICAgIG90aElzT2JqID0gb3RoVGFnID09IG9iamVjdFRhZyxcbiAgICAgICAgICBpc1NhbWVUYWcgPSBvYmpUYWcgPT0gb3RoVGFnO1xuXG4gICAgICBpZiAoaXNTYW1lVGFnICYmIGlzQnVmZmVyKG9iamVjdCkpIHtcbiAgICAgICAgaWYgKCFpc0J1ZmZlcihvdGhlcikpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgb2JqSXNBcnIgPSB0cnVlO1xuICAgICAgICBvYmpJc09iaiA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKGlzU2FtZVRhZyAmJiAhb2JqSXNPYmopIHtcbiAgICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgICAgcmV0dXJuIChvYmpJc0FyciB8fCBpc1R5cGVkQXJyYXkob2JqZWN0KSlcbiAgICAgICAgICA/IGVxdWFsQXJyYXlzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spXG4gICAgICAgICAgOiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIG9ialRhZywgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gICAgICB9XG4gICAgICBpZiAoIShiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcpKSB7XG4gICAgICAgIHZhciBvYmpJc1dyYXBwZWQgPSBvYmpJc09iaiAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgJ19fd3JhcHBlZF9fJyksXG4gICAgICAgICAgICBvdGhJc1dyYXBwZWQgPSBvdGhJc09iaiAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCAnX193cmFwcGVkX18nKTtcblxuICAgICAgICBpZiAob2JqSXNXcmFwcGVkIHx8IG90aElzV3JhcHBlZCkge1xuICAgICAgICAgIHZhciBvYmpVbndyYXBwZWQgPSBvYmpJc1dyYXBwZWQgPyBvYmplY3QudmFsdWUoKSA6IG9iamVjdCxcbiAgICAgICAgICAgICAgb3RoVW53cmFwcGVkID0gb3RoSXNXcmFwcGVkID8gb3RoZXIudmFsdWUoKSA6IG90aGVyO1xuXG4gICAgICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgICAgICByZXR1cm4gZXF1YWxGdW5jKG9ialVud3JhcHBlZCwgb3RoVW53cmFwcGVkLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghaXNTYW1lVGFnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICByZXR1cm4gZXF1YWxPYmplY3RzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTWFwYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBtYXAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNNYXAodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGdldFRhZyh2YWx1ZSkgPT0gbWFwVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTWF0Y2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBtYXRjaERhdGEgVGhlIHByb3BlcnR5IG5hbWVzLCB2YWx1ZXMsIGFuZCBjb21wYXJlIGZsYWdzIHRvIG1hdGNoLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSwgY3VzdG9taXplcikge1xuICAgICAgdmFyIGluZGV4ID0gbWF0Y2hEYXRhLmxlbmd0aCxcbiAgICAgICAgICBsZW5ndGggPSBpbmRleCxcbiAgICAgICAgICBub0N1c3RvbWl6ZXIgPSAhY3VzdG9taXplcjtcblxuICAgICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAhbGVuZ3RoO1xuICAgICAgfVxuICAgICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICB2YXIgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgICAgIGlmICgobm9DdXN0b21pemVyICYmIGRhdGFbMl0pXG4gICAgICAgICAgICAgID8gZGF0YVsxXSAhPT0gb2JqZWN0W2RhdGFbMF1dXG4gICAgICAgICAgICAgIDogIShkYXRhWzBdIGluIG9iamVjdClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgICAgIHZhciBrZXkgPSBkYXRhWzBdLFxuICAgICAgICAgICAgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSxcbiAgICAgICAgICAgIHNyY1ZhbHVlID0gZGF0YVsxXTtcblxuICAgICAgICBpZiAobm9DdXN0b21pemVyICYmIGRhdGFbMl0pIHtcbiAgICAgICAgICBpZiAob2JqVmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBzdGFjayA9IG5ldyBTdGFjaztcbiAgICAgICAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlLCBzdGFjayk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghKHJlc3VsdCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyBiYXNlSXNFcXVhbChzcmNWYWx1ZSwgb2JqVmFsdWUsIENPTVBBUkVfUEFSVElBTF9GTEFHIHwgQ09NUEFSRV9VTk9SREVSRURfRkxBRywgY3VzdG9taXplciwgc3RhY2spXG4gICAgICAgICAgICAgICAgOiByZXN1bHRcbiAgICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNOYXRpdmVgIHdpdGhvdXQgYmFkIHNoaW0gY2hlY2tzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc05hdGl2ZSh2YWx1ZSkge1xuICAgICAgaWYgKCFpc09iamVjdCh2YWx1ZSkgfHwgaXNNYXNrZWQodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciBwYXR0ZXJuID0gaXNGdW5jdGlvbih2YWx1ZSkgPyByZUlzTmF0aXZlIDogcmVJc0hvc3RDdG9yO1xuICAgICAgcmV0dXJuIHBhdHRlcm4udGVzdCh0b1NvdXJjZSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzUmVnRXhwYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSByZWdleHAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNSZWdFeHAodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHJlZ2V4cFRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1NldGAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2V0LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzU2V0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IHNldFRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1R5cGVkQXJyYXlgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzVHlwZWRBcnJheSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiZcbiAgICAgICAgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhIXR5cGVkQXJyYXlUYWdzW2Jhc2VHZXRUYWcodmFsdWUpXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pdGVyYXRlZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gW3ZhbHVlPV8uaWRlbnRpdHldIFRoZSB2YWx1ZSB0byBjb252ZXJ0IHRvIGFuIGl0ZXJhdGVlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgaXRlcmF0ZWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUl0ZXJhdGVlKHZhbHVlKSB7XG4gICAgICAvLyBEb24ndCBzdG9yZSB0aGUgYHR5cGVvZmAgcmVzdWx0IGluIGEgdmFyaWFibGUgdG8gYXZvaWQgYSBKSVQgYnVnIGluIFNhZmFyaSA5LlxuICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTYwMzQgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gaWRlbnRpdHk7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBpc0FycmF5KHZhbHVlKVxuICAgICAgICAgID8gYmFzZU1hdGNoZXNQcm9wZXJ0eSh2YWx1ZVswXSwgdmFsdWVbMV0pXG4gICAgICAgICAgOiBiYXNlTWF0Y2hlcyh2YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNgIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUtleXMob2JqZWN0KSB7XG4gICAgICBpZiAoIWlzUHJvdG90eXBlKG9iamVjdCkpIHtcbiAgICAgICAgcmV0dXJuIG5hdGl2ZUtleXMob2JqZWN0KTtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGZvciAodmFyIGtleSBpbiBPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYga2V5ICE9ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNJbmAgd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlS2V5c0luKG9iamVjdCkge1xuICAgICAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBuYXRpdmVLZXlzSW4ob2JqZWN0KTtcbiAgICAgIH1cbiAgICAgIHZhciBpc1Byb3RvID0gaXNQcm90b3R5cGUob2JqZWN0KSxcbiAgICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgICAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgICAgICBpZiAoIShrZXkgPT0gJ2NvbnN0cnVjdG9yJyAmJiAoaXNQcm90byB8fCAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubHRgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBgb3RoZXJgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUx0KHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIHZhbHVlIDwgb3RoZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWFwYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICByZXN1bHQgPSBpc0FycmF5TGlrZShjb2xsZWN0aW9uKSA/IEFycmF5KGNvbGxlY3Rpb24ubGVuZ3RoKSA6IFtdO1xuXG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHJlc3VsdFsrK2luZGV4XSA9IGl0ZXJhdGVlKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hdGNoZXNgIHdoaWNoIGRvZXNuJ3QgY2xvbmUgYHNvdXJjZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gbWF0Y2guXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTWF0Y2hlcyhzb3VyY2UpIHtcbiAgICAgIHZhciBtYXRjaERhdGEgPSBnZXRNYXRjaERhdGEoc291cmNlKTtcbiAgICAgIGlmIChtYXRjaERhdGEubGVuZ3RoID09IDEgJiYgbWF0Y2hEYXRhWzBdWzJdKSB7XG4gICAgICAgIHJldHVybiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZShtYXRjaERhdGFbMF1bMF0sIG1hdGNoRGF0YVswXVsxXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBvYmplY3QgPT09IHNvdXJjZSB8fCBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgbWF0Y2hEYXRhKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWF0Y2hlc1Byb3BlcnR5YCB3aGljaCBkb2Vzbid0IGNsb25lIGBzcmNWYWx1ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2guXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTWF0Y2hlc1Byb3BlcnR5KHBhdGgsIHNyY1ZhbHVlKSB7XG4gICAgICBpZiAoaXNLZXkocGF0aCkgJiYgaXNTdHJpY3RDb21wYXJhYmxlKHNyY1ZhbHVlKSkge1xuICAgICAgICByZXR1cm4gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUodG9LZXkocGF0aCksIHNyY1ZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgdmFyIG9ialZhbHVlID0gZ2V0KG9iamVjdCwgcGF0aCk7XG4gICAgICAgIHJldHVybiAob2JqVmFsdWUgPT09IHVuZGVmaW5lZCAmJiBvYmpWYWx1ZSA9PT0gc3JjVmFsdWUpXG4gICAgICAgICAgPyBoYXNJbihvYmplY3QsIHBhdGgpXG4gICAgICAgICAgOiBiYXNlSXNFcXVhbChzcmNWYWx1ZSwgb2JqVmFsdWUsIENPTVBBUkVfUEFSVElBTF9GTEFHIHwgQ09NUEFSRV9VTk9SREVSRURfRkxBRyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1lcmdlYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgbWVyZ2VkIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICAgICAqICBjb3VudGVycGFydHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplciwgc3RhY2spIHtcbiAgICAgIGlmIChvYmplY3QgPT09IHNvdXJjZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBiYXNlRm9yKHNvdXJjZSwgZnVuY3Rpb24oc3JjVmFsdWUsIGtleSkge1xuICAgICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgICBpZiAoaXNPYmplY3Qoc3JjVmFsdWUpKSB7XG4gICAgICAgICAgYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgYmFzZU1lcmdlLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgICAgICAgPyBjdXN0b21pemVyKHNhZmVHZXQob2JqZWN0LCBrZXkpLCBzcmNWYWx1ZSwgKGtleSArICcnKSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBzcmNWYWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LCBrZXlzSW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZU1lcmdlYCBmb3IgYXJyYXlzIGFuZCBvYmplY3RzIHdoaWNoIHBlcmZvcm1zXG4gICAgICogZGVlcCBtZXJnZXMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAgICAgKiByZWZlcmVuY2VzIHRvIGJlIG1lcmdlZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBtZXJnZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3JjSW5kZXggVGhlIGluZGV4IG9mIGBzb3VyY2VgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IG1lcmdlRnVuYyBUaGUgZnVuY3Rpb24gdG8gbWVyZ2UgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICAgICAqICBjb3VudGVycGFydHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgbWVyZ2VGdW5jLCBjdXN0b21pemVyLCBzdGFjaykge1xuICAgICAgdmFyIG9ialZhbHVlID0gc2FmZUdldChvYmplY3QsIGtleSksXG4gICAgICAgICAgc3JjVmFsdWUgPSBzYWZlR2V0KHNvdXJjZSwga2V5KSxcbiAgICAgICAgICBzdGFja2VkID0gc3RhY2suZ2V0KHNyY1ZhbHVlKTtcblxuICAgICAgaWYgKHN0YWNrZWQpIHtcbiAgICAgICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgc3RhY2tlZCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgICAgPyBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSwgKGtleSArICcnKSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKVxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgdmFyIGlzQ29tbW9uID0gbmV3VmFsdWUgPT09IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKGlzQ29tbW9uKSB7XG4gICAgICAgIHZhciBpc0FyciA9IGlzQXJyYXkoc3JjVmFsdWUpLFxuICAgICAgICAgICAgaXNCdWZmID0gIWlzQXJyICYmIGlzQnVmZmVyKHNyY1ZhbHVlKSxcbiAgICAgICAgICAgIGlzVHlwZWQgPSAhaXNBcnIgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkoc3JjVmFsdWUpO1xuXG4gICAgICAgIG5ld1ZhbHVlID0gc3JjVmFsdWU7XG4gICAgICAgIGlmIChpc0FyciB8fCBpc0J1ZmYgfHwgaXNUeXBlZCkge1xuICAgICAgICAgIGlmIChpc0FycmF5KG9ialZhbHVlKSkge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBvYmpWYWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAoaXNBcnJheUxpa2VPYmplY3Qob2JqVmFsdWUpKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IGNvcHlBcnJheShvYmpWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKGlzQnVmZikge1xuICAgICAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gY2xvbmVCdWZmZXIoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmIChpc1R5cGVkKSB7XG4gICAgICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBjbG9uZVR5cGVkQXJyYXkoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gW107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzUGxhaW5PYmplY3Qoc3JjVmFsdWUpIHx8IGlzQXJndW1lbnRzKHNyY1ZhbHVlKSkge1xuICAgICAgICAgIG5ld1ZhbHVlID0gb2JqVmFsdWU7XG4gICAgICAgICAgaWYgKGlzQXJndW1lbnRzKG9ialZhbHVlKSkge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSB0b1BsYWluT2JqZWN0KG9ialZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAoIWlzT2JqZWN0KG9ialZhbHVlKSB8fCBpc0Z1bmN0aW9uKG9ialZhbHVlKSkge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBpbml0Q2xvbmVPYmplY3Qoc3JjVmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaXNDb21tb24pIHtcbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgbWVyZ2Ugb2JqZWN0cyBhbmQgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIHN0YWNrLnNldChzcmNWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgICBtZXJnZUZ1bmMobmV3VmFsdWUsIHNyY1ZhbHVlLCBzcmNJbmRleCwgY3VzdG9taXplciwgc3RhY2spO1xuICAgICAgICBzdGFja1snZGVsZXRlJ10oc3JjVmFsdWUpO1xuICAgICAgfVxuICAgICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm50aGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IHRvIHJldHVybi5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbnRoIGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTnRoKGFycmF5LCBuKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbiArPSBuIDwgMCA/IGxlbmd0aCA6IDA7XG4gICAgICByZXR1cm4gaXNJbmRleChuLCBsZW5ndGgpID8gYXJyYXlbbl0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ub3JkZXJCeWAgd2l0aG91dCBwYXJhbSBndWFyZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9uW118T2JqZWN0W118c3RyaW5nW119IGl0ZXJhdGVlcyBUaGUgaXRlcmF0ZWVzIHRvIHNvcnQgYnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXX0gb3JkZXJzIFRoZSBzb3J0IG9yZGVycyBvZiBgaXRlcmF0ZWVzYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzb3J0ZWQgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU9yZGVyQnkoY29sbGVjdGlvbiwgaXRlcmF0ZWVzLCBvcmRlcnMpIHtcbiAgICAgIGlmIChpdGVyYXRlZXMubGVuZ3RoKSB7XG4gICAgICAgIGl0ZXJhdGVlcyA9IGFycmF5TWFwKGl0ZXJhdGVlcywgZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgICAgICBpZiAoaXNBcnJheShpdGVyYXRlZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgICByZXR1cm4gYmFzZUdldCh2YWx1ZSwgaXRlcmF0ZWUubGVuZ3RoID09PSAxID8gaXRlcmF0ZWVbMF0gOiBpdGVyYXRlZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBpdGVyYXRlZTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVyYXRlZXMgPSBbaWRlbnRpdHldO1xuICAgICAgfVxuXG4gICAgICB2YXIgaW5kZXggPSAtMTtcbiAgICAgIGl0ZXJhdGVlcyA9IGFycmF5TWFwKGl0ZXJhdGVlcywgYmFzZVVuYXJ5KGdldEl0ZXJhdGVlKCkpKTtcblxuICAgICAgdmFyIHJlc3VsdCA9IGJhc2VNYXAoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGtleSwgY29sbGVjdGlvbikge1xuICAgICAgICB2YXIgY3JpdGVyaWEgPSBhcnJheU1hcChpdGVyYXRlZXMsIGZ1bmN0aW9uKGl0ZXJhdGVlKSB7XG4gICAgICAgICAgcmV0dXJuIGl0ZXJhdGVlKHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7ICdjcml0ZXJpYSc6IGNyaXRlcmlhLCAnaW5kZXgnOiArK2luZGV4LCAndmFsdWUnOiB2YWx1ZSB9O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBiYXNlU29ydEJ5KHJlc3VsdCwgZnVuY3Rpb24ob2JqZWN0LCBvdGhlcikge1xuICAgICAgICByZXR1cm4gY29tcGFyZU11bHRpcGxlKG9iamVjdCwgb3RoZXIsIG9yZGVycyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5waWNrYCB3aXRob3V0IHN1cHBvcnQgZm9yIGluZGl2aWR1YWxcbiAgICAgKiBwcm9wZXJ0eSBpZGVudGlmaWVycy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRocyBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQaWNrKG9iamVjdCwgcGF0aHMpIHtcbiAgICAgIHJldHVybiBiYXNlUGlja0J5KG9iamVjdCwgcGF0aHMsIGZ1bmN0aW9uKHZhbHVlLCBwYXRoKSB7XG4gICAgICAgIHJldHVybiBoYXNJbihvYmplY3QsIHBhdGgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgIGBfLnBpY2tCeWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhzIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgcHJvcGVydHkuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUGlja0J5KG9iamVjdCwgcGF0aHMsIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aHMubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IHt9O1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgcGF0aCA9IHBhdGhzW2luZGV4XSxcbiAgICAgICAgICAgIHZhbHVlID0gYmFzZUdldChvYmplY3QsIHBhdGgpO1xuXG4gICAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIHBhdGgpKSB7XG4gICAgICAgICAgYmFzZVNldChyZXN1bHQsIGNhc3RQYXRoKHBhdGgsIG9iamVjdCksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VQcm9wZXJ0eWAgd2hpY2ggc3VwcG9ydHMgZGVlcCBwYXRocy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUHJvcGVydHlEZWVwKHBhdGgpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHVsbEFsbEJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gICAgICogc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUHVsbEFsbChhcnJheSwgdmFsdWVzLCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICAgICAgdmFyIGluZGV4T2YgPSBjb21wYXJhdG9yID8gYmFzZUluZGV4T2ZXaXRoIDogYmFzZUluZGV4T2YsXG4gICAgICAgICAgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgICAgIHNlZW4gPSBhcnJheTtcblxuICAgICAgaWYgKGFycmF5ID09PSB2YWx1ZXMpIHtcbiAgICAgICAgdmFsdWVzID0gY29weUFycmF5KHZhbHVlcyk7XG4gICAgICB9XG4gICAgICBpZiAoaXRlcmF0ZWUpIHtcbiAgICAgICAgc2VlbiA9IGFycmF5TWFwKGFycmF5LCBiYXNlVW5hcnkoaXRlcmF0ZWUpKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBmcm9tSW5kZXggPSAwLFxuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZXNbaW5kZXhdLFxuICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgICAgIHdoaWxlICgoZnJvbUluZGV4ID0gaW5kZXhPZihzZWVuLCBjb21wdXRlZCwgZnJvbUluZGV4LCBjb21wYXJhdG9yKSkgPiAtMSkge1xuICAgICAgICAgIGlmIChzZWVuICE9PSBhcnJheSkge1xuICAgICAgICAgICAgc3BsaWNlLmNhbGwoc2VlbiwgZnJvbUluZGV4LCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3BsaWNlLmNhbGwoYXJyYXksIGZyb21JbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wdWxsQXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbFxuICAgICAqIGluZGV4ZXMgb3IgY2FwdHVyaW5nIHRoZSByZW1vdmVkIGVsZW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyW119IGluZGV4ZXMgVGhlIGluZGV4ZXMgb2YgZWxlbWVudHMgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQdWxsQXQoYXJyYXksIGluZGV4ZXMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA/IGluZGV4ZXMubGVuZ3RoIDogMCxcbiAgICAgICAgICBsYXN0SW5kZXggPSBsZW5ndGggLSAxO1xuXG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgdmFyIGluZGV4ID0gaW5kZXhlc1tsZW5ndGhdO1xuICAgICAgICBpZiAobGVuZ3RoID09IGxhc3RJbmRleCB8fCBpbmRleCAhPT0gcHJldmlvdXMpIHtcbiAgICAgICAgICB2YXIgcHJldmlvdXMgPSBpbmRleDtcbiAgICAgICAgICBpZiAoaXNJbmRleChpbmRleCkpIHtcbiAgICAgICAgICAgIHNwbGljZS5jYWxsKGFycmF5LCBpbmRleCwgMSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2VVbnNldChhcnJheSwgaW5kZXgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJhbmRvbWAgd2l0aG91dCBzdXBwb3J0IGZvciByZXR1cm5pbmdcbiAgICAgKiBmbG9hdGluZy1wb2ludCBudW1iZXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbG93ZXIgVGhlIGxvd2VyIGJvdW5kLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB1cHBlciBUaGUgdXBwZXIgYm91bmQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcmFuZG9tIG51bWJlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUmFuZG9tKGxvd2VyLCB1cHBlcikge1xuICAgICAgcmV0dXJuIGxvd2VyICsgbmF0aXZlRmxvb3IobmF0aXZlUmFuZG9tKCkgKiAodXBwZXIgLSBsb3dlciArIDEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yYW5nZWAgYW5kIGBfLnJhbmdlUmlnaHRgIHdoaWNoIGRvZXNuJ3RcbiAgICAgKiBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnQgVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGVwIFRoZSB2YWx1ZSB0byBpbmNyZW1lbnQgb3IgZGVjcmVtZW50IGJ5LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZ2Ugb2YgbnVtYmVycy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUmFuZ2Uoc3RhcnQsIGVuZCwgc3RlcCwgZnJvbVJpZ2h0KSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBuYXRpdmVNYXgobmF0aXZlQ2VpbCgoZW5kIC0gc3RhcnQpIC8gKHN0ZXAgfHwgMSkpLCAwKSxcbiAgICAgICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgcmVzdWx0W2Zyb21SaWdodCA/IGxlbmd0aCA6ICsraW5kZXhdID0gc3RhcnQ7XG4gICAgICAgIHN0YXJ0ICs9IHN0ZXA7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlcGVhdGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gcmVwZWF0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gcmVwZWF0IHRoZSBzdHJpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmVwZWF0ZWQgc3RyaW5nLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VSZXBlYXQoc3RyaW5nLCBuKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgICBpZiAoIXN0cmluZyB8fCBuIDwgMSB8fCBuID4gTUFYX1NBRkVfSU5URUdFUikge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgLy8gTGV2ZXJhZ2UgdGhlIGV4cG9uZW50aWF0aW9uIGJ5IHNxdWFyaW5nIGFsZ29yaXRobSBmb3IgYSBmYXN0ZXIgcmVwZWF0LlxuICAgICAgLy8gU2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V4cG9uZW50aWF0aW9uX2J5X3NxdWFyaW5nIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICBkbyB7XG4gICAgICAgIGlmIChuICUgMikge1xuICAgICAgICAgIHJlc3VsdCArPSBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgICAgbiA9IG5hdGl2ZUZsb29yKG4gLyAyKTtcbiAgICAgICAgaWYgKG4pIHtcbiAgICAgICAgICBzdHJpbmcgKz0gc3RyaW5nO1xuICAgICAgICB9XG4gICAgICB9IHdoaWxlIChuKTtcblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZXN0YCB3aGljaCBkb2Vzbid0IHZhbGlkYXRlIG9yIGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VSZXN0KGZ1bmMsIHN0YXJ0KSB7XG4gICAgICByZXR1cm4gc2V0VG9TdHJpbmcob3ZlclJlc3QoZnVuYywgc3RhcnQsIGlkZW50aXR5KSwgZnVuYyArICcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zYW1wbGVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzYW1wbGUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTYW1wbGUoY29sbGVjdGlvbikge1xuICAgICAgcmV0dXJuIGFycmF5U2FtcGxlKHZhbHVlcyhjb2xsZWN0aW9uKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc2FtcGxlU2l6ZWAgd2l0aG91dCBwYXJhbSBndWFyZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIHNhbXBsZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHNhbXBsZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU2FtcGxlU2l6ZShjb2xsZWN0aW9uLCBuKSB7XG4gICAgICB2YXIgYXJyYXkgPSB2YWx1ZXMoY29sbGVjdGlvbik7XG4gICAgICByZXR1cm4gc2h1ZmZsZVNlbGYoYXJyYXksIGJhc2VDbGFtcChuLCAwLCBhcnJheS5sZW5ndGgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zZXRgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIHBhdGggY3JlYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU2V0KG9iamVjdCwgcGF0aCwgdmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgICAgfVxuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoLFxuICAgICAgICAgIGxhc3RJbmRleCA9IGxlbmd0aCAtIDEsXG4gICAgICAgICAgbmVzdGVkID0gb2JqZWN0O1xuXG4gICAgICB3aGlsZSAobmVzdGVkICE9IG51bGwgJiYgKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0gdG9LZXkocGF0aFtpbmRleF0pLFxuICAgICAgICAgICAgbmV3VmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAoa2V5ID09PSAnX19wcm90b19fJyB8fCBrZXkgPT09ICdjb25zdHJ1Y3RvcicgfHwga2V5ID09PSAncHJvdG90eXBlJykge1xuICAgICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5kZXggIT0gbGFzdEluZGV4KSB7XG4gICAgICAgICAgdmFyIG9ialZhbHVlID0gbmVzdGVkW2tleV07XG4gICAgICAgICAgbmV3VmFsdWUgPSBjdXN0b21pemVyID8gY3VzdG9taXplcihvYmpWYWx1ZSwga2V5LCBuZXN0ZWQpIDogdW5kZWZpbmVkO1xuICAgICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IGlzT2JqZWN0KG9ialZhbHVlKVxuICAgICAgICAgICAgICA/IG9ialZhbHVlXG4gICAgICAgICAgICAgIDogKGlzSW5kZXgocGF0aFtpbmRleCArIDFdKSA/IFtdIDoge30pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhc3NpZ25WYWx1ZShuZXN0ZWQsIGtleSwgbmV3VmFsdWUpO1xuICAgICAgICBuZXN0ZWQgPSBuZXN0ZWRba2V5XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYHNldERhdGFgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaG90IGxvb3Agc2hvcnRpbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFzc29jaWF0ZSBtZXRhZGF0YSB3aXRoLlxuICAgICAqIEBwYXJhbSB7Kn0gZGF0YSBUaGUgbWV0YWRhdGEuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZVNldERhdGEgPSAhbWV0YU1hcCA/IGlkZW50aXR5IDogZnVuY3Rpb24oZnVuYywgZGF0YSkge1xuICAgICAgbWV0YU1hcC5zZXQoZnVuYywgZGF0YSk7XG4gICAgICByZXR1cm4gZnVuYztcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYHNldFRvU3RyaW5nYCB3aXRob3V0IHN1cHBvcnQgZm9yIGhvdCBsb29wIHNob3J0aW5nLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBiYXNlU2V0VG9TdHJpbmcgPSAhZGVmaW5lUHJvcGVydHkgPyBpZGVudGl0eSA6IGZ1bmN0aW9uKGZ1bmMsIHN0cmluZykge1xuICAgICAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmMsICd0b1N0cmluZycsIHtcbiAgICAgICAgJ2NvbmZpZ3VyYWJsZSc6IHRydWUsXG4gICAgICAgICdlbnVtZXJhYmxlJzogZmFsc2UsXG4gICAgICAgICd2YWx1ZSc6IGNvbnN0YW50KHN0cmluZyksXG4gICAgICAgICd3cml0YWJsZSc6IHRydWVcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zaHVmZmxlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2h1ZmZsZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzaHVmZmxlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU2h1ZmZsZShjb2xsZWN0aW9uKSB7XG4gICAgICByZXR1cm4gc2h1ZmZsZVNlbGYodmFsdWVzKGNvbGxlY3Rpb24pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zbGljZWAgd2l0aG91dCBhbiBpdGVyYXRlZSBjYWxsIGd1YXJkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2xpY2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgICAgaWYgKHN0YXJ0IDwgMCkge1xuICAgICAgICBzdGFydCA9IC1zdGFydCA+IGxlbmd0aCA/IDAgOiAobGVuZ3RoICsgc3RhcnQpO1xuICAgICAgfVxuICAgICAgZW5kID0gZW5kID4gbGVuZ3RoID8gbGVuZ3RoIDogZW5kO1xuICAgICAgaWYgKGVuZCA8IDApIHtcbiAgICAgICAgZW5kICs9IGxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGxlbmd0aCA9IHN0YXJ0ID4gZW5kID8gMCA6ICgoZW5kIC0gc3RhcnQpID4+PiAwKTtcbiAgICAgIHN0YXJ0ID4+Pj0gMDtcblxuICAgICAgdmFyIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICByZXN1bHRbaW5kZXhdID0gYXJyYXlbaW5kZXggKyBzdGFydF07XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvbWVgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbnkgZWxlbWVudCBwYXNzZXMgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTb21lKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIHJlc3VsdDtcblxuICAgICAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHJlc3VsdCA9IHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pO1xuICAgICAgICByZXR1cm4gIXJlc3VsdDtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuICEhcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvcnRlZEluZGV4YCBhbmQgYF8uc29ydGVkTGFzdEluZGV4YCB3aGljaFxuICAgICAqIHBlcmZvcm1zIGEgYmluYXJ5IHNlYXJjaCBvZiBgYXJyYXlgIHRvIGRldGVybWluZSB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYFxuICAgICAqIHNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIGBhcnJheWAgaW4gb3JkZXIgdG8gbWFpbnRhaW4gaXRzIHNvcnQgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtyZXRIaWdoZXN0XSBTcGVjaWZ5IHJldHVybmluZyB0aGUgaGlnaGVzdCBxdWFsaWZpZWQgaW5kZXguXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTb3J0ZWRJbmRleChhcnJheSwgdmFsdWUsIHJldEhpZ2hlc3QpIHtcbiAgICAgIHZhciBsb3cgPSAwLFxuICAgICAgICAgIGhpZ2ggPSBhcnJheSA9PSBudWxsID8gbG93IDogYXJyYXkubGVuZ3RoO1xuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmIHZhbHVlID09PSB2YWx1ZSAmJiBoaWdoIDw9IEhBTEZfTUFYX0FSUkFZX0xFTkdUSCkge1xuICAgICAgICB3aGlsZSAobG93IDwgaGlnaCkge1xuICAgICAgICAgIHZhciBtaWQgPSAobG93ICsgaGlnaCkgPj4+IDEsXG4gICAgICAgICAgICAgIGNvbXB1dGVkID0gYXJyYXlbbWlkXTtcblxuICAgICAgICAgIGlmIChjb21wdXRlZCAhPT0gbnVsbCAmJiAhaXNTeW1ib2woY29tcHV0ZWQpICYmXG4gICAgICAgICAgICAgIChyZXRIaWdoZXN0ID8gKGNvbXB1dGVkIDw9IHZhbHVlKSA6IChjb21wdXRlZCA8IHZhbHVlKSkpIHtcbiAgICAgICAgICAgIGxvdyA9IG1pZCArIDE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhpZ2ggPSBtaWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoaWdoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VTb3J0ZWRJbmRleEJ5KGFycmF5LCB2YWx1ZSwgaWRlbnRpdHksIHJldEhpZ2hlc3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvcnRlZEluZGV4QnlgIGFuZCBgXy5zb3J0ZWRMYXN0SW5kZXhCeWBcbiAgICAgKiB3aGljaCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGB2YWx1ZWAgYW5kIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIHRvIGNvbXB1dGVcbiAgICAgKiB0aGVpciBzb3J0IHJhbmtpbmcuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OyAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgc29ydGVkIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZXZhbHVhdGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbcmV0SGlnaGVzdF0gU3BlY2lmeSByZXR1cm5pbmcgdGhlIGhpZ2hlc3QgcXVhbGlmaWVkIGluZGV4LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkXG4gICAgICogIGludG8gYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU29ydGVkSW5kZXhCeShhcnJheSwgdmFsdWUsIGl0ZXJhdGVlLCByZXRIaWdoZXN0KSB7XG4gICAgICB2YXIgbG93ID0gMCxcbiAgICAgICAgICBoaWdoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoaGlnaCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cblxuICAgICAgdmFsdWUgPSBpdGVyYXRlZSh2YWx1ZSk7XG4gICAgICB2YXIgdmFsSXNOYU4gPSB2YWx1ZSAhPT0gdmFsdWUsXG4gICAgICAgICAgdmFsSXNOdWxsID0gdmFsdWUgPT09IG51bGwsXG4gICAgICAgICAgdmFsSXNTeW1ib2wgPSBpc1N5bWJvbCh2YWx1ZSksXG4gICAgICAgICAgdmFsSXNVbmRlZmluZWQgPSB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xuXG4gICAgICB3aGlsZSAobG93IDwgaGlnaCkge1xuICAgICAgICB2YXIgbWlkID0gbmF0aXZlRmxvb3IoKGxvdyArIGhpZ2gpIC8gMiksXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlKGFycmF5W21pZF0pLFxuICAgICAgICAgICAgb3RoSXNEZWZpbmVkID0gY29tcHV0ZWQgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG90aElzTnVsbCA9IGNvbXB1dGVkID09PSBudWxsLFxuICAgICAgICAgICAgb3RoSXNSZWZsZXhpdmUgPSBjb21wdXRlZCA9PT0gY29tcHV0ZWQsXG4gICAgICAgICAgICBvdGhJc1N5bWJvbCA9IGlzU3ltYm9sKGNvbXB1dGVkKTtcblxuICAgICAgICBpZiAodmFsSXNOYU4pIHtcbiAgICAgICAgICB2YXIgc2V0TG93ID0gcmV0SGlnaGVzdCB8fCBvdGhJc1JlZmxleGl2ZTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWxJc1VuZGVmaW5lZCkge1xuICAgICAgICAgIHNldExvdyA9IG90aElzUmVmbGV4aXZlICYmIChyZXRIaWdoZXN0IHx8IG90aElzRGVmaW5lZCk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsSXNOdWxsKSB7XG4gICAgICAgICAgc2V0TG93ID0gb3RoSXNSZWZsZXhpdmUgJiYgb3RoSXNEZWZpbmVkICYmIChyZXRIaWdoZXN0IHx8ICFvdGhJc051bGwpO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbElzU3ltYm9sKSB7XG4gICAgICAgICAgc2V0TG93ID0gb3RoSXNSZWZsZXhpdmUgJiYgb3RoSXNEZWZpbmVkICYmICFvdGhJc051bGwgJiYgKHJldEhpZ2hlc3QgfHwgIW90aElzU3ltYm9sKTtcbiAgICAgICAgfSBlbHNlIGlmIChvdGhJc051bGwgfHwgb3RoSXNTeW1ib2wpIHtcbiAgICAgICAgICBzZXRMb3cgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRMb3cgPSByZXRIaWdoZXN0ID8gKGNvbXB1dGVkIDw9IHZhbHVlKSA6IChjb21wdXRlZCA8IHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2V0TG93KSB7XG4gICAgICAgICAgbG93ID0gbWlkICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBoaWdoID0gbWlkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbmF0aXZlTWluKGhpZ2gsIE1BWF9BUlJBWV9JTkRFWCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydGVkVW5pcWAgYW5kIGBfLnNvcnRlZFVuaXFCeWAgd2l0aG91dFxuICAgICAqIHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNvcnRlZFVuaXEoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICAgICAgaWYgKCFpbmRleCB8fCAhZXEoY29tcHV0ZWQsIHNlZW4pKSB7XG4gICAgICAgICAgdmFyIHNlZW4gPSBjb21wdXRlZDtcbiAgICAgICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSB2YWx1ZSA9PT0gMCA/IDAgOiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b051bWJlcmAgd2hpY2ggZG9lc24ndCBlbnN1cmUgY29ycmVjdFxuICAgICAqIGNvbnZlcnNpb25zIG9mIGJpbmFyeSwgaGV4YWRlY2ltYWwsIG9yIG9jdGFsIHN0cmluZyB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbnVtYmVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VUb051bWJlcih2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBOQU47XG4gICAgICB9XG4gICAgICByZXR1cm4gK3ZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRvU3RyaW5nYCB3aGljaCBkb2Vzbid0IGNvbnZlcnQgbnVsbGlzaFxuICAgICAqIHZhbHVlcyB0byBlbXB0eSBzdHJpbmdzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHN0cmluZy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlVG9TdHJpbmcodmFsdWUpIHtcbiAgICAgIC8vIEV4aXQgZWFybHkgZm9yIHN0cmluZ3MgdG8gYXZvaWQgYSBwZXJmb3JtYW5jZSBoaXQgaW4gc29tZSBlbnZpcm9ubWVudHMuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBjb252ZXJ0IHZhbHVlcyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICByZXR1cm4gYXJyYXlNYXAodmFsdWUsIGJhc2VUb1N0cmluZykgKyAnJztcbiAgICAgIH1cbiAgICAgIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHN5bWJvbFRvU3RyaW5nID8gc3ltYm9sVG9TdHJpbmcuY2FsbCh2YWx1ZSkgOiAnJztcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gICAgICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5pcUJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVVuaXEoYXJyYXksIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXMsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIGlzQ29tbW9uID0gdHJ1ZSxcbiAgICAgICAgICByZXN1bHQgPSBbXSxcbiAgICAgICAgICBzZWVuID0gcmVzdWx0O1xuXG4gICAgICBpZiAoY29tcGFyYXRvcikge1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXNXaXRoO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAobGVuZ3RoID49IExBUkdFX0FSUkFZX1NJWkUpIHtcbiAgICAgICAgdmFyIHNldCA9IGl0ZXJhdGVlID8gbnVsbCA6IGNyZWF0ZVNldChhcnJheSk7XG4gICAgICAgIGlmIChzZXQpIHtcbiAgICAgICAgICByZXR1cm4gc2V0VG9BcnJheShzZXQpO1xuICAgICAgICB9XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIGluY2x1ZGVzID0gY2FjaGVIYXM7XG4gICAgICAgIHNlZW4gPSBuZXcgU2V0Q2FjaGU7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgc2VlbiA9IGl0ZXJhdGVlID8gW10gOiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBvdXRlcjpcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPyBpdGVyYXRlZSh2YWx1ZSkgOiB2YWx1ZTtcblxuICAgICAgICB2YWx1ZSA9IChjb21wYXJhdG9yIHx8IHZhbHVlICE9PSAwKSA/IHZhbHVlIDogMDtcbiAgICAgICAgaWYgKGlzQ29tbW9uICYmIGNvbXB1dGVkID09PSBjb21wdXRlZCkge1xuICAgICAgICAgIHZhciBzZWVuSW5kZXggPSBzZWVuLmxlbmd0aDtcbiAgICAgICAgICB3aGlsZSAoc2VlbkluZGV4LS0pIHtcbiAgICAgICAgICAgIGlmIChzZWVuW3NlZW5JbmRleF0gPT09IGNvbXB1dGVkKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXRlcmF0ZWUpIHtcbiAgICAgICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghaW5jbHVkZXMoc2VlbiwgY29tcHV0ZWQsIGNvbXBhcmF0b3IpKSB7XG4gICAgICAgICAgaWYgKHNlZW4gIT09IHJlc3VsdCkge1xuICAgICAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuc2V0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcHJvcGVydHkgcGF0aCB0byB1bnNldC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHByb3BlcnR5IGlzIGRlbGV0ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlVW5zZXQob2JqZWN0LCBwYXRoKSB7XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcbiAgICAgIG9iamVjdCA9IHBhcmVudChvYmplY3QsIHBhdGgpO1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsIHx8IGRlbGV0ZSBvYmplY3RbdG9LZXkobGFzdChwYXRoKSldO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVwZGF0ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHVwZGF0ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB1cGRhdGVyIFRoZSBmdW5jdGlvbiB0byBwcm9kdWNlIHRoZSB1cGRhdGVkIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIHBhdGggY3JlYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlVXBkYXRlKG9iamVjdCwgcGF0aCwgdXBkYXRlciwgY3VzdG9taXplcikge1xuICAgICAgcmV0dXJuIGJhc2VTZXQob2JqZWN0LCBwYXRoLCB1cGRhdGVyKGJhc2VHZXQob2JqZWN0LCBwYXRoKSksIGN1c3RvbWl6ZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5kcm9wV2hpbGVgIGFuZCBgXy50YWtlV2hpbGVgXG4gICAgICogd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNEcm9wXSBTcGVjaWZ5IGRyb3BwaW5nIGVsZW1lbnRzIGluc3RlYWQgb2YgdGFraW5nIHRoZW0uXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VXaGlsZShhcnJheSwgcHJlZGljYXRlLCBpc0Ryb3AsIGZyb21SaWdodCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICBpbmRleCA9IGZyb21SaWdodCA/IGxlbmd0aCA6IC0xO1xuXG4gICAgICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSAmJlxuICAgICAgICBwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7fVxuXG4gICAgICByZXR1cm4gaXNEcm9wXG4gICAgICAgID8gYmFzZVNsaWNlKGFycmF5LCAoZnJvbVJpZ2h0ID8gMCA6IGluZGV4KSwgKGZyb21SaWdodCA/IGluZGV4ICsgMSA6IGxlbmd0aCkpXG4gICAgICAgIDogYmFzZVNsaWNlKGFycmF5LCAoZnJvbVJpZ2h0ID8gaW5kZXggKyAxIDogMCksIChmcm9tUmlnaHQgPyBsZW5ndGggOiBpbmRleCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGB3cmFwcGVyVmFsdWVgIHdoaWNoIHJldHVybnMgdGhlIHJlc3VsdCBvZlxuICAgICAqIHBlcmZvcm1pbmcgYSBzZXF1ZW5jZSBvZiBhY3Rpb25zIG9uIHRoZSB1bndyYXBwZWQgYHZhbHVlYCwgd2hlcmUgZWFjaFxuICAgICAqIHN1Y2Nlc3NpdmUgYWN0aW9uIGlzIHN1cHBsaWVkIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHByZXZpb3VzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB1bndyYXBwZWQgdmFsdWUuXG4gICAgICogQHBhcmFtIHtBcnJheX0gYWN0aW9ucyBBY3Rpb25zIHRvIHBlcmZvcm0gdG8gcmVzb2x2ZSB0aGUgdW53cmFwcGVkIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlV3JhcHBlclZhbHVlKHZhbHVlLCBhY3Rpb25zKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gdmFsdWU7XG4gICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgTGF6eVdyYXBwZXIpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnZhbHVlKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXlSZWR1Y2UoYWN0aW9ucywgZnVuY3Rpb24ocmVzdWx0LCBhY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIGFjdGlvbi5mdW5jLmFwcGx5KGFjdGlvbi50aGlzQXJnLCBhcnJheVB1c2goW3Jlc3VsdF0sIGFjdGlvbi5hcmdzKSk7XG4gICAgICB9LCByZXN1bHQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy54b3JgLCB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcywgdGhhdCBhY2NlcHRzIGFuIGFycmF5IG9mIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheXMgVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgdmFsdWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VYb3IoYXJyYXlzLCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5cy5sZW5ndGg7XG4gICAgICBpZiAobGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gbGVuZ3RoID8gYmFzZVVuaXEoYXJyYXlzWzBdKSA6IFtdO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGFycmF5ID0gYXJyYXlzW2luZGV4XSxcbiAgICAgICAgICAgIG90aEluZGV4ID0gLTE7XG5cbiAgICAgICAgd2hpbGUgKCsrb3RoSW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICBpZiAob3RoSW5kZXggIT0gaW5kZXgpIHtcbiAgICAgICAgICAgIHJlc3VsdFtpbmRleF0gPSBiYXNlRGlmZmVyZW5jZShyZXN1bHRbaW5kZXhdIHx8IGFycmF5LCBhcnJheXNbb3RoSW5kZXhdLCBpdGVyYXRlZSwgY29tcGFyYXRvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVVuaXEoYmFzZUZsYXR0ZW4ocmVzdWx0LCAxKSwgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy56aXBPYmplY3RgIHdoaWNoIGFzc2lnbnMgdmFsdWVzIHVzaW5nIGBhc3NpZ25GdW5jYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbkZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFzc2lnbiB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlWmlwT2JqZWN0KHByb3BzLCB2YWx1ZXMsIGFzc2lnbkZ1bmMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aCxcbiAgICAgICAgICB2YWxzTGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSB7fTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gaW5kZXggPCB2YWxzTGVuZ3RoID8gdmFsdWVzW2luZGV4XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgYXNzaWduRnVuYyhyZXN1bHQsIHByb3BzW2luZGV4XSwgdmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXN0cyBgdmFsdWVgIHRvIGFuIGVtcHR5IGFycmF5IGlmIGl0J3Mgbm90IGFuIGFycmF5IGxpa2Ugb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgdGhlIGNhc3QgYXJyYXktbGlrZSBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2FzdEFycmF5TGlrZU9iamVjdCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKSA/IHZhbHVlIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FzdHMgYHZhbHVlYCB0byBgaWRlbnRpdHlgIGlmIGl0J3Mgbm90IGEgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGNhc3QgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2FzdEZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbicgPyB2YWx1ZSA6IGlkZW50aXR5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhc3RzIGB2YWx1ZWAgdG8gYSBwYXRoIGFycmF5IGlmIGl0J3Mgbm90IG9uZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeSBrZXlzIG9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY2FzdCBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhc3RQYXRoKHZhbHVlLCBvYmplY3QpIHtcbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gaXNLZXkodmFsdWUsIG9iamVjdCkgPyBbdmFsdWVdIDogc3RyaW5nVG9QYXRoKHRvU3RyaW5nKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBgYmFzZVJlc3RgIGFsaWFzIHdoaWNoIGNhbiBiZSByZXBsYWNlZCB3aXRoIGBpZGVudGl0eWAgYnkgbW9kdWxlXG4gICAgICogcmVwbGFjZW1lbnQgcGx1Z2lucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHR5cGUge0Z1bmN0aW9ufVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICovXG4gICAgdmFyIGNhc3RSZXN0ID0gYmFzZVJlc3Q7XG5cbiAgICAvKipcbiAgICAgKiBDYXN0cyBgYXJyYXlgIHRvIGEgc2xpY2UgaWYgaXQncyBuZWVkZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY2FzdCBzbGljZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXN0U2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gICAgICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IGVuZDtcbiAgICAgIHJldHVybiAoIXN0YXJ0ICYmIGVuZCA+PSBsZW5ndGgpID8gYXJyYXkgOiBiYXNlU2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc2ltcGxlIHdyYXBwZXIgYXJvdW5kIHRoZSBnbG9iYWwgW2BjbGVhclRpbWVvdXRgXShodHRwczovL21kbi5pby9jbGVhclRpbWVvdXQpLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcnxPYmplY3R9IGlkIFRoZSB0aW1lciBpZCBvciB0aW1lb3V0IG9iamVjdCBvZiB0aGUgdGltZXIgdG8gY2xlYXIuXG4gICAgICovXG4gICAgdmFyIGNsZWFyVGltZW91dCA9IGN0eENsZWFyVGltZW91dCB8fCBmdW5jdGlvbihpZCkge1xuICAgICAgcmV0dXJuIHJvb3QuY2xlYXJUaW1lb3V0KGlkKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mICBgYnVmZmVyYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtCdWZmZXJ9IGJ1ZmZlciBUaGUgYnVmZmVyIHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gICAgICogQHJldHVybnMge0J1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGJ1ZmZlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZUJ1ZmZlcihidWZmZXIsIGlzRGVlcCkge1xuICAgICAgaWYgKGlzRGVlcCkge1xuICAgICAgICByZXR1cm4gYnVmZmVyLnNsaWNlKCk7XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gYnVmZmVyLmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSBhbGxvY1Vuc2FmZSA/IGFsbG9jVW5zYWZlKGxlbmd0aCkgOiBuZXcgYnVmZmVyLmNvbnN0cnVjdG9yKGxlbmd0aCk7XG5cbiAgICAgIGJ1ZmZlci5jb3B5KHJlc3VsdCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgYXJyYXlCdWZmZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5QnVmZmVyfSBhcnJheUJ1ZmZlciBUaGUgYXJyYXkgYnVmZmVyIHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtBcnJheUJ1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGFycmF5IGJ1ZmZlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZUFycmF5QnVmZmVyKGFycmF5QnVmZmVyKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IGFycmF5QnVmZmVyLmNvbnN0cnVjdG9yKGFycmF5QnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgICAgbmV3IFVpbnQ4QXJyYXkocmVzdWx0KS5zZXQobmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIGBkYXRhVmlld2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhVmlldyBUaGUgZGF0YSB2aWV3IHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIGRhdGEgdmlldy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZURhdGFWaWV3KGRhdGFWaWV3LCBpc0RlZXApIHtcbiAgICAgIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKGRhdGFWaWV3LmJ1ZmZlcikgOiBkYXRhVmlldy5idWZmZXI7XG4gICAgICByZXR1cm4gbmV3IGRhdGFWaWV3LmNvbnN0cnVjdG9yKGJ1ZmZlciwgZGF0YVZpZXcuYnl0ZU9mZnNldCwgZGF0YVZpZXcuYnl0ZUxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIGByZWdleHBgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gcmVnZXhwIFRoZSByZWdleHAgdG8gY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHJlZ2V4cC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZVJlZ0V4cChyZWdleHApIHtcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgcmVnZXhwLmNvbnN0cnVjdG9yKHJlZ2V4cC5zb3VyY2UsIHJlRmxhZ3MuZXhlYyhyZWdleHApKTtcbiAgICAgIHJlc3VsdC5sYXN0SW5kZXggPSByZWdleHAubGFzdEluZGV4O1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgdGhlIGBzeW1ib2xgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHN5bWJvbCBUaGUgc3ltYm9sIG9iamVjdCB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgc3ltYm9sIG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZVN5bWJvbChzeW1ib2wpIHtcbiAgICAgIHJldHVybiBzeW1ib2xWYWx1ZU9mID8gT2JqZWN0KHN5bWJvbFZhbHVlT2YuY2FsbChzeW1ib2wpKSA6IHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgdHlwZWRBcnJheWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSB0eXBlZEFycmF5IFRoZSB0eXBlZCBhcnJheSB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCB0eXBlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZVR5cGVkQXJyYXkodHlwZWRBcnJheSwgaXNEZWVwKSB7XG4gICAgICB2YXIgYnVmZmVyID0gaXNEZWVwID8gY2xvbmVBcnJheUJ1ZmZlcih0eXBlZEFycmF5LmJ1ZmZlcikgOiB0eXBlZEFycmF5LmJ1ZmZlcjtcbiAgICAgIHJldHVybiBuZXcgdHlwZWRBcnJheS5jb25zdHJ1Y3RvcihidWZmZXIsIHR5cGVkQXJyYXkuYnl0ZU9mZnNldCwgdHlwZWRBcnJheS5sZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXBhcmVzIHZhbHVlcyB0byBzb3J0IHRoZW0gaW4gYXNjZW5kaW5nIG9yZGVyLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc29ydCBvcmRlciBpbmRpY2F0b3IgZm9yIGB2YWx1ZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29tcGFyZUFzY2VuZGluZyh2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIGlmICh2YWx1ZSAhPT0gb3RoZXIpIHtcbiAgICAgICAgdmFyIHZhbElzRGVmaW5lZCA9IHZhbHVlICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgICB2YWxJc051bGwgPSB2YWx1ZSA9PT0gbnVsbCxcbiAgICAgICAgICAgIHZhbElzUmVmbGV4aXZlID0gdmFsdWUgPT09IHZhbHVlLFxuICAgICAgICAgICAgdmFsSXNTeW1ib2wgPSBpc1N5bWJvbCh2YWx1ZSk7XG5cbiAgICAgICAgdmFyIG90aElzRGVmaW5lZCA9IG90aGVyICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgICBvdGhJc051bGwgPSBvdGhlciA9PT0gbnVsbCxcbiAgICAgICAgICAgIG90aElzUmVmbGV4aXZlID0gb3RoZXIgPT09IG90aGVyLFxuICAgICAgICAgICAgb3RoSXNTeW1ib2wgPSBpc1N5bWJvbChvdGhlcik7XG5cbiAgICAgICAgaWYgKCghb3RoSXNOdWxsICYmICFvdGhJc1N5bWJvbCAmJiAhdmFsSXNTeW1ib2wgJiYgdmFsdWUgPiBvdGhlcikgfHxcbiAgICAgICAgICAgICh2YWxJc1N5bWJvbCAmJiBvdGhJc0RlZmluZWQgJiYgb3RoSXNSZWZsZXhpdmUgJiYgIW90aElzTnVsbCAmJiAhb3RoSXNTeW1ib2wpIHx8XG4gICAgICAgICAgICAodmFsSXNOdWxsICYmIG90aElzRGVmaW5lZCAmJiBvdGhJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgICAgICghdmFsSXNEZWZpbmVkICYmIG90aElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAgICAgIXZhbElzUmVmbGV4aXZlKSB7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCghdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCAmJiAhb3RoSXNTeW1ib2wgJiYgdmFsdWUgPCBvdGhlcikgfHxcbiAgICAgICAgICAgIChvdGhJc1N5bWJvbCAmJiB2YWxJc0RlZmluZWQgJiYgdmFsSXNSZWZsZXhpdmUgJiYgIXZhbElzTnVsbCAmJiAhdmFsSXNTeW1ib2wpIHx8XG4gICAgICAgICAgICAob3RoSXNOdWxsICYmIHZhbElzRGVmaW5lZCAmJiB2YWxJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgICAgICghb3RoSXNEZWZpbmVkICYmIHZhbElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAgICAgIW90aElzUmVmbGV4aXZlKSB7XG4gICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIGJ5IGBfLm9yZGVyQnlgIHRvIGNvbXBhcmUgbXVsdGlwbGUgcHJvcGVydGllcyBvZiBhIHZhbHVlIHRvIGFub3RoZXJcbiAgICAgKiBhbmQgc3RhYmxlIHNvcnQgdGhlbS5cbiAgICAgKlxuICAgICAqIElmIGBvcmRlcnNgIGlzIHVuc3BlY2lmaWVkLCBhbGwgdmFsdWVzIGFyZSBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyLiBPdGhlcndpc2UsXG4gICAgICogc3BlY2lmeSBhbiBvcmRlciBvZiBcImRlc2NcIiBmb3IgZGVzY2VuZGluZyBvciBcImFzY1wiIGZvciBhc2NlbmRpbmcgc29ydCBvcmRlclxuICAgICAqIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbltdfHN0cmluZ1tdfSBvcmRlcnMgVGhlIG9yZGVyIHRvIHNvcnQgYnkgZm9yIGVhY2ggcHJvcGVydHkuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc29ydCBvcmRlciBpbmRpY2F0b3IgZm9yIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbXBhcmVNdWx0aXBsZShvYmplY3QsIG90aGVyLCBvcmRlcnMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIG9iakNyaXRlcmlhID0gb2JqZWN0LmNyaXRlcmlhLFxuICAgICAgICAgIG90aENyaXRlcmlhID0gb3RoZXIuY3JpdGVyaWEsXG4gICAgICAgICAgbGVuZ3RoID0gb2JqQ3JpdGVyaWEubGVuZ3RoLFxuICAgICAgICAgIG9yZGVyc0xlbmd0aCA9IG9yZGVycy5sZW5ndGg7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBjb21wYXJlQXNjZW5kaW5nKG9iakNyaXRlcmlhW2luZGV4XSwgb3RoQ3JpdGVyaWFbaW5kZXhdKTtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIGlmIChpbmRleCA+PSBvcmRlcnNMZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBvcmRlciA9IG9yZGVyc1tpbmRleF07XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdCAqIChvcmRlciA9PSAnZGVzYycgPyAtMSA6IDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBGaXhlcyBhbiBgQXJyYXkjc29ydGAgYnVnIGluIHRoZSBKUyBlbmdpbmUgZW1iZWRkZWQgaW4gQWRvYmUgYXBwbGljYXRpb25zXG4gICAgICAvLyB0aGF0IGNhdXNlcyBpdCwgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLCB0byBwcm92aWRlIHRoZSBzYW1lIHZhbHVlIGZvclxuICAgICAgLy8gYG9iamVjdGAgYW5kIGBvdGhlcmAuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vamFzaGtlbmFzL3VuZGVyc2NvcmUvcHVsbC8xMjQ3XG4gICAgICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgLy9cbiAgICAgIC8vIFRoaXMgYWxzbyBlbnN1cmVzIGEgc3RhYmxlIHNvcnQgaW4gVjggYW5kIG90aGVyIGVuZ2luZXMuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9OTAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIHJldHVybiBvYmplY3QuaW5kZXggLSBvdGhlci5pbmRleDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IHRoYXQgaXMgdGhlIGNvbXBvc2l0aW9uIG9mIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cyxcbiAgICAgKiBwbGFjZWhvbGRlcnMsIGFuZCBwcm92aWRlZCBhcmd1bWVudHMgaW50byBhIHNpbmdsZSBhcnJheSBvZiBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYXJ0aWFscyBUaGUgYXJndW1lbnRzIHRvIHByZXBlbmQgdG8gdGhvc2UgcHJvdmlkZWQuXG4gICAgICogQHBhcmFtIHtBcnJheX0gaG9sZGVycyBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAqIEBwYXJhbXMge2Jvb2xlYW59IFtpc0N1cnJpZWRdIFNwZWNpZnkgY29tcG9zaW5nIGZvciBhIGN1cnJpZWQgZnVuY3Rpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tcG9zZWQgYXJndW1lbnRzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbXBvc2VBcmdzKGFyZ3MsIHBhcnRpYWxzLCBob2xkZXJzLCBpc0N1cnJpZWQpIHtcbiAgICAgIHZhciBhcmdzSW5kZXggPSAtMSxcbiAgICAgICAgICBhcmdzTGVuZ3RoID0gYXJncy5sZW5ndGgsXG4gICAgICAgICAgaG9sZGVyc0xlbmd0aCA9IGhvbGRlcnMubGVuZ3RoLFxuICAgICAgICAgIGxlZnRJbmRleCA9IC0xLFxuICAgICAgICAgIGxlZnRMZW5ndGggPSBwYXJ0aWFscy5sZW5ndGgsXG4gICAgICAgICAgcmFuZ2VMZW5ndGggPSBuYXRpdmVNYXgoYXJnc0xlbmd0aCAtIGhvbGRlcnNMZW5ndGgsIDApLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KGxlZnRMZW5ndGggKyByYW5nZUxlbmd0aCksXG4gICAgICAgICAgaXNVbmN1cnJpZWQgPSAhaXNDdXJyaWVkO1xuXG4gICAgICB3aGlsZSAoKytsZWZ0SW5kZXggPCBsZWZ0TGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtsZWZ0SW5kZXhdID0gcGFydGlhbHNbbGVmdEluZGV4XTtcbiAgICAgIH1cbiAgICAgIHdoaWxlICgrK2FyZ3NJbmRleCA8IGhvbGRlcnNMZW5ndGgpIHtcbiAgICAgICAgaWYgKGlzVW5jdXJyaWVkIHx8IGFyZ3NJbmRleCA8IGFyZ3NMZW5ndGgpIHtcbiAgICAgICAgICByZXN1bHRbaG9sZGVyc1thcmdzSW5kZXhdXSA9IGFyZ3NbYXJnc0luZGV4XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgd2hpbGUgKHJhbmdlTGVuZ3RoLS0pIHtcbiAgICAgICAgcmVzdWx0W2xlZnRJbmRleCsrXSA9IGFyZ3NbYXJnc0luZGV4KytdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGNvbXBvc2VBcmdzYCBleGNlcHQgdGhhdCB0aGUgYXJndW1lbnRzIGNvbXBvc2l0aW9uXG4gICAgICogaXMgdGFpbG9yZWQgZm9yIGBfLnBhcnRpYWxSaWdodGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYXJ0aWFscyBUaGUgYXJndW1lbnRzIHRvIGFwcGVuZCB0byB0aG9zZSBwcm92aWRlZC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBob2xkZXJzIFRoZSBgcGFydGlhbHNgIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAgICogQHBhcmFtcyB7Ym9vbGVhbn0gW2lzQ3VycmllZF0gU3BlY2lmeSBjb21wb3NpbmcgZm9yIGEgY3VycmllZCBmdW5jdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21wb3NlZCBhcmd1bWVudHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29tcG9zZUFyZ3NSaWdodChhcmdzLCBwYXJ0aWFscywgaG9sZGVycywgaXNDdXJyaWVkKSB7XG4gICAgICB2YXIgYXJnc0luZGV4ID0gLTEsXG4gICAgICAgICAgYXJnc0xlbmd0aCA9IGFyZ3MubGVuZ3RoLFxuICAgICAgICAgIGhvbGRlcnNJbmRleCA9IC0xLFxuICAgICAgICAgIGhvbGRlcnNMZW5ndGggPSBob2xkZXJzLmxlbmd0aCxcbiAgICAgICAgICByaWdodEluZGV4ID0gLTEsXG4gICAgICAgICAgcmlnaHRMZW5ndGggPSBwYXJ0aWFscy5sZW5ndGgsXG4gICAgICAgICAgcmFuZ2VMZW5ndGggPSBuYXRpdmVNYXgoYXJnc0xlbmd0aCAtIGhvbGRlcnNMZW5ndGgsIDApLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KHJhbmdlTGVuZ3RoICsgcmlnaHRMZW5ndGgpLFxuICAgICAgICAgIGlzVW5jdXJyaWVkID0gIWlzQ3VycmllZDtcblxuICAgICAgd2hpbGUgKCsrYXJnc0luZGV4IDwgcmFuZ2VMZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0W2FyZ3NJbmRleF0gPSBhcmdzW2FyZ3NJbmRleF07XG4gICAgICB9XG4gICAgICB2YXIgb2Zmc2V0ID0gYXJnc0luZGV4O1xuICAgICAgd2hpbGUgKCsrcmlnaHRJbmRleCA8IHJpZ2h0TGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtvZmZzZXQgKyByaWdodEluZGV4XSA9IHBhcnRpYWxzW3JpZ2h0SW5kZXhdO1xuICAgICAgfVxuICAgICAgd2hpbGUgKCsraG9sZGVyc0luZGV4IDwgaG9sZGVyc0xlbmd0aCkge1xuICAgICAgICBpZiAoaXNVbmN1cnJpZWQgfHwgYXJnc0luZGV4IDwgYXJnc0xlbmd0aCkge1xuICAgICAgICAgIHJlc3VsdFtvZmZzZXQgKyBob2xkZXJzW2hvbGRlcnNJbmRleF1dID0gYXJnc1thcmdzSW5kZXgrK107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29waWVzIHRoZSB2YWx1ZXMgb2YgYHNvdXJjZWAgdG8gYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gc291cmNlIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyBmcm9tLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheT1bXV0gVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIHRvLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvcHlBcnJheShzb3VyY2UsIGFycmF5KSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBzb3VyY2UubGVuZ3RoO1xuXG4gICAgICBhcnJheSB8fCAoYXJyYXkgPSBBcnJheShsZW5ndGgpKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIGFycmF5W2luZGV4XSA9IHNvdXJjZVtpbmRleF07XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29waWVzIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMgdG8gY29weS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgdG8uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29waWVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvcHlPYmplY3Qoc291cmNlLCBwcm9wcywgb2JqZWN0LCBjdXN0b21pemVyKSB7XG4gICAgICB2YXIgaXNOZXcgPSAhb2JqZWN0O1xuICAgICAgb2JqZWN0IHx8IChvYmplY3QgPSB7fSk7XG5cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGtleSA9IHByb3BzW2luZGV4XTtcblxuICAgICAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICAgICAgPyBjdXN0b21pemVyKG9iamVjdFtrZXldLCBzb3VyY2Vba2V5XSwga2V5LCBvYmplY3QsIHNvdXJjZSlcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG5ld1ZhbHVlID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTmV3KSB7XG4gICAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3BpZXMgb3duIHN5bWJvbHMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgZnJvbS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgdG8uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb3B5U3ltYm9scyhzb3VyY2UsIG9iamVjdCkge1xuICAgICAgcmV0dXJuIGNvcHlPYmplY3Qoc291cmNlLCBnZXRTeW1ib2xzKHNvdXJjZSksIG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29waWVzIG93biBhbmQgaW5oZXJpdGVkIHN5bWJvbHMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgZnJvbS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgdG8uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb3B5U3ltYm9sc0luKHNvdXJjZSwgb2JqZWN0KSB7XG4gICAgICByZXR1cm4gY29weU9iamVjdChzb3VyY2UsIGdldFN5bWJvbHNJbihzb3VyY2UpLCBvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmdyb3VwQnlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBhY2N1bXVsYXRvciB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2luaXRpYWxpemVyXSBUaGUgYWNjdW11bGF0b3Igb2JqZWN0IGluaXRpYWxpemVyLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFnZ3JlZ2F0b3IgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQWdncmVnYXRvcihzZXR0ZXIsIGluaXRpYWxpemVyKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlBZ2dyZWdhdG9yIDogYmFzZUFnZ3JlZ2F0b3IsXG4gICAgICAgICAgICBhY2N1bXVsYXRvciA9IGluaXRpYWxpemVyID8gaW5pdGlhbGl6ZXIoKSA6IHt9O1xuXG4gICAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIHNldHRlciwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpLCBhY2N1bXVsYXRvcik7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmFzc2lnbmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbmVyIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFzc2lnbmVyIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUFzc2lnbmVyKGFzc2lnbmVyKSB7XG4gICAgICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2VzKSB7XG4gICAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgICAgbGVuZ3RoID0gc291cmNlcy5sZW5ndGgsXG4gICAgICAgICAgICBjdXN0b21pemVyID0gbGVuZ3RoID4gMSA/IHNvdXJjZXNbbGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBndWFyZCA9IGxlbmd0aCA+IDIgPyBzb3VyY2VzWzJdIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGN1c3RvbWl6ZXIgPSAoYXNzaWduZXIubGVuZ3RoID4gMyAmJiB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nKVxuICAgICAgICAgID8gKGxlbmd0aC0tLCBjdXN0b21pemVyKVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzb3VyY2VzWzBdLCBzb3VyY2VzWzFdLCBndWFyZCkpIHtcbiAgICAgICAgICBjdXN0b21pemVyID0gbGVuZ3RoIDwgMyA/IHVuZGVmaW5lZCA6IGN1c3RvbWl6ZXI7XG4gICAgICAgICAgbGVuZ3RoID0gMTtcbiAgICAgICAgfVxuICAgICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICB2YXIgc291cmNlID0gc291cmNlc1tpbmRleF07XG4gICAgICAgICAgaWYgKHNvdXJjZSkge1xuICAgICAgICAgICAgYXNzaWduZXIob2JqZWN0LCBzb3VyY2UsIGluZGV4LCBjdXN0b21pemVyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgYmFzZUVhY2hgIG9yIGBiYXNlRWFjaFJpZ2h0YCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZWFjaEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGl0ZXJhdGUgb3ZlciBhIGNvbGxlY3Rpb24uXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYmFzZSBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVCYXNlRWFjaChlYWNoRnVuYywgZnJvbVJpZ2h0KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgICAgaWYgKGNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNBcnJheUxpa2UoY29sbGVjdGlvbikpIHtcbiAgICAgICAgICByZXR1cm4gZWFjaEZ1bmMoY29sbGVjdGlvbiwgaXRlcmF0ZWUpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aCxcbiAgICAgICAgICAgIGluZGV4ID0gZnJvbVJpZ2h0ID8gbGVuZ3RoIDogLTEsXG4gICAgICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChjb2xsZWN0aW9uKTtcblxuICAgICAgICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkge1xuICAgICAgICAgIGlmIChpdGVyYXRlZShpdGVyYWJsZVtpbmRleF0sIGluZGV4LCBpdGVyYWJsZSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBiYXNlIGZ1bmN0aW9uIGZvciBtZXRob2RzIGxpa2UgYF8uZm9ySW5gIGFuZCBgXy5mb3JPd25gLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBiYXNlIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUJhc2VGb3IoZnJvbVJpZ2h0KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0LCBpdGVyYXRlZSwga2V5c0Z1bmMpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChvYmplY3QpLFxuICAgICAgICAgICAgcHJvcHMgPSBrZXlzRnVuYyhvYmplY3QpLFxuICAgICAgICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICAgIHZhciBrZXkgPSBwcm9wc1tmcm9tUmlnaHQgPyBsZW5ndGggOiArK2luZGV4XTtcbiAgICAgICAgICBpZiAoaXRlcmF0ZWUoaXRlcmFibGVba2V5XSwga2V5LCBpdGVyYWJsZSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIHRvIGludm9rZSBpdCB3aXRoIHRoZSBvcHRpb25hbCBgdGhpc2BcbiAgICAgKiBiaW5kaW5nIG9mIGB0aGlzQXJnYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7Kn0gW3RoaXNBcmddIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVCaW5kKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcpIHtcbiAgICAgIHZhciBpc0JpbmQgPSBiaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcsXG4gICAgICAgICAgQ3RvciA9IGNyZWF0ZUN0b3IoZnVuYyk7XG5cbiAgICAgIGZ1bmN0aW9uIHdyYXBwZXIoKSB7XG4gICAgICAgIHZhciBmbiA9ICh0aGlzICYmIHRoaXMgIT09IHJvb3QgJiYgdGhpcyBpbnN0YW5jZW9mIHdyYXBwZXIpID8gQ3RvciA6IGZ1bmM7XG4gICAgICAgIHJldHVybiBmbi5hcHBseShpc0JpbmQgPyB0aGlzQXJnIDogdGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB3cmFwcGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmxvd2VyRmlyc3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kTmFtZSBUaGUgbmFtZSBvZiB0aGUgYFN0cmluZ2AgY2FzZSBtZXRob2QgdG8gdXNlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhc2UgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQ2FzZUZpcnN0KG1ldGhvZE5hbWUpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcblxuICAgICAgICB2YXIgc3RyU3ltYm9scyA9IGhhc1VuaWNvZGUoc3RyaW5nKVxuICAgICAgICAgID8gc3RyaW5nVG9BcnJheShzdHJpbmcpXG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgdmFyIGNociA9IHN0clN5bWJvbHNcbiAgICAgICAgICA/IHN0clN5bWJvbHNbMF1cbiAgICAgICAgICA6IHN0cmluZy5jaGFyQXQoMCk7XG5cbiAgICAgICAgdmFyIHRyYWlsaW5nID0gc3RyU3ltYm9sc1xuICAgICAgICAgID8gY2FzdFNsaWNlKHN0clN5bWJvbHMsIDEpLmpvaW4oJycpXG4gICAgICAgICAgOiBzdHJpbmcuc2xpY2UoMSk7XG5cbiAgICAgICAgcmV0dXJuIGNoclttZXRob2ROYW1lXSgpICsgdHJhaWxpbmc7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmNhbWVsQ2FzZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0byBjb21iaW5lIGVhY2ggd29yZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb21wb3VuZGVyIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUNvbXBvdW5kZXIoY2FsbGJhY2spIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGFycmF5UmVkdWNlKHdvcmRzKGRlYnVycihzdHJpbmcpLnJlcGxhY2UocmVBcG9zLCAnJykpLCBjYWxsYmFjaywgJycpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwcm9kdWNlcyBhbiBpbnN0YW5jZSBvZiBgQ3RvcmAgcmVnYXJkbGVzcyBvZlxuICAgICAqIHdoZXRoZXIgaXQgd2FzIGludm9rZWQgYXMgcGFydCBvZiBhIGBuZXdgIGV4cHJlc3Npb24gb3IgYnkgYGNhbGxgIG9yIGBhcHBseWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IEN0b3IgVGhlIGNvbnN0cnVjdG9yIHRvIHdyYXAuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVDdG9yKEN0b3IpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgLy8gVXNlIGEgYHN3aXRjaGAgc3RhdGVtZW50IHRvIHdvcmsgd2l0aCBjbGFzcyBjb25zdHJ1Y3RvcnMuIFNlZVxuICAgICAgICAvLyBodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1lY21hc2NyaXB0LWZ1bmN0aW9uLW9iamVjdHMtY2FsbC10aGlzYXJndW1lbnQtYXJndW1lbnRzbGlzdFxuICAgICAgICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBDdG9yO1xuICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0pO1xuICAgICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgICAgICAgIGNhc2UgNDogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10pO1xuICAgICAgICAgIGNhc2UgNTogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10sIGFyZ3NbNF0pO1xuICAgICAgICAgIGNhc2UgNjogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10sIGFyZ3NbNF0sIGFyZ3NbNV0pO1xuICAgICAgICAgIGNhc2UgNzogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10sIGFyZ3NbNF0sIGFyZ3NbNV0sIGFyZ3NbNl0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0aGlzQmluZGluZyA9IGJhc2VDcmVhdGUoQ3Rvci5wcm90b3R5cGUpLFxuICAgICAgICAgICAgcmVzdWx0ID0gQ3Rvci5hcHBseSh0aGlzQmluZGluZywgYXJncyk7XG5cbiAgICAgICAgLy8gTWltaWMgdGhlIGNvbnN0cnVjdG9yJ3MgYHJldHVybmAgYmVoYXZpb3IuXG4gICAgICAgIC8vIFNlZSBodHRwczovL2VzNS5naXRodWIuaW8vI3gxMy4yLjIgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgICAgcmV0dXJuIGlzT2JqZWN0KHJlc3VsdCkgPyByZXN1bHQgOiB0aGlzQmluZGluZztcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIHRvIGVuYWJsZSBjdXJyeWluZy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBhcml0eSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQ3VycnkoZnVuYywgYml0bWFzaywgYXJpdHkpIHtcbiAgICAgIHZhciBDdG9yID0gY3JlYXRlQ3RvcihmdW5jKTtcblxuICAgICAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICAgICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsXG4gICAgICAgICAgICBhcmdzID0gQXJyYXkobGVuZ3RoKSxcbiAgICAgICAgICAgIGluZGV4ID0gbGVuZ3RoLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXIgPSBnZXRIb2xkZXIod3JhcHBlcik7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgICBhcmdzW2luZGV4XSA9IGFyZ3VtZW50c1tpbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGhvbGRlcnMgPSAobGVuZ3RoIDwgMyAmJiBhcmdzWzBdICE9PSBwbGFjZWhvbGRlciAmJiBhcmdzW2xlbmd0aCAtIDFdICE9PSBwbGFjZWhvbGRlcilcbiAgICAgICAgICA/IFtdXG4gICAgICAgICAgOiByZXBsYWNlSG9sZGVycyhhcmdzLCBwbGFjZWhvbGRlcik7XG5cbiAgICAgICAgbGVuZ3RoIC09IGhvbGRlcnMubGVuZ3RoO1xuICAgICAgICBpZiAobGVuZ3RoIDwgYXJpdHkpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlUmVjdXJyeShcbiAgICAgICAgICAgIGZ1bmMsIGJpdG1hc2ssIGNyZWF0ZUh5YnJpZCwgd3JhcHBlci5wbGFjZWhvbGRlciwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgYXJncywgaG9sZGVycywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGFyaXR5IC0gbGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZm4gPSAodGhpcyAmJiB0aGlzICE9PSByb290ICYmIHRoaXMgaW5zdGFuY2VvZiB3cmFwcGVyKSA/IEN0b3IgOiBmdW5jO1xuICAgICAgICByZXR1cm4gYXBwbHkoZm4sIHRoaXMsIGFyZ3MpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBfLmZpbmRgIG9yIGBfLmZpbmRMYXN0YCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZmluZEluZGV4RnVuYyBUaGUgZnVuY3Rpb24gdG8gZmluZCB0aGUgY29sbGVjdGlvbiBpbmRleC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmaW5kIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUZpbmQoZmluZEluZGV4RnVuYykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZnJvbUluZGV4KSB7XG4gICAgICAgIHZhciBpdGVyYWJsZSA9IE9iamVjdChjb2xsZWN0aW9uKTtcbiAgICAgICAgaWYgKCFpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgICAgICAgIHZhciBpdGVyYXRlZSA9IGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyk7XG4gICAgICAgICAgY29sbGVjdGlvbiA9IGtleXMoY29sbGVjdGlvbik7XG4gICAgICAgICAgcHJlZGljYXRlID0gZnVuY3Rpb24oa2V5KSB7IHJldHVybiBpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKTsgfTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaW5kZXggPSBmaW5kSW5kZXhGdW5jKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZnJvbUluZGV4KTtcbiAgICAgICAgcmV0dXJuIGluZGV4ID4gLTEgPyBpdGVyYWJsZVtpdGVyYXRlZSA/IGNvbGxlY3Rpb25baW5kZXhdIDogaW5kZXhdIDogdW5kZWZpbmVkO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYF8uZmxvd2Agb3IgYF8uZmxvd1JpZ2h0YCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZmxvdyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVGbG93KGZyb21SaWdodCkge1xuICAgICAgcmV0dXJuIGZsYXRSZXN0KGZ1bmN0aW9uKGZ1bmNzKSB7XG4gICAgICAgIHZhciBsZW5ndGggPSBmdW5jcy5sZW5ndGgsXG4gICAgICAgICAgICBpbmRleCA9IGxlbmd0aCxcbiAgICAgICAgICAgIHByZXJlcSA9IExvZGFzaFdyYXBwZXIucHJvdG90eXBlLnRocnU7XG5cbiAgICAgICAgaWYgKGZyb21SaWdodCkge1xuICAgICAgICAgIGZ1bmNzLnJldmVyc2UoKTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICAgIHZhciBmdW5jID0gZnVuY3NbaW5kZXhdO1xuICAgICAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwcmVyZXEgJiYgIXdyYXBwZXIgJiYgZ2V0RnVuY05hbWUoZnVuYykgPT0gJ3dyYXBwZXInKSB7XG4gICAgICAgICAgICB2YXIgd3JhcHBlciA9IG5ldyBMb2Rhc2hXcmFwcGVyKFtdLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaW5kZXggPSB3cmFwcGVyID8gaW5kZXggOiBsZW5ndGg7XG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgZnVuYyA9IGZ1bmNzW2luZGV4XTtcblxuICAgICAgICAgIHZhciBmdW5jTmFtZSA9IGdldEZ1bmNOYW1lKGZ1bmMpLFxuICAgICAgICAgICAgICBkYXRhID0gZnVuY05hbWUgPT0gJ3dyYXBwZXInID8gZ2V0RGF0YShmdW5jKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgIGlmIChkYXRhICYmIGlzTGF6aWFibGUoZGF0YVswXSkgJiZcbiAgICAgICAgICAgICAgICBkYXRhWzFdID09IChXUkFQX0FSWV9GTEFHIHwgV1JBUF9DVVJSWV9GTEFHIHwgV1JBUF9QQVJUSUFMX0ZMQUcgfCBXUkFQX1JFQVJHX0ZMQUcpICYmXG4gICAgICAgICAgICAgICAgIWRhdGFbNF0ubGVuZ3RoICYmIGRhdGFbOV0gPT0gMVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgIHdyYXBwZXIgPSB3cmFwcGVyW2dldEZ1bmNOYW1lKGRhdGFbMF0pXS5hcHBseSh3cmFwcGVyLCBkYXRhWzNdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgd3JhcHBlciA9IChmdW5jLmxlbmd0aCA9PSAxICYmIGlzTGF6aWFibGUoZnVuYykpXG4gICAgICAgICAgICAgID8gd3JhcHBlcltmdW5jTmFtZV0oKVxuICAgICAgICAgICAgICA6IHdyYXBwZXIudGhydShmdW5jKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICAgICAgICB2YWx1ZSA9IGFyZ3NbMF07XG5cbiAgICAgICAgICBpZiAod3JhcHBlciAmJiBhcmdzLmxlbmd0aCA9PSAxICYmIGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcHBlci5wbGFudCh2YWx1ZSkudmFsdWUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIGluZGV4ID0gMCxcbiAgICAgICAgICAgICAgcmVzdWx0ID0gbGVuZ3RoID8gZnVuY3NbaW5kZXhdLmFwcGx5KHRoaXMsIGFyZ3MpIDogdmFsdWU7XG5cbiAgICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gZnVuY3NbaW5kZXhdLmNhbGwodGhpcywgcmVzdWx0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHdyYXBzIGBmdW5jYCB0byBpbnZva2UgaXQgd2l0aCBvcHRpb25hbCBgdGhpc2BcbiAgICAgKiBiaW5kaW5nIG9mIGB0aGlzQXJnYCwgcGFydGlhbCBhcHBsaWNhdGlvbiwgYW5kIGN1cnJ5aW5nLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufHN0cmluZ30gZnVuYyBUaGUgZnVuY3Rpb24gb3IgbWV0aG9kIG5hbWUgdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7Kn0gW3RoaXNBcmddIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIHByZXBlbmQgdG8gdGhvc2UgcHJvdmlkZWQgdG9cbiAgICAgKiAgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbaG9sZGVyc10gVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbcGFydGlhbHNSaWdodF0gVGhlIGFyZ3VtZW50cyB0byBhcHBlbmQgdG8gdGhvc2UgcHJvdmlkZWRcbiAgICAgKiAgdG8gdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbaG9sZGVyc1JpZ2h0XSBUaGUgYHBhcnRpYWxzUmlnaHRgIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2FyZ1Bvc10gVGhlIGFyZ3VtZW50IHBvc2l0aW9ucyBvZiB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJ5XSBUaGUgYXJpdHkgY2FwIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5XSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlSHlicmlkKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzLCBob2xkZXJzLCBwYXJ0aWFsc1JpZ2h0LCBob2xkZXJzUmlnaHQsIGFyZ1BvcywgYXJ5LCBhcml0eSkge1xuICAgICAgdmFyIGlzQXJ5ID0gYml0bWFzayAmIFdSQVBfQVJZX0ZMQUcsXG4gICAgICAgICAgaXNCaW5kID0gYml0bWFzayAmIFdSQVBfQklORF9GTEFHLFxuICAgICAgICAgIGlzQmluZEtleSA9IGJpdG1hc2sgJiBXUkFQX0JJTkRfS0VZX0ZMQUcsXG4gICAgICAgICAgaXNDdXJyaWVkID0gYml0bWFzayAmIChXUkFQX0NVUlJZX0ZMQUcgfCBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcpLFxuICAgICAgICAgIGlzRmxpcCA9IGJpdG1hc2sgJiBXUkFQX0ZMSVBfRkxBRyxcbiAgICAgICAgICBDdG9yID0gaXNCaW5kS2V5ID8gdW5kZWZpbmVkIDogY3JlYXRlQ3RvcihmdW5jKTtcblxuICAgICAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICAgICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsXG4gICAgICAgICAgICBhcmdzID0gQXJyYXkobGVuZ3RoKSxcbiAgICAgICAgICAgIGluZGV4ID0gbGVuZ3RoO1xuXG4gICAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgICAgYXJnc1tpbmRleF0gPSBhcmd1bWVudHNbaW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0N1cnJpZWQpIHtcbiAgICAgICAgICB2YXIgcGxhY2Vob2xkZXIgPSBnZXRIb2xkZXIod3JhcHBlciksXG4gICAgICAgICAgICAgIGhvbGRlcnNDb3VudCA9IGNvdW50SG9sZGVycyhhcmdzLCBwbGFjZWhvbGRlcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnRpYWxzKSB7XG4gICAgICAgICAgYXJncyA9IGNvbXBvc2VBcmdzKGFyZ3MsIHBhcnRpYWxzLCBob2xkZXJzLCBpc0N1cnJpZWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJ0aWFsc1JpZ2h0KSB7XG4gICAgICAgICAgYXJncyA9IGNvbXBvc2VBcmdzUmlnaHQoYXJncywgcGFydGlhbHNSaWdodCwgaG9sZGVyc1JpZ2h0LCBpc0N1cnJpZWQpO1xuICAgICAgICB9XG4gICAgICAgIGxlbmd0aCAtPSBob2xkZXJzQ291bnQ7XG4gICAgICAgIGlmIChpc0N1cnJpZWQgJiYgbGVuZ3RoIDwgYXJpdHkpIHtcbiAgICAgICAgICB2YXIgbmV3SG9sZGVycyA9IHJlcGxhY2VIb2xkZXJzKGFyZ3MsIHBsYWNlaG9sZGVyKTtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlUmVjdXJyeShcbiAgICAgICAgICAgIGZ1bmMsIGJpdG1hc2ssIGNyZWF0ZUh5YnJpZCwgd3JhcHBlci5wbGFjZWhvbGRlciwgdGhpc0FyZyxcbiAgICAgICAgICAgIGFyZ3MsIG5ld0hvbGRlcnMsIGFyZ1BvcywgYXJ5LCBhcml0eSAtIGxlbmd0aFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRoaXNCaW5kaW5nID0gaXNCaW5kID8gdGhpc0FyZyA6IHRoaXMsXG4gICAgICAgICAgICBmbiA9IGlzQmluZEtleSA/IHRoaXNCaW5kaW5nW2Z1bmNdIDogZnVuYztcblxuICAgICAgICBsZW5ndGggPSBhcmdzLmxlbmd0aDtcbiAgICAgICAgaWYgKGFyZ1Bvcykge1xuICAgICAgICAgIGFyZ3MgPSByZW9yZGVyKGFyZ3MsIGFyZ1Bvcyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNGbGlwICYmIGxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBhcmdzLnJldmVyc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNBcnkgJiYgYXJ5IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgYXJncy5sZW5ndGggPSBhcnk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMgJiYgdGhpcyAhPT0gcm9vdCAmJiB0aGlzIGluc3RhbmNlb2Ygd3JhcHBlcikge1xuICAgICAgICAgIGZuID0gQ3RvciB8fCBjcmVhdGVDdG9yKGZuKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm4uYXBwbHkodGhpc0JpbmRpbmcsIGFyZ3MpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uaW52ZXJ0QnlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBhY2N1bXVsYXRvciB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gdG9JdGVyYXRlZSBUaGUgZnVuY3Rpb24gdG8gcmVzb2x2ZSBpdGVyYXRlZXMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgaW52ZXJ0ZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlSW52ZXJ0ZXIoc2V0dGVyLCB0b0l0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgICByZXR1cm4gYmFzZUludmVydGVyKG9iamVjdCwgc2V0dGVyLCB0b0l0ZXJhdGVlKGl0ZXJhdGVlKSwge30pO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhIG1hdGhlbWF0aWNhbCBvcGVyYXRpb24gb24gdHdvIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3BlcmF0b3IgVGhlIGZ1bmN0aW9uIHRvIHBlcmZvcm0gdGhlIG9wZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RlZmF1bHRWYWx1ZV0gVGhlIHZhbHVlIHVzZWQgZm9yIGB1bmRlZmluZWRgIGFyZ3VtZW50cy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtYXRoZW1hdGljYWwgb3BlcmF0aW9uIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZU1hdGhPcGVyYXRpb24ob3BlcmF0b3IsIGRlZmF1bHRWYWx1ZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlLCBvdGhlcikge1xuICAgICAgICB2YXIgcmVzdWx0O1xuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiBvdGhlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvdGhlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gb3RoZXI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgdHlwZW9mIG90aGVyID09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGJhc2VUb1N0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICBvdGhlciA9IGJhc2VUb1N0cmluZyhvdGhlcik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbHVlID0gYmFzZVRvTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgICAgIG90aGVyID0gYmFzZVRvTnVtYmVyKG90aGVyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0ID0gb3BlcmF0b3IodmFsdWUsIG90aGVyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5vdmVyYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gYXJyYXlGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgaXRlcmF0ZWVzLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG92ZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlT3ZlcihhcnJheUZ1bmMpIHtcbiAgICAgIHJldHVybiBmbGF0UmVzdChmdW5jdGlvbihpdGVyYXRlZXMpIHtcbiAgICAgICAgaXRlcmF0ZWVzID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBiYXNlVW5hcnkoZ2V0SXRlcmF0ZWUoKSkpO1xuICAgICAgICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICAgICAgICAgIHZhciB0aGlzQXJnID0gdGhpcztcbiAgICAgICAgICByZXR1cm4gYXJyYXlGdW5jKGl0ZXJhdGVlcywgZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgICAgICAgIHJldHVybiBhcHBseShpdGVyYXRlZSwgdGhpc0FyZywgYXJncyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyB0aGUgcGFkZGluZyBmb3IgYHN0cmluZ2AgYmFzZWQgb24gYGxlbmd0aGAuIFRoZSBgY2hhcnNgIHN0cmluZ1xuICAgICAqIGlzIHRydW5jYXRlZCBpZiB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgZXhjZWVkcyBgbGVuZ3RoYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aCBUaGUgcGFkZGluZyBsZW5ndGguXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz0nICddIFRoZSBzdHJpbmcgdXNlZCBhcyBwYWRkaW5nLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHBhZGRpbmcgZm9yIGBzdHJpbmdgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVBhZGRpbmcobGVuZ3RoLCBjaGFycykge1xuICAgICAgY2hhcnMgPSBjaGFycyA9PT0gdW5kZWZpbmVkID8gJyAnIDogYmFzZVRvU3RyaW5nKGNoYXJzKTtcblxuICAgICAgdmFyIGNoYXJzTGVuZ3RoID0gY2hhcnMubGVuZ3RoO1xuICAgICAgaWYgKGNoYXJzTGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gY2hhcnNMZW5ndGggPyBiYXNlUmVwZWF0KGNoYXJzLCBsZW5ndGgpIDogY2hhcnM7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gYmFzZVJlcGVhdChjaGFycywgbmF0aXZlQ2VpbChsZW5ndGggLyBzdHJpbmdTaXplKGNoYXJzKSkpO1xuICAgICAgcmV0dXJuIGhhc1VuaWNvZGUoY2hhcnMpXG4gICAgICAgID8gY2FzdFNsaWNlKHN0cmluZ1RvQXJyYXkocmVzdWx0KSwgMCwgbGVuZ3RoKS5qb2luKCcnKVxuICAgICAgICA6IHJlc3VsdC5zbGljZSgwLCBsZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHdyYXBzIGBmdW5jYCB0byBpbnZva2UgaXQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmdcbiAgICAgKiBvZiBgdGhpc0FyZ2AgYW5kIGBwYXJ0aWFsc2AgcHJlcGVuZGVkIHRvIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYXJ0aWFscyBUaGUgYXJndW1lbnRzIHRvIHByZXBlbmQgdG8gdGhvc2UgcHJvdmlkZWQgdG9cbiAgICAgKiAgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVBhcnRpYWwoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMpIHtcbiAgICAgIHZhciBpc0JpbmQgPSBiaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcsXG4gICAgICAgICAgQ3RvciA9IGNyZWF0ZUN0b3IoZnVuYyk7XG5cbiAgICAgIGZ1bmN0aW9uIHdyYXBwZXIoKSB7XG4gICAgICAgIHZhciBhcmdzSW5kZXggPSAtMSxcbiAgICAgICAgICAgIGFyZ3NMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoLFxuICAgICAgICAgICAgbGVmdEluZGV4ID0gLTEsXG4gICAgICAgICAgICBsZWZ0TGVuZ3RoID0gcGFydGlhbHMubGVuZ3RoLFxuICAgICAgICAgICAgYXJncyA9IEFycmF5KGxlZnRMZW5ndGggKyBhcmdzTGVuZ3RoKSxcbiAgICAgICAgICAgIGZuID0gKHRoaXMgJiYgdGhpcyAhPT0gcm9vdCAmJiB0aGlzIGluc3RhbmNlb2Ygd3JhcHBlcikgPyBDdG9yIDogZnVuYztcblxuICAgICAgICB3aGlsZSAoKytsZWZ0SW5kZXggPCBsZWZ0TGVuZ3RoKSB7XG4gICAgICAgICAgYXJnc1tsZWZ0SW5kZXhdID0gcGFydGlhbHNbbGVmdEluZGV4XTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoYXJnc0xlbmd0aC0tKSB7XG4gICAgICAgICAgYXJnc1tsZWZ0SW5kZXgrK10gPSBhcmd1bWVudHNbKythcmdzSW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcHBseShmbiwgaXNCaW5kID8gdGhpc0FyZyA6IHRoaXMsIGFyZ3MpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBfLnJhbmdlYCBvciBgXy5yYW5nZVJpZ2h0YCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmFuZ2UgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUmFuZ2UoZnJvbVJpZ2h0KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oc3RhcnQsIGVuZCwgc3RlcCkge1xuICAgICAgICBpZiAoc3RlcCAmJiB0eXBlb2Ygc3RlcCAhPSAnbnVtYmVyJyAmJiBpc0l0ZXJhdGVlQ2FsbChzdGFydCwgZW5kLCBzdGVwKSkge1xuICAgICAgICAgIGVuZCA9IHN0ZXAgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRW5zdXJlIHRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuICAgICAgICBzdGFydCA9IHRvRmluaXRlKHN0YXJ0KTtcbiAgICAgICAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZW5kID0gc3RhcnQ7XG4gICAgICAgICAgc3RhcnQgPSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVuZCA9IHRvRmluaXRlKGVuZCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RlcCA9IHN0ZXAgPT09IHVuZGVmaW5lZCA/IChzdGFydCA8IGVuZCA/IDEgOiAtMSkgOiB0b0Zpbml0ZShzdGVwKTtcbiAgICAgICAgcmV0dXJuIGJhc2VSYW5nZShzdGFydCwgZW5kLCBzdGVwLCBmcm9tUmlnaHQpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhIHJlbGF0aW9uYWwgb3BlcmF0aW9uIG9uIHR3byB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wZXJhdG9yIFRoZSBmdW5jdGlvbiB0byBwZXJmb3JtIHRoZSBvcGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmVsYXRpb25hbCBvcGVyYXRpb24gZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihvcGVyYXRvcikge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlLCBvdGhlcikge1xuICAgICAgICBpZiAoISh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgJiYgdHlwZW9mIG90aGVyID09ICdzdHJpbmcnKSkge1xuICAgICAgICAgIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xuICAgICAgICAgIG90aGVyID0gdG9OdW1iZXIob3RoZXIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvcGVyYXRvcih2YWx1ZSwgb3RoZXIpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgdG8gY29udGludWUgY3VycnlpbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB3cmFwRnVuYyBUaGUgZnVuY3Rpb24gdG8gY3JlYXRlIHRoZSBgZnVuY2Agd3JhcHBlci5cbiAgICAgKiBAcGFyYW0geyp9IHBsYWNlaG9sZGVyIFRoZSBwbGFjZWhvbGRlciB2YWx1ZS5cbiAgICAgKiBAcGFyYW0geyp9IFt0aGlzQXJnXSBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBwcmVwZW5kIHRvIHRob3NlIHByb3ZpZGVkIHRvXG4gICAgICogIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2hvbGRlcnNdIFRoZSBgcGFydGlhbHNgIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2FyZ1Bvc10gVGhlIGFyZ3VtZW50IHBvc2l0aW9ucyBvZiB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJ5XSBUaGUgYXJpdHkgY2FwIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5XSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUmVjdXJyeShmdW5jLCBiaXRtYXNrLCB3cmFwRnVuYywgcGxhY2Vob2xkZXIsIHRoaXNBcmcsIHBhcnRpYWxzLCBob2xkZXJzLCBhcmdQb3MsIGFyeSwgYXJpdHkpIHtcbiAgICAgIHZhciBpc0N1cnJ5ID0gYml0bWFzayAmIFdSQVBfQ1VSUllfRkxBRyxcbiAgICAgICAgICBuZXdIb2xkZXJzID0gaXNDdXJyeSA/IGhvbGRlcnMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgbmV3SG9sZGVyc1JpZ2h0ID0gaXNDdXJyeSA/IHVuZGVmaW5lZCA6IGhvbGRlcnMsXG4gICAgICAgICAgbmV3UGFydGlhbHMgPSBpc0N1cnJ5ID8gcGFydGlhbHMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgbmV3UGFydGlhbHNSaWdodCA9IGlzQ3VycnkgPyB1bmRlZmluZWQgOiBwYXJ0aWFscztcblxuICAgICAgYml0bWFzayB8PSAoaXNDdXJyeSA/IFdSQVBfUEFSVElBTF9GTEFHIDogV1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUcpO1xuICAgICAgYml0bWFzayAmPSB+KGlzQ3VycnkgPyBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRyA6IFdSQVBfUEFSVElBTF9GTEFHKTtcblxuICAgICAgaWYgKCEoYml0bWFzayAmIFdSQVBfQ1VSUllfQk9VTkRfRkxBRykpIHtcbiAgICAgICAgYml0bWFzayAmPSB+KFdSQVBfQklORF9GTEFHIHwgV1JBUF9CSU5EX0tFWV9GTEFHKTtcbiAgICAgIH1cbiAgICAgIHZhciBuZXdEYXRhID0gW1xuICAgICAgICBmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBuZXdQYXJ0aWFscywgbmV3SG9sZGVycywgbmV3UGFydGlhbHNSaWdodCxcbiAgICAgICAgbmV3SG9sZGVyc1JpZ2h0LCBhcmdQb3MsIGFyeSwgYXJpdHlcbiAgICAgIF07XG5cbiAgICAgIHZhciByZXN1bHQgPSB3cmFwRnVuYy5hcHBseSh1bmRlZmluZWQsIG5ld0RhdGEpO1xuICAgICAgaWYgKGlzTGF6aWFibGUoZnVuYykpIHtcbiAgICAgICAgc2V0RGF0YShyZXN1bHQsIG5ld0RhdGEpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LnBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gICAgICByZXR1cm4gc2V0V3JhcFRvU3RyaW5nKHJlc3VsdCwgZnVuYywgYml0bWFzayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8ucm91bmRgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kTmFtZSBUaGUgbmFtZSBvZiB0aGUgYE1hdGhgIG1ldGhvZCB0byB1c2Ugd2hlbiByb3VuZGluZy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByb3VuZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVSb3VuZChtZXRob2ROYW1lKSB7XG4gICAgICB2YXIgZnVuYyA9IE1hdGhbbWV0aG9kTmFtZV07XG4gICAgICByZXR1cm4gZnVuY3Rpb24obnVtYmVyLCBwcmVjaXNpb24pIHtcbiAgICAgICAgbnVtYmVyID0gdG9OdW1iZXIobnVtYmVyKTtcbiAgICAgICAgcHJlY2lzaW9uID0gcHJlY2lzaW9uID09IG51bGwgPyAwIDogbmF0aXZlTWluKHRvSW50ZWdlcihwcmVjaXNpb24pLCAyOTIpO1xuICAgICAgICBpZiAocHJlY2lzaW9uICYmIG5hdGl2ZUlzRmluaXRlKG51bWJlcikpIHtcbiAgICAgICAgICAvLyBTaGlmdCB3aXRoIGV4cG9uZW50aWFsIG5vdGF0aW9uIHRvIGF2b2lkIGZsb2F0aW5nLXBvaW50IGlzc3Vlcy5cbiAgICAgICAgICAvLyBTZWUgW01ETl0oaHR0cHM6Ly9tZG4uaW8vcm91bmQjRXhhbXBsZXMpIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAgICAgdmFyIHBhaXIgPSAodG9TdHJpbmcobnVtYmVyKSArICdlJykuc3BsaXQoJ2UnKSxcbiAgICAgICAgICAgICAgdmFsdWUgPSBmdW5jKHBhaXJbMF0gKyAnZScgKyAoK3BhaXJbMV0gKyBwcmVjaXNpb24pKTtcblxuICAgICAgICAgIHBhaXIgPSAodG9TdHJpbmcodmFsdWUpICsgJ2UnKS5zcGxpdCgnZScpO1xuICAgICAgICAgIHJldHVybiArKHBhaXJbMF0gKyAnZScgKyAoK3BhaXJbMV0gLSBwcmVjaXNpb24pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuYyhudW1iZXIpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2V0IG9iamVjdCBvZiBgdmFsdWVzYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gYWRkIHRvIHRoZSBzZXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IHNldC5cbiAgICAgKi9cbiAgICB2YXIgY3JlYXRlU2V0ID0gIShTZXQgJiYgKDEgLyBzZXRUb0FycmF5KG5ldyBTZXQoWywtMF0pKVsxXSkgPT0gSU5GSU5JVFkpID8gbm9vcCA6IGZ1bmN0aW9uKHZhbHVlcykge1xuICAgICAgcmV0dXJuIG5ldyBTZXQodmFsdWVzKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBfLnRvUGFpcnNgIG9yIGBfLnRvUGFpcnNJbmAgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYSBnaXZlbiBvYmplY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcGFpcnMgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlVG9QYWlycyhrZXlzRnVuYykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICB2YXIgdGFnID0gZ2V0VGFnKG9iamVjdCk7XG4gICAgICAgIGlmICh0YWcgPT0gbWFwVGFnKSB7XG4gICAgICAgICAgcmV0dXJuIG1hcFRvQXJyYXkob2JqZWN0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGFnID09IHNldFRhZykge1xuICAgICAgICAgIHJldHVybiBzZXRUb1BhaXJzKG9iamVjdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJhc2VUb1BhaXJzKG9iamVjdCwga2V5c0Z1bmMob2JqZWN0KSk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGVpdGhlciBjdXJyaWVzIG9yIGludm9rZXMgYGZ1bmNgIHdpdGggb3B0aW9uYWxcbiAgICAgKiBgdGhpc2AgYmluZGluZyBhbmQgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufHN0cmluZ30gZnVuYyBUaGUgZnVuY3Rpb24gb3IgbWV0aG9kIG5hbWUgdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAgICAgKiAgICAxIC0gYF8uYmluZGBcbiAgICAgKiAgICAyIC0gYF8uYmluZEtleWBcbiAgICAgKiAgICA0IC0gYF8uY3VycnlgIG9yIGBfLmN1cnJ5UmlnaHRgIG9mIGEgYm91bmQgZnVuY3Rpb25cbiAgICAgKiAgICA4IC0gYF8uY3VycnlgXG4gICAgICogICAxNiAtIGBfLmN1cnJ5UmlnaHRgXG4gICAgICogICAzMiAtIGBfLnBhcnRpYWxgXG4gICAgICogICA2NCAtIGBfLnBhcnRpYWxSaWdodGBcbiAgICAgKiAgMTI4IC0gYF8ucmVhcmdgXG4gICAgICogIDI1NiAtIGBfLmFyeWBcbiAgICAgKiAgNTEyIC0gYF8uZmxpcGBcbiAgICAgKiBAcGFyYW0geyp9IFt0aGlzQXJnXSBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbaG9sZGVyc10gVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJnUG9zXSBUaGUgYXJndW1lbnQgcG9zaXRpb25zIG9mIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcnldIFRoZSBhcml0eSBjYXAgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHldIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVXcmFwKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzLCBob2xkZXJzLCBhcmdQb3MsIGFyeSwgYXJpdHkpIHtcbiAgICAgIHZhciBpc0JpbmRLZXkgPSBiaXRtYXNrICYgV1JBUF9CSU5EX0tFWV9GTEFHO1xuICAgICAgaWYgKCFpc0JpbmRLZXkgJiYgdHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gcGFydGlhbHMgPyBwYXJ0aWFscy5sZW5ndGggOiAwO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgYml0bWFzayAmPSB+KFdSQVBfUEFSVElBTF9GTEFHIHwgV1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUcpO1xuICAgICAgICBwYXJ0aWFscyA9IGhvbGRlcnMgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBhcnkgPSBhcnkgPT09IHVuZGVmaW5lZCA/IGFyeSA6IG5hdGl2ZU1heCh0b0ludGVnZXIoYXJ5KSwgMCk7XG4gICAgICBhcml0eSA9IGFyaXR5ID09PSB1bmRlZmluZWQgPyBhcml0eSA6IHRvSW50ZWdlcihhcml0eSk7XG4gICAgICBsZW5ndGggLT0gaG9sZGVycyA/IGhvbGRlcnMubGVuZ3RoIDogMDtcblxuICAgICAgaWYgKGJpdG1hc2sgJiBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRykge1xuICAgICAgICB2YXIgcGFydGlhbHNSaWdodCA9IHBhcnRpYWxzLFxuICAgICAgICAgICAgaG9sZGVyc1JpZ2h0ID0gaG9sZGVycztcblxuICAgICAgICBwYXJ0aWFscyA9IGhvbGRlcnMgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICB2YXIgZGF0YSA9IGlzQmluZEtleSA/IHVuZGVmaW5lZCA6IGdldERhdGEoZnVuYyk7XG5cbiAgICAgIHZhciBuZXdEYXRhID0gW1xuICAgICAgICBmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBwYXJ0aWFscywgaG9sZGVycywgcGFydGlhbHNSaWdodCwgaG9sZGVyc1JpZ2h0LFxuICAgICAgICBhcmdQb3MsIGFyeSwgYXJpdHlcbiAgICAgIF07XG5cbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIG1lcmdlRGF0YShuZXdEYXRhLCBkYXRhKTtcbiAgICAgIH1cbiAgICAgIGZ1bmMgPSBuZXdEYXRhWzBdO1xuICAgICAgYml0bWFzayA9IG5ld0RhdGFbMV07XG4gICAgICB0aGlzQXJnID0gbmV3RGF0YVsyXTtcbiAgICAgIHBhcnRpYWxzID0gbmV3RGF0YVszXTtcbiAgICAgIGhvbGRlcnMgPSBuZXdEYXRhWzRdO1xuICAgICAgYXJpdHkgPSBuZXdEYXRhWzldID0gbmV3RGF0YVs5XSA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gKGlzQmluZEtleSA/IDAgOiBmdW5jLmxlbmd0aClcbiAgICAgICAgOiBuYXRpdmVNYXgobmV3RGF0YVs5XSAtIGxlbmd0aCwgMCk7XG5cbiAgICAgIGlmICghYXJpdHkgJiYgYml0bWFzayAmIChXUkFQX0NVUlJZX0ZMQUcgfCBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcpKSB7XG4gICAgICAgIGJpdG1hc2sgJj0gfihXUkFQX0NVUlJZX0ZMQUcgfCBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcpO1xuICAgICAgfVxuICAgICAgaWYgKCFiaXRtYXNrIHx8IGJpdG1hc2sgPT0gV1JBUF9CSU5EX0ZMQUcpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGNyZWF0ZUJpbmQoZnVuYywgYml0bWFzaywgdGhpc0FyZyk7XG4gICAgICB9IGVsc2UgaWYgKGJpdG1hc2sgPT0gV1JBUF9DVVJSWV9GTEFHIHx8IGJpdG1hc2sgPT0gV1JBUF9DVVJSWV9SSUdIVF9GTEFHKSB7XG4gICAgICAgIHJlc3VsdCA9IGNyZWF0ZUN1cnJ5KGZ1bmMsIGJpdG1hc2ssIGFyaXR5KTtcbiAgICAgIH0gZWxzZSBpZiAoKGJpdG1hc2sgPT0gV1JBUF9QQVJUSUFMX0ZMQUcgfHwgYml0bWFzayA9PSAoV1JBUF9CSU5EX0ZMQUcgfCBXUkFQX1BBUlRJQUxfRkxBRykpICYmICFob2xkZXJzLmxlbmd0aCkge1xuICAgICAgICByZXN1bHQgPSBjcmVhdGVQYXJ0aWFsKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IGNyZWF0ZUh5YnJpZC5hcHBseSh1bmRlZmluZWQsIG5ld0RhdGEpO1xuICAgICAgfVxuICAgICAgdmFyIHNldHRlciA9IGRhdGEgPyBiYXNlU2V0RGF0YSA6IHNldERhdGE7XG4gICAgICByZXR1cm4gc2V0V3JhcFRvU3RyaW5nKHNldHRlcihyZXN1bHQsIG5ld0RhdGEpLCBmdW5jLCBiaXRtYXNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIGJ5IGBfLmRlZmF1bHRzYCB0byBjdXN0b21pemUgaXRzIGBfLmFzc2lnbkluYCB1c2UgdG8gYXNzaWduIHByb3BlcnRpZXNcbiAgICAgKiBvZiBzb3VyY2Ugb2JqZWN0cyB0byB0aGUgZGVzdGluYXRpb24gb2JqZWN0IGZvciBhbGwgZGVzdGluYXRpb24gcHJvcGVydGllc1xuICAgICAqIHRoYXQgcmVzb2x2ZSB0byBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSBvYmpWYWx1ZSBUaGUgZGVzdGluYXRpb24gdmFsdWUuXG4gICAgICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgc291cmNlIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHBhcmVudCBvYmplY3Qgb2YgYG9ialZhbHVlYC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdmFsdWUgdG8gYXNzaWduLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGN1c3RvbURlZmF1bHRzQXNzaWduSW4ob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCkge1xuICAgICAgaWYgKG9ialZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAoZXEob2JqVmFsdWUsIG9iamVjdFByb3RvW2tleV0pICYmICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpIHtcbiAgICAgICAgcmV0dXJuIHNyY1ZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9ialZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZWQgYnkgYF8uZGVmYXVsdHNEZWVwYCB0byBjdXN0b21pemUgaXRzIGBfLm1lcmdlYCB1c2UgdG8gbWVyZ2Ugc291cmNlXG4gICAgICogb2JqZWN0cyBpbnRvIGRlc3RpbmF0aW9uIG9iamVjdHMgdGhhdCBhcmUgcGFzc2VkIHRocnUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gb2JqVmFsdWUgVGhlIGRlc3RpbmF0aW9uIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHNvdXJjZSB2YWx1ZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIG1lcmdlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHBhcmVudCBvYmplY3Qgb2YgYG9ialZhbHVlYC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBwYXJlbnQgb2JqZWN0IG9mIGBzcmNWYWx1ZWAuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBzb3VyY2UgdmFsdWVzIGFuZCB0aGVpciBtZXJnZWRcbiAgICAgKiAgY291bnRlcnBhcnRzLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3VzdG9tRGVmYXVsdHNNZXJnZShvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKSB7XG4gICAgICBpZiAoaXNPYmplY3Qob2JqVmFsdWUpICYmIGlzT2JqZWN0KHNyY1ZhbHVlKSkge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBtZXJnZSBvYmplY3RzIGFuZCBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgc3RhY2suc2V0KHNyY1ZhbHVlLCBvYmpWYWx1ZSk7XG4gICAgICAgIGJhc2VNZXJnZShvYmpWYWx1ZSwgc3JjVmFsdWUsIHVuZGVmaW5lZCwgY3VzdG9tRGVmYXVsdHNNZXJnZSwgc3RhY2spO1xuICAgICAgICBzdGFja1snZGVsZXRlJ10oc3JjVmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9ialZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZWQgYnkgYF8ub21pdGAgdG8gY3VzdG9taXplIGl0cyBgXy5jbG9uZURlZXBgIHVzZSB0byBvbmx5IGNsb25lIHBsYWluXG4gICAgICogb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHVuY2xvbmVkIHZhbHVlIG9yIGB1bmRlZmluZWRgIHRvIGRlZmVyIGNsb25pbmcgdG8gYF8uY2xvbmVEZWVwYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjdXN0b21PbWl0Q2xvbmUodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc1BsYWluT2JqZWN0KHZhbHVlKSA/IHVuZGVmaW5lZCA6IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3IgYXJyYXlzIHdpdGggc3VwcG9ydCBmb3JcbiAgICAgKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IG90aGVyIFRoZSBvdGhlciBhcnJheSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYGFycmF5YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJyYXlzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXF1YWxBcnJheXMoYXJyYXksIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gICAgICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgICAgIGFyckxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICBvdGhMZW5ndGggPSBvdGhlci5sZW5ndGg7XG5cbiAgICAgIGlmIChhcnJMZW5ndGggIT0gb3RoTGVuZ3RoICYmICEoaXNQYXJ0aWFsICYmIG90aExlbmd0aCA+IGFyckxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gQ2hlY2sgdGhhdCBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgICAgIHZhciBhcnJTdGFja2VkID0gc3RhY2suZ2V0KGFycmF5KTtcbiAgICAgIHZhciBvdGhTdGFja2VkID0gc3RhY2suZ2V0KG90aGVyKTtcbiAgICAgIGlmIChhcnJTdGFja2VkICYmIG90aFN0YWNrZWQpIHtcbiAgICAgICAgcmV0dXJuIGFyclN0YWNrZWQgPT0gb3RoZXIgJiYgb3RoU3RhY2tlZCA9PSBhcnJheTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIHJlc3VsdCA9IHRydWUsXG4gICAgICAgICAgc2VlbiA9IChiaXRtYXNrICYgQ09NUEFSRV9VTk9SREVSRURfRkxBRykgPyBuZXcgU2V0Q2FjaGUgOiB1bmRlZmluZWQ7XG5cbiAgICAgIHN0YWNrLnNldChhcnJheSwgb3RoZXIpO1xuICAgICAgc3RhY2suc2V0KG90aGVyLCBhcnJheSk7XG5cbiAgICAgIC8vIElnbm9yZSBub24taW5kZXggcHJvcGVydGllcy5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgYXJyTGVuZ3RoKSB7XG4gICAgICAgIHZhciBhcnJWYWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIG90aFZhbHVlID0gb3RoZXJbaW5kZXhdO1xuXG4gICAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgICAgdmFyIGNvbXBhcmVkID0gaXNQYXJ0aWFsXG4gICAgICAgICAgICA/IGN1c3RvbWl6ZXIob3RoVmFsdWUsIGFyclZhbHVlLCBpbmRleCwgb3RoZXIsIGFycmF5LCBzdGFjaylcbiAgICAgICAgICAgIDogY3VzdG9taXplcihhcnJWYWx1ZSwgb3RoVmFsdWUsIGluZGV4LCBhcnJheSwgb3RoZXIsIHN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29tcGFyZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmIChjb21wYXJlZCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIGlmIChzZWVuKSB7XG4gICAgICAgICAgaWYgKCFhcnJheVNvbWUob3RoZXIsIGZ1bmN0aW9uKG90aFZhbHVlLCBvdGhJbmRleCkge1xuICAgICAgICAgICAgICAgIGlmICghY2FjaGVIYXMoc2Vlbiwgb3RoSW5kZXgpICYmXG4gICAgICAgICAgICAgICAgICAgIChhcnJWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlZW4ucHVzaChvdGhJbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSkge1xuICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIShcbiAgICAgICAgICAgICAgYXJyVmFsdWUgPT09IG90aFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHN0YWNrWydkZWxldGUnXShhcnJheSk7XG4gICAgICBzdGFja1snZGVsZXRlJ10ob3RoZXIpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIGNvbXBhcmluZyBvYmplY3RzIG9mXG4gICAgICogdGhlIHNhbWUgYHRvU3RyaW5nVGFnYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgY29tcGFyaW5nIHZhbHVlcyB3aXRoIHRhZ3Mgb2ZcbiAgICAgKiBgQm9vbGVhbmAsIGBEYXRlYCwgYEVycm9yYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBvciBgU3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGFnIFRoZSBgdG9TdHJpbmdUYWdgIG9mIHRoZSBvYmplY3RzIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVxdWFsQnlUYWcob2JqZWN0LCBvdGhlciwgdGFnLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gICAgICBzd2l0Y2ggKHRhZykge1xuICAgICAgICBjYXNlIGRhdGFWaWV3VGFnOlxuICAgICAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAgICAgKG9iamVjdC5ieXRlT2Zmc2V0ICE9IG90aGVyLmJ5dGVPZmZzZXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9iamVjdCA9IG9iamVjdC5idWZmZXI7XG4gICAgICAgICAgb3RoZXIgPSBvdGhlci5idWZmZXI7XG5cbiAgICAgICAgY2FzZSBhcnJheUJ1ZmZlclRhZzpcbiAgICAgICAgICBpZiAoKG9iamVjdC5ieXRlTGVuZ3RoICE9IG90aGVyLmJ5dGVMZW5ndGgpIHx8XG4gICAgICAgICAgICAgICFlcXVhbEZ1bmMobmV3IFVpbnQ4QXJyYXkob2JqZWN0KSwgbmV3IFVpbnQ4QXJyYXkob3RoZXIpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcblxuICAgICAgICBjYXNlIGJvb2xUYWc6XG4gICAgICAgIGNhc2UgZGF0ZVRhZzpcbiAgICAgICAgY2FzZSBudW1iZXJUYWc6XG4gICAgICAgICAgLy8gQ29lcmNlIGJvb2xlYW5zIHRvIGAxYCBvciBgMGAgYW5kIGRhdGVzIHRvIG1pbGxpc2Vjb25kcy5cbiAgICAgICAgICAvLyBJbnZhbGlkIGRhdGVzIGFyZSBjb2VyY2VkIHRvIGBOYU5gLlxuICAgICAgICAgIHJldHVybiBlcSgrb2JqZWN0LCArb3RoZXIpO1xuXG4gICAgICAgIGNhc2UgZXJyb3JUYWc6XG4gICAgICAgICAgcmV0dXJuIG9iamVjdC5uYW1lID09IG90aGVyLm5hbWUgJiYgb2JqZWN0Lm1lc3NhZ2UgPT0gb3RoZXIubWVzc2FnZTtcblxuICAgICAgICBjYXNlIHJlZ2V4cFRhZzpcbiAgICAgICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICAgICAgLy8gQ29lcmNlIHJlZ2V4ZXMgdG8gc3RyaW5ncyBhbmQgdHJlYXQgc3RyaW5ncywgcHJpbWl0aXZlcyBhbmQgb2JqZWN0cyxcbiAgICAgICAgICAvLyBhcyBlcXVhbC4gU2VlIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1yZWdleHAucHJvdG90eXBlLnRvc3RyaW5nXG4gICAgICAgICAgLy8gZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgICAgICByZXR1cm4gb2JqZWN0ID09IChvdGhlciArICcnKTtcblxuICAgICAgICBjYXNlIG1hcFRhZzpcbiAgICAgICAgICB2YXIgY29udmVydCA9IG1hcFRvQXJyYXk7XG5cbiAgICAgICAgY2FzZSBzZXRUYWc6XG4gICAgICAgICAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRztcbiAgICAgICAgICBjb252ZXJ0IHx8IChjb252ZXJ0ID0gc2V0VG9BcnJheSk7XG5cbiAgICAgICAgICBpZiAob2JqZWN0LnNpemUgIT0gb3RoZXIuc2l6ZSAmJiAhaXNQYXJ0aWFsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEFzc3VtZSBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgICAgICAgICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICAgICAgICAgIGlmIChzdGFja2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RhY2tlZCA9PSBvdGhlcjtcbiAgICAgICAgICB9XG4gICAgICAgICAgYml0bWFzayB8PSBDT01QQVJFX1VOT1JERVJFRF9GTEFHO1xuXG4gICAgICAgICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgICAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICAgICAgICAgIHZhciByZXN1bHQgPSBlcXVhbEFycmF5cyhjb252ZXJ0KG9iamVjdCksIGNvbnZlcnQob3RoZXIpLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgICAgICAgICBzdGFja1snZGVsZXRlJ10ob2JqZWN0KTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuXG4gICAgICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgICAgIGlmIChzeW1ib2xWYWx1ZU9mKSB7XG4gICAgICAgICAgICByZXR1cm4gc3ltYm9sVmFsdWVPZi5jYWxsKG9iamVjdCkgPT0gc3ltYm9sVmFsdWVPZi5jYWxsKG90aGVyKTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBvYmplY3RzIHdpdGggc3VwcG9ydCBmb3JcbiAgICAgKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gICAgICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgICAgIG9ialByb3BzID0gZ2V0QWxsS2V5cyhvYmplY3QpLFxuICAgICAgICAgIG9iakxlbmd0aCA9IG9ialByb3BzLmxlbmd0aCxcbiAgICAgICAgICBvdGhQcm9wcyA9IGdldEFsbEtleXMob3RoZXIpLFxuICAgICAgICAgIG90aExlbmd0aCA9IG90aFByb3BzLmxlbmd0aDtcblxuICAgICAgaWYgKG9iakxlbmd0aCAhPSBvdGhMZW5ndGggJiYgIWlzUGFydGlhbCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSBvYmpMZW5ndGg7XG4gICAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICB2YXIga2V5ID0gb2JqUHJvcHNbaW5kZXhdO1xuICAgICAgICBpZiAoIShpc1BhcnRpYWwgPyBrZXkgaW4gb3RoZXIgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCBrZXkpKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gQ2hlY2sgdGhhdCBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgICAgIHZhciBvYmpTdGFja2VkID0gc3RhY2suZ2V0KG9iamVjdCk7XG4gICAgICB2YXIgb3RoU3RhY2tlZCA9IHN0YWNrLmdldChvdGhlcik7XG4gICAgICBpZiAob2JqU3RhY2tlZCAmJiBvdGhTdGFja2VkKSB7XG4gICAgICAgIHJldHVybiBvYmpTdGFja2VkID09IG90aGVyICYmIG90aFN0YWNrZWQgPT0gb2JqZWN0O1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IHRydWU7XG4gICAgICBzdGFjay5zZXQob2JqZWN0LCBvdGhlcik7XG4gICAgICBzdGFjay5zZXQob3RoZXIsIG9iamVjdCk7XG5cbiAgICAgIHZhciBza2lwQ3RvciA9IGlzUGFydGlhbDtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgb2JqTGVuZ3RoKSB7XG4gICAgICAgIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICAgICAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgICAgICBvdGhWYWx1ZSA9IG90aGVyW2tleV07XG5cbiAgICAgICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgICAgID8gY3VzdG9taXplcihvdGhWYWx1ZSwgb2JqVmFsdWUsIGtleSwgb3RoZXIsIG9iamVjdCwgc3RhY2spXG4gICAgICAgICAgICA6IGN1c3RvbWl6ZXIob2JqVmFsdWUsIG90aFZhbHVlLCBrZXksIG9iamVjdCwgb3RoZXIsIHN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgaWYgKCEoY29tcGFyZWQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICA/IChvYmpWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKG9ialZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKVxuICAgICAgICAgICAgICA6IGNvbXBhcmVkXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgc2tpcEN0b3IgfHwgKHNraXBDdG9yID0ga2V5ID09ICdjb25zdHJ1Y3RvcicpO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdCAmJiAhc2tpcEN0b3IpIHtcbiAgICAgICAgdmFyIG9iakN0b3IgPSBvYmplY3QuY29uc3RydWN0b3IsXG4gICAgICAgICAgICBvdGhDdG9yID0gb3RoZXIuY29uc3RydWN0b3I7XG5cbiAgICAgICAgLy8gTm9uIGBPYmplY3RgIG9iamVjdCBpbnN0YW5jZXMgd2l0aCBkaWZmZXJlbnQgY29uc3RydWN0b3JzIGFyZSBub3QgZXF1YWwuXG4gICAgICAgIGlmIChvYmpDdG9yICE9IG90aEN0b3IgJiZcbiAgICAgICAgICAgICgnY29uc3RydWN0b3InIGluIG9iamVjdCAmJiAnY29uc3RydWN0b3InIGluIG90aGVyKSAmJlxuICAgICAgICAgICAgISh0eXBlb2Ygb2JqQ3RvciA9PSAnZnVuY3Rpb24nICYmIG9iakN0b3IgaW5zdGFuY2VvZiBvYmpDdG9yICYmXG4gICAgICAgICAgICAgIHR5cGVvZiBvdGhDdG9yID09ICdmdW5jdGlvbicgJiYgb3RoQ3RvciBpbnN0YW5jZW9mIG90aEN0b3IpKSB7XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHN0YWNrWydkZWxldGUnXShvYmplY3QpO1xuICAgICAgc3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUmVzdGAgd2hpY2ggZmxhdHRlbnMgdGhlIHJlc3QgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdFJlc3QoZnVuYykge1xuICAgICAgcmV0dXJuIHNldFRvU3RyaW5nKG92ZXJSZXN0KGZ1bmMsIHVuZGVmaW5lZCwgZmxhdHRlbiksIGZ1bmMgKyAnJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0QWxsS2V5cyhvYmplY3QpIHtcbiAgICAgIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXMsIGdldFN5bWJvbHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmRcbiAgICAgKiBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRBbGxLZXlzSW4ob2JqZWN0KSB7XG4gICAgICByZXR1cm4gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzSW4sIGdldFN5bWJvbHNJbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBtZXRhZGF0YSBmb3IgYGZ1bmNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWV0YWRhdGEgZm9yIGBmdW5jYC5cbiAgICAgKi9cbiAgICB2YXIgZ2V0RGF0YSA9ICFtZXRhTWFwID8gbm9vcCA6IGZ1bmN0aW9uKGZ1bmMpIHtcbiAgICAgIHJldHVybiBtZXRhTWFwLmdldChmdW5jKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbmFtZSBvZiBgZnVuY2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGZ1bmN0aW9uIG5hbWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0RnVuY05hbWUoZnVuYykge1xuICAgICAgdmFyIHJlc3VsdCA9IChmdW5jLm5hbWUgKyAnJyksXG4gICAgICAgICAgYXJyYXkgPSByZWFsTmFtZXNbcmVzdWx0XSxcbiAgICAgICAgICBsZW5ndGggPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlYWxOYW1lcywgcmVzdWx0KSA/IGFycmF5Lmxlbmd0aCA6IDA7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIgZGF0YSA9IGFycmF5W2xlbmd0aF0sXG4gICAgICAgICAgICBvdGhlckZ1bmMgPSBkYXRhLmZ1bmM7XG4gICAgICAgIGlmIChvdGhlckZ1bmMgPT0gbnVsbCB8fCBvdGhlckZ1bmMgPT0gZnVuYykge1xuICAgICAgICAgIHJldHVybiBkYXRhLm5hbWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgYXJndW1lbnQgcGxhY2Vob2xkZXIgdmFsdWUgZm9yIGBmdW5jYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcGxhY2Vob2xkZXIgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0SG9sZGVyKGZ1bmMpIHtcbiAgICAgIHZhciBvYmplY3QgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKGxvZGFzaCwgJ3BsYWNlaG9sZGVyJykgPyBsb2Rhc2ggOiBmdW5jO1xuICAgICAgcmV0dXJuIG9iamVjdC5wbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBhcHByb3ByaWF0ZSBcIml0ZXJhdGVlXCIgZnVuY3Rpb24uIElmIGBfLml0ZXJhdGVlYCBpcyBjdXN0b21pemVkLFxuICAgICAqIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgY3VzdG9tIG1ldGhvZCwgb3RoZXJ3aXNlIGl0IHJldHVybnMgYGJhc2VJdGVyYXRlZWAuXG4gICAgICogSWYgYXJndW1lbnRzIGFyZSBwcm92aWRlZCwgdGhlIGNob3NlbiBmdW5jdGlvbiBpcyBpbnZva2VkIHdpdGggdGhlbSBhbmRcbiAgICAgKiBpdHMgcmVzdWx0IGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IFt2YWx1ZV0gVGhlIHZhbHVlIHRvIGNvbnZlcnQgdG8gYW4gaXRlcmF0ZWUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcml0eV0gVGhlIGFyaXR5IG9mIHRoZSBjcmVhdGVkIGl0ZXJhdGVlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgY2hvc2VuIGZ1bmN0aW9uIG9yIGl0cyByZXN1bHQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0SXRlcmF0ZWUoKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gbG9kYXNoLml0ZXJhdGVlIHx8IGl0ZXJhdGVlO1xuICAgICAgcmVzdWx0ID0gcmVzdWx0ID09PSBpdGVyYXRlZSA/IGJhc2VJdGVyYXRlZSA6IHJlc3VsdDtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gcmVzdWx0KGFyZ3VtZW50c1swXSwgYXJndW1lbnRzWzFdKSA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBkYXRhIGZvciBgbWFwYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIHJlZmVyZW5jZSBrZXkuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hcCBkYXRhLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldE1hcERhdGEobWFwLCBrZXkpIHtcbiAgICAgIHZhciBkYXRhID0gbWFwLl9fZGF0YV9fO1xuICAgICAgcmV0dXJuIGlzS2V5YWJsZShrZXkpXG4gICAgICAgID8gZGF0YVt0eXBlb2Yga2V5ID09ICdzdHJpbmcnID8gJ3N0cmluZycgOiAnaGFzaCddXG4gICAgICAgIDogZGF0YS5tYXA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgcHJvcGVydHkgbmFtZXMsIHZhbHVlcywgYW5kIGNvbXBhcmUgZmxhZ3Mgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG1hdGNoIGRhdGEgb2YgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0TWF0Y2hEYXRhKG9iamVjdCkge1xuICAgICAgdmFyIHJlc3VsdCA9IGtleXMob2JqZWN0KSxcbiAgICAgICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgdmFyIGtleSA9IHJlc3VsdFtsZW5ndGhdLFxuICAgICAgICAgICAgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgICAgICByZXN1bHRbbGVuZ3RoXSA9IFtrZXksIHZhbHVlLCBpc1N0cmljdENvbXBhcmFibGUodmFsdWUpXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbmF0aXZlIGZ1bmN0aW9uIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBpZiBpdCdzIG5hdGl2ZSwgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXROYXRpdmUob2JqZWN0LCBrZXkpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGdldFZhbHVlKG9iamVjdCwga2V5KTtcbiAgICAgIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlR2V0VGFnYCB3aGljaCBpZ25vcmVzIGBTeW1ib2wudG9TdHJpbmdUYWdgIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0UmF3VGFnKHZhbHVlKSB7XG4gICAgICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICAgICAgdGFnID0gdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuXG4gICAgICB0cnkge1xuICAgICAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgICAgIHZhciB1bm1hc2tlZCA9IHRydWU7XG4gICAgICB9IGNhdGNoIChlKSB7fVxuXG4gICAgICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gICAgICBpZiAodW5tYXNrZWQpIHtcbiAgICAgICAgaWYgKGlzT3duKSB7XG4gICAgICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlbGV0ZSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2Ygc3ltYm9scy5cbiAgICAgKi9cbiAgICB2YXIgZ2V0U3ltYm9scyA9ICFuYXRpdmVHZXRTeW1ib2xzID8gc3R1YkFycmF5IDogZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgICByZXR1cm4gYXJyYXlGaWx0ZXIobmF0aXZlR2V0U3ltYm9scyhvYmplY3QpLCBmdW5jdGlvbihzeW1ib2wpIHtcbiAgICAgICAgcmV0dXJuIHByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwob2JqZWN0LCBzeW1ib2wpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2Ygc3ltYm9scy5cbiAgICAgKi9cbiAgICB2YXIgZ2V0U3ltYm9sc0luID0gIW5hdGl2ZUdldFN5bWJvbHMgPyBzdHViQXJyYXkgOiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIHdoaWxlIChvYmplY3QpIHtcbiAgICAgICAgYXJyYXlQdXNoKHJlc3VsdCwgZ2V0U3ltYm9scyhvYmplY3QpKTtcbiAgICAgICAgb2JqZWN0ID0gZ2V0UHJvdG90eXBlKG9iamVjdCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBgdG9TdHJpbmdUYWdgIG9mIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gICAgICovXG4gICAgdmFyIGdldFRhZyA9IGJhc2VHZXRUYWc7XG5cbiAgICAvLyBGYWxsYmFjayBmb3IgZGF0YSB2aWV3cywgbWFwcywgc2V0cywgYW5kIHdlYWsgbWFwcyBpbiBJRSAxMSBhbmQgcHJvbWlzZXMgaW4gTm9kZS5qcyA8IDYuXG4gICAgaWYgKChEYXRhVmlldyAmJiBnZXRUYWcobmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigxKSkpICE9IGRhdGFWaWV3VGFnKSB8fFxuICAgICAgICAoTWFwICYmIGdldFRhZyhuZXcgTWFwKSAhPSBtYXBUYWcpIHx8XG4gICAgICAgIChQcm9taXNlICYmIGdldFRhZyhQcm9taXNlLnJlc29sdmUoKSkgIT0gcHJvbWlzZVRhZykgfHxcbiAgICAgICAgKFNldCAmJiBnZXRUYWcobmV3IFNldCkgIT0gc2V0VGFnKSB8fFxuICAgICAgICAoV2Vha01hcCAmJiBnZXRUYWcobmV3IFdlYWtNYXApICE9IHdlYWtNYXBUYWcpKSB7XG4gICAgICBnZXRUYWcgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gYmFzZUdldFRhZyh2YWx1ZSksXG4gICAgICAgICAgICBDdG9yID0gcmVzdWx0ID09IG9iamVjdFRhZyA/IHZhbHVlLmNvbnN0cnVjdG9yIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY3RvclN0cmluZyA9IEN0b3IgPyB0b1NvdXJjZShDdG9yKSA6ICcnO1xuXG4gICAgICAgIGlmIChjdG9yU3RyaW5nKSB7XG4gICAgICAgICAgc3dpdGNoIChjdG9yU3RyaW5nKSB7XG4gICAgICAgICAgICBjYXNlIGRhdGFWaWV3Q3RvclN0cmluZzogcmV0dXJuIGRhdGFWaWV3VGFnO1xuICAgICAgICAgICAgY2FzZSBtYXBDdG9yU3RyaW5nOiByZXR1cm4gbWFwVGFnO1xuICAgICAgICAgICAgY2FzZSBwcm9taXNlQ3RvclN0cmluZzogcmV0dXJuIHByb21pc2VUYWc7XG4gICAgICAgICAgICBjYXNlIHNldEN0b3JTdHJpbmc6IHJldHVybiBzZXRUYWc7XG4gICAgICAgICAgICBjYXNlIHdlYWtNYXBDdG9yU3RyaW5nOiByZXR1cm4gd2Vha01hcFRhZztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdmlldywgYXBwbHlpbmcgYW55IGB0cmFuc2Zvcm1zYCB0byB0aGUgYHN0YXJ0YCBhbmQgYGVuZGAgcG9zaXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnQgVGhlIHN0YXJ0IG9mIHRoZSB2aWV3LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgdmlldy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB0cmFuc2Zvcm1zIFRoZSB0cmFuc2Zvcm1hdGlvbnMgdG8gYXBwbHkgdG8gdGhlIHZpZXcuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgYHN0YXJ0YCBhbmQgYGVuZGBcbiAgICAgKiAgcG9zaXRpb25zIG9mIHRoZSB2aWV3LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldFZpZXcoc3RhcnQsIGVuZCwgdHJhbnNmb3Jtcykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gdHJhbnNmb3Jtcy5sZW5ndGg7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBkYXRhID0gdHJhbnNmb3Jtc1tpbmRleF0sXG4gICAgICAgICAgICBzaXplID0gZGF0YS5zaXplO1xuXG4gICAgICAgIHN3aXRjaCAoZGF0YS50eXBlKSB7XG4gICAgICAgICAgY2FzZSAnZHJvcCc6ICAgICAgc3RhcnQgKz0gc2l6ZTsgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnZHJvcFJpZ2h0JzogZW5kIC09IHNpemU7IGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3Rha2UnOiAgICAgIGVuZCA9IG5hdGl2ZU1pbihlbmQsIHN0YXJ0ICsgc2l6ZSk7IGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3Rha2VSaWdodCc6IHN0YXJ0ID0gbmF0aXZlTWF4KHN0YXJ0LCBlbmQgLSBzaXplKTsgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7ICdzdGFydCc6IHN0YXJ0LCAnZW5kJzogZW5kIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXh0cmFjdHMgd3JhcHBlciBkZXRhaWxzIGZyb20gdGhlIGBzb3VyY2VgIGJvZHkgY29tbWVudC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZSBUaGUgc291cmNlIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB3cmFwcGVyIGRldGFpbHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0V3JhcERldGFpbHMoc291cmNlKSB7XG4gICAgICB2YXIgbWF0Y2ggPSBzb3VyY2UubWF0Y2gocmVXcmFwRGV0YWlscyk7XG4gICAgICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsxXS5zcGxpdChyZVNwbGl0RGV0YWlscykgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHBhdGhgIGV4aXN0cyBvbiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGhhc0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrIHByb3BlcnRpZXMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgaGFzRnVuYykge1xuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0gdG9LZXkocGF0aFtpbmRleF0pO1xuICAgICAgICBpZiAoIShyZXN1bHQgPSBvYmplY3QgIT0gbnVsbCAmJiBoYXNGdW5jKG9iamVjdCwga2V5KSkpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBvYmplY3QgPSBvYmplY3Rba2V5XTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQgfHwgKytpbmRleCAhPSBsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIGxlbmd0aCA9IG9iamVjdCA9PSBudWxsID8gMCA6IG9iamVjdC5sZW5ndGg7XG4gICAgICByZXR1cm4gISFsZW5ndGggJiYgaXNMZW5ndGgobGVuZ3RoKSAmJiBpc0luZGV4KGtleSwgbGVuZ3RoKSAmJlxuICAgICAgICAoaXNBcnJheShvYmplY3QpIHx8IGlzQXJndW1lbnRzKG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemVzIGFuIGFycmF5IGNsb25lLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY2xvbmUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbml0Q2xvbmVBcnJheShhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSBuZXcgYXJyYXkuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICAgICAgLy8gQWRkIHByb3BlcnRpZXMgYXNzaWduZWQgYnkgYFJlZ0V4cCNleGVjYC5cbiAgICAgIGlmIChsZW5ndGggJiYgdHlwZW9mIGFycmF5WzBdID09ICdzdHJpbmcnICYmIGhhc093blByb3BlcnR5LmNhbGwoYXJyYXksICdpbmRleCcpKSB7XG4gICAgICAgIHJlc3VsdC5pbmRleCA9IGFycmF5LmluZGV4O1xuICAgICAgICByZXN1bHQuaW5wdXQgPSBhcnJheS5pbnB1dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgYW4gb2JqZWN0IGNsb25lLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5pdENsb25lT2JqZWN0KG9iamVjdCkge1xuICAgICAgcmV0dXJuICh0eXBlb2Ygb2JqZWN0LmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgIWlzUHJvdG90eXBlKG9iamVjdCkpXG4gICAgICAgID8gYmFzZUNyZWF0ZShnZXRQcm90b3R5cGUob2JqZWN0KSlcbiAgICAgICAgOiB7fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplcyBhbiBvYmplY3QgY2xvbmUgYmFzZWQgb24gaXRzIGB0b1N0cmluZ1RhZ2AuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIGNsb25pbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICAgICAqIGBCb29sZWFuYCwgYERhdGVgLCBgRXJyb3JgLCBgTWFwYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBgU2V0YCwgb3IgYFN0cmluZ2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGFnIFRoZSBgdG9TdHJpbmdUYWdgIG9mIHRoZSBvYmplY3QgdG8gY2xvbmUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbml0Q2xvbmVCeVRhZyhvYmplY3QsIHRhZywgaXNEZWVwKSB7XG4gICAgICB2YXIgQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcjtcbiAgICAgIHN3aXRjaCAodGFnKSB7XG4gICAgICAgIGNhc2UgYXJyYXlCdWZmZXJUYWc6XG4gICAgICAgICAgcmV0dXJuIGNsb25lQXJyYXlCdWZmZXIob2JqZWN0KTtcblxuICAgICAgICBjYXNlIGJvb2xUYWc6XG4gICAgICAgIGNhc2UgZGF0ZVRhZzpcbiAgICAgICAgICByZXR1cm4gbmV3IEN0b3IoK29iamVjdCk7XG5cbiAgICAgICAgY2FzZSBkYXRhVmlld1RhZzpcbiAgICAgICAgICByZXR1cm4gY2xvbmVEYXRhVmlldyhvYmplY3QsIGlzRGVlcCk7XG5cbiAgICAgICAgY2FzZSBmbG9hdDMyVGFnOiBjYXNlIGZsb2F0NjRUYWc6XG4gICAgICAgIGNhc2UgaW50OFRhZzogY2FzZSBpbnQxNlRhZzogY2FzZSBpbnQzMlRhZzpcbiAgICAgICAgY2FzZSB1aW50OFRhZzogY2FzZSB1aW50OENsYW1wZWRUYWc6IGNhc2UgdWludDE2VGFnOiBjYXNlIHVpbnQzMlRhZzpcbiAgICAgICAgICByZXR1cm4gY2xvbmVUeXBlZEFycmF5KG9iamVjdCwgaXNEZWVwKTtcblxuICAgICAgICBjYXNlIG1hcFRhZzpcbiAgICAgICAgICByZXR1cm4gbmV3IEN0b3I7XG5cbiAgICAgICAgY2FzZSBudW1iZXJUYWc6XG4gICAgICAgIGNhc2Ugc3RyaW5nVGFnOlxuICAgICAgICAgIHJldHVybiBuZXcgQ3RvcihvYmplY3QpO1xuXG4gICAgICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgICAgICAgIHJldHVybiBjbG9uZVJlZ0V4cChvYmplY3QpO1xuXG4gICAgICAgIGNhc2Ugc2V0VGFnOlxuICAgICAgICAgIHJldHVybiBuZXcgQ3RvcjtcblxuICAgICAgICBjYXNlIHN5bWJvbFRhZzpcbiAgICAgICAgICByZXR1cm4gY2xvbmVTeW1ib2wob2JqZWN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnNlcnRzIHdyYXBwZXIgYGRldGFpbHNgIGluIGEgY29tbWVudCBhdCB0aGUgdG9wIG9mIHRoZSBgc291cmNlYCBib2R5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlIFRoZSBzb3VyY2UgdG8gbW9kaWZ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gZGV0YWlscyBUaGUgZGV0YWlscyB0byBpbnNlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgbW9kaWZpZWQgc291cmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluc2VydFdyYXBEZXRhaWxzKHNvdXJjZSwgZGV0YWlscykge1xuICAgICAgdmFyIGxlbmd0aCA9IGRldGFpbHMubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICAgIH1cbiAgICAgIHZhciBsYXN0SW5kZXggPSBsZW5ndGggLSAxO1xuICAgICAgZGV0YWlsc1tsYXN0SW5kZXhdID0gKGxlbmd0aCA+IDEgPyAnJiAnIDogJycpICsgZGV0YWlsc1tsYXN0SW5kZXhdO1xuICAgICAgZGV0YWlscyA9IGRldGFpbHMuam9pbihsZW5ndGggPiAyID8gJywgJyA6ICcgJyk7XG4gICAgICByZXR1cm4gc291cmNlLnJlcGxhY2UocmVXcmFwQ29tbWVudCwgJ3tcXG4vKiBbd3JhcHBlZCB3aXRoICcgKyBkZXRhaWxzICsgJ10gKi9cXG4nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGZsYXR0ZW5hYmxlIGBhcmd1bWVudHNgIG9iamVjdCBvciBhcnJheS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZmxhdHRlbmFibGUsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0ZsYXR0ZW5hYmxlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSkgfHwgaXNBcmd1bWVudHModmFsdWUpIHx8XG4gICAgICAgICEhKHNwcmVhZGFibGVTeW1ib2wgJiYgdmFsdWUgJiYgdmFsdWVbc3ByZWFkYWJsZVN5bWJvbF0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBpbmRleC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9TUFYX1NBRkVfSU5URUdFUl0gVGhlIHVwcGVyIGJvdW5kcyBvZiBhIHZhbGlkIGluZGV4LlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgaW5kZXgsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0luZGV4KHZhbHVlLCBsZW5ndGgpIHtcbiAgICAgIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICAgICAgbGVuZ3RoID0gbGVuZ3RoID09IG51bGwgPyBNQVhfU0FGRV9JTlRFR0VSIDogbGVuZ3RoO1xuXG4gICAgICByZXR1cm4gISFsZW5ndGggJiZcbiAgICAgICAgKHR5cGUgPT0gJ251bWJlcicgfHxcbiAgICAgICAgICAodHlwZSAhPSAnc3ltYm9sJyAmJiByZUlzVWludC50ZXN0KHZhbHVlKSkpICYmXG4gICAgICAgICAgICAodmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8IGxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIHZhbHVlIGFyZ3VtZW50LlxuICAgICAqIEBwYXJhbSB7Kn0gaW5kZXggVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBpbmRleCBvciBrZXkgYXJndW1lbnQuXG4gICAgICogQHBhcmFtIHsqfSBvYmplY3QgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBvYmplY3QgYXJndW1lbnQuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzSXRlcmF0ZWVDYWxsKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gICAgICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgaW5kZXg7XG4gICAgICBpZiAodHlwZSA9PSAnbnVtYmVyJ1xuICAgICAgICAgICAgPyAoaXNBcnJheUxpa2Uob2JqZWN0KSAmJiBpc0luZGV4KGluZGV4LCBvYmplY3QubGVuZ3RoKSlcbiAgICAgICAgICAgIDogKHR5cGUgPT0gJ3N0cmluZycgJiYgaW5kZXggaW4gb2JqZWN0KVxuICAgICAgICAgICkge1xuICAgICAgICByZXR1cm4gZXEob2JqZWN0W2luZGV4XSwgdmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcHJvcGVydHkgbmFtZSBhbmQgbm90IGEgcHJvcGVydHkgcGF0aC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkga2V5cyBvbi5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3BlcnR5IG5hbWUsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0tleSh2YWx1ZSwgb2JqZWN0KSB7XG4gICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgICBpZiAodHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nIHx8XG4gICAgICAgICAgdmFsdWUgPT0gbnVsbCB8fCBpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVJc1BsYWluUHJvcC50ZXN0KHZhbHVlKSB8fCAhcmVJc0RlZXBQcm9wLnRlc3QodmFsdWUpIHx8XG4gICAgICAgIChvYmplY3QgIT0gbnVsbCAmJiB2YWx1ZSBpbiBPYmplY3Qob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHVzZSBhcyB1bmlxdWUgb2JqZWN0IGtleS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0tleWFibGUodmFsdWUpIHtcbiAgICAgIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICAgICAgcmV0dXJuICh0eXBlID09ICdzdHJpbmcnIHx8IHR5cGUgPT0gJ251bWJlcicgfHwgdHlwZSA9PSAnc3ltYm9sJyB8fCB0eXBlID09ICdib29sZWFuJylcbiAgICAgICAgPyAodmFsdWUgIT09ICdfX3Byb3RvX18nKVxuICAgICAgICA6ICh2YWx1ZSA9PT0gbnVsbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgYSBsYXp5IGNvdW50ZXJwYXJ0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGhhcyBhIGxhenkgY291bnRlcnBhcnQsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0xhemlhYmxlKGZ1bmMpIHtcbiAgICAgIHZhciBmdW5jTmFtZSA9IGdldEZ1bmNOYW1lKGZ1bmMpLFxuICAgICAgICAgIG90aGVyID0gbG9kYXNoW2Z1bmNOYW1lXTtcblxuICAgICAgaWYgKHR5cGVvZiBvdGhlciAhPSAnZnVuY3Rpb24nIHx8ICEoZnVuY05hbWUgaW4gTGF6eVdyYXBwZXIucHJvdG90eXBlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoZnVuYyA9PT0gb3RoZXIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICB2YXIgZGF0YSA9IGdldERhdGEob3RoZXIpO1xuICAgICAgcmV0dXJuICEhZGF0YSAmJiBmdW5jID09PSBkYXRhWzBdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgZnVuY2AgaGFzIGl0cyBzb3VyY2UgbWFza2VkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGlzIG1hc2tlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTWFza2VkKGZ1bmMpIHtcbiAgICAgIHJldHVybiAhIW1hc2tTcmNLZXkgJiYgKG1hc2tTcmNLZXkgaW4gZnVuYyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBmdW5jYCBpcyBjYXBhYmxlIG9mIGJlaW5nIG1hc2tlZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBpcyBtYXNrYWJsZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIHZhciBpc01hc2thYmxlID0gY29yZUpzRGF0YSA/IGlzRnVuY3Rpb24gOiBzdHViRmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYSBwcm90b3R5cGUgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3RvdHlwZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzUHJvdG90eXBlKHZhbHVlKSB7XG4gICAgICB2YXIgQ3RvciA9IHZhbHVlICYmIHZhbHVlLmNvbnN0cnVjdG9yLFxuICAgICAgICAgIHByb3RvID0gKHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3Rvci5wcm90b3R5cGUpIHx8IG9iamVjdFByb3RvO1xuXG4gICAgICByZXR1cm4gdmFsdWUgPT09IHByb3RvO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciBzdHJpY3QgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGkuZS4gYD09PWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlmIHN1aXRhYmxlIGZvciBzdHJpY3RcbiAgICAgKiAgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1N0cmljdENvbXBhcmFibGUodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgJiYgIWlzT2JqZWN0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYG1hdGNoZXNQcm9wZXJ0eWAgZm9yIHNvdXJjZSB2YWx1ZXMgc3VpdGFibGVcbiAgICAgKiBmb3Igc3RyaWN0IGVxdWFsaXR5IGNvbXBhcmlzb25zLCBpLmUuIGA9PT1gLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKGtleSwgc3JjVmFsdWUpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYmplY3Rba2V5XSA9PT0gc3JjVmFsdWUgJiZcbiAgICAgICAgICAoc3JjVmFsdWUgIT09IHVuZGVmaW5lZCB8fCAoa2V5IGluIE9iamVjdChvYmplY3QpKSk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tZW1vaXplYCB3aGljaCBjbGVhcnMgdGhlIG1lbW9pemVkIGZ1bmN0aW9uJ3NcbiAgICAgKiBjYWNoZSB3aGVuIGl0IGV4Y2VlZHMgYE1BWF9NRU1PSVpFX1NJWkVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWVtb2l6ZUNhcHBlZChmdW5jKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gbWVtb2l6ZShmdW5jLCBmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgaWYgKGNhY2hlLnNpemUgPT09IE1BWF9NRU1PSVpFX1NJWkUpIHtcbiAgICAgICAgICBjYWNoZS5jbGVhcigpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgICB9KTtcblxuICAgICAgdmFyIGNhY2hlID0gcmVzdWx0LmNhY2hlO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXJnZXMgdGhlIGZ1bmN0aW9uIG1ldGFkYXRhIG9mIGBzb3VyY2VgIGludG8gYGRhdGFgLlxuICAgICAqXG4gICAgICogTWVyZ2luZyBtZXRhZGF0YSByZWR1Y2VzIHRoZSBudW1iZXIgb2Ygd3JhcHBlcnMgdXNlZCB0byBpbnZva2UgYSBmdW5jdGlvbi5cbiAgICAgKiBUaGlzIGlzIHBvc3NpYmxlIGJlY2F1c2UgbWV0aG9kcyBsaWtlIGBfLmJpbmRgLCBgXy5jdXJyeWAsIGFuZCBgXy5wYXJ0aWFsYFxuICAgICAqIG1heSBiZSBhcHBsaWVkIHJlZ2FyZGxlc3Mgb2YgZXhlY3V0aW9uIG9yZGVyLiBNZXRob2RzIGxpa2UgYF8uYXJ5YCBhbmRcbiAgICAgKiBgXy5yZWFyZ2AgbW9kaWZ5IGZ1bmN0aW9uIGFyZ3VtZW50cywgbWFraW5nIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGFyZVxuICAgICAqIGV4ZWN1dGVkIGltcG9ydGFudCwgcHJldmVudGluZyB0aGUgbWVyZ2luZyBvZiBtZXRhZGF0YS4gSG93ZXZlciwgd2UgbWFrZVxuICAgICAqIGFuIGV4Y2VwdGlvbiBmb3IgYSBzYWZlIGNvbWJpbmVkIGNhc2Ugd2hlcmUgY3VycmllZCBmdW5jdGlvbnMgaGF2ZSBgXy5hcnlgXG4gICAgICogYW5kIG9yIGBfLnJlYXJnYCBhcHBsaWVkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBkYXRhIFRoZSBkZXN0aW5hdGlvbiBtZXRhZGF0YS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIHNvdXJjZSBtZXRhZGF0YS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGRhdGFgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1lcmdlRGF0YShkYXRhLCBzb3VyY2UpIHtcbiAgICAgIHZhciBiaXRtYXNrID0gZGF0YVsxXSxcbiAgICAgICAgICBzcmNCaXRtYXNrID0gc291cmNlWzFdLFxuICAgICAgICAgIG5ld0JpdG1hc2sgPSBiaXRtYXNrIHwgc3JjQml0bWFzayxcbiAgICAgICAgICBpc0NvbW1vbiA9IG5ld0JpdG1hc2sgPCAoV1JBUF9CSU5EX0ZMQUcgfCBXUkFQX0JJTkRfS0VZX0ZMQUcgfCBXUkFQX0FSWV9GTEFHKTtcblxuICAgICAgdmFyIGlzQ29tYm8gPVxuICAgICAgICAoKHNyY0JpdG1hc2sgPT0gV1JBUF9BUllfRkxBRykgJiYgKGJpdG1hc2sgPT0gV1JBUF9DVVJSWV9GTEFHKSkgfHxcbiAgICAgICAgKChzcmNCaXRtYXNrID09IFdSQVBfQVJZX0ZMQUcpICYmIChiaXRtYXNrID09IFdSQVBfUkVBUkdfRkxBRykgJiYgKGRhdGFbN10ubGVuZ3RoIDw9IHNvdXJjZVs4XSkpIHx8XG4gICAgICAgICgoc3JjQml0bWFzayA9PSAoV1JBUF9BUllfRkxBRyB8IFdSQVBfUkVBUkdfRkxBRykpICYmIChzb3VyY2VbN10ubGVuZ3RoIDw9IHNvdXJjZVs4XSkgJiYgKGJpdG1hc2sgPT0gV1JBUF9DVVJSWV9GTEFHKSk7XG5cbiAgICAgIC8vIEV4aXQgZWFybHkgaWYgbWV0YWRhdGEgY2FuJ3QgYmUgbWVyZ2VkLlxuICAgICAgaWYgKCEoaXNDb21tb24gfHwgaXNDb21ibykpIHtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICB9XG4gICAgICAvLyBVc2Ugc291cmNlIGB0aGlzQXJnYCBpZiBhdmFpbGFibGUuXG4gICAgICBpZiAoc3JjQml0bWFzayAmIFdSQVBfQklORF9GTEFHKSB7XG4gICAgICAgIGRhdGFbMl0gPSBzb3VyY2VbMl07XG4gICAgICAgIC8vIFNldCB3aGVuIGN1cnJ5aW5nIGEgYm91bmQgZnVuY3Rpb24uXG4gICAgICAgIG5ld0JpdG1hc2sgfD0gYml0bWFzayAmIFdSQVBfQklORF9GTEFHID8gMCA6IFdSQVBfQ1VSUllfQk9VTkRfRkxBRztcbiAgICAgIH1cbiAgICAgIC8vIENvbXBvc2UgcGFydGlhbCBhcmd1bWVudHMuXG4gICAgICB2YXIgdmFsdWUgPSBzb3VyY2VbM107XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgdmFyIHBhcnRpYWxzID0gZGF0YVszXTtcbiAgICAgICAgZGF0YVszXSA9IHBhcnRpYWxzID8gY29tcG9zZUFyZ3MocGFydGlhbHMsIHZhbHVlLCBzb3VyY2VbNF0pIDogdmFsdWU7XG4gICAgICAgIGRhdGFbNF0gPSBwYXJ0aWFscyA/IHJlcGxhY2VIb2xkZXJzKGRhdGFbM10sIFBMQUNFSE9MREVSKSA6IHNvdXJjZVs0XTtcbiAgICAgIH1cbiAgICAgIC8vIENvbXBvc2UgcGFydGlhbCByaWdodCBhcmd1bWVudHMuXG4gICAgICB2YWx1ZSA9IHNvdXJjZVs1XTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBwYXJ0aWFscyA9IGRhdGFbNV07XG4gICAgICAgIGRhdGFbNV0gPSBwYXJ0aWFscyA/IGNvbXBvc2VBcmdzUmlnaHQocGFydGlhbHMsIHZhbHVlLCBzb3VyY2VbNl0pIDogdmFsdWU7XG4gICAgICAgIGRhdGFbNl0gPSBwYXJ0aWFscyA/IHJlcGxhY2VIb2xkZXJzKGRhdGFbNV0sIFBMQUNFSE9MREVSKSA6IHNvdXJjZVs2XTtcbiAgICAgIH1cbiAgICAgIC8vIFVzZSBzb3VyY2UgYGFyZ1Bvc2AgaWYgYXZhaWxhYmxlLlxuICAgICAgdmFsdWUgPSBzb3VyY2VbN107XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgZGF0YVs3XSA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgLy8gVXNlIHNvdXJjZSBgYXJ5YCBpZiBpdCdzIHNtYWxsZXIuXG4gICAgICBpZiAoc3JjQml0bWFzayAmIFdSQVBfQVJZX0ZMQUcpIHtcbiAgICAgICAgZGF0YVs4XSA9IGRhdGFbOF0gPT0gbnVsbCA/IHNvdXJjZVs4XSA6IG5hdGl2ZU1pbihkYXRhWzhdLCBzb3VyY2VbOF0pO1xuICAgICAgfVxuICAgICAgLy8gVXNlIHNvdXJjZSBgYXJpdHlgIGlmIG9uZSBpcyBub3QgcHJvdmlkZWQuXG4gICAgICBpZiAoZGF0YVs5XSA9PSBudWxsKSB7XG4gICAgICAgIGRhdGFbOV0gPSBzb3VyY2VbOV07XG4gICAgICB9XG4gICAgICAvLyBVc2Ugc291cmNlIGBmdW5jYCBhbmQgbWVyZ2UgYml0bWFza3MuXG4gICAgICBkYXRhWzBdID0gc291cmNlWzBdO1xuICAgICAgZGF0YVsxXSA9IG5ld0JpdG1hc2s7XG5cbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZVxuICAgICAqIFtgT2JqZWN0LmtleXNgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAgICAgKiBleGNlcHQgdGhhdCBpdCBpbmNsdWRlcyBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBuYXRpdmVLZXlzSW4ob2JqZWN0KSB7XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBpZiAob2JqZWN0ICE9IG51bGwpIHtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIE9iamVjdChvYmplY3QpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIHVzaW5nIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKHZhbHVlKSB7XG4gICAgICByZXR1cm4gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUmVzdGAgd2hpY2ggdHJhbnNmb3JtcyB0aGUgcmVzdCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSByZXN0IGFycmF5IHRyYW5zZm9ybS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvdmVyUmVzdChmdW5jLCBzdGFydCwgdHJhbnNmb3JtKSB7XG4gICAgICBzdGFydCA9IG5hdGl2ZU1heChzdGFydCA9PT0gdW5kZWZpbmVkID8gKGZ1bmMubGVuZ3RoIC0gMSkgOiBzdGFydCwgMCk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICAgICAgaW5kZXggPSAtMSxcbiAgICAgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChhcmdzLmxlbmd0aCAtIHN0YXJ0LCAwKSxcbiAgICAgICAgICAgIGFycmF5ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIGFycmF5W2luZGV4XSA9IGFyZ3Nbc3RhcnQgKyBpbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgaW5kZXggPSAtMTtcbiAgICAgICAgdmFyIG90aGVyQXJncyA9IEFycmF5KHN0YXJ0ICsgMSk7XG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgc3RhcnQpIHtcbiAgICAgICAgICBvdGhlckFyZ3NbaW5kZXhdID0gYXJnc1tpbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgb3RoZXJBcmdzW3N0YXJ0XSA9IHRyYW5zZm9ybShhcnJheSk7XG4gICAgICAgIHJldHVybiBhcHBseShmdW5jLCB0aGlzLCBvdGhlckFyZ3MpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBwYXJlbnQgdmFsdWUgYXQgYHBhdGhgIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheX0gcGF0aCBUaGUgcGF0aCB0byBnZXQgdGhlIHBhcmVudCB2YWx1ZSBvZi5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcGFyZW50IHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBhcmVudChvYmplY3QsIHBhdGgpIHtcbiAgICAgIHJldHVybiBwYXRoLmxlbmd0aCA8IDIgPyBvYmplY3QgOiBiYXNlR2V0KG9iamVjdCwgYmFzZVNsaWNlKHBhdGgsIDAsIC0xKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVvcmRlciBgYXJyYXlgIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIGluZGV4ZXMgd2hlcmUgdGhlIGVsZW1lbnQgYXRcbiAgICAgKiB0aGUgZmlyc3QgaW5kZXggaXMgYXNzaWduZWQgYXMgdGhlIGZpcnN0IGVsZW1lbnQsIHRoZSBlbGVtZW50IGF0XG4gICAgICogdGhlIHNlY29uZCBpbmRleCBpcyBhc3NpZ25lZCBhcyB0aGUgc2Vjb25kIGVsZW1lbnQsIGFuZCBzbyBvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHJlb3JkZXIuXG4gICAgICogQHBhcmFtIHtBcnJheX0gaW5kZXhlcyBUaGUgYXJyYW5nZWQgYXJyYXkgaW5kZXhlcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZW9yZGVyKGFycmF5LCBpbmRleGVzKSB7XG4gICAgICB2YXIgYXJyTGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1pbihpbmRleGVzLmxlbmd0aCwgYXJyTGVuZ3RoKSxcbiAgICAgICAgICBvbGRBcnJheSA9IGNvcHlBcnJheShhcnJheSk7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIgaW5kZXggPSBpbmRleGVzW2xlbmd0aF07XG4gICAgICAgIGFycmF5W2xlbmd0aF0gPSBpc0luZGV4KGluZGV4LCBhcnJMZW5ndGgpID8gb2xkQXJyYXlbaW5kZXhdIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgLCB1bmxlc3MgYGtleWAgaXMgXCJfX3Byb3RvX19cIiBvciBcImNvbnN0cnVjdG9yXCIuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcHJvcGVydHkgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2FmZUdldChvYmplY3QsIGtleSkge1xuICAgICAgaWYgKGtleSA9PT0gJ2NvbnN0cnVjdG9yJyAmJiB0eXBlb2Ygb2JqZWN0W2tleV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoa2V5ID09ICdfX3Byb3RvX18nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9iamVjdFtrZXldO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgbWV0YWRhdGEgZm9yIGBmdW5jYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBJZiB0aGlzIGZ1bmN0aW9uIGJlY29tZXMgaG90LCBpLmUuIGlzIGludm9rZWQgYSBsb3QgaW4gYSBzaG9ydFxuICAgICAqIHBlcmlvZCBvZiB0aW1lLCBpdCB3aWxsIHRyaXAgaXRzIGJyZWFrZXIgYW5kIHRyYW5zaXRpb24gdG8gYW4gaWRlbnRpdHlcbiAgICAgKiBmdW5jdGlvbiB0byBhdm9pZCBnYXJiYWdlIGNvbGxlY3Rpb24gcGF1c2VzIGluIFY4LiBTZWVcbiAgICAgKiBbVjggaXNzdWUgMjA3MF0oaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MjA3MClcbiAgICAgKiBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhc3NvY2lhdGUgbWV0YWRhdGEgd2l0aC5cbiAgICAgKiBAcGFyYW0geyp9IGRhdGEgVGhlIG1ldGFkYXRhLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gICAgICovXG4gICAgdmFyIHNldERhdGEgPSBzaG9ydE91dChiYXNlU2V0RGF0YSk7XG5cbiAgICAvKipcbiAgICAgKiBBIHNpbXBsZSB3cmFwcGVyIGFyb3VuZCB0aGUgZ2xvYmFsIFtgc2V0VGltZW91dGBdKGh0dHBzOi8vbWRuLmlvL3NldFRpbWVvdXQpLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBkZWxheS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gd2FpdCBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheSBpbnZvY2F0aW9uLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ8T2JqZWN0fSBSZXR1cm5zIHRoZSB0aW1lciBpZCBvciB0aW1lb3V0IG9iamVjdC5cbiAgICAgKi9cbiAgICB2YXIgc2V0VGltZW91dCA9IGN0eFNldFRpbWVvdXQgfHwgZnVuY3Rpb24oZnVuYywgd2FpdCkge1xuICAgICAgcmV0dXJuIHJvb3Quc2V0VGltZW91dChmdW5jLCB3YWl0KTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYHRvU3RyaW5nYCBtZXRob2Qgb2YgYGZ1bmNgIHRvIHJldHVybiBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAgICAgKi9cbiAgICB2YXIgc2V0VG9TdHJpbmcgPSBzaG9ydE91dChiYXNlU2V0VG9TdHJpbmcpO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYHRvU3RyaW5nYCBtZXRob2Qgb2YgYHdyYXBwZXJgIHRvIG1pbWljIHRoZSBzb3VyY2Ugb2YgYHJlZmVyZW5jZWBcbiAgICAgKiB3aXRoIHdyYXBwZXIgZGV0YWlscyBpbiBhIGNvbW1lbnQgYXQgdGhlIHRvcCBvZiB0aGUgc291cmNlIGJvZHkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHdyYXBwZXIgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWZlcmVuY2UgVGhlIHJlZmVyZW5jZSBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgd3JhcHBlcmAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2V0V3JhcFRvU3RyaW5nKHdyYXBwZXIsIHJlZmVyZW5jZSwgYml0bWFzaykge1xuICAgICAgdmFyIHNvdXJjZSA9IChyZWZlcmVuY2UgKyAnJyk7XG4gICAgICByZXR1cm4gc2V0VG9TdHJpbmcod3JhcHBlciwgaW5zZXJ0V3JhcERldGFpbHMoc291cmNlLCB1cGRhdGVXcmFwRGV0YWlscyhnZXRXcmFwRGV0YWlscyhzb3VyY2UpLCBiaXRtYXNrKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0J2xsIHNob3J0IG91dCBhbmQgaW52b2tlIGBpZGVudGl0eWAgaW5zdGVhZFxuICAgICAqIG9mIGBmdW5jYCB3aGVuIGl0J3MgY2FsbGVkIGBIT1RfQ09VTlRgIG9yIG1vcmUgdGltZXMgaW4gYEhPVF9TUEFOYFxuICAgICAqIG1pbGxpc2Vjb25kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc2hvcnRhYmxlIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNob3J0T3V0KGZ1bmMpIHtcbiAgICAgIHZhciBjb3VudCA9IDAsXG4gICAgICAgICAgbGFzdENhbGxlZCA9IDA7XG5cbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHN0YW1wID0gbmF0aXZlTm93KCksXG4gICAgICAgICAgICByZW1haW5pbmcgPSBIT1RfU1BBTiAtIChzdGFtcCAtIGxhc3RDYWxsZWQpO1xuXG4gICAgICAgIGxhc3RDYWxsZWQgPSBzdGFtcDtcbiAgICAgICAgaWYgKHJlbWFpbmluZyA+IDApIHtcbiAgICAgICAgICBpZiAoKytjb3VudCA+PSBIT1RfQ09VTlQpIHtcbiAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHNbMF07XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvdW50ID0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuYy5hcHBseSh1bmRlZmluZWQsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zaHVmZmxlYCB3aGljaCBtdXRhdGVzIGFuZCBzZXRzIHRoZSBzaXplIG9mIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzaHVmZmxlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc2l6ZT1hcnJheS5sZW5ndGhdIFRoZSBzaXplIG9mIGBhcnJheWAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2h1ZmZsZVNlbGYoYXJyYXksIHNpemUpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICBsYXN0SW5kZXggPSBsZW5ndGggLSAxO1xuXG4gICAgICBzaXplID0gc2l6ZSA9PT0gdW5kZWZpbmVkID8gbGVuZ3RoIDogc2l6ZTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgc2l6ZSkge1xuICAgICAgICB2YXIgcmFuZCA9IGJhc2VSYW5kb20oaW5kZXgsIGxhc3RJbmRleCksXG4gICAgICAgICAgICB2YWx1ZSA9IGFycmF5W3JhbmRdO1xuXG4gICAgICAgIGFycmF5W3JhbmRdID0gYXJyYXlbaW5kZXhdO1xuICAgICAgICBhcnJheVtpbmRleF0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGFycmF5Lmxlbmd0aCA9IHNpemU7XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG8gYSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICovXG4gICAgdmFyIHN0cmluZ1RvUGF0aCA9IG1lbW9pemVDYXBwZWQoZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBpZiAoc3RyaW5nLmNoYXJDb2RlQXQoMCkgPT09IDQ2IC8qIC4gKi8pIHtcbiAgICAgICAgcmVzdWx0LnB1c2goJycpO1xuICAgICAgfVxuICAgICAgc3RyaW5nLnJlcGxhY2UocmVQcm9wTmFtZSwgZnVuY3Rpb24obWF0Y2gsIG51bWJlciwgcXVvdGUsIHN1YlN0cmluZykge1xuICAgICAgICByZXN1bHQucHVzaChxdW90ZSA/IHN1YlN0cmluZy5yZXBsYWNlKHJlRXNjYXBlQ2hhciwgJyQxJykgOiAobnVtYmVyIHx8IG1hdGNoKSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIGtleSBpZiBpdCdzIG5vdCBhIHN0cmluZyBvciBzeW1ib2wuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge3N0cmluZ3xzeW1ib2x9IFJldHVybnMgdGhlIGtleS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b0tleSh2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fCBpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9ICh2YWx1ZSArICcnKTtcbiAgICAgIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgZnVuY2AgdG8gaXRzIHNvdXJjZSBjb2RlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvU291cmNlKGZ1bmMpIHtcbiAgICAgIGlmIChmdW5jICE9IG51bGwpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gZnVuY1RvU3RyaW5nLmNhbGwoZnVuYyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIChmdW5jICsgJycpO1xuICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgfVxuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgd3JhcHBlciBgZGV0YWlsc2AgYmFzZWQgb24gYGJpdG1hc2tgIGZsYWdzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IGRldGFpbHMgVGhlIGRldGFpbHMgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBkZXRhaWxzYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1cGRhdGVXcmFwRGV0YWlscyhkZXRhaWxzLCBiaXRtYXNrKSB7XG4gICAgICBhcnJheUVhY2god3JhcEZsYWdzLCBmdW5jdGlvbihwYWlyKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9ICdfLicgKyBwYWlyWzBdO1xuICAgICAgICBpZiAoKGJpdG1hc2sgJiBwYWlyWzFdKSAmJiAhYXJyYXlJbmNsdWRlcyhkZXRhaWxzLCB2YWx1ZSkpIHtcbiAgICAgICAgICBkZXRhaWxzLnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBkZXRhaWxzLnNvcnQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHdyYXBwZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gd3JhcHBlciBUaGUgd3JhcHBlciB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgd3JhcHBlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyQ2xvbmUod3JhcHBlcikge1xuICAgICAgaWYgKHdyYXBwZXIgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcikge1xuICAgICAgICByZXR1cm4gd3JhcHBlci5jbG9uZSgpO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBMb2Rhc2hXcmFwcGVyKHdyYXBwZXIuX193cmFwcGVkX18sIHdyYXBwZXIuX19jaGFpbl9fKTtcbiAgICAgIHJlc3VsdC5fX2FjdGlvbnNfXyA9IGNvcHlBcnJheSh3cmFwcGVyLl9fYWN0aW9uc19fKTtcbiAgICAgIHJlc3VsdC5fX2luZGV4X18gID0gd3JhcHBlci5fX2luZGV4X187XG4gICAgICByZXN1bHQuX192YWx1ZXNfXyA9IHdyYXBwZXIuX192YWx1ZXNfXztcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBlbGVtZW50cyBzcGxpdCBpbnRvIGdyb3VwcyB0aGUgbGVuZ3RoIG9mIGBzaXplYC5cbiAgICAgKiBJZiBgYXJyYXlgIGNhbid0IGJlIHNwbGl0IGV2ZW5seSwgdGhlIGZpbmFsIGNodW5rIHdpbGwgYmUgdGhlIHJlbWFpbmluZ1xuICAgICAqIGVsZW1lbnRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHByb2Nlc3MuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzaXplPTFdIFRoZSBsZW5ndGggb2YgZWFjaCBjaHVua1xuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY2h1bmtzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNodW5rKFsnYScsICdiJywgJ2MnLCAnZCddLCAyKTtcbiAgICAgKiAvLyA9PiBbWydhJywgJ2InXSwgWydjJywgJ2QnXV1cbiAgICAgKlxuICAgICAqIF8uY2h1bmsoWydhJywgJ2InLCAnYycsICdkJ10sIDMpO1xuICAgICAqIC8vID0+IFtbJ2EnLCAnYicsICdjJ10sIFsnZCddXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNodW5rKGFycmF5LCBzaXplLCBndWFyZCkge1xuICAgICAgaWYgKChndWFyZCA/IGlzSXRlcmF0ZWVDYWxsKGFycmF5LCBzaXplLCBndWFyZCkgOiBzaXplID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHNpemUgPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2l6ZSA9IG5hdGl2ZU1heCh0b0ludGVnZXIoc2l6ZSksIDApO1xuICAgICAgfVxuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGggfHwgc2l6ZSA8IDEpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gMCxcbiAgICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgICAgcmVzdWx0ID0gQXJyYXkobmF0aXZlQ2VpbChsZW5ndGggLyBzaXplKSk7XG5cbiAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSBiYXNlU2xpY2UoYXJyYXksIGluZGV4LCAoaW5kZXggKz0gc2l6ZSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IHdpdGggYWxsIGZhbHNleSB2YWx1ZXMgcmVtb3ZlZC4gVGhlIHZhbHVlcyBgZmFsc2VgLCBgbnVsbGAsXG4gICAgICogYDBgLCBgXCJcImAsIGB1bmRlZmluZWRgLCBhbmQgYE5hTmAgYXJlIGZhbHNleS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb21wYWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jb21wYWN0KFswLCAxLCBmYWxzZSwgMiwgJycsIDNdKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb21wYWN0KGFycmF5KSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBhcnJheSBjb25jYXRlbmF0aW5nIGBhcnJheWAgd2l0aCBhbnkgYWRkaXRpb25hbCBhcnJheXNcbiAgICAgKiBhbmQvb3IgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNvbmNhdGVuYXRlLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBjb25jYXRlbmF0ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBjb25jYXRlbmF0ZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxXTtcbiAgICAgKiB2YXIgb3RoZXIgPSBfLmNvbmNhdChhcnJheSwgMiwgWzNdLCBbWzRdXSk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhvdGhlcik7XG4gICAgICogLy8gPT4gWzEsIDIsIDMsIFs0XV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25jYXQoKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciBhcmdzID0gQXJyYXkobGVuZ3RoIC0gMSksXG4gICAgICAgICAgYXJyYXkgPSBhcmd1bWVudHNbMF0sXG4gICAgICAgICAgaW5kZXggPSBsZW5ndGg7XG5cbiAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgIGFyZ3NbaW5kZXggLSAxXSA9IGFyZ3VtZW50c1tpbmRleF07XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXlQdXNoKGlzQXJyYXkoYXJyYXkpID8gY29weUFycmF5KGFycmF5KSA6IFthcnJheV0sIGJhc2VGbGF0dGVuKGFyZ3MsIDEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGBhcnJheWAgdmFsdWVzIG5vdCBpbmNsdWRlZCBpbiB0aGUgb3RoZXIgZ2l2ZW4gYXJyYXlzXG4gICAgICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuIFRoZSBvcmRlciBhbmQgcmVmZXJlbmNlcyBvZiByZXN1bHQgdmFsdWVzIGFyZVxuICAgICAqIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5wdWxsQWxsYCwgdGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQHNlZSBfLndpdGhvdXQsIF8ueG9yXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGlmZmVyZW5jZShbMiwgMV0sIFsyLCAzXSk7XG4gICAgICogLy8gPT4gWzFdXG4gICAgICovXG4gICAgdmFyIGRpZmZlcmVuY2UgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheSwgdmFsdWVzKSB7XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2VPYmplY3QoYXJyYXkpXG4gICAgICAgID8gYmFzZURpZmZlcmVuY2UoYXJyYXksIGJhc2VGbGF0dGVuKHZhbHVlcywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5kaWZmZXJlbmNlYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgb2YgYGFycmF5YCBhbmQgYHZhbHVlc2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvblxuICAgICAqIGJ5IHdoaWNoIHRoZXkncmUgY29tcGFyZWQuIFRoZSBvcmRlciBhbmQgcmVmZXJlbmNlcyBvZiByZXN1bHQgdmFsdWVzIGFyZVxuICAgICAqIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDpcbiAgICAgKiAodmFsdWUpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5wdWxsQWxsQnlgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGlmZmVyZW5jZUJ5KFsyLjEsIDEuMl0sIFsyLjMsIDMuNF0sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsxLjJdXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRpZmZlcmVuY2VCeShbeyAneCc6IDIgfSwgeyAneCc6IDEgfV0sIFt7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDIgfV1cbiAgICAgKi9cbiAgICB2YXIgZGlmZmVyZW5jZUJ5ID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXksIHZhbHVlcykge1xuICAgICAgdmFyIGl0ZXJhdGVlID0gbGFzdCh2YWx1ZXMpO1xuICAgICAgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KGl0ZXJhdGVlKSkge1xuICAgICAgICBpdGVyYXRlZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc0FycmF5TGlrZU9iamVjdChhcnJheSlcbiAgICAgICAgPyBiYXNlRGlmZmVyZW5jZShhcnJheSwgYmFzZUZsYXR0ZW4odmFsdWVzLCAxLCBpc0FycmF5TGlrZU9iamVjdCwgdHJ1ZSksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSlcbiAgICAgICAgOiBbXTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZGlmZmVyZW5jZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5YCB0byBgdmFsdWVzYC4gVGhlIG9yZGVyIGFuZFxuICAgICAqIHJlZmVyZW5jZXMgb2YgcmVzdWx0IHZhbHVlcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuIFRoZSBjb21wYXJhdG9yXG4gICAgICogaXMgaW52b2tlZCB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnB1bGxBbGxXaXRoYCwgdGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XTtcbiAgICAgKlxuICAgICAqIF8uZGlmZmVyZW5jZVdpdGgob2JqZWN0cywgW3sgJ3gnOiAxLCAneSc6IDIgfV0sIF8uaXNFcXVhbCk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAyLCAneSc6IDEgfV1cbiAgICAgKi9cbiAgICB2YXIgZGlmZmVyZW5jZVdpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheSwgdmFsdWVzKSB7XG4gICAgICB2YXIgY29tcGFyYXRvciA9IGxhc3QodmFsdWVzKTtcbiAgICAgIGlmIChpc0FycmF5TGlrZU9iamVjdChjb21wYXJhdG9yKSkge1xuICAgICAgICBjb21wYXJhdG9yID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KGFycmF5KVxuICAgICAgICA/IGJhc2VEaWZmZXJlbmNlKGFycmF5LCBiYXNlRmxhdHRlbih2YWx1ZXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSwgdW5kZWZpbmVkLCBjb21wYXJhdG9yKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBgbmAgZWxlbWVudHMgZHJvcHBlZCBmcm9tIHRoZSBiZWdpbm5pbmcuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC41LjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gZHJvcC5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kcm9wKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gWzIsIDNdXG4gICAgICpcbiAgICAgKiBfLmRyb3AoWzEsIDIsIDNdLCAyKTtcbiAgICAgKiAvLyA9PiBbM11cbiAgICAgKlxuICAgICAqIF8uZHJvcChbMSwgMiwgM10sIDUpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICpcbiAgICAgKiBfLmRyb3AoWzEsIDIsIDNdLCAwKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkcm9wKGFycmF5LCBuLCBndWFyZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgbiA9IChndWFyZCB8fCBuID09PSB1bmRlZmluZWQpID8gMSA6IHRvSW50ZWdlcihuKTtcbiAgICAgIHJldHVybiBiYXNlU2xpY2UoYXJyYXksIG4gPCAwID8gMCA6IG4sIGxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBgbmAgZWxlbWVudHMgZHJvcHBlZCBmcm9tIHRoZSBlbmQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gZHJvcC5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kcm9wUmlnaHQoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIF8uZHJvcFJpZ2h0KFsxLCAyLCAzXSwgMik7XG4gICAgICogLy8gPT4gWzFdXG4gICAgICpcbiAgICAgKiBfLmRyb3BSaWdodChbMSwgMiwgM10sIDUpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICpcbiAgICAgKiBfLmRyb3BSaWdodChbMSwgMiwgM10sIDApO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRyb3BSaWdodChhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIG4gPSAoZ3VhcmQgfHwgbiA9PT0gdW5kZWZpbmVkKSA/IDEgOiB0b0ludGVnZXIobik7XG4gICAgICBuID0gbGVuZ3RoIC0gbjtcbiAgICAgIHJldHVybiBiYXNlU2xpY2UoYXJyYXksIDAsIG4gPCAwID8gMCA6IG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIGV4Y2x1ZGluZyBlbGVtZW50cyBkcm9wcGVkIGZyb20gdGhlIGVuZC5cbiAgICAgKiBFbGVtZW50cyBhcmUgZHJvcHBlZCB1bnRpbCBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleS4gVGhlIHByZWRpY2F0ZSBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmRyb3BSaWdodFdoaWxlKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wUmlnaHRXaGlsZSh1c2VycywgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZHJvcFJpZ2h0V2hpbGUodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BSaWdodFdoaWxlKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknLCAnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkcm9wUmlnaHRXaGlsZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlV2hpbGUoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIHRydWUsIHRydWUpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgZXhjbHVkaW5nIGVsZW1lbnRzIGRyb3BwZWQgZnJvbSB0aGUgYmVnaW5uaW5nLlxuICAgICAqIEVsZW1lbnRzIGFyZSBkcm9wcGVkIHVudGlsIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleCwgYXJyYXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZHJvcFdoaWxlKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZHJvcFdoaWxlKHVzZXJzLCB7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnLCAncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wV2hpbGUodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ3BlYmJsZXMnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wV2hpbGUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leScsICdmcmVkJywgJ3BlYmJsZXMnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRyb3BXaGlsZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlV2hpbGUoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIHRydWUpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmlsbHMgZWxlbWVudHMgb2YgYGFycmF5YCB3aXRoIGB2YWx1ZWAgZnJvbSBgc3RhcnRgIHVwIHRvLCBidXQgbm90XG4gICAgICogaW5jbHVkaW5nLCBgZW5kYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4yLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmlsbC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBmaWxsIGBhcnJheWAgd2l0aC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxLCAyLCAzXTtcbiAgICAgKlxuICAgICAqIF8uZmlsbChhcnJheSwgJ2EnKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWydhJywgJ2EnLCAnYSddXG4gICAgICpcbiAgICAgKiBfLmZpbGwoQXJyYXkoMyksIDIpO1xuICAgICAqIC8vID0+IFsyLCAyLCAyXVxuICAgICAqXG4gICAgICogXy5maWxsKFs0LCA2LCA4LCAxMF0sICcqJywgMSwgMyk7XG4gICAgICogLy8gPT4gWzQsICcqJywgJyonLCAxMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaWxsKGFycmF5LCB2YWx1ZSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgaWYgKHN0YXJ0ICYmIHR5cGVvZiBzdGFydCAhPSAnbnVtYmVyJyAmJiBpc0l0ZXJhdGVlQ2FsbChhcnJheSwgdmFsdWUsIHN0YXJ0KSkge1xuICAgICAgICBzdGFydCA9IDA7XG4gICAgICAgIGVuZCA9IGxlbmd0aDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlRmlsbChhcnJheSwgdmFsdWUsIHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0XG4gICAgICogZWxlbWVudCBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgaW5zdGVhZCBvZiB0aGUgZWxlbWVudCBpdHNlbGYuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9MF0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmb3VuZCBlbGVtZW50LCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmluZEluZGV4KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLnVzZXIgPT0gJ2Jhcm5leSc7IH0pO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kSW5kZXgodXNlcnMsIHsgJ3VzZXInOiAnZnJlZCcsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kSW5kZXgodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRJbmRleCh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IDJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaW5kSW5kZXgoYXJyYXksIHByZWRpY2F0ZSwgZnJvbUluZGV4KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSBmcm9tSW5kZXggPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgaW5kZXggPSBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VGaW5kSW5kZXgoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGluZGV4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZpbmRJbmRleGAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50c1xuICAgICAqIG9mIGBjb2xsZWN0aW9uYCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9YXJyYXkubGVuZ3RoLTFdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZm91bmQgZWxlbWVudCwgZWxzZSBgLTFgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmZpbmRMYXN0SW5kZXgodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlciA9PSAncGViYmxlcyc7IH0pO1xuICAgICAqIC8vID0+IDJcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kTGFzdEluZGV4KHVzZXJzLCB7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0SW5kZXgodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0SW5kZXgodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmluZExhc3RJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IGxlbmd0aCAtIDE7XG4gICAgICBpZiAoZnJvbUluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaW5kZXggPSB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgICAgICAgaW5kZXggPSBmcm9tSW5kZXggPCAwXG4gICAgICAgICAgPyBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApXG4gICAgICAgICAgOiBuYXRpdmVNaW4oaW5kZXgsIGxlbmd0aCAtIDEpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VGaW5kSW5kZXgoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGluZGV4LCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGbGF0dGVucyBgYXJyYXlgIGEgc2luZ2xlIGxldmVsIGRlZXAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZmxhdHRlbihbMSwgWzIsIFszLCBbNF1dLCA1XV0pO1xuICAgICAqIC8vID0+IFsxLCAyLCBbMywgWzRdXSwgNV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0dGVuKGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYmFzZUZsYXR0ZW4oYXJyYXksIDEpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVjdXJzaXZlbHkgZmxhdHRlbnMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5mbGF0dGVuRGVlcChbMSwgWzIsIFszLCBbNF1dLCA1XV0pO1xuICAgICAqIC8vID0+IFsxLCAyLCAzLCA0LCA1XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXR0ZW5EZWVwKGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYmFzZUZsYXR0ZW4oYXJyYXksIElORklOSVRZKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlY3Vyc2l2ZWx5IGZsYXR0ZW4gYGFycmF5YCB1cCB0byBgZGVwdGhgIHRpbWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtkZXB0aD0xXSBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgWzIsIFszLCBbNF1dLCA1XV07XG4gICAgICpcbiAgICAgKiBfLmZsYXR0ZW5EZXB0aChhcnJheSwgMSk7XG4gICAgICogLy8gPT4gWzEsIDIsIFszLCBbNF1dLCA1XVxuICAgICAqXG4gICAgICogXy5mbGF0dGVuRGVwdGgoYXJyYXksIDIpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzLCBbNF0sIDVdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdHRlbkRlcHRoKGFycmF5LCBkZXB0aCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgZGVwdGggPSBkZXB0aCA9PT0gdW5kZWZpbmVkID8gMSA6IHRvSW50ZWdlcihkZXB0aCk7XG4gICAgICByZXR1cm4gYmFzZUZsYXR0ZW4oYXJyYXksIGRlcHRoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaW52ZXJzZSBvZiBgXy50b1BhaXJzYDsgdGhpcyBtZXRob2QgcmV0dXJucyBhbiBvYmplY3QgY29tcG9zZWRcbiAgICAgKiBmcm9tIGtleS12YWx1ZSBgcGFpcnNgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gcGFpcnMgVGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZyb21QYWlycyhbWydhJywgMV0sIFsnYicsIDJdXSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gZnJvbVBhaXJzKHBhaXJzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwYWlycyA9PSBudWxsID8gMCA6IHBhaXJzLmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSB7fTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHBhaXIgPSBwYWlyc1tpbmRleF07XG4gICAgICAgIHJlc3VsdFtwYWlyWzBdXSA9IHBhaXJbMV07XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBhbGlhcyBmaXJzdFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZmlyc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmhlYWQoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICpcbiAgICAgKiBfLmhlYWQoW10pO1xuICAgICAqIC8vID0+IHVuZGVmaW5lZFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhlYWQoYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGFycmF5WzBdIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGluZGV4IGF0IHdoaWNoIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGB2YWx1ZWAgaXMgZm91bmQgaW4gYGFycmF5YFxuICAgICAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLiBJZiBgZnJvbUluZGV4YCBpcyBuZWdhdGl2ZSwgaXQncyB1c2VkIGFzIHRoZVxuICAgICAqIG9mZnNldCBmcm9tIHRoZSBlbmQgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9MF0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaW5kZXhPZihbMSwgMiwgMSwgMl0sIDIpO1xuICAgICAqIC8vID0+IDFcbiAgICAgKlxuICAgICAqIC8vIFNlYXJjaCBmcm9tIHRoZSBgZnJvbUluZGV4YC5cbiAgICAgKiBfLmluZGV4T2YoWzEsIDIsIDEsIDJdLCAyLCAyKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gZnJvbUluZGV4ID09IG51bGwgPyAwIDogdG9JbnRlZ2VyKGZyb21JbmRleCk7XG4gICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgIGluZGV4ID0gbmF0aXZlTWF4KGxlbmd0aCArIGluZGV4LCAwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIGluZGV4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFsbCBidXQgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbml0aWFsKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5pdGlhbChhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgcmV0dXJuIGxlbmd0aCA/IGJhc2VTbGljZShhcnJheSwgMCwgLTEpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB1bmlxdWUgdmFsdWVzIHRoYXQgYXJlIGluY2x1ZGVkIGluIGFsbCBnaXZlbiBhcnJheXNcbiAgICAgKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzIG9mIHJlc3VsdCB2YWx1ZXMgYXJlXG4gICAgICogZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgaW50ZXJzZWN0aW5nIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbnRlcnNlY3Rpb24oWzIsIDFdLCBbMiwgM10pO1xuICAgICAqIC8vID0+IFsyXVxuICAgICAqL1xuICAgIHZhciBpbnRlcnNlY3Rpb24gPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBtYXBwZWQgPSBhcnJheU1hcChhcnJheXMsIGNhc3RBcnJheUxpa2VPYmplY3QpO1xuICAgICAgcmV0dXJuIChtYXBwZWQubGVuZ3RoICYmIG1hcHBlZFswXSA9PT0gYXJyYXlzWzBdKVxuICAgICAgICA/IGJhc2VJbnRlcnNlY3Rpb24obWFwcGVkKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbnRlcnNlY3Rpb25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBlYWNoIGBhcnJheXNgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb25cbiAgICAgKiBieSB3aGljaCB0aGV5J3JlIGNvbXBhcmVkLiBUaGUgb3JkZXIgYW5kIHJlZmVyZW5jZXMgb2YgcmVzdWx0IHZhbHVlcyBhcmVcbiAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6XG4gICAgICogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgaW50ZXJzZWN0aW5nIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbnRlcnNlY3Rpb25CeShbMi4xLCAxLjJdLCBbMi4zLCAzLjRdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiBbMi4xXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5pbnRlcnNlY3Rpb25CeShbeyAneCc6IDEgfV0sIFt7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDEgfV1cbiAgICAgKi9cbiAgICB2YXIgaW50ZXJzZWN0aW9uQnkgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBpdGVyYXRlZSA9IGxhc3QoYXJyYXlzKSxcbiAgICAgICAgICBtYXBwZWQgPSBhcnJheU1hcChhcnJheXMsIGNhc3RBcnJheUxpa2VPYmplY3QpO1xuXG4gICAgICBpZiAoaXRlcmF0ZWUgPT09IGxhc3QobWFwcGVkKSkge1xuICAgICAgICBpdGVyYXRlZSA9IHVuZGVmaW5lZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hcHBlZC5wb3AoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAobWFwcGVkLmxlbmd0aCAmJiBtYXBwZWRbMF0gPT09IGFycmF5c1swXSlcbiAgICAgICAgPyBiYXNlSW50ZXJzZWN0aW9uKG1hcHBlZCwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbnRlcnNlY3Rpb25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGNvbXBhcmF0b3JgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCB0byBjb21wYXJlIGVsZW1lbnRzIG9mIGBhcnJheXNgLiBUaGUgb3JkZXIgYW5kIHJlZmVyZW5jZXNcbiAgICAgKiBvZiByZXN1bHQgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS4gVGhlIGNvbXBhcmF0b3IgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdHdvIGFyZ3VtZW50czogKGFyclZhbCwgb3RoVmFsKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBpbnRlcnNlY3RpbmcgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV07XG4gICAgICogdmFyIG90aGVycyA9IFt7ICd4JzogMSwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDIgfV07XG4gICAgICpcbiAgICAgKiBfLmludGVyc2VjdGlvbldpdGgob2JqZWN0cywgb3RoZXJzLCBfLmlzRXF1YWwpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSwgJ3knOiAyIH1dXG4gICAgICovXG4gICAgdmFyIGludGVyc2VjdGlvbldpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBjb21wYXJhdG9yID0gbGFzdChhcnJheXMpLFxuICAgICAgICAgIG1hcHBlZCA9IGFycmF5TWFwKGFycmF5cywgY2FzdEFycmF5TGlrZU9iamVjdCk7XG5cbiAgICAgIGNvbXBhcmF0b3IgPSB0eXBlb2YgY29tcGFyYXRvciA9PSAnZnVuY3Rpb24nID8gY29tcGFyYXRvciA6IHVuZGVmaW5lZDtcbiAgICAgIGlmIChjb21wYXJhdG9yKSB7XG4gICAgICAgIG1hcHBlZC5wb3AoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAobWFwcGVkLmxlbmd0aCAmJiBtYXBwZWRbMF0gPT09IGFycmF5c1swXSlcbiAgICAgICAgPyBiYXNlSW50ZXJzZWN0aW9uKG1hcHBlZCwgdW5kZWZpbmVkLCBjb21wYXJhdG9yKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYWxsIGVsZW1lbnRzIGluIGBhcnJheWAgaW50byBhIHN0cmluZyBzZXBhcmF0ZWQgYnkgYHNlcGFyYXRvcmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29udmVydC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3NlcGFyYXRvcj0nLCddIFRoZSBlbGVtZW50IHNlcGFyYXRvci5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBqb2luZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmpvaW4oWydhJywgJ2InLCAnYyddLCAnficpO1xuICAgICAqIC8vID0+ICdhfmJ+YydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBqb2luKGFycmF5LCBzZXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiBhcnJheSA9PSBudWxsID8gJycgOiBuYXRpdmVKb2luLmNhbGwoYXJyYXksIHNlcGFyYXRvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmxhc3QoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGFzdChhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgcmV0dXJuIGxlbmd0aCA/IGFycmF5W2xlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaW5kZXhPZmAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGBhcnJheWAgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD1hcnJheS5sZW5ndGgtMV0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubGFzdEluZGV4T2YoWzEsIDIsIDEsIDJdLCAyKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiAvLyBTZWFyY2ggZnJvbSB0aGUgYGZyb21JbmRleGAuXG4gICAgICogXy5sYXN0SW5kZXhPZihbMSwgMiwgMSwgMl0sIDIsIDIpO1xuICAgICAqIC8vID0+IDFcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsYXN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gbGVuZ3RoO1xuICAgICAgaWYgKGZyb21JbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGluZGV4ID0gdG9JbnRlZ2VyKGZyb21JbmRleCk7XG4gICAgICAgIGluZGV4ID0gaW5kZXggPCAwID8gbmF0aXZlTWF4KGxlbmd0aCArIGluZGV4LCAwKSA6IG5hdGl2ZU1pbihpbmRleCwgbGVuZ3RoIC0gMSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHZhbHVlXG4gICAgICAgID8gc3RyaWN0TGFzdEluZGV4T2YoYXJyYXksIHZhbHVlLCBpbmRleClcbiAgICAgICAgOiBiYXNlRmluZEluZGV4KGFycmF5LCBiYXNlSXNOYU4sIGluZGV4LCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBlbGVtZW50IGF0IGluZGV4IGBuYCBvZiBgYXJyYXlgLiBJZiBgbmAgaXMgbmVnYXRpdmUsIHRoZSBudGhcbiAgICAgKiBlbGVtZW50IGZyb20gdGhlIGVuZCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjExLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTBdIFRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCB0byByZXR1cm4uXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG50aCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsnYScsICdiJywgJ2MnLCAnZCddO1xuICAgICAqXG4gICAgICogXy5udGgoYXJyYXksIDEpO1xuICAgICAqIC8vID0+ICdiJ1xuICAgICAqXG4gICAgICogXy5udGgoYXJyYXksIC0yKTtcbiAgICAgKiAvLyA9PiAnYyc7XG4gICAgICovXG4gICAgZnVuY3Rpb24gbnRoKGFycmF5LCBuKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBiYXNlTnRoKGFycmF5LCB0b0ludGVnZXIobikpIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIGdpdmVuIHZhbHVlcyBmcm9tIGBhcnJheWAgdXNpbmdcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8ud2l0aG91dGAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC4gVXNlIGBfLnJlbW92ZWBcbiAgICAgKiB0byByZW1vdmUgZWxlbWVudHMgZnJvbSBhbiBhcnJheSBieSBwcmVkaWNhdGUuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsnYScsICdiJywgJ2MnLCAnYScsICdiJywgJ2MnXTtcbiAgICAgKlxuICAgICAqIF8ucHVsbChhcnJheSwgJ2EnLCAnYycpO1xuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbJ2InLCAnYiddXG4gICAgICovXG4gICAgdmFyIHB1bGwgPSBiYXNlUmVzdChwdWxsQWxsKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucHVsbGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBhbiBhcnJheSBvZiB2YWx1ZXMgdG8gcmVtb3ZlLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5kaWZmZXJlbmNlYCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsnYScsICdiJywgJ2MnLCAnYScsICdiJywgJ2MnXTtcbiAgICAgKlxuICAgICAqIF8ucHVsbEFsbChhcnJheSwgWydhJywgJ2MnXSk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsnYicsICdiJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwdWxsQWxsKGFycmF5LCB2YWx1ZXMpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoICYmIHZhbHVlcyAmJiB2YWx1ZXMubGVuZ3RoKVxuICAgICAgICA/IGJhc2VQdWxsQWxsKGFycmF5LCB2YWx1ZXMpXG4gICAgICAgIDogYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5wdWxsQWxsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgb2YgYGFycmF5YCBhbmQgYHZhbHVlc2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvblxuICAgICAqIGJ5IHdoaWNoIHRoZXkncmUgY29tcGFyZWQuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5kaWZmZXJlbmNlQnlgLCB0aGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFt7ICd4JzogMSB9LCB7ICd4JzogMiB9LCB7ICd4JzogMyB9LCB7ICd4JzogMSB9XTtcbiAgICAgKlxuICAgICAqIF8ucHVsbEFsbEJ5KGFycmF5LCBbeyAneCc6IDEgfSwgeyAneCc6IDMgfV0sICd4Jyk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHB1bGxBbGxCeShhcnJheSwgdmFsdWVzLCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGggJiYgdmFsdWVzICYmIHZhbHVlcy5sZW5ndGgpXG4gICAgICAgID8gYmFzZVB1bGxBbGwoYXJyYXksIHZhbHVlcywgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKVxuICAgICAgICA6IGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucHVsbEFsbGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5YCB0byBgdmFsdWVzYC4gVGhlIGNvbXBhcmF0b3IgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdHdvIGFyZ3VtZW50czogKGFyclZhbCwgb3RoVmFsKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8uZGlmZmVyZW5jZVdpdGhgLCB0aGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC42LjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDMsICd5JzogNCB9LCB7ICd4JzogNSwgJ3knOiA2IH1dO1xuICAgICAqXG4gICAgICogXy5wdWxsQWxsV2l0aChhcnJheSwgW3sgJ3gnOiAzLCAneSc6IDQgfV0sIF8uaXNFcXVhbCk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiA1LCAneSc6IDYgfV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwdWxsQWxsV2l0aChhcnJheSwgdmFsdWVzLCBjb21wYXJhdG9yKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCAmJiB2YWx1ZXMgJiYgdmFsdWVzLmxlbmd0aClcbiAgICAgICAgPyBiYXNlUHVsbEFsbChhcnJheSwgdmFsdWVzLCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpXG4gICAgICAgIDogYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBlbGVtZW50cyBmcm9tIGBhcnJheWAgY29ycmVzcG9uZGluZyB0byBgaW5kZXhlc2AgYW5kIHJldHVybnMgYW5cbiAgICAgKiBhcnJheSBvZiByZW1vdmVkIGVsZW1lbnRzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5hdGAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHsuLi4obnVtYmVyfG51bWJlcltdKX0gW2luZGV4ZXNdIFRoZSBpbmRleGVzIG9mIGVsZW1lbnRzIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiByZW1vdmVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbJ2EnLCAnYicsICdjJywgJ2QnXTtcbiAgICAgKiB2YXIgcHVsbGVkID0gXy5wdWxsQXQoYXJyYXksIFsxLCAzXSk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWydhJywgJ2MnXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2cocHVsbGVkKTtcbiAgICAgKiAvLyA9PiBbJ2InLCAnZCddXG4gICAgICovXG4gICAgdmFyIHB1bGxBdCA9IGZsYXRSZXN0KGZ1bmN0aW9uKGFycmF5LCBpbmRleGVzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0gYmFzZUF0KGFycmF5LCBpbmRleGVzKTtcblxuICAgICAgYmFzZVB1bGxBdChhcnJheSwgYXJyYXlNYXAoaW5kZXhlcywgZnVuY3Rpb24oaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGlzSW5kZXgoaW5kZXgsIGxlbmd0aCkgPyAraW5kZXggOiBpbmRleDtcbiAgICAgIH0pLnNvcnQoY29tcGFyZUFzY2VuZGluZykpO1xuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwgZWxlbWVudHMgZnJvbSBgYXJyYXlgIHRoYXQgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yXG4gICAgICogYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdGhlIHJlbW92ZWQgZWxlbWVudHMuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4LCBhcnJheSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLmZpbHRlcmAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC4gVXNlIGBfLnB1bGxgXG4gICAgICogdG8gcHVsbCBlbGVtZW50cyBmcm9tIGFuIGFycmF5IGJ5IHZhbHVlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcmVtb3ZlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDMsIDRdO1xuICAgICAqIHZhciBldmVucyA9IF8ucmVtb3ZlKGFycmF5LCBmdW5jdGlvbihuKSB7XG4gICAgICogICByZXR1cm4gbiAlIDIgPT0gMDtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMSwgM11cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGV2ZW5zKTtcbiAgICAgKiAvLyA9PiBbMiwgNF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZW1vdmUoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgaWYgKCEoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgaW5kZXhlcyA9IFtdLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgICAgcHJlZGljYXRlID0gZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgICBpbmRleGVzLnB1c2goaW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBiYXNlUHVsbEF0KGFycmF5LCBpbmRleGVzKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV2ZXJzZXMgYGFycmF5YCBzbyB0aGF0IHRoZSBmaXJzdCBlbGVtZW50IGJlY29tZXMgdGhlIGxhc3QsIHRoZSBzZWNvbmRcbiAgICAgKiBlbGVtZW50IGJlY29tZXMgdGhlIHNlY29uZCB0byBsYXN0LCBhbmQgc28gb24uXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgIGFuZCBpcyBiYXNlZCBvblxuICAgICAqIFtgQXJyYXkjcmV2ZXJzZWBdKGh0dHBzOi8vbWRuLmlvL0FycmF5L3JldmVyc2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDNdO1xuICAgICAqXG4gICAgICogXy5yZXZlcnNlKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMywgMiwgMV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMywgMiwgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXZlcnNlKGFycmF5KSB7XG4gICAgICByZXR1cm4gYXJyYXkgPT0gbnVsbCA/IGFycmF5IDogbmF0aXZlUmV2ZXJzZS5jYWxsKGFycmF5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCBmcm9tIGBzdGFydGAgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBgZW5kYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyB1c2VkIGluc3RlYWQgb2ZcbiAgICAgKiBbYEFycmF5I3NsaWNlYF0oaHR0cHM6Ly9tZG4uaW8vQXJyYXkvc2xpY2UpIHRvIGVuc3VyZSBkZW5zZSBhcnJheXMgYXJlXG4gICAgICogcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2xpY2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzbGljZShhcnJheSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgaWYgKGVuZCAmJiB0eXBlb2YgZW5kICE9ICdudW1iZXInICYmIGlzSXRlcmF0ZWVDYWxsKGFycmF5LCBzdGFydCwgZW5kKSkge1xuICAgICAgICBzdGFydCA9IDA7XG4gICAgICAgIGVuZCA9IGxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBzdGFydCA9IHN0YXJ0ID09IG51bGwgPyAwIDogdG9JbnRlZ2VyKHN0YXJ0KTtcbiAgICAgICAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiB0b0ludGVnZXIoZW5kKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlU2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZXMgYSBiaW5hcnkgc2VhcmNoIHRvIGRldGVybWluZSB0aGUgbG93ZXN0IGluZGV4IGF0IHdoaWNoIGB2YWx1ZWBcbiAgICAgKiBzaG91bGQgYmUgaW5zZXJ0ZWQgaW50byBgYXJyYXlgIGluIG9yZGVyIHRvIG1haW50YWluIGl0cyBzb3J0IG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkXG4gICAgICogIGludG8gYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zb3J0ZWRJbmRleChbMzAsIDUwXSwgNDApO1xuICAgICAqIC8vID0+IDFcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRJbmRleChhcnJheSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBiYXNlU29ydGVkSW5kZXgoYXJyYXksIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNvcnRlZEluZGV4YCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIGZvciBgdmFsdWVgIGFuZCBlYWNoIGVsZW1lbnQgb2YgYGFycmF5YCB0byBjb21wdXRlIHRoZWlyXG4gICAgICogc29ydCByYW5raW5nLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogNCB9LCB7ICd4JzogNSB9XTtcbiAgICAgKlxuICAgICAqIF8uc29ydGVkSW5kZXhCeShvYmplY3RzLCB7ICd4JzogNCB9LCBmdW5jdGlvbihvKSB7IHJldHVybiBvLng7IH0pO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uc29ydGVkSW5kZXhCeShvYmplY3RzLCB7ICd4JzogNCB9LCAneCcpO1xuICAgICAqIC8vID0+IDBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRJbmRleEJ5KGFycmF5LCB2YWx1ZSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBiYXNlU29ydGVkSW5kZXhCeShhcnJheSwgdmFsdWUsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbmRleE9mYCBleGNlcHQgdGhhdCBpdCBwZXJmb3JtcyBhIGJpbmFyeVxuICAgICAqIHNlYXJjaCBvbiBhIHNvcnRlZCBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvcnRlZEluZGV4T2YoWzQsIDUsIDUsIDUsIDZdLCA1KTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkSW5kZXhPZihhcnJheSwgdmFsdWUpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGgpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gYmFzZVNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSk7XG4gICAgICAgIGlmIChpbmRleCA8IGxlbmd0aCAmJiBlcShhcnJheVtpbmRleF0sIHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc29ydGVkSW5kZXhgIGV4Y2VwdCB0aGF0IGl0IHJldHVybnMgdGhlIGhpZ2hlc3RcbiAgICAgKiBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIGBhcnJheWAgaW4gb3JkZXIgdG9cbiAgICAgKiBtYWludGFpbiBpdHMgc29ydCBvcmRlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZFxuICAgICAqICBpbnRvIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkTGFzdEluZGV4KFs0LCA1LCA1LCA1LCA2XSwgNSk7XG4gICAgICogLy8gPT4gNFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZExhc3RJbmRleChhcnJheSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBiYXNlU29ydGVkSW5kZXgoYXJyYXksIHZhbHVlLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNvcnRlZExhc3RJbmRleGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCBmb3IgYHZhbHVlYCBhbmQgZWFjaCBlbGVtZW50IG9mIGBhcnJheWAgdG8gY29tcHV0ZSB0aGVpclxuICAgICAqIHNvcnQgcmFua2luZy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgc29ydGVkIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZXZhbHVhdGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkXG4gICAgICogIGludG8gYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDQgfSwgeyAneCc6IDUgfV07XG4gICAgICpcbiAgICAgKiBfLnNvcnRlZExhc3RJbmRleEJ5KG9iamVjdHMsIHsgJ3gnOiA0IH0sIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ueDsgfSk7XG4gICAgICogLy8gPT4gMVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5zb3J0ZWRMYXN0SW5kZXhCeShvYmplY3RzLCB7ICd4JzogNCB9LCAneCcpO1xuICAgICAqIC8vID0+IDFcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRMYXN0SW5kZXhCeShhcnJheSwgdmFsdWUsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gYmFzZVNvcnRlZEluZGV4QnkoYXJyYXksIHZhbHVlLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMiksIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubGFzdEluZGV4T2ZgIGV4Y2VwdCB0aGF0IGl0IHBlcmZvcm1zIGEgYmluYXJ5XG4gICAgICogc2VhcmNoIG9uIGEgc29ydGVkIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkTGFzdEluZGV4T2YoWzQsIDUsIDUsIDUsIDZdLCA1KTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkTGFzdEluZGV4T2YoYXJyYXksIHZhbHVlKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAobGVuZ3RoKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGJhc2VTb3J0ZWRJbmRleChhcnJheSwgdmFsdWUsIHRydWUpIC0gMTtcbiAgICAgICAgaWYgKGVxKGFycmF5W2luZGV4XSwgdmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bmlxYCBleGNlcHQgdGhhdCBpdCdzIGRlc2lnbmVkIGFuZCBvcHRpbWl6ZWRcbiAgICAgKiBmb3Igc29ydGVkIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvcnRlZFVuaXEoWzEsIDEsIDJdKTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRVbmlxKGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlU29ydGVkVW5pcShhcnJheSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaXFCeWAgZXhjZXB0IHRoYXQgaXQncyBkZXNpZ25lZCBhbmQgb3B0aW1pemVkXG4gICAgICogZm9yIHNvcnRlZCBhcnJheXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvcnRlZFVuaXFCeShbMS4xLCAxLjIsIDIuMywgMi40XSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzEuMSwgMi4zXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZFVuaXFCeShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VTb3J0ZWRVbmlxKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhbGwgYnV0IHRoZSBmaXJzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRhaWwoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0YWlsKGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYmFzZVNsaWNlKGFycmF5LCAxLCBsZW5ndGgpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBgbmAgZWxlbWVudHMgdGFrZW4gZnJvbSB0aGUgYmVnaW5uaW5nLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHRha2UuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGFrZShbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IFsxXVxuICAgICAqXG4gICAgICogXy50YWtlKFsxLCAyLCAzXSwgMik7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICpcbiAgICAgKiBfLnRha2UoWzEsIDIsIDNdLCA1KTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIF8udGFrZShbMSwgMiwgM10sIDApO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGFrZShhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICAgIGlmICghKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgbiA9IChndWFyZCB8fCBuID09PSB1bmRlZmluZWQpID8gMSA6IHRvSW50ZWdlcihuKTtcbiAgICAgIHJldHVybiBiYXNlU2xpY2UoYXJyYXksIDAsIG4gPCAwID8gMCA6IG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIHdpdGggYG5gIGVsZW1lbnRzIHRha2VuIGZyb20gdGhlIGVuZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byB0YWtlLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRha2VSaWdodChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IFszXVxuICAgICAqXG4gICAgICogXy50YWtlUmlnaHQoWzEsIDIsIDNdLCAyKTtcbiAgICAgKiAvLyA9PiBbMiwgM11cbiAgICAgKlxuICAgICAqIF8udGFrZVJpZ2h0KFsxLCAyLCAzXSwgNSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBfLnRha2VSaWdodChbMSwgMiwgM10sIDApO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGFrZVJpZ2h0KGFycmF5LCBuLCBndWFyZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgbiA9IChndWFyZCB8fCBuID09PSB1bmRlZmluZWQpID8gMSA6IHRvSW50ZWdlcihuKTtcbiAgICAgIG4gPSBsZW5ndGggLSBuO1xuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgbiA8IDAgPyAwIDogbiwgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGVsZW1lbnRzIHRha2VuIGZyb20gdGhlIGVuZC4gRWxlbWVudHMgYXJlXG4gICAgICogdGFrZW4gdW50aWwgYHByZWRpY2F0ZWAgcmV0dXJucyBmYWxzZXkuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoXG4gICAgICogdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4LCBhcnJheSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy50YWtlUmlnaHRXaGlsZSh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnLCAncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udGFrZVJpZ2h0V2hpbGUodXNlcnMsIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ3BlYmJsZXMnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udGFrZVJpZ2h0V2hpbGUodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnLCAncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnRha2VSaWdodFdoaWxlKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0YWtlUmlnaHRXaGlsZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlV2hpbGUoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGZhbHNlLCB0cnVlKVxuICAgICAgICA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIHdpdGggZWxlbWVudHMgdGFrZW4gZnJvbSB0aGUgYmVnaW5uaW5nLiBFbGVtZW50c1xuICAgICAqIGFyZSB0YWtlbiB1bnRpbCBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleS4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGhcbiAgICAgKiB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLnRha2VXaGlsZSh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leScsICdmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy50YWtlV2hpbGUodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnRha2VXaGlsZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy50YWtlV2hpbGUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRha2VXaGlsZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlV2hpbGUoYXJyYXksIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB1bmlxdWUgdmFsdWVzLCBpbiBvcmRlciwgZnJvbSBhbGwgZ2l2ZW4gYXJyYXlzIHVzaW5nXG4gICAgICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tYmluZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuaW9uKFsyXSwgWzEsIDJdKTtcbiAgICAgKiAvLyA9PiBbMiwgMV1cbiAgICAgKi9cbiAgICB2YXIgdW5pb24gPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHJldHVybiBiYXNlVW5pcShiYXNlRmxhdHRlbihhcnJheXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaW9uYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgb2YgZWFjaCBgYXJyYXlzYCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5XG4gICAgICogd2hpY2ggdW5pcXVlbmVzcyBpcyBjb21wdXRlZC4gUmVzdWx0IHZhbHVlcyBhcmUgY2hvc2VuIGZyb20gdGhlIGZpcnN0XG4gICAgICogYXJyYXkgaW4gd2hpY2ggdGhlIHZhbHVlIG9jY3Vycy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6XG4gICAgICogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tYmluZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuaW9uQnkoWzIuMV0sIFsxLjIsIDIuM10sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsyLjEsIDEuMl1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udW5pb25CeShbeyAneCc6IDEgfV0sIFt7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDEgfSwgeyAneCc6IDIgfV1cbiAgICAgKi9cbiAgICB2YXIgdW5pb25CeSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGl0ZXJhdGVlID0gbGFzdChhcnJheXMpO1xuICAgICAgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KGl0ZXJhdGVlKSkge1xuICAgICAgICBpdGVyYXRlZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlVW5pcShiYXNlRmxhdHRlbihhcnJheXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pb25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGNvbXBhcmF0b3JgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCB0byBjb21wYXJlIGVsZW1lbnRzIG9mIGBhcnJheXNgLiBSZXN1bHQgdmFsdWVzIGFyZSBjaG9zZW4gZnJvbVxuICAgICAqIHRoZSBmaXJzdCBhcnJheSBpbiB3aGljaCB0aGUgdmFsdWUgb2NjdXJzLiBUaGUgY29tcGFyYXRvciBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNvbWJpbmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH1dO1xuICAgICAqIHZhciBvdGhlcnMgPSBbeyAneCc6IDEsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAyIH1dO1xuICAgICAqXG4gICAgICogXy51bmlvbldpdGgob2JqZWN0cywgb3RoZXJzLCBfLmlzRXF1YWwpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfSwgeyAneCc6IDEsICd5JzogMSB9XVxuICAgICAqL1xuICAgIHZhciB1bmlvbldpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBjb21wYXJhdG9yID0gbGFzdChhcnJheXMpO1xuICAgICAgY29tcGFyYXRvciA9IHR5cGVvZiBjb21wYXJhdG9yID09ICdmdW5jdGlvbicgPyBjb21wYXJhdG9yIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKGFycmF5cywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpLCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGR1cGxpY2F0ZS1mcmVlIHZlcnNpb24gb2YgYW4gYXJyYXksIHVzaW5nXG4gICAgICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGluIHdoaWNoIG9ubHkgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgZWFjaCBlbGVtZW50XG4gICAgICogaXMga2VwdC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXIgdGhleSBvY2N1clxuICAgICAqIGluIHRoZSBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuaXEoWzIsIDEsIDJdKTtcbiAgICAgKiAvLyA9PiBbMiwgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmlxKGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBiYXNlVW5pcShhcnJheSkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaXFgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnkgd2hpY2hcbiAgICAgKiB1bmlxdWVuZXNzIGlzIGNvbXB1dGVkLiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZVxuICAgICAqIG9yZGVyIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDpcbiAgICAgKiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuaXFCeShbMi4xLCAxLjIsIDIuM10sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsyLjEsIDEuMl1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udW5pcUJ5KFt7ICd4JzogMSB9LCB7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDEgfSwgeyAneCc6IDIgfV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmlxQnkoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBiYXNlVW5pcShhcnJheSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pcWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5YC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXNcbiAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyIGluIHRoZSBhcnJheS5UaGUgY29tcGFyYXRvciBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAyIH1dO1xuICAgICAqXG4gICAgICogXy51bmlxV2l0aChvYmplY3RzLCBfLmlzRXF1YWwpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmlxV2l0aChhcnJheSwgY29tcGFyYXRvcikge1xuICAgICAgY29tcGFyYXRvciA9IHR5cGVvZiBjb21wYXJhdG9yID09ICdmdW5jdGlvbicgPyBjb21wYXJhdG9yIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpID8gYmFzZVVuaXEoYXJyYXksIHVuZGVmaW5lZCwgY29tcGFyYXRvcikgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnppcGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBhbiBhcnJheSBvZiBncm91cGVkXG4gICAgICogZWxlbWVudHMgYW5kIGNyZWF0ZXMgYW4gYXJyYXkgcmVncm91cGluZyB0aGUgZWxlbWVudHMgdG8gdGhlaXIgcHJlLXppcFxuICAgICAqIGNvbmZpZ3VyYXRpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4yLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cyB0byBwcm9jZXNzLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIHJlZ3JvdXBlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHppcHBlZCA9IF8uemlwKFsnYScsICdiJ10sIFsxLCAyXSwgW3RydWUsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gW1snYScsIDEsIHRydWVdLCBbJ2InLCAyLCBmYWxzZV1dXG4gICAgICpcbiAgICAgKiBfLnVuemlwKHppcHBlZCk7XG4gICAgICogLy8gPT4gW1snYScsICdiJ10sIFsxLCAyXSwgW3RydWUsIGZhbHNlXV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bnppcChhcnJheSkge1xuICAgICAgaWYgKCEoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gMDtcbiAgICAgIGFycmF5ID0gYXJyYXlGaWx0ZXIoYXJyYXksIGZ1bmN0aW9uKGdyb3VwKSB7XG4gICAgICAgIGlmIChpc0FycmF5TGlrZU9iamVjdChncm91cCkpIHtcbiAgICAgICAgICBsZW5ndGggPSBuYXRpdmVNYXgoZ3JvdXAubGVuZ3RoLCBsZW5ndGgpO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBiYXNlVGltZXMobGVuZ3RoLCBmdW5jdGlvbihpbmRleCkge1xuICAgICAgICByZXR1cm4gYXJyYXlNYXAoYXJyYXksIGJhc2VQcm9wZXJ0eShpbmRleCkpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bnppcGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHRvIHNwZWNpZnlcbiAgICAgKiBob3cgcmVncm91cGVkIHZhbHVlcyBzaG91bGQgYmUgY29tYmluZWQuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhlXG4gICAgICogZWxlbWVudHMgb2YgZWFjaCBncm91cDogKC4uLmdyb3VwKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjguMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzIHRvIHByb2Nlc3MuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiB0byBjb21iaW5lXG4gICAgICogIHJlZ3JvdXBlZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcmVncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgemlwcGVkID0gXy56aXAoWzEsIDJdLCBbMTAsIDIwXSwgWzEwMCwgMjAwXSk7XG4gICAgICogLy8gPT4gW1sxLCAxMCwgMTAwXSwgWzIsIDIwLCAyMDBdXVxuICAgICAqXG4gICAgICogXy51bnppcFdpdGgoemlwcGVkLCBfLmFkZCk7XG4gICAgICogLy8gPT4gWzMsIDMwLCAzMDBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdW56aXBXaXRoKGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgaWYgKCEoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gdW56aXAoYXJyYXkpO1xuICAgICAgaWYgKGl0ZXJhdGVlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheU1hcChyZXN1bHQsIGZ1bmN0aW9uKGdyb3VwKSB7XG4gICAgICAgIHJldHVybiBhcHBseShpdGVyYXRlZSwgdW5kZWZpbmVkLCBncm91cCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IGV4Y2x1ZGluZyBhbGwgZ2l2ZW4gdmFsdWVzIHVzaW5nXG4gICAgICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnB1bGxgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGV4Y2x1ZGUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBzZWUgXy5kaWZmZXJlbmNlLCBfLnhvclxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLndpdGhvdXQoWzIsIDEsIDIsIDNdLCAxLCAyKTtcbiAgICAgKiAvLyA9PiBbM11cbiAgICAgKi9cbiAgICB2YXIgd2l0aG91dCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5LCB2YWx1ZXMpIHtcbiAgICAgIHJldHVybiBpc0FycmF5TGlrZU9iamVjdChhcnJheSlcbiAgICAgICAgPyBiYXNlRGlmZmVyZW5jZShhcnJheSwgdmFsdWVzKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB1bmlxdWUgdmFsdWVzIHRoYXQgaXMgdGhlXG4gICAgICogW3N5bW1ldHJpYyBkaWZmZXJlbmNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TeW1tZXRyaWNfZGlmZmVyZW5jZSlcbiAgICAgKiBvZiB0aGUgZ2l2ZW4gYXJyYXlzLiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlclxuICAgICAqIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjQuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQHNlZSBfLmRpZmZlcmVuY2UsIF8ud2l0aG91dFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnhvcihbMiwgMV0sIFsyLCAzXSk7XG4gICAgICogLy8gPT4gWzEsIDNdXG4gICAgICovXG4gICAgdmFyIHhvciA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgcmV0dXJuIGJhc2VYb3IoYXJyYXlGaWx0ZXIoYXJyYXlzLCBpc0FycmF5TGlrZU9iamVjdCkpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy54b3JgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBlYWNoIGBhcnJheXNgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnlcbiAgICAgKiB3aGljaCBieSB3aGljaCB0aGV5J3JlIGNvbXBhcmVkLiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpcyBkZXRlcm1pbmVkXG4gICAgICogYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5cy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmVcbiAgICAgKiBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnhvckJ5KFsyLjEsIDEuMl0sIFsyLjMsIDMuNF0sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsxLjIsIDMuNF1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ueG9yQnkoW3sgJ3gnOiAxIH1dLCBbeyAneCc6IDIgfSwgeyAneCc6IDEgfV0sICd4Jyk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAyIH1dXG4gICAgICovXG4gICAgdmFyIHhvckJ5ID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICB2YXIgaXRlcmF0ZWUgPSBsYXN0KGFycmF5cyk7XG4gICAgICBpZiAoaXNBcnJheUxpa2VPYmplY3QoaXRlcmF0ZWUpKSB7XG4gICAgICAgIGl0ZXJhdGVlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VYb3IoYXJyYXlGaWx0ZXIoYXJyYXlzLCBpc0FycmF5TGlrZU9iamVjdCksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnhvcmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5c2AuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzXG4gICAgICogZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXIgdGhleSBvY2N1ciBpbiB0aGUgYXJyYXlzLiBUaGUgY29tcGFyYXRvciBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH1dO1xuICAgICAqIHZhciBvdGhlcnMgPSBbeyAneCc6IDEsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAyIH1dO1xuICAgICAqXG4gICAgICogXy54b3JXaXRoKG9iamVjdHMsIG90aGVycywgXy5pc0VxdWFsKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDIsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAxIH1dXG4gICAgICovXG4gICAgdmFyIHhvcldpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBjb21wYXJhdG9yID0gbGFzdChhcnJheXMpO1xuICAgICAgY29tcGFyYXRvciA9IHR5cGVvZiBjb21wYXJhdG9yID09ICdmdW5jdGlvbicgPyBjb21wYXJhdG9yIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VYb3IoYXJyYXlGaWx0ZXIoYXJyYXlzLCBpc0FycmF5TGlrZU9iamVjdCksIHVuZGVmaW5lZCwgY29tcGFyYXRvcik7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGdyb3VwZWQgZWxlbWVudHMsIHRoZSBmaXJzdCBvZiB3aGljaCBjb250YWlucyB0aGVcbiAgICAgKiBmaXJzdCBlbGVtZW50cyBvZiB0aGUgZ2l2ZW4gYXJyYXlzLCB0aGUgc2Vjb25kIG9mIHdoaWNoIGNvbnRhaW5zIHRoZVxuICAgICAqIHNlY29uZCBlbGVtZW50cyBvZiB0aGUgZ2l2ZW4gYXJyYXlzLCBhbmQgc28gb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIHByb2Nlc3MuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy56aXAoWydhJywgJ2InXSwgWzEsIDJdLCBbdHJ1ZSwgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBbWydhJywgMSwgdHJ1ZV0sIFsnYicsIDIsIGZhbHNlXV1cbiAgICAgKi9cbiAgICB2YXIgemlwID0gYmFzZVJlc3QodW56aXApO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mcm9tUGFpcnNgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgdHdvIGFycmF5cyxcbiAgICAgKiBvbmUgb2YgcHJvcGVydHkgaWRlbnRpZmllcnMgYW5kIG9uZSBvZiBjb3JyZXNwb25kaW5nIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjQuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwcm9wcz1bXV0gVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXM9W11dIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy56aXBPYmplY3QoWydhJywgJ2InXSwgWzEsIDJdKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB6aXBPYmplY3QocHJvcHMsIHZhbHVlcykge1xuICAgICAgcmV0dXJuIGJhc2VaaXBPYmplY3QocHJvcHMgfHwgW10sIHZhbHVlcyB8fCBbXSwgYXNzaWduVmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uemlwT2JqZWN0YCBleGNlcHQgdGhhdCBpdCBzdXBwb3J0cyBwcm9wZXJ0eSBwYXRocy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwcm9wcz1bXV0gVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXM9W11dIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy56aXBPYmplY3REZWVwKFsnYS5iWzBdLmMnLCAnYS5iWzFdLmQnXSwgWzEsIDJdKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogeyAnYic6IFt7ICdjJzogMSB9LCB7ICdkJzogMiB9XSB9IH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB6aXBPYmplY3REZWVwKHByb3BzLCB2YWx1ZXMpIHtcbiAgICAgIHJldHVybiBiYXNlWmlwT2JqZWN0KHByb3BzIHx8IFtdLCB2YWx1ZXMgfHwgW10sIGJhc2VTZXQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uemlwYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgdG8gc3BlY2lmeVxuICAgICAqIGhvdyBncm91cGVkIHZhbHVlcyBzaG91bGQgYmUgY29tYmluZWQuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhlXG4gICAgICogZWxlbWVudHMgb2YgZWFjaCBncm91cDogKC4uLmdyb3VwKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjguMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIHRvIGNvbWJpbmVcbiAgICAgKiAgZ3JvdXBlZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy56aXBXaXRoKFsxLCAyXSwgWzEwLCAyMF0sIFsxMDAsIDIwMF0sIGZ1bmN0aW9uKGEsIGIsIGMpIHtcbiAgICAgKiAgIHJldHVybiBhICsgYiArIGM7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gWzExMSwgMjIyXVxuICAgICAqL1xuICAgIHZhciB6aXBXaXRoID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXlzLmxlbmd0aCxcbiAgICAgICAgICBpdGVyYXRlZSA9IGxlbmd0aCA+IDEgPyBhcnJheXNbbGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG5cbiAgICAgIGl0ZXJhdGVlID0gdHlwZW9mIGl0ZXJhdGVlID09ICdmdW5jdGlvbicgPyAoYXJyYXlzLnBvcCgpLCBpdGVyYXRlZSkgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gdW56aXBXaXRoKGFycmF5cywgaXRlcmF0ZWUpO1xuICAgIH0pO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UgdGhhdCB3cmFwcyBgdmFsdWVgIHdpdGggZXhwbGljaXQgbWV0aG9kXG4gICAgICogY2hhaW4gc2VxdWVuY2VzIGVuYWJsZWQuIFRoZSByZXN1bHQgb2Ygc3VjaCBzZXF1ZW5jZXMgbXVzdCBiZSB1bndyYXBwZWRcbiAgICAgKiB3aXRoIGBfI3ZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjMuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byB3cmFwLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWdlJzogMzYgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhZ2UnOiA0MCB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiB2YXIgeW91bmdlc3QgPSBfXG4gICAgICogICAuY2hhaW4odXNlcnMpXG4gICAgICogICAuc29ydEJ5KCdhZ2UnKVxuICAgICAqICAgLm1hcChmdW5jdGlvbihvKSB7XG4gICAgICogICAgIHJldHVybiBvLnVzZXIgKyAnIGlzICcgKyBvLmFnZTtcbiAgICAgKiAgIH0pXG4gICAgICogICAuaGVhZCgpXG4gICAgICogICAudmFsdWUoKTtcbiAgICAgKiAvLyA9PiAncGViYmxlcyBpcyAxJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNoYWluKHZhbHVlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gbG9kYXNoKHZhbHVlKTtcbiAgICAgIHJlc3VsdC5fX2NoYWluX18gPSB0cnVlO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpbnZva2VzIGBpbnRlcmNlcHRvcmAgYW5kIHJldHVybnMgYHZhbHVlYC4gVGhlIGludGVyY2VwdG9yXG4gICAgICogaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDsgKHZhbHVlKS4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBtZXRob2QgaXMgdG9cbiAgICAgKiBcInRhcCBpbnRvXCIgYSBtZXRob2QgY2hhaW4gc2VxdWVuY2UgaW4gb3JkZXIgdG8gbW9kaWZ5IGludGVybWVkaWF0ZSByZXN1bHRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb3ZpZGUgdG8gYGludGVyY2VwdG9yYC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpbnRlcmNlcHRvciBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIGB2YWx1ZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8oWzEsIDIsIDNdKVxuICAgICAqICAudGFwKGZ1bmN0aW9uKGFycmF5KSB7XG4gICAgICogICAgLy8gTXV0YXRlIGlucHV0IGFycmF5LlxuICAgICAqICAgIGFycmF5LnBvcCgpO1xuICAgICAqICB9KVxuICAgICAqICAucmV2ZXJzZSgpXG4gICAgICogIC52YWx1ZSgpO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRhcCh2YWx1ZSwgaW50ZXJjZXB0b3IpIHtcbiAgICAgIGludGVyY2VwdG9yKHZhbHVlKTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnRhcGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIGBpbnRlcmNlcHRvcmAuXG4gICAgICogVGhlIHB1cnBvc2Ugb2YgdGhpcyBtZXRob2QgaXMgdG8gXCJwYXNzIHRocnVcIiB2YWx1ZXMgcmVwbGFjaW5nIGludGVybWVkaWF0ZVxuICAgICAqIHJlc3VsdHMgaW4gYSBtZXRob2QgY2hhaW4gc2VxdWVuY2UuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvdmlkZSB0byBgaW50ZXJjZXB0b3JgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGludGVyY2VwdG9yIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiBgaW50ZXJjZXB0b3JgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfKCcgIGFiYyAgJylcbiAgICAgKiAgLmNoYWluKClcbiAgICAgKiAgLnRyaW0oKVxuICAgICAqICAudGhydShmdW5jdGlvbih2YWx1ZSkge1xuICAgICAqICAgIHJldHVybiBbdmFsdWVdO1xuICAgICAqICB9KVxuICAgICAqICAudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbJ2FiYyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGhydSh2YWx1ZSwgaW50ZXJjZXB0b3IpIHtcbiAgICAgIHJldHVybiBpbnRlcmNlcHRvcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgdGhlIHdyYXBwZXIgdmVyc2lvbiBvZiBgXy5hdGAuXG4gICAgICpcbiAgICAgKiBAbmFtZSBhdFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMC4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Li4uKHN0cmluZ3xzdHJpbmdbXSl9IFtwYXRoc10gVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH0sIDRdIH07XG4gICAgICpcbiAgICAgKiBfKG9iamVjdCkuYXQoWydhWzBdLmIuYycsICdhWzFdJ10pLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWzMsIDRdXG4gICAgICovXG4gICAgdmFyIHdyYXBwZXJBdCA9IGZsYXRSZXN0KGZ1bmN0aW9uKHBhdGhzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gcGF0aHMubGVuZ3RoLFxuICAgICAgICAgIHN0YXJ0ID0gbGVuZ3RoID8gcGF0aHNbMF0gOiAwLFxuICAgICAgICAgIHZhbHVlID0gdGhpcy5fX3dyYXBwZWRfXyxcbiAgICAgICAgICBpbnRlcmNlcHRvciA9IGZ1bmN0aW9uKG9iamVjdCkgeyByZXR1cm4gYmFzZUF0KG9iamVjdCwgcGF0aHMpOyB9O1xuXG4gICAgICBpZiAobGVuZ3RoID4gMSB8fCB0aGlzLl9fYWN0aW9uc19fLmxlbmd0aCB8fFxuICAgICAgICAgICEodmFsdWUgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcikgfHwgIWlzSW5kZXgoc3RhcnQpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRocnUoaW50ZXJjZXB0b3IpO1xuICAgICAgfVxuICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZShzdGFydCwgK3N0YXJ0ICsgKGxlbmd0aCA/IDEgOiAwKSk7XG4gICAgICB2YWx1ZS5fX2FjdGlvbnNfXy5wdXNoKHtcbiAgICAgICAgJ2Z1bmMnOiB0aHJ1LFxuICAgICAgICAnYXJncyc6IFtpbnRlcmNlcHRvcl0sXG4gICAgICAgICd0aGlzQXJnJzogdW5kZWZpbmVkXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXcgTG9kYXNoV3JhcHBlcih2YWx1ZSwgdGhpcy5fX2NoYWluX18pLnRocnUoZnVuY3Rpb24oYXJyYXkpIHtcbiAgICAgICAgaWYgKGxlbmd0aCAmJiAhYXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICAgYXJyYXkucHVzaCh1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcnJheTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2Ugd2l0aCBleHBsaWNpdCBtZXRob2QgY2hhaW4gc2VxdWVuY2VzIGVuYWJsZWQuXG4gICAgICpcbiAgICAgKiBAbmFtZSBjaGFpblxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiAvLyBBIHNlcXVlbmNlIHdpdGhvdXQgZXhwbGljaXQgY2hhaW5pbmcuXG4gICAgICogXyh1c2VycykuaGVhZCgpO1xuICAgICAqIC8vID0+IHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH1cbiAgICAgKlxuICAgICAqIC8vIEEgc2VxdWVuY2Ugd2l0aCBleHBsaWNpdCBjaGFpbmluZy5cbiAgICAgKiBfKHVzZXJzKVxuICAgICAqICAgLmNoYWluKClcbiAgICAgKiAgIC5oZWFkKClcbiAgICAgKiAgIC5waWNrKCd1c2VyJylcbiAgICAgKiAgIC52YWx1ZSgpO1xuICAgICAqIC8vID0+IHsgJ3VzZXInOiAnYmFybmV5JyB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlckNoYWluKCkge1xuICAgICAgcmV0dXJuIGNoYWluKHRoaXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIHRoZSBjaGFpbiBzZXF1ZW5jZSBhbmQgcmV0dXJucyB0aGUgd3JhcHBlZCByZXN1bHQuXG4gICAgICpcbiAgICAgKiBAbmFtZSBjb21taXRcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDJdO1xuICAgICAqIHZhciB3cmFwcGVkID0gXyhhcnJheSkucHVzaCgzKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIHdyYXBwZWQgPSB3cmFwcGVkLmNvbW1pdCgpO1xuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIHdyYXBwZWQubGFzdCgpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyQ29tbWl0KCkge1xuICAgICAgcmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHRoaXMudmFsdWUoKSwgdGhpcy5fX2NoYWluX18pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG5leHQgdmFsdWUgb24gYSB3cmFwcGVkIG9iamVjdCBmb2xsb3dpbmcgdGhlXG4gICAgICogW2l0ZXJhdG9yIHByb3RvY29sXShodHRwczovL21kbi5pby9pdGVyYXRpb25fcHJvdG9jb2xzI2l0ZXJhdG9yKS5cbiAgICAgKlxuICAgICAqIEBuYW1lIG5leHRcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXh0IGl0ZXJhdG9yIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgd3JhcHBlZCA9IF8oWzEsIDJdKTtcbiAgICAgKlxuICAgICAqIHdyYXBwZWQubmV4dCgpO1xuICAgICAqIC8vID0+IHsgJ2RvbmUnOiBmYWxzZSwgJ3ZhbHVlJzogMSB9XG4gICAgICpcbiAgICAgKiB3cmFwcGVkLm5leHQoKTtcbiAgICAgKiAvLyA9PiB7ICdkb25lJzogZmFsc2UsICd2YWx1ZSc6IDIgfVxuICAgICAqXG4gICAgICogd3JhcHBlZC5uZXh0KCk7XG4gICAgICogLy8gPT4geyAnZG9uZSc6IHRydWUsICd2YWx1ZSc6IHVuZGVmaW5lZCB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlck5leHQoKSB7XG4gICAgICBpZiAodGhpcy5fX3ZhbHVlc19fID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fX3ZhbHVlc19fID0gdG9BcnJheSh0aGlzLnZhbHVlKCkpO1xuICAgICAgfVxuICAgICAgdmFyIGRvbmUgPSB0aGlzLl9faW5kZXhfXyA+PSB0aGlzLl9fdmFsdWVzX18ubGVuZ3RoLFxuICAgICAgICAgIHZhbHVlID0gZG9uZSA/IHVuZGVmaW5lZCA6IHRoaXMuX192YWx1ZXNfX1t0aGlzLl9faW5kZXhfXysrXTtcblxuICAgICAgcmV0dXJuIHsgJ2RvbmUnOiBkb25lLCAndmFsdWUnOiB2YWx1ZSB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMgdGhlIHdyYXBwZXIgdG8gYmUgaXRlcmFibGUuXG4gICAgICpcbiAgICAgKiBAbmFtZSBTeW1ib2wuaXRlcmF0b3JcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSB3cmFwcGVyIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHdyYXBwZWQgPSBfKFsxLCAyXSk7XG4gICAgICpcbiAgICAgKiB3cmFwcGVkW1N5bWJvbC5pdGVyYXRvcl0oKSA9PT0gd3JhcHBlZDtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBBcnJheS5mcm9tKHdyYXBwZWQpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJUb0l0ZXJhdG9yKCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIHRoZSBjaGFpbiBzZXF1ZW5jZSBwbGFudGluZyBgdmFsdWVgIGFzIHRoZSB3cmFwcGVkIHZhbHVlLlxuICAgICAqXG4gICAgICogQG5hbWUgcGxhbnRcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwbGFudC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgd3JhcHBlZCA9IF8oWzEsIDJdKS5tYXAoc3F1YXJlKTtcbiAgICAgKiB2YXIgb3RoZXIgPSB3cmFwcGVkLnBsYW50KFszLCA0XSk7XG4gICAgICpcbiAgICAgKiBvdGhlci52YWx1ZSgpO1xuICAgICAqIC8vID0+IFs5LCAxNl1cbiAgICAgKlxuICAgICAqIHdyYXBwZWQudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbMSwgNF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyUGxhbnQodmFsdWUpIHtcbiAgICAgIHZhciByZXN1bHQsXG4gICAgICAgICAgcGFyZW50ID0gdGhpcztcblxuICAgICAgd2hpbGUgKHBhcmVudCBpbnN0YW5jZW9mIGJhc2VMb2Rhc2gpIHtcbiAgICAgICAgdmFyIGNsb25lID0gd3JhcHBlckNsb25lKHBhcmVudCk7XG4gICAgICAgIGNsb25lLl9faW5kZXhfXyA9IDA7XG4gICAgICAgIGNsb25lLl9fdmFsdWVzX18gPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICBwcmV2aW91cy5fX3dyYXBwZWRfXyA9IGNsb25lO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGNsb25lO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwcmV2aW91cyA9IGNsb25lO1xuICAgICAgICBwYXJlbnQgPSBwYXJlbnQuX193cmFwcGVkX187XG4gICAgICB9XG4gICAgICBwcmV2aW91cy5fX3dyYXBwZWRfXyA9IHZhbHVlO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB0aGUgd3JhcHBlciB2ZXJzaW9uIG9mIGBfLnJldmVyc2VgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgdGhlIHdyYXBwZWQgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAbmFtZSByZXZlcnNlXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxLCAyLCAzXTtcbiAgICAgKlxuICAgICAqIF8oYXJyYXkpLnJldmVyc2UoKS52YWx1ZSgpXG4gICAgICogLy8gPT4gWzMsIDIsIDFdXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWzMsIDIsIDFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlclJldmVyc2UoKSB7XG4gICAgICB2YXIgdmFsdWUgPSB0aGlzLl9fd3JhcHBlZF9fO1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTGF6eVdyYXBwZXIpIHtcbiAgICAgICAgdmFyIHdyYXBwZWQgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuX19hY3Rpb25zX18ubGVuZ3RoKSB7XG4gICAgICAgICAgd3JhcHBlZCA9IG5ldyBMYXp5V3JhcHBlcih0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICB3cmFwcGVkID0gd3JhcHBlZC5yZXZlcnNlKCk7XG4gICAgICAgIHdyYXBwZWQuX19hY3Rpb25zX18ucHVzaCh7XG4gICAgICAgICAgJ2Z1bmMnOiB0aHJ1LFxuICAgICAgICAgICdhcmdzJzogW3JldmVyc2VdLFxuICAgICAgICAgICd0aGlzQXJnJzogdW5kZWZpbmVkXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIod3JhcHBlZCwgdGhpcy5fX2NoYWluX18pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMudGhydShyZXZlcnNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyB0aGUgY2hhaW4gc2VxdWVuY2UgdG8gcmVzb2x2ZSB0aGUgdW53cmFwcGVkIHZhbHVlLlxuICAgICAqXG4gICAgICogQG5hbWUgdmFsdWVcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBhbGlhcyB0b0pTT04sIHZhbHVlT2ZcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHVud3JhcHBlZCB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXyhbMSwgMiwgM10pLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlclZhbHVlKCkge1xuICAgICAgcmV0dXJuIGJhc2VXcmFwcGVyVmFsdWUodGhpcy5fX3dyYXBwZWRfXywgdGhpcy5fX2FjdGlvbnNfXyk7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2Yga2V5cyBnZW5lcmF0ZWQgZnJvbSB0aGUgcmVzdWx0cyBvZiBydW5uaW5nXG4gICAgICogZWFjaCBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYCB0aHJ1IGBpdGVyYXRlZWAuIFRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIG9mXG4gICAgICogZWFjaCBrZXkgaXMgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUga2V5IHdhcyByZXR1cm5lZCBieSBgaXRlcmF0ZWVgLiBUaGVcbiAgICAgKiBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb21wb3NlZCBhZ2dyZWdhdGUgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNvdW50QnkoWzYuMSwgNC4yLCA2LjNdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiB7ICc0JzogMSwgJzYnOiAyIH1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uY291bnRCeShbJ29uZScsICd0d28nLCAndGhyZWUnXSwgJ2xlbmd0aCcpO1xuICAgICAqIC8vID0+IHsgJzMnOiAyLCAnNSc6IDEgfVxuICAgICAqL1xuICAgIHZhciBjb3VudEJ5ID0gY3JlYXRlQWdncmVnYXRvcihmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3VsdCwga2V5KSkge1xuICAgICAgICArK3Jlc3VsdFtrZXldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCAxKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgKiphbGwqKiBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAuXG4gICAgICogSXRlcmF0aW9uIGlzIHN0b3BwZWQgb25jZSBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleS4gVGhlIHByZWRpY2F0ZSBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCByZXR1cm5zIGB0cnVlYCBmb3JcbiAgICAgKiBbZW1wdHkgY29sbGVjdGlvbnNdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VtcHR5X3NldCkgYmVjYXVzZVxuICAgICAqIFtldmVyeXRoaW5nIGlzIHRydWVdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ZhY3VvdXNfdHJ1dGgpIG9mXG4gICAgICogZWxlbWVudHMgb2YgZW1wdHkgY29sbGVjdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYWxsIGVsZW1lbnRzIHBhc3MgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmV2ZXJ5KFt0cnVlLCAxLCBudWxsLCAneWVzJ10sIEJvb2xlYW4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmV2ZXJ5KHVzZXJzLCB7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZXZlcnkodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmV2ZXJ5KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBldmVyeShjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGd1YXJkKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUV2ZXJ5IDogYmFzZUV2ZXJ5O1xuICAgICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZ3VhcmQpKSB7XG4gICAgICAgIHByZWRpY2F0ZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gLCByZXR1cm5pbmcgYW4gYXJyYXkgb2YgYWxsIGVsZW1lbnRzXG4gICAgICogYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aHJlZVxuICAgICAqIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5yZW1vdmVgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICAgICAqIEBzZWUgXy5yZWplY3RcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maWx0ZXIodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuICFvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIHsgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICpcbiAgICAgKiAvLyBDb21iaW5pbmcgc2V2ZXJhbCBwcmVkaWNhdGVzIHVzaW5nIGBfLm92ZXJFdmVyeWAgb3IgYF8ub3ZlclNvbWVgLlxuICAgICAqIF8uZmlsdGVyKHVzZXJzLCBfLm92ZXJTb21lKFt7ICdhZ2UnOiAzNiB9LCBbJ2FnZScsIDQwXV0pKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnLCAnYmFybmV5J11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaWx0ZXIoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUZpbHRlciA6IGJhc2VGaWx0ZXI7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCwgcmV0dXJuaW5nIHRoZSBmaXJzdCBlbGVtZW50XG4gICAgICogYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aHJlZVxuICAgICAqIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hdGNoZWQgZWxlbWVudCwgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhZ2UnOiAxLCAgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmZpbmQodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8uYWdlIDwgNDA7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdCBmb3IgJ2Jhcm5leSdcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kKHVzZXJzLCB7ICdhZ2UnOiAxLCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3QgZm9yICdwZWJibGVzJ1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdCBmb3IgJ2ZyZWQnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmQodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBvYmplY3QgZm9yICdiYXJuZXknXG4gICAgICovXG4gICAgdmFyIGZpbmQgPSBjcmVhdGVGaW5kKGZpbmRJbmRleCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZpbmRgIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2ZcbiAgICAgKiBgY29sbGVjdGlvbmAgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD1jb2xsZWN0aW9uLmxlbmd0aC0xXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hdGNoZWQgZWxlbWVudCwgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5maW5kTGFzdChbMSwgMiwgMywgNF0sIGZ1bmN0aW9uKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICUgMiA9PSAxO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICB2YXIgZmluZExhc3QgPSBjcmVhdGVGaW5kKGZpbmRMYXN0SW5kZXgpO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZsYXR0ZW5lZCBhcnJheSBvZiB2YWx1ZXMgYnkgcnVubmluZyBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gXG4gICAgICogdGhydSBgaXRlcmF0ZWVgIGFuZCBmbGF0dGVuaW5nIHRoZSBtYXBwZWQgcmVzdWx0cy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBkdXBsaWNhdGUobikge1xuICAgICAqICAgcmV0dXJuIFtuLCBuXTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmZsYXRNYXAoWzEsIDJdLCBkdXBsaWNhdGUpO1xuICAgICAqIC8vID0+IFsxLCAxLCAyLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXRNYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBiYXNlRmxhdHRlbihtYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpLCAxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZsYXRNYXBgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGZsYXR0ZW5zIHRoZVxuICAgICAqIG1hcHBlZCByZXN1bHRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNy4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBkdXBsaWNhdGUobikge1xuICAgICAqICAgcmV0dXJuIFtbW24sIG5dXV07XG4gICAgICogfVxuICAgICAqXG4gICAgICogXy5mbGF0TWFwRGVlcChbMSwgMl0sIGR1cGxpY2F0ZSk7XG4gICAgICogLy8gPT4gWzEsIDEsIDIsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdE1hcERlZXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBiYXNlRmxhdHRlbihtYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpLCBJTkZJTklUWSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mbGF0TWFwYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBmbGF0dGVucyB0aGVcbiAgICAgKiBtYXBwZWQgcmVzdWx0cyB1cCB0byBgZGVwdGhgIHRpbWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNy4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtkZXB0aD0xXSBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBkdXBsaWNhdGUobikge1xuICAgICAqICAgcmV0dXJuIFtbW24sIG5dXV07XG4gICAgICogfVxuICAgICAqXG4gICAgICogXy5mbGF0TWFwRGVwdGgoWzEsIDJdLCBkdXBsaWNhdGUsIDIpO1xuICAgICAqIC8vID0+IFtbMSwgMV0sIFsyLCAyXV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0TWFwRGVwdGgoY29sbGVjdGlvbiwgaXRlcmF0ZWUsIGRlcHRoKSB7XG4gICAgICBkZXB0aCA9IGRlcHRoID09PSB1bmRlZmluZWQgPyAxIDogdG9JbnRlZ2VyKGRlcHRoKTtcbiAgICAgIHJldHVybiBiYXNlRmxhdHRlbihtYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpLCBkZXB0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBlbGVtZW50LlxuICAgICAqIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIEFzIHdpdGggb3RoZXIgXCJDb2xsZWN0aW9uc1wiIG1ldGhvZHMsIG9iamVjdHMgd2l0aCBhIFwibGVuZ3RoXCJcbiAgICAgKiBwcm9wZXJ0eSBhcmUgaXRlcmF0ZWQgbGlrZSBhcnJheXMuIFRvIGF2b2lkIHRoaXMgYmVoYXZpb3IgdXNlIGBfLmZvckluYFxuICAgICAqIG9yIGBfLmZvck93bmAgZm9yIG9iamVjdCBpdGVyYXRpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAYWxpYXMgZWFjaFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICAgICAqIEBzZWUgXy5mb3JFYWNoUmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5mb3JFYWNoKFsxLCAyXSwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKHZhbHVlKTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzIGAxYCB0aGVuIGAyYC5cbiAgICAgKlxuICAgICAqIF8uZm9yRWFjaCh7ICdhJzogMSwgJ2InOiAyIH0sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKGtleSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyAnYScgdGhlbiAnYicgKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZCkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZm9yRWFjaChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlFYWNoIDogYmFzZUVhY2g7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZm9yRWFjaGAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGBjb2xsZWN0aW9uYCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAYWxpYXMgZWFjaFJpZ2h0XG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gICAgICogQHNlZSBfLmZvckVhY2hcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5mb3JFYWNoUmlnaHQoWzEsIDJdLCBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAqICAgY29uc29sZS5sb2codmFsdWUpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgYDJgIHRoZW4gYDFgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvckVhY2hSaWdodChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlFYWNoUmlnaHQgOiBiYXNlRWFjaFJpZ2h0O1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiBrZXlzIGdlbmVyYXRlZCBmcm9tIHRoZSByZXN1bHRzIG9mIHJ1bm5pbmdcbiAgICAgKiBlYWNoIGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIHRocnUgYGl0ZXJhdGVlYC4gVGhlIG9yZGVyIG9mIGdyb3VwZWQgdmFsdWVzXG4gICAgICogaXMgZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXIgdGhleSBvY2N1ciBpbiBgY29sbGVjdGlvbmAuIFRoZSBjb3JyZXNwb25kaW5nXG4gICAgICogdmFsdWUgb2YgZWFjaCBrZXkgaXMgYW4gYXJyYXkgb2YgZWxlbWVudHMgcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgdGhlXG4gICAgICoga2V5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29tcG9zZWQgYWdncmVnYXRlIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5ncm91cEJ5KFs2LjEsIDQuMiwgNi4zXSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4geyAnNCc6IFs0LjJdLCAnNic6IFs2LjEsIDYuM10gfVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5ncm91cEJ5KFsnb25lJywgJ3R3bycsICd0aHJlZSddLCAnbGVuZ3RoJyk7XG4gICAgICogLy8gPT4geyAnMyc6IFsnb25lJywgJ3R3byddLCAnNSc6IFsndGhyZWUnXSB9XG4gICAgICovXG4gICAgdmFyIGdyb3VwQnkgPSBjcmVhdGVBZ2dyZWdhdG9yKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocmVzdWx0LCBrZXkpKSB7XG4gICAgICAgIHJlc3VsdFtrZXldLnB1c2godmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBbdmFsdWVdKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGluIGBjb2xsZWN0aW9uYC4gSWYgYGNvbGxlY3Rpb25gIGlzIGEgc3RyaW5nLCBpdCdzXG4gICAgICogY2hlY2tlZCBmb3IgYSBzdWJzdHJpbmcgb2YgYHZhbHVlYCwgb3RoZXJ3aXNlXG4gICAgICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBpcyB1c2VkIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy4gSWYgYGZyb21JbmRleGAgaXMgbmVnYXRpdmUsIGl0J3MgdXNlZCBhc1xuICAgICAqIHRoZSBvZmZzZXQgZnJvbSB0aGUgZW5kIG9mIGBjb2xsZWN0aW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R8c3RyaW5nfSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ucmVkdWNlYC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmluY2x1ZGVzKFsxLCAyLCAzXSwgMSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pbmNsdWRlcyhbMSwgMiwgM10sIDEsIDIpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmluY2x1ZGVzKHsgJ2EnOiAxLCAnYic6IDIgfSwgMSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pbmNsdWRlcygnYWJjZCcsICdiYycpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbmNsdWRlcyhjb2xsZWN0aW9uLCB2YWx1ZSwgZnJvbUluZGV4LCBndWFyZCkge1xuICAgICAgY29sbGVjdGlvbiA9IGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pID8gY29sbGVjdGlvbiA6IHZhbHVlcyhjb2xsZWN0aW9uKTtcbiAgICAgIGZyb21JbmRleCA9IChmcm9tSW5kZXggJiYgIWd1YXJkKSA/IHRvSW50ZWdlcihmcm9tSW5kZXgpIDogMDtcblxuICAgICAgdmFyIGxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoO1xuICAgICAgaWYgKGZyb21JbmRleCA8IDApIHtcbiAgICAgICAgZnJvbUluZGV4ID0gbmF0aXZlTWF4KGxlbmd0aCArIGZyb21JbmRleCwgMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaXNTdHJpbmcoY29sbGVjdGlvbilcbiAgICAgICAgPyAoZnJvbUluZGV4IDw9IGxlbmd0aCAmJiBjb2xsZWN0aW9uLmluZGV4T2YodmFsdWUsIGZyb21JbmRleCkgPiAtMSlcbiAgICAgICAgOiAoISFsZW5ndGggJiYgYmFzZUluZGV4T2YoY29sbGVjdGlvbiwgdmFsdWUsIGZyb21JbmRleCkgPiAtMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW52b2tlcyB0aGUgbWV0aG9kIGF0IGBwYXRoYCBvZiBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gLCByZXR1cm5pbmdcbiAgICAgKiBhbiBhcnJheSBvZiB0aGUgcmVzdWx0cyBvZiBlYWNoIGludm9rZWQgbWV0aG9kLiBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHNcbiAgICAgKiBhcmUgcHJvdmlkZWQgdG8gZWFjaCBpbnZva2VkIG1ldGhvZC4gSWYgYHBhdGhgIGlzIGEgZnVuY3Rpb24sIGl0J3MgaW52b2tlZFxuICAgICAqIGZvciwgYW5kIGB0aGlzYCBib3VuZCB0bywgZWFjaCBlbGVtZW50IGluIGBjb2xsZWN0aW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7QXJyYXl8RnVuY3Rpb258c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBtZXRob2QgdG8gaW52b2tlIG9yXG4gICAgICogIHRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgZWFjaCBtZXRob2Qgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaW52b2tlTWFwKFtbNSwgMSwgN10sIFszLCAyLCAxXV0sICdzb3J0Jyk7XG4gICAgICogLy8gPT4gW1sxLCA1LCA3XSwgWzEsIDIsIDNdXVxuICAgICAqXG4gICAgICogXy5pbnZva2VNYXAoWzEyMywgNDU2XSwgU3RyaW5nLnByb3RvdHlwZS5zcGxpdCwgJycpO1xuICAgICAqIC8vID0+IFtbJzEnLCAnMicsICczJ10sIFsnNCcsICc1JywgJzYnXV1cbiAgICAgKi9cbiAgICB2YXIgaW52b2tlTWFwID0gYmFzZVJlc3QoZnVuY3Rpb24oY29sbGVjdGlvbiwgcGF0aCwgYXJncykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgaXNGdW5jID0gdHlwZW9mIHBhdGggPT0gJ2Z1bmN0aW9uJyxcbiAgICAgICAgICByZXN1bHQgPSBpc0FycmF5TGlrZShjb2xsZWN0aW9uKSA/IEFycmF5KGNvbGxlY3Rpb24ubGVuZ3RoKSA6IFtdO1xuXG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICByZXN1bHRbKytpbmRleF0gPSBpc0Z1bmMgPyBhcHBseShwYXRoLCB2YWx1ZSwgYXJncykgOiBiYXNlSW52b2tlKHZhbHVlLCBwYXRoLCBhcmdzKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIGtleXMgZ2VuZXJhdGVkIGZyb20gdGhlIHJlc3VsdHMgb2YgcnVubmluZ1xuICAgICAqIGVhY2ggZWxlbWVudCBvZiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLiBUaGUgY29ycmVzcG9uZGluZyB2YWx1ZSBvZlxuICAgICAqIGVhY2gga2V5IGlzIHRoZSBsYXN0IGVsZW1lbnQgcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgdGhlIGtleS4gVGhlXG4gICAgICogaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29tcG9zZWQgYWdncmVnYXRlIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gW1xuICAgICAqICAgeyAnZGlyJzogJ2xlZnQnLCAnY29kZSc6IDk3IH0sXG4gICAgICogICB7ICdkaXInOiAncmlnaHQnLCAnY29kZSc6IDEwMCB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ua2V5QnkoYXJyYXksIGZ1bmN0aW9uKG8pIHtcbiAgICAgKiAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKG8uY29kZSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4geyAnYSc6IHsgJ2Rpcic6ICdsZWZ0JywgJ2NvZGUnOiA5NyB9LCAnZCc6IHsgJ2Rpcic6ICdyaWdodCcsICdjb2RlJzogMTAwIH0gfVxuICAgICAqXG4gICAgICogXy5rZXlCeShhcnJheSwgJ2RpcicpO1xuICAgICAqIC8vID0+IHsgJ2xlZnQnOiB7ICdkaXInOiAnbGVmdCcsICdjb2RlJzogOTcgfSwgJ3JpZ2h0JzogeyAnZGlyJzogJ3JpZ2h0JywgJ2NvZGUnOiAxMDAgfSB9XG4gICAgICovXG4gICAgdmFyIGtleUJ5ID0gY3JlYXRlQWdncmVnYXRvcihmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgIGJhc2VBc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgdmFsdWUpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB2YWx1ZXMgYnkgcnVubmluZyBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gIHRocnVcbiAgICAgKiBgaXRlcmF0ZWVgLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czpcbiAgICAgKiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiBNYW55IGxvZGFzaCBtZXRob2RzIGFyZSBndWFyZGVkIHRvIHdvcmsgYXMgaXRlcmF0ZWVzIGZvciBtZXRob2RzIGxpa2VcbiAgICAgKiBgXy5ldmVyeWAsIGBfLmZpbHRlcmAsIGBfLm1hcGAsIGBfLm1hcFZhbHVlc2AsIGBfLnJlamVjdGAsIGFuZCBgXy5zb21lYC5cbiAgICAgKlxuICAgICAqIFRoZSBndWFyZGVkIG1ldGhvZHMgYXJlOlxuICAgICAqIGBhcnlgLCBgY2h1bmtgLCBgY3VycnlgLCBgY3VycnlSaWdodGAsIGBkcm9wYCwgYGRyb3BSaWdodGAsIGBldmVyeWAsXG4gICAgICogYGZpbGxgLCBgaW52ZXJ0YCwgYHBhcnNlSW50YCwgYHJhbmRvbWAsIGByYW5nZWAsIGByYW5nZVJpZ2h0YCwgYHJlcGVhdGAsXG4gICAgICogYHNhbXBsZVNpemVgLCBgc2xpY2VgLCBgc29tZWAsIGBzb3J0QnlgLCBgc3BsaXRgLCBgdGFrZWAsIGB0YWtlUmlnaHRgLFxuICAgICAqIGB0ZW1wbGF0ZWAsIGB0cmltYCwgYHRyaW1FbmRgLCBgdHJpbVN0YXJ0YCwgYW5kIGB3b3Jkc2BcbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLm1hcChbNCwgOF0sIHNxdWFyZSk7XG4gICAgICogLy8gPT4gWzE2LCA2NF1cbiAgICAgKlxuICAgICAqIF8ubWFwKHsgJ2EnOiA0LCAnYic6IDggfSwgc3F1YXJlKTtcbiAgICAgKiAvLyA9PiBbMTYsIDY0XSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5tYXAodXNlcnMsICd1c2VyJyk7XG4gICAgICogLy8gPT4gWydiYXJuZXknLCAnZnJlZCddXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheU1hcCA6IGJhc2VNYXA7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc29ydEJ5YCBleGNlcHQgdGhhdCBpdCBhbGxvd3Mgc3BlY2lmeWluZyB0aGUgc29ydFxuICAgICAqIG9yZGVycyBvZiB0aGUgaXRlcmF0ZWVzIHRvIHNvcnQgYnkuIElmIGBvcmRlcnNgIGlzIHVuc3BlY2lmaWVkLCBhbGwgdmFsdWVzXG4gICAgICogYXJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIuIE90aGVyd2lzZSwgc3BlY2lmeSBhbiBvcmRlciBvZiBcImRlc2NcIiBmb3JcbiAgICAgKiBkZXNjZW5kaW5nIG9yIFwiYXNjXCIgZm9yIGFzY2VuZGluZyBzb3J0IG9yZGVyIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtBcnJheVtdfEZ1bmN0aW9uW118T2JqZWN0W118c3RyaW5nW119IFtpdGVyYXRlZXM9W18uaWRlbnRpdHldXVxuICAgICAqICBUaGUgaXRlcmF0ZWVzIHRvIHNvcnQgYnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXX0gW29yZGVyc10gVGhlIHNvcnQgb3JkZXJzIG9mIGBpdGVyYXRlZXNgLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLnJlZHVjZWAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc29ydGVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0OCB9LFxuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzQgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIC8vIFNvcnQgYnkgYHVzZXJgIGluIGFzY2VuZGluZyBvcmRlciBhbmQgYnkgYGFnZWAgaW4gZGVzY2VuZGluZyBvcmRlci5cbiAgICAgKiBfLm9yZGVyQnkodXNlcnMsIFsndXNlcicsICdhZ2UnXSwgWydhc2MnLCAnZGVzYyddKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAzNl0sIFsnYmFybmV5JywgMzRdLCBbJ2ZyZWQnLCA0OF0sIFsnZnJlZCcsIDQwXV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvcmRlckJ5KGNvbGxlY3Rpb24sIGl0ZXJhdGVlcywgb3JkZXJzLCBndWFyZCkge1xuICAgICAgaWYgKGNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBpZiAoIWlzQXJyYXkoaXRlcmF0ZWVzKSkge1xuICAgICAgICBpdGVyYXRlZXMgPSBpdGVyYXRlZXMgPT0gbnVsbCA/IFtdIDogW2l0ZXJhdGVlc107XG4gICAgICB9XG4gICAgICBvcmRlcnMgPSBndWFyZCA/IHVuZGVmaW5lZCA6IG9yZGVycztcbiAgICAgIGlmICghaXNBcnJheShvcmRlcnMpKSB7XG4gICAgICAgIG9yZGVycyA9IG9yZGVycyA9PSBudWxsID8gW10gOiBbb3JkZXJzXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBpdGVyYXRlZXMsIG9yZGVycyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBlbGVtZW50cyBzcGxpdCBpbnRvIHR3byBncm91cHMsIHRoZSBmaXJzdCBvZiB3aGljaFxuICAgICAqIGNvbnRhaW5zIGVsZW1lbnRzIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciwgdGhlIHNlY29uZCBvZiB3aGljaFxuICAgICAqIGNvbnRhaW5zIGVsZW1lbnRzIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5IGZvci4gVGhlIHByZWRpY2F0ZSBpc1xuICAgICAqIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWdlJzogMzYsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEsICAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLnBhcnRpdGlvbih1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2ZyZWQnXSwgWydiYXJuZXknLCAncGViYmxlcyddXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnBhcnRpdGlvbih1c2VycywgeyAnYWdlJzogMSwgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ3BlYmJsZXMnXSwgWydiYXJuZXknLCAnZnJlZCddXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucGFydGl0aW9uKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snYmFybmV5JywgJ3BlYmJsZXMnXSwgWydmcmVkJ11dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnBhcnRpdGlvbih1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2ZyZWQnXSwgWydiYXJuZXknLCAncGViYmxlcyddXVxuICAgICAqL1xuICAgIHZhciBwYXJ0aXRpb24gPSBjcmVhdGVBZ2dyZWdhdG9yKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgcmVzdWx0W2tleSA/IDAgOiAxXS5wdXNoKHZhbHVlKTtcbiAgICB9LCBmdW5jdGlvbigpIHsgcmV0dXJuIFtbXSwgW11dOyB9KTtcblxuICAgIC8qKlxuICAgICAqIFJlZHVjZXMgYGNvbGxlY3Rpb25gIHRvIGEgdmFsdWUgd2hpY2ggaXMgdGhlIGFjY3VtdWxhdGVkIHJlc3VsdCBvZiBydW5uaW5nXG4gICAgICogZWFjaCBlbGVtZW50IGluIGBjb2xsZWN0aW9uYCB0aHJ1IGBpdGVyYXRlZWAsIHdoZXJlIGVhY2ggc3VjY2Vzc2l2ZVxuICAgICAqIGludm9jYXRpb24gaXMgc3VwcGxpZWQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJldmlvdXMuIElmIGBhY2N1bXVsYXRvcmBcbiAgICAgKiBpcyBub3QgZ2l2ZW4sIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYCBpcyB1c2VkIGFzIHRoZSBpbml0aWFsXG4gICAgICogdmFsdWUuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggZm91ciBhcmd1bWVudHM6XG4gICAgICogKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqIE1hbnkgbG9kYXNoIG1ldGhvZHMgYXJlIGd1YXJkZWQgdG8gd29yayBhcyBpdGVyYXRlZXMgZm9yIG1ldGhvZHMgbGlrZVxuICAgICAqIGBfLnJlZHVjZWAsIGBfLnJlZHVjZVJpZ2h0YCwgYW5kIGBfLnRyYW5zZm9ybWAuXG4gICAgICpcbiAgICAgKiBUaGUgZ3VhcmRlZCBtZXRob2RzIGFyZTpcbiAgICAgKiBgYXNzaWduYCwgYGRlZmF1bHRzYCwgYGRlZmF1bHRzRGVlcGAsIGBpbmNsdWRlc2AsIGBtZXJnZWAsIGBvcmRlckJ5YCxcbiAgICAgKiBhbmQgYHNvcnRCeWBcbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gICAgICogQHNlZSBfLnJlZHVjZVJpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmVkdWNlKFsxLCAyXSwgZnVuY3Rpb24oc3VtLCBuKSB7XG4gICAgICogICByZXR1cm4gc3VtICsgbjtcbiAgICAgKiB9LCAwKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLnJlZHVjZSh7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfSwgZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICogICAocmVzdWx0W3ZhbHVlXSB8fCAocmVzdWx0W3ZhbHVlXSA9IFtdKSkucHVzaChrZXkpO1xuICAgICAqICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgKiB9LCB7fSk7XG4gICAgICogLy8gPT4geyAnMSc6IFsnYScsICdjJ10sICcyJzogWydiJ10gfSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlZHVjZShjb2xsZWN0aW9uLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5UmVkdWNlIDogYmFzZVJlZHVjZSxcbiAgICAgICAgICBpbml0QWNjdW0gPSBhcmd1bWVudHMubGVuZ3RoIDwgMztcblxuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDQpLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtLCBiYXNlRWFjaCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5yZWR1Y2VgIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2ZcbiAgICAgKiBgY29sbGVjdGlvbmAgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBpbml0aWFsIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICAgKiBAc2VlIF8ucmVkdWNlXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFtbMCwgMV0sIFsyLCAzXSwgWzQsIDVdXTtcbiAgICAgKlxuICAgICAqIF8ucmVkdWNlUmlnaHQoYXJyYXksIGZ1bmN0aW9uKGZsYXR0ZW5lZCwgb3RoZXIpIHtcbiAgICAgKiAgIHJldHVybiBmbGF0dGVuZWQuY29uY2F0KG90aGVyKTtcbiAgICAgKiB9LCBbXSk7XG4gICAgICogLy8gPT4gWzQsIDUsIDIsIDMsIDAsIDFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVkdWNlUmlnaHQoY29sbGVjdGlvbiwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVJlZHVjZVJpZ2h0IDogYmFzZVJlZHVjZSxcbiAgICAgICAgICBpbml0QWNjdW0gPSBhcmd1bWVudHMubGVuZ3RoIDwgMztcblxuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDQpLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtLCBiYXNlRWFjaFJpZ2h0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8uZmlsdGVyYDsgdGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gXG4gICAgICogdGhhdCBgcHJlZGljYXRlYCBkb2VzICoqbm90KiogcmV0dXJuIHRydXRoeSBmb3IuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gICAgICogQHNlZSBfLmZpbHRlclxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLnJlamVjdCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnJlamVjdCh1c2VycywgeyAnYWdlJzogNDAsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnJlamVjdCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnJlamVjdCh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZWplY3QoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUZpbHRlciA6IGJhc2VGaWx0ZXI7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBuZWdhdGUoZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSByYW5kb20gZWxlbWVudCBmcm9tIGBjb2xsZWN0aW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2FtcGxlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByYW5kb20gZWxlbWVudC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zYW1wbGUoWzEsIDIsIDMsIDRdKTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2FtcGxlKGNvbGxlY3Rpb24pIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5U2FtcGxlIDogYmFzZVNhbXBsZTtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYG5gIHJhbmRvbSBlbGVtZW50cyBhdCB1bmlxdWUga2V5cyBmcm9tIGBjb2xsZWN0aW9uYCB1cCB0byB0aGVcbiAgICAgKiBzaXplIG9mIGBjb2xsZWN0aW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2FtcGxlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHNhbXBsZS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNhbXBsZVNpemUoWzEsIDIsIDNdLCAyKTtcbiAgICAgKiAvLyA9PiBbMywgMV1cbiAgICAgKlxuICAgICAqIF8uc2FtcGxlU2l6ZShbMSwgMiwgM10sIDQpO1xuICAgICAqIC8vID0+IFsyLCAzLCAxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNhbXBsZVNpemUoY29sbGVjdGlvbiwgbiwgZ3VhcmQpIHtcbiAgICAgIGlmICgoZ3VhcmQgPyBpc0l0ZXJhdGVlQ2FsbChjb2xsZWN0aW9uLCBuLCBndWFyZCkgOiBuID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIG4gPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbiA9IHRvSW50ZWdlcihuKTtcbiAgICAgIH1cbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5U2FtcGxlU2l6ZSA6IGJhc2VTYW1wbGVTaXplO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBzaHVmZmxlZCB2YWx1ZXMsIHVzaW5nIGEgdmVyc2lvbiBvZiB0aGVcbiAgICAgKiBbRmlzaGVyLVlhdGVzIHNodWZmbGVdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Zpc2hlci1ZYXRlc19zaHVmZmxlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2h1ZmZsZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzaHVmZmxlZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zaHVmZmxlKFsxLCAyLCAzLCA0XSk7XG4gICAgICogLy8gPT4gWzQsIDEsIDMsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2h1ZmZsZShjb2xsZWN0aW9uKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVNodWZmbGUgOiBiYXNlU2h1ZmZsZTtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHNpemUgb2YgYGNvbGxlY3Rpb25gIGJ5IHJldHVybmluZyBpdHMgbGVuZ3RoIGZvciBhcnJheS1saWtlXG4gICAgICogdmFsdWVzIG9yIHRoZSBudW1iZXIgb2Ygb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgZm9yIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fHN0cmluZ30gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbGxlY3Rpb24gc2l6ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zaXplKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy5zaXplKHsgJ2EnOiAxLCAnYic6IDIgfSk7XG4gICAgICogLy8gPT4gMlxuICAgICAqXG4gICAgICogXy5zaXplKCdwZWJibGVzJyk7XG4gICAgICogLy8gPT4gN1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNpemUoY29sbGVjdGlvbikge1xuICAgICAgaWYgKGNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIGlmIChpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgICAgICByZXR1cm4gaXNTdHJpbmcoY29sbGVjdGlvbikgPyBzdHJpbmdTaXplKGNvbGxlY3Rpb24pIDogY29sbGVjdGlvbi5sZW5ndGg7XG4gICAgICB9XG4gICAgICB2YXIgdGFnID0gZ2V0VGFnKGNvbGxlY3Rpb24pO1xuICAgICAgaWYgKHRhZyA9PSBtYXBUYWcgfHwgdGFnID09IHNldFRhZykge1xuICAgICAgICByZXR1cm4gY29sbGVjdGlvbi5zaXplO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VLZXlzKGNvbGxlY3Rpb24pLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yICoqYW55KiogZWxlbWVudCBvZiBgY29sbGVjdGlvbmAuXG4gICAgICogSXRlcmF0aW9uIGlzIHN0b3BwZWQgb25jZSBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeS4gVGhlIHByZWRpY2F0ZSBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbnkgZWxlbWVudCBwYXNzZXMgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvbWUoW251bGwsIDAsICd5ZXMnLCBmYWxzZV0sIEJvb2xlYW4pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnNvbWUodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5zb21lKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5zb21lKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvbWUoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBndWFyZCkge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlTb21lIDogYmFzZVNvbWU7XG4gICAgICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBndWFyZCkpIHtcbiAgICAgICAgcHJlZGljYXRlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBlbGVtZW50cywgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlciBieSB0aGUgcmVzdWx0cyBvZlxuICAgICAqIHJ1bm5pbmcgZWFjaCBlbGVtZW50IGluIGEgY29sbGVjdGlvbiB0aHJ1IGVhY2ggaXRlcmF0ZWUuIFRoaXMgbWV0aG9kXG4gICAgICogcGVyZm9ybXMgYSBzdGFibGUgc29ydCwgdGhhdCBpcywgaXQgcHJlc2VydmVzIHRoZSBvcmlnaW5hbCBzb3J0IG9yZGVyIG9mXG4gICAgICogZXF1YWwgZWxlbWVudHMuIFRoZSBpdGVyYXRlZXMgYXJlIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW2l0ZXJhdGVlcz1bXy5pZGVudGl0eV1dXG4gICAgICogIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzb3J0ZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQ4IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogMzAgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM0IH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5zb3J0QnkodXNlcnMsIFtmdW5jdGlvbihvKSB7IHJldHVybiBvLnVzZXI7IH1dKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAzNl0sIFsnYmFybmV5JywgMzRdLCBbJ2ZyZWQnLCA0OF0sIFsnZnJlZCcsIDMwXV1cbiAgICAgKlxuICAgICAqIF8uc29ydEJ5KHVzZXJzLCBbJ3VzZXInLCAnYWdlJ10pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsIDM0XSwgWydiYXJuZXknLCAzNl0sIFsnZnJlZCcsIDMwXSwgWydmcmVkJywgNDhdXVxuICAgICAqL1xuICAgIHZhciBzb3J0QnkgPSBiYXNlUmVzdChmdW5jdGlvbihjb2xsZWN0aW9uLCBpdGVyYXRlZXMpIHtcbiAgICAgIGlmIChjb2xsZWN0aW9uID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIGxlbmd0aCA9IGl0ZXJhdGVlcy5sZW5ndGg7XG4gICAgICBpZiAobGVuZ3RoID4gMSAmJiBpc0l0ZXJhdGVlQ2FsbChjb2xsZWN0aW9uLCBpdGVyYXRlZXNbMF0sIGl0ZXJhdGVlc1sxXSkpIHtcbiAgICAgICAgaXRlcmF0ZWVzID0gW107XG4gICAgICB9IGVsc2UgaWYgKGxlbmd0aCA+IDIgJiYgaXNJdGVyYXRlZUNhbGwoaXRlcmF0ZWVzWzBdLCBpdGVyYXRlZXNbMV0sIGl0ZXJhdGVlc1syXSkpIHtcbiAgICAgICAgaXRlcmF0ZWVzID0gW2l0ZXJhdGVlc1swXV07XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZU9yZGVyQnkoY29sbGVjdGlvbiwgYmFzZUZsYXR0ZW4oaXRlcmF0ZWVzLCAxKSwgW10pO1xuICAgIH0pO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdGltZXN0YW1wIG9mIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoYXQgaGF2ZSBlbGFwc2VkIHNpbmNlXG4gICAgICogdGhlIFVuaXggZXBvY2ggKDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi40LjBcbiAgICAgKiBAY2F0ZWdvcnkgRGF0ZVxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRpbWVzdGFtcC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWZlcihmdW5jdGlvbihzdGFtcCkge1xuICAgICAqICAgY29uc29sZS5sb2coXy5ub3coKSAtIHN0YW1wKTtcbiAgICAgKiB9LCBfLm5vdygpKTtcbiAgICAgKiAvLyA9PiBMb2dzIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGl0IHRvb2sgZm9yIHRoZSBkZWZlcnJlZCBpbnZvY2F0aW9uLlxuICAgICAqL1xuICAgIHZhciBub3cgPSBjdHhOb3cgfHwgZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gcm9vdC5EYXRlLm5vdygpO1xuICAgIH07XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8uYmVmb3JlYDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlc1xuICAgICAqIGBmdW5jYCBvbmNlIGl0J3MgY2FsbGVkIGBuYCBvciBtb3JlIHRpbWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiBjYWxscyBiZWZvcmUgYGZ1bmNgIGlzIGludm9rZWQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmVzdHJpY3RlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHNhdmVzID0gWydwcm9maWxlJywgJ3NldHRpbmdzJ107XG4gICAgICpcbiAgICAgKiB2YXIgZG9uZSA9IF8uYWZ0ZXIoc2F2ZXMubGVuZ3RoLCBmdW5jdGlvbigpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKCdkb25lIHNhdmluZyEnKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIF8uZm9yRWFjaChzYXZlcywgZnVuY3Rpb24odHlwZSkge1xuICAgICAqICAgYXN5bmNTYXZlKHsgJ3R5cGUnOiB0eXBlLCAnY29tcGxldGUnOiBkb25lIH0pO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2RvbmUgc2F2aW5nIScgYWZ0ZXIgdGhlIHR3byBhc3luYyBzYXZlcyBoYXZlIGNvbXBsZXRlZC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhZnRlcihuLCBmdW5jKSB7XG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAoLS1uIDwgMSkge1xuICAgICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2AsIHdpdGggdXAgdG8gYG5gIGFyZ3VtZW50cyxcbiAgICAgKiBpZ25vcmluZyBhbnkgYWRkaXRpb25hbCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjYXAgYXJndW1lbnRzIGZvci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249ZnVuYy5sZW5ndGhdIFRoZSBhcml0eSBjYXAuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubWFwKFsnNicsICc4JywgJzEwJ10sIF8uYXJ5KHBhcnNlSW50LCAxKSk7XG4gICAgICogLy8gPT4gWzYsIDgsIDEwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFyeShmdW5jLCBuLCBndWFyZCkge1xuICAgICAgbiA9IGd1YXJkID8gdW5kZWZpbmVkIDogbjtcbiAgICAgIG4gPSAoZnVuYyAmJiBuID09IG51bGwpID8gZnVuYy5sZW5ndGggOiBuO1xuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9BUllfRkxBRywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCwgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgYW5kIGFyZ3VtZW50c1xuICAgICAqIG9mIHRoZSBjcmVhdGVkIGZ1bmN0aW9uLCB3aGlsZSBpdCdzIGNhbGxlZCBsZXNzIHRoYW4gYG5gIHRpbWVzLiBTdWJzZXF1ZW50XG4gICAgICogY2FsbHMgdG8gdGhlIGNyZWF0ZWQgZnVuY3Rpb24gcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgIGludm9jYXRpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGNhbGxzIGF0IHdoaWNoIGBmdW5jYCBpcyBubyBsb25nZXIgaW52b2tlZC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZXN0cmljdGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBqUXVlcnkoZWxlbWVudCkub24oJ2NsaWNrJywgXy5iZWZvcmUoNSwgYWRkQ29udGFjdFRvTGlzdCkpO1xuICAgICAqIC8vID0+IEFsbG93cyBhZGRpbmcgdXAgdG8gNCBjb250YWN0cyB0byB0aGUgbGlzdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiZWZvcmUobiwgZnVuYykge1xuICAgICAgdmFyIHJlc3VsdDtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIG4gPSB0b0ludGVnZXIobik7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICgtLW4gPiAwKSB7XG4gICAgICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuIDw9IDEpIHtcbiAgICAgICAgICBmdW5jID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIGB0aGlzQXJnYFxuICAgICAqIGFuZCBgcGFydGlhbHNgIHByZXBlbmRlZCB0byB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogVGhlIGBfLmJpbmQucGxhY2Vob2xkZXJgIHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBgX2AgaW4gbW9ub2xpdGhpYyBidWlsZHMsXG4gICAgICogbWF5IGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBuYXRpdmUgYEZ1bmN0aW9uI2JpbmRgLCB0aGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIlxuICAgICAqIHByb3BlcnR5IG9mIGJvdW5kIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGJpbmQuXG4gICAgICogQHBhcmFtIHsqfSB0aGlzQXJnIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gYmUgcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYm91bmQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGdyZWV0KGdyZWV0aW5nLCBwdW5jdHVhdGlvbikge1xuICAgICAqICAgcmV0dXJuIGdyZWV0aW5nICsgJyAnICsgdGhpcy51c2VyICsgcHVuY3R1YXRpb247XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ3VzZXInOiAnZnJlZCcgfTtcbiAgICAgKlxuICAgICAqIHZhciBib3VuZCA9IF8uYmluZChncmVldCwgb2JqZWN0LCAnaGknKTtcbiAgICAgKiBib3VuZCgnIScpO1xuICAgICAqIC8vID0+ICdoaSBmcmVkISdcbiAgICAgKlxuICAgICAqIC8vIEJvdW5kIHdpdGggcGxhY2Vob2xkZXJzLlxuICAgICAqIHZhciBib3VuZCA9IF8uYmluZChncmVldCwgb2JqZWN0LCBfLCAnIScpO1xuICAgICAqIGJvdW5kKCdoaScpO1xuICAgICAqIC8vID0+ICdoaSBmcmVkISdcbiAgICAgKi9cbiAgICB2YXIgYmluZCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIHRoaXNBcmcsIHBhcnRpYWxzKSB7XG4gICAgICB2YXIgYml0bWFzayA9IFdSQVBfQklORF9GTEFHO1xuICAgICAgaWYgKHBhcnRpYWxzLmxlbmd0aCkge1xuICAgICAgICB2YXIgaG9sZGVycyA9IHJlcGxhY2VIb2xkZXJzKHBhcnRpYWxzLCBnZXRIb2xkZXIoYmluZCkpO1xuICAgICAgICBiaXRtYXNrIHw9IFdSQVBfUEFSVElBTF9GTEFHO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgbWV0aG9kIGF0IGBvYmplY3Rba2V5XWAgd2l0aCBgcGFydGlhbHNgXG4gICAgICogcHJlcGVuZGVkIHRvIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBUaGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gYF8uYmluZGAgYnkgYWxsb3dpbmcgYm91bmQgZnVuY3Rpb25zIHRvIHJlZmVyZW5jZVxuICAgICAqIG1ldGhvZHMgdGhhdCBtYXkgYmUgcmVkZWZpbmVkIG9yIGRvbid0IHlldCBleGlzdC4gU2VlXG4gICAgICogW1BldGVyIE1pY2hhdXgncyBhcnRpY2xlXShodHRwOi8vcGV0ZXIubWljaGF1eC5jYS9hcnRpY2xlcy9sYXp5LWZ1bmN0aW9uLWRlZmluaXRpb24tcGF0dGVybilcbiAgICAgKiBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqXG4gICAgICogVGhlIGBfLmJpbmRLZXkucGxhY2Vob2xkZXJgIHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBgX2AgaW4gbW9ub2xpdGhpY1xuICAgICAqIGJ1aWxkcywgbWF5IGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMTAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnZva2UgdGhlIG1ldGhvZCBvbi5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZC5cbiAgICAgKiBAcGFyYW0gey4uLip9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBib3VuZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHtcbiAgICAgKiAgICd1c2VyJzogJ2ZyZWQnLFxuICAgICAqICAgJ2dyZWV0JzogZnVuY3Rpb24oZ3JlZXRpbmcsIHB1bmN0dWF0aW9uKSB7XG4gICAgICogICAgIHJldHVybiBncmVldGluZyArICcgJyArIHRoaXMudXNlciArIHB1bmN0dWF0aW9uO1xuICAgICAqICAgfVxuICAgICAqIH07XG4gICAgICpcbiAgICAgKiB2YXIgYm91bmQgPSBfLmJpbmRLZXkob2JqZWN0LCAnZ3JlZXQnLCAnaGknKTtcbiAgICAgKiBib3VuZCgnIScpO1xuICAgICAqIC8vID0+ICdoaSBmcmVkISdcbiAgICAgKlxuICAgICAqIG9iamVjdC5ncmVldCA9IGZ1bmN0aW9uKGdyZWV0aW5nLCBwdW5jdHVhdGlvbikge1xuICAgICAqICAgcmV0dXJuIGdyZWV0aW5nICsgJ3lhICcgKyB0aGlzLnVzZXIgKyBwdW5jdHVhdGlvbjtcbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogYm91bmQoJyEnKTtcbiAgICAgKiAvLyA9PiAnaGl5YSBmcmVkISdcbiAgICAgKlxuICAgICAqIC8vIEJvdW5kIHdpdGggcGxhY2Vob2xkZXJzLlxuICAgICAqIHZhciBib3VuZCA9IF8uYmluZEtleShvYmplY3QsICdncmVldCcsIF8sICchJyk7XG4gICAgICogYm91bmQoJ2hpJyk7XG4gICAgICogLy8gPT4gJ2hpeWEgZnJlZCEnXG4gICAgICovXG4gICAgdmFyIGJpbmRLZXkgPSBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIGtleSwgcGFydGlhbHMpIHtcbiAgICAgIHZhciBiaXRtYXNrID0gV1JBUF9CSU5EX0ZMQUcgfCBXUkFQX0JJTkRfS0VZX0ZMQUc7XG4gICAgICBpZiAocGFydGlhbHMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBob2xkZXJzID0gcmVwbGFjZUhvbGRlcnMocGFydGlhbHMsIGdldEhvbGRlcihiaW5kS2V5KSk7XG4gICAgICAgIGJpdG1hc2sgfD0gV1JBUF9QQVJUSUFMX0ZMQUc7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChrZXksIGJpdG1hc2ssIG9iamVjdCwgcGFydGlhbHMsIGhvbGRlcnMpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBhcmd1bWVudHMgb2YgYGZ1bmNgIGFuZCBlaXRoZXIgaW52b2tlc1xuICAgICAqIGBmdW5jYCByZXR1cm5pbmcgaXRzIHJlc3VsdCwgaWYgYXQgbGVhc3QgYGFyaXR5YCBudW1iZXIgb2YgYXJndW1lbnRzIGhhdmVcbiAgICAgKiBiZWVuIHByb3ZpZGVkLCBvciByZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIHRoZSByZW1haW5pbmcgYGZ1bmNgXG4gICAgICogYXJndW1lbnRzLCBhbmQgc28gb24uIFRoZSBhcml0eSBvZiBgZnVuY2AgbWF5IGJlIHNwZWNpZmllZCBpZiBgZnVuYy5sZW5ndGhgXG4gICAgICogaXMgbm90IHN1ZmZpY2llbnQuXG4gICAgICpcbiAgICAgKiBUaGUgYF8uY3VycnkucGxhY2Vob2xkZXJgIHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBgX2AgaW4gbW9ub2xpdGhpYyBidWlsZHMsXG4gICAgICogbWF5IGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgcHJvdmlkZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IG9mIGN1cnJpZWQgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY3VycnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcml0eT1mdW5jLmxlbmd0aF0gVGhlIGFyaXR5IG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGN1cnJpZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhYmMgPSBmdW5jdGlvbihhLCBiLCBjKSB7XG4gICAgICogICByZXR1cm4gW2EsIGIsIGNdO1xuICAgICAqIH07XG4gICAgICpcbiAgICAgKiB2YXIgY3VycmllZCA9IF8uY3VycnkoYWJjKTtcbiAgICAgKlxuICAgICAqIGN1cnJpZWQoMSkoMikoMyk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBjdXJyaWVkKDEsIDIpKDMpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogY3VycmllZCgxLCAyLCAzKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIC8vIEN1cnJpZWQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogY3VycmllZCgxKShfLCAzKSgyKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjdXJyeShmdW5jLCBhcml0eSwgZ3VhcmQpIHtcbiAgICAgIGFyaXR5ID0gZ3VhcmQgPyB1bmRlZmluZWQgOiBhcml0eTtcbiAgICAgIHZhciByZXN1bHQgPSBjcmVhdGVXcmFwKGZ1bmMsIFdSQVBfQ1VSUllfRkxBRywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGFyaXR5KTtcbiAgICAgIHJlc3VsdC5wbGFjZWhvbGRlciA9IGN1cnJ5LnBsYWNlaG9sZGVyO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmN1cnJ5YCBleGNlcHQgdGhhdCBhcmd1bWVudHMgYXJlIGFwcGxpZWQgdG8gYGZ1bmNgXG4gICAgICogaW4gdGhlIG1hbm5lciBvZiBgXy5wYXJ0aWFsUmlnaHRgIGluc3RlYWQgb2YgYF8ucGFydGlhbGAuXG4gICAgICpcbiAgICAgKiBUaGUgYF8uY3VycnlSaWdodC5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljXG4gICAgICogYnVpbGRzLCBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwcm92aWRlZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgZG9lc24ndCBzZXQgdGhlIFwibGVuZ3RoXCIgcHJvcGVydHkgb2YgY3VycmllZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjdXJyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5PWZ1bmMubGVuZ3RoXSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY3VycmllZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFiYyA9IGZ1bmN0aW9uKGEsIGIsIGMpIHtcbiAgICAgKiAgIHJldHVybiBbYSwgYiwgY107XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIHZhciBjdXJyaWVkID0gXy5jdXJyeVJpZ2h0KGFiYyk7XG4gICAgICpcbiAgICAgKiBjdXJyaWVkKDMpKDIpKDEpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogY3VycmllZCgyLCAzKSgxKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIGN1cnJpZWQoMSwgMiwgMyk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiAvLyBDdXJyaWVkIHdpdGggcGxhY2Vob2xkZXJzLlxuICAgICAqIGN1cnJpZWQoMykoMSwgXykoMik7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3VycnlSaWdodChmdW5jLCBhcml0eSwgZ3VhcmQpIHtcbiAgICAgIGFyaXR5ID0gZ3VhcmQgPyB1bmRlZmluZWQgOiBhcml0eTtcbiAgICAgIHZhciByZXN1bHQgPSBjcmVhdGVXcmFwKGZ1bmMsIFdSQVBfQ1VSUllfUklHSFRfRkxBRywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGFyaXR5KTtcbiAgICAgIHJlc3VsdC5wbGFjZWhvbGRlciA9IGN1cnJ5UmlnaHQucGxhY2Vob2xkZXI7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBkZWJvdW5jZWQgZnVuY3Rpb24gdGhhdCBkZWxheXMgaW52b2tpbmcgYGZ1bmNgIHVudGlsIGFmdGVyIGB3YWl0YFxuICAgICAqIG1pbGxpc2Vjb25kcyBoYXZlIGVsYXBzZWQgc2luY2UgdGhlIGxhc3QgdGltZSB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHdhc1xuICAgICAqIGludm9rZWQuIFRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gY29tZXMgd2l0aCBhIGBjYW5jZWxgIG1ldGhvZCB0byBjYW5jZWxcbiAgICAgKiBkZWxheWVkIGBmdW5jYCBpbnZvY2F0aW9ucyBhbmQgYSBgZmx1c2hgIG1ldGhvZCB0byBpbW1lZGlhdGVseSBpbnZva2UgdGhlbS5cbiAgICAgKiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYCBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGVcbiAgICAgKiBsZWFkaW5nIGFuZC9vciB0cmFpbGluZyBlZGdlIG9mIHRoZSBgd2FpdGAgdGltZW91dC4gVGhlIGBmdW5jYCBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aGUgbGFzdCBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIGRlYm91bmNlZCBmdW5jdGlvbi4gU3Vic2VxdWVudFxuICAgICAqIGNhbGxzIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgXG4gICAgICogaW52b2NhdGlvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAgICAgKiBpbnZva2VkIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0IG9ubHkgaWYgdGhlIGRlYm91bmNlZCBmdW5jdGlvblxuICAgICAqIGlzIGludm9rZWQgbW9yZSB0aGFuIG9uY2UgZHVyaW5nIHRoZSBgd2FpdGAgdGltZW91dC5cbiAgICAgKlxuICAgICAqIElmIGB3YWl0YCBpcyBgMGAgYW5kIGBsZWFkaW5nYCBpcyBgZmFsc2VgLCBgZnVuY2AgaW52b2NhdGlvbiBpcyBkZWZlcnJlZFxuICAgICAqIHVudGlsIHRvIHRoZSBuZXh0IHRpY2ssIHNpbWlsYXIgdG8gYHNldFRpbWVvdXRgIHdpdGggYSB0aW1lb3V0IG9mIGAwYC5cbiAgICAgKlxuICAgICAqIFNlZSBbRGF2aWQgQ29yYmFjaG8ncyBhcnRpY2xlXShodHRwczovL2Nzcy10cmlja3MuY29tL2RlYm91bmNpbmctdGhyb3R0bGluZy1leHBsYWluZWQtZXhhbXBsZXMvKVxuICAgICAqIGZvciBkZXRhaWxzIG92ZXIgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYF8uZGVib3VuY2VgIGFuZCBgXy50aHJvdHRsZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBkZWJvdW5jZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPXt9XSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sZWFkaW5nPWZhbHNlXVxuICAgICAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLm1heFdhaXRdXG4gICAgICogIFRoZSBtYXhpbXVtIHRpbWUgYGZ1bmNgIGlzIGFsbG93ZWQgdG8gYmUgZGVsYXllZCBiZWZvcmUgaXQncyBpbnZva2VkLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudHJhaWxpbmc9dHJ1ZV1cbiAgICAgKiAgU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBkZWJvdW5jZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIC8vIEF2b2lkIGNvc3RseSBjYWxjdWxhdGlvbnMgd2hpbGUgdGhlIHdpbmRvdyBzaXplIGlzIGluIGZsdXguXG4gICAgICogalF1ZXJ5KHdpbmRvdykub24oJ3Jlc2l6ZScsIF8uZGVib3VuY2UoY2FsY3VsYXRlTGF5b3V0LCAxNTApKTtcbiAgICAgKlxuICAgICAqIC8vIEludm9rZSBgc2VuZE1haWxgIHdoZW4gY2xpY2tlZCwgZGVib3VuY2luZyBzdWJzZXF1ZW50IGNhbGxzLlxuICAgICAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCBfLmRlYm91bmNlKHNlbmRNYWlsLCAzMDAsIHtcbiAgICAgKiAgICdsZWFkaW5nJzogdHJ1ZSxcbiAgICAgKiAgICd0cmFpbGluZyc6IGZhbHNlXG4gICAgICogfSkpO1xuICAgICAqXG4gICAgICogLy8gRW5zdXJlIGBiYXRjaExvZ2AgaXMgaW52b2tlZCBvbmNlIGFmdGVyIDEgc2Vjb25kIG9mIGRlYm91bmNlZCBjYWxscy5cbiAgICAgKiB2YXIgZGVib3VuY2VkID0gXy5kZWJvdW5jZShiYXRjaExvZywgMjUwLCB7ICdtYXhXYWl0JzogMTAwMCB9KTtcbiAgICAgKiB2YXIgc291cmNlID0gbmV3IEV2ZW50U291cmNlKCcvc3RyZWFtJyk7XG4gICAgICogalF1ZXJ5KHNvdXJjZSkub24oJ21lc3NhZ2UnLCBkZWJvdW5jZWQpO1xuICAgICAqXG4gICAgICogLy8gQ2FuY2VsIHRoZSB0cmFpbGluZyBkZWJvdW5jZWQgaW52b2NhdGlvbi5cbiAgICAgKiBqUXVlcnkod2luZG93KS5vbigncG9wc3RhdGUnLCBkZWJvdW5jZWQuY2FuY2VsKTtcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkZWJvdW5jZShmdW5jLCB3YWl0LCBvcHRpb25zKSB7XG4gICAgICB2YXIgbGFzdEFyZ3MsXG4gICAgICAgICAgbGFzdFRoaXMsXG4gICAgICAgICAgbWF4V2FpdCxcbiAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgdGltZXJJZCxcbiAgICAgICAgICBsYXN0Q2FsbFRpbWUsXG4gICAgICAgICAgbGFzdEludm9rZVRpbWUgPSAwLFxuICAgICAgICAgIGxlYWRpbmcgPSBmYWxzZSxcbiAgICAgICAgICBtYXhpbmcgPSBmYWxzZSxcbiAgICAgICAgICB0cmFpbGluZyA9IHRydWU7XG5cbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHdhaXQgPSB0b051bWJlcih3YWl0KSB8fCAwO1xuICAgICAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgIGxlYWRpbmcgPSAhIW9wdGlvbnMubGVhZGluZztcbiAgICAgICAgbWF4aW5nID0gJ21heFdhaXQnIGluIG9wdGlvbnM7XG4gICAgICAgIG1heFdhaXQgPSBtYXhpbmcgPyBuYXRpdmVNYXgodG9OdW1iZXIob3B0aW9ucy5tYXhXYWl0KSB8fCAwLCB3YWl0KSA6IG1heFdhaXQ7XG4gICAgICAgIHRyYWlsaW5nID0gJ3RyYWlsaW5nJyBpbiBvcHRpb25zID8gISFvcHRpb25zLnRyYWlsaW5nIDogdHJhaWxpbmc7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGludm9rZUZ1bmModGltZSkge1xuICAgICAgICB2YXIgYXJncyA9IGxhc3RBcmdzLFxuICAgICAgICAgICAgdGhpc0FyZyA9IGxhc3RUaGlzO1xuXG4gICAgICAgIGxhc3RBcmdzID0gbGFzdFRoaXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIGxhc3RJbnZva2VUaW1lID0gdGltZTtcbiAgICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gbGVhZGluZ0VkZ2UodGltZSkge1xuICAgICAgICAvLyBSZXNldCBhbnkgYG1heFdhaXRgIHRpbWVyLlxuICAgICAgICBsYXN0SW52b2tlVGltZSA9IHRpbWU7XG4gICAgICAgIC8vIFN0YXJ0IHRoZSB0aW1lciBmb3IgdGhlIHRyYWlsaW5nIGVkZ2UuXG4gICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgICAgIC8vIEludm9rZSB0aGUgbGVhZGluZyBlZGdlLlxuICAgICAgICByZXR1cm4gbGVhZGluZyA/IGludm9rZUZ1bmModGltZSkgOiByZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIHJlbWFpbmluZ1dhaXQodGltZSkge1xuICAgICAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICAgICAgdGltZVNpbmNlTGFzdEludm9rZSA9IHRpbWUgLSBsYXN0SW52b2tlVGltZSxcbiAgICAgICAgICAgIHRpbWVXYWl0aW5nID0gd2FpdCAtIHRpbWVTaW5jZUxhc3RDYWxsO1xuXG4gICAgICAgIHJldHVybiBtYXhpbmdcbiAgICAgICAgICA/IG5hdGl2ZU1pbih0aW1lV2FpdGluZywgbWF4V2FpdCAtIHRpbWVTaW5jZUxhc3RJbnZva2UpXG4gICAgICAgICAgOiB0aW1lV2FpdGluZztcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gc2hvdWxkSW52b2tlKHRpbWUpIHtcbiAgICAgICAgdmFyIHRpbWVTaW5jZUxhc3RDYWxsID0gdGltZSAtIGxhc3RDYWxsVGltZSxcbiAgICAgICAgICAgIHRpbWVTaW5jZUxhc3RJbnZva2UgPSB0aW1lIC0gbGFzdEludm9rZVRpbWU7XG5cbiAgICAgICAgLy8gRWl0aGVyIHRoaXMgaXMgdGhlIGZpcnN0IGNhbGwsIGFjdGl2aXR5IGhhcyBzdG9wcGVkIGFuZCB3ZSdyZSBhdCB0aGVcbiAgICAgICAgLy8gdHJhaWxpbmcgZWRnZSwgdGhlIHN5c3RlbSB0aW1lIGhhcyBnb25lIGJhY2t3YXJkcyBhbmQgd2UncmUgdHJlYXRpbmdcbiAgICAgICAgLy8gaXQgYXMgdGhlIHRyYWlsaW5nIGVkZ2UsIG9yIHdlJ3ZlIGhpdCB0aGUgYG1heFdhaXRgIGxpbWl0LlxuICAgICAgICByZXR1cm4gKGxhc3RDYWxsVGltZSA9PT0gdW5kZWZpbmVkIHx8ICh0aW1lU2luY2VMYXN0Q2FsbCA+PSB3YWl0KSB8fFxuICAgICAgICAgICh0aW1lU2luY2VMYXN0Q2FsbCA8IDApIHx8IChtYXhpbmcgJiYgdGltZVNpbmNlTGFzdEludm9rZSA+PSBtYXhXYWl0KSk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIHRpbWVyRXhwaXJlZCgpIHtcbiAgICAgICAgdmFyIHRpbWUgPSBub3coKTtcbiAgICAgICAgaWYgKHNob3VsZEludm9rZSh0aW1lKSkge1xuICAgICAgICAgIHJldHVybiB0cmFpbGluZ0VkZ2UodGltZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVzdGFydCB0aGUgdGltZXIuXG4gICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgcmVtYWluaW5nV2FpdCh0aW1lKSk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIHRyYWlsaW5nRWRnZSh0aW1lKSB7XG4gICAgICAgIHRpbWVySWQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgLy8gT25seSBpbnZva2UgaWYgd2UgaGF2ZSBgbGFzdEFyZ3NgIHdoaWNoIG1lYW5zIGBmdW5jYCBoYXMgYmVlblxuICAgICAgICAvLyBkZWJvdW5jZWQgYXQgbGVhc3Qgb25jZS5cbiAgICAgICAgaWYgKHRyYWlsaW5nICYmIGxhc3RBcmdzKSB7XG4gICAgICAgICAgcmV0dXJuIGludm9rZUZ1bmModGltZSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gY2FuY2VsKCkge1xuICAgICAgICBpZiAodGltZXJJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgICAgICB9XG4gICAgICAgIGxhc3RJbnZva2VUaW1lID0gMDtcbiAgICAgICAgbGFzdEFyZ3MgPSBsYXN0Q2FsbFRpbWUgPSBsYXN0VGhpcyA9IHRpbWVySWQgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGZsdXNoKCkge1xuICAgICAgICByZXR1cm4gdGltZXJJZCA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogdHJhaWxpbmdFZGdlKG5vdygpKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gZGVib3VuY2VkKCkge1xuICAgICAgICB2YXIgdGltZSA9IG5vdygpLFxuICAgICAgICAgICAgaXNJbnZva2luZyA9IHNob3VsZEludm9rZSh0aW1lKTtcblxuICAgICAgICBsYXN0QXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgbGFzdFRoaXMgPSB0aGlzO1xuICAgICAgICBsYXN0Q2FsbFRpbWUgPSB0aW1lO1xuXG4gICAgICAgIGlmIChpc0ludm9raW5nKSB7XG4gICAgICAgICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGxlYWRpbmdFZGdlKGxhc3RDYWxsVGltZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtYXhpbmcpIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBpbnZvY2F0aW9ucyBpbiBhIHRpZ2h0IGxvb3AuXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXJJZCk7XG4gICAgICAgICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgICAgICAgICAgcmV0dXJuIGludm9rZUZ1bmMobGFzdENhbGxUaW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIGRlYm91bmNlZC5jYW5jZWwgPSBjYW5jZWw7XG4gICAgICBkZWJvdW5jZWQuZmx1c2ggPSBmbHVzaDtcbiAgICAgIHJldHVybiBkZWJvdW5jZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVmZXJzIGludm9raW5nIHRoZSBgZnVuY2AgdW50aWwgdGhlIGN1cnJlbnQgY2FsbCBzdGFjayBoYXMgY2xlYXJlZC4gQW55XG4gICAgICogYWRkaXRpb25hbCBhcmd1bWVudHMgYXJlIHByb3ZpZGVkIHRvIGBmdW5jYCB3aGVuIGl0J3MgaW52b2tlZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlZmVyLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRpbWVyIGlkLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRlZmVyKGZ1bmN0aW9uKHRleHQpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKHRleHQpO1xuICAgICAqIH0sICdkZWZlcnJlZCcpO1xuICAgICAqIC8vID0+IExvZ3MgJ2RlZmVycmVkJyBhZnRlciBvbmUgbWlsbGlzZWNvbmQuXG4gICAgICovXG4gICAgdmFyIGRlZmVyID0gYmFzZVJlc3QoZnVuY3Rpb24oZnVuYywgYXJncykge1xuICAgICAgcmV0dXJuIGJhc2VEZWxheShmdW5jLCAxLCBhcmdzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIEludm9rZXMgYGZ1bmNgIGFmdGVyIGB3YWl0YCBtaWxsaXNlY29uZHMuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmVcbiAgICAgKiBwcm92aWRlZCB0byBgZnVuY2Agd2hlbiBpdCdzIGludm9rZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBkZWxheS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gd2FpdCBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheSBpbnZvY2F0aW9uLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRpbWVyIGlkLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRlbGF5KGZ1bmN0aW9uKHRleHQpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKHRleHQpO1xuICAgICAqIH0sIDEwMDAsICdsYXRlcicpO1xuICAgICAqIC8vID0+IExvZ3MgJ2xhdGVyJyBhZnRlciBvbmUgc2Vjb25kLlxuICAgICAqL1xuICAgIHZhciBkZWxheSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIHdhaXQsIGFyZ3MpIHtcbiAgICAgIHJldHVybiBiYXNlRGVsYXkoZnVuYywgdG9OdW1iZXIod2FpdCkgfHwgMCwgYXJncyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGFyZ3VtZW50cyByZXZlcnNlZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGZsaXAgYXJndW1lbnRzIGZvci5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmbGlwcGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgZmxpcHBlZCA9IF8uZmxpcChmdW5jdGlvbigpIHtcbiAgICAgKiAgIHJldHVybiBfLnRvQXJyYXkoYXJndW1lbnRzKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIGZsaXBwZWQoJ2EnLCAnYicsICdjJywgJ2QnKTtcbiAgICAgKiAvLyA9PiBbJ2QnLCAnYycsICdiJywgJ2EnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsaXAoZnVuYykge1xuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9GTElQX0ZMQUcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IG1lbW9pemVzIHRoZSByZXN1bHQgb2YgYGZ1bmNgLiBJZiBgcmVzb2x2ZXJgIGlzXG4gICAgICogcHJvdmlkZWQsIGl0IGRldGVybWluZXMgdGhlIGNhY2hlIGtleSBmb3Igc3RvcmluZyB0aGUgcmVzdWx0IGJhc2VkIG9uIHRoZVxuICAgICAqIGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24uIEJ5IGRlZmF1bHQsIHRoZSBmaXJzdCBhcmd1bWVudFxuICAgICAqIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbiBpcyB1c2VkIGFzIHRoZSBtYXAgY2FjaGUga2V5LiBUaGUgYGZ1bmNgXG4gICAgICogaXMgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhlIGNhY2hlIGlzIGV4cG9zZWQgYXMgdGhlIGBjYWNoZWAgcHJvcGVydHkgb24gdGhlIG1lbW9pemVkXG4gICAgICogZnVuY3Rpb24uIEl0cyBjcmVhdGlvbiBtYXkgYmUgY3VzdG9taXplZCBieSByZXBsYWNpbmcgdGhlIGBfLm1lbW9pemUuQ2FjaGVgXG4gICAgICogY29uc3RydWN0b3Igd2l0aCBvbmUgd2hvc2UgaW5zdGFuY2VzIGltcGxlbWVudCB0aGVcbiAgICAgKiBbYE1hcGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXByb3BlcnRpZXMtb2YtdGhlLW1hcC1wcm90b3R5cGUtb2JqZWN0KVxuICAgICAqIG1ldGhvZCBpbnRlcmZhY2Ugb2YgYGNsZWFyYCwgYGRlbGV0ZWAsIGBnZXRgLCBgaGFzYCwgYW5kIGBzZXRgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaGF2ZSBpdHMgb3V0cHV0IG1lbW9pemVkLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtyZXNvbHZlcl0gVGhlIGZ1bmN0aW9uIHRvIHJlc29sdmUgdGhlIGNhY2hlIGtleS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAgICAgKiB2YXIgb3RoZXIgPSB7ICdjJzogMywgJ2QnOiA0IH07XG4gICAgICpcbiAgICAgKiB2YXIgdmFsdWVzID0gXy5tZW1vaXplKF8udmFsdWVzKTtcbiAgICAgKiB2YWx1ZXMob2JqZWN0KTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIHZhbHVlcyhvdGhlcik7XG4gICAgICogLy8gPT4gWzMsIDRdXG4gICAgICpcbiAgICAgKiBvYmplY3QuYSA9IDI7XG4gICAgICogdmFsdWVzKG9iamVjdCk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICpcbiAgICAgKiAvLyBNb2RpZnkgdGhlIHJlc3VsdCBjYWNoZS5cbiAgICAgKiB2YWx1ZXMuY2FjaGUuc2V0KG9iamVjdCwgWydhJywgJ2InXSk7XG4gICAgICogdmFsdWVzKG9iamVjdCk7XG4gICAgICogLy8gPT4gWydhJywgJ2InXVxuICAgICAqXG4gICAgICogLy8gUmVwbGFjZSBgXy5tZW1vaXplLkNhY2hlYC5cbiAgICAgKiBfLm1lbW9pemUuQ2FjaGUgPSBXZWFrTWFwO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1lbW9pemUoZnVuYywgcmVzb2x2ZXIpIHtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nIHx8IChyZXNvbHZlciAhPSBudWxsICYmIHR5cGVvZiByZXNvbHZlciAhPSAnZnVuY3Rpb24nKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICB2YXIgbWVtb2l6ZWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgICBrZXkgPSByZXNvbHZlciA/IHJlc29sdmVyLmFwcGx5KHRoaXMsIGFyZ3MpIDogYXJnc1swXSxcbiAgICAgICAgICAgIGNhY2hlID0gbWVtb2l6ZWQuY2FjaGU7XG5cbiAgICAgICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICAgICAgcmV0dXJuIGNhY2hlLmdldChrZXkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICBtZW1vaXplZC5jYWNoZSA9IGNhY2hlLnNldChrZXksIHJlc3VsdCkgfHwgY2FjaGU7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgICAgbWVtb2l6ZWQuY2FjaGUgPSBuZXcgKG1lbW9pemUuQ2FjaGUgfHwgTWFwQ2FjaGUpO1xuICAgICAgcmV0dXJuIG1lbW9pemVkO1xuICAgIH1cblxuICAgIC8vIEV4cG9zZSBgTWFwQ2FjaGVgLlxuICAgIG1lbW9pemUuQ2FjaGUgPSBNYXBDYWNoZTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IG5lZ2F0ZXMgdGhlIHJlc3VsdCBvZiB0aGUgcHJlZGljYXRlIGBmdW5jYC4gVGhlXG4gICAgICogYGZ1bmNgIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIGFuZCBhcmd1bWVudHMgb2YgdGhlXG4gICAgICogY3JlYXRlZCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgcHJlZGljYXRlIHRvIG5lZ2F0ZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBuZWdhdGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBpc0V2ZW4obikge1xuICAgICAqICAgcmV0dXJuIG4gJSAyID09IDA7XG4gICAgICogfVxuICAgICAqXG4gICAgICogXy5maWx0ZXIoWzEsIDIsIDMsIDQsIDUsIDZdLCBfLm5lZ2F0ZShpc0V2ZW4pKTtcbiAgICAgKiAvLyA9PiBbMSwgMywgNV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBuZWdhdGUocHJlZGljYXRlKSB7XG4gICAgICBpZiAodHlwZW9mIHByZWRpY2F0ZSAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICAgICAgICBjYXNlIDA6IHJldHVybiAhcHJlZGljYXRlLmNhbGwodGhpcyk7XG4gICAgICAgICAgY2FzZSAxOiByZXR1cm4gIXByZWRpY2F0ZS5jYWxsKHRoaXMsIGFyZ3NbMF0pO1xuICAgICAgICAgIGNhc2UgMjogcmV0dXJuICFwcmVkaWNhdGUuY2FsbCh0aGlzLCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICAgICAgICBjYXNlIDM6IHJldHVybiAhcHJlZGljYXRlLmNhbGwodGhpcywgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICFwcmVkaWNhdGUuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGlzIHJlc3RyaWN0ZWQgdG8gaW52b2tpbmcgYGZ1bmNgIG9uY2UuIFJlcGVhdCBjYWxsc1xuICAgICAqIHRvIHRoZSBmdW5jdGlvbiByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBpbnZvY2F0aW9uLiBUaGUgYGZ1bmNgIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBhbmQgYXJndW1lbnRzIG9mIHRoZSBjcmVhdGVkIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmVzdHJpY3RlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGluaXRpYWxpemUgPSBfLm9uY2UoY3JlYXRlQXBwbGljYXRpb24pO1xuICAgICAqIGluaXRpYWxpemUoKTtcbiAgICAgKiBpbml0aWFsaXplKCk7XG4gICAgICogLy8gPT4gYGNyZWF0ZUFwcGxpY2F0aW9uYCBpcyBpbnZva2VkIG9uY2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvbmNlKGZ1bmMpIHtcbiAgICAgIHJldHVybiBiZWZvcmUoMiwgZnVuYyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBpdHMgYXJndW1lbnRzIHRyYW5zZm9ybWVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW3RyYW5zZm9ybXM9W18uaWRlbnRpdHldXVxuICAgICAqICBUaGUgYXJndW1lbnQgdHJhbnNmb3Jtcy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZG91YmxlZChuKSB7XG4gICAgICogICByZXR1cm4gbiAqIDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgZnVuYyA9IF8ub3ZlckFyZ3MoZnVuY3Rpb24oeCwgeSkge1xuICAgICAqICAgcmV0dXJuIFt4LCB5XTtcbiAgICAgKiB9LCBbc3F1YXJlLCBkb3VibGVkXSk7XG4gICAgICpcbiAgICAgKiBmdW5jKDksIDMpO1xuICAgICAqIC8vID0+IFs4MSwgNl1cbiAgICAgKlxuICAgICAqIGZ1bmMoMTAsIDUpO1xuICAgICAqIC8vID0+IFsxMDAsIDEwXVxuICAgICAqL1xuICAgIHZhciBvdmVyQXJncyA9IGNhc3RSZXN0KGZ1bmN0aW9uKGZ1bmMsIHRyYW5zZm9ybXMpIHtcbiAgICAgIHRyYW5zZm9ybXMgPSAodHJhbnNmb3Jtcy5sZW5ndGggPT0gMSAmJiBpc0FycmF5KHRyYW5zZm9ybXNbMF0pKVxuICAgICAgICA/IGFycmF5TWFwKHRyYW5zZm9ybXNbMF0sIGJhc2VVbmFyeShnZXRJdGVyYXRlZSgpKSlcbiAgICAgICAgOiBhcnJheU1hcChiYXNlRmxhdHRlbih0cmFuc2Zvcm1zLCAxKSwgYmFzZVVuYXJ5KGdldEl0ZXJhdGVlKCkpKTtcblxuICAgICAgdmFyIGZ1bmNzTGVuZ3RoID0gdHJhbnNmb3Jtcy5sZW5ndGg7XG4gICAgICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICAgICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1pbihhcmdzLmxlbmd0aCwgZnVuY3NMZW5ndGgpO1xuXG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgYXJnc1tpbmRleF0gPSB0cmFuc2Zvcm1zW2luZGV4XS5jYWxsKHRoaXMsIGFyZ3NbaW5kZXhdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXBwbHkoZnVuYywgdGhpcywgYXJncyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggYHBhcnRpYWxzYCBwcmVwZW5kZWQgdG8gdGhlXG4gICAgICogYXJndW1lbnRzIGl0IHJlY2VpdmVzLiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmJpbmRgIGV4Y2VwdCBpdCBkb2VzICoqbm90KipcbiAgICAgKiBhbHRlciB0aGUgYHRoaXNgIGJpbmRpbmcuXG4gICAgICpcbiAgICAgKiBUaGUgYF8ucGFydGlhbC5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljXG4gICAgICogYnVpbGRzLCBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgZG9lc24ndCBzZXQgdGhlIFwibGVuZ3RoXCIgcHJvcGVydHkgb2YgcGFydGlhbGx5XG4gICAgICogYXBwbGllZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4yLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBwYXJ0aWFsbHkgYXBwbHkgYXJndW1lbnRzIHRvLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIGJlIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHBhcnRpYWxseSBhcHBsaWVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBncmVldChncmVldGluZywgbmFtZSkge1xuICAgICAqICAgcmV0dXJuIGdyZWV0aW5nICsgJyAnICsgbmFtZTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgc2F5SGVsbG9UbyA9IF8ucGFydGlhbChncmVldCwgJ2hlbGxvJyk7XG4gICAgICogc2F5SGVsbG9UbygnZnJlZCcpO1xuICAgICAqIC8vID0+ICdoZWxsbyBmcmVkJ1xuICAgICAqXG4gICAgICogLy8gUGFydGlhbGx5IGFwcGxpZWQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogdmFyIGdyZWV0RnJlZCA9IF8ucGFydGlhbChncmVldCwgXywgJ2ZyZWQnKTtcbiAgICAgKiBncmVldEZyZWQoJ2hpJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQnXG4gICAgICovXG4gICAgdmFyIHBhcnRpYWwgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCBwYXJ0aWFscykge1xuICAgICAgdmFyIGhvbGRlcnMgPSByZXBsYWNlSG9sZGVycyhwYXJ0aWFscywgZ2V0SG9sZGVyKHBhcnRpYWwpKTtcbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGZ1bmMsIFdSQVBfUEFSVElBTF9GTEFHLCB1bmRlZmluZWQsIHBhcnRpYWxzLCBob2xkZXJzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucGFydGlhbGAgZXhjZXB0IHRoYXQgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzXG4gICAgICogYXJlIGFwcGVuZGVkIHRvIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBUaGUgYF8ucGFydGlhbFJpZ2h0LnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWNcbiAgICAgKiBidWlsZHMsIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBwYXJ0aWFsbHlcbiAgICAgKiBhcHBsaWVkIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHBhcnRpYWxseSBhcHBseSBhcmd1bWVudHMgdG8uXG4gICAgICogQHBhcmFtIHsuLi4qfSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gYmUgcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcGFydGlhbGx5IGFwcGxpZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGdyZWV0KGdyZWV0aW5nLCBuYW1lKSB7XG4gICAgICogICByZXR1cm4gZ3JlZXRpbmcgKyAnICcgKyBuYW1lO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBncmVldEZyZWQgPSBfLnBhcnRpYWxSaWdodChncmVldCwgJ2ZyZWQnKTtcbiAgICAgKiBncmVldEZyZWQoJ2hpJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQnXG4gICAgICpcbiAgICAgKiAvLyBQYXJ0aWFsbHkgYXBwbGllZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgKiB2YXIgc2F5SGVsbG9UbyA9IF8ucGFydGlhbFJpZ2h0KGdyZWV0LCAnaGVsbG8nLCBfKTtcbiAgICAgKiBzYXlIZWxsb1RvKCdmcmVkJyk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGZyZWQnXG4gICAgICovXG4gICAgdmFyIHBhcnRpYWxSaWdodCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIHBhcnRpYWxzKSB7XG4gICAgICB2YXIgaG9sZGVycyA9IHJlcGxhY2VIb2xkZXJzKHBhcnRpYWxzLCBnZXRIb2xkZXIocGFydGlhbFJpZ2h0KSk7XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRywgdW5kZWZpbmVkLCBwYXJ0aWFscywgaG9sZGVycyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGFyZ3VtZW50cyBhcnJhbmdlZCBhY2NvcmRpbmdcbiAgICAgKiB0byB0aGUgc3BlY2lmaWVkIGBpbmRleGVzYCB3aGVyZSB0aGUgYXJndW1lbnQgdmFsdWUgYXQgdGhlIGZpcnN0IGluZGV4IGlzXG4gICAgICogcHJvdmlkZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LCB0aGUgYXJndW1lbnQgdmFsdWUgYXQgdGhlIHNlY29uZCBpbmRleCBpc1xuICAgICAqIHByb3ZpZGVkIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQsIGFuZCBzbyBvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHJlYXJyYW5nZSBhcmd1bWVudHMgZm9yLlxuICAgICAqIEBwYXJhbSB7Li4uKG51bWJlcnxudW1iZXJbXSl9IGluZGV4ZXMgVGhlIGFycmFuZ2VkIGFyZ3VtZW50IGluZGV4ZXMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciByZWFyZ2VkID0gXy5yZWFyZyhmdW5jdGlvbihhLCBiLCBjKSB7XG4gICAgICogICByZXR1cm4gW2EsIGIsIGNdO1xuICAgICAqIH0sIFsyLCAwLCAxXSk7XG4gICAgICpcbiAgICAgKiByZWFyZ2VkKCdiJywgJ2MnLCAnYScpXG4gICAgICogLy8gPT4gWydhJywgJ2InLCAnYyddXG4gICAgICovXG4gICAgdmFyIHJlYXJnID0gZmxhdFJlc3QoZnVuY3Rpb24oZnVuYywgaW5kZXhlcykge1xuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9SRUFSR19GTEFHLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBpbmRleGVzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZVxuICAgICAqIGNyZWF0ZWQgZnVuY3Rpb24gYW5kIGFyZ3VtZW50cyBmcm9tIGBzdGFydGAgYW5kIGJleW9uZCBwcm92aWRlZCBhc1xuICAgICAqIGFuIGFycmF5LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZVxuICAgICAqIFtyZXN0IHBhcmFtZXRlcl0oaHR0cHM6Ly9tZG4uaW8vcmVzdF9wYXJhbWV0ZXJzKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgc2F5ID0gXy5yZXN0KGZ1bmN0aW9uKHdoYXQsIG5hbWVzKSB7XG4gICAgICogICByZXR1cm4gd2hhdCArICcgJyArIF8uaW5pdGlhbChuYW1lcykuam9pbignLCAnKSArXG4gICAgICogICAgIChfLnNpemUobmFtZXMpID4gMSA/ICcsICYgJyA6ICcnKSArIF8ubGFzdChuYW1lcyk7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBzYXkoJ2hlbGxvJywgJ2ZyZWQnLCAnYmFybmV5JywgJ3BlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVzdChmdW5jLCBzdGFydCkge1xuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgc3RhcnQgPSBzdGFydCA9PT0gdW5kZWZpbmVkID8gc3RhcnQgOiB0b0ludGVnZXIoc3RhcnQpO1xuICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmMsIHN0YXJ0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGVcbiAgICAgKiBjcmVhdGUgZnVuY3Rpb24gYW5kIGFuIGFycmF5IG9mIGFyZ3VtZW50cyBtdWNoIGxpa2VcbiAgICAgKiBbYEZ1bmN0aW9uI2FwcGx5YF0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb24gdGhlXG4gICAgICogW3NwcmVhZCBvcGVyYXRvcl0oaHR0cHM6Ly9tZG4uaW8vc3ByZWFkX29wZXJhdG9yKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHNwcmVhZCBhcmd1bWVudHMgb3Zlci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgc3ByZWFkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgc2F5ID0gXy5zcHJlYWQoZnVuY3Rpb24od2hvLCB3aGF0KSB7XG4gICAgICogICByZXR1cm4gd2hvICsgJyBzYXlzICcgKyB3aGF0O1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogc2F5KFsnZnJlZCcsICdoZWxsbyddKTtcbiAgICAgKiAvLyA9PiAnZnJlZCBzYXlzIGhlbGxvJ1xuICAgICAqXG4gICAgICogdmFyIG51bWJlcnMgPSBQcm9taXNlLmFsbChbXG4gICAgICogICBQcm9taXNlLnJlc29sdmUoNDApLFxuICAgICAqICAgUHJvbWlzZS5yZXNvbHZlKDM2KVxuICAgICAqIF0pO1xuICAgICAqXG4gICAgICogbnVtYmVycy50aGVuKF8uc3ByZWFkKGZ1bmN0aW9uKHgsIHkpIHtcbiAgICAgKiAgIHJldHVybiB4ICsgeTtcbiAgICAgKiB9KSk7XG4gICAgICogLy8gPT4gYSBQcm9taXNlIG9mIDc2XG4gICAgICovXG4gICAgZnVuY3Rpb24gc3ByZWFkKGZ1bmMsIHN0YXJ0KSB7XG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICBzdGFydCA9IHN0YXJ0ID09IG51bGwgPyAwIDogbmF0aXZlTWF4KHRvSW50ZWdlcihzdGFydCksIDApO1xuICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgICAgdmFyIGFycmF5ID0gYXJnc1tzdGFydF0sXG4gICAgICAgICAgICBvdGhlckFyZ3MgPSBjYXN0U2xpY2UoYXJncywgMCwgc3RhcnQpO1xuXG4gICAgICAgIGlmIChhcnJheSkge1xuICAgICAgICAgIGFycmF5UHVzaChvdGhlckFyZ3MsIGFycmF5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXBwbHkoZnVuYywgdGhpcywgb3RoZXJBcmdzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSB0aHJvdHRsZWQgZnVuY3Rpb24gdGhhdCBvbmx5IGludm9rZXMgYGZ1bmNgIGF0IG1vc3Qgb25jZSBwZXJcbiAgICAgKiBldmVyeSBgd2FpdGAgbWlsbGlzZWNvbmRzLiBUaGUgdGhyb3R0bGVkIGZ1bmN0aW9uIGNvbWVzIHdpdGggYSBgY2FuY2VsYFxuICAgICAqIG1ldGhvZCB0byBjYW5jZWwgZGVsYXllZCBgZnVuY2AgaW52b2NhdGlvbnMgYW5kIGEgYGZsdXNoYCBtZXRob2QgdG9cbiAgICAgKiBpbW1lZGlhdGVseSBpbnZva2UgdGhlbS4gUHJvdmlkZSBgb3B0aW9uc2AgdG8gaW5kaWNhdGUgd2hldGhlciBgZnVuY2BcbiAgICAgKiBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGUgbGVhZGluZyBhbmQvb3IgdHJhaWxpbmcgZWRnZSBvZiB0aGUgYHdhaXRgXG4gICAgICogdGltZW91dC4gVGhlIGBmdW5jYCBpcyBpbnZva2VkIHdpdGggdGhlIGxhc3QgYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZVxuICAgICAqIHRocm90dGxlZCBmdW5jdGlvbi4gU3Vic2VxdWVudCBjYWxscyB0byB0aGUgdGhyb3R0bGVkIGZ1bmN0aW9uIHJldHVybiB0aGVcbiAgICAgKiByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgIGludm9jYXRpb24uXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSWYgYGxlYWRpbmdgIGFuZCBgdHJhaWxpbmdgIG9wdGlvbnMgYXJlIGB0cnVlYCwgYGZ1bmNgIGlzXG4gICAgICogaW52b2tlZCBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dCBvbmx5IGlmIHRoZSB0aHJvdHRsZWQgZnVuY3Rpb25cbiAgICAgKiBpcyBpbnZva2VkIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgYHdhaXRgIHRpbWVvdXQuXG4gICAgICpcbiAgICAgKiBJZiBgd2FpdGAgaXMgYDBgIGFuZCBgbGVhZGluZ2AgaXMgYGZhbHNlYCwgYGZ1bmNgIGludm9jYXRpb24gaXMgZGVmZXJyZWRcbiAgICAgKiB1bnRpbCB0byB0aGUgbmV4dCB0aWNrLCBzaW1pbGFyIHRvIGBzZXRUaW1lb3V0YCB3aXRoIGEgdGltZW91dCBvZiBgMGAuXG4gICAgICpcbiAgICAgKiBTZWUgW0RhdmlkIENvcmJhY2hvJ3MgYXJ0aWNsZV0oaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9kZWJvdW5jaW5nLXRocm90dGxpbmctZXhwbGFpbmVkLWV4YW1wbGVzLylcbiAgICAgKiBmb3IgZGV0YWlscyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBfLnRocm90dGxlYCBhbmQgYF8uZGVib3VuY2VgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gdGhyb3R0bGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFt3YWl0PTBdIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHRocm90dGxlIGludm9jYXRpb25zIHRvLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVhZGluZz10cnVlXVxuICAgICAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy50cmFpbGluZz10cnVlXVxuICAgICAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHRocm90dGxlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gQXZvaWQgZXhjZXNzaXZlbHkgdXBkYXRpbmcgdGhlIHBvc2l0aW9uIHdoaWxlIHNjcm9sbGluZy5cbiAgICAgKiBqUXVlcnkod2luZG93KS5vbignc2Nyb2xsJywgXy50aHJvdHRsZSh1cGRhdGVQb3NpdGlvbiwgMTAwKSk7XG4gICAgICpcbiAgICAgKiAvLyBJbnZva2UgYHJlbmV3VG9rZW5gIHdoZW4gdGhlIGNsaWNrIGV2ZW50IGlzIGZpcmVkLCBidXQgbm90IG1vcmUgdGhhbiBvbmNlIGV2ZXJ5IDUgbWludXRlcy5cbiAgICAgKiB2YXIgdGhyb3R0bGVkID0gXy50aHJvdHRsZShyZW5ld1Rva2VuLCAzMDAwMDAsIHsgJ3RyYWlsaW5nJzogZmFsc2UgfSk7XG4gICAgICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIHRocm90dGxlZCk7XG4gICAgICpcbiAgICAgKiAvLyBDYW5jZWwgdGhlIHRyYWlsaW5nIHRocm90dGxlZCBpbnZvY2F0aW9uLlxuICAgICAqIGpRdWVyeSh3aW5kb3cpLm9uKCdwb3BzdGF0ZScsIHRocm90dGxlZC5jYW5jZWwpO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRocm90dGxlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgICAgIHZhciBsZWFkaW5nID0gdHJ1ZSxcbiAgICAgICAgICB0cmFpbGluZyA9IHRydWU7XG5cbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc09iamVjdChvcHRpb25zKSkge1xuICAgICAgICBsZWFkaW5nID0gJ2xlYWRpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMubGVhZGluZyA6IGxlYWRpbmc7XG4gICAgICAgIHRyYWlsaW5nID0gJ3RyYWlsaW5nJyBpbiBvcHRpb25zID8gISFvcHRpb25zLnRyYWlsaW5nIDogdHJhaWxpbmc7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGVib3VuY2UoZnVuYywgd2FpdCwge1xuICAgICAgICAnbGVhZGluZyc6IGxlYWRpbmcsXG4gICAgICAgICdtYXhXYWl0Jzogd2FpdCxcbiAgICAgICAgJ3RyYWlsaW5nJzogdHJhaWxpbmdcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdXAgdG8gb25lIGFyZ3VtZW50LCBpZ25vcmluZyBhbnlcbiAgICAgKiBhZGRpdGlvbmFsIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tYXAoWyc2JywgJzgnLCAnMTAnXSwgXy51bmFyeShwYXJzZUludCkpO1xuICAgICAqIC8vID0+IFs2LCA4LCAxMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmFyeShmdW5jKSB7XG4gICAgICByZXR1cm4gYXJ5KGZ1bmMsIDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHByb3ZpZGVzIGB2YWx1ZWAgdG8gYHdyYXBwZXJgIGFzIGl0cyBmaXJzdFxuICAgICAqIGFyZ3VtZW50LiBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIGZ1bmN0aW9uIGFyZSBhcHBlbmRlZFxuICAgICAqIHRvIHRob3NlIHByb3ZpZGVkIHRvIHRoZSBgd3JhcHBlcmAuIFRoZSB3cmFwcGVyIGlzIGludm9rZWQgd2l0aCB0aGUgYHRoaXNgXG4gICAgICogYmluZGluZyBvZiB0aGUgY3JlYXRlZCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3dyYXBwZXI9aWRlbnRpdHldIFRoZSB3cmFwcGVyIGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgcCA9IF8ud3JhcChfLmVzY2FwZSwgZnVuY3Rpb24oZnVuYywgdGV4dCkge1xuICAgICAqICAgcmV0dXJuICc8cD4nICsgZnVuYyh0ZXh0KSArICc8L3A+JztcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIHAoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJyk7XG4gICAgICogLy8gPT4gJzxwPmZyZWQsIGJhcm5leSwgJmFtcDsgcGViYmxlczwvcD4nXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcCh2YWx1ZSwgd3JhcHBlcikge1xuICAgICAgcmV0dXJuIHBhcnRpYWwoY2FzdEZ1bmN0aW9uKHdyYXBwZXIpLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ2FzdHMgYHZhbHVlYCBhcyBhbiBhcnJheSBpZiBpdCdzIG5vdCBvbmUuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC40LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheSgxKTtcbiAgICAgKiAvLyA9PiBbMV1cbiAgICAgKlxuICAgICAqIF8uY2FzdEFycmF5KHsgJ2EnOiAxIH0pO1xuICAgICAqIC8vID0+IFt7ICdhJzogMSB9XVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkoJ2FiYycpO1xuICAgICAqIC8vID0+IFsnYWJjJ11cbiAgICAgKlxuICAgICAqIF8uY2FzdEFycmF5KG51bGwpO1xuICAgICAqIC8vID0+IFtudWxsXVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkodW5kZWZpbmVkKTtcbiAgICAgKiAvLyA9PiBbdW5kZWZpbmVkXVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkoKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDNdO1xuICAgICAqIGNvbnNvbGUubG9nKF8uY2FzdEFycmF5KGFycmF5KSA9PT0gYXJyYXkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXN0QXJyYXkoKSB7XG4gICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIHZhbHVlID0gYXJndW1lbnRzWzBdO1xuICAgICAgcmV0dXJuIGlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzaGFsbG93IGNsb25lIG9mIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvbiB0aGVcbiAgICAgKiBbc3RydWN0dXJlZCBjbG9uZSBhbGdvcml0aG1dKGh0dHBzOi8vbWRuLmlvL1N0cnVjdHVyZWRfY2xvbmVfYWxnb3JpdGhtKVxuICAgICAqIGFuZCBzdXBwb3J0cyBjbG9uaW5nIGFycmF5cywgYXJyYXkgYnVmZmVycywgYm9vbGVhbnMsIGRhdGUgb2JqZWN0cywgbWFwcyxcbiAgICAgKiBudW1iZXJzLCBgT2JqZWN0YCBvYmplY3RzLCByZWdleGVzLCBzZXRzLCBzdHJpbmdzLCBzeW1ib2xzLCBhbmQgdHlwZWRcbiAgICAgKiBhcnJheXMuIFRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9mIGBhcmd1bWVudHNgIG9iamVjdHMgYXJlIGNsb25lZFxuICAgICAqIGFzIHBsYWluIG9iamVjdHMuIEFuIGVtcHR5IG9iamVjdCBpcyByZXR1cm5lZCBmb3IgdW5jbG9uZWFibGUgdmFsdWVzIHN1Y2hcbiAgICAgKiBhcyBlcnJvciBvYmplY3RzLCBmdW5jdGlvbnMsIERPTSBub2RlcywgYW5kIFdlYWtNYXBzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5jbG9uZURlZXBcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAnYSc6IDEgfSwgeyAnYic6IDIgfV07XG4gICAgICpcbiAgICAgKiB2YXIgc2hhbGxvdyA9IF8uY2xvbmUob2JqZWN0cyk7XG4gICAgICogY29uc29sZS5sb2coc2hhbGxvd1swXSA9PT0gb2JqZWN0c1swXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lKHZhbHVlKSB7XG4gICAgICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9TWU1CT0xTX0ZMQUcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY2xvbmVgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBjbG9uZWQgdmFsdWUuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgLFxuICAgICAqIGNsb25pbmcgaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoXG4gICAgICogdXAgdG8gZm91ciBhcmd1bWVudHM7ICh2YWx1ZSBbLCBpbmRleHxrZXksIG9iamVjdCwgc3RhY2tdKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5jbG9uZURlZXBXaXRoXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIodmFsdWUpIHtcbiAgICAgKiAgIGlmIChfLmlzRWxlbWVudCh2YWx1ZSkpIHtcbiAgICAgKiAgICAgcmV0dXJuIHZhbHVlLmNsb25lTm9kZShmYWxzZSk7XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGVsID0gXy5jbG9uZVdpdGgoZG9jdW1lbnQuYm9keSwgY3VzdG9taXplcik7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhlbCA9PT0gZG9jdW1lbnQuYm9keSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKiBjb25zb2xlLmxvZyhlbC5ub2RlTmFtZSk7XG4gICAgICogLy8gPT4gJ0JPRFknXG4gICAgICogY29uc29sZS5sb2coZWwuY2hpbGROb2Rlcy5sZW5ndGgpO1xuICAgICAqIC8vID0+IDBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZVdpdGgodmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX1NZTUJPTFNfRkxBRywgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZWAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgY2xvbmVzIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJlY3Vyc2l2ZWx5IGNsb25lLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBkZWVwIGNsb25lZCB2YWx1ZS5cbiAgICAgKiBAc2VlIF8uY2xvbmVcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAnYSc6IDEgfSwgeyAnYic6IDIgfV07XG4gICAgICpcbiAgICAgKiB2YXIgZGVlcCA9IF8uY2xvbmVEZWVwKG9iamVjdHMpO1xuICAgICAqIGNvbnNvbGUubG9nKGRlZXBbMF0gPT09IG9iamVjdHNbMF0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVEZWVwKHZhbHVlKSB7XG4gICAgICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9ERUVQX0ZMQUcgfCBDTE9ORV9TWU1CT0xTX0ZMQUcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY2xvbmVXaXRoYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBjbG9uZXMgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmVjdXJzaXZlbHkgY2xvbmUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZGVlcCBjbG9uZWQgdmFsdWUuXG4gICAgICogQHNlZSBfLmNsb25lV2l0aFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBjdXN0b21pemVyKHZhbHVlKSB7XG4gICAgICogICBpZiAoXy5pc0VsZW1lbnQodmFsdWUpKSB7XG4gICAgICogICAgIHJldHVybiB2YWx1ZS5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGVsID0gXy5jbG9uZURlZXBXaXRoKGRvY3VtZW50LmJvZHksIGN1c3RvbWl6ZXIpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coZWwgPT09IGRvY3VtZW50LmJvZHkpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICogY29uc29sZS5sb2coZWwubm9kZU5hbWUpO1xuICAgICAqIC8vID0+ICdCT0RZJ1xuICAgICAqIGNvbnNvbGUubG9nKGVsLmNoaWxkTm9kZXMubGVuZ3RoKTtcbiAgICAgKiAvLyA9PiAyMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lRGVlcFdpdGgodmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX0RFRVBfRkxBRyB8IENMT05FX1NZTUJPTFNfRkxBRywgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBvYmplY3RgIGNvbmZvcm1zIHRvIGBzb3VyY2VgIGJ5IGludm9raW5nIHRoZSBwcmVkaWNhdGVcbiAgICAgKiBwcm9wZXJ0aWVzIG9mIGBzb3VyY2VgIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgdmFsdWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGVxdWl2YWxlbnQgdG8gYF8uY29uZm9ybXNgIHdoZW4gYHNvdXJjZWAgaXNcbiAgICAgKiBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjE0LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSBwcmVkaWNhdGVzIHRvIGNvbmZvcm0gdG8uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGNvbmZvcm1zLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyIH07XG4gICAgICpcbiAgICAgKiBfLmNvbmZvcm1zVG8ob2JqZWN0LCB7ICdiJzogZnVuY3Rpb24obikgeyByZXR1cm4gbiA+IDE7IH0gfSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5jb25mb3Jtc1RvKG9iamVjdCwgeyAnYic6IGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG4gPiAyOyB9IH0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29uZm9ybXNUbyhvYmplY3QsIHNvdXJjZSkge1xuICAgICAgcmV0dXJuIHNvdXJjZSA9PSBudWxsIHx8IGJhc2VDb25mb3Jtc1RvKG9iamVjdCwgc291cmNlLCBrZXlzKHNvdXJjZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIGFcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBlcXVpdmFsZW50LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gICAgICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAgICAgKlxuICAgICAqIF8uZXEob2JqZWN0LCBvYmplY3QpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uZXEob2JqZWN0LCBvdGhlcik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uZXEoJ2EnLCAnYScpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uZXEoJ2EnLCBPYmplY3QoJ2EnKSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uZXEoTmFOLCBOYU4pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlcSh2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gb3RoZXIgfHwgKHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBgb3RoZXJgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAc2VlIF8ubHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5ndCgzLCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmd0KDMsIDMpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmd0KDEsIDMpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGd0ID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihiYXNlR3QpO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBvdGhlcmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy45LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG9cbiAgICAgKiAgYG90aGVyYCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBzZWUgXy5sdGVcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5ndGUoMywgMSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5ndGUoMywgMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5ndGUoMSwgMyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgZ3RlID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihmdW5jdGlvbih2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSBvdGhlcjtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhbiBgYXJndW1lbnRzYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0FyZ3VtZW50cyA9IGJhc2VJc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA/IGJhc2VJc0FyZ3VtZW50cyA6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnY2FsbGVlJykgJiZcbiAgICAgICAgIXByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodmFsdWUsICdjYWxsZWUnKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoJ2FiYycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoXy5ub29wKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYW4gYEFycmF5QnVmZmVyYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5IGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlCdWZmZXIobmV3IEFycmF5QnVmZmVyKDIpKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlCdWZmZXIobmV3IEFycmF5KDIpKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0FycmF5QnVmZmVyID0gbm9kZUlzQXJyYXlCdWZmZXIgPyBiYXNlVW5hcnkobm9kZUlzQXJyYXlCdWZmZXIpIDogYmFzZUlzQXJyYXlCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLiBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgYXJyYXktbGlrZSBpZiBpdCdzXG4gICAgICogbm90IGEgZnVuY3Rpb24gYW5kIGhhcyBhIGB2YWx1ZS5sZW5ndGhgIHRoYXQncyBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvclxuICAgICAqIGVxdWFsIHRvIGAwYCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZShbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2UoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZSgnYWJjJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZShfLm5vb3ApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNBcnJheUxpa2UodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgIWlzRnVuY3Rpb24odmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNBcnJheUxpa2VgIGV4Y2VwdCB0aGF0IGl0IGFsc28gY2hlY2tzIGlmIGB2YWx1ZWBcbiAgICAgKiBpcyBhbiBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LWxpa2Ugb2JqZWN0LFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2VPYmplY3QoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlT2JqZWN0KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2VPYmplY3QoJ2FiYycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlT2JqZWN0KF8ubm9vcCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaXNBcnJheUxpa2UodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBib29sZWFuIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgYm9vbGVhbiwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQm9vbGVhbihmYWxzZSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Jvb2xlYW4obnVsbCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0Jvb2xlYW4odmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gZmFsc2UgfHxcbiAgICAgICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYm9vbFRhZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgYnVmZmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNCdWZmZXIobmV3IEJ1ZmZlcigyKSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0J1ZmZlcihuZXcgVWludDhBcnJheSgyKSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNCdWZmZXIgPSBuYXRpdmVJc0J1ZmZlciB8fCBzdHViRmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYERhdGVgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBkYXRlIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRGF0ZShuZXcgRGF0ZSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0RhdGUoJ01vbiBBcHJpbCAyMyAyMDEyJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNEYXRlID0gbm9kZUlzRGF0ZSA/IGJhc2VVbmFyeShub2RlSXNEYXRlKSA6IGJhc2VJc0RhdGU7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYSBET00gZWxlbWVudC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBET00gZWxlbWVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRWxlbWVudChkb2N1bWVudC5ib2R5KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRWxlbWVudCgnPGJvZHk+Jyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0VsZW1lbnQodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIHZhbHVlLm5vZGVUeXBlID09PSAxICYmICFpc1BsYWluT2JqZWN0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBlbXB0eSBvYmplY3QsIGNvbGxlY3Rpb24sIG1hcCwgb3Igc2V0LlxuICAgICAqXG4gICAgICogT2JqZWN0cyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgbm8gb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkXG4gICAgICogcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIEFycmF5LWxpa2UgdmFsdWVzIHN1Y2ggYXMgYGFyZ3VtZW50c2Agb2JqZWN0cywgYXJyYXlzLCBidWZmZXJzLCBzdHJpbmdzLCBvclxuICAgICAqIGpRdWVyeS1saWtlIGNvbGxlY3Rpb25zIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBhIGBsZW5ndGhgIG9mIGAwYC5cbiAgICAgKiBTaW1pbGFybHksIG1hcHMgYW5kIHNldHMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIGEgYHNpemVgIG9mIGAwYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZW1wdHksIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0VtcHR5KG51bGwpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNFbXB0eSh0cnVlKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRW1wdHkoMSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0VtcHR5KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNFbXB0eSh7ICdhJzogMSB9KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzQXJyYXlMaWtlKHZhbHVlKSAmJlxuICAgICAgICAgIChpc0FycmF5KHZhbHVlKSB8fCB0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlLnNwbGljZSA9PSAnZnVuY3Rpb24nIHx8XG4gICAgICAgICAgICBpc0J1ZmZlcih2YWx1ZSkgfHwgaXNUeXBlZEFycmF5KHZhbHVlKSB8fCBpc0FyZ3VtZW50cyh2YWx1ZSkpKSB7XG4gICAgICAgIHJldHVybiAhdmFsdWUubGVuZ3RoO1xuICAgICAgfVxuICAgICAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSk7XG4gICAgICBpZiAodGFnID09IG1hcFRhZyB8fCB0YWcgPT0gc2V0VGFnKSB7XG4gICAgICAgIHJldHVybiAhdmFsdWUuc2l6ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1Byb3RvdHlwZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICFiYXNlS2V5cyh2YWx1ZSkubGVuZ3RoO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBhIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlXG4gICAgICogZXF1aXZhbGVudC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBzdXBwb3J0cyBjb21wYXJpbmcgYXJyYXlzLCBhcnJheSBidWZmZXJzLCBib29sZWFucyxcbiAgICAgKiBkYXRlIG9iamVjdHMsIGVycm9yIG9iamVjdHMsIG1hcHMsIG51bWJlcnMsIGBPYmplY3RgIG9iamVjdHMsIHJlZ2V4ZXMsXG4gICAgICogc2V0cywgc3RyaW5ncywgc3ltYm9scywgYW5kIHR5cGVkIGFycmF5cy4gYE9iamVjdGAgb2JqZWN0cyBhcmUgY29tcGFyZWRcbiAgICAgKiBieSB0aGVpciBvd24sIG5vdCBpbmhlcml0ZWQsIGVudW1lcmFibGUgcHJvcGVydGllcy4gRnVuY3Rpb25zIGFuZCBET01cbiAgICAgKiBub2RlcyBhcmUgY29tcGFyZWQgYnkgc3RyaWN0IGVxdWFsaXR5LCBpLmUuIGA9PT1gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gICAgICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAgICAgKlxuICAgICAqIF8uaXNFcXVhbChvYmplY3QsIG90aGVyKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBvYmplY3QgPT09IG90aGVyO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNFcXVhbCh2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNFcXVhbGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgdmFsdWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYCwgY29tcGFyaXNvbnNcbiAgICAgKiBhcmUgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoIHVwIHRvXG4gICAgICogc2l4IGFyZ3VtZW50czogKG9ialZhbHVlLCBvdGhWYWx1ZSBbLCBpbmRleHxrZXksIG9iamVjdCwgb3RoZXIsIHN0YWNrXSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBpc0dyZWV0aW5nKHZhbHVlKSB7XG4gICAgICogICByZXR1cm4gL15oKD86aXxlbGxvKSQvLnRlc3QodmFsdWUpO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIG90aFZhbHVlKSB7XG4gICAgICogICBpZiAoaXNHcmVldGluZyhvYmpWYWx1ZSkgJiYgaXNHcmVldGluZyhvdGhWYWx1ZSkpIHtcbiAgICAgKiAgICAgcmV0dXJuIHRydWU7XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWydoZWxsbycsICdnb29kYnllJ107XG4gICAgICogdmFyIG90aGVyID0gWydoaScsICdnb29kYnllJ107XG4gICAgICpcbiAgICAgKiBfLmlzRXF1YWxXaXRoKGFycmF5LCBvdGhlciwgY3VzdG9taXplcik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRXF1YWxXaXRoKHZhbHVlLCBvdGhlciwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgdmFyIHJlc3VsdCA9IGN1c3RvbWl6ZXIgPyBjdXN0b21pemVyKHZhbHVlLCBvdGhlcikgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIsIHVuZGVmaW5lZCwgY3VzdG9taXplcikgOiAhIXJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBgRXJyb3JgLCBgRXZhbEVycm9yYCwgYFJhbmdlRXJyb3JgLCBgUmVmZXJlbmNlRXJyb3JgLFxuICAgICAqIGBTeW50YXhFcnJvcmAsIGBUeXBlRXJyb3JgLCBvciBgVVJJRXJyb3JgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gZXJyb3Igb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNFcnJvcihuZXcgRXJyb3IpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNFcnJvcihFcnJvcik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0Vycm9yKHZhbHVlKSB7XG4gICAgICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICAgICAgcmV0dXJuIHRhZyA9PSBlcnJvclRhZyB8fCB0YWcgPT0gZG9tRXhjVGFnIHx8XG4gICAgICAgICh0eXBlb2YgdmFsdWUubWVzc2FnZSA9PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUubmFtZSA9PSAnc3RyaW5nJyAmJiAhaXNQbGFpbk9iamVjdCh2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgZmluaXRlIHByaW1pdGl2ZSBudW1iZXIuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYE51bWJlci5pc0Zpbml0ZWBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc0Zpbml0ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZmluaXRlIG51bWJlciwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRmluaXRlKDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNGaW5pdGUoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Zpbml0ZShJbmZpbml0eSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNGaW5pdGUoJzMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRmluaXRlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmIG5hdGl2ZUlzRmluaXRlKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYEZ1bmN0aW9uYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0Z1bmN0aW9uKF8pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gICAgICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyBUaGUgdXNlIG9mIGBPYmplY3QjdG9TdHJpbmdgIGF2b2lkcyBpc3N1ZXMgd2l0aCB0aGUgYHR5cGVvZmAgb3BlcmF0b3JcbiAgICAgIC8vIGluIFNhZmFyaSA5IHdoaWNoIHJldHVybnMgJ29iamVjdCcgZm9yIHR5cGVkIGFycmF5cyBhbmQgb3RoZXIgY29uc3RydWN0b3JzLlxuICAgICAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICAgICAgcmV0dXJuIHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWcgfHwgdGFnID09IGFzeW5jVGFnIHx8IHRhZyA9PSBwcm94eVRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBpbnRlZ2VyLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICogW2BOdW1iZXIuaXNJbnRlZ2VyYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzSW50ZWdlcikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGludGVnZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0ludGVnZXIoMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0ludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNJbnRlZ2VyKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0ludGVnZXIoJzMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzSW50ZWdlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJiB2YWx1ZSA9PSB0b0ludGVnZXIodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBsZW5ndGguXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICAgICAqIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2xlbmd0aCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNMZW5ndGgoMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNMZW5ndGgoJzMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmXG4gICAgICAgIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGVcbiAgICAgKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gICAgICogb2YgYE9iamVjdGAuIChlLmcuIGFycmF5cywgZnVuY3Rpb25zLCBvYmplY3RzLCByZWdleGVzLCBgbmV3IE51bWJlcigwKWAsIGFuZCBgbmV3IFN0cmluZygnJylgKVxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdCh7fSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3QoXy5ub29wKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0KG51bGwpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgICAgIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICAgICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcbiAgICAgKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBNYXBgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjMuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBtYXAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc01hcChuZXcgTWFwKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTWFwKG5ldyBXZWFrTWFwKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc01hcCA9IG5vZGVJc01hcCA/IGJhc2VVbmFyeShub2RlSXNNYXApIDogYmFzZUlzTWFwO1xuXG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgYSBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIGBvYmplY3RgIGFuZCBgc291cmNlYCB0b1xuICAgICAqIGRldGVybWluZSBpZiBgb2JqZWN0YCBjb250YWlucyBlcXVpdmFsZW50IHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50IHRvIGBfLm1hdGNoZXNgIHdoZW4gYHNvdXJjZWAgaXNcbiAgICAgKiBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIFBhcnRpYWwgY29tcGFyaXNvbnMgd2lsbCBtYXRjaCBlbXB0eSBhcnJheSBhbmQgZW1wdHkgb2JqZWN0IGBzb3VyY2VgXG4gICAgICogdmFsdWVzIGFnYWluc3QgYW55IGFycmF5IG9yIG9iamVjdCB2YWx1ZSwgcmVzcGVjdGl2ZWx5LiBTZWUgYF8uaXNFcXVhbGBcbiAgICAgKiBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCB2YWx1ZSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgaXMgYSBtYXRjaCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiB9O1xuICAgICAqXG4gICAgICogXy5pc01hdGNoKG9iamVjdCwgeyAnYic6IDIgfSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc01hdGNoKG9iamVjdCwgeyAnYic6IDEgfSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc01hdGNoKG9iamVjdCwgc291cmNlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09PSBzb3VyY2UgfHwgYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIGdldE1hdGNoRGF0YShzb3VyY2UpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzTWF0Y2hgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCB0byBjb21wYXJlIHZhbHVlcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsIGNvbXBhcmlzb25zXG4gICAgICogYXJlIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWQgd2l0aCBmaXZlXG4gICAgICogYXJndW1lbnRzOiAob2JqVmFsdWUsIHNyY1ZhbHVlLCBpbmRleHxrZXksIG9iamVjdCwgc291cmNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgaXMgYSBtYXRjaCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBpc0dyZWV0aW5nKHZhbHVlKSB7XG4gICAgICogICByZXR1cm4gL15oKD86aXxlbGxvKSQvLnRlc3QodmFsdWUpO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gICAgICogICBpZiAoaXNHcmVldGluZyhvYmpWYWx1ZSkgJiYgaXNHcmVldGluZyhzcmNWYWx1ZSkpIHtcbiAgICAgKiAgICAgcmV0dXJuIHRydWU7XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2dyZWV0aW5nJzogJ2hlbGxvJyB9O1xuICAgICAqIHZhciBzb3VyY2UgPSB7ICdncmVldGluZyc6ICdoaScgfTtcbiAgICAgKlxuICAgICAqIF8uaXNNYXRjaFdpdGgob2JqZWN0LCBzb3VyY2UsIGN1c3RvbWl6ZXIpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc01hdGNoV2l0aChvYmplY3QsIHNvdXJjZSwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBnZXRNYXRjaERhdGEoc291cmNlKSwgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYE5hTmAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYE51bWJlci5pc05hTmBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc05hTikgYW5kIGlzIG5vdCB0aGUgc2FtZSBhc1xuICAgICAqIGdsb2JhbCBbYGlzTmFOYF0oaHR0cHM6Ly9tZG4uaW8vaXNOYU4pIHdoaWNoIHJldHVybnMgYHRydWVgIGZvclxuICAgICAqIGB1bmRlZmluZWRgIGFuZCBvdGhlciBub24tbnVtYmVyIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYE5hTmAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc05hTihOYU4pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOYU4obmV3IE51bWJlcihOYU4pKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBpc05hTih1bmRlZmluZWQpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOYU4odW5kZWZpbmVkKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTmFOKHZhbHVlKSB7XG4gICAgICAvLyBBbiBgTmFOYCBwcmltaXRpdmUgaXMgdGhlIG9ubHkgdmFsdWUgdGhhdCBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLlxuICAgICAgLy8gUGVyZm9ybSB0aGUgYHRvU3RyaW5nVGFnYCBjaGVjayBmaXJzdCB0byBhdm9pZCBlcnJvcnMgd2l0aCBzb21lXG4gICAgICAvLyBBY3RpdmVYIG9iamVjdHMgaW4gSUUuXG4gICAgICByZXR1cm4gaXNOdW1iZXIodmFsdWUpICYmIHZhbHVlICE9ICt2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHByaXN0aW5lIG5hdGl2ZSBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBjYW4ndCByZWxpYWJseSBkZXRlY3QgbmF0aXZlIGZ1bmN0aW9ucyBpbiB0aGUgcHJlc2VuY2VcbiAgICAgKiBvZiB0aGUgY29yZS1qcyBwYWNrYWdlIGJlY2F1c2UgY29yZS1qcyBjaXJjdW12ZW50cyB0aGlzIGtpbmQgb2YgZGV0ZWN0aW9uLlxuICAgICAqIERlc3BpdGUgbXVsdGlwbGUgcmVxdWVzdHMsIHRoZSBjb3JlLWpzIG1haW50YWluZXIgaGFzIG1hZGUgaXQgY2xlYXI6IGFueVxuICAgICAqIGF0dGVtcHQgdG8gZml4IHRoZSBkZXRlY3Rpb24gd2lsbCBiZSBvYnN0cnVjdGVkLiBBcyBhIHJlc3VsdCwgd2UncmUgbGVmdFxuICAgICAqIHdpdGggbGl0dGxlIGNob2ljZSBidXQgdG8gdGhyb3cgYW4gZXJyb3IuIFVuZm9ydHVuYXRlbHksIHRoaXMgYWxzbyBhZmZlY3RzXG4gICAgICogcGFja2FnZXMsIGxpa2UgW2JhYmVsLXBvbHlmaWxsXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9iYWJlbC1wb2x5ZmlsbCksXG4gICAgICogd2hpY2ggcmVseSBvbiBjb3JlLWpzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTmF0aXZlKEFycmF5LnByb3RvdHlwZS5wdXNoKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTmF0aXZlKF8pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNOYXRpdmUodmFsdWUpIHtcbiAgICAgIGlmIChpc01hc2thYmxlKHZhbHVlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoQ09SRV9FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGBudWxsYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYG51bGxgLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNOdWxsKG51bGwpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOdWxsKHZvaWQgMCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc051bGwodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG51bGxpc2gsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc05pbChudWxsKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTmlsKHZvaWQgMCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc05pbChOYU4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNOaWwodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PSBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgTnVtYmVyYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRvIGV4Y2x1ZGUgYEluZmluaXR5YCwgYC1JbmZpbml0eWAsIGFuZCBgTmFOYCwgd2hpY2ggYXJlXG4gICAgICogY2xhc3NpZmllZCBhcyBudW1iZXJzLCB1c2UgdGhlIGBfLmlzRmluaXRlYCBtZXRob2QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbnVtYmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNOdW1iZXIoMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTnVtYmVyKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTnVtYmVyKCczJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc051bWJlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyB8fFxuICAgICAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBudW1iZXJUYWcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCB0aGF0IGlzLCBhbiBvYmplY3QgY3JlYXRlZCBieSB0aGVcbiAgICAgKiBgT2JqZWN0YCBjb25zdHJ1Y3RvciBvciBvbmUgd2l0aCBhIGBbW1Byb3RvdHlwZV1dYCBvZiBgbnVsbGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC44LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogfVxuICAgICAqXG4gICAgICogXy5pc1BsYWluT2JqZWN0KG5ldyBGb28pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzUGxhaW5PYmplY3QoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc1BsYWluT2JqZWN0KHsgJ3gnOiAwLCAneSc6IDAgfSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1BsYWluT2JqZWN0KE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gICAgICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgfHwgYmFzZUdldFRhZyh2YWx1ZSkgIT0gb2JqZWN0VGFnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciBwcm90byA9IGdldFByb3RvdHlwZSh2YWx1ZSk7XG4gICAgICBpZiAocHJvdG8gPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICB2YXIgQ3RvciA9IGhhc093blByb3BlcnR5LmNhbGwocHJvdG8sICdjb25zdHJ1Y3RvcicpICYmIHByb3RvLmNvbnN0cnVjdG9yO1xuICAgICAgcmV0dXJuIHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3RvciBpbnN0YW5jZW9mIEN0b3IgJiZcbiAgICAgICAgZnVuY1RvU3RyaW5nLmNhbGwoQ3RvcikgPT0gb2JqZWN0Q3RvclN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFJlZ0V4cGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHJlZ2V4cCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzUmVnRXhwKC9hYmMvKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzUmVnRXhwKCcvYWJjLycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzUmVnRXhwID0gbm9kZUlzUmVnRXhwID8gYmFzZVVuYXJ5KG5vZGVJc1JlZ0V4cCkgOiBiYXNlSXNSZWdFeHA7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHNhZmUgaW50ZWdlci4gQW4gaW50ZWdlciBpcyBzYWZlIGlmIGl0J3MgYW4gSUVFRS03NTRcbiAgICAgKiBkb3VibGUgcHJlY2lzaW9uIG51bWJlciB3aGljaCBpc24ndCB0aGUgcmVzdWx0IG9mIGEgcm91bmRlZCB1bnNhZmUgaW50ZWdlci5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgTnVtYmVyLmlzU2FmZUludGVnZXJgXShodHRwczovL21kbi5pby9OdW1iZXIvaXNTYWZlSW50ZWdlcikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2FmZSBpbnRlZ2VyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNTYWZlSW50ZWdlcigzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzU2FmZUludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNTYWZlSW50ZWdlcihJbmZpbml0eSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNTYWZlSW50ZWdlcignMycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNTYWZlSW50ZWdlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzSW50ZWdlcih2YWx1ZSkgJiYgdmFsdWUgPj0gLU1BWF9TQUZFX0lOVEVHRVIgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFNldGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMy4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNldCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzU2V0KG5ldyBTZXQpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNTZXQobmV3IFdlYWtTZXQpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzU2V0ID0gbm9kZUlzU2V0ID8gYmFzZVVuYXJ5KG5vZGVJc1NldCkgOiBiYXNlSXNTZXQ7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN0cmluZ2AgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzdHJpbmcsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1N0cmluZygnYWJjJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1N0cmluZygxKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8XG4gICAgICAgICghaXNBcnJheSh2YWx1ZSkgJiYgaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzdHJpbmdUYWcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3ltYm9sYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN5bWJvbCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzU3ltYm9sKFN5bWJvbC5pdGVyYXRvcik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1N5bWJvbCgnYWJjJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1N5bWJvbCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJyB8fFxuICAgICAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzeW1ib2xUYWcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSB0eXBlZCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzVHlwZWRBcnJheShuZXcgVWludDhBcnJheSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1R5cGVkQXJyYXkoW10pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzVHlwZWRBcnJheSA9IG5vZGVJc1R5cGVkQXJyYXkgPyBiYXNlVW5hcnkobm9kZUlzVHlwZWRBcnJheSkgOiBiYXNlSXNUeXBlZEFycmF5O1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGB1bmRlZmluZWRgLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNVbmRlZmluZWQodm9pZCAwKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzVW5kZWZpbmVkKG51bGwpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgV2Vha01hcGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMy4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHdlYWsgbWFwLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNXZWFrTWFwKG5ldyBXZWFrTWFwKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzV2Vha01hcChuZXcgTWFwKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzV2Vha01hcCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSB3ZWFrTWFwVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgV2Vha1NldGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMy4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHdlYWsgc2V0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNXZWFrU2V0KG5ldyBXZWFrU2V0KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzV2Vha1NldChuZXcgU2V0KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzV2Vha1NldCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gd2Vha1NldFRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gYG90aGVyYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjkuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBgb3RoZXJgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQHNlZSBfLmd0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubHQoMSwgMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5sdCgzLCAzKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5sdCgzLCAxKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBsdCA9IGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24oYmFzZUx0KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgb3RoZXJgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvXG4gICAgICogIGBvdGhlcmAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAc2VlIF8uZ3RlXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubHRlKDEsIDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8ubHRlKDMsIDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8ubHRlKDMsIDEpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGx0ZSA9IGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24oZnVuY3Rpb24odmFsdWUsIG90aGVyKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPD0gb3RoZXI7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvQXJyYXkoeyAnYSc6IDEsICdiJzogMiB9KTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIF8udG9BcnJheSgnYWJjJyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InLCAnYyddXG4gICAgICpcbiAgICAgKiBfLnRvQXJyYXkoMSk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKlxuICAgICAqIF8udG9BcnJheShudWxsKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvQXJyYXkodmFsdWUpIHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgaWYgKGlzQXJyYXlMaWtlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gaXNTdHJpbmcodmFsdWUpID8gc3RyaW5nVG9BcnJheSh2YWx1ZSkgOiBjb3B5QXJyYXkodmFsdWUpO1xuICAgICAgfVxuICAgICAgaWYgKHN5bUl0ZXJhdG9yICYmIHZhbHVlW3N5bUl0ZXJhdG9yXSkge1xuICAgICAgICByZXR1cm4gaXRlcmF0b3JUb0FycmF5KHZhbHVlW3N5bUl0ZXJhdG9yXSgpKTtcbiAgICAgIH1cbiAgICAgIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpLFxuICAgICAgICAgIGZ1bmMgPSB0YWcgPT0gbWFwVGFnID8gbWFwVG9BcnJheSA6ICh0YWcgPT0gc2V0VGFnID8gc2V0VG9BcnJheSA6IHZhbHVlcyk7XG5cbiAgICAgIHJldHVybiBmdW5jKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgZmluaXRlIG51bWJlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEyLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b0Zpbml0ZSgzLjIpO1xuICAgICAqIC8vID0+IDMuMlxuICAgICAqXG4gICAgICogXy50b0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiA1ZS0zMjRcbiAgICAgKlxuICAgICAqIF8udG9GaW5pdGUoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4XG4gICAgICpcbiAgICAgKiBfLnRvRmluaXRlKCczLjInKTtcbiAgICAgKiAvLyA9PiAzLjJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b0Zpbml0ZSh2YWx1ZSkge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6IDA7XG4gICAgICB9XG4gICAgICB2YWx1ZSA9IHRvTnVtYmVyKHZhbHVlKTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gSU5GSU5JVFkgfHwgdmFsdWUgPT09IC1JTkZJTklUWSkge1xuICAgICAgICB2YXIgc2lnbiA9ICh2YWx1ZSA8IDAgPyAtMSA6IDEpO1xuICAgICAgICByZXR1cm4gc2lnbiAqIE1BWF9JTlRFR0VSO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSA/IHZhbHVlIDogMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICAgICAqIFtgVG9JbnRlZ2VyYF0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvaW50ZWdlcikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9JbnRlZ2VyKDMuMik7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy50b0ludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogXy50b0ludGVnZXIoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4XG4gICAgICpcbiAgICAgKiBfLnRvSW50ZWdlcignMy4yJyk7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvSW50ZWdlcih2YWx1ZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IHRvRmluaXRlKHZhbHVlKSxcbiAgICAgICAgICByZW1haW5kZXIgPSByZXN1bHQgJSAxO1xuXG4gICAgICByZXR1cm4gcmVzdWx0ID09PSByZXN1bHQgPyAocmVtYWluZGVyID8gcmVzdWx0IC0gcmVtYWluZGVyIDogcmVzdWx0KSA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhbiBpbnRlZ2VyIHN1aXRhYmxlIGZvciB1c2UgYXMgdGhlIGxlbmd0aCBvZiBhblxuICAgICAqIGFycmF5LWxpa2Ugb2JqZWN0LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b0xlbmd0aCgzLjIpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8udG9MZW5ndGgoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogXy50b0xlbmd0aChJbmZpbml0eSk7XG4gICAgICogLy8gPT4gNDI5NDk2NzI5NVxuICAgICAqXG4gICAgICogXy50b0xlbmd0aCgnMy4yJyk7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvTGVuZ3RoKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPyBiYXNlQ2xhbXAodG9JbnRlZ2VyKHZhbHVlKSwgMCwgTUFYX0FSUkFZX0xFTkdUSCkgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBudW1iZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvTnVtYmVyKDMuMik7XG4gICAgICogLy8gPT4gMy4yXG4gICAgICpcbiAgICAgKiBfLnRvTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IDVlLTMyNFxuICAgICAqXG4gICAgICogXy50b051bWJlcihJbmZpbml0eSk7XG4gICAgICogLy8gPT4gSW5maW5pdHlcbiAgICAgKlxuICAgICAqIF8udG9OdW1iZXIoJzMuMicpO1xuICAgICAqIC8vID0+IDMuMlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvTnVtYmVyKHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE5BTjtcbiAgICAgIH1cbiAgICAgIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgdmFyIG90aGVyID0gdHlwZW9mIHZhbHVlLnZhbHVlT2YgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLnZhbHVlT2YoKSA6IHZhbHVlO1xuICAgICAgICB2YWx1ZSA9IGlzT2JqZWN0KG90aGVyKSA/IChvdGhlciArICcnKSA6IG90aGVyO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6ICt2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShyZVRyaW0sICcnKTtcbiAgICAgIHZhciBpc0JpbmFyeSA9IHJlSXNCaW5hcnkudGVzdCh2YWx1ZSk7XG4gICAgICByZXR1cm4gKGlzQmluYXJ5IHx8IHJlSXNPY3RhbC50ZXN0KHZhbHVlKSlcbiAgICAgICAgPyBmcmVlUGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIGlzQmluYXJ5ID8gMiA6IDgpXG4gICAgICAgIDogKHJlSXNCYWRIZXgudGVzdCh2YWx1ZSkgPyBOQU4gOiArdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBwbGFpbiBvYmplY3QgZmxhdHRlbmluZyBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmdcbiAgICAgKiBrZXllZCBwcm9wZXJ0aWVzIG9mIGB2YWx1ZWAgdG8gb3duIHByb3BlcnRpZXMgb2YgdGhlIHBsYWluIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgcGxhaW4gb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmFzc2lnbih7ICdhJzogMSB9LCBuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKlxuICAgICAqIF8uYXNzaWduKHsgJ2EnOiAxIH0sIF8udG9QbGFpbk9iamVjdChuZXcgRm9vKSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gY29weU9iamVjdCh2YWx1ZSwga2V5c0luKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHNhZmUgaW50ZWdlci4gQSBzYWZlIGludGVnZXIgY2FuIGJlIGNvbXBhcmVkIGFuZFxuICAgICAqIHJlcHJlc2VudGVkIGNvcnJlY3RseS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b1NhZmVJbnRlZ2VyKDMuMik7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy50b1NhZmVJbnRlZ2VyKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIF8udG9TYWZlSW50ZWdlcihJbmZpbml0eSk7XG4gICAgICogLy8gPT4gOTAwNzE5OTI1NDc0MDk5MVxuICAgICAqXG4gICAgICogXy50b1NhZmVJbnRlZ2VyKCczLjInKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9TYWZlSW50ZWdlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgID8gYmFzZUNsYW1wKHRvSW50ZWdlcih2YWx1ZSksIC1NQVhfU0FGRV9JTlRFR0VSLCBNQVhfU0FGRV9JTlRFR0VSKVxuICAgICAgICA6ICh2YWx1ZSA9PT0gMCA/IHZhbHVlIDogMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZy4gQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGZvciBgbnVsbGBcbiAgICAgKiBhbmQgYHVuZGVmaW5lZGAgdmFsdWVzLiBUaGUgc2lnbiBvZiBgLTBgIGlzIHByZXNlcnZlZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvU3RyaW5nKG51bGwpO1xuICAgICAqIC8vID0+ICcnXG4gICAgICpcbiAgICAgKiBfLnRvU3RyaW5nKC0wKTtcbiAgICAgKiAvLyA9PiAnLTAnXG4gICAgICpcbiAgICAgKiBfLnRvU3RyaW5nKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gJzEsMiwzJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvU3RyaW5nKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogYmFzZVRvU3RyaW5nKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBBc3NpZ25zIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIHNvdXJjZSBvYmplY3RzIHRvIHRoZVxuICAgICAqIGRlc3RpbmF0aW9uIG9iamVjdC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuICAgICAqIFN1YnNlcXVlbnQgc291cmNlcyBvdmVyd3JpdGUgcHJvcGVydHkgYXNzaWdubWVudHMgb2YgcHJldmlvdXMgc291cmNlcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgIGFuZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gICAgICogW2BPYmplY3QuYXNzaWduYF0oaHR0cHM6Ly9tZG4uaW8vT2JqZWN0L2Fzc2lnbikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5hc3NpZ25JblxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEJhcigpIHtcbiAgICAgKiAgIHRoaXMuYyA9IDM7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5iID0gMjtcbiAgICAgKiBCYXIucHJvdG90eXBlLmQgPSA0O1xuICAgICAqXG4gICAgICogXy5hc3NpZ24oeyAnYSc6IDAgfSwgbmV3IEZvbywgbmV3IEJhcik7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdjJzogMyB9XG4gICAgICovXG4gICAgdmFyIGFzc2lnbiA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlKSB7XG4gICAgICBpZiAoaXNQcm90b3R5cGUoc291cmNlKSB8fCBpc0FycmF5TGlrZShzb3VyY2UpKSB7XG4gICAgICAgIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzKHNvdXJjZSksIG9iamVjdCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICAgICAgYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHNvdXJjZVtrZXldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25gIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgb3duIGFuZFxuICAgICAqIGluaGVyaXRlZCBzb3VyY2UgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGFsaWFzIGV4dGVuZFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uYXNzaWduXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gQmFyKCkge1xuICAgICAqICAgdGhpcy5jID0gMztcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmIgPSAyO1xuICAgICAqIEJhci5wcm90b3R5cGUuZCA9IDQ7XG4gICAgICpcbiAgICAgKiBfLmFzc2lnbkluKHsgJ2EnOiAwIH0sIG5ldyBGb28sIG5ldyBCYXIpO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMywgJ2QnOiA0IH1cbiAgICAgKi9cbiAgICB2YXIgYXNzaWduSW4gPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSkge1xuICAgICAgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25JbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIGFzc2lnbmVkIHZhbHVlcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnNcbiAgICAgKiBgdW5kZWZpbmVkYCwgYXNzaWdubWVudCBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYFxuICAgICAqIGlzIGludm9rZWQgd2l0aCBmaXZlIGFyZ3VtZW50czogKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBhbGlhcyBleHRlbmRXaXRoXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gc291cmNlcyBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmFzc2lnbldpdGhcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUpIHtcbiAgICAgKiAgIHJldHVybiBfLmlzVW5kZWZpbmVkKG9ialZhbHVlKSA/IHNyY1ZhbHVlIDogb2JqVmFsdWU7XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGRlZmF1bHRzID0gXy5wYXJ0aWFsUmlnaHQoXy5hc3NpZ25JbldpdGgsIGN1c3RvbWl6ZXIpO1xuICAgICAqXG4gICAgICogZGVmYXVsdHMoeyAnYSc6IDEgfSwgeyAnYic6IDIgfSwgeyAnYSc6IDMgfSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICovXG4gICAgdmFyIGFzc2lnbkluV2l0aCA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcikge1xuICAgICAgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QsIGN1c3RvbWl6ZXIpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBhc3NpZ25lZCB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zXG4gICAgICogYHVuZGVmaW5lZGAsIGFzc2lnbm1lbnQgaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmBcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggZml2ZSBhcmd1bWVudHM6IChvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBzb3VyY2VzIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uYXNzaWduSW5XaXRoXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gICAgICogICByZXR1cm4gXy5pc1VuZGVmaW5lZChvYmpWYWx1ZSkgPyBzcmNWYWx1ZSA6IG9ialZhbHVlO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBkZWZhdWx0cyA9IF8ucGFydGlhbFJpZ2h0KF8uYXNzaWduV2l0aCwgY3VzdG9taXplcik7XG4gICAgICpcbiAgICAgKiBkZWZhdWx0cyh7ICdhJzogMSB9LCB7ICdiJzogMiB9LCB7ICdhJzogMyB9KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKi9cbiAgICB2YXIgYXNzaWduV2l0aCA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcikge1xuICAgICAgY29weU9iamVjdChzb3VyY2UsIGtleXMoc291cmNlKSwgb2JqZWN0LCBjdXN0b21pemVyKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gYHBhdGhzYCBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7Li4uKHN0cmluZ3xzdHJpbmdbXSl9IFtwYXRoc10gVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBwaWNrZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9LCA0XSB9O1xuICAgICAqXG4gICAgICogXy5hdChvYmplY3QsIFsnYVswXS5iLmMnLCAnYVsxXSddKTtcbiAgICAgKiAvLyA9PiBbMywgNF1cbiAgICAgKi9cbiAgICB2YXIgYXQgPSBmbGF0UmVzdChiYXNlQXQpO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgdGhhdCBpbmhlcml0cyBmcm9tIHRoZSBgcHJvdG90eXBlYCBvYmplY3QuIElmIGFcbiAgICAgKiBgcHJvcGVydGllc2Agb2JqZWN0IGlzIGdpdmVuLCBpdHMgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXNcbiAgICAgKiBhcmUgYXNzaWduZWQgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBwcm90b3R5cGUgVGhlIG9iamVjdCB0byBpbmhlcml0IGZyb20uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtwcm9wZXJ0aWVzXSBUaGUgcHJvcGVydGllcyB0byBhc3NpZ24gdG8gdGhlIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBTaGFwZSgpIHtcbiAgICAgKiAgIHRoaXMueCA9IDA7XG4gICAgICogICB0aGlzLnkgPSAwO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIENpcmNsZSgpIHtcbiAgICAgKiAgIFNoYXBlLmNhbGwodGhpcyk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogQ2lyY2xlLnByb3RvdHlwZSA9IF8uY3JlYXRlKFNoYXBlLnByb3RvdHlwZSwge1xuICAgICAqICAgJ2NvbnN0cnVjdG9yJzogQ2lyY2xlXG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiB2YXIgY2lyY2xlID0gbmV3IENpcmNsZTtcbiAgICAgKiBjaXJjbGUgaW5zdGFuY2VvZiBDaXJjbGU7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogY2lyY2xlIGluc3RhbmNlb2YgU2hhcGU7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZShwcm90b3R5cGUsIHByb3BlcnRpZXMpIHtcbiAgICAgIHZhciByZXN1bHQgPSBiYXNlQ3JlYXRlKHByb3RvdHlwZSk7XG4gICAgICByZXR1cm4gcHJvcGVydGllcyA9PSBudWxsID8gcmVzdWx0IDogYmFzZUFzc2lnbihyZXN1bHQsIHByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFzc2lnbnMgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2VcbiAgICAgKiBvYmplY3RzIHRvIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QgZm9yIGFsbCBkZXN0aW5hdGlvbiBwcm9wZXJ0aWVzIHRoYXRcbiAgICAgKiByZXNvbHZlIHRvIGB1bmRlZmluZWRgLiBTb3VyY2Ugb2JqZWN0cyBhcmUgYXBwbGllZCBmcm9tIGxlZnQgdG8gcmlnaHQuXG4gICAgICogT25jZSBhIHByb3BlcnR5IGlzIHNldCwgYWRkaXRpb25hbCB2YWx1ZXMgb2YgdGhlIHNhbWUgcHJvcGVydHkgYXJlIGlnbm9yZWQuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZGVmYXVsdHNEZWVwXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmYXVsdHMoeyAnYSc6IDEgfSwgeyAnYic6IDIgfSwgeyAnYSc6IDMgfSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICovXG4gICAgdmFyIGRlZmF1bHRzID0gYmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2VzKSB7XG4gICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTE7XG4gICAgICB2YXIgbGVuZ3RoID0gc291cmNlcy5sZW5ndGg7XG4gICAgICB2YXIgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgICAgICBsZW5ndGggPSAxO1xuICAgICAgfVxuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgc291cmNlID0gc291cmNlc1tpbmRleF07XG4gICAgICAgIHZhciBwcm9wcyA9IGtleXNJbihzb3VyY2UpO1xuICAgICAgICB2YXIgcHJvcHNJbmRleCA9IC0xO1xuICAgICAgICB2YXIgcHJvcHNMZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgICAgICAgd2hpbGUgKCsrcHJvcHNJbmRleCA8IHByb3BzTGVuZ3RoKSB7XG4gICAgICAgICAgdmFyIGtleSA9IHByb3BzW3Byb3BzSW5kZXhdO1xuICAgICAgICAgIHZhciB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgKGVxKHZhbHVlLCBvYmplY3RQcm90b1trZXldKSAmJiAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSB7XG4gICAgICAgICAgICBvYmplY3Rba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5kZWZhdWx0c2AgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgYXNzaWduc1xuICAgICAqIGRlZmF1bHQgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMTAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZGVmYXVsdHNcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWZhdWx0c0RlZXAoeyAnYSc6IHsgJ2InOiAyIH0gfSwgeyAnYSc6IHsgJ2InOiAxLCAnYyc6IDMgfSB9KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogeyAnYic6IDIsICdjJzogMyB9IH1cbiAgICAgKi9cbiAgICB2YXIgZGVmYXVsdHNEZWVwID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICAgICAgYXJncy5wdXNoKHVuZGVmaW5lZCwgY3VzdG9tRGVmYXVsdHNNZXJnZSk7XG4gICAgICByZXR1cm4gYXBwbHkobWVyZ2VXaXRoLCB1bmRlZmluZWQsIGFyZ3MpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5maW5kYCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIHRoZSBrZXkgb2YgdGhlIGZpcnN0XG4gICAgICogZWxlbWVudCBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgaW5zdGVhZCBvZiB0aGUgZWxlbWVudCBpdHNlbGYuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd8dW5kZWZpbmVkfSBSZXR1cm5zIHRoZSBrZXkgb2YgdGhlIG1hdGNoZWQgZWxlbWVudCxcbiAgICAgKiAgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0ge1xuICAgICAqICAgJ2Jhcm5leSc6ICB7ICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgICdmcmVkJzogICAgeyAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgJ3BlYmJsZXMnOiB7ICdhZ2UnOiAxLCAgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIH07XG4gICAgICpcbiAgICAgKiBfLmZpbmRLZXkodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8uYWdlIDwgNDA7IH0pO1xuICAgICAqIC8vID0+ICdiYXJuZXknIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZEtleSh1c2VycywgeyAnYWdlJzogMSwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gJ3BlYmJsZXMnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kS2V5KHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gJ2ZyZWQnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRLZXkodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiAnYmFybmV5J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbmRLZXkob2JqZWN0LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiBiYXNlRmluZEtleShvYmplY3QsIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGJhc2VGb3JPd24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZEtleWAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGEgY29sbGVjdGlvbiBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd8dW5kZWZpbmVkfSBSZXR1cm5zIHRoZSBrZXkgb2YgdGhlIG1hdGNoZWQgZWxlbWVudCxcbiAgICAgKiAgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0ge1xuICAgICAqICAgJ2Jhcm5leSc6ICB7ICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgICdmcmVkJzogICAgeyAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgJ3BlYmJsZXMnOiB7ICdhZ2UnOiAxLCAgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIH07XG4gICAgICpcbiAgICAgKiBfLmZpbmRMYXN0S2V5KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFnZSA8IDQwOyB9KTtcbiAgICAgKiAvLyA9PiByZXR1cm5zICdwZWJibGVzJyBhc3N1bWluZyBgXy5maW5kS2V5YCByZXR1cm5zICdiYXJuZXknXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RLZXkodXNlcnMsIHsgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAgICAgKiAvLyA9PiAnYmFybmV5J1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RLZXkodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiAnZnJlZCdcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RLZXkodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiAncGViYmxlcydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaW5kTGFzdEtleShvYmplY3QsIHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIGJhc2VGaW5kS2V5KG9iamVjdCwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgYmFzZUZvck93blJpZ2h0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlcyBvdmVyIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2YgYW5cbiAgICAgKiBvYmplY3QgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBrZXksIG9iamVjdCkuIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdFxuICAgICAqIGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZm9ySW5SaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5mb3JJbihuZXcgRm9vLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICBjb25zb2xlLmxvZyhrZXkpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2EnLCAnYicsIHRoZW4gJ2MnIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvckluKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbFxuICAgICAgICA/IG9iamVjdFxuICAgICAgICA6IGJhc2VGb3Iob2JqZWN0LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMyksIGtleXNJbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mb3JJbmAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBwcm9wZXJ0aWVzIG9mXG4gICAgICogYG9iamVjdGAgaW4gdGhlIG9wcG9zaXRlIG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZm9ySW5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8uZm9ySW5SaWdodChuZXcgRm9vLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICBjb25zb2xlLmxvZyhrZXkpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2MnLCAnYicsIHRoZW4gJ2EnIGFzc3VtaW5nIGBfLmZvckluYCBsb2dzICdhJywgJ2InLCB0aGVuICdjJy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JJblJpZ2h0KG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbFxuICAgICAgICA/IG9iamVjdFxuICAgICAgICA6IGJhc2VGb3JSaWdodChvYmplY3QsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSwga2V5c0luKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlcyBvdmVyIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIGFuIG9iamVjdCBhbmRcbiAgICAgKiBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggcHJvcGVydHkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWVcbiAgICAgKiBhcmd1bWVudHM6ICh2YWx1ZSwga2V5LCBvYmplY3QpLiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uXG4gICAgICogZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjMuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmZvck93blJpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmZvck93bihuZXcgRm9vLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICBjb25zb2xlLmxvZyhrZXkpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2EnIHRoZW4gJ2InIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvck93bihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICYmIGJhc2VGb3JPd24ob2JqZWN0LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZm9yT3duYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIHByb3BlcnRpZXMgb2ZcbiAgICAgKiBgb2JqZWN0YCBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5mb3JPd25cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8uZm9yT3duUmlnaHQobmV3IEZvbywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdiJyB0aGVuICdhJyBhc3N1bWluZyBgXy5mb3JPd25gIGxvZ3MgJ2EnIHRoZW4gJ2InLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvck93blJpZ2h0KG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgJiYgYmFzZUZvck93blJpZ2h0KG9iamVjdCwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGZ1bmN0aW9uIHByb3BlcnR5IG5hbWVzIGZyb20gb3duIGVudW1lcmFibGUgcHJvcGVydGllc1xuICAgICAqIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgZnVuY3Rpb24gbmFtZXMuXG4gICAgICogQHNlZSBfLmZ1bmN0aW9uc0luXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IF8uY29uc3RhbnQoJ2EnKTtcbiAgICAgKiAgIHRoaXMuYiA9IF8uY29uc3RhbnQoJ2InKTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSBfLmNvbnN0YW50KCdjJyk7XG4gICAgICpcbiAgICAgKiBfLmZ1bmN0aW9ucyhuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYiddXG4gICAgICovXG4gICAgZnVuY3Rpb24gZnVuY3Rpb25zKG9iamVjdCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gW10gOiBiYXNlRnVuY3Rpb25zKG9iamVjdCwga2V5cyhvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGZ1bmN0aW9uIHByb3BlcnR5IG5hbWVzIGZyb20gb3duIGFuZCBpbmhlcml0ZWRcbiAgICAgKiBlbnVtZXJhYmxlIHByb3BlcnRpZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBuYW1lcy5cbiAgICAgKiBAc2VlIF8uZnVuY3Rpb25zXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IF8uY29uc3RhbnQoJ2EnKTtcbiAgICAgKiAgIHRoaXMuYiA9IF8uY29uc3RhbnQoJ2InKTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSBfLmNvbnN0YW50KCdjJyk7XG4gICAgICpcbiAgICAgKiBfLmZ1bmN0aW9uc0luKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFsnYScsICdiJywgJ2MnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZ1bmN0aW9uc0luKG9iamVjdCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gW10gOiBiYXNlRnVuY3Rpb25zKG9iamVjdCwga2V5c0luKG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC4gSWYgdGhlIHJlc29sdmVkIHZhbHVlIGlzXG4gICAgICogYHVuZGVmaW5lZGAsIHRoZSBgZGVmYXVsdFZhbHVlYCBpcyByZXR1cm5lZCBpbiBpdHMgcGxhY2UuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy43LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICogQHBhcmFtIHsqfSBbZGVmYXVsdFZhbHVlXSBUaGUgdmFsdWUgcmV0dXJuZWQgZm9yIGB1bmRlZmluZWRgIHJlc29sdmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLmdldChvYmplY3QsICdhWzBdLmIuYycpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8uZ2V0KG9iamVjdCwgWydhJywgJzAnLCAnYicsICdjJ10pO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8uZ2V0KG9iamVjdCwgJ2EuYi5jJywgJ2RlZmF1bHQnKTtcbiAgICAgKiAvLyA9PiAnZGVmYXVsdCdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXQob2JqZWN0LCBwYXRoLCBkZWZhdWx0VmFsdWUpIHtcbiAgICAgIHZhciByZXN1bHQgPSBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcbiAgICAgIHJldHVybiByZXN1bHQgPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRWYWx1ZSA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHBhdGhgIGlzIGEgZGlyZWN0IHByb3BlcnR5IG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IHsgJ2InOiAyIH0gfTtcbiAgICAgKiB2YXIgb3RoZXIgPSBfLmNyZWF0ZSh7ICdhJzogXy5jcmVhdGUoeyAnYic6IDIgfSkgfSk7XG4gICAgICpcbiAgICAgKiBfLmhhcyhvYmplY3QsICdhJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXMob2JqZWN0LCAnYS5iJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXMob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhcyhvdGhlciwgJ2EnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhcyhvYmplY3QsIHBhdGgpIHtcbiAgICAgIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgYmFzZUhhcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBwYXRoYCBpcyBhIGRpcmVjdCBvciBpbmhlcml0ZWQgcHJvcGVydHkgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSBfLmNyZWF0ZSh7ICdhJzogXy5jcmVhdGUoeyAnYic6IDIgfSkgfSk7XG4gICAgICpcbiAgICAgKiBfLmhhc0luKG9iamVjdCwgJ2EnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhc0luKG9iamVjdCwgJ2EuYicpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaGFzSW4ob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhc0luKG9iamVjdCwgJ2InKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc0luKG9iamVjdCwgcGF0aCkge1xuICAgICAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBiYXNlSGFzSW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZSBpbnZlcnRlZCBrZXlzIGFuZCB2YWx1ZXMgb2YgYG9iamVjdGAuXG4gICAgICogSWYgYG9iamVjdGAgY29udGFpbnMgZHVwbGljYXRlIHZhbHVlcywgc3Vic2VxdWVudCB2YWx1ZXMgb3ZlcndyaXRlXG4gICAgICogcHJvcGVydHkgYXNzaWdubWVudHMgb2YgcHJldmlvdXMgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnZlcnQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGludmVydGVkIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9O1xuICAgICAqXG4gICAgICogXy5pbnZlcnQob2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICcxJzogJ2MnLCAnMic6ICdiJyB9XG4gICAgICovXG4gICAgdmFyIGludmVydCA9IGNyZWF0ZUludmVydGVyKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiZcbiAgICAgICAgICB0eXBlb2YgdmFsdWUudG9TdHJpbmcgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB2YWx1ZSA9IG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICAgICAgfVxuXG4gICAgICByZXN1bHRbdmFsdWVdID0ga2V5O1xuICAgIH0sIGNvbnN0YW50KGlkZW50aXR5KSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmludmVydGAgZXhjZXB0IHRoYXQgdGhlIGludmVydGVkIG9iamVjdCBpcyBnZW5lcmF0ZWRcbiAgICAgKiBmcm9tIHRoZSByZXN1bHRzIG9mIHJ1bm5pbmcgZWFjaCBlbGVtZW50IG9mIGBvYmplY3RgIHRocnUgYGl0ZXJhdGVlYC4gVGhlXG4gICAgICogY29ycmVzcG9uZGluZyBpbnZlcnRlZCB2YWx1ZSBvZiBlYWNoIGludmVydGVkIGtleSBpcyBhbiBhcnJheSBvZiBrZXlzXG4gICAgICogcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgdGhlIGludmVydGVkIHZhbHVlLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZFxuICAgICAqIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMS4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnZlcnQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBpbnZlcnRlZCBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfTtcbiAgICAgKlxuICAgICAqIF8uaW52ZXJ0Qnkob2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9XG4gICAgICpcbiAgICAgKiBfLmludmVydEJ5KG9iamVjdCwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgKiAgIHJldHVybiAnZ3JvdXAnICsgdmFsdWU7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4geyAnZ3JvdXAxJzogWydhJywgJ2MnXSwgJ2dyb3VwMic6IFsnYiddIH1cbiAgICAgKi9cbiAgICB2YXIgaW52ZXJ0QnkgPSBjcmVhdGVJbnZlcnRlcihmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmXG4gICAgICAgICAgdHlwZW9mIHZhbHVlLnRvU3RyaW5nICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdmFsdWUgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocmVzdWx0LCB2YWx1ZSkpIHtcbiAgICAgICAgcmVzdWx0W3ZhbHVlXS5wdXNoKGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHRbdmFsdWVdID0gW2tleV07XG4gICAgICB9XG4gICAgfSwgZ2V0SXRlcmF0ZWUpO1xuXG4gICAgLyoqXG4gICAgICogSW52b2tlcyB0aGUgbWV0aG9kIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIG1ldGhvZCB0byBpbnZva2UuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgdGhlIG1ldGhvZCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIGludm9rZWQgbWV0aG9kLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IFsxLCAyLCAzLCA0XSB9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLmludm9rZShvYmplY3QsICdhWzBdLmIuYy5zbGljZScsIDEsIDMpO1xuICAgICAqIC8vID0+IFsyLCAzXVxuICAgICAqL1xuICAgIHZhciBpbnZva2UgPSBiYXNlUmVzdChiYXNlSW52b2tlKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuIFNlZSB0aGVcbiAgICAgKiBbRVMgc3BlY10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LmtleXMpXG4gICAgICogZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8ua2V5cyhuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYiddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiBfLmtleXMoJ2hpJyk7XG4gICAgICogLy8gPT4gWycwJywgJzEnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGtleXMob2JqZWN0KSB7XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2Uob2JqZWN0KSA/IGFycmF5TGlrZUtleXMob2JqZWN0KSA6IGJhc2VLZXlzKG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5rZXlzSW4obmV3IEZvbyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InLCAnYyddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgZnVuY3Rpb24ga2V5c0luKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCwgdHJ1ZSkgOiBiYXNlS2V5c0luKG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLm1hcFZhbHVlc2A7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYW4gb2JqZWN0IHdpdGggdGhlXG4gICAgICogc2FtZSB2YWx1ZXMgYXMgYG9iamVjdGAgYW5kIGtleXMgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgZWFjaCBvd24gZW51bWVyYWJsZVxuICAgICAqIHN0cmluZyBrZXllZCBwcm9wZXJ0eSBvZiBgb2JqZWN0YCB0aHJ1IGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwga2V5LCBvYmplY3QpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBvYmplY3QuXG4gICAgICogQHNlZSBfLm1hcFZhbHVlc1xuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm1hcEtleXMoeyAnYSc6IDEsICdiJzogMiB9LCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICByZXR1cm4ga2V5ICsgdmFsdWU7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4geyAnYTEnOiAxLCAnYjInOiAyIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBLZXlzKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICAgIGl0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpO1xuXG4gICAgICBiYXNlRm9yT3duKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGtleSwgb2JqZWN0KSB7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShyZXN1bHQsIGl0ZXJhdGVlKHZhbHVlLCBrZXksIG9iamVjdCksIHZhbHVlKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIGtleXMgYXMgYG9iamVjdGAgYW5kIHZhbHVlcyBnZW5lcmF0ZWRcbiAgICAgKiBieSBydW5uaW5nIGVhY2ggb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnR5IG9mIGBvYmplY3RgIHRocnVcbiAgICAgKiBgaXRlcmF0ZWVgLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czpcbiAgICAgKiAodmFsdWUsIGtleSwgb2JqZWN0KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjQuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgb2JqZWN0LlxuICAgICAqIEBzZWUgXy5tYXBLZXlzXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IHtcbiAgICAgKiAgICdmcmVkJzogICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwIH0sXG4gICAgICogICAncGViYmxlcyc6IHsgJ3VzZXInOiAncGViYmxlcycsICdhZ2UnOiAxIH1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogXy5tYXBWYWx1ZXModXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8uYWdlOyB9KTtcbiAgICAgKiAvLyA9PiB7ICdmcmVkJzogNDAsICdwZWJibGVzJzogMSB9IChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1hcFZhbHVlcyh1c2VycywgJ2FnZScpO1xuICAgICAqIC8vID0+IHsgJ2ZyZWQnOiA0MCwgJ3BlYmJsZXMnOiAxIH0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBWYWx1ZXMob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgICAgaXRlcmF0ZWUgPSBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMyk7XG5cbiAgICAgIGJhc2VGb3JPd24ob2JqZWN0LCBmdW5jdGlvbih2YWx1ZSwga2V5LCBvYmplY3QpIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBpdGVyYXRlZSh2YWx1ZSwga2V5LCBvYmplY3QpKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmFzc2lnbmAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgbWVyZ2VzIG93biBhbmRcbiAgICAgKiBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2Ugb2JqZWN0cyBpbnRvIHRoZVxuICAgICAqIGRlc3RpbmF0aW9uIG9iamVjdC4gU291cmNlIHByb3BlcnRpZXMgdGhhdCByZXNvbHZlIHRvIGB1bmRlZmluZWRgIGFyZVxuICAgICAqIHNraXBwZWQgaWYgYSBkZXN0aW5hdGlvbiB2YWx1ZSBleGlzdHMuIEFycmF5IGFuZCBwbGFpbiBvYmplY3QgcHJvcGVydGllc1xuICAgICAqIGFyZSBtZXJnZWQgcmVjdXJzaXZlbHkuIE90aGVyIG9iamVjdHMgYW5kIHZhbHVlIHR5cGVzIGFyZSBvdmVycmlkZGVuIGJ5XG4gICAgICogYXNzaWdubWVudC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LiBTdWJzZXF1ZW50XG4gICAgICogc291cmNlcyBvdmVyd3JpdGUgcHJvcGVydHkgYXNzaWdubWVudHMgb2YgcHJldmlvdXMgc291cmNlcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNS4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0ge1xuICAgICAqICAgJ2EnOiBbeyAnYic6IDIgfSwgeyAnZCc6IDQgfV1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogdmFyIG90aGVyID0ge1xuICAgICAqICAgJ2EnOiBbeyAnYyc6IDMgfSwgeyAnZSc6IDUgfV1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogXy5tZXJnZShvYmplY3QsIG90aGVyKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogW3sgJ2InOiAyLCAnYyc6IDMgfSwgeyAnZCc6IDQsICdlJzogNSB9XSB9XG4gICAgICovXG4gICAgdmFyIG1lcmdlID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4KSB7XG4gICAgICBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4KTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWVyZ2VgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBtZXJnZWQgdmFsdWVzIG9mIHRoZSBkZXN0aW5hdGlvbiBhbmQgc291cmNlXG4gICAgICogcHJvcGVydGllcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsIG1lcmdpbmcgaXMgaGFuZGxlZCBieSB0aGVcbiAgICAgKiBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGggc2l4IGFyZ3VtZW50czpcbiAgICAgKiAob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlLCBzdGFjaykuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IHNvdXJjZXMgVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUpIHtcbiAgICAgKiAgIGlmIChfLmlzQXJyYXkob2JqVmFsdWUpKSB7XG4gICAgICogICAgIHJldHVybiBvYmpWYWx1ZS5jb25jYXQoc3JjVmFsdWUpO1xuICAgICAqICAgfVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogWzFdLCAnYic6IFsyXSB9O1xuICAgICAqIHZhciBvdGhlciA9IHsgJ2EnOiBbM10sICdiJzogWzRdIH07XG4gICAgICpcbiAgICAgKiBfLm1lcmdlV2l0aChvYmplY3QsIG90aGVyLCBjdXN0b21pemVyKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogWzEsIDNdLCAnYic6IFsyLCA0XSB9XG4gICAgICovXG4gICAgdmFyIG1lcmdlV2l0aCA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcikge1xuICAgICAgYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcik7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8ucGlja2A7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZVxuICAgICAqIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgcGF0aHMgb2YgYG9iamVjdGAgdGhhdCBhcmUgbm90IG9taXR0ZWQuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgY29uc2lkZXJhYmx5IHNsb3dlciB0aGFuIGBfLnBpY2tgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gb21pdC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogJzInLCAnYyc6IDMgfTtcbiAgICAgKlxuICAgICAqIF8ub21pdChvYmplY3QsIFsnYScsICdjJ10pO1xuICAgICAqIC8vID0+IHsgJ2InOiAnMicgfVxuICAgICAqL1xuICAgIHZhciBvbWl0ID0gZmxhdFJlc3QoZnVuY3Rpb24ob2JqZWN0LCBwYXRocykge1xuICAgICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICB2YXIgaXNEZWVwID0gZmFsc2U7XG4gICAgICBwYXRocyA9IGFycmF5TWFwKHBhdGhzLCBmdW5jdGlvbihwYXRoKSB7XG4gICAgICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuICAgICAgICBpc0RlZXAgfHwgKGlzRGVlcCA9IHBhdGgubGVuZ3RoID4gMSk7XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgICAgfSk7XG4gICAgICBjb3B5T2JqZWN0KG9iamVjdCwgZ2V0QWxsS2V5c0luKG9iamVjdCksIHJlc3VsdCk7XG4gICAgICBpZiAoaXNEZWVwKSB7XG4gICAgICAgIHJlc3VsdCA9IGJhc2VDbG9uZShyZXN1bHQsIENMT05FX0RFRVBfRkxBRyB8IENMT05FX0ZMQVRfRkxBRyB8IENMT05FX1NZTUJPTFNfRkxBRywgY3VzdG9tT21pdENsb25lKTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSBwYXRocy5sZW5ndGg7XG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgYmFzZVVuc2V0KHJlc3VsdCwgcGF0aHNbbGVuZ3RoXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLnBpY2tCeWA7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mXG4gICAgICogdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2YgYG9iamVjdGAgdGhhdFxuICAgICAqIGBwcmVkaWNhdGVgIGRvZXNuJ3QgcmV0dXJuIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHR3b1xuICAgICAqIGFyZ3VtZW50czogKHZhbHVlLCBrZXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgcHJvcGVydHkuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gICAgICpcbiAgICAgKiBfLm9taXRCeShvYmplY3QsIF8uaXNOdW1iZXIpO1xuICAgICAqIC8vID0+IHsgJ2InOiAnMicgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9taXRCeShvYmplY3QsIHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIHBpY2tCeShvYmplY3QsIG5lZ2F0ZShnZXRJdGVyYXRlZShwcmVkaWNhdGUpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2YgdGhlIHBpY2tlZCBgb2JqZWN0YCBwcm9wZXJ0aWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogJzInLCAnYyc6IDMgfTtcbiAgICAgKlxuICAgICAqIF8ucGljayhvYmplY3QsIFsnYScsICdjJ10pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYyc6IDMgfVxuICAgICAqL1xuICAgIHZhciBwaWNrID0gZmxhdFJlc3QoZnVuY3Rpb24ob2JqZWN0LCBwYXRocykge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8ge30gOiBiYXNlUGljayhvYmplY3QsIHBhdGhzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZSBgb2JqZWN0YCBwcm9wZXJ0aWVzIGBwcmVkaWNhdGVgIHJldHVybnNcbiAgICAgKiB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0d28gYXJndW1lbnRzOiAodmFsdWUsIGtleSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBwcm9wZXJ0eS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogJzInLCAnYyc6IDMgfTtcbiAgICAgKlxuICAgICAqIF8ucGlja0J5KG9iamVjdCwgXy5pc051bWJlcik7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdjJzogMyB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gcGlja0J5KG9iamVjdCwgcHJlZGljYXRlKSB7XG4gICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgdmFyIHByb3BzID0gYXJyYXlNYXAoZ2V0QWxsS2V5c0luKG9iamVjdCksIGZ1bmN0aW9uKHByb3ApIHtcbiAgICAgICAgcmV0dXJuIFtwcm9wXTtcbiAgICAgIH0pO1xuICAgICAgcHJlZGljYXRlID0gZ2V0SXRlcmF0ZWUocHJlZGljYXRlKTtcbiAgICAgIHJldHVybiBiYXNlUGlja0J5KG9iamVjdCwgcHJvcHMsIGZ1bmN0aW9uKHZhbHVlLCBwYXRoKSB7XG4gICAgICAgIHJldHVybiBwcmVkaWNhdGUodmFsdWUsIHBhdGhbMF0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5nZXRgIGV4Y2VwdCB0aGF0IGlmIHRoZSByZXNvbHZlZCB2YWx1ZSBpcyBhXG4gICAgICogZnVuY3Rpb24gaXQncyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIGl0cyBwYXJlbnQgb2JqZWN0IGFuZFxuICAgICAqIGl0cyByZXN1bHQgaXMgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byByZXNvbHZlLlxuICAgICAqIEBwYXJhbSB7Kn0gW2RlZmF1bHRWYWx1ZV0gVGhlIHZhbHVlIHJldHVybmVkIGZvciBgdW5kZWZpbmVkYCByZXNvbHZlZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYzEnOiAzLCAnYzInOiBfLmNvbnN0YW50KDQpIH0gfV0gfTtcbiAgICAgKlxuICAgICAqIF8ucmVzdWx0KG9iamVjdCwgJ2FbMF0uYi5jMScpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8ucmVzdWx0KG9iamVjdCwgJ2FbMF0uYi5jMicpO1xuICAgICAqIC8vID0+IDRcbiAgICAgKlxuICAgICAqIF8ucmVzdWx0KG9iamVjdCwgJ2FbMF0uYi5jMycsICdkZWZhdWx0Jyk7XG4gICAgICogLy8gPT4gJ2RlZmF1bHQnXG4gICAgICpcbiAgICAgKiBfLnJlc3VsdChvYmplY3QsICdhWzBdLmIuYzMnLCBfLmNvbnN0YW50KCdkZWZhdWx0JykpO1xuICAgICAqIC8vID0+ICdkZWZhdWx0J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlc3VsdChvYmplY3QsIHBhdGgsIGRlZmF1bHRWYWx1ZSkge1xuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoO1xuXG4gICAgICAvLyBFbnN1cmUgdGhlIGxvb3AgaXMgZW50ZXJlZCB3aGVuIHBhdGggaXMgZW1wdHkuXG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICBsZW5ndGggPSAxO1xuICAgICAgICBvYmplY3QgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFt0b0tleShwYXRoW2luZGV4XSldO1xuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGluZGV4ID0gbGVuZ3RoO1xuICAgICAgICAgIHZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdCA9IGlzRnVuY3Rpb24odmFsdWUpID8gdmFsdWUuY2FsbChvYmplY3QpIDogdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC4gSWYgYSBwb3J0aW9uIG9mIGBwYXRoYCBkb2Vzbid0IGV4aXN0LFxuICAgICAqIGl0J3MgY3JlYXRlZC4gQXJyYXlzIGFyZSBjcmVhdGVkIGZvciBtaXNzaW5nIGluZGV4IHByb3BlcnRpZXMgd2hpbGUgb2JqZWN0c1xuICAgICAqIGFyZSBjcmVhdGVkIGZvciBhbGwgb3RoZXIgbWlzc2luZyBwcm9wZXJ0aWVzLiBVc2UgYF8uc2V0V2l0aGAgdG8gY3VzdG9taXplXG4gICAgICogYHBhdGhgIGNyZWF0aW9uLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy43LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9XSB9O1xuICAgICAqXG4gICAgICogXy5zZXQob2JqZWN0LCAnYVswXS5iLmMnLCA0KTtcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QuYVswXS5iLmMpO1xuICAgICAqIC8vID0+IDRcbiAgICAgKlxuICAgICAqIF8uc2V0KG9iamVjdCwgWyd4JywgJzAnLCAneScsICd6J10sIDUpO1xuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdC54WzBdLnkueik7XG4gICAgICogLy8gPT4gNVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldChvYmplY3QsIHBhdGgsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBiYXNlU2V0KG9iamVjdCwgcGF0aCwgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc2V0YCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgb2JqZWN0cyBvZiBgcGF0aGAuICBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYFxuICAgICAqIHBhdGggY3JlYXRpb24gaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAobnNWYWx1ZSwga2V5LCBuc09iamVjdCkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0ge307XG4gICAgICpcbiAgICAgKiBfLnNldFdpdGgob2JqZWN0LCAnWzBdWzFdJywgJ2EnLCBPYmplY3QpO1xuICAgICAqIC8vID0+IHsgJzAnOiB7ICcxJzogJ2EnIH0gfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldFdpdGgob2JqZWN0LCBwYXRoLCB2YWx1ZSwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gb2JqZWN0IDogYmFzZVNldChvYmplY3QsIHBhdGgsIHZhbHVlLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZC12YWx1ZSBwYWlycyBmb3IgYG9iamVjdGBcbiAgICAgKiB3aGljaCBjYW4gYmUgY29uc3VtZWQgYnkgYF8uZnJvbVBhaXJzYC4gSWYgYG9iamVjdGAgaXMgYSBtYXAgb3Igc2V0LCBpdHNcbiAgICAgKiBlbnRyaWVzIGFyZSByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBhbGlhcyBlbnRyaWVzXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8udG9QYWlycyhuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbWydhJywgMV0sIFsnYicsIDJdXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqL1xuICAgIHZhciB0b1BhaXJzID0gY3JlYXRlVG9QYWlycyhrZXlzKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQtdmFsdWUgcGFpcnNcbiAgICAgKiBmb3IgYG9iamVjdGAgd2hpY2ggY2FuIGJlIGNvbnN1bWVkIGJ5IGBfLmZyb21QYWlyc2AuIElmIGBvYmplY3RgIGlzIGEgbWFwXG4gICAgICogb3Igc2V0LCBpdHMgZW50cmllcyBhcmUgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAYWxpYXMgZW50cmllc0luXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8udG9QYWlyc0luKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFtbJ2EnLCAxXSwgWydiJywgMl0sIFsnYycsIDNdXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqL1xuICAgIHZhciB0b1BhaXJzSW4gPSBjcmVhdGVUb1BhaXJzKGtleXNJbik7XG5cbiAgICAvKipcbiAgICAgKiBBbiBhbHRlcm5hdGl2ZSB0byBgXy5yZWR1Y2VgOyB0aGlzIG1ldGhvZCB0cmFuc2Zvcm1zIGBvYmplY3RgIHRvIGEgbmV3XG4gICAgICogYGFjY3VtdWxhdG9yYCBvYmplY3Qgd2hpY2ggaXMgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGVhY2ggb2YgaXRzIG93blxuICAgICAqIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgdGhydSBgaXRlcmF0ZWVgLCB3aXRoIGVhY2ggaW52b2NhdGlvblxuICAgICAqIHBvdGVudGlhbGx5IG11dGF0aW5nIHRoZSBgYWNjdW11bGF0b3JgIG9iamVjdC4gSWYgYGFjY3VtdWxhdG9yYCBpcyBub3RcbiAgICAgKiBwcm92aWRlZCwgYSBuZXcgb2JqZWN0IHdpdGggdGhlIHNhbWUgYFtbUHJvdG90eXBlXV1gIHdpbGwgYmUgdXNlZC4gVGhlXG4gICAgICogaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIGZvdXIgYXJndW1lbnRzOiAoYWNjdW11bGF0b3IsIHZhbHVlLCBrZXksIG9iamVjdCkuXG4gICAgICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBjdXN0b20gYWNjdW11bGF0b3IgdmFsdWUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyYW5zZm9ybShbMiwgMywgNF0sIGZ1bmN0aW9uKHJlc3VsdCwgbikge1xuICAgICAqICAgcmVzdWx0LnB1c2gobiAqPSBuKTtcbiAgICAgKiAgIHJldHVybiBuICUgMiA9PSAwO1xuICAgICAqIH0sIFtdKTtcbiAgICAgKiAvLyA9PiBbNCwgOV1cbiAgICAgKlxuICAgICAqIF8udHJhbnNmb3JtKHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9LCBmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIChyZXN1bHRbdmFsdWVdIHx8IChyZXN1bHRbdmFsdWVdID0gW10pKS5wdXNoKGtleSk7XG4gICAgICogfSwge30pO1xuICAgICAqIC8vID0+IHsgJzEnOiBbJ2EnLCAnYyddLCAnMic6IFsnYiddIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0cmFuc2Zvcm0ob2JqZWN0LCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgICAgIHZhciBpc0FyciA9IGlzQXJyYXkob2JqZWN0KSxcbiAgICAgICAgICBpc0Fyckxpa2UgPSBpc0FyciB8fCBpc0J1ZmZlcihvYmplY3QpIHx8IGlzVHlwZWRBcnJheShvYmplY3QpO1xuXG4gICAgICBpdGVyYXRlZSA9IGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCA0KTtcbiAgICAgIGlmIChhY2N1bXVsYXRvciA9PSBudWxsKSB7XG4gICAgICAgIHZhciBDdG9yID0gb2JqZWN0ICYmIG9iamVjdC5jb25zdHJ1Y3RvcjtcbiAgICAgICAgaWYgKGlzQXJyTGlrZSkge1xuICAgICAgICAgIGFjY3VtdWxhdG9yID0gaXNBcnIgPyBuZXcgQ3RvciA6IFtdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgICBhY2N1bXVsYXRvciA9IGlzRnVuY3Rpb24oQ3RvcikgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKSA6IHt9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGFjY3VtdWxhdG9yID0ge307XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIChpc0Fyckxpa2UgPyBhcnJheUVhY2ggOiBiYXNlRm9yT3duKShvYmplY3QsIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBpdGVyYXRlZShhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4LCBvYmplY3QpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyB0aGUgcHJvcGVydHkgYXQgYHBhdGhgIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gdW5zZXQuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBwcm9wZXJ0eSBpcyBkZWxldGVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogNyB9IH1dIH07XG4gICAgICogXy51bnNldChvYmplY3QsICdhWzBdLmIuYycpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdCk7XG4gICAgICogLy8gPT4geyAnYSc6IFt7ICdiJzoge30gfV0gfTtcbiAgICAgKlxuICAgICAqIF8udW5zZXQob2JqZWN0LCBbJ2EnLCAnMCcsICdiJywgJ2MnXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogW3sgJ2InOiB7fSB9XSB9O1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuc2V0KG9iamVjdCwgcGF0aCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdHJ1ZSA6IGJhc2VVbnNldChvYmplY3QsIHBhdGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc2V0YCBleGNlcHQgdGhhdCBhY2NlcHRzIGB1cGRhdGVyYCB0byBwcm9kdWNlIHRoZVxuICAgICAqIHZhbHVlIHRvIHNldC4gVXNlIGBfLnVwZGF0ZVdpdGhgIHRvIGN1c3RvbWl6ZSBgcGF0aGAgY3JlYXRpb24uIFRoZSBgdXBkYXRlcmBcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC42LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHVwZGF0ZXIgVGhlIGZ1bmN0aW9uIHRvIHByb2R1Y2UgdGhlIHVwZGF0ZWQgdmFsdWUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfV0gfTtcbiAgICAgKlxuICAgICAqIF8udXBkYXRlKG9iamVjdCwgJ2FbMF0uYi5jJywgZnVuY3Rpb24obikgeyByZXR1cm4gbiAqIG47IH0pO1xuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdC5hWzBdLmIuYyk7XG4gICAgICogLy8gPT4gOVxuICAgICAqXG4gICAgICogXy51cGRhdGUob2JqZWN0LCAneFswXS55LnonLCBmdW5jdGlvbihuKSB7IHJldHVybiBuID8gbiArIDEgOiAwOyB9KTtcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QueFswXS55LnopO1xuICAgICAqIC8vID0+IDBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1cGRhdGUob2JqZWN0LCBwYXRoLCB1cGRhdGVyKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBiYXNlVXBkYXRlKG9iamVjdCwgcGF0aCwgY2FzdEZ1bmN0aW9uKHVwZGF0ZXIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVwZGF0ZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIG9iamVjdHMgb2YgYHBhdGhgLiAgSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGBcbiAgICAgKiBwYXRoIGNyZWF0aW9uIGlzIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKG5zVmFsdWUsIGtleSwgbnNPYmplY3QpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC42LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHVwZGF0ZXIgVGhlIGZ1bmN0aW9uIHRvIHByb2R1Y2UgdGhlIHVwZGF0ZWQgdmFsdWUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7fTtcbiAgICAgKlxuICAgICAqIF8udXBkYXRlV2l0aChvYmplY3QsICdbMF1bMV0nLCBfLmNvbnN0YW50KCdhJyksIE9iamVjdCk7XG4gICAgICogLy8gPT4geyAnMCc6IHsgJzEnOiAnYScgfSB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gdXBkYXRlV2l0aChvYmplY3QsIHBhdGgsIHVwZGF0ZXIsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IG9iamVjdCA6IGJhc2VVcGRhdGUob2JqZWN0LCBwYXRoLCBjYXN0RnVuY3Rpb24odXBkYXRlciksIGN1c3RvbWl6ZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0eSB2YWx1ZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLnZhbHVlcyhuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbMSwgMl0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKlxuICAgICAqIF8udmFsdWVzKCdoaScpO1xuICAgICAqIC8vID0+IFsnaCcsICdpJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB2YWx1ZXMob2JqZWN0KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBbXSA6IGJhc2VWYWx1ZXMob2JqZWN0LCBrZXlzKG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnR5XG4gICAgICogdmFsdWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy52YWx1ZXNJbihuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB2YWx1ZXNJbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IFtdIDogYmFzZVZhbHVlcyhvYmplY3QsIGtleXNJbihvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDbGFtcHMgYG51bWJlcmAgd2l0aGluIHRoZSBpbmNsdXNpdmUgYGxvd2VyYCBhbmQgYHVwcGVyYCBib3VuZHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTnVtYmVyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciBUaGUgbnVtYmVyIHRvIGNsYW1wLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbG93ZXJdIFRoZSBsb3dlciBib3VuZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdXBwZXIgVGhlIHVwcGVyIGJvdW5kLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNsYW1wZWQgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNsYW1wKC0xMCwgLTUsIDUpO1xuICAgICAqIC8vID0+IC01XG4gICAgICpcbiAgICAgKiBfLmNsYW1wKDEwLCAtNSwgNSk7XG4gICAgICogLy8gPT4gNVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsYW1wKG51bWJlciwgbG93ZXIsIHVwcGVyKSB7XG4gICAgICBpZiAodXBwZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB1cHBlciA9IGxvd2VyO1xuICAgICAgICBsb3dlciA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGlmICh1cHBlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHVwcGVyID0gdG9OdW1iZXIodXBwZXIpO1xuICAgICAgICB1cHBlciA9IHVwcGVyID09PSB1cHBlciA/IHVwcGVyIDogMDtcbiAgICAgIH1cbiAgICAgIGlmIChsb3dlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxvd2VyID0gdG9OdW1iZXIobG93ZXIpO1xuICAgICAgICBsb3dlciA9IGxvd2VyID09PSBsb3dlciA/IGxvd2VyIDogMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlQ2xhbXAodG9OdW1iZXIobnVtYmVyKSwgbG93ZXIsIHVwcGVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYG5gIGlzIGJldHdlZW4gYHN0YXJ0YCBhbmQgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBgZW5kYC4gSWZcbiAgICAgKiBgZW5kYCBpcyBub3Qgc3BlY2lmaWVkLCBpdCdzIHNldCB0byBgc3RhcnRgIHdpdGggYHN0YXJ0YCB0aGVuIHNldCB0byBgMGAuXG4gICAgICogSWYgYHN0YXJ0YCBpcyBncmVhdGVyIHRoYW4gYGVuZGAgdGhlIHBhcmFtcyBhcmUgc3dhcHBlZCB0byBzdXBwb3J0XG4gICAgICogbmVnYXRpdmUgcmFuZ2VzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMy4wXG4gICAgICogQGNhdGVnb3J5IE51bWJlclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG51bWJlcmAgaXMgaW4gdGhlIHJhbmdlLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQHNlZSBfLnJhbmdlLCBfLnJhbmdlUmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKDMsIDIsIDQpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSg0LCA4KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoNCwgMik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSgyLCAyKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKDEuMiwgMik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKDUuMiwgNCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSgtMywgLTIsIC02KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5SYW5nZShudW1iZXIsIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHN0YXJ0ID0gdG9GaW5pdGUoc3RhcnQpO1xuICAgICAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGVuZCA9IHN0YXJ0O1xuICAgICAgICBzdGFydCA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbmQgPSB0b0Zpbml0ZShlbmQpO1xuICAgICAgfVxuICAgICAgbnVtYmVyID0gdG9OdW1iZXIobnVtYmVyKTtcbiAgICAgIHJldHVybiBiYXNlSW5SYW5nZShudW1iZXIsIHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2R1Y2VzIGEgcmFuZG9tIG51bWJlciBiZXR3ZWVuIHRoZSBpbmNsdXNpdmUgYGxvd2VyYCBhbmQgYHVwcGVyYCBib3VuZHMuXG4gICAgICogSWYgb25seSBvbmUgYXJndW1lbnQgaXMgcHJvdmlkZWQgYSBudW1iZXIgYmV0d2VlbiBgMGAgYW5kIHRoZSBnaXZlbiBudW1iZXJcbiAgICAgKiBpcyByZXR1cm5lZC4gSWYgYGZsb2F0aW5nYCBpcyBgdHJ1ZWAsIG9yIGVpdGhlciBgbG93ZXJgIG9yIGB1cHBlcmAgYXJlXG4gICAgICogZmxvYXRzLCBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBpcyByZXR1cm5lZCBpbnN0ZWFkIG9mIGFuIGludGVnZXIuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSmF2YVNjcmlwdCBmb2xsb3dzIHRoZSBJRUVFLTc1NCBzdGFuZGFyZCBmb3IgcmVzb2x2aW5nXG4gICAgICogZmxvYXRpbmctcG9pbnQgdmFsdWVzIHdoaWNoIGNhbiBwcm9kdWNlIHVuZXhwZWN0ZWQgcmVzdWx0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjcuMFxuICAgICAqIEBjYXRlZ29yeSBOdW1iZXJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xvd2VyPTBdIFRoZSBsb3dlciBib3VuZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3VwcGVyPTFdIFRoZSB1cHBlciBib3VuZC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmbG9hdGluZ10gU3BlY2lmeSByZXR1cm5pbmcgYSBmbG9hdGluZy1wb2ludCBudW1iZXIuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcmFuZG9tIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yYW5kb20oMCwgNSk7XG4gICAgICogLy8gPT4gYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDVcbiAgICAgKlxuICAgICAqIF8ucmFuZG9tKDUpO1xuICAgICAqIC8vID0+IGFsc28gYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDVcbiAgICAgKlxuICAgICAqIF8ucmFuZG9tKDUsIHRydWUpO1xuICAgICAqIC8vID0+IGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGJldHdlZW4gMCBhbmQgNVxuICAgICAqXG4gICAgICogXy5yYW5kb20oMS4yLCA1LjIpO1xuICAgICAqIC8vID0+IGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGJldHdlZW4gMS4yIGFuZCA1LjJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByYW5kb20obG93ZXIsIHVwcGVyLCBmbG9hdGluZykge1xuICAgICAgaWYgKGZsb2F0aW5nICYmIHR5cGVvZiBmbG9hdGluZyAhPSAnYm9vbGVhbicgJiYgaXNJdGVyYXRlZUNhbGwobG93ZXIsIHVwcGVyLCBmbG9hdGluZykpIHtcbiAgICAgICAgdXBwZXIgPSBmbG9hdGluZyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGlmIChmbG9hdGluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdXBwZXIgPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgZmxvYXRpbmcgPSB1cHBlcjtcbiAgICAgICAgICB1cHBlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlb2YgbG93ZXIgPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgZmxvYXRpbmcgPSBsb3dlcjtcbiAgICAgICAgICBsb3dlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGxvd2VyID09PSB1bmRlZmluZWQgJiYgdXBwZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsb3dlciA9IDA7XG4gICAgICAgIHVwcGVyID0gMTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBsb3dlciA9IHRvRmluaXRlKGxvd2VyKTtcbiAgICAgICAgaWYgKHVwcGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB1cHBlciA9IGxvd2VyO1xuICAgICAgICAgIGxvd2VyID0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cHBlciA9IHRvRmluaXRlKHVwcGVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGxvd2VyID4gdXBwZXIpIHtcbiAgICAgICAgdmFyIHRlbXAgPSBsb3dlcjtcbiAgICAgICAgbG93ZXIgPSB1cHBlcjtcbiAgICAgICAgdXBwZXIgPSB0ZW1wO1xuICAgICAgfVxuICAgICAgaWYgKGZsb2F0aW5nIHx8IGxvd2VyICUgMSB8fCB1cHBlciAlIDEpIHtcbiAgICAgICAgdmFyIHJhbmQgPSBuYXRpdmVSYW5kb20oKTtcbiAgICAgICAgcmV0dXJuIG5hdGl2ZU1pbihsb3dlciArIChyYW5kICogKHVwcGVyIC0gbG93ZXIgKyBmcmVlUGFyc2VGbG9hdCgnMWUtJyArICgocmFuZCArICcnKS5sZW5ndGggLSAxKSkpKSwgdXBwZXIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VSYW5kb20obG93ZXIsIHVwcGVyKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBbY2FtZWwgY2FzZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2FtZWxDYXNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNhbWVsIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jYW1lbENhc2UoJ0ZvbyBCYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vQmFyJ1xuICAgICAqXG4gICAgICogXy5jYW1lbENhc2UoJy0tZm9vLWJhci0tJyk7XG4gICAgICogLy8gPT4gJ2Zvb0JhcidcbiAgICAgKlxuICAgICAqIF8uY2FtZWxDYXNlKCdfX0ZPT19CQVJfXycpO1xuICAgICAqIC8vID0+ICdmb29CYXInXG4gICAgICovXG4gICAgdmFyIGNhbWVsQ2FzZSA9IGNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LCB3b3JkLCBpbmRleCkge1xuICAgICAgd29yZCA9IHdvcmQudG9Mb3dlckNhc2UoKTtcbiAgICAgIHJldHVybiByZXN1bHQgKyAoaW5kZXggPyBjYXBpdGFsaXplKHdvcmQpIDogd29yZCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGBzdHJpbmdgIHRvIHVwcGVyIGNhc2UgYW5kIHRoZSByZW1haW5pbmdcbiAgICAgKiB0byBsb3dlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNhcGl0YWxpemUuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY2FwaXRhbGl6ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNhcGl0YWxpemUoJ0ZSRUQnKTtcbiAgICAgKiAvLyA9PiAnRnJlZCdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXBpdGFsaXplKHN0cmluZykge1xuICAgICAgcmV0dXJuIHVwcGVyRmlyc3QodG9TdHJpbmcoc3RyaW5nKS50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWJ1cnJzIGBzdHJpbmdgIGJ5IGNvbnZlcnRpbmdcbiAgICAgKiBbTGF0aW4tMSBTdXBwbGVtZW50XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MYXRpbi0xX1N1cHBsZW1lbnRfKFVuaWNvZGVfYmxvY2spI0NoYXJhY3Rlcl90YWJsZSlcbiAgICAgKiBhbmQgW0xhdGluIEV4dGVuZGVkLUFdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xhdGluX0V4dGVuZGVkLUEpXG4gICAgICogbGV0dGVycyB0byBiYXNpYyBMYXRpbiBsZXR0ZXJzIGFuZCByZW1vdmluZ1xuICAgICAqIFtjb21iaW5pbmcgZGlhY3JpdGljYWwgbWFya3NdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbWJpbmluZ19EaWFjcml0aWNhbF9NYXJrcykuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gZGVidXJyLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGRlYnVycmVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWJ1cnIoJ2TDqWrDoCB2dScpO1xuICAgICAqIC8vID0+ICdkZWphIHZ1J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRlYnVycihzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICByZXR1cm4gc3RyaW5nICYmIHN0cmluZy5yZXBsYWNlKHJlTGF0aW4sIGRlYnVyckxldHRlcikucmVwbGFjZShyZUNvbWJvTWFyaywgJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgc3RyaW5nYCBlbmRzIHdpdGggdGhlIGdpdmVuIHRhcmdldCBzdHJpbmcuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3RhcmdldF0gVGhlIHN0cmluZyB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcG9zaXRpb249c3RyaW5nLmxlbmd0aF0gVGhlIHBvc2l0aW9uIHRvIHNlYXJjaCB1cCB0by5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHN0cmluZ2AgZW5kcyB3aXRoIGB0YXJnZXRgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZW5kc1dpdGgoJ2FiYycsICdjJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5lbmRzV2l0aCgnYWJjJywgJ2InKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5lbmRzV2l0aCgnYWJjJywgJ2InLCAyKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gZW5kc1dpdGgoc3RyaW5nLCB0YXJnZXQsIHBvc2l0aW9uKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgdGFyZ2V0ID0gYmFzZVRvU3RyaW5nKHRhcmdldCk7XG5cbiAgICAgIHZhciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoO1xuICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbiA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gbGVuZ3RoXG4gICAgICAgIDogYmFzZUNsYW1wKHRvSW50ZWdlcihwb3NpdGlvbiksIDAsIGxlbmd0aCk7XG5cbiAgICAgIHZhciBlbmQgPSBwb3NpdGlvbjtcbiAgICAgIHBvc2l0aW9uIC09IHRhcmdldC5sZW5ndGg7XG4gICAgICByZXR1cm4gcG9zaXRpb24gPj0gMCAmJiBzdHJpbmcuc2xpY2UocG9zaXRpb24sIGVuZCkgPT0gdGFyZ2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSBjaGFyYWN0ZXJzIFwiJlwiLCBcIjxcIiwgXCI+XCIsICdcIicsIGFuZCBcIidcIiBpbiBgc3RyaW5nYCB0byB0aGVpclxuICAgICAqIGNvcnJlc3BvbmRpbmcgSFRNTCBlbnRpdGllcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBObyBvdGhlciBjaGFyYWN0ZXJzIGFyZSBlc2NhcGVkLiBUbyBlc2NhcGUgYWRkaXRpb25hbFxuICAgICAqIGNoYXJhY3RlcnMgdXNlIGEgdGhpcmQtcGFydHkgbGlicmFyeSBsaWtlIFtfaGVfXShodHRwczovL210aHMuYmUvaGUpLlxuICAgICAqXG4gICAgICogVGhvdWdoIHRoZSBcIj5cIiBjaGFyYWN0ZXIgaXMgZXNjYXBlZCBmb3Igc3ltbWV0cnksIGNoYXJhY3RlcnMgbGlrZVxuICAgICAqIFwiPlwiIGFuZCBcIi9cIiBkb24ndCBuZWVkIGVzY2FwaW5nIGluIEhUTUwgYW5kIGhhdmUgbm8gc3BlY2lhbCBtZWFuaW5nXG4gICAgICogdW5sZXNzIHRoZXkncmUgcGFydCBvZiBhIHRhZyBvciB1bnF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUuIFNlZVxuICAgICAqIFtNYXRoaWFzIEJ5bmVucydzIGFydGljbGVdKGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9hbWJpZ3VvdXMtYW1wZXJzYW5kcylcbiAgICAgKiAodW5kZXIgXCJzZW1pLXJlbGF0ZWQgZnVuIGZhY3RcIikgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKlxuICAgICAqIFdoZW4gd29ya2luZyB3aXRoIEhUTUwgeW91IHNob3VsZCBhbHdheXNcbiAgICAgKiBbcXVvdGUgYXR0cmlidXRlIHZhbHVlc10oaHR0cDovL3dvbmtvLmNvbS9wb3N0L2h0bWwtZXNjYXBpbmcpIHRvIHJlZHVjZVxuICAgICAqIFhTUyB2ZWN0b3JzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGVzY2FwZS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5lc2NhcGUoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJyk7XG4gICAgICogLy8gPT4gJ2ZyZWQsIGJhcm5leSwgJmFtcDsgcGViYmxlcydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlc2NhcGUoc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcmV0dXJuIChzdHJpbmcgJiYgcmVIYXNVbmVzY2FwZWRIdG1sLnRlc3Qoc3RyaW5nKSlcbiAgICAgICAgPyBzdHJpbmcucmVwbGFjZShyZVVuZXNjYXBlZEh0bWwsIGVzY2FwZUh0bWxDaGFyKVxuICAgICAgICA6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFc2NhcGVzIHRoZSBgUmVnRXhwYCBzcGVjaWFsIGNoYXJhY3RlcnMgXCJeXCIsIFwiJFwiLCBcIlxcXCIsIFwiLlwiLCBcIipcIiwgXCIrXCIsXG4gICAgICogXCI/XCIsIFwiKFwiLCBcIilcIiwgXCJbXCIsIFwiXVwiLCBcIntcIiwgXCJ9XCIsIGFuZCBcInxcIiBpbiBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBlc2NhcGUuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZXNjYXBlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZXNjYXBlUmVnRXhwKCdbbG9kYXNoXShodHRwczovL2xvZGFzaC5jb20vKScpO1xuICAgICAqIC8vID0+ICdcXFtsb2Rhc2hcXF1cXChodHRwczovL2xvZGFzaFxcLmNvbS9cXCknXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXNjYXBlUmVnRXhwKHN0cmluZykge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHJldHVybiAoc3RyaW5nICYmIHJlSGFzUmVnRXhwQ2hhci50ZXN0KHN0cmluZykpXG4gICAgICAgID8gc3RyaW5nLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG9cbiAgICAgKiBba2ViYWIgY2FzZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGV0dGVyX2Nhc2UjU3BlY2lhbF9jYXNlX3N0eWxlcykuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBrZWJhYiBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ua2ViYWJDYXNlKCdGb28gQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvby1iYXInXG4gICAgICpcbiAgICAgKiBfLmtlYmFiQ2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvby1iYXInXG4gICAgICpcbiAgICAgKiBfLmtlYmFiQ2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnZm9vLWJhcidcbiAgICAgKi9cbiAgICB2YXIga2ViYWJDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJy0nIDogJycpICsgd29yZC50b0xvd2VyQ2FzZSgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AsIGFzIHNwYWNlIHNlcGFyYXRlZCB3b3JkcywgdG8gbG93ZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGxvd2VyIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sb3dlckNhc2UoJy0tRm9vLUJhci0tJyk7XG4gICAgICogLy8gPT4gJ2ZvbyBiYXInXG4gICAgICpcbiAgICAgKiBfLmxvd2VyQ2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ2ZvbyBiYXInXG4gICAgICpcbiAgICAgKiBfLmxvd2VyQ2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnZm9vIGJhcidcbiAgICAgKi9cbiAgICB2YXIgbG93ZXJDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJyAnIDogJycpICsgd29yZC50b0xvd2VyQ2FzZSgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBgc3RyaW5nYCB0byBsb3dlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sb3dlckZpcnN0KCdGcmVkJyk7XG4gICAgICogLy8gPT4gJ2ZyZWQnXG4gICAgICpcbiAgICAgKiBfLmxvd2VyRmlyc3QoJ0ZSRUQnKTtcbiAgICAgKiAvLyA9PiAnZlJFRCdcbiAgICAgKi9cbiAgICB2YXIgbG93ZXJGaXJzdCA9IGNyZWF0ZUNhc2VGaXJzdCgndG9Mb3dlckNhc2UnKTtcblxuICAgIC8qKlxuICAgICAqIFBhZHMgYHN0cmluZ2Agb24gdGhlIGxlZnQgYW5kIHJpZ2h0IHNpZGVzIGlmIGl0J3Mgc2hvcnRlciB0aGFuIGBsZW5ndGhgLlxuICAgICAqIFBhZGRpbmcgY2hhcmFjdGVycyBhcmUgdHJ1bmNhdGVkIGlmIHRoZXkgY2FuJ3QgYmUgZXZlbmx5IGRpdmlkZWQgYnkgYGxlbmd0aGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gcGFkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPTBdIFRoZSBwYWRkaW5nIGxlbmd0aC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPScgJ10gVGhlIHN0cmluZyB1c2VkIGFzIHBhZGRpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcGFkZGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5wYWQoJ2FiYycsIDgpO1xuICAgICAqIC8vID0+ICcgIGFiYyAgICdcbiAgICAgKlxuICAgICAqIF8ucGFkKCdhYmMnLCA4LCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnXy1hYmNfLV8nXG4gICAgICpcbiAgICAgKiBfLnBhZCgnYWJjJywgMyk7XG4gICAgICogLy8gPT4gJ2FiYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwYWQoc3RyaW5nLCBsZW5ndGgsIGNoYXJzKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgbGVuZ3RoID0gdG9JbnRlZ2VyKGxlbmd0aCk7XG5cbiAgICAgIHZhciBzdHJMZW5ndGggPSBsZW5ndGggPyBzdHJpbmdTaXplKHN0cmluZykgOiAwO1xuICAgICAgaWYgKCFsZW5ndGggfHwgc3RyTGVuZ3RoID49IGxlbmd0aCkge1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgICAgfVxuICAgICAgdmFyIG1pZCA9IChsZW5ndGggLSBzdHJMZW5ndGgpIC8gMjtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGNyZWF0ZVBhZGRpbmcobmF0aXZlRmxvb3IobWlkKSwgY2hhcnMpICtcbiAgICAgICAgc3RyaW5nICtcbiAgICAgICAgY3JlYXRlUGFkZGluZyhuYXRpdmVDZWlsKG1pZCksIGNoYXJzKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYWRzIGBzdHJpbmdgIG9uIHRoZSByaWdodCBzaWRlIGlmIGl0J3Mgc2hvcnRlciB0aGFuIGBsZW5ndGhgLiBQYWRkaW5nXG4gICAgICogY2hhcmFjdGVycyBhcmUgdHJ1bmNhdGVkIGlmIHRoZXkgZXhjZWVkIGBsZW5ndGhgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHBhZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD0wXSBUaGUgcGFkZGluZyBsZW5ndGguXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz0nICddIFRoZSBzdHJpbmcgdXNlZCBhcyBwYWRkaW5nLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHBhZGRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucGFkRW5kKCdhYmMnLCA2KTtcbiAgICAgKiAvLyA9PiAnYWJjICAgJ1xuICAgICAqXG4gICAgICogXy5wYWRFbmQoJ2FiYycsIDYsICdfLScpO1xuICAgICAqIC8vID0+ICdhYmNfLV8nXG4gICAgICpcbiAgICAgKiBfLnBhZEVuZCgnYWJjJywgMyk7XG4gICAgICogLy8gPT4gJ2FiYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwYWRFbmQoc3RyaW5nLCBsZW5ndGgsIGNoYXJzKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgbGVuZ3RoID0gdG9JbnRlZ2VyKGxlbmd0aCk7XG5cbiAgICAgIHZhciBzdHJMZW5ndGggPSBsZW5ndGggPyBzdHJpbmdTaXplKHN0cmluZykgOiAwO1xuICAgICAgcmV0dXJuIChsZW5ndGggJiYgc3RyTGVuZ3RoIDwgbGVuZ3RoKVxuICAgICAgICA/IChzdHJpbmcgKyBjcmVhdGVQYWRkaW5nKGxlbmd0aCAtIHN0ckxlbmd0aCwgY2hhcnMpKVxuICAgICAgICA6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYWRzIGBzdHJpbmdgIG9uIHRoZSBsZWZ0IHNpZGUgaWYgaXQncyBzaG9ydGVyIHRoYW4gYGxlbmd0aGAuIFBhZGRpbmdcbiAgICAgKiBjaGFyYWN0ZXJzIGFyZSB0cnVuY2F0ZWQgaWYgdGhleSBleGNlZWQgYGxlbmd0aGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gcGFkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPTBdIFRoZSBwYWRkaW5nIGxlbmd0aC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPScgJ10gVGhlIHN0cmluZyB1c2VkIGFzIHBhZGRpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcGFkZGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5wYWRTdGFydCgnYWJjJywgNik7XG4gICAgICogLy8gPT4gJyAgIGFiYydcbiAgICAgKlxuICAgICAqIF8ucGFkU3RhcnQoJ2FiYycsIDYsICdfLScpO1xuICAgICAqIC8vID0+ICdfLV9hYmMnXG4gICAgICpcbiAgICAgKiBfLnBhZFN0YXJ0KCdhYmMnLCAzKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBhZFN0YXJ0KHN0cmluZywgbGVuZ3RoLCBjaGFycykge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGxlbmd0aCA9IHRvSW50ZWdlcihsZW5ndGgpO1xuXG4gICAgICB2YXIgc3RyTGVuZ3RoID0gbGVuZ3RoID8gc3RyaW5nU2l6ZShzdHJpbmcpIDogMDtcbiAgICAgIHJldHVybiAobGVuZ3RoICYmIHN0ckxlbmd0aCA8IGxlbmd0aClcbiAgICAgICAgPyAoY3JlYXRlUGFkZGluZyhsZW5ndGggLSBzdHJMZW5ndGgsIGNoYXJzKSArIHN0cmluZylcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG8gYW4gaW50ZWdlciBvZiB0aGUgc3BlY2lmaWVkIHJhZGl4LiBJZiBgcmFkaXhgIGlzXG4gICAgICogYHVuZGVmaW5lZGAgb3IgYDBgLCBhIGByYWRpeGAgb2YgYDEwYCBpcyB1c2VkIHVubGVzcyBgdmFsdWVgIGlzIGFcbiAgICAgKiBoZXhhZGVjaW1hbCwgaW4gd2hpY2ggY2FzZSBhIGByYWRpeGAgb2YgYDE2YCBpcyB1c2VkLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGFsaWducyB3aXRoIHRoZVxuICAgICAqIFtFUzUgaW1wbGVtZW50YXRpb25dKGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jeDE1LjEuMi4yKSBvZiBgcGFyc2VJbnRgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMS4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcmFkaXg9MTBdIFRoZSByYWRpeCB0byBpbnRlcnByZXQgYHZhbHVlYCBieS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnBhcnNlSW50KCcwOCcpO1xuICAgICAqIC8vID0+IDhcbiAgICAgKlxuICAgICAqIF8ubWFwKFsnNicsICcwOCcsICcxMCddLCBfLnBhcnNlSW50KTtcbiAgICAgKiAvLyA9PiBbNiwgOCwgMTBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gcGFyc2VJbnQoc3RyaW5nLCByYWRpeCwgZ3VhcmQpIHtcbiAgICAgIGlmIChndWFyZCB8fCByYWRpeCA9PSBudWxsKSB7XG4gICAgICAgIHJhZGl4ID0gMDtcbiAgICAgIH0gZWxzZSBpZiAocmFkaXgpIHtcbiAgICAgICAgcmFkaXggPSArcmFkaXg7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmF0aXZlUGFyc2VJbnQodG9TdHJpbmcoc3RyaW5nKS5yZXBsYWNlKHJlVHJpbVN0YXJ0LCAnJyksIHJhZGl4IHx8IDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlcGVhdHMgdGhlIGdpdmVuIHN0cmluZyBgbmAgdGltZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gcmVwZWF0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJlcGVhdCB0aGUgc3RyaW5nLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmVwZWF0ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJlcGVhdCgnKicsIDMpO1xuICAgICAqIC8vID0+ICcqKionXG4gICAgICpcbiAgICAgKiBfLnJlcGVhdCgnYWJjJywgMik7XG4gICAgICogLy8gPT4gJ2FiY2FiYydcbiAgICAgKlxuICAgICAqIF8ucmVwZWF0KCdhYmMnLCAwKTtcbiAgICAgKiAvLyA9PiAnJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlcGVhdChzdHJpbmcsIG4sIGd1YXJkKSB7XG4gICAgICBpZiAoKGd1YXJkID8gaXNJdGVyYXRlZUNhbGwoc3RyaW5nLCBuLCBndWFyZCkgOiBuID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIG4gPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbiA9IHRvSW50ZWdlcihuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlUmVwZWF0KHRvU3RyaW5nKHN0cmluZyksIG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlcGxhY2VzIG1hdGNoZXMgZm9yIGBwYXR0ZXJuYCBpbiBgc3RyaW5nYCB3aXRoIGByZXBsYWNlbWVudGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYFN0cmluZyNyZXBsYWNlYF0oaHR0cHM6Ly9tZG4uaW8vU3RyaW5nL3JlcGxhY2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IHBhdHRlcm4gVGhlIHBhdHRlcm4gdG8gcmVwbGFjZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufHN0cmluZ30gcmVwbGFjZW1lbnQgVGhlIG1hdGNoIHJlcGxhY2VtZW50LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIG1vZGlmaWVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yZXBsYWNlKCdIaSBGcmVkJywgJ0ZyZWQnLCAnQmFybmV5Jyk7XG4gICAgICogLy8gPT4gJ0hpIEJhcm5leSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXBsYWNlKCkge1xuICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgc3RyaW5nID0gdG9TdHJpbmcoYXJnc1swXSk7XG5cbiAgICAgIHJldHVybiBhcmdzLmxlbmd0aCA8IDMgPyBzdHJpbmcgOiBzdHJpbmcucmVwbGFjZShhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0b1xuICAgICAqIFtzbmFrZSBjYXNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TbmFrZV9jYXNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNuYWtlIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zbmFrZUNhc2UoJ0ZvbyBCYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vX2JhcidcbiAgICAgKlxuICAgICAqIF8uc25ha2VDYXNlKCdmb29CYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vX2JhcidcbiAgICAgKlxuICAgICAqIF8uc25ha2VDYXNlKCctLUZPTy1CQVItLScpO1xuICAgICAqIC8vID0+ICdmb29fYmFyJ1xuICAgICAqL1xuICAgIHZhciBzbmFrZUNhc2UgPSBjcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCwgd29yZCwgaW5kZXgpIHtcbiAgICAgIHJldHVybiByZXN1bHQgKyAoaW5kZXggPyAnXycgOiAnJykgKyB3b3JkLnRvTG93ZXJDYXNlKCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBTcGxpdHMgYHN0cmluZ2AgYnkgYHNlcGFyYXRvcmAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYFN0cmluZyNzcGxpdGBdKGh0dHBzOi8vbWRuLmlvL1N0cmluZy9zcGxpdCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gc3BsaXQuXG4gICAgICogQHBhcmFtIHtSZWdFeHB8c3RyaW5nfSBzZXBhcmF0b3IgVGhlIHNlcGFyYXRvciBwYXR0ZXJuIHRvIHNwbGl0IGJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGltaXRdIFRoZSBsZW5ndGggdG8gdHJ1bmNhdGUgcmVzdWx0cyB0by5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHN0cmluZyBzZWdtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zcGxpdCgnYS1iLWMnLCAnLScsIDIpO1xuICAgICAqIC8vID0+IFsnYScsICdiJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzcGxpdChzdHJpbmcsIHNlcGFyYXRvciwgbGltaXQpIHtcbiAgICAgIGlmIChsaW1pdCAmJiB0eXBlb2YgbGltaXQgIT0gJ251bWJlcicgJiYgaXNJdGVyYXRlZUNhbGwoc3RyaW5nLCBzZXBhcmF0b3IsIGxpbWl0KSkge1xuICAgICAgICBzZXBhcmF0b3IgPSBsaW1pdCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGxpbWl0ID0gbGltaXQgPT09IHVuZGVmaW5lZCA/IE1BWF9BUlJBWV9MRU5HVEggOiBsaW1pdCA+Pj4gMDtcbiAgICAgIGlmICghbGltaXQpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGlmIChzdHJpbmcgJiYgKFxuICAgICAgICAgICAgdHlwZW9mIHNlcGFyYXRvciA9PSAnc3RyaW5nJyB8fFxuICAgICAgICAgICAgKHNlcGFyYXRvciAhPSBudWxsICYmICFpc1JlZ0V4cChzZXBhcmF0b3IpKVxuICAgICAgICAgICkpIHtcbiAgICAgICAgc2VwYXJhdG9yID0gYmFzZVRvU3RyaW5nKHNlcGFyYXRvcik7XG4gICAgICAgIGlmICghc2VwYXJhdG9yICYmIGhhc1VuaWNvZGUoc3RyaW5nKSkge1xuICAgICAgICAgIHJldHVybiBjYXN0U2xpY2Uoc3RyaW5nVG9BcnJheShzdHJpbmcpLCAwLCBsaW1pdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHJpbmcuc3BsaXQoc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG9cbiAgICAgKiBbc3RhcnQgY2FzZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGV0dGVyX2Nhc2UjU3R5bGlzdGljX29yX3NwZWNpYWxpc2VkX3VzYWdlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHN0YXJ0IGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zdGFydENhc2UoJy0tZm9vLWJhci0tJyk7XG4gICAgICogLy8gPT4gJ0ZvbyBCYXInXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0Q2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ0ZvbyBCYXInXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0Q2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnRk9PIEJBUidcbiAgICAgKi9cbiAgICB2YXIgc3RhcnRDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJyAnIDogJycpICsgdXBwZXJGaXJzdCh3b3JkKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgc3RyaW5nYCBzdGFydHMgd2l0aCB0aGUgZ2l2ZW4gdGFyZ2V0IHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdGFyZ2V0XSBUaGUgc3RyaW5nIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwb3NpdGlvbj0wXSBUaGUgcG9zaXRpb24gdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBzdHJpbmdgIHN0YXJ0cyB3aXRoIGB0YXJnZXRgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc3RhcnRzV2l0aCgnYWJjJywgJ2EnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0c1dpdGgoJ2FiYycsICdiJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uc3RhcnRzV2l0aCgnYWJjJywgJ2InLCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhcnRzV2l0aChzdHJpbmcsIHRhcmdldCwgcG9zaXRpb24pIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uID09IG51bGxcbiAgICAgICAgPyAwXG4gICAgICAgIDogYmFzZUNsYW1wKHRvSW50ZWdlcihwb3NpdGlvbiksIDAsIHN0cmluZy5sZW5ndGgpO1xuXG4gICAgICB0YXJnZXQgPSBiYXNlVG9TdHJpbmcodGFyZ2V0KTtcbiAgICAgIHJldHVybiBzdHJpbmcuc2xpY2UocG9zaXRpb24sIHBvc2l0aW9uICsgdGFyZ2V0Lmxlbmd0aCkgPT0gdGFyZ2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjb21waWxlZCB0ZW1wbGF0ZSBmdW5jdGlvbiB0aGF0IGNhbiBpbnRlcnBvbGF0ZSBkYXRhIHByb3BlcnRpZXNcbiAgICAgKiBpbiBcImludGVycG9sYXRlXCIgZGVsaW1pdGVycywgSFRNTC1lc2NhcGUgaW50ZXJwb2xhdGVkIGRhdGEgcHJvcGVydGllcyBpblxuICAgICAqIFwiZXNjYXBlXCIgZGVsaW1pdGVycywgYW5kIGV4ZWN1dGUgSmF2YVNjcmlwdCBpbiBcImV2YWx1YXRlXCIgZGVsaW1pdGVycy4gRGF0YVxuICAgICAqIHByb3BlcnRpZXMgbWF5IGJlIGFjY2Vzc2VkIGFzIGZyZWUgdmFyaWFibGVzIGluIHRoZSB0ZW1wbGF0ZS4gSWYgYSBzZXR0aW5nXG4gICAgICogb2JqZWN0IGlzIGdpdmVuLCBpdCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgYF8udGVtcGxhdGVTZXR0aW5nc2AgdmFsdWVzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIEluIHRoZSBkZXZlbG9wbWVudCBidWlsZCBgXy50ZW1wbGF0ZWAgdXRpbGl6ZXNcbiAgICAgKiBbc291cmNlVVJMc10oaHR0cDovL3d3dy5odG1sNXJvY2tzLmNvbS9lbi90dXRvcmlhbHMvZGV2ZWxvcGVydG9vbHMvc291cmNlbWFwcy8jdG9jLXNvdXJjZXVybClcbiAgICAgKiBmb3IgZWFzaWVyIGRlYnVnZ2luZy5cbiAgICAgKlxuICAgICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHByZWNvbXBpbGluZyB0ZW1wbGF0ZXMgc2VlXG4gICAgICogW2xvZGFzaCdzIGN1c3RvbSBidWlsZHMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9sb2Rhc2guY29tL2N1c3RvbS1idWlsZHMpLlxuICAgICAqXG4gICAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gQ2hyb21lIGV4dGVuc2lvbiBzYW5kYm94ZXMgc2VlXG4gICAgICogW0Nocm9tZSdzIGV4dGVuc2lvbnMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3NhbmRib3hpbmdFdmFsKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHRlbXBsYXRlIHN0cmluZy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cH0gW29wdGlvbnMuZXNjYXBlPV8udGVtcGxhdGVTZXR0aW5ncy5lc2NhcGVdXG4gICAgICogIFRoZSBIVE1MIFwiZXNjYXBlXCIgZGVsaW1pdGVyLlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfSBbb3B0aW9ucy5ldmFsdWF0ZT1fLnRlbXBsYXRlU2V0dGluZ3MuZXZhbHVhdGVdXG4gICAgICogIFRoZSBcImV2YWx1YXRlXCIgZGVsaW1pdGVyLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucy5pbXBvcnRzPV8udGVtcGxhdGVTZXR0aW5ncy5pbXBvcnRzXVxuICAgICAqICBBbiBvYmplY3QgdG8gaW1wb3J0IGludG8gdGhlIHRlbXBsYXRlIGFzIGZyZWUgdmFyaWFibGVzLlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfSBbb3B0aW9ucy5pbnRlcnBvbGF0ZT1fLnRlbXBsYXRlU2V0dGluZ3MuaW50ZXJwb2xhdGVdXG4gICAgICogIFRoZSBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5zb3VyY2VVUkw9J2xvZGFzaC50ZW1wbGF0ZVNvdXJjZXNbbl0nXVxuICAgICAqICBUaGUgc291cmNlVVJMIG9mIHRoZSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudmFyaWFibGU9J29iaiddXG4gICAgICogIFRoZSBkYXRhIG9iamVjdCB2YXJpYWJsZSBuYW1lLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBjb21waWxlZCB0ZW1wbGF0ZSBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyIHRvIGNyZWF0ZSBhIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hlbGxvIDwlPSB1c2VyICU+IScpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3VzZXInOiAnZnJlZCcgfSk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGZyZWQhJ1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBIVE1MIFwiZXNjYXBlXCIgZGVsaW1pdGVyIHRvIGVzY2FwZSBkYXRhIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCc8Yj48JS0gdmFsdWUgJT48L2I+Jyk7XG4gICAgICogY29tcGlsZWQoeyAndmFsdWUnOiAnPHNjcmlwdD4nIH0pO1xuICAgICAqIC8vID0+ICc8Yj4mbHQ7c2NyaXB0Jmd0OzwvYj4nXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIFwiZXZhbHVhdGVcIiBkZWxpbWl0ZXIgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0IGFuZCBnZW5lcmF0ZSBIVE1MLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzwlIF8uZm9yRWFjaCh1c2VycywgZnVuY3Rpb24odXNlcikgeyAlPjxsaT48JS0gdXNlciAlPjwvbGk+PCUgfSk7ICU+Jyk7XG4gICAgICogY29tcGlsZWQoeyAndXNlcnMnOiBbJ2ZyZWQnLCAnYmFybmV5J10gfSk7XG4gICAgICogLy8gPT4gJzxsaT5mcmVkPC9saT48bGk+YmFybmV5PC9saT4nXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGludGVybmFsIGBwcmludGAgZnVuY3Rpb24gaW4gXCJldmFsdWF0ZVwiIGRlbGltaXRlcnMuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPCUgcHJpbnQoXCJoZWxsbyBcIiArIHVzZXIpOyAlPiEnKTtcbiAgICAgKiBjb21waWxlZCh7ICd1c2VyJzogJ2Jhcm5leScgfSk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGJhcm5leSEnXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIEVTIHRlbXBsYXRlIGxpdGVyYWwgZGVsaW1pdGVyIGFzIGFuIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIuXG4gICAgICogLy8gRGlzYWJsZSBzdXBwb3J0IGJ5IHJlcGxhY2luZyB0aGUgXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlci5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyAkeyB1c2VyIH0hJyk7XG4gICAgICogY29tcGlsZWQoeyAndXNlcic6ICdwZWJibGVzJyB9KTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gcGViYmxlcyEnXG4gICAgICpcbiAgICAgKiAvLyBVc2UgYmFja3NsYXNoZXMgdG8gdHJlYXQgZGVsaW1pdGVycyBhcyBwbGFpbiB0ZXh0LlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzwlPSBcIlxcXFw8JS0gdmFsdWUgJVxcXFw+XCIgJT4nKTtcbiAgICAgKiBjb21waWxlZCh7ICd2YWx1ZSc6ICdpZ25vcmVkJyB9KTtcbiAgICAgKiAvLyA9PiAnPCUtIHZhbHVlICU+J1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBgaW1wb3J0c2Agb3B0aW9uIHRvIGltcG9ydCBgalF1ZXJ5YCBhcyBganFgLlxuICAgICAqIHZhciB0ZXh0ID0gJzwlIGpxLmVhY2godXNlcnMsIGZ1bmN0aW9uKHVzZXIpIHsgJT48bGk+PCUtIHVzZXIgJT48L2xpPjwlIH0pOyAlPic7XG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSh0ZXh0LCB7ICdpbXBvcnRzJzogeyAnanEnOiBqUXVlcnkgfSB9KTtcbiAgICAgKiBjb21waWxlZCh7ICd1c2Vycyc6IFsnZnJlZCcsICdiYXJuZXknXSB9KTtcbiAgICAgKiAvLyA9PiAnPGxpPmZyZWQ8L2xpPjxsaT5iYXJuZXk8L2xpPidcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgYHNvdXJjZVVSTGAgb3B0aW9uIHRvIHNwZWNpZnkgYSBjdXN0b20gc291cmNlVVJMIGZvciB0aGUgdGVtcGxhdGUuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGVsbG8gPCU9IHVzZXIgJT4hJywgeyAnc291cmNlVVJMJzogJy9iYXNpYy9ncmVldGluZy5qc3QnIH0pO1xuICAgICAqIGNvbXBpbGVkKGRhdGEpO1xuICAgICAqIC8vID0+IEZpbmQgdGhlIHNvdXJjZSBvZiBcImdyZWV0aW5nLmpzdFwiIHVuZGVyIHRoZSBTb3VyY2VzIHRhYiBvciBSZXNvdXJjZXMgcGFuZWwgb2YgdGhlIHdlYiBpbnNwZWN0b3IuXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGB2YXJpYWJsZWAgb3B0aW9uIHRvIGVuc3VyZSBhIHdpdGgtc3RhdGVtZW50IGlzbid0IHVzZWQgaW4gdGhlIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hpIDwlPSBkYXRhLnVzZXIgJT4hJywgeyAndmFyaWFibGUnOiAnZGF0YScgfSk7XG4gICAgICogY29tcGlsZWQuc291cmNlO1xuICAgICAqIC8vID0+IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgKiAvLyAgIHZhciBfX3QsIF9fcCA9ICcnO1xuICAgICAqIC8vICAgX19wICs9ICdoaSAnICsgKChfX3QgPSAoIGRhdGEudXNlciApKSA9PSBudWxsID8gJycgOiBfX3QpICsgJyEnO1xuICAgICAqIC8vICAgcmV0dXJuIF9fcDtcbiAgICAgKiAvLyB9XG4gICAgICpcbiAgICAgKiAvLyBVc2UgY3VzdG9tIHRlbXBsYXRlIGRlbGltaXRlcnMuXG4gICAgICogXy50ZW1wbGF0ZVNldHRpbmdzLmludGVycG9sYXRlID0gL3t7KFtcXHNcXFNdKz8pfX0vZztcbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyB7eyB1c2VyIH19IScpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3VzZXInOiAnbXVzdGFjaGUnIH0pO1xuICAgICAqIC8vID0+ICdoZWxsbyBtdXN0YWNoZSEnXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGBzb3VyY2VgIHByb3BlcnR5IHRvIGlubGluZSBjb21waWxlZCB0ZW1wbGF0ZXMgZm9yIG1lYW5pbmdmdWxcbiAgICAgKiAvLyBsaW5lIG51bWJlcnMgaW4gZXJyb3IgbWVzc2FnZXMgYW5kIHN0YWNrIHRyYWNlcy5cbiAgICAgKiBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAnanN0LmpzJyksICdcXFxuICAgICAqICAgdmFyIEpTVCA9IHtcXFxuICAgICAqICAgICBcIm1haW5cIjogJyArIF8udGVtcGxhdGUobWFpblRleHQpLnNvdXJjZSArICdcXFxuICAgICAqICAgfTtcXFxuICAgICAqICcpO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRlbXBsYXRlKHN0cmluZywgb3B0aW9ucywgZ3VhcmQpIHtcbiAgICAgIC8vIEJhc2VkIG9uIEpvaG4gUmVzaWcncyBgdG1wbGAgaW1wbGVtZW50YXRpb25cbiAgICAgIC8vIChodHRwOi8vZWpvaG4ub3JnL2Jsb2cvamF2YXNjcmlwdC1taWNyby10ZW1wbGF0aW5nLylcbiAgICAgIC8vIGFuZCBMYXVyYSBEb2t0b3JvdmEncyBkb1QuanMgKGh0dHBzOi8vZ2l0aHViLmNvbS9vbGFkby9kb1QpLlxuICAgICAgdmFyIHNldHRpbmdzID0gbG9kYXNoLnRlbXBsYXRlU2V0dGluZ3M7XG5cbiAgICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzdHJpbmcsIG9wdGlvbnMsIGd1YXJkKSkge1xuICAgICAgICBvcHRpb25zID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIG9wdGlvbnMgPSBhc3NpZ25JbldpdGgoe30sIG9wdGlvbnMsIHNldHRpbmdzLCBjdXN0b21EZWZhdWx0c0Fzc2lnbkluKTtcblxuICAgICAgdmFyIGltcG9ydHMgPSBhc3NpZ25JbldpdGgoe30sIG9wdGlvbnMuaW1wb3J0cywgc2V0dGluZ3MuaW1wb3J0cywgY3VzdG9tRGVmYXVsdHNBc3NpZ25JbiksXG4gICAgICAgICAgaW1wb3J0c0tleXMgPSBrZXlzKGltcG9ydHMpLFxuICAgICAgICAgIGltcG9ydHNWYWx1ZXMgPSBiYXNlVmFsdWVzKGltcG9ydHMsIGltcG9ydHNLZXlzKTtcblxuICAgICAgdmFyIGlzRXNjYXBpbmcsXG4gICAgICAgICAgaXNFdmFsdWF0aW5nLFxuICAgICAgICAgIGluZGV4ID0gMCxcbiAgICAgICAgICBpbnRlcnBvbGF0ZSA9IG9wdGlvbnMuaW50ZXJwb2xhdGUgfHwgcmVOb01hdGNoLFxuICAgICAgICAgIHNvdXJjZSA9IFwiX19wICs9ICdcIjtcblxuICAgICAgLy8gQ29tcGlsZSB0aGUgcmVnZXhwIHRvIG1hdGNoIGVhY2ggZGVsaW1pdGVyLlxuICAgICAgdmFyIHJlRGVsaW1pdGVycyA9IFJlZ0V4cChcbiAgICAgICAgKG9wdGlvbnMuZXNjYXBlIHx8IHJlTm9NYXRjaCkuc291cmNlICsgJ3wnICtcbiAgICAgICAgaW50ZXJwb2xhdGUuc291cmNlICsgJ3wnICtcbiAgICAgICAgKGludGVycG9sYXRlID09PSByZUludGVycG9sYXRlID8gcmVFc1RlbXBsYXRlIDogcmVOb01hdGNoKS5zb3VyY2UgKyAnfCcgK1xuICAgICAgICAob3B0aW9ucy5ldmFsdWF0ZSB8fCByZU5vTWF0Y2gpLnNvdXJjZSArICd8JCdcbiAgICAgICwgJ2cnKTtcblxuICAgICAgLy8gVXNlIGEgc291cmNlVVJMIGZvciBlYXNpZXIgZGVidWdnaW5nLlxuICAgICAgLy8gVGhlIHNvdXJjZVVSTCBnZXRzIGluamVjdGVkIGludG8gdGhlIHNvdXJjZSB0aGF0J3MgZXZhbC1lZCwgc28gYmUgY2FyZWZ1bFxuICAgICAgLy8gdG8gbm9ybWFsaXplIGFsbCBraW5kcyBvZiB3aGl0ZXNwYWNlLCBzbyBlLmcuIG5ld2xpbmVzIChhbmQgdW5pY29kZSB2ZXJzaW9ucyBvZiBpdCkgY2FuJ3Qgc25lYWsgaW5cbiAgICAgIC8vIGFuZCBlc2NhcGUgdGhlIGNvbW1lbnQsIHRodXMgaW5qZWN0aW5nIGNvZGUgdGhhdCBnZXRzIGV2YWxlZC5cbiAgICAgIHZhciBzb3VyY2VVUkwgPSAnLy8jIHNvdXJjZVVSTD0nICtcbiAgICAgICAgKGhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywgJ3NvdXJjZVVSTCcpXG4gICAgICAgICAgPyAob3B0aW9ucy5zb3VyY2VVUkwgKyAnJykucmVwbGFjZSgvXFxzL2csICcgJylcbiAgICAgICAgICA6ICgnbG9kYXNoLnRlbXBsYXRlU291cmNlc1snICsgKCsrdGVtcGxhdGVDb3VudGVyKSArICddJylcbiAgICAgICAgKSArICdcXG4nO1xuXG4gICAgICBzdHJpbmcucmVwbGFjZShyZURlbGltaXRlcnMsIGZ1bmN0aW9uKG1hdGNoLCBlc2NhcGVWYWx1ZSwgaW50ZXJwb2xhdGVWYWx1ZSwgZXNUZW1wbGF0ZVZhbHVlLCBldmFsdWF0ZVZhbHVlLCBvZmZzZXQpIHtcbiAgICAgICAgaW50ZXJwb2xhdGVWYWx1ZSB8fCAoaW50ZXJwb2xhdGVWYWx1ZSA9IGVzVGVtcGxhdGVWYWx1ZSk7XG5cbiAgICAgICAgLy8gRXNjYXBlIGNoYXJhY3RlcnMgdGhhdCBjYW4ndCBiZSBpbmNsdWRlZCBpbiBzdHJpbmcgbGl0ZXJhbHMuXG4gICAgICAgIHNvdXJjZSArPSBzdHJpbmcuc2xpY2UoaW5kZXgsIG9mZnNldCkucmVwbGFjZShyZVVuZXNjYXBlZFN0cmluZywgZXNjYXBlU3RyaW5nQ2hhcik7XG5cbiAgICAgICAgLy8gUmVwbGFjZSBkZWxpbWl0ZXJzIHdpdGggc25pcHBldHMuXG4gICAgICAgIGlmIChlc2NhcGVWYWx1ZSkge1xuICAgICAgICAgIGlzRXNjYXBpbmcgPSB0cnVlO1xuICAgICAgICAgIHNvdXJjZSArPSBcIicgK1xcbl9fZShcIiArIGVzY2FwZVZhbHVlICsgXCIpICtcXG4nXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2YWx1YXRlVmFsdWUpIHtcbiAgICAgICAgICBpc0V2YWx1YXRpbmcgPSB0cnVlO1xuICAgICAgICAgIHNvdXJjZSArPSBcIic7XFxuXCIgKyBldmFsdWF0ZVZhbHVlICsgXCI7XFxuX19wICs9ICdcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW50ZXJwb2xhdGVWYWx1ZSkge1xuICAgICAgICAgIHNvdXJjZSArPSBcIicgK1xcbigoX190ID0gKFwiICsgaW50ZXJwb2xhdGVWYWx1ZSArIFwiKSkgPT0gbnVsbCA/ICcnIDogX190KSArXFxuJ1wiO1xuICAgICAgICB9XG4gICAgICAgIGluZGV4ID0gb2Zmc2V0ICsgbWF0Y2gubGVuZ3RoO1xuXG4gICAgICAgIC8vIFRoZSBKUyBlbmdpbmUgZW1iZWRkZWQgaW4gQWRvYmUgcHJvZHVjdHMgbmVlZHMgYG1hdGNoYCByZXR1cm5lZCBpblxuICAgICAgICAvLyBvcmRlciB0byBwcm9kdWNlIHRoZSBjb3JyZWN0IGBvZmZzZXRgIHZhbHVlLlxuICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICB9KTtcblxuICAgICAgc291cmNlICs9IFwiJztcXG5cIjtcblxuICAgICAgLy8gSWYgYHZhcmlhYmxlYCBpcyBub3Qgc3BlY2lmaWVkIHdyYXAgYSB3aXRoLXN0YXRlbWVudCBhcm91bmQgdGhlIGdlbmVyYXRlZFxuICAgICAgLy8gY29kZSB0byBhZGQgdGhlIGRhdGEgb2JqZWN0IHRvIHRoZSB0b3Agb2YgdGhlIHNjb3BlIGNoYWluLlxuICAgICAgdmFyIHZhcmlhYmxlID0gaGFzT3duUHJvcGVydHkuY2FsbChvcHRpb25zLCAndmFyaWFibGUnKSAmJiBvcHRpb25zLnZhcmlhYmxlO1xuICAgICAgaWYgKCF2YXJpYWJsZSkge1xuICAgICAgICBzb3VyY2UgPSAnd2l0aCAob2JqKSB7XFxuJyArIHNvdXJjZSArICdcXG59XFxuJztcbiAgICAgIH1cbiAgICAgIC8vIENsZWFudXAgY29kZSBieSBzdHJpcHBpbmcgZW1wdHkgc3RyaW5ncy5cbiAgICAgIHNvdXJjZSA9IChpc0V2YWx1YXRpbmcgPyBzb3VyY2UucmVwbGFjZShyZUVtcHR5U3RyaW5nTGVhZGluZywgJycpIDogc291cmNlKVxuICAgICAgICAucmVwbGFjZShyZUVtcHR5U3RyaW5nTWlkZGxlLCAnJDEnKVxuICAgICAgICAucmVwbGFjZShyZUVtcHR5U3RyaW5nVHJhaWxpbmcsICckMTsnKTtcblxuICAgICAgLy8gRnJhbWUgY29kZSBhcyB0aGUgZnVuY3Rpb24gYm9keS5cbiAgICAgIHNvdXJjZSA9ICdmdW5jdGlvbignICsgKHZhcmlhYmxlIHx8ICdvYmonKSArICcpIHtcXG4nICtcbiAgICAgICAgKHZhcmlhYmxlXG4gICAgICAgICAgPyAnJ1xuICAgICAgICAgIDogJ29iaiB8fCAob2JqID0ge30pO1xcbidcbiAgICAgICAgKSArXG4gICAgICAgIFwidmFyIF9fdCwgX19wID0gJydcIiArXG4gICAgICAgIChpc0VzY2FwaW5nXG4gICAgICAgICAgID8gJywgX19lID0gXy5lc2NhcGUnXG4gICAgICAgICAgIDogJydcbiAgICAgICAgKSArXG4gICAgICAgIChpc0V2YWx1YXRpbmdcbiAgICAgICAgICA/ICcsIF9faiA9IEFycmF5LnByb3RvdHlwZS5qb2luO1xcbicgK1xuICAgICAgICAgICAgXCJmdW5jdGlvbiBwcmludCgpIHsgX19wICs9IF9fai5jYWxsKGFyZ3VtZW50cywgJycpIH1cXG5cIlxuICAgICAgICAgIDogJztcXG4nXG4gICAgICAgICkgK1xuICAgICAgICBzb3VyY2UgK1xuICAgICAgICAncmV0dXJuIF9fcFxcbn0nO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gYXR0ZW1wdChmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEZ1bmN0aW9uKGltcG9ydHNLZXlzLCBzb3VyY2VVUkwgKyAncmV0dXJuICcgKyBzb3VyY2UpXG4gICAgICAgICAgLmFwcGx5KHVuZGVmaW5lZCwgaW1wb3J0c1ZhbHVlcyk7XG4gICAgICB9KTtcblxuICAgICAgLy8gUHJvdmlkZSB0aGUgY29tcGlsZWQgZnVuY3Rpb24ncyBzb3VyY2UgYnkgaXRzIGB0b1N0cmluZ2AgbWV0aG9kIG9yXG4gICAgICAvLyB0aGUgYHNvdXJjZWAgcHJvcGVydHkgYXMgYSBjb252ZW5pZW5jZSBmb3IgaW5saW5pbmcgY29tcGlsZWQgdGVtcGxhdGVzLlxuICAgICAgcmVzdWx0LnNvdXJjZSA9IHNvdXJjZTtcbiAgICAgIGlmIChpc0Vycm9yKHJlc3VsdCkpIHtcbiAgICAgICAgdGhyb3cgcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCwgYXMgYSB3aG9sZSwgdG8gbG93ZXIgY2FzZSBqdXN0IGxpa2VcbiAgICAgKiBbU3RyaW5nI3RvTG93ZXJDYXNlXShodHRwczovL21kbi5pby90b0xvd2VyQ2FzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBsb3dlciBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9Mb3dlcignLS1Gb28tQmFyLS0nKTtcbiAgICAgKiAvLyA9PiAnLS1mb28tYmFyLS0nXG4gICAgICpcbiAgICAgKiBfLnRvTG93ZXIoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdmb29iYXInXG4gICAgICpcbiAgICAgKiBfLnRvTG93ZXIoJ19fRk9PX0JBUl9fJyk7XG4gICAgICogLy8gPT4gJ19fZm9vX2Jhcl9fJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvTG93ZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiB0b1N0cmluZyh2YWx1ZSkudG9Mb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCwgYXMgYSB3aG9sZSwgdG8gdXBwZXIgY2FzZSBqdXN0IGxpa2VcbiAgICAgKiBbU3RyaW5nI3RvVXBwZXJDYXNlXShodHRwczovL21kbi5pby90b1VwcGVyQ2FzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB1cHBlciBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9VcHBlcignLS1mb28tYmFyLS0nKTtcbiAgICAgKiAvLyA9PiAnLS1GT08tQkFSLS0nXG4gICAgICpcbiAgICAgKiBfLnRvVXBwZXIoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdGT09CQVInXG4gICAgICpcbiAgICAgKiBfLnRvVXBwZXIoJ19fZm9vX2Jhcl9fJyk7XG4gICAgICogLy8gPT4gJ19fRk9PX0JBUl9fJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvVXBwZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiB0b1N0cmluZyh2YWx1ZSkudG9VcHBlckNhc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb3Igc3BlY2lmaWVkIGNoYXJhY3RlcnMgZnJvbSBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cmltLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9d2hpdGVzcGFjZV0gVGhlIGNoYXJhY3RlcnMgdG8gdHJpbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyaW0oJyAgYWJjICAnKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqXG4gICAgICogXy50cmltKCctXy1hYmMtXy0nLCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqXG4gICAgICogXy5tYXAoWycgIGZvbyAgJywgJyAgYmFyICAnXSwgXy50cmltKTtcbiAgICAgKiAvLyA9PiBbJ2ZvbycsICdiYXInXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRyaW0oc3RyaW5nLCBjaGFycywgZ3VhcmQpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBpZiAoc3RyaW5nICYmIChndWFyZCB8fCBjaGFycyA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UocmVUcmltLCAnJyk7XG4gICAgICB9XG4gICAgICBpZiAoIXN0cmluZyB8fCAhKGNoYXJzID0gYmFzZVRvU3RyaW5nKGNoYXJzKSkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgIH1cbiAgICAgIHZhciBzdHJTeW1ib2xzID0gc3RyaW5nVG9BcnJheShzdHJpbmcpLFxuICAgICAgICAgIGNoclN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KGNoYXJzKSxcbiAgICAgICAgICBzdGFydCA9IGNoYXJzU3RhcnRJbmRleChzdHJTeW1ib2xzLCBjaHJTeW1ib2xzKSxcbiAgICAgICAgICBlbmQgPSBjaGFyc0VuZEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpICsgMTtcblxuICAgICAgcmV0dXJuIGNhc3RTbGljZShzdHJTeW1ib2xzLCBzdGFydCwgZW5kKS5qb2luKCcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb3Igc3BlY2lmaWVkIGNoYXJhY3RlcnMgZnJvbSBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cmltLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9d2hpdGVzcGFjZV0gVGhlIGNoYXJhY3RlcnMgdG8gdHJpbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyaW1FbmQoJyAgYWJjICAnKTtcbiAgICAgKiAvLyA9PiAnICBhYmMnXG4gICAgICpcbiAgICAgKiBfLnRyaW1FbmQoJy1fLWFiYy1fLScsICdfLScpO1xuICAgICAqIC8vID0+ICctXy1hYmMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJpbUVuZChzdHJpbmcsIGNoYXJzLCBndWFyZCkge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGlmIChzdHJpbmcgJiYgKGd1YXJkIHx8IGNoYXJzID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZShyZVRyaW1FbmQsICcnKTtcbiAgICAgIH1cbiAgICAgIGlmICghc3RyaW5nIHx8ICEoY2hhcnMgPSBiYXNlVG9TdHJpbmcoY2hhcnMpKSkge1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgICAgfVxuICAgICAgdmFyIHN0clN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KHN0cmluZyksXG4gICAgICAgICAgZW5kID0gY2hhcnNFbmRJbmRleChzdHJTeW1ib2xzLCBzdHJpbmdUb0FycmF5KGNoYXJzKSkgKyAxO1xuXG4gICAgICByZXR1cm4gY2FzdFNsaWNlKHN0clN5bWJvbHMsIDAsIGVuZCkuam9pbignJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBsZWFkaW5nIHdoaXRlc3BhY2Ugb3Igc3BlY2lmaWVkIGNoYXJhY3RlcnMgZnJvbSBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cmltLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9d2hpdGVzcGFjZV0gVGhlIGNoYXJhY3RlcnMgdG8gdHJpbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyaW1TdGFydCgnICBhYmMgICcpO1xuICAgICAqIC8vID0+ICdhYmMgICdcbiAgICAgKlxuICAgICAqIF8udHJpbVN0YXJ0KCctXy1hYmMtXy0nLCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnYWJjLV8tJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRyaW1TdGFydChzdHJpbmcsIGNoYXJzLCBndWFyZCkge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGlmIChzdHJpbmcgJiYgKGd1YXJkIHx8IGNoYXJzID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZShyZVRyaW1TdGFydCwgJycpO1xuICAgICAgfVxuICAgICAgaWYgKCFzdHJpbmcgfHwgIShjaGFycyA9IGJhc2VUb1N0cmluZyhjaGFycykpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICB9XG4gICAgICB2YXIgc3RyU3ltYm9scyA9IHN0cmluZ1RvQXJyYXkoc3RyaW5nKSxcbiAgICAgICAgICBzdGFydCA9IGNoYXJzU3RhcnRJbmRleChzdHJTeW1ib2xzLCBzdHJpbmdUb0FycmF5KGNoYXJzKSk7XG5cbiAgICAgIHJldHVybiBjYXN0U2xpY2Uoc3RyU3ltYm9scywgc3RhcnQpLmpvaW4oJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRydW5jYXRlcyBgc3RyaW5nYCBpZiBpdCdzIGxvbmdlciB0aGFuIHRoZSBnaXZlbiBtYXhpbXVtIHN0cmluZyBsZW5ndGguXG4gICAgICogVGhlIGxhc3QgY2hhcmFjdGVycyBvZiB0aGUgdHJ1bmNhdGVkIHN0cmluZyBhcmUgcmVwbGFjZWQgd2l0aCB0aGUgb21pc3Npb25cbiAgICAgKiBzdHJpbmcgd2hpY2ggZGVmYXVsdHMgdG8gXCIuLi5cIi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cnVuY2F0ZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubGVuZ3RoPTMwXSBUaGUgbWF4aW11bSBzdHJpbmcgbGVuZ3RoLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5vbWlzc2lvbj0nLi4uJ10gVGhlIHN0cmluZyB0byBpbmRpY2F0ZSB0ZXh0IGlzIG9taXR0ZWQuXG4gICAgICogQHBhcmFtIHtSZWdFeHB8c3RyaW5nfSBbb3B0aW9ucy5zZXBhcmF0b3JdIFRoZSBzZXBhcmF0b3IgcGF0dGVybiB0byB0cnVuY2F0ZSB0by5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB0cnVuY2F0ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRydW5jYXRlKCdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWdoYm9yaW5vJyk7XG4gICAgICogLy8gPT4gJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hiby4uLidcbiAgICAgKlxuICAgICAqIF8udHJ1bmNhdGUoJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hib3Jpbm8nLCB7XG4gICAgICogICAnbGVuZ3RoJzogMjQsXG4gICAgICogICAnc2VwYXJhdG9yJzogJyAnXG4gICAgICogfSk7XG4gICAgICogLy8gPT4gJ2hpLWRpZGRseS1obyB0aGVyZSwuLi4nXG4gICAgICpcbiAgICAgKiBfLnRydW5jYXRlKCdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWdoYm9yaW5vJywge1xuICAgICAqICAgJ2xlbmd0aCc6IDI0LFxuICAgICAqICAgJ3NlcGFyYXRvcic6IC8sPyArL1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+ICdoaS1kaWRkbHktaG8gdGhlcmUuLi4nXG4gICAgICpcbiAgICAgKiBfLnRydW5jYXRlKCdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWdoYm9yaW5vJywge1xuICAgICAqICAgJ29taXNzaW9uJzogJyBbLi4uXSdcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiAnaGktZGlkZGx5LWhvIHRoZXJlLCBuZWlnIFsuLi5dJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRydW5jYXRlKHN0cmluZywgb3B0aW9ucykge1xuICAgICAgdmFyIGxlbmd0aCA9IERFRkFVTFRfVFJVTkNfTEVOR1RILFxuICAgICAgICAgIG9taXNzaW9uID0gREVGQVVMVF9UUlVOQ19PTUlTU0lPTjtcblxuICAgICAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgIHZhciBzZXBhcmF0b3IgPSAnc2VwYXJhdG9yJyBpbiBvcHRpb25zID8gb3B0aW9ucy5zZXBhcmF0b3IgOiBzZXBhcmF0b3I7XG4gICAgICAgIGxlbmd0aCA9ICdsZW5ndGgnIGluIG9wdGlvbnMgPyB0b0ludGVnZXIob3B0aW9ucy5sZW5ndGgpIDogbGVuZ3RoO1xuICAgICAgICBvbWlzc2lvbiA9ICdvbWlzc2lvbicgaW4gb3B0aW9ucyA/IGJhc2VUb1N0cmluZyhvcHRpb25zLm9taXNzaW9uKSA6IG9taXNzaW9uO1xuICAgICAgfVxuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcblxuICAgICAgdmFyIHN0ckxlbmd0aCA9IHN0cmluZy5sZW5ndGg7XG4gICAgICBpZiAoaGFzVW5pY29kZShzdHJpbmcpKSB7XG4gICAgICAgIHZhciBzdHJTeW1ib2xzID0gc3RyaW5nVG9BcnJheShzdHJpbmcpO1xuICAgICAgICBzdHJMZW5ndGggPSBzdHJTeW1ib2xzLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGlmIChsZW5ndGggPj0gc3RyTGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICB9XG4gICAgICB2YXIgZW5kID0gbGVuZ3RoIC0gc3RyaW5nU2l6ZShvbWlzc2lvbik7XG4gICAgICBpZiAoZW5kIDwgMSkge1xuICAgICAgICByZXR1cm4gb21pc3Npb247XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gc3RyU3ltYm9sc1xuICAgICAgICA/IGNhc3RTbGljZShzdHJTeW1ib2xzLCAwLCBlbmQpLmpvaW4oJycpXG4gICAgICAgIDogc3RyaW5nLnNsaWNlKDAsIGVuZCk7XG5cbiAgICAgIGlmIChzZXBhcmF0b3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0ICsgb21pc3Npb247XG4gICAgICB9XG4gICAgICBpZiAoc3RyU3ltYm9scykge1xuICAgICAgICBlbmQgKz0gKHJlc3VsdC5sZW5ndGggLSBlbmQpO1xuICAgICAgfVxuICAgICAgaWYgKGlzUmVnRXhwKHNlcGFyYXRvcikpIHtcbiAgICAgICAgaWYgKHN0cmluZy5zbGljZShlbmQpLnNlYXJjaChzZXBhcmF0b3IpKSB7XG4gICAgICAgICAgdmFyIG1hdGNoLFxuICAgICAgICAgICAgICBzdWJzdHJpbmcgPSByZXN1bHQ7XG5cbiAgICAgICAgICBpZiAoIXNlcGFyYXRvci5nbG9iYWwpIHtcbiAgICAgICAgICAgIHNlcGFyYXRvciA9IFJlZ0V4cChzZXBhcmF0b3Iuc291cmNlLCB0b1N0cmluZyhyZUZsYWdzLmV4ZWMoc2VwYXJhdG9yKSkgKyAnZycpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXBhcmF0b3IubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICB3aGlsZSAoKG1hdGNoID0gc2VwYXJhdG9yLmV4ZWMoc3Vic3RyaW5nKSkpIHtcbiAgICAgICAgICAgIHZhciBuZXdFbmQgPSBtYXRjaC5pbmRleDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKDAsIG5ld0VuZCA9PT0gdW5kZWZpbmVkID8gZW5kIDogbmV3RW5kKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzdHJpbmcuaW5kZXhPZihiYXNlVG9TdHJpbmcoc2VwYXJhdG9yKSwgZW5kKSAhPSBlbmQpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gcmVzdWx0Lmxhc3RJbmRleE9mKHNlcGFyYXRvcik7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKDAsIGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdCArIG9taXNzaW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBpbnZlcnNlIG9mIGBfLmVzY2FwZWA7IHRoaXMgbWV0aG9kIGNvbnZlcnRzIHRoZSBIVE1MIGVudGl0aWVzXG4gICAgICogYCZhbXA7YCwgYCZsdDtgLCBgJmd0O2AsIGAmcXVvdDtgLCBhbmQgYCYjMzk7YCBpbiBgc3RyaW5nYCB0b1xuICAgICAqIHRoZWlyIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBObyBvdGhlciBIVE1MIGVudGl0aWVzIGFyZSB1bmVzY2FwZWQuIFRvIHVuZXNjYXBlIGFkZGl0aW9uYWxcbiAgICAgKiBIVE1MIGVudGl0aWVzIHVzZSBhIHRoaXJkLXBhcnR5IGxpYnJhcnkgbGlrZSBbX2hlX10oaHR0cHM6Ly9tdGhzLmJlL2hlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjYuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB1bmVzY2FwZS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB1bmVzY2FwZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuZXNjYXBlKCdmcmVkLCBiYXJuZXksICZhbXA7IHBlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiAnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gdW5lc2NhcGUoc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcmV0dXJuIChzdHJpbmcgJiYgcmVIYXNFc2NhcGVkSHRtbC50ZXN0KHN0cmluZykpXG4gICAgICAgID8gc3RyaW5nLnJlcGxhY2UocmVFc2NhcGVkSHRtbCwgdW5lc2NhcGVIdG1sQ2hhcilcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AsIGFzIHNwYWNlIHNlcGFyYXRlZCB3b3JkcywgdG8gdXBwZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVwcGVyIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51cHBlckNhc2UoJy0tZm9vLWJhcicpO1xuICAgICAqIC8vID0+ICdGT08gQkFSJ1xuICAgICAqXG4gICAgICogXy51cHBlckNhc2UoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdGT08gQkFSJ1xuICAgICAqXG4gICAgICogXy51cHBlckNhc2UoJ19fZm9vX2Jhcl9fJyk7XG4gICAgICogLy8gPT4gJ0ZPTyBCQVInXG4gICAgICovXG4gICAgdmFyIHVwcGVyQ2FzZSA9IGNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LCB3b3JkLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHJlc3VsdCArIChpbmRleCA/ICcgJyA6ICcnKSArIHdvcmQudG9VcHBlckNhc2UoKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYHN0cmluZ2AgdG8gdXBwZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udXBwZXJGaXJzdCgnZnJlZCcpO1xuICAgICAqIC8vID0+ICdGcmVkJ1xuICAgICAqXG4gICAgICogXy51cHBlckZpcnN0KCdGUkVEJyk7XG4gICAgICogLy8gPT4gJ0ZSRUQnXG4gICAgICovXG4gICAgdmFyIHVwcGVyRmlyc3QgPSBjcmVhdGVDYXNlRmlyc3QoJ3RvVXBwZXJDYXNlJyk7XG5cbiAgICAvKipcbiAgICAgKiBTcGxpdHMgYHN0cmluZ2AgaW50byBhbiBhcnJheSBvZiBpdHMgd29yZHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IFtwYXR0ZXJuXSBUaGUgcGF0dGVybiB0byBtYXRjaCB3b3Jkcy5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgd29yZHMgb2YgYHN0cmluZ2AuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ud29yZHMoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJyk7XG4gICAgICogLy8gPT4gWydmcmVkJywgJ2Jhcm5leScsICdwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIF8ud29yZHMoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJywgL1teLCBdKy9nKTtcbiAgICAgKiAvLyA9PiBbJ2ZyZWQnLCAnYmFybmV5JywgJyYnLCAncGViYmxlcyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gd29yZHMoc3RyaW5nLCBwYXR0ZXJuLCBndWFyZCkge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHBhdHRlcm4gPSBndWFyZCA/IHVuZGVmaW5lZCA6IHBhdHRlcm47XG5cbiAgICAgIGlmIChwYXR0ZXJuID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGhhc1VuaWNvZGVXb3JkKHN0cmluZykgPyB1bmljb2RlV29yZHMoc3RyaW5nKSA6IGFzY2lpV29yZHMoc3RyaW5nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHJpbmcubWF0Y2gocGF0dGVybikgfHwgW107XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQXR0ZW1wdHMgdG8gaW52b2tlIGBmdW5jYCwgcmV0dXJuaW5nIGVpdGhlciB0aGUgcmVzdWx0IG9yIHRoZSBjYXVnaHQgZXJyb3JcbiAgICAgKiBvYmplY3QuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQgdG8gYGZ1bmNgIHdoZW4gaXQncyBpbnZva2VkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhdHRlbXB0LlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBgZnVuY2AgcmVzdWx0IG9yIGVycm9yIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gQXZvaWQgdGhyb3dpbmcgZXJyb3JzIGZvciBpbnZhbGlkIHNlbGVjdG9ycy5cbiAgICAgKiB2YXIgZWxlbWVudHMgPSBfLmF0dGVtcHQoZnVuY3Rpb24oc2VsZWN0b3IpIHtcbiAgICAgKiAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTtcbiAgICAgKiB9LCAnPl8+Jyk7XG4gICAgICpcbiAgICAgKiBpZiAoXy5pc0Vycm9yKGVsZW1lbnRzKSkge1xuICAgICAqICAgZWxlbWVudHMgPSBbXTtcbiAgICAgKiB9XG4gICAgICovXG4gICAgdmFyIGF0dGVtcHQgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCBhcmdzKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXBwbHkoZnVuYywgdW5kZWZpbmVkLCBhcmdzKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGlzRXJyb3IoZSkgPyBlIDogbmV3IEVycm9yKGUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQmluZHMgbWV0aG9kcyBvZiBhbiBvYmplY3QgdG8gdGhlIG9iamVjdCBpdHNlbGYsIG92ZXJ3cml0aW5nIHRoZSBleGlzdGluZ1xuICAgICAqIG1ldGhvZC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBib3VuZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBiaW5kIGFuZCBhc3NpZ24gdGhlIGJvdW5kIG1ldGhvZHMgdG8uXG4gICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gbWV0aG9kTmFtZXMgVGhlIG9iamVjdCBtZXRob2QgbmFtZXMgdG8gYmluZC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdmlldyA9IHtcbiAgICAgKiAgICdsYWJlbCc6ICdkb2NzJyxcbiAgICAgKiAgICdjbGljayc6IGZ1bmN0aW9uKCkge1xuICAgICAqICAgICBjb25zb2xlLmxvZygnY2xpY2tlZCAnICsgdGhpcy5sYWJlbCk7XG4gICAgICogICB9XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIF8uYmluZEFsbCh2aWV3LCBbJ2NsaWNrJ10pO1xuICAgICAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCB2aWV3LmNsaWNrKTtcbiAgICAgKiAvLyA9PiBMb2dzICdjbGlja2VkIGRvY3MnIHdoZW4gY2xpY2tlZC5cbiAgICAgKi9cbiAgICB2YXIgYmluZEFsbCA9IGZsYXRSZXN0KGZ1bmN0aW9uKG9iamVjdCwgbWV0aG9kTmFtZXMpIHtcbiAgICAgIGFycmF5RWFjaChtZXRob2ROYW1lcywgZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIGtleSA9IHRvS2V5KGtleSk7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgYmluZChvYmplY3Rba2V5XSwgb2JqZWN0KSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpdGVyYXRlcyBvdmVyIGBwYWlyc2AgYW5kIGludm9rZXMgdGhlIGNvcnJlc3BvbmRpbmdcbiAgICAgKiBmdW5jdGlvbiBvZiB0aGUgZmlyc3QgcHJlZGljYXRlIHRvIHJldHVybiB0cnV0aHkuIFRoZSBwcmVkaWNhdGUtZnVuY3Rpb25cbiAgICAgKiBwYWlycyBhcmUgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBhbmQgYXJndW1lbnRzIG9mIHRoZSBjcmVhdGVkXG4gICAgICogZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhaXJzIFRoZSBwcmVkaWNhdGUtZnVuY3Rpb24gcGFpcnMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29tcG9zaXRlIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgZnVuYyA9IF8uY29uZChbXG4gICAgICogICBbXy5tYXRjaGVzKHsgJ2EnOiAxIH0pLCAgICAgICAgICAgXy5jb25zdGFudCgnbWF0Y2hlcyBBJyldLFxuICAgICAqICAgW18uY29uZm9ybXMoeyAnYic6IF8uaXNOdW1iZXIgfSksIF8uY29uc3RhbnQoJ21hdGNoZXMgQicpXSxcbiAgICAgKiAgIFtfLnN0dWJUcnVlLCAgICAgICAgICAgICAgICAgICAgICBfLmNvbnN0YW50KCdubyBtYXRjaCcpXVxuICAgICAqIF0pO1xuICAgICAqXG4gICAgICogZnVuYyh7ICdhJzogMSwgJ2InOiAyIH0pO1xuICAgICAqIC8vID0+ICdtYXRjaGVzIEEnXG4gICAgICpcbiAgICAgKiBmdW5jKHsgJ2EnOiAwLCAnYic6IDEgfSk7XG4gICAgICogLy8gPT4gJ21hdGNoZXMgQidcbiAgICAgKlxuICAgICAqIGZ1bmMoeyAnYSc6ICcxJywgJ2InOiAnMicgfSk7XG4gICAgICogLy8gPT4gJ25vIG1hdGNoJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbmQocGFpcnMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBwYWlycyA9PSBudWxsID8gMCA6IHBhaXJzLmxlbmd0aCxcbiAgICAgICAgICB0b0l0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUoKTtcblxuICAgICAgcGFpcnMgPSAhbGVuZ3RoID8gW10gOiBhcnJheU1hcChwYWlycywgZnVuY3Rpb24ocGFpcikge1xuICAgICAgICBpZiAodHlwZW9mIHBhaXJbMV0gIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3RvSXRlcmF0ZWUocGFpclswXSksIHBhaXJbMV1dO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgIHZhciBpbmRleCA9IC0xO1xuICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIHZhciBwYWlyID0gcGFpcnNbaW5kZXhdO1xuICAgICAgICAgIGlmIChhcHBseShwYWlyWzBdLCB0aGlzLCBhcmdzKSkge1xuICAgICAgICAgICAgcmV0dXJuIGFwcGx5KHBhaXJbMV0sIHRoaXMsIGFyZ3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgcHJlZGljYXRlIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgd2l0aFxuICAgICAqIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IHZhbHVlcyBvZiBhIGdpdmVuIG9iamVjdCwgcmV0dXJuaW5nIGB0cnVlYCBpZlxuICAgICAqIGFsbCBwcmVkaWNhdGVzIHJldHVybiB0cnV0aHksIGVsc2UgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGUgY3JlYXRlZCBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIGBfLmNvbmZvcm1zVG9gIHdpdGhcbiAgICAgKiBgc291cmNlYCBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHByZWRpY2F0ZXMgdG8gY29uZm9ybSB0by5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiAyLCAnYic6IDEgfSxcbiAgICAgKiAgIHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmZpbHRlcihvYmplY3RzLCBfLmNvbmZvcm1zKHsgJ2InOiBmdW5jdGlvbihuKSB7IHJldHVybiBuID4gMTsgfSB9KSk7XG4gICAgICogLy8gPT4gW3sgJ2EnOiAxLCAnYic6IDIgfV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25mb3Jtcyhzb3VyY2UpIHtcbiAgICAgIHJldHVybiBiYXNlQ29uZm9ybXMoYmFzZUNsb25lKHNvdXJjZSwgQ0xPTkVfREVFUF9GTEFHKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuNC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZXR1cm4gZnJvbSB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbnN0YW50IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IF8udGltZXMoMiwgXy5jb25zdGFudCh7ICdhJzogMSB9KSk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3RzKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDEgfSwgeyAnYSc6IDEgfV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25zdGFudCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBgdmFsdWVgIHRvIGRldGVybWluZSB3aGV0aGVyIGEgZGVmYXVsdCB2YWx1ZSBzaG91bGQgYmUgcmV0dXJuZWQgaW5cbiAgICAgKiBpdHMgcGxhY2UuIFRoZSBgZGVmYXVsdFZhbHVlYCBpcyByZXR1cm5lZCBpZiBgdmFsdWVgIGlzIGBOYU5gLCBgbnVsbGAsXG4gICAgICogb3IgYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xNC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0geyp9IGRlZmF1bHRWYWx1ZSBUaGUgZGVmYXVsdCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmYXVsdFRvKDEsIDEwKTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICpcbiAgICAgKiBfLmRlZmF1bHRUbyh1bmRlZmluZWQsIDEwKTtcbiAgICAgKiAvLyA9PiAxMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRlZmF1bHRUbyh2YWx1ZSwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICByZXR1cm4gKHZhbHVlID09IG51bGwgfHwgdmFsdWUgIT09IHZhbHVlKSA/IGRlZmF1bHRWYWx1ZSA6IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnZva2luZyB0aGUgZ2l2ZW4gZnVuY3Rpb25zXG4gICAgICogd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgdGhlIGNyZWF0ZWQgZnVuY3Rpb24sIHdoZXJlIGVhY2ggc3VjY2Vzc2l2ZVxuICAgICAqIGludm9jYXRpb24gaXMgc3VwcGxpZWQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJldmlvdXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbZnVuY3NdIFRoZSBmdW5jdGlvbnMgdG8gaW52b2tlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbXBvc2l0ZSBmdW5jdGlvbi5cbiAgICAgKiBAc2VlIF8uZmxvd1JpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gICAgICogICByZXR1cm4gbiAqIG47XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGFkZFNxdWFyZSA9IF8uZmxvdyhbXy5hZGQsIHNxdWFyZV0pO1xuICAgICAqIGFkZFNxdWFyZSgxLCAyKTtcbiAgICAgKiAvLyA9PiA5XG4gICAgICovXG4gICAgdmFyIGZsb3cgPSBjcmVhdGVGbG93KCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZsb3dgIGV4Y2VwdCB0aGF0IGl0IGNyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0XG4gICAgICogaW52b2tlcyB0aGUgZ2l2ZW4gZnVuY3Rpb25zIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtmdW5jc10gVGhlIGZ1bmN0aW9ucyB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29tcG9zaXRlIGZ1bmN0aW9uLlxuICAgICAqIEBzZWUgXy5mbG93XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gICAgICogICByZXR1cm4gbiAqIG47XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGFkZFNxdWFyZSA9IF8uZmxvd1JpZ2h0KFtzcXVhcmUsIF8uYWRkXSk7XG4gICAgICogYWRkU3F1YXJlKDEsIDIpO1xuICAgICAqIC8vID0+IDlcbiAgICAgKi9cbiAgICB2YXIgZmxvd1JpZ2h0ID0gY3JlYXRlRmxvdyh0cnVlKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGZpcnN0IGFyZ3VtZW50IGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIEFueSB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyBgdmFsdWVgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKF8uaWRlbnRpdHkob2JqZWN0KSA9PT0gb2JqZWN0KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaWRlbnRpdHkodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIHRoZSBhcmd1bWVudHMgb2YgdGhlIGNyZWF0ZWRcbiAgICAgKiBmdW5jdGlvbi4gSWYgYGZ1bmNgIGlzIGEgcHJvcGVydHkgbmFtZSwgdGhlIGNyZWF0ZWQgZnVuY3Rpb24gcmV0dXJucyB0aGVcbiAgICAgKiBwcm9wZXJ0eSB2YWx1ZSBmb3IgYSBnaXZlbiBlbGVtZW50LiBJZiBgZnVuY2AgaXMgYW4gYXJyYXkgb3Igb2JqZWN0LCB0aGVcbiAgICAgKiBjcmVhdGVkIGZ1bmN0aW9uIHJldHVybnMgYHRydWVgIGZvciBlbGVtZW50cyB0aGF0IGNvbnRhaW4gdGhlIGVxdWl2YWxlbnRcbiAgICAgKiBzb3VyY2UgcHJvcGVydGllcywgb3RoZXJ3aXNlIGl0IHJldHVybnMgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsqfSBbZnVuYz1fLmlkZW50aXR5XSBUaGUgdmFsdWUgdG8gY29udmVydCB0byBhIGNhbGxiYWNrLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgY2FsbGJhY2suXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIF8uaXRlcmF0ZWUoeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogdHJ1ZSB9KSk7XG4gICAgICogLy8gPT4gW3sgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9XVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmlsdGVyKHVzZXJzLCBfLml0ZXJhdGVlKFsndXNlcicsICdmcmVkJ10pKTtcbiAgICAgKiAvLyA9PiBbeyAndXNlcic6ICdmcmVkJywgJ2FnZSc6IDQwIH1dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1hcCh1c2VycywgXy5pdGVyYXRlZSgndXNlcicpKTtcbiAgICAgKiAvLyA9PiBbJ2Jhcm5leScsICdmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIENyZWF0ZSBjdXN0b20gaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKiBfLml0ZXJhdGVlID0gXy53cmFwKF8uaXRlcmF0ZWUsIGZ1bmN0aW9uKGl0ZXJhdGVlLCBmdW5jKSB7XG4gICAgICogICByZXR1cm4gIV8uaXNSZWdFeHAoZnVuYykgPyBpdGVyYXRlZShmdW5jKSA6IGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAqICAgICByZXR1cm4gZnVuYy50ZXN0KHN0cmluZyk7XG4gICAgICogICB9O1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogXy5maWx0ZXIoWydhYmMnLCAnZGVmJ10sIC9lZi8pO1xuICAgICAqIC8vID0+IFsnZGVmJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpdGVyYXRlZShmdW5jKSB7XG4gICAgICByZXR1cm4gYmFzZUl0ZXJhdGVlKHR5cGVvZiBmdW5jID09ICdmdW5jdGlvbicgPyBmdW5jIDogYmFzZUNsb25lKGZ1bmMsIENMT05FX0RFRVBfRkxBRykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIGEgcGFydGlhbCBkZWVwIGNvbXBhcmlzb24gYmV0d2VlbiBhIGdpdmVuXG4gICAgICogb2JqZWN0IGFuZCBgc291cmNlYCwgcmV0dXJuaW5nIGB0cnVlYCBpZiB0aGUgZ2l2ZW4gb2JqZWN0IGhhcyBlcXVpdmFsZW50XG4gICAgICogcHJvcGVydHkgdmFsdWVzLCBlbHNlIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhlIGNyZWF0ZWQgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byBgXy5pc01hdGNoYCB3aXRoIGBzb3VyY2VgXG4gICAgICogcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICpcbiAgICAgKiBQYXJ0aWFsIGNvbXBhcmlzb25zIHdpbGwgbWF0Y2ggZW1wdHkgYXJyYXkgYW5kIGVtcHR5IG9iamVjdCBgc291cmNlYFxuICAgICAqIHZhbHVlcyBhZ2FpbnN0IGFueSBhcnJheSBvciBvYmplY3QgdmFsdWUsIHJlc3BlY3RpdmVseS4gU2VlIGBfLmlzRXF1YWxgXG4gICAgICogZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgdmFsdWUgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTXVsdGlwbGUgdmFsdWVzIGNhbiBiZSBjaGVja2VkIGJ5IGNvbWJpbmluZyBzZXZlcmFsIG1hdGNoZXJzXG4gICAgICogdXNpbmcgYF8ub3ZlclNvbWVgXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gbWF0Y2guXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbXG4gICAgICogICB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfSxcbiAgICAgKiAgIHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmlsdGVyKG9iamVjdHMsIF8ubWF0Y2hlcyh7ICdhJzogNCwgJ2MnOiA2IH0pKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1dXG4gICAgICpcbiAgICAgKiAvLyBDaGVja2luZyBmb3Igc2V2ZXJhbCBwb3NzaWJsZSB2YWx1ZXNcbiAgICAgKiBfLmZpbHRlcihvYmplY3RzLCBfLm92ZXJTb21lKFtfLm1hdGNoZXMoeyAnYSc6IDEgfSksIF8ubWF0Y2hlcyh7ICdhJzogNCB9KV0pKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH0sIHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hdGNoZXMoc291cmNlKSB7XG4gICAgICByZXR1cm4gYmFzZU1hdGNoZXMoYmFzZUNsb25lKHNvdXJjZSwgQ0xPTkVfREVFUF9GTEFHKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIHRoZVxuICAgICAqIHZhbHVlIGF0IGBwYXRoYCBvZiBhIGdpdmVuIG9iamVjdCB0byBgc3JjVmFsdWVgLCByZXR1cm5pbmcgYHRydWVgIGlmIHRoZVxuICAgICAqIG9iamVjdCB2YWx1ZSBpcyBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogUGFydGlhbCBjb21wYXJpc29ucyB3aWxsIG1hdGNoIGVtcHR5IGFycmF5IGFuZCBlbXB0eSBvYmplY3RcbiAgICAgKiBgc3JjVmFsdWVgIHZhbHVlcyBhZ2FpbnN0IGFueSBhcnJheSBvciBvYmplY3QgdmFsdWUsIHJlc3BlY3RpdmVseS4gU2VlXG4gICAgICogYF8uaXNFcXVhbGAgZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgdmFsdWUgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTXVsdGlwbGUgdmFsdWVzIGNhbiBiZSBjaGVja2VkIGJ5IGNvbWJpbmluZyBzZXZlcmFsIG1hdGNoZXJzXG4gICAgICogdXNpbmcgYF8ub3ZlclNvbWVgXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4yLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2guXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbXG4gICAgICogICB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfSxcbiAgICAgKiAgIHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmluZChvYmplY3RzLCBfLm1hdGNoZXNQcm9wZXJ0eSgnYScsIDQpKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogNCwgJ2InOiA1LCAnYyc6IDYgfVxuICAgICAqXG4gICAgICogLy8gQ2hlY2tpbmcgZm9yIHNldmVyYWwgcG9zc2libGUgdmFsdWVzXG4gICAgICogXy5maWx0ZXIob2JqZWN0cywgXy5vdmVyU29tZShbXy5tYXRjaGVzUHJvcGVydHkoJ2EnLCAxKSwgXy5tYXRjaGVzUHJvcGVydHkoJ2EnLCA0KV0pKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH0sIHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hdGNoZXNQcm9wZXJ0eShwYXRoLCBzcmNWYWx1ZSkge1xuICAgICAgcmV0dXJuIGJhc2VNYXRjaGVzUHJvcGVydHkocGF0aCwgYmFzZUNsb25lKHNyY1ZhbHVlLCBDTE9ORV9ERUVQX0ZMQUcpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSBtZXRob2QgYXQgYHBhdGhgIG9mIGEgZ2l2ZW4gb2JqZWN0LlxuICAgICAqIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQgdG8gdGhlIGludm9rZWQgbWV0aG9kLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNy4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgbWV0aG9kIHRvIGludm9rZS5cbiAgICAgKiBAcGFyYW0gey4uLip9IFthcmdzXSBUaGUgYXJndW1lbnRzIHRvIGludm9rZSB0aGUgbWV0aG9kIHdpdGguXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgaW52b2tlciBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbXG4gICAgICogICB7ICdhJzogeyAnYic6IF8uY29uc3RhbnQoMikgfSB9LFxuICAgICAqICAgeyAnYSc6IHsgJ2InOiBfLmNvbnN0YW50KDEpIH0gfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLm1hcChvYmplY3RzLCBfLm1ldGhvZCgnYS5iJykpO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqXG4gICAgICogXy5tYXAob2JqZWN0cywgXy5tZXRob2QoWydhJywgJ2InXSkpO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqL1xuICAgIHZhciBtZXRob2QgPSBiYXNlUmVzdChmdW5jdGlvbihwYXRoLCBhcmdzKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBiYXNlSW52b2tlKG9iamVjdCwgcGF0aCwgYXJncyk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLm1ldGhvZGA7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXNcbiAgICAgKiB0aGUgbWV0aG9kIGF0IGEgZ2l2ZW4gcGF0aCBvZiBgb2JqZWN0YC4gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZVxuICAgICAqIHByb3ZpZGVkIHRvIHRoZSBpbnZva2VkIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjcuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIHRoZSBtZXRob2Qgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBpbnZva2VyIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBfLnRpbWVzKDMsIF8uY29uc3RhbnQpLFxuICAgICAqICAgICBvYmplY3QgPSB7ICdhJzogYXJyYXksICdiJzogYXJyYXksICdjJzogYXJyYXkgfTtcbiAgICAgKlxuICAgICAqIF8ubWFwKFsnYVsyXScsICdjWzBdJ10sIF8ubWV0aG9kT2Yob2JqZWN0KSk7XG4gICAgICogLy8gPT4gWzIsIDBdXG4gICAgICpcbiAgICAgKiBfLm1hcChbWydhJywgJzInXSwgWydjJywgJzAnXV0sIF8ubWV0aG9kT2Yob2JqZWN0KSk7XG4gICAgICogLy8gPT4gWzIsIDBdXG4gICAgICovXG4gICAgdmFyIG1ldGhvZE9mID0gYmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LCBhcmdzKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ocGF0aCkge1xuICAgICAgICByZXR1cm4gYmFzZUludm9rZShvYmplY3QsIHBhdGgsIGFyZ3MpO1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIEFkZHMgYWxsIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBmdW5jdGlvbiBwcm9wZXJ0aWVzIG9mIGEgc291cmNlXG4gICAgICogb2JqZWN0IHRvIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QuIElmIGBvYmplY3RgIGlzIGEgZnVuY3Rpb24sIHRoZW4gbWV0aG9kc1xuICAgICAqIGFyZSBhZGRlZCB0byBpdHMgcHJvdG90eXBlIGFzIHdlbGwuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVXNlIGBfLnJ1bkluQ29udGV4dGAgdG8gY3JlYXRlIGEgcHJpc3RpbmUgYGxvZGFzaGAgZnVuY3Rpb24gdG9cbiAgICAgKiBhdm9pZCBjb25mbGljdHMgY2F1c2VkIGJ5IG1vZGlmeWluZyB0aGUgb3JpZ2luYWwuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb258T2JqZWN0fSBbb2JqZWN0PWxvZGFzaF0gVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgZnVuY3Rpb25zIHRvIGFkZC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmNoYWluPXRydWVdIFNwZWNpZnkgd2hldGhlciBtaXhpbnMgYXJlIGNoYWluYWJsZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb258T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiB2b3dlbHMoc3RyaW5nKSB7XG4gICAgICogICByZXR1cm4gXy5maWx0ZXIoc3RyaW5nLCBmdW5jdGlvbih2KSB7XG4gICAgICogICAgIHJldHVybiAvW2FlaW91XS9pLnRlc3Qodik7XG4gICAgICogICB9KTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLm1peGluKHsgJ3Zvd2Vscyc6IHZvd2VscyB9KTtcbiAgICAgKiBfLnZvd2VscygnZnJlZCcpO1xuICAgICAqIC8vID0+IFsnZSddXG4gICAgICpcbiAgICAgKiBfKCdmcmVkJykudm93ZWxzKCkudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbJ2UnXVxuICAgICAqXG4gICAgICogXy5taXhpbih7ICd2b3dlbHMnOiB2b3dlbHMgfSwgeyAnY2hhaW4nOiBmYWxzZSB9KTtcbiAgICAgKiBfKCdmcmVkJykudm93ZWxzKCk7XG4gICAgICogLy8gPT4gWydlJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtaXhpbihvYmplY3QsIHNvdXJjZSwgb3B0aW9ucykge1xuICAgICAgdmFyIHByb3BzID0ga2V5cyhzb3VyY2UpLFxuICAgICAgICAgIG1ldGhvZE5hbWVzID0gYmFzZUZ1bmN0aW9ucyhzb3VyY2UsIHByb3BzKTtcblxuICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCAmJlxuICAgICAgICAgICEoaXNPYmplY3Qoc291cmNlKSAmJiAobWV0aG9kTmFtZXMubGVuZ3RoIHx8ICFwcm9wcy5sZW5ndGgpKSkge1xuICAgICAgICBvcHRpb25zID0gc291cmNlO1xuICAgICAgICBzb3VyY2UgPSBvYmplY3Q7XG4gICAgICAgIG9iamVjdCA9IHRoaXM7XG4gICAgICAgIG1ldGhvZE5hbWVzID0gYmFzZUZ1bmN0aW9ucyhzb3VyY2UsIGtleXMoc291cmNlKSk7XG4gICAgICB9XG4gICAgICB2YXIgY2hhaW4gPSAhKGlzT2JqZWN0KG9wdGlvbnMpICYmICdjaGFpbicgaW4gb3B0aW9ucykgfHwgISFvcHRpb25zLmNoYWluLFxuICAgICAgICAgIGlzRnVuYyA9IGlzRnVuY3Rpb24ob2JqZWN0KTtcblxuICAgICAgYXJyYXlFYWNoKG1ldGhvZE5hbWVzLCBmdW5jdGlvbihtZXRob2ROYW1lKSB7XG4gICAgICAgIHZhciBmdW5jID0gc291cmNlW21ldGhvZE5hbWVdO1xuICAgICAgICBvYmplY3RbbWV0aG9kTmFtZV0gPSBmdW5jO1xuICAgICAgICBpZiAoaXNGdW5jKSB7XG4gICAgICAgICAgb2JqZWN0LnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIGNoYWluQWxsID0gdGhpcy5fX2NoYWluX187XG4gICAgICAgICAgICBpZiAoY2hhaW4gfHwgY2hhaW5BbGwpIHtcbiAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG9iamVjdCh0aGlzLl9fd3JhcHBlZF9fKSxcbiAgICAgICAgICAgICAgICAgIGFjdGlvbnMgPSByZXN1bHQuX19hY3Rpb25zX18gPSBjb3B5QXJyYXkodGhpcy5fX2FjdGlvbnNfXyk7XG5cbiAgICAgICAgICAgICAgYWN0aW9ucy5wdXNoKHsgJ2Z1bmMnOiBmdW5jLCAnYXJncyc6IGFyZ3VtZW50cywgJ3RoaXNBcmcnOiBvYmplY3QgfSk7XG4gICAgICAgICAgICAgIHJlc3VsdC5fX2NoYWluX18gPSBjaGFpbkFsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmdW5jLmFwcGx5KG9iamVjdCwgYXJyYXlQdXNoKFt0aGlzLnZhbHVlKCldLCBhcmd1bWVudHMpKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXZlcnRzIHRoZSBgX2AgdmFyaWFibGUgdG8gaXRzIHByZXZpb3VzIHZhbHVlIGFuZCByZXR1cm5zIGEgcmVmZXJlbmNlIHRvXG4gICAgICogdGhlIGBsb2Rhc2hgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGBsb2Rhc2hgIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgbG9kYXNoID0gXy5ub0NvbmZsaWN0KCk7XG4gICAgICovXG4gICAgZnVuY3Rpb24gbm9Db25mbGljdCgpIHtcbiAgICAgIGlmIChyb290Ll8gPT09IHRoaXMpIHtcbiAgICAgICAgcm9vdC5fID0gb2xkRGFzaDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRpbWVzKDIsIF8ubm9vcCk7XG4gICAgICogLy8gPT4gW3VuZGVmaW5lZCwgdW5kZWZpbmVkXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5vb3AoKSB7XG4gICAgICAvLyBObyBvcGVyYXRpb24gcGVyZm9ybWVkLlxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGdldHMgdGhlIGFyZ3VtZW50IGF0IGluZGV4IGBuYC4gSWYgYG5gIGlzIG5lZ2F0aXZlLFxuICAgICAqIHRoZSBudGggYXJndW1lbnQgZnJvbSB0aGUgZW5kIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MF0gVGhlIGluZGV4IG9mIHRoZSBhcmd1bWVudCB0byByZXR1cm4uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcGFzcy10aHJ1IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgZnVuYyA9IF8ubnRoQXJnKDEpO1xuICAgICAqIGZ1bmMoJ2EnLCAnYicsICdjJywgJ2QnKTtcbiAgICAgKiAvLyA9PiAnYidcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5udGhBcmcoLTIpO1xuICAgICAqIGZ1bmMoJ2EnLCAnYicsICdjJywgJ2QnKTtcbiAgICAgKiAvLyA9PiAnYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBudGhBcmcobikge1xuICAgICAgbiA9IHRvSW50ZWdlcihuKTtcbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgIHJldHVybiBiYXNlTnRoKGFyZ3MsIG4pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgaXRlcmF0ZWVzYCB3aXRoIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXNcbiAgICAgKiBhbmQgcmV0dXJucyB0aGVpciByZXN1bHRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW2l0ZXJhdGVlcz1bXy5pZGVudGl0eV1dXG4gICAgICogIFRoZSBpdGVyYXRlZXMgdG8gaW52b2tlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgZnVuYyA9IF8ub3ZlcihbTWF0aC5tYXgsIE1hdGgubWluXSk7XG4gICAgICpcbiAgICAgKiBmdW5jKDEsIDIsIDMsIDQpO1xuICAgICAqIC8vID0+IFs0LCAxXVxuICAgICAqL1xuICAgIHZhciBvdmVyID0gY3JlYXRlT3ZlcihhcnJheU1hcCk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgKiphbGwqKiBvZiB0aGUgYHByZWRpY2F0ZXNgIHJldHVyblxuICAgICAqIHRydXRoeSB3aGVuIGludm9rZWQgd2l0aCB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogRm9sbG93aW5nIHNob3J0aGFuZHMgYXJlIHBvc3NpYmxlIGZvciBwcm92aWRpbmcgcHJlZGljYXRlcy5cbiAgICAgKiBQYXNzIGFuIGBPYmplY3RgIGFuZCBpdCB3aWxsIGJlIHVzZWQgYXMgYW4gcGFyYW1ldGVyIGZvciBgXy5tYXRjaGVzYCB0byBjcmVhdGUgdGhlIHByZWRpY2F0ZS5cbiAgICAgKiBQYXNzIGFuIGBBcnJheWAgb2YgcGFyYW1ldGVycyBmb3IgYF8ubWF0Y2hlc1Byb3BlcnR5YCBhbmQgdGhlIHByZWRpY2F0ZSB3aWxsIGJlIGNyZWF0ZWQgdXNpbmcgdGhlbS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtwcmVkaWNhdGVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIHByZWRpY2F0ZXMgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5vdmVyRXZlcnkoW0Jvb2xlYW4sIGlzRmluaXRlXSk7XG4gICAgICpcbiAgICAgKiBmdW5jKCcxJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogZnVuYyhudWxsKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogZnVuYyhOYU4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIG92ZXJFdmVyeSA9IGNyZWF0ZU92ZXIoYXJyYXlFdmVyeSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgKiphbnkqKiBvZiB0aGUgYHByZWRpY2F0ZXNgIHJldHVyblxuICAgICAqIHRydXRoeSB3aGVuIGludm9rZWQgd2l0aCB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogRm9sbG93aW5nIHNob3J0aGFuZHMgYXJlIHBvc3NpYmxlIGZvciBwcm92aWRpbmcgcHJlZGljYXRlcy5cbiAgICAgKiBQYXNzIGFuIGBPYmplY3RgIGFuZCBpdCB3aWxsIGJlIHVzZWQgYXMgYW4gcGFyYW1ldGVyIGZvciBgXy5tYXRjaGVzYCB0byBjcmVhdGUgdGhlIHByZWRpY2F0ZS5cbiAgICAgKiBQYXNzIGFuIGBBcnJheWAgb2YgcGFyYW1ldGVycyBmb3IgYF8ubWF0Y2hlc1Byb3BlcnR5YCBhbmQgdGhlIHByZWRpY2F0ZSB3aWxsIGJlIGNyZWF0ZWQgdXNpbmcgdGhlbS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtwcmVkaWNhdGVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIHByZWRpY2F0ZXMgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5vdmVyU29tZShbQm9vbGVhbiwgaXNGaW5pdGVdKTtcbiAgICAgKlxuICAgICAqIGZ1bmMoJzEnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBmdW5jKG51bGwpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGZ1bmMoTmFOKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogdmFyIG1hdGNoZXNGdW5jID0gXy5vdmVyU29tZShbeyAnYSc6IDEgfSwgeyAnYSc6IDIgfV0pXG4gICAgICogdmFyIG1hdGNoZXNQcm9wZXJ0eUZ1bmMgPSBfLm92ZXJTb21lKFtbJ2EnLCAxXSwgWydhJywgMl1dKVxuICAgICAqL1xuICAgIHZhciBvdmVyU29tZSA9IGNyZWF0ZU92ZXIoYXJyYXlTb21lKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBhIGdpdmVuIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjQuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbXG4gICAgICogICB7ICdhJzogeyAnYic6IDIgfSB9LFxuICAgICAqICAgeyAnYSc6IHsgJ2InOiAxIH0gfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLm1hcChvYmplY3RzLCBfLnByb3BlcnR5KCdhLmInKSk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICpcbiAgICAgKiBfLm1hcChfLnNvcnRCeShvYmplY3RzLCBfLnByb3BlcnR5KFsnYScsICdiJ10pKSwgJ2EuYicpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHByb3BlcnR5KHBhdGgpIHtcbiAgICAgIHJldHVybiBpc0tleShwYXRoKSA/IGJhc2VQcm9wZXJ0eSh0b0tleShwYXRoKSkgOiBiYXNlUHJvcGVydHlEZWVwKHBhdGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5wcm9wZXJ0eWA7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnNcbiAgICAgKiB0aGUgdmFsdWUgYXQgYSBnaXZlbiBwYXRoIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFswLCAxLCAyXSxcbiAgICAgKiAgICAgb2JqZWN0ID0geyAnYSc6IGFycmF5LCAnYic6IGFycmF5LCAnYyc6IGFycmF5IH07XG4gICAgICpcbiAgICAgKiBfLm1hcChbJ2FbMl0nLCAnY1swXSddLCBfLnByb3BlcnR5T2Yob2JqZWN0KSk7XG4gICAgICogLy8gPT4gWzIsIDBdXG4gICAgICpcbiAgICAgKiBfLm1hcChbWydhJywgJzInXSwgWydjJywgJzAnXV0sIF8ucHJvcGVydHlPZihvYmplY3QpKTtcbiAgICAgKiAvLyA9PiBbMiwgMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwcm9wZXJ0eU9mKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogYmFzZUdldChvYmplY3QsIHBhdGgpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIG51bWJlcnMgKHBvc2l0aXZlIGFuZC9vciBuZWdhdGl2ZSkgcHJvZ3Jlc3NpbmcgZnJvbVxuICAgICAqIGBzdGFydGAgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBgZW5kYC4gQSBzdGVwIG9mIGAtMWAgaXMgdXNlZCBpZiBhIG5lZ2F0aXZlXG4gICAgICogYHN0YXJ0YCBpcyBzcGVjaWZpZWQgd2l0aG91dCBhbiBgZW5kYCBvciBgc3RlcGAuIElmIGBlbmRgIGlzIG5vdCBzcGVjaWZpZWQsXG4gICAgICogaXQncyBzZXQgdG8gYHN0YXJ0YCB3aXRoIGBzdGFydGAgdGhlbiBzZXQgdG8gYDBgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIEphdmFTY3JpcHQgZm9sbG93cyB0aGUgSUVFRS03NTQgc3RhbmRhcmQgZm9yIHJlc29sdmluZ1xuICAgICAqIGZsb2F0aW5nLXBvaW50IHZhbHVlcyB3aGljaCBjYW4gcHJvZHVjZSB1bmV4cGVjdGVkIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RlcD0xXSBUaGUgdmFsdWUgdG8gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBieS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmdlIG9mIG51bWJlcnMuXG4gICAgICogQHNlZSBfLmluUmFuZ2UsIF8ucmFuZ2VSaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDQpO1xuICAgICAqIC8vID0+IFswLCAxLCAyLCAzXVxuICAgICAqXG4gICAgICogXy5yYW5nZSgtNCk7XG4gICAgICogLy8gPT4gWzAsIC0xLCAtMiwgLTNdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDEsIDUpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzLCA0XVxuICAgICAqXG4gICAgICogXy5yYW5nZSgwLCAyMCwgNSk7XG4gICAgICogLy8gPT4gWzAsIDUsIDEwLCAxNV1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoMCwgLTQsIC0xKTtcbiAgICAgKiAvLyA9PiBbMCwgLTEsIC0yLCAtM11cbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoMSwgNCwgMCk7XG4gICAgICogLy8gPT4gWzEsIDEsIDFdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDApO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgdmFyIHJhbmdlID0gY3JlYXRlUmFuZ2UoKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucmFuZ2VgIGV4Y2VwdCB0aGF0IGl0IHBvcHVsYXRlcyB2YWx1ZXMgaW5cbiAgICAgKiBkZXNjZW5kaW5nIG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0ZXA9MV0gVGhlIHZhbHVlIHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgYnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5nZSBvZiBudW1iZXJzLlxuICAgICAqIEBzZWUgXy5pblJhbmdlLCBfLnJhbmdlXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCg0KTtcbiAgICAgKiAvLyA9PiBbMywgMiwgMSwgMF1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgtNCk7XG4gICAgICogLy8gPT4gWy0zLCAtMiwgLTEsIDBdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlUmlnaHQoMSwgNSk7XG4gICAgICogLy8gPT4gWzQsIDMsIDIsIDFdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlUmlnaHQoMCwgMjAsIDUpO1xuICAgICAqIC8vID0+IFsxNSwgMTAsIDUsIDBdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlUmlnaHQoMCwgLTQsIC0xKTtcbiAgICAgKiAvLyA9PiBbLTMsIC0yLCAtMSwgMF1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgxLCA0LCAwKTtcbiAgICAgKiAvLyA9PiBbMSwgMSwgMV1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgwKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIHZhciByYW5nZVJpZ2h0ID0gY3JlYXRlUmFuZ2UodHJ1ZSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGVtcHR5IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZW1wdHkgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheXMgPSBfLnRpbWVzKDIsIF8uc3R1YkFycmF5KTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5cyk7XG4gICAgICogLy8gPT4gW1tdLCBbXV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5c1swXSA9PT0gYXJyYXlzWzFdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0dWJBcnJheSgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xMy4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRpbWVzKDIsIF8uc3R1YkZhbHNlKTtcbiAgICAgKiAvLyA9PiBbZmFsc2UsIGZhbHNlXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0dWJGYWxzZSgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGVtcHR5IG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBlbXB0eSBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gXy50aW1lcygyLCBfLnN0dWJPYmplY3QpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0cyk7XG4gICAgICogLy8gPT4gW3t9LCB7fV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3R1Yk9iamVjdCgpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVtcHR5IHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50aW1lcygyLCBfLnN0dWJTdHJpbmcpO1xuICAgICAqIC8vID0+IFsnJywgJyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3R1YlN0cmluZygpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGB0cnVlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50aW1lcygyLCBfLnN0dWJUcnVlKTtcbiAgICAgKiAvLyA9PiBbdHJ1ZSwgdHJ1ZV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdHViVHJ1ZSgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEludm9rZXMgdGhlIGl0ZXJhdGVlIGBuYCB0aW1lcywgcmV0dXJuaW5nIGFuIGFycmF5IG9mIHRoZSByZXN1bHRzIG9mXG4gICAgICogZWFjaCBpbnZvY2F0aW9uLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDsgKGluZGV4KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGltZXMoMywgU3RyaW5nKTtcbiAgICAgKiAvLyA9PiBbJzAnLCAnMScsICcyJ11cbiAgICAgKlxuICAgICAqICBfLnRpbWVzKDQsIF8uY29uc3RhbnQoMCkpO1xuICAgICAqIC8vID0+IFswLCAwLCAwLCAwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRpbWVzKG4sIGl0ZXJhdGVlKSB7XG4gICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgaWYgKG4gPCAxIHx8IG4gPiBNQVhfU0FGRV9JTlRFR0VSKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IE1BWF9BUlJBWV9MRU5HVEgsXG4gICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWluKG4sIE1BWF9BUlJBWV9MRU5HVEgpO1xuXG4gICAgICBpdGVyYXRlZSA9IGdldEl0ZXJhdGVlKGl0ZXJhdGVlKTtcbiAgICAgIG4gLT0gTUFYX0FSUkFZX0xFTkdUSDtcblxuICAgICAgdmFyIHJlc3VsdCA9IGJhc2VUaW1lcyhsZW5ndGgsIGl0ZXJhdGVlKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgICAgICBpdGVyYXRlZShpbmRleCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9QYXRoKCdhLmIuYycpO1xuICAgICAqIC8vID0+IFsnYScsICdiJywgJ2MnXVxuICAgICAqXG4gICAgICogXy50b1BhdGgoJ2FbMF0uYi5jJyk7XG4gICAgICogLy8gPT4gWydhJywgJzAnLCAnYicsICdjJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b1BhdGgodmFsdWUpIHtcbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gYXJyYXlNYXAodmFsdWUsIHRvS2V5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc1N5bWJvbCh2YWx1ZSkgPyBbdmFsdWVdIDogY29weUFycmF5KHN0cmluZ1RvUGF0aCh0b1N0cmluZyh2YWx1ZSkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSB1bmlxdWUgSUQuIElmIGBwcmVmaXhgIGlzIGdpdmVuLCB0aGUgSUQgaXMgYXBwZW5kZWQgdG8gaXQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbcHJlZml4PScnXSBUaGUgdmFsdWUgdG8gcHJlZml4IHRoZSBJRCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuaXF1ZSBJRC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51bmlxdWVJZCgnY29udGFjdF8nKTtcbiAgICAgKiAvLyA9PiAnY29udGFjdF8xMDQnXG4gICAgICpcbiAgICAgKiBfLnVuaXF1ZUlkKCk7XG4gICAgICogLy8gPT4gJzEwNSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmlxdWVJZChwcmVmaXgpIHtcbiAgICAgIHZhciBpZCA9ICsraWRDb3VudGVyO1xuICAgICAgcmV0dXJuIHRvU3RyaW5nKHByZWZpeCkgKyBpZDtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBBZGRzIHR3byBudW1iZXJzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYXVnZW5kIFRoZSBmaXJzdCBudW1iZXIgaW4gYW4gYWRkaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGFkZGVuZCBUaGUgc2Vjb25kIG51bWJlciBpbiBhbiBhZGRpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSB0b3RhbC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5hZGQoNiwgNCk7XG4gICAgICogLy8gPT4gMTBcbiAgICAgKi9cbiAgICB2YXIgYWRkID0gY3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihhdWdlbmQsIGFkZGVuZCkge1xuICAgICAgcmV0dXJuIGF1Z2VuZCArIGFkZGVuZDtcbiAgICB9LCAwKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGBudW1iZXJgIHJvdW5kZWQgdXAgdG8gYHByZWNpc2lvbmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4xMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gcm91bmQgdXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MF0gVGhlIHByZWNpc2lvbiB0byByb3VuZCB1cCB0by5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByb3VuZGVkIHVwIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jZWlsKDQuMDA2KTtcbiAgICAgKiAvLyA9PiA1XG4gICAgICpcbiAgICAgKiBfLmNlaWwoNi4wMDQsIDIpO1xuICAgICAqIC8vID0+IDYuMDFcbiAgICAgKlxuICAgICAqIF8uY2VpbCg2MDQwLCAtMik7XG4gICAgICogLy8gPT4gNjEwMFxuICAgICAqL1xuICAgIHZhciBjZWlsID0gY3JlYXRlUm91bmQoJ2NlaWwnKTtcblxuICAgIC8qKlxuICAgICAqIERpdmlkZSB0d28gbnVtYmVycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGRpdmlkZW5kIFRoZSBmaXJzdCBudW1iZXIgaW4gYSBkaXZpc2lvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGl2aXNvciBUaGUgc2Vjb25kIG51bWJlciBpbiBhIGRpdmlzaW9uLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHF1b3RpZW50LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRpdmlkZSg2LCA0KTtcbiAgICAgKiAvLyA9PiAxLjVcbiAgICAgKi9cbiAgICB2YXIgZGl2aWRlID0gY3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihkaXZpZGVuZCwgZGl2aXNvcikge1xuICAgICAgcmV0dXJuIGRpdmlkZW5kIC8gZGl2aXNvcjtcbiAgICB9LCAxKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGBudW1iZXJgIHJvdW5kZWQgZG93biB0byBgcHJlY2lzaW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byByb3VuZCBkb3duLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcHJlY2lzaW9uPTBdIFRoZSBwcmVjaXNpb24gdG8gcm91bmQgZG93biB0by5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByb3VuZGVkIGRvd24gbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZsb29yKDQuMDA2KTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICpcbiAgICAgKiBfLmZsb29yKDAuMDQ2LCAyKTtcbiAgICAgKiAvLyA9PiAwLjA0XG4gICAgICpcbiAgICAgKiBfLmZsb29yKDQwNjAsIC0yKTtcbiAgICAgKiAvLyA9PiA0MDAwXG4gICAgICovXG4gICAgdmFyIGZsb29yID0gY3JlYXRlUm91bmQoJ2Zsb29yJyk7XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgbWF4aW11bSB2YWx1ZSBvZiBgYXJyYXlgLiBJZiBgYXJyYXlgIGlzIGVtcHR5IG9yIGZhbHNleSxcbiAgICAgKiBgdW5kZWZpbmVkYCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWF4aW11bSB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tYXgoWzQsIDIsIDgsIDZdKTtcbiAgICAgKiAvLyA9PiA4XG4gICAgICpcbiAgICAgKiBfLm1heChbXSk7XG4gICAgICogLy8gPT4gdW5kZWZpbmVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF4KGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGlkZW50aXR5LCBiYXNlR3QpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWF4YCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5IHdoaWNoXG4gICAgICogdGhlIHZhbHVlIGlzIHJhbmtlZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXhpbXVtIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogMSB9LCB7ICduJzogMiB9XTtcbiAgICAgKlxuICAgICAqIF8ubWF4Qnkob2JqZWN0cywgZnVuY3Rpb24obykgeyByZXR1cm4gby5uOyB9KTtcbiAgICAgKiAvLyA9PiB7ICduJzogMiB9XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1heEJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4geyAnbic6IDIgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1heEJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZUV4dHJlbXVtKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMiksIGJhc2VHdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgdGhlIG1lYW4gb2YgdGhlIHZhbHVlcyBpbiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG1lYW4uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubWVhbihbNCwgMiwgOCwgNl0pO1xuICAgICAqIC8vID0+IDVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtZWFuKGFycmF5KSB7XG4gICAgICByZXR1cm4gYmFzZU1lYW4oYXJyYXksIGlkZW50aXR5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLm1lYW5gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSB2YWx1ZSB0byBiZSBhdmVyYWdlZC5cbiAgICAgKiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbWVhbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAnbic6IDQgfSwgeyAnbic6IDIgfSwgeyAnbic6IDggfSwgeyAnbic6IDYgfV07XG4gICAgICpcbiAgICAgKiBfLm1lYW5CeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAqIC8vID0+IDVcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWVhbkJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4gNVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1lYW5CeShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBiYXNlTWVhbihhcnJheSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgbWluaW11bSB2YWx1ZSBvZiBgYXJyYXlgLiBJZiBgYXJyYXlgIGlzIGVtcHR5IG9yIGZhbHNleSxcbiAgICAgKiBgdW5kZWZpbmVkYCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5taW4oWzQsIDIsIDgsIDZdKTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICpcbiAgICAgKiBfLm1pbihbXSk7XG4gICAgICogLy8gPT4gdW5kZWZpbmVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWluKGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGlkZW50aXR5LCBiYXNlTHQpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWluYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5IHdoaWNoXG4gICAgICogdGhlIHZhbHVlIGlzIHJhbmtlZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogMSB9LCB7ICduJzogMiB9XTtcbiAgICAgKlxuICAgICAqIF8ubWluQnkob2JqZWN0cywgZnVuY3Rpb24obykgeyByZXR1cm4gby5uOyB9KTtcbiAgICAgKiAvLyA9PiB7ICduJzogMSB9XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1pbkJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4geyAnbic6IDEgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1pbkJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZUV4dHJlbXVtKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMiksIGJhc2VMdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTXVsdGlwbHkgdHdvIG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC43LjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtdWx0aXBsaWVyIFRoZSBmaXJzdCBudW1iZXIgaW4gYSBtdWx0aXBsaWNhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbXVsdGlwbGljYW5kIFRoZSBzZWNvbmQgbnVtYmVyIGluIGEgbXVsdGlwbGljYXRpb24uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcHJvZHVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tdWx0aXBseSg2LCA0KTtcbiAgICAgKiAvLyA9PiAyNFxuICAgICAqL1xuICAgIHZhciBtdWx0aXBseSA9IGNyZWF0ZU1hdGhPcGVyYXRpb24oZnVuY3Rpb24obXVsdGlwbGllciwgbXVsdGlwbGljYW5kKSB7XG4gICAgICByZXR1cm4gbXVsdGlwbGllciAqIG11bHRpcGxpY2FuZDtcbiAgICB9LCAxKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGBudW1iZXJgIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4xMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gcm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MF0gVGhlIHByZWNpc2lvbiB0byByb3VuZCB0by5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByb3VuZGVkIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yb3VuZCg0LjAwNik7XG4gICAgICogLy8gPT4gNFxuICAgICAqXG4gICAgICogXy5yb3VuZCg0LjAwNiwgMik7XG4gICAgICogLy8gPT4gNC4wMVxuICAgICAqXG4gICAgICogXy5yb3VuZCg0MDYwLCAtMik7XG4gICAgICogLy8gPT4gNDEwMFxuICAgICAqL1xuICAgIHZhciByb3VuZCA9IGNyZWF0ZVJvdW5kKCdyb3VuZCcpO1xuXG4gICAgLyoqXG4gICAgICogU3VidHJhY3QgdHdvIG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaW51ZW5kIFRoZSBmaXJzdCBudW1iZXIgaW4gYSBzdWJ0cmFjdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3VidHJhaGVuZCBUaGUgc2Vjb25kIG51bWJlciBpbiBhIHN1YnRyYWN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGRpZmZlcmVuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc3VidHJhY3QoNiwgNCk7XG4gICAgICogLy8gPT4gMlxuICAgICAqL1xuICAgIHZhciBzdWJ0cmFjdCA9IGNyZWF0ZU1hdGhPcGVyYXRpb24oZnVuY3Rpb24obWludWVuZCwgc3VidHJhaGVuZCkge1xuICAgICAgcmV0dXJuIG1pbnVlbmQgLSBzdWJ0cmFoZW5kO1xuICAgIH0sIDApO1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgdGhlIHN1bSBvZiB0aGUgdmFsdWVzIGluIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy40LjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3VtLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnN1bShbNCwgMiwgOCwgNl0pO1xuICAgICAqIC8vID0+IDIwXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3VtKGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlU3VtKGFycmF5LCBpZGVudGl0eSlcbiAgICAgICAgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc3VtYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgdmFsdWUgdG8gYmUgc3VtbWVkLlxuICAgICAqIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdW0uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ24nOiA0IH0sIHsgJ24nOiAyIH0sIHsgJ24nOiA4IH0sIHsgJ24nOiA2IH1dO1xuICAgICAqXG4gICAgICogXy5zdW1CeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAqIC8vID0+IDIwXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnN1bUJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4gMjBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdW1CeShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VTdW0oYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSlcbiAgICAgICAgOiAwO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8vIEFkZCBtZXRob2RzIHRoYXQgcmV0dXJuIHdyYXBwZWQgdmFsdWVzIGluIGNoYWluIHNlcXVlbmNlcy5cbiAgICBsb2Rhc2guYWZ0ZXIgPSBhZnRlcjtcbiAgICBsb2Rhc2guYXJ5ID0gYXJ5O1xuICAgIGxvZGFzaC5hc3NpZ24gPSBhc3NpZ247XG4gICAgbG9kYXNoLmFzc2lnbkluID0gYXNzaWduSW47XG4gICAgbG9kYXNoLmFzc2lnbkluV2l0aCA9IGFzc2lnbkluV2l0aDtcbiAgICBsb2Rhc2guYXNzaWduV2l0aCA9IGFzc2lnbldpdGg7XG4gICAgbG9kYXNoLmF0ID0gYXQ7XG4gICAgbG9kYXNoLmJlZm9yZSA9IGJlZm9yZTtcbiAgICBsb2Rhc2guYmluZCA9IGJpbmQ7XG4gICAgbG9kYXNoLmJpbmRBbGwgPSBiaW5kQWxsO1xuICAgIGxvZGFzaC5iaW5kS2V5ID0gYmluZEtleTtcbiAgICBsb2Rhc2guY2FzdEFycmF5ID0gY2FzdEFycmF5O1xuICAgIGxvZGFzaC5jaGFpbiA9IGNoYWluO1xuICAgIGxvZGFzaC5jaHVuayA9IGNodW5rO1xuICAgIGxvZGFzaC5jb21wYWN0ID0gY29tcGFjdDtcbiAgICBsb2Rhc2guY29uY2F0ID0gY29uY2F0O1xuICAgIGxvZGFzaC5jb25kID0gY29uZDtcbiAgICBsb2Rhc2guY29uZm9ybXMgPSBjb25mb3JtcztcbiAgICBsb2Rhc2guY29uc3RhbnQgPSBjb25zdGFudDtcbiAgICBsb2Rhc2guY291bnRCeSA9IGNvdW50Qnk7XG4gICAgbG9kYXNoLmNyZWF0ZSA9IGNyZWF0ZTtcbiAgICBsb2Rhc2guY3VycnkgPSBjdXJyeTtcbiAgICBsb2Rhc2guY3VycnlSaWdodCA9IGN1cnJ5UmlnaHQ7XG4gICAgbG9kYXNoLmRlYm91bmNlID0gZGVib3VuY2U7XG4gICAgbG9kYXNoLmRlZmF1bHRzID0gZGVmYXVsdHM7XG4gICAgbG9kYXNoLmRlZmF1bHRzRGVlcCA9IGRlZmF1bHRzRGVlcDtcbiAgICBsb2Rhc2guZGVmZXIgPSBkZWZlcjtcbiAgICBsb2Rhc2guZGVsYXkgPSBkZWxheTtcbiAgICBsb2Rhc2guZGlmZmVyZW5jZSA9IGRpZmZlcmVuY2U7XG4gICAgbG9kYXNoLmRpZmZlcmVuY2VCeSA9IGRpZmZlcmVuY2VCeTtcbiAgICBsb2Rhc2guZGlmZmVyZW5jZVdpdGggPSBkaWZmZXJlbmNlV2l0aDtcbiAgICBsb2Rhc2guZHJvcCA9IGRyb3A7XG4gICAgbG9kYXNoLmRyb3BSaWdodCA9IGRyb3BSaWdodDtcbiAgICBsb2Rhc2guZHJvcFJpZ2h0V2hpbGUgPSBkcm9wUmlnaHRXaGlsZTtcbiAgICBsb2Rhc2guZHJvcFdoaWxlID0gZHJvcFdoaWxlO1xuICAgIGxvZGFzaC5maWxsID0gZmlsbDtcbiAgICBsb2Rhc2guZmlsdGVyID0gZmlsdGVyO1xuICAgIGxvZGFzaC5mbGF0TWFwID0gZmxhdE1hcDtcbiAgICBsb2Rhc2guZmxhdE1hcERlZXAgPSBmbGF0TWFwRGVlcDtcbiAgICBsb2Rhc2guZmxhdE1hcERlcHRoID0gZmxhdE1hcERlcHRoO1xuICAgIGxvZGFzaC5mbGF0dGVuID0gZmxhdHRlbjtcbiAgICBsb2Rhc2guZmxhdHRlbkRlZXAgPSBmbGF0dGVuRGVlcDtcbiAgICBsb2Rhc2guZmxhdHRlbkRlcHRoID0gZmxhdHRlbkRlcHRoO1xuICAgIGxvZGFzaC5mbGlwID0gZmxpcDtcbiAgICBsb2Rhc2guZmxvdyA9IGZsb3c7XG4gICAgbG9kYXNoLmZsb3dSaWdodCA9IGZsb3dSaWdodDtcbiAgICBsb2Rhc2guZnJvbVBhaXJzID0gZnJvbVBhaXJzO1xuICAgIGxvZGFzaC5mdW5jdGlvbnMgPSBmdW5jdGlvbnM7XG4gICAgbG9kYXNoLmZ1bmN0aW9uc0luID0gZnVuY3Rpb25zSW47XG4gICAgbG9kYXNoLmdyb3VwQnkgPSBncm91cEJ5O1xuICAgIGxvZGFzaC5pbml0aWFsID0gaW5pdGlhbDtcbiAgICBsb2Rhc2guaW50ZXJzZWN0aW9uID0gaW50ZXJzZWN0aW9uO1xuICAgIGxvZGFzaC5pbnRlcnNlY3Rpb25CeSA9IGludGVyc2VjdGlvbkJ5O1xuICAgIGxvZGFzaC5pbnRlcnNlY3Rpb25XaXRoID0gaW50ZXJzZWN0aW9uV2l0aDtcbiAgICBsb2Rhc2guaW52ZXJ0ID0gaW52ZXJ0O1xuICAgIGxvZGFzaC5pbnZlcnRCeSA9IGludmVydEJ5O1xuICAgIGxvZGFzaC5pbnZva2VNYXAgPSBpbnZva2VNYXA7XG4gICAgbG9kYXNoLml0ZXJhdGVlID0gaXRlcmF0ZWU7XG4gICAgbG9kYXNoLmtleUJ5ID0ga2V5Qnk7XG4gICAgbG9kYXNoLmtleXMgPSBrZXlzO1xuICAgIGxvZGFzaC5rZXlzSW4gPSBrZXlzSW47XG4gICAgbG9kYXNoLm1hcCA9IG1hcDtcbiAgICBsb2Rhc2gubWFwS2V5cyA9IG1hcEtleXM7XG4gICAgbG9kYXNoLm1hcFZhbHVlcyA9IG1hcFZhbHVlcztcbiAgICBsb2Rhc2gubWF0Y2hlcyA9IG1hdGNoZXM7XG4gICAgbG9kYXNoLm1hdGNoZXNQcm9wZXJ0eSA9IG1hdGNoZXNQcm9wZXJ0eTtcbiAgICBsb2Rhc2gubWVtb2l6ZSA9IG1lbW9pemU7XG4gICAgbG9kYXNoLm1lcmdlID0gbWVyZ2U7XG4gICAgbG9kYXNoLm1lcmdlV2l0aCA9IG1lcmdlV2l0aDtcbiAgICBsb2Rhc2gubWV0aG9kID0gbWV0aG9kO1xuICAgIGxvZGFzaC5tZXRob2RPZiA9IG1ldGhvZE9mO1xuICAgIGxvZGFzaC5taXhpbiA9IG1peGluO1xuICAgIGxvZGFzaC5uZWdhdGUgPSBuZWdhdGU7XG4gICAgbG9kYXNoLm50aEFyZyA9IG50aEFyZztcbiAgICBsb2Rhc2gub21pdCA9IG9taXQ7XG4gICAgbG9kYXNoLm9taXRCeSA9IG9taXRCeTtcbiAgICBsb2Rhc2gub25jZSA9IG9uY2U7XG4gICAgbG9kYXNoLm9yZGVyQnkgPSBvcmRlckJ5O1xuICAgIGxvZGFzaC5vdmVyID0gb3ZlcjtcbiAgICBsb2Rhc2gub3ZlckFyZ3MgPSBvdmVyQXJncztcbiAgICBsb2Rhc2gub3ZlckV2ZXJ5ID0gb3ZlckV2ZXJ5O1xuICAgIGxvZGFzaC5vdmVyU29tZSA9IG92ZXJTb21lO1xuICAgIGxvZGFzaC5wYXJ0aWFsID0gcGFydGlhbDtcbiAgICBsb2Rhc2gucGFydGlhbFJpZ2h0ID0gcGFydGlhbFJpZ2h0O1xuICAgIGxvZGFzaC5wYXJ0aXRpb24gPSBwYXJ0aXRpb247XG4gICAgbG9kYXNoLnBpY2sgPSBwaWNrO1xuICAgIGxvZGFzaC5waWNrQnkgPSBwaWNrQnk7XG4gICAgbG9kYXNoLnByb3BlcnR5ID0gcHJvcGVydHk7XG4gICAgbG9kYXNoLnByb3BlcnR5T2YgPSBwcm9wZXJ0eU9mO1xuICAgIGxvZGFzaC5wdWxsID0gcHVsbDtcbiAgICBsb2Rhc2gucHVsbEFsbCA9IHB1bGxBbGw7XG4gICAgbG9kYXNoLnB1bGxBbGxCeSA9IHB1bGxBbGxCeTtcbiAgICBsb2Rhc2gucHVsbEFsbFdpdGggPSBwdWxsQWxsV2l0aDtcbiAgICBsb2Rhc2gucHVsbEF0ID0gcHVsbEF0O1xuICAgIGxvZGFzaC5yYW5nZSA9IHJhbmdlO1xuICAgIGxvZGFzaC5yYW5nZVJpZ2h0ID0gcmFuZ2VSaWdodDtcbiAgICBsb2Rhc2gucmVhcmcgPSByZWFyZztcbiAgICBsb2Rhc2gucmVqZWN0ID0gcmVqZWN0O1xuICAgIGxvZGFzaC5yZW1vdmUgPSByZW1vdmU7XG4gICAgbG9kYXNoLnJlc3QgPSByZXN0O1xuICAgIGxvZGFzaC5yZXZlcnNlID0gcmV2ZXJzZTtcbiAgICBsb2Rhc2guc2FtcGxlU2l6ZSA9IHNhbXBsZVNpemU7XG4gICAgbG9kYXNoLnNldCA9IHNldDtcbiAgICBsb2Rhc2guc2V0V2l0aCA9IHNldFdpdGg7XG4gICAgbG9kYXNoLnNodWZmbGUgPSBzaHVmZmxlO1xuICAgIGxvZGFzaC5zbGljZSA9IHNsaWNlO1xuICAgIGxvZGFzaC5zb3J0QnkgPSBzb3J0Qnk7XG4gICAgbG9kYXNoLnNvcnRlZFVuaXEgPSBzb3J0ZWRVbmlxO1xuICAgIGxvZGFzaC5zb3J0ZWRVbmlxQnkgPSBzb3J0ZWRVbmlxQnk7XG4gICAgbG9kYXNoLnNwbGl0ID0gc3BsaXQ7XG4gICAgbG9kYXNoLnNwcmVhZCA9IHNwcmVhZDtcbiAgICBsb2Rhc2gudGFpbCA9IHRhaWw7XG4gICAgbG9kYXNoLnRha2UgPSB0YWtlO1xuICAgIGxvZGFzaC50YWtlUmlnaHQgPSB0YWtlUmlnaHQ7XG4gICAgbG9kYXNoLnRha2VSaWdodFdoaWxlID0gdGFrZVJpZ2h0V2hpbGU7XG4gICAgbG9kYXNoLnRha2VXaGlsZSA9IHRha2VXaGlsZTtcbiAgICBsb2Rhc2gudGFwID0gdGFwO1xuICAgIGxvZGFzaC50aHJvdHRsZSA9IHRocm90dGxlO1xuICAgIGxvZGFzaC50aHJ1ID0gdGhydTtcbiAgICBsb2Rhc2gudG9BcnJheSA9IHRvQXJyYXk7XG4gICAgbG9kYXNoLnRvUGFpcnMgPSB0b1BhaXJzO1xuICAgIGxvZGFzaC50b1BhaXJzSW4gPSB0b1BhaXJzSW47XG4gICAgbG9kYXNoLnRvUGF0aCA9IHRvUGF0aDtcbiAgICBsb2Rhc2gudG9QbGFpbk9iamVjdCA9IHRvUGxhaW5PYmplY3Q7XG4gICAgbG9kYXNoLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTtcbiAgICBsb2Rhc2gudW5hcnkgPSB1bmFyeTtcbiAgICBsb2Rhc2gudW5pb24gPSB1bmlvbjtcbiAgICBsb2Rhc2gudW5pb25CeSA9IHVuaW9uQnk7XG4gICAgbG9kYXNoLnVuaW9uV2l0aCA9IHVuaW9uV2l0aDtcbiAgICBsb2Rhc2gudW5pcSA9IHVuaXE7XG4gICAgbG9kYXNoLnVuaXFCeSA9IHVuaXFCeTtcbiAgICBsb2Rhc2gudW5pcVdpdGggPSB1bmlxV2l0aDtcbiAgICBsb2Rhc2gudW5zZXQgPSB1bnNldDtcbiAgICBsb2Rhc2gudW56aXAgPSB1bnppcDtcbiAgICBsb2Rhc2gudW56aXBXaXRoID0gdW56aXBXaXRoO1xuICAgIGxvZGFzaC51cGRhdGUgPSB1cGRhdGU7XG4gICAgbG9kYXNoLnVwZGF0ZVdpdGggPSB1cGRhdGVXaXRoO1xuICAgIGxvZGFzaC52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgbG9kYXNoLnZhbHVlc0luID0gdmFsdWVzSW47XG4gICAgbG9kYXNoLndpdGhvdXQgPSB3aXRob3V0O1xuICAgIGxvZGFzaC53b3JkcyA9IHdvcmRzO1xuICAgIGxvZGFzaC53cmFwID0gd3JhcDtcbiAgICBsb2Rhc2gueG9yID0geG9yO1xuICAgIGxvZGFzaC54b3JCeSA9IHhvckJ5O1xuICAgIGxvZGFzaC54b3JXaXRoID0geG9yV2l0aDtcbiAgICBsb2Rhc2guemlwID0gemlwO1xuICAgIGxvZGFzaC56aXBPYmplY3QgPSB6aXBPYmplY3Q7XG4gICAgbG9kYXNoLnppcE9iamVjdERlZXAgPSB6aXBPYmplY3REZWVwO1xuICAgIGxvZGFzaC56aXBXaXRoID0gemlwV2l0aDtcblxuICAgIC8vIEFkZCBhbGlhc2VzLlxuICAgIGxvZGFzaC5lbnRyaWVzID0gdG9QYWlycztcbiAgICBsb2Rhc2guZW50cmllc0luID0gdG9QYWlyc0luO1xuICAgIGxvZGFzaC5leHRlbmQgPSBhc3NpZ25JbjtcbiAgICBsb2Rhc2guZXh0ZW5kV2l0aCA9IGFzc2lnbkluV2l0aDtcblxuICAgIC8vIEFkZCBtZXRob2RzIHRvIGBsb2Rhc2gucHJvdG90eXBlYC5cbiAgICBtaXhpbihsb2Rhc2gsIGxvZGFzaCk7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0aGF0IHJldHVybiB1bndyYXBwZWQgdmFsdWVzIGluIGNoYWluIHNlcXVlbmNlcy5cbiAgICBsb2Rhc2guYWRkID0gYWRkO1xuICAgIGxvZGFzaC5hdHRlbXB0ID0gYXR0ZW1wdDtcbiAgICBsb2Rhc2guY2FtZWxDYXNlID0gY2FtZWxDYXNlO1xuICAgIGxvZGFzaC5jYXBpdGFsaXplID0gY2FwaXRhbGl6ZTtcbiAgICBsb2Rhc2guY2VpbCA9IGNlaWw7XG4gICAgbG9kYXNoLmNsYW1wID0gY2xhbXA7XG4gICAgbG9kYXNoLmNsb25lID0gY2xvbmU7XG4gICAgbG9kYXNoLmNsb25lRGVlcCA9IGNsb25lRGVlcDtcbiAgICBsb2Rhc2guY2xvbmVEZWVwV2l0aCA9IGNsb25lRGVlcFdpdGg7XG4gICAgbG9kYXNoLmNsb25lV2l0aCA9IGNsb25lV2l0aDtcbiAgICBsb2Rhc2guY29uZm9ybXNUbyA9IGNvbmZvcm1zVG87XG4gICAgbG9kYXNoLmRlYnVyciA9IGRlYnVycjtcbiAgICBsb2Rhc2guZGVmYXVsdFRvID0gZGVmYXVsdFRvO1xuICAgIGxvZGFzaC5kaXZpZGUgPSBkaXZpZGU7XG4gICAgbG9kYXNoLmVuZHNXaXRoID0gZW5kc1dpdGg7XG4gICAgbG9kYXNoLmVxID0gZXE7XG4gICAgbG9kYXNoLmVzY2FwZSA9IGVzY2FwZTtcbiAgICBsb2Rhc2guZXNjYXBlUmVnRXhwID0gZXNjYXBlUmVnRXhwO1xuICAgIGxvZGFzaC5ldmVyeSA9IGV2ZXJ5O1xuICAgIGxvZGFzaC5maW5kID0gZmluZDtcbiAgICBsb2Rhc2guZmluZEluZGV4ID0gZmluZEluZGV4O1xuICAgIGxvZGFzaC5maW5kS2V5ID0gZmluZEtleTtcbiAgICBsb2Rhc2guZmluZExhc3QgPSBmaW5kTGFzdDtcbiAgICBsb2Rhc2guZmluZExhc3RJbmRleCA9IGZpbmRMYXN0SW5kZXg7XG4gICAgbG9kYXNoLmZpbmRMYXN0S2V5ID0gZmluZExhc3RLZXk7XG4gICAgbG9kYXNoLmZsb29yID0gZmxvb3I7XG4gICAgbG9kYXNoLmZvckVhY2ggPSBmb3JFYWNoO1xuICAgIGxvZGFzaC5mb3JFYWNoUmlnaHQgPSBmb3JFYWNoUmlnaHQ7XG4gICAgbG9kYXNoLmZvckluID0gZm9ySW47XG4gICAgbG9kYXNoLmZvckluUmlnaHQgPSBmb3JJblJpZ2h0O1xuICAgIGxvZGFzaC5mb3JPd24gPSBmb3JPd247XG4gICAgbG9kYXNoLmZvck93blJpZ2h0ID0gZm9yT3duUmlnaHQ7XG4gICAgbG9kYXNoLmdldCA9IGdldDtcbiAgICBsb2Rhc2guZ3QgPSBndDtcbiAgICBsb2Rhc2guZ3RlID0gZ3RlO1xuICAgIGxvZGFzaC5oYXMgPSBoYXM7XG4gICAgbG9kYXNoLmhhc0luID0gaGFzSW47XG4gICAgbG9kYXNoLmhlYWQgPSBoZWFkO1xuICAgIGxvZGFzaC5pZGVudGl0eSA9IGlkZW50aXR5O1xuICAgIGxvZGFzaC5pbmNsdWRlcyA9IGluY2x1ZGVzO1xuICAgIGxvZGFzaC5pbmRleE9mID0gaW5kZXhPZjtcbiAgICBsb2Rhc2guaW5SYW5nZSA9IGluUmFuZ2U7XG4gICAgbG9kYXNoLmludm9rZSA9IGludm9rZTtcbiAgICBsb2Rhc2guaXNBcmd1bWVudHMgPSBpc0FyZ3VtZW50cztcbiAgICBsb2Rhc2guaXNBcnJheSA9IGlzQXJyYXk7XG4gICAgbG9kYXNoLmlzQXJyYXlCdWZmZXIgPSBpc0FycmF5QnVmZmVyO1xuICAgIGxvZGFzaC5pc0FycmF5TGlrZSA9IGlzQXJyYXlMaWtlO1xuICAgIGxvZGFzaC5pc0FycmF5TGlrZU9iamVjdCA9IGlzQXJyYXlMaWtlT2JqZWN0O1xuICAgIGxvZGFzaC5pc0Jvb2xlYW4gPSBpc0Jvb2xlYW47XG4gICAgbG9kYXNoLmlzQnVmZmVyID0gaXNCdWZmZXI7XG4gICAgbG9kYXNoLmlzRGF0ZSA9IGlzRGF0ZTtcbiAgICBsb2Rhc2guaXNFbGVtZW50ID0gaXNFbGVtZW50O1xuICAgIGxvZGFzaC5pc0VtcHR5ID0gaXNFbXB0eTtcbiAgICBsb2Rhc2guaXNFcXVhbCA9IGlzRXF1YWw7XG4gICAgbG9kYXNoLmlzRXF1YWxXaXRoID0gaXNFcXVhbFdpdGg7XG4gICAgbG9kYXNoLmlzRXJyb3IgPSBpc0Vycm9yO1xuICAgIGxvZGFzaC5pc0Zpbml0ZSA9IGlzRmluaXRlO1xuICAgIGxvZGFzaC5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjtcbiAgICBsb2Rhc2guaXNJbnRlZ2VyID0gaXNJbnRlZ2VyO1xuICAgIGxvZGFzaC5pc0xlbmd0aCA9IGlzTGVuZ3RoO1xuICAgIGxvZGFzaC5pc01hcCA9IGlzTWFwO1xuICAgIGxvZGFzaC5pc01hdGNoID0gaXNNYXRjaDtcbiAgICBsb2Rhc2guaXNNYXRjaFdpdGggPSBpc01hdGNoV2l0aDtcbiAgICBsb2Rhc2guaXNOYU4gPSBpc05hTjtcbiAgICBsb2Rhc2guaXNOYXRpdmUgPSBpc05hdGl2ZTtcbiAgICBsb2Rhc2guaXNOaWwgPSBpc05pbDtcbiAgICBsb2Rhc2guaXNOdWxsID0gaXNOdWxsO1xuICAgIGxvZGFzaC5pc051bWJlciA9IGlzTnVtYmVyO1xuICAgIGxvZGFzaC5pc09iamVjdCA9IGlzT2JqZWN0O1xuICAgIGxvZGFzaC5pc09iamVjdExpa2UgPSBpc09iamVjdExpa2U7XG4gICAgbG9kYXNoLmlzUGxhaW5PYmplY3QgPSBpc1BsYWluT2JqZWN0O1xuICAgIGxvZGFzaC5pc1JlZ0V4cCA9IGlzUmVnRXhwO1xuICAgIGxvZGFzaC5pc1NhZmVJbnRlZ2VyID0gaXNTYWZlSW50ZWdlcjtcbiAgICBsb2Rhc2guaXNTZXQgPSBpc1NldDtcbiAgICBsb2Rhc2guaXNTdHJpbmcgPSBpc1N0cmluZztcbiAgICBsb2Rhc2guaXNTeW1ib2wgPSBpc1N5bWJvbDtcbiAgICBsb2Rhc2guaXNUeXBlZEFycmF5ID0gaXNUeXBlZEFycmF5O1xuICAgIGxvZGFzaC5pc1VuZGVmaW5lZCA9IGlzVW5kZWZpbmVkO1xuICAgIGxvZGFzaC5pc1dlYWtNYXAgPSBpc1dlYWtNYXA7XG4gICAgbG9kYXNoLmlzV2Vha1NldCA9IGlzV2Vha1NldDtcbiAgICBsb2Rhc2guam9pbiA9IGpvaW47XG4gICAgbG9kYXNoLmtlYmFiQ2FzZSA9IGtlYmFiQ2FzZTtcbiAgICBsb2Rhc2gubGFzdCA9IGxhc3Q7XG4gICAgbG9kYXNoLmxhc3RJbmRleE9mID0gbGFzdEluZGV4T2Y7XG4gICAgbG9kYXNoLmxvd2VyQ2FzZSA9IGxvd2VyQ2FzZTtcbiAgICBsb2Rhc2gubG93ZXJGaXJzdCA9IGxvd2VyRmlyc3Q7XG4gICAgbG9kYXNoLmx0ID0gbHQ7XG4gICAgbG9kYXNoLmx0ZSA9IGx0ZTtcbiAgICBsb2Rhc2gubWF4ID0gbWF4O1xuICAgIGxvZGFzaC5tYXhCeSA9IG1heEJ5O1xuICAgIGxvZGFzaC5tZWFuID0gbWVhbjtcbiAgICBsb2Rhc2gubWVhbkJ5ID0gbWVhbkJ5O1xuICAgIGxvZGFzaC5taW4gPSBtaW47XG4gICAgbG9kYXNoLm1pbkJ5ID0gbWluQnk7XG4gICAgbG9kYXNoLnN0dWJBcnJheSA9IHN0dWJBcnJheTtcbiAgICBsb2Rhc2guc3R1YkZhbHNlID0gc3R1YkZhbHNlO1xuICAgIGxvZGFzaC5zdHViT2JqZWN0ID0gc3R1Yk9iamVjdDtcbiAgICBsb2Rhc2guc3R1YlN0cmluZyA9IHN0dWJTdHJpbmc7XG4gICAgbG9kYXNoLnN0dWJUcnVlID0gc3R1YlRydWU7XG4gICAgbG9kYXNoLm11bHRpcGx5ID0gbXVsdGlwbHk7XG4gICAgbG9kYXNoLm50aCA9IG50aDtcbiAgICBsb2Rhc2gubm9Db25mbGljdCA9IG5vQ29uZmxpY3Q7XG4gICAgbG9kYXNoLm5vb3AgPSBub29wO1xuICAgIGxvZGFzaC5ub3cgPSBub3c7XG4gICAgbG9kYXNoLnBhZCA9IHBhZDtcbiAgICBsb2Rhc2gucGFkRW5kID0gcGFkRW5kO1xuICAgIGxvZGFzaC5wYWRTdGFydCA9IHBhZFN0YXJ0O1xuICAgIGxvZGFzaC5wYXJzZUludCA9IHBhcnNlSW50O1xuICAgIGxvZGFzaC5yYW5kb20gPSByYW5kb207XG4gICAgbG9kYXNoLnJlZHVjZSA9IHJlZHVjZTtcbiAgICBsb2Rhc2gucmVkdWNlUmlnaHQgPSByZWR1Y2VSaWdodDtcbiAgICBsb2Rhc2gucmVwZWF0ID0gcmVwZWF0O1xuICAgIGxvZGFzaC5yZXBsYWNlID0gcmVwbGFjZTtcbiAgICBsb2Rhc2gucmVzdWx0ID0gcmVzdWx0O1xuICAgIGxvZGFzaC5yb3VuZCA9IHJvdW5kO1xuICAgIGxvZGFzaC5ydW5JbkNvbnRleHQgPSBydW5JbkNvbnRleHQ7XG4gICAgbG9kYXNoLnNhbXBsZSA9IHNhbXBsZTtcbiAgICBsb2Rhc2guc2l6ZSA9IHNpemU7XG4gICAgbG9kYXNoLnNuYWtlQ2FzZSA9IHNuYWtlQ2FzZTtcbiAgICBsb2Rhc2guc29tZSA9IHNvbWU7XG4gICAgbG9kYXNoLnNvcnRlZEluZGV4ID0gc29ydGVkSW5kZXg7XG4gICAgbG9kYXNoLnNvcnRlZEluZGV4QnkgPSBzb3J0ZWRJbmRleEJ5O1xuICAgIGxvZGFzaC5zb3J0ZWRJbmRleE9mID0gc29ydGVkSW5kZXhPZjtcbiAgICBsb2Rhc2guc29ydGVkTGFzdEluZGV4ID0gc29ydGVkTGFzdEluZGV4O1xuICAgIGxvZGFzaC5zb3J0ZWRMYXN0SW5kZXhCeSA9IHNvcnRlZExhc3RJbmRleEJ5O1xuICAgIGxvZGFzaC5zb3J0ZWRMYXN0SW5kZXhPZiA9IHNvcnRlZExhc3RJbmRleE9mO1xuICAgIGxvZGFzaC5zdGFydENhc2UgPSBzdGFydENhc2U7XG4gICAgbG9kYXNoLnN0YXJ0c1dpdGggPSBzdGFydHNXaXRoO1xuICAgIGxvZGFzaC5zdWJ0cmFjdCA9IHN1YnRyYWN0O1xuICAgIGxvZGFzaC5zdW0gPSBzdW07XG4gICAgbG9kYXNoLnN1bUJ5ID0gc3VtQnk7XG4gICAgbG9kYXNoLnRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgbG9kYXNoLnRpbWVzID0gdGltZXM7XG4gICAgbG9kYXNoLnRvRmluaXRlID0gdG9GaW5pdGU7XG4gICAgbG9kYXNoLnRvSW50ZWdlciA9IHRvSW50ZWdlcjtcbiAgICBsb2Rhc2gudG9MZW5ndGggPSB0b0xlbmd0aDtcbiAgICBsb2Rhc2gudG9Mb3dlciA9IHRvTG93ZXI7XG4gICAgbG9kYXNoLnRvTnVtYmVyID0gdG9OdW1iZXI7XG4gICAgbG9kYXNoLnRvU2FmZUludGVnZXIgPSB0b1NhZmVJbnRlZ2VyO1xuICAgIGxvZGFzaC50b1N0cmluZyA9IHRvU3RyaW5nO1xuICAgIGxvZGFzaC50b1VwcGVyID0gdG9VcHBlcjtcbiAgICBsb2Rhc2gudHJpbSA9IHRyaW07XG4gICAgbG9kYXNoLnRyaW1FbmQgPSB0cmltRW5kO1xuICAgIGxvZGFzaC50cmltU3RhcnQgPSB0cmltU3RhcnQ7XG4gICAgbG9kYXNoLnRydW5jYXRlID0gdHJ1bmNhdGU7XG4gICAgbG9kYXNoLnVuZXNjYXBlID0gdW5lc2NhcGU7XG4gICAgbG9kYXNoLnVuaXF1ZUlkID0gdW5pcXVlSWQ7XG4gICAgbG9kYXNoLnVwcGVyQ2FzZSA9IHVwcGVyQ2FzZTtcbiAgICBsb2Rhc2gudXBwZXJGaXJzdCA9IHVwcGVyRmlyc3Q7XG5cbiAgICAvLyBBZGQgYWxpYXNlcy5cbiAgICBsb2Rhc2guZWFjaCA9IGZvckVhY2g7XG4gICAgbG9kYXNoLmVhY2hSaWdodCA9IGZvckVhY2hSaWdodDtcbiAgICBsb2Rhc2guZmlyc3QgPSBoZWFkO1xuXG4gICAgbWl4aW4obG9kYXNoLCAoZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgc291cmNlID0ge307XG4gICAgICBiYXNlRm9yT3duKGxvZGFzaCwgZnVuY3Rpb24oZnVuYywgbWV0aG9kTmFtZSkge1xuICAgICAgICBpZiAoIWhhc093blByb3BlcnR5LmNhbGwobG9kYXNoLnByb3RvdHlwZSwgbWV0aG9kTmFtZSkpIHtcbiAgICAgICAgICBzb3VyY2VbbWV0aG9kTmFtZV0gPSBmdW5jO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgfSgpKSwgeyAnY2hhaW4nOiBmYWxzZSB9KTtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIFRoZSBzZW1hbnRpYyB2ZXJzaW9uIG51bWJlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgbG9kYXNoLlZFUlNJT04gPSBWRVJTSU9OO1xuXG4gICAgLy8gQXNzaWduIGRlZmF1bHQgcGxhY2Vob2xkZXJzLlxuICAgIGFycmF5RWFjaChbJ2JpbmQnLCAnYmluZEtleScsICdjdXJyeScsICdjdXJyeVJpZ2h0JywgJ3BhcnRpYWwnLCAncGFydGlhbFJpZ2h0J10sIGZ1bmN0aW9uKG1ldGhvZE5hbWUpIHtcbiAgICAgIGxvZGFzaFttZXRob2ROYW1lXS5wbGFjZWhvbGRlciA9IGxvZGFzaDtcbiAgICB9KTtcblxuICAgIC8vIEFkZCBgTGF6eVdyYXBwZXJgIG1ldGhvZHMgZm9yIGBfLmRyb3BgIGFuZCBgXy50YWtlYCB2YXJpYW50cy5cbiAgICBhcnJheUVhY2goWydkcm9wJywgJ3Rha2UnXSwgZnVuY3Rpb24obWV0aG9kTmFtZSwgaW5kZXgpIHtcbiAgICAgIExhenlXcmFwcGVyLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgbiA9IG4gPT09IHVuZGVmaW5lZCA/IDEgOiBuYXRpdmVNYXgodG9JbnRlZ2VyKG4pLCAwKTtcblxuICAgICAgICB2YXIgcmVzdWx0ID0gKHRoaXMuX19maWx0ZXJlZF9fICYmICFpbmRleClcbiAgICAgICAgICA/IG5ldyBMYXp5V3JhcHBlcih0aGlzKVxuICAgICAgICAgIDogdGhpcy5jbG9uZSgpO1xuXG4gICAgICAgIGlmIChyZXN1bHQuX19maWx0ZXJlZF9fKSB7XG4gICAgICAgICAgcmVzdWx0Ll9fdGFrZUNvdW50X18gPSBuYXRpdmVNaW4obiwgcmVzdWx0Ll9fdGFrZUNvdW50X18pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdC5fX3ZpZXdzX18ucHVzaCh7XG4gICAgICAgICAgICAnc2l6ZSc6IG5hdGl2ZU1pbihuLCBNQVhfQVJSQVlfTEVOR1RIKSxcbiAgICAgICAgICAgICd0eXBlJzogbWV0aG9kTmFtZSArIChyZXN1bHQuX19kaXJfXyA8IDAgPyAnUmlnaHQnIDogJycpXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG5cbiAgICAgIExhenlXcmFwcGVyLnByb3RvdHlwZVttZXRob2ROYW1lICsgJ1JpZ2h0J10gPSBmdW5jdGlvbihuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJldmVyc2UoKVttZXRob2ROYW1lXShuKS5yZXZlcnNlKCk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyB0aGF0IGFjY2VwdCBhbiBgaXRlcmF0ZWVgIHZhbHVlLlxuICAgIGFycmF5RWFjaChbJ2ZpbHRlcicsICdtYXAnLCAndGFrZVdoaWxlJ10sIGZ1bmN0aW9uKG1ldGhvZE5hbWUsIGluZGV4KSB7XG4gICAgICB2YXIgdHlwZSA9IGluZGV4ICsgMSxcbiAgICAgICAgICBpc0ZpbHRlciA9IHR5cGUgPT0gTEFaWV9GSUxURVJfRkxBRyB8fCB0eXBlID09IExBWllfV0hJTEVfRkxBRztcblxuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuY2xvbmUoKTtcbiAgICAgICAgcmVzdWx0Ll9faXRlcmF0ZWVzX18ucHVzaCh7XG4gICAgICAgICAgJ2l0ZXJhdGVlJzogZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpLFxuICAgICAgICAgICd0eXBlJzogdHlwZVxuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0Ll9fZmlsdGVyZWRfXyA9IHJlc3VsdC5fX2ZpbHRlcmVkX18gfHwgaXNGaWx0ZXI7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyBmb3IgYF8uaGVhZGAgYW5kIGBfLmxhc3RgLlxuICAgIGFycmF5RWFjaChbJ2hlYWQnLCAnbGFzdCddLCBmdW5jdGlvbihtZXRob2ROYW1lLCBpbmRleCkge1xuICAgICAgdmFyIHRha2VOYW1lID0gJ3Rha2UnICsgKGluZGV4ID8gJ1JpZ2h0JyA6ICcnKTtcblxuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzW3Rha2VOYW1lXSgxKS52YWx1ZSgpWzBdO1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIC8vIEFkZCBgTGF6eVdyYXBwZXJgIG1ldGhvZHMgZm9yIGBfLmluaXRpYWxgIGFuZCBgXy50YWlsYC5cbiAgICBhcnJheUVhY2goWydpbml0aWFsJywgJ3RhaWwnXSwgZnVuY3Rpb24obWV0aG9kTmFtZSwgaW5kZXgpIHtcbiAgICAgIHZhciBkcm9wTmFtZSA9ICdkcm9wJyArIChpbmRleCA/ICcnIDogJ1JpZ2h0Jyk7XG5cbiAgICAgIExhenlXcmFwcGVyLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fX2ZpbHRlcmVkX18gPyBuZXcgTGF6eVdyYXBwZXIodGhpcykgOiB0aGlzW2Ryb3BOYW1lXSgxKTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuY29tcGFjdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKGlkZW50aXR5KTtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLmZpbmQgPSBmdW5jdGlvbihwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlcihwcmVkaWNhdGUpLmhlYWQoKTtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLmZpbmRMYXN0ID0gZnVuY3Rpb24ocHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXZlcnNlKCkuZmluZChwcmVkaWNhdGUpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuaW52b2tlTWFwID0gYmFzZVJlc3QoZnVuY3Rpb24ocGF0aCwgYXJncykge1xuICAgICAgaWYgKHR5cGVvZiBwYXRoID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMYXp5V3JhcHBlcih0aGlzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gYmFzZUludm9rZSh2YWx1ZSwgcGF0aCwgYXJncyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5yZWplY3QgPSBmdW5jdGlvbihwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlcihuZWdhdGUoZ2V0SXRlcmF0ZWUocHJlZGljYXRlKSkpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gICAgICBzdGFydCA9IHRvSW50ZWdlcihzdGFydCk7XG5cbiAgICAgIHZhciByZXN1bHQgPSB0aGlzO1xuICAgICAgaWYgKHJlc3VsdC5fX2ZpbHRlcmVkX18gJiYgKHN0YXJ0ID4gMCB8fCBlbmQgPCAwKSkge1xuICAgICAgICByZXR1cm4gbmV3IExhenlXcmFwcGVyKHJlc3VsdCk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC50YWtlUmlnaHQoLXN0YXJ0KTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhcnQpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmRyb3Aoc3RhcnQpO1xuICAgICAgfVxuICAgICAgaWYgKGVuZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGVuZCA9IHRvSW50ZWdlcihlbmQpO1xuICAgICAgICByZXN1bHQgPSBlbmQgPCAwID8gcmVzdWx0LmRyb3BSaWdodCgtZW5kKSA6IHJlc3VsdC50YWtlKGVuZCAtIHN0YXJ0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS50YWtlUmlnaHRXaGlsZSA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucmV2ZXJzZSgpLnRha2VXaGlsZShwcmVkaWNhdGUpLnJldmVyc2UoKTtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRha2UoTUFYX0FSUkFZX0xFTkdUSCk7XG4gICAgfTtcblxuICAgIC8vIEFkZCBgTGF6eVdyYXBwZXJgIG1ldGhvZHMgdG8gYGxvZGFzaC5wcm90b3R5cGVgLlxuICAgIGJhc2VGb3JPd24oTGF6eVdyYXBwZXIucHJvdG90eXBlLCBmdW5jdGlvbihmdW5jLCBtZXRob2ROYW1lKSB7XG4gICAgICB2YXIgY2hlY2tJdGVyYXRlZSA9IC9eKD86ZmlsdGVyfGZpbmR8bWFwfHJlamVjdCl8V2hpbGUkLy50ZXN0KG1ldGhvZE5hbWUpLFxuICAgICAgICAgIGlzVGFrZXIgPSAvXig/OmhlYWR8bGFzdCkkLy50ZXN0KG1ldGhvZE5hbWUpLFxuICAgICAgICAgIGxvZGFzaEZ1bmMgPSBsb2Rhc2hbaXNUYWtlciA/ICgndGFrZScgKyAobWV0aG9kTmFtZSA9PSAnbGFzdCcgPyAnUmlnaHQnIDogJycpKSA6IG1ldGhvZE5hbWVdLFxuICAgICAgICAgIHJldFVud3JhcHBlZCA9IGlzVGFrZXIgfHwgL15maW5kLy50ZXN0KG1ldGhvZE5hbWUpO1xuXG4gICAgICBpZiAoIWxvZGFzaEZ1bmMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbG9kYXNoLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLl9fd3JhcHBlZF9fLFxuICAgICAgICAgICAgYXJncyA9IGlzVGFrZXIgPyBbMV0gOiBhcmd1bWVudHMsXG4gICAgICAgICAgICBpc0xhenkgPSB2YWx1ZSBpbnN0YW5jZW9mIExhenlXcmFwcGVyLFxuICAgICAgICAgICAgaXRlcmF0ZWUgPSBhcmdzWzBdLFxuICAgICAgICAgICAgdXNlTGF6eSA9IGlzTGF6eSB8fCBpc0FycmF5KHZhbHVlKTtcblxuICAgICAgICB2YXIgaW50ZXJjZXB0b3IgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgIHZhciByZXN1bHQgPSBsb2Rhc2hGdW5jLmFwcGx5KGxvZGFzaCwgYXJyYXlQdXNoKFt2YWx1ZV0sIGFyZ3MpKTtcbiAgICAgICAgICByZXR1cm4gKGlzVGFrZXIgJiYgY2hhaW5BbGwpID8gcmVzdWx0WzBdIDogcmVzdWx0O1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh1c2VMYXp5ICYmIGNoZWNrSXRlcmF0ZWUgJiYgdHlwZW9mIGl0ZXJhdGVlID09ICdmdW5jdGlvbicgJiYgaXRlcmF0ZWUubGVuZ3RoICE9IDEpIHtcbiAgICAgICAgICAvLyBBdm9pZCBsYXp5IHVzZSBpZiB0aGUgaXRlcmF0ZWUgaGFzIGEgXCJsZW5ndGhcIiB2YWx1ZSBvdGhlciB0aGFuIGAxYC5cbiAgICAgICAgICBpc0xhenkgPSB1c2VMYXp5ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNoYWluQWxsID0gdGhpcy5fX2NoYWluX18sXG4gICAgICAgICAgICBpc0h5YnJpZCA9ICEhdGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgsXG4gICAgICAgICAgICBpc1Vud3JhcHBlZCA9IHJldFVud3JhcHBlZCAmJiAhY2hhaW5BbGwsXG4gICAgICAgICAgICBvbmx5TGF6eSA9IGlzTGF6eSAmJiAhaXNIeWJyaWQ7XG5cbiAgICAgICAgaWYgKCFyZXRVbndyYXBwZWQgJiYgdXNlTGF6eSkge1xuICAgICAgICAgIHZhbHVlID0gb25seUxhenkgPyB2YWx1ZSA6IG5ldyBMYXp5V3JhcHBlcih0aGlzKTtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gZnVuYy5hcHBseSh2YWx1ZSwgYXJncyk7XG4gICAgICAgICAgcmVzdWx0Ll9fYWN0aW9uc19fLnB1c2goeyAnZnVuYyc6IHRocnUsICdhcmdzJzogW2ludGVyY2VwdG9yXSwgJ3RoaXNBcmcnOiB1bmRlZmluZWQgfSk7XG4gICAgICAgICAgcmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHJlc3VsdCwgY2hhaW5BbGwpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1Vud3JhcHBlZCAmJiBvbmx5TGF6eSkge1xuICAgICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IHRoaXMudGhydShpbnRlcmNlcHRvcik7XG4gICAgICAgIHJldHVybiBpc1Vud3JhcHBlZCA/IChpc1Rha2VyID8gcmVzdWx0LnZhbHVlKClbMF0gOiByZXN1bHQudmFsdWUoKSkgOiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBBcnJheWAgbWV0aG9kcyB0byBgbG9kYXNoLnByb3RvdHlwZWAuXG4gICAgYXJyYXlFYWNoKFsncG9wJywgJ3B1c2gnLCAnc2hpZnQnLCAnc29ydCcsICdzcGxpY2UnLCAndW5zaGlmdCddLCBmdW5jdGlvbihtZXRob2ROYW1lKSB7XG4gICAgICB2YXIgZnVuYyA9IGFycmF5UHJvdG9bbWV0aG9kTmFtZV0sXG4gICAgICAgICAgY2hhaW5OYW1lID0gL14oPzpwdXNofHNvcnR8dW5zaGlmdCkkLy50ZXN0KG1ldGhvZE5hbWUpID8gJ3RhcCcgOiAndGhydScsXG4gICAgICAgICAgcmV0VW53cmFwcGVkID0gL14oPzpwb3B8c2hpZnQpJC8udGVzdChtZXRob2ROYW1lKTtcblxuICAgICAgbG9kYXNoLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgaWYgKHJldFVud3JhcHBlZCAmJiAhdGhpcy5fX2NoYWluX18pIHtcbiAgICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlKCk7XG4gICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkoaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdLCBhcmdzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpc1tjaGFpbk5hbWVdKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkoaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdLCBhcmdzKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gTWFwIG1pbmlmaWVkIG1ldGhvZCBuYW1lcyB0byB0aGVpciByZWFsIG5hbWVzLlxuICAgIGJhc2VGb3JPd24oTGF6eVdyYXBwZXIucHJvdG90eXBlLCBmdW5jdGlvbihmdW5jLCBtZXRob2ROYW1lKSB7XG4gICAgICB2YXIgbG9kYXNoRnVuYyA9IGxvZGFzaFttZXRob2ROYW1lXTtcbiAgICAgIGlmIChsb2Rhc2hGdW5jKSB7XG4gICAgICAgIHZhciBrZXkgPSBsb2Rhc2hGdW5jLm5hbWUgKyAnJztcbiAgICAgICAgaWYgKCFoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlYWxOYW1lcywga2V5KSkge1xuICAgICAgICAgIHJlYWxOYW1lc1trZXldID0gW107XG4gICAgICAgIH1cbiAgICAgICAgcmVhbE5hbWVzW2tleV0ucHVzaCh7ICduYW1lJzogbWV0aG9kTmFtZSwgJ2Z1bmMnOiBsb2Rhc2hGdW5jIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmVhbE5hbWVzW2NyZWF0ZUh5YnJpZCh1bmRlZmluZWQsIFdSQVBfQklORF9LRVlfRkxBRykubmFtZV0gPSBbe1xuICAgICAgJ25hbWUnOiAnd3JhcHBlcicsXG4gICAgICAnZnVuYyc6IHVuZGVmaW5lZFxuICAgIH1dO1xuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYExhenlXcmFwcGVyYC5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuY2xvbmUgPSBsYXp5Q2xvbmU7XG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLnJldmVyc2UgPSBsYXp5UmV2ZXJzZTtcbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUudmFsdWUgPSBsYXp5VmFsdWU7XG5cbiAgICAvLyBBZGQgY2hhaW4gc2VxdWVuY2UgbWV0aG9kcyB0byB0aGUgYGxvZGFzaGAgd3JhcHBlci5cbiAgICBsb2Rhc2gucHJvdG90eXBlLmF0ID0gd3JhcHBlckF0O1xuICAgIGxvZGFzaC5wcm90b3R5cGUuY2hhaW4gPSB3cmFwcGVyQ2hhaW47XG4gICAgbG9kYXNoLnByb3RvdHlwZS5jb21taXQgPSB3cmFwcGVyQ29tbWl0O1xuICAgIGxvZGFzaC5wcm90b3R5cGUubmV4dCA9IHdyYXBwZXJOZXh0O1xuICAgIGxvZGFzaC5wcm90b3R5cGUucGxhbnQgPSB3cmFwcGVyUGxhbnQ7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5yZXZlcnNlID0gd3JhcHBlclJldmVyc2U7XG4gICAgbG9kYXNoLnByb3RvdHlwZS50b0pTT04gPSBsb2Rhc2gucHJvdG90eXBlLnZhbHVlT2YgPSBsb2Rhc2gucHJvdG90eXBlLnZhbHVlID0gd3JhcHBlclZhbHVlO1xuXG4gICAgLy8gQWRkIGxhenkgYWxpYXNlcy5cbiAgICBsb2Rhc2gucHJvdG90eXBlLmZpcnN0ID0gbG9kYXNoLnByb3RvdHlwZS5oZWFkO1xuXG4gICAgaWYgKHN5bUl0ZXJhdG9yKSB7XG4gICAgICBsb2Rhc2gucHJvdG90eXBlW3N5bUl0ZXJhdG9yXSA9IHdyYXBwZXJUb0l0ZXJhdG9yO1xuICAgIH1cbiAgICByZXR1cm4gbG9kYXNoO1xuICB9KTtcblxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAvLyBFeHBvcnQgbG9kYXNoLlxuICB2YXIgXyA9IHJ1bkluQ29udGV4dCgpO1xuXG4gIC8vIFNvbWUgQU1EIGJ1aWxkIG9wdGltaXplcnMsIGxpa2Ugci5qcywgY2hlY2sgZm9yIGNvbmRpdGlvbiBwYXR0ZXJucyBsaWtlOlxuICBpZiAodHlwZW9mIGRlZmluZSA9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09ICdvYmplY3QnICYmIGRlZmluZS5hbWQpIHtcbiAgICAvLyBFeHBvc2UgTG9kYXNoIG9uIHRoZSBnbG9iYWwgb2JqZWN0IHRvIHByZXZlbnQgZXJyb3JzIHdoZW4gTG9kYXNoIGlzXG4gICAgLy8gbG9hZGVkIGJ5IGEgc2NyaXB0IHRhZyBpbiB0aGUgcHJlc2VuY2Ugb2YgYW4gQU1EIGxvYWRlci5cbiAgICAvLyBTZWUgaHR0cDovL3JlcXVpcmVqcy5vcmcvZG9jcy9lcnJvcnMuaHRtbCNtaXNtYXRjaCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgIC8vIFVzZSBgXy5ub0NvbmZsaWN0YCB0byByZW1vdmUgTG9kYXNoIGZyb20gdGhlIGdsb2JhbCBvYmplY3QuXG4gICAgcm9vdC5fID0gXztcblxuICAgIC8vIERlZmluZSBhcyBhbiBhbm9ueW1vdXMgbW9kdWxlIHNvLCB0aHJvdWdoIHBhdGggbWFwcGluZywgaXQgY2FuIGJlXG4gICAgLy8gcmVmZXJlbmNlZCBhcyB0aGUgXCJ1bmRlcnNjb3JlXCIgbW9kdWxlLlxuICAgIGRlZmluZShmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBfO1xuICAgIH0pO1xuICB9XG4gIC8vIENoZWNrIGZvciBgZXhwb3J0c2AgYWZ0ZXIgYGRlZmluZWAgaW4gY2FzZSBhIGJ1aWxkIG9wdGltaXplciBhZGRzIGl0LlxuICBlbHNlIGlmIChmcmVlTW9kdWxlKSB7XG4gICAgLy8gRXhwb3J0IGZvciBOb2RlLmpzLlxuICAgIChmcmVlTW9kdWxlLmV4cG9ydHMgPSBfKS5fID0gXztcbiAgICAvLyBFeHBvcnQgZm9yIENvbW1vbkpTIHN1cHBvcnQuXG4gICAgZnJlZUV4cG9ydHMuXyA9IF87XG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gRXhwb3J0IHRvIHRoZSBnbG9iYWwgb2JqZWN0LlxuICAgIHJvb3QuXyA9IF87XG4gIH1cbn0uY2FsbCh0aGlzKSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVmFsdWUgPSBleHBvcnRzLkFyaXR5ID0gZXhwb3J0cy5GbG9hdE9yTWlsbGlzZWNvbmRzID0gdm9pZCAwO1xuY29uc3QgZGVjaW1hbF9qc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJkZWNpbWFsLmpzXCIpKTtcbmNvbnN0IGxvZGFzaF8xID0gcmVxdWlyZShcImxvZGFzaFwiKTtcbmNvbnN0IGRhdGV0aW1lUmUgPSBuZXcgUmVnRXhwKCdbMS05XVswLTldezN9LVswMV1bMC05XS1bMC0zXVswLTldW1QgXVswLTJdWzAtOV06WzAtNV1bMC05XScpO1xuY29uc3QgRmxvYXRPck1pbGxpc2Vjb25kcyA9ICh2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IHYgPSB2YWx1ZS50cmltKCk7XG4gICAgaWYgKHYgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBuZXcgZGVjaW1hbF9qc18xLmRlZmF1bHQoMCk7XG4gICAgfVxuICAgIGlmIChkYXRldGltZVJlLnRlc3QodikpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBkZWNpbWFsX2pzXzEuZGVmYXVsdChuZXcgRGF0ZSh2KS52YWx1ZU9mKCkpO1xuICAgIH1cbiAgICBjb25zdCBkZWNpbWFsVmFsdWUgPSBuZXcgZGVjaW1hbF9qc18xLmRlZmF1bHQodik7XG4gICAgcmV0dXJuIGRlY2ltYWxWYWx1ZS5pc05hTigpID8gbmV3IGRlY2ltYWxfanNfMS5kZWZhdWx0KDApIDogZGVjaW1hbFZhbHVlO1xufTtcbmV4cG9ydHMuRmxvYXRPck1pbGxpc2Vjb25kcyA9IEZsb2F0T3JNaWxsaXNlY29uZHM7XG5jbGFzcyBBcml0eSB7XG4gICAgY29uc3RydWN0b3Iocm93cywgY29sdW1ucykge1xuICAgICAgICB0aGlzLmlzUm93ID0gKCkgPT4gdGhpcy5yb3dzID4gMSAmJiB0aGlzLmNvbHMgPT09IDE7XG4gICAgICAgIHRoaXMuaXNDb2x1bW4gPSAoKSA9PiB0aGlzLnJvd3MgPT09IDEgJiYgdGhpcy5jb2xzID4gMTtcbiAgICAgICAgdGhpcy5pc0NlbGwgPSAoKSA9PiB0aGlzLnJvd3MgPT09IDEgJiYgdGhpcy5jb2xzID09PSAxO1xuICAgICAgICB0aGlzLnJvd3MgPSByb3dzO1xuICAgICAgICB0aGlzLmNvbHMgPSBjb2x1bW5zO1xuICAgIH1cbn1cbmV4cG9ydHMuQXJpdHkgPSBBcml0eTtcbmNsYXNzIFZhbHVlIHtcbiAgICBjb25zdHJ1Y3Rvcih2YWwpIHtcbiAgICAgICAgdGhpcy5nZXQgPSAocm93LCBjb2x1bW4pID0+IHRoaXMudmFsW3Jvd11bY29sdW1uXTtcbiAgICAgICAgdGhpcy5nZXRBc051bWJlciA9IChyb3csIGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldChyb3csIGNvbHVtbik7XG4gICAgICAgICAgICByZXR1cm4gZXhwb3J0cy5GbG9hdE9yTWlsbGlzZWNvbmRzKHZhbHVlKTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGdldEFyaXR5IHJldHVybnMgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGNvbnRhaW5lZCB2YWx1ZSwgaW4gcm93cyBhbmQgY29sdW1uc1xuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5nZXRBcml0eSA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1heENvbHMgPSB0aGlzLnZhbC5yZWR1Y2UoKG1heCwgY3VycmVudFJvdykgPT4gTWF0aC5tYXgobWF4LCBjdXJyZW50Um93Lmxlbmd0aCksIDApO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBBcml0eSh0aGlzLnZhbC5sZW5ndGgsIG1heENvbHMpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnRvU3RyaW5nID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0QXJpdHkoKS5pc0NlbGwoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldCgwLCAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBgWyR7bG9kYXNoXzEuZmxhdHRlbih0aGlzLnZhbClcbiAgICAgICAgICAgICAgICAubWFwKCh2YWwpID0+IHZhbC50cmltKCkpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigodmFsKSA9PiB2YWwgIT09ICcnKVxuICAgICAgICAgICAgICAgIC5qb2luKCcsICcpfV1gO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnZhbCA9IHZhbDtcbiAgICB9XG59XG5leHBvcnRzLlZhbHVlID0gVmFsdWU7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQWxnZWJyYWljT3BlcmF0aW9uID0gdm9pZCAwO1xuY29uc3QgbmV2ZXJ0aHJvd18xID0gcmVxdWlyZShcIi4uL25ldmVydGhyb3cvbmV2ZXJ0aHJvd1wiKTtcbmNvbnN0IGFzdF91dGlsc18xID0gcmVxdWlyZShcIi4vYXN0X3V0aWxzXCIpO1xuY29uc3QgY2FsY18xID0gcmVxdWlyZShcIi4vY2FsY1wiKTtcbmNvbnN0IHJlc3VsdHNfMSA9IHJlcXVpcmUoXCIuL3Jlc3VsdHNcIik7XG5jb25zdCBsb2Rhc2hfMSA9IHJlcXVpcmUoXCJsb2Rhc2hcIik7XG5jbGFzcyBBbGdlYnJhaWNPcGVyYXRpb24ge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUpIHtcbiAgICAgICAgdGhpcy5nZXRWYWx1ZSA9ICh0YWJsZSwgY2VsbCkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLm9wZXJhdG9yKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnKyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZCh0YWJsZSwgY2VsbCk7XG4gICAgICAgICAgICAgICAgY2FzZSAnLSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN1YnRyYWN0KHRhYmxlLCBjZWxsKTtcbiAgICAgICAgICAgICAgICBjYXNlICcqJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubXVsdGlwbHkodGFibGUsIGNlbGwpO1xuICAgICAgICAgICAgICAgIGNhc2UgJy8nOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kaXZpZGUodGFibGUsIGNlbGwpO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEuZXJyKEVycm9yKCdJbnZhbGlkIGFsZ2JyYWljIG9wZXJhdG9yOiAnICsgdGhpcy5vcGVyYXRvcikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogd2l0aENlbGxBbmRSYW5nZSBhaWRzIGluIHBlcmZvcm1pbmcgYSBudW1lcmljIG9wZXJhdGlvbiBvbiBjZWxscyBpbiBhXG4gICAgICAgICAqIHRhYmxlIHdoZXJlIGF0IGxlYXN0IG9uZSBvZiB0aGUgdHdvIG9wZXJhbmRzIGlzIGEgc2luZ2xlIGNlbGwuIE9wdGlvbmFsbHksXG4gICAgICAgICAqIHRoZSB0d28gc2lkZXMgb2YgdGhlIG9wZXJhdGlvbiBjYW4gYmUgc3dhcHBlZCwgc28gdGhlIHNpbmdsZSBjZWxsIGlzXG4gICAgICAgICAqIGFsd2F5cyBvbiB0aGUgcmlnaHQuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLndpdGhDZWxsQW5kUmFuZ2UgPSAodGFibGUsIGNlbGwsIG5hbWUsIGNhbkhhdmVSaWdodFJhbmdlLCBmbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGVmdFZhbHVlID0gdGhpcy5sZWZ0U291cmNlLmdldFZhbHVlKHRhYmxlLCBjZWxsKTtcbiAgICAgICAgICAgIGlmIChsZWZ0VmFsdWUuaXNFcnIoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEuZXJyKGxlZnRWYWx1ZS5lcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByaWdodFZhbHVlID0gdGhpcy5yaWdodFNvdXJjZS5nZXRWYWx1ZSh0YWJsZSwgY2VsbCk7XG4gICAgICAgICAgICBpZiAocmlnaHRWYWx1ZS5pc0VycigpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIocmlnaHRWYWx1ZS5lcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBsZWZ0QXJpdHkgPSBsZWZ0VmFsdWUudmFsdWUuZ2V0QXJpdHkoKTtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0QXJpdHkgPSByaWdodFZhbHVlLnZhbHVlLmdldEFyaXR5KCk7XG4gICAgICAgICAgICBpZiAoIXJpZ2h0QXJpdHkuaXNDZWxsKCkgJiYgIWxlZnRBcml0eS5pc0NlbGwoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEuZXJyKEVycm9yKGBBdCBsZWFzdCBvbmUgb3BlcmFuZCBpbiBhbGdlYnJhaWMgXCIke25hbWV9XCIgbXVzdCBiZSBhIHNpbmdsZSBjZWxsLmApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghcmlnaHRBcml0eS5pc0NlbGwoKSAmJiAhY2FuSGF2ZVJpZ2h0UmFuZ2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycihFcnJvcihgUmlnaHQgb3BlcmFuZCBpbiBhbGdlYnJhaWMgXCIke25hbWV9XCIgbXVzdCBiZSBhIHNpbmdsZSBjZWxsLmApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyaWdodEFyaXR5LmlzQ2VsbCgpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmlnaHRDZWxsVmFsdWUgPSByaWdodFZhbHVlLnZhbHVlLmdldEFzTnVtYmVyKDAsIDApO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGxvZGFzaF8xLm1hcChsZWZ0VmFsdWUudmFsdWUudmFsLCAoY3VycmVudFJvdykgPT4gbG9kYXNoXzEubWFwKGN1cnJlbnRSb3csIChjdXJyZW50Q2VsbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsZWZ0Q2VsbFZhbHVlID0gcmVzdWx0c18xLkZsb2F0T3JNaWxsaXNlY29uZHMoY3VycmVudENlbGwpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm4obGVmdENlbGxWYWx1ZSwgcmlnaHRDZWxsVmFsdWUpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEub2sobmV3IHJlc3VsdHNfMS5WYWx1ZShyZXN1bHQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGxlZnRDZWxsVmFsdWUgPSBsZWZ0VmFsdWUudmFsdWUuZ2V0QXNOdW1iZXIoMCwgMCk7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBsb2Rhc2hfMS5tYXAocmlnaHRWYWx1ZS52YWx1ZS52YWwsIChjdXJyZW50Um93KSA9PiBsb2Rhc2hfMS5tYXAoY3VycmVudFJvdywgKGN1cnJlbnRDZWxsKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmlnaHRDZWxsVmFsdWUgPSByZXN1bHRzXzEuRmxvYXRPck1pbGxpc2Vjb25kcyhjdXJyZW50Q2VsbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZuKGxlZnRDZWxsVmFsdWUsIHJpZ2h0Q2VsbFZhbHVlKS50b1N0cmluZygpO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhuZXcgcmVzdWx0c18xLlZhbHVlKHJlc3VsdCkpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmFkZCA9ICh0YWJsZSwgY2VsbCkgPT4gdGhpcy53aXRoQ2VsbEFuZFJhbmdlKHRhYmxlLCBjZWxsLCAnYWRkJywgdHJ1ZSwgKGxlZnQsIHJpZ2h0KSA9PiBsZWZ0LnBsdXMocmlnaHQpKTtcbiAgICAgICAgdGhpcy5zdWJ0cmFjdCA9ICh0YWJsZSwgY2VsbCkgPT4gdGhpcy53aXRoQ2VsbEFuZFJhbmdlKHRhYmxlLCBjZWxsLCAnc3VidHJhY3QnLCB0cnVlLCAobGVmdCwgcmlnaHQpID0+IGxlZnQubWludXMocmlnaHQpKTtcbiAgICAgICAgdGhpcy5tdWx0aXBseSA9ICh0YWJsZSwgY2VsbCkgPT4gdGhpcy53aXRoQ2VsbEFuZFJhbmdlKHRhYmxlLCBjZWxsLCAnbXVsdGlwbHknLCB0cnVlLCAobGVmdCwgcmlnaHQpID0+IGxlZnQudGltZXMocmlnaHQpKTtcbiAgICAgICAgdGhpcy5kaXZpZGUgPSAodGFibGUsIGNlbGwpID0+IHRoaXMud2l0aENlbGxBbmRSYW5nZSh0YWJsZSwgY2VsbCwgJ2RpdmlkZScsIGZhbHNlLCAobGVmdCwgcmlnaHQpID0+IGxlZnQuZGl2aWRlZEJ5KHJpZ2h0KSk7XG4gICAgICAgIGNvbnN0IHR5cGVFcnIgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LCAnYWxnZWJyYWljX29wZXJhdGlvbicpO1xuICAgICAgICBpZiAodHlwZUVycikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsZW5ndGhFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrQ2hpbGRMZW5ndGgoYXN0LCAzKTtcbiAgICAgICAgaWYgKGxlbmd0aEVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBsZW5ndGhFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjaGlsZFR5cGVFcnIgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LmNoaWxkcmVuWzFdLCAnYWxnZWJyYWljX29wZXJhdG9yJyk7XG4gICAgICAgIGlmIChjaGlsZFR5cGVFcnIpIHtcbiAgICAgICAgICAgIHRocm93IGNoaWxkVHlwZUVycjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wZXJhdG9yID0gYXN0LmNoaWxkcmVuWzFdLnRleHQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmxlZnRTb3VyY2UgPSBuZXcgY2FsY18xLlNvdXJjZShhc3QuY2hpbGRyZW5bMF0sIHRhYmxlKTtcbiAgICAgICAgICAgIHRoaXMucmlnaHRTb3VyY2UgPSBuZXcgY2FsY18xLlNvdXJjZShhc3QuY2hpbGRyZW5bMl0sIHRhYmxlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vIFN0aWxsIGluIGEgY29uc3RydWN0b3IsIHNvIG5vdGhpbmcgd2UgY2FuIGRvIGJ1dCB0aHJvdyBhZ2FpblxuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnRzLkFsZ2VicmFpY09wZXJhdGlvbiA9IEFsZ2VicmFpY09wZXJhdGlvbjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Db25kaXRpb25hbEZ1bmN0aW9uQ2FsbCA9IHZvaWQgMDtcbmNvbnN0IG5ldmVydGhyb3dfMSA9IHJlcXVpcmUoXCIuLi9uZXZlcnRocm93L25ldmVydGhyb3dcIik7XG5jb25zdCBhc3RfdXRpbHNfMSA9IHJlcXVpcmUoXCIuL2FzdF91dGlsc1wiKTtcbmNvbnN0IGNhbGNfMSA9IHJlcXVpcmUoXCIuL2NhbGNcIik7XG5jbGFzcyBDb25kaXRpb25hbEZ1bmN0aW9uQ2FsbCB7XG4gICAgY29uc3RydWN0b3IoYXN0LCB0YWJsZSkge1xuICAgICAgICB0aGlzLmdldFZhbHVlID0gKHRhYmxlLCBjZWxsKSA9PiB0aGlzLnByZWRpY2F0ZVxuICAgICAgICAgICAgLmV2YWwodGFibGUsIGNlbGwpXG4gICAgICAgICAgICAuYW5kVGhlbigocHJlZGljYXRlUmVzdWx0KSA9PiBwcmVkaWNhdGVSZXN1bHRcbiAgICAgICAgICAgID8gdGhpcy5sZWZ0U291cmNlLmdldFZhbHVlKHRhYmxlLCBjZWxsKVxuICAgICAgICAgICAgOiB0aGlzLnJpZ2h0U291cmNlLmdldFZhbHVlKHRhYmxlLCBjZWxsKSk7XG4gICAgICAgIGNvbnN0IHR5cGVFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrVHlwZShhc3QsICdjb25kaXRpb25hbF9mdW5jdGlvbl9jYWxsJyk7XG4gICAgICAgIGlmICh0eXBlRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IHR5cGVFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsZW5ndGhFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrQ2hpbGRMZW5ndGgoYXN0LCAzKTtcbiAgICAgICAgaWYgKGxlbmd0aEVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBsZW5ndGhFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5wcmVkaWNhdGUgPSBuZXcgUHJlZGljYXRlKGFzdC5jaGlsZHJlblswXSwgdGFibGUpO1xuICAgICAgICAgICAgdGhpcy5sZWZ0U291cmNlID0gbmV3IGNhbGNfMS5Tb3VyY2UoYXN0LmNoaWxkcmVuWzFdLCB0YWJsZSk7XG4gICAgICAgICAgICB0aGlzLnJpZ2h0U291cmNlID0gbmV3IGNhbGNfMS5Tb3VyY2UoYXN0LmNoaWxkcmVuWzJdLCB0YWJsZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAvLyBTdGlsbCBpbiBhIGNvbnN0cnVjdG9yLCBzbyBub3RoaW5nIHdlIGNhbiBkbyBidXQgdGhyb3cgYWdhaW5cbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5Db25kaXRpb25hbEZ1bmN0aW9uQ2FsbCA9IENvbmRpdGlvbmFsRnVuY3Rpb25DYWxsO1xuY2xhc3MgUHJlZGljYXRlIHtcbiAgICBjb25zdHJ1Y3Rvcihhc3QsIHRhYmxlKSB7XG4gICAgICAgIHRoaXMuZXZhbCA9ICh0YWJsZSwgY2VsbCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGVmdERhdGEgPSB0aGlzLmxlZnRTb3VyY2UuZ2V0VmFsdWUodGFibGUsIGNlbGwpO1xuICAgICAgICAgICAgaWYgKGxlZnREYXRhLmlzRXJyKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycihsZWZ0RGF0YS5lcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByaWdodERhdGEgPSB0aGlzLnJpZ2h0U291cmNlLmdldFZhbHVlKHRhYmxlLCBjZWxsKTtcbiAgICAgICAgICAgIGlmIChyaWdodERhdGEuaXNFcnIoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEuZXJyKHJpZ2h0RGF0YS5lcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBsZWZ0QXJpdHkgPSBsZWZ0RGF0YS52YWx1ZS5nZXRBcml0eSgpO1xuICAgICAgICAgICAgY29uc3QgcmlnaHRBcml0eSA9IHJpZ2h0RGF0YS52YWx1ZS5nZXRBcml0eSgpO1xuICAgICAgICAgICAgaWYgKCFsZWZ0QXJpdHkuaXNDZWxsKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycihFcnJvcignQ2FuIG9ubHkgdXNlIGNvbXBhcmlzb24gb3BlcmF0b3Igb24gYSBzaW5nbGUgY2VsbC4gTGVmdCBzaWRlIGlzIG5vdCBhIGNlbGwuJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFyaWdodEFyaXR5LmlzQ2VsbCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIoRXJyb3IoJ0NhbiBvbmx5IHVzZSBjb21wYXJpc29uIG9wZXJhdG9yIG9uIGEgc2luZ2xlIGNlbGwuIFJpZ2h0IHNpZGUgaXMgbm90IGEgY2VsbC4nKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBsZWZ0VmFsID0gbGVmdERhdGEudmFsdWUuZ2V0QXNOdW1iZXIoMCwgMCk7XG4gICAgICAgICAgICBjb25zdCByaWdodFZhbCA9IHJpZ2h0RGF0YS52YWx1ZS5nZXRBc051bWJlcigwLCAwKTtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5vcGVyYXRvcikge1xuICAgICAgICAgICAgICAgIGNhc2UgJz4nOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKGxlZnRWYWwuZ3JlYXRlclRoYW4ocmlnaHRWYWwpKTtcbiAgICAgICAgICAgICAgICBjYXNlICc+PSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEub2sobGVmdFZhbC5ncmVhdGVyVGhhbk9yRXF1YWxUbyhyaWdodFZhbCkpO1xuICAgICAgICAgICAgICAgIGNhc2UgJzwnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKGxlZnRWYWwubGVzc1RoYW4ocmlnaHRWYWwpKTtcbiAgICAgICAgICAgICAgICBjYXNlICc8PSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEub2sobGVmdFZhbC5sZXNzVGhhbk9yRXF1YWxUbyhyaWdodFZhbCkpO1xuICAgICAgICAgICAgICAgIGNhc2UgJz09JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhsZWZ0VmFsLmVxdWFscyhyaWdodFZhbCkpO1xuICAgICAgICAgICAgICAgIGNhc2UgJyE9JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayghbGVmdFZhbC5lcXVhbHMocmlnaHRWYWwpKTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycihFcnJvcignSW52YWxpZCBjb25kaXRpb25hbCBvcGVyYXRvcjogJyArIHRoaXMub3BlcmF0b3IpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgdHlwZUVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKGFzdCwgJ3ByZWRpY2F0ZScpO1xuICAgICAgICBpZiAodHlwZUVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGVuZ3RoRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja0NoaWxkTGVuZ3RoKGFzdCwgMyk7XG4gICAgICAgIGlmIChsZW5ndGhFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbGVuZ3RoRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2hpbGRUeXBlRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LmNoaWxkcmVuWzFdLCAnY29uZGl0aW9uYWxfb3BlcmF0b3InKTtcbiAgICAgICAgaWYgKGNoaWxkVHlwZUVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBjaGlsZFR5cGVFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wZXJhdG9yID0gYXN0LmNoaWxkcmVuWzFdLnRleHQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmxlZnRTb3VyY2UgPSBuZXcgY2FsY18xLlNvdXJjZShhc3QuY2hpbGRyZW5bMF0sIHRhYmxlKTtcbiAgICAgICAgICAgIHRoaXMucmlnaHRTb3VyY2UgPSBuZXcgY2FsY18xLlNvdXJjZShhc3QuY2hpbGRyZW5bMl0sIHRhYmxlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vIFN0aWxsIGluIGEgY29uc3RydWN0b3IsIHNvIG5vdGhpbmcgd2UgY2FuIGRvIGJ1dCB0aHJvdyBhZ2FpblxuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQ29uc3RhbnQgPSB2b2lkIDA7XG5jb25zdCBuZXZlcnRocm93XzEgPSByZXF1aXJlKFwiLi4vbmV2ZXJ0aHJvdy9uZXZlcnRocm93XCIpO1xuY29uc3QgYXN0X3V0aWxzXzEgPSByZXF1aXJlKFwiLi9hc3RfdXRpbHNcIik7XG5jb25zdCByZXN1bHRzXzEgPSByZXF1aXJlKFwiLi9yZXN1bHRzXCIpO1xuY2xhc3MgQ29uc3RhbnQge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUpIHtcbiAgICAgICAgY29uc3QgdHlwZUVyciA9IGFzdF91dGlsc18xLmNoZWNrVHlwZShhc3QsICdyZWFsJywgJ2Zsb2F0Jyk7XG4gICAgICAgIGlmICh0eXBlRXJyKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG11bHRpcGxpZXIgPSBhc3QudGV4dFswXSA9PT0gJy0nID8gLTEgOiAxO1xuICAgICAgICBpZiAoYXN0LnR5cGUgPT09ICdyZWFsJykge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG11bHRpcGxpZXIgKiBwYXJzZUludChhc3QuY2hpbGRyZW5bMF0udGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID1cbiAgICAgICAgICAgICAgICBtdWx0aXBsaWVyICpcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdChhc3QuY2hpbGRyZW5bMF0udGV4dCArICcuJyArIGFzdC5jaGlsZHJlblsxXS50ZXh0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXRWYWx1ZSh0YWJsZSwgY3VycmVudENlbGwpIHtcbiAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhuZXcgcmVzdWx0c18xLlZhbHVlKFtbdGhpcy52YWx1ZS50b1N0cmluZygpXV0pKTtcbiAgICB9XG59XG5leHBvcnRzLkNvbnN0YW50ID0gQ29uc3RhbnQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQWJzb2x1dGVDb2x1bW4gPSBleHBvcnRzLkNvbHVtbiA9IGV4cG9ydHMubmV3Q29sdW1uID0gdm9pZCAwO1xuY29uc3QgbmV2ZXJ0aHJvd18xID0gcmVxdWlyZShcIi4uL25ldmVydGhyb3cvbmV2ZXJ0aHJvd1wiKTtcbmNvbnN0IGFzdF91dGlsc18xID0gcmVxdWlyZShcIi4vYXN0X3V0aWxzXCIpO1xuY29uc3QgcmVzdWx0c18xID0gcmVxdWlyZShcIi4vcmVzdWx0c1wiKTtcbmNvbnN0IG5ld0NvbHVtbiA9IChhc3QsIHRhYmxlKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgc3dpdGNoIChhc3QudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAncmVsYXRpdmVfY29sdW1uJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyBSZWxhdGl2ZUNvbHVtbihhc3QsIHRhYmxlKSk7XG4gICAgICAgICAgICBjYXNlICdhYnNvbHV0ZV9jb2x1bW4nOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEub2sobmV3IEFic29sdXRlQ29sdW1uKGFzdCwgdGFibGUpKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIobmV3IEVycm9yKGBGb3JtdWxhIGVsZW1lbnQgJyR7YXN0LnRleHR9JyBpcyBhICR7YXN0LnR5cGV9IGJ1dCBleHBlY3RlZCBhbiBgICtcbiAgICAgICAgICAgICAgICAgICAgJ3JlbGF0dmVfY29sdW1uIG9yIGFic29sdXRlX2NvbHVtbiBpbiB0aGlzIHBvc2l0aW9uLicpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIoZXJyb3IpO1xuICAgIH1cbn07XG5leHBvcnRzLm5ld0NvbHVtbiA9IG5ld0NvbHVtbjtcbmNsYXNzIENvbHVtbiB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuZ2V0VmFsdWUgPSAodGFibGUsIGN1cnJlbnRDZWxsKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBjb25zdCB2YWwgPSAoKF9hID0gdGFibGUuZ2V0Q2VsbEF0KGN1cnJlbnRDZWxsLnJvdywgdGhpcy5nZXRJbmRleChjdXJyZW50Q2VsbCkpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudG9UZXh0KCkpIHx8XG4gICAgICAgICAgICAgICAgJyc7XG4gICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyByZXN1bHRzXzEuVmFsdWUoW1t2YWxdXSkpO1xuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydHMuQ29sdW1uID0gQ29sdW1uO1xuY2xhc3MgUmVsYXRpdmVDb2x1bW4gZXh0ZW5kcyBDb2x1bW4ge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5nZXRJbmRleCA9IChjdXJyZW50Q2VsbCkgPT4gY3VycmVudENlbGwuY29sdW1uICsgdGhpcy5vZmZzZXQ7XG4gICAgICAgIHRoaXMuZ2V0QWJzb2x1dGVJbmRleCA9ICgpID0+IG5ldmVydGhyb3dfMS5lcnIoYXN0X3V0aWxzXzEuZXJyUmVsYXRpdmVSZWZlcmVuY2VJbmRleCk7XG4gICAgICAgIGNvbnN0IHR5cGVFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrVHlwZShhc3QsICdyZWxhdGl2ZV9jb2x1bW4nKTtcbiAgICAgICAgaWYgKHR5cGVFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxlbmd0aEVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aChhc3QsIDEpO1xuICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGxlbmd0aEVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG11bHRpcGxpZXIgPSBhc3QudGV4dFsxXSA9PT0gJy0nID8gLTEgOiAxO1xuICAgICAgICB0aGlzLm9mZnNldCA9IG11bHRpcGxpZXIgKiBwYXJzZUludChhc3QuY2hpbGRyZW5bMF0udGV4dCk7XG4gICAgfVxufVxuY2xhc3MgQWJzb2x1dGVDb2x1bW4gZXh0ZW5kcyBDb2x1bW4ge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5nZXRJbmRleCA9IChjdXJyZW50Q2VsbCkgPT4gdGhpcy5pbmRleDtcbiAgICAgICAgdGhpcy5nZXRBYnNvbHV0ZUluZGV4ID0gKCkgPT4gbmV2ZXJ0aHJvd18xLm9rKHRoaXMuaW5kZXgpO1xuICAgICAgICBsZXQgaW5kZXggPSAtMTtcbiAgICAgICAgbGV0IHN5bWJvbCA9ICcnO1xuICAgICAgICBzd2l0Y2ggKGFzdC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBzeW1ib2wgPSBhc3QudGV4dFsxXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LmNoaWxkcmVuWzBdLCAnaW50Jyk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXZlcnRocm93XzEuZXJyKHR5cGVFcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluZGV4ID0gcGFyc2VJbnQoYXN0LmNoaWxkcmVuWzBdLnRleHQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZvcm11bGEgZWxlbWVudCAnJHthc3QudGV4dH0nIGlzIGEgJHthc3QudHlwZX0gYnV0IGV4cGVjdGVkIGAgK1xuICAgICAgICAgICAgICAgICAgICAnYSBcXCdhYnNvbHV0ZV9jb2x1bW5cXCcgaW4gdGhpcyBwb3NpdGlvbi4nKTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKHN5bWJvbCkge1xuICAgICAgICAgICAgY2FzZSAnJzpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzwnOlxuICAgICAgICAgICAgICAgIGluZGV4ID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJz4nOlxuICAgICAgICAgICAgICAgIGluZGV4ID0gdGFibGUuZ2V0V2lkdGgoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGNvbHVtbiBzeW1ib2wgJyR7c3ltYm9sfSdgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IGFzdF91dGlsc18xLmVyckluZGV4MDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluZGV4ID0gaW5kZXggLSAxOyAvLyAtMSBmb3IgYmVpbmcgemVybyBpbmRleGVkXG4gICAgfVxufVxuZXhwb3J0cy5BYnNvbHV0ZUNvbHVtbiA9IEFic29sdXRlQ29sdW1uO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkFic29sdXRlUm93ID0gZXhwb3J0cy5Sb3cgPSBleHBvcnRzLm5ld1JvdyA9IHZvaWQgMDtcbmNvbnN0IG5ldmVydGhyb3dfMSA9IHJlcXVpcmUoXCIuLi9uZXZlcnRocm93L25ldmVydGhyb3dcIik7XG5jb25zdCBhc3RfdXRpbHNfMSA9IHJlcXVpcmUoXCIuL2FzdF91dGlsc1wiKTtcbmNvbnN0IHJlc3VsdHNfMSA9IHJlcXVpcmUoXCIuL3Jlc3VsdHNcIik7XG5jb25zdCBuZXdSb3cgPSAoYXN0LCB0YWJsZSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIHN3aXRjaCAoYXN0LnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3JlbGF0aXZlX3Jvdyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhuZXcgUmVsYXRpdmVSb3coYXN0LCB0YWJsZSkpO1xuICAgICAgICAgICAgY2FzZSAnYWJzb2x1dGVfcm93JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyBBYnNvbHV0ZVJvdyhhc3QsIHRhYmxlKSk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEuZXJyKG5ldyBFcnJvcihgRm9ybXVsYSBlbGVtZW50ICcke2FzdC50ZXh0fScgaXMgYSAke2FzdC50eXBlfSBidXQgZXhwZWN0ZWQgYW4gYCArXG4gICAgICAgICAgICAgICAgICAgICdyZWxhdHZlX3JvdyBvciBhYnNvbHV0ZV9yb3cgIGluIHRoaXMgcG9zaXRpb24uJykpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycihlcnJvcik7XG4gICAgfVxufTtcbmV4cG9ydHMubmV3Um93ID0gbmV3Um93O1xuY2xhc3MgUm93IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5nZXRWYWx1ZSA9ICh0YWJsZSwgY3VycmVudENlbGwpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9ICgoX2EgPSB0YWJsZVxuICAgICAgICAgICAgICAgIC5nZXRDZWxsQXQodGhpcy5nZXRJbmRleChjdXJyZW50Q2VsbCksIGN1cnJlbnRDZWxsLmNvbHVtbikpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50b1RleHQoKSkgfHwgJyc7XG4gICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyByZXN1bHRzXzEuVmFsdWUoW1t2YWxdXSkpO1xuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydHMuUm93ID0gUm93O1xuY2xhc3MgUmVsYXRpdmVSb3cgZXh0ZW5kcyBSb3cge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5nZXRJbmRleCA9IChjdXJyZW50Q2VsbCkgPT4gY3VycmVudENlbGwucm93ICsgdGhpcy5vZmZzZXQ7XG4gICAgICAgIHRoaXMuZ2V0QWJzb2x1dGVJbmRleCA9ICgpID0+IG5ldmVydGhyb3dfMS5lcnIoYXN0X3V0aWxzXzEuZXJyUmVsYXRpdmVSZWZlcmVuY2VJbmRleCk7XG4gICAgICAgIGNvbnN0IHR5cGVFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrVHlwZShhc3QsICdyZWxhdGl2ZV9yb3cnKTtcbiAgICAgICAgaWYgKHR5cGVFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxlbmd0aEVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aChhc3QsIDEpO1xuICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGxlbmd0aEVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG11bHRpcGxpZXIgPSBhc3QudGV4dFsxXSA9PT0gJy0nID8gLTEgOiAxO1xuICAgICAgICB0aGlzLm9mZnNldCA9IG11bHRpcGxpZXIgKiBwYXJzZUludChhc3QuY2hpbGRyZW5bMF0udGV4dCk7XG4gICAgfVxufVxuY2xhc3MgQWJzb2x1dGVSb3cgZXh0ZW5kcyBSb3cge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5nZXRJbmRleCA9IChjdXJyZW50Q2VsbCkgPT4gdGhpcy5pbmRleDtcbiAgICAgICAgdGhpcy5nZXRBYnNvbHV0ZUluZGV4ID0gKCkgPT4gbmV2ZXJ0aHJvd18xLm9rKHRoaXMuaW5kZXgpO1xuICAgICAgICBsZXQgaW5kZXggPSAtMTtcbiAgICAgICAgbGV0IHN5bWJvbCA9ICcnO1xuICAgICAgICBzd2l0Y2ggKGFzdC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBzeW1ib2wgPSBhc3QudGV4dFsxXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LmNoaWxkcmVuWzBdLCAnaW50Jyk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXZlcnRocm93XzEuZXJyKHR5cGVFcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluZGV4ID0gcGFyc2VJbnQoYXN0LmNoaWxkcmVuWzBdLnRleHQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZvcm11bGEgZWxlbWVudCAnJHthc3QudGV4dH0nIGlzIGEgJHthc3QudHlwZX0gYnV0IGV4cGVjdGVkIGAgK1xuICAgICAgICAgICAgICAgICAgICAnYSBcXCdhYnNvbHV0ZV9yb3dcXCcgaW4gdGhpcyBwb3NpdGlvbi4nKTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKHN5bWJvbCkge1xuICAgICAgICAgICAgY2FzZSAnJzpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzwnOlxuICAgICAgICAgICAgICAgIGluZGV4ID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJz4nOlxuICAgICAgICAgICAgICAgIGluZGV4ID0gdGFibGUuZ2V0SGVpZ2h0KCkgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnSSc6XG4gICAgICAgICAgICAgICAgaW5kZXggPSAyO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcm93IHN5bWJvbCAnJHtzeW1ib2x9J2ApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgYXN0X3V0aWxzXzEuZXJySW5kZXgwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleCA9PT0gMSkge1xuICAgICAgICAgICAgdGhpcy5pbmRleCA9IDA7IC8vIGFjY291bnQgZm9yIGJlaW5nIHplcm8gaW5kZXhlZFxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbmRleCA9IGluZGV4OyAvLyAtMSBmb3IgYmVpbmcgemVybyBpbmRleGVkLCBidXQgcGx1cyAxIHRvIHNraXAgaGVhZGVyXG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnRzLkFic29sdXRlUm93ID0gQWJzb2x1dGVSb3c7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuUmVmZXJlbmNlID0gdm9pZCAwO1xuY29uc3QgbmV2ZXJ0aHJvd18xID0gcmVxdWlyZShcIi4uL25ldmVydGhyb3cvbmV2ZXJ0aHJvd1wiKTtcbmNvbnN0IGFzdF91dGlsc18xID0gcmVxdWlyZShcIi4vYXN0X3V0aWxzXCIpO1xuY29uc3QgY29sdW1uXzEgPSByZXF1aXJlKFwiLi9jb2x1bW5cIik7XG5jb25zdCByZXN1bHRzXzEgPSByZXF1aXJlKFwiLi9yZXN1bHRzXCIpO1xuY29uc3Qgcm93XzEgPSByZXF1aXJlKFwiLi9yb3dcIik7XG5jbGFzcyBSZWZlcmVuY2Uge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUpIHtcbiAgICAgICAgdGhpcy5nZXRWYWx1ZSA9ICh0YWJsZSwgY3VycmVudENlbGwpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGNvbnN0IGNlbGwgPSB7XG4gICAgICAgICAgICAgICAgcm93OiB0aGlzLnJvdyA/IHRoaXMucm93LmdldEluZGV4KGN1cnJlbnRDZWxsKSA6IGN1cnJlbnRDZWxsLnJvdyxcbiAgICAgICAgICAgICAgICBjb2x1bW46IHRoaXMuY29sdW1uXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5jb2x1bW4uZ2V0SW5kZXgoY3VycmVudENlbGwpXG4gICAgICAgICAgICAgICAgICAgIDogY3VycmVudENlbGwuY29sdW1uLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9ICgoX2EgPSB0YWJsZS5nZXRDZWxsQXQoY2VsbC5yb3csIGNlbGwuY29sdW1uKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRvVGV4dCgpKSB8fCAnJztcbiAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEub2sobmV3IHJlc3VsdHNfMS5WYWx1ZShbW3ZhbF1dKSk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHR5cGVFcnIgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LCAnc291cmNlX3JlZmVyZW5jZScsICdhYnNvbHV0ZV9yZWZlcmVuY2UnLCAncmVsYXRpdmVfcmVmZXJlbmNlJyk7XG4gICAgICAgIGlmICh0eXBlRXJyKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXN0LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZCA9IGFzdC5jaGlsZHJlbltpXTtcbiAgICAgICAgICAgIHN3aXRjaCAoY2hpbGQudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3JlbGF0aXZlX3Jvdyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnYWJzb2x1dGVfcm93JzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucm93ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdSZWZlcmVuY2UgbWF5IG9ubHkgaGF2ZSBhdCBtb3N0IDEgcm93LCBtb3JlIHRoYW4gMSBwcm92aWRlZCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNyZWF0ZWRSb3cgPSByb3dfMS5uZXdSb3coY2hpbGQsIHRhYmxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNyZWF0ZWRSb3cuaXNFcnIoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNyZWF0ZWRSb3cuZXJyb3IgPT09IGFzdF91dGlsc18xLmVyckluZGV4MCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vdCBhY3R1YWxseSBhbiBlcnJvciwganVzdCBpbmRpY2F0ZXMgdXNpbmcgY3VycmVudCBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgY3JlYXRlZFJvdy5lcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdyA9IGNyZWF0ZWRSb3cudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3JlbGF0aXZlX2NvbHVtbic6XG4gICAgICAgICAgICAgICAgY2FzZSAnYWJzb2x1dGVfY29sdW1uJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29sdW1uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdSZWZlcmVuY2UgbWF5IG9ubHkgaGF2ZSBhdCBtb3N0IDEgY29sdW1uLCBtb3JlIHRoYW4gMSBwcm92aWRlZCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNyZWF0ZWRDb2wgPSBjb2x1bW5fMS5uZXdDb2x1bW4oY2hpbGQsIHRhYmxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNyZWF0ZWRDb2wuaXNFcnIoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNyZWF0ZWRDb2wuZXJyb3IgPT09IGFzdF91dGlsc18xLmVyckluZGV4MCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vdCBhY3R1YWxseSBhbiBlcnJvciwganVzdCBpbmRpY2F0ZXMgdXNpbmcgY3VycmVudCBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgY3JlYXRlZENvbC5lcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbiA9IGNyZWF0ZWRDb2wudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5SZWZlcmVuY2UgPSBSZWZlcmVuY2U7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuUmFuZ2UgPSB2b2lkIDA7XG5jb25zdCBuZXZlcnRocm93XzEgPSByZXF1aXJlKFwiLi4vbmV2ZXJ0aHJvdy9uZXZlcnRocm93XCIpO1xuY29uc3QgYXN0X3V0aWxzXzEgPSByZXF1aXJlKFwiLi9hc3RfdXRpbHNcIik7XG5jb25zdCByZWZlcmVuY2VfMSA9IHJlcXVpcmUoXCIuL3JlZmVyZW5jZVwiKTtcbmNvbnN0IHJlc3VsdHNfMSA9IHJlcXVpcmUoXCIuL3Jlc3VsdHNcIik7XG5jb25zdCBsb2Rhc2hfMSA9IHJlcXVpcmUoXCJsb2Rhc2hcIik7XG5jbGFzcyBSYW5nZSB7XG4gICAgY29uc3RydWN0b3IoYXN0LCB0YWJsZSkge1xuICAgICAgICB0aGlzLmdldFZhbHVlID0gKHRhYmxlLCBjdXJyZW50Q2VsbCkgPT4ge1xuICAgICAgICAgICAgLy8gaWYgbm8gc3RhcnQgY29sdW1uIGlzIHByb3ZpZGVkLCBjb3B5IGl0IGZyb20gdGhlIGN1cnJlbnRDZWxsXG4gICAgICAgICAgICBjb25zdCBzdGFydENvbHVtbiA9IHRoaXMuc3RhcnRDb2x1bW5cbiAgICAgICAgICAgICAgICA/IHRoaXMuc3RhcnRDb2x1bW4uZ2V0SW5kZXgoY3VycmVudENlbGwpXG4gICAgICAgICAgICAgICAgOiBjdXJyZW50Q2VsbC5jb2x1bW47XG4gICAgICAgICAgICAvLyBpZiB0aGUgY29sdW1uIGlzIHByb3ZpZGVkIGluIHRoZSBmaXJzdCBzZXQsIGJ1dCBub3QgdGhlIHNlY29uZCwgY29weSBpdFxuICAgICAgICAgICAgY29uc3QgZW5kQ29sdW1uID0gdGhpcy5lbmRDb2x1bW5cbiAgICAgICAgICAgICAgICA/IHRoaXMuZW5kQ29sdW1uLmdldEluZGV4KGN1cnJlbnRDZWxsKVxuICAgICAgICAgICAgICAgIDogc3RhcnRDb2x1bW47XG4gICAgICAgICAgICBjb25zdCBzdGFydFJvdyA9IHRoaXMuc3RhcnRSb3dcbiAgICAgICAgICAgICAgICA/IHRoaXMuc3RhcnRSb3cuZ2V0SW5kZXgoY3VycmVudENlbGwpXG4gICAgICAgICAgICAgICAgOiBjdXJyZW50Q2VsbC5yb3c7XG4gICAgICAgICAgICBjb25zdCBlbmRSb3cgPSB0aGlzLmVuZFJvd1xuICAgICAgICAgICAgICAgID8gdGhpcy5lbmRSb3cuZ2V0SW5kZXgoY3VycmVudENlbGwpXG4gICAgICAgICAgICAgICAgOiBjdXJyZW50Q2VsbC5yb3c7XG4gICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyByZXN1bHRzXzEuVmFsdWUobG9kYXNoXzEubWFwKGxvZGFzaF8xLnJhbmdlKHN0YXJ0Um93LCBlbmRSb3cgKyAxKSwgKHJvdykgPT4gbG9kYXNoXzEubWFwKGxvZGFzaF8xLnJhbmdlKHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4gKyAxKSwgKGNvbCkgPT4geyB2YXIgX2E7IHJldHVybiAoKF9hID0gdGFibGUuZ2V0Q2VsbEF0KHJvdywgY29sKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRvVGV4dCgpKSB8fCAnJzsgfSkpKSk7XG4gICAgICAgIH07XG4gICAgICAgIC8vIFRoZXJlIG5lZWRzIHRvIGJlIGEgZGlzdGluY3Rpb24gYmV0d2VlbiByYW5nZXMgZm9yIHNvdXJjZSBhbmQgZGVzdGluYXRpb25cbiAgICAgICAgLy8gYSBkZXN0aW5hdGlvbiByYW5nZSBkb2VzIG5vdCBhbGxvdyByZWxhdGl2ZSByZWZlcmVuY2VzLCB3aGljaCB3b3VsZFxuICAgICAgICAvLyBzb2x2ZSB0aGlzIGlzc3VlIHdpdGggZ2V0dGluZyB0aGUgaW5kZXguXG4gICAgICAgIHRoaXMuYXNDZWxscyA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5zdGFydENvbHVtbiB8fCAhdGhpcy5zdGFydFJvdyB8fCAhdGhpcy5lbmRSb3cpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycihuZXcgRXJyb3IoJ0EgcmFuZ2UgdXNlZCBhcyBhIGRlc2ludGF0aW9uIG11c3QgZGVmaW5lIHJvd3MgYW5kIGNlbGxzJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSWYgdGhlIHNlY29uZCByZWZlcmVuY2UgaW4gdGhlIHJhbmdlIGRvZXMgbm90IGluY2x1ZGUgYSBjb2x1bW4sXG4gICAgICAgICAgICAvLyB1c2UgdGhlIHN0YXJ0IGNvbHVtbi5cbiAgICAgICAgICAgIGxldCBlbmRDb2x1bW4gPSB0aGlzLmVuZENvbHVtbjtcbiAgICAgICAgICAgIGlmICghZW5kQ29sdW1uKSB7XG4gICAgICAgICAgICAgICAgZW5kQ29sdW1uID0gdGhpcy5zdGFydENvbHVtbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0Um93SW5kZXggPSB0aGlzLnN0YXJ0Um93LmdldEFic29sdXRlSW5kZXgoKTtcbiAgICAgICAgICAgIGNvbnN0IGVuZFJvd0luZGV4ID0gdGhpcy5lbmRSb3cuZ2V0QWJzb2x1dGVJbmRleCgpO1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRDb2x1bW5JbmRleCA9IHRoaXMuc3RhcnRDb2x1bW4uZ2V0QWJzb2x1dGVJbmRleCgpO1xuICAgICAgICAgICAgY29uc3QgZW5kQ29sdW1uSW5kZXggPSBlbmRDb2x1bW4uZ2V0QWJzb2x1dGVJbmRleCgpO1xuICAgICAgICAgICAgaWYgKHN0YXJ0Um93SW5kZXguaXNFcnIoKSB8fFxuICAgICAgICAgICAgICAgIGVuZFJvd0luZGV4LmlzRXJyKCkgfHxcbiAgICAgICAgICAgICAgICBzdGFydENvbHVtbkluZGV4LmlzRXJyKCkgfHxcbiAgICAgICAgICAgICAgICBlbmRDb2x1bW5JbmRleC5pc0VycigpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIobmV3IEVycm9yKCdBIHJlbGF0aXZlIHJhbmdlIGNhbiBub3QgYmUgdXNlZCBpbiBhIGZvcm11bGEgZGVzdGluYXRpb24nKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBtaW5Sb3cgPSBNYXRoLm1pbihzdGFydFJvd0luZGV4LnZhbHVlLCBlbmRSb3dJbmRleC52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBtYXhSb3cgPSBNYXRoLm1heChzdGFydFJvd0luZGV4LnZhbHVlLCBlbmRSb3dJbmRleC52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBtaW5Db2x1bW4gPSBNYXRoLm1pbihzdGFydENvbHVtbkluZGV4LnZhbHVlLCBlbmRDb2x1bW5JbmRleC52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBtYXhDb2x1bW4gPSBNYXRoLm1heChzdGFydENvbHVtbkluZGV4LnZhbHVlLCBlbmRDb2x1bW5JbmRleC52YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKGxvZGFzaF8xLmZsYXRNYXAobG9kYXNoXzEucmFuZ2UobWluUm93LCBtYXhSb3cgKyAxKSwgKHJvd051bSkgPT4gbG9kYXNoXzEucmFuZ2UobWluQ29sdW1uLCBtYXhDb2x1bW4gKyAxKS5tYXAoKGNvbE51bSkgPT4gKHsgcm93OiByb3dOdW0sIGNvbHVtbjogY29sTnVtIH0pKSkpO1xuICAgICAgICB9O1xuICAgICAgICBsZXQgdHlwZUVyciA9IGFzdF91dGlsc18xLmNoZWNrVHlwZShhc3QsICdyYW5nZScpO1xuICAgICAgICBpZiAodHlwZUVycikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbGVuZ3RoRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja0NoaWxkTGVuZ3RoKGFzdCwgMik7XG4gICAgICAgIGlmIChsZW5ndGhFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbGVuZ3RoRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RhcnRDaGlsZCA9IGFzdC5jaGlsZHJlblswXTtcbiAgICAgICAgY29uc3QgZW5kQ2hpbGQgPSBhc3QuY2hpbGRyZW5bMV07XG4gICAgICAgIHR5cGVFcnIgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoc3RhcnRDaGlsZCwgJ3NvdXJjZV9yZWZlcmVuY2UnKTtcbiAgICAgICAgaWYgKHR5cGVFcnIpIHtcbiAgICAgICAgICAgIHRocm93IHR5cGVFcnI7XG4gICAgICAgIH1cbiAgICAgICAgdHlwZUVyciA9IGFzdF91dGlsc18xLmNoZWNrVHlwZShlbmRDaGlsZCwgJ3NvdXJjZV9yZWZlcmVuY2UnKTtcbiAgICAgICAgaWYgKHR5cGVFcnIpIHtcbiAgICAgICAgICAgIHRocm93IHR5cGVFcnI7XG4gICAgICAgIH1cbiAgICAgICAgbGVuZ3RoRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja0NoaWxkTGVuZ3RoKHN0YXJ0Q2hpbGQsIDEpO1xuICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGxlbmd0aEVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGxlbmd0aEVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aChlbmRDaGlsZCwgMSk7XG4gICAgICAgIGlmIChsZW5ndGhFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbGVuZ3RoRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RhcnQgPSBuZXcgcmVmZXJlbmNlXzEuUmVmZXJlbmNlKHN0YXJ0Q2hpbGQuY2hpbGRyZW5bMF0sIHRhYmxlKTtcbiAgICAgICAgY29uc3QgZW5kID0gbmV3IHJlZmVyZW5jZV8xLlJlZmVyZW5jZShlbmRDaGlsZC5jaGlsZHJlblswXSwgdGFibGUpO1xuICAgICAgICBpZiAoKHN0YXJ0LnJvdyAmJiAhZW5kLnJvdykgfHwgKGVuZC5yb3cgJiYgIXN0YXJ0LnJvdykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmFuZ2UgbXVzdCB1c2UgcmVmZXJlbmNlcyBvZiB0aGUgc2FtZSBraW5kJyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gTXVzdCBwcm92aWRlIGF0IGxlYXN0IGEgcm93IG9yIGEgY29sdW1uLCBidXQgaWYgdGhlIGZpcnN0IHZhbHVlIGhhcyBhXG4gICAgICAgIC8vIGNvbHVtbiBidXQgdGhlIHNlY29uZCBkb2VzIG5vdCwgdGhlbiBjb3B5IHRoZSBmaXJzdCBjb2wgdG8gc2Vjb25kLlxuICAgICAgICBpZiAoIXN0YXJ0LnJvdyAmJiAhc3RhcnQuY29sdW1uKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhzdGFydCk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JhbmdlIG11c3QgaGF2ZSBhIHJvdyBvciBhIGNvbHVtbiBkZWZpbmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXJ0LnJvdykge1xuICAgICAgICAgICAgdGhpcy5zdGFydFJvdyA9IHN0YXJ0LnJvdztcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhcnQuY29sdW1uKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0Q29sdW1uID0gc3RhcnQuY29sdW1uO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmQucm93KSB7XG4gICAgICAgICAgICB0aGlzLmVuZFJvdyA9IGVuZC5yb3c7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuZC5jb2x1bW4pIHtcbiAgICAgICAgICAgIHRoaXMuZW5kQ29sdW1uID0gZW5kLmNvbHVtbjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZW5kQ29sdW1uID0gc3RhcnQuY29sdW1uO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5SYW5nZSA9IFJhbmdlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlJhbmdlRGVzdGluYXRpb24gPSBleHBvcnRzLkNlbGxEZXN0aW5hdGlvbiA9IGV4cG9ydHMuQ29sdW1uRGVzdGluYXRpb24gPSBleHBvcnRzLlJvd0Rlc3RpbmF0aW9uID0gZXhwb3J0cy5uZXdEZXN0aW5hdGlvbiA9IHZvaWQgMDtcbmNvbnN0IG5ldmVydGhyb3dfMSA9IHJlcXVpcmUoXCIuLi9uZXZlcnRocm93L25ldmVydGhyb3dcIik7XG5jb25zdCBhc3RfdXRpbHNfMSA9IHJlcXVpcmUoXCIuL2FzdF91dGlsc1wiKTtcbmNvbnN0IGNvbHVtbl8xID0gcmVxdWlyZShcIi4vY29sdW1uXCIpO1xuY29uc3QgcmFuZ2VfMSA9IHJlcXVpcmUoXCIuL3JhbmdlXCIpO1xuY29uc3Qgcm93XzEgPSByZXF1aXJlKFwiLi9yb3dcIik7XG5jb25zdCBsb2Rhc2hfMSA9IHJlcXVpcmUoXCJsb2Rhc2hcIik7XG5jb25zdCBuZXdEZXN0aW5hdGlvbiA9IChhc3QsIHRhYmxlLCBmb3JtYXR0ZXIpID0+IHtcbiAgICBjb25zdCB0eXBlRXJyID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKGFzdCwgJ2Rlc3RpbmF0aW9uJyk7XG4gICAgaWYgKHR5cGVFcnIpIHtcbiAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIodHlwZUVycik7XG4gICAgfVxuICAgIGNvbnN0IGxlbmd0aEVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aChhc3QsIDEpO1xuICAgIGlmIChsZW5ndGhFcnJvcikge1xuICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycihsZW5ndGhFcnJvcik7XG4gICAgfVxuICAgIGNvbnN0IGNoaWxkID0gYXN0LmNoaWxkcmVuWzBdO1xuICAgIGlmIChjaGlsZC50eXBlID09PSAncmFuZ2UnKSB7XG4gICAgICAgIHJldHVybiBuZXZlcnRocm93XzEub2sobmV3IFJhbmdlRGVzdGluYXRpb24oY2hpbGQsIHRhYmxlLCBmb3JtYXR0ZXIpKTtcbiAgICB9XG4gICAgLy8gbXVzdCBiZSBlaXRoZXIgYW4gYWJzb2x1dGVfcmVmZXJlbmNlXG4gICAgdHJ5IHtcbiAgICAgICAgc3dpdGNoIChjaGlsZC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyBDZWxsRGVzdGluYXRpb24oY2hpbGQsIHRhYmxlLCBmb3JtYXR0ZXIpKTtcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICBjb25zdCBpbm5lckNoaWxkID0gY2hpbGQuY2hpbGRyZW5bMF07XG4gICAgICAgICAgICAgICAgaWYgKGlubmVyQ2hpbGQudHlwZSA9PT0gJ2Fic29sdXRlX3JvdycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhuZXcgUm93RGVzdGluYXRpb24oY2hpbGQsIHRhYmxlLCBmb3JtYXR0ZXIpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaW5uZXJDaGlsZC50eXBlID09PSAnYWJzb2x1dGVfY29sdW1uJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyBDb2x1bW5EZXN0aW5hdGlvbihjaGlsZCwgdGFibGUsIGZvcm1hdHRlcikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIobmV3IEVycm9yKCdVbmV4cGVjdGVkIGRlc3RpbmF0aW9uIHR5cGUgJyArIGNoaWxkLnR5cGUpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yID09PSBhc3RfdXRpbHNfMS5lcnJJbmRleDApIHtcbiAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEuZXJyKG5ldyBFcnJvcignSW5kZXggMCBtYXkgbm90IGJlIHVzZWQgaW4gYSBkZXN0aW5hdGlvbicpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycihlcnJvcik7XG4gICAgfVxufTtcbmV4cG9ydHMubmV3RGVzdGluYXRpb24gPSBuZXdEZXN0aW5hdGlvbjtcbmNsYXNzIFJvd0Rlc3RpbmF0aW9uIHtcbiAgICBjb25zdHJ1Y3Rvcihhc3QsIHRhYmxlLCBmb3JtYXR0ZXIpIHtcbiAgICAgICAgdGhpcy5tZXJnZSA9IChzb3VyY2UsIHRhYmxlKSA9PiB7XG4gICAgICAgICAgICAvLyBmb3IgY2VsbCBpbiByb3cuLi5cbiAgICAgICAgICAgIGNvbnN0IGNlbGxzID0gbG9kYXNoXzEucmFuZ2UoMCwgdGFibGUuZ2V0V2lkdGgoKSkubWFwKChjb2x1bW5OdW0pID0+ICh7IHJvdzogdGhpcy5yb3cuaW5kZXgsIGNvbHVtbjogY29sdW1uTnVtIH0pKTtcbiAgICAgICAgICAgIHJldHVybiBtZXJnZUZvckNlbGxzKHNvdXJjZSwgdGFibGUsIGNlbGxzLCB0aGlzLmZvcm1hdHRlcik7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZm9ybWF0dGVyID0gZm9ybWF0dGVyO1xuICAgICAgICBjb25zdCB0eXBlRXJyID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKGFzdCwgJ2Fic29sdXRlX3JlZmVyZW5jZScpO1xuICAgICAgICBpZiAodHlwZUVycikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsZW5ndGhFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrQ2hpbGRMZW5ndGgoYXN0LCAxKTtcbiAgICAgICAgaWYgKGxlbmd0aEVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBsZW5ndGhFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjaGlsZCA9IGFzdC5jaGlsZHJlblswXTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMucm93ID0gbmV3IHJvd18xLkFic29sdXRlUm93KGNoaWxkLCB0YWJsZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAvLyBJbiBhIGNvbnN0cnVjdG9yLCBzbyB3ZSBtdXN0IHRocm93XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydHMuUm93RGVzdGluYXRpb24gPSBSb3dEZXN0aW5hdGlvbjtcbmNsYXNzIENvbHVtbkRlc3RpbmF0aW9uIHtcbiAgICBjb25zdHJ1Y3Rvcihhc3QsIHRhYmxlLCBmb3JtYXR0ZXIpIHtcbiAgICAgICAgdGhpcy5tZXJnZSA9IChzb3VyY2UsIHRhYmxlKSA9PiB7XG4gICAgICAgICAgICAvLyBmb3IgY2VsbCBpbiBjb2x1bW4gKGV4Y2x1ZGluZyBoZWFkZXIpLi4uXG4gICAgICAgICAgICBjb25zdCBjZWxscyA9IGxvZGFzaF8xLnJhbmdlKDIsIHRhYmxlLmdldEhlaWdodCgpKS5tYXAoKHJvd051bSkgPT4gKHsgcm93OiByb3dOdW0sIGNvbHVtbjogdGhpcy5jb2x1bW4uaW5kZXggfSkpO1xuICAgICAgICAgICAgcmV0dXJuIG1lcmdlRm9yQ2VsbHMoc291cmNlLCB0YWJsZSwgY2VsbHMsIHRoaXMuZm9ybWF0dGVyKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5mb3JtYXR0ZXIgPSBmb3JtYXR0ZXI7XG4gICAgICAgIGNvbnN0IHR5cGVFcnIgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LCAnYWJzb2x1dGVfcmVmZXJlbmNlJyk7XG4gICAgICAgIGlmICh0eXBlRXJyKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxlbmd0aEVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aChhc3QsIDEpO1xuICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGxlbmd0aEVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNoaWxkID0gYXN0LmNoaWxkcmVuWzBdO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5jb2x1bW4gPSBuZXcgY29sdW1uXzEuQWJzb2x1dGVDb2x1bW4oY2hpbGQsIHRhYmxlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vIEluIGEgY29uc3RydWN0b3IsIHNvIHdlIG11c3QgdGhyb3dcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5Db2x1bW5EZXN0aW5hdGlvbiA9IENvbHVtbkRlc3RpbmF0aW9uO1xuY2xhc3MgQ2VsbERlc3RpbmF0aW9uIHtcbiAgICBjb25zdHJ1Y3Rvcihhc3QsIHRhYmxlLCBmb3JtYXR0ZXIpIHtcbiAgICAgICAgdGhpcy5tZXJnZSA9IChzb3VyY2UsIHRhYmxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjZWxsID0geyByb3c6IHRoaXMucm93LmluZGV4LCBjb2x1bW46IHRoaXMuY29sdW1uLmluZGV4IH07XG4gICAgICAgICAgICByZXR1cm4gbWVyZ2VGb3JDZWxscyhzb3VyY2UsIHRhYmxlLCBbY2VsbF0sIHRoaXMuZm9ybWF0dGVyKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5mb3JtYXR0ZXIgPSBmb3JtYXR0ZXI7XG4gICAgICAgIGNvbnN0IHR5cGVFcnIgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LCAnYWJzb2x1dGVfcmVmZXJlbmNlJyk7XG4gICAgICAgIGlmICh0eXBlRXJyKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyO1xuICAgICAgICB9XG4gICAgICAgIC8vIEEgY2VsbCBuZWVkcyB0byBoYXZlIHR3byBjaGlsZHJlbiwgYSByb3cgYW5kIGEgY29sdW1uXG4gICAgICAgIGNvbnN0IGxlbmd0aEVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aChhc3QsIDIpO1xuICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGxlbmd0aEVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJvd0NoaWxkID0gYXN0LmNoaWxkcmVuWzBdO1xuICAgICAgICBjb25zdCBjb2xDaGlsZCA9IGFzdC5jaGlsZHJlblsxXTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMucm93ID0gbmV3IHJvd18xLkFic29sdXRlUm93KHJvd0NoaWxkLCB0YWJsZSk7XG4gICAgICAgICAgICB0aGlzLmNvbHVtbiA9IG5ldyBjb2x1bW5fMS5BYnNvbHV0ZUNvbHVtbihjb2xDaGlsZCwgdGFibGUpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgLy8gSW4gYSBjb25zdHJ1Y3Rvciwgc28gd2UgbXVzdCB0aHJvd1xuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnRzLkNlbGxEZXN0aW5hdGlvbiA9IENlbGxEZXN0aW5hdGlvbjtcbmNsYXNzIFJhbmdlRGVzdGluYXRpb24ge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUsIGZvcm1hdHRlcikge1xuICAgICAgICB0aGlzLm1lcmdlID0gKHNvdXJjZSwgdGFibGUpID0+IHRoaXMucmFuZ2VcbiAgICAgICAgICAgIC5hc0NlbGxzKClcbiAgICAgICAgICAgIC5hbmRUaGVuKChjZWxscykgPT4gbWVyZ2VGb3JDZWxscyhzb3VyY2UsIHRhYmxlLCBjZWxscywgdGhpcy5mb3JtYXR0ZXIpKTtcbiAgICAgICAgdGhpcy5mb3JtYXR0ZXIgPSBmb3JtYXR0ZXI7XG4gICAgICAgIGNvbnN0IHR5cGVFcnIgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LCAncmFuZ2UnKTtcbiAgICAgICAgaWYgKHR5cGVFcnIpIHtcbiAgICAgICAgICAgIHRocm93IHR5cGVFcnI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGVuZ3RoRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja0NoaWxkTGVuZ3RoKGFzdCwgMik7XG4gICAgICAgIGlmIChsZW5ndGhFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbGVuZ3RoRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgYXN0LmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICBsZXQgY2hpbGRUeXBlRXJyID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKGNoaWxkLCAnc291cmNlX3JlZmVyZW5jZScpO1xuICAgICAgICAgICAgaWYgKGNoaWxkVHlwZUVycikge1xuICAgICAgICAgICAgICAgIHRocm93IGNoaWxkVHlwZUVycjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGNoaWxkTGVuZ3RoRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja0NoaWxkTGVuZ3RoKGNoaWxkLCAxKTtcbiAgICAgICAgICAgIGlmIChjaGlsZExlbmd0aEVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgY2hpbGRMZW5ndGhFcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNoaWxkVHlwZUVyciA9IGFzdF91dGlsc18xLmNoZWNrVHlwZShjaGlsZC5jaGlsZHJlblswXSwgJ2Fic29sdXRlX3JlZmVyZW5jZScpO1xuICAgICAgICAgICAgaWYgKGNoaWxkVHlwZUVycikge1xuICAgICAgICAgICAgICAgIHRocm93IGNoaWxkVHlwZUVycjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmFuZ2UgPSBuZXcgcmFuZ2VfMS5SYW5nZShhc3QsIHRhYmxlKTtcbiAgICB9XG59XG5leHBvcnRzLlJhbmdlRGVzdGluYXRpb24gPSBSYW5nZURlc3RpbmF0aW9uO1xuY29uc3QgbWVyZ2VGb3JDZWxscyA9IChzb3VyY2UsIHRhYmxlLCBjZWxscywgZm9ybWF0dGVyKSA9PiBjZWxscy5yZWR1Y2UoKGN1cnJlbnRUYWJsZSwgY3VycmVudENlbGwpID0+IGN1cnJlbnRUYWJsZS5hbmRUaGVuKCh0KSA9PiBzb3VyY2VcbiAgICAuZ2V0VmFsdWUodCwgY3VycmVudENlbGwpXG4gICAgLmFuZFRoZW4oKHZhbCkgPT4gbmV2ZXJ0aHJvd18xLm9rKHZhbC50b1N0cmluZygpKSlcbiAgICAuYW5kVGhlbigodmFsKSA9PiBuZXZlcnRocm93XzEub2sodmFsLnRyaW0oKSA9PT0gJycgPyAnMCcgOiB2YWwpKVxuICAgIC5hbmRUaGVuKCh2YWwpID0+IG5ldmVydGhyb3dfMS5vayh0LnNldENlbGxBdChjdXJyZW50Q2VsbC5yb3csIGN1cnJlbnRDZWxsLmNvbHVtbiwgZm9ybWF0dGVyLmZvcm1hdCh2YWwpKSkpKSwgbmV2ZXJ0aHJvd18xLm9rKHRhYmxlKSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuRGlzcGxheURpcmVjdGl2ZSA9IGV4cG9ydHMuRGVmYXVsdEZvcm1hdHRlciA9IHZvaWQgMDtcbmNvbnN0IGFzdF91dGlsc18xID0gcmVxdWlyZShcIi4vYXN0X3V0aWxzXCIpO1xuY2xhc3MgRGVmYXVsdEZvcm1hdHRlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuZm9ybWF0ID0gKG51bSkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBudW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudW0udG9TdHJpbmcoKTtcbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnRzLkRlZmF1bHRGb3JtYXR0ZXIgPSBEZWZhdWx0Rm9ybWF0dGVyO1xuY2xhc3MgRGlzcGxheURpcmVjdGl2ZSB7XG4gICAgY29uc3RydWN0b3IoYXN0KSB7XG4gICAgICAgIHRoaXMuZm9ybWF0ID0gKG51bSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VkID0gdHlwZW9mIG51bSA9PT0gJ3N0cmluZycgPyBwYXJzZUZsb2F0KG51bSkgOiBudW07XG4gICAgICAgICAgICBpZiAodGhpcy5kaXNwbGF5QXNEYXRldGltZSkge1xuICAgICAgICAgICAgICAgIC8vIFNlcmlvdXNseSwgdGhlcmUncyBubyBkYXRlIGZvcm1hdHRpbmcgZnVuY3Rpb25hbGl0eSBpbiBKYXZhc2NyaXB0P1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShwYXJzZWQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhZCA9ICh2KSA9PiBgMCR7dn1gLnNsaWNlKC0yKTtcbiAgICAgICAgICAgICAgICBjb25zdCB5ID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vID0gcGFkKGRhdGUuZ2V0TW9udGgoKSArIDEpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBwYWQoZGF0ZS5nZXREYXRlKCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGggPSBwYWQoZGF0ZS5nZXRIb3VycygpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW4gPSBwYWQoZGF0ZS5nZXRNaW51dGVzKCkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHt5fS0ke21vfS0ke2R9ICR7aH06JHttaW59YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwYXJzZWQudG9GaXhlZCh0aGlzLmRlY2ltYWxMZW5ndGgpO1xuICAgICAgICB9O1xuICAgICAgICBsZXQgdHlwZUVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKGFzdCwgJ2Rpc3BsYXlfZGlyZWN0aXZlJyk7XG4gICAgICAgIGlmICh0eXBlRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IHR5cGVFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbGVuZ3RoRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja0NoaWxkTGVuZ3RoKGFzdCwgMSk7XG4gICAgICAgIGlmIChsZW5ndGhFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbGVuZ3RoRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGlzcGxheURpcmVjdGl2ZU9wdGlvbiA9IGFzdC5jaGlsZHJlblswXTtcbiAgICAgICAgdHlwZUVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKGRpc3BsYXlEaXJlY3RpdmVPcHRpb24sICdkaXNwbGF5X2RpcmVjdGl2ZV9vcHRpb24nKTtcbiAgICAgICAgaWYgKHR5cGVFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGxlbmd0aEVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aChkaXNwbGF5RGlyZWN0aXZlT3B0aW9uLCAxKTtcbiAgICAgICAgaWYgKGxlbmd0aEVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBsZW5ndGhFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb3JtYXR0aW5nRGlyZWN0aXZlID0gZGlzcGxheURpcmVjdGl2ZU9wdGlvbi5jaGlsZHJlblswXTtcbiAgICAgICAgdHlwZUVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKGZvcm1hdHRpbmdEaXJlY3RpdmUsICdmb3JtYXR0aW5nX2RpcmVjdGl2ZScsICdkYXRldGltZV9kaXJlY3RpdmUnKTtcbiAgICAgICAgaWYgKHR5cGVFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycm9yO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGlzcGxheUFzRGF0ZXRpbWUgPSBmb3JtYXR0aW5nRGlyZWN0aXZlLnR5cGUgPT09ICdkYXRldGltZV9kaXJlY3RpdmUnO1xuICAgICAgICBpZiAodGhpcy5kaXNwbGF5QXNEYXRldGltZSkge1xuICAgICAgICAgICAgdGhpcy5kZWNpbWFsTGVuZ3RoID0gLTE7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGVuZ3RoRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja0NoaWxkTGVuZ3RoKGZvcm1hdHRpbmdEaXJlY3RpdmUsIDEpO1xuICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGxlbmd0aEVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZvcm1hdHRpbmdEaXJlY3RpdmVMZW5ndGggPSBmb3JtYXR0aW5nRGlyZWN0aXZlLmNoaWxkcmVuWzBdO1xuICAgICAgICB0eXBlRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoZm9ybWF0dGluZ0RpcmVjdGl2ZUxlbmd0aCwgJ2ludCcpO1xuICAgICAgICBpZiAodHlwZUVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kZWNpbWFsTGVuZ3RoID0gcGFyc2VJbnQoZm9ybWF0dGluZ0RpcmVjdGl2ZUxlbmd0aC50ZXh0KTtcbiAgICB9XG59XG5leHBvcnRzLkRpc3BsYXlEaXJlY3RpdmUgPSBEaXNwbGF5RGlyZWN0aXZlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlNpbmdsZVBhcmFtRnVuY3Rpb25DYWxsID0gdm9pZCAwO1xuY29uc3QgbmV2ZXJ0aHJvd18xID0gcmVxdWlyZShcIi4uL25ldmVydGhyb3cvbmV2ZXJ0aHJvd1wiKTtcbmNvbnN0IGFzdF91dGlsc18xID0gcmVxdWlyZShcIi4vYXN0X3V0aWxzXCIpO1xuY29uc3QgY2FsY18xID0gcmVxdWlyZShcIi4vY2FsY1wiKTtcbmNvbnN0IHJlc3VsdHNfMSA9IHJlcXVpcmUoXCIuL3Jlc3VsdHNcIik7XG5jb25zdCBkZWNpbWFsX2pzXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImRlY2ltYWwuanNcIikpO1xuY2xhc3MgU2luZ2xlUGFyYW1GdW5jdGlvbkNhbGwge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUpIHtcbiAgICAgICAgdGhpcy5nZXRWYWx1ZSA9ICh0YWJsZSwgY2VsbCkgPT4gdGhpcy5wYXJhbS5nZXRWYWx1ZSh0YWJsZSwgY2VsbCkuYW5kVGhlbigoc291cmNlRGF0YSkgPT4gXG4gICAgICAgIC8vIFRoZSBvcGVyYXRpb24gZnVuY3Rpb25zIGRvIG5vdCB0aHJvdyBlcnJvcnMgYmVjYXVzZSBkYXRhIGFyaXR5IGhhc1xuICAgICAgICAvLyBhbHJlYWR5IGJlZW4gdmFsaWRhdGVkLlxuICAgICAgICBuZXZlcnRocm93XzEub2sodGhpcy5vcChzb3VyY2VEYXRhKSkpO1xuICAgICAgICBjb25zdCB0eXBlRXJyb3IgPSBhc3RfdXRpbHNfMS5jaGVja1R5cGUoYXN0LCAnc2luZ2xlX3BhcmFtX2Z1bmN0aW9uX2NhbGwnKTtcbiAgICAgICAgaWYgKHR5cGVFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxlbmd0aEVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aChhc3QsIDIpO1xuICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGxlbmd0aEVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNoaWxkVHlwZUVycm9yID0gYXN0X3V0aWxzXzEuY2hlY2tUeXBlKGFzdC5jaGlsZHJlblswXSwgJ3NpbmdsZV9wYXJhbV9mdW5jdGlvbicpO1xuICAgICAgICBpZiAoY2hpbGRUeXBlRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGNoaWxkVHlwZUVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9IGFzdC5jaGlsZHJlblswXS50ZXh0O1xuICAgICAgICBzd2l0Y2ggKGZ1bmN0aW9uTmFtZSkge1xuICAgICAgICAgICAgY2FzZSAnc3VtJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9wID0gc3VtO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbWVhbic6XG4gICAgICAgICAgICAgICAgdGhpcy5vcCA9IG1lYW47XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdVbmtub3duIHNpbmdsZSBwYXJhbSBmdW5jdGlvbiBjYWxsOiAnICsgZnVuY3Rpb25OYW1lKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBhcmFtID0gbmV3IGNhbGNfMS5Tb3VyY2UoYXN0LmNoaWxkcmVuWzFdLCB0YWJsZSk7XG4gICAgfVxufVxuZXhwb3J0cy5TaW5nbGVQYXJhbUZ1bmN0aW9uQ2FsbCA9IFNpbmdsZVBhcmFtRnVuY3Rpb25DYWxsO1xuLyoqXG4gKiBTdW0gYWxsIHRoZSBjZWxscyBpbiB0aGUgaW5wdXQgdmFsdWUsIHByb2R1Y2luZyBhIHNpbmdsZSBjZWxsIG91dHB1dC5cbiAqL1xuY29uc3Qgc3VtID0gKHZhbHVlKSA9PiB7XG4gICAgY29uc3QgdG90YWwgPSB2YWx1ZS52YWwucmVkdWNlKChydW5uaW5nVG90YWwsIGN1cnJlbnRSb3cpID0+IGN1cnJlbnRSb3cucmVkdWNlKChyb3dUb3RhbCwgY3VycmVudENlbGwpID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudENlbGxWYWx1ZSA9IHJlc3VsdHNfMS5GbG9hdE9yTWlsbGlzZWNvbmRzKGN1cnJlbnRDZWxsKTtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRDZWxsVmFsdWUuYWRkKHJvd1RvdGFsKTtcbiAgICB9LCBydW5uaW5nVG90YWwpLCBuZXcgZGVjaW1hbF9qc18xLmRlZmF1bHQoMCkpO1xuICAgIHJldHVybiBuZXcgcmVzdWx0c18xLlZhbHVlKFtbdG90YWwudG9TdHJpbmcoKV1dKTtcbn07XG4vKipcbiAqIE1lYW4gb2YgYWxsIHRoZSBjZWxscyBpbiB0aGUgaW5wdXQgdmFsdWUsIHByb2R1Y2luZyBhIHNpbmdsZSBjZWxsIG91dHB1dC5cbiAqL1xuY29uc3QgbWVhbiA9ICh2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IHsgdG90YWwsIGNvdW50IH0gPSB2YWx1ZS52YWwucmVkdWNlKCh7IHRvdGFsOiBydW5uaW5nVG90YWwxLCBjb3VudDogY3VycmVudENvdW50MSB9LCBjdXJyZW50Um93KSA9PiBjdXJyZW50Um93LnJlZHVjZSgoeyB0b3RhbDogcnVubmluZ1RvdGFsMiwgY291bnQ6IGN1cnJlbnRDb3VudDIgfSwgY3VycmVudENlbGwpID0+ICh7XG4gICAgICAgIHRvdGFsOiBydW5uaW5nVG90YWwyICsgK2N1cnJlbnRDZWxsLFxuICAgICAgICBjb3VudDogY3VycmVudENvdW50MiArIDEsXG4gICAgfSksIHsgdG90YWw6IHJ1bm5pbmdUb3RhbDEsIGNvdW50OiBjdXJyZW50Q291bnQxIH0pLCB7IHRvdGFsOiAwLCBjb3VudDogMCB9KTtcbiAgICByZXR1cm4gbmV3IHJlc3VsdHNfMS5WYWx1ZShbWyh0b3RhbCAvIGNvdW50KS50b1N0cmluZygpXV0pO1xufTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Ub2tlbkVycm9yID0gdm9pZCAwO1xuY2xhc3MgVG9rZW5FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlLCB0b2tlbikge1xuICAgICAgICBzdXBlcihtZXNzYWdlKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgICAgdGhpcy50b2tlbiA9IHRva2VuO1xuICAgICAgICBpZiAodG9rZW4gJiYgdG9rZW4uZXJyb3JzKVxuICAgICAgICAgICAgdG9rZW4uZXJyb3JzLnB1c2godGhpcyk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRocm93IHRoaXM7XG4gICAgfVxuICAgIGluc3BlY3QoKSB7XG4gICAgICAgIHJldHVybiAnU3ludGF4RXJyb3I6ICcgKyB0aGlzLm1lc3NhZ2U7XG4gICAgfVxufVxuZXhwb3J0cy5Ub2tlbkVycm9yID0gVG9rZW5FcnJvcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRva2VuRXJyb3IuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vLyBodHRwczovL3d3dy5pY3MudWNpLmVkdS9+cGF0dGlzL0lDUy0zMy9sZWN0dXJlcy9lYm5mLnBkZlxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5QYXJzZXIgPSBleHBvcnRzLmZpbmRSdWxlQnlOYW1lID0gZXhwb3J0cy5wYXJzZVJ1bGVOYW1lID0gZXhwb3J0cy5lc2NhcGVSZWdFeHAgPSBleHBvcnRzLnJlYWRUb2tlbiA9IHZvaWQgMDtcbmNvbnN0IFVQUEVSX1NOQUtFX1JFID0gL15bQS1aMC05X10rJC87XG5jb25zdCBkZWNvcmF0aW9uUkUgPSAvKFxcP3xcXCt8XFwqKSQvO1xuY29uc3QgcHJlRGVjb3JhdGlvblJFID0gL14oQHwmfCEpLztcbmNvbnN0IFdTX1JVTEUgPSAnV1MnO1xuY29uc3QgVG9rZW5FcnJvcl8xID0gcmVxdWlyZShcIi4vVG9rZW5FcnJvclwiKTtcbmZ1bmN0aW9uIHJlYWRUb2tlbih0eHQsIGV4cHIpIHtcbiAgICBsZXQgcmVzdWx0ID0gZXhwci5leGVjKHR4dCk7XG4gICAgaWYgKHJlc3VsdCAmJiByZXN1bHQuaW5kZXggPT0gMCkge1xuICAgICAgICBpZiAocmVzdWx0WzBdLmxlbmd0aCA9PSAwICYmIGV4cHIuc291cmNlLmxlbmd0aCA+IDApXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IG51bGwsXG4gICAgICAgICAgICB0ZXh0OiByZXN1bHRbMF0sXG4gICAgICAgICAgICByZXN0OiB0eHQuc3Vic3RyKHJlc3VsdFswXS5sZW5ndGgpLFxuICAgICAgICAgICAgc3RhcnQ6IDAsXG4gICAgICAgICAgICBlbmQ6IHJlc3VsdFswXS5sZW5ndGggLSAxLFxuICAgICAgICAgICAgZnVsbFRleHQ6IHJlc3VsdFswXSxcbiAgICAgICAgICAgIGVycm9yczogW10sXG4gICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICBwYXJlbnQ6IG51bGxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5leHBvcnRzLnJlYWRUb2tlbiA9IHJlYWRUb2tlbjtcbmZ1bmN0aW9uIGVzY2FwZVJlZ0V4cChzdHIpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1tcXC1cXFtcXF1cXC9cXHtcXH1cXChcXClcXCpcXCtcXD9cXC5cXFxcXFxeXFwkXFx8XS9nLCAnXFxcXCQmJyk7XG59XG5leHBvcnRzLmVzY2FwZVJlZ0V4cCA9IGVzY2FwZVJlZ0V4cDtcbmZ1bmN0aW9uIGZpeFJlc3QodG9rZW4pIHtcbiAgICB0b2tlbi5yZXN0ID0gJyc7XG4gICAgdG9rZW4uY2hpbGRyZW4gJiYgdG9rZW4uY2hpbGRyZW4uZm9yRWFjaChjID0+IGZpeFJlc3QoYykpO1xufVxuZnVuY3Rpb24gZml4UG9zaXRpb25zKHRva2VuLCBzdGFydCkge1xuICAgIHRva2VuLnN0YXJ0ICs9IHN0YXJ0O1xuICAgIHRva2VuLmVuZCArPSBzdGFydDtcbiAgICB0b2tlbi5jaGlsZHJlbiAmJiB0b2tlbi5jaGlsZHJlbi5mb3JFYWNoKGMgPT4gZml4UG9zaXRpb25zKGMsIHRva2VuLnN0YXJ0KSk7XG59XG5mdW5jdGlvbiBhZ3JlZ2F0ZUVycm9ycyhlcnJvcnMsIHRva2VuKSB7XG4gICAgaWYgKHRva2VuLmVycm9ycyAmJiB0b2tlbi5lcnJvcnMubGVuZ3RoKVxuICAgICAgICB0b2tlbi5lcnJvcnMuZm9yRWFjaChlcnIgPT4gZXJyb3JzLnB1c2goZXJyKSk7XG4gICAgdG9rZW4uY2hpbGRyZW4gJiYgdG9rZW4uY2hpbGRyZW4uZm9yRWFjaCh0b2sgPT4gYWdyZWdhdGVFcnJvcnMoZXJyb3JzLCB0b2spKTtcbn1cbmZ1bmN0aW9uIHBhcnNlUnVsZU5hbWUobmFtZSkge1xuICAgIGxldCBwb3N0RGVjb3JhdGlvbiA9IGRlY29yYXRpb25SRS5leGVjKG5hbWUpO1xuICAgIGxldCBwcmVEZWNvcmF0aW9uID0gcHJlRGVjb3JhdGlvblJFLmV4ZWMobmFtZSk7XG4gICAgbGV0IHBvc3REZWNvcmF0aW9uVGV4dCA9IChwb3N0RGVjb3JhdGlvbiAmJiBwb3N0RGVjb3JhdGlvblswXSkgfHwgJyc7XG4gICAgbGV0IHByZURlY29yYXRpb25UZXh0ID0gKHByZURlY29yYXRpb24gJiYgcHJlRGVjb3JhdGlvblswXSkgfHwgJyc7XG4gICAgbGV0IG91dCA9IHtcbiAgICAgICAgcmF3OiBuYW1lLFxuICAgICAgICBuYW1lOiBuYW1lLnJlcGxhY2UoZGVjb3JhdGlvblJFLCAnJykucmVwbGFjZShwcmVEZWNvcmF0aW9uUkUsICcnKSxcbiAgICAgICAgaXNPcHRpb25hbDogcG9zdERlY29yYXRpb25UZXh0ID09ICc/JyB8fCBwb3N0RGVjb3JhdGlvblRleHQgPT0gJyonLFxuICAgICAgICBhbGxvd1JlcGV0aXRpb246IHBvc3REZWNvcmF0aW9uVGV4dCA9PSAnKycgfHwgcG9zdERlY29yYXRpb25UZXh0ID09ICcqJyxcbiAgICAgICAgYXRMZWFzdE9uZTogcG9zdERlY29yYXRpb25UZXh0ID09ICcrJyxcbiAgICAgICAgbG9va3VwUG9zaXRpdmU6IHByZURlY29yYXRpb25UZXh0ID09ICcmJyxcbiAgICAgICAgbG9va3VwTmVnYXRpdmU6IHByZURlY29yYXRpb25UZXh0ID09ICchJyxcbiAgICAgICAgcGlubmVkOiBwcmVEZWNvcmF0aW9uVGV4dCA9PSAnQCcsXG4gICAgICAgIGxvb2t1cDogZmFsc2UsXG4gICAgICAgIGlzTGl0ZXJhbDogZmFsc2VcbiAgICB9O1xuICAgIG91dC5pc0xpdGVyYWwgPSBvdXQubmFtZVswXSA9PSBcIidcIiB8fCBvdXQubmFtZVswXSA9PSAnXCInO1xuICAgIG91dC5sb29rdXAgPSBvdXQubG9va3VwTmVnYXRpdmUgfHwgb3V0Lmxvb2t1cFBvc2l0aXZlO1xuICAgIHJldHVybiBvdXQ7XG59XG5leHBvcnRzLnBhcnNlUnVsZU5hbWUgPSBwYXJzZVJ1bGVOYW1lO1xuZnVuY3Rpb24gZmluZFJ1bGVCeU5hbWUobmFtZSwgcGFyc2VyKSB7XG4gICAgbGV0IHBhcnNlZCA9IHBhcnNlUnVsZU5hbWUobmFtZSk7XG4gICAgcmV0dXJuIHBhcnNlci5jYWNoZWRSdWxlc1twYXJzZWQubmFtZV0gfHwgbnVsbDtcbn1cbmV4cG9ydHMuZmluZFJ1bGVCeU5hbWUgPSBmaW5kUnVsZUJ5TmFtZTtcbi8vLyBSZW1vdmVzIGFsbCB0aGUgbm9kZXMgc3RhcnRpbmcgd2l0aCAnUlVMRV8nXG5mdW5jdGlvbiBzdHJpcFJ1bGVzKHRva2VuLCByZSkge1xuICAgIGlmICh0b2tlbi5jaGlsZHJlbikge1xuICAgICAgICBsZXQgbG9jYWxSdWxlcyA9IHRva2VuLmNoaWxkcmVuLmZpbHRlcih4ID0+IHgudHlwZSAmJiByZS50ZXN0KHgudHlwZSkpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxvY2FsUnVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBpbmRleE9uQ2hpbGRyZW4gPSB0b2tlbi5jaGlsZHJlbi5pbmRleE9mKGxvY2FsUnVsZXNbaV0pO1xuICAgICAgICAgICAgaWYgKGluZGV4T25DaGlsZHJlbiAhPSAtMSkge1xuICAgICAgICAgICAgICAgIHRva2VuLmNoaWxkcmVuLnNwbGljZShpbmRleE9uQ2hpbGRyZW4sIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRva2VuLmNoaWxkcmVuLmZvckVhY2goYyA9PiBzdHJpcFJ1bGVzKGMsIHJlKSk7XG4gICAgfVxufVxuY29uc3QgaWdub3JlTWlzc2luZ1J1bGVzID0gWydFT0YnXTtcbmNsYXNzIFBhcnNlciB7XG4gICAgY29uc3RydWN0b3IoZ3JhbW1hclJ1bGVzLCBvcHRpb25zKSB7XG4gICAgICAgIHRoaXMuZ3JhbW1hclJ1bGVzID0gZ3JhbW1hclJ1bGVzO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB0aGlzLmNhY2hlZFJ1bGVzID0ge307XG4gICAgICAgIHRoaXMuZGVidWcgPSBvcHRpb25zID8gb3B0aW9ucy5kZWJ1ZyA9PT0gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICBsZXQgZXJyb3JzID0gW107XG4gICAgICAgIGxldCBuZWVkZWRSdWxlcyA9IFtdO1xuICAgICAgICBncmFtbWFyUnVsZXMuZm9yRWFjaChydWxlID0+IHtcbiAgICAgICAgICAgIGxldCBwYXJzZWROYW1lID0gcGFyc2VSdWxlTmFtZShydWxlLm5hbWUpO1xuICAgICAgICAgICAgaWYgKHBhcnNlZE5hbWUubmFtZSBpbiB0aGlzLmNhY2hlZFJ1bGVzKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JzLnB1c2goJ0R1cGxpY2F0ZWQgcnVsZSAnICsgcGFyc2VkTmFtZS5uYW1lKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlZFJ1bGVzW3BhcnNlZE5hbWUubmFtZV0gPSBydWxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFydWxlLmJuZiB8fCAhcnVsZS5ibmYubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgbGV0IGVycm9yID0gJ01pc3NpbmcgcnVsZSBjb250ZW50LCBydWxlOiAnICsgcnVsZS5uYW1lO1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcnMuaW5kZXhPZihlcnJvcikgPT0gLTEpXG4gICAgICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJ1bGUuYm5mLmZvckVhY2gob3B0aW9ucyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXJzZWQgPSBwYXJzZVJ1bGVOYW1lKG9wdGlvbnNbMF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlZC5uYW1lID09IHJ1bGUubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciA9ICdMZWZ0IHJlY3Vyc2lvbiBpcyBub3QgYWxsb3dlZCwgcnVsZTogJyArIHJ1bGUubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JzLmluZGV4T2YoZXJyb3IpID09IC0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuYW1lID0gcGFyc2VSdWxlTmFtZShvcHRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbmFtZS5pc0xpdGVyYWwgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZGVkUnVsZXMuaW5kZXhPZihuYW1lLm5hbWUpID09IC0xICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZU1pc3NpbmdSdWxlcy5pbmRleE9mKG5hbWUubmFtZSkgPT0gLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRlZFJ1bGVzLnB1c2gobmFtZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoV1NfUlVMRSA9PSBydWxlLm5hbWUpXG4gICAgICAgICAgICAgICAgcnVsZS5pbXBsaWNpdFdzID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAocnVsZS5pbXBsaWNpdFdzKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5lZWRlZFJ1bGVzLmluZGV4T2YoV1NfUlVMRSkgPT0gLTEpXG4gICAgICAgICAgICAgICAgICAgIG5lZWRlZFJ1bGVzLnB1c2goV1NfUlVMRSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocnVsZS5yZWNvdmVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5lZWRlZFJ1bGVzLmluZGV4T2YocnVsZS5yZWNvdmVyKSA9PSAtMSlcbiAgICAgICAgICAgICAgICAgICAgbmVlZGVkUnVsZXMucHVzaChydWxlLnJlY292ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgbmVlZGVkUnVsZXMuZm9yRWFjaChydWxlTmFtZSA9PiB7XG4gICAgICAgICAgICBpZiAoIShydWxlTmFtZSBpbiB0aGlzLmNhY2hlZFJ1bGVzKSkge1xuICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKCdNaXNzaW5nIHJ1bGUgJyArIHJ1bGVOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChlcnJvcnMubGVuZ3RoKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9ycy5qb2luKCdcXG4nKSk7XG4gICAgfVxuICAgIGdldEFTVCh0eHQsIHRhcmdldCkge1xuICAgICAgICBpZiAoIXRhcmdldCkge1xuICAgICAgICAgICAgdGFyZ2V0ID0gdGhpcy5ncmFtbWFyUnVsZXMuZmlsdGVyKHggPT4gIXguZnJhZ21lbnQgJiYgeC5uYW1lLmluZGV4T2YoJyUnKSAhPSAwKVswXS5uYW1lO1xuICAgICAgICB9XG4gICAgICAgIGxldCByZXN1bHQgPSB0aGlzLnBhcnNlKHR4dCwgdGFyZ2V0KTtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgYWdyZWdhdGVFcnJvcnMocmVzdWx0LmVycm9ycywgcmVzdWx0KTtcbiAgICAgICAgICAgIGZpeFBvc2l0aW9ucyhyZXN1bHQsIDApO1xuICAgICAgICAgICAgLy8gUkVNT1ZFIEFMTCBUSEUgVEFHUyBNQVRDSElORyAvXiUvXG4gICAgICAgICAgICBzdHJpcFJ1bGVzKHJlc3VsdCwgL14lLyk7XG4gICAgICAgICAgICBpZiAoIXRoaXMub3B0aW9ucyB8fCAhdGhpcy5vcHRpb25zLmtlZXBVcHBlclJ1bGVzKVxuICAgICAgICAgICAgICAgIHN0cmlwUnVsZXMocmVzdWx0LCBVUFBFUl9TTkFLRV9SRSk7XG4gICAgICAgICAgICBsZXQgcmVzdCA9IHJlc3VsdC5yZXN0O1xuICAgICAgICAgICAgaWYgKHJlc3QpIHtcbiAgICAgICAgICAgICAgICBuZXcgVG9rZW5FcnJvcl8xLlRva2VuRXJyb3IoJ1VuZXhwZWN0ZWQgZW5kIG9mIGlucHV0OiBcXG4nICsgcmVzdCwgcmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpeFJlc3QocmVzdWx0KTtcbiAgICAgICAgICAgIHJlc3VsdC5yZXN0ID0gcmVzdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBlbWl0U291cmNlKCkge1xuICAgICAgICByZXR1cm4gJ0NBTk5PVCBFTUlUIFNPVVJDRSBGUk9NIEJBU0UgUGFyc2VyJztcbiAgICB9XG4gICAgcGFyc2UodHh0LCB0YXJnZXQsIHJlY3Vyc2lvbiA9IDApIHtcbiAgICAgICAgbGV0IG91dCA9IG51bGw7XG4gICAgICAgIGxldCB0eXBlID0gcGFyc2VSdWxlTmFtZSh0YXJnZXQpO1xuICAgICAgICBsZXQgZXhwcjtcbiAgICAgICAgbGV0IHByaW50YWJsZSA9IHRoaXMuZGVidWcgJiYgLyohaXNMaXRlcmFsICYqLyAhVVBQRVJfU05BS0VfUkUudGVzdCh0eXBlLm5hbWUpO1xuICAgICAgICBwcmludGFibGUgJiZcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKG5ldyBBcnJheShyZWN1cnNpb24pLmpvaW4oJ+KUgiAgJykgKyAnVHJ5aW5nIHRvIGdldCAnICsgdGFyZ2V0ICsgJyBmcm9tICcgKyBKU09OLnN0cmluZ2lmeSh0eHQuc3BsaXQoJ1xcbicpWzBdKSk7XG4gICAgICAgIGxldCByZWFsVHlwZSA9IHR5cGUubmFtZTtcbiAgICAgICAgbGV0IHRhcmdldExleCA9IGZpbmRSdWxlQnlOYW1lKHR5cGUubmFtZSwgdGhpcyk7XG4gICAgICAgIGlmICh0eXBlLm5hbWUgPT0gJ0VPRicpIHtcbiAgICAgICAgICAgIGlmICh0eHQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0eHQubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnRU9GJyxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIHJlc3Q6ICcnLFxuICAgICAgICAgICAgICAgICAgICBzdGFydDogMCxcbiAgICAgICAgICAgICAgICAgICAgZW5kOiAwLFxuICAgICAgICAgICAgICAgICAgICBmdWxsVGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yczogW10sXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBudWxsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKCF0YXJnZXRMZXggJiYgdHlwZS5pc0xpdGVyYWwpIHtcbiAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWV2YWxcbiAgICAgICAgICAgICAgICBsZXQgc3JjID0gZXZhbCh0eXBlLm5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChzcmMgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnJSVFTVBUWSUlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdDogdHh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBmdWxsVGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGV4cHIgPSBuZXcgUmVnRXhwKGVzY2FwZVJlZ0V4cChzcmMpKTtcbiAgICAgICAgICAgICAgICByZWFsVHlwZSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgUmVmZXJlbmNlRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV4cHIpIHtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSByZWFkVG9rZW4odHh0LCBleHByKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQudHlwZSA9IHJlYWxUeXBlO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgb3B0aW9ucyA9IHRhcmdldExleC5ibmY7XG4gICAgICAgICAgICBpZiAob3B0aW9ucyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5mb3JFYWNoKHBoYXNlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvdXQpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIGxldCBwaW5uZWQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdG1wID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgZnVsbFRleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN0OiB0eHRcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldExleC5mcmFnbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgIHRtcC5mcmFnbWVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0bXBUeHQgPSB0eHQ7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGxldCBhbGxPcHRpb25hbCA9IHBoYXNlcy5sZW5ndGggPiAwO1xuICAgICAgICAgICAgICAgICAgICBsZXQgZm91bmRTb21ldGhpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwaGFzZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcGhhc2VzW2ldID09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvY2FsVGFyZ2V0ID0gcGFyc2VSdWxlTmFtZShwaGFzZXNbaV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbE9wdGlvbmFsID0gYWxsT3B0aW9uYWwgJiYgbG9jYWxUYXJnZXQuaXNPcHRpb25hbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZ290O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmb3VuZEF0TGVhc3RPbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRMZXguaW1wbGljaXRXcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290ID0gdGhpcy5wYXJzZSh0bXBUeHQsIGxvY2FsVGFyZ2V0Lm5hbWUsIHJlY3Vyc2lvbiArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFnb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgV1M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXUyA9IHRoaXMucGFyc2UodG1wVHh0LCBXU19SVUxFLCByZWN1cnNpb24gKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFdTKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAudGV4dCA9IHRtcC50ZXh0ICsgV1MudGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcC5lbmQgPSB0bXAudGV4dC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXUy5wYXJlbnQgPSB0bXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAuY2hpbGRyZW4ucHVzaChXUyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBUeHQgPSB0bXBUeHQuc3Vic3RyKFdTLnRleHQubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uICs9IFdTLnRleHQubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChXUyAmJiBXUy50ZXh0Lmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290ID0gZ290IHx8IHRoaXMucGFyc2UodG1wVHh0LCBsb2NhbFRhcmdldC5uYW1lLCByZWN1cnNpb24gKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcnVsZSA6Oj0gXCJ0cnVlXCIgIVthLXpBLVpdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5lZ2F0aXZlIGxvb2t1cCwgaWYgaXQgZG9lcyBub3QgbWF0Y2gsIHdlIHNob3VsZCBjb250aW51ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxUYXJnZXQubG9va3VwTmVnYXRpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnb3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIGNhbmNlbCB0aGlzIHBhdGggKi87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxUYXJnZXQubG9va3VwUG9zaXRpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZ290KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWdvdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsVGFyZ2V0LmlzT3B0aW9uYWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxUYXJnZXQuYXRMZWFzdE9uZSAmJiBmb3VuZEF0TGVhc3RPbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdvdCAmJiB0YXJnZXRMZXgucGlubmVkID09IGkgKyAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5uZWQgPSBnb3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGFibGUgJiYgY29uc29sZS5sb2cobmV3IEFycmF5KHJlY3Vyc2lvbiArIDEpLmpvaW4oJ+KUgiAgJykgKyAn4pSU4pSAICcgKyBnb3QudHlwZSArICcgUElOTkVEJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFnb3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3QgPSB0aGlzLnBhcnNlUmVjb3ZlcnkodGFyZ2V0TGV4LCB0bXBUeHQsIHJlY3Vyc2lvbiArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWdvdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBpbm5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IHRtcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3QgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdTeW50YXhFcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHRtcFR4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IHRtcFR4dC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yczogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxUZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdDogJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXBUeHQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUb2tlbkVycm9yXzEuVG9rZW5FcnJvcihgVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQuIEV4cGVjdGluZyAke2xvY2FsVGFyZ2V0Lm5hbWV9IEdvdDogJHt0bXBUeHR9YCwgZ290KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUb2tlbkVycm9yXzEuVG9rZW5FcnJvcihgVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQuIE1pc3NpbmcgJHtsb2NhbFRhcmdldC5uYW1lfWAsIGdvdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50YWJsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhuZXcgQXJyYXkocmVjdXJzaW9uICsgMSkuam9pbign4pSCICAnKSArICfilJTilIAgJyArIGdvdC50eXBlICsgJyAnICsgSlNPTi5zdHJpbmdpZnkoZ290LnRleHQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEF0TGVhc3RPbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZFNvbWV0aGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnb3QudHlwZSA9PSAnJSVFTVBUWSUlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290LnN0YXJ0ICs9IHBvc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3QuZW5kICs9IHBvc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxvY2FsVGFyZ2V0Lmxvb2t1cFBvc2l0aXZlICYmIGdvdC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ290LmZyYWdtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290LmNoaWxkcmVuICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdC5jaGlsZHJlbi5mb3JFYWNoKHggPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5zdGFydCArPSBwb3NpdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHguZW5kICs9IHBvc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5wYXJlbnQgPSB0bXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAuY2hpbGRyZW4ucHVzaCh4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3QucGFyZW50ID0gdG1wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcC5jaGlsZHJlbi5wdXNoKGdvdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsVGFyZ2V0Lmxvb2t1cClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdC5sb29rdXAgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGFibGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG5ldyBBcnJheShyZWN1cnNpb24gKyAxKS5qb2luKCfilIIgICcpICsgJ+KUlOKUgCAnICsgZ290LnR5cGUgKyAnICcgKyBKU09OLnN0cmluZ2lmeShnb3QudGV4dCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFYXQgaXQgZnJvbSB0aGUgaW5wdXQgc3RyZWFtLCBvbmx5IGlmIGl0IGlzIG5vdCBhIGxvb2t1cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxvY2FsVGFyZ2V0Lmxvb2t1cCAmJiAhZ290Lmxvb2t1cCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wLnRleHQgPSB0bXAudGV4dCArIGdvdC50ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wLmVuZCA9IHRtcC50ZXh0Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcFR4dCA9IHRtcFR4dC5zdWJzdHIoZ290LnRleHQubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uICs9IGdvdC50ZXh0Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAucmVzdCA9IHRtcFR4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChnb3QgJiYgbG9jYWxUYXJnZXQuYWxsb3dSZXBldGl0aW9uICYmIHRtcFR4dC5sZW5ndGggJiYgIWdvdC5sb29rdXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSAvKiBJUyBBIFJFR0VYUCAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdvdCA9IHJlYWRUb2tlbih0bXBUeHQsIHBoYXNlc1tpXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFnb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGFibGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cobmV3IEFycmF5KHJlY3Vyc2lvbiArIDEpLmpvaW4oJ+KUgiAgJykgKyAn4pSUPiAnICsgSlNPTi5zdHJpbmdpZnkoZ290LnRleHQpICsgcGhhc2VzW2ldLnNvdXJjZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRTb21ldGhpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdC5zdGFydCArPSBwb3NpdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3QuZW5kICs9IHBvc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcC50ZXh0ID0gdG1wLnRleHQgKyBnb3QudGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAuZW5kID0gdG1wLnRleHQubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcFR4dCA9IHRtcFR4dC5zdWJzdHIoZ290LnRleHQubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiArPSBnb3QudGV4dC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wLnJlc3QgPSB0bXBUeHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kU29tZXRoaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSB0bXA7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmludGFibGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhuZXcgQXJyYXkocmVjdXJzaW9uKS5qb2luKCfilIIgICcpICsgJ+KUnDzilIDilLQ8IFBVU0hJTkcgJyArIG91dC50eXBlICsgJyAnICsgSlNPTi5zdHJpbmdpZnkob3V0LnRleHQpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG91dCAmJiB0YXJnZXRMZXguc2ltcGxpZnlXaGVuT25lQ2hpbGRyZW4gJiYgb3V0LmNoaWxkcmVuLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgICAgICAgICAgb3V0ID0gb3V0LmNoaWxkcmVuWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghb3V0KSB7XG4gICAgICAgICAgICBwcmludGFibGUgJiYgY29uc29sZS5sb2codGFyZ2V0ICsgJyBOT1QgUkVTT0xWRUQgRlJPTSAnICsgdHh0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cbiAgICBwYXJzZVJlY292ZXJ5KHJlY292ZXJhYmxlVG9rZW4sIHRtcFR4dCwgcmVjdXJzaW9uKSB7XG4gICAgICAgIGlmIChyZWNvdmVyYWJsZVRva2VuLnJlY292ZXIgJiYgdG1wVHh0Lmxlbmd0aCkge1xuICAgICAgICAgICAgbGV0IHByaW50YWJsZSA9IHRoaXMuZGVidWc7XG4gICAgICAgICAgICBwcmludGFibGUgJiZcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhuZXcgQXJyYXkocmVjdXJzaW9uICsgMSkuam9pbign4pSCICAnKSArXG4gICAgICAgICAgICAgICAgICAgICdUcnlpbmcgdG8gcmVjb3ZlciB1bnRpbCB0b2tlbiAnICtcbiAgICAgICAgICAgICAgICAgICAgcmVjb3ZlcmFibGVUb2tlbi5yZWNvdmVyICtcbiAgICAgICAgICAgICAgICAgICAgJyBmcm9tICcgK1xuICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh0bXBUeHQuc3BsaXQoJ1xcbicpWzBdICsgdG1wVHh0LnNwbGl0KCdcXG4nKVsxXSkpO1xuICAgICAgICAgICAgbGV0IHRtcCA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnU3ludGF4RXJyb3InLFxuICAgICAgICAgICAgICAgIHRleHQ6ICcnLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgICAgICAgICBlbmQ6IDAsXG4gICAgICAgICAgICAgICAgZXJyb3JzOiBbXSxcbiAgICAgICAgICAgICAgICBmdWxsVGV4dDogJycsXG4gICAgICAgICAgICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgICAgICAgICAgIHN0YXJ0OiAwLFxuICAgICAgICAgICAgICAgIHJlc3Q6ICcnXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbGV0IGdvdDtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICBnb3QgPSB0aGlzLnBhcnNlKHRtcFR4dCwgcmVjb3ZlcmFibGVUb2tlbi5yZWNvdmVyLCByZWN1cnNpb24gKyAxKTtcbiAgICAgICAgICAgICAgICBpZiAoZ290KSB7XG4gICAgICAgICAgICAgICAgICAgIG5ldyBUb2tlbkVycm9yXzEuVG9rZW5FcnJvcignVW5leHBlY3RlZCBpbnB1dDogXCInICsgdG1wLnRleHQgKyBgXCIgRXhwZWN0aW5nOiAke3JlY292ZXJhYmxlVG9rZW4ubmFtZX1gLCB0bXApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRtcC50ZXh0ID0gdG1wLnRleHQgKyB0bXBUeHRbMF07XG4gICAgICAgICAgICAgICAgICAgIHRtcC5lbmQgPSB0bXAudGV4dC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHRtcFR4dCA9IHRtcFR4dC5zdWJzdHIoMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSB3aGlsZSAoIWdvdCAmJiB0bXBUeHQubGVuZ3RoID4gMCk7XG4gICAgICAgICAgICBpZiAodG1wLnRleHQubGVuZ3RoID4gMCAmJiBnb3QpIHtcbiAgICAgICAgICAgICAgICBwcmludGFibGUgJiYgY29uc29sZS5sb2cobmV3IEFycmF5KHJlY3Vyc2lvbiArIDEpLmpvaW4oJ+KUgiAgJykgKyAnUmVjb3ZlcmVkIHRleHQ6ICcgKyBKU09OLnN0cmluZ2lmeSh0bXAudGV4dCkpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0bXA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuZXhwb3J0cy5QYXJzZXIgPSBQYXJzZXI7XG5leHBvcnRzLmRlZmF1bHQgPSBQYXJzZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1QYXJzZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmZpbmRDaGlsZHJlbkJ5VHlwZSA9IHZvaWQgMDtcbi8qKlxuICogRmluZHMgYWxsIHRoZSBkaXJlY3QgY2hpbGRzIG9mIGEgc3BlY2lmeWVkIHR5cGVcbiAqL1xuZnVuY3Rpb24gZmluZENoaWxkcmVuQnlUeXBlKHRva2VuLCB0eXBlKSB7XG4gICAgcmV0dXJuIHRva2VuLmNoaWxkcmVuID8gdG9rZW4uY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlID09IHR5cGUpIDogW107XG59XG5leHBvcnRzLmZpbmRDaGlsZHJlbkJ5VHlwZSA9IGZpbmRDaGlsZHJlbkJ5VHlwZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNlbWFudGljSGVscGVycy5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JhY2t1cyVFMiU4MCU5M05hdXJfRm9ybVxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLypcbnN5bnRheCA6Oj0gUlVMRV9FT0wqIHJ1bGUrXG5ydWxlIDo6PSBcIiBcIiogXCI8XCIgcnVsZS1uYW1lIFwiPlwiIFwiIFwiKiBcIjo6PVwiIGZpcnN0RXhwcmVzc2lvbiBvdGhlckV4cHJlc3Npb24qIFwiIFwiKiBSVUxFX0VPTCsgXCIgXCIqXG5maXJzdEV4cHJlc3Npb24gOjo9IFwiIFwiKiBsaXN0XG5vdGhlckV4cHJlc3Npb24gOjo9IFwiIFwiKiBcInxcIiBcIiBcIiogbGlzdFxuUlVMRV9FT0wgOjo9IFwiXFxyXCIgfCBcIlxcblwiXG5saXN0IDo6PSB0ZXJtIFwiIFwiKiBsaXN0IHwgdGVybVxudGVybSA6Oj0gbGl0ZXJhbCB8IFwiPFwiIHJ1bGUtbmFtZSBcIj5cIlxubGl0ZXJhbCA6Oj0gJ1wiJyBSVUxFX0NIQVJBQ1RFUjEqICdcIicgfCBcIidcIiBSVUxFX0NIQVJBQ1RFUjIqIFwiJ1wiXG5SVUxFX0NIQVJBQ1RFUiA6Oj0gXCIgXCIgfCBSVUxFX0xFVFRFUiB8IFJVTEVfRElHSVQgfCBSVUxFX1NZTUJPTFxuUlVMRV9MRVRURVIgOjo9IFwiQVwiIHwgXCJCXCIgfCBcIkNcIiB8IFwiRFwiIHwgXCJFXCIgfCBcIkZcIiB8IFwiR1wiIHwgXCJIXCIgfCBcIklcIiB8IFwiSlwiIHwgXCJLXCIgfCBcIkxcIiB8IFwiTVwiIHwgXCJOXCIgfCBcIk9cIiB8IFwiUFwiIHwgXCJRXCIgfCBcIlJcIiB8IFwiU1wiIHwgXCJUXCIgfCBcIlVcIiB8IFwiVlwiIHwgXCJXXCIgfCBcIlhcIiB8IFwiWVwiIHwgXCJaXCIgfCBcImFcIiB8IFwiYlwiIHwgXCJjXCIgfCBcImRcIiB8IFwiZVwiIHwgXCJmXCIgfCBcImdcIiB8IFwiaFwiIHwgXCJpXCIgfCBcImpcIiB8IFwia1wiIHwgXCJsXCIgfCBcIm1cIiB8IFwiblwiIHwgXCJvXCIgfCBcInBcIiB8IFwicVwiIHwgXCJyXCIgfCBcInNcIiB8IFwidFwiIHwgXCJ1XCIgfCBcInZcIiB8IFwid1wiIHwgXCJ4XCIgfCBcInlcIiB8IFwielwiXG5SVUxFX0RJR0lUIDo6PSBcIjBcIiB8IFwiMVwiIHwgXCIyXCIgfCBcIjNcIiB8IFwiNFwiIHwgXCI1XCIgfCBcIjZcIiB8IFwiN1wiIHwgXCI4XCIgfCBcIjlcIlxuUlVMRV9TWU1CT0wgOjo9IFwiLVwiIHwgXCJfXCIgfCBcIiFcIiB8IFwiI1wiIHwgXCIkXCIgfCBcIiVcIiB8IFwiJlwiIHwgXCIoXCIgfCBcIilcIiB8IFwiKlwiIHwgXCIrXCIgfCBcIixcIiB8IFwiLVwiIHwgXCIuXCIgfCBcIi9cIiB8IFwiOlwiIHwgXCI7XCIgfCBcIjxcIiB8IFwiPVwiIHwgXCI+XCIgfCBcIj9cIiB8IFwiQFwiIHwgXCJbXCIgfCBcIlxcXCIgfCBcIl1cIiB8IFwiXlwiIHwgXCJfXCIgfCBcImBcIiB8IFwie1wiIHwgXCJ8XCIgfCBcIn1cIiB8IFwiflwiXG5SVUxFX0NIQVJBQ1RFUjEgOjo9IFJVTEVfQ0hBUkFDVEVSIHwgXCInXCJcblJVTEVfQ0hBUkFDVEVSMiA6Oj0gUlVMRV9DSEFSQUNURVIgfCAnXCInXG5ydWxlLW5hbWUgOjo9IFJVTEVfTEVUVEVSIFJVTEVfQ0hBUipcblJVTEVfQ0hBUiA6Oj0gUlVMRV9MRVRURVIgfCBSVUxFX0RJR0lUIHwgXCJfXCIgfCBcIi1cIlxuKi9cbmNvbnN0IFNlbWFudGljSGVscGVyc18xID0gcmVxdWlyZShcIi4uL1NlbWFudGljSGVscGVyc1wiKTtcbmNvbnN0IFBhcnNlcl8xID0gcmVxdWlyZShcIi4uL1BhcnNlclwiKTtcbnZhciBCTkY7XG4oZnVuY3Rpb24gKEJORikge1xuICAgIEJORi5SVUxFUyA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3N5bnRheCcsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfRU9MKicsICdydWxlKyddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAncnVsZScsXG4gICAgICAgICAgICBibmY6IFtcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICdcIiBcIionLFxuICAgICAgICAgICAgICAgICAgICAnXCI8XCInLFxuICAgICAgICAgICAgICAgICAgICAncnVsZS1uYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgJ1wiPlwiJyxcbiAgICAgICAgICAgICAgICAgICAgJ1wiIFwiKicsXG4gICAgICAgICAgICAgICAgICAgICdcIjo6PVwiJyxcbiAgICAgICAgICAgICAgICAgICAgJ2ZpcnN0RXhwcmVzc2lvbicsXG4gICAgICAgICAgICAgICAgICAgICdvdGhlckV4cHJlc3Npb24qJyxcbiAgICAgICAgICAgICAgICAgICAgJ1wiIFwiKicsXG4gICAgICAgICAgICAgICAgICAgICdSVUxFX0VPTCsnLFxuICAgICAgICAgICAgICAgICAgICAnXCIgXCIqJ1xuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2ZpcnN0RXhwcmVzc2lvbicsXG4gICAgICAgICAgICBibmY6IFtbJ1wiIFwiKicsICdsaXN0J11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdvdGhlckV4cHJlc3Npb24nLFxuICAgICAgICAgICAgYm5mOiBbWydcIiBcIionLCAnXCJ8XCInLCAnXCIgXCIqJywgJ2xpc3QnXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfRU9MJyxcbiAgICAgICAgICAgIGJuZjogW1snXCJcXFxcclwiJ10sIFsnXCJcXFxcblwiJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdsaXN0JyxcbiAgICAgICAgICAgIGJuZjogW1sndGVybScsICdcIiBcIionLCAnbGlzdCddLCBbJ3Rlcm0nXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3Rlcm0nLFxuICAgICAgICAgICAgYm5mOiBbWydsaXRlcmFsJ10sIFsnXCI8XCInLCAncnVsZS1uYW1lJywgJ1wiPlwiJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdsaXRlcmFsJyxcbiAgICAgICAgICAgIGJuZjogW1tgJ1wiJ2AsICdSVUxFX0NIQVJBQ1RFUjEqJywgYCdcIidgXSwgW2BcIidcImAsICdSVUxFX0NIQVJBQ1RFUjIqJywgYFwiJ1wiYF1dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdSVUxFX0NIQVJBQ1RFUicsXG4gICAgICAgICAgICBibmY6IFtbJ1wiIFwiJ10sIFsnUlVMRV9MRVRURVInXSwgWydSVUxFX0RJR0lUJ10sIFsnUlVMRV9TWU1CT0wnXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfTEVUVEVSJyxcbiAgICAgICAgICAgIGJuZjogW1xuICAgICAgICAgICAgICAgIFsnXCJBXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiQlwiJ10sXG4gICAgICAgICAgICAgICAgWydcIkNcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJEXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiRVwiJ10sXG4gICAgICAgICAgICAgICAgWydcIkZcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJHXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiSFwiJ10sXG4gICAgICAgICAgICAgICAgWydcIklcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJKXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiS1wiJ10sXG4gICAgICAgICAgICAgICAgWydcIkxcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJNXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiTlwiJ10sXG4gICAgICAgICAgICAgICAgWydcIk9cIiddLFxuICAgICAgICAgICAgICAgIFsnXCJQXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiUVwiJ10sXG4gICAgICAgICAgICAgICAgWydcIlJcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJTXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiVFwiJ10sXG4gICAgICAgICAgICAgICAgWydcIlVcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJWXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiV1wiJ10sXG4gICAgICAgICAgICAgICAgWydcIlhcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJZXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiWlwiJ10sXG4gICAgICAgICAgICAgICAgWydcImFcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJiXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiY1wiJ10sXG4gICAgICAgICAgICAgICAgWydcImRcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJlXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiZlwiJ10sXG4gICAgICAgICAgICAgICAgWydcImdcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJoXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiaVwiJ10sXG4gICAgICAgICAgICAgICAgWydcImpcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJrXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wibFwiJ10sXG4gICAgICAgICAgICAgICAgWydcIm1cIiddLFxuICAgICAgICAgICAgICAgIFsnXCJuXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wib1wiJ10sXG4gICAgICAgICAgICAgICAgWydcInBcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJxXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiclwiJ10sXG4gICAgICAgICAgICAgICAgWydcInNcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJ0XCInXSxcbiAgICAgICAgICAgICAgICBbJ1widVwiJ10sXG4gICAgICAgICAgICAgICAgWydcInZcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJ3XCInXSxcbiAgICAgICAgICAgICAgICBbJ1wieFwiJ10sXG4gICAgICAgICAgICAgICAgWydcInlcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJ6XCInXVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUlVMRV9ESUdJVCcsXG4gICAgICAgICAgICBibmY6IFtbJ1wiMFwiJ10sIFsnXCIxXCInXSwgWydcIjJcIiddLCBbJ1wiM1wiJ10sIFsnXCI0XCInXSwgWydcIjVcIiddLCBbJ1wiNlwiJ10sIFsnXCI3XCInXSwgWydcIjhcIiddLCBbJ1wiOVwiJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdSVUxFX1NZTUJPTCcsXG4gICAgICAgICAgICBibmY6IFtcbiAgICAgICAgICAgICAgICBbJ1wiLVwiJ10sXG4gICAgICAgICAgICAgICAgWydcIl9cIiddLFxuICAgICAgICAgICAgICAgIFsnXCIhXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiI1wiJ10sXG4gICAgICAgICAgICAgICAgWydcIiRcIiddLFxuICAgICAgICAgICAgICAgIFsnXCIlXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiJlwiJ10sXG4gICAgICAgICAgICAgICAgWydcIihcIiddLFxuICAgICAgICAgICAgICAgIFsnXCIpXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiKlwiJ10sXG4gICAgICAgICAgICAgICAgWydcIitcIiddLFxuICAgICAgICAgICAgICAgIFsnXCIsXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiLVwiJ10sXG4gICAgICAgICAgICAgICAgWydcIi5cIiddLFxuICAgICAgICAgICAgICAgIFsnXCIvXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiOlwiJ10sXG4gICAgICAgICAgICAgICAgWydcIjtcIiddLFxuICAgICAgICAgICAgICAgIFsnXCI8XCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiPVwiJ10sXG4gICAgICAgICAgICAgICAgWydcIj5cIiddLFxuICAgICAgICAgICAgICAgIFsnXCI/XCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiQFwiJ10sXG4gICAgICAgICAgICAgICAgWydcIltcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJcXFxcXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiXVwiJ10sXG4gICAgICAgICAgICAgICAgWydcIl5cIiddLFxuICAgICAgICAgICAgICAgIFsnXCJfXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiYFwiJ10sXG4gICAgICAgICAgICAgICAgWydcIntcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJ8XCInXSxcbiAgICAgICAgICAgICAgICBbJ1wifVwiJ10sXG4gICAgICAgICAgICAgICAgWydcIn5cIiddXG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdSVUxFX0NIQVJBQ1RFUjEnLFxuICAgICAgICAgICAgYm5mOiBbWydSVUxFX0NIQVJBQ1RFUiddLCBbYFwiJ1wiYF1dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdSVUxFX0NIQVJBQ1RFUjInLFxuICAgICAgICAgICAgYm5mOiBbWydSVUxFX0NIQVJBQ1RFUiddLCBbYCdcIidgXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3J1bGUtbmFtZScsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfTEVUVEVSJywgJ1JVTEVfQ0hBUionXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfQ0hBUicsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfTEVUVEVSJ10sIFsnUlVMRV9ESUdJVCddLCBbJ1wiX1wiJ10sIFsnXCItXCInXV1cbiAgICAgICAgfVxuICAgIF07XG4gICAgQk5GLmRlZmF1bHRQYXJzZXIgPSBuZXcgUGFyc2VyXzEuUGFyc2VyKEJORi5SVUxFUywgeyBkZWJ1ZzogZmFsc2UgfSk7XG4gICAgZnVuY3Rpb24gZ2V0QWxsVGVybXMoZXhwcikge1xuICAgICAgICBsZXQgdGVybXMgPSBTZW1hbnRpY0hlbHBlcnNfMS5maW5kQ2hpbGRyZW5CeVR5cGUoZXhwciwgJ3Rlcm0nKS5tYXAodGVybSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gU2VtYW50aWNIZWxwZXJzXzEuZmluZENoaWxkcmVuQnlUeXBlKHRlcm0sICdsaXRlcmFsJykuY29uY2F0KFNlbWFudGljSGVscGVyc18xLmZpbmRDaGlsZHJlbkJ5VHlwZSh0ZXJtLCAncnVsZS1uYW1lJykpWzBdLnRleHQ7XG4gICAgICAgIH0pO1xuICAgICAgICBTZW1hbnRpY0hlbHBlcnNfMS5maW5kQ2hpbGRyZW5CeVR5cGUoZXhwciwgJ2xpc3QnKS5mb3JFYWNoKGV4cHIgPT4ge1xuICAgICAgICAgICAgdGVybXMgPSB0ZXJtcy5jb25jYXQoZ2V0QWxsVGVybXMoZXhwcikpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRlcm1zO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRSdWxlcyhzb3VyY2UsIHBhcnNlciA9IEJORi5kZWZhdWx0UGFyc2VyKSB7XG4gICAgICAgIGxldCBhc3QgPSBwYXJzZXIuZ2V0QVNUKHNvdXJjZSk7XG4gICAgICAgIGlmICghYXN0KVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgcGFyc2UgJyArIHNvdXJjZSk7XG4gICAgICAgIGlmIChhc3QuZXJyb3JzICYmIGFzdC5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBhc3QuZXJyb3JzWzBdO1xuICAgICAgICB9XG4gICAgICAgIGxldCBydWxlcyA9IFNlbWFudGljSGVscGVyc18xLmZpbmRDaGlsZHJlbkJ5VHlwZShhc3QsICdydWxlJyk7XG4gICAgICAgIGxldCByZXQgPSBydWxlcy5tYXAoKHJ1bGUpID0+IHtcbiAgICAgICAgICAgIGxldCBuYW1lID0gU2VtYW50aWNIZWxwZXJzXzEuZmluZENoaWxkcmVuQnlUeXBlKHJ1bGUsICdydWxlLW5hbWUnKVswXS50ZXh0O1xuICAgICAgICAgICAgbGV0IGV4cHJlc3Npb25zID0gU2VtYW50aWNIZWxwZXJzXzEuZmluZENoaWxkcmVuQnlUeXBlKHJ1bGUsICdmaXJzdEV4cHJlc3Npb24nKS5jb25jYXQoU2VtYW50aWNIZWxwZXJzXzEuZmluZENoaWxkcmVuQnlUeXBlKHJ1bGUsICdvdGhlckV4cHJlc3Npb24nKSk7XG4gICAgICAgICAgICBsZXQgYm5mID0gW107XG4gICAgICAgICAgICBleHByZXNzaW9ucy5mb3JFYWNoKGV4cHIgPT4ge1xuICAgICAgICAgICAgICAgIGJuZi5wdXNoKGdldEFsbFRlcm1zKGV4cHIpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICAgIGJuZlxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghcmV0LnNvbWUoeCA9PiB4Lm5hbWUgPT0gJ0VPTCcpKSB7XG4gICAgICAgICAgICByZXQucHVzaCh7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0VPTCcsXG4gICAgICAgICAgICAgICAgYm5mOiBbWydcIlxcXFxyXFxcXG5cIicsICdcIlxcXFxyXCInLCAnXCJcXFxcblwiJ11dXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgICBCTkYuZ2V0UnVsZXMgPSBnZXRSdWxlcztcbiAgICBmdW5jdGlvbiBUcmFuc2Zvcm0oc291cmNlLCBzdWJQYXJzZXIgPSBCTkYuZGVmYXVsdFBhcnNlcikge1xuICAgICAgICByZXR1cm4gZ2V0UnVsZXMoc291cmNlLmpvaW4oJycpLCBzdWJQYXJzZXIpO1xuICAgIH1cbiAgICBCTkYuVHJhbnNmb3JtID0gVHJhbnNmb3JtO1xuICAgIGNsYXNzIFBhcnNlciBleHRlbmRzIFBhcnNlcl8xLlBhcnNlciB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHNvdXJjZSwgb3B0aW9ucykge1xuICAgICAgICAgICAgY29uc3Qgc3ViUGFyc2VyID0gb3B0aW9ucyAmJiBvcHRpb25zLmRlYnVnUnVsZXNQYXJzZXIgPT09IHRydWUgPyBuZXcgUGFyc2VyXzEuUGFyc2VyKEJORi5SVUxFUywgeyBkZWJ1ZzogdHJ1ZSB9KSA6IEJORi5kZWZhdWx0UGFyc2VyO1xuICAgICAgICAgICAgc3VwZXIoZ2V0UnVsZXMoc291cmNlLCBzdWJQYXJzZXIpLCBvcHRpb25zKTtcbiAgICAgICAgICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICAgICAgICB9XG4gICAgICAgIGVtaXRTb3VyY2UoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgQk5GLlBhcnNlciA9IFBhcnNlcjtcbn0pKEJORiB8fCAoQk5GID0ge30pKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEJORjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJORi5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sLyNOVC1OYW1lXG4vLyBodHRwOi8vd3d3LmJvdHRsZWNhcHMuZGUvcnIvdWlcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIEdyYW1tYXJcdDo6PVx0UHJvZHVjdGlvbipcbi8vIFByb2R1Y3Rpb25cdDo6PVx0TkNOYW1lICc6Oj0nIENob2ljZVxuLy8gTkNOYW1lXHQ6Oj1cdFtodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtbmFtZXMvI05ULU5DTmFtZV1cbi8vIENob2ljZVx0Ojo9XHRTZXF1ZW5jZU9yRGlmZmVyZW5jZSAoICd8JyBTZXF1ZW5jZU9yRGlmZmVyZW5jZSApKlxuLy8gU2VxdWVuY2VPckRpZmZlcmVuY2VcdDo6PVx0KEl0ZW0gKCAnLScgSXRlbSB8IEl0ZW0qICkpP1xuLy8gSXRlbVx0Ojo9XHRQcmltYXJ5ICggJz8nIHwgJyonIHwgJysnICk/XG4vLyBQcmltYXJ5XHQ6Oj1cdE5DTmFtZSB8IFN0cmluZ0xpdGVyYWwgfCBDaGFyQ29kZSB8IENoYXJDbGFzcyB8ICcoJyBDaG9pY2UgJyknXG4vLyBTdHJpbmdMaXRlcmFsXHQ6Oj1cdCdcIicgW15cIl0qICdcIicgfCBcIidcIiBbXiddKiBcIidcIlxuLy8gQ2hhckNvZGVcdDo6PVx0JyN4JyBbMC05YS1mQS1GXStcbi8vIENoYXJDbGFzc1x0Ojo9XHQnWycgJ14nPyAoIFJVTEVfQ2hhciB8IENoYXJDb2RlIHwgQ2hhclJhbmdlIHwgQ2hhckNvZGVSYW5nZSApKyAnXSdcbi8vIFJVTEVfQ2hhclx0Ojo9XHRbaHR0cDovL3d3dy53My5vcmcvVFIveG1sI05ULVJVTEVfQ2hhcl1cbi8vIENoYXJSYW5nZVx0Ojo9XHRSVUxFX0NoYXIgJy0nICggUlVMRV9DaGFyIC0gJ10nIClcbi8vIENoYXJDb2RlUmFuZ2VcdDo6PVx0Q2hhckNvZGUgJy0nIENoYXJDb2RlXG4vLyBSVUxFX1dISVRFU1BBQ0VcdDo6PVx0UlVMRV9TIHwgQ29tbWVudFxuLy8gUlVMRV9TXHQ6Oj1cdCN4OSB8ICN4QSB8ICN4RCB8ICN4MjBcbi8vIENvbW1lbnRcdDo6PVx0Jy8qJyAoIFteKl0gfCAnKicrIFteKi9dICkqICcqJyogJyovJ1xuY29uc3QgUGFyc2VyXzEgPSByZXF1aXJlKFwiLi4vUGFyc2VyXCIpO1xudmFyIEJORjtcbihmdW5jdGlvbiAoQk5GKSB7XG4gICAgQk5GLlJVTEVTID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnR3JhbW1hcicsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfUyonLCAnJUF0b21pYyonLCAnRU9GJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclQXRvbWljJyxcbiAgICAgICAgICAgIGJuZjogW1snUHJvZHVjdGlvbicsICdSVUxFX1MqJ11dLFxuICAgICAgICAgICAgZnJhZ21lbnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1Byb2R1Y3Rpb24nLFxuICAgICAgICAgICAgYm5mOiBbWydOQ05hbWUnLCAnUlVMRV9TKicsICdcIjo6PVwiJywgJ1JVTEVfV0hJVEVTUEFDRSonLCAnQ2hvaWNlJywgJ1JVTEVfV0hJVEVTUEFDRSonLCAnUlVMRV9FT0wrJywgJ1JVTEVfUyonXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ05DTmFtZScsXG4gICAgICAgICAgICBibmY6IFtbL1thLXpBLVpdW2EtekEtWl8wLTldKi9dXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQ2hvaWNlJyxcbiAgICAgICAgICAgIGJuZjogW1snU2VxdWVuY2VPckRpZmZlcmVuY2UnLCAnJV9DaG9pY2VfMSonXV0sXG4gICAgICAgICAgICBmcmFnbWVudDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJV9DaG9pY2VfMScsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfV0hJVEVTUEFDRSonLCAnXCJ8XCInLCAnUlVMRV9XSElURVNQQUNFKicsICdTZXF1ZW5jZU9yRGlmZmVyZW5jZSddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdTZXF1ZW5jZU9yRGlmZmVyZW5jZScsXG4gICAgICAgICAgICBibmY6IFtbJ0l0ZW0nLCAnUlVMRV9XSElURVNQQUNFKicsICclX0l0ZW1fMT8nXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJyVfSXRlbV8xJyxcbiAgICAgICAgICAgIGJuZjogW1snTWludXMnLCAnSXRlbSddLCBbJ0l0ZW0qJ11dLFxuICAgICAgICAgICAgZnJhZ21lbnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ01pbnVzJyxcbiAgICAgICAgICAgIGJuZjogW1snXCItXCInXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0l0ZW0nLFxuICAgICAgICAgICAgYm5mOiBbWydSVUxFX1dISVRFU1BBQ0UqJywgJyVQcmltYXJ5JywgJ1ByaW1hcnlEZWNvcmF0aW9uPyddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdQcmltYXJ5RGVjb3JhdGlvbicsXG4gICAgICAgICAgICBibmY6IFtbJ1wiP1wiJ10sIFsnXCIqXCInXSwgWydcIitcIiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnRGVjb3JhdGlvbk5hbWUnLFxuICAgICAgICAgICAgYm5mOiBbWydcImVibmY6Ly9cIicsIC9bXlxceDVEI10rL11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclUHJpbWFyeScsXG4gICAgICAgICAgICBibmY6IFtbJ05DTmFtZSddLCBbJ1N0cmluZ0xpdGVyYWwnXSwgWydDaGFyQ29kZSddLCBbJ0NoYXJDbGFzcyddLCBbJ1N1Ykl0ZW0nXV0sXG4gICAgICAgICAgICBmcmFnbWVudDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnU3ViSXRlbScsXG4gICAgICAgICAgICBibmY6IFtbJ1wiKFwiJywgJ1JVTEVfV0hJVEVTUEFDRSonLCAnQ2hvaWNlJywgJ1JVTEVfV0hJVEVTUEFDRSonLCAnXCIpXCInXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1N0cmluZ0xpdGVyYWwnLFxuICAgICAgICAgICAgYm5mOiBbW2AnXCInYCwgL1teXCJdKi8sIGAnXCInYF0sIFtgXCInXCJgLCAvW14nXSovLCBgXCInXCJgXV0sXG4gICAgICAgICAgICBwaW5uZWQ6IDFcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0NoYXJDb2RlJyxcbiAgICAgICAgICAgIGJuZjogW1snXCIjeFwiJywgL1swLTlhLXpBLVpdKy9dXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQ2hhckNsYXNzJyxcbiAgICAgICAgICAgIGJuZjogW1tcIidbJ1wiLCBcIideJz9cIiwgJyVSVUxFX0NoYXJDbGFzc18xKycsICdcIl1cIiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJVJVTEVfQ2hhckNsYXNzXzEnLFxuICAgICAgICAgICAgYm5mOiBbWydDaGFyQ29kZVJhbmdlJ10sIFsnQ2hhclJhbmdlJ10sIFsnQ2hhckNvZGUnXSwgWydSVUxFX0NoYXInXV0sXG4gICAgICAgICAgICBmcmFnbWVudDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUlVMRV9DaGFyJyxcbiAgICAgICAgICAgIGJuZjogW1svXFx4MDkvXSwgWy9cXHgwQS9dLCBbL1xceDBEL10sIFsvW1xceDIwLVxceDVjXS9dLCBbL1tcXHg1ZS1cXHVEN0ZGXS9dLCBbL1tcXHVFMDAwLVxcdUZGRkRdL11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdDaGFyUmFuZ2UnLFxuICAgICAgICAgICAgYm5mOiBbWydSVUxFX0NoYXInLCAnXCItXCInLCAnUlVMRV9DaGFyJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdDaGFyQ29kZVJhbmdlJyxcbiAgICAgICAgICAgIGJuZjogW1snQ2hhckNvZGUnLCAnXCItXCInLCAnQ2hhckNvZGUnXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfV0hJVEVTUEFDRScsXG4gICAgICAgICAgICBibmY6IFtbJyVSVUxFX1dISVRFU1BBQ0VfQ0hBUionXSwgWydDb21tZW50JywgJ1JVTEVfV0hJVEVTUEFDRSonXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfUycsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfV0hJVEVTUEFDRScsICdSVUxFX1MqJ10sIFsnUlVMRV9FT0wnLCAnUlVMRV9TKiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJVJVTEVfV0hJVEVTUEFDRV9DSEFSJyxcbiAgICAgICAgICAgIGJuZjogW1svXFx4MDkvXSwgWy9cXHgyMC9dXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdDb21tZW50JyxcbiAgICAgICAgICAgIGJuZjogW1snXCIvKlwiJywgJyVSVUxFX0NvbW1lbnRfQm9keSonLCAnXCIqL1wiJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclUlVMRV9Db21tZW50X0JvZHknLFxuICAgICAgICAgICAgYm5mOiBbWychXCIqL1wiJywgL1teKl0vXV0sXG4gICAgICAgICAgICBmcmFnbWVudDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUlVMRV9FT0wnLFxuICAgICAgICAgICAgYm5mOiBbWy9cXHgwRC8sIC9cXHgwQS9dLCBbL1xceDBBL10sIFsvXFx4MEQvXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0xpbmsnLFxuICAgICAgICAgICAgYm5mOiBbW1wiJ1snXCIsICdVcmwnLCBcIiddJ1wiXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1VybCcsXG4gICAgICAgICAgICBibmY6IFtbL1teXFx4NUQ6Lz8jXS8sICdcIjovL1wiJywgL1teXFx4NUQjXSsvLCAnJVVybDE/J11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclVXJsMScsXG4gICAgICAgICAgICBibmY6IFtbJ1wiI1wiJywgJ05DTmFtZSddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH1cbiAgICBdO1xuICAgIEJORi5kZWZhdWx0UGFyc2VyID0gbmV3IFBhcnNlcl8xLlBhcnNlcihCTkYuUlVMRVMsIHsgZGVidWc6IGZhbHNlIH0pO1xuICAgIGNvbnN0IHByZURlY29yYXRpb25SRSA9IC9eKCF8JikvO1xuICAgIGNvbnN0IGRlY29yYXRpb25SRSA9IC8oXFw/fFxcK3xcXCopJC87XG4gICAgY29uc3Qgc3ViRXhwcmVzc2lvblJFID0gL14lLztcbiAgICBmdW5jdGlvbiBnZXRCTkZSdWxlKG5hbWUsIHBhcnNlcikge1xuICAgICAgICBpZiAodHlwZW9mIG5hbWUgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmIChwcmVEZWNvcmF0aW9uUkUudGVzdChuYW1lKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICBsZXQgc3ViZXhwcmVzc2lvbiA9IHN1YkV4cHJlc3Npb25SRS50ZXN0KG5hbWUpO1xuICAgICAgICAgICAgaWYgKHN1YmV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgICAgICBsZXQgZGVjb3JhdGlvbiA9IGRlY29yYXRpb25SRS5leGVjKG5hbWUpO1xuICAgICAgICAgICAgICAgIGxldCBkZWNvcmF0aW9uVGV4dCA9IGRlY29yYXRpb24gPyBkZWNvcmF0aW9uWzBdICsgJyAnIDogJyc7XG4gICAgICAgICAgICAgICAgbGV0IGxvbmVseSA9IGlzTG9uZWx5UnVsZShuYW1lLCBwYXJzZXIpO1xuICAgICAgICAgICAgICAgIGlmIChsb25lbHkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRCTkZCb2R5KG5hbWUsIHBhcnNlcikgKyBkZWNvcmF0aW9uVGV4dDtcbiAgICAgICAgICAgICAgICByZXR1cm4gJygnICsgZ2V0Qk5GQm9keShuYW1lLCBwYXJzZXIpICsgJyknICsgZGVjb3JhdGlvblRleHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuYW1lLnNvdXJjZVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcKD86eHx1KShbYS16QS1aMC05XSspL2csICcjeCQxJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbXFxcXCg/Onh8dSkoW2EtekEtWjAtOV0rKS1cXFxcKD86eHx1KShbYS16QS1aMC05XSspXFxdL2csICdbI3gkMS0jeCQyXScpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vLyBSZXR1cm5zIHRydWUgaWYgdGhlIHJ1bGUgaXMgYSBzdHJpbmcgbGl0ZXJhbCBvciByZWd1bGFyIGV4cHJlc3Npb24gd2l0aG91dCBhIGRlc2NlbmRhbnQgdHJlZVxuICAgIGZ1bmN0aW9uIGlzTG9uZWx5UnVsZShuYW1lLCBwYXJzZXIpIHtcbiAgICAgICAgbGV0IHJ1bGUgPSBQYXJzZXJfMS5maW5kUnVsZUJ5TmFtZShuYW1lLCBwYXJzZXIpO1xuICAgICAgICByZXR1cm4gKHJ1bGUgJiZcbiAgICAgICAgICAgIHJ1bGUuYm5mLmxlbmd0aCA9PSAxICYmXG4gICAgICAgICAgICBydWxlLmJuZlswXS5sZW5ndGggPT0gMSAmJlxuICAgICAgICAgICAgKHJ1bGUuYm5mWzBdWzBdIGluc3RhbmNlb2YgUmVnRXhwIHx8IHJ1bGUuYm5mWzBdWzBdWzBdID09ICdcIicgfHwgcnVsZS5ibmZbMF1bMF1bMF0gPT0gXCInXCIpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0Qk5GQ2hvaWNlKHJ1bGVzLCBwYXJzZXIpIHtcbiAgICAgICAgcmV0dXJuIHJ1bGVzLm1hcCh4ID0+IGdldEJORlJ1bGUoeCwgcGFyc2VyKSkuam9pbignICcpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRCTkZCb2R5KG5hbWUsIHBhcnNlcikge1xuICAgICAgICBsZXQgcnVsZSA9IFBhcnNlcl8xLmZpbmRSdWxlQnlOYW1lKG5hbWUsIHBhcnNlcik7XG4gICAgICAgIGlmIChydWxlKVxuICAgICAgICAgICAgcmV0dXJuIHJ1bGUuYm5mLm1hcCh4ID0+IGdldEJORkNob2ljZSh4LCBwYXJzZXIpKS5qb2luKCcgfCAnKTtcbiAgICAgICAgcmV0dXJuICdSVUxFX05PVF9GT1VORCB7JyArIG5hbWUgKyAnfSc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGVtaXQocGFyc2VyKSB7XG4gICAgICAgIGxldCBhY3VtdWxhdG9yID0gW107XG4gICAgICAgIHBhcnNlci5ncmFtbWFyUnVsZXMuZm9yRWFjaChsID0+IHtcbiAgICAgICAgICAgIGlmICghL14lLy50ZXN0KGwubmFtZSkpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVjb3ZlciA9IGwucmVjb3ZlciA/ICcgLyogeyByZWNvdmVyVW50aWw9JyArIGwucmVjb3ZlciArICcgfSAqLycgOiAnJztcbiAgICAgICAgICAgICAgICBhY3VtdWxhdG9yLnB1c2gobC5uYW1lICsgJyA6Oj0gJyArIGdldEJORkJvZHkobC5uYW1lLCBwYXJzZXIpICsgcmVjb3Zlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYWN1bXVsYXRvci5qb2luKCdcXG4nKTtcbiAgICB9XG4gICAgQk5GLmVtaXQgPSBlbWl0O1xuICAgIGxldCBzdWJpdGVtcyA9IDA7XG4gICAgZnVuY3Rpb24gcmVzdGFyKHRvdGFsLCByZXN0YSkge1xuICAgICAgICBjb25zb2xlLmxvZygncmViZXJpYSByZXN0YXIgJyArIHJlc3RhICsgJyBhICcgKyB0b3RhbCk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRGlmZmVyZW5jZSBub3Qgc3VwcG9ydGVkIHlldCcpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjb252ZXJ0UmVnZXgodHh0KSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHR4dFxuICAgICAgICAgICAgLnJlcGxhY2UoLyN4KFthLXpBLVowLTldezR9KS9nLCAnXFxcXHUkMScpXG4gICAgICAgICAgICAucmVwbGFjZSgvI3goW2EtekEtWjAtOV17M30pL2csICdcXFxcdTAkMScpXG4gICAgICAgICAgICAucmVwbGFjZSgvI3goW2EtekEtWjAtOV17Mn0pL2csICdcXFxceCQxJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC8jeChbYS16QS1aMC05XXsxfSkvZywgJ1xcXFx4MCQxJykpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRTdWJJdGVtcyh0bXBSdWxlcywgc2VxLCBwYXJlbnROYW1lKSB7XG4gICAgICAgIGxldCBhbnRlcmlvciA9IG51bGw7XG4gICAgICAgIGxldCBibmZTZXEgPSBbXTtcbiAgICAgICAgc2VxLmNoaWxkcmVuLmZvckVhY2goKHgsIGkpID0+IHtcbiAgICAgICAgICAgIGlmICh4LnR5cGUgPT0gJ01pbnVzJykge1xuICAgICAgICAgICAgICAgIHJlc3RhcihhbnRlcmlvciwgeCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBkZWNvcmF0aW9uID0gc2VxLmNoaWxkcmVuW2kgKyAxXTtcbiAgICAgICAgICAgIGRlY29yYXRpb24gPSAoZGVjb3JhdGlvbiAmJiBkZWNvcmF0aW9uLnR5cGUgPT0gJ1ByaW1hcnlEZWNvcmF0aW9uJyAmJiBkZWNvcmF0aW9uLnRleHQpIHx8ICcnO1xuICAgICAgICAgICAgbGV0IHByZURlY29yYXRpb24gPSAnJztcbiAgICAgICAgICAgIHN3aXRjaCAoeC50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnU3ViSXRlbSc6XG4gICAgICAgICAgICAgICAgICAgIGxldCBuYW1lID0gJyUnICsgKHBhcmVudE5hbWUgKyBzdWJpdGVtcysrKTtcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlUnVsZSh0bXBSdWxlcywgeCwgbmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGJuZlNlcS5wdXNoKHByZURlY29yYXRpb24gKyBuYW1lICsgZGVjb3JhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ05DTmFtZSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnU3RyaW5nTGl0ZXJhbCc6XG4gICAgICAgICAgICAgICAgICAgIGJuZlNlcS5wdXNoKHByZURlY29yYXRpb24gKyB4LnRleHQgKyBkZWNvcmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnQ2hhckNvZGUnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0NoYXJDbGFzcyc6XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWNvcmF0aW9uIHx8IHByZURlY29yYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdSdWxlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICclJyArIChwYXJlbnROYW1lICsgc3ViaXRlbXMrKyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm5mOiBbW2NvbnZlcnRSZWdleCh4LnRleHQpXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB0bXBSdWxlcy5wdXNoKG5ld1J1bGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm5mU2VxLnB1c2gocHJlRGVjb3JhdGlvbiArIG5ld1J1bGUubmFtZSArIGRlY29yYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm5mU2VxLnB1c2goY29udmVydFJlZ2V4KHgudGV4dCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1ByaW1hcnlEZWNvcmF0aW9uJzpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCcgSE9XIFNIT1VMRCBJIFBBUlNFIFRISVM/ICcgKyB4LnR5cGUgKyAnIC0+ICcgKyBKU09OLnN0cmluZ2lmeSh4LnRleHQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFudGVyaW9yID0geDtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBibmZTZXE7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZVJ1bGUodG1wUnVsZXMsIHRva2VuLCBuYW1lKSB7XG4gICAgICAgIGxldCBibmYgPSB0b2tlbi5jaGlsZHJlbi5maWx0ZXIoeCA9PiB4LnR5cGUgPT0gJ1NlcXVlbmNlT3JEaWZmZXJlbmNlJykubWFwKHMgPT4gZ2V0U3ViSXRlbXModG1wUnVsZXMsIHMsIG5hbWUpKTtcbiAgICAgICAgbGV0IHJ1bGUgPSB7XG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgYm5mXG4gICAgICAgIH07XG4gICAgICAgIGxldCByZWNvdmVyID0gbnVsbDtcbiAgICAgICAgYm5mLmZvckVhY2goeCA9PiB7XG4gICAgICAgICAgICByZWNvdmVyID0gcmVjb3ZlciB8fCB4WydyZWNvdmVyJ107XG4gICAgICAgICAgICBkZWxldGUgeFsncmVjb3ZlciddO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG5hbWUuaW5kZXhPZignJScpID09IDApXG4gICAgICAgICAgICBydWxlLmZyYWdtZW50ID0gdHJ1ZTtcbiAgICAgICAgaWYgKHJlY292ZXIpXG4gICAgICAgICAgICBydWxlLnJlY292ZXIgPSByZWNvdmVyO1xuICAgICAgICB0bXBSdWxlcy5wdXNoKHJ1bGUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRSdWxlcyhzb3VyY2UsIHBhcnNlciA9IEJORi5kZWZhdWx0UGFyc2VyKSB7XG4gICAgICAgIGxldCBhc3QgPSBwYXJzZXIuZ2V0QVNUKHNvdXJjZSk7XG4gICAgICAgIGlmICghYXN0KVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgcGFyc2UgJyArIHNvdXJjZSk7XG4gICAgICAgIGlmIChhc3QuZXJyb3JzICYmIGFzdC5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBhc3QuZXJyb3JzWzBdO1xuICAgICAgICB9XG4gICAgICAgIGxldCB0bXBSdWxlcyA9IFtdO1xuICAgICAgICBhc3QuY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlID09ICdQcm9kdWN0aW9uJykubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICBsZXQgbmFtZSA9IHguY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlID09ICdOQ05hbWUnKVswXS50ZXh0O1xuICAgICAgICAgICAgY3JlYXRlUnVsZSh0bXBSdWxlcywgeCwgbmFtZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdG1wUnVsZXM7XG4gICAgfVxuICAgIEJORi5nZXRSdWxlcyA9IGdldFJ1bGVzO1xuICAgIGZ1bmN0aW9uIFRyYW5zZm9ybShzb3VyY2UsIHN1YlBhcnNlciA9IEJORi5kZWZhdWx0UGFyc2VyKSB7XG4gICAgICAgIHJldHVybiBnZXRSdWxlcyhzb3VyY2Uuam9pbignJyksIHN1YlBhcnNlcik7XG4gICAgfVxuICAgIEJORi5UcmFuc2Zvcm0gPSBUcmFuc2Zvcm07XG4gICAgY2xhc3MgUGFyc2VyIGV4dGVuZHMgUGFyc2VyXzEuUGFyc2VyIHtcbiAgICAgICAgY29uc3RydWN0b3Ioc291cmNlLCBvcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBzdWJQYXJzZXIgPSBvcHRpb25zICYmIG9wdGlvbnMuZGVidWdSdWxlc1BhcnNlciA9PT0gdHJ1ZSA/IG5ldyBQYXJzZXJfMS5QYXJzZXIoQk5GLlJVTEVTLCB7IGRlYnVnOiB0cnVlIH0pIDogQk5GLmRlZmF1bHRQYXJzZXI7XG4gICAgICAgICAgICBzdXBlcihnZXRSdWxlcyhzb3VyY2UsIHN1YlBhcnNlciksIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGVtaXRTb3VyY2UoKSB7XG4gICAgICAgICAgICByZXR1cm4gZW1pdCh0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBCTkYuUGFyc2VyID0gUGFyc2VyO1xufSkoQk5GIHx8IChCTkYgPSB7fSkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gQk5GO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VzNDRUJORi5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sLyNOVC1OYW1lXG4vLyBodHRwOi8vd3d3LmJvdHRsZWNhcHMuZGUvcnIvdWlcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIEdyYW1tYXJcdDo6PVx0UHJvZHVjdGlvbipcbi8vIFByb2R1Y3Rpb25cdDo6PVx0TkNOYW1lICc6Oj0nIENob2ljZVxuLy8gTkNOYW1lXHQ6Oj1cdFtodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtbmFtZXMvI05ULU5DTmFtZV1cbi8vIENob2ljZVx0Ojo9XHRTZXF1ZW5jZU9yRGlmZmVyZW5jZSAoICd8JyBTZXF1ZW5jZU9yRGlmZmVyZW5jZSApKlxuLy8gU2VxdWVuY2VPckRpZmZlcmVuY2VcdDo6PVx0KEl0ZW0gKCAnLScgSXRlbSB8IEl0ZW0qICkpP1xuLy8gSXRlbVx0Ojo9XHRQcmltYXJ5ICggJz8nIHwgJyonIHwgJysnICk/XG4vLyBQcmltYXJ5XHQ6Oj1cdE5DTmFtZSB8IFN0cmluZ0xpdGVyYWwgfCBDaGFyQ29kZSB8IENoYXJDbGFzcyB8ICcoJyBDaG9pY2UgJyknXG4vLyBTdHJpbmdMaXRlcmFsXHQ6Oj1cdCdcIicgW15cIl0qICdcIicgfCBcIidcIiBbXiddKiBcIidcIlxuLy8gQ2hhckNvZGVcdDo6PVx0JyN4JyBbMC05YS1mQS1GXStcbi8vIENoYXJDbGFzc1x0Ojo9XHQnWycgJ14nPyAoIFJVTEVfQ2hhciB8IENoYXJDb2RlIHwgQ2hhclJhbmdlIHwgQ2hhckNvZGVSYW5nZSApKyAnXSdcbi8vIFJVTEVfQ2hhclx0Ojo9XHRbaHR0cDovL3d3dy53My5vcmcvVFIveG1sI05ULVJVTEVfQ2hhcl1cbi8vIENoYXJSYW5nZVx0Ojo9XHRSVUxFX0NoYXIgJy0nICggUlVMRV9DaGFyIC0gJ10nIClcbi8vIENoYXJDb2RlUmFuZ2VcdDo6PVx0Q2hhckNvZGUgJy0nIENoYXJDb2RlXG4vLyBSVUxFX1dISVRFU1BBQ0VcdDo6PVx0UlVMRV9TIHwgQ29tbWVudFxuLy8gUlVMRV9TXHQ6Oj1cdCN4OSB8ICN4QSB8ICN4RCB8ICN4MjBcbi8vIENvbW1lbnRcdDo6PVx0Jy8qJyAoIFteKl0gfCAnKicrIFteKi9dICkqICcqJyogJyovJ1xuY29uc3QgVG9rZW5FcnJvcl8xID0gcmVxdWlyZShcIi4uL1Rva2VuRXJyb3JcIik7XG5jb25zdCBQYXJzZXJfMSA9IHJlcXVpcmUoXCIuLi9QYXJzZXJcIik7XG52YXIgQk5GO1xuKGZ1bmN0aW9uIChCTkYpIHtcbiAgICBCTkYuUlVMRVMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdHcmFtbWFyJyxcbiAgICAgICAgICAgIGJuZjogW1snUlVMRV9TKicsICdBdHRyaWJ1dGVzPycsICdSVUxFX1MqJywgJyVBdG9taWMqJywgJ0VPRiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJUF0b21pYycsXG4gICAgICAgICAgICBibmY6IFtbJ1Byb2R1Y3Rpb24nLCAnUlVMRV9TKiddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdQcm9kdWN0aW9uJyxcbiAgICAgICAgICAgIGJuZjogW1xuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgJ05DTmFtZScsXG4gICAgICAgICAgICAgICAgICAgICdSVUxFX1MqJyxcbiAgICAgICAgICAgICAgICAgICAgJ1wiOjo9XCInLFxuICAgICAgICAgICAgICAgICAgICAnUlVMRV9XSElURVNQQUNFKicsXG4gICAgICAgICAgICAgICAgICAgICclQ2hvaWNlJyxcbiAgICAgICAgICAgICAgICAgICAgJ1JVTEVfV0hJVEVTUEFDRSonLFxuICAgICAgICAgICAgICAgICAgICAnQXR0cmlidXRlcz8nLFxuICAgICAgICAgICAgICAgICAgICAnUlVMRV9FT0wrJyxcbiAgICAgICAgICAgICAgICAgICAgJ1JVTEVfUyonXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnTkNOYW1lJyxcbiAgICAgICAgICAgIGJuZjogW1svW2EtekEtWl1bYS16QS1aXzAtOV0qL11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdBdHRyaWJ1dGVzJyxcbiAgICAgICAgICAgIGJuZjogW1snXCJ7XCInLCAnQXR0cmlidXRlJywgJyVBdHRyaWJ1dGVzKicsICdSVUxFX1MqJywgJ1wifVwiJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclQXR0cmlidXRlcycsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfUyonLCAnXCIsXCInLCAnQXR0cmlidXRlJ11dLFxuICAgICAgICAgICAgZnJhZ21lbnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0F0dHJpYnV0ZScsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfUyonLCAnTkNOYW1lJywgJ1JVTEVfV0hJVEVTUEFDRSonLCAnXCI9XCInLCAnUlVMRV9XSElURVNQQUNFKicsICdBdHRyaWJ1dGVWYWx1ZSddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQXR0cmlidXRlVmFsdWUnLFxuICAgICAgICAgICAgYm5mOiBbWydOQ05hbWUnXSwgWy9bMS05XVswLTldKi9dXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJUNob2ljZScsXG4gICAgICAgICAgICBibmY6IFtbJ1NlcXVlbmNlT3JEaWZmZXJlbmNlJywgJyVfQ2hvaWNlXzEqJ11dLFxuICAgICAgICAgICAgZnJhZ21lbnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJyVfQ2hvaWNlXzEnLFxuICAgICAgICAgICAgYm5mOiBbWydSVUxFX1MqJywgJ1wifFwiJywgJ1JVTEVfUyonLCAnU2VxdWVuY2VPckRpZmZlcmVuY2UnXV0sXG4gICAgICAgICAgICBmcmFnbWVudDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnU2VxdWVuY2VPckRpZmZlcmVuY2UnLFxuICAgICAgICAgICAgYm5mOiBbWyclSXRlbScsICdSVUxFX1dISVRFU1BBQ0UqJywgJyVfSXRlbV8xPyddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJV9JdGVtXzEnLFxuICAgICAgICAgICAgYm5mOiBbWydNaW51cycsICclSXRlbSddLCBbJyVJdGVtKiddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdNaW51cycsXG4gICAgICAgICAgICBibmY6IFtbJ1wiLVwiJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclSXRlbScsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfV0hJVEVTUEFDRSonLCAnUHJpbWFyeVByZURlY29yYXRpb24/JywgJyVQcmltYXJ5JywgJ1ByaW1hcnlEZWNvcmF0aW9uPyddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdQcmltYXJ5RGVjb3JhdGlvbicsXG4gICAgICAgICAgICBibmY6IFtbJ1wiP1wiJ10sIFsnXCIqXCInXSwgWydcIitcIiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUHJpbWFyeVByZURlY29yYXRpb24nLFxuICAgICAgICAgICAgYm5mOiBbWydcIiZcIiddLCBbJ1wiIVwiJ10sIFsnXCJ+XCInXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJyVQcmltYXJ5JyxcbiAgICAgICAgICAgIGJuZjogW1snTkNOYW1lJ10sIFsnU3RyaW5nTGl0ZXJhbCddLCBbJ0NoYXJDb2RlJ10sIFsnQ2hhckNsYXNzJ10sIFsnU3ViSXRlbSddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdTdWJJdGVtJyxcbiAgICAgICAgICAgIGJuZjogW1snXCIoXCInLCAnUlVMRV9TKicsICclQ2hvaWNlJywgJ1JVTEVfUyonLCAnXCIpXCInXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1N0cmluZ0xpdGVyYWwnLFxuICAgICAgICAgICAgYm5mOiBbW2AnXCInYCwgL1teXCJdKi8sIGAnXCInYF0sIFtgXCInXCJgLCAvW14nXSovLCBgXCInXCJgXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0NoYXJDb2RlJyxcbiAgICAgICAgICAgIGJuZjogW1snXCIjeFwiJywgL1swLTlhLXpBLVpdKy9dXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQ2hhckNsYXNzJyxcbiAgICAgICAgICAgIGJuZjogW1tcIidbJ1wiLCBcIideJz9cIiwgJyVSVUxFX0NoYXJDbGFzc18xKycsICdcIl1cIiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJVJVTEVfQ2hhckNsYXNzXzEnLFxuICAgICAgICAgICAgYm5mOiBbWydDaGFyQ29kZVJhbmdlJ10sIFsnQ2hhclJhbmdlJ10sIFsnQ2hhckNvZGUnXSwgWydSVUxFX0NoYXInXV0sXG4gICAgICAgICAgICBmcmFnbWVudDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUlVMRV9DaGFyJyxcbiAgICAgICAgICAgIGJuZjogW1svXFx4MDkvXSwgWy9cXHgwQS9dLCBbL1xceDBEL10sIFsvW1xceDIwLVxceDVjXS9dLCBbL1tcXHg1ZS1cXHVEN0ZGXS9dLCBbL1tcXHVFMDAwLVxcdUZGRkRdL11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdDaGFyUmFuZ2UnLFxuICAgICAgICAgICAgYm5mOiBbWydSVUxFX0NoYXInLCAnXCItXCInLCAnUlVMRV9DaGFyJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdDaGFyQ29kZVJhbmdlJyxcbiAgICAgICAgICAgIGJuZjogW1snQ2hhckNvZGUnLCAnXCItXCInLCAnQ2hhckNvZGUnXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfV0hJVEVTUEFDRScsXG4gICAgICAgICAgICBibmY6IFtbJyVSVUxFX1dISVRFU1BBQ0VfQ0hBUionXSwgWydDb21tZW50JywgJ1JVTEVfV0hJVEVTUEFDRSonXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfUycsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfV0hJVEVTUEFDRScsICdSVUxFX1MqJ10sIFsnUlVMRV9FT0wnLCAnUlVMRV9TKiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJVJVTEVfV0hJVEVTUEFDRV9DSEFSJyxcbiAgICAgICAgICAgIGJuZjogW1svXFx4MDkvXSwgWy9cXHgyMC9dXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdDb21tZW50JyxcbiAgICAgICAgICAgIGJuZjogW1snXCIvKlwiJywgJyVSVUxFX0NvbW1lbnRfQm9keSonLCAnXCIqL1wiJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclUlVMRV9Db21tZW50X0JvZHknLFxuICAgICAgICAgICAgYm5mOiBbWy9bXipdL10sIFsnXCIqXCIrJywgL1teL10qL11dLFxuICAgICAgICAgICAgZnJhZ21lbnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfRU9MJyxcbiAgICAgICAgICAgIGJuZjogW1svXFx4MEQvLCAvXFx4MEEvXSwgWy9cXHgwQS9dLCBbL1xceDBEL11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdMaW5rJyxcbiAgICAgICAgICAgIGJuZjogW1tcIidbJ1wiLCAnVXJsJywgXCInXSdcIl1dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdVcmwnLFxuICAgICAgICAgICAgYm5mOiBbWy9bXlxceDVEOi8/I10vLCAnXCI6Ly9cIicsIC9bXlxceDVEI10rLywgJyVVcmwxPyddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJVVybDEnLFxuICAgICAgICAgICAgYm5mOiBbWydcIiNcIicsICdOQ05hbWUnXV0sXG4gICAgICAgICAgICBmcmFnbWVudDogdHJ1ZVxuICAgICAgICB9XG4gICAgXTtcbiAgICBCTkYuZGVmYXVsdFBhcnNlciA9IG5ldyBQYXJzZXJfMS5QYXJzZXIoQk5GLlJVTEVTLCB7IGRlYnVnOiBmYWxzZSB9KTtcbiAgICBjb25zdCBwcmVEZWNvcmF0aW9uUkUgPSAvXighfCYpLztcbiAgICBjb25zdCBkZWNvcmF0aW9uUkUgPSAvKFxcP3xcXCt8XFwqKSQvO1xuICAgIGNvbnN0IHN1YkV4cHJlc3Npb25SRSA9IC9eJS87XG4gICAgZnVuY3Rpb24gZ2V0Qk5GUnVsZShuYW1lLCBwYXJzZXIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBuYW1lID09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBsZXQgZGVjb3JhdGlvbiA9IGRlY29yYXRpb25SRS5leGVjKG5hbWUpO1xuICAgICAgICAgICAgbGV0IHByZURlY29yYXRpb24gPSBwcmVEZWNvcmF0aW9uUkUuZXhlYyhuYW1lKTtcbiAgICAgICAgICAgIGxldCBwcmVEZWNvcmF0aW9uVGV4dCA9IHByZURlY29yYXRpb24gPyBwcmVEZWNvcmF0aW9uWzBdIDogJyc7XG4gICAgICAgICAgICBsZXQgZGVjb3JhdGlvblRleHQgPSBkZWNvcmF0aW9uID8gZGVjb3JhdGlvblswXSArICcgJyA6ICcnO1xuICAgICAgICAgICAgbGV0IHN1YmV4cHJlc3Npb24gPSBzdWJFeHByZXNzaW9uUkUudGVzdChuYW1lKTtcbiAgICAgICAgICAgIGlmIChzdWJleHByZXNzaW9uKSB7XG4gICAgICAgICAgICAgICAgbGV0IGxvbmVseSA9IGlzTG9uZWx5UnVsZShuYW1lLCBwYXJzZXIpO1xuICAgICAgICAgICAgICAgIGlmIChsb25lbHkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmVEZWNvcmF0aW9uVGV4dCArIGdldEJORkJvZHkobmFtZSwgcGFyc2VyKSArIGRlY29yYXRpb25UZXh0O1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmVEZWNvcmF0aW9uVGV4dCArICcoJyArIGdldEJORkJvZHkobmFtZSwgcGFyc2VyKSArICcpJyArIGRlY29yYXRpb25UZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5hbWUucmVwbGFjZShwcmVEZWNvcmF0aW9uUkUsIHByZURlY29yYXRpb25UZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuYW1lLnNvdXJjZVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcKD86eHx1KShbYS16QS1aMC05XSspL2csICcjeCQxJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbXFxcXCg/Onh8dSkoW2EtekEtWjAtOV0rKS1cXFxcKD86eHx1KShbYS16QS1aMC05XSspXFxdL2csICdbI3gkMS0jeCQyXScpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vLyBSZXR1cm5zIHRydWUgaWYgdGhlIHJ1bGUgaXMgYSBzdHJpbmcgbGl0ZXJhbCBvciByZWd1bGFyIGV4cHJlc3Npb24gd2l0aG91dCBhIGRlc2NlbmRhbnQgdHJlZVxuICAgIGZ1bmN0aW9uIGlzTG9uZWx5UnVsZShuYW1lLCBwYXJzZXIpIHtcbiAgICAgICAgbGV0IHJ1bGUgPSBQYXJzZXJfMS5maW5kUnVsZUJ5TmFtZShuYW1lLCBwYXJzZXIpO1xuICAgICAgICByZXR1cm4gKHJ1bGUgJiZcbiAgICAgICAgICAgIHJ1bGUuYm5mLmxlbmd0aCA9PSAxICYmXG4gICAgICAgICAgICBydWxlLmJuZlswXS5sZW5ndGggPT0gMSAmJlxuICAgICAgICAgICAgKHJ1bGUuYm5mWzBdWzBdIGluc3RhbmNlb2YgUmVnRXhwIHx8IHJ1bGUuYm5mWzBdWzBdWzBdID09ICdcIicgfHwgcnVsZS5ibmZbMF1bMF1bMF0gPT0gXCInXCIpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0Qk5GQ2hvaWNlKHJ1bGVzLCBwYXJzZXIpIHtcbiAgICAgICAgcmV0dXJuIHJ1bGVzLm1hcCh4ID0+IGdldEJORlJ1bGUoeCwgcGFyc2VyKSkuam9pbignICcpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRCTkZCb2R5KG5hbWUsIHBhcnNlcikge1xuICAgICAgICBsZXQgcnVsZSA9IFBhcnNlcl8xLmZpbmRSdWxlQnlOYW1lKG5hbWUsIHBhcnNlcik7XG4gICAgICAgIGlmIChydWxlKVxuICAgICAgICAgICAgcmV0dXJuIHJ1bGUuYm5mLm1hcCh4ID0+IGdldEJORkNob2ljZSh4LCBwYXJzZXIpKS5qb2luKCcgfCAnKTtcbiAgICAgICAgcmV0dXJuICdSVUxFX05PVF9GT1VORCB7JyArIG5hbWUgKyAnfSc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGVtaXQocGFyc2VyKSB7XG4gICAgICAgIGxldCBhY3VtdWxhdG9yID0gW107XG4gICAgICAgIHBhcnNlci5ncmFtbWFyUnVsZXMuZm9yRWFjaChsID0+IHtcbiAgICAgICAgICAgIGlmICghL14lLy50ZXN0KGwubmFtZSkpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVjb3ZlciA9IGwucmVjb3ZlciA/ICcgeyByZWNvdmVyVW50aWw9JyArIGwucmVjb3ZlciArICcgfScgOiAnJztcbiAgICAgICAgICAgICAgICBhY3VtdWxhdG9yLnB1c2gobC5uYW1lICsgJyA6Oj0gJyArIGdldEJORkJvZHkobC5uYW1lLCBwYXJzZXIpICsgcmVjb3Zlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYWN1bXVsYXRvci5qb2luKCdcXG4nKTtcbiAgICB9XG4gICAgQk5GLmVtaXQgPSBlbWl0O1xuICAgIGxldCBzdWJpdGVtcyA9IDA7XG4gICAgZnVuY3Rpb24gcmVzdGFyKHRvdGFsLCByZXN0YSkge1xuICAgICAgICBjb25zb2xlLmxvZygncmViZXJpYSByZXN0YXIgJyArIHJlc3RhICsgJyBhICcgKyB0b3RhbCk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRGlmZmVyZW5jZSBub3Qgc3VwcG9ydGVkIHlldCcpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjb252ZXJ0UmVnZXgodHh0KSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHR4dFxuICAgICAgICAgICAgLnJlcGxhY2UoLyN4KFthLXpBLVowLTldezR9KS9nLCAnXFxcXHUkMScpXG4gICAgICAgICAgICAucmVwbGFjZSgvI3goW2EtekEtWjAtOV17M30pL2csICdcXFxcdTAkMScpXG4gICAgICAgICAgICAucmVwbGFjZSgvI3goW2EtekEtWjAtOV17Mn0pL2csICdcXFxceCQxJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC8jeChbYS16QS1aMC05XXsxfSkvZywgJ1xcXFx4MCQxJykpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRTdWJJdGVtcyh0bXBSdWxlcywgc2VxLCBwYXJlbnROYW1lLCBwYXJlbnRBdHRyaWJ1dGVzKSB7XG4gICAgICAgIGxldCBhbnRlcmlvciA9IG51bGw7XG4gICAgICAgIGxldCBibmZTZXEgPSBbXTtcbiAgICAgICAgc2VxLmNoaWxkcmVuLmZvckVhY2goKHgsIGkpID0+IHtcbiAgICAgICAgICAgIGlmICh4LnR5cGUgPT0gJ01pbnVzJykge1xuICAgICAgICAgICAgICAgIHJlc3RhcihhbnRlcmlvciwgeCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBkZWNvcmF0aW9uID0gc2VxLmNoaWxkcmVuW2kgKyAxXTtcbiAgICAgICAgICAgIGRlY29yYXRpb24gPSAoZGVjb3JhdGlvbiAmJiBkZWNvcmF0aW9uLnR5cGUgPT0gJ1ByaW1hcnlEZWNvcmF0aW9uJyAmJiBkZWNvcmF0aW9uLnRleHQpIHx8ICcnO1xuICAgICAgICAgICAgbGV0IHByZURlY29yYXRpb24gPSAnJztcbiAgICAgICAgICAgIGlmIChhbnRlcmlvciAmJiBhbnRlcmlvci50eXBlID09ICdQcmltYXJ5UHJlRGVjb3JhdGlvbicpIHtcbiAgICAgICAgICAgICAgICBwcmVEZWNvcmF0aW9uID0gYW50ZXJpb3IudGV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBwaW5uZWQgPSBwcmVEZWNvcmF0aW9uID09ICd+JyA/IDEgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAocGlubmVkKSB7XG4gICAgICAgICAgICAgICAgcHJlRGVjb3JhdGlvbiA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3dpdGNoICh4LnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdTdWJJdGVtJzpcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5hbWUgPSAnJScgKyAocGFyZW50TmFtZSArIHN1Yml0ZW1zKyspO1xuICAgICAgICAgICAgICAgICAgICBjcmVhdGVSdWxlKHRtcFJ1bGVzLCB4LCBuYW1lLCBwYXJlbnRBdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgICAgICAgYm5mU2VxLnB1c2gocHJlRGVjb3JhdGlvbiArIG5hbWUgKyBkZWNvcmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnTkNOYW1lJzpcbiAgICAgICAgICAgICAgICAgICAgYm5mU2VxLnB1c2gocHJlRGVjb3JhdGlvbiArIHgudGV4dCArIGRlY29yYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdTdHJpbmdMaXRlcmFsJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlY29yYXRpb24gfHwgcHJlRGVjb3JhdGlvbiB8fCAhL15bJ1wiLygpYS16QS1aMC05Jl8uOj0sKypcXC1cXF5cXFxcXSskLy50ZXN0KHgudGV4dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJuZlNlcS5wdXNoKHByZURlY29yYXRpb24gKyB4LnRleHQgKyBkZWNvcmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYyBvZiB4LnRleHQuc2xpY2UoMSwgLTEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudEF0dHJpYnV0ZXMgJiYgcGFyZW50QXR0cmlidXRlc1tcImlnbm9yZUNhc2VcIl0gPT0gXCJ0cnVlXCIgJiYgL1thLXpBLVpdLy50ZXN0KGMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJuZlNlcS5wdXNoKG5ldyBSZWdFeHAoXCJbXCIgKyBjLnRvVXBwZXJDYXNlKCkgKyBjLnRvTG93ZXJDYXNlKCkgKyBcIl1cIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm5mU2VxLnB1c2gobmV3IFJlZ0V4cChQYXJzZXJfMS5lc2NhcGVSZWdFeHAoYykpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnQ2hhckNvZGUnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0NoYXJDbGFzcyc6XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWNvcmF0aW9uIHx8IHByZURlY29yYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdSdWxlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICclJyArIChwYXJlbnROYW1lICsgc3ViaXRlbXMrKyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm5mOiBbW2NvbnZlcnRSZWdleCh4LnRleHQpXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubmVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgdG1wUnVsZXMucHVzaChuZXdSdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJuZlNlcS5wdXNoKHByZURlY29yYXRpb24gKyBuZXdSdWxlLm5hbWUgKyBkZWNvcmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJuZlNlcS5wdXNoKGNvbnZlcnRSZWdleCh4LnRleHQpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdQcmltYXJ5UHJlRGVjb3JhdGlvbic6XG4gICAgICAgICAgICAgICAgY2FzZSAnUHJpbWFyeURlY29yYXRpb24nOlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJyBIT1cgU0hPVUxEIEkgUEFSU0UgVEhJUz8gJyArIHgudHlwZSArICcgLT4gJyArIEpTT04uc3RyaW5naWZ5KHgudGV4dCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYW50ZXJpb3IgPSB4O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGJuZlNlcTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlUnVsZSh0bXBSdWxlcywgdG9rZW4sIG5hbWUsIHBhcmVudEF0dHJpYnV0ZXMgPSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGV0IGF0dHJOb2RlID0gdG9rZW4uY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlID09ICdBdHRyaWJ1dGVzJylbMF07XG4gICAgICAgIGxldCBhdHRyaWJ1dGVzID0ge307XG4gICAgICAgIGlmIChhdHRyTm9kZSkge1xuICAgICAgICAgICAgYXR0ck5vZGUuY2hpbGRyZW4uZm9yRWFjaCh4ID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IHguY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlID09ICdOQ05hbWUnKVswXS50ZXh0O1xuICAgICAgICAgICAgICAgIGlmIChuYW1lIGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFRva2VuRXJyb3JfMS5Ub2tlbkVycm9yKCdEdXBsaWNhdGVkIGF0dHJpYnV0ZSAnICsgbmFtZSwgeCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzW25hbWVdID0geC5jaGlsZHJlbi5maWx0ZXIoeCA9PiB4LnR5cGUgPT0gJ0F0dHJpYnV0ZVZhbHVlJylbMF0udGV4dDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgYm5mID0gdG9rZW4uY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlID09ICdTZXF1ZW5jZU9yRGlmZmVyZW5jZScpLm1hcChzID0+IGdldFN1Ykl0ZW1zKHRtcFJ1bGVzLCBzLCBuYW1lLCBwYXJlbnRBdHRyaWJ1dGVzID8gcGFyZW50QXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMpKTtcbiAgICAgICAgbGV0IHJ1bGUgPSB7XG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgYm5mXG4gICAgICAgIH07XG4gICAgICAgIGlmIChuYW1lLmluZGV4T2YoJyUnKSA9PSAwKVxuICAgICAgICAgICAgcnVsZS5mcmFnbWVudCA9IHRydWU7XG4gICAgICAgIGlmIChhdHRyaWJ1dGVzWydyZWNvdmVyVW50aWwnXSkge1xuICAgICAgICAgICAgcnVsZS5yZWNvdmVyID0gYXR0cmlidXRlc1sncmVjb3ZlclVudGlsJ107XG4gICAgICAgICAgICBpZiAocnVsZS5ibmYubGVuZ3RoID4gMSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVG9rZW5FcnJvcl8xLlRva2VuRXJyb3IoJ29ubHkgb25lLW9wdGlvbiBwcm9kdWN0aW9ucyBhcmUgc3VpdGFibGUgZm9yIGVycm9yIHJlY292ZXJpbmcnLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCdwaW4nIGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIGxldCBudW0gPSBwYXJzZUludChhdHRyaWJ1dGVzWydwaW4nXSk7XG4gICAgICAgICAgICBpZiAoIWlzTmFOKG51bSkpIHtcbiAgICAgICAgICAgICAgICBydWxlLnBpbm5lZCA9IG51bTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChydWxlLmJuZi5sZW5ndGggPiAxKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUb2tlbkVycm9yXzEuVG9rZW5FcnJvcignb25seSBvbmUtb3B0aW9uIHByb2R1Y3Rpb25zIGFyZSBzdWl0YWJsZSBmb3IgcGlubmluZycsIHRva2VuKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJ3dzJyBpbiBhdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICBydWxlLmltcGxpY2l0V3MgPSBhdHRyaWJ1dGVzWyd3cyddICE9ICdleHBsaWNpdCc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBydWxlLmltcGxpY2l0V3MgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJ1bGUuZnJhZ21lbnQgPSBydWxlLmZyYWdtZW50IHx8IGF0dHJpYnV0ZXNbJ2ZyYWdtZW50J10gPT0gJ3RydWUnO1xuICAgICAgICBydWxlLnNpbXBsaWZ5V2hlbk9uZUNoaWxkcmVuID0gYXR0cmlidXRlc1snc2ltcGxpZnlXaGVuT25lQ2hpbGRyZW4nXSA9PSAndHJ1ZSc7XG4gICAgICAgIHRtcFJ1bGVzLnB1c2gocnVsZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldFJ1bGVzKHNvdXJjZSwgcGFyc2VyID0gQk5GLmRlZmF1bHRQYXJzZXIpIHtcbiAgICAgICAgbGV0IGFzdCA9IHBhcnNlci5nZXRBU1Qoc291cmNlKTtcbiAgICAgICAgaWYgKCFhc3QpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBwYXJzZSAnICsgc291cmNlKTtcbiAgICAgICAgaWYgKGFzdC5lcnJvcnMgJiYgYXN0LmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IGFzdC5lcnJvcnNbMF07XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGltcGxpY2l0V3MgPSBudWxsO1xuICAgICAgICBsZXQgYXR0ck5vZGUgPSBhc3QuY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlID09ICdBdHRyaWJ1dGVzJylbMF07XG4gICAgICAgIGxldCBhdHRyaWJ1dGVzID0ge307XG4gICAgICAgIGlmIChhdHRyTm9kZSkge1xuICAgICAgICAgICAgYXR0ck5vZGUuY2hpbGRyZW4uZm9yRWFjaCh4ID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IHguY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlID09ICdOQ05hbWUnKVswXS50ZXh0O1xuICAgICAgICAgICAgICAgIGlmIChuYW1lIGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFRva2VuRXJyb3JfMS5Ub2tlbkVycm9yKCdEdXBsaWNhdGVkIGF0dHJpYnV0ZSAnICsgbmFtZSwgeCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzW25hbWVdID0geC5jaGlsZHJlbi5maWx0ZXIoeCA9PiB4LnR5cGUgPT0gJ0F0dHJpYnV0ZVZhbHVlJylbMF0udGV4dDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpbXBsaWNpdFdzID0gYXR0cmlidXRlc1snd3MnXSA9PSAnaW1wbGljaXQnO1xuICAgICAgICBsZXQgdG1wUnVsZXMgPSBbXTtcbiAgICAgICAgYXN0LmNoaWxkcmVuLmZpbHRlcih4ID0+IHgudHlwZSA9PSAnUHJvZHVjdGlvbicpLm1hcCgoeCkgPT4ge1xuICAgICAgICAgICAgbGV0IG5hbWUgPSB4LmNoaWxkcmVuLmZpbHRlcih4ID0+IHgudHlwZSA9PSAnTkNOYW1lJylbMF0udGV4dDtcbiAgICAgICAgICAgIGNyZWF0ZVJ1bGUodG1wUnVsZXMsIHgsIG5hbWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgdG1wUnVsZXMuZm9yRWFjaChydWxlID0+IHtcbiAgICAgICAgICAgIGlmIChydWxlLmltcGxpY2l0V3MgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgcnVsZS5pbXBsaWNpdFdzID0gaW1wbGljaXRXcztcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0bXBSdWxlcztcbiAgICB9XG4gICAgQk5GLmdldFJ1bGVzID0gZ2V0UnVsZXM7XG4gICAgZnVuY3Rpb24gVHJhbnNmb3JtKHNvdXJjZSwgc3ViUGFyc2VyID0gQk5GLmRlZmF1bHRQYXJzZXIpIHtcbiAgICAgICAgcmV0dXJuIGdldFJ1bGVzKHNvdXJjZS5qb2luKCcnKSwgc3ViUGFyc2VyKTtcbiAgICB9XG4gICAgQk5GLlRyYW5zZm9ybSA9IFRyYW5zZm9ybTtcbiAgICBjbGFzcyBQYXJzZXIgZXh0ZW5kcyBQYXJzZXJfMS5QYXJzZXIge1xuICAgICAgICBjb25zdHJ1Y3Rvcihzb3VyY2UsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHN1YlBhcnNlciA9IG9wdGlvbnMgJiYgb3B0aW9ucy5kZWJ1Z1J1bGVzUGFyc2VyID09PSB0cnVlID8gbmV3IFBhcnNlcl8xLlBhcnNlcihCTkYuUlVMRVMsIHsgZGVidWc6IHRydWUgfSkgOiBCTkYuZGVmYXVsdFBhcnNlcjtcbiAgICAgICAgICAgIHN1cGVyKGdldFJ1bGVzKHNvdXJjZSwgc3ViUGFyc2VyKSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgZW1pdFNvdXJjZSgpIHtcbiAgICAgICAgICAgIHJldHVybiBlbWl0KHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIEJORi5QYXJzZXIgPSBQYXJzZXI7XG59KShCTkYgfHwgKEJORiA9IHt9KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBCTkY7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1DdXN0b20uanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgQk5GXzEgPSByZXF1aXJlKFwiLi9CTkZcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJCTkZcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEJORl8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgVzNDRUJORl8xID0gcmVxdWlyZShcIi4vVzNDRUJORlwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlczQ1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gVzNDRUJORl8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgQ3VzdG9tXzEgPSByZXF1aXJlKFwiLi9DdXN0b21cIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJDdXN0b21cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEN1c3RvbV8xLmRlZmF1bHQ7IH0gfSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBQYXJzZXJfMSA9IHJlcXVpcmUoXCIuL1BhcnNlclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlBhcnNlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gUGFyc2VyXzEuUGFyc2VyOyB9IH0pO1xudmFyIFRva2VuRXJyb3JfMSA9IHJlcXVpcmUoXCIuL1Rva2VuRXJyb3JcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUb2tlbkVycm9yXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBUb2tlbkVycm9yXzEuVG9rZW5FcnJvcjsgfSB9KTtcbmV4cG9ydHMuR3JhbW1hcnMgPSByZXF1aXJlKFwiLi9HcmFtbWFyc1wiKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5wYXJzZUZvcm11bGEgPSBleHBvcnRzLnBhcnNlQW5kQXBwbHkgPSBleHBvcnRzLlNvdXJjZSA9IGV4cG9ydHMuRm9ybXVsYSA9IHZvaWQgMDtcbmNvbnN0IG5ldmVydGhyb3dfMSA9IHJlcXVpcmUoXCIuLi9uZXZlcnRocm93L25ldmVydGhyb3dcIik7XG5jb25zdCBhbGdlYnJhaWNfb3BlcmF0aW9uXzEgPSByZXF1aXJlKFwiLi9hbGdlYnJhaWNfb3BlcmF0aW9uXCIpO1xuY29uc3QgYXN0X3V0aWxzXzEgPSByZXF1aXJlKFwiLi9hc3RfdXRpbHNcIik7XG5jb25zdCBjb25kaXRpb25hbF9mdW5jdGlvbl8xID0gcmVxdWlyZShcIi4vY29uZGl0aW9uYWxfZnVuY3Rpb25cIik7XG5jb25zdCBjb25zdGFudF8xID0gcmVxdWlyZShcIi4vY29uc3RhbnRcIik7XG5jb25zdCBkZXN0aW5hdGlvbl8xID0gcmVxdWlyZShcIi4vZGVzdGluYXRpb25cIik7XG5jb25zdCBkaXNwbGF5X2RpcmVjdGl2ZV8xID0gcmVxdWlyZShcIi4vZGlzcGxheV9kaXJlY3RpdmVcIik7XG5jb25zdCByYW5nZV8xID0gcmVxdWlyZShcIi4vcmFuZ2VcIik7XG5jb25zdCByZWZlcmVuY2VfMSA9IHJlcXVpcmUoXCIuL3JlZmVyZW5jZVwiKTtcbmNvbnN0IHNpbmdsZV9wYXJhbV9mdW5jdGlvbl8xID0gcmVxdWlyZShcIi4vc2luZ2xlX3BhcmFtX2Z1bmN0aW9uXCIpO1xuY29uc3QgZWJuZl8xID0gcmVxdWlyZShcImVibmZcIik7XG5jb25zdCBsb2Rhc2hfMSA9IHJlcXVpcmUoXCJsb2Rhc2hcIik7XG4vKipcbiAqIFczQyBncmFtbWFyIGRlc2NyaWJpbmcgYSB2YWxpZCBmb3JtdWxhIGF0IHRoZSBib3R0b20gb2YgYSB0YWJsZS5cbiAqXG4gKiBUaGUgbGlicmFyeSBiZWluZyB1c2VkIHRvIHBhcnNlIHRoZSBmb3JtdWxhIGRvZXMgbm90IHN1cG9ydCBFQk5GLCBvbmx5IEJORixcbiAqIHNvIFczQyBzeW50YXggd2FzIHVzZWQgaW4gb3JkZXIgdG8gZ2V0IGFjY2VzcyB0byBleHRlbmRlZCBmZWF0dXJlcy5cbiAqXG4gKiBUaGUgcGFyc2VyIGdlbmVyYXRlcyBhIFBFRyBwYXJzZXIsIHdoaWMgaXMgbm90IGFibGUgdG8gaGFuZGxlIGFtYmlndWl0eS4gVGhlXG4gKiBvcmRlciBvZiBjb25zdHJ1Y3Rpb25zIGlzIHNpZ25pZmljYW50LlxuICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9seXMtbGFuZy9ub2RlLWVibmYvaXNzdWVzLzM0XG4gKi9cbmNvbnN0IHBhcnNlckdyYW1tYXIgPSBgXG50YmxmbV9saW5lICAgOjo9IFwiPCEtLSBUQkxGTTogXCIgZm9ybXVsYV9saXN0IFwiIC0tPlwiXG5mb3JtdWxhX2xpc3QgOjo9IGZvcm11bGEgKCBcIjo6XCIgZm9ybXVsYV9saXN0ICk/XG5mb3JtdWxhICAgICAgOjo9IGRlc3RpbmF0aW9uIFwiPVwiIHNvdXJjZSBkaXNwbGF5X2RpcmVjdGl2ZT9cblxuc291cmNlICAgICAgICAgICA6Oj0gcmFuZ2UgfCBzb3VyY2VfcmVmZXJlbmNlIHwgc2luZ2xlX3BhcmFtX2Z1bmN0aW9uX2NhbGwgfCBjb25kaXRpb25hbF9mdW5jdGlvbl9jYWxsIHwgYWxnZWJyYWljX29wZXJhdGlvbiB8IGZsb2F0IHwgcmVhbFxucmFuZ2UgICAgICAgICAgICA6Oj0gc291cmNlX3JlZmVyZW5jZSBcIi4uXCIgc291cmNlX3JlZmVyZW5jZVxuc291cmNlX3JlZmVyZW5jZSA6Oj0gYWJzb2x1dGVfcmVmZXJlbmNlIHwgcmVsYXRpdmVfcmVmZXJlbmNlXG5kZXN0aW5hdGlvbiAgICAgIDo6PSByYW5nZSB8IGFic29sdXRlX3JlZmVyZW5jZVxuXG5yZWxhdGl2ZV9yZWZlcmVuY2UgOjo9IChyZWxhdGl2ZV9yb3cgfCBhYnNvbHV0ZV9yb3cpIChyZWxhdGl2ZV9jb2x1bW4gfCBhYnNvbHV0ZV9jb2x1bW4pIHwgcmVsYXRpdmVfcm93IHwgcmVsYXRpdmVfY29sdW1uXG5yZWxhdGl2ZV9yb3cgOjo9IFwiQFwiICggXCItXCIgfCBcIitcIiApIGludFxucmVsYXRpdmVfY29sdW1uIDo6PSBcIiRcIiAoIFwiLVwiIHwgXCIrXCIgKSBpbnRcblxuYWJzb2x1dGVfcmVmZXJlbmNlIDo6PSBhYnNvbHV0ZV9yb3cgYWJzb2x1dGVfY29sdW1uIHwgYWJzb2x1dGVfcm93IHwgYWJzb2x1dGVfY29sdW1uXG5hYnNvbHV0ZV9yb3cgOjo9IFwiQFwiICggXCJJXCIgfCBcIjxcIiB8IFwiPlwiIHwgaW50IClcbmFic29sdXRlX2NvbHVtbiA6Oj0gXCIkXCIgKCBcIjxcIiB8IFwiPlwiIHwgaW50IClcblxuc2luZ2xlX3BhcmFtX2Z1bmN0aW9uX2NhbGwgOjo9IHNpbmdsZV9wYXJhbV9mdW5jdGlvbiBcIihcIiBzb3VyY2UgXCIpXCIgXG5zaW5nbGVfcGFyYW1fZnVuY3Rpb24gICAgICA6Oj0gXCJtZWFuXCIgfCBcInN1bVwiXG5cbmNvbmRpdGlvbmFsX2Z1bmN0aW9uX2NhbGwgOjo9IFwiaWYoXCIgcHJlZGljYXRlIFwiLFwiIFwiIFwiPyBzb3VyY2UgXCIsXCIgXCIgXCI/IHNvdXJjZSBcIilcIlxucHJlZGljYXRlICAgICAgICAgICAgICAgICA6Oj0gc291cmNlX3dpdGhvdXRfcmFuZ2UgY29uZGl0aW9uYWxfb3BlcmF0b3Igc291cmNlX3dpdGhvdXRfcmFuZ2VcbnNvdXJjZV93aXRob3V0X3JhbmdlICAgICAgOjo9IHNvdXJjZV9yZWZlcmVuY2UgfCBzaW5nbGVfcGFyYW1fZnVuY3Rpb25fY2FsbCB8IGNvbmRpdGlvbmFsX2Z1bmN0aW9uX2NhbGwgfCBhbGdlYnJhaWNfb3BlcmF0aW9uIHwgZmxvYXQgfCByZWFsXG5jb25kaXRpb25hbF9vcGVyYXRvciAgICAgIDo6PSBcIj5cIiB8IFwiPFwiIHwgXCI+PVwiIHwgXCI8PVwiIHwgXCI9PVwiIHwgXCIhPVwiXG5cbmFsZ2VicmFpY19vcGVyYXRpb24gOjo9IFwiKFwiIHNvdXJjZSBcIiBcIj8gYWxnZWJyYWljX29wZXJhdG9yIFwiIFwiPyBzb3VyY2UgXCIpXCJcbmFsZ2VicmFpY19vcGVyYXRvciAgOjo9IFwiK1wiIHwgXCItXCIgfCBcIipcIiB8IFwiL1wiXG5cbmRpc3BsYXlfZGlyZWN0aXZlICAgICAgICA6Oj0gXCI7XCIgZGlzcGxheV9kaXJlY3RpdmVfb3B0aW9uXG5kaXNwbGF5X2RpcmVjdGl2ZV9vcHRpb24gOjo9IGZvcm1hdHRpbmdfZGlyZWN0aXZlIHwgZGF0ZXRpbWVfZGlyZWN0aXZlXG5mb3JtYXR0aW5nX2RpcmVjdGl2ZSAgICAgOjo9IFwiJS5cIiBpbnQgXCJmXCJcbmRhdGV0aW1lX2RpcmVjdGl2ZSAgICAgICAgICAgOjo9IFwiZHRcIlxuXG5mbG9hdCA6Oj0gXCItXCI/IGludCBcIi5cIiBpbnRcbnJlYWwgOjo9IFwiLVwiPyBpbnRcbmludCAgOjo9IFswLTldK1xuYDtcbmNsYXNzIEZvcm11bGEge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUpIHtcbiAgICAgICAgdGhpcy5tZXJnZSA9ICh0YWJsZSkgPT4gdGhpcy5kZXN0aW5hdGlvbi5tZXJnZSh0aGlzLnNvdXJjZSwgdGFibGUpO1xuICAgICAgICBsZXQgZm9ybWF0dGVyID0gbmV3IGRpc3BsYXlfZGlyZWN0aXZlXzEuRGVmYXVsdEZvcm1hdHRlcigpO1xuICAgICAgICBpZiAoYXN0LmNoaWxkcmVuLmxlbmd0aCA9PT0gMykge1xuICAgICAgICAgICAgZm9ybWF0dGVyID0gbmV3IGRpc3BsYXlfZGlyZWN0aXZlXzEuRGlzcGxheURpcmVjdGl2ZShhc3QuY2hpbGRyZW5bMl0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uID0gZGVzdGluYXRpb25fMS5uZXdEZXN0aW5hdGlvbihhc3QuY2hpbGRyZW5bMF0sIHRhYmxlLCBmb3JtYXR0ZXIpO1xuICAgICAgICBpZiAoZGVzdGluYXRpb24uaXNFcnIoKSkge1xuICAgICAgICAgICAgdGhyb3cgZGVzdGluYXRpb24uZXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uLnZhbHVlO1xuICAgICAgICB0aGlzLnNvdXJjZSA9IG5ldyBTb3VyY2UoYXN0LmNoaWxkcmVuWzFdLCB0YWJsZSk7XG4gICAgfVxufVxuZXhwb3J0cy5Gb3JtdWxhID0gRm9ybXVsYTtcbmNsYXNzIFNvdXJjZSB7XG4gICAgY29uc3RydWN0b3IoYXN0LCB0YWJsZSkge1xuICAgICAgICAvKipcbiAgICAgICAgICogZ2V0VmFsdWUgcmV0dXJucyB0aGUgZXZhbHVhdGVkIHZhbHVlIGZvciB0aGlzIHNvdXJjZSByZWN1cnNpdmVseS5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZ2V0VmFsdWUgPSAodGFibGUsIGN1cnJlbnRDZWxsKSA9PiB0aGlzLmxvY2F0aW9uRGVzY3JpcHRvci5nZXRWYWx1ZSh0YWJsZSwgY3VycmVudENlbGwpO1xuICAgICAgICBpZiAoYXN0LnR5cGUgIT09ICdzb3VyY2UnICYmIGFzdC50eXBlICE9PSAnc291cmNlX3dpdGhvdXRfcmFuZ2UnKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignSW52YWxpZCBBU1QgdG9rZW4gdHlwZSBvZiAnICsgYXN0LnR5cGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhc3QuY2hpbGRyZW4ubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignVW5leHBlY3RlZCBjaGlsZHJlbiBsZW5ndGggaW4gU291cmNlJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyYW1DaGlsZCA9IGFzdC5jaGlsZHJlblswXTtcbiAgICAgICAgY29uc3QgdnAgPSBuZXdWYWx1ZVByb3ZpZGVyKHBhcmFtQ2hpbGQsIHRhYmxlKTtcbiAgICAgICAgaWYgKHZwLmlzRXJyKCkpIHtcbiAgICAgICAgICAgIHRocm93IHZwLmVycm9yO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9jYXRpb25EZXNjcmlwdG9yID0gdnAudmFsdWU7XG4gICAgfVxufVxuZXhwb3J0cy5Tb3VyY2UgPSBTb3VyY2U7XG5jb25zdCBuZXdWYWx1ZVByb3ZpZGVyID0gKGFzdCwgdGFibGUpID0+IHtcbiAgICB0cnkge1xuICAgICAgICBzd2l0Y2ggKGFzdC50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdyYW5nZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhuZXcgcmFuZ2VfMS5SYW5nZShhc3QsIHRhYmxlKSk7XG4gICAgICAgICAgICBjYXNlICdzb3VyY2VfcmVmZXJlbmNlJzpcbiAgICAgICAgICAgICAgICBjb25zdCBsZW5ndGhFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrQ2hpbGRMZW5ndGgoYXN0LCAxKTtcbiAgICAgICAgICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIobGVuZ3RoRXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyByZWZlcmVuY2VfMS5SZWZlcmVuY2UoYXN0LmNoaWxkcmVuWzBdLCB0YWJsZSkpO1xuICAgICAgICAgICAgY2FzZSAnc2luZ2xlX3BhcmFtX2Z1bmN0aW9uX2NhbGwnOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEub2sobmV3IHNpbmdsZV9wYXJhbV9mdW5jdGlvbl8xLlNpbmdsZVBhcmFtRnVuY3Rpb25DYWxsKGFzdCwgdGFibGUpKTtcbiAgICAgICAgICAgIGNhc2UgJ2NvbmRpdGlvbmFsX2Z1bmN0aW9uX2NhbGwnOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXZlcnRocm93XzEub2sobmV3IGNvbmRpdGlvbmFsX2Z1bmN0aW9uXzEuQ29uZGl0aW9uYWxGdW5jdGlvbkNhbGwoYXN0LCB0YWJsZSkpO1xuICAgICAgICAgICAgY2FzZSAnYWxnZWJyYWljX29wZXJhdGlvbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5vayhuZXcgYWxnZWJyYWljX29wZXJhdGlvbl8xLkFsZ2VicmFpY09wZXJhdGlvbihhc3QsIHRhYmxlKSk7XG4gICAgICAgICAgICBjYXNlICdyZWFsJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyBjb25zdGFudF8xLkNvbnN0YW50KGFzdCwgdGFibGUpKTtcbiAgICAgICAgICAgIGNhc2UgJ2Zsb2F0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKG5ldyBjb25zdGFudF8xLkNvbnN0YW50KGFzdCwgdGFibGUpKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1VucmVjb2duaXplZCB2YWx1ZVByb3ZpZGVyIHR5cGUgJyArIGFzdC50eXBlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIoZXJyb3IpO1xuICAgIH1cbn07XG5jb25zdCBwYXJzZUFuZEFwcGx5ID0gKGZvcm11bGFMaW5lcywgdGFibGUpID0+IHtcbiAgICAvLyBQYXJzZSBlYWNoIGZvcm11bGEgbGluZSwgZmxhdHRlbmluZyB0aGUgcmVzdWx0aW5nIGxpc3RzIG9mIGZvcm11bGFzIGludG8gYVxuICAgIC8vIHNpbmdsZSBsaXN0LCBidXQgcmV0dXJuaW5nIGFuIGVycm9yIGlmIGFueSBmb3JtdWxhIGZhaWxzIHRvIHBhcnNlLlxuICAgIGNvbnN0IGZvcm11bGFzID0gZm9ybXVsYUxpbmVzLnJlZHVjZSgocHJldiwgZm9ybXVsYUxpbmUpID0+IHByZXYuYW5kVGhlbigoY3VycmVudEZvcm11bGFzKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0Zvcm11bGFzID0gZXhwb3J0cy5wYXJzZUZvcm11bGEoZm9ybXVsYUxpbmUsIHRhYmxlKTtcbiAgICAgICAgaWYgKG5ld0Zvcm11bGFzLmlzRXJyKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXdGb3JtdWxhcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLm9rKGxvZGFzaF8xLmNvbmNhdChuZXdGb3JtdWxhcy52YWx1ZSwgY3VycmVudEZvcm11bGFzKSk7XG4gICAgfSksIG5ldmVydGhyb3dfMS5vayhbXSkpO1xuICAgIC8vIElmIHRoZXJlIGlzIG5vIGVycm9yLFxuICAgIHJldHVybiBmb3JtdWxhcy5hbmRUaGVuKChpbm5lckZvcm11bGFzKSA9PiBcbiAgICAvLyBmb3IgZWFjaCBmb3JtdWxhXG4gICAgaW5uZXJGb3JtdWxhcy5yZWR1Y2VSaWdodCgocHJldlZhbHVlLCBmb3JtdWxhKSA9PiBcbiAgICAvLyBJZiB0aGUgcHJldmlvdXMgZm9ybXVsYSBkaWRuJ3QgZ2l2ZSBhbiBlcnJvclxuICAgIHByZXZWYWx1ZS5hbmRUaGVuKChwcmV2VGFibGUpID0+IFxuICAgIC8vIGF0dGVtcHQgdG8gYXBwbHkgdGhpcyBmb3JtdWxhIHRvIHRoZSB0YWJsZSBhbmQgcmV0dXJuIHRoZSByZXN1bHRcbiAgICBmb3JtdWxhLm1lcmdlKHByZXZUYWJsZSkpLCBcbiAgICAvLyBTdGFydCB3aXRoIHRoZSBjdXJyZW50IHRhYmxlIHN0YXRlXG4gICAgbmV2ZXJ0aHJvd18xLm9rKHRhYmxlKSkpO1xufTtcbmV4cG9ydHMucGFyc2VBbmRBcHBseSA9IHBhcnNlQW5kQXBwbHk7XG4vKipcbiAqIFBhcnNlIHRoZSBwcm92aWRlZCBsaW5lLCByZXR1cm5pbmcgYW55IGZvdW5kIGZvcm11bGFzLiBBIHNpbmdsZSBsaW5lIG1heVxuICogY29udGFpbiB6ZXJvIG9yIG1vcmUgZm9ybXVsYXMuXG4gKlxuICogQHBhcmFtIGxpbmUgQSBsaW5lIG9mIHRoZSBmb3JtIGA8IS0tIFRCRk06IHtGT1JNVUxBfTo6e0ZPUk1VTEF9IC0tPmBcbiAqL1xuY29uc3QgcGFyc2VGb3JtdWxhID0gKGxpbmUsIHRhYmxlKSA9PiB7XG4gICAgY29uc3QgcGFyc2VyID0gbmV3IGVibmZfMS5HcmFtbWFycy5XM0MuUGFyc2VyKHBhcnNlckdyYW1tYXIpO1xuICAgIGNvbnN0IGFzdCA9IHBhcnNlci5nZXRBU1QobGluZSk7XG4gICAgLy8gVE9ETzogRGV0ZXJtaW5lIGhvdyB0byByZXR1cm4gZXJyb3JzIHdoZW4gYSBmb3JtdWxhLWxpa2Ugc3RyaW5nXG4gICAgLy8gICAgICAgaXMgbm90IGFjdHVhbGx5IGEgdmFsaWQgZm9ybXVsYS5cbiAgICBpZiAoIWFzdCkge1xuICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycihuZXcgRXJyb3IoYEZvcm11bGEgJyR7bGluZX0nIGNvdWxkIG5vdCBiZSBwYXJzZWRgKSk7XG4gICAgfVxuICAgIGNvbnN0IHR5cGVFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrVHlwZShhc3QsICd0YmxmbV9saW5lJyk7XG4gICAgaWYgKHR5cGVFcnJvcikge1xuICAgICAgICByZXR1cm4gbmV2ZXJ0aHJvd18xLmVycih0eXBlRXJyb3IpO1xuICAgIH1cbiAgICBjb25zdCBsZW5ndGhFcnJvciA9IGFzdF91dGlsc18xLmNoZWNrQ2hpbGRMZW5ndGgoYXN0LCAxKTtcbiAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIobGVuZ3RoRXJyb3IpO1xuICAgIH1cbiAgICBsZXQgdW5wYXJzZWRGb3JtdWxhcyA9IGFzdC5jaGlsZHJlblswXS5jaGlsZHJlbjtcbiAgICBjb25zdCBmb3JtdWxhcyA9IFtdO1xuICAgIHRyeSB7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIGZvcm11bGFzLnB1c2gobmV3IEZvcm11bGEodW5wYXJzZWRGb3JtdWxhc1swXSwgdGFibGUpKTtcbiAgICAgICAgICAgIGlmICh1bnBhcnNlZEZvcm11bGFzLmxlbmd0aCA+IDEgJiZcbiAgICAgICAgICAgICAgICB1bnBhcnNlZEZvcm11bGFzWzFdLnR5cGUgPT09ICdmb3JtdWxhX2xpc3QnKSB7XG4gICAgICAgICAgICAgICAgdW5wYXJzZWRGb3JtdWxhcyA9IHVucGFyc2VkRm9ybXVsYXNbMV0uY2hpbGRyZW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB1bnBhcnNlZEZvcm11bGFzID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gd2hpbGUgKHVucGFyc2VkRm9ybXVsYXMubGVuZ3RoID4gMCk7XG4gICAgICAgIHJldHVybiBuZXZlcnRocm93XzEub2soZm9ybXVsYXMpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIG5ldmVydGhyb3dfMS5lcnIoZXJyb3IpO1xuICAgIH1cbn07XG5leHBvcnRzLnBhcnNlRm9ybXVsYSA9IHBhcnNlRm9ybXVsYTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5UYWJsZSA9IHZvaWQgMDtcbmNvbnN0IGNhbGNfMSA9IHJlcXVpcmUoXCIuL2NhbGMvY2FsY1wiKTtcbmNvbnN0IGZvY3VzXzEgPSByZXF1aXJlKFwiLi9mb2N1c1wiKTtcbmNvbnN0IHBvaW50XzEgPSByZXF1aXJlKFwiLi9wb2ludFwiKTtcbmNvbnN0IHJhbmdlXzEgPSByZXF1aXJlKFwiLi9yYW5nZVwiKTtcbi8qKlxuICogQSBgVGFibGVgIG9iamVjdCByZXByZXNlbnRzIGEgdGFibGUuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuY2xhc3MgVGFibGUge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgYFRhYmxlYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm93cyAtIEFuIGFycmF5IG9mIHJvd3MgdGhhdCB0aGUgdGFibGUgY29udGFpbnMuXG4gICAgICogQHBhcmFtIGZvcm11bGFzIC0gQW4gYXJyYXkgb2YgZm9ybXVsYXMgYXR0YWNoZWQgdG8gdGhlIHRhYmxlLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHJvd3MpIHtcbiAgICAgICAgdGhpcy5fcm93cyA9IHJvd3Muc2xpY2UoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbnVtYmVyIG9mIHJvd3MgaW4gdGhlIHRhYmxlLlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIG51bWJlciBvZiByb3dzLlxuICAgICAqL1xuICAgIGdldEhlaWdodCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvd3MubGVuZ3RoO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBtYXhpbXVtIHdpZHRoIG9mIHRoZSByb3dzIGluIHRoZSB0YWJsZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBtYXhpbXVtIHdpZHRoIG9mIHRoZSByb3dzLlxuICAgICAqL1xuICAgIGdldFdpZHRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm93c1xuICAgICAgICAgICAgLm1hcCgocm93KSA9PiByb3cuZ2V0V2lkdGgoKSlcbiAgICAgICAgICAgIC5yZWR1Y2UoKHgsIHkpID0+IE1hdGgubWF4KHgsIHkpLCAwKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgd2lkdGggb2YgdGhlIGhlYWRlciByb3cuXG4gICAgICogQXNzdW1lcyB0aGF0IGl0IGlzIGNhbGxlZCBvbiBhIHZhbGlkIHRhYmxlIHdpdGggYSBoZWFkZXIgcm93LlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIHdpZHRoIG9mIHRoZSBoZWFkZXIgcm93XG4gICAgICovXG4gICAgZ2V0SGVhZGVyV2lkdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3dzWzBdLmdldFdpZHRoKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHJvd3MgdGhhdCB0aGUgdGFibGUgY29udGFpbnMuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiB0aGUgcm93cy5cbiAgICAgKi9cbiAgICBnZXRSb3dzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm93cy5zbGljZSgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBkZWxpbWl0ZXIgcm93IG9mIHRoZSB0YWJsZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBkZWxpbWl0ZXIgcm93OyBgdW5kZWZpbmVkYCBpZiB0aGVyZSBpcyBub3QgZGVsaW1pdGVyIHJvdy5cbiAgICAgKi9cbiAgICBnZXREZWxpbWl0ZXJSb3coKSB7XG4gICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuX3Jvd3NbMV07XG4gICAgICAgIGlmIChyb3cgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocm93LmlzRGVsaW1pdGVyKCkpIHtcbiAgICAgICAgICAgIHJldHVybiByb3c7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0cyBhIGNlbGwgYXQgdGhlIHNwZWNpZmllZCBpbmRleC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByb3dJbmRleCAtIFJvdyBpbmRleCBvZiB0aGUgY2VsbC5cbiAgICAgKiBAcGFyYW0gY29sdW1uSW5kZXggLSBDb2x1bW4gaW5kZXggb2YgdGhlIGNlbGwuXG4gICAgICogQHJldHVybnMgVGhlIGNlbGwgYXQgdGhlIHNwZWNpZmllZCBpbmRleDsgYHVuZGVmaW5lZGAgaWYgbm90IGZvdW5kLlxuICAgICAqL1xuICAgIGdldENlbGxBdChyb3dJbmRleCwgY29sdW1uSW5kZXgpIHtcbiAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5fcm93c1tyb3dJbmRleF07XG4gICAgICAgIGlmIChyb3cgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm93LmdldENlbGxBdChjb2x1bW5JbmRleCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGNlbGwgYXQgdGhlIGZvY3VzLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZvY3VzIC0gRm9jdXMgb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIFRoZSBjZWxsIGF0IHRoZSBmb2N1czsgYHVuZGVmaW5lZGAgaWYgbm90IGZvdW5kLlxuICAgICAqL1xuICAgIGdldEZvY3VzZWRDZWxsKGZvY3VzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENlbGxBdChmb2N1cy5yb3csIGZvY3VzLmNvbHVtbik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSB0YWJsZSB0byBhbiBhcnJheSBvZiB0ZXh0IHJlcHJlc2VudGF0aW9ucyBvZiB0aGUgcm93cy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHRleHQgcmVwcmVzZW50YXRpb25zIG9mIHRoZSByb3dzLlxuICAgICAqL1xuICAgIHRvTGluZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3dzLm1hcCgocm93KSA9PiByb3cudG9UZXh0KCkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXRzIGEgY2VsbCBpbiB0aGUgdGFibGUgdG8gYSBuZXcgdmFsdWUsIHJldHVybmluZyBhIGNvcHkgb2YgdGhlIHRhYmxlXG4gICAgICogd2l0aCB0aGUgbW9kaWZpZWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBJZiBhbiBpbnZhbGlkIGluZGV4IGlzIHByb3ZpZGVkLCB0aGUgdGFibGUgd2lsbCBiZSB1bmNoYW5nZWQuXG4gICAgICovXG4gICAgc2V0Q2VsbEF0KHJvd0luZGV4LCBjb2x1bW5JbmRleCwgdmFsdWUpIHtcbiAgICAgICAgY29uc3Qgcm93cyA9IHRoaXMuZ2V0Um93cygpOyAvLyBhIGNvcHlcbiAgICAgICAgcm93c1tyb3dJbmRleF0gPSByb3dzW3Jvd0luZGV4XS5zZXRDZWxsQXQoY29sdW1uSW5kZXgsIHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG5ldyBUYWJsZShyb3dzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYSBmb2N1cyBmcm9tIGEgcG9pbnQgaW4gdGhlIHRleHQgZWRpdG9yLlxuICAgICAqXG4gICAgICogQHBhcmFtIHBvcyAtIEEgcG9pbnQgaW4gdGhlIHRleHQgZWRpdG9yLlxuICAgICAqIEBwYXJhbSByb3dPZmZzZXQgLSBUaGUgcm93IGluZGV4IHdoZXJlIHRoZSB0YWJsZSBzdGFydHMgaW4gdGhlIHRleHQgZWRpdG9yLlxuICAgICAqIEByZXR1cm5zIEEgZm9jdXMgb2JqZWN0IHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIHNwZWNpZmllZCBwb2ludDtcbiAgICAgKiBgdW5kZWZpbmVkYCBpZiB0aGUgcm93IGluZGV4IGlzIG91dCBvZiBib3VuZHMuXG4gICAgICovXG4gICAgZm9jdXNPZlBvc2l0aW9uKHBvcywgcm93T2Zmc2V0KSB7XG4gICAgICAgIGNvbnN0IHJvd0luZGV4ID0gcG9zLnJvdyAtIHJvd09mZnNldDtcbiAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5fcm93c1tyb3dJbmRleF07XG4gICAgICAgIGlmIChyb3cgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocG9zLmNvbHVtbiA8IHJvdy5tYXJnaW5MZWZ0Lmxlbmd0aCArIDEpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgZm9jdXNfMS5Gb2N1cyhyb3dJbmRleCwgLTEsIHBvcy5jb2x1bW4pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNlbGxXaWR0aHMgPSByb3cuZ2V0Q2VsbHMoKS5tYXAoKGNlbGwpID0+IGNlbGwucmF3Q29udGVudC5sZW5ndGgpO1xuICAgICAgICBsZXQgY29sdW1uUG9zID0gcm93Lm1hcmdpbkxlZnQubGVuZ3RoICsgMTsgLy8gbGVmdCBtYXJnaW4gKyBhIHBpcGVcbiAgICAgICAgbGV0IGNvbHVtbkluZGV4ID0gMDtcbiAgICAgICAgZm9yICg7IGNvbHVtbkluZGV4IDwgY2VsbFdpZHRocy5sZW5ndGg7IGNvbHVtbkluZGV4KyspIHtcbiAgICAgICAgICAgIGlmIChjb2x1bW5Qb3MgKyBjZWxsV2lkdGhzW2NvbHVtbkluZGV4XSArIDEgPiBwb3MuY29sdW1uKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb2x1bW5Qb3MgKz0gY2VsbFdpZHRoc1tjb2x1bW5JbmRleF0gKyAxO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IHBvcy5jb2x1bW4gLSBjb2x1bW5Qb3M7XG4gICAgICAgIHJldHVybiBuZXcgZm9jdXNfMS5Gb2N1cyhyb3dJbmRleCwgY29sdW1uSW5kZXgsIG9mZnNldCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGEgcG9zaXRpb24gaW4gdGhlIHRleHQgZWRpdG9yIGZyb20gYSBmb2N1cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmb2N1cyAtIEEgZm9jdXMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSByb3dPZmZzZXQgLSBUaGUgcm93IGluZGV4IHdoZXJlIHRoZSB0YWJsZSBzdGFydHMgaW4gdGhlIHRleHQgZWRpdG9yLlxuICAgICAqIEByZXR1cm5zIEEgcG9zaXRpb24gaW4gdGhlIHRleHQgZWRpdG9yIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIGZvY3VzO1xuICAgICAqIGB1bmRlZmluZWRgIGlmIHRoZSBmb2N1c2VkIHJvdyAgaXMgb3V0IG9mIHRoZSB0YWJsZS5cbiAgICAgKi9cbiAgICBwb3NpdGlvbk9mRm9jdXMoZm9jdXMsIHJvd09mZnNldCkge1xuICAgICAgICBjb25zdCByb3cgPSB0aGlzLl9yb3dzW2ZvY3VzLnJvd107XG4gICAgICAgIGlmIChyb3cgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByb3dQb3MgPSBmb2N1cy5yb3cgKyByb3dPZmZzZXQ7XG4gICAgICAgIGlmIChmb2N1cy5jb2x1bW4gPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IHBvaW50XzEuUG9pbnQocm93UG9zLCBmb2N1cy5vZmZzZXQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNlbGxXaWR0aHMgPSByb3cuZ2V0Q2VsbHMoKS5tYXAoKGNlbGwpID0+IGNlbGwucmF3Q29udGVudC5sZW5ndGgpO1xuICAgICAgICBjb25zdCBtYXhJbmRleCA9IE1hdGgubWluKGZvY3VzLmNvbHVtbiwgY2VsbFdpZHRocy5sZW5ndGgpO1xuICAgICAgICBsZXQgY29sdW1uUG9zID0gcm93Lm1hcmdpbkxlZnQubGVuZ3RoICsgMTtcbiAgICAgICAgZm9yIChsZXQgY29sdW1uSW5kZXggPSAwOyBjb2x1bW5JbmRleCA8IG1heEluZGV4OyBjb2x1bW5JbmRleCsrKSB7XG4gICAgICAgICAgICBjb2x1bW5Qb3MgKz0gY2VsbFdpZHRoc1tjb2x1bW5JbmRleF0gKyAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgcG9pbnRfMS5Qb2ludChyb3dQb3MsIGNvbHVtblBvcyArIGZvY3VzLm9mZnNldCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGEgc2VsZWN0aW9uIHJhbmdlIGZyb20gYSBmb2N1cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmb2N1cyAtIEEgZm9jdXMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSByb3dPZmZzZXQgLSBUaGUgcm93IGluZGV4IHdoZXJlIHRoZSB0YWJsZSBzdGFydHMgaW4gdGhlIHRleHQgZWRpdG9yLlxuICAgICAqIEByZXR1cm5zIEEgcmFuZ2UgdG8gYmUgc2VsZWN0ZWQgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgZm9jdXM7XG4gICAgICogYHVuZGVmaW5lZGAgaWYgdGhlIGZvY3VzIGRvZXMgbm90IHNwZWNpZnkgYW55IGNlbGwgb3IgdGhlIHNwZWNpZmllZCBjZWxsIGlzIGVtcHR5LlxuICAgICAqL1xuICAgIHNlbGVjdGlvblJhbmdlT2ZGb2N1cyhmb2N1cywgcm93T2Zmc2V0KSB7XG4gICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuX3Jvd3NbZm9jdXMucm93XTtcbiAgICAgICAgaWYgKHJvdyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNlbGwgPSByb3cuZ2V0Q2VsbEF0KGZvY3VzLmNvbHVtbik7XG4gICAgICAgIGlmIChjZWxsID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNlbGwuY29udGVudCA9PT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgcm93UG9zID0gZm9jdXMucm93ICsgcm93T2Zmc2V0O1xuICAgICAgICBjb25zdCBjZWxsV2lkdGhzID0gcm93LmdldENlbGxzKCkubWFwKChjZWxsKSA9PiBjZWxsLnJhd0NvbnRlbnQubGVuZ3RoKTtcbiAgICAgICAgbGV0IGNvbHVtblBvcyA9IHJvdy5tYXJnaW5MZWZ0Lmxlbmd0aCArIDE7XG4gICAgICAgIGZvciAobGV0IGNvbHVtbkluZGV4ID0gMDsgY29sdW1uSW5kZXggPCBmb2N1cy5jb2x1bW47IGNvbHVtbkluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbHVtblBvcyArPSBjZWxsV2lkdGhzW2NvbHVtbkluZGV4XSArIDE7XG4gICAgICAgIH1cbiAgICAgICAgY29sdW1uUG9zICs9IGNlbGwucGFkZGluZ0xlZnQ7XG4gICAgICAgIHJldHVybiBuZXcgcmFuZ2VfMS5SYW5nZShuZXcgcG9pbnRfMS5Qb2ludChyb3dQb3MsIGNvbHVtblBvcyksIG5ldyBwb2ludF8xLlBvaW50KHJvd1BvcywgY29sdW1uUG9zICsgY2VsbC5jb250ZW50Lmxlbmd0aCkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFdmFsdWF0ZSB0aGUgZm9ybXVsYSwgYXBwbHlpbmcgdGhlIHJlc3VsdHMgdG8gdGhpcyB0YWJsZSBhbmQgcmV0dXJuaW5nIHRoZVxuICAgICAqIGNoYW5nZXMgYXMgYSBuZXcgdGFibGUuXG4gICAgICovXG4gICAgYXBwbHlGb3JtdWxhcyhmb3JtdWxhTGluZXMpIHtcbiAgICAgICAgcmV0dXJuIGNhbGNfMS5wYXJzZUFuZEFwcGx5KGZvcm11bGFMaW5lcywgdGhpcyk7XG4gICAgfVxufVxuZXhwb3J0cy5UYWJsZSA9IFRhYmxlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnJlYWRUYWJsZSA9IGV4cG9ydHMuX21hcmdpblJlZ2V4ID0gZXhwb3J0cy5tYXJnaW5SZWdleFNyYyA9IGV4cG9ydHMuX3JlYWRSb3cgPSBleHBvcnRzLl9zcGxpdENlbGxzID0gdm9pZCAwO1xuY29uc3QgdGFibGVfMSA9IHJlcXVpcmUoXCIuL3RhYmxlXCIpO1xuY29uc3QgdGFibGVfY2VsbF8xID0gcmVxdWlyZShcIi4vdGFibGUtY2VsbFwiKTtcbmNvbnN0IHRhYmxlX3Jvd18xID0gcmVxdWlyZShcIi4vdGFibGUtcm93XCIpO1xuLyoqXG4gKiBTcGxpdHMgYSB0ZXh0IGludG8gY2VsbHMuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuY29uc3QgX3NwbGl0Q2VsbHMgPSAodGV4dCkgPT4ge1xuICAgIGNvbnN0IGNlbGxzID0gW107XG4gICAgbGV0IGJ1ZiA9ICcnO1xuICAgIGxldCByZXN0ID0gdGV4dDtcbiAgICB3aGlsZSAocmVzdCAhPT0gJycpIHtcbiAgICAgICAgc3dpdGNoIChyZXN0WzBdKSB7XG4gICAgICAgICAgICBjYXNlICdgJzpcbiAgICAgICAgICAgICAgICAvLyByZWFkIGNvZGUgc3BhblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRNYXRjaCA9IHJlc3QubWF0Y2goL15gKi8pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRNYXRjaCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSBzdGF0ZW1lbnQgZW5zdXJlcyBmaXJzdCBjaGFyIGlzIGEgYCBhbmQgd2UgY2Fubm90IGdldCBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBqdXN0IHNhdGlzZmllcyB0aGUgY29tcGlsZXIuXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGFydCA9IHN0YXJ0TWF0Y2hbMF07XG4gICAgICAgICAgICAgICAgICAgIGxldCBidWYxID0gc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXN0MSA9IHJlc3Quc3Vic3RyKHN0YXJ0Lmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjbG9zZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHJlc3QxICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3QxWzBdID09PSAnYCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbmRNYXRjaCA9IHJlc3QxLm1hdGNoKC9eYCovKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW5kTWF0Y2ggPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSBzdGF0ZW1lbnQgZW5zdXJlcyBmaXJzdCBjaGFyIGlzIGEgYCBhbmQgd2UgY2Fubm90IGdldCBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGp1c3Qgc2F0aXNmaWVzIHRoZSBjb21waWxlci5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVuZCA9IGVuZE1hdGNoWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZjEgKz0gZW5kO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3QxID0gcmVzdDEuc3Vic3RyKGVuZC5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbmQubGVuZ3RoID09PSBzdGFydC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmMSArPSByZXN0MVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0MSA9IHJlc3QxLnN1YnN0cigxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWYgKz0gYnVmMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3QgPSByZXN0MTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiArPSAnYCc7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN0ID0gcmVzdC5zdWJzdHIoMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdcXFxcJzpcbiAgICAgICAgICAgICAgICAvLyBlc2NhcGUgbmV4dCBjaGFyYWN0ZXJcbiAgICAgICAgICAgICAgICBpZiAocmVzdC5sZW5ndGggPj0gMikge1xuICAgICAgICAgICAgICAgICAgICBidWYgKz0gcmVzdC5zdWJzdHIoMCwgMik7XG4gICAgICAgICAgICAgICAgICAgIHJlc3QgPSByZXN0LnN1YnN0cigyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZiArPSAnXFxcXCc7XG4gICAgICAgICAgICAgICAgICAgIHJlc3QgPSByZXN0LnN1YnN0cigxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdbJzpcbiAgICAgICAgICAgICAgICAvLyBJZiB3ZSBlbmNvdW50ZXIgYSByZW5hbWVkIFtbbGlua3xMaW5rXV0sIGF1dG9tYXRpY2FsbHkgZXNjYXBlIHRoZSBwaXBlXG4gICAgICAgICAgICAgICAgYnVmICs9ICdbJztcbiAgICAgICAgICAgICAgICByZXN0ID0gcmVzdC5zdWJzdHIoMSk7XG4gICAgICAgICAgICAgICAgaWYgKC9cXFtbXlxcXFx8XFxdXStcXHxbXnxcXF1dK11dLy50ZXN0KHJlc3QpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlkeCA9IHJlc3QuaW5kZXhPZignfCcpO1xuICAgICAgICAgICAgICAgICAgICBidWYgKz0gcmVzdC5zbGljZSgwLCBpZHgpO1xuICAgICAgICAgICAgICAgICAgICBidWYgKz0gJ1xcXFx8JztcbiAgICAgICAgICAgICAgICAgICAgcmVzdCA9IHJlc3Quc3Vic3RyKGlkeCArIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3wnOlxuICAgICAgICAgICAgICAgIC8vIGZsdXNoIGJ1ZmZlclxuICAgICAgICAgICAgICAgIGNlbGxzLnB1c2goYnVmKTtcbiAgICAgICAgICAgICAgICBidWYgPSAnJztcbiAgICAgICAgICAgICAgICByZXN0ID0gcmVzdC5zdWJzdHIoMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJ1ZiArPSByZXN0WzBdO1xuICAgICAgICAgICAgICAgIHJlc3QgPSByZXN0LnN1YnN0cigxKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjZWxscy5wdXNoKGJ1Zik7XG4gICAgcmV0dXJuIGNlbGxzO1xufTtcbmV4cG9ydHMuX3NwbGl0Q2VsbHMgPSBfc3BsaXRDZWxscztcbi8qKlxuICogUmVhZHMgYSB0YWJsZSByb3cuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB0ZXh0IC0gQSB0ZXh0LlxuICogQHBhcmFtIFtsZWZ0TWFyZ2luUmVnZXg9L15cXHMqJC9dIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gb2JqZWN0IHRoYXQgbWF0Y2hlcyBsZWZ0IG1hcmdpbi5cbiAqL1xuY29uc3QgX3JlYWRSb3cgPSAodGV4dCwgbGVmdE1hcmdpblJlZ2V4ID0gL15cXHMqJC8pID0+IHtcbiAgICBsZXQgY2VsbHMgPSBleHBvcnRzLl9zcGxpdENlbGxzKHRleHQpO1xuICAgIGxldCBtYXJnaW5MZWZ0O1xuICAgIGlmIChjZWxscy5sZW5ndGggPiAwICYmIGxlZnRNYXJnaW5SZWdleC50ZXN0KGNlbGxzWzBdKSkge1xuICAgICAgICBtYXJnaW5MZWZ0ID0gY2VsbHNbMF07XG4gICAgICAgIGNlbGxzID0gY2VsbHMuc2xpY2UoMSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBtYXJnaW5MZWZ0ID0gJyc7XG4gICAgfVxuICAgIGxldCBtYXJnaW5SaWdodDtcbiAgICBpZiAoY2VsbHMubGVuZ3RoID4gMSAmJiAvXlxccyokLy50ZXN0KGNlbGxzW2NlbGxzLmxlbmd0aCAtIDFdKSkge1xuICAgICAgICBtYXJnaW5SaWdodCA9IGNlbGxzW2NlbGxzLmxlbmd0aCAtIDFdO1xuICAgICAgICBjZWxscyA9IGNlbGxzLnNsaWNlKDAsIGNlbGxzLmxlbmd0aCAtIDEpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgbWFyZ2luUmlnaHQgPSAnJztcbiAgICB9XG4gICAgcmV0dXJuIG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdyhjZWxscy5tYXAoKGNlbGwpID0+IG5ldyB0YWJsZV9jZWxsXzEuVGFibGVDZWxsKGNlbGwpKSwgbWFyZ2luTGVmdCwgbWFyZ2luUmlnaHQpO1xufTtcbmV4cG9ydHMuX3JlYWRSb3cgPSBfcmVhZFJvdztcbi8qKlxuICogQ3JlYXRlcyBhIHJlZ2V4IHNvdXJjZSBzdHJpbmcgb2YgbWFyZ2luIGNoYXJhY3RlciBjbGFzcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIGNoYXJzIC0gQSBzZXQgb2YgYWRkaXRpb25hbCBtYXJnaW4gY2hhcmFjdGVycy5cbiAqIEEgcGlwZSBgfGAsIGEgYmFja3NsYXNoIGBcXGAsIGFuZCBhIGJhY2txdW90ZSB3aWxsIGJlIGlnbm9yZWQuXG4gKiBAcmV0dXJuIEEgcmVnZXggc291cmNlIHN0cmluZy5cbiAqL1xuY29uc3QgbWFyZ2luUmVnZXhTcmMgPSAoY2hhcnMpID0+IHtcbiAgICBsZXQgY3MgPSAnJztcbiAgICAvLyBmb3IgKGNvbnN0IGMgY2hhcnMudmFsdWVzKCkpIHtcbiAgICBjaGFycy5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgIGlmIChjICE9PSAnfCcgJiYgYyAhPT0gJ1xcXFwnICYmIGMgIT09ICdgJykge1xuICAgICAgICAgICAgY3MgKz0gYFxcXFx1eyR7Yy5jb2RlUG9pbnRBdCgwKS50b1N0cmluZygxNil9fWA7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYFtcXFxccyR7Y3N9XSpgO1xufTtcbmV4cG9ydHMubWFyZ2luUmVnZXhTcmMgPSBtYXJnaW5SZWdleFNyYztcbi8qKlxuICogQ3JlYXRlcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBvYmplY3QgdGhhdCBtYXRjaGVzIG1hcmdpbiBvZiB0YWJsZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSBjaGFycyAtIEEgc2V0IG9mIGFkZGl0aW9uYWwgbWFyZ2luIGNoYXJhY3RlcnMuXG4gKiBBIHBpcGUgYHxgLCBhIGJhY2tzbGFzaCBgXFxgLCBhbmQgYSBiYWNrcXVvdGUgd2lsbCBiZSBpZ25vcmVkLlxuICogQHJldHVybiBBbiByZWd1bGFyIGV4cHJlc3Npb24gb2JqZWN0IHRoYXQgbWF0Y2hlcyBtYXJnaW4gb2YgdGFibGVzLlxuICovXG5jb25zdCBfbWFyZ2luUmVnZXggPSAoY2hhcnMpID0+IG5ldyBSZWdFeHAoYF4ke2V4cG9ydHMubWFyZ2luUmVnZXhTcmMoY2hhcnMpfSRgLCAndScpO1xuZXhwb3J0cy5fbWFyZ2luUmVnZXggPSBfbWFyZ2luUmVnZXg7XG4vKipcbiAqIFJlYWRzIGEgdGFibGUgZnJvbSBsaW5lcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIGxpbmVzIC0gQW4gYXJyYXkgb2YgdGV4dHMsIGVhY2ggdGV4dCByZXByZXNlbnRzIGEgcm93LlxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3QgY29udGFpbmluZyBvcHRpb25zIGZvciBwYXJzaW5nLlxuICogQHJldHVybnMgVGhlIHRhYmxlIHJlYWQgZnJvbSB0aGUgbGluZXMuXG4gKi9cbmNvbnN0IHJlYWRUYWJsZSA9IChsaW5lcywgb3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IGxlZnRNYXJnaW5SZWdleCA9IGV4cG9ydHMuX21hcmdpblJlZ2V4KG9wdGlvbnMubGVmdE1hcmdpbkNoYXJzKTtcbiAgICByZXR1cm4gbmV3IHRhYmxlXzEuVGFibGUobGluZXMubWFwKChsaW5lKSA9PiBleHBvcnRzLl9yZWFkUm93KGxpbmUsIGxlZnRNYXJnaW5SZWdleCkpKTtcbn07XG5leHBvcnRzLnJlYWRUYWJsZSA9IHJlYWRUYWJsZTtcbiIsIi8qXHJcbiAqIEdlbmVyYXRlZCBieSBzY3JpcHQuIERPIE5PVCBFRElUIVxyXG4gKlxyXG4gKiBUaGUgcGFydCBiZXR3ZWVuIEJFR0lOIGFuZCBFTkQgaXMgZGVyaXZlZCBmcm9tIFVuaWNvZGUgRGF0YSBGaWxlc1xyXG4gKiBhbmQgcHJvdmlkZWQgdW5kZXIgVW5pY29kZSwgSW5jLiBMaWNlbnNlIEFncmVlbWVudC5cclxuICovXHJcbi8qIEJFR0lOICovXHJcbnZhciBkZWZzID0gW1xyXG4gICAgWzAsIDMxLCBcIk5cIl0sXHJcbiAgICBbMzIsIDEyNiwgXCJOYVwiXSxcclxuICAgIFsxMjcsIDE2MCwgXCJOXCJdLFxyXG4gICAgWzE2MSwgMTYxLCBcIkFcIl0sXHJcbiAgICBbMTYyLCAxNjMsIFwiTmFcIl0sXHJcbiAgICBbMTY0LCAxNjQsIFwiQVwiXSxcclxuICAgIFsxNjUsIDE2NiwgXCJOYVwiXSxcclxuICAgIFsxNjcsIDE2OCwgXCJBXCJdLFxyXG4gICAgWzE2OSwgMTY5LCBcIk5cIl0sXHJcbiAgICBbMTcwLCAxNzAsIFwiQVwiXSxcclxuICAgIFsxNzEsIDE3MSwgXCJOXCJdLFxyXG4gICAgWzE3MiwgMTcyLCBcIk5hXCJdLFxyXG4gICAgWzE3MywgMTc0LCBcIkFcIl0sXHJcbiAgICBbMTc1LCAxNzUsIFwiTmFcIl0sXHJcbiAgICBbMTc2LCAxODAsIFwiQVwiXSxcclxuICAgIFsxODEsIDE4MSwgXCJOXCJdLFxyXG4gICAgWzE4MiwgMTg2LCBcIkFcIl0sXHJcbiAgICBbMTg3LCAxODcsIFwiTlwiXSxcclxuICAgIFsxODgsIDE5MSwgXCJBXCJdLFxyXG4gICAgWzE5MiwgMTk3LCBcIk5cIl0sXHJcbiAgICBbMTk4LCAxOTgsIFwiQVwiXSxcclxuICAgIFsxOTksIDIwNywgXCJOXCJdLFxyXG4gICAgWzIwOCwgMjA4LCBcIkFcIl0sXHJcbiAgICBbMjA5LCAyMTQsIFwiTlwiXSxcclxuICAgIFsyMTUsIDIxNiwgXCJBXCJdLFxyXG4gICAgWzIxNywgMjIxLCBcIk5cIl0sXHJcbiAgICBbMjIyLCAyMjUsIFwiQVwiXSxcclxuICAgIFsyMjYsIDIyOSwgXCJOXCJdLFxyXG4gICAgWzIzMCwgMjMwLCBcIkFcIl0sXHJcbiAgICBbMjMxLCAyMzEsIFwiTlwiXSxcclxuICAgIFsyMzIsIDIzNCwgXCJBXCJdLFxyXG4gICAgWzIzNSwgMjM1LCBcIk5cIl0sXHJcbiAgICBbMjM2LCAyMzcsIFwiQVwiXSxcclxuICAgIFsyMzgsIDIzOSwgXCJOXCJdLFxyXG4gICAgWzI0MCwgMjQwLCBcIkFcIl0sXHJcbiAgICBbMjQxLCAyNDEsIFwiTlwiXSxcclxuICAgIFsyNDIsIDI0MywgXCJBXCJdLFxyXG4gICAgWzI0NCwgMjQ2LCBcIk5cIl0sXHJcbiAgICBbMjQ3LCAyNTAsIFwiQVwiXSxcclxuICAgIFsyNTEsIDI1MSwgXCJOXCJdLFxyXG4gICAgWzI1MiwgMjUyLCBcIkFcIl0sXHJcbiAgICBbMjUzLCAyNTMsIFwiTlwiXSxcclxuICAgIFsyNTQsIDI1NCwgXCJBXCJdLFxyXG4gICAgWzI1NSwgMjU2LCBcIk5cIl0sXHJcbiAgICBbMjU3LCAyNTcsIFwiQVwiXSxcclxuICAgIFsyNTgsIDI3MiwgXCJOXCJdLFxyXG4gICAgWzI3MywgMjczLCBcIkFcIl0sXHJcbiAgICBbMjc0LCAyNzQsIFwiTlwiXSxcclxuICAgIFsyNzUsIDI3NSwgXCJBXCJdLFxyXG4gICAgWzI3NiwgMjgyLCBcIk5cIl0sXHJcbiAgICBbMjgzLCAyODMsIFwiQVwiXSxcclxuICAgIFsyODQsIDI5MywgXCJOXCJdLFxyXG4gICAgWzI5NCwgMjk1LCBcIkFcIl0sXHJcbiAgICBbMjk2LCAyOTgsIFwiTlwiXSxcclxuICAgIFsyOTksIDI5OSwgXCJBXCJdLFxyXG4gICAgWzMwMCwgMzA0LCBcIk5cIl0sXHJcbiAgICBbMzA1LCAzMDcsIFwiQVwiXSxcclxuICAgIFszMDgsIDMxMSwgXCJOXCJdLFxyXG4gICAgWzMxMiwgMzEyLCBcIkFcIl0sXHJcbiAgICBbMzEzLCAzMTgsIFwiTlwiXSxcclxuICAgIFszMTksIDMyMiwgXCJBXCJdLFxyXG4gICAgWzMyMywgMzIzLCBcIk5cIl0sXHJcbiAgICBbMzI0LCAzMjQsIFwiQVwiXSxcclxuICAgIFszMjUsIDMyNywgXCJOXCJdLFxyXG4gICAgWzMyOCwgMzMxLCBcIkFcIl0sXHJcbiAgICBbMzMyLCAzMzIsIFwiTlwiXSxcclxuICAgIFszMzMsIDMzMywgXCJBXCJdLFxyXG4gICAgWzMzNCwgMzM3LCBcIk5cIl0sXHJcbiAgICBbMzM4LCAzMzksIFwiQVwiXSxcclxuICAgIFszNDAsIDM1NywgXCJOXCJdLFxyXG4gICAgWzM1OCwgMzU5LCBcIkFcIl0sXHJcbiAgICBbMzYwLCAzNjIsIFwiTlwiXSxcclxuICAgIFszNjMsIDM2MywgXCJBXCJdLFxyXG4gICAgWzM2NCwgNDYxLCBcIk5cIl0sXHJcbiAgICBbNDYyLCA0NjIsIFwiQVwiXSxcclxuICAgIFs0NjMsIDQ2MywgXCJOXCJdLFxyXG4gICAgWzQ2NCwgNDY0LCBcIkFcIl0sXHJcbiAgICBbNDY1LCA0NjUsIFwiTlwiXSxcclxuICAgIFs0NjYsIDQ2NiwgXCJBXCJdLFxyXG4gICAgWzQ2NywgNDY3LCBcIk5cIl0sXHJcbiAgICBbNDY4LCA0NjgsIFwiQVwiXSxcclxuICAgIFs0NjksIDQ2OSwgXCJOXCJdLFxyXG4gICAgWzQ3MCwgNDcwLCBcIkFcIl0sXHJcbiAgICBbNDcxLCA0NzEsIFwiTlwiXSxcclxuICAgIFs0NzIsIDQ3MiwgXCJBXCJdLFxyXG4gICAgWzQ3MywgNDczLCBcIk5cIl0sXHJcbiAgICBbNDc0LCA0NzQsIFwiQVwiXSxcclxuICAgIFs0NzUsIDQ3NSwgXCJOXCJdLFxyXG4gICAgWzQ3NiwgNDc2LCBcIkFcIl0sXHJcbiAgICBbNDc3LCA1OTIsIFwiTlwiXSxcclxuICAgIFs1OTMsIDU5MywgXCJBXCJdLFxyXG4gICAgWzU5NCwgNjA4LCBcIk5cIl0sXHJcbiAgICBbNjA5LCA2MDksIFwiQVwiXSxcclxuICAgIFs2MTAsIDcwNywgXCJOXCJdLFxyXG4gICAgWzcwOCwgNzA4LCBcIkFcIl0sXHJcbiAgICBbNzA5LCA3MTAsIFwiTlwiXSxcclxuICAgIFs3MTEsIDcxMSwgXCJBXCJdLFxyXG4gICAgWzcxMiwgNzEyLCBcIk5cIl0sXHJcbiAgICBbNzEzLCA3MTUsIFwiQVwiXSxcclxuICAgIFs3MTYsIDcxNiwgXCJOXCJdLFxyXG4gICAgWzcxNywgNzE3LCBcIkFcIl0sXHJcbiAgICBbNzE4LCA3MTksIFwiTlwiXSxcclxuICAgIFs3MjAsIDcyMCwgXCJBXCJdLFxyXG4gICAgWzcyMSwgNzI3LCBcIk5cIl0sXHJcbiAgICBbNzI4LCA3MzEsIFwiQVwiXSxcclxuICAgIFs3MzIsIDczMiwgXCJOXCJdLFxyXG4gICAgWzczMywgNzMzLCBcIkFcIl0sXHJcbiAgICBbNzM0LCA3MzQsIFwiTlwiXSxcclxuICAgIFs3MzUsIDczNSwgXCJBXCJdLFxyXG4gICAgWzczNiwgNzY3LCBcIk5cIl0sXHJcbiAgICBbNzY4LCA4NzksIFwiQVwiXSxcclxuICAgIFs4ODAsIDkxMiwgXCJOXCJdLFxyXG4gICAgWzkxMywgOTI5LCBcIkFcIl0sXHJcbiAgICBbOTMwLCA5MzAsIFwiTlwiXSxcclxuICAgIFs5MzEsIDkzNywgXCJBXCJdLFxyXG4gICAgWzkzOCwgOTQ0LCBcIk5cIl0sXHJcbiAgICBbOTQ1LCA5NjEsIFwiQVwiXSxcclxuICAgIFs5NjIsIDk2MiwgXCJOXCJdLFxyXG4gICAgWzk2MywgOTY5LCBcIkFcIl0sXHJcbiAgICBbOTcwLCAxMDI0LCBcIk5cIl0sXHJcbiAgICBbMTAyNSwgMTAyNSwgXCJBXCJdLFxyXG4gICAgWzEwMjYsIDEwMzksIFwiTlwiXSxcclxuICAgIFsxMDQwLCAxMTAzLCBcIkFcIl0sXHJcbiAgICBbMTEwNCwgMTEwNCwgXCJOXCJdLFxyXG4gICAgWzExMDUsIDExMDUsIFwiQVwiXSxcclxuICAgIFsxMTA2LCA0MzUxLCBcIk5cIl0sXHJcbiAgICBbNDM1MiwgNDQ0NywgXCJXXCJdLFxyXG4gICAgWzQ0NDgsIDgyMDcsIFwiTlwiXSxcclxuICAgIFs4MjA4LCA4MjA4LCBcIkFcIl0sXHJcbiAgICBbODIwOSwgODIxMCwgXCJOXCJdLFxyXG4gICAgWzgyMTEsIDgyMTQsIFwiQVwiXSxcclxuICAgIFs4MjE1LCA4MjE1LCBcIk5cIl0sXHJcbiAgICBbODIxNiwgODIxNywgXCJBXCJdLFxyXG4gICAgWzgyMTgsIDgyMTksIFwiTlwiXSxcclxuICAgIFs4MjIwLCA4MjIxLCBcIkFcIl0sXHJcbiAgICBbODIyMiwgODIyMywgXCJOXCJdLFxyXG4gICAgWzgyMjQsIDgyMjYsIFwiQVwiXSxcclxuICAgIFs4MjI3LCA4MjI3LCBcIk5cIl0sXHJcbiAgICBbODIyOCwgODIzMSwgXCJBXCJdLFxyXG4gICAgWzgyMzIsIDgyMzksIFwiTlwiXSxcclxuICAgIFs4MjQwLCA4MjQwLCBcIkFcIl0sXHJcbiAgICBbODI0MSwgODI0MSwgXCJOXCJdLFxyXG4gICAgWzgyNDIsIDgyNDMsIFwiQVwiXSxcclxuICAgIFs4MjQ0LCA4MjQ0LCBcIk5cIl0sXHJcbiAgICBbODI0NSwgODI0NSwgXCJBXCJdLFxyXG4gICAgWzgyNDYsIDgyNTAsIFwiTlwiXSxcclxuICAgIFs4MjUxLCA4MjUxLCBcIkFcIl0sXHJcbiAgICBbODI1MiwgODI1MywgXCJOXCJdLFxyXG4gICAgWzgyNTQsIDgyNTQsIFwiQVwiXSxcclxuICAgIFs4MjU1LCA4MzA3LCBcIk5cIl0sXHJcbiAgICBbODMwOCwgODMwOCwgXCJBXCJdLFxyXG4gICAgWzgzMDksIDgzMTgsIFwiTlwiXSxcclxuICAgIFs4MzE5LCA4MzE5LCBcIkFcIl0sXHJcbiAgICBbODMyMCwgODMyMCwgXCJOXCJdLFxyXG4gICAgWzgzMjEsIDgzMjQsIFwiQVwiXSxcclxuICAgIFs4MzI1LCA4MzYwLCBcIk5cIl0sXHJcbiAgICBbODM2MSwgODM2MSwgXCJIXCJdLFxyXG4gICAgWzgzNjIsIDgzNjMsIFwiTlwiXSxcclxuICAgIFs4MzY0LCA4MzY0LCBcIkFcIl0sXHJcbiAgICBbODM2NSwgODQ1MCwgXCJOXCJdLFxyXG4gICAgWzg0NTEsIDg0NTEsIFwiQVwiXSxcclxuICAgIFs4NDUyLCA4NDUyLCBcIk5cIl0sXHJcbiAgICBbODQ1MywgODQ1MywgXCJBXCJdLFxyXG4gICAgWzg0NTQsIDg0NTYsIFwiTlwiXSxcclxuICAgIFs4NDU3LCA4NDU3LCBcIkFcIl0sXHJcbiAgICBbODQ1OCwgODQ2NiwgXCJOXCJdLFxyXG4gICAgWzg0NjcsIDg0NjcsIFwiQVwiXSxcclxuICAgIFs4NDY4LCA4NDY5LCBcIk5cIl0sXHJcbiAgICBbODQ3MCwgODQ3MCwgXCJBXCJdLFxyXG4gICAgWzg0NzEsIDg0ODAsIFwiTlwiXSxcclxuICAgIFs4NDgxLCA4NDgyLCBcIkFcIl0sXHJcbiAgICBbODQ4MywgODQ4NSwgXCJOXCJdLFxyXG4gICAgWzg0ODYsIDg0ODYsIFwiQVwiXSxcclxuICAgIFs4NDg3LCA4NDkwLCBcIk5cIl0sXHJcbiAgICBbODQ5MSwgODQ5MSwgXCJBXCJdLFxyXG4gICAgWzg0OTIsIDg1MzAsIFwiTlwiXSxcclxuICAgIFs4NTMxLCA4NTMyLCBcIkFcIl0sXHJcbiAgICBbODUzMywgODUzOCwgXCJOXCJdLFxyXG4gICAgWzg1MzksIDg1NDIsIFwiQVwiXSxcclxuICAgIFs4NTQzLCA4NTQzLCBcIk5cIl0sXHJcbiAgICBbODU0NCwgODU1NSwgXCJBXCJdLFxyXG4gICAgWzg1NTYsIDg1NTksIFwiTlwiXSxcclxuICAgIFs4NTYwLCA4NTY5LCBcIkFcIl0sXHJcbiAgICBbODU3MCwgODU4NCwgXCJOXCJdLFxyXG4gICAgWzg1ODUsIDg1ODUsIFwiQVwiXSxcclxuICAgIFs4NTg2LCA4NTkxLCBcIk5cIl0sXHJcbiAgICBbODU5MiwgODYwMSwgXCJBXCJdLFxyXG4gICAgWzg2MDIsIDg2MzEsIFwiTlwiXSxcclxuICAgIFs4NjMyLCA4NjMzLCBcIkFcIl0sXHJcbiAgICBbODYzNCwgODY1NywgXCJOXCJdLFxyXG4gICAgWzg2NTgsIDg2NTgsIFwiQVwiXSxcclxuICAgIFs4NjU5LCA4NjU5LCBcIk5cIl0sXHJcbiAgICBbODY2MCwgODY2MCwgXCJBXCJdLFxyXG4gICAgWzg2NjEsIDg2NzgsIFwiTlwiXSxcclxuICAgIFs4Njc5LCA4Njc5LCBcIkFcIl0sXHJcbiAgICBbODY4MCwgODcwMywgXCJOXCJdLFxyXG4gICAgWzg3MDQsIDg3MDQsIFwiQVwiXSxcclxuICAgIFs4NzA1LCA4NzA1LCBcIk5cIl0sXHJcbiAgICBbODcwNiwgODcwNywgXCJBXCJdLFxyXG4gICAgWzg3MDgsIDg3MTAsIFwiTlwiXSxcclxuICAgIFs4NzExLCA4NzEyLCBcIkFcIl0sXHJcbiAgICBbODcxMywgODcxNCwgXCJOXCJdLFxyXG4gICAgWzg3MTUsIDg3MTUsIFwiQVwiXSxcclxuICAgIFs4NzE2LCA4NzE4LCBcIk5cIl0sXHJcbiAgICBbODcxOSwgODcxOSwgXCJBXCJdLFxyXG4gICAgWzg3MjAsIDg3MjAsIFwiTlwiXSxcclxuICAgIFs4NzIxLCA4NzIxLCBcIkFcIl0sXHJcbiAgICBbODcyMiwgODcyNCwgXCJOXCJdLFxyXG4gICAgWzg3MjUsIDg3MjUsIFwiQVwiXSxcclxuICAgIFs4NzI2LCA4NzI5LCBcIk5cIl0sXHJcbiAgICBbODczMCwgODczMCwgXCJBXCJdLFxyXG4gICAgWzg3MzEsIDg3MzIsIFwiTlwiXSxcclxuICAgIFs4NzMzLCA4NzM2LCBcIkFcIl0sXHJcbiAgICBbODczNywgODczOCwgXCJOXCJdLFxyXG4gICAgWzg3MzksIDg3MzksIFwiQVwiXSxcclxuICAgIFs4NzQwLCA4NzQwLCBcIk5cIl0sXHJcbiAgICBbODc0MSwgODc0MSwgXCJBXCJdLFxyXG4gICAgWzg3NDIsIDg3NDIsIFwiTlwiXSxcclxuICAgIFs4NzQzLCA4NzQ4LCBcIkFcIl0sXHJcbiAgICBbODc0OSwgODc0OSwgXCJOXCJdLFxyXG4gICAgWzg3NTAsIDg3NTAsIFwiQVwiXSxcclxuICAgIFs4NzUxLCA4NzU1LCBcIk5cIl0sXHJcbiAgICBbODc1NiwgODc1OSwgXCJBXCJdLFxyXG4gICAgWzg3NjAsIDg3NjMsIFwiTlwiXSxcclxuICAgIFs4NzY0LCA4NzY1LCBcIkFcIl0sXHJcbiAgICBbODc2NiwgODc3NSwgXCJOXCJdLFxyXG4gICAgWzg3NzYsIDg3NzYsIFwiQVwiXSxcclxuICAgIFs4Nzc3LCA4Nzc5LCBcIk5cIl0sXHJcbiAgICBbODc4MCwgODc4MCwgXCJBXCJdLFxyXG4gICAgWzg3ODEsIDg3ODUsIFwiTlwiXSxcclxuICAgIFs4Nzg2LCA4Nzg2LCBcIkFcIl0sXHJcbiAgICBbODc4NywgODc5OSwgXCJOXCJdLFxyXG4gICAgWzg4MDAsIDg4MDEsIFwiQVwiXSxcclxuICAgIFs4ODAyLCA4ODAzLCBcIk5cIl0sXHJcbiAgICBbODgwNCwgODgwNywgXCJBXCJdLFxyXG4gICAgWzg4MDgsIDg4MDksIFwiTlwiXSxcclxuICAgIFs4ODEwLCA4ODExLCBcIkFcIl0sXHJcbiAgICBbODgxMiwgODgxMywgXCJOXCJdLFxyXG4gICAgWzg4MTQsIDg4MTUsIFwiQVwiXSxcclxuICAgIFs4ODE2LCA4ODMzLCBcIk5cIl0sXHJcbiAgICBbODgzNCwgODgzNSwgXCJBXCJdLFxyXG4gICAgWzg4MzYsIDg4MzcsIFwiTlwiXSxcclxuICAgIFs4ODM4LCA4ODM5LCBcIkFcIl0sXHJcbiAgICBbODg0MCwgODg1MiwgXCJOXCJdLFxyXG4gICAgWzg4NTMsIDg4NTMsIFwiQVwiXSxcclxuICAgIFs4ODU0LCA4ODU2LCBcIk5cIl0sXHJcbiAgICBbODg1NywgODg1NywgXCJBXCJdLFxyXG4gICAgWzg4NTgsIDg4NjgsIFwiTlwiXSxcclxuICAgIFs4ODY5LCA4ODY5LCBcIkFcIl0sXHJcbiAgICBbODg3MCwgODg5NCwgXCJOXCJdLFxyXG4gICAgWzg4OTUsIDg4OTUsIFwiQVwiXSxcclxuICAgIFs4ODk2LCA4OTc3LCBcIk5cIl0sXHJcbiAgICBbODk3OCwgODk3OCwgXCJBXCJdLFxyXG4gICAgWzg5NzksIDg5ODUsIFwiTlwiXSxcclxuICAgIFs4OTg2LCA4OTg3LCBcIldcIl0sXHJcbiAgICBbODk4OCwgOTAwMCwgXCJOXCJdLFxyXG4gICAgWzkwMDEsIDkwMDIsIFwiV1wiXSxcclxuICAgIFs5MDAzLCA5MTkyLCBcIk5cIl0sXHJcbiAgICBbOTE5MywgOTE5NiwgXCJXXCJdLFxyXG4gICAgWzkxOTcsIDkxOTksIFwiTlwiXSxcclxuICAgIFs5MjAwLCA5MjAwLCBcIldcIl0sXHJcbiAgICBbOTIwMSwgOTIwMiwgXCJOXCJdLFxyXG4gICAgWzkyMDMsIDkyMDMsIFwiV1wiXSxcclxuICAgIFs5MjA0LCA5MzExLCBcIk5cIl0sXHJcbiAgICBbOTMxMiwgOTQ0OSwgXCJBXCJdLFxyXG4gICAgWzk0NTAsIDk0NTAsIFwiTlwiXSxcclxuICAgIFs5NDUxLCA5NTQ3LCBcIkFcIl0sXHJcbiAgICBbOTU0OCwgOTU1MSwgXCJOXCJdLFxyXG4gICAgWzk1NTIsIDk1ODcsIFwiQVwiXSxcclxuICAgIFs5NTg4LCA5NTk5LCBcIk5cIl0sXHJcbiAgICBbOTYwMCwgOTYxNSwgXCJBXCJdLFxyXG4gICAgWzk2MTYsIDk2MTcsIFwiTlwiXSxcclxuICAgIFs5NjE4LCA5NjIxLCBcIkFcIl0sXHJcbiAgICBbOTYyMiwgOTYzMSwgXCJOXCJdLFxyXG4gICAgWzk2MzIsIDk2MzMsIFwiQVwiXSxcclxuICAgIFs5NjM0LCA5NjM0LCBcIk5cIl0sXHJcbiAgICBbOTYzNSwgOTY0MSwgXCJBXCJdLFxyXG4gICAgWzk2NDIsIDk2NDksIFwiTlwiXSxcclxuICAgIFs5NjUwLCA5NjUxLCBcIkFcIl0sXHJcbiAgICBbOTY1MiwgOTY1MywgXCJOXCJdLFxyXG4gICAgWzk2NTQsIDk2NTUsIFwiQVwiXSxcclxuICAgIFs5NjU2LCA5NjU5LCBcIk5cIl0sXHJcbiAgICBbOTY2MCwgOTY2MSwgXCJBXCJdLFxyXG4gICAgWzk2NjIsIDk2NjMsIFwiTlwiXSxcclxuICAgIFs5NjY0LCA5NjY1LCBcIkFcIl0sXHJcbiAgICBbOTY2NiwgOTY2OSwgXCJOXCJdLFxyXG4gICAgWzk2NzAsIDk2NzIsIFwiQVwiXSxcclxuICAgIFs5NjczLCA5Njc0LCBcIk5cIl0sXHJcbiAgICBbOTY3NSwgOTY3NSwgXCJBXCJdLFxyXG4gICAgWzk2NzYsIDk2NzcsIFwiTlwiXSxcclxuICAgIFs5Njc4LCA5NjgxLCBcIkFcIl0sXHJcbiAgICBbOTY4MiwgOTY5NywgXCJOXCJdLFxyXG4gICAgWzk2OTgsIDk3MDEsIFwiQVwiXSxcclxuICAgIFs5NzAyLCA5NzEwLCBcIk5cIl0sXHJcbiAgICBbOTcxMSwgOTcxMSwgXCJBXCJdLFxyXG4gICAgWzk3MTIsIDk3MjQsIFwiTlwiXSxcclxuICAgIFs5NzI1LCA5NzI2LCBcIldcIl0sXHJcbiAgICBbOTcyNywgOTczMiwgXCJOXCJdLFxyXG4gICAgWzk3MzMsIDk3MzQsIFwiQVwiXSxcclxuICAgIFs5NzM1LCA5NzM2LCBcIk5cIl0sXHJcbiAgICBbOTczNywgOTczNywgXCJBXCJdLFxyXG4gICAgWzk3MzgsIDk3NDEsIFwiTlwiXSxcclxuICAgIFs5NzQyLCA5NzQzLCBcIkFcIl0sXHJcbiAgICBbOTc0NCwgOTc0NywgXCJOXCJdLFxyXG4gICAgWzk3NDgsIDk3NDksIFwiV1wiXSxcclxuICAgIFs5NzUwLCA5NzU1LCBcIk5cIl0sXHJcbiAgICBbOTc1NiwgOTc1NiwgXCJBXCJdLFxyXG4gICAgWzk3NTcsIDk3NTcsIFwiTlwiXSxcclxuICAgIFs5NzU4LCA5NzU4LCBcIkFcIl0sXHJcbiAgICBbOTc1OSwgOTc5MSwgXCJOXCJdLFxyXG4gICAgWzk3OTIsIDk3OTIsIFwiQVwiXSxcclxuICAgIFs5NzkzLCA5NzkzLCBcIk5cIl0sXHJcbiAgICBbOTc5NCwgOTc5NCwgXCJBXCJdLFxyXG4gICAgWzk3OTUsIDk3OTksIFwiTlwiXSxcclxuICAgIFs5ODAwLCA5ODExLCBcIldcIl0sXHJcbiAgICBbOTgxMiwgOTgyMywgXCJOXCJdLFxyXG4gICAgWzk4MjQsIDk4MjUsIFwiQVwiXSxcclxuICAgIFs5ODI2LCA5ODI2LCBcIk5cIl0sXHJcbiAgICBbOTgyNywgOTgyOSwgXCJBXCJdLFxyXG4gICAgWzk4MzAsIDk4MzAsIFwiTlwiXSxcclxuICAgIFs5ODMxLCA5ODM0LCBcIkFcIl0sXHJcbiAgICBbOTgzNSwgOTgzNSwgXCJOXCJdLFxyXG4gICAgWzk4MzYsIDk4MzcsIFwiQVwiXSxcclxuICAgIFs5ODM4LCA5ODM4LCBcIk5cIl0sXHJcbiAgICBbOTgzOSwgOTgzOSwgXCJBXCJdLFxyXG4gICAgWzk4NDAsIDk4NTQsIFwiTlwiXSxcclxuICAgIFs5ODU1LCA5ODU1LCBcIldcIl0sXHJcbiAgICBbOTg1NiwgOTg3NCwgXCJOXCJdLFxyXG4gICAgWzk4NzUsIDk4NzUsIFwiV1wiXSxcclxuICAgIFs5ODc2LCA5ODg1LCBcIk5cIl0sXHJcbiAgICBbOTg4NiwgOTg4NywgXCJBXCJdLFxyXG4gICAgWzk4ODgsIDk4ODgsIFwiTlwiXSxcclxuICAgIFs5ODg5LCA5ODg5LCBcIldcIl0sXHJcbiAgICBbOTg5MCwgOTg5NywgXCJOXCJdLFxyXG4gICAgWzk4OTgsIDk4OTksIFwiV1wiXSxcclxuICAgIFs5OTAwLCA5OTE2LCBcIk5cIl0sXHJcbiAgICBbOTkxNywgOTkxOCwgXCJXXCJdLFxyXG4gICAgWzk5MTksIDk5MTksIFwiQVwiXSxcclxuICAgIFs5OTIwLCA5OTIzLCBcIk5cIl0sXHJcbiAgICBbOTkyNCwgOTkyNSwgXCJXXCJdLFxyXG4gICAgWzk5MjYsIDk5MzMsIFwiQVwiXSxcclxuICAgIFs5OTM0LCA5OTM0LCBcIldcIl0sXHJcbiAgICBbOTkzNSwgOTkzOSwgXCJBXCJdLFxyXG4gICAgWzk5NDAsIDk5NDAsIFwiV1wiXSxcclxuICAgIFs5OTQxLCA5OTUzLCBcIkFcIl0sXHJcbiAgICBbOTk1NCwgOTk1NCwgXCJOXCJdLFxyXG4gICAgWzk5NTUsIDk5NTUsIFwiQVwiXSxcclxuICAgIFs5OTU2LCA5OTU5LCBcIk5cIl0sXHJcbiAgICBbOTk2MCwgOTk2MSwgXCJBXCJdLFxyXG4gICAgWzk5NjIsIDk5NjIsIFwiV1wiXSxcclxuICAgIFs5OTYzLCA5OTY5LCBcIkFcIl0sXHJcbiAgICBbOTk3MCwgOTk3MSwgXCJXXCJdLFxyXG4gICAgWzk5NzIsIDk5NzIsIFwiQVwiXSxcclxuICAgIFs5OTczLCA5OTczLCBcIldcIl0sXHJcbiAgICBbOTk3NCwgOTk3NywgXCJBXCJdLFxyXG4gICAgWzk5NzgsIDk5NzgsIFwiV1wiXSxcclxuICAgIFs5OTc5LCA5OTgwLCBcIkFcIl0sXHJcbiAgICBbOTk4MSwgOTk4MSwgXCJXXCJdLFxyXG4gICAgWzk5ODIsIDk5ODMsIFwiQVwiXSxcclxuICAgIFs5OTg0LCA5OTg4LCBcIk5cIl0sXHJcbiAgICBbOTk4OSwgOTk4OSwgXCJXXCJdLFxyXG4gICAgWzk5OTAsIDk5OTMsIFwiTlwiXSxcclxuICAgIFs5OTk0LCA5OTk1LCBcIldcIl0sXHJcbiAgICBbOTk5NiwgMTAwMjMsIFwiTlwiXSxcclxuICAgIFsxMDAyNCwgMTAwMjQsIFwiV1wiXSxcclxuICAgIFsxMDAyNSwgMTAwNDQsIFwiTlwiXSxcclxuICAgIFsxMDA0NSwgMTAwNDUsIFwiQVwiXSxcclxuICAgIFsxMDA0NiwgMTAwNTksIFwiTlwiXSxcclxuICAgIFsxMDA2MCwgMTAwNjAsIFwiV1wiXSxcclxuICAgIFsxMDA2MSwgMTAwNjEsIFwiTlwiXSxcclxuICAgIFsxMDA2MiwgMTAwNjIsIFwiV1wiXSxcclxuICAgIFsxMDA2MywgMTAwNjYsIFwiTlwiXSxcclxuICAgIFsxMDA2NywgMTAwNjksIFwiV1wiXSxcclxuICAgIFsxMDA3MCwgMTAwNzAsIFwiTlwiXSxcclxuICAgIFsxMDA3MSwgMTAwNzEsIFwiV1wiXSxcclxuICAgIFsxMDA3MiwgMTAxMDEsIFwiTlwiXSxcclxuICAgIFsxMDEwMiwgMTAxMTEsIFwiQVwiXSxcclxuICAgIFsxMDExMiwgMTAxMzIsIFwiTlwiXSxcclxuICAgIFsxMDEzMywgMTAxMzUsIFwiV1wiXSxcclxuICAgIFsxMDEzNiwgMTAxNTksIFwiTlwiXSxcclxuICAgIFsxMDE2MCwgMTAxNjAsIFwiV1wiXSxcclxuICAgIFsxMDE2MSwgMTAxNzQsIFwiTlwiXSxcclxuICAgIFsxMDE3NSwgMTAxNzUsIFwiV1wiXSxcclxuICAgIFsxMDE3NiwgMTAyMTMsIFwiTlwiXSxcclxuICAgIFsxMDIxNCwgMTAyMjEsIFwiTmFcIl0sXHJcbiAgICBbMTAyMjIsIDEwNjI4LCBcIk5cIl0sXHJcbiAgICBbMTA2MjksIDEwNjMwLCBcIk5hXCJdLFxyXG4gICAgWzEwNjMxLCAxMTAzNCwgXCJOXCJdLFxyXG4gICAgWzExMDM1LCAxMTAzNiwgXCJXXCJdLFxyXG4gICAgWzExMDM3LCAxMTA4NywgXCJOXCJdLFxyXG4gICAgWzExMDg4LCAxMTA4OCwgXCJXXCJdLFxyXG4gICAgWzExMDg5LCAxMTA5MiwgXCJOXCJdLFxyXG4gICAgWzExMDkzLCAxMTA5MywgXCJXXCJdLFxyXG4gICAgWzExMDk0LCAxMTA5NywgXCJBXCJdLFxyXG4gICAgWzExMDk4LCAxMTkwMywgXCJOXCJdLFxyXG4gICAgWzExOTA0LCAxMTkyOSwgXCJXXCJdLFxyXG4gICAgWzExOTMwLCAxMTkzMCwgXCJOXCJdLFxyXG4gICAgWzExOTMxLCAxMjAxOSwgXCJXXCJdLFxyXG4gICAgWzEyMDIwLCAxMjAzMSwgXCJOXCJdLFxyXG4gICAgWzEyMDMyLCAxMjI0NSwgXCJXXCJdLFxyXG4gICAgWzEyMjQ2LCAxMjI3MSwgXCJOXCJdLFxyXG4gICAgWzEyMjcyLCAxMjI4MywgXCJXXCJdLFxyXG4gICAgWzEyMjg0LCAxMjI4NywgXCJOXCJdLFxyXG4gICAgWzEyMjg4LCAxMjI4OCwgXCJGXCJdLFxyXG4gICAgWzEyMjg5LCAxMjM1MCwgXCJXXCJdLFxyXG4gICAgWzEyMzUxLCAxMjM1MiwgXCJOXCJdLFxyXG4gICAgWzEyMzUzLCAxMjQzOCwgXCJXXCJdLFxyXG4gICAgWzEyNDM5LCAxMjQ0MCwgXCJOXCJdLFxyXG4gICAgWzEyNDQxLCAxMjU0MywgXCJXXCJdLFxyXG4gICAgWzEyNTQ0LCAxMjU0OCwgXCJOXCJdLFxyXG4gICAgWzEyNTQ5LCAxMjU5MSwgXCJXXCJdLFxyXG4gICAgWzEyNTkyLCAxMjU5MiwgXCJOXCJdLFxyXG4gICAgWzEyNTkzLCAxMjY4NiwgXCJXXCJdLFxyXG4gICAgWzEyNjg3LCAxMjY4NywgXCJOXCJdLFxyXG4gICAgWzEyNjg4LCAxMjc3MSwgXCJXXCJdLFxyXG4gICAgWzEyNzcyLCAxMjc4MywgXCJOXCJdLFxyXG4gICAgWzEyNzg0LCAxMjgzMCwgXCJXXCJdLFxyXG4gICAgWzEyODMxLCAxMjgzMSwgXCJOXCJdLFxyXG4gICAgWzEyODMyLCAxMjg3MSwgXCJXXCJdLFxyXG4gICAgWzEyODcyLCAxMjg3OSwgXCJBXCJdLFxyXG4gICAgWzEyODgwLCAxOTkwMywgXCJXXCJdLFxyXG4gICAgWzE5OTA0LCAxOTk2NywgXCJOXCJdLFxyXG4gICAgWzE5OTY4LCA0MjEyNCwgXCJXXCJdLFxyXG4gICAgWzQyMTI1LCA0MjEyNywgXCJOXCJdLFxyXG4gICAgWzQyMTI4LCA0MjE4MiwgXCJXXCJdLFxyXG4gICAgWzQyMTgzLCA0MzM1OSwgXCJOXCJdLFxyXG4gICAgWzQzMzYwLCA0MzM4OCwgXCJXXCJdLFxyXG4gICAgWzQzMzg5LCA0NDAzMSwgXCJOXCJdLFxyXG4gICAgWzQ0MDMyLCA1NTIwMywgXCJXXCJdLFxyXG4gICAgWzU1MjA0LCA1NzM0MywgXCJOXCJdLFxyXG4gICAgWzU3MzQ0LCA2Mzc0MywgXCJBXCJdLFxyXG4gICAgWzYzNzQ0LCA2NDI1NSwgXCJXXCJdLFxyXG4gICAgWzY0MjU2LCA2NTAyMywgXCJOXCJdLFxyXG4gICAgWzY1MDI0LCA2NTAzOSwgXCJBXCJdLFxyXG4gICAgWzY1MDQwLCA2NTA0OSwgXCJXXCJdLFxyXG4gICAgWzY1MDUwLCA2NTA3MSwgXCJOXCJdLFxyXG4gICAgWzY1MDcyLCA2NTEwNiwgXCJXXCJdLFxyXG4gICAgWzY1MTA3LCA2NTEwNywgXCJOXCJdLFxyXG4gICAgWzY1MTA4LCA2NTEyNiwgXCJXXCJdLFxyXG4gICAgWzY1MTI3LCA2NTEyNywgXCJOXCJdLFxyXG4gICAgWzY1MTI4LCA2NTEzMSwgXCJXXCJdLFxyXG4gICAgWzY1MTMyLCA2NTI4MCwgXCJOXCJdLFxyXG4gICAgWzY1MjgxLCA2NTM3NiwgXCJGXCJdLFxyXG4gICAgWzY1Mzc3LCA2NTQ3MCwgXCJIXCJdLFxyXG4gICAgWzY1NDcxLCA2NTQ3MywgXCJOXCJdLFxyXG4gICAgWzY1NDc0LCA2NTQ3OSwgXCJIXCJdLFxyXG4gICAgWzY1NDgwLCA2NTQ4MSwgXCJOXCJdLFxyXG4gICAgWzY1NDgyLCA2NTQ4NywgXCJIXCJdLFxyXG4gICAgWzY1NDg4LCA2NTQ4OSwgXCJOXCJdLFxyXG4gICAgWzY1NDkwLCA2NTQ5NSwgXCJIXCJdLFxyXG4gICAgWzY1NDk2LCA2NTQ5NywgXCJOXCJdLFxyXG4gICAgWzY1NDk4LCA2NTUwMCwgXCJIXCJdLFxyXG4gICAgWzY1NTAxLCA2NTUwMywgXCJOXCJdLFxyXG4gICAgWzY1NTA0LCA2NTUxMCwgXCJGXCJdLFxyXG4gICAgWzY1NTExLCA2NTUxMSwgXCJOXCJdLFxyXG4gICAgWzY1NTEyLCA2NTUxOCwgXCJIXCJdLFxyXG4gICAgWzY1NTE5LCA2NTUzMiwgXCJOXCJdLFxyXG4gICAgWzY1NTMzLCA2NTUzMywgXCJBXCJdLFxyXG4gICAgWzY1NTM0LCA5NDE3NSwgXCJOXCJdLFxyXG4gICAgWzk0MTc2LCA5NDE4MCwgXCJXXCJdLFxyXG4gICAgWzk0MTgxLCA5NDE5MSwgXCJOXCJdLFxyXG4gICAgWzk0MTkyLCA5NDE5MywgXCJXXCJdLFxyXG4gICAgWzk0MTk0LCA5NDIwNywgXCJOXCJdLFxyXG4gICAgWzk0MjA4LCAxMDAzNDMsIFwiV1wiXSxcclxuICAgIFsxMDAzNDQsIDEwMDM1MSwgXCJOXCJdLFxyXG4gICAgWzEwMDM1MiwgMTAxNTg5LCBcIldcIl0sXHJcbiAgICBbMTAxNTkwLCAxMDE2MzEsIFwiTlwiXSxcclxuICAgIFsxMDE2MzIsIDEwMTY0MCwgXCJXXCJdLFxyXG4gICAgWzEwMTY0MSwgMTEwNTkxLCBcIk5cIl0sXHJcbiAgICBbMTEwNTkyLCAxMTA4NzgsIFwiV1wiXSxcclxuICAgIFsxMTA4NzksIDExMDkyNywgXCJOXCJdLFxyXG4gICAgWzExMDkyOCwgMTEwOTMwLCBcIldcIl0sXHJcbiAgICBbMTEwOTMxLCAxMTA5NDcsIFwiTlwiXSxcclxuICAgIFsxMTA5NDgsIDExMDk1MSwgXCJXXCJdLFxyXG4gICAgWzExMDk1MiwgMTEwOTU5LCBcIk5cIl0sXHJcbiAgICBbMTEwOTYwLCAxMTEzNTUsIFwiV1wiXSxcclxuICAgIFsxMTEzNTYsIDEyNjk3OSwgXCJOXCJdLFxyXG4gICAgWzEyNjk4MCwgMTI2OTgwLCBcIldcIl0sXHJcbiAgICBbMTI2OTgxLCAxMjcxODIsIFwiTlwiXSxcclxuICAgIFsxMjcxODMsIDEyNzE4MywgXCJXXCJdLFxyXG4gICAgWzEyNzE4NCwgMTI3MjMxLCBcIk5cIl0sXHJcbiAgICBbMTI3MjMyLCAxMjcyNDIsIFwiQVwiXSxcclxuICAgIFsxMjcyNDMsIDEyNzI0NywgXCJOXCJdLFxyXG4gICAgWzEyNzI0OCwgMTI3Mjc3LCBcIkFcIl0sXHJcbiAgICBbMTI3Mjc4LCAxMjcyNzksIFwiTlwiXSxcclxuICAgIFsxMjcyODAsIDEyNzMzNywgXCJBXCJdLFxyXG4gICAgWzEyNzMzOCwgMTI3MzQzLCBcIk5cIl0sXHJcbiAgICBbMTI3MzQ0LCAxMjczNzMsIFwiQVwiXSxcclxuICAgIFsxMjczNzQsIDEyNzM3NCwgXCJXXCJdLFxyXG4gICAgWzEyNzM3NSwgMTI3Mzc2LCBcIkFcIl0sXHJcbiAgICBbMTI3Mzc3LCAxMjczODYsIFwiV1wiXSxcclxuICAgIFsxMjczODcsIDEyNzQwNCwgXCJBXCJdLFxyXG4gICAgWzEyNzQwNSwgMTI3NDg3LCBcIk5cIl0sXHJcbiAgICBbMTI3NDg4LCAxMjc0OTAsIFwiV1wiXSxcclxuICAgIFsxMjc0OTEsIDEyNzUwMywgXCJOXCJdLFxyXG4gICAgWzEyNzUwNCwgMTI3NTQ3LCBcIldcIl0sXHJcbiAgICBbMTI3NTQ4LCAxMjc1NTEsIFwiTlwiXSxcclxuICAgIFsxMjc1NTIsIDEyNzU2MCwgXCJXXCJdLFxyXG4gICAgWzEyNzU2MSwgMTI3NTY3LCBcIk5cIl0sXHJcbiAgICBbMTI3NTY4LCAxMjc1NjksIFwiV1wiXSxcclxuICAgIFsxMjc1NzAsIDEyNzU4MywgXCJOXCJdLFxyXG4gICAgWzEyNzU4NCwgMTI3NTg5LCBcIldcIl0sXHJcbiAgICBbMTI3NTkwLCAxMjc3NDMsIFwiTlwiXSxcclxuICAgIFsxMjc3NDQsIDEyNzc3NiwgXCJXXCJdLFxyXG4gICAgWzEyNzc3NywgMTI3Nzg4LCBcIk5cIl0sXHJcbiAgICBbMTI3Nzg5LCAxMjc3OTcsIFwiV1wiXSxcclxuICAgIFsxMjc3OTgsIDEyNzc5OCwgXCJOXCJdLFxyXG4gICAgWzEyNzc5OSwgMTI3ODY4LCBcIldcIl0sXHJcbiAgICBbMTI3ODY5LCAxMjc4NjksIFwiTlwiXSxcclxuICAgIFsxMjc4NzAsIDEyNzg5MSwgXCJXXCJdLFxyXG4gICAgWzEyNzg5MiwgMTI3OTAzLCBcIk5cIl0sXHJcbiAgICBbMTI3OTA0LCAxMjc5NDYsIFwiV1wiXSxcclxuICAgIFsxMjc5NDcsIDEyNzk1MCwgXCJOXCJdLFxyXG4gICAgWzEyNzk1MSwgMTI3OTU1LCBcIldcIl0sXHJcbiAgICBbMTI3OTU2LCAxMjc5NjcsIFwiTlwiXSxcclxuICAgIFsxMjc5NjgsIDEyNzk4NCwgXCJXXCJdLFxyXG4gICAgWzEyNzk4NSwgMTI3OTg3LCBcIk5cIl0sXHJcbiAgICBbMTI3OTg4LCAxMjc5ODgsIFwiV1wiXSxcclxuICAgIFsxMjc5ODksIDEyNzk5MSwgXCJOXCJdLFxyXG4gICAgWzEyNzk5MiwgMTI4MDYyLCBcIldcIl0sXHJcbiAgICBbMTI4MDYzLCAxMjgwNjMsIFwiTlwiXSxcclxuICAgIFsxMjgwNjQsIDEyODA2NCwgXCJXXCJdLFxyXG4gICAgWzEyODA2NSwgMTI4MDY1LCBcIk5cIl0sXHJcbiAgICBbMTI4MDY2LCAxMjgyNTIsIFwiV1wiXSxcclxuICAgIFsxMjgyNTMsIDEyODI1NCwgXCJOXCJdLFxyXG4gICAgWzEyODI1NSwgMTI4MzE3LCBcIldcIl0sXHJcbiAgICBbMTI4MzE4LCAxMjgzMzAsIFwiTlwiXSxcclxuICAgIFsxMjgzMzEsIDEyODMzNCwgXCJXXCJdLFxyXG4gICAgWzEyODMzNSwgMTI4MzM1LCBcIk5cIl0sXHJcbiAgICBbMTI4MzM2LCAxMjgzNTksIFwiV1wiXSxcclxuICAgIFsxMjgzNjAsIDEyODM3NywgXCJOXCJdLFxyXG4gICAgWzEyODM3OCwgMTI4Mzc4LCBcIldcIl0sXHJcbiAgICBbMTI4Mzc5LCAxMjg0MDQsIFwiTlwiXSxcclxuICAgIFsxMjg0MDUsIDEyODQwNiwgXCJXXCJdLFxyXG4gICAgWzEyODQwNywgMTI4NDE5LCBcIk5cIl0sXHJcbiAgICBbMTI4NDIwLCAxMjg0MjAsIFwiV1wiXSxcclxuICAgIFsxMjg0MjEsIDEyODUwNiwgXCJOXCJdLFxyXG4gICAgWzEyODUwNywgMTI4NTkxLCBcIldcIl0sXHJcbiAgICBbMTI4NTkyLCAxMjg2MzksIFwiTlwiXSxcclxuICAgIFsxMjg2NDAsIDEyODcwOSwgXCJXXCJdLFxyXG4gICAgWzEyODcxMCwgMTI4NzE1LCBcIk5cIl0sXHJcbiAgICBbMTI4NzE2LCAxMjg3MTYsIFwiV1wiXSxcclxuICAgIFsxMjg3MTcsIDEyODcxOSwgXCJOXCJdLFxyXG4gICAgWzEyODcyMCwgMTI4NzIyLCBcIldcIl0sXHJcbiAgICBbMTI4NzIzLCAxMjg3MjQsIFwiTlwiXSxcclxuICAgIFsxMjg3MjUsIDEyODcyNywgXCJXXCJdLFxyXG4gICAgWzEyODcyOCwgMTI4NzQ2LCBcIk5cIl0sXHJcbiAgICBbMTI4NzQ3LCAxMjg3NDgsIFwiV1wiXSxcclxuICAgIFsxMjg3NDksIDEyODc1NSwgXCJOXCJdLFxyXG4gICAgWzEyODc1NiwgMTI4NzY0LCBcIldcIl0sXHJcbiAgICBbMTI4NzY1LCAxMjg5OTEsIFwiTlwiXSxcclxuICAgIFsxMjg5OTIsIDEyOTAwMywgXCJXXCJdLFxyXG4gICAgWzEyOTAwNCwgMTI5MjkxLCBcIk5cIl0sXHJcbiAgICBbMTI5MjkyLCAxMjkzMzgsIFwiV1wiXSxcclxuICAgIFsxMjkzMzksIDEyOTMzOSwgXCJOXCJdLFxyXG4gICAgWzEyOTM0MCwgMTI5MzQ5LCBcIldcIl0sXHJcbiAgICBbMTI5MzUwLCAxMjkzNTAsIFwiTlwiXSxcclxuICAgIFsxMjkzNTEsIDEyOTQwMCwgXCJXXCJdLFxyXG4gICAgWzEyOTQwMSwgMTI5NDAxLCBcIk5cIl0sXHJcbiAgICBbMTI5NDAyLCAxMjk0ODMsIFwiV1wiXSxcclxuICAgIFsxMjk0ODQsIDEyOTQ4NCwgXCJOXCJdLFxyXG4gICAgWzEyOTQ4NSwgMTI5NTM1LCBcIldcIl0sXHJcbiAgICBbMTI5NTM2LCAxMjk2NDcsIFwiTlwiXSxcclxuICAgIFsxMjk2NDgsIDEyOTY1MiwgXCJXXCJdLFxyXG4gICAgWzEyOTY1MywgMTI5NjU1LCBcIk5cIl0sXHJcbiAgICBbMTI5NjU2LCAxMjk2NTgsIFwiV1wiXSxcclxuICAgIFsxMjk2NTksIDEyOTY2MywgXCJOXCJdLFxyXG4gICAgWzEyOTY2NCwgMTI5NjcwLCBcIldcIl0sXHJcbiAgICBbMTI5NjcxLCAxMjk2NzksIFwiTlwiXSxcclxuICAgIFsxMjk2ODAsIDEyOTcwNCwgXCJXXCJdLFxyXG4gICAgWzEyOTcwNSwgMTI5NzExLCBcIk5cIl0sXHJcbiAgICBbMTI5NzEyLCAxMjk3MTgsIFwiV1wiXSxcclxuICAgIFsxMjk3MTksIDEyOTcyNywgXCJOXCJdLFxyXG4gICAgWzEyOTcyOCwgMTI5NzMwLCBcIldcIl0sXHJcbiAgICBbMTI5NzMxLCAxMjk3NDMsIFwiTlwiXSxcclxuICAgIFsxMjk3NDQsIDEyOTc1MCwgXCJXXCJdLFxyXG4gICAgWzEyOTc1MSwgMTMxMDcxLCBcIk5cIl0sXHJcbiAgICBbMTMxMDcyLCAxOTY2MDUsIFwiV1wiXSxcclxuICAgIFsxOTY2MDYsIDE5NjYwNywgXCJOXCJdLFxyXG4gICAgWzE5NjYwOCwgMjYyMTQxLCBcIldcIl0sXHJcbiAgICBbMjYyMTQyLCA5MTc3NTksIFwiTlwiXSxcclxuICAgIFs5MTc3NjAsIDkxNzk5OSwgXCJBXCJdLFxyXG4gICAgWzkxODAwMCwgOTgzMDM5LCBcIk5cIl0sXHJcbiAgICBbOTgzMDQwLCAxMDQ4NTczLCBcIkFcIl0sXHJcbiAgICBbMTA0ODU3NCwgMTA0ODU3NSwgXCJOXCJdLFxyXG4gICAgWzEwNDg1NzYsIDExMTQxMDksIFwiQVwiXSxcclxuICAgIFsxMTE0MTEwLCAxMTE0MTExLCBcIk5cIl0sXHJcbl07XHJcbi8qIEVORCAqL1xyXG52YXIgdmVyc2lvbiA9IFwiMTMuMC4wXCI7XG5cbi8qKlxyXG4gKiBHZXRzIHRoZSBFQVcgcHJvcGVydHkgb2YgYSBjb2RlIHBvaW50LlxyXG4gKiBAcGFyYW0gY29kZVBvaW50IENvZGUgcG9pbnRcclxuICogQHJldHVybiBUaGUgRUFXIHByb3BlcnR5IG9mIHRoZSBjb2RlIHBvaW50XHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRFQVdPZkNvZGVQb2ludChjb2RlUG9pbnQpIHtcclxuICAgIHZhciBtaW4gPSAwO1xyXG4gICAgdmFyIG1heCA9IGRlZnMubGVuZ3RoIC0gMTtcclxuICAgIHdoaWxlIChtaW4gIT09IG1heCkge1xyXG4gICAgICAgIHZhciBpID0gbWluICsgKChtYXggLSBtaW4pID4+IDEpO1xyXG4gICAgICAgIHZhciBfYSA9IGRlZnNbaV0sIHN0YXJ0ID0gX2FbMF0sIGVuZCA9IF9hWzFdLCBwcm9wID0gX2FbMl07XHJcbiAgICAgICAgaWYgKGNvZGVQb2ludCA8IHN0YXJ0KSB7XHJcbiAgICAgICAgICAgIG1heCA9IGkgLSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChjb2RlUG9pbnQgPiBlbmQpIHtcclxuICAgICAgICAgICAgbWluID0gaSArIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gcHJvcDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGVmc1ttaW5dWzJdO1xyXG59XHJcbi8qKlxyXG4gKiBHZXRzIHRoZSBFQVcgcHJvcGVydHkgb2YgYSBjaGFyYWN0ZXIuXHJcbiAqIEBwYXJhbSBzdHIgQ2hhcmFjdGVyIHN0cmluZ1xyXG4gKiBAcGFyYW0gcG9zIENoYXJhY3RlciBwb3NpdGlvbiAoaW4gY29kZSB1bml0KSAoZGVmYXVsdCA9IDApXHJcbiAqIEByZXR1cm4gVGhlIEVBVyBwcm9wZXJ0eSBvZiB0aGUgY2hhcmFjdGVyXHJcbiAqIEBleGFtcGxlXHJcbiAqIGltcG9ydCB7IGdldEVBVyB9IGZyb20gXCJtZWF3XCI7XHJcbiAqXHJcbiAqIC8vIE5hcnJvd1xyXG4gKiBhc3NlcnQoZ2V0RUFXKFwiQVwiKSA9PT0gXCJOYVwiKTtcclxuICogLy8gV2lkZVxyXG4gKiBhc3NlcnQoZ2V0RUFXKFwi44GCXCIpID09PSBcIldcIik7XHJcbiAqIGFzc2VydChnZXRFQVcoXCLlrolcIikgPT09IFwiV1wiKTtcclxuICogYXNzZXJ0KGdldEVBVyhcIvCfjaNcIikgPT09IFwiV1wiKTtcclxuICogLy8gRnVsbHdpZHRoXHJcbiAqIGFzc2VydChnZXRFQVcoXCLvvKFcIikgPT09IFwiRlwiKTtcclxuICogLy8gSGFsZndpZHRoXHJcbiAqIGFzc2VydChnZXRFQVcoXCLvvbFcIikgPT09IFwiSFwiKTtcclxuICogLy8gQW1iaWd1b3VzXHJcbiAqIGFzc2VydChnZXRFQVcoXCLiiIBcIikgPT09IFwiQVwiKTtcclxuICogYXNzZXJ0KGdldEVBVyhcIuKGklwiKSA9PT0gXCJBXCIpO1xyXG4gKiBhc3NlcnQoZ2V0RUFXKFwizqlcIikgPT09IFwiQVwiKTtcclxuICogYXNzZXJ0KGdldEVBVyhcItCvXCIpID09PSBcIkFcIik7XHJcbiAqIC8vIE5ldXRyYWxcclxuICogYXNzZXJ0KGdldEVBVyhcIuKEtVwiKSA9PT0gXCJOXCIpO1xyXG4gKlxyXG4gKiAvLyBjaGFyYWN0ZXIgcG9zaXRpb24gKGluIGNvZGUgdW5pdCkgY2FuIGJlIHNwZWNpZmllZFxyXG4gKiBhc3NlcnQoZ2V0RUFXKFwi4oS1QeOBgu+8oe+9seKIgFwiLCAyKSA9PT0gXCJXXCIpO1xyXG4gKi9cclxuZnVuY3Rpb24gZ2V0RUFXKHN0ciwgcG9zKSB7XHJcbiAgICBpZiAocG9zID09PSB2b2lkIDApIHsgcG9zID0gMDsgfVxyXG4gICAgdmFyIGNvZGVQb2ludCA9IHN0ci5jb2RlUG9pbnRBdChwb3MpO1xyXG4gICAgaWYgKGNvZGVQb2ludCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIHJldHVybiBnZXRFQVdPZkNvZGVQb2ludChjb2RlUG9pbnQpO1xyXG59XG5cbnZhciBkZWZhdWx0V2lkdGhzID0ge1xyXG4gICAgTjogMSxcclxuICAgIE5hOiAxLFxyXG4gICAgVzogMixcclxuICAgIEY6IDIsXHJcbiAgICBIOiAxLFxyXG4gICAgQTogMSxcclxufTtcclxuLyoqXHJcbiAqIENvbXB1dGVzIHRoZSB3aWR0aCBvZiBhIHN0cmluZyBiYXNlZCBvbiB0aGUgRUFXIHByb3BlcnRpZXMgb2YgdGhlIGNoYXJhY3RlcnMuXHJcbiAqIEJ5IGRlZmF1bHQsIGNoYXJhY3RlcnMgd2l0aCBwcm9wZXJ0eSBXaWRlIChXKSBvciBGdWxsd2lkdGggKEYpIGFyZSB0cmVhdGVkIGFzIHdpZGUgKD0gMilcclxuICogYW5kIG90aGVycyBhcmUgYXMgbmFycm93ICg9IDEpLlxyXG4gKiBAcGFyYW0gc3RyIENoYXJhY3RlciBzdHJpbmdcclxuICogQHBhcmFtIHdpZHRocyBBbiBvYmplY3QgdGhhdCBtYXBzIEVBVyBwcm9wZXJ0aWVzIHRvIGNoYXJhY3RlciB3aWR0aHNcclxuICogQHJldHVybiBUaGUgY29tcHV0ZWQgd2lkdGhcclxuICogQGV4YW1wbGVcclxuICogaW1wb3J0IHsgY29tcHV0ZVdpZHRoIH0gZnJvbSBcIm1lYXdcIjtcclxuICpcclxuICogYXNzZXJ0KGNvbXB1dGVXaWR0aChcIkHjgYLwn42jzqlcIikgPT09IDYpO1xyXG4gKiAvLyBjaGFyYWN0ZXIgd2lkdGggZm9yIGVhY2ggRUFXIHByb3BlcnR5IGNhbiBiZSBjdXN0b21pemVkXHJcbiAqIGFzc2VydChjb21wdXRlV2lkdGgoXCJB44GC8J+No86pXCIsIHsgXCJBXCI6IDIgfSkgPT09IDcpO1xyXG4gKi9cclxuZnVuY3Rpb24gY29tcHV0ZVdpZHRoKHN0ciwgd2lkdGhzKSB7XHJcbiAgICB2YXIgd2lkdGggPSAwO1xyXG4gICAgZm9yICh2YXIgX2kgPSAwLCBzdHJfMSA9IHN0cjsgX2kgPCBzdHJfMS5sZW5ndGg7IF9pKyspIHtcclxuICAgICAgICB2YXIgY2hhciA9IHN0cl8xW19pXTtcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvbiAtLSBjaGFyIGNhbm5vdCBiZSBlbXB0eVxyXG4gICAgICAgIHZhciBlYXcgPSBnZXRFQVcoY2hhcik7XHJcbiAgICAgICAgd2lkdGggKz0gKHdpZHRocyAmJiB3aWR0aHNbZWF3XSkgfHwgZGVmYXVsdFdpZHRoc1tlYXddO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHdpZHRoO1xyXG59XG5cbmV4cG9ydCB7IGNvbXB1dGVXaWR0aCwgdmVyc2lvbiBhcyBlYXdWZXJzaW9uLCBnZXRFQVcgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5tb3ZlQ29sdW1uID0gZXhwb3J0cy5kZWxldGVDb2x1bW4gPSBleHBvcnRzLmluc2VydENvbHVtbiA9IGV4cG9ydHMubW92ZVJvdyA9IGV4cG9ydHMuZGVsZXRlUm93ID0gZXhwb3J0cy5pbnNlcnRSb3cgPSBleHBvcnRzLmFsdGVyQWxpZ25tZW50ID0gZXhwb3J0cy5mb3JtYXRUYWJsZSA9IGV4cG9ydHMuRm9ybWF0VHlwZSA9IGV4cG9ydHMuX3dlYWtGb3JtYXRUYWJsZSA9IGV4cG9ydHMuX2Zvcm1hdFRhYmxlID0gZXhwb3J0cy5fcGFkVGV4dCA9IGV4cG9ydHMuX2FsaWduVGV4dCA9IGV4cG9ydHMuX2NvbXB1dGVUZXh0V2lkdGggPSBleHBvcnRzLmNvbXBsZXRlVGFibGUgPSBleHBvcnRzLl9leHRlbmRBcnJheSA9IGV4cG9ydHMuX2RlbGltaXRlclRleHQgPSB2b2lkIDA7XG5jb25zdCBhbGlnbm1lbnRfMSA9IHJlcXVpcmUoXCIuL2FsaWdubWVudFwiKTtcbmNvbnN0IHRhYmxlXzEgPSByZXF1aXJlKFwiLi90YWJsZVwiKTtcbmNvbnN0IHRhYmxlX2NlbGxfMSA9IHJlcXVpcmUoXCIuL3RhYmxlLWNlbGxcIik7XG5jb25zdCB0YWJsZV9yb3dfMSA9IHJlcXVpcmUoXCIuL3RhYmxlLXJvd1wiKTtcbmNvbnN0IG1lYXdfMSA9IHJlcXVpcmUoXCJtZWF3XCIpO1xuLyoqXG4gKiBDcmVhdGVzIGEgZGVsaW1pdGVyIHRleHQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB3aWR0aCAtIFdpZHRoIG9mIHRoZSBob3Jpem9udGFsIGJhciBvZiBkZWxpbWl0ZXIuXG4gKiBAdGhyb3dzIHtFcnJvcn0gVW5rbm93biBhbGlnbm1lbnQuXG4gKi9cbmNvbnN0IF9kZWxpbWl0ZXJUZXh0ID0gKGFsaWdubWVudCwgd2lkdGgpID0+IHtcbiAgICBjb25zdCBiYXIgPSAnLScucmVwZWF0KHdpZHRoKTtcbiAgICBzd2l0Y2ggKGFsaWdubWVudCkge1xuICAgICAgICBjYXNlIGFsaWdubWVudF8xLkFsaWdubWVudC5OT05FOlxuICAgICAgICAgICAgcmV0dXJuIGAgJHtiYXJ9IGA7XG4gICAgICAgIGNhc2UgYWxpZ25tZW50XzEuQWxpZ25tZW50LkxFRlQ6XG4gICAgICAgICAgICByZXR1cm4gYDoke2Jhcn0gYDtcbiAgICAgICAgY2FzZSBhbGlnbm1lbnRfMS5BbGlnbm1lbnQuUklHSFQ6XG4gICAgICAgICAgICByZXR1cm4gYCAke2Jhcn06YDtcbiAgICAgICAgY2FzZSBhbGlnbm1lbnRfMS5BbGlnbm1lbnQuQ0VOVEVSOlxuICAgICAgICAgICAgcmV0dXJuIGA6JHtiYXJ9OmA7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gYWxpZ25tZW50OiAnICsgYWxpZ25tZW50KTtcbiAgICB9XG59O1xuZXhwb3J0cy5fZGVsaW1pdGVyVGV4dCA9IF9kZWxpbWl0ZXJUZXh0O1xuLyoqXG4gKiBFeHRlbmRzIGFycmF5IHNpemUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSBjYWxsYmFjayAtIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGZpbGwgbmV3bHkgY3JlYXRlZCBjZWxscy5cbiAqIEByZXR1cm5zIEV4dGVuZGVkIGFycmF5LlxuICovXG5jb25zdCBfZXh0ZW5kQXJyYXkgPSAoYXJyLCBzaXplLCBjYWxsYmFjaykgPT4ge1xuICAgIGNvbnN0IGV4dGVuZGVkID0gYXJyLnNsaWNlKCk7XG4gICAgZm9yIChsZXQgaSA9IGFyci5sZW5ndGg7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgZXh0ZW5kZWQucHVzaChjYWxsYmFjayhpLCBhcnIpKTtcbiAgICB9XG4gICAgcmV0dXJuIGV4dGVuZGVkO1xufTtcbmV4cG9ydHMuX2V4dGVuZEFycmF5ID0gX2V4dGVuZEFycmF5O1xuLyoqXG4gKiBDb21wbGV0ZXMgYSB0YWJsZSBieSBhZGRpbmcgbWlzc2luZyBkZWxpbWl0ZXIgYW5kIGNlbGxzLlxuICogQWZ0ZXIgY29tcGxldGlvbiwgYWxsIHJvd3MgaW4gdGhlIHRhYmxlIGhhdmUgdGhlIHNhbWUgd2lkdGguXG4gKlxuICogQHByaXZhdGVcbiAqXG4gKiBAdGhyb3dzIHtFcnJvcn0gRW1wdHkgdGFibGUuXG4gKi9cbmNvbnN0IGNvbXBsZXRlVGFibGUgPSAodGFibGUsIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCB0YWJsZUhlaWdodCA9IHRhYmxlLmdldEhlaWdodCgpO1xuICAgIGNvbnN0IHRhYmxlV2lkdGggPSB0YWJsZS5nZXRXaWR0aCgpO1xuICAgIGlmICh0YWJsZUhlaWdodCA9PT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VtcHR5IHRhYmxlJyk7XG4gICAgfVxuICAgIGNvbnN0IHJvd3MgPSB0YWJsZS5nZXRSb3dzKCk7XG4gICAgY29uc3QgbmV3Um93cyA9IFtdO1xuICAgIC8vIGhlYWRlclxuICAgIGNvbnN0IGhlYWRlclJvdyA9IHJvd3NbMF07XG4gICAgY29uc3QgaGVhZGVyQ2VsbHMgPSBoZWFkZXJSb3cuZ2V0Q2VsbHMoKTtcbiAgICBuZXdSb3dzLnB1c2gobmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KGV4cG9ydHMuX2V4dGVuZEFycmF5KGhlYWRlckNlbGxzLCB0YWJsZVdpZHRoLCAoaikgPT4gbmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoaiA9PT0gaGVhZGVyQ2VsbHMubGVuZ3RoID8gaGVhZGVyUm93Lm1hcmdpblJpZ2h0IDogJycpKSwgaGVhZGVyUm93Lm1hcmdpbkxlZnQsIGhlYWRlckNlbGxzLmxlbmd0aCA8IHRhYmxlV2lkdGggPyAnJyA6IGhlYWRlclJvdy5tYXJnaW5SaWdodCkpO1xuICAgIC8vIGRlbGltaXRlclxuICAgIGNvbnN0IGRlbGltaXRlclJvdyA9IHRhYmxlLmdldERlbGltaXRlclJvdygpO1xuICAgIGlmIChkZWxpbWl0ZXJSb3cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBkZWxpbWl0ZXJDZWxscyA9IGRlbGltaXRlclJvdy5nZXRDZWxscygpO1xuICAgICAgICBuZXdSb3dzLnB1c2gobmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KGV4cG9ydHMuX2V4dGVuZEFycmF5KGRlbGltaXRlckNlbGxzLCB0YWJsZVdpZHRoLCAoaikgPT4gbmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoZXhwb3J0cy5fZGVsaW1pdGVyVGV4dChhbGlnbm1lbnRfMS5BbGlnbm1lbnQuTk9ORSwgaiA9PT0gZGVsaW1pdGVyQ2VsbHMubGVuZ3RoXG4gICAgICAgICAgICA/IE1hdGgubWF4KG9wdGlvbnMubWluRGVsaW1pdGVyV2lkdGgsIGRlbGltaXRlclJvdy5tYXJnaW5SaWdodC5sZW5ndGggLSAyKVxuICAgICAgICAgICAgOiBvcHRpb25zLm1pbkRlbGltaXRlcldpZHRoKSkpLCBkZWxpbWl0ZXJSb3cubWFyZ2luTGVmdCwgZGVsaW1pdGVyQ2VsbHMubGVuZ3RoIDwgdGFibGVXaWR0aCA/ICcnIDogZGVsaW1pdGVyUm93Lm1hcmdpblJpZ2h0KSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBuZXdSb3dzLnB1c2gobmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KGV4cG9ydHMuX2V4dGVuZEFycmF5KFtdLCB0YWJsZVdpZHRoLCAoKSA9PiBuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbChleHBvcnRzLl9kZWxpbWl0ZXJUZXh0KGFsaWdubWVudF8xLkFsaWdubWVudC5OT05FLCBvcHRpb25zLm1pbkRlbGltaXRlcldpZHRoKSkpLCAnJywgJycpKTtcbiAgICB9XG4gICAgLy8gYm9keVxuICAgIGZvciAobGV0IGkgPSBkZWxpbWl0ZXJSb3cgIT09IHVuZGVmaW5lZCA/IDIgOiAxOyBpIDwgdGFibGVIZWlnaHQ7IGkrKykge1xuICAgICAgICBjb25zdCByb3cgPSByb3dzW2ldO1xuICAgICAgICBjb25zdCBjZWxscyA9IHJvdy5nZXRDZWxscygpO1xuICAgICAgICBuZXdSb3dzLnB1c2gobmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KGV4cG9ydHMuX2V4dGVuZEFycmF5KGNlbGxzLCB0YWJsZVdpZHRoLCAoaikgPT4gbmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoaiA9PT0gY2VsbHMubGVuZ3RoID8gcm93Lm1hcmdpblJpZ2h0IDogJycpKSwgcm93Lm1hcmdpbkxlZnQsIGNlbGxzLmxlbmd0aCA8IHRhYmxlV2lkdGggPyAnJyA6IHJvdy5tYXJnaW5SaWdodCkpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICB0YWJsZTogbmV3IHRhYmxlXzEuVGFibGUobmV3Um93cyksXG4gICAgICAgIGRlbGltaXRlckluc2VydGVkOiBkZWxpbWl0ZXJSb3cgPT09IHVuZGVmaW5lZCxcbiAgICB9O1xufTtcbmV4cG9ydHMuY29tcGxldGVUYWJsZSA9IGNvbXBsZXRlVGFibGU7XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIHdpZHRoIG9mIGEgdGV4dCBiYXNlZCBvbiBjaGFyYWN0ZXJzJyBFQVcgcHJvcGVydGllcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICpcbiAqIEByZXR1cm5zIENhbGN1bGF0ZWQgd2lkdGggb2YgdGhlIHRleHQuXG4gKi9cbmNvbnN0IF9jb21wdXRlVGV4dFdpZHRoID0gKHRleHQsIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBub3JtYWxpemVkID0gb3B0aW9ucy5ub3JtYWxpemUgPyB0ZXh0Lm5vcm1hbGl6ZSgnTkZDJykgOiB0ZXh0O1xuICAgIGxldCB3ID0gMDtcbiAgICBmb3IgKGNvbnN0IGNoYXIgb2Ygbm9ybWFsaXplZCkge1xuICAgICAgICBpZiAob3B0aW9ucy53aWRlQ2hhcnMuaGFzKGNoYXIpKSB7XG4gICAgICAgICAgICB3ICs9IDI7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5uYXJyb3dDaGFycy5oYXMoY2hhcikpIHtcbiAgICAgICAgICAgIHcgKz0gMTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAobWVhd18xLmdldEVBVyhjaGFyKSkge1xuICAgICAgICAgICAgY2FzZSAnRic6XG4gICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICB3ICs9IDI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdBJzpcbiAgICAgICAgICAgICAgICB3ICs9IG9wdGlvbnMuYW1iaWd1b3VzQXNXaWRlID8gMiA6IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHcgKz0gMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdztcbn07XG5leHBvcnRzLl9jb21wdXRlVGV4dFdpZHRoID0gX2NvbXB1dGVUZXh0V2lkdGg7XG4vKipcbiAqIFJldHVybnMgYSBhbGlnbmVkIGNlbGwgY29udGVudC5cbiAqXG4gKiBAdGhyb3dzIHtFcnJvcn0gVW5rbm93biBhbGlnbm1lbnQuXG4gKiBAdGhyb3dzIHtFcnJvcn0gVW5leHBlY3RlZCBkZWZhdWx0IGFsaWdubWVudC5cbiAqL1xuY29uc3QgX2FsaWduVGV4dCA9ICh0ZXh0LCB3aWR0aCwgYWxpZ25tZW50LCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3Qgc3BhY2UgPSB3aWR0aCAtIGV4cG9ydHMuX2NvbXB1dGVUZXh0V2lkdGgodGV4dCwgb3B0aW9ucyk7XG4gICAgaWYgKHNwYWNlIDwgMCkge1xuICAgICAgICByZXR1cm4gdGV4dDtcbiAgICB9XG4gICAgc3dpdGNoIChhbGlnbm1lbnQpIHtcbiAgICAgICAgY2FzZSBhbGlnbm1lbnRfMS5BbGlnbm1lbnQuTk9ORTpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCBkZWZhdWx0IGFsaWdubWVudCcpO1xuICAgICAgICBjYXNlIGFsaWdubWVudF8xLkFsaWdubWVudC5MRUZUOlxuICAgICAgICAgICAgcmV0dXJuIHRleHQgKyAnICcucmVwZWF0KHNwYWNlKTtcbiAgICAgICAgY2FzZSBhbGlnbm1lbnRfMS5BbGlnbm1lbnQuUklHSFQ6XG4gICAgICAgICAgICByZXR1cm4gJyAnLnJlcGVhdChzcGFjZSkgKyB0ZXh0O1xuICAgICAgICBjYXNlIGFsaWdubWVudF8xLkFsaWdubWVudC5DRU5URVI6XG4gICAgICAgICAgICByZXR1cm4gKCcgJy5yZXBlYXQoTWF0aC5mbG9vcihzcGFjZSAvIDIpKSArXG4gICAgICAgICAgICAgICAgdGV4dCArXG4gICAgICAgICAgICAgICAgJyAnLnJlcGVhdChNYXRoLmNlaWwoc3BhY2UgLyAyKSkpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGFsaWdubWVudDogJyArIGFsaWdubWVudCk7XG4gICAgfVxufTtcbmV4cG9ydHMuX2FsaWduVGV4dCA9IF9hbGlnblRleHQ7XG4vKipcbiAqIEp1c3QgYWRkcyBvbmUgc3BhY2UgcGFkZGluZ3MgdG8gYm90aCBzaWRlcyBvZiBhIHRleHQuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuY29uc3QgX3BhZFRleHQgPSAodGV4dCkgPT4gYCAke3RleHR9IGA7XG5leHBvcnRzLl9wYWRUZXh0ID0gX3BhZFRleHQ7XG4vKipcbiAqIEZvcm1hdHMgYSB0YWJsZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5jb25zdCBfZm9ybWF0VGFibGUgPSAodGFibGUsIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCB0YWJsZUhlaWdodCA9IHRhYmxlLmdldEhlaWdodCgpO1xuICAgIGNvbnN0IHRhYmxlV2lkdGggPSB0YWJsZS5nZXRXaWR0aCgpO1xuICAgIGlmICh0YWJsZUhlaWdodCA9PT0gMCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGFibGUsXG4gICAgICAgICAgICBtYXJnaW5MZWZ0OiAnJyxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgbWFyZ2luTGVmdCA9IHRhYmxlLmdldFJvd3MoKVswXS5tYXJnaW5MZWZ0O1xuICAgIGlmICh0YWJsZVdpZHRoID09PSAwKSB7XG4gICAgICAgIGNvbnN0IHJvd3MgPSBuZXcgQXJyYXkodGFibGVIZWlnaHQpLmZpbGwobmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KFtdLCBtYXJnaW5MZWZ0LCAnJykpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGFibGU6IG5ldyB0YWJsZV8xLlRhYmxlKHJvd3MpLFxuICAgICAgICAgICAgbWFyZ2luTGVmdCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLy8gY29tcHV0ZSBjb2x1bW4gd2lkdGhzXG4gICAgY29uc3QgZGVsaW1pdGVyUm93ID0gdGFibGUuZ2V0RGVsaW1pdGVyUm93KCk7XG4gICAgY29uc3QgY29sdW1uV2lkdGhzID0gbmV3IEFycmF5KHRhYmxlV2lkdGgpLmZpbGwoMCk7XG4gICAgaWYgKGRlbGltaXRlclJvdyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGRlbGltaXRlclJvd1dpZHRoID0gZGVsaW1pdGVyUm93LmdldFdpZHRoKCk7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZGVsaW1pdGVyUm93V2lkdGg7IGorKykge1xuICAgICAgICAgICAgY29sdW1uV2lkdGhzW2pdID0gb3B0aW9ucy5taW5EZWxpbWl0ZXJXaWR0aDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYmxlSGVpZ2h0OyBpKyspIHtcbiAgICAgICAgaWYgKGRlbGltaXRlclJvdyAhPT0gdW5kZWZpbmVkICYmIGkgPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJvdyA9IHRhYmxlLmdldFJvd3MoKVtpXTtcbiAgICAgICAgY29uc3Qgcm93V2lkdGggPSByb3cuZ2V0V2lkdGgoKTtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCByb3dXaWR0aDsgaisrKSB7XG4gICAgICAgICAgICBjb2x1bW5XaWR0aHNbal0gPSBNYXRoLm1heChjb2x1bW5XaWR0aHNbal0sIGV4cG9ydHMuX2NvbXB1dGVUZXh0V2lkdGgocm93LmdldENlbGxBdChqKS5jb250ZW50LCBvcHRpb25zLnRleHRXaWR0aE9wdGlvbnMpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBnZXQgY29sdW1uIGFsaWdubWVudHNcbiAgICBjb25zdCBhbGlnbm1lbnRzID0gZGVsaW1pdGVyUm93ICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBleHBvcnRzLl9leHRlbmRBcnJheShkZWxpbWl0ZXJSb3cuZ2V0Q2VsbHMoKS5tYXAoKGNlbGwpID0+IGNlbGwuZ2V0QWxpZ25tZW50KCkpLCB0YWJsZVdpZHRoLCBcbiAgICAgICAgLy8gU2FmZSBjb252ZXJzaW9uIGJlY2F1c2UgRGVmYXVsdEFsaWdubWVudCBpcyBhIHN1YnNldCBvZiBBbGlnbm1lbnRcbiAgICAgICAgKCkgPT4gb3B0aW9ucy5kZWZhdWx0QWxpZ25tZW50KVxuICAgICAgICA6IG5ldyBBcnJheSh0YWJsZVdpZHRoKS5maWxsKG9wdGlvbnMuZGVmYXVsdEFsaWdubWVudCk7XG4gICAgLy8gZm9ybWF0XG4gICAgY29uc3Qgcm93cyA9IFtdO1xuICAgIC8vIGhlYWRlclxuICAgIGNvbnN0IGhlYWRlclJvdyA9IHRhYmxlLmdldFJvd3MoKVswXTtcbiAgICByb3dzLnB1c2gobmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KGhlYWRlclJvd1xuICAgICAgICAuZ2V0Q2VsbHMoKVxuICAgICAgICAubWFwKChjZWxsLCBqKSA9PiBuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbChleHBvcnRzLl9wYWRUZXh0KGV4cG9ydHMuX2FsaWduVGV4dChjZWxsLmNvbnRlbnQsIGNvbHVtbldpZHRoc1tqXSwgb3B0aW9ucy5oZWFkZXJBbGlnbm1lbnQgPT09IGFsaWdubWVudF8xLkhlYWRlckFsaWdubWVudC5GT0xMT1dcbiAgICAgICAgPyBhbGlnbm1lbnRzW2pdID09PSBhbGlnbm1lbnRfMS5BbGlnbm1lbnQuTk9ORVxuICAgICAgICAgICAgPyBvcHRpb25zLmRlZmF1bHRBbGlnbm1lbnRcbiAgICAgICAgICAgIDogYWxpZ25tZW50c1tqXVxuICAgICAgICA6IG9wdGlvbnMuaGVhZGVyQWxpZ25tZW50LCBvcHRpb25zLnRleHRXaWR0aE9wdGlvbnMpKSkpLCBtYXJnaW5MZWZ0LCAnJykpO1xuICAgIC8vIGRlbGltaXRlclxuICAgIGlmIChkZWxpbWl0ZXJSb3cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByb3dzLnB1c2gobmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KGRlbGltaXRlclJvd1xuICAgICAgICAgICAgLmdldENlbGxzKClcbiAgICAgICAgICAgIC5tYXAoKGNlbGwsIGopID0+IG5ldyB0YWJsZV9jZWxsXzEuVGFibGVDZWxsKGV4cG9ydHMuX2RlbGltaXRlclRleHQoYWxpZ25tZW50c1tqXSwgY29sdW1uV2lkdGhzW2pdKSkpLCBtYXJnaW5MZWZ0LCAnJykpO1xuICAgIH1cbiAgICAvLyBib2R5XG4gICAgZm9yIChsZXQgaSA9IGRlbGltaXRlclJvdyAhPT0gdW5kZWZpbmVkID8gMiA6IDE7IGkgPCB0YWJsZUhlaWdodDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHJvdyA9IHRhYmxlLmdldFJvd3MoKVtpXTtcbiAgICAgICAgcm93cy5wdXNoKG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdyhyb3dcbiAgICAgICAgICAgIC5nZXRDZWxscygpXG4gICAgICAgICAgICAubWFwKChjZWxsLCBqKSA9PiBuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbChleHBvcnRzLl9wYWRUZXh0KGV4cG9ydHMuX2FsaWduVGV4dChjZWxsLmNvbnRlbnQsIGNvbHVtbldpZHRoc1tqXSwgYWxpZ25tZW50c1tqXSA9PT0gYWxpZ25tZW50XzEuQWxpZ25tZW50Lk5PTkVcbiAgICAgICAgICAgID8gb3B0aW9ucy5kZWZhdWx0QWxpZ25tZW50XG4gICAgICAgICAgICA6IGFsaWdubWVudHNbal0sIG9wdGlvbnMudGV4dFdpZHRoT3B0aW9ucykpKSksIG1hcmdpbkxlZnQsICcnKSk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHRhYmxlOiBuZXcgdGFibGVfMS5UYWJsZShyb3dzKSxcbiAgICAgICAgbWFyZ2luTGVmdCxcbiAgICB9O1xufTtcbmV4cG9ydHMuX2Zvcm1hdFRhYmxlID0gX2Zvcm1hdFRhYmxlO1xuLyoqXG4gKiBGb3JtYXRzIGEgdGFibGUgd2Vha2x5LlxuICogUm93cyBhcmUgZm9ybWF0dGVkIGluZGVwZW5kZW50bHkgdG8gZWFjaCBvdGhlciwgY2VsbCBjb250ZW50cyBhcmUganVzdCB0cmltbWVkIGFuZCBub3QgYWxpZ25lZC5cbiAqIFRoaXMgaXMgdXNlZnVsIHdoZW4gdXNpbmcgYSBub24tbW9ub3NwYWNlZCBmb250IG9yIGRlYWxpbmcgd2l0aCB3aWRlIHRhYmxlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5jb25zdCBfd2Vha0Zvcm1hdFRhYmxlID0gKHRhYmxlLCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3QgdGFibGVIZWlnaHQgPSB0YWJsZS5nZXRIZWlnaHQoKTtcbiAgICBjb25zdCB0YWJsZVdpZHRoID0gdGFibGUuZ2V0V2lkdGgoKTtcbiAgICBpZiAodGFibGVIZWlnaHQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgICAgbWFyZ2luTGVmdDogJycsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IG1hcmdpbkxlZnQgPSB0YWJsZS5nZXRSb3dzKClbMF0ubWFyZ2luTGVmdDtcbiAgICBpZiAodGFibGVXaWR0aCA9PT0gMCkge1xuICAgICAgICBjb25zdCByb3dzID0gbmV3IEFycmF5KHRhYmxlSGVpZ2h0KS5maWxsKG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdyhbXSwgbWFyZ2luTGVmdCwgJycpKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRhYmxlOiBuZXcgdGFibGVfMS5UYWJsZShyb3dzKSxcbiAgICAgICAgICAgIG1hcmdpbkxlZnQsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IGRlbGltaXRlclJvdyA9IHRhYmxlLmdldERlbGltaXRlclJvdygpO1xuICAgIC8vIGZvcm1hdFxuICAgIGNvbnN0IHJvd3MgPSBbXTtcbiAgICAvLyBoZWFkZXJcbiAgICBjb25zdCBoZWFkZXJSb3cgPSB0YWJsZS5nZXRSb3dzKClbMF07XG4gICAgcm93cy5wdXNoKG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdyhoZWFkZXJSb3cuZ2V0Q2VsbHMoKS5tYXAoKGNlbGwpID0+IG5ldyB0YWJsZV9jZWxsXzEuVGFibGVDZWxsKGV4cG9ydHMuX3BhZFRleHQoY2VsbC5jb250ZW50KSkpLCBtYXJnaW5MZWZ0LCAnJykpO1xuICAgIC8vIGRlbGltaXRlclxuICAgIGlmIChkZWxpbWl0ZXJSb3cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByb3dzLnB1c2gobmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KGRlbGltaXRlclJvd1xuICAgICAgICAgICAgLmdldENlbGxzKClcbiAgICAgICAgICAgIC5tYXAoKGNlbGwpID0+IG5ldyB0YWJsZV9jZWxsXzEuVGFibGVDZWxsKGV4cG9ydHMuX2RlbGltaXRlclRleHQoY2VsbC5nZXRBbGlnbm1lbnQoKSwgb3B0aW9ucy5taW5EZWxpbWl0ZXJXaWR0aCkpKSwgbWFyZ2luTGVmdCwgJycpKTtcbiAgICB9XG4gICAgLy8gYm9keVxuICAgIGZvciAobGV0IGkgPSBkZWxpbWl0ZXJSb3cgIT09IHVuZGVmaW5lZCA/IDIgOiAxOyBpIDwgdGFibGVIZWlnaHQ7IGkrKykge1xuICAgICAgICBjb25zdCByb3cgPSB0YWJsZS5nZXRSb3dzKClbaV07XG4gICAgICAgIHJvd3MucHVzaChuZXcgdGFibGVfcm93XzEuVGFibGVSb3cocm93LmdldENlbGxzKCkubWFwKChjZWxsKSA9PiBuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbChleHBvcnRzLl9wYWRUZXh0KGNlbGwuY29udGVudCkpKSwgbWFyZ2luTGVmdCwgJycpKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdGFibGU6IG5ldyB0YWJsZV8xLlRhYmxlKHJvd3MpLFxuICAgICAgICBtYXJnaW5MZWZ0LFxuICAgIH07XG59O1xuZXhwb3J0cy5fd2Vha0Zvcm1hdFRhYmxlID0gX3dlYWtGb3JtYXRUYWJsZTtcbi8qKlxuICogUmVwcmVzZW50cyB0YWJsZSBmb3JtYXQgdHlwZS5cbiAqXG4gKiAtIGBGb3JtYXRUeXBlLk5PUk1BTGAgLSBGb3JtYXRzIHRhYmxlIG5vcm1hbGx5LlxuICogLSBgRm9ybWF0VHlwZS5XRUFLYCAtIEZvcm1hdHMgdGFibGUgd2Vha2x5LCByb3dzIGFyZSBmb3JtYXR0ZWQgaW5kZXBlbmRlbnRseSB0byBlYWNoIG90aGVyLCBjZWxsXG4gKiAgIGNvbnRlbnRzIGFyZSBqdXN0IHRyaW1tZWQgYW5kIG5vdCBhbGlnbmVkLlxuICovXG52YXIgRm9ybWF0VHlwZTtcbihmdW5jdGlvbiAoRm9ybWF0VHlwZSkge1xuICAgIEZvcm1hdFR5cGVbXCJOT1JNQUxcIl0gPSBcIm5vcm1hbFwiO1xuICAgIEZvcm1hdFR5cGVbXCJXRUFLXCJdID0gXCJ3ZWFrXCI7XG59KShGb3JtYXRUeXBlID0gZXhwb3J0cy5Gb3JtYXRUeXBlIHx8IChleHBvcnRzLkZvcm1hdFR5cGUgPSB7fSkpO1xuLyoqXG4gKiBGb3JtYXRzIGEgdGFibGUuXG4gKlxuICogQHByaXZhdGVcbiAqXG4gKiBAdGhyb3dzIHtFcnJvcn0gVW5rbm93biBmb3JtYXQgdHlwZS5cbiAqL1xuY29uc3QgZm9ybWF0VGFibGUgPSAodGFibGUsIG9wdGlvbnMpID0+IHtcbiAgICBzd2l0Y2ggKG9wdGlvbnMuZm9ybWF0VHlwZSkge1xuICAgICAgICBjYXNlIEZvcm1hdFR5cGUuTk9STUFMOlxuICAgICAgICAgICAgcmV0dXJuIGV4cG9ydHMuX2Zvcm1hdFRhYmxlKHRhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgY2FzZSBGb3JtYXRUeXBlLldFQUs6XG4gICAgICAgICAgICByZXR1cm4gZXhwb3J0cy5fd2Vha0Zvcm1hdFRhYmxlKHRhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBmb3JtYXQgdHlwZTogJyArIG9wdGlvbnMuZm9ybWF0VHlwZSk7XG4gICAgfVxufTtcbmV4cG9ydHMuZm9ybWF0VGFibGUgPSBmb3JtYXRUYWJsZTtcbi8qKlxuICogQWx0ZXJzIGEgY29sdW1uJ3MgYWxpZ25tZW50IG9mIGEgdGFibGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB0YWJsZSAtIEEgY29tcGxldGVkIG5vbi1lbXB0eSB0YWJsZS5cbiAqIEBwYXJhbSBjb2x1bW5JbmRleCAtIEFuIGluZGV4IG9mIHRoZSBjb2x1bW4uXG4gKiBAcGFyYW0gYWxpZ25tZW50IC0gQSBuZXcgYWxpZ25tZW50IG9mIHRoZSBjb2x1bW4uXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCBjb250YWluaW5nIG9wdGlvbnMgZm9yIGNvbXBsZXRpb24uXG4gKiBAcmV0dXJucyB7VGFibGV9IEFuIGFsdGVyZWQgdGFibGUgb2JqZWN0LlxuICogSWYgdGhlIGNvbHVtbiBpbmRleCBpcyBvdXQgb2YgcmFuZ2UsIHJldHVybnMgdGhlIG9yaWdpbmFsIHRhYmxlLlxuICovXG5jb25zdCBhbHRlckFsaWdubWVudCA9ICh0YWJsZSwgY29sdW1uSW5kZXgsIGFsaWdubWVudCwgb3B0aW9ucykgPT4ge1xuICAgIGlmICh0YWJsZS5nZXRIZWlnaHQoKSA8IDEpIHtcbiAgICAgICAgcmV0dXJuIHRhYmxlO1xuICAgIH1cbiAgICBjb25zdCBkZWxpbWl0ZXJSb3cgPSB0YWJsZS5nZXRSb3dzKClbMV07XG4gICAgaWYgKGNvbHVtbkluZGV4IDwgMCB8fCBkZWxpbWl0ZXJSb3cuZ2V0V2lkdGgoKSAtIDEgPCBjb2x1bW5JbmRleCkge1xuICAgICAgICByZXR1cm4gdGFibGU7XG4gICAgfVxuICAgIGNvbnN0IGRlbGltaXRlckNlbGxzID0gZGVsaW1pdGVyUm93LmdldENlbGxzKCk7XG4gICAgZGVsaW1pdGVyQ2VsbHNbY29sdW1uSW5kZXhdID0gbmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoZXhwb3J0cy5fZGVsaW1pdGVyVGV4dChhbGlnbm1lbnQsIG9wdGlvbnMubWluRGVsaW1pdGVyV2lkdGgpKTtcbiAgICBjb25zdCByb3dzID0gdGFibGUuZ2V0Um93cygpO1xuICAgIHJvd3NbMV0gPSBuZXcgdGFibGVfcm93XzEuVGFibGVSb3coZGVsaW1pdGVyQ2VsbHMsIGRlbGltaXRlclJvdy5tYXJnaW5MZWZ0LCBkZWxpbWl0ZXJSb3cubWFyZ2luUmlnaHQpO1xuICAgIHJldHVybiBuZXcgdGFibGVfMS5UYWJsZShyb3dzKTtcbn07XG5leHBvcnRzLmFsdGVyQWxpZ25tZW50ID0gYWx0ZXJBbGlnbm1lbnQ7XG4vKipcbiAqIEluc2VydHMgYSByb3cgdG8gYSB0YWJsZS5cbiAqIFRoZSByb3cgaXMgYWx3YXlzIGluc2VydGVkIGFmdGVyIHRoZSBoZWFkZXIgYW5kIHRoZSBkZWxpbWl0ZXIgcm93cywgZXZlbiBpZiB0aGUgaW5kZXggc3BlY2lmaWVzXG4gKiB0aGUgaGVhZGVyIG9yIHRoZSBkZWxpbWl0ZXIuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB0YWJsZSAtIEEgY29tcGxldGVkIG5vbi1lbXB0eSB0YWJsZS5cbiAqIEBwYXJhbSByb3dJbmRleCAtIEFuIHJvdyBpbmRleCBhdCB3aGljaCBhIG5ldyByb3cgd2lsbCBiZSBpbnNlcnRlZC5cbiAqIEBwYXJhbSByb3cgLSBBIHRhYmxlIHJvdyB0byBiZSBpbnNlcnRlZC5cbiAqIEByZXR1cm5zIEFuIGFsdGVyZWQgdGFibGUgb2JlamN0LlxuICovXG5jb25zdCBpbnNlcnRSb3cgPSAodGFibGUsIHJvd0luZGV4LCByb3cpID0+IHtcbiAgICBjb25zdCByb3dzID0gdGFibGUuZ2V0Um93cygpO1xuICAgIHJvd3Muc3BsaWNlKE1hdGgubWF4KHJvd0luZGV4LCAyKSwgMCwgcm93KTtcbiAgICByZXR1cm4gbmV3IHRhYmxlXzEuVGFibGUocm93cyk7XG59O1xuZXhwb3J0cy5pbnNlcnRSb3cgPSBpbnNlcnRSb3c7XG4vKipcbiAqIERlbGV0ZXMgYSByb3cgaW4gYSB0YWJsZS5cbiAqIElmIHRoZSBpbmRleCBzcGVjaWZpZXMgdGhlIGhlYWRlciByb3csIHRoZSBjZWxscyBhcmUgZW1wdGllZCBidXQgdGhlIHJvdyB3aWxsIG5vdCBiZSByZW1vdmVkLlxuICogSWYgdGhlIGluZGV4IHNwZWNpZmllcyB0aGUgZGVsaW1pdGVyIHJvdywgaXQgZG9lcyBub3RoaW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gdGFibGUgLSBBIGNvbXBsZXRlZCBub24tZW1wdHkgdGFibGUuXG4gKiBAcGFyYW0gcm93SW5kZXggLSBBbiBpbmRleCBvZiB0aGUgcm93IHRvIGJlIGRlbGV0ZWQuXG4gKiBAcmV0dXJucyBBbiBhbHRlcmVkIHRhYmxlIG9iZWpjdC5cbiAqL1xuY29uc3QgZGVsZXRlUm93ID0gKHRhYmxlLCByb3dJbmRleCkgPT4ge1xuICAgIGlmIChyb3dJbmRleCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gdGFibGU7XG4gICAgfVxuICAgIGNvbnN0IHJvd3MgPSB0YWJsZS5nZXRSb3dzKCk7XG4gICAgaWYgKHJvd0luZGV4ID09PSAwKSB7XG4gICAgICAgIGNvbnN0IGhlYWRlclJvdyA9IHJvd3NbMF07XG4gICAgICAgIHJvd3NbMF0gPSBuZXcgdGFibGVfcm93XzEuVGFibGVSb3cobmV3IEFycmF5KGhlYWRlclJvdy5nZXRXaWR0aCgpKS5maWxsKG5ldyB0YWJsZV9jZWxsXzEuVGFibGVDZWxsKCcnKSksIGhlYWRlclJvdy5tYXJnaW5MZWZ0LCBoZWFkZXJSb3cubWFyZ2luUmlnaHQpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcm93cy5zcGxpY2Uocm93SW5kZXgsIDEpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IHRhYmxlXzEuVGFibGUocm93cyk7XG59O1xuZXhwb3J0cy5kZWxldGVSb3cgPSBkZWxldGVSb3c7XG4vKipcbiAqIE1vdmVzIGEgcm93IGF0IHRoZSBpbmRleCB0byB0aGUgc3BlY2lmaWVkIGRlc3RpbmF0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gdGFibGUgLSBBIGNvbXBsZXRlZCBub24tZW1wdHkgdGFibGUuXG4gKiBAcGFyYW0gcm93SW5kZXggLSBJbmRleCBvZiB0aGUgcm93IHRvIGJlIG1vdmVkLlxuICogQHBhcmFtIGRlc3RJbmRleCAtIEluZGV4IG9mIHRoZSBkZXN0aW5hdGlvbi5cbiAqIEByZXR1cm5zIEFuIGFsdGVyZWQgdGFibGUgb2JqZWN0LlxuICovXG5jb25zdCBtb3ZlUm93ID0gKHRhYmxlLCByb3dJbmRleCwgZGVzdEluZGV4KSA9PiB7XG4gICAgaWYgKHJvd0luZGV4IDw9IDEgfHwgZGVzdEluZGV4IDw9IDEgfHwgcm93SW5kZXggPT09IGRlc3RJbmRleCkge1xuICAgICAgICByZXR1cm4gdGFibGU7XG4gICAgfVxuICAgIGNvbnN0IHJvd3MgPSB0YWJsZS5nZXRSb3dzKCk7XG4gICAgY29uc3Qgcm93ID0gcm93c1tyb3dJbmRleF07XG4gICAgcm93cy5zcGxpY2Uocm93SW5kZXgsIDEpO1xuICAgIHJvd3Muc3BsaWNlKGRlc3RJbmRleCwgMCwgcm93KTtcbiAgICByZXR1cm4gbmV3IHRhYmxlXzEuVGFibGUocm93cyk7XG59O1xuZXhwb3J0cy5tb3ZlUm93ID0gbW92ZVJvdztcbi8qKlxuICogSW5zZXJ0cyBhIGNvbHVtbiB0byBhIHRhYmxlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gdGFibGUgLSBBIGNvbXBsZXRlZCBub24tZW1wdHkgdGFibGUuXG4gKiBAcGFyYW0gY29sdW1uSW5kZXggLSBBbiBjb2x1bW4gaW5kZXggYXQgd2hpY2ggdGhlIG5ldyBjb2x1bW4gd2lsbCBiZSBpbnNlcnRlZC5cbiAqIEBwYXJhbSBjb2x1bW4gLSBBbiBhcnJheSBvZiBjZWxscy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgb3B0aW9ucyBmb3IgY29tcGxldGlvbi5cbiAqIEByZXR1cm5zIEFuIGFsdGVyZWQgdGFibGUgb2JlamN0LlxuICovXG5jb25zdCBpbnNlcnRDb2x1bW4gPSAodGFibGUsIGNvbHVtbkluZGV4LCBjb2x1bW4sIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCByb3dzID0gdGFibGUuZ2V0Um93cygpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCByb3cgPSByb3dzW2ldO1xuICAgICAgICBjb25zdCBjZWxscyA9IHJvd3NbaV0uZ2V0Q2VsbHMoKTtcbiAgICAgICAgY29uc3QgY2VsbCA9IGkgPT09IDFcbiAgICAgICAgICAgID8gbmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoZXhwb3J0cy5fZGVsaW1pdGVyVGV4dChhbGlnbm1lbnRfMS5BbGlnbm1lbnQuTk9ORSwgb3B0aW9ucy5taW5EZWxpbWl0ZXJXaWR0aCkpXG4gICAgICAgICAgICA6IGNvbHVtbltpID4gMSA/IGkgLSAxIDogaV07XG4gICAgICAgIGNlbGxzLnNwbGljZShjb2x1bW5JbmRleCwgMCwgY2VsbCk7XG4gICAgICAgIHJvd3NbaV0gPSBuZXcgdGFibGVfcm93XzEuVGFibGVSb3coY2VsbHMsIHJvdy5tYXJnaW5MZWZ0LCByb3cubWFyZ2luUmlnaHQpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IHRhYmxlXzEuVGFibGUocm93cyk7XG59O1xuZXhwb3J0cy5pbnNlcnRDb2x1bW4gPSBpbnNlcnRDb2x1bW47XG4vKipcbiAqIERlbGV0ZXMgYSBjb2x1bW4gaW4gYSB0YWJsZS5cbiAqIElmIHRoZXJlIHdpbGwgYmUgbm8gY29sdW1ucyBhZnRlciB0aGUgZGVsZXRpb24sIHRoZSBjZWxscyBhcmUgZW1wdGllZCBidXQgdGhlIGNvbHVtbiB3aWxsIG5vdCBiZVxuICogcmVtb3ZlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHRhYmxlIC0gQSBjb21wbGV0ZWQgbm9uLWVtcHR5IHRhYmxlLlxuICogQHBhcmFtIGNvbHVtbkluZGV4IC0gQW4gaW5kZXggb2YgdGhlIGNvbHVtbiB0byBiZSBkZWxldGVkLlxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3QgY29udGFpbmluZyBvcHRpb25zIGZvciBjb21wbGV0aW9uLlxuICogQHJldHVybnMgQW4gYWx0ZXJlZCB0YWJsZSBvYmplY3QuXG4gKi9cbmNvbnN0IGRlbGV0ZUNvbHVtbiA9ICh0YWJsZSwgY29sdW1uSW5kZXgsIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCByb3dzID0gdGFibGUuZ2V0Um93cygpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCByb3cgPSByb3dzW2ldO1xuICAgICAgICBsZXQgY2VsbHMgPSByb3cuZ2V0Q2VsbHMoKTtcbiAgICAgICAgaWYgKGNlbGxzLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgICAgICBjZWxscyA9IFtcbiAgICAgICAgICAgICAgICBuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbChpID09PSAxXG4gICAgICAgICAgICAgICAgICAgID8gZXhwb3J0cy5fZGVsaW1pdGVyVGV4dChhbGlnbm1lbnRfMS5BbGlnbm1lbnQuTk9ORSwgb3B0aW9ucy5taW5EZWxpbWl0ZXJXaWR0aClcbiAgICAgICAgICAgICAgICAgICAgOiAnJyksXG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY2VsbHMuc3BsaWNlKGNvbHVtbkluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgICByb3dzW2ldID0gbmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KGNlbGxzLCByb3cubWFyZ2luTGVmdCwgcm93Lm1hcmdpblJpZ2h0KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyB0YWJsZV8xLlRhYmxlKHJvd3MpO1xufTtcbmV4cG9ydHMuZGVsZXRlQ29sdW1uID0gZGVsZXRlQ29sdW1uO1xuLyoqXG4gKiBNb3ZlcyBhIGNvbHVtbiBhdCB0aGUgaW5kZXggdG8gdGhlIHNwZWNpZmllZCBkZXN0aW5hdGlvbi5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHRhYmxlIC0gQSBjb21wbGV0ZWQgbm9uLWVtcHR5IHRhYmxlLlxuICogQHBhcmFtIGNvbHVtbkluZGV4IC0gSW5kZXggb2YgdGhlIGNvbHVtbiB0byBiZSBtb3ZlZC5cbiAqIEBwYXJhbSBkZXN0SW5kZXggLSBJbmRleCBvZiB0aGUgZGVzdGluYXRpb24uXG4gKiBAcmV0dXJucyBBbiBhbHRlcmVkIHRhYmxlIG9iamVjdC5cbiAqL1xuY29uc3QgbW92ZUNvbHVtbiA9ICh0YWJsZSwgY29sdW1uSW5kZXgsIGRlc3RJbmRleCkgPT4ge1xuICAgIGlmIChjb2x1bW5JbmRleCA9PT0gZGVzdEluZGV4KSB7XG4gICAgICAgIHJldHVybiB0YWJsZTtcbiAgICB9XG4gICAgY29uc3Qgcm93cyA9IHRhYmxlLmdldFJvd3MoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qgcm93ID0gcm93c1tpXTtcbiAgICAgICAgY29uc3QgY2VsbHMgPSByb3cuZ2V0Q2VsbHMoKTtcbiAgICAgICAgY29uc3QgY2VsbCA9IGNlbGxzW2NvbHVtbkluZGV4XTtcbiAgICAgICAgY2VsbHMuc3BsaWNlKGNvbHVtbkluZGV4LCAxKTtcbiAgICAgICAgY2VsbHMuc3BsaWNlKGRlc3RJbmRleCwgMCwgY2VsbCk7XG4gICAgICAgIHJvd3NbaV0gPSBuZXcgdGFibGVfcm93XzEuVGFibGVSb3coY2VsbHMsIHJvdy5tYXJnaW5MZWZ0LCByb3cubWFyZ2luUmlnaHQpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IHRhYmxlXzEuVGFibGUocm93cyk7XG59O1xuZXhwb3J0cy5tb3ZlQ29sdW1uID0gbW92ZUNvbHVtbjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5zaG9ydGVzdEVkaXRTY3JpcHQgPSBleHBvcnRzLmFwcGx5RWRpdFNjcmlwdCA9IGV4cG9ydHMuX2FwcGx5Q29tbWFuZCA9IGV4cG9ydHMuRGVsZXRlID0gZXhwb3J0cy5JbnNlcnQgPSB2b2lkIDA7XG4vKipcbiAqIFRoZSBgSW5zZXJ0YCBjbGFzcyByZXByZXNlbnRzIGFuIGluc2VydGlvbiBvZiBhIGxpbmUuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuY2xhc3MgSW5zZXJ0IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdHMgYSBuZXcgYEluc2VydGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHJvdyAtIFJvdyBpbmRleCwgc3RhcnRzIGZyb20gYDBgLlxuICAgICAqIEBwYXJhbSBsaW5lIC0gQSBzdHJpbmcgdG8gYmUgaW5zZXJ0ZWQgYXQgdGhlIHJvdy5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihyb3csIGxpbmUpIHtcbiAgICAgICAgdGhpcy5yb3cgPSByb3c7XG4gICAgICAgIHRoaXMubGluZSA9IGxpbmU7XG4gICAgfVxufVxuZXhwb3J0cy5JbnNlcnQgPSBJbnNlcnQ7XG4vKipcbiAqIFRoZSBgRGVsZXRlYCBjbGFzcyByZXByZXNlbnRzIGEgZGVsZXRpb24gb2YgYSBsaW5lLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmNsYXNzIERlbGV0ZSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBgRGVsZXRlYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm93IC0gUm93IGluZGV4LCBzdGFydHMgZnJvbSBgMGAuXG4gICAgICovXG4gICAgY29uc3RydWN0b3Iocm93KSB7XG4gICAgICAgIHRoaXMucm93ID0gcm93O1xuICAgIH1cbn1cbmV4cG9ydHMuRGVsZXRlID0gRGVsZXRlO1xuLyoqXG4gKiBBcHBsaWVzIGEgY29tbWFuZCB0byB0aGUgdGV4dCBlZGl0b3IuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB0ZXh0RWRpdG9yIC0gQW4gaW50ZXJmYWNlIHRvIHRoZSB0ZXh0IGVkaXRvci5cbiAqIEBwYXJhbSBjb21tYW5kIC0gQSBjb21tYW5kLlxuICogQHBhcmFtIHJvd09mZnNldCAtIE9mZnNldCB0byB0aGUgcm93IGluZGV4IG9mIHRoZSBjb21tYW5kLlxuICovXG5jb25zdCBfYXBwbHlDb21tYW5kID0gKHRleHRFZGl0b3IsIGNvbW1hbmQsIHJvd09mZnNldCkgPT4ge1xuICAgIGlmIChjb21tYW5kIGluc3RhbmNlb2YgSW5zZXJ0KSB7XG4gICAgICAgIHRleHRFZGl0b3IuaW5zZXJ0TGluZShyb3dPZmZzZXQgKyBjb21tYW5kLnJvdywgY29tbWFuZC5saW5lKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY29tbWFuZCBpbnN0YW5jZW9mIERlbGV0ZSkge1xuICAgICAgICB0ZXh0RWRpdG9yLmRlbGV0ZUxpbmUocm93T2Zmc2V0ICsgY29tbWFuZC5yb3cpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGNvbW1hbmQnKTtcbiAgICB9XG59O1xuZXhwb3J0cy5fYXBwbHlDb21tYW5kID0gX2FwcGx5Q29tbWFuZDtcbi8qKlxuICogQXBwbHkgYW4gZWRpdCBzY3JpcHQgKGFycmF5IG9mIGNvbW1hbmRzKSB0byB0aGUgdGV4dCBlZGl0b3IuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB0ZXh0RWRpdG9yIC0gQW4gaW50ZXJmYWNlIHRvIHRoZSB0ZXh0IGVkaXRvci5cbiAqIEBwYXJhbSBzY3JpcHQgLSBBbiBhcnJheSBvZiBjb21tYW5kcy5cbiAqIFRoZSBjb21tYW5kcyBhcmUgYXBwbGllZCBzZXF1ZW50aWFsbHkgaW4gdGhlIG9yZGVyIG9mIHRoZSBhcnJheS5cbiAqIEBwYXJhbSByb3dPZmZzZXQgLSBPZmZzZXQgdG8gdGhlIHJvdyBpbmRleCBvZiB0aGUgY29tbWFuZHMuXG4gKi9cbmNvbnN0IGFwcGx5RWRpdFNjcmlwdCA9ICh0ZXh0RWRpdG9yLCBzY3JpcHQsIHJvd09mZnNldCkgPT4ge1xuICAgIGZvciAoY29uc3QgY29tbWFuZCBvZiBzY3JpcHQpIHtcbiAgICAgICAgZXhwb3J0cy5fYXBwbHlDb21tYW5kKHRleHRFZGl0b3IsIGNvbW1hbmQsIHJvd09mZnNldCk7XG4gICAgfVxufTtcbmV4cG9ydHMuYXBwbHlFZGl0U2NyaXB0ID0gYXBwbHlFZGl0U2NyaXB0O1xuLyoqXG4gKiBMaW5rZWQgbGlzdCB1c2VkIHRvIHJlbWVtYmVyIGVkaXQgc2NyaXB0LlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmNsYXNzIElMaXN0IHtcbiAgICBnZXQgY2FyKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cbiAgICBnZXQgY2RyKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cbiAgICBpc0VtcHR5KCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cbiAgICB1bnNoaWZ0KHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ29ucyh2YWx1ZSwgdGhpcyk7XG4gICAgfVxuICAgIHRvQXJyYXkoKSB7XG4gICAgICAgIGNvbnN0IGFyciA9IFtdO1xuICAgICAgICBsZXQgcmVzdCA9IHRoaXM7XG4gICAgICAgIHdoaWxlICghcmVzdC5pc0VtcHR5KCkpIHtcbiAgICAgICAgICAgIGFyci5wdXNoKHJlc3QuY2FyKTtcbiAgICAgICAgICAgIHJlc3QgPSByZXN0LmNkcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXJyO1xuICAgIH1cbn1cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuY2xhc3MgTmlsIGV4dGVuZHMgSUxpc3Qge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cbiAgICBnZXQgY2FyKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VtcHR5IGxpc3QnKTtcbiAgICB9XG4gICAgZ2V0IGNkcigpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbXB0eSBsaXN0Jyk7XG4gICAgfVxuICAgIGlzRW1wdHkoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn1cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuY2xhc3MgQ29ucyBleHRlbmRzIElMaXN0IHtcbiAgICBjb25zdHJ1Y3RvcihjYXIsIGNkcikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLl9jYXIgPSBjYXI7XG4gICAgICAgIHRoaXMuX2NkciA9IGNkcjtcbiAgICB9XG4gICAgZ2V0IGNhcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhcjtcbiAgICB9XG4gICAgZ2V0IGNkcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NkcjtcbiAgICB9XG4gICAgaXNFbXB0eSgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbi8qKlxuICogQ29tcHV0ZXMgdGhlIHNob3J0ZXN0IGVkaXQgc2NyaXB0IGJldHdlZW4gdHdvIGFycmF5cyBvZiBzdHJpbmdzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gZnJvbSAtIEFuIGFycmF5IG9mIHN0cmluZyB0aGUgZWRpdCBzdGFydHMgZnJvbS5cbiAqIEBwYXJhbSB0byAtIEFuIGFycmF5IG9mIHN0cmluZyB0aGUgZWRpdCBnb2VzIHRvLlxuICogQHBhcmFtIFtsaW1pdD0tMV0gLSBVcHBlciBsaW1pdCBvZiBlZGl0IGRpc3RhbmNlIHRvIGJlIHNlYXJjaGVkLlxuICogSWYgbmVnYXRpdmUsIHRoZXJlIGlzIG5vIGxpbWl0LlxuICogQHJldHVybnMgVGhlIHNob3J0ZXN0IGVkaXQgc2NyaXB0IHRoYXQgdHVybnMgYGZyb21gIGludG8gYHRvYDtcbiAqIGB1bmRlZmluZWRgIGlmIG5vIGVkaXQgc2NyaXB0IGlzIGZvdW5kIGluIHRoZSBnaXZlbiByYW5nZS5cbiAqL1xuY29uc3Qgc2hvcnRlc3RFZGl0U2NyaXB0ID0gKGZyb20sIHRvLCBsaW1pdCA9IC0xKSA9PiB7XG4gICAgY29uc3QgZnJvbUxlbiA9IGZyb20ubGVuZ3RoO1xuICAgIGNvbnN0IHRvTGVuID0gdG8ubGVuZ3RoO1xuICAgIGNvbnN0IG1heGQgPSBsaW1pdCA+PSAwID8gTWF0aC5taW4obGltaXQsIGZyb21MZW4gKyB0b0xlbikgOiBmcm9tTGVuICsgdG9MZW47XG4gICAgY29uc3QgbWVtID0gbmV3IEFycmF5KE1hdGgubWluKG1heGQsIGZyb21MZW4pICsgTWF0aC5taW4obWF4ZCwgdG9MZW4pICsgMSk7XG4gICAgY29uc3Qgb2Zmc2V0ID0gTWF0aC5taW4obWF4ZCwgZnJvbUxlbik7XG4gICAgZm9yIChsZXQgZCA9IDA7IGQgPD0gbWF4ZDsgZCsrKSB7XG4gICAgICAgIGNvbnN0IG1pbmsgPSBkIDw9IGZyb21MZW4gPyAtZCA6IGQgLSAyICogZnJvbUxlbjtcbiAgICAgICAgY29uc3QgbWF4ayA9IGQgPD0gdG9MZW4gPyBkIDogLWQgKyAyICogdG9MZW47XG4gICAgICAgIGZvciAobGV0IGsgPSBtaW5rOyBrIDw9IG1heGs7IGsgKz0gMikge1xuICAgICAgICAgICAgbGV0IGk7XG4gICAgICAgICAgICBsZXQgc2NyaXB0O1xuICAgICAgICAgICAgaWYgKGQgPT09IDApIHtcbiAgICAgICAgICAgICAgICBpID0gMDtcbiAgICAgICAgICAgICAgICBzY3JpcHQgPSBuZXcgTmlsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChrID09PSAtZCkge1xuICAgICAgICAgICAgICAgIGkgPSBtZW1bb2Zmc2V0ICsgayArIDFdLmkgKyAxO1xuICAgICAgICAgICAgICAgIHNjcmlwdCA9IG1lbVtvZmZzZXQgKyBrICsgMV0uc2NyaXB0LnVuc2hpZnQobmV3IERlbGV0ZShpICsgaykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoayA9PT0gZCkge1xuICAgICAgICAgICAgICAgIGkgPSBtZW1bb2Zmc2V0ICsgayAtIDFdLmk7XG4gICAgICAgICAgICAgICAgc2NyaXB0ID0gbWVtW29mZnNldCArIGsgLSAxXS5zY3JpcHQudW5zaGlmdChuZXcgSW5zZXJ0KGkgKyBrIC0gMSwgdG9baSArIGsgLSAxXSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmkgPSBtZW1bb2Zmc2V0ICsgayArIDFdLmkgKyAxO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhpID0gbWVtW29mZnNldCArIGsgLSAxXS5pO1xuICAgICAgICAgICAgICAgIGlmICh2aSA+IGhpKSB7XG4gICAgICAgICAgICAgICAgICAgIGkgPSB2aTtcbiAgICAgICAgICAgICAgICAgICAgc2NyaXB0ID0gbWVtW29mZnNldCArIGsgKyAxXS5zY3JpcHQudW5zaGlmdChuZXcgRGVsZXRlKGkgKyBrKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpID0gaGk7XG4gICAgICAgICAgICAgICAgICAgIHNjcmlwdCA9IG1lbVtvZmZzZXQgKyBrIC0gMV0uc2NyaXB0LnVuc2hpZnQobmV3IEluc2VydChpICsgayAtIDEsIHRvW2kgKyBrIC0gMV0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aGlsZSAoaSA8IGZyb21MZW4gJiYgaSArIGsgPCB0b0xlbiAmJiBmcm9tW2ldID09PSB0b1tpICsga10pIHtcbiAgICAgICAgICAgICAgICBpICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoayA9PT0gdG9MZW4gLSBmcm9tTGVuICYmIGkgPT09IGZyb21MZW4pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2NyaXB0LnRvQXJyYXkoKS5yZXZlcnNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtZW1bb2Zmc2V0ICsga10gPSB7IGksIHNjcmlwdCB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59O1xuZXhwb3J0cy5zaG9ydGVzdEVkaXRTY3JpcHQgPSBzaG9ydGVzdEVkaXRTY3JpcHQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuSVRleHRFZGl0b3IgPSB2b2lkIDA7XG4vKipcbiAqIFRoZSBgSVRleHRFZGl0b3JgIHJlcHJlc2VudHMgYW4gaW50ZXJmYWNlIHRvIGEgdGV4dCBlZGl0b3IuXG4gKlxuICogQGludGVyZmFjZVxuICovXG5jbGFzcyBJVGV4dEVkaXRvciB7XG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgY3VycmVudCBjdXJzb3IgcG9zaXRpb24uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBIHBvaW50IG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIGN1cnNvciBwb3NpdGlvbi5cbiAgICAgKi9cbiAgICBnZXRDdXJzb3JQb3NpdGlvbigpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQ6IGdldEN1cnNvclBvc2l0aW9uJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGN1cnNvciBwb3NpdGlvbiB0byBhIHNwZWNpZmllZCBvbmUuXG4gICAgICovXG4gICAgc2V0Q3Vyc29yUG9zaXRpb24ocG9zKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkOiBzZXRDdXJzb3JQb3NpdGlvbicpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBzZWxlY3Rpb24gcmFuZ2UuXG4gICAgICogVGhpcyBtZXRob2QgYWxzbyBleHBlY3RzIHRoZSBjdXJzb3IgcG9zaXRpb24gdG8gYmUgbW92ZWQgYXMgdGhlIGVuZCBvZiB0aGUgc2VsZWN0aW9uIHJhbmdlLlxuICAgICAqL1xuICAgIHNldFNlbGVjdGlvblJhbmdlKHJhbmdlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkOiBzZXRTZWxlY3Rpb25SYW5nZScpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBsYXN0IHJvdyBpbmRleCBvZiB0aGUgdGV4dCBlZGl0b3IuXG4gICAgICovXG4gICAgZ2V0TGFzdFJvdygpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQ6IGdldExhc3RSb3cnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBlZGl0b3IgYWNjZXB0cyBhIHRhYmxlIGF0IGEgcm93IHRvIGJlIGVkaXR0ZWQuXG4gICAgICogSXQgc2hvdWxkIHJldHVybiBgZmFsc2VgIGlmLCBmb3IgZXhhbXBsZSwgdGhlIHJvdyBpcyBpbiBhIGNvZGUgYmxvY2sgKG5vdCBNYXJrZG93bikuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm93IC0gQSByb3cgaW5kZXggaW4gdGhlIHRleHQgZWRpdG9yLlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgdGFibGUgYXQgdGhlIHJvdyBjYW4gYmUgZWRpdHRlZC5cbiAgICAgKi9cbiAgICBhY2NlcHRzVGFibGVFZGl0KHJvdykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZDogYWNjZXB0c1RhYmxlRWRpdCcpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgbGluZSBzdHJpbmcgYXQgYSByb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm93IC0gUm93IGluZGV4LCBzdGFydHMgZnJvbSBgMGAuXG4gICAgICogQHJldHVybnMgVGhlIGxpbmUgYXQgdGhlIHNwZWNpZmllZCByb3cuXG4gICAgICogVGhlIGxpbmUgbXVzdCBub3QgY29udGFpbiBhbiBFT0wgbGlrZSBgXCJcXG5cImAgb3IgYFwiXFxyXCJgLlxuICAgICAqL1xuICAgIGdldExpbmUocm93KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkOiBnZXRMaW5lJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEluc2VydHMgYSBsaW5lIGF0IGEgc3BlY2lmaWVkIHJvdy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByb3cgLSBSb3cgaW5kZXgsIHN0YXJ0cyBmcm9tIGAwYC5cbiAgICAgKiBAcGFyYW0gbGluZSAtIEEgc3RyaW5nIHRvIGJlIGluc2VydGVkLlxuICAgICAqIFRoaXMgbXVzdCBub3QgY29udGFpbiBhbiBFT0wgbGlrZSBgXCJcXG5cImAgb3IgYFwiXFxyXCJgLlxuICAgICAqL1xuICAgIGluc2VydExpbmUocm93LCBsaW5lKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkOiBpbnNlcnRMaW5lJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIERlbGV0ZXMgYSBsaW5lIGF0IGEgc3BlY2lmaWVkIHJvdy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByb3cgLSBSb3cgaW5kZXgsIHN0YXJ0cyBmcm9tIGAwYC5cbiAgICAgKi9cbiAgICBkZWxldGVMaW5lKHJvdykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZDogZGVsZXRlTGluZScpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXBsYWNlIGxpbmVzIGluIGEgc3BlY2lmaWVkIHJhbmdlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHN0YXJ0Um93IC0gU3RhcnQgcm93IGluZGV4LCBzdGFydHMgZnJvbSBgMGAuXG4gICAgICogQHBhcmFtIGVuZFJvdyAtIEVuZCByb3cgaW5kZXguXG4gICAgICogTGluZXMgZnJvbSBgc3RhcnRSb3dgIHRvIGBlbmRSb3cgLSAxYCBpcyByZXBsYWNlZC5cbiAgICAgKiBAcGFyYW0gbGluZXMgLSBBbiBhcnJheSBvZiBzdHJpbmcuXG4gICAgICogRWFjaCBzdHJpbmdzIG11c3Qgbm90IGNvbnRhaW4gYW4gRU9MIGxpa2UgYFwiXFxuXCJgIG9yIGBcIlxcclwiYC5cbiAgICAgKi9cbiAgICByZXBsYWNlTGluZXMoc3RhcnRSb3csIGVuZFJvdywgbGluZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQ6IHJlcGxhY2VMaW5lcycpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBCYXRjaGVzIG11bHRpcGxlIG9wZXJhdGlvbnMgYXMgYSBzaW5nbGUgdW5kby9yZWRvIHN0ZXAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZnVuYyAtIEEgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBleGVjdXRlcyBzb21lIG9wZXJhdGlvbnMgb24gdGhlIHRleHQgZWRpdG9yLlxuICAgICAqL1xuICAgIHRyYW5zYWN0KGZ1bmMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQ6IHRyYW5zYWN0Jyk7XG4gICAgfVxufVxuZXhwb3J0cy5JVGV4dEVkaXRvciA9IElUZXh0RWRpdG9yO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmRlZmF1bHRPcHRpb25zID0gZXhwb3J0cy5vcHRpb25zV2l0aERlZmF1bHRzID0gdm9pZCAwO1xuY29uc3QgYWxpZ25tZW50XzEgPSByZXF1aXJlKFwiLi9hbGlnbm1lbnRcIik7XG5jb25zdCBmb3JtYXR0ZXJfMSA9IHJlcXVpcmUoXCIuL2Zvcm1hdHRlclwiKTtcbmNvbnN0IERFRkFVTFRfVEVYVF9XSURUSF9PUFRJT05TID0ge1xuICAgIG5vcm1hbGl6ZTogdHJ1ZSxcbiAgICB3aWRlQ2hhcnM6IG5ldyBTZXQoKSxcbiAgICBuYXJyb3dDaGFyczogbmV3IFNldCgpLFxuICAgIGFtYmlndW91c0FzV2lkZTogZmFsc2UsXG59O1xuY29uc3QgREVGQVVMVF9PUFRJT05TID0ge1xuICAgIGxlZnRNYXJnaW5DaGFyczogbmV3IFNldCgpLFxuICAgIGZvcm1hdFR5cGU6IGZvcm1hdHRlcl8xLkZvcm1hdFR5cGUuTk9STUFMLFxuICAgIG1pbkRlbGltaXRlcldpZHRoOiAzLFxuICAgIGRlZmF1bHRBbGlnbm1lbnQ6IGFsaWdubWVudF8xLkRlZmF1bHRBbGlnbm1lbnQuTEVGVCxcbiAgICBoZWFkZXJBbGlnbm1lbnQ6IGFsaWdubWVudF8xLkhlYWRlckFsaWdubWVudC5GT0xMT1csXG4gICAgc21hcnRDdXJzb3I6IGZhbHNlLFxufTtcbi8qKlxuICogQ3JlYXRlIGFuIE9wdGlvbnMgb2JqZWN0IGZvciB0aGUgZm9ybWF0dGVyLlxuICogVGhlIGRlZmF1bHQgdmFsdWVzIGFyZSB1c2VkIGZvciBvcHRpb25zIHRoYXQgYXJlIG5vdCBzcGVjaWZpZWQuXG4gKlxuICogVGhlIGF2YWlsYWJsZSBvcHRpb25zIGFuZCBkZWZhdWx0IHZhbHVlcyBhcmUgbGlzdGVkIGJlbG93LlxuICpcbiAqIHwgcHJvcGVydHkgbmFtZSAgICAgICB8IHR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZWZhdWx0IHZhbHVlICAgICAgICAgICAgfFxuICogfCAtLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gKiB8IGBsZWZ0TWFyZ2luQ2hhcnNgICAgfCB7QGxpbmsgU2V0fSZsdDt7QGxpbmsgc3RyaW5nfSZndDsgfCBBIHNldCBvZiBhZGRpdGlvbmFsIGxlZnQgbWFyZ2luIGNoYXJhY3RlcnMuICAgICAgICAgICAgIHwgYG5ldyBTZXQoKWAgICAgICAgICAgICAgIHxcbiAqIHwgYGZvcm1hdFR5cGVgICAgICAgICB8IHtAbGluayBGb3JtYXRUeXBlfSAgICAgICAgICAgICAgICB8IEZvcm1hdCB0eXBlLCBub3JtYWwgb3Igd2Vhay4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgRm9ybWF0VHlwZS5OT1JNQUxgICAgICAgfFxuICogfCBgbWluRGVsaW1pdGVyV2lkdGhgIHwge0BsaW5rIG51bWJlcn0gICAgICAgICAgICAgICAgICAgIHwgTWluaW11bSB3aWR0aCBvZiBkZWxpbWl0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGAzYCAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGBkZWZhdWx0QWxpZ25tZW50YCAgfCB7QGxpbmsgRGVmYXVsdEFsaWdubWVudH0gICAgICAgICAgfCBEZWZhdWx0IGFsaWdubWVudCBvZiBjb2x1bW5zLiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYERlZmF1bHRBbGlnbm1lbnQuTEVGVGAgIHxcbiAqIHwgYGhlYWRlckFsaWdubWVudGAgICB8IHtAbGluayBIZWFkZXJBbGlnbm1lbnR9ICAgICAgICAgICB8IEFsaWdubWVudCBvZiBoZWFkZXIgY2VsbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgSGVhZGVyQWxpZ25tZW50LkZPTExPV2AgfFxuICogfCBgdGV4dFdpZHRoT3B0aW9uc2AgIHwge0BsaW5rIFRleHRXaWR0aE9wdGlvbnN9ICAgICAgICAgIHwgQW4gb2JqZWN0IGNvbnRhaW5pbmcgb3B0aW9ucyBmb3IgY29tcHV0aW5nIHRleHQgd2lkdGhzLiB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGBzbWFydEN1cnNvcmAgICAgICAgfCB7QGxpbmsgYm9vbGVhbn0gICAgICAgICAgICAgICAgICAgfCBFbmFibGVzIFwiU21hcnQgQ3Vyc29yXCIgZmVhdHVyZS4gICAgICAgICAgICAgICAgICAgICAgICAgfCBgZmFsc2VgICAgICAgICAgICAgICAgICAgfFxuICpcbiAqIFRoZSBhdmFpbGFibGUgb3B0aW9ucyBmb3IgYHRleHRXaWR0aE9wdGlvbnNgIGFyZSB0aGUgZm9sbG93aW5nIG9uZXMuXG4gKlxuICogfCBwcm9wZXJ0eSBuYW1lICAgICB8IHR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGVmYXVsdCB2YWx1ZSB8XG4gKiB8IC0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tIHxcbiAqIHwgYG5vcm1hbGl6ZWAgICAgICAgfCB7QGxpbmsgYm9vbGVhbn0gICAgICAgICAgICAgICAgICAgfCBOb3JtYWxpemVzIHRleHRzIGJlZm9yZSBjb21wdXRpbmcgdGV4dCB3aWR0aHMuICAgICAgICB8IGB0cnVlYCAgICAgICAgfFxuICogfCBgd2lkZUNoYXJzYCAgICAgICB8IHtAbGluayBTZXR9Jmx0O3tAbGluayBzdHJpbmd9Jmd0OyB8IEEgc2V0IG9mIGNoYXJhY3RlcnMgdGhhdCBzaG91bGQgYmUgdHJlYXRlZCBhcyB3aWRlLiAgIHwgYG5ldyBTZXQoKWAgICB8XG4gKiB8IGBuYXJyb3dDaGFyc2AgICAgIHwge0BsaW5rIFNldH0mbHQ7e0BsaW5rIHN0cmluZ30mZ3Q7IHwgQSBzZXQgb2YgY2hhcmFjdGVycyB0aGF0IHNob3VsZCBiZSB0cmVhdGVkIGFzIG5hcnJvdy4gfCBgbmV3IFNldCgpYCAgIHxcbiAqIHwgYGFtYmlndW91c0FzV2lkZWAgfCB7QGxpbmsgYm9vbGVhbn0gICAgICAgICAgICAgICAgICAgfCBUcmVhdHMgRWFzdCBBc2lhbiBBbWJpZ3VvdXMgY2hhcmFjdGVycyBhcyB3aWRlLiAgICAgICB8IGBmYWxzZWAgICAgICAgfFxuICpcbiAqL1xuY29uc3Qgb3B0aW9uc1dpdGhEZWZhdWx0cyA9IChvcHRpb25zKSA9PiAoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUyksIG9wdGlvbnMpLCB7IHRleHRXaWR0aE9wdGlvbnM6IG9wdGlvbnMudGV4dFdpZHRoT3B0aW9uc1xuICAgICAgICA/IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9URVhUX1dJRFRIX09QVElPTlMpLCBvcHRpb25zLnRleHRXaWR0aE9wdGlvbnMpIDogREVGQVVMVF9URVhUX1dJRFRIX09QVElPTlMgfSkpO1xuZXhwb3J0cy5vcHRpb25zV2l0aERlZmF1bHRzID0gb3B0aW9uc1dpdGhEZWZhdWx0cztcbmV4cG9ydHMuZGVmYXVsdE9wdGlvbnMgPSBleHBvcnRzLm9wdGlvbnNXaXRoRGVmYXVsdHMoe30pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlRhYmxlRWRpdG9yID0gZXhwb3J0cy5fY29tcHV0ZU5ld09mZnNldCA9IGV4cG9ydHMuX2NyZWF0ZUlzVGFibGVGb3JtdWxhUmVnZXggPSBleHBvcnRzLl9jcmVhdGVJc1RhYmxlUm93UmVnZXggPSBleHBvcnRzLlNvcnRPcmRlciA9IHZvaWQgMDtcbmNvbnN0IGVkaXRfc2NyaXB0XzEgPSByZXF1aXJlKFwiLi9lZGl0LXNjcmlwdFwiKTtcbmNvbnN0IGZvY3VzXzEgPSByZXF1aXJlKFwiLi9mb2N1c1wiKTtcbmNvbnN0IGZvcm1hdHRlcl8xID0gcmVxdWlyZShcIi4vZm9ybWF0dGVyXCIpO1xuY29uc3QgcGFyc2VyXzEgPSByZXF1aXJlKFwiLi9wYXJzZXJcIik7XG5jb25zdCBwb2ludF8xID0gcmVxdWlyZShcIi4vcG9pbnRcIik7XG5jb25zdCByYW5nZV8xID0gcmVxdWlyZShcIi4vcmFuZ2VcIik7XG5jb25zdCB0YWJsZV8xID0gcmVxdWlyZShcIi4vdGFibGVcIik7XG5jb25zdCB0YWJsZV9jZWxsXzEgPSByZXF1aXJlKFwiLi90YWJsZS1jZWxsXCIpO1xuY29uc3QgdGFibGVfcm93XzEgPSByZXF1aXJlKFwiLi90YWJsZS1yb3dcIik7XG52YXIgU29ydE9yZGVyO1xuKGZ1bmN0aW9uIChTb3J0T3JkZXIpIHtcbiAgICBTb3J0T3JkZXJbXCJBc2NlbmRpbmdcIl0gPSBcImFzY2VuZGluZ1wiO1xuICAgIFNvcnRPcmRlcltcIkRlc2NlbmRpbmdcIl0gPSBcImRlc2NlbmRpbmdcIjtcbn0pKFNvcnRPcmRlciA9IGV4cG9ydHMuU29ydE9yZGVyIHx8IChleHBvcnRzLlNvcnRPcmRlciA9IHt9KSk7XG4vKipcbiAqIENyZWF0ZXMgYSByZWd1bGFyIGV4cHJlc3Npb24gb2JqZWN0IHRoYXQgbWF0Y2hlcyBhIHRhYmxlIHJvdy5cbiAqXG4gKiBAcGFyYW0gbGVmdE1hcmdpbkNoYXJzIC0gQSBzZXQgb2YgYWRkaXRpb25hbCBsZWZ0IG1hcmdpbiBjaGFyYWN0ZXJzLlxuICogQSBwaXBlIGB8YCwgYSBiYWNrc2xhc2ggYFxcYCwgYW5kIGEgYmFja3F1b3RlIHdpbGwgYmUgaWdub3JlZC5cbiAqIEByZXR1cm5zIEEgcmVndWxhciBleHByZXNzaW9uIG9iamVjdCB0aGF0IG1hdGNoZXMgYSB0YWJsZSByb3cuXG4gKi9cbmNvbnN0IF9jcmVhdGVJc1RhYmxlUm93UmVnZXggPSAobGVmdE1hcmdpbkNoYXJzKSA9PiBuZXcgUmVnRXhwKGBeJHtwYXJzZXJfMS5tYXJnaW5SZWdleFNyYyhsZWZ0TWFyZ2luQ2hhcnMpfVxcXFx8YCwgJ3UnKTtcbmV4cG9ydHMuX2NyZWF0ZUlzVGFibGVSb3dSZWdleCA9IF9jcmVhdGVJc1RhYmxlUm93UmVnZXg7XG5jb25zdCBfY3JlYXRlSXNUYWJsZUZvcm11bGFSZWdleCA9IChsZWZ0TWFyZ2luQ2hhcnMpID0+IG5ldyBSZWdFeHAoYF4ke3BhcnNlcl8xLm1hcmdpblJlZ2V4U3JjKGxlZnRNYXJnaW5DaGFycyl9PCEtLSA/ListLT4kYCwgJ3UnKTtcbmV4cG9ydHMuX2NyZWF0ZUlzVGFibGVGb3JtdWxhUmVnZXggPSBfY3JlYXRlSXNUYWJsZUZvcm11bGFSZWdleDtcbi8qKlxuICogQ29tcHV0ZXMgbmV3IGZvY3VzIG9mZnNldCBmcm9tIGluZm9ybWF0aW9uIG9mIGNvbXBsZXRlZCBhbmQgZm9ybWF0dGVkIHRhYmxlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIGZvY3VzIC0gQSBmb2N1cy5cbiAqIEBwYXJhbSB0YWJsZSAtIEEgY29tcGxldGVkIGJ1dCBub3QgZm9ybWF0dGVkIHRhYmxlIHdpdGggb3JpZ2luYWwgY2VsbCBjb250ZW50cy5cbiAqIEBwYXJhbSBmb3JtYXR0ZWQgLSBJbmZvcm1hdGlvbiBvZiB0aGUgZm9ybWF0dGVkIHRhYmxlLlxuICogQHBhcmFtIG1vdmVkIC0gSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGZvY3VzIHBvc2l0aW9uIGlzIG1vdmVkIGJ5IGEgY29tbWFuZCBvciBub3QuXG4gKi9cbmNvbnN0IF9jb21wdXRlTmV3T2Zmc2V0ID0gKGZvY3VzLCB0YWJsZSwgZm9ybWF0dGVkLCBtb3ZlZCkgPT4ge1xuICAgIGlmIChtb3ZlZCkge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWRGb2N1c2VkQ2VsbCA9IGZvcm1hdHRlZC50YWJsZS5nZXRGb2N1c2VkQ2VsbChmb2N1cyk7XG4gICAgICAgIGlmIChmb3JtYXR0ZWRGb2N1c2VkQ2VsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkRm9jdXNlZENlbGwuY29tcHV0ZVJhd09mZnNldCgwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9jdXMuY29sdW1uIDwgMCA/IGZvcm1hdHRlZC5tYXJnaW5MZWZ0Lmxlbmd0aCA6IDA7XG4gICAgfVxuICAgIGNvbnN0IGZvY3VzZWRDZWxsID0gdGFibGUuZ2V0Rm9jdXNlZENlbGwoZm9jdXMpO1xuICAgIGNvbnN0IGZvcm1hdHRlZEZvY3VzZWRDZWxsID0gZm9ybWF0dGVkLnRhYmxlLmdldEZvY3VzZWRDZWxsKGZvY3VzKTtcbiAgICBpZiAoZm9jdXNlZENlbGwgIT09IHVuZGVmaW5lZCAmJiBmb3JtYXR0ZWRGb2N1c2VkQ2VsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRPZmZzZXQgPSBNYXRoLm1pbihmb2N1c2VkQ2VsbC5jb21wdXRlQ29udGVudE9mZnNldChmb2N1cy5vZmZzZXQpLCBmb3JtYXR0ZWRGb2N1c2VkQ2VsbC5jb250ZW50Lmxlbmd0aCk7XG4gICAgICAgIHJldHVybiBmb3JtYXR0ZWRGb2N1c2VkQ2VsbC5jb21wdXRlUmF3T2Zmc2V0KGNvbnRlbnRPZmZzZXQpO1xuICAgIH1cbiAgICByZXR1cm4gZm9jdXMuY29sdW1uIDwgMCA/IGZvcm1hdHRlZC5tYXJnaW5MZWZ0Lmxlbmd0aCA6IDA7XG59O1xuZXhwb3J0cy5fY29tcHV0ZU5ld09mZnNldCA9IF9jb21wdXRlTmV3T2Zmc2V0O1xuLyoqXG4gKiBUaGUgYFRhYmxlRWRpdG9yYCBjbGFzcyBpcyBhdCB0aGUgY2VudGVyIG9mIHRoZSBtYXJrZG93bi10YWJsZS1lZGl0b3IuXG4gKiBXaGVuIGEgY29tbWFuZCBpcyBleGVjdXRlZCwgaXQgcmVhZHMgYSB0YWJsZSBmcm9tIHRoZSB0ZXh0IGVkaXRvciwgZG9lcyBzb21lIG9wZXJhdGlvbiBvbiB0aGVcbiAqIHRhYmxlLCBhbmQgdGhlbiBhcHBseSB0aGUgcmVzdWx0IHRvIHRoZSB0ZXh0IGVkaXRvci5cbiAqXG4gKiBUbyB1c2UgdGhpcyBjbGFzcywgdGhlIHRleHQgZWRpdG9yIChvciBhbiBpbnRlcmZhY2UgdG8gaXQpIG11c3QgaW1wbGVtZW50IHtAbGluayBJVGV4dEVkaXRvcn0uXG4gKi9cbmNsYXNzIFRhYmxlRWRpdG9yIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHRhYmxlIGVkaXRvciBpbnN0YW5jZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0ZXh0RWRpdG9yIC0gQSB0ZXh0IGVkaXRvciBpbnRlcmZhY2UuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IodGV4dEVkaXRvcikge1xuICAgICAgICB0aGlzLl90ZXh0RWRpdG9yID0gdGV4dEVkaXRvcjtcbiAgICAgICAgLy8gc21hcnQgY3Vyc29yXG4gICAgICAgIHRoaXMuX3NjQWN0aXZlID0gZmFsc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlc2V0cyB0aGUgc21hcnQgY3Vyc29yLlxuICAgICAqIENhbGwgdGhpcyBtZXRob2Qgd2hlbiB0aGUgdGFibGUgZWRpdG9yIGlzIGluYWN0aXZhdGVkLlxuICAgICAqL1xuICAgIHJlc2V0U21hcnRDdXJzb3IoKSB7XG4gICAgICAgIHRoaXMuX3NjQWN0aXZlID0gZmFsc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgY3Vyc29yIGlzIGluIGEgdGFibGUgcm93LiBSZXR1cm5zIGZhbHNlIGlmIHRoZSBjdXJzb3IgaXMgaW4gYVxuICAgICAqIHRhYmxlIGZvcm11bGEgcm93IChzZWUgY3Vyc29ySXNJblRhYmxlRm9ybXVsYSkuXG4gICAgICogVGhpcyBpcyB1c2VmdWwgdG8gY2hlY2sgd2hldGhlciB0aGUgdGFibGUgZWRpdG9yIHNob3VsZCBiZSBhY3RpdmF0ZWQgb3Igbm90LlxuICAgICAqXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBjdXJzb3IgaXMgaW4gYSB0YWJsZSByb3cuXG4gICAgICovXG4gICAgY3Vyc29ySXNJblRhYmxlKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcmUgPSBleHBvcnRzLl9jcmVhdGVJc1RhYmxlUm93UmVnZXgob3B0aW9ucy5sZWZ0TWFyZ2luQ2hhcnMpO1xuICAgICAgICBjb25zdCBwb3MgPSB0aGlzLl90ZXh0RWRpdG9yLmdldEN1cnNvclBvc2l0aW9uKCk7XG4gICAgICAgIHJldHVybiAodGhpcy5fdGV4dEVkaXRvci5hY2NlcHRzVGFibGVFZGl0KHBvcy5yb3cpICYmXG4gICAgICAgICAgICByZS50ZXN0KHRoaXMuX3RleHRFZGl0b3IuZ2V0TGluZShwb3Mucm93KSkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIGN1cnNvciBpcyBpbiBhIGZvcm11bGEgcm93IGJlbG93IGEgdGFibGUuXG4gICAgICogVGhpcyBpcyB1c2VmdWwgdG8gY2hlY2sgd2hldGhlciB0aGUgdGFibGUgZWRpdG9yIHNob3VsZCBiZSBhY3RpdmF0ZWQgb3Igbm90LlxuICAgICAqXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBjdXJzb3IgaXMgaW4gYSBmb3JtdWxhIHJvdy5cbiAgICAgKi9cbiAgICBjdXJzb3JJc0luVGFibGVGb3JtdWxhKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgZm9ybXVsYVJlID0gZXhwb3J0cy5fY3JlYXRlSXNUYWJsZUZvcm11bGFSZWdleChvcHRpb25zLmxlZnRNYXJnaW5DaGFycyk7XG4gICAgICAgIGNvbnN0IHBvcyA9IHRoaXMuX3RleHRFZGl0b3IuZ2V0Q3Vyc29yUG9zaXRpb24oKTtcbiAgICAgICAgcmV0dXJuICh0aGlzLl90ZXh0RWRpdG9yLmFjY2VwdHNUYWJsZUVkaXQocG9zLnJvdykgJiZcbiAgICAgICAgICAgIGZvcm11bGFSZS50ZXN0KHRoaXMuX3RleHRFZGl0b3IuZ2V0TGluZShwb3Mucm93KSkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBGaW5kcyBhIHRhYmxlIHVuZGVyIHRoZSBjdXJyZW50IGN1cnNvciBwb3NpdGlvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHVuZGVmaW5lZCBpZiB0aGVyZSBpcyBubyB0YWJsZSBvciB0aGUgZGV0ZXJtaW5lZCBmb2N1cyBpcyBpbnZhbGlkLlxuICAgICAqL1xuICAgIF9maW5kVGFibGUob3B0aW9ucykge1xuICAgICAgICBjb25zdCByZSA9IGV4cG9ydHMuX2NyZWF0ZUlzVGFibGVSb3dSZWdleChvcHRpb25zLmxlZnRNYXJnaW5DaGFycyk7XG4gICAgICAgIGNvbnN0IGZvcm11bGFSZSA9IGV4cG9ydHMuX2NyZWF0ZUlzVGFibGVGb3JtdWxhUmVnZXgob3B0aW9ucy5sZWZ0TWFyZ2luQ2hhcnMpO1xuICAgICAgICBsZXQgcG9zID0gdGhpcy5fdGV4dEVkaXRvci5nZXRDdXJzb3JQb3NpdGlvbigpO1xuICAgICAgICBjb25zdCBsYXN0Um93ID0gdGhpcy5fdGV4dEVkaXRvci5nZXRMYXN0Um93KCk7XG4gICAgICAgIGNvbnN0IGxpbmVzID0gW107XG4gICAgICAgIGNvbnN0IGZvcm11bGFMaW5lcyA9IFtdO1xuICAgICAgICBsZXQgc3RhcnRSb3cgPSBwb3Mucm93O1xuICAgICAgICBsZXQgZW5kUm93ID0gcG9zLnJvdzsgLy8gZW5kUm93IGlzIGxhc3QgbGluZSBiZWZvcmUgZm9tdWxhc1xuICAgICAgICAvLyBpZiB0aGUgY3Vyc29yIGlzIG9uIGZvcm11bGEgbGluZSwgd29yayB1cCB1bnRpbCB3ZSBmaW5kIHRoZSBsYXN0IHJvdyBvZiB0aGUgdGFibGVcbiAgICAgICAge1xuICAgICAgICAgICAgbGV0IGxpbmUgPSB0aGlzLl90ZXh0RWRpdG9yLmdldExpbmUocG9zLnJvdyk7XG4gICAgICAgICAgICB3aGlsZSAoZm9ybXVsYVJlLnRlc3QobGluZSkgJiYgcG9zLnJvdyA+PSAwKSB7XG4gICAgICAgICAgICAgICAgcG9zID0gbmV3IHBvaW50XzEuUG9pbnQocG9zLnJvdyAtIDEsIHBvcy5jb2x1bW4pO1xuICAgICAgICAgICAgICAgIGVuZFJvdy0tO1xuICAgICAgICAgICAgICAgIGxpbmUgPSB0aGlzLl90ZXh0RWRpdG9yLmdldExpbmUocG9zLnJvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gY3VycmVudCBsaW5lXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmUgPSB0aGlzLl90ZXh0RWRpdG9yLmdldExpbmUocG9zLnJvdyk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3RleHRFZGl0b3IuYWNjZXB0c1RhYmxlRWRpdChwb3Mucm93KSB8fCAhcmUudGVzdChsaW5lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaW5lcy5wdXNoKGxpbmUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHByZXZpb3VzIGxpbmVzXG4gICAgICAgIGZvciAobGV0IHJvdyA9IHBvcy5yb3cgLSAxOyByb3cgPj0gMDsgcm93LS0pIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmUgPSB0aGlzLl90ZXh0RWRpdG9yLmdldExpbmUocm93KTtcbiAgICAgICAgICAgIGlmICghdGhpcy5fdGV4dEVkaXRvci5hY2NlcHRzVGFibGVFZGl0KHJvdykgfHwgIXJlLnRlc3QobGluZSkpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxpbmVzLnVuc2hpZnQobGluZSk7XG4gICAgICAgICAgICBzdGFydFJvdyA9IHJvdztcbiAgICAgICAgfVxuICAgICAgICAvLyBuZXh0IGxpbmVzXG4gICAgICAgIGZvciAobGV0IHJvdyA9IHBvcy5yb3cgKyAxOyByb3cgPD0gbGFzdFJvdzsgcm93KyspIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmUgPSB0aGlzLl90ZXh0RWRpdG9yLmdldExpbmUocm93KTtcbiAgICAgICAgICAgIGlmICghdGhpcy5fdGV4dEVkaXRvci5hY2NlcHRzVGFibGVFZGl0KHJvdykgfHwgIXJlLnRlc3QobGluZSkpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxpbmVzLnB1c2gobGluZSk7XG4gICAgICAgICAgICBlbmRSb3cgPSByb3c7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZm9ybXVsYSBsaW5lc1xuICAgICAgICBmb3IgKGxldCByb3cgPSBlbmRSb3cgKyAxOyByb3cgPD0gbGFzdFJvdzsgcm93KyspIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmUgPSB0aGlzLl90ZXh0RWRpdG9yLmdldExpbmUocm93KTtcbiAgICAgICAgICAgIGlmICghdGhpcy5fdGV4dEVkaXRvci5hY2NlcHRzVGFibGVFZGl0KHJvdykgfHwgIWZvcm11bGFSZS50ZXN0KGxpbmUpKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3JtdWxhTGluZXMucHVzaChsaW5lKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByYW5nZSA9IG5ldyByYW5nZV8xLlJhbmdlKG5ldyBwb2ludF8xLlBvaW50KHN0YXJ0Um93LCAwKSwgbmV3IHBvaW50XzEuUG9pbnQoZW5kUm93LCBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5sZW5ndGgpKTtcbiAgICAgICAgY29uc3QgdGFibGUgPSBwYXJzZXJfMS5yZWFkVGFibGUobGluZXMsIG9wdGlvbnMpO1xuICAgICAgICBjb25zdCBmb2N1cyA9IHRhYmxlLmZvY3VzT2ZQb3NpdGlvbihwb3MsIHN0YXJ0Um93KTtcbiAgICAgICAgaWYgKGZvY3VzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIFRPRE86IFZhbGlkYXRlIHRoaXMgZm9yIGNvcnJlY3RuZXNzXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHJhbmdlLCBsaW5lcywgZm9ybXVsYUxpbmVzLCB0YWJsZSwgZm9jdXMgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRmluZHMgYSB0YWJsZSBhbmQgZG9lcyBhbiBvcGVyYXRpb24gd2l0aCBpdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIGZ1bmMgLSBBIGZ1bmN0aW9uIHRoYXQgZG9lcyBzb21lIG9wZXJhdGlvbiBvbiB0YWJsZSBpbmZvcm1hdGlvbiBvYnRhaW5lZCBieVxuICAgICAqIHtAbGluayBUYWJsZUVkaXRvciNfZmluZFRhYmxlfS5cbiAgICAgKi9cbiAgICBfd2l0aFRhYmxlKG9wdGlvbnMsIGZ1bmMpIHtcbiAgICAgICAgY29uc3QgaW5mbyA9IHRoaXMuX2ZpbmRUYWJsZShvcHRpb25zKTtcbiAgICAgICAgaWYgKGluZm8gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jKGluZm8pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIGxpbmVzIGluIGEgZ2l2ZW4gcmFuZ2UgaW4gdGhlIHRleHQgZWRpdG9yLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0gc3RhcnRSb3cgLSBTdGFydCByb3cgaW5kZXgsIHN0YXJ0cyBmcm9tIGAwYC5cbiAgICAgKiBAcGFyYW0gZW5kUm93IC0gRW5kIHJvdyBpbmRleC5cbiAgICAgKiBMaW5lcyBmcm9tIGBzdGFydFJvd2AgdG8gYGVuZFJvdyAtIDFgIGFyZSByZXBsYWNlZC5cbiAgICAgKiBAcGFyYW0gbmV3TGluZXMgLSBOZXcgbGluZXMuXG4gICAgICogQHBhcmFtIFtvbGRMaW5lcz11bmRlZmluZWRdIC0gT2xkIGxpbmVzIHRvIGJlIHJlcGxhY2VkLlxuICAgICAqL1xuICAgIF91cGRhdGVMaW5lcyhzdGFydFJvdywgZW5kUm93LCBuZXdMaW5lcywgb2xkTGluZXMgPSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIGFwcGx5IHRoZSBzaG9ydGVzdCBlZGl0IHNjcmlwdFxuICAgICAgICAgICAgLy8gaWYgYSB0YWJsZSBpcyBlZGl0ZWQgaW4gYSBub3JtYWwgbWFubmVyLCB0aGUgZWRpdCBkaXN0YW5jZSBuZXZlciBleGNlZWRzIDNcbiAgICAgICAgICAgIGNvbnN0IHNlcyA9IGVkaXRfc2NyaXB0XzEuc2hvcnRlc3RFZGl0U2NyaXB0KG9sZExpbmVzLCBuZXdMaW5lcywgMyk7XG4gICAgICAgICAgICBpZiAoc2VzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBlZGl0X3NjcmlwdF8xLmFwcGx5RWRpdFNjcmlwdCh0aGlzLl90ZXh0RWRpdG9yLCBzZXMsIHN0YXJ0Um93KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5yZXBsYWNlTGluZXMoc3RhcnRSb3csIGVuZFJvdywgbmV3TGluZXMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBNb3ZlcyB0aGUgY3Vyc29yIHBvc2l0aW9uIHRvIHRoZSBmb2N1c2VkIGNlbGwsXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSBzdGFydFJvdyAtIFJvdyBpbmRleCB3aGVyZSB0aGUgdGFibGUgc3RhcnRzIGluIHRoZSB0ZXh0IGVkaXRvci5cbiAgICAgKiBAcGFyYW0gdGFibGUgLSBBIHRhYmxlLlxuICAgICAqIEBwYXJhbSBmb2N1cyAtIEEgZm9jdXMgdG8gd2hpY2ggdGhlIGN1cnNvciB3aWxsIGJlIG1vdmVkLlxuICAgICAqL1xuICAgIF9tb3ZlVG9Gb2N1cyhzdGFydFJvdywgdGFibGUsIGZvY3VzKSB7XG4gICAgICAgIGNvbnN0IHBvcyA9IHRhYmxlLnBvc2l0aW9uT2ZGb2N1cyhmb2N1cywgc3RhcnRSb3cpO1xuICAgICAgICBpZiAocG9zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0b3Iuc2V0Q3Vyc29yUG9zaXRpb24ocG9zKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZWxlY3RzIHRoZSBmb2N1c2VkIGNlbGwuXG4gICAgICogSWYgdGhlIGNlbGwgaGFzIG5vIGNvbnRlbnQgdG8gYmUgc2VsZWN0ZWQsIHRoZW4ganVzdCBtb3ZlcyB0aGUgY3Vyc29yIHBvc2l0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0gc3RhcnRSb3cgLSBSb3cgaW5kZXggd2hlcmUgdGhlIHRhYmxlIHN0YXJ0cyBpbiB0aGUgdGV4dCBlZGl0b3IuXG4gICAgICogQHBhcmFtIHRhYmxlIC0gQSB0YWJsZS5cbiAgICAgKiBAcGFyYW0gZm9jdXMgLSBBIGZvY3VzIHRvIGJlIHNlbGVjdGVkLlxuICAgICAqL1xuICAgIF9zZWxlY3RGb2N1cyhzdGFydFJvdywgdGFibGUsIGZvY3VzKSB7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gdGFibGUuc2VsZWN0aW9uUmFuZ2VPZkZvY3VzKGZvY3VzLCBzdGFydFJvdyk7XG4gICAgICAgIGlmIChyYW5nZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnNldFNlbGVjdGlvblJhbmdlKHJhbmdlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX21vdmVUb0ZvY3VzKHN0YXJ0Um93LCB0YWJsZSwgZm9jdXMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEZvcm1hdHMgdGhlIHRhYmxlIHVuZGVyIHRoZSBjdXJzb3IuXG4gICAgICovXG4gICAgZm9ybWF0KG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy53aXRoQ29tcGxldGVkVGFibGUob3B0aW9ucywgKHsgcmFuZ2UsIGxpbmVzLCB0YWJsZSwgZm9jdXMgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3Rm9jdXMgPSBmb2N1cztcbiAgICAgICAgICAgIC8vIGFwcGx5XG4gICAgICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnRyYW5zYWN0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVMaW5lcyhyYW5nZS5zdGFydC5yb3csIHJhbmdlLmVuZC5yb3cgKyAxLCB0YWJsZS50b0xpbmVzKCksIGxpbmVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb3ZlVG9Gb2N1cyhyYW5nZS5zdGFydC5yb3csIHRhYmxlLCBuZXdGb2N1cyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEZvcm1hdHMgYW5kIGVzY2FwZXMgZnJvbSB0aGUgdGFibGUuXG4gICAgICovXG4gICAgZXNjYXBlKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5fd2l0aFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgdGFibGUsIGZvY3VzIH0pID0+IHtcbiAgICAgICAgICAgIC8vIGNvbXBsZXRlXG4gICAgICAgICAgICBjb25zdCBjb21wbGV0ZWQgPSBmb3JtYXR0ZXJfMS5jb21wbGV0ZVRhYmxlKHRhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgICAgIC8vIGZvcm1hdFxuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0dGVyXzEuZm9ybWF0VGFibGUoY29tcGxldGVkLnRhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgICAgIC8vIGFwcGx5XG4gICAgICAgICAgICBjb25zdCBuZXdSb3cgPSByYW5nZS5lbmQucm93ICsgKGNvbXBsZXRlZC5kZWxpbWl0ZXJJbnNlcnRlZCA/IDIgOiAxKTtcbiAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IudHJhbnNhY3QoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxpbmVzKHJhbmdlLnN0YXJ0LnJvdywgcmFuZ2UuZW5kLnJvdyArIDEsIGZvcm1hdHRlZC50YWJsZS50b0xpbmVzKCksIGxpbmVzKTtcbiAgICAgICAgICAgICAgICBsZXQgbmV3UG9zO1xuICAgICAgICAgICAgICAgIGlmIChuZXdSb3cgPiB0aGlzLl90ZXh0RWRpdG9yLmdldExhc3RSb3coKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmluc2VydExpbmUobmV3Um93LCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIG5ld1BvcyA9IG5ldyBwb2ludF8xLlBvaW50KG5ld1JvdywgMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZSA9IG5ldyBSZWdFeHAoYF4ke3BhcnNlcl8xLm1hcmdpblJlZ2V4U3JjKG9wdGlvbnMubGVmdE1hcmdpbkNoYXJzKX1gLCAndScpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0TGluZSA9IHRoaXMuX3RleHRFZGl0b3IuZ2V0TGluZShuZXdSb3cpO1xuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE9cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFyZ2luID0gcmUuZXhlYyhuZXh0TGluZSlbMF07XG4gICAgICAgICAgICAgICAgICAgIG5ld1BvcyA9IG5ldyBwb2ludF8xLlBvaW50KG5ld1JvdywgbWFyZ2luLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0b3Iuc2V0Q3Vyc29yUG9zaXRpb24obmV3UG9zKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5yZXNldFNtYXJ0Q3Vyc29yKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBbHRlcnMgdGhlIGFsaWdubWVudCBvZiB0aGUgZm9jdXNlZCBjb2x1bW4uXG4gICAgICovXG4gICAgYWxpZ25Db2x1bW4oYWxpZ25tZW50LCBvcHRpb25zKSB7XG4gICAgICAgIHRoaXMud2l0aENvbXBsZXRlZFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgdGFibGUsIGZvY3VzIH0pID0+IHtcbiAgICAgICAgICAgIGxldCBuZXdGb2N1cyA9IGZvY3VzO1xuICAgICAgICAgICAgLy8gYWx0ZXIgYWxpZ25tZW50XG4gICAgICAgICAgICBsZXQgYWx0ZXJlZCA9IHRhYmxlO1xuICAgICAgICAgICAgaWYgKDAgPD0gbmV3Rm9jdXMuY29sdW1uICYmXG4gICAgICAgICAgICAgICAgbmV3Rm9jdXMuY29sdW1uIDw9IGFsdGVyZWQuZ2V0SGVhZGVyV2lkdGgoKSAtIDEpIHtcbiAgICAgICAgICAgICAgICBhbHRlcmVkID0gZm9ybWF0dGVyXzEuYWx0ZXJBbGlnbm1lbnQodGFibGUsIG5ld0ZvY3VzLmNvbHVtbiwgYWxpZ25tZW50LCBvcHRpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGZvcm1hdFxuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0dGVyXzEuZm9ybWF0VGFibGUoYWx0ZXJlZCwgb3B0aW9ucyk7XG4gICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldE9mZnNldChleHBvcnRzLl9jb21wdXRlTmV3T2Zmc2V0KG5ld0ZvY3VzLCB0YWJsZSwgZm9ybWF0dGVkLCBmYWxzZSkpO1xuICAgICAgICAgICAgLy8gYXBwbHlcbiAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IudHJhbnNhY3QoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxpbmVzKHJhbmdlLnN0YXJ0LnJvdywgcmFuZ2UuZW5kLnJvdyArIDEsIGZvcm1hdHRlZC50YWJsZS50b0xpbmVzKCksIGxpbmVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb3ZlVG9Gb2N1cyhyYW5nZS5zdGFydC5yb3csIGZvcm1hdHRlZC50YWJsZSwgbmV3Rm9jdXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZWxlY3RzIHRoZSBmb2N1c2VkIGNlbGwgY29udGVudC5cbiAgICAgKi9cbiAgICBzZWxlY3RDZWxsKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy53aXRoQ29tcGxldGVkVGFibGUob3B0aW9ucywgKHsgcmFuZ2UsIGxpbmVzLCB0YWJsZSwgZm9jdXMgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3Rm9jdXMgPSBmb2N1cztcbiAgICAgICAgICAgIC8vIGFwcGx5XG4gICAgICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnRyYW5zYWN0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVMaW5lcyhyYW5nZS5zdGFydC5yb3csIHJhbmdlLmVuZC5yb3cgKyAxLCB0YWJsZS50b0xpbmVzKCksIGxpbmVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RGb2N1cyhyYW5nZS5zdGFydC5yb3csIHRhYmxlLCBuZXdGb2N1cyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE1vdmVzIHRoZSBmb2N1cyB0byBhbm90aGVyIGNlbGwuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm93T2Zmc2V0IC0gT2Zmc2V0IGluIHJvdy5cbiAgICAgKiBAcGFyYW0gY29sdW1uT2Zmc2V0IC0gT2Zmc2V0IGluIGNvbHVtbi5cbiAgICAgKi9cbiAgICBtb3ZlRm9jdXMocm93T2Zmc2V0LCBjb2x1bW5PZmZzZXQsIG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy53aXRoQ29tcGxldGVkVGFibGUob3B0aW9ucywgKHsgcmFuZ2UsIGxpbmVzLCB0YWJsZSwgZm9jdXMgfSkgPT4ge1xuICAgICAgICAgICAgbGV0IG5ld0ZvY3VzID0gZm9jdXM7XG4gICAgICAgICAgICBjb25zdCBzdGFydEZvY3VzID0gbmV3Rm9jdXM7XG4gICAgICAgICAgICAvLyBtb3ZlIGZvY3VzXG4gICAgICAgICAgICBpZiAocm93T2Zmc2V0ICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGFibGUuZ2V0SGVpZ2h0KCk7XG4gICAgICAgICAgICAgICAgLy8gc2tpcCBkZWxpbWl0ZXIgcm93XG4gICAgICAgICAgICAgICAgY29uc3Qgc2tpcCA9IG5ld0ZvY3VzLnJvdyA8IDEgJiYgbmV3Rm9jdXMucm93ICsgcm93T2Zmc2V0ID49IDFcbiAgICAgICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgICAgIDogbmV3Rm9jdXMucm93ID4gMSAmJiBuZXdGb2N1cy5yb3cgKyByb3dPZmZzZXQgPD0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAwO1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Um93KE1hdGgubWluKE1hdGgubWF4KG5ld0ZvY3VzLnJvdyArIHJvd09mZnNldCArIHNraXAsIDApLCBoZWlnaHQgPD0gMiA/IDAgOiBoZWlnaHQgLSAxKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29sdW1uT2Zmc2V0ICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgd2lkdGggPSB0YWJsZS5nZXRIZWFkZXJXaWR0aCgpO1xuICAgICAgICAgICAgICAgIGlmICghKG5ld0ZvY3VzLmNvbHVtbiA8IDAgJiYgY29sdW1uT2Zmc2V0IDwgMCkgJiZcbiAgICAgICAgICAgICAgICAgICAgIShuZXdGb2N1cy5jb2x1bW4gPiB3aWR0aCAtIDEgJiYgY29sdW1uT2Zmc2V0ID4gMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRDb2x1bW4oTWF0aC5taW4oTWF0aC5tYXgobmV3Rm9jdXMuY29sdW1uICsgY29sdW1uT2Zmc2V0LCAwKSwgd2lkdGggLSAxKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbW92ZWQgPSAhbmV3Rm9jdXMucG9zRXF1YWxzKHN0YXJ0Rm9jdXMpO1xuICAgICAgICAgICAgLy8gZm9ybWF0XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBmb3JtYXR0ZXJfMS5mb3JtYXRUYWJsZSh0YWJsZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldE9mZnNldChleHBvcnRzLl9jb21wdXRlTmV3T2Zmc2V0KG5ld0ZvY3VzLCB0YWJsZSwgZm9ybWF0dGVkLCBtb3ZlZCkpO1xuICAgICAgICAgICAgLy8gYXBwbHlcbiAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IudHJhbnNhY3QoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxpbmVzKHJhbmdlLnN0YXJ0LnJvdywgcmFuZ2UuZW5kLnJvdyArIDEsIGZvcm1hdHRlZC50YWJsZS50b0xpbmVzKCksIGxpbmVzKTtcbiAgICAgICAgICAgICAgICBpZiAobW92ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0Rm9jdXMocmFuZ2Uuc3RhcnQucm93LCBmb3JtYXR0ZWQudGFibGUsIG5ld0ZvY3VzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX21vdmVUb0ZvY3VzKHJhbmdlLnN0YXJ0LnJvdywgZm9ybWF0dGVkLnRhYmxlLCBuZXdGb2N1cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAobW92ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0U21hcnRDdXJzb3IoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE1vdmVzIHRoZSBmb2N1cyB0byB0aGUgbmV4dCBjZWxsLlxuICAgICAqL1xuICAgIG5leHRDZWxsKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5fd2l0aFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgdGFibGUsIGZvY3VzIH0pID0+IHtcbiAgICAgICAgICAgIC8vIHJlc2V0IHNtYXJ0IGN1cnNvciBpZiBtb3ZlZFxuICAgICAgICAgICAgY29uc3QgZm9jdXNNb3ZlZCA9ICh0aGlzLl9zY1RhYmxlUG9zICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAhcmFuZ2Uuc3RhcnQuZXF1YWxzKHRoaXMuX3NjVGFibGVQb3MpKSB8fFxuICAgICAgICAgICAgICAgICh0aGlzLl9zY0xhc3RGb2N1cyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgICFmb2N1cy5wb3NFcXVhbHModGhpcy5fc2NMYXN0Rm9jdXMpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9zY0FjdGl2ZSAmJiBmb2N1c01vdmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldFNtYXJ0Q3Vyc29yKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgbmV3Rm9jdXMgPSBmb2N1cztcbiAgICAgICAgICAgIC8vIGNvbXBsZXRlXG4gICAgICAgICAgICBjb25zdCBjb21wbGV0ZWQgPSBmb3JtYXR0ZXJfMS5jb21wbGV0ZVRhYmxlKHRhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgICAgIGlmIChjb21wbGV0ZWQuZGVsaW1pdGVySW5zZXJ0ZWQgJiYgbmV3Rm9jdXMucm93ID4gMCkge1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Um93KG5ld0ZvY3VzLnJvdyArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc3RhcnRGb2N1cyA9IG5ld0ZvY3VzO1xuICAgICAgICAgICAgbGV0IGFsdGVyZWQgPSBjb21wbGV0ZWQudGFibGU7XG4gICAgICAgICAgICAvLyBtb3ZlIGZvY3VzXG4gICAgICAgICAgICBpZiAobmV3Rm9jdXMucm93ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgLy8gbW92ZSB0byBuZXh0IHJvd1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Um93KDIpO1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnNtYXJ0Q3Vyc29yKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdGb2N1cy5jb2x1bW4gPCAwIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBhbHRlcmVkLmdldEhlYWRlcldpZHRoKCkgLSAxIDwgbmV3Rm9jdXMuY29sdW1uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldENvbHVtbigwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRDb2x1bW4oMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGluc2VydCBhbiBlbXB0eSByb3cgaWYgbmVlZGVkXG4gICAgICAgICAgICAgICAgaWYgKG5ld0ZvY3VzLnJvdyA+IGFsdGVyZWQuZ2V0SGVpZ2h0KCkgLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvdyA9IG5ldyBBcnJheShhbHRlcmVkLmdldEhlYWRlcldpZHRoKCkpLmZpbGwobmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoJycpKTtcbiAgICAgICAgICAgICAgICAgICAgYWx0ZXJlZCA9IGZvcm1hdHRlcl8xLmluc2VydFJvdyhhbHRlcmVkLCBhbHRlcmVkLmdldEhlaWdodCgpLCBuZXcgdGFibGVfcm93XzEuVGFibGVSb3cocm93LCAnJywgJycpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBpbnNlcnQgYW4gZW1wdHkgY29sdW1uIGlmIG5lZWRlZFxuICAgICAgICAgICAgICAgIGlmIChuZXdGb2N1cy5jb2x1bW4gPiBhbHRlcmVkLmdldEhlYWRlcldpZHRoKCkgLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IG5ldyBBcnJheShhbHRlcmVkLmdldEhlaWdodCgpIC0gMSkuZmlsbChuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbCgnJykpO1xuICAgICAgICAgICAgICAgICAgICBhbHRlcmVkID0gZm9ybWF0dGVyXzEuaW5zZXJ0Q29sdW1uKGFsdGVyZWQsIGFsdGVyZWQuZ2V0SGVhZGVyV2lkdGgoKSwgY29sdW1uLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gbW92ZSB0byBuZXh0IGNvbHVtblxuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Q29sdW1uKG5ld0ZvY3VzLmNvbHVtbiArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZm9ybWF0XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBmb3JtYXR0ZXJfMS5mb3JtYXRUYWJsZShhbHRlcmVkLCBvcHRpb25zKTtcbiAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0T2Zmc2V0KGV4cG9ydHMuX2NvbXB1dGVOZXdPZmZzZXQobmV3Rm9jdXMsIGFsdGVyZWQsIGZvcm1hdHRlZCwgdHJ1ZSkpO1xuICAgICAgICAgICAgLy8gYXBwbHlcbiAgICAgICAgICAgIGNvbnN0IG5ld0xpbmVzID0gZm9ybWF0dGVkLnRhYmxlLnRvTGluZXMoKTtcbiAgICAgICAgICAgIGlmIChuZXdGb2N1cy5jb2x1bW4gPiBmb3JtYXR0ZWQudGFibGUuZ2V0SGVhZGVyV2lkdGgoKSAtIDEpIHtcbiAgICAgICAgICAgICAgICAvLyBhZGQgbWFyZ2luXG4gICAgICAgICAgICAgICAgbmV3TGluZXNbbmV3Rm9jdXMucm93XSArPSAnICc7XG4gICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRPZmZzZXQoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnRyYW5zYWN0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVMaW5lcyhyYW5nZS5zdGFydC5yb3csIHJhbmdlLmVuZC5yb3cgKyAxLCBuZXdMaW5lcywgbGluZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdEZvY3VzKHJhbmdlLnN0YXJ0LnJvdywgZm9ybWF0dGVkLnRhYmxlLCBuZXdGb2N1cyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnNtYXJ0Q3Vyc29yKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9zY0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBhY3RpdmF0ZSBzbWFydCBjdXJzb3JcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2NBY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zY1RhYmxlUG9zID0gcmFuZ2Uuc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGFydEZvY3VzLmNvbHVtbiA8IDAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZC50YWJsZS5nZXRIZWFkZXJXaWR0aCgpIC0gMSA8IHN0YXJ0Rm9jdXMuY29sdW1uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zY1N0YXJ0Rm9jdXMgPSBuZXcgZm9jdXNfMS5Gb2N1cyhzdGFydEZvY3VzLnJvdywgMCwgMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zY1N0YXJ0Rm9jdXMgPSBzdGFydEZvY3VzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuX3NjTGFzdEZvY3VzID0gbmV3Rm9jdXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBNb3ZlcyB0aGUgZm9jdXMgdG8gdGhlIHByZXZpb3VzIGNlbGwuXG4gICAgICovXG4gICAgcHJldmlvdXNDZWxsKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy53aXRoQ29tcGxldGVkVGFibGUob3B0aW9ucywgKHsgcmFuZ2UsIGxpbmVzLCB0YWJsZSwgZm9jdXMgfSkgPT4ge1xuICAgICAgICAgICAgbGV0IG5ld0ZvY3VzID0gZm9jdXM7XG4gICAgICAgICAgICBjb25zdCBzdGFydEZvY3VzID0gbmV3Rm9jdXM7XG4gICAgICAgICAgICAvLyBtb3ZlIGZvY3VzXG4gICAgICAgICAgICBpZiAobmV3Rm9jdXMucm93ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5ld0ZvY3VzLmNvbHVtbiA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRDb2x1bW4obmV3Rm9jdXMuY29sdW1uIC0gMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAobmV3Rm9jdXMucm93ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXcgZm9jdXNfMS5Gb2N1cygwLCB0YWJsZS5nZXRIZWFkZXJXaWR0aCgpIC0gMSwgbmV3Rm9jdXMub2Zmc2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChuZXdGb2N1cy5jb2x1bW4gPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Q29sdW1uKG5ld0ZvY3VzLmNvbHVtbiAtIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXcgZm9jdXNfMS5Gb2N1cyhuZXdGb2N1cy5yb3cgPT09IDIgPyAwIDogbmV3Rm9jdXMucm93IC0gMSwgdGFibGUuZ2V0SGVhZGVyV2lkdGgoKSAtIDEsIG5ld0ZvY3VzLm9mZnNldCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbW92ZWQgPSAhbmV3Rm9jdXMucG9zRXF1YWxzKHN0YXJ0Rm9jdXMpO1xuICAgICAgICAgICAgLy8gZm9ybWF0XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBmb3JtYXR0ZXJfMS5mb3JtYXRUYWJsZSh0YWJsZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldE9mZnNldChleHBvcnRzLl9jb21wdXRlTmV3T2Zmc2V0KG5ld0ZvY3VzLCB0YWJsZSwgZm9ybWF0dGVkLCBtb3ZlZCkpO1xuICAgICAgICAgICAgLy8gYXBwbHlcbiAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IudHJhbnNhY3QoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxpbmVzKHJhbmdlLnN0YXJ0LnJvdywgcmFuZ2UuZW5kLnJvdyArIDEsIGZvcm1hdHRlZC50YWJsZS50b0xpbmVzKCksIGxpbmVzKTtcbiAgICAgICAgICAgICAgICBpZiAobW92ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0Rm9jdXMocmFuZ2Uuc3RhcnQucm93LCBmb3JtYXR0ZWQudGFibGUsIG5ld0ZvY3VzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX21vdmVUb0ZvY3VzKHJhbmdlLnN0YXJ0LnJvdywgZm9ybWF0dGVkLnRhYmxlLCBuZXdGb2N1cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAobW92ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0U21hcnRDdXJzb3IoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE1vdmVzIHRoZSBmb2N1cyB0byB0aGUgbmV4dCByb3cuXG4gICAgICovXG4gICAgbmV4dFJvdyhvcHRpb25zKSB7XG4gICAgICAgIHRoaXMuX3dpdGhUYWJsZShvcHRpb25zLCAoeyByYW5nZSwgbGluZXMsIHRhYmxlLCBmb2N1cyB9KSA9PiB7XG4gICAgICAgICAgICAvLyByZXNldCBzbWFydCBjdXJzb3IgaWYgbW92ZWRcbiAgICAgICAgICAgIGNvbnN0IGZvY3VzTW92ZWQgPSAodGhpcy5fc2NUYWJsZVBvcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgIXJhbmdlLnN0YXJ0LmVxdWFscyh0aGlzLl9zY1RhYmxlUG9zKSkgfHxcbiAgICAgICAgICAgICAgICAodGhpcy5fc2NMYXN0Rm9jdXMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICAhZm9jdXMucG9zRXF1YWxzKHRoaXMuX3NjTGFzdEZvY3VzKSk7XG4gICAgICAgICAgICBpZiAodGhpcy5fc2NBY3RpdmUgJiYgZm9jdXNNb3ZlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRTbWFydEN1cnNvcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IG5ld0ZvY3VzID0gZm9jdXM7XG4gICAgICAgICAgICAvLyBjb21wbGV0ZVxuICAgICAgICAgICAgY29uc3QgY29tcGxldGVkID0gZm9ybWF0dGVyXzEuY29tcGxldGVUYWJsZSh0YWJsZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICBpZiAoY29tcGxldGVkLmRlbGltaXRlckluc2VydGVkICYmIG5ld0ZvY3VzLnJvdyA+IDApIHtcbiAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldFJvdyhuZXdGb2N1cy5yb3cgKyAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0Rm9jdXMgPSBuZXdGb2N1cztcbiAgICAgICAgICAgIGxldCBhbHRlcmVkID0gY29tcGxldGVkLnRhYmxlO1xuICAgICAgICAgICAgLy8gbW92ZSBmb2N1c1xuICAgICAgICAgICAgaWYgKG5ld0ZvY3VzLnJvdyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Um93KDIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRSb3cobmV3Rm9jdXMucm93ICsgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zbWFydEN1cnNvcikge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zY0FjdGl2ZSAmJiB0aGlzLl9zY1N0YXJ0Rm9jdXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldENvbHVtbih0aGlzLl9zY1N0YXJ0Rm9jdXMuY29sdW1uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobmV3Rm9jdXMuY29sdW1uIDwgMCB8fFxuICAgICAgICAgICAgICAgICAgICBhbHRlcmVkLmdldEhlYWRlcldpZHRoKCkgLSAxIDwgbmV3Rm9jdXMuY29sdW1uKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Q29sdW1uKDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Q29sdW1uKDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaW5zZXJ0IGVtcHR5IHJvdyBpZiBuZWVkZWRcbiAgICAgICAgICAgIGlmIChuZXdGb2N1cy5yb3cgPiBhbHRlcmVkLmdldEhlaWdodCgpIC0gMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvdyA9IG5ldyBBcnJheShhbHRlcmVkLmdldEhlYWRlcldpZHRoKCkpLmZpbGwobmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoJycpKTtcbiAgICAgICAgICAgICAgICBhbHRlcmVkID0gZm9ybWF0dGVyXzEuaW5zZXJ0Um93KGFsdGVyZWQsIGFsdGVyZWQuZ2V0SGVpZ2h0KCksIG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdyhyb3csICcnLCAnJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZm9ybWF0XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBmb3JtYXR0ZXJfMS5mb3JtYXRUYWJsZShhbHRlcmVkLCBvcHRpb25zKTtcbiAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0T2Zmc2V0KGV4cG9ydHMuX2NvbXB1dGVOZXdPZmZzZXQobmV3Rm9jdXMsIGFsdGVyZWQsIGZvcm1hdHRlZCwgdHJ1ZSkpO1xuICAgICAgICAgICAgLy8gYXBwbHlcbiAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IudHJhbnNhY3QoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxpbmVzKHJhbmdlLnN0YXJ0LnJvdywgcmFuZ2UuZW5kLnJvdyArIDEsIGZvcm1hdHRlZC50YWJsZS50b0xpbmVzKCksIGxpbmVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RGb2N1cyhyYW5nZS5zdGFydC5yb3csIGZvcm1hdHRlZC50YWJsZSwgbmV3Rm9jdXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zbWFydEN1cnNvcikge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fc2NBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gYWN0aXZhdGUgc21hcnQgY3Vyc29yXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NjQWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2NUYWJsZVBvcyA9IHJhbmdlLnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRGb2N1cy5jb2x1bW4gPCAwIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWQudGFibGUuZ2V0SGVhZGVyV2lkdGgoKSAtIDEgPCBzdGFydEZvY3VzLmNvbHVtbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2NTdGFydEZvY3VzID0gbmV3IGZvY3VzXzEuRm9jdXMoc3RhcnRGb2N1cy5yb3csIDAsIDApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2NTdGFydEZvY3VzID0gc3RhcnRGb2N1cztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl9zY0xhc3RGb2N1cyA9IG5ld0ZvY3VzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW5zZXJ0cyBhbiBlbXB0eSByb3cgYXQgdGhlIGN1cnJlbnQgZm9jdXMuXG4gICAgICovXG4gICAgaW5zZXJ0Um93KG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy53aXRoQ29tcGxldGVkVGFibGUob3B0aW9ucywgKHsgcmFuZ2UsIGxpbmVzLCBmb3JtdWxhTGluZXMsIHRhYmxlLCBmb2N1cyB9KSA9PiB7XG4gICAgICAgICAgICBsZXQgbmV3Rm9jdXMgPSBmb2N1cztcbiAgICAgICAgICAgIC8vIG1vdmUgZm9jdXNcbiAgICAgICAgICAgIGlmIChuZXdGb2N1cy5yb3cgPD0gMSkge1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Um93KDIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRDb2x1bW4oMCk7XG4gICAgICAgICAgICAvLyBpbnNlcnQgYW4gZW1wdHkgcm93XG4gICAgICAgICAgICBjb25zdCByb3cgPSBuZXcgQXJyYXkodGFibGUuZ2V0SGVhZGVyV2lkdGgoKSkuZmlsbChuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbCgnJykpO1xuICAgICAgICAgICAgY29uc3QgYWx0ZXJlZCA9IGZvcm1hdHRlcl8xLmluc2VydFJvdyh0YWJsZSwgbmV3Rm9jdXMucm93LCBuZXcgdGFibGVfcm93XzEuVGFibGVSb3cocm93LCAnJywgJycpKTtcbiAgICAgICAgICAgIHRoaXMuZm9ybWF0QW5kQXBwbHkob3B0aW9ucywgcmFuZ2UsIGxpbmVzLCBmb3JtdWxhTGluZXMsIGFsdGVyZWQsIG5ld0ZvY3VzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIERlbGV0ZXMgYSByb3cgYXQgdGhlIGN1cnJlbnQgZm9jdXMuXG4gICAgICovXG4gICAgZGVsZXRlUm93KG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy53aXRoQ29tcGxldGVkVGFibGUob3B0aW9ucywgKHsgcmFuZ2UsIGxpbmVzLCBmb3JtdWxhTGluZXMsIHRhYmxlLCBmb2N1cyB9KSA9PiB7XG4gICAgICAgICAgICBsZXQgbmV3Rm9jdXMgPSBmb2N1cztcbiAgICAgICAgICAgIC8vIGRlbGV0ZSBhIHJvd1xuICAgICAgICAgICAgbGV0IGFsdGVyZWQgPSB0YWJsZTtcbiAgICAgICAgICAgIGxldCBtb3ZlZCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKG5ld0ZvY3VzLnJvdyAhPT0gMSkge1xuICAgICAgICAgICAgICAgIGFsdGVyZWQgPSBmb3JtYXR0ZXJfMS5kZWxldGVSb3coYWx0ZXJlZCwgbmV3Rm9jdXMucm93KTtcbiAgICAgICAgICAgICAgICBtb3ZlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKG5ld0ZvY3VzLnJvdyA+IGFsdGVyZWQuZ2V0SGVpZ2h0KCkgLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Um93KG5ld0ZvY3VzLnJvdyA9PT0gMiA/IDAgOiBuZXdGb2N1cy5yb3cgLSAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmZvcm1hdEFuZEFwcGx5KG9wdGlvbnMsIHJhbmdlLCBsaW5lcywgZm9ybXVsYUxpbmVzLCBhbHRlcmVkLCBuZXdGb2N1cywgbW92ZWQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTW92ZXMgdGhlIGZvY3VzZWQgcm93IGJ5IHRoZSBzcGVjaWZpZWQgb2Zmc2V0LlxuICAgICAqXG4gICAgICogQHBhcmFtIG9mZnNldCAtIEFuIG9mZnNldCB0aGUgcm93IGlzIG1vdmVkIGJ5LlxuICAgICAqL1xuICAgIG1vdmVSb3cob2Zmc2V0LCBvcHRpb25zKSB7XG4gICAgICAgIHRoaXMud2l0aENvbXBsZXRlZFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgZm9ybXVsYUxpbmVzLCB0YWJsZSwgZm9jdXMgfSkgPT4ge1xuICAgICAgICAgICAgbGV0IG5ld0ZvY3VzID0gZm9jdXM7XG4gICAgICAgICAgICAvLyBtb3ZlIHJvd1xuICAgICAgICAgICAgbGV0IGFsdGVyZWQgPSB0YWJsZTtcbiAgICAgICAgICAgIGlmIChuZXdGb2N1cy5yb3cgPiAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVzdCA9IE1hdGgubWluKE1hdGgubWF4KG5ld0ZvY3VzLnJvdyArIG9mZnNldCwgMiksIGFsdGVyZWQuZ2V0SGVpZ2h0KCkgLSAxKTtcbiAgICAgICAgICAgICAgICBhbHRlcmVkID0gZm9ybWF0dGVyXzEubW92ZVJvdyhhbHRlcmVkLCBuZXdGb2N1cy5yb3csIGRlc3QpO1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Um93KGRlc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5mb3JtYXRBbmRBcHBseShvcHRpb25zLCByYW5nZSwgbGluZXMsIGZvcm11bGFMaW5lcywgYWx0ZXJlZCwgbmV3Rm9jdXMpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZXZhbHVhdGVGb3JtdWxhcyhvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhDb21wbGV0ZWRUYWJsZShvcHRpb25zLCAoeyByYW5nZSwgbGluZXMsIGZvcm11bGFMaW5lcywgdGFibGUsIGZvY3VzLCB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0YWJsZS5hcHBseUZvcm11bGFzKGZvcm11bGFMaW5lcyk7XG4gICAgICAgICAgICBpZiAocmVzdWx0LmlzRXJyKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgeyB0YWJsZTogZm9ybWF0dGVkVGFibGUsIGZvY3VzOiBuZXdGb2N1cyB9ID0gdGhpcy5mb3JtYXRBbmRBcHBseShvcHRpb25zLCByYW5nZSwgbGluZXMsIGZvcm11bGFMaW5lcywgcmVzdWx0LnZhbHVlLCBmb2N1cywgZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU29ydHMgcm93cyBhbHBoYW51bWVyaWNhbGx5IHVzaW5nIHRoZSBjb2x1bW4gYXQgdGhlIGN1cnJlbnQgZm9jdXMuXG4gICAgICogSWYgYWxsIGNlbGxzIGluIHRoZSBzb3J0aW5nIGNvbHVtbiBhcmUgbnVtYmVycywgdGhlIGNvbHVtbiBpcyBzb3J0ZWRcbiAgICAgKiBudW1lcmljYWxseS5cbiAgICAgKi9cbiAgICBzb3J0Um93cyhzb3J0T3JkZXIsIG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy53aXRoQ29tcGxldGVkVGFibGUob3B0aW9ucywgKHsgcmFuZ2UsIGxpbmVzLCBmb3JtdWxhTGluZXMsIHRhYmxlLCBmb2N1cyB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBib2R5Um93cyA9IHRhYmxlLmdldFJvd3MoKS5zbGljZSgyKTtcbiAgICAgICAgICAgIGNvbnN0IGlzTnVtYmVyID0gKHMpID0+IC9eXFxzKlstK10/KChcXGQrKFxcLlxcZCspPyl8KFxcZCtcXC4pfChcXC5cXGQrKSkoW2VFXVstK10/XFxkKyk/XFxzKiQvLnRlc3Qocyk7XG4gICAgICAgICAgICBjb25zdCBub3RBbGxOdW1zID0gYm9keVJvd3NcbiAgICAgICAgICAgICAgICAubWFwKChyb3cpID0+IHsgdmFyIF9hOyByZXR1cm4gKF9hID0gcm93LmdldENlbGxBdChmb2N1cy5jb2x1bW4pKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY29udGVudDsgfSlcbiAgICAgICAgICAgICAgICAuc29tZSgoY2VsbCkgPT4gY2VsbCAhPT0gdW5kZWZpbmVkICYmIGNlbGwgIT09ICcnICYmICFpc051bWJlcihjZWxsKSk7XG4gICAgICAgICAgICBib2R5Um93cy5zb3J0KChyb3dBLCByb3dCKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2VsbEEgPSByb3dBLmdldENlbGxBdChmb2N1cy5jb2x1bW4pO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxCID0gcm93Qi5nZXRDZWxsQXQoZm9jdXMuY29sdW1uKTtcbiAgICAgICAgICAgICAgICBpZiAoY2VsbEEgPT09IHVuZGVmaW5lZCB8fCBjZWxsQS5jb250ZW50ID09PSAnJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbEIgPT09IHVuZGVmaW5lZCB8fCBjZWxsQi5jb250ZW50ID09PSAnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjZWxsQiA9PT0gdW5kZWZpbmVkIHx8IGNlbGxCLmNvbnRlbnQgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50QSA9IG5vdEFsbE51bXNcbiAgICAgICAgICAgICAgICAgICAgPyBjZWxsQS5jb250ZW50LnJlcGxhY2UoL1sqfl8kXS9nLCAnJylcbiAgICAgICAgICAgICAgICAgICAgOiBwYXJzZUZsb2F0KGNlbGxBLmNvbnRlbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRCID0gbm90QWxsTnVtc1xuICAgICAgICAgICAgICAgICAgICA/IGNlbGxCLmNvbnRlbnQucmVwbGFjZSgvWyp+XyRdL2csICcnKVxuICAgICAgICAgICAgICAgICAgICA6IHBhcnNlRmxvYXQoY2VsbEIuY29udGVudCk7XG4gICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRBID09PSBjb250ZW50Qikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY29udGVudEEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRlbnRCID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50QSA8IGNvbnRlbnRCID8gLTEgOiAxO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoc29ydE9yZGVyID09PSBTb3J0T3JkZXIuRGVzY2VuZGluZykge1xuICAgICAgICAgICAgICAgIGJvZHlSb3dzLnJldmVyc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFsbFJvd3MgPSB0YWJsZS5nZXRSb3dzKCkuc2xpY2UoMCwgMikuY29uY2F0KGJvZHlSb3dzKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1RhYmxlID0gbmV3IHRhYmxlXzEuVGFibGUoYWxsUm93cyk7XG4gICAgICAgICAgICBjb25zdCB7IHRhYmxlOiBmb3JtYXR0ZWRUYWJsZSwgZm9jdXM6IG5ld0ZvY3VzIH0gPSB0aGlzLmZvcm1hdEFuZEFwcGx5KG9wdGlvbnMsIHJhbmdlLCBsaW5lcywgZm9ybXVsYUxpbmVzLCBuZXdUYWJsZSwgZm9jdXMsIHRydWUpO1xuICAgICAgICAgICAgdGhpcy5fbW92ZVRvRm9jdXMocmFuZ2Uuc3RhcnQucm93LCBmb3JtYXR0ZWRUYWJsZSwgbmV3Rm9jdXMpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW5zZXJ0cyBhbiBlbXB0eSBjb2x1bW4gYXQgdGhlIGN1cnJlbnQgZm9jdXMuXG4gICAgICovXG4gICAgaW5zZXJ0Q29sdW1uKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy53aXRoQ29tcGxldGVkVGFibGUob3B0aW9ucywgKHsgcmFuZ2UsIGxpbmVzLCBmb3JtdWxhTGluZXMsIHRhYmxlLCBmb2N1cyB9KSA9PiB7XG4gICAgICAgICAgICBsZXQgbmV3Rm9jdXMgPSBmb2N1cztcbiAgICAgICAgICAgIC8vIG1vdmUgZm9jdXNcbiAgICAgICAgICAgIGlmIChuZXdGb2N1cy5yb3cgPT09IDEpIHtcbiAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldFJvdygwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuZXdGb2N1cy5jb2x1bW4gPCAwKSB7XG4gICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRDb2x1bW4oMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBpbnNlcnQgYW4gZW1wdHkgY29sdW1uXG4gICAgICAgICAgICBjb25zdCBjb2x1bW4gPSBuZXcgQXJyYXkodGFibGUuZ2V0SGVpZ2h0KCkgLSAxKS5maWxsKG5ldyB0YWJsZV9jZWxsXzEuVGFibGVDZWxsKCcnKSk7XG4gICAgICAgICAgICBjb25zdCBhbHRlcmVkID0gZm9ybWF0dGVyXzEuaW5zZXJ0Q29sdW1uKHRhYmxlLCBuZXdGb2N1cy5jb2x1bW4sIGNvbHVtbiwgb3B0aW9ucyk7XG4gICAgICAgICAgICB0aGlzLmZvcm1hdEFuZEFwcGx5KG9wdGlvbnMsIHJhbmdlLCBsaW5lcywgZm9ybXVsYUxpbmVzLCBhbHRlcmVkLCBuZXdGb2N1cyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZWxldGVzIGEgY29sdW1uIGF0IHRoZSBjdXJyZW50IGZvY3VzLlxuICAgICAqL1xuICAgIGRlbGV0ZUNvbHVtbihvcHRpb25zKSB7XG4gICAgICAgIHRoaXMud2l0aENvbXBsZXRlZFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgZm9ybXVsYUxpbmVzLCB0YWJsZSwgZm9jdXMgfSkgPT4ge1xuICAgICAgICAgICAgbGV0IG5ld0ZvY3VzID0gZm9jdXM7XG4gICAgICAgICAgICAvLyBtb3ZlIGZvY3VzXG4gICAgICAgICAgICBpZiAobmV3Rm9jdXMucm93ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRSb3coMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBkZWxldGUgYSBjb2x1bW5cbiAgICAgICAgICAgIGxldCBhbHRlcmVkID0gdGFibGU7XG4gICAgICAgICAgICBsZXQgbW92ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICgwIDw9IG5ld0ZvY3VzLmNvbHVtbiAmJlxuICAgICAgICAgICAgICAgIG5ld0ZvY3VzLmNvbHVtbiA8PSBhbHRlcmVkLmdldEhlYWRlcldpZHRoKCkgLSAxKSB7XG4gICAgICAgICAgICAgICAgYWx0ZXJlZCA9IGZvcm1hdHRlcl8xLmRlbGV0ZUNvbHVtbih0YWJsZSwgbmV3Rm9jdXMuY29sdW1uLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICBtb3ZlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKG5ld0ZvY3VzLmNvbHVtbiA+IGFsdGVyZWQuZ2V0SGVhZGVyV2lkdGgoKSAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRDb2x1bW4oYWx0ZXJlZC5nZXRIZWFkZXJXaWR0aCgpIC0gMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5mb3JtYXRBbmRBcHBseShvcHRpb25zLCByYW5nZSwgbGluZXMsIGZvcm11bGFMaW5lcywgYWx0ZXJlZCwgbmV3Rm9jdXMsIG1vdmVkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE1vdmVzIHRoZSBmb2N1c2VkIGNvbHVtbiBieSB0aGUgc3BlY2lmaWVkIG9mZnNldC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvZmZzZXQgLSBBbiBvZmZzZXQgdGhlIGNvbHVtbiBpcyBtb3ZlZCBieS5cbiAgICAgKi9cbiAgICBtb3ZlQ29sdW1uKG9mZnNldCwgb3B0aW9ucykge1xuICAgICAgICB0aGlzLndpdGhDb21wbGV0ZWRUYWJsZShvcHRpb25zLCAoeyByYW5nZSwgbGluZXMsIGZvcm11bGFMaW5lcywgdGFibGUsIGZvY3VzIH0pID0+IHtcbiAgICAgICAgICAgIGxldCBuZXdGb2N1cyA9IGZvY3VzO1xuICAgICAgICAgICAgLy8gbW92ZSBjb2x1bW5cbiAgICAgICAgICAgIGxldCBhbHRlcmVkID0gdGFibGU7XG4gICAgICAgICAgICBpZiAoMCA8PSBuZXdGb2N1cy5jb2x1bW4gJiZcbiAgICAgICAgICAgICAgICBuZXdGb2N1cy5jb2x1bW4gPD0gYWx0ZXJlZC5nZXRIZWFkZXJXaWR0aCgpIC0gMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlc3QgPSBNYXRoLm1pbihNYXRoLm1heChuZXdGb2N1cy5jb2x1bW4gKyBvZmZzZXQsIDApLCBhbHRlcmVkLmdldEhlYWRlcldpZHRoKCkgLSAxKTtcbiAgICAgICAgICAgICAgICBhbHRlcmVkID0gZm9ybWF0dGVyXzEubW92ZUNvbHVtbihhbHRlcmVkLCBuZXdGb2N1cy5jb2x1bW4sIGRlc3QpO1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Q29sdW1uKGRlc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5mb3JtYXRBbmRBcHBseShvcHRpb25zLCByYW5nZSwgbGluZXMsIGZvcm11bGFMaW5lcywgYWx0ZXJlZCwgbmV3Rm9jdXMpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRm9ybWF0cyBhbGwgdGhlIHRhYmxlcyBpbiB0aGUgdGV4dCBlZGl0b3IuXG4gICAgICovXG4gICAgZm9ybWF0QWxsKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5fdGV4dEVkaXRvci50cmFuc2FjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZSA9IGV4cG9ydHMuX2NyZWF0ZUlzVGFibGVSb3dSZWdleChvcHRpb25zLmxlZnRNYXJnaW5DaGFycyk7XG4gICAgICAgICAgICBsZXQgcG9zID0gdGhpcy5fdGV4dEVkaXRvci5nZXRDdXJzb3JQb3NpdGlvbigpO1xuICAgICAgICAgICAgbGV0IGxpbmVzID0gW107XG4gICAgICAgICAgICBsZXQgc3RhcnRSb3cgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBsZXQgbGFzdFJvdyA9IHRoaXMuX3RleHRFZGl0b3IuZ2V0TGFzdFJvdygpO1xuICAgICAgICAgICAgLy8gZmluZCB0YWJsZXNcbiAgICAgICAgICAgIGZvciAobGV0IHJvdyA9IDA7IHJvdyA8PSBsYXN0Um93OyByb3crKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmUgPSB0aGlzLl90ZXh0RWRpdG9yLmdldExpbmUocm93KTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdGV4dEVkaXRvci5hY2NlcHRzVGFibGVFZGl0KHJvdykgJiYgcmUudGVzdChsaW5lKSkge1xuICAgICAgICAgICAgICAgICAgICBsaW5lcy5wdXNoKGxpbmUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRSb3cgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRSb3cgPSByb3c7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc3RhcnRSb3cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBnZXQgdGFibGUgaW5mb1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbmRSb3cgPSByb3cgLSAxO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByYW5nZSA9IG5ldyByYW5nZV8xLlJhbmdlKG5ldyBwb2ludF8xLlBvaW50KHN0YXJ0Um93LCAwKSwgbmV3IHBvaW50XzEuUG9pbnQoZW5kUm93LCBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5sZW5ndGgpKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gZm9ybXVsYUxpbmVzIGVtcHR5IGJlY2F1c2UgZm9ybWF0dGluZyBkb2VzIG5vdCBpbnZvbHZlIGZvcm11bGFzXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhYmxlID0gcGFyc2VyXzEucmVhZFRhYmxlKGxpbmVzLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9jdXMgPSB0YWJsZS5mb2N1c09mUG9zaXRpb24ocG9zLCBzdGFydFJvdyk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkaWZmO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZm9jdXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9ybWF0XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3Rm9jdXMgPSBmb2N1cztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZCA9IGZvcm1hdHRlcl8xLmNvbXBsZXRlVGFibGUodGFibGUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBsZXRlZC5kZWxpbWl0ZXJJbnNlcnRlZCAmJiBuZXdGb2N1cy5yb3cgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRSb3cobmV3Rm9jdXMucm93ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBmb3JtYXR0ZXJfMS5mb3JtYXRUYWJsZShjb21wbGV0ZWQudGFibGUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRPZmZzZXQoZXhwb3J0cy5fY29tcHV0ZU5ld09mZnNldChuZXdGb2N1cywgY29tcGxldGVkLnRhYmxlLCBmb3JtYXR0ZWQsIGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBseVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3TGluZXMgPSBmb3JtYXR0ZWQudGFibGUudG9MaW5lcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlTGluZXMocmFuZ2Uuc3RhcnQucm93LCByYW5nZS5lbmQucm93ICsgMSwgbmV3TGluZXMsIGxpbmVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSBjdXJzb3IgcG9zaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpZmYgPSBuZXdMaW5lcy5sZW5ndGggLSBsaW5lcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3MgPSBmb3JtYXR0ZWQudGFibGUucG9zaXRpb25PZkZvY3VzKG5ld0ZvY3VzLCBzdGFydFJvdyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3JtYXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZCA9IGZvcm1hdHRlcl8xLmNvbXBsZXRlVGFibGUodGFibGUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0dGVyXzEuZm9ybWF0VGFibGUoY29tcGxldGVkLnRhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcGx5XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdMaW5lcyA9IGZvcm1hdHRlZC50YWJsZS50b0xpbmVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVMaW5lcyhyYW5nZS5zdGFydC5yb3csIHJhbmdlLmVuZC5yb3cgKyAxLCBuZXdMaW5lcywgbGluZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXBkYXRlIGN1cnNvciBwb3NpdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgZGlmZiA9IG5ld0xpbmVzLmxlbmd0aCAtIGxpbmVzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3Mucm93ID4gZW5kUm93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gbmV3IHBvaW50XzEuUG9pbnQocG9zLnJvdyArIGRpZmYsIHBvcy5jb2x1bW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0XG4gICAgICAgICAgICAgICAgICAgIGxpbmVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0Um93ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGVcbiAgICAgICAgICAgICAgICAgICAgbGFzdFJvdyArPSBkaWZmO1xuICAgICAgICAgICAgICAgICAgICByb3cgKz0gZGlmZjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RhcnRSb3cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIC8vIGdldCB0YWJsZSBpbmZvXG4gICAgICAgICAgICAgICAgY29uc3QgZW5kUm93ID0gbGFzdFJvdztcbiAgICAgICAgICAgICAgICBjb25zdCByYW5nZSA9IG5ldyByYW5nZV8xLlJhbmdlKG5ldyBwb2ludF8xLlBvaW50KHN0YXJ0Um93LCAwKSwgbmV3IHBvaW50XzEuUG9pbnQoZW5kUm93LCBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5sZW5ndGgpKTtcbiAgICAgICAgICAgICAgICAvLyBmb3JtdWxhTGluZXMgZW1wdHkgYmVjYXVzZSBmb3JtYXR0aW5nIGRvZXMgbm90IGludm9sdmUgZm9ybXVsYXNcbiAgICAgICAgICAgICAgICBjb25zdCB0YWJsZSA9IHBhcnNlcl8xLnJlYWRUYWJsZShsaW5lcywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9jdXMgPSB0YWJsZS5mb2N1c09mUG9zaXRpb24ocG9zLCBzdGFydFJvdyk7XG4gICAgICAgICAgICAgICAgLy8gZm9ybWF0XG4gICAgICAgICAgICAgICAgbGV0IG5ld0ZvY3VzID0gZm9jdXM7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcGxldGVkID0gZm9ybWF0dGVyXzEuY29tcGxldGVUYWJsZSh0YWJsZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPXG4gICAgICAgICAgICAgICAgaWYgKGNvbXBsZXRlZC5kZWxpbWl0ZXJJbnNlcnRlZCAmJiBuZXdGb2N1cy5yb3cgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ET1xuICAgICAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldFJvdyhuZXdGb2N1cy5yb3cgKyAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0dGVyXzEuZm9ybWF0VGFibGUoY29tcGxldGVkLnRhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE9cbiAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldE9mZnNldChcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE9cbiAgICAgICAgICAgICAgICBleHBvcnRzLl9jb21wdXRlTmV3T2Zmc2V0KG5ld0ZvY3VzLCBjb21wbGV0ZWQudGFibGUsIGZvcm1hdHRlZCwgZmFsc2UpKTtcbiAgICAgICAgICAgICAgICAvLyBhcHBseVxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0xpbmVzID0gZm9ybWF0dGVkLnRhYmxlLnRvTGluZXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVMaW5lcyhyYW5nZS5zdGFydC5yb3csIHJhbmdlLmVuZC5yb3cgKyAxLCBuZXdMaW5lcywgbGluZXMpO1xuICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ET1xuICAgICAgICAgICAgICAgIHBvcyA9IGZvcm1hdHRlZC50YWJsZS5wb3NpdGlvbk9mRm9jdXMobmV3Rm9jdXMsIHN0YXJ0Um93KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0b3Iuc2V0Q3Vyc29yUG9zaXRpb24ocG9zKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEV4cG9ydHMgdGhlIHRhYmxlIGFzIGEgdHdvIGRpbWVuc2lvbmFsIHN0cmluZyBhcnJheVxuICAgICAqL1xuICAgIGV4cG9ydFRhYmxlKHdpdGh0SGVhZGVycywgb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoQ29tcGxldGVkVGFibGUob3B0aW9ucywgKHsgcmFuZ2UsIGxpbmVzLCBmb3JtdWxhTGluZXMsIHRhYmxlLCBmb2N1cyB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBib2R5Um93cyA9IHRhYmxlLmdldFJvd3MoKTtcbiAgICAgICAgICAgIGlmIChib2R5Um93cy5sZW5ndGggPiAwICYmICF3aXRodEhlYWRlcnMpIHtcbiAgICAgICAgICAgICAgICBib2R5Um93cy5zcGxpY2UoMCwgMik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBlbHNlIGlmKGJvZHlSb3dzLmxlbmd0aCA+IDEpIGJvZHlSb3dzLnNwbGljZSgxLCAxKTtcbiAgICAgICAgICAgIHJldHVybiBib2R5Um93cy5tYXAoKHJvdykgPT4gcm93LmdldENlbGxzKCkubWFwKChjZWxsKSA9PiBjZWxsLmNvbnRlbnQpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEV4cG9ydHMgdGhlIHRhYmxlIGFzIGEgdHdvIGRpbWVuc2lvbmFsIHN0cmluZyBhcnJheVxuICAgICAqL1xuICAgIGV4cG9ydENTVih3aXRodEhlYWRlcnMsIG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgciA9IHRoaXMuZXhwb3J0VGFibGUod2l0aHRIZWFkZXJzLCBvcHRpb25zKTtcbiAgICAgICAgcmV0dXJuICFyID8gdW5kZWZpbmVkIDogci5tYXAoKHJvdykgPT4gcm93LmpvaW4oJ1xcdCcpKS5qb2luKCdcXG4nKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRmluZHMgYSB0YWJsZSwgY29tcGxldGVzIGl0LCB0aGVuIGRvZXMgYW4gb3BlcmF0aW9uIHdpdGggaXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZnVuYyAtIEEgZnVuY3Rpb24gdGhhdCBkb2VzIHNvbWUgb3BlcmF0aW9uIG9uIHRhYmxlIGluZm9ybWF0aW9uIG9idGFpbmVkIGJ5XG4gICAgICoge0BsaW5rIFRhYmxlRWRpdG9yI19maW5kVGFibGV9LlxuICAgICAqL1xuICAgIHdpdGhDb21wbGV0ZWRUYWJsZShvcHRpb25zLCBmdW5jKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93aXRoVGFibGUob3B0aW9ucywgKHRhYmxlSW5mbykgPT4ge1xuICAgICAgICAgICAgbGV0IG5ld0ZvY3VzID0gdGFibGVJbmZvLmZvY3VzO1xuICAgICAgICAgICAgLy8gY29tcGxldGVcbiAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZCA9IGZvcm1hdHRlcl8xLmNvbXBsZXRlVGFibGUodGFibGVJbmZvLnRhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgICAgIGlmIChjb21wbGV0ZWQuZGVsaW1pdGVySW5zZXJ0ZWQgJiYgbmV3Rm9jdXMucm93ID4gMCkge1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Um93KG5ld0ZvY3VzLnJvdyArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZm9ybWF0XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBmb3JtYXR0ZXJfMS5mb3JtYXRUYWJsZShjb21wbGV0ZWQudGFibGUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRPZmZzZXQoZXhwb3J0cy5fY29tcHV0ZU5ld09mZnNldChuZXdGb2N1cywgY29tcGxldGVkLnRhYmxlLCBmb3JtYXR0ZWQsIGZhbHNlKSk7XG4gICAgICAgICAgICB0YWJsZUluZm8udGFibGUgPSBmb3JtYXR0ZWQudGFibGU7XG4gICAgICAgICAgICB0YWJsZUluZm8uZm9jdXMgPSBuZXdGb2N1cztcbiAgICAgICAgICAgIHJldHVybiBmdW5jKHRhYmxlSW5mbyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBGb3JtYXRzIHRoZSB0YWJsZSBhbmQgYXBwbGllcyBhbnkgY2hhbmdlcyBiYXNlZCBvbiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuXG4gICAgICogb3JpZ2luYWxMaW5lcyBhbmQgdGhlIG5ld1RhYmxlLiBTaG91bGQgZ2VuZXJhbGx5IGJlIHRoZSBsYXN0IGZ1bmN0aW9uIGNhbGxcbiAgICAgKiBpbiBhIFRhYmxlRWRpdG9yIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZvcm1hdEFuZEFwcGx5KG9wdGlvbnMsIHJhbmdlLCBvcmlnaW5hbExpbmVzLCBmb3JtdWxhTGluZXMsIG5ld1RhYmxlLCBuZXdGb2N1cywgbW92ZWQgPSBmYWxzZSkge1xuICAgICAgICAvLyBmb3JtYXRcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0dGVyXzEuZm9ybWF0VGFibGUobmV3VGFibGUsIG9wdGlvbnMpO1xuICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldE9mZnNldChleHBvcnRzLl9jb21wdXRlTmV3T2Zmc2V0KG5ld0ZvY3VzLCBuZXdUYWJsZSwgZm9ybWF0dGVkLCBtb3ZlZCkpO1xuICAgICAgICAvLyBhcHBseVxuICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnRyYW5zYWN0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxpbmVzKHJhbmdlLnN0YXJ0LnJvdywgcmFuZ2UuZW5kLnJvdyArIDEsIGZvcm1hdHRlZC50YWJsZS50b0xpbmVzKCksIG9yaWdpbmFsTGluZXMpO1xuICAgICAgICAgICAgaWYgKG1vdmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0Rm9jdXMocmFuZ2Uuc3RhcnQucm93LCBmb3JtYXR0ZWQudGFibGUsIG5ld0ZvY3VzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX21vdmVUb0ZvY3VzKHJhbmdlLnN0YXJ0LnJvdywgZm9ybWF0dGVkLnRhYmxlLCBuZXdGb2N1cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlc2V0U21hcnRDdXJzb3IoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJhbmdlLFxuICAgICAgICAgICAgbGluZXM6IG9yaWdpbmFsTGluZXMsXG4gICAgICAgICAgICBmb3JtdWxhTGluZXMsXG4gICAgICAgICAgICB0YWJsZTogZm9ybWF0dGVkLnRhYmxlLFxuICAgICAgICAgICAgZm9jdXM6IG5ld0ZvY3VzLFxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydHMuVGFibGVFZGl0b3IgPSBUYWJsZUVkaXRvcjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Tb3J0T3JkZXIgPSBleHBvcnRzLlRhYmxlRWRpdG9yID0gZXhwb3J0cy5vcHRpb25zV2l0aERlZmF1bHRzID0gZXhwb3J0cy5kZWZhdWx0T3B0aW9ucyA9IGV4cG9ydHMuSVRleHRFZGl0b3IgPSBleHBvcnRzLnNob3J0ZXN0RWRpdFNjcmlwdCA9IGV4cG9ydHMuYXBwbHlFZGl0U2NyaXB0ID0gZXhwb3J0cy5EZWxldGUgPSBleHBvcnRzLkluc2VydCA9IGV4cG9ydHMubW92ZUNvbHVtbiA9IGV4cG9ydHMuZGVsZXRlQ29sdW1uID0gZXhwb3J0cy5pbnNlcnRDb2x1bW4gPSBleHBvcnRzLm1vdmVSb3cgPSBleHBvcnRzLmRlbGV0ZVJvdyA9IGV4cG9ydHMuaW5zZXJ0Um93ID0gZXhwb3J0cy5hbHRlckFsaWdubWVudCA9IGV4cG9ydHMuZm9ybWF0VGFibGUgPSBleHBvcnRzLmNvbXBsZXRlVGFibGUgPSBleHBvcnRzLkZvcm1hdFR5cGUgPSBleHBvcnRzLnJlYWRUYWJsZSA9IGV4cG9ydHMuVGFibGUgPSBleHBvcnRzLlRhYmxlUm93ID0gZXhwb3J0cy5UYWJsZUNlbGwgPSBleHBvcnRzLkhlYWRlckFsaWdubWVudCA9IGV4cG9ydHMuRGVmYXVsdEFsaWdubWVudCA9IGV4cG9ydHMuQWxpZ25tZW50ID0gZXhwb3J0cy5Gb2N1cyA9IGV4cG9ydHMuUmFuZ2UgPSBleHBvcnRzLlBvaW50ID0gdm9pZCAwO1xudmFyIHBvaW50XzEgPSByZXF1aXJlKFwiLi9wb2ludFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlBvaW50XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBwb2ludF8xLlBvaW50OyB9IH0pO1xudmFyIHJhbmdlXzEgPSByZXF1aXJlKFwiLi9yYW5nZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJhbmdlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiByYW5nZV8xLlJhbmdlOyB9IH0pO1xudmFyIGZvY3VzXzEgPSByZXF1aXJlKFwiLi9mb2N1c1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkZvY3VzXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBmb2N1c18xLkZvY3VzOyB9IH0pO1xudmFyIGFsaWdubWVudF8xID0gcmVxdWlyZShcIi4vYWxpZ25tZW50XCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQWxpZ25tZW50XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBhbGlnbm1lbnRfMS5BbGlnbm1lbnQ7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEZWZhdWx0QWxpZ25tZW50XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBhbGlnbm1lbnRfMS5EZWZhdWx0QWxpZ25tZW50OyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiSGVhZGVyQWxpZ25tZW50XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBhbGlnbm1lbnRfMS5IZWFkZXJBbGlnbm1lbnQ7IH0gfSk7XG52YXIgdGFibGVfY2VsbF8xID0gcmVxdWlyZShcIi4vdGFibGUtY2VsbFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRhYmxlQ2VsbFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGFibGVfY2VsbF8xLlRhYmxlQ2VsbDsgfSB9KTtcbnZhciB0YWJsZV9yb3dfMSA9IHJlcXVpcmUoXCIuL3RhYmxlLXJvd1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRhYmxlUm93XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0YWJsZV9yb3dfMS5UYWJsZVJvdzsgfSB9KTtcbnZhciB0YWJsZV8xID0gcmVxdWlyZShcIi4vdGFibGVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUYWJsZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGFibGVfMS5UYWJsZTsgfSB9KTtcbnZhciBwYXJzZXJfMSA9IHJlcXVpcmUoXCIuL3BhcnNlclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInJlYWRUYWJsZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gcGFyc2VyXzEucmVhZFRhYmxlOyB9IH0pO1xudmFyIGZvcm1hdHRlcl9qc18xID0gcmVxdWlyZShcIi4vZm9ybWF0dGVyLmpzXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiRm9ybWF0VHlwZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9ybWF0dGVyX2pzXzEuRm9ybWF0VHlwZTsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImNvbXBsZXRlVGFibGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZvcm1hdHRlcl9qc18xLmNvbXBsZXRlVGFibGU7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJmb3JtYXRUYWJsZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9ybWF0dGVyX2pzXzEuZm9ybWF0VGFibGU7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJhbHRlckFsaWdubWVudFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9ybWF0dGVyX2pzXzEuYWx0ZXJBbGlnbm1lbnQ7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJpbnNlcnRSb3dcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZvcm1hdHRlcl9qc18xLmluc2VydFJvdzsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlbGV0ZVJvd1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9ybWF0dGVyX2pzXzEuZGVsZXRlUm93OyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibW92ZVJvd1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9ybWF0dGVyX2pzXzEubW92ZVJvdzsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImluc2VydENvbHVtblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9ybWF0dGVyX2pzXzEuaW5zZXJ0Q29sdW1uOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGVsZXRlQ29sdW1uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBmb3JtYXR0ZXJfanNfMS5kZWxldGVDb2x1bW47IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJtb3ZlQ29sdW1uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBmb3JtYXR0ZXJfanNfMS5tb3ZlQ29sdW1uOyB9IH0pO1xudmFyIGVkaXRfc2NyaXB0XzEgPSByZXF1aXJlKFwiLi9lZGl0LXNjcmlwdFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkluc2VydFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZWRpdF9zY3JpcHRfMS5JbnNlcnQ7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEZWxldGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGVkaXRfc2NyaXB0XzEuRGVsZXRlOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiYXBwbHlFZGl0U2NyaXB0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBlZGl0X3NjcmlwdF8xLmFwcGx5RWRpdFNjcmlwdDsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInNob3J0ZXN0RWRpdFNjcmlwdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZWRpdF9zY3JpcHRfMS5zaG9ydGVzdEVkaXRTY3JpcHQ7IH0gfSk7XG52YXIgdGV4dF9lZGl0b3JfMSA9IHJlcXVpcmUoXCIuL3RleHQtZWRpdG9yXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiSVRleHRFZGl0b3JcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRleHRfZWRpdG9yXzEuSVRleHRFZGl0b3I7IH0gfSk7XG52YXIgb3B0aW9uc18xID0gcmVxdWlyZShcIi4vb3B0aW9uc1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlZmF1bHRPcHRpb25zXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBvcHRpb25zXzEuZGVmYXVsdE9wdGlvbnM7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJvcHRpb25zV2l0aERlZmF1bHRzXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBvcHRpb25zXzEub3B0aW9uc1dpdGhEZWZhdWx0czsgfSB9KTtcbnZhciB0YWJsZV9lZGl0b3JfMSA9IHJlcXVpcmUoXCIuL3RhYmxlLWVkaXRvclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRhYmxlRWRpdG9yXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0YWJsZV9lZGl0b3JfMS5UYWJsZUVkaXRvcjsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlNvcnRPcmRlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGFibGVfZWRpdG9yXzEuU29ydE9yZGVyOyB9IH0pO1xuIiwiaW1wb3J0IHtcbiAgRm9ybWF0VHlwZSxcbiAgT3B0aW9ucyxcbiAgb3B0aW9uc1dpdGhEZWZhdWx0cyxcbn0gZnJvbSAnQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzJztcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRTZXR0aW5nczogUGFydGlhbDxJU2V0dGluZ3M+ID0ge1xuICBmb3JtYXRUeXBlOiBGb3JtYXRUeXBlLk5PUk1BTCxcbiAgc2hvd1JpYmJvbkljb246IHRydWUsXG4gIGJpbmRFbnRlcjogdHJ1ZSxcbiAgYmluZFRhYjogdHJ1ZSxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNldHRpbmdzIHtcbiAgZm9ybWF0VHlwZTogRm9ybWF0VHlwZTtcbiAgc2hvd1JpYmJvbkljb246IGJvb2xlYW47XG4gIGJpbmRFbnRlcjogYm9vbGVhbjtcbiAgYmluZFRhYjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxlRWRpdG9yUGx1Z2luU2V0dGluZ3MgaW1wbGVtZW50cyBJU2V0dGluZ3Mge1xuICBwdWJsaWMgZm9ybWF0VHlwZTogRm9ybWF0VHlwZTtcbiAgcHVibGljIHNob3dSaWJib25JY29uOiBib29sZWFuO1xuXG4gIHB1YmxpYyBiaW5kRW50ZXI6IGJvb2xlYW47XG4gIHB1YmxpYyBiaW5kVGFiOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKGxvYWRlZERhdGE6IFBhcnRpYWw8SVNldHRpbmdzPikge1xuICAgIGNvbnN0IGFsbEZpZWxkcyA9IHsgLi4uZGVmYXVsdFNldHRpbmdzLCAuLi5sb2FkZWREYXRhIH07XG4gICAgdGhpcy5mb3JtYXRUeXBlID0gYWxsRmllbGRzLmZvcm1hdFR5cGU7XG4gICAgdGhpcy5zaG93UmliYm9uSWNvbiA9IGFsbEZpZWxkcy5zaG93UmliYm9uSWNvbjtcbiAgICB0aGlzLmJpbmRFbnRlciA9IGFsbEZpZWxkcy5iaW5kRW50ZXI7XG4gICAgdGhpcy5iaW5kVGFiID0gYWxsRmllbGRzLmJpbmRUYWI7XG4gIH1cblxuICBwdWJsaWMgYXNPcHRpb25zKCk6IE9wdGlvbnMge1xuICAgIHJldHVybiBvcHRpb25zV2l0aERlZmF1bHRzKHsgZm9ybWF0VHlwZTogdGhpcy5mb3JtYXRUeXBlIH0pO1xuICB9XG59XG4iLCJpbXBvcnQgeyBQb2ludCwgUmFuZ2UgfSBmcm9tICdAdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMnO1xuaW1wb3J0IHsgQXBwLCBFZGl0b3IsIFRGaWxlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG4vKipcbiAqIE9ic2lkaWFuVGV4dEVkaXRvciBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSVRleHRFZGl0b3IgaW50ZXJmYWNlIGZyb21cbiAqIHRoZSBtdGUta2VybmVsIGxpYnJhcnkuIEl0IHRlYWNoZXMgdGhlIHRhYmxlIGVkaXRvciBsaWJyYXJ5IGhvdyB0byBpbnRlcmZhY2VcbiAqIHdpdGggT2JzaWRpYW4uXG4gKi9cbmV4cG9ydCBjbGFzcyBPYnNpZGlhblRleHRFZGl0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IGFwcDogQXBwO1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbGU6IFRGaWxlO1xuICBwcml2YXRlIHJlYWRvbmx5IGVkaXRvcjogRWRpdG9yO1xuXG4gIGNvbnN0cnVjdG9yKGFwcDogQXBwLCBmaWxlOiBURmlsZSwgZWRpdG9yOiBFZGl0b3IpIHtcbiAgICB0aGlzLmFwcCA9IGFwcDtcbiAgICB0aGlzLmZpbGUgPSBmaWxlO1xuICAgIHRoaXMuZWRpdG9yID0gZWRpdG9yO1xuICB9XG5cbiAgcHVibGljIGdldEN1cnNvclBvc2l0aW9uID0gKCk6IFBvaW50ID0+IHtcbiAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuZWRpdG9yLmdldEN1cnNvcigpO1xuICAgIGNvbnNvbGUuZGVidWcoXG4gICAgICBgZ2V0Q3Vyc29yUG9zaXRpb24gd2FzIGNhbGxlZDogbGluZSAke3Bvc2l0aW9uLmxpbmV9LCBjaCAke3Bvc2l0aW9uLmNofWAsXG4gICAgKTtcbiAgICByZXR1cm4gbmV3IFBvaW50KHBvc2l0aW9uLmxpbmUsIHBvc2l0aW9uLmNoKTtcbiAgfTtcblxuICBwdWJsaWMgc2V0Q3Vyc29yUG9zaXRpb24gPSAocG9zOiBQb2ludCk6IHZvaWQgPT4ge1xuICAgIGNvbnNvbGUuZGVidWcoXG4gICAgICBgc2V0Q3Vyc29yUG9zaXRpb24gd2FzIGNhbGxlZDogbGluZSAke3Bvcy5yb3d9LCBjaCAke3Bvcy5jb2x1bW59YCxcbiAgICApO1xuICAgIHRoaXMuZWRpdG9yLnNldEN1cnNvcih7IGxpbmU6IHBvcy5yb3csIGNoOiBwb3MuY29sdW1uIH0pO1xuICB9O1xuXG4gIHB1YmxpYyBzZXRTZWxlY3Rpb25SYW5nZSA9IChyYW5nZTogUmFuZ2UpOiB2b2lkID0+IHtcbiAgICBjb25zb2xlLmRlYnVnKCdzZXRTZWxlY3Rpb25SYW5nZSB3YXMgY2FsbGVkJyk7XG4gICAgdGhpcy5lZGl0b3Iuc2V0U2VsZWN0aW9uKFxuICAgICAgeyBsaW5lOiByYW5nZS5zdGFydC5yb3csIGNoOiByYW5nZS5zdGFydC5jb2x1bW4gfSxcbiAgICAgIHsgbGluZTogcmFuZ2UuZW5kLnJvdywgY2g6IHJhbmdlLmVuZC5jb2x1bW4gfSxcbiAgICApO1xuICB9O1xuXG4gIHB1YmxpYyBnZXRMYXN0Um93ID0gKCk6IG51bWJlciA9PiB7XG4gICAgY29uc29sZS5kZWJ1ZygnZ2V0TGFzdFJvdyB3YXMgY2FsbGVkJyk7XG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yLmxhc3RMaW5lKCk7XG4gIH07XG5cbiAgcHVibGljIGFjY2VwdHNUYWJsZUVkaXQgPSAocm93OiBudW1iZXIpOiBib29sZWFuID0+IHtcbiAgICBjb25zb2xlLmRlYnVnKGBhY2NlcHRzVGFibGVFZGl0IHdhcyBjYWxsZWQgb24gcm93ICR7cm93fWApO1xuXG4gICAgY29uc3QgY2FjaGUgPSB0aGlzLmFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZSh0aGlzLmZpbGUpO1xuICAgIGlmICghY2FjaGUuc2VjdGlvbnMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHRhYmxlID0gY2FjaGUuc2VjdGlvbnMuZmluZChcbiAgICAgIChzZWN0aW9uKTogYm9vbGVhbiA9PlxuICAgICAgICBzZWN0aW9uLnBvc2l0aW9uLnN0YXJ0LmxpbmUgPD0gcm93ICYmXG4gICAgICAgIHNlY3Rpb24ucG9zaXRpb24uZW5kLmxpbmUgPj0gcm93ICYmXG4gICAgICAgIHNlY3Rpb24udHlwZSAhPT0gJ2NvZGUnICYmXG4gICAgICAgIHNlY3Rpb24udHlwZSAhPT0gJ21hdGgnLFxuICAgICk7XG4gICAgaWYgKHRhYmxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ2FjY2VwdHNUYWJsZUVkaXQgcmV0dXJuaW5nIGZhbHNlLCB0YWJsZSBub3QgZm91bmQnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayB0aGF0IHRoZSB0ZXh0IGAtdHgtYCBpcyBub3Qgb24gdGhlIGxpbmUgaW1tZWRpYXRlbHkgcHJlY2VlZGluZyB0aGVcbiAgICAvLyB0YWJsZSBmb3VuZCBpbiB0aGUgcHJldmlvdXMgY2hlY2suXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Rncm9zaW5nZXIvYWR2YW5jZWQtdGFibGVzLW9ic2lkaWFuL2lzc3Vlcy8xMzNcbiAgICBjb25zdCBwcmVjZWVkaW5nTGluZUluZGV4ID0gdGFibGUucG9zaXRpb24uc3RhcnQubGluZTtcbiAgICBpZiAocHJlY2VlZGluZ0xpbmVJbmRleCA+PSAwKSB7XG4gICAgICBjb25zdCBwcmVjZWVkaW5nTGluZSA9IHRoaXMuZ2V0TGluZShwcmVjZWVkaW5nTGluZUluZGV4KTtcbiAgICAgIGlmIChwcmVjZWVkaW5nTGluZSA9PT0gJy10eC0nKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICBwdWJsaWMgZ2V0TGluZSA9IChyb3c6IG51bWJlcik6IHN0cmluZyA9PiB7XG4gICAgY29uc29sZS5kZWJ1ZyhgZ2V0TGluZSB3YXMgY2FsbGVkIG9uIGxpbmUgJHtyb3d9YCk7XG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yLmdldExpbmUocm93KTtcbiAgfTtcblxuICBwdWJsaWMgaW5zZXJ0TGluZSA9IChyb3c6IG51bWJlciwgbGluZTogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgY29uc29sZS5kZWJ1ZyhgaW5zZXJ0TGluZSB3YXMgY2FsbGVkIGF0IGxpbmUgJHtyb3d9YCk7XG4gICAgY29uc29sZS5kZWJ1ZyhgTmV3IGxpbmU6ICR7bGluZX1gKTtcblxuICAgIGlmIChyb3cgPiB0aGlzLmdldExhc3RSb3coKSkge1xuICAgICAgdGhpcy5lZGl0b3IucmVwbGFjZVJhbmdlKCdcXG4nICsgbGluZSwgeyBsaW5lOiByb3csIGNoOiAwIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVkaXRvci5yZXBsYWNlUmFuZ2UobGluZSArICdcXG4nLCB7IGxpbmU6IHJvdywgY2g6IDAgfSk7XG4gICAgfVxuICB9O1xuXG4gIHB1YmxpYyBkZWxldGVMaW5lID0gKHJvdzogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgY29uc29sZS5kZWJ1ZyhgZGVsZXRlTGluZSB3YXMgY2FsbGVkIG9uIGxpbmUgJHtyb3d9YCk7XG5cbiAgICAvLyBJZiBvbiB0aGUgbGFzdCBsaW5lIG9mIHRoZSBmaWxlLCB3ZSBjYW5ub3QgcmVwbGFjZSB0byB0aGUgbmV4dCByb3cuXG4gICAgLy8gSW5zdGVhZCwgcmVwbGFjZSBhbGwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgbGluZS5cbiAgICBpZiAocm93ID09PSB0aGlzLmdldExhc3RSb3coKSkge1xuICAgICAgY29uc3Qgcm93Q29udGVudHMgPSB0aGlzLmdldExpbmUocm93KTtcbiAgICAgIHRoaXMuZWRpdG9yLnJlcGxhY2VSYW5nZShcbiAgICAgICAgJycsXG4gICAgICAgIHsgbGluZTogcm93LCBjaDogMCB9LFxuICAgICAgICB7IGxpbmU6IHJvdywgY2g6IHJvd0NvbnRlbnRzLmxlbmd0aCB9LFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lZGl0b3IucmVwbGFjZVJhbmdlKFxuICAgICAgICAnJyxcbiAgICAgICAgeyBsaW5lOiByb3csIGNoOiAwIH0sXG4gICAgICAgIHsgbGluZTogcm93ICsgMSwgY2g6IDAgfSxcbiAgICAgICk7XG4gICAgfVxuICB9O1xuXG4gIHB1YmxpYyByZXBsYWNlTGluZXMgPSAoXG4gICAgc3RhcnRSb3c6IG51bWJlcixcbiAgICBlbmRSb3c6IG51bWJlcixcbiAgICBsaW5lczogc3RyaW5nW10sXG4gICk6IHZvaWQgPT4ge1xuICAgIC8vIFRha2Ugb25lIG9mZiB0aGUgZW5kUm93IGFuZCBpbnN0ZWFkIGdvIHRvIHRoZSBlbmQgb2YgdGhhdCBsaW5lXG4gICAgY29uc3QgcmVhbEVuZFJvdyA9IGVuZFJvdyAtIDE7XG4gICAgY29uc3QgZW5kUm93Q29udGVudHMgPSB0aGlzLmVkaXRvci5nZXRMaW5lKHJlYWxFbmRSb3cpO1xuICAgIGNvbnN0IGVuZFJvd0ZpbmFsSW5kZXggPSBlbmRSb3dDb250ZW50cy5sZW5ndGg7XG5cbiAgICB0aGlzLmVkaXRvci5yZXBsYWNlUmFuZ2UoXG4gICAgICBsaW5lcy5qb2luKCdcXG4nKSxcbiAgICAgIHsgbGluZTogc3RhcnRSb3csIGNoOiAwIH0sXG4gICAgICB7IGxpbmU6IHJlYWxFbmRSb3csIGNoOiBlbmRSb3dGaW5hbEluZGV4IH0sXG4gICAgKTtcbiAgfTtcblxuICBwdWJsaWMgdHJhbnNhY3QgPSAoZnVuYzogRnVuY3Rpb24pOiB2b2lkID0+IHtcbiAgICAvKlxuICAgIHRoaXMuZWRpdG9yLm9wZXJhdGlvbigoKSA9PiB7XG4gICAgICBmdW5jKCk7XG4gICAgfSk7XG4gICAgKi9cbiAgICBmdW5jKCk7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBPYnNpZGlhblRleHRFZGl0b3IgfSBmcm9tICcuL29ic2lkaWFuLXRleHQtZWRpdG9yJztcbmltcG9ydCB7IFRhYmxlRWRpdG9yUGx1Z2luU2V0dGluZ3MgfSBmcm9tICcuL3NldHRpbmdzJztcbmltcG9ydCB7XG4gIEFsaWdubWVudCxcbiAgU29ydE9yZGVyLFxuICBUYWJsZUVkaXRvciBhcyBNVEVFZGl0b3IsXG59IGZyb20gJ0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcyc7XG5pbXBvcnQgeyBBcHAsIEVkaXRvciwgTW9kYWwsIE5vdGljZSwgVEZpbGUgfSBmcm9tICdvYnNpZGlhbic7XG5cbmV4cG9ydCBjbGFzcyBUYWJsZUVkaXRvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2V0dGluZ3M6IFRhYmxlRWRpdG9yUGx1Z2luU2V0dGluZ3M7XG4gIHByaXZhdGUgcmVhZG9ubHkgbXRlOiBNVEVFZGl0b3I7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYXBwOiBBcHAsXG4gICAgZmlsZTogVEZpbGUsXG4gICAgZWRpdG9yOiBFZGl0b3IsXG4gICAgc2V0dGluZ3M6IFRhYmxlRWRpdG9yUGx1Z2luU2V0dGluZ3MsXG4gICkge1xuICAgIHRoaXMuYXBwID0gYXBwO1xuICAgIHRoaXMuc2V0dGluZ3MgPSBzZXR0aW5ncztcblxuICAgIGNvbnN0IG90ZSA9IG5ldyBPYnNpZGlhblRleHRFZGl0b3IoYXBwLCBmaWxlLCBlZGl0b3IpO1xuICAgIHRoaXMubXRlID0gbmV3IE1URUVkaXRvcihvdGUpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IGN1cnNvcklzSW5UYWJsZUZvcm11bGEgPSAoKTogYm9vbGVhbiA9PlxuICAgIHRoaXMubXRlLmN1cnNvcklzSW5UYWJsZUZvcm11bGEodGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGN1cnNvcklzSW5UYWJsZSA9ICgpOiBib29sZWFuID0+XG4gICAgdGhpcy5tdGUuY3Vyc29ySXNJblRhYmxlKHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuXG4gIHB1YmxpYyByZWFkb25seSBuZXh0Q2VsbCA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5uZXh0Q2VsbCh0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgcHJldmlvdXNDZWxsID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMubXRlLnByZXZpb3VzQ2VsbCh0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbmV4dFJvdyA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5uZXh0Um93KHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBmb3JtYXRUYWJsZSA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5mb3JtYXQodGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IGZvcm1hdEFsbFRhYmxlcyA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5mb3JtYXRBbGwodGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IGluc2VydENvbHVtbiA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5pbnNlcnRDb2x1bW4odGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IGluc2VydFJvdyA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5pbnNlcnRSb3codGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IGxlZnRBbGlnbkNvbHVtbiA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5hbGlnbkNvbHVtbihBbGlnbm1lbnQuTEVGVCwgdGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IGNlbnRlckFsaWduQ29sdW1uID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMubXRlLmFsaWduQ29sdW1uKEFsaWdubWVudC5DRU5URVIsIHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSByaWdodEFsaWduQ29sdW1uID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMubXRlLmFsaWduQ29sdW1uKEFsaWdubWVudC5SSUdIVCwgdGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IG1vdmVDb2x1bW5MZWZ0ID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMubXRlLm1vdmVDb2x1bW4oLTEsIHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBtb3ZlQ29sdW1uUmlnaHQgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5tdGUubW92ZUNvbHVtbigxLCB0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbW92ZVJvd1VwID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMubXRlLm1vdmVSb3coLTEsIHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBtb3ZlUm93RG93biA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5tb3ZlUm93KDEsIHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBkZWxldGVDb2x1bW4gPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5tdGUuZGVsZXRlQ29sdW1uKHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBkZWxldGVSb3cgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5tdGUuZGVsZXRlUm93KHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBzb3J0Um93c0FzYyA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5zb3J0Um93cyhTb3J0T3JkZXIuQXNjZW5kaW5nLCB0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc29ydFJvd3NEZXNjID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMubXRlLnNvcnRSb3dzKFNvcnRPcmRlci5EZXNjZW5kaW5nLCB0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZXNjYXBlID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMubXRlLmVzY2FwZSh0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZXZhbHVhdGVGb3JtdWxhcyA9ICgpOiB2b2lkID0+IHtcbiAgICBjb25zdCBlcnIgPSB0aGlzLm10ZS5ldmFsdWF0ZUZvcm11bGFzKHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICAgIGlmIChlcnIpIHtcbiAgICAgIG5ldyBOb3RpY2UoZXJyLm1lc3NhZ2UpO1xuICAgIH1cbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZXhwb3J0Q1NWTW9kYWwgPSAoKTogdm9pZCA9PiB7XG4gICAgbmV3IENTVk1vZGFsKHRoaXMuYXBwLCB0aGlzLm10ZSwgdGhpcy5zZXR0aW5ncykub3BlbigpO1xuICB9O1xufVxuXG5jbGFzcyBDU1ZNb2RhbCBleHRlbmRzIE1vZGFsIHtcbiAgcHJpdmF0ZSByZWFkb25seSBtdGU6IE1URUVkaXRvcjtcbiAgcHJpdmF0ZSByZWFkb25seSBzZXR0aW5nczogVGFibGVFZGl0b3JQbHVnaW5TZXR0aW5ncztcblxuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgbXRlOiBNVEVFZGl0b3IsIHNldHRpbmdzOiBUYWJsZUVkaXRvclBsdWdpblNldHRpbmdzKSB7XG4gICAgc3VwZXIoYXBwKTtcbiAgICB0aGlzLm10ZSA9IG10ZTtcbiAgICB0aGlzLnNldHRpbmdzID0gc2V0dGluZ3M7XG4gIH1cblxuICBwdWJsaWMgb25PcGVuKCk6IHZvaWQge1xuICAgIGNvbnN0IHsgY29udGVudEVsIH0gPSB0aGlzO1xuICAgIGNvbnN0IGRpdiA9IGNvbnRlbnRFbC5jcmVhdGVEaXYoe1xuICAgICAgY2xzOiAnYWR2YW5jZWQtdGFibGVzLWNzdi1leHBvcnQnLFxuICAgIH0pO1xuXG4gICAgY29uc3QgdGEgPSBkaXYuY3JlYXRlRWwoJ3RleHRhcmVhJywge1xuICAgICAgYXR0cjoge1xuICAgICAgICByZWFkb25seTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgdGEudmFsdWUgPSB0aGlzLm10ZS5leHBvcnRDU1YodHJ1ZSwgdGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gICAgdGEub25DbGlja0V2ZW50KCgpID0+IHRhLnNlbGVjdCgpKTtcblxuICAgIGNvbnN0IGxiID0gZGl2LmNyZWF0ZUVsKCdsYWJlbCcpO1xuICAgIGNvbnN0IGNiID0gbGIuY3JlYXRlRWwoJ2lucHV0Jywge1xuICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgIGF0dHI6IHtcbiAgICAgICAgY2hlY2tlZDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgbGIuY3JlYXRlU3BhbigpLnNldFRleHQoJ0luY2x1ZGUgdGFibGUgaGVhZGVycycpO1xuICAgIGNiLm9uQ2xpY2tFdmVudCgoKSA9PiB7XG4gICAgICB0YS52YWx1ZSA9IHRoaXMubXRlLmV4cG9ydENTVihjYi5jaGVja2VkLCB0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsb3NlKCk6IHZvaWQge1xuICAgIGNvbnN0IHsgY29udGVudEVsIH0gPSB0aGlzO1xuICAgIGNvbnRlbnRFbC5lbXB0eSgpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBpY29ucyB9IGZyb20gJy4vaWNvbnMnO1xuaW1wb3J0IHsgVGFibGVFZGl0b3JQbHVnaW5TZXR0aW5ncyB9IGZyb20gJy4vc2V0dGluZ3MnO1xuaW1wb3J0IHsgVGFibGVFZGl0b3IgfSBmcm9tICcuL3RhYmxlLWVkaXRvcic7XG5pbXBvcnQge1xuICBFZGl0b3IsXG4gIEl0ZW1WaWV3LFxuICBNYXJrZG93blZpZXcsXG4gIE5vdGljZSxcbiAgV29ya3NwYWNlTGVhZixcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5leHBvcnQgY29uc3QgVGFibGVDb250cm9sc1ZpZXdUeXBlID0gJ2FkdmFuY2VkLXRhYmxlcy10b29sYmFyJztcblxuZXhwb3J0IGNsYXNzIFRhYmxlQ29udHJvbHNWaWV3IGV4dGVuZHMgSXRlbVZpZXcge1xuICBwcml2YXRlIHJlYWRvbmx5IHNldHRpbmdzOiBUYWJsZUVkaXRvclBsdWdpblNldHRpbmdzO1xuXG4gIGNvbnN0cnVjdG9yKGxlYWY6IFdvcmtzcGFjZUxlYWYsIHNldHRpbmdzOiBUYWJsZUVkaXRvclBsdWdpblNldHRpbmdzKSB7XG4gICAgc3VwZXIobGVhZik7XG4gICAgdGhpcy5zZXR0aW5ncyA9IHNldHRpbmdzO1xuICB9XG5cbiAgcHVibGljIGdldFZpZXdUeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFRhYmxlQ29udHJvbHNWaWV3VHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREaXNwbGF5VGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnQWR2YW5jZWQgVGFibGVzJztcbiAgfVxuXG4gIHB1YmxpYyBnZXRJY29uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdzcHJlYWRzaGVldCc7XG4gIH1cblxuICBwdWJsaWMgbG9hZCgpOiB2b2lkIHtcbiAgICBzdXBlci5sb2FkKCk7XG4gICAgdGhpcy5kcmF3KCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGRyYXcgPSAoKTogdm9pZCA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jb250YWluZXJFbC5jaGlsZHJlblsxXTtcblxuICAgIGNvbnN0IHJvb3RFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHJvb3RFbC5hZGRDbGFzcyhcImFkdmFuY2VkLXRhYmxlcy1idXR0b25zXCIpO1xuXG4gICAgcm9vdEVsLmNyZWF0ZURpdigpLlxuICAgICAgY3JlYXRlU3Bhbih7IGNsczogJ3RpdGxlJyB9KS5cbiAgICAgIHNldFRleHQoXCJBZHZhbmNlZCBUYWJsZXNcIilcblxuICAgIGNvbnN0IG5hdkhlYWRlciA9IHJvb3RFbC5jcmVhdGVEaXYoeyBjbHM6ICduYXYtaGVhZGVyJyB9KTtcbiAgICBjb25zdCByb3dPbmVCdG5zID0gbmF2SGVhZGVyLmNyZWF0ZURpdih7IGNsczogJ25hdi1idXR0b25zLWNvbnRhaW5lcicgfSk7XG4gICAgcm93T25lQnRucy5jcmVhdGVTcGFuKHsgY2xzOiAnYWR2YW5jZWQtdGFibGVzLXJvdy1sYWJlbCcgfSkuc2V0VGV4dChcIkFsaWduOlwiKTtcbiAgICB0aGlzLmRyYXdCdG4ocm93T25lQnRucywgJ2FsaWduTGVmdCcsICdsZWZ0IGFsaWduIGNvbHVtbicsICh0ZSkgPT5cbiAgICAgIHRlLmxlZnRBbGlnbkNvbHVtbigpLFxuICAgICk7XG4gICAgdGhpcy5kcmF3QnRuKHJvd09uZUJ0bnMsICdhbGlnbkNlbnRlcicsICdjZW50ZXIgYWxpZ24gY29sdW1uJywgKHRlKSA9PlxuICAgICAgdGUuY2VudGVyQWxpZ25Db2x1bW4oKSxcbiAgICApO1xuICAgIHRoaXMuZHJhd0J0bihyb3dPbmVCdG5zLCAnYWxpZ25SaWdodCcsICdyaWdodCBhbGlnbiBjb2x1bW4nLCAodGUpID0+XG4gICAgICB0ZS5yaWdodEFsaWduQ29sdW1uKCksXG4gICAgKTtcblxuICAgIGNvbnN0IHJvd1R3b0J0bnMgPSBuYXZIZWFkZXIuY3JlYXRlRGl2KHsgY2xzOiAnbmF2LWJ1dHRvbnMtY29udGFpbmVyJyB9KTtcbiAgICByb3dUd29CdG5zLmNyZWF0ZVNwYW4oeyBjbHM6ICdhZHZhbmNlZC10YWJsZXMtcm93LWxhYmVsJyB9KS5zZXRUZXh0KFwiTW92ZTpcIik7XG4gICAgdGhpcy5kcmF3QnRuKHJvd1R3b0J0bnMsICdtb3ZlUm93RG93bicsICdtb3ZlIHJvdyBkb3duJywgKHRlKSA9PlxuICAgICAgdGUubW92ZVJvd0Rvd24oKSxcbiAgICApO1xuICAgIHRoaXMuZHJhd0J0bihyb3dUd29CdG5zLCAnbW92ZVJvd1VwJywgJ21vdmUgcm93IHVwJywgKHRlKSA9PlxuICAgICAgdGUubW92ZVJvd1VwKCksXG4gICAgKTtcbiAgICB0aGlzLmRyYXdCdG4ocm93VHdvQnRucywgJ21vdmVDb2x1bW5SaWdodCcsICdtb3ZlIGNvbHVtbiByaWdodCcsICh0ZSkgPT5cbiAgICAgIHRlLm1vdmVDb2x1bW5SaWdodCgpLFxuICAgICk7XG4gICAgdGhpcy5kcmF3QnRuKHJvd1R3b0J0bnMsICdtb3ZlQ29sdW1uTGVmdCcsICdtb3ZlIGNvbHVtbiBsZWZ0JywgKHRlKSA9PlxuICAgICAgdGUubW92ZUNvbHVtbkxlZnQoKSxcbiAgICApO1xuXG4gICAgY29uc3Qgcm93VGhyZWVCdG5zID0gbmF2SGVhZGVyLmNyZWF0ZURpdih7IGNsczogJ25hdi1idXR0b25zLWNvbnRhaW5lcicgfSk7XG4gICAgcm93VGhyZWVCdG5zLmNyZWF0ZVNwYW4oeyBjbHM6ICdhZHZhbmNlZC10YWJsZXMtcm93LWxhYmVsJyB9KS5zZXRUZXh0KFwiRWRpdDpcIik7XG4gICAgdGhpcy5kcmF3QnRuKHJvd1RocmVlQnRucywgJ2luc2VydFJvdycsICdpbnNlcnQgcm93IGFib3ZlJywgKHRlKSA9PlxuICAgICAgdGUuaW5zZXJ0Um93KCksXG4gICAgKTtcbiAgICB0aGlzLmRyYXdCdG4ocm93VGhyZWVCdG5zLCAnaW5zZXJ0Q29sdW1uJywgJ2luc2VydCBjb2x1bW4gbGVmdCcsICh0ZSkgPT5cbiAgICAgIHRlLmluc2VydENvbHVtbigpLFxuICAgICk7XG4gICAgdGhpcy5kcmF3QnRuKHJvd1RocmVlQnRucywgJ2RlbGV0ZVJvdycsICdkZWxldGUgcm93JywgKHRlKSA9PlxuICAgICAgdGUuZGVsZXRlUm93KCksXG4gICAgKTtcbiAgICB0aGlzLmRyYXdCdG4ocm93VGhyZWVCdG5zLCAnZGVsZXRlQ29sdW1uJywgJ2RlbGV0ZSBjb2x1bW4nLCAodGUpID0+XG4gICAgICB0ZS5kZWxldGVDb2x1bW4oKSxcbiAgICApO1xuXG4gICAgY29uc3Qgcm93Rm91ckJ0bnMgPSBuYXZIZWFkZXIuY3JlYXRlRGl2KHsgY2xzOiAnbmF2LWJ1dHRvbnMtY29udGFpbmVyJyB9KTtcbiAgICByb3dGb3VyQnRucy5jcmVhdGVTcGFuKHsgY2xzOiAnYWR2YW5jZWQtdGFibGVzLXJvdy1sYWJlbCcgfSkuc2V0VGV4dChcIlNvcnQvRjpcIik7XG4gICAgdGhpcy5kcmF3QnRuKHJvd0ZvdXJCdG5zLCAnc29ydEFzYycsICdzb3J0IGJ5IGNvbHVtbiBhc2NlbmRpbmcnLCAodGUpID0+XG4gICAgICB0ZS5zb3J0Um93c0FzYygpLFxuICAgICk7XG4gICAgdGhpcy5kcmF3QnRuKHJvd0ZvdXJCdG5zLCAnc29ydERlc2MnLCAnc29ydCBieSBjb2x1bW4gZGVzY2VuZGluZycsICh0ZSkgPT5cbiAgICAgIHRlLnNvcnRSb3dzRGVzYygpLFxuICAgICk7XG4gICAgdGhpcy5kcmF3QnRuKHJvd0ZvdXJCdG5zLCAnZm9ybXVsYScsICdldmFsdWF0ZSBmb3JtdWxhcycsICh0ZSkgPT5cbiAgICAgIHRlLmV2YWx1YXRlRm9ybXVsYXMoKSxcbiAgICApO1xuXG4gICAgY29uc3Qgcm93Rml2ZUJ0bnMgPSBuYXZIZWFkZXIuY3JlYXRlRGl2KHsgY2xzOiAnbmF2LWJ1dHRvbnMtY29udGFpbmVyJyB9KTtcbiAgICByb3dGaXZlQnRucy5jcmVhdGVTcGFuKHsgY2xzOiAnYWR2YW5jZWQtdGFibGVzLXJvdy1sYWJlbCcgfSkuc2V0VGV4dChcIk1pc2M6XCIpO1xuICAgIHRoaXMuZHJhd0J0bihyb3dGaXZlQnRucywgJ2NzdicsICdleHBvcnQgYXMgY3N2JywgKHRlKSA9PlxuICAgICAgdGUuZXhwb3J0Q1NWTW9kYWwoKSxcbiAgICApO1xuICAgIHRoaXMuZHJhd0J0bihyb3dGaXZlQnRucywgJ2hlbHAnLCAnaGVscCcsICgpID0+XG4gICAgICB3aW5kb3cub3BlbihcbiAgICAgICAgJ2h0dHBzOi8vZ2l0aHViLmNvbS90Z3Jvc2luZ2VyL2FkdmFuY2VkLXRhYmxlcy1vYnNpZGlhbi9ibG9iL21haW4vZG9jcy9oZWxwLm1kJyxcbiAgICAgICksXG4gICAgKTtcblxuICAgIGNvbnRhaW5lci5lbXB0eSgpO1xuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChyb290RWwpO1xuICB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZHJhd0J0biA9IChcbiAgICBwYXJlbnQ6IEhUTUxEaXZFbGVtZW50LFxuICAgIGljb25OYW1lOiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICBmbjogKHRlOiBUYWJsZUVkaXRvcikgPT4gdm9pZCxcbiAgKTogdm9pZCA9PiB7XG4gICAgY29uc3QgY3Vyc29yQ2hlY2sgPSAodGU6IFRhYmxlRWRpdG9yKTogYm9vbGVhbiA9PiB7XG4gICAgICBpZiAodGl0bGUgPT09ICdldmFsdWF0ZSBmb3JtdWxhcycpIHtcbiAgICAgICAgcmV0dXJuIHRlLmN1cnNvcklzSW5UYWJsZSgpIHx8IHRlLmN1cnNvcklzSW5UYWJsZUZvcm11bGEoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0ZS5jdXJzb3JJc0luVGFibGUoKTtcbiAgICB9O1xuXG4gICAgY29uc3QgYnV0dG9uID0gcGFyZW50LmNyZWF0ZURpdih7IGNsczogJ2FkdmFuY2VkLXRhYmxlcy1idXR0b24gbmF2LWFjdGlvbi1idXR0b24nLCB0aXRsZSB9KTtcbiAgICBidXR0b24ub25DbGlja0V2ZW50KCgpID0+IHRoaXMud2l0aFRFKGZuLCBjdXJzb3JDaGVjaykpO1xuICAgIGJ1dHRvbi5hcHBlbmRDaGlsZChFbGVtZW50KGljb25zW2ljb25OYW1lXSkpO1xuICB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgd2l0aFRFID0gKFxuICAgIGZuOiAodGU6IFRhYmxlRWRpdG9yKSA9PiB2b2lkLFxuICAgIGN1cnNvckNoZWNrOiAodGU6IFRhYmxlRWRpdG9yKSA9PiBib29sZWFuLFxuICAgIGFsZXJ0T25Ob1RhYmxlID0gdHJ1ZSxcbiAgKTogdm9pZCA9PiB7XG4gICAgbGV0IGVkaXRvcjogRWRpdG9yO1xuICAgIGNvbnN0IGxlYWYgPSB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0TW9zdFJlY2VudExlYWYoKTtcbiAgICBpZiAobGVhZi52aWV3IGluc3RhbmNlb2YgTWFya2Rvd25WaWV3KSB7XG4gICAgICBlZGl0b3IgPSBsZWFmLnZpZXcuZWRpdG9yO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0FkdmFuY2VkIFRhYmxlczogVW5hYmxlIHRvIGRldGVybWluZSBjdXJyZW50IGVkaXRvci4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0ZSA9IG5ldyBUYWJsZUVkaXRvcih0aGlzLmFwcCwgbGVhZi52aWV3LmZpbGUsIGVkaXRvciwgdGhpcy5zZXR0aW5ncyk7XG4gICAgaWYgKCFjdXJzb3JDaGVjayh0ZSkpIHtcbiAgICAgIGlmIChhbGVydE9uTm9UYWJsZSkge1xuICAgICAgICBuZXcgTm90aWNlKCdBZHZhbmNlZCBUYWJsZXM6IEN1cnNvciBtdXN0IGJlIGluIGEgdGFibGUuJyk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm4odGUpO1xuICB9O1xufVxuXG4vKipcbiAqIENvbnZlcnQgYW4gc3ZnIHN0cmluZyBpbnRvIGFuIEhUTUwgZWxlbWVudC5cbiAqXG4gKiBAcGFyYW0gc3ZnVGV4dCBzdmcgaW1hZ2UgYXMgYSBzdHJpbmdcbiAqL1xuY29uc3QgRWxlbWVudCA9IChzdmdUZXh0OiBzdHJpbmcpOiBIVE1MRWxlbWVudCA9PiB7XG4gIGNvbnN0IHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcbiAgcmV0dXJuIHBhcnNlci5wYXJzZUZyb21TdHJpbmcoc3ZnVGV4dCwgJ3RleHQveG1sJykuZG9jdW1lbnRFbGVtZW50O1xufTtcbiIsImltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnLi9pY29ucyc7XG5pbXBvcnQgeyBkZWZhdWx0U2V0dGluZ3MsIFRhYmxlRWRpdG9yUGx1Z2luU2V0dGluZ3MgfSBmcm9tICcuL3NldHRpbmdzJztcbmltcG9ydCB7XG4gIFRhYmxlQ29udHJvbHNWaWV3LFxuICBUYWJsZUNvbnRyb2xzVmlld1R5cGUsXG59IGZyb20gJy4vdGFibGUtY29udHJvbHMtdmlldyc7XG5pbXBvcnQgeyBUYWJsZUVkaXRvciB9IGZyb20gJy4vdGFibGUtZWRpdG9yJztcbmltcG9ydCB7IEV4dGVuc2lvbiwgUHJlYyB9IGZyb20gJ0Bjb2RlbWlycm9yL3N0YXRlJztcbmltcG9ydCB7IEtleUJpbmRpbmcsIGtleW1hcCB9IGZyb20gJ0Bjb2RlbWlycm9yL3ZpZXcnO1xuaW1wb3J0IHsgRm9ybWF0VHlwZSB9IGZyb20gJ0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcyc7XG5pbXBvcnQge1xuICBBcHAsXG4gIEVkaXRvcixcbiAgTWFya2Rvd25WaWV3LFxuICBOb3RpY2UsXG4gIFBsdWdpbixcbiAgUGx1Z2luU2V0dGluZ1RhYixcbiAgU2V0dGluZyxcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUYWJsZUVkaXRvclBsdWdpbiBleHRlbmRzIFBsdWdpbiB7XG4gIHB1YmxpYyBzZXR0aW5nczogVGFibGVFZGl0b3JQbHVnaW5TZXR0aW5ncztcblxuICAvLyBjbUVkaXRvcnMgaXMgdXNlZCBkdXJpbmcgdW5sb2FkIHRvIHJlbW92ZSBvdXIgZXZlbnQgaGFuZGxlcnMuXG4gIHByaXZhdGUgY21FZGl0b3JzOiBDb2RlTWlycm9yLkVkaXRvcltdO1xuXG4gIHByaXZhdGUgdGFibGVDb250cm9sc1ZpZXc6IFRhYmxlQ29udHJvbHNWaWV3O1xuXG4gIHB1YmxpYyBhc3luYyBvbmxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc29sZS5sb2coJ2xvYWRpbmcgbWFya2Rvd24tdGFibGUtZWRpdG9yIHBsdWdpbicpO1xuXG4gICAgYXdhaXQgdGhpcy5sb2FkU2V0dGluZ3MoKTtcblxuICAgIHRoaXMucmVnaXN0ZXJWaWV3KFxuICAgICAgVGFibGVDb250cm9sc1ZpZXdUeXBlLFxuICAgICAgKGxlYWYpID0+XG4gICAgICAgICh0aGlzLnRhYmxlQ29udHJvbHNWaWV3ID0gbmV3IFRhYmxlQ29udHJvbHNWaWV3KGxlYWYsIHRoaXMuc2V0dGluZ3MpKSxcbiAgICApO1xuXG4gICAgYWRkSWNvbnMoKTtcblxuICAgIGlmICh0aGlzLnNldHRpbmdzLnNob3dSaWJib25JY29uKSB7XG4gICAgICB0aGlzLmFkZFJpYmJvbkljb24oJ3NwcmVhZHNoZWV0JywgJ0FkdmFuY2VkIFRhYmxlcyBUb29sYmFyJywgKCkgPT4ge1xuICAgICAgICB0aGlzLnRvZ2dsZVRhYmxlQ29udHJvbHNWaWV3KCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmNtRWRpdG9ycyA9IFtdO1xuICAgIHRoaXMucmVnaXN0ZXJDb2RlTWlycm9yKChjbSkgPT4ge1xuICAgICAgdGhpcy5jbUVkaXRvcnMucHVzaChjbSk7XG4gICAgICBjbS5vbigna2V5ZG93bicsIHRoaXMuaGFuZGxlS2V5RG93bik7XG4gICAgfSk7XG5cbiAgICAvLyBDTTYgZWRpdG9yIGV4dGVuc2lvbiBmb3IgcmVtYXBwaW5nIGtleXNcbiAgICB0aGlzLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKHRoaXMubWFrZUVkaXRvckV4dGVuc2lvbigpKTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ25leHQtcm93JyxcbiAgICAgIG5hbWU6ICdHbyB0byBuZXh0IHJvdycsXG4gICAgICBpY29uOiAnYXJyb3dlbnRlcicsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzLmJpbmRFbnRlciAmJiAhdGhpcy5pc01vYmlsZSkge1xuICAgICAgICAgIG5ldyBOb3RpY2UoXG4gICAgICAgICAgICAnQWR2YW5jZWQgVGFibGVzOiBOZXh0IHJvdyBhbHNvIGJvdW5kIHRvIGVudGVyLiAnICtcbiAgICAgICAgICAgICAgJ1Bvc3NpYmx5IHByb2R1Y2luZyBkb3VibGUgYWN0aW9ucy4gU2VlIEFkdmFuY2VkIFRhYmxlcyBzZXR0aW5ncy4nLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGUubmV4dFJvdygpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICduZXh0LWNlbGwnLFxuICAgICAgbmFtZTogJ0dvIHRvIG5leHQgY2VsbCcsXG4gICAgICBpY29uOiAnYXJyb3d0YWInLFxuICAgICAgZWRpdG9yQ2hlY2tDYWxsYmFjazogdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb24oKHRlOiBUYWJsZUVkaXRvcikgPT4ge1xuICAgICAgICBpZiAodGhpcy5zZXR0aW5ncy5iaW5kVGFiICYmICF0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgbmV3IE5vdGljZShcbiAgICAgICAgICAgICdBZHZhbmNlZCBUYWJsZXM6IE5leHQgY2VsbCBhbHNvIGJvdW5kIHRvIHRhYi4gJyArXG4gICAgICAgICAgICAgICdQb3NzaWJseSBwcm9kdWNpbmcgZG91YmxlIGFjdGlvbnMuIFNlZSBBZHZhbmNlZCBUYWJsZXMgc2V0dGluZ3MuJyxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRlLm5leHRDZWxsKCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ3ByZXZpb3VzLWNlbGwnLFxuICAgICAgbmFtZTogJ0dvIHRvIHByZXZpb3VzIGNlbGwnLFxuICAgICAgZWRpdG9yQ2hlY2tDYWxsYmFjazogdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb24oKHRlOiBUYWJsZUVkaXRvcikgPT4ge1xuICAgICAgICBpZiAodGhpcy5zZXR0aW5ncy5iaW5kVGFiICYmICF0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgbmV3IE5vdGljZShcbiAgICAgICAgICAgICdBZHZhbmNlZCBUYWJsZXM6IFByZXZpb3VzIGNlbGwgYWxzbyBib3VuZCB0byBzaGlmdCt0YWIuICcgK1xuICAgICAgICAgICAgICAnUG9zc2libHkgcHJvZHVjaW5nIGRvdWJsZSBhY3Rpb25zLiBTZWUgQWR2YW5jZWQgVGFibGVzIHNldHRpbmdzLicsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0ZS5wcmV2aW91c0NlbGwoKTtcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAnZm9ybWF0LXRhYmxlJyxcbiAgICAgIG5hbWU6ICdGb3JtYXQgdGFibGUgYXQgdGhlIGN1cnNvcicsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLmZvcm1hdFRhYmxlKCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ2Zvcm1hdC1hbGwtdGFibGVzJyxcbiAgICAgIG5hbWU6ICdGb3JtYXQgYWxsIHRhYmxlcyBpbiB0aGlzIGZpbGUnLFxuICAgICAgZWRpdG9yQ2hlY2tDYWxsYmFjazogdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb24oKHRlOiBUYWJsZUVkaXRvcikgPT4ge1xuICAgICAgICB0ZS5mb3JtYXRBbGxUYWJsZXMoKTtcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAnaW5zZXJ0LWNvbHVtbicsXG4gICAgICBuYW1lOiAnSW5zZXJ0IGNvbHVtbiBiZWZvcmUgY3VycmVudCcsXG4gICAgICBpY29uOiAnaW5zZXJ0Q29sdW1uJyxcbiAgICAgIGVkaXRvckNoZWNrQ2FsbGJhY2s6IHRoaXMubmV3UGVyZm9ybVRhYmxlQWN0aW9uKCh0ZTogVGFibGVFZGl0b3IpID0+IHtcbiAgICAgICAgdGUuaW5zZXJ0Q29sdW1uKCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ2luc2VydC1yb3cnLFxuICAgICAgbmFtZTogJ0luc2VydCByb3cgYmVmb3JlIGN1cnJlbnQnLFxuICAgICAgaWNvbjogJ2luc2VydFJvdycsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLmluc2VydFJvdygpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdlc2NhcGUtdGFibGUnLFxuICAgICAgbmFtZTogJ01vdmUgY3Vyc29yIG91dCBvZiB0YWJsZScsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLmVzY2FwZSgpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdsZWZ0LWFsaWduLWNvbHVtbicsXG4gICAgICBuYW1lOiAnTGVmdCBhbGlnbiBjb2x1bW4nLFxuICAgICAgaWNvbjogJ2FsaWduTGVmdCcsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLmxlZnRBbGlnbkNvbHVtbigpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdjZW50ZXItYWxpZ24tY29sdW1uJyxcbiAgICAgIG5hbWU6ICdDZW50ZXIgYWxpZ24gY29sdW1uJyxcbiAgICAgIGljb246ICdhbGlnbkNlbnRlcicsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLmNlbnRlckFsaWduQ29sdW1uKCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ3JpZ2h0LWFsaWduLWNvbHVtbicsXG4gICAgICBuYW1lOiAnUmlnaHQgYWxpZ24gY29sdW1uJyxcbiAgICAgIGljb246ICdhbGlnblJpZ2h0JyxcbiAgICAgIGVkaXRvckNoZWNrQ2FsbGJhY2s6IHRoaXMubmV3UGVyZm9ybVRhYmxlQWN0aW9uKCh0ZTogVGFibGVFZGl0b3IpID0+IHtcbiAgICAgICAgdGUucmlnaHRBbGlnbkNvbHVtbigpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdtb3ZlLWNvbHVtbi1sZWZ0JyxcbiAgICAgIG5hbWU6ICdNb3ZlIGNvbHVtbiBsZWZ0JyxcbiAgICAgIGljb246ICdtb3ZlQ29sdW1uTGVmdCcsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLm1vdmVDb2x1bW5MZWZ0KCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ21vdmUtY29sdW1uLXJpZ2h0JyxcbiAgICAgIG5hbWU6ICdNb3ZlIGNvbHVtbiByaWdodCcsXG4gICAgICBpY29uOiAnbW92ZUNvbHVtblJpZ2h0JyxcbiAgICAgIGVkaXRvckNoZWNrQ2FsbGJhY2s6IHRoaXMubmV3UGVyZm9ybVRhYmxlQWN0aW9uKCh0ZTogVGFibGVFZGl0b3IpID0+IHtcbiAgICAgICAgdGUubW92ZUNvbHVtblJpZ2h0KCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ21vdmUtcm93LXVwJyxcbiAgICAgIG5hbWU6ICdNb3ZlIHJvdyB1cCcsXG4gICAgICBpY29uOiAnbW92ZVJvd1VwJyxcbiAgICAgIGVkaXRvckNoZWNrQ2FsbGJhY2s6IHRoaXMubmV3UGVyZm9ybVRhYmxlQWN0aW9uKCh0ZTogVGFibGVFZGl0b3IpID0+IHtcbiAgICAgICAgdGUubW92ZVJvd1VwKCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ21vdmUtcm93LWRvd24nLFxuICAgICAgbmFtZTogJ01vdmUgcm93IGRvd24nLFxuICAgICAgaWNvbjogJ21vdmVSb3dEb3duJyxcbiAgICAgIGVkaXRvckNoZWNrQ2FsbGJhY2s6IHRoaXMubmV3UGVyZm9ybVRhYmxlQWN0aW9uKCh0ZTogVGFibGVFZGl0b3IpID0+IHtcbiAgICAgICAgdGUubW92ZVJvd0Rvd24oKTtcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAnZGVsZXRlLWNvbHVtbicsXG4gICAgICBuYW1lOiAnRGVsZXRlIGNvbHVtbicsXG4gICAgICBpY29uOiAnZGVsZXRlQ29sdW1uJyxcbiAgICAgIGVkaXRvckNoZWNrQ2FsbGJhY2s6IHRoaXMubmV3UGVyZm9ybVRhYmxlQWN0aW9uKCh0ZTogVGFibGVFZGl0b3IpID0+IHtcbiAgICAgICAgdGUuZGVsZXRlQ29sdW1uKCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ2RlbGV0ZS1yb3cnLFxuICAgICAgbmFtZTogJ0RlbGV0ZSByb3cnLFxuICAgICAgaWNvbjogJ2RlbGV0ZVJvdycsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLmRlbGV0ZVJvdygpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdzb3J0LXJvd3MtYXNjZW5kaW5nJyxcbiAgICAgIG5hbWU6ICdTb3J0IHJvd3MgYXNjZW5kaW5nJyxcbiAgICAgIGljb246ICdzb3J0QXNjJyxcbiAgICAgIGVkaXRvckNoZWNrQ2FsbGJhY2s6IHRoaXMubmV3UGVyZm9ybVRhYmxlQWN0aW9uKCh0ZTogVGFibGVFZGl0b3IpID0+IHtcbiAgICAgICAgdGUuc29ydFJvd3NBc2MoKTtcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAnc29ydC1yb3dzLWRlc2NlbmRpbmcnLFxuICAgICAgbmFtZTogJ1NvcnQgcm93cyBkZXNjZW5kaW5nJyxcbiAgICAgIGljb246ICdzb3J0RGVzYycsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLnNvcnRSb3dzRGVzYygpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdldmFsdWF0ZS1mb3JtdWxhcycsXG4gICAgICBuYW1lOiAnRXZhbHVhdGUgdGFibGUgZm9ybXVsYXMnLFxuICAgICAgaWNvbjogJ2Zvcm11bGEnLFxuICAgICAgZWRpdG9yQ2hlY2tDYWxsYmFjazogKFxuICAgICAgICBjaGVja2luZzogYm9vbGVhbixcbiAgICAgICAgZWRpdG9yOiBFZGl0b3IsXG4gICAgICAgIHZpZXc6IE1hcmtkb3duVmlldyxcbiAgICAgICk6IGJvb2xlYW4gfCB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgdGUgPSBuZXcgVGFibGVFZGl0b3IodGhpcy5hcHAsIHZpZXcuZmlsZSwgZWRpdG9yLCB0aGlzLnNldHRpbmdzKTtcbiAgICAgICAgaWYgKGNoZWNraW5nKSB7XG4gICAgICAgICAgcmV0dXJuIHRlLmN1cnNvcklzSW5UYWJsZSgpIHx8IHRlLmN1cnNvcklzSW5UYWJsZUZvcm11bGEoKTtcbiAgICAgICAgfVxuICAgICAgICB0ZS5ldmFsdWF0ZUZvcm11bGFzKCk7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAndGFibGUtY29udHJvbC1iYXInLFxuICAgICAgbmFtZTogJ09wZW4gdGFibGUgY29udHJvbHMgdG9vbGJhcicsXG4gICAgICBob3RrZXlzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBtb2RpZmllcnM6IFsnTW9kJywgJ1NoaWZ0J10sXG4gICAgICAgICAga2V5OiAnZCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgdGhpcy50b2dnbGVUYWJsZUNvbnRyb2xzVmlldygpO1xuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkU2V0dGluZ1RhYihuZXcgVGFibGVFZGl0b3JTZXR0aW5nc1RhYih0aGlzLmFwcCwgdGhpcykpO1xuICB9XG5cbiAgcHVibGljIG9udW5sb2FkKCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCd1bmxvYWRpbmcgbWFya2Rvd24tdGFibGUtZWRpdG9yIHBsdWdpbicpO1xuXG4gICAgdGhpcy5jbUVkaXRvcnMuZm9yRWFjaCgoY20pID0+IHtcbiAgICAgIGNtLm9mZigna2V5ZG93bicsIHRoaXMuaGFuZGxlS2V5RG93bik7XG4gICAgfSk7XG4gIH1cblxuICAvLyBtYWtlRWRpdG9yRXh0ZW5zaW9uIGlzIHVzZWQgdG8gYmluZCBUYWIgYW5kIEVudGVyIGluIHRoZSBuZXcgQ002IExpdmUgUHJldmlldyBlZGl0b3IuXG4gIHByaXZhdGUgcmVhZG9ubHkgbWFrZUVkaXRvckV4dGVuc2lvbiA9ICgpOiBFeHRlbnNpb24gPT4ge1xuICAgIGNvbnN0IGtleW1hcHM6IEtleUJpbmRpbmdbXSA9IFtdO1xuXG4gICAgaWYgKHRoaXMuc2V0dGluZ3MuYmluZEVudGVyKSB7XG4gICAgICBrZXltYXBzLnB1c2goe1xuICAgICAgICBrZXk6ICdFbnRlcicsXG4gICAgICAgIHJ1bjogKCk6IGJvb2xlYW4gPT5cbiAgICAgICAgICB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbkNNNigodGU6IFRhYmxlRWRpdG9yKSA9PiB0ZS5uZXh0Um93KCkpKCksXG4gICAgICAgIHByZXZlbnREZWZhdWx0OiB0cnVlLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2V0dGluZ3MuYmluZFRhYikge1xuICAgICAga2V5bWFwcy5wdXNoKHtcbiAgICAgICAga2V5OiAnVGFiJyxcbiAgICAgICAgcnVuOiAoKTogYm9vbGVhbiA9PlxuICAgICAgICAgIHRoaXMubmV3UGVyZm9ybVRhYmxlQWN0aW9uQ002KCh0ZTogVGFibGVFZGl0b3IpID0+IHRlLm5leHRDZWxsKCkpKCksXG4gICAgICAgIHNoaWZ0OiAoKTogYm9vbGVhbiA9PlxuICAgICAgICAgIHRoaXMubmV3UGVyZm9ybVRhYmxlQWN0aW9uQ002KCh0ZTogVGFibGVFZGl0b3IpID0+XG4gICAgICAgICAgICB0ZS5wcmV2aW91c0NlbGwoKSxcbiAgICAgICAgICApKCksXG4gICAgICAgIHByZXZlbnREZWZhdWx0OiB0cnVlLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFByZWMub3ZlcnJpZGUoa2V5bWFwLm9mKGtleW1hcHMpKTtcbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG5ld1BlcmZvcm1UYWJsZUFjdGlvbkNNNiA9XG4gICAgKGZuOiAodGU6IFRhYmxlRWRpdG9yKSA9PiB2b2lkKTogKCgpID0+IGJvb2xlYW4pID0+XG4gICAgKCk6IGJvb2xlYW4gPT4ge1xuICAgICAgY29uc3QgbGVhZiA9IHRoaXMuYXBwLndvcmtzcGFjZS5hY3RpdmVMZWFmO1xuICAgICAgaWYgKGxlYWYudmlldyBpbnN0YW5jZW9mIE1hcmtkb3duVmlldykge1xuICAgICAgICBjb25zdCB0ZSA9IG5ldyBUYWJsZUVkaXRvcihcbiAgICAgICAgICB0aGlzLmFwcCxcbiAgICAgICAgICBsZWFmLnZpZXcuZmlsZSxcbiAgICAgICAgICBsZWFmLnZpZXcuZWRpdG9yLFxuICAgICAgICAgIHRoaXMuc2V0dGluZ3MsXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRlLmN1cnNvcklzSW5UYWJsZSgpKSB7XG4gICAgICAgICAgZm4odGUpO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG5ld1BlcmZvcm1UYWJsZUFjdGlvbiA9XG4gICAgKGZuOiAodGU6IFRhYmxlRWRpdG9yKSA9PiB2b2lkLCBhbGVydE9uTm9UYWJsZSA9IHRydWUpID0+XG4gICAgKGNoZWNraW5nOiBib29sZWFuLCBlZGl0b3I6IEVkaXRvciwgdmlldzogTWFya2Rvd25WaWV3KTogYm9vbGVhbiB8IHZvaWQgPT4ge1xuICAgICAgY29uc3QgdGUgPSBuZXcgVGFibGVFZGl0b3IodGhpcy5hcHAsIHZpZXcuZmlsZSwgZWRpdG9yLCB0aGlzLnNldHRpbmdzKTtcblxuICAgICAgaWYgKGNoZWNraW5nKSB7XG4gICAgICAgIHJldHVybiB0ZS5jdXJzb3JJc0luVGFibGUoKTtcbiAgICAgIH1cblxuICAgICAgZm4odGUpO1xuICAgIH07XG5cbiAgLy8gaGFuZGxlS2V5RG93biBpcyB1c2VkIHRvIGJpbmQgdGhlIHRhYiBhbmQgZW50ZXIga2V5cyBpbiB0aGUgbGVnYWN5IENNNSBlZGl0b3IuXG4gIHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlS2V5RG93biA9IChcbiAgICBjbTogQ29kZU1pcnJvci5FZGl0b3IsXG4gICAgZXZlbnQ6IEtleWJvYXJkRXZlbnQsXG4gICk6IHZvaWQgPT4ge1xuICAgIGlmIChbJ1RhYicsICdFbnRlciddLmNvbnRhaW5zKGV2ZW50LmtleSkpIHtcbiAgICAgIGxldCBlZGl0b3I6IEVkaXRvcjtcbiAgICAgIGxldCB2aWV3OiBNYXJrZG93blZpZXc7XG4gICAgICBjb25zdCBhY3RpdmVMZWFmID0gdGhpcy5hcHAud29ya3NwYWNlLmFjdGl2ZUxlYWY7XG4gICAgICBpZiAoYWN0aXZlTGVhZi52aWV3IGluc3RhbmNlb2YgTWFya2Rvd25WaWV3KSB7XG4gICAgICAgIGVkaXRvciA9IGFjdGl2ZUxlYWYudmlldy5lZGl0b3I7XG4gICAgICAgIHZpZXcgPSBhY3RpdmVMZWFmLnZpZXc7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMubmV3UGVyZm9ybVRhYmxlQWN0aW9uKCh0ZTogVGFibGVFZGl0b3IpID0+IHtcbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICBjYXNlICdUYWInOlxuICAgICAgICAgICAgaWYgKCF0aGlzLnNldHRpbmdzLmJpbmRUYWIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgdGUucHJldmlvdXNDZWxsKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0ZS5uZXh0Q2VsbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgaWYgKCF0aGlzLnNldHRpbmdzLmJpbmRFbnRlcikge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICB0ZS5lc2NhcGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5IHx8IGV2ZW50LmFsdEtleSkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0ZS5uZXh0Um93KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfSwgZmFsc2UpO1xuXG4gICAgICAvLyBDaGVjayBmaXJzdCBpZiB3ZSBhcmUgaW4gYSB0YWJsZSwgaWYgc28sIHRoZW4gZXhlY3V0ZS5cbiAgICAgIGlmIChhY3Rpb24odHJ1ZSwgZWRpdG9yLCB2aWV3KSkge1xuICAgICAgICBhY3Rpb24oZmFsc2UsIGVkaXRvciwgdmlldyk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdG9nZ2xlVGFibGVDb250cm9sc1ZpZXcgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0TGVhdmVzT2ZUeXBlKFRhYmxlQ29udHJvbHNWaWV3VHlwZSk7XG4gICAgaWYgKGV4aXN0aW5nLmxlbmd0aCkge1xuICAgICAgdGhpcy5hcHAud29ya3NwYWNlLnJldmVhbExlYWYoZXhpc3RpbmdbMF0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRSaWdodExlYWYoZmFsc2UpLnNldFZpZXdTdGF0ZSh7XG4gICAgICB0eXBlOiBUYWJsZUNvbnRyb2xzVmlld1R5cGUsXG4gICAgICBhY3RpdmU6IHRydWUsXG4gICAgfSk7XG5cbiAgICB0aGlzLmFwcC53b3Jrc3BhY2UucmV2ZWFsTGVhZihcbiAgICAgIHRoaXMuYXBwLndvcmtzcGFjZS5nZXRMZWF2ZXNPZlR5cGUoVGFibGVDb250cm9sc1ZpZXdUeXBlKVswXSxcbiAgICApO1xuICB9O1xuXG4gIHByaXZhdGUgYXN5bmMgbG9hZFNldHRpbmdzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHNldHRpbmdzT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICBkZWZhdWx0U2V0dGluZ3MsXG4gICAgICBhd2FpdCB0aGlzLmxvYWREYXRhKCksXG4gICAgKTtcbiAgICB0aGlzLnNldHRpbmdzID0gbmV3IFRhYmxlRWRpdG9yUGx1Z2luU2V0dGluZ3Moc2V0dGluZ3NPcHRpb25zKTtcbiAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpc01vYmlsZSA9ICgpOiBib29sZWFuID0+ICh0aGlzLmFwcCBhcyBhbnkpLmlzTW9iaWxlO1xufVxuXG5jbGFzcyBUYWJsZUVkaXRvclNldHRpbmdzVGFiIGV4dGVuZHMgUGx1Z2luU2V0dGluZ1RhYiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luOiBUYWJsZUVkaXRvclBsdWdpbjtcblxuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcGx1Z2luOiBUYWJsZUVkaXRvclBsdWdpbikge1xuICAgIHN1cGVyKGFwcCwgcGx1Z2luKTtcbiAgICB0aGlzLnBsdWdpbiA9IHBsdWdpbjtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwbGF5KCk6IHZvaWQge1xuICAgIGNvbnN0IHsgY29udGFpbmVyRWwgfSA9IHRoaXM7XG4gICAgY29udGFpbmVyRWwuZW1wdHkoKTtcblxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMicsIHsgdGV4dDogJ0FkdmFuY2VkIFRhYmxlcyBQbHVnaW4gLSBTZXR0aW5ncycgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdCaW5kIGVudGVyIHRvIHRhYmxlIG5hdmlnYXRpb24nKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgICdSZXF1aXJlcyByZXN0YXJ0IG9mIE9ic2lkaWFuLiBJZiBlbmFibGVkLCB3aGVuIHRoZSBjdXJzb3IgaXMgaW4gYSB0YWJsZSwgZW50ZXIgYWR2YW5jZXMgdG8gdGhlIG5leHQgJyArXG4gICAgICAgICAgJ3Jvdy4gRGlzYWJsaW5nIHRoaXMgY2FuIGhlbHAgYXZvaWQgY29uZmxpY3Rpbmcgd2l0aCB0YWcgb3IgQ0pLICcgK1xuICAgICAgICAgICdhdXRvY29tcGxldGlvbi4gSWYgZGlzYWJsaW5nLCBiaW5kIFwiR28gdG8gLi4uXCIgaW4gdGhlIE9ic2lkaWFuIEhvdGtleXMgc2V0dGluZ3MuJyxcbiAgICAgIClcbiAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT5cbiAgICAgICAgdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmJpbmRFbnRlcikub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuYmluZEVudGVyID0gdmFsdWU7XG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xuICAgICAgICAgIHRoaXMuZGlzcGxheSgpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdCaW5kIHRhYiB0byB0YWJsZSBuYXZpZ2F0aW9uJylcbiAgICAgIC5zZXREZXNjKFxuICAgICAgICAnUmVxdWlyZXMgcmVzdGFydCBvZiBPYnNpZGlhbi4gSWYgZW5hYmxlZCwgd2hlbiB0aGUgY3Vyc29yIGlzIGluIGEgdGFibGUsIHRhYi9zaGlmdCt0YWIgbmF2aWdhdGUgJyArXG4gICAgICAgICAgJ2JldHdlZW4gY2VsbHMuIERpc2FibGluZyB0aGlzIGNhbiBoZWxwIGF2b2lkIGNvbmZsaWN0aW5nIHdpdGggdGFnICcgK1xuICAgICAgICAgICdvciBDSksgYXV0b2NvbXBsZXRpb24uIElmIGRpc2FibGluZywgYmluZCBcIkdvIHRvIC4uLlwiIGluIHRoZSBPYnNpZGlhbiBIb3RrZXlzIHNldHRpbmdzLicsXG4gICAgICApXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XG4gICAgICAgIHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5iaW5kVGFiKS5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5iaW5kVGFiID0gdmFsdWU7XG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xuICAgICAgICAgIHRoaXMuZGlzcGxheSgpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdQYWQgY2VsbCB3aWR0aCB1c2luZyBzcGFjZXMnKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgICdJZiBlbmFibGVkLCB0YWJsZSBjZWxscyB3aWxsIGhhdmUgc3BhY2VzIGFkZGVkIHRvIG1hdGNoIHRoZSB3aWR0aCBvZiB0aGUgJyArXG4gICAgICAgICAgJ2xvbmdlc3QgY2VsbCBpbiB0aGUgY29sdW1uLicsXG4gICAgICApXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XG4gICAgICAgIHRvZ2dsZVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5mb3JtYXRUeXBlID09PSBGb3JtYXRUeXBlLk5PUk1BTClcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5mb3JtYXRUeXBlID0gdmFsdWVcbiAgICAgICAgICAgICAgPyBGb3JtYXRUeXBlLk5PUk1BTFxuICAgICAgICAgICAgICA6IEZvcm1hdFR5cGUuV0VBSztcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheSgpO1xuICAgICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoJ1Nob3cgaWNvbiBpbiBzaWRlYmFyJylcbiAgICAgIC5zZXREZXNjKFxuICAgICAgICAnSWYgZW5hYmxlZCwgYSBidXR0b24gd2hpY2ggb3BlbnMgdGhlIHRhYmxlIGNvbnRyb2xzIHRvb2xiYXIgd2lsbCBiZSBhZGRlZCB0byB0aGUgT2JzaWRpYW4gc2lkZWJhci4gJyArXG4gICAgICAgICAgJ1RoZSB0b29sYmFyIGNhbiBhbHNvIGJlIG9wZW5lZCB3aXRoIGEgSG90a2V5LiBDaGFuZ2VzIG9ubHkgdGFrZSBlZmZlY3Qgb24gcmVsb2FkLicsXG4gICAgICApXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XG4gICAgICAgIHRvZ2dsZVxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5zaG93UmliYm9uSWNvbilcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5zaG93UmliYm9uSWNvbiA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5KCk7XG4gICAgICAgICAgfSksXG4gICAgICApO1xuXG4gICAgY29uc3QgZGl2ID0gY29udGFpbmVyRWwuY3JlYXRlRWwoJ2RpdicsIHtcbiAgICAgIGNsczogJ2FkdmFuY2VkLXRhYmxlcy1kb25hdGlvbicsXG4gICAgfSk7XG5cbiAgICBjb25zdCBkb25hdGVUZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpO1xuICAgIGRvbmF0ZVRleHQuYXBwZW5kVGV4dChcbiAgICAgICdJZiB0aGlzIHBsdWdpbiBhZGRzIHZhbHVlIGZvciB5b3UgYW5kIHlvdSB3b3VsZCBsaWtlIHRvIGhlbHAgc3VwcG9ydCAnICtcbiAgICAgICAgJ2NvbnRpbnVlZCBkZXZlbG9wbWVudCwgcGxlYXNlIHVzZSB0aGUgYnV0dG9ucyBiZWxvdzonLFxuICAgICk7XG4gICAgZGl2LmFwcGVuZENoaWxkKGRvbmF0ZVRleHQpO1xuXG4gICAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xuXG4gICAgZGl2LmFwcGVuZENoaWxkKFxuICAgICAgY3JlYXRlRG9uYXRlQnV0dG9uKFxuICAgICAgICAnaHR0cHM6Ly9wYXlwYWwubWUvdGdyb3NpbmdlcicsXG4gICAgICAgIHBhcnNlci5wYXJzZUZyb21TdHJpbmcocGF5cGFsLCAndGV4dC94bWwnKS5kb2N1bWVudEVsZW1lbnQsXG4gICAgICApLFxuICAgICk7XG5cbiAgICBkaXYuYXBwZW5kQ2hpbGQoXG4gICAgICBjcmVhdGVEb25hdGVCdXR0b24oXG4gICAgICAgICdodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL3Rncm9zaW5nZXInLFxuICAgICAgICBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKGJ1eU1lQUNvZmZlZSwgJ3RleHQveG1sJykuZG9jdW1lbnRFbGVtZW50LFxuICAgICAgKSxcbiAgICApO1xuICB9XG59XG5cbmNvbnN0IGNyZWF0ZURvbmF0ZUJ1dHRvbiA9IChsaW5rOiBzdHJpbmcsIGltZzogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCA9PiB7XG4gIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gIGEuc2V0QXR0cmlidXRlKCdocmVmJywgbGluayk7XG4gIGEuYWRkQ2xhc3MoJ2FkdmFuY2VkLXRhYmxlcy1kb25hdGUtYnV0dG9uJyk7XG4gIGEuYXBwZW5kQ2hpbGQoaW1nKTtcbiAgcmV0dXJuIGE7XG59O1xuXG5jb25zdCBidXlNZUFDb2ZmZWUgPSBgXG48c3ZnIHdpZHRoPVwiMTUwXCIgaGVpZ2h0PVwiNDJcIiB2aWV3Qm94PVwiMCAwIDI2MCA3M1wiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPHBhdGggZD1cIk0wIDExLjY4QzAgNS4yMjkzMiA1LjIyOTMxIDAgMTEuNjggMEgyNDguMkMyNTQuNjUxIDAgMjU5Ljg4IDUuMjI5MzEgMjU5Ljg4IDExLjY4VjYxLjMyQzI1OS44OCA2Ny43NzA3IDI1NC42NTEgNzMgMjQ4LjIgNzNIMTEuNjhDNS4yMjkzMSA3MyAwIDY3Ljc3MDcgMCA2MS4zMlYxMS42OFpcIiBmaWxsPVwiI0ZGREQwMFwiLz5cbjxwYXRoIGQ9XCJNNTIuMjU2NiAyNC4wMDc4TDUyLjIyNDYgMjMuOTg4OUw1Mi4xNTA0IDIzLjk2NjNDNTIuMTgwMiAyMy45OTE1IDUyLjIxNzYgMjQuMDA2MSA1Mi4yNTY2IDI0LjAwNzhaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XG48cGF0aCBkPVwiTTUyLjcyNDggMjcuMzQ1N0w1Mi42ODk1IDI3LjM1NTZMNTIuNzI0OCAyNy4zNDU3WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxuPHBhdGggZD1cIk01Mi4yNzAxIDI0LjAwMjRDNTIuMjY2IDI0LjAwMTkgNTIuMjYxOSAyNC4wMDA5IDUyLjI1OCAyMy45OTk1QzUyLjI1NzggMjQuMDAyMiA1Mi4yNTc4IDI0LjAwNDkgNTIuMjU4IDI0LjAwNzZDNTIuMjYyNCAyNC4wMDcgNTIuMjY2NiAyNC4wMDUyIDUyLjI3MDEgMjQuMDAyNFpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cbjxwYXRoIGQ9XCJNNTIuMjU3OCAyNC4wMDk0SDUyLjI2NDNWMjQuMDA1NEw1Mi4yNTc4IDI0LjAwOTRaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XG48cGF0aCBkPVwiTTUyLjY5NzMgMjcuMzM5NEw1Mi43NTEzIDI3LjMwODZMNTIuNzcxNCAyNy4yOTczTDUyLjc4OTcgMjcuMjc3OEM1Mi43NTU0IDI3LjI5MjYgNTIuNzI0MSAyNy4zMTM1IDUyLjY5NzMgMjcuMzM5NFpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cbjxwYXRoIGQ9XCJNNTIuMzQ4NCAyNC4wODEyTDUyLjI5NTYgMjQuMDMxTDUyLjI1OTggMjQuMDExNUM1Mi4yNzkgMjQuMDQ1NCA1Mi4zMTA4IDI0LjA3MDUgNTIuMzQ4NCAyNC4wODEyWlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxuPHBhdGggZD1cIk0zOS4wNjg0IDU2LjQ2OUMzOS4wMjYyIDU2LjQ4NzIgMzguOTg5MyA1Ni41MTU4IDM4Ljk2MDkgNTYuNTUyTDM4Ljk5NDMgNTYuNTMwNkMzOS4wMTY5IDU2LjUwOTggMzkuMDQ4OSA1Ni40ODUzIDM5LjA2ODQgNTYuNDY5WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxuPHBhdGggZD1cIk00Ni43ODAyIDU0Ljk1MThDNDYuNzgwMiA1NC45MDQxIDQ2Ljc1NjkgNTQuOTEyOSA0Ni43NjI2IDU1LjA4MjZDNDYuNzYyNiA1NS4wNjg3IDQ2Ljc2ODMgNTUuMDU0OSA0Ni43NzA4IDU1LjA0MTdDNDYuNzczOSA1NS4wMTE1IDQ2Ljc3NjQgNTQuOTgyIDQ2Ljc4MDIgNTQuOTUxOFpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cbjxwYXRoIGQ9XCJNNDUuOTg0NCA1Ni40NjlDNDUuOTQyMiA1Ni40ODcyIDQ1LjkwNTMgNTYuNTE1OCA0NS44NzcgNTYuNTUyTDQ1LjkxMDMgNTYuNTMwNkM0NS45MzI5IDU2LjUwOTggNDUuOTY0OSA1Ni40ODUzIDQ1Ljk4NDQgNTYuNDY5WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxuPHBhdGggZD1cIk0zMy42MzA3IDU2LjgzMDFDMzMuNTk4NyA1Ni44MDIzIDMzLjU1OTUgNTYuNzg0IDMzLjUxNzYgNTYuNzc3M0MzMy41NTE1IDU2Ljc5MzcgMzMuNTg1NSA1Ni44MSAzMy42MDgxIDU2LjgyMjZMMzMuNjMwNyA1Ni44MzAxWlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxuPHBhdGggZD1cIk0zMi40MTE4IDU1LjY1OThDMzIuNDA2OCA1NS42MTAzIDMyLjM5MTYgNTUuNTYyNCAzMi4zNjcyIDU1LjUxOUMzMi4zODQ1IDU1LjU2NDIgMzIuMzk5IDU1LjYxMDQgMzIuNDEwNiA1NS42NTczTDMyLjQxMTggNTUuNjU5OFpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cbjxwYXRoIGQ9XCJNNDAuNjIzIDM0LjcyMjFDMzguOTQ0OSAzNS40NDA1IDM3LjA0MDQgMzYuMjU1MSAzNC41NzIyIDM2LjI1NTFDMzMuNTM5NyAzNi4yNTMxIDMyLjUxMjIgMzYuMTExNCAzMS41MTc2IDM1LjgzNEwzMy4yMjQ3IDUzLjM2MDVDMzMuMjg1MSA1NC4wOTMgMzMuNjE4OCA1NC43NzYxIDM0LjE1OTUgNTUuMjczOUMzNC43MDAzIDU1Ljc3MTggMzUuNDA4NSA1Ni4wNDgyIDM2LjE0MzUgNTYuMDQ4QzM2LjE0MzUgNTYuMDQ4IDM4LjU2NCA1Ni4xNzM3IDM5LjM3MTYgNTYuMTczN0M0MC4yNDA5IDU2LjE3MzcgNDIuODQ3NCA1Ni4wNDggNDIuODQ3NCA1Ni4wNDhDNDMuNTgyMyA1Ni4wNDggNDQuMjkwNCA1NS43NzE2IDQ0LjgzMSA1NS4yNzM3QzQ1LjM3MTYgNTQuNzc1OSA0NS43MDUyIDU0LjA5MjkgNDUuNzY1NiA1My4zNjA1TDQ3LjU5NCAzMy45OTNDNDYuNzc2OSAzMy43MTQgNDUuOTUyMyAzMy41Mjg2IDQ1LjAyMjcgMzMuNTI4NkM0My40MTUgMzMuNTI3OSA0Mi4xMTk2IDM0LjA4MTcgNDAuNjIzIDM0LjcyMjFaXCIgZmlsbD1cIndoaXRlXCIvPlxuPHBhdGggZD1cIk0yNi4yMzQ0IDI3LjI0NDlMMjYuMjYzMyAyNy4yNzE5TDI2LjI4MjEgMjcuMjgzMkMyNi4yNjc2IDI3LjI2ODggMjYuMjUxNiAyNy4yNTU5IDI2LjIzNDQgMjcuMjQ0OVpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cbjxwYXRoIGQ9XCJNNTUuNDkwNiAyNS42Mjc0TDU1LjIzMzYgMjQuMzMwN0M1NS4wMDI5IDIzLjE2NzMgNTQuNDc5MyAyMi4wNjggNTMuMjg1MSAyMS42NDc1QzUyLjkwMjQgMjEuNTEzIDUyLjQ2OCAyMS40NTUyIDUyLjE3NDUgMjEuMTc2OEM1MS44ODEgMjAuODk4MyA1MS43OTQzIDIwLjQ2NTkgNTEuNzI2NCAyMC4wNjQ5QzUxLjYwMDcgMTkuMzI4OSA1MS40ODI1IDE4LjU5MjMgNTEuMzUzNyAxNy44NTc1QzUxLjI0MjQgMTcuMjI1OSA1MS4xNTQ0IDE2LjUxNjMgNTAuODY0NyAxNS45MzY4QzUwLjQ4NzYgMTUuMTU4NiA0OS43MDUgMTQuNzAzNiA0OC45MjY5IDE0LjQwMjVDNDguNTI4MiAxNC4yNTM3IDQ4LjEyMTMgMTQuMTI3OCA0Ny43MDgyIDE0LjAyNTRDNDUuNzY0MiAxMy41MTI1IDQzLjcyMDIgMTMuMzI0IDQxLjcyMDIgMTMuMjE2NUMzOS4zMTk3IDEzLjA4NCAzNi45MTI4IDEzLjEyMzkgMzQuNTE4IDEzLjMzNTlDMzIuNzM1NSAxMy40OTgxIDMwLjg1ODEgMTMuNjk0MiAyOS4xNjQyIDE0LjMxMDhDMjguNTQ1MSAxNC41MzY0IDI3LjkwNzEgMTQuODA3MyAyNy40MzY0IDE1LjI4NTZDMjYuODU4NyAxNS44NzMzIDI2LjY3MDIgMTYuNzgyMSAyNy4wOTE5IDE3LjUxNUMyNy4zOTE3IDE4LjAzNTQgMjcuODk5NiAxOC40MDMxIDI4LjQzODIgMTguNjQ2M0MyOS4xMzk4IDE4Ljk1OTcgMjkuODcyNiAxOS4xOTgyIDMwLjYyNDIgMTkuMzU3OEMzMi43MTcyIDE5LjgyMDQgMzQuODg1IDIwLjAwMjEgMzcuMDIzMyAyMC4wNzk0QzM5LjM5MzIgMjAuMTc1IDQxLjc2NyAyMC4wOTc1IDQ0LjEyNTYgMTkuODQ3NEM0NC43MDg5IDE5Ljc4MzMgNDUuMjkxMSAxOS43MDY0IDQ1Ljg3MjMgMTkuNjE2OEM0Ni41NTY4IDE5LjUxMTggNDYuOTk2MSAxOC42MTY4IDQ2Ljc5NDMgMTcuOTkzM0M0Ni41NTMgMTcuMjQ3OSA0NS45MDQ0IDE2Ljk1ODcgNDUuMTcwOSAxNy4wNzEyQzQ1LjA2MjggMTcuMDg4MiA0NC45NTUzIDE3LjEwMzkgNDQuODQ3MiAxNy4xMTk2TDQ0Ljc2OTIgMTcuMTMxQzQ0LjUyMDggMTcuMTYyNCA0NC4yNzIzIDE3LjE5MTcgNDQuMDIzOCAxNy4yMTlDNDMuNTEwNSAxNy4yNzQzIDQyLjk5NTkgMTcuMzE5NSA0Mi40ODAxIDE3LjM1NDdDNDEuMzI0OSAxNy40MzUyIDQwLjE2NjUgMTcuNDcyMiAzOS4wMDg4IDE3LjQ3NDFDMzcuODcxMiAxNy40NzQxIDM2LjczMjkgMTcuNDQyMSAzNS41OTc4IDE3LjM2NzNDMzUuMDc5OSAxNy4zMzMzIDM0LjU2MzIgMTcuMjkwMiAzNC4wNDc4IDE3LjIzNzhDMzMuODEzNCAxNy4yMTMzIDMzLjU3OTYgMTcuMTg3NSAzMy4zNDU4IDE3LjE1ODZMMzMuMTIzMyAxNy4xMzAzTDMzLjA3NDkgMTcuMTIzNEwzMi44NDQyIDE3LjA5MDFDMzIuMzcyOCAxNy4wMTkxIDMxLjkwMTQgMTYuOTM3NCAzMS40MzUgMTYuODM4N0MzMS4zODggMTYuODI4MyAzMS4zNDU5IDE2LjgwMjEgMzEuMzE1NyAxNi43NjQ1QzMxLjI4NTYgMTYuNzI2OSAzMS4yNjkxIDE2LjY4MDEgMzEuMjY5MSAxNi42MzE5QzMxLjI2OTEgMTYuNTgzNyAzMS4yODU2IDE2LjUzNjkgMzEuMzE1NyAxNi40OTkzQzMxLjM0NTkgMTYuNDYxNyAzMS4zODggMTYuNDM1NiAzMS40MzUgMTYuNDI1MUgzMS40NDM4QzMxLjg0OCAxNi4zMzkgMzIuMjU1MyAxNi4yNjU1IDMyLjY2MzggMTYuMjAxNEMzMi44IDE2LjE4IDMyLjkzNjYgMTYuMTU5IDMzLjA3MzYgMTYuMTM4NUgzMy4wNzc0QzMzLjMzMzIgMTYuMTIxNSAzMy41OTAzIDE2LjA3NTcgMzMuODQ0OCAxNi4wNDU1QzM2LjA1OTUgMTUuODE1MSAzOC4yODc0IDE1LjczNjYgNDAuNTEyOCAxNS44MTA0QzQxLjU5MzMgMTUuODQxOSA0Mi42NzMxIDE1LjkwNTMgNDMuNzQ4NSAxNi4wMTQ3QzQzLjk3OTggMTYuMDM4NiA0NC4yMDk4IDE2LjA2MzcgNDQuNDM5OSAxNi4wOTJDNDQuNTI3OSAxNi4xMDI3IDQ0LjYxNjUgMTYuMTE1MyA0NC43MDUxIDE2LjEyNTlMNDQuODgzNiAxNi4xNTE3QzQ1LjQwNCAxNi4yMjkyIDQ1LjkyMTcgMTYuMzIzMyA0Ni40MzY3IDE2LjQzMzlDNDcuMTk5NyAxNi41OTk5IDQ4LjE3OTYgMTYuNjUzOSA0OC41MTkgMTcuNDg5OEM0OC42MjcxIDE3Ljc1NTEgNDguNjc2MSAxOC4wNDk5IDQ4LjczNTkgMTguMzI4M0w0OC44MTE5IDE4LjY4MzRDNDguODEzOSAxOC42ODk4IDQ4LjgxNTQgMTguNjk2MyA0OC44MTYzIDE4LjcwMjlDNDguOTk2MSAxOS41NDA5IDQ5LjE3NiAyMC4zNzkgNDkuMzU2MiAyMS4yMTdDNDkuMzY5NCAyMS4yNzg5IDQ5LjM2OTcgMjEuMzQyOSA0OS4zNTcxIDIxLjQwNDlDNDkuMzQ0NSAyMS40NjY5IDQ5LjMxOTMgMjEuNTI1NyA0OS4yODI5IDIxLjU3NzZDNDkuMjQ2NiAyMS42Mjk0IDQ5LjIgMjEuNjczMiA0OS4xNDYgMjEuNzA2MkM0OS4wOTIgMjEuNzM5MiA0OS4wMzE3IDIxLjc2MDggNDguOTY5IDIxLjc2OTVINDguOTY0TDQ4Ljg1NCAyMS43ODQ2TDQ4Ljc0NTMgMjEuNzk5QzQ4LjQwMDkgMjEuODQzOSA0OC4wNTYgMjEuODg1OCA0Ny43MTA3IDIxLjkyNDdDNDcuMDMwNyAyMi4wMDIyIDQ2LjM0OTYgMjIuMDY5MyA0NS42Njc0IDIyLjEyNTlDNDQuMzExOSAyMi4yMzg2IDQyLjk1MzYgMjIuMzEyNSA0MS41OTI3IDIyLjM0NzdDNDAuODk5MiAyMi4zNjYyIDQwLjIwNTkgMjIuMzc0OCAzOS41MTI5IDIyLjM3MzVDMzYuNzU0MyAyMi4zNzEzIDMzLjk5ODEgMjIuMjExIDMxLjI1NzggMjEuODkzM0MzMC45NjExIDIxLjg1ODEgMzAuNjY0NSAyMS44MjA0IDMwLjM2NzggMjEuNzgyMUMzMC41OTc4IDIxLjgxMTYgMzAuMjAwNiAyMS43NTk0IDMwLjEyMDIgMjEuNzQ4MUMyOS45MzE2IDIxLjcyMTcgMjkuNzQzMSAyMS42OTQzIDI5LjU1NDUgMjEuNjY1OEMyOC45MjE2IDIxLjU3MDkgMjguMjkyNCAyMS40NTQgMjcuNjYwNyAyMS4zNTE1QzI2Ljg5NzEgMjEuMjI1OCAyNi4xNjY3IDIxLjI4ODcgMjUuNDc2IDIxLjY2NThDMjQuOTA5IDIxLjk3NiAyNC40NTAxIDIyLjQ1MTggMjQuMTYwNSAyMy4wMjk3QzIzLjg2MjYgMjMuNjQ1NiAyMy43NzM5IDI0LjMxNjMgMjMuNjQwNyAyNC45NzgxQzIzLjUwNzQgMjUuNjM5OSAyMy4zIDI2LjM1MjEgMjMuMzc4NiAyNy4wMzE1QzIzLjU0NzcgMjguNDk3OSAyNC41NzI4IDI5LjY4OTUgMjYuMDQ3MyAyOS45NTZDMjcuNDM0NSAzMC4yMDc0IDI4LjgyOTIgMzAuNDExMSAzMC4yMjc2IDMwLjU4NDZDMzUuNzIxMiAzMS4yNTc0IDQxLjI3MTEgMzEuMzM3OSA0Ni43ODE4IDMwLjgyNDdDNDcuMjMwNSAzMC43ODI4IDQ3LjY3ODcgMzAuNzM3MSA0OC4xMjYyIDMwLjY4NzZDNDguMjY2IDMwLjY3MjMgNDguNDA3NCAzMC42ODg0IDQ4LjU0MDEgMzAuNzM0OEM0OC42NzI5IDMwLjc4MTIgNDguNzkzNiAzMC44NTY2IDQ4Ljg5MzQgMzAuOTU1N0M0OC45OTMyIDMxLjA1NDggNDkuMDY5NSAzMS4xNzQ5IDQ5LjExNjkgMzEuMzA3M0M0OS4xNjQyIDMxLjQzOTcgNDkuMTgxNCAzMS41ODExIDQ5LjE2NyAzMS43MjA5TDQ5LjAyNzUgMzMuMDc3M0M0OC43NDYzIDM1LjgxODEgNDguNDY1MiAzOC41NTg3IDQ4LjE4NCA0MS4yOTlDNDcuODkwNyA0NC4xNzY5IDQ3LjU5NTUgNDcuMDU0NSA0Ny4yOTg0IDQ5LjkzMTlDNDcuMjE0NiA1MC43NDIyIDQ3LjEzMDggNTEuNTUyNCA0Ny4wNDcgNTIuMzYyNEM0Ni45NjY2IDUzLjE2IDQ2Ljk1NTIgNTMuOTgyNyA0Ni44MDM4IDU0Ljc3MDlDNDYuNTY0OSA1Ni4wMTAzIDQ1LjcyNTggNTYuNzcxNSA0NC41MDE1IDU3LjA0OTlDNDMuMzc5OCA1Ny4zMDUyIDQyLjIzMzkgNTcuNDM5MiA0MS4wODM2IDU3LjQ0OTdDMzkuODA4MyA1Ny40NTY2IDM4LjUzMzYgNTcuNCAzNy4yNTgzIDU3LjQwNjlDMzUuODk3IDU3LjQxNDUgMzQuMjI5NSA1Ny4yODg3IDMzLjE3ODYgNTYuMjc1NkMzMi4yNTUzIDU1LjM4NTYgMzIuMTI3NyA1My45OTIxIDMyLjAwMiA1Mi43ODcyQzMxLjgzNDQgNTEuMTkyIDMxLjY2ODIgNDkuNTk3MSAzMS41MDM2IDQ4LjAwMjNMMzAuNTc5NiAzOS4xMzQ0TDI5Ljk4MTkgMzMuMzk2NkMyOS45NzE4IDMzLjMwMTcgMjkuOTYxOCAzMy4yMDggMjkuOTUyNCAzMy4xMTI1QzI5Ljg4MDcgMzIuNDI4IDI5LjM5NjEgMzEuNzU4IDI4LjYzMjQgMzEuNzkyNkMyNy45Nzg4IDMxLjgyMTUgMjcuMjM1OSAzMi4zNzcxIDI3LjMxMjUgMzMuMTEyNUwyNy43NTU3IDM3LjM2NjRMMjguNjcyIDQ2LjE2NTdDMjguOTMzMSA0OC42NjUyIDI5LjE5MzUgNTEuMTY1IDI5LjQ1MzMgNTMuNjY1M0MyOS41MDM2IDU0LjE0NDIgMjkuNTUwNyA1NC42MjQ0IDI5LjYwMzUgNTUuMTAzNEMyOS44OTA4IDU3LjcyMDUgMzEuODg5NSA1OS4xMzEgMzQuMzY0NiA1OS41MjgyQzM1LjgxMDIgNTkuNzYwNyAzNy4yOTEgNTkuODA4NSAzOC43NTggNTkuODMyNEM0MC42Mzg2IDU5Ljg2MjYgNDIuNTM4IDU5LjkzNDggNDQuMzg3NyA1OS41OTQyQzQ3LjEyODcgNTkuMDkxNCA0OS4xODUzIDU3LjI2MTEgNDkuNDc4OCA1NC40MjJDNDkuNTYyNiA1My42MDI0IDQ5LjY0NjQgNTIuNzgyNiA0OS43MzAyIDUxLjk2MjZDNTAuMDA4OCA0OS4yNTA3IDUwLjI4NzEgNDYuNTM4NiA1MC41NjQ5IDQzLjgyNjNMNTEuNDczNyAzNC45NjQxTDUxLjg5MDQgMzAuOTAyNkM1MS45MTEyIDMwLjcwMTIgNTEuOTk2MiAzMC41MTE4IDUyLjEzMyAzMC4zNjI1QzUyLjI2OTcgMzAuMjEzMiA1Mi40NTA5IDMwLjExMTkgNTIuNjQ5NyAzMC4wNzM2QzUzLjQzMzUgMjkuOTIwOCA1NC4xODI3IDI5LjY2IDU0Ljc0MDIgMjkuMDYzNUM1NS42Mjc3IDI4LjExMzggNTUuODA0MyAyNi44NzU2IDU1LjQ5MDYgMjUuNjI3NFpNMjYuMDA3MSAyNi41MDM1QzI2LjAxOSAyNi40OTc5IDI1Ljk5NyAyNi42MDAzIDI1Ljk4NzYgMjYuNjQ4MUMyNS45ODU3IDI2LjU3NTggMjUuOTg5NSAyNi41MTE3IDI2LjAwNzEgMjYuNTAzNVpNMjYuMDgzMSAyNy4wOTE4QzI2LjA4OTQgMjcuMDg3NCAyNi4xMDgzIDI3LjExMjYgMjYuMTI3OCAyNy4xNDI4QzI2LjA5ODIgMjcuMTE1MSAyNi4wNzk0IDI3LjA5NDQgMjYuMDgyNSAyNy4wOTE4SDI2LjA4MzFaTTI2LjE1NzkgMjcuMTkwNUMyNi4xODUgMjcuMjM2NCAyNi4xOTk0IDI3LjI2NTMgMjYuMTU3OSAyNy4xOTA1VjI3LjE5MDVaTTI2LjMwODIgMjcuMzEyNUgyNi4zMTE5QzI2LjMxMTkgMjcuMzE2OSAyNi4zMTg4IDI3LjMyMTMgMjYuMzIxNCAyNy4zMjU3QzI2LjMxNzIgMjcuMzIwOCAyNi4zMTI2IDI3LjMxNjQgMjYuMzA3NSAyNy4zMTI1SDI2LjMwODJaTTUyLjYxMzIgMjcuMTMwMkM1Mi4zMzE3IDI3LjM5NzkgNTEuOTA3NCAyNy41MjI0IDUxLjQ4ODIgMjcuNTg0NkM0Ni43ODY4IDI4LjI4MjMgNDIuMDE2OSAyOC42MzU1IDM3LjI2NCAyOC40Nzk2QzMzLjg2MjQgMjguMzYzMyAzMC40OTY3IDI3Ljk4NTYgMjcuMTI5IDI3LjUwOThDMjYuNzk5IDI3LjQ2MzMgMjYuNDQxNCAyNy40MDMgMjYuMjE0NSAyNy4xNTk3QzI1Ljc4NzEgMjYuNzAwOSAyNS45OTcgMjUuNzc3IDI2LjEwODMgMjUuMjIyNkMyNi4yMTAxIDI0LjcxNDggMjYuNDA1IDI0LjAzNzggMjcuMDA5IDIzLjk2NTZDMjcuOTUxOCAyMy44NTQ5IDI5LjA0NjYgMjQuMjUyOCAyOS45Nzk0IDI0LjM5NDJDMzEuMTAyMyAyNC41NjU2IDMyLjIyOTUgMjQuNzAyOCAzMy4zNjA5IDI0LjgwNTlDMzguMTg5MiAyNS4yNDU5IDQzLjA5ODYgMjUuMTc3NCA0Ny45MDU2IDI0LjUzMzdDNDguNzgxNyAyNC40MTYgNDkuNjU0OCAyNC4yNzkyIDUwLjUyNDYgMjQuMTIzM0M1MS4yOTk2IDIzLjk4NDQgNTIuMTU4OCAyMy43MjM2IDUyLjYyNzEgMjQuNTI2MkM1Mi45NDgyIDI1LjA3MyA1Mi45OTEgMjUuODA0NiA1Mi45NDEzIDI2LjQyMjVDNTIuOTI2IDI2LjY5MTcgNTIuODA4NCAyNi45NDQ4IDUyLjYxMjYgMjcuMTMwMkg1Mi42MTMyWlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxuPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTgxLjEzMDIgNDAuMTkyOUM4MC44NTU2IDQwLjcxNjkgODAuNDc4MSA0MS4xNzMyIDc5Ljk5NzggNDEuNTYwNEM3OS41MTc1IDQxLjk0NzkgNzguOTU3MSA0Mi4yNjMzIDc4LjMxNjYgNDIuNTA2MkM3Ny42NzYxIDQyLjc0OTcgNzcuMDMxNSA0Mi45MTMxIDc2LjM4MzUgNDIuOTk2NEM3NS43MzUyIDQzLjA3OTkgNzUuMTA2IDQzLjA3MjcgNzQuNDk2MyA0Mi45NzM1QzczLjg4NjMgNDIuODc0OSA3My4zNjc0IDQyLjY3MzcgNzIuOTQwOCA0Mi4zNjk1TDczLjQyMTQgMzcuMzc3OUM3My44NjMzIDM3LjIyNjEgNzQuNDE5NyAzNy4wNzAzIDc1LjA5MDkgMzYuOTEwN0M3NS43NjE5IDM2Ljc1MTMgNzYuNDUyIDM2LjYzNzEgNzcuMTYxMyAzNi41Njg5Qzc3Ljg3MDUgMzYuNTAwMyA3OC41NDEyIDM2LjUwODQgNzkuMTc0NCAzNi41OTE3Qzc5LjgwNjggMzYuNjc1MyA4MC4zMDY1IDM2Ljg3NjUgODAuNjcyNSAzNy4xOTU4QzgwLjg3MDcgMzcuMzc4IDgxLjAzODcgMzcuNTc1NCA4MS4xNzYgMzcuNzg4M0M4MS4zMTMgMzguMDAxMSA4MS4zOTY5IDM4LjIyMTQgODEuNDI3NiAzOC40NDkzQzgxLjUwMzcgMzkuMDg3NSA4MS40MDQ3IDM5LjY2ODcgODEuMTMwMiA0MC4xOTI5Wk03NC4xNTMgMjkuNTYwMkM3NC40NzM0IDI5LjM2MjcgNzQuODU4NSAyOS4xODc3IDc1LjMwODMgMjkuMDM1NkM3NS43NTgxIDI4Ljg4NDEgNzYuMjE5NSAyOC43Nzc0IDc2LjY5MjMgMjguNzE2N0M3Ny4xNjQ4IDI4LjY1NjIgNzcuNjI2MiAyOC42NDgxIDc4LjA3NjMgMjguNjkzOEM3OC41MjU4IDI4LjczOTUgNzguOTIyOCAyOC44NjQ3IDc5LjI2NTkgMjkuMDY5N0M3OS42MDg5IDI5LjI3NTEgNzkuODY0MyAyOS41NzE0IDgwLjAzMiAyOS45NTg2QzgwLjE5OTcgMzAuMzQ2NCA4MC4yNDU2IDMwLjgzNjUgODAuMTY5MyAzMS40MjlDODAuMTA4MyAzMS45MDAxIDc5LjkyMTEgMzIuMjk5MSA3OS42MDg5IDMyLjYyNTZDNzkuMjk2MyAzMi45NTI2IDc4LjkxNDcgMzMuMjI1OSA3OC40NjUyIDMzLjQ0NjJDNzguMDE1NCAzMy42NjY4IDc3LjUzODggMzMuODQxNSA3Ny4wMzU2IDMzLjk3MDJDNzYuNTMyMSAzNC4wOTk3IDc2LjA0NzcgMzQuMTk0OSA3NS41ODI4IDM0LjI1NTNDNzUuMTE3NiAzNC4zMTYzIDc0LjcxMzcgMzQuMzU0NSA3NC4zNzA2IDM0LjM2OTJDNzQuMDI3MyAzNC4zODQ1IDczLjgwMjEgMzQuMzkyMSA3My42OTU2IDM0LjM5MjFMNzQuMTUzIDI5LjU2MDJaTTgzLjYwMDcgMzYuOTY3NkM4My4zNTY2IDM2LjQzNjEgODMuMDI4NyAzNS45Njg5IDgyLjYxNzIgMzUuNTY1OEM4Mi4yMDU0IDM1LjE2MzMgODEuNzE3IDM0Ljg3MDkgODEuMTUzMSAzNC42ODg1QzgxLjM5NjkgMzQuNDkxIDgxLjYzNzEgMzQuMTc5NSA4MS44NzM3IDMzLjc1MzlDODIuMTA5OSAzMy4zMjg4IDgyLjMxMTkgMzIuODY1IDgyLjQ3OTYgMzIuMzYzNkM4Mi42NDc0IDMxLjg2MTkgODIuNzYyIDMxLjM1NyA4Mi44MjI5IDMwLjg0NzhDODIuODgzNiAzMC4zMzg5IDgyLjg2MDcgMjkuOTAyIDgyLjc1NDQgMjkuNTM3QzgyLjQ5NDcgMjguNjI1NiA4Mi4wODcgMjcuOTExNCA4MS41MzAzIDI3LjM5NDZDODAuOTczNCAyNi44NzgyIDgwLjMyNTcgMjYuNTIxMSA3OS41ODYgMjYuMzIzM0M3OC44NDYyIDI2LjEyNjQgNzguMDMwNCAyNi4wODQyIDc3LjEzODMgMjYuMTk4MUM3Ni4yNDYyIDI2LjMxMiA3NS4zMzQ3IDI2LjUzNjEgNzQuNDA0OSAyNi44NzA0Qzc0LjQwNDkgMjYuNzk0NiA3NC40MTI0IDI2LjcxNDggNzQuNDI3OCAyNi42MzEyQzc0LjQ0MjYgMjYuNTQ4IDc0LjQ1MDQgMjYuNDYwNCA3NC40NTA0IDI2LjM2OUM3NC40NTA0IDI2LjE0MTEgNzQuMzM2MSAyNS45NDM5IDc0LjEwNzQgMjUuNzc2NUM3My44Nzg3IDI1LjYwOTMgNzMuNjE1NSAyNS41MTA3IDczLjMxODMgMjUuNDgwMUM3My4wMjA5IDI1LjQ1IDcyLjczMSAyNS41MTQyIDcyLjQ0ODkgMjUuNjczOEM3Mi4xNjY1IDI1LjgzMzQgNzEuOTcyMSAyNi4xMjY0IDcxLjg2NTYgMjYuNTUxMUM3MS43NDM0IDI3LjkxODkgNzEuNjIxNSAyOS4zMzk4IDcxLjQ5OTYgMzAuODEzNEM3MS4zNzc0IDMyLjI4NzUgNzEuMjQ4IDMzLjc3NjcgNzEuMTEwNyAzNS4yODEyQzcwLjk3MzUgMzYuNzg1NSA3MC44MzYyIDM4LjI3ODQgNzAuNjk4OSAzOS43NTk4QzcwLjU2MTYgNDEuMjQxNCA3MC40MjQ0IDQyLjY2NTkgNzAuMjg3MSA0NC4wMzMzQzcwLjMzMyA0NC40NDM2IDcwLjQ0NzMgNDQuNzYyOSA3MC42MzA0IDQ0Ljk5MDdDNzAuODEzMyA0NS4yMTg5IDcxLjAyNjggNDUuMzU1NiA3MS4yNzA5IDQ1LjQwMUM3MS41MTQ3IDQ1LjQ0NjcgNzEuNzcwNCA0NS40MDQ1IDcyLjAzNzEgNDUuMjc1NUM3Mi4zMDM4IDQ1LjE0NjkgNzIuNTM2NSA0NC45MjIyIDcyLjczNSA0NC42MDMyQzczLjM0NDcgNDQuOTM3NSA3NC4wMzExIDQ1LjE1NDEgNzQuNzkzOCA0NS4yNTNDNzUuNTU2MSA0NS4zNTE2IDc2LjMyOTggNDUuMzUxNiA3Ny4xMTU3IDQ1LjI1M0M3Ny45MDA3IDQ1LjE1NDEgNzguNjc0NyA0NC45NjgyIDc5LjQzNzQgNDQuNjk0M0M4MC4xOTk3IDQ0LjQyMTEgODAuODkzNiA0NC4wNzkgODEuNTE5IDQzLjY2OUM4Mi4xNDQxIDQzLjI1ODYgODIuNjcwMyA0Mi43OTExIDgzLjA5NzUgNDIuMjY3MUM4My41MjQ0IDQxLjc0MjYgODMuODA2NSA0MS4xNzY3IDgzLjk0MzcgNDAuNTY5MUM4NC4wODEgMzkuOTQ2IDg0LjExOSAzOS4zMjMxIDg0LjA1ODEgMzguN0M4My45OTcxIDM4LjA3NzEgODMuODQ0NSAzNy41IDgzLjYwMDcgMzYuOTY3NlpcIiBmaWxsPVwiIzBEMEMyM1wiLz5cbjxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xMDUuOTE1IDQ5LjAwMTdDMTA1LjgzMiA0OS41MDMxIDEwNS43MTMgNTAuMDMxMSAxMDUuNTYxIDUwLjU4NkMxMDUuNDA4IDUxLjE0MDMgMTA1LjIyOSA1MS42NDU4IDEwNS4wMjMgNTIuMTAxOEMxMDQuODE4IDUyLjU1NzUgMTA0LjU4OSA1Mi45MjU2IDEwNC4zMzcgNTMuMjA3QzEwNC4wODUgNTMuNDg4IDEwMy44MTUgNTMuNjA2IDEwMy41MjUgNTMuNTYwNkMxMDMuMjk2IDUzLjUyOTcgMTAzLjE1MSA1My4zODU0IDEwMy4wOTEgNTMuMTI3NEMxMDMuMDI5IDUyLjg2ODYgMTAzLjAyOSA1Mi41NDk3IDEwMy4wOTEgNTIuMTdDMTAzLjE1MSA1MS43OTAxIDEwMy4yNjkgNTEuMzYwNyAxMDMuNDQ1IDUwLjg4MjFDMTAzLjYyIDUwLjQwMzUgMTAzLjgzNCA0OS45Mjg0IDEwNC4wODUgNDkuNDU3N0MxMDQuMzM3IDQ4Ljk4NjQgMTA0LjYyMyA0OC41MzQ3IDEwNC45NDMgNDguMTAxNUMxMDUuMjY0IDQ3LjY2ODYgMTA1LjU5OSA0Ny4zMDc1IDEwNS45NSA0Ny4wMTg5QzEwNi4wMjYgNDcuMTEgMTA2LjA2IDQ3LjMzNzggMTA2LjA1MyA0Ny43MDI4QzEwNi4wNDUgNDguMDY3NCAxMDUuOTk5IDQ4LjUwMDYgMTA1LjkxNSA0OS4wMDE3Wk0xMTMuNjcgMzkuMTA5N0MxMTMuNDY0IDM4Ljg4MTkgMTEzLjIxMyAzOC43NTI5IDExMi45MTUgMzguNzIyM0MxMTIuNjE4IDM4LjY5MTkgMTEyLjMxNyAzOC44NTkgMTEyLjAxMiAzOS4yMjM3QzExMS44MTMgMzkuNTg4MyAxMTEuNTYyIDM5LjkzNzkgMTExLjI1NyA0MC4yNzIyQzExMC45NTIgNDAuNjA2NyAxMTAuNjM1IDQwLjkxMDMgMTEwLjMwNyA0MS4xODM5QzEwOS45OCA0MS40NTcyIDEwOS42NjcgNDEuNjkzMSAxMDkuMzcgNDEuODkwM0MxMDkuMDcyIDQyLjA4ODEgMTA4Ljg0IDQyLjIzMjQgMTA4LjY3MiA0Mi4zMjM1QzEwOC42MTEgNDEuODM3NCAxMDguNTc2IDQxLjMxMzIgMTA4LjU2OSA0MC43NTA3QzEwOC41NjEgNDAuMTg4NiAxMDguNTczIDM5LjYxOSAxMDguNjAzIDM5LjA0MTVDMTA4LjY0OSAzOC4yMjA5IDEwOC43NDQgMzcuMzkzIDEwOC44ODkgMzYuNTU3QzEwOS4wMzQgMzUuNzIxMyAxMDkuMjQ0IDM0LjkwMDcgMTA5LjUxOCAzNC4wOTUxQzEwOS41MTggMzMuNjcgMTA5LjQxOSAzMy4zMjQyIDEwOS4yMjEgMzMuMDU4MkMxMDkuMDIyIDMyLjc5MjQgMTA4Ljc4MiAzMi42MjUgMTA4LjUgMzIuNTU2N0MxMDguMjE4IDMyLjQ4ODUgMTA3LjkyOSAzMi41MjY0IDEwNy42MzEgMzIuNjcwN0MxMDcuMzM0IDMyLjgxNTMgMTA3LjA3OCAzMy4wNzc1IDEwNi44NjUgMzMuNDU2OUMxMDYuNjgyIDMzLjk1ODYgMTA2LjQ3MiAzNC41MjA3IDEwNi4yMzYgMzUuMTQzNkMxMDUuOTk5IDM1Ljc2NjcgMTA1LjczMiAzNi40MDEyIDEwNS40MzUgMzcuMDQ2OUMxMDUuMTM4IDM3LjY5MzEgMTA0LjgwNiAzOC4zMTk3IDEwNC40NCAzOC45MjczQzEwNC4wNzQgMzkuNTM1NCAxMDMuNjc0IDQwLjA3NSAxMDMuMjM5IDQwLjU0NTdDMTAyLjgwNCA0MS4wMTY4IDEwMi4zMzEgNDEuMzg1NCAxMDEuODIxIDQxLjY1MTJDMTAxLjMxIDQxLjkxNzIgMTAwLjc1NyA0Mi4wMzQ5IDEwMC4xNjIgNDIuMDA0NUM5OS44ODc2IDQxLjkyODUgOTkuNjg5MyA0MS43MjM1IDk5LjU2NzUgNDEuMzg4OUM5OS40NDUzIDQxLjA1NDkgOTkuMzczIDQwLjYzNjggOTkuMzUwNCA0MC4xMzU0Qzk5LjMyNzUgMzkuNjM0IDk5LjM1MDQgMzkuMDgzMSA5OS40MTg5IDM4LjQ4MjhDOTkuNDg3NyAzNy44ODI4IDk5LjU3OTEgMzcuMjg2MyA5OS42OTM0IDM2LjY5MzhDOTkuODA3OCAzNi4xMDEgOTkuOTMzNyAzNS41Mzg5IDEwMC4wNzEgMzUuMDA3MUMxMDAuMjA4IDM0LjQ3NTMgMTAwLjMzNyAzNC4wMjY4IDEwMC40NiAzMy42NjIyQzEwMC42NDMgMzMuMjIxOCAxMDAuNjQzIDMyLjg1MjkgMTAwLjQ2IDMyLjU1NjdDMTAwLjI3NyAzMi4yNjA0IDEwMC4wMjUgMzIuMDYzMSA5OS43MDUgMzEuOTY0Qzk5LjM4NDYgMzEuODY1NCA5OS4wNDg5IDMxLjg2OTQgOTguNjk4MyAzMS45NzU1Qzk4LjM0NzQgMzIuMDgxOSA5OC4wOTU4IDMyLjMxNzMgOTcuOTQzNSAzMi42ODJDOTcuNjg0IDMzLjMwNTQgOTcuNDQ3NSAzNC4wMDQgOTcuMjM0MiAzNC43NzlDOTcuMDIwNiAzNS41NTM5IDk2Ljg0OTEgMzYuMzU1OCA5Ni43MTk3IDM3LjE4MzZDOTYuNTg5NiAzOC4wMTIxIDk2LjUxNzEgMzguODMyNyA5Ni41MDIgMzkuNjQ1NkM5Ni41MDExIDM5LjY5ODUgOTYuNTAzNyAzOS43NDg4IDk2LjUwMzQgMzkuODAxNEM5Ni4xNzA5IDQwLjY4NDggOTUuODU0IDQxLjM1MjUgOTUuNTUzIDQxLjc5OTJDOTUuMTY0MSA0Mi4zNzcgOTQuNzI1MyA0Mi42Mjc3IDk0LjIzNzUgNDIuNTUxM0M5NC4wMjM2IDQyLjQ2MDMgOTMuODgzMiA0Mi4yNDc3IDkzLjgxNDcgNDEuOTEzMkM5My43NDUzIDQxLjU3OTIgOTMuNzIyNyA0MS4xNjg5IDkzLjc0NTMgNDAuNjgyMkM5My43Njg4IDQwLjE5NjQgOTMuODI2IDM5LjY0NTYgOTMuOTE3MSAzOS4wMjk5Qzk0LjAwOTEgMzguNDE0NiA5NC4xMjI5IDM3Ljc3NjQgOTQuMjYwMSAzNy4xMTU0Qzk0LjM5NzcgMzYuNDU0MSA5NC41NDI1IDM1Ljc4OTkgOTQuNjk0OSAzNS4xMjFDOTQuODQ3MiAzNC40NTI1IDk0Ljk4NDUgMzMuODIxOCA5NS4xMDcgMzMuMjI5MUM5NS4wOTE2IDMyLjY5NzMgOTQuOTM1MiAzMi4yOTEgOTQuNjM3NyAzMi4wMDk3Qzk0LjM0MDUgMzEuNzI4OSA5My45MjQ3IDMxLjYxODcgOTMuMzkxMyAzMS42NzkxQzkzLjAyNTMgMzEuODMxMiA5Mi43NTQyIDMyLjAyOSA5Mi41NzkgMzIuMjcxOUM5Mi40MDM0IDMyLjUxNDggOTIuMjYyMyAzMi44MjY1IDkyLjE1NTggMzMuMjA2MkM5Mi4wOTQ2IDMzLjQwNCA5Mi4wMDMyIDMzLjc5OSA5MS44ODEzIDM0LjM5MThDOTEuNzU5MSAzNC45ODQgOTEuNjAzIDM1LjY2NDQgOTEuNDEyMyAzNi40MzE1QzkxLjIyMTcgMzcuMTk5MiA5MC45OTY3IDM4LjAwMDUgOTAuNzM3NiAzOC44MzYyQzkwLjQ3ODEgMzkuNjcxOSA5MC4xODg1IDQwLjQyODMgODkuODY4NCA0MS4xMDQxQzg5LjU0OCA0MS43ODAxIDg5LjE5NzIgNDIuMzIzNSA4OC44MTYxIDQyLjczMzhDODguNDM0OCA0My4xNDM4IDg4LjAyMyA0My4zMTEzIDg3LjU4MDcgNDMuMjM1MkM4Ny4zMzY2IDQzLjE4OTUgODcuMTgwNSA0Mi45Mzg4IDg3LjExMiA0Mi40ODMxQzg3LjA0MzIgNDIuMDI3MSA4Ny4wMzE5IDQxLjQ2NTMgODcuMDc3NSA0MC43OTY0Qzg3LjEyMzMgNDAuMTI3OSA4Ny4yMTQ4IDM5LjM5NDYgODcuMzUyIDM4LjU5NzFDODcuNDg5MyAzNy43OTkzIDg3LjYzIDM3LjA0MzQgODcuNzc1MiAzNi4zMjg5Qzg3LjkyIDM1LjYxNDkgODguMDUzNSAzNC45ODQgODguMTc1NiAzNC40MzcyQzg4LjI5NzUgMzMuODkwMSA4OC4zODE0IDMzLjUyNTQgODguNDI3MiAzMy4zNDMzQzg4LjQyNzIgMzIuOTAyNiA4OC4zMjc3IDMyLjU0OTUgODguMTI5OCAzMi4yODMyQzg3LjkzMTMgMzIuMDE3OCA4Ny42OTEzIDMxLjg1MDMgODcuNDA5MiAzMS43ODE4Qzg3LjEyNjggMzEuNzEzNiA4Ni44MzcyIDMxLjc1MTQgODYuNTQgMzEuODk1N0M4Ni4yNDI2IDMyLjA0MDMgODUuOTg3MiAzMi4zMDI2IDg1Ljc3MzYgMzIuNjgyQzg1LjY5NzMgMzMuMDkyMyA4NS41OTggMzMuNTY3NCA4NS40NzYxIDM0LjEwNjdDODUuMzUzOSAzNC42NDU5IDg1LjIzNjEgMzUuMjAwNiA4NS4xMjE4IDM1Ljc3MDVDODUuMDA3NCAzNi4zNDA0IDg0LjkwMDMgMzYuODk4OCA4NC44MDE0IDM3LjQ0NTlDODQuNzAyMSAzNy45OTMgODQuNjI5OSAzOC40NzE2IDg0LjU4NCAzOC44ODE5Qzg0LjU1MzYgMzkuMjAwOCA4NC41MTkgMzkuNTkyMyA4NC40ODEzIDQwLjA1NTZDODQuNDQzIDQwLjUxOTQgODQuNDIzOCA0MS4wMDkyIDg0LjQyMzggNDEuNTI1N0M4NC40MjM4IDQyLjA0MjcgODQuNDYxOCA0Mi41NTU0IDg0LjUzODUgNDMuMDY0M0M4NC42MTQ1IDQzLjU3MzUgODQuNzUxOCA0NC4wNDA4IDg0Ljk1IDQ0LjQ2NTlDODUuMTQ4MiA0NC44OTE1IDg1LjQyNjUgNDUuMjQwOCA4NS43ODUyIDQ1LjUxNDRDODYuMTQzMyA0NS43ODc5IDg2LjU5NzIgNDUuOTM5NyA4Ny4xNDYzIDQ1Ljk3MDRDODcuNzEwMSA0Ni4wMDA1IDg4LjIwMiA0NS45NTkxIDg4LjYyMTcgNDUuODQ0OUM4OS4wNDEgNDUuNzMxIDg5LjQyMjEgNDUuNTUyMyA4OS43NjU0IDQ1LjMwOTFDOTAuMTA4NCA0NS4wNjY1IDkwLjQyMSA0NC43Nzc2IDkwLjcwMzMgNDQuNDQzQzkwLjk4NTEgNDQuMTA5MSA5MS4yNjM3IDQzLjc0NDQgOTEuNTM4MyA0My4zNDkxQzkxLjc5NzQgNDMuOTI2OSA5Mi4xMzI5IDQ0LjM3NDggOTIuNTQ0NyA0NC42OTRDOTIuOTU2NSA0NS4wMTMgOTMuMzkxMyA0NS4yMDMyIDkzLjg0ODYgNDUuMjYzN0M5NC4zMDYgNDUuMzI0MSA5NC43NzE1IDQ1LjI2MDIgOTUuMjQ0MiA0NS4wNjk5Qzk1LjcxNjcgNDQuODgwMyA5Ni4xNDM2IDQ0LjU1NzMgOTYuNTI1MiA0NC4xMDEyQzk2Ljc3NjIgNDMuODIxNiA5Ny4wMTMxIDQzLjUwMzggOTcuMjM1NCA0My4xNTI1Qzk3LjMyOTcgNDMuMzE3IDk3LjQzMDEgNDMuNDc1OCA5Ny41NDMgNDMuNjIyNEM5Ny45MTY4IDQ0LjEwOTEgOTguNDI0IDQ0LjQ0MyA5OS4wNjQ1IDQ0LjYyNTVDOTkuNzUwNiA0NC44MDggMTAwLjQyMSA0NC44Mzg2IDEwMS4wNzcgNDQuNzE2OUMxMDEuNzMzIDQ0LjU5NTQgMTAyLjM1OCA0NC4zNzQ4IDEwMi45NTMgNDQuMDU1OUMxMDMuNTQ4IDQzLjczNjYgMTA0LjEwMSA0My4zNTMyIDEwNC42MTIgNDIuOTA0N0MxMDUuMTIyIDQyLjQ1NjUgMTA1LjU2OCA0MS45ODk1IDEwNS45NSA0MS41MDI4QzEwNS45MzQgNDEuODUyNCAxMDUuOTI3IDQyLjE4MzIgMTA1LjkyNyA0Mi40OTQ0QzEwNS45MjcgNDIuODA2MSAxMDUuOTE5IDQzLjE0MzggMTA1LjkwNCA0My41MDg4QzEwNS4xNDEgNDQuMDQwOCAxMDQuNDIxIDQ0LjY3OSAxMDMuNzQyIDQ1LjQyMzNDMTAzLjA2NCA0Ni4xNjc2IDEwMi40NjkgNDYuOTYxNiAxMDEuOTU4IDQ3LjgwNTFDMTAxLjQ0NyA0OC42NDgzIDEwMS4wNDcgNDkuNTAzMSAxMDAuNzU3IDUwLjM2OTFDMTAwLjQ2NyA1MS4yMzU3IDEwMC4zMjYgNTIuMDQ0NSAxMDAuMzM0IDUyLjc5NjlDMTAwLjM0MSA1My41NDkgMTAwLjUyMSA1NC4yMDYgMTAwLjg3MSA1NC43NjgxQzEwMS4yMjIgNTUuMzMwNiAxMDEuNzk0IDU1LjczMzEgMTAyLjU4NyA1NS45NzYzQzEwMy40MTEgNTYuMjM0OCAxMDQuMTM1IDU2LjI0MiAxMDQuNzYgNTUuOTk5MUMxMDUuMzg2IDU1Ljc1NTkgMTA1LjkzMSA1NS4zNTMxIDEwNi4zOTYgNTQuNzkxQzEwNi44NjEgNTQuMjI4OSAxMDcuMjQyIDUzLjU0OSAxMDcuNTQgNTIuNzUxMkMxMDcuODM3IDUxLjk1MzQgMTA4LjA3MyA1MS4xMjE1IDEwOC4yNDkgNTAuMjU1NUMxMDguNDI0IDQ5LjM4OTQgMTA4LjUzNSA0OC41Mzc5IDEwOC41OCA0Ny43MDI4QzEwOC42MjYgNDYuODY2OCAxMDguNjI2IDQ2LjEyMTkgMTA4LjU4IDQ1LjQ2ODdDMTA5Ljg5MiA0NC45MjE5IDExMC45NjcgNDQuMjMwNSAxMTEuODA2IDQzLjM5NDVDMTEyLjY0NSA0Mi41NTk0IDExMy4zMzggNDEuNjc3OCAxMTMuODg3IDQwLjc1MDdDMTE0LjA1NSA0MC41MjI5IDExNC4xMTIgNDAuMjQ5MyAxMTQuMDU5IDM5LjkzMDRDMTE0LjAwNiAzOS42MTExIDExMy44NzYgMzkuMzM3NiAxMTMuNjcgMzkuMTA5N1pcIiBmaWxsPVwiIzBEMEMyM1wiLz5cbjxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xNDIuNTMgMzcuNjUxNUMxNDIuNTc1IDM3LjMwMjIgMTQyLjY0NCAzNi45MzM1IDE0Mi43MzUgMzYuNTQ2QzE0Mi44MjcgMzYuMTU4NSAxNDIuOTQxIDM1Ljc4MjMgMTQzLjA3OSAzNS40MTc3QzE0My4yMTYgMzUuMDUzMSAxNDMuMzc2IDM0LjczNzkgMTQzLjU1OSAzNC40NzE4QzE0My43NDIgMzQuMjA2MSAxNDMuOTM3IDM0LjAxNjEgMTQ0LjE0MiAzMy45MDE5QzE0NC4zNDggMzMuNzg4MyAxNDQuNTU4IDMzLjc5OTUgMTQ0Ljc3MSAzMy45MzZDMTQ1IDM0LjA3MzEgMTQ1LjE0MSAzNC4zNjE3IDE0NS4xOTUgMzQuODAyMUMxNDUuMjQ4IDM1LjI0MzMgMTQ1LjE5NSAzNS43MTQxIDE0NS4wMzQgMzYuMjE1NUMxNDQuODc0IDM2LjcxNzIgMTQ0LjU4OCAzNy4xODc5IDE0NC4xNzcgMzcuNjI4NkMxNDMuNzY1IDM4LjA2OTYgMTQzLjIwOCAzOC4zNTc5IDE0Mi41MDcgMzguNDk0N0MxNDIuNDc2IDM4LjI4MjQgMTQyLjQ4NCAzOC4wMDExIDE0Mi41MyAzNy42NTE1Wk0xNTAuNDU2IDM4LjU4NTdDMTUwLjIwNCAzOC41MTAzIDE0OS45NjQgMzguNTAyNSAxNDkuNzM1IDM4LjU2MzJDMTQ5LjUwNiAzOC42MjM5IDE0OS4zNjEgMzguNzgzNSAxNDkuMzAxIDM5LjA0MkMxNDkuMTc4IDM5LjUyODEgMTQ4Ljk4NCA0MC4wMjU4IDE0OC43MTcgNDAuNTM0N0MxNDguNDUgNDEuMDQzOSAxNDguMTIyIDQxLjUyNjIgMTQ3LjczNCA0MS45ODIyQzE0Ny4zNDUgNDIuNDM4IDE0Ni45MDYgNDIuODQwOCAxNDYuNDE4IDQzLjE5MDFDMTQ1LjkzIDQzLjUzOTcgMTQ1LjQxOSA0My43OTA0IDE0NC44ODYgNDMuOTQyMkMxNDQuMzUxIDQ0LjEwOTYgMTQzLjkxIDQ0LjEyODQgMTQzLjU1OSA0My45OTkxQzE0My4yMDggNDMuODcwNSAxNDIuOTMgNDMuNjQ5OCAxNDIuNzI0IDQzLjMzODRDMTQyLjUxOCA0My4wMjcgMTQyLjM2OSA0Mi42NTA4IDE0Mi4yNzggNDIuMjEwMUMxNDIuMTg2IDQxLjc2OTQgMTQyLjEzMyA0MS4zMTM3IDE0Mi4xMTggNDAuODQyNEMxNDIuOTg3IDQwLjkwMzQgMTQzLjc2MSA0MC43NDc4IDE0NC40NCA0MC4zNzUxQzE0NS4xMTggNDAuMDAzMiAxNDUuNjk0IDM5LjUwOSAxNDYuMTY3IDM4Ljg5MzdDMTQ2LjYzOSAzOC4yNzg0IDE0Ni45OTggMzcuNTg3IDE0Ny4yNDIgMzYuODE5NUMxNDcuNDg1IDM2LjA1MjQgMTQ3LjYyMyAzNS4yODg3IDE0Ny42NTMgMzQuNTI4OEMxNDcuNjY5IDMzLjgxNDYgMTQ3LjU2MiAzMy4yMTA4IDE0Ny4zMzMgMzIuNzE2OUMxNDcuMTA1IDMyLjIyMzMgMTQ2Ljc5NiAzMS44MzkgMTQ2LjQwNyAzMS41NjU4QzE0Ni4wMTggMzEuMjkyMiAxNDUuNTcyIDMxLjEzMjYgMTQ1LjA2OSAzMS4wODcyQzE0NC41NjYgMzEuMDQxNSAxNDQuMDU0IDMxLjExIDE0My41MzYgMzEuMjkyMkMxNDIuOTEgMzEuNTA1IDE0Mi4zODEgMzEuODUwNiAxNDEuOTQ2IDMyLjMyOTRDMTQxLjUxMiAzMi44MDggMTQxLjE0OSAzMy4zNjI5IDE0MC44NiAzMy45OTMzQzE0MC41NyAzNC42MjM5IDE0MC4zNDEgMzUuMzAzOCAxNDAuMTczIDM2LjAzM0MxNDAuMDA1IDM2Ljc2MjYgMTM5Ljg4MyAzNy40ODA2IDEzOS44MDcgMzguMTg3M0MxMzkuNzM5IDM4LjgyMTQgMTM5LjcwMiAzOS40Mjc4IDEzOS42ODkgNDAuMDEzQzEzOS42NTcgNDAuMDg3NCAxMzkuNjI1IDQwLjE1ODggMTM5LjU5IDQwLjIzODNDMTM5LjM1NCA0MC43NzgyIDEzOS4wNzkgNDEuMzA2MiAxMzguNzY2IDQxLjgyMjZDMTM4LjQ1NCA0Mi4zMzk0IDEzOC4xMDcgNDIuNzcyNSAxMzcuNzI2IDQzLjEyMThDMTM3LjM0NCA0My40NzE0IDEzNi45NDggNDMuNTkyOSAxMzYuNTM2IDQzLjQ4NjVDMTM2LjI5MiA0My40MjYgMTM2LjE1OSA0My4xNDQ0IDEzNi4xMzYgNDIuNjQzM0MxMzYuMTEzIDQyLjE0MTYgMTM2LjEzOSA0MS41MTg3IDEzNi4yMTYgNDAuNzc0MUMxMzYuMjkyIDQwLjAyOTggMTM2LjM4IDM5LjIyMzkgMTM2LjQ3OSAzOC4zNTc5QzEzNi41NzggMzcuNDkxOCAxMzYuNjI4IDM2LjY2NCAxMzYuNjI4IDM1Ljg3MzdDMTM2LjYyOCAzNS4xODk4IDEzNi40OTggMzQuNTMyOSAxMzYuMjM5IDMzLjkwMTlDMTM1Ljk3OSAzMy4yNzE4IDEzNS42MjUgMzIuNzQ3MyAxMzUuMTc1IDMyLjMyOTRDMTM0LjcyNSAzMS45MTEzIDEzNC4yMDMgMzEuNjM0IDEzMy42MDggMzEuNDk3NUMxMzMuMDEzIDMxLjM2MDUgMTMyLjM3MyAzMS40NTE4IDEzMS42ODcgMzEuNzcwOEMxMzEgMzIuMDkgMTMwLjQ1NSAzMi41MzgyIDEzMC4wNTEgMzMuMTE1N0MxMjkuNjQ3IDMzLjY5MzQgMTI5LjI3NyAzNC4zMDA5IDEyOC45NDIgMzQuOTM5MUMxMjguODE5IDM0LjQ1MjggMTI4LjY0MSAzNC4wMDExIDEyOC40MDQgMzMuNTgzQzEyOC4xNjcgMzMuMTY1MSAxMjcuODc4IDMyLjgwMDUgMTI3LjUzNSAzMi40ODg4QzEyNy4xOTEgMzIuMTc3NiAxMjYuODA2IDMxLjkzNDQgMTI2LjM4IDMxLjc1OTVDMTI1Ljk1MyAzMS41ODUxIDEyNS41MDIgMzEuNDk3NSAxMjUuMDMgMzEuNDk3NUMxMjQuNTcyIDMxLjQ5NzUgMTI0LjE0OSAzMS41ODUxIDEyMy43NiAzMS43NTk1QzEyMy4zNzEgMzEuOTM0NCAxMjMuMDE3IDMyLjE1ODMgMTIyLjY5NiAzMi40MzE4QzEyMi4zNzYgMzIuNzA1NiAxMjIuMDg3IDMzLjAxMyAxMjEuODI3IDMzLjM1NTFDMTIxLjU2OCAzMy42OTY5IDEyMS4zMzkgMzQuMDM1MiAxMjEuMTQxIDM0LjM2OTJDMTIxLjExIDMzLjk3NDIgMTIxLjA3NiAzMy42Mjg2IDEyMS4wMzggMzMuMzMyQzEyMSAzMy4wMzU5IDEyMC45MzEgMzIuNzg1MiAxMjAuODMyIDMyLjU4MDFDMTIwLjczMyAzMi4zNzQ4IDEyMC41OTIgMzIuMjE5MyAxMjAuNDA5IDMyLjExMjlDMTIwLjIyNiAzMi4wMDY3IDExOS45NjcgMzEuOTUzMiAxMTkuNjMyIDMxLjk1MzJDMTE5LjQ2NCAzMS45NTMyIDExOS4yOTYgMzEuOTg3NCAxMTkuMTI4IDMyLjA1NTZDMTE4Ljk2IDMyLjEyNDEgMTE4LjgxMSAzMi4yMTkzIDExOC42ODIgMzIuMzQwN0MxMTguNTUyIDMyLjQ2MjcgMTE4LjQ1MyAzMi42MTA1IDExOC4zODUgMzIuNzg1MkMxMTguMzE2IDMyLjk1OTggMTE4LjI5NyAzMy4xNjE0IDExOC4zMjcgMzMuMzg5MkMxMTguMzQyIDMzLjU1NjYgMTE4LjM4NSAzMy43NTc2IDExOC40NTMgMzMuOTkzM0MxMTguNTIyIDM0LjIyODkgMTE4LjU4NyAzNC41MzY5IDExOC42NDggMzQuOTE2M0MxMTguNzA4IDM1LjI5NjIgMTE4Ljc1OCAzNS43NTYgMTE4Ljc5NiAzNi4yOTUzQzExOC44MzQgMzYuODM0OSAxMTguODQ2IDM3LjQ5NTkgMTE4LjgzMSAzOC4yNzg0QzExOC44MTUgMzkuMDYxMSAxMTguNzU4IDM5Ljk3NjMgMTE4LjY1OSA0MS4wMjQ4QzExOC41NiA0Mi4wNzMzIDExOC40MDMgNDMuMjg5IDExOC4xOSA0NC42NzE0QzExOC4xNiA0NC45OTA3IDExOC4yODIgNDUuMjQ5MiAxMTguNTU2IDQ1LjQ0NjdDMTE4LjgzMSA0NS42NDM5IDExOS4xNDMgNDUuNzU3OCAxMTkuNDk0IDQ1Ljc4ODVDMTE5Ljg0NSA0NS44MTg4IDEyMC4xNzcgNDUuNzU3OCAxMjAuNDg5IDQ1LjYwNjNDMTIwLjgwMiA0NS40NTM5IDEyMC45ODEgNDUuMTg4MiAxMjEuMDI3IDQ0LjgwODVDMTIxLjA3MiA0NC4wOTQzIDEyMS4xNiA0My4zMzQ3IDEyMS4yOSA0Mi41MjlDMTIxLjQxOSA0MS43MjQgMTIxLjU3OSA0MC45MjYyIDEyMS43NyA0MC4xMzU5QzEyMS45NjEgMzkuMzQ2IDEyMi4xNzggMzguNTkzOCAxMjIuNDIyIDM3Ljg3OTNDMTIyLjY2NiAzNy4xNjUxIDEyMi45MzcgMzYuNTM0NyAxMjMuMjM0IDM1Ljk4NzZDMTIzLjUzMiAzNS40NDA1IDEyMy44NCAzNS4wMDM5IDEyNC4xNjEgMzQuNjc3MUMxMjQuNDgxIDM0LjM1MDQgMTI0LjgxNiAzNC4xODcgMTI1LjE2NyAzNC4xODdDMTI1LjU5NCAzNC4xODcgMTI1LjkyNiAzNC4zODA1IDEyNi4xNjIgMzQuNzY3OUMxMjYuMzk4IDM1LjE1NTcgMTI2LjU2NiAzNS42NTM2IDEyNi42NjYgMzYuMjYwOUMxMjYuNzY1IDM2Ljg2OSAxMjYuODEgMzcuNTM0MSAxMjYuODAzIDM4LjI1NTVDMTI2Ljc5NSAzOC45NzczIDEyNi43NjUgMzkuNjcyNCAxMjYuNzExIDQwLjM0MUMxMjYuNjU4IDQxLjAwOTggMTI2LjU5NyA0MS42MDYgMTI2LjUyOCA0Mi4xMzAzQzEyNi40NiA0Mi42NTQ1IDEyNi40MSA0My4wMTU3IDEyNi4zOCA0My4yMTI5QzEyNi4zOCA0My41NjI1IDEyNi41MTMgNDMuODM5NSAxMjYuNzggNDQuMDQ0OEMxMjcuMDQ2IDQ0LjI0OTggMTI3LjM0NCA0NC4zNzE2IDEyNy42NzIgNDQuNDA5NUMxMjggNDQuNDQ3NiAxMjguMzA5IDQ0LjM4NjYgMTI4LjU5OCA0NC4yMjdDMTI4Ljg4OCA0NC4wNjc0IDEyOS4wNTYgNDMuNzk4MiAxMjkuMTAyIDQzLjQxNzlDMTI5LjI1NCA0Mi4zMjQgMTI5LjQ2NCA0MS4yMjY0IDEyOS43MzEgNDAuMTI0N0MxMjkuOTk3IDM5LjAyMyAxMzAuMzAzIDM4LjAzNTUgMTMwLjY0NiAzNy4xNjE2QzEzMC45ODkgMzYuMjg3OCAxMzEuMzcgMzUuNTczNSAxMzEuNzkgMzUuMDE4OUMxMzIuMjA5IDM0LjQ2NDYgMTMyLjY1NSAzNC4xODcgMTMzLjEyOCAzNC4xODdDMTMzLjM3MSAzNC4xODcgMTMzLjU1OSAzNC4zNTQ0IDEzMy42ODggMzQuNjg4NEMxMzMuODE4IDM1LjAyMjcgMTMzLjg4MyAzNS40Nzg0IDEzMy44ODMgMzYuMDU1OUMxMzMuODgzIDM2LjQ4MTUgMTMzLjg0OCAzNi45MTg0IDEzMy43OCAzNy4zNjY2QzEzMy43MTEgMzcuODE0OCAxMzMuNjMxIDM4LjI3ODQgMTMzLjU0IDM4Ljc1NjlDMTMzLjQ0OCAzOS4yMzU4IDEzMy4zNjggMzkuNzI1NiAxMzMuMjk5IDQwLjIyN0MxMzMuMjMxIDQwLjcyODcgMTMzLjE5NiA0MS4yNTI3IDEzMy4xOTYgNDEuNzk5OEMxMzMuMTk2IDQyLjE3OTcgMTMzLjIzNSA0Mi42MjA0IDEzMy4zMTEgNDMuMTIxOEMxMzMuMzg3IDQzLjYyMjkgMTMzLjUzMiA0NC4wOTgzIDEzMy43NDUgNDQuNTQ2MkMxMzMuOTU5IDQ0Ljk5NDcgMTM0LjI1MiA0NS4zNzQ0IDEzNC42MjYgNDUuNjg1OEMxMzUgNDUuOTk3MyAxMzUuNDc2IDQ2LjE1MzEgMTM2LjA1NiA0Ni4xNTMxQzEzNi45MjUgNDYuMTUzMSAxMzcuNjk1IDQ1Ljk2NjkgMTM4LjM2NiA0NS41OTQ3QzEzOS4wMzcgNDUuMjIyNiAxMzkuNjEzIDQ0LjczNjUgMTQwLjA5MyA0NC4xMzYyQzE0MC4xMTggNDQuMTA0NyAxNDAuMTQxIDQ0LjA3MTEgMTQwLjE2NSA0NC4wMzk5QzE0MC4yMDIgNDQuMTI4NyAxNDAuMjM1IDQ0LjIyMjcgMTQwLjI3NiA0NC4zMDcxQzE0MC42MDQgNDQuOTc1NiAxNDEuMDUgNDUuNDkyMSAxNDEuNjE1IDQ1Ljg1N0MxNDIuMTc4IDQ2LjIyMTYgMTQyLjg0MiA0Ni40MjI5IDE0My42MDUgNDYuNDYxMUMxNDQuMzY3IDQ2LjQ5ODcgMTQ1LjE5OCA0Ni4zNTgxIDE0Ni4wOTggNDYuMDM5MkMxNDYuNzY5IDQ1Ljc5NiAxNDcuMzUyIDQ1LjQ5MjEgMTQ3Ljg0OCA0NS4xMjc1QzE0OC4zNDMgNDQuNzYyOCAxNDguNzg5IDQ0LjMxODQgMTQ5LjE4NiA0My43OTQxQzE0OS41ODMgNDMuMjY5OSAxNDkuOTQ1IDQyLjY2NTggMTUwLjI3MyA0MS45ODIyQzE1MC42MDEgNDEuMjk4MSAxNTAuOTMyIDQwLjUxNTkgMTUxLjI2OCAzOS42MzQyQzE1MS4zMjkgMzkuMzkxNiAxNTEuMjcyIDM5LjE3NTEgMTUxLjA5NyAzOC45ODQ4QzE1MC45MjEgMzguNzk1MSAxNTAuNzA4IDM4LjY2MjEgMTUwLjQ1NiAzOC41ODU3WlwiIGZpbGw9XCIjMEQwQzIzXCIvPlxuPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTE2Mi44ODcgMzYuMDQzNEMxNjIuODEgMzYuNDkxOCAxNjIuNzA3IDM2Ljk4NiAxNjIuNTc4IDM3LjUyNUMxNjIuNDQ4IDM4LjA2NDYgMTYyLjI4NCAzOC42MjMgMTYyLjA4NiAzOS4yMDA0QzE2MS44ODggMzkuNzc3OSAxNjEuNjQ0IDQwLjI5ODQgMTYxLjM1NCA0MC43NjE2QzE2MS4wNjQgNDEuMjI1NCAxNjAuNzMzIDQxLjU5MzUgMTYwLjM1OSA0MS44NjcxQzE1OS45ODUgNDIuMTQwNiAxNTkuNTU1IDQyLjI1NDYgMTU5LjA2NiA0Mi4yMDg5QzE1OC44MjIgNDIuMTc4OCAxNTguNjM1IDQyLjAxMTcgMTU4LjUwNiA0MS43MDc1QzE1OC4zNzYgNDEuNDAzOCAxNTguMzA4IDQxLjAxNjEgMTU4LjMgNDAuNTQ1QzE1OC4yOTIgNDAuMDc0MyAxNTguMzM0IDM5LjU1NzUgMTU4LjQyNiAzOC45OTUxQzE1OC41MTcgMzguNDMzMyAxNTguNjU4IDM3Ljg4MjEgMTU4Ljg0OSAzNy4zNDI2QzE1OS4wNCAzNi44MDM2IDE1OS4yNzIgMzYuMzA1NiAxNTkuNTQ3IDM1Ljg0OTZDMTU5LjgyMSAzNS4zOTM5IDE2MC4xMzggMzUuMDQwNSAxNjAuNDk2IDM0Ljc4OThDMTYwLjg1NCAzNC41MzkxIDE2MS4yNDcgMzQuNDIxNyAxNjEuNjc0IDM0LjQzNjVDMTYyLjEwMSAzNC40NTE4IDE2Mi41NTkgMzQuNjY0MyAxNjMuMDQ3IDM1LjA3NDdDMTYzLjAxNiAzNS4yNzI1IDE2Mi45NjMgMzUuNTk1NCAxNjIuODg3IDM2LjA0MzRaTTE3MS4wMTkgMzcuNzg3QzE3MC43ODIgMzcuNjY1NiAxNzAuNTM4IDM3LjYzOTIgMTcwLjI4NyAzNy43MDc1QzE3MC4wMzUgMzcuNzc1NyAxNjkuODU2IDM4LjAwNzYgMTY5Ljc0OSAzOC40MDI2QzE2OS42ODggMzguODI4MyAxNjkuNTUxIDM5LjMyOTQgMTY5LjMzOCAzOS45MDY5QzE2OS4xMjQgNDAuNDg0MyAxNjguODYxIDQxLjAzMTcgMTY4LjU0OCA0MS41NDc4QzE2OC4yMzYgNDIuMDY0NiAxNjcuODc3IDQyLjQ5NCAxNjcuNDczIDQyLjgzNThDMTY3LjA2OSA0My4xNzc4IDE2Ni42MzggNDMuMzMzNyAxNjYuMTgxIDQzLjMwMjhDMTY1Ljc5OSA0My4yNzI3IDE2NS41MzIgNDMuMDc5IDE2NS4zOCA0Mi43MjE4QzE2NS4yMjcgNDIuMzY0NyAxNjUuMTQ3IDQxLjkxNjggMTY1LjE0IDQxLjM3NjlDMTY1LjEzMiA0MC44MzggMTY1LjE4NiA0MC4yMzAxIDE2NS4zIDM5LjU1MzhDMTY1LjQxNCAzOC44Nzc3IDE2NS41NTIgMzguMjA1NCAxNjUuNzEyIDM3LjUzNjNDMTY1Ljg3MiAzNi44NjggMTY2LjAzNiAzNi4yMjU4IDE2Ni4yMDQgMzUuNjEwNUMxNjYuMzcxIDM0Ljk5NTEgMTY2LjUwOCAzNC40NzQ3IDE2Ni42MTYgMzQuMDQ5M0MxNjYuNzM4IDMzLjY2OTMgMTY2LjY5OSAzMy4zNDY2IDE2Ni41MDEgMzMuMDgwM0MxNjYuMzAzIDMyLjgxNDkgMTY2LjA1NSAzMi42MjQ2IDE2NS43NTggMzIuNTEwN0MxNjUuNDYgMzIuMzk2NyAxNjUuMTU5IDMyLjM2NjQgMTY0Ljg1NCAzMi40MTk2QzE2NC41NDkgMzIuNDcyOCAxNjQuMzUxIDMyLjYzNjIgMTY0LjI1OSAzMi45MDk0QzE2My4zNTkgMzIuMTM0NSAxNjIuNDk0IDMxLjcxNjYgMTYxLjY2MyAzMS42NTU5QzE2MC44MzEgMzEuNTk1MiAxNjAuMDY1IDMxLjc3NzYgMTU5LjM2NCAzMi4yMDNDMTU4LjY2MiAzMi42Mjg0IDE1OC4wNDEgMzMuMjQzNyAxNTcuNSAzNC4wNDkzQzE1Ni45NTggMzQuODU0OSAxNTYuNTIgMzUuNzMyMiAxNTYuMTg0IDM2LjY4MThDMTU1Ljg0OSAzNy42MzE0IDE1NS42MzkgMzguNjAwNCAxNTUuNTU1IDM5LjU4NzlDMTU1LjQ3MSA0MC41NzU3IDE1NS41MzYgNDEuNDc2MSAxNTUuNzUgNDIuMjg5QzE1NS45NjMgNDMuMTAxOCAxNTYuMzQgNDMuNzY2OSAxNTYuODgyIDQ0LjI4M0MxNTcuNDIzIDQ0Ljc5OTggMTU4LjE1OSA0NS4wNTgzIDE1OS4wODkgNDUuMDU4M0MxNTkuNTAxIDQ1LjA1ODMgMTU5Ljg5OCA0NC45NzQ3IDE2MC4yNzkgNDQuODA3NkMxNjAuNjYgNDQuNjQwMSAxNjEuMDExIDQ0LjQ0MjYgMTYxLjMzMSA0NC4yMTQ4QzE2MS42NTEgNDMuOTg2OSAxNjEuOTMzIDQzLjc0NzUgMTYyLjE3OCA0My40OTY4QzE2Mi40MjEgNDMuMjQ2MSAxNjIuNjEyIDQzLjAzNzMgMTYyLjc0OSA0Mi44Njk5QzE2Mi44NTYgNDMuNDE3IDE2My4wMzIgNDMuODgwOCAxNjMuMjc2IDQ0LjI2MDVDMTYzLjUxOSA0NC42NDAxIDE2My43OTggNDQuOTUyMSAxNjQuMTExIDQ1LjE5NDhDMTY0LjQyMyA0NS40Mzc2IDE2NC43NTEgNDUuNjE2NCAxNjUuMDk0IDQ1LjczMDZDMTY1LjQzNyA0NS44NDQ1IDE2NS43NjkgNDUuOTAxNSAxNjYuMDg5IDQ1LjkwMTVDMTY2LjgwNiA0NS45MDE1IDE2Ny40NzcgNDUuNjU4MyAxNjguMTAyIDQ1LjE3MTlDMTY4LjcyNyA0NC42ODYxIDE2OS4yODggNDQuMDg5MyAxNjkuNzg0IDQzLjM4MjlDMTcwLjI3OSA0Mi42NzYyIDE3MC42ODcgNDEuOTMxOSAxNzEuMDA3IDQxLjE0OTFDMTcxLjMyOCA0MC4zNjY2IDE3MS41NDEgMzkuNjcxNSAxNzEuNjQ4IDM5LjA2MzRDMTcxLjc1NSAzOC44MzU1IDE3MS43MzUgMzguNTk2NCAxNzEuNTkxIDM4LjM0NTdDMTcxLjQ0NiAzOC4wOTUgMTcxLjI1NSAzNy45MDkgMTcxLjAxOSAzNy43ODdaXCIgZmlsbD1cIiMwRDBDMjNcIi8+XG48cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMjEyLjE5NCA1MC4zNzAxQzIxMi4wNjQgNTAuODg2NiAyMTEuODYyIDUxLjMyMzggMjExLjU4NyA1MS42ODA2QzIxMS4zMTMgNTIuMDM3NyAyMTAuOTcgNTIuMjIzOSAyMTAuNTU4IDUyLjIzOTNDMjEwLjI5OSA1Mi4yNTQzIDIxMC4xMDEgNTIuMTE3NSAyMDkuOTYzIDUxLjgyODlDMjA5LjgyNiA1MS41NDAxIDIwOS43MzEgNTEuMTY3OSAyMDkuNjc4IDUwLjcxMjJDMjA5LjYyNCA1MC4yNTYyIDIwOS42MDEgNDkuNzQ3IDIwOS42MDkgNDkuMTg0OUMyMDkuNjE2IDQ4LjYyMjcgMjA5LjYzOSA0OC4wNjgxIDIwOS42NzggNDcuNTIxQzIwOS43MTUgNDYuOTc0MiAyMDkuNzYxIDQ2LjQ2NDcgMjA5LjgxNSA0NS45OTM5QzIwOS44NjggNDUuNTIyNiAyMDkuOTEgNDUuMTU4NiAyMDkuOTQgNDQuOUMyMTAuNDU5IDQ0Ljk2MDggMjEwLjg5IDQ1LjE4NDYgMjExLjIzMyA0NS41NzIzQzIxMS41NzYgNDUuOTU5OCAyMTEuODM5IDQ2LjQxOTMgMjEyLjAyMiA0Ni45NTE0QzIxMi4yMDUgNDcuNDgzMSAyMTIuMzEyIDQ4LjA1NjggMjEyLjM0MyA0OC42NzIyQzIxMi4zNzMgNDkuMjg3NSAyMTIuMzIzIDQ5Ljg1MzQgMjEyLjE5NCA1MC4zNzAxWk0yMDMuOTEzIDUwLjM3MDFDMjAzLjc4MyA1MC44ODY2IDIwMy41ODEgNTEuMzIzOCAyMDMuMzA3IDUxLjY4MDZDMjAzLjAzMiA1Mi4wMzc3IDIwMi42ODkgNTIuMjIzOSAyMDIuMjc3IDUyLjIzOTNDMjAyLjAxOCA1Mi4yNTQzIDIwMS44MiA1Mi4xMTc1IDIwMS42ODMgNTEuODI4OUMyMDEuNTQ1IDUxLjU0MDEgMjAxLjQ1IDUxLjE2NzkgMjAxLjM5NyA1MC43MTIyQzIwMS4zNDMgNTAuMjU2MiAyMDEuMzIgNDkuNzQ3IDIwMS4zMjggNDkuMTg0OUMyMDEuMzM2IDQ4LjYyMjcgMjAxLjM1OCA0OC4wNjgxIDIwMS4zOTcgNDcuNTIxQzIwMS40MzQgNDYuOTc0MiAyMDEuNDggNDYuNDY0NyAyMDEuNTM0IDQ1Ljk5MzlDMjAxLjU4NyA0NS41MjI2IDIwMS42MjkgNDUuMTU4NiAyMDEuNjYgNDQuOUMyMDIuMTc4IDQ0Ljk2MDggMjAyLjYwOSA0NS4xODQ2IDIwMi45NTIgNDUuNTcyM0MyMDMuMjk1IDQ1Ljk1OTggMjAzLjU1OCA0Ni40MTkzIDIwMy43NDEgNDYuOTUxNEMyMDMuOTI0IDQ3LjQ4MzEgMjA0LjAzMSA0OC4wNTY4IDIwNC4wNjIgNDguNjcyMkMyMDQuMDkyIDQ5LjI4NzUgMjA0LjA0MiA0OS44NTM0IDIwMy45MTMgNTAuMzcwMVpNMTk1LjQxNSAzNy40MjQxQzE5NS4zOTkgMzcuNzg4NCAxOTUuMzY1IDM4LjExMTQgMTk1LjMxMiAzOC4zOTI1QzE5NS4yNTggMzguNjc0MSAxOTUuMTg2IDM4Ljg1MjIgMTk1LjA5NSAzOC45MjgzQzE5NC45MjcgMzguODM2OSAxOTQuNzIxIDM4LjYwMTggMTk0LjQ3NyAzOC4yMjE2QzE5NC4yMzMgMzcuODQxOSAxOTQuMDQyIDM3LjQxMjIgMTkzLjkwNSAzNi45MzM2QzE5My43NjggMzYuNDU1MSAxOTMuNzI1IDM1Ljk4NDMgMTkzLjc3OSAzNS41MjA1QzE5My44MzIgMzUuMDU3MyAxOTQuMDczIDM0LjY5NjcgMTk0LjUgMzQuNDM3OUMxOTQuNjY3IDM0LjM0NjggMTk0LjgxMiAzNC4zODA5IDE5NC45MzQgMzQuNTQwNUMxOTUuMDU2IDM0LjcwMDEgMTk1LjE1NSAzNC45MzE4IDE5NS4yMzIgMzUuMjM1N0MxOTUuMzA4IDM1LjUzOTkgMTk1LjM2MSAzNS44ODkyIDE5NS4zOTIgMzYuMjg0MkMxOTUuNDIyIDM2LjY3OTUgMTk1LjQzIDM3LjA1OTEgMTk1LjQxNSAzNy40MjQxWk0xOTMuMzkgNDEuOTcxMUMxOTMuMTU0IDQyLjIyMTUgMTkyLjg5IDQyLjQzODEgMTkyLjYwMSA0Mi42MjA2QzE5Mi4zMTEgNDIuODAzIDE5Mi4wMTQgNDIuOTM5OCAxOTEuNzA5IDQzLjAzMDlDMTkxLjQwNCA0My4xMjIzIDE5MS4xMjkgNDMuMTQ0OCAxOTAuODg1IDQzLjA5OTFDMTkwLjE5OSA0Mi45NjI3IDE4OS42NzMgNDIuNjY2IDE4OS4zMDcgNDIuMjEwM0MxODguOTQxIDQxLjc1NDUgMTg4LjcwOCA0MS4yMTkgMTg4LjYwOSA0MC42MDM3QzE4OC41MSAzOS45ODgxIDE4OC41MjEgMzkuMzMwOCAxODguNjQ0IDM4LjYzMTlDMTg4Ljc2NSAzNy45MzMgMTg4Ljk3MSAzNy4yODM1IDE4OS4yNjEgMzYuNjgzMkMxODkuNTUxIDM2LjA4MjkgMTg5LjkwMiAzNS41NjYyIDE5MC4zMTMgMzUuMTMzM0MxOTAuNzI1IDM0LjcwMDEgMTkxLjE3NSAzNC40MzA2IDE5MS42NjMgMzQuMzIzOUMxOTEuNDggMzUuMDk4OSAxOTEuNDE5IDM1LjkwMDcgMTkxLjQ4IDM2LjcyODZDMTkxLjU0MSAzNy41NTY4IDE5MS43MzkgMzguMzM1NSAxOTIuMDc1IDM5LjA2NDhDMTkyLjI4OCAzOS41MDYgMTkyLjU0NCAzOS45MDgyIDE5Mi44NDEgNDAuMjcyOUMxOTMuMTM5IDQwLjYzNzggMTkzLjUwMSA0MC45NDkyIDE5My45MjggNDEuMjA3NUMxOTMuODA2IDQxLjQ2NiAxOTMuNjI2IDQxLjcyMDQgMTkzLjM5IDQxLjk3MTFaTTIxOC43MDIgMzcuNjUxOUMyMTguNzQ3IDM3LjMwMjYgMjE4LjgxNiAzNi45MzM2IDIxOC45MDggMzYuNTQ2MkMyMTguOTk5IDM2LjE1OSAyMTkuMTE0IDM1Ljc4MjggMjE5LjI1MSAzNS40MTgxQzIxOS4zODggMzUuMDUzMiAyMTkuNTQ4IDM0LjczOCAyMTkuNzMxIDM0LjQ3MjNDMjE5LjkxNCAzNC4yMDY1IDIyMC4xMDggMzQuMDE2MyAyMjAuMzE0IDMzLjkwMjRDMjIwLjUyIDMzLjc4ODQgMjIwLjczIDMzLjc5OTcgMjIwLjk0MyAzMy45MzY1QzIyMS4xNzIgMzQuMDczNSAyMjEuMzEzIDM0LjM2MjEgMjIxLjM2NyAzNC44MDI1QzIyMS40MiAzNS4yNDM1IDIyMS4zNjcgMzUuNzE0MiAyMjEuMjA3IDM2LjIxNTlDMjIxLjA0NiAzNi43MTczIDIyMC43NjEgMzcuMTg4NCAyMjAuMzQ5IDM3LjYyODhDMjE5LjkzNyAzOC4wNyAyMTkuMzggMzguMzU4MyAyMTguNjc5IDM4LjQ5NTFDMjE4LjY0OCAzOC4yODI2IDIxOC42NTYgMzguMDAxNSAyMTguNzAyIDM3LjY1MTlaTTIyNy45MjEgMzcuNjUxOUMyMjcuOTY2IDM3LjMwMjYgMjI4LjAzNSAzNi45MzM2IDIyOC4xMjYgMzYuNTQ2MkMyMjguMjE4IDM2LjE1OSAyMjguMzMyIDM1Ljc4MjggMjI4LjQ3IDM1LjQxODFDMjI4LjYwNyAzNS4wNTMyIDIyOC43NjcgMzQuNzM4IDIyOC45NSAzNC40NzIzQzIyOS4xMzMgMzQuMjA2NSAyMjkuMzI4IDM0LjAxNjMgMjI5LjUzMyAzMy45MDI0QzIyOS43MzkgMzMuNzg4NCAyMjkuOTQ5IDMzLjc5OTcgMjMwLjE2MiAzMy45MzY1QzIzMC4zOTEgMzQuMDczNSAyMzAuNTMyIDM0LjM2MjEgMjMwLjU4NiAzNC44MDI1QzIzMC42MzkgMzUuMjQzNSAyMzAuNTg2IDM1LjcxNDIgMjMwLjQyNSAzNi4yMTU5QzIzMC4yNjUgMzYuNzE3MyAyMjkuOTc5IDM3LjE4ODQgMjI5LjU2OCAzNy42Mjg4QzIyOS4xNTYgMzguMDcgMjI4LjU5OSAzOC4zNTgzIDIyNy44OTggMzguNDk1MUMyMjcuODY3IDM4LjI4MjYgMjI3Ljg3NSAzOC4wMDE1IDIyNy45MjEgMzcuNjUxOVpNMjM2LjQ4OCAzOC45ODUyQzIzNi4zMTIgMzguNzk1NSAyMzYuMDk5IDM4LjY2MjUgMjM1Ljg0NyAzOC41ODYyQzIzNS41OTUgMzguNTEwNCAyMzUuMzU1IDM4LjUwMjkgMjM1LjEyNiAzOC41NjM2QzIzNC44OTcgMzguNjI0NCAyMzQuNzUyIDM4Ljc4NCAyMzQuNjkyIDM5LjA0MjJDMjM0LjU3IDM5LjUyODYgMjM0LjM3NSA0MC4wMjYyIDIzNC4xMDggNDAuNTM0OUMyMzMuODQxIDQxLjA0NDQgMjMzLjUxNCA0MS41MjY3IDIzMy4xMjUgNDEuOTgyNEMyMzIuNzM2IDQyLjQzODEgMjMyLjI5NyA0Mi44NDEyIDIzMS44MSA0My4xOTA1QzIzMS4zMjEgNDMuNTQwMSAyMzAuODEgNDMuNzkwOCAyMzAuMjc3IDQzLjk0MjNDMjI5Ljc0MyA0NC4xMTAxIDIyOS4zMDEgNDQuMTI4OSAyMjguOTUgNDMuOTk5NkMyMjguNTk5IDQzLjg3MDYgMjI4LjMyMSA0My42NTAzIDIyOC4xMTUgNDMuMzM4OUMyMjcuOTA5IDQzLjAyNzEgMjI3Ljc2MSA0Mi42NTEyIDIyNy42NjkgNDIuMjEwM0MyMjcuNTc4IDQxLjc2OTkgMjI3LjUyNCA0MS4zMTQyIDIyNy41MDkgNDAuODQyOEMyMjguMzc4IDQwLjkwMzggMjI5LjE1MiA0MC43NDgzIDIyOS44MzEgNDAuMzc1NUMyMzAuNTA5IDQwLjAwMzQgMjMxLjA4NSAzOS41MDkyIDIzMS41NTggMzguODkzOUMyMzIuMDMxIDM4LjI3ODggMjMyLjM4OSAzNy41ODc0IDIzMi42MzMgMzYuODJDMjMyLjg3NyAzNi4wNTI2IDIzMy4wMTQgMzUuMjg5MiAyMzMuMDQ1IDM0LjUyOTNDMjMzLjA2IDMzLjgxNSAyMzIuOTUzIDMzLjIxMSAyMzIuNzI0IDMyLjcxNzFDMjMyLjQ5NiAzMi4yMjM1IDIzMi4xODcgMzEuODM5NSAyMzEuNzk4IDMxLjU2NjJDMjMxLjQwOSAzMS4yOTI0IDIzMC45NjMgMzEuMTMzIDIzMC40NiAzMS4wODc0QzIyOS45NTcgMzEuMDQxNyAyMjkuNDQ1IDMxLjExMDUgMjI4LjkyNyAzMS4yOTI0QzIyOC4zMDIgMzEuNTA1NSAyMjcuNzcyIDMxLjg1MSAyMjcuMzM4IDMyLjMyOTZDMjI2LjkwMyAzMi44MDg1IDIyNi41NCAzMy4zNjM0IDIyNi4yNTEgMzMuOTkzNEMyMjUuOTYxIDM0LjYyNDQgMjI1LjczMiAzNS4zMDM5IDIyNS41NjQgMzYuMDMzNUMyMjUuMzk2IDM2Ljc2MjcgMjI1LjI3NCAzNy40ODEgMjI1LjE5OSAzOC4xODc0QzIyNS4xMjQgMzguODczIDIyNS4wODQgMzkuNTI5MiAyMjUuMDc1IDQwLjE1NzJDMjI1LjAxNyA0MC4yODI0IDIyNC45NTYgNDAuNDA4MiAyMjQuODg5IDQwLjUzNDlDMjI0LjYyMiA0MS4wNDQ0IDIyNC4yOTUgNDEuNTI2NyAyMjMuOTA2IDQxLjk4MjRDMjIzLjUxNyA0Mi40MzgxIDIyMy4wNzggNDIuODQxMiAyMjIuNTkxIDQzLjE5MDVDMjIyLjEwMiA0My41NDAxIDIyMS41OTIgNDMuNzkwOCAyMjEuMDU4IDQzLjk0MjNDMjIwLjUyNCA0NC4xMTAxIDIyMC4wODIgNDQuMTI4OSAyMTkuNzMxIDQzLjk5OTZDMjE5LjM4IDQzLjg3MDYgMjE5LjEwMiA0My42NTAzIDIxOC44OTYgNDMuMzM4OUMyMTguNjkxIDQzLjAyNzEgMjE4LjU0MiA0Mi42NTEyIDIxOC40NSA0Mi4yMTAzQzIxOC4zNTkgNDEuNzY5OSAyMTguMzA1IDQxLjMxNDIgMjE4LjI5IDQwLjg0MjhDMjE5LjE1OSA0MC45MDM4IDIxOS45MzMgNDAuNzQ4MyAyMjAuNjEyIDQwLjM3NTVDMjIxLjI5IDQwLjAwMzQgMjIxLjg2NiAzOS41MDkyIDIyMi4zMzkgMzguODkzOUMyMjIuODExIDM4LjI3ODggMjIzLjE3IDM3LjU4NzQgMjIzLjQxNCAzNi44MkMyMjMuNjU4IDM2LjA1MjYgMjIzLjc5NSAzNS4yODkyIDIyMy44MjYgMzQuNTI5M0MyMjMuODQxIDMzLjgxNSAyMjMuNzM0IDMzLjIxMSAyMjMuNTA2IDMyLjcxNzFDMjIzLjI3NyAzMi4yMjM1IDIyMi45NjggMzEuODM5NSAyMjIuNTc5IDMxLjU2NjJDMjIyLjE5IDMxLjI5MjQgMjIxLjc0NCAzMS4xMzMgMjIxLjI0MSAzMS4wODc0QzIyMC43MzggMzEuMDQxNyAyMjAuMjI3IDMxLjExMDUgMjE5LjcwOCAzMS4yOTI0QzIxOS4wODMgMzEuNTA1NSAyMTguNTUzIDMxLjg1MSAyMTguMTE5IDMyLjMyOTZDMjE3LjY4NCAzMi44MDg1IDIxNy4zMjEgMzMuMzYzNCAyMTcuMDMyIDMzLjk5MzRDMjE2Ljc0MiAzNC42MjQ0IDIxNi41MTMgMzUuMzAzOSAyMTYuMzQ2IDM2LjAzMzVDMjE2LjE3OCAzNi43NjI3IDIxNi4wNTYgMzcuNDgxIDIxNS45OCAzOC4xODc0QzIxNS45MzYgMzguNTg1OSAyMTUuOTA3IDM4Ljk3MjIgMjE1Ljg4NiAzOS4zNTE2QzIxNS43MzkgMzkuNDc2NSAyMTUuNTk1IDM5LjYwMjMgMjE1LjQ0MiAzOS43MjU4QzIxNC45MTYgNDAuMTUxNCAyMTQuMzYzIDQwLjUzNDkgMjEzLjc4NCA0MC44NzY5QzIxMy4yMDQgNDEuMjE5IDIxMi42MDEgNDEuNTAwMSAyMTEuOTc3IDQxLjcyMDRDMjExLjM1MSA0MS45NDA4IDIxMC43MSA0Mi4wNzM4IDIxMC4wNTUgNDIuMTE5MkwyMTEuNDczIDI2Ljk4NDdDMjExLjU2NSAyNi42NjU1IDIxMS41MTkgMjYuMzg0NyAyMTEuMzM2IDI2LjE0MTVDMjExLjE1MyAyNS44OTgzIDIxMC45MTYgMjUuNzMxMiAyMTAuNjI3IDI1LjY0MDFDMjEwLjMzNyAyNS41NDg4IDIxMC4wMjggMjUuNTU2NiAyMDkuNyAyNS42NjI3QzIwOS4zNzIgMjUuNzY5NCAyMDkuMTAyIDI2LjAxMjYgMjA4Ljg4OCAyNi4zOTE5QzIwOC43ODEgMjYuOTY5NyAyMDguNjcxIDI3Ljc1OTcgMjA4LjU1NyAyOC43NjI1QzIwOC40NDIgMjkuNzY1MyAyMDguMzI4IDMwLjg1OTUgMjA4LjIxMyAzMi4wNDQ4QzIwOC4wOTkgMzMuMjMgMjA3Ljk4NSAzNC40NTMyIDIwNy44NyAzNS43MTQyQzIwNy43NTYgMzYuOTc1OSAyMDcuNjU3IDM4LjE1MzMgMjA3LjU3MyAzOS4yNDcyQzIwNy41NjkgMzkuMjk1OCAyMDcuNTY2IDM5LjMzOTggMjA3LjU2MiAzOS4zODc4QzIwNy40MjkgMzkuNTAwNSAyMDcuMjk5IDM5LjYxNDIgMjA3LjE2MSAzOS43MjU4QzIwNi42MzUgNDAuMTUxNCAyMDYuMDgyIDQwLjUzNDkgMjA1LjUwMyA0MC44NzY5QzIwNC45MjMgNDEuMjE5IDIwNC4zMjEgNDEuNTAwMSAyMDMuNjk2IDQxLjcyMDRDMjAzLjA3IDQxLjk0MDggMjAyLjQyOSA0Mi4wNzM4IDIwMS43NzQgNDIuMTE5MkwyMDMuMTkyIDI2Ljk4NDdDMjAzLjI4NCAyNi42NjU1IDIwMy4yMzggMjYuMzg0NyAyMDMuMDU1IDI2LjE0MTVDMjAyLjg3MiAyNS44OTgzIDIwMi42MzUgMjUuNzMxMiAyMDIuMzQ2IDI1LjY0MDFDMjAyLjA1NiAyNS41NDg4IDIwMS43NDcgMjUuNTU2NiAyMDEuNDE5IDI1LjY2MjdDMjAxLjA5MSAyNS43Njk0IDIwMC44MjEgMjYuMDEyNiAyMDAuNjA3IDI2LjM5MTlDMjAwLjUwMSAyNi45Njk3IDIwMC4zOSAyNy43NTk3IDIwMC4yNzYgMjguNzYyNUMyMDAuMTYxIDI5Ljc2NTMgMjAwLjA0NyAzMC44NTk1IDE5OS45MzMgMzIuMDQ0OEMxOTkuODE4IDMzLjIzIDE5OS43MDQgMzQuNDUzMiAxOTkuNTg5IDM1LjcxNDJDMTk5LjQ3NSAzNi45NzU5IDE5OS4zNzYgMzguMTUzMyAxOTkuMjkyIDM5LjI0NzJDMTk5LjI5IDM5LjI2OTIgMTk5LjI4OSAzOS4yODkxIDE5OS4yODcgMzkuMzExMUMxOTkuMDQ4IDM5LjQyMTkgMTk4Ljc4NiAzOS41MTkgMTk4LjUwMyAzOS42MDA2QzE5OC4yMTMgMzkuNjg0NCAxOTcuODg1IDM5LjczMzkgMTk3LjUxOSAzOS43NDg5QzE5Ny41OCAzOS40NzUxIDE5Ny42MyAzOS4xNzEyIDE5Ny42NjggMzguODM2OUMxOTcuNzA2IDM4LjUwMjkgMTk3LjczNyAzOC4xNTMzIDE5Ny43NiAzNy43ODg0QzE5Ny43ODIgMzcuNDI0MSAxOTcuNzkgMzcuMDU5MSAxOTcuNzgyIDM2LjY5NDVDMTk3Ljc3NCAzNi4zMjk2IDE5Ny43NTUgMzUuOTk1NiAxOTcuNzI1IDM1LjY5MTRDMTk3LjY0OSAzNS4wMzg1IDE5Ny41MDggMzQuNDE5MSAxOTcuMzAyIDMzLjgzMzhDMTk3LjA5NiAzMy4yNDkxIDE5Ni44MTggMzIuNzU5MyAxOTYuNDY3IDMyLjM2MzdDMTk2LjExNiAzMS45Njg3IDE5NS42NzggMzEuNzAyNyAxOTUuMTUxIDMxLjU2NjJDMTk0LjYyNiAzMS40Mjk0IDE5NC4wMTIgMzEuNDc0OCAxOTMuMzEgMzEuNzAyN0MxOTIuMjczIDMxLjU2NjIgMTkxLjMzOSAzMS42NjEzIDE5MC41MDggMzEuOTg3OEMxODkuNjc3IDMyLjMxNDkgMTg4Ljk1NiAzMi43ODk0IDE4OC4zNDYgMzMuNDEyMkMxODcuNzM2IDM0LjAzNTcgMTg3LjIzNyAzNC43Njg0IDE4Ni44NDggMzUuNjExOUMxODYuNDU5IDM2LjQ1NTEgMTg2LjIgMzcuMzIxNCAxODYuMDcgMzguMjFDMTg2LjAxNSAzOC41ODY4IDE4NS45ODggMzguOTYxOCAxODUuOTggMzkuMzM2QzE4NS43NDQgMzkuODE3NyAxODUuNDg2IDQwLjIzODggMTg1LjIwMSA0MC41OTIxQzE4NC43OTcgNDEuMDkzNSAxODQuMzc3IDQxLjUwMzggMTgzLjk0MyA0MS44MjI4QzE4My41MDggNDIuMTQyIDE4My4wNzcgNDIuMzg1MiAxODIuNjUgNDIuNTUyM0MxODIuMjIzIDQyLjcxOTggMTgxLjg0MiA0Mi44MzM3IDE4MS41MDcgNDIuODk0MUMxODEuMTEgNDIuOTcwMiAxODAuNzI5IDQyLjk3OCAxODAuMzYzIDQyLjkxN0MxNzkuOTk3IDQyLjg1NjUgMTc5LjY2MSA0Mi42ODE2IDE3OS4zNTcgNDIuMzkyN0MxNzkuMTEyIDQyLjE4MDIgMTc4LjkyNSA0MS44MzgxIDE3OC43OTYgNDEuMzY3MUMxNzguNjY2IDQwLjg5NiAxNzguNTkgNDAuMzYwOCAxNzguNTY3IDM5Ljc2MDJDMTc4LjU0NCAzOS4xNTk5IDE3OC41NjcgMzguNTMzIDE3OC42MzYgMzcuODc5OEMxNzguNzA1IDM3LjIyNjYgMTc4LjgyMiAzNi42MDcyIDE3OC45OSAzNi4wMjIyQzE3OS4xNTggMzUuNDM3MiAxNzkuMzcxIDM0LjkxMyAxNzkuNjMxIDM0LjQ0OTJDMTc5Ljg5IDMzLjk4NjIgMTgwLjE5NSAzMy42NTU0IDE4MC41NDYgMzMuNDU3OUMxODAuNzQ0IDMzLjQ4ODYgMTgwLjg2NiAzMy42MDYgMTgwLjkxMiAzMy44MTFDMTgwLjk1OCAzNC4wMTYzIDE4MC45NjkgMzQuMjU5NSAxODAuOTQ2IDM0LjU0MDVDMTgwLjkyMyAzNC44MjE5IDE4MC44ODkgMzUuMTEwNSAxODAuODQzIDM1LjQwNjZDMTgwLjc5NyAzNS43MDMgMTgwLjc3NSAzNS45NTAyIDE4MC43NzUgMzYuMTQ3NEMxODAuODUxIDM2LjU1NzcgMTgwLjk5OSAzNi44NzcgMTgxLjIyMSAzNy4xMDQ4QzE4MS40NDEgMzcuMzMyNyAxODEuNjkgMzcuNDY2IDE4MS45NjQgMzcuNTAzNkMxODIuMjM5IDM3LjU0MTcgMTgyLjUwOSAzNy40NzczIDE4Mi43NzYgMzcuMzA5OEMxODMuMDQzIDM3LjE0MyAxODMuMjYgMzYuODc3IDE4My40MjggMzYuNTEyQzE4My40NDMgMzYuNTI3NCAxODMuNDY2IDM2LjUzNDkgMTgzLjQ5NyAzNi41MzQ5TDE4My44MTcgMzMuNjQwNEMxODMuOTA5IDMzLjI0NTEgMTgzLjg0NyAzMi44OTU4IDE4My42MzQgMzIuNTkxOUMxODMuNDIgMzIuMjg4IDE4My4xMzggMzIuMTEzIDE4Mi43ODggMzIuMDY3NkMxODIuMzQ1IDMxLjQyOTQgMTgxLjc0NyAzMS4wOTE0IDE4MC45OTIgMzEuMDUzMkMxODAuMjM3IDMxLjAxNTQgMTc5LjQ2MyAzMS4yNjIzIDE3OC42NyAzMS43OTQxQzE3OC4xODIgMzIuMTQ0IDE3Ny43NTEgMzIuNjI2IDE3Ny4zNzggMzMuMjQxM0MxNzcuMDA0IDMzLjg1NyAxNzYuNjk5IDM0LjU0MDUgMTc2LjQ2MyAzNS4yOTI2QzE3Ni4yMjYgMzYuMDQ0OCAxNzYuMDU4IDM2LjgzOTEgMTc1Ljk1OSAzNy42NzQ4QzE3NS44NiAzOC41MTA0IDE3NS44NDEgMzkuMzIzNiAxNzUuOTAyIDQwLjExMzNDMTc1Ljk2MyA0MC45MDM4IDE3Ni4xMDQgNDEuNjQ4NCAxNzYuMzI1IDQyLjM0N0MxNzYuNTQ2IDQzLjA0NjIgMTc2Ljg1NSA0My42MzEyIDE3Ny4yNTIgNDQuMTAyQzE3Ny41ODcgNDQuNTEyMyAxNzcuOTY4IDQ0LjgxMjcgMTc4LjM5NSA0NS4wMDI3QzE3OC44MjIgNDUuMTkyNyAxNzkuMjY4IDQ1LjMxMDEgMTc5LjczNCA0NS4zNTU4QzE4MC4xOTkgNDUuNDAxMiAxODAuNjYgNDUuMzgyMSAxODEuMTE4IDQ1LjI5ODhDMTgxLjU3NSA0NS4yMTU1IDE4Mi4wMSA0NS4wOTc4IDE4Mi40MjEgNDQuOTQ1NEMxODIuOTU1IDQ0Ljc0ODIgMTgzLjUwNSA0NC40OTcyIDE4NC4wNjkgNDQuMTkzM0MxODQuNjMzIDQzLjg4OTcgMTg1LjE3NCA0My41MjQ4IDE4NS42OTMgNDMuMDk5MUMxODUuOTY2IDQyLjg3NTMgMTg2LjIyOCA0Mi42MzEzIDE4Ni40ODIgNDIuMzY5NkMxODYuNTk4IDQyLjY1NTMgMTg2LjcyNyA0Mi45MzE3IDE4Ni44ODIgNDMuMTkwNUMxODcuMjk0IDQzLjg3NDEgMTg3Ljg1IDQ0LjQyOSAxODguNTUyIDQ0Ljg1NDRDMTg5LjI1MyA0NS4yNzk3IDE5MC4xMTUgNDUuNDg0NCAxOTEuMTM3IDQ1LjQ2OTdDMTkyLjIzNSA0NS40NTQ0IDE5My4yNDkgNDUuMTc3NCAxOTQuMTggNDQuNjM3OEMxOTUuMTEgNDQuMDk4OCAxOTUuODcyIDQzLjMwNDIgMTk2LjQ2NyA0Mi4yNTZDMTk3LjM1OCA0Mi4yNTYgMTk4LjIzNCA0Mi4xMDk2IDE5OS4wOTYgNDEuODE5QzE5OS4wODkgNDEuOTExIDE5OS4wODEgNDIuMDA3OSAxOTkuMDc1IDQyLjA5NjZDMTk5LjAxNCA0Mi45MDE5IDE5OC45ODMgNDMuNDQ4NyAxOTguOTgzIDQzLjczNzZDMTk4Ljk2OCA0NC4yMzkgMTk4LjkzNCA0NC44NTgxIDE5OC44OCA0NS41OTQ5QzE5OC44MjcgNDYuMzMyIDE5OC43OTMgNDcuMTA2OSAxOTguNzc4IDQ3LjkxOThDMTk4Ljc2MyA0OC43MzI2IDE5OC43OTMgNDkuNTUzMiAxOTguODY5IDUwLjM4MTdDMTk4Ljk0NSA1MS4yMDk2IDE5OS4xMDUgNTEuOTYyIDE5OS4zNDkgNTIuNjM4M0MxOTkuNTkzIDUzLjMxNDEgMTk5Ljk0IDUzLjg4NzggMjAwLjM5IDU0LjM1OTFDMjAwLjg0IDU0LjgyOTkgMjAxLjQzMSA1NS4xMTEyIDIwMi4xNjMgNTUuMjAyM0MyMDIuOTQxIDU1LjMwODQgMjAzLjYxMiA1NS4xNzE3IDIwNC4xNzYgNTQuNzkyQzIwNC43NCA1NC40MTIgMjA1LjE5OCA1My44OTE4IDIwNS41NDkgNTMuMjMwOEMyMDUuODk5IDUyLjU2OTUgMjA2LjE0NyA1MS44MDYxIDIwNi4yOTIgNTAuOTQwMUMyMDYuNDM3IDUwLjA3NCAyMDYuNDc5IDQ5LjIwMzkgMjA2LjQxOCA0OC4zMzAxQzIwNi4zNTcgNDcuNDU2MiAyMDYuMTk2IDQ2LjYzMjEgMjA1LjkzNyA0NS44NTc1QzIwNS42NzggNDUuMDgyMiAyMDUuMzE5IDQ0LjQ0NCAyMDQuODYyIDQzLjk0MjNDMjA1LjEzNyA0My44NjY5IDIwNS40NjUgNDMuNzIyNiAyMDUuODQ2IDQzLjUwOTVDMjA2LjIyNyA0My4yOTY5IDIwNi42MiA0My4wNTc1IDIwNy4wMjQgNDIuNzkxNUMyMDcuMTIzIDQyLjcyNjEgMjA3LjIyMSA0Mi42NTczIDIwNy4zMiA0Mi41OTAyQzIwNy4yODMgNDMuMTI4NiAyMDcuMjY0IDQzLjUxMjYgMjA3LjI2NCA0My43Mzc2QzIwNy4yNDkgNDQuMjM5IDIwNy4yMTUgNDQuODU4MSAyMDcuMTYxIDQ1LjU5NDlDMjA3LjEwOCA0Ni4zMzIgMjA3LjA3MyA0Ny4xMDY5IDIwNy4wNTggNDcuOTE5OEMyMDcuMDQzIDQ4LjczMjYgMjA3LjA3MyA0OS41NTMyIDIwNy4xNSA1MC4zODE3QzIwNy4yMjYgNTEuMjA5NiAyMDcuMzg2IDUxLjk2MiAyMDcuNjMgNTIuNjM4M0MyMDcuODc0IDUzLjMxNDEgMjA4LjIyMSA1My44ODc4IDIwOC42NzEgNTQuMzU5MUMyMDkuMTIxIDU0LjgyOTkgMjA5LjcxMiA1NS4xMTEyIDIxMC40NDQgNTUuMjAyM0MyMTEuMjIxIDU1LjMwODQgMjExLjg5MiA1NS4xNzE3IDIxMi40NTcgNTQuNzkyQzIxMy4wMjEgNTQuNDEyIDIxMy40NzggNTMuODkxOCAyMTMuODMgNTMuMjMwOEMyMTQuMTggNTIuNTY5NSAyMTQuNDI4IDUxLjgwNjEgMjE0LjU3MyA1MC45NDAxQzIxNC43MTggNTAuMDc0IDIxNC43NTkgNDkuMjAzOSAyMTQuNjk5IDQ4LjMzMDFDMjE0LjYzNyA0Ny40NTYyIDIxNC40NzcgNDYuNjMyMSAyMTQuMjE4IDQ1Ljg1NzVDMjEzLjk1OSA0NS4wODIyIDIxMy42MDEgNDQuNDQ0IDIxMy4xNDMgNDMuOTQyM0MyMTMuNDE4IDQzLjg2NjkgMjEzLjc0NSA0My43MjI2IDIxNC4xMjcgNDMuNTA5NUMyMTQuNTA4IDQzLjI5NjkgMjE0LjkgNDMuMDU3NSAyMTUuMzA1IDQyLjc5MTVDMjE1LjUxNSA0Mi42NTMzIDIxNS43MjQgNDIuNTEwNyAyMTUuOTMyIDQyLjM2NDFDMjE2LjAxIDQzLjEwNzIgMjE2LjE3OSA0My43NTkgMjE2LjQ0OCA0NC4zMDczQzIxNi43NzYgNDQuOTc2MSAyMTcuMjIyIDQ1LjQ5MjUgMjE3Ljc4NyA0NS44NTc1QzIxOC4zNTEgNDYuMjIxOCAyMTkuMDE0IDQ2LjQyMzQgMjE5Ljc3NyA0Ni40NjEyQzIyMC41MzkgNDYuNDk4OCAyMjEuMzcgNDYuMzU4NiAyMjIuMjcxIDQ2LjAzOTNDMjIyLjk0MSA0NS43OTY1IDIyMy41MjUgNDUuNDkyNSAyMjQuMDIgNDUuMTI3OUMyMjQuNTE2IDQ0Ljc2MyAyMjQuOTYyIDQ0LjMxODUgMjI1LjM1OCA0My43OTQ2QzIyNS4zODEgNDMuNzY0MiAyMjUuNDAzIDQzLjczMTMgMjI1LjQyNSA0My43MDA2QzIyNS40OTYgNDMuOTEzNCAyMjUuNTc0IDQ0LjExNzkgMjI1LjY2NyA0NC4zMDczQzIyNS45OTUgNDQuOTc2MSAyMjYuNDQxIDQ1LjQ5MjUgMjI3LjAwNiA0NS44NTc1QzIyNy41NjkgNDYuMjIxOCAyMjguMjMzIDQ2LjQyMzQgMjI4Ljk5NiA0Ni40NjEyQzIyOS43NTggNDYuNDk4OCAyMzAuNTg5IDQ2LjM1ODYgMjMxLjQ4OSA0Ni4wMzkzQzIzMi4xNiA0NS43OTY1IDIzMi43NDQgNDUuNDkyNSAyMzMuMjM5IDQ1LjEyNzlDMjMzLjczNSA0NC43NjMgMjM0LjE4MSA0NC4zMTg1IDIzNC41NzcgNDMuNzk0NkMyMzQuOTc0IDQzLjI3IDIzNS4zMzYgNDIuNjY2IDIzNS42NjQgNDEuOTgyNEMyMzUuOTkyIDQxLjI5ODUgMjM2LjMyMyA0MC41MTY0IDIzNi42NTkgMzkuNjM0N0MyMzYuNzIgMzkuMzkxOCAyMzYuNjYzIDM5LjE3NTIgMjM2LjQ4OCAzOC45ODUyWlwiIGZpbGw9XCIjMEQwQzIzXCIvPlxuPC9zdmc+YDtcblxuY29uc3QgcGF5cGFsID0gYFxuPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNTBcIiBoZWlnaHQ9XCI0MFwiPlxuPHBhdGggZmlsbD1cIiMyNTNCODBcIiBkPVwiTTQ2LjIxMSA2Ljc0OWgtNi44MzlhLjk1Ljk1IDAgMCAwLS45MzkuODAybC0yLjc2NiAxNy41MzdhLjU3LjU3IDAgMCAwIC41NjQuNjU4aDMuMjY1YS45NS45NSAwIDAgMCAuOTM5LS44MDNsLjc0Ni00LjczYS45NS45NSAwIDAgMSAuOTM4LS44MDNoMi4xNjVjNC41MDUgMCA3LjEwNS0yLjE4IDcuNzg0LTYuNS4zMDYtMS44OS4wMTMtMy4zNzUtLjg3Mi00LjQxNS0uOTcyLTEuMTQyLTIuNjk2LTEuNzQ2LTQuOTg1LTEuNzQ2ek00NyAxMy4xNTRjLS4zNzQgMi40NTQtMi4yNDkgMi40NTQtNC4wNjIgMi40NTRoLTEuMDMybC43MjQtNC41ODNhLjU3LjU3IDAgMCAxIC41NjMtLjQ4MWguNDczYzEuMjM1IDAgMi40IDAgMy4wMDIuNzA0LjM1OS40Mi40NjkgMS4wNDQuMzMyIDEuOTA2ek02Ni42NTQgMTMuMDc1aC0zLjI3NWEuNTcuNTcgMCAwIDAtLjU2My40ODFsLS4xNDUuOTE2LS4yMjktLjMzMmMtLjcwOS0xLjAyOS0yLjI5LTEuMzczLTMuODY4LTEuMzczLTMuNjE5IDAtNi43MSAyLjc0MS03LjMxMiA2LjU4Ni0uMzEzIDEuOTE4LjEzMiAzLjc1MiAxLjIyIDUuMDMxLjk5OCAxLjE3NiAyLjQyNiAxLjY2NiA0LjEyNSAxLjY2NiAyLjkxNiAwIDQuNTMzLTEuODc1IDQuNTMzLTEuODc1bC0uMTQ2LjkxYS41Ny41NyAwIDAgMCAuNTYyLjY2aDIuOTVhLjk1Ljk1IDAgMCAwIC45MzktLjgwM2wxLjc3LTExLjIwOWEuNTY4LjU2OCAwIDAgMC0uNTYxLS42NTh6bS00LjU2NSA2LjM3NGMtLjMxNiAxLjg3MS0xLjgwMSAzLjEyNy0zLjY5NSAzLjEyNy0uOTUxIDAtMS43MTEtLjMwNS0yLjE5OS0uODgzLS40ODQtLjU3NC0uNjY4LTEuMzkxLS41MTQtMi4zMDEuMjk1LTEuODU1IDEuODA1LTMuMTUyIDMuNjctMy4xNTIuOTMgMCAxLjY4Ni4zMDkgMi4xODQuODkyLjQ5OS41ODkuNjk3IDEuNDExLjU1NCAyLjMxN3pNODQuMDk2IDEzLjA3NWgtMy4yOTFhLjk1NC45NTQgMCAwIDAtLjc4Ny40MTdsLTQuNTM5IDYuNjg2LTEuOTI0LTYuNDI1YS45NTMuOTUzIDAgMCAwLS45MTItLjY3OGgtMy4yMzRhLjU3LjU3IDAgMCAwLS41NDEuNzU0bDMuNjI1IDEwLjYzOC0zLjQwOCA0LjgxMWEuNTcuNTcgMCAwIDAgLjQ2NS45aDMuMjg3YS45NDkuOTQ5IDAgMCAwIC43ODEtLjQwOGwxMC45NDYtMTUuOGEuNTcuNTcgMCAwIDAtLjQ2OC0uODk1elwiLz5cbjxwYXRoIGZpbGw9XCIjMTc5QkQ3XCIgZD1cIk05NC45OTIgNi43NDloLTYuODRhLjk1Ljk1IDAgMCAwLS45MzguODAybC0yLjc2NiAxNy41MzdhLjU2OS41NjkgMCAwIDAgLjU2Mi42NThoMy41MWEuNjY1LjY2NSAwIDAgMCAuNjU2LS41NjJsLjc4NS00Ljk3MWEuOTUuOTUgMCAwIDEgLjkzOC0uODAzaDIuMTY0YzQuNTA2IDAgNy4xMDUtMi4xOCA3Ljc4NS02LjUuMzA3LTEuODkuMDEyLTMuMzc1LS44NzMtNC40MTUtLjk3MS0xLjE0Mi0yLjY5NC0xLjc0Ni00Ljk4My0xLjc0NnptLjc4OSA2LjQwNWMtLjM3MyAyLjQ1NC0yLjI0OCAyLjQ1NC00LjA2MiAyLjQ1NGgtMS4wMzFsLjcyNS00LjU4M2EuNTY4LjU2OCAwIDAgMSAuNTYyLS40ODFoLjQ3M2MxLjIzNCAwIDIuNCAwIDMuMDAyLjcwNC4zNTkuNDIuNDY4IDEuMDQ0LjMzMSAxLjkwNnpNMTE1LjQzNCAxMy4wNzVoLTMuMjczYS41NjcuNTY3IDAgMCAwLS41NjIuNDgxbC0uMTQ1LjkxNi0uMjMtLjMzMmMtLjcwOS0xLjAyOS0yLjI4OS0xLjM3My0zLjg2Ny0xLjM3My0zLjYxOSAwLTYuNzA5IDIuNzQxLTcuMzExIDYuNTg2LS4zMTIgMS45MTguMTMxIDMuNzUyIDEuMjE5IDUuMDMxIDEgMS4xNzYgMi40MjYgMS42NjYgNC4xMjUgMS42NjYgMi45MTYgMCA0LjUzMy0xLjg3NSA0LjUzMy0xLjg3NWwtLjE0Ni45MWEuNTcuNTcgMCAwIDAgLjU2NC42NmgyLjk0OWEuOTUuOTUgMCAwIDAgLjkzOC0uODAzbDEuNzcxLTExLjIwOWEuNTcxLjU3MSAwIDAgMC0uNTY1LS42NTh6bS00LjU2NSA2LjM3NGMtLjMxNCAxLjg3MS0xLjgwMSAzLjEyNy0zLjY5NSAzLjEyNy0uOTQ5IDAtMS43MTEtLjMwNS0yLjE5OS0uODgzLS40ODQtLjU3NC0uNjY2LTEuMzkxLS41MTQtMi4zMDEuMjk3LTEuODU1IDEuODA1LTMuMTUyIDMuNjctMy4xNTIuOTMgMCAxLjY4Ni4zMDkgMi4xODQuODkyLjUwMS41ODkuNjk5IDEuNDExLjU1NCAyLjMxN3pNMTE5LjI5NSA3LjIzbC0yLjgwNyAxNy44NThhLjU2OS41NjkgMCAwIDAgLjU2Mi42NThoMi44MjJjLjQ2OSAwIC44NjctLjM0LjkzOS0uODAzbDIuNzY4LTE3LjUzNmEuNTcuNTcgMCAwIDAtLjU2Mi0uNjU5aC0zLjE2YS41NzEuNTcxIDAgMCAwLS41NjIuNDgyelwiLz5cbjxwYXRoIGZpbGw9XCIjMjUzQjgwXCIgZD1cIk03LjI2NiAyOS4xNTRsLjUyMy0zLjMyMi0xLjE2NS0uMDI3SDEuMDYxTDQuOTI3IDEuMjkyYS4zMTYuMzE2IDAgMCAxIC4zMTQtLjI2OGg5LjM4YzMuMTE0IDAgNS4yNjMuNjQ4IDYuMzg1IDEuOTI3LjUyNi42Ljg2MSAxLjIyNyAxLjAyMyAxLjkxNy4xNy43MjQuMTczIDEuNTg5LjAwNyAyLjY0NGwtLjAxMi4wNzd2LjY3NmwuNTI2LjI5OGEzLjY5IDMuNjkgMCAwIDEgMS4wNjUuODEyYy40NS41MTMuNzQxIDEuMTY1Ljg2NCAxLjkzOC4xMjcuNzk1LjA4NSAxLjc0MS0uMTIzIDIuODEyLS4yNCAxLjIzMi0uNjI4IDIuMzA1LTEuMTUyIDMuMTgzYTYuNTQ3IDYuNTQ3IDAgMCAxLTEuODI1IDJjLS42OTYuNDk0LTEuNTIzLjg2OS0yLjQ1OCAxLjEwOS0uOTA2LjIzNi0xLjkzOS4zNTUtMy4wNzIuMzU1aC0uNzNjLS41MjIgMC0xLjAyOS4xODgtMS40MjcuNTI1YTIuMjEgMi4yMSAwIDAgMC0uNzQ0IDEuMzI4bC0uMDU1LjI5OS0uOTI0IDUuODU1LS4wNDIuMjE1Yy0uMDExLjA2OC0uMDMuMTAyLS4wNTguMTI1YS4xNTUuMTU1IDAgMCAxLS4wOTYuMDM1SDcuMjY2elwiLz5cbjxwYXRoIGZpbGw9XCIjMTc5QkQ3XCIgZD1cIk0yMy4wNDggNy42NjdjLS4wMjguMTc5LS4wNi4zNjItLjA5Ni41NS0xLjIzNyA2LjM1MS01LjQ2OSA4LjU0NS0xMC44NzQgOC41NDVIOS4zMjZjLS42NjEgMC0xLjIxOC40OC0xLjMyMSAxLjEzMkw2LjU5NiAyNi44M2wtLjM5OSAyLjUzM2EuNzA0LjcwNCAwIDAgMCAuNjk1LjgxNGg0Ljg4MWMuNTc4IDAgMS4wNjktLjQyIDEuMTYtLjk5bC4wNDgtLjI0OC45MTktNS44MzIuMDU5LS4zMmMuMDktLjU3Mi41ODItLjk5MiAxLjE2LS45OTJoLjczYzQuNzI5IDAgOC40MzEtMS45MiA5LjUxMy03LjQ3Ni40NTItMi4zMjEuMjE4LTQuMjU5LS45NzgtNS42MjJhNC42NjcgNC42NjcgMCAwIDAtMS4zMzYtMS4wM3pcIi8+XG48cGF0aCBmaWxsPVwiIzIyMkQ2NVwiIGQ9XCJNMjEuNzU0IDcuMTUxYTkuNzU3IDkuNzU3IDAgMCAwLTEuMjAzLS4yNjcgMTUuMjg0IDE1LjI4NCAwIDAgMC0yLjQyNi0uMTc3aC03LjM1MmExLjE3MiAxLjE3MiAwIDAgMC0xLjE1OS45OTJMOC4wNSAxNy42MDVsLS4wNDUuMjg5YTEuMzM2IDEuMzM2IDAgMCAxIDEuMzIxLTEuMTMyaDIuNzUyYzUuNDA1IDAgOS42MzctMi4xOTUgMTAuODc0LTguNTQ1LjAzNy0uMTg4LjA2OC0uMzcxLjA5Ni0uNTVhNi41OTQgNi41OTQgMCAwIDAtMS4wMTctLjQyOSA5LjA0NSA5LjA0NSAwIDAgMC0uMjc3LS4wODd6XCIvPlxuPHBhdGggZmlsbD1cIiMyNTNCODBcIiBkPVwiTTkuNjE0IDcuNjk5YTEuMTY5IDEuMTY5IDAgMCAxIDEuMTU5LS45OTFoNy4zNTJjLjg3MSAwIDEuNjg0LjA1NyAyLjQyNi4xNzdhOS43NTcgOS43NTcgMCAwIDEgMS40ODEuMzUzYy4zNjUuMTIxLjcwNC4yNjQgMS4wMTcuNDI5LjM2OC0yLjM0Ny0uMDAzLTMuOTQ1LTEuMjcyLTUuMzkyQzIwLjM3OC42ODIgMTcuODUzIDAgMTQuNjIyIDBoLTkuMzhjLS42NiAwLTEuMjIzLjQ4LTEuMzI1IDEuMTMzTC4wMSAyNS44OThhLjgwNi44MDYgMCAwIDAgLjc5NS45MzJoNS43OTFsMS40NTQtOS4yMjUgMS41NjQtOS45MDZ6XCIvPlxuPC9zdmc+YDtcbiJdLCJuYW1lcyI6WyJhZGRJY29uIiwiYWxpZ25tZW50XzEiLCJ0YWJsZV9jZWxsXzEiLCJ0aGlzIiwidW5kZWZpbmVkIiwiZ2xvYmFsIiwicmVxdWlyZSQkMCIsImxvZGFzaF8xIiwibmV2ZXJ0aHJvd18xIiwicmVzdWx0c18xIiwiYXN0X3V0aWxzXzEiLCJjYWxjXzEiLCJyb3dfMSIsImNvbHVtbl8xIiwicmVmZXJlbmNlXzEiLCJyYW5nZV8xIiwiU2VtYW50aWNIZWxwZXJzXzEiLCJXM0NFQk5GXzEiLCJDdXN0b21fMSIsImRpc3BsYXlfZGlyZWN0aXZlXzEiLCJkZXN0aW5hdGlvbiIsImRlc3RpbmF0aW9uXzEiLCJzaW5nbGVfcGFyYW1fZnVuY3Rpb25fMSIsImNvbmRpdGlvbmFsX2Z1bmN0aW9uXzEiLCJhbGdlYnJhaWNfb3BlcmF0aW9uXzEiLCJjb25zdGFudF8xIiwiZWJuZl8xIiwiZm9jdXNfMSIsInBvaW50XzEiLCJ0YWJsZV9yb3dfMSIsInRhYmxlXzEiLCJhbGlnbm1lbnQiLCJ0YWJsZSIsImZvcm1hdHRlcl8xIiwicGFyc2VyXzEiLCJyYW5nZSIsImVkaXRfc2NyaXB0XzEiLCJmb2N1cyIsImZvcm1hdHRlcl9qc18xIiwidGV4dF9lZGl0b3JfMSIsIm9wdGlvbnNfMSIsInRhYmxlX2VkaXRvcl8xIiwiRm9ybWF0VHlwZSIsIm9wdGlvbnNXaXRoRGVmYXVsdHMiLCJQb2ludCIsIkFsaWdubWVudCIsIlNvcnRPcmRlciIsIk5vdGljZSIsIk1URUVkaXRvciIsIk1vZGFsIiwiTWFya2Rvd25WaWV3IiwiSXRlbVZpZXciLCJQcmVjIiwia2V5bWFwIiwiUGx1Z2luIiwiU2V0dGluZyIsIlBsdWdpblNldHRpbmdUYWIiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxhQUFhLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ25DLElBQUksYUFBYSxHQUFHLE1BQU0sQ0FBQyxj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QUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUN0RyxRQUFRLFNBQVMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRTtBQUN0SCxRQUFRLElBQUksQ0FBQyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM5RSxLQUFLLENBQUMsQ0FBQztBQUNQLENBQUM7QUFDRDtBQUNPLFNBQVMsV0FBVyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7QUFDM0MsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3JILElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sTUFBTSxLQUFLLFVBQVUsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFdBQVcsRUFBRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDN0osSUFBSSxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxPQUFPLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN0RSxJQUFJLFNBQVMsSUFBSSxDQUFDLEVBQUUsRUFBRTtBQUN0QixRQUFRLElBQUksQ0FBQyxFQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMsaUNBQWlDLENBQUMsQ0FBQztBQUN0RSxRQUFRLE9BQU8sQ0FBQyxFQUFFLElBQUk7QUFDdEIsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN6SyxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEQsWUFBWSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDekIsZ0JBQWdCLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU07QUFDOUMsZ0JBQWdCLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUN4RSxnQkFBZ0IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztBQUNqRSxnQkFBZ0IsS0FBSyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUztBQUNqRSxnQkFBZ0I7QUFDaEIsb0JBQW9CLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDaEksb0JBQW9CLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxD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QUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsVUFBVSxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQzlDLElBQUksSUFBSSxDQUFDO0FBQ1QsTUFBTSxDQUFDLEdBQUcsSUFBSTtBQUNkLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUM7QUFDM0IsSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEIsSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQyxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDeEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVELEdBQUcsQ0FBQztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDdEMsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUc7QUFDdEIsTUFBTSxDQUFDLEdBQUcsSUFBSTtBQUNkLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2QsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdB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LENBQUMsQ0FBQztBQUN4RCxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDckI7QUFDQTtBQUNBLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN0QztBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQ3BDLE1BQU0sQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNkO0FBQ0E7QUFDQSxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQzVFLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzVCO0FBQ0E7QUFDQSxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9EO0FBQ0EsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCLFFBQVEsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7QUFDckIsT0FBTyxNQUFNO0FBQ2IsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFD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QUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ3JELElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDO0FBQ0EsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztBQUN4QixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0FBQ3ZCLElBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUQsSUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztBQUN0QixJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDckI7QUFDQSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0M7QUFDQSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDcEIsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUN4QixJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3ZCO0FBQ0EsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNsQixHQUFHLENBQUM7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLENBQUMsQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLFlBQVk7QUFD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STtBQUNkLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDYixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNiLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUM7QUFDM0I7QUFDQTtBQUNBLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ2hDLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN6RSxLQUFLO0FBQ0w7QUFDQSxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDckI7QUFDQTtBQUNBLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QjtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUM5QixNQUFNLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUI7QUFDQSxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDNUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QixNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFH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SSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pDO0FBQ0E7QUFDQSxJQUFJLEtBQUssQ0FBQyxHQUFHLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUc7QUFDN0IsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCLE1BQU0sS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHO0FBQ2hDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ2pELFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7QUFDOUIsUUFBUSxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7QUFDN0IsT0FBTztBQUNQO0FBQ0EsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7QUFDdkMsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDOUI7QUFDQSxJQUFJLElBQUksS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ25CLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ25CO0FBQ0EsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNaLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbEM7QUFDQSxJQUFJLE9BQU8sUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFD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Q0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QixNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkUsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzVDLEtBQUs7QUFDTDtBQUNBLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQztBQUNyQixJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNyQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0FBQ3hCLElBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQ2xEO0FBQ0EsSUFBSSxVQUFVO0FBQ2QsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoQyxNQUFNLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTTtBQUNuQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDZCxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDZCxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDZCxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDZCxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDYixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMvQixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDYixLQUFLO0FBQ0w7QUFDQSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3QyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMvQixJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMvQixJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RCO0FBQ0E7QUFDQSxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQztBQUN4RixVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzlCO0FBQ0EsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUN4QixJ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QyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3RTtBQUNBLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BCO0FBQ0EsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDMUI7QUFDQSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0FBQ3hCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDdkI7QUFDQSxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzVDO0FBQ0E7QUFDQSxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztBQUNsQztBQUNBO0FBQ0EsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssZ0JBQWdCLEVBQUU7QUFDNUUsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2pDLE1BQU0sT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDaEUsS0FBSztBQUNMO0FBQ0EsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNaO0FBQ0E7QUFDQSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNmO0FBQ0E7QUFDQSxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25EO0FBQ0E7QUFDQSxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQztBQUNBO0FBQ0EsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtBQUN0RCxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCLFFBQVEsT0FBTyxDQUFDLENBQUM7QUFDakIsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3hCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQzlCLFFBQVEsU0FBUyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BGLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElB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SUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxLQUFLLElBQUksRUFBRSxJQUFJLEtBQUssSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3JGLE9BQU8sTUFBTTtBQUNiLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7QUFDL0QsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUM3RCxZQUFZLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZFLE9BQU87QUFDUCxLQUFLLE1BQU07QUFDWCxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNqQixRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7QUFDdkMsYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQzNDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxQyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDO0FBQ3RGLE9BQU8sTUFBTTtBQUNiLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLElBQUksRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFDakQsUUFBUSxDQUFDLENBQUMsU0FBUyxJQUFJLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUNqRCxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0QsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxDQUFDLENBQUM7QUFDYixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxXQUFXLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUU7QUFDN0MsSUFBSSxJQUFJLENBQUM7QUFDVCxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNmLE1BQU0sSUFBSTtBQUNWLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDWCxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0FBQ3hCO0FBQ0EsSUFBSSxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUc7QUFDdEIsTUFBTSxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUM7QUFDM0QsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNsRCxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN2QyxRQUFRLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLEVBQUU7QUFDbEMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEQsVUFBVSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBQzdDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUM1QixTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDekIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO0FBQzNCLElBQUksSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNsQjtBQUNBLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ3JCLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxFQUFFO0FBQ2xCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzdCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUM7QUFDekMs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QyxJQUFJLElBQUksV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRztBQUMvQyxNQUFNLEdBQUcsR0FBRyxDQUFDO0FBQ2IsTUFBTSxDQUFDLEdBQUcsQ0FBQztBQUNYLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDWCxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsV0FBVztBQUMxQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUTtBQUN4QixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0FBQzFCO0FBQ0E7QUFDQSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtBQUNyQztBQUNBLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QixVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0FBQzNDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN6QyxLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksRUFBRSxJQUFJLElBQUksRUFBRTtBQUNwQixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDdkIsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQ2YsS0FBSyxNQUFNO0FBQ1gsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQ2YsS0FBSztBQUNMO0FBQ0EsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDMUI7QUFDQTtBQUNBLElB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QUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2hFO0FBQ0E7QUFDQSxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDcEM7QUFDQTtBQUNBLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM3QixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoQyxLQUFLLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCO0FBQ0E7QUFDQSxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0FBQ3JCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMvQztBQUNBO0FBQ0EsSUFBSSxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2xFLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzVCO0FBQ0EsSUFBSSxJQUFJLEdBQUcsRUFBRTtBQUNiLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQztBQUNmLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksUUFBUSxDQUFDO0FBQzdCLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxRQUFRLENBQUM7QUFDL0I7QUFDQSxNQUFNLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRTtBQUNuQixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQyxRQUFRLEtBQUssR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDL0UsUUFBUSxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQixRQUFRLENBQUMsR0FBRyxRQUFRLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztBQUNsQyxPQUFPLE1BQU07QUFDYixRQUFRLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDakIsT0FBTztBQUNQO0FBQ0EsTUFBTSxPQUFPLENBQUMsRUFBRSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUM7QUFDOUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCO0FBQ0EsTUFBTSxJQUFJLFFBQVEsRUFBRTtBQUNwQjtBQUNBO0FBQ0EsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUU7QUFDdEM7QUFDQTtBQUNBLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDckIsVUFBVSxDQUFDLENBQUMsQ0FB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QUFDLENBQUM7QUFDcEIsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEI7QUFDQSxJQUFJLFNBQVM7QUFDYixNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMxRCxNQUFNLENBQUMsR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hELE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzFELE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEI7QUFDQSxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRTtBQUM3QixRQUFRLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUMvQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLE1BQU07QUFDM0IsT0FBTztBQUNQO0FBQ0EsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ1osTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ1osTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ1osTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FB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QUMsR0FBRyxJQUFJLEdBQUcsRUFBRSxJQUFJLEdBQUcsQ0FBQztBQUMxRixLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDckMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUM5QixJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7QUFDMUIsTUFBTSxHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztBQUN2QixNQUFNLE9BQU8sSUFBSSxDQUFDO0FBQ2xCLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFO0FBQ2xCLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUM3QixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxJQUFJLENBQUMsQ0FBQyxFQUFFO0FBQ25CLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUM5QixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUU7QUFDcEIsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQy9CLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNyQixJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsSUFBSSxDQUFDLENBQUMsRUFBRTtBQUNuQixJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDOUIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxLQUFLLENBQUMsQ0FBQyxFQUFFO0FBQ3BCLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMvQixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDbkIsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzlCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFBRTtBQUNwQixJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDL0IsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQixJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQixJQUFJLElBQUksQ0FBQztBQUNULE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTO0FBQ3pCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRO0FBQ3hCLE1BQU0sR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDbkI7QUFDQTtBQUNBLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ3RCLE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCO0FBQ0E7QUFDQSxLQUFLLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQzdCLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDM0QsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEI7QUFDQTtBQUNBLEtBQUssTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7QUFDbkMsTUFB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T0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDMUIsSUFBSSxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUMxQixJQUFJLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLElBQUksT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDeEIsSUFBSSxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUMxQixJQUFJLE9BQU8sQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ3RCLElBQUksT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDeEIsSUFBSSxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUN0QixJQUFJLE9BQU8sQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ3RCLElBQUksT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDMUIsSUFBSSxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUMxQixJQUFJLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLElBQUksT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDdEIsSUFBSSxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUMxQixJQUFJLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLElBQUksT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDdEIsSUFBSSxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUN0QixJQUFJLE9BQU8sQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ3RCLElBQUksT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDdEIsSUFBSSxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUN0QixJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0FBQzVCLElBQUksT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDMUIsSUFB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QUMsQ0FBQyxDQUFDLEVBQUU7QUFDaEIsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDakIsVUFBVSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQzFCLFVBQVUsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakMsU0FBUztBQUNULFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNkLE9BQU8sTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDdEIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0IsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQztBQUNwQjtBQUNBLElBQUksT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDcEIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtBQUNsQyxJQUFJLE9BQU8sR0FBRyxZQUFZLE9BQU8sSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLFdBQVcsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDO0FBQzdFLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRTtBQUNqQixJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDNUIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNyQixJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsSUFBSSxDQUFDLENBQUMsRUFBRTtBQUNuQixJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFBRTtBQUNwQixJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQy9CLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLEdBQUcsR0FBRztBQUNqQixJQUFJLE9BQU8sUUFBUSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDM0MsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsR0FBRyxHQUFHO0FBQ2pCLElBQUksT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMzQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDckIsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDckIsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDckIsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsTUFBTSxDQUFDLEVBQUUsRUFBRTtBQUN0QixJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUNsQixNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ1gsTUFBTSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3JCLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNkO0FBQ0EsSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztBQUMzQyxTQUFTLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ3ZDO0FBQ0EsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUM7QUFDakM7QUFDQSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ3RCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZEO0FBQ0E7QUFDQSxLQUFLLE1BQU0sSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFO0FBQ3ZDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRDtBQUNBLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHO0FBQ3JCLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQjtBQUNBO0FBQ0E7QUFDQSxRQUFRLElBQUksQ0FBQyxJQUFJLE1BQU0sRUFBRTtBQUN6QixVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0QsU0FBUyxNQUFNO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQzVCLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUssTUFBTSxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7QUFDbkM7QUFDQTtBQUNBLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3JDO0FBQ0EsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUc7QUFDckI7QUFDQTtBQUNBLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQztBQUNsRjtBQUNBO0FBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxNQUFNLEVBQUU7QUFDekIsVUFBVSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDM0MsU0FBUyxNQUFNO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUMzQixVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakIsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEIsS0FBSyxNQUFNO0FBQ1gsTUFBTSxNQUFNLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ3JDLEtBQUs7QUFDTDtBQUNBLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hCLElBQUksRUFBRSxJQUFJLFFBQVEsQ0FBQztBQUNuQjtBQUNBO0FBQ0EsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUU7QUFDakIsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxRQUFRLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDckMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUIsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDdEM7QUFDQTtBQUNBLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQ2YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ1osTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNmLEtBQUssTUFBTTtBQUNYLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2I7QUFDQTtBQUNBLE1BQU0sT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3BEO0FBQ0E7QUFDQSxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUNuRDtBQUNBO0FBQ0EsTUFBTSxJQUFJLENBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQyxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFDMUMsS0FBSztBQUNMO0FBQ0EsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNaLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDYjtBQUNBLElBQUksT0FBTyxDQUFDLENBQUM7QUFDYixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFBRTtBQUNwQixJQUFJLE9BQU8sUUFBUSxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDN0QsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDbkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEIsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDO0FBQ3ZELEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRTtBQUNsQixJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDN0IsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxJQUFJLENBQUMsQ0FBQyxFQUFFO0FBQ25CLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUM5QixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDbkIsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzlCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNyQixJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLEdBQUcsR0FBRztBQUNqQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUM7QUFDYixNQUFNLElBQUksR0FBRyxTQUFTO0FBQ3RCLE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCO0FBQ0EsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBQ3JCLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUQsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQ3BCO0FBQ0EsSUFBSSxPQUFPLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDdEQsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFO0FBQ2xCLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUM3QixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDbkIsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzlCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUU7QUFDcEIsSUFBSSxPQUFPLFFBQVEsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDakQsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEVBQUUsT0FBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM1QixFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQztBQUMxQyxFQUFFLE9BQU8sQ0FB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QUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRztBQUM5RSxJQUFJLFFBQVEsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDOUUsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRztBQUMvRCxJQUFJLFFBQVEsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQy9ELElBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDL0QsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQzlFLElBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRztBQUM5RSxJQUFJLFFBQVEsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUc7QUFDakMsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDaEQsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQzlFLElBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRztBQUM5RSxJQUFJLFFBQVEsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQy9ELElBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDL0QsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDaEQsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDaEQsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDaEQsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDaEQsSUFBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRztBQUMvRCxJQUFJLFFBQVEsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQy9ELElBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQ2hELElBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQ2hELElBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUs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TSxLQUFLLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDeEMsTUFBTSxLQUFLLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pELE1BQU0sS0FBSyxDQUFDLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUQsTUFBTSxLQUFLLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkUsS0FBSztBQUNMLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNyQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxlQUFlLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO0FBQ2pFLElBQUksSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCLFFBQVEsTUFBTSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDbEQ7QUFDQSxJQUFJLE9BQU8sRUFBRSxLQUFLLEdBQUcsTUFBTSxFQUFFO0FBQzdCLE1BQU0sSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9CLE1BQU0sTUFBTSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3pELEtB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QUcsTUFBTSxFQUFFO0FBQzdCLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN0RSxLQUFLO0FBQ0wsSUFBSSxPQUFPLFdBQVcsQ0FBQztBQUN2QixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFO0FBQ3JFLElBQUksSUFBSSxNQUFNLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUNsRCxJQUFJLElBQUksU0FBUyxJQUFJLE1BQU0sRUFBRTtBQUM3QixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNwQyxLQUFLO0FBQ0wsSUFBSSxPQUFPLE1BQU0sRUFBRSxFQUFFO0FBQ3JCLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN4RSxLQUFLO0FBQ0wsSUFBSSxPQUFPLFdBQVcsQ0FBQztBQUN2QixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRTtBQUN2QyxJQUFJLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNsQixRQUFRLE1BQU0sR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ2xEO0FBQ0EsSUFBSSxPQUFPLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRTtBQUM3QixNQUFNLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUU7QUFDakQsUUFBUSxPQUFPLElBQUksQ0FBQztBQUNwQixPQUFPO0FBQ1AsS0FBSztBQUNMLElBQUksT0FBTyxLQUFLLENBQUM7QUFDakIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLElBQUksU0FBUyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLFlBQVksQ0FBQyxNQUFNLEVBQUU7QUFDaEMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDNUIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsVUFBVSxDQUFDLE1BQU0sRUFBRTtBQUM5QixJQUFJLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDM0MsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxXQUFXLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUU7QUFDeEQsSUFBSSxJQUFJLE1BQU0sQ0FBQztBQUNmLElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRSxTQUFTLEtBQUssRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFO0FBQzFELE1BQU0sSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsRUFBRTtBQUM3QyxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUM7QUFDckIsUUFBUSxPQUFPLEtBQUssQ0FBQztBQUNyQixPQUFPO0FBQ1AsS0FBSyxDQUFDLENBQUM7QUFDUCxJQUFJLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRTtBQUNqRSxJQUFJLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNO0FBQzdCLFFBQVEsS0FBSyxHQUFHLFNBQVMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakQ7QUFDQSxJQUFJLFFBQVEsU0FBUyxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxHQUFHLE1BQU0sR0FBRztBQUNyRCxNQUFNLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUU7QUFDakQsUUFBUSxPQUFPLEtBQUssQ0FBQztBQUNyQixPQUFPO0FBQ1AsS0FBSztBQUNMLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNkLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7QUFDaEQsSUFBSSxPQUFPLEtBQUssS0FBSyxLQUFLO0FBQzFCLFFBQVEsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDO0FBQzlDLFFBQVEsYUFBYSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDbkQsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsZUFBZSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRTtBQUNoRSxJQUFJLElBQUksS0FBSyxHQUFHLFNBQVMsR0FBRyxDQUFDO0FBQzdCLFFBQVEsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDOUI7QUFDQSxJQUFJLE9BQU8sRUFBRSxLQUFLLEdBQUcsTUFBTSxFQUFFO0FBQzdCLE1BQU0sSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFO0FBQzNDLFFBQVEsT0FBTyxLQUFLLENBQUM7QUFDckIsT0FBTztBQUNQLEtBQUs7QUFDTCxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDZCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFO0FBQzVCLElBQUksT0FBTyxLQUFLLEtBQUssS0FBSyxDQUFDO0FBQzNCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRTtBQUNyQyxJQUFJLElBQUksTUFBTSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDbEQsSUFBSSxPQUFPLE1BQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxHQUFHLE1BQU0sSUFBSSxHQUFHLENBQUM7QUFDOUQsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsWUFBWSxDQUFDLEdBQUcsRUFBRTtBQUM3QixJQUFJLE9BQU8sU0FBUyxNQUFNLEVBQUU7QUFDNUIsTUFBTSxPQUFPLE1BQU0sSUFBSSxJQUFJLEdBQUdELFdBQVMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEQsS0FBSyxDQUFDO0FBQ04sR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsY0FBYyxDQUFDLE1BQU0sRUFBRTtBQUNsQyxJQUFJLE9BQU8sU0FBUyxHQUFHLEVBQUU7QUFDekIsTUFBTSxPQUFPLE1BQU0sSUFBSSxJQUFJLEdBQUdBLFdBQVMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEQsS0FBSyxDQUFDO0FBQ04sR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsVUFBVSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUU7QUFDOUUsSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFLFNBQVMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7QUFDNUQsTUFBTSxXQUFXLEdBQUcsU0FBUztBQUM3QixXQUFXLFNBQVMsR0FBRyxLQUFLLEVBQUUsS0FBSztBQUNuQyxVQUFVLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztBQUMxRCxLQUFLLENBQUMsQ0FBQztBQUNQLElBQUksT0FBTyxXQUFXLENBQUM7QUFDdkIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsVUFBVSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUU7QUFDdkMsSUFBSSxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQzlCO0FBQ0EsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3pCLElBQUksT0FBTyxNQUFNLEVBQUUsRUFBRTtBQUNyQixNQUFNLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQzFDLEtBQUs7QUFDTCxJQUFJLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxPQUFPLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRTtBQUNwQyxJQUFJLElBQUksTUFBTTtBQUNkLFFBQVEsS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNsQixRQUFRLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQzlCO0FBQ0EsSUFBSSxPQUFPLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRTtBQUM3QixNQUFNLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUMzQyxNQUFNLElBQUksT0FBTyxLQUFLQSxXQUFTLEVBQUU7QUFDakMsUUFBUSxNQUFNLEdBQUcsTUFBTSxLQUFLQSxXQUFTLEdBQUcsT0FBTyxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQztBQUNyRSxPQUFPO0FBQ1AsS0FBSztBQUNMLElBQUksT0FBTyxNQUFNLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLFNBQVMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFO0FBQ2xDLElBQUksSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCLFFBQVEsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQjtBQUNBLElBQUksT0FBTyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUU7QUFDeEIsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RDLEtBQUs7QUFDTCxJQUFJLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRTtBQUN0QyxJQUFJLE9BQU8sUUFBUSxDQUFDLEtBQUssRUFBRSxTQUFTLEdBQUcsRUFBRTtBQUN6QyxNQUFNLE9BQU8sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDaEMsS0FBSyxDQUFDLENBQUM7QUFDUCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxTQUFTLENBQUMsSUFBSSxFQUFFO0FBQzNCLElBQUksT0FBTyxTQUFTLEtBQUssRUFBRTtBQUMzQixNQUFNLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLEtBQUssQ0FBQztBQUNOLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFO0FBQ3JDLElBQUksT0FBTyxRQUFRLENBQUMsS0FBSyxFQUFFLFNBQVMsR0FBRyxFQUFFO0FBQ3pDLE1BQU0sT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekIsS0FBSyxDQUFDLENBQUM7QUFDUCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFO0FBQ2hDLElBQUksT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxlQUFlLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRTtBQUNuRCxJQUFJLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNsQixRQUFRLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO0FBQ25DO0FBQ0EsSUFBSSxPQUFPLEVBQUUsS0FBSyxHQUFHLE1BQU0sSUFBSSxXQUFXLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO0FBQ3JGLElBQUksT0FBTyxLQUFLLENBQUM7QUFDakIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLGFBQWEsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFO0FBQ2pELElBQUksSUFBSSxLQUFLLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztBQUNsQztBQUNBLElBQUksT0FBTyxLQUFLLEVBQUUsSUFBSSxXQUFXLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO0FBQzVFLElBQUksT0FBTyxLQUFLLENBQUM7QUFDakIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxZQUFZLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRTtBQUM1QyxJQUFJLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNO0FBQzdCLFFBQVEsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNuQjtBQUNBLElBQUksT0FBTyxNQUFNLEVBQUUsRUFBRTtBQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLFdBQVcsRUFBRTtBQUN6QyxRQUFRLEVBQUUsTUFBTSxDQUFDO0FBQ2pCLE9BQU87QUFDUCxLQUFLO0FBQ0wsSUFBSSxPQUFPLE1BQU0sQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxJQUFJLFlBQVksR0FBRyxjQUFjLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsSUFBSSxjQUFjLEdBQUcsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFO0FBQ2pDLElBQUksT0FBTyxJQUFJLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7QUFDakMsSUFBSSxPQUFPLE1BQU0sSUFBSSxJQUFJLEdBQUdBLFdBQVMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEQsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsVUFBVSxDQUFDLE1BQU0sRUFBRTtBQUM5QixJQUFJLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNyQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxjQUFjLENBQUMsTUFBTSxFQUFFO0FBQ2xDLElBQUksT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDekMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsZUFBZSxDQUFDLFFBQVEsRUFBRTtBQUNyQyxJQUFJLElBQUksSUFBSTtBQUNaLFFBQVEsTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNwQjtBQUNBLElBQUksT0FBTyxDQUFDLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUU7QUFDM0MsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5QixLQUFLO0FBQ0wsSUFBSSxPQUFPLE1BQU0sQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxVQUFVLENBQUMsR0FBRyxFQUFFO0FBQzNCLElBQUksSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCLFFBQVEsTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakM7QUFDQSxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxLQUFLLEVBQUUsR0FBRyxFQUFFO0FBQ3JDLE1BQU0sTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDckMsS0FBSyxDQUFDLENBQUM7QUFDUCxJQUFJLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsT0FBTyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7QUFDcEMsSUFBSSxPQUFPLFNBQVMsR0FBRyxFQUFFO0FBQ3pCLE1BQU0sT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbEMsS0FBSyxDQUFDO0FBQ04sR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLGNBQWMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFO0FBQzlDLElBQUksSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCLFFBQVEsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNO0FBQzdCLFFBQVEsUUFBUSxHQUFHLENBQUM7QUFDcEIsUUFBUSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3BCO0FBQ0EsSUFBSSxPQUFPLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRTtBQUM3QixNQUFNLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQixNQUFNLElBQUksS0FBSyxLQUFLLFdBQVcsSUFBSSxLQUFLLEtBQUssV0FBVyxFQUFFO0FBQzFELFFBQVEsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLFdBQVcsQ0FBQztBQUNuQyxRQUFRLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUNuQyxPQUFPO0FBQ1AsS0FBSztBQUNMLElBQUksT0FBTyxNQUFNLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTtBQUMzQixJQUFJLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNsQixRQUFRLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDO0FBQ0EsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsS0FBSyxFQUFFO0FBQ2hDLE1BQU0sTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQzlCLEtBQUssQ0FBQyxDQUFDO0FBQ1AsSUFBSSxPQUFPLE1BQU0sQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxVQUFVLENBQUMsR0FBRyxFQUFFO0FBQzNCLElBQUksSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCLFFBQVEsTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakM7QUFDQSxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxLQUFLLEVBQUU7QUFDaEMsTUFBTSxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN2QyxLQUFLLENBQUMsQ0FBQztBQUNQLElBQUksT0FBTyxNQUFNLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0FBQ2xELElBQUksSUFBSSxLQUFLLEdBQUcsU0FBUyxHQUFHLENBQUM7QUFDN0IsUUFBUSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUM5QjtBQUNBLElBQUksT0FBTyxFQUFFLEtBQUssR0FBRyxNQUFNLEVBQUU7QUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDbEMsUUFBUSxPQUFPLEtBQUssQ0FBQztBQUNyQixPQUFPO0FBQ1AsS0FBSztBQUNMLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNkLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLGlCQUFpQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0FBQ3RELElBQUksSUFBSSxLQUFLLEdBQUcsU0FBUyxHQUFHLENBQUMsQ0FBQztBQUM5QixJQUFJLE9BQU8sS0FBSyxFQUFFLEVBQUU7QUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDbEMsUUFBUSxPQUFPLEtBQUssQ0FBQztBQUNyQixPQUFPO0FBQ1AsS0FBSztBQUNMLElBQUksT0FBTyxLQUFLLENBQUM7QUFDakIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsVUFBVSxDQUFDLE1BQU0sRUFBRTtBQUM5QixJQUFJLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQztBQUM3QixRQUFRLFdBQVcsQ0FBQyxNQUFNLENBQUM7QUFDM0IsUUFBUSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDMUIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsYUFBYSxDQUFDLE1BQU0sRUFBRTtBQUNqQyxJQUFJLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQztBQUM3QixRQUFRLGNBQWMsQ0FBQyxNQUFNLENBQUM7QUFDOUIsUUFBUSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDN0IsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLElBQUksZ0JBQWdCLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFNBQVMsV0FBVyxDQUFDLE1BQU0sRUFBRTtBQUMvQixJQUFJLElBQUksTUFBTSxHQUFHLFNBQVMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBQ3pDLElBQUksT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQ25DLE1BQU0sRUFBRSxNQUFNLENBQUM7QUFDZixLQUFLO0FBQ0wsSUFBSSxPQUFPLE1BQU0sQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxjQUFjLENBQUMsTUFBTSxFQUFFO0FBQ2xDLElBQUksT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN6QyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxZQUFZLENBQUMsTUFBTSxFQUFFO0FBQ2hDLElBQUksT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUM3QyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsSUFBSSxZQUFZLElBQUksU0FBUyxZQUFZLENBQUMsT0FBTyxFQUFFO0FBQ3JELElBQUksT0FBTyxHQUFHLE9BQU8sSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQ3RHO0FBQ0E7QUFDQSxJQUFJLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLO0FBQzdCLFFBQVEsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJO0FBQzNCLFFBQVEsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLO0FBQzdCLFFBQVEsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRO0FBQ25DLFFBQVEsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJO0FBQzNCLFFBQVEsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNO0FBQy9CLFFBQVEsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNO0FBQy9CLFFBQVEsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNO0FBQy9CLFFBQVEsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7QUFDdEM7QUFDQTtBQUNBLElBQUksSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLFNBQVM7QUFDcEMsUUFBUSxTQUFTLEdBQUcsUUFBUSxDQUFDLFNBQVM7QUFDdEMsUUFBUSxXQUFXLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztBQUN2QztBQUNBO0FBQ0EsSUFBSSxJQUFJLFVBQVUsR0FBRyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUNuRDtBQUNBO0FBQ0EsSUFBSSxJQUFJLFlBQVksR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDO0FBQzFDO0FBQ0E7QUFDQSxJQUFJLElBQUksY0FBYyxHQUFHLFdBQVcsQ0FBQyxjQUFjLENBQUM7QUFDcEQ7QUFDQTtBQUNBLElBQUksSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCO0FBQ0E7QUFDQSxJQUFJLElBQUksVUFBVSxJQUFJLFdBQVc7QUFDakMsTUFBTSxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQy9GLE1BQU0sT0FBTyxHQUFHLElBQUksZ0JBQWdCLEdBQUcsR0FBRyxJQUFJLEVBQUUsQ0FBQztBQUNqRCxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLG9CQUFvQixHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7QUFDcEQ7QUFDQTtBQUNBLElBQUksSUFBSSxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3JEO0FBQ0E7QUFDQSxJQUFJLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDekI7QUFDQTtBQUNBLElBQUksSUFBSSxVQUFVLEdBQUcsTUFBTSxDQUFDLEdBQUc7QUFDL0IsTUFBTSxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDO0FBQ3JFLE9BQU8sT0FBTyxDQUFDLHdEQUF3RCxFQUFFLE9BQU8sQ0FBQyxHQUFHLEdBQUc7QUFDdkYsS0FBSyxDQUFDO0FBQ047QUFDQTtBQUNBLElBQUksSUFBSSxNQUFNLEdBQUcsYUFBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUdBLFdBQVM7QUFDM0QsUUFBUSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU07QUFDL0IsUUFBUSxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVU7QUFDdkMsUUFBUSxXQUFXLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxXQUFXLEdBQUdBLFdBQVM7QUFDN0QsUUFBUSxZQUFZLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDO0FBQzdELFFBQVEsWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNO0FBQ3BDLFFBQVEsb0JBQW9CLEdBQUcsV0FBVyxDQUFDLG9CQUFvQjtBQUMvRCxRQUFRLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTTtBQUNsQyxRQUFRLGdCQUFnQixHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsa0JBQWtCLEdBQUdBLFdBQVM7QUFDekUsUUFBUSxXQUFXLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLEdBQUdBLFdBQVM7QUFDMUQsUUFBUSxjQUFjLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxXQUFXLEdBQUdBLFdBQVMsQ0FBQztBQUNqRTtBQUNBLElBQUksSUFBSSxjQUFjLElBQUksV0FBVztBQUNyQyxNQUFNLElBQUk7QUFDVixRQUFRLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUN2RCxRQUFRLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3pCLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUU7QUFDcEIsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUNUO0FBQ0E7QUFDQSxJQUFJLElBQUksZUFBZSxHQUFHLE9BQU8sQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLFlBQVksSUFBSSxPQUFPLENBQUMsWUFBWTtBQUM1RixRQUFRLE1BQU0sR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRztBQUMvRCxRQUFRLGFBQWEsR0FBRyxPQUFPLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQztBQUNyRjtBQUNBO0FBQ0EsSUFBSSxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSTtBQUM5QixRQUFRLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSztBQUNoQyxRQUFRLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxxQkFBcUI7QUFDdkQsUUFBUSxjQUFjLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLEdBQUdBLFdBQVM7QUFDN0QsUUFBUSxjQUFjLEdBQUcsT0FBTyxDQUFDLFFBQVE7QUFDekMsUUFBUSxVQUFVLEdBQUcsVUFBVSxDQUFDLElBQUk7QUFDcEMsUUFBUSxVQUFVLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO0FBQ2pELFFBQVEsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHO0FBQzVCLFFBQVEsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHO0FBQzVCLFFBQVEsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHO0FBQzVCLFFBQVEsY0FBYyxHQUFHLE9BQU8sQ0FBQyxRQUFRO0FBQ3pDLFFBQVEsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNO0FBQ2xDLFFBQVEsYUFBYSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUM7QUFDM0M7QUFDQTtBQUNBLElBQUksSUFBSSxRQUFRLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUM7QUFDakQsUUFBUSxHQUFHLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUM7QUFDdkMsUUFBUSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUM7QUFDL0MsUUFBUSxHQUFHLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUM7QUFDdkMsUUFBUSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUM7QUFDL0MsUUFBUSxZQUFZLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNuRDtBQUNBO0FBQ0EsSUFBSSxJQUFJLE9BQU8sR0FBRyxPQUFPLElBQUksSUFBSSxPQUFPLENBQUM7QUFDekM7QUFDQTtBQUNBLElBQUksSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBQ3ZCO0FBQ0E7QUFDQSxJQUFJLElBQUksa0JBQWtCLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztBQUMvQyxRQUFRLGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDO0FBQ3JDLFFBQVEsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztBQUM3QyxRQUFRLGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDO0FBQ3JDLFFBQVEsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlDO0FBQ0E7QUFDQSxJQUFJLElBQUksV0FBVyxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxHQUFHQSxXQUFTO0FBQzNELFFBQVEsYUFBYSxHQUFHLFdBQVcsR0FBRyxXQUFXLENBQUMsT0FBTyxHQUFHQSxXQUFTO0FBQ3JFLFFBQVEsY0FBYyxHQUFHLFdBQVcsR0FBRyxXQUFXLENBQUMsUUFBUSxHQUFHQSxXQUFTLENBQUM7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE1BQU0sQ0FBQyxLQUFLLEVBQUU7QUFDM0IsTUFBTSxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssWUFBWSxXQUFXLENBQUMsRUFBRTtBQUNyRixRQUFRLElBQUksS0FBSyxZQUFZLGFBQWEsRUFBRTtBQUM1QyxVQUFVLE9BQU8sS0FBSyxDQUFDO0FBQ3ZCLFNBQVM7QUFDVCxRQUFRLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLEVBQUU7QUFDdkQsVUFBVSxPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyQyxTQUFTO0FBQ1QsT0FBTztBQUNQLE1BQU0sT0FBTyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0QyxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLFVBQVUsSUFBSSxXQUFXO0FBQ2pDLE1BQU0sU0FBUyxNQUFNLEdBQUcsRUFBRTtBQUMxQixNQUFNLE9BQU8sU0FBUyxLQUFLLEVBQUU7QUFDN0IsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzlCLFVBQVUsT0FBTyxFQUFFLENBQUM7QUFDcEIsU0FBUztBQUNULFFBQVEsSUFBSSxZQUFZLEVBQUU7QUFDMUIsVUFBVSxPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyQyxTQUFTO0FBQ1QsUUFBUSxNQUFNLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztBQUNqQyxRQUFRLElBQUksTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDO0FBQ2hDLFFBQVEsTUFBTSxDQUFDLFNBQVMsR0FBR0EsV0FBUyxDQUFDO0FBQ3JDLFFBQVEsT0FBTyxNQUFNLENBQUM7QUFDdEIsT0FBTyxDQUFDO0FBQ1IsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxVQUFVLEdBQUc7QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxhQUFhLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRTtBQUM1QyxNQUFNLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0FBQy9CLE1BQU0sSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7QUFDNUIsTUFBTSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDbEMsTUFBTSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztBQUN6QixNQUFNLElBQUksQ0FBQyxVQUFVLEdBQUdBLFdBQVMsQ0FBQztBQUNsQyxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sUUFBUSxFQUFFLFFBQVE7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLFVBQVUsRUFBRSxVQUFVO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxhQUFhLEVBQUUsYUFBYTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sVUFBVSxFQUFFLEVBQUU7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLFNBQVMsRUFBRTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsR0FBRyxFQUFFLE1BQU07QUFDbkIsT0FBTztBQUNQLEtBQUssQ0FBQztBQUNOO0FBQ0E7QUFDQSxJQUFJLE1BQU0sQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQztBQUM1QyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQztBQUMxQztBQUNBLElBQUksYUFBYSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQy9ELElBQUksYUFBYSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsYUFBYSxDQUFDO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFdBQVcsQ0FBQyxLQUFLLEVBQUU7QUFDaEMsTUFBTSxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztBQUMvQixNQUFNLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBQzVCLE1BQU0sSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDdkIsTUFBTSxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztBQUNoQyxNQUFNLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO0FBQzlCLE1BQU0sSUFBSSxDQUFDLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQztBQUM1QyxNQUFNLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBQzFCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsU0FBUyxHQUFHO0FBQ3pCLE1BQU0sSUFBSSxNQUFNLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3JELE1BQU0sTUFBTSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3ZELE1BQU0sTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3BDLE1BQU0sTUFBTSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO0FBQzlDLE1BQU0sTUFBTSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzNELE1BQU0sTUFBTSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO0FBQ2hELE1BQU0sTUFBTSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ25ELE1BQU0sT0FBTyxNQUFNLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxXQUFXLEdBQUc7QUFDM0IsTUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7QUFDN0IsUUFBUSxJQUFJLE1BQU0sR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzQyxRQUFRLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDNUIsUUFBUSxNQUFNLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztBQUNuQyxPQUFPLE1BQU07QUFDYixRQUFRLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDOUIsUUFBUSxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzdCLE9BQU87QUFDUCxNQUFNLE9BQU8sTUFBTSxDQUFDO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsU0FBUyxHQUFHO0FBQ3pCLE1BQU0sSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUU7QUFDMUMsVUFBVSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU87QUFDNUIsVUFBVSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztBQUNoQyxVQUFVLE9BQU8sR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUMzQixVQUFVLFNBQVMsR0FBRyxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDO0FBQzlDLFVBQVUsSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7QUFDdEQsVUFBVSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUs7QUFDNUIsVUFBVSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUc7QUFDeEIsVUFBVSxNQUFNLEdBQUcsR0FBRyxHQUFHLEtBQUs7QUFDOUIsVUFBVSxLQUFLLEdBQUcsT0FBTyxHQUFHLEdBQUcsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQzdDLFVBQVUsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhO0FBQ3hDLFVBQVUsVUFBVSxHQUFHLFNBQVMsQ0FBQyxNQUFNO0FBQ3ZDLFVBQVUsUUFBUSxHQUFHLENBQUM7QUFDdEIsVUFBVSxTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDNUQ7QUFDQSxNQUFNLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxPQUFPLElBQUksU0FBUyxJQUFJLE1BQU0sSUFBSSxTQUFTLElBQUksTUFBTSxDQUFDLEVBQUU7QUFDOUUsUUFBUSxPQUFPLGdCQUFnQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDekQsT0FBTztBQUNQLE1BQU0sSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3RCO0FBQ0EsTUFBTSxLQUFLO0FBQ1gsTUFBTSxPQUFPLE1BQU0sRUFBRSxJQUFJLFFBQVEsR0FBRyxTQUFTLEVBQUU7QUFDL0MsUUFBUSxLQUFLLElBQUksR0FBRyxDQUFDO0FBQ3JCO0FBQ0EsUUFBUSxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFDMUIsWUFBWSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pDO0FBQ0EsUUFBUSxPQUFPLEVBQUUsU0FBUyxHQUFHLFVBQVUsRUFBRTtBQUN6QyxVQUFVLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUM7QUFDekMsY0FBYyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVE7QUFDdEMsY0FBYyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUk7QUFDOUIsY0FBYyxRQUFRLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pDO0FBQ0EsVUFBVSxJQUFJLElBQUksSUFBSSxhQUFhLEVBQUU7QUFDckMsWUFBWSxLQUFLLEdBQUcsUUFBUSxDQUFDO0FBQzdCLFdBQVcsTUFBTSxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ2hDLFlBQVksSUFBSSxJQUFJLElBQUksZ0JBQWdCLEVBQUU7QUFDMUMsY0FBYyxTQUFTLEtBQUssQ0FBQztBQUM3QixhQUFhLE1BQU07QUFDbkIsY0FBYyxNQUFNLEtBQUssQ0FBQztBQUMxQixhQUFhO0FBQ2IsV0FBVztBQUNYLFNBQVM7QUFDVCxRQUFRLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUNuQyxPQUFPO0FBQ1AsTUFBTSxPQUFPLE1BQU0sQ0FBQztBQUNwQixLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUksV0FBVyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdELElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLElBQUksQ0FBQyxPQUFPLEVBQUU7QUFDM0IsTUFBTSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDcEIsVUFBVSxNQUFNLEdBQUcsT0FBTyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztBQUN4RDtBQUNBLE1BQU0sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ25CLE1BQU0sT0FBTyxFQUFFLEtBQUssR0FBRyxNQUFNLEVBQUU7QUFDL0IsUUFBUSxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbkMsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQyxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsU0FBUyxHQUFHO0FBQ3pCLE1BQU0sSUFBSSxDQUFDLFFBQVEsR0FBRyxZQUFZLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUM3RCxNQUFNLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFVBQVUsQ0FBQyxHQUFHLEVBQUU7QUFDN0IsTUFBTSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5RCxNQUFNLElBQUksQ0FBQyxJQUFJLElBQUksTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEMsTUFBTSxPQUFPLE1BQU0sQ0FBQztBQUNwQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMxQixNQUFNLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDL0IsTUFBTSxJQUFJLFlBQVksRUFBRTtBQUN4QixRQUFRLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQixRQUFRLE9BQU8sTUFBTSxLQUFLLGNBQWMsR0FBR0EsV0FBUyxHQUFHLE1BQU0sQ0FBQztBQUM5RCxPQUFPO0FBQ1AsTUFBTSxPQUFPLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBR0EsV0FBUyxDQUFDO0FBQ3BFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxPQUFPLENBQUMsR0FBRyxFQUFFO0FBQzFCLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUMvQixNQUFNLE9BQU8sWUFBWSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBS0EsV0FBUyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZGLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ2pDLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUMvQixNQUFNLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3pDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsWUFBWSxJQUFJLEtBQUssS0FBS0EsV0FBUyxJQUFJLGNBQWMsR0FBRyxLQUFLLENBQUM7QUFDakYsTUFBTSxPQUFPLElBQUksQ0FBQztBQUNsQixLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO0FBQ3JDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxVQUFVLENBQUM7QUFDMUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUM7QUFDakMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUM7QUFDakMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRTtBQUNoQyxNQUFNLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNwQixVQUFVLE1BQU0sR0FBRyxPQUFPLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0FBQ3hEO0FBQ0EsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDbkIsTUFBTSxPQUFPLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRTtBQUMvQixRQUFRLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuQyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxjQUFjLEdBQUc7QUFDOUIsTUFBTSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUN6QixNQUFNLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxlQUFlLENBQUMsR0FBRyxFQUFFO0FBQ2xDLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVE7QUFDOUIsVUFBVSxLQUFLLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxQztBQUNBLE1BQU0sSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO0FBQ3JCLFFBQVEsT0FBTyxLQUFLLENBQUM7QUFDckIsT0FBTztBQUNQLE1BQU0sSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDdEMsTUFBTSxJQUFJLEtBQUssSUFBSSxTQUFTLEVBQUU7QUFDOUIsUUFBUSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDbkIsT0FBTyxNQUFNO0FBQ2IsUUFBUSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDcEMsT0FBTztBQUNQLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ2xCLE1BQU0sT0FBTyxJQUFJLENBQUM7QUFDbEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFlBQVksQ0FBQyxHQUFHLEVBQUU7QUFDL0IsTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUTtBQUM5QixVQUFVLEtBQUssR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzFDO0FBQ0EsTUFBTSxPQUFPLEtBQUssR0FBRyxDQUFDLEdBQUdBLFdBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFlBQVksQ0FBQyxHQUFHLEVBQUU7QUFDL0IsTUFBTSxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25ELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QUssQ0FBQyxPQUFPLEVBQUU7QUFDNUIsTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3hELE1BQU0sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQzVCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFVBQVUsR0FBRztBQUMxQixNQUFNLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxTQUFTLENBQUM7QUFDcEMsTUFBTSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUNwQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsV0FBVyxDQUFDLEdBQUcsRUFBRTtBQUM5QixNQUFNLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRO0FBQzlCLFVBQVUsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QztBQUNBLE1BQU0sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQzVCLE1BQU0sT0FBTyxNQUFNLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFFBQVEsQ0FBQyxHQUFHLEVBQUU7QUFDM0IsTUFBTSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxRQUFRLENBQUMsR0FBRyxFQUFFO0FBQzNCLE1BQU0sT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FB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R0FBRyxFQUFFLENBQUM7QUFDdEI7QUFDQSxNQUFNLEtBQUssSUFBSSxHQUFHLElBQUksTUFBTSxFQUFFO0FBQzlCLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxhQUFhLEtBQUssT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ3ZGLFVBQVUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzQixTQUFTO0FBQ1QsT0FBTztBQUNQLE1BQU0sT0FBTyxNQUFNLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFO0FBQ2xDLE1BQU0sT0FBTyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQzNCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsT0FBTyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUU7QUFDM0MsTUFBTSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDcEIsVUFBVSxNQUFNLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzNFO0FBQ0EsTUFBTSxRQUFRLENBQUMsVUFBVSxFQUFFLFNBQVMsS0FBSyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUU7QUFDNUQsUUFBUSxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUMzRCxPQUFPLENBQUMsQ0FBQztBQUNULE1BQU0sT0FBTyxNQUFNLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNB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TUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEYsT0FBTyxDQUFDO0FBQ1IsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxVQUFVLENBQUMsSUFBSSxFQUFFO0FBQzlCLE1BQU0sT0FBTyxXQUFXO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLFFBQVEsSUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDO0FBQzdCLFFBQVEsUUFBUSxJQUFJLENBQUMsTUFBTTtBQUMzQixVQUFVLEtBQUssQ0FBQyxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUM7QUFDbEMsVUFBVSxLQUFLLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNDLFVBQVUsS0FBSyxDQUFDLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsVUFBVSxLQUFLLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0QsVUFBVSxLQUFLLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLFVBQVUsS0FBSyxDQUFDLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0UsVUFBVSxLQUFLLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEYsVUFBVSxLQUFLLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pHLFNBQVM7QUFDVCxRQUFRLElBQUksV0FBVyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0FBQ3BELFlBQVksTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25EO0FBQ0E7QUFDQTtBQUNBLFFBQVEsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxHQUFHLFdBQVcsQ0FBQztBQUN2RCxPQUFPLENBQUM7QUFDUixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsV0FBVyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO0FBQy9DLE1BQU0sSUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xDO0FB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QUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDO0FBQzNELFVBQVUsRUFBRSxDQUFDO0FBQ2IsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO0FBQzVDLE1BQU0sSUFBSSxNQUFNLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUNwRCxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDbkIsUUFBUSxPQUFPLEVBQUUsQ0FBQztBQUNsQixPQUFPO0FBQ1AsTUFBTSxJQUFJLEtBQUssSUFBSSxPQUFPLEtBQUssSUFBSSxRQUFRLElBQUksY0FBYyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUU7QUFDcEYsUUFBUSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCLFFBQVEsR0FBRyxHQUFHLE1BQU0sQ0FBQztBQUNyQixPQUFPO0FBQ1AsTUFBTSxPQUFPLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNoRCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRTtBQUNwRCxNQUFNLElBQUksTUFBTSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDcEQsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ25CLFFBQVEsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNsQixPQUFPO0FBQ1AsTUFBTSxJQUFJLEtBQUssR0FBRyxTQUFTLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDL0QsTUFBTSxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7QUFDckIsUUFBUSxLQUFLLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0MsT0FBTztBQUNQLE1BQU0sT0FBTyxhQUFhLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDcEUsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxhQUFhLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUU7QUFDeEQsTUFBTSxJQUFJLE1BQU0sR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ3BELE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNuQixRQUFRLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDbEIsT0FBTztBQUNQLE1BQU0sSUFBSSxLQUFLLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUM3QixNQUFNLElBQUksU0FBUyxLQUFLQSxXQUFTLEVBQUU7QUFDbkMsUUFBUSxLQUFLLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3JDLFFBQVEsS0FBSyxHQUFHLFNBQVMsR0FBRyxDQUFDO0FBQzdCLFlBQVksU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ3hDLFlBQVksU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDekMsT0FBTztBQUNQLE1BQU0sT0FBTyxhQUFhLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzFFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRTtBQUM1QixNQUFNLElBQUksTUFBTSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDcEQsTUFBTSxPQUFPLE1BQU0sR0FBRyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNqRCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFdBQVcsQ0FBQyxLQUFLLEVBQUU7QUFDaEMsTUFBTSxJQUFJLE1BQU0sR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ3BELE1BQU0sT0FBTyxNQUFNLEdBQUcsV0FBVyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDeEQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRTtBQUN4QyxNQUFNLElBQUksTUFBTSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDcEQsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ25CLFFBQVEsT0FBTyxFQUFFLENBQUM7QUFDbEIsT0FBTztBQUNQLE1BQU0sS0FBSyxHQUFHLEtBQUssS0FBS0EsV0FBUyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDekQsTUFBTSxPQUFPLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdkMsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUU7QUFDOUIsTUFBTSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDcEIsVUFBVSxNQUFNLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU07QUFDbkQsVUFBVSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3RCO0FBQ0EsTUFBTSxPQUFPLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRTtBQUMvQixRQUFRLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoQyxRQUFRLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEMsT0FBTztBQUNQLE1BQU0sT0FBTyxNQUFNLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLElBQUksQ0FBQyxLQUFLLEVBQUU7QUFDekIsTUFBTSxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxXQUFTLENBQUM7QUFDNUQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7QUFDOUMsTUFBTSxJQUFJLE1BQU0sR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ3BELE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNuQixRQUFRLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDbEIsT0FBTztBQUNQLE1BQU0sSUFBSSxLQUFLLEdBQUcsU0FBUyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQy9ELE1BQU0sSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO0FBQ3JCLFFBQVEsS0FBSyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdDLE9BQU87QUFDUCxNQUFNLE9BQU8sV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDOUMsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQzVCLE1BQU0sSUFBSSxNQUFN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SUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU07QUFDOUQsVUFBVSxXQUFXLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztBQUNwQyxVQUFVLEtBQUssQ0FBQztBQUNoQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTtBQUNoRCxNQUFNLE9BQU8sQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU07QUFDOUQsVUFBVSxXQUFXLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlELFVBQVUsS0FBSyxDQUFDO0FBQ2hCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFO0FBQ3BELE1BQU0sT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTTtBQUM5RCxVQUFVLFdBQVcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFQSxXQUFTLEVBQUUsVUFBVSxDQUFDO0FBQzNELFVBQVUsS0FBSyxDQUFDO0FBQ2hCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLFNBQVMsS0FBSyxFQUFFLE9BQU8sRUFBRTtBQUNuRCxNQUFNLElBQUksTUFBTSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNO0FBQ25ELFVBQVUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDMUM7QUFDQSxNQUFNLFVBQVUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxTQUFTLEtBQUssRUFBRTtBQUMxRCxRQUFRLE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDdkQsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztBQUNqQztBQUNBLE1BQU0sT0FBTyxNQUFNLENBQUM7QUFDcEIsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFO0FBQ3RDLE1BQU0sSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLE1BQU0sSUFBSSxFQUFFLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDcEMsUUFBUSxPQUFPLE1BQU0sQ0FBQztBQUN0QixPQUFPO0FBQ1AsTUFBTSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDcEIsVUFBVSxPQUFPLEdBQUcsRUFBRTtBQUN0QixVQUFVLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ2hDO0FBQ0EsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxNQUFNLE9BQU8sRUFBRSxLQUFLLEdBQUcsTUFBTSxFQUFFO0FBQy9CLFFBQVEsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pDLFFBQVEsSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRTtBQUM1QyxVQUFVLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0IsVUFBVSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlCLFNBQVM7QUFDVCxPQUFPO0FBQ1AsTUFBTSxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2pDLE1BQU0sT0FBTyxNQUFNLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQzVCLE1BQU0sT0FBTyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9ELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUN0QyxNQUFNLElBQUksTUFBTSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDcEQsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ25C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QUFXLEdBQUcsVUFBVSxDQUFDO0FBQ2hFLE1BQU0sT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLFFBQVEsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsT0FBTyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUU7QUFDM0MsTUFBTSxPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsV0FBVyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUU7QUFDL0MsTUFBTSxPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzlELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxZQUFZLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7QUFDdkQsTUFBTSxLQUFLLEdBQUcsS0FBSyxLQUFLQSxXQUFTLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6RCxNQUFNLE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDM0QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE9BQU8sQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFO0FBQzNDLE1BQU0sSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLFNBQVMsR0FBRyxRQUFRLENBQUM7QUFDNUQsTUFBTSxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsWUFBWSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUU7QUFDaEQsTUFBTSxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsY0FBYyxHQUFHLGFBQWEsQ0FBQztBQUN0RSxNQUFNLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUNoRSxNQUFNLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDNUMsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hDLE9BQU8sTUFBTTtBQUNiLFFBQVEsZUFBZSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzlDLE9BQU87QUFDUCxLQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFFBQVEsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUU7QUFDM0QsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxHQUFHLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDN0UsTUFBTSxTQUFTLEdBQUcsQ0FBQyxTQUFTLElBQUksQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuRTtBQUNBLE1BQU0sSUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztBQUNyQyxNQUFNLElBQUksU0FBUyxHQUFHLENBQUMsRUFBRTtBQUN6QixRQUFRLFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNyRCxPQUFPO0FBQ1AsTUFBTSxPQUFPLFFBQVEsQ0FBQyxVQUFVLENBQUM7QUFDakMsV0FBVyxTQUFTLElBQUksTUFBTSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzRSxXQUFXLENBQUMsQ0FBQyxNQUFNLElBQUksV0FBVyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtBQUM5RCxNQUFNLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNwQixVQUFVLE1BQU0sR0FBRyxPQUFPLElBQUksSUFBSSxVQUFVO0FBQzVDLFVBQVUsTUFBTSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUMzRTtBQUNBLE1BQU0sUUFBUSxDQUFDLFVBQVUsRUFBRSxTQUFTLEtBQUssRUFBRTtBQUMzQyxRQUFRLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM1RixPQUFPLENBQUMsQ0FBQztBQUNULE1BQU0sT0FBTyxNQUFNLENBQUM7QUFDcEIsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO0FBQzlELE1BQU0sZUFBZSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUMsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxHQUFHLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRTtBQUN2QyxNQUFNLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLEdBQUcsT0FBTyxDQUFDO0FBQzFELE1BQU0sT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE9BQU8sQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7QUFDM0QsTUFBTSxJQUFJLFVBQVUsSUFBSSxJQUFJLEVBQUU7QUFDOUIsUUFBUSxPQUFPLEVBQUUsQ0FBQztBQUNsQixPQUFPO0FBQ1AsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO0FBQy9CLFFBQVEsU0FBUyxHQUFHLFNBQVMsSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDekQsT0FBTztBQUNQLE1BQU0sTUFBTSxHQUFHLEtBQUssR0FBR0EsV0FBUyxHQUFHLE1BQU0sQ0FBQztBQUMxQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDNUIsUUFBUSxNQUFNLEdBQUcsTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNoRCxPQUFPO0FBQ1AsTUFBTSxPQUFPLFdBQVcsQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3hELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUNsRSxNQUFNLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0QyxLQUFLLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxNQUFNLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7QUFDdkQsTUFBTSxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsV0FBVyxHQUFHLFVBQVU7QUFDL0QsVUFBVSxTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDM0M7QUFDQSxNQUFNLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDMUYsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsV0FBVyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO0FBQzVELE1BQU0sSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLGdCQUFnQixHQUFHLFVB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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO0FBQ3ZDLE1BQU0sS0FBSyxHQUFHLEtBQUssR0FBR0EsV0FBUyxHQUFHLEtBQUssQ0FBQztBQUN4QyxNQUFNLElBQUksTUFBTSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFQSxXQUFTLEVBQUVBLFdBQVMsRUFBRUEsV0FBUyxFQUFFQSxXQUFTLEVBQUVBLFdBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNuSCxNQUFNLE1BQU0sQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztBQUM3QyxNQUFNLE9BQU8sTUFBTSxDQUFDO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO0FBQzVDLE1BQU0sS0FBSyxHQUFHLEtBQUssR0FBR0EsV0FBUyxHQUFHLEtBQUssQ0FBQztBQUN4QyxNQUFNLElBQUksTUFBTSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUVBLFdBQVMsRUFBRUEsV0FBUyxFQUFFQSxXQUFTLEVBQUVBLFdBQVMsRUFBRUEsV0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3pILE1BQU0sTUFBTSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDO0FBQ2xE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QUFTO0FBQ1QsUUFBUSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDNUMsT0FBTyxDQUFDO0FBQ1IsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLElBQUksQ0FBQyxJQUFJLEVBQUU7QUFDeEIsTUFBTSxPQUFPLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDN0IsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxTQUFTLElBQUksRUFBRSxVQUFVLEVBQUU7QUFDdkQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BFLFVBQVUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztBQUMzRCxVQUFVLFFBQVEsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDekU7QUFDQSxNQUFNLElBQUksV0FBVyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7QUFDMUMsTUFBTSxPQUFPLFFBQVEsQ0FBQyxTQUFTLElBQUksRUFBRTtBQUNyQyxRQUFRLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUN0QixZ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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtBQUMzQyxNQUFNLElBQUksT0FBTyxHQUFHLElBQUk7QUFDeEIsVUFBVSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQzFCO0FBQ0EsTUFBTSxJQUFJLE9BQU8sSUFBSSxJQUFJLFVBQVUsRUFBRTtBQUNyQyxRQUFRLE1BQU0sSUFBSSxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDN0MsT0FBTztBQUNQLE1BQU0sSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDN0IsUUFBUSxPQUFPLEdBQUcsU0FBUyxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7QUFDckUsUUFBUSxRQUFRLEdBQUcsVUFBVSxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7QUFDekUsT0FBTztBQUNQLE1BQU0sT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtBQUNsQyxRQUFRLFNBQVMsRUFBRSxPQUFPO0FBQzFCLFFBQVEsU0FBUyxFQUFFLElBQUk7QUFDdkIsUUFBUSxVQUFVLEVBQUUsUUFBUTtBQUM1QixPQUFPLENBQUMsQ0FBQztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxLQUFLLENBQUMsSUFBSSxFQUFFO0FBQ3pCLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzFCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDeEMsTUFBTSxPQUFPLE1BQU0sSUFBSSxJQUFJLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDNUUsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRTtBQUM5QixNQUFNLE9BQU8sS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxJQUFJLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQztBQUNyRSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLEVBQUUsR0FBRyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksR0FBRyxHQUFHLHlCQUF5QixDQUFDLFNBQVMsS0FBSyxFQUFFLEtBQUssRUFBRTtBQUMv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RyxJQUFJLE1BQU0sRUFBRTtBQUMxQyxRQUFRLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0FBQzNCLE9BQU87QUFDUCxNQUFNLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzlCLFFBQVEsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFDdkMsT0FBTztBQUNQLE1BQU0sS0FBSyxJQUFJLEdBQUcsSUFBSSxLQUFLLEVBQUU7QUFDN0IsUUFBUSxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFO0FBQzdDLFVBQVUsT0FBTyxLQUFLLENBQUM7QUFDdkIsU0FBUztBQUNULE9BQU87QUFDUCxNQUFNLE9BQU8sSUFBSSxDQUFDO0FBQ2xCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFO0FBQ25DLE1BQU0sT0FBTyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3ZDLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO0FBQ25ELE1BQU0sVUFBVSxHQUFHLE9BQU8sVUFBVSxJQUFJLFVBQVUsR0FBRyxVQUFVLEdBQUdBLFdBQVMsQ0FBQztBQUM1RSxNQUFNLElBQUksTUFBTSxHQUFHLFVBQVUsR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHQSxXQUFTLENBQUM7QUFDckUsTUFBTSxPQUFPLE1BQU0sS0FBS0EsV0FBUyxHQUFHLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFQSxXQUFTLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNoRyxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRTtBQUM1QixNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDaEMsUUFBUSxPQUFPLEtBQUssQ0FBQztBQUNyQixPQUFPO0FBQ1AsTUFBTSxJQUFJLEdBQUcsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxRQUFRLElBQUksR0FBRyxJQUFJLFNBQVM7QUFDaEQsU0FBUyxPQUFPLEtBQUssQ0FBQyxPQUFPLElBQUksUUFBUSxJQUFJLE9BQU8sS0FBSyxDQUFDLElBQUksSUFBSSxRQUFRLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNyRyxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBTSxPQUFPLE9BQU8sS0FBSyxJQUFJLFFBQVEsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxVQUFVLENBQUMsS0FBSyxFQUFFO0FBQy9CLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUM1QixRQUFRLE9BQU8sS0FBSyxDQUFDO0FBQ3JCLE9BQU87QUFDUDtBQUNBO0FBQ0EsTUFBTSxJQUFJLEdBQUcsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLElBQUksR0FBRyxJQUFJLE1BQU0sSUFBSSxHQUFHLElBQUksUUFBUSxJQUFJLEdBQUcsSUFBSSxRQUFRLENBQUM7QUFDbkYsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFO0FBQzlCLE1BQU0sT0FBTyxPQUFPLEtBQUssSUFBSSxRQUFRLElBQUksS0FBSyxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuRSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBTSxPQUFPLE9BQU8sS0FBSyxJQUFJLFFBQVE7QUFDckMsUUFBUSxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLGdCQUFnQixDQUFDO0FBQ2xFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBTSxJQUFJLElBQUksR0FBRyxPQUFPLEtBQUssQ0FBQztBQUM5QixNQUFNLE9BQU8sS0FBSyxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksUUFBUSxJQUFJLElBQUksSUFBSSxVQUFVLENBQUMsQ0FBQztBQUN2RSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsWUFBWSxDQUFDLEtBQUssRUFBRTtBQUNqQyxNQUFNLE9BQU8sS0FBSyxJQUFJLElBQUksSUFBSSxPQUFPLEtBQUssSUFBSSxRQUFRLENBQUM7QUFDdkQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxLQUFLLEdBQUcsU0FBUyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUNyQyxNQUFNLE9BQU8sTUFBTSxLQUFLLE1BQU0sSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNwRixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRTtBQUNyRCxNQUFNLFVBQVUsR0FBRyxPQUFPLFVBQVUsSUFBSSxVQUFVLEdBQUcsVUFBVSxHQUFHQSxXQUFTLENBQUM7QUFDNUUsTUFBTSxPQUFPLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUMzRSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLE1BQU0sT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ2hELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRTtBQUM3QixNQUFNLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzdCLFFBQVEsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUN6QyxPQUFPO0FBQ1AsTUFBTSxPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNqQyxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE1BQU0sQ0FBQyxLQUFLLEVBQUU7QUFDM0IsTUFBTSxPQUFPLEtBQUssS0FBSyxJQUFJLENBQUM7QUFDNUIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFO0FBQzFCLE1BQU0sT0FBTyxLQUFLLElBQUksSUFBSSxDQUFDO0FBQzNCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRTtBQUM3QixNQUFNLE9BQU8sT0FBTyxLQUFLLElBQUksUUFBUTtBQUNyQyxTQUFTLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUM7QUFDaEUsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksUUFBUSxHQUFHLGNBQWMsQ0FBQyxTQUFTLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDM0QsTUFBTSxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNqRCxLQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxZQUFZLEdBQUcsY0FBYyxDQUFDLFNBQVMsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFO0FBQ3JGLE1BQU0sVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzdELEtBQUssQ0FBQyxDQUFDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxVQUFVLEdBQUcsY0FBYyxDQUFDLFNBQVMsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFO0FBQ25GLE1BQU0sVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzNELEtBQUssQ0FBQyxDQUFDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxNQUFNLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRTtBQUMzQyxNQUFNLElBQUksTUFBTSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6QyxNQUFNLE9BQU8sVUFBVSxJQUFJLElBQUksR0FBRyxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztBQUMxRSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxTQUFTLE1BQU0sRUFBRSxPQUFPLEVBQUU7QUFDdEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlCO0FBQ0EsTUFBTSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNyQixNQUFNLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDbEMsTUFBTSxJQUFJLEtBQUssR0FBRyxNQUFNLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxD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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUU7QUFDckMsTUFBTSxPQUFPLE1BQU0sSUFBSSxJQUFJO0FBQzNCLFVBQVUsTUFBTTtBQUNoQixVQUFVLE9BQU8sQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM1RCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFO0FBQzFDLE1BQU0sT0FBTyxNQUFNLElBQUksSUFBSTtBQUMzQixVQUFVLE1BQU07QUFDaEIsVUFBVSxZQUFZLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDakUsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUU7QUFDdEMsTUFBTSxPQUFPLE1BQU0sSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFO0FBQzNDLE1BQU0sT0FBTyxNQUFNLElBQUksZUFBZSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekUsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxTQUFTLENBQUMsTUFBTSxFQUFFO0FBQy9CLE1BQU0sT0FBTyxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsV0FBVyxDQUFDLE1BQU0sRUFBRTtBQUNqQyxNQUFNLE9BQU8sTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN6RSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUU7QUFDN0MsTUFBTSxJQUFJLE1BQU0sR0FBRyxNQUFNLElBQUksSUFBSSxHQUFHQSxXQUFTLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0RSxNQUFNLE9BQU8sTUFBTSxLQUFLQSxXQUFTLEdBQUcsWUFBWSxHQUFHLE1BQU0sQ0FBQztBQUMxRCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUU7QUFDL0IsTUFBTSxPQUFPLE1BQU0sSUFBSSxJQUFJLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDOUQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtBQUNqQyxNQUFNLE9BQU8sTUFBTSxJQUFJLElBQUksSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNoRSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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O0FBQ3RCLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDMUM7QUFDQSxNQUFNLFVBQVUsQ0FBQyxNQUFNLEVBQUUsU0FBUyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRTtBQUN0RCxRQUFRLGVBQWUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDckUsT0FBTyxDQUFDLENBQUM7QUFDVCxNQUFNLE9BQU8sTUFBTSxDQUFDO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFO0FBQ3pDLE1BQU0sSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDMUM7QUFDQSxNQUFNLFVBQVUsQ0FBQyxNQUFNLEVBQUUsU0FBUyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRTtBQUN0RCxRQUFRLGVBQWUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDbkUsT0FBTyxDQUFDLENBQUM7QUFDVCxNQUFNLE9BQU8sTUFBTSxDQUFDO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLEtBQUssR0FBRyxjQUFjLENBQUMsU0FBUyxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTtBQUNsRSxNQUFNLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzFDLEtBQUssQ0FBQyxDQUFDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxTQUFTLEdBQUcsY0FBYyxDQUFDLFNBQVMsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFO0FBQ2xGLE1BQU0sU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ3RELEtBQUssQ0FBQyxDQUFDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsU0FBUyxNQUFNLEVBQUUsS0FBSyxFQUFFO0FBQ2hELE1BQU0sSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLE1BQU0sSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO0FBQzFCLFFBQVEsT0FBTyxNQUFNLENBQUM7QUFDdEIsT0FBTztBQUNQLE1BQU0sSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO0FBQ3pCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsU0FBUyxJQUFJLEVBQUU7QUFDN0MsUUFBUSxJQUFJLEdBQUcsUUFB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QUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3BFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO0FBQ3RELE1BQU0sVUFBVSxHQUFHLE9BQU8sVUFBVSxJQUFJLFVBQVUsR0FBRyxVQUFVLEdBQUdBLFdBQVMsQ0FBQztBQUM1RSxNQUFNLE9BQU8sTUFBTSxJQUFJLElBQUksR0FBRyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ2hGLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxPQUFPLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLFNBQVMsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO0FBQ3RELE1BQU0sSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztBQUNqQyxVQUFVLFNBQVMsR0FBRyxLQUFLLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4RTtBQUNBLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDMUMsTUFBTSxJQUFJLFdBQVcsSUFBSSxJQUFJLEVBQUU7QUFDL0IsUUFBUSxJQUFJLElBQUksR0FBRyxNQUFNLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQztBQUNoRCxRQUFRLElBQUksU0FBUyxFQUFFO0FBQ3ZCLFVBQVUsV0FBVyxHQUFHLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7QUFDOUMsU0FBUztBQUNULGFBQWEsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDbkMsVUFBVSxXQUFXLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDakYsU0FBUztBQUNULGFBQWE7QUFDYixVQUFVLFdBQVcsR0FBRyxFQUFFLENBQUM7QUFDM0IsU0FBUztBQUNULE9BQU87QUFDUCxNQUFNLENBQUMsU0FBUyxHQUFHLFNBQVMsR0FBRyxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDbEYsUUFBUSxPQUFPLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMzRCxPQUFPLENBQUMsQ0FBQztBQUNULE1BQU0sT0FBTyxXQUFXLENBQUM7QUFDekIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO0FBQ2pDLE1BQU0sT0FBTyxNQUFNLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7QUFDM0MsTUFBTSxPQUFPLE1BQU0sSUFBSSxJQUFJLEdBQUcsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3ZGLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFO0FBQzNELE1BQU0sVUFBVSxHQUFHLE9BQU8sVUFBVSxJQUFJLFVBQVUsR0FBRyxVQUFVLEdBQUdBLFdBQVMsQ0FBQztBQUM1RSxNQUFNLE9BQU8sTUFBTSxJQUFJLElBQUksR0FBRyxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsWUFB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QVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMzRDtBQUNBLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNwQyxNQUFNLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUM7QUFDeEUsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7QUFDOUM7QUFDQTtBQUNBO0FBQ0EsTUFBTSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7QUFDN0M7QUFDQSxNQUFNLElBQUksS0FBSyxJQUFJLGNBQWMs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V0FBVyxLQUFLLENBQUNBLFdBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQztBQUMzQyxPQUFPLENBQUMsQ0FBQztBQUNUO0FBQ0E7QUFDQTtBQUNBLE1BQU0sTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDN0IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUMzQixRQUFRLE1BQU0sTUFBTSxDQUFDO0FBQ3JCLE9BQU87QUFDUCxNQUFNLE9BQU8sTUFBTSxDQUFDO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQzVCLE1BQU0sT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDM0MsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDNUIsTUFBTSxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUMzQyxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDeEMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2hDLE1BQU0sSUFBSSxNQUFNLEtBQUssS0FB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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxJQUFJLENBQUMsS0FBSyxFQUFFO0FBQ3pCLE1BQU0sSUFBSSxNQUFNLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU07QUFDbkQsVUFBVSxVQUFVLEdBQUcsV0FBVyxFQUFFLENBQUM7QUFDckM7QUFDQSxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxTQUFTLElBQUksRUFBRTtBQUM1RCxRQUFRLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxFQUFFO0FBQzFDLFVBQVUsTUFBTSxJQUFJLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUMvQyxTQUFTO0FBQ1QsUUFBUSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlDLE9BQU8sQ0FBQyxDQUFDO0FBQ1Q7QUFDQSxNQUFNLE9BQU8sUUFBUSxDQUFDLFNBQVMsSUFBSSxFQUFFO0FBQ3JDLFFBQVEsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdkIsUUFBUSxPQUFPLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRTtBQUNqQyxVQUFVLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsQyxVQUFVLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUU7QUFDMUMsWUFBWSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzlDLFdBQVc7QUFDWCxTQUFTO0FBQ1QsT0FBTyxDQUFDLENBQUM7QUFDVCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsUUFBUSxDQUFDLE1BQU0sRUFBRTtBQUM5QixNQUFNLE9BQU8sWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztBQUM5RCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFO0FBQzdCLE1BQU0sT0FBTyxXQUFXO0FBQ3hCLFFBQVEsT0FBTyxLQUFLLENBQUM7QUFDckIsT0FBTyxDQUFDO0FBQ1IsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRTtBQUM1QyxNQUFNLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQztBQUN2RSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxJQUFJLEdBQUcsVUFBVSxFQUFFLENBQUM7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBTSxPQUFPLEtBQUssQ0FBQztBQUNuQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsUUFBUSxDQUFDLElBQUksRUFBRTtBQUM1QixNQUFNLE9BQU8sWUFBWSxDQUFDLE9BQU8sSUFBSSxJQUFJLFVBQVUsR0FBRyxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO0FBQy9GLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsT0FBTyxDQUFDLE1BQU0sRUFBRTtBQUM3QixNQUFNLE9BQU8sV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztBQUM3RCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsZUFBZSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7QUFDN0MsTUFBTSxPQUFPLG1CQUFtQixDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7QUFDN0UsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsU0FBUyxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQy9DLE1BQU0sT0FBTyxTQUFTLE1BQU0sRUFBRTtBQUM5QixRQUFRLE9BQU8sVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDOUMsT0FBTyxDQUFDO0FBQ1IsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxTQUFTLE1BQU0sRUFBRSxJQUFJLEVBQUU7QUFDbkQsTUFBTSxPQUFPLFNBQVMsSUFBSSxFQUFFO0FBQzVCLFFBQVEsT0FBTyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM5QyxPQUFPLENBQUM7QUFDUixLQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRTtBQUM1QyxNQUFNLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDOUIsVUFBVSxXQUFXLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNyRDtBQUNBLE1BQU0sSUFBSSxPQUFPLElBQUksSUFBSTtBQUN6QixVQUFVLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLFdBQVcsQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTtBQUN4RSxRQUFRLE9BQU8sR0FBRyxNQUFNLENBQUM7QUFDekIsUUFBUSxNQUFNLEdBQUcsTUFBTSxDQUFDO0FBQ3hCLFFBQVEsTUFBTSxHQUFHLElBQUksQ0FBQztBQUN0QixRQUFRLFdBQVcsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzFELE9BQU87QUFDUCxNQUFNLElBQUksS0FBSyxHQUFHLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUs7QUFDL0UsVUFBVSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3RDO0FBQ0EsTUFBTSxTQUFTLENBQUMsV0FBVyxFQUFFLFNBQVMsVUFBVSxFQUFFO0FBQ2xELFFBQVEsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3RDLFFBQVEsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNsQyxRQUFRLElBQUksTUFBTSxFQUFFO0FBQ3BCLFVBQVUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxXQUFXO0FBQ3BELFlBQVksSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztBQUMxQyxZQUFZLElBQUksS0FBSyxJQUFJLFFBQVEsRUFBRTtBQUNuQyxjQUFjLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0FBQ25ELGtCQUFrQixPQUFPLEdBQUcsTUFBTSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzdFO0FBQ0EsY0FBYyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ25GLGNBQWMsTUFBTSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7QUFDMUMsY0FBYyxPQUFPLE1BQU0sQ0FBQztBQUM1QixhQUFhO0FBQ2IsWUFBWSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDNUUsV0FBVyxDQUFDO0FBQ1osU0FBUztBQUNULE9BQU8sQ0FBQyxDQUFDO0FBQ1Q7QUFDQSxNQUFNLE9BQU8sTUFBTSxDQUFDO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFVBQVUsR0FBRztBQUMxQixNQUFNLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7QUFDM0IsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUN6QixPQUFPO0FBQ1AsTUFBTSxPQUFPLElBQUksQ0FBQztBQUNsQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsSUFBSSxHQUFHO0FBQ3BCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxNQUFNLENBQUMsQ0FBQyxFQUFFO0FBQ3ZCLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QixNQUFNLE9BQU8sUUFBUSxDQUFDLFNBQVMsSUFBSSxFQUFFO0FBQ3JDLFFBQVEsT0FBTyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLE9BQU8sQ0FBQyxDQUFDO0FBQ1QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLElBQUksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxTQUFTLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksUUFBUSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFFBQVEsQ0FBQyxJQUFJLEVBQUU7QUFDNUIsTUFBTSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUUsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDaEMsTUFBTSxPQUFPLFNBQVMsSUFBSSxFQUFFO0FBQzVCLFFBQVEsT0FBTyxNQUFNLElBQUksSUFBSSxHQUFHQSxXQUFTLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNsRSxPQUFPLENBQUM7QUFDUixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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LFNBQVMsTUFBTSxDQUFDLEtBQUssRUFBRTtBQUMzQixNQUFNLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzFCLFFBQVEsT0FBTyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3RDLE9BQU87QUFDUCxNQUFNLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xGLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsUUFBUSxDQUFDLE1BQU0sRUFBRTtBQUM5QixNQUFNLElBQUksRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDO0FBQzNCLE1BQU0sT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ25DLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksR0FBRyxHQUFHLG1CQUFtQixDQUFDLFNBQVMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUMzRCxNQUFNLE9BQU8sTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUM3QixLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxJQUFJLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLFFBQVEsRUFBRSxPQUFPLEVBQUU7QUFDakUsTUFBTSxPQUFPLFFBQVEsR0FBRyxPQUFPLENBQUM7QUFDaEMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksS0FBSyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFFO0FBQ3hCLE1BQU0sT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTTtBQUNuQyxVQUFVLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQztBQUMvQyxVQUFVQSxXQUFTLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRTtBQUNwQyxNQUFNLE9BQU8sQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU07QUFDbkMsVUFBVSxZQUFZLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDO0FBQy9ELFVBQVVBLFdBQVMsQ0FBQztBQUNwQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLElBQUksQ0FBQyxLQUFLLEVBQUU7QUFDekIsTUFBTSxPQUFPLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDdkMsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRTtBQUNyQyxNQUFNLE9BQU8sUUFBUSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUU7QUFDeEIsTUFBTSxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNO0FBQ25DLFVBQVUsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDO0FBQy9DLFVBQVVBLFdBQVMsQ0FBQztBQUNwQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFO0FBQ3BDLE1BQU0sT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENB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QixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixhQUFhO0FBQ2IsU0FBUztBQUNULFFBQVE7QUFDUixZQUFZLElBQUksRUFBRSxZQUFZO0FBQzlCLFlBQVksR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMzRyxTQUFTO0FBQ1QsUUFBUTtBQUNSLFlBQVksSUFBSSxFQUFFLGFBQWE7QUFDL0IsWUFBWSxHQUFHLEVBQUU7QUFDakIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7QUFDeEIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztBQUN2QixhQUFh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SUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQztBQUNwQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDO0FBQ3BCLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUM7QUFDcEIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3BCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN0QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQztBQUN4QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDO0FBQ3hCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDeEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFB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 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsInNyYy9pY29ucy50cyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL3BvaW50LmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvcmFuZ2UuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9mb2N1cy5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL2FsaWdubWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL3RhYmxlLWNlbGwuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi90YWJsZS1yb3cuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9uZXZlcnRocm93L25ldmVydGhyb3cuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9jYWxjL2FzdF91dGlscy5qcyIsIm5vZGVfbW9kdWxlcy9kZWNpbWFsLmpzL2RlY2ltYWwuanMiLCJub2RlX21vZHVsZXMvbG9kYXNoL2xvZGFzaC5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL2NhbGMvcmVzdWx0cy5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL2NhbGMvYWxnZWJyYWljX29wZXJhdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL2NhbGMvY29uZGl0aW9uYWxfZnVuY3Rpb24uanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9jYWxjL2NvbnN0YW50LmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvY2FsYy9jb2x1bW4uanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9jYWxjL3Jvdy5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL2NhbGMvcmVmZXJlbmNlLmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvY2FsYy9yYW5nZS5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL2NhbGMvZGVzdGluYXRpb24uanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9jYWxjL2Rpc3BsYXlfZGlyZWN0aXZlLmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvY2FsYy9zaW5nbGVfcGFyYW1fZnVuY3Rpb24uanMiLCJub2RlX21vZHVsZXMvZWJuZi9kaXN0L1Rva2VuRXJyb3IuanMiLCJub2RlX21vZHVsZXMvZWJuZi9kaXN0L1BhcnNlci5qcyIsIm5vZGVfbW9kdWxlcy9lYm5mL2Rpc3QvU2VtYW50aWNIZWxwZXJzLmpzIiwibm9kZV9tb2R1bGVzL2VibmYvZGlzdC9HcmFtbWFycy9CTkYuanMiLCJub2RlX21vZHVsZXMvZWJuZi9kaXN0L0dyYW1tYXJzL1czQ0VCTkYuanMiLCJub2RlX21vZHVsZXMvZWJuZi9kaXN0L0dyYW1tYXJzL0N1c3RvbS5qcyIsIm5vZGVfbW9kdWxlcy9lYm5mL2Rpc3QvR3JhbW1hcnMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZWJuZi9kaXN0L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvY2FsYy9jYWxjLmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvdGFibGUuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9wYXJzZXIuanMiLCJub2RlX21vZHVsZXMvbWVhdy9saWIvaW5kZXgubWpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvZm9ybWF0dGVyLmpzIiwibm9kZV9tb2R1bGVzL0B0Z3Jvc2luZ2VyL21kLWFkdmFuY2VkLXRhYmxlcy9saWIvZWRpdC1zY3JpcHQuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi90ZXh0LWVkaXRvci5qcyIsIm5vZGVfbW9kdWxlcy9AdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMvbGliL29wdGlvbnMuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi90YWJsZS1lZGl0b3IuanMiLCJub2RlX21vZHVsZXMvQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzL2xpYi9pbmRleC5qcyIsInNyYy9zZXR0aW5ncy50cyIsInNyYy9vYnNpZGlhbi10ZXh0LWVkaXRvci50cyIsInNyYy90YWJsZS1lZGl0b3IudHMiLCJzcmMvdGFibGUtY29udHJvbHMtdmlldy50cyIsInNyYy9tYWluLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXNEZWNvcmF0ZShjdG9yLCBkZXNjcmlwdG9ySW4sIGRlY29yYXRvcnMsIGNvbnRleHRJbiwgaW5pdGlhbGl6ZXJzLCBleHRyYUluaXRpYWxpemVycykge1xyXG4gICAgZnVuY3Rpb24gYWNjZXB0KGYpIHsgaWYgKGYgIT09IHZvaWQgMCAmJiB0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRnVuY3Rpb24gZXhwZWN0ZWRcIik7IHJldHVybiBmOyB9XHJcbiAgICB2YXIga2luZCA9IGNvbnRleHRJbi5raW5kLCBrZXkgPSBraW5kID09PSBcImdldHRlclwiID8gXCJnZXRcIiA6IGtpbmQgPT09IFwic2V0dGVyXCIgPyBcInNldFwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgdmFyIHRhcmdldCA9ICFkZXNjcmlwdG9ySW4gJiYgY3RvciA/IGNvbnRleHRJbltcInN0YXRpY1wiXSA/IGN0b3IgOiBjdG9yLnByb3RvdHlwZSA6IG51bGw7XHJcbiAgICB2YXIgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JJbiB8fCAodGFyZ2V0ID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGNvbnRleHRJbi5uYW1lKSA6IHt9KTtcclxuICAgIHZhciBfLCBkb25lID0gZmFsc2U7XHJcbiAgICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgIHZhciBjb250ZXh0ID0ge307XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4pIGNvbnRleHRbcF0gPSBwID09PSBcImFjY2Vzc1wiID8ge30gOiBjb250ZXh0SW5bcF07XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4uYWNjZXNzKSBjb250ZXh0LmFjY2Vzc1twXSA9IGNvbnRleHRJbi5hY2Nlc3NbcF07XHJcbiAgICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplciA9IGZ1bmN0aW9uIChmKSB7IGlmIChkb25lKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkXCIpOyBleHRyYUluaXRpYWxpemVycy5wdXNoKGFjY2VwdChmIHx8IG51bGwpKTsgfTtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gKDAsIGRlY29yYXRvcnNbaV0pKGtpbmQgPT09IFwiYWNjZXNzb3JcIiA/IHsgZ2V0OiBkZXNjcmlwdG9yLmdldCwgc2V0OiBkZXNjcmlwdG9yLnNldCB9IDogZGVzY3JpcHRvcltrZXldLCBjb250ZXh0KTtcclxuICAgICAgICBpZiAoa2luZCA9PT0gXCJhY2Nlc3NvclwiKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgdHlwZW9mIHJlc3VsdCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZFwiKTtcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmdldCkpIGRlc2NyaXB0b3IuZ2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LnNldCkpIGRlc2NyaXB0b3Iuc2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmluaXQpKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoXyA9IGFjY2VwdChyZXN1bHQpKSB7XHJcbiAgICAgICAgICAgIGlmIChraW5kID09PSBcImZpZWxkXCIpIGluaXRpYWxpemVycy51bnNoaWZ0KF8pO1xyXG4gICAgICAgICAgICBlbHNlIGRlc2NyaXB0b3Jba2V5XSA9IF87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRhcmdldCkgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgY29udGV4dEluLm5hbWUsIGRlc2NyaXB0b3IpO1xyXG4gICAgZG9uZSA9IHRydWU7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19ydW5Jbml0aWFsaXplcnModGhpc0FyZywgaW5pdGlhbGl6ZXJzLCB2YWx1ZSkge1xyXG4gICAgdmFyIHVzZVZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRpYWxpemVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhbHVlID0gdXNlVmFsdWUgPyBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnLCB2YWx1ZSkgOiBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1c2VWYWx1ZSA/IHZhbHVlIDogdm9pZCAwO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcHJvcEtleSh4KSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHggPT09IFwic3ltYm9sXCIgPyB4IDogXCJcIi5jb25jYXQoeCk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zZXRGdW5jdGlvbk5hbWUoZiwgbmFtZSwgcHJlZml4KSB7XHJcbiAgICBpZiAodHlwZW9mIG5hbWUgPT09IFwic3ltYm9sXCIpIG5hbWUgPSBuYW1lLmRlc2NyaXB0aW9uID8gXCJbXCIuY29uY2F0KG5hbWUuZGVzY3JpcHRpb24sIFwiXVwiKSA6IFwiXCI7XHJcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIFwibmFtZVwiLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHByZWZpeCA/IFwiXCIuY29uY2F0KHByZWZpeCwgXCIgXCIsIG5hbWUpIDogbmFtZSB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcclxuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XHJcbiAgICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcclxuICAgIH1cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XHJcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgb1trMl0gPSBtW2tdO1xyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xyXG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXHJcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXHJcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xyXG4gICAgcmV0dXJuIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XHJcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcclxuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcclxuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IGZhbHNlIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEluKHN0YXRlLCByZWNlaXZlcikge1xyXG4gICAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XHJcbiAgICByZXR1cm4gdHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciA9PT0gc3RhdGUgOiBzdGF0ZS5oYXMocmVjZWl2ZXIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hZGREaXNwb3NhYmxlUmVzb3VyY2UoZW52LCB2YWx1ZSwgYXN5bmMpIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdm9pZCAwKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZC5cIik7XHJcbiAgICAgICAgdmFyIGRpc3Bvc2U7XHJcbiAgICAgICAgaWYgKGFzeW5jKSB7XHJcbiAgICAgICAgICAgIGlmICghU3ltYm9sLmFzeW5jRGlzcG9zZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0Rpc3Bvc2UgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgICAgICAgICBkaXNwb3NlID0gdmFsdWVbU3ltYm9sLmFzeW5jRGlzcG9zZV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkaXNwb3NlID09PSB2b2lkIDApIHtcclxuICAgICAgICAgICAgaWYgKCFTeW1ib2wuZGlzcG9zZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5kaXNwb3NlIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgICAgICAgICAgZGlzcG9zZSA9IHZhbHVlW1N5bWJvbC5kaXNwb3NlXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiBkaXNwb3NlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3Qgbm90IGRpc3Bvc2FibGUuXCIpO1xyXG4gICAgICAgIGVudi5zdGFjay5wdXNoKHsgdmFsdWU6IHZhbHVlLCBkaXNwb3NlOiBkaXNwb3NlLCBhc3luYzogYXN5bmMgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChhc3luYykge1xyXG4gICAgICAgIGVudi5zdGFjay5wdXNoKHsgYXN5bmM6IHRydWUgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbn1cclxuXHJcbnZhciBfU3VwcHJlc3NlZEVycm9yID0gdHlwZW9mIFN1cHByZXNzZWRFcnJvciA9PT0gXCJmdW5jdGlvblwiID8gU3VwcHJlc3NlZEVycm9yIDogZnVuY3Rpb24gKGVycm9yLCBzdXBwcmVzc2VkLCBtZXNzYWdlKSB7XHJcbiAgICB2YXIgZSA9IG5ldyBFcnJvcihtZXNzYWdlKTtcclxuICAgIHJldHVybiBlLm5hbWUgPSBcIlN1cHByZXNzZWRFcnJvclwiLCBlLmVycm9yID0gZXJyb3IsIGUuc3VwcHJlc3NlZCA9IHN1cHByZXNzZWQsIGU7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kaXNwb3NlUmVzb3VyY2VzKGVudikge1xyXG4gICAgZnVuY3Rpb24gZmFpbChlKSB7XHJcbiAgICAgICAgZW52LmVycm9yID0gZW52Lmhhc0Vycm9yID8gbmV3IF9TdXBwcmVzc2VkRXJyb3IoZSwgZW52LmVycm9yLCBcIkFuIGVycm9yIHdhcyBzdXBwcmVzc2VkIGR1cmluZyBkaXNwb3NhbC5cIikgOiBlO1xyXG4gICAgICAgIGVudi5oYXNFcnJvciA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBuZXh0KCkge1xyXG4gICAgICAgIHdoaWxlIChlbnYuc3RhY2subGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHZhciByZWMgPSBlbnYuc3RhY2sucG9wKCk7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gcmVjLmRpc3Bvc2UgJiYgcmVjLmRpc3Bvc2UuY2FsbChyZWMudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlYy5hc3luYykgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpLnRoZW4obmV4dCwgZnVuY3Rpb24oZSkgeyBmYWlsKGUpOyByZXR1cm4gbmV4dCgpOyB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgZmFpbChlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZW52Lmhhc0Vycm9yKSB0aHJvdyBlbnYuZXJyb3I7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV4dCgpO1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgICBfX2V4dGVuZHM6IF9fZXh0ZW5kcyxcclxuICAgIF9fYXNzaWduOiBfX2Fzc2lnbixcclxuICAgIF9fcmVzdDogX19yZXN0LFxyXG4gICAgX19kZWNvcmF0ZTogX19kZWNvcmF0ZSxcclxuICAgIF9fcGFyYW06IF9fcGFyYW0sXHJcbiAgICBfX21ldGFkYXRhOiBfX21ldGFkYXRhLFxyXG4gICAgX19hd2FpdGVyOiBfX2F3YWl0ZXIsXHJcbiAgICBfX2dlbmVyYXRvcjogX19nZW5lcmF0b3IsXHJcbiAgICBfX2NyZWF0ZUJpbmRpbmc6IF9fY3JlYXRlQmluZGluZyxcclxuICAgIF9fZXhwb3J0U3RhcjogX19leHBvcnRTdGFyLFxyXG4gICAgX192YWx1ZXM6IF9fdmFsdWVzLFxyXG4gICAgX19yZWFkOiBfX3JlYWQsXHJcbiAgICBfX3NwcmVhZDogX19zcHJlYWQsXHJcbiAgICBfX3NwcmVhZEFycmF5czogX19zcHJlYWRBcnJheXMsXHJcbiAgICBfX3NwcmVhZEFycmF5OiBfX3NwcmVhZEFycmF5LFxyXG4gICAgX19hd2FpdDogX19hd2FpdCxcclxuICAgIF9fYXN5bmNHZW5lcmF0b3I6IF9fYXN5bmNHZW5lcmF0b3IsXHJcbiAgICBfX2FzeW5jRGVsZWdhdG9yOiBfX2FzeW5jRGVsZWdhdG9yLFxyXG4gICAgX19hc3luY1ZhbHVlczogX19hc3luY1ZhbHVlcyxcclxuICAgIF9fbWFrZVRlbXBsYXRlT2JqZWN0OiBfX21ha2VUZW1wbGF0ZU9iamVjdCxcclxuICAgIF9faW1wb3J0U3RhcjogX19pbXBvcnRTdGFyLFxyXG4gICAgX19pbXBvcnREZWZhdWx0OiBfX2ltcG9ydERlZmF1bHQsXHJcbiAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0OiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0LFxyXG4gICAgX19jbGFzc1ByaXZhdGVGaWVsZFNldDogX19jbGFzc1ByaXZhdGVGaWVsZFNldCxcclxuICAgIF9fY2xhc3NQcml2YXRlRmllbGRJbjogX19jbGFzc1ByaXZhdGVGaWVsZEluLFxyXG4gICAgX19hZGREaXNwb3NhYmxlUmVzb3VyY2U6IF9fYWRkRGlzcG9zYWJsZVJlc291cmNlLFxyXG4gICAgX19kaXNwb3NlUmVzb3VyY2VzOiBfX2Rpc3Bvc2VSZXNvdXJjZXMsXHJcbn07XHJcbiIsImltcG9ydCB7IGFkZEljb24gfSBmcm9tICdvYnNpZGlhbic7XG5cbmV4cG9ydCBjb25zdCBpY29uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgc3ByZWFkc2hlZXQ6IGBcbjxzdmcgdmVyc2lvbj1cIjEuMVwiIHZpZXdCb3g9XCIwIDAgNDgyLjgxIDQ4Mi44MVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJtNDU3LjU4IDI1LjQ2NC00MzIuODMgMC40MjE1MWMtMTMuNjU4IDAuMDEzMzE0LTI0Ljc1OCAxMS4xMTUtMjQuNzU3IDI0Ljc1N2wwLjAzMTAyNCAzNDcuNDVjNy40ODMzZS00IDguMzgwOCA0LjIxMSAxNS43NzIgMTAuNjA4IDIwLjI1OSAzLjQ1MzMgMi40NDk5IDUuMDcxNiAzLjI5MDEgOC44NzkgMy45MDIyIDEuNzAzMyAwLjM3MzMzIDMuNDU2MSAwLjU5NDcxIDUuMjY5MiAwLjU5Mjk0bDQzMi44NC0wLjQyMTUxYzEuODA5LTFlLTMgMy41NjE4LTAuMjE4MjMgNS4yNTY4LTAuNTkyOTRoMS4yMTc0di0wLjM3MTk2YzEwLjUwNS0yLjg3MjcgMTguMjc5LTEyLjM5NyAxOC4yNzgtMjMuNzg4bC0wLjAzMS0zNDcuNDNjMWUtMyAtMTMuNjQ5LTExLjEwNy0yNC43NjMtMjQuNzY4LTI0Ljc2M3ptMy41NDUzIDI0Ljc2M3Y3MS4zNDRoLTE2My4zMXYtNzQuODg2aDE1OS43NmMxLjk2NDEgMC4wMDE0IDMuNTQ2NyAxLjU5MjIgMy41NDY3IDMuNTQyNXptLTEuNjczNyAzNTAuMzdoLTE2MS42di02Ny4yMDdoMTYzLjMxdjY0LjI2OGMxZS0zIDEuMjU3Mi0wLjcwNTQ5IDIuMzIxLTEuNzAzMyAyLjkzODZ6bS00MzguMjEtMi41MTcxdi02NC4yNjhoNzYuNjQ2djY3LjIwN2gtNzQuOTQyYy0wLjk5Nzg0LTAuNjE3NjUtMS43MDMzLTEuNjgxNC0xLjcwMzMtMi45Mzg2em0yNTUuMjgtMTU1LjE4djY5LjY4OGgtMTU3LjQydi02OS42ODh6bTAgOTAuOTEzdjY3LjIwN2gtMTU3LjQydi02Ny4yMDd6bS0wLjAzMS0yMTEuODNoLTE1Ny40MnYtNzQuODg2aDE1Ny40MnptMCAyMS4yMjZ2NzcuODI2aC0xNTcuNDJ2LTc3LjgyNnptLTE3OC42NCA3Ny44MjZoLTc2LjY0NnYtNzcuODI2aDc2LjY0NnptMC4wMzEwMiAyMS44NjJ2NjkuNjg4aC03Ni42NDZ2LTY5LjY4OHptMTk5Ljk1IDY5LjI2OHYtNjkuNjk3aDE2My4zMXY2OS42OTd6bS0wLjAzMS05MS41NTJ2LTc3LjgyNmgxNjMuMzF2NzcuODI2elwiIHN0cm9rZS13aWR0aD1cIjEuMzcyNVwiLz5cbjwvc3ZnPmAsXG4gIGFsaWduTGVmdDogYFxuPHN2ZyBjbGFzcz1cIndpZGdldC1pY29uXCIgZW5hYmxlLWJhY2tncm91bmQ9XCJuZXcgMCAwIDUxMiA1MTJcIiB2ZXJzaW9uPVwiMS4xXCIgdmlld0JveD1cIjAgMCA1MTIgNTEyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICA8ZyB0cmFuc2Zvcm09XCJtYXRyaXgoLTEgMCAwIDEgNTEyIDApXCI+XG4gICAgPHBhdGggZD1cIm01MDEuMzMgMTcwLjY3aC0zMjBjLTUuODk2IDAtMTAuNjY3IDQuNzcxLTEwLjY2NyAxMC42Njd2MjEuMzMzYzAgNS44OTYgNC43NzEgMTAuNjY3IDEwLjY2NyAxMC42NjdoMzIwYzUuODk2IDAgMTAuNjY3LTQuNzcxIDEwLjY2Ny0xMC42Njd2LTIxLjMzM2MwLTUuODk2LTQuNzcxLTEwLjY2Ny0xMC42NjctMTAuNjY3elwiLz5cbiAgICA8cGF0aCBkPVwibTUwMS4zMyAyOTguNjdoLTQ5MC42N2MtNS44OTYgMC0xMC42NjcgNC43NzEtMTAuNjY3IDEwLjY2NnYyMS4zMzNjMCA1Ljg5NiA0Ljc3MSAxMC42NjcgMTAuNjY3IDEwLjY2N2g0OTAuNjdjNS44OTYgMCAxMC42NjctNC43NzEgMTAuNjY3LTEwLjY2N3YtMjEuMzMzYy0xZS0zIC01Ljg5NS00Ljc3Mi0xMC42NjYtMTAuNjY4LTEwLjY2NnpcIi8+XG4gICAgPHBhdGggZD1cIm01MDEuMzMgNDI2LjY3aC0zMjBjLTUuODk2IDAtMTAuNjY3IDQuNzcxLTEwLjY2NyAxMC42Njd2MjEuMzMzYzAgNS44OTYgNC43NzEgMTAuNjY3IDEwLjY2NyAxMC42NjdoMzIwYzUuODk2IDAgMTAuNjY3LTQuNzcxIDEwLjY2Ny0xMC42Njd2LTIxLjMzM2MwLTUuODk2LTQuNzcxLTEwLjY2Ny0xMC42NjctMTAuNjY3elwiLz5cbiAgICA8cGF0aCBkPVwibTUwMS4zMyA0Mi42NjdoLTQ5MC42N2MtNS44OTYgMC0xMC42NjcgNC43NzEtMTAuNjY3IDEwLjY2NnYyMS4zMzNjMCA1Ljg5NiA0Ljc3MSAxMC42NjcgMTAuNjY3IDEwLjY2N2g0OTAuNjdjNS44OTYgMCAxMC42NjctNC43NzEgMTAuNjY3LTEwLjY2N3YtMjEuMzMzYy0xZS0zIC01Ljg5NS00Ljc3Mi0xMC42NjYtMTAuNjY4LTEwLjY2NnpcIi8+XG4gIDwvZz5cbjwvc3ZnPmAsXG4gIGFsaWduQ2VudGVyOiBgXG48c3ZnIGNsYXNzPVwid2lkZ2V0LWljb25cIiBlbmFibGUtYmFja2dyb3VuZD1cIm5ldyAwIDAgNTEyIDUxMlwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxnIHRyYW5zZm9ybT1cIm1hdHJpeCgtMSAwIDAgMSA1MTIgMClcIj5cbiAgICA8cGF0aCBkPVwibTQxNiAxNzAuNjdoLTMyMGMtNS44OTYgMC0xMC42NjcgNC43NzEtMTAuNjY3IDEwLjY2N3YyMS4zMzNjMCA1Ljg5NiA0Ljc3MSAxMC42NjcgMTAuNjY3IDEwLjY2N2gzMjBjNS44OTYgMCAxMC42NjctNC43NzEgMTAuNjY3LTEwLjY2N3YtMjEuMzMzYzAtNS44OTYtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42Njd6XCIvPlxuICAgIDxwYXRoIGQ9XCJtNTAxLjMzIDI5OC42N2gtNDkwLjY3Yy01Ljg5NiAwLTEwLjY2NyA0Ljc3MS0xMC42NjcgMTAuNjY2djIxLjMzM2MwIDUuODk2IDQuNzcxIDEwLjY2NyAxMC42NjcgMTAuNjY3aDQ5MC42N2M1Ljg5NiAwIDEwLjY2Ny00Ljc3MSAxMC42NjctMTAuNjY3di0yMS4zMzNjLTFlLTMgLTUuODk1LTQuNzcyLTEwLjY2Ni0xMC42NjgtMTAuNjY2elwiLz5cbiAgICA8cGF0aCBkPVwibTQxNiA0MjYuNjdoLTMyMGMtNS44OTYgMC0xMC42NjcgNC43NzEtMTAuNjY3IDEwLjY2N3YyMS4zMzNjMCA1Ljg5NiA0Ljc3MSAxMC42NjcgMTAuNjY3IDEwLjY2N2gzMjBjNS44OTYgMCAxMC42NjctNC43NzEgMTAuNjY3LTEwLjY2N3YtMjEuMzMzYzAtNS44OTYtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42Njd6XCIvPlxuICAgIDxwYXRoIGQ9XCJtNTAxLjMzIDQyLjY2N2gtNDkwLjY3Yy01Ljg5NiAwLTEwLjY2NyA0Ljc3MS0xMC42NjcgMTAuNjY2djIxLjMzM2MwIDUuODk2IDQuNzcxIDEwLjY2NyAxMC42NjcgMTAuNjY3aDQ5MC42N2M1Ljg5NiAwIDEwLjY2Ny00Ljc3MSAxMC42NjctMTAuNjY3di0yMS4zMzNjLTFlLTMgLTUuODk1LTQuNzcyLTEwLjY2Ni0xMC42NjgtMTAuNjY2elwiLz5cbiAgPC9nPlxuPC9zdmc+YCxcbiAgYWxpZ25SaWdodDogYFxuPHN2ZyBjbGFzcz1cIndpZGdldC1pY29uXCIgZW5hYmxlLWJhY2tncm91bmQ9XCJuZXcgMCAwIDUxMiA1MTJcIiB2ZXJzaW9uPVwiMS4xXCIgdmlld0JveD1cIjAgMCA1MTIgNTEyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICA8cGF0aCBkPVwibTUwMS4zMyAxNzAuNjdoLTMyMGMtNS44OTYgMC0xMC42NjcgNC43NzEtMTAuNjY3IDEwLjY2N3YyMS4zMzNjMCA1Ljg5NiA0Ljc3MSAxMC42NjcgMTAuNjY3IDEwLjY2N2gzMjBjNS44OTYgMCAxMC42NjctNC43NzEgMTAuNjY3LTEwLjY2N3YtMjEuMzMzYzAtNS44OTYtNC43NzEtMTAuNjY3LTEwLjY2Ny0xMC42Njd6XCIvPlxuICA8cGF0aCBkPVwibTUwMS4zMyAyOTguNjdoLTQ5MC42N2MtNS44OTYgMC0xMC42NjcgNC43NzEtMTAuNjY3IDEwLjY2NnYyMS4zMzNjMCA1Ljg5NiA0Ljc3MSAxMC42NjcgMTAuNjY3IDEwLjY2N2g0OTAuNjdjNS44OTYgMCAxMC42NjctNC43NzEgMTAuNjY3LTEwLjY2N3YtMjEuMzMzYy0xZS0zIC01Ljg5NS00Ljc3Mi0xMC42NjYtMTAuNjY4LTEwLjY2NnpcIi8+XG4gIDxwYXRoIGQ9XCJtNTAxLjMzIDQyNi42N2gtMzIwYy01Ljg5NiAwLTEwLjY2NyA0Ljc3MS0xMC42NjcgMTAuNjY3djIxLjMzM2MwIDUuODk2IDQuNzcxIDEwLjY2NyAxMC42NjcgMTAuNjY3aDMyMGM1Ljg5NiAwIDEwLjY2Ny00Ljc3MSAxMC42NjctMTAuNjY3di0yMS4zMzNjMC01Ljg5Ni00Ljc3MS0xMC42NjctMTAuNjY3LTEwLjY2N3pcIi8+XG4gIDxwYXRoIGQ9XCJtNTAxLjMzIDQyLjY2N2gtNDkwLjY3Yy01Ljg5NiAwLTEwLjY2NyA0Ljc3MS0xMC42NjcgMTAuNjY2djIxLjMzM2MwIDUuODk2IDQuNzcxIDEwLjY2NyAxMC42NjcgMTAuNjY3aDQ5MC42N2M1Ljg5NiAwIDEwLjY2Ny00Ljc3MSAxMC42NjctMTAuNjY3di0yMS4zMzNjLTFlLTMgLTUuODk1LTQuNzcyLTEwLjY2Ni0xMC42NjgtMTAuNjY2elwiLz5cbjwvc3ZnPmAsXG4gIGRlbGV0ZUNvbHVtbjogYFxuPHN2ZyBjbGFzcz1cIndpZGdldC1pY29uXCIgZW5hYmxlLWJhY2tncm91bmQ9XCJuZXcgMCAwIDI2IDI2XCIgdmVyc2lvbj1cIjEuMVwiIHZpZXdCb3g9XCIwIDAgMjYgMjZcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxwYXRoIGQ9XCJtMTMuNTk0IDIwLjg1djMuMTVoLTEwdi0yMmgxMHYzLjE1YzAuNjMzLTAuMzIzIDEuMzA0LTAuNTY1IDItMC43Mjd2LTMuNDIzYzAtMC41NTEtMC40NDgtMS0xLTFoLTEyYy0wLjU1IDAtMSAwLjQ0OS0xIDF2MjRjMCAwLjU1MSAwLjQ0OSAxIDEgMWgxMmMwLjU1MiAwIDEtMC40NDkgMS0xdi0zLjQyNGMtMC42OTYtMC4xNjEtMS4zNjctMC40MDMtMi0wLjcyNnpcIi8+XG4gIDxwYXRoIGQ9XCJtMTcuNTk0IDYuMTg4Yy0zLjc2MiAwLTYuODEzIDMuMDUxLTYuODEyIDYuODEzLTFlLTMgMy43NjEgMy4wNSA2LjgxMiA2LjgxMiA2LjgxMnM2LjgxMy0zLjA1MSA2LjgxMy02LjgxMy0zLjA1Mi02LjgxMi02LjgxMy02LjgxMnptMy42MzIgNy44MDItNy4yNjcgMWUtM3YtMS45ODJoNy4yNjhsLTFlLTMgMS45ODF6XCIvPlxuPC9zdmc+YCxcbiAgZGVsZXRlUm93OiBgXG48c3ZnIGNsYXNzPVwid2lkZ2V0LWljb25cIiBlbmFibGUtYmFja2dyb3VuZD1cIm5ldyAwIDAgMTUuMzgxIDE1LjM4MVwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiMCAwIDE1LjM4MSAxNS4zODFcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxwYXRoIGQ9XCJNMCwxLjczMnY3LjczMmg2LjA1M2MwLTAuMDM1LTAuMDA0LTAuMDctMC4wMDQtMC4xMDRjMC0wLjQzNCwwLjA2MS0wLjg1NCwwLjE2NS0xLjI1NUgxLjM2VjMuMDkyICAgIGgxMi42NjJ2Mi4xOTJjMC41NDYsMC4zOTYsMS4wMSwwLjg5NywxLjM1OSwxLjQ3N1YxLjczMkgwelwiLz5cbiAgPHBhdGggZD1cIm0xMS4xOTYgNS4yOGMtMi4zMDcgMC00LjE4MyAxLjg3Ny00LjE4MyA0LjE4NCAwIDIuMzA4IDEuODc2IDQuMTg1IDQuMTgzIDQuMTg1IDIuMzA5IDAgNC4xODUtMS44NzcgNC4xODUtNC4xODUgMC0yLjMwNy0xLjg3Ni00LjE4NC00LjE4NS00LjE4NHptMCA3LjIzM2MtMS42NzkgMC0zLjA0Ny0xLjM2Ny0zLjA0Ny0zLjA0OSAwLTEuNjggMS4zNjgtMy4wNDkgMy4wNDctMy4wNDkgMS42ODQgMCAzLjA1IDEuMzY5IDMuMDUgMy4wNDkgMCAxLjY4Mi0xLjM2NiAzLjA0OS0zLjA1IDMuMDQ5elwiLz5cbiAgPHJlY3QgeD1cIjkuMzEyXCIgeT1cIjguNzU5XCIgd2lkdGg9XCIzLjg0NFwiIGhlaWdodD1cIjEuMTA0XCIvPlxuPC9zdmc+YCxcbiAgaW5zZXJ0Q29sdW1uOiBgXG48c3ZnIGNsYXNzPVwid2lkZ2V0LWljb25cIiB2ZXJzaW9uPVwiMS4xXCIgdmlld0JveD1cIi0yMSAwIDUxMiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxwYXRoIGQ9XCJtMjg4IDEwNi42N2MtMy45MjU4IDAtNy44NTE2LTEuNDI5Ny0xMC45MjItNC4zMTI1bC04MC03NC42NjRjLTQuODAwOC00LjQ4MDUtNi4zNzg5LTExLjQ1Ny0zLjk2ODgtMTcuNTU5IDIuNDEwMi02LjEwMTYgOC4zMjAzLTEwLjEzMyAxNC44OTEtMTAuMTMzaDE2MGM2LjU3MDMgMCAxMi40OCA0LjAxMTcgMTQuODkxIDEwLjEzMyAyLjQxMDIgNi4xMjUgMC44MzIwMyAxMy4wNzgtMy45Njg4IDE3LjU1OWwtODAgNzQuNjY0Yy0zLjA3MDMgMi44ODI4LTYuOTk2MSA0LjMxMjUtMTAuOTIyIDQuMzEyNXptLTM5LjQwMi03NC42NjggMzkuNDAyIDM2Ljc3NyAzOS40MDItMzYuNzc3elwiLz5cbiAgPHBhdGggZD1cIm00MzIgNTEyaC01My4zMzJjLTIwLjU5IDAtMzcuMzM2LTE2Ljc0Ni0zNy4zMzYtMzcuMzMydi0zMzAuNjdjMC0yMC41ODYgMTYuNzQ2LTM3LjMzMiAzNy4zMzYtMzcuMzMyaDUzLjMzMmMyMC41ODYgMCAzNy4zMzIgMTYuNzQ2IDM3LjMzMiAzNy4zMzJ2MzMwLjY3YzAgMjAuNTg2LTE2Ljc0NiAzNy4zMzItMzcuMzMyIDM3LjMzMnptLTUzLjMzMi0zNzMuMzNjLTIuOTQ1MyAwLTUuMzM1OSAyLjM4NjctNS4zMzU5IDUuMzMydjMzMC42N2MwIDIuOTQxNCAyLjM5MDYgNS4zMzIgNS4zMzU5IDUuMzMyaDUzLjMzMmMyLjk0NTMgMCA1LjMzMi0yLjM5MDYgNS4zMzItNS4zMzJ2LTMzMC42N2MwLTIuOTQ1My0yLjM4NjctNS4zMzItNS4zMzItNS4zMzJ6XCIvPlxuICA8cGF0aCBkPVwibTE5Ny4zMyA1MTJoLTE2MGMtMjAuNTg2IDAtMzcuMzMyLTE2Ljc0Ni0zNy4zMzItMzcuMzMydi0zMzAuNjdjMC0yMC41ODYgMTYuNzQ2LTM3LjMzMiAzNy4zMzItMzcuMzMyaDE2MGMyMC41OSAwIDM3LjMzNiAxNi43NDYgMzcuMzM2IDM3LjMzMnYzMzAuNjdjMCAyMC41ODYtMTYuNzQ2IDM3LjMzMi0zNy4zMzYgMzcuMzMyem0tMTYwLTM3My4zM2MtMi45NDE0IDAtNS4zMzIgMi4zODY3LTUuMzMyIDUuMzMydjMzMC42N2MwIDIuOTQxNCAyLjM5MDYgNS4zMzIgNS4zMzIgNS4zMzJoMTYwYzIuOTQ1MyAwIDUuMzM1OS0yLjM5MDYgNS4zMzU5LTUuMzMydi0zMzAuNjdjMC0yLjk0NTMtMi4zOTA2LTUuMzMyLTUuMzM1OS01LjMzMnpcIi8+XG4gIDxwYXRoIGQ9XCJtNDUzLjMzIDMyNS4zM2gtOTZjLTguODMyIDAtMTYtNy4xNjgtMTYtMTZzNy4xNjgtMTYgMTYtMTZoOTZjOC44MzIgMCAxNiA3LjE2OCAxNiAxNnMtNy4xNjggMTYtMTYgMTZ6XCIvPlxuICA8cGF0aCBkPVwibTIxOC42NyAzMjUuMzNoLTIwMi42N2MtOC44MzIgMC0xNi03LjE2OC0xNi0xNnM3LjE2OC0xNiAxNi0xNmgyMDIuNjdjOC44MzIgMCAxNiA3LjE2OCAxNiAxNnMtNy4xNjggMTYtMTYgMTZ6XCIvPlxuICA8cGF0aCBkPVwibTExNy4zMyA1MTJjLTguODMyIDAtMTYtNy4xNjgtMTYtMTZ2LTM3My4zM2MwLTguODMyIDcuMTY4LTE2IDE2LTE2czE2IDcuMTY4IDE2IDE2djM3My4zM2MwIDguODMyLTcuMTY4IDE2LTE2IDE2elwiLz5cbjwvc3ZnPmAsXG4gIGluc2VydFJvdzogYFxuPHN2ZyBjbGFzcz1cIndpZGdldC1pY29uXCIgdmVyc2lvbj1cIjEuMVwiIHZpZXdCb3g9XCIwIC0yMSA1MTIgNTEyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICA8cGF0aCBkPVwibTE2IDI3Ny4zM2MtMS45ODQ0IDAtMy45Njg4LTAuMzYzMjgtNS44NjcyLTEuMTA5NC02LjEyMTEtMi40MTAyLTEwLjEzMy04LjMyMDMtMTAuMTMzLTE0Ljg5MXYtMTYwYzAtNi41NzAzIDQuMDExNy0xMi40OCAxMC4xMzMtMTQuODkxIDYuMTQ0NS0yLjQxMDIgMTMuMDc4LTAuODUxNTYgMTcuNTU5IDMuOTY4OGw3NC42NjQgODBjNS43NjE3IDYuMTQ0NSA1Ljc2MTcgMTUuNjggMCAyMS44MjRsLTc0LjY2NCA4MGMtMy4wOTM4IDMuMzI4MS03LjMzOTggNS4wOTc3LTExLjY5MSA1LjA5Nzd6bTE2LTEzNS40djc4LjgwNWwzNi43NzctMzkuNDAyelwiLz5cbiAgPHBhdGggZD1cIm00NzQuNjcgMTI4aC0zMzAuNjdjLTIwLjU4NiAwLTM3LjMzMi0xNi43NDYtMzcuMzMyLTM3LjMzMnYtNTMuMzM2YzAtMjAuNTg2IDE2Ljc0Ni0zNy4zMzIgMzcuMzMyLTM3LjMzMmgzMzAuNjdjMjAuNTg2IDAgMzcuMzMyIDE2Ljc0NiAzNy4zMzIgMzcuMzMydjUzLjMzNmMwIDIwLjU4Ni0xNi43NDYgMzcuMzMyLTM3LjMzMiAzNy4zMzJ6bS0zMzAuNjctOTZjLTIuOTQ1MyAwLTUuMzMyIDIuMzkwNi01LjMzMiA1LjMzMnY1My4zMzZjMCAyLjk0MTQgMi4zODY3IDUuMzMyIDUuMzMyIDUuMzMyaDMzMC42N2MyLjk0MTQgMCA1LjMzMi0yLjM5MDYgNS4zMzItNS4zMzJ2LTUzLjMzNmMwLTIuOTQxNC0yLjM5MDYtNS4zMzItNS4zMzItNS4zMzJ6XCIvPlxuICA8cGF0aCBkPVwibTQ3NC42NyA0NjkuMzNoLTMzMC42N2MtMjAuNTg2IDAtMzcuMzMyLTE2Ljc0Ni0zNy4zMzItMzcuMzMydi0xNjBjMC0yMC41ODYgMTYuNzQ2LTM3LjMzMiAzNy4zMzItMzcuMzMyaDMzMC42N2MyMC41ODYgMCAzNy4zMzIgMTYuNzQ2IDM3LjMzMiAzNy4zMzJ2MTYwYzAgMjAuNTg2LTE2Ljc0NiAzNy4zMzItMzcuMzMyIDM3LjMzMnptLTMzMC42Ny0yMDIuNjZjLTIuOTQ1MyAwLTUuMzMyIDIuMzg2Ny01LjMzMiA1LjMzMnYxNjBjMCAyLjk0NTMgMi4zODY3IDUuMzMyIDUuMzMyIDUuMzMyaDMzMC42N2MyLjk0MTQgMCA1LjMzMi0yLjM4NjcgNS4zMzItNS4zMzJ2LTE2MGMwLTIuOTQ1My0yLjM5MDYtNS4zMzItNS4zMzItNS4zMzJ6XCIvPlxuICA8cGF0aCBkPVwibTMwOS4zMyAxMjhjLTguODMyIDAtMTYtNy4xNjgtMTYtMTZ2LTk2YzAtOC44MzIgNy4xNjgtMTYgMTYtMTZzMTYgNy4xNjggMTYgMTZ2OTZjMCA4LjgzMi03LjE2OCAxNi0xNiAxNnpcIi8+XG4gIDxwYXRoIGQ9XCJtMzA5LjMzIDQ2OS4zM2MtOC44MzIgMC0xNi03LjE2OC0xNi0xNnYtMjAyLjY2YzAtOC44MzIgNy4xNjgtMTYgMTYtMTZzMTYgNy4xNjggMTYgMTZ2MjAyLjY2YzAgOC44MzItNy4xNjggMTYtMTYgMTZ6XCIvPlxuICA8cGF0aCBkPVwibTQ5NiAzNjhoLTM3My4zM2MtOC44MzIgMC0xNi03LjE2OC0xNi0xNnM3LjE2OC0xNiAxNi0xNmgzNzMuMzNjOC44MzIgMCAxNiA3LjE2OCAxNiAxNnMtNy4xNjggMTYtMTYgMTZ6XCIvPlxuPC9zdmc+YCxcbiAgbW92ZUNvbHVtbkxlZnQ6IGBcbjxzdmcgY2xhc3M9XCJ3aWRnZXQtaWNvblwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiMCAwIDUxMi4wMiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxwYXRoIGQ9XCJtMzU3LjM1IDUxMi4wMWg5NmMzMi4zNjMgMCA1OC42NjgtMjYuMzA1IDU4LjY2OC01OC42Njh2LTM5NC42NmMwLTMyLjM2My0yNi4zMDUtNTguNjY4LTU4LjY2OC01OC42NjhoLTk2Yy0zMi4zNjMgMC01OC42NjQgMjYuMzA1LTU4LjY2NCA1OC42Njh2Mzk0LjY2YzAgMzIuMzYzIDI2LjMwMSA1OC42NjggNTguNjY0IDU4LjY2OHptOTYtNDgwYzE0LjY5OSAwIDI2LjY2OCAxMS45NjkgMjYuNjY4IDI2LjY2OHYzOTQuNjZjMCAxNC42OTktMTEuOTY5IDI2LjY2OC0yNi42NjggMjYuNjY4aC05NmMtMTQuNjk5IDAtMjYuNjY0LTExLjk2OS0yNi42NjQtMjYuNjY4di0zOTQuNjZjMC0xNC42OTkgMTEuOTY1LTI2LjY2OCAyNi42NjQtMjYuNjY4elwiLz5cbiAgPHBhdGggZD1cIm0xNi4wMTYgMjcyLjAxaDIyNGM4LjgzMiAwIDE2LTcuMTY4IDE2LTE2cy03LjE2OC0xNi0xNi0xNmgtMjI0Yy04LjgzMiAwLTE2IDcuMTY4LTE2IDE2czcuMTY4IDE2IDE2IDE2elwiLz5cbiAgPHBhdGggZD1cIm0xMDEuMzUgMzU3LjM0YzQuMDk3NiAwIDguMTkxNC0xLjU1NDcgMTEuMzA5LTQuNjkxNCA2LjI1LTYuMjUgNi4yNS0xNi4zODMgMC0yMi42MzdsLTc0LjAyNy03NC4wMjMgNzQuMDI3LTc0LjAyN2M2LjI1LTYuMjUgNi4yNS0xNi4zODcgMC0yMi42MzdzLTE2LjM4My02LjI1LTIyLjYzNyAwbC04NS4zMzIgODUuMzM2Yy02LjI1IDYuMjUtNi4yNSAxNi4zODMgMCAyMi42MzNsODUuMzMyIDg1LjMzMmMzLjEzNjcgMy4xNjAyIDcuMjM0NCA0LjcxNDggMTEuMzI4IDQuNzE0OHpcIi8+XG48L3N2Zz5gLFxuICBtb3ZlQ29sdW1uUmlnaHQ6IGBcbjxzdmcgY2xhc3M9XCJ3aWRnZXQtaWNvblwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiMCAwIDUxMi4wMiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxwYXRoIGQ9XCJtMTU0LjY3IDUxMi4wMWgtOTZjLTMyLjM2MyAwLTU4LjY2OC0yNi4zMDUtNTguNjY4LTU4LjY2OHYtMzk0LjY2YzAtMzIuMzYzIDI2LjMwNS01OC42NjggNTguNjY4LTU4LjY2OGg5NmMzMi4zNjMgMCA1OC42NjQgMjYuMzA1IDU4LjY2NCA1OC42Njh2Mzk0LjY2YzAgMzIuMzYzLTI2LjMwMSA1OC42NjgtNTguNjY0IDU4LjY2OHptLTk2LTQ4MGMtMTQuNjk5IDAtMjYuNjY4IDExLjk2OS0yNi42NjggMjYuNjY4djM5NC42NmMwIDE0LjY5OSAxMS45NjkgMjYuNjY4IDI2LjY2OCAyNi42NjhoOTZjMTQuNjk5IDAgMjYuNjY0LTExLjk2OSAyNi42NjQtMjYuNjY4di0zOTQuNjZjMC0xNC42OTktMTEuOTY1LTI2LjY2OC0yNi42NjQtMjYuNjY4elwiLz5cbiAgPHBhdGggZD1cIm00OTYgMjcyLjAxaC0yMjRjLTguODMyIDAtMTYtNy4xNjgtMTYtMTYgMC04LjgzMiA3LjE2OC0xNiAxNi0xNmgyMjRjOC44MzIgMCAxNiA3LjE2OCAxNiAxNiAwIDguODMyLTcuMTY4IDE2LTE2IDE2elwiLz5cbiAgPHBhdGggZD1cIm00MTAuNjcgMzU3LjM0Yy00LjA5NzcgMC04LjE5MTQtMS41NTQ3LTExLjMwOS00LjY5MTQtNi4yNS02LjI1LTYuMjUtMTYuMzgzIDAtMjIuNjM3bDc0LjAyNy03NC4wMjMtNzQuMDI3LTc0LjAyN2MtNi4yNS02LjI1LTYuMjUtMTYuMzg3IDAtMjIuNjM3czE2LjM4My02LjI1IDIyLjYzNyAwbDg1LjMzMiA4NS4zMzZjNi4yNSA2LjI1IDYuMjUgMTYuMzgzIDAgMjIuNjMzbC04NS4zMzIgODUuMzMyYy0zLjEzNjcgMy4xNjAyLTcuMjM0NCA0LjcxNDgtMTEuMzI4IDQuNzE0OHpcIi8+XG48L3N2Zz5gLFxuICBtb3ZlUm93RG93bjogYFxuPHN2ZyBjbGFzcz1cIndpZGdldC1pY29uXCIgdmVyc2lvbj1cIjEuMVwiIHZpZXdCb3g9XCIwIDAgNTEyIDUxMlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgPHBhdGggZD1cIm00NTMuMzMgMjEzLjMzaC0zOTQuNjZjLTMyLjM2MyAwLTU4LjY2OC0yNi4zMDEtNTguNjY4LTU4LjY2NHYtOTZjMC0zMi4zNjMgMjYuMzA1LTU4LjY2OCA1OC42NjgtNTguNjY4aDM5NC42NmMzMi4zNjMgMCA1OC42NjggMjYuMzA1IDU4LjY2OCA1OC42Njh2OTZjMCAzMi4zNjMtMjYuMzA1IDU4LjY2NC01OC42NjggNTguNjY0em0tMzk0LjY2LTE4MS4zM2MtMTQuNjk5IDAtMjYuNjY4IDExLjk2OS0yNi42NjggMjYuNjY4djk2YzAgMTQuNjk5IDExLjk2OSAyNi42NjQgMjYuNjY4IDI2LjY2NGgzOTQuNjZjMTQuNjk5IDAgMjYuNjY4LTExLjk2NSAyNi42NjgtMjYuNjY0di05NmMwLTE0LjY5OS0xMS45NjktMjYuNjY4LTI2LjY2OC0yNi42Njh6XCIvPlxuICA8cGF0aCBkPVwibTI1NiA1MTJjLTguODMyIDAtMTYtNy4xNjgtMTYtMTZ2LTIyNGMwLTguODMyIDcuMTY4LTE2IDE2LTE2czE2IDcuMTY4IDE2IDE2djIyNGMwIDguODMyLTcuMTY4IDE2LTE2IDE2elwiLz5cbiAgPHBhdGggZD1cIm0yNTYgNTEyYy00LjA5NzcgMC04LjE5MTQtMS41NTg2LTExLjMwOS00LjY5MTRsLTg1LjMzMi04NS4zMzZjLTYuMjUtNi4yNS02LjI1LTE2LjM4MyAwLTIyLjYzM3MxNi4zODMtNi4yNSAyMi42MzcgMGw3NC4wMjMgNzQuMDI3IDc0LjAyNy03NC4wMjdjNi4yNS02LjI1IDE2LjM4Ny02LjI1IDIyLjYzNyAwczYuMjUgMTYuMzgzIDAgMjIuNjMzbC04NS4zMzYgODUuMzM2Yy0zLjE1NjIgMy4xMzI4LTcuMjUgNC42OTE0LTExLjM0OCA0LjY5MTR6XCIvPlxuPC9zdmc+YCxcbiAgbW92ZVJvd1VwOiBgXG48c3ZnIGNsYXNzPVwid2lkZ2V0LWljb25cIiB2ZXJzaW9uPVwiMS4xXCIgdmlld0JveD1cIjAgMCA1MTIgNTEyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICA8cGF0aCBkPVwibTQ1My4zMyAyOTguNjdoLTM5NC42NmMtMzIuMzYzIDAtNTguNjY4IDI2LjMwMS01OC42NjggNTguNjY0djk2YzAgMzIuMzYzIDI2LjMwNSA1OC42NjggNTguNjY4IDU4LjY2OGgzOTQuNjZjMzIuMzYzIDAgNTguNjY4LTI2LjMwNSA1OC42NjgtNTguNjY4di05NmMwLTMyLjM2My0yNi4zMDUtNTguNjY0LTU4LjY2OC01OC42NjR6bS0zOTQuNjYgMTgxLjMzYy0xNC42OTkgMC0yNi42NjgtMTEuOTY5LTI2LjY2OC0yNi42Njh2LTk2YzAtMTQuNjk5IDExLjk2OS0yNi42NjQgMjYuNjY4LTI2LjY2NGgzOTQuNjZjMTQuNjk5IDAgMjYuNjY4IDExLjk2NSAyNi42NjggMjYuNjY0djk2YzAgMTQuNjk5LTExLjk2OSAyNi42NjgtMjYuNjY4IDI2LjY2OHpcIi8+XG4gIDxwYXRoIGQ9XCJtMjU2IDBjLTguODMyIDAtMTYgNy4xNjgtMTYgMTZ2MjI0YzAgOC44MzIgNy4xNjggMTYgMTYgMTZzMTYtNy4xNjggMTYtMTZ2LTIyNGMwLTguODMyLTcuMTY4LTE2LTE2LTE2elwiLz5cbiAgPHBhdGggZD1cIm0yNTYgMGMtNC4wOTc3IDAtOC4xOTE0IDEuNTU4Ni0xMS4zMDkgNC42OTE0bC04NS4zMzIgODUuMzM2Yy02LjI1IDYuMjUtNi4yNSAxNi4zODMgMCAyMi42MzNzMTYuMzgzIDYuMjUgMjIuNjM3IDBsNzQuMDIzLTc0LjAyNyA3NC4wMjcgNzQuMDI3YzYuMjUgNi4yNSAxNi4zODcgNi4yNSAyMi42MzcgMHM2LjI1LTE2LjM4MyAwLTIyLjYzM2wtODUuMzM2LTg1LjMzNmMtMy4xNTYyLTMuMTMyOC03LjI1LTQuNjkxNC0xMS4zNDgtNC42OTE0elwiLz5cbjwvc3ZnPmAsXG4gIHNvcnRBc2M6IGBcbjxzdmcgY2xhc3M9XCJ3aWRnZXQtaWNvblwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxnIHRyYW5zZm9ybT1cIm1hdHJpeCgxIDAgMCAtMSAwIDUwMS4xNSlcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzNcIj5cbiAgICA8cGF0aCBkPVwibTM1My42IDc0LjQ4NmMtMTEuNzc2IDAtMjEuMzMzIDkuNTU3My0yMS4zMzMgMjEuMzMzdjI5OC42N2MwIDExLjc3NiA5LjU1NzMgMjEuMzMzIDIxLjMzMyAyMS4zMzNzMjEuMzMzLTkuNTU3MyAyMS4zMzMtMjEuMzMzdi0yOTguNjdjMC0xMS43NzYtOS41NTczLTIxLjMzMy0yMS4zMzMtMjEuMzMzelwiLz5cbiAgICA8cGF0aCBkPVwibTM1My42IDc0LjQ4NmMtNS40NjM2IDAtMTAuOTIyIDIuMDc4MS0xNS4wNzkgNi4yNTUybC0xMTMuNzggMTEzLjc4Yy04LjMzMzMgOC4zMzMzLTguMzMzMyAyMS44NDQgMCAzMC4xNzcgOC4zMzMzIDguMzMzMyAyMS44NDQgOC4zMzMzIDMwLjE4MyAwbDk4LjY5Ny05OC43MDMgOTguNzAzIDk4LjcwM2M4LjMzMzMgOC4zMzMzIDIxLjg0OSA4LjMzMzMgMzAuMTgzIDAgOC4zMzMzLTguMzMzMyA4LjMzMzMtMjEuODQ0IDAtMzAuMTc3bC0xMTMuNzgtMTEzLjc4Yy00LjIwODMtNC4xNzcxLTkuNjY2Ny02LjI1NTItMTUuMTMxLTYuMjU1MnpcIi8+XG4gIDwvZz5cbiAgPHBhdGggZD1cIm0xNjYuMDQgMjEwLjExcS01LjA5NzEtMTMuNDkyLTkuNTk0NS0yNi4zODUtNC40OTc0LTEzLjE5Mi05LjI5NDctMjYuNjg1aC05NC4xNDZsLTE4Ljg4OSA1My4wN2gtMzAuMjgzcTExLjk5My0zMi45ODEgMjIuNDg3LTYwLjg2NSAxMC40OTQtMjguMTg0IDIwLjM4OC01My4zNjkgMTAuMTk0LTI1LjE4NiAyMC4wODktNDcuOTczIDkuODk0My0yMy4wODcgMjAuNjg4LTQ1LjU3NGgyNi42ODVxMTAuNzk0IDIyLjQ4NyAyMC42ODggNDUuNTc0IDkuODk0MyAyMi43ODcgMTkuNzg5IDQ3Ljk3MyAxMC4xOTQgMjUuMTg2IDIwLjY4OCA1My4zNjkgMTAuNDk0IDI3Ljg4NCAyMi40ODcgNjAuODY1em0tMjcuMjg0LTc3LjA1NnEtOS41OTQ1LTI2LjA4NS0xOS4xODktNTAuMzcxLTkuMjk0Ny0yNC41ODYtMTkuNDg5LTQ3LjA3My0xMC40OTQgMjIuNDg3LTIwLjA4OSA0Ny4wNzMtOS4yOTQ3IDI0LjI4Ni0xOC41ODkgNTAuMzcxelwiLz5cbiAgPHBhdGggZD1cIm0xNzMuMjQgMzI1LjI1cS02Ljg5NiA3Ljc5NTUtMTYuMTkxIDE4Ljg4OS04Ljk5NDggMTAuNzk0LTE5LjE4OSAyNC4yODYtMTAuMTk0IDEzLjE5Mi0yMC45ODggMjguMTg0LTEwLjc5NCAxNC42OTItMjEuMjg4IDI5Ljk4My0xMC4xOTQgMTQuOTkxLTE5LjQ4OSAyOS45ODMtOS4yOTQ3IDE0Ljk5MS0xNi43OSAyOC40ODRoMTE2LjkzdjI0Ljg4NmgtMTUwLjgxdi0xOS40ODlxNi4yOTY0LTExLjk5MyAxNC42OTItMjYuMzg1IDguNjk1LTE0LjM5MiAxOC4yOS0yOS4zODMgOS44OTQzLTE0Ljk5MSAyMC4zODgtMzAuMjgzdDIwLjY4OC0yOS4zODNxMTAuNDk0LTE0LjA5MiAyMC4wODgtMjYuMzg1IDkuODk0My0xMi4yOTMgMTcuOTktMjEuNTg4aC0xMDYuNzR2LTI0Ljg4NmgxNDIuNDJ6XCIvPlxuPC9zdmc+YCxcbiAgc29ydERlc2M6IGBcbjxzdmcgY2xhc3M9XCJ3aWRnZXQtaWNvblwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxnIHRyYW5zZm9ybT1cIm1hdHJpeCgxIDAgMCAtMSAwIDUwMS4xNSlcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzNcIj5cbiAgICA8cGF0aCBkPVwibTM1My42IDc0LjQ4NmMtMTEuNzc2IDAtMjEuMzMzIDkuNTU3My0yMS4zMzMgMjEuMzMzdjI5OC42N2MwIDExLjc3NiA5LjU1NzMgMjEuMzMzIDIxLjMzMyAyMS4zMzNzMjEuMzMzLTkuNTU3MyAyMS4zMzMtMjEuMzMzdi0yOTguNjdjMC0xMS43NzYtOS41NTczLTIxLjMzMy0yMS4zMzMtMjEuMzMzelwiLz5cbiAgICA8cGF0aCBkPVwibTM1My42IDc0LjQ4NmMtNS40NjM2IDAtMTAuOTIyIDIuMDc4MS0xNS4wNzkgNi4yNTUybC0xMTMuNzggMTEzLjc4Yy04LjMzMzMgOC4zMzMzLTguMzMzMyAyMS44NDQgMCAzMC4xNzcgOC4zMzMzIDguMzMzMyAyMS44NDQgOC4zMzMzIDMwLjE4MyAwbDk4LjY5Ny05OC43MDMgOTguNzAzIDk4LjcwM2M4LjMzMzMgOC4zMzMzIDIxLjg0OSA4LjMzMzMgMzAuMTgzIDAgOC4zMzMzLTguMzMzMyA4LjMzMzMtMjEuODQ0IDAtMzAuMTc3bC0xMTMuNzgtMTEzLjc4Yy00LjIwODMtNC4xNzcxLTkuNjY2Ny02LjI1NTItMTUuMTMxLTYuMjU1MnpcIi8+XG4gIDwvZz5cbiAgPHBhdGggZD1cIm0xNjkuMTEgNTA3LjcycS01LjA5NzEtMTMuNDkyLTkuNTk0NS0yNi4zODUtNC40OTc0LTEzLjE5Mi05LjI5NDctMjYuNjg1aC05NC4xNDZsLTE4Ljg4OSA1My4wN2gtMzAuMjgzcTExLjk5My0zMi45ODEgMjIuNDg3LTYwLjg2NSAxMC40OTQtMjguMTg0IDIwLjM4OC01My4zNjkgMTAuMTk0LTI1LjE4NiAyMC4wODgtNDcuOTczIDkuODk0My0yMy4wODcgMjAuNjg4LTQ1LjU3NGgyNi42ODVxMTAuNzk0IDIyLjQ4NyAyMC42ODggNDUuNTc0IDkuODk0MyAyMi43ODcgMTkuNzg5IDQ3Ljk3MyAxMC4xOTQgMjUuMTg2IDIwLjY4OCA1My4zNjkgMTAuNDk0IDI3Ljg4NCAyMi40ODcgNjAuODY1em0tMjcuMjg0LTc3LjA1NnEtOS41OTQ1LTI2LjA4NS0xOS4xODktNTAuMzcxLTkuMjk0Ny0yNC41ODYtMTkuNDg5LTQ3LjA3My0xMC40OTQgMjIuNDg3LTIwLjA4OSA0Ny4wNzMtOS4yOTQ3IDI0LjI4Ni0xOC41ODkgNTAuMzcxelwiLz5cbiAgPHBhdGggZD1cIm0xNzYuMzEgMjcuNjM5cS02Ljg5NiA3Ljc5NTUtMTYuMTkxIDE4Ljg4OS04Ljk5NDggMTAuNzk0LTE5LjE4OSAyNC4yODYtMTAuMTk0IDEzLjE5Mi0yMC45ODggMjguMTg0LTEwLjc5NCAxNC42OTItMjEuMjg4IDI5Ljk4My0xMC4xOTQgMTQuOTkxLTE5LjQ4OSAyOS45ODMtOS4yOTQ3IDE0Ljk5MS0xNi43OSAyOC40ODRoMTE2LjkzdjI0Ljg4NmgtMTUwLjgxdi0xOS40ODlxNi4yOTY0LTExLjk5MyAxNC42OTItMjYuMzg1IDguNjk1LTE0LjM5MiAxOC4yOS0yOS4zODMgOS44OTQzLTE0Ljk5MSAyMC4zODgtMzAuMjgzIDEwLjQ5NC0xNS4yOTEgMjAuNjg4LTI5LjM4MyAxMC40OTQtMTQuMDkyIDIwLjA4OC0yNi4zODUgOS44OTQzLTEyLjI5MyAxNy45OS0yMS41ODhoLTEwNi43NHYtMjQuODg2aDE0Mi40MnpcIi8+XG48L3N2Zz5gLFxuICBmb3JtdWxhOiBgXG48c3ZnIGNsYXNzPVwid2lkZ2V0LWljb25cIiB2ZXJzaW9uPVwiMS4xXCIgdmlld0JveD1cIjAgMCA1MTIgNTEyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICA8cGF0aCBkPVwibTI2My41MSA2Mi45NjdjMS42NzItMTEuMTM0IDkuMzI2LTIyLjk2NyAyMC4yMjItMjIuOTY3IDExLjAyOCAwIDIwIDguOTcyIDIwIDIwaDQwYzAtMzMuMDg0LTI2LjkxNi02MC02MC02MC0zMy42MjkgMC01NS41MjcgMjguNjkxLTU5Ljc4NCA1Ny4wNzNsLTEyLjg2MiA4Ni45MjdoLTYxLjM1NHY0MGg1NS40MzZsLTM5LjIyIDI2NS4wNy0wLjExNiAwLjkzN2MtMS4wNjMgMTAuNjItOS4zOTMgMjEuOTktMjAuMSAyMS45OS0xMS4wMjggMC0yMC04Ljk3Mi0yMC0yMGgtNDBjMCAzMy4wODQgMjYuOTE2IDYwIDYwIDYwIDMzLjY2MSAwIDU2Ljc3MS0yOS4xNDEgNTkuODQ4LTU3LjQ5Nmw0MC4wMjMtMjcwLjVoNjAuMTI5di00MGgtNTQuMjExbDExLjk4OS04MS4wMzN6XCIvPlxuICA8cG9seWdvbiBwb2ludHM9XCI0MjYuMjcgMjQ4IDM3OC4yNCAyNDggMzUyLjI1IDI4Ny4wOCAzMzQuOTIgMjQ4IDI5MS4xNyAyNDggMzI2IDMyNi41NyAyNzAuNTIgNDEwIDMxOC41NiA0MTAgMzQ1LjIxIDM2OS45MiAzNjIuOTggNDEwIDQwNi43MyA0MTAgMzcxLjQ2IDMzMC40M1wiLz5cbjwvc3ZnPmAsXG4gIGhlbHA6IGBcbjxzdmcgY2xhc3M9XCJ3aWRnZXQtaWNvblwiIHZlcnNpb249XCIxLjFcIiB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxwYXRoIGQ9XCJtMjQ4LjE2IDM0My4yMmMtMTQuNjM5IDAtMjYuNDkxIDEyLjItMjYuNDkxIDI2Ljg0IDAgMTQuMjkxIDExLjUwMyAyNi44NCAyNi40OTEgMjYuODRzMjYuODQtMTIuNTQ4IDI2Ljg0LTI2Ljg0YzAtMTQuNjQtMTIuMTk5LTI2Ljg0LTI2Ljg0LTI2Ljg0elwiLz5cbiAgPHBhdGggZD1cIm0yNTIuNjkgMTQwYy00Ny4wNTcgMC02OC42NjggMjcuODg1LTY4LjY2OCA0Ni43MDggMCAxMy41OTUgMTEuNTAyIDE5Ljg2OSAyMC45MTQgMTkuODY5IDE4LjgyMiAwIDExLjE1NC0yNi44NCA0Ni43MDgtMjYuODQgMTcuNDI5IDAgMzEuMzcyIDcuNjY5IDMxLjM3MiAyMy43MDMgMCAxOC44MjQtMTkuNTIgMjkuNjI5LTMxLjAyMyAzOS4zODktMTAuMTA4IDguNzE0LTIzLjM1NCAyMy4wMDYtMjMuMzU0IDUyLjk4MyAwIDE4LjEyNSA0Ljg3OSAyMy4zNTQgMTkuMTcxIDIzLjM1NCAxNy4wOCAwIDIwLjU2NS03LjY2OCAyMC41NjUtMTQuMjkxIDAtMTguMTI2IDAuMzUtMjguNTgzIDE5LjUyMS00My41NzEgOS40MTEtNy4zMiAzOS4wNC0zMS4wMjMgMzkuMDQtNjMuNzg5cy0yOS42MjktNTcuNTE1LTc0LjI0Ni01Ny41MTV6XCIvPlxuICA8cGF0aCBkPVwibTI1NiAwYy0xNDEuNDggMC0yNTYgMTE0LjUtMjU2IDI1NnYyMzZjMCAxMS4wNDYgOC45NTQgMjAgMjAgMjBoMjM2YzE0MS40OCAwIDI1Ni0xMTQuNSAyNTYtMjU2IDAtMTQxLjQ4LTExNC41LTI1Ni0yNTYtMjU2em0wIDQ3MmgtMjE2di0yMTZjMC0xMTkuMzggOTYuNjA3LTIxNiAyMTYtMjE2IDExOS4zOCAwIDIxNiA5Ni42MDcgMjE2IDIxNiAwIDExOS4zOC05Ni42MDcgMjE2LTIxNiAyMTZ6XCIvPlxuPC9zdmc+YCxcbiAgY3N2OiBgXG48c3ZnIGNsYXNzPVwid2lkZ2V0LWljb25cIiB2ZXJzaW9uPVwiMS4xXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiA8cGF0aCBkPVwibTQuOTk3OSA5di04aDE0LjUwMmwzLjUgMy41IDJlLTcgMTguNWgtMTltMTQtMjJ2NWg1bS0xNiA3aC0yYy0xIDAtMiAwLjUtMiAxLjV2MS41czFlLTggMC41IDAgMS41IDEgMS41IDIgMS41aDJtNi4yNS02aC0yLjVjLTEuNSAwLTIgMC41LTIgMS41czAuNSAxLjUgMiAxLjUgMiAwLjUgMiAxLjUtMC41IDEuNS0yIDEuNWgtMi41bTEyLjI1LTd2MC41YzAgMC41LTIuNSA2LjUtMi41IDYuNWgtMC41cy0yLjUtNi0yLjUtNi41di0wLjVcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cInZhcigtLXRleHQtbXV0ZWQpXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIvPlxuPC9zdmc+YCxcbiAgYXJyb3dlbnRlcjogYFxuPHN2ZyB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICA8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgZD1cIm00LjY0MTE5IDEyLjUgMi44NzI4MyAyLjcwMzhjLjMwMTYzLjI4MzkuMzE2MDIuNzU4Ni4wMzIxMyAxLjA2MDItLjI4Mzg5LjMwMTctLjc1ODU0LjMxNi0xLjA2MDE3LjAzMjFsLTQuMjUtNGMtLjE1MDU5LS4xNDE3LS4yMzU5OC0uMzM5My0uMjM1OTgtLjU0NjFzLjA4NTM5LS40MDQ0LjIzNTk4LS41NDYybDQuMjUtMy45OTk5NWMuMzAxNjMtLjI4Mzg5Ljc3NjI4LS4yNjk1IDEuMDYwMTcuMDMyMTNzLjI2OTUuNzc2MjgtLjAzMjEzIDEuMDYwMTdsLTIuODcyODQgMi43MDM4NWgxMC4xMDg4MmMuOTY2NSAwIDEuNzUtLjc4MzUgMS43NS0xLjc1di00LjVjMC0uNDE0MjEuMzM1OC0uNzUuNzUtLjc1cy43NS4zMzU3OS43NS43NXY0LjVjMCAxLjc5NDktMS40NTUxIDMuMjUtMy4yNSAzLjI1elwiLz5cbjwvc3ZnPmAsXG4gIGFycm93dGFiOiBgXG48c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwibTE4LjIwNzEwNjggMTEuMjkyODkzMi02LjUtNi40OTk5OTk5OGMtLjM5MDUyNDMtLjM5MDUyNDI5LTEuMDIzNjg5My0uMzkwNTI0MjktMS40MTQyMTM2IDAtLjM2MDQ4Mzk0LjM2MDQ4Mzk2LS4zODgyMTM0OC45Mjc3MTUwMi0uMDgzMTg4NiAxLjMyMDAwNjIybC4wODMxODg2LjA5NDIwNzM0IDQuNzkzMTA2OCA0Ljc5Mjg5MzIyaC0xMS4wODZjLS41MTI4MzU4NCAwLS45MzU1MDcxNi4zODYwNDAyLS45OTMyNzIyNy44ODMzNzg5bC0uMDA2NzI3NzMuMTE2NjIxMWMwIC41MTI4MzU4LjM4NjA0MDE5LjkzNTUwNzIuODgzMzc4ODcuOTkzMjcyM2wuMTE2NjIxMTMuMDA2NzI3N2gxMS4wODZsLTQuNzkzMTA2OCA0Ljc5Mjg5MzJjLS4zNjA0ODM5NC4zNjA0ODQtLjM4ODIxMzQ4LjkyNzcxNS0uMDgzMTg4NiAxLjMyMDAwNjJsLjA4MzE4ODYuMDk0MjA3NGMuMzYwNDg0LjM2MDQ4MzkuOTI3NzE1LjM4ODIxMzUgMS4zMjAwMDYyLjA4MzE4ODZsLjA5NDIwNzQtLjA4MzE4ODYgNi41LTYuNWMuMzYwNDgzOS0uMzYwNDg0LjM4ODIxMzUtLjkyNzcxNS4wODMxODg2LTEuMzIwMDA2MmwtLjA4MzE4ODYtLjA5NDIwNzQtNi41LTYuNDk5OTk5OTh6bTIuNzkyODkzMiA3LjIwNzEwNjh2LTEzYzAtLjU1MjI4NDc1LS40NDc3MTUzLTEtMS0xcy0xIC40NDc3MTUyNS0xIDF2MTNjMCAuNTUyMjg0Ny40NDc3MTUzIDEgMSAxczEtLjQ0NzcxNTMgMS0xelwiIGZpbGw9XCIjMjEyMTIxXCIvPlxuPC9zdmc+YCxcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRJY29ucyA9ICgpOiB2b2lkID0+IHtcbiAgT2JqZWN0LmtleXMoaWNvbnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgIC8vIERvbid0IGFkZCB0aGUgJ2hlbHAnIGljb24gaGVyZSBhcyBpdCB3aWxsIG92ZXJ3cml0ZSB0aGUgbmF0aXZlIG9uZS5cbiAgICBpZiAoa2V5ICE9PSAnaGVscCcpIHtcbiAgICAgIGFkZEljb24oa2V5LCBpY29uc1trZXldKTtcbiAgICB9XG4gIH0pO1xufTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Qb2ludCA9IHZvaWQgMDtcbi8qKlxuICogQSBgUG9pbnRgIHJlcHJlc2VudHMgYSBwb2ludCBpbiB0aGUgdGV4dCBlZGl0b3IuXG4gKi9cbmNsYXNzIFBvaW50IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGBQb2ludGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHJvdyAtIFJvdyBvZiB0aGUgcG9pbnQsIHN0YXJ0cyBmcm9tIDAuXG4gICAgICogQHBhcmFtIGNvbHVtbiAtIENvbHVtbiBvZiB0aGUgcG9pbnQsIHN0YXJ0cyBmcm9tIDAuXG4gICAgICovXG4gICAgY29uc3RydWN0b3Iocm93LCBjb2x1bW4pIHtcbiAgICAgICAgdGhpcy5yb3cgPSByb3c7XG4gICAgICAgIHRoaXMuY29sdW1uID0gY29sdW1uO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIHBvaW50IGlzIGVxdWFsIHRvIGFub3RoZXIgcG9pbnQuXG4gICAgICovXG4gICAgZXF1YWxzKHBvaW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvdyA9PT0gcG9pbnQucm93ICYmIHRoaXMuY29sdW1uID09PSBwb2ludC5jb2x1bW47XG4gICAgfVxufVxuZXhwb3J0cy5Qb2ludCA9IFBvaW50O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlJhbmdlID0gdm9pZCAwO1xuLyoqXG4gKiBBIGBSYW5nZWAgb2JqZWN0IHJlcHJlc2VudHMgYSByYW5nZSBpbiB0aGUgdGV4dCBlZGl0b3IuXG4gKi9cbmNsYXNzIFJhbmdlIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGBSYW5nZWAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHN0YXJ0IC0gVGhlIHN0YXJ0IHBvaW50IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0gZW5kIC0gVGhlIGVuZCBwb2ludCBvZiB0aGUgcmFuZ2UuXG4gICAgICovXG4gICAgY29uc3RydWN0b3Ioc3RhcnQsIGVuZCkge1xuICAgICAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gICAgICAgIHRoaXMuZW5kID0gZW5kO1xuICAgIH1cbn1cbmV4cG9ydHMuUmFuZ2UgPSBSYW5nZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Gb2N1cyA9IHZvaWQgMDtcbi8qKlxuICogQSBgRm9jdXNgIG9iamVjdCByZXByZXNlbnRzIHdoaWNoIGNlbGwgaXMgZm9jdXNlZCBpbiB0aGUgdGFibGUuXG4gKlxuICogTm90ZSB0aGF0IGByb3dgIGFuZCBgY29sdW1uYCBwcm9wZXJ0aWVzIHNwZWNpZml5IGEgY2VsbCdzIHBvc2l0aW9uIGluIHRoZVxuICogdGFibGUsIG5vdCB0aGUgY3Vyc29yJ3MgcG9zaXRpb24gaW4gdGhlIHRleHQgZWRpdG9yIGFzIHtAbGluayBQb2ludH0gY2xhc3MuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuY2xhc3MgRm9jdXMge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgYEZvY3VzYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm93IC0gUm93IG9mIHRoZSBmb2N1c2VkIGNlbGwuXG4gICAgICogQHBhcmFtIGNvbHVtbiAtIENvbHVtbiBvZiB0aGUgZm9jdXNlZCBjZWxsLlxuICAgICAqIEBwYXJhbSBvZmZzZXQgLSBSYXcgb2Zmc2V0IGluIHRoZSBjZWxsLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHJvdywgY29sdW1uLCBvZmZzZXQpIHtcbiAgICAgICAgdGhpcy5yb3cgPSByb3c7XG4gICAgICAgIHRoaXMuY29sdW1uID0gY29sdW1uO1xuICAgICAgICB0aGlzLm9mZnNldCA9IG9mZnNldDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHR3byBmb2N1c2VzIHBvaW50IHRoZSBzYW1lIGNlbGwuXG4gICAgICogT2Zmc2V0cyBhcmUgaWdub3JlZC5cbiAgICAgKi9cbiAgICBwb3NFcXVhbHMoZm9jdXMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm93ID09PSBmb2N1cy5yb3cgJiYgdGhpcy5jb2x1bW4gPT09IGZvY3VzLmNvbHVtbjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNvcHkgb2YgdGhlIGZvY3VzIG9iamVjdCBieSBzZXR0aW5nIGl0cyByb3cgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByb3cgLSBSb3cgb2YgdGhlIGZvY3VzZWQgY2VsbC5cbiAgICAgKiBAcmV0dXJucyBBIG5ldyBmb2N1cyBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIHJvdy5cbiAgICAgKi9cbiAgICBzZXRSb3cocm93KSB7XG4gICAgICAgIHJldHVybiBuZXcgRm9jdXMocm93LCB0aGlzLmNvbHVtbiwgdGhpcy5vZmZzZXQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY29weSBvZiB0aGUgZm9jdXMgb2JqZWN0IGJ5IHNldHRpbmcgaXRzIGNvbHVtbiB0byB0aGUgc3BlY2lmaWVkIHZhbHVlLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbHVtbiAtIENvbHVtbiBvZiB0aGUgZm9jdXNlZCBjZWxsLlxuICAgICAqIEByZXR1cm5zIEEgbmV3IGZvY3VzIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQgY29sdW1uLlxuICAgICAqL1xuICAgIHNldENvbHVtbihjb2x1bW4pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBGb2N1cyh0aGlzLnJvdywgY29sdW1uLCB0aGlzLm9mZnNldCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjb3B5IG9mIHRoZSBmb2N1cyBvYmplY3QgYnkgc2V0dGluZyBpdHMgb2Zmc2V0IHRvIHRoZSBzcGVjaWZpZWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb2Zmc2V0IC0gT2Zmc2V0IGluIHRoZSBmb2N1c2VkIGNlbGwuXG4gICAgICogQHJldHVybnMgQSBuZXcgZm9jdXMgb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBvZmZzZXQuXG4gICAgICovXG4gICAgc2V0T2Zmc2V0KG9mZnNldCkge1xuICAgICAgICByZXR1cm4gbmV3IEZvY3VzKHRoaXMucm93LCB0aGlzLmNvbHVtbiwgb2Zmc2V0KTtcbiAgICB9XG59XG5leHBvcnRzLkZvY3VzID0gRm9jdXM7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuSGVhZGVyQWxpZ25tZW50ID0gZXhwb3J0cy5EZWZhdWx0QWxpZ25tZW50ID0gZXhwb3J0cy5BbGlnbm1lbnQgPSB2b2lkIDA7XG4vKipcbiAqIFJlcHJlc2VudHMgY29sdW1uIGFsaWdubWVudC5cbiAqXG4gKiAtIGBBbGlnbm1lbnQuTk9ORWAgLSBVc2UgZGVmYXVsdCBhbGlnbm1lbnQuXG4gKiAtIGBBbGlnbm1lbnQuTEVGVGAgLSBBbGlnbiBsZWZ0LlxuICogLSBgQWxpZ25tZW50LlJJR0hUYCAtIEFsaWduIHJpZ2h0LlxuICogLSBgQWxpZ25tZW50LkNFTlRFUmAgLSBBbGlnbiBjZW50ZXIuXG4gKlxuICovXG52YXIgQWxpZ25tZW50O1xuKGZ1bmN0aW9uIChBbGlnbm1lbnQpIHtcbiAgICBBbGlnbm1lbnRbXCJOT05FXCJdID0gXCJub25lXCI7XG4gICAgQWxpZ25tZW50W1wiTEVGVFwiXSA9IFwibGVmdFwiO1xuICAgIEFsaWdubWVudFtcIlJJR0hUXCJdID0gXCJyaWdodFwiO1xuICAgIEFsaWdubWVudFtcIkNFTlRFUlwiXSA9IFwiY2VudGVyXCI7XG59KShBbGlnbm1lbnQgfHwgKGV4cG9ydHMuQWxpZ25tZW50ID0gQWxpZ25tZW50ID0ge30pKTtcbi8qKlxuICogUmVwcmVzZW50cyBkZWZhdWx0IGNvbHVtbiBhbGlnbm1lbnRcbiAqXG4gKiAtIGBEZWZhdWx0QWxpZ25tZW50LkxFRlRgIC0gQWxpZ24gbGVmdC5cbiAqIC0gYERlZmF1bHRBbGlnbm1lbnQuUklHSFRgIC0gQWxpZ24gcmlnaHQuXG4gKiAtIGBEZWZhdWx0QWxpZ25tZW50LkNFTlRFUmAgLSBBbGlnbiBjZW50ZXIuXG4gKlxuICovXG52YXIgRGVmYXVsdEFsaWdubWVudDtcbihmdW5jdGlvbiAoRGVmYXVsdEFsaWdubWVudCkge1xuICAgIERlZmF1bHRBbGlnbm1lbnRbXCJMRUZUXCJdID0gXCJsZWZ0XCI7XG4gICAgRGVmYXVsdEFsaWdubWVudFtcIlJJR0hUXCJdID0gXCJyaWdodFwiO1xuICAgIERlZmF1bHRBbGlnbm1lbnRbXCJDRU5URVJcIl0gPSBcImNlbnRlclwiO1xufSkoRGVmYXVsdEFsaWdubWVudCB8fCAoZXhwb3J0cy5EZWZhdWx0QWxpZ25tZW50ID0gRGVmYXVsdEFsaWdubWVudCA9IHt9KSk7XG4vKipcbiAqIFJlcHJlc2VudHMgYWxpZ25tZW50IG9mIGhlYWRlciBjZWxscy5cbiAqXG4gKiAtIGBIZWFkZXJBbGlnbm1lbnQuRk9MTE9XYCAtIEZvbGxvdyBjb2x1bW4ncyBhbGlnbm1lbnQuXG4gKiAtIGBIZWFkZXJBbGlnbm1lbnQuTEVGVGAgLSBBbGlnbiBsZWZ0LlxuICogLSBgSGVhZGVyQWxpZ25tZW50LlJJR0hUYCAtIEFsaWduIHJpZ2h0LlxuICogLSBgSGVhZGVyQWxpZ25tZW50LkNFTlRFUmAgLSBBbGlnbiBjZW50ZXIuXG4gKlxuICovXG52YXIgSGVhZGVyQWxpZ25tZW50O1xuKGZ1bmN0aW9uIChIZWFkZXJBbGlnbm1lbnQpIHtcbiAgICBIZWFkZXJBbGlnbm1lbnRbXCJGT0xMT1dcIl0gPSBcImZvbGxvd1wiO1xuICAgIEhlYWRlckFsaWdubWVudFtcIkxFRlRcIl0gPSBcImxlZnRcIjtcbiAgICBIZWFkZXJBbGlnbm1lbnRbXCJSSUdIVFwiXSA9IFwicmlnaHRcIjtcbiAgICBIZWFkZXJBbGlnbm1lbnRbXCJDRU5URVJcIl0gPSBcImNlbnRlclwiO1xufSkoSGVhZGVyQWxpZ25tZW50IHx8IChleHBvcnRzLkhlYWRlckFsaWdubWVudCA9IEhlYWRlckFsaWdubWVudCA9IHt9KSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVGFibGVDZWxsID0gdm9pZCAwO1xuY29uc3QgYWxpZ25tZW50XzEgPSByZXF1aXJlKFwiLi9hbGlnbm1lbnRcIik7XG4vKipcbiAqIEEgYFRhYmxlQ2VsbGAgb2JqZWN0IHJlcHJlc2VudHMgYSB0YWJsZSBjZWxsLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmNsYXNzIFRhYmxlQ2VsbCB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBgVGFibGVDZWxsYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmF3Q29udGVudCAtIFJhdyBjb250ZW50IG9mIHRoZSBjZWxsLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHJhd0NvbnRlbnQpIHtcbiAgICAgICAgdGhpcy5yYXdDb250ZW50ID0gcmF3Q29udGVudDtcbiAgICAgICAgdGhpcy5jb250ZW50ID0gcmF3Q29udGVudC50cmltKCk7XG4gICAgICAgIHRoaXMucGFkZGluZ0xlZnQgPVxuICAgICAgICAgICAgdGhpcy5jb250ZW50ID09PSAnJ1xuICAgICAgICAgICAgICAgID8gdGhpcy5yYXdDb250ZW50ID09PSAnJ1xuICAgICAgICAgICAgICAgICAgICA/IDBcbiAgICAgICAgICAgICAgICAgICAgOiAxXG4gICAgICAgICAgICAgICAgOiB0aGlzLnJhd0NvbnRlbnQubGVuZ3RoIC0gdGhpcy5yYXdDb250ZW50LnRyaW1MZWZ0KCkubGVuZ3RoO1xuICAgICAgICB0aGlzLnBhZGRpbmdSaWdodCA9XG4gICAgICAgICAgICB0aGlzLnJhd0NvbnRlbnQubGVuZ3RoIC0gdGhpcy5jb250ZW50Lmxlbmd0aCAtIHRoaXMucGFkZGluZ0xlZnQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbnZlcnMgdGhlIGNlbGwgdG8gYSB0ZXh0IHJlcHJlc2VudGF0aW9uLlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIHJhdyBjb250ZW50IG9mIHRoZSBjZWxsLlxuICAgICAqL1xuICAgIHRvVGV4dCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmF3Q29udGVudDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBjZWxsIGlzIGEgZGVsaW1pdGVyIGkuZS4gaXQgb25seSBjb250YWlucyBoeXBoZW5zIGAtYCB3aXRoIG9wdGlvbmFsIG9uZVxuICAgICAqIGxlYWRpbmcgYW5kIHRyYWlsaW5nIGNvbG9ucyBgOmAuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGNlbGwgaXMgYSBkZWxpbWl0ZXIuXG4gICAgICovXG4gICAgaXNEZWxpbWl0ZXIoKSB7XG4gICAgICAgIHJldHVybiAvXlxccyo6Py0rOj9cXHMqJC8udGVzdCh0aGlzLnJhd0NvbnRlbnQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBhbGlnbm1lbnQgdGhlIGNlbGwgcmVwcmVzZW50cy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBhbGlnbm1lbnQgdGhlIGNlbGwgcmVwcmVzZW50czsgYHVuZGVmaW5lZGAgaWYgdGhlIGNlbGwgaXMgbm90IGEgZGVsaW1pdGVyLlxuICAgICAqL1xuICAgIGdldEFsaWdubWVudCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRGVsaW1pdGVyKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY29udGVudFswXSA9PT0gJzonKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jb250ZW50W3RoaXMuY29udGVudC5sZW5ndGggLSAxXSA9PT0gJzonKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFsaWdubWVudF8xLkFsaWdubWVudC5DRU5URVI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYWxpZ25tZW50XzEuQWxpZ25tZW50LkxFRlQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY29udGVudFt0aGlzLmNvbnRlbnQubGVuZ3RoIC0gMV0gPT09ICc6Jykge1xuICAgICAgICAgICAgcmV0dXJuIGFsaWdubWVudF8xLkFsaWdubWVudC5SSUdIVDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWxpZ25tZW50XzEuQWxpZ25tZW50Lk5PTkU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGEgcmVsYXRpdmUgcG9zaXRpb24gaW4gdGhlIHRyaW1tZWQgY29udGVudCBmcm9tIHRoYXQgaW4gdGhlIHJhdyBjb250ZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIHJhd09mZnNldCAtIFJlbGF0aXZlIHBvc2l0aW9uIGluIHRoZSByYXcgY29udGVudC5cbiAgICAgKiBAcmV0dXJucyAtIFJlbGF0aXZlIHBvc2l0aW9uIGluIHRoZSB0cmltbWVkIGNvbnRlbnQuXG4gICAgICovXG4gICAgY29tcHV0ZUNvbnRlbnRPZmZzZXQocmF3T2Zmc2V0KSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnQgPT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmF3T2Zmc2V0IDwgdGhpcy5wYWRkaW5nTGVmdCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJhd09mZnNldCA8IHRoaXMucGFkZGluZ0xlZnQgKyB0aGlzLmNvbnRlbnQubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gcmF3T2Zmc2V0IC0gdGhpcy5wYWRkaW5nTGVmdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50Lmxlbmd0aDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYSByZWxhdGl2ZSBwb3NpdGlvbiBpbiB0aGUgcmF3IGNvbnRlbnQgZnJvbSB0aGF0IGluIHRoZSB0cmltbWVkIGNvbnRlbnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udGVudE9mZnNldCAtIFJlbGF0aXZlIHBvc2l0aW9uIGluIHRoZSB0cmltbWVkIGNvbnRlbnQuXG4gICAgICogQHJldHVybnMgLSBSZWxhdGl2ZSBwb3NpdGlvbiBpbiB0aGUgcmF3IGNvbnRlbnQuXG4gICAgICovXG4gICAgY29tcHV0ZVJhd09mZnNldChjb250ZW50T2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiBjb250ZW50T2Zmc2V0ICsgdGhpcy5wYWRkaW5nTGVmdDtcbiAgICB9XG59XG5leHBvcnRzLlRhYmxlQ2VsbCA9IFRhYmxlQ2VsbDtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5UYWJsZVJvdyA9IHZvaWQgMDtcbmNvbnN0IHRhYmxlX2NlbGxfMSA9IHJlcXVpcmUoXCIuL3RhYmxlLWNlbGxcIik7XG4vKipcbiAqIEEgYFRhYmxlUm93YCBvYmplY3QgcmVwcmVzZW50cyBhIHRhYmxlIHJvdy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5jbGFzcyBUYWJsZVJvdyB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBgVGFibGVSb3dgIG9iamVjLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNlbGxzIC0gQ2VsbHMgdGhhdCB0aGUgcm93IGNvbnRhaW5zLlxuICAgICAqIEBwYXJhbSBtYXJnaW5MZWZ0IC0gTWFyZ2luIHN0cmluZyBhdCB0aGUgbGVmdCBvZiB0aGUgcm93LlxuICAgICAqIEBwYXJhbSBtYXJnaW5SaWdodCAtIE1hcmdpbiBzdHJpbmcgYXQgdGhlIHJpZ2h0IG9mIHRoZSByb3cuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoY2VsbHMsIG1hcmdpbkxlZnQsIG1hcmdpblJpZ2h0KSB7XG4gICAgICAgIHRoaXMuX2NlbGxzID0gY2VsbHMuc2xpY2UoKTtcbiAgICAgICAgdGhpcy5tYXJnaW5MZWZ0ID0gbWFyZ2luTGVmdDtcbiAgICAgICAgdGhpcy5tYXJnaW5SaWdodCA9IG1hcmdpblJpZ2h0O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBudW1iZXIgb2YgdGhlIGNlbGxzIGluIHRoZSByb3cuXG4gICAgICovXG4gICAgZ2V0V2lkdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jZWxscy5sZW5ndGg7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGNlbGxzIHRoYXQgdGhlIHJvdyBjb250YWlucy5cbiAgICAgKi9cbiAgICBnZXRDZWxscygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NlbGxzLnNsaWNlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldHMgYSBjZWxsIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaW5kZXggLSBJbmRleC5cbiAgICAgKiBAcmV0dXJucyBUaGUgY2VsbCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4IGlmIGV4aXN0czsgYHVuZGVmaW5lZGAgaWYgbm8gY2VsbCBpcyBmb3VuZC5cbiAgICAgKi9cbiAgICBnZXRDZWxsQXQoaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NlbGxzW2luZGV4XTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyBhIGNlbGwgaW4gdGhlIHJvdyB0byBhIG5ldyB2YWx1ZSwgcmV0dXJuaW5nIGEgY29weSBvZiB0aGUgcm93XG4gICAgICogd2l0aCB0aGUgbW9kaWZpZWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBJZiBhbiBpbnZhbGlkIGluZGV4IGlzIHByb3ZpZGVkLCB0aGUgcm93IHdpbGwgYmUgdW5jaGFuZ2VkLlxuICAgICAqL1xuICAgIHNldENlbGxBdChpbmRleCwgdmFsdWUpIHtcbiAgICAgICAgY29uc3QgY2VsbHMgPSB0aGlzLmdldENlbGxzKCk7IC8vIGEgY29weVxuICAgICAgICBjZWxsc1tpbmRleF0gPSBuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbCh2YWx1ZSk7XG4gICAgICAgIHJldHVybiBuZXcgVGFibGVSb3coY2VsbHMsIHRoaXMubWFyZ2luTGVmdCwgdGhpcy5tYXJnaW5SaWdodCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbnZlcnMgdGhlIHJvdyB0byBhIHRleHQgcmVwcmVzZW50YXRpb24uXG4gICAgICovXG4gICAgdG9UZXh0KCkge1xuICAgICAgICBpZiAodGhpcy5fY2VsbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXJnaW5MZWZ0O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNlbGxzID0gdGhpcy5fY2VsbHMubWFwKChjZWxsKSA9PiBjZWxsLnRvVGV4dCgpKS5qb2luKCd8Jyk7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLm1hcmdpbkxlZnR9fCR7Y2VsbHN9fCR7dGhpcy5tYXJnaW5SaWdodH1gO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIHJvdyBpcyBhIGRlbGltaXRlciBvciBub3QuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHJvdyBpcyBhIGRlbGltaXRlciBpLmUuIGFsbCB0aGUgY2VsbHMgY29udGFpbmVkIGFyZSBkZWxpbWl0ZXJzLlxuICAgICAqL1xuICAgIGlzRGVsaW1pdGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2VsbHMuZXZlcnkoKGNlbGwpID0+IGNlbGwuaXNEZWxpbWl0ZXIoKSk7XG4gICAgfVxufVxuZXhwb3J0cy5UYWJsZVJvdyA9IFRhYmxlUm93O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIFJldHJpZXZlZCBmcm9tXG4gKiAgIGh0dHBzOi8vZ2l0aHViLmNvbS9zdXBlcm1hY3JvL25ldmVydGhyb3dcbiAqXG4gKiBNSVQgTGljZW5zZVxuICogQ29weXJpZ2h0IChjKSAyMDE5IEdpb3JnaW8gRGVsZ2Fkb1xuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkVyciA9IGV4cG9ydHMuT2sgPSBleHBvcnRzLmVyciA9IGV4cG9ydHMub2sgPSB2b2lkIDA7XG5jb25zdCBvayA9ICh2YWx1ZSkgPT4gbmV3IE9rKHZhbHVlKTtcbmV4cG9ydHMub2sgPSBvaztcbmNvbnN0IGVyciA9IChlcnIpID0+IG5ldyBFcnIoZXJyKTtcbmV4cG9ydHMuZXJyID0gZXJyO1xuY2xhc3MgT2sge1xuICAgIGNvbnN0cnVjdG9yKHZhbHVlKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5tYXRjaCA9IChvaywgX2VycikgPT4gb2sodGhpcy52YWx1ZSk7XG4gICAgfVxuICAgIGlzT2soKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpc0VycigpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzT2soKTtcbiAgICB9XG4gICAgbWFwKGYpIHtcbiAgICAgICAgcmV0dXJuICgwLCBleHBvcnRzLm9rKShmKHRoaXMudmFsdWUpKTtcbiAgICB9XG4gICAgbWFwRXJyKF9mKSB7XG4gICAgICAgIHJldHVybiAoMCwgZXhwb3J0cy5vaykodGhpcy52YWx1ZSk7XG4gICAgfVxuICAgIC8vIGFkZCBpbmZvIG9uIGhvdyB0aGlzIGlzIHJlYWxseSB1c2VmdWwgZm9yIGNvbnZlcnRpbmcgYVxuICAgIC8vIFJlc3VsdDxSZXN1bHQ8VCwgRTI+LCBFMT5cbiAgICAvLyBpbnRvIGEgUmVzdWx0PFQsIEUyPlxuICAgIGFuZFRoZW4oZikge1xuICAgICAgICByZXR1cm4gZih0aGlzLnZhbHVlKTtcbiAgICB9XG4gICAgdW53cmFwT3IoX3YpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICAgIF91bnNhZmVVbndyYXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cbiAgICBfdW5zYWZlVW53cmFwRXJyKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhbGxlZCBgX3Vuc2FmZVVud3JhcEVycmAgb24gYW4gT2snKTtcbiAgICB9XG59XG5leHBvcnRzLk9rID0gT2s7XG5jbGFzcyBFcnIge1xuICAgIGNvbnN0cnVjdG9yKGVycm9yKSB7XG4gICAgICAgIHRoaXMuZXJyb3IgPSBlcnJvcjtcbiAgICAgICAgdGhpcy5tYXRjaCA9IChfb2ssIGVycikgPT4gZXJyKHRoaXMuZXJyb3IpO1xuICAgIH1cbiAgICBpc09rKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlzRXJyKCkge1xuICAgICAgICByZXR1cm4gIXRoaXMuaXNPaygpO1xuICAgIH1cbiAgICBtYXAoX2YpIHtcbiAgICAgICAgcmV0dXJuICgwLCBleHBvcnRzLmVycikodGhpcy5lcnJvcik7XG4gICAgfVxuICAgIG1hcEVycihmKSB7XG4gICAgICAgIHJldHVybiAoMCwgZXhwb3J0cy5lcnIpKGYodGhpcy5lcnJvcikpO1xuICAgIH1cbiAgICBhbmRUaGVuKF9mKSB7XG4gICAgICAgIHJldHVybiAoMCwgZXhwb3J0cy5lcnIpKHRoaXMuZXJyb3IpO1xuICAgIH1cbiAgICB1bndyYXBPcih2KSB7XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cbiAgICBfdW5zYWZlVW53cmFwKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhbGxlZCBgX3Vuc2FmZVVud3JhcGAgb24gYW4gRXJyJyk7XG4gICAgfVxuICAgIF91bnNhZmVVbndyYXBFcnIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yO1xuICAgIH1cbn1cbmV4cG9ydHMuRXJyID0gRXJyO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnByZXR0eVByaW50QVNUID0gZXhwb3J0cy5jaGVja0NoaWxkTGVuZ3RoID0gZXhwb3J0cy5jaGVja1R5cGUgPSBleHBvcnRzLmVyclJlbGF0aXZlUmVmZXJlbmNlSW5kZXggPSBleHBvcnRzLmVyckluZGV4MCA9IHZvaWQgMDtcbmV4cG9ydHMuZXJySW5kZXgwID0gbmV3IEVycm9yKCdJbmRleCAwIHVzZWQgdG8gY3JlYXRlIGEgcmVmZXJlbmNlJyk7XG5leHBvcnRzLmVyclJlbGF0aXZlUmVmZXJlbmNlSW5kZXggPSBuZXcgRXJyb3IoJ0NhbiBub3QgdXNlIHJlbGF0aXZlIHJlZmVyZW5jZSB3aGVyZSBhYnNvbHV0ZSByZWZlcmVuY2UgaXMgcmVxdWlyZWQnKTtcbmNvbnN0IGNoZWNrVHlwZSA9IChhc3QsIC4uLmV4cGVjdGVkVHlwZXMpID0+IHtcbiAgICBpZiAoZXhwZWN0ZWRUeXBlcy5pbmRleE9mKGFzdC50eXBlKSA+PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBFcnJvcihgRm9ybXVsYSBlbGVtZW50ICcke2FzdC50ZXh0fScgaXMgYSAke2FzdC50eXBlfSBidXQgZXhwZWN0ZWQgYCArXG4gICAgICAgIGBvbmUgb2YgJHtleHBlY3RlZFR5cGVzfSBpbiB0aGlzIHBvc2l0aW9uLmApO1xufTtcbmV4cG9ydHMuY2hlY2tUeXBlID0gY2hlY2tUeXBlO1xuY29uc3QgY2hlY2tDaGlsZExlbmd0aCA9IChhc3QsIGxlbikgPT4ge1xuICAgIGlmIChhc3QuY2hpbGRyZW4ubGVuZ3RoID09PSBsZW4pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEVycm9yKGBGb3JtdWxhIGVsZW1lbnQgJyR7YXN0LnRleHR9JyB3YXMgZXhwZWN0ZWQgdG8gaGF2ZSAke2xlbn0gYCArXG4gICAgICAgIGBlbGVtZW50cywgYnV0IGhhZCAke2FzdC5jaGlsZHJlbi5sZW5ndGh9YCk7XG59O1xuZXhwb3J0cy5jaGVja0NoaWxkTGVuZ3RoID0gY2hlY2tDaGlsZExlbmd0aDtcbmNvbnN0IHByZXR0eVByaW50QVNUID0gKHRva2VuLCBsZXZlbCA9IDApID0+IHtcbiAgICBjb25zb2xlLmxvZygnICAnLnJlcGVhdChsZXZlbCkgK1xuICAgICAgICBgfC0ke3Rva2VuLnR5cGV9JHt0b2tlbi5jaGlsZHJlbi5sZW5ndGggPT09IDAgPyAnPScgKyB0b2tlbi50ZXh0IDogJyd9YCk7XG4gICAgaWYgKHRva2VuLmNoaWxkcmVuKSB7XG4gICAgICAgIHRva2VuLmNoaWxkcmVuLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgICgwLCBleHBvcnRzLnByZXR0eVByaW50QVNUKShjLCBsZXZlbCArIDEpO1xuICAgICAgICB9KTtcbiAgICB9XG59O1xuZXhwb3J0cy5wcmV0dHlQcmludEFTVCA9IHByZXR0eVByaW50QVNUO1xuIiwiOyhmdW5jdGlvbiAoZ2xvYmFsU2NvcGUpIHtcclxuICAndXNlIHN0cmljdCc7XHJcblxyXG5cclxuICAvKiFcclxuICAgKiAgZGVjaW1hbC5qcyB2MTAuNC4zXHJcbiAgICogIEFuIGFyYml0cmFyeS1wcmVjaXNpb24gRGVjaW1hbCB0eXBlIGZvciBKYXZhU2NyaXB0LlxyXG4gICAqICBodHRwczovL2dpdGh1Yi5jb20vTWlrZU1jbC9kZWNpbWFsLmpzXHJcbiAgICogIENvcHlyaWdodCAoYykgMjAyMiBNaWNoYWVsIE1jbGF1Z2hsaW4gPE04Y2g4OGxAZ21haWwuY29tPlxyXG4gICAqICBNSVQgTGljZW5jZVxyXG4gICAqL1xyXG5cclxuXHJcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIEVESVRBQkxFIERFRkFVTFRTICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cclxuXHJcblxyXG4gICAgLy8gVGhlIG1heGltdW0gZXhwb25lbnQgbWFnbml0dWRlLlxyXG4gICAgLy8gVGhlIGxpbWl0IG9uIHRoZSB2YWx1ZSBvZiBgdG9FeHBOZWdgLCBgdG9FeHBQb3NgLCBgbWluRWAgYW5kIGBtYXhFYC5cclxuICB2YXIgRVhQX0xJTUlUID0gOWUxNSwgICAgICAgICAgICAgICAgICAgICAgLy8gMCB0byA5ZTE1XHJcblxyXG4gICAgLy8gVGhlIGxpbWl0IG9uIHRoZSB2YWx1ZSBvZiBgcHJlY2lzaW9uYCwgYW5kIG9uIHRoZSB2YWx1ZSBvZiB0aGUgZmlyc3QgYXJndW1lbnQgdG9cclxuICAgIC8vIGB0b0RlY2ltYWxQbGFjZXNgLCBgdG9FeHBvbmVudGlhbGAsIGB0b0ZpeGVkYCwgYHRvUHJlY2lzaW9uYCBhbmQgYHRvU2lnbmlmaWNhbnREaWdpdHNgLlxyXG4gICAgTUFYX0RJR0lUUyA9IDFlOSwgICAgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIDFlOVxyXG5cclxuICAgIC8vIEJhc2UgY29udmVyc2lvbiBhbHBoYWJldC5cclxuICAgIE5VTUVSQUxTID0gJzAxMjM0NTY3ODlhYmNkZWYnLFxyXG5cclxuICAgIC8vIFRoZSBuYXR1cmFsIGxvZ2FyaXRobSBvZiAxMCAoMTAyNSBkaWdpdHMpLlxyXG4gICAgTE4xMCA9ICcyLjMwMjU4NTA5Mjk5NDA0NTY4NDAxNzk5MTQ1NDY4NDM2NDIwNzYwMTEwMTQ4ODYyODc3Mjk3NjAzMzMyNzkwMDk2NzU3MjYwOTY3NzM1MjQ4MDIzNTk5NzIwNTA4OTU5ODI5ODM0MTk2Nzc4NDA0MjI4NjI0ODYzMzQwOTUyNTQ2NTA4MjgwNjc1NjY2NjI4NzM2OTA5ODc4MTY4OTQ4MjkwNzIwODMyNTU1NDY4MDg0Mzc5OTg5NDgyNjIzMzE5ODUyODM5MzUwNTMwODk2NTM3NzczMjYyODg0NjE2MzM2NjIyMjI4NzY5ODIxOTg4Njc0NjU0MzY2NzQ3NDQwNDI0MzI3NDM2NTE1NTA0ODkzNDMxNDkzOTM5MTQ3OTYxOTQwNDQwMDIyMjEwNTEwMTcxNDE3NDgwMDM2ODgwODQwMTI2NDcwODA2ODU1Njc3NDMyMTYyMjgzNTUyMjAxMTQ4MDQ2NjM3MTU2NTkxMjEzNzM0NTA3NDc4NTY5NDc2ODM0NjM2MTY3OTIxMDE4MDY0NDUwNzA2NDgwMDAyNzc1MDI2ODQ5MTY3NDY1NTA1ODY4NTY5MzU2NzM0MjA2NzA1ODExMzY0MjkyMjQ1NTQ0MDU3NTg5MjU3MjQyMDgyNDEzMTQ2OTU2ODkwMTY3NTg5NDAyNTY3NzYzMTEzNTY5MTkyOTIwMzMzNzY1ODcxNDE2NjAyMzAxMDU3MDMwODk2MzQ1NzIwNzU0NDAzNzA4NDc0Njk5NDAxNjgyNjkyODI4MDg0ODExODQyODkzMTQ4NDg1MjQ5NDg2NDQ4NzE5Mjc4MDk2NzYyNzEyNzU3NzUzOTcwMjc2Njg2MDU5NTI0OTY3MTY2NzQxODM0ODU3MDQ0MjI1MDcxOTc5NjUwMDQ3MTQ5NTEwNTA0OTIyMTQ3NzY1Njc2MzY5Mzg2NjI5NzY5Nzk1MjIxMTA3MTgyNjQ1NDk3MzQ3NzI2NjI0MjU3MDk0MjkzMjI1ODI3OTg1MDI1ODU1MDk3ODUyNjUzODMyMDc2MDY3MjYzMTcxNjQzMDk1MDU5OTUwODc4MDc1MjM3MTAzMzMxMDExOTc4NTc1NDczMzE1NDE0MjE4MDg0Mjc1NDM4NjM1OTE3NzgxMTcwNTQzMDk4Mjc0ODIzODUwNDU2NDgwMTkwOTU2MTAyOTkyOTE4MjQzMTgyMzc1MjUzNTc3MDk3NTA1Mzk1NjUxODc2OTc1MTAzNzQ5NzA4ODg2OTIxODAyMDUxODkzMzk1MDcyMzg1MzkyMDUxNDQ2MzQxOTcyNjUyODcyODY5NjUxMTA4NjI1NzE0OTIxOTg4NDk5Nzg3NDg4NzM3NzEzNDU2ODYyMDkxNjcwNTgnLFxyXG5cclxuICAgIC8vIFBpICgxMDI1IGRpZ2l0cykuXHJcbiAgICBQSSA9ICczLjE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MzM4MzI3OTUwMjg4NDE5NzE2OTM5OTM3NTEwNTgyMDk3NDk0NDU5MjMwNzgxNjQwNjI4NjIwODk5ODYyODAzNDgyNTM0MjExNzA2Nzk4MjE0ODA4NjUxMzI4MjMwNjY0NzA5Mzg0NDYwOTU1MDU4MjIzMTcyNTM1OTQwODEyODQ4MTExNzQ1MDI4NDEwMjcwMTkzODUyMTEwNTU1OTY0NDYyMjk0ODk1NDkzMDM4MTk2NDQyODgxMDk3NTY2NTkzMzQ0NjEyODQ3NTY0ODIzMzc4Njc4MzE2NTI3MTIwMTkwOTE0NTY0ODU2NjkyMzQ2MDM0ODYxMDQ1NDMyNjY0ODIxMzM5MzYwNzI2MDI0OTE0MTI3MzcyNDU4NzAwNjYwNjMxNTU4ODE3NDg4MTUyMDkyMDk2MjgyOTI1NDA5MTcxNTM2NDM2Nzg5MjU5MDM2MDAxMTMzMDUzMDU0ODgyMDQ2NjUyMTM4NDE0Njk1MTk0MTUxMTYwOTQzMzA1NzI3MDM2NTc1OTU5MTk1MzA5MjE4NjExNzM4MTkzMjYxMTc5MzEwNTExODU0ODA3NDQ2MjM3OTk2Mjc0OTU2NzM1MTg4NTc1MjcyNDg5MTIyNzkzODE4MzAxMTk0OTEyOTgzMzY3MzM2MjQ0MDY1NjY0MzA4NjAyMTM5NDk0NjM5NTIyNDczNzE5MDcwMjE3OTg2MDk0MzcwMjc3MDUzOTIxNzE3NjI5MzE3Njc1MjM4NDY3NDgxODQ2NzY2OTQwNTEzMjAwMDU2ODEyNzE0NTI2MzU2MDgyNzc4NTc3MTM0Mjc1Nzc4OTYwOTE3MzYzNzE3ODcyMTQ2ODQ0MDkwMTIyNDk1MzQzMDE0NjU0OTU4NTM3MTA1MDc5MjI3OTY4OTI1ODkyMzU0MjAxOTk1NjExMjEyOTAyMTk2MDg2NDAzNDQxODE1OTgxMzYyOTc3NDc3MTMwOTk2MDUxODcwNzIxMTM0OTk5OTk5ODM3Mjk3ODA0OTk1MTA1OTczMTczMjgxNjA5NjMxODU5NTAyNDQ1OTQ1NTM0NjkwODMwMjY0MjUyMjMwODI1MzM0NDY4NTAzNTI2MTkzMTE4ODE3MTAxMDAwMzEzNzgzODc1Mjg4NjU4NzUzMzIwODM4MTQyMDYxNzE3NzY2OTE0NzMwMzU5ODI1MzQ5MDQyODc1NTQ2ODczMTE1OTU2Mjg2Mzg4MjM1Mzc4NzU5Mzc1MTk1Nzc4MTg1Nzc4MDUzMjE3MTIyNjgwNjYxMzAwMTkyNzg3NjYxMTE5NTkwOTIxNjQyMDE5ODkzODA5NTI1NzIwMTA2NTQ4NTg2MzI3ODknLFxyXG5cclxuXHJcbiAgICAvLyBUaGUgaW5pdGlhbCBjb25maWd1cmF0aW9uIHByb3BlcnRpZXMgb2YgdGhlIERlY2ltYWwgY29uc3RydWN0b3IuXHJcbiAgICBERUZBVUxUUyA9IHtcclxuXHJcbiAgICAgIC8vIFRoZXNlIHZhbHVlcyBtdXN0IGJlIGludGVnZXJzIHdpdGhpbiB0aGUgc3RhdGVkIHJhbmdlcyAoaW5jbHVzaXZlKS5cclxuICAgICAgLy8gTW9zdCBvZiB0aGVzZSB2YWx1ZXMgY2FuIGJlIGNoYW5nZWQgYXQgcnVuLXRpbWUgdXNpbmcgdGhlIGBEZWNpbWFsLmNvbmZpZ2AgbWV0aG9kLlxyXG5cclxuICAgICAgLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cyBvZiB0aGUgcmVzdWx0IG9mIGEgY2FsY3VsYXRpb24gb3IgYmFzZSBjb252ZXJzaW9uLlxyXG4gICAgICAvLyBFLmcuIGBEZWNpbWFsLmNvbmZpZyh7IHByZWNpc2lvbjogMjAgfSk7YFxyXG4gICAgICBwcmVjaXNpb246IDIwLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxIHRvIE1BWF9ESUdJVFNcclxuXHJcbiAgICAgIC8vIFRoZSByb3VuZGluZyBtb2RlIHVzZWQgd2hlbiByb3VuZGluZyB0byBgcHJlY2lzaW9uYC5cclxuICAgICAgLy9cclxuICAgICAgLy8gUk9VTkRfVVAgICAgICAgICAwIEF3YXkgZnJvbSB6ZXJvLlxyXG4gICAgICAvLyBST1VORF9ET1dOICAgICAgIDEgVG93YXJkcyB6ZXJvLlxyXG4gICAgICAvLyBST1VORF9DRUlMICAgICAgIDIgVG93YXJkcyArSW5maW5pdHkuXHJcbiAgICAgIC8vIFJPVU5EX0ZMT09SICAgICAgMyBUb3dhcmRzIC1JbmZpbml0eS5cclxuICAgICAgLy8gUk9VTkRfSEFMRl9VUCAgICA0IFRvd2FyZHMgbmVhcmVzdCBuZWlnaGJvdXIuIElmIGVxdWlkaXN0YW50LCB1cC5cclxuICAgICAgLy8gUk9VTkRfSEFMRl9ET1dOICA1IFRvd2FyZHMgbmVhcmVzdCBuZWlnaGJvdXIuIElmIGVxdWlkaXN0YW50LCBkb3duLlxyXG4gICAgICAvLyBST1VORF9IQUxGX0VWRU4gIDYgVG93YXJkcyBuZWFyZXN0IG5laWdoYm91ci4gSWYgZXF1aWRpc3RhbnQsIHRvd2FyZHMgZXZlbiBuZWlnaGJvdXIuXHJcbiAgICAgIC8vIFJPVU5EX0hBTEZfQ0VJTCAgNyBUb3dhcmRzIG5lYXJlc3QgbmVpZ2hib3VyLiBJZiBlcXVpZGlzdGFudCwgdG93YXJkcyArSW5maW5pdHkuXHJcbiAgICAgIC8vIFJPVU5EX0hBTEZfRkxPT1IgOCBUb3dhcmRzIG5lYXJlc3QgbmVpZ2hib3VyLiBJZiBlcXVpZGlzdGFudCwgdG93YXJkcyAtSW5maW5pdHkuXHJcbiAgICAgIC8vXHJcbiAgICAgIC8vIEUuZy5cclxuICAgICAgLy8gYERlY2ltYWwucm91bmRpbmcgPSA0O2BcclxuICAgICAgLy8gYERlY2ltYWwucm91bmRpbmcgPSBEZWNpbWFsLlJPVU5EX0hBTEZfVVA7YFxyXG4gICAgICByb3VuZGluZzogNCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIDhcclxuXHJcbiAgICAgIC8vIFRoZSBtb2R1bG8gbW9kZSB1c2VkIHdoZW4gY2FsY3VsYXRpbmcgdGhlIG1vZHVsdXM6IGEgbW9kIG4uXHJcbiAgICAgIC8vIFRoZSBxdW90aWVudCAocSA9IGEgLyBuKSBpcyBjYWxjdWxhdGVkIGFjY29yZGluZyB0byB0aGUgY29ycmVzcG9uZGluZyByb3VuZGluZyBtb2RlLlxyXG4gICAgICAvLyBUaGUgcmVtYWluZGVyIChyKSBpcyBjYWxjdWxhdGVkIGFzOiByID0gYSAtIG4gKiBxLlxyXG4gICAgICAvL1xyXG4gICAgICAvLyBVUCAgICAgICAgIDAgVGhlIHJlbWFpbmRlciBpcyBwb3NpdGl2ZSBpZiB0aGUgZGl2aWRlbmQgaXMgbmVnYXRpdmUsIGVsc2UgaXMgbmVnYXRpdmUuXHJcbiAgICAgIC8vIERPV04gICAgICAgMSBUaGUgcmVtYWluZGVyIGhhcyB0aGUgc2FtZSBzaWduIGFzIHRoZSBkaXZpZGVuZCAoSmF2YVNjcmlwdCAlKS5cclxuICAgICAgLy8gRkxPT1IgICAgICAzIFRoZSByZW1haW5kZXIgaGFzIHRoZSBzYW1lIHNpZ24gYXMgdGhlIGRpdmlzb3IgKFB5dGhvbiAlKS5cclxuICAgICAgLy8gSEFMRl9FVkVOICA2IFRoZSBJRUVFIDc1NCByZW1haW5kZXIgZnVuY3Rpb24uXHJcbiAgICAgIC8vIEVVQ0xJRCAgICAgOSBFdWNsaWRpYW4gZGl2aXNpb24uIHEgPSBzaWduKG4pICogZmxvb3IoYSAvIGFicyhuKSkuIEFsd2F5cyBwb3NpdGl2ZS5cclxuICAgICAgLy9cclxuICAgICAgLy8gVHJ1bmNhdGVkIGRpdmlzaW9uICgxKSwgZmxvb3JlZCBkaXZpc2lvbiAoMyksIHRoZSBJRUVFIDc1NCByZW1haW5kZXIgKDYpLCBhbmQgRXVjbGlkaWFuXHJcbiAgICAgIC8vIGRpdmlzaW9uICg5KSBhcmUgY29tbW9ubHkgdXNlZCBmb3IgdGhlIG1vZHVsdXMgb3BlcmF0aW9uLiBUaGUgb3RoZXIgcm91bmRpbmcgbW9kZXMgY2FuIGFsc29cclxuICAgICAgLy8gYmUgdXNlZCwgYnV0IHRoZXkgbWF5IG5vdCBnaXZlIHVzZWZ1bCByZXN1bHRzLlxyXG4gICAgICBtb2R1bG86IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIDlcclxuXHJcbiAgICAgIC8vIFRoZSBleHBvbmVudCB2YWx1ZSBhdCBhbmQgYmVuZWF0aCB3aGljaCBgdG9TdHJpbmdgIHJldHVybnMgZXhwb25lbnRpYWwgbm90YXRpb24uXHJcbiAgICAgIC8vIEphdmFTY3JpcHQgbnVtYmVyczogLTdcclxuICAgICAgdG9FeHBOZWc6IC03LCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMCB0byAtRVhQX0xJTUlUXHJcblxyXG4gICAgICAvLyBUaGUgZXhwb25lbnQgdmFsdWUgYXQgYW5kIGFib3ZlIHdoaWNoIGB0b1N0cmluZ2AgcmV0dXJucyBleHBvbmVudGlhbCBub3RhdGlvbi5cclxuICAgICAgLy8gSmF2YVNjcmlwdCBudW1iZXJzOiAyMVxyXG4gICAgICB0b0V4cFBvczogIDIxLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIEVYUF9MSU1JVFxyXG5cclxuICAgICAgLy8gVGhlIG1pbmltdW0gZXhwb25lbnQgdmFsdWUsIGJlbmVhdGggd2hpY2ggdW5kZXJmbG93IHRvIHplcm8gb2NjdXJzLlxyXG4gICAgICAvLyBKYXZhU2NyaXB0IG51bWJlcnM6IC0zMjQgICg1ZS0zMjQpXHJcbiAgICAgIG1pbkU6IC1FWFBfTElNSVQsICAgICAgICAgICAgICAgICAgICAgIC8vIC0xIHRvIC1FWFBfTElNSVRcclxuXHJcbiAgICAgIC8vIFRoZSBtYXhpbXVtIGV4cG9uZW50IHZhbHVlLCBhYm92ZSB3aGljaCBvdmVyZmxvdyB0byBJbmZpbml0eSBvY2N1cnMuXHJcbiAgICAgIC8vIEphdmFTY3JpcHQgbnVtYmVyczogMzA4ICAoMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDgpXHJcbiAgICAgIG1heEU6IEVYUF9MSU1JVCwgICAgICAgICAgICAgICAgICAgICAgIC8vIDEgdG8gRVhQX0xJTUlUXHJcblxyXG4gICAgICAvLyBXaGV0aGVyIHRvIHVzZSBjcnlwdG9ncmFwaGljYWxseS1zZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uLCBpZiBhdmFpbGFibGUuXHJcbiAgICAgIGNyeXB0bzogZmFsc2UgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRydWUvZmFsc2VcclxuICAgIH0sXHJcblxyXG5cclxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFTkQgT0YgRURJVEFCTEUgREVGQVVMVFMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvL1xyXG5cclxuXHJcbiAgICBEZWNpbWFsLCBpbmV4YWN0LCBub0NvbmZsaWN0LCBxdWFkcmFudCxcclxuICAgIGV4dGVybmFsID0gdHJ1ZSxcclxuXHJcbiAgICBkZWNpbWFsRXJyb3IgPSAnW0RlY2ltYWxFcnJvcl0gJyxcclxuICAgIGludmFsaWRBcmd1bWVudCA9IGRlY2ltYWxFcnJvciArICdJbnZhbGlkIGFyZ3VtZW50OiAnLFxyXG4gICAgcHJlY2lzaW9uTGltaXRFeGNlZWRlZCA9IGRlY2ltYWxFcnJvciArICdQcmVjaXNpb24gbGltaXQgZXhjZWVkZWQnLFxyXG4gICAgY3J5cHRvVW5hdmFpbGFibGUgPSBkZWNpbWFsRXJyb3IgKyAnY3J5cHRvIHVuYXZhaWxhYmxlJyxcclxuICAgIHRhZyA9ICdbb2JqZWN0IERlY2ltYWxdJyxcclxuXHJcbiAgICBtYXRoZmxvb3IgPSBNYXRoLmZsb29yLFxyXG4gICAgbWF0aHBvdyA9IE1hdGgucG93LFxyXG5cclxuICAgIGlzQmluYXJ5ID0gL14wYihbMDFdKyhcXC5bMDFdKik/fFxcLlswMV0rKShwWystXT9cXGQrKT8kL2ksXHJcbiAgICBpc0hleCA9IC9eMHgoWzAtOWEtZl0rKFxcLlswLTlhLWZdKik/fFxcLlswLTlhLWZdKykocFsrLV0/XFxkKyk/JC9pLFxyXG4gICAgaXNPY3RhbCA9IC9eMG8oWzAtN10rKFxcLlswLTddKik/fFxcLlswLTddKykocFsrLV0/XFxkKyk/JC9pLFxyXG4gICAgaXNEZWNpbWFsID0gL14oXFxkKyhcXC5cXGQqKT98XFwuXFxkKykoZVsrLV0/XFxkKyk/JC9pLFxyXG5cclxuICAgIEJBU0UgPSAxZTcsXHJcbiAgICBMT0dfQkFTRSA9IDcsXHJcbiAgICBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MSxcclxuXHJcbiAgICBMTjEwX1BSRUNJU0lPTiA9IExOMTAubGVuZ3RoIC0gMSxcclxuICAgIFBJX1BSRUNJU0lPTiA9IFBJLmxlbmd0aCAtIDEsXHJcblxyXG4gICAgLy8gRGVjaW1hbC5wcm90b3R5cGUgb2JqZWN0XHJcbiAgICBQID0geyB0b1N0cmluZ1RhZzogdGFnIH07XHJcblxyXG5cclxuICAvLyBEZWNpbWFsIHByb3RvdHlwZSBtZXRob2RzXHJcblxyXG5cclxuICAvKlxyXG4gICAqICBhYnNvbHV0ZVZhbHVlICAgICAgICAgICAgIGFic1xyXG4gICAqICBjZWlsXHJcbiAgICogIGNsYW1wZWRUbyAgICAgICAgICAgICAgICAgY2xhbXBcclxuICAgKiAgY29tcGFyZWRUbyAgICAgICAgICAgICAgICBjbXBcclxuICAgKiAgY29zaW5lICAgICAgICAgICAgICAgICAgICBjb3NcclxuICAgKiAgY3ViZVJvb3QgICAgICAgICAgICAgICAgICBjYnJ0XHJcbiAgICogIGRlY2ltYWxQbGFjZXMgICAgICAgICAgICAgZHBcclxuICAgKiAgZGl2aWRlZEJ5ICAgICAgICAgICAgICAgICBkaXZcclxuICAgKiAgZGl2aWRlZFRvSW50ZWdlckJ5ICAgICAgICBkaXZUb0ludFxyXG4gICAqICBlcXVhbHMgICAgICAgICAgICAgICAgICAgIGVxXHJcbiAgICogIGZsb29yXHJcbiAgICogIGdyZWF0ZXJUaGFuICAgICAgICAgICAgICAgZ3RcclxuICAgKiAgZ3JlYXRlclRoYW5PckVxdWFsVG8gICAgICBndGVcclxuICAgKiAgaHlwZXJib2xpY0Nvc2luZSAgICAgICAgICBjb3NoXHJcbiAgICogIGh5cGVyYm9saWNTaW5lICAgICAgICAgICAgc2luaFxyXG4gICAqICBoeXBlcmJvbGljVGFuZ2VudCAgICAgICAgIHRhbmhcclxuICAgKiAgaW52ZXJzZUNvc2luZSAgICAgICAgICAgICBhY29zXHJcbiAgICogIGludmVyc2VIeXBlcmJvbGljQ29zaW5lICAgYWNvc2hcclxuICAgKiAgaW52ZXJzZUh5cGVyYm9saWNTaW5lICAgICBhc2luaFxyXG4gICAqICBpbnZlcnNlSHlwZXJib2xpY1RhbmdlbnQgIGF0YW5oXHJcbiAgICogIGludmVyc2VTaW5lICAgICAgICAgICAgICAgYXNpblxyXG4gICAqICBpbnZlcnNlVGFuZ2VudCAgICAgICAgICAgIGF0YW5cclxuICAgKiAgaXNGaW5pdGVcclxuICAgKiAgaXNJbnRlZ2VyICAgICAgICAgICAgICAgICBpc0ludFxyXG4gICAqICBpc05hTlxyXG4gICAqICBpc05lZ2F0aXZlICAgICAgICAgICAgICAgIGlzTmVnXHJcbiAgICogIGlzUG9zaXRpdmUgICAgICAgICAgICAgICAgaXNQb3NcclxuICAgKiAgaXNaZXJvXHJcbiAgICogIGxlc3NUaGFuICAgICAgICAgICAgICAgICAgbHRcclxuICAgKiAgbGVzc1RoYW5PckVxdWFsVG8gICAgICAgICBsdGVcclxuICAgKiAgbG9nYXJpdGhtICAgICAgICAgICAgICAgICBsb2dcclxuICAgKiAgW21heGltdW1dICAgICAgICAgICAgICAgICBbbWF4XVxyXG4gICAqICBbbWluaW11bV0gICAgICAgICAgICAgICAgIFttaW5dXHJcbiAgICogIG1pbnVzICAgICAgICAgICAgICAgICAgICAgc3ViXHJcbiAgICogIG1vZHVsbyAgICAgICAgICAgICAgICAgICAgbW9kXHJcbiAgICogIG5hdHVyYWxFeHBvbmVudGlhbCAgICAgICAgZXhwXHJcbiAgICogIG5hdHVyYWxMb2dhcml0aG0gICAgICAgICAgbG5cclxuICAgKiAgbmVnYXRlZCAgICAgICAgICAgICAgICAgICBuZWdcclxuICAgKiAgcGx1cyAgICAgICAgICAgICAgICAgICAgICBhZGRcclxuICAgKiAgcHJlY2lzaW9uICAgICAgICAgICAgICAgICBzZFxyXG4gICAqICByb3VuZFxyXG4gICAqICBzaW5lICAgICAgICAgICAgICAgICAgICAgIHNpblxyXG4gICAqICBzcXVhcmVSb290ICAgICAgICAgICAgICAgIHNxcnRcclxuICAgKiAgdGFuZ2VudCAgICAgICAgICAgICAgICAgICB0YW5cclxuICAgKiAgdGltZXMgICAgICAgICAgICAgICAgICAgICBtdWxcclxuICAgKiAgdG9CaW5hcnlcclxuICAgKiAgdG9EZWNpbWFsUGxhY2VzICAgICAgICAgICB0b0RQXHJcbiAgICogIHRvRXhwb25lbnRpYWxcclxuICAgKiAgdG9GaXhlZFxyXG4gICAqICB0b0ZyYWN0aW9uXHJcbiAgICogIHRvSGV4YWRlY2ltYWwgICAgICAgICAgICAgdG9IZXhcclxuICAgKiAgdG9OZWFyZXN0XHJcbiAgICogIHRvTnVtYmVyXHJcbiAgICogIHRvT2N0YWxcclxuICAgKiAgdG9Qb3dlciAgICAgICAgICAgICAgICAgICBwb3dcclxuICAgKiAgdG9QcmVjaXNpb25cclxuICAgKiAgdG9TaWduaWZpY2FudERpZ2l0cyAgICAgICB0b1NEXHJcbiAgICogIHRvU3RyaW5nXHJcbiAgICogIHRydW5jYXRlZCAgICAgICAgICAgICAgICAgdHJ1bmNcclxuICAgKiAgdmFsdWVPZiAgICAgICAgICAgICAgICAgICB0b0pTT05cclxuICAgKi9cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbC5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuYWJzb2x1dGVWYWx1ZSA9IFAuYWJzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIHggPSBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzKTtcclxuICAgIGlmICh4LnMgPCAwKSB4LnMgPSAxO1xyXG4gICAgcmV0dXJuIGZpbmFsaXNlKHgpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgcm91bmRlZCB0byBhIHdob2xlIG51bWJlciBpbiB0aGVcclxuICAgKiBkaXJlY3Rpb24gb2YgcG9zaXRpdmUgSW5maW5pdHkuXHJcbiAgICpcclxuICAgKi9cclxuICBQLmNlaWwgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gZmluYWxpc2UobmV3IHRoaXMuY29uc3RydWN0b3IodGhpcyksIHRoaXMuZSArIDEsIDIpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgY2xhbXBlZCB0byB0aGUgcmFuZ2VcclxuICAgKiBkZWxpbmVhdGVkIGJ5IGBtaW5gIGFuZCBgbWF4YC5cclxuICAgKlxyXG4gICAqIG1pbiB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqIG1heCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5jbGFtcGVkVG8gPSBQLmNsYW1wID0gZnVuY3Rpb24gKG1pbiwgbWF4KSB7XHJcbiAgICB2YXIgayxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG4gICAgbWluID0gbmV3IEN0b3IobWluKTtcclxuICAgIG1heCA9IG5ldyBDdG9yKG1heCk7XHJcbiAgICBpZiAoIW1pbi5zIHx8ICFtYXgucykgcmV0dXJuIG5ldyBDdG9yKE5hTik7XHJcbiAgICBpZiAobWluLmd0KG1heCkpIHRocm93IEVycm9yKGludmFsaWRBcmd1bWVudCArIG1heCk7XHJcbiAgICBrID0geC5jbXAobWluKTtcclxuICAgIHJldHVybiBrIDwgMCA/IG1pbiA6IHguY21wKG1heCkgPiAwID8gbWF4IDogbmV3IEN0b3IoeCk7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuXHJcbiAgICogICAxICAgIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgaXMgZ3JlYXRlciB0aGFuIHRoZSB2YWx1ZSBvZiBgeWAsXHJcbiAgICogIC0xICAgIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgaXMgbGVzcyB0aGFuIHRoZSB2YWx1ZSBvZiBgeWAsXHJcbiAgICogICAwICAgIGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSB2YWx1ZSxcclxuICAgKiAgIE5hTiAgaWYgdGhlIHZhbHVlIG9mIGVpdGhlciBEZWNpbWFsIGlzIE5hTi5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuY29tcGFyZWRUbyA9IFAuY21wID0gZnVuY3Rpb24gKHkpIHtcclxuICAgIHZhciBpLCBqLCB4ZEwsIHlkTCxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIHhkID0geC5kLFxyXG4gICAgICB5ZCA9ICh5ID0gbmV3IHguY29uc3RydWN0b3IoeSkpLmQsXHJcbiAgICAgIHhzID0geC5zLFxyXG4gICAgICB5cyA9IHkucztcclxuXHJcbiAgICAvLyBFaXRoZXIgTmFOIG9yIMKxSW5maW5pdHk/XHJcbiAgICBpZiAoIXhkIHx8ICF5ZCkge1xyXG4gICAgICByZXR1cm4gIXhzIHx8ICF5cyA/IE5hTiA6IHhzICE9PSB5cyA/IHhzIDogeGQgPT09IHlkID8gMCA6ICF4ZCBeIHhzIDwgMCA/IDEgOiAtMTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBFaXRoZXIgemVybz9cclxuICAgIGlmICgheGRbMF0gfHwgIXlkWzBdKSByZXR1cm4geGRbMF0gPyB4cyA6IHlkWzBdID8gLXlzIDogMDtcclxuXHJcbiAgICAvLyBTaWducyBkaWZmZXI/XHJcbiAgICBpZiAoeHMgIT09IHlzKSByZXR1cm4geHM7XHJcblxyXG4gICAgLy8gQ29tcGFyZSBleHBvbmVudHMuXHJcbiAgICBpZiAoeC5lICE9PSB5LmUpIHJldHVybiB4LmUgPiB5LmUgXiB4cyA8IDAgPyAxIDogLTE7XHJcblxyXG4gICAgeGRMID0geGQubGVuZ3RoO1xyXG4gICAgeWRMID0geWQubGVuZ3RoO1xyXG5cclxuICAgIC8vIENvbXBhcmUgZGlnaXQgYnkgZGlnaXQuXHJcbiAgICBmb3IgKGkgPSAwLCBqID0geGRMIDwgeWRMID8geGRMIDogeWRMOyBpIDwgajsgKytpKSB7XHJcbiAgICAgIGlmICh4ZFtpXSAhPT0geWRbaV0pIHJldHVybiB4ZFtpXSA+IHlkW2ldIF4geHMgPCAwID8gMSA6IC0xO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENvbXBhcmUgbGVuZ3Rocy5cclxuICAgIHJldHVybiB4ZEwgPT09IHlkTCA/IDAgOiB4ZEwgPiB5ZEwgXiB4cyA8IDAgPyAxIDogLTE7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGNvc2luZSBvZiB0aGUgdmFsdWUgaW4gcmFkaWFucyBvZiB0aGlzIERlY2ltYWwuXHJcbiAgICpcclxuICAgKiBEb21haW46IFstSW5maW5pdHksIEluZmluaXR5XVxyXG4gICAqIFJhbmdlOiBbLTEsIDFdXHJcbiAgICpcclxuICAgKiBjb3MoMCkgICAgICAgICA9IDFcclxuICAgKiBjb3MoLTApICAgICAgICA9IDFcclxuICAgKiBjb3MoSW5maW5pdHkpICA9IE5hTlxyXG4gICAqIGNvcygtSW5maW5pdHkpID0gTmFOXHJcbiAgICogY29zKE5hTikgICAgICAgPSBOYU5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuY29zaW5lID0gUC5jb3MgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgcHIsIHJtLFxyXG4gICAgICB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3I7XHJcblxyXG4gICAgaWYgKCF4LmQpIHJldHVybiBuZXcgQ3RvcihOYU4pO1xyXG5cclxuICAgIC8vIGNvcygwKSA9IGNvcygtMCkgPSAxXHJcbiAgICBpZiAoIXguZFswXSkgcmV0dXJuIG5ldyBDdG9yKDEpO1xyXG5cclxuICAgIHByID0gQ3Rvci5wcmVjaXNpb247XHJcbiAgICBybSA9IEN0b3Iucm91bmRpbmc7XHJcbiAgICBDdG9yLnByZWNpc2lvbiA9IHByICsgTWF0aC5tYXgoeC5lLCB4LnNkKCkpICsgTE9HX0JBU0U7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gMTtcclxuXHJcbiAgICB4ID0gY29zaW5lKEN0b3IsIHRvTGVzc1RoYW5IYWxmUGkoQ3RvciwgeCkpO1xyXG5cclxuICAgIEN0b3IucHJlY2lzaW9uID0gcHI7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gcm07XHJcblxyXG4gICAgcmV0dXJuIGZpbmFsaXNlKHF1YWRyYW50ID09IDIgfHwgcXVhZHJhbnQgPT0gMyA/IHgubmVnKCkgOiB4LCBwciwgcm0sIHRydWUpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGN1YmUgcm9vdCBvZiB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsLCByb3VuZGVkIHRvXHJcbiAgICogYHByZWNpc2lvbmAgc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqICBjYnJ0KDApICA9ICAwXHJcbiAgICogIGNicnQoLTApID0gLTBcclxuICAgKiAgY2JydCgxKSAgPSAgMVxyXG4gICAqICBjYnJ0KC0xKSA9IC0xXHJcbiAgICogIGNicnQoTikgID0gIE5cclxuICAgKiAgY2JydCgtSSkgPSAtSVxyXG4gICAqICBjYnJ0KEkpICA9ICBJXHJcbiAgICpcclxuICAgKiBNYXRoLmNicnQoeCkgPSAoeCA8IDAgPyAtTWF0aC5wb3coLXgsIDEvMykgOiBNYXRoLnBvdyh4LCAxLzMpKVxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5jdWJlUm9vdCA9IFAuY2JydCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBlLCBtLCBuLCByLCByZXAsIHMsIHNkLCB0LCB0MywgdDNwbHVzeCxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgIGlmICgheC5pc0Zpbml0ZSgpIHx8IHguaXNaZXJvKCkpIHJldHVybiBuZXcgQ3Rvcih4KTtcclxuICAgIGV4dGVybmFsID0gZmFsc2U7XHJcblxyXG4gICAgLy8gSW5pdGlhbCBlc3RpbWF0ZS5cclxuICAgIHMgPSB4LnMgKiBtYXRocG93KHgucyAqIHgsIDEgLyAzKTtcclxuXHJcbiAgICAgLy8gTWF0aC5jYnJ0IHVuZGVyZmxvdy9vdmVyZmxvdz9cclxuICAgICAvLyBQYXNzIHggdG8gTWF0aC5wb3cgYXMgaW50ZWdlciwgdGhlbiBhZGp1c3QgdGhlIGV4cG9uZW50IG9mIHRoZSByZXN1bHQuXHJcbiAgICBpZiAoIXMgfHwgTWF0aC5hYnMocykgPT0gMSAvIDApIHtcclxuICAgICAgbiA9IGRpZ2l0c1RvU3RyaW5nKHguZCk7XHJcbiAgICAgIGUgPSB4LmU7XHJcblxyXG4gICAgICAvLyBBZGp1c3QgbiBleHBvbmVudCBzbyBpdCBpcyBhIG11bHRpcGxlIG9mIDMgYXdheSBmcm9tIHggZXhwb25lbnQuXHJcbiAgICAgIGlmIChzID0gKGUgLSBuLmxlbmd0aCArIDEpICUgMykgbiArPSAocyA9PSAxIHx8IHMgPT0gLTIgPyAnMCcgOiAnMDAnKTtcclxuICAgICAgcyA9IG1hdGhwb3cobiwgMSAvIDMpO1xyXG5cclxuICAgICAgLy8gUmFyZWx5LCBlIG1heSBiZSBvbmUgbGVzcyB0aGFuIHRoZSByZXN1bHQgZXhwb25lbnQgdmFsdWUuXHJcbiAgICAgIGUgPSBtYXRoZmxvb3IoKGUgKyAxKSAvIDMpIC0gKGUgJSAzID09IChlIDwgMCA/IC0xIDogMikpO1xyXG5cclxuICAgICAgaWYgKHMgPT0gMSAvIDApIHtcclxuICAgICAgICBuID0gJzVlJyArIGU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbiA9IHMudG9FeHBvbmVudGlhbCgpO1xyXG4gICAgICAgIG4gPSBuLnNsaWNlKDAsIG4uaW5kZXhPZignZScpICsgMSkgKyBlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByID0gbmV3IEN0b3Iobik7XHJcbiAgICAgIHIucyA9IHgucztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHIgPSBuZXcgQ3RvcihzLnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHNkID0gKGUgPSBDdG9yLnByZWNpc2lvbikgKyAzO1xyXG5cclxuICAgIC8vIEhhbGxleSdzIG1ldGhvZC5cclxuICAgIC8vIFRPRE8/IENvbXBhcmUgTmV3dG9uJ3MgbWV0aG9kLlxyXG4gICAgZm9yICg7Oykge1xyXG4gICAgICB0ID0gcjtcclxuICAgICAgdDMgPSB0LnRpbWVzKHQpLnRpbWVzKHQpO1xyXG4gICAgICB0M3BsdXN4ID0gdDMucGx1cyh4KTtcclxuICAgICAgciA9IGRpdmlkZSh0M3BsdXN4LnBsdXMoeCkudGltZXModCksIHQzcGx1c3gucGx1cyh0MyksIHNkICsgMiwgMSk7XHJcblxyXG4gICAgICAvLyBUT0RPPyBSZXBsYWNlIHdpdGggZm9yLWxvb3AgYW5kIGNoZWNrUm91bmRpbmdEaWdpdHMuXHJcbiAgICAgIGlmIChkaWdpdHNUb1N0cmluZyh0LmQpLnNsaWNlKDAsIHNkKSA9PT0gKG4gPSBkaWdpdHNUb1N0cmluZyhyLmQpKS5zbGljZSgwLCBzZCkpIHtcclxuICAgICAgICBuID0gbi5zbGljZShzZCAtIDMsIHNkICsgMSk7XHJcblxyXG4gICAgICAgIC8vIFRoZSA0dGggcm91bmRpbmcgZGlnaXQgbWF5IGJlIGluIGVycm9yIGJ5IC0xIHNvIGlmIHRoZSA0IHJvdW5kaW5nIGRpZ2l0cyBhcmUgOTk5OSBvciA0OTk5XHJcbiAgICAgICAgLy8gLCBpLmUuIGFwcHJvYWNoaW5nIGEgcm91bmRpbmcgYm91bmRhcnksIGNvbnRpbnVlIHRoZSBpdGVyYXRpb24uXHJcbiAgICAgICAgaWYgKG4gPT0gJzk5OTknIHx8ICFyZXAgJiYgbiA9PSAnNDk5OScpIHtcclxuXHJcbiAgICAgICAgICAvLyBPbiB0aGUgZmlyc3QgaXRlcmF0aW9uIG9ubHksIGNoZWNrIHRvIHNlZSBpZiByb3VuZGluZyB1cCBnaXZlcyB0aGUgZXhhY3QgcmVzdWx0IGFzIHRoZVxyXG4gICAgICAgICAgLy8gbmluZXMgbWF5IGluZmluaXRlbHkgcmVwZWF0LlxyXG4gICAgICAgICAgaWYgKCFyZXApIHtcclxuICAgICAgICAgICAgZmluYWxpc2UodCwgZSArIDEsIDApO1xyXG5cclxuICAgICAgICAgICAgaWYgKHQudGltZXModCkudGltZXModCkuZXEoeCkpIHtcclxuICAgICAgICAgICAgICByID0gdDtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHNkICs9IDQ7XHJcbiAgICAgICAgICByZXAgPSAxO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgLy8gSWYgdGhlIHJvdW5kaW5nIGRpZ2l0cyBhcmUgbnVsbCwgMHswLDR9IG9yIDUwezAsM30sIGNoZWNrIGZvciBhbiBleGFjdCByZXN1bHQuXHJcbiAgICAgICAgICAvLyBJZiBub3QsIHRoZW4gdGhlcmUgYXJlIGZ1cnRoZXIgZGlnaXRzIGFuZCBtIHdpbGwgYmUgdHJ1dGh5LlxyXG4gICAgICAgICAgaWYgKCErbiB8fCAhK24uc2xpY2UoMSkgJiYgbi5jaGFyQXQoMCkgPT0gJzUnKSB7XHJcblxyXG4gICAgICAgICAgICAvLyBUcnVuY2F0ZSB0byB0aGUgZmlyc3Qgcm91bmRpbmcgZGlnaXQuXHJcbiAgICAgICAgICAgIGZpbmFsaXNlKHIsIGUgKyAxLCAxKTtcclxuICAgICAgICAgICAgbSA9ICFyLnRpbWVzKHIpLnRpbWVzKHIpLmVxKHgpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gZmluYWxpc2UociwgZSwgQ3Rvci5yb3VuZGluZywgbSk7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIHRoZSBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbC5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuZGVjaW1hbFBsYWNlcyA9IFAuZHAgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgdyxcclxuICAgICAgZCA9IHRoaXMuZCxcclxuICAgICAgbiA9IE5hTjtcclxuXHJcbiAgICBpZiAoZCkge1xyXG4gICAgICB3ID0gZC5sZW5ndGggLSAxO1xyXG4gICAgICBuID0gKHcgLSBtYXRoZmxvb3IodGhpcy5lIC8gTE9HX0JBU0UpKSAqIExPR19CQVNFO1xyXG5cclxuICAgICAgLy8gU3VidHJhY3QgdGhlIG51bWJlciBvZiB0cmFpbGluZyB6ZXJvcyBvZiB0aGUgbGFzdCB3b3JkLlxyXG4gICAgICB3ID0gZFt3XTtcclxuICAgICAgaWYgKHcpIGZvciAoOyB3ICUgMTAgPT0gMDsgdyAvPSAxMCkgbi0tO1xyXG4gICAgICBpZiAobiA8IDApIG4gPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBuO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqICBuIC8gMCA9IElcclxuICAgKiAgbiAvIE4gPSBOXHJcbiAgICogIG4gLyBJID0gMFxyXG4gICAqICAwIC8gbiA9IDBcclxuICAgKiAgMCAvIDAgPSBOXHJcbiAgICogIDAgLyBOID0gTlxyXG4gICAqICAwIC8gSSA9IDBcclxuICAgKiAgTiAvIG4gPSBOXHJcbiAgICogIE4gLyAwID0gTlxyXG4gICAqICBOIC8gTiA9IE5cclxuICAgKiAgTiAvIEkgPSBOXHJcbiAgICogIEkgLyBuID0gSVxyXG4gICAqICBJIC8gMCA9IElcclxuICAgKiAgSSAvIE4gPSBOXHJcbiAgICogIEkgLyBJID0gTlxyXG4gICAqXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCBkaXZpZGVkIGJ5IGB5YCwgcm91bmRlZCB0b1xyXG4gICAqIGBwcmVjaXNpb25gIHNpZ25pZmljYW50IGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKi9cclxuICBQLmRpdmlkZWRCeSA9IFAuZGl2ID0gZnVuY3Rpb24gKHkpIHtcclxuICAgIHJldHVybiBkaXZpZGUodGhpcywgbmV3IHRoaXMuY29uc3RydWN0b3IoeSkpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBpbnRlZ2VyIHBhcnQgb2YgZGl2aWRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbFxyXG4gICAqIGJ5IHRoZSB2YWx1ZSBvZiBgeWAsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAgc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuZGl2aWRlZFRvSW50ZWdlckJ5ID0gUC5kaXZUb0ludCA9IGZ1bmN0aW9uICh5KSB7XHJcbiAgICB2YXIgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG4gICAgcmV0dXJuIGZpbmFsaXNlKGRpdmlkZSh4LCBuZXcgQ3Rvcih5KSwgMCwgMSwgMSksIEN0b3IucHJlY2lzaW9uLCBDdG9yLnJvdW5kaW5nKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIGlzIGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiBgeWAsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICpcclxuICAgKi9cclxuICBQLmVxdWFscyA9IFAuZXEgPSBmdW5jdGlvbiAoeSkge1xyXG4gICAgcmV0dXJuIHRoaXMuY21wKHkpID09PSAwO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgcm91bmRlZCB0byBhIHdob2xlIG51bWJlciBpbiB0aGVcclxuICAgKiBkaXJlY3Rpb24gb2YgbmVnYXRpdmUgSW5maW5pdHkuXHJcbiAgICpcclxuICAgKi9cclxuICBQLmZsb29yID0gZnVuY3Rpb24gKCkge1xyXG4gICAgcmV0dXJuIGZpbmFsaXNlKG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMpLCB0aGlzLmUgKyAxLCAzKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIGlzIGdyZWF0ZXIgdGhhbiB0aGUgdmFsdWUgb2YgYHlgLCBvdGhlcndpc2UgcmV0dXJuXHJcbiAgICogZmFsc2UuXHJcbiAgICpcclxuICAgKi9cclxuICBQLmdyZWF0ZXJUaGFuID0gUC5ndCA9IGZ1bmN0aW9uICh5KSB7XHJcbiAgICByZXR1cm4gdGhpcy5jbXAoeSkgPiAwO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiBgeWAsXHJcbiAgICogb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuZ3JlYXRlclRoYW5PckVxdWFsVG8gPSBQLmd0ZSA9IGZ1bmN0aW9uICh5KSB7XHJcbiAgICB2YXIgayA9IHRoaXMuY21wKHkpO1xyXG4gICAgcmV0dXJuIGsgPT0gMSB8fCBrID09PSAwO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBoeXBlcmJvbGljIGNvc2luZSBvZiB0aGUgdmFsdWUgaW4gcmFkaWFucyBvZiB0aGlzXHJcbiAgICogRGVjaW1hbC5cclxuICAgKlxyXG4gICAqIERvbWFpbjogWy1JbmZpbml0eSwgSW5maW5pdHldXHJcbiAgICogUmFuZ2U6IFsxLCBJbmZpbml0eV1cclxuICAgKlxyXG4gICAqIGNvc2goeCkgPSAxICsgeF4yLzIhICsgeF40LzQhICsgeF42LzYhICsgLi4uXHJcbiAgICpcclxuICAgKiBjb3NoKDApICAgICAgICAgPSAxXHJcbiAgICogY29zaCgtMCkgICAgICAgID0gMVxyXG4gICAqIGNvc2goSW5maW5pdHkpICA9IEluZmluaXR5XHJcbiAgICogY29zaCgtSW5maW5pdHkpID0gSW5maW5pdHlcclxuICAgKiBjb3NoKE5hTikgICAgICAgPSBOYU5cclxuICAgKlxyXG4gICAqICB4ICAgICAgICB0aW1lIHRha2VuIChtcykgICByZXN1bHRcclxuICAgKiAxMDAwICAgICAgOSAgICAgICAgICAgICAgICAgOS44NTAzNTU1NzAwODUyMzQ5Njk0ZSs0MzNcclxuICAgKiAxMDAwMCAgICAgMjUgICAgICAgICAgICAgICAgNC40MDM0MDkxMTI4MzE0NjA3OTM2ZSs0MzQyXHJcbiAgICogMTAwMDAwICAgIDE3MSAgICAgICAgICAgICAgIDEuNDAzMzMxNjgwMjEzMDYxNTg5N2UrNDM0MjlcclxuICAgKiAxMDAwMDAwICAgMzgxNyAgICAgICAgICAgICAgMS41MTY2MDc2OTg0MDEwNDM3NzI1ZSs0MzQyOTRcclxuICAgKiAxMDAwMDAwMCAgYWJhbmRvbmVkIGFmdGVyIDIgbWludXRlIHdhaXRcclxuICAgKlxyXG4gICAqIFRPRE8/IENvbXBhcmUgcGVyZm9ybWFuY2Ugb2YgY29zaCh4KSA9IDAuNSAqIChleHAoeCkgKyBleHAoLXgpKVxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5oeXBlcmJvbGljQ29zaW5lID0gUC5jb3NoID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIGssIG4sIHByLCBybSwgbGVuLFxyXG4gICAgICB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3IsXHJcbiAgICAgIG9uZSA9IG5ldyBDdG9yKDEpO1xyXG5cclxuICAgIGlmICgheC5pc0Zpbml0ZSgpKSByZXR1cm4gbmV3IEN0b3IoeC5zID8gMSAvIDAgOiBOYU4pO1xyXG4gICAgaWYgKHguaXNaZXJvKCkpIHJldHVybiBvbmU7XHJcblxyXG4gICAgcHIgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgIHJtID0gQ3Rvci5yb3VuZGluZztcclxuICAgIEN0b3IucHJlY2lzaW9uID0gcHIgKyBNYXRoLm1heCh4LmUsIHguc2QoKSkgKyA0O1xyXG4gICAgQ3Rvci5yb3VuZGluZyA9IDE7XHJcbiAgICBsZW4gPSB4LmQubGVuZ3RoO1xyXG5cclxuICAgIC8vIEFyZ3VtZW50IHJlZHVjdGlvbjogY29zKDR4KSA9IDEgLSA4Y29zXjIoeCkgKyA4Y29zXjQoeCkgKyAxXHJcbiAgICAvLyBpLmUuIGNvcyh4KSA9IDEgLSBjb3NeMih4LzQpKDggLSA4Y29zXjIoeC80KSlcclxuXHJcbiAgICAvLyBFc3RpbWF0ZSB0aGUgb3B0aW11bSBudW1iZXIgb2YgdGltZXMgdG8gdXNlIHRoZSBhcmd1bWVudCByZWR1Y3Rpb24uXHJcbiAgICAvLyBUT0RPPyBFc3RpbWF0aW9uIHJldXNlZCBmcm9tIGNvc2luZSgpIGFuZCBtYXkgbm90IGJlIG9wdGltYWwgaGVyZS5cclxuICAgIGlmIChsZW4gPCAzMikge1xyXG4gICAgICBrID0gTWF0aC5jZWlsKGxlbiAvIDMpO1xyXG4gICAgICBuID0gKDEgLyB0aW55UG93KDQsIGspKS50b1N0cmluZygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgayA9IDE2O1xyXG4gICAgICBuID0gJzIuMzI4MzA2NDM2NTM4Njk2Mjg5MDYyNWUtMTAnO1xyXG4gICAgfVxyXG5cclxuICAgIHggPSB0YXlsb3JTZXJpZXMoQ3RvciwgMSwgeC50aW1lcyhuKSwgbmV3IEN0b3IoMSksIHRydWUpO1xyXG5cclxuICAgIC8vIFJldmVyc2UgYXJndW1lbnQgcmVkdWN0aW9uXHJcbiAgICB2YXIgY29zaDJfeCxcclxuICAgICAgaSA9IGssXHJcbiAgICAgIGQ4ID0gbmV3IEN0b3IoOCk7XHJcbiAgICBmb3IgKDsgaS0tOykge1xyXG4gICAgICBjb3NoMl94ID0geC50aW1lcyh4KTtcclxuICAgICAgeCA9IG9uZS5taW51cyhjb3NoMl94LnRpbWVzKGQ4Lm1pbnVzKGNvc2gyX3gudGltZXMoZDgpKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmaW5hbGlzZSh4LCBDdG9yLnByZWNpc2lvbiA9IHByLCBDdG9yLnJvdW5kaW5nID0gcm0sIHRydWUpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBoeXBlcmJvbGljIHNpbmUgb2YgdGhlIHZhbHVlIGluIHJhZGlhbnMgb2YgdGhpc1xyXG4gICAqIERlY2ltYWwuXHJcbiAgICpcclxuICAgKiBEb21haW46IFstSW5maW5pdHksIEluZmluaXR5XVxyXG4gICAqIFJhbmdlOiBbLUluZmluaXR5LCBJbmZpbml0eV1cclxuICAgKlxyXG4gICAqIHNpbmgoeCkgPSB4ICsgeF4zLzMhICsgeF41LzUhICsgeF43LzchICsgLi4uXHJcbiAgICpcclxuICAgKiBzaW5oKDApICAgICAgICAgPSAwXHJcbiAgICogc2luaCgtMCkgICAgICAgID0gLTBcclxuICAgKiBzaW5oKEluZmluaXR5KSAgPSBJbmZpbml0eVxyXG4gICAqIHNpbmgoLUluZmluaXR5KSA9IC1JbmZpbml0eVxyXG4gICAqIHNpbmgoTmFOKSAgICAgICA9IE5hTlxyXG4gICAqXHJcbiAgICogeCAgICAgICAgdGltZSB0YWtlbiAobXMpXHJcbiAgICogMTAgICAgICAgMiBtc1xyXG4gICAqIDEwMCAgICAgIDUgbXNcclxuICAgKiAxMDAwICAgICAxNCBtc1xyXG4gICAqIDEwMDAwICAgIDgyIG1zXHJcbiAgICogMTAwMDAwICAgODg2IG1zICAgICAgICAgICAgMS40MDMzMzE2ODAyMTMwNjE1ODk3ZSs0MzQyOVxyXG4gICAqIDIwMDAwMCAgIDI2MTMgbXNcclxuICAgKiAzMDAwMDAgICA1NDA3IG1zXHJcbiAgICogNDAwMDAwICAgODgyNCBtc1xyXG4gICAqIDUwMDAwMCAgIDEzMDI2IG1zICAgICAgICAgIDguNzA4MDY0MzYxMjcxODA4NDEyOWUrMjE3MTQ2XHJcbiAgICogMTAwMDAwMCAgNDg1NDMgbXNcclxuICAgKlxyXG4gICAqIFRPRE8/IENvbXBhcmUgcGVyZm9ybWFuY2Ugb2Ygc2luaCh4KSA9IDAuNSAqIChleHAoeCkgLSBleHAoLXgpKVxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5oeXBlcmJvbGljU2luZSA9IFAuc2luaCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBrLCBwciwgcm0sIGxlbixcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgIGlmICgheC5pc0Zpbml0ZSgpIHx8IHguaXNaZXJvKCkpIHJldHVybiBuZXcgQ3Rvcih4KTtcclxuXHJcbiAgICBwciA9IEN0b3IucHJlY2lzaW9uO1xyXG4gICAgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSBwciArIE1hdGgubWF4KHguZSwgeC5zZCgpKSArIDQ7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gMTtcclxuICAgIGxlbiA9IHguZC5sZW5ndGg7XHJcblxyXG4gICAgaWYgKGxlbiA8IDMpIHtcclxuICAgICAgeCA9IHRheWxvclNlcmllcyhDdG9yLCAyLCB4LCB4LCB0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAvLyBBbHRlcm5hdGl2ZSBhcmd1bWVudCByZWR1Y3Rpb246IHNpbmgoM3gpID0gc2luaCh4KSgzICsgNHNpbmheMih4KSlcclxuICAgICAgLy8gaS5lLiBzaW5oKHgpID0gc2luaCh4LzMpKDMgKyA0c2luaF4yKHgvMykpXHJcbiAgICAgIC8vIDMgbXVsdGlwbGljYXRpb25zIGFuZCAxIGFkZGl0aW9uXHJcblxyXG4gICAgICAvLyBBcmd1bWVudCByZWR1Y3Rpb246IHNpbmgoNXgpID0gc2luaCh4KSg1ICsgc2luaF4yKHgpKDIwICsgMTZzaW5oXjIoeCkpKVxyXG4gICAgICAvLyBpLmUuIHNpbmgoeCkgPSBzaW5oKHgvNSkoNSArIHNpbmheMih4LzUpKDIwICsgMTZzaW5oXjIoeC81KSkpXHJcbiAgICAgIC8vIDQgbXVsdGlwbGljYXRpb25zIGFuZCAyIGFkZGl0aW9uc1xyXG5cclxuICAgICAgLy8gRXN0aW1hdGUgdGhlIG9wdGltdW0gbnVtYmVyIG9mIHRpbWVzIHRvIHVzZSB0aGUgYXJndW1lbnQgcmVkdWN0aW9uLlxyXG4gICAgICBrID0gMS40ICogTWF0aC5zcXJ0KGxlbik7XHJcbiAgICAgIGsgPSBrID4gMTYgPyAxNiA6IGsgfCAwO1xyXG5cclxuICAgICAgeCA9IHgudGltZXMoMSAvIHRpbnlQb3coNSwgaykpO1xyXG4gICAgICB4ID0gdGF5bG9yU2VyaWVzKEN0b3IsIDIsIHgsIHgsIHRydWUpO1xyXG5cclxuICAgICAgLy8gUmV2ZXJzZSBhcmd1bWVudCByZWR1Y3Rpb25cclxuICAgICAgdmFyIHNpbmgyX3gsXHJcbiAgICAgICAgZDUgPSBuZXcgQ3Rvcig1KSxcclxuICAgICAgICBkMTYgPSBuZXcgQ3RvcigxNiksXHJcbiAgICAgICAgZDIwID0gbmV3IEN0b3IoMjApO1xyXG4gICAgICBmb3IgKDsgay0tOykge1xyXG4gICAgICAgIHNpbmgyX3ggPSB4LnRpbWVzKHgpO1xyXG4gICAgICAgIHggPSB4LnRpbWVzKGQ1LnBsdXMoc2luaDJfeC50aW1lcyhkMTYudGltZXMoc2luaDJfeCkucGx1cyhkMjApKSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSBwcjtcclxuICAgIEN0b3Iucm91bmRpbmcgPSBybTtcclxuXHJcbiAgICByZXR1cm4gZmluYWxpc2UoeCwgcHIsIHJtLCB0cnVlKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgaHlwZXJib2xpYyB0YW5nZW50IG9mIHRoZSB2YWx1ZSBpbiByYWRpYW5zIG9mIHRoaXNcclxuICAgKiBEZWNpbWFsLlxyXG4gICAqXHJcbiAgICogRG9tYWluOiBbLUluZmluaXR5LCBJbmZpbml0eV1cclxuICAgKiBSYW5nZTogWy0xLCAxXVxyXG4gICAqXHJcbiAgICogdGFuaCh4KSA9IHNpbmgoeCkgLyBjb3NoKHgpXHJcbiAgICpcclxuICAgKiB0YW5oKDApICAgICAgICAgPSAwXHJcbiAgICogdGFuaCgtMCkgICAgICAgID0gLTBcclxuICAgKiB0YW5oKEluZmluaXR5KSAgPSAxXHJcbiAgICogdGFuaCgtSW5maW5pdHkpID0gLTFcclxuICAgKiB0YW5oKE5hTikgICAgICAgPSBOYU5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuaHlwZXJib2xpY1RhbmdlbnQgPSBQLnRhbmggPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgcHIsIHJtLFxyXG4gICAgICB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3I7XHJcblxyXG4gICAgaWYgKCF4LmlzRmluaXRlKCkpIHJldHVybiBuZXcgQ3Rvcih4LnMpO1xyXG4gICAgaWYgKHguaXNaZXJvKCkpIHJldHVybiBuZXcgQ3Rvcih4KTtcclxuXHJcbiAgICBwciA9IEN0b3IucHJlY2lzaW9uO1xyXG4gICAgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSBwciArIDc7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gMTtcclxuXHJcbiAgICByZXR1cm4gZGl2aWRlKHguc2luaCgpLCB4LmNvc2goKSwgQ3Rvci5wcmVjaXNpb24gPSBwciwgQ3Rvci5yb3VuZGluZyA9IHJtKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgYXJjY29zaW5lIChpbnZlcnNlIGNvc2luZSkgaW4gcmFkaWFucyBvZiB0aGUgdmFsdWUgb2ZcclxuICAgKiB0aGlzIERlY2ltYWwuXHJcbiAgICpcclxuICAgKiBEb21haW46IFstMSwgMV1cclxuICAgKiBSYW5nZTogWzAsIHBpXVxyXG4gICAqXHJcbiAgICogYWNvcyh4KSA9IHBpLzIgLSBhc2luKHgpXHJcbiAgICpcclxuICAgKiBhY29zKDApICAgICAgID0gcGkvMlxyXG4gICAqIGFjb3MoLTApICAgICAgPSBwaS8yXHJcbiAgICogYWNvcygxKSAgICAgICA9IDBcclxuICAgKiBhY29zKC0xKSAgICAgID0gcGlcclxuICAgKiBhY29zKDEvMikgICAgID0gcGkvM1xyXG4gICAqIGFjb3MoLTEvMikgICAgPSAyKnBpLzNcclxuICAgKiBhY29zKHx4fCA+IDEpID0gTmFOXHJcbiAgICogYWNvcyhOYU4pICAgICA9IE5hTlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5pbnZlcnNlQ29zaW5lID0gUC5hY29zID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIGhhbGZQaSxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yLFxyXG4gICAgICBrID0geC5hYnMoKS5jbXAoMSksXHJcbiAgICAgIHByID0gQ3Rvci5wcmVjaXNpb24sXHJcbiAgICAgIHJtID0gQ3Rvci5yb3VuZGluZztcclxuXHJcbiAgICBpZiAoayAhPT0gLTEpIHtcclxuICAgICAgcmV0dXJuIGsgPT09IDBcclxuICAgICAgICAvLyB8eHwgaXMgMVxyXG4gICAgICAgID8geC5pc05lZygpID8gZ2V0UGkoQ3RvciwgcHIsIHJtKSA6IG5ldyBDdG9yKDApXHJcbiAgICAgICAgLy8gfHh8ID4gMSBvciB4IGlzIE5hTlxyXG4gICAgICAgIDogbmV3IEN0b3IoTmFOKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoeC5pc1plcm8oKSkgcmV0dXJuIGdldFBpKEN0b3IsIHByICsgNCwgcm0pLnRpbWVzKDAuNSk7XHJcblxyXG4gICAgLy8gVE9ETz8gU3BlY2lhbCBjYXNlIGFjb3MoMC41KSA9IHBpLzMgYW5kIGFjb3MoLTAuNSkgPSAyKnBpLzNcclxuXHJcbiAgICBDdG9yLnByZWNpc2lvbiA9IHByICsgNjtcclxuICAgIEN0b3Iucm91bmRpbmcgPSAxO1xyXG5cclxuICAgIHggPSB4LmFzaW4oKTtcclxuICAgIGhhbGZQaSA9IGdldFBpKEN0b3IsIHByICsgNCwgcm0pLnRpbWVzKDAuNSk7XHJcblxyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSBwcjtcclxuICAgIEN0b3Iucm91bmRpbmcgPSBybTtcclxuXHJcbiAgICByZXR1cm4gaGFsZlBpLm1pbnVzKHgpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBpbnZlcnNlIG9mIHRoZSBoeXBlcmJvbGljIGNvc2luZSBpbiByYWRpYW5zIG9mIHRoZVxyXG4gICAqIHZhbHVlIG9mIHRoaXMgRGVjaW1hbC5cclxuICAgKlxyXG4gICAqIERvbWFpbjogWzEsIEluZmluaXR5XVxyXG4gICAqIFJhbmdlOiBbMCwgSW5maW5pdHldXHJcbiAgICpcclxuICAgKiBhY29zaCh4KSA9IGxuKHggKyBzcXJ0KHheMiAtIDEpKVxyXG4gICAqXHJcbiAgICogYWNvc2goeCA8IDEpICAgICA9IE5hTlxyXG4gICAqIGFjb3NoKE5hTikgICAgICAgPSBOYU5cclxuICAgKiBhY29zaChJbmZpbml0eSkgID0gSW5maW5pdHlcclxuICAgKiBhY29zaCgtSW5maW5pdHkpID0gTmFOXHJcbiAgICogYWNvc2goMCkgICAgICAgICA9IE5hTlxyXG4gICAqIGFjb3NoKC0wKSAgICAgICAgPSBOYU5cclxuICAgKiBhY29zaCgxKSAgICAgICAgID0gMFxyXG4gICAqIGFjb3NoKC0xKSAgICAgICAgPSBOYU5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuaW52ZXJzZUh5cGVyYm9saWNDb3NpbmUgPSBQLmFjb3NoID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIHByLCBybSxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgIGlmICh4Lmx0ZSgxKSkgcmV0dXJuIG5ldyBDdG9yKHguZXEoMSkgPyAwIDogTmFOKTtcclxuICAgIGlmICgheC5pc0Zpbml0ZSgpKSByZXR1cm4gbmV3IEN0b3IoeCk7XHJcblxyXG4gICAgcHIgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgIHJtID0gQ3Rvci5yb3VuZGluZztcclxuICAgIEN0b3IucHJlY2lzaW9uID0gcHIgKyBNYXRoLm1heChNYXRoLmFicyh4LmUpLCB4LnNkKCkpICsgNDtcclxuICAgIEN0b3Iucm91bmRpbmcgPSAxO1xyXG4gICAgZXh0ZXJuYWwgPSBmYWxzZTtcclxuXHJcbiAgICB4ID0geC50aW1lcyh4KS5taW51cygxKS5zcXJ0KCkucGx1cyh4KTtcclxuXHJcbiAgICBleHRlcm5hbCA9IHRydWU7XHJcbiAgICBDdG9yLnByZWNpc2lvbiA9IHByO1xyXG4gICAgQ3Rvci5yb3VuZGluZyA9IHJtO1xyXG5cclxuICAgIHJldHVybiB4LmxuKCk7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGludmVyc2Ugb2YgdGhlIGh5cGVyYm9saWMgc2luZSBpbiByYWRpYW5zIG9mIHRoZSB2YWx1ZVxyXG4gICAqIG9mIHRoaXMgRGVjaW1hbC5cclxuICAgKlxyXG4gICAqIERvbWFpbjogWy1JbmZpbml0eSwgSW5maW5pdHldXHJcbiAgICogUmFuZ2U6IFstSW5maW5pdHksIEluZmluaXR5XVxyXG4gICAqXHJcbiAgICogYXNpbmgoeCkgPSBsbih4ICsgc3FydCh4XjIgKyAxKSlcclxuICAgKlxyXG4gICAqIGFzaW5oKE5hTikgICAgICAgPSBOYU5cclxuICAgKiBhc2luaChJbmZpbml0eSkgID0gSW5maW5pdHlcclxuICAgKiBhc2luaCgtSW5maW5pdHkpID0gLUluZmluaXR5XHJcbiAgICogYXNpbmgoMCkgICAgICAgICA9IDBcclxuICAgKiBhc2luaCgtMCkgICAgICAgID0gLTBcclxuICAgKlxyXG4gICAqL1xyXG4gIFAuaW52ZXJzZUh5cGVyYm9saWNTaW5lID0gUC5hc2luaCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBwciwgcm0sXHJcbiAgICAgIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICBpZiAoIXguaXNGaW5pdGUoKSB8fCB4LmlzWmVybygpKSByZXR1cm4gbmV3IEN0b3IoeCk7XHJcblxyXG4gICAgcHIgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgIHJtID0gQ3Rvci5yb3VuZGluZztcclxuICAgIEN0b3IucHJlY2lzaW9uID0gcHIgKyAyICogTWF0aC5tYXgoTWF0aC5hYnMoeC5lKSwgeC5zZCgpKSArIDY7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gMTtcclxuICAgIGV4dGVybmFsID0gZmFsc2U7XHJcblxyXG4gICAgeCA9IHgudGltZXMoeCkucGx1cygxKS5zcXJ0KCkucGx1cyh4KTtcclxuXHJcbiAgICBleHRlcm5hbCA9IHRydWU7XHJcbiAgICBDdG9yLnByZWNpc2lvbiA9IHByO1xyXG4gICAgQ3Rvci5yb3VuZGluZyA9IHJtO1xyXG5cclxuICAgIHJldHVybiB4LmxuKCk7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGludmVyc2Ugb2YgdGhlIGh5cGVyYm9saWMgdGFuZ2VudCBpbiByYWRpYW5zIG9mIHRoZVxyXG4gICAqIHZhbHVlIG9mIHRoaXMgRGVjaW1hbC5cclxuICAgKlxyXG4gICAqIERvbWFpbjogWy0xLCAxXVxyXG4gICAqIFJhbmdlOiBbLUluZmluaXR5LCBJbmZpbml0eV1cclxuICAgKlxyXG4gICAqIGF0YW5oKHgpID0gMC41ICogbG4oKDEgKyB4KSAvICgxIC0geCkpXHJcbiAgICpcclxuICAgKiBhdGFuaCh8eHwgPiAxKSAgID0gTmFOXHJcbiAgICogYXRhbmgoTmFOKSAgICAgICA9IE5hTlxyXG4gICAqIGF0YW5oKEluZmluaXR5KSAgPSBOYU5cclxuICAgKiBhdGFuaCgtSW5maW5pdHkpID0gTmFOXHJcbiAgICogYXRhbmgoMCkgICAgICAgICA9IDBcclxuICAgKiBhdGFuaCgtMCkgICAgICAgID0gLTBcclxuICAgKiBhdGFuaCgxKSAgICAgICAgID0gSW5maW5pdHlcclxuICAgKiBhdGFuaCgtMSkgICAgICAgID0gLUluZmluaXR5XHJcbiAgICpcclxuICAgKi9cclxuICBQLmludmVyc2VIeXBlcmJvbGljVGFuZ2VudCA9IFAuYXRhbmggPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgcHIsIHJtLCB3cHIsIHhzZCxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgIGlmICgheC5pc0Zpbml0ZSgpKSByZXR1cm4gbmV3IEN0b3IoTmFOKTtcclxuICAgIGlmICh4LmUgPj0gMCkgcmV0dXJuIG5ldyBDdG9yKHguYWJzKCkuZXEoMSkgPyB4LnMgLyAwIDogeC5pc1plcm8oKSA/IHggOiBOYU4pO1xyXG5cclxuICAgIHByID0gQ3Rvci5wcmVjaXNpb247XHJcbiAgICBybSA9IEN0b3Iucm91bmRpbmc7XHJcbiAgICB4c2QgPSB4LnNkKCk7XHJcblxyXG4gICAgaWYgKE1hdGgubWF4KHhzZCwgcHIpIDwgMiAqIC14LmUgLSAxKSByZXR1cm4gZmluYWxpc2UobmV3IEN0b3IoeCksIHByLCBybSwgdHJ1ZSk7XHJcblxyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSB3cHIgPSB4c2QgLSB4LmU7XHJcblxyXG4gICAgeCA9IGRpdmlkZSh4LnBsdXMoMSksIG5ldyBDdG9yKDEpLm1pbnVzKHgpLCB3cHIgKyBwciwgMSk7XHJcblxyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSBwciArIDQ7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gMTtcclxuXHJcbiAgICB4ID0geC5sbigpO1xyXG5cclxuICAgIEN0b3IucHJlY2lzaW9uID0gcHI7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gcm07XHJcblxyXG4gICAgcmV0dXJuIHgudGltZXMoMC41KTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgYXJjc2luZSAoaW52ZXJzZSBzaW5lKSBpbiByYWRpYW5zIG9mIHRoZSB2YWx1ZSBvZiB0aGlzXHJcbiAgICogRGVjaW1hbC5cclxuICAgKlxyXG4gICAqIERvbWFpbjogWy1JbmZpbml0eSwgSW5maW5pdHldXHJcbiAgICogUmFuZ2U6IFstcGkvMiwgcGkvMl1cclxuICAgKlxyXG4gICAqIGFzaW4oeCkgPSAyKmF0YW4oeC8oMSArIHNxcnQoMSAtIHheMikpKVxyXG4gICAqXHJcbiAgICogYXNpbigwKSAgICAgICA9IDBcclxuICAgKiBhc2luKC0wKSAgICAgID0gLTBcclxuICAgKiBhc2luKDEvMikgICAgID0gcGkvNlxyXG4gICAqIGFzaW4oLTEvMikgICAgPSAtcGkvNlxyXG4gICAqIGFzaW4oMSkgICAgICAgPSBwaS8yXHJcbiAgICogYXNpbigtMSkgICAgICA9IC1waS8yXHJcbiAgICogYXNpbih8eHwgPiAxKSA9IE5hTlxyXG4gICAqIGFzaW4oTmFOKSAgICAgPSBOYU5cclxuICAgKlxyXG4gICAqIFRPRE8/IENvbXBhcmUgcGVyZm9ybWFuY2Ugb2YgVGF5bG9yIHNlcmllcy5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuaW52ZXJzZVNpbmUgPSBQLmFzaW4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgaGFsZlBpLCBrLFxyXG4gICAgICBwciwgcm0sXHJcbiAgICAgIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICBpZiAoeC5pc1plcm8oKSkgcmV0dXJuIG5ldyBDdG9yKHgpO1xyXG5cclxuICAgIGsgPSB4LmFicygpLmNtcCgxKTtcclxuICAgIHByID0gQ3Rvci5wcmVjaXNpb247XHJcbiAgICBybSA9IEN0b3Iucm91bmRpbmc7XHJcblxyXG4gICAgaWYgKGsgIT09IC0xKSB7XHJcblxyXG4gICAgICAvLyB8eHwgaXMgMVxyXG4gICAgICBpZiAoayA9PT0gMCkge1xyXG4gICAgICAgIGhhbGZQaSA9IGdldFBpKEN0b3IsIHByICsgNCwgcm0pLnRpbWVzKDAuNSk7XHJcbiAgICAgICAgaGFsZlBpLnMgPSB4LnM7XHJcbiAgICAgICAgcmV0dXJuIGhhbGZQaTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gfHh8ID4gMSBvciB4IGlzIE5hTlxyXG4gICAgICByZXR1cm4gbmV3IEN0b3IoTmFOKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUT0RPPyBTcGVjaWFsIGNhc2UgYXNpbigxLzIpID0gcGkvNiBhbmQgYXNpbigtMS8yKSA9IC1waS82XHJcblxyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSBwciArIDY7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gMTtcclxuXHJcbiAgICB4ID0geC5kaXYobmV3IEN0b3IoMSkubWludXMoeC50aW1lcyh4KSkuc3FydCgpLnBsdXMoMSkpLmF0YW4oKTtcclxuXHJcbiAgICBDdG9yLnByZWNpc2lvbiA9IHByO1xyXG4gICAgQ3Rvci5yb3VuZGluZyA9IHJtO1xyXG5cclxuICAgIHJldHVybiB4LnRpbWVzKDIpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBhcmN0YW5nZW50IChpbnZlcnNlIHRhbmdlbnQpIGluIHJhZGlhbnMgb2YgdGhlIHZhbHVlXHJcbiAgICogb2YgdGhpcyBEZWNpbWFsLlxyXG4gICAqXHJcbiAgICogRG9tYWluOiBbLUluZmluaXR5LCBJbmZpbml0eV1cclxuICAgKiBSYW5nZTogWy1waS8yLCBwaS8yXVxyXG4gICAqXHJcbiAgICogYXRhbih4KSA9IHggLSB4XjMvMyArIHheNS81IC0geF43LzcgKyAuLi5cclxuICAgKlxyXG4gICAqIGF0YW4oMCkgICAgICAgICA9IDBcclxuICAgKiBhdGFuKC0wKSAgICAgICAgPSAtMFxyXG4gICAqIGF0YW4oMSkgICAgICAgICA9IHBpLzRcclxuICAgKiBhdGFuKC0xKSAgICAgICAgPSAtcGkvNFxyXG4gICAqIGF0YW4oSW5maW5pdHkpICA9IHBpLzJcclxuICAgKiBhdGFuKC1JbmZpbml0eSkgPSAtcGkvMlxyXG4gICAqIGF0YW4oTmFOKSAgICAgICA9IE5hTlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5pbnZlcnNlVGFuZ2VudCA9IFAuYXRhbiA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBpLCBqLCBrLCBuLCBweCwgdCwgciwgd3ByLCB4MixcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yLFxyXG4gICAgICBwciA9IEN0b3IucHJlY2lzaW9uLFxyXG4gICAgICBybSA9IEN0b3Iucm91bmRpbmc7XHJcblxyXG4gICAgaWYgKCF4LmlzRmluaXRlKCkpIHtcclxuICAgICAgaWYgKCF4LnMpIHJldHVybiBuZXcgQ3RvcihOYU4pO1xyXG4gICAgICBpZiAocHIgKyA0IDw9IFBJX1BSRUNJU0lPTikge1xyXG4gICAgICAgIHIgPSBnZXRQaShDdG9yLCBwciArIDQsIHJtKS50aW1lcygwLjUpO1xyXG4gICAgICAgIHIucyA9IHgucztcclxuICAgICAgICByZXR1cm4gcjtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh4LmlzWmVybygpKSB7XHJcbiAgICAgIHJldHVybiBuZXcgQ3Rvcih4KTtcclxuICAgIH0gZWxzZSBpZiAoeC5hYnMoKS5lcSgxKSAmJiBwciArIDQgPD0gUElfUFJFQ0lTSU9OKSB7XHJcbiAgICAgIHIgPSBnZXRQaShDdG9yLCBwciArIDQsIHJtKS50aW1lcygwLjI1KTtcclxuICAgICAgci5zID0geC5zO1xyXG4gICAgICByZXR1cm4gcjtcclxuICAgIH1cclxuXHJcbiAgICBDdG9yLnByZWNpc2lvbiA9IHdwciA9IHByICsgMTA7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gMTtcclxuXHJcbiAgICAvLyBUT0RPPyBpZiAoeCA+PSAxICYmIHByIDw9IFBJX1BSRUNJU0lPTikgYXRhbih4KSA9IGhhbGZQaSAqIHgucyAtIGF0YW4oMSAvIHgpO1xyXG5cclxuICAgIC8vIEFyZ3VtZW50IHJlZHVjdGlvblxyXG4gICAgLy8gRW5zdXJlIHx4fCA8IDAuNDJcclxuICAgIC8vIGF0YW4oeCkgPSAyICogYXRhbih4IC8gKDEgKyBzcXJ0KDEgKyB4XjIpKSlcclxuXHJcbiAgICBrID0gTWF0aC5taW4oMjgsIHdwciAvIExPR19CQVNFICsgMiB8IDApO1xyXG5cclxuICAgIGZvciAoaSA9IGs7IGk7IC0taSkgeCA9IHguZGl2KHgudGltZXMoeCkucGx1cygxKS5zcXJ0KCkucGx1cygxKSk7XHJcblxyXG4gICAgZXh0ZXJuYWwgPSBmYWxzZTtcclxuXHJcbiAgICBqID0gTWF0aC5jZWlsKHdwciAvIExPR19CQVNFKTtcclxuICAgIG4gPSAxO1xyXG4gICAgeDIgPSB4LnRpbWVzKHgpO1xyXG4gICAgciA9IG5ldyBDdG9yKHgpO1xyXG4gICAgcHggPSB4O1xyXG5cclxuICAgIC8vIGF0YW4oeCkgPSB4IC0geF4zLzMgKyB4XjUvNSAtIHheNy83ICsgLi4uXHJcbiAgICBmb3IgKDsgaSAhPT0gLTE7KSB7XHJcbiAgICAgIHB4ID0gcHgudGltZXMoeDIpO1xyXG4gICAgICB0ID0gci5taW51cyhweC5kaXYobiArPSAyKSk7XHJcblxyXG4gICAgICBweCA9IHB4LnRpbWVzKHgyKTtcclxuICAgICAgciA9IHQucGx1cyhweC5kaXYobiArPSAyKSk7XHJcblxyXG4gICAgICBpZiAoci5kW2pdICE9PSB2b2lkIDApIGZvciAoaSA9IGo7IHIuZFtpXSA9PT0gdC5kW2ldICYmIGktLTspO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChrKSByID0gci50aW1lcygyIDw8IChrIC0gMSkpO1xyXG5cclxuICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gZmluYWxpc2UociwgQ3Rvci5wcmVjaXNpb24gPSBwciwgQ3Rvci5yb3VuZGluZyA9IHJtLCB0cnVlKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIGlzIGEgZmluaXRlIG51bWJlciwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuaXNGaW5pdGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gISF0aGlzLmQ7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCBpcyBhbiBpbnRlZ2VyLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5pc0ludGVnZXIgPSBQLmlzSW50ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgcmV0dXJuICEhdGhpcy5kICYmIG1hdGhmbG9vcih0aGlzLmUgLyBMT0dfQkFTRSkgPiB0aGlzLmQubGVuZ3RoIC0gMjtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIGlzIE5hTiwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuaXNOYU4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gIXRoaXMucztcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIGlzIG5lZ2F0aXZlLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5pc05lZ2F0aXZlID0gUC5pc05lZyA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHJldHVybiB0aGlzLnMgPCAwO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgaXMgcG9zaXRpdmUsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICpcclxuICAgKi9cclxuICBQLmlzUG9zaXRpdmUgPSBQLmlzUG9zID0gZnVuY3Rpb24gKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucyA+IDA7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCBpcyAwIG9yIC0wLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5pc1plcm8gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gISF0aGlzLmQgJiYgdGhpcy5kWzBdID09PSAwO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgaXMgbGVzcyB0aGFuIGB5YCwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAubGVzc1RoYW4gPSBQLmx0ID0gZnVuY3Rpb24gKHkpIHtcclxuICAgIHJldHVybiB0aGlzLmNtcCh5KSA8IDA7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYHlgLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5sZXNzVGhhbk9yRXF1YWxUbyA9IFAubHRlID0gZnVuY3Rpb24gKHkpIHtcclxuICAgIHJldHVybiB0aGlzLmNtcCh5KSA8IDE7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIHRoZSBsb2dhcml0aG0gb2YgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCB0byB0aGUgc3BlY2lmaWVkIGJhc2UsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmBcclxuICAgKiBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogSWYgbm8gYmFzZSBpcyBzcGVjaWZpZWQsIHJldHVybiBsb2dbMTBdKGFyZykuXHJcbiAgICpcclxuICAgKiBsb2dbYmFzZV0oYXJnKSA9IGxuKGFyZykgLyBsbihiYXNlKVxyXG4gICAqXHJcbiAgICogVGhlIHJlc3VsdCB3aWxsIGFsd2F5cyBiZSBjb3JyZWN0bHkgcm91bmRlZCBpZiB0aGUgYmFzZSBvZiB0aGUgbG9nIGlzIDEwLCBhbmQgJ2FsbW9zdCBhbHdheXMnXHJcbiAgICogb3RoZXJ3aXNlOlxyXG4gICAqXHJcbiAgICogRGVwZW5kaW5nIG9uIHRoZSByb3VuZGluZyBtb2RlLCB0aGUgcmVzdWx0IG1heSBiZSBpbmNvcnJlY3RseSByb3VuZGVkIGlmIHRoZSBmaXJzdCBmaWZ0ZWVuXHJcbiAgICogcm91bmRpbmcgZGlnaXRzIGFyZSBbNDldOTk5OTk5OTk5OTk5OTkgb3IgWzUwXTAwMDAwMDAwMDAwMDAwLiBJbiB0aGF0IGNhc2UsIHRoZSBtYXhpbXVtIGVycm9yXHJcbiAgICogYmV0d2VlbiB0aGUgcmVzdWx0IGFuZCB0aGUgY29ycmVjdGx5IHJvdW5kZWQgcmVzdWx0IHdpbGwgYmUgb25lIHVscCAodW5pdCBpbiB0aGUgbGFzdCBwbGFjZSkuXHJcbiAgICpcclxuICAgKiBsb2dbLWJdKGEpICAgICAgID0gTmFOXHJcbiAgICogbG9nWzBdKGEpICAgICAgICA9IE5hTlxyXG4gICAqIGxvZ1sxXShhKSAgICAgICAgPSBOYU5cclxuICAgKiBsb2dbTmFOXShhKSAgICAgID0gTmFOXHJcbiAgICogbG9nW0luZmluaXR5XShhKSA9IE5hTlxyXG4gICAqIGxvZ1tiXSgwKSAgICAgICAgPSAtSW5maW5pdHlcclxuICAgKiBsb2dbYl0oLTApICAgICAgID0gLUluZmluaXR5XHJcbiAgICogbG9nW2JdKC1hKSAgICAgICA9IE5hTlxyXG4gICAqIGxvZ1tiXSgxKSAgICAgICAgPSAwXHJcbiAgICogbG9nW2JdKEluZmluaXR5KSA9IEluZmluaXR5XHJcbiAgICogbG9nW2JdKE5hTikgICAgICA9IE5hTlxyXG4gICAqXHJcbiAgICogW2Jhc2VdIHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9IFRoZSBiYXNlIG9mIHRoZSBsb2dhcml0aG0uXHJcbiAgICpcclxuICAgKi9cclxuICBQLmxvZ2FyaXRobSA9IFAubG9nID0gZnVuY3Rpb24gKGJhc2UpIHtcclxuICAgIHZhciBpc0Jhc2UxMCwgZCwgZGVub21pbmF0b3IsIGssIGluZiwgbnVtLCBzZCwgcixcclxuICAgICAgYXJnID0gdGhpcyxcclxuICAgICAgQ3RvciA9IGFyZy5jb25zdHJ1Y3RvcixcclxuICAgICAgcHIgPSBDdG9yLnByZWNpc2lvbixcclxuICAgICAgcm0gPSBDdG9yLnJvdW5kaW5nLFxyXG4gICAgICBndWFyZCA9IDU7XHJcblxyXG4gICAgLy8gRGVmYXVsdCBiYXNlIGlzIDEwLlxyXG4gICAgaWYgKGJhc2UgPT0gbnVsbCkge1xyXG4gICAgICBiYXNlID0gbmV3IEN0b3IoMTApO1xyXG4gICAgICBpc0Jhc2UxMCA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBiYXNlID0gbmV3IEN0b3IoYmFzZSk7XHJcbiAgICAgIGQgPSBiYXNlLmQ7XHJcblxyXG4gICAgICAvLyBSZXR1cm4gTmFOIGlmIGJhc2UgaXMgbmVnYXRpdmUsIG9yIG5vbi1maW5pdGUsIG9yIGlzIDAgb3IgMS5cclxuICAgICAgaWYgKGJhc2UucyA8IDAgfHwgIWQgfHwgIWRbMF0gfHwgYmFzZS5lcSgxKSkgcmV0dXJuIG5ldyBDdG9yKE5hTik7XHJcblxyXG4gICAgICBpc0Jhc2UxMCA9IGJhc2UuZXEoMTApO1xyXG4gICAgfVxyXG5cclxuICAgIGQgPSBhcmcuZDtcclxuXHJcbiAgICAvLyBJcyBhcmcgbmVnYXRpdmUsIG5vbi1maW5pdGUsIDAgb3IgMT9cclxuICAgIGlmIChhcmcucyA8IDAgfHwgIWQgfHwgIWRbMF0gfHwgYXJnLmVxKDEpKSB7XHJcbiAgICAgIHJldHVybiBuZXcgQ3RvcihkICYmICFkWzBdID8gLTEgLyAwIDogYXJnLnMgIT0gMSA/IE5hTiA6IGQgPyAwIDogMSAvIDApO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFRoZSByZXN1bHQgd2lsbCBoYXZlIGEgbm9uLXRlcm1pbmF0aW5nIGRlY2ltYWwgZXhwYW5zaW9uIGlmIGJhc2UgaXMgMTAgYW5kIGFyZyBpcyBub3QgYW5cclxuICAgIC8vIGludGVnZXIgcG93ZXIgb2YgMTAuXHJcbiAgICBpZiAoaXNCYXNlMTApIHtcclxuICAgICAgaWYgKGQubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIGluZiA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9yIChrID0gZFswXTsgayAlIDEwID09PSAwOykgayAvPSAxMDtcclxuICAgICAgICBpbmYgPSBrICE9PSAxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZXh0ZXJuYWwgPSBmYWxzZTtcclxuICAgIHNkID0gcHIgKyBndWFyZDtcclxuICAgIG51bSA9IG5hdHVyYWxMb2dhcml0aG0oYXJnLCBzZCk7XHJcbiAgICBkZW5vbWluYXRvciA9IGlzQmFzZTEwID8gZ2V0TG4xMChDdG9yLCBzZCArIDEwKSA6IG5hdHVyYWxMb2dhcml0aG0oYmFzZSwgc2QpO1xyXG5cclxuICAgIC8vIFRoZSByZXN1bHQgd2lsbCBoYXZlIDUgcm91bmRpbmcgZGlnaXRzLlxyXG4gICAgciA9IGRpdmlkZShudW0sIGRlbm9taW5hdG9yLCBzZCwgMSk7XHJcblxyXG4gICAgLy8gSWYgYXQgYSByb3VuZGluZyBib3VuZGFyeSwgaS5lLiB0aGUgcmVzdWx0J3Mgcm91bmRpbmcgZGlnaXRzIGFyZSBbNDldOTk5OSBvciBbNTBdMDAwMCxcclxuICAgIC8vIGNhbGN1bGF0ZSAxMCBmdXJ0aGVyIGRpZ2l0cy5cclxuICAgIC8vXHJcbiAgICAvLyBJZiB0aGUgcmVzdWx0IGlzIGtub3duIHRvIGhhdmUgYW4gaW5maW5pdGUgZGVjaW1hbCBleHBhbnNpb24sIHJlcGVhdCB0aGlzIHVudGlsIGl0IGlzIGNsZWFyXHJcbiAgICAvLyB0aGF0IHRoZSByZXN1bHQgaXMgYWJvdmUgb3IgYmVsb3cgdGhlIGJvdW5kYXJ5LiBPdGhlcndpc2UsIGlmIGFmdGVyIGNhbGN1bGF0aW5nIHRoZSAxMFxyXG4gICAgLy8gZnVydGhlciBkaWdpdHMsIHRoZSBsYXN0IDE0IGFyZSBuaW5lcywgcm91bmQgdXAgYW5kIGFzc3VtZSB0aGUgcmVzdWx0IGlzIGV4YWN0LlxyXG4gICAgLy8gQWxzbyBhc3N1bWUgdGhlIHJlc3VsdCBpcyBleGFjdCBpZiB0aGUgbGFzdCAxNCBhcmUgemVyby5cclxuICAgIC8vXHJcbiAgICAvLyBFeGFtcGxlIG9mIGEgcmVzdWx0IHRoYXQgd2lsbCBiZSBpbmNvcnJlY3RseSByb3VuZGVkOlxyXG4gICAgLy8gbG9nWzEwNDg1NzZdKDQ1MDM1OTk2MjczNzA1MDIpID0gMi42MDAwMDAwMDAwMDAwMDAwOTYxMDI3OTUxMTQ0NDc0Ni4uLlxyXG4gICAgLy8gVGhlIGFib3ZlIHJlc3VsdCBjb3JyZWN0bHkgcm91bmRlZCB1c2luZyBST1VORF9DRUlMIHRvIDEgZGVjaW1hbCBwbGFjZSBzaG91bGQgYmUgMi43LCBidXQgaXRcclxuICAgIC8vIHdpbGwgYmUgZ2l2ZW4gYXMgMi42IGFzIHRoZXJlIGFyZSAxNSB6ZXJvcyBpbW1lZGlhdGVseSBhZnRlciB0aGUgcmVxdWVzdGVkIGRlY2ltYWwgcGxhY2UsIHNvXHJcbiAgICAvLyB0aGUgZXhhY3QgcmVzdWx0IHdvdWxkIGJlIGFzc3VtZWQgdG8gYmUgMi42LCB3aGljaCByb3VuZGVkIHVzaW5nIFJPVU5EX0NFSUwgdG8gMSBkZWNpbWFsXHJcbiAgICAvLyBwbGFjZSBpcyBzdGlsbCAyLjYuXHJcbiAgICBpZiAoY2hlY2tSb3VuZGluZ0RpZ2l0cyhyLmQsIGsgPSBwciwgcm0pKSB7XHJcblxyXG4gICAgICBkbyB7XHJcbiAgICAgICAgc2QgKz0gMTA7XHJcbiAgICAgICAgbnVtID0gbmF0dXJhbExvZ2FyaXRobShhcmcsIHNkKTtcclxuICAgICAgICBkZW5vbWluYXRvciA9IGlzQmFzZTEwID8gZ2V0TG4xMChDdG9yLCBzZCArIDEwKSA6IG5hdHVyYWxMb2dhcml0aG0oYmFzZSwgc2QpO1xyXG4gICAgICAgIHIgPSBkaXZpZGUobnVtLCBkZW5vbWluYXRvciwgc2QsIDEpO1xyXG5cclxuICAgICAgICBpZiAoIWluZikge1xyXG5cclxuICAgICAgICAgIC8vIENoZWNrIGZvciAxNCBuaW5lcyBmcm9tIHRoZSAybmQgcm91bmRpbmcgZGlnaXQsIGFzIHRoZSBmaXJzdCBtYXkgYmUgNC5cclxuICAgICAgICAgIGlmICgrZGlnaXRzVG9TdHJpbmcoci5kKS5zbGljZShrICsgMSwgayArIDE1KSArIDEgPT0gMWUxNCkge1xyXG4gICAgICAgICAgICByID0gZmluYWxpc2UociwgcHIgKyAxLCAwKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0gd2hpbGUgKGNoZWNrUm91bmRpbmdEaWdpdHMoci5kLCBrICs9IDEwLCBybSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gZmluYWxpc2UociwgcHIsIHJtKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgbWF4aW11bSBvZiB0aGUgYXJndW1lbnRzIGFuZCB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsLlxyXG4gICAqXHJcbiAgICogYXJndW1lbnRzIHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICpcclxuICBQLm1heCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmNhbGwoYXJndW1lbnRzLCB0aGlzKTtcclxuICAgIHJldHVybiBtYXhPck1pbih0aGlzLmNvbnN0cnVjdG9yLCBhcmd1bWVudHMsICdsdCcpO1xyXG4gIH07XHJcbiAgICovXHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBtaW5pbXVtIG9mIHRoZSBhcmd1bWVudHMgYW5kIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwuXHJcbiAgICpcclxuICAgKiBhcmd1bWVudHMge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKlxyXG4gIFAubWluID0gZnVuY3Rpb24gKCkge1xyXG4gICAgQXJyYXkucHJvdG90eXBlLnB1c2guY2FsbChhcmd1bWVudHMsIHRoaXMpO1xyXG4gICAgcmV0dXJuIG1heE9yTWluKHRoaXMuY29uc3RydWN0b3IsIGFyZ3VtZW50cywgJ2d0Jyk7XHJcbiAgfTtcclxuICAgKi9cclxuXHJcblxyXG4gIC8qXHJcbiAgICogIG4gLSAwID0gblxyXG4gICAqICBuIC0gTiA9IE5cclxuICAgKiAgbiAtIEkgPSAtSVxyXG4gICAqICAwIC0gbiA9IC1uXHJcbiAgICogIDAgLSAwID0gMFxyXG4gICAqICAwIC0gTiA9IE5cclxuICAgKiAgMCAtIEkgPSAtSVxyXG4gICAqICBOIC0gbiA9IE5cclxuICAgKiAgTiAtIDAgPSBOXHJcbiAgICogIE4gLSBOID0gTlxyXG4gICAqICBOIC0gSSA9IE5cclxuICAgKiAgSSAtIG4gPSBJXHJcbiAgICogIEkgLSAwID0gSVxyXG4gICAqICBJIC0gTiA9IE5cclxuICAgKiAgSSAtIEkgPSBOXHJcbiAgICpcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIG1pbnVzIGB5YCwgcm91bmRlZCB0byBgcHJlY2lzaW9uYFxyXG4gICAqIHNpZ25pZmljYW50IGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKi9cclxuICBQLm1pbnVzID0gUC5zdWIgPSBmdW5jdGlvbiAoeSkge1xyXG4gICAgdmFyIGQsIGUsIGksIGosIGssIGxlbiwgcHIsIHJtLCB4ZCwgeGUsIHhMVHksIHlkLFxyXG4gICAgICB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3I7XHJcblxyXG4gICAgeSA9IG5ldyBDdG9yKHkpO1xyXG5cclxuICAgIC8vIElmIGVpdGhlciBpcyBub3QgZmluaXRlLi4uXHJcbiAgICBpZiAoIXguZCB8fCAheS5kKSB7XHJcblxyXG4gICAgICAvLyBSZXR1cm4gTmFOIGlmIGVpdGhlciBpcyBOYU4uXHJcbiAgICAgIGlmICgheC5zIHx8ICF5LnMpIHkgPSBuZXcgQ3RvcihOYU4pO1xyXG5cclxuICAgICAgLy8gUmV0dXJuIHkgbmVnYXRlZCBpZiB4IGlzIGZpbml0ZSBhbmQgeSBpcyDCsUluZmluaXR5LlxyXG4gICAgICBlbHNlIGlmICh4LmQpIHkucyA9IC15LnM7XHJcblxyXG4gICAgICAvLyBSZXR1cm4geCBpZiB5IGlzIGZpbml0ZSBhbmQgeCBpcyDCsUluZmluaXR5LlxyXG4gICAgICAvLyBSZXR1cm4geCBpZiBib3RoIGFyZSDCsUluZmluaXR5IHdpdGggZGlmZmVyZW50IHNpZ25zLlxyXG4gICAgICAvLyBSZXR1cm4gTmFOIGlmIGJvdGggYXJlIMKxSW5maW5pdHkgd2l0aCB0aGUgc2FtZSBzaWduLlxyXG4gICAgICBlbHNlIHkgPSBuZXcgQ3Rvcih5LmQgfHwgeC5zICE9PSB5LnMgPyB4IDogTmFOKTtcclxuXHJcbiAgICAgIHJldHVybiB5O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIElmIHNpZ25zIGRpZmZlci4uLlxyXG4gICAgaWYgKHgucyAhPSB5LnMpIHtcclxuICAgICAgeS5zID0gLXkucztcclxuICAgICAgcmV0dXJuIHgucGx1cyh5KTtcclxuICAgIH1cclxuXHJcbiAgICB4ZCA9IHguZDtcclxuICAgIHlkID0geS5kO1xyXG4gICAgcHIgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgIHJtID0gQ3Rvci5yb3VuZGluZztcclxuXHJcbiAgICAvLyBJZiBlaXRoZXIgaXMgemVyby4uLlxyXG4gICAgaWYgKCF4ZFswXSB8fCAheWRbMF0pIHtcclxuXHJcbiAgICAgIC8vIFJldHVybiB5IG5lZ2F0ZWQgaWYgeCBpcyB6ZXJvIGFuZCB5IGlzIG5vbi16ZXJvLlxyXG4gICAgICBpZiAoeWRbMF0pIHkucyA9IC15LnM7XHJcblxyXG4gICAgICAvLyBSZXR1cm4geCBpZiB5IGlzIHplcm8gYW5kIHggaXMgbm9uLXplcm8uXHJcbiAgICAgIGVsc2UgaWYgKHhkWzBdKSB5ID0gbmV3IEN0b3IoeCk7XHJcblxyXG4gICAgICAvLyBSZXR1cm4gemVybyBpZiBib3RoIGFyZSB6ZXJvLlxyXG4gICAgICAvLyBGcm9tIElFRUUgNzU0ICgyMDA4KSA2LjM6IDAgLSAwID0gLTAgLSAtMCA9IC0wIHdoZW4gcm91bmRpbmcgdG8gLUluZmluaXR5LlxyXG4gICAgICBlbHNlIHJldHVybiBuZXcgQ3RvcihybSA9PT0gMyA/IC0wIDogMCk7XHJcblxyXG4gICAgICByZXR1cm4gZXh0ZXJuYWwgPyBmaW5hbGlzZSh5LCBwciwgcm0pIDogeTtcclxuICAgIH1cclxuXHJcbiAgICAvLyB4IGFuZCB5IGFyZSBmaW5pdGUsIG5vbi16ZXJvIG51bWJlcnMgd2l0aCB0aGUgc2FtZSBzaWduLlxyXG5cclxuICAgIC8vIENhbGN1bGF0ZSBiYXNlIDFlNyBleHBvbmVudHMuXHJcbiAgICBlID0gbWF0aGZsb29yKHkuZSAvIExPR19CQVNFKTtcclxuICAgIHhlID0gbWF0aGZsb29yKHguZSAvIExPR19CQVNFKTtcclxuXHJcbiAgICB4ZCA9IHhkLnNsaWNlKCk7XHJcbiAgICBrID0geGUgLSBlO1xyXG5cclxuICAgIC8vIElmIGJhc2UgMWU3IGV4cG9uZW50cyBkaWZmZXIuLi5cclxuICAgIGlmIChrKSB7XHJcbiAgICAgIHhMVHkgPSBrIDwgMDtcclxuXHJcbiAgICAgIGlmICh4TFR5KSB7XHJcbiAgICAgICAgZCA9IHhkO1xyXG4gICAgICAgIGsgPSAtaztcclxuICAgICAgICBsZW4gPSB5ZC5sZW5ndGg7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZCA9IHlkO1xyXG4gICAgICAgIGUgPSB4ZTtcclxuICAgICAgICBsZW4gPSB4ZC5sZW5ndGg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIE51bWJlcnMgd2l0aCBtYXNzaXZlbHkgZGlmZmVyZW50IGV4cG9uZW50cyB3b3VsZCByZXN1bHQgaW4gYSB2ZXJ5IGhpZ2ggbnVtYmVyIG9mXHJcbiAgICAgIC8vIHplcm9zIG5lZWRpbmcgdG8gYmUgcHJlcGVuZGVkLCBidXQgdGhpcyBjYW4gYmUgYXZvaWRlZCB3aGlsZSBzdGlsbCBlbnN1cmluZyBjb3JyZWN0XHJcbiAgICAgIC8vIHJvdW5kaW5nIGJ5IGxpbWl0aW5nIHRoZSBudW1iZXIgb2YgemVyb3MgdG8gYE1hdGguY2VpbChwciAvIExPR19CQVNFKSArIDJgLlxyXG4gICAgICBpID0gTWF0aC5tYXgoTWF0aC5jZWlsKHByIC8gTE9HX0JBU0UpLCBsZW4pICsgMjtcclxuXHJcbiAgICAgIGlmIChrID4gaSkge1xyXG4gICAgICAgIGsgPSBpO1xyXG4gICAgICAgIGQubGVuZ3RoID0gMTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUHJlcGVuZCB6ZXJvcyB0byBlcXVhbGlzZSBleHBvbmVudHMuXHJcbiAgICAgIGQucmV2ZXJzZSgpO1xyXG4gICAgICBmb3IgKGkgPSBrOyBpLS07KSBkLnB1c2goMCk7XHJcbiAgICAgIGQucmV2ZXJzZSgpO1xyXG5cclxuICAgIC8vIEJhc2UgMWU3IGV4cG9uZW50cyBlcXVhbC5cclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAvLyBDaGVjayBkaWdpdHMgdG8gZGV0ZXJtaW5lIHdoaWNoIGlzIHRoZSBiaWdnZXIgbnVtYmVyLlxyXG5cclxuICAgICAgaSA9IHhkLmxlbmd0aDtcclxuICAgICAgbGVuID0geWQubGVuZ3RoO1xyXG4gICAgICB4TFR5ID0gaSA8IGxlbjtcclxuICAgICAgaWYgKHhMVHkpIGxlbiA9IGk7XHJcblxyXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICBpZiAoeGRbaV0gIT0geWRbaV0pIHtcclxuICAgICAgICAgIHhMVHkgPSB4ZFtpXSA8IHlkW2ldO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBrID0gMDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoeExUeSkge1xyXG4gICAgICBkID0geGQ7XHJcbiAgICAgIHhkID0geWQ7XHJcbiAgICAgIHlkID0gZDtcclxuICAgICAgeS5zID0gLXkucztcclxuICAgIH1cclxuXHJcbiAgICBsZW4gPSB4ZC5sZW5ndGg7XHJcblxyXG4gICAgLy8gQXBwZW5kIHplcm9zIHRvIGB4ZGAgaWYgc2hvcnRlci5cclxuICAgIC8vIERvbid0IGFkZCB6ZXJvcyB0byBgeWRgIGlmIHNob3J0ZXIgYXMgc3VidHJhY3Rpb24gb25seSBuZWVkcyB0byBzdGFydCBhdCBgeWRgIGxlbmd0aC5cclxuICAgIGZvciAoaSA9IHlkLmxlbmd0aCAtIGxlbjsgaSA+IDA7IC0taSkgeGRbbGVuKytdID0gMDtcclxuXHJcbiAgICAvLyBTdWJ0cmFjdCB5ZCBmcm9tIHhkLlxyXG4gICAgZm9yIChpID0geWQubGVuZ3RoOyBpID4gazspIHtcclxuXHJcbiAgICAgIGlmICh4ZFstLWldIDwgeWRbaV0pIHtcclxuICAgICAgICBmb3IgKGogPSBpOyBqICYmIHhkWy0tal0gPT09IDA7KSB4ZFtqXSA9IEJBU0UgLSAxO1xyXG4gICAgICAgIC0teGRbal07XHJcbiAgICAgICAgeGRbaV0gKz0gQkFTRTtcclxuICAgICAgfVxyXG5cclxuICAgICAgeGRbaV0gLT0geWRbaV07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmVtb3ZlIHRyYWlsaW5nIHplcm9zLlxyXG4gICAgZm9yICg7IHhkWy0tbGVuXSA9PT0gMDspIHhkLnBvcCgpO1xyXG5cclxuICAgIC8vIFJlbW92ZSBsZWFkaW5nIHplcm9zIGFuZCBhZGp1c3QgZXhwb25lbnQgYWNjb3JkaW5nbHkuXHJcbiAgICBmb3IgKDsgeGRbMF0gPT09IDA7IHhkLnNoaWZ0KCkpIC0tZTtcclxuXHJcbiAgICAvLyBaZXJvP1xyXG4gICAgaWYgKCF4ZFswXSkgcmV0dXJuIG5ldyBDdG9yKHJtID09PSAzID8gLTAgOiAwKTtcclxuXHJcbiAgICB5LmQgPSB4ZDtcclxuICAgIHkuZSA9IGdldEJhc2UxMEV4cG9uZW50KHhkLCBlKTtcclxuXHJcbiAgICByZXR1cm4gZXh0ZXJuYWwgPyBmaW5hbGlzZSh5LCBwciwgcm0pIDogeTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiAgIG4gJSAwID0gIE5cclxuICAgKiAgIG4gJSBOID0gIE5cclxuICAgKiAgIG4gJSBJID0gIG5cclxuICAgKiAgIDAgJSBuID0gIDBcclxuICAgKiAgLTAgJSBuID0gLTBcclxuICAgKiAgIDAgJSAwID0gIE5cclxuICAgKiAgIDAgJSBOID0gIE5cclxuICAgKiAgIDAgJSBJID0gIDBcclxuICAgKiAgIE4gJSBuID0gIE5cclxuICAgKiAgIE4gJSAwID0gIE5cclxuICAgKiAgIE4gJSBOID0gIE5cclxuICAgKiAgIE4gJSBJID0gIE5cclxuICAgKiAgIEkgJSBuID0gIE5cclxuICAgKiAgIEkgJSAwID0gIE5cclxuICAgKiAgIEkgJSBOID0gIE5cclxuICAgKiAgIEkgJSBJID0gIE5cclxuICAgKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgbW9kdWxvIGB5YCwgcm91bmRlZCB0b1xyXG4gICAqIGBwcmVjaXNpb25gIHNpZ25pZmljYW50IGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiBUaGUgcmVzdWx0IGRlcGVuZHMgb24gdGhlIG1vZHVsbyBtb2RlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5tb2R1bG8gPSBQLm1vZCA9IGZ1bmN0aW9uICh5KSB7XHJcbiAgICB2YXIgcSxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgIHkgPSBuZXcgQ3Rvcih5KTtcclxuXHJcbiAgICAvLyBSZXR1cm4gTmFOIGlmIHggaXMgwrFJbmZpbml0eSBvciBOYU4sIG9yIHkgaXMgTmFOIG9yIMKxMC5cclxuICAgIGlmICgheC5kIHx8ICF5LnMgfHwgeS5kICYmICF5LmRbMF0pIHJldHVybiBuZXcgQ3RvcihOYU4pO1xyXG5cclxuICAgIC8vIFJldHVybiB4IGlmIHkgaXMgwrFJbmZpbml0eSBvciB4IGlzIMKxMC5cclxuICAgIGlmICgheS5kIHx8IHguZCAmJiAheC5kWzBdKSB7XHJcbiAgICAgIHJldHVybiBmaW5hbGlzZShuZXcgQ3Rvcih4KSwgQ3Rvci5wcmVjaXNpb24sIEN0b3Iucm91bmRpbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFByZXZlbnQgcm91bmRpbmcgb2YgaW50ZXJtZWRpYXRlIGNhbGN1bGF0aW9ucy5cclxuICAgIGV4dGVybmFsID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKEN0b3IubW9kdWxvID09IDkpIHtcclxuXHJcbiAgICAgIC8vIEV1Y2xpZGlhbiBkaXZpc2lvbjogcSA9IHNpZ24oeSkgKiBmbG9vcih4IC8gYWJzKHkpKVxyXG4gICAgICAvLyByZXN1bHQgPSB4IC0gcSAqIHkgICAgd2hlcmUgIDAgPD0gcmVzdWx0IDwgYWJzKHkpXHJcbiAgICAgIHEgPSBkaXZpZGUoeCwgeS5hYnMoKSwgMCwgMywgMSk7XHJcbiAgICAgIHEucyAqPSB5LnM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBxID0gZGl2aWRlKHgsIHksIDAsIEN0b3IubW9kdWxvLCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBxID0gcS50aW1lcyh5KTtcclxuXHJcbiAgICBleHRlcm5hbCA9IHRydWU7XHJcblxyXG4gICAgcmV0dXJuIHgubWludXMocSk7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIG5hdHVyYWwgZXhwb25lbnRpYWwgb2YgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCxcclxuICAgKiBpLmUuIHRoZSBiYXNlIGUgcmFpc2VkIHRvIHRoZSBwb3dlciB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gXHJcbiAgICogc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAubmF0dXJhbEV4cG9uZW50aWFsID0gUC5leHAgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gbmF0dXJhbEV4cG9uZW50aWFsKHRoaXMpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBuYXR1cmFsIGxvZ2FyaXRobSBvZiB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsLFxyXG4gICAqIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAgc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAubmF0dXJhbExvZ2FyaXRobSA9IFAubG4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gbmF0dXJhbExvZ2FyaXRobSh0aGlzKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIG5lZ2F0ZWQsIGkuZS4gYXMgaWYgbXVsdGlwbGllZCBieVxyXG4gICAqIC0xLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5uZWdhdGVkID0gUC5uZWcgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgeCA9IG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMpO1xyXG4gICAgeC5zID0gLXgucztcclxuICAgIHJldHVybiBmaW5hbGlzZSh4KTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiAgbiArIDAgPSBuXHJcbiAgICogIG4gKyBOID0gTlxyXG4gICAqICBuICsgSSA9IElcclxuICAgKiAgMCArIG4gPSBuXHJcbiAgICogIDAgKyAwID0gMFxyXG4gICAqICAwICsgTiA9IE5cclxuICAgKiAgMCArIEkgPSBJXHJcbiAgICogIE4gKyBuID0gTlxyXG4gICAqICBOICsgMCA9IE5cclxuICAgKiAgTiArIE4gPSBOXHJcbiAgICogIE4gKyBJID0gTlxyXG4gICAqICBJICsgbiA9IElcclxuICAgKiAgSSArIDAgPSBJXHJcbiAgICogIEkgKyBOID0gTlxyXG4gICAqICBJICsgSSA9IElcclxuICAgKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgcGx1cyBgeWAsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmBcclxuICAgKiBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC5wbHVzID0gUC5hZGQgPSBmdW5jdGlvbiAoeSkge1xyXG4gICAgdmFyIGNhcnJ5LCBkLCBlLCBpLCBrLCBsZW4sIHByLCBybSwgeGQsIHlkLFxyXG4gICAgICB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3I7XHJcblxyXG4gICAgeSA9IG5ldyBDdG9yKHkpO1xyXG5cclxuICAgIC8vIElmIGVpdGhlciBpcyBub3QgZmluaXRlLi4uXHJcbiAgICBpZiAoIXguZCB8fCAheS5kKSB7XHJcblxyXG4gICAgICAvLyBSZXR1cm4gTmFOIGlmIGVpdGhlciBpcyBOYU4uXHJcbiAgICAgIGlmICgheC5zIHx8ICF5LnMpIHkgPSBuZXcgQ3RvcihOYU4pO1xyXG5cclxuICAgICAgLy8gUmV0dXJuIHggaWYgeSBpcyBmaW5pdGUgYW5kIHggaXMgwrFJbmZpbml0eS5cclxuICAgICAgLy8gUmV0dXJuIHggaWYgYm90aCBhcmUgwrFJbmZpbml0eSB3aXRoIHRoZSBzYW1lIHNpZ24uXHJcbiAgICAgIC8vIFJldHVybiBOYU4gaWYgYm90aCBhcmUgwrFJbmZpbml0eSB3aXRoIGRpZmZlcmVudCBzaWducy5cclxuICAgICAgLy8gUmV0dXJuIHkgaWYgeCBpcyBmaW5pdGUgYW5kIHkgaXMgwrFJbmZpbml0eS5cclxuICAgICAgZWxzZSBpZiAoIXguZCkgeSA9IG5ldyBDdG9yKHkuZCB8fCB4LnMgPT09IHkucyA/IHggOiBOYU4pO1xyXG5cclxuICAgICAgcmV0dXJuIHk7XHJcbiAgICB9XHJcblxyXG4gICAgIC8vIElmIHNpZ25zIGRpZmZlci4uLlxyXG4gICAgaWYgKHgucyAhPSB5LnMpIHtcclxuICAgICAgeS5zID0gLXkucztcclxuICAgICAgcmV0dXJuIHgubWludXMoeSk7XHJcbiAgICB9XHJcblxyXG4gICAgeGQgPSB4LmQ7XHJcbiAgICB5ZCA9IHkuZDtcclxuICAgIHByID0gQ3Rvci5wcmVjaXNpb247XHJcbiAgICBybSA9IEN0b3Iucm91bmRpbmc7XHJcblxyXG4gICAgLy8gSWYgZWl0aGVyIGlzIHplcm8uLi5cclxuICAgIGlmICgheGRbMF0gfHwgIXlkWzBdKSB7XHJcblxyXG4gICAgICAvLyBSZXR1cm4geCBpZiB5IGlzIHplcm8uXHJcbiAgICAgIC8vIFJldHVybiB5IGlmIHkgaXMgbm9uLXplcm8uXHJcbiAgICAgIGlmICgheWRbMF0pIHkgPSBuZXcgQ3Rvcih4KTtcclxuXHJcbiAgICAgIHJldHVybiBleHRlcm5hbCA/IGZpbmFsaXNlKHksIHByLCBybSkgOiB5O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHggYW5kIHkgYXJlIGZpbml0ZSwgbm9uLXplcm8gbnVtYmVycyB3aXRoIHRoZSBzYW1lIHNpZ24uXHJcblxyXG4gICAgLy8gQ2FsY3VsYXRlIGJhc2UgMWU3IGV4cG9uZW50cy5cclxuICAgIGsgPSBtYXRoZmxvb3IoeC5lIC8gTE9HX0JBU0UpO1xyXG4gICAgZSA9IG1hdGhmbG9vcih5LmUgLyBMT0dfQkFTRSk7XHJcblxyXG4gICAgeGQgPSB4ZC5zbGljZSgpO1xyXG4gICAgaSA9IGsgLSBlO1xyXG5cclxuICAgIC8vIElmIGJhc2UgMWU3IGV4cG9uZW50cyBkaWZmZXIuLi5cclxuICAgIGlmIChpKSB7XHJcblxyXG4gICAgICBpZiAoaSA8IDApIHtcclxuICAgICAgICBkID0geGQ7XHJcbiAgICAgICAgaSA9IC1pO1xyXG4gICAgICAgIGxlbiA9IHlkLmxlbmd0aDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBkID0geWQ7XHJcbiAgICAgICAgZSA9IGs7XHJcbiAgICAgICAgbGVuID0geGQubGVuZ3RoO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBMaW1pdCBudW1iZXIgb2YgemVyb3MgcHJlcGVuZGVkIHRvIG1heChjZWlsKHByIC8gTE9HX0JBU0UpLCBsZW4pICsgMS5cclxuICAgICAgayA9IE1hdGguY2VpbChwciAvIExPR19CQVNFKTtcclxuICAgICAgbGVuID0gayA+IGxlbiA/IGsgKyAxIDogbGVuICsgMTtcclxuXHJcbiAgICAgIGlmIChpID4gbGVuKSB7XHJcbiAgICAgICAgaSA9IGxlbjtcclxuICAgICAgICBkLmxlbmd0aCA9IDE7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFByZXBlbmQgemVyb3MgdG8gZXF1YWxpc2UgZXhwb25lbnRzLiBOb3RlOiBGYXN0ZXIgdG8gdXNlIHJldmVyc2UgdGhlbiBkbyB1bnNoaWZ0cy5cclxuICAgICAgZC5yZXZlcnNlKCk7XHJcbiAgICAgIGZvciAoOyBpLS07KSBkLnB1c2goMCk7XHJcbiAgICAgIGQucmV2ZXJzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGxlbiA9IHhkLmxlbmd0aDtcclxuICAgIGkgPSB5ZC5sZW5ndGg7XHJcblxyXG4gICAgLy8gSWYgeWQgaXMgbG9uZ2VyIHRoYW4geGQsIHN3YXAgeGQgYW5kIHlkIHNvIHhkIHBvaW50cyB0byB0aGUgbG9uZ2VyIGFycmF5LlxyXG4gICAgaWYgKGxlbiAtIGkgPCAwKSB7XHJcbiAgICAgIGkgPSBsZW47XHJcbiAgICAgIGQgPSB5ZDtcclxuICAgICAgeWQgPSB4ZDtcclxuICAgICAgeGQgPSBkO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE9ubHkgc3RhcnQgYWRkaW5nIGF0IHlkLmxlbmd0aCAtIDEgYXMgdGhlIGZ1cnRoZXIgZGlnaXRzIG9mIHhkIGNhbiBiZSBsZWZ0IGFzIHRoZXkgYXJlLlxyXG4gICAgZm9yIChjYXJyeSA9IDA7IGk7KSB7XHJcbiAgICAgIGNhcnJ5ID0gKHhkWy0taV0gPSB4ZFtpXSArIHlkW2ldICsgY2FycnkpIC8gQkFTRSB8IDA7XHJcbiAgICAgIHhkW2ldICU9IEJBU0U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNhcnJ5KSB7XHJcbiAgICAgIHhkLnVuc2hpZnQoY2FycnkpO1xyXG4gICAgICArK2U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmVtb3ZlIHRyYWlsaW5nIHplcm9zLlxyXG4gICAgLy8gTm8gbmVlZCB0byBjaGVjayBmb3IgemVybywgYXMgK3ggKyAreSAhPSAwICYmIC14ICsgLXkgIT0gMFxyXG4gICAgZm9yIChsZW4gPSB4ZC5sZW5ndGg7IHhkWy0tbGVuXSA9PSAwOykgeGQucG9wKCk7XHJcblxyXG4gICAgeS5kID0geGQ7XHJcbiAgICB5LmUgPSBnZXRCYXNlMTBFeHBvbmVudCh4ZCwgZSk7XHJcblxyXG4gICAgcmV0dXJuIGV4dGVybmFsID8gZmluYWxpc2UoeSwgcHIsIHJtKSA6IHk7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIHRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzIG9mIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwuXHJcbiAgICpcclxuICAgKiBbel0ge2Jvb2xlYW58bnVtYmVyfSBXaGV0aGVyIHRvIGNvdW50IGludGVnZXItcGFydCB0cmFpbGluZyB6ZXJvczogdHJ1ZSwgZmFsc2UsIDEgb3IgMC5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAucHJlY2lzaW9uID0gUC5zZCA9IGZ1bmN0aW9uICh6KSB7XHJcbiAgICB2YXIgayxcclxuICAgICAgeCA9IHRoaXM7XHJcblxyXG4gICAgaWYgKHogIT09IHZvaWQgMCAmJiB6ICE9PSAhIXogJiYgeiAhPT0gMSAmJiB6ICE9PSAwKSB0aHJvdyBFcnJvcihpbnZhbGlkQXJndW1lbnQgKyB6KTtcclxuXHJcbiAgICBpZiAoeC5kKSB7XHJcbiAgICAgIGsgPSBnZXRQcmVjaXNpb24oeC5kKTtcclxuICAgICAgaWYgKHogJiYgeC5lICsgMSA+IGspIGsgPSB4LmUgKyAxO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgayA9IE5hTjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaztcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIHJvdW5kZWQgdG8gYSB3aG9sZSBudW1iZXIgdXNpbmdcclxuICAgKiByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKi9cclxuICBQLnJvdW5kID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICByZXR1cm4gZmluYWxpc2UobmV3IEN0b3IoeCksIHguZSArIDEsIEN0b3Iucm91bmRpbmcpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBzaW5lIG9mIHRoZSB2YWx1ZSBpbiByYWRpYW5zIG9mIHRoaXMgRGVjaW1hbC5cclxuICAgKlxyXG4gICAqIERvbWFpbjogWy1JbmZpbml0eSwgSW5maW5pdHldXHJcbiAgICogUmFuZ2U6IFstMSwgMV1cclxuICAgKlxyXG4gICAqIHNpbih4KSA9IHggLSB4XjMvMyEgKyB4XjUvNSEgLSAuLi5cclxuICAgKlxyXG4gICAqIHNpbigwKSAgICAgICAgID0gMFxyXG4gICAqIHNpbigtMCkgICAgICAgID0gLTBcclxuICAgKiBzaW4oSW5maW5pdHkpICA9IE5hTlxyXG4gICAqIHNpbigtSW5maW5pdHkpID0gTmFOXHJcbiAgICogc2luKE5hTikgICAgICAgPSBOYU5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAuc2luZSA9IFAuc2luID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIHByLCBybSxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgIGlmICgheC5pc0Zpbml0ZSgpKSByZXR1cm4gbmV3IEN0b3IoTmFOKTtcclxuICAgIGlmICh4LmlzWmVybygpKSByZXR1cm4gbmV3IEN0b3IoeCk7XHJcblxyXG4gICAgcHIgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgIHJtID0gQ3Rvci5yb3VuZGluZztcclxuICAgIEN0b3IucHJlY2lzaW9uID0gcHIgKyBNYXRoLm1heCh4LmUsIHguc2QoKSkgKyBMT0dfQkFTRTtcclxuICAgIEN0b3Iucm91bmRpbmcgPSAxO1xyXG5cclxuICAgIHggPSBzaW5lKEN0b3IsIHRvTGVzc1RoYW5IYWxmUGkoQ3RvciwgeCkpO1xyXG5cclxuICAgIEN0b3IucHJlY2lzaW9uID0gcHI7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gcm07XHJcblxyXG4gICAgcmV0dXJuIGZpbmFsaXNlKHF1YWRyYW50ID4gMiA/IHgubmVnKCkgOiB4LCBwciwgcm0sIHRydWUpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGlzIERlY2ltYWwsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmBcclxuICAgKiBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogIHNxcnQoLW4pID0gIE5cclxuICAgKiAgc3FydChOKSAgPSAgTlxyXG4gICAqICBzcXJ0KC1JKSA9ICBOXHJcbiAgICogIHNxcnQoSSkgID0gIElcclxuICAgKiAgc3FydCgwKSAgPSAgMFxyXG4gICAqICBzcXJ0KC0wKSA9IC0wXHJcbiAgICpcclxuICAgKi9cclxuICBQLnNxdWFyZVJvb3QgPSBQLnNxcnQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgbSwgbiwgc2QsIHIsIHJlcCwgdCxcclxuICAgICAgeCA9IHRoaXMsXHJcbiAgICAgIGQgPSB4LmQsXHJcbiAgICAgIGUgPSB4LmUsXHJcbiAgICAgIHMgPSB4LnMsXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgIC8vIE5lZ2F0aXZlL05hTi9JbmZpbml0eS96ZXJvP1xyXG4gICAgaWYgKHMgIT09IDEgfHwgIWQgfHwgIWRbMF0pIHtcclxuICAgICAgcmV0dXJuIG5ldyBDdG9yKCFzIHx8IHMgPCAwICYmICghZCB8fCBkWzBdKSA/IE5hTiA6IGQgPyB4IDogMSAvIDApO1xyXG4gICAgfVxyXG5cclxuICAgIGV4dGVybmFsID0gZmFsc2U7XHJcblxyXG4gICAgLy8gSW5pdGlhbCBlc3RpbWF0ZS5cclxuICAgIHMgPSBNYXRoLnNxcnQoK3gpO1xyXG5cclxuICAgIC8vIE1hdGguc3FydCB1bmRlcmZsb3cvb3ZlcmZsb3c/XHJcbiAgICAvLyBQYXNzIHggdG8gTWF0aC5zcXJ0IGFzIGludGVnZXIsIHRoZW4gYWRqdXN0IHRoZSBleHBvbmVudCBvZiB0aGUgcmVzdWx0LlxyXG4gICAgaWYgKHMgPT0gMCB8fCBzID09IDEgLyAwKSB7XHJcbiAgICAgIG4gPSBkaWdpdHNUb1N0cmluZyhkKTtcclxuXHJcbiAgICAgIGlmICgobi5sZW5ndGggKyBlKSAlIDIgPT0gMCkgbiArPSAnMCc7XHJcbiAgICAgIHMgPSBNYXRoLnNxcnQobik7XHJcbiAgICAgIGUgPSBtYXRoZmxvb3IoKGUgKyAxKSAvIDIpIC0gKGUgPCAwIHx8IGUgJSAyKTtcclxuXHJcbiAgICAgIGlmIChzID09IDEgLyAwKSB7XHJcbiAgICAgICAgbiA9ICc1ZScgKyBlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG4gPSBzLnRvRXhwb25lbnRpYWwoKTtcclxuICAgICAgICBuID0gbi5zbGljZSgwLCBuLmluZGV4T2YoJ2UnKSArIDEpICsgZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgciA9IG5ldyBDdG9yKG4pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgciA9IG5ldyBDdG9yKHMudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2QgPSAoZSA9IEN0b3IucHJlY2lzaW9uKSArIDM7XHJcblxyXG4gICAgLy8gTmV3dG9uLVJhcGhzb24gaXRlcmF0aW9uLlxyXG4gICAgZm9yICg7Oykge1xyXG4gICAgICB0ID0gcjtcclxuICAgICAgciA9IHQucGx1cyhkaXZpZGUoeCwgdCwgc2QgKyAyLCAxKSkudGltZXMoMC41KTtcclxuXHJcbiAgICAgIC8vIFRPRE8/IFJlcGxhY2Ugd2l0aCBmb3ItbG9vcCBhbmQgY2hlY2tSb3VuZGluZ0RpZ2l0cy5cclxuICAgICAgaWYgKGRpZ2l0c1RvU3RyaW5nKHQuZCkuc2xpY2UoMCwgc2QpID09PSAobiA9IGRpZ2l0c1RvU3RyaW5nKHIuZCkpLnNsaWNlKDAsIHNkKSkge1xyXG4gICAgICAgIG4gPSBuLnNsaWNlKHNkIC0gMywgc2QgKyAxKTtcclxuXHJcbiAgICAgICAgLy8gVGhlIDR0aCByb3VuZGluZyBkaWdpdCBtYXkgYmUgaW4gZXJyb3IgYnkgLTEgc28gaWYgdGhlIDQgcm91bmRpbmcgZGlnaXRzIGFyZSA5OTk5IG9yXHJcbiAgICAgICAgLy8gNDk5OSwgaS5lLiBhcHByb2FjaGluZyBhIHJvdW5kaW5nIGJvdW5kYXJ5LCBjb250aW51ZSB0aGUgaXRlcmF0aW9uLlxyXG4gICAgICAgIGlmIChuID09ICc5OTk5JyB8fCAhcmVwICYmIG4gPT0gJzQ5OTknKSB7XHJcblxyXG4gICAgICAgICAgLy8gT24gdGhlIGZpcnN0IGl0ZXJhdGlvbiBvbmx5LCBjaGVjayB0byBzZWUgaWYgcm91bmRpbmcgdXAgZ2l2ZXMgdGhlIGV4YWN0IHJlc3VsdCBhcyB0aGVcclxuICAgICAgICAgIC8vIG5pbmVzIG1heSBpbmZpbml0ZWx5IHJlcGVhdC5cclxuICAgICAgICAgIGlmICghcmVwKSB7XHJcbiAgICAgICAgICAgIGZpbmFsaXNlKHQsIGUgKyAxLCAwKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0LnRpbWVzKHQpLmVxKHgpKSB7XHJcbiAgICAgICAgICAgICAgciA9IHQ7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBzZCArPSA0O1xyXG4gICAgICAgICAgcmVwID0gMTtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vIElmIHRoZSByb3VuZGluZyBkaWdpdHMgYXJlIG51bGwsIDB7MCw0fSBvciA1MHswLDN9LCBjaGVjayBmb3IgYW4gZXhhY3QgcmVzdWx0LlxyXG4gICAgICAgICAgLy8gSWYgbm90LCB0aGVuIHRoZXJlIGFyZSBmdXJ0aGVyIGRpZ2l0cyBhbmQgbSB3aWxsIGJlIHRydXRoeS5cclxuICAgICAgICAgIGlmICghK24gfHwgIStuLnNsaWNlKDEpICYmIG4uY2hhckF0KDApID09ICc1Jykge1xyXG5cclxuICAgICAgICAgICAgLy8gVHJ1bmNhdGUgdG8gdGhlIGZpcnN0IHJvdW5kaW5nIGRpZ2l0LlxyXG4gICAgICAgICAgICBmaW5hbGlzZShyLCBlICsgMSwgMSk7XHJcbiAgICAgICAgICAgIG0gPSAhci50aW1lcyhyKS5lcSh4KTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHRlcm5hbCA9IHRydWU7XHJcblxyXG4gICAgcmV0dXJuIGZpbmFsaXNlKHIsIGUsIEN0b3Iucm91bmRpbmcsIG0pO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB0YW5nZW50IG9mIHRoZSB2YWx1ZSBpbiByYWRpYW5zIG9mIHRoaXMgRGVjaW1hbC5cclxuICAgKlxyXG4gICAqIERvbWFpbjogWy1JbmZpbml0eSwgSW5maW5pdHldXHJcbiAgICogUmFuZ2U6IFstSW5maW5pdHksIEluZmluaXR5XVxyXG4gICAqXHJcbiAgICogdGFuKDApICAgICAgICAgPSAwXHJcbiAgICogdGFuKC0wKSAgICAgICAgPSAtMFxyXG4gICAqIHRhbihJbmZpbml0eSkgID0gTmFOXHJcbiAgICogdGFuKC1JbmZpbml0eSkgPSBOYU5cclxuICAgKiB0YW4oTmFOKSAgICAgICA9IE5hTlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC50YW5nZW50ID0gUC50YW4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgcHIsIHJtLFxyXG4gICAgICB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3I7XHJcblxyXG4gICAgaWYgKCF4LmlzRmluaXRlKCkpIHJldHVybiBuZXcgQ3RvcihOYU4pO1xyXG4gICAgaWYgKHguaXNaZXJvKCkpIHJldHVybiBuZXcgQ3Rvcih4KTtcclxuXHJcbiAgICBwciA9IEN0b3IucHJlY2lzaW9uO1xyXG4gICAgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSBwciArIDEwO1xyXG4gICAgQ3Rvci5yb3VuZGluZyA9IDE7XHJcblxyXG4gICAgeCA9IHguc2luKCk7XHJcbiAgICB4LnMgPSAxO1xyXG4gICAgeCA9IGRpdmlkZSh4LCBuZXcgQ3RvcigxKS5taW51cyh4LnRpbWVzKHgpKS5zcXJ0KCksIHByICsgMTAsIDApO1xyXG5cclxuICAgIEN0b3IucHJlY2lzaW9uID0gcHI7XHJcbiAgICBDdG9yLnJvdW5kaW5nID0gcm07XHJcblxyXG4gICAgcmV0dXJuIGZpbmFsaXNlKHF1YWRyYW50ID09IDIgfHwgcXVhZHJhbnQgPT0gNCA/IHgubmVnKCkgOiB4LCBwciwgcm0sIHRydWUpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqICBuICogMCA9IDBcclxuICAgKiAgbiAqIE4gPSBOXHJcbiAgICogIG4gKiBJID0gSVxyXG4gICAqICAwICogbiA9IDBcclxuICAgKiAgMCAqIDAgPSAwXHJcbiAgICogIDAgKiBOID0gTlxyXG4gICAqICAwICogSSA9IE5cclxuICAgKiAgTiAqIG4gPSBOXHJcbiAgICogIE4gKiAwID0gTlxyXG4gICAqICBOICogTiA9IE5cclxuICAgKiAgTiAqIEkgPSBOXHJcbiAgICogIEkgKiBuID0gSVxyXG4gICAqICBJICogMCA9IE5cclxuICAgKiAgSSAqIE4gPSBOXHJcbiAgICogIEkgKiBJID0gSVxyXG4gICAqXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhpcyBEZWNpbWFsIHRpbWVzIGB5YCwgcm91bmRlZCB0byBgcHJlY2lzaW9uYCBzaWduaWZpY2FudFxyXG4gICAqIGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKi9cclxuICBQLnRpbWVzID0gUC5tdWwgPSBmdW5jdGlvbiAoeSkge1xyXG4gICAgdmFyIGNhcnJ5LCBlLCBpLCBrLCByLCByTCwgdCwgeGRMLCB5ZEwsXHJcbiAgICAgIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcixcclxuICAgICAgeGQgPSB4LmQsXHJcbiAgICAgIHlkID0gKHkgPSBuZXcgQ3Rvcih5KSkuZDtcclxuXHJcbiAgICB5LnMgKj0geC5zO1xyXG5cclxuICAgICAvLyBJZiBlaXRoZXIgaXMgTmFOLCDCsUluZmluaXR5IG9yIMKxMC4uLlxyXG4gICAgaWYgKCF4ZCB8fCAheGRbMF0gfHwgIXlkIHx8ICF5ZFswXSkge1xyXG5cclxuICAgICAgcmV0dXJuIG5ldyBDdG9yKCF5LnMgfHwgeGQgJiYgIXhkWzBdICYmICF5ZCB8fCB5ZCAmJiAheWRbMF0gJiYgIXhkXHJcblxyXG4gICAgICAgIC8vIFJldHVybiBOYU4gaWYgZWl0aGVyIGlzIE5hTi5cclxuICAgICAgICAvLyBSZXR1cm4gTmFOIGlmIHggaXMgwrEwIGFuZCB5IGlzIMKxSW5maW5pdHksIG9yIHkgaXMgwrEwIGFuZCB4IGlzIMKxSW5maW5pdHkuXHJcbiAgICAgICAgPyBOYU5cclxuXHJcbiAgICAgICAgLy8gUmV0dXJuIMKxSW5maW5pdHkgaWYgZWl0aGVyIGlzIMKxSW5maW5pdHkuXHJcbiAgICAgICAgLy8gUmV0dXJuIMKxMCBpZiBlaXRoZXIgaXMgwrEwLlxyXG4gICAgICAgIDogIXhkIHx8ICF5ZCA/IHkucyAvIDAgOiB5LnMgKiAwKTtcclxuICAgIH1cclxuXHJcbiAgICBlID0gbWF0aGZsb29yKHguZSAvIExPR19CQVNFKSArIG1hdGhmbG9vcih5LmUgLyBMT0dfQkFTRSk7XHJcbiAgICB4ZEwgPSB4ZC5sZW5ndGg7XHJcbiAgICB5ZEwgPSB5ZC5sZW5ndGg7XHJcblxyXG4gICAgLy8gRW5zdXJlIHhkIHBvaW50cyB0byB0aGUgbG9uZ2VyIGFycmF5LlxyXG4gICAgaWYgKHhkTCA8IHlkTCkge1xyXG4gICAgICByID0geGQ7XHJcbiAgICAgIHhkID0geWQ7XHJcbiAgICAgIHlkID0gcjtcclxuICAgICAgckwgPSB4ZEw7XHJcbiAgICAgIHhkTCA9IHlkTDtcclxuICAgICAgeWRMID0gckw7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSW5pdGlhbGlzZSB0aGUgcmVzdWx0IGFycmF5IHdpdGggemVyb3MuXHJcbiAgICByID0gW107XHJcbiAgICByTCA9IHhkTCArIHlkTDtcclxuICAgIGZvciAoaSA9IHJMOyBpLS07KSByLnB1c2goMCk7XHJcblxyXG4gICAgLy8gTXVsdGlwbHkhXHJcbiAgICBmb3IgKGkgPSB5ZEw7IC0taSA+PSAwOykge1xyXG4gICAgICBjYXJyeSA9IDA7XHJcbiAgICAgIGZvciAoayA9IHhkTCArIGk7IGsgPiBpOykge1xyXG4gICAgICAgIHQgPSByW2tdICsgeWRbaV0gKiB4ZFtrIC0gaSAtIDFdICsgY2Fycnk7XHJcbiAgICAgICAgcltrLS1dID0gdCAlIEJBU0UgfCAwO1xyXG4gICAgICAgIGNhcnJ5ID0gdCAvIEJBU0UgfCAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByW2tdID0gKHJba10gKyBjYXJyeSkgJSBCQVNFIHwgMDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZW1vdmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICBmb3IgKDsgIXJbLS1yTF07KSByLnBvcCgpO1xyXG5cclxuICAgIGlmIChjYXJyeSkgKytlO1xyXG4gICAgZWxzZSByLnNoaWZ0KCk7XHJcblxyXG4gICAgeS5kID0gcjtcclxuICAgIHkuZSA9IGdldEJhc2UxMEV4cG9uZW50KHIsIGUpO1xyXG5cclxuICAgIHJldHVybiBleHRlcm5hbCA/IGZpbmFsaXNlKHksIEN0b3IucHJlY2lzaW9uLCBDdG9yLnJvdW5kaW5nKSA6IHk7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIGluIGJhc2UgMiwgcm91bmQgdG8gYHNkYCBzaWduaWZpY2FudFxyXG4gICAqIGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGBybWAuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgb3B0aW9uYWwgYHNkYCBhcmd1bWVudCBpcyBwcmVzZW50IHRoZW4gcmV0dXJuIGJpbmFyeSBleHBvbmVudGlhbCBub3RhdGlvbi5cclxuICAgKlxyXG4gICAqIFtzZF0ge251bWJlcn0gU2lnbmlmaWNhbnQgZGlnaXRzLiBJbnRlZ2VyLCAxIHRvIE1BWF9ESUdJVFMgaW5jbHVzaXZlLlxyXG4gICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAudG9CaW5hcnkgPSBmdW5jdGlvbiAoc2QsIHJtKSB7XHJcbiAgICByZXR1cm4gdG9TdHJpbmdCaW5hcnkodGhpcywgMiwgc2QsIHJtKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIHJvdW5kZWQgdG8gYSBtYXhpbXVtIG9mIGBkcGBcclxuICAgKiBkZWNpbWFsIHBsYWNlcyB1c2luZyByb3VuZGluZyBtb2RlIGBybWAgb3IgYHJvdW5kaW5nYCBpZiBgcm1gIGlzIG9taXR0ZWQuXHJcbiAgICpcclxuICAgKiBJZiBgZHBgIGlzIG9taXR0ZWQsIHJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwuXHJcbiAgICpcclxuICAgKiBbZHBdIHtudW1iZXJ9IERlY2ltYWwgcGxhY2VzLiBJbnRlZ2VyLCAwIHRvIE1BWF9ESUdJVFMgaW5jbHVzaXZlLlxyXG4gICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAudG9EZWNpbWFsUGxhY2VzID0gUC50b0RQID0gZnVuY3Rpb24gKGRwLCBybSkge1xyXG4gICAgdmFyIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICB4ID0gbmV3IEN0b3IoeCk7XHJcbiAgICBpZiAoZHAgPT09IHZvaWQgMCkgcmV0dXJuIHg7XHJcblxyXG4gICAgY2hlY2tJbnQzMihkcCwgMCwgTUFYX0RJR0lUUyk7XHJcblxyXG4gICAgaWYgKHJtID09PSB2b2lkIDApIHJtID0gQ3Rvci5yb3VuZGluZztcclxuICAgIGVsc2UgY2hlY2tJbnQzMihybSwgMCwgOCk7XHJcblxyXG4gICAgcmV0dXJuIGZpbmFsaXNlKHgsIGRwICsgeC5lICsgMSwgcm0pO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCBpbiBleHBvbmVudGlhbCBub3RhdGlvbiByb3VuZGVkIHRvXHJcbiAgICogYGRwYCBmaXhlZCBkZWNpbWFsIHBsYWNlcyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiBbZHBdIHtudW1iZXJ9IERlY2ltYWwgcGxhY2VzLiBJbnRlZ2VyLCAwIHRvIE1BWF9ESUdJVFMgaW5jbHVzaXZlLlxyXG4gICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAudG9FeHBvbmVudGlhbCA9IGZ1bmN0aW9uIChkcCwgcm0pIHtcclxuICAgIHZhciBzdHIsXHJcbiAgICAgIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICBpZiAoZHAgPT09IHZvaWQgMCkge1xyXG4gICAgICBzdHIgPSBmaW5pdGVUb1N0cmluZyh4LCB0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNoZWNrSW50MzIoZHAsIDAsIE1BWF9ESUdJVFMpO1xyXG5cclxuICAgICAgaWYgKHJtID09PSB2b2lkIDApIHJtID0gQ3Rvci5yb3VuZGluZztcclxuICAgICAgZWxzZSBjaGVja0ludDMyKHJtLCAwLCA4KTtcclxuXHJcbiAgICAgIHggPSBmaW5hbGlzZShuZXcgQ3Rvcih4KSwgZHAgKyAxLCBybSk7XHJcbiAgICAgIHN0ciA9IGZpbml0ZVRvU3RyaW5nKHgsIHRydWUsIGRwICsgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHguaXNOZWcoKSAmJiAheC5pc1plcm8oKSA/ICctJyArIHN0ciA6IHN0cjtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgaW4gbm9ybWFsIChmaXhlZC1wb2ludCkgbm90YXRpb24gdG9cclxuICAgKiBgZHBgIGZpeGVkIGRlY2ltYWwgcGxhY2VzIGFuZCByb3VuZGVkIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJtYCBvciBgcm91bmRpbmdgIGlmIGBybWAgaXNcclxuICAgKiBvbWl0dGVkLlxyXG4gICAqXHJcbiAgICogQXMgd2l0aCBKYXZhU2NyaXB0IG51bWJlcnMsICgtMCkudG9GaXhlZCgwKSBpcyAnMCcsIGJ1dCBlLmcuICgtMC4wMDAwMSkudG9GaXhlZCgwKSBpcyAnLTAnLlxyXG4gICAqXHJcbiAgICogW2RwXSB7bnVtYmVyfSBEZWNpbWFsIHBsYWNlcy4gSW50ZWdlciwgMCB0byBNQVhfRElHSVRTIGluY2x1c2l2ZS5cclxuICAgKiBbcm1dIHtudW1iZXJ9IFJvdW5kaW5nIG1vZGUuIEludGVnZXIsIDAgdG8gOCBpbmNsdXNpdmUuXHJcbiAgICpcclxuICAgKiAoLTApLnRvRml4ZWQoMCkgaXMgJzAnLCBidXQgKC0wLjEpLnRvRml4ZWQoMCkgaXMgJy0wJy5cclxuICAgKiAoLTApLnRvRml4ZWQoMSkgaXMgJzAuMCcsIGJ1dCAoLTAuMDEpLnRvRml4ZWQoMSkgaXMgJy0wLjAnLlxyXG4gICAqICgtMCkudG9GaXhlZCgzKSBpcyAnMC4wMDAnLlxyXG4gICAqICgtMC41KS50b0ZpeGVkKDApIGlzICctMCcuXHJcbiAgICpcclxuICAgKi9cclxuICBQLnRvRml4ZWQgPSBmdW5jdGlvbiAoZHAsIHJtKSB7XHJcbiAgICB2YXIgc3RyLCB5LFxyXG4gICAgICB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3I7XHJcblxyXG4gICAgaWYgKGRwID09PSB2b2lkIDApIHtcclxuICAgICAgc3RyID0gZmluaXRlVG9TdHJpbmcoeCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjaGVja0ludDMyKGRwLCAwLCBNQVhfRElHSVRTKTtcclxuXHJcbiAgICAgIGlmIChybSA9PT0gdm9pZCAwKSBybSA9IEN0b3Iucm91bmRpbmc7XHJcbiAgICAgIGVsc2UgY2hlY2tJbnQzMihybSwgMCwgOCk7XHJcblxyXG4gICAgICB5ID0gZmluYWxpc2UobmV3IEN0b3IoeCksIGRwICsgeC5lICsgMSwgcm0pO1xyXG4gICAgICBzdHIgPSBmaW5pdGVUb1N0cmluZyh5LCBmYWxzZSwgZHAgKyB5LmUgKyAxKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUbyBkZXRlcm1pbmUgd2hldGhlciB0byBhZGQgdGhlIG1pbnVzIHNpZ24gbG9vayBhdCB0aGUgdmFsdWUgYmVmb3JlIGl0IHdhcyByb3VuZGVkLFxyXG4gICAgLy8gaS5lLiBsb29rIGF0IGB4YCByYXRoZXIgdGhhbiBgeWAuXHJcbiAgICByZXR1cm4geC5pc05lZygpICYmICF4LmlzWmVybygpID8gJy0nICsgc3RyIDogc3RyO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhbiBhcnJheSByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCBhcyBhIHNpbXBsZSBmcmFjdGlvbiB3aXRoIGFuIGludGVnZXJcclxuICAgKiBudW1lcmF0b3IgYW5kIGFuIGludGVnZXIgZGVub21pbmF0b3IuXHJcbiAgICpcclxuICAgKiBUaGUgZGVub21pbmF0b3Igd2lsbCBiZSBhIHBvc2l0aXZlIG5vbi16ZXJvIHZhbHVlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgc3BlY2lmaWVkIG1heGltdW1cclxuICAgKiBkZW5vbWluYXRvci4gSWYgYSBtYXhpbXVtIGRlbm9taW5hdG9yIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBkZW5vbWluYXRvciB3aWxsIGJlIHRoZSBsb3dlc3RcclxuICAgKiB2YWx1ZSBuZWNlc3NhcnkgdG8gcmVwcmVzZW50IHRoZSBudW1iZXIgZXhhY3RseS5cclxuICAgKlxyXG4gICAqIFttYXhEXSB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfSBNYXhpbXVtIGRlbm9taW5hdG9yLiBJbnRlZ2VyID49IDEgYW5kIDwgSW5maW5pdHkuXHJcbiAgICpcclxuICAgKi9cclxuICBQLnRvRnJhY3Rpb24gPSBmdW5jdGlvbiAobWF4RCkge1xyXG4gICAgdmFyIGQsIGQwLCBkMSwgZDIsIGUsIGssIG4sIG4wLCBuMSwgcHIsIHEsIHIsXHJcbiAgICAgIHggPSB0aGlzLFxyXG4gICAgICB4ZCA9IHguZCxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3I7XHJcblxyXG4gICAgaWYgKCF4ZCkgcmV0dXJuIG5ldyBDdG9yKHgpO1xyXG5cclxuICAgIG4xID0gZDAgPSBuZXcgQ3RvcigxKTtcclxuICAgIGQxID0gbjAgPSBuZXcgQ3RvcigwKTtcclxuXHJcbiAgICBkID0gbmV3IEN0b3IoZDEpO1xyXG4gICAgZSA9IGQuZSA9IGdldFByZWNpc2lvbih4ZCkgLSB4LmUgLSAxO1xyXG4gICAgayA9IGUgJSBMT0dfQkFTRTtcclxuICAgIGQuZFswXSA9IG1hdGhwb3coMTAsIGsgPCAwID8gTE9HX0JBU0UgKyBrIDogayk7XHJcblxyXG4gICAgaWYgKG1heEQgPT0gbnVsbCkge1xyXG5cclxuICAgICAgLy8gZCBpcyAxMCoqZSwgdGhlIG1pbmltdW0gbWF4LWRlbm9taW5hdG9yIG5lZWRlZC5cclxuICAgICAgbWF4RCA9IGUgPiAwID8gZCA6IG4xO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbiA9IG5ldyBDdG9yKG1heEQpO1xyXG4gICAgICBpZiAoIW4uaXNJbnQoKSB8fCBuLmx0KG4xKSkgdGhyb3cgRXJyb3IoaW52YWxpZEFyZ3VtZW50ICsgbik7XHJcbiAgICAgIG1heEQgPSBuLmd0KGQpID8gKGUgPiAwID8gZCA6IG4xKSA6IG47XHJcbiAgICB9XHJcblxyXG4gICAgZXh0ZXJuYWwgPSBmYWxzZTtcclxuICAgIG4gPSBuZXcgQ3RvcihkaWdpdHNUb1N0cmluZyh4ZCkpO1xyXG4gICAgcHIgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgIEN0b3IucHJlY2lzaW9uID0gZSA9IHhkLmxlbmd0aCAqIExPR19CQVNFICogMjtcclxuXHJcbiAgICBmb3IgKDs7KSAge1xyXG4gICAgICBxID0gZGl2aWRlKG4sIGQsIDAsIDEsIDEpO1xyXG4gICAgICBkMiA9IGQwLnBsdXMocS50aW1lcyhkMSkpO1xyXG4gICAgICBpZiAoZDIuY21wKG1heEQpID09IDEpIGJyZWFrO1xyXG4gICAgICBkMCA9IGQxO1xyXG4gICAgICBkMSA9IGQyO1xyXG4gICAgICBkMiA9IG4xO1xyXG4gICAgICBuMSA9IG4wLnBsdXMocS50aW1lcyhkMikpO1xyXG4gICAgICBuMCA9IGQyO1xyXG4gICAgICBkMiA9IGQ7XHJcbiAgICAgIGQgPSBuLm1pbnVzKHEudGltZXMoZDIpKTtcclxuICAgICAgbiA9IGQyO1xyXG4gICAgfVxyXG5cclxuICAgIGQyID0gZGl2aWRlKG1heEQubWludXMoZDApLCBkMSwgMCwgMSwgMSk7XHJcbiAgICBuMCA9IG4wLnBsdXMoZDIudGltZXMobjEpKTtcclxuICAgIGQwID0gZDAucGx1cyhkMi50aW1lcyhkMSkpO1xyXG4gICAgbjAucyA9IG4xLnMgPSB4LnM7XHJcblxyXG4gICAgLy8gRGV0ZXJtaW5lIHdoaWNoIGZyYWN0aW9uIGlzIGNsb3NlciB0byB4LCBuMC9kMCBvciBuMS9kMT9cclxuICAgIHIgPSBkaXZpZGUobjEsIGQxLCBlLCAxKS5taW51cyh4KS5hYnMoKS5jbXAoZGl2aWRlKG4wLCBkMCwgZSwgMSkubWludXMoeCkuYWJzKCkpIDwgMVxyXG4gICAgICAgID8gW24xLCBkMV0gOiBbbjAsIGQwXTtcclxuXHJcbiAgICBDdG9yLnByZWNpc2lvbiA9IHByO1xyXG4gICAgZXh0ZXJuYWwgPSB0cnVlO1xyXG5cclxuICAgIHJldHVybiByO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCBpbiBiYXNlIDE2LCByb3VuZCB0byBgc2RgIHNpZ25pZmljYW50XHJcbiAgICogZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJtYC5cclxuICAgKlxyXG4gICAqIElmIHRoZSBvcHRpb25hbCBgc2RgIGFyZ3VtZW50IGlzIHByZXNlbnQgdGhlbiByZXR1cm4gYmluYXJ5IGV4cG9uZW50aWFsIG5vdGF0aW9uLlxyXG4gICAqXHJcbiAgICogW3NkXSB7bnVtYmVyfSBTaWduaWZpY2FudCBkaWdpdHMuIEludGVnZXIsIDEgdG8gTUFYX0RJR0lUUyBpbmNsdXNpdmUuXHJcbiAgICogW3JtXSB7bnVtYmVyfSBSb3VuZGluZyBtb2RlLiBJbnRlZ2VyLCAwIHRvIDggaW5jbHVzaXZlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC50b0hleGFkZWNpbWFsID0gUC50b0hleCA9IGZ1bmN0aW9uIChzZCwgcm0pIHtcclxuICAgIHJldHVybiB0b1N0cmluZ0JpbmFyeSh0aGlzLCAxNiwgc2QsIHJtKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm5zIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIG5lYXJlc3QgbXVsdGlwbGUgb2YgYHlgIGluIHRoZSBkaXJlY3Rpb24gb2Ygcm91bmRpbmdcclxuICAgKiBtb2RlIGBybWAsIG9yIGBEZWNpbWFsLnJvdW5kaW5nYCBpZiBgcm1gIGlzIG9taXR0ZWQsIHRvIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwuXHJcbiAgICpcclxuICAgKiBUaGUgcmV0dXJuIHZhbHVlIHdpbGwgYWx3YXlzIGhhdmUgdGhlIHNhbWUgc2lnbiBhcyB0aGlzIERlY2ltYWwsIHVubGVzcyBlaXRoZXIgdGhpcyBEZWNpbWFsXHJcbiAgICogb3IgYHlgIGlzIE5hTiwgaW4gd2hpY2ggY2FzZSB0aGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgYWxzbyBiZSBOYU4uXHJcbiAgICpcclxuICAgKiBUaGUgcmV0dXJuIHZhbHVlIGlzIG5vdCBhZmZlY3RlZCBieSB0aGUgdmFsdWUgb2YgYHByZWNpc2lvbmAuXHJcbiAgICpcclxuICAgKiB5IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9IFRoZSBtYWduaXR1ZGUgdG8gcm91bmQgdG8gYSBtdWx0aXBsZSBvZi5cclxuICAgKiBbcm1dIHtudW1iZXJ9IFJvdW5kaW5nIG1vZGUuIEludGVnZXIsIDAgdG8gOCBpbmNsdXNpdmUuXHJcbiAgICpcclxuICAgKiAndG9OZWFyZXN0KCkgcm91bmRpbmcgbW9kZSBub3QgYW4gaW50ZWdlcjoge3JtfSdcclxuICAgKiAndG9OZWFyZXN0KCkgcm91bmRpbmcgbW9kZSBvdXQgb2YgcmFuZ2U6IHtybX0nXHJcbiAgICpcclxuICAgKi9cclxuICBQLnRvTmVhcmVzdCA9IGZ1bmN0aW9uICh5LCBybSkge1xyXG4gICAgdmFyIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICB4ID0gbmV3IEN0b3IoeCk7XHJcblxyXG4gICAgaWYgKHkgPT0gbnVsbCkge1xyXG5cclxuICAgICAgLy8gSWYgeCBpcyBub3QgZmluaXRlLCByZXR1cm4geC5cclxuICAgICAgaWYgKCF4LmQpIHJldHVybiB4O1xyXG5cclxuICAgICAgeSA9IG5ldyBDdG9yKDEpO1xyXG4gICAgICBybSA9IEN0b3Iucm91bmRpbmc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB5ID0gbmV3IEN0b3IoeSk7XHJcbiAgICAgIGlmIChybSA9PT0gdm9pZCAwKSB7XHJcbiAgICAgICAgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNoZWNrSW50MzIocm0sIDAsIDgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBJZiB4IGlzIG5vdCBmaW5pdGUsIHJldHVybiB4IGlmIHkgaXMgbm90IE5hTiwgZWxzZSBOYU4uXHJcbiAgICAgIGlmICgheC5kKSByZXR1cm4geS5zID8geCA6IHk7XHJcblxyXG4gICAgICAvLyBJZiB5IGlzIG5vdCBmaW5pdGUsIHJldHVybiBJbmZpbml0eSB3aXRoIHRoZSBzaWduIG9mIHggaWYgeSBpcyBJbmZpbml0eSwgZWxzZSBOYU4uXHJcbiAgICAgIGlmICgheS5kKSB7XHJcbiAgICAgICAgaWYgKHkucykgeS5zID0geC5zO1xyXG4gICAgICAgIHJldHVybiB5O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWYgeSBpcyBub3QgemVybywgY2FsY3VsYXRlIHRoZSBuZWFyZXN0IG11bHRpcGxlIG9mIHkgdG8geC5cclxuICAgIGlmICh5LmRbMF0pIHtcclxuICAgICAgZXh0ZXJuYWwgPSBmYWxzZTtcclxuICAgICAgeCA9IGRpdmlkZSh4LCB5LCAwLCBybSwgMSkudGltZXMoeSk7XHJcbiAgICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuICAgICAgZmluYWxpc2UoeCk7XHJcblxyXG4gICAgLy8gSWYgeSBpcyB6ZXJvLCByZXR1cm4gemVybyB3aXRoIHRoZSBzaWduIG9mIHguXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB5LnMgPSB4LnM7XHJcbiAgICAgIHggPSB5O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB4O1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIGNvbnZlcnRlZCB0byBhIG51bWJlciBwcmltaXRpdmUuXHJcbiAgICogWmVybyBrZWVwcyBpdHMgc2lnbi5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAudG9OdW1iZXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gK3RoaXM7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgdGhpcyBEZWNpbWFsIGluIGJhc2UgOCwgcm91bmQgdG8gYHNkYCBzaWduaWZpY2FudFxyXG4gICAqIGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGBybWAuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgb3B0aW9uYWwgYHNkYCBhcmd1bWVudCBpcyBwcmVzZW50IHRoZW4gcmV0dXJuIGJpbmFyeSBleHBvbmVudGlhbCBub3RhdGlvbi5cclxuICAgKlxyXG4gICAqIFtzZF0ge251bWJlcn0gU2lnbmlmaWNhbnQgZGlnaXRzLiBJbnRlZ2VyLCAxIHRvIE1BWF9ESUdJVFMgaW5jbHVzaXZlLlxyXG4gICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgKlxyXG4gICAqL1xyXG4gIFAudG9PY3RhbCA9IGZ1bmN0aW9uIChzZCwgcm0pIHtcclxuICAgIHJldHVybiB0b1N0cmluZ0JpbmFyeSh0aGlzLCA4LCBzZCwgcm0pO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgcmFpc2VkIHRvIHRoZSBwb3dlciBgeWAsIHJvdW5kZWRcclxuICAgKiB0byBgcHJlY2lzaW9uYCBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogRUNNQVNjcmlwdCBjb21wbGlhbnQuXHJcbiAgICpcclxuICAgKiAgIHBvdyh4LCBOYU4pICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBOYU5cclxuICAgKiAgIHBvdyh4LCDCsTApICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMVxyXG5cclxuICAgKiAgIHBvdyhOYU4sIG5vbi16ZXJvKSAgICAgICAgICAgICAgICAgICAgPSBOYU5cclxuICAgKiAgIHBvdyhhYnMoeCkgPiAxLCArSW5maW5pdHkpICAgICAgICAgICAgPSArSW5maW5pdHlcclxuICAgKiAgIHBvdyhhYnMoeCkgPiAxLCAtSW5maW5pdHkpICAgICAgICAgICAgPSArMFxyXG4gICAqICAgcG93KGFicyh4KSA9PSAxLCDCsUluZmluaXR5KSAgICAgICAgICAgPSBOYU5cclxuICAgKiAgIHBvdyhhYnMoeCkgPCAxLCArSW5maW5pdHkpICAgICAgICAgICAgPSArMFxyXG4gICAqICAgcG93KGFicyh4KSA8IDEsIC1JbmZpbml0eSkgICAgICAgICAgICA9ICtJbmZpbml0eVxyXG4gICAqICAgcG93KCtJbmZpbml0eSwgeSA+IDApICAgICAgICAgICAgICAgICA9ICtJbmZpbml0eVxyXG4gICAqICAgcG93KCtJbmZpbml0eSwgeSA8IDApICAgICAgICAgICAgICAgICA9ICswXHJcbiAgICogICBwb3coLUluZmluaXR5LCBvZGQgaW50ZWdlciA+IDApICAgICAgID0gLUluZmluaXR5XHJcbiAgICogICBwb3coLUluZmluaXR5LCBldmVuIGludGVnZXIgPiAwKSAgICAgID0gK0luZmluaXR5XHJcbiAgICogICBwb3coLUluZmluaXR5LCBvZGQgaW50ZWdlciA8IDApICAgICAgID0gLTBcclxuICAgKiAgIHBvdygtSW5maW5pdHksIGV2ZW4gaW50ZWdlciA8IDApICAgICAgPSArMFxyXG4gICAqICAgcG93KCswLCB5ID4gMCkgICAgICAgICAgICAgICAgICAgICAgICA9ICswXHJcbiAgICogICBwb3coKzAsIHkgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgID0gK0luZmluaXR5XHJcbiAgICogICBwb3coLTAsIG9kZCBpbnRlZ2VyID4gMCkgICAgICAgICAgICAgID0gLTBcclxuICAgKiAgIHBvdygtMCwgZXZlbiBpbnRlZ2VyID4gMCkgICAgICAgICAgICAgPSArMFxyXG4gICAqICAgcG93KC0wLCBvZGQgaW50ZWdlciA8IDApICAgICAgICAgICAgICA9IC1JbmZpbml0eVxyXG4gICAqICAgcG93KC0wLCBldmVuIGludGVnZXIgPCAwKSAgICAgICAgICAgICA9ICtJbmZpbml0eVxyXG4gICAqICAgcG93KGZpbml0ZSB4IDwgMCwgZmluaXRlIG5vbi1pbnRlZ2VyKSA9IE5hTlxyXG4gICAqXHJcbiAgICogRm9yIG5vbi1pbnRlZ2VyIG9yIHZlcnkgbGFyZ2UgZXhwb25lbnRzIHBvdyh4LCB5KSBpcyBjYWxjdWxhdGVkIHVzaW5nXHJcbiAgICpcclxuICAgKiAgIHheeSA9IGV4cCh5KmxuKHgpKVxyXG4gICAqXHJcbiAgICogQXNzdW1pbmcgdGhlIGZpcnN0IDE1IHJvdW5kaW5nIGRpZ2l0cyBhcmUgZWFjaCBlcXVhbGx5IGxpa2VseSB0byBiZSBhbnkgZGlnaXQgMC05LCB0aGVcclxuICAgKiBwcm9iYWJpbGl0eSBvZiBhbiBpbmNvcnJlY3RseSByb3VuZGVkIHJlc3VsdFxyXG4gICAqIFAoWzQ5XTl7MTR9IHwgWzUwXTB7MTR9KSA9IDIgKiAwLjIgKiAxMF4tMTQgPSA0ZS0xNSA9IDEvMi41ZSsxNFxyXG4gICAqIGkuZS4gMSBpbiAyNTAsMDAwLDAwMCwwMDAsMDAwXHJcbiAgICpcclxuICAgKiBJZiBhIHJlc3VsdCBpcyBpbmNvcnJlY3RseSByb3VuZGVkIHRoZSBtYXhpbXVtIGVycm9yIHdpbGwgYmUgMSB1bHAgKHVuaXQgaW4gbGFzdCBwbGFjZSkuXHJcbiAgICpcclxuICAgKiB5IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9IFRoZSBwb3dlciB0byB3aGljaCB0byByYWlzZSB0aGlzIERlY2ltYWwuXHJcbiAgICpcclxuICAgKi9cclxuICBQLnRvUG93ZXIgPSBQLnBvdyA9IGZ1bmN0aW9uICh5KSB7XHJcbiAgICB2YXIgZSwgaywgcHIsIHIsIHJtLCBzLFxyXG4gICAgICB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3IsXHJcbiAgICAgIHluID0gKyh5ID0gbmV3IEN0b3IoeSkpO1xyXG5cclxuICAgIC8vIEVpdGhlciDCsUluZmluaXR5LCBOYU4gb3IgwrEwP1xyXG4gICAgaWYgKCF4LmQgfHwgIXkuZCB8fCAheC5kWzBdIHx8ICF5LmRbMF0pIHJldHVybiBuZXcgQ3RvcihtYXRocG93KCt4LCB5bikpO1xyXG5cclxuICAgIHggPSBuZXcgQ3Rvcih4KTtcclxuXHJcbiAgICBpZiAoeC5lcSgxKSkgcmV0dXJuIHg7XHJcblxyXG4gICAgcHIgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgIHJtID0gQ3Rvci5yb3VuZGluZztcclxuXHJcbiAgICBpZiAoeS5lcSgxKSkgcmV0dXJuIGZpbmFsaXNlKHgsIHByLCBybSk7XHJcblxyXG4gICAgLy8geSBleHBvbmVudFxyXG4gICAgZSA9IG1hdGhmbG9vcih5LmUgLyBMT0dfQkFTRSk7XHJcblxyXG4gICAgLy8gSWYgeSBpcyBhIHNtYWxsIGludGVnZXIgdXNlIHRoZSAnZXhwb25lbnRpYXRpb24gYnkgc3F1YXJpbmcnIGFsZ29yaXRobS5cclxuICAgIGlmIChlID49IHkuZC5sZW5ndGggLSAxICYmIChrID0geW4gPCAwID8gLXluIDogeW4pIDw9IE1BWF9TQUZFX0lOVEVHRVIpIHtcclxuICAgICAgciA9IGludFBvdyhDdG9yLCB4LCBrLCBwcik7XHJcbiAgICAgIHJldHVybiB5LnMgPCAwID8gbmV3IEN0b3IoMSkuZGl2KHIpIDogZmluYWxpc2UociwgcHIsIHJtKTtcclxuICAgIH1cclxuXHJcbiAgICBzID0geC5zO1xyXG5cclxuICAgIC8vIGlmIHggaXMgbmVnYXRpdmVcclxuICAgIGlmIChzIDwgMCkge1xyXG5cclxuICAgICAgLy8gaWYgeSBpcyBub3QgYW4gaW50ZWdlclxyXG4gICAgICBpZiAoZSA8IHkuZC5sZW5ndGggLSAxKSByZXR1cm4gbmV3IEN0b3IoTmFOKTtcclxuXHJcbiAgICAgIC8vIFJlc3VsdCBpcyBwb3NpdGl2ZSBpZiB4IGlzIG5lZ2F0aXZlIGFuZCB0aGUgbGFzdCBkaWdpdCBvZiBpbnRlZ2VyIHkgaXMgZXZlbi5cclxuICAgICAgaWYgKCh5LmRbZV0gJiAxKSA9PSAwKSBzID0gMTtcclxuXHJcbiAgICAgIC8vIGlmIHguZXEoLTEpXHJcbiAgICAgIGlmICh4LmUgPT0gMCAmJiB4LmRbMF0gPT0gMSAmJiB4LmQubGVuZ3RoID09IDEpIHtcclxuICAgICAgICB4LnMgPSBzO1xyXG4gICAgICAgIHJldHVybiB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRXN0aW1hdGUgcmVzdWx0IGV4cG9uZW50LlxyXG4gICAgLy8geF55ID0gMTBeZSwgIHdoZXJlIGUgPSB5ICogbG9nMTAoeClcclxuICAgIC8vIGxvZzEwKHgpID0gbG9nMTAoeF9zaWduaWZpY2FuZCkgKyB4X2V4cG9uZW50XHJcbiAgICAvLyBsb2cxMCh4X3NpZ25pZmljYW5kKSA9IGxuKHhfc2lnbmlmaWNhbmQpIC8gbG4oMTApXHJcbiAgICBrID0gbWF0aHBvdygreCwgeW4pO1xyXG4gICAgZSA9IGsgPT0gMCB8fCAhaXNGaW5pdGUoaylcclxuICAgICAgPyBtYXRoZmxvb3IoeW4gKiAoTWF0aC5sb2coJzAuJyArIGRpZ2l0c1RvU3RyaW5nKHguZCkpIC8gTWF0aC5MTjEwICsgeC5lICsgMSkpXHJcbiAgICAgIDogbmV3IEN0b3IoayArICcnKS5lO1xyXG5cclxuICAgIC8vIEV4cG9uZW50IGVzdGltYXRlIG1heSBiZSBpbmNvcnJlY3QgZS5nLiB4OiAwLjk5OTk5OTk5OTk5OTk5OTk5OSwgeTogMi4yOSwgZTogMCwgci5lOiAtMS5cclxuXHJcbiAgICAvLyBPdmVyZmxvdy91bmRlcmZsb3c/XHJcbiAgICBpZiAoZSA+IEN0b3IubWF4RSArIDEgfHwgZSA8IEN0b3IubWluRSAtIDEpIHJldHVybiBuZXcgQ3RvcihlID4gMCA/IHMgLyAwIDogMCk7XHJcblxyXG4gICAgZXh0ZXJuYWwgPSBmYWxzZTtcclxuICAgIEN0b3Iucm91bmRpbmcgPSB4LnMgPSAxO1xyXG5cclxuICAgIC8vIEVzdGltYXRlIHRoZSBleHRyYSBndWFyZCBkaWdpdHMgbmVlZGVkIHRvIGVuc3VyZSBmaXZlIGNvcnJlY3Qgcm91bmRpbmcgZGlnaXRzIGZyb21cclxuICAgIC8vIG5hdHVyYWxMb2dhcml0aG0oeCkuIEV4YW1wbGUgb2YgZmFpbHVyZSB3aXRob3V0IHRoZXNlIGV4dHJhIGRpZ2l0cyAocHJlY2lzaW9uOiAxMCk6XHJcbiAgICAvLyBuZXcgRGVjaW1hbCgyLjMyNDU2KS5wb3coJzIwODc5ODc0MzY1MzQ1NjYuNDY0MTEnKVxyXG4gICAgLy8gc2hvdWxkIGJlIDEuMTYyMzc3ODIzZSs3NjQ5MTQ5MDUxNzM4MTUsIGJ1dCBpcyAxLjE2MjM1NTgyM2UrNzY0OTE0OTA1MTczODE1XHJcbiAgICBrID0gTWF0aC5taW4oMTIsIChlICsgJycpLmxlbmd0aCk7XHJcblxyXG4gICAgLy8gciA9IHheeSA9IGV4cCh5KmxuKHgpKVxyXG4gICAgciA9IG5hdHVyYWxFeHBvbmVudGlhbCh5LnRpbWVzKG5hdHVyYWxMb2dhcml0aG0oeCwgcHIgKyBrKSksIHByKTtcclxuXHJcbiAgICAvLyByIG1heSBiZSBJbmZpbml0eSwgZS5nLiAoMC45OTk5OTk5OTk5OTk5OTk5KS5wb3coLTFlKzQwKVxyXG4gICAgaWYgKHIuZCkge1xyXG5cclxuICAgICAgLy8gVHJ1bmNhdGUgdG8gdGhlIHJlcXVpcmVkIHByZWNpc2lvbiBwbHVzIGZpdmUgcm91bmRpbmcgZGlnaXRzLlxyXG4gICAgICByID0gZmluYWxpc2UociwgcHIgKyA1LCAxKTtcclxuXHJcbiAgICAgIC8vIElmIHRoZSByb3VuZGluZyBkaWdpdHMgYXJlIFs0OV05OTk5IG9yIFs1MF0wMDAwIGluY3JlYXNlIHRoZSBwcmVjaXNpb24gYnkgMTAgYW5kIHJlY2FsY3VsYXRlXHJcbiAgICAgIC8vIHRoZSByZXN1bHQuXHJcbiAgICAgIGlmIChjaGVja1JvdW5kaW5nRGlnaXRzKHIuZCwgcHIsIHJtKSkge1xyXG4gICAgICAgIGUgPSBwciArIDEwO1xyXG5cclxuICAgICAgICAvLyBUcnVuY2F0ZSB0byB0aGUgaW5jcmVhc2VkIHByZWNpc2lvbiBwbHVzIGZpdmUgcm91bmRpbmcgZGlnaXRzLlxyXG4gICAgICAgIHIgPSBmaW5hbGlzZShuYXR1cmFsRXhwb25lbnRpYWwoeS50aW1lcyhuYXR1cmFsTG9nYXJpdGhtKHgsIGUgKyBrKSksIGUpLCBlICsgNSwgMSk7XHJcblxyXG4gICAgICAgIC8vIENoZWNrIGZvciAxNCBuaW5lcyBmcm9tIHRoZSAybmQgcm91bmRpbmcgZGlnaXQgKHRoZSBmaXJzdCByb3VuZGluZyBkaWdpdCBtYXkgYmUgNCBvciA5KS5cclxuICAgICAgICBpZiAoK2RpZ2l0c1RvU3RyaW5nKHIuZCkuc2xpY2UocHIgKyAxLCBwciArIDE1KSArIDEgPT0gMWUxNCkge1xyXG4gICAgICAgICAgciA9IGZpbmFsaXNlKHIsIHByICsgMSwgMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgci5zID0gcztcclxuICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuICAgIEN0b3Iucm91bmRpbmcgPSBybTtcclxuXHJcbiAgICByZXR1cm4gZmluYWxpc2UociwgcHIsIHJtKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwgcm91bmRlZCB0byBgc2RgIHNpZ25pZmljYW50IGRpZ2l0c1xyXG4gICAqIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIFJldHVybiBleHBvbmVudGlhbCBub3RhdGlvbiBpZiBgc2RgIGlzIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBuZWNlc3NhcnkgdG8gcmVwcmVzZW50XHJcbiAgICogdGhlIGludGVnZXIgcGFydCBvZiB0aGUgdmFsdWUgaW4gbm9ybWFsIG5vdGF0aW9uLlxyXG4gICAqXHJcbiAgICogW3NkXSB7bnVtYmVyfSBTaWduaWZpY2FudCBkaWdpdHMuIEludGVnZXIsIDEgdG8gTUFYX0RJR0lUUyBpbmNsdXNpdmUuXHJcbiAgICogW3JtXSB7bnVtYmVyfSBSb3VuZGluZyBtb2RlLiBJbnRlZ2VyLCAwIHRvIDggaW5jbHVzaXZlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgUC50b1ByZWNpc2lvbiA9IGZ1bmN0aW9uIChzZCwgcm0pIHtcclxuICAgIHZhciBzdHIsXHJcbiAgICAgIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICBpZiAoc2QgPT09IHZvaWQgMCkge1xyXG4gICAgICBzdHIgPSBmaW5pdGVUb1N0cmluZyh4LCB4LmUgPD0gQ3Rvci50b0V4cE5lZyB8fCB4LmUgPj0gQ3Rvci50b0V4cFBvcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjaGVja0ludDMyKHNkLCAxLCBNQVhfRElHSVRTKTtcclxuXHJcbiAgICAgIGlmIChybSA9PT0gdm9pZCAwKSBybSA9IEN0b3Iucm91bmRpbmc7XHJcbiAgICAgIGVsc2UgY2hlY2tJbnQzMihybSwgMCwgOCk7XHJcblxyXG4gICAgICB4ID0gZmluYWxpc2UobmV3IEN0b3IoeCksIHNkLCBybSk7XHJcbiAgICAgIHN0ciA9IGZpbml0ZVRvU3RyaW5nKHgsIHNkIDw9IHguZSB8fCB4LmUgPD0gQ3Rvci50b0V4cE5lZywgc2QpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB4LmlzTmVnKCkgJiYgIXguaXNaZXJvKCkgPyAnLScgKyBzdHIgOiBzdHI7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCByb3VuZGVkIHRvIGEgbWF4aW11bSBvZiBgc2RgXHJcbiAgICogc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJtYCwgb3IgdG8gYHByZWNpc2lvbmAgYW5kIGByb3VuZGluZ2AgcmVzcGVjdGl2ZWx5IGlmXHJcbiAgICogb21pdHRlZC5cclxuICAgKlxyXG4gICAqIFtzZF0ge251bWJlcn0gU2lnbmlmaWNhbnQgZGlnaXRzLiBJbnRlZ2VyLCAxIHRvIE1BWF9ESUdJVFMgaW5jbHVzaXZlLlxyXG4gICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgKlxyXG4gICAqICd0b1NEKCkgZGlnaXRzIG91dCBvZiByYW5nZToge3NkfSdcclxuICAgKiAndG9TRCgpIGRpZ2l0cyBub3QgYW4gaW50ZWdlcjoge3NkfSdcclxuICAgKiAndG9TRCgpIHJvdW5kaW5nIG1vZGUgbm90IGFuIGludGVnZXI6IHtybX0nXHJcbiAgICogJ3RvU0QoKSByb3VuZGluZyBtb2RlIG91dCBvZiByYW5nZToge3JtfSdcclxuICAgKlxyXG4gICAqL1xyXG4gIFAudG9TaWduaWZpY2FudERpZ2l0cyA9IFAudG9TRCA9IGZ1bmN0aW9uIChzZCwgcm0pIHtcclxuICAgIHZhciB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3I7XHJcblxyXG4gICAgaWYgKHNkID09PSB2b2lkIDApIHtcclxuICAgICAgc2QgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgICAgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY2hlY2tJbnQzMihzZCwgMSwgTUFYX0RJR0lUUyk7XHJcblxyXG4gICAgICBpZiAocm0gPT09IHZvaWQgMCkgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgICBlbHNlIGNoZWNrSW50MzIocm0sIDAsIDgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmaW5hbGlzZShuZXcgQ3Rvcih4KSwgc2QsIHJtKTtcclxuICB9O1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBvZiB0aGlzIERlY2ltYWwuXHJcbiAgICpcclxuICAgKiBSZXR1cm4gZXhwb25lbnRpYWwgbm90YXRpb24gaWYgdGhpcyBEZWNpbWFsIGhhcyBhIHBvc2l0aXZlIGV4cG9uZW50IGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhblxyXG4gICAqIGB0b0V4cFBvc2AsIG9yIGEgbmVnYXRpdmUgZXhwb25lbnQgZXF1YWwgdG8gb3IgbGVzcyB0aGFuIGB0b0V4cE5lZ2AuXHJcbiAgICpcclxuICAgKi9cclxuICBQLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIHggPSB0aGlzLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcixcclxuICAgICAgc3RyID0gZmluaXRlVG9TdHJpbmcoeCwgeC5lIDw9IEN0b3IudG9FeHBOZWcgfHwgeC5lID49IEN0b3IudG9FeHBQb3MpO1xyXG5cclxuICAgIHJldHVybiB4LmlzTmVnKCkgJiYgIXguaXNaZXJvKCkgPyAnLScgKyBzdHIgOiBzdHI7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbCB0cnVuY2F0ZWQgdG8gYSB3aG9sZSBudW1iZXIuXHJcbiAgICpcclxuICAgKi9cclxuICBQLnRydW5jYXRlZCA9IFAudHJ1bmMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gZmluYWxpc2UobmV3IHRoaXMuY29uc3RydWN0b3IodGhpcyksIHRoaXMuZSArIDEsIDEpO1xyXG4gIH07XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgRGVjaW1hbC5cclxuICAgKiBVbmxpa2UgYHRvU3RyaW5nYCwgbmVnYXRpdmUgemVybyB3aWxsIGluY2x1ZGUgdGhlIG1pbnVzIHNpZ24uXHJcbiAgICpcclxuICAgKi9cclxuICBQLnZhbHVlT2YgPSBQLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciB4ID0gdGhpcyxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3IsXHJcbiAgICAgIHN0ciA9IGZpbml0ZVRvU3RyaW5nKHgsIHguZSA8PSBDdG9yLnRvRXhwTmVnIHx8IHguZSA+PSBDdG9yLnRvRXhwUG9zKTtcclxuXHJcbiAgICByZXR1cm4geC5pc05lZygpID8gJy0nICsgc3RyIDogc3RyO1xyXG4gIH07XHJcblxyXG5cclxuICAvLyBIZWxwZXIgZnVuY3Rpb25zIGZvciBEZWNpbWFsLnByb3RvdHlwZSAoUCkgYW5kL29yIERlY2ltYWwgbWV0aG9kcywgYW5kIHRoZWlyIGNhbGxlcnMuXHJcblxyXG5cclxuICAvKlxyXG4gICAqICBkaWdpdHNUb1N0cmluZyAgICAgICAgICAgUC5jdWJlUm9vdCwgUC5sb2dhcml0aG0sIFAuc3F1YXJlUm9vdCwgUC50b0ZyYWN0aW9uLCBQLnRvUG93ZXIsXHJcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5pdGVUb1N0cmluZywgbmF0dXJhbEV4cG9uZW50aWFsLCBuYXR1cmFsTG9nYXJpdGhtXHJcbiAgICogIGNoZWNrSW50MzIgICAgICAgICAgICAgICBQLnRvRGVjaW1hbFBsYWNlcywgUC50b0V4cG9uZW50aWFsLCBQLnRvRml4ZWQsIFAudG9OZWFyZXN0LFxyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgUC50b1ByZWNpc2lvbiwgUC50b1NpZ25pZmljYW50RGlnaXRzLCB0b1N0cmluZ0JpbmFyeSwgcmFuZG9tXHJcbiAgICogIGNoZWNrUm91bmRpbmdEaWdpdHMgICAgICBQLmxvZ2FyaXRobSwgUC50b1Bvd2VyLCBuYXR1cmFsRXhwb25lbnRpYWwsIG5hdHVyYWxMb2dhcml0aG1cclxuICAgKiAgY29udmVydEJhc2UgICAgICAgICAgICAgIHRvU3RyaW5nQmluYXJ5LCBwYXJzZU90aGVyXHJcbiAgICogIGNvcyAgICAgICAgICAgICAgICAgICAgICBQLmNvc1xyXG4gICAqICBkaXZpZGUgICAgICAgICAgICAgICAgICAgUC5hdGFuaCwgUC5jdWJlUm9vdCwgUC5kaXZpZGVkQnksIFAuZGl2aWRlZFRvSW50ZWdlckJ5LFxyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgUC5sb2dhcml0aG0sIFAubW9kdWxvLCBQLnNxdWFyZVJvb3QsIFAudGFuLCBQLnRhbmgsIFAudG9GcmFjdGlvbixcclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFAudG9OZWFyZXN0LCB0b1N0cmluZ0JpbmFyeSwgbmF0dXJhbEV4cG9uZW50aWFsLCBuYXR1cmFsTG9nYXJpdGhtLFxyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF5bG9yU2VyaWVzLCBhdGFuMiwgcGFyc2VPdGhlclxyXG4gICAqICBmaW5hbGlzZSAgICAgICAgICAgICAgICAgUC5hYnNvbHV0ZVZhbHVlLCBQLmF0YW4sIFAuYXRhbmgsIFAuY2VpbCwgUC5jb3MsIFAuY29zaCxcclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFAuY3ViZVJvb3QsIFAuZGl2aWRlZFRvSW50ZWdlckJ5LCBQLmZsb29yLCBQLmxvZ2FyaXRobSwgUC5taW51cyxcclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFAubW9kdWxvLCBQLm5lZ2F0ZWQsIFAucGx1cywgUC5yb3VuZCwgUC5zaW4sIFAuc2luaCwgUC5zcXVhcmVSb290LFxyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgUC50YW4sIFAudGltZXMsIFAudG9EZWNpbWFsUGxhY2VzLCBQLnRvRXhwb25lbnRpYWwsIFAudG9GaXhlZCxcclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFAudG9OZWFyZXN0LCBQLnRvUG93ZXIsIFAudG9QcmVjaXNpb24sIFAudG9TaWduaWZpY2FudERpZ2l0cyxcclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFAudHJ1bmNhdGVkLCBkaXZpZGUsIGdldExuMTAsIGdldFBpLCBuYXR1cmFsRXhwb25lbnRpYWwsXHJcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICBuYXR1cmFsTG9nYXJpdGhtLCBjZWlsLCBmbG9vciwgcm91bmQsIHRydW5jXHJcbiAgICogIGZpbml0ZVRvU3RyaW5nICAgICAgICAgICBQLnRvRXhwb25lbnRpYWwsIFAudG9GaXhlZCwgUC50b1ByZWNpc2lvbiwgUC50b1N0cmluZywgUC52YWx1ZU9mLFxyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9TdHJpbmdCaW5hcnlcclxuICAgKiAgZ2V0QmFzZTEwRXhwb25lbnQgICAgICAgIFAubWludXMsIFAucGx1cywgUC50aW1lcywgcGFyc2VPdGhlclxyXG4gICAqICBnZXRMbjEwICAgICAgICAgICAgICAgICAgUC5sb2dhcml0aG0sIG5hdHVyYWxMb2dhcml0aG1cclxuICAgKiAgZ2V0UGkgICAgICAgICAgICAgICAgICAgIFAuYWNvcywgUC5hc2luLCBQLmF0YW4sIHRvTGVzc1RoYW5IYWxmUGksIGF0YW4yXHJcbiAgICogIGdldFByZWNpc2lvbiAgICAgICAgICAgICBQLnByZWNpc2lvbiwgUC50b0ZyYWN0aW9uXHJcbiAgICogIGdldFplcm9TdHJpbmcgICAgICAgICAgICBkaWdpdHNUb1N0cmluZywgZmluaXRlVG9TdHJpbmdcclxuICAgKiAgaW50UG93ICAgICAgICAgICAgICAgICAgIFAudG9Qb3dlciwgcGFyc2VPdGhlclxyXG4gICAqICBpc09kZCAgICAgICAgICAgICAgICAgICAgdG9MZXNzVGhhbkhhbGZQaVxyXG4gICAqICBtYXhPck1pbiAgICAgICAgICAgICAgICAgbWF4LCBtaW5cclxuICAgKiAgbmF0dXJhbEV4cG9uZW50aWFsICAgICAgIFAubmF0dXJhbEV4cG9uZW50aWFsLCBQLnRvUG93ZXJcclxuICAgKiAgbmF0dXJhbExvZ2FyaXRobSAgICAgICAgIFAuYWNvc2gsIFAuYXNpbmgsIFAuYXRhbmgsIFAubG9nYXJpdGhtLCBQLm5hdHVyYWxMb2dhcml0aG0sXHJcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICBQLnRvUG93ZXIsIG5hdHVyYWxFeHBvbmVudGlhbFxyXG4gICAqICBub25GaW5pdGVUb1N0cmluZyAgICAgICAgZmluaXRlVG9TdHJpbmcsIHRvU3RyaW5nQmluYXJ5XHJcbiAgICogIHBhcnNlRGVjaW1hbCAgICAgICAgICAgICBEZWNpbWFsXHJcbiAgICogIHBhcnNlT3RoZXIgICAgICAgICAgICAgICBEZWNpbWFsXHJcbiAgICogIHNpbiAgICAgICAgICAgICAgICAgICAgICBQLnNpblxyXG4gICAqICB0YXlsb3JTZXJpZXMgICAgICAgICAgICAgUC5jb3NoLCBQLnNpbmgsIGNvcywgc2luXHJcbiAgICogIHRvTGVzc1RoYW5IYWxmUGkgICAgICAgICBQLmNvcywgUC5zaW5cclxuICAgKiAgdG9TdHJpbmdCaW5hcnkgICAgICAgICAgIFAudG9CaW5hcnksIFAudG9IZXhhZGVjaW1hbCwgUC50b09jdGFsXHJcbiAgICogIHRydW5jYXRlICAgICAgICAgICAgICAgICBpbnRQb3dcclxuICAgKlxyXG4gICAqICBUaHJvd3M6ICAgICAgICAgICAgICAgICAgUC5sb2dhcml0aG0sIFAucHJlY2lzaW9uLCBQLnRvRnJhY3Rpb24sIGNoZWNrSW50MzIsIGdldExuMTAsIGdldFBpLFxyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0dXJhbExvZ2FyaXRobSwgY29uZmlnLCBwYXJzZU90aGVyLCByYW5kb20sIERlY2ltYWxcclxuICAgKi9cclxuXHJcblxyXG4gIGZ1bmN0aW9uIGRpZ2l0c1RvU3RyaW5nKGQpIHtcclxuICAgIHZhciBpLCBrLCB3cyxcclxuICAgICAgaW5kZXhPZkxhc3RXb3JkID0gZC5sZW5ndGggLSAxLFxyXG4gICAgICBzdHIgPSAnJyxcclxuICAgICAgdyA9IGRbMF07XHJcblxyXG4gICAgaWYgKGluZGV4T2ZMYXN0V29yZCA+IDApIHtcclxuICAgICAgc3RyICs9IHc7XHJcbiAgICAgIGZvciAoaSA9IDE7IGkgPCBpbmRleE9mTGFzdFdvcmQ7IGkrKykge1xyXG4gICAgICAgIHdzID0gZFtpXSArICcnO1xyXG4gICAgICAgIGsgPSBMT0dfQkFTRSAtIHdzLmxlbmd0aDtcclxuICAgICAgICBpZiAoaykgc3RyICs9IGdldFplcm9TdHJpbmcoayk7XHJcbiAgICAgICAgc3RyICs9IHdzO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB3ID0gZFtpXTtcclxuICAgICAgd3MgPSB3ICsgJyc7XHJcbiAgICAgIGsgPSBMT0dfQkFTRSAtIHdzLmxlbmd0aDtcclxuICAgICAgaWYgKGspIHN0ciArPSBnZXRaZXJvU3RyaW5nKGspO1xyXG4gICAgfSBlbHNlIGlmICh3ID09PSAwKSB7XHJcbiAgICAgIHJldHVybiAnMCc7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmVtb3ZlIHRyYWlsaW5nIHplcm9zIG9mIGxhc3Qgdy5cclxuICAgIGZvciAoOyB3ICUgMTAgPT09IDA7KSB3IC89IDEwO1xyXG5cclxuICAgIHJldHVybiBzdHIgKyB3O1xyXG4gIH1cclxuXHJcblxyXG4gIGZ1bmN0aW9uIGNoZWNrSW50MzIoaSwgbWluLCBtYXgpIHtcclxuICAgIGlmIChpICE9PSB+fmkgfHwgaSA8IG1pbiB8fCBpID4gbWF4KSB7XHJcbiAgICAgIHRocm93IEVycm9yKGludmFsaWRBcmd1bWVudCArIGkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogQ2hlY2sgNSByb3VuZGluZyBkaWdpdHMgaWYgYHJlcGVhdGluZ2AgaXMgbnVsbCwgNCBvdGhlcndpc2UuXHJcbiAgICogYHJlcGVhdGluZyA9PSBudWxsYCBpZiBjYWxsZXIgaXMgYGxvZ2Agb3IgYHBvd2AsXHJcbiAgICogYHJlcGVhdGluZyAhPSBudWxsYCBpZiBjYWxsZXIgaXMgYG5hdHVyYWxMb2dhcml0aG1gIG9yIGBuYXR1cmFsRXhwb25lbnRpYWxgLlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGNoZWNrUm91bmRpbmdEaWdpdHMoZCwgaSwgcm0sIHJlcGVhdGluZykge1xyXG4gICAgdmFyIGRpLCBrLCByLCByZDtcclxuXHJcbiAgICAvLyBHZXQgdGhlIGxlbmd0aCBvZiB0aGUgZmlyc3Qgd29yZCBvZiB0aGUgYXJyYXkgZC5cclxuICAgIGZvciAoayA9IGRbMF07IGsgPj0gMTA7IGsgLz0gMTApIC0taTtcclxuXHJcbiAgICAvLyBJcyB0aGUgcm91bmRpbmcgZGlnaXQgaW4gdGhlIGZpcnN0IHdvcmQgb2YgZD9cclxuICAgIGlmICgtLWkgPCAwKSB7XHJcbiAgICAgIGkgKz0gTE9HX0JBU0U7XHJcbiAgICAgIGRpID0gMDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRpID0gTWF0aC5jZWlsKChpICsgMSkgLyBMT0dfQkFTRSk7XHJcbiAgICAgIGkgJT0gTE9HX0JBU0U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gaSBpcyB0aGUgaW5kZXggKDAgLSA2KSBvZiB0aGUgcm91bmRpbmcgZGlnaXQuXHJcbiAgICAvLyBFLmcuIGlmIHdpdGhpbiB0aGUgd29yZCAzNDg3NTYzIHRoZSBmaXJzdCByb3VuZGluZyBkaWdpdCBpcyA1LFxyXG4gICAgLy8gdGhlbiBpID0gNCwgayA9IDEwMDAsIHJkID0gMzQ4NzU2MyAlIDEwMDAgPSA1NjNcclxuICAgIGsgPSBtYXRocG93KDEwLCBMT0dfQkFTRSAtIGkpO1xyXG4gICAgcmQgPSBkW2RpXSAlIGsgfCAwO1xyXG5cclxuICAgIGlmIChyZXBlYXRpbmcgPT0gbnVsbCkge1xyXG4gICAgICBpZiAoaSA8IDMpIHtcclxuICAgICAgICBpZiAoaSA9PSAwKSByZCA9IHJkIC8gMTAwIHwgMDtcclxuICAgICAgICBlbHNlIGlmIChpID09IDEpIHJkID0gcmQgLyAxMCB8IDA7XHJcbiAgICAgICAgciA9IHJtIDwgNCAmJiByZCA9PSA5OTk5OSB8fCBybSA+IDMgJiYgcmQgPT0gNDk5OTkgfHwgcmQgPT0gNTAwMDAgfHwgcmQgPT0gMDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByID0gKHJtIDwgNCAmJiByZCArIDEgPT0gayB8fCBybSA+IDMgJiYgcmQgKyAxID09IGsgLyAyKSAmJlxyXG4gICAgICAgICAgKGRbZGkgKyAxXSAvIGsgLyAxMDAgfCAwKSA9PSBtYXRocG93KDEwLCBpIC0gMikgLSAxIHx8XHJcbiAgICAgICAgICAgIChyZCA9PSBrIC8gMiB8fCByZCA9PSAwKSAmJiAoZFtkaSArIDFdIC8gayAvIDEwMCB8IDApID09IDA7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChpIDwgNCkge1xyXG4gICAgICAgIGlmIChpID09IDApIHJkID0gcmQgLyAxMDAwIHwgMDtcclxuICAgICAgICBlbHNlIGlmIChpID09IDEpIHJkID0gcmQgLyAxMDAgfCAwO1xyXG4gICAgICAgIGVsc2UgaWYgKGkgPT0gMikgcmQgPSByZCAvIDEwIHwgMDtcclxuICAgICAgICByID0gKHJlcGVhdGluZyB8fCBybSA8IDQpICYmIHJkID09IDk5OTkgfHwgIXJlcGVhdGluZyAmJiBybSA+IDMgJiYgcmQgPT0gNDk5OTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByID0gKChyZXBlYXRpbmcgfHwgcm0gPCA0KSAmJiByZCArIDEgPT0gayB8fFxyXG4gICAgICAgICghcmVwZWF0aW5nICYmIHJtID4gMykgJiYgcmQgKyAxID09IGsgLyAyKSAmJlxyXG4gICAgICAgICAgKGRbZGkgKyAxXSAvIGsgLyAxMDAwIHwgMCkgPT0gbWF0aHBvdygxMCwgaSAtIDMpIC0gMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIENvbnZlcnQgc3RyaW5nIG9mIGBiYXNlSW5gIHRvIGFuIGFycmF5IG9mIG51bWJlcnMgb2YgYGJhc2VPdXRgLlxyXG4gIC8vIEVnLiBjb252ZXJ0QmFzZSgnMjU1JywgMTAsIDE2KSByZXR1cm5zIFsxNSwgMTVdLlxyXG4gIC8vIEVnLiBjb252ZXJ0QmFzZSgnZmYnLCAxNiwgMTApIHJldHVybnMgWzIsIDUsIDVdLlxyXG4gIGZ1bmN0aW9uIGNvbnZlcnRCYXNlKHN0ciwgYmFzZUluLCBiYXNlT3V0KSB7XHJcbiAgICB2YXIgaixcclxuICAgICAgYXJyID0gWzBdLFxyXG4gICAgICBhcnJMLFxyXG4gICAgICBpID0gMCxcclxuICAgICAgc3RyTCA9IHN0ci5sZW5ndGg7XHJcblxyXG4gICAgZm9yICg7IGkgPCBzdHJMOykge1xyXG4gICAgICBmb3IgKGFyckwgPSBhcnIubGVuZ3RoOyBhcnJMLS07KSBhcnJbYXJyTF0gKj0gYmFzZUluO1xyXG4gICAgICBhcnJbMF0gKz0gTlVNRVJBTFMuaW5kZXhPZihzdHIuY2hhckF0KGkrKykpO1xyXG4gICAgICBmb3IgKGogPSAwOyBqIDwgYXJyLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgaWYgKGFycltqXSA+IGJhc2VPdXQgLSAxKSB7XHJcbiAgICAgICAgICBpZiAoYXJyW2ogKyAxXSA9PT0gdm9pZCAwKSBhcnJbaiArIDFdID0gMDtcclxuICAgICAgICAgIGFycltqICsgMV0gKz0gYXJyW2pdIC8gYmFzZU91dCB8IDA7XHJcbiAgICAgICAgICBhcnJbal0gJT0gYmFzZU91dDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYXJyLnJldmVyc2UoKTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIGNvcyh4KSA9IDEgLSB4XjIvMiEgKyB4XjQvNCEgLSAuLi5cclxuICAgKiB8eHwgPCBwaS8yXHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBjb3NpbmUoQ3RvciwgeCkge1xyXG4gICAgdmFyIGssIGxlbiwgeTtcclxuXHJcbiAgICBpZiAoeC5pc1plcm8oKSkgcmV0dXJuIHg7XHJcblxyXG4gICAgLy8gQXJndW1lbnQgcmVkdWN0aW9uOiBjb3MoNHgpID0gOCooY29zXjQoeCkgLSBjb3NeMih4KSkgKyAxXHJcbiAgICAvLyBpLmUuIGNvcyh4KSA9IDgqKGNvc140KHgvNCkgLSBjb3NeMih4LzQpKSArIDFcclxuXHJcbiAgICAvLyBFc3RpbWF0ZSB0aGUgb3B0aW11bSBudW1iZXIgb2YgdGltZXMgdG8gdXNlIHRoZSBhcmd1bWVudCByZWR1Y3Rpb24uXHJcbiAgICBsZW4gPSB4LmQubGVuZ3RoO1xyXG4gICAgaWYgKGxlbiA8IDMyKSB7XHJcbiAgICAgIGsgPSBNYXRoLmNlaWwobGVuIC8gMyk7XHJcbiAgICAgIHkgPSAoMSAvIHRpbnlQb3coNCwgaykpLnRvU3RyaW5nKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBrID0gMTY7XHJcbiAgICAgIHkgPSAnMi4zMjgzMDY0MzY1Mzg2OTYyODkwNjI1ZS0xMCc7XHJcbiAgICB9XHJcblxyXG4gICAgQ3Rvci5wcmVjaXNpb24gKz0gaztcclxuXHJcbiAgICB4ID0gdGF5bG9yU2VyaWVzKEN0b3IsIDEsIHgudGltZXMoeSksIG5ldyBDdG9yKDEpKTtcclxuXHJcbiAgICAvLyBSZXZlcnNlIGFyZ3VtZW50IHJlZHVjdGlvblxyXG4gICAgZm9yICh2YXIgaSA9IGs7IGktLTspIHtcclxuICAgICAgdmFyIGNvczJ4ID0geC50aW1lcyh4KTtcclxuICAgICAgeCA9IGNvczJ4LnRpbWVzKGNvczJ4KS5taW51cyhjb3MyeCkudGltZXMoOCkucGx1cygxKTtcclxuICAgIH1cclxuXHJcbiAgICBDdG9yLnByZWNpc2lvbiAtPSBrO1xyXG5cclxuICAgIHJldHVybiB4O1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUGVyZm9ybSBkaXZpc2lvbiBpbiB0aGUgc3BlY2lmaWVkIGJhc2UuXHJcbiAgICovXHJcbiAgdmFyIGRpdmlkZSA9IChmdW5jdGlvbiAoKSB7XHJcblxyXG4gICAgLy8gQXNzdW1lcyBub24temVybyB4IGFuZCBrLCBhbmQgaGVuY2Ugbm9uLXplcm8gcmVzdWx0LlxyXG4gICAgZnVuY3Rpb24gbXVsdGlwbHlJbnRlZ2VyKHgsIGssIGJhc2UpIHtcclxuICAgICAgdmFyIHRlbXAsXHJcbiAgICAgICAgY2FycnkgPSAwLFxyXG4gICAgICAgIGkgPSB4Lmxlbmd0aDtcclxuXHJcbiAgICAgIGZvciAoeCA9IHguc2xpY2UoKTsgaS0tOykge1xyXG4gICAgICAgIHRlbXAgPSB4W2ldICogayArIGNhcnJ5O1xyXG4gICAgICAgIHhbaV0gPSB0ZW1wICUgYmFzZSB8IDA7XHJcbiAgICAgICAgY2FycnkgPSB0ZW1wIC8gYmFzZSB8IDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChjYXJyeSkgeC51bnNoaWZ0KGNhcnJ5KTtcclxuXHJcbiAgICAgIHJldHVybiB4O1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGNvbXBhcmUoYSwgYiwgYUwsIGJMKSB7XHJcbiAgICAgIHZhciBpLCByO1xyXG5cclxuICAgICAgaWYgKGFMICE9IGJMKSB7XHJcbiAgICAgICAgciA9IGFMID4gYkwgPyAxIDogLTE7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9yIChpID0gciA9IDA7IGkgPCBhTDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoYVtpXSAhPSBiW2ldKSB7XHJcbiAgICAgICAgICAgIHIgPSBhW2ldID4gYltpXSA/IDEgOiAtMTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gcjtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBzdWJ0cmFjdChhLCBiLCBhTCwgYmFzZSkge1xyXG4gICAgICB2YXIgaSA9IDA7XHJcblxyXG4gICAgICAvLyBTdWJ0cmFjdCBiIGZyb20gYS5cclxuICAgICAgZm9yICg7IGFMLS07KSB7XHJcbiAgICAgICAgYVthTF0gLT0gaTtcclxuICAgICAgICBpID0gYVthTF0gPCBiW2FMXSA/IDEgOiAwO1xyXG4gICAgICAgIGFbYUxdID0gaSAqIGJhc2UgKyBhW2FMXSAtIGJbYUxdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBSZW1vdmUgbGVhZGluZyB6ZXJvcy5cclxuICAgICAgZm9yICg7ICFhWzBdICYmIGEubGVuZ3RoID4gMTspIGEuc2hpZnQoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHgsIHksIHByLCBybSwgZHAsIGJhc2UpIHtcclxuICAgICAgdmFyIGNtcCwgZSwgaSwgaywgbG9nQmFzZSwgbW9yZSwgcHJvZCwgcHJvZEwsIHEsIHFkLCByZW0sIHJlbUwsIHJlbTAsIHNkLCB0LCB4aSwgeEwsIHlkMCxcclxuICAgICAgICB5TCwgeXosXHJcbiAgICAgICAgQ3RvciA9IHguY29uc3RydWN0b3IsXHJcbiAgICAgICAgc2lnbiA9IHgucyA9PSB5LnMgPyAxIDogLTEsXHJcbiAgICAgICAgeGQgPSB4LmQsXHJcbiAgICAgICAgeWQgPSB5LmQ7XHJcblxyXG4gICAgICAvLyBFaXRoZXIgTmFOLCBJbmZpbml0eSBvciAwP1xyXG4gICAgICBpZiAoIXhkIHx8ICF4ZFswXSB8fCAheWQgfHwgIXlkWzBdKSB7XHJcblxyXG4gICAgICAgIHJldHVybiBuZXcgQ3RvcigvLyBSZXR1cm4gTmFOIGlmIGVpdGhlciBOYU4sIG9yIGJvdGggSW5maW5pdHkgb3IgMC5cclxuICAgICAgICAgICF4LnMgfHwgIXkucyB8fCAoeGQgPyB5ZCAmJiB4ZFswXSA9PSB5ZFswXSA6ICF5ZCkgPyBOYU4gOlxyXG5cclxuICAgICAgICAgIC8vIFJldHVybiDCsTAgaWYgeCBpcyAwIG9yIHkgaXMgwrFJbmZpbml0eSwgb3IgcmV0dXJuIMKxSW5maW5pdHkgYXMgeSBpcyAwLlxyXG4gICAgICAgICAgeGQgJiYgeGRbMF0gPT0gMCB8fCAheWQgPyBzaWduICogMCA6IHNpZ24gLyAwKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGJhc2UpIHtcclxuICAgICAgICBsb2dCYXNlID0gMTtcclxuICAgICAgICBlID0geC5lIC0geS5lO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGJhc2UgPSBCQVNFO1xyXG4gICAgICAgIGxvZ0Jhc2UgPSBMT0dfQkFTRTtcclxuICAgICAgICBlID0gbWF0aGZsb29yKHguZSAvIGxvZ0Jhc2UpIC0gbWF0aGZsb29yKHkuZSAvIGxvZ0Jhc2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB5TCA9IHlkLmxlbmd0aDtcclxuICAgICAgeEwgPSB4ZC5sZW5ndGg7XHJcbiAgICAgIHEgPSBuZXcgQ3RvcihzaWduKTtcclxuICAgICAgcWQgPSBxLmQgPSBbXTtcclxuXHJcbiAgICAgIC8vIFJlc3VsdCBleHBvbmVudCBtYXkgYmUgb25lIGxlc3MgdGhhbiBlLlxyXG4gICAgICAvLyBUaGUgZGlnaXQgYXJyYXkgb2YgYSBEZWNpbWFsIGZyb20gdG9TdHJpbmdCaW5hcnkgbWF5IGhhdmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICAgIGZvciAoaSA9IDA7IHlkW2ldID09ICh4ZFtpXSB8fCAwKTsgaSsrKTtcclxuXHJcbiAgICAgIGlmICh5ZFtpXSA+ICh4ZFtpXSB8fCAwKSkgZS0tO1xyXG5cclxuICAgICAgaWYgKHByID09IG51bGwpIHtcclxuICAgICAgICBzZCA9IHByID0gQ3Rvci5wcmVjaXNpb247XHJcbiAgICAgICAgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgICB9IGVsc2UgaWYgKGRwKSB7XHJcbiAgICAgICAgc2QgPSBwciArICh4LmUgLSB5LmUpICsgMTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZCA9IHByO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoc2QgPCAwKSB7XHJcbiAgICAgICAgcWQucHVzaCgxKTtcclxuICAgICAgICBtb3JlID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgLy8gQ29udmVydCBwcmVjaXNpb24gaW4gbnVtYmVyIG9mIGJhc2UgMTAgZGlnaXRzIHRvIGJhc2UgMWU3IGRpZ2l0cy5cclxuICAgICAgICBzZCA9IHNkIC8gbG9nQmFzZSArIDIgfCAwO1xyXG4gICAgICAgIGkgPSAwO1xyXG5cclxuICAgICAgICAvLyBkaXZpc29yIDwgMWU3XHJcbiAgICAgICAgaWYgKHlMID09IDEpIHtcclxuICAgICAgICAgIGsgPSAwO1xyXG4gICAgICAgICAgeWQgPSB5ZFswXTtcclxuICAgICAgICAgIHNkKys7XHJcblxyXG4gICAgICAgICAgLy8gayBpcyB0aGUgY2FycnkuXHJcbiAgICAgICAgICBmb3IgKDsgKGkgPCB4TCB8fCBrKSAmJiBzZC0tOyBpKyspIHtcclxuICAgICAgICAgICAgdCA9IGsgKiBiYXNlICsgKHhkW2ldIHx8IDApO1xyXG4gICAgICAgICAgICBxZFtpXSA9IHQgLyB5ZCB8IDA7XHJcbiAgICAgICAgICAgIGsgPSB0ICUgeWQgfCAwO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIG1vcmUgPSBrIHx8IGkgPCB4TDtcclxuXHJcbiAgICAgICAgLy8gZGl2aXNvciA+PSAxZTdcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vIE5vcm1hbGlzZSB4ZCBhbmQgeWQgc28gaGlnaGVzdCBvcmRlciBkaWdpdCBvZiB5ZCBpcyA+PSBiYXNlLzJcclxuICAgICAgICAgIGsgPSBiYXNlIC8gKHlkWzBdICsgMSkgfCAwO1xyXG5cclxuICAgICAgICAgIGlmIChrID4gMSkge1xyXG4gICAgICAgICAgICB5ZCA9IG11bHRpcGx5SW50ZWdlcih5ZCwgaywgYmFzZSk7XHJcbiAgICAgICAgICAgIHhkID0gbXVsdGlwbHlJbnRlZ2VyKHhkLCBrLCBiYXNlKTtcclxuICAgICAgICAgICAgeUwgPSB5ZC5sZW5ndGg7XHJcbiAgICAgICAgICAgIHhMID0geGQubGVuZ3RoO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHhpID0geUw7XHJcbiAgICAgICAgICByZW0gPSB4ZC5zbGljZSgwLCB5TCk7XHJcbiAgICAgICAgICByZW1MID0gcmVtLmxlbmd0aDtcclxuXHJcbiAgICAgICAgICAvLyBBZGQgemVyb3MgdG8gbWFrZSByZW1haW5kZXIgYXMgbG9uZyBhcyBkaXZpc29yLlxyXG4gICAgICAgICAgZm9yICg7IHJlbUwgPCB5TDspIHJlbVtyZW1MKytdID0gMDtcclxuXHJcbiAgICAgICAgICB5eiA9IHlkLnNsaWNlKCk7XHJcbiAgICAgICAgICB5ei51bnNoaWZ0KDApO1xyXG4gICAgICAgICAgeWQwID0geWRbMF07XHJcblxyXG4gICAgICAgICAgaWYgKHlkWzFdID49IGJhc2UgLyAyKSArK3lkMDtcclxuXHJcbiAgICAgICAgICBkbyB7XHJcbiAgICAgICAgICAgIGsgPSAwO1xyXG5cclxuICAgICAgICAgICAgLy8gQ29tcGFyZSBkaXZpc29yIGFuZCByZW1haW5kZXIuXHJcbiAgICAgICAgICAgIGNtcCA9IGNvbXBhcmUoeWQsIHJlbSwgeUwsIHJlbUwpO1xyXG5cclxuICAgICAgICAgICAgLy8gSWYgZGl2aXNvciA8IHJlbWFpbmRlci5cclxuICAgICAgICAgICAgaWYgKGNtcCA8IDApIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRyaWFsIGRpZ2l0LCBrLlxyXG4gICAgICAgICAgICAgIHJlbTAgPSByZW1bMF07XHJcbiAgICAgICAgICAgICAgaWYgKHlMICE9IHJlbUwpIHJlbTAgPSByZW0wICogYmFzZSArIChyZW1bMV0gfHwgMCk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIGsgd2lsbCBiZSBob3cgbWFueSB0aW1lcyB0aGUgZGl2aXNvciBnb2VzIGludG8gdGhlIGN1cnJlbnQgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgIGsgPSByZW0wIC8geWQwIHwgMDtcclxuXHJcbiAgICAgICAgICAgICAgLy8gIEFsZ29yaXRobTpcclxuICAgICAgICAgICAgICAvLyAgMS4gcHJvZHVjdCA9IGRpdmlzb3IgKiB0cmlhbCBkaWdpdCAoaylcclxuICAgICAgICAgICAgICAvLyAgMi4gaWYgcHJvZHVjdCA+IHJlbWFpbmRlcjogcHJvZHVjdCAtPSBkaXZpc29yLCBrLS1cclxuICAgICAgICAgICAgICAvLyAgMy4gcmVtYWluZGVyIC09IHByb2R1Y3RcclxuICAgICAgICAgICAgICAvLyAgNC4gaWYgcHJvZHVjdCB3YXMgPCByZW1haW5kZXIgYXQgMjpcclxuICAgICAgICAgICAgICAvLyAgICA1LiBjb21wYXJlIG5ldyByZW1haW5kZXIgYW5kIGRpdmlzb3JcclxuICAgICAgICAgICAgICAvLyAgICA2LiBJZiByZW1haW5kZXIgPiBkaXZpc29yOiByZW1haW5kZXIgLT0gZGl2aXNvciwgaysrXHJcblxyXG4gICAgICAgICAgICAgIGlmIChrID4gMSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGsgPj0gYmFzZSkgayA9IGJhc2UgLSAxO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIHByb2R1Y3QgPSBkaXZpc29yICogdHJpYWwgZGlnaXQuXHJcbiAgICAgICAgICAgICAgICBwcm9kID0gbXVsdGlwbHlJbnRlZ2VyKHlkLCBrLCBiYXNlKTtcclxuICAgICAgICAgICAgICAgIHByb2RMID0gcHJvZC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICByZW1MID0gcmVtLmxlbmd0aDtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBDb21wYXJlIHByb2R1Y3QgYW5kIHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAgIGNtcCA9IGNvbXBhcmUocHJvZCwgcmVtLCBwcm9kTCwgcmVtTCk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gcHJvZHVjdCA+IHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAgIGlmIChjbXAgPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICBrLS07XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBTdWJ0cmFjdCBkaXZpc29yIGZyb20gcHJvZHVjdC5cclxuICAgICAgICAgICAgICAgICAgc3VidHJhY3QocHJvZCwgeUwgPCBwcm9kTCA/IHl6IDogeWQsIHByb2RMLCBiYXNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIGNtcCBpcyAtMS5cclxuICAgICAgICAgICAgICAgIC8vIElmIGsgaXMgMCwgdGhlcmUgaXMgbm8gbmVlZCB0byBjb21wYXJlIHlkIGFuZCByZW0gYWdhaW4gYmVsb3csIHNvIGNoYW5nZSBjbXAgdG8gMVxyXG4gICAgICAgICAgICAgICAgLy8gdG8gYXZvaWQgaXQuIElmIGsgaXMgMSB0aGVyZSBpcyBhIG5lZWQgdG8gY29tcGFyZSB5ZCBhbmQgcmVtIGFnYWluIGJlbG93LlxyXG4gICAgICAgICAgICAgICAgaWYgKGsgPT0gMCkgY21wID0gayA9IDE7XHJcbiAgICAgICAgICAgICAgICBwcm9kID0geWQuc2xpY2UoKTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIHByb2RMID0gcHJvZC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgaWYgKHByb2RMIDwgcmVtTCkgcHJvZC51bnNoaWZ0KDApO1xyXG5cclxuICAgICAgICAgICAgICAvLyBTdWJ0cmFjdCBwcm9kdWN0IGZyb20gcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgIHN1YnRyYWN0KHJlbSwgcHJvZCwgcmVtTCwgYmFzZSk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIElmIHByb2R1Y3Qgd2FzIDwgcHJldmlvdXMgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgIGlmIChjbXAgPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIHJlbUwgPSByZW0ubGVuZ3RoO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIENvbXBhcmUgZGl2aXNvciBhbmQgbmV3IHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAgIGNtcCA9IGNvbXBhcmUoeWQsIHJlbSwgeUwsIHJlbUwpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIElmIGRpdmlzb3IgPCBuZXcgcmVtYWluZGVyLCBzdWJ0cmFjdCBkaXZpc29yIGZyb20gcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgICAgaWYgKGNtcCA8IDEpIHtcclxuICAgICAgICAgICAgICAgICAgaysrO1xyXG5cclxuICAgICAgICAgICAgICAgICAgLy8gU3VidHJhY3QgZGl2aXNvciBmcm9tIHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAgICAgc3VidHJhY3QocmVtLCB5TCA8IHJlbUwgPyB5eiA6IHlkLCByZW1MLCBiYXNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIHJlbUwgPSByZW0ubGVuZ3RoO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNtcCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgIGsrKztcclxuICAgICAgICAgICAgICByZW0gPSBbMF07XHJcbiAgICAgICAgICAgIH0gICAgLy8gaWYgY21wID09PSAxLCBrIHdpbGwgYmUgMFxyXG5cclxuICAgICAgICAgICAgLy8gQWRkIHRoZSBuZXh0IGRpZ2l0LCBrLCB0byB0aGUgcmVzdWx0IGFycmF5LlxyXG4gICAgICAgICAgICBxZFtpKytdID0gaztcclxuXHJcbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICBpZiAoY21wICYmIHJlbVswXSkge1xyXG4gICAgICAgICAgICAgIHJlbVtyZW1MKytdID0geGRbeGldIHx8IDA7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmVtID0gW3hkW3hpXV07XHJcbiAgICAgICAgICAgICAgcmVtTCA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9IHdoaWxlICgoeGkrKyA8IHhMIHx8IHJlbVswXSAhPT0gdm9pZCAwKSAmJiBzZC0tKTtcclxuXHJcbiAgICAgICAgICBtb3JlID0gcmVtWzBdICE9PSB2b2lkIDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBMZWFkaW5nIHplcm8/XHJcbiAgICAgICAgaWYgKCFxZFswXSkgcWQuc2hpZnQoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gbG9nQmFzZSBpcyAxIHdoZW4gZGl2aWRlIGlzIGJlaW5nIHVzZWQgZm9yIGJhc2UgY29udmVyc2lvbi5cclxuICAgICAgaWYgKGxvZ0Jhc2UgPT0gMSkge1xyXG4gICAgICAgIHEuZSA9IGU7XHJcbiAgICAgICAgaW5leGFjdCA9IG1vcmU7XHJcbiAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgIC8vIFRvIGNhbGN1bGF0ZSBxLmUsIGZpcnN0IGdldCB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBvZiBxZFswXS5cclxuICAgICAgICBmb3IgKGkgPSAxLCBrID0gcWRbMF07IGsgPj0gMTA7IGsgLz0gMTApIGkrKztcclxuICAgICAgICBxLmUgPSBpICsgZSAqIGxvZ0Jhc2UgLSAxO1xyXG5cclxuICAgICAgICBmaW5hbGlzZShxLCBkcCA/IHByICsgcS5lICsgMSA6IHByLCBybSwgbW9yZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBxO1xyXG4gICAgfTtcclxuICB9KSgpO1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSb3VuZCBgeGAgdG8gYHNkYCBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm1gLlxyXG4gICAqIENoZWNrIGZvciBvdmVyL3VuZGVyLWZsb3cuXHJcbiAgICovXHJcbiAgIGZ1bmN0aW9uIGZpbmFsaXNlKHgsIHNkLCBybSwgaXNUcnVuY2F0ZWQpIHtcclxuICAgIHZhciBkaWdpdHMsIGksIGosIGssIHJkLCByb3VuZFVwLCB3LCB4ZCwgeGRpLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICAvLyBEb24ndCByb3VuZCBpZiBzZCBpcyBudWxsIG9yIHVuZGVmaW5lZC5cclxuICAgIG91dDogaWYgKHNkICE9IG51bGwpIHtcclxuICAgICAgeGQgPSB4LmQ7XHJcblxyXG4gICAgICAvLyBJbmZpbml0eS9OYU4uXHJcbiAgICAgIGlmICgheGQpIHJldHVybiB4O1xyXG5cclxuICAgICAgLy8gcmQ6IHRoZSByb3VuZGluZyBkaWdpdCwgaS5lLiB0aGUgZGlnaXQgYWZ0ZXIgdGhlIGRpZ2l0IHRoYXQgbWF5IGJlIHJvdW5kZWQgdXAuXHJcbiAgICAgIC8vIHc6IHRoZSB3b3JkIG9mIHhkIGNvbnRhaW5pbmcgcmQsIGEgYmFzZSAxZTcgbnVtYmVyLlxyXG4gICAgICAvLyB4ZGk6IHRoZSBpbmRleCBvZiB3IHdpdGhpbiB4ZC5cclxuICAgICAgLy8gZGlnaXRzOiB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBvZiB3LlxyXG4gICAgICAvLyBpOiB3aGF0IHdvdWxkIGJlIHRoZSBpbmRleCBvZiByZCB3aXRoaW4gdyBpZiBhbGwgdGhlIG51bWJlcnMgd2VyZSA3IGRpZ2l0cyBsb25nIChpLmUuIGlmXHJcbiAgICAgIC8vIHRoZXkgaGFkIGxlYWRpbmcgemVyb3MpXHJcbiAgICAgIC8vIGo6IGlmID4gMCwgdGhlIGFjdHVhbCBpbmRleCBvZiByZCB3aXRoaW4gdyAoaWYgPCAwLCByZCBpcyBhIGxlYWRpbmcgemVybykuXHJcblxyXG4gICAgICAvLyBHZXQgdGhlIGxlbmd0aCBvZiB0aGUgZmlyc3Qgd29yZCBvZiB0aGUgZGlnaXRzIGFycmF5IHhkLlxyXG4gICAgICBmb3IgKGRpZ2l0cyA9IDEsIGsgPSB4ZFswXTsgayA+PSAxMDsgayAvPSAxMCkgZGlnaXRzKys7XHJcbiAgICAgIGkgPSBzZCAtIGRpZ2l0cztcclxuXHJcbiAgICAgIC8vIElzIHRoZSByb3VuZGluZyBkaWdpdCBpbiB0aGUgZmlyc3Qgd29yZCBvZiB4ZD9cclxuICAgICAgaWYgKGkgPCAwKSB7XHJcbiAgICAgICAgaSArPSBMT0dfQkFTRTtcclxuICAgICAgICBqID0gc2Q7XHJcbiAgICAgICAgdyA9IHhkW3hkaSA9IDBdO1xyXG5cclxuICAgICAgICAvLyBHZXQgdGhlIHJvdW5kaW5nIGRpZ2l0IGF0IGluZGV4IGogb2Ygdy5cclxuICAgICAgICByZCA9IHcgLyBtYXRocG93KDEwLCBkaWdpdHMgLSBqIC0gMSkgJSAxMCB8IDA7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgeGRpID0gTWF0aC5jZWlsKChpICsgMSkgLyBMT0dfQkFTRSk7XHJcbiAgICAgICAgayA9IHhkLmxlbmd0aDtcclxuICAgICAgICBpZiAoeGRpID49IGspIHtcclxuICAgICAgICAgIGlmIChpc1RydW5jYXRlZCkge1xyXG5cclxuICAgICAgICAgICAgLy8gTmVlZGVkIGJ5IGBuYXR1cmFsRXhwb25lbnRpYWxgLCBgbmF0dXJhbExvZ2FyaXRobWAgYW5kIGBzcXVhcmVSb290YC5cclxuICAgICAgICAgICAgZm9yICg7IGsrKyA8PSB4ZGk7KSB4ZC5wdXNoKDApO1xyXG4gICAgICAgICAgICB3ID0gcmQgPSAwO1xyXG4gICAgICAgICAgICBkaWdpdHMgPSAxO1xyXG4gICAgICAgICAgICBpICU9IExPR19CQVNFO1xyXG4gICAgICAgICAgICBqID0gaSAtIExPR19CQVNFICsgMTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGJyZWFrIG91dDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdyA9IGsgPSB4ZFt4ZGldO1xyXG5cclxuICAgICAgICAgIC8vIEdldCB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBvZiB3LlxyXG4gICAgICAgICAgZm9yIChkaWdpdHMgPSAxOyBrID49IDEwOyBrIC89IDEwKSBkaWdpdHMrKztcclxuXHJcbiAgICAgICAgICAvLyBHZXQgdGhlIGluZGV4IG9mIHJkIHdpdGhpbiB3LlxyXG4gICAgICAgICAgaSAlPSBMT0dfQkFTRTtcclxuXHJcbiAgICAgICAgICAvLyBHZXQgdGhlIGluZGV4IG9mIHJkIHdpdGhpbiB3LCBhZGp1c3RlZCBmb3IgbGVhZGluZyB6ZXJvcy5cclxuICAgICAgICAgIC8vIFRoZSBudW1iZXIgb2YgbGVhZGluZyB6ZXJvcyBvZiB3IGlzIGdpdmVuIGJ5IExPR19CQVNFIC0gZGlnaXRzLlxyXG4gICAgICAgICAgaiA9IGkgLSBMT0dfQkFTRSArIGRpZ2l0cztcclxuXHJcbiAgICAgICAgICAvLyBHZXQgdGhlIHJvdW5kaW5nIGRpZ2l0IGF0IGluZGV4IGogb2Ygdy5cclxuICAgICAgICAgIHJkID0gaiA8IDAgPyAwIDogdyAvIG1hdGhwb3coMTAsIGRpZ2l0cyAtIGogLSAxKSAlIDEwIHwgMDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEFyZSB0aGVyZSBhbnkgbm9uLXplcm8gZGlnaXRzIGFmdGVyIHRoZSByb3VuZGluZyBkaWdpdD9cclxuICAgICAgaXNUcnVuY2F0ZWQgPSBpc1RydW5jYXRlZCB8fCBzZCA8IDAgfHxcclxuICAgICAgICB4ZFt4ZGkgKyAxXSAhPT0gdm9pZCAwIHx8IChqIDwgMCA/IHcgOiB3ICUgbWF0aHBvdygxMCwgZGlnaXRzIC0gaiAtIDEpKTtcclxuXHJcbiAgICAgIC8vIFRoZSBleHByZXNzaW9uIGB3ICUgbWF0aHBvdygxMCwgZGlnaXRzIC0gaiAtIDEpYCByZXR1cm5zIGFsbCB0aGUgZGlnaXRzIG9mIHcgdG8gdGhlIHJpZ2h0XHJcbiAgICAgIC8vIG9mIHRoZSBkaWdpdCBhdCAobGVmdC10by1yaWdodCkgaW5kZXggaiwgZS5nLiBpZiB3IGlzIDkwODcxNCBhbmQgaiBpcyAyLCB0aGUgZXhwcmVzc2lvblxyXG4gICAgICAvLyB3aWxsIGdpdmUgNzE0LlxyXG5cclxuICAgICAgcm91bmRVcCA9IHJtIDwgNFxyXG4gICAgICAgID8gKHJkIHx8IGlzVHJ1bmNhdGVkKSAmJiAocm0gPT0gMCB8fCBybSA9PSAoeC5zIDwgMCA/IDMgOiAyKSlcclxuICAgICAgICA6IHJkID4gNSB8fCByZCA9PSA1ICYmIChybSA9PSA0IHx8IGlzVHJ1bmNhdGVkIHx8IHJtID09IDYgJiZcclxuXHJcbiAgICAgICAgICAvLyBDaGVjayB3aGV0aGVyIHRoZSBkaWdpdCB0byB0aGUgbGVmdCBvZiB0aGUgcm91bmRpbmcgZGlnaXQgaXMgb2RkLlxyXG4gICAgICAgICAgKChpID4gMCA/IGogPiAwID8gdyAvIG1hdGhwb3coMTAsIGRpZ2l0cyAtIGopIDogMCA6IHhkW3hkaSAtIDFdKSAlIDEwKSAmIDEgfHxcclxuICAgICAgICAgICAgcm0gPT0gKHgucyA8IDAgPyA4IDogNykpO1xyXG5cclxuICAgICAgaWYgKHNkIDwgMSB8fCAheGRbMF0pIHtcclxuICAgICAgICB4ZC5sZW5ndGggPSAwO1xyXG4gICAgICAgIGlmIChyb3VuZFVwKSB7XHJcblxyXG4gICAgICAgICAgLy8gQ29udmVydCBzZCB0byBkZWNpbWFsIHBsYWNlcy5cclxuICAgICAgICAgIHNkIC09IHguZSArIDE7XHJcblxyXG4gICAgICAgICAgLy8gMSwgMC4xLCAwLjAxLCAwLjAwMSwgMC4wMDAxIGV0Yy5cclxuICAgICAgICAgIHhkWzBdID0gbWF0aHBvdygxMCwgKExPR19CQVNFIC0gc2QgJSBMT0dfQkFTRSkgJSBMT0dfQkFTRSk7XHJcbiAgICAgICAgICB4LmUgPSAtc2QgfHwgMDtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vIFplcm8uXHJcbiAgICAgICAgICB4ZFswXSA9IHguZSA9IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4geDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUmVtb3ZlIGV4Y2VzcyBkaWdpdHMuXHJcbiAgICAgIGlmIChpID09IDApIHtcclxuICAgICAgICB4ZC5sZW5ndGggPSB4ZGk7XHJcbiAgICAgICAgayA9IDE7XHJcbiAgICAgICAgeGRpLS07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgeGQubGVuZ3RoID0geGRpICsgMTtcclxuICAgICAgICBrID0gbWF0aHBvdygxMCwgTE9HX0JBU0UgLSBpKTtcclxuXHJcbiAgICAgICAgLy8gRS5nLiA1NjcwMCBiZWNvbWVzIDU2MDAwIGlmIDcgaXMgdGhlIHJvdW5kaW5nIGRpZ2l0LlxyXG4gICAgICAgIC8vIGogPiAwIG1lYW5zIGkgPiBudW1iZXIgb2YgbGVhZGluZyB6ZXJvcyBvZiB3LlxyXG4gICAgICAgIHhkW3hkaV0gPSBqID4gMCA/ICh3IC8gbWF0aHBvdygxMCwgZGlnaXRzIC0gaikgJSBtYXRocG93KDEwLCBqKSB8IDApICogayA6IDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChyb3VuZFVwKSB7XHJcbiAgICAgICAgZm9yICg7Oykge1xyXG5cclxuICAgICAgICAgIC8vIElzIHRoZSBkaWdpdCB0byBiZSByb3VuZGVkIHVwIGluIHRoZSBmaXJzdCB3b3JkIG9mIHhkP1xyXG4gICAgICAgICAgaWYgKHhkaSA9PSAwKSB7XHJcblxyXG4gICAgICAgICAgICAvLyBpIHdpbGwgYmUgdGhlIGxlbmd0aCBvZiB4ZFswXSBiZWZvcmUgayBpcyBhZGRlZC5cclxuICAgICAgICAgICAgZm9yIChpID0gMSwgaiA9IHhkWzBdOyBqID49IDEwOyBqIC89IDEwKSBpKys7XHJcbiAgICAgICAgICAgIGogPSB4ZFswXSArPSBrO1xyXG4gICAgICAgICAgICBmb3IgKGsgPSAxOyBqID49IDEwOyBqIC89IDEwKSBrKys7XHJcblxyXG4gICAgICAgICAgICAvLyBpZiBpICE9IGsgdGhlIGxlbmd0aCBoYXMgaW5jcmVhc2VkLlxyXG4gICAgICAgICAgICBpZiAoaSAhPSBrKSB7XHJcbiAgICAgICAgICAgICAgeC5lKys7XHJcbiAgICAgICAgICAgICAgaWYgKHhkWzBdID09IEJBU0UpIHhkWzBdID0gMTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB4ZFt4ZGldICs9IGs7XHJcbiAgICAgICAgICAgIGlmICh4ZFt4ZGldICE9IEJBU0UpIGJyZWFrO1xyXG4gICAgICAgICAgICB4ZFt4ZGktLV0gPSAwO1xyXG4gICAgICAgICAgICBrID0gMTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFJlbW92ZSB0cmFpbGluZyB6ZXJvcy5cclxuICAgICAgZm9yIChpID0geGQubGVuZ3RoOyB4ZFstLWldID09PSAwOykgeGQucG9wKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGV4dGVybmFsKSB7XHJcblxyXG4gICAgICAvLyBPdmVyZmxvdz9cclxuICAgICAgaWYgKHguZSA+IEN0b3IubWF4RSkge1xyXG5cclxuICAgICAgICAvLyBJbmZpbml0eS5cclxuICAgICAgICB4LmQgPSBudWxsO1xyXG4gICAgICAgIHguZSA9IE5hTjtcclxuXHJcbiAgICAgIC8vIFVuZGVyZmxvdz9cclxuICAgICAgfSBlbHNlIGlmICh4LmUgPCBDdG9yLm1pbkUpIHtcclxuXHJcbiAgICAgICAgLy8gWmVyby5cclxuICAgICAgICB4LmUgPSAwO1xyXG4gICAgICAgIHguZCA9IFswXTtcclxuICAgICAgICAvLyBDdG9yLnVuZGVyZmxvdyA9IHRydWU7XHJcbiAgICAgIH0gLy8gZWxzZSBDdG9yLnVuZGVyZmxvdyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB4O1xyXG4gIH1cclxuXHJcblxyXG4gIGZ1bmN0aW9uIGZpbml0ZVRvU3RyaW5nKHgsIGlzRXhwLCBzZCkge1xyXG4gICAgaWYgKCF4LmlzRmluaXRlKCkpIHJldHVybiBub25GaW5pdGVUb1N0cmluZyh4KTtcclxuICAgIHZhciBrLFxyXG4gICAgICBlID0geC5lLFxyXG4gICAgICBzdHIgPSBkaWdpdHNUb1N0cmluZyh4LmQpLFxyXG4gICAgICBsZW4gPSBzdHIubGVuZ3RoO1xyXG5cclxuICAgIGlmIChpc0V4cCkge1xyXG4gICAgICBpZiAoc2QgJiYgKGsgPSBzZCAtIGxlbikgPiAwKSB7XHJcbiAgICAgICAgc3RyID0gc3RyLmNoYXJBdCgwKSArICcuJyArIHN0ci5zbGljZSgxKSArIGdldFplcm9TdHJpbmcoayk7XHJcbiAgICAgIH0gZWxzZSBpZiAobGVuID4gMSkge1xyXG4gICAgICAgIHN0ciA9IHN0ci5jaGFyQXQoMCkgKyAnLicgKyBzdHIuc2xpY2UoMSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHN0ciA9IHN0ciArICh4LmUgPCAwID8gJ2UnIDogJ2UrJykgKyB4LmU7XHJcbiAgICB9IGVsc2UgaWYgKGUgPCAwKSB7XHJcbiAgICAgIHN0ciA9ICcwLicgKyBnZXRaZXJvU3RyaW5nKC1lIC0gMSkgKyBzdHI7XHJcbiAgICAgIGlmIChzZCAmJiAoayA9IHNkIC0gbGVuKSA+IDApIHN0ciArPSBnZXRaZXJvU3RyaW5nKGspO1xyXG4gICAgfSBlbHNlIGlmIChlID49IGxlbikge1xyXG4gICAgICBzdHIgKz0gZ2V0WmVyb1N0cmluZyhlICsgMSAtIGxlbik7XHJcbiAgICAgIGlmIChzZCAmJiAoayA9IHNkIC0gZSAtIDEpID4gMCkgc3RyID0gc3RyICsgJy4nICsgZ2V0WmVyb1N0cmluZyhrKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICgoayA9IGUgKyAxKSA8IGxlbikgc3RyID0gc3RyLnNsaWNlKDAsIGspICsgJy4nICsgc3RyLnNsaWNlKGspO1xyXG4gICAgICBpZiAoc2QgJiYgKGsgPSBzZCAtIGxlbikgPiAwKSB7XHJcbiAgICAgICAgaWYgKGUgKyAxID09PSBsZW4pIHN0ciArPSAnLic7XHJcbiAgICAgICAgc3RyICs9IGdldFplcm9TdHJpbmcoayk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3RyO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIENhbGN1bGF0ZSB0aGUgYmFzZSAxMCBleHBvbmVudCBmcm9tIHRoZSBiYXNlIDFlNyBleHBvbmVudC5cclxuICBmdW5jdGlvbiBnZXRCYXNlMTBFeHBvbmVudChkaWdpdHMsIGUpIHtcclxuICAgIHZhciB3ID0gZGlnaXRzWzBdO1xyXG5cclxuICAgIC8vIEFkZCB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBvZiB0aGUgZmlyc3Qgd29yZCBvZiB0aGUgZGlnaXRzIGFycmF5LlxyXG4gICAgZm9yICggZSAqPSBMT0dfQkFTRTsgdyA+PSAxMDsgdyAvPSAxMCkgZSsrO1xyXG4gICAgcmV0dXJuIGU7XHJcbiAgfVxyXG5cclxuXHJcbiAgZnVuY3Rpb24gZ2V0TG4xMChDdG9yLCBzZCwgcHIpIHtcclxuICAgIGlmIChzZCA+IExOMTBfUFJFQ0lTSU9OKSB7XHJcblxyXG4gICAgICAvLyBSZXNldCBnbG9iYWwgc3RhdGUgaW4gY2FzZSB0aGUgZXhjZXB0aW9uIGlzIGNhdWdodC5cclxuICAgICAgZXh0ZXJuYWwgPSB0cnVlO1xyXG4gICAgICBpZiAocHIpIEN0b3IucHJlY2lzaW9uID0gcHI7XHJcbiAgICAgIHRocm93IEVycm9yKHByZWNpc2lvbkxpbWl0RXhjZWVkZWQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZpbmFsaXNlKG5ldyBDdG9yKExOMTApLCBzZCwgMSwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZnVuY3Rpb24gZ2V0UGkoQ3Rvciwgc2QsIHJtKSB7XHJcbiAgICBpZiAoc2QgPiBQSV9QUkVDSVNJT04pIHRocm93IEVycm9yKHByZWNpc2lvbkxpbWl0RXhjZWVkZWQpO1xyXG4gICAgcmV0dXJuIGZpbmFsaXNlKG5ldyBDdG9yKFBJKSwgc2QsIHJtLCB0cnVlKTtcclxuICB9XHJcblxyXG5cclxuICBmdW5jdGlvbiBnZXRQcmVjaXNpb24oZGlnaXRzKSB7XHJcbiAgICB2YXIgdyA9IGRpZ2l0cy5sZW5ndGggLSAxLFxyXG4gICAgICBsZW4gPSB3ICogTE9HX0JBU0UgKyAxO1xyXG5cclxuICAgIHcgPSBkaWdpdHNbd107XHJcblxyXG4gICAgLy8gSWYgbm9uLXplcm8uLi5cclxuICAgIGlmICh3KSB7XHJcblxyXG4gICAgICAvLyBTdWJ0cmFjdCB0aGUgbnVtYmVyIG9mIHRyYWlsaW5nIHplcm9zIG9mIHRoZSBsYXN0IHdvcmQuXHJcbiAgICAgIGZvciAoOyB3ICUgMTAgPT0gMDsgdyAvPSAxMCkgbGVuLS07XHJcblxyXG4gICAgICAvLyBBZGQgdGhlIG51bWJlciBvZiBkaWdpdHMgb2YgdGhlIGZpcnN0IHdvcmQuXHJcbiAgICAgIGZvciAodyA9IGRpZ2l0c1swXTsgdyA+PSAxMDsgdyAvPSAxMCkgbGVuKys7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGxlbjtcclxuICB9XHJcblxyXG5cclxuICBmdW5jdGlvbiBnZXRaZXJvU3RyaW5nKGspIHtcclxuICAgIHZhciB6cyA9ICcnO1xyXG4gICAgZm9yICg7IGstLTspIHpzICs9ICcwJztcclxuICAgIHJldHVybiB6cztcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiBEZWNpbWFsIGB4YCB0byB0aGUgcG93ZXIgYG5gLCB3aGVyZSBgbmAgaXMgYW5cclxuICAgKiBpbnRlZ2VyIG9mIHR5cGUgbnVtYmVyLlxyXG4gICAqXHJcbiAgICogSW1wbGVtZW50cyAnZXhwb25lbnRpYXRpb24gYnkgc3F1YXJpbmcnLiBDYWxsZWQgYnkgYHBvd2AgYW5kIGBwYXJzZU90aGVyYC5cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGludFBvdyhDdG9yLCB4LCBuLCBwcikge1xyXG4gICAgdmFyIGlzVHJ1bmNhdGVkLFxyXG4gICAgICByID0gbmV3IEN0b3IoMSksXHJcblxyXG4gICAgICAvLyBNYXggbiBvZiA5MDA3MTk5MjU0NzQwOTkxIHRha2VzIDUzIGxvb3AgaXRlcmF0aW9ucy5cclxuICAgICAgLy8gTWF4aW11bSBkaWdpdHMgYXJyYXkgbGVuZ3RoOyBsZWF2ZXMgWzI4LCAzNF0gZ3VhcmQgZGlnaXRzLlxyXG4gICAgICBrID0gTWF0aC5jZWlsKHByIC8gTE9HX0JBU0UgKyA0KTtcclxuXHJcbiAgICBleHRlcm5hbCA9IGZhbHNlO1xyXG5cclxuICAgIGZvciAoOzspIHtcclxuICAgICAgaWYgKG4gJSAyKSB7XHJcbiAgICAgICAgciA9IHIudGltZXMoeCk7XHJcbiAgICAgICAgaWYgKHRydW5jYXRlKHIuZCwgaykpIGlzVHJ1bmNhdGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbiA9IG1hdGhmbG9vcihuIC8gMik7XHJcbiAgICAgIGlmIChuID09PSAwKSB7XHJcblxyXG4gICAgICAgIC8vIFRvIGVuc3VyZSBjb3JyZWN0IHJvdW5kaW5nIHdoZW4gci5kIGlzIHRydW5jYXRlZCwgaW5jcmVtZW50IHRoZSBsYXN0IHdvcmQgaWYgaXQgaXMgemVyby5cclxuICAgICAgICBuID0gci5kLmxlbmd0aCAtIDE7XHJcbiAgICAgICAgaWYgKGlzVHJ1bmNhdGVkICYmIHIuZFtuXSA9PT0gMCkgKytyLmRbbl07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHggPSB4LnRpbWVzKHgpO1xyXG4gICAgICB0cnVuY2F0ZSh4LmQsIGspO1xyXG4gICAgfVxyXG5cclxuICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gcjtcclxuICB9XHJcblxyXG5cclxuICBmdW5jdGlvbiBpc09kZChuKSB7XHJcbiAgICByZXR1cm4gbi5kW24uZC5sZW5ndGggLSAxXSAmIDE7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBIYW5kbGUgYG1heGAgYW5kIGBtaW5gLiBgbHRndGAgaXMgJ2x0JyBvciAnZ3QnLlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIG1heE9yTWluKEN0b3IsIGFyZ3MsIGx0Z3QpIHtcclxuICAgIHZhciB5LFxyXG4gICAgICB4ID0gbmV3IEN0b3IoYXJnc1swXSksXHJcbiAgICAgIGkgPSAwO1xyXG5cclxuICAgIGZvciAoOyArK2kgPCBhcmdzLmxlbmd0aDspIHtcclxuICAgICAgeSA9IG5ldyBDdG9yKGFyZ3NbaV0pO1xyXG4gICAgICBpZiAoIXkucykge1xyXG4gICAgICAgIHggPSB5O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9IGVsc2UgaWYgKHhbbHRndF0oeSkpIHtcclxuICAgICAgICB4ID0geTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB4O1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIG5hdHVyYWwgZXhwb25lbnRpYWwgb2YgYHhgIHJvdW5kZWQgdG8gYHNkYCBzaWduaWZpY2FudFxyXG4gICAqIGRpZ2l0cy5cclxuICAgKlxyXG4gICAqIFRheWxvci9NYWNsYXVyaW4gc2VyaWVzLlxyXG4gICAqXHJcbiAgICogZXhwKHgpID0geF4wLzAhICsgeF4xLzEhICsgeF4yLzIhICsgeF4zLzMhICsgLi4uXHJcbiAgICpcclxuICAgKiBBcmd1bWVudCByZWR1Y3Rpb246XHJcbiAgICogICBSZXBlYXQgeCA9IHggLyAzMiwgayArPSA1LCB1bnRpbCB8eHwgPCAwLjFcclxuICAgKiAgIGV4cCh4KSA9IGV4cCh4IC8gMl5rKV4oMl5rKVxyXG4gICAqXHJcbiAgICogUHJldmlvdXNseSwgdGhlIGFyZ3VtZW50IHdhcyBpbml0aWFsbHkgcmVkdWNlZCBieVxyXG4gICAqIGV4cCh4KSA9IGV4cChyKSAqIDEwXmsgIHdoZXJlIHIgPSB4IC0gayAqIGxuMTAsIGsgPSBmbG9vcih4IC8gbG4xMClcclxuICAgKiB0byBmaXJzdCBwdXQgciBpbiB0aGUgcmFuZ2UgWzAsIGxuMTBdLCBiZWZvcmUgZGl2aWRpbmcgYnkgMzIgdW50aWwgfHh8IDwgMC4xLCBidXQgdGhpcyB3YXNcclxuICAgKiBmb3VuZCB0byBiZSBzbG93ZXIgdGhhbiBqdXN0IGRpdmlkaW5nIHJlcGVhdGVkbHkgYnkgMzIgYXMgYWJvdmUuXHJcbiAgICpcclxuICAgKiBNYXggaW50ZWdlciBhcmd1bWVudDogZXhwKCcyMDcyMzI2NTgzNjk0NjQxMycpID0gNi4zZSs5MDAwMDAwMDAwMDAwMDAwXHJcbiAgICogTWluIGludGVnZXIgYXJndW1lbnQ6IGV4cCgnLTIwNzIzMjY1ODM2OTQ2NDExJykgPSAxLjJlLTkwMDAwMDAwMDAwMDAwMDBcclxuICAgKiAoTWF0aCBvYmplY3QgaW50ZWdlciBtaW4vbWF4OiBNYXRoLmV4cCg3MDkpID0gOC4yZSszMDcsIE1hdGguZXhwKC03NDUpID0gNWUtMzI0KVxyXG4gICAqXHJcbiAgICogIGV4cChJbmZpbml0eSkgID0gSW5maW5pdHlcclxuICAgKiAgZXhwKC1JbmZpbml0eSkgPSAwXHJcbiAgICogIGV4cChOYU4pICAgICAgID0gTmFOXHJcbiAgICogIGV4cCjCsTApICAgICAgICA9IDFcclxuICAgKlxyXG4gICAqICBleHAoeCkgaXMgbm9uLXRlcm1pbmF0aW5nIGZvciBhbnkgZmluaXRlLCBub24temVybyB4LlxyXG4gICAqXHJcbiAgICogIFRoZSByZXN1bHQgd2lsbCBhbHdheXMgYmUgY29ycmVjdGx5IHJvdW5kZWQuXHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBuYXR1cmFsRXhwb25lbnRpYWwoeCwgc2QpIHtcclxuICAgIHZhciBkZW5vbWluYXRvciwgZ3VhcmQsIGosIHBvdywgc3VtLCB0LCB3cHIsXHJcbiAgICAgIHJlcCA9IDAsXHJcbiAgICAgIGkgPSAwLFxyXG4gICAgICBrID0gMCxcclxuICAgICAgQ3RvciA9IHguY29uc3RydWN0b3IsXHJcbiAgICAgIHJtID0gQ3Rvci5yb3VuZGluZyxcclxuICAgICAgcHIgPSBDdG9yLnByZWNpc2lvbjtcclxuXHJcbiAgICAvLyAwL05hTi9JbmZpbml0eT9cclxuICAgIGlmICgheC5kIHx8ICF4LmRbMF0gfHwgeC5lID4gMTcpIHtcclxuXHJcbiAgICAgIHJldHVybiBuZXcgQ3Rvcih4LmRcclxuICAgICAgICA/ICF4LmRbMF0gPyAxIDogeC5zIDwgMCA/IDAgOiAxIC8gMFxyXG4gICAgICAgIDogeC5zID8geC5zIDwgMCA/IDAgOiB4IDogMCAvIDApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzZCA9PSBudWxsKSB7XHJcbiAgICAgIGV4dGVybmFsID0gZmFsc2U7XHJcbiAgICAgIHdwciA9IHByO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgd3ByID0gc2Q7XHJcbiAgICB9XHJcblxyXG4gICAgdCA9IG5ldyBDdG9yKDAuMDMxMjUpO1xyXG5cclxuICAgIC8vIHdoaWxlIGFicyh4KSA+PSAwLjFcclxuICAgIHdoaWxlICh4LmUgPiAtMikge1xyXG5cclxuICAgICAgLy8geCA9IHggLyAyXjVcclxuICAgICAgeCA9IHgudGltZXModCk7XHJcbiAgICAgIGsgKz0gNTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBVc2UgMiAqIGxvZzEwKDJeaykgKyA1IChlbXBpcmljYWxseSBkZXJpdmVkKSB0byBlc3RpbWF0ZSB0aGUgaW5jcmVhc2UgaW4gcHJlY2lzaW9uXHJcbiAgICAvLyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoZSBmaXJzdCA0IHJvdW5kaW5nIGRpZ2l0cyBhcmUgY29ycmVjdC5cclxuICAgIGd1YXJkID0gTWF0aC5sb2cobWF0aHBvdygyLCBrKSkgLyBNYXRoLkxOMTAgKiAyICsgNSB8IDA7XHJcbiAgICB3cHIgKz0gZ3VhcmQ7XHJcbiAgICBkZW5vbWluYXRvciA9IHBvdyA9IHN1bSA9IG5ldyBDdG9yKDEpO1xyXG4gICAgQ3Rvci5wcmVjaXNpb24gPSB3cHI7XHJcblxyXG4gICAgZm9yICg7Oykge1xyXG4gICAgICBwb3cgPSBmaW5hbGlzZShwb3cudGltZXMoeCksIHdwciwgMSk7XHJcbiAgICAgIGRlbm9taW5hdG9yID0gZGVub21pbmF0b3IudGltZXMoKytpKTtcclxuICAgICAgdCA9IHN1bS5wbHVzKGRpdmlkZShwb3csIGRlbm9taW5hdG9yLCB3cHIsIDEpKTtcclxuXHJcbiAgICAgIGlmIChkaWdpdHNUb1N0cmluZyh0LmQpLnNsaWNlKDAsIHdwcikgPT09IGRpZ2l0c1RvU3RyaW5nKHN1bS5kKS5zbGljZSgwLCB3cHIpKSB7XHJcbiAgICAgICAgaiA9IGs7XHJcbiAgICAgICAgd2hpbGUgKGotLSkgc3VtID0gZmluYWxpc2Uoc3VtLnRpbWVzKHN1bSksIHdwciwgMSk7XHJcblxyXG4gICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgZmlyc3QgNCByb3VuZGluZyBkaWdpdHMgYXJlIFs0OV05OTkuXHJcbiAgICAgICAgLy8gSWYgc28sIHJlcGVhdCB0aGUgc3VtbWF0aW9uIHdpdGggYSBoaWdoZXIgcHJlY2lzaW9uLCBvdGhlcndpc2VcclxuICAgICAgICAvLyBlLmcuIHdpdGggcHJlY2lzaW9uOiAxOCwgcm91bmRpbmc6IDFcclxuICAgICAgICAvLyBleHAoMTguNDA0MjcyNDYyNTk1MDM0MDgzNTY3NzkzOTE5ODQzNzYxKSA9IDk4MzcyNTYwLjEyMjk5OTk5OTkgKHNob3VsZCBiZSA5ODM3MjU2MC4xMjMpXHJcbiAgICAgICAgLy8gYHdwciAtIGd1YXJkYCBpcyB0aGUgaW5kZXggb2YgZmlyc3Qgcm91bmRpbmcgZGlnaXQuXHJcbiAgICAgICAgaWYgKHNkID09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICBpZiAocmVwIDwgMyAmJiBjaGVja1JvdW5kaW5nRGlnaXRzKHN1bS5kLCB3cHIgLSBndWFyZCwgcm0sIHJlcCkpIHtcclxuICAgICAgICAgICAgQ3Rvci5wcmVjaXNpb24gPSB3cHIgKz0gMTA7XHJcbiAgICAgICAgICAgIGRlbm9taW5hdG9yID0gcG93ID0gdCA9IG5ldyBDdG9yKDEpO1xyXG4gICAgICAgICAgICBpID0gMDtcclxuICAgICAgICAgICAgcmVwKys7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gZmluYWxpc2Uoc3VtLCBDdG9yLnByZWNpc2lvbiA9IHByLCBybSwgZXh0ZXJuYWwgPSB0cnVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgQ3Rvci5wcmVjaXNpb24gPSBwcjtcclxuICAgICAgICAgIHJldHVybiBzdW07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBzdW0gPSB0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIG5hdHVyYWwgbG9nYXJpdGhtIG9mIGB4YCByb3VuZGVkIHRvIGBzZGAgc2lnbmlmaWNhbnRcclxuICAgKiBkaWdpdHMuXHJcbiAgICpcclxuICAgKiAgbG4oLW4pICAgICAgICA9IE5hTlxyXG4gICAqICBsbigwKSAgICAgICAgID0gLUluZmluaXR5XHJcbiAgICogIGxuKC0wKSAgICAgICAgPSAtSW5maW5pdHlcclxuICAgKiAgbG4oMSkgICAgICAgICA9IDBcclxuICAgKiAgbG4oSW5maW5pdHkpICA9IEluZmluaXR5XHJcbiAgICogIGxuKC1JbmZpbml0eSkgPSBOYU5cclxuICAgKiAgbG4oTmFOKSAgICAgICA9IE5hTlxyXG4gICAqXHJcbiAgICogIGxuKG4pIChuICE9IDEpIGlzIG5vbi10ZXJtaW5hdGluZy5cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIG5hdHVyYWxMb2dhcml0aG0oeSwgc2QpIHtcclxuICAgIHZhciBjLCBjMCwgZGVub21pbmF0b3IsIGUsIG51bWVyYXRvciwgcmVwLCBzdW0sIHQsIHdwciwgeDEsIHgyLFxyXG4gICAgICBuID0gMSxcclxuICAgICAgZ3VhcmQgPSAxMCxcclxuICAgICAgeCA9IHksXHJcbiAgICAgIHhkID0geC5kLFxyXG4gICAgICBDdG9yID0geC5jb25zdHJ1Y3RvcixcclxuICAgICAgcm0gPSBDdG9yLnJvdW5kaW5nLFxyXG4gICAgICBwciA9IEN0b3IucHJlY2lzaW9uO1xyXG5cclxuICAgIC8vIElzIHggbmVnYXRpdmUgb3IgSW5maW5pdHksIE5hTiwgMCBvciAxP1xyXG4gICAgaWYgKHgucyA8IDAgfHwgIXhkIHx8ICF4ZFswXSB8fCAheC5lICYmIHhkWzBdID09IDEgJiYgeGQubGVuZ3RoID09IDEpIHtcclxuICAgICAgcmV0dXJuIG5ldyBDdG9yKHhkICYmICF4ZFswXSA/IC0xIC8gMCA6IHgucyAhPSAxID8gTmFOIDogeGQgPyAwIDogeCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNkID09IG51bGwpIHtcclxuICAgICAgZXh0ZXJuYWwgPSBmYWxzZTtcclxuICAgICAgd3ByID0gcHI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB3cHIgPSBzZDtcclxuICAgIH1cclxuXHJcbiAgICBDdG9yLnByZWNpc2lvbiA9IHdwciArPSBndWFyZDtcclxuICAgIGMgPSBkaWdpdHNUb1N0cmluZyh4ZCk7XHJcbiAgICBjMCA9IGMuY2hhckF0KDApO1xyXG5cclxuICAgIGlmIChNYXRoLmFicyhlID0geC5lKSA8IDEuNWUxNSkge1xyXG5cclxuICAgICAgLy8gQXJndW1lbnQgcmVkdWN0aW9uLlxyXG4gICAgICAvLyBUaGUgc2VyaWVzIGNvbnZlcmdlcyBmYXN0ZXIgdGhlIGNsb3NlciB0aGUgYXJndW1lbnQgaXMgdG8gMSwgc28gdXNpbmdcclxuICAgICAgLy8gbG4oYV5iKSA9IGIgKiBsbihhKSwgICBsbihhKSA9IGxuKGFeYikgLyBiXHJcbiAgICAgIC8vIG11bHRpcGx5IHRoZSBhcmd1bWVudCBieSBpdHNlbGYgdW50aWwgdGhlIGxlYWRpbmcgZGlnaXRzIG9mIHRoZSBzaWduaWZpY2FuZCBhcmUgNywgOCwgOSxcclxuICAgICAgLy8gMTAsIDExLCAxMiBvciAxMywgcmVjb3JkaW5nIHRoZSBudW1iZXIgb2YgbXVsdGlwbGljYXRpb25zIHNvIHRoZSBzdW0gb2YgdGhlIHNlcmllcyBjYW5cclxuICAgICAgLy8gbGF0ZXIgYmUgZGl2aWRlZCBieSB0aGlzIG51bWJlciwgdGhlbiBzZXBhcmF0ZSBvdXQgdGhlIHBvd2VyIG9mIDEwIHVzaW5nXHJcbiAgICAgIC8vIGxuKGEqMTBeYikgPSBsbihhKSArIGIqbG4oMTApLlxyXG5cclxuICAgICAgLy8gbWF4IG4gaXMgMjEgKGdpdmVzIDAuOSwgMS4wIG9yIDEuMSkgKDllMTUgLyAyMSA9IDQuMmUxNCkuXHJcbiAgICAgIC8vd2hpbGUgKGMwIDwgOSAmJiBjMCAhPSAxIHx8IGMwID09IDEgJiYgYy5jaGFyQXQoMSkgPiAxKSB7XHJcbiAgICAgIC8vIG1heCBuIGlzIDYgKGdpdmVzIDAuNyAtIDEuMylcclxuICAgICAgd2hpbGUgKGMwIDwgNyAmJiBjMCAhPSAxIHx8IGMwID09IDEgJiYgYy5jaGFyQXQoMSkgPiAzKSB7XHJcbiAgICAgICAgeCA9IHgudGltZXMoeSk7XHJcbiAgICAgICAgYyA9IGRpZ2l0c1RvU3RyaW5nKHguZCk7XHJcbiAgICAgICAgYzAgPSBjLmNoYXJBdCgwKTtcclxuICAgICAgICBuKys7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGUgPSB4LmU7XHJcblxyXG4gICAgICBpZiAoYzAgPiAxKSB7XHJcbiAgICAgICAgeCA9IG5ldyBDdG9yKCcwLicgKyBjKTtcclxuICAgICAgICBlKys7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgeCA9IG5ldyBDdG9yKGMwICsgJy4nICsgYy5zbGljZSgxKSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAvLyBUaGUgYXJndW1lbnQgcmVkdWN0aW9uIG1ldGhvZCBhYm92ZSBtYXkgcmVzdWx0IGluIG92ZXJmbG93IGlmIHRoZSBhcmd1bWVudCB5IGlzIGEgbWFzc2l2ZVxyXG4gICAgICAvLyBudW1iZXIgd2l0aCBleHBvbmVudCA+PSAxNTAwMDAwMDAwMDAwMDAwICg5ZTE1IC8gNiA9IDEuNWUxNSksIHNvIGluc3RlYWQgcmVjYWxsIHRoaXNcclxuICAgICAgLy8gZnVuY3Rpb24gdXNpbmcgbG4oeCoxMF5lKSA9IGxuKHgpICsgZSpsbigxMCkuXHJcbiAgICAgIHQgPSBnZXRMbjEwKEN0b3IsIHdwciArIDIsIHByKS50aW1lcyhlICsgJycpO1xyXG4gICAgICB4ID0gbmF0dXJhbExvZ2FyaXRobShuZXcgQ3RvcihjMCArICcuJyArIGMuc2xpY2UoMSkpLCB3cHIgLSBndWFyZCkucGx1cyh0KTtcclxuICAgICAgQ3Rvci5wcmVjaXNpb24gPSBwcjtcclxuXHJcbiAgICAgIHJldHVybiBzZCA9PSBudWxsID8gZmluYWxpc2UoeCwgcHIsIHJtLCBleHRlcm5hbCA9IHRydWUpIDogeDtcclxuICAgIH1cclxuXHJcbiAgICAvLyB4MSBpcyB4IHJlZHVjZWQgdG8gYSB2YWx1ZSBuZWFyIDEuXHJcbiAgICB4MSA9IHg7XHJcblxyXG4gICAgLy8gVGF5bG9yIHNlcmllcy5cclxuICAgIC8vIGxuKHkpID0gbG4oKDEgKyB4KS8oMSAtIHgpKSA9IDIoeCArIHheMy8zICsgeF41LzUgKyB4XjcvNyArIC4uLilcclxuICAgIC8vIHdoZXJlIHggPSAoeSAtIDEpLyh5ICsgMSkgICAgKHx4fCA8IDEpXHJcbiAgICBzdW0gPSBudW1lcmF0b3IgPSB4ID0gZGl2aWRlKHgubWludXMoMSksIHgucGx1cygxKSwgd3ByLCAxKTtcclxuICAgIHgyID0gZmluYWxpc2UoeC50aW1lcyh4KSwgd3ByLCAxKTtcclxuICAgIGRlbm9taW5hdG9yID0gMztcclxuXHJcbiAgICBmb3IgKDs7KSB7XHJcbiAgICAgIG51bWVyYXRvciA9IGZpbmFsaXNlKG51bWVyYXRvci50aW1lcyh4MiksIHdwciwgMSk7XHJcbiAgICAgIHQgPSBzdW0ucGx1cyhkaXZpZGUobnVtZXJhdG9yLCBuZXcgQ3RvcihkZW5vbWluYXRvciksIHdwciwgMSkpO1xyXG5cclxuICAgICAgaWYgKGRpZ2l0c1RvU3RyaW5nKHQuZCkuc2xpY2UoMCwgd3ByKSA9PT0gZGlnaXRzVG9TdHJpbmcoc3VtLmQpLnNsaWNlKDAsIHdwcikpIHtcclxuICAgICAgICBzdW0gPSBzdW0udGltZXMoMik7XHJcblxyXG4gICAgICAgIC8vIFJldmVyc2UgdGhlIGFyZ3VtZW50IHJlZHVjdGlvbi4gQ2hlY2sgdGhhdCBlIGlzIG5vdCAwIGJlY2F1c2UsIGJlc2lkZXMgcHJldmVudGluZyBhblxyXG4gICAgICAgIC8vIHVubmVjZXNzYXJ5IGNhbGN1bGF0aW9uLCAtMCArIDAgPSArMCBhbmQgdG8gZW5zdXJlIGNvcnJlY3Qgcm91bmRpbmcgLTAgbmVlZHMgdG8gc3RheSAtMC5cclxuICAgICAgICBpZiAoZSAhPT0gMCkgc3VtID0gc3VtLnBsdXMoZ2V0TG4xMChDdG9yLCB3cHIgKyAyLCBwcikudGltZXMoZSArICcnKSk7XHJcbiAgICAgICAgc3VtID0gZGl2aWRlKHN1bSwgbmV3IEN0b3IobiksIHdwciwgMSk7XHJcblxyXG4gICAgICAgIC8vIElzIHJtID4gMyBhbmQgdGhlIGZpcnN0IDQgcm91bmRpbmcgZGlnaXRzIDQ5OTksIG9yIHJtIDwgNCAob3IgdGhlIHN1bW1hdGlvbiBoYXNcclxuICAgICAgICAvLyBiZWVuIHJlcGVhdGVkIHByZXZpb3VzbHkpIGFuZCB0aGUgZmlyc3QgNCByb3VuZGluZyBkaWdpdHMgOTk5OT9cclxuICAgICAgICAvLyBJZiBzbywgcmVzdGFydCB0aGUgc3VtbWF0aW9uIHdpdGggYSBoaWdoZXIgcHJlY2lzaW9uLCBvdGhlcndpc2VcclxuICAgICAgICAvLyBlLmcuIHdpdGggcHJlY2lzaW9uOiAxMiwgcm91bmRpbmc6IDFcclxuICAgICAgICAvLyBsbigxMzU1MjAwMjguNjEyNjA5MTcxNDI2NTM4MTUzMykgPSAxOC43MjQ2Mjk5OTk5IHdoZW4gaXQgc2hvdWxkIGJlIDE4LjcyNDYzLlxyXG4gICAgICAgIC8vIGB3cHIgLSBndWFyZGAgaXMgdGhlIGluZGV4IG9mIGZpcnN0IHJvdW5kaW5nIGRpZ2l0LlxyXG4gICAgICAgIGlmIChzZCA9PSBudWxsKSB7XHJcbiAgICAgICAgICBpZiAoY2hlY2tSb3VuZGluZ0RpZ2l0cyhzdW0uZCwgd3ByIC0gZ3VhcmQsIHJtLCByZXApKSB7XHJcbiAgICAgICAgICAgIEN0b3IucHJlY2lzaW9uID0gd3ByICs9IGd1YXJkO1xyXG4gICAgICAgICAgICB0ID0gbnVtZXJhdG9yID0geCA9IGRpdmlkZSh4MS5taW51cygxKSwgeDEucGx1cygxKSwgd3ByLCAxKTtcclxuICAgICAgICAgICAgeDIgPSBmaW5hbGlzZSh4LnRpbWVzKHgpLCB3cHIsIDEpO1xyXG4gICAgICAgICAgICBkZW5vbWluYXRvciA9IHJlcCA9IDE7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gZmluYWxpc2Uoc3VtLCBDdG9yLnByZWNpc2lvbiA9IHByLCBybSwgZXh0ZXJuYWwgPSB0cnVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgQ3Rvci5wcmVjaXNpb24gPSBwcjtcclxuICAgICAgICAgIHJldHVybiBzdW07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBzdW0gPSB0O1xyXG4gICAgICBkZW5vbWluYXRvciArPSAyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIMKxSW5maW5pdHksIE5hTi5cclxuICBmdW5jdGlvbiBub25GaW5pdGVUb1N0cmluZyh4KSB7XHJcbiAgICAvLyBVbnNpZ25lZC5cclxuICAgIHJldHVybiBTdHJpbmcoeC5zICogeC5zIC8gMCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBQYXJzZSB0aGUgdmFsdWUgb2YgYSBuZXcgRGVjaW1hbCBgeGAgZnJvbSBzdHJpbmcgYHN0cmAuXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gcGFyc2VEZWNpbWFsKHgsIHN0cikge1xyXG4gICAgdmFyIGUsIGksIGxlbjtcclxuXHJcbiAgICAvLyBEZWNpbWFsIHBvaW50P1xyXG4gICAgaWYgKChlID0gc3RyLmluZGV4T2YoJy4nKSkgPiAtMSkgc3RyID0gc3RyLnJlcGxhY2UoJy4nLCAnJyk7XHJcblxyXG4gICAgLy8gRXhwb25lbnRpYWwgZm9ybT9cclxuICAgIGlmICgoaSA9IHN0ci5zZWFyY2goL2UvaSkpID4gMCkge1xyXG5cclxuICAgICAgLy8gRGV0ZXJtaW5lIGV4cG9uZW50LlxyXG4gICAgICBpZiAoZSA8IDApIGUgPSBpO1xyXG4gICAgICBlICs9ICtzdHIuc2xpY2UoaSArIDEpO1xyXG4gICAgICBzdHIgPSBzdHIuc3Vic3RyaW5nKDAsIGkpO1xyXG4gICAgfSBlbHNlIGlmIChlIDwgMCkge1xyXG5cclxuICAgICAgLy8gSW50ZWdlci5cclxuICAgICAgZSA9IHN0ci5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRGV0ZXJtaW5lIGxlYWRpbmcgemVyb3MuXHJcbiAgICBmb3IgKGkgPSAwOyBzdHIuY2hhckNvZGVBdChpKSA9PT0gNDg7IGkrKyk7XHJcblxyXG4gICAgLy8gRGV0ZXJtaW5lIHRyYWlsaW5nIHplcm9zLlxyXG4gICAgZm9yIChsZW4gPSBzdHIubGVuZ3RoOyBzdHIuY2hhckNvZGVBdChsZW4gLSAxKSA9PT0gNDg7IC0tbGVuKTtcclxuICAgIHN0ciA9IHN0ci5zbGljZShpLCBsZW4pO1xyXG5cclxuICAgIGlmIChzdHIpIHtcclxuICAgICAgbGVuIC09IGk7XHJcbiAgICAgIHguZSA9IGUgPSBlIC0gaSAtIDE7XHJcbiAgICAgIHguZCA9IFtdO1xyXG5cclxuICAgICAgLy8gVHJhbnNmb3JtIGJhc2VcclxuXHJcbiAgICAgIC8vIGUgaXMgdGhlIGJhc2UgMTAgZXhwb25lbnQuXHJcbiAgICAgIC8vIGkgaXMgd2hlcmUgdG8gc2xpY2Ugc3RyIHRvIGdldCB0aGUgZmlyc3Qgd29yZCBvZiB0aGUgZGlnaXRzIGFycmF5LlxyXG4gICAgICBpID0gKGUgKyAxKSAlIExPR19CQVNFO1xyXG4gICAgICBpZiAoZSA8IDApIGkgKz0gTE9HX0JBU0U7XHJcblxyXG4gICAgICBpZiAoaSA8IGxlbikge1xyXG4gICAgICAgIGlmIChpKSB4LmQucHVzaCgrc3RyLnNsaWNlKDAsIGkpKTtcclxuICAgICAgICBmb3IgKGxlbiAtPSBMT0dfQkFTRTsgaSA8IGxlbjspIHguZC5wdXNoKCtzdHIuc2xpY2UoaSwgaSArPSBMT0dfQkFTRSkpO1xyXG4gICAgICAgIHN0ciA9IHN0ci5zbGljZShpKTtcclxuICAgICAgICBpID0gTE9HX0JBU0UgLSBzdHIubGVuZ3RoO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGkgLT0gbGVuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmb3IgKDsgaS0tOykgc3RyICs9ICcwJztcclxuICAgICAgeC5kLnB1c2goK3N0cik7XHJcblxyXG4gICAgICBpZiAoZXh0ZXJuYWwpIHtcclxuXHJcbiAgICAgICAgLy8gT3ZlcmZsb3c/XHJcbiAgICAgICAgaWYgKHguZSA+IHguY29uc3RydWN0b3IubWF4RSkge1xyXG5cclxuICAgICAgICAgIC8vIEluZmluaXR5LlxyXG4gICAgICAgICAgeC5kID0gbnVsbDtcclxuICAgICAgICAgIHguZSA9IE5hTjtcclxuXHJcbiAgICAgICAgLy8gVW5kZXJmbG93P1xyXG4gICAgICAgIH0gZWxzZSBpZiAoeC5lIDwgeC5jb25zdHJ1Y3Rvci5taW5FKSB7XHJcblxyXG4gICAgICAgICAgLy8gWmVyby5cclxuICAgICAgICAgIHguZSA9IDA7XHJcbiAgICAgICAgICB4LmQgPSBbMF07XHJcbiAgICAgICAgICAvLyB4LmNvbnN0cnVjdG9yLnVuZGVyZmxvdyA9IHRydWU7XHJcbiAgICAgICAgfSAvLyBlbHNlIHguY29uc3RydWN0b3IudW5kZXJmbG93ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAvLyBaZXJvLlxyXG4gICAgICB4LmUgPSAwO1xyXG4gICAgICB4LmQgPSBbMF07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHg7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBQYXJzZSB0aGUgdmFsdWUgb2YgYSBuZXcgRGVjaW1hbCBgeGAgZnJvbSBhIHN0cmluZyBgc3RyYCwgd2hpY2ggaXMgbm90IGEgZGVjaW1hbCB2YWx1ZS5cclxuICAgKi9cclxuICBmdW5jdGlvbiBwYXJzZU90aGVyKHgsIHN0cikge1xyXG4gICAgdmFyIGJhc2UsIEN0b3IsIGRpdmlzb3IsIGksIGlzRmxvYXQsIGxlbiwgcCwgeGQsIHhlO1xyXG5cclxuICAgIGlmIChzdHIuaW5kZXhPZignXycpID4gLTEpIHtcclxuICAgICAgc3RyID0gc3RyLnJlcGxhY2UoLyhcXGQpXyg/PVxcZCkvZywgJyQxJyk7XHJcbiAgICAgIGlmIChpc0RlY2ltYWwudGVzdChzdHIpKSByZXR1cm4gcGFyc2VEZWNpbWFsKHgsIHN0cik7XHJcbiAgICB9IGVsc2UgaWYgKHN0ciA9PT0gJ0luZmluaXR5JyB8fCBzdHIgPT09ICdOYU4nKSB7XHJcbiAgICAgIGlmICghK3N0cikgeC5zID0gTmFOO1xyXG4gICAgICB4LmUgPSBOYU47XHJcbiAgICAgIHguZCA9IG51bGw7XHJcbiAgICAgIHJldHVybiB4O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpc0hleC50ZXN0KHN0cikpICB7XHJcbiAgICAgIGJhc2UgPSAxNjtcclxuICAgICAgc3RyID0gc3RyLnRvTG93ZXJDYXNlKCk7XHJcbiAgICB9IGVsc2UgaWYgKGlzQmluYXJ5LnRlc3Qoc3RyKSkgIHtcclxuICAgICAgYmFzZSA9IDI7XHJcbiAgICB9IGVsc2UgaWYgKGlzT2N0YWwudGVzdChzdHIpKSAge1xyXG4gICAgICBiYXNlID0gODtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IEVycm9yKGludmFsaWRBcmd1bWVudCArIHN0cik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSXMgdGhlcmUgYSBiaW5hcnkgZXhwb25lbnQgcGFydD9cclxuICAgIGkgPSBzdHIuc2VhcmNoKC9wL2kpO1xyXG5cclxuICAgIGlmIChpID4gMCkge1xyXG4gICAgICBwID0gK3N0ci5zbGljZShpICsgMSk7XHJcbiAgICAgIHN0ciA9IHN0ci5zdWJzdHJpbmcoMiwgaSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzdHIgPSBzdHIuc2xpY2UoMik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ29udmVydCBgc3RyYCBhcyBhbiBpbnRlZ2VyIHRoZW4gZGl2aWRlIHRoZSByZXN1bHQgYnkgYGJhc2VgIHJhaXNlZCB0byBhIHBvd2VyIHN1Y2ggdGhhdCB0aGVcclxuICAgIC8vIGZyYWN0aW9uIHBhcnQgd2lsbCBiZSByZXN0b3JlZC5cclxuICAgIGkgPSBzdHIuaW5kZXhPZignLicpO1xyXG4gICAgaXNGbG9hdCA9IGkgPj0gMDtcclxuICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgIGlmIChpc0Zsb2F0KSB7XHJcbiAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKCcuJywgJycpO1xyXG4gICAgICBsZW4gPSBzdHIubGVuZ3RoO1xyXG4gICAgICBpID0gbGVuIC0gaTtcclxuXHJcbiAgICAgIC8vIGxvZ1sxMF0oMTYpID0gMS4yMDQxLi4uICwgbG9nWzEwXSg4OCkgPSAxLjk0NDQuLi4uXHJcbiAgICAgIGRpdmlzb3IgPSBpbnRQb3coQ3RvciwgbmV3IEN0b3IoYmFzZSksIGksIGkgKiAyKTtcclxuICAgIH1cclxuXHJcbiAgICB4ZCA9IGNvbnZlcnRCYXNlKHN0ciwgYmFzZSwgQkFTRSk7XHJcbiAgICB4ZSA9IHhkLmxlbmd0aCAtIDE7XHJcblxyXG4gICAgLy8gUmVtb3ZlIHRyYWlsaW5nIHplcm9zLlxyXG4gICAgZm9yIChpID0geGU7IHhkW2ldID09PSAwOyAtLWkpIHhkLnBvcCgpO1xyXG4gICAgaWYgKGkgPCAwKSByZXR1cm4gbmV3IEN0b3IoeC5zICogMCk7XHJcbiAgICB4LmUgPSBnZXRCYXNlMTBFeHBvbmVudCh4ZCwgeGUpO1xyXG4gICAgeC5kID0geGQ7XHJcbiAgICBleHRlcm5hbCA9IGZhbHNlO1xyXG5cclxuICAgIC8vIEF0IHdoYXQgcHJlY2lzaW9uIHRvIHBlcmZvcm0gdGhlIGRpdmlzaW9uIHRvIGVuc3VyZSBleGFjdCBjb252ZXJzaW9uP1xyXG4gICAgLy8gbWF4RGVjaW1hbEludGVnZXJQYXJ0RGlnaXRDb3VudCA9IGNlaWwobG9nWzEwXShiKSAqIG90aGVyQmFzZUludGVnZXJQYXJ0RGlnaXRDb3VudClcclxuICAgIC8vIGxvZ1sxMF0oMikgPSAwLjMwMTAzLCBsb2dbMTBdKDgpID0gMC45MDMwOSwgbG9nWzEwXSgxNikgPSAxLjIwNDEyXHJcbiAgICAvLyBFLmcuIGNlaWwoMS4yICogMykgPSA0LCBzbyB1cCB0byA0IGRlY2ltYWwgZGlnaXRzIGFyZSBuZWVkZWQgdG8gcmVwcmVzZW50IDMgaGV4IGludCBkaWdpdHMuXHJcbiAgICAvLyBtYXhEZWNpbWFsRnJhY3Rpb25QYXJ0RGlnaXRDb3VudCA9IHtIZXg6NHxPY3Q6M3xCaW46MX0gKiBvdGhlckJhc2VGcmFjdGlvblBhcnREaWdpdENvdW50XHJcbiAgICAvLyBUaGVyZWZvcmUgdXNpbmcgNCAqIHRoZSBudW1iZXIgb2YgZGlnaXRzIG9mIHN0ciB3aWxsIGFsd2F5cyBiZSBlbm91Z2guXHJcbiAgICBpZiAoaXNGbG9hdCkgeCA9IGRpdmlkZSh4LCBkaXZpc29yLCBsZW4gKiA0KTtcclxuXHJcbiAgICAvLyBNdWx0aXBseSBieSB0aGUgYmluYXJ5IGV4cG9uZW50IHBhcnQgaWYgcHJlc2VudC5cclxuICAgIGlmIChwKSB4ID0geC50aW1lcyhNYXRoLmFicyhwKSA8IDU0ID8gbWF0aHBvdygyLCBwKSA6IERlY2ltYWwucG93KDIsIHApKTtcclxuICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4geDtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIHNpbih4KSA9IHggLSB4XjMvMyEgKyB4XjUvNSEgLSAuLi5cclxuICAgKiB8eHwgPCBwaS8yXHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBzaW5lKEN0b3IsIHgpIHtcclxuICAgIHZhciBrLFxyXG4gICAgICBsZW4gPSB4LmQubGVuZ3RoO1xyXG5cclxuICAgIGlmIChsZW4gPCAzKSB7XHJcbiAgICAgIHJldHVybiB4LmlzWmVybygpID8geCA6IHRheWxvclNlcmllcyhDdG9yLCAyLCB4LCB4KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBBcmd1bWVudCByZWR1Y3Rpb246IHNpbig1eCkgPSAxNipzaW5eNSh4KSAtIDIwKnNpbl4zKHgpICsgNSpzaW4oeClcclxuICAgIC8vIGkuZS4gc2luKHgpID0gMTYqc2luXjUoeC81KSAtIDIwKnNpbl4zKHgvNSkgKyA1KnNpbih4LzUpXHJcbiAgICAvLyBhbmQgIHNpbih4KSA9IHNpbih4LzUpKDUgKyBzaW5eMih4LzUpKDE2c2luXjIoeC81KSAtIDIwKSlcclxuXHJcbiAgICAvLyBFc3RpbWF0ZSB0aGUgb3B0aW11bSBudW1iZXIgb2YgdGltZXMgdG8gdXNlIHRoZSBhcmd1bWVudCByZWR1Y3Rpb24uXHJcbiAgICBrID0gMS40ICogTWF0aC5zcXJ0KGxlbik7XHJcbiAgICBrID0gayA+IDE2ID8gMTYgOiBrIHwgMDtcclxuXHJcbiAgICB4ID0geC50aW1lcygxIC8gdGlueVBvdyg1LCBrKSk7XHJcbiAgICB4ID0gdGF5bG9yU2VyaWVzKEN0b3IsIDIsIHgsIHgpO1xyXG5cclxuICAgIC8vIFJldmVyc2UgYXJndW1lbnQgcmVkdWN0aW9uXHJcbiAgICB2YXIgc2luMl94LFxyXG4gICAgICBkNSA9IG5ldyBDdG9yKDUpLFxyXG4gICAgICBkMTYgPSBuZXcgQ3RvcigxNiksXHJcbiAgICAgIGQyMCA9IG5ldyBDdG9yKDIwKTtcclxuICAgIGZvciAoOyBrLS07KSB7XHJcbiAgICAgIHNpbjJfeCA9IHgudGltZXMoeCk7XHJcbiAgICAgIHggPSB4LnRpbWVzKGQ1LnBsdXMoc2luMl94LnRpbWVzKGQxNi50aW1lcyhzaW4yX3gpLm1pbnVzKGQyMCkpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHg7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gQ2FsY3VsYXRlIFRheWxvciBzZXJpZXMgZm9yIGBjb3NgLCBgY29zaGAsIGBzaW5gIGFuZCBgc2luaGAuXHJcbiAgZnVuY3Rpb24gdGF5bG9yU2VyaWVzKEN0b3IsIG4sIHgsIHksIGlzSHlwZXJib2xpYykge1xyXG4gICAgdmFyIGosIHQsIHUsIHgyLFxyXG4gICAgICBpID0gMSxcclxuICAgICAgcHIgPSBDdG9yLnByZWNpc2lvbixcclxuICAgICAgayA9IE1hdGguY2VpbChwciAvIExPR19CQVNFKTtcclxuXHJcbiAgICBleHRlcm5hbCA9IGZhbHNlO1xyXG4gICAgeDIgPSB4LnRpbWVzKHgpO1xyXG4gICAgdSA9IG5ldyBDdG9yKHkpO1xyXG5cclxuICAgIGZvciAoOzspIHtcclxuICAgICAgdCA9IGRpdmlkZSh1LnRpbWVzKHgyKSwgbmV3IEN0b3IobisrICogbisrKSwgcHIsIDEpO1xyXG4gICAgICB1ID0gaXNIeXBlcmJvbGljID8geS5wbHVzKHQpIDogeS5taW51cyh0KTtcclxuICAgICAgeSA9IGRpdmlkZSh0LnRpbWVzKHgyKSwgbmV3IEN0b3IobisrICogbisrKSwgcHIsIDEpO1xyXG4gICAgICB0ID0gdS5wbHVzKHkpO1xyXG5cclxuICAgICAgaWYgKHQuZFtrXSAhPT0gdm9pZCAwKSB7XHJcbiAgICAgICAgZm9yIChqID0gazsgdC5kW2pdID09PSB1LmRbal0gJiYgai0tOyk7XHJcbiAgICAgICAgaWYgKGogPT0gLTEpIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBqID0gdTtcclxuICAgICAgdSA9IHk7XHJcbiAgICAgIHkgPSB0O1xyXG4gICAgICB0ID0gajtcclxuICAgICAgaSsrO1xyXG4gICAgfVxyXG5cclxuICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuICAgIHQuZC5sZW5ndGggPSBrICsgMTtcclxuXHJcbiAgICByZXR1cm4gdDtcclxuICB9XHJcblxyXG5cclxuICAvLyBFeHBvbmVudCBlIG11c3QgYmUgcG9zaXRpdmUgYW5kIG5vbi16ZXJvLlxyXG4gIGZ1bmN0aW9uIHRpbnlQb3coYiwgZSkge1xyXG4gICAgdmFyIG4gPSBiO1xyXG4gICAgd2hpbGUgKC0tZSkgbiAqPSBiO1xyXG4gICAgcmV0dXJuIG47XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gUmV0dXJuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBgeGAgcmVkdWNlZCB0byBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gaGFsZiBwaS5cclxuICBmdW5jdGlvbiB0b0xlc3NUaGFuSGFsZlBpKEN0b3IsIHgpIHtcclxuICAgIHZhciB0LFxyXG4gICAgICBpc05lZyA9IHgucyA8IDAsXHJcbiAgICAgIHBpID0gZ2V0UGkoQ3RvciwgQ3Rvci5wcmVjaXNpb24sIDEpLFxyXG4gICAgICBoYWxmUGkgPSBwaS50aW1lcygwLjUpO1xyXG5cclxuICAgIHggPSB4LmFicygpO1xyXG5cclxuICAgIGlmICh4Lmx0ZShoYWxmUGkpKSB7XHJcbiAgICAgIHF1YWRyYW50ID0gaXNOZWcgPyA0IDogMTtcclxuICAgICAgcmV0dXJuIHg7XHJcbiAgICB9XHJcblxyXG4gICAgdCA9IHguZGl2VG9JbnQocGkpO1xyXG5cclxuICAgIGlmICh0LmlzWmVybygpKSB7XHJcbiAgICAgIHF1YWRyYW50ID0gaXNOZWcgPyAzIDogMjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHggPSB4Lm1pbnVzKHQudGltZXMocGkpKTtcclxuXHJcbiAgICAgIC8vIDAgPD0geCA8IHBpXHJcbiAgICAgIGlmICh4Lmx0ZShoYWxmUGkpKSB7XHJcbiAgICAgICAgcXVhZHJhbnQgPSBpc09kZCh0KSA/IChpc05lZyA/IDIgOiAzKSA6IChpc05lZyA/IDQgOiAxKTtcclxuICAgICAgICByZXR1cm4geDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcXVhZHJhbnQgPSBpc09kZCh0KSA/IChpc05lZyA/IDEgOiA0KSA6IChpc05lZyA/IDMgOiAyKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4geC5taW51cyhwaSkuYWJzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gdGhlIHZhbHVlIG9mIERlY2ltYWwgYHhgIGFzIGEgc3RyaW5nIGluIGJhc2UgYGJhc2VPdXRgLlxyXG4gICAqXHJcbiAgICogSWYgdGhlIG9wdGlvbmFsIGBzZGAgYXJndW1lbnQgaXMgcHJlc2VudCBpbmNsdWRlIGEgYmluYXJ5IGV4cG9uZW50IHN1ZmZpeC5cclxuICAgKi9cclxuICBmdW5jdGlvbiB0b1N0cmluZ0JpbmFyeSh4LCBiYXNlT3V0LCBzZCwgcm0pIHtcclxuICAgIHZhciBiYXNlLCBlLCBpLCBrLCBsZW4sIHJvdW5kVXAsIHN0ciwgeGQsIHksXHJcbiAgICAgIEN0b3IgPSB4LmNvbnN0cnVjdG9yLFxyXG4gICAgICBpc0V4cCA9IHNkICE9PSB2b2lkIDA7XHJcblxyXG4gICAgaWYgKGlzRXhwKSB7XHJcbiAgICAgIGNoZWNrSW50MzIoc2QsIDEsIE1BWF9ESUdJVFMpO1xyXG4gICAgICBpZiAocm0gPT09IHZvaWQgMCkgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgICBlbHNlIGNoZWNrSW50MzIocm0sIDAsIDgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2QgPSBDdG9yLnByZWNpc2lvbjtcclxuICAgICAgcm0gPSBDdG9yLnJvdW5kaW5nO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICgheC5pc0Zpbml0ZSgpKSB7XHJcbiAgICAgIHN0ciA9IG5vbkZpbml0ZVRvU3RyaW5nKHgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3RyID0gZmluaXRlVG9TdHJpbmcoeCk7XHJcbiAgICAgIGkgPSBzdHIuaW5kZXhPZignLicpO1xyXG5cclxuICAgICAgLy8gVXNlIGV4cG9uZW50aWFsIG5vdGF0aW9uIGFjY29yZGluZyB0byBgdG9FeHBQb3NgIGFuZCBgdG9FeHBOZWdgPyBObywgYnV0IGlmIHJlcXVpcmVkOlxyXG4gICAgICAvLyBtYXhCaW5hcnlFeHBvbmVudCA9IGZsb29yKChkZWNpbWFsRXhwb25lbnQgKyAxKSAqIGxvZ1syXSgxMCkpXHJcbiAgICAgIC8vIG1pbkJpbmFyeUV4cG9uZW50ID0gZmxvb3IoZGVjaW1hbEV4cG9uZW50ICogbG9nWzJdKDEwKSlcclxuICAgICAgLy8gbG9nWzJdKDEwKSA9IDMuMzIxOTI4MDk0ODg3MzYyMzQ3ODcwMzE5NDI5NDg5MzkwMTc1ODY0XHJcblxyXG4gICAgICBpZiAoaXNFeHApIHtcclxuICAgICAgICBiYXNlID0gMjtcclxuICAgICAgICBpZiAoYmFzZU91dCA9PSAxNikge1xyXG4gICAgICAgICAgc2QgPSBzZCAqIDQgLSAzO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoYmFzZU91dCA9PSA4KSB7XHJcbiAgICAgICAgICBzZCA9IHNkICogMyAtIDI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGJhc2UgPSBiYXNlT3V0O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBDb252ZXJ0IHRoZSBudW1iZXIgYXMgYW4gaW50ZWdlciB0aGVuIGRpdmlkZSB0aGUgcmVzdWx0IGJ5IGl0cyBiYXNlIHJhaXNlZCB0byBhIHBvd2VyIHN1Y2hcclxuICAgICAgLy8gdGhhdCB0aGUgZnJhY3Rpb24gcGFydCB3aWxsIGJlIHJlc3RvcmVkLlxyXG5cclxuICAgICAgLy8gTm9uLWludGVnZXIuXHJcbiAgICAgIGlmIChpID49IDApIHtcclxuICAgICAgICBzdHIgPSBzdHIucmVwbGFjZSgnLicsICcnKTtcclxuICAgICAgICB5ID0gbmV3IEN0b3IoMSk7XHJcbiAgICAgICAgeS5lID0gc3RyLmxlbmd0aCAtIGk7XHJcbiAgICAgICAgeS5kID0gY29udmVydEJhc2UoZmluaXRlVG9TdHJpbmcoeSksIDEwLCBiYXNlKTtcclxuICAgICAgICB5LmUgPSB5LmQubGVuZ3RoO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB4ZCA9IGNvbnZlcnRCYXNlKHN0ciwgMTAsIGJhc2UpO1xyXG4gICAgICBlID0gbGVuID0geGQubGVuZ3RoO1xyXG5cclxuICAgICAgLy8gUmVtb3ZlIHRyYWlsaW5nIHplcm9zLlxyXG4gICAgICBmb3IgKDsgeGRbLS1sZW5dID09IDA7KSB4ZC5wb3AoKTtcclxuXHJcbiAgICAgIGlmICgheGRbMF0pIHtcclxuICAgICAgICBzdHIgPSBpc0V4cCA/ICcwcCswJyA6ICcwJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoaSA8IDApIHtcclxuICAgICAgICAgIGUtLTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgeCA9IG5ldyBDdG9yKHgpO1xyXG4gICAgICAgICAgeC5kID0geGQ7XHJcbiAgICAgICAgICB4LmUgPSBlO1xyXG4gICAgICAgICAgeCA9IGRpdmlkZSh4LCB5LCBzZCwgcm0sIDAsIGJhc2UpO1xyXG4gICAgICAgICAgeGQgPSB4LmQ7XHJcbiAgICAgICAgICBlID0geC5lO1xyXG4gICAgICAgICAgcm91bmRVcCA9IGluZXhhY3Q7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBUaGUgcm91bmRpbmcgZGlnaXQsIGkuZS4gdGhlIGRpZ2l0IGFmdGVyIHRoZSBkaWdpdCB0aGF0IG1heSBiZSByb3VuZGVkIHVwLlxyXG4gICAgICAgIGkgPSB4ZFtzZF07XHJcbiAgICAgICAgayA9IGJhc2UgLyAyO1xyXG4gICAgICAgIHJvdW5kVXAgPSByb3VuZFVwIHx8IHhkW3NkICsgMV0gIT09IHZvaWQgMDtcclxuXHJcbiAgICAgICAgcm91bmRVcCA9IHJtIDwgNFxyXG4gICAgICAgICAgPyAoaSAhPT0gdm9pZCAwIHx8IHJvdW5kVXApICYmIChybSA9PT0gMCB8fCBybSA9PT0gKHgucyA8IDAgPyAzIDogMikpXHJcbiAgICAgICAgICA6IGkgPiBrIHx8IGkgPT09IGsgJiYgKHJtID09PSA0IHx8IHJvdW5kVXAgfHwgcm0gPT09IDYgJiYgeGRbc2QgLSAxXSAmIDEgfHxcclxuICAgICAgICAgICAgcm0gPT09ICh4LnMgPCAwID8gOCA6IDcpKTtcclxuXHJcbiAgICAgICAgeGQubGVuZ3RoID0gc2Q7XHJcblxyXG4gICAgICAgIGlmIChyb3VuZFVwKSB7XHJcblxyXG4gICAgICAgICAgLy8gUm91bmRpbmcgdXAgbWF5IG1lYW4gdGhlIHByZXZpb3VzIGRpZ2l0IGhhcyB0byBiZSByb3VuZGVkIHVwIGFuZCBzbyBvbi5cclxuICAgICAgICAgIGZvciAoOyArK3hkWy0tc2RdID4gYmFzZSAtIDE7KSB7XHJcbiAgICAgICAgICAgIHhkW3NkXSA9IDA7XHJcbiAgICAgICAgICAgIGlmICghc2QpIHtcclxuICAgICAgICAgICAgICArK2U7XHJcbiAgICAgICAgICAgICAgeGQudW5zaGlmdCgxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gRGV0ZXJtaW5lIHRyYWlsaW5nIHplcm9zLlxyXG4gICAgICAgIGZvciAobGVuID0geGQubGVuZ3RoOyAheGRbbGVuIC0gMV07IC0tbGVuKTtcclxuXHJcbiAgICAgICAgLy8gRS5nLiBbNCwgMTEsIDE1XSBiZWNvbWVzIDRiZi5cclxuICAgICAgICBmb3IgKGkgPSAwLCBzdHIgPSAnJzsgaSA8IGxlbjsgaSsrKSBzdHIgKz0gTlVNRVJBTFMuY2hhckF0KHhkW2ldKTtcclxuXHJcbiAgICAgICAgLy8gQWRkIGJpbmFyeSBleHBvbmVudCBzdWZmaXg/XHJcbiAgICAgICAgaWYgKGlzRXhwKSB7XHJcbiAgICAgICAgICBpZiAobGVuID4gMSkge1xyXG4gICAgICAgICAgICBpZiAoYmFzZU91dCA9PSAxNiB8fCBiYXNlT3V0ID09IDgpIHtcclxuICAgICAgICAgICAgICBpID0gYmFzZU91dCA9PSAxNiA/IDQgOiAzO1xyXG4gICAgICAgICAgICAgIGZvciAoLS1sZW47IGxlbiAlIGk7IGxlbisrKSBzdHIgKz0gJzAnO1xyXG4gICAgICAgICAgICAgIHhkID0gY29udmVydEJhc2Uoc3RyLCBiYXNlLCBiYXNlT3V0KTtcclxuICAgICAgICAgICAgICBmb3IgKGxlbiA9IHhkLmxlbmd0aDsgIXhkW2xlbiAtIDFdOyAtLWxlbik7XHJcblxyXG4gICAgICAgICAgICAgIC8vIHhkWzBdIHdpbGwgYWx3YXlzIGJlIGJlIDFcclxuICAgICAgICAgICAgICBmb3IgKGkgPSAxLCBzdHIgPSAnMS4nOyBpIDwgbGVuOyBpKyspIHN0ciArPSBOVU1FUkFMUy5jaGFyQXQoeGRbaV0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHN0ciA9IHN0ci5jaGFyQXQoMCkgKyAnLicgKyBzdHIuc2xpY2UoMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBzdHIgPSAgc3RyICsgKGUgPCAwID8gJ3AnIDogJ3ArJykgKyBlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZSA8IDApIHtcclxuICAgICAgICAgIGZvciAoOyArK2U7KSBzdHIgPSAnMCcgKyBzdHI7XHJcbiAgICAgICAgICBzdHIgPSAnMC4nICsgc3RyO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoKytlID4gbGVuKSBmb3IgKGUgLT0gbGVuOyBlLS0gOykgc3RyICs9ICcwJztcclxuICAgICAgICAgIGVsc2UgaWYgKGUgPCBsZW4pIHN0ciA9IHN0ci5zbGljZSgwLCBlKSArICcuJyArIHN0ci5zbGljZShlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHN0ciA9IChiYXNlT3V0ID09IDE2ID8gJzB4JyA6IGJhc2VPdXQgPT0gMiA/ICcwYicgOiBiYXNlT3V0ID09IDggPyAnMG8nIDogJycpICsgc3RyO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB4LnMgPCAwID8gJy0nICsgc3RyIDogc3RyO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIERvZXMgbm90IHN0cmlwIHRyYWlsaW5nIHplcm9zLlxyXG4gIGZ1bmN0aW9uIHRydW5jYXRlKGFyciwgbGVuKSB7XHJcbiAgICBpZiAoYXJyLmxlbmd0aCA+IGxlbikge1xyXG4gICAgICBhcnIubGVuZ3RoID0gbGVuO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvLyBEZWNpbWFsIG1ldGhvZHNcclxuXHJcblxyXG4gIC8qXHJcbiAgICogIGFic1xyXG4gICAqICBhY29zXHJcbiAgICogIGFjb3NoXHJcbiAgICogIGFkZFxyXG4gICAqICBhc2luXHJcbiAgICogIGFzaW5oXHJcbiAgICogIGF0YW5cclxuICAgKiAgYXRhbmhcclxuICAgKiAgYXRhbjJcclxuICAgKiAgY2JydFxyXG4gICAqICBjZWlsXHJcbiAgICogIGNsYW1wXHJcbiAgICogIGNsb25lXHJcbiAgICogIGNvbmZpZ1xyXG4gICAqICBjb3NcclxuICAgKiAgY29zaFxyXG4gICAqICBkaXZcclxuICAgKiAgZXhwXHJcbiAgICogIGZsb29yXHJcbiAgICogIGh5cG90XHJcbiAgICogIGxuXHJcbiAgICogIGxvZ1xyXG4gICAqICBsb2cyXHJcbiAgICogIGxvZzEwXHJcbiAgICogIG1heFxyXG4gICAqICBtaW5cclxuICAgKiAgbW9kXHJcbiAgICogIG11bFxyXG4gICAqICBwb3dcclxuICAgKiAgcmFuZG9tXHJcbiAgICogIHJvdW5kXHJcbiAgICogIHNldFxyXG4gICAqICBzaWduXHJcbiAgICogIHNpblxyXG4gICAqICBzaW5oXHJcbiAgICogIHNxcnRcclxuICAgKiAgc3ViXHJcbiAgICogIHN1bVxyXG4gICAqICB0YW5cclxuICAgKiAgdGFuaFxyXG4gICAqICB0cnVuY1xyXG4gICAqL1xyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgYHhgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gYWJzKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5hYnMoKTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBhcmNjb3NpbmUgaW4gcmFkaWFucyBvZiBgeGAuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBhY29zKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5hY29zKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgaW52ZXJzZSBvZiB0aGUgaHlwZXJib2xpYyBjb3NpbmUgb2YgYHhgLCByb3VuZGVkIHRvXHJcbiAgICogYHByZWNpc2lvbmAgc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH0gQSB2YWx1ZSBpbiByYWRpYW5zLlxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gYWNvc2goeCkge1xyXG4gICAgcmV0dXJuIG5ldyB0aGlzKHgpLmFjb3NoKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgc3VtIG9mIGB4YCBhbmQgYHlgLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gIHNpZ25pZmljYW50XHJcbiAgICogZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKiB5IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBhZGQoeCwgeSkge1xyXG4gICAgcmV0dXJuIG5ldyB0aGlzKHgpLnBsdXMoeSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgYXJjc2luZSBpbiByYWRpYW5zIG9mIGB4YCwgcm91bmRlZCB0byBgcHJlY2lzaW9uYFxyXG4gICAqIHNpZ25pZmljYW50IGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBhc2luKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5hc2luKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgaW52ZXJzZSBvZiB0aGUgaHlwZXJib2xpYyBzaW5lIG9mIGB4YCwgcm91bmRlZCB0b1xyXG4gICAqIGBwcmVjaXNpb25gIHNpZ25pZmljYW50IGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9IEEgdmFsdWUgaW4gcmFkaWFucy5cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGFzaW5oKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5hc2luaCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGFyY3RhbmdlbnQgaW4gcmFkaWFucyBvZiBgeGAsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmBcclxuICAgKiBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gYXRhbih4KSB7XHJcbiAgICByZXR1cm4gbmV3IHRoaXMoeCkuYXRhbigpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGludmVyc2Ugb2YgdGhlIGh5cGVyYm9saWMgdGFuZ2VudCBvZiBgeGAsIHJvdW5kZWQgdG9cclxuICAgKiBgcHJlY2lzaW9uYCBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfSBBIHZhbHVlIGluIHJhZGlhbnMuXHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBhdGFuaCh4KSB7XHJcbiAgICByZXR1cm4gbmV3IHRoaXMoeCkuYXRhbmgoKTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBhcmN0YW5nZW50IGluIHJhZGlhbnMgb2YgYHkveGAgaW4gdGhlIHJhbmdlIC1waSB0byBwaVxyXG4gICAqIChpbmNsdXNpdmUpLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gIHNpZ25pZmljYW50IGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiBEb21haW46IFstSW5maW5pdHksIEluZmluaXR5XVxyXG4gICAqIFJhbmdlOiBbLXBpLCBwaV1cclxuICAgKlxyXG4gICAqIHkge251bWJlcnxzdHJpbmd8RGVjaW1hbH0gVGhlIHktY29vcmRpbmF0ZS5cclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9IFRoZSB4LWNvb3JkaW5hdGUuXHJcbiAgICpcclxuICAgKiBhdGFuMijCsTAsIC0wKSAgICAgICAgICAgICAgID0gwrFwaVxyXG4gICAqIGF0YW4yKMKxMCwgKzApICAgICAgICAgICAgICAgPSDCsTBcclxuICAgKiBhdGFuMijCsTAsIC14KSAgICAgICAgICAgICAgID0gwrFwaSBmb3IgeCA+IDBcclxuICAgKiBhdGFuMijCsTAsIHgpICAgICAgICAgICAgICAgID0gwrEwIGZvciB4ID4gMFxyXG4gICAqIGF0YW4yKC15LCDCsTApICAgICAgICAgICAgICAgPSAtcGkvMiBmb3IgeSA+IDBcclxuICAgKiBhdGFuMih5LCDCsTApICAgICAgICAgICAgICAgID0gcGkvMiBmb3IgeSA+IDBcclxuICAgKiBhdGFuMijCsXksIC1JbmZpbml0eSkgICAgICAgID0gwrFwaSBmb3IgZmluaXRlIHkgPiAwXHJcbiAgICogYXRhbjIowrF5LCArSW5maW5pdHkpICAgICAgICA9IMKxMCBmb3IgZmluaXRlIHkgPiAwXHJcbiAgICogYXRhbjIowrFJbmZpbml0eSwgeCkgICAgICAgICA9IMKxcGkvMiBmb3IgZmluaXRlIHhcclxuICAgKiBhdGFuMijCsUluZmluaXR5LCAtSW5maW5pdHkpID0gwrEzKnBpLzRcclxuICAgKiBhdGFuMijCsUluZmluaXR5LCArSW5maW5pdHkpID0gwrFwaS80XHJcbiAgICogYXRhbjIoTmFOLCB4KSA9IE5hTlxyXG4gICAqIGF0YW4yKHksIE5hTikgPSBOYU5cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGF0YW4yKHksIHgpIHtcclxuICAgIHkgPSBuZXcgdGhpcyh5KTtcclxuICAgIHggPSBuZXcgdGhpcyh4KTtcclxuICAgIHZhciByLFxyXG4gICAgICBwciA9IHRoaXMucHJlY2lzaW9uLFxyXG4gICAgICBybSA9IHRoaXMucm91bmRpbmcsXHJcbiAgICAgIHdwciA9IHByICsgNDtcclxuXHJcbiAgICAvLyBFaXRoZXIgTmFOXHJcbiAgICBpZiAoIXkucyB8fCAheC5zKSB7XHJcbiAgICAgIHIgPSBuZXcgdGhpcyhOYU4pO1xyXG5cclxuICAgIC8vIEJvdGggwrFJbmZpbml0eVxyXG4gICAgfSBlbHNlIGlmICgheS5kICYmICF4LmQpIHtcclxuICAgICAgciA9IGdldFBpKHRoaXMsIHdwciwgMSkudGltZXMoeC5zID4gMCA/IDAuMjUgOiAwLjc1KTtcclxuICAgICAgci5zID0geS5zO1xyXG5cclxuICAgIC8vIHggaXMgwrFJbmZpbml0eSBvciB5IGlzIMKxMFxyXG4gICAgfSBlbHNlIGlmICgheC5kIHx8IHkuaXNaZXJvKCkpIHtcclxuICAgICAgciA9IHgucyA8IDAgPyBnZXRQaSh0aGlzLCBwciwgcm0pIDogbmV3IHRoaXMoMCk7XHJcbiAgICAgIHIucyA9IHkucztcclxuXHJcbiAgICAvLyB5IGlzIMKxSW5maW5pdHkgb3IgeCBpcyDCsTBcclxuICAgIH0gZWxzZSBpZiAoIXkuZCB8fCB4LmlzWmVybygpKSB7XHJcbiAgICAgIHIgPSBnZXRQaSh0aGlzLCB3cHIsIDEpLnRpbWVzKDAuNSk7XHJcbiAgICAgIHIucyA9IHkucztcclxuXHJcbiAgICAvLyBCb3RoIG5vbi16ZXJvIGFuZCBmaW5pdGVcclxuICAgIH0gZWxzZSBpZiAoeC5zIDwgMCkge1xyXG4gICAgICB0aGlzLnByZWNpc2lvbiA9IHdwcjtcclxuICAgICAgdGhpcy5yb3VuZGluZyA9IDE7XHJcbiAgICAgIHIgPSB0aGlzLmF0YW4oZGl2aWRlKHksIHgsIHdwciwgMSkpO1xyXG4gICAgICB4ID0gZ2V0UGkodGhpcywgd3ByLCAxKTtcclxuICAgICAgdGhpcy5wcmVjaXNpb24gPSBwcjtcclxuICAgICAgdGhpcy5yb3VuZGluZyA9IHJtO1xyXG4gICAgICByID0geS5zIDwgMCA/IHIubWludXMoeCkgOiByLnBsdXMoeCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByID0gdGhpcy5hdGFuKGRpdmlkZSh5LCB4LCB3cHIsIDEpKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcjtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBjdWJlIHJvb3Qgb2YgYHhgLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gIHNpZ25pZmljYW50XHJcbiAgICogZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGNicnQoeCkge1xyXG4gICAgcmV0dXJuIG5ldyB0aGlzKHgpLmNicnQoKTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIGB4YCByb3VuZGVkIHRvIGFuIGludGVnZXIgdXNpbmcgYFJPVU5EX0NFSUxgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gY2VpbCh4KSB7XHJcbiAgICByZXR1cm4gZmluYWxpc2UoeCA9IG5ldyB0aGlzKHgpLCB4LmUgKyAxLCAyKTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIGB4YCBjbGFtcGVkIHRvIHRoZSByYW5nZSBkZWxpbmVhdGVkIGJ5IGBtaW5gIGFuZCBgbWF4YC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKiBtaW4ge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKiBtYXgge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGNsYW1wKHgsIG1pbiwgbWF4KSB7XHJcbiAgICByZXR1cm4gbmV3IHRoaXMoeCkuY2xhbXAobWluLCBtYXgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogQ29uZmlndXJlIGdsb2JhbCBzZXR0aW5ncyBmb3IgYSBEZWNpbWFsIGNvbnN0cnVjdG9yLlxyXG4gICAqXHJcbiAgICogYG9iamAgaXMgYW4gb2JqZWN0IHdpdGggb25lIG9yIG1vcmUgb2YgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzLFxyXG4gICAqXHJcbiAgICogICBwcmVjaXNpb24gIHtudW1iZXJ9XHJcbiAgICogICByb3VuZGluZyAgIHtudW1iZXJ9XHJcbiAgICogICB0b0V4cE5lZyAgIHtudW1iZXJ9XHJcbiAgICogICB0b0V4cFBvcyAgIHtudW1iZXJ9XHJcbiAgICogICBtYXhFICAgICAgIHtudW1iZXJ9XHJcbiAgICogICBtaW5FICAgICAgIHtudW1iZXJ9XHJcbiAgICogICBtb2R1bG8gICAgIHtudW1iZXJ9XHJcbiAgICogICBjcnlwdG8gICAgIHtib29sZWFufG51bWJlcn1cclxuICAgKiAgIGRlZmF1bHRzICAge3RydWV9XHJcbiAgICpcclxuICAgKiBFLmcuIERlY2ltYWwuY29uZmlnKHsgcHJlY2lzaW9uOiAyMCwgcm91bmRpbmc6IDQgfSlcclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGNvbmZpZyhvYmopIHtcclxuICAgIGlmICghb2JqIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB0aHJvdyBFcnJvcihkZWNpbWFsRXJyb3IgKyAnT2JqZWN0IGV4cGVjdGVkJyk7XHJcbiAgICB2YXIgaSwgcCwgdixcclxuICAgICAgdXNlRGVmYXVsdHMgPSBvYmouZGVmYXVsdHMgPT09IHRydWUsXHJcbiAgICAgIHBzID0gW1xyXG4gICAgICAgICdwcmVjaXNpb24nLCAxLCBNQVhfRElHSVRTLFxyXG4gICAgICAgICdyb3VuZGluZycsIDAsIDgsXHJcbiAgICAgICAgJ3RvRXhwTmVnJywgLUVYUF9MSU1JVCwgMCxcclxuICAgICAgICAndG9FeHBQb3MnLCAwLCBFWFBfTElNSVQsXHJcbiAgICAgICAgJ21heEUnLCAwLCBFWFBfTElNSVQsXHJcbiAgICAgICAgJ21pbkUnLCAtRVhQX0xJTUlULCAwLFxyXG4gICAgICAgICdtb2R1bG8nLCAwLCA5XHJcbiAgICAgIF07XHJcblxyXG4gICAgZm9yIChpID0gMDsgaSA8IHBzLmxlbmd0aDsgaSArPSAzKSB7XHJcbiAgICAgIGlmIChwID0gcHNbaV0sIHVzZURlZmF1bHRzKSB0aGlzW3BdID0gREVGQVVMVFNbcF07XHJcbiAgICAgIGlmICgodiA9IG9ialtwXSkgIT09IHZvaWQgMCkge1xyXG4gICAgICAgIGlmIChtYXRoZmxvb3IodikgPT09IHYgJiYgdiA+PSBwc1tpICsgMV0gJiYgdiA8PSBwc1tpICsgMl0pIHRoaXNbcF0gPSB2O1xyXG4gICAgICAgIGVsc2UgdGhyb3cgRXJyb3IoaW52YWxpZEFyZ3VtZW50ICsgcCArICc6ICcgKyB2KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChwID0gJ2NyeXB0bycsIHVzZURlZmF1bHRzKSB0aGlzW3BdID0gREVGQVVMVFNbcF07XHJcbiAgICBpZiAoKHYgPSBvYmpbcF0pICE9PSB2b2lkIDApIHtcclxuICAgICAgaWYgKHYgPT09IHRydWUgfHwgdiA9PT0gZmFsc2UgfHwgdiA9PT0gMCB8fCB2ID09PSAxKSB7XHJcbiAgICAgICAgaWYgKHYpIHtcclxuICAgICAgICAgIGlmICh0eXBlb2YgY3J5cHRvICE9ICd1bmRlZmluZWQnICYmIGNyeXB0byAmJlxyXG4gICAgICAgICAgICAoY3J5cHRvLmdldFJhbmRvbVZhbHVlcyB8fCBjcnlwdG8ucmFuZG9tQnl0ZXMpKSB7XHJcbiAgICAgICAgICAgIHRoaXNbcF0gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoY3J5cHRvVW5hdmFpbGFibGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzW3BdID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRocm93IEVycm9yKGludmFsaWRBcmd1bWVudCArIHAgKyAnOiAnICsgdik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBjb3NpbmUgb2YgYHhgLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gIHNpZ25pZmljYW50XHJcbiAgICogZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH0gQSB2YWx1ZSBpbiByYWRpYW5zLlxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gY29zKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5jb3MoKTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBoeXBlcmJvbGljIGNvc2luZSBvZiBgeGAsIHJvdW5kZWQgdG8gcHJlY2lzaW9uXHJcbiAgICogc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH0gQSB2YWx1ZSBpbiByYWRpYW5zLlxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gY29zaCh4KSB7XHJcbiAgICByZXR1cm4gbmV3IHRoaXMoeCkuY29zaCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogQ3JlYXRlIGFuZCByZXR1cm4gYSBEZWNpbWFsIGNvbnN0cnVjdG9yIHdpdGggdGhlIHNhbWUgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIGFzIHRoaXMgRGVjaW1hbFxyXG4gICAqIGNvbnN0cnVjdG9yLlxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gY2xvbmUob2JqKSB7XHJcbiAgICB2YXIgaSwgcCwgcHM7XHJcblxyXG4gICAgLypcclxuICAgICAqIFRoZSBEZWNpbWFsIGNvbnN0cnVjdG9yIGFuZCBleHBvcnRlZCBmdW5jdGlvbi5cclxuICAgICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIGluc3RhbmNlLlxyXG4gICAgICpcclxuICAgICAqIHYge251bWJlcnxzdHJpbmd8RGVjaW1hbH0gQSBudW1lcmljIHZhbHVlLlxyXG4gICAgICpcclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gRGVjaW1hbCh2KSB7XHJcbiAgICAgIHZhciBlLCBpLCB0LFxyXG4gICAgICAgIHggPSB0aGlzO1xyXG5cclxuICAgICAgLy8gRGVjaW1hbCBjYWxsZWQgd2l0aG91dCBuZXcuXHJcbiAgICAgIGlmICghKHggaW5zdGFuY2VvZiBEZWNpbWFsKSkgcmV0dXJuIG5ldyBEZWNpbWFsKHYpO1xyXG5cclxuICAgICAgLy8gUmV0YWluIGEgcmVmZXJlbmNlIHRvIHRoaXMgRGVjaW1hbCBjb25zdHJ1Y3RvciwgYW5kIHNoYWRvdyBEZWNpbWFsLnByb3RvdHlwZS5jb25zdHJ1Y3RvclxyXG4gICAgICAvLyB3aGljaCBwb2ludHMgdG8gT2JqZWN0LlxyXG4gICAgICB4LmNvbnN0cnVjdG9yID0gRGVjaW1hbDtcclxuXHJcbiAgICAgIC8vIER1cGxpY2F0ZS5cclxuICAgICAgaWYgKGlzRGVjaW1hbEluc3RhbmNlKHYpKSB7XHJcbiAgICAgICAgeC5zID0gdi5zO1xyXG5cclxuICAgICAgICBpZiAoZXh0ZXJuYWwpIHtcclxuICAgICAgICAgIGlmICghdi5kIHx8IHYuZSA+IERlY2ltYWwubWF4RSkge1xyXG5cclxuICAgICAgICAgICAgLy8gSW5maW5pdHkuXHJcbiAgICAgICAgICAgIHguZSA9IE5hTjtcclxuICAgICAgICAgICAgeC5kID0gbnVsbDtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodi5lIDwgRGVjaW1hbC5taW5FKSB7XHJcblxyXG4gICAgICAgICAgICAvLyBaZXJvLlxyXG4gICAgICAgICAgICB4LmUgPSAwO1xyXG4gICAgICAgICAgICB4LmQgPSBbMF07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB4LmUgPSB2LmU7XHJcbiAgICAgICAgICAgIHguZCA9IHYuZC5zbGljZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB4LmUgPSB2LmU7XHJcbiAgICAgICAgICB4LmQgPSB2LmQgPyB2LmQuc2xpY2UoKSA6IHYuZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdCA9IHR5cGVvZiB2O1xyXG5cclxuICAgICAgaWYgKHQgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgaWYgKHYgPT09IDApIHtcclxuICAgICAgICAgIHgucyA9IDEgLyB2IDwgMCA/IC0xIDogMTtcclxuICAgICAgICAgIHguZSA9IDA7XHJcbiAgICAgICAgICB4LmQgPSBbMF07XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodiA8IDApIHtcclxuICAgICAgICAgIHYgPSAtdjtcclxuICAgICAgICAgIHgucyA9IC0xO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB4LnMgPSAxO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gRmFzdCBwYXRoIGZvciBzbWFsbCBpbnRlZ2Vycy5cclxuICAgICAgICBpZiAodiA9PT0gfn52ICYmIHYgPCAxZTcpIHtcclxuICAgICAgICAgIGZvciAoZSA9IDAsIGkgPSB2OyBpID49IDEwOyBpIC89IDEwKSBlKys7XHJcblxyXG4gICAgICAgICAgaWYgKGV4dGVybmFsKSB7XHJcbiAgICAgICAgICAgIGlmIChlID4gRGVjaW1hbC5tYXhFKSB7XHJcbiAgICAgICAgICAgICAgeC5lID0gTmFOO1xyXG4gICAgICAgICAgICAgIHguZCA9IG51bGw7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZSA8IERlY2ltYWwubWluRSkge1xyXG4gICAgICAgICAgICAgIHguZSA9IDA7XHJcbiAgICAgICAgICAgICAgeC5kID0gWzBdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHguZSA9IGU7XHJcbiAgICAgICAgICAgICAgeC5kID0gW3ZdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB4LmUgPSBlO1xyXG4gICAgICAgICAgICB4LmQgPSBbdl07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAvLyBJbmZpbml0eSwgTmFOLlxyXG4gICAgICAgIH0gZWxzZSBpZiAodiAqIDAgIT09IDApIHtcclxuICAgICAgICAgIGlmICghdikgeC5zID0gTmFOO1xyXG4gICAgICAgICAgeC5lID0gTmFOO1xyXG4gICAgICAgICAgeC5kID0gbnVsbDtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBwYXJzZURlY2ltYWwoeCwgdi50b1N0cmluZygpKTtcclxuXHJcbiAgICAgIH0gZWxzZSBpZiAodCAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgICB0aHJvdyBFcnJvcihpbnZhbGlkQXJndW1lbnQgKyB2KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gTWludXMgc2lnbj9cclxuICAgICAgaWYgKChpID0gdi5jaGFyQ29kZUF0KDApKSA9PT0gNDUpIHtcclxuICAgICAgICB2ID0gdi5zbGljZSgxKTtcclxuICAgICAgICB4LnMgPSAtMTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBQbHVzIHNpZ24/XHJcbiAgICAgICAgaWYgKGkgPT09IDQzKSB2ID0gdi5zbGljZSgxKTtcclxuICAgICAgICB4LnMgPSAxO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gaXNEZWNpbWFsLnRlc3QodikgPyBwYXJzZURlY2ltYWwoeCwgdikgOiBwYXJzZU90aGVyKHgsIHYpO1xyXG4gICAgfVxyXG5cclxuICAgIERlY2ltYWwucHJvdG90eXBlID0gUDtcclxuXHJcbiAgICBEZWNpbWFsLlJPVU5EX1VQID0gMDtcclxuICAgIERlY2ltYWwuUk9VTkRfRE9XTiA9IDE7XHJcbiAgICBEZWNpbWFsLlJPVU5EX0NFSUwgPSAyO1xyXG4gICAgRGVjaW1hbC5ST1VORF9GTE9PUiA9IDM7XHJcbiAgICBEZWNpbWFsLlJPVU5EX0hBTEZfVVAgPSA0O1xyXG4gICAgRGVjaW1hbC5ST1VORF9IQUxGX0RPV04gPSA1O1xyXG4gICAgRGVjaW1hbC5ST1VORF9IQUxGX0VWRU4gPSA2O1xyXG4gICAgRGVjaW1hbC5ST1VORF9IQUxGX0NFSUwgPSA3O1xyXG4gICAgRGVjaW1hbC5ST1VORF9IQUxGX0ZMT09SID0gODtcclxuICAgIERlY2ltYWwuRVVDTElEID0gOTtcclxuXHJcbiAgICBEZWNpbWFsLmNvbmZpZyA9IERlY2ltYWwuc2V0ID0gY29uZmlnO1xyXG4gICAgRGVjaW1hbC5jbG9uZSA9IGNsb25lO1xyXG4gICAgRGVjaW1hbC5pc0RlY2ltYWwgPSBpc0RlY2ltYWxJbnN0YW5jZTtcclxuXHJcbiAgICBEZWNpbWFsLmFicyA9IGFicztcclxuICAgIERlY2ltYWwuYWNvcyA9IGFjb3M7XHJcbiAgICBEZWNpbWFsLmFjb3NoID0gYWNvc2g7ICAgICAgICAvLyBFUzZcclxuICAgIERlY2ltYWwuYWRkID0gYWRkO1xyXG4gICAgRGVjaW1hbC5hc2luID0gYXNpbjtcclxuICAgIERlY2ltYWwuYXNpbmggPSBhc2luaDsgICAgICAgIC8vIEVTNlxyXG4gICAgRGVjaW1hbC5hdGFuID0gYXRhbjtcclxuICAgIERlY2ltYWwuYXRhbmggPSBhdGFuaDsgICAgICAgIC8vIEVTNlxyXG4gICAgRGVjaW1hbC5hdGFuMiA9IGF0YW4yO1xyXG4gICAgRGVjaW1hbC5jYnJ0ID0gY2JydDsgICAgICAgICAgLy8gRVM2XHJcbiAgICBEZWNpbWFsLmNlaWwgPSBjZWlsO1xyXG4gICAgRGVjaW1hbC5jbGFtcCA9IGNsYW1wO1xyXG4gICAgRGVjaW1hbC5jb3MgPSBjb3M7XHJcbiAgICBEZWNpbWFsLmNvc2ggPSBjb3NoOyAgICAgICAgICAvLyBFUzZcclxuICAgIERlY2ltYWwuZGl2ID0gZGl2O1xyXG4gICAgRGVjaW1hbC5leHAgPSBleHA7XHJcbiAgICBEZWNpbWFsLmZsb29yID0gZmxvb3I7XHJcbiAgICBEZWNpbWFsLmh5cG90ID0gaHlwb3Q7ICAgICAgICAvLyBFUzZcclxuICAgIERlY2ltYWwubG4gPSBsbjtcclxuICAgIERlY2ltYWwubG9nID0gbG9nO1xyXG4gICAgRGVjaW1hbC5sb2cxMCA9IGxvZzEwOyAgICAgICAgLy8gRVM2XHJcbiAgICBEZWNpbWFsLmxvZzIgPSBsb2cyOyAgICAgICAgICAvLyBFUzZcclxuICAgIERlY2ltYWwubWF4ID0gbWF4O1xyXG4gICAgRGVjaW1hbC5taW4gPSBtaW47XHJcbiAgICBEZWNpbWFsLm1vZCA9IG1vZDtcclxuICAgIERlY2ltYWwubXVsID0gbXVsO1xyXG4gICAgRGVjaW1hbC5wb3cgPSBwb3c7XHJcbiAgICBEZWNpbWFsLnJhbmRvbSA9IHJhbmRvbTtcclxuICAgIERlY2ltYWwucm91bmQgPSByb3VuZDtcclxuICAgIERlY2ltYWwuc2lnbiA9IHNpZ247ICAgICAgICAgIC8vIEVTNlxyXG4gICAgRGVjaW1hbC5zaW4gPSBzaW47XHJcbiAgICBEZWNpbWFsLnNpbmggPSBzaW5oOyAgICAgICAgICAvLyBFUzZcclxuICAgIERlY2ltYWwuc3FydCA9IHNxcnQ7XHJcbiAgICBEZWNpbWFsLnN1YiA9IHN1YjtcclxuICAgIERlY2ltYWwuc3VtID0gc3VtO1xyXG4gICAgRGVjaW1hbC50YW4gPSB0YW47XHJcbiAgICBEZWNpbWFsLnRhbmggPSB0YW5oOyAgICAgICAgICAvLyBFUzZcclxuICAgIERlY2ltYWwudHJ1bmMgPSB0cnVuYzsgICAgICAgIC8vIEVTNlxyXG5cclxuICAgIGlmIChvYmogPT09IHZvaWQgMCkgb2JqID0ge307XHJcbiAgICBpZiAob2JqKSB7XHJcbiAgICAgIGlmIChvYmouZGVmYXVsdHMgIT09IHRydWUpIHtcclxuICAgICAgICBwcyA9IFsncHJlY2lzaW9uJywgJ3JvdW5kaW5nJywgJ3RvRXhwTmVnJywgJ3RvRXhwUG9zJywgJ21heEUnLCAnbWluRScsICdtb2R1bG8nLCAnY3J5cHRvJ107XHJcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHBzLmxlbmd0aDspIGlmICghb2JqLmhhc093blByb3BlcnR5KHAgPSBwc1tpKytdKSkgb2JqW3BdID0gdGhpc1twXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIERlY2ltYWwuY29uZmlnKG9iaik7XHJcblxyXG4gICAgcmV0dXJuIERlY2ltYWw7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyBgeGAgZGl2aWRlZCBieSBgeWAsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAgc2lnbmlmaWNhbnRcclxuICAgKiBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqIHkge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGRpdih4LCB5KSB7XHJcbiAgICByZXR1cm4gbmV3IHRoaXMoeCkuZGl2KHkpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIG5hdHVyYWwgZXhwb25lbnRpYWwgb2YgYHhgLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gXHJcbiAgICogc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH0gVGhlIHBvd2VyIHRvIHdoaWNoIHRvIHJhaXNlIHRoZSBiYXNlIG9mIHRoZSBuYXR1cmFsIGxvZy5cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGV4cCh4KSB7XHJcbiAgICByZXR1cm4gbmV3IHRoaXMoeCkuZXhwKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyBgeGAgcm91bmQgdG8gYW4gaW50ZWdlciB1c2luZyBgUk9VTkRfRkxPT1JgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gZmxvb3IoeCkge1xyXG4gICAgcmV0dXJuIGZpbmFsaXNlKHggPSBuZXcgdGhpcyh4KSwgeC5lICsgMSwgMyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgc3F1YXJlIHJvb3Qgb2YgdGhlIHN1bSBvZiB0aGUgc3F1YXJlcyBvZiB0aGUgYXJndW1lbnRzLFxyXG4gICAqIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAgc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIGh5cG90KGEsIGIsIC4uLikgPSBzcXJ0KGFeMiArIGJeMiArIC4uLilcclxuICAgKlxyXG4gICAqIGFyZ3VtZW50cyB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gaHlwb3QoKSB7XHJcbiAgICB2YXIgaSwgbixcclxuICAgICAgdCA9IG5ldyB0aGlzKDApO1xyXG5cclxuICAgIGV4dGVybmFsID0gZmFsc2U7XHJcblxyXG4gICAgZm9yIChpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7KSB7XHJcbiAgICAgIG4gPSBuZXcgdGhpcyhhcmd1bWVudHNbaSsrXSk7XHJcbiAgICAgIGlmICghbi5kKSB7XHJcbiAgICAgICAgaWYgKG4ucykge1xyXG4gICAgICAgICAgZXh0ZXJuYWwgPSB0cnVlO1xyXG4gICAgICAgICAgcmV0dXJuIG5ldyB0aGlzKDEgLyAwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdCA9IG47XHJcbiAgICAgIH0gZWxzZSBpZiAodC5kKSB7XHJcbiAgICAgICAgdCA9IHQucGx1cyhuLnRpbWVzKG4pKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGV4dGVybmFsID0gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gdC5zcXJ0KCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gdHJ1ZSBpZiBvYmplY3QgaXMgYSBEZWNpbWFsIGluc3RhbmNlICh3aGVyZSBEZWNpbWFsIGlzIGFueSBEZWNpbWFsIGNvbnN0cnVjdG9yKSxcclxuICAgKiBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gaXNEZWNpbWFsSW5zdGFuY2Uob2JqKSB7XHJcbiAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgRGVjaW1hbCB8fCBvYmogJiYgb2JqLnRvU3RyaW5nVGFnID09PSB0YWcgfHwgZmFsc2U7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgbmF0dXJhbCBsb2dhcml0aG0gb2YgYHhgLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gXHJcbiAgICogc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGxuKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5sbigpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGxvZyBvZiBgeGAgdG8gdGhlIGJhc2UgYHlgLCBvciB0byBiYXNlIDEwIGlmIG5vIGJhc2VcclxuICAgKiBpcyBzcGVjaWZpZWQsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAgc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIGxvZ1t5XSh4KVxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfSBUaGUgYXJndW1lbnQgb2YgdGhlIGxvZ2FyaXRobS5cclxuICAgKiB5IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9IFRoZSBiYXNlIG9mIHRoZSBsb2dhcml0aG0uXHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBsb2coeCwgeSkge1xyXG4gICAgcmV0dXJuIG5ldyB0aGlzKHgpLmxvZyh5KTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBiYXNlIDIgbG9nYXJpdGhtIG9mIGB4YCwgcm91bmRlZCB0byBgcHJlY2lzaW9uYFxyXG4gICAqIHNpZ25pZmljYW50IGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBsb2cyKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5sb2coMik7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgYmFzZSAxMCBsb2dhcml0aG0gb2YgYHhgLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gXHJcbiAgICogc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGxvZzEwKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5sb2coMTApO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIG1heGltdW0gb2YgdGhlIGFyZ3VtZW50cy5cclxuICAgKlxyXG4gICAqIGFyZ3VtZW50cyB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gbWF4KCkge1xyXG4gICAgcmV0dXJuIG1heE9yTWluKHRoaXMsIGFyZ3VtZW50cywgJ2x0Jyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgbWluaW11bSBvZiB0aGUgYXJndW1lbnRzLlxyXG4gICAqXHJcbiAgICogYXJndW1lbnRzIHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBtaW4oKSB7XHJcbiAgICByZXR1cm4gbWF4T3JNaW4odGhpcywgYXJndW1lbnRzLCAnZ3QnKTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIGB4YCBtb2R1bG8gYHlgLCByb3VuZGVkIHRvIGBwcmVjaXNpb25gIHNpZ25pZmljYW50IGRpZ2l0c1xyXG4gICAqIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH1cclxuICAgKiB5IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBtb2QoeCwgeSkge1xyXG4gICAgcmV0dXJuIG5ldyB0aGlzKHgpLm1vZCh5KTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIGB4YCBtdWx0aXBsaWVkIGJ5IGB5YCwgcm91bmRlZCB0byBgcHJlY2lzaW9uYCBzaWduaWZpY2FudFxyXG4gICAqIGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICogeSB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gbXVsKHgsIHkpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5tdWwoeSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyBgeGAgcmFpc2VkIHRvIHRoZSBwb3dlciBgeWAsIHJvdW5kZWQgdG8gcHJlY2lzaW9uXHJcbiAgICogc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgYHJvdW5kaW5nYC5cclxuICAgKlxyXG4gICAqIHgge251bWJlcnxzdHJpbmd8RGVjaW1hbH0gVGhlIGJhc2UuXHJcbiAgICogeSB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfSBUaGUgZXhwb25lbnQuXHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiBwb3coeCwgeSkge1xyXG4gICAgcmV0dXJuIG5ldyB0aGlzKHgpLnBvdyh5KTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybnMgYSBuZXcgRGVjaW1hbCB3aXRoIGEgcmFuZG9tIHZhbHVlIGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbiAwIGFuZCBsZXNzIHRoYW4gMSwgYW5kIHdpdGhcclxuICAgKiBgc2RgLCBvciBgRGVjaW1hbC5wcmVjaXNpb25gIGlmIGBzZGAgaXMgb21pdHRlZCwgc2lnbmlmaWNhbnQgZGlnaXRzIChvciBsZXNzIGlmIHRyYWlsaW5nIHplcm9zXHJcbiAgICogYXJlIHByb2R1Y2VkKS5cclxuICAgKlxyXG4gICAqIFtzZF0ge251bWJlcn0gU2lnbmlmaWNhbnQgZGlnaXRzLiBJbnRlZ2VyLCAwIHRvIE1BWF9ESUdJVFMgaW5jbHVzaXZlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gcmFuZG9tKHNkKSB7XHJcbiAgICB2YXIgZCwgZSwgaywgbixcclxuICAgICAgaSA9IDAsXHJcbiAgICAgIHIgPSBuZXcgdGhpcygxKSxcclxuICAgICAgcmQgPSBbXTtcclxuXHJcbiAgICBpZiAoc2QgPT09IHZvaWQgMCkgc2QgPSB0aGlzLnByZWNpc2lvbjtcclxuICAgIGVsc2UgY2hlY2tJbnQzMihzZCwgMSwgTUFYX0RJR0lUUyk7XHJcblxyXG4gICAgayA9IE1hdGguY2VpbChzZCAvIExPR19CQVNFKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuY3J5cHRvKSB7XHJcbiAgICAgIGZvciAoOyBpIDwgazspIHJkW2krK10gPSBNYXRoLnJhbmRvbSgpICogMWU3IHwgMDtcclxuXHJcbiAgICAvLyBCcm93c2VycyBzdXBwb3J0aW5nIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMuXHJcbiAgICB9IGVsc2UgaWYgKGNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcclxuICAgICAgZCA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQzMkFycmF5KGspKTtcclxuXHJcbiAgICAgIGZvciAoOyBpIDwgazspIHtcclxuICAgICAgICBuID0gZFtpXTtcclxuXHJcbiAgICAgICAgLy8gMCA8PSBuIDwgNDI5NDk2NzI5NlxyXG4gICAgICAgIC8vIFByb2JhYmlsaXR5IG4gPj0gNC4yOWU5LCBpcyA0OTY3Mjk2IC8gNDI5NDk2NzI5NiA9IDAuMDAxMTYgKDEgaW4gODY1KS5cclxuICAgICAgICBpZiAobiA+PSA0LjI5ZTkpIHtcclxuICAgICAgICAgIGRbaV0gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheSgxKSlbMF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAvLyAwIDw9IG4gPD0gNDI4OTk5OTk5OVxyXG4gICAgICAgICAgLy8gMCA8PSAobiAlIDFlNykgPD0gOTk5OTk5OVxyXG4gICAgICAgICAgcmRbaSsrXSA9IG4gJSAxZTc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgLy8gTm9kZS5qcyBzdXBwb3J0aW5nIGNyeXB0by5yYW5kb21CeXRlcy5cclxuICAgIH0gZWxzZSBpZiAoY3J5cHRvLnJhbmRvbUJ5dGVzKSB7XHJcblxyXG4gICAgICAvLyBidWZmZXJcclxuICAgICAgZCA9IGNyeXB0by5yYW5kb21CeXRlcyhrICo9IDQpO1xyXG5cclxuICAgICAgZm9yICg7IGkgPCBrOykge1xyXG5cclxuICAgICAgICAvLyAwIDw9IG4gPCAyMTQ3NDgzNjQ4XHJcbiAgICAgICAgbiA9IGRbaV0gKyAoZFtpICsgMV0gPDwgOCkgKyAoZFtpICsgMl0gPDwgMTYpICsgKChkW2kgKyAzXSAmIDB4N2YpIDw8IDI0KTtcclxuXHJcbiAgICAgICAgLy8gUHJvYmFiaWxpdHkgbiA+PSAyLjE0ZTksIGlzIDc0ODM2NDggLyAyMTQ3NDgzNjQ4ID0gMC4wMDM1ICgxIGluIDI4NikuXHJcbiAgICAgICAgaWYgKG4gPj0gMi4xNGU5KSB7XHJcbiAgICAgICAgICBjcnlwdG8ucmFuZG9tQnl0ZXMoNCkuY29weShkLCBpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vIDAgPD0gbiA8PSAyMTM5OTk5OTk5XHJcbiAgICAgICAgICAvLyAwIDw9IChuICUgMWU3KSA8PSA5OTk5OTk5XHJcbiAgICAgICAgICByZC5wdXNoKG4gJSAxZTcpO1xyXG4gICAgICAgICAgaSArPSA0O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaSA9IGsgLyA0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhyb3cgRXJyb3IoY3J5cHRvVW5hdmFpbGFibGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGsgPSByZFstLWldO1xyXG4gICAgc2QgJT0gTE9HX0JBU0U7XHJcblxyXG4gICAgLy8gQ29udmVydCB0cmFpbGluZyBkaWdpdHMgdG8gemVyb3MgYWNjb3JkaW5nIHRvIHNkLlxyXG4gICAgaWYgKGsgJiYgc2QpIHtcclxuICAgICAgbiA9IG1hdGhwb3coMTAsIExPR19CQVNFIC0gc2QpO1xyXG4gICAgICByZFtpXSA9IChrIC8gbiB8IDApICogbjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZW1vdmUgdHJhaWxpbmcgd29yZHMgd2hpY2ggYXJlIHplcm8uXHJcbiAgICBmb3IgKDsgcmRbaV0gPT09IDA7IGktLSkgcmQucG9wKCk7XHJcblxyXG4gICAgLy8gWmVybz9cclxuICAgIGlmIChpIDwgMCkge1xyXG4gICAgICBlID0gMDtcclxuICAgICAgcmQgPSBbMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBlID0gLTE7XHJcblxyXG4gICAgICAvLyBSZW1vdmUgbGVhZGluZyB3b3JkcyB3aGljaCBhcmUgemVybyBhbmQgYWRqdXN0IGV4cG9uZW50IGFjY29yZGluZ2x5LlxyXG4gICAgICBmb3IgKDsgcmRbMF0gPT09IDA7IGUgLT0gTE9HX0JBU0UpIHJkLnNoaWZ0KCk7XHJcblxyXG4gICAgICAvLyBDb3VudCB0aGUgZGlnaXRzIG9mIHRoZSBmaXJzdCB3b3JkIG9mIHJkIHRvIGRldGVybWluZSBsZWFkaW5nIHplcm9zLlxyXG4gICAgICBmb3IgKGsgPSAxLCBuID0gcmRbMF07IG4gPj0gMTA7IG4gLz0gMTApIGsrKztcclxuXHJcbiAgICAgIC8vIEFkanVzdCB0aGUgZXhwb25lbnQgZm9yIGxlYWRpbmcgemVyb3Mgb2YgdGhlIGZpcnN0IHdvcmQgb2YgcmQuXHJcbiAgICAgIGlmIChrIDwgTE9HX0JBU0UpIGUgLT0gTE9HX0JBU0UgLSBrO1xyXG4gICAgfVxyXG5cclxuICAgIHIuZSA9IGU7XHJcbiAgICByLmQgPSByZDtcclxuXHJcbiAgICByZXR1cm4gcjtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIGB4YCByb3VuZGVkIHRvIGFuIGludGVnZXIgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogVG8gZW11bGF0ZSBgTWF0aC5yb3VuZGAsIHNldCByb3VuZGluZyB0byA3IChST1VORF9IQUxGX0NFSUwpLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gcm91bmQoeCkge1xyXG4gICAgcmV0dXJuIGZpbmFsaXNlKHggPSBuZXcgdGhpcyh4KSwgeC5lICsgMSwgdGhpcy5yb3VuZGluZyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm5cclxuICAgKiAgIDEgICAgaWYgeCA+IDAsXHJcbiAgICogIC0xICAgIGlmIHggPCAwLFxyXG4gICAqICAgMCAgICBpZiB4IGlzIDAsXHJcbiAgICogIC0wICAgIGlmIHggaXMgLTAsXHJcbiAgICogICBOYU4gIG90aGVyd2lzZVxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gc2lnbih4KSB7XHJcbiAgICB4ID0gbmV3IHRoaXMoeCk7XHJcbiAgICByZXR1cm4geC5kID8gKHguZFswXSA/IHgucyA6IDAgKiB4LnMpIDogeC5zIHx8IE5hTjtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBzaW5lIG9mIGB4YCwgcm91bmRlZCB0byBgcHJlY2lzaW9uYCBzaWduaWZpY2FudCBkaWdpdHNcclxuICAgKiB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9IEEgdmFsdWUgaW4gcmFkaWFucy5cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIHNpbih4KSB7XHJcbiAgICByZXR1cm4gbmV3IHRoaXMoeCkuc2luKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgaHlwZXJib2xpYyBzaW5lIG9mIGB4YCwgcm91bmRlZCB0byBgcHJlY2lzaW9uYFxyXG4gICAqIHNpZ25pZmljYW50IGRpZ2l0cyB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9IEEgdmFsdWUgaW4gcmFkaWFucy5cclxuICAgKlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIHNpbmgoeCkge1xyXG4gICAgcmV0dXJuIG5ldyB0aGlzKHgpLnNpbmgoKTtcclxuICB9XHJcblxyXG5cclxuICAvKlxyXG4gICAqIFJldHVybiBhIG5ldyBEZWNpbWFsIHdob3NlIHZhbHVlIGlzIHRoZSBzcXVhcmUgcm9vdCBvZiBgeGAsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAgc2lnbmlmaWNhbnRcclxuICAgKiBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gc3FydCh4KSB7XHJcbiAgICByZXR1cm4gbmV3IHRoaXMoeCkuc3FydCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgYHhgIG1pbnVzIGB5YCwgcm91bmRlZCB0byBgcHJlY2lzaW9uYCBzaWduaWZpY2FudCBkaWdpdHNcclxuICAgKiB1c2luZyByb3VuZGluZyBtb2RlIGByb3VuZGluZ2AuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICogeSB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gc3ViKHgsIHkpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS5zdWIoeSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgc3VtIG9mIHRoZSBhcmd1bWVudHMsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmBcclxuICAgKiBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogT25seSB0aGUgcmVzdWx0IGlzIHJvdW5kZWQsIG5vdCB0aGUgaW50ZXJtZWRpYXRlIGNhbGN1bGF0aW9ucy5cclxuICAgKlxyXG4gICAqIGFyZ3VtZW50cyB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfVxyXG4gICAqXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gc3VtKCkge1xyXG4gICAgdmFyIGkgPSAwLFxyXG4gICAgICBhcmdzID0gYXJndW1lbnRzLFxyXG4gICAgICB4ID0gbmV3IHRoaXMoYXJnc1tpXSk7XHJcblxyXG4gICAgZXh0ZXJuYWwgPSBmYWxzZTtcclxuICAgIGZvciAoOyB4LnMgJiYgKytpIDwgYXJncy5sZW5ndGg7KSB4ID0geC5wbHVzKGFyZ3NbaV0pO1xyXG4gICAgZXh0ZXJuYWwgPSB0cnVlO1xyXG5cclxuICAgIHJldHVybiBmaW5hbGlzZSh4LCB0aGlzLnByZWNpc2lvbiwgdGhpcy5yb3VuZGluZyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyB0aGUgdGFuZ2VudCBvZiBgeGAsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAgc2lnbmlmaWNhbnRcclxuICAgKiBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfSBBIHZhbHVlIGluIHJhZGlhbnMuXHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiB0YW4oeCkge1xyXG4gICAgcmV0dXJuIG5ldyB0aGlzKHgpLnRhbigpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJuIGEgbmV3IERlY2ltYWwgd2hvc2UgdmFsdWUgaXMgdGhlIGh5cGVyYm9saWMgdGFuZ2VudCBvZiBgeGAsIHJvdW5kZWQgdG8gYHByZWNpc2lvbmBcclxuICAgKiBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBgcm91bmRpbmdgLlxyXG4gICAqXHJcbiAgICogeCB7bnVtYmVyfHN0cmluZ3xEZWNpbWFsfSBBIHZhbHVlIGluIHJhZGlhbnMuXHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiB0YW5oKHgpIHtcclxuICAgIHJldHVybiBuZXcgdGhpcyh4KS50YW5oKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBSZXR1cm4gYSBuZXcgRGVjaW1hbCB3aG9zZSB2YWx1ZSBpcyBgeGAgdHJ1bmNhdGVkIHRvIGFuIGludGVnZXIuXHJcbiAgICpcclxuICAgKiB4IHtudW1iZXJ8c3RyaW5nfERlY2ltYWx9XHJcbiAgICpcclxuICAgKi9cclxuICBmdW5jdGlvbiB0cnVuYyh4KSB7XHJcbiAgICByZXR1cm4gZmluYWxpc2UoeCA9IG5ldyB0aGlzKHgpLCB4LmUgKyAxLCAxKTtcclxuICB9XHJcblxyXG5cclxuICAvLyBDcmVhdGUgYW5kIGNvbmZpZ3VyZSBpbml0aWFsIERlY2ltYWwgY29uc3RydWN0b3IuXHJcbiAgRGVjaW1hbCA9IGNsb25lKERFRkFVTFRTKTtcclxuICBEZWNpbWFsLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IERlY2ltYWw7XHJcbiAgRGVjaW1hbFsnZGVmYXVsdCddID0gRGVjaW1hbC5EZWNpbWFsID0gRGVjaW1hbDtcclxuXHJcbiAgLy8gQ3JlYXRlIHRoZSBpbnRlcm5hbCBjb25zdGFudHMgZnJvbSB0aGVpciBzdHJpbmcgdmFsdWVzLlxyXG4gIExOMTAgPSBuZXcgRGVjaW1hbChMTjEwKTtcclxuICBQSSA9IG5ldyBEZWNpbWFsKFBJKTtcclxuXHJcblxyXG4gIC8vIEV4cG9ydC5cclxuXHJcblxyXG4gIC8vIEFNRC5cclxuICBpZiAodHlwZW9mIGRlZmluZSA9PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcclxuICAgIGRlZmluZShmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiBEZWNpbWFsO1xyXG4gICAgfSk7XHJcblxyXG4gIC8vIE5vZGUgYW5kIG90aGVyIGVudmlyb25tZW50cyB0aGF0IHN1cHBvcnQgbW9kdWxlLmV4cG9ydHMuXHJcbiAgfSBlbHNlIGlmICh0eXBlb2YgbW9kdWxlICE9ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7XHJcbiAgICBpZiAodHlwZW9mIFN5bWJvbCA9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT0gJ3N5bWJvbCcpIHtcclxuICAgICAgUFtTeW1ib2xbJ2ZvciddKCdub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbScpXSA9IFAudG9TdHJpbmc7XHJcbiAgICAgIFBbU3ltYm9sLnRvU3RyaW5nVGFnXSA9ICdEZWNpbWFsJztcclxuICAgIH1cclxuXHJcbiAgICBtb2R1bGUuZXhwb3J0cyA9IERlY2ltYWw7XHJcblxyXG4gIC8vIEJyb3dzZXIuXHJcbiAgfSBlbHNlIHtcclxuICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcclxuICAgICAgZ2xvYmFsU2NvcGUgPSB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmICYmIHNlbGYuc2VsZiA9PSBzZWxmID8gc2VsZiA6IHdpbmRvdztcclxuICAgIH1cclxuXHJcbiAgICBub0NvbmZsaWN0ID0gZ2xvYmFsU2NvcGUuRGVjaW1hbDtcclxuICAgIERlY2ltYWwubm9Db25mbGljdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgZ2xvYmFsU2NvcGUuRGVjaW1hbCA9IG5vQ29uZmxpY3Q7XHJcbiAgICAgIHJldHVybiBEZWNpbWFsO1xyXG4gICAgfTtcclxuXHJcbiAgICBnbG9iYWxTY29wZS5EZWNpbWFsID0gRGVjaW1hbDtcclxuICB9XHJcbn0pKHRoaXMpO1xyXG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBMb2Rhc2ggPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBDb3B5cmlnaHQgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyA8aHR0cHM6Ly9vcGVuanNmLm9yZy8+XG4gKiBSZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKi9cbjsoZnVuY3Rpb24oKSB7XG5cbiAgLyoqIFVzZWQgYXMgYSBzYWZlIHJlZmVyZW5jZSBmb3IgYHVuZGVmaW5lZGAgaW4gcHJlLUVTNSBlbnZpcm9ubWVudHMuICovXG4gIHZhciB1bmRlZmluZWQ7XG5cbiAgLyoqIFVzZWQgYXMgdGhlIHNlbWFudGljIHZlcnNpb24gbnVtYmVyLiAqL1xuICB2YXIgVkVSU0lPTiA9ICc0LjE3LjIxJztcblxuICAvKiogVXNlZCBhcyB0aGUgc2l6ZSB0byBlbmFibGUgbGFyZ2UgYXJyYXkgb3B0aW1pemF0aW9ucy4gKi9cbiAgdmFyIExBUkdFX0FSUkFZX1NJWkUgPSAyMDA7XG5cbiAgLyoqIEVycm9yIG1lc3NhZ2UgY29uc3RhbnRzLiAqL1xuICB2YXIgQ09SRV9FUlJPUl9URVhUID0gJ1Vuc3VwcG9ydGVkIGNvcmUtanMgdXNlLiBUcnkgaHR0cHM6Ly9ucG1zLmlvL3NlYXJjaD9xPXBvbnlmaWxsLicsXG4gICAgICBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbicsXG4gICAgICBJTlZBTElEX1RFTVBMX1ZBUl9FUlJPUl9URVhUID0gJ0ludmFsaWQgYHZhcmlhYmxlYCBvcHRpb24gcGFzc2VkIGludG8gYF8udGVtcGxhdGVgJztcblxuICAvKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG4gIHZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuICAvKiogVXNlZCBhcyB0aGUgbWF4aW11bSBtZW1vaXplIGNhY2hlIHNpemUuICovXG4gIHZhciBNQVhfTUVNT0laRV9TSVpFID0gNTAwO1xuXG4gIC8qKiBVc2VkIGFzIHRoZSBpbnRlcm5hbCBhcmd1bWVudCBwbGFjZWhvbGRlci4gKi9cbiAgdmFyIFBMQUNFSE9MREVSID0gJ19fbG9kYXNoX3BsYWNlaG9sZGVyX18nO1xuXG4gIC8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG4gIHZhciBDTE9ORV9ERUVQX0ZMQUcgPSAxLFxuICAgICAgQ0xPTkVfRkxBVF9GTEFHID0gMixcbiAgICAgIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbiAgLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG4gIHZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuICAvKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciBmdW5jdGlvbiBtZXRhZGF0YS4gKi9cbiAgdmFyIFdSQVBfQklORF9GTEFHID0gMSxcbiAgICAgIFdSQVBfQklORF9LRVlfRkxBRyA9IDIsXG4gICAgICBXUkFQX0NVUlJZX0JPVU5EX0ZMQUcgPSA0LFxuICAgICAgV1JBUF9DVVJSWV9GTEFHID0gOCxcbiAgICAgIFdSQVBfQ1VSUllfUklHSFRfRkxBRyA9IDE2LFxuICAgICAgV1JBUF9QQVJUSUFMX0ZMQUcgPSAzMixcbiAgICAgIFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHID0gNjQsXG4gICAgICBXUkFQX0FSWV9GTEFHID0gMTI4LFxuICAgICAgV1JBUF9SRUFSR19GTEFHID0gMjU2LFxuICAgICAgV1JBUF9GTElQX0ZMQUcgPSA1MTI7XG5cbiAgLyoqIFVzZWQgYXMgZGVmYXVsdCBvcHRpb25zIGZvciBgXy50cnVuY2F0ZWAuICovXG4gIHZhciBERUZBVUxUX1RSVU5DX0xFTkdUSCA9IDMwLFxuICAgICAgREVGQVVMVF9UUlVOQ19PTUlTU0lPTiA9ICcuLi4nO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBob3QgZnVuY3Rpb25zIGJ5IG51bWJlciBvZiBjYWxscyB3aXRoaW4gYSBzcGFuIG9mIG1pbGxpc2Vjb25kcy4gKi9cbiAgdmFyIEhPVF9DT1VOVCA9IDgwMCxcbiAgICAgIEhPVF9TUEFOID0gMTY7XG5cbiAgLyoqIFVzZWQgdG8gaW5kaWNhdGUgdGhlIHR5cGUgb2YgbGF6eSBpdGVyYXRlZXMuICovXG4gIHZhciBMQVpZX0ZJTFRFUl9GTEFHID0gMSxcbiAgICAgIExBWllfTUFQX0ZMQUcgPSAyLFxuICAgICAgTEFaWV9XSElMRV9GTEFHID0gMztcblxuICAvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbiAgdmFyIElORklOSVRZID0gMSAvIDAsXG4gICAgICBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MSxcbiAgICAgIE1BWF9JTlRFR0VSID0gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDgsXG4gICAgICBOQU4gPSAwIC8gMDtcblxuICAvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB0aGUgbWF4aW11bSBsZW5ndGggYW5kIGluZGV4IG9mIGFuIGFycmF5LiAqL1xuICB2YXIgTUFYX0FSUkFZX0xFTkdUSCA9IDQyOTQ5NjcyOTUsXG4gICAgICBNQVhfQVJSQVlfSU5ERVggPSBNQVhfQVJSQVlfTEVOR1RIIC0gMSxcbiAgICAgIEhBTEZfTUFYX0FSUkFZX0xFTkdUSCA9IE1BWF9BUlJBWV9MRU5HVEggPj4+IDE7XG5cbiAgLyoqIFVzZWQgdG8gYXNzb2NpYXRlIHdyYXAgbWV0aG9kcyB3aXRoIHRoZWlyIGJpdCBmbGFncy4gKi9cbiAgdmFyIHdyYXBGbGFncyA9IFtcbiAgICBbJ2FyeScsIFdSQVBfQVJZX0ZMQUddLFxuICAgIFsnYmluZCcsIFdSQVBfQklORF9GTEFHXSxcbiAgICBbJ2JpbmRLZXknLCBXUkFQX0JJTkRfS0VZX0ZMQUddLFxuICAgIFsnY3VycnknLCBXUkFQX0NVUlJZX0ZMQUddLFxuICAgIFsnY3VycnlSaWdodCcsIFdSQVBfQ1VSUllfUklHSFRfRkxBR10sXG4gICAgWydmbGlwJywgV1JBUF9GTElQX0ZMQUddLFxuICAgIFsncGFydGlhbCcsIFdSQVBfUEFSVElBTF9GTEFHXSxcbiAgICBbJ3BhcnRpYWxSaWdodCcsIFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHXSxcbiAgICBbJ3JlYXJnJywgV1JBUF9SRUFSR19GTEFHXVxuICBdO1xuXG4gIC8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbiAgdmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICAgIGFzeW5jVGFnID0gJ1tvYmplY3QgQXN5bmNGdW5jdGlvbl0nLFxuICAgICAgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgICBkb21FeGNUYWcgPSAnW29iamVjdCBET01FeGNlcHRpb25dJyxcbiAgICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgICBudWxsVGFnID0gJ1tvYmplY3QgTnVsbF0nLFxuICAgICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgICBwcm9taXNlVGFnID0gJ1tvYmplY3QgUHJvbWlzZV0nLFxuICAgICAgcHJveHlUYWcgPSAnW29iamVjdCBQcm94eV0nLFxuICAgICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXScsXG4gICAgICB1bmRlZmluZWRUYWcgPSAnW29iamVjdCBVbmRlZmluZWRdJyxcbiAgICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXScsXG4gICAgICB3ZWFrU2V0VGFnID0gJ1tvYmplY3QgV2Vha1NldF0nO1xuXG4gIHZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggZW1wdHkgc3RyaW5nIGxpdGVyYWxzIGluIGNvbXBpbGVkIHRlbXBsYXRlIHNvdXJjZS4gKi9cbiAgdmFyIHJlRW1wdHlTdHJpbmdMZWFkaW5nID0gL1xcYl9fcCBcXCs9ICcnOy9nLFxuICAgICAgcmVFbXB0eVN0cmluZ01pZGRsZSA9IC9cXGIoX19wIFxcKz0pICcnIFxcKy9nLFxuICAgICAgcmVFbXB0eVN0cmluZ1RyYWlsaW5nID0gLyhfX2VcXCguKj9cXCl8XFxiX190XFwpKSBcXCtcXG4nJzsvZztcblxuICAvKiogVXNlZCB0byBtYXRjaCBIVE1MIGVudGl0aWVzIGFuZCBIVE1MIGNoYXJhY3RlcnMuICovXG4gIHZhciByZUVzY2FwZWRIdG1sID0gLyYoPzphbXB8bHR8Z3R8cXVvdHwjMzkpOy9nLFxuICAgICAgcmVVbmVzY2FwZWRIdG1sID0gL1smPD5cIiddL2csXG4gICAgICByZUhhc0VzY2FwZWRIdG1sID0gUmVnRXhwKHJlRXNjYXBlZEh0bWwuc291cmNlKSxcbiAgICAgIHJlSGFzVW5lc2NhcGVkSHRtbCA9IFJlZ0V4cChyZVVuZXNjYXBlZEh0bWwuc291cmNlKTtcblxuICAvKiogVXNlZCB0byBtYXRjaCB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLiAqL1xuICB2YXIgcmVFc2NhcGUgPSAvPCUtKFtcXHNcXFNdKz8pJT4vZyxcbiAgICAgIHJlRXZhbHVhdGUgPSAvPCUoW1xcc1xcU10rPyklPi9nLFxuICAgICAgcmVJbnRlcnBvbGF0ZSA9IC88JT0oW1xcc1xcU10rPyklPi9nO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIHByb3BlcnR5IG5hbWVzIHdpdGhpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbiAgdmFyIHJlSXNEZWVwUHJvcCA9IC9cXC58XFxbKD86W15bXFxdXSp8KFtcIiddKSg/Oig/IVxcMSlbXlxcXFxdfFxcXFwuKSo/XFwxKVxcXS8sXG4gICAgICByZUlzUGxhaW5Qcm9wID0gL15cXHcqJC8sXG4gICAgICByZVByb3BOYW1lID0gL1teLltcXF1dK3xcXFsoPzooLT9cXGQrKD86XFwuXFxkKyk/KXwoW1wiJ10pKCg/Oig/IVxcMilbXlxcXFxdfFxcXFwuKSo/KVxcMilcXF18KD89KD86XFwufFxcW1xcXSkoPzpcXC58XFxbXFxdfCQpKS9nO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgXG4gICAqIFtzeW50YXggY2hhcmFjdGVyc10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcGF0dGVybnMpLlxuICAgKi9cbiAgdmFyIHJlUmVnRXhwQ2hhciA9IC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZyxcbiAgICAgIHJlSGFzUmVnRXhwQ2hhciA9IFJlZ0V4cChyZVJlZ0V4cENoYXIuc291cmNlKTtcblxuICAvKiogVXNlZCB0byBtYXRjaCBsZWFkaW5nIHdoaXRlc3BhY2UuICovXG4gIHZhciByZVRyaW1TdGFydCA9IC9eXFxzKy87XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggYSBzaW5nbGUgd2hpdGVzcGFjZSBjaGFyYWN0ZXIuICovXG4gIHZhciByZVdoaXRlc3BhY2UgPSAvXFxzLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB3cmFwIGRldGFpbCBjb21tZW50cy4gKi9cbiAgdmFyIHJlV3JhcENvbW1lbnQgPSAvXFx7KD86XFxuXFwvXFwqIFxcW3dyYXBwZWQgd2l0aCAuK1xcXSBcXCpcXC8pP1xcbj8vLFxuICAgICAgcmVXcmFwRGV0YWlscyA9IC9cXHtcXG5cXC9cXCogXFxbd3JhcHBlZCB3aXRoICguKylcXF0gXFwqLyxcbiAgICAgIHJlU3BsaXREZXRhaWxzID0gLyw/ICYgLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB3b3JkcyBjb21wb3NlZCBvZiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4gKi9cbiAgdmFyIHJlQXNjaWlXb3JkID0gL1teXFx4MDAtXFx4MmZcXHgzYS1cXHg0MFxceDViLVxceDYwXFx4N2ItXFx4N2ZdKy9nO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHZhbGlkYXRlIHRoZSBgdmFsaWRhdGVgIG9wdGlvbiBpbiBgXy50ZW1wbGF0ZWAgdmFyaWFibGUuXG4gICAqXG4gICAqIEZvcmJpZHMgY2hhcmFjdGVycyB3aGljaCBjb3VsZCBwb3RlbnRpYWxseSBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50IGRlZmluaXRpb246XG4gICAqIC0gXCIoKSxcIiAobW9kaWZpY2F0aW9uIG9mIGZ1bmN0aW9uIHBhcmFtZXRlcnMpXG4gICAqIC0gXCI9XCIgKGRlZmF1bHQgdmFsdWUpXG4gICAqIC0gXCJbXXt9XCIgKGRlc3RydWN0dXJpbmcgb2YgZnVuY3Rpb24gcGFyYW1ldGVycylcbiAgICogLSBcIi9cIiAoYmVnaW5uaW5nIG9mIGEgY29tbWVudClcbiAgICogLSB3aGl0ZXNwYWNlXG4gICAqL1xuICB2YXIgcmVGb3JiaWRkZW5JZGVudGlmaWVyQ2hhcnMgPSAvWygpPSx7fVxcW1xcXVxcL1xcc10vO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGJhY2tzbGFzaGVzIGluIHByb3BlcnR5IHBhdGhzLiAqL1xuICB2YXIgcmVFc2NhcGVDaGFyID0gL1xcXFwoXFxcXCk/L2c7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gbWF0Y2hcbiAgICogW0VTIHRlbXBsYXRlIGRlbGltaXRlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRlbXBsYXRlLWxpdGVyYWwtbGV4aWNhbC1jb21wb25lbnRzKS5cbiAgICovXG4gIHZhciByZUVzVGVtcGxhdGUgPSAvXFwkXFx7KFteXFxcXH1dKig/OlxcXFwuW15cXFxcfV0qKSopXFx9L2c7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGAgZmxhZ3MgZnJvbSB0aGVpciBjb2VyY2VkIHN0cmluZyB2YWx1ZXMuICovXG4gIHZhciByZUZsYWdzID0gL1xcdyokLztcblxuICAvKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL1xuICB2YXIgcmVJc0JhZEhleCA9IC9eWy0rXTB4WzAtOWEtZl0rJC9pO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBiaW5hcnkgc3RyaW5nIHZhbHVlcy4gKi9cbiAgdmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL1xuICB2YXIgcmVJc0hvc3RDdG9yID0gL15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLztcblxuICAvKiogVXNlZCB0byBkZXRlY3Qgb2N0YWwgc3RyaW5nIHZhbHVlcy4gKi9cbiAgdmFyIHJlSXNPY3RhbCA9IC9eMG9bMC03XSskL2k7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzLiAqL1xuICB2YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIExhdGluIFVuaWNvZGUgbGV0dGVycyAoZXhjbHVkaW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRvcnMpLiAqL1xuICB2YXIgcmVMYXRpbiA9IC9bXFx4YzAtXFx4ZDZcXHhkOC1cXHhmNlxceGY4LVxceGZmXFx1MDEwMC1cXHUwMTdmXS9nO1xuXG4gIC8qKiBVc2VkIHRvIGVuc3VyZSBjYXB0dXJpbmcgb3JkZXIgb2YgdGVtcGxhdGUgZGVsaW1pdGVycy4gKi9cbiAgdmFyIHJlTm9NYXRjaCA9IC8oJF4pLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB1bmVzY2FwZWQgY2hhcmFjdGVycyBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuICovXG4gIHZhciByZVVuZXNjYXBlZFN0cmluZyA9IC9bJ1xcblxcclxcdTIwMjhcXHUyMDI5XFxcXF0vZztcblxuICAvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovXG4gIHZhciByc0FzdHJhbFJhbmdlID0gJ1xcXFx1ZDgwMC1cXFxcdWRmZmYnLFxuICAgICAgcnNDb21ib01hcmtzUmFuZ2UgPSAnXFxcXHUwMzAwLVxcXFx1MDM2ZicsXG4gICAgICByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgPSAnXFxcXHVmZTIwLVxcXFx1ZmUyZicsXG4gICAgICByc0NvbWJvU3ltYm9sc1JhbmdlID0gJ1xcXFx1MjBkMC1cXFxcdTIwZmYnLFxuICAgICAgcnNDb21ib1JhbmdlID0gcnNDb21ib01hcmtzUmFuZ2UgKyByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgKyByc0NvbWJvU3ltYm9sc1JhbmdlLFxuICAgICAgcnNEaW5nYmF0UmFuZ2UgPSAnXFxcXHUyNzAwLVxcXFx1MjdiZicsXG4gICAgICByc0xvd2VyUmFuZ2UgPSAnYS16XFxcXHhkZi1cXFxceGY2XFxcXHhmOC1cXFxceGZmJyxcbiAgICAgIHJzTWF0aE9wUmFuZ2UgPSAnXFxcXHhhY1xcXFx4YjFcXFxceGQ3XFxcXHhmNycsXG4gICAgICByc05vbkNoYXJSYW5nZSA9ICdcXFxceDAwLVxcXFx4MmZcXFxceDNhLVxcXFx4NDBcXFxceDViLVxcXFx4NjBcXFxceDdiLVxcXFx4YmYnLFxuICAgICAgcnNQdW5jdHVhdGlvblJhbmdlID0gJ1xcXFx1MjAwMC1cXFxcdTIwNmYnLFxuICAgICAgcnNTcGFjZVJhbmdlID0gJyBcXFxcdFxcXFx4MGJcXFxcZlxcXFx4YTBcXFxcdWZlZmZcXFxcblxcXFxyXFxcXHUyMDI4XFxcXHUyMDI5XFxcXHUxNjgwXFxcXHUxODBlXFxcXHUyMDAwXFxcXHUyMDAxXFxcXHUyMDAyXFxcXHUyMDAzXFxcXHUyMDA0XFxcXHUyMDA1XFxcXHUyMDA2XFxcXHUyMDA3XFxcXHUyMDA4XFxcXHUyMDA5XFxcXHUyMDBhXFxcXHUyMDJmXFxcXHUyMDVmXFxcXHUzMDAwJyxcbiAgICAgIHJzVXBwZXJSYW5nZSA9ICdBLVpcXFxceGMwLVxcXFx4ZDZcXFxceGQ4LVxcXFx4ZGUnLFxuICAgICAgcnNWYXJSYW5nZSA9ICdcXFxcdWZlMGVcXFxcdWZlMGYnLFxuICAgICAgcnNCcmVha1JhbmdlID0gcnNNYXRoT3BSYW5nZSArIHJzTm9uQ2hhclJhbmdlICsgcnNQdW5jdHVhdGlvblJhbmdlICsgcnNTcGFjZVJhbmdlO1xuXG4gIC8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjYXB0dXJlIGdyb3Vwcy4gKi9cbiAgdmFyIHJzQXBvcyA9IFwiWydcXHUyMDE5XVwiLFxuICAgICAgcnNBc3RyYWwgPSAnWycgKyByc0FzdHJhbFJhbmdlICsgJ10nLFxuICAgICAgcnNCcmVhayA9ICdbJyArIHJzQnJlYWtSYW5nZSArICddJyxcbiAgICAgIHJzQ29tYm8gPSAnWycgKyByc0NvbWJvUmFuZ2UgKyAnXScsXG4gICAgICByc0RpZ2l0cyA9ICdcXFxcZCsnLFxuICAgICAgcnNEaW5nYmF0ID0gJ1snICsgcnNEaW5nYmF0UmFuZ2UgKyAnXScsXG4gICAgICByc0xvd2VyID0gJ1snICsgcnNMb3dlclJhbmdlICsgJ10nLFxuICAgICAgcnNNaXNjID0gJ1teJyArIHJzQXN0cmFsUmFuZ2UgKyByc0JyZWFrUmFuZ2UgKyByc0RpZ2l0cyArIHJzRGluZ2JhdFJhbmdlICsgcnNMb3dlclJhbmdlICsgcnNVcHBlclJhbmdlICsgJ10nLFxuICAgICAgcnNGaXR6ID0gJ1xcXFx1ZDgzY1tcXFxcdWRmZmItXFxcXHVkZmZmXScsXG4gICAgICByc01vZGlmaWVyID0gJyg/OicgKyByc0NvbWJvICsgJ3wnICsgcnNGaXR6ICsgJyknLFxuICAgICAgcnNOb25Bc3RyYWwgPSAnW14nICsgcnNBc3RyYWxSYW5nZSArICddJyxcbiAgICAgIHJzUmVnaW9uYWwgPSAnKD86XFxcXHVkODNjW1xcXFx1ZGRlNi1cXFxcdWRkZmZdKXsyfScsXG4gICAgICByc1N1cnJQYWlyID0gJ1tcXFxcdWQ4MDAtXFxcXHVkYmZmXVtcXFxcdWRjMDAtXFxcXHVkZmZmXScsXG4gICAgICByc1VwcGVyID0gJ1snICsgcnNVcHBlclJhbmdlICsgJ10nLFxuICAgICAgcnNaV0ogPSAnXFxcXHUyMDBkJztcblxuICAvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgcmVnZXhlcy4gKi9cbiAgdmFyIHJzTWlzY0xvd2VyID0gJyg/OicgKyByc0xvd2VyICsgJ3wnICsgcnNNaXNjICsgJyknLFxuICAgICAgcnNNaXNjVXBwZXIgPSAnKD86JyArIHJzVXBwZXIgKyAnfCcgKyByc01pc2MgKyAnKScsXG4gICAgICByc09wdENvbnRyTG93ZXIgPSAnKD86JyArIHJzQXBvcyArICcoPzpkfGxsfG18cmV8c3x0fHZlKSk/JyxcbiAgICAgIHJzT3B0Q29udHJVcHBlciA9ICcoPzonICsgcnNBcG9zICsgJyg/OkR8TEx8TXxSRXxTfFR8VkUpKT8nLFxuICAgICAgcmVPcHRNb2QgPSByc01vZGlmaWVyICsgJz8nLFxuICAgICAgcnNPcHRWYXIgPSAnWycgKyByc1ZhclJhbmdlICsgJ10/JyxcbiAgICAgIHJzT3B0Sm9pbiA9ICcoPzonICsgcnNaV0ogKyAnKD86JyArIFtyc05vbkFzdHJhbCwgcnNSZWdpb25hbCwgcnNTdXJyUGFpcl0uam9pbignfCcpICsgJyknICsgcnNPcHRWYXIgKyByZU9wdE1vZCArICcpKicsXG4gICAgICByc09yZExvd2VyID0gJ1xcXFxkKig/OjFzdHwybmR8M3JkfCg/IVsxMjNdKVxcXFxkdGgpKD89XFxcXGJ8W0EtWl9dKScsXG4gICAgICByc09yZFVwcGVyID0gJ1xcXFxkKig/OjFTVHwyTkR8M1JEfCg/IVsxMjNdKVxcXFxkVEgpKD89XFxcXGJ8W2Etel9dKScsXG4gICAgICByc1NlcSA9IHJzT3B0VmFyICsgcmVPcHRNb2QgKyByc09wdEpvaW4sXG4gICAgICByc0Vtb2ppID0gJyg/OicgKyBbcnNEaW5nYmF0LCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyXS5qb2luKCd8JykgKyAnKScgKyByc1NlcSxcbiAgICAgIHJzU3ltYm9sID0gJyg/OicgKyBbcnNOb25Bc3RyYWwgKyByc0NvbWJvICsgJz8nLCByc0NvbWJvLCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyLCByc0FzdHJhbF0uam9pbignfCcpICsgJyknO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGFwb3N0cm9waGVzLiAqL1xuICB2YXIgcmVBcG9zID0gUmVnRXhwKHJzQXBvcywgJ2cnKTtcblxuICAvKipcbiAgICogVXNlZCB0byBtYXRjaCBbY29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21iaW5pbmdfRGlhY3JpdGljYWxfTWFya3MpIGFuZFxuICAgKiBbY29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzIGZvciBzeW1ib2xzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21iaW5pbmdfRGlhY3JpdGljYWxfTWFya3NfZm9yX1N5bWJvbHMpLlxuICAgKi9cbiAgdmFyIHJlQ29tYm9NYXJrID0gUmVnRXhwKHJzQ29tYm8sICdnJyk7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggW3N0cmluZyBzeW1ib2xzXShodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC11bmljb2RlKS4gKi9cbiAgdmFyIHJlVW5pY29kZSA9IFJlZ0V4cChyc0ZpdHogKyAnKD89JyArIHJzRml0eiArICcpfCcgKyByc1N5bWJvbCArIHJzU2VxLCAnZycpO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGNvbXBsZXggb3IgY29tcG91bmQgd29yZHMuICovXG4gIHZhciByZVVuaWNvZGVXb3JkID0gUmVnRXhwKFtcbiAgICByc1VwcGVyICsgJz8nICsgcnNMb3dlciArICcrJyArIHJzT3B0Q29udHJMb3dlciArICcoPz0nICsgW3JzQnJlYWssIHJzVXBwZXIsICckJ10uam9pbignfCcpICsgJyknLFxuICAgIHJzTWlzY1VwcGVyICsgJysnICsgcnNPcHRDb250clVwcGVyICsgJyg/PScgKyBbcnNCcmVhaywgcnNVcHBlciArIHJzTWlzY0xvd2VyLCAnJCddLmpvaW4oJ3wnKSArICcpJyxcbiAgICByc1VwcGVyICsgJz8nICsgcnNNaXNjTG93ZXIgKyAnKycgKyByc09wdENvbnRyTG93ZXIsXG4gICAgcnNVcHBlciArICcrJyArIHJzT3B0Q29udHJVcHBlcixcbiAgICByc09yZFVwcGVyLFxuICAgIHJzT3JkTG93ZXIsXG4gICAgcnNEaWdpdHMsXG4gICAgcnNFbW9qaVxuICBdLmpvaW4oJ3wnKSwgJ2cnKTtcblxuICAvKiogVXNlZCB0byBkZXRlY3Qgc3RyaW5ncyB3aXRoIFt6ZXJvLXdpZHRoIGpvaW5lcnMgb3IgY29kZSBwb2ludHMgZnJvbSB0aGUgYXN0cmFsIHBsYW5lc10oaHR0cDovL2Vldi5lZS9ibG9nLzIwMTUvMDkvMTIvZGFyay1jb3JuZXJzLW9mLXVuaWNvZGUvKS4gKi9cbiAgdmFyIHJlSGFzVW5pY29kZSA9IFJlZ0V4cCgnWycgKyByc1pXSiArIHJzQXN0cmFsUmFuZ2UgICsgcnNDb21ib1JhbmdlICsgcnNWYXJSYW5nZSArICddJyk7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IHN0cmluZ3MgdGhhdCBuZWVkIGEgbW9yZSByb2J1c3QgcmVnZXhwIHRvIG1hdGNoIHdvcmRzLiAqL1xuICB2YXIgcmVIYXNVbmljb2RlV29yZCA9IC9bYS16XVtBLVpdfFtBLVpdezJ9W2Etel18WzAtOV1bYS16QS1aXXxbYS16QS1aXVswLTldfFteYS16QS1aMC05IF0vO1xuXG4gIC8qKiBVc2VkIHRvIGFzc2lnbiBkZWZhdWx0IGBjb250ZXh0YCBvYmplY3QgcHJvcGVydGllcy4gKi9cbiAgdmFyIGNvbnRleHRQcm9wcyA9IFtcbiAgICAnQXJyYXknLCAnQnVmZmVyJywgJ0RhdGFWaWV3JywgJ0RhdGUnLCAnRXJyb3InLCAnRmxvYXQzMkFycmF5JywgJ0Zsb2F0NjRBcnJheScsXG4gICAgJ0Z1bmN0aW9uJywgJ0ludDhBcnJheScsICdJbnQxNkFycmF5JywgJ0ludDMyQXJyYXknLCAnTWFwJywgJ01hdGgnLCAnT2JqZWN0JyxcbiAgICAnUHJvbWlzZScsICdSZWdFeHAnLCAnU2V0JywgJ1N0cmluZycsICdTeW1ib2wnLCAnVHlwZUVycm9yJywgJ1VpbnQ4QXJyYXknLFxuICAgICdVaW50OENsYW1wZWRBcnJheScsICdVaW50MTZBcnJheScsICdVaW50MzJBcnJheScsICdXZWFrTWFwJyxcbiAgICAnXycsICdjbGVhclRpbWVvdXQnLCAnaXNGaW5pdGUnLCAncGFyc2VJbnQnLCAnc2V0VGltZW91dCdcbiAgXTtcblxuICAvKiogVXNlZCB0byBtYWtlIHRlbXBsYXRlIHNvdXJjZVVSTHMgZWFzaWVyIHRvIGlkZW50aWZ5LiAqL1xuICB2YXIgdGVtcGxhdGVDb3VudGVyID0gLTE7XG5cbiAgLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xuICB2YXIgdHlwZWRBcnJheVRhZ3MgPSB7fTtcbiAgdHlwZWRBcnJheVRhZ3NbZmxvYXQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1tmbG9hdDY0VGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbaW50MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQxNlRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbiAgdHlwZWRBcnJheVRhZ3NbYXJnc1RhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheVRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1thcnJheUJ1ZmZlclRhZ10gPSB0eXBlZEFycmF5VGFnc1tib29sVGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW2RhdGFWaWV3VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGVUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddID0gdHlwZWRBcnJheVRhZ3NbZnVuY1RhZ10gPVxuICB0eXBlZEFycmF5VGFnc1ttYXBUYWddID0gdHlwZWRBcnJheVRhZ3NbbnVtYmVyVGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPSB0eXBlZEFycmF5VGFnc1tyZWdleHBUYWddID1cbiAgdHlwZWRBcnJheVRhZ3Nbc2V0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3N0cmluZ1RhZ10gPVxuICB0eXBlZEFycmF5VGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4gIC8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIHN1cHBvcnRlZCBieSBgXy5jbG9uZWAuICovXG4gIHZhciBjbG9uZWFibGVUYWdzID0ge307XG4gIGNsb25lYWJsZVRhZ3NbYXJnc1RhZ10gPSBjbG9uZWFibGVUYWdzW2FycmF5VGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRhVmlld1RhZ10gPVxuICBjbG9uZWFibGVUYWdzW2Jvb2xUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRlVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbZmxvYXQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW2Zsb2F0NjRUYWddID1cbiAgY2xvbmVhYmxlVGFnc1tpbnQ4VGFnXSA9IGNsb25lYWJsZVRhZ3NbaW50MTZUYWddID1cbiAgY2xvbmVhYmxlVGFnc1tpbnQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW21hcFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW251bWJlclRhZ10gPSBjbG9uZWFibGVUYWdzW29iamVjdFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW3JlZ2V4cFRhZ10gPSBjbG9uZWFibGVUYWdzW3NldFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW3N0cmluZ1RhZ10gPSBjbG9uZWFibGVUYWdzW3N5bWJvbFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW3VpbnQ4VGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbdWludDE2VGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG4gIGNsb25lYWJsZVRhZ3NbZXJyb3JUYWddID0gY2xvbmVhYmxlVGFnc1tmdW5jVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuICAvKiogVXNlZCB0byBtYXAgTGF0aW4gVW5pY29kZSBsZXR0ZXJzIHRvIGJhc2ljIExhdGluIGxldHRlcnMuICovXG4gIHZhciBkZWJ1cnJlZExldHRlcnMgPSB7XG4gICAgLy8gTGF0aW4tMSBTdXBwbGVtZW50IGJsb2NrLlxuICAgICdcXHhjMCc6ICdBJywgICdcXHhjMSc6ICdBJywgJ1xceGMyJzogJ0EnLCAnXFx4YzMnOiAnQScsICdcXHhjNCc6ICdBJywgJ1xceGM1JzogJ0EnLFxuICAgICdcXHhlMCc6ICdhJywgICdcXHhlMSc6ICdhJywgJ1xceGUyJzogJ2EnLCAnXFx4ZTMnOiAnYScsICdcXHhlNCc6ICdhJywgJ1xceGU1JzogJ2EnLFxuICAgICdcXHhjNyc6ICdDJywgICdcXHhlNyc6ICdjJyxcbiAgICAnXFx4ZDAnOiAnRCcsICAnXFx4ZjAnOiAnZCcsXG4gICAgJ1xceGM4JzogJ0UnLCAgJ1xceGM5JzogJ0UnLCAnXFx4Y2EnOiAnRScsICdcXHhjYic6ICdFJyxcbiAgICAnXFx4ZTgnOiAnZScsICAnXFx4ZTknOiAnZScsICdcXHhlYSc6ICdlJywgJ1xceGViJzogJ2UnLFxuICAgICdcXHhjYyc6ICdJJywgICdcXHhjZCc6ICdJJywgJ1xceGNlJzogJ0knLCAnXFx4Y2YnOiAnSScsXG4gICAgJ1xceGVjJzogJ2knLCAgJ1xceGVkJzogJ2knLCAnXFx4ZWUnOiAnaScsICdcXHhlZic6ICdpJyxcbiAgICAnXFx4ZDEnOiAnTicsICAnXFx4ZjEnOiAnbicsXG4gICAgJ1xceGQyJzogJ08nLCAgJ1xceGQzJzogJ08nLCAnXFx4ZDQnOiAnTycsICdcXHhkNSc6ICdPJywgJ1xceGQ2JzogJ08nLCAnXFx4ZDgnOiAnTycsXG4gICAgJ1xceGYyJzogJ28nLCAgJ1xceGYzJzogJ28nLCAnXFx4ZjQnOiAnbycsICdcXHhmNSc6ICdvJywgJ1xceGY2JzogJ28nLCAnXFx4ZjgnOiAnbycsXG4gICAgJ1xceGQ5JzogJ1UnLCAgJ1xceGRhJzogJ1UnLCAnXFx4ZGInOiAnVScsICdcXHhkYyc6ICdVJyxcbiAgICAnXFx4ZjknOiAndScsICAnXFx4ZmEnOiAndScsICdcXHhmYic6ICd1JywgJ1xceGZjJzogJ3UnLFxuICAgICdcXHhkZCc6ICdZJywgICdcXHhmZCc6ICd5JywgJ1xceGZmJzogJ3knLFxuICAgICdcXHhjNic6ICdBZScsICdcXHhlNic6ICdhZScsXG4gICAgJ1xceGRlJzogJ1RoJywgJ1xceGZlJzogJ3RoJyxcbiAgICAnXFx4ZGYnOiAnc3MnLFxuICAgIC8vIExhdGluIEV4dGVuZGVkLUEgYmxvY2suXG4gICAgJ1xcdTAxMDAnOiAnQScsICAnXFx1MDEwMic6ICdBJywgJ1xcdTAxMDQnOiAnQScsXG4gICAgJ1xcdTAxMDEnOiAnYScsICAnXFx1MDEwMyc6ICdhJywgJ1xcdTAxMDUnOiAnYScsXG4gICAgJ1xcdTAxMDYnOiAnQycsICAnXFx1MDEwOCc6ICdDJywgJ1xcdTAxMGEnOiAnQycsICdcXHUwMTBjJzogJ0MnLFxuICAgICdcXHUwMTA3JzogJ2MnLCAgJ1xcdTAxMDknOiAnYycsICdcXHUwMTBiJzogJ2MnLCAnXFx1MDEwZCc6ICdjJyxcbiAgICAnXFx1MDEwZSc6ICdEJywgICdcXHUwMTEwJzogJ0QnLCAnXFx1MDEwZic6ICdkJywgJ1xcdTAxMTEnOiAnZCcsXG4gICAgJ1xcdTAxMTInOiAnRScsICAnXFx1MDExNCc6ICdFJywgJ1xcdTAxMTYnOiAnRScsICdcXHUwMTE4JzogJ0UnLCAnXFx1MDExYSc6ICdFJyxcbiAgICAnXFx1MDExMyc6ICdlJywgICdcXHUwMTE1JzogJ2UnLCAnXFx1MDExNyc6ICdlJywgJ1xcdTAxMTknOiAnZScsICdcXHUwMTFiJzogJ2UnLFxuICAgICdcXHUwMTFjJzogJ0cnLCAgJ1xcdTAxMWUnOiAnRycsICdcXHUwMTIwJzogJ0cnLCAnXFx1MDEyMic6ICdHJyxcbiAgICAnXFx1MDExZCc6ICdnJywgICdcXHUwMTFmJzogJ2cnLCAnXFx1MDEyMSc6ICdnJywgJ1xcdTAxMjMnOiAnZycsXG4gICAgJ1xcdTAxMjQnOiAnSCcsICAnXFx1MDEyNic6ICdIJywgJ1xcdTAxMjUnOiAnaCcsICdcXHUwMTI3JzogJ2gnLFxuICAgICdcXHUwMTI4JzogJ0knLCAgJ1xcdTAxMmEnOiAnSScsICdcXHUwMTJjJzogJ0knLCAnXFx1MDEyZSc6ICdJJywgJ1xcdTAxMzAnOiAnSScsXG4gICAgJ1xcdTAxMjknOiAnaScsICAnXFx1MDEyYic6ICdpJywgJ1xcdTAxMmQnOiAnaScsICdcXHUwMTJmJzogJ2knLCAnXFx1MDEzMSc6ICdpJyxcbiAgICAnXFx1MDEzNCc6ICdKJywgICdcXHUwMTM1JzogJ2onLFxuICAgICdcXHUwMTM2JzogJ0snLCAgJ1xcdTAxMzcnOiAnaycsICdcXHUwMTM4JzogJ2snLFxuICAgICdcXHUwMTM5JzogJ0wnLCAgJ1xcdTAxM2InOiAnTCcsICdcXHUwMTNkJzogJ0wnLCAnXFx1MDEzZic6ICdMJywgJ1xcdTAxNDEnOiAnTCcsXG4gICAgJ1xcdTAxM2EnOiAnbCcsICAnXFx1MDEzYyc6ICdsJywgJ1xcdTAxM2UnOiAnbCcsICdcXHUwMTQwJzogJ2wnLCAnXFx1MDE0Mic6ICdsJyxcbiAgICAnXFx1MDE0Myc6ICdOJywgICdcXHUwMTQ1JzogJ04nLCAnXFx1MDE0Nyc6ICdOJywgJ1xcdTAxNGEnOiAnTicsXG4gICAgJ1xcdTAxNDQnOiAnbicsICAnXFx1MDE0Nic6ICduJywgJ1xcdTAxNDgnOiAnbicsICdcXHUwMTRiJzogJ24nLFxuICAgICdcXHUwMTRjJzogJ08nLCAgJ1xcdTAxNGUnOiAnTycsICdcXHUwMTUwJzogJ08nLFxuICAgICdcXHUwMTRkJzogJ28nLCAgJ1xcdTAxNGYnOiAnbycsICdcXHUwMTUxJzogJ28nLFxuICAgICdcXHUwMTU0JzogJ1InLCAgJ1xcdTAxNTYnOiAnUicsICdcXHUwMTU4JzogJ1InLFxuICAgICdcXHUwMTU1JzogJ3InLCAgJ1xcdTAxNTcnOiAncicsICdcXHUwMTU5JzogJ3InLFxuICAgICdcXHUwMTVhJzogJ1MnLCAgJ1xcdTAxNWMnOiAnUycsICdcXHUwMTVlJzogJ1MnLCAnXFx1MDE2MCc6ICdTJyxcbiAgICAnXFx1MDE1Yic6ICdzJywgICdcXHUwMTVkJzogJ3MnLCAnXFx1MDE1Zic6ICdzJywgJ1xcdTAxNjEnOiAncycsXG4gICAgJ1xcdTAxNjInOiAnVCcsICAnXFx1MDE2NCc6ICdUJywgJ1xcdTAxNjYnOiAnVCcsXG4gICAgJ1xcdTAxNjMnOiAndCcsICAnXFx1MDE2NSc6ICd0JywgJ1xcdTAxNjcnOiAndCcsXG4gICAgJ1xcdTAxNjgnOiAnVScsICAnXFx1MDE2YSc6ICdVJywgJ1xcdTAxNmMnOiAnVScsICdcXHUwMTZlJzogJ1UnLCAnXFx1MDE3MCc6ICdVJywgJ1xcdTAxNzInOiAnVScsXG4gICAgJ1xcdTAxNjknOiAndScsICAnXFx1MDE2Yic6ICd1JywgJ1xcdTAxNmQnOiAndScsICdcXHUwMTZmJzogJ3UnLCAnXFx1MDE3MSc6ICd1JywgJ1xcdTAxNzMnOiAndScsXG4gICAgJ1xcdTAxNzQnOiAnVycsICAnXFx1MDE3NSc6ICd3JyxcbiAgICAnXFx1MDE3Nic6ICdZJywgICdcXHUwMTc3JzogJ3knLCAnXFx1MDE3OCc6ICdZJyxcbiAgICAnXFx1MDE3OSc6ICdaJywgICdcXHUwMTdiJzogJ1onLCAnXFx1MDE3ZCc6ICdaJyxcbiAgICAnXFx1MDE3YSc6ICd6JywgICdcXHUwMTdjJzogJ3onLCAnXFx1MDE3ZSc6ICd6JyxcbiAgICAnXFx1MDEzMic6ICdJSicsICdcXHUwMTMzJzogJ2lqJyxcbiAgICAnXFx1MDE1Mic6ICdPZScsICdcXHUwMTUzJzogJ29lJyxcbiAgICAnXFx1MDE0OSc6IFwiJ25cIiwgJ1xcdTAxN2YnOiAncydcbiAgfTtcblxuICAvKiogVXNlZCB0byBtYXAgY2hhcmFjdGVycyB0byBIVE1MIGVudGl0aWVzLiAqL1xuICB2YXIgaHRtbEVzY2FwZXMgPSB7XG4gICAgJyYnOiAnJmFtcDsnLFxuICAgICc8JzogJyZsdDsnLFxuICAgICc+JzogJyZndDsnLFxuICAgICdcIic6ICcmcXVvdDsnLFxuICAgIFwiJ1wiOiAnJiMzOTsnXG4gIH07XG5cbiAgLyoqIFVzZWQgdG8gbWFwIEhUTUwgZW50aXRpZXMgdG8gY2hhcmFjdGVycy4gKi9cbiAgdmFyIGh0bWxVbmVzY2FwZXMgPSB7XG4gICAgJyZhbXA7JzogJyYnLFxuICAgICcmbHQ7JzogJzwnLFxuICAgICcmZ3Q7JzogJz4nLFxuICAgICcmcXVvdDsnOiAnXCInLFxuICAgICcmIzM5Oyc6IFwiJ1wiXG4gIH07XG5cbiAgLyoqIFVzZWQgdG8gZXNjYXBlIGNoYXJhY3RlcnMgZm9yIGluY2x1c2lvbiBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuICovXG4gIHZhciBzdHJpbmdFc2NhcGVzID0ge1xuICAgICdcXFxcJzogJ1xcXFwnLFxuICAgIFwiJ1wiOiBcIidcIixcbiAgICAnXFxuJzogJ24nLFxuICAgICdcXHInOiAncicsXG4gICAgJ1xcdTIwMjgnOiAndTIwMjgnLFxuICAgICdcXHUyMDI5JzogJ3UyMDI5J1xuICB9O1xuXG4gIC8qKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB3aXRob3V0IGEgZGVwZW5kZW5jeSBvbiBgcm9vdGAuICovXG4gIHZhciBmcmVlUGFyc2VGbG9hdCA9IHBhcnNlRmxvYXQsXG4gICAgICBmcmVlUGFyc2VJbnQgPSBwYXJzZUludDtcblxuICAvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xuICB2YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbiAgLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbiAgdmFyIGZyZWVTZWxmID0gdHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZiAmJiBzZWxmLk9iamVjdCA9PT0gT2JqZWN0ICYmIHNlbGY7XG5cbiAgLyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG4gIHZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG4gIC8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG4gIHZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuICAvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG4gIHZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbiAgLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbiAgdmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbiAgLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBwcm9jZXNzYCBmcm9tIE5vZGUuanMuICovXG4gIHZhciBmcmVlUHJvY2VzcyA9IG1vZHVsZUV4cG9ydHMgJiYgZnJlZUdsb2JhbC5wcm9jZXNzO1xuXG4gIC8qKiBVc2VkIHRvIGFjY2VzcyBmYXN0ZXIgTm9kZS5qcyBoZWxwZXJzLiAqL1xuICB2YXIgbm9kZVV0aWwgPSAoZnVuY3Rpb24oKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFVzZSBgdXRpbC50eXBlc2AgZm9yIE5vZGUuanMgMTArLlxuICAgICAgdmFyIHR5cGVzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlKCd1dGlsJykudHlwZXM7XG5cbiAgICAgIGlmICh0eXBlcykge1xuICAgICAgICByZXR1cm4gdHlwZXM7XG4gICAgICB9XG5cbiAgICAgIC8vIExlZ2FjeSBgcHJvY2Vzcy5iaW5kaW5nKCd1dGlsJylgIGZvciBOb2RlLmpzIDwgMTAuXG4gICAgICByZXR1cm4gZnJlZVByb2Nlc3MgJiYgZnJlZVByb2Nlc3MuYmluZGluZyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nKCd1dGlsJyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfSgpKTtcblxuICAvKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xuICB2YXIgbm9kZUlzQXJyYXlCdWZmZXIgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc0FycmF5QnVmZmVyLFxuICAgICAgbm9kZUlzRGF0ZSA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzRGF0ZSxcbiAgICAgIG5vZGVJc01hcCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzTWFwLFxuICAgICAgbm9kZUlzUmVnRXhwID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNSZWdFeHAsXG4gICAgICBub2RlSXNTZXQgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1NldCxcbiAgICAgIG5vZGVJc1R5cGVkQXJyYXkgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1R5cGVkQXJyYXk7XG5cbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgLyoqXG4gICAqIEEgZmFzdGVyIGFsdGVybmF0aXZlIHRvIGBGdW5jdGlvbiNhcHBseWAsIHRoaXMgZnVuY3Rpb24gaW52b2tlcyBgZnVuY2BcbiAgICogd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgYHRoaXNBcmdgIGFuZCB0aGUgYXJndW1lbnRzIG9mIGBhcmdzYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICAgKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuXG4gICAqL1xuICBmdW5jdGlvbiBhcHBseShmdW5jLCB0aGlzQXJnLCBhcmdzKSB7XG4gICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgY2FzZSAwOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcpO1xuICAgICAgY2FzZSAxOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0pO1xuICAgICAgY2FzZSAyOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgICAgY2FzZSAzOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgIH1cbiAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VBZ2dyZWdhdG9yYCBmb3IgYXJyYXlzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGBhY2N1bXVsYXRvcmAgdmFsdWVzLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCBhZ2dyZWdhdGVkIG9iamVjdC5cbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBhY2N1bXVsYXRvcmAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUFnZ3JlZ2F0b3IoYXJyYXksIHNldHRlciwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgIHNldHRlcihhY2N1bXVsYXRvciwgdmFsdWUsIGl0ZXJhdGVlKHZhbHVlKSwgYXJyYXkpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZvckVhY2hgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlFYWNoKGFycmF5LCBpdGVyYXRlZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5mb3JFYWNoUmlnaHRgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlFYWNoUmlnaHQoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICBpZiAoaXRlcmF0ZWUoYXJyYXlbbGVuZ3RoXSwgbGVuZ3RoLCBhcnJheSkgPT09IGZhbHNlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmV2ZXJ5YCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFsbCBlbGVtZW50cyBwYXNzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gICAqICBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUV2ZXJ5KGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKCFwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZpbHRlcmAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlGaWx0ZXIoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5pbmNsdWRlc2AgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIHNwZWNpZnlpbmcgYW4gaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0gdGFyZ2V0IFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHRhcmdldGAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5SW5jbHVkZXMoYXJyYXksIHZhbHVlKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgIHJldHVybiAhIWxlbmd0aCAmJiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIDApID4gLTE7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBhcnJheUluY2x1ZGVzYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGEgY29tcGFyYXRvci5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB0YXJnZXQgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB0YXJnZXRgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUluY2x1ZGVzV2l0aChhcnJheSwgdmFsdWUsIGNvbXBhcmF0b3IpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGNvbXBhcmF0b3IodmFsdWUsIGFycmF5W2luZGV4XSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWFwYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAgICogc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheU1hcChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBlbmRzIHRoZSBlbGVtZW50cyBvZiBgdmFsdWVzYCB0byBgYXJyYXlgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhcHBlbmQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlQdXNoKGFycmF5LCB2YWx1ZXMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgICAgb2Zmc2V0ID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGFycmF5W29mZnNldCArIGluZGV4XSA9IHZhbHVlc1tpbmRleF07XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ucmVkdWNlYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2luaXRBY2N1bV0gU3BlY2lmeSB1c2luZyB0aGUgZmlyc3QgZWxlbWVudCBvZiBgYXJyYXlgIGFzXG4gICAqICB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlSZWR1Y2UoYXJyYXksIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgaWYgKGluaXRBY2N1bSAmJiBsZW5ndGgpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gYXJyYXlbKytpbmRleF07XG4gICAgfVxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCBhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSk7XG4gICAgfVxuICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ucmVkdWNlUmlnaHRgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHBhcmFtIHtib29sZWFufSBbaW5pdEFjY3VtXSBTcGVjaWZ5IHVzaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgYGFycmF5YCBhc1xuICAgKiAgdGhlIGluaXRpYWwgdmFsdWUuXG4gICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5UmVkdWNlUmlnaHQoYXJyYXksIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgIGlmIChpbml0QWNjdW0gJiYgbGVuZ3RoKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGFycmF5Wy0tbGVuZ3RoXTtcbiAgICB9XG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCBhcnJheVtsZW5ndGhdLCBsZW5ndGgsIGFycmF5KTtcbiAgICB9XG4gICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zb21lYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAgICogc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlTb21lKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzaXplIG9mIGFuIEFTQ0lJIGBzdHJpbmdgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgaW5zcGVjdC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3RyaW5nIHNpemUuXG4gICAqL1xuICB2YXIgYXNjaWlTaXplID0gYmFzZVByb3BlcnR5KCdsZW5ndGgnKTtcblxuICAvKipcbiAgICogQ29udmVydHMgYW4gQVNDSUkgYHN0cmluZ2AgdG8gYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAgICovXG4gIGZ1bmN0aW9uIGFzY2lpVG9BcnJheShzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyaW5nLnNwbGl0KCcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdHMgYW4gQVNDSUkgYHN0cmluZ2AgaW50byBhbiBhcnJheSBvZiBpdHMgd29yZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgd29yZHMgb2YgYHN0cmluZ2AuXG4gICAqL1xuICBmdW5jdGlvbiBhc2NpaVdvcmRzKHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcubWF0Y2gocmVBc2NpaVdvcmQpIHx8IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5maW5kS2V5YCBhbmQgYF8uZmluZExhc3RLZXlgLFxuICAgKiB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMsIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYGNvbGxlY3Rpb25gXG4gICAqIHVzaW5nIGBlYWNoRnVuY2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGBjb2xsZWN0aW9uYC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZvdW5kIGVsZW1lbnQgb3IgaXRzIGtleSwgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VGaW5kS2V5KGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZWFjaEZ1bmMpIHtcbiAgICB2YXIgcmVzdWx0O1xuICAgIGVhY2hGdW5jKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGtleSwgY29sbGVjdGlvbikpIHtcbiAgICAgICAgcmVzdWx0ID0ga2V5O1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maW5kSW5kZXhgIGFuZCBgXy5maW5kTGFzdEluZGV4YCB3aXRob3V0XG4gICAqIHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZUZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgsIGZyb21SaWdodCkge1xuICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgIGluZGV4ID0gZnJvbUluZGV4ICsgKGZyb21SaWdodCA/IDEgOiAtMSk7XG5cbiAgICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkge1xuICAgICAgaWYgKHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW5kZXhPZmAgd2l0aG91dCBgZnJvbUluZGV4YCBib3VuZHMgY2hlY2tzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWVcbiAgICAgID8gc3RyaWN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleClcbiAgICAgIDogYmFzZUZpbmRJbmRleChhcnJheSwgYmFzZUlzTmFOLCBmcm9tSW5kZXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYmFzZUluZGV4T2ZgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYSBjb21wYXJhdG9yLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VJbmRleE9mV2l0aChhcnJheSwgdmFsdWUsIGZyb21JbmRleCwgY29tcGFyYXRvcikge1xuICAgIHZhciBpbmRleCA9IGZyb21JbmRleCAtIDEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoY29tcGFyYXRvcihhcnJheVtpbmRleF0sIHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hTmAgd2l0aG91dCBzdXBwb3J0IGZvciBudW1iZXIgb2JqZWN0cy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGBOYU5gLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlSXNOYU4odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1lYW5gIGFuZCBgXy5tZWFuQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbWVhbi5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VNZWFuKGFycmF5LCBpdGVyYXRlZSkge1xuICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICByZXR1cm4gbGVuZ3RoID8gKGJhc2VTdW0oYXJyYXksIGl0ZXJhdGVlKSAvIGxlbmd0aCkgOiBOQU47XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVByb3BlcnR5KGtleSkge1xuICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlPZmAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVByb3BlcnR5T2Yob2JqZWN0KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZWR1Y2VgIGFuZCBgXy5yZWR1Y2VSaWdodGAsIHdpdGhvdXQgc3VwcG9ydFxuICAgKiBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcywgd2hpY2ggaXRlcmF0ZXMgb3ZlciBgY29sbGVjdGlvbmAgdXNpbmcgYGVhY2hGdW5jYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0geyp9IGFjY3VtdWxhdG9yIFRoZSBpbml0aWFsIHZhbHVlLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGluaXRBY2N1bSBTcGVjaWZ5IHVzaW5nIHRoZSBmaXJzdCBvciBsYXN0IGVsZW1lbnQgb2ZcbiAgICogIGBjb2xsZWN0aW9uYCBhcyB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZWFjaEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGl0ZXJhdGUgb3ZlciBgY29sbGVjdGlvbmAuXG4gICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VSZWR1Y2UoY29sbGVjdGlvbiwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0sIGVhY2hGdW5jKSB7XG4gICAgZWFjaEZ1bmMoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGluaXRBY2N1bVxuICAgICAgICA/IChpbml0QWNjdW0gPSBmYWxzZSwgdmFsdWUpXG4gICAgICAgIDogaXRlcmF0ZWUoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gICAgfSk7XG4gICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvcnRCeWAgd2hpY2ggdXNlcyBgY29tcGFyZXJgIHRvIGRlZmluZSB0aGVcbiAgICogc29ydCBvcmRlciBvZiBgYXJyYXlgIGFuZCByZXBsYWNlcyBjcml0ZXJpYSBvYmplY3RzIHdpdGggdGhlaXIgY29ycmVzcG9uZGluZ1xuICAgKiB2YWx1ZXMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzb3J0LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJlciBUaGUgZnVuY3Rpb24gdG8gZGVmaW5lIHNvcnQgb3JkZXIuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVNvcnRCeShhcnJheSwgY29tcGFyZXIpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgYXJyYXkuc29ydChjb21wYXJlcik7XG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICBhcnJheVtsZW5ndGhdID0gYXJyYXlbbGVuZ3RoXS52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnN1bWAgYW5kIGBfLnN1bUJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN1bS5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VTdW0oYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgdmFyIHJlc3VsdCxcbiAgICAgICAgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciBjdXJyZW50ID0gaXRlcmF0ZWUoYXJyYXlbaW5kZXhdKTtcbiAgICAgIGlmIChjdXJyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBjdXJyZW50IDogKHJlc3VsdCArIGN1cnJlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRpbWVzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHNcbiAgICogb3IgbWF4IGFycmF5IGxlbmd0aCBjaGVja3MuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gaW52b2tlIGBpdGVyYXRlZWAuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VUaW1lcyhuLCBpdGVyYXRlZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICByZXN1bHQgPSBBcnJheShuKTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGluZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1BhaXJzYCBhbmQgYF8udG9QYWlyc0luYCB3aGljaCBjcmVhdGVzIGFuIGFycmF5XG4gICAqIG9mIGtleS12YWx1ZSBwYWlycyBmb3IgYG9iamVjdGAgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvcGVydHkgbmFtZXMgb2YgYHByb3BzYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgbmFtZXMgdG8gZ2V0IHZhbHVlcyBmb3IuXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VUb1BhaXJzKG9iamVjdCwgcHJvcHMpIHtcbiAgICByZXR1cm4gYXJyYXlNYXAocHJvcHMsIGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIFtrZXksIG9iamVjdFtrZXldXTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50cmltYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVRyaW0oc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZ1xuICAgICAgPyBzdHJpbmcuc2xpY2UoMCwgdHJpbW1lZEVuZEluZGV4KHN0cmluZykgKyAxKS5yZXBsYWNlKHJlVHJpbVN0YXJ0LCAnJylcbiAgICAgIDogc3RyaW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuYXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIHN0b3JpbmcgbWV0YWRhdGEuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlVW5hcnkoZnVuYykge1xuICAgIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udmFsdWVzYCBhbmQgYF8udmFsdWVzSW5gIHdoaWNoIGNyZWF0ZXMgYW5cbiAgICogYXJyYXkgb2YgYG9iamVjdGAgcHJvcGVydHkgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByb3BlcnR5IG5hbWVzXG4gICAqIG9mIGBwcm9wc2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGdldCB2YWx1ZXMgZm9yLlxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlVmFsdWVzKG9iamVjdCwgcHJvcHMpIHtcbiAgICByZXR1cm4gYXJyYXlNYXAocHJvcHMsIGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIG9iamVjdFtrZXldO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIGBjYWNoZWAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IGNhY2hlIFRoZSBjYWNoZSB0byBxdWVyeS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGNhY2hlSGFzKGNhY2hlLCBrZXkpIHtcbiAgICByZXR1cm4gY2FjaGUuaGFzKGtleSk7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBieSBgXy50cmltYCBhbmQgYF8udHJpbVN0YXJ0YCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBzdHJpbmcgc3ltYm9sXG4gICAqIHRoYXQgaXMgbm90IGZvdW5kIGluIHRoZSBjaGFyYWN0ZXIgc3ltYm9scy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gc3RyU3ltYm9scyBUaGUgc3RyaW5nIHN5bWJvbHMgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHtBcnJheX0gY2hyU3ltYm9scyBUaGUgY2hhcmFjdGVyIHN5bWJvbHMgdG8gZmluZC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IHVubWF0Y2hlZCBzdHJpbmcgc3ltYm9sLlxuICAgKi9cbiAgZnVuY3Rpb24gY2hhcnNTdGFydEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gc3RyU3ltYm9scy5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCAmJiBiYXNlSW5kZXhPZihjaHJTeW1ib2xzLCBzdHJTeW1ib2xzW2luZGV4XSwgMCkgPiAtMSkge31cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBieSBgXy50cmltYCBhbmQgYF8udHJpbUVuZGAgdG8gZ2V0IHRoZSBpbmRleCBvZiB0aGUgbGFzdCBzdHJpbmcgc3ltYm9sXG4gICAqIHRoYXQgaXMgbm90IGZvdW5kIGluIHRoZSBjaGFyYWN0ZXIgc3ltYm9scy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gc3RyU3ltYm9scyBUaGUgc3RyaW5nIHN5bWJvbHMgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHtBcnJheX0gY2hyU3ltYm9scyBUaGUgY2hhcmFjdGVyIHN5bWJvbHMgdG8gZmluZC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGxhc3QgdW5tYXRjaGVkIHN0cmluZyBzeW1ib2wuXG4gICAqL1xuICBmdW5jdGlvbiBjaGFyc0VuZEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpIHtcbiAgICB2YXIgaW5kZXggPSBzdHJTeW1ib2xzLmxlbmd0aDtcblxuICAgIHdoaWxlIChpbmRleC0tICYmIGJhc2VJbmRleE9mKGNoclN5bWJvbHMsIHN0clN5bWJvbHNbaW5kZXhdLCAwKSA+IC0xKSB7fVxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBudW1iZXIgb2YgYHBsYWNlaG9sZGVyYCBvY2N1cnJlbmNlcyBpbiBgYXJyYXlgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSBwbGFjZWhvbGRlciBUaGUgcGxhY2Vob2xkZXIgdG8gc2VhcmNoIGZvci5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcGxhY2Vob2xkZXIgY291bnQuXG4gICAqL1xuICBmdW5jdGlvbiBjb3VudEhvbGRlcnMoYXJyYXksIHBsYWNlaG9sZGVyKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgcmVzdWx0ID0gMDtcblxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgaWYgKGFycmF5W2xlbmd0aF0gPT09IHBsYWNlaG9sZGVyKSB7XG4gICAgICAgICsrcmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8uZGVidXJyYCB0byBjb252ZXJ0IExhdGluLTEgU3VwcGxlbWVudCBhbmQgTGF0aW4gRXh0ZW5kZWQtQVxuICAgKiBsZXR0ZXJzIHRvIGJhc2ljIExhdGluIGxldHRlcnMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsZXR0ZXIgVGhlIG1hdGNoZWQgbGV0dGVyIHRvIGRlYnVyci5cbiAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZGVidXJyZWQgbGV0dGVyLlxuICAgKi9cbiAgdmFyIGRlYnVyckxldHRlciA9IGJhc2VQcm9wZXJ0eU9mKGRlYnVycmVkTGV0dGVycyk7XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8uZXNjYXBlYCB0byBjb252ZXJ0IGNoYXJhY3RlcnMgdG8gSFRNTCBlbnRpdGllcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNociBUaGUgbWF0Y2hlZCBjaGFyYWN0ZXIgdG8gZXNjYXBlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIGNoYXJhY3Rlci5cbiAgICovXG4gIHZhciBlc2NhcGVIdG1sQ2hhciA9IGJhc2VQcm9wZXJ0eU9mKGh0bWxFc2NhcGVzKTtcblxuICAvKipcbiAgICogVXNlZCBieSBgXy50ZW1wbGF0ZWAgdG8gZXNjYXBlIGNoYXJhY3RlcnMgZm9yIGluY2x1c2lvbiBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaHIgVGhlIG1hdGNoZWQgY2hhcmFjdGVyIHRvIGVzY2FwZS5cbiAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZXNjYXBlZCBjaGFyYWN0ZXIuXG4gICAqL1xuICBmdW5jdGlvbiBlc2NhcGVTdHJpbmdDaGFyKGNocikge1xuICAgIHJldHVybiAnXFxcXCcgKyBzdHJpbmdFc2NhcGVzW2Nocl07XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0VmFsdWUob2JqZWN0LCBrZXkpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYHN0cmluZ2AgY29udGFpbnMgVW5pY29kZSBzeW1ib2xzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGEgc3ltYm9sIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBoYXNVbmljb2RlKHN0cmluZykge1xuICAgIHJldHVybiByZUhhc1VuaWNvZGUudGVzdChzdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBgc3RyaW5nYCBjb250YWlucyBhIHdvcmQgY29tcG9zZWQgb2YgVW5pY29kZSBzeW1ib2xzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGEgd29yZCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gaGFzVW5pY29kZVdvcmQoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHJlSGFzVW5pY29kZVdvcmQudGVzdChzdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBpdGVyYXRvcmAgdG8gYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBpdGVyYXRvciBUaGUgaXRlcmF0b3IgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBpdGVyYXRvclRvQXJyYXkoaXRlcmF0b3IpIHtcbiAgICB2YXIgZGF0YSxcbiAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICB3aGlsZSAoIShkYXRhID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICByZXN1bHQucHVzaChkYXRhLnZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBgbWFwYCB0byBpdHMga2V5LXZhbHVlIHBhaXJzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gICAqL1xuICBmdW5jdGlvbiBtYXBUb0FycmF5KG1hcCkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICByZXN1bHQgPSBBcnJheShtYXAuc2l6ZSk7XG5cbiAgICBtYXAuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICByZXN1bHRbKytpbmRleF0gPSBba2V5LCB2YWx1ZV07XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm0uXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gb3ZlckFyZyhmdW5jLCB0cmFuc2Zvcm0pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oYXJnKSB7XG4gICAgICByZXR1cm4gZnVuYyh0cmFuc2Zvcm0oYXJnKSk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhbGwgYHBsYWNlaG9sZGVyYCBlbGVtZW50cyBpbiBgYXJyYXlgIHdpdGggYW4gaW50ZXJuYWwgcGxhY2Vob2xkZXJcbiAgICogYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdGhlaXIgaW5kZXhlcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICogQHBhcmFtIHsqfSBwbGFjZWhvbGRlciBUaGUgcGxhY2Vob2xkZXIgdG8gcmVwbGFjZS5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICovXG4gIGZ1bmN0aW9uIHJlcGxhY2VIb2xkZXJzKGFycmF5LCBwbGFjZWhvbGRlcikge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgaWYgKHZhbHVlID09PSBwbGFjZWhvbGRlciB8fCB2YWx1ZSA9PT0gUExBQ0VIT0xERVIpIHtcbiAgICAgICAgYXJyYXlbaW5kZXhdID0gUExBQ0VIT0xERVI7XG4gICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBzZXRgIHRvIGFuIGFycmF5IG9mIGl0cyB2YWx1ZXMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBzZXQgVGhlIHNldCB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHZhbHVlcy5cbiAgICovXG4gIGZ1bmN0aW9uIHNldFRvQXJyYXkoc2V0KSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIHJlc3VsdCA9IEFycmF5KHNldC5zaXplKTtcblxuICAgIHNldC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXN1bHRbKytpbmRleF0gPSB2YWx1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBzZXRgIHRvIGl0cyB2YWx1ZS12YWx1ZSBwYWlycy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IHNldCBUaGUgc2V0IHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgdmFsdWUtdmFsdWUgcGFpcnMuXG4gICAqL1xuICBmdW5jdGlvbiBzZXRUb1BhaXJzKHNldCkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICByZXN1bHQgPSBBcnJheShzZXQuc2l6ZSk7XG5cbiAgICBzZXQuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgcmVzdWx0WysraW5kZXhdID0gW3ZhbHVlLCB2YWx1ZV07XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uaW5kZXhPZmAgd2hpY2ggcGVyZm9ybXMgc3RyaWN0IGVxdWFsaXR5XG4gICAqIGNvbXBhcmlzb25zIG9mIHZhbHVlcywgaS5lLiBgPT09YC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgKi9cbiAgZnVuY3Rpb24gc3RyaWN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgIHZhciBpbmRleCA9IGZyb21JbmRleCAtIDEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoYXJyYXlbaW5kZXhdID09PSB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubGFzdEluZGV4T2ZgIHdoaWNoIHBlcmZvcm1zIHN0cmljdCBlcXVhbGl0eVxuICAgKiBjb21wYXJpc29ucyBvZiB2YWx1ZXMsIGkuZS4gYD09PWAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICovXG4gIGZ1bmN0aW9uIHN0cmljdExhc3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgdmFyIGluZGV4ID0gZnJvbUluZGV4ICsgMTtcbiAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgaWYgKGFycmF5W2luZGV4XSA9PT0gdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgbnVtYmVyIG9mIHN5bWJvbHMgaW4gYHN0cmluZ2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdHJpbmcgc2l6ZS5cbiAgICovXG4gIGZ1bmN0aW9uIHN0cmluZ1NpemUoc3RyaW5nKSB7XG4gICAgcmV0dXJuIGhhc1VuaWNvZGUoc3RyaW5nKVxuICAgICAgPyB1bmljb2RlU2l6ZShzdHJpbmcpXG4gICAgICA6IGFzY2lpU2l6ZShzdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBzdHJpbmdUb0FycmF5KHN0cmluZykge1xuICAgIHJldHVybiBoYXNVbmljb2RlKHN0cmluZylcbiAgICAgID8gdW5pY29kZVRvQXJyYXkoc3RyaW5nKVxuICAgICAgOiBhc2NpaVRvQXJyYXkoc3RyaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLnRyaW1gIGFuZCBgXy50cmltRW5kYCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG5vbi13aGl0ZXNwYWNlXG4gICAqIGNoYXJhY3RlciBvZiBgc3RyaW5nYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG5vbi13aGl0ZXNwYWNlIGNoYXJhY3Rlci5cbiAgICovXG4gIGZ1bmN0aW9uIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpIHtcbiAgICB2YXIgaW5kZXggPSBzdHJpbmcubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGluZGV4LS0gJiYgcmVXaGl0ZXNwYWNlLnRlc3Qoc3RyaW5nLmNoYXJBdChpbmRleCkpKSB7fVxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLnVuZXNjYXBlYCB0byBjb252ZXJ0IEhUTUwgZW50aXRpZXMgdG8gY2hhcmFjdGVycy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNociBUaGUgbWF0Y2hlZCBjaGFyYWN0ZXIgdG8gdW5lc2NhcGUuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuZXNjYXBlZCBjaGFyYWN0ZXIuXG4gICAqL1xuICB2YXIgdW5lc2NhcGVIdG1sQ2hhciA9IGJhc2VQcm9wZXJ0eU9mKGh0bWxVbmVzY2FwZXMpO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzaXplIG9mIGEgVW5pY29kZSBgc3RyaW5nYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN0cmluZyBzaXplLlxuICAgKi9cbiAgZnVuY3Rpb24gdW5pY29kZVNpemUoc3RyaW5nKSB7XG4gICAgdmFyIHJlc3VsdCA9IHJlVW5pY29kZS5sYXN0SW5kZXggPSAwO1xuICAgIHdoaWxlIChyZVVuaWNvZGUudGVzdChzdHJpbmcpKSB7XG4gICAgICArK3Jlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIFVuaWNvZGUgYHN0cmluZ2AgdG8gYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAgICovXG4gIGZ1bmN0aW9uIHVuaWNvZGVUb0FycmF5KHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcubWF0Y2gocmVVbmljb2RlKSB8fCBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdHMgYSBVbmljb2RlIGBzdHJpbmdgIGludG8gYW4gYXJyYXkgb2YgaXRzIHdvcmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHdvcmRzIG9mIGBzdHJpbmdgLlxuICAgKi9cbiAgZnVuY3Rpb24gdW5pY29kZVdvcmRzKHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcubWF0Y2gocmVVbmljb2RlV29yZCkgfHwgW107XG4gIH1cblxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHByaXN0aW5lIGBsb2Rhc2hgIGZ1bmN0aW9uIHVzaW5nIHRoZSBgY29udGV4dGAgb2JqZWN0LlxuICAgKlxuICAgKiBAc3RhdGljXG4gICAqIEBtZW1iZXJPZiBfXG4gICAqIEBzaW5jZSAxLjEuMFxuICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgKiBAcGFyYW0ge09iamVjdH0gW2NvbnRleHQ9cm9vdF0gVGhlIGNvbnRleHQgb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYSBuZXcgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIF8ubWl4aW4oeyAnZm9vJzogXy5jb25zdGFudCgnZm9vJykgfSk7XG4gICAqXG4gICAqIHZhciBsb2Rhc2ggPSBfLnJ1bkluQ29udGV4dCgpO1xuICAgKiBsb2Rhc2gubWl4aW4oeyAnYmFyJzogbG9kYXNoLmNvbnN0YW50KCdiYXInKSB9KTtcbiAgICpcbiAgICogXy5pc0Z1bmN0aW9uKF8uZm9vKTtcbiAgICogLy8gPT4gdHJ1ZVxuICAgKiBfLmlzRnVuY3Rpb24oXy5iYXIpO1xuICAgKiAvLyA9PiBmYWxzZVxuICAgKlxuICAgKiBsb2Rhc2guaXNGdW5jdGlvbihsb2Rhc2guZm9vKTtcbiAgICogLy8gPT4gZmFsc2VcbiAgICogbG9kYXNoLmlzRnVuY3Rpb24obG9kYXNoLmJhcik7XG4gICAqIC8vID0+IHRydWVcbiAgICpcbiAgICogLy8gQ3JlYXRlIGEgc3VwZWQtdXAgYGRlZmVyYCBpbiBOb2RlLmpzLlxuICAgKiB2YXIgZGVmZXIgPSBfLnJ1bkluQ29udGV4dCh7ICdzZXRUaW1lb3V0Jzogc2V0SW1tZWRpYXRlIH0pLmRlZmVyO1xuICAgKi9cbiAgdmFyIHJ1bkluQ29udGV4dCA9IChmdW5jdGlvbiBydW5JbkNvbnRleHQoY29udGV4dCkge1xuICAgIGNvbnRleHQgPSBjb250ZXh0ID09IG51bGwgPyByb290IDogXy5kZWZhdWx0cyhyb290Lk9iamVjdCgpLCBjb250ZXh0LCBfLnBpY2socm9vdCwgY29udGV4dFByb3BzKSk7XG5cbiAgICAvKiogQnVpbHQtaW4gY29uc3RydWN0b3IgcmVmZXJlbmNlcy4gKi9cbiAgICB2YXIgQXJyYXkgPSBjb250ZXh0LkFycmF5LFxuICAgICAgICBEYXRlID0gY29udGV4dC5EYXRlLFxuICAgICAgICBFcnJvciA9IGNvbnRleHQuRXJyb3IsXG4gICAgICAgIEZ1bmN0aW9uID0gY29udGV4dC5GdW5jdGlvbixcbiAgICAgICAgTWF0aCA9IGNvbnRleHQuTWF0aCxcbiAgICAgICAgT2JqZWN0ID0gY29udGV4dC5PYmplY3QsXG4gICAgICAgIFJlZ0V4cCA9IGNvbnRleHQuUmVnRXhwLFxuICAgICAgICBTdHJpbmcgPSBjb250ZXh0LlN0cmluZyxcbiAgICAgICAgVHlwZUVycm9yID0gY29udGV4dC5UeXBlRXJyb3I7XG5cbiAgICAvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG4gICAgdmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGUsXG4gICAgICAgIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcbiAgICAgICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4gICAgLyoqIFVzZWQgdG8gZGV0ZWN0IG92ZXJyZWFjaGluZyBjb3JlLWpzIHNoaW1zLiAqL1xuICAgIHZhciBjb3JlSnNEYXRhID0gY29udGV4dFsnX19jb3JlLWpzX3NoYXJlZF9fJ107XG5cbiAgICAvKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG4gICAgdmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuICAgIC8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xuICAgIHZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4gICAgLyoqIFVzZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIElEcy4gKi9cbiAgICB2YXIgaWRDb3VudGVyID0gMDtcblxuICAgIC8qKiBVc2VkIHRvIGRldGVjdCBtZXRob2RzIG1hc3F1ZXJhZGluZyBhcyBuYXRpdmUuICovXG4gICAgdmFyIG1hc2tTcmNLZXkgPSAoZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdWlkID0gL1teLl0rJC8uZXhlYyhjb3JlSnNEYXRhICYmIGNvcmVKc0RhdGEua2V5cyAmJiBjb3JlSnNEYXRhLmtleXMuSUVfUFJPVE8gfHwgJycpO1xuICAgICAgcmV0dXJuIHVpZCA/ICgnU3ltYm9sKHNyYylfMS4nICsgdWlkKSA6ICcnO1xuICAgIH0oKSk7XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gICAgICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gICAgICogb2YgdmFsdWVzLlxuICAgICAqL1xuICAgIHZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4gICAgLyoqIFVzZWQgdG8gaW5mZXIgdGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yLiAqL1xuICAgIHZhciBvYmplY3RDdG9yU3RyaW5nID0gZnVuY1RvU3RyaW5nLmNhbGwoT2JqZWN0KTtcblxuICAgIC8qKiBVc2VkIHRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIGBfYCByZWZlcmVuY2UgaW4gYF8ubm9Db25mbGljdGAuICovXG4gICAgdmFyIG9sZERhc2ggPSByb290Ll87XG5cbiAgICAvKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xuICAgIHZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArXG4gICAgICBmdW5jVG9TdHJpbmcuY2FsbChoYXNPd25Qcm9wZXJ0eSkucmVwbGFjZShyZVJlZ0V4cENoYXIsICdcXFxcJCYnKVxuICAgICAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4gICAgKTtcblxuICAgIC8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xuICAgIHZhciBCdWZmZXIgPSBtb2R1bGVFeHBvcnRzID8gY29udGV4dC5CdWZmZXIgOiB1bmRlZmluZWQsXG4gICAgICAgIFN5bWJvbCA9IGNvbnRleHQuU3ltYm9sLFxuICAgICAgICBVaW50OEFycmF5ID0gY29udGV4dC5VaW50OEFycmF5LFxuICAgICAgICBhbGxvY1Vuc2FmZSA9IEJ1ZmZlciA/IEJ1ZmZlci5hbGxvY1Vuc2FmZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZ2V0UHJvdG90eXBlID0gb3ZlckFyZyhPYmplY3QuZ2V0UHJvdG90eXBlT2YsIE9iamVjdCksXG4gICAgICAgIG9iamVjdENyZWF0ZSA9IE9iamVjdC5jcmVhdGUsXG4gICAgICAgIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGUsXG4gICAgICAgIHNwbGljZSA9IGFycmF5UHJvdG8uc3BsaWNlLFxuICAgICAgICBzcHJlYWRhYmxlU3ltYm9sID0gU3ltYm9sID8gU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgc3ltSXRlcmF0b3IgPSBTeW1ib2wgPyBTeW1ib2wuaXRlcmF0b3IgOiB1bmRlZmluZWQsXG4gICAgICAgIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4gICAgdmFyIGRlZmluZVByb3BlcnR5ID0gKGZ1bmN0aW9uKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIGZ1bmMgPSBnZXROYXRpdmUoT2JqZWN0LCAnZGVmaW5lUHJvcGVydHknKTtcbiAgICAgICAgZnVuYyh7fSwgJycsIHt9KTtcbiAgICAgICAgcmV0dXJuIGZ1bmM7XG4gICAgICB9IGNhdGNoIChlKSB7fVxuICAgIH0oKSk7XG5cbiAgICAvKiogTW9ja2VkIGJ1aWx0LWlucy4gKi9cbiAgICB2YXIgY3R4Q2xlYXJUaW1lb3V0ID0gY29udGV4dC5jbGVhclRpbWVvdXQgIT09IHJvb3QuY2xlYXJUaW1lb3V0ICYmIGNvbnRleHQuY2xlYXJUaW1lb3V0LFxuICAgICAgICBjdHhOb3cgPSBEYXRlICYmIERhdGUubm93ICE9PSByb290LkRhdGUubm93ICYmIERhdGUubm93LFxuICAgICAgICBjdHhTZXRUaW1lb3V0ID0gY29udGV4dC5zZXRUaW1lb3V0ICE9PSByb290LnNldFRpbWVvdXQgJiYgY29udGV4dC5zZXRUaW1lb3V0O1xuXG4gICAgLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xuICAgIHZhciBuYXRpdmVDZWlsID0gTWF0aC5jZWlsLFxuICAgICAgICBuYXRpdmVGbG9vciA9IE1hdGguZmxvb3IsXG4gICAgICAgIG5hdGl2ZUdldFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLFxuICAgICAgICBuYXRpdmVJc0J1ZmZlciA9IEJ1ZmZlciA/IEJ1ZmZlci5pc0J1ZmZlciA6IHVuZGVmaW5lZCxcbiAgICAgICAgbmF0aXZlSXNGaW5pdGUgPSBjb250ZXh0LmlzRmluaXRlLFxuICAgICAgICBuYXRpdmVKb2luID0gYXJyYXlQcm90by5qb2luLFxuICAgICAgICBuYXRpdmVLZXlzID0gb3ZlckFyZyhPYmplY3Qua2V5cywgT2JqZWN0KSxcbiAgICAgICAgbmF0aXZlTWF4ID0gTWF0aC5tYXgsXG4gICAgICAgIG5hdGl2ZU1pbiA9IE1hdGgubWluLFxuICAgICAgICBuYXRpdmVOb3cgPSBEYXRlLm5vdyxcbiAgICAgICAgbmF0aXZlUGFyc2VJbnQgPSBjb250ZXh0LnBhcnNlSW50LFxuICAgICAgICBuYXRpdmVSYW5kb20gPSBNYXRoLnJhbmRvbSxcbiAgICAgICAgbmF0aXZlUmV2ZXJzZSA9IGFycmF5UHJvdG8ucmV2ZXJzZTtcblxuICAgIC8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbiAgICB2YXIgRGF0YVZpZXcgPSBnZXROYXRpdmUoY29udGV4dCwgJ0RhdGFWaWV3JyksXG4gICAgICAgIE1hcCA9IGdldE5hdGl2ZShjb250ZXh0LCAnTWFwJyksXG4gICAgICAgIFByb21pc2UgPSBnZXROYXRpdmUoY29udGV4dCwgJ1Byb21pc2UnKSxcbiAgICAgICAgU2V0ID0gZ2V0TmF0aXZlKGNvbnRleHQsICdTZXQnKSxcbiAgICAgICAgV2Vha01hcCA9IGdldE5hdGl2ZShjb250ZXh0LCAnV2Vha01hcCcpLFxuICAgICAgICBuYXRpdmVDcmVhdGUgPSBnZXROYXRpdmUoT2JqZWN0LCAnY3JlYXRlJyk7XG5cbiAgICAvKiogVXNlZCB0byBzdG9yZSBmdW5jdGlvbiBtZXRhZGF0YS4gKi9cbiAgICB2YXIgbWV0YU1hcCA9IFdlYWtNYXAgJiYgbmV3IFdlYWtNYXA7XG5cbiAgICAvKiogVXNlZCB0byBsb29rdXAgdW5taW5pZmllZCBmdW5jdGlvbiBuYW1lcy4gKi9cbiAgICB2YXIgcmVhbE5hbWVzID0ge307XG5cbiAgICAvKiogVXNlZCB0byBkZXRlY3QgbWFwcywgc2V0cywgYW5kIHdlYWttYXBzLiAqL1xuICAgIHZhciBkYXRhVmlld0N0b3JTdHJpbmcgPSB0b1NvdXJjZShEYXRhVmlldyksXG4gICAgICAgIG1hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShNYXApLFxuICAgICAgICBwcm9taXNlQ3RvclN0cmluZyA9IHRvU291cmNlKFByb21pc2UpLFxuICAgICAgICBzZXRDdG9yU3RyaW5nID0gdG9Tb3VyY2UoU2V0KSxcbiAgICAgICAgd2Vha01hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShXZWFrTWFwKTtcblxuICAgIC8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xuICAgIHZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgICAgIHN5bWJvbFZhbHVlT2YgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnZhbHVlT2YgOiB1bmRlZmluZWQsXG4gICAgICAgIHN5bWJvbFRvU3RyaW5nID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by50b1N0cmluZyA6IHVuZGVmaW5lZDtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgbG9kYXNoYCBvYmplY3Qgd2hpY2ggd3JhcHMgYHZhbHVlYCB0byBlbmFibGUgaW1wbGljaXQgbWV0aG9kXG4gICAgICogY2hhaW4gc2VxdWVuY2VzLiBNZXRob2RzIHRoYXQgb3BlcmF0ZSBvbiBhbmQgcmV0dXJuIGFycmF5cywgY29sbGVjdGlvbnMsXG4gICAgICogYW5kIGZ1bmN0aW9ucyBjYW4gYmUgY2hhaW5lZCB0b2dldGhlci4gTWV0aG9kcyB0aGF0IHJldHJpZXZlIGEgc2luZ2xlIHZhbHVlXG4gICAgICogb3IgbWF5IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZSB3aWxsIGF1dG9tYXRpY2FsbHkgZW5kIHRoZSBjaGFpbiBzZXF1ZW5jZVxuICAgICAqIGFuZCByZXR1cm4gdGhlIHVud3JhcHBlZCB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgdmFsdWUgbXVzdCBiZSB1bndyYXBwZWRcbiAgICAgKiB3aXRoIGBfI3ZhbHVlYC5cbiAgICAgKlxuICAgICAqIEV4cGxpY2l0IGNoYWluIHNlcXVlbmNlcywgd2hpY2ggbXVzdCBiZSB1bndyYXBwZWQgd2l0aCBgXyN2YWx1ZWAsIG1heSBiZVxuICAgICAqIGVuYWJsZWQgdXNpbmcgYF8uY2hhaW5gLlxuICAgICAqXG4gICAgICogVGhlIGV4ZWN1dGlvbiBvZiBjaGFpbmVkIG1ldGhvZHMgaXMgbGF6eSwgdGhhdCBpcywgaXQncyBkZWZlcnJlZCB1bnRpbFxuICAgICAqIGBfI3ZhbHVlYCBpcyBpbXBsaWNpdGx5IG9yIGV4cGxpY2l0bHkgY2FsbGVkLlxuICAgICAqXG4gICAgICogTGF6eSBldmFsdWF0aW9uIGFsbG93cyBzZXZlcmFsIG1ldGhvZHMgdG8gc3VwcG9ydCBzaG9ydGN1dCBmdXNpb24uXG4gICAgICogU2hvcnRjdXQgZnVzaW9uIGlzIGFuIG9wdGltaXphdGlvbiB0byBtZXJnZSBpdGVyYXRlZSBjYWxsczsgdGhpcyBhdm9pZHNcbiAgICAgKiB0aGUgY3JlYXRpb24gb2YgaW50ZXJtZWRpYXRlIGFycmF5cyBhbmQgY2FuIGdyZWF0bHkgcmVkdWNlIHRoZSBudW1iZXIgb2ZcbiAgICAgKiBpdGVyYXRlZSBleGVjdXRpb25zLiBTZWN0aW9ucyBvZiBhIGNoYWluIHNlcXVlbmNlIHF1YWxpZnkgZm9yIHNob3J0Y3V0XG4gICAgICogZnVzaW9uIGlmIHRoZSBzZWN0aW9uIGlzIGFwcGxpZWQgdG8gYW4gYXJyYXkgYW5kIGl0ZXJhdGVlcyBhY2NlcHQgb25seVxuICAgICAqIG9uZSBhcmd1bWVudC4gVGhlIGhldXJpc3RpYyBmb3Igd2hldGhlciBhIHNlY3Rpb24gcXVhbGlmaWVzIGZvciBzaG9ydGN1dFxuICAgICAqIGZ1c2lvbiBpcyBzdWJqZWN0IHRvIGNoYW5nZS5cbiAgICAgKlxuICAgICAqIENoYWluaW5nIGlzIHN1cHBvcnRlZCBpbiBjdXN0b20gYnVpbGRzIGFzIGxvbmcgYXMgdGhlIGBfI3ZhbHVlYCBtZXRob2QgaXNcbiAgICAgKiBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGluY2x1ZGVkIGluIHRoZSBidWlsZC5cbiAgICAgKlxuICAgICAqIEluIGFkZGl0aW9uIHRvIGxvZGFzaCBtZXRob2RzLCB3cmFwcGVycyBoYXZlIGBBcnJheWAgYW5kIGBTdHJpbmdgIG1ldGhvZHMuXG4gICAgICpcbiAgICAgKiBUaGUgd3JhcHBlciBgQXJyYXlgIG1ldGhvZHMgYXJlOlxuICAgICAqIGBjb25jYXRgLCBgam9pbmAsIGBwb3BgLCBgcHVzaGAsIGBzaGlmdGAsIGBzb3J0YCwgYHNwbGljZWAsIGFuZCBgdW5zaGlmdGBcbiAgICAgKlxuICAgICAqIFRoZSB3cmFwcGVyIGBTdHJpbmdgIG1ldGhvZHMgYXJlOlxuICAgICAqIGByZXBsYWNlYCBhbmQgYHNwbGl0YFxuICAgICAqXG4gICAgICogVGhlIHdyYXBwZXIgbWV0aG9kcyB0aGF0IHN1cHBvcnQgc2hvcnRjdXQgZnVzaW9uIGFyZTpcbiAgICAgKiBgYXRgLCBgY29tcGFjdGAsIGBkcm9wYCwgYGRyb3BSaWdodGAsIGBkcm9wV2hpbGVgLCBgZmlsdGVyYCwgYGZpbmRgLFxuICAgICAqIGBmaW5kTGFzdGAsIGBoZWFkYCwgYGluaXRpYWxgLCBgbGFzdGAsIGBtYXBgLCBgcmVqZWN0YCwgYHJldmVyc2VgLCBgc2xpY2VgLFxuICAgICAqIGB0YWlsYCwgYHRha2VgLCBgdGFrZVJpZ2h0YCwgYHRha2VSaWdodFdoaWxlYCwgYHRha2VXaGlsZWAsIGFuZCBgdG9BcnJheWBcbiAgICAgKlxuICAgICAqIFRoZSBjaGFpbmFibGUgd3JhcHBlciBtZXRob2RzIGFyZTpcbiAgICAgKiBgYWZ0ZXJgLCBgYXJ5YCwgYGFzc2lnbmAsIGBhc3NpZ25JbmAsIGBhc3NpZ25JbldpdGhgLCBgYXNzaWduV2l0aGAsIGBhdGAsXG4gICAgICogYGJlZm9yZWAsIGBiaW5kYCwgYGJpbmRBbGxgLCBgYmluZEtleWAsIGBjYXN0QXJyYXlgLCBgY2hhaW5gLCBgY2h1bmtgLFxuICAgICAqIGBjb21taXRgLCBgY29tcGFjdGAsIGBjb25jYXRgLCBgY29uZm9ybXNgLCBgY29uc3RhbnRgLCBgY291bnRCeWAsIGBjcmVhdGVgLFxuICAgICAqIGBjdXJyeWAsIGBkZWJvdW5jZWAsIGBkZWZhdWx0c2AsIGBkZWZhdWx0c0RlZXBgLCBgZGVmZXJgLCBgZGVsYXlgLFxuICAgICAqIGBkaWZmZXJlbmNlYCwgYGRpZmZlcmVuY2VCeWAsIGBkaWZmZXJlbmNlV2l0aGAsIGBkcm9wYCwgYGRyb3BSaWdodGAsXG4gICAgICogYGRyb3BSaWdodFdoaWxlYCwgYGRyb3BXaGlsZWAsIGBleHRlbmRgLCBgZXh0ZW5kV2l0aGAsIGBmaWxsYCwgYGZpbHRlcmAsXG4gICAgICogYGZsYXRNYXBgLCBgZmxhdE1hcERlZXBgLCBgZmxhdE1hcERlcHRoYCwgYGZsYXR0ZW5gLCBgZmxhdHRlbkRlZXBgLFxuICAgICAqIGBmbGF0dGVuRGVwdGhgLCBgZmxpcGAsIGBmbG93YCwgYGZsb3dSaWdodGAsIGBmcm9tUGFpcnNgLCBgZnVuY3Rpb25zYCxcbiAgICAgKiBgZnVuY3Rpb25zSW5gLCBgZ3JvdXBCeWAsIGBpbml0aWFsYCwgYGludGVyc2VjdGlvbmAsIGBpbnRlcnNlY3Rpb25CeWAsXG4gICAgICogYGludGVyc2VjdGlvbldpdGhgLCBgaW52ZXJ0YCwgYGludmVydEJ5YCwgYGludm9rZU1hcGAsIGBpdGVyYXRlZWAsIGBrZXlCeWAsXG4gICAgICogYGtleXNgLCBga2V5c0luYCwgYG1hcGAsIGBtYXBLZXlzYCwgYG1hcFZhbHVlc2AsIGBtYXRjaGVzYCwgYG1hdGNoZXNQcm9wZXJ0eWAsXG4gICAgICogYG1lbW9pemVgLCBgbWVyZ2VgLCBgbWVyZ2VXaXRoYCwgYG1ldGhvZGAsIGBtZXRob2RPZmAsIGBtaXhpbmAsIGBuZWdhdGVgLFxuICAgICAqIGBudGhBcmdgLCBgb21pdGAsIGBvbWl0QnlgLCBgb25jZWAsIGBvcmRlckJ5YCwgYG92ZXJgLCBgb3ZlckFyZ3NgLFxuICAgICAqIGBvdmVyRXZlcnlgLCBgb3ZlclNvbWVgLCBgcGFydGlhbGAsIGBwYXJ0aWFsUmlnaHRgLCBgcGFydGl0aW9uYCwgYHBpY2tgLFxuICAgICAqIGBwaWNrQnlgLCBgcGxhbnRgLCBgcHJvcGVydHlgLCBgcHJvcGVydHlPZmAsIGBwdWxsYCwgYHB1bGxBbGxgLCBgcHVsbEFsbEJ5YCxcbiAgICAgKiBgcHVsbEFsbFdpdGhgLCBgcHVsbEF0YCwgYHB1c2hgLCBgcmFuZ2VgLCBgcmFuZ2VSaWdodGAsIGByZWFyZ2AsIGByZWplY3RgLFxuICAgICAqIGByZW1vdmVgLCBgcmVzdGAsIGByZXZlcnNlYCwgYHNhbXBsZVNpemVgLCBgc2V0YCwgYHNldFdpdGhgLCBgc2h1ZmZsZWAsXG4gICAgICogYHNsaWNlYCwgYHNvcnRgLCBgc29ydEJ5YCwgYHNwbGljZWAsIGBzcHJlYWRgLCBgdGFpbGAsIGB0YWtlYCwgYHRha2VSaWdodGAsXG4gICAgICogYHRha2VSaWdodFdoaWxlYCwgYHRha2VXaGlsZWAsIGB0YXBgLCBgdGhyb3R0bGVgLCBgdGhydWAsIGB0b0FycmF5YCxcbiAgICAgKiBgdG9QYWlyc2AsIGB0b1BhaXJzSW5gLCBgdG9QYXRoYCwgYHRvUGxhaW5PYmplY3RgLCBgdHJhbnNmb3JtYCwgYHVuYXJ5YCxcbiAgICAgKiBgdW5pb25gLCBgdW5pb25CeWAsIGB1bmlvbldpdGhgLCBgdW5pcWAsIGB1bmlxQnlgLCBgdW5pcVdpdGhgLCBgdW5zZXRgLFxuICAgICAqIGB1bnNoaWZ0YCwgYHVuemlwYCwgYHVuemlwV2l0aGAsIGB1cGRhdGVgLCBgdXBkYXRlV2l0aGAsIGB2YWx1ZXNgLFxuICAgICAqIGB2YWx1ZXNJbmAsIGB3aXRob3V0YCwgYHdyYXBgLCBgeG9yYCwgYHhvckJ5YCwgYHhvcldpdGhgLCBgemlwYCxcbiAgICAgKiBgemlwT2JqZWN0YCwgYHppcE9iamVjdERlZXBgLCBhbmQgYHppcFdpdGhgXG4gICAgICpcbiAgICAgKiBUaGUgd3JhcHBlciBtZXRob2RzIHRoYXQgYXJlICoqbm90KiogY2hhaW5hYmxlIGJ5IGRlZmF1bHQgYXJlOlxuICAgICAqIGBhZGRgLCBgYXR0ZW1wdGAsIGBjYW1lbENhc2VgLCBgY2FwaXRhbGl6ZWAsIGBjZWlsYCwgYGNsYW1wYCwgYGNsb25lYCxcbiAgICAgKiBgY2xvbmVEZWVwYCwgYGNsb25lRGVlcFdpdGhgLCBgY2xvbmVXaXRoYCwgYGNvbmZvcm1zVG9gLCBgZGVidXJyYCxcbiAgICAgKiBgZGVmYXVsdFRvYCwgYGRpdmlkZWAsIGBlYWNoYCwgYGVhY2hSaWdodGAsIGBlbmRzV2l0aGAsIGBlcWAsIGBlc2NhcGVgLFxuICAgICAqIGBlc2NhcGVSZWdFeHBgLCBgZXZlcnlgLCBgZmluZGAsIGBmaW5kSW5kZXhgLCBgZmluZEtleWAsIGBmaW5kTGFzdGAsXG4gICAgICogYGZpbmRMYXN0SW5kZXhgLCBgZmluZExhc3RLZXlgLCBgZmlyc3RgLCBgZmxvb3JgLCBgZm9yRWFjaGAsIGBmb3JFYWNoUmlnaHRgLFxuICAgICAqIGBmb3JJbmAsIGBmb3JJblJpZ2h0YCwgYGZvck93bmAsIGBmb3JPd25SaWdodGAsIGBnZXRgLCBgZ3RgLCBgZ3RlYCwgYGhhc2AsXG4gICAgICogYGhhc0luYCwgYGhlYWRgLCBgaWRlbnRpdHlgLCBgaW5jbHVkZXNgLCBgaW5kZXhPZmAsIGBpblJhbmdlYCwgYGludm9rZWAsXG4gICAgICogYGlzQXJndW1lbnRzYCwgYGlzQXJyYXlgLCBgaXNBcnJheUJ1ZmZlcmAsIGBpc0FycmF5TGlrZWAsIGBpc0FycmF5TGlrZU9iamVjdGAsXG4gICAgICogYGlzQm9vbGVhbmAsIGBpc0J1ZmZlcmAsIGBpc0RhdGVgLCBgaXNFbGVtZW50YCwgYGlzRW1wdHlgLCBgaXNFcXVhbGAsXG4gICAgICogYGlzRXF1YWxXaXRoYCwgYGlzRXJyb3JgLCBgaXNGaW5pdGVgLCBgaXNGdW5jdGlvbmAsIGBpc0ludGVnZXJgLCBgaXNMZW5ndGhgLFxuICAgICAqIGBpc01hcGAsIGBpc01hdGNoYCwgYGlzTWF0Y2hXaXRoYCwgYGlzTmFOYCwgYGlzTmF0aXZlYCwgYGlzTmlsYCwgYGlzTnVsbGAsXG4gICAgICogYGlzTnVtYmVyYCwgYGlzT2JqZWN0YCwgYGlzT2JqZWN0TGlrZWAsIGBpc1BsYWluT2JqZWN0YCwgYGlzUmVnRXhwYCxcbiAgICAgKiBgaXNTYWZlSW50ZWdlcmAsIGBpc1NldGAsIGBpc1N0cmluZ2AsIGBpc1VuZGVmaW5lZGAsIGBpc1R5cGVkQXJyYXlgLFxuICAgICAqIGBpc1dlYWtNYXBgLCBgaXNXZWFrU2V0YCwgYGpvaW5gLCBga2ViYWJDYXNlYCwgYGxhc3RgLCBgbGFzdEluZGV4T2ZgLFxuICAgICAqIGBsb3dlckNhc2VgLCBgbG93ZXJGaXJzdGAsIGBsdGAsIGBsdGVgLCBgbWF4YCwgYG1heEJ5YCwgYG1lYW5gLCBgbWVhbkJ5YCxcbiAgICAgKiBgbWluYCwgYG1pbkJ5YCwgYG11bHRpcGx5YCwgYG5vQ29uZmxpY3RgLCBgbm9vcGAsIGBub3dgLCBgbnRoYCwgYHBhZGAsXG4gICAgICogYHBhZEVuZGAsIGBwYWRTdGFydGAsIGBwYXJzZUludGAsIGBwb3BgLCBgcmFuZG9tYCwgYHJlZHVjZWAsIGByZWR1Y2VSaWdodGAsXG4gICAgICogYHJlcGVhdGAsIGByZXN1bHRgLCBgcm91bmRgLCBgcnVuSW5Db250ZXh0YCwgYHNhbXBsZWAsIGBzaGlmdGAsIGBzaXplYCxcbiAgICAgKiBgc25ha2VDYXNlYCwgYHNvbWVgLCBgc29ydGVkSW5kZXhgLCBgc29ydGVkSW5kZXhCeWAsIGBzb3J0ZWRMYXN0SW5kZXhgLFxuICAgICAqIGBzb3J0ZWRMYXN0SW5kZXhCeWAsIGBzdGFydENhc2VgLCBgc3RhcnRzV2l0aGAsIGBzdHViQXJyYXlgLCBgc3R1YkZhbHNlYCxcbiAgICAgKiBgc3R1Yk9iamVjdGAsIGBzdHViU3RyaW5nYCwgYHN0dWJUcnVlYCwgYHN1YnRyYWN0YCwgYHN1bWAsIGBzdW1CeWAsXG4gICAgICogYHRlbXBsYXRlYCwgYHRpbWVzYCwgYHRvRmluaXRlYCwgYHRvSW50ZWdlcmAsIGB0b0pTT05gLCBgdG9MZW5ndGhgLFxuICAgICAqIGB0b0xvd2VyYCwgYHRvTnVtYmVyYCwgYHRvU2FmZUludGVnZXJgLCBgdG9TdHJpbmdgLCBgdG9VcHBlcmAsIGB0cmltYCxcbiAgICAgKiBgdHJpbUVuZGAsIGB0cmltU3RhcnRgLCBgdHJ1bmNhdGVgLCBgdW5lc2NhcGVgLCBgdW5pcXVlSWRgLCBgdXBwZXJDYXNlYCxcbiAgICAgKiBgdXBwZXJGaXJzdGAsIGB2YWx1ZWAsIGFuZCBgd29yZHNgXG4gICAgICpcbiAgICAgKiBAbmFtZSBfXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHdyYXAgaW4gYSBgbG9kYXNoYCBpbnN0YW5jZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgd3JhcHBlZCA9IF8oWzEsIDIsIDNdKTtcbiAgICAgKlxuICAgICAqIC8vIFJldHVybnMgYW4gdW53cmFwcGVkIHZhbHVlLlxuICAgICAqIHdyYXBwZWQucmVkdWNlKF8uYWRkKTtcbiAgICAgKiAvLyA9PiA2XG4gICAgICpcbiAgICAgKiAvLyBSZXR1cm5zIGEgd3JhcHBlZCB2YWx1ZS5cbiAgICAgKiB2YXIgc3F1YXJlcyA9IHdyYXBwZWQubWFwKHNxdWFyZSk7XG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoc3F1YXJlcyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheShzcXVhcmVzLnZhbHVlKCkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsb2Rhc2godmFsdWUpIHtcbiAgICAgIGlmIChpc09iamVjdExpa2UodmFsdWUpICYmICFpc0FycmF5KHZhbHVlKSAmJiAhKHZhbHVlIGluc3RhbmNlb2YgTGF6eVdyYXBwZXIpKSB7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIExvZGFzaFdyYXBwZXIpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdfX3dyYXBwZWRfXycpKSB7XG4gICAgICAgICAgcmV0dXJuIHdyYXBwZXJDbG9uZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgTG9kYXNoV3JhcHBlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY3JlYXRlYCB3aXRob3V0IHN1cHBvcnQgZm9yIGFzc2lnbmluZ1xuICAgICAqIHByb3BlcnRpZXMgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvdG8gVGhlIG9iamVjdCB0byBpbmhlcml0IGZyb20uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZUNyZWF0ZSA9IChmdW5jdGlvbigpIHtcbiAgICAgIGZ1bmN0aW9uIG9iamVjdCgpIHt9XG4gICAgICByZXR1cm4gZnVuY3Rpb24ocHJvdG8pIHtcbiAgICAgICAgaWYgKCFpc09iamVjdChwcm90bykpIHtcbiAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9iamVjdENyZWF0ZSkge1xuICAgICAgICAgIHJldHVybiBvYmplY3RDcmVhdGUocHJvdG8pO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdC5wcm90b3R5cGUgPSBwcm90bztcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBvYmplY3Q7XG4gICAgICAgIG9iamVjdC5wcm90b3R5cGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH0oKSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZnVuY3Rpb24gd2hvc2UgcHJvdG90eXBlIGNoYWluIHNlcXVlbmNlIHdyYXBwZXJzIGluaGVyaXQgZnJvbS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUxvZGFzaCgpIHtcbiAgICAgIC8vIE5vIG9wZXJhdGlvbiBwZXJmb3JtZWQuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgY29uc3RydWN0b3IgZm9yIGNyZWF0aW5nIGBsb2Rhc2hgIHdyYXBwZXIgb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtjaGFpbkFsbF0gRW5hYmxlIGV4cGxpY2l0IG1ldGhvZCBjaGFpbiBzZXF1ZW5jZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gTG9kYXNoV3JhcHBlcih2YWx1ZSwgY2hhaW5BbGwpIHtcbiAgICAgIHRoaXMuX193cmFwcGVkX18gPSB2YWx1ZTtcbiAgICAgIHRoaXMuX19hY3Rpb25zX18gPSBbXTtcbiAgICAgIHRoaXMuX19jaGFpbl9fID0gISFjaGFpbkFsbDtcbiAgICAgIHRoaXMuX19pbmRleF9fID0gMDtcbiAgICAgIHRoaXMuX192YWx1ZXNfXyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCeSBkZWZhdWx0LCB0aGUgdGVtcGxhdGUgZGVsaW1pdGVycyB1c2VkIGJ5IGxvZGFzaCBhcmUgbGlrZSB0aG9zZSBpblxuICAgICAqIGVtYmVkZGVkIFJ1YnkgKEVSQikgYXMgd2VsbCBhcyBFUzIwMTUgdGVtcGxhdGUgc3RyaW5ncy4gQ2hhbmdlIHRoZVxuICAgICAqIGZvbGxvd2luZyB0ZW1wbGF0ZSBzZXR0aW5ncyB0byB1c2UgYWx0ZXJuYXRpdmUgZGVsaW1pdGVycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEB0eXBlIHtPYmplY3R9XG4gICAgICovXG4gICAgbG9kYXNoLnRlbXBsYXRlU2V0dGluZ3MgPSB7XG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byBkZXRlY3QgYGRhdGFgIHByb3BlcnR5IHZhbHVlcyB0byBiZSBIVE1MLWVzY2FwZWQuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge1JlZ0V4cH1cbiAgICAgICAqL1xuICAgICAgJ2VzY2FwZSc6IHJlRXNjYXBlLFxuXG4gICAgICAvKipcbiAgICAgICAqIFVzZWQgdG8gZGV0ZWN0IGNvZGUgdG8gYmUgZXZhbHVhdGVkLlxuICAgICAgICpcbiAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICAgICAqIEB0eXBlIHtSZWdFeHB9XG4gICAgICAgKi9cbiAgICAgICdldmFsdWF0ZSc6IHJlRXZhbHVhdGUsXG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byBkZXRlY3QgYGRhdGFgIHByb3BlcnR5IHZhbHVlcyB0byBpbmplY3QuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge1JlZ0V4cH1cbiAgICAgICAqL1xuICAgICAgJ2ludGVycG9sYXRlJzogcmVJbnRlcnBvbGF0ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBVc2VkIHRvIHJlZmVyZW5jZSB0aGUgZGF0YSBvYmplY3QgaW4gdGhlIHRlbXBsYXRlIHRleHQuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAqL1xuICAgICAgJ3ZhcmlhYmxlJzogJycsXG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byBpbXBvcnQgdmFyaWFibGVzIGludG8gdGhlIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgICAgICpcbiAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICAgICAqIEB0eXBlIHtPYmplY3R9XG4gICAgICAgKi9cbiAgICAgICdpbXBvcnRzJzoge1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAgICAgICAqXG4gICAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3MuaW1wb3J0c1xuICAgICAgICAgKiBAdHlwZSB7RnVuY3Rpb259XG4gICAgICAgICAqL1xuICAgICAgICAnXyc6IGxvZGFzaFxuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBFbnN1cmUgd3JhcHBlcnMgYXJlIGluc3RhbmNlcyBvZiBgYmFzZUxvZGFzaGAuXG4gICAgbG9kYXNoLnByb3RvdHlwZSA9IGJhc2VMb2Rhc2gucHJvdG90eXBlO1xuICAgIGxvZGFzaC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBsb2Rhc2g7XG5cbiAgICBMb2Rhc2hXcmFwcGVyLnByb3RvdHlwZSA9IGJhc2VDcmVhdGUoYmFzZUxvZGFzaC5wcm90b3R5cGUpO1xuICAgIExvZGFzaFdyYXBwZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTG9kYXNoV3JhcHBlcjtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBsYXp5IHdyYXBwZXIgb2JqZWN0IHdoaWNoIHdyYXBzIGB2YWx1ZWAgdG8gZW5hYmxlIGxhenkgZXZhbHVhdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBMYXp5V3JhcHBlcih2YWx1ZSkge1xuICAgICAgdGhpcy5fX3dyYXBwZWRfXyA9IHZhbHVlO1xuICAgICAgdGhpcy5fX2FjdGlvbnNfXyA9IFtdO1xuICAgICAgdGhpcy5fX2Rpcl9fID0gMTtcbiAgICAgIHRoaXMuX19maWx0ZXJlZF9fID0gZmFsc2U7XG4gICAgICB0aGlzLl9faXRlcmF0ZWVzX18gPSBbXTtcbiAgICAgIHRoaXMuX190YWtlQ291bnRfXyA9IE1BWF9BUlJBWV9MRU5HVEg7XG4gICAgICB0aGlzLl9fdmlld3NfXyA9IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiB0aGUgbGF6eSB3cmFwcGVyIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgY2xvbmVcbiAgICAgKiBAbWVtYmVyT2YgTGF6eVdyYXBwZXJcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgYExhenlXcmFwcGVyYCBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGF6eUNsb25lKCkge1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBMYXp5V3JhcHBlcih0aGlzLl9fd3JhcHBlZF9fKTtcbiAgICAgIHJlc3VsdC5fX2FjdGlvbnNfXyA9IGNvcHlBcnJheSh0aGlzLl9fYWN0aW9uc19fKTtcbiAgICAgIHJlc3VsdC5fX2Rpcl9fID0gdGhpcy5fX2Rpcl9fO1xuICAgICAgcmVzdWx0Ll9fZmlsdGVyZWRfXyA9IHRoaXMuX19maWx0ZXJlZF9fO1xuICAgICAgcmVzdWx0Ll9faXRlcmF0ZWVzX18gPSBjb3B5QXJyYXkodGhpcy5fX2l0ZXJhdGVlc19fKTtcbiAgICAgIHJlc3VsdC5fX3Rha2VDb3VudF9fID0gdGhpcy5fX3Rha2VDb3VudF9fO1xuICAgICAgcmVzdWx0Ll9fdmlld3NfXyA9IGNvcHlBcnJheSh0aGlzLl9fdmlld3NfXyk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldmVyc2VzIHRoZSBkaXJlY3Rpb24gb2YgbGF6eSBpdGVyYXRpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIHJldmVyc2VcbiAgICAgKiBAbWVtYmVyT2YgTGF6eVdyYXBwZXJcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgcmV2ZXJzZWQgYExhenlXcmFwcGVyYCBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGF6eVJldmVyc2UoKSB7XG4gICAgICBpZiAodGhpcy5fX2ZpbHRlcmVkX18pIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBMYXp5V3JhcHBlcih0aGlzKTtcbiAgICAgICAgcmVzdWx0Ll9fZGlyX18gPSAtMTtcbiAgICAgICAgcmVzdWx0Ll9fZmlsdGVyZWRfXyA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSB0aGlzLmNsb25lKCk7XG4gICAgICAgIHJlc3VsdC5fX2Rpcl9fICo9IC0xO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeHRyYWN0cyB0aGUgdW53cmFwcGVkIHZhbHVlIGZyb20gaXRzIGxhenkgd3JhcHBlci5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgdmFsdWVcbiAgICAgKiBAbWVtYmVyT2YgTGF6eVdyYXBwZXJcbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdW53cmFwcGVkIHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxhenlWYWx1ZSgpIHtcbiAgICAgIHZhciBhcnJheSA9IHRoaXMuX193cmFwcGVkX18udmFsdWUoKSxcbiAgICAgICAgICBkaXIgPSB0aGlzLl9fZGlyX18sXG4gICAgICAgICAgaXNBcnIgPSBpc0FycmF5KGFycmF5KSxcbiAgICAgICAgICBpc1JpZ2h0ID0gZGlyIDwgMCxcbiAgICAgICAgICBhcnJMZW5ndGggPSBpc0FyciA/IGFycmF5Lmxlbmd0aCA6IDAsXG4gICAgICAgICAgdmlldyA9IGdldFZpZXcoMCwgYXJyTGVuZ3RoLCB0aGlzLl9fdmlld3NfXyksXG4gICAgICAgICAgc3RhcnQgPSB2aWV3LnN0YXJ0LFxuICAgICAgICAgIGVuZCA9IHZpZXcuZW5kLFxuICAgICAgICAgIGxlbmd0aCA9IGVuZCAtIHN0YXJ0LFxuICAgICAgICAgIGluZGV4ID0gaXNSaWdodCA/IGVuZCA6IChzdGFydCAtIDEpLFxuICAgICAgICAgIGl0ZXJhdGVlcyA9IHRoaXMuX19pdGVyYXRlZXNfXyxcbiAgICAgICAgICBpdGVyTGVuZ3RoID0gaXRlcmF0ZWVzLmxlbmd0aCxcbiAgICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgICAgdGFrZUNvdW50ID0gbmF0aXZlTWluKGxlbmd0aCwgdGhpcy5fX3Rha2VDb3VudF9fKTtcblxuICAgICAgaWYgKCFpc0FyciB8fCAoIWlzUmlnaHQgJiYgYXJyTGVuZ3RoID09IGxlbmd0aCAmJiB0YWtlQ291bnQgPT0gbGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gYmFzZVdyYXBwZXJWYWx1ZShhcnJheSwgdGhpcy5fX2FjdGlvbnNfXyk7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG5cbiAgICAgIG91dGVyOlxuICAgICAgd2hpbGUgKGxlbmd0aC0tICYmIHJlc0luZGV4IDwgdGFrZUNvdW50KSB7XG4gICAgICAgIGluZGV4ICs9IGRpcjtcblxuICAgICAgICB2YXIgaXRlckluZGV4ID0gLTEsXG4gICAgICAgICAgICB2YWx1ZSA9IGFycmF5W2luZGV4XTtcblxuICAgICAgICB3aGlsZSAoKytpdGVySW5kZXggPCBpdGVyTGVuZ3RoKSB7XG4gICAgICAgICAgdmFyIGRhdGEgPSBpdGVyYXRlZXNbaXRlckluZGV4XSxcbiAgICAgICAgICAgICAgaXRlcmF0ZWUgPSBkYXRhLml0ZXJhdGVlLFxuICAgICAgICAgICAgICB0eXBlID0gZGF0YS50eXBlLFxuICAgICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlKHZhbHVlKTtcblxuICAgICAgICAgIGlmICh0eXBlID09IExBWllfTUFQX0ZMQUcpIHtcbiAgICAgICAgICAgIHZhbHVlID0gY29tcHV0ZWQ7XG4gICAgICAgICAgfSBlbHNlIGlmICghY29tcHV0ZWQpIHtcbiAgICAgICAgICAgIGlmICh0eXBlID09IExBWllfRklMVEVSX0ZMQUcpIHtcbiAgICAgICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBicmVhayBvdXRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8vIEVuc3VyZSBgTGF6eVdyYXBwZXJgIGlzIGFuIGluc3RhbmNlIG9mIGBiYXNlTG9kYXNoYC5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUgPSBiYXNlQ3JlYXRlKGJhc2VMb2Rhc2gucHJvdG90eXBlKTtcbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBMYXp5V3JhcHBlcjtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBoYXNoIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gSGFzaChlbnRyaWVzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgICAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGhhc2guXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGNsZWFyXG4gICAgICogQG1lbWJlck9mIEhhc2hcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoQ2xlYXIoKSB7XG4gICAgICB0aGlzLl9fZGF0YV9fID0gbmF0aXZlQ3JlYXRlID8gbmF0aXZlQ3JlYXRlKG51bGwpIDoge307XG4gICAgICB0aGlzLnNpemUgPSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBoYXNoLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBkZWxldGVcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzaERlbGV0ZShrZXkpIHtcbiAgICAgIHZhciByZXN1bHQgPSB0aGlzLmhhcyhrZXkpICYmIGRlbGV0ZSB0aGlzLl9fZGF0YV9fW2tleV07XG4gICAgICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGhhc2ggdmFsdWUgZm9yIGBrZXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBnZXRcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoR2V0KGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgICAgaWYgKG5hdGl2ZUNyZWF0ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gZGF0YVtrZXldO1xuICAgICAgICByZXR1cm4gcmVzdWx0ID09PSBIQVNIX1VOREVGSU5FRCA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSkgPyBkYXRhW2tleV0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGEgaGFzaCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBoYXNcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoSGFzKGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgICAgcmV0dXJuIG5hdGl2ZUNyZWF0ZSA/IChkYXRhW2tleV0gIT09IHVuZGVmaW5lZCkgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgaGFzaCBga2V5YCB0byBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBzZXRcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBoYXNoIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc2hTZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgICAgdGhpcy5zaXplICs9IHRoaXMuaGFzKGtleSkgPyAwIDogMTtcbiAgICAgIGRhdGFba2V5XSA9IChuYXRpdmVDcmVhdGUgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkgPyBIQVNIX1VOREVGSU5FRCA6IHZhbHVlO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYEhhc2hgLlxuICAgIEhhc2gucHJvdG90eXBlLmNsZWFyID0gaGFzaENsZWFyO1xuICAgIEhhc2gucHJvdG90eXBlWydkZWxldGUnXSA9IGhhc2hEZWxldGU7XG4gICAgSGFzaC5wcm90b3R5cGUuZ2V0ID0gaGFzaEdldDtcbiAgICBIYXNoLnByb3RvdHlwZS5oYXMgPSBoYXNoSGFzO1xuICAgIEhhc2gucHJvdG90eXBlLnNldCA9IGhhc2hTZXQ7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGxpc3QgY2FjaGUgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBMaXN0Q2FjaGUoZW50cmllcykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICAgICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBjbGVhclxuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsaXN0Q2FjaGVDbGVhcigpIHtcbiAgICAgIHRoaXMuX19kYXRhX18gPSBbXTtcbiAgICAgIHRoaXMuc2l6ZSA9IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGRlbGV0ZVxuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlRGVsZXRlKGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIGxhc3RJbmRleCA9IGRhdGEubGVuZ3RoIC0gMTtcbiAgICAgIGlmIChpbmRleCA9PSBsYXN0SW5kZXgpIHtcbiAgICAgICAgZGF0YS5wb3AoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNwbGljZS5jYWxsKGRhdGEsIGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICAgIC0tdGhpcy5zaXplO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGdldFxuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlR2V0KGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgICAgIHJldHVybiBpbmRleCA8IDAgPyB1bmRlZmluZWQgOiBkYXRhW2luZGV4XVsxXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGhhc1xuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlSGFzKGtleSkge1xuICAgICAgcmV0dXJuIGFzc29jSW5kZXhPZih0aGlzLl9fZGF0YV9fLCBrZXkpID4gLTE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbGlzdCBjYWNoZSBga2V5YCB0byBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBzZXRcbiAgICAgKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGxpc3QgY2FjaGUgaW5zdGFuY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgICsrdGhpcy5zaXplO1xuICAgICAgICBkYXRhLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGFbaW5kZXhdWzFdID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgTGlzdENhY2hlYC5cbiAgICBMaXN0Q2FjaGUucHJvdG90eXBlLmNsZWFyID0gbGlzdENhY2hlQ2xlYXI7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBsaXN0Q2FjaGVEZWxldGU7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZS5nZXQgPSBsaXN0Q2FjaGVHZXQ7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZS5oYXMgPSBsaXN0Q2FjaGVIYXM7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZS5zZXQgPSBsaXN0Q2FjaGVTZXQ7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbWFwIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIE1hcENhY2hlKGVudHJpZXMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbWFwLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBjbGVhclxuICAgICAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcENhY2hlQ2xlYXIoKSB7XG4gICAgICB0aGlzLnNpemUgPSAwO1xuICAgICAgdGhpcy5fX2RhdGFfXyA9IHtcbiAgICAgICAgJ2hhc2gnOiBuZXcgSGFzaCxcbiAgICAgICAgJ21hcCc6IG5ldyAoTWFwIHx8IExpc3RDYWNoZSksXG4gICAgICAgICdzdHJpbmcnOiBuZXcgSGFzaFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbWFwLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBkZWxldGVcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVEZWxldGUoa2V5KSB7XG4gICAgICB2YXIgcmVzdWx0ID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpWydkZWxldGUnXShrZXkpO1xuICAgICAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBtYXAgdmFsdWUgZm9yIGBrZXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBnZXRcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KSB7XG4gICAgICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmdldChrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBhIG1hcCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBoYXNcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVIYXMoa2V5KSB7XG4gICAgICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmhhcyhrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIG1hcCBga2V5YCB0byBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBzZXRcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbWFwIGNhY2hlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLFxuICAgICAgICAgIHNpemUgPSBkYXRhLnNpemU7XG5cbiAgICAgIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgdGhpcy5zaXplICs9IGRhdGEuc2l6ZSA9PSBzaXplID8gMCA6IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgTWFwQ2FjaGVgLlxuICAgIE1hcENhY2hlLnByb3RvdHlwZS5jbGVhciA9IG1hcENhY2hlQ2xlYXI7XG4gICAgTWFwQ2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IG1hcENhY2hlRGVsZXRlO1xuICAgIE1hcENhY2hlLnByb3RvdHlwZS5nZXQgPSBtYXBDYWNoZUdldDtcbiAgICBNYXBDYWNoZS5wcm90b3R5cGUuaGFzID0gbWFwQ2FjaGVIYXM7XG4gICAgTWFwQ2FjaGUucHJvdG90eXBlLnNldCA9IG1hcENhY2hlU2V0O1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IGNhY2hlIG9iamVjdCB0byBzdG9yZSB1bmlxdWUgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIFNldENhY2hlKHZhbHVlcykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gdmFsdWVzID09IG51bGwgPyAwIDogdmFsdWVzLmxlbmd0aDtcblxuICAgICAgdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuYWRkKHZhbHVlc1tpbmRleF0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYHZhbHVlYCB0byB0aGUgYXJyYXkgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGFkZFxuICAgICAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICAgICAqIEBhbGlhcyBwdXNoXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2FjaGUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2FjaGUgaW5zdGFuY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2V0Q2FjaGVBZGQodmFsdWUpIHtcbiAgICAgIHRoaXMuX19kYXRhX18uc2V0KHZhbHVlLCBIQVNIX1VOREVGSU5FRCk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBpbiB0aGUgYXJyYXkgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGhhc1xuICAgICAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldENhY2hlSGFzKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModmFsdWUpO1xuICAgIH1cblxuICAgIC8vIEFkZCBtZXRob2RzIHRvIGBTZXRDYWNoZWAuXG4gICAgU2V0Q2FjaGUucHJvdG90eXBlLmFkZCA9IFNldENhY2hlLnByb3RvdHlwZS5wdXNoID0gc2V0Q2FjaGVBZGQ7XG4gICAgU2V0Q2FjaGUucHJvdG90eXBlLmhhcyA9IHNldENhY2hlSGFzO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHN0YWNrIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIFN0YWNrKGVudHJpZXMpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGUoZW50cmllcyk7XG4gICAgICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgc3RhY2suXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGNsZWFyXG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhY2tDbGVhcigpIHtcbiAgICAgIHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlO1xuICAgICAgdGhpcy5zaXplID0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgc3RhY2suXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGRlbGV0ZVxuICAgICAqIEBtZW1iZXJPZiBTdGFja1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdGFja0RlbGV0ZShrZXkpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgICAgICByZXN1bHQgPSBkYXRhWydkZWxldGUnXShrZXkpO1xuXG4gICAgICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHN0YWNrIHZhbHVlIGZvciBga2V5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZ2V0XG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrR2V0KGtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGEgc3RhY2sgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgaGFzXG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrSGFzKGtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgc3RhY2sgYGtleWAgdG8gYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgc2V0XG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIHN0YWNrIGNhY2hlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrU2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgICAgIGlmIChkYXRhIGluc3RhbmNlb2YgTGlzdENhY2hlKSB7XG4gICAgICAgIHZhciBwYWlycyA9IGRhdGEuX19kYXRhX187XG4gICAgICAgIGlmICghTWFwIHx8IChwYWlycy5sZW5ndGggPCBMQVJHRV9BUlJBWV9TSVpFIC0gMSkpIHtcbiAgICAgICAgICBwYWlycy5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICAgICAgdGhpcy5zaXplID0gKytkYXRhLnNpemU7XG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgZGF0YSA9IHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGUocGFpcnMpO1xuICAgICAgfVxuICAgICAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgU3RhY2tgLlxuICAgIFN0YWNrLnByb3RvdHlwZS5jbGVhciA9IHN0YWNrQ2xlYXI7XG4gICAgU3RhY2sucHJvdG90eXBlWydkZWxldGUnXSA9IHN0YWNrRGVsZXRlO1xuICAgIFN0YWNrLnByb3RvdHlwZS5nZXQgPSBzdGFja0dldDtcbiAgICBTdGFjay5wcm90b3R5cGUuaGFzID0gc3RhY2tIYXM7XG4gICAgU3RhY2sucHJvdG90eXBlLnNldCA9IHN0YWNrU2V0O1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgYXJyYXktbGlrZSBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGluaGVyaXRlZCBTcGVjaWZ5IHJldHVybmluZyBpbmhlcml0ZWQgcHJvcGVydHkgbmFtZXMuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnJheUxpa2VLZXlzKHZhbHVlLCBpbmhlcml0ZWQpIHtcbiAgICAgIHZhciBpc0FyciA9IGlzQXJyYXkodmFsdWUpLFxuICAgICAgICAgIGlzQXJnID0gIWlzQXJyICYmIGlzQXJndW1lbnRzKHZhbHVlKSxcbiAgICAgICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgIWlzQXJnICYmIGlzQnVmZmVyKHZhbHVlKSxcbiAgICAgICAgICBpc1R5cGUgPSAhaXNBcnIgJiYgIWlzQXJnICYmICFpc0J1ZmYgJiYgaXNUeXBlZEFycmF5KHZhbHVlKSxcbiAgICAgICAgICBza2lwSW5kZXhlcyA9IGlzQXJyIHx8IGlzQXJnIHx8IGlzQnVmZiB8fCBpc1R5cGUsXG4gICAgICAgICAgcmVzdWx0ID0gc2tpcEluZGV4ZXMgPyBiYXNlVGltZXModmFsdWUubGVuZ3RoLCBTdHJpbmcpIDogW10sXG4gICAgICAgICAgbGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDtcblxuICAgICAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgICAgIGlmICgoaW5oZXJpdGVkIHx8IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpICYmXG4gICAgICAgICAgICAhKHNraXBJbmRleGVzICYmIChcbiAgICAgICAgICAgICAgIC8vIFNhZmFyaSA5IGhhcyBlbnVtZXJhYmxlIGBhcmd1bWVudHMubGVuZ3RoYCBpbiBzdHJpY3QgbW9kZS5cbiAgICAgICAgICAgICAgIGtleSA9PSAnbGVuZ3RoJyB8fFxuICAgICAgICAgICAgICAgLy8gTm9kZS5qcyAwLjEwIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIGJ1ZmZlcnMuXG4gICAgICAgICAgICAgICAoaXNCdWZmICYmIChrZXkgPT0gJ29mZnNldCcgfHwga2V5ID09ICdwYXJlbnQnKSkgfHxcbiAgICAgICAgICAgICAgIC8vIFBoYW50b21KUyAyIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIHR5cGVkIGFycmF5cy5cbiAgICAgICAgICAgICAgIChpc1R5cGUgJiYgKGtleSA9PSAnYnVmZmVyJyB8fCBrZXkgPT0gJ2J5dGVMZW5ndGgnIHx8IGtleSA9PSAnYnl0ZU9mZnNldCcpKSB8fFxuICAgICAgICAgICAgICAgLy8gU2tpcCBpbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgICAgICAgICAgaXNJbmRleChrZXksIGxlbmd0aClcbiAgICAgICAgICAgICkpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc2FtcGxlYCBmb3IgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2FtcGxlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByYW5kb20gZWxlbWVudC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnJheVNhbXBsZShhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBhcnJheVtiYXNlUmFuZG9tKDAsIGxlbmd0aCAtIDEpXSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc2FtcGxlU2l6ZWAgZm9yIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNhbXBsZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHNhbXBsZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnJheVNhbXBsZVNpemUoYXJyYXksIG4pIHtcbiAgICAgIHJldHVybiBzaHVmZmxlU2VsZihjb3B5QXJyYXkoYXJyYXkpLCBiYXNlQ2xhbXAobiwgMCwgYXJyYXkubGVuZ3RoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNodWZmbGVgIGZvciBhcnJheXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzaHVmZmxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNodWZmbGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFycmF5U2h1ZmZsZShhcnJheSkge1xuICAgICAgcmV0dXJuIHNodWZmbGVTZWxmKGNvcHlBcnJheShhcnJheSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYXNzaWduVmFsdWVgIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgYXNzaWduXG4gICAgICogYHVuZGVmaW5lZGAgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICAgICAgaWYgKCh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmICFlcShvYmplY3Rba2V5XSwgdmFsdWUpKSB8fFxuICAgICAgICAgICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpKSB7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFzc2lnbnMgYHZhbHVlYCB0byBga2V5YCBvZiBgb2JqZWN0YCBpZiB0aGUgZXhpc3RpbmcgdmFsdWUgaXMgbm90IGVxdWl2YWxlbnRcbiAgICAgKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gICAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XTtcbiAgICAgIGlmICghKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGVxKG9ialZhbHVlLCB2YWx1ZSkpIHx8XG4gICAgICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGBrZXlgIGlzIGZvdW5kIGluIGBhcnJheWAgb2Yga2V5LXZhbHVlIHBhaXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IGtleSBUaGUga2V5IHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhc3NvY0luZGV4T2YoYXJyYXksIGtleSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICBpZiAoZXEoYXJyYXlbbGVuZ3RoXVswXSwga2V5KSkge1xuICAgICAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZ2dyZWdhdGVzIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCBvbiBgYWNjdW11bGF0b3JgIHdpdGgga2V5cyB0cmFuc2Zvcm1lZFxuICAgICAqIGJ5IGBpdGVyYXRlZWAgYW5kIHZhbHVlcyBzZXQgYnkgYHNldHRlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBgYWNjdW11bGF0b3JgIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGFjY3VtdWxhdG9yIFRoZSBpbml0aWFsIGFnZ3JlZ2F0ZWQgb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgYWNjdW11bGF0b3JgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBZ2dyZWdhdG9yKGNvbGxlY3Rpb24sIHNldHRlciwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHNldHRlcihhY2N1bXVsYXRvciwgdmFsdWUsIGl0ZXJhdGVlKHZhbHVlKSwgY29sbGVjdGlvbik7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hc3NpZ25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlc1xuICAgICAqIG9yIGBjdXN0b21pemVyYCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUFzc2lnbihvYmplY3QsIHNvdXJjZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5cyhzb3VyY2UpLCBvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmFzc2lnbkluYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXNcbiAgICAgKiBvciBgY3VzdG9taXplcmAgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBc3NpZ25JbihvYmplY3QsIHNvdXJjZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5c0luKHNvdXJjZSksIG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGFzc2lnblZhbHVlYCBhbmQgYGFzc2lnbk1lcmdlVmFsdWVgIHdpdGhvdXRcbiAgICAgKiB2YWx1ZSBjaGVja3MuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgICAgIGlmIChrZXkgPT0gJ19fcHJvdG9fXycgJiYgZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgZGVmaW5lUHJvcGVydHkob2JqZWN0LCBrZXksIHtcbiAgICAgICAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAgICAgICAnZW51bWVyYWJsZSc6IHRydWUsXG4gICAgICAgICAgJ3ZhbHVlJzogdmFsdWUsXG4gICAgICAgICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uYXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbCBwYXRocy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRocyBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHBpY2tlZCBlbGVtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQXQob2JqZWN0LCBwYXRocykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aHMubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCksXG4gICAgICAgICAgc2tpcCA9IG9iamVjdCA9PSBudWxsO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICByZXN1bHRbaW5kZXhdID0gc2tpcCA/IHVuZGVmaW5lZCA6IGdldChvYmplY3QsIHBhdGhzW2luZGV4XSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNsYW1wYCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byBjbGFtcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xvd2VyXSBUaGUgbG93ZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHVwcGVyIFRoZSB1cHBlciBib3VuZC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjbGFtcGVkIG51bWJlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQ2xhbXAobnVtYmVyLCBsb3dlciwgdXBwZXIpIHtcbiAgICAgIGlmIChudW1iZXIgPT09IG51bWJlcikge1xuICAgICAgICBpZiAodXBwZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG51bWJlciA9IG51bWJlciA8PSB1cHBlciA/IG51bWJlciA6IHVwcGVyO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb3dlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbnVtYmVyID0gbnVtYmVyID49IGxvd2VyID8gbnVtYmVyIDogbG93ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY2xvbmVgIGFuZCBgXy5jbG9uZURlZXBgIHdoaWNoIHRyYWNrc1xuICAgICAqIHRyYXZlcnNlZCBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuXG4gICAgICogIDEgLSBEZWVwIGNsb25lXG4gICAgICogIDIgLSBGbGF0dGVuIGluaGVyaXRlZCBwcm9wZXJ0aWVzXG4gICAgICogIDQgLSBDbG9uZSBzeW1ib2xzXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2tleV0gVGhlIGtleSBvZiBgdmFsdWVgLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgcGFyZW50IG9iamVjdCBvZiBgdmFsdWVgLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBhbmQgdGhlaXIgY2xvbmUgY291bnRlcnBhcnRzLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUNsb25lKHZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIG9iamVjdCwgc3RhY2spIHtcbiAgICAgIHZhciByZXN1bHQsXG4gICAgICAgICAgaXNEZWVwID0gYml0bWFzayAmIENMT05FX0RFRVBfRkxBRyxcbiAgICAgICAgICBpc0ZsYXQgPSBiaXRtYXNrICYgQ0xPTkVfRkxBVF9GTEFHLFxuICAgICAgICAgIGlzRnVsbCA9IGJpdG1hc2sgJiBDTE9ORV9TWU1CT0xTX0ZMQUc7XG5cbiAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgIHJlc3VsdCA9IG9iamVjdCA/IGN1c3RvbWl6ZXIodmFsdWUsIGtleSwgb2JqZWN0LCBzdGFjaykgOiBjdXN0b21pemVyKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSk7XG4gICAgICBpZiAoaXNBcnIpIHtcbiAgICAgICAgcmVzdWx0ID0gaW5pdENsb25lQXJyYXkodmFsdWUpO1xuICAgICAgICBpZiAoIWlzRGVlcCkge1xuICAgICAgICAgIHJldHVybiBjb3B5QXJyYXkodmFsdWUsIHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpLFxuICAgICAgICAgICAgaXNGdW5jID0gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZztcblxuICAgICAgICBpZiAoaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGNsb25lQnVmZmVyKHZhbHVlLCBpc0RlZXApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YWcgPT0gb2JqZWN0VGFnIHx8IHRhZyA9PSBhcmdzVGFnIHx8IChpc0Z1bmMgJiYgIW9iamVjdCkpIHtcbiAgICAgICAgICByZXN1bHQgPSAoaXNGbGF0IHx8IGlzRnVuYykgPyB7fSA6IGluaXRDbG9uZU9iamVjdCh2YWx1ZSk7XG4gICAgICAgICAgaWYgKCFpc0RlZXApIHtcbiAgICAgICAgICAgIHJldHVybiBpc0ZsYXRcbiAgICAgICAgICAgICAgPyBjb3B5U3ltYm9sc0luKHZhbHVlLCBiYXNlQXNzaWduSW4ocmVzdWx0LCB2YWx1ZSkpXG4gICAgICAgICAgICAgIDogY29weVN5bWJvbHModmFsdWUsIGJhc2VBc3NpZ24ocmVzdWx0LCB2YWx1ZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIWNsb25lYWJsZVRhZ3NbdGFnXSkge1xuICAgICAgICAgICAgcmV0dXJuIG9iamVjdCA/IHZhbHVlIDoge307XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdCA9IGluaXRDbG9uZUJ5VGFnKHZhbHVlLCB0YWcsIGlzRGVlcCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2VzIGFuZCByZXR1cm4gaXRzIGNvcnJlc3BvbmRpbmcgY2xvbmUuXG4gICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQodmFsdWUpO1xuICAgICAgaWYgKHN0YWNrZWQpIHtcbiAgICAgICAgcmV0dXJuIHN0YWNrZWQ7XG4gICAgICB9XG4gICAgICBzdGFjay5zZXQodmFsdWUsIHJlc3VsdCk7XG5cbiAgICAgIGlmIChpc1NldCh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSkge1xuICAgICAgICAgIHJlc3VsdC5hZGQoYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdWJWYWx1ZSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChpc01hcCh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSwga2V5KSB7XG4gICAgICAgICAgcmVzdWx0LnNldChrZXksIGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCB2YWx1ZSwgc3RhY2spKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBrZXlzRnVuYyA9IGlzRnVsbFxuICAgICAgICA/IChpc0ZsYXQgPyBnZXRBbGxLZXlzSW4gOiBnZXRBbGxLZXlzKVxuICAgICAgICA6IChpc0ZsYXQgPyBrZXlzSW4gOiBrZXlzKTtcblxuICAgICAgdmFyIHByb3BzID0gaXNBcnIgPyB1bmRlZmluZWQgOiBrZXlzRnVuYyh2YWx1ZSk7XG4gICAgICBhcnJheUVhY2gocHJvcHMgfHwgdmFsdWUsIGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICAgICAgaWYgKHByb3BzKSB7XG4gICAgICAgICAga2V5ID0gc3ViVmFsdWU7XG4gICAgICAgICAgc3ViVmFsdWUgPSB2YWx1ZVtrZXldO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IHBvcHVsYXRlIGNsb25lIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIGFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY29uZm9ybXNgIHdoaWNoIGRvZXNuJ3QgY2xvbmUgYHNvdXJjZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSBwcmVkaWNhdGVzIHRvIGNvbmZvcm0gdG8uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQ29uZm9ybXMoc291cmNlKSB7XG4gICAgICB2YXIgcHJvcHMgPSBrZXlzKHNvdXJjZSk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBiYXNlQ29uZm9ybXNUbyhvYmplY3QsIHNvdXJjZSwgcHJvcHMpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jb25mb3Jtc1RvYCB3aGljaCBhY2NlcHRzIGBwcm9wc2AgdG8gY2hlY2suXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSBwcmVkaWNhdGVzIHRvIGNvbmZvcm0gdG8uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGNvbmZvcm1zLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUNvbmZvcm1zVG8ob2JqZWN0LCBzb3VyY2UsIHByb3BzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuICAgICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAhbGVuZ3RoO1xuICAgICAgfVxuICAgICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgdmFyIGtleSA9IHByb3BzW2xlbmd0aF0sXG4gICAgICAgICAgICBwcmVkaWNhdGUgPSBzb3VyY2Vba2V5XSxcbiAgICAgICAgICAgIHZhbHVlID0gb2JqZWN0W2tleV07XG5cbiAgICAgICAgaWYgKCh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpIHx8ICFwcmVkaWNhdGUodmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5kZWxheWAgYW5kIGBfLmRlZmVyYCB3aGljaCBhY2NlcHRzIGBhcmdzYFxuICAgICAqIHRvIHByb3ZpZGUgdG8gYGZ1bmNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBkZWxheS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gd2FpdCBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheSBpbnZvY2F0aW9uLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIGFyZ3VtZW50cyB0byBwcm92aWRlIHRvIGBmdW5jYC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfE9iamVjdH0gUmV0dXJucyB0aGUgdGltZXIgaWQgb3IgdGltZW91dCBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZURlbGF5KGZ1bmMsIHdhaXQsIGFyZ3MpIHtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBmdW5jLmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7IH0sIHdhaXQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5kaWZmZXJlbmNlYCB3aXRob3V0IHN1cHBvcnRcbiAgICAgKiBmb3IgZXhjbHVkaW5nIG11bHRpcGxlIGFycmF5cyBvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VEaWZmZXJlbmNlKGFycmF5LCB2YWx1ZXMsIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXMsXG4gICAgICAgICAgaXNDb21tb24gPSB0cnVlLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSBbXSxcbiAgICAgICAgICB2YWx1ZXNMZW5ndGggPSB2YWx1ZXMubGVuZ3RoO1xuXG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgaWYgKGl0ZXJhdGVlKSB7XG4gICAgICAgIHZhbHVlcyA9IGFycmF5TWFwKHZhbHVlcywgYmFzZVVuYXJ5KGl0ZXJhdGVlKSk7XG4gICAgICB9XG4gICAgICBpZiAoY29tcGFyYXRvcikge1xuICAgICAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXNXaXRoO1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAodmFsdWVzLmxlbmd0aCA+PSBMQVJHRV9BUlJBWV9TSVpFKSB7XG4gICAgICAgIGluY2x1ZGVzID0gY2FjaGVIYXM7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIHZhbHVlcyA9IG5ldyBTZXRDYWNoZSh2YWx1ZXMpO1xuICAgICAgfVxuICAgICAgb3V0ZXI6XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID09IG51bGwgPyB2YWx1ZSA6IGl0ZXJhdGVlKHZhbHVlKTtcblxuICAgICAgICB2YWx1ZSA9IChjb21wYXJhdG9yIHx8IHZhbHVlICE9PSAwKSA/IHZhbHVlIDogMDtcbiAgICAgICAgaWYgKGlzQ29tbW9uICYmIGNvbXB1dGVkID09PSBjb21wdXRlZCkge1xuICAgICAgICAgIHZhciB2YWx1ZXNJbmRleCA9IHZhbHVlc0xlbmd0aDtcbiAgICAgICAgICB3aGlsZSAodmFsdWVzSW5kZXgtLSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlc1t2YWx1ZXNJbmRleF0gPT09IGNvbXB1dGVkKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIWluY2x1ZGVzKHZhbHVlcywgY29tcHV0ZWQsIGNvbXBhcmF0b3IpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvckVhY2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gICAgICovXG4gICAgdmFyIGJhc2VFYWNoID0gY3JlYXRlQmFzZUVhY2goYmFzZUZvck93bik7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JFYWNoUmlnaHRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gICAgICovXG4gICAgdmFyIGJhc2VFYWNoUmlnaHQgPSBjcmVhdGVCYXNlRWFjaChiYXNlRm9yT3duUmlnaHQsIHRydWUpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZXZlcnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbGwgZWxlbWVudHMgcGFzcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAqICBlbHNlIGBmYWxzZWBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRXZlcnkoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gdHJ1ZTtcbiAgICAgIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikge1xuICAgICAgICByZXN1bHQgPSAhIXByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5tYXhgIGFuZCBgXy5taW5gIHdoaWNoIGFjY2VwdHMgYVxuICAgICAqIGBjb21wYXJhdG9yYCB0byBkZXRlcm1pbmUgdGhlIGV4dHJlbXVtIHZhbHVlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyYXRvciBUaGUgY29tcGFyYXRvciB1c2VkIHRvIGNvbXBhcmUgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBleHRyZW11bSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRXh0cmVtdW0oYXJyYXksIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIGN1cnJlbnQgPSBpdGVyYXRlZSh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnQgIT0gbnVsbCAmJiAoY29tcHV0ZWQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICA/IChjdXJyZW50ID09PSBjdXJyZW50ICYmICFpc1N5bWJvbChjdXJyZW50KSlcbiAgICAgICAgICAgICAgOiBjb21wYXJhdG9yKGN1cnJlbnQsIGNvbXB1dGVkKVxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgIHZhciBjb21wdXRlZCA9IGN1cnJlbnQsXG4gICAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbGxgIHdpdGhvdXQgYW4gaXRlcmF0ZWUgY2FsbCBndWFyZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZpbGwuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZmlsbCBgYXJyYXlgIHdpdGguXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VGaWxsKGFycmF5LCB2YWx1ZSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgICAgc3RhcnQgPSB0b0ludGVnZXIoc3RhcnQpO1xuICAgICAgaWYgKHN0YXJ0IDwgMCkge1xuICAgICAgICBzdGFydCA9IC1zdGFydCA+IGxlbmd0aCA/IDAgOiAobGVuZ3RoICsgc3RhcnQpO1xuICAgICAgfVxuICAgICAgZW5kID0gKGVuZCA9PT0gdW5kZWZpbmVkIHx8IGVuZCA+IGxlbmd0aCkgPyBsZW5ndGggOiB0b0ludGVnZXIoZW5kKTtcbiAgICAgIGlmIChlbmQgPCAwKSB7XG4gICAgICAgIGVuZCArPSBsZW5ndGg7XG4gICAgICB9XG4gICAgICBlbmQgPSBzdGFydCA+IGVuZCA/IDAgOiB0b0xlbmd0aChlbmQpO1xuICAgICAgd2hpbGUgKHN0YXJ0IDwgZW5kKSB7XG4gICAgICAgIGFycmF5W3N0YXJ0KytdID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmlsdGVyYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRmlsdGVyKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZsYXR0ZW5gIHdpdGggc3VwcG9ydCBmb3IgcmVzdHJpY3RpbmcgZmxhdHRlbmluZy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGRlcHRoIFRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtwcmVkaWNhdGU9aXNGbGF0dGVuYWJsZV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc1N0cmljdF0gUmVzdHJpY3QgdG8gdmFsdWVzIHRoYXQgcGFzcyBgcHJlZGljYXRlYCBjaGVja3MuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3Jlc3VsdD1bXV0gVGhlIGluaXRpYWwgcmVzdWx0IHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRmxhdHRlbihhcnJheSwgZGVwdGgsIHByZWRpY2F0ZSwgaXNTdHJpY3QsIHJlc3VsdCkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgICBwcmVkaWNhdGUgfHwgKHByZWRpY2F0ZSA9IGlzRmxhdHRlbmFibGUpO1xuICAgICAgcmVzdWx0IHx8IChyZXN1bHQgPSBbXSk7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgICAgaWYgKGRlcHRoID4gMCAmJiBwcmVkaWNhdGUodmFsdWUpKSB7XG4gICAgICAgICAgaWYgKGRlcHRoID4gMSkge1xuICAgICAgICAgICAgLy8gUmVjdXJzaXZlbHkgZmxhdHRlbiBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgICAgIGJhc2VGbGF0dGVuKHZhbHVlLCBkZXB0aCAtIDEsIHByZWRpY2F0ZSwgaXNTdHJpY3QsIHJlc3VsdCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFycmF5UHVzaChyZXN1bHQsIHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIWlzU3RyaWN0KSB7XG4gICAgICAgICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGJhc2VGb3JPd25gIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYG9iamVjdGBcbiAgICAgKiBwcm9wZXJ0aWVzIHJldHVybmVkIGJ5IGBrZXlzRnVuY2AgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAgICAgKiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgdmFyIGJhc2VGb3IgPSBjcmVhdGVCYXNlRm9yKCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGJhc2VGb3JgIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgcHJvcGVydGllc1xuICAgICAqIGluIHRoZSBvcHBvc2l0ZSBvcmRlci5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZUZvclJpZ2h0ID0gY3JlYXRlQmFzZUZvcih0cnVlKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvck93bmAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRm9yT3duKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgJiYgYmFzZUZvcihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JPd25SaWdodGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRm9yT3duUmlnaHQob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBiYXNlRm9yUmlnaHQob2JqZWN0LCBpdGVyYXRlZSwga2V5cyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZnVuY3Rpb25zYCB3aGljaCBjcmVhdGVzIGFuIGFycmF5IG9mXG4gICAgICogYG9iamVjdGAgZnVuY3Rpb24gcHJvcGVydHkgbmFtZXMgZmlsdGVyZWQgZnJvbSBgcHJvcHNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgbmFtZXMgdG8gZmlsdGVyLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgZnVuY3Rpb24gbmFtZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUZ1bmN0aW9ucyhvYmplY3QsIHByb3BzKSB7XG4gICAgICByZXR1cm4gYXJyYXlGaWx0ZXIocHJvcHMsIGZ1bmN0aW9uKGtleSkge1xuICAgICAgICByZXR1cm4gaXNGdW5jdGlvbihvYmplY3Rba2V5XSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5nZXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVmYXVsdCB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlR2V0KG9iamVjdCwgcGF0aCkge1xuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgICAgIHZhciBpbmRleCA9IDAsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGg7XG5cbiAgICAgIHdoaWxlIChvYmplY3QgIT0gbnVsbCAmJiBpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBvYmplY3QgPSBvYmplY3RbdG9LZXkocGF0aFtpbmRleCsrXSldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChpbmRleCAmJiBpbmRleCA9PSBsZW5ndGgpID8gb2JqZWN0IDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRBbGxLZXlzYCBhbmQgYGdldEFsbEtleXNJbmAgd2hpY2ggdXNlc1xuICAgICAqIGBrZXlzRnVuY2AgYW5kIGBzeW1ib2xzRnVuY2AgdG8gZ2V0IHRoZSBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZFxuICAgICAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHN5bWJvbHNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXNGdW5jLCBzeW1ib2xzRnVuYykge1xuICAgICAgdmFyIHJlc3VsdCA9IGtleXNGdW5jKG9iamVjdCk7XG4gICAgICByZXR1cm4gaXNBcnJheShvYmplY3QpID8gcmVzdWx0IDogYXJyYXlQdXNoKHJlc3VsdCwgc3ltYm9sc0Z1bmMob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldFRhZ2Agd2l0aG91dCBmYWxsYmFja3MgZm9yIGJ1Z2d5IGVudmlyb25tZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlR2V0VGFnKHZhbHVlKSB7XG4gICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZFRhZyA6IG51bGxUYWc7XG4gICAgICB9XG4gICAgICByZXR1cm4gKHN5bVRvU3RyaW5nVGFnICYmIHN5bVRvU3RyaW5nVGFnIGluIE9iamVjdCh2YWx1ZSkpXG4gICAgICAgID8gZ2V0UmF3VGFnKHZhbHVlKVxuICAgICAgICA6IG9iamVjdFRvU3RyaW5nKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5ndGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlR3QodmFsdWUsIG90aGVyKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPiBvdGhlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5oYXNgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IGtleSBUaGUga2V5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSGFzKG9iamVjdCwga2V5KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaGFzSW5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IGtleSBUaGUga2V5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSGFzSW4ob2JqZWN0LCBrZXkpIHtcbiAgICAgIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBrZXkgaW4gT2JqZWN0KG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW5SYW5nZWAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gY2hlY2suXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0IFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG51bWJlcmAgaXMgaW4gdGhlIHJhbmdlLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUluUmFuZ2UobnVtYmVyLCBzdGFydCwgZW5kKSB7XG4gICAgICByZXR1cm4gbnVtYmVyID49IG5hdGl2ZU1pbihzdGFydCwgZW5kKSAmJiBudW1iZXIgPCBuYXRpdmVNYXgoc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLmludGVyc2VjdGlvbmAsIHdpdGhvdXQgc3VwcG9ydFxuICAgICAqIGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLCB0aGF0IGFjY2VwdHMgYW4gYXJyYXkgb2YgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5cyBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBzaGFyZWQgdmFsdWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJbnRlcnNlY3Rpb24oYXJyYXlzLCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICAgICAgdmFyIGluY2x1ZGVzID0gY29tcGFyYXRvciA/IGFycmF5SW5jbHVkZXNXaXRoIDogYXJyYXlJbmNsdWRlcyxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheXNbMF0ubGVuZ3RoLFxuICAgICAgICAgIG90aExlbmd0aCA9IGFycmF5cy5sZW5ndGgsXG4gICAgICAgICAgb3RoSW5kZXggPSBvdGhMZW5ndGgsXG4gICAgICAgICAgY2FjaGVzID0gQXJyYXkob3RoTGVuZ3RoKSxcbiAgICAgICAgICBtYXhMZW5ndGggPSBJbmZpbml0eSxcbiAgICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgICAgd2hpbGUgKG90aEluZGV4LS0pIHtcbiAgICAgICAgdmFyIGFycmF5ID0gYXJyYXlzW290aEluZGV4XTtcbiAgICAgICAgaWYgKG90aEluZGV4ICYmIGl0ZXJhdGVlKSB7XG4gICAgICAgICAgYXJyYXkgPSBhcnJheU1hcChhcnJheSwgYmFzZVVuYXJ5KGl0ZXJhdGVlKSk7XG4gICAgICAgIH1cbiAgICAgICAgbWF4TGVuZ3RoID0gbmF0aXZlTWluKGFycmF5Lmxlbmd0aCwgbWF4TGVuZ3RoKTtcbiAgICAgICAgY2FjaGVzW290aEluZGV4XSA9ICFjb21wYXJhdG9yICYmIChpdGVyYXRlZSB8fCAobGVuZ3RoID49IDEyMCAmJiBhcnJheS5sZW5ndGggPj0gMTIwKSlcbiAgICAgICAgICA/IG5ldyBTZXRDYWNoZShvdGhJbmRleCAmJiBhcnJheSlcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGFycmF5ID0gYXJyYXlzWzBdO1xuXG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBzZWVuID0gY2FjaGVzWzBdO1xuXG4gICAgICBvdXRlcjpcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoICYmIHJlc3VsdC5sZW5ndGggPCBtYXhMZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgICAgIHZhbHVlID0gKGNvbXBhcmF0b3IgfHwgdmFsdWUgIT09IDApID8gdmFsdWUgOiAwO1xuICAgICAgICBpZiAoIShzZWVuXG4gICAgICAgICAgICAgID8gY2FjaGVIYXMoc2VlbiwgY29tcHV0ZWQpXG4gICAgICAgICAgICAgIDogaW5jbHVkZXMocmVzdWx0LCBjb21wdXRlZCwgY29tcGFyYXRvcilcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICBvdGhJbmRleCA9IG90aExlbmd0aDtcbiAgICAgICAgICB3aGlsZSAoLS1vdGhJbmRleCkge1xuICAgICAgICAgICAgdmFyIGNhY2hlID0gY2FjaGVzW290aEluZGV4XTtcbiAgICAgICAgICAgIGlmICghKGNhY2hlXG4gICAgICAgICAgICAgICAgICA/IGNhY2hlSGFzKGNhY2hlLCBjb21wdXRlZClcbiAgICAgICAgICAgICAgICAgIDogaW5jbHVkZXMoYXJyYXlzW290aEluZGV4XSwgY29tcHV0ZWQsIGNvbXBhcmF0b3IpKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHNlZW4pIHtcbiAgICAgICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pbnZlcnRgIGFuZCBgXy5pbnZlcnRCeWAgd2hpY2ggaW52ZXJ0c1xuICAgICAqIGBvYmplY3RgIHdpdGggdmFsdWVzIHRyYW5zZm9ybWVkIGJ5IGBpdGVyYXRlZWAgYW5kIHNldCBieSBgc2V0dGVyYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBgYWNjdW11bGF0b3JgIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gYWNjdW11bGF0b3IgVGhlIGluaXRpYWwgaW52ZXJ0ZWQgb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgYWNjdW11bGF0b3JgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJbnZlcnRlcihvYmplY3QsIHNldHRlciwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgICBiYXNlRm9yT3duKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGtleSwgb2JqZWN0KSB7XG4gICAgICAgIHNldHRlcihhY2N1bXVsYXRvciwgaXRlcmF0ZWUodmFsdWUpLCBrZXksIG9iamVjdCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pbnZva2VgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbFxuICAgICAqIG1ldGhvZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgbWV0aG9kIHRvIGludm9rZS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIHRoZSBtZXRob2Qgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBpbnZva2VkIG1ldGhvZC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSW52b2tlKG9iamVjdCwgcGF0aCwgYXJncykge1xuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG4gICAgICBvYmplY3QgPSBwYXJlbnQob2JqZWN0LCBwYXRoKTtcbiAgICAgIHZhciBmdW5jID0gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBvYmplY3RbdG9LZXkobGFzdChwYXRoKSldO1xuICAgICAgcmV0dXJuIGZ1bmMgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IGFwcGx5KGZ1bmMsIG9iamVjdCwgYXJncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcmd1bWVudHNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzQXJndW1lbnRzKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBhcmdzVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzQXJyYXlCdWZmZXJgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNBcnJheUJ1ZmZlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYXJyYXlCdWZmZXJUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNEYXRlYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBkYXRlIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc0RhdGUodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGRhdGVUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNFcXVhbGAgd2hpY2ggc3VwcG9ydHMgcGFydGlhbCBjb21wYXJpc29uc1xuICAgICAqIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuXG4gICAgICogIDEgLSBVbm9yZGVyZWQgY29tcGFyaXNvblxuICAgICAqICAyIC0gUGFydGlhbCBjb21wYXJpc29uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgdmFsdWVgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gICAgICBpZiAodmFsdWUgPT09IG90aGVyKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlID09IG51bGwgfHwgb3RoZXIgPT0gbnVsbCB8fCAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgIWlzT2JqZWN0TGlrZShvdGhlcikpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VJc0VxdWFsRGVlcCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGJhc2VJc0VxdWFsLCBzdGFjayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbGAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICAgICAqIGRlZXAgY29tcGFyaXNvbnMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAgICAgKiByZWZlcmVuY2VzIHRvIGJlIGNvbXBhcmVkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc0VxdWFsRGVlcChvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gICAgICB2YXIgb2JqSXNBcnIgPSBpc0FycmF5KG9iamVjdCksXG4gICAgICAgICAgb3RoSXNBcnIgPSBpc0FycmF5KG90aGVyKSxcbiAgICAgICAgICBvYmpUYWcgPSBvYmpJc0FyciA/IGFycmF5VGFnIDogZ2V0VGFnKG9iamVjdCksXG4gICAgICAgICAgb3RoVGFnID0gb3RoSXNBcnIgPyBhcnJheVRhZyA6IGdldFRhZyhvdGhlcik7XG5cbiAgICAgIG9ialRhZyA9IG9ialRhZyA9PSBhcmdzVGFnID8gb2JqZWN0VGFnIDogb2JqVGFnO1xuICAgICAgb3RoVGFnID0gb3RoVGFnID09IGFyZ3NUYWcgPyBvYmplY3RUYWcgOiBvdGhUYWc7XG5cbiAgICAgIHZhciBvYmpJc09iaiA9IG9ialRhZyA9PSBvYmplY3RUYWcsXG4gICAgICAgICAgb3RoSXNPYmogPSBvdGhUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgICAgIGlzU2FtZVRhZyA9IG9ialRhZyA9PSBvdGhUYWc7XG5cbiAgICAgIGlmIChpc1NhbWVUYWcgJiYgaXNCdWZmZXIob2JqZWN0KSkge1xuICAgICAgICBpZiAoIWlzQnVmZmVyKG90aGVyKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBvYmpJc0FyciA9IHRydWU7XG4gICAgICAgIG9iaklzT2JqID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoaXNTYW1lVGFnICYmICFvYmpJc09iaikge1xuICAgICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgICByZXR1cm4gKG9iaklzQXJyIHx8IGlzVHlwZWRBcnJheShvYmplY3QpKVxuICAgICAgICAgID8gZXF1YWxBcnJheXMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaylcbiAgICAgICAgICA6IGVxdWFsQnlUYWcob2JqZWN0LCBvdGhlciwgb2JqVGFnLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgICAgIH1cbiAgICAgIGlmICghKGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRykpIHtcbiAgICAgICAgdmFyIG9iaklzV3JhcHBlZCA9IG9iaklzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCAnX193cmFwcGVkX18nKSxcbiAgICAgICAgICAgIG90aElzV3JhcHBlZCA9IG90aElzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob3RoZXIsICdfX3dyYXBwZWRfXycpO1xuXG4gICAgICAgIGlmIChvYmpJc1dyYXBwZWQgfHwgb3RoSXNXcmFwcGVkKSB7XG4gICAgICAgICAgdmFyIG9ialVud3JhcHBlZCA9IG9iaklzV3JhcHBlZCA/IG9iamVjdC52YWx1ZSgpIDogb2JqZWN0LFxuICAgICAgICAgICAgICBvdGhVbndyYXBwZWQgPSBvdGhJc1dyYXBwZWQgPyBvdGhlci52YWx1ZSgpIDogb3RoZXI7XG5cbiAgICAgICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgICAgIHJldHVybiBlcXVhbEZ1bmMob2JqVW53cmFwcGVkLCBvdGhVbndyYXBwZWQsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFpc1NhbWVUYWcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgIHJldHVybiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNNYXBgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG1hcCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc01hcCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSBtYXBUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNNYXRjaGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IG1hdGNoRGF0YSBUaGUgcHJvcGVydHkgbmFtZXMsIHZhbHVlcywgYW5kIGNvbXBhcmUgZmxhZ3MgdG8gbWF0Y2guXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGlzIGEgbWF0Y2gsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgbWF0Y2hEYXRhLCBjdXN0b21pemVyKSB7XG4gICAgICB2YXIgaW5kZXggPSBtYXRjaERhdGEubGVuZ3RoLFxuICAgICAgICAgIGxlbmd0aCA9IGluZGV4LFxuICAgICAgICAgIG5vQ3VzdG9taXplciA9ICFjdXN0b21pemVyO1xuXG4gICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuICFsZW5ndGg7XG4gICAgICB9XG4gICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgIHZhciBkYXRhID0gbWF0Y2hEYXRhW2luZGV4XTtcbiAgICAgICAgaWYgKChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSlcbiAgICAgICAgICAgICAgPyBkYXRhWzFdICE9PSBvYmplY3RbZGF0YVswXV1cbiAgICAgICAgICAgICAgOiAhKGRhdGFbMF0gaW4gb2JqZWN0KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBkYXRhID0gbWF0Y2hEYXRhW2luZGV4XTtcbiAgICAgICAgdmFyIGtleSA9IGRhdGFbMF0sXG4gICAgICAgICAgICBvYmpWYWx1ZSA9IG9iamVjdFtrZXldLFxuICAgICAgICAgICAgc3JjVmFsdWUgPSBkYXRhWzFdO1xuXG4gICAgICAgIGlmIChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSkge1xuICAgICAgICAgIGlmIChvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHN0YWNrID0gbmV3IFN0YWNrO1xuICAgICAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCEocmVzdWx0ID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA/IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgfCBDT01QQVJFX1VOT1JERVJFRF9GTEFHLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgICAgICAgICA6IHJlc3VsdFxuICAgICAgICAgICAgICApKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hdGl2ZWAgd2l0aG91dCBiYWQgc2hpbSBjaGVja3MuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzTmF0aXZlKHZhbHVlKSB7XG4gICAgICBpZiAoIWlzT2JqZWN0KHZhbHVlKSB8fCBpc01hc2tlZCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIHBhdHRlcm4gPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gICAgICByZXR1cm4gcGF0dGVybi50ZXN0KHRvU291cmNlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNSZWdFeHBgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHJlZ2V4cCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc1JlZ0V4cCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gcmVnZXhwVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzU2V0YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzZXQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNTZXQodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGdldFRhZyh2YWx1ZSkgPT0gc2V0VGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzVHlwZWRBcnJheWAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNUeXBlZEFycmF5KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJlxuICAgICAgICBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3NbYmFzZUdldFRhZyh2YWx1ZSldO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLml0ZXJhdGVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSBbdmFsdWU9Xy5pZGVudGl0eV0gVGhlIHZhbHVlIHRvIGNvbnZlcnQgdG8gYW4gaXRlcmF0ZWUuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBpdGVyYXRlZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXRlcmF0ZWUodmFsdWUpIHtcbiAgICAgIC8vIERvbid0IHN0b3JlIHRoZSBgdHlwZW9mYCByZXN1bHQgaW4gYSB2YXJpYWJsZSB0byBhdm9pZCBhIEpJVCBidWcgaW4gU2FmYXJpIDkuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjAzNCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBpZGVudGl0eTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIGlzQXJyYXkodmFsdWUpXG4gICAgICAgICAgPyBiYXNlTWF0Y2hlc1Byb3BlcnR5KHZhbHVlWzBdLCB2YWx1ZVsxXSlcbiAgICAgICAgICA6IGJhc2VNYXRjaGVzKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ua2V5c2Agd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlS2V5cyhvYmplY3QpIHtcbiAgICAgIGlmICghaXNQcm90b3R5cGUob2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gbmF0aXZlS2V5cyhvYmplY3QpO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgZm9yICh2YXIga2V5IGluIE9iamVjdChvYmplY3QpKSB7XG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJiBrZXkgIT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ua2V5c0luYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VLZXlzSW4ob2JqZWN0KSB7XG4gICAgICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgcmV0dXJuIG5hdGl2ZUtleXNJbihvYmplY3QpO1xuICAgICAgfVxuICAgICAgdmFyIGlzUHJvdG8gPSBpc1Byb3RvdHlwZShvYmplY3QpLFxuICAgICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgIGlmICghKGtleSA9PSAnY29uc3RydWN0b3InICYmIChpc1Byb3RvIHx8ICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5sdGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIGBvdGhlcmAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTHQodmFsdWUsIG90aGVyKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPCBvdGhlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXBgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VNYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIHJlc3VsdCA9IGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pID8gQXJyYXkoY29sbGVjdGlvbi5sZW5ndGgpIDogW107XG5cbiAgICAgIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgcmVzdWx0WysraW5kZXhdID0gaXRlcmF0ZWUodmFsdWUsIGtleSwgY29sbGVjdGlvbik7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWF0Y2hlc2Agd2hpY2ggZG9lc24ndCBjbG9uZSBgc291cmNlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VNYXRjaGVzKHNvdXJjZSkge1xuICAgICAgdmFyIG1hdGNoRGF0YSA9IGdldE1hdGNoRGF0YShzb3VyY2UpO1xuICAgICAgaWYgKG1hdGNoRGF0YS5sZW5ndGggPT0gMSAmJiBtYXRjaERhdGFbMF1bMl0pIHtcbiAgICAgICAgcmV0dXJuIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKG1hdGNoRGF0YVswXVswXSwgbWF0Y2hEYXRhWzBdWzFdKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdCA9PT0gc291cmNlIHx8IGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBtYXRjaERhdGEpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzUHJvcGVydHlgIHdoaWNoIGRvZXNuJ3QgY2xvbmUgYHNyY1ZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VNYXRjaGVzUHJvcGVydHkocGF0aCwgc3JjVmFsdWUpIHtcbiAgICAgIGlmIChpc0tleShwYXRoKSAmJiBpc1N0cmljdENvbXBhcmFibGUoc3JjVmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZSh0b0tleShwYXRoKSwgc3JjVmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICB2YXIgb2JqVmFsdWUgPSBnZXQob2JqZWN0LCBwYXRoKTtcbiAgICAgICAgcmV0dXJuIChvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIG9ialZhbHVlID09PSBzcmNWYWx1ZSlcbiAgICAgICAgICA/IGhhc0luKG9iamVjdCwgcGF0aClcbiAgICAgICAgICA6IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgfCBDT01QQVJFX1VOT1JERVJFRF9GTEFHKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWVyZ2VgIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHNyY0luZGV4IFRoZSBpbmRleCBvZiBgc291cmNlYC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBtZXJnZWQgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gICAgICogIGNvdW50ZXJwYXJ0cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjaykge1xuICAgICAgaWYgKG9iamVjdCA9PT0gc291cmNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGJhc2VGb3Ioc291cmNlLCBmdW5jdGlvbihzcmNWYWx1ZSwga2V5KSB7XG4gICAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICAgIGlmIChpc09iamVjdChzcmNWYWx1ZSkpIHtcbiAgICAgICAgICBiYXNlTWVyZ2VEZWVwKG9iamVjdCwgc291cmNlLCBrZXksIHNyY0luZGV4LCBiYXNlTWVyZ2UsIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICAgICAgICA/IGN1c3RvbWl6ZXIoc2FmZUdldChvYmplY3QsIGtleSksIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0sIGtleXNJbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlTWVyZ2VgIGZvciBhcnJheXMgYW5kIG9iamVjdHMgd2hpY2ggcGVyZm9ybXNcbiAgICAgKiBkZWVwIG1lcmdlcyBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGVuYWJsaW5nIG9iamVjdHMgd2l0aCBjaXJjdWxhclxuICAgICAqIHJlZmVyZW5jZXMgdG8gYmUgbWVyZ2VkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIG1lcmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gbWVyZ2VGdW5jIFRoZSBmdW5jdGlvbiB0byBtZXJnZSB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gICAgICogIGNvdW50ZXJwYXJ0cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTWVyZ2VEZWVwKG9iamVjdCwgc291cmNlLCBrZXksIHNyY0luZGV4LCBtZXJnZUZ1bmMsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gICAgICB2YXIgb2JqVmFsdWUgPSBzYWZlR2V0KG9iamVjdCwga2V5KSxcbiAgICAgICAgICBzcmNWYWx1ZSA9IHNhZmVHZXQoc291cmNlLCBrZXkpLFxuICAgICAgICAgIHN0YWNrZWQgPSBzdGFjay5nZXQoc3JjVmFsdWUpO1xuXG4gICAgICBpZiAoc3RhY2tlZCkge1xuICAgICAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBzdGFja2VkKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgICA/IGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICB2YXIgaXNDb21tb24gPSBuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoaXNDb21tb24pIHtcbiAgICAgICAgdmFyIGlzQXJyID0gaXNBcnJheShzcmNWYWx1ZSksXG4gICAgICAgICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgaXNCdWZmZXIoc3JjVmFsdWUpLFxuICAgICAgICAgICAgaXNUeXBlZCA9ICFpc0FyciAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheShzcmNWYWx1ZSk7XG5cbiAgICAgICAgbmV3VmFsdWUgPSBzcmNWYWx1ZTtcbiAgICAgICAgaWYgKGlzQXJyIHx8IGlzQnVmZiB8fCBpc1R5cGVkKSB7XG4gICAgICAgICAgaWYgKGlzQXJyYXkob2JqVmFsdWUpKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IG9ialZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmIChpc0FycmF5TGlrZU9iamVjdChvYmpWYWx1ZSkpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gY29weUFycmF5KG9ialZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAoaXNCdWZmKSB7XG4gICAgICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBjbG9uZUJ1ZmZlcihzcmNWYWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKGlzVHlwZWQpIHtcbiAgICAgICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IGNsb25lVHlwZWRBcnJheShzcmNWYWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNQbGFpbk9iamVjdChzcmNWYWx1ZSkgfHwgaXNBcmd1bWVudHMoc3JjVmFsdWUpKSB7XG4gICAgICAgICAgbmV3VmFsdWUgPSBvYmpWYWx1ZTtcbiAgICAgICAgICBpZiAoaXNBcmd1bWVudHMob2JqVmFsdWUpKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRvUGxhaW5PYmplY3Qob2JqVmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmICghaXNPYmplY3Qob2JqVmFsdWUpIHx8IGlzRnVuY3Rpb24ob2JqVmFsdWUpKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IGluaXRDbG9uZU9iamVjdChzcmNWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpc0NvbW1vbikge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBtZXJnZSBvYmplY3RzIGFuZCBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgc3RhY2suc2V0KHNyY1ZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgICAgIG1lcmdlRnVuYyhuZXdWYWx1ZSwgc3JjVmFsdWUsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgICAgIHN0YWNrWydkZWxldGUnXShzcmNWYWx1ZSk7XG4gICAgICB9XG4gICAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubnRoYCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgaW5kZXggb2YgdGhlIGVsZW1lbnQgdG8gcmV0dXJuLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBudGggZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VOdGgoYXJyYXksIG4pIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBuICs9IG4gPCAwID8gbGVuZ3RoIDogMDtcbiAgICAgIHJldHVybiBpc0luZGV4KG4sIGxlbmd0aCkgPyBhcnJheVtuXSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5vcmRlckJ5YCB3aXRob3V0IHBhcmFtIGd1YXJkcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb25bXXxPYmplY3RbXXxzdHJpbmdbXX0gaXRlcmF0ZWVzIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBvcmRlcnMgVGhlIHNvcnQgb3JkZXJzIG9mIGBpdGVyYXRlZXNgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNvcnRlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBpdGVyYXRlZXMsIG9yZGVycykge1xuICAgICAgaWYgKGl0ZXJhdGVlcy5sZW5ndGgpIHtcbiAgICAgICAgaXRlcmF0ZWVzID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBmdW5jdGlvbihpdGVyYXRlZSkge1xuICAgICAgICAgIGlmIChpc0FycmF5KGl0ZXJhdGVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgICAgIHJldHVybiBiYXNlR2V0KHZhbHVlLCBpdGVyYXRlZS5sZW5ndGggPT09IDEgPyBpdGVyYXRlZVswXSA6IGl0ZXJhdGVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGl0ZXJhdGVlO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGl0ZXJhdGVlcyA9IFtpZGVudGl0eV07XG4gICAgICB9XG5cbiAgICAgIHZhciBpbmRleCA9IC0xO1xuICAgICAgaXRlcmF0ZWVzID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBiYXNlVW5hcnkoZ2V0SXRlcmF0ZWUoKSkpO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gYmFzZU1hcChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHZhciBjcml0ZXJpYSA9IGFycmF5TWFwKGl0ZXJhdGVlcywgZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgICAgICByZXR1cm4gaXRlcmF0ZWUodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHsgJ2NyaXRlcmlhJzogY3JpdGVyaWEsICdpbmRleCc6ICsraW5kZXgsICd2YWx1ZSc6IHZhbHVlIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGJhc2VTb3J0QnkocmVzdWx0LCBmdW5jdGlvbihvYmplY3QsIG90aGVyKSB7XG4gICAgICAgIHJldHVybiBjb21wYXJlTXVsdGlwbGUob2JqZWN0LCBvdGhlciwgb3JkZXJzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnBpY2tgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbFxuICAgICAqIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhzIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVBpY2sob2JqZWN0LCBwYXRocykge1xuICAgICAgcmV0dXJuIGJhc2VQaWNrQnkob2JqZWN0LCBwYXRocywgZnVuY3Rpb24odmFsdWUsIHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIGhhc0luKG9iamVjdCwgcGF0aCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiAgYF8ucGlja0J5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aHMgVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBwcm9wZXJ0eS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQaWNrQnkob2JqZWN0LCBwYXRocywgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwYXRocy5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0ge307XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBwYXRoID0gcGF0aHNbaW5kZXhdLFxuICAgICAgICAgICAgdmFsdWUgPSBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG5cbiAgICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgcGF0aCkpIHtcbiAgICAgICAgICBiYXNlU2V0KHJlc3VsdCwgY2FzdFBhdGgocGF0aCwgb2JqZWN0KSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVByb3BlcnR5YCB3aGljaCBzdXBwb3J0cyBkZWVwIHBhdGhzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQcm9wZXJ0eURlZXAocGF0aCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICByZXR1cm4gYmFzZUdldChvYmplY3QsIHBhdGgpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wdWxsQWxsQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAgICAgKiBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQdWxsQWxsKGFycmF5LCB2YWx1ZXMsIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgaW5kZXhPZiA9IGNvbXBhcmF0b3IgPyBiYXNlSW5kZXhPZldpdGggOiBiYXNlSW5kZXhPZixcbiAgICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICAgICAgc2VlbiA9IGFycmF5O1xuXG4gICAgICBpZiAoYXJyYXkgPT09IHZhbHVlcykge1xuICAgICAgICB2YWx1ZXMgPSBjb3B5QXJyYXkodmFsdWVzKTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVyYXRlZSkge1xuICAgICAgICBzZWVuID0gYXJyYXlNYXAoYXJyYXksIGJhc2VVbmFyeShpdGVyYXRlZSkpO1xuICAgICAgfVxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGZyb21JbmRleCA9IDAsXG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlc1tpbmRleF0sXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICAgICAgd2hpbGUgKChmcm9tSW5kZXggPSBpbmRleE9mKHNlZW4sIGNvbXB1dGVkLCBmcm9tSW5kZXgsIGNvbXBhcmF0b3IpKSA+IC0xKSB7XG4gICAgICAgICAgaWYgKHNlZW4gIT09IGFycmF5KSB7XG4gICAgICAgICAgICBzcGxpY2UuY2FsbChzZWVuLCBmcm9tSW5kZXgsIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzcGxpY2UuY2FsbChhcnJheSwgZnJvbUluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnB1bGxBdGAgd2l0aG91dCBzdXBwb3J0IGZvciBpbmRpdmlkdWFsXG4gICAgICogaW5kZXhlcyBvciBjYXB0dXJpbmcgdGhlIHJlbW92ZWQgZWxlbWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJbXX0gaW5kZXhlcyBUaGUgaW5kZXhlcyBvZiBlbGVtZW50cyB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVB1bGxBdChhcnJheSwgaW5kZXhlcykge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID8gaW5kZXhlcy5sZW5ndGggOiAwLFxuICAgICAgICAgIGxhc3RJbmRleCA9IGxlbmd0aCAtIDE7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIgaW5kZXggPSBpbmRleGVzW2xlbmd0aF07XG4gICAgICAgIGlmIChsZW5ndGggPT0gbGFzdEluZGV4IHx8IGluZGV4ICE9PSBwcmV2aW91cykge1xuICAgICAgICAgIHZhciBwcmV2aW91cyA9IGluZGV4O1xuICAgICAgICAgIGlmIChpc0luZGV4KGluZGV4KSkge1xuICAgICAgICAgICAgc3BsaWNlLmNhbGwoYXJyYXksIGluZGV4LCAxKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzZVVuc2V0KGFycmF5LCBpbmRleCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmFuZG9tYCB3aXRob3V0IHN1cHBvcnQgZm9yIHJldHVybmluZ1xuICAgICAqIGZsb2F0aW5nLXBvaW50IG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsb3dlciBUaGUgbG93ZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHVwcGVyIFRoZSB1cHBlciBib3VuZC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByYW5kb20gbnVtYmVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VSYW5kb20obG93ZXIsIHVwcGVyKSB7XG4gICAgICByZXR1cm4gbG93ZXIgKyBuYXRpdmVGbG9vcihuYXRpdmVSYW5kb20oKSAqICh1cHBlciAtIGxvd2VyICsgMSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJhbmdlYCBhbmQgYF8ucmFuZ2VSaWdodGAgd2hpY2ggZG9lc24ndFxuICAgICAqIGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHN0ZXAgVGhlIHZhbHVlIHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgYnkuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5nZSBvZiBudW1iZXJzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VSYW5nZShzdGFydCwgZW5kLCBzdGVwLCBmcm9tUmlnaHQpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChuYXRpdmVDZWlsKChlbmQgLSBzdGFydCkgLyAoc3RlcCB8fCAxKSksIDApLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICByZXN1bHRbZnJvbVJpZ2h0ID8gbGVuZ3RoIDogKytpbmRleF0gPSBzdGFydDtcbiAgICAgICAgc3RhcnQgKz0gc3RlcDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmVwZWF0YCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byByZXBlYXQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byByZXBlYXQgdGhlIHN0cmluZy5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByZXBlYXRlZCBzdHJpbmcuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVJlcGVhdChzdHJpbmcsIG4pIHtcbiAgICAgIHZhciByZXN1bHQgPSAnJztcbiAgICAgIGlmICghc3RyaW5nIHx8IG4gPCAxIHx8IG4gPiBNQVhfU0FGRV9JTlRFR0VSKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICAvLyBMZXZlcmFnZSB0aGUgZXhwb25lbnRpYXRpb24gYnkgc3F1YXJpbmcgYWxnb3JpdGhtIGZvciBhIGZhc3RlciByZXBlYXQuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXhwb25lbnRpYXRpb25fYnlfc3F1YXJpbmcgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKG4gJSAyKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IHN0cmluZztcbiAgICAgICAgfVxuICAgICAgICBuID0gbmF0aXZlRmxvb3IobiAvIDIpO1xuICAgICAgICBpZiAobikge1xuICAgICAgICAgIHN0cmluZyArPSBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgIH0gd2hpbGUgKG4pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlc3RgIHdoaWNoIGRvZXNuJ3QgdmFsaWRhdGUgb3IgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVJlc3QoZnVuYywgc3RhcnQpIHtcbiAgICAgIHJldHVybiBzZXRUb1N0cmluZyhvdmVyUmVzdChmdW5jLCBzdGFydCwgaWRlbnRpdHkpLCBmdW5jICsgJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNhbXBsZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIHNhbXBsZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNhbXBsZShjb2xsZWN0aW9uKSB7XG4gICAgICByZXR1cm4gYXJyYXlTYW1wbGUodmFsdWVzKGNvbGxlY3Rpb24pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zYW1wbGVTaXplYCB3aXRob3V0IHBhcmFtIGd1YXJkcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2FtcGxlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gc2FtcGxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnRzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTYW1wbGVTaXplKGNvbGxlY3Rpb24sIG4pIHtcbiAgICAgIHZhciBhcnJheSA9IHZhbHVlcyhjb2xsZWN0aW9uKTtcbiAgICAgIHJldHVybiBzaHVmZmxlU2VsZihhcnJheSwgYmFzZUNsYW1wKG4sIDAsIGFycmF5Lmxlbmd0aCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNldGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgcGF0aCBjcmVhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSwgY3VzdG9taXplcikge1xuICAgICAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICB9XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICAgICAgbGFzdEluZGV4ID0gbGVuZ3RoIC0gMSxcbiAgICAgICAgICBuZXN0ZWQgPSBvYmplY3Q7XG5cbiAgICAgIHdoaWxlIChuZXN0ZWQgIT0gbnVsbCAmJiArK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSksXG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHZhbHVlO1xuXG4gICAgICAgIGlmIChrZXkgPT09ICdfX3Byb3RvX18nIHx8IGtleSA9PT0gJ2NvbnN0cnVjdG9yJyB8fCBrZXkgPT09ICdwcm90b3R5cGUnKSB7XG4gICAgICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbmRleCAhPSBsYXN0SW5kZXgpIHtcbiAgICAgICAgICB2YXIgb2JqVmFsdWUgPSBuZXN0ZWRba2V5XTtcbiAgICAgICAgICBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXIgPyBjdXN0b21pemVyKG9ialZhbHVlLCBrZXksIG5lc3RlZCkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gaXNPYmplY3Qob2JqVmFsdWUpXG4gICAgICAgICAgICAgID8gb2JqVmFsdWVcbiAgICAgICAgICAgICAgOiAoaXNJbmRleChwYXRoW2luZGV4ICsgMV0pID8gW10gOiB7fSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGFzc2lnblZhbHVlKG5lc3RlZCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgICAgIG5lc3RlZCA9IG5lc3RlZFtrZXldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0RGF0YWAgd2l0aG91dCBzdXBwb3J0IGZvciBob3QgbG9vcCBzaG9ydGluZy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXNzb2NpYXRlIG1ldGFkYXRhIHdpdGguXG4gICAgICogQHBhcmFtIHsqfSBkYXRhIFRoZSBtZXRhZGF0YS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBiYXNlU2V0RGF0YSA9ICFtZXRhTWFwID8gaWRlbnRpdHkgOiBmdW5jdGlvbihmdW5jLCBkYXRhKSB7XG4gICAgICBtZXRhTWFwLnNldChmdW5jLCBkYXRhKTtcbiAgICAgIHJldHVybiBmdW5jO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0VG9TdHJpbmdgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaG90IGxvb3Agc2hvcnRpbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmcgVGhlIGB0b1N0cmluZ2AgcmVzdWx0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gICAgICovXG4gICAgdmFyIGJhc2VTZXRUb1N0cmluZyA9ICFkZWZpbmVQcm9wZXJ0eSA/IGlkZW50aXR5IDogZnVuY3Rpb24oZnVuYywgc3RyaW5nKSB7XG4gICAgICByZXR1cm4gZGVmaW5lUHJvcGVydHkoZnVuYywgJ3RvU3RyaW5nJywge1xuICAgICAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAgICAgJ2VudW1lcmFibGUnOiBmYWxzZSxcbiAgICAgICAgJ3ZhbHVlJzogY29uc3RhbnQoc3RyaW5nKSxcbiAgICAgICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNodWZmbGVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzaHVmZmxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNodWZmbGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTaHVmZmxlKGNvbGxlY3Rpb24pIHtcbiAgICAgIHJldHVybiBzaHVmZmxlU2VsZih2YWx1ZXMoY29sbGVjdGlvbikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNsaWNlYCB3aXRob3V0IGFuIGl0ZXJhdGVlIGNhbGwgZ3VhcmQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzbGljZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTbGljZShhcnJheSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgICAgIHN0YXJ0ID0gLXN0YXJ0ID4gbGVuZ3RoID8gMCA6IChsZW5ndGggKyBzdGFydCk7XG4gICAgICB9XG4gICAgICBlbmQgPSBlbmQgPiBsZW5ndGggPyBsZW5ndGggOiBlbmQ7XG4gICAgICBpZiAoZW5kIDwgMCkge1xuICAgICAgICBlbmQgKz0gbGVuZ3RoO1xuICAgICAgfVxuICAgICAgbGVuZ3RoID0gc3RhcnQgPiBlbmQgPyAwIDogKChlbmQgLSBzdGFydCkgPj4+IDApO1xuICAgICAgc3RhcnQgPj4+PSAwO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtpbmRleF0gPSBhcnJheVtpbmRleCArIHN0YXJ0XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29tZWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNvbWUoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgcmVzdWx0O1xuXG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgcmVzdWx0ID0gcHJlZGljYXRlKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gICAgICAgIHJldHVybiAhcmVzdWx0O1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gISFyZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydGVkSW5kZXhgIGFuZCBgXy5zb3J0ZWRMYXN0SW5kZXhgIHdoaWNoXG4gICAgICogcGVyZm9ybXMgYSBiaW5hcnkgc2VhcmNoIG9mIGBhcnJheWAgdG8gZGV0ZXJtaW5lIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgXG4gICAgICogc2hvdWxkIGJlIGluc2VydGVkIGludG8gYGFycmF5YCBpbiBvcmRlciB0byBtYWludGFpbiBpdHMgc29ydCBvcmRlci5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3JldEhpZ2hlc3RdIFNwZWNpZnkgcmV0dXJuaW5nIHRoZSBoaWdoZXN0IHF1YWxpZmllZCBpbmRleC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZFxuICAgICAqICBpbnRvIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSwgcmV0SGlnaGVzdCkge1xuICAgICAgdmFyIGxvdyA9IDAsXG4gICAgICAgICAgaGlnaCA9IGFycmF5ID09IG51bGwgPyBsb3cgOiBhcnJheS5sZW5ndGg7XG5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiYgdmFsdWUgPT09IHZhbHVlICYmIGhpZ2ggPD0gSEFMRl9NQVhfQVJSQVlfTEVOR1RIKSB7XG4gICAgICAgIHdoaWxlIChsb3cgPCBoaWdoKSB7XG4gICAgICAgICAgdmFyIG1pZCA9IChsb3cgKyBoaWdoKSA+Pj4gMSxcbiAgICAgICAgICAgICAgY29tcHV0ZWQgPSBhcnJheVttaWRdO1xuXG4gICAgICAgICAgaWYgKGNvbXB1dGVkICE9PSBudWxsICYmICFpc1N5bWJvbChjb21wdXRlZCkgJiZcbiAgICAgICAgICAgICAgKHJldEhpZ2hlc3QgPyAoY29tcHV0ZWQgPD0gdmFsdWUpIDogKGNvbXB1dGVkIDwgdmFsdWUpKSkge1xuICAgICAgICAgICAgbG93ID0gbWlkICsgMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaGlnaCA9IG1pZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhpZ2g7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVNvcnRlZEluZGV4QnkoYXJyYXksIHZhbHVlLCBpZGVudGl0eSwgcmV0SGlnaGVzdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydGVkSW5kZXhCeWAgYW5kIGBfLnNvcnRlZExhc3RJbmRleEJ5YFxuICAgICAqIHdoaWNoIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgYHZhbHVlYCBhbmQgZWFjaCBlbGVtZW50IG9mIGBhcnJheWAgdG8gY29tcHV0ZVxuICAgICAqIHRoZWlyIHNvcnQgcmFua2luZy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ7ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtyZXRIaWdoZXN0XSBTcGVjaWZ5IHJldHVybmluZyB0aGUgaGlnaGVzdCBxdWFsaWZpZWQgaW5kZXguXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTb3J0ZWRJbmRleEJ5KGFycmF5LCB2YWx1ZSwgaXRlcmF0ZWUsIHJldEhpZ2hlc3QpIHtcbiAgICAgIHZhciBsb3cgPSAwLFxuICAgICAgICAgIGhpZ2ggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmIChoaWdoID09PSAwKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuXG4gICAgICB2YWx1ZSA9IGl0ZXJhdGVlKHZhbHVlKTtcbiAgICAgIHZhciB2YWxJc05hTiA9IHZhbHVlICE9PSB2YWx1ZSxcbiAgICAgICAgICB2YWxJc051bGwgPSB2YWx1ZSA9PT0gbnVsbCxcbiAgICAgICAgICB2YWxJc1N5bWJvbCA9IGlzU3ltYm9sKHZhbHVlKSxcbiAgICAgICAgICB2YWxJc1VuZGVmaW5lZCA9IHZhbHVlID09PSB1bmRlZmluZWQ7XG5cbiAgICAgIHdoaWxlIChsb3cgPCBoaWdoKSB7XG4gICAgICAgIHZhciBtaWQgPSBuYXRpdmVGbG9vcigobG93ICsgaGlnaCkgLyAyKSxcbiAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUoYXJyYXlbbWlkXSksXG4gICAgICAgICAgICBvdGhJc0RlZmluZWQgPSBjb21wdXRlZCAhPT0gdW5kZWZpbmVkLFxuICAgICAgICAgICAgb3RoSXNOdWxsID0gY29tcHV0ZWQgPT09IG51bGwsXG4gICAgICAgICAgICBvdGhJc1JlZmxleGl2ZSA9IGNvbXB1dGVkID09PSBjb21wdXRlZCxcbiAgICAgICAgICAgIG90aElzU3ltYm9sID0gaXNTeW1ib2woY29tcHV0ZWQpO1xuXG4gICAgICAgIGlmICh2YWxJc05hTikge1xuICAgICAgICAgIHZhciBzZXRMb3cgPSByZXRIaWdoZXN0IHx8IG90aElzUmVmbGV4aXZlO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbElzVW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2V0TG93ID0gb3RoSXNSZWZsZXhpdmUgJiYgKHJldEhpZ2hlc3QgfHwgb3RoSXNEZWZpbmVkKTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWxJc051bGwpIHtcbiAgICAgICAgICBzZXRMb3cgPSBvdGhJc1JlZmxleGl2ZSAmJiBvdGhJc0RlZmluZWQgJiYgKHJldEhpZ2hlc3QgfHwgIW90aElzTnVsbCk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsSXNTeW1ib2wpIHtcbiAgICAgICAgICBzZXRMb3cgPSBvdGhJc1JlZmxleGl2ZSAmJiBvdGhJc0RlZmluZWQgJiYgIW90aElzTnVsbCAmJiAocmV0SGlnaGVzdCB8fCAhb3RoSXNTeW1ib2wpO1xuICAgICAgICB9IGVsc2UgaWYgKG90aElzTnVsbCB8fCBvdGhJc1N5bWJvbCkge1xuICAgICAgICAgIHNldExvdyA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldExvdyA9IHJldEhpZ2hlc3QgPyAoY29tcHV0ZWQgPD0gdmFsdWUpIDogKGNvbXB1dGVkIDwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXRMb3cpIHtcbiAgICAgICAgICBsb3cgPSBtaWQgKyAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGhpZ2ggPSBtaWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuYXRpdmVNaW4oaGlnaCwgTUFYX0FSUkFZX0lOREVYKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zb3J0ZWRVbmlxYCBhbmQgYF8uc29ydGVkVW5pcUJ5YCB3aXRob3V0XG4gICAgICogc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU29ydGVkVW5pcShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPyBpdGVyYXRlZSh2YWx1ZSkgOiB2YWx1ZTtcblxuICAgICAgICBpZiAoIWluZGV4IHx8ICFlcShjb21wdXRlZCwgc2VlbikpIHtcbiAgICAgICAgICB2YXIgc2VlbiA9IGNvbXB1dGVkO1xuICAgICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlID09PSAwID8gMCA6IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRvTnVtYmVyYCB3aGljaCBkb2Vzbid0IGVuc3VyZSBjb3JyZWN0XG4gICAgICogY29udmVyc2lvbnMgb2YgYmluYXJ5LCBoZXhhZGVjaW1hbCwgb3Igb2N0YWwgc3RyaW5nIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVRvTnVtYmVyKHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE5BTjtcbiAgICAgIH1cbiAgICAgIHJldHVybiArdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udG9TdHJpbmdgIHdoaWNoIGRvZXNuJ3QgY29udmVydCBudWxsaXNoXG4gICAgICogdmFsdWVzIHRvIGVtcHR5IHN0cmluZ3MuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RyaW5nLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VUb1N0cmluZyh2YWx1ZSkge1xuICAgICAgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5ncyB0byBhdm9pZCBhIHBlcmZvcm1hbmNlIGhpdCBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbnZlcnQgdmFsdWVzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgYmFzZVRvU3RyaW5nKSArICcnO1xuICAgICAgfVxuICAgICAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gc3ltYm9sVG9TdHJpbmcgPyBzeW1ib2xUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9ICh2YWx1ZSArICcnKTtcbiAgICAgIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmlxQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlVW5pcShhcnJheSwgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlcyxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgaXNDb21tb24gPSB0cnVlLFxuICAgICAgICAgIHJlc3VsdCA9IFtdLFxuICAgICAgICAgIHNlZW4gPSByZXN1bHQ7XG5cbiAgICAgIGlmIChjb21wYXJhdG9yKSB7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlc1dpdGg7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChsZW5ndGggPj0gTEFSR0VfQVJSQVlfU0laRSkge1xuICAgICAgICB2YXIgc2V0ID0gaXRlcmF0ZWUgPyBudWxsIDogY3JlYXRlU2V0KGFycmF5KTtcbiAgICAgICAgaWYgKHNldCkge1xuICAgICAgICAgIHJldHVybiBzZXRUb0FycmF5KHNldCk7XG4gICAgICAgIH1cbiAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgaW5jbHVkZXMgPSBjYWNoZUhhcztcbiAgICAgICAgc2VlbiA9IG5ldyBTZXRDYWNoZTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBzZWVuID0gaXRlcmF0ZWUgPyBbXSA6IHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIG91dGVyOlxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgICAgIHZhbHVlID0gKGNvbXBhcmF0b3IgfHwgdmFsdWUgIT09IDApID8gdmFsdWUgOiAwO1xuICAgICAgICBpZiAoaXNDb21tb24gJiYgY29tcHV0ZWQgPT09IGNvbXB1dGVkKSB7XG4gICAgICAgICAgdmFyIHNlZW5JbmRleCA9IHNlZW4ubGVuZ3RoO1xuICAgICAgICAgIHdoaWxlIChzZWVuSW5kZXgtLSkge1xuICAgICAgICAgICAgaWYgKHNlZW5bc2VlbkluZGV4XSA9PT0gY29tcHV0ZWQpIHtcbiAgICAgICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpdGVyYXRlZSkge1xuICAgICAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFpbmNsdWRlcyhzZWVuLCBjb21wdXRlZCwgY29tcGFyYXRvcikpIHtcbiAgICAgICAgICBpZiAoc2VlbiAhPT0gcmVzdWx0KSB7XG4gICAgICAgICAgICBzZWVuLnB1c2goY29tcHV0ZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5zZXRgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwcm9wZXJ0eSBwYXRoIHRvIHVuc2V0LlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgcHJvcGVydHkgaXMgZGVsZXRlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VVbnNldChvYmplY3QsIHBhdGgpIHtcbiAgICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuICAgICAgb2JqZWN0ID0gcGFyZW50KG9iamVjdCwgcGF0aCk7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgfHwgZGVsZXRlIG9iamVjdFt0b0tleShsYXN0KHBhdGgpKV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udXBkYXRlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gdXBkYXRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHVwZGF0ZXIgVGhlIGZ1bmN0aW9uIHRvIHByb2R1Y2UgdGhlIHVwZGF0ZWQgdmFsdWUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgcGF0aCBjcmVhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VVcGRhdGUob2JqZWN0LCBwYXRoLCB1cGRhdGVyLCBjdXN0b21pemVyKSB7XG4gICAgICByZXR1cm4gYmFzZVNldChvYmplY3QsIHBhdGgsIHVwZGF0ZXIoYmFzZUdldChvYmplY3QsIHBhdGgpKSwgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLmRyb3BXaGlsZWAgYW5kIGBfLnRha2VXaGlsZWBcbiAgICAgKiB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0Ryb3BdIFNwZWNpZnkgZHJvcHBpbmcgZWxlbWVudHMgaW5zdGVhZCBvZiB0YWtpbmcgdGhlbS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVdoaWxlKGFycmF5LCBwcmVkaWNhdGUsIGlzRHJvcCwgZnJvbVJpZ2h0KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIGluZGV4ID0gZnJvbVJpZ2h0ID8gbGVuZ3RoIDogLTE7XG5cbiAgICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpICYmXG4gICAgICAgIHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHt9XG5cbiAgICAgIHJldHVybiBpc0Ryb3BcbiAgICAgICAgPyBiYXNlU2xpY2UoYXJyYXksIChmcm9tUmlnaHQgPyAwIDogaW5kZXgpLCAoZnJvbVJpZ2h0ID8gaW5kZXggKyAxIDogbGVuZ3RoKSlcbiAgICAgICAgOiBiYXNlU2xpY2UoYXJyYXksIChmcm9tUmlnaHQgPyBpbmRleCArIDEgOiAwKSwgKGZyb21SaWdodCA/IGxlbmd0aCA6IGluZGV4KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYHdyYXBwZXJWYWx1ZWAgd2hpY2ggcmV0dXJucyB0aGUgcmVzdWx0IG9mXG4gICAgICogcGVyZm9ybWluZyBhIHNlcXVlbmNlIG9mIGFjdGlvbnMgb24gdGhlIHVud3JhcHBlZCBgdmFsdWVgLCB3aGVyZSBlYWNoXG4gICAgICogc3VjY2Vzc2l2ZSBhY3Rpb24gaXMgc3VwcGxpZWQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJldmlvdXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHVud3JhcHBlZCB2YWx1ZS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhY3Rpb25zIEFjdGlvbnMgdG8gcGVyZm9ybSB0byByZXNvbHZlIHRoZSB1bndyYXBwZWQgdmFsdWUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VXcmFwcGVyVmFsdWUodmFsdWUsIGFjdGlvbnMpIHtcbiAgICAgIHZhciByZXN1bHQgPSB2YWx1ZTtcbiAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcikge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQudmFsdWUoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheVJlZHVjZShhY3Rpb25zLCBmdW5jdGlvbihyZXN1bHQsIGFjdGlvbikge1xuICAgICAgICByZXR1cm4gYWN0aW9uLmZ1bmMuYXBwbHkoYWN0aW9uLnRoaXNBcmcsIGFycmF5UHVzaChbcmVzdWx0XSwgYWN0aW9uLmFyZ3MpKTtcbiAgICAgIH0sIHJlc3VsdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLnhvcmAsIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLCB0aGF0IGFjY2VwdHMgYW4gYXJyYXkgb2YgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5cyBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiB2YWx1ZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVhvcihhcnJheXMsIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXlzLmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiBsZW5ndGggPyBiYXNlVW5pcShhcnJheXNbMF0pIDogW107XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgYXJyYXkgPSBhcnJheXNbaW5kZXhdLFxuICAgICAgICAgICAgb3RoSW5kZXggPSAtMTtcblxuICAgICAgICB3aGlsZSAoKytvdGhJbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIGlmIChvdGhJbmRleCAhPSBpbmRleCkge1xuICAgICAgICAgICAgcmVzdWx0W2luZGV4XSA9IGJhc2VEaWZmZXJlbmNlKHJlc3VsdFtpbmRleF0gfHwgYXJyYXksIGFycmF5c1tvdGhJbmRleF0sIGl0ZXJhdGVlLCBjb21wYXJhdG9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlVW5pcShiYXNlRmxhdHRlbihyZXN1bHQsIDEpLCBpdGVyYXRlZSwgY29tcGFyYXRvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnppcE9iamVjdGAgd2hpY2ggYXNzaWducyB2YWx1ZXMgdXNpbmcgYGFzc2lnbkZ1bmNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gYXNzaWduRnVuYyBUaGUgZnVuY3Rpb24gdG8gYXNzaWduIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VaaXBPYmplY3QocHJvcHMsIHZhbHVlcywgYXNzaWduRnVuYykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoLFxuICAgICAgICAgIHZhbHNMZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IHt9O1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBpbmRleCA8IHZhbHNMZW5ndGggPyB2YWx1ZXNbaW5kZXhdIDogdW5kZWZpbmVkO1xuICAgICAgICBhc3NpZ25GdW5jKHJlc3VsdCwgcHJvcHNbaW5kZXhdLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhc3RzIGB2YWx1ZWAgdG8gYW4gZW1wdHkgYXJyYXkgaWYgaXQncyBub3QgYW4gYXJyYXkgbGlrZSBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyB0aGUgY2FzdCBhcnJheS1saWtlIG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXN0QXJyYXlMaWtlT2JqZWN0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2VPYmplY3QodmFsdWUpID8gdmFsdWUgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXN0cyBgdmFsdWVgIHRvIGBpZGVudGl0eWAgaWYgaXQncyBub3QgYSBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgY2FzdCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXN0RnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlIDogaWRlbnRpdHk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FzdHMgYHZhbHVlYCB0byBhIHBhdGggYXJyYXkgaWYgaXQncyBub3Qgb25lLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2FzdFBhdGgodmFsdWUsIG9iamVjdCkge1xuICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc0tleSh2YWx1ZSwgb2JqZWN0KSA/IFt2YWx1ZV0gOiBzdHJpbmdUb1BhdGgodG9TdHJpbmcodmFsdWUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIGBiYXNlUmVzdGAgYWxpYXMgd2hpY2ggY2FuIGJlIHJlcGxhY2VkIHdpdGggYGlkZW50aXR5YCBieSBtb2R1bGVcbiAgICAgKiByZXBsYWNlbWVudCBwbHVnaW5zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAdHlwZSB7RnVuY3Rpb259XG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICB2YXIgY2FzdFJlc3QgPSBiYXNlUmVzdDtcblxuICAgIC8qKlxuICAgICAqIENhc3RzIGBhcnJheWAgdG8gYSBzbGljZSBpZiBpdCdzIG5lZWRlZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0IFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IHNsaWNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhc3RTbGljZShhcnJheSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICAgIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuZ3RoIDogZW5kO1xuICAgICAgcmV0dXJuICghc3RhcnQgJiYgZW5kID49IGxlbmd0aCkgPyBhcnJheSA6IGJhc2VTbGljZShhcnJheSwgc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzaW1wbGUgd3JhcHBlciBhcm91bmQgdGhlIGdsb2JhbCBbYGNsZWFyVGltZW91dGBdKGh0dHBzOi8vbWRuLmlvL2NsZWFyVGltZW91dCkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfE9iamVjdH0gaWQgVGhlIHRpbWVyIGlkIG9yIHRpbWVvdXQgb2JqZWN0IG9mIHRoZSB0aW1lciB0byBjbGVhci5cbiAgICAgKi9cbiAgICB2YXIgY2xlYXJUaW1lb3V0ID0gY3R4Q2xlYXJUaW1lb3V0IHx8IGZ1bmN0aW9uKGlkKSB7XG4gICAgICByZXR1cm4gcm9vdC5jbGVhclRpbWVvdXQoaWQpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgIGBidWZmZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0J1ZmZlcn0gYnVmZmVyIFRoZSBidWZmZXIgdG8gY2xvbmUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYnVmZmVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lQnVmZmVyKGJ1ZmZlciwgaXNEZWVwKSB7XG4gICAgICBpZiAoaXNEZWVwKSB7XG4gICAgICAgIHJldHVybiBidWZmZXIuc2xpY2UoKTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSBidWZmZXIubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IGFsbG9jVW5zYWZlID8gYWxsb2NVbnNhZmUobGVuZ3RoKSA6IG5ldyBidWZmZXIuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICAgICAgYnVmZmVyLmNvcHkocmVzdWx0KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIGBhcnJheUJ1ZmZlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXlCdWZmZXJ9IGFycmF5QnVmZmVyIFRoZSBhcnJheSBidWZmZXIgdG8gY2xvbmUuXG4gICAgICogQHJldHVybnMge0FycmF5QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYXJyYXkgYnVmZmVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lQXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIpIHtcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgYXJyYXlCdWZmZXIuY29uc3RydWN0b3IoYXJyYXlCdWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICBuZXcgVWludDhBcnJheShyZXN1bHQpLnNldChuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcikpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgYGRhdGFWaWV3YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGRhdGFWaWV3IFRoZSBkYXRhIHZpZXcgdG8gY2xvbmUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgZGF0YSB2aWV3LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lRGF0YVZpZXcoZGF0YVZpZXcsIGlzRGVlcCkge1xuICAgICAgdmFyIGJ1ZmZlciA9IGlzRGVlcCA/IGNsb25lQXJyYXlCdWZmZXIoZGF0YVZpZXcuYnVmZmVyKSA6IGRhdGFWaWV3LmJ1ZmZlcjtcbiAgICAgIHJldHVybiBuZXcgZGF0YVZpZXcuY29uc3RydWN0b3IoYnVmZmVyLCBkYXRhVmlldy5ieXRlT2Zmc2V0LCBkYXRhVmlldy5ieXRlTGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHJlZ2V4cGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSByZWdleHAgVGhlIHJlZ2V4cCB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgcmVnZXhwLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lUmVnRXhwKHJlZ2V4cCkge1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyByZWdleHAuY29uc3RydWN0b3IocmVnZXhwLnNvdXJjZSwgcmVGbGFncy5leGVjKHJlZ2V4cCkpO1xuICAgICAgcmVzdWx0Lmxhc3RJbmRleCA9IHJlZ2V4cC5sYXN0SW5kZXg7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiB0aGUgYHN5bWJvbGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc3ltYm9sIFRoZSBzeW1ib2wgb2JqZWN0IHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBzeW1ib2wgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lU3ltYm9sKHN5bWJvbCkge1xuICAgICAgcmV0dXJuIHN5bWJvbFZhbHVlT2YgPyBPYmplY3Qoc3ltYm9sVmFsdWVPZi5jYWxsKHN5bWJvbCkpIDoge307XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIGB0eXBlZEFycmF5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHR5cGVkQXJyYXkgVGhlIHR5cGVkIGFycmF5IHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHR5cGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lVHlwZWRBcnJheSh0eXBlZEFycmF5LCBpc0RlZXApIHtcbiAgICAgIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKHR5cGVkQXJyYXkuYnVmZmVyKSA6IHR5cGVkQXJyYXkuYnVmZmVyO1xuICAgICAgcmV0dXJuIG5ldyB0eXBlZEFycmF5LmNvbnN0cnVjdG9yKGJ1ZmZlciwgdHlwZWRBcnJheS5ieXRlT2Zmc2V0LCB0eXBlZEFycmF5Lmxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tcGFyZXMgdmFsdWVzIHRvIHNvcnQgdGhlbSBpbiBhc2NlbmRpbmcgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzb3J0IG9yZGVyIGluZGljYXRvciBmb3IgYHZhbHVlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb21wYXJlQXNjZW5kaW5nKHZhbHVlLCBvdGhlcikge1xuICAgICAgaWYgKHZhbHVlICE9PSBvdGhlcikge1xuICAgICAgICB2YXIgdmFsSXNEZWZpbmVkID0gdmFsdWUgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHZhbElzTnVsbCA9IHZhbHVlID09PSBudWxsLFxuICAgICAgICAgICAgdmFsSXNSZWZsZXhpdmUgPSB2YWx1ZSA9PT0gdmFsdWUsXG4gICAgICAgICAgICB2YWxJc1N5bWJvbCA9IGlzU3ltYm9sKHZhbHVlKTtcblxuICAgICAgICB2YXIgb3RoSXNEZWZpbmVkID0gb3RoZXIgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG90aElzTnVsbCA9IG90aGVyID09PSBudWxsLFxuICAgICAgICAgICAgb3RoSXNSZWZsZXhpdmUgPSBvdGhlciA9PT0gb3RoZXIsXG4gICAgICAgICAgICBvdGhJc1N5bWJvbCA9IGlzU3ltYm9sKG90aGVyKTtcblxuICAgICAgICBpZiAoKCFvdGhJc051bGwgJiYgIW90aElzU3ltYm9sICYmICF2YWxJc1N5bWJvbCAmJiB2YWx1ZSA+IG90aGVyKSB8fFxuICAgICAgICAgICAgKHZhbElzU3ltYm9sICYmIG90aElzRGVmaW5lZCAmJiBvdGhJc1JlZmxleGl2ZSAmJiAhb3RoSXNOdWxsICYmICFvdGhJc1N5bWJvbCkgfHxcbiAgICAgICAgICAgICh2YWxJc051bGwgJiYgb3RoSXNEZWZpbmVkICYmIG90aElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAgICAgKCF2YWxJc0RlZmluZWQgJiYgb3RoSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICAgICAhdmFsSXNSZWZsZXhpdmUpIHtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKCF2YWxJc051bGwgJiYgIXZhbElzU3ltYm9sICYmICFvdGhJc1N5bWJvbCAmJiB2YWx1ZSA8IG90aGVyKSB8fFxuICAgICAgICAgICAgKG90aElzU3ltYm9sICYmIHZhbElzRGVmaW5lZCAmJiB2YWxJc1JlZmxleGl2ZSAmJiAhdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCkgfHxcbiAgICAgICAgICAgIChvdGhJc051bGwgJiYgdmFsSXNEZWZpbmVkICYmIHZhbElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAgICAgKCFvdGhJc0RlZmluZWQgJiYgdmFsSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICAgICAhb3RoSXNSZWZsZXhpdmUpIHtcbiAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZWQgYnkgYF8ub3JkZXJCeWAgdG8gY29tcGFyZSBtdWx0aXBsZSBwcm9wZXJ0aWVzIG9mIGEgdmFsdWUgdG8gYW5vdGhlclxuICAgICAqIGFuZCBzdGFibGUgc29ydCB0aGVtLlxuICAgICAqXG4gICAgICogSWYgYG9yZGVyc2AgaXMgdW5zcGVjaWZpZWQsIGFsbCB2YWx1ZXMgYXJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIuIE90aGVyd2lzZSxcbiAgICAgKiBzcGVjaWZ5IGFuIG9yZGVyIG9mIFwiZGVzY1wiIGZvciBkZXNjZW5kaW5nIG9yIFwiYXNjXCIgZm9yIGFzY2VuZGluZyBzb3J0IG9yZGVyXG4gICAgICogb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtib29sZWFuW118c3RyaW5nW119IG9yZGVycyBUaGUgb3JkZXIgdG8gc29ydCBieSBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzb3J0IG9yZGVyIGluZGljYXRvciBmb3IgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29tcGFyZU11bHRpcGxlKG9iamVjdCwgb3RoZXIsIG9yZGVycykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgb2JqQ3JpdGVyaWEgPSBvYmplY3QuY3JpdGVyaWEsXG4gICAgICAgICAgb3RoQ3JpdGVyaWEgPSBvdGhlci5jcml0ZXJpYSxcbiAgICAgICAgICBsZW5ndGggPSBvYmpDcml0ZXJpYS5sZW5ndGgsXG4gICAgICAgICAgb3JkZXJzTGVuZ3RoID0gb3JkZXJzLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGNvbXBhcmVBc2NlbmRpbmcob2JqQ3JpdGVyaWFbaW5kZXhdLCBvdGhDcml0ZXJpYVtpbmRleF0pO1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgaWYgKGluZGV4ID49IG9yZGVyc0xlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIG9yZGVyID0gb3JkZXJzW2luZGV4XTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0ICogKG9yZGVyID09ICdkZXNjJyA/IC0xIDogMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIEZpeGVzIGFuIGBBcnJheSNzb3J0YCBidWcgaW4gdGhlIEpTIGVuZ2luZSBlbWJlZGRlZCBpbiBBZG9iZSBhcHBsaWNhdGlvbnNcbiAgICAgIC8vIHRoYXQgY2F1c2VzIGl0LCB1bmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMsIHRvIHByb3ZpZGUgdGhlIHNhbWUgdmFsdWUgZm9yXG4gICAgICAvLyBgb2JqZWN0YCBhbmQgYG90aGVyYC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qYXNoa2VuYXMvdW5kZXJzY29yZS9wdWxsLzEyNDdcbiAgICAgIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAvL1xuICAgICAgLy8gVGhpcyBhbHNvIGVuc3VyZXMgYSBzdGFibGUgc29ydCBpbiBWOCBhbmQgb3RoZXIgZW5naW5lcy5cbiAgICAgIC8vIFNlZSBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD05MCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgcmV0dXJuIG9iamVjdC5pbmRleCAtIG90aGVyLmluZGV4O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgdGhhdCBpcyB0aGUgY29tcG9zaXRpb24gb2YgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLFxuICAgICAqIHBsYWNlaG9sZGVycywgYW5kIHByb3ZpZGVkIGFyZ3VtZW50cyBpbnRvIGEgc2luZ2xlIGFycmF5IG9mIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgcHJvdmlkZWQgYXJndW1lbnRzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhcnRpYWxzIFRoZSBhcmd1bWVudHMgdG8gcHJlcGVuZCB0byB0aG9zZSBwcm92aWRlZC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBob2xkZXJzIFRoZSBgcGFydGlhbHNgIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAgICogQHBhcmFtcyB7Ym9vbGVhbn0gW2lzQ3VycmllZF0gU3BlY2lmeSBjb21wb3NpbmcgZm9yIGEgY3VycmllZCBmdW5jdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21wb3NlZCBhcmd1bWVudHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29tcG9zZUFyZ3MoYXJncywgcGFydGlhbHMsIGhvbGRlcnMsIGlzQ3VycmllZCkge1xuICAgICAgdmFyIGFyZ3NJbmRleCA9IC0xLFxuICAgICAgICAgIGFyZ3NMZW5ndGggPSBhcmdzLmxlbmd0aCxcbiAgICAgICAgICBob2xkZXJzTGVuZ3RoID0gaG9sZGVycy5sZW5ndGgsXG4gICAgICAgICAgbGVmdEluZGV4ID0gLTEsXG4gICAgICAgICAgbGVmdExlbmd0aCA9IHBhcnRpYWxzLmxlbmd0aCxcbiAgICAgICAgICByYW5nZUxlbmd0aCA9IG5hdGl2ZU1heChhcmdzTGVuZ3RoIC0gaG9sZGVyc0xlbmd0aCwgMCksXG4gICAgICAgICAgcmVzdWx0ID0gQXJyYXkobGVmdExlbmd0aCArIHJhbmdlTGVuZ3RoKSxcbiAgICAgICAgICBpc1VuY3VycmllZCA9ICFpc0N1cnJpZWQ7XG5cbiAgICAgIHdoaWxlICgrK2xlZnRJbmRleCA8IGxlZnRMZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0W2xlZnRJbmRleF0gPSBwYXJ0aWFsc1tsZWZ0SW5kZXhdO1xuICAgICAgfVxuICAgICAgd2hpbGUgKCsrYXJnc0luZGV4IDwgaG9sZGVyc0xlbmd0aCkge1xuICAgICAgICBpZiAoaXNVbmN1cnJpZWQgfHwgYXJnc0luZGV4IDwgYXJnc0xlbmd0aCkge1xuICAgICAgICAgIHJlc3VsdFtob2xkZXJzW2FyZ3NJbmRleF1dID0gYXJnc1thcmdzSW5kZXhdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB3aGlsZSAocmFuZ2VMZW5ndGgtLSkge1xuICAgICAgICByZXN1bHRbbGVmdEluZGV4KytdID0gYXJnc1thcmdzSW5kZXgrK107XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgY29tcG9zZUFyZ3NgIGV4Y2VwdCB0aGF0IHRoZSBhcmd1bWVudHMgY29tcG9zaXRpb25cbiAgICAgKiBpcyB0YWlsb3JlZCBmb3IgYF8ucGFydGlhbFJpZ2h0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgcHJvdmlkZWQgYXJndW1lbnRzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhcnRpYWxzIFRoZSBhcmd1bWVudHMgdG8gYXBwZW5kIHRvIHRob3NlIHByb3ZpZGVkLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGhvbGRlcnMgVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW1zIHtib29sZWFufSBbaXNDdXJyaWVkXSBTcGVjaWZ5IGNvbXBvc2luZyBmb3IgYSBjdXJyaWVkIGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNvbXBvc2VkIGFyZ3VtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb21wb3NlQXJnc1JpZ2h0KGFyZ3MsIHBhcnRpYWxzLCBob2xkZXJzLCBpc0N1cnJpZWQpIHtcbiAgICAgIHZhciBhcmdzSW5kZXggPSAtMSxcbiAgICAgICAgICBhcmdzTGVuZ3RoID0gYXJncy5sZW5ndGgsXG4gICAgICAgICAgaG9sZGVyc0luZGV4ID0gLTEsXG4gICAgICAgICAgaG9sZGVyc0xlbmd0aCA9IGhvbGRlcnMubGVuZ3RoLFxuICAgICAgICAgIHJpZ2h0SW5kZXggPSAtMSxcbiAgICAgICAgICByaWdodExlbmd0aCA9IHBhcnRpYWxzLmxlbmd0aCxcbiAgICAgICAgICByYW5nZUxlbmd0aCA9IG5hdGl2ZU1heChhcmdzTGVuZ3RoIC0gaG9sZGVyc0xlbmd0aCwgMCksXG4gICAgICAgICAgcmVzdWx0ID0gQXJyYXkocmFuZ2VMZW5ndGggKyByaWdodExlbmd0aCksXG4gICAgICAgICAgaXNVbmN1cnJpZWQgPSAhaXNDdXJyaWVkO1xuXG4gICAgICB3aGlsZSAoKythcmdzSW5kZXggPCByYW5nZUxlbmd0aCkge1xuICAgICAgICByZXN1bHRbYXJnc0luZGV4XSA9IGFyZ3NbYXJnc0luZGV4XTtcbiAgICAgIH1cbiAgICAgIHZhciBvZmZzZXQgPSBhcmdzSW5kZXg7XG4gICAgICB3aGlsZSAoKytyaWdodEluZGV4IDwgcmlnaHRMZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0W29mZnNldCArIHJpZ2h0SW5kZXhdID0gcGFydGlhbHNbcmlnaHRJbmRleF07XG4gICAgICB9XG4gICAgICB3aGlsZSAoKytob2xkZXJzSW5kZXggPCBob2xkZXJzTGVuZ3RoKSB7XG4gICAgICAgIGlmIChpc1VuY3VycmllZCB8fCBhcmdzSW5kZXggPCBhcmdzTGVuZ3RoKSB7XG4gICAgICAgICAgcmVzdWx0W29mZnNldCArIGhvbGRlcnNbaG9sZGVyc0luZGV4XV0gPSBhcmdzW2FyZ3NJbmRleCsrXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3BpZXMgdGhlIHZhbHVlcyBvZiBgc291cmNlYCB0byBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIGZyb20uXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5PVtdXSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgdG8uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29weUFycmF5KHNvdXJjZSwgYXJyYXkpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG5cbiAgICAgIGFycmF5IHx8IChhcnJheSA9IEFycmF5KGxlbmd0aCkpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgYXJyYXlbaW5kZXhdID0gc291cmNlW2luZGV4XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3BpZXMgcHJvcGVydGllcyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycyB0byBjb3B5LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyB0by5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb3BpZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29weU9iamVjdChzb3VyY2UsIHByb3BzLCBvYmplY3QsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIHZhciBpc05ldyA9ICFvYmplY3Q7XG4gICAgICBvYmplY3QgfHwgKG9iamVjdCA9IHt9KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0gcHJvcHNbaW5kZXhdO1xuXG4gICAgICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgICAgICA/IGN1c3RvbWl6ZXIob2JqZWN0W2tleV0sIHNvdXJjZVtrZXldLCBrZXksIG9iamVjdCwgc291cmNlKVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbmV3VmFsdWUgPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOZXcpIHtcbiAgICAgICAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvcGllcyBvd24gc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyB0by5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvcHlTeW1ib2xzKHNvdXJjZSwgb2JqZWN0KSB7XG4gICAgICByZXR1cm4gY29weU9iamVjdChzb3VyY2UsIGdldFN5bWJvbHMoc291cmNlKSwgb2JqZWN0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3BpZXMgb3duIGFuZCBpbmhlcml0ZWQgc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyB0by5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvcHlTeW1ib2xzSW4oc291cmNlLCBvYmplY3QpIHtcbiAgICAgIHJldHVybiBjb3B5T2JqZWN0KHNvdXJjZSwgZ2V0U3ltYm9sc0luKHNvdXJjZSksIG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uZ3JvdXBCeWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGFjY3VtdWxhdG9yIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaW5pdGlhbGl6ZXJdIFRoZSBhY2N1bXVsYXRvciBvYmplY3QgaW5pdGlhbGl6ZXIuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWdncmVnYXRvciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVBZ2dyZWdhdG9yKHNldHRlciwgaW5pdGlhbGl6ZXIpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUFnZ3JlZ2F0b3IgOiBiYXNlQWdncmVnYXRvcixcbiAgICAgICAgICAgIGFjY3VtdWxhdG9yID0gaW5pdGlhbGl6ZXIgPyBpbml0aWFsaXplcigpIDoge307XG5cbiAgICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgc2V0dGVyLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMiksIGFjY3VtdWxhdG9yKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uYXNzaWduYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gYXNzaWduZXIgVGhlIGZ1bmN0aW9uIHRvIGFzc2lnbiB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYXNzaWduZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQXNzaWduZXIoYXNzaWduZXIpIHtcbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIHNvdXJjZXMpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgICBsZW5ndGggPSBzb3VyY2VzLmxlbmd0aCxcbiAgICAgICAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPiAxID8gc291cmNlc1tsZW5ndGggLSAxXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGd1YXJkID0gbGVuZ3RoID4gMiA/IHNvdXJjZXNbMl0gOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgY3VzdG9taXplciA9IChhc3NpZ25lci5sZW5ndGggPiAzICYmIHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicpXG4gICAgICAgICAgPyAobGVuZ3RoLS0sIGN1c3RvbWl6ZXIpXG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgICAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPCAzID8gdW5kZWZpbmVkIDogY3VzdG9taXplcjtcbiAgICAgICAgICBsZW5ndGggPSAxO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzW2luZGV4XTtcbiAgICAgICAgICBpZiAoc291cmNlKSB7XG4gICAgICAgICAgICBhc3NpZ25lcihvYmplY3QsIHNvdXJjZSwgaW5kZXgsIGN1c3RvbWl6ZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBiYXNlRWFjaGAgb3IgYGJhc2VFYWNoUmlnaHRgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGEgY29sbGVjdGlvbi5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBiYXNlIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUJhc2VFYWNoKGVhY2hGdW5jLCBmcm9tUmlnaHQpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgICAgICAgIHJldHVybiBlYWNoRnVuYyhjb2xsZWN0aW9uLCBpdGVyYXRlZSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoLFxuICAgICAgICAgICAgaW5kZXggPSBmcm9tUmlnaHQgPyBsZW5ndGggOiAtMSxcbiAgICAgICAgICAgIGl0ZXJhYmxlID0gT2JqZWN0KGNvbGxlY3Rpb24pO1xuXG4gICAgICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgICAgICAgaWYgKGl0ZXJhdGVlKGl0ZXJhYmxlW2luZGV4XSwgaW5kZXgsIGl0ZXJhYmxlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGJhc2UgZnVuY3Rpb24gZm9yIG1ldGhvZHMgbGlrZSBgXy5mb3JJbmAgYW5kIGBfLmZvck93bmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJhc2UgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQmFzZUZvcihmcm9tUmlnaHQpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzRnVuYykge1xuICAgICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICAgIGl0ZXJhYmxlID0gT2JqZWN0KG9iamVjdCksXG4gICAgICAgICAgICBwcm9wcyA9IGtleXNGdW5jKG9iamVjdCksXG4gICAgICAgICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgICAgdmFyIGtleSA9IHByb3BzW2Zyb21SaWdodCA/IGxlbmd0aCA6ICsraW5kZXhdO1xuICAgICAgICAgIGlmIChpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgdG8gaW52b2tlIGl0IHdpdGggdGhlIG9wdGlvbmFsIGB0aGlzYFxuICAgICAqIGJpbmRpbmcgb2YgYHRoaXNBcmdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHsqfSBbdGhpc0FyZ10gVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUJpbmQoZnVuYywgYml0bWFzaywgdGhpc0FyZykge1xuICAgICAgdmFyIGlzQmluZCA9IGJpdG1hc2sgJiBXUkFQX0JJTkRfRkxBRyxcbiAgICAgICAgICBDdG9yID0gY3JlYXRlQ3RvcihmdW5jKTtcblxuICAgICAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICAgICAgdmFyIGZuID0gKHRoaXMgJiYgdGhpcyAhPT0gcm9vdCAmJiB0aGlzIGluc3RhbmNlb2Ygd3JhcHBlcikgPyBDdG9yIDogZnVuYztcbiAgICAgICAgcmV0dXJuIGZuLmFwcGx5KGlzQmluZCA/IHRoaXNBcmcgOiB0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8ubG93ZXJGaXJzdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2ROYW1lIFRoZSBuYW1lIG9mIHRoZSBgU3RyaW5nYCBjYXNlIG1ldGhvZCB0byB1c2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FzZSBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVDYXNlRmlyc3QobWV0aG9kTmFtZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuXG4gICAgICAgIHZhciBzdHJTeW1ib2xzID0gaGFzVW5pY29kZShzdHJpbmcpXG4gICAgICAgICAgPyBzdHJpbmdUb0FycmF5KHN0cmluZylcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICB2YXIgY2hyID0gc3RyU3ltYm9sc1xuICAgICAgICAgID8gc3RyU3ltYm9sc1swXVxuICAgICAgICAgIDogc3RyaW5nLmNoYXJBdCgwKTtcblxuICAgICAgICB2YXIgdHJhaWxpbmcgPSBzdHJTeW1ib2xzXG4gICAgICAgICAgPyBjYXN0U2xpY2Uoc3RyU3ltYm9scywgMSkuam9pbignJylcbiAgICAgICAgICA6IHN0cmluZy5zbGljZSgxKTtcblxuICAgICAgICByZXR1cm4gY2hyW21ldGhvZE5hbWVdKCkgKyB0cmFpbGluZztcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uY2FtZWxDYXNlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRvIGNvbWJpbmUgZWFjaCB3b3JkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbXBvdW5kZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQ29tcG91bmRlcihjYWxsYmFjaykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAgICByZXR1cm4gYXJyYXlSZWR1Y2Uod29yZHMoZGVidXJyKHN0cmluZykucmVwbGFjZShyZUFwb3MsICcnKSksIGNhbGxiYWNrLCAnJyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHByb2R1Y2VzIGFuIGluc3RhbmNlIG9mIGBDdG9yYCByZWdhcmRsZXNzIG9mXG4gICAgICogd2hldGhlciBpdCB3YXMgaW52b2tlZCBhcyBwYXJ0IG9mIGEgYG5ld2AgZXhwcmVzc2lvbiBvciBieSBgY2FsbGAgb3IgYGFwcGx5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gQ3RvciBUaGUgY29uc3RydWN0b3IgdG8gd3JhcC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUN0b3IoQ3Rvcikge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAvLyBVc2UgYSBgc3dpdGNoYCBzdGF0ZW1lbnQgdG8gd29yayB3aXRoIGNsYXNzIGNvbnN0cnVjdG9ycy4gU2VlXG4gICAgICAgIC8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtZnVuY3Rpb24tb2JqZWN0cy1jYWxsLXRoaXNhcmd1bWVudC1hcmd1bWVudHNsaXN0XG4gICAgICAgIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEN0b3I7XG4gICAgICAgICAgY2FzZSAxOiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSk7XG4gICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgICAgICAgY2FzZSAzOiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgICAgICAgY2FzZSA0OiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSk7XG4gICAgICAgICAgY2FzZSA1OiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSwgYXJnc1s0XSk7XG4gICAgICAgICAgY2FzZSA2OiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSwgYXJnc1s0XSwgYXJnc1s1XSk7XG4gICAgICAgICAgY2FzZSA3OiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSwgYXJnc1s0XSwgYXJnc1s1XSwgYXJnc1s2XSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRoaXNCaW5kaW5nID0gYmFzZUNyZWF0ZShDdG9yLnByb3RvdHlwZSksXG4gICAgICAgICAgICByZXN1bHQgPSBDdG9yLmFwcGx5KHRoaXNCaW5kaW5nLCBhcmdzKTtcblxuICAgICAgICAvLyBNaW1pYyB0aGUgY29uc3RydWN0b3IncyBgcmV0dXJuYCBiZWhhdmlvci5cbiAgICAgICAgLy8gU2VlIGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jeDEzLjIuMiBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgICByZXR1cm4gaXNPYmplY3QocmVzdWx0KSA/IHJlc3VsdCA6IHRoaXNCaW5kaW5nO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgdG8gZW5hYmxlIGN1cnJ5aW5nLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGFyaXR5IFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVDdXJyeShmdW5jLCBiaXRtYXNrLCBhcml0eSkge1xuICAgICAgdmFyIEN0b3IgPSBjcmVhdGVDdG9yKGZ1bmMpO1xuXG4gICAgICBmdW5jdGlvbiB3cmFwcGVyKCkge1xuICAgICAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCxcbiAgICAgICAgICAgIGFyZ3MgPSBBcnJheShsZW5ndGgpLFxuICAgICAgICAgICAgaW5kZXggPSBsZW5ndGgsXG4gICAgICAgICAgICBwbGFjZWhvbGRlciA9IGdldEhvbGRlcih3cmFwcGVyKTtcblxuICAgICAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICAgIGFyZ3NbaW5kZXhdID0gYXJndW1lbnRzW2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaG9sZGVycyA9IChsZW5ndGggPCAzICYmIGFyZ3NbMF0gIT09IHBsYWNlaG9sZGVyICYmIGFyZ3NbbGVuZ3RoIC0gMV0gIT09IHBsYWNlaG9sZGVyKVxuICAgICAgICAgID8gW11cbiAgICAgICAgICA6IHJlcGxhY2VIb2xkZXJzKGFyZ3MsIHBsYWNlaG9sZGVyKTtcblxuICAgICAgICBsZW5ndGggLT0gaG9sZGVycy5sZW5ndGg7XG4gICAgICAgIGlmIChsZW5ndGggPCBhcml0eSkge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVSZWN1cnJ5KFxuICAgICAgICAgICAgZnVuYywgYml0bWFzaywgY3JlYXRlSHlicmlkLCB3cmFwcGVyLnBsYWNlaG9sZGVyLCB1bmRlZmluZWQsXG4gICAgICAgICAgICBhcmdzLCBob2xkZXJzLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgYXJpdHkgLSBsZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBmbiA9ICh0aGlzICYmIHRoaXMgIT09IHJvb3QgJiYgdGhpcyBpbnN0YW5jZW9mIHdyYXBwZXIpID8gQ3RvciA6IGZ1bmM7XG4gICAgICAgIHJldHVybiBhcHBseShmbiwgdGhpcywgYXJncyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYF8uZmluZGAgb3IgYF8uZmluZExhc3RgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmaW5kSW5kZXhGdW5jIFRoZSBmdW5jdGlvbiB0byBmaW5kIHRoZSBjb2xsZWN0aW9uIGluZGV4LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZpbmQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlRmluZChmaW5kSW5kZXhGdW5jKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgcHJlZGljYXRlLCBmcm9tSW5kZXgpIHtcbiAgICAgICAgdmFyIGl0ZXJhYmxlID0gT2JqZWN0KGNvbGxlY3Rpb24pO1xuICAgICAgICBpZiAoIWlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgICAgICAgdmFyIGl0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKTtcbiAgICAgICAgICBjb2xsZWN0aW9uID0ga2V5cyhjb2xsZWN0aW9uKTtcbiAgICAgICAgICBwcmVkaWNhdGUgPSBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sIGtleSwgaXRlcmFibGUpOyB9O1xuICAgICAgICB9XG4gICAgICAgIHZhciBpbmRleCA9IGZpbmRJbmRleEZ1bmMoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBmcm9tSW5kZXgpO1xuICAgICAgICByZXR1cm4gaW5kZXggPiAtMSA/IGl0ZXJhYmxlW2l0ZXJhdGVlID8gY29sbGVjdGlvbltpbmRleF0gOiBpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgXy5mbG93YCBvciBgXy5mbG93UmlnaHRgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmbG93IGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUZsb3coZnJvbVJpZ2h0KSB7XG4gICAgICByZXR1cm4gZmxhdFJlc3QoZnVuY3Rpb24oZnVuY3MpIHtcbiAgICAgICAgdmFyIGxlbmd0aCA9IGZ1bmNzLmxlbmd0aCxcbiAgICAgICAgICAgIGluZGV4ID0gbGVuZ3RoLFxuICAgICAgICAgICAgcHJlcmVxID0gTG9kYXNoV3JhcHBlci5wcm90b3R5cGUudGhydTtcblxuICAgICAgICBpZiAoZnJvbVJpZ2h0KSB7XG4gICAgICAgICAgZnVuY3MucmV2ZXJzZSgpO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgICAgdmFyIGZ1bmMgPSBmdW5jc1tpbmRleF07XG4gICAgICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHByZXJlcSAmJiAhd3JhcHBlciAmJiBnZXRGdW5jTmFtZShmdW5jKSA9PSAnd3JhcHBlcicpIHtcbiAgICAgICAgICAgIHZhciB3cmFwcGVyID0gbmV3IExvZGFzaFdyYXBwZXIoW10sIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpbmRleCA9IHdyYXBwZXIgPyBpbmRleCA6IGxlbmd0aDtcbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICBmdW5jID0gZnVuY3NbaW5kZXhdO1xuXG4gICAgICAgICAgdmFyIGZ1bmNOYW1lID0gZ2V0RnVuY05hbWUoZnVuYyksXG4gICAgICAgICAgICAgIGRhdGEgPSBmdW5jTmFtZSA9PSAnd3JhcHBlcicgPyBnZXREYXRhKGZ1bmMpIDogdW5kZWZpbmVkO1xuXG4gICAgICAgICAgaWYgKGRhdGEgJiYgaXNMYXppYWJsZShkYXRhWzBdKSAmJlxuICAgICAgICAgICAgICAgIGRhdGFbMV0gPT0gKFdSQVBfQVJZX0ZMQUcgfCBXUkFQX0NVUlJZX0ZMQUcgfCBXUkFQX1BBUlRJQUxfRkxBRyB8IFdSQVBfUkVBUkdfRkxBRykgJiZcbiAgICAgICAgICAgICAgICAhZGF0YVs0XS5sZW5ndGggJiYgZGF0YVs5XSA9PSAxXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgd3JhcHBlciA9IHdyYXBwZXJbZ2V0RnVuY05hbWUoZGF0YVswXSldLmFwcGx5KHdyYXBwZXIsIGRhdGFbM10pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3cmFwcGVyID0gKGZ1bmMubGVuZ3RoID09IDEgJiYgaXNMYXppYWJsZShmdW5jKSlcbiAgICAgICAgICAgICAgPyB3cmFwcGVyW2Z1bmNOYW1lXSgpXG4gICAgICAgICAgICAgIDogd3JhcHBlci50aHJ1KGZ1bmMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgICAgIHZhbHVlID0gYXJnc1swXTtcblxuICAgICAgICAgIGlmICh3cmFwcGVyICYmIGFyZ3MubGVuZ3RoID09IDEgJiYgaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwcGVyLnBsYW50KHZhbHVlKS52YWx1ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgaW5kZXggPSAwLFxuICAgICAgICAgICAgICByZXN1bHQgPSBsZW5ndGggPyBmdW5jc1tpbmRleF0uYXBwbHkodGhpcywgYXJncykgOiB2YWx1ZTtcblxuICAgICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBmdW5jc1tpbmRleF0uY2FsbCh0aGlzLCByZXN1bHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIHRvIGludm9rZSBpdCB3aXRoIG9wdGlvbmFsIGB0aGlzYFxuICAgICAqIGJpbmRpbmcgb2YgYHRoaXNBcmdgLCBwYXJ0aWFsIGFwcGxpY2F0aW9uLCBhbmQgY3VycnlpbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb258c3RyaW5nfSBmdW5jIFRoZSBmdW5jdGlvbiBvciBtZXRob2QgbmFtZSB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHsqfSBbdGhpc0FyZ10gVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gcHJlcGVuZCB0byB0aG9zZSBwcm92aWRlZCB0b1xuICAgICAqICB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtob2xkZXJzXSBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwYXJ0aWFsc1JpZ2h0XSBUaGUgYXJndW1lbnRzIHRvIGFwcGVuZCB0byB0aG9zZSBwcm92aWRlZFxuICAgICAqICB0byB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtob2xkZXJzUmlnaHRdIFRoZSBgcGFydGlhbHNSaWdodGAgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJnUG9zXSBUaGUgYXJndW1lbnQgcG9zaXRpb25zIG9mIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcnldIFRoZSBhcml0eSBjYXAgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHldIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVIeWJyaWQoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMsIHBhcnRpYWxzUmlnaHQsIGhvbGRlcnNSaWdodCwgYXJnUG9zLCBhcnksIGFyaXR5KSB7XG4gICAgICB2YXIgaXNBcnkgPSBiaXRtYXNrICYgV1JBUF9BUllfRkxBRyxcbiAgICAgICAgICBpc0JpbmQgPSBiaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcsXG4gICAgICAgICAgaXNCaW5kS2V5ID0gYml0bWFzayAmIFdSQVBfQklORF9LRVlfRkxBRyxcbiAgICAgICAgICBpc0N1cnJpZWQgPSBiaXRtYXNrICYgKFdSQVBfQ1VSUllfRkxBRyB8IFdSQVBfQ1VSUllfUklHSFRfRkxBRyksXG4gICAgICAgICAgaXNGbGlwID0gYml0bWFzayAmIFdSQVBfRkxJUF9GTEFHLFxuICAgICAgICAgIEN0b3IgPSBpc0JpbmRLZXkgPyB1bmRlZmluZWQgOiBjcmVhdGVDdG9yKGZ1bmMpO1xuXG4gICAgICBmdW5jdGlvbiB3cmFwcGVyKCkge1xuICAgICAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCxcbiAgICAgICAgICAgIGFyZ3MgPSBBcnJheShsZW5ndGgpLFxuICAgICAgICAgICAgaW5kZXggPSBsZW5ndGg7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgICBhcmdzW2luZGV4XSA9IGFyZ3VtZW50c1tpbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQ3VycmllZCkge1xuICAgICAgICAgIHZhciBwbGFjZWhvbGRlciA9IGdldEhvbGRlcih3cmFwcGVyKSxcbiAgICAgICAgICAgICAgaG9sZGVyc0NvdW50ID0gY291bnRIb2xkZXJzKGFyZ3MsIHBsYWNlaG9sZGVyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFydGlhbHMpIHtcbiAgICAgICAgICBhcmdzID0gY29tcG9zZUFyZ3MoYXJncywgcGFydGlhbHMsIGhvbGRlcnMsIGlzQ3VycmllZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnRpYWxzUmlnaHQpIHtcbiAgICAgICAgICBhcmdzID0gY29tcG9zZUFyZ3NSaWdodChhcmdzLCBwYXJ0aWFsc1JpZ2h0LCBob2xkZXJzUmlnaHQsIGlzQ3VycmllZCk7XG4gICAgICAgIH1cbiAgICAgICAgbGVuZ3RoIC09IGhvbGRlcnNDb3VudDtcbiAgICAgICAgaWYgKGlzQ3VycmllZCAmJiBsZW5ndGggPCBhcml0eSkge1xuICAgICAgICAgIHZhciBuZXdIb2xkZXJzID0gcmVwbGFjZUhvbGRlcnMoYXJncywgcGxhY2Vob2xkZXIpO1xuICAgICAgICAgIHJldHVybiBjcmVhdGVSZWN1cnJ5KFxuICAgICAgICAgICAgZnVuYywgYml0bWFzaywgY3JlYXRlSHlicmlkLCB3cmFwcGVyLnBsYWNlaG9sZGVyLCB0aGlzQXJnLFxuICAgICAgICAgICAgYXJncywgbmV3SG9sZGVycywgYXJnUG9zLCBhcnksIGFyaXR5IC0gbGVuZ3RoXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdGhpc0JpbmRpbmcgPSBpc0JpbmQgPyB0aGlzQXJnIDogdGhpcyxcbiAgICAgICAgICAgIGZuID0gaXNCaW5kS2V5ID8gdGhpc0JpbmRpbmdbZnVuY10gOiBmdW5jO1xuXG4gICAgICAgIGxlbmd0aCA9IGFyZ3MubGVuZ3RoO1xuICAgICAgICBpZiAoYXJnUG9zKSB7XG4gICAgICAgICAgYXJncyA9IHJlb3JkZXIoYXJncywgYXJnUG9zKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0ZsaXAgJiYgbGVuZ3RoID4gMSkge1xuICAgICAgICAgIGFyZ3MucmV2ZXJzZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0FyeSAmJiBhcnkgPCBsZW5ndGgpIHtcbiAgICAgICAgICBhcmdzLmxlbmd0aCA9IGFyeTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcyAmJiB0aGlzICE9PSByb290ICYmIHRoaXMgaW5zdGFuY2VvZiB3cmFwcGVyKSB7XG4gICAgICAgICAgZm4gPSBDdG9yIHx8IGNyZWF0ZUN0b3IoZm4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzQmluZGluZywgYXJncyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5pbnZlcnRCeWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGFjY3VtdWxhdG9yIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB0b0l0ZXJhdGVlIFRoZSBmdW5jdGlvbiB0byByZXNvbHZlIGl0ZXJhdGVlcy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBpbnZlcnRlciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVJbnZlcnRlcihzZXR0ZXIsIHRvSXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICAgIHJldHVybiBiYXNlSW52ZXJ0ZXIob2JqZWN0LCBzZXR0ZXIsIHRvSXRlcmF0ZWUoaXRlcmF0ZWUpLCB7fSk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIGEgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbiBvbiB0d28gdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcGVyYXRvciBUaGUgZnVuY3Rpb24gdG8gcGVyZm9ybSB0aGUgb3BlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZGVmYXVsdFZhbHVlXSBUaGUgdmFsdWUgdXNlZCBmb3IgYHVuZGVmaW5lZGAgYXJndW1lbnRzLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1hdGhlbWF0aWNhbCBvcGVyYXRpb24gZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlTWF0aE9wZXJhdGlvbihvcGVyYXRvciwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24odmFsdWUsIG90aGVyKSB7XG4gICAgICAgIHZhciByZXN1bHQ7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmIG90aGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG90aGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBvdGhlcjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fCB0eXBlb2Ygb3RoZXIgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHZhbHVlID0gYmFzZVRvU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICAgIG90aGVyID0gYmFzZVRvU3RyaW5nKG90aGVyKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWUgPSBiYXNlVG9OdW1iZXIodmFsdWUpO1xuICAgICAgICAgICAgb3RoZXIgPSBiYXNlVG9OdW1iZXIob3RoZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQgPSBvcGVyYXRvcih2YWx1ZSwgb3RoZXIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLm92ZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBhcnJheUZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGl0ZXJhdGUgb3ZlciBpdGVyYXRlZXMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgb3ZlciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVPdmVyKGFycmF5RnVuYykge1xuICAgICAgcmV0dXJuIGZsYXRSZXN0KGZ1bmN0aW9uKGl0ZXJhdGVlcykge1xuICAgICAgICBpdGVyYXRlZXMgPSBhcnJheU1hcChpdGVyYXRlZXMsIGJhc2VVbmFyeShnZXRJdGVyYXRlZSgpKSk7XG4gICAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgICAgdmFyIHRoaXNBcmcgPSB0aGlzO1xuICAgICAgICAgIHJldHVybiBhcnJheUZ1bmMoaXRlcmF0ZWVzLCBmdW5jdGlvbihpdGVyYXRlZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFwcGx5KGl0ZXJhdGVlLCB0aGlzQXJnLCBhcmdzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIHRoZSBwYWRkaW5nIGZvciBgc3RyaW5nYCBiYXNlZCBvbiBgbGVuZ3RoYC4gVGhlIGBjaGFyc2Agc3RyaW5nXG4gICAgICogaXMgdHJ1bmNhdGVkIGlmIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBleGNlZWRzIGBsZW5ndGhgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoIFRoZSBwYWRkaW5nIGxlbmd0aC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPScgJ10gVGhlIHN0cmluZyB1c2VkIGFzIHBhZGRpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcGFkZGluZyBmb3IgYHN0cmluZ2AuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUGFkZGluZyhsZW5ndGgsIGNoYXJzKSB7XG4gICAgICBjaGFycyA9IGNoYXJzID09PSB1bmRlZmluZWQgPyAnICcgOiBiYXNlVG9TdHJpbmcoY2hhcnMpO1xuXG4gICAgICB2YXIgY2hhcnNMZW5ndGggPSBjaGFycy5sZW5ndGg7XG4gICAgICBpZiAoY2hhcnNMZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiBjaGFyc0xlbmd0aCA/IGJhc2VSZXBlYXQoY2hhcnMsIGxlbmd0aCkgOiBjaGFycztcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSBiYXNlUmVwZWF0KGNoYXJzLCBuYXRpdmVDZWlsKGxlbmd0aCAvIHN0cmluZ1NpemUoY2hhcnMpKSk7XG4gICAgICByZXR1cm4gaGFzVW5pY29kZShjaGFycylcbiAgICAgICAgPyBjYXN0U2xpY2Uoc3RyaW5nVG9BcnJheShyZXN1bHQpLCAwLCBsZW5ndGgpLmpvaW4oJycpXG4gICAgICAgIDogcmVzdWx0LnNsaWNlKDAsIGxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIHRvIGludm9rZSBpdCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZ1xuICAgICAqIG9mIGB0aGlzQXJnYCBhbmQgYHBhcnRpYWxzYCBwcmVwZW5kZWQgdG8gdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhcnRpYWxzIFRoZSBhcmd1bWVudHMgdG8gcHJlcGVuZCB0byB0aG9zZSBwcm92aWRlZCB0b1xuICAgICAqICB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUGFydGlhbChmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBwYXJ0aWFscykge1xuICAgICAgdmFyIGlzQmluZCA9IGJpdG1hc2sgJiBXUkFQX0JJTkRfRkxBRyxcbiAgICAgICAgICBDdG9yID0gY3JlYXRlQ3RvcihmdW5jKTtcblxuICAgICAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICAgICAgdmFyIGFyZ3NJbmRleCA9IC0xLFxuICAgICAgICAgICAgYXJnc0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsXG4gICAgICAgICAgICBsZWZ0SW5kZXggPSAtMSxcbiAgICAgICAgICAgIGxlZnRMZW5ndGggPSBwYXJ0aWFscy5sZW5ndGgsXG4gICAgICAgICAgICBhcmdzID0gQXJyYXkobGVmdExlbmd0aCArIGFyZ3NMZW5ndGgpLFxuICAgICAgICAgICAgZm4gPSAodGhpcyAmJiB0aGlzICE9PSByb290ICYmIHRoaXMgaW5zdGFuY2VvZiB3cmFwcGVyKSA/IEN0b3IgOiBmdW5jO1xuXG4gICAgICAgIHdoaWxlICgrK2xlZnRJbmRleCA8IGxlZnRMZW5ndGgpIHtcbiAgICAgICAgICBhcmdzW2xlZnRJbmRleF0gPSBwYXJ0aWFsc1tsZWZ0SW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChhcmdzTGVuZ3RoLS0pIHtcbiAgICAgICAgICBhcmdzW2xlZnRJbmRleCsrXSA9IGFyZ3VtZW50c1srK2FyZ3NJbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFwcGx5KGZuLCBpc0JpbmQgPyB0aGlzQXJnIDogdGhpcywgYXJncyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYF8ucmFuZ2VgIG9yIGBfLnJhbmdlUmlnaHRgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByYW5nZSBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVSYW5nZShmcm9tUmlnaHQpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihzdGFydCwgZW5kLCBzdGVwKSB7XG4gICAgICAgIGlmIChzdGVwICYmIHR5cGVvZiBzdGVwICE9ICdudW1iZXInICYmIGlzSXRlcmF0ZWVDYWxsKHN0YXJ0LCBlbmQsIHN0ZXApKSB7XG4gICAgICAgICAgZW5kID0gc3RlcCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyBFbnN1cmUgdGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gICAgICAgIHN0YXJ0ID0gdG9GaW5pdGUoc3RhcnQpO1xuICAgICAgICBpZiAoZW5kID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBlbmQgPSBzdGFydDtcbiAgICAgICAgICBzdGFydCA9IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW5kID0gdG9GaW5pdGUoZW5kKTtcbiAgICAgICAgfVxuICAgICAgICBzdGVwID0gc3RlcCA9PT0gdW5kZWZpbmVkID8gKHN0YXJ0IDwgZW5kID8gMSA6IC0xKSA6IHRvRmluaXRlKHN0ZXApO1xuICAgICAgICByZXR1cm4gYmFzZVJhbmdlKHN0YXJ0LCBlbmQsIHN0ZXAsIGZyb21SaWdodCk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIGEgcmVsYXRpb25hbCBvcGVyYXRpb24gb24gdHdvIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3BlcmF0b3IgVGhlIGZ1bmN0aW9uIHRvIHBlcmZvcm0gdGhlIG9wZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZWxhdGlvbmFsIG9wZXJhdGlvbiBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKG9wZXJhdG9yKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24odmFsdWUsIG90aGVyKSB7XG4gICAgICAgIGlmICghKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyAmJiB0eXBlb2Ygb3RoZXIgPT0gJ3N0cmluZycpKSB7XG4gICAgICAgICAgdmFsdWUgPSB0b051bWJlcih2YWx1ZSk7XG4gICAgICAgICAgb3RoZXIgPSB0b051bWJlcihvdGhlcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9wZXJhdG9yKHZhbHVlLCBvdGhlcik7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHdyYXBzIGBmdW5jYCB0byBjb250aW51ZSBjdXJyeWluZy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHdyYXBGdW5jIFRoZSBmdW5jdGlvbiB0byBjcmVhdGUgdGhlIGBmdW5jYCB3cmFwcGVyLlxuICAgICAqIEBwYXJhbSB7Kn0gcGxhY2Vob2xkZXIgVGhlIHBsYWNlaG9sZGVyIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7Kn0gW3RoaXNBcmddIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIHByZXBlbmQgdG8gdGhvc2UgcHJvdmlkZWQgdG9cbiAgICAgKiAgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbaG9sZGVyc10gVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJnUG9zXSBUaGUgYXJndW1lbnQgcG9zaXRpb25zIG9mIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcnldIFRoZSBhcml0eSBjYXAgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHldIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVSZWN1cnJ5KGZ1bmMsIGJpdG1hc2ssIHdyYXBGdW5jLCBwbGFjZWhvbGRlciwgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMsIGFyZ1BvcywgYXJ5LCBhcml0eSkge1xuICAgICAgdmFyIGlzQ3VycnkgPSBiaXRtYXNrICYgV1JBUF9DVVJSWV9GTEFHLFxuICAgICAgICAgIG5ld0hvbGRlcnMgPSBpc0N1cnJ5ID8gaG9sZGVycyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBuZXdIb2xkZXJzUmlnaHQgPSBpc0N1cnJ5ID8gdW5kZWZpbmVkIDogaG9sZGVycyxcbiAgICAgICAgICBuZXdQYXJ0aWFscyA9IGlzQ3VycnkgPyBwYXJ0aWFscyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBuZXdQYXJ0aWFsc1JpZ2h0ID0gaXNDdXJyeSA/IHVuZGVmaW5lZCA6IHBhcnRpYWxzO1xuXG4gICAgICBiaXRtYXNrIHw9IChpc0N1cnJ5ID8gV1JBUF9QQVJUSUFMX0ZMQUcgOiBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRyk7XG4gICAgICBiaXRtYXNrICY9IH4oaXNDdXJyeSA/IFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHIDogV1JBUF9QQVJUSUFMX0ZMQUcpO1xuXG4gICAgICBpZiAoIShiaXRtYXNrICYgV1JBUF9DVVJSWV9CT1VORF9GTEFHKSkge1xuICAgICAgICBiaXRtYXNrICY9IH4oV1JBUF9CSU5EX0ZMQUcgfCBXUkFQX0JJTkRfS0VZX0ZMQUcpO1xuICAgICAgfVxuICAgICAgdmFyIG5ld0RhdGEgPSBbXG4gICAgICAgIGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIG5ld1BhcnRpYWxzLCBuZXdIb2xkZXJzLCBuZXdQYXJ0aWFsc1JpZ2h0LFxuICAgICAgICBuZXdIb2xkZXJzUmlnaHQsIGFyZ1BvcywgYXJ5LCBhcml0eVxuICAgICAgXTtcblxuICAgICAgdmFyIHJlc3VsdCA9IHdyYXBGdW5jLmFwcGx5KHVuZGVmaW5lZCwgbmV3RGF0YSk7XG4gICAgICBpZiAoaXNMYXppYWJsZShmdW5jKSkge1xuICAgICAgICBzZXREYXRhKHJlc3VsdCwgbmV3RGF0YSk7XG4gICAgICB9XG4gICAgICByZXN1bHQucGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlcjtcbiAgICAgIHJldHVybiBzZXRXcmFwVG9TdHJpbmcocmVzdWx0LCBmdW5jLCBiaXRtYXNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5yb3VuZGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2ROYW1lIFRoZSBuYW1lIG9mIHRoZSBgTWF0aGAgbWV0aG9kIHRvIHVzZSB3aGVuIHJvdW5kaW5nLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJvdW5kIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVJvdW5kKG1ldGhvZE5hbWUpIHtcbiAgICAgIHZhciBmdW5jID0gTWF0aFttZXRob2ROYW1lXTtcbiAgICAgIHJldHVybiBmdW5jdGlvbihudW1iZXIsIHByZWNpc2lvbikge1xuICAgICAgICBudW1iZXIgPSB0b051bWJlcihudW1iZXIpO1xuICAgICAgICBwcmVjaXNpb24gPSBwcmVjaXNpb24gPT0gbnVsbCA/IDAgOiBuYXRpdmVNaW4odG9JbnRlZ2VyKHByZWNpc2lvbiksIDI5Mik7XG4gICAgICAgIGlmIChwcmVjaXNpb24gJiYgbmF0aXZlSXNGaW5pdGUobnVtYmVyKSkge1xuICAgICAgICAgIC8vIFNoaWZ0IHdpdGggZXhwb25lbnRpYWwgbm90YXRpb24gdG8gYXZvaWQgZmxvYXRpbmctcG9pbnQgaXNzdWVzLlxuICAgICAgICAgIC8vIFNlZSBbTUROXShodHRwczovL21kbi5pby9yb3VuZCNFeGFtcGxlcykgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgICAgICB2YXIgcGFpciA9ICh0b1N0cmluZyhudW1iZXIpICsgJ2UnKS5zcGxpdCgnZScpLFxuICAgICAgICAgICAgICB2YWx1ZSA9IGZ1bmMocGFpclswXSArICdlJyArICgrcGFpclsxXSArIHByZWNpc2lvbikpO1xuXG4gICAgICAgICAgcGFpciA9ICh0b1N0cmluZyh2YWx1ZSkgKyAnZScpLnNwbGl0KCdlJyk7XG4gICAgICAgICAgcmV0dXJuICsocGFpclswXSArICdlJyArICgrcGFpclsxXSAtIHByZWNpc2lvbikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jKG51bWJlcik7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzZXQgb2JqZWN0IG9mIGB2YWx1ZXNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhZGQgdG8gdGhlIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgc2V0LlxuICAgICAqL1xuICAgIHZhciBjcmVhdGVTZXQgPSAhKFNldCAmJiAoMSAvIHNldFRvQXJyYXkobmV3IFNldChbLC0wXSkpWzFdKSA9PSBJTkZJTklUWSkgPyBub29wIDogZnVuY3Rpb24odmFsdWVzKSB7XG4gICAgICByZXR1cm4gbmV3IFNldCh2YWx1ZXMpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYF8udG9QYWlyc2Agb3IgYF8udG9QYWlyc0luYCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBhIGdpdmVuIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBwYWlycyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVUb1BhaXJzKGtleXNGdW5jKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIHZhciB0YWcgPSBnZXRUYWcob2JqZWN0KTtcbiAgICAgICAgaWYgKHRhZyA9PSBtYXBUYWcpIHtcbiAgICAgICAgICByZXR1cm4gbWFwVG9BcnJheShvYmplY3QpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YWcgPT0gc2V0VGFnKSB7XG4gICAgICAgICAgcmV0dXJuIHNldFRvUGFpcnMob2JqZWN0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmFzZVRvUGFpcnMob2JqZWN0LCBrZXlzRnVuYyhvYmplY3QpKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgZWl0aGVyIGN1cnJpZXMgb3IgaW52b2tlcyBgZnVuY2Agd2l0aCBvcHRpb25hbFxuICAgICAqIGB0aGlzYCBiaW5kaW5nIGFuZCBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb258c3RyaW5nfSBmdW5jIFRoZSBmdW5jdGlvbiBvciBtZXRob2QgbmFtZSB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICAgICAqICAgIDEgLSBgXy5iaW5kYFxuICAgICAqICAgIDIgLSBgXy5iaW5kS2V5YFxuICAgICAqICAgIDQgLSBgXy5jdXJyeWAgb3IgYF8uY3VycnlSaWdodGAgb2YgYSBib3VuZCBmdW5jdGlvblxuICAgICAqICAgIDggLSBgXy5jdXJyeWBcbiAgICAgKiAgIDE2IC0gYF8uY3VycnlSaWdodGBcbiAgICAgKiAgIDMyIC0gYF8ucGFydGlhbGBcbiAgICAgKiAgIDY0IC0gYF8ucGFydGlhbFJpZ2h0YFxuICAgICAqICAxMjggLSBgXy5yZWFyZ2BcbiAgICAgKiAgMjU2IC0gYF8uYXJ5YFxuICAgICAqICA1MTIgLSBgXy5mbGlwYFxuICAgICAqIEBwYXJhbSB7Kn0gW3RoaXNBcmddIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIGJlIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtob2xkZXJzXSBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFthcmdQb3NdIFRoZSBhcmd1bWVudCBwb3NpdGlvbnMgb2YgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyeV0gVGhlIGFyaXR5IGNhcCBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcml0eV0gVGhlIGFyaXR5IG9mIGBmdW5jYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVdyYXAoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMsIGFyZ1BvcywgYXJ5LCBhcml0eSkge1xuICAgICAgdmFyIGlzQmluZEtleSA9IGJpdG1hc2sgJiBXUkFQX0JJTkRfS0VZX0ZMQUc7XG4gICAgICBpZiAoIWlzQmluZEtleSAmJiB0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSBwYXJ0aWFscyA/IHBhcnRpYWxzLmxlbmd0aCA6IDA7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICBiaXRtYXNrICY9IH4oV1JBUF9QQVJUSUFMX0ZMQUcgfCBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRyk7XG4gICAgICAgIHBhcnRpYWxzID0gaG9sZGVycyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGFyeSA9IGFyeSA9PT0gdW5kZWZpbmVkID8gYXJ5IDogbmF0aXZlTWF4KHRvSW50ZWdlcihhcnkpLCAwKTtcbiAgICAgIGFyaXR5ID0gYXJpdHkgPT09IHVuZGVmaW5lZCA/IGFyaXR5IDogdG9JbnRlZ2VyKGFyaXR5KTtcbiAgICAgIGxlbmd0aCAtPSBob2xkZXJzID8gaG9sZGVycy5sZW5ndGggOiAwO1xuXG4gICAgICBpZiAoYml0bWFzayAmIFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHKSB7XG4gICAgICAgIHZhciBwYXJ0aWFsc1JpZ2h0ID0gcGFydGlhbHMsXG4gICAgICAgICAgICBob2xkZXJzUmlnaHQgPSBob2xkZXJzO1xuXG4gICAgICAgIHBhcnRpYWxzID0gaG9sZGVycyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHZhciBkYXRhID0gaXNCaW5kS2V5ID8gdW5kZWZpbmVkIDogZ2V0RGF0YShmdW5jKTtcblxuICAgICAgdmFyIG5ld0RhdGEgPSBbXG4gICAgICAgIGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzLCBob2xkZXJzLCBwYXJ0aWFsc1JpZ2h0LCBob2xkZXJzUmlnaHQsXG4gICAgICAgIGFyZ1BvcywgYXJ5LCBhcml0eVxuICAgICAgXTtcblxuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgbWVyZ2VEYXRhKG5ld0RhdGEsIGRhdGEpO1xuICAgICAgfVxuICAgICAgZnVuYyA9IG5ld0RhdGFbMF07XG4gICAgICBiaXRtYXNrID0gbmV3RGF0YVsxXTtcbiAgICAgIHRoaXNBcmcgPSBuZXdEYXRhWzJdO1xuICAgICAgcGFydGlhbHMgPSBuZXdEYXRhWzNdO1xuICAgICAgaG9sZGVycyA9IG5ld0RhdGFbNF07XG4gICAgICBhcml0eSA9IG5ld0RhdGFbOV0gPSBuZXdEYXRhWzldID09PSB1bmRlZmluZWRcbiAgICAgICAgPyAoaXNCaW5kS2V5ID8gMCA6IGZ1bmMubGVuZ3RoKVxuICAgICAgICA6IG5hdGl2ZU1heChuZXdEYXRhWzldIC0gbGVuZ3RoLCAwKTtcblxuICAgICAgaWYgKCFhcml0eSAmJiBiaXRtYXNrICYgKFdSQVBfQ1VSUllfRkxBRyB8IFdSQVBfQ1VSUllfUklHSFRfRkxBRykpIHtcbiAgICAgICAgYml0bWFzayAmPSB+KFdSQVBfQ1VSUllfRkxBRyB8IFdSQVBfQ1VSUllfUklHSFRfRkxBRyk7XG4gICAgICB9XG4gICAgICBpZiAoIWJpdG1hc2sgfHwgYml0bWFzayA9PSBXUkFQX0JJTkRfRkxBRykge1xuICAgICAgICB2YXIgcmVzdWx0ID0gY3JlYXRlQmluZChmdW5jLCBiaXRtYXNrLCB0aGlzQXJnKTtcbiAgICAgIH0gZWxzZSBpZiAoYml0bWFzayA9PSBXUkFQX0NVUlJZX0ZMQUcgfHwgYml0bWFzayA9PSBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcpIHtcbiAgICAgICAgcmVzdWx0ID0gY3JlYXRlQ3VycnkoZnVuYywgYml0bWFzaywgYXJpdHkpO1xuICAgICAgfSBlbHNlIGlmICgoYml0bWFzayA9PSBXUkFQX1BBUlRJQUxfRkxBRyB8fCBiaXRtYXNrID09IChXUkFQX0JJTkRfRkxBRyB8IFdSQVBfUEFSVElBTF9GTEFHKSkgJiYgIWhvbGRlcnMubGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdCA9IGNyZWF0ZVBhcnRpYWwoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gY3JlYXRlSHlicmlkLmFwcGx5KHVuZGVmaW5lZCwgbmV3RGF0YSk7XG4gICAgICB9XG4gICAgICB2YXIgc2V0dGVyID0gZGF0YSA/IGJhc2VTZXREYXRhIDogc2V0RGF0YTtcbiAgICAgIHJldHVybiBzZXRXcmFwVG9TdHJpbmcoc2V0dGVyKHJlc3VsdCwgbmV3RGF0YSksIGZ1bmMsIGJpdG1hc2spO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZWQgYnkgYF8uZGVmYXVsdHNgIHRvIGN1c3RvbWl6ZSBpdHMgYF8uYXNzaWduSW5gIHVzZSB0byBhc3NpZ24gcHJvcGVydGllc1xuICAgICAqIG9mIHNvdXJjZSBvYmplY3RzIHRvIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QgZm9yIGFsbCBkZXN0aW5hdGlvbiBwcm9wZXJ0aWVzXG4gICAgICogdGhhdCByZXNvbHZlIHRvIGB1bmRlZmluZWRgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IG9ialZhbHVlIFRoZSBkZXN0aW5hdGlvbiB2YWx1ZS5cbiAgICAgKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSBzb3VyY2UgdmFsdWUuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgcGFyZW50IG9iamVjdCBvZiBgb2JqVmFsdWVgLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3VzdG9tRGVmYXVsdHNBc3NpZ25JbihvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0KSB7XG4gICAgICBpZiAob2JqVmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgIChlcShvYmpWYWx1ZSwgb2JqZWN0UHJvdG9ba2V5XSkgJiYgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkge1xuICAgICAgICByZXR1cm4gc3JjVmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqVmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlZCBieSBgXy5kZWZhdWx0c0RlZXBgIHRvIGN1c3RvbWl6ZSBpdHMgYF8ubWVyZ2VgIHVzZSB0byBtZXJnZSBzb3VyY2VcbiAgICAgKiBvYmplY3RzIGludG8gZGVzdGluYXRpb24gb2JqZWN0cyB0aGF0IGFyZSBwYXNzZWQgdGhydS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSBvYmpWYWx1ZSBUaGUgZGVzdGluYXRpb24gdmFsdWUuXG4gICAgICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgc291cmNlIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gbWVyZ2UuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgcGFyZW50IG9iamVjdCBvZiBgb2JqVmFsdWVgLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHBhcmVudCBvYmplY3Qgb2YgYHNyY1ZhbHVlYC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICAgICAqICBjb3VudGVycGFydHMuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjdXN0b21EZWZhdWx0c01lcmdlKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spIHtcbiAgICAgIGlmIChpc09iamVjdChvYmpWYWx1ZSkgJiYgaXNPYmplY3Qoc3JjVmFsdWUpKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IG1lcmdlIG9iamVjdHMgYW5kIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBzdGFjay5zZXQoc3JjVmFsdWUsIG9ialZhbHVlKTtcbiAgICAgICAgYmFzZU1lcmdlKG9ialZhbHVlLCBzcmNWYWx1ZSwgdW5kZWZpbmVkLCBjdXN0b21EZWZhdWx0c01lcmdlLCBzdGFjayk7XG4gICAgICAgIHN0YWNrWydkZWxldGUnXShzcmNWYWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqVmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlZCBieSBgXy5vbWl0YCB0byBjdXN0b21pemUgaXRzIGBfLmNsb25lRGVlcGAgdXNlIHRvIG9ubHkgY2xvbmUgcGxhaW5cbiAgICAgKiBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdW5jbG9uZWQgdmFsdWUgb3IgYHVuZGVmaW5lZGAgdG8gZGVmZXIgY2xvbmluZyB0byBgXy5jbG9uZURlZXBgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGN1c3RvbU9taXRDbG9uZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzUGxhaW5PYmplY3QodmFsdWUpID8gdW5kZWZpbmVkIDogdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBhcnJheXMgd2l0aCBzdXBwb3J0IGZvclxuICAgICAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtBcnJheX0gb3RoZXIgVGhlIG90aGVyIGFycmF5IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgYXJyYXlgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcnJheXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlcXVhbEFycmF5cyhhcnJheSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgICAgIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICAgICAgYXJyTGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIG90aExlbmd0aCA9IG90aGVyLmxlbmd0aDtcblxuICAgICAgaWYgKGFyckxlbmd0aCAhPSBvdGhMZW5ndGggJiYgIShpc1BhcnRpYWwgJiYgb3RoTGVuZ3RoID4gYXJyTGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyBDaGVjayB0aGF0IGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgdmFyIGFyclN0YWNrZWQgPSBzdGFjay5nZXQoYXJyYXkpO1xuICAgICAgdmFyIG90aFN0YWNrZWQgPSBzdGFjay5nZXQob3RoZXIpO1xuICAgICAgaWYgKGFyclN0YWNrZWQgJiYgb3RoU3RhY2tlZCkge1xuICAgICAgICByZXR1cm4gYXJyU3RhY2tlZCA9PSBvdGhlciAmJiBvdGhTdGFja2VkID09IGFycmF5O1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgcmVzdWx0ID0gdHJ1ZSxcbiAgICAgICAgICBzZWVuID0gKGJpdG1hc2sgJiBDT01QQVJFX1VOT1JERVJFRF9GTEFHKSA/IG5ldyBTZXRDYWNoZSA6IHVuZGVmaW5lZDtcblxuICAgICAgc3RhY2suc2V0KGFycmF5LCBvdGhlcik7XG4gICAgICBzdGFjay5zZXQob3RoZXIsIGFycmF5KTtcblxuICAgICAgLy8gSWdub3JlIG5vbi1pbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgd2hpbGUgKCsraW5kZXggPCBhcnJMZW5ndGgpIHtcbiAgICAgICAgdmFyIGFyclZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltpbmRleF07XG5cbiAgICAgICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgICAgID8gY3VzdG9taXplcihvdGhWYWx1ZSwgYXJyVmFsdWUsIGluZGV4LCBvdGhlciwgYXJyYXksIHN0YWNrKVxuICAgICAgICAgICAgOiBjdXN0b21pemVyKGFyclZhbHVlLCBvdGhWYWx1ZSwgaW5kZXgsIGFycmF5LCBvdGhlciwgc3RhY2spO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb21wYXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKGNvbXBhcmVkKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgaWYgKHNlZW4pIHtcbiAgICAgICAgICBpZiAoIWFycmF5U29tZShvdGhlciwgZnVuY3Rpb24ob3RoVmFsdWUsIG90aEluZGV4KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFjYWNoZUhhcyhzZWVuLCBvdGhJbmRleCkgJiZcbiAgICAgICAgICAgICAgICAgICAgKGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gc2Vlbi5wdXNoKG90aEluZGV4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghKFxuICAgICAgICAgICAgICBhcnJWYWx1ZSA9PT0gb3RoVmFsdWUgfHxcbiAgICAgICAgICAgICAgICBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc3RhY2tbJ2RlbGV0ZSddKGFycmF5KTtcbiAgICAgIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3IgY29tcGFyaW5nIG9iamVjdHMgb2ZcbiAgICAgKiB0aGUgc2FtZSBgdG9TdHJpbmdUYWdgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjb21wYXJpbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICAgICAqIGBCb29sZWFuYCwgYERhdGVgLCBgRXJyb3JgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIG9yIGBTdHJpbmdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdHMgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXF1YWxCeVRhZyhvYmplY3QsIG90aGVyLCB0YWcsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgICAgIHN3aXRjaCAodGFnKSB7XG4gICAgICAgIGNhc2UgZGF0YVZpZXdUYWc6XG4gICAgICAgICAgaWYgKChvYmplY3QuYnl0ZUxlbmd0aCAhPSBvdGhlci5ieXRlTGVuZ3RoKSB8fFxuICAgICAgICAgICAgICAob2JqZWN0LmJ5dGVPZmZzZXQgIT0gb3RoZXIuYnl0ZU9mZnNldCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb2JqZWN0ID0gb2JqZWN0LmJ1ZmZlcjtcbiAgICAgICAgICBvdGhlciA9IG90aGVyLmJ1ZmZlcjtcblxuICAgICAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAgICAgIWVxdWFsRnVuYyhuZXcgVWludDhBcnJheShvYmplY3QpLCBuZXcgVWludDhBcnJheShvdGhlcikpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgICAgIGNhc2UgYm9vbFRhZzpcbiAgICAgICAgY2FzZSBkYXRlVGFnOlxuICAgICAgICBjYXNlIG51bWJlclRhZzpcbiAgICAgICAgICAvLyBDb2VyY2UgYm9vbGVhbnMgdG8gYDFgIG9yIGAwYCBhbmQgZGF0ZXMgdG8gbWlsbGlzZWNvbmRzLlxuICAgICAgICAgIC8vIEludmFsaWQgZGF0ZXMgYXJlIGNvZXJjZWQgdG8gYE5hTmAuXG4gICAgICAgICAgcmV0dXJuIGVxKCtvYmplY3QsICtvdGhlcik7XG5cbiAgICAgICAgY2FzZSBlcnJvclRhZzpcbiAgICAgICAgICByZXR1cm4gb2JqZWN0Lm5hbWUgPT0gb3RoZXIubmFtZSAmJiBvYmplY3QubWVzc2FnZSA9PSBvdGhlci5tZXNzYWdlO1xuXG4gICAgICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgICAgICBjYXNlIHN0cmluZ1RhZzpcbiAgICAgICAgICAvLyBDb2VyY2UgcmVnZXhlcyB0byBzdHJpbmdzIGFuZCB0cmVhdCBzdHJpbmdzLCBwcmltaXRpdmVzIGFuZCBvYmplY3RzLFxuICAgICAgICAgIC8vIGFzIGVxdWFsLiBTZWUgaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXJlZ2V4cC5wcm90b3R5cGUudG9zdHJpbmdcbiAgICAgICAgICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgICAgIHJldHVybiBvYmplY3QgPT0gKG90aGVyICsgJycpO1xuXG4gICAgICAgIGNhc2UgbWFwVGFnOlxuICAgICAgICAgIHZhciBjb252ZXJ0ID0gbWFwVG9BcnJheTtcblxuICAgICAgICBjYXNlIHNldFRhZzpcbiAgICAgICAgICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHO1xuICAgICAgICAgIGNvbnZlcnQgfHwgKGNvbnZlcnQgPSBzZXRUb0FycmF5KTtcblxuICAgICAgICAgIGlmIChvYmplY3Quc2l6ZSAhPSBvdGhlci5zaXplICYmICFpc1BhcnRpYWwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQXNzdW1lIGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgICAgIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KG9iamVjdCk7XG4gICAgICAgICAgaWYgKHN0YWNrZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGFja2VkID09IG90aGVyO1xuICAgICAgICAgIH1cbiAgICAgICAgICBiaXRtYXNrIHw9IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUc7XG5cbiAgICAgICAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgICBzdGFjay5zZXQob2JqZWN0LCBvdGhlcik7XG4gICAgICAgICAgdmFyIHJlc3VsdCA9IGVxdWFsQXJyYXlzKGNvbnZlcnQob2JqZWN0KSwgY29udmVydChvdGhlciksIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICAgICAgICAgIHN0YWNrWydkZWxldGUnXShvYmplY3QpO1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG5cbiAgICAgICAgY2FzZSBzeW1ib2xUYWc6XG4gICAgICAgICAgaWYgKHN5bWJvbFZhbHVlT2YpIHtcbiAgICAgICAgICAgIHJldHVybiBzeW1ib2xWYWx1ZU9mLmNhbGwob2JqZWN0KSA9PSBzeW1ib2xWYWx1ZU9mLmNhbGwob3RoZXIpO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIG9iamVjdHMgd2l0aCBzdXBwb3J0IGZvclxuICAgICAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXF1YWxPYmplY3RzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgICAgIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICAgICAgb2JqUHJvcHMgPSBnZXRBbGxLZXlzKG9iamVjdCksXG4gICAgICAgICAgb2JqTGVuZ3RoID0gb2JqUHJvcHMubGVuZ3RoLFxuICAgICAgICAgIG90aFByb3BzID0gZ2V0QWxsS2V5cyhvdGhlciksXG4gICAgICAgICAgb3RoTGVuZ3RoID0gb3RoUHJvcHMubGVuZ3RoO1xuXG4gICAgICBpZiAob2JqTGVuZ3RoICE9IG90aExlbmd0aCAmJiAhaXNQYXJ0aWFsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IG9iakxlbmd0aDtcbiAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgIHZhciBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgICAgIGlmICghKGlzUGFydGlhbCA/IGtleSBpbiBvdGhlciA6IGhhc093blByb3BlcnR5LmNhbGwob3RoZXIsIGtleSkpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBDaGVjayB0aGF0IGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgdmFyIG9ialN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgICAgIHZhciBvdGhTdGFja2VkID0gc3RhY2suZ2V0KG90aGVyKTtcbiAgICAgIGlmIChvYmpTdGFja2VkICYmIG90aFN0YWNrZWQpIHtcbiAgICAgICAgcmV0dXJuIG9ialN0YWNrZWQgPT0gb3RoZXIgJiYgb3RoU3RhY2tlZCA9PSBvYmplY3Q7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gdHJ1ZTtcbiAgICAgIHN0YWNrLnNldChvYmplY3QsIG90aGVyKTtcbiAgICAgIHN0YWNrLnNldChvdGhlciwgb2JqZWN0KTtcblxuICAgICAgdmFyIHNraXBDdG9yID0gaXNQYXJ0aWFsO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBvYmpMZW5ndGgpIHtcbiAgICAgICAga2V5ID0gb2JqUHJvcHNbaW5kZXhdO1xuICAgICAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSxcbiAgICAgICAgICAgIG90aFZhbHVlID0gb3RoZXJba2V5XTtcblxuICAgICAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgICAgIHZhciBjb21wYXJlZCA9IGlzUGFydGlhbFxuICAgICAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBvYmpWYWx1ZSwga2V5LCBvdGhlciwgb2JqZWN0LCBzdGFjaylcbiAgICAgICAgICAgIDogY3VzdG9taXplcihvYmpWYWx1ZSwgb3RoVmFsdWUsIGtleSwgb2JqZWN0LCBvdGhlciwgc3RhY2spO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBpZiAoIShjb21wYXJlZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgID8gKG9ialZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMob2JqVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpXG4gICAgICAgICAgICAgIDogY29tcGFyZWRcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBza2lwQ3RvciB8fCAoc2tpcEN0b3IgPSBrZXkgPT0gJ2NvbnN0cnVjdG9yJyk7XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0ICYmICFza2lwQ3Rvcikge1xuICAgICAgICB2YXIgb2JqQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcixcbiAgICAgICAgICAgIG90aEN0b3IgPSBvdGhlci5jb25zdHJ1Y3RvcjtcblxuICAgICAgICAvLyBOb24gYE9iamVjdGAgb2JqZWN0IGluc3RhbmNlcyB3aXRoIGRpZmZlcmVudCBjb25zdHJ1Y3RvcnMgYXJlIG5vdCBlcXVhbC5cbiAgICAgICAgaWYgKG9iakN0b3IgIT0gb3RoQ3RvciAmJlxuICAgICAgICAgICAgKCdjb25zdHJ1Y3RvcicgaW4gb2JqZWN0ICYmICdjb25zdHJ1Y3RvcicgaW4gb3RoZXIpICYmXG4gICAgICAgICAgICAhKHR5cGVvZiBvYmpDdG9yID09ICdmdW5jdGlvbicgJiYgb2JqQ3RvciBpbnN0YW5jZW9mIG9iakN0b3IgJiZcbiAgICAgICAgICAgICAgdHlwZW9mIG90aEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvdGhDdG9yIGluc3RhbmNlb2Ygb3RoQ3RvcikpIHtcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gICAgICBzdGFja1snZGVsZXRlJ10ob3RoZXIpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCBmbGF0dGVucyB0aGUgcmVzdCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0UmVzdChmdW5jKSB7XG4gICAgICByZXR1cm4gc2V0VG9TdHJpbmcob3ZlclJlc3QoZnVuYywgdW5kZWZpbmVkLCBmbGF0dGVuKSwgZnVuYyArICcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRBbGxLZXlzKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5cywgZ2V0U3ltYm9scyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZFxuICAgICAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldEFsbEtleXNJbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXNJbiwgZ2V0U3ltYm9sc0luKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIG1ldGFkYXRhIGZvciBgZnVuY2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtZXRhZGF0YSBmb3IgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBnZXREYXRhID0gIW1ldGFNYXAgPyBub29wIDogZnVuY3Rpb24oZnVuYykge1xuICAgICAgcmV0dXJuIG1ldGFNYXAuZ2V0KGZ1bmMpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBuYW1lIG9mIGBmdW5jYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZnVuY3Rpb24gbmFtZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRGdW5jTmFtZShmdW5jKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gKGZ1bmMubmFtZSArICcnKSxcbiAgICAgICAgICBhcnJheSA9IHJlYWxOYW1lc1tyZXN1bHRdLFxuICAgICAgICAgIGxlbmd0aCA9IGhhc093blByb3BlcnR5LmNhbGwocmVhbE5hbWVzLCByZXN1bHQpID8gYXJyYXkubGVuZ3RoIDogMDtcblxuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIHZhciBkYXRhID0gYXJyYXlbbGVuZ3RoXSxcbiAgICAgICAgICAgIG90aGVyRnVuYyA9IGRhdGEuZnVuYztcbiAgICAgICAgaWYgKG90aGVyRnVuYyA9PSBudWxsIHx8IG90aGVyRnVuYyA9PSBmdW5jKSB7XG4gICAgICAgICAgcmV0dXJuIGRhdGEubmFtZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBhcmd1bWVudCBwbGFjZWhvbGRlciB2YWx1ZSBmb3IgYGZ1bmNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwbGFjZWhvbGRlciB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRIb2xkZXIoZnVuYykge1xuICAgICAgdmFyIG9iamVjdCA9IGhhc093blByb3BlcnR5LmNhbGwobG9kYXNoLCAncGxhY2Vob2xkZXInKSA/IGxvZGFzaCA6IGZ1bmM7XG4gICAgICByZXR1cm4gb2JqZWN0LnBsYWNlaG9sZGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGFwcHJvcHJpYXRlIFwiaXRlcmF0ZWVcIiBmdW5jdGlvbi4gSWYgYF8uaXRlcmF0ZWVgIGlzIGN1c3RvbWl6ZWQsXG4gICAgICogdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBjdXN0b20gbWV0aG9kLCBvdGhlcndpc2UgaXQgcmV0dXJucyBgYmFzZUl0ZXJhdGVlYC5cbiAgICAgKiBJZiBhcmd1bWVudHMgYXJlIHByb3ZpZGVkLCB0aGUgY2hvc2VuIGZ1bmN0aW9uIGlzIGludm9rZWQgd2l0aCB0aGVtIGFuZFxuICAgICAqIGl0cyByZXN1bHQgaXMgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gW3ZhbHVlXSBUaGUgdmFsdWUgdG8gY29udmVydCB0byBhbiBpdGVyYXRlZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5XSBUaGUgYXJpdHkgb2YgdGhlIGNyZWF0ZWQgaXRlcmF0ZWUuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBjaG9zZW4gZnVuY3Rpb24gb3IgaXRzIHJlc3VsdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRJdGVyYXRlZSgpIHtcbiAgICAgIHZhciByZXN1bHQgPSBsb2Rhc2guaXRlcmF0ZWUgfHwgaXRlcmF0ZWU7XG4gICAgICByZXN1bHQgPSByZXN1bHQgPT09IGl0ZXJhdGVlID8gYmFzZUl0ZXJhdGVlIDogcmVzdWx0O1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyByZXN1bHQoYXJndW1lbnRzWzBdLCBhcmd1bWVudHNbMV0pIDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGRhdGEgZm9yIGBtYXBgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgcmVmZXJlbmNlIGtleS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWFwIGRhdGEuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0TWFwRGF0YShtYXAsIGtleSkge1xuICAgICAgdmFyIGRhdGEgPSBtYXAuX19kYXRhX187XG4gICAgICByZXR1cm4gaXNLZXlhYmxlKGtleSlcbiAgICAgICAgPyBkYXRhW3R5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyAnc3RyaW5nJyA6ICdoYXNoJ11cbiAgICAgICAgOiBkYXRhLm1hcDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbWF0Y2ggZGF0YSBvZiBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRNYXRjaERhdGEob2JqZWN0KSB7XG4gICAgICB2YXIgcmVzdWx0ID0ga2V5cyhvYmplY3QpLFxuICAgICAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIga2V5ID0gcmVzdWx0W2xlbmd0aF0sXG4gICAgICAgICAgICB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgICAgIHJlc3VsdFtsZW5ndGhdID0gW2tleSwgdmFsdWUsIGlzU3RyaWN0Q29tcGFyYWJsZSh2YWx1ZSldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBuYXRpdmUgZnVuY3Rpb24gYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkge1xuICAgICAgdmFyIHZhbHVlID0gZ2V0VmFsdWUob2JqZWN0LCBrZXkpO1xuICAgICAgcmV0dXJuIGJhc2VJc05hdGl2ZSh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VHZXRUYWdgIHdoaWNoIGlnbm9yZXMgYFN5bWJvbC50b1N0cmluZ1RhZ2AgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByYXcgYHRvU3RyaW5nVGFnYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRSYXdUYWcodmFsdWUpIHtcbiAgICAgIHZhciBpc093biA9IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIHN5bVRvU3RyaW5nVGFnKSxcbiAgICAgICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHt9XG5cbiAgICAgIHZhciByZXN1bHQgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICAgIGlmICh1bm1hc2tlZCkge1xuICAgICAgICBpZiAoaXNPd24pIHtcbiAgICAgICAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB0YWc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVsZXRlIHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBzeW1ib2xzLlxuICAgICAqL1xuICAgIHZhciBnZXRTeW1ib2xzID0gIW5hdGl2ZUdldFN5bWJvbHMgPyBzdHViQXJyYXkgOiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICAgIHJldHVybiBhcnJheUZpbHRlcihuYXRpdmVHZXRTeW1ib2xzKG9iamVjdCksIGZ1bmN0aW9uKHN5bWJvbCkge1xuICAgICAgICByZXR1cm4gcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChvYmplY3QsIHN5bWJvbCk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBzeW1ib2xzLlxuICAgICAqL1xuICAgIHZhciBnZXRTeW1ib2xzSW4gPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgd2hpbGUgKG9iamVjdCkge1xuICAgICAgICBhcnJheVB1c2gocmVzdWx0LCBnZXRTeW1ib2xzKG9iamVjdCkpO1xuICAgICAgICBvYmplY3QgPSBnZXRQcm90b3R5cGUob2JqZWN0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGB0b1N0cmluZ1RhZ2Agb2YgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAgICAgKi9cbiAgICB2YXIgZ2V0VGFnID0gYmFzZUdldFRhZztcblxuICAgIC8vIEZhbGxiYWNrIGZvciBkYXRhIHZpZXdzLCBtYXBzLCBzZXRzLCBhbmQgd2VhayBtYXBzIGluIElFIDExIGFuZCBwcm9taXNlcyBpbiBOb2RlLmpzIDwgNi5cbiAgICBpZiAoKERhdGFWaWV3ICYmIGdldFRhZyhuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEpKSkgIT0gZGF0YVZpZXdUYWcpIHx8XG4gICAgICAgIChNYXAgJiYgZ2V0VGFnKG5ldyBNYXApICE9IG1hcFRhZykgfHxcbiAgICAgICAgKFByb21pc2UgJiYgZ2V0VGFnKFByb21pc2UucmVzb2x2ZSgpKSAhPSBwcm9taXNlVGFnKSB8fFxuICAgICAgICAoU2V0ICYmIGdldFRhZyhuZXcgU2V0KSAhPSBzZXRUYWcpIHx8XG4gICAgICAgIChXZWFrTWFwICYmIGdldFRhZyhuZXcgV2Vha01hcCkgIT0gd2Vha01hcFRhZykpIHtcbiAgICAgIGdldFRhZyA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBiYXNlR2V0VGFnKHZhbHVlKSxcbiAgICAgICAgICAgIEN0b3IgPSByZXN1bHQgPT0gb2JqZWN0VGFnID8gdmFsdWUuY29uc3RydWN0b3IgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjdG9yU3RyaW5nID0gQ3RvciA/IHRvU291cmNlKEN0b3IpIDogJyc7XG5cbiAgICAgICAgaWYgKGN0b3JTdHJpbmcpIHtcbiAgICAgICAgICBzd2l0Y2ggKGN0b3JTdHJpbmcpIHtcbiAgICAgICAgICAgIGNhc2UgZGF0YVZpZXdDdG9yU3RyaW5nOiByZXR1cm4gZGF0YVZpZXdUYWc7XG4gICAgICAgICAgICBjYXNlIG1hcEN0b3JTdHJpbmc6IHJldHVybiBtYXBUYWc7XG4gICAgICAgICAgICBjYXNlIHByb21pc2VDdG9yU3RyaW5nOiByZXR1cm4gcHJvbWlzZVRhZztcbiAgICAgICAgICAgIGNhc2Ugc2V0Q3RvclN0cmluZzogcmV0dXJuIHNldFRhZztcbiAgICAgICAgICAgIGNhc2Ugd2Vha01hcEN0b3JTdHJpbmc6IHJldHVybiB3ZWFrTWFwVGFnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB2aWV3LCBhcHBseWluZyBhbnkgYHRyYW5zZm9ybXNgIHRvIHRoZSBgc3RhcnRgIGFuZCBgZW5kYCBwb3NpdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgb2YgdGhlIHZpZXcuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSB2aWV3LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHRyYW5zZm9ybXMgVGhlIHRyYW5zZm9ybWF0aW9ucyB0byBhcHBseSB0byB0aGUgdmlldy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBgc3RhcnRgIGFuZCBgZW5kYFxuICAgICAqICBwb3NpdGlvbnMgb2YgdGhlIHZpZXcuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0VmlldyhzdGFydCwgZW5kLCB0cmFuc2Zvcm1zKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSB0cmFuc2Zvcm1zLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGRhdGEgPSB0cmFuc2Zvcm1zW2luZGV4XSxcbiAgICAgICAgICAgIHNpemUgPSBkYXRhLnNpemU7XG5cbiAgICAgICAgc3dpdGNoIChkYXRhLnR5cGUpIHtcbiAgICAgICAgICBjYXNlICdkcm9wJzogICAgICBzdGFydCArPSBzaXplOyBicmVhaztcbiAgICAgICAgICBjYXNlICdkcm9wUmlnaHQnOiBlbmQgLT0gc2l6ZTsgYnJlYWs7XG4gICAgICAgICAgY2FzZSAndGFrZSc6ICAgICAgZW5kID0gbmF0aXZlTWluKGVuZCwgc3RhcnQgKyBzaXplKTsgYnJlYWs7XG4gICAgICAgICAgY2FzZSAndGFrZVJpZ2h0Jzogc3RhcnQgPSBuYXRpdmVNYXgoc3RhcnQsIGVuZCAtIHNpemUpOyBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHsgJ3N0YXJ0Jzogc3RhcnQsICdlbmQnOiBlbmQgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeHRyYWN0cyB3cmFwcGVyIGRldGFpbHMgZnJvbSB0aGUgYHNvdXJjZWAgYm9keSBjb21tZW50LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlIFRoZSBzb3VyY2UgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHdyYXBwZXIgZGV0YWlscy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRXcmFwRGV0YWlscyhzb3VyY2UpIHtcbiAgICAgIHZhciBtYXRjaCA9IHNvdXJjZS5tYXRjaChyZVdyYXBEZXRhaWxzKTtcbiAgICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdLnNwbGl0KHJlU3BsaXREZXRhaWxzKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgcGF0aGAgZXhpc3RzIG9uIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaGFzRnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2sgcHJvcGVydGllcy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBoYXNGdW5jKSB7XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSk7XG4gICAgICAgIGlmICghKHJlc3VsdCA9IG9iamVjdCAhPSBudWxsICYmIGhhc0Z1bmMob2JqZWN0LCBrZXkpKSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdCA9IG9iamVjdFtrZXldO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdCB8fCArK2luZGV4ICE9IGxlbmd0aCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgbGVuZ3RoID0gb2JqZWN0ID09IG51bGwgPyAwIDogb2JqZWN0Lmxlbmd0aDtcbiAgICAgIHJldHVybiAhIWxlbmd0aCAmJiBpc0xlbmd0aChsZW5ndGgpICYmIGlzSW5kZXgoa2V5LCBsZW5ndGgpICYmXG4gICAgICAgIChpc0FycmF5KG9iamVjdCkgfHwgaXNBcmd1bWVudHMob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgYW4gYXJyYXkgY2xvbmUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluaXRDbG9uZUFycmF5KGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IG5ldyBhcnJheS5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gICAgICAvLyBBZGQgcHJvcGVydGllcyBhc3NpZ25lZCBieSBgUmVnRXhwI2V4ZWNgLlxuICAgICAgaWYgKGxlbmd0aCAmJiB0eXBlb2YgYXJyYXlbMF0gPT0gJ3N0cmluZycgJiYgaGFzT3duUHJvcGVydHkuY2FsbChhcnJheSwgJ2luZGV4JykpIHtcbiAgICAgICAgcmVzdWx0LmluZGV4ID0gYXJyYXkuaW5kZXg7XG4gICAgICAgIHJlc3VsdC5pbnB1dCA9IGFycmF5LmlucHV0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplcyBhbiBvYmplY3QgY2xvbmUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbml0Q2xvbmVPYmplY3Qob2JqZWN0KSB7XG4gICAgICByZXR1cm4gKHR5cGVvZiBvYmplY3QuY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNQcm90b3R5cGUob2JqZWN0KSlcbiAgICAgICAgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKVxuICAgICAgICA6IHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZSBiYXNlZCBvbiBpdHMgYHRvU3RyaW5nVGFnYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgY2xvbmluZyB2YWx1ZXMgd2l0aCB0YWdzIG9mXG4gICAgICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBNYXBgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIGBTZXRgLCBvciBgU3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdCB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluaXRDbG9uZUJ5VGFnKG9iamVjdCwgdGFnLCBpc0RlZXApIHtcbiAgICAgIHZhciBDdG9yID0gb2JqZWN0LmNvbnN0cnVjdG9yO1xuICAgICAgc3dpdGNoICh0YWcpIHtcbiAgICAgICAgY2FzZSBhcnJheUJ1ZmZlclRhZzpcbiAgICAgICAgICByZXR1cm4gY2xvbmVBcnJheUJ1ZmZlcihvYmplY3QpO1xuXG4gICAgICAgIGNhc2UgYm9vbFRhZzpcbiAgICAgICAgY2FzZSBkYXRlVGFnOlxuICAgICAgICAgIHJldHVybiBuZXcgQ3Rvcigrb2JqZWN0KTtcblxuICAgICAgICBjYXNlIGRhdGFWaWV3VGFnOlxuICAgICAgICAgIHJldHVybiBjbG9uZURhdGFWaWV3KG9iamVjdCwgaXNEZWVwKTtcblxuICAgICAgICBjYXNlIGZsb2F0MzJUYWc6IGNhc2UgZmxvYXQ2NFRhZzpcbiAgICAgICAgY2FzZSBpbnQ4VGFnOiBjYXNlIGludDE2VGFnOiBjYXNlIGludDMyVGFnOlxuICAgICAgICBjYXNlIHVpbnQ4VGFnOiBjYXNlIHVpbnQ4Q2xhbXBlZFRhZzogY2FzZSB1aW50MTZUYWc6IGNhc2UgdWludDMyVGFnOlxuICAgICAgICAgIHJldHVybiBjbG9uZVR5cGVkQXJyYXkob2JqZWN0LCBpc0RlZXApO1xuXG4gICAgICAgIGNhc2UgbWFwVGFnOlxuICAgICAgICAgIHJldHVybiBuZXcgQ3RvcjtcblxuICAgICAgICBjYXNlIG51bWJlclRhZzpcbiAgICAgICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICAgICAgcmV0dXJuIG5ldyBDdG9yKG9iamVjdCk7XG5cbiAgICAgICAgY2FzZSByZWdleHBUYWc6XG4gICAgICAgICAgcmV0dXJuIGNsb25lUmVnRXhwKG9iamVjdCk7XG5cbiAgICAgICAgY2FzZSBzZXRUYWc6XG4gICAgICAgICAgcmV0dXJuIG5ldyBDdG9yO1xuXG4gICAgICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgICAgIHJldHVybiBjbG9uZVN5bWJvbChvYmplY3QpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluc2VydHMgd3JhcHBlciBgZGV0YWlsc2AgaW4gYSBjb21tZW50IGF0IHRoZSB0b3Agb2YgdGhlIGBzb3VyY2VgIGJvZHkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2UgVGhlIHNvdXJjZSB0byBtb2RpZnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBkZXRhaWxzIFRoZSBkZXRhaWxzIHRvIGluc2VydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBtb2RpZmllZCBzb3VyY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5zZXJ0V3JhcERldGFpbHMoc291cmNlLCBkZXRhaWxzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gZGV0YWlscy5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gc291cmNlO1xuICAgICAgfVxuICAgICAgdmFyIGxhc3RJbmRleCA9IGxlbmd0aCAtIDE7XG4gICAgICBkZXRhaWxzW2xhc3RJbmRleF0gPSAobGVuZ3RoID4gMSA/ICcmICcgOiAnJykgKyBkZXRhaWxzW2xhc3RJbmRleF07XG4gICAgICBkZXRhaWxzID0gZGV0YWlscy5qb2luKGxlbmd0aCA+IDIgPyAnLCAnIDogJyAnKTtcbiAgICAgIHJldHVybiBzb3VyY2UucmVwbGFjZShyZVdyYXBDb21tZW50LCAne1xcbi8qIFt3cmFwcGVkIHdpdGggJyArIGRldGFpbHMgKyAnXSAqL1xcbicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgZmxhdHRlbmFibGUgYGFyZ3VtZW50c2Agb2JqZWN0IG9yIGFycmF5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmbGF0dGVuYWJsZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRmxhdHRlbmFibGUodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc0FycmF5KHZhbHVlKSB8fCBpc0FyZ3VtZW50cyh2YWx1ZSkgfHxcbiAgICAgICAgISEoc3ByZWFkYWJsZVN5bWJvbCAmJiB2YWx1ZSAmJiB2YWx1ZVtzcHJlYWRhYmxlU3ltYm9sXSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD1NQVhfU0FGRV9JTlRFR0VSXSBUaGUgdXBwZXIgYm91bmRzIG9mIGEgdmFsaWQgaW5kZXguXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBpbmRleCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzSW5kZXgodmFsdWUsIGxlbmd0aCkge1xuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG5cbiAgICAgIHJldHVybiAhIWxlbmd0aCAmJlxuICAgICAgICAodHlwZSA9PSAnbnVtYmVyJyB8fFxuICAgICAgICAgICh0eXBlICE9ICdzeW1ib2wnICYmIHJlSXNVaW50LnRlc3QodmFsdWUpKSkgJiZcbiAgICAgICAgICAgICh2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDwgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIGdpdmVuIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgdmFsdWUgYXJndW1lbnQuXG4gICAgICogQHBhcmFtIHsqfSBpbmRleCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIGluZGV4IG9yIGtleSBhcmd1bWVudC5cbiAgICAgKiBAcGFyYW0geyp9IG9iamVjdCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIG9iamVjdCBhcmd1bWVudC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNJdGVyYXRlZUNhbGwodmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgICAgIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgdHlwZSA9IHR5cGVvZiBpbmRleDtcbiAgICAgIGlmICh0eXBlID09ICdudW1iZXInXG4gICAgICAgICAgICA/IChpc0FycmF5TGlrZShvYmplY3QpICYmIGlzSW5kZXgoaW5kZXgsIG9iamVjdC5sZW5ndGgpKVxuICAgICAgICAgICAgOiAodHlwZSA9PSAnc3RyaW5nJyAmJiBpbmRleCBpbiBvYmplY3QpXG4gICAgICAgICAgKSB7XG4gICAgICAgIHJldHVybiBlcShvYmplY3RbaW5kZXhdLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwcm9wZXJ0eSBuYW1lIGFuZCBub3QgYSBwcm9wZXJ0eSBwYXRoLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeSBrZXlzIG9uLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvcGVydHkgbmFtZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzS2V5KHZhbHVlLCBvYmplY3QpIHtcbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICAgIGlmICh0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicgfHxcbiAgICAgICAgICB2YWx1ZSA9PSBudWxsIHx8IGlzU3ltYm9sKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZUlzUGxhaW5Qcm9wLnRlc3QodmFsdWUpIHx8ICFyZUlzRGVlcFByb3AudGVzdCh2YWx1ZSkgfHxcbiAgICAgICAgKG9iamVjdCAhPSBudWxsICYmIHZhbHVlIGluIE9iamVjdChvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSBmb3IgdXNlIGFzIHVuaXF1ZSBvYmplY3Qga2V5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzS2V5YWJsZSh2YWx1ZSkge1xuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgICByZXR1cm4gKHR5cGUgPT0gJ3N0cmluZycgfHwgdHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nKVxuICAgICAgICA/ICh2YWx1ZSAhPT0gJ19fcHJvdG9fXycpXG4gICAgICAgIDogKHZhbHVlID09PSBudWxsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYGZ1bmNgIGhhcyBhIGxhenkgY291bnRlcnBhcnQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaGFzIGEgbGF6eSBjb3VudGVycGFydCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTGF6aWFibGUoZnVuYykge1xuICAgICAgdmFyIGZ1bmNOYW1lID0gZ2V0RnVuY05hbWUoZnVuYyksXG4gICAgICAgICAgb3RoZXIgPSBsb2Rhc2hbZnVuY05hbWVdO1xuXG4gICAgICBpZiAodHlwZW9mIG90aGVyICE9ICdmdW5jdGlvbicgfHwgIShmdW5jTmFtZSBpbiBMYXp5V3JhcHBlci5wcm90b3R5cGUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChmdW5jID09PSBvdGhlcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHZhciBkYXRhID0gZ2V0RGF0YShvdGhlcik7XG4gICAgICByZXR1cm4gISFkYXRhICYmIGZ1bmMgPT09IGRhdGFbMF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgaXRzIHNvdXJjZSBtYXNrZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2VkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNNYXNrZWQoZnVuYykge1xuICAgICAgcmV0dXJuICEhbWFza1NyY0tleSAmJiAobWFza1NyY0tleSBpbiBmdW5jKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYGZ1bmNgIGlzIGNhcGFibGUgb2YgYmVpbmcgbWFza2VkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGlzIG1hc2thYmxlLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgdmFyIGlzTWFza2FibGUgPSBjb3JlSnNEYXRhID8gaXNGdW5jdGlvbiA6IHN0dWJGYWxzZTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIHByb3RvdHlwZSBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvdG90eXBlLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNQcm90b3R5cGUodmFsdWUpIHtcbiAgICAgIHZhciBDdG9yID0gdmFsdWUgJiYgdmFsdWUuY29uc3RydWN0b3IsXG4gICAgICAgICAgcHJvdG8gPSAodHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSkgfHwgb2JqZWN0UHJvdG87XG5cbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gcHJvdG87XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaWYgc3VpdGFibGUgZm9yIHN0cmljdFxuICAgICAqICBlcXVhbGl0eSBjb21wYXJpc29ucywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzU3RyaWN0Q29tcGFyYWJsZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSAmJiAhaXNPYmplY3QodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgbWF0Y2hlc1Byb3BlcnR5YCBmb3Igc291cmNlIHZhbHVlcyBzdWl0YWJsZVxuICAgICAqIGZvciBzdHJpY3QgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGkuZS4gYD09PWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUoa2V5LCBzcmNWYWx1ZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9iamVjdFtrZXldID09PSBzcmNWYWx1ZSAmJlxuICAgICAgICAgIChzcmNWYWx1ZSAhPT0gdW5kZWZpbmVkIHx8IChrZXkgaW4gT2JqZWN0KG9iamVjdCkpKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLm1lbW9pemVgIHdoaWNoIGNsZWFycyB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24nc1xuICAgICAqIGNhY2hlIHdoZW4gaXQgZXhjZWVkcyBgTUFYX01FTU9JWkVfU0laRWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGhhdmUgaXRzIG91dHB1dCBtZW1vaXplZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtZW1vaXplQ2FwcGVkKGZ1bmMpIHtcbiAgICAgIHZhciByZXN1bHQgPSBtZW1vaXplKGZ1bmMsIGZ1bmN0aW9uKGtleSkge1xuICAgICAgICBpZiAoY2FjaGUuc2l6ZSA9PT0gTUFYX01FTU9JWkVfU0laRSkge1xuICAgICAgICAgIGNhY2hlLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgY2FjaGUgPSByZXN1bHQuY2FjaGU7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1lcmdlcyB0aGUgZnVuY3Rpb24gbWV0YWRhdGEgb2YgYHNvdXJjZWAgaW50byBgZGF0YWAuXG4gICAgICpcbiAgICAgKiBNZXJnaW5nIG1ldGFkYXRhIHJlZHVjZXMgdGhlIG51bWJlciBvZiB3cmFwcGVycyB1c2VkIHRvIGludm9rZSBhIGZ1bmN0aW9uLlxuICAgICAqIFRoaXMgaXMgcG9zc2libGUgYmVjYXVzZSBtZXRob2RzIGxpa2UgYF8uYmluZGAsIGBfLmN1cnJ5YCwgYW5kIGBfLnBhcnRpYWxgXG4gICAgICogbWF5IGJlIGFwcGxpZWQgcmVnYXJkbGVzcyBvZiBleGVjdXRpb24gb3JkZXIuIE1ldGhvZHMgbGlrZSBgXy5hcnlgIGFuZFxuICAgICAqIGBfLnJlYXJnYCBtb2RpZnkgZnVuY3Rpb24gYXJndW1lbnRzLCBtYWtpbmcgdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXJlXG4gICAgICogZXhlY3V0ZWQgaW1wb3J0YW50LCBwcmV2ZW50aW5nIHRoZSBtZXJnaW5nIG9mIG1ldGFkYXRhLiBIb3dldmVyLCB3ZSBtYWtlXG4gICAgICogYW4gZXhjZXB0aW9uIGZvciBhIHNhZmUgY29tYmluZWQgY2FzZSB3aGVyZSBjdXJyaWVkIGZ1bmN0aW9ucyBoYXZlIGBfLmFyeWBcbiAgICAgKiBhbmQgb3IgYF8ucmVhcmdgIGFwcGxpZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGRhdGEgVGhlIGRlc3RpbmF0aW9uIG1ldGFkYXRhLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHNvdXJjZSBUaGUgc291cmNlIG1ldGFkYXRhLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgZGF0YWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWVyZ2VEYXRhKGRhdGEsIHNvdXJjZSkge1xuICAgICAgdmFyIGJpdG1hc2sgPSBkYXRhWzFdLFxuICAgICAgICAgIHNyY0JpdG1hc2sgPSBzb3VyY2VbMV0sXG4gICAgICAgICAgbmV3Qml0bWFzayA9IGJpdG1hc2sgfCBzcmNCaXRtYXNrLFxuICAgICAgICAgIGlzQ29tbW9uID0gbmV3Qml0bWFzayA8IChXUkFQX0JJTkRfRkxBRyB8IFdSQVBfQklORF9LRVlfRkxBRyB8IFdSQVBfQVJZX0ZMQUcpO1xuXG4gICAgICB2YXIgaXNDb21ibyA9XG4gICAgICAgICgoc3JjQml0bWFzayA9PSBXUkFQX0FSWV9GTEFHKSAmJiAoYml0bWFzayA9PSBXUkFQX0NVUlJZX0ZMQUcpKSB8fFxuICAgICAgICAoKHNyY0JpdG1hc2sgPT0gV1JBUF9BUllfRkxBRykgJiYgKGJpdG1hc2sgPT0gV1JBUF9SRUFSR19GTEFHKSAmJiAoZGF0YVs3XS5sZW5ndGggPD0gc291cmNlWzhdKSkgfHxcbiAgICAgICAgKChzcmNCaXRtYXNrID09IChXUkFQX0FSWV9GTEFHIHwgV1JBUF9SRUFSR19GTEFHKSkgJiYgKHNvdXJjZVs3XS5sZW5ndGggPD0gc291cmNlWzhdKSAmJiAoYml0bWFzayA9PSBXUkFQX0NVUlJZX0ZMQUcpKTtcblxuICAgICAgLy8gRXhpdCBlYXJseSBpZiBtZXRhZGF0YSBjYW4ndCBiZSBtZXJnZWQuXG4gICAgICBpZiAoIShpc0NvbW1vbiB8fCBpc0NvbWJvKSkge1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgIH1cbiAgICAgIC8vIFVzZSBzb3VyY2UgYHRoaXNBcmdgIGlmIGF2YWlsYWJsZS5cbiAgICAgIGlmIChzcmNCaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcpIHtcbiAgICAgICAgZGF0YVsyXSA9IHNvdXJjZVsyXTtcbiAgICAgICAgLy8gU2V0IHdoZW4gY3VycnlpbmcgYSBib3VuZCBmdW5jdGlvbi5cbiAgICAgICAgbmV3Qml0bWFzayB8PSBiaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcgPyAwIDogV1JBUF9DVVJSWV9CT1VORF9GTEFHO1xuICAgICAgfVxuICAgICAgLy8gQ29tcG9zZSBwYXJ0aWFsIGFyZ3VtZW50cy5cbiAgICAgIHZhciB2YWx1ZSA9IHNvdXJjZVszXTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICB2YXIgcGFydGlhbHMgPSBkYXRhWzNdO1xuICAgICAgICBkYXRhWzNdID0gcGFydGlhbHMgPyBjb21wb3NlQXJncyhwYXJ0aWFscywgdmFsdWUsIHNvdXJjZVs0XSkgOiB2YWx1ZTtcbiAgICAgICAgZGF0YVs0XSA9IHBhcnRpYWxzID8gcmVwbGFjZUhvbGRlcnMoZGF0YVszXSwgUExBQ0VIT0xERVIpIDogc291cmNlWzRdO1xuICAgICAgfVxuICAgICAgLy8gQ29tcG9zZSBwYXJ0aWFsIHJpZ2h0IGFyZ3VtZW50cy5cbiAgICAgIHZhbHVlID0gc291cmNlWzVdO1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHBhcnRpYWxzID0gZGF0YVs1XTtcbiAgICAgICAgZGF0YVs1XSA9IHBhcnRpYWxzID8gY29tcG9zZUFyZ3NSaWdodChwYXJ0aWFscywgdmFsdWUsIHNvdXJjZVs2XSkgOiB2YWx1ZTtcbiAgICAgICAgZGF0YVs2XSA9IHBhcnRpYWxzID8gcmVwbGFjZUhvbGRlcnMoZGF0YVs1XSwgUExBQ0VIT0xERVIpIDogc291cmNlWzZdO1xuICAgICAgfVxuICAgICAgLy8gVXNlIHNvdXJjZSBgYXJnUG9zYCBpZiBhdmFpbGFibGUuXG4gICAgICB2YWx1ZSA9IHNvdXJjZVs3XTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBkYXRhWzddID0gdmFsdWU7XG4gICAgICB9XG4gICAgICAvLyBVc2Ugc291cmNlIGBhcnlgIGlmIGl0J3Mgc21hbGxlci5cbiAgICAgIGlmIChzcmNCaXRtYXNrICYgV1JBUF9BUllfRkxBRykge1xuICAgICAgICBkYXRhWzhdID0gZGF0YVs4XSA9PSBudWxsID8gc291cmNlWzhdIDogbmF0aXZlTWluKGRhdGFbOF0sIHNvdXJjZVs4XSk7XG4gICAgICB9XG4gICAgICAvLyBVc2Ugc291cmNlIGBhcml0eWAgaWYgb25lIGlzIG5vdCBwcm92aWRlZC5cbiAgICAgIGlmIChkYXRhWzldID09IG51bGwpIHtcbiAgICAgICAgZGF0YVs5XSA9IHNvdXJjZVs5XTtcbiAgICAgIH1cbiAgICAgIC8vIFVzZSBzb3VyY2UgYGZ1bmNgIGFuZCBtZXJnZSBiaXRtYXNrcy5cbiAgICAgIGRhdGFbMF0gPSBzb3VyY2VbMF07XG4gICAgICBkYXRhWzFdID0gbmV3Qml0bWFzaztcblxuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlXG4gICAgICogW2BPYmplY3Qua2V5c2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICAgICAqIGV4Y2VwdCB0aGF0IGl0IGluY2x1ZGVzIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5hdGl2ZUtleXNJbihvYmplY3QpIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGlmIChvYmplY3QgIT0gbnVsbCkge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gICAgICovXG4gICAgZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAgICAgIHJldHVybiBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCB0cmFuc2Zvcm1zIHRoZSByZXN0IGFycmF5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9ZnVuYy5sZW5ndGgtMV0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSByZXN0IHBhcmFtZXRlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIHJlc3QgYXJyYXkgdHJhbnNmb3JtLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCB0cmFuc2Zvcm0pIHtcbiAgICAgIHN0YXJ0ID0gbmF0aXZlTWF4KHN0YXJ0ID09PSB1bmRlZmluZWQgPyAoZnVuYy5sZW5ndGggLSAxKSA6IHN0YXJ0LCAwKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWF4KGFyZ3MubGVuZ3RoIC0gc3RhcnQsIDApLFxuICAgICAgICAgICAgYXJyYXkgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgYXJyYXlbaW5kZXhdID0gYXJnc1tzdGFydCArIGluZGV4XTtcbiAgICAgICAgfVxuICAgICAgICBpbmRleCA9IC0xO1xuICAgICAgICB2YXIgb3RoZXJBcmdzID0gQXJyYXkoc3RhcnQgKyAxKTtcbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBzdGFydCkge1xuICAgICAgICAgIG90aGVyQXJnc1tpbmRleF0gPSBhcmdzW2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgICBvdGhlckFyZ3Nbc3RhcnRdID0gdHJhbnNmb3JtKGFycmF5KTtcbiAgICAgICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHRoaXMsIG90aGVyQXJncyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHBhcmVudCB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYXRoIFRoZSBwYXRoIHRvIGdldCB0aGUgcGFyZW50IHZhbHVlIG9mLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwYXJlbnQgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gcGFyZW50KG9iamVjdCwgcGF0aCkge1xuICAgICAgcmV0dXJuIHBhdGgubGVuZ3RoIDwgMiA/IG9iamVjdCA6IGJhc2VHZXQob2JqZWN0LCBiYXNlU2xpY2UocGF0aCwgMCwgLTEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW9yZGVyIGBhcnJheWAgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgaW5kZXhlcyB3aGVyZSB0aGUgZWxlbWVudCBhdFxuICAgICAqIHRoZSBmaXJzdCBpbmRleCBpcyBhc3NpZ25lZCBhcyB0aGUgZmlyc3QgZWxlbWVudCwgdGhlIGVsZW1lbnQgYXRcbiAgICAgKiB0aGUgc2Vjb25kIGluZGV4IGlzIGFzc2lnbmVkIGFzIHRoZSBzZWNvbmQgZWxlbWVudCwgYW5kIHNvIG9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcmVvcmRlci5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBpbmRleGVzIFRoZSBhcnJhbmdlZCBhcnJheSBpbmRleGVzLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlb3JkZXIoYXJyYXksIGluZGV4ZXMpIHtcbiAgICAgIHZhciBhcnJMZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWluKGluZGV4ZXMubGVuZ3RoLCBhcnJMZW5ndGgpLFxuICAgICAgICAgIG9sZEFycmF5ID0gY29weUFycmF5KGFycmF5KTtcblxuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGluZGV4ZXNbbGVuZ3RoXTtcbiAgICAgICAgYXJyYXlbbGVuZ3RoXSA9IGlzSW5kZXgoaW5kZXgsIGFyckxlbmd0aCkgPyBvbGRBcnJheVtpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAsIHVubGVzcyBga2V5YCBpcyBcIl9fcHJvdG9fX1wiIG9yIFwiY29uc3RydWN0b3JcIi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzYWZlR2V0KG9iamVjdCwga2V5KSB7XG4gICAgICBpZiAoa2V5ID09PSAnY29uc3RydWN0b3InICYmIHR5cGVvZiBvYmplY3Rba2V5XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChrZXkgPT0gJ19fcHJvdG9fXycpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqZWN0W2tleV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBtZXRhZGF0YSBmb3IgYGZ1bmNgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIElmIHRoaXMgZnVuY3Rpb24gYmVjb21lcyBob3QsIGkuZS4gaXMgaW52b2tlZCBhIGxvdCBpbiBhIHNob3J0XG4gICAgICogcGVyaW9kIG9mIHRpbWUsIGl0IHdpbGwgdHJpcCBpdHMgYnJlYWtlciBhbmQgdHJhbnNpdGlvbiB0byBhbiBpZGVudGl0eVxuICAgICAqIGZ1bmN0aW9uIHRvIGF2b2lkIGdhcmJhZ2UgY29sbGVjdGlvbiBwYXVzZXMgaW4gVjguIFNlZVxuICAgICAqIFtWOCBpc3N1ZSAyMDcwXShodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0yMDcwKVxuICAgICAqIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFzc29jaWF0ZSBtZXRhZGF0YSB3aXRoLlxuICAgICAqIEBwYXJhbSB7Kn0gZGF0YSBUaGUgbWV0YWRhdGEuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAgICAgKi9cbiAgICB2YXIgc2V0RGF0YSA9IHNob3J0T3V0KGJhc2VTZXREYXRhKTtcblxuICAgIC8qKlxuICAgICAqIEEgc2ltcGxlIHdyYXBwZXIgYXJvdW5kIHRoZSBnbG9iYWwgW2BzZXRUaW1lb3V0YF0oaHR0cHM6Ly9tZG4uaW8vc2V0VGltZW91dCkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlbGF5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3YWl0IFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5IGludm9jYXRpb24uXG4gICAgICogQHJldHVybnMge251bWJlcnxPYmplY3R9IFJldHVybnMgdGhlIHRpbWVyIGlkIG9yIHRpbWVvdXQgb2JqZWN0LlxuICAgICAqL1xuICAgIHZhciBzZXRUaW1lb3V0ID0gY3R4U2V0VGltZW91dCB8fCBmdW5jdGlvbihmdW5jLCB3YWl0KSB7XG4gICAgICByZXR1cm4gcm9vdC5zZXRUaW1lb3V0KGZ1bmMsIHdhaXQpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBgdG9TdHJpbmdgIG1ldGhvZCBvZiBgZnVuY2AgdG8gcmV0dXJuIGBzdHJpbmdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBzZXRUb1N0cmluZyA9IHNob3J0T3V0KGJhc2VTZXRUb1N0cmluZyk7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBgdG9TdHJpbmdgIG1ldGhvZCBvZiBgd3JhcHBlcmAgdG8gbWltaWMgdGhlIHNvdXJjZSBvZiBgcmVmZXJlbmNlYFxuICAgICAqIHdpdGggd3JhcHBlciBkZXRhaWxzIGluIGEgY29tbWVudCBhdCB0aGUgdG9wIG9mIHRoZSBzb3VyY2UgYm9keS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gd3JhcHBlciBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHJlZmVyZW5jZSBUaGUgcmVmZXJlbmNlIGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGB3cmFwcGVyYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXRXcmFwVG9TdHJpbmcod3JhcHBlciwgcmVmZXJlbmNlLCBiaXRtYXNrKSB7XG4gICAgICB2YXIgc291cmNlID0gKHJlZmVyZW5jZSArICcnKTtcbiAgICAgIHJldHVybiBzZXRUb1N0cmluZyh3cmFwcGVyLCBpbnNlcnRXcmFwRGV0YWlscyhzb3VyY2UsIHVwZGF0ZVdyYXBEZXRhaWxzKGdldFdyYXBEZXRhaWxzKHNvdXJjZSksIGJpdG1hc2spKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQnbGwgc2hvcnQgb3V0IGFuZCBpbnZva2UgYGlkZW50aXR5YCBpbnN0ZWFkXG4gICAgICogb2YgYGZ1bmNgIHdoZW4gaXQncyBjYWxsZWQgYEhPVF9DT1VOVGAgb3IgbW9yZSB0aW1lcyBpbiBgSE9UX1NQQU5gXG4gICAgICogbWlsbGlzZWNvbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzaG9ydGFibGUgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2hvcnRPdXQoZnVuYykge1xuICAgICAgdmFyIGNvdW50ID0gMCxcbiAgICAgICAgICBsYXN0Q2FsbGVkID0gMDtcblxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgc3RhbXAgPSBuYXRpdmVOb3coKSxcbiAgICAgICAgICAgIHJlbWFpbmluZyA9IEhPVF9TUEFOIC0gKHN0YW1wIC0gbGFzdENhbGxlZCk7XG5cbiAgICAgICAgbGFzdENhbGxlZCA9IHN0YW1wO1xuICAgICAgICBpZiAocmVtYWluaW5nID4gMCkge1xuICAgICAgICAgIGlmICgrK2NvdW50ID49IEhPVF9DT1VOVCkge1xuICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1swXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY291bnQgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHVuZGVmaW5lZCwgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNodWZmbGVgIHdoaWNoIG11dGF0ZXMgYW5kIHNldHMgdGhlIHNpemUgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNodWZmbGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzaXplPWFycmF5Lmxlbmd0aF0gVGhlIHNpemUgb2YgYGFycmF5YC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzaHVmZmxlU2VsZihhcnJheSwgc2l6ZSkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIGxhc3RJbmRleCA9IGxlbmd0aCAtIDE7XG5cbiAgICAgIHNpemUgPSBzaXplID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiBzaXplO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBzaXplKSB7XG4gICAgICAgIHZhciByYW5kID0gYmFzZVJhbmRvbShpbmRleCwgbGFzdEluZGV4KSxcbiAgICAgICAgICAgIHZhbHVlID0gYXJyYXlbcmFuZF07XG5cbiAgICAgICAgYXJyYXlbcmFuZF0gPSBhcnJheVtpbmRleF07XG4gICAgICAgIGFycmF5W2luZGV4XSA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgYXJyYXkubGVuZ3RoID0gc2l6ZTtcbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBhIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAgICAgKi9cbiAgICB2YXIgc3RyaW5nVG9QYXRoID0gbWVtb2l6ZUNhcHBlZChmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGlmIChzdHJpbmcuY2hhckNvZGVBdCgwKSA9PT0gNDYgLyogLiAqLykge1xuICAgICAgICByZXN1bHQucHVzaCgnJyk7XG4gICAgICB9XG4gICAgICBzdHJpbmcucmVwbGFjZShyZVByb3BOYW1lLCBmdW5jdGlvbihtYXRjaCwgbnVtYmVyLCBxdW90ZSwgc3ViU3RyaW5nKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHF1b3RlID8gc3ViU3RyaW5nLnJlcGxhY2UocmVFc2NhcGVDaGFyLCAnJDEnKSA6IChudW1iZXIgfHwgbWF0Y2gpKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcga2V5IGlmIGl0J3Mgbm90IGEgc3RyaW5nIG9yIHN5bWJvbC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfHN5bWJvbH0gUmV0dXJucyB0aGUga2V5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvS2V5KHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IGlzU3ltYm9sKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICAgICAgcmV0dXJuIChyZXN1bHQgPT0gJzAnICYmICgxIC8gdmFsdWUpID09IC1JTkZJTklUWSkgPyAnLTAnIDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBmdW5jYCB0byBpdHMgc291cmNlIGNvZGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc291cmNlIGNvZGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9Tb3VyY2UoZnVuYykge1xuICAgICAgaWYgKGZ1bmMgIT0gbnVsbCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBmdW5jVG9TdHJpbmcuY2FsbChmdW5jKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gKGZ1bmMgKyAnJyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICB9XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB3cmFwcGVyIGBkZXRhaWxzYCBiYXNlZCBvbiBgYml0bWFza2AgZmxhZ3MuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gZGV0YWlscyBUaGUgZGV0YWlscyB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGRldGFpbHNgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVwZGF0ZVdyYXBEZXRhaWxzKGRldGFpbHMsIGJpdG1hc2spIHtcbiAgICAgIGFycmF5RWFjaCh3cmFwRmxhZ3MsIGZ1bmN0aW9uKHBhaXIpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gJ18uJyArIHBhaXJbMF07XG4gICAgICAgIGlmICgoYml0bWFzayAmIHBhaXJbMV0pICYmICFhcnJheUluY2x1ZGVzKGRldGFpbHMsIHZhbHVlKSkge1xuICAgICAgICAgIGRldGFpbHMucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGRldGFpbHMuc29ydCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgd3JhcHBlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSB3cmFwcGVyIFRoZSB3cmFwcGVyIHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCB3cmFwcGVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJDbG9uZSh3cmFwcGVyKSB7XG4gICAgICBpZiAod3JhcHBlciBpbnN0YW5jZW9mIExhenlXcmFwcGVyKSB7XG4gICAgICAgIHJldHVybiB3cmFwcGVyLmNsb25lKCk7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IExvZGFzaFdyYXBwZXIod3JhcHBlci5fX3dyYXBwZWRfXywgd3JhcHBlci5fX2NoYWluX18pO1xuICAgICAgcmVzdWx0Ll9fYWN0aW9uc19fID0gY29weUFycmF5KHdyYXBwZXIuX19hY3Rpb25zX18pO1xuICAgICAgcmVzdWx0Ll9faW5kZXhfXyAgPSB3cmFwcGVyLl9faW5kZXhfXztcbiAgICAgIHJlc3VsdC5fX3ZhbHVlc19fID0gd3JhcHBlci5fX3ZhbHVlc19fO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGVsZW1lbnRzIHNwbGl0IGludG8gZ3JvdXBzIHRoZSBsZW5ndGggb2YgYHNpemVgLlxuICAgICAqIElmIGBhcnJheWAgY2FuJ3QgYmUgc3BsaXQgZXZlbmx5LCB0aGUgZmluYWwgY2h1bmsgd2lsbCBiZSB0aGUgcmVtYWluaW5nXG4gICAgICogZWxlbWVudHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NpemU9MV0gVGhlIGxlbmd0aCBvZiBlYWNoIGNodW5rXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjaHVua3MuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY2h1bmsoWydhJywgJ2InLCAnYycsICdkJ10sIDIpO1xuICAgICAqIC8vID0+IFtbJ2EnLCAnYiddLCBbJ2MnLCAnZCddXVxuICAgICAqXG4gICAgICogXy5jaHVuayhbJ2EnLCAnYicsICdjJywgJ2QnXSwgMyk7XG4gICAgICogLy8gPT4gW1snYScsICdiJywgJ2MnXSwgWydkJ11dXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2h1bmsoYXJyYXksIHNpemUsIGd1YXJkKSB7XG4gICAgICBpZiAoKGd1YXJkID8gaXNJdGVyYXRlZUNhbGwoYXJyYXksIHNpemUsIGd1YXJkKSA6IHNpemUgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgc2l6ZSA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaXplID0gbmF0aXZlTWF4KHRvSW50ZWdlcihzaXplKSwgMCk7XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCB8fCBzaXplIDwgMSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSAwLFxuICAgICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgICByZXN1bHQgPSBBcnJheShuYXRpdmVDZWlsKGxlbmd0aCAvIHNpemUpKTtcblxuICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IGJhc2VTbGljZShhcnJheSwgaW5kZXgsIChpbmRleCArPSBzaXplKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgd2l0aCBhbGwgZmFsc2V5IHZhbHVlcyByZW1vdmVkLiBUaGUgdmFsdWVzIGBmYWxzZWAsIGBudWxsYCxcbiAgICAgKiBgMGAsIGBcIlwiYCwgYHVuZGVmaW5lZGAsIGFuZCBgTmFOYCBhcmUgZmFsc2V5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNvbXBhY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNvbXBhY3QoWzAsIDEsIGZhbHNlLCAyLCAnJywgM10pO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbXBhY3QoYXJyYXkpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGFycmF5IGNvbmNhdGVuYXRpbmcgYGFycmF5YCB3aXRoIGFueSBhZGRpdGlvbmFsIGFycmF5c1xuICAgICAqIGFuZC9vciB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29uY2F0ZW5hdGUuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNvbmNhdGVuYXRlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGNvbmNhdGVuYXRlZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzFdO1xuICAgICAqIHZhciBvdGhlciA9IF8uY29uY2F0KGFycmF5LCAyLCBbM10sIFtbNF1dKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG90aGVyKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgMywgWzRdXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbmNhdCgpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIGFyZ3MgPSBBcnJheShsZW5ndGggLSAxKSxcbiAgICAgICAgICBhcnJheSA9IGFyZ3VtZW50c1swXSxcbiAgICAgICAgICBpbmRleCA9IGxlbmd0aDtcblxuICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgYXJnc1tpbmRleCAtIDFdID0gYXJndW1lbnRzW2luZGV4XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheVB1c2goaXNBcnJheShhcnJheSkgPyBjb3B5QXJyYXkoYXJyYXkpIDogW2FycmF5XSwgYmFzZUZsYXR0ZW4oYXJncywgMSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgYGFycmF5YCB2YWx1ZXMgbm90IGluY2x1ZGVkIGluIHRoZSBvdGhlciBnaXZlbiBhcnJheXNcbiAgICAgKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzIG9mIHJlc3VsdCB2YWx1ZXMgYXJlXG4gICAgICogZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnB1bGxBbGxgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAc2VlIF8ud2l0aG91dCwgXy54b3JcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kaWZmZXJlbmNlKFsyLCAxXSwgWzIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMV1cbiAgICAgKi9cbiAgICB2YXIgZGlmZmVyZW5jZSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5LCB2YWx1ZXMpIHtcbiAgICAgIHJldHVybiBpc0FycmF5TGlrZU9iamVjdChhcnJheSlcbiAgICAgICAgPyBiYXNlRGlmZmVyZW5jZShhcnJheSwgYmFzZUZsYXR0ZW4odmFsdWVzLCAxLCBpc0FycmF5TGlrZU9iamVjdCwgdHJ1ZSkpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmRpZmZlcmVuY2VgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIGFuZCBgdmFsdWVzYCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uXG4gICAgICogYnkgd2hpY2ggdGhleSdyZSBjb21wYXJlZC4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzIG9mIHJlc3VsdCB2YWx1ZXMgYXJlXG4gICAgICogZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OlxuICAgICAqICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnB1bGxBbGxCeWAsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGV4Y2x1ZGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kaWZmZXJlbmNlQnkoWzIuMSwgMS4yXSwgWzIuMywgMy40XSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzEuMl1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZGlmZmVyZW5jZUJ5KFt7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgW3sgJ3gnOiAxIH1dLCAneCcpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMiB9XVxuICAgICAqL1xuICAgIHZhciBkaWZmZXJlbmNlQnkgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheSwgdmFsdWVzKSB7XG4gICAgICB2YXIgaXRlcmF0ZWUgPSBsYXN0KHZhbHVlcyk7XG4gICAgICBpZiAoaXNBcnJheUxpa2VPYmplY3QoaXRlcmF0ZWUpKSB7XG4gICAgICAgIGl0ZXJhdGVlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KGFycmF5KVxuICAgICAgICA/IGJhc2VEaWZmZXJlbmNlKGFycmF5LCBiYXNlRmxhdHRlbih2YWx1ZXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5kaWZmZXJlbmNlYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlgIHRvIGB2YWx1ZXNgLiBUaGUgb3JkZXIgYW5kXG4gICAgICogcmVmZXJlbmNlcyBvZiByZXN1bHQgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS4gVGhlIGNvbXBhcmF0b3JcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggdHdvIGFyZ3VtZW50czogKGFyclZhbCwgb3RoVmFsKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8ucHVsbEFsbFdpdGhgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH1dO1xuICAgICAqXG4gICAgICogXy5kaWZmZXJlbmNlV2l0aChvYmplY3RzLCBbeyAneCc6IDEsICd5JzogMiB9XSwgXy5pc0VxdWFsKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDIsICd5JzogMSB9XVxuICAgICAqL1xuICAgIHZhciBkaWZmZXJlbmNlV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5LCB2YWx1ZXMpIHtcbiAgICAgIHZhciBjb21wYXJhdG9yID0gbGFzdCh2YWx1ZXMpO1xuICAgICAgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KGNvbXBhcmF0b3IpKSB7XG4gICAgICAgIGNvbXBhcmF0b3IgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2VPYmplY3QoYXJyYXkpXG4gICAgICAgID8gYmFzZURpZmZlcmVuY2UoYXJyYXksIGJhc2VGbGF0dGVuKHZhbHVlcywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpLCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGBuYCBlbGVtZW50cyBkcm9wcGVkIGZyb20gdGhlIGJlZ2lubmluZy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjUuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byBkcm9wLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRyb3AoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMiwgM11cbiAgICAgKlxuICAgICAqIF8uZHJvcChbMSwgMiwgM10sIDIpO1xuICAgICAqIC8vID0+IFszXVxuICAgICAqXG4gICAgICogXy5kcm9wKFsxLCAyLCAzXSwgNSk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKlxuICAgICAqIF8uZHJvcChbMSwgMiwgM10sIDApO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRyb3AoYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBuID0gKGd1YXJkIHx8IG4gPT09IHVuZGVmaW5lZCkgPyAxIDogdG9JbnRlZ2VyKG4pO1xuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgbiA8IDAgPyAwIDogbiwgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGBuYCBlbGVtZW50cyBkcm9wcGVkIGZyb20gdGhlIGVuZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byBkcm9wLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRyb3BSaWdodChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogXy5kcm9wUmlnaHQoWzEsIDIsIDNdLCAyKTtcbiAgICAgKiAvLyA9PiBbMV1cbiAgICAgKlxuICAgICAqIF8uZHJvcFJpZ2h0KFsxLCAyLCAzXSwgNSk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKlxuICAgICAqIF8uZHJvcFJpZ2h0KFsxLCAyLCAzXSwgMCk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZHJvcFJpZ2h0KGFycmF5LCBuLCBndWFyZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgbiA9IChndWFyZCB8fCBuID09PSB1bmRlZmluZWQpID8gMSA6IHRvSW50ZWdlcihuKTtcbiAgICAgIG4gPSBsZW5ndGggLSBuO1xuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgMCwgbiA8IDAgPyAwIDogbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgZXhjbHVkaW5nIGVsZW1lbnRzIGRyb3BwZWQgZnJvbSB0aGUgZW5kLlxuICAgICAqIEVsZW1lbnRzIGFyZSBkcm9wcGVkIHVudGlsIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleCwgYXJyYXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZHJvcFJpZ2h0V2hpbGUodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuICFvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BSaWdodFdoaWxlKHVzZXJzLCB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknLCAnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wUmlnaHRXaGlsZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZHJvcFJpZ2h0V2hpbGUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leScsICdmcmVkJywgJ3BlYmJsZXMnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRyb3BSaWdodFdoaWxlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VXaGlsZShhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgdHJ1ZSwgdHJ1ZSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCBleGNsdWRpbmcgZWxlbWVudHMgZHJvcHBlZCBmcm9tIHRoZSBiZWdpbm5pbmcuXG4gICAgICogRWxlbWVudHMgYXJlIGRyb3BwZWQgdW50aWwgYHByZWRpY2F0ZWAgcmV0dXJucyBmYWxzZXkuIFRoZSBwcmVkaWNhdGUgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4LCBhcnJheSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5kcm9wV2hpbGUodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuICFvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wV2hpbGUodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BXaGlsZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BXaGlsZSh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5JywgJ2ZyZWQnLCAncGViYmxlcyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gZHJvcFdoaWxlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VXaGlsZShhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgdHJ1ZSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaWxscyBlbGVtZW50cyBvZiBgYXJyYXlgIHdpdGggYHZhbHVlYCBmcm9tIGBzdGFydGAgdXAgdG8sIGJ1dCBub3RcbiAgICAgKiBpbmNsdWRpbmcsIGBlbmRgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmaWxsLlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGZpbGwgYGFycmF5YCB3aXRoLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZW5kPWFycmF5Lmxlbmd0aF0gVGhlIGVuZCBwb3NpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDNdO1xuICAgICAqXG4gICAgICogXy5maWxsKGFycmF5LCAnYScpO1xuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYScsICdhJ11cbiAgICAgKlxuICAgICAqIF8uZmlsbChBcnJheSgzKSwgMik7XG4gICAgICogLy8gPT4gWzIsIDIsIDJdXG4gICAgICpcbiAgICAgKiBfLmZpbGwoWzQsIDYsIDgsIDEwXSwgJyonLCAxLCAzKTtcbiAgICAgKiAvLyA9PiBbNCwgJyonLCAnKicsIDEwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbGwoYXJyYXksIHZhbHVlLCBzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBpZiAoc3RhcnQgJiYgdHlwZW9mIHN0YXJ0ICE9ICdudW1iZXInICYmIGlzSXRlcmF0ZWVDYWxsKGFycmF5LCB2YWx1ZSwgc3RhcnQpKSB7XG4gICAgICAgIHN0YXJ0ID0gMDtcbiAgICAgICAgZW5kID0gbGVuZ3RoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VGaWxsKGFycmF5LCB2YWx1ZSwgc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5maW5kYCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3RcbiAgICAgKiBlbGVtZW50IGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciBpbnN0ZWFkIG9mIHRoZSBlbGVtZW50IGl0c2VsZi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZvdW5kIGVsZW1lbnQsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maW5kSW5kZXgodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlciA9PSAnYmFybmV5JzsgfSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRJbmRleCh1c2VycywgeyAndXNlcic6ICdmcmVkJywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IDFcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRJbmRleCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZEluZGV4KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gMlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IGZyb21JbmRleCA9PSBudWxsID8gMCA6IHRvSW50ZWdlcihmcm9tSW5kZXgpO1xuICAgICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICBpbmRleCA9IG5hdGl2ZU1heChsZW5ndGggKyBpbmRleCwgMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUZpbmRJbmRleChhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgaW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZEluZGV4YCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzXG4gICAgICogb2YgYGNvbGxlY3Rpb25gIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD1hcnJheS5sZW5ndGgtMV0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmb3VuZCBlbGVtZW50LCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmluZExhc3RJbmRleCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby51c2VyID09ICdwZWJibGVzJzsgfSk7XG4gICAgICogLy8gPT4gMlxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0SW5kZXgodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RJbmRleCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IDJcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RJbmRleCh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IDBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaW5kTGFzdEluZGV4KGFycmF5LCBwcmVkaWNhdGUsIGZyb21JbmRleCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gbGVuZ3RoIC0gMTtcbiAgICAgIGlmIChmcm9tSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpbmRleCA9IHRvSW50ZWdlcihmcm9tSW5kZXgpO1xuICAgICAgICBpbmRleCA9IGZyb21JbmRleCA8IDBcbiAgICAgICAgICA/IG5hdGl2ZU1heChsZW5ndGggKyBpbmRleCwgMClcbiAgICAgICAgICA6IG5hdGl2ZU1pbihpbmRleCwgbGVuZ3RoIC0gMSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUZpbmRJbmRleChhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgaW5kZXgsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZsYXR0ZW5zIGBhcnJheWAgYSBzaW5nbGUgbGV2ZWwgZGVlcC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5mbGF0dGVuKFsxLCBbMiwgWzMsIFs0XV0sIDVdXSk7XG4gICAgICogLy8gPT4gWzEsIDIsIFszLCBbNF1dLCA1XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXR0ZW4oYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBiYXNlRmxhdHRlbihhcnJheSwgMSkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWN1cnNpdmVseSBmbGF0dGVucyBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZsYXR0ZW5EZWVwKFsxLCBbMiwgWzMsIFs0XV0sIDVdXSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDMsIDQsIDVdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdHRlbkRlZXAoYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBiYXNlRmxhdHRlbihhcnJheSwgSU5GSU5JVFkpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVjdXJzaXZlbHkgZmxhdHRlbiBgYXJyYXlgIHVwIHRvIGBkZXB0aGAgdGltZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC40LjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RlcHRoPTFdIFRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxLCBbMiwgWzMsIFs0XV0sIDVdXTtcbiAgICAgKlxuICAgICAqIF8uZmxhdHRlbkRlcHRoKGFycmF5LCAxKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgWzMsIFs0XV0sIDVdXG4gICAgICpcbiAgICAgKiBfLmZsYXR0ZW5EZXB0aChhcnJheSwgMik7XG4gICAgICogLy8gPT4gWzEsIDIsIDMsIFs0XSwgNV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0dGVuRGVwdGgoYXJyYXksIGRlcHRoKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBkZXB0aCA9IGRlcHRoID09PSB1bmRlZmluZWQgPyAxIDogdG9JbnRlZ2VyKGRlcHRoKTtcbiAgICAgIHJldHVybiBiYXNlRmxhdHRlbihhcnJheSwgZGVwdGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBpbnZlcnNlIG9mIGBfLnRvUGFpcnNgOyB0aGlzIG1ldGhvZCByZXR1cm5zIGFuIG9iamVjdCBjb21wb3NlZFxuICAgICAqIGZyb20ga2V5LXZhbHVlIGBwYWlyc2AuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYWlycyBUaGUga2V5LXZhbHVlIHBhaXJzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZnJvbVBhaXJzKFtbJ2EnLCAxXSwgWydiJywgMl1dKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmcm9tUGFpcnMocGFpcnMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHBhaXJzID09IG51bGwgPyAwIDogcGFpcnMubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IHt9O1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgcGFpciA9IHBhaXJzW2luZGV4XTtcbiAgICAgICAgcmVzdWx0W3BhaXJbMF1dID0gcGFpclsxXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZmlyc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGFsaWFzIGZpcnN0XG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaGVhZChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IDFcbiAgICAgKlxuICAgICAqIF8uaGVhZChbXSk7XG4gICAgICogLy8gPT4gdW5kZWZpbmVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGVhZChhcnJheSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpID8gYXJyYXlbMF0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYHZhbHVlYCBpcyBmb3VuZCBpbiBgYXJyYXlgXG4gICAgICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuIElmIGBmcm9tSW5kZXhgIGlzIG5lZ2F0aXZlLCBpdCdzIHVzZWQgYXMgdGhlXG4gICAgICogb2Zmc2V0IGZyb20gdGhlIGVuZCBvZiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbmRleE9mKFsxLCAyLCAxLCAyXSwgMik7XG4gICAgICogLy8gPT4gMVxuICAgICAqXG4gICAgICogLy8gU2VhcmNoIGZyb20gdGhlIGBmcm9tSW5kZXhgLlxuICAgICAqIF8uaW5kZXhPZihbMSwgMiwgMSwgMl0sIDIsIDIpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSBmcm9tSW5kZXggPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgaW5kZXggPSBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgaW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYWxsIGJ1dCB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmluaXRpYWwoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbml0aWFsKGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYmFzZVNsaWNlKGFycmF5LCAwLCAtMSkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gYWxsIGdpdmVuIGFycmF5c1xuICAgICAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLiBUaGUgb3JkZXIgYW5kIHJlZmVyZW5jZXMgb2YgcmVzdWx0IHZhbHVlcyBhcmVcbiAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBpbnRlcnNlY3RpbmcgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmludGVyc2VjdGlvbihbMiwgMV0sIFsyLCAzXSk7XG4gICAgICogLy8gPT4gWzJdXG4gICAgICovXG4gICAgdmFyIGludGVyc2VjdGlvbiA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIG1hcHBlZCA9IGFycmF5TWFwKGFycmF5cywgY2FzdEFycmF5TGlrZU9iamVjdCk7XG4gICAgICByZXR1cm4gKG1hcHBlZC5sZW5ndGggJiYgbWFwcGVkWzBdID09PSBhcnJheXNbMF0pXG4gICAgICAgID8gYmFzZUludGVyc2VjdGlvbihtYXBwZWQpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmludGVyc2VjdGlvbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IG9mIGVhY2ggYGFycmF5c2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvblxuICAgICAqIGJ5IHdoaWNoIHRoZXkncmUgY29tcGFyZWQuIFRoZSBvcmRlciBhbmQgcmVmZXJlbmNlcyBvZiByZXN1bHQgdmFsdWVzIGFyZVxuICAgICAqIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDpcbiAgICAgKiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBpbnRlcnNlY3RpbmcgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmludGVyc2VjdGlvbkJ5KFsyLjEsIDEuMl0sIFsyLjMsIDMuNF0sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsyLjFdXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmludGVyc2VjdGlvbkJ5KFt7ICd4JzogMSB9XSwgW3sgJ3gnOiAyIH0sIHsgJ3gnOiAxIH1dLCAneCcpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSB9XVxuICAgICAqL1xuICAgIHZhciBpbnRlcnNlY3Rpb25CeSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGl0ZXJhdGVlID0gbGFzdChhcnJheXMpLFxuICAgICAgICAgIG1hcHBlZCA9IGFycmF5TWFwKGFycmF5cywgY2FzdEFycmF5TGlrZU9iamVjdCk7XG5cbiAgICAgIGlmIChpdGVyYXRlZSA9PT0gbGFzdChtYXBwZWQpKSB7XG4gICAgICAgIGl0ZXJhdGVlID0gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWFwcGVkLnBvcCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChtYXBwZWQubGVuZ3RoICYmIG1hcHBlZFswXSA9PT0gYXJyYXlzWzBdKVxuICAgICAgICA/IGJhc2VJbnRlcnNlY3Rpb24obWFwcGVkLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmludGVyc2VjdGlvbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5c2AuIFRoZSBvcmRlciBhbmQgcmVmZXJlbmNlc1xuICAgICAqIG9mIHJlc3VsdCB2YWx1ZXMgYXJlIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LiBUaGUgY29tcGFyYXRvciBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGludGVyc2VjdGluZyB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XTtcbiAgICAgKiB2YXIgb3RoZXJzID0gW3sgJ3gnOiAxLCAneSc6IDEgfSwgeyAneCc6IDEsICd5JzogMiB9XTtcbiAgICAgKlxuICAgICAqIF8uaW50ZXJzZWN0aW9uV2l0aChvYmplY3RzLCBvdGhlcnMsIF8uaXNFcXVhbCk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfV1cbiAgICAgKi9cbiAgICB2YXIgaW50ZXJzZWN0aW9uV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGNvbXBhcmF0b3IgPSBsYXN0KGFycmF5cyksXG4gICAgICAgICAgbWFwcGVkID0gYXJyYXlNYXAoYXJyYXlzLCBjYXN0QXJyYXlMaWtlT2JqZWN0KTtcblxuICAgICAgY29tcGFyYXRvciA9IHR5cGVvZiBjb21wYXJhdG9yID09ICdmdW5jdGlvbicgPyBjb21wYXJhdG9yIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKGNvbXBhcmF0b3IpIHtcbiAgICAgICAgbWFwcGVkLnBvcCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChtYXBwZWQubGVuZ3RoICYmIG1hcHBlZFswXSA9PT0gYXJyYXlzWzBdKVxuICAgICAgICA/IGJhc2VJbnRlcnNlY3Rpb24obWFwcGVkLCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBhbGwgZWxlbWVudHMgaW4gYGFycmF5YCBpbnRvIGEgc3RyaW5nIHNlcGFyYXRlZCBieSBgc2VwYXJhdG9yYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb252ZXJ0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc2VwYXJhdG9yPScsJ10gVGhlIGVsZW1lbnQgc2VwYXJhdG9yLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGpvaW5lZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uam9pbihbJ2EnLCAnYicsICdjJ10sICd+Jyk7XG4gICAgICogLy8gPT4gJ2F+Yn5jJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGpvaW4oYXJyYXksIHNlcGFyYXRvcikge1xuICAgICAgcmV0dXJuIGFycmF5ID09IG51bGwgPyAnJyA6IG5hdGl2ZUpvaW4uY2FsbChhcnJheSwgc2VwYXJhdG9yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBsYXN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubGFzdChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsYXN0KGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYXJyYXlbbGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbmRleE9mYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mXG4gICAgICogYGFycmF5YCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PWFycmF5Lmxlbmd0aC0xXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sYXN0SW5kZXhPZihbMSwgMiwgMSwgMl0sIDIpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIC8vIFNlYXJjaCBmcm9tIHRoZSBgZnJvbUluZGV4YC5cbiAgICAgKiBfLmxhc3RJbmRleE9mKFsxLCAyLCAxLCAyXSwgMiwgMik7XG4gICAgICogLy8gPT4gMVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxhc3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSBsZW5ndGg7XG4gICAgICBpZiAoZnJvbUluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaW5kZXggPSB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgICAgICAgaW5kZXggPSBpbmRleCA8IDAgPyBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApIDogbmF0aXZlTWluKGluZGV4LCBsZW5ndGggLSAxKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWVcbiAgICAgICAgPyBzdHJpY3RMYXN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGluZGV4KVxuICAgICAgICA6IGJhc2VGaW5kSW5kZXgoYXJyYXksIGJhc2VJc05hTiwgaW5kZXgsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGVsZW1lbnQgYXQgaW5kZXggYG5gIG9mIGBhcnJheWAuIElmIGBuYCBpcyBuZWdhdGl2ZSwgdGhlIG50aFxuICAgICAqIGVsZW1lbnQgZnJvbSB0aGUgZW5kIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MF0gVGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IHRvIHJldHVybi5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbnRoIGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWydhJywgJ2InLCAnYycsICdkJ107XG4gICAgICpcbiAgICAgKiBfLm50aChhcnJheSwgMSk7XG4gICAgICogLy8gPT4gJ2InXG4gICAgICpcbiAgICAgKiBfLm50aChhcnJheSwgLTIpO1xuICAgICAqIC8vID0+ICdjJztcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBudGgoYXJyYXksIG4pIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGJhc2VOdGgoYXJyYXksIHRvSW50ZWdlcihuKSkgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwgZ2l2ZW4gdmFsdWVzIGZyb20gYGFycmF5YCB1c2luZ1xuICAgICAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy53aXRob3V0YCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLiBVc2UgYF8ucmVtb3ZlYFxuICAgICAqIHRvIHJlbW92ZSBlbGVtZW50cyBmcm9tIGFuIGFycmF5IGJ5IHByZWRpY2F0ZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWydhJywgJ2InLCAnYycsICdhJywgJ2InLCAnYyddO1xuICAgICAqXG4gICAgICogXy5wdWxsKGFycmF5LCAnYScsICdjJyk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsnYicsICdiJ11cbiAgICAgKi9cbiAgICB2YXIgcHVsbCA9IGJhc2VSZXN0KHB1bGxBbGwpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5wdWxsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGFuIGFycmF5IG9mIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLmRpZmZlcmVuY2VgLCB0aGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWydhJywgJ2InLCAnYycsICdhJywgJ2InLCAnYyddO1xuICAgICAqXG4gICAgICogXy5wdWxsQWxsKGFycmF5LCBbJ2EnLCAnYyddKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWydiJywgJ2InXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHB1bGxBbGwoYXJyYXksIHZhbHVlcykge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGggJiYgdmFsdWVzICYmIHZhbHVlcy5sZW5ndGgpXG4gICAgICAgID8gYmFzZVB1bGxBbGwoYXJyYXksIHZhbHVlcylcbiAgICAgICAgOiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnB1bGxBbGxgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIGFuZCBgdmFsdWVzYCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uXG4gICAgICogYnkgd2hpY2ggdGhleSdyZSBjb21wYXJlZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLmRpZmZlcmVuY2VCeWAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gcmVtb3ZlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gW3sgJ3gnOiAxIH0sIHsgJ3gnOiAyIH0sIHsgJ3gnOiAzIH0sIHsgJ3gnOiAxIH1dO1xuICAgICAqXG4gICAgICogXy5wdWxsQWxsQnkoYXJyYXksIFt7ICd4JzogMSB9LCB7ICd4JzogMyB9XSwgJ3gnKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAyIH1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gcHVsbEFsbEJ5KGFycmF5LCB2YWx1ZXMsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCAmJiB2YWx1ZXMgJiYgdmFsdWVzLmxlbmd0aClcbiAgICAgICAgPyBiYXNlUHVsbEFsbChhcnJheSwgdmFsdWVzLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpXG4gICAgICAgIDogYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5wdWxsQWxsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlgIHRvIGB2YWx1ZXNgLiBUaGUgY29tcGFyYXRvciBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5kaWZmZXJlbmNlV2l0aGAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjYuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gcmVtb3ZlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMywgJ3knOiA0IH0sIHsgJ3gnOiA1LCAneSc6IDYgfV07XG4gICAgICpcbiAgICAgKiBfLnB1bGxBbGxXaXRoKGFycmF5LCBbeyAneCc6IDMsICd5JzogNCB9XSwgXy5pc0VxdWFsKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDUsICd5JzogNiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHB1bGxBbGxXaXRoKGFycmF5LCB2YWx1ZXMsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoICYmIHZhbHVlcyAmJiB2YWx1ZXMubGVuZ3RoKVxuICAgICAgICA/IGJhc2VQdWxsQWxsKGFycmF5LCB2YWx1ZXMsIHVuZGVmaW5lZCwgY29tcGFyYXRvcilcbiAgICAgICAgOiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGVsZW1lbnRzIGZyb20gYGFycmF5YCBjb3JyZXNwb25kaW5nIHRvIGBpbmRleGVzYCBhbmQgcmV0dXJucyBhblxuICAgICAqIGFycmF5IG9mIHJlbW92ZWQgZWxlbWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLmF0YCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0gey4uLihudW1iZXJ8bnVtYmVyW10pfSBbaW5kZXhlc10gVGhlIGluZGV4ZXMgb2YgZWxlbWVudHMgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIHJlbW92ZWQgZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsnYScsICdiJywgJ2MnLCAnZCddO1xuICAgICAqIHZhciBwdWxsZWQgPSBfLnB1bGxBdChhcnJheSwgWzEsIDNdKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYyddXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhwdWxsZWQpO1xuICAgICAqIC8vID0+IFsnYicsICdkJ11cbiAgICAgKi9cbiAgICB2YXIgcHVsbEF0ID0gZmxhdFJlc3QoZnVuY3Rpb24oYXJyYXksIGluZGV4ZXMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSBiYXNlQXQoYXJyYXksIGluZGV4ZXMpO1xuXG4gICAgICBiYXNlUHVsbEF0KGFycmF5LCBhcnJheU1hcChpbmRleGVzLCBmdW5jdGlvbihpbmRleCkge1xuICAgICAgICByZXR1cm4gaXNJbmRleChpbmRleCwgbGVuZ3RoKSA/ICtpbmRleCA6IGluZGV4O1xuICAgICAgfSkuc29ydChjb21wYXJlQXNjZW5kaW5nKSk7XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBlbGVtZW50cyBmcm9tIGBhcnJheWAgdGhhdCBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3JcbiAgICAgKiBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiB0aGUgcmVtb3ZlZCBlbGVtZW50cy4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8uZmlsdGVyYCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLiBVc2UgYF8ucHVsbGBcbiAgICAgKiB0byBwdWxsIGVsZW1lbnRzIGZyb20gYW4gYXJyYXkgYnkgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiByZW1vdmVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMiwgMywgNF07XG4gICAgICogdmFyIGV2ZW5zID0gXy5yZW1vdmUoYXJyYXksIGZ1bmN0aW9uKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICUgMiA9PSAwO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxLCAzXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coZXZlbnMpO1xuICAgICAqIC8vID0+IFsyLCA0XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlbW92ZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBpZiAoIShhcnJheSAmJiBhcnJheS5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBpbmRleGVzID0gW10sXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgICBwcmVkaWNhdGUgPSBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICAgIGluZGV4ZXMucHVzaChpbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJhc2VQdWxsQXQoYXJyYXksIGluZGV4ZXMpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXZlcnNlcyBgYXJyYXlgIHNvIHRoYXQgdGhlIGZpcnN0IGVsZW1lbnQgYmVjb21lcyB0aGUgbGFzdCwgdGhlIHNlY29uZFxuICAgICAqIGVsZW1lbnQgYmVjb21lcyB0aGUgc2Vjb25kIHRvIGxhc3QsIGFuZCBzbyBvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAgYW5kIGlzIGJhc2VkIG9uXG4gICAgICogW2BBcnJheSNyZXZlcnNlYF0oaHR0cHM6Ly9tZG4uaW8vQXJyYXkvcmV2ZXJzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMiwgM107XG4gICAgICpcbiAgICAgKiBfLnJldmVyc2UoYXJyYXkpO1xuICAgICAqIC8vID0+IFszLCAyLCAxXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFszLCAyLCAxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJldmVyc2UoYXJyYXkpIHtcbiAgICAgIHJldHVybiBhcnJheSA9PSBudWxsID8gYXJyYXkgOiBuYXRpdmVSZXZlcnNlLmNhbGwoYXJyYXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIGZyb20gYHN0YXJ0YCB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIGBlbmRgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIHVzZWQgaW5zdGVhZCBvZlxuICAgICAqIFtgQXJyYXkjc2xpY2VgXShodHRwczovL21kbi5pby9BcnJheS9zbGljZSkgdG8gZW5zdXJlIGRlbnNlIGFycmF5cyBhcmVcbiAgICAgKiByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzbGljZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNsaWNlKGFycmF5LCBzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBpZiAoZW5kICYmIHR5cGVvZiBlbmQgIT0gJ251bWJlcicgJiYgaXNJdGVyYXRlZUNhbGwoYXJyYXksIHN0YXJ0LCBlbmQpKSB7XG4gICAgICAgIHN0YXJ0ID0gMDtcbiAgICAgICAgZW5kID0gbGVuZ3RoO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHN0YXJ0ID0gc3RhcnQgPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIoc3RhcnQpO1xuICAgICAgICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IHRvSW50ZWdlcihlbmQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlcyBhIGJpbmFyeSBzZWFyY2ggdG8gZGV0ZXJtaW5lIHRoZSBsb3dlc3QgaW5kZXggYXQgd2hpY2ggYHZhbHVlYFxuICAgICAqIHNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIGBhcnJheWAgaW4gb3JkZXIgdG8gbWFpbnRhaW4gaXRzIHNvcnQgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgc29ydGVkIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZXZhbHVhdGUuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvcnRlZEluZGV4KFszMCwgNTBdLCA0MCk7XG4gICAgICogLy8gPT4gMVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGJhc2VTb3J0ZWRJbmRleChhcnJheSwgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc29ydGVkSW5kZXhgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgZm9yIGB2YWx1ZWAgYW5kIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIHRvIGNvbXB1dGUgdGhlaXJcbiAgICAgKiBzb3J0IHJhbmtpbmcuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZFxuICAgICAqICBpbnRvIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiA0IH0sIHsgJ3gnOiA1IH1dO1xuICAgICAqXG4gICAgICogXy5zb3J0ZWRJbmRleEJ5KG9iamVjdHMsIHsgJ3gnOiA0IH0sIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ueDsgfSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5zb3J0ZWRJbmRleEJ5KG9iamVjdHMsIHsgJ3gnOiA0IH0sICd4Jyk7XG4gICAgICogLy8gPT4gMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZEluZGV4QnkoYXJyYXksIHZhbHVlLCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGJhc2VTb3J0ZWRJbmRleEJ5KGFycmF5LCB2YWx1ZSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmluZGV4T2ZgIGV4Y2VwdCB0aGF0IGl0IHBlcmZvcm1zIGEgYmluYXJ5XG4gICAgICogc2VhcmNoIG9uIGEgc29ydGVkIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkSW5kZXhPZihbNCwgNSwgNSwgNSwgNl0sIDUpO1xuICAgICAqIC8vID0+IDFcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRJbmRleE9mKGFycmF5LCB2YWx1ZSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCkge1xuICAgICAgICB2YXIgaW5kZXggPSBiYXNlU29ydGVkSW5kZXgoYXJyYXksIHZhbHVlKTtcbiAgICAgICAgaWYgKGluZGV4IDwgbGVuZ3RoICYmIGVxKGFycmF5W2luZGV4XSwgdmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zb3J0ZWRJbmRleGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUgaGlnaGVzdFxuICAgICAqIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkIGludG8gYGFycmF5YCBpbiBvcmRlciB0b1xuICAgICAqIG1haW50YWluIGl0cyBzb3J0IG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkXG4gICAgICogIGludG8gYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zb3J0ZWRMYXN0SW5kZXgoWzQsIDUsIDUsIDUsIDZdLCA1KTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkTGFzdEluZGV4KGFycmF5LCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGJhc2VTb3J0ZWRJbmRleChhcnJheSwgdmFsdWUsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc29ydGVkTGFzdEluZGV4YCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIGZvciBgdmFsdWVgIGFuZCBlYWNoIGVsZW1lbnQgb2YgYGFycmF5YCB0byBjb21wdXRlIHRoZWlyXG4gICAgICogc29ydCByYW5raW5nLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogNCB9LCB7ICd4JzogNSB9XTtcbiAgICAgKlxuICAgICAqIF8uc29ydGVkTGFzdEluZGV4Qnkob2JqZWN0cywgeyAneCc6IDQgfSwgZnVuY3Rpb24obykgeyByZXR1cm4gby54OyB9KTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnNvcnRlZExhc3RJbmRleEJ5KG9iamVjdHMsIHsgJ3gnOiA0IH0sICd4Jyk7XG4gICAgICogLy8gPT4gMVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZExhc3RJbmRleEJ5KGFycmF5LCB2YWx1ZSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBiYXNlU29ydGVkSW5kZXhCeShhcnJheSwgdmFsdWUsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5sYXN0SW5kZXhPZmAgZXhjZXB0IHRoYXQgaXQgcGVyZm9ybXMgYSBiaW5hcnlcbiAgICAgKiBzZWFyY2ggb24gYSBzb3J0ZWQgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zb3J0ZWRMYXN0SW5kZXhPZihbNCwgNSwgNSwgNSwgNl0sIDUpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRMYXN0SW5kZXhPZihhcnJheSwgdmFsdWUpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGgpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gYmFzZVNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSwgdHJ1ZSkgLSAxO1xuICAgICAgICBpZiAoZXEoYXJyYXlbaW5kZXhdLCB2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaXFgIGV4Y2VwdCB0aGF0IGl0J3MgZGVzaWduZWQgYW5kIG9wdGltaXplZFxuICAgICAqIGZvciBzb3J0ZWQgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkVW5pcShbMSwgMSwgMl0pO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZFVuaXEoYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VTb3J0ZWRVbmlxKGFycmF5KVxuICAgICAgICA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pcUJ5YCBleGNlcHQgdGhhdCBpdCdzIGRlc2lnbmVkIGFuZCBvcHRpbWl6ZWRcbiAgICAgKiBmb3Igc29ydGVkIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkVW5pcUJ5KFsxLjEsIDEuMiwgMi4zLCAyLjRdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiBbMS4xLCAyLjNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkVW5pcUJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZVNvcnRlZFVuaXEoYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFsbCBidXQgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGFpbChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IFsyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRhaWwoYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBiYXNlU2xpY2UoYXJyYXksIDEsIGxlbmd0aCkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGBuYCBlbGVtZW50cyB0YWtlbiBmcm9tIHRoZSBiZWdpbm5pbmcuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gdGFrZS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50YWtlKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gWzFdXG4gICAgICpcbiAgICAgKiBfLnRha2UoWzEsIDIsIDNdLCAyKTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIF8udGFrZShbMSwgMiwgM10sIDUpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogXy50YWtlKFsxLCAyLCAzXSwgMCk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0YWtlKGFycmF5LCBuLCBndWFyZCkge1xuICAgICAgaWYgKCEoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBuID0gKGd1YXJkIHx8IG4gPT09IHVuZGVmaW5lZCkgPyAxIDogdG9JbnRlZ2VyKG4pO1xuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgMCwgbiA8IDAgPyAwIDogbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBgbmAgZWxlbWVudHMgdGFrZW4gZnJvbSB0aGUgZW5kLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHRha2UuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGFrZVJpZ2h0KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gWzNdXG4gICAgICpcbiAgICAgKiBfLnRha2VSaWdodChbMSwgMiwgM10sIDIpO1xuICAgICAqIC8vID0+IFsyLCAzXVxuICAgICAqXG4gICAgICogXy50YWtlUmlnaHQoWzEsIDIsIDNdLCA1KTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIF8udGFrZVJpZ2h0KFsxLCAyLCAzXSwgMCk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0YWtlUmlnaHQoYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBuID0gKGd1YXJkIHx8IG4gPT09IHVuZGVmaW5lZCkgPyAxIDogdG9JbnRlZ2VyKG4pO1xuICAgICAgbiA9IGxlbmd0aCAtIG47XG4gICAgICByZXR1cm4gYmFzZVNsaWNlKGFycmF5LCBuIDwgMCA/IDAgOiBuLCBsZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIHdpdGggZWxlbWVudHMgdGFrZW4gZnJvbSB0aGUgZW5kLiBFbGVtZW50cyBhcmVcbiAgICAgKiB0YWtlbiB1bnRpbCBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleS4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGhcbiAgICAgKiB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLnRha2VSaWdodFdoaWxlKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy50YWtlUmlnaHRXaGlsZSh1c2VycywgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy50YWtlUmlnaHRXaGlsZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udGFrZVJpZ2h0V2hpbGUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRha2VSaWdodFdoaWxlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VXaGlsZShhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgZmFsc2UsIHRydWUpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBlbGVtZW50cyB0YWtlbiBmcm9tIHRoZSBiZWdpbm5pbmcuIEVsZW1lbnRzXG4gICAgICogYXJlIHRha2VuIHVudGlsIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aFxuICAgICAqIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleCwgYXJyYXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8udGFrZVdoaWxlKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnRha2VXaGlsZSh1c2VycywgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udGFrZVdoaWxlKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknLCAnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnRha2VXaGlsZSh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGFrZVdoaWxlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VXaGlsZShhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXMsIGluIG9yZGVyLCBmcm9tIGFsbCBnaXZlbiBhcnJheXMgdXNpbmdcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21iaW5lZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5pb24oWzJdLCBbMSwgMl0pO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqL1xuICAgIHZhciB1bmlvbiA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgcmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKGFycmF5cywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pb25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBlYWNoIGBhcnJheXNgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnlcbiAgICAgKiB3aGljaCB1bmlxdWVuZXNzIGlzIGNvbXB1dGVkLiBSZXN1bHQgdmFsdWVzIGFyZSBjaG9zZW4gZnJvbSB0aGUgZmlyc3RcbiAgICAgKiBhcnJheSBpbiB3aGljaCB0aGUgdmFsdWUgb2NjdXJzLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDpcbiAgICAgKiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21iaW5lZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5pb25CeShbMi4xXSwgWzEuMiwgMi4zXSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzIuMSwgMS4yXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy51bmlvbkJ5KFt7ICd4JzogMSB9XSwgW3sgJ3gnOiAyIH0sIHsgJ3gnOiAxIH1dLCAneCcpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSB9LCB7ICd4JzogMiB9XVxuICAgICAqL1xuICAgIHZhciB1bmlvbkJ5ID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICB2YXIgaXRlcmF0ZWUgPSBsYXN0KGFycmF5cyk7XG4gICAgICBpZiAoaXNBcnJheUxpa2VPYmplY3QoaXRlcmF0ZWUpKSB7XG4gICAgICAgIGl0ZXJhdGVlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKGFycmF5cywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bmlvbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5c2AuIFJlc3VsdCB2YWx1ZXMgYXJlIGNob3NlbiBmcm9tXG4gICAgICogdGhlIGZpcnN0IGFycmF5IGluIHdoaWNoIHRoZSB2YWx1ZSBvY2N1cnMuIFRoZSBjb21wYXJhdG9yIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tYmluZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV07XG4gICAgICogdmFyIG90aGVycyA9IFt7ICd4JzogMSwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDIgfV07XG4gICAgICpcbiAgICAgKiBfLnVuaW9uV2l0aChvYmplY3RzLCBvdGhlcnMsIF8uaXNFcXVhbCk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAxIH1dXG4gICAgICovXG4gICAgdmFyIHVuaW9uV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGNvbXBhcmF0b3IgPSBsYXN0KGFycmF5cyk7XG4gICAgICBjb21wYXJhdG9yID0gdHlwZW9mIGNvbXBhcmF0b3IgPT0gJ2Z1bmN0aW9uJyA/IGNvbXBhcmF0b3IgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gYmFzZVVuaXEoYmFzZUZsYXR0ZW4oYXJyYXlzLCAxLCBpc0FycmF5TGlrZU9iamVjdCwgdHJ1ZSksIHVuZGVmaW5lZCwgY29tcGFyYXRvcik7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZHVwbGljYXRlLWZyZWUgdmVyc2lvbiBvZiBhbiBhcnJheSwgdXNpbmdcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucywgaW4gd2hpY2ggb25seSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBlYWNoIGVsZW1lbnRcbiAgICAgKiBpcyBrZXB0LiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyXG4gICAgICogaW4gdGhlIGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5pcShbMiwgMSwgMl0pO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuaXEoYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGJhc2VVbmlxKGFycmF5KSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pcWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IGluIGBhcnJheWAgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvbiBieSB3aGljaFxuICAgICAqIHVuaXF1ZW5lc3MgaXMgY29tcHV0ZWQuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzIGRldGVybWluZWQgYnkgdGhlXG4gICAgICogb3JkZXIgdGhleSBvY2N1ciBpbiB0aGUgYXJyYXkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OlxuICAgICAqICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5pcUJ5KFsyLjEsIDEuMiwgMi4zXSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzIuMSwgMS4yXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy51bmlxQnkoW3sgJ3gnOiAxIH0sIHsgJ3gnOiAyIH0sIHsgJ3gnOiAxIH1dLCAneCcpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSB9LCB7ICd4JzogMiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuaXFCeShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGJhc2VVbmlxKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bmlxYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlgLiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpc1xuICAgICAqIGRldGVybWluZWQgYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5LlRoZSBjb21wYXJhdG9yIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDIgfV07XG4gICAgICpcbiAgICAgKiBfLnVuaXFXaXRoKG9iamVjdHMsIF8uaXNFcXVhbCk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuaXFXaXRoKGFycmF5LCBjb21wYXJhdG9yKSB7XG4gICAgICBjb21wYXJhdG9yID0gdHlwZW9mIGNvbXBhcmF0b3IgPT0gJ2Z1bmN0aW9uJyA/IGNvbXBhcmF0b3IgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBiYXNlVW5pcShhcnJheSwgdW5kZWZpbmVkLCBjb21wYXJhdG9yKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uemlwYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGFuIGFycmF5IG9mIGdyb3VwZWRcbiAgICAgKiBlbGVtZW50cyBhbmQgY3JlYXRlcyBhbiBhcnJheSByZWdyb3VwaW5nIHRoZSBlbGVtZW50cyB0byB0aGVpciBwcmUtemlwXG4gICAgICogY29uZmlndXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjIuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzIHRvIHByb2Nlc3MuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcmVncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgemlwcGVkID0gXy56aXAoWydhJywgJ2InXSwgWzEsIDJdLCBbdHJ1ZSwgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBbWydhJywgMSwgdHJ1ZV0sIFsnYicsIDIsIGZhbHNlXV1cbiAgICAgKlxuICAgICAqIF8udW56aXAoemlwcGVkKTtcbiAgICAgKiAvLyA9PiBbWydhJywgJ2InXSwgWzEsIDJdLCBbdHJ1ZSwgZmFsc2VdXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuemlwKGFycmF5KSB7XG4gICAgICBpZiAoIShhcnJheSAmJiBhcnJheS5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSAwO1xuICAgICAgYXJyYXkgPSBhcnJheUZpbHRlcihhcnJheSwgZnVuY3Rpb24oZ3JvdXApIHtcbiAgICAgICAgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KGdyb3VwKSkge1xuICAgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChncm91cC5sZW5ndGgsIGxlbmd0aCk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGJhc2VUaW1lcyhsZW5ndGgsIGZ1bmN0aW9uKGluZGV4KSB7XG4gICAgICAgIHJldHVybiBhcnJheU1hcChhcnJheSwgYmFzZVByb3BlcnR5KGluZGV4KSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuemlwYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgdG8gc3BlY2lmeVxuICAgICAqIGhvdyByZWdyb3VwZWQgdmFsdWVzIHNob3VsZCBiZSBjb21iaW5lZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aGVcbiAgICAgKiBlbGVtZW50cyBvZiBlYWNoIGdyb3VwOiAoLi4uZ3JvdXApLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IG9mIGdyb3VwZWQgZWxlbWVudHMgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIHRvIGNvbWJpbmVcbiAgICAgKiAgcmVncm91cGVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiByZWdyb3VwZWQgZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB6aXBwZWQgPSBfLnppcChbMSwgMl0sIFsxMCwgMjBdLCBbMTAwLCAyMDBdKTtcbiAgICAgKiAvLyA9PiBbWzEsIDEwLCAxMDBdLCBbMiwgMjAsIDIwMF1dXG4gICAgICpcbiAgICAgKiBfLnVuemlwV2l0aCh6aXBwZWQsIF8uYWRkKTtcbiAgICAgKiAvLyA9PiBbMywgMzAsIDMwMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bnppcFdpdGgoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICBpZiAoIShhcnJheSAmJiBhcnJheS5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSB1bnppcChhcnJheSk7XG4gICAgICBpZiAoaXRlcmF0ZWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5TWFwKHJlc3VsdCwgZnVuY3Rpb24oZ3JvdXApIHtcbiAgICAgICAgcmV0dXJuIGFwcGx5KGl0ZXJhdGVlLCB1bmRlZmluZWQsIGdyb3VwKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgZXhjbHVkaW5nIGFsbCBnaXZlbiB2YWx1ZXMgdXNpbmdcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8ucHVsbGAsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0gey4uLip9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQHNlZSBfLmRpZmZlcmVuY2UsIF8ueG9yXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ud2l0aG91dChbMiwgMSwgMiwgM10sIDEsIDIpO1xuICAgICAqIC8vID0+IFszXVxuICAgICAqL1xuICAgIHZhciB3aXRob3V0ID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXksIHZhbHVlcykge1xuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KGFycmF5KVxuICAgICAgICA/IGJhc2VEaWZmZXJlbmNlKGFycmF5LCB2YWx1ZXMpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXMgdGhhdCBpcyB0aGVcbiAgICAgKiBbc3ltbWV0cmljIGRpZmZlcmVuY2VdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N5bW1ldHJpY19kaWZmZXJlbmNlKVxuICAgICAqIG9mIHRoZSBnaXZlbiBhcnJheXMuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzIGRldGVybWluZWQgYnkgdGhlIG9yZGVyXG4gICAgICogdGhleSBvY2N1ciBpbiB0aGUgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuNC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAc2VlIF8uZGlmZmVyZW5jZSwgXy53aXRob3V0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ueG9yKFsyLCAxXSwgWzIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMSwgM11cbiAgICAgKi9cbiAgICB2YXIgeG9yID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICByZXR1cm4gYmFzZVhvcihhcnJheUZpbHRlcihhcnJheXMsIGlzQXJyYXlMaWtlT2JqZWN0KSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnhvcmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IG9mIGVhY2ggYGFycmF5c2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvbiBieVxuICAgICAqIHdoaWNoIGJ5IHdoaWNoIHRoZXkncmUgY29tcGFyZWQuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzIGRldGVybWluZWRcbiAgICAgKiBieSB0aGUgb3JkZXIgdGhleSBvY2N1ciBpbiB0aGUgYXJyYXlzLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZVxuICAgICAqIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ueG9yQnkoWzIuMSwgMS4yXSwgWzIuMywgMy40XSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzEuMiwgMy40XVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy54b3JCeShbeyAneCc6IDEgfV0sIFt7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDIgfV1cbiAgICAgKi9cbiAgICB2YXIgeG9yQnkgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBpdGVyYXRlZSA9IGxhc3QoYXJyYXlzKTtcbiAgICAgIGlmIChpc0FycmF5TGlrZU9iamVjdChpdGVyYXRlZSkpIHtcbiAgICAgICAgaXRlcmF0ZWUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVhvcihhcnJheUZpbHRlcihhcnJheXMsIGlzQXJyYXlMaWtlT2JqZWN0KSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ueG9yYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlzYC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXNcbiAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyIGluIHRoZSBhcnJheXMuIFRoZSBjb21wYXJhdG9yIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV07XG4gICAgICogdmFyIG90aGVycyA9IFt7ICd4JzogMSwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDIgfV07XG4gICAgICpcbiAgICAgKiBfLnhvcldpdGgob2JqZWN0cywgb3RoZXJzLCBfLmlzRXF1YWwpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMiwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDEgfV1cbiAgICAgKi9cbiAgICB2YXIgeG9yV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGNvbXBhcmF0b3IgPSBsYXN0KGFycmF5cyk7XG4gICAgICBjb21wYXJhdG9yID0gdHlwZW9mIGNvbXBhcmF0b3IgPT0gJ2Z1bmN0aW9uJyA/IGNvbXBhcmF0b3IgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gYmFzZVhvcihhcnJheUZpbHRlcihhcnJheXMsIGlzQXJyYXlMaWtlT2JqZWN0KSwgdW5kZWZpbmVkLCBjb21wYXJhdG9yKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cywgdGhlIGZpcnN0IG9mIHdoaWNoIGNvbnRhaW5zIHRoZVxuICAgICAqIGZpcnN0IGVsZW1lbnRzIG9mIHRoZSBnaXZlbiBhcnJheXMsIHRoZSBzZWNvbmQgb2Ygd2hpY2ggY29udGFpbnMgdGhlXG4gICAgICogc2Vjb25kIGVsZW1lbnRzIG9mIHRoZSBnaXZlbiBhcnJheXMsIGFuZCBzbyBvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnppcChbJ2EnLCAnYiddLCBbMSwgMl0sIFt0cnVlLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IFtbJ2EnLCAxLCB0cnVlXSwgWydiJywgMiwgZmFsc2VdXVxuICAgICAqL1xuICAgIHZhciB6aXAgPSBiYXNlUmVzdCh1bnppcCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZyb21QYWlyc2AgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyB0d28gYXJyYXlzLFxuICAgICAqIG9uZSBvZiBwcm9wZXJ0eSBpZGVudGlmaWVycyBhbmQgb25lIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gW3Byb3BzPVtdXSBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3ZhbHVlcz1bXV0gVGhlIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnppcE9iamVjdChbJ2EnLCAnYiddLCBbMSwgMl0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHppcE9iamVjdChwcm9wcywgdmFsdWVzKSB7XG4gICAgICByZXR1cm4gYmFzZVppcE9iamVjdChwcm9wcyB8fCBbXSwgdmFsdWVzIHx8IFtdLCBhc3NpZ25WYWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy56aXBPYmplY3RgIGV4Y2VwdCB0aGF0IGl0IHN1cHBvcnRzIHByb3BlcnR5IHBhdGhzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gW3Byb3BzPVtdXSBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3ZhbHVlcz1bXV0gVGhlIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnppcE9iamVjdERlZXAoWydhLmJbMF0uYycsICdhLmJbMV0uZCddLCBbMSwgMl0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiB7ICdiJzogW3sgJ2MnOiAxIH0sIHsgJ2QnOiAyIH1dIH0gfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHppcE9iamVjdERlZXAocHJvcHMsIHZhbHVlcykge1xuICAgICAgcmV0dXJuIGJhc2VaaXBPYmplY3QocHJvcHMgfHwgW10sIHZhbHVlcyB8fCBbXSwgYmFzZVNldCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy56aXBgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB0byBzcGVjaWZ5XG4gICAgICogaG93IGdyb3VwZWQgdmFsdWVzIHNob3VsZCBiZSBjb21iaW5lZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aGVcbiAgICAgKiBlbGVtZW50cyBvZiBlYWNoIGdyb3VwOiAoLi4uZ3JvdXApLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBwcm9jZXNzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gdG8gY29tYmluZVxuICAgICAqICBncm91cGVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnppcFdpdGgoWzEsIDJdLCBbMTAsIDIwXSwgWzEwMCwgMjAwXSwgZnVuY3Rpb24oYSwgYiwgYykge1xuICAgICAqICAgcmV0dXJuIGEgKyBiICsgYztcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBbMTExLCAyMjJdXG4gICAgICovXG4gICAgdmFyIHppcFdpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheXMubGVuZ3RoLFxuICAgICAgICAgIGl0ZXJhdGVlID0gbGVuZ3RoID4gMSA/IGFycmF5c1tsZW5ndGggLSAxXSA6IHVuZGVmaW5lZDtcblxuICAgICAgaXRlcmF0ZWUgPSB0eXBlb2YgaXRlcmF0ZWUgPT0gJ2Z1bmN0aW9uJyA/IChhcnJheXMucG9wKCksIGl0ZXJhdGVlKSA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB1bnppcFdpdGgoYXJyYXlzLCBpdGVyYXRlZSk7XG4gICAgfSk7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZSB0aGF0IHdyYXBzIGB2YWx1ZWAgd2l0aCBleHBsaWNpdCBtZXRob2RcbiAgICAgKiBjaGFpbiBzZXF1ZW5jZXMgZW5hYmxlZC4gVGhlIHJlc3VsdCBvZiBzdWNoIHNlcXVlbmNlcyBtdXN0IGJlIHVud3JhcHBlZFxuICAgICAqIHdpdGggYF8jdmFsdWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMy4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHdyYXAuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhZ2UnOiAzNiB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIHZhciB5b3VuZ2VzdCA9IF9cbiAgICAgKiAgIC5jaGFpbih1c2VycylcbiAgICAgKiAgIC5zb3J0QnkoJ2FnZScpXG4gICAgICogICAubWFwKGZ1bmN0aW9uKG8pIHtcbiAgICAgKiAgICAgcmV0dXJuIG8udXNlciArICcgaXMgJyArIG8uYWdlO1xuICAgICAqICAgfSlcbiAgICAgKiAgIC5oZWFkKClcbiAgICAgKiAgIC52YWx1ZSgpO1xuICAgICAqIC8vID0+ICdwZWJibGVzIGlzIDEnXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2hhaW4odmFsdWUpIHtcbiAgICAgIHZhciByZXN1bHQgPSBsb2Rhc2godmFsdWUpO1xuICAgICAgcmVzdWx0Ll9fY2hhaW5fXyA9IHRydWU7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGludm9rZXMgYGludGVyY2VwdG9yYCBhbmQgcmV0dXJucyBgdmFsdWVgLiBUaGUgaW50ZXJjZXB0b3JcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OyAodmFsdWUpLiBUaGUgcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0b1xuICAgICAqIFwidGFwIGludG9cIiBhIG1ldGhvZCBjaGFpbiBzZXF1ZW5jZSBpbiBvcmRlciB0byBtb2RpZnkgaW50ZXJtZWRpYXRlIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvdmlkZSB0byBgaW50ZXJjZXB0b3JgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGludGVyY2VwdG9yIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgYHZhbHVlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXyhbMSwgMiwgM10pXG4gICAgICogIC50YXAoZnVuY3Rpb24oYXJyYXkpIHtcbiAgICAgKiAgICAvLyBNdXRhdGUgaW5wdXQgYXJyYXkuXG4gICAgICogICAgYXJyYXkucG9wKCk7XG4gICAgICogIH0pXG4gICAgICogIC5yZXZlcnNlKClcbiAgICAgKiAgLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGFwKHZhbHVlLCBpbnRlcmNlcHRvcikge1xuICAgICAgaW50ZXJjZXB0b3IodmFsdWUpO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udGFwYCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIHRoZSByZXN1bHQgb2YgYGludGVyY2VwdG9yYC5cbiAgICAgKiBUaGUgcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0byBcInBhc3MgdGhydVwiIHZhbHVlcyByZXBsYWNpbmcgaW50ZXJtZWRpYXRlXG4gICAgICogcmVzdWx0cyBpbiBhIG1ldGhvZCBjaGFpbiBzZXF1ZW5jZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm92aWRlIHRvIGBpbnRlcmNlcHRvcmAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaW50ZXJjZXB0b3IgVGhlIGZ1bmN0aW9uIHRvIGludm9rZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIGBpbnRlcmNlcHRvcmAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8oJyAgYWJjICAnKVxuICAgICAqICAuY2hhaW4oKVxuICAgICAqICAudHJpbSgpXG4gICAgICogIC50aHJ1KGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICogICAgcmV0dXJuIFt2YWx1ZV07XG4gICAgICogIH0pXG4gICAgICogIC52YWx1ZSgpO1xuICAgICAqIC8vID0+IFsnYWJjJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0aHJ1KHZhbHVlLCBpbnRlcmNlcHRvcikge1xuICAgICAgcmV0dXJuIGludGVyY2VwdG9yKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB0aGUgd3JhcHBlciB2ZXJzaW9uIG9mIGBfLmF0YC5cbiAgICAgKlxuICAgICAqIEBuYW1lIGF0XG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfSwgNF0gfTtcbiAgICAgKlxuICAgICAqIF8ob2JqZWN0KS5hdChbJ2FbMF0uYi5jJywgJ2FbMV0nXSkudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbMywgNF1cbiAgICAgKi9cbiAgICB2YXIgd3JhcHBlckF0ID0gZmxhdFJlc3QoZnVuY3Rpb24ocGF0aHMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBwYXRocy5sZW5ndGgsXG4gICAgICAgICAgc3RhcnQgPSBsZW5ndGggPyBwYXRoc1swXSA6IDAsXG4gICAgICAgICAgdmFsdWUgPSB0aGlzLl9fd3JhcHBlZF9fLFxuICAgICAgICAgIGludGVyY2VwdG9yID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBiYXNlQXQob2JqZWN0LCBwYXRocyk7IH07XG5cbiAgICAgIGlmIChsZW5ndGggPiAxIHx8IHRoaXMuX19hY3Rpb25zX18ubGVuZ3RoIHx8XG4gICAgICAgICAgISh2YWx1ZSBpbnN0YW5jZW9mIExhenlXcmFwcGVyKSB8fCAhaXNJbmRleChzdGFydCkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGhydShpbnRlcmNlcHRvcik7XG4gICAgICB9XG4gICAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKHN0YXJ0LCArc3RhcnQgKyAobGVuZ3RoID8gMSA6IDApKTtcbiAgICAgIHZhbHVlLl9fYWN0aW9uc19fLnB1c2goe1xuICAgICAgICAnZnVuYyc6IHRocnUsXG4gICAgICAgICdhcmdzJzogW2ludGVyY2VwdG9yXSxcbiAgICAgICAgJ3RoaXNBcmcnOiB1bmRlZmluZWRcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHZhbHVlLCB0aGlzLl9fY2hhaW5fXykudGhydShmdW5jdGlvbihhcnJheSkge1xuICAgICAgICBpZiAobGVuZ3RoICYmICFhcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICBhcnJheS5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFycmF5O1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZSB3aXRoIGV4cGxpY2l0IG1ldGhvZCBjaGFpbiBzZXF1ZW5jZXMgZW5hYmxlZC5cbiAgICAgKlxuICAgICAqIEBuYW1lIGNoYWluXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIC8vIEEgc2VxdWVuY2Ugd2l0aG91dCBleHBsaWNpdCBjaGFpbmluZy5cbiAgICAgKiBfKHVzZXJzKS5oZWFkKCk7XG4gICAgICogLy8gPT4geyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYgfVxuICAgICAqXG4gICAgICogLy8gQSBzZXF1ZW5jZSB3aXRoIGV4cGxpY2l0IGNoYWluaW5nLlxuICAgICAqIF8odXNlcnMpXG4gICAgICogICAuY2hhaW4oKVxuICAgICAqICAgLmhlYWQoKVxuICAgICAqICAgLnBpY2soJ3VzZXInKVxuICAgICAqICAgLnZhbHVlKCk7XG4gICAgICogLy8gPT4geyAndXNlcic6ICdiYXJuZXknIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyQ2hhaW4oKSB7XG4gICAgICByZXR1cm4gY2hhaW4odGhpcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhlY3V0ZXMgdGhlIGNoYWluIHNlcXVlbmNlIGFuZCByZXR1cm5zIHRoZSB3cmFwcGVkIHJlc3VsdC5cbiAgICAgKlxuICAgICAqIEBuYW1lIGNvbW1pdFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMi4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMl07XG4gICAgICogdmFyIHdyYXBwZWQgPSBfKGFycmF5KS5wdXNoKDMpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogd3JhcHBlZCA9IHdyYXBwZWQuY29tbWl0KCk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogd3JhcHBlZC5sYXN0KCk7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJDb21taXQoKSB7XG4gICAgICByZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIodGhpcy52YWx1ZSgpLCB0aGlzLl9fY2hhaW5fXyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbmV4dCB2YWx1ZSBvbiBhIHdyYXBwZWQgb2JqZWN0IGZvbGxvd2luZyB0aGVcbiAgICAgKiBbaXRlcmF0b3IgcHJvdG9jb2xdKGh0dHBzOi8vbWRuLmlvL2l0ZXJhdGlvbl9wcm90b2NvbHMjaXRlcmF0b3IpLlxuICAgICAqXG4gICAgICogQG5hbWUgbmV4dFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5leHQgaXRlcmF0b3IgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB3cmFwcGVkID0gXyhbMSwgMl0pO1xuICAgICAqXG4gICAgICogd3JhcHBlZC5uZXh0KCk7XG4gICAgICogLy8gPT4geyAnZG9uZSc6IGZhbHNlLCAndmFsdWUnOiAxIH1cbiAgICAgKlxuICAgICAqIHdyYXBwZWQubmV4dCgpO1xuICAgICAqIC8vID0+IHsgJ2RvbmUnOiBmYWxzZSwgJ3ZhbHVlJzogMiB9XG4gICAgICpcbiAgICAgKiB3cmFwcGVkLm5leHQoKTtcbiAgICAgKiAvLyA9PiB7ICdkb25lJzogdHJ1ZSwgJ3ZhbHVlJzogdW5kZWZpbmVkIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyTmV4dCgpIHtcbiAgICAgIGlmICh0aGlzLl9fdmFsdWVzX18gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9fdmFsdWVzX18gPSB0b0FycmF5KHRoaXMudmFsdWUoKSk7XG4gICAgICB9XG4gICAgICB2YXIgZG9uZSA9IHRoaXMuX19pbmRleF9fID49IHRoaXMuX192YWx1ZXNfXy5sZW5ndGgsXG4gICAgICAgICAgdmFsdWUgPSBkb25lID8gdW5kZWZpbmVkIDogdGhpcy5fX3ZhbHVlc19fW3RoaXMuX19pbmRleF9fKytdO1xuXG4gICAgICByZXR1cm4geyAnZG9uZSc6IGRvbmUsICd2YWx1ZSc6IHZhbHVlIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW5hYmxlcyB0aGUgd3JhcHBlciB0byBiZSBpdGVyYWJsZS5cbiAgICAgKlxuICAgICAqIEBuYW1lIFN5bWJvbC5pdGVyYXRvclxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIHdyYXBwZXIgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgd3JhcHBlZCA9IF8oWzEsIDJdKTtcbiAgICAgKlxuICAgICAqIHdyYXBwZWRbU3ltYm9sLml0ZXJhdG9yXSgpID09PSB3cmFwcGVkO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIEFycmF5LmZyb20od3JhcHBlZCk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlclRvSXRlcmF0b3IoKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgdGhlIGNoYWluIHNlcXVlbmNlIHBsYW50aW5nIGB2YWx1ZWAgYXMgdGhlIHdyYXBwZWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAbmFtZSBwbGFudFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMi4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHBsYW50LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICAgICAqICAgcmV0dXJuIG4gKiBuO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciB3cmFwcGVkID0gXyhbMSwgMl0pLm1hcChzcXVhcmUpO1xuICAgICAqIHZhciBvdGhlciA9IHdyYXBwZWQucGxhbnQoWzMsIDRdKTtcbiAgICAgKlxuICAgICAqIG90aGVyLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWzksIDE2XVxuICAgICAqXG4gICAgICogd3JhcHBlZC52YWx1ZSgpO1xuICAgICAqIC8vID0+IFsxLCA0XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJQbGFudCh2YWx1ZSkge1xuICAgICAgdmFyIHJlc3VsdCxcbiAgICAgICAgICBwYXJlbnQgPSB0aGlzO1xuXG4gICAgICB3aGlsZSAocGFyZW50IGluc3RhbmNlb2YgYmFzZUxvZGFzaCkge1xuICAgICAgICB2YXIgY2xvbmUgPSB3cmFwcGVyQ2xvbmUocGFyZW50KTtcbiAgICAgICAgY2xvbmUuX19pbmRleF9fID0gMDtcbiAgICAgICAgY2xvbmUuX192YWx1ZXNfXyA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIHByZXZpb3VzLl9fd3JhcHBlZF9fID0gY2xvbmU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gY2xvbmU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHByZXZpb3VzID0gY2xvbmU7XG4gICAgICAgIHBhcmVudCA9IHBhcmVudC5fX3dyYXBwZWRfXztcbiAgICAgIH1cbiAgICAgIHByZXZpb3VzLl9fd3JhcHBlZF9fID0gdmFsdWU7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIHRoZSB3cmFwcGVyIHZlcnNpb24gb2YgYF8ucmV2ZXJzZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyB0aGUgd3JhcHBlZCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBuYW1lIHJldmVyc2VcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDNdO1xuICAgICAqXG4gICAgICogXyhhcnJheSkucmV2ZXJzZSgpLnZhbHVlKClcbiAgICAgKiAvLyA9PiBbMywgMiwgMV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMywgMiwgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyUmV2ZXJzZSgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IHRoaXMuX193cmFwcGVkX187XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcikge1xuICAgICAgICB2YXIgd3JhcHBlZCA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgpIHtcbiAgICAgICAgICB3cmFwcGVkID0gbmV3IExhenlXcmFwcGVyKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIHdyYXBwZWQgPSB3cmFwcGVkLnJldmVyc2UoKTtcbiAgICAgICAgd3JhcHBlZC5fX2FjdGlvbnNfXy5wdXNoKHtcbiAgICAgICAgICAnZnVuYyc6IHRocnUsXG4gICAgICAgICAgJ2FyZ3MnOiBbcmV2ZXJzZV0sXG4gICAgICAgICAgJ3RoaXNBcmcnOiB1bmRlZmluZWRcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXcgTG9kYXNoV3JhcHBlcih3cmFwcGVkLCB0aGlzLl9fY2hhaW5fXyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy50aHJ1KHJldmVyc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIHRoZSBjaGFpbiBzZXF1ZW5jZSB0byByZXNvbHZlIHRoZSB1bndyYXBwZWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAbmFtZSB2YWx1ZVxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGFsaWFzIHRvSlNPTiwgdmFsdWVPZlxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdW53cmFwcGVkIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfKFsxLCAyLCAzXSkudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyVmFsdWUoKSB7XG4gICAgICByZXR1cm4gYmFzZVdyYXBwZXJWYWx1ZSh0aGlzLl9fd3JhcHBlZF9fLCB0aGlzLl9fYWN0aW9uc19fKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiBrZXlzIGdlbmVyYXRlZCBmcm9tIHRoZSByZXN1bHRzIG9mIHJ1bm5pbmdcbiAgICAgKiBlYWNoIGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIHRocnUgYGl0ZXJhdGVlYC4gVGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgb2ZcbiAgICAgKiBlYWNoIGtleSBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBrZXkgd2FzIHJldHVybmVkIGJ5IGBpdGVyYXRlZWAuIFRoZVxuICAgICAqIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC41LjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSBrZXlzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNvbXBvc2VkIGFnZ3JlZ2F0ZSBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY291bnRCeShbNi4xLCA0LjIsIDYuM10sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IHsgJzQnOiAxLCAnNic6IDIgfVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5jb3VudEJ5KFsnb25lJywgJ3R3bycsICd0aHJlZSddLCAnbGVuZ3RoJyk7XG4gICAgICogLy8gPT4geyAnMyc6IDIsICc1JzogMSB9XG4gICAgICovXG4gICAgdmFyIGNvdW50QnkgPSBjcmVhdGVBZ2dyZWdhdG9yKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocmVzdWx0LCBrZXkpKSB7XG4gICAgICAgICsrcmVzdWx0W2tleV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiYXNlQXNzaWduVmFsdWUocmVzdWx0LCBrZXksIDEpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciAqKmFsbCoqIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYC5cbiAgICAgKiBJdGVyYXRpb24gaXMgc3RvcHBlZCBvbmNlIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIHJldHVybnMgYHRydWVgIGZvclxuICAgICAqIFtlbXB0eSBjb2xsZWN0aW9uc10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRW1wdHlfc2V0KSBiZWNhdXNlXG4gICAgICogW2V2ZXJ5dGhpbmcgaXMgdHJ1ZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVmFjdW91c190cnV0aCkgb2ZcbiAgICAgKiBlbGVtZW50cyBvZiBlbXB0eSBjb2xsZWN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbGwgZWxlbWVudHMgcGFzcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZXZlcnkoW3RydWUsIDEsIG51bGwsICd5ZXMnXSwgQm9vbGVhbik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZXZlcnkodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5ldmVyeSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZXZlcnkodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGV2ZXJ5KGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZ3VhcmQpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RXZlcnkgOiBiYXNlRXZlcnk7XG4gICAgICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBndWFyZCkpIHtcbiAgICAgICAgcHJlZGljYXRlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAsIHJldHVybmluZyBhbiBhcnJheSBvZiBhbGwgZWxlbWVudHNcbiAgICAgKiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHRocmVlXG4gICAgICogYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnJlbW92ZWAsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gICAgICogQHNlZSBfLnJlamVjdFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmZpbHRlcih1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbHRlcih1c2VycywgeyAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbHRlcih1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbHRlcih1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIENvbWJpbmluZyBzZXZlcmFsIHByZWRpY2F0ZXMgdXNpbmcgYF8ub3ZlckV2ZXJ5YCBvciBgXy5vdmVyU29tZWAuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIF8ub3ZlclNvbWUoW3sgJ2FnZSc6IDM2IH0sIFsnYWdlJywgNDBdXSkpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdiYXJuZXknXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbHRlcihjb2xsZWN0aW9uLCBwcmVkaWNhdGUpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RmlsdGVyIDogYmFzZUZpbHRlcjtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gLCByZXR1cm5pbmcgdGhlIGZpcnN0IGVsZW1lbnRcbiAgICAgKiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHRocmVlXG4gICAgICogYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PTBdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWF0Y2hlZCBlbGVtZW50LCBlbHNlIGB1bmRlZmluZWRgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEsICAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmluZCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2UgPCA0MDsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0IGZvciAnYmFybmV5J1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmQodXNlcnMsIHsgJ2FnZSc6IDEsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdCBmb3IgJ3BlYmJsZXMnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0IGZvciAnZnJlZCdcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZCh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdCBmb3IgJ2Jhcm5leSdcbiAgICAgKi9cbiAgICB2YXIgZmluZCA9IGNyZWF0ZUZpbmQoZmluZEluZGV4KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZGAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGBjb2xsZWN0aW9uYCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PWNvbGxlY3Rpb24ubGVuZ3RoLTFdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWF0Y2hlZCBlbGVtZW50LCBlbHNlIGB1bmRlZmluZWRgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZpbmRMYXN0KFsxLCAyLCAzLCA0XSwgZnVuY3Rpb24obikge1xuICAgICAqICAgcmV0dXJuIG4gJSAyID09IDE7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIHZhciBmaW5kTGFzdCA9IGNyZWF0ZUZpbmQoZmluZExhc3RJbmRleCk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZmxhdHRlbmVkIGFycmF5IG9mIHZhbHVlcyBieSBydW5uaW5nIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmBcbiAgICAgKiB0aHJ1IGBpdGVyYXRlZWAgYW5kIGZsYXR0ZW5pbmcgdGhlIG1hcHBlZCByZXN1bHRzLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGR1cGxpY2F0ZShuKSB7XG4gICAgICogICByZXR1cm4gW24sIG5dO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8uZmxhdE1hcChbMSwgMl0sIGR1cGxpY2F0ZSk7XG4gICAgICogLy8gPT4gWzEsIDEsIDIsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdE1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGJhc2VGbGF0dGVuKG1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSksIDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmxhdE1hcGAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgZmxhdHRlbnMgdGhlXG4gICAgICogbWFwcGVkIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC43LjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGR1cGxpY2F0ZShuKSB7XG4gICAgICogICByZXR1cm4gW1tbbiwgbl1dXTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmZsYXRNYXBEZWVwKFsxLCAyXSwgZHVwbGljYXRlKTtcbiAgICAgKiAvLyA9PiBbMSwgMSwgMiwgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0TWFwRGVlcChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGJhc2VGbGF0dGVuKG1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSksIElORklOSVRZKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZsYXRNYXBgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGZsYXR0ZW5zIHRoZVxuICAgICAqIG1hcHBlZCByZXN1bHRzIHVwIHRvIGBkZXB0aGAgdGltZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC43LjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RlcHRoPTFdIFRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGR1cGxpY2F0ZShuKSB7XG4gICAgICogICByZXR1cm4gW1tbbiwgbl1dXTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmZsYXRNYXBEZXB0aChbMSwgMl0sIGR1cGxpY2F0ZSwgMik7XG4gICAgICogLy8gPT4gW1sxLCAxXSwgWzIsIDJdXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXRNYXBEZXB0aChjb2xsZWN0aW9uLCBpdGVyYXRlZSwgZGVwdGgpIHtcbiAgICAgIGRlcHRoID0gZGVwdGggPT09IHVuZGVmaW5lZCA/IDEgOiB0b0ludGVnZXIoZGVwdGgpO1xuICAgICAgcmV0dXJuIGJhc2VGbGF0dGVuKG1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSksIGRlcHRoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIGVsZW1lbnQuXG4gICAgICogVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogQXMgd2l0aCBvdGhlciBcIkNvbGxlY3Rpb25zXCIgbWV0aG9kcywgb2JqZWN0cyB3aXRoIGEgXCJsZW5ndGhcIlxuICAgICAqIHByb3BlcnR5IGFyZSBpdGVyYXRlZCBsaWtlIGFycmF5cy4gVG8gYXZvaWQgdGhpcyBiZWhhdmlvciB1c2UgYF8uZm9ySW5gXG4gICAgICogb3IgYF8uZm9yT3duYCBmb3Igb2JqZWN0IGl0ZXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBhbGlhcyBlYWNoXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gICAgICogQHNlZSBfLmZvckVhY2hSaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZvckVhY2goWzEsIDJdLCBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAqICAgY29uc29sZS5sb2codmFsdWUpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgYDFgIHRoZW4gYDJgLlxuICAgICAqXG4gICAgICogXy5mb3JFYWNoKHsgJ2EnOiAxLCAnYic6IDIgfSwgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdhJyB0aGVuICdiJyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JFYWNoKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUVhY2ggOiBiYXNlRWFjaDtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mb3JFYWNoYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mXG4gICAgICogYGNvbGxlY3Rpb25gIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBhbGlhcyBlYWNoUmlnaHRcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAgICAgKiBAc2VlIF8uZm9yRWFjaFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZvckVhY2hSaWdodChbMSwgMl0sIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICogICBjb25zb2xlLmxvZyh2YWx1ZSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyBgMmAgdGhlbiBgMWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZm9yRWFjaFJpZ2h0KGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUVhY2hSaWdodCA6IGJhc2VFYWNoUmlnaHQ7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIGtleXMgZ2VuZXJhdGVkIGZyb20gdGhlIHJlc3VsdHMgb2YgcnVubmluZ1xuICAgICAqIGVhY2ggZWxlbWVudCBvZiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLiBUaGUgb3JkZXIgb2YgZ3JvdXBlZCB2YWx1ZXNcbiAgICAgKiBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyIGluIGBjb2xsZWN0aW9uYC4gVGhlIGNvcnJlc3BvbmRpbmdcbiAgICAgKiB2YWx1ZSBvZiBlYWNoIGtleSBpcyBhbiBhcnJheSBvZiBlbGVtZW50cyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0aGVcbiAgICAgKiBrZXkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb21wb3NlZCBhZ2dyZWdhdGUgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmdyb3VwQnkoWzYuMSwgNC4yLCA2LjNdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiB7ICc0JzogWzQuMl0sICc2JzogWzYuMSwgNi4zXSB9XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmdyb3VwQnkoWydvbmUnLCAndHdvJywgJ3RocmVlJ10sICdsZW5ndGgnKTtcbiAgICAgKiAvLyA9PiB7ICczJzogWydvbmUnLCAndHdvJ10sICc1JzogWyd0aHJlZSddIH1cbiAgICAgKi9cbiAgICB2YXIgZ3JvdXBCeSA9IGNyZWF0ZUFnZ3JlZ2F0b3IoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChyZXN1bHQsIGtleSkpIHtcbiAgICAgICAgcmVzdWx0W2tleV0ucHVzaCh2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiYXNlQXNzaWduVmFsdWUocmVzdWx0LCBrZXksIFt2YWx1ZV0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgaW4gYGNvbGxlY3Rpb25gLiBJZiBgY29sbGVjdGlvbmAgaXMgYSBzdHJpbmcsIGl0J3NcbiAgICAgKiBjaGVja2VkIGZvciBhIHN1YnN0cmluZyBvZiBgdmFsdWVgLCBvdGhlcndpc2VcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGlzIHVzZWQgZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLiBJZiBgZnJvbUluZGV4YCBpcyBuZWdhdGl2ZSwgaXQncyB1c2VkIGFzXG4gICAgICogdGhlIG9mZnNldCBmcm9tIHRoZSBlbmQgb2YgYGNvbGxlY3Rpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdHxzdHJpbmd9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PTBdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5yZWR1Y2VgLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaW5jbHVkZXMoWzEsIDIsIDNdLCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmluY2x1ZGVzKFsxLCAyLCAzXSwgMSwgMik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaW5jbHVkZXMoeyAnYSc6IDEsICdiJzogMiB9LCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmluY2x1ZGVzKCdhYmNkJywgJ2JjJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluY2x1ZGVzKGNvbGxlY3Rpb24sIHZhbHVlLCBmcm9tSW5kZXgsIGd1YXJkKSB7XG4gICAgICBjb2xsZWN0aW9uID0gaXNBcnJheUxpa2UoY29sbGVjdGlvbikgPyBjb2xsZWN0aW9uIDogdmFsdWVzKGNvbGxlY3Rpb24pO1xuICAgICAgZnJvbUluZGV4ID0gKGZyb21JbmRleCAmJiAhZ3VhcmQpID8gdG9JbnRlZ2VyKGZyb21JbmRleCkgOiAwO1xuXG4gICAgICB2YXIgbGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGg7XG4gICAgICBpZiAoZnJvbUluZGV4IDwgMCkge1xuICAgICAgICBmcm9tSW5kZXggPSBuYXRpdmVNYXgobGVuZ3RoICsgZnJvbUluZGV4LCAwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc1N0cmluZyhjb2xsZWN0aW9uKVxuICAgICAgICA/IChmcm9tSW5kZXggPD0gbGVuZ3RoICYmIGNvbGxlY3Rpb24uaW5kZXhPZih2YWx1ZSwgZnJvbUluZGV4KSA+IC0xKVxuICAgICAgICA6ICghIWxlbmd0aCAmJiBiYXNlSW5kZXhPZihjb2xsZWN0aW9uLCB2YWx1ZSwgZnJvbUluZGV4KSA+IC0xKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VzIHRoZSBtZXRob2QgYXQgYHBhdGhgIG9mIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAsIHJldHVybmluZ1xuICAgICAqIGFuIGFycmF5IG9mIHRoZSByZXN1bHRzIG9mIGVhY2ggaW52b2tlZCBtZXRob2QuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50c1xuICAgICAqIGFyZSBwcm92aWRlZCB0byBlYWNoIGludm9rZWQgbWV0aG9kLiBJZiBgcGF0aGAgaXMgYSBmdW5jdGlvbiwgaXQncyBpbnZva2VkXG4gICAgICogZm9yLCBhbmQgYHRoaXNgIGJvdW5kIHRvLCBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtBcnJheXxGdW5jdGlvbnxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIG1ldGhvZCB0byBpbnZva2Ugb3JcbiAgICAgKiAgdGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0gey4uLip9IFthcmdzXSBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBlYWNoIG1ldGhvZCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbnZva2VNYXAoW1s1LCAxLCA3XSwgWzMsIDIsIDFdXSwgJ3NvcnQnKTtcbiAgICAgKiAvLyA9PiBbWzEsIDUsIDddLCBbMSwgMiwgM11dXG4gICAgICpcbiAgICAgKiBfLmludm9rZU1hcChbMTIzLCA0NTZdLCBTdHJpbmcucHJvdG90eXBlLnNwbGl0LCAnJyk7XG4gICAgICogLy8gPT4gW1snMScsICcyJywgJzMnXSwgWyc0JywgJzUnLCAnNiddXVxuICAgICAqL1xuICAgIHZhciBpbnZva2VNYXAgPSBiYXNlUmVzdChmdW5jdGlvbihjb2xsZWN0aW9uLCBwYXRoLCBhcmdzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBpc0Z1bmMgPSB0eXBlb2YgcGF0aCA9PSAnZnVuY3Rpb24nLFxuICAgICAgICAgIHJlc3VsdCA9IGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pID8gQXJyYXkoY29sbGVjdGlvbi5sZW5ndGgpIDogW107XG5cbiAgICAgIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHJlc3VsdFsrK2luZGV4XSA9IGlzRnVuYyA/IGFwcGx5KHBhdGgsIHZhbHVlLCBhcmdzKSA6IGJhc2VJbnZva2UodmFsdWUsIHBhdGgsIGFyZ3MpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2Yga2V5cyBnZW5lcmF0ZWQgZnJvbSB0aGUgcmVzdWx0cyBvZiBydW5uaW5nXG4gICAgICogZWFjaCBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYCB0aHJ1IGBpdGVyYXRlZWAuIFRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIG9mXG4gICAgICogZWFjaCBrZXkgaXMgdGhlIGxhc3QgZWxlbWVudCByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0aGUga2V5LiBUaGVcbiAgICAgKiBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb21wb3NlZCBhZ2dyZWdhdGUgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbXG4gICAgICogICB7ICdkaXInOiAnbGVmdCcsICdjb2RlJzogOTcgfSxcbiAgICAgKiAgIHsgJ2Rpcic6ICdyaWdodCcsICdjb2RlJzogMTAwIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5rZXlCeShhcnJheSwgZnVuY3Rpb24obykge1xuICAgICAqICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoby5jb2RlKTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogeyAnZGlyJzogJ2xlZnQnLCAnY29kZSc6IDk3IH0sICdkJzogeyAnZGlyJzogJ3JpZ2h0JywgJ2NvZGUnOiAxMDAgfSB9XG4gICAgICpcbiAgICAgKiBfLmtleUJ5KGFycmF5LCAnZGlyJyk7XG4gICAgICogLy8gPT4geyAnbGVmdCc6IHsgJ2Rpcic6ICdsZWZ0JywgJ2NvZGUnOiA5NyB9LCAncmlnaHQnOiB7ICdkaXInOiAncmlnaHQnLCAnY29kZSc6IDEwMCB9IH1cbiAgICAgKi9cbiAgICB2YXIga2V5QnkgPSBjcmVhdGVBZ2dyZWdhdG9yKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCB2YWx1ZSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHZhbHVlcyBieSBydW5uaW5nIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAgdGhydVxuICAgICAqIGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOlxuICAgICAqICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqIE1hbnkgbG9kYXNoIG1ldGhvZHMgYXJlIGd1YXJkZWQgdG8gd29yayBhcyBpdGVyYXRlZXMgZm9yIG1ldGhvZHMgbGlrZVxuICAgICAqIGBfLmV2ZXJ5YCwgYF8uZmlsdGVyYCwgYF8ubWFwYCwgYF8ubWFwVmFsdWVzYCwgYF8ucmVqZWN0YCwgYW5kIGBfLnNvbWVgLlxuICAgICAqXG4gICAgICogVGhlIGd1YXJkZWQgbWV0aG9kcyBhcmU6XG4gICAgICogYGFyeWAsIGBjaHVua2AsIGBjdXJyeWAsIGBjdXJyeVJpZ2h0YCwgYGRyb3BgLCBgZHJvcFJpZ2h0YCwgYGV2ZXJ5YCxcbiAgICAgKiBgZmlsbGAsIGBpbnZlcnRgLCBgcGFyc2VJbnRgLCBgcmFuZG9tYCwgYHJhbmdlYCwgYHJhbmdlUmlnaHRgLCBgcmVwZWF0YCxcbiAgICAgKiBgc2FtcGxlU2l6ZWAsIGBzbGljZWAsIGBzb21lYCwgYHNvcnRCeWAsIGBzcGxpdGAsIGB0YWtlYCwgYHRha2VSaWdodGAsXG4gICAgICogYHRlbXBsYXRlYCwgYHRyaW1gLCBgdHJpbUVuZGAsIGB0cmltU3RhcnRgLCBhbmQgYHdvcmRzYFxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICAgICAqICAgcmV0dXJuIG4gKiBuO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8ubWFwKFs0LCA4XSwgc3F1YXJlKTtcbiAgICAgKiAvLyA9PiBbMTYsIDY0XVxuICAgICAqXG4gICAgICogXy5tYXAoeyAnYSc6IDQsICdiJzogOCB9LCBzcXVhcmUpO1xuICAgICAqIC8vID0+IFsxNiwgNjRdIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1hcCh1c2VycywgJ3VzZXInKTtcbiAgICAgKiAvLyA9PiBbJ2Jhcm5leScsICdmcmVkJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5TWFwIDogYmFzZU1hcDtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zb3J0QnlgIGV4Y2VwdCB0aGF0IGl0IGFsbG93cyBzcGVjaWZ5aW5nIHRoZSBzb3J0XG4gICAgICogb3JkZXJzIG9mIHRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS4gSWYgYG9yZGVyc2AgaXMgdW5zcGVjaWZpZWQsIGFsbCB2YWx1ZXNcbiAgICAgKiBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlci4gT3RoZXJ3aXNlLCBzcGVjaWZ5IGFuIG9yZGVyIG9mIFwiZGVzY1wiIGZvclxuICAgICAqIGRlc2NlbmRpbmcgb3IgXCJhc2NcIiBmb3IgYXNjZW5kaW5nIHNvcnQgb3JkZXIgb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0FycmF5W118RnVuY3Rpb25bXXxPYmplY3RbXXxzdHJpbmdbXX0gW2l0ZXJhdGVlcz1bXy5pZGVudGl0eV1dXG4gICAgICogIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBbb3JkZXJzXSBUaGUgc29ydCBvcmRlcnMgb2YgYGl0ZXJhdGVlc2AuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ucmVkdWNlYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzb3J0ZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQ4IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNCB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gU29ydCBieSBgdXNlcmAgaW4gYXNjZW5kaW5nIG9yZGVyIGFuZCBieSBgYWdlYCBpbiBkZXNjZW5kaW5nIG9yZGVyLlxuICAgICAqIF8ub3JkZXJCeSh1c2VycywgWyd1c2VyJywgJ2FnZSddLCBbJ2FzYycsICdkZXNjJ10pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsIDM2XSwgWydiYXJuZXknLCAzNF0sIFsnZnJlZCcsIDQ4XSwgWydmcmVkJywgNDBdXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9yZGVyQnkoY29sbGVjdGlvbiwgaXRlcmF0ZWVzLCBvcmRlcnMsIGd1YXJkKSB7XG4gICAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNBcnJheShpdGVyYXRlZXMpKSB7XG4gICAgICAgIGl0ZXJhdGVlcyA9IGl0ZXJhdGVlcyA9PSBudWxsID8gW10gOiBbaXRlcmF0ZWVzXTtcbiAgICAgIH1cbiAgICAgIG9yZGVycyA9IGd1YXJkID8gdW5kZWZpbmVkIDogb3JkZXJzO1xuICAgICAgaWYgKCFpc0FycmF5KG9yZGVycykpIHtcbiAgICAgICAgb3JkZXJzID0gb3JkZXJzID09IG51bGwgPyBbXSA6IFtvcmRlcnNdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VPcmRlckJ5KGNvbGxlY3Rpb24sIGl0ZXJhdGVlcywgb3JkZXJzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGVsZW1lbnRzIHNwbGl0IGludG8gdHdvIGdyb3VwcywgdGhlIGZpcnN0IG9mIHdoaWNoXG4gICAgICogY29udGFpbnMgZWxlbWVudHMgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLCB0aGUgc2Vjb25kIG9mIHdoaWNoXG4gICAgICogY29udGFpbnMgZWxlbWVudHMgYHByZWRpY2F0ZWAgcmV0dXJucyBmYWxzZXkgZm9yLiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIGdyb3VwZWQgZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWdlJzogNDAsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSwgICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ucGFydGl0aW9uKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snZnJlZCddLCBbJ2Jhcm5leScsICdwZWJibGVzJ11dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucGFydGl0aW9uKHVzZXJzLCB7ICdhZ2UnOiAxLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1sncGViYmxlcyddLCBbJ2Jhcm5leScsICdmcmVkJ11dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5wYXJ0aXRpb24odXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAncGViYmxlcyddLCBbJ2ZyZWQnXV1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucGFydGl0aW9uKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snZnJlZCddLCBbJ2Jhcm5leScsICdwZWJibGVzJ11dXG4gICAgICovXG4gICAgdmFyIHBhcnRpdGlvbiA9IGNyZWF0ZUFnZ3JlZ2F0b3IoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICByZXN1bHRba2V5ID8gMCA6IDFdLnB1c2godmFsdWUpO1xuICAgIH0sIGZ1bmN0aW9uKCkgeyByZXR1cm4gW1tdLCBbXV07IH0pO1xuXG4gICAgLyoqXG4gICAgICogUmVkdWNlcyBgY29sbGVjdGlvbmAgdG8gYSB2YWx1ZSB3aGljaCBpcyB0aGUgYWNjdW11bGF0ZWQgcmVzdWx0IG9mIHJ1bm5pbmdcbiAgICAgKiBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gIHRocnUgYGl0ZXJhdGVlYCwgd2hlcmUgZWFjaCBzdWNjZXNzaXZlXG4gICAgICogaW52b2NhdGlvbiBpcyBzdXBwbGllZCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBwcmV2aW91cy4gSWYgYGFjY3VtdWxhdG9yYFxuICAgICAqIGlzIG5vdCBnaXZlbiwgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIGlzIHVzZWQgYXMgdGhlIGluaXRpYWxcbiAgICAgKiB2YWx1ZS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBmb3VyIGFyZ3VtZW50czpcbiAgICAgKiAoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogTWFueSBsb2Rhc2ggbWV0aG9kcyBhcmUgZ3VhcmRlZCB0byB3b3JrIGFzIGl0ZXJhdGVlcyBmb3IgbWV0aG9kcyBsaWtlXG4gICAgICogYF8ucmVkdWNlYCwgYF8ucmVkdWNlUmlnaHRgLCBhbmQgYF8udHJhbnNmb3JtYC5cbiAgICAgKlxuICAgICAqIFRoZSBndWFyZGVkIG1ldGhvZHMgYXJlOlxuICAgICAqIGBhc3NpZ25gLCBgZGVmYXVsdHNgLCBgZGVmYXVsdHNEZWVwYCwgYGluY2x1ZGVzYCwgYG1lcmdlYCwgYG9yZGVyQnlgLFxuICAgICAqIGFuZCBgc29ydEJ5YFxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBpbml0aWFsIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICAgKiBAc2VlIF8ucmVkdWNlUmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yZWR1Y2UoWzEsIDJdLCBmdW5jdGlvbihzdW0sIG4pIHtcbiAgICAgKiAgIHJldHVybiBzdW0gKyBuO1xuICAgICAqIH0sIDApO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8ucmVkdWNlKHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9LCBmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIChyZXN1bHRbdmFsdWVdIHx8IChyZXN1bHRbdmFsdWVdID0gW10pKS5wdXNoKGtleSk7XG4gICAgICogICByZXR1cm4gcmVzdWx0O1xuICAgICAqIH0sIHt9KTtcbiAgICAgKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9IChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVkdWNlKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlSZWR1Y2UgOiBiYXNlUmVkdWNlLFxuICAgICAgICAgIGluaXRBY2N1bSA9IGFyZ3VtZW50cy5sZW5ndGggPCAzO1xuXG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgNCksIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0sIGJhc2VFYWNoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnJlZHVjZWAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGBjb2xsZWN0aW9uYCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5yZWR1Y2VcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gW1swLCAxXSwgWzIsIDNdLCBbNCwgNV1dO1xuICAgICAqXG4gICAgICogXy5yZWR1Y2VSaWdodChhcnJheSwgZnVuY3Rpb24oZmxhdHRlbmVkLCBvdGhlcikge1xuICAgICAqICAgcmV0dXJuIGZsYXR0ZW5lZC5jb25jYXQob3RoZXIpO1xuICAgICAqIH0sIFtdKTtcbiAgICAgKiAvLyA9PiBbNCwgNSwgMiwgMywgMCwgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZWR1Y2VSaWdodChjb2xsZWN0aW9uLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5UmVkdWNlUmlnaHQgOiBiYXNlUmVkdWNlLFxuICAgICAgICAgIGluaXRBY2N1bSA9IGFyZ3VtZW50cy5sZW5ndGggPCAzO1xuXG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgNCksIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0sIGJhc2VFYWNoUmlnaHQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5maWx0ZXJgOyB0aGlzIG1ldGhvZCByZXR1cm5zIHRoZSBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmBcbiAgICAgKiB0aGF0IGBwcmVkaWNhdGVgIGRvZXMgKipub3QqKiByZXR1cm4gdHJ1dGh5IGZvci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAgICAgKiBAc2VlIF8uZmlsdGVyXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ucmVqZWN0KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucmVqZWN0KHVzZXJzLCB7ICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucmVqZWN0KHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucmVqZWN0KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlamVjdChjb2xsZWN0aW9uLCBwcmVkaWNhdGUpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RmlsdGVyIDogYmFzZUZpbHRlcjtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIG5lZ2F0ZShnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIHJhbmRvbSBlbGVtZW50IGZyb20gYGNvbGxlY3Rpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzYW1wbGUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNhbXBsZShbMSwgMiwgMywgNF0pO1xuICAgICAqIC8vID0+IDJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzYW1wbGUoY29sbGVjdGlvbikge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlTYW1wbGUgOiBiYXNlU2FtcGxlO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBgbmAgcmFuZG9tIGVsZW1lbnRzIGF0IHVuaXF1ZSBrZXlzIGZyb20gYGNvbGxlY3Rpb25gIHVwIHRvIHRoZVxuICAgICAqIHNpemUgb2YgYGNvbGxlY3Rpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzYW1wbGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gc2FtcGxlLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5kb20gZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc2FtcGxlU2l6ZShbMSwgMiwgM10sIDIpO1xuICAgICAqIC8vID0+IFszLCAxXVxuICAgICAqXG4gICAgICogXy5zYW1wbGVTaXplKFsxLCAyLCAzXSwgNCk7XG4gICAgICogLy8gPT4gWzIsIDMsIDFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2FtcGxlU2l6ZShjb2xsZWN0aW9uLCBuLCBndWFyZCkge1xuICAgICAgaWYgKChndWFyZCA/IGlzSXRlcmF0ZWVDYWxsKGNvbGxlY3Rpb24sIG4sIGd1YXJkKSA6IG4gPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgbiA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgfVxuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlTYW1wbGVTaXplIDogYmFzZVNhbXBsZVNpemU7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHNodWZmbGVkIHZhbHVlcywgdXNpbmcgYSB2ZXJzaW9uIG9mIHRoZVxuICAgICAqIFtGaXNoZXItWWF0ZXMgc2h1ZmZsZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmlzaGVyLVlhdGVzX3NodWZmbGUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzaHVmZmxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNodWZmbGVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNodWZmbGUoWzEsIDIsIDMsIDRdKTtcbiAgICAgKiAvLyA9PiBbNCwgMSwgMywgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzaHVmZmxlKGNvbGxlY3Rpb24pIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5U2h1ZmZsZSA6IGJhc2VTaHVmZmxlO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgc2l6ZSBvZiBgY29sbGVjdGlvbmAgYnkgcmV0dXJuaW5nIGl0cyBsZW5ndGggZm9yIGFycmF5LWxpa2VcbiAgICAgKiB2YWx1ZXMgb3IgdGhlIG51bWJlciBvZiBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBmb3Igb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R8c3RyaW5nfSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29sbGVjdGlvbiBzaXplLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNpemUoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLnNpemUoeyAnYSc6IDEsICdiJzogMiB9KTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICpcbiAgICAgKiBfLnNpemUoJ3BlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiA3XG4gICAgICovXG4gICAgZnVuY3Rpb24gc2l6ZShjb2xsZWN0aW9uKSB7XG4gICAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgICAgaWYgKGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgICAgIHJldHVybiBpc1N0cmluZyhjb2xsZWN0aW9uKSA/IHN0cmluZ1NpemUoY29sbGVjdGlvbikgOiBjb2xsZWN0aW9uLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIHZhciB0YWcgPSBnZXRUYWcoY29sbGVjdGlvbik7XG4gICAgICBpZiAodGFnID09IG1hcFRhZyB8fCB0YWcgPT0gc2V0VGFnKSB7XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uLnNpemU7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUtleXMoY29sbGVjdGlvbikubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgKiphbnkqKiBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYC5cbiAgICAgKiBJdGVyYXRpb24gaXMgc3RvcHBlZCBvbmNlIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5LiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29tZShbbnVsbCwgMCwgJ3llcycsIGZhbHNlXSwgQm9vbGVhbik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uc29tZSh1c2VycywgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnNvbWUodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnNvbWUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29tZShjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGd1YXJkKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVNvbWUgOiBiYXNlU29tZTtcbiAgICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGd1YXJkKSkge1xuICAgICAgICBwcmVkaWNhdGUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGVsZW1lbnRzLCBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyIGJ5IHRoZSByZXN1bHRzIG9mXG4gICAgICogcnVubmluZyBlYWNoIGVsZW1lbnQgaW4gYSBjb2xsZWN0aW9uIHRocnUgZWFjaCBpdGVyYXRlZS4gVGhpcyBtZXRob2RcbiAgICAgKiBwZXJmb3JtcyBhIHN0YWJsZSBzb3J0LCB0aGF0IGlzLCBpdCBwcmVzZXJ2ZXMgdGhlIG9yaWdpbmFsIHNvcnQgb3JkZXIgb2ZcbiAgICAgKiBlcXVhbCBlbGVtZW50cy4gVGhlIGl0ZXJhdGVlcyBhcmUgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbaXRlcmF0ZWVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIGl0ZXJhdGVlcyB0byBzb3J0IGJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNvcnRlZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDggfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiAzMCB9LFxuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzQgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLnNvcnRCeSh1c2VycywgW2Z1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlcjsgfV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsIDM2XSwgWydiYXJuZXknLCAzNF0sIFsnZnJlZCcsIDQ4XSwgWydmcmVkJywgMzBdXVxuICAgICAqXG4gICAgICogXy5zb3J0QnkodXNlcnMsIFsndXNlcicsICdhZ2UnXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snYmFybmV5JywgMzRdLCBbJ2Jhcm5leScsIDM2XSwgWydmcmVkJywgMzBdLCBbJ2ZyZWQnLCA0OF1dXG4gICAgICovXG4gICAgdmFyIHNvcnRCeSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGl0ZXJhdGVlcykge1xuICAgICAgaWYgKGNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gaXRlcmF0ZWVzLmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGggPiAxICYmIGlzSXRlcmF0ZWVDYWxsKGNvbGxlY3Rpb24sIGl0ZXJhdGVlc1swXSwgaXRlcmF0ZWVzWzFdKSkge1xuICAgICAgICBpdGVyYXRlZXMgPSBbXTtcbiAgICAgIH0gZWxzZSBpZiAobGVuZ3RoID4gMiAmJiBpc0l0ZXJhdGVlQ2FsbChpdGVyYXRlZXNbMF0sIGl0ZXJhdGVlc1sxXSwgaXRlcmF0ZWVzWzJdKSkge1xuICAgICAgICBpdGVyYXRlZXMgPSBbaXRlcmF0ZWVzWzBdXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBiYXNlRmxhdHRlbihpdGVyYXRlZXMsIDEpLCBbXSk7XG4gICAgfSk7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB0aW1lc3RhbXAgb2YgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdGhhdCBoYXZlIGVsYXBzZWQgc2luY2VcbiAgICAgKiB0aGUgVW5peCBlcG9jaCAoMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjQuMFxuICAgICAqIEBjYXRlZ29yeSBEYXRlXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXN0YW1wLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRlZmVyKGZ1bmN0aW9uKHN0YW1wKSB7XG4gICAgICogICBjb25zb2xlLmxvZyhfLm5vdygpIC0gc3RhbXApO1xuICAgICAqIH0sIF8ubm93KCkpO1xuICAgICAqIC8vID0+IExvZ3MgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaXQgdG9vayBmb3IgdGhlIGRlZmVycmVkIGludm9jYXRpb24uXG4gICAgICovXG4gICAgdmFyIG5vdyA9IGN0eE5vdyB8fCBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiByb290LkRhdGUubm93KCk7XG4gICAgfTtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5iZWZvcmVgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzXG4gICAgICogYGZ1bmNgIG9uY2UgaXQncyBjYWxsZWQgYG5gIG9yIG1vcmUgdGltZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGNhbGxzIGJlZm9yZSBgZnVuY2AgaXMgaW52b2tlZC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZXN0cmljdGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgc2F2ZXMgPSBbJ3Byb2ZpbGUnLCAnc2V0dGluZ3MnXTtcbiAgICAgKlxuICAgICAqIHZhciBkb25lID0gXy5hZnRlcihzYXZlcy5sZW5ndGgsIGZ1bmN0aW9uKCkge1xuICAgICAqICAgY29uc29sZS5sb2coJ2RvbmUgc2F2aW5nIScpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogXy5mb3JFYWNoKHNhdmVzLCBmdW5jdGlvbih0eXBlKSB7XG4gICAgICogICBhc3luY1NhdmUoeyAndHlwZSc6IHR5cGUsICdjb21wbGV0ZSc6IGRvbmUgfSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyAnZG9uZSBzYXZpbmchJyBhZnRlciB0aGUgdHdvIGFzeW5jIHNhdmVzIGhhdmUgY29tcGxldGVkLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFmdGVyKG4sIGZ1bmMpIHtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIG4gPSB0b0ludGVnZXIobik7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICgtLW4gPCAxKSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCwgd2l0aCB1cCB0byBgbmAgYXJndW1lbnRzLFxuICAgICAqIGlnbm9yaW5nIGFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj1mdW5jLmxlbmd0aF0gVGhlIGFyaXR5IGNhcC5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tYXAoWyc2JywgJzgnLCAnMTAnXSwgXy5hcnkocGFyc2VJbnQsIDEpKTtcbiAgICAgKiAvLyA9PiBbNiwgOCwgMTBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXJ5KGZ1bmMsIG4sIGd1YXJkKSB7XG4gICAgICBuID0gZ3VhcmQgPyB1bmRlZmluZWQgOiBuO1xuICAgICAgbiA9IChmdW5jICYmIG4gPT0gbnVsbCkgPyBmdW5jLmxlbmd0aCA6IG47XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBXUkFQX0FSWV9GTEFHLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgLCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBhbmQgYXJndW1lbnRzXG4gICAgICogb2YgdGhlIGNyZWF0ZWQgZnVuY3Rpb24sIHdoaWxlIGl0J3MgY2FsbGVkIGxlc3MgdGhhbiBgbmAgdGltZXMuIFN1YnNlcXVlbnRcbiAgICAgKiBjYWxscyB0byB0aGUgY3JlYXRlZCBmdW5jdGlvbiByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2AgaW52b2NhdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgY2FsbHMgYXQgd2hpY2ggYGZ1bmNgIGlzIG5vIGxvbmdlciBpbnZva2VkLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHJlc3RyaWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJlc3RyaWN0ZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCBfLmJlZm9yZSg1LCBhZGRDb250YWN0VG9MaXN0KSk7XG4gICAgICogLy8gPT4gQWxsb3dzIGFkZGluZyB1cCB0byA0IGNvbnRhY3RzIHRvIHRoZSBsaXN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJlZm9yZShuLCBmdW5jKSB7XG4gICAgICB2YXIgcmVzdWx0O1xuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgbiA9IHRvSW50ZWdlcihuKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKC0tbiA+IDApIHtcbiAgICAgICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG4gPD0gMSkge1xuICAgICAgICAgIGZ1bmMgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgYHRoaXNBcmdgXG4gICAgICogYW5kIGBwYXJ0aWFsc2AgcHJlcGVuZGVkIHRvIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBUaGUgYF8uYmluZC5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljIGJ1aWxkcyxcbiAgICAgKiBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIG5hdGl2ZSBgRnVuY3Rpb24jYmluZGAsIHRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiXG4gICAgICogcHJvcGVydHkgb2YgYm91bmQgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYmluZC5cbiAgICAgKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0gey4uLip9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBib3VuZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZ3JlZXQoZ3JlZXRpbmcsIHB1bmN0dWF0aW9uKSB7XG4gICAgICogICByZXR1cm4gZ3JlZXRpbmcgKyAnICcgKyB0aGlzLnVzZXIgKyBwdW5jdHVhdGlvbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAndXNlcic6ICdmcmVkJyB9O1xuICAgICAqXG4gICAgICogdmFyIGJvdW5kID0gXy5iaW5kKGdyZWV0LCBvYmplY3QsICdoaScpO1xuICAgICAqIGJvdW5kKCchJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQhJ1xuICAgICAqXG4gICAgICogLy8gQm91bmQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogdmFyIGJvdW5kID0gXy5iaW5kKGdyZWV0LCBvYmplY3QsIF8sICchJyk7XG4gICAgICogYm91bmQoJ2hpJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQhJ1xuICAgICAqL1xuICAgIHZhciBiaW5kID0gYmFzZVJlc3QoZnVuY3Rpb24oZnVuYywgdGhpc0FyZywgcGFydGlhbHMpIHtcbiAgICAgIHZhciBiaXRtYXNrID0gV1JBUF9CSU5EX0ZMQUc7XG4gICAgICBpZiAocGFydGlhbHMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBob2xkZXJzID0gcmVwbGFjZUhvbGRlcnMocGFydGlhbHMsIGdldEhvbGRlcihiaW5kKSk7XG4gICAgICAgIGJpdG1hc2sgfD0gV1JBUF9QQVJUSUFMX0ZMQUc7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBwYXJ0aWFscywgaG9sZGVycyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSBtZXRob2QgYXQgYG9iamVjdFtrZXldYCB3aXRoIGBwYXJ0aWFsc2BcbiAgICAgKiBwcmVwZW5kZWQgdG8gdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIGRpZmZlcnMgZnJvbSBgXy5iaW5kYCBieSBhbGxvd2luZyBib3VuZCBmdW5jdGlvbnMgdG8gcmVmZXJlbmNlXG4gICAgICogbWV0aG9kcyB0aGF0IG1heSBiZSByZWRlZmluZWQgb3IgZG9uJ3QgeWV0IGV4aXN0LiBTZWVcbiAgICAgKiBbUGV0ZXIgTWljaGF1eCdzIGFydGljbGVdKGh0dHA6Ly9wZXRlci5taWNoYXV4LmNhL2FydGljbGVzL2xhenktZnVuY3Rpb24tZGVmaW5pdGlvbi1wYXR0ZXJuKVxuICAgICAqIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICpcbiAgICAgKiBUaGUgYF8uYmluZEtleS5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljXG4gICAgICogYnVpbGRzLCBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGludm9rZSB0aGUgbWV0aG9kIG9uLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgbWV0aG9kLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIGJlIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJvdW5kIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0ge1xuICAgICAqICAgJ3VzZXInOiAnZnJlZCcsXG4gICAgICogICAnZ3JlZXQnOiBmdW5jdGlvbihncmVldGluZywgcHVuY3R1YXRpb24pIHtcbiAgICAgKiAgICAgcmV0dXJuIGdyZWV0aW5nICsgJyAnICsgdGhpcy51c2VyICsgcHVuY3R1YXRpb247XG4gICAgICogICB9XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIHZhciBib3VuZCA9IF8uYmluZEtleShvYmplY3QsICdncmVldCcsICdoaScpO1xuICAgICAqIGJvdW5kKCchJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQhJ1xuICAgICAqXG4gICAgICogb2JqZWN0LmdyZWV0ID0gZnVuY3Rpb24oZ3JlZXRpbmcsIHB1bmN0dWF0aW9uKSB7XG4gICAgICogICByZXR1cm4gZ3JlZXRpbmcgKyAneWEgJyArIHRoaXMudXNlciArIHB1bmN0dWF0aW9uO1xuICAgICAqIH07XG4gICAgICpcbiAgICAgKiBib3VuZCgnIScpO1xuICAgICAqIC8vID0+ICdoaXlhIGZyZWQhJ1xuICAgICAqXG4gICAgICogLy8gQm91bmQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogdmFyIGJvdW5kID0gXy5iaW5kS2V5KG9iamVjdCwgJ2dyZWV0JywgXywgJyEnKTtcbiAgICAgKiBib3VuZCgnaGknKTtcbiAgICAgKiAvLyA9PiAnaGl5YSBmcmVkISdcbiAgICAgKi9cbiAgICB2YXIgYmluZEtleSA9IGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwga2V5LCBwYXJ0aWFscykge1xuICAgICAgdmFyIGJpdG1hc2sgPSBXUkFQX0JJTkRfRkxBRyB8IFdSQVBfQklORF9LRVlfRkxBRztcbiAgICAgIGlmIChwYXJ0aWFscy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGhvbGRlcnMgPSByZXBsYWNlSG9sZGVycyhwYXJ0aWFscywgZ2V0SG9sZGVyKGJpbmRLZXkpKTtcbiAgICAgICAgYml0bWFzayB8PSBXUkFQX1BBUlRJQUxfRkxBRztcbiAgICAgIH1cbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGtleSwgYml0bWFzaywgb2JqZWN0LCBwYXJ0aWFscywgaG9sZGVycyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIGFyZ3VtZW50cyBvZiBgZnVuY2AgYW5kIGVpdGhlciBpbnZva2VzXG4gICAgICogYGZ1bmNgIHJldHVybmluZyBpdHMgcmVzdWx0LCBpZiBhdCBsZWFzdCBgYXJpdHlgIG51bWJlciBvZiBhcmd1bWVudHMgaGF2ZVxuICAgICAqIGJlZW4gcHJvdmlkZWQsIG9yIHJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdGhlIHJlbWFpbmluZyBgZnVuY2BcbiAgICAgKiBhcmd1bWVudHMsIGFuZCBzbyBvbi4gVGhlIGFyaXR5IG9mIGBmdW5jYCBtYXkgYmUgc3BlY2lmaWVkIGlmIGBmdW5jLmxlbmd0aGBcbiAgICAgKiBpcyBub3Qgc3VmZmljaWVudC5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5jdXJyeS5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljIGJ1aWxkcyxcbiAgICAgKiBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwcm92aWRlZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgZG9lc24ndCBzZXQgdGhlIFwibGVuZ3RoXCIgcHJvcGVydHkgb2YgY3VycmllZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjdXJyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5PWZ1bmMubGVuZ3RoXSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY3VycmllZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFiYyA9IGZ1bmN0aW9uKGEsIGIsIGMpIHtcbiAgICAgKiAgIHJldHVybiBbYSwgYiwgY107XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIHZhciBjdXJyaWVkID0gXy5jdXJyeShhYmMpO1xuICAgICAqXG4gICAgICogY3VycmllZCgxKSgyKSgzKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIGN1cnJpZWQoMSwgMikoMyk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBjdXJyaWVkKDEsIDIsIDMpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogLy8gQ3VycmllZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgKiBjdXJyaWVkKDEpKF8sIDMpKDIpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGN1cnJ5KGZ1bmMsIGFyaXR5LCBndWFyZCkge1xuICAgICAgYXJpdHkgPSBndWFyZCA/IHVuZGVmaW5lZCA6IGFyaXR5O1xuICAgICAgdmFyIHJlc3VsdCA9IGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9DVVJSWV9GTEFHLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgYXJpdHkpO1xuICAgICAgcmVzdWx0LnBsYWNlaG9sZGVyID0gY3VycnkucGxhY2Vob2xkZXI7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY3VycnlgIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhcmUgYXBwbGllZCB0byBgZnVuY2BcbiAgICAgKiBpbiB0aGUgbWFubmVyIG9mIGBfLnBhcnRpYWxSaWdodGAgaW5zdGVhZCBvZiBgXy5wYXJ0aWFsYC5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5jdXJyeVJpZ2h0LnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWNcbiAgICAgKiBidWlsZHMsIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBjdXJyaWVkIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGN1cnJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHk9ZnVuYy5sZW5ndGhdIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjdXJyaWVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYWJjID0gZnVuY3Rpb24oYSwgYiwgYykge1xuICAgICAqICAgcmV0dXJuIFthLCBiLCBjXTtcbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogdmFyIGN1cnJpZWQgPSBfLmN1cnJ5UmlnaHQoYWJjKTtcbiAgICAgKlxuICAgICAqIGN1cnJpZWQoMykoMikoMSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBjdXJyaWVkKDIsIDMpKDEpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogY3VycmllZCgxLCAyLCAzKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIC8vIEN1cnJpZWQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogY3VycmllZCgzKSgxLCBfKSgyKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjdXJyeVJpZ2h0KGZ1bmMsIGFyaXR5LCBndWFyZCkge1xuICAgICAgYXJpdHkgPSBndWFyZCA/IHVuZGVmaW5lZCA6IGFyaXR5O1xuICAgICAgdmFyIHJlc3VsdCA9IGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9DVVJSWV9SSUdIVF9GTEFHLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgYXJpdHkpO1xuICAgICAgcmVzdWx0LnBsYWNlaG9sZGVyID0gY3VycnlSaWdodC5wbGFjZWhvbGRlcjtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGRlYm91bmNlZCBmdW5jdGlvbiB0aGF0IGRlbGF5cyBpbnZva2luZyBgZnVuY2AgdW50aWwgYWZ0ZXIgYHdhaXRgXG4gICAgICogbWlsbGlzZWNvbmRzIGhhdmUgZWxhcHNlZCBzaW5jZSB0aGUgbGFzdCB0aW1lIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gd2FzXG4gICAgICogaW52b2tlZC4gVGhlIGRlYm91bmNlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGAgbWV0aG9kIHRvIGNhbmNlbFxuICAgICAqIGRlbGF5ZWQgYGZ1bmNgIGludm9jYXRpb25zIGFuZCBhIGBmbHVzaGAgbWV0aG9kIHRvIGltbWVkaWF0ZWx5IGludm9rZSB0aGVtLlxuICAgICAqIFByb3ZpZGUgYG9wdGlvbnNgIHRvIGluZGljYXRlIHdoZXRoZXIgYGZ1bmNgIHNob3VsZCBiZSBpbnZva2VkIG9uIHRoZVxuICAgICAqIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIGB3YWl0YCB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRoZSBsYXN0IGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uLiBTdWJzZXF1ZW50XG4gICAgICogY2FsbHMgdG8gdGhlIGRlYm91bmNlZCBmdW5jdGlvbiByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2BcbiAgICAgKiBpbnZvY2F0aW9uLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIElmIGBsZWFkaW5nYCBhbmQgYHRyYWlsaW5nYCBvcHRpb25zIGFyZSBgdHJ1ZWAsIGBmdW5jYCBpc1xuICAgICAqIGludm9rZWQgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQgb25seSBpZiB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uXG4gICAgICogaXMgaW52b2tlZCBtb3JlIHRoYW4gb25jZSBkdXJpbmcgdGhlIGB3YWl0YCB0aW1lb3V0LlxuICAgICAqXG4gICAgICogSWYgYHdhaXRgIGlzIGAwYCBhbmQgYGxlYWRpbmdgIGlzIGBmYWxzZWAsIGBmdW5jYCBpbnZvY2F0aW9uIGlzIGRlZmVycmVkXG4gICAgICogdW50aWwgdG8gdGhlIG5leHQgdGljaywgc2ltaWxhciB0byBgc2V0VGltZW91dGAgd2l0aCBhIHRpbWVvdXQgb2YgYDBgLlxuICAgICAqXG4gICAgICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vZGVib3VuY2luZy10aHJvdHRsaW5nLWV4cGxhaW5lZC1leGFtcGxlcy8pXG4gICAgICogZm9yIGRldGFpbHMgb3ZlciB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBgXy5kZWJvdW5jZWAgYW5kIGBfLnRocm90dGxlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlYm91bmNlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbd2FpdD0wXSBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxlYWRpbmc9ZmFsc2VdXG4gICAgICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIGxlYWRpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubWF4V2FpdF1cbiAgICAgKiAgVGhlIG1heGltdW0gdGltZSBgZnVuY2AgaXMgYWxsb3dlZCB0byBiZSBkZWxheWVkIGJlZm9yZSBpdCdzIGludm9rZWQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy50cmFpbGluZz10cnVlXVxuICAgICAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGRlYm91bmNlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gQXZvaWQgY29zdGx5IGNhbGN1bGF0aW9ucyB3aGlsZSB0aGUgd2luZG93IHNpemUgaXMgaW4gZmx1eC5cbiAgICAgKiBqUXVlcnkod2luZG93KS5vbigncmVzaXplJywgXy5kZWJvdW5jZShjYWxjdWxhdGVMYXlvdXQsIDE1MCkpO1xuICAgICAqXG4gICAgICogLy8gSW52b2tlIGBzZW5kTWFpbGAgd2hlbiBjbGlja2VkLCBkZWJvdW5jaW5nIHN1YnNlcXVlbnQgY2FsbHMuXG4gICAgICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIF8uZGVib3VuY2Uoc2VuZE1haWwsIDMwMCwge1xuICAgICAqICAgJ2xlYWRpbmcnOiB0cnVlLFxuICAgICAqICAgJ3RyYWlsaW5nJzogZmFsc2VcbiAgICAgKiB9KSk7XG4gICAgICpcbiAgICAgKiAvLyBFbnN1cmUgYGJhdGNoTG9nYCBpcyBpbnZva2VkIG9uY2UgYWZ0ZXIgMSBzZWNvbmQgb2YgZGVib3VuY2VkIGNhbGxzLlxuICAgICAqIHZhciBkZWJvdW5jZWQgPSBfLmRlYm91bmNlKGJhdGNoTG9nLCAyNTAsIHsgJ21heFdhaXQnOiAxMDAwIH0pO1xuICAgICAqIHZhciBzb3VyY2UgPSBuZXcgRXZlbnRTb3VyY2UoJy9zdHJlYW0nKTtcbiAgICAgKiBqUXVlcnkoc291cmNlKS5vbignbWVzc2FnZScsIGRlYm91bmNlZCk7XG4gICAgICpcbiAgICAgKiAvLyBDYW5jZWwgdGhlIHRyYWlsaW5nIGRlYm91bmNlZCBpbnZvY2F0aW9uLlxuICAgICAqIGpRdWVyeSh3aW5kb3cpLm9uKCdwb3BzdGF0ZScsIGRlYm91bmNlZC5jYW5jZWwpO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgICAgIHZhciBsYXN0QXJncyxcbiAgICAgICAgICBsYXN0VGhpcyxcbiAgICAgICAgICBtYXhXYWl0LFxuICAgICAgICAgIHJlc3VsdCxcbiAgICAgICAgICB0aW1lcklkLFxuICAgICAgICAgIGxhc3RDYWxsVGltZSxcbiAgICAgICAgICBsYXN0SW52b2tlVGltZSA9IDAsXG4gICAgICAgICAgbGVhZGluZyA9IGZhbHNlLFxuICAgICAgICAgIG1heGluZyA9IGZhbHNlLFxuICAgICAgICAgIHRyYWlsaW5nID0gdHJ1ZTtcblxuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgd2FpdCA9IHRvTnVtYmVyKHdhaXQpIHx8IDA7XG4gICAgICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICAgICAgbGVhZGluZyA9ICEhb3B0aW9ucy5sZWFkaW5nO1xuICAgICAgICBtYXhpbmcgPSAnbWF4V2FpdCcgaW4gb3B0aW9ucztcbiAgICAgICAgbWF4V2FpdCA9IG1heGluZyA/IG5hdGl2ZU1heCh0b051bWJlcihvcHRpb25zLm1heFdhaXQpIHx8IDAsIHdhaXQpIDogbWF4V2FpdDtcbiAgICAgICAgdHJhaWxpbmcgPSAndHJhaWxpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMudHJhaWxpbmcgOiB0cmFpbGluZztcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gaW52b2tlRnVuYyh0aW1lKSB7XG4gICAgICAgIHZhciBhcmdzID0gbGFzdEFyZ3MsXG4gICAgICAgICAgICB0aGlzQXJnID0gbGFzdFRoaXM7XG5cbiAgICAgICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgbGFzdEludm9rZVRpbWUgPSB0aW1lO1xuICAgICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBsZWFkaW5nRWRnZSh0aW1lKSB7XG4gICAgICAgIC8vIFJlc2V0IGFueSBgbWF4V2FpdGAgdGltZXIuXG4gICAgICAgIGxhc3RJbnZva2VUaW1lID0gdGltZTtcbiAgICAgICAgLy8gU3RhcnQgdGhlIHRpbWVyIGZvciB0aGUgdHJhaWxpbmcgZWRnZS5cbiAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAgICAgLy8gSW52b2tlIHRoZSBsZWFkaW5nIGVkZ2UuXG4gICAgICAgIHJldHVybiBsZWFkaW5nID8gaW52b2tlRnVuYyh0aW1lKSA6IHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gcmVtYWluaW5nV2FpdCh0aW1lKSB7XG4gICAgICAgIHZhciB0aW1lU2luY2VMYXN0Q2FsbCA9IHRpbWUgLSBsYXN0Q2FsbFRpbWUsXG4gICAgICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lLFxuICAgICAgICAgICAgdGltZVdhaXRpbmcgPSB3YWl0IC0gdGltZVNpbmNlTGFzdENhbGw7XG5cbiAgICAgICAgcmV0dXJuIG1heGluZ1xuICAgICAgICAgID8gbmF0aXZlTWluKHRpbWVXYWl0aW5nLCBtYXhXYWl0IC0gdGltZVNpbmNlTGFzdEludm9rZSlcbiAgICAgICAgICA6IHRpbWVXYWl0aW5nO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBzaG91bGRJbnZva2UodGltZSkge1xuICAgICAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICAgICAgdGltZVNpbmNlTGFzdEludm9rZSA9IHRpbWUgLSBsYXN0SW52b2tlVGltZTtcblxuICAgICAgICAvLyBFaXRoZXIgdGhpcyBpcyB0aGUgZmlyc3QgY2FsbCwgYWN0aXZpdHkgaGFzIHN0b3BwZWQgYW5kIHdlJ3JlIGF0IHRoZVxuICAgICAgICAvLyB0cmFpbGluZyBlZGdlLCB0aGUgc3lzdGVtIHRpbWUgaGFzIGdvbmUgYmFja3dhcmRzIGFuZCB3ZSdyZSB0cmVhdGluZ1xuICAgICAgICAvLyBpdCBhcyB0aGUgdHJhaWxpbmcgZWRnZSwgb3Igd2UndmUgaGl0IHRoZSBgbWF4V2FpdGAgbGltaXQuXG4gICAgICAgIHJldHVybiAobGFzdENhbGxUaW1lID09PSB1bmRlZmluZWQgfHwgKHRpbWVTaW5jZUxhc3RDYWxsID49IHdhaXQpIHx8XG4gICAgICAgICAgKHRpbWVTaW5jZUxhc3RDYWxsIDwgMCkgfHwgKG1heGluZyAmJiB0aW1lU2luY2VMYXN0SW52b2tlID49IG1heFdhaXQpKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gdGltZXJFeHBpcmVkKCkge1xuICAgICAgICB2YXIgdGltZSA9IG5vdygpO1xuICAgICAgICBpZiAoc2hvdWxkSW52b2tlKHRpbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIHRyYWlsaW5nRWRnZSh0aW1lKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZXN0YXJ0IHRoZSB0aW1lci5cbiAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCByZW1haW5pbmdXYWl0KHRpbWUpKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gdHJhaWxpbmdFZGdlKHRpbWUpIHtcbiAgICAgICAgdGltZXJJZCA9IHVuZGVmaW5lZDtcblxuICAgICAgICAvLyBPbmx5IGludm9rZSBpZiB3ZSBoYXZlIGBsYXN0QXJnc2Agd2hpY2ggbWVhbnMgYGZ1bmNgIGhhcyBiZWVuXG4gICAgICAgIC8vIGRlYm91bmNlZCBhdCBsZWFzdCBvbmNlLlxuICAgICAgICBpZiAodHJhaWxpbmcgJiYgbGFzdEFyZ3MpIHtcbiAgICAgICAgICByZXR1cm4gaW52b2tlRnVuYyh0aW1lKTtcbiAgICAgICAgfVxuICAgICAgICBsYXN0QXJncyA9IGxhc3RUaGlzID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgICAgIGlmICh0aW1lcklkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXJJZCk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdEludm9rZVRpbWUgPSAwO1xuICAgICAgICBsYXN0QXJncyA9IGxhc3RDYWxsVGltZSA9IGxhc3RUaGlzID0gdGltZXJJZCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gZmx1c2goKSB7XG4gICAgICAgIHJldHVybiB0aW1lcklkID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiB0cmFpbGluZ0VkZ2Uobm93KCkpO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBkZWJvdW5jZWQoKSB7XG4gICAgICAgIHZhciB0aW1lID0gbm93KCksXG4gICAgICAgICAgICBpc0ludm9raW5nID0gc2hvdWxkSW52b2tlKHRpbWUpO1xuXG4gICAgICAgIGxhc3RBcmdzID0gYXJndW1lbnRzO1xuICAgICAgICBsYXN0VGhpcyA9IHRoaXM7XG4gICAgICAgIGxhc3RDYWxsVGltZSA9IHRpbWU7XG5cbiAgICAgICAgaWYgKGlzSW52b2tpbmcpIHtcbiAgICAgICAgICBpZiAodGltZXJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gbGVhZGluZ0VkZ2UobGFzdENhbGxUaW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1heGluZykge1xuICAgICAgICAgICAgLy8gSGFuZGxlIGludm9jYXRpb25zIGluIGEgdGlnaHQgbG9vcC5cbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcklkKTtcbiAgICAgICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgICAgICAgICByZXR1cm4gaW52b2tlRnVuYyhsYXN0Q2FsbFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGltZXJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgZGVib3VuY2VkLmNhbmNlbCA9IGNhbmNlbDtcbiAgICAgIGRlYm91bmNlZC5mbHVzaCA9IGZsdXNoO1xuICAgICAgcmV0dXJuIGRlYm91bmNlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWZlcnMgaW52b2tpbmcgdGhlIGBmdW5jYCB1bnRpbCB0aGUgY3VycmVudCBjYWxsIHN0YWNrIGhhcyBjbGVhcmVkLiBBbnlcbiAgICAgKiBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQgdG8gYGZ1bmNgIHdoZW4gaXQncyBpbnZva2VkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVmZXIuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXIgaWQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmZXIoZnVuY3Rpb24odGV4dCkge1xuICAgICAqICAgY29uc29sZS5sb2codGV4dCk7XG4gICAgICogfSwgJ2RlZmVycmVkJyk7XG4gICAgICogLy8gPT4gTG9ncyAnZGVmZXJyZWQnIGFmdGVyIG9uZSBtaWxsaXNlY29uZC5cbiAgICAgKi9cbiAgICB2YXIgZGVmZXIgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCBhcmdzKSB7XG4gICAgICByZXR1cm4gYmFzZURlbGF5KGZ1bmMsIDEsIGFyZ3MpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogSW52b2tlcyBgZnVuY2AgYWZ0ZXIgYHdhaXRgIG1pbGxpc2Vjb25kcy4gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZVxuICAgICAqIHByb3ZpZGVkIHRvIGBmdW5jYCB3aGVuIGl0J3MgaW52b2tlZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlbGF5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3YWl0IFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5IGludm9jYXRpb24uXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXIgaWQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVsYXkoZnVuY3Rpb24odGV4dCkge1xuICAgICAqICAgY29uc29sZS5sb2codGV4dCk7XG4gICAgICogfSwgMTAwMCwgJ2xhdGVyJyk7XG4gICAgICogLy8gPT4gTG9ncyAnbGF0ZXInIGFmdGVyIG9uZSBzZWNvbmQuXG4gICAgICovXG4gICAgdmFyIGRlbGF5ID0gYmFzZVJlc3QoZnVuY3Rpb24oZnVuYywgd2FpdCwgYXJncykge1xuICAgICAgcmV0dXJuIGJhc2VEZWxheShmdW5jLCB0b051bWJlcih3YWl0KSB8fCAwLCBhcmdzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggYXJndW1lbnRzIHJldmVyc2VkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZmxpcCBhcmd1bWVudHMgZm9yLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZsaXBwZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmbGlwcGVkID0gXy5mbGlwKGZ1bmN0aW9uKCkge1xuICAgICAqICAgcmV0dXJuIF8udG9BcnJheShhcmd1bWVudHMpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogZmxpcHBlZCgnYScsICdiJywgJ2MnLCAnZCcpO1xuICAgICAqIC8vID0+IFsnZCcsICdjJywgJ2InLCAnYSddXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxpcChmdW5jKSB7XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBXUkFQX0ZMSVBfRkxBRyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgbWVtb2l6ZXMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuIElmIGByZXNvbHZlcmAgaXNcbiAgICAgKiBwcm92aWRlZCwgaXQgZGV0ZXJtaW5lcyB0aGUgY2FjaGUga2V5IGZvciBzdG9yaW5nIHRoZSByZXN1bHQgYmFzZWQgb24gdGhlXG4gICAgICogYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbi4gQnkgZGVmYXVsdCwgdGhlIGZpcnN0IGFyZ3VtZW50XG4gICAgICogcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uIGlzIHVzZWQgYXMgdGhlIG1hcCBjYWNoZSBrZXkuIFRoZSBgZnVuY2BcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZSBtZW1vaXplZCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGUgY2FjaGUgaXMgZXhwb3NlZCBhcyB0aGUgYGNhY2hlYCBwcm9wZXJ0eSBvbiB0aGUgbWVtb2l6ZWRcbiAgICAgKiBmdW5jdGlvbi4gSXRzIGNyZWF0aW9uIG1heSBiZSBjdXN0b21pemVkIGJ5IHJlcGxhY2luZyB0aGUgYF8ubWVtb2l6ZS5DYWNoZWBcbiAgICAgKiBjb25zdHJ1Y3RvciB3aXRoIG9uZSB3aG9zZSBpbnN0YW5jZXMgaW1wbGVtZW50IHRoZVxuICAgICAqIFtgTWFwYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcHJvcGVydGllcy1vZi10aGUtbWFwLXByb3RvdHlwZS1vYmplY3QpXG4gICAgICogbWV0aG9kIGludGVyZmFjZSBvZiBgY2xlYXJgLCBgZGVsZXRlYCwgYGdldGAsIGBoYXNgLCBhbmQgYHNldGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3Jlc29sdmVyXSBUaGUgZnVuY3Rpb24gdG8gcmVzb2x2ZSB0aGUgY2FjaGUga2V5LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1lbW9pemVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiB9O1xuICAgICAqIHZhciBvdGhlciA9IHsgJ2MnOiAzLCAnZCc6IDQgfTtcbiAgICAgKlxuICAgICAqIHZhciB2YWx1ZXMgPSBfLm1lbW9pemUoXy52YWx1ZXMpO1xuICAgICAqIHZhbHVlcyhvYmplY3QpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogdmFsdWVzKG90aGVyKTtcbiAgICAgKiAvLyA9PiBbMywgNF1cbiAgICAgKlxuICAgICAqIG9iamVjdC5hID0gMjtcbiAgICAgKiB2YWx1ZXMob2JqZWN0KTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIC8vIE1vZGlmeSB0aGUgcmVzdWx0IGNhY2hlLlxuICAgICAqIHZhbHVlcy5jYWNoZS5zZXQob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAgICAgKiB2YWx1ZXMob2JqZWN0KTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYiddXG4gICAgICpcbiAgICAgKiAvLyBSZXBsYWNlIGBfLm1lbW9pemUuQ2FjaGVgLlxuICAgICAqIF8ubWVtb2l6ZS5DYWNoZSA9IFdlYWtNYXA7XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWVtb2l6ZShmdW5jLCByZXNvbHZlcikge1xuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicgfHwgKHJlc29sdmVyICE9IG51bGwgJiYgdHlwZW9mIHJlc29sdmVyICE9ICdmdW5jdGlvbicpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHZhciBtZW1vaXplZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAgICAgIGtleSA9IHJlc29sdmVyID8gcmVzb2x2ZXIuYXBwbHkodGhpcywgYXJncykgOiBhcmdzWzBdLFxuICAgICAgICAgICAgY2FjaGUgPSBtZW1vaXplZC5jYWNoZTtcblxuICAgICAgICBpZiAoY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIG1lbW9pemVkLmNhY2hlID0gY2FjaGUuc2V0KGtleSwgcmVzdWx0KSB8fCBjYWNoZTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgICBtZW1vaXplZC5jYWNoZSA9IG5ldyAobWVtb2l6ZS5DYWNoZSB8fCBNYXBDYWNoZSk7XG4gICAgICByZXR1cm4gbWVtb2l6ZWQ7XG4gICAgfVxuXG4gICAgLy8gRXhwb3NlIGBNYXBDYWNoZWAuXG4gICAgbWVtb2l6ZS5DYWNoZSA9IE1hcENhY2hlO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgbmVnYXRlcyB0aGUgcmVzdWx0IG9mIHRoZSBwcmVkaWNhdGUgYGZ1bmNgLiBUaGVcbiAgICAgKiBgZnVuY2AgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgYW5kIGFyZ3VtZW50cyBvZiB0aGVcbiAgICAgKiBjcmVhdGVkIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBwcmVkaWNhdGUgdG8gbmVnYXRlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG5lZ2F0ZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGlzRXZlbihuKSB7XG4gICAgICogICByZXR1cm4gbiAlIDIgPT0gMDtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmZpbHRlcihbMSwgMiwgMywgNCwgNSwgNl0sIF8ubmVnYXRlKGlzRXZlbikpO1xuICAgICAqIC8vID0+IFsxLCAzLCA1XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5lZ2F0ZShwcmVkaWNhdGUpIHtcbiAgICAgIGlmICh0eXBlb2YgcHJlZGljYXRlICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgICAgIGNhc2UgMDogcmV0dXJuICFwcmVkaWNhdGUuY2FsbCh0aGlzKTtcbiAgICAgICAgICBjYXNlIDE6IHJldHVybiAhcHJlZGljYXRlLmNhbGwodGhpcywgYXJnc1swXSk7XG4gICAgICAgICAgY2FzZSAyOiByZXR1cm4gIXByZWRpY2F0ZS5jYWxsKHRoaXMsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuICFwcmVkaWNhdGUuY2FsbCh0aGlzLCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIXByZWRpY2F0ZS5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaXMgcmVzdHJpY3RlZCB0byBpbnZva2luZyBgZnVuY2Agb25jZS4gUmVwZWF0IGNhbGxzXG4gICAgICogdG8gdGhlIGZ1bmN0aW9uIHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IGludm9jYXRpb24uIFRoZSBgZnVuY2AgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIGFuZCBhcmd1bWVudHMgb2YgdGhlIGNyZWF0ZWQgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZXN0cmljdGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgaW5pdGlhbGl6ZSA9IF8ub25jZShjcmVhdGVBcHBsaWNhdGlvbik7XG4gICAgICogaW5pdGlhbGl6ZSgpO1xuICAgICAqIGluaXRpYWxpemUoKTtcbiAgICAgKiAvLyA9PiBgY3JlYXRlQXBwbGljYXRpb25gIGlzIGludm9rZWQgb25jZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9uY2UoZnVuYykge1xuICAgICAgcmV0dXJuIGJlZm9yZSgyLCBmdW5jKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudHMgdHJhbnNmb3JtZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbdHJhbnNmb3Jtcz1bXy5pZGVudGl0eV1dXG4gICAgICogIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm1zLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBkb3VibGVkKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICAgICAqICAgcmV0dXJuIG4gKiBuO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5vdmVyQXJncyhmdW5jdGlvbih4LCB5KSB7XG4gICAgICogICByZXR1cm4gW3gsIHldO1xuICAgICAqIH0sIFtzcXVhcmUsIGRvdWJsZWRdKTtcbiAgICAgKlxuICAgICAqIGZ1bmMoOSwgMyk7XG4gICAgICogLy8gPT4gWzgxLCA2XVxuICAgICAqXG4gICAgICogZnVuYygxMCwgNSk7XG4gICAgICogLy8gPT4gWzEwMCwgMTBdXG4gICAgICovXG4gICAgdmFyIG92ZXJBcmdzID0gY2FzdFJlc3QoZnVuY3Rpb24oZnVuYywgdHJhbnNmb3Jtcykge1xuICAgICAgdHJhbnNmb3JtcyA9ICh0cmFuc2Zvcm1zLmxlbmd0aCA9PSAxICYmIGlzQXJyYXkodHJhbnNmb3Jtc1swXSkpXG4gICAgICAgID8gYXJyYXlNYXAodHJhbnNmb3Jtc1swXSwgYmFzZVVuYXJ5KGdldEl0ZXJhdGVlKCkpKVxuICAgICAgICA6IGFycmF5TWFwKGJhc2VGbGF0dGVuKHRyYW5zZm9ybXMsIDEpLCBiYXNlVW5hcnkoZ2V0SXRlcmF0ZWUoKSkpO1xuXG4gICAgICB2YXIgZnVuY3NMZW5ndGggPSB0cmFuc2Zvcm1zLmxlbmd0aDtcbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWluKGFyZ3MubGVuZ3RoLCBmdW5jc0xlbmd0aCk7XG5cbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICBhcmdzW2luZGV4XSA9IHRyYW5zZm9ybXNbaW5kZXhdLmNhbGwodGhpcywgYXJnc1tpbmRleF0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcHBseShmdW5jLCB0aGlzLCBhcmdzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBgcGFydGlhbHNgIHByZXBlbmRlZCB0byB0aGVcbiAgICAgKiBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYmluZGAgZXhjZXB0IGl0IGRvZXMgKipub3QqKlxuICAgICAqIGFsdGVyIHRoZSBgdGhpc2AgYmluZGluZy5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5wYXJ0aWFsLnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWNcbiAgICAgKiBidWlsZHMsIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBwYXJ0aWFsbHlcbiAgICAgKiBhcHBsaWVkIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjIuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHBhcnRpYWxseSBhcHBseSBhcmd1bWVudHMgdG8uXG4gICAgICogQHBhcmFtIHsuLi4qfSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gYmUgcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcGFydGlhbGx5IGFwcGxpZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGdyZWV0KGdyZWV0aW5nLCBuYW1lKSB7XG4gICAgICogICByZXR1cm4gZ3JlZXRpbmcgKyAnICcgKyBuYW1lO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBzYXlIZWxsb1RvID0gXy5wYXJ0aWFsKGdyZWV0LCAnaGVsbG8nKTtcbiAgICAgKiBzYXlIZWxsb1RvKCdmcmVkJyk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGZyZWQnXG4gICAgICpcbiAgICAgKiAvLyBQYXJ0aWFsbHkgYXBwbGllZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgKiB2YXIgZ3JlZXRGcmVkID0gXy5wYXJ0aWFsKGdyZWV0LCBfLCAnZnJlZCcpO1xuICAgICAqIGdyZWV0RnJlZCgnaGknKTtcbiAgICAgKiAvLyA9PiAnaGkgZnJlZCdcbiAgICAgKi9cbiAgICB2YXIgcGFydGlhbCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIHBhcnRpYWxzKSB7XG4gICAgICB2YXIgaG9sZGVycyA9IHJlcGxhY2VIb2xkZXJzKHBhcnRpYWxzLCBnZXRIb2xkZXIocGFydGlhbCkpO1xuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9QQVJUSUFMX0ZMQUcsIHVuZGVmaW5lZCwgcGFydGlhbHMsIGhvbGRlcnMpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5wYXJ0aWFsYCBleGNlcHQgdGhhdCBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHNcbiAgICAgKiBhcmUgYXBwZW5kZWQgdG8gdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5wYXJ0aWFsUmlnaHQucGxhY2Vob2xkZXJgIHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBgX2AgaW4gbW9ub2xpdGhpY1xuICAgICAqIGJ1aWxkcywgbWF5IGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IG9mIHBhcnRpYWxseVxuICAgICAqIGFwcGxpZWQgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcGFydGlhbGx5IGFwcGx5IGFyZ3VtZW50cyB0by5cbiAgICAgKiBAcGFyYW0gey4uLip9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBwYXJ0aWFsbHkgYXBwbGllZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZ3JlZXQoZ3JlZXRpbmcsIG5hbWUpIHtcbiAgICAgKiAgIHJldHVybiBncmVldGluZyArICcgJyArIG5hbWU7XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGdyZWV0RnJlZCA9IF8ucGFydGlhbFJpZ2h0KGdyZWV0LCAnZnJlZCcpO1xuICAgICAqIGdyZWV0RnJlZCgnaGknKTtcbiAgICAgKiAvLyA9PiAnaGkgZnJlZCdcbiAgICAgKlxuICAgICAqIC8vIFBhcnRpYWxseSBhcHBsaWVkIHdpdGggcGxhY2Vob2xkZXJzLlxuICAgICAqIHZhciBzYXlIZWxsb1RvID0gXy5wYXJ0aWFsUmlnaHQoZ3JlZXQsICdoZWxsbycsIF8pO1xuICAgICAqIHNheUhlbGxvVG8oJ2ZyZWQnKTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gZnJlZCdcbiAgICAgKi9cbiAgICB2YXIgcGFydGlhbFJpZ2h0ID0gYmFzZVJlc3QoZnVuY3Rpb24oZnVuYywgcGFydGlhbHMpIHtcbiAgICAgIHZhciBob2xkZXJzID0gcmVwbGFjZUhvbGRlcnMocGFydGlhbHMsIGdldEhvbGRlcihwYXJ0aWFsUmlnaHQpKTtcbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGZ1bmMsIFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHLCB1bmRlZmluZWQsIHBhcnRpYWxzLCBob2xkZXJzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggYXJndW1lbnRzIGFycmFuZ2VkIGFjY29yZGluZ1xuICAgICAqIHRvIHRoZSBzcGVjaWZpZWQgYGluZGV4ZXNgIHdoZXJlIHRoZSBhcmd1bWVudCB2YWx1ZSBhdCB0aGUgZmlyc3QgaW5kZXggaXNcbiAgICAgKiBwcm92aWRlZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQsIHRoZSBhcmd1bWVudCB2YWx1ZSBhdCB0aGUgc2Vjb25kIGluZGV4IGlzXG4gICAgICogcHJvdmlkZWQgYXMgdGhlIHNlY29uZCBhcmd1bWVudCwgYW5kIHNvIG9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVhcnJhbmdlIGFyZ3VtZW50cyBmb3IuXG4gICAgICogQHBhcmFtIHsuLi4obnVtYmVyfG51bWJlcltdKX0gaW5kZXhlcyBUaGUgYXJyYW5nZWQgYXJndW1lbnQgaW5kZXhlcy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHJlYXJnZWQgPSBfLnJlYXJnKGZ1bmN0aW9uKGEsIGIsIGMpIHtcbiAgICAgKiAgIHJldHVybiBbYSwgYiwgY107XG4gICAgICogfSwgWzIsIDAsIDFdKTtcbiAgICAgKlxuICAgICAqIHJlYXJnZWQoJ2InLCAnYycsICdhJylcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYicsICdjJ11cbiAgICAgKi9cbiAgICB2YXIgcmVhcmcgPSBmbGF0UmVzdChmdW5jdGlvbihmdW5jLCBpbmRleGVzKSB7XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBXUkFQX1JFQVJHX0ZMQUcsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGluZGV4ZXMpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgdGhlXG4gICAgICogY3JlYXRlZCBmdW5jdGlvbiBhbmQgYXJndW1lbnRzIGZyb20gYHN0YXJ0YCBhbmQgYmV5b25kIHByb3ZpZGVkIGFzXG4gICAgICogYW4gYXJyYXkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb24gdGhlXG4gICAgICogW3Jlc3QgcGFyYW1ldGVyXShodHRwczovL21kbi5pby9yZXN0X3BhcmFtZXRlcnMpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBzYXkgPSBfLnJlc3QoZnVuY3Rpb24od2hhdCwgbmFtZXMpIHtcbiAgICAgKiAgIHJldHVybiB3aGF0ICsgJyAnICsgXy5pbml0aWFsKG5hbWVzKS5qb2luKCcsICcpICtcbiAgICAgKiAgICAgKF8uc2l6ZShuYW1lcykgPiAxID8gJywgJiAnIDogJycpICsgXy5sYXN0KG5hbWVzKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIHNheSgnaGVsbG8nLCAnZnJlZCcsICdiYXJuZXknLCAncGViYmxlcycpO1xuICAgICAqIC8vID0+ICdoZWxsbyBmcmVkLCBiYXJuZXksICYgcGViYmxlcydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXN0KGZ1bmMsIHN0YXJ0KSB7XG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICBzdGFydCA9IHN0YXJ0ID09PSB1bmRlZmluZWQgPyBzdGFydCA6IHRvSW50ZWdlcihzdGFydCk7XG4gICAgICByZXR1cm4gYmFzZVJlc3QoZnVuYywgc3RhcnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZVxuICAgICAqIGNyZWF0ZSBmdW5jdGlvbiBhbmQgYW4gYXJyYXkgb2YgYXJndW1lbnRzIG11Y2ggbGlrZVxuICAgICAqIFtgRnVuY3Rpb24jYXBwbHlgXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5KS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGVcbiAgICAgKiBbc3ByZWFkIG9wZXJhdG9yXShodHRwczovL21kbi5pby9zcHJlYWRfb3BlcmF0b3IpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMi4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gc3ByZWFkIGFyZ3VtZW50cyBvdmVyLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSBzcHJlYWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBzYXkgPSBfLnNwcmVhZChmdW5jdGlvbih3aG8sIHdoYXQpIHtcbiAgICAgKiAgIHJldHVybiB3aG8gKyAnIHNheXMgJyArIHdoYXQ7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBzYXkoWydmcmVkJywgJ2hlbGxvJ10pO1xuICAgICAqIC8vID0+ICdmcmVkIHNheXMgaGVsbG8nXG4gICAgICpcbiAgICAgKiB2YXIgbnVtYmVycyA9IFByb21pc2UuYWxsKFtcbiAgICAgKiAgIFByb21pc2UucmVzb2x2ZSg0MCksXG4gICAgICogICBQcm9taXNlLnJlc29sdmUoMzYpXG4gICAgICogXSk7XG4gICAgICpcbiAgICAgKiBudW1iZXJzLnRoZW4oXy5zcHJlYWQoZnVuY3Rpb24oeCwgeSkge1xuICAgICAqICAgcmV0dXJuIHggKyB5O1xuICAgICAqIH0pKTtcbiAgICAgKiAvLyA9PiBhIFByb21pc2Ugb2YgNzZcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzcHJlYWQoZnVuYywgc3RhcnQpIHtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHN0YXJ0ID0gc3RhcnQgPT0gbnVsbCA/IDAgOiBuYXRpdmVNYXgodG9JbnRlZ2VyKHN0YXJ0KSwgMCk7XG4gICAgICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICAgICAgICB2YXIgYXJyYXkgPSBhcmdzW3N0YXJ0XSxcbiAgICAgICAgICAgIG90aGVyQXJncyA9IGNhc3RTbGljZShhcmdzLCAwLCBzdGFydCk7XG5cbiAgICAgICAgaWYgKGFycmF5KSB7XG4gICAgICAgICAgYXJyYXlQdXNoKG90aGVyQXJncywgYXJyYXkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcHBseShmdW5jLCB0aGlzLCBvdGhlckFyZ3MpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHRocm90dGxlZCBmdW5jdGlvbiB0aGF0IG9ubHkgaW52b2tlcyBgZnVuY2AgYXQgbW9zdCBvbmNlIHBlclxuICAgICAqIGV2ZXJ5IGB3YWl0YCBtaWxsaXNlY29uZHMuIFRoZSB0aHJvdHRsZWQgZnVuY3Rpb24gY29tZXMgd2l0aCBhIGBjYW5jZWxgXG4gICAgICogbWV0aG9kIHRvIGNhbmNlbCBkZWxheWVkIGBmdW5jYCBpbnZvY2F0aW9ucyBhbmQgYSBgZmx1c2hgIG1ldGhvZCB0b1xuICAgICAqIGltbWVkaWF0ZWx5IGludm9rZSB0aGVtLiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYFxuICAgICAqIHNob3VsZCBiZSBpbnZva2VkIG9uIHRoZSBsZWFkaW5nIGFuZC9vciB0cmFpbGluZyBlZGdlIG9mIHRoZSBgd2FpdGBcbiAgICAgKiB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWQgd2l0aCB0aGUgbGFzdCBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlXG4gICAgICogdGhyb3R0bGVkIGZ1bmN0aW9uLiBTdWJzZXF1ZW50IGNhbGxzIHRvIHRoZSB0aHJvdHRsZWQgZnVuY3Rpb24gcmV0dXJuIHRoZVxuICAgICAqIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2AgaW52b2NhdGlvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAgICAgKiBpbnZva2VkIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0IG9ubHkgaWYgdGhlIHRocm90dGxlZCBmdW5jdGlvblxuICAgICAqIGlzIGludm9rZWQgbW9yZSB0aGFuIG9uY2UgZHVyaW5nIHRoZSBgd2FpdGAgdGltZW91dC5cbiAgICAgKlxuICAgICAqIElmIGB3YWl0YCBpcyBgMGAgYW5kIGBsZWFkaW5nYCBpcyBgZmFsc2VgLCBgZnVuY2AgaW52b2NhdGlvbiBpcyBkZWZlcnJlZFxuICAgICAqIHVudGlsIHRvIHRoZSBuZXh0IHRpY2ssIHNpbWlsYXIgdG8gYHNldFRpbWVvdXRgIHdpdGggYSB0aW1lb3V0IG9mIGAwYC5cbiAgICAgKlxuICAgICAqIFNlZSBbRGF2aWQgQ29yYmFjaG8ncyBhcnRpY2xlXShodHRwczovL2Nzcy10cmlja3MuY29tL2RlYm91bmNpbmctdGhyb3R0bGluZy1leHBsYWluZWQtZXhhbXBsZXMvKVxuICAgICAqIGZvciBkZXRhaWxzIG92ZXIgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYF8udGhyb3R0bGVgIGFuZCBgXy5kZWJvdW5jZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB0aHJvdHRsZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gdGhyb3R0bGUgaW52b2NhdGlvbnMgdG8uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPXt9XSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sZWFkaW5nPXRydWVdXG4gICAgICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIGxlYWRpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnRyYWlsaW5nPXRydWVdXG4gICAgICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgdGhyb3R0bGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBBdm9pZCBleGNlc3NpdmVseSB1cGRhdGluZyB0aGUgcG9zaXRpb24gd2hpbGUgc2Nyb2xsaW5nLlxuICAgICAqIGpRdWVyeSh3aW5kb3cpLm9uKCdzY3JvbGwnLCBfLnRocm90dGxlKHVwZGF0ZVBvc2l0aW9uLCAxMDApKTtcbiAgICAgKlxuICAgICAqIC8vIEludm9rZSBgcmVuZXdUb2tlbmAgd2hlbiB0aGUgY2xpY2sgZXZlbnQgaXMgZmlyZWQsIGJ1dCBub3QgbW9yZSB0aGFuIG9uY2UgZXZlcnkgNSBtaW51dGVzLlxuICAgICAqIHZhciB0aHJvdHRsZWQgPSBfLnRocm90dGxlKHJlbmV3VG9rZW4sIDMwMDAwMCwgeyAndHJhaWxpbmcnOiBmYWxzZSB9KTtcbiAgICAgKiBqUXVlcnkoZWxlbWVudCkub24oJ2NsaWNrJywgdGhyb3R0bGVkKTtcbiAgICAgKlxuICAgICAqIC8vIENhbmNlbCB0aGUgdHJhaWxpbmcgdGhyb3R0bGVkIGludm9jYXRpb24uXG4gICAgICogalF1ZXJ5KHdpbmRvdykub24oJ3BvcHN0YXRlJywgdGhyb3R0bGVkLmNhbmNlbCk7XG4gICAgICovXG4gICAgZnVuY3Rpb24gdGhyb3R0bGUoZnVuYywgd2FpdCwgb3B0aW9ucykge1xuICAgICAgdmFyIGxlYWRpbmcgPSB0cnVlLFxuICAgICAgICAgIHRyYWlsaW5nID0gdHJ1ZTtcblxuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgIGxlYWRpbmcgPSAnbGVhZGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy5sZWFkaW5nIDogbGVhZGluZztcbiAgICAgICAgdHJhaWxpbmcgPSAndHJhaWxpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMudHJhaWxpbmcgOiB0cmFpbGluZztcbiAgICAgIH1cbiAgICAgIHJldHVybiBkZWJvdW5jZShmdW5jLCB3YWl0LCB7XG4gICAgICAgICdsZWFkaW5nJzogbGVhZGluZyxcbiAgICAgICAgJ21heFdhaXQnOiB3YWl0LFxuICAgICAgICAndHJhaWxpbmcnOiB0cmFpbGluZ1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB1cCB0byBvbmUgYXJndW1lbnQsIGlnbm9yaW5nIGFueVxuICAgICAqIGFkZGl0aW9uYWwgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm1hcChbJzYnLCAnOCcsICcxMCddLCBfLnVuYXJ5KHBhcnNlSW50KSk7XG4gICAgICogLy8gPT4gWzYsIDgsIDEwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuYXJ5KGZ1bmMpIHtcbiAgICAgIHJldHVybiBhcnkoZnVuYywgMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcHJvdmlkZXMgYHZhbHVlYCB0byBgd3JhcHBlcmAgYXMgaXRzIGZpcnN0XG4gICAgICogYXJndW1lbnQuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgZnVuY3Rpb24gYXJlIGFwcGVuZGVkXG4gICAgICogdG8gdGhvc2UgcHJvdmlkZWQgdG8gdGhlIGB3cmFwcGVyYC4gVGhlIHdyYXBwZXIgaXMgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2BcbiAgICAgKiBiaW5kaW5nIG9mIHRoZSBjcmVhdGVkIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbd3JhcHBlcj1pZGVudGl0eV0gVGhlIHdyYXBwZXIgZnVuY3Rpb24uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBwID0gXy53cmFwKF8uZXNjYXBlLCBmdW5jdGlvbihmdW5jLCB0ZXh0KSB7XG4gICAgICogICByZXR1cm4gJzxwPicgKyBmdW5jKHRleHQpICsgJzwvcD4nO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogcCgnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiAnPHA+ZnJlZCwgYmFybmV5LCAmYW1wOyBwZWJibGVzPC9wPidcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwKHZhbHVlLCB3cmFwcGVyKSB7XG4gICAgICByZXR1cm4gcGFydGlhbChjYXN0RnVuY3Rpb24od3JhcHBlciksIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDYXN0cyBgdmFsdWVgIGFzIGFuIGFycmF5IGlmIGl0J3Mgbm90IG9uZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjQuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNhc3QgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY2FzdEFycmF5KDEpO1xuICAgICAqIC8vID0+IFsxXVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkoeyAnYSc6IDEgfSk7XG4gICAgICogLy8gPT4gW3sgJ2EnOiAxIH1dXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheSgnYWJjJyk7XG4gICAgICogLy8gPT4gWydhYmMnXVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkobnVsbCk7XG4gICAgICogLy8gPT4gW251bGxdXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheSh1bmRlZmluZWQpO1xuICAgICAqIC8vID0+IFt1bmRlZmluZWRdXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheSgpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMiwgM107XG4gICAgICogY29uc29sZS5sb2coXy5jYXN0QXJyYXkoYXJyYXkpID09PSBhcnJheSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhc3RBcnJheSgpIHtcbiAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgdmFsdWUgPSBhcmd1bWVudHNbMF07XG4gICAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNoYWxsb3cgY2xvbmUgb2YgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uIHRoZVxuICAgICAqIFtzdHJ1Y3R1cmVkIGNsb25lIGFsZ29yaXRobV0oaHR0cHM6Ly9tZG4uaW8vU3RydWN0dXJlZF9jbG9uZV9hbGdvcml0aG0pXG4gICAgICogYW5kIHN1cHBvcnRzIGNsb25pbmcgYXJyYXlzLCBhcnJheSBidWZmZXJzLCBib29sZWFucywgZGF0ZSBvYmplY3RzLCBtYXBzLFxuICAgICAqIG51bWJlcnMsIGBPYmplY3RgIG9iamVjdHMsIHJlZ2V4ZXMsIHNldHMsIHN0cmluZ3MsIHN5bWJvbHMsIGFuZCB0eXBlZFxuICAgICAqIGFycmF5cy4gVGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnRpZXMgb2YgYGFyZ3VtZW50c2Agb2JqZWN0cyBhcmUgY2xvbmVkXG4gICAgICogYXMgcGxhaW4gb2JqZWN0cy4gQW4gZW1wdHkgb2JqZWN0IGlzIHJldHVybmVkIGZvciB1bmNsb25lYWJsZSB2YWx1ZXMgc3VjaFxuICAgICAqIGFzIGVycm9yIG9iamVjdHMsIGZ1bmN0aW9ucywgRE9NIG5vZGVzLCBhbmQgV2Vha01hcHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gICAgICogQHNlZSBfLmNsb25lRGVlcFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICdhJzogMSB9LCB7ICdiJzogMiB9XTtcbiAgICAgKlxuICAgICAqIHZhciBzaGFsbG93ID0gXy5jbG9uZShvYmplY3RzKTtcbiAgICAgKiBjb25zb2xlLmxvZyhzaGFsbG93WzBdID09PSBvYmplY3RzWzBdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmUodmFsdWUpIHtcbiAgICAgIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX1NZTUJPTFNfRkxBRyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIGNsb25lZCB2YWx1ZS4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsXG4gICAgICogY2xvbmluZyBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGhcbiAgICAgKiB1cCB0byBmb3VyIGFyZ3VtZW50czsgKHZhbHVlIFssIGluZGV4fGtleSwgb2JqZWN0LCBzdGFja10pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjbG9uaW5nLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gICAgICogQHNlZSBfLmNsb25lRGVlcFdpdGhcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcih2YWx1ZSkge1xuICAgICAqICAgaWYgKF8uaXNFbGVtZW50KHZhbHVlKSkge1xuICAgICAqICAgICByZXR1cm4gdmFsdWUuY2xvbmVOb2RlKGZhbHNlKTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgZWwgPSBfLmNsb25lV2l0aChkb2N1bWVudC5ib2R5LCBjdXN0b21pemVyKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGVsID09PSBkb2N1bWVudC5ib2R5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqIGNvbnNvbGUubG9nKGVsLm5vZGVOYW1lKTtcbiAgICAgKiAvLyA9PiAnQk9EWSdcbiAgICAgKiBjb25zb2xlLmxvZyhlbC5jaGlsZE5vZGVzLmxlbmd0aCk7XG4gICAgICogLy8gPT4gMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lV2l0aCh2YWx1ZSwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfU1lNQk9MU19GTEFHLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmNsb25lYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBjbG9uZXMgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmVjdXJzaXZlbHkgY2xvbmUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGRlZXAgY2xvbmVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5jbG9uZVxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICdhJzogMSB9LCB7ICdiJzogMiB9XTtcbiAgICAgKlxuICAgICAqIHZhciBkZWVwID0gXy5jbG9uZURlZXAob2JqZWN0cyk7XG4gICAgICogY29uc29sZS5sb2coZGVlcFswXSA9PT0gb2JqZWN0c1swXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZURlZXAodmFsdWUpIHtcbiAgICAgIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX0RFRVBfRkxBRyB8IENMT05FX1NZTUJPTFNfRkxBRyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZVdpdGhgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGNsb25lcyBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZWN1cnNpdmVseSBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjbG9uaW5nLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBkZWVwIGNsb25lZCB2YWx1ZS5cbiAgICAgKiBAc2VlIF8uY2xvbmVXaXRoXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIodmFsdWUpIHtcbiAgICAgKiAgIGlmIChfLmlzRWxlbWVudCh2YWx1ZSkpIHtcbiAgICAgKiAgICAgcmV0dXJuIHZhbHVlLmNsb25lTm9kZSh0cnVlKTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgZWwgPSBfLmNsb25lRGVlcFdpdGgoZG9jdW1lbnQuYm9keSwgY3VzdG9taXplcik7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhlbCA9PT0gZG9jdW1lbnQuYm9keSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKiBjb25zb2xlLmxvZyhlbC5ub2RlTmFtZSk7XG4gICAgICogLy8gPT4gJ0JPRFknXG4gICAgICogY29uc29sZS5sb2coZWwuY2hpbGROb2Rlcy5sZW5ndGgpO1xuICAgICAqIC8vID0+IDIwXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVEZWVwV2l0aCh2YWx1ZSwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfREVFUF9GTEFHIHwgQ0xPTkVfU1lNQk9MU19GTEFHLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYG9iamVjdGAgY29uZm9ybXMgdG8gYHNvdXJjZWAgYnkgaW52b2tpbmcgdGhlIHByZWRpY2F0ZVxuICAgICAqIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSB2YWx1ZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgZXF1aXZhbGVudCB0byBgXy5jb25mb3Jtc2Agd2hlbiBgc291cmNlYCBpc1xuICAgICAqIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTQuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHByZWRpY2F0ZXMgdG8gY29uZm9ybSB0by5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgY29uZm9ybXMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAgICAgKlxuICAgICAqIF8uY29uZm9ybXNUbyhvYmplY3QsIHsgJ2InOiBmdW5jdGlvbihuKSB7IHJldHVybiBuID4gMTsgfSB9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmNvbmZvcm1zVG8ob2JqZWN0LCB7ICdiJzogZnVuY3Rpb24obikgeyByZXR1cm4gbiA+IDI7IH0gfSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25mb3Jtc1RvKG9iamVjdCwgc291cmNlKSB7XG4gICAgICByZXR1cm4gc291cmNlID09IG51bGwgfHwgYmFzZUNvbmZvcm1zVG8ob2JqZWN0LCBzb3VyY2UsIGtleXMoc291cmNlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgYVxuICAgICAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGVxdWl2YWxlbnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAgICAgKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICAgICAqXG4gICAgICogXy5lcShvYmplY3QsIG9iamVjdCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5lcShvYmplY3QsIG90aGVyKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5lcSgnYScsICdhJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5lcSgnYScsIE9iamVjdCgnYScpKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5lcShOYU4sIE5hTik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVxKHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSBvdGhlciB8fCAodmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy45LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gYG90aGVyYCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBzZWUgXy5sdFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmd0KDMsIDEpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uZ3QoMywgMyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uZ3QoMSwgMyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgZ3QgPSBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKGJhc2VHdCk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYG90aGVyYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjkuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0b1xuICAgICAqICBgb3RoZXJgLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQHNlZSBfLmx0ZVxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmd0ZSgzLCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmd0ZSgzLCAzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmd0ZSgxLCAzKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBndGUgPSBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKGZ1bmN0aW9uKHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIHZhbHVlID49IG90aGVyO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FyZ3VtZW50cyhbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzQXJndW1lbnRzID0gYmFzZUlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID8gYmFzZUlzQXJndW1lbnRzIDogZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjYWxsZWUnKSAmJlxuICAgICAgICAhcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheWAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheSgnYWJjJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheShfLm5vb3ApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlCdWZmZXJgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjMuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXkgYnVmZmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUJ1ZmZlcihuZXcgQXJyYXlCdWZmZXIoMikpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUJ1ZmZlcihuZXcgQXJyYXkoMikpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzQXJyYXlCdWZmZXIgPSBub2RlSXNBcnJheUJ1ZmZlciA/IGJhc2VVbmFyeShub2RlSXNBcnJheUJ1ZmZlcikgOiBiYXNlSXNBcnJheUJ1ZmZlcjtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UuIEEgdmFsdWUgaXMgY29uc2lkZXJlZCBhcnJheS1saWtlIGlmIGl0J3NcbiAgICAgKiBub3QgYSBmdW5jdGlvbiBhbmQgaGFzIGEgYHZhbHVlLmxlbmd0aGAgdGhhdCdzIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yXG4gICAgICogZXF1YWwgdG8gYDBgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE51bWJlci5NQVhfU0FGRV9JTlRFR0VSYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlKCdhYmMnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlKF8ubm9vcCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0FycmF5TGlrZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhaXNGdW5jdGlvbih2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0FycmF5TGlrZWAgZXhjZXB0IHRoYXQgaXQgYWxzbyBjaGVja3MgaWYgYHZhbHVlYFxuICAgICAqIGlzIGFuIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXktbGlrZSBvYmplY3QsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZU9iamVjdChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2VPYmplY3QoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZU9iamVjdCgnYWJjJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2VPYmplY3QoXy5ub29wKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBpc0FycmF5TGlrZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGJvb2xlYW4gcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBib29sZWFuLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNCb29sZWFuKGZhbHNlKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQm9vbGVhbihudWxsKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzQm9vbGVhbih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSBmYWxzZSB8fFxuICAgICAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBib29sVGFnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjMuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0J1ZmZlcihuZXcgQnVmZmVyKDIpKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQnVmZmVyKG5ldyBVaW50OEFycmF5KDIpKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0J1ZmZlciA9IG5hdGl2ZUlzQnVmZmVyIHx8IHN0dWJGYWxzZTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRGF0ZWAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGRhdGUgb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNEYXRlKG5ldyBEYXRlKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRGF0ZSgnTW9uIEFwcmlsIDIzIDIwMTInKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0RhdGUgPSBub2RlSXNEYXRlID8gYmFzZVVuYXJ5KG5vZGVJc0RhdGUpIDogYmFzZUlzRGF0ZTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIERPTSBlbGVtZW50LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIERPTSBlbGVtZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNFbGVtZW50KGRvY3VtZW50LmJvZHkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNFbGVtZW50KCc8Ym9keT4nKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRWxlbWVudCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgdmFsdWUubm9kZVR5cGUgPT09IDEgJiYgIWlzUGxhaW5PYmplY3QodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFuIGVtcHR5IG9iamVjdCwgY29sbGVjdGlvbiwgbWFwLCBvciBzZXQuXG4gICAgICpcbiAgICAgKiBPYmplY3RzIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBubyBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWRcbiAgICAgKiBwcm9wZXJ0aWVzLlxuICAgICAqXG4gICAgICogQXJyYXktbGlrZSB2YWx1ZXMgc3VjaCBhcyBgYXJndW1lbnRzYCBvYmplY3RzLCBhcnJheXMsIGJ1ZmZlcnMsIHN0cmluZ3MsIG9yXG4gICAgICogalF1ZXJ5LWxpa2UgY29sbGVjdGlvbnMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIGEgYGxlbmd0aGAgb2YgYDBgLlxuICAgICAqIFNpbWlsYXJseSwgbWFwcyBhbmQgc2V0cyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgYSBgc2l6ZWAgb2YgYDBgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBlbXB0eSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRW1wdHkobnVsbCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0VtcHR5KHRydWUpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNFbXB0eSgxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRW1wdHkoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0VtcHR5KHsgJ2EnOiAxIH0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkge1xuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoaXNBcnJheUxpa2UodmFsdWUpICYmXG4gICAgICAgICAgKGlzQXJyYXkodmFsdWUpIHx8IHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUuc3BsaWNlID09ICdmdW5jdGlvbicgfHxcbiAgICAgICAgICAgIGlzQnVmZmVyKHZhbHVlKSB8fCBpc1R5cGVkQXJyYXkodmFsdWUpIHx8IGlzQXJndW1lbnRzKHZhbHVlKSkpIHtcbiAgICAgICAgcmV0dXJuICF2YWx1ZS5sZW5ndGg7XG4gICAgICB9XG4gICAgICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKTtcbiAgICAgIGlmICh0YWcgPT0gbWFwVGFnIHx8IHRhZyA9PSBzZXRUYWcpIHtcbiAgICAgICAgcmV0dXJuICF2YWx1ZS5zaXplO1xuICAgICAgfVxuICAgICAgaWYgKGlzUHJvdG90eXBlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gIWJhc2VLZXlzKHZhbHVlKS5sZW5ndGg7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIGEgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmVcbiAgICAgKiBlcXVpdmFsZW50LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIHN1cHBvcnRzIGNvbXBhcmluZyBhcnJheXMsIGFycmF5IGJ1ZmZlcnMsIGJvb2xlYW5zLFxuICAgICAqIGRhdGUgb2JqZWN0cywgZXJyb3Igb2JqZWN0cywgbWFwcywgbnVtYmVycywgYE9iamVjdGAgb2JqZWN0cywgcmVnZXhlcyxcbiAgICAgKiBzZXRzLCBzdHJpbmdzLCBzeW1ib2xzLCBhbmQgdHlwZWQgYXJyYXlzLiBgT2JqZWN0YCBvYmplY3RzIGFyZSBjb21wYXJlZFxuICAgICAqIGJ5IHRoZWlyIG93biwgbm90IGluaGVyaXRlZCwgZW51bWVyYWJsZSBwcm9wZXJ0aWVzLiBGdW5jdGlvbnMgYW5kIERPTVxuICAgICAqIG5vZGVzIGFyZSBjb21wYXJlZCBieSBzdHJpY3QgZXF1YWxpdHksIGkuZS4gYD09PWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAgICAgKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICAgICAqXG4gICAgICogXy5pc0VxdWFsKG9iamVjdCwgb3RoZXIpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIG9iamVjdCA9PT0gb3RoZXI7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0VxdWFsKHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0VxdWFsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gY29tcGFyZSB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgLCBjb21wYXJpc29uc1xuICAgICAqIGFyZSBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGggdXAgdG9cbiAgICAgKiBzaXggYXJndW1lbnRzOiAob2JqVmFsdWUsIG90aFZhbHVlIFssIGluZGV4fGtleSwgb2JqZWN0LCBvdGhlciwgc3RhY2tdKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGlzR3JlZXRpbmcodmFsdWUpIHtcbiAgICAgKiAgIHJldHVybiAvXmgoPzppfGVsbG8pJC8udGVzdCh2YWx1ZSk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgb3RoVmFsdWUpIHtcbiAgICAgKiAgIGlmIChpc0dyZWV0aW5nKG9ialZhbHVlKSAmJiBpc0dyZWV0aW5nKG90aFZhbHVlKSkge1xuICAgICAqICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbJ2hlbGxvJywgJ2dvb2RieWUnXTtcbiAgICAgKiB2YXIgb3RoZXIgPSBbJ2hpJywgJ2dvb2RieWUnXTtcbiAgICAgKlxuICAgICAqIF8uaXNFcXVhbFdpdGgoYXJyYXksIG90aGVyLCBjdXN0b21pemVyKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNFcXVhbFdpdGgodmFsdWUsIG90aGVyLCBjdXN0b21pemVyKSB7XG4gICAgICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gICAgICB2YXIgcmVzdWx0ID0gY3VzdG9taXplciA/IGN1c3RvbWl6ZXIodmFsdWUsIG90aGVyKSA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiByZXN1bHQgPT09IHVuZGVmaW5lZCA/IGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlciwgdW5kZWZpbmVkLCBjdXN0b21pemVyKSA6ICEhcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFuIGBFcnJvcmAsIGBFdmFsRXJyb3JgLCBgUmFuZ2VFcnJvcmAsIGBSZWZlcmVuY2VFcnJvcmAsXG4gICAgICogYFN5bnRheEVycm9yYCwgYFR5cGVFcnJvcmAsIG9yIGBVUklFcnJvcmAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBlcnJvciBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0Vycm9yKG5ldyBFcnJvcik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Vycm9yKEVycm9yKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRXJyb3IodmFsdWUpIHtcbiAgICAgIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gICAgICByZXR1cm4gdGFnID09IGVycm9yVGFnIHx8IHRhZyA9PSBkb21FeGNUYWcgfHxcbiAgICAgICAgKHR5cGVvZiB2YWx1ZS5tZXNzYWdlID09ICdzdHJpbmcnICYmIHR5cGVvZiB2YWx1ZS5uYW1lID09ICdzdHJpbmcnICYmICFpc1BsYWluT2JqZWN0KHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBmaW5pdGUgcHJpbWl0aXZlIG51bWJlci5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgTnVtYmVyLmlzRmluaXRlYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzRmluaXRlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmaW5pdGUgbnVtYmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNGaW5pdGUoMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRmluaXRlKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0Zpbml0ZSgnMycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNGaW5pdGUodmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiYgbmF0aXZlSXNGaW5pdGUodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRnVuY3Rpb25gIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmdW5jdGlvbiwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRnVuY3Rpb24oXyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Z1bmN0aW9uKC9hYmMvKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAgICAgLy8gaW4gU2FmYXJpIDkgd2hpY2ggcmV0dXJucyAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXlzIGFuZCBvdGhlciBjb25zdHJ1Y3RvcnMuXG4gICAgICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gICAgICByZXR1cm4gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZyB8fCB0YWcgPT0gYXN5bmNUYWcgfHwgdGFnID09IHByb3h5VGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFuIGludGVnZXIuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYE51bWJlci5pc0ludGVnZXJgXShodHRwczovL21kbi5pby9OdW1iZXIvaXNJbnRlZ2VyKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gaW50ZWdlciwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzSW50ZWdlcigzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0ludGVnZXIoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzSW50ZWdlcignMycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNJbnRlZ2VyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmIHZhbHVlID09IHRvSW50ZWdlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGxlbmd0aC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gICAgICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBsZW5ndGgsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0xlbmd0aCgzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTGVuZ3RoKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzTGVuZ3RoKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0xlbmd0aCgnMycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICAgICAgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHRoZVxuICAgICAqIFtsYW5ndWFnZSB0eXBlXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcylcbiAgICAgKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0KHt9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdChfLm5vb3ApO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3QobnVsbCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICAgICAqIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdExpa2Uoe30pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYE1hcGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMy4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG1hcCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTWFwKG5ldyBNYXApO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNNYXAobmV3IFdlYWtNYXApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzTWFwID0gbm9kZUlzTWFwID8gYmFzZVVuYXJ5KG5vZGVJc01hcCkgOiBiYXNlSXNNYXA7XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBhIHBhcnRpYWwgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gYG9iamVjdGAgYW5kIGBzb3VyY2VgIHRvXG4gICAgICogZGV0ZXJtaW5lIGlmIGBvYmplY3RgIGNvbnRhaW5zIGVxdWl2YWxlbnQgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGVxdWl2YWxlbnQgdG8gYF8ubWF0Y2hlc2Agd2hlbiBgc291cmNlYCBpc1xuICAgICAqIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqXG4gICAgICogUGFydGlhbCBjb21wYXJpc29ucyB3aWxsIG1hdGNoIGVtcHR5IGFycmF5IGFuZCBlbXB0eSBvYmplY3QgYHNvdXJjZWBcbiAgICAgKiB2YWx1ZXMgYWdhaW5zdCBhbnkgYXJyYXkgb3Igb2JqZWN0IHZhbHVlLCByZXNwZWN0aXZlbHkuIFNlZSBgXy5pc0VxdWFsYFxuICAgICAqIGZvciBhIGxpc3Qgb2Ygc3VwcG9ydGVkIHZhbHVlIGNvbXBhcmlzb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyIH07XG4gICAgICpcbiAgICAgKiBfLmlzTWF0Y2gob2JqZWN0LCB7ICdiJzogMiB9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTWF0Y2gob2JqZWN0LCB7ICdiJzogMSB9KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTWF0Y2gob2JqZWN0LCBzb3VyY2UpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT09IHNvdXJjZSB8fCBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgZ2V0TWF0Y2hEYXRhKHNvdXJjZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNNYXRjaGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgdmFsdWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYCwgY29tcGFyaXNvbnNcbiAgICAgKiBhcmUgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoIGZpdmVcbiAgICAgKiBhcmd1bWVudHM6IChvYmpWYWx1ZSwgc3JjVmFsdWUsIGluZGV4fGtleSwgb2JqZWN0LCBzb3VyY2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGlzR3JlZXRpbmcodmFsdWUpIHtcbiAgICAgKiAgIHJldHVybiAvXmgoPzppfGVsbG8pJC8udGVzdCh2YWx1ZSk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUpIHtcbiAgICAgKiAgIGlmIChpc0dyZWV0aW5nKG9ialZhbHVlKSAmJiBpc0dyZWV0aW5nKHNyY1ZhbHVlKSkge1xuICAgICAqICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnZ3JlZXRpbmcnOiAnaGVsbG8nIH07XG4gICAgICogdmFyIHNvdXJjZSA9IHsgJ2dyZWV0aW5nJzogJ2hpJyB9O1xuICAgICAqXG4gICAgICogXy5pc01hdGNoV2l0aChvYmplY3QsIHNvdXJjZSwgY3VzdG9taXplcik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTWF0Y2hXaXRoKG9iamVjdCwgc291cmNlLCBjdXN0b21pemVyKSB7XG4gICAgICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIGdldE1hdGNoRGF0YShzb3VyY2UpLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgTmFOYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgTnVtYmVyLmlzTmFOYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzTmFOKSBhbmQgaXMgbm90IHRoZSBzYW1lIGFzXG4gICAgICogZ2xvYmFsIFtgaXNOYU5gXShodHRwczovL21kbi5pby9pc05hTikgd2hpY2ggcmV0dXJucyBgdHJ1ZWAgZm9yXG4gICAgICogYHVuZGVmaW5lZGAgYW5kIG90aGVyIG5vbi1udW1iZXIgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgTmFOYCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTmFOKE5hTik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc05hTihuZXcgTnVtYmVyKE5hTikpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGlzTmFOKHVuZGVmaW5lZCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc05hTih1bmRlZmluZWQpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNOYU4odmFsdWUpIHtcbiAgICAgIC8vIEFuIGBOYU5gIHByaW1pdGl2ZSBpcyB0aGUgb25seSB2YWx1ZSB0aGF0IGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuXG4gICAgICAvLyBQZXJmb3JtIHRoZSBgdG9TdHJpbmdUYWdgIGNoZWNrIGZpcnN0IHRvIGF2b2lkIGVycm9ycyB3aXRoIHNvbWVcbiAgICAgIC8vIEFjdGl2ZVggb2JqZWN0cyBpbiBJRS5cbiAgICAgIHJldHVybiBpc051bWJlcih2YWx1ZSkgJiYgdmFsdWUgIT0gK3ZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcHJpc3RpbmUgbmF0aXZlIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGNhbid0IHJlbGlhYmx5IGRldGVjdCBuYXRpdmUgZnVuY3Rpb25zIGluIHRoZSBwcmVzZW5jZVxuICAgICAqIG9mIHRoZSBjb3JlLWpzIHBhY2thZ2UgYmVjYXVzZSBjb3JlLWpzIGNpcmN1bXZlbnRzIHRoaXMga2luZCBvZiBkZXRlY3Rpb24uXG4gICAgICogRGVzcGl0ZSBtdWx0aXBsZSByZXF1ZXN0cywgdGhlIGNvcmUtanMgbWFpbnRhaW5lciBoYXMgbWFkZSBpdCBjbGVhcjogYW55XG4gICAgICogYXR0ZW1wdCB0byBmaXggdGhlIGRldGVjdGlvbiB3aWxsIGJlIG9ic3RydWN0ZWQuIEFzIGEgcmVzdWx0LCB3ZSdyZSBsZWZ0XG4gICAgICogd2l0aCBsaXR0bGUgY2hvaWNlIGJ1dCB0byB0aHJvdyBhbiBlcnJvci4gVW5mb3J0dW5hdGVseSwgdGhpcyBhbHNvIGFmZmVjdHNcbiAgICAgKiBwYWNrYWdlcywgbGlrZSBbYmFiZWwtcG9seWZpbGxdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2JhYmVsLXBvbHlmaWxsKSxcbiAgICAgKiB3aGljaCByZWx5IG9uIGNvcmUtanMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNOYXRpdmUoQXJyYXkucHJvdG90eXBlLnB1c2gpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOYXRpdmUoXyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc05hdGl2ZSh2YWx1ZSkge1xuICAgICAgaWYgKGlzTWFza2FibGUodmFsdWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihDT1JFX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VJc05hdGl2ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYG51bGxgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgbnVsbGAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc051bGwobnVsbCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc051bGwodm9pZCAwKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTnVsbCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbnVsbGlzaCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTmlsKG51bGwpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOaWwodm9pZCAwKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTmlsKE5hTik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc05pbCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBOdW1iZXJgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVG8gZXhjbHVkZSBgSW5maW5pdHlgLCBgLUluZmluaXR5YCwgYW5kIGBOYU5gLCB3aGljaCBhcmVcbiAgICAgKiBjbGFzc2lmaWVkIGFzIG51bWJlcnMsIHVzZSB0aGUgYF8uaXNGaW5pdGVgIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBudW1iZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc051bWJlcigzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOdW1iZXIoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOdW1iZXIoJzMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInIHx8XG4gICAgICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IG51bWJlclRhZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIHRoYXQgaXMsIGFuIG9iamVjdCBjcmVhdGVkIGJ5IHRoZVxuICAgICAqIGBPYmplY3RgIGNvbnN0cnVjdG9yIG9yIG9uZSB3aXRoIGEgYFtbUHJvdG90eXBlXV1gIG9mIGBudWxsYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjguMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmlzUGxhaW5PYmplY3QobmV3IEZvbyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNQbGFpbk9iamVjdChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzUGxhaW5PYmplY3QoeyAneCc6IDAsICd5JzogMCB9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzUGxhaW5PYmplY3QoT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgICAgIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSB8fCBiYXNlR2V0VGFnKHZhbHVlKSAhPSBvYmplY3RUYWcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIHByb3RvID0gZ2V0UHJvdG90eXBlKHZhbHVlKTtcbiAgICAgIGlmIChwcm90byA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHZhciBDdG9yID0gaGFzT3duUHJvcGVydHkuY2FsbChwcm90bywgJ2NvbnN0cnVjdG9yJykgJiYgcHJvdG8uY29uc3RydWN0b3I7XG4gICAgICByZXR1cm4gdHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yIGluc3RhbmNlb2YgQ3RvciAmJlxuICAgICAgICBmdW5jVG9TdHJpbmcuY2FsbChDdG9yKSA9PSBvYmplY3RDdG9yU3RyaW5nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgUmVnRXhwYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcmVnZXhwLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNSZWdFeHAoL2FiYy8pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNSZWdFeHAoJy9hYmMvJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNSZWdFeHAgPSBub2RlSXNSZWdFeHAgPyBiYXNlVW5hcnkobm9kZUlzUmVnRXhwKSA6IGJhc2VJc1JlZ0V4cDtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgc2FmZSBpbnRlZ2VyLiBBbiBpbnRlZ2VyIGlzIHNhZmUgaWYgaXQncyBhbiBJRUVFLTc1NFxuICAgICAqIGRvdWJsZSBwcmVjaXNpb24gbnVtYmVyIHdoaWNoIGlzbid0IHRoZSByZXN1bHQgb2YgYSByb3VuZGVkIHVuc2FmZSBpbnRlZ2VyLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICogW2BOdW1iZXIuaXNTYWZlSW50ZWdlcmBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc1NhZmVJbnRlZ2VyKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzYWZlIGludGVnZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1NhZmVJbnRlZ2VyKDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNTYWZlSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc1NhZmVJbnRlZ2VyKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc1NhZmVJbnRlZ2VyKCczJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1NhZmVJbnRlZ2VyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNJbnRlZ2VyKHZhbHVlKSAmJiB2YWx1ZSA+PSAtTUFYX1NBRkVfSU5URUdFUiAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU2V0YCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2V0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNTZXQobmV3IFNldCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1NldChuZXcgV2Vha1NldCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNTZXQgPSBub2RlSXNTZXQgPyBiYXNlVW5hcnkobm9kZUlzU2V0KSA6IGJhc2VJc1NldDtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3RyaW5nYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN0cmluZywgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzU3RyaW5nKCdhYmMnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzU3RyaW5nKDEpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHxcbiAgICAgICAgKCFpc0FycmF5KHZhbHVlKSAmJiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN0cmluZ1RhZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTeW1ib2xgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3ltYm9sLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNTeW1ib2woU3ltYm9sLml0ZXJhdG9yKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzU3ltYm9sKCdhYmMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzU3ltYm9sKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzeW1ib2wnIHx8XG4gICAgICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN5bWJvbFRhZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNUeXBlZEFycmF5KG5ldyBVaW50OEFycmF5KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzVHlwZWRBcnJheShbXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNUeXBlZEFycmF5ID0gbm9kZUlzVHlwZWRBcnJheSA/IGJhc2VVbmFyeShub2RlSXNUeXBlZEFycmF5KSA6IGJhc2VJc1R5cGVkQXJyYXk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYHVuZGVmaW5lZGAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1VuZGVmaW5lZCh2b2lkIDApO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNVbmRlZmluZWQobnVsbCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1VuZGVmaW5lZCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBXZWFrTWFwYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgd2VhayBtYXAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1dlYWtNYXAobmV3IFdlYWtNYXApO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNXZWFrTWFwKG5ldyBNYXApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNXZWFrTWFwKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IHdlYWtNYXBUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBXZWFrU2V0YCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgd2VhayBzZXQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1dlYWtTZXQobmV3IFdlYWtTZXQpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNXZWFrU2V0KG5ldyBTZXQpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNXZWFrU2V0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSB3ZWFrU2V0VGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBgb3RoZXJgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIGBvdGhlcmAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAc2VlIF8uZ3RcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sdCgxLCAzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmx0KDMsIDMpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmx0KDMsIDEpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGx0ID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihiYXNlTHQpO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBvdGhlcmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy45LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG9cbiAgICAgKiAgYG90aGVyYCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBzZWUgXy5ndGVcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sdGUoMSwgMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5sdGUoMywgMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5sdGUoMywgMSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgbHRlID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihmdW5jdGlvbih2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA8PSBvdGhlcjtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYW4gYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9BcnJheSh7ICdhJzogMSwgJ2InOiAyIH0pO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogXy50b0FycmF5KCdhYmMnKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYicsICdjJ11cbiAgICAgKlxuICAgICAqIF8udG9BcnJheSgxKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqXG4gICAgICogXy50b0FycmF5KG51bGwpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9BcnJheSh2YWx1ZSkge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBpZiAoaXNBcnJheUxpa2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBpc1N0cmluZyh2YWx1ZSkgPyBzdHJpbmdUb0FycmF5KHZhbHVlKSA6IGNvcHlBcnJheSh2YWx1ZSk7XG4gICAgICB9XG4gICAgICBpZiAoc3ltSXRlcmF0b3IgJiYgdmFsdWVbc3ltSXRlcmF0b3JdKSB7XG4gICAgICAgIHJldHVybiBpdGVyYXRvclRvQXJyYXkodmFsdWVbc3ltSXRlcmF0b3JdKCkpO1xuICAgICAgfVxuICAgICAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSksXG4gICAgICAgICAgZnVuYyA9IHRhZyA9PSBtYXBUYWcgPyBtYXBUb0FycmF5IDogKHRhZyA9PSBzZXRUYWcgPyBzZXRUb0FycmF5IDogdmFsdWVzKTtcblxuICAgICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBmaW5pdGUgbnVtYmVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTIuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvRmluaXRlKDMuMik7XG4gICAgICogLy8gPT4gMy4yXG4gICAgICpcbiAgICAgKiBfLnRvRmluaXRlKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IDVlLTMyNFxuICAgICAqXG4gICAgICogXy50b0Zpbml0ZShJbmZpbml0eSk7XG4gICAgICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAgICAgKlxuICAgICAqIF8udG9GaW5pdGUoJzMuMicpO1xuICAgICAqIC8vID0+IDMuMlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvRmluaXRlKHZhbHVlKSB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogMDtcbiAgICAgIH1cbiAgICAgIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xuICAgICAgaWYgKHZhbHVlID09PSBJTkZJTklUWSB8fCB2YWx1ZSA9PT0gLUlORklOSVRZKSB7XG4gICAgICAgIHZhciBzaWduID0gKHZhbHVlIDwgMCA/IC0xIDogMSk7XG4gICAgICAgIHJldHVybiBzaWduICogTUFYX0lOVEVHRVI7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHZhbHVlID8gdmFsdWUgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYW4gaW50ZWdlci5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gICAgICogW2BUb0ludGVnZXJgXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9pbnRlZ2VyKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b0ludGVnZXIoMy4yKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLnRvSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiBfLnRvSW50ZWdlcihJbmZpbml0eSk7XG4gICAgICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAgICAgKlxuICAgICAqIF8udG9JbnRlZ2VyKCczLjInKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9JbnRlZ2VyKHZhbHVlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gdG9GaW5pdGUodmFsdWUpLFxuICAgICAgICAgIHJlbWFpbmRlciA9IHJlc3VsdCAlIDE7XG5cbiAgICAgIHJldHVybiByZXN1bHQgPT09IHJlc3VsdCA/IChyZW1haW5kZXIgPyByZXN1bHQgLSByZW1haW5kZXIgOiByZXN1bHQpIDogMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIgc3VpdGFibGUgZm9yIHVzZSBhcyB0aGUgbGVuZ3RoIG9mIGFuXG4gICAgICogYXJyYXktbGlrZSBvYmplY3QuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvTGVuZ3RoKDMuMik7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy50b0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiBfLnRvTGVuZ3RoKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiA0Mjk0OTY3Mjk1XG4gICAgICpcbiAgICAgKiBfLnRvTGVuZ3RoKCczLjInKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9MZW5ndGgodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA/IGJhc2VDbGFtcCh0b0ludGVnZXIodmFsdWUpLCAwLCBNQVhfQVJSQVlfTEVOR1RIKSA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIG51bWJlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9OdW1iZXIoMy4yKTtcbiAgICAgKiAvLyA9PiAzLjJcbiAgICAgKlxuICAgICAqIF8udG9OdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gNWUtMzI0XG4gICAgICpcbiAgICAgKiBfLnRvTnVtYmVyKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBJbmZpbml0eVxuICAgICAqXG4gICAgICogXy50b051bWJlcignMy4yJyk7XG4gICAgICogLy8gPT4gMy4yXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9OdW1iZXIodmFsdWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gTkFOO1xuICAgICAgfVxuICAgICAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICB2YXIgb3RoZXIgPSB0eXBlb2YgdmFsdWUudmFsdWVPZiA9PSAnZnVuY3Rpb24nID8gdmFsdWUudmFsdWVPZigpIDogdmFsdWU7XG4gICAgICAgIHZhbHVlID0gaXNPYmplY3Qob3RoZXIpID8gKG90aGVyICsgJycpIDogb3RoZXI7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogK3ZhbHVlO1xuICAgICAgfVxuICAgICAgdmFsdWUgPSBiYXNlVHJpbSh2YWx1ZSk7XG4gICAgICB2YXIgaXNCaW5hcnkgPSByZUlzQmluYXJ5LnRlc3QodmFsdWUpO1xuICAgICAgcmV0dXJuIChpc0JpbmFyeSB8fCByZUlzT2N0YWwudGVzdCh2YWx1ZSkpXG4gICAgICAgID8gZnJlZVBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCBpc0JpbmFyeSA/IDIgOiA4KVxuICAgICAgICA6IChyZUlzQmFkSGV4LnRlc3QodmFsdWUpID8gTkFOIDogK3ZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgcGxhaW4gb2JqZWN0IGZsYXR0ZW5pbmcgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nXG4gICAgICoga2V5ZWQgcHJvcGVydGllcyBvZiBgdmFsdWVgIHRvIG93biBwcm9wZXJ0aWVzIG9mIHRoZSBwbGFpbiBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29udmVydGVkIHBsYWluIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgbmV3IEZvbyk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICpcbiAgICAgKiBfLmFzc2lnbih7ICdhJzogMSB9LCBfLnRvUGxhaW5PYmplY3QobmV3IEZvbykpO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMyB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9QbGFpbk9iamVjdCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGNvcHlPYmplY3QodmFsdWUsIGtleXNJbih2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzYWZlIGludGVnZXIuIEEgc2FmZSBpbnRlZ2VyIGNhbiBiZSBjb21wYXJlZCBhbmRcbiAgICAgKiByZXByZXNlbnRlZCBjb3JyZWN0bHkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9TYWZlSW50ZWdlcigzLjIpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8udG9TYWZlSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiBfLnRvU2FmZUludGVnZXIoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IDkwMDcxOTkyNTQ3NDA5OTFcbiAgICAgKlxuICAgICAqIF8udG9TYWZlSW50ZWdlcignMy4yJyk7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvU2FmZUludGVnZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICA/IGJhc2VDbGFtcCh0b0ludGVnZXIodmFsdWUpLCAtTUFYX1NBRkVfSU5URUdFUiwgTUFYX1NBRkVfSU5URUdFUilcbiAgICAgICAgOiAodmFsdWUgPT09IDAgPyB2YWx1ZSA6IDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcuIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBmb3IgYG51bGxgXG4gICAgICogYW5kIGB1bmRlZmluZWRgIHZhbHVlcy4gVGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b1N0cmluZyhudWxsKTtcbiAgICAgKiAvLyA9PiAnJ1xuICAgICAqXG4gICAgICogXy50b1N0cmluZygtMCk7XG4gICAgICogLy8gPT4gJy0wJ1xuICAgICAqXG4gICAgICogXy50b1N0cmluZyhbMSwgMiwgM10pO1xuICAgICAqIC8vID0+ICcxLDIsMydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b1N0cmluZyh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAnJyA6IGJhc2VUb1N0cmluZyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQXNzaWducyBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2Ugb2JqZWN0cyB0byB0aGVcbiAgICAgKiBkZXN0aW5hdGlvbiBvYmplY3QuIFNvdXJjZSBvYmplY3RzIGFyZSBhcHBsaWVkIGZyb20gbGVmdCB0byByaWdodC5cbiAgICAgKiBTdWJzZXF1ZW50IHNvdXJjZXMgb3ZlcndyaXRlIHByb3BlcnR5IGFzc2lnbm1lbnRzIG9mIHByZXZpb3VzIHNvdXJjZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YCBhbmQgaXMgbG9vc2VseSBiYXNlZCBvblxuICAgICAqIFtgT2JqZWN0LmFzc2lnbmBdKGh0dHBzOi8vbWRuLmlvL09iamVjdC9hc3NpZ24pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMTAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uYXNzaWduSW5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBCYXIoKSB7XG4gICAgICogICB0aGlzLmMgPSAzO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYiA9IDI7XG4gICAgICogQmFyLnByb3RvdHlwZS5kID0gNDtcbiAgICAgKlxuICAgICAqIF8uYXNzaWduKHsgJ2EnOiAwIH0sIG5ldyBGb28sIG5ldyBCYXIpO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYyc6IDMgfVxuICAgICAqL1xuICAgIHZhciBhc3NpZ24gPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSkge1xuICAgICAgaWYgKGlzUHJvdG90eXBlKHNvdXJjZSkgfHwgaXNBcnJheUxpa2Uoc291cmNlKSkge1xuICAgICAgICBjb3B5T2JqZWN0KHNvdXJjZSwga2V5cyhzb3VyY2UpLCBvYmplY3QpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBzb3VyY2Vba2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIG93biBhbmRcbiAgICAgKiBpbmhlcml0ZWQgc291cmNlIHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBhbGlhcyBleHRlbmRcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmFzc2lnblxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEJhcigpIHtcbiAgICAgKiAgIHRoaXMuYyA9IDM7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5iID0gMjtcbiAgICAgKiBCYXIucHJvdG90eXBlLmQgPSA0O1xuICAgICAqXG4gICAgICogXy5hc3NpZ25Jbih7ICdhJzogMCB9LCBuZXcgRm9vLCBuZXcgQmFyKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMsICdkJzogNCB9XG4gICAgICovXG4gICAgdmFyIGFzc2lnbkluID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2UpIHtcbiAgICAgIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzSW4oc291cmNlKSwgb2JqZWN0KTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduSW5gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBhc3NpZ25lZCB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zXG4gICAgICogYHVuZGVmaW5lZGAsIGFzc2lnbm1lbnQgaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmBcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggZml2ZSBhcmd1bWVudHM6IChvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAYWxpYXMgZXh0ZW5kV2l0aFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IHNvdXJjZXMgVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5hc3NpZ25XaXRoXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gICAgICogICByZXR1cm4gXy5pc1VuZGVmaW5lZChvYmpWYWx1ZSkgPyBzcmNWYWx1ZSA6IG9ialZhbHVlO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBkZWZhdWx0cyA9IF8ucGFydGlhbFJpZ2h0KF8uYXNzaWduSW5XaXRoLCBjdXN0b21pemVyKTtcbiAgICAgKlxuICAgICAqIGRlZmF1bHRzKHsgJ2EnOiAxIH0sIHsgJ2InOiAyIH0sIHsgJ2EnOiAzIH0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqL1xuICAgIHZhciBhc3NpZ25JbldpdGggPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzSW4oc291cmNlKSwgb2JqZWN0LCBjdXN0b21pemVyKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgYXNzaWduZWQgdmFsdWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJuc1xuICAgICAqIGB1bmRlZmluZWRgLCBhc3NpZ25tZW50IGlzIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgXG4gICAgICogaXMgaW52b2tlZCB3aXRoIGZpdmUgYXJndW1lbnRzOiAob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gc291cmNlcyBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmFzc2lnbkluV2l0aFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSkge1xuICAgICAqICAgcmV0dXJuIF8uaXNVbmRlZmluZWQob2JqVmFsdWUpID8gc3JjVmFsdWUgOiBvYmpWYWx1ZTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgZGVmYXVsdHMgPSBfLnBhcnRpYWxSaWdodChfLmFzc2lnbldpdGgsIGN1c3RvbWl6ZXIpO1xuICAgICAqXG4gICAgICogZGVmYXVsdHMoeyAnYSc6IDEgfSwgeyAnYic6IDIgfSwgeyAnYSc6IDMgfSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICovXG4gICAgdmFyIGFzc2lnbldpdGggPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzKHNvdXJjZSksIG9iamVjdCwgY3VzdG9taXplcik7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGBwYXRoc2Agb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBbcGF0aHNdIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcGlja2VkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfSwgNF0gfTtcbiAgICAgKlxuICAgICAqIF8uYXQob2JqZWN0LCBbJ2FbMF0uYi5jJywgJ2FbMV0nXSk7XG4gICAgICogLy8gPT4gWzMsIDRdXG4gICAgICovXG4gICAgdmFyIGF0ID0gZmxhdFJlc3QoYmFzZUF0KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IHRoYXQgaW5oZXJpdHMgZnJvbSB0aGUgYHByb3RvdHlwZWAgb2JqZWN0LiBJZiBhXG4gICAgICogYHByb3BlcnRpZXNgIG9iamVjdCBpcyBnaXZlbiwgaXRzIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzXG4gICAgICogYXJlIGFzc2lnbmVkIHRvIHRoZSBjcmVhdGVkIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjMuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvdG90eXBlIFRoZSBvYmplY3QgdG8gaW5oZXJpdCBmcm9tLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbcHJvcGVydGllc10gVGhlIHByb3BlcnRpZXMgdG8gYXNzaWduIHRvIHRoZSBvYmplY3QuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gU2hhcGUoKSB7XG4gICAgICogICB0aGlzLnggPSAwO1xuICAgICAqICAgdGhpcy55ID0gMDtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBDaXJjbGUoKSB7XG4gICAgICogICBTaGFwZS5jYWxsKHRoaXMpO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIENpcmNsZS5wcm90b3R5cGUgPSBfLmNyZWF0ZShTaGFwZS5wcm90b3R5cGUsIHtcbiAgICAgKiAgICdjb25zdHJ1Y3Rvcic6IENpcmNsZVxuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogdmFyIGNpcmNsZSA9IG5ldyBDaXJjbGU7XG4gICAgICogY2lyY2xlIGluc3RhbmNlb2YgQ2lyY2xlO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGNpcmNsZSBpbnN0YW5jZW9mIFNoYXBlO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGUocHJvdG90eXBlLCBwcm9wZXJ0aWVzKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gYmFzZUNyZWF0ZShwcm90b3R5cGUpO1xuICAgICAgcmV0dXJuIHByb3BlcnRpZXMgPT0gbnVsbCA/IHJlc3VsdCA6IGJhc2VBc3NpZ24ocmVzdWx0LCBwcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBc3NpZ25zIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlXG4gICAgICogb2JqZWN0cyB0byB0aGUgZGVzdGluYXRpb24gb2JqZWN0IGZvciBhbGwgZGVzdGluYXRpb24gcHJvcGVydGllcyB0aGF0XG4gICAgICogcmVzb2x2ZSB0byBgdW5kZWZpbmVkYC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuICAgICAqIE9uY2UgYSBwcm9wZXJ0eSBpcyBzZXQsIGFkZGl0aW9uYWwgdmFsdWVzIG9mIHRoZSBzYW1lIHByb3BlcnR5IGFyZSBpZ25vcmVkLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmRlZmF1bHRzRGVlcFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRlZmF1bHRzKHsgJ2EnOiAxIH0sIHsgJ2InOiAyIH0sIHsgJ2EnOiAzIH0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqL1xuICAgIHZhciBkZWZhdWx0cyA9IGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwgc291cmNlcykge1xuICAgICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG5cbiAgICAgIHZhciBpbmRleCA9IC0xO1xuICAgICAgdmFyIGxlbmd0aCA9IHNvdXJjZXMubGVuZ3RoO1xuICAgICAgdmFyIGd1YXJkID0gbGVuZ3RoID4gMiA/IHNvdXJjZXNbMl0gOiB1bmRlZmluZWQ7XG5cbiAgICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzb3VyY2VzWzBdLCBzb3VyY2VzWzFdLCBndWFyZCkpIHtcbiAgICAgICAgbGVuZ3RoID0gMTtcbiAgICAgIH1cblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IHNvdXJjZXNbaW5kZXhdO1xuICAgICAgICB2YXIgcHJvcHMgPSBrZXlzSW4oc291cmNlKTtcbiAgICAgICAgdmFyIHByb3BzSW5kZXggPSAtMTtcbiAgICAgICAgdmFyIHByb3BzTGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgICAgIHdoaWxlICgrK3Byb3BzSW5kZXggPCBwcm9wc0xlbmd0aCkge1xuICAgICAgICAgIHZhciBrZXkgPSBwcm9wc1twcm9wc0luZGV4XTtcbiAgICAgICAgICB2YXIgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgIChlcSh2YWx1ZSwgb2JqZWN0UHJvdG9ba2V5XSkgJiYgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkge1xuICAgICAgICAgICAgb2JqZWN0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZGVmYXVsdHNgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGFzc2lnbnNcbiAgICAgKiBkZWZhdWx0IHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmRlZmF1bHRzXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmYXVsdHNEZWVwKHsgJ2EnOiB7ICdiJzogMiB9IH0sIHsgJ2EnOiB7ICdiJzogMSwgJ2MnOiAzIH0gfSk7XG4gICAgICogLy8gPT4geyAnYSc6IHsgJ2InOiAyLCAnYyc6IDMgfSB9XG4gICAgICovXG4gICAgdmFyIGRlZmF1bHRzRGVlcCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgIGFyZ3MucHVzaCh1bmRlZmluZWQsIGN1c3RvbURlZmF1bHRzTWVyZ2UpO1xuICAgICAgcmV0dXJuIGFwcGx5KG1lcmdlV2l0aCwgdW5kZWZpbmVkLCBhcmdzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUga2V5IG9mIHRoZSBmaXJzdFxuICAgICAqIGVsZW1lbnQgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yIGluc3RlYWQgb2YgdGhlIGVsZW1lbnQgaXRzZWxmLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMS4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfHVuZGVmaW5lZH0gUmV0dXJucyB0aGUga2V5IG9mIHRoZSBtYXRjaGVkIGVsZW1lbnQsXG4gICAgICogIGVsc2UgYHVuZGVmaW5lZGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IHtcbiAgICAgKiAgICdiYXJuZXknOiAgeyAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICAnZnJlZCc6ICAgIHsgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgICdwZWJibGVzJzogeyAnYWdlJzogMSwgICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogXy5maW5kS2V5KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFnZSA8IDQwOyB9KTtcbiAgICAgKiAvLyA9PiAnYmFybmV5JyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRLZXkodXNlcnMsIHsgJ2FnZSc6IDEsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+ICdwZWJibGVzJ1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZEtleSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+ICdmcmVkJ1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kS2V5KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gJ2Jhcm5leSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaW5kS2V5KG9iamVjdCwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gYmFzZUZpbmRLZXkob2JqZWN0LCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpLCBiYXNlRm9yT3duKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZpbmRLZXlgIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2ZcbiAgICAgKiBhIGNvbGxlY3Rpb24gaW4gdGhlIG9wcG9zaXRlIG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfHVuZGVmaW5lZH0gUmV0dXJucyB0aGUga2V5IG9mIHRoZSBtYXRjaGVkIGVsZW1lbnQsXG4gICAgICogIGVsc2UgYHVuZGVmaW5lZGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IHtcbiAgICAgKiAgICdiYXJuZXknOiAgeyAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICAnZnJlZCc6ICAgIHsgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgICdwZWJibGVzJzogeyAnYWdlJzogMSwgICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogXy5maW5kTGFzdEtleSh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2UgPCA0MDsgfSk7XG4gICAgICogLy8gPT4gcmV0dXJucyAncGViYmxlcycgYXNzdW1pbmcgYF8uZmluZEtleWAgcmV0dXJucyAnYmFybmV5J1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0S2V5KHVzZXJzLCB7ICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gJ2Jhcm5leSdcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0S2V5KHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gJ2ZyZWQnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0S2V5KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gJ3BlYmJsZXMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmluZExhc3RLZXkob2JqZWN0LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiBiYXNlRmluZEtleShvYmplY3QsIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGJhc2VGb3JPd25SaWdodCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZXMgb3ZlciBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIGFuXG4gICAgICogb2JqZWN0IGFuZCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggcHJvcGVydHkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwga2V5LCBvYmplY3QpLiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXRcbiAgICAgKiBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjMuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmZvckluUmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8uZm9ySW4obmV3IEZvbywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdhJywgJ2InLCB0aGVuICdjJyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JJbihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGxcbiAgICAgICAgPyBvYmplY3RcbiAgICAgICAgOiBiYXNlRm9yKG9iamVjdCwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpLCBrZXlzSW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZm9ySW5gIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgcHJvcGVydGllcyBvZlxuICAgICAqIGBvYmplY3RgIGluIHRoZSBvcHBvc2l0ZSBvcmRlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmZvckluXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmZvckluUmlnaHQobmV3IEZvbywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdjJywgJ2InLCB0aGVuICdhJyBhc3N1bWluZyBgXy5mb3JJbmAgbG9ncyAnYScsICdiJywgdGhlbiAnYycuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZm9ySW5SaWdodChvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGxcbiAgICAgICAgPyBvYmplY3RcbiAgICAgICAgOiBiYXNlRm9yUmlnaHQob2JqZWN0LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMyksIGtleXNJbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZXMgb3ZlciBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBhbiBvYmplY3QgYW5kXG4gICAgICogaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIHByb3BlcnR5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlXG4gICAgICogYXJndW1lbnRzOiAodmFsdWUsIGtleSwgb2JqZWN0KS4gSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvblxuICAgICAqIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5mb3JPd25SaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5mb3JPd24obmV3IEZvbywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdhJyB0aGVuICdiJyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JPd24ob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBiYXNlRm9yT3duKG9iamVjdCwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZvck93bmAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBwcm9wZXJ0aWVzIG9mXG4gICAgICogYG9iamVjdGAgaW4gdGhlIG9wcG9zaXRlIG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZm9yT3duXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmZvck93blJpZ2h0KG5ldyBGb28sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKGtleSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyAnYicgdGhlbiAnYScgYXNzdW1pbmcgYF8uZm9yT3duYCBsb2dzICdhJyB0aGVuICdiJy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JPd25SaWdodChvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICYmIGJhc2VGb3JPd25SaWdodChvYmplY3QsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBmdW5jdGlvbiBwcm9wZXJ0eSBuYW1lcyBmcm9tIG93biBlbnVtZXJhYmxlIHByb3BlcnRpZXNcbiAgICAgKiBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGZ1bmN0aW9uIG5hbWVzLlxuICAgICAqIEBzZWUgXy5mdW5jdGlvbnNJblxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSBfLmNvbnN0YW50KCdhJyk7XG4gICAgICogICB0aGlzLmIgPSBfLmNvbnN0YW50KCdiJyk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gXy5jb25zdGFudCgnYycpO1xuICAgICAqXG4gICAgICogXy5mdW5jdGlvbnMobmV3IEZvbyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZ1bmN0aW9ucyhvYmplY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IFtdIDogYmFzZUZ1bmN0aW9ucyhvYmplY3QsIGtleXMob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBmdW5jdGlvbiBwcm9wZXJ0eSBuYW1lcyBmcm9tIG93biBhbmQgaW5oZXJpdGVkXG4gICAgICogZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgZnVuY3Rpb24gbmFtZXMuXG4gICAgICogQHNlZSBfLmZ1bmN0aW9uc1xuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSBfLmNvbnN0YW50KCdhJyk7XG4gICAgICogICB0aGlzLmIgPSBfLmNvbnN0YW50KCdiJyk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gXy5jb25zdGFudCgnYycpO1xuICAgICAqXG4gICAgICogXy5mdW5jdGlvbnNJbihuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYicsICdjJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmdW5jdGlvbnNJbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IFtdIDogYmFzZUZ1bmN0aW9ucyhvYmplY3QsIGtleXNJbihvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuIElmIHRoZSByZXNvbHZlZCB2YWx1ZSBpc1xuICAgICAqIGB1bmRlZmluZWRgLCB0aGUgYGRlZmF1bHRWYWx1ZWAgaXMgcmV0dXJuZWQgaW4gaXRzIHBsYWNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gW2RlZmF1bHRWYWx1ZV0gVGhlIHZhbHVlIHJldHVybmVkIGZvciBgdW5kZWZpbmVkYCByZXNvbHZlZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9XSB9O1xuICAgICAqXG4gICAgICogXy5nZXQob2JqZWN0LCAnYVswXS5iLmMnKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLmdldChvYmplY3QsIFsnYScsICcwJywgJ2InLCAnYyddKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLmdldChvYmplY3QsICdhLmIuYycsICdkZWZhdWx0Jyk7XG4gICAgICogLy8gPT4gJ2RlZmF1bHQnXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0KG9iamVjdCwgcGF0aCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG4gICAgICByZXR1cm4gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBkZWZhdWx0VmFsdWUgOiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBwYXRoYCBpcyBhIGRpcmVjdCBwcm9wZXJ0eSBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiB7ICdiJzogMiB9IH07XG4gICAgICogdmFyIG90aGVyID0gXy5jcmVhdGUoeyAnYSc6IF8uY3JlYXRlKHsgJ2InOiAyIH0pIH0pO1xuICAgICAqXG4gICAgICogXy5oYXMob2JqZWN0LCAnYScpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaGFzKG9iamVjdCwgJ2EuYicpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaGFzKG9iamVjdCwgWydhJywgJ2InXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXMob3RoZXIsICdhJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXMob2JqZWN0LCBwYXRoKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzUGF0aChvYmplY3QsIHBhdGgsIGJhc2VIYXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgcGF0aGAgaXMgYSBkaXJlY3Qgb3IgaW5oZXJpdGVkIHByb3BlcnR5IG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0gXy5jcmVhdGUoeyAnYSc6IF8uY3JlYXRlKHsgJ2InOiAyIH0pIH0pO1xuICAgICAqXG4gICAgICogXy5oYXNJbihvYmplY3QsICdhJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXNJbihvYmplY3QsICdhLmInKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhc0luKG9iamVjdCwgWydhJywgJ2InXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXNJbihvYmplY3QsICdiJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNJbihvYmplY3QsIHBhdGgpIHtcbiAgICAgIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgYmFzZUhhc0luKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGUgaW52ZXJ0ZWQga2V5cyBhbmQgdmFsdWVzIG9mIGBvYmplY3RgLlxuICAgICAqIElmIGBvYmplY3RgIGNvbnRhaW5zIGR1cGxpY2F0ZSB2YWx1ZXMsIHN1YnNlcXVlbnQgdmFsdWVzIG92ZXJ3cml0ZVxuICAgICAqIHByb3BlcnR5IGFzc2lnbm1lbnRzIG9mIHByZXZpb3VzIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjcuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW52ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBpbnZlcnRlZCBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfTtcbiAgICAgKlxuICAgICAqIF8uaW52ZXJ0KG9iamVjdCk7XG4gICAgICogLy8gPT4geyAnMSc6ICdjJywgJzInOiAnYicgfVxuICAgICAqL1xuICAgIHZhciBpbnZlcnQgPSBjcmVhdGVJbnZlcnRlcihmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmXG4gICAgICAgICAgdHlwZW9mIHZhbHVlLnRvU3RyaW5nICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdmFsdWUgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgcmVzdWx0W3ZhbHVlXSA9IGtleTtcbiAgICB9LCBjb25zdGFudChpZGVudGl0eSkpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbnZlcnRgIGV4Y2VwdCB0aGF0IHRoZSBpbnZlcnRlZCBvYmplY3QgaXMgZ2VuZXJhdGVkXG4gICAgICogZnJvbSB0aGUgcmVzdWx0cyBvZiBydW5uaW5nIGVhY2ggZWxlbWVudCBvZiBgb2JqZWN0YCB0aHJ1IGBpdGVyYXRlZWAuIFRoZVxuICAgICAqIGNvcnJlc3BvbmRpbmcgaW52ZXJ0ZWQgdmFsdWUgb2YgZWFjaCBpbnZlcnRlZCBrZXkgaXMgYW4gYXJyYXkgb2Yga2V5c1xuICAgICAqIHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHRoZSBpbnZlcnRlZCB2YWx1ZS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW52ZXJ0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgaW52ZXJ0ZWQgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAxIH07XG4gICAgICpcbiAgICAgKiBfLmludmVydEJ5KG9iamVjdCk7XG4gICAgICogLy8gPT4geyAnMSc6IFsnYScsICdjJ10sICcyJzogWydiJ10gfVxuICAgICAqXG4gICAgICogXy5pbnZlcnRCeShvYmplY3QsIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICogICByZXR1cm4gJ2dyb3VwJyArIHZhbHVlO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IHsgJ2dyb3VwMSc6IFsnYScsICdjJ10sICdncm91cDInOiBbJ2InXSB9XG4gICAgICovXG4gICAgdmFyIGludmVydEJ5ID0gY3JlYXRlSW52ZXJ0ZXIoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJlxuICAgICAgICAgIHR5cGVvZiB2YWx1ZS50b1N0cmluZyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHZhbHVlID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3VsdCwgdmFsdWUpKSB7XG4gICAgICAgIHJlc3VsdFt2YWx1ZV0ucHVzaChrZXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0W3ZhbHVlXSA9IFtrZXldO1xuICAgICAgfVxuICAgIH0sIGdldEl0ZXJhdGVlKTtcblxuICAgIC8qKlxuICAgICAqIEludm9rZXMgdGhlIG1ldGhvZCBhdCBgcGF0aGAgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBtZXRob2QgdG8gaW52b2tlLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIHRoZSBtZXRob2Qgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBpbnZva2VkIG1ldGhvZC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiBbMSwgMiwgMywgNF0gfSB9XSB9O1xuICAgICAqXG4gICAgICogXy5pbnZva2Uob2JqZWN0LCAnYVswXS5iLmMuc2xpY2UnLCAxLCAzKTtcbiAgICAgKiAvLyA9PiBbMiwgM11cbiAgICAgKi9cbiAgICB2YXIgaW52b2tlID0gYmFzZVJlc3QoYmFzZUludm9rZSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLiBTZWUgdGhlXG4gICAgICogW0VTIHNwZWNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICAgICAqIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmtleXMobmV3IEZvbyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqXG4gICAgICogXy5rZXlzKCdoaScpO1xuICAgICAqIC8vID0+IFsnMCcsICcxJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBrZXlzKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCkgOiBiYXNlS2V5cyhvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8ua2V5c0luKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFsnYScsICdiJywgJ2MnXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGtleXNJbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QsIHRydWUpIDogYmFzZUtleXNJbihvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5tYXBWYWx1ZXNgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGFuIG9iamVjdCB3aXRoIHRoZVxuICAgICAqIHNhbWUgdmFsdWVzIGFzIGBvYmplY3RgIGFuZCBrZXlzIGdlbmVyYXRlZCBieSBydW5uaW5nIGVhY2ggb3duIGVudW1lcmFibGVcbiAgICAgKiBzdHJpbmcga2V5ZWQgcHJvcGVydHkgb2YgYG9iamVjdGAgdGhydSBgaXRlcmF0ZWVgLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGtleSwgb2JqZWN0KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjguMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgb2JqZWN0LlxuICAgICAqIEBzZWUgXy5tYXBWYWx1ZXNcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tYXBLZXlzKHsgJ2EnOiAxLCAnYic6IDIgfSwgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgcmV0dXJuIGtleSArIHZhbHVlO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IHsgJ2ExJzogMSwgJ2IyJzogMiB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwS2V5cyhvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgICBpdGVyYXRlZSA9IGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKTtcblxuICAgICAgYmFzZUZvck93bihvYmplY3QsIGZ1bmN0aW9uKHZhbHVlLCBrZXksIG9iamVjdCkge1xuICAgICAgICBiYXNlQXNzaWduVmFsdWUocmVzdWx0LCBpdGVyYXRlZSh2YWx1ZSwga2V5LCBvYmplY3QpLCB2YWx1ZSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSBrZXlzIGFzIGBvYmplY3RgIGFuZCB2YWx1ZXMgZ2VuZXJhdGVkXG4gICAgICogYnkgcnVubmluZyBlYWNoIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0eSBvZiBgb2JqZWN0YCB0aHJ1XG4gICAgICogYGl0ZXJhdGVlYC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6XG4gICAgICogKHZhbHVlLCBrZXksIG9iamVjdCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi40LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIG9iamVjdC5cbiAgICAgKiBAc2VlIF8ubWFwS2V5c1xuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSB7XG4gICAgICogICAnZnJlZCc6ICAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhZ2UnOiA0MCB9LFxuICAgICAqICAgJ3BlYmJsZXMnOiB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSB9XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIF8ubWFwVmFsdWVzKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFnZTsgfSk7XG4gICAgICogLy8gPT4geyAnZnJlZCc6IDQwLCAncGViYmxlcyc6IDEgfSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5tYXBWYWx1ZXModXNlcnMsICdhZ2UnKTtcbiAgICAgKiAvLyA9PiB7ICdmcmVkJzogNDAsICdwZWJibGVzJzogMSB9IChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwVmFsdWVzKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICAgIGl0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpO1xuXG4gICAgICBiYXNlRm9yT3duKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGtleSwgb2JqZWN0KSB7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgaXRlcmF0ZWUodmFsdWUsIGtleSwgb2JqZWN0KSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25gIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IG1lcmdlcyBvd24gYW5kXG4gICAgICogaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlIG9iamVjdHMgaW50byB0aGVcbiAgICAgKiBkZXN0aW5hdGlvbiBvYmplY3QuIFNvdXJjZSBwcm9wZXJ0aWVzIHRoYXQgcmVzb2x2ZSB0byBgdW5kZWZpbmVkYCBhcmVcbiAgICAgKiBza2lwcGVkIGlmIGEgZGVzdGluYXRpb24gdmFsdWUgZXhpc3RzLiBBcnJheSBhbmQgcGxhaW4gb2JqZWN0IHByb3BlcnRpZXNcbiAgICAgKiBhcmUgbWVyZ2VkIHJlY3Vyc2l2ZWx5LiBPdGhlciBvYmplY3RzIGFuZCB2YWx1ZSB0eXBlcyBhcmUgb3ZlcnJpZGRlbiBieVxuICAgICAqIGFzc2lnbm1lbnQuIFNvdXJjZSBvYmplY3RzIGFyZSBhcHBsaWVkIGZyb20gbGVmdCB0byByaWdodC4gU3Vic2VxdWVudFxuICAgICAqIHNvdXJjZXMgb3ZlcndyaXRlIHByb3BlcnR5IGFzc2lnbm1lbnRzIG9mIHByZXZpb3VzIHNvdXJjZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjUuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHtcbiAgICAgKiAgICdhJzogW3sgJ2InOiAyIH0sIHsgJ2QnOiA0IH1dXG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIHZhciBvdGhlciA9IHtcbiAgICAgKiAgICdhJzogW3sgJ2MnOiAzIH0sIHsgJ2UnOiA1IH1dXG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIF8ubWVyZ2Uob2JqZWN0LCBvdGhlcik7XG4gICAgICogLy8gPT4geyAnYSc6IFt7ICdiJzogMiwgJ2MnOiAzIH0sIHsgJ2QnOiA0LCAnZSc6IDUgfV0gfVxuICAgICAqL1xuICAgIHZhciBtZXJnZSA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCkge1xuICAgICAgYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLm1lcmdlYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgbWVyZ2VkIHZhbHVlcyBvZiB0aGUgZGVzdGluYXRpb24gYW5kIHNvdXJjZVxuICAgICAqIHByb3BlcnRpZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgLCBtZXJnaW5nIGlzIGhhbmRsZWQgYnkgdGhlXG4gICAgICogbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoIHNpeCBhcmd1bWVudHM6XG4gICAgICogKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBzb3VyY2VzIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gICAgICogICBpZiAoXy5pc0FycmF5KG9ialZhbHVlKSkge1xuICAgICAqICAgICByZXR1cm4gb2JqVmFsdWUuY29uY2F0KHNyY1ZhbHVlKTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFsxXSwgJ2InOiBbMl0gfTtcbiAgICAgKiB2YXIgb3RoZXIgPSB7ICdhJzogWzNdLCAnYic6IFs0XSB9O1xuICAgICAqXG4gICAgICogXy5tZXJnZVdpdGgob2JqZWN0LCBvdGhlciwgY3VzdG9taXplcik7XG4gICAgICogLy8gPT4geyAnYSc6IFsxLCAzXSwgJ2InOiBbMiwgNF0gfVxuICAgICAqL1xuICAgIHZhciBtZXJnZVdpdGggPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLnBpY2tgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGVcbiAgICAgKiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IHBhdGhzIG9mIGBvYmplY3RgIHRoYXQgYXJlIG5vdCBvbWl0dGVkLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGNvbnNpZGVyYWJseSBzbG93ZXIgdGhhbiBgXy5waWNrYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uKHN0cmluZ3xzdHJpbmdbXSl9IFtwYXRoc10gVGhlIHByb3BlcnR5IHBhdGhzIHRvIG9taXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gICAgICpcbiAgICAgKiBfLm9taXQob2JqZWN0LCBbJ2EnLCAnYyddKTtcbiAgICAgKiAvLyA9PiB7ICdiJzogJzInIH1cbiAgICAgKi9cbiAgICB2YXIgb21pdCA9IGZsYXRSZXN0KGZ1bmN0aW9uKG9iamVjdCwgcGF0aHMpIHtcbiAgICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgdmFyIGlzRGVlcCA9IGZhbHNlO1xuICAgICAgcGF0aHMgPSBhcnJheU1hcChwYXRocywgZnVuY3Rpb24ocGF0aCkge1xuICAgICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcbiAgICAgICAgaXNEZWVwIHx8IChpc0RlZXAgPSBwYXRoLmxlbmd0aCA+IDEpO1xuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICAgIH0pO1xuICAgICAgY29weU9iamVjdChvYmplY3QsIGdldEFsbEtleXNJbihvYmplY3QpLCByZXN1bHQpO1xuICAgICAgaWYgKGlzRGVlcCkge1xuICAgICAgICByZXN1bHQgPSBiYXNlQ2xvbmUocmVzdWx0LCBDTE9ORV9ERUVQX0ZMQUcgfCBDTE9ORV9GTEFUX0ZMQUcgfCBDTE9ORV9TWU1CT0xTX0ZMQUcsIGN1c3RvbU9taXRDbG9uZSk7XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gcGF0aHMubGVuZ3RoO1xuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIGJhc2VVbnNldChyZXN1bHQsIHBhdGhzW2xlbmd0aF0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5waWNrQnlgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZlxuICAgICAqIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIGBvYmplY3RgIHRoYXRcbiAgICAgKiBgcHJlZGljYXRlYCBkb2Vzbid0IHJldHVybiB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0d29cbiAgICAgKiBhcmd1bWVudHM6ICh2YWx1ZSwga2V5KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIHByb3BlcnR5LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAnMicsICdjJzogMyB9O1xuICAgICAqXG4gICAgICogXy5vbWl0Qnkob2JqZWN0LCBfLmlzTnVtYmVyKTtcbiAgICAgKiAvLyA9PiB7ICdiJzogJzInIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvbWl0Qnkob2JqZWN0LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiBwaWNrQnkob2JqZWN0LCBuZWdhdGUoZ2V0SXRlcmF0ZWUocHJlZGljYXRlKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZSBwaWNrZWQgYG9iamVjdGAgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uKHN0cmluZ3xzdHJpbmdbXSl9IFtwYXRoc10gVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gICAgICpcbiAgICAgKiBfLnBpY2sob2JqZWN0LCBbJ2EnLCAnYyddKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2MnOiAzIH1cbiAgICAgKi9cbiAgICB2YXIgcGljayA9IGZsYXRSZXN0KGZ1bmN0aW9uKG9iamVjdCwgcGF0aHMpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHt9IDogYmFzZVBpY2sob2JqZWN0LCBwYXRocyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGUgYG9iamVjdGAgcHJvcGVydGllcyBgcHJlZGljYXRlYCByZXR1cm5zXG4gICAgICogdHJ1dGh5IGZvci4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGggdHdvIGFyZ3VtZW50czogKHZhbHVlLCBrZXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgcHJvcGVydHkuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gICAgICpcbiAgICAgKiBfLnBpY2tCeShvYmplY3QsIF8uaXNOdW1iZXIpO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYyc6IDMgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBpY2tCeShvYmplY3QsIHByZWRpY2F0ZSkge1xuICAgICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIHZhciBwcm9wcyA9IGFycmF5TWFwKGdldEFsbEtleXNJbihvYmplY3QpLCBmdW5jdGlvbihwcm9wKSB7XG4gICAgICAgIHJldHVybiBbcHJvcF07XG4gICAgICB9KTtcbiAgICAgIHByZWRpY2F0ZSA9IGdldEl0ZXJhdGVlKHByZWRpY2F0ZSk7XG4gICAgICByZXR1cm4gYmFzZVBpY2tCeShvYmplY3QsIHByb3BzLCBmdW5jdGlvbih2YWx1ZSwgcGF0aCkge1xuICAgICAgICByZXR1cm4gcHJlZGljYXRlKHZhbHVlLCBwYXRoWzBdKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZ2V0YCBleGNlcHQgdGhhdCBpZiB0aGUgcmVzb2x2ZWQgdmFsdWUgaXMgYVxuICAgICAqIGZ1bmN0aW9uIGl0J3MgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiBpdHMgcGFyZW50IG9iamVjdCBhbmRcbiAgICAgKiBpdHMgcmVzdWx0IGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gcmVzb2x2ZS5cbiAgICAgKiBAcGFyYW0geyp9IFtkZWZhdWx0VmFsdWVdIFRoZSB2YWx1ZSByZXR1cm5lZCBmb3IgYHVuZGVmaW5lZGAgcmVzb2x2ZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MxJzogMywgJ2MyJzogXy5jb25zdGFudCg0KSB9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLnJlc3VsdChvYmplY3QsICdhWzBdLmIuYzEnKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLnJlc3VsdChvYmplY3QsICdhWzBdLmIuYzInKTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICpcbiAgICAgKiBfLnJlc3VsdChvYmplY3QsICdhWzBdLmIuYzMnLCAnZGVmYXVsdCcpO1xuICAgICAqIC8vID0+ICdkZWZhdWx0J1xuICAgICAqXG4gICAgICogXy5yZXN1bHQob2JqZWN0LCAnYVswXS5iLmMzJywgXy5jb25zdGFudCgnZGVmYXVsdCcpKTtcbiAgICAgKiAvLyA9PiAnZGVmYXVsdCdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXN1bHQob2JqZWN0LCBwYXRoLCBkZWZhdWx0VmFsdWUpIHtcbiAgICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aDtcblxuICAgICAgLy8gRW5zdXJlIHRoZSBsb29wIGlzIGVudGVyZWQgd2hlbiBwYXRoIGlzIGVtcHR5LlxuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgbGVuZ3RoID0gMTtcbiAgICAgICAgb2JqZWN0ID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3RbdG9LZXkocGF0aFtpbmRleF0pXTtcbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpbmRleCA9IGxlbmd0aDtcbiAgICAgICAgICB2YWx1ZSA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBvYmplY3QgPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHZhbHVlLmNhbGwob2JqZWN0KSA6IHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuIElmIGEgcG9ydGlvbiBvZiBgcGF0aGAgZG9lc24ndCBleGlzdCxcbiAgICAgKiBpdCdzIGNyZWF0ZWQuIEFycmF5cyBhcmUgY3JlYXRlZCBmb3IgbWlzc2luZyBpbmRleCBwcm9wZXJ0aWVzIHdoaWxlIG9iamVjdHNcbiAgICAgKiBhcmUgY3JlYXRlZCBmb3IgYWxsIG90aGVyIG1pc3NpbmcgcHJvcGVydGllcy4gVXNlIGBfLnNldFdpdGhgIHRvIGN1c3RvbWl6ZVxuICAgICAqIGBwYXRoYCBjcmVhdGlvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfV0gfTtcbiAgICAgKlxuICAgICAqIF8uc2V0KG9iamVjdCwgJ2FbMF0uYi5jJywgNCk7XG4gICAgICogY29uc29sZS5sb2cob2JqZWN0LmFbMF0uYi5jKTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICpcbiAgICAgKiBfLnNldChvYmplY3QsIFsneCcsICcwJywgJ3knLCAneiddLCA1KTtcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QueFswXS55LnopO1xuICAgICAqIC8vID0+IDVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gb2JqZWN0IDogYmFzZVNldChvYmplY3QsIHBhdGgsIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNldGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIG9iamVjdHMgb2YgYHBhdGhgLiAgSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGBcbiAgICAgKiBwYXRoIGNyZWF0aW9uIGlzIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKG5zVmFsdWUsIGtleSwgbnNPYmplY3QpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHt9O1xuICAgICAqXG4gICAgICogXy5zZXRXaXRoKG9iamVjdCwgJ1swXVsxXScsICdhJywgT2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICcwJzogeyAnMSc6ICdhJyB9IH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXRXaXRoKG9iamVjdCwgcGF0aCwgdmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IG9iamVjdCA6IGJhc2VTZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSwgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQtdmFsdWUgcGFpcnMgZm9yIGBvYmplY3RgXG4gICAgICogd2hpY2ggY2FuIGJlIGNvbnN1bWVkIGJ5IGBfLmZyb21QYWlyc2AuIElmIGBvYmplY3RgIGlzIGEgbWFwIG9yIHNldCwgaXRzXG4gICAgICogZW50cmllcyBhcmUgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAYWxpYXMgZW50cmllc1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLnRvUGFpcnMobmV3IEZvbyk7XG4gICAgICogLy8gPT4gW1snYScsIDFdLCBbJ2InLCAyXV0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKi9cbiAgICB2YXIgdG9QYWlycyA9IGNyZWF0ZVRvUGFpcnMoa2V5cyk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkLXZhbHVlIHBhaXJzXG4gICAgICogZm9yIGBvYmplY3RgIHdoaWNoIGNhbiBiZSBjb25zdW1lZCBieSBgXy5mcm9tUGFpcnNgLiBJZiBgb2JqZWN0YCBpcyBhIG1hcFxuICAgICAqIG9yIHNldCwgaXRzIGVudHJpZXMgYXJlIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGFsaWFzIGVudHJpZXNJblxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLnRvUGFpcnNJbihuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbWydhJywgMV0sIFsnYicsIDJdLCBbJ2MnLCAzXV0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKi9cbiAgICB2YXIgdG9QYWlyc0luID0gY3JlYXRlVG9QYWlycyhrZXlzSW4pO1xuXG4gICAgLyoqXG4gICAgICogQW4gYWx0ZXJuYXRpdmUgdG8gYF8ucmVkdWNlYDsgdGhpcyBtZXRob2QgdHJhbnNmb3JtcyBgb2JqZWN0YCB0byBhIG5ld1xuICAgICAqIGBhY2N1bXVsYXRvcmAgb2JqZWN0IHdoaWNoIGlzIHRoZSByZXN1bHQgb2YgcnVubmluZyBlYWNoIG9mIGl0cyBvd25cbiAgICAgKiBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIHRocnUgYGl0ZXJhdGVlYCwgd2l0aCBlYWNoIGludm9jYXRpb25cbiAgICAgKiBwb3RlbnRpYWxseSBtdXRhdGluZyB0aGUgYGFjY3VtdWxhdG9yYCBvYmplY3QuIElmIGBhY2N1bXVsYXRvcmAgaXMgbm90XG4gICAgICogcHJvdmlkZWQsIGEgbmV3IG9iamVjdCB3aXRoIHRoZSBzYW1lIGBbW1Byb3RvdHlwZV1dYCB3aWxsIGJlIHVzZWQuIFRoZVxuICAgICAqIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBmb3VyIGFyZ3VtZW50czogKGFjY3VtdWxhdG9yLCB2YWx1ZSwga2V5LCBvYmplY3QpLlxuICAgICAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjMuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgY3VzdG9tIGFjY3VtdWxhdG9yIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50cmFuc2Zvcm0oWzIsIDMsIDRdLCBmdW5jdGlvbihyZXN1bHQsIG4pIHtcbiAgICAgKiAgIHJlc3VsdC5wdXNoKG4gKj0gbik7XG4gICAgICogICByZXR1cm4gbiAlIDIgPT0gMDtcbiAgICAgKiB9LCBbXSk7XG4gICAgICogLy8gPT4gWzQsIDldXG4gICAgICpcbiAgICAgKiBfLnRyYW5zZm9ybSh7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfSwgZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICogICAocmVzdWx0W3ZhbHVlXSB8fCAocmVzdWx0W3ZhbHVlXSA9IFtdKSkucHVzaChrZXkpO1xuICAgICAqIH0sIHt9KTtcbiAgICAgKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJhbnNmb3JtKG9iamVjdCwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgICB2YXIgaXNBcnIgPSBpc0FycmF5KG9iamVjdCksXG4gICAgICAgICAgaXNBcnJMaWtlID0gaXNBcnIgfHwgaXNCdWZmZXIob2JqZWN0KSB8fCBpc1R5cGVkQXJyYXkob2JqZWN0KTtcblxuICAgICAgaXRlcmF0ZWUgPSBnZXRJdGVyYXRlZShpdGVyYXRlZSwgNCk7XG4gICAgICBpZiAoYWNjdW11bGF0b3IgPT0gbnVsbCkge1xuICAgICAgICB2YXIgQ3RvciA9IG9iamVjdCAmJiBvYmplY3QuY29uc3RydWN0b3I7XG4gICAgICAgIGlmIChpc0Fyckxpa2UpIHtcbiAgICAgICAgICBhY2N1bXVsYXRvciA9IGlzQXJyID8gbmV3IEN0b3IgOiBbXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc09iamVjdChvYmplY3QpKSB7XG4gICAgICAgICAgYWNjdW11bGF0b3IgPSBpc0Z1bmN0aW9uKEN0b3IpID8gYmFzZUNyZWF0ZShnZXRQcm90b3R5cGUob2JqZWN0KSkgOiB7fTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBhY2N1bXVsYXRvciA9IHt9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAoaXNBcnJMaWtlID8gYXJyYXlFYWNoIDogYmFzZUZvck93bikob2JqZWN0LCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIG9iamVjdCkge1xuICAgICAgICByZXR1cm4gaXRlcmF0ZWUoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgb2JqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgdGhlIHByb3BlcnR5IGF0IGBwYXRoYCBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHVuc2V0LlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgcHJvcGVydHkgaXMgZGVsZXRlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDcgfSB9XSB9O1xuICAgICAqIF8udW5zZXQob2JqZWN0LCAnYVswXS5iLmMnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QpO1xuICAgICAqIC8vID0+IHsgJ2EnOiBbeyAnYic6IHt9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLnVuc2V0KG9iamVjdCwgWydhJywgJzAnLCAnYicsICdjJ10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdCk7XG4gICAgICogLy8gPT4geyAnYSc6IFt7ICdiJzoge30gfV0gfTtcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bnNldChvYmplY3QsIHBhdGgpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHRydWUgOiBiYXNlVW5zZXQob2JqZWN0LCBwYXRoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNldGAgZXhjZXB0IHRoYXQgYWNjZXB0cyBgdXBkYXRlcmAgdG8gcHJvZHVjZSB0aGVcbiAgICAgKiB2YWx1ZSB0byBzZXQuIFVzZSBgXy51cGRhdGVXaXRoYCB0byBjdXN0b21pemUgYHBhdGhgIGNyZWF0aW9uLiBUaGUgYHVwZGF0ZXJgXG4gICAgICogaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNi4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB1cGRhdGVyIFRoZSBmdW5jdGlvbiB0byBwcm9kdWNlIHRoZSB1cGRhdGVkIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLnVwZGF0ZShvYmplY3QsICdhWzBdLmIuYycsIGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG4gKiBuOyB9KTtcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QuYVswXS5iLmMpO1xuICAgICAqIC8vID0+IDlcbiAgICAgKlxuICAgICAqIF8udXBkYXRlKG9iamVjdCwgJ3hbMF0ueS56JywgZnVuY3Rpb24obikgeyByZXR1cm4gbiA/IG4gKyAxIDogMDsgfSk7XG4gICAgICogY29uc29sZS5sb2cob2JqZWN0LnhbMF0ueS56KTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICovXG4gICAgZnVuY3Rpb24gdXBkYXRlKG9iamVjdCwgcGF0aCwgdXBkYXRlcikge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gb2JqZWN0IDogYmFzZVVwZGF0ZShvYmplY3QsIHBhdGgsIGNhc3RGdW5jdGlvbih1cGRhdGVyKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51cGRhdGVgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCB0byBwcm9kdWNlIHRoZSBvYmplY3RzIG9mIGBwYXRoYC4gIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgXG4gICAgICogcGF0aCBjcmVhdGlvbiBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6IChuc1ZhbHVlLCBrZXksIG5zT2JqZWN0KS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNi4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB1cGRhdGVyIFRoZSBmdW5jdGlvbiB0byBwcm9kdWNlIHRoZSB1cGRhdGVkIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0ge307XG4gICAgICpcbiAgICAgKiBfLnVwZGF0ZVdpdGgob2JqZWN0LCAnWzBdWzFdJywgXy5jb25zdGFudCgnYScpLCBPYmplY3QpO1xuICAgICAqIC8vID0+IHsgJzAnOiB7ICcxJzogJ2EnIH0gfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVwZGF0ZVdpdGgob2JqZWN0LCBwYXRoLCB1cGRhdGVyLCBjdXN0b21pemVyKSB7XG4gICAgICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBiYXNlVXBkYXRlKG9iamVjdCwgcGF0aCwgY2FzdEZ1bmN0aW9uKHVwZGF0ZXIpLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydHkgdmFsdWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy52YWx1ZXMobmV3IEZvbyk7XG4gICAgICogLy8gPT4gWzEsIDJdIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiBfLnZhbHVlcygnaGknKTtcbiAgICAgKiAvLyA9PiBbJ2gnLCAnaSddXG4gICAgICovXG4gICAgZnVuY3Rpb24gdmFsdWVzKG9iamVjdCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gW10gOiBiYXNlVmFsdWVzKG9iamVjdCwga2V5cyhvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0eVxuICAgICAqIHZhbHVlcyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8udmFsdWVzSW4obmV3IEZvbyk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgZnVuY3Rpb24gdmFsdWVzSW4ob2JqZWN0KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBbXSA6IGJhc2VWYWx1ZXMob2JqZWN0LCBrZXlzSW4ob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ2xhbXBzIGBudW1iZXJgIHdpdGhpbiB0aGUgaW5jbHVzaXZlIGBsb3dlcmAgYW5kIGB1cHBlcmAgYm91bmRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE51bWJlclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byBjbGFtcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xvd2VyXSBUaGUgbG93ZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHVwcGVyIFRoZSB1cHBlciBib3VuZC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjbGFtcGVkIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jbGFtcCgtMTAsIC01LCA1KTtcbiAgICAgKiAvLyA9PiAtNVxuICAgICAqXG4gICAgICogXy5jbGFtcCgxMCwgLTUsIDUpO1xuICAgICAqIC8vID0+IDVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbGFtcChudW1iZXIsIGxvd2VyLCB1cHBlcikge1xuICAgICAgaWYgKHVwcGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdXBwZXIgPSBsb3dlcjtcbiAgICAgICAgbG93ZXIgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBpZiAodXBwZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB1cHBlciA9IHRvTnVtYmVyKHVwcGVyKTtcbiAgICAgICAgdXBwZXIgPSB1cHBlciA9PT0gdXBwZXIgPyB1cHBlciA6IDA7XG4gICAgICB9XG4gICAgICBpZiAobG93ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsb3dlciA9IHRvTnVtYmVyKGxvd2VyKTtcbiAgICAgICAgbG93ZXIgPSBsb3dlciA9PT0gbG93ZXIgPyBsb3dlciA6IDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUNsYW1wKHRvTnVtYmVyKG51bWJlciksIGxvd2VyLCB1cHBlcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBuYCBpcyBiZXR3ZWVuIGBzdGFydGAgYW5kIHVwIHRvLCBidXQgbm90IGluY2x1ZGluZywgYGVuZGAuIElmXG4gICAgICogYGVuZGAgaXMgbm90IHNwZWNpZmllZCwgaXQncyBzZXQgdG8gYHN0YXJ0YCB3aXRoIGBzdGFydGAgdGhlbiBzZXQgdG8gYDBgLlxuICAgICAqIElmIGBzdGFydGAgaXMgZ3JlYXRlciB0aGFuIGBlbmRgIHRoZSBwYXJhbXMgYXJlIHN3YXBwZWQgdG8gc3VwcG9ydFxuICAgICAqIG5lZ2F0aXZlIHJhbmdlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjMuMFxuICAgICAqIEBjYXRlZ29yeSBOdW1iZXJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gY2hlY2suXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBudW1iZXJgIGlzIGluIHRoZSByYW5nZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBzZWUgXy5yYW5nZSwgXy5yYW5nZVJpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSgzLCAyLCA0KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoNCwgOCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKDQsIDIpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoMiwgMik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSgxLjIsIDIpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSg1LjIsIDQpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoLTMsIC0yLCAtNik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluUmFuZ2UobnVtYmVyLCBzdGFydCwgZW5kKSB7XG4gICAgICBzdGFydCA9IHRvRmluaXRlKHN0YXJ0KTtcbiAgICAgIGlmIChlbmQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBlbmQgPSBzdGFydDtcbiAgICAgICAgc3RhcnQgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW5kID0gdG9GaW5pdGUoZW5kKTtcbiAgICAgIH1cbiAgICAgIG51bWJlciA9IHRvTnVtYmVyKG51bWJlcik7XG4gICAgICByZXR1cm4gYmFzZUluUmFuZ2UobnVtYmVyLCBzdGFydCwgZW5kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9kdWNlcyBhIHJhbmRvbSBudW1iZXIgYmV0d2VlbiB0aGUgaW5jbHVzaXZlIGBsb3dlcmAgYW5kIGB1cHBlcmAgYm91bmRzLlxuICAgICAqIElmIG9ubHkgb25lIGFyZ3VtZW50IGlzIHByb3ZpZGVkIGEgbnVtYmVyIGJldHdlZW4gYDBgIGFuZCB0aGUgZ2l2ZW4gbnVtYmVyXG4gICAgICogaXMgcmV0dXJuZWQuIElmIGBmbG9hdGluZ2AgaXMgYHRydWVgLCBvciBlaXRoZXIgYGxvd2VyYCBvciBgdXBwZXJgIGFyZVxuICAgICAqIGZsb2F0cywgYSBmbG9hdGluZy1wb2ludCBudW1iZXIgaXMgcmV0dXJuZWQgaW5zdGVhZCBvZiBhbiBpbnRlZ2VyLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIEphdmFTY3JpcHQgZm9sbG93cyB0aGUgSUVFRS03NTQgc3RhbmRhcmQgZm9yIHJlc29sdmluZ1xuICAgICAqIGZsb2F0aW5nLXBvaW50IHZhbHVlcyB3aGljaCBjYW4gcHJvZHVjZSB1bmV4cGVjdGVkIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC43LjBcbiAgICAgKiBAY2F0ZWdvcnkgTnVtYmVyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsb3dlcj0wXSBUaGUgbG93ZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFt1cHBlcj0xXSBUaGUgdXBwZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZmxvYXRpbmddIFNwZWNpZnkgcmV0dXJuaW5nIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHJhbmRvbSBudW1iZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmFuZG9tKDAsIDUpO1xuICAgICAqIC8vID0+IGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCA1XG4gICAgICpcbiAgICAgKiBfLnJhbmRvbSg1KTtcbiAgICAgKiAvLyA9PiBhbHNvIGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCA1XG4gICAgICpcbiAgICAgKiBfLnJhbmRvbSg1LCB0cnVlKTtcbiAgICAgKiAvLyA9PiBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBiZXR3ZWVuIDAgYW5kIDVcbiAgICAgKlxuICAgICAqIF8ucmFuZG9tKDEuMiwgNS4yKTtcbiAgICAgKiAvLyA9PiBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBiZXR3ZWVuIDEuMiBhbmQgNS4yXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmFuZG9tKGxvd2VyLCB1cHBlciwgZmxvYXRpbmcpIHtcbiAgICAgIGlmIChmbG9hdGluZyAmJiB0eXBlb2YgZmxvYXRpbmcgIT0gJ2Jvb2xlYW4nICYmIGlzSXRlcmF0ZWVDYWxsKGxvd2VyLCB1cHBlciwgZmxvYXRpbmcpKSB7XG4gICAgICAgIHVwcGVyID0gZmxvYXRpbmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBpZiAoZmxvYXRpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIHVwcGVyID09ICdib29sZWFuJykge1xuICAgICAgICAgIGZsb2F0aW5nID0gdXBwZXI7XG4gICAgICAgICAgdXBwZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIGxvd2VyID09ICdib29sZWFuJykge1xuICAgICAgICAgIGZsb2F0aW5nID0gbG93ZXI7XG4gICAgICAgICAgbG93ZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChsb3dlciA9PT0gdW5kZWZpbmVkICYmIHVwcGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbG93ZXIgPSAwO1xuICAgICAgICB1cHBlciA9IDE7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgbG93ZXIgPSB0b0Zpbml0ZShsb3dlcik7XG4gICAgICAgIGlmICh1cHBlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdXBwZXIgPSBsb3dlcjtcbiAgICAgICAgICBsb3dlciA9IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdXBwZXIgPSB0b0Zpbml0ZSh1cHBlcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChsb3dlciA+IHVwcGVyKSB7XG4gICAgICAgIHZhciB0ZW1wID0gbG93ZXI7XG4gICAgICAgIGxvd2VyID0gdXBwZXI7XG4gICAgICAgIHVwcGVyID0gdGVtcDtcbiAgICAgIH1cbiAgICAgIGlmIChmbG9hdGluZyB8fCBsb3dlciAlIDEgfHwgdXBwZXIgJSAxKSB7XG4gICAgICAgIHZhciByYW5kID0gbmF0aXZlUmFuZG9tKCk7XG4gICAgICAgIHJldHVybiBuYXRpdmVNaW4obG93ZXIgKyAocmFuZCAqICh1cHBlciAtIGxvd2VyICsgZnJlZVBhcnNlRmxvYXQoJzFlLScgKyAoKHJhbmQgKyAnJykubGVuZ3RoIC0gMSkpKSksIHVwcGVyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlUmFuZG9tKGxvd2VyLCB1cHBlcik7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG8gW2NhbWVsIGNhc2VdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhbWVsQ2FzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjYW1lbCBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY2FtZWxDYXNlKCdGb28gQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvb0JhcidcbiAgICAgKlxuICAgICAqIF8uY2FtZWxDYXNlKCctLWZvby1iYXItLScpO1xuICAgICAqIC8vID0+ICdmb29CYXInXG4gICAgICpcbiAgICAgKiBfLmNhbWVsQ2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnZm9vQmFyJ1xuICAgICAqL1xuICAgIHZhciBjYW1lbENhc2UgPSBjcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCwgd29yZCwgaW5kZXgpIHtcbiAgICAgIHdvcmQgPSB3b3JkLnRvTG93ZXJDYXNlKCk7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gY2FwaXRhbGl6ZSh3b3JkKSA6IHdvcmQpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBgc3RyaW5nYCB0byB1cHBlciBjYXNlIGFuZCB0aGUgcmVtYWluaW5nXG4gICAgICogdG8gbG93ZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjYXBpdGFsaXplLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNhcGl0YWxpemVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jYXBpdGFsaXplKCdGUkVEJyk7XG4gICAgICogLy8gPT4gJ0ZyZWQnXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2FwaXRhbGl6ZShzdHJpbmcpIHtcbiAgICAgIHJldHVybiB1cHBlckZpcnN0KHRvU3RyaW5nKHN0cmluZykudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVidXJycyBgc3RyaW5nYCBieSBjb252ZXJ0aW5nXG4gICAgICogW0xhdGluLTEgU3VwcGxlbWVudF0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGF0aW4tMV9TdXBwbGVtZW50XyhVbmljb2RlX2Jsb2NrKSNDaGFyYWN0ZXJfdGFibGUpXG4gICAgICogYW5kIFtMYXRpbiBFeHRlbmRlZC1BXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MYXRpbl9FeHRlbmRlZC1BKVxuICAgICAqIGxldHRlcnMgdG8gYmFzaWMgTGF0aW4gbGV0dGVycyBhbmQgcmVtb3ZpbmdcbiAgICAgKiBbY29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21iaW5pbmdfRGlhY3JpdGljYWxfTWFya3MpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGRlYnVyci5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBkZWJ1cnJlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVidXJyKCdkw6lqw6AgdnUnKTtcbiAgICAgKiAvLyA9PiAnZGVqYSB2dSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkZWJ1cnIoc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcmV0dXJuIHN0cmluZyAmJiBzdHJpbmcucmVwbGFjZShyZUxhdGluLCBkZWJ1cnJMZXR0ZXIpLnJlcGxhY2UocmVDb21ib01hcmssICcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHN0cmluZ2AgZW5kcyB3aXRoIHRoZSBnaXZlbiB0YXJnZXQgc3RyaW5nLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFt0YXJnZXRdIFRoZSBzdHJpbmcgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3Bvc2l0aW9uPXN0cmluZy5sZW5ndGhdIFRoZSBwb3NpdGlvbiB0byBzZWFyY2ggdXAgdG8uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBzdHJpbmdgIGVuZHMgd2l0aCBgdGFyZ2V0YCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmVuZHNXaXRoKCdhYmMnLCAnYycpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uZW5kc1dpdGgoJ2FiYycsICdiJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uZW5kc1dpdGgoJ2FiYycsICdiJywgMik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVuZHNXaXRoKHN0cmluZywgdGFyZ2V0LCBwb3NpdGlvbikge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHRhcmdldCA9IGJhc2VUb1N0cmluZyh0YXJnZXQpO1xuXG4gICAgICB2YXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcbiAgICAgIHBvc2l0aW9uID0gcG9zaXRpb24gPT09IHVuZGVmaW5lZFxuICAgICAgICA/IGxlbmd0aFxuICAgICAgICA6IGJhc2VDbGFtcCh0b0ludGVnZXIocG9zaXRpb24pLCAwLCBsZW5ndGgpO1xuXG4gICAgICB2YXIgZW5kID0gcG9zaXRpb247XG4gICAgICBwb3NpdGlvbiAtPSB0YXJnZXQubGVuZ3RoO1xuICAgICAgcmV0dXJuIHBvc2l0aW9uID49IDAgJiYgc3RyaW5nLnNsaWNlKHBvc2l0aW9uLCBlbmQpID09IHRhcmdldDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgY2hhcmFjdGVycyBcIiZcIiwgXCI8XCIsIFwiPlwiLCAnXCInLCBhbmQgXCInXCIgaW4gYHN0cmluZ2AgdG8gdGhlaXJcbiAgICAgKiBjb3JyZXNwb25kaW5nIEhUTUwgZW50aXRpZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTm8gb3RoZXIgY2hhcmFjdGVycyBhcmUgZXNjYXBlZC4gVG8gZXNjYXBlIGFkZGl0aW9uYWxcbiAgICAgKiBjaGFyYWN0ZXJzIHVzZSBhIHRoaXJkLXBhcnR5IGxpYnJhcnkgbGlrZSBbX2hlX10oaHR0cHM6Ly9tdGhzLmJlL2hlKS5cbiAgICAgKlxuICAgICAqIFRob3VnaCB0aGUgXCI+XCIgY2hhcmFjdGVyIGlzIGVzY2FwZWQgZm9yIHN5bW1ldHJ5LCBjaGFyYWN0ZXJzIGxpa2VcbiAgICAgKiBcIj5cIiBhbmQgXCIvXCIgZG9uJ3QgbmVlZCBlc2NhcGluZyBpbiBIVE1MIGFuZCBoYXZlIG5vIHNwZWNpYWwgbWVhbmluZ1xuICAgICAqIHVubGVzcyB0aGV5J3JlIHBhcnQgb2YgYSB0YWcgb3IgdW5xdW90ZWQgYXR0cmlidXRlIHZhbHVlLiBTZWVcbiAgICAgKiBbTWF0aGlhcyBCeW5lbnMncyBhcnRpY2xlXShodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvYW1iaWd1b3VzLWFtcGVyc2FuZHMpXG4gICAgICogKHVuZGVyIFwic2VtaS1yZWxhdGVkIGZ1biBmYWN0XCIpIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICpcbiAgICAgKiBXaGVuIHdvcmtpbmcgd2l0aCBIVE1MIHlvdSBzaG91bGQgYWx3YXlzXG4gICAgICogW3F1b3RlIGF0dHJpYnV0ZSB2YWx1ZXNdKGh0dHA6Ly93b25rby5jb20vcG9zdC9odG1sLWVzY2FwaW5nKSB0byByZWR1Y2VcbiAgICAgKiBYU1MgdmVjdG9ycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBlc2NhcGUuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZXNjYXBlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZXNjYXBlKCdmcmVkLCBiYXJuZXksICYgcGViYmxlcycpO1xuICAgICAqIC8vID0+ICdmcmVkLCBiYXJuZXksICZhbXA7IHBlYmJsZXMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXNjYXBlKHN0cmluZykge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHJldHVybiAoc3RyaW5nICYmIHJlSGFzVW5lc2NhcGVkSHRtbC50ZXN0KHN0cmluZykpXG4gICAgICAgID8gc3RyaW5nLnJlcGxhY2UocmVVbmVzY2FwZWRIdG1sLCBlc2NhcGVIdG1sQ2hhcilcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXNjYXBlcyB0aGUgYFJlZ0V4cGAgc3BlY2lhbCBjaGFyYWN0ZXJzIFwiXlwiLCBcIiRcIiwgXCJcXFwiLCBcIi5cIiwgXCIqXCIsIFwiK1wiLFxuICAgICAqIFwiP1wiLCBcIihcIiwgXCIpXCIsIFwiW1wiLCBcIl1cIiwgXCJ7XCIsIFwifVwiLCBhbmQgXCJ8XCIgaW4gYHN0cmluZ2AuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gZXNjYXBlLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVzY2FwZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmVzY2FwZVJlZ0V4cCgnW2xvZGFzaF0oaHR0cHM6Ly9sb2Rhc2guY29tLyknKTtcbiAgICAgKiAvLyA9PiAnXFxbbG9kYXNoXFxdXFwoaHR0cHM6Ly9sb2Rhc2hcXC5jb20vXFwpJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVzY2FwZVJlZ0V4cChzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICByZXR1cm4gKHN0cmluZyAmJiByZUhhc1JlZ0V4cENoYXIudGVzdChzdHJpbmcpKVxuICAgICAgICA/IHN0cmluZy5yZXBsYWNlKHJlUmVnRXhwQ2hhciwgJ1xcXFwkJicpXG4gICAgICAgIDogc3RyaW5nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvXG4gICAgICogW2tlYmFiIGNhc2VdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xldHRlcl9jYXNlI1NwZWNpYWxfY2FzZV9zdHlsZXMpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUga2ViYWIgY2FzZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmtlYmFiQ2FzZSgnRm9vIEJhcicpO1xuICAgICAqIC8vID0+ICdmb28tYmFyJ1xuICAgICAqXG4gICAgICogXy5rZWJhYkNhc2UoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdmb28tYmFyJ1xuICAgICAqXG4gICAgICogXy5rZWJhYkNhc2UoJ19fRk9PX0JBUl9fJyk7XG4gICAgICogLy8gPT4gJ2Zvby1iYXInXG4gICAgICovXG4gICAgdmFyIGtlYmFiQ2FzZSA9IGNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LCB3b3JkLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHJlc3VsdCArIChpbmRleCA/ICctJyA6ICcnKSArIHdvcmQudG9Mb3dlckNhc2UoKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgLCBhcyBzcGFjZSBzZXBhcmF0ZWQgd29yZHMsIHRvIGxvd2VyIGNhc2UuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBsb3dlciBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubG93ZXJDYXNlKCctLUZvby1CYXItLScpO1xuICAgICAqIC8vID0+ICdmb28gYmFyJ1xuICAgICAqXG4gICAgICogXy5sb3dlckNhc2UoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdmb28gYmFyJ1xuICAgICAqXG4gICAgICogXy5sb3dlckNhc2UoJ19fRk9PX0JBUl9fJyk7XG4gICAgICogLy8gPT4gJ2ZvbyBiYXInXG4gICAgICovXG4gICAgdmFyIGxvd2VyQ2FzZSA9IGNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LCB3b3JkLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHJlc3VsdCArIChpbmRleCA/ICcgJyA6ICcnKSArIHdvcmQudG9Mb3dlckNhc2UoKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYHN0cmluZ2AgdG8gbG93ZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubG93ZXJGaXJzdCgnRnJlZCcpO1xuICAgICAqIC8vID0+ICdmcmVkJ1xuICAgICAqXG4gICAgICogXy5sb3dlckZpcnN0KCdGUkVEJyk7XG4gICAgICogLy8gPT4gJ2ZSRUQnXG4gICAgICovXG4gICAgdmFyIGxvd2VyRmlyc3QgPSBjcmVhdGVDYXNlRmlyc3QoJ3RvTG93ZXJDYXNlJyk7XG5cbiAgICAvKipcbiAgICAgKiBQYWRzIGBzdHJpbmdgIG9uIHRoZSBsZWZ0IGFuZCByaWdodCBzaWRlcyBpZiBpdCdzIHNob3J0ZXIgdGhhbiBgbGVuZ3RoYC5cbiAgICAgKiBQYWRkaW5nIGNoYXJhY3RlcnMgYXJlIHRydW5jYXRlZCBpZiB0aGV5IGNhbid0IGJlIGV2ZW5seSBkaXZpZGVkIGJ5IGBsZW5ndGhgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHBhZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD0wXSBUaGUgcGFkZGluZyBsZW5ndGguXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz0nICddIFRoZSBzdHJpbmcgdXNlZCBhcyBwYWRkaW5nLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHBhZGRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucGFkKCdhYmMnLCA4KTtcbiAgICAgKiAvLyA9PiAnICBhYmMgICAnXG4gICAgICpcbiAgICAgKiBfLnBhZCgnYWJjJywgOCwgJ18tJyk7XG4gICAgICogLy8gPT4gJ18tYWJjXy1fJ1xuICAgICAqXG4gICAgICogXy5wYWQoJ2FiYycsIDMpO1xuICAgICAqIC8vID0+ICdhYmMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gcGFkKHN0cmluZywgbGVuZ3RoLCBjaGFycykge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGxlbmd0aCA9IHRvSW50ZWdlcihsZW5ndGgpO1xuXG4gICAgICB2YXIgc3RyTGVuZ3RoID0gbGVuZ3RoID8gc3RyaW5nU2l6ZShzdHJpbmcpIDogMDtcbiAgICAgIGlmICghbGVuZ3RoIHx8IHN0ckxlbmd0aCA+PSBsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgIH1cbiAgICAgIHZhciBtaWQgPSAobGVuZ3RoIC0gc3RyTGVuZ3RoKSAvIDI7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBjcmVhdGVQYWRkaW5nKG5hdGl2ZUZsb29yKG1pZCksIGNoYXJzKSArXG4gICAgICAgIHN0cmluZyArXG4gICAgICAgIGNyZWF0ZVBhZGRpbmcobmF0aXZlQ2VpbChtaWQpLCBjaGFycylcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFkcyBgc3RyaW5nYCBvbiB0aGUgcmlnaHQgc2lkZSBpZiBpdCdzIHNob3J0ZXIgdGhhbiBgbGVuZ3RoYC4gUGFkZGluZ1xuICAgICAqIGNoYXJhY3RlcnMgYXJlIHRydW5jYXRlZCBpZiB0aGV5IGV4Y2VlZCBgbGVuZ3RoYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBwYWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9MF0gVGhlIHBhZGRpbmcgbGVuZ3RoLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9JyAnXSBUaGUgc3RyaW5nIHVzZWQgYXMgcGFkZGluZy5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBwYWRkZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnBhZEVuZCgnYWJjJywgNik7XG4gICAgICogLy8gPT4gJ2FiYyAgICdcbiAgICAgKlxuICAgICAqIF8ucGFkRW5kKCdhYmMnLCA2LCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnYWJjXy1fJ1xuICAgICAqXG4gICAgICogXy5wYWRFbmQoJ2FiYycsIDMpO1xuICAgICAqIC8vID0+ICdhYmMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gcGFkRW5kKHN0cmluZywgbGVuZ3RoLCBjaGFycykge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGxlbmd0aCA9IHRvSW50ZWdlcihsZW5ndGgpO1xuXG4gICAgICB2YXIgc3RyTGVuZ3RoID0gbGVuZ3RoID8gc3RyaW5nU2l6ZShzdHJpbmcpIDogMDtcbiAgICAgIHJldHVybiAobGVuZ3RoICYmIHN0ckxlbmd0aCA8IGxlbmd0aClcbiAgICAgICAgPyAoc3RyaW5nICsgY3JlYXRlUGFkZGluZyhsZW5ndGggLSBzdHJMZW5ndGgsIGNoYXJzKSlcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFkcyBgc3RyaW5nYCBvbiB0aGUgbGVmdCBzaWRlIGlmIGl0J3Mgc2hvcnRlciB0aGFuIGBsZW5ndGhgLiBQYWRkaW5nXG4gICAgICogY2hhcmFjdGVycyBhcmUgdHJ1bmNhdGVkIGlmIHRoZXkgZXhjZWVkIGBsZW5ndGhgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHBhZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD0wXSBUaGUgcGFkZGluZyBsZW5ndGguXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz0nICddIFRoZSBzdHJpbmcgdXNlZCBhcyBwYWRkaW5nLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHBhZGRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucGFkU3RhcnQoJ2FiYycsIDYpO1xuICAgICAqIC8vID0+ICcgICBhYmMnXG4gICAgICpcbiAgICAgKiBfLnBhZFN0YXJ0KCdhYmMnLCA2LCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnXy1fYWJjJ1xuICAgICAqXG4gICAgICogXy5wYWRTdGFydCgnYWJjJywgMyk7XG4gICAgICogLy8gPT4gJ2FiYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwYWRTdGFydChzdHJpbmcsIGxlbmd0aCwgY2hhcnMpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBsZW5ndGggPSB0b0ludGVnZXIobGVuZ3RoKTtcblxuICAgICAgdmFyIHN0ckxlbmd0aCA9IGxlbmd0aCA/IHN0cmluZ1NpemUoc3RyaW5nKSA6IDA7XG4gICAgICByZXR1cm4gKGxlbmd0aCAmJiBzdHJMZW5ndGggPCBsZW5ndGgpXG4gICAgICAgID8gKGNyZWF0ZVBhZGRpbmcobGVuZ3RoIC0gc3RyTGVuZ3RoLCBjaGFycykgKyBzdHJpbmcpXG4gICAgICAgIDogc3RyaW5nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvIGFuIGludGVnZXIgb2YgdGhlIHNwZWNpZmllZCByYWRpeC4gSWYgYHJhZGl4YCBpc1xuICAgICAqIGB1bmRlZmluZWRgIG9yIGAwYCwgYSBgcmFkaXhgIG9mIGAxMGAgaXMgdXNlZCB1bmxlc3MgYHZhbHVlYCBpcyBhXG4gICAgICogaGV4YWRlY2ltYWwsIGluIHdoaWNoIGNhc2UgYSBgcmFkaXhgIG9mIGAxNmAgaXMgdXNlZC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBhbGlnbnMgd2l0aCB0aGVcbiAgICAgKiBbRVM1IGltcGxlbWVudGF0aW9uXShodHRwczovL2VzNS5naXRodWIuaW8vI3gxNS4xLjIuMikgb2YgYHBhcnNlSW50YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjEuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3JhZGl4PTEwXSBUaGUgcmFkaXggdG8gaW50ZXJwcmV0IGB2YWx1ZWAgYnkuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5wYXJzZUludCgnMDgnKTtcbiAgICAgKiAvLyA9PiA4XG4gICAgICpcbiAgICAgKiBfLm1hcChbJzYnLCAnMDgnLCAnMTAnXSwgXy5wYXJzZUludCk7XG4gICAgICogLy8gPT4gWzYsIDgsIDEwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBhcnNlSW50KHN0cmluZywgcmFkaXgsIGd1YXJkKSB7XG4gICAgICBpZiAoZ3VhcmQgfHwgcmFkaXggPT0gbnVsbCkge1xuICAgICAgICByYWRpeCA9IDA7XG4gICAgICB9IGVsc2UgaWYgKHJhZGl4KSB7XG4gICAgICAgIHJhZGl4ID0gK3JhZGl4O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5hdGl2ZVBhcnNlSW50KHRvU3RyaW5nKHN0cmluZykucmVwbGFjZShyZVRyaW1TdGFydCwgJycpLCByYWRpeCB8fCAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXBlYXRzIHRoZSBnaXZlbiBzdHJpbmcgYG5gIHRpbWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHJlcGVhdC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiB0aW1lcyB0byByZXBlYXQgdGhlIHN0cmluZy5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHJlcGVhdGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yZXBlYXQoJyonLCAzKTtcbiAgICAgKiAvLyA9PiAnKioqJ1xuICAgICAqXG4gICAgICogXy5yZXBlYXQoJ2FiYycsIDIpO1xuICAgICAqIC8vID0+ICdhYmNhYmMnXG4gICAgICpcbiAgICAgKiBfLnJlcGVhdCgnYWJjJywgMCk7XG4gICAgICogLy8gPT4gJydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXBlYXQoc3RyaW5nLCBuLCBndWFyZCkge1xuICAgICAgaWYgKChndWFyZCA/IGlzSXRlcmF0ZWVDYWxsKHN0cmluZywgbiwgZ3VhcmQpIDogbiA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICBuID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG4gPSB0b0ludGVnZXIobik7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVJlcGVhdCh0b1N0cmluZyhzdHJpbmcpLCBuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXBsYWNlcyBtYXRjaGVzIGZvciBgcGF0dGVybmAgaW4gYHN0cmluZ2Agd2l0aCBgcmVwbGFjZW1lbnRgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICogW2BTdHJpbmcjcmVwbGFjZWBdKGh0dHBzOi8vbWRuLmlvL1N0cmluZy9yZXBsYWNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtSZWdFeHB8c3RyaW5nfSBwYXR0ZXJuIFRoZSBwYXR0ZXJuIHRvIHJlcGxhY2UuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbnxzdHJpbmd9IHJlcGxhY2VtZW50IFRoZSBtYXRjaCByZXBsYWNlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBtb2RpZmllZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmVwbGFjZSgnSGkgRnJlZCcsICdGcmVkJywgJ0Jhcm5leScpO1xuICAgICAqIC8vID0+ICdIaSBCYXJuZXknXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVwbGFjZSgpIHtcbiAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICAgIHN0cmluZyA9IHRvU3RyaW5nKGFyZ3NbMF0pO1xuXG4gICAgICByZXR1cm4gYXJncy5sZW5ndGggPCAzID8gc3RyaW5nIDogc3RyaW5nLnJlcGxhY2UoYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG9cbiAgICAgKiBbc25ha2UgY2FzZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU25ha2VfY2FzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzbmFrZSBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc25ha2VDYXNlKCdGb28gQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvb19iYXInXG4gICAgICpcbiAgICAgKiBfLnNuYWtlQ2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvb19iYXInXG4gICAgICpcbiAgICAgKiBfLnNuYWtlQ2FzZSgnLS1GT08tQkFSLS0nKTtcbiAgICAgKiAvLyA9PiAnZm9vX2JhcidcbiAgICAgKi9cbiAgICB2YXIgc25ha2VDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJ18nIDogJycpICsgd29yZC50b0xvd2VyQ2FzZSgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogU3BsaXRzIGBzdHJpbmdgIGJ5IGBzZXBhcmF0b3JgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICogW2BTdHJpbmcjc3BsaXRgXShodHRwczovL21kbi5pby9TdHJpbmcvc3BsaXQpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHNwbGl0LlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfHN0cmluZ30gc2VwYXJhdG9yIFRoZSBzZXBhcmF0b3IgcGF0dGVybiB0byBzcGxpdCBieS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xpbWl0XSBUaGUgbGVuZ3RoIHRvIHRydW5jYXRlIHJlc3VsdHMgdG8uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzdHJpbmcgc2VnbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc3BsaXQoJ2EtYi1jJywgJy0nLCAyKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYiddXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3BsaXQoc3RyaW5nLCBzZXBhcmF0b3IsIGxpbWl0KSB7XG4gICAgICBpZiAobGltaXQgJiYgdHlwZW9mIGxpbWl0ICE9ICdudW1iZXInICYmIGlzSXRlcmF0ZWVDYWxsKHN0cmluZywgc2VwYXJhdG9yLCBsaW1pdCkpIHtcbiAgICAgICAgc2VwYXJhdG9yID0gbGltaXQgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBsaW1pdCA9IGxpbWl0ID09PSB1bmRlZmluZWQgPyBNQVhfQVJSQVlfTEVOR1RIIDogbGltaXQgPj4+IDA7XG4gICAgICBpZiAoIWxpbWl0KSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBpZiAoc3RyaW5nICYmIChcbiAgICAgICAgICAgIHR5cGVvZiBzZXBhcmF0b3IgPT0gJ3N0cmluZycgfHxcbiAgICAgICAgICAgIChzZXBhcmF0b3IgIT0gbnVsbCAmJiAhaXNSZWdFeHAoc2VwYXJhdG9yKSlcbiAgICAgICAgICApKSB7XG4gICAgICAgIHNlcGFyYXRvciA9IGJhc2VUb1N0cmluZyhzZXBhcmF0b3IpO1xuICAgICAgICBpZiAoIXNlcGFyYXRvciAmJiBoYXNVbmljb2RlKHN0cmluZykpIHtcbiAgICAgICAgICByZXR1cm4gY2FzdFNsaWNlKHN0cmluZ1RvQXJyYXkoc3RyaW5nKSwgMCwgbGltaXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RyaW5nLnNwbGl0KHNlcGFyYXRvciwgbGltaXQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvXG4gICAgICogW3N0YXJ0IGNhc2VdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xldHRlcl9jYXNlI1N0eWxpc3RpY19vcl9zcGVjaWFsaXNlZF91c2FnZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzdGFydCBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc3RhcnRDYXNlKCctLWZvby1iYXItLScpO1xuICAgICAqIC8vID0+ICdGb28gQmFyJ1xuICAgICAqXG4gICAgICogXy5zdGFydENhc2UoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdGb28gQmFyJ1xuICAgICAqXG4gICAgICogXy5zdGFydENhc2UoJ19fRk9PX0JBUl9fJyk7XG4gICAgICogLy8gPT4gJ0ZPTyBCQVInXG4gICAgICovXG4gICAgdmFyIHN0YXJ0Q2FzZSA9IGNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LCB3b3JkLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHJlc3VsdCArIChpbmRleCA/ICcgJyA6ICcnKSArIHVwcGVyRmlyc3Qod29yZCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHN0cmluZ2Agc3RhcnRzIHdpdGggdGhlIGdpdmVuIHRhcmdldCBzdHJpbmcuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3RhcmdldF0gVGhlIHN0cmluZyB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcG9zaXRpb249MF0gVGhlIHBvc2l0aW9uIHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgc3RyaW5nYCBzdGFydHMgd2l0aCBgdGFyZ2V0YCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0c1dpdGgoJ2FiYycsICdhJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5zdGFydHNXaXRoKCdhYmMnLCAnYicpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0c1dpdGgoJ2FiYycsICdiJywgMSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YXJ0c1dpdGgoc3RyaW5nLCB0YXJnZXQsIHBvc2l0aW9uKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbiA9PSBudWxsXG4gICAgICAgID8gMFxuICAgICAgICA6IGJhc2VDbGFtcCh0b0ludGVnZXIocG9zaXRpb24pLCAwLCBzdHJpbmcubGVuZ3RoKTtcblxuICAgICAgdGFyZ2V0ID0gYmFzZVRvU3RyaW5nKHRhcmdldCk7XG4gICAgICByZXR1cm4gc3RyaW5nLnNsaWNlKHBvc2l0aW9uLCBwb3NpdGlvbiArIHRhcmdldC5sZW5ndGgpID09IHRhcmdldDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY29tcGlsZWQgdGVtcGxhdGUgZnVuY3Rpb24gdGhhdCBjYW4gaW50ZXJwb2xhdGUgZGF0YSBwcm9wZXJ0aWVzXG4gICAgICogaW4gXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlcnMsIEhUTUwtZXNjYXBlIGludGVycG9sYXRlZCBkYXRhIHByb3BlcnRpZXMgaW5cbiAgICAgKiBcImVzY2FwZVwiIGRlbGltaXRlcnMsIGFuZCBleGVjdXRlIEphdmFTY3JpcHQgaW4gXCJldmFsdWF0ZVwiIGRlbGltaXRlcnMuIERhdGFcbiAgICAgKiBwcm9wZXJ0aWVzIG1heSBiZSBhY2Nlc3NlZCBhcyBmcmVlIHZhcmlhYmxlcyBpbiB0aGUgdGVtcGxhdGUuIElmIGEgc2V0dGluZ1xuICAgICAqIG9iamVjdCBpcyBnaXZlbiwgaXQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGBfLnRlbXBsYXRlU2V0dGluZ3NgIHZhbHVlcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBJbiB0aGUgZGV2ZWxvcG1lbnQgYnVpbGQgYF8udGVtcGxhdGVgIHV0aWxpemVzXG4gICAgICogW3NvdXJjZVVSTHNdKGh0dHA6Ly93d3cuaHRtbDVyb2Nrcy5jb20vZW4vdHV0b3JpYWxzL2RldmVsb3BlcnRvb2xzL3NvdXJjZW1hcHMvI3RvYy1zb3VyY2V1cmwpXG4gICAgICogZm9yIGVhc2llciBkZWJ1Z2dpbmcuXG4gICAgICpcbiAgICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBwcmVjb21waWxpbmcgdGVtcGxhdGVzIHNlZVxuICAgICAqIFtsb2Rhc2gncyBjdXN0b20gYnVpbGRzIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vbG9kYXNoLmNvbS9jdXN0b20tYnVpbGRzKS5cbiAgICAgKlxuICAgICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIENocm9tZSBleHRlbnNpb24gc2FuZGJveGVzIHNlZVxuICAgICAqIFtDaHJvbWUncyBleHRlbnNpb25zIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9zYW5kYm94aW5nRXZhbCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSB0ZW1wbGF0ZSBzdHJpbmcuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPXt9XSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gICAgICogQHBhcmFtIHtSZWdFeHB9IFtvcHRpb25zLmVzY2FwZT1fLnRlbXBsYXRlU2V0dGluZ3MuZXNjYXBlXVxuICAgICAqICBUaGUgSFRNTCBcImVzY2FwZVwiIGRlbGltaXRlci5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cH0gW29wdGlvbnMuZXZhbHVhdGU9Xy50ZW1wbGF0ZVNldHRpbmdzLmV2YWx1YXRlXVxuICAgICAqICBUaGUgXCJldmFsdWF0ZVwiIGRlbGltaXRlci5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnMuaW1wb3J0cz1fLnRlbXBsYXRlU2V0dGluZ3MuaW1wb3J0c11cbiAgICAgKiAgQW4gb2JqZWN0IHRvIGltcG9ydCBpbnRvIHRoZSB0ZW1wbGF0ZSBhcyBmcmVlIHZhcmlhYmxlcy5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cH0gW29wdGlvbnMuaW50ZXJwb2xhdGU9Xy50ZW1wbGF0ZVNldHRpbmdzLmludGVycG9sYXRlXVxuICAgICAqICBUaGUgXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlci5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuc291cmNlVVJMPSdsb2Rhc2gudGVtcGxhdGVTb3VyY2VzW25dJ11cbiAgICAgKiAgVGhlIHNvdXJjZVVSTCBvZiB0aGUgY29tcGlsZWQgdGVtcGxhdGUuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnZhcmlhYmxlPSdvYmonXVxuICAgICAqICBUaGUgZGF0YSBvYmplY3QgdmFyaWFibGUgbmFtZS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgY29tcGlsZWQgdGVtcGxhdGUgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlciB0byBjcmVhdGUgYSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyA8JT0gdXNlciAlPiEnKTtcbiAgICAgKiBjb21waWxlZCh7ICd1c2VyJzogJ2ZyZWQnIH0pO1xuICAgICAqIC8vID0+ICdoZWxsbyBmcmVkISdcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgSFRNTCBcImVzY2FwZVwiIGRlbGltaXRlciB0byBlc2NhcGUgZGF0YSBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPGI+PCUtIHZhbHVlICU+PC9iPicpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3ZhbHVlJzogJzxzY3JpcHQ+JyB9KTtcbiAgICAgKiAvLyA9PiAnPGI+Jmx0O3NjcmlwdCZndDs8L2I+J1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBcImV2YWx1YXRlXCIgZGVsaW1pdGVyIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBhbmQgZ2VuZXJhdGUgSFRNTC5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCc8JSBfLmZvckVhY2godXNlcnMsIGZ1bmN0aW9uKHVzZXIpIHsgJT48bGk+PCUtIHVzZXIgJT48L2xpPjwlIH0pOyAlPicpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3VzZXJzJzogWydmcmVkJywgJ2Jhcm5leSddIH0pO1xuICAgICAqIC8vID0+ICc8bGk+ZnJlZDwvbGk+PGxpPmJhcm5leTwvbGk+J1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBpbnRlcm5hbCBgcHJpbnRgIGZ1bmN0aW9uIGluIFwiZXZhbHVhdGVcIiBkZWxpbWl0ZXJzLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzwlIHByaW50KFwiaGVsbG8gXCIgKyB1c2VyKTsgJT4hJyk7XG4gICAgICogY29tcGlsZWQoeyAndXNlcic6ICdiYXJuZXknIH0pO1xuICAgICAqIC8vID0+ICdoZWxsbyBiYXJuZXkhJ1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBFUyB0ZW1wbGF0ZSBsaXRlcmFsIGRlbGltaXRlciBhcyBhbiBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyLlxuICAgICAqIC8vIERpc2FibGUgc3VwcG9ydCBieSByZXBsYWNpbmcgdGhlIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGVsbG8gJHsgdXNlciB9IScpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3VzZXInOiAncGViYmxlcycgfSk7XG4gICAgICogLy8gPT4gJ2hlbGxvIHBlYmJsZXMhJ1xuICAgICAqXG4gICAgICogLy8gVXNlIGJhY2tzbGFzaGVzIHRvIHRyZWF0IGRlbGltaXRlcnMgYXMgcGxhaW4gdGV4dC5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCc8JT0gXCJcXFxcPCUtIHZhbHVlICVcXFxcPlwiICU+Jyk7XG4gICAgICogY29tcGlsZWQoeyAndmFsdWUnOiAnaWdub3JlZCcgfSk7XG4gICAgICogLy8gPT4gJzwlLSB2YWx1ZSAlPidcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgYGltcG9ydHNgIG9wdGlvbiB0byBpbXBvcnQgYGpRdWVyeWAgYXMgYGpxYC5cbiAgICAgKiB2YXIgdGV4dCA9ICc8JSBqcS5lYWNoKHVzZXJzLCBmdW5jdGlvbih1c2VyKSB7ICU+PGxpPjwlLSB1c2VyICU+PC9saT48JSB9KTsgJT4nO1xuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUodGV4dCwgeyAnaW1wb3J0cyc6IHsgJ2pxJzogalF1ZXJ5IH0gfSk7XG4gICAgICogY29tcGlsZWQoeyAndXNlcnMnOiBbJ2ZyZWQnLCAnYmFybmV5J10gfSk7XG4gICAgICogLy8gPT4gJzxsaT5mcmVkPC9saT48bGk+YmFybmV5PC9saT4nXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGBzb3VyY2VVUkxgIG9wdGlvbiB0byBzcGVjaWZ5IGEgY3VzdG9tIHNvdXJjZVVSTCBmb3IgdGhlIHRlbXBsYXRlLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hlbGxvIDwlPSB1c2VyICU+IScsIHsgJ3NvdXJjZVVSTCc6ICcvYmFzaWMvZ3JlZXRpbmcuanN0JyB9KTtcbiAgICAgKiBjb21waWxlZChkYXRhKTtcbiAgICAgKiAvLyA9PiBGaW5kIHRoZSBzb3VyY2Ugb2YgXCJncmVldGluZy5qc3RcIiB1bmRlciB0aGUgU291cmNlcyB0YWIgb3IgUmVzb3VyY2VzIHBhbmVsIG9mIHRoZSB3ZWIgaW5zcGVjdG9yLlxuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBgdmFyaWFibGVgIG9wdGlvbiB0byBlbnN1cmUgYSB3aXRoLXN0YXRlbWVudCBpc24ndCB1c2VkIGluIHRoZSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoaSA8JT0gZGF0YS51c2VyICU+IScsIHsgJ3ZhcmlhYmxlJzogJ2RhdGEnIH0pO1xuICAgICAqIGNvbXBpbGVkLnNvdXJjZTtcbiAgICAgKiAvLyA9PiBmdW5jdGlvbihkYXRhKSB7XG4gICAgICogLy8gICB2YXIgX190LCBfX3AgPSAnJztcbiAgICAgKiAvLyAgIF9fcCArPSAnaGkgJyArICgoX190ID0gKCBkYXRhLnVzZXIgKSkgPT0gbnVsbCA/ICcnIDogX190KSArICchJztcbiAgICAgKiAvLyAgIHJldHVybiBfX3A7XG4gICAgICogLy8gfVxuICAgICAqXG4gICAgICogLy8gVXNlIGN1c3RvbSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLlxuICAgICAqIF8udGVtcGxhdGVTZXR0aW5ncy5pbnRlcnBvbGF0ZSA9IC97eyhbXFxzXFxTXSs/KX19L2c7XG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGVsbG8ge3sgdXNlciB9fSEnKTtcbiAgICAgKiBjb21waWxlZCh7ICd1c2VyJzogJ211c3RhY2hlJyB9KTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gbXVzdGFjaGUhJ1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBgc291cmNlYCBwcm9wZXJ0eSB0byBpbmxpbmUgY29tcGlsZWQgdGVtcGxhdGVzIGZvciBtZWFuaW5nZnVsXG4gICAgICogLy8gbGluZSBudW1iZXJzIGluIGVycm9yIG1lc3NhZ2VzIGFuZCBzdGFjayB0cmFjZXMuXG4gICAgICogZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJ2pzdC5qcycpLCAnXFxcbiAgICAgKiAgIHZhciBKU1QgPSB7XFxcbiAgICAgKiAgICAgXCJtYWluXCI6ICcgKyBfLnRlbXBsYXRlKG1haW5UZXh0KS5zb3VyY2UgKyAnXFxcbiAgICAgKiAgIH07XFxcbiAgICAgKiAnKTtcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0ZW1wbGF0ZShzdHJpbmcsIG9wdGlvbnMsIGd1YXJkKSB7XG4gICAgICAvLyBCYXNlZCBvbiBKb2huIFJlc2lnJ3MgYHRtcGxgIGltcGxlbWVudGF0aW9uXG4gICAgICAvLyAoaHR0cDovL2Vqb2huLm9yZy9ibG9nL2phdmFzY3JpcHQtbWljcm8tdGVtcGxhdGluZy8pXG4gICAgICAvLyBhbmQgTGF1cmEgRG9rdG9yb3ZhJ3MgZG9ULmpzIChodHRwczovL2dpdGh1Yi5jb20vb2xhZG8vZG9UKS5cbiAgICAgIHZhciBzZXR0aW5ncyA9IGxvZGFzaC50ZW1wbGF0ZVNldHRpbmdzO1xuXG4gICAgICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoc3RyaW5nLCBvcHRpb25zLCBndWFyZCkpIHtcbiAgICAgICAgb3B0aW9ucyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBvcHRpb25zID0gYXNzaWduSW5XaXRoKHt9LCBvcHRpb25zLCBzZXR0aW5ncywgY3VzdG9tRGVmYXVsdHNBc3NpZ25Jbik7XG5cbiAgICAgIHZhciBpbXBvcnRzID0gYXNzaWduSW5XaXRoKHt9LCBvcHRpb25zLmltcG9ydHMsIHNldHRpbmdzLmltcG9ydHMsIGN1c3RvbURlZmF1bHRzQXNzaWduSW4pLFxuICAgICAgICAgIGltcG9ydHNLZXlzID0ga2V5cyhpbXBvcnRzKSxcbiAgICAgICAgICBpbXBvcnRzVmFsdWVzID0gYmFzZVZhbHVlcyhpbXBvcnRzLCBpbXBvcnRzS2V5cyk7XG5cbiAgICAgIHZhciBpc0VzY2FwaW5nLFxuICAgICAgICAgIGlzRXZhbHVhdGluZyxcbiAgICAgICAgICBpbmRleCA9IDAsXG4gICAgICAgICAgaW50ZXJwb2xhdGUgPSBvcHRpb25zLmludGVycG9sYXRlIHx8IHJlTm9NYXRjaCxcbiAgICAgICAgICBzb3VyY2UgPSBcIl9fcCArPSAnXCI7XG5cbiAgICAgIC8vIENvbXBpbGUgdGhlIHJlZ2V4cCB0byBtYXRjaCBlYWNoIGRlbGltaXRlci5cbiAgICAgIHZhciByZURlbGltaXRlcnMgPSBSZWdFeHAoXG4gICAgICAgIChvcHRpb25zLmVzY2FwZSB8fCByZU5vTWF0Y2gpLnNvdXJjZSArICd8JyArXG4gICAgICAgIGludGVycG9sYXRlLnNvdXJjZSArICd8JyArXG4gICAgICAgIChpbnRlcnBvbGF0ZSA9PT0gcmVJbnRlcnBvbGF0ZSA/IHJlRXNUZW1wbGF0ZSA6IHJlTm9NYXRjaCkuc291cmNlICsgJ3wnICtcbiAgICAgICAgKG9wdGlvbnMuZXZhbHVhdGUgfHwgcmVOb01hdGNoKS5zb3VyY2UgKyAnfCQnXG4gICAgICAsICdnJyk7XG5cbiAgICAgIC8vIFVzZSBhIHNvdXJjZVVSTCBmb3IgZWFzaWVyIGRlYnVnZ2luZy5cbiAgICAgIC8vIFRoZSBzb3VyY2VVUkwgZ2V0cyBpbmplY3RlZCBpbnRvIHRoZSBzb3VyY2UgdGhhdCdzIGV2YWwtZWQsIHNvIGJlIGNhcmVmdWxcbiAgICAgIC8vIHRvIG5vcm1hbGl6ZSBhbGwga2luZHMgb2Ygd2hpdGVzcGFjZSwgc28gZS5nLiBuZXdsaW5lcyAoYW5kIHVuaWNvZGUgdmVyc2lvbnMgb2YgaXQpIGNhbid0IHNuZWFrIGluXG4gICAgICAvLyBhbmQgZXNjYXBlIHRoZSBjb21tZW50LCB0aHVzIGluamVjdGluZyBjb2RlIHRoYXQgZ2V0cyBldmFsZWQuXG4gICAgICB2YXIgc291cmNlVVJMID0gJy8vIyBzb3VyY2VVUkw9JyArXG4gICAgICAgIChoYXNPd25Qcm9wZXJ0eS5jYWxsKG9wdGlvbnMsICdzb3VyY2VVUkwnKVxuICAgICAgICAgID8gKG9wdGlvbnMuc291cmNlVVJMICsgJycpLnJlcGxhY2UoL1xccy9nLCAnICcpXG4gICAgICAgICAgOiAoJ2xvZGFzaC50ZW1wbGF0ZVNvdXJjZXNbJyArICgrK3RlbXBsYXRlQ291bnRlcikgKyAnXScpXG4gICAgICAgICkgKyAnXFxuJztcblxuICAgICAgc3RyaW5nLnJlcGxhY2UocmVEZWxpbWl0ZXJzLCBmdW5jdGlvbihtYXRjaCwgZXNjYXBlVmFsdWUsIGludGVycG9sYXRlVmFsdWUsIGVzVGVtcGxhdGVWYWx1ZSwgZXZhbHVhdGVWYWx1ZSwgb2Zmc2V0KSB7XG4gICAgICAgIGludGVycG9sYXRlVmFsdWUgfHwgKGludGVycG9sYXRlVmFsdWUgPSBlc1RlbXBsYXRlVmFsdWUpO1xuXG4gICAgICAgIC8vIEVzY2FwZSBjaGFyYWN0ZXJzIHRoYXQgY2FuJ3QgYmUgaW5jbHVkZWQgaW4gc3RyaW5nIGxpdGVyYWxzLlxuICAgICAgICBzb3VyY2UgKz0gc3RyaW5nLnNsaWNlKGluZGV4LCBvZmZzZXQpLnJlcGxhY2UocmVVbmVzY2FwZWRTdHJpbmcsIGVzY2FwZVN0cmluZ0NoYXIpO1xuXG4gICAgICAgIC8vIFJlcGxhY2UgZGVsaW1pdGVycyB3aXRoIHNuaXBwZXRzLlxuICAgICAgICBpZiAoZXNjYXBlVmFsdWUpIHtcbiAgICAgICAgICBpc0VzY2FwaW5nID0gdHJ1ZTtcbiAgICAgICAgICBzb3VyY2UgKz0gXCInICtcXG5fX2UoXCIgKyBlc2NhcGVWYWx1ZSArIFwiKSArXFxuJ1wiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmFsdWF0ZVZhbHVlKSB7XG4gICAgICAgICAgaXNFdmFsdWF0aW5nID0gdHJ1ZTtcbiAgICAgICAgICBzb3VyY2UgKz0gXCInO1xcblwiICsgZXZhbHVhdGVWYWx1ZSArIFwiO1xcbl9fcCArPSAnXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGludGVycG9sYXRlVmFsdWUpIHtcbiAgICAgICAgICBzb3VyY2UgKz0gXCInICtcXG4oKF9fdCA9IChcIiArIGludGVycG9sYXRlVmFsdWUgKyBcIikpID09IG51bGwgPyAnJyA6IF9fdCkgK1xcbidcIjtcbiAgICAgICAgfVxuICAgICAgICBpbmRleCA9IG9mZnNldCArIG1hdGNoLmxlbmd0aDtcblxuICAgICAgICAvLyBUaGUgSlMgZW5naW5lIGVtYmVkZGVkIGluIEFkb2JlIHByb2R1Y3RzIG5lZWRzIGBtYXRjaGAgcmV0dXJuZWQgaW5cbiAgICAgICAgLy8gb3JkZXIgdG8gcHJvZHVjZSB0aGUgY29ycmVjdCBgb2Zmc2V0YCB2YWx1ZS5cbiAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgfSk7XG5cbiAgICAgIHNvdXJjZSArPSBcIic7XFxuXCI7XG5cbiAgICAgIC8vIElmIGB2YXJpYWJsZWAgaXMgbm90IHNwZWNpZmllZCB3cmFwIGEgd2l0aC1zdGF0ZW1lbnQgYXJvdW5kIHRoZSBnZW5lcmF0ZWRcbiAgICAgIC8vIGNvZGUgdG8gYWRkIHRoZSBkYXRhIG9iamVjdCB0byB0aGUgdG9wIG9mIHRoZSBzY29wZSBjaGFpbi5cbiAgICAgIHZhciB2YXJpYWJsZSA9IGhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywgJ3ZhcmlhYmxlJykgJiYgb3B0aW9ucy52YXJpYWJsZTtcbiAgICAgIGlmICghdmFyaWFibGUpIHtcbiAgICAgICAgc291cmNlID0gJ3dpdGggKG9iaikge1xcbicgKyBzb3VyY2UgKyAnXFxufVxcbic7XG4gICAgICB9XG4gICAgICAvLyBUaHJvdyBhbiBlcnJvciBpZiBhIGZvcmJpZGRlbiBjaGFyYWN0ZXIgd2FzIGZvdW5kIGluIGB2YXJpYWJsZWAsIHRvIHByZXZlbnRcbiAgICAgIC8vIHBvdGVudGlhbCBjb21tYW5kIGluamVjdGlvbiBhdHRhY2tzLlxuICAgICAgZWxzZSBpZiAocmVGb3JiaWRkZW5JZGVudGlmaWVyQ2hhcnMudGVzdCh2YXJpYWJsZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKElOVkFMSURfVEVNUExfVkFSX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuXG4gICAgICAvLyBDbGVhbnVwIGNvZGUgYnkgc3RyaXBwaW5nIGVtcHR5IHN0cmluZ3MuXG4gICAgICBzb3VyY2UgPSAoaXNFdmFsdWF0aW5nID8gc291cmNlLnJlcGxhY2UocmVFbXB0eVN0cmluZ0xlYWRpbmcsICcnKSA6IHNvdXJjZSlcbiAgICAgICAgLnJlcGxhY2UocmVFbXB0eVN0cmluZ01pZGRsZSwgJyQxJylcbiAgICAgICAgLnJlcGxhY2UocmVFbXB0eVN0cmluZ1RyYWlsaW5nLCAnJDE7Jyk7XG5cbiAgICAgIC8vIEZyYW1lIGNvZGUgYXMgdGhlIGZ1bmN0aW9uIGJvZHkuXG4gICAgICBzb3VyY2UgPSAnZnVuY3Rpb24oJyArICh2YXJpYWJsZSB8fCAnb2JqJykgKyAnKSB7XFxuJyArXG4gICAgICAgICh2YXJpYWJsZVxuICAgICAgICAgID8gJydcbiAgICAgICAgICA6ICdvYmogfHwgKG9iaiA9IHt9KTtcXG4nXG4gICAgICAgICkgK1xuICAgICAgICBcInZhciBfX3QsIF9fcCA9ICcnXCIgK1xuICAgICAgICAoaXNFc2NhcGluZ1xuICAgICAgICAgICA/ICcsIF9fZSA9IF8uZXNjYXBlJ1xuICAgICAgICAgICA6ICcnXG4gICAgICAgICkgK1xuICAgICAgICAoaXNFdmFsdWF0aW5nXG4gICAgICAgICAgPyAnLCBfX2ogPSBBcnJheS5wcm90b3R5cGUuam9pbjtcXG4nICtcbiAgICAgICAgICAgIFwiZnVuY3Rpb24gcHJpbnQoKSB7IF9fcCArPSBfX2ouY2FsbChhcmd1bWVudHMsICcnKSB9XFxuXCJcbiAgICAgICAgICA6ICc7XFxuJ1xuICAgICAgICApICtcbiAgICAgICAgc291cmNlICtcbiAgICAgICAgJ3JldHVybiBfX3BcXG59JztcblxuICAgICAgdmFyIHJlc3VsdCA9IGF0dGVtcHQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBGdW5jdGlvbihpbXBvcnRzS2V5cywgc291cmNlVVJMICsgJ3JldHVybiAnICsgc291cmNlKVxuICAgICAgICAgIC5hcHBseSh1bmRlZmluZWQsIGltcG9ydHNWYWx1ZXMpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIFByb3ZpZGUgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uJ3Mgc291cmNlIGJ5IGl0cyBgdG9TdHJpbmdgIG1ldGhvZCBvclxuICAgICAgLy8gdGhlIGBzb3VyY2VgIHByb3BlcnR5IGFzIGEgY29udmVuaWVuY2UgZm9yIGlubGluaW5nIGNvbXBpbGVkIHRlbXBsYXRlcy5cbiAgICAgIHJlc3VsdC5zb3VyY2UgPSBzb3VyY2U7XG4gICAgICBpZiAoaXNFcnJvcihyZXN1bHQpKSB7XG4gICAgICAgIHRocm93IHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AsIGFzIGEgd2hvbGUsIHRvIGxvd2VyIGNhc2UganVzdCBsaWtlXG4gICAgICogW1N0cmluZyN0b0xvd2VyQ2FzZV0oaHR0cHM6Ly9tZG4uaW8vdG9Mb3dlckNhc2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgbG93ZXIgY2FzZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvTG93ZXIoJy0tRm9vLUJhci0tJyk7XG4gICAgICogLy8gPT4gJy0tZm9vLWJhci0tJ1xuICAgICAqXG4gICAgICogXy50b0xvd2VyKCdmb29CYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vYmFyJ1xuICAgICAqXG4gICAgICogXy50b0xvd2VyKCdfX0ZPT19CQVJfXycpO1xuICAgICAqIC8vID0+ICdfX2Zvb19iYXJfXydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b0xvd2VyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdG9TdHJpbmcodmFsdWUpLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AsIGFzIGEgd2hvbGUsIHRvIHVwcGVyIGNhc2UganVzdCBsaWtlXG4gICAgICogW1N0cmluZyN0b1VwcGVyQ2FzZV0oaHR0cHM6Ly9tZG4uaW8vdG9VcHBlckNhc2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdXBwZXIgY2FzZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvVXBwZXIoJy0tZm9vLWJhci0tJyk7XG4gICAgICogLy8gPT4gJy0tRk9PLUJBUi0tJ1xuICAgICAqXG4gICAgICogXy50b1VwcGVyKCdmb29CYXInKTtcbiAgICAgKiAvLyA9PiAnRk9PQkFSJ1xuICAgICAqXG4gICAgICogXy50b1VwcGVyKCdfX2Zvb19iYXJfXycpO1xuICAgICAqIC8vID0+ICdfX0ZPT19CQVJfXydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b1VwcGVyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdG9TdHJpbmcodmFsdWUpLnRvVXBwZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIG9yIHNwZWNpZmllZCBjaGFyYWN0ZXJzIGZyb20gYHN0cmluZ2AuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gdHJpbS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPXdoaXRlc3BhY2VdIFRoZSBjaGFyYWN0ZXJzIHRvIHRyaW0uXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB0cmltbWVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50cmltKCcgIGFiYyAgJyk7XG4gICAgICogLy8gPT4gJ2FiYydcbiAgICAgKlxuICAgICAqIF8udHJpbSgnLV8tYWJjLV8tJywgJ18tJyk7XG4gICAgICogLy8gPT4gJ2FiYydcbiAgICAgKlxuICAgICAqIF8ubWFwKFsnICBmb28gICcsICcgIGJhciAgJ10sIF8udHJpbSk7XG4gICAgICogLy8gPT4gWydmb28nLCAnYmFyJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0cmltKHN0cmluZywgY2hhcnMsIGd1YXJkKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgaWYgKHN0cmluZyAmJiAoZ3VhcmQgfHwgY2hhcnMgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VUcmltKHN0cmluZyk7XG4gICAgICB9XG4gICAgICBpZiAoIXN0cmluZyB8fCAhKGNoYXJzID0gYmFzZVRvU3RyaW5nKGNoYXJzKSkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgIH1cbiAgICAgIHZhciBzdHJTeW1ib2xzID0gc3RyaW5nVG9BcnJheShzdHJpbmcpLFxuICAgICAgICAgIGNoclN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KGNoYXJzKSxcbiAgICAgICAgICBzdGFydCA9IGNoYXJzU3RhcnRJbmRleChzdHJTeW1ib2xzLCBjaHJTeW1ib2xzKSxcbiAgICAgICAgICBlbmQgPSBjaGFyc0VuZEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpICsgMTtcblxuICAgICAgcmV0dXJuIGNhc3RTbGljZShzdHJTeW1ib2xzLCBzdGFydCwgZW5kKS5qb2luKCcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb3Igc3BlY2lmaWVkIGNoYXJhY3RlcnMgZnJvbSBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cmltLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9d2hpdGVzcGFjZV0gVGhlIGNoYXJhY3RlcnMgdG8gdHJpbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyaW1FbmQoJyAgYWJjICAnKTtcbiAgICAgKiAvLyA9PiAnICBhYmMnXG4gICAgICpcbiAgICAgKiBfLnRyaW1FbmQoJy1fLWFiYy1fLScsICdfLScpO1xuICAgICAqIC8vID0+ICctXy1hYmMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJpbUVuZChzdHJpbmcsIGNoYXJzLCBndWFyZCkge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGlmIChzdHJpbmcgJiYgKGd1YXJkIHx8IGNoYXJzID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmcuc2xpY2UoMCwgdHJpbW1lZEVuZEluZGV4KHN0cmluZykgKyAxKTtcbiAgICAgIH1cbiAgICAgIGlmICghc3RyaW5nIHx8ICEoY2hhcnMgPSBiYXNlVG9TdHJpbmcoY2hhcnMpKSkge1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgICAgfVxuICAgICAgdmFyIHN0clN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KHN0cmluZyksXG4gICAgICAgICAgZW5kID0gY2hhcnNFbmRJbmRleChzdHJTeW1ib2xzLCBzdHJpbmdUb0FycmF5KGNoYXJzKSkgKyAxO1xuXG4gICAgICByZXR1cm4gY2FzdFNsaWNlKHN0clN5bWJvbHMsIDAsIGVuZCkuam9pbignJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBsZWFkaW5nIHdoaXRlc3BhY2Ugb3Igc3BlY2lmaWVkIGNoYXJhY3RlcnMgZnJvbSBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cmltLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9d2hpdGVzcGFjZV0gVGhlIGNoYXJhY3RlcnMgdG8gdHJpbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyaW1TdGFydCgnICBhYmMgICcpO1xuICAgICAqIC8vID0+ICdhYmMgICdcbiAgICAgKlxuICAgICAqIF8udHJpbVN0YXJ0KCctXy1hYmMtXy0nLCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnYWJjLV8tJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRyaW1TdGFydChzdHJpbmcsIGNoYXJzLCBndWFyZCkge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGlmIChzdHJpbmcgJiYgKGd1YXJkIHx8IGNoYXJzID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZShyZVRyaW1TdGFydCwgJycpO1xuICAgICAgfVxuICAgICAgaWYgKCFzdHJpbmcgfHwgIShjaGFycyA9IGJhc2VUb1N0cmluZyhjaGFycykpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICB9XG4gICAgICB2YXIgc3RyU3ltYm9scyA9IHN0cmluZ1RvQXJyYXkoc3RyaW5nKSxcbiAgICAgICAgICBzdGFydCA9IGNoYXJzU3RhcnRJbmRleChzdHJTeW1ib2xzLCBzdHJpbmdUb0FycmF5KGNoYXJzKSk7XG5cbiAgICAgIHJldHVybiBjYXN0U2xpY2Uoc3RyU3ltYm9scywgc3RhcnQpLmpvaW4oJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRydW5jYXRlcyBgc3RyaW5nYCBpZiBpdCdzIGxvbmdlciB0aGFuIHRoZSBnaXZlbiBtYXhpbXVtIHN0cmluZyBsZW5ndGguXG4gICAgICogVGhlIGxhc3QgY2hhcmFjdGVycyBvZiB0aGUgdHJ1bmNhdGVkIHN0cmluZyBhcmUgcmVwbGFjZWQgd2l0aCB0aGUgb21pc3Npb25cbiAgICAgKiBzdHJpbmcgd2hpY2ggZGVmYXVsdHMgdG8gXCIuLi5cIi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cnVuY2F0ZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubGVuZ3RoPTMwXSBUaGUgbWF4aW11bSBzdHJpbmcgbGVuZ3RoLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5vbWlzc2lvbj0nLi4uJ10gVGhlIHN0cmluZyB0byBpbmRpY2F0ZSB0ZXh0IGlzIG9taXR0ZWQuXG4gICAgICogQHBhcmFtIHtSZWdFeHB8c3RyaW5nfSBbb3B0aW9ucy5zZXBhcmF0b3JdIFRoZSBzZXBhcmF0b3IgcGF0dGVybiB0byB0cnVuY2F0ZSB0by5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB0cnVuY2F0ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRydW5jYXRlKCdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWdoYm9yaW5vJyk7XG4gICAgICogLy8gPT4gJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hiby4uLidcbiAgICAgKlxuICAgICAqIF8udHJ1bmNhdGUoJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hib3Jpbm8nLCB7XG4gICAgICogICAnbGVuZ3RoJzogMjQsXG4gICAgICogICAnc2VwYXJhdG9yJzogJyAnXG4gICAgICogfSk7XG4gICAgICogLy8gPT4gJ2hpLWRpZGRseS1obyB0aGVyZSwuLi4nXG4gICAgICpcbiAgICAgKiBfLnRydW5jYXRlKCdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWdoYm9yaW5vJywge1xuICAgICAqICAgJ2xlbmd0aCc6IDI0LFxuICAgICAqICAgJ3NlcGFyYXRvcic6IC8sPyArL1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+ICdoaS1kaWRkbHktaG8gdGhlcmUuLi4nXG4gICAgICpcbiAgICAgKiBfLnRydW5jYXRlKCdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWdoYm9yaW5vJywge1xuICAgICAqICAgJ29taXNzaW9uJzogJyBbLi4uXSdcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiAnaGktZGlkZGx5LWhvIHRoZXJlLCBuZWlnIFsuLi5dJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRydW5jYXRlKHN0cmluZywgb3B0aW9ucykge1xuICAgICAgdmFyIGxlbmd0aCA9IERFRkFVTFRfVFJVTkNfTEVOR1RILFxuICAgICAgICAgIG9taXNzaW9uID0gREVGQVVMVF9UUlVOQ19PTUlTU0lPTjtcblxuICAgICAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgIHZhciBzZXBhcmF0b3IgPSAnc2VwYXJhdG9yJyBpbiBvcHRpb25zID8gb3B0aW9ucy5zZXBhcmF0b3IgOiBzZXBhcmF0b3I7XG4gICAgICAgIGxlbmd0aCA9ICdsZW5ndGgnIGluIG9wdGlvbnMgPyB0b0ludGVnZXIob3B0aW9ucy5sZW5ndGgpIDogbGVuZ3RoO1xuICAgICAgICBvbWlzc2lvbiA9ICdvbWlzc2lvbicgaW4gb3B0aW9ucyA/IGJhc2VUb1N0cmluZyhvcHRpb25zLm9taXNzaW9uKSA6IG9taXNzaW9uO1xuICAgICAgfVxuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcblxuICAgICAgdmFyIHN0ckxlbmd0aCA9IHN0cmluZy5sZW5ndGg7XG4gICAgICBpZiAoaGFzVW5pY29kZShzdHJpbmcpKSB7XG4gICAgICAgIHZhciBzdHJTeW1ib2xzID0gc3RyaW5nVG9BcnJheShzdHJpbmcpO1xuICAgICAgICBzdHJMZW5ndGggPSBzdHJTeW1ib2xzLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGlmIChsZW5ndGggPj0gc3RyTGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICB9XG4gICAgICB2YXIgZW5kID0gbGVuZ3RoIC0gc3RyaW5nU2l6ZShvbWlzc2lvbik7XG4gICAgICBpZiAoZW5kIDwgMSkge1xuICAgICAgICByZXR1cm4gb21pc3Npb247XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gc3RyU3ltYm9sc1xuICAgICAgICA/IGNhc3RTbGljZShzdHJTeW1ib2xzLCAwLCBlbmQpLmpvaW4oJycpXG4gICAgICAgIDogc3RyaW5nLnNsaWNlKDAsIGVuZCk7XG5cbiAgICAgIGlmIChzZXBhcmF0b3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0ICsgb21pc3Npb247XG4gICAgICB9XG4gICAgICBpZiAoc3RyU3ltYm9scykge1xuICAgICAgICBlbmQgKz0gKHJlc3VsdC5sZW5ndGggLSBlbmQpO1xuICAgICAgfVxuICAgICAgaWYgKGlzUmVnRXhwKHNlcGFyYXRvcikpIHtcbiAgICAgICAgaWYgKHN0cmluZy5zbGljZShlbmQpLnNlYXJjaChzZXBhcmF0b3IpKSB7XG4gICAgICAgICAgdmFyIG1hdGNoLFxuICAgICAgICAgICAgICBzdWJzdHJpbmcgPSByZXN1bHQ7XG5cbiAgICAgICAgICBpZiAoIXNlcGFyYXRvci5nbG9iYWwpIHtcbiAgICAgICAgICAgIHNlcGFyYXRvciA9IFJlZ0V4cChzZXBhcmF0b3Iuc291cmNlLCB0b1N0cmluZyhyZUZsYWdzLmV4ZWMoc2VwYXJhdG9yKSkgKyAnZycpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXBhcmF0b3IubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICB3aGlsZSAoKG1hdGNoID0gc2VwYXJhdG9yLmV4ZWMoc3Vic3RyaW5nKSkpIHtcbiAgICAgICAgICAgIHZhciBuZXdFbmQgPSBtYXRjaC5pbmRleDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKDAsIG5ld0VuZCA9PT0gdW5kZWZpbmVkID8gZW5kIDogbmV3RW5kKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzdHJpbmcuaW5kZXhPZihiYXNlVG9TdHJpbmcoc2VwYXJhdG9yKSwgZW5kKSAhPSBlbmQpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gcmVzdWx0Lmxhc3RJbmRleE9mKHNlcGFyYXRvcik7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKDAsIGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdCArIG9taXNzaW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBpbnZlcnNlIG9mIGBfLmVzY2FwZWA7IHRoaXMgbWV0aG9kIGNvbnZlcnRzIHRoZSBIVE1MIGVudGl0aWVzXG4gICAgICogYCZhbXA7YCwgYCZsdDtgLCBgJmd0O2AsIGAmcXVvdDtgLCBhbmQgYCYjMzk7YCBpbiBgc3RyaW5nYCB0b1xuICAgICAqIHRoZWlyIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBObyBvdGhlciBIVE1MIGVudGl0aWVzIGFyZSB1bmVzY2FwZWQuIFRvIHVuZXNjYXBlIGFkZGl0aW9uYWxcbiAgICAgKiBIVE1MIGVudGl0aWVzIHVzZSBhIHRoaXJkLXBhcnR5IGxpYnJhcnkgbGlrZSBbX2hlX10oaHR0cHM6Ly9tdGhzLmJlL2hlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjYuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB1bmVzY2FwZS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB1bmVzY2FwZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuZXNjYXBlKCdmcmVkLCBiYXJuZXksICZhbXA7IHBlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiAnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gdW5lc2NhcGUoc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcmV0dXJuIChzdHJpbmcgJiYgcmVIYXNFc2NhcGVkSHRtbC50ZXN0KHN0cmluZykpXG4gICAgICAgID8gc3RyaW5nLnJlcGxhY2UocmVFc2NhcGVkSHRtbCwgdW5lc2NhcGVIdG1sQ2hhcilcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AsIGFzIHNwYWNlIHNlcGFyYXRlZCB3b3JkcywgdG8gdXBwZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVwcGVyIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51cHBlckNhc2UoJy0tZm9vLWJhcicpO1xuICAgICAqIC8vID0+ICdGT08gQkFSJ1xuICAgICAqXG4gICAgICogXy51cHBlckNhc2UoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdGT08gQkFSJ1xuICAgICAqXG4gICAgICogXy51cHBlckNhc2UoJ19fZm9vX2Jhcl9fJyk7XG4gICAgICogLy8gPT4gJ0ZPTyBCQVInXG4gICAgICovXG4gICAgdmFyIHVwcGVyQ2FzZSA9IGNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LCB3b3JkLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHJlc3VsdCArIChpbmRleCA/ICcgJyA6ICcnKSArIHdvcmQudG9VcHBlckNhc2UoKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYHN0cmluZ2AgdG8gdXBwZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udXBwZXJGaXJzdCgnZnJlZCcpO1xuICAgICAqIC8vID0+ICdGcmVkJ1xuICAgICAqXG4gICAgICogXy51cHBlckZpcnN0KCdGUkVEJyk7XG4gICAgICogLy8gPT4gJ0ZSRUQnXG4gICAgICovXG4gICAgdmFyIHVwcGVyRmlyc3QgPSBjcmVhdGVDYXNlRmlyc3QoJ3RvVXBwZXJDYXNlJyk7XG5cbiAgICAvKipcbiAgICAgKiBTcGxpdHMgYHN0cmluZ2AgaW50byBhbiBhcnJheSBvZiBpdHMgd29yZHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IFtwYXR0ZXJuXSBUaGUgcGF0dGVybiB0byBtYXRjaCB3b3Jkcy5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgd29yZHMgb2YgYHN0cmluZ2AuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ud29yZHMoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJyk7XG4gICAgICogLy8gPT4gWydmcmVkJywgJ2Jhcm5leScsICdwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIF8ud29yZHMoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJywgL1teLCBdKy9nKTtcbiAgICAgKiAvLyA9PiBbJ2ZyZWQnLCAnYmFybmV5JywgJyYnLCAncGViYmxlcyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gd29yZHMoc3RyaW5nLCBwYXR0ZXJuLCBndWFyZCkge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHBhdHRlcm4gPSBndWFyZCA/IHVuZGVmaW5lZCA6IHBhdHRlcm47XG5cbiAgICAgIGlmIChwYXR0ZXJuID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGhhc1VuaWNvZGVXb3JkKHN0cmluZykgPyB1bmljb2RlV29yZHMoc3RyaW5nKSA6IGFzY2lpV29yZHMoc3RyaW5nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHJpbmcubWF0Y2gocGF0dGVybikgfHwgW107XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQXR0ZW1wdHMgdG8gaW52b2tlIGBmdW5jYCwgcmV0dXJuaW5nIGVpdGhlciB0aGUgcmVzdWx0IG9yIHRoZSBjYXVnaHQgZXJyb3JcbiAgICAgKiBvYmplY3QuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQgdG8gYGZ1bmNgIHdoZW4gaXQncyBpbnZva2VkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhdHRlbXB0LlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBgZnVuY2AgcmVzdWx0IG9yIGVycm9yIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gQXZvaWQgdGhyb3dpbmcgZXJyb3JzIGZvciBpbnZhbGlkIHNlbGVjdG9ycy5cbiAgICAgKiB2YXIgZWxlbWVudHMgPSBfLmF0dGVtcHQoZnVuY3Rpb24oc2VsZWN0b3IpIHtcbiAgICAgKiAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTtcbiAgICAgKiB9LCAnPl8+Jyk7XG4gICAgICpcbiAgICAgKiBpZiAoXy5pc0Vycm9yKGVsZW1lbnRzKSkge1xuICAgICAqICAgZWxlbWVudHMgPSBbXTtcbiAgICAgKiB9XG4gICAgICovXG4gICAgdmFyIGF0dGVtcHQgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCBhcmdzKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXBwbHkoZnVuYywgdW5kZWZpbmVkLCBhcmdzKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGlzRXJyb3IoZSkgPyBlIDogbmV3IEVycm9yKGUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQmluZHMgbWV0aG9kcyBvZiBhbiBvYmplY3QgdG8gdGhlIG9iamVjdCBpdHNlbGYsIG92ZXJ3cml0aW5nIHRoZSBleGlzdGluZ1xuICAgICAqIG1ldGhvZC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBib3VuZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBiaW5kIGFuZCBhc3NpZ24gdGhlIGJvdW5kIG1ldGhvZHMgdG8uXG4gICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gbWV0aG9kTmFtZXMgVGhlIG9iamVjdCBtZXRob2QgbmFtZXMgdG8gYmluZC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdmlldyA9IHtcbiAgICAgKiAgICdsYWJlbCc6ICdkb2NzJyxcbiAgICAgKiAgICdjbGljayc6IGZ1bmN0aW9uKCkge1xuICAgICAqICAgICBjb25zb2xlLmxvZygnY2xpY2tlZCAnICsgdGhpcy5sYWJlbCk7XG4gICAgICogICB9XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIF8uYmluZEFsbCh2aWV3LCBbJ2NsaWNrJ10pO1xuICAgICAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCB2aWV3LmNsaWNrKTtcbiAgICAgKiAvLyA9PiBMb2dzICdjbGlja2VkIGRvY3MnIHdoZW4gY2xpY2tlZC5cbiAgICAgKi9cbiAgICB2YXIgYmluZEFsbCA9IGZsYXRSZXN0KGZ1bmN0aW9uKG9iamVjdCwgbWV0aG9kTmFtZXMpIHtcbiAgICAgIGFycmF5RWFjaChtZXRob2ROYW1lcywgZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIGtleSA9IHRvS2V5KGtleSk7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgYmluZChvYmplY3Rba2V5XSwgb2JqZWN0KSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpdGVyYXRlcyBvdmVyIGBwYWlyc2AgYW5kIGludm9rZXMgdGhlIGNvcnJlc3BvbmRpbmdcbiAgICAgKiBmdW5jdGlvbiBvZiB0aGUgZmlyc3QgcHJlZGljYXRlIHRvIHJldHVybiB0cnV0aHkuIFRoZSBwcmVkaWNhdGUtZnVuY3Rpb25cbiAgICAgKiBwYWlycyBhcmUgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBhbmQgYXJndW1lbnRzIG9mIHRoZSBjcmVhdGVkXG4gICAgICogZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhaXJzIFRoZSBwcmVkaWNhdGUtZnVuY3Rpb24gcGFpcnMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29tcG9zaXRlIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgZnVuYyA9IF8uY29uZChbXG4gICAgICogICBbXy5tYXRjaGVzKHsgJ2EnOiAxIH0pLCAgICAgICAgICAgXy5jb25zdGFudCgnbWF0Y2hlcyBBJyldLFxuICAgICAqICAgW18uY29uZm9ybXMoeyAnYic6IF8uaXNOdW1iZXIgfSksIF8uY29uc3RhbnQoJ21hdGNoZXMgQicpXSxcbiAgICAgKiAgIFtfLnN0dWJUcnVlLCAgICAgICAgICAgICAgICAgICAgICBfLmNvbnN0YW50KCdubyBtYXRjaCcpXVxuICAgICAqIF0pO1xuICAgICAqXG4gICAgICogZnVuYyh7ICdhJzogMSwgJ2InOiAyIH0pO1xuICAgICAqIC8vID0+ICdtYXRjaGVzIEEnXG4gICAgICpcbiAgICAgKiBmdW5jKHsgJ2EnOiAwLCAnYic6IDEgfSk7XG4gICAgICogLy8gPT4gJ21hdGNoZXMgQidcbiAgICAgKlxuICAgICAqIGZ1bmMoeyAnYSc6ICcxJywgJ2InOiAnMicgfSk7XG4gICAgICogLy8gPT4gJ25vIG1hdGNoJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbmQocGFpcnMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBwYWlycyA9PSBudWxsID8gMCA6IHBhaXJzLmxlbmd0aCxcbiAgICAgICAgICB0b0l0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUoKTtcblxuICAgICAgcGFpcnMgPSAhbGVuZ3RoID8gW10gOiBhcnJheU1hcChwYWlycywgZnVuY3Rpb24ocGFpcikge1xuICAgICAgICBpZiAodHlwZW9mIHBhaXJbMV0gIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3RvSXRlcmF0ZWUocGFpclswXSksIHBhaXJbMV1dO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgIHZhciBpbmRleCA9IC0xO1xuICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIHZhciBwYWlyID0gcGFpcnNbaW5kZXhdO1xuICAgICAgICAgIGlmIChhcHBseShwYWlyWzBdLCB0aGlzLCBhcmdzKSkge1xuICAgICAgICAgICAgcmV0dXJuIGFwcGx5KHBhaXJbMV0sIHRoaXMsIGFyZ3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgcHJlZGljYXRlIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgd2l0aFxuICAgICAqIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IHZhbHVlcyBvZiBhIGdpdmVuIG9iamVjdCwgcmV0dXJuaW5nIGB0cnVlYCBpZlxuICAgICAqIGFsbCBwcmVkaWNhdGVzIHJldHVybiB0cnV0aHksIGVsc2UgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGUgY3JlYXRlZCBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIGBfLmNvbmZvcm1zVG9gIHdpdGhcbiAgICAgKiBgc291cmNlYCBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHByZWRpY2F0ZXMgdG8gY29uZm9ybSB0by5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiAyLCAnYic6IDEgfSxcbiAgICAgKiAgIHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmZpbHRlcihvYmplY3RzLCBfLmNvbmZvcm1zKHsgJ2InOiBmdW5jdGlvbihuKSB7IHJldHVybiBuID4gMTsgfSB9KSk7XG4gICAgICogLy8gPT4gW3sgJ2EnOiAxLCAnYic6IDIgfV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25mb3Jtcyhzb3VyY2UpIHtcbiAgICAgIHJldHVybiBiYXNlQ29uZm9ybXMoYmFzZUNsb25lKHNvdXJjZSwgQ0xPTkVfREVFUF9GTEFHKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuNC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZXR1cm4gZnJvbSB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbnN0YW50IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IF8udGltZXMoMiwgXy5jb25zdGFudCh7ICdhJzogMSB9KSk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3RzKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDEgfSwgeyAnYSc6IDEgfV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25zdGFudCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBgdmFsdWVgIHRvIGRldGVybWluZSB3aGV0aGVyIGEgZGVmYXVsdCB2YWx1ZSBzaG91bGQgYmUgcmV0dXJuZWQgaW5cbiAgICAgKiBpdHMgcGxhY2UuIFRoZSBgZGVmYXVsdFZhbHVlYCBpcyByZXR1cm5lZCBpZiBgdmFsdWVgIGlzIGBOYU5gLCBgbnVsbGAsXG4gICAgICogb3IgYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xNC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0geyp9IGRlZmF1bHRWYWx1ZSBUaGUgZGVmYXVsdCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmYXVsdFRvKDEsIDEwKTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICpcbiAgICAgKiBfLmRlZmF1bHRUbyh1bmRlZmluZWQsIDEwKTtcbiAgICAgKiAvLyA9PiAxMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRlZmF1bHRUbyh2YWx1ZSwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICByZXR1cm4gKHZhbHVlID09IG51bGwgfHwgdmFsdWUgIT09IHZhbHVlKSA/IGRlZmF1bHRWYWx1ZSA6IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnZva2luZyB0aGUgZ2l2ZW4gZnVuY3Rpb25zXG4gICAgICogd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgdGhlIGNyZWF0ZWQgZnVuY3Rpb24sIHdoZXJlIGVhY2ggc3VjY2Vzc2l2ZVxuICAgICAqIGludm9jYXRpb24gaXMgc3VwcGxpZWQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJldmlvdXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbZnVuY3NdIFRoZSBmdW5jdGlvbnMgdG8gaW52b2tlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbXBvc2l0ZSBmdW5jdGlvbi5cbiAgICAgKiBAc2VlIF8uZmxvd1JpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gICAgICogICByZXR1cm4gbiAqIG47XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGFkZFNxdWFyZSA9IF8uZmxvdyhbXy5hZGQsIHNxdWFyZV0pO1xuICAgICAqIGFkZFNxdWFyZSgxLCAyKTtcbiAgICAgKiAvLyA9PiA5XG4gICAgICovXG4gICAgdmFyIGZsb3cgPSBjcmVhdGVGbG93KCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZsb3dgIGV4Y2VwdCB0aGF0IGl0IGNyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0XG4gICAgICogaW52b2tlcyB0aGUgZ2l2ZW4gZnVuY3Rpb25zIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtmdW5jc10gVGhlIGZ1bmN0aW9ucyB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29tcG9zaXRlIGZ1bmN0aW9uLlxuICAgICAqIEBzZWUgXy5mbG93XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gICAgICogICByZXR1cm4gbiAqIG47XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGFkZFNxdWFyZSA9IF8uZmxvd1JpZ2h0KFtzcXVhcmUsIF8uYWRkXSk7XG4gICAgICogYWRkU3F1YXJlKDEsIDIpO1xuICAgICAqIC8vID0+IDlcbiAgICAgKi9cbiAgICB2YXIgZmxvd1JpZ2h0ID0gY3JlYXRlRmxvdyh0cnVlKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGZpcnN0IGFyZ3VtZW50IGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIEFueSB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyBgdmFsdWVgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKF8uaWRlbnRpdHkob2JqZWN0KSA9PT0gb2JqZWN0KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaWRlbnRpdHkodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIHRoZSBhcmd1bWVudHMgb2YgdGhlIGNyZWF0ZWRcbiAgICAgKiBmdW5jdGlvbi4gSWYgYGZ1bmNgIGlzIGEgcHJvcGVydHkgbmFtZSwgdGhlIGNyZWF0ZWQgZnVuY3Rpb24gcmV0dXJucyB0aGVcbiAgICAgKiBwcm9wZXJ0eSB2YWx1ZSBmb3IgYSBnaXZlbiBlbGVtZW50LiBJZiBgZnVuY2AgaXMgYW4gYXJyYXkgb3Igb2JqZWN0LCB0aGVcbiAgICAgKiBjcmVhdGVkIGZ1bmN0aW9uIHJldHVybnMgYHRydWVgIGZvciBlbGVtZW50cyB0aGF0IGNvbnRhaW4gdGhlIGVxdWl2YWxlbnRcbiAgICAgKiBzb3VyY2UgcHJvcGVydGllcywgb3RoZXJ3aXNlIGl0IHJldHVybnMgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsqfSBbZnVuYz1fLmlkZW50aXR5XSBUaGUgdmFsdWUgdG8gY29udmVydCB0byBhIGNhbGxiYWNrLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgY2FsbGJhY2suXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIF8uaXRlcmF0ZWUoeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogdHJ1ZSB9KSk7XG4gICAgICogLy8gPT4gW3sgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9XVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmlsdGVyKHVzZXJzLCBfLml0ZXJhdGVlKFsndXNlcicsICdmcmVkJ10pKTtcbiAgICAgKiAvLyA9PiBbeyAndXNlcic6ICdmcmVkJywgJ2FnZSc6IDQwIH1dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1hcCh1c2VycywgXy5pdGVyYXRlZSgndXNlcicpKTtcbiAgICAgKiAvLyA9PiBbJ2Jhcm5leScsICdmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIENyZWF0ZSBjdXN0b20gaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKiBfLml0ZXJhdGVlID0gXy53cmFwKF8uaXRlcmF0ZWUsIGZ1bmN0aW9uKGl0ZXJhdGVlLCBmdW5jKSB7XG4gICAgICogICByZXR1cm4gIV8uaXNSZWdFeHAoZnVuYykgPyBpdGVyYXRlZShmdW5jKSA6IGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAqICAgICByZXR1cm4gZnVuYy50ZXN0KHN0cmluZyk7XG4gICAgICogICB9O1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogXy5maWx0ZXIoWydhYmMnLCAnZGVmJ10sIC9lZi8pO1xuICAgICAqIC8vID0+IFsnZGVmJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpdGVyYXRlZShmdW5jKSB7XG4gICAgICByZXR1cm4gYmFzZUl0ZXJhdGVlKHR5cGVvZiBmdW5jID09ICdmdW5jdGlvbicgPyBmdW5jIDogYmFzZUNsb25lKGZ1bmMsIENMT05FX0RFRVBfRkxBRykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIGEgcGFydGlhbCBkZWVwIGNvbXBhcmlzb24gYmV0d2VlbiBhIGdpdmVuXG4gICAgICogb2JqZWN0IGFuZCBgc291cmNlYCwgcmV0dXJuaW5nIGB0cnVlYCBpZiB0aGUgZ2l2ZW4gb2JqZWN0IGhhcyBlcXVpdmFsZW50XG4gICAgICogcHJvcGVydHkgdmFsdWVzLCBlbHNlIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhlIGNyZWF0ZWQgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byBgXy5pc01hdGNoYCB3aXRoIGBzb3VyY2VgXG4gICAgICogcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICpcbiAgICAgKiBQYXJ0aWFsIGNvbXBhcmlzb25zIHdpbGwgbWF0Y2ggZW1wdHkgYXJyYXkgYW5kIGVtcHR5IG9iamVjdCBgc291cmNlYFxuICAgICAqIHZhbHVlcyBhZ2FpbnN0IGFueSBhcnJheSBvciBvYmplY3QgdmFsdWUsIHJlc3BlY3RpdmVseS4gU2VlIGBfLmlzRXF1YWxgXG4gICAgICogZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgdmFsdWUgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTXVsdGlwbGUgdmFsdWVzIGNhbiBiZSBjaGVja2VkIGJ5IGNvbWJpbmluZyBzZXZlcmFsIG1hdGNoZXJzXG4gICAgICogdXNpbmcgYF8ub3ZlclNvbWVgXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gbWF0Y2guXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbXG4gICAgICogICB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfSxcbiAgICAgKiAgIHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmlsdGVyKG9iamVjdHMsIF8ubWF0Y2hlcyh7ICdhJzogNCwgJ2MnOiA2IH0pKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1dXG4gICAgICpcbiAgICAgKiAvLyBDaGVja2luZyBmb3Igc2V2ZXJhbCBwb3NzaWJsZSB2YWx1ZXNcbiAgICAgKiBfLmZpbHRlcihvYmplY3RzLCBfLm92ZXJTb21lKFtfLm1hdGNoZXMoeyAnYSc6IDEgfSksIF8ubWF0Y2hlcyh7ICdhJzogNCB9KV0pKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH0sIHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hdGNoZXMoc291cmNlKSB7XG4gICAgICByZXR1cm4gYmFzZU1hdGNoZXMoYmFzZUNsb25lKHNvdXJjZSwgQ0xPTkVfREVFUF9GTEFHKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIHRoZVxuICAgICAqIHZhbHVlIGF0IGBwYXRoYCBvZiBhIGdpdmVuIG9iamVjdCB0byBgc3JjVmFsdWVgLCByZXR1cm5pbmcgYHRydWVgIGlmIHRoZVxuICAgICAqIG9iamVjdCB2YWx1ZSBpcyBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogUGFydGlhbCBjb21wYXJpc29ucyB3aWxsIG1hdGNoIGVtcHR5IGFycmF5IGFuZCBlbXB0eSBvYmplY3RcbiAgICAgKiBgc3JjVmFsdWVgIHZhbHVlcyBhZ2FpbnN0IGFueSBhcnJheSBvciBvYmplY3QgdmFsdWUsIHJlc3BlY3RpdmVseS4gU2VlXG4gICAgICogYF8uaXNFcXVhbGAgZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgdmFsdWUgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTXVsdGlwbGUgdmFsdWVzIGNhbiBiZSBjaGVja2VkIGJ5IGNvbWJpbmluZyBzZXZlcmFsIG1hdGNoZXJzXG4gICAgICogdXNpbmcgYF8ub3ZlclNvbWVgXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4yLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2guXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbXG4gICAgICogICB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfSxcbiAgICAgKiAgIHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmluZChvYmplY3RzLCBfLm1hdGNoZXNQcm9wZXJ0eSgnYScsIDQpKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogNCwgJ2InOiA1LCAnYyc6IDYgfVxuICAgICAqXG4gICAgICogLy8gQ2hlY2tpbmcgZm9yIHNldmVyYWwgcG9zc2libGUgdmFsdWVzXG4gICAgICogXy5maWx0ZXIob2JqZWN0cywgXy5vdmVyU29tZShbXy5tYXRjaGVzUHJvcGVydHkoJ2EnLCAxKSwgXy5tYXRjaGVzUHJvcGVydHkoJ2EnLCA0KV0pKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH0sIHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hdGNoZXNQcm9wZXJ0eShwYXRoLCBzcmNWYWx1ZSkge1xuICAgICAgcmV0dXJuIGJhc2VNYXRjaGVzUHJvcGVydHkocGF0aCwgYmFzZUNsb25lKHNyY1ZhbHVlLCBDTE9ORV9ERUVQX0ZMQUcpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSBtZXRob2QgYXQgYHBhdGhgIG9mIGEgZ2l2ZW4gb2JqZWN0LlxuICAgICAqIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQgdG8gdGhlIGludm9rZWQgbWV0aG9kLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNy4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgbWV0aG9kIHRvIGludm9rZS5cbiAgICAgKiBAcGFyYW0gey4uLip9IFthcmdzXSBUaGUgYXJndW1lbnRzIHRvIGludm9rZSB0aGUgbWV0aG9kIHdpdGguXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgaW52b2tlciBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbXG4gICAgICogICB7ICdhJzogeyAnYic6IF8uY29uc3RhbnQoMikgfSB9LFxuICAgICAqICAgeyAnYSc6IHsgJ2InOiBfLmNvbnN0YW50KDEpIH0gfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLm1hcChvYmplY3RzLCBfLm1ldGhvZCgnYS5iJykpO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqXG4gICAgICogXy5tYXAob2JqZWN0cywgXy5tZXRob2QoWydhJywgJ2InXSkpO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqL1xuICAgIHZhciBtZXRob2QgPSBiYXNlUmVzdChmdW5jdGlvbihwYXRoLCBhcmdzKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBiYXNlSW52b2tlKG9iamVjdCwgcGF0aCwgYXJncyk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLm1ldGhvZGA7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXNcbiAgICAgKiB0aGUgbWV0aG9kIGF0IGEgZ2l2ZW4gcGF0aCBvZiBgb2JqZWN0YC4gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZVxuICAgICAqIHByb3ZpZGVkIHRvIHRoZSBpbnZva2VkIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjcuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIHRoZSBtZXRob2Qgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBpbnZva2VyIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBfLnRpbWVzKDMsIF8uY29uc3RhbnQpLFxuICAgICAqICAgICBvYmplY3QgPSB7ICdhJzogYXJyYXksICdiJzogYXJyYXksICdjJzogYXJyYXkgfTtcbiAgICAgKlxuICAgICAqIF8ubWFwKFsnYVsyXScsICdjWzBdJ10sIF8ubWV0aG9kT2Yob2JqZWN0KSk7XG4gICAgICogLy8gPT4gWzIsIDBdXG4gICAgICpcbiAgICAgKiBfLm1hcChbWydhJywgJzInXSwgWydjJywgJzAnXV0sIF8ubWV0aG9kT2Yob2JqZWN0KSk7XG4gICAgICogLy8gPT4gWzIsIDBdXG4gICAgICovXG4gICAgdmFyIG1ldGhvZE9mID0gYmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LCBhcmdzKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ocGF0aCkge1xuICAgICAgICByZXR1cm4gYmFzZUludm9rZShvYmplY3QsIHBhdGgsIGFyZ3MpO1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIEFkZHMgYWxsIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBmdW5jdGlvbiBwcm9wZXJ0aWVzIG9mIGEgc291cmNlXG4gICAgICogb2JqZWN0IHRvIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QuIElmIGBvYmplY3RgIGlzIGEgZnVuY3Rpb24sIHRoZW4gbWV0aG9kc1xuICAgICAqIGFyZSBhZGRlZCB0byBpdHMgcHJvdG90eXBlIGFzIHdlbGwuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVXNlIGBfLnJ1bkluQ29udGV4dGAgdG8gY3JlYXRlIGEgcHJpc3RpbmUgYGxvZGFzaGAgZnVuY3Rpb24gdG9cbiAgICAgKiBhdm9pZCBjb25mbGljdHMgY2F1c2VkIGJ5IG1vZGlmeWluZyB0aGUgb3JpZ2luYWwuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb258T2JqZWN0fSBbb2JqZWN0PWxvZGFzaF0gVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgZnVuY3Rpb25zIHRvIGFkZC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmNoYWluPXRydWVdIFNwZWNpZnkgd2hldGhlciBtaXhpbnMgYXJlIGNoYWluYWJsZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb258T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiB2b3dlbHMoc3RyaW5nKSB7XG4gICAgICogICByZXR1cm4gXy5maWx0ZXIoc3RyaW5nLCBmdW5jdGlvbih2KSB7XG4gICAgICogICAgIHJldHVybiAvW2FlaW91XS9pLnRlc3Qodik7XG4gICAgICogICB9KTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLm1peGluKHsgJ3Zvd2Vscyc6IHZvd2VscyB9KTtcbiAgICAgKiBfLnZvd2VscygnZnJlZCcpO1xuICAgICAqIC8vID0+IFsnZSddXG4gICAgICpcbiAgICAgKiBfKCdmcmVkJykudm93ZWxzKCkudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbJ2UnXVxuICAgICAqXG4gICAgICogXy5taXhpbih7ICd2b3dlbHMnOiB2b3dlbHMgfSwgeyAnY2hhaW4nOiBmYWxzZSB9KTtcbiAgICAgKiBfKCdmcmVkJykudm93ZWxzKCk7XG4gICAgICogLy8gPT4gWydlJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtaXhpbihvYmplY3QsIHNvdXJjZSwgb3B0aW9ucykge1xuICAgICAgdmFyIHByb3BzID0ga2V5cyhzb3VyY2UpLFxuICAgICAgICAgIG1ldGhvZE5hbWVzID0gYmFzZUZ1bmN0aW9ucyhzb3VyY2UsIHByb3BzKTtcblxuICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCAmJlxuICAgICAgICAgICEoaXNPYmplY3Qoc291cmNlKSAmJiAobWV0aG9kTmFtZXMubGVuZ3RoIHx8ICFwcm9wcy5sZW5ndGgpKSkge1xuICAgICAgICBvcHRpb25zID0gc291cmNlO1xuICAgICAgICBzb3VyY2UgPSBvYmplY3Q7XG4gICAgICAgIG9iamVjdCA9IHRoaXM7XG4gICAgICAgIG1ldGhvZE5hbWVzID0gYmFzZUZ1bmN0aW9ucyhzb3VyY2UsIGtleXMoc291cmNlKSk7XG4gICAgICB9XG4gICAgICB2YXIgY2hhaW4gPSAhKGlzT2JqZWN0KG9wdGlvbnMpICYmICdjaGFpbicgaW4gb3B0aW9ucykgfHwgISFvcHRpb25zLmNoYWluLFxuICAgICAgICAgIGlzRnVuYyA9IGlzRnVuY3Rpb24ob2JqZWN0KTtcblxuICAgICAgYXJyYXlFYWNoKG1ldGhvZE5hbWVzLCBmdW5jdGlvbihtZXRob2ROYW1lKSB7XG4gICAgICAgIHZhciBmdW5jID0gc291cmNlW21ldGhvZE5hbWVdO1xuICAgICAgICBvYmplY3RbbWV0aG9kTmFtZV0gPSBmdW5jO1xuICAgICAgICBpZiAoaXNGdW5jKSB7XG4gICAgICAgICAgb2JqZWN0LnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIGNoYWluQWxsID0gdGhpcy5fX2NoYWluX187XG4gICAgICAgICAgICBpZiAoY2hhaW4gfHwgY2hhaW5BbGwpIHtcbiAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG9iamVjdCh0aGlzLl9fd3JhcHBlZF9fKSxcbiAgICAgICAgICAgICAgICAgIGFjdGlvbnMgPSByZXN1bHQuX19hY3Rpb25zX18gPSBjb3B5QXJyYXkodGhpcy5fX2FjdGlvbnNfXyk7XG5cbiAgICAgICAgICAgICAgYWN0aW9ucy5wdXNoKHsgJ2Z1bmMnOiBmdW5jLCAnYXJncyc6IGFyZ3VtZW50cywgJ3RoaXNBcmcnOiBvYmplY3QgfSk7XG4gICAgICAgICAgICAgIHJlc3VsdC5fX2NoYWluX18gPSBjaGFpbkFsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmdW5jLmFwcGx5KG9iamVjdCwgYXJyYXlQdXNoKFt0aGlzLnZhbHVlKCldLCBhcmd1bWVudHMpKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXZlcnRzIHRoZSBgX2AgdmFyaWFibGUgdG8gaXRzIHByZXZpb3VzIHZhbHVlIGFuZCByZXR1cm5zIGEgcmVmZXJlbmNlIHRvXG4gICAgICogdGhlIGBsb2Rhc2hgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGBsb2Rhc2hgIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgbG9kYXNoID0gXy5ub0NvbmZsaWN0KCk7XG4gICAgICovXG4gICAgZnVuY3Rpb24gbm9Db25mbGljdCgpIHtcbiAgICAgIGlmIChyb290Ll8gPT09IHRoaXMpIHtcbiAgICAgICAgcm9vdC5fID0gb2xkRGFzaDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRpbWVzKDIsIF8ubm9vcCk7XG4gICAgICogLy8gPT4gW3VuZGVmaW5lZCwgdW5kZWZpbmVkXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5vb3AoKSB7XG4gICAgICAvLyBObyBvcGVyYXRpb24gcGVyZm9ybWVkLlxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGdldHMgdGhlIGFyZ3VtZW50IGF0IGluZGV4IGBuYC4gSWYgYG5gIGlzIG5lZ2F0aXZlLFxuICAgICAqIHRoZSBudGggYXJndW1lbnQgZnJvbSB0aGUgZW5kIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MF0gVGhlIGluZGV4IG9mIHRoZSBhcmd1bWVudCB0byByZXR1cm4uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcGFzcy10aHJ1IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgZnVuYyA9IF8ubnRoQXJnKDEpO1xuICAgICAqIGZ1bmMoJ2EnLCAnYicsICdjJywgJ2QnKTtcbiAgICAgKiAvLyA9PiAnYidcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5udGhBcmcoLTIpO1xuICAgICAqIGZ1bmMoJ2EnLCAnYicsICdjJywgJ2QnKTtcbiAgICAgKiAvLyA9PiAnYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBudGhBcmcobikge1xuICAgICAgbiA9IHRvSW50ZWdlcihuKTtcbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgIHJldHVybiBiYXNlTnRoKGFyZ3MsIG4pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgaXRlcmF0ZWVzYCB3aXRoIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXNcbiAgICAgKiBhbmQgcmV0dXJucyB0aGVpciByZXN1bHRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW2l0ZXJhdGVlcz1bXy5pZGVudGl0eV1dXG4gICAgICogIFRoZSBpdGVyYXRlZXMgdG8gaW52b2tlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgZnVuYyA9IF8ub3ZlcihbTWF0aC5tYXgsIE1hdGgubWluXSk7XG4gICAgICpcbiAgICAgKiBmdW5jKDEsIDIsIDMsIDQpO1xuICAgICAqIC8vID0+IFs0LCAxXVxuICAgICAqL1xuICAgIHZhciBvdmVyID0gY3JlYXRlT3ZlcihhcnJheU1hcCk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgKiphbGwqKiBvZiB0aGUgYHByZWRpY2F0ZXNgIHJldHVyblxuICAgICAqIHRydXRoeSB3aGVuIGludm9rZWQgd2l0aCB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogRm9sbG93aW5nIHNob3J0aGFuZHMgYXJlIHBvc3NpYmxlIGZvciBwcm92aWRpbmcgcHJlZGljYXRlcy5cbiAgICAgKiBQYXNzIGFuIGBPYmplY3RgIGFuZCBpdCB3aWxsIGJlIHVzZWQgYXMgYW4gcGFyYW1ldGVyIGZvciBgXy5tYXRjaGVzYCB0byBjcmVhdGUgdGhlIHByZWRpY2F0ZS5cbiAgICAgKiBQYXNzIGFuIGBBcnJheWAgb2YgcGFyYW1ldGVycyBmb3IgYF8ubWF0Y2hlc1Byb3BlcnR5YCBhbmQgdGhlIHByZWRpY2F0ZSB3aWxsIGJlIGNyZWF0ZWQgdXNpbmcgdGhlbS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtwcmVkaWNhdGVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIHByZWRpY2F0ZXMgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5vdmVyRXZlcnkoW0Jvb2xlYW4sIGlzRmluaXRlXSk7XG4gICAgICpcbiAgICAgKiBmdW5jKCcxJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogZnVuYyhudWxsKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogZnVuYyhOYU4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIG92ZXJFdmVyeSA9IGNyZWF0ZU92ZXIoYXJyYXlFdmVyeSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgKiphbnkqKiBvZiB0aGUgYHByZWRpY2F0ZXNgIHJldHVyblxuICAgICAqIHRydXRoeSB3aGVuIGludm9rZWQgd2l0aCB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogRm9sbG93aW5nIHNob3J0aGFuZHMgYXJlIHBvc3NpYmxlIGZvciBwcm92aWRpbmcgcHJlZGljYXRlcy5cbiAgICAgKiBQYXNzIGFuIGBPYmplY3RgIGFuZCBpdCB3aWxsIGJlIHVzZWQgYXMgYW4gcGFyYW1ldGVyIGZvciBgXy5tYXRjaGVzYCB0byBjcmVhdGUgdGhlIHByZWRpY2F0ZS5cbiAgICAgKiBQYXNzIGFuIGBBcnJheWAgb2YgcGFyYW1ldGVycyBmb3IgYF8ubWF0Y2hlc1Byb3BlcnR5YCBhbmQgdGhlIHByZWRpY2F0ZSB3aWxsIGJlIGNyZWF0ZWQgdXNpbmcgdGhlbS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtwcmVkaWNhdGVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIHByZWRpY2F0ZXMgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5vdmVyU29tZShbQm9vbGVhbiwgaXNGaW5pdGVdKTtcbiAgICAgKlxuICAgICAqIGZ1bmMoJzEnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBmdW5jKG51bGwpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGZ1bmMoTmFOKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogdmFyIG1hdGNoZXNGdW5jID0gXy5vdmVyU29tZShbeyAnYSc6IDEgfSwgeyAnYSc6IDIgfV0pXG4gICAgICogdmFyIG1hdGNoZXNQcm9wZXJ0eUZ1bmMgPSBfLm92ZXJTb21lKFtbJ2EnLCAxXSwgWydhJywgMl1dKVxuICAgICAqL1xuICAgIHZhciBvdmVyU29tZSA9IGNyZWF0ZU92ZXIoYXJyYXlTb21lKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBhIGdpdmVuIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjQuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbXG4gICAgICogICB7ICdhJzogeyAnYic6IDIgfSB9LFxuICAgICAqICAgeyAnYSc6IHsgJ2InOiAxIH0gfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLm1hcChvYmplY3RzLCBfLnByb3BlcnR5KCdhLmInKSk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICpcbiAgICAgKiBfLm1hcChfLnNvcnRCeShvYmplY3RzLCBfLnByb3BlcnR5KFsnYScsICdiJ10pKSwgJ2EuYicpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHByb3BlcnR5KHBhdGgpIHtcbiAgICAgIHJldHVybiBpc0tleShwYXRoKSA/IGJhc2VQcm9wZXJ0eSh0b0tleShwYXRoKSkgOiBiYXNlUHJvcGVydHlEZWVwKHBhdGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5wcm9wZXJ0eWA7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnNcbiAgICAgKiB0aGUgdmFsdWUgYXQgYSBnaXZlbiBwYXRoIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFswLCAxLCAyXSxcbiAgICAgKiAgICAgb2JqZWN0ID0geyAnYSc6IGFycmF5LCAnYic6IGFycmF5LCAnYyc6IGFycmF5IH07XG4gICAgICpcbiAgICAgKiBfLm1hcChbJ2FbMl0nLCAnY1swXSddLCBfLnByb3BlcnR5T2Yob2JqZWN0KSk7XG4gICAgICogLy8gPT4gWzIsIDBdXG4gICAgICpcbiAgICAgKiBfLm1hcChbWydhJywgJzInXSwgWydjJywgJzAnXV0sIF8ucHJvcGVydHlPZihvYmplY3QpKTtcbiAgICAgKiAvLyA9PiBbMiwgMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwcm9wZXJ0eU9mKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogYmFzZUdldChvYmplY3QsIHBhdGgpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIG51bWJlcnMgKHBvc2l0aXZlIGFuZC9vciBuZWdhdGl2ZSkgcHJvZ3Jlc3NpbmcgZnJvbVxuICAgICAqIGBzdGFydGAgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBgZW5kYC4gQSBzdGVwIG9mIGAtMWAgaXMgdXNlZCBpZiBhIG5lZ2F0aXZlXG4gICAgICogYHN0YXJ0YCBpcyBzcGVjaWZpZWQgd2l0aG91dCBhbiBgZW5kYCBvciBgc3RlcGAuIElmIGBlbmRgIGlzIG5vdCBzcGVjaWZpZWQsXG4gICAgICogaXQncyBzZXQgdG8gYHN0YXJ0YCB3aXRoIGBzdGFydGAgdGhlbiBzZXQgdG8gYDBgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIEphdmFTY3JpcHQgZm9sbG93cyB0aGUgSUVFRS03NTQgc3RhbmRhcmQgZm9yIHJlc29sdmluZ1xuICAgICAqIGZsb2F0aW5nLXBvaW50IHZhbHVlcyB3aGljaCBjYW4gcHJvZHVjZSB1bmV4cGVjdGVkIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RlcD0xXSBUaGUgdmFsdWUgdG8gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBieS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmdlIG9mIG51bWJlcnMuXG4gICAgICogQHNlZSBfLmluUmFuZ2UsIF8ucmFuZ2VSaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDQpO1xuICAgICAqIC8vID0+IFswLCAxLCAyLCAzXVxuICAgICAqXG4gICAgICogXy5yYW5nZSgtNCk7XG4gICAgICogLy8gPT4gWzAsIC0xLCAtMiwgLTNdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDEsIDUpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzLCA0XVxuICAgICAqXG4gICAgICogXy5yYW5nZSgwLCAyMCwgNSk7XG4gICAgICogLy8gPT4gWzAsIDUsIDEwLCAxNV1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoMCwgLTQsIC0xKTtcbiAgICAgKiAvLyA9PiBbMCwgLTEsIC0yLCAtM11cbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoMSwgNCwgMCk7XG4gICAgICogLy8gPT4gWzEsIDEsIDFdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDApO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgdmFyIHJhbmdlID0gY3JlYXRlUmFuZ2UoKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucmFuZ2VgIGV4Y2VwdCB0aGF0IGl0IHBvcHVsYXRlcyB2YWx1ZXMgaW5cbiAgICAgKiBkZXNjZW5kaW5nIG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0ZXA9MV0gVGhlIHZhbHVlIHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgYnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5nZSBvZiBudW1iZXJzLlxuICAgICAqIEBzZWUgXy5pblJhbmdlLCBfLnJhbmdlXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCg0KTtcbiAgICAgKiAvLyA9PiBbMywgMiwgMSwgMF1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgtNCk7XG4gICAgICogLy8gPT4gWy0zLCAtMiwgLTEsIDBdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlUmlnaHQoMSwgNSk7XG4gICAgICogLy8gPT4gWzQsIDMsIDIsIDFdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlUmlnaHQoMCwgMjAsIDUpO1xuICAgICAqIC8vID0+IFsxNSwgMTAsIDUsIDBdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlUmlnaHQoMCwgLTQsIC0xKTtcbiAgICAgKiAvLyA9PiBbLTMsIC0yLCAtMSwgMF1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgxLCA0LCAwKTtcbiAgICAgKiAvLyA9PiBbMSwgMSwgMV1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgwKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIHZhciByYW5nZVJpZ2h0ID0gY3JlYXRlUmFuZ2UodHJ1ZSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGVtcHR5IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZW1wdHkgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheXMgPSBfLnRpbWVzKDIsIF8uc3R1YkFycmF5KTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5cyk7XG4gICAgICogLy8gPT4gW1tdLCBbXV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5c1swXSA9PT0gYXJyYXlzWzFdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0dWJBcnJheSgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xMy4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRpbWVzKDIsIF8uc3R1YkZhbHNlKTtcbiAgICAgKiAvLyA9PiBbZmFsc2UsIGZhbHNlXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0dWJGYWxzZSgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGVtcHR5IG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBlbXB0eSBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gXy50aW1lcygyLCBfLnN0dWJPYmplY3QpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0cyk7XG4gICAgICogLy8gPT4gW3t9LCB7fV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3R1Yk9iamVjdCgpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVtcHR5IHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50aW1lcygyLCBfLnN0dWJTdHJpbmcpO1xuICAgICAqIC8vID0+IFsnJywgJyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3R1YlN0cmluZygpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGB0cnVlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50aW1lcygyLCBfLnN0dWJUcnVlKTtcbiAgICAgKiAvLyA9PiBbdHJ1ZSwgdHJ1ZV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdHViVHJ1ZSgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEludm9rZXMgdGhlIGl0ZXJhdGVlIGBuYCB0aW1lcywgcmV0dXJuaW5nIGFuIGFycmF5IG9mIHRoZSByZXN1bHRzIG9mXG4gICAgICogZWFjaCBpbnZvY2F0aW9uLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDsgKGluZGV4KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGltZXMoMywgU3RyaW5nKTtcbiAgICAgKiAvLyA9PiBbJzAnLCAnMScsICcyJ11cbiAgICAgKlxuICAgICAqICBfLnRpbWVzKDQsIF8uY29uc3RhbnQoMCkpO1xuICAgICAqIC8vID0+IFswLCAwLCAwLCAwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRpbWVzKG4sIGl0ZXJhdGVlKSB7XG4gICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgaWYgKG4gPCAxIHx8IG4gPiBNQVhfU0FGRV9JTlRFR0VSKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IE1BWF9BUlJBWV9MRU5HVEgsXG4gICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWluKG4sIE1BWF9BUlJBWV9MRU5HVEgpO1xuXG4gICAgICBpdGVyYXRlZSA9IGdldEl0ZXJhdGVlKGl0ZXJhdGVlKTtcbiAgICAgIG4gLT0gTUFYX0FSUkFZX0xFTkdUSDtcblxuICAgICAgdmFyIHJlc3VsdCA9IGJhc2VUaW1lcyhsZW5ndGgsIGl0ZXJhdGVlKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgICAgICBpdGVyYXRlZShpbmRleCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9QYXRoKCdhLmIuYycpO1xuICAgICAqIC8vID0+IFsnYScsICdiJywgJ2MnXVxuICAgICAqXG4gICAgICogXy50b1BhdGgoJ2FbMF0uYi5jJyk7XG4gICAgICogLy8gPT4gWydhJywgJzAnLCAnYicsICdjJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b1BhdGgodmFsdWUpIHtcbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gYXJyYXlNYXAodmFsdWUsIHRvS2V5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc1N5bWJvbCh2YWx1ZSkgPyBbdmFsdWVdIDogY29weUFycmF5KHN0cmluZ1RvUGF0aCh0b1N0cmluZyh2YWx1ZSkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSB1bmlxdWUgSUQuIElmIGBwcmVmaXhgIGlzIGdpdmVuLCB0aGUgSUQgaXMgYXBwZW5kZWQgdG8gaXQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbcHJlZml4PScnXSBUaGUgdmFsdWUgdG8gcHJlZml4IHRoZSBJRCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuaXF1ZSBJRC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51bmlxdWVJZCgnY29udGFjdF8nKTtcbiAgICAgKiAvLyA9PiAnY29udGFjdF8xMDQnXG4gICAgICpcbiAgICAgKiBfLnVuaXF1ZUlkKCk7XG4gICAgICogLy8gPT4gJzEwNSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmlxdWVJZChwcmVmaXgpIHtcbiAgICAgIHZhciBpZCA9ICsraWRDb3VudGVyO1xuICAgICAgcmV0dXJuIHRvU3RyaW5nKHByZWZpeCkgKyBpZDtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBBZGRzIHR3byBudW1iZXJzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYXVnZW5kIFRoZSBmaXJzdCBudW1iZXIgaW4gYW4gYWRkaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGFkZGVuZCBUaGUgc2Vjb25kIG51bWJlciBpbiBhbiBhZGRpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSB0b3RhbC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5hZGQoNiwgNCk7XG4gICAgICogLy8gPT4gMTBcbiAgICAgKi9cbiAgICB2YXIgYWRkID0gY3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihhdWdlbmQsIGFkZGVuZCkge1xuICAgICAgcmV0dXJuIGF1Z2VuZCArIGFkZGVuZDtcbiAgICB9LCAwKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGBudW1iZXJgIHJvdW5kZWQgdXAgdG8gYHByZWNpc2lvbmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4xMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gcm91bmQgdXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MF0gVGhlIHByZWNpc2lvbiB0byByb3VuZCB1cCB0by5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByb3VuZGVkIHVwIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jZWlsKDQuMDA2KTtcbiAgICAgKiAvLyA9PiA1XG4gICAgICpcbiAgICAgKiBfLmNlaWwoNi4wMDQsIDIpO1xuICAgICAqIC8vID0+IDYuMDFcbiAgICAgKlxuICAgICAqIF8uY2VpbCg2MDQwLCAtMik7XG4gICAgICogLy8gPT4gNjEwMFxuICAgICAqL1xuICAgIHZhciBjZWlsID0gY3JlYXRlUm91bmQoJ2NlaWwnKTtcblxuICAgIC8qKlxuICAgICAqIERpdmlkZSB0d28gbnVtYmVycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGRpdmlkZW5kIFRoZSBmaXJzdCBudW1iZXIgaW4gYSBkaXZpc2lvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGl2aXNvciBUaGUgc2Vjb25kIG51bWJlciBpbiBhIGRpdmlzaW9uLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHF1b3RpZW50LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRpdmlkZSg2LCA0KTtcbiAgICAgKiAvLyA9PiAxLjVcbiAgICAgKi9cbiAgICB2YXIgZGl2aWRlID0gY3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihkaXZpZGVuZCwgZGl2aXNvcikge1xuICAgICAgcmV0dXJuIGRpdmlkZW5kIC8gZGl2aXNvcjtcbiAgICB9LCAxKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGBudW1iZXJgIHJvdW5kZWQgZG93biB0byBgcHJlY2lzaW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byByb3VuZCBkb3duLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcHJlY2lzaW9uPTBdIFRoZSBwcmVjaXNpb24gdG8gcm91bmQgZG93biB0by5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByb3VuZGVkIGRvd24gbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZsb29yKDQuMDA2KTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICpcbiAgICAgKiBfLmZsb29yKDAuMDQ2LCAyKTtcbiAgICAgKiAvLyA9PiAwLjA0XG4gICAgICpcbiAgICAgKiBfLmZsb29yKDQwNjAsIC0yKTtcbiAgICAgKiAvLyA9PiA0MDAwXG4gICAgICovXG4gICAgdmFyIGZsb29yID0gY3JlYXRlUm91bmQoJ2Zsb29yJyk7XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgbWF4aW11bSB2YWx1ZSBvZiBgYXJyYXlgLiBJZiBgYXJyYXlgIGlzIGVtcHR5IG9yIGZhbHNleSxcbiAgICAgKiBgdW5kZWZpbmVkYCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWF4aW11bSB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tYXgoWzQsIDIsIDgsIDZdKTtcbiAgICAgKiAvLyA9PiA4XG4gICAgICpcbiAgICAgKiBfLm1heChbXSk7XG4gICAgICogLy8gPT4gdW5kZWZpbmVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF4KGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGlkZW50aXR5LCBiYXNlR3QpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWF4YCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5IHdoaWNoXG4gICAgICogdGhlIHZhbHVlIGlzIHJhbmtlZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXhpbXVtIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogMSB9LCB7ICduJzogMiB9XTtcbiAgICAgKlxuICAgICAqIF8ubWF4Qnkob2JqZWN0cywgZnVuY3Rpb24obykgeyByZXR1cm4gby5uOyB9KTtcbiAgICAgKiAvLyA9PiB7ICduJzogMiB9XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1heEJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4geyAnbic6IDIgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1heEJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZUV4dHJlbXVtKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMiksIGJhc2VHdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgdGhlIG1lYW4gb2YgdGhlIHZhbHVlcyBpbiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG1lYW4uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubWVhbihbNCwgMiwgOCwgNl0pO1xuICAgICAqIC8vID0+IDVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtZWFuKGFycmF5KSB7XG4gICAgICByZXR1cm4gYmFzZU1lYW4oYXJyYXksIGlkZW50aXR5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLm1lYW5gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSB2YWx1ZSB0byBiZSBhdmVyYWdlZC5cbiAgICAgKiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbWVhbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAnbic6IDQgfSwgeyAnbic6IDIgfSwgeyAnbic6IDggfSwgeyAnbic6IDYgfV07XG4gICAgICpcbiAgICAgKiBfLm1lYW5CeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAqIC8vID0+IDVcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWVhbkJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4gNVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1lYW5CeShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBiYXNlTWVhbihhcnJheSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgbWluaW11bSB2YWx1ZSBvZiBgYXJyYXlgLiBJZiBgYXJyYXlgIGlzIGVtcHR5IG9yIGZhbHNleSxcbiAgICAgKiBgdW5kZWZpbmVkYCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5taW4oWzQsIDIsIDgsIDZdKTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICpcbiAgICAgKiBfLm1pbihbXSk7XG4gICAgICogLy8gPT4gdW5kZWZpbmVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWluKGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGlkZW50aXR5LCBiYXNlTHQpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWluYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5IHdoaWNoXG4gICAgICogdGhlIHZhbHVlIGlzIHJhbmtlZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogMSB9LCB7ICduJzogMiB9XTtcbiAgICAgKlxuICAgICAqIF8ubWluQnkob2JqZWN0cywgZnVuY3Rpb24obykgeyByZXR1cm4gby5uOyB9KTtcbiAgICAgKiAvLyA9PiB7ICduJzogMSB9XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1pbkJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4geyAnbic6IDEgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1pbkJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZUV4dHJlbXVtKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMiksIGJhc2VMdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTXVsdGlwbHkgdHdvIG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC43LjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtdWx0aXBsaWVyIFRoZSBmaXJzdCBudW1iZXIgaW4gYSBtdWx0aXBsaWNhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbXVsdGlwbGljYW5kIFRoZSBzZWNvbmQgbnVtYmVyIGluIGEgbXVsdGlwbGljYXRpb24uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcHJvZHVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tdWx0aXBseSg2LCA0KTtcbiAgICAgKiAvLyA9PiAyNFxuICAgICAqL1xuICAgIHZhciBtdWx0aXBseSA9IGNyZWF0ZU1hdGhPcGVyYXRpb24oZnVuY3Rpb24obXVsdGlwbGllciwgbXVsdGlwbGljYW5kKSB7XG4gICAgICByZXR1cm4gbXVsdGlwbGllciAqIG11bHRpcGxpY2FuZDtcbiAgICB9LCAxKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGBudW1iZXJgIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4xMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gcm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MF0gVGhlIHByZWNpc2lvbiB0byByb3VuZCB0by5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByb3VuZGVkIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yb3VuZCg0LjAwNik7XG4gICAgICogLy8gPT4gNFxuICAgICAqXG4gICAgICogXy5yb3VuZCg0LjAwNiwgMik7XG4gICAgICogLy8gPT4gNC4wMVxuICAgICAqXG4gICAgICogXy5yb3VuZCg0MDYwLCAtMik7XG4gICAgICogLy8gPT4gNDEwMFxuICAgICAqL1xuICAgIHZhciByb3VuZCA9IGNyZWF0ZVJvdW5kKCdyb3VuZCcpO1xuXG4gICAgLyoqXG4gICAgICogU3VidHJhY3QgdHdvIG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaW51ZW5kIFRoZSBmaXJzdCBudW1iZXIgaW4gYSBzdWJ0cmFjdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3VidHJhaGVuZCBUaGUgc2Vjb25kIG51bWJlciBpbiBhIHN1YnRyYWN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGRpZmZlcmVuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc3VidHJhY3QoNiwgNCk7XG4gICAgICogLy8gPT4gMlxuICAgICAqL1xuICAgIHZhciBzdWJ0cmFjdCA9IGNyZWF0ZU1hdGhPcGVyYXRpb24oZnVuY3Rpb24obWludWVuZCwgc3VidHJhaGVuZCkge1xuICAgICAgcmV0dXJuIG1pbnVlbmQgLSBzdWJ0cmFoZW5kO1xuICAgIH0sIDApO1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgdGhlIHN1bSBvZiB0aGUgdmFsdWVzIGluIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy40LjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3VtLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnN1bShbNCwgMiwgOCwgNl0pO1xuICAgICAqIC8vID0+IDIwXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3VtKGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlU3VtKGFycmF5LCBpZGVudGl0eSlcbiAgICAgICAgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc3VtYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgdmFsdWUgdG8gYmUgc3VtbWVkLlxuICAgICAqIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdW0uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ24nOiA0IH0sIHsgJ24nOiAyIH0sIHsgJ24nOiA4IH0sIHsgJ24nOiA2IH1dO1xuICAgICAqXG4gICAgICogXy5zdW1CeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAqIC8vID0+IDIwXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnN1bUJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4gMjBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdW1CeShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VTdW0oYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSlcbiAgICAgICAgOiAwO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8vIEFkZCBtZXRob2RzIHRoYXQgcmV0dXJuIHdyYXBwZWQgdmFsdWVzIGluIGNoYWluIHNlcXVlbmNlcy5cbiAgICBsb2Rhc2guYWZ0ZXIgPSBhZnRlcjtcbiAgICBsb2Rhc2guYXJ5ID0gYXJ5O1xuICAgIGxvZGFzaC5hc3NpZ24gPSBhc3NpZ247XG4gICAgbG9kYXNoLmFzc2lnbkluID0gYXNzaWduSW47XG4gICAgbG9kYXNoLmFzc2lnbkluV2l0aCA9IGFzc2lnbkluV2l0aDtcbiAgICBsb2Rhc2guYXNzaWduV2l0aCA9IGFzc2lnbldpdGg7XG4gICAgbG9kYXNoLmF0ID0gYXQ7XG4gICAgbG9kYXNoLmJlZm9yZSA9IGJlZm9yZTtcbiAgICBsb2Rhc2guYmluZCA9IGJpbmQ7XG4gICAgbG9kYXNoLmJpbmRBbGwgPSBiaW5kQWxsO1xuICAgIGxvZGFzaC5iaW5kS2V5ID0gYmluZEtleTtcbiAgICBsb2Rhc2guY2FzdEFycmF5ID0gY2FzdEFycmF5O1xuICAgIGxvZGFzaC5jaGFpbiA9IGNoYWluO1xuICAgIGxvZGFzaC5jaHVuayA9IGNodW5rO1xuICAgIGxvZGFzaC5jb21wYWN0ID0gY29tcGFjdDtcbiAgICBsb2Rhc2guY29uY2F0ID0gY29uY2F0O1xuICAgIGxvZGFzaC5jb25kID0gY29uZDtcbiAgICBsb2Rhc2guY29uZm9ybXMgPSBjb25mb3JtcztcbiAgICBsb2Rhc2guY29uc3RhbnQgPSBjb25zdGFudDtcbiAgICBsb2Rhc2guY291bnRCeSA9IGNvdW50Qnk7XG4gICAgbG9kYXNoLmNyZWF0ZSA9IGNyZWF0ZTtcbiAgICBsb2Rhc2guY3VycnkgPSBjdXJyeTtcbiAgICBsb2Rhc2guY3VycnlSaWdodCA9IGN1cnJ5UmlnaHQ7XG4gICAgbG9kYXNoLmRlYm91bmNlID0gZGVib3VuY2U7XG4gICAgbG9kYXNoLmRlZmF1bHRzID0gZGVmYXVsdHM7XG4gICAgbG9kYXNoLmRlZmF1bHRzRGVlcCA9IGRlZmF1bHRzRGVlcDtcbiAgICBsb2Rhc2guZGVmZXIgPSBkZWZlcjtcbiAgICBsb2Rhc2guZGVsYXkgPSBkZWxheTtcbiAgICBsb2Rhc2guZGlmZmVyZW5jZSA9IGRpZmZlcmVuY2U7XG4gICAgbG9kYXNoLmRpZmZlcmVuY2VCeSA9IGRpZmZlcmVuY2VCeTtcbiAgICBsb2Rhc2guZGlmZmVyZW5jZVdpdGggPSBkaWZmZXJlbmNlV2l0aDtcbiAgICBsb2Rhc2guZHJvcCA9IGRyb3A7XG4gICAgbG9kYXNoLmRyb3BSaWdodCA9IGRyb3BSaWdodDtcbiAgICBsb2Rhc2guZHJvcFJpZ2h0V2hpbGUgPSBkcm9wUmlnaHRXaGlsZTtcbiAgICBsb2Rhc2guZHJvcFdoaWxlID0gZHJvcFdoaWxlO1xuICAgIGxvZGFzaC5maWxsID0gZmlsbDtcbiAgICBsb2Rhc2guZmlsdGVyID0gZmlsdGVyO1xuICAgIGxvZGFzaC5mbGF0TWFwID0gZmxhdE1hcDtcbiAgICBsb2Rhc2guZmxhdE1hcERlZXAgPSBmbGF0TWFwRGVlcDtcbiAgICBsb2Rhc2guZmxhdE1hcERlcHRoID0gZmxhdE1hcERlcHRoO1xuICAgIGxvZGFzaC5mbGF0dGVuID0gZmxhdHRlbjtcbiAgICBsb2Rhc2guZmxhdHRlbkRlZXAgPSBmbGF0dGVuRGVlcDtcbiAgICBsb2Rhc2guZmxhdHRlbkRlcHRoID0gZmxhdHRlbkRlcHRoO1xuICAgIGxvZGFzaC5mbGlwID0gZmxpcDtcbiAgICBsb2Rhc2guZmxvdyA9IGZsb3c7XG4gICAgbG9kYXNoLmZsb3dSaWdodCA9IGZsb3dSaWdodDtcbiAgICBsb2Rhc2guZnJvbVBhaXJzID0gZnJvbVBhaXJzO1xuICAgIGxvZGFzaC5mdW5jdGlvbnMgPSBmdW5jdGlvbnM7XG4gICAgbG9kYXNoLmZ1bmN0aW9uc0luID0gZnVuY3Rpb25zSW47XG4gICAgbG9kYXNoLmdyb3VwQnkgPSBncm91cEJ5O1xuICAgIGxvZGFzaC5pbml0aWFsID0gaW5pdGlhbDtcbiAgICBsb2Rhc2guaW50ZXJzZWN0aW9uID0gaW50ZXJzZWN0aW9uO1xuICAgIGxvZGFzaC5pbnRlcnNlY3Rpb25CeSA9IGludGVyc2VjdGlvbkJ5O1xuICAgIGxvZGFzaC5pbnRlcnNlY3Rpb25XaXRoID0gaW50ZXJzZWN0aW9uV2l0aDtcbiAgICBsb2Rhc2guaW52ZXJ0ID0gaW52ZXJ0O1xuICAgIGxvZGFzaC5pbnZlcnRCeSA9IGludmVydEJ5O1xuICAgIGxvZGFzaC5pbnZva2VNYXAgPSBpbnZva2VNYXA7XG4gICAgbG9kYXNoLml0ZXJhdGVlID0gaXRlcmF0ZWU7XG4gICAgbG9kYXNoLmtleUJ5ID0ga2V5Qnk7XG4gICAgbG9kYXNoLmtleXMgPSBrZXlzO1xuICAgIGxvZGFzaC5rZXlzSW4gPSBrZXlzSW47XG4gICAgbG9kYXNoLm1hcCA9IG1hcDtcbiAgICBsb2Rhc2gubWFwS2V5cyA9IG1hcEtleXM7XG4gICAgbG9kYXNoLm1hcFZhbHVlcyA9IG1hcFZhbHVlcztcbiAgICBsb2Rhc2gubWF0Y2hlcyA9IG1hdGNoZXM7XG4gICAgbG9kYXNoLm1hdGNoZXNQcm9wZXJ0eSA9IG1hdGNoZXNQcm9wZXJ0eTtcbiAgICBsb2Rhc2gubWVtb2l6ZSA9IG1lbW9pemU7XG4gICAgbG9kYXNoLm1lcmdlID0gbWVyZ2U7XG4gICAgbG9kYXNoLm1lcmdlV2l0aCA9IG1lcmdlV2l0aDtcbiAgICBsb2Rhc2gubWV0aG9kID0gbWV0aG9kO1xuICAgIGxvZGFzaC5tZXRob2RPZiA9IG1ldGhvZE9mO1xuICAgIGxvZGFzaC5taXhpbiA9IG1peGluO1xuICAgIGxvZGFzaC5uZWdhdGUgPSBuZWdhdGU7XG4gICAgbG9kYXNoLm50aEFyZyA9IG50aEFyZztcbiAgICBsb2Rhc2gub21pdCA9IG9taXQ7XG4gICAgbG9kYXNoLm9taXRCeSA9IG9taXRCeTtcbiAgICBsb2Rhc2gub25jZSA9IG9uY2U7XG4gICAgbG9kYXNoLm9yZGVyQnkgPSBvcmRlckJ5O1xuICAgIGxvZGFzaC5vdmVyID0gb3ZlcjtcbiAgICBsb2Rhc2gub3ZlckFyZ3MgPSBvdmVyQXJncztcbiAgICBsb2Rhc2gub3ZlckV2ZXJ5ID0gb3ZlckV2ZXJ5O1xuICAgIGxvZGFzaC5vdmVyU29tZSA9IG92ZXJTb21lO1xuICAgIGxvZGFzaC5wYXJ0aWFsID0gcGFydGlhbDtcbiAgICBsb2Rhc2gucGFydGlhbFJpZ2h0ID0gcGFydGlhbFJpZ2h0O1xuICAgIGxvZGFzaC5wYXJ0aXRpb24gPSBwYXJ0aXRpb247XG4gICAgbG9kYXNoLnBpY2sgPSBwaWNrO1xuICAgIGxvZGFzaC5waWNrQnkgPSBwaWNrQnk7XG4gICAgbG9kYXNoLnByb3BlcnR5ID0gcHJvcGVydHk7XG4gICAgbG9kYXNoLnByb3BlcnR5T2YgPSBwcm9wZXJ0eU9mO1xuICAgIGxvZGFzaC5wdWxsID0gcHVsbDtcbiAgICBsb2Rhc2gucHVsbEFsbCA9IHB1bGxBbGw7XG4gICAgbG9kYXNoLnB1bGxBbGxCeSA9IHB1bGxBbGxCeTtcbiAgICBsb2Rhc2gucHVsbEFsbFdpdGggPSBwdWxsQWxsV2l0aDtcbiAgICBsb2Rhc2gucHVsbEF0ID0gcHVsbEF0O1xuICAgIGxvZGFzaC5yYW5nZSA9IHJhbmdlO1xuICAgIGxvZGFzaC5yYW5nZVJpZ2h0ID0gcmFuZ2VSaWdodDtcbiAgICBsb2Rhc2gucmVhcmcgPSByZWFyZztcbiAgICBsb2Rhc2gucmVqZWN0ID0gcmVqZWN0O1xuICAgIGxvZGFzaC5yZW1vdmUgPSByZW1vdmU7XG4gICAgbG9kYXNoLnJlc3QgPSByZXN0O1xuICAgIGxvZGFzaC5yZXZlcnNlID0gcmV2ZXJzZTtcbiAgICBsb2Rhc2guc2FtcGxlU2l6ZSA9IHNhbXBsZVNpemU7XG4gICAgbG9kYXNoLnNldCA9IHNldDtcbiAgICBsb2Rhc2guc2V0V2l0aCA9IHNldFdpdGg7XG4gICAgbG9kYXNoLnNodWZmbGUgPSBzaHVmZmxlO1xuICAgIGxvZGFzaC5zbGljZSA9IHNsaWNlO1xuICAgIGxvZGFzaC5zb3J0QnkgPSBzb3J0Qnk7XG4gICAgbG9kYXNoLnNvcnRlZFVuaXEgPSBzb3J0ZWRVbmlxO1xuICAgIGxvZGFzaC5zb3J0ZWRVbmlxQnkgPSBzb3J0ZWRVbmlxQnk7XG4gICAgbG9kYXNoLnNwbGl0ID0gc3BsaXQ7XG4gICAgbG9kYXNoLnNwcmVhZCA9IHNwcmVhZDtcbiAgICBsb2Rhc2gudGFpbCA9IHRhaWw7XG4gICAgbG9kYXNoLnRha2UgPSB0YWtlO1xuICAgIGxvZGFzaC50YWtlUmlnaHQgPSB0YWtlUmlnaHQ7XG4gICAgbG9kYXNoLnRha2VSaWdodFdoaWxlID0gdGFrZVJpZ2h0V2hpbGU7XG4gICAgbG9kYXNoLnRha2VXaGlsZSA9IHRha2VXaGlsZTtcbiAgICBsb2Rhc2gudGFwID0gdGFwO1xuICAgIGxvZGFzaC50aHJvdHRsZSA9IHRocm90dGxlO1xuICAgIGxvZGFzaC50aHJ1ID0gdGhydTtcbiAgICBsb2Rhc2gudG9BcnJheSA9IHRvQXJyYXk7XG4gICAgbG9kYXNoLnRvUGFpcnMgPSB0b1BhaXJzO1xuICAgIGxvZGFzaC50b1BhaXJzSW4gPSB0b1BhaXJzSW47XG4gICAgbG9kYXNoLnRvUGF0aCA9IHRvUGF0aDtcbiAgICBsb2Rhc2gudG9QbGFpbk9iamVjdCA9IHRvUGxhaW5PYmplY3Q7XG4gICAgbG9kYXNoLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTtcbiAgICBsb2Rhc2gudW5hcnkgPSB1bmFyeTtcbiAgICBsb2Rhc2gudW5pb24gPSB1bmlvbjtcbiAgICBsb2Rhc2gudW5pb25CeSA9IHVuaW9uQnk7XG4gICAgbG9kYXNoLnVuaW9uV2l0aCA9IHVuaW9uV2l0aDtcbiAgICBsb2Rhc2gudW5pcSA9IHVuaXE7XG4gICAgbG9kYXNoLnVuaXFCeSA9IHVuaXFCeTtcbiAgICBsb2Rhc2gudW5pcVdpdGggPSB1bmlxV2l0aDtcbiAgICBsb2Rhc2gudW5zZXQgPSB1bnNldDtcbiAgICBsb2Rhc2gudW56aXAgPSB1bnppcDtcbiAgICBsb2Rhc2gudW56aXBXaXRoID0gdW56aXBXaXRoO1xuICAgIGxvZGFzaC51cGRhdGUgPSB1cGRhdGU7XG4gICAgbG9kYXNoLnVwZGF0ZVdpdGggPSB1cGRhdGVXaXRoO1xuICAgIGxvZGFzaC52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgbG9kYXNoLnZhbHVlc0luID0gdmFsdWVzSW47XG4gICAgbG9kYXNoLndpdGhvdXQgPSB3aXRob3V0O1xuICAgIGxvZGFzaC53b3JkcyA9IHdvcmRzO1xuICAgIGxvZGFzaC53cmFwID0gd3JhcDtcbiAgICBsb2Rhc2gueG9yID0geG9yO1xuICAgIGxvZGFzaC54b3JCeSA9IHhvckJ5O1xuICAgIGxvZGFzaC54b3JXaXRoID0geG9yV2l0aDtcbiAgICBsb2Rhc2guemlwID0gemlwO1xuICAgIGxvZGFzaC56aXBPYmplY3QgPSB6aXBPYmplY3Q7XG4gICAgbG9kYXNoLnppcE9iamVjdERlZXAgPSB6aXBPYmplY3REZWVwO1xuICAgIGxvZGFzaC56aXBXaXRoID0gemlwV2l0aDtcblxuICAgIC8vIEFkZCBhbGlhc2VzLlxuICAgIGxvZGFzaC5lbnRyaWVzID0gdG9QYWlycztcbiAgICBsb2Rhc2guZW50cmllc0luID0gdG9QYWlyc0luO1xuICAgIGxvZGFzaC5leHRlbmQgPSBhc3NpZ25JbjtcbiAgICBsb2Rhc2guZXh0ZW5kV2l0aCA9IGFzc2lnbkluV2l0aDtcblxuICAgIC8vIEFkZCBtZXRob2RzIHRvIGBsb2Rhc2gucHJvdG90eXBlYC5cbiAgICBtaXhpbihsb2Rhc2gsIGxvZGFzaCk7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0aGF0IHJldHVybiB1bndyYXBwZWQgdmFsdWVzIGluIGNoYWluIHNlcXVlbmNlcy5cbiAgICBsb2Rhc2guYWRkID0gYWRkO1xuICAgIGxvZGFzaC5hdHRlbXB0ID0gYXR0ZW1wdDtcbiAgICBsb2Rhc2guY2FtZWxDYXNlID0gY2FtZWxDYXNlO1xuICAgIGxvZGFzaC5jYXBpdGFsaXplID0gY2FwaXRhbGl6ZTtcbiAgICBsb2Rhc2guY2VpbCA9IGNlaWw7XG4gICAgbG9kYXNoLmNsYW1wID0gY2xhbXA7XG4gICAgbG9kYXNoLmNsb25lID0gY2xvbmU7XG4gICAgbG9kYXNoLmNsb25lRGVlcCA9IGNsb25lRGVlcDtcbiAgICBsb2Rhc2guY2xvbmVEZWVwV2l0aCA9IGNsb25lRGVlcFdpdGg7XG4gICAgbG9kYXNoLmNsb25lV2l0aCA9IGNsb25lV2l0aDtcbiAgICBsb2Rhc2guY29uZm9ybXNUbyA9IGNvbmZvcm1zVG87XG4gICAgbG9kYXNoLmRlYnVyciA9IGRlYnVycjtcbiAgICBsb2Rhc2guZGVmYXVsdFRvID0gZGVmYXVsdFRvO1xuICAgIGxvZGFzaC5kaXZpZGUgPSBkaXZpZGU7XG4gICAgbG9kYXNoLmVuZHNXaXRoID0gZW5kc1dpdGg7XG4gICAgbG9kYXNoLmVxID0gZXE7XG4gICAgbG9kYXNoLmVzY2FwZSA9IGVzY2FwZTtcbiAgICBsb2Rhc2guZXNjYXBlUmVnRXhwID0gZXNjYXBlUmVnRXhwO1xuICAgIGxvZGFzaC5ldmVyeSA9IGV2ZXJ5O1xuICAgIGxvZGFzaC5maW5kID0gZmluZDtcbiAgICBsb2Rhc2guZmluZEluZGV4ID0gZmluZEluZGV4O1xuICAgIGxvZGFzaC5maW5kS2V5ID0gZmluZEtleTtcbiAgICBsb2Rhc2guZmluZExhc3QgPSBmaW5kTGFzdDtcbiAgICBsb2Rhc2guZmluZExhc3RJbmRleCA9IGZpbmRMYXN0SW5kZXg7XG4gICAgbG9kYXNoLmZpbmRMYXN0S2V5ID0gZmluZExhc3RLZXk7XG4gICAgbG9kYXNoLmZsb29yID0gZmxvb3I7XG4gICAgbG9kYXNoLmZvckVhY2ggPSBmb3JFYWNoO1xuICAgIGxvZGFzaC5mb3JFYWNoUmlnaHQgPSBmb3JFYWNoUmlnaHQ7XG4gICAgbG9kYXNoLmZvckluID0gZm9ySW47XG4gICAgbG9kYXNoLmZvckluUmlnaHQgPSBmb3JJblJpZ2h0O1xuICAgIGxvZGFzaC5mb3JPd24gPSBmb3JPd247XG4gICAgbG9kYXNoLmZvck93blJpZ2h0ID0gZm9yT3duUmlnaHQ7XG4gICAgbG9kYXNoLmdldCA9IGdldDtcbiAgICBsb2Rhc2guZ3QgPSBndDtcbiAgICBsb2Rhc2guZ3RlID0gZ3RlO1xuICAgIGxvZGFzaC5oYXMgPSBoYXM7XG4gICAgbG9kYXNoLmhhc0luID0gaGFzSW47XG4gICAgbG9kYXNoLmhlYWQgPSBoZWFkO1xuICAgIGxvZGFzaC5pZGVudGl0eSA9IGlkZW50aXR5O1xuICAgIGxvZGFzaC5pbmNsdWRlcyA9IGluY2x1ZGVzO1xuICAgIGxvZGFzaC5pbmRleE9mID0gaW5kZXhPZjtcbiAgICBsb2Rhc2guaW5SYW5nZSA9IGluUmFuZ2U7XG4gICAgbG9kYXNoLmludm9rZSA9IGludm9rZTtcbiAgICBsb2Rhc2guaXNBcmd1bWVudHMgPSBpc0FyZ3VtZW50cztcbiAgICBsb2Rhc2guaXNBcnJheSA9IGlzQXJyYXk7XG4gICAgbG9kYXNoLmlzQXJyYXlCdWZmZXIgPSBpc0FycmF5QnVmZmVyO1xuICAgIGxvZGFzaC5pc0FycmF5TGlrZSA9IGlzQXJyYXlMaWtlO1xuICAgIGxvZGFzaC5pc0FycmF5TGlrZU9iamVjdCA9IGlzQXJyYXlMaWtlT2JqZWN0O1xuICAgIGxvZGFzaC5pc0Jvb2xlYW4gPSBpc0Jvb2xlYW47XG4gICAgbG9kYXNoLmlzQnVmZmVyID0gaXNCdWZmZXI7XG4gICAgbG9kYXNoLmlzRGF0ZSA9IGlzRGF0ZTtcbiAgICBsb2Rhc2guaXNFbGVtZW50ID0gaXNFbGVtZW50O1xuICAgIGxvZGFzaC5pc0VtcHR5ID0gaXNFbXB0eTtcbiAgICBsb2Rhc2guaXNFcXVhbCA9IGlzRXF1YWw7XG4gICAgbG9kYXNoLmlzRXF1YWxXaXRoID0gaXNFcXVhbFdpdGg7XG4gICAgbG9kYXNoLmlzRXJyb3IgPSBpc0Vycm9yO1xuICAgIGxvZGFzaC5pc0Zpbml0ZSA9IGlzRmluaXRlO1xuICAgIGxvZGFzaC5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjtcbiAgICBsb2Rhc2guaXNJbnRlZ2VyID0gaXNJbnRlZ2VyO1xuICAgIGxvZGFzaC5pc0xlbmd0aCA9IGlzTGVuZ3RoO1xuICAgIGxvZGFzaC5pc01hcCA9IGlzTWFwO1xuICAgIGxvZGFzaC5pc01hdGNoID0gaXNNYXRjaDtcbiAgICBsb2Rhc2guaXNNYXRjaFdpdGggPSBpc01hdGNoV2l0aDtcbiAgICBsb2Rhc2guaXNOYU4gPSBpc05hTjtcbiAgICBsb2Rhc2guaXNOYXRpdmUgPSBpc05hdGl2ZTtcbiAgICBsb2Rhc2guaXNOaWwgPSBpc05pbDtcbiAgICBsb2Rhc2guaXNOdWxsID0gaXNOdWxsO1xuICAgIGxvZGFzaC5pc051bWJlciA9IGlzTnVtYmVyO1xuICAgIGxvZGFzaC5pc09iamVjdCA9IGlzT2JqZWN0O1xuICAgIGxvZGFzaC5pc09iamVjdExpa2UgPSBpc09iamVjdExpa2U7XG4gICAgbG9kYXNoLmlzUGxhaW5PYmplY3QgPSBpc1BsYWluT2JqZWN0O1xuICAgIGxvZGFzaC5pc1JlZ0V4cCA9IGlzUmVnRXhwO1xuICAgIGxvZGFzaC5pc1NhZmVJbnRlZ2VyID0gaXNTYWZlSW50ZWdlcjtcbiAgICBsb2Rhc2guaXNTZXQgPSBpc1NldDtcbiAgICBsb2Rhc2guaXNTdHJpbmcgPSBpc1N0cmluZztcbiAgICBsb2Rhc2guaXNTeW1ib2wgPSBpc1N5bWJvbDtcbiAgICBsb2Rhc2guaXNUeXBlZEFycmF5ID0gaXNUeXBlZEFycmF5O1xuICAgIGxvZGFzaC5pc1VuZGVmaW5lZCA9IGlzVW5kZWZpbmVkO1xuICAgIGxvZGFzaC5pc1dlYWtNYXAgPSBpc1dlYWtNYXA7XG4gICAgbG9kYXNoLmlzV2Vha1NldCA9IGlzV2Vha1NldDtcbiAgICBsb2Rhc2guam9pbiA9IGpvaW47XG4gICAgbG9kYXNoLmtlYmFiQ2FzZSA9IGtlYmFiQ2FzZTtcbiAgICBsb2Rhc2gubGFzdCA9IGxhc3Q7XG4gICAgbG9kYXNoLmxhc3RJbmRleE9mID0gbGFzdEluZGV4T2Y7XG4gICAgbG9kYXNoLmxvd2VyQ2FzZSA9IGxvd2VyQ2FzZTtcbiAgICBsb2Rhc2gubG93ZXJGaXJzdCA9IGxvd2VyRmlyc3Q7XG4gICAgbG9kYXNoLmx0ID0gbHQ7XG4gICAgbG9kYXNoLmx0ZSA9IGx0ZTtcbiAgICBsb2Rhc2gubWF4ID0gbWF4O1xuICAgIGxvZGFzaC5tYXhCeSA9IG1heEJ5O1xuICAgIGxvZGFzaC5tZWFuID0gbWVhbjtcbiAgICBsb2Rhc2gubWVhbkJ5ID0gbWVhbkJ5O1xuICAgIGxvZGFzaC5taW4gPSBtaW47XG4gICAgbG9kYXNoLm1pbkJ5ID0gbWluQnk7XG4gICAgbG9kYXNoLnN0dWJBcnJheSA9IHN0dWJBcnJheTtcbiAgICBsb2Rhc2guc3R1YkZhbHNlID0gc3R1YkZhbHNlO1xuICAgIGxvZGFzaC5zdHViT2JqZWN0ID0gc3R1Yk9iamVjdDtcbiAgICBsb2Rhc2guc3R1YlN0cmluZyA9IHN0dWJTdHJpbmc7XG4gICAgbG9kYXNoLnN0dWJUcnVlID0gc3R1YlRydWU7XG4gICAgbG9kYXNoLm11bHRpcGx5ID0gbXVsdGlwbHk7XG4gICAgbG9kYXNoLm50aCA9IG50aDtcbiAgICBsb2Rhc2gubm9Db25mbGljdCA9IG5vQ29uZmxpY3Q7XG4gICAgbG9kYXNoLm5vb3AgPSBub29wO1xuICAgIGxvZGFzaC5ub3cgPSBub3c7XG4gICAgbG9kYXNoLnBhZCA9IHBhZDtcbiAgICBsb2Rhc2gucGFkRW5kID0gcGFkRW5kO1xuICAgIGxvZGFzaC5wYWRTdGFydCA9IHBhZFN0YXJ0O1xuICAgIGxvZGFzaC5wYXJzZUludCA9IHBhcnNlSW50O1xuICAgIGxvZGFzaC5yYW5kb20gPSByYW5kb207XG4gICAgbG9kYXNoLnJlZHVjZSA9IHJlZHVjZTtcbiAgICBsb2Rhc2gucmVkdWNlUmlnaHQgPSByZWR1Y2VSaWdodDtcbiAgICBsb2Rhc2gucmVwZWF0ID0gcmVwZWF0O1xuICAgIGxvZGFzaC5yZXBsYWNlID0gcmVwbGFjZTtcbiAgICBsb2Rhc2gucmVzdWx0ID0gcmVzdWx0O1xuICAgIGxvZGFzaC5yb3VuZCA9IHJvdW5kO1xuICAgIGxvZGFzaC5ydW5JbkNvbnRleHQgPSBydW5JbkNvbnRleHQ7XG4gICAgbG9kYXNoLnNhbXBsZSA9IHNhbXBsZTtcbiAgICBsb2Rhc2guc2l6ZSA9IHNpemU7XG4gICAgbG9kYXNoLnNuYWtlQ2FzZSA9IHNuYWtlQ2FzZTtcbiAgICBsb2Rhc2guc29tZSA9IHNvbWU7XG4gICAgbG9kYXNoLnNvcnRlZEluZGV4ID0gc29ydGVkSW5kZXg7XG4gICAgbG9kYXNoLnNvcnRlZEluZGV4QnkgPSBzb3J0ZWRJbmRleEJ5O1xuICAgIGxvZGFzaC5zb3J0ZWRJbmRleE9mID0gc29ydGVkSW5kZXhPZjtcbiAgICBsb2Rhc2guc29ydGVkTGFzdEluZGV4ID0gc29ydGVkTGFzdEluZGV4O1xuICAgIGxvZGFzaC5zb3J0ZWRMYXN0SW5kZXhCeSA9IHNvcnRlZExhc3RJbmRleEJ5O1xuICAgIGxvZGFzaC5zb3J0ZWRMYXN0SW5kZXhPZiA9IHNvcnRlZExhc3RJbmRleE9mO1xuICAgIGxvZGFzaC5zdGFydENhc2UgPSBzdGFydENhc2U7XG4gICAgbG9kYXNoLnN0YXJ0c1dpdGggPSBzdGFydHNXaXRoO1xuICAgIGxvZGFzaC5zdWJ0cmFjdCA9IHN1YnRyYWN0O1xuICAgIGxvZGFzaC5zdW0gPSBzdW07XG4gICAgbG9kYXNoLnN1bUJ5ID0gc3VtQnk7XG4gICAgbG9kYXNoLnRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgbG9kYXNoLnRpbWVzID0gdGltZXM7XG4gICAgbG9kYXNoLnRvRmluaXRlID0gdG9GaW5pdGU7XG4gICAgbG9kYXNoLnRvSW50ZWdlciA9IHRvSW50ZWdlcjtcbiAgICBsb2Rhc2gudG9MZW5ndGggPSB0b0xlbmd0aDtcbiAgICBsb2Rhc2gudG9Mb3dlciA9IHRvTG93ZXI7XG4gICAgbG9kYXNoLnRvTnVtYmVyID0gdG9OdW1iZXI7XG4gICAgbG9kYXNoLnRvU2FmZUludGVnZXIgPSB0b1NhZmVJbnRlZ2VyO1xuICAgIGxvZGFzaC50b1N0cmluZyA9IHRvU3RyaW5nO1xuICAgIGxvZGFzaC50b1VwcGVyID0gdG9VcHBlcjtcbiAgICBsb2Rhc2gudHJpbSA9IHRyaW07XG4gICAgbG9kYXNoLnRyaW1FbmQgPSB0cmltRW5kO1xuICAgIGxvZGFzaC50cmltU3RhcnQgPSB0cmltU3RhcnQ7XG4gICAgbG9kYXNoLnRydW5jYXRlID0gdHJ1bmNhdGU7XG4gICAgbG9kYXNoLnVuZXNjYXBlID0gdW5lc2NhcGU7XG4gICAgbG9kYXNoLnVuaXF1ZUlkID0gdW5pcXVlSWQ7XG4gICAgbG9kYXNoLnVwcGVyQ2FzZSA9IHVwcGVyQ2FzZTtcbiAgICBsb2Rhc2gudXBwZXJGaXJzdCA9IHVwcGVyRmlyc3Q7XG5cbiAgICAvLyBBZGQgYWxpYXNlcy5cbiAgICBsb2Rhc2guZWFjaCA9IGZvckVhY2g7XG4gICAgbG9kYXNoLmVhY2hSaWdodCA9IGZvckVhY2hSaWdodDtcbiAgICBsb2Rhc2guZmlyc3QgPSBoZWFkO1xuXG4gICAgbWl4aW4obG9kYXNoLCAoZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgc291cmNlID0ge307XG4gICAgICBiYXNlRm9yT3duKGxvZGFzaCwgZnVuY3Rpb24oZnVuYywgbWV0aG9kTmFtZSkge1xuICAgICAgICBpZiAoIWhhc093blByb3BlcnR5LmNhbGwobG9kYXNoLnByb3RvdHlwZSwgbWV0aG9kTmFtZSkpIHtcbiAgICAgICAgICBzb3VyY2VbbWV0aG9kTmFtZV0gPSBmdW5jO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgfSgpKSwgeyAnY2hhaW4nOiBmYWxzZSB9KTtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIFRoZSBzZW1hbnRpYyB2ZXJzaW9uIG51bWJlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgbG9kYXNoLlZFUlNJT04gPSBWRVJTSU9OO1xuXG4gICAgLy8gQXNzaWduIGRlZmF1bHQgcGxhY2Vob2xkZXJzLlxuICAgIGFycmF5RWFjaChbJ2JpbmQnLCAnYmluZEtleScsICdjdXJyeScsICdjdXJyeVJpZ2h0JywgJ3BhcnRpYWwnLCAncGFydGlhbFJpZ2h0J10sIGZ1bmN0aW9uKG1ldGhvZE5hbWUpIHtcbiAgICAgIGxvZGFzaFttZXRob2ROYW1lXS5wbGFjZWhvbGRlciA9IGxvZGFzaDtcbiAgICB9KTtcblxuICAgIC8vIEFkZCBgTGF6eVdyYXBwZXJgIG1ldGhvZHMgZm9yIGBfLmRyb3BgIGFuZCBgXy50YWtlYCB2YXJpYW50cy5cbiAgICBhcnJheUVhY2goWydkcm9wJywgJ3Rha2UnXSwgZnVuY3Rpb24obWV0aG9kTmFtZSwgaW5kZXgpIHtcbiAgICAgIExhenlXcmFwcGVyLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgbiA9IG4gPT09IHVuZGVmaW5lZCA/IDEgOiBuYXRpdmVNYXgodG9JbnRlZ2VyKG4pLCAwKTtcblxuICAgICAgICB2YXIgcmVzdWx0ID0gKHRoaXMuX19maWx0ZXJlZF9fICYmICFpbmRleClcbiAgICAgICAgICA/IG5ldyBMYXp5V3JhcHBlcih0aGlzKVxuICAgICAgICAgIDogdGhpcy5jbG9uZSgpO1xuXG4gICAgICAgIGlmIChyZXN1bHQuX19maWx0ZXJlZF9fKSB7XG4gICAgICAgICAgcmVzdWx0Ll9fdGFrZUNvdW50X18gPSBuYXRpdmVNaW4obiwgcmVzdWx0Ll9fdGFrZUNvdW50X18pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdC5fX3ZpZXdzX18ucHVzaCh7XG4gICAgICAgICAgICAnc2l6ZSc6IG5hdGl2ZU1pbihuLCBNQVhfQVJSQVlfTEVOR1RIKSxcbiAgICAgICAgICAgICd0eXBlJzogbWV0aG9kTmFtZSArIChyZXN1bHQuX19kaXJfXyA8IDAgPyAnUmlnaHQnIDogJycpXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG5cbiAgICAgIExhenlXcmFwcGVyLnByb3RvdHlwZVttZXRob2ROYW1lICsgJ1JpZ2h0J10gPSBmdW5jdGlvbihuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJldmVyc2UoKVttZXRob2ROYW1lXShuKS5yZXZlcnNlKCk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyB0aGF0IGFjY2VwdCBhbiBgaXRlcmF0ZWVgIHZhbHVlLlxuICAgIGFycmF5RWFjaChbJ2ZpbHRlcicsICdtYXAnLCAndGFrZVdoaWxlJ10sIGZ1bmN0aW9uKG1ldGhvZE5hbWUsIGluZGV4KSB7XG4gICAgICB2YXIgdHlwZSA9IGluZGV4ICsgMSxcbiAgICAgICAgICBpc0ZpbHRlciA9IHR5cGUgPT0gTEFaWV9GSUxURVJfRkxBRyB8fCB0eXBlID09IExBWllfV0hJTEVfRkxBRztcblxuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuY2xvbmUoKTtcbiAgICAgICAgcmVzdWx0Ll9faXRlcmF0ZWVzX18ucHVzaCh7XG4gICAgICAgICAgJ2l0ZXJhdGVlJzogZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpLFxuICAgICAgICAgICd0eXBlJzogdHlwZVxuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0Ll9fZmlsdGVyZWRfXyA9IHJlc3VsdC5fX2ZpbHRlcmVkX18gfHwgaXNGaWx0ZXI7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyBmb3IgYF8uaGVhZGAgYW5kIGBfLmxhc3RgLlxuICAgIGFycmF5RWFjaChbJ2hlYWQnLCAnbGFzdCddLCBmdW5jdGlvbihtZXRob2ROYW1lLCBpbmRleCkge1xuICAgICAgdmFyIHRha2VOYW1lID0gJ3Rha2UnICsgKGluZGV4ID8gJ1JpZ2h0JyA6ICcnKTtcblxuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzW3Rha2VOYW1lXSgxKS52YWx1ZSgpWzBdO1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIC8vIEFkZCBgTGF6eVdyYXBwZXJgIG1ldGhvZHMgZm9yIGBfLmluaXRpYWxgIGFuZCBgXy50YWlsYC5cbiAgICBhcnJheUVhY2goWydpbml0aWFsJywgJ3RhaWwnXSwgZnVuY3Rpb24obWV0aG9kTmFtZSwgaW5kZXgpIHtcbiAgICAgIHZhciBkcm9wTmFtZSA9ICdkcm9wJyArIChpbmRleCA/ICcnIDogJ1JpZ2h0Jyk7XG5cbiAgICAgIExhenlXcmFwcGVyLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fX2ZpbHRlcmVkX18gPyBuZXcgTGF6eVdyYXBwZXIodGhpcykgOiB0aGlzW2Ryb3BOYW1lXSgxKTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuY29tcGFjdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKGlkZW50aXR5KTtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLmZpbmQgPSBmdW5jdGlvbihwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlcihwcmVkaWNhdGUpLmhlYWQoKTtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLmZpbmRMYXN0ID0gZnVuY3Rpb24ocHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXZlcnNlKCkuZmluZChwcmVkaWNhdGUpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuaW52b2tlTWFwID0gYmFzZVJlc3QoZnVuY3Rpb24ocGF0aCwgYXJncykge1xuICAgICAgaWYgKHR5cGVvZiBwYXRoID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMYXp5V3JhcHBlcih0aGlzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gYmFzZUludm9rZSh2YWx1ZSwgcGF0aCwgYXJncyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5yZWplY3QgPSBmdW5jdGlvbihwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlcihuZWdhdGUoZ2V0SXRlcmF0ZWUocHJlZGljYXRlKSkpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gICAgICBzdGFydCA9IHRvSW50ZWdlcihzdGFydCk7XG5cbiAgICAgIHZhciByZXN1bHQgPSB0aGlzO1xuICAgICAgaWYgKHJlc3VsdC5fX2ZpbHRlcmVkX18gJiYgKHN0YXJ0ID4gMCB8fCBlbmQgPCAwKSkge1xuICAgICAgICByZXR1cm4gbmV3IExhenlXcmFwcGVyKHJlc3VsdCk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC50YWtlUmlnaHQoLXN0YXJ0KTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhcnQpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmRyb3Aoc3RhcnQpO1xuICAgICAgfVxuICAgICAgaWYgKGVuZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGVuZCA9IHRvSW50ZWdlcihlbmQpO1xuICAgICAgICByZXN1bHQgPSBlbmQgPCAwID8gcmVzdWx0LmRyb3BSaWdodCgtZW5kKSA6IHJlc3VsdC50YWtlKGVuZCAtIHN0YXJ0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS50YWtlUmlnaHRXaGlsZSA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucmV2ZXJzZSgpLnRha2VXaGlsZShwcmVkaWNhdGUpLnJldmVyc2UoKTtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRha2UoTUFYX0FSUkFZX0xFTkdUSCk7XG4gICAgfTtcblxuICAgIC8vIEFkZCBgTGF6eVdyYXBwZXJgIG1ldGhvZHMgdG8gYGxvZGFzaC5wcm90b3R5cGVgLlxuICAgIGJhc2VGb3JPd24oTGF6eVdyYXBwZXIucHJvdG90eXBlLCBmdW5jdGlvbihmdW5jLCBtZXRob2ROYW1lKSB7XG4gICAgICB2YXIgY2hlY2tJdGVyYXRlZSA9IC9eKD86ZmlsdGVyfGZpbmR8bWFwfHJlamVjdCl8V2hpbGUkLy50ZXN0KG1ldGhvZE5hbWUpLFxuICAgICAgICAgIGlzVGFrZXIgPSAvXig/OmhlYWR8bGFzdCkkLy50ZXN0KG1ldGhvZE5hbWUpLFxuICAgICAgICAgIGxvZGFzaEZ1bmMgPSBsb2Rhc2hbaXNUYWtlciA/ICgndGFrZScgKyAobWV0aG9kTmFtZSA9PSAnbGFzdCcgPyAnUmlnaHQnIDogJycpKSA6IG1ldGhvZE5hbWVdLFxuICAgICAgICAgIHJldFVud3JhcHBlZCA9IGlzVGFrZXIgfHwgL15maW5kLy50ZXN0KG1ldGhvZE5hbWUpO1xuXG4gICAgICBpZiAoIWxvZGFzaEZ1bmMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbG9kYXNoLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLl9fd3JhcHBlZF9fLFxuICAgICAgICAgICAgYXJncyA9IGlzVGFrZXIgPyBbMV0gOiBhcmd1bWVudHMsXG4gICAgICAgICAgICBpc0xhenkgPSB2YWx1ZSBpbnN0YW5jZW9mIExhenlXcmFwcGVyLFxuICAgICAgICAgICAgaXRlcmF0ZWUgPSBhcmdzWzBdLFxuICAgICAgICAgICAgdXNlTGF6eSA9IGlzTGF6eSB8fCBpc0FycmF5KHZhbHVlKTtcblxuICAgICAgICB2YXIgaW50ZXJjZXB0b3IgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgIHZhciByZXN1bHQgPSBsb2Rhc2hGdW5jLmFwcGx5KGxvZGFzaCwgYXJyYXlQdXNoKFt2YWx1ZV0sIGFyZ3MpKTtcbiAgICAgICAgICByZXR1cm4gKGlzVGFrZXIgJiYgY2hhaW5BbGwpID8gcmVzdWx0WzBdIDogcmVzdWx0O1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh1c2VMYXp5ICYmIGNoZWNrSXRlcmF0ZWUgJiYgdHlwZW9mIGl0ZXJhdGVlID09ICdmdW5jdGlvbicgJiYgaXRlcmF0ZWUubGVuZ3RoICE9IDEpIHtcbiAgICAgICAgICAvLyBBdm9pZCBsYXp5IHVzZSBpZiB0aGUgaXRlcmF0ZWUgaGFzIGEgXCJsZW5ndGhcIiB2YWx1ZSBvdGhlciB0aGFuIGAxYC5cbiAgICAgICAgICBpc0xhenkgPSB1c2VMYXp5ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNoYWluQWxsID0gdGhpcy5fX2NoYWluX18sXG4gICAgICAgICAgICBpc0h5YnJpZCA9ICEhdGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgsXG4gICAgICAgICAgICBpc1Vud3JhcHBlZCA9IHJldFVud3JhcHBlZCAmJiAhY2hhaW5BbGwsXG4gICAgICAgICAgICBvbmx5TGF6eSA9IGlzTGF6eSAmJiAhaXNIeWJyaWQ7XG5cbiAgICAgICAgaWYgKCFyZXRVbndyYXBwZWQgJiYgdXNlTGF6eSkge1xuICAgICAgICAgIHZhbHVlID0gb25seUxhenkgPyB2YWx1ZSA6IG5ldyBMYXp5V3JhcHBlcih0aGlzKTtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gZnVuYy5hcHBseSh2YWx1ZSwgYXJncyk7XG4gICAgICAgICAgcmVzdWx0Ll9fYWN0aW9uc19fLnB1c2goeyAnZnVuYyc6IHRocnUsICdhcmdzJzogW2ludGVyY2VwdG9yXSwgJ3RoaXNBcmcnOiB1bmRlZmluZWQgfSk7XG4gICAgICAgICAgcmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHJlc3VsdCwgY2hhaW5BbGwpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1Vud3JhcHBlZCAmJiBvbmx5TGF6eSkge1xuICAgICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IHRoaXMudGhydShpbnRlcmNlcHRvcik7XG4gICAgICAgIHJldHVybiBpc1Vud3JhcHBlZCA/IChpc1Rha2VyID8gcmVzdWx0LnZhbHVlKClbMF0gOiByZXN1bHQudmFsdWUoKSkgOiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBBcnJheWAgbWV0aG9kcyB0byBgbG9kYXNoLnByb3RvdHlwZWAuXG4gICAgYXJyYXlFYWNoKFsncG9wJywgJ3B1c2gnLCAnc2hpZnQnLCAnc29ydCcsICdzcGxpY2UnLCAndW5zaGlmdCddLCBmdW5jdGlvbihtZXRob2ROYW1lKSB7XG4gICAgICB2YXIgZnVuYyA9IGFycmF5UHJvdG9bbWV0aG9kTmFtZV0sXG4gICAgICAgICAgY2hhaW5OYW1lID0gL14oPzpwdXNofHNvcnR8dW5zaGlmdCkkLy50ZXN0KG1ldGhvZE5hbWUpID8gJ3RhcCcgOiAndGhydScsXG4gICAgICAgICAgcmV0VW53cmFwcGVkID0gL14oPzpwb3B8c2hpZnQpJC8udGVzdChtZXRob2ROYW1lKTtcblxuICAgICAgbG9kYXNoLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgaWYgKHJldFVud3JhcHBlZCAmJiAhdGhpcy5fX2NoYWluX18pIHtcbiAgICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlKCk7XG4gICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkoaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdLCBhcmdzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpc1tjaGFpbk5hbWVdKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkoaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdLCBhcmdzKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gTWFwIG1pbmlmaWVkIG1ldGhvZCBuYW1lcyB0byB0aGVpciByZWFsIG5hbWVzLlxuICAgIGJhc2VGb3JPd24oTGF6eVdyYXBwZXIucHJvdG90eXBlLCBmdW5jdGlvbihmdW5jLCBtZXRob2ROYW1lKSB7XG4gICAgICB2YXIgbG9kYXNoRnVuYyA9IGxvZGFzaFttZXRob2ROYW1lXTtcbiAgICAgIGlmIChsb2Rhc2hGdW5jKSB7XG4gICAgICAgIHZhciBrZXkgPSBsb2Rhc2hGdW5jLm5hbWUgKyAnJztcbiAgICAgICAgaWYgKCFoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlYWxOYW1lcywga2V5KSkge1xuICAgICAgICAgIHJlYWxOYW1lc1trZXldID0gW107XG4gICAgICAgIH1cbiAgICAgICAgcmVhbE5hbWVzW2tleV0ucHVzaCh7ICduYW1lJzogbWV0aG9kTmFtZSwgJ2Z1bmMnOiBsb2Rhc2hGdW5jIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmVhbE5hbWVzW2NyZWF0ZUh5YnJpZCh1bmRlZmluZWQsIFdSQVBfQklORF9LRVlfRkxBRykubmFtZV0gPSBbe1xuICAgICAgJ25hbWUnOiAnd3JhcHBlcicsXG4gICAgICAnZnVuYyc6IHVuZGVmaW5lZFxuICAgIH1dO1xuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYExhenlXcmFwcGVyYC5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuY2xvbmUgPSBsYXp5Q2xvbmU7XG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLnJldmVyc2UgPSBsYXp5UmV2ZXJzZTtcbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUudmFsdWUgPSBsYXp5VmFsdWU7XG5cbiAgICAvLyBBZGQgY2hhaW4gc2VxdWVuY2UgbWV0aG9kcyB0byB0aGUgYGxvZGFzaGAgd3JhcHBlci5cbiAgICBsb2Rhc2gucHJvdG90eXBlLmF0ID0gd3JhcHBlckF0O1xuICAgIGxvZGFzaC5wcm90b3R5cGUuY2hhaW4gPSB3cmFwcGVyQ2hhaW47XG4gICAgbG9kYXNoLnByb3RvdHlwZS5jb21taXQgPSB3cmFwcGVyQ29tbWl0O1xuICAgIGxvZGFzaC5wcm90b3R5cGUubmV4dCA9IHdyYXBwZXJOZXh0O1xuICAgIGxvZGFzaC5wcm90b3R5cGUucGxhbnQgPSB3cmFwcGVyUGxhbnQ7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5yZXZlcnNlID0gd3JhcHBlclJldmVyc2U7XG4gICAgbG9kYXNoLnByb3RvdHlwZS50b0pTT04gPSBsb2Rhc2gucHJvdG90eXBlLnZhbHVlT2YgPSBsb2Rhc2gucHJvdG90eXBlLnZhbHVlID0gd3JhcHBlclZhbHVlO1xuXG4gICAgLy8gQWRkIGxhenkgYWxpYXNlcy5cbiAgICBsb2Rhc2gucHJvdG90eXBlLmZpcnN0ID0gbG9kYXNoLnByb3RvdHlwZS5oZWFkO1xuXG4gICAgaWYgKHN5bUl0ZXJhdG9yKSB7XG4gICAgICBsb2Rhc2gucHJvdG90eXBlW3N5bUl0ZXJhdG9yXSA9IHdyYXBwZXJUb0l0ZXJhdG9yO1xuICAgIH1cbiAgICByZXR1cm4gbG9kYXNoO1xuICB9KTtcblxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAvLyBFeHBvcnQgbG9kYXNoLlxuICB2YXIgXyA9IHJ1bkluQ29udGV4dCgpO1xuXG4gIC8vIFNvbWUgQU1EIGJ1aWxkIG9wdGltaXplcnMsIGxpa2Ugci5qcywgY2hlY2sgZm9yIGNvbmRpdGlvbiBwYXR0ZXJucyBsaWtlOlxuICBpZiAodHlwZW9mIGRlZmluZSA9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09ICdvYmplY3QnICYmIGRlZmluZS5hbWQpIHtcbiAgICAvLyBFeHBvc2UgTG9kYXNoIG9uIHRoZSBnbG9iYWwgb2JqZWN0IHRvIHByZXZlbnQgZXJyb3JzIHdoZW4gTG9kYXNoIGlzXG4gICAgLy8gbG9hZGVkIGJ5IGEgc2NyaXB0IHRhZyBpbiB0aGUgcHJlc2VuY2Ugb2YgYW4gQU1EIGxvYWRlci5cbiAgICAvLyBTZWUgaHR0cDovL3JlcXVpcmVqcy5vcmcvZG9jcy9lcnJvcnMuaHRtbCNtaXNtYXRjaCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgIC8vIFVzZSBgXy5ub0NvbmZsaWN0YCB0byByZW1vdmUgTG9kYXNoIGZyb20gdGhlIGdsb2JhbCBvYmplY3QuXG4gICAgcm9vdC5fID0gXztcblxuICAgIC8vIERlZmluZSBhcyBhbiBhbm9ueW1vdXMgbW9kdWxlIHNvLCB0aHJvdWdoIHBhdGggbWFwcGluZywgaXQgY2FuIGJlXG4gICAgLy8gcmVmZXJlbmNlZCBhcyB0aGUgXCJ1bmRlcnNjb3JlXCIgbW9kdWxlLlxuICAgIGRlZmluZShmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBfO1xuICAgIH0pO1xuICB9XG4gIC8vIENoZWNrIGZvciBgZXhwb3J0c2AgYWZ0ZXIgYGRlZmluZWAgaW4gY2FzZSBhIGJ1aWxkIG9wdGltaXplciBhZGRzIGl0LlxuICBlbHNlIGlmIChmcmVlTW9kdWxlKSB7XG4gICAgLy8gRXhwb3J0IGZvciBOb2RlLmpzLlxuICAgIChmcmVlTW9kdWxlLmV4cG9ydHMgPSBfKS5fID0gXztcbiAgICAvLyBFeHBvcnQgZm9yIENvbW1vbkpTIHN1cHBvcnQuXG4gICAgZnJlZUV4cG9ydHMuXyA9IF87XG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gRXhwb3J0IHRvIHRoZSBnbG9iYWwgb2JqZWN0LlxuICAgIHJvb3QuXyA9IF87XG4gIH1cbn0uY2FsbCh0aGlzKSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVmFsdWUgPSBleHBvcnRzLkFyaXR5ID0gZXhwb3J0cy5GbG9hdE9yTWlsbGlzZWNvbmRzID0gdm9pZCAwO1xuY29uc3QgZGVjaW1hbF9qc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJkZWNpbWFsLmpzXCIpKTtcbmNvbnN0IGxvZGFzaF8xID0gcmVxdWlyZShcImxvZGFzaFwiKTtcbmNvbnN0IGRhdGV0aW1lUmUgPSBuZXcgUmVnRXhwKCdbMS05XVswLTldezN9LVswMV1bMC05XS1bMC0zXVswLTldW1QgXVswLTJdWzAtOV06WzAtNV1bMC05XScpO1xuY29uc3QgZHVyYXRpb25SZSA9IG5ldyBSZWdFeHAoJ14tP1swLTldKzpbMC01XVswLTldJyk7XG5jb25zdCBGbG9hdE9yTWlsbGlzZWNvbmRzID0gKHZhbHVlKSA9PiB7XG4gICAgY29uc3QgdiA9IHZhbHVlLnRyaW0oKTtcbiAgICBpZiAodiA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBkZWNpbWFsX2pzXzEuZGVmYXVsdCgwKTtcbiAgICB9XG4gICAgaWYgKGRhdGV0aW1lUmUudGVzdCh2KSkge1xuICAgICAgICByZXR1cm4gbmV3IGRlY2ltYWxfanNfMS5kZWZhdWx0KG5ldyBEYXRlKHYpLnZhbHVlT2YoKSk7XG4gICAgfVxuICAgIGlmIChkdXJhdGlvblJlLnRlc3QodikpIHtcbiAgICAgICAgY29uc3QgbmVnID0gdi5jaGFyQXQoMCkgPT0gJy0nO1xuICAgICAgICBjb25zdCB3ID0gdi5zbGljZShuZWcgPyAxIDogMCk7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBwYXJzZUludCh3LnNsaWNlKDAsIC0zKSkgKiA2MCArIHBhcnNlSW50KHcuc2xpY2UoLTIpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBkZWNpbWFsX2pzXzEuZGVmYXVsdCgobmVnID8gLTEgOiAxKSAqIG1pbnV0ZXMgKiA2MDAwMCk7XG4gICAgfVxuICAgIGNvbnN0IGRlY2ltYWxWYWx1ZSA9IG5ldyBkZWNpbWFsX2pzXzEuZGVmYXVsdCh2KTtcbiAgICByZXR1cm4gZGVjaW1hbFZhbHVlLmlzTmFOKCkgPyBuZXcgZGVjaW1hbF9qc18xLmRlZmF1bHQoMCkgOiBkZWNpbWFsVmFsdWU7XG59O1xuZXhwb3J0cy5GbG9hdE9yTWlsbGlzZWNvbmRzID0gRmxvYXRPck1pbGxpc2Vjb25kcztcbmNsYXNzIEFyaXR5IHtcbiAgICBjb25zdHJ1Y3Rvcihyb3dzLCBjb2x1bW5zKSB7XG4gICAgICAgIHRoaXMuaXNSb3cgPSAoKSA9PiB0aGlzLnJvd3MgPiAxICYmIHRoaXMuY29scyA9PT0gMTtcbiAgICAgICAgdGhpcy5pc0NvbHVtbiA9ICgpID0+IHRoaXMucm93cyA9PT0gMSAmJiB0aGlzLmNvbHMgPiAxO1xuICAgICAgICB0aGlzLmlzQ2VsbCA9ICgpID0+IHRoaXMucm93cyA9PT0gMSAmJiB0aGlzLmNvbHMgPT09IDE7XG4gICAgICAgIHRoaXMucm93cyA9IHJvd3M7XG4gICAgICAgIHRoaXMuY29scyA9IGNvbHVtbnM7XG4gICAgfVxufVxuZXhwb3J0cy5Bcml0eSA9IEFyaXR5O1xuY2xhc3MgVmFsdWUge1xuICAgIGNvbnN0cnVjdG9yKHZhbCkge1xuICAgICAgICB0aGlzLmdldCA9IChyb3csIGNvbHVtbikgPT4gdGhpcy52YWxbcm93XVtjb2x1bW5dO1xuICAgICAgICB0aGlzLmdldEFzTnVtYmVyID0gKHJvdywgY29sdW1uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0KHJvdywgY29sdW1uKTtcbiAgICAgICAgICAgIHJldHVybiAoMCwgZXhwb3J0cy5GbG9hdE9yTWlsbGlzZWNvbmRzKSh2YWx1ZSk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBnZXRBcml0eSByZXR1cm5zIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBjb250YWluZWQgdmFsdWUsIGluIHJvd3MgYW5kIGNvbHVtbnNcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZ2V0QXJpdHkgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtYXhDb2xzID0gdGhpcy52YWwucmVkdWNlKChtYXgsIGN1cnJlbnRSb3cpID0+IE1hdGgubWF4KG1heCwgY3VycmVudFJvdy5sZW5ndGgpLCAwKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQXJpdHkodGhpcy52YWwubGVuZ3RoLCBtYXhDb2xzKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy50b1N0cmluZyA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldEFyaXR5KCkuaXNDZWxsKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXQoMCwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYFskeygwLCBsb2Rhc2hfMS5mbGF0dGVuKSh0aGlzLnZhbClcbiAgICAgICAgICAgICAgICAubWFwKCh2YWwpID0+IHZhbC50cmltKCkpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigodmFsKSA9PiB2YWwgIT09ICcnKVxuICAgICAgICAgICAgICAgIC5qb2luKCcsICcpfV1gO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnZhbCA9IHZhbDtcbiAgICB9XG59XG5leHBvcnRzLlZhbHVlID0gVmFsdWU7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQWxnZWJyYWljT3BlcmF0aW9uID0gdm9pZCAwO1xuY29uc3QgbmV2ZXJ0aHJvd18xID0gcmVxdWlyZShcIi4uL25ldmVydGhyb3cvbmV2ZXJ0aHJvd1wiKTtcbmNvbnN0IGFzdF91dGlsc18xID0gcmVxdWlyZShcIi4vYXN0X3V0aWxzXCIpO1xuY29uc3QgY2FsY18xID0gcmVxdWlyZShcIi4vY2FsY1wiKTtcbmNvbnN0IHJlc3VsdHNfMSA9IHJlcXVpcmUoXCIuL3Jlc3VsdHNcIik7XG5jb25zdCBsb2Rhc2hfMSA9IHJlcXVpcmUoXCJsb2Rhc2hcIik7XG5jbGFzcyBBbGdlYnJhaWNPcGVyYXRpb24ge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUpIHtcbiAgICAgICAgdGhpcy5nZXRWYWx1ZSA9ICh0YWJsZSwgY2VsbCkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLm9wZXJhdG9yKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnKyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZCh0YWJsZSwgY2VsbCk7XG4gICAgICAgICAgICAgICAgY2FzZSAnLSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN1YnRyYWN0KHRhYmxlLCBjZWxsKTtcbiAgICAgICAgICAgICAgICBjYXNlICcqJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubXVsdGlwbHkodGFibGUsIGNlbGwpO1xuICAgICAgICAgICAgICAgIGNhc2UgJy8nOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kaXZpZGUodGFibGUsIGNlbGwpO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoMCwgbmV2ZXJ0aHJvd18xLmVycikoRXJyb3IoJ0ludmFsaWQgYWxnYnJhaWMgb3BlcmF0b3I6ICcgKyB0aGlzLm9wZXJhdG9yKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB3aXRoQ2VsbEFuZFJhbmdlIGFpZHMgaW4gcGVyZm9ybWluZyBhIG51bWVyaWMgb3BlcmF0aW9uIG9uIGNlbGxzIGluIGFcbiAgICAgICAgICogdGFibGUgd2hlcmUgYXQgbGVhc3Qgb25lIG9mIHRoZSB0d28gb3BlcmFuZHMgaXMgYSBzaW5nbGUgY2VsbC4gT3B0aW9uYWxseSxcbiAgICAgICAgICogdGhlIHR3byBzaWRlcyBvZiB0aGUgb3BlcmF0aW9uIGNhbiBiZSBzd2FwcGVkLCBzbyB0aGUgc2luZ2xlIGNlbGwgaXNcbiAgICAgICAgICogYWx3YXlzIG9uIHRoZSByaWdodC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMud2l0aENlbGxBbmRSYW5nZSA9ICh0YWJsZSwgY2VsbCwgbmFtZSwgY2FuSGF2ZVJpZ2h0UmFuZ2UsIGZuKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsZWZ0VmFsdWUgPSB0aGlzLmxlZnRTb3VyY2UuZ2V0VmFsdWUodGFibGUsIGNlbGwpO1xuICAgICAgICAgICAgaWYgKGxlZnRWYWx1ZS5pc0VycigpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgwLCBuZXZlcnRocm93XzEuZXJyKShsZWZ0VmFsdWUuZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcmlnaHRWYWx1ZSA9IHRoaXMucmlnaHRTb3VyY2UuZ2V0VmFsdWUodGFibGUsIGNlbGwpO1xuICAgICAgICAgICAgaWYgKHJpZ2h0VmFsdWUuaXNFcnIoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoMCwgbmV2ZXJ0aHJvd18xLmVycikocmlnaHRWYWx1ZS5lcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBsZWZ0QXJpdHkgPSBsZWZ0VmFsdWUudmFsdWUuZ2V0QXJpdHkoKTtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0QXJpdHkgPSByaWdodFZhbHVlLnZhbHVlLmdldEFyaXR5KCk7XG4gICAgICAgICAgICBpZiAoIXJpZ2h0QXJpdHkuaXNDZWxsKCkgJiYgIWxlZnRBcml0eS5pc0NlbGwoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoMCwgbmV2ZXJ0aHJvd18xLmVycikoRXJyb3IoYEF0IGxlYXN0IG9uZSBvcGVyYW5kIGluIGFsZ2VicmFpYyBcIiR7bmFtZX1cIiBtdXN0IGJlIGEgc2luZ2xlIGNlbGwuYCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFyaWdodEFyaXR5LmlzQ2VsbCgpICYmICFjYW5IYXZlUmlnaHRSYW5nZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoMCwgbmV2ZXJ0aHJvd18xLmVycikoRXJyb3IoYFJpZ2h0IG9wZXJhbmQgaW4gYWxnZWJyYWljIFwiJHtuYW1lfVwiIG11c3QgYmUgYSBzaW5nbGUgY2VsbC5gKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmlnaHRBcml0eS5pc0NlbGwoKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0Q2VsbFZhbHVlID0gcmlnaHRWYWx1ZS52YWx1ZS5nZXRBc051bWJlcigwLCAwKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSAoMCwgbG9kYXNoXzEubWFwKShsZWZ0VmFsdWUudmFsdWUudmFsLCAoY3VycmVudFJvdykgPT4gKDAsIGxvZGFzaF8xLm1hcCkoY3VycmVudFJvdywgKGN1cnJlbnRDZWxsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlZnRDZWxsVmFsdWUgPSAoMCwgcmVzdWx0c18xLkZsb2F0T3JNaWxsaXNlY29uZHMpKGN1cnJlbnRDZWxsKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZuKGxlZnRDZWxsVmFsdWUsIHJpZ2h0Q2VsbFZhbHVlKS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKDAsIG5ldmVydGhyb3dfMS5vaykobmV3IHJlc3VsdHNfMS5WYWx1ZShyZXN1bHQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGxlZnRDZWxsVmFsdWUgPSBsZWZ0VmFsdWUudmFsdWUuZ2V0QXNOdW1iZXIoMCwgMCk7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSAoMCwgbG9kYXNoXzEubWFwKShyaWdodFZhbHVlLnZhbHVlLnZhbCwgKGN1cnJlbnRSb3cpID0+ICgwLCBsb2Rhc2hfMS5tYXApKGN1cnJlbnRSb3csIChjdXJyZW50Q2VsbCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0Q2VsbFZhbHVlID0gKDAsIHJlc3VsdHNfMS5GbG9hdE9yTWlsbGlzZWNvbmRzKShjdXJyZW50Q2VsbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZuKGxlZnRDZWxsVmFsdWUsIHJpZ2h0Q2VsbFZhbHVlKS50b1N0cmluZygpO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgcmV0dXJuICgwLCBuZXZlcnRocm93XzEub2spKG5ldyByZXN1bHRzXzEuVmFsdWUocmVzdWx0KSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuYWRkID0gKHRhYmxlLCBjZWxsKSA9PiB0aGlzLndpdGhDZWxsQW5kUmFuZ2UodGFibGUsIGNlbGwsICdhZGQnLCB0cnVlLCAobGVmdCwgcmlnaHQpID0+IGxlZnQucGx1cyhyaWdodCkpO1xuICAgICAgICB0aGlzLnN1YnRyYWN0ID0gKHRhYmxlLCBjZWxsKSA9PiB0aGlzLndpdGhDZWxsQW5kUmFuZ2UodGFibGUsIGNlbGwsICdzdWJ0cmFjdCcsIHRydWUsIChsZWZ0LCByaWdodCkgPT4gbGVmdC5taW51cyhyaWdodCkpO1xuICAgICAgICB0aGlzLm11bHRpcGx5ID0gKHRhYmxlLCBjZWxsKSA9PiB0aGlzLndpdGhDZWxsQW5kUmFuZ2UodGFibGUsIGNlbGwsICdtdWx0aXBseScsIHRydWUsIChsZWZ0LCByaWdodCkgPT4gbGVmdC50aW1lcyhyaWdodCkpO1xuICAgICAgICB0aGlzLmRpdmlkZSA9ICh0YWJsZSwgY2VsbCkgPT4gdGhpcy53aXRoQ2VsbEFuZFJhbmdlKHRhYmxlLCBjZWxsLCAnZGl2aWRlJywgZmFsc2UsIChsZWZ0LCByaWdodCkgPT4gbGVmdC5kaXZpZGVkQnkocmlnaHQpKTtcbiAgICAgICAgY29uc3QgdHlwZUVyciA9ICgwLCBhc3RfdXRpbHNfMS5jaGVja1R5cGUpKGFzdCwgJ2FsZ2VicmFpY19vcGVyYXRpb24nKTtcbiAgICAgICAgaWYgKHR5cGVFcnIpIHtcbiAgICAgICAgICAgIHRocm93IHR5cGVFcnI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGVuZ3RoRXJyb3IgPSAoMCwgYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aCkoYXN0LCAzKTtcbiAgICAgICAgaWYgKGxlbmd0aEVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBsZW5ndGhFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjaGlsZFR5cGVFcnIgPSAoMCwgYXN0X3V0aWxzXzEuY2hlY2tUeXBlKShhc3QuY2hpbGRyZW5bMV0sICdhbGdlYnJhaWNfb3BlcmF0b3InKTtcbiAgICAgICAgaWYgKGNoaWxkVHlwZUVycikge1xuICAgICAgICAgICAgdGhyb3cgY2hpbGRUeXBlRXJyO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlcmF0b3IgPSBhc3QuY2hpbGRyZW5bMV0udGV4dDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMubGVmdFNvdXJjZSA9IG5ldyBjYWxjXzEuU291cmNlKGFzdC5jaGlsZHJlblswXSwgdGFibGUpO1xuICAgICAgICAgICAgdGhpcy5yaWdodFNvdXJjZSA9IG5ldyBjYWxjXzEuU291cmNlKGFzdC5jaGlsZHJlblsyXSwgdGFibGUpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgLy8gU3RpbGwgaW4gYSBjb25zdHJ1Y3Rvciwgc28gbm90aGluZyB3ZSBjYW4gZG8gYnV0IHRocm93IGFnYWluXG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydHMuQWxnZWJyYWljT3BlcmF0aW9uID0gQWxnZWJyYWljT3BlcmF0aW9uO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkNvbmRpdGlvbmFsRnVuY3Rpb25DYWxsID0gdm9pZCAwO1xuY29uc3QgbmV2ZXJ0aHJvd18xID0gcmVxdWlyZShcIi4uL25ldmVydGhyb3cvbmV2ZXJ0aHJvd1wiKTtcbmNvbnN0IGFzdF91dGlsc18xID0gcmVxdWlyZShcIi4vYXN0X3V0aWxzXCIpO1xuY29uc3QgY2FsY18xID0gcmVxdWlyZShcIi4vY2FsY1wiKTtcbmNsYXNzIENvbmRpdGlvbmFsRnVuY3Rpb25DYWxsIHtcbiAgICBjb25zdHJ1Y3Rvcihhc3QsIHRhYmxlKSB7XG4gICAgICAgIHRoaXMuZ2V0VmFsdWUgPSAodGFibGUsIGNlbGwpID0+IHRoaXMucHJlZGljYXRlXG4gICAgICAgICAgICAuZXZhbCh0YWJsZSwgY2VsbClcbiAgICAgICAgICAgIC5hbmRUaGVuKChwcmVkaWNhdGVSZXN1bHQpID0+IHByZWRpY2F0ZVJlc3VsdFxuICAgICAgICAgICAgPyB0aGlzLmxlZnRTb3VyY2UuZ2V0VmFsdWUodGFibGUsIGNlbGwpXG4gICAgICAgICAgICA6IHRoaXMucmlnaHRTb3VyY2UuZ2V0VmFsdWUodGFibGUsIGNlbGwpKTtcbiAgICAgICAgY29uc3QgdHlwZUVycm9yID0gKDAsIGFzdF91dGlsc18xLmNoZWNrVHlwZSkoYXN0LCAnY29uZGl0aW9uYWxfZnVuY3Rpb25fY2FsbCcpO1xuICAgICAgICBpZiAodHlwZUVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGVuZ3RoRXJyb3IgPSAoMCwgYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aCkoYXN0LCAzKTtcbiAgICAgICAgaWYgKGxlbmd0aEVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBsZW5ndGhFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5wcmVkaWNhdGUgPSBuZXcgUHJlZGljYXRlKGFzdC5jaGlsZHJlblswXSwgdGFibGUpO1xuICAgICAgICAgICAgdGhpcy5sZWZ0U291cmNlID0gbmV3IGNhbGNfMS5Tb3VyY2UoYXN0LmNoaWxkcmVuWzFdLCB0YWJsZSk7XG4gICAgICAgICAgICB0aGlzLnJpZ2h0U291cmNlID0gbmV3IGNhbGNfMS5Tb3VyY2UoYXN0LmNoaWxkcmVuWzJdLCB0YWJsZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAvLyBTdGlsbCBpbiBhIGNvbnN0cnVjdG9yLCBzbyBub3RoaW5nIHdlIGNhbiBkbyBidXQgdGhyb3cgYWdhaW5cbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5Db25kaXRpb25hbEZ1bmN0aW9uQ2FsbCA9IENvbmRpdGlvbmFsRnVuY3Rpb25DYWxsO1xuY2xhc3MgUHJlZGljYXRlIHtcbiAgICBjb25zdHJ1Y3Rvcihhc3QsIHRhYmxlKSB7XG4gICAgICAgIHRoaXMuZXZhbCA9ICh0YWJsZSwgY2VsbCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGVmdERhdGEgPSB0aGlzLmxlZnRTb3VyY2UuZ2V0VmFsdWUodGFibGUsIGNlbGwpO1xuICAgICAgICAgICAgaWYgKGxlZnREYXRhLmlzRXJyKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKDAsIG5ldmVydGhyb3dfMS5lcnIpKGxlZnREYXRhLmVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0RGF0YSA9IHRoaXMucmlnaHRTb3VyY2UuZ2V0VmFsdWUodGFibGUsIGNlbGwpO1xuICAgICAgICAgICAgaWYgKHJpZ2h0RGF0YS5pc0VycigpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgwLCBuZXZlcnRocm93XzEuZXJyKShyaWdodERhdGEuZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbGVmdEFyaXR5ID0gbGVmdERhdGEudmFsdWUuZ2V0QXJpdHkoKTtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0QXJpdHkgPSByaWdodERhdGEudmFsdWUuZ2V0QXJpdHkoKTtcbiAgICAgICAgICAgIGlmICghbGVmdEFyaXR5LmlzQ2VsbCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgwLCBuZXZlcnRocm93XzEuZXJyKShFcnJvcignQ2FuIG9ubHkgdXNlIGNvbXBhcmlzb24gb3BlcmF0b3Igb24gYSBzaW5nbGUgY2VsbC4gTGVmdCBzaWRlIGlzIG5vdCBhIGNlbGwuJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFyaWdodEFyaXR5LmlzQ2VsbCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgwLCBuZXZlcnRocm93XzEuZXJyKShFcnJvcignQ2FuIG9ubHkgdXNlIGNvbXBhcmlzb24gb3BlcmF0b3Igb24gYSBzaW5nbGUgY2VsbC4gUmlnaHQgc2lkZSBpcyBub3QgYSBjZWxsLicpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGxlZnRWYWwgPSBsZWZ0RGF0YS52YWx1ZS5nZXRBc051bWJlcigwLCAwKTtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0VmFsID0gcmlnaHREYXRhLnZhbHVlLmdldEFzTnVtYmVyKDAsIDApO1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLm9wZXJhdG9yKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnPic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoMCwgbmV2ZXJ0aHJvd18xLm9rKShsZWZ0VmFsLmdyZWF0ZXJUaGFuKHJpZ2h0VmFsKSk7XG4gICAgICAgICAgICAgICAgY2FzZSAnPj0nOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDAsIG5ldmVydGhyb3dfMS5vaykobGVmdFZhbC5ncmVhdGVyVGhhbk9yRXF1YWxUbyhyaWdodFZhbCkpO1xuICAgICAgICAgICAgICAgIGNhc2UgJzwnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDAsIG5ldmVydGhyb3dfMS5vaykobGVmdFZhbC5sZXNzVGhhbihyaWdodFZhbCkpO1xuICAgICAgICAgICAgICAgIGNhc2UgJzw9JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwLCBuZXZlcnRocm93XzEub2spKGxlZnRWYWwubGVzc1RoYW5PckVxdWFsVG8ocmlnaHRWYWwpKTtcbiAgICAgICAgICAgICAgICBjYXNlICc9PSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoMCwgbmV2ZXJ0aHJvd18xLm9rKShsZWZ0VmFsLmVxdWFscyhyaWdodFZhbCkpO1xuICAgICAgICAgICAgICAgIGNhc2UgJyE9JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwLCBuZXZlcnRocm93XzEub2spKCFsZWZ0VmFsLmVxdWFscyhyaWdodFZhbCkpO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoMCwgbmV2ZXJ0aHJvd18xLmVycikoRXJyb3IoJ0ludmFsaWQgY29uZGl0aW9uYWwgb3BlcmF0b3I6ICcgKyB0aGlzLm9wZXJhdG9yKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHR5cGVFcnJvciA9ICgwLCBhc3RfdXRpbHNfMS5jaGVja1R5cGUpKGFzdCwgJ3ByZWRpY2F0ZScpO1xuICAgICAgICBpZiAodHlwZUVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGVuZ3RoRXJyb3IgPSAoMCwgYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aCkoYXN0LCAzKTtcbiAgICAgICAgaWYgKGxlbmd0aEVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBsZW5ndGhFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjaGlsZFR5cGVFcnJvciA9ICgwLCBhc3RfdXRpbHNfMS5jaGVja1R5cGUpKGFzdC5jaGlsZHJlblsxXSwgJ2NvbmRpdGlvbmFsX29wZXJhdG9yJyk7XG4gICAgICAgIGlmIChjaGlsZFR5cGVFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgY2hpbGRUeXBlRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcGVyYXRvciA9IGFzdC5jaGlsZHJlblsxXS50ZXh0O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5sZWZ0U291cmNlID0gbmV3IGNhbGNfMS5Tb3VyY2UoYXN0LmNoaWxkcmVuWzBdLCB0YWJsZSk7XG4gICAgICAgICAgICB0aGlzLnJpZ2h0U291cmNlID0gbmV3IGNhbGNfMS5Tb3VyY2UoYXN0LmNoaWxkcmVuWzJdLCB0YWJsZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAvLyBTdGlsbCBpbiBhIGNvbnN0cnVjdG9yLCBzbyBub3RoaW5nIHdlIGNhbiBkbyBidXQgdGhyb3cgYWdhaW5cbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkNvbnN0YW50ID0gdm9pZCAwO1xuY29uc3QgbmV2ZXJ0aHJvd18xID0gcmVxdWlyZShcIi4uL25ldmVydGhyb3cvbmV2ZXJ0aHJvd1wiKTtcbmNvbnN0IGFzdF91dGlsc18xID0gcmVxdWlyZShcIi4vYXN0X3V0aWxzXCIpO1xuY29uc3QgcmVzdWx0c18xID0gcmVxdWlyZShcIi4vcmVzdWx0c1wiKTtcbmNsYXNzIENvbnN0YW50IHtcbiAgICBjb25zdHJ1Y3Rvcihhc3QsIHRhYmxlKSB7XG4gICAgICAgIGNvbnN0IHR5cGVFcnIgPSAoMCwgYXN0X3V0aWxzXzEuY2hlY2tUeXBlKShhc3QsICdyZWFsJywgJ2Zsb2F0Jyk7XG4gICAgICAgIGlmICh0eXBlRXJyKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG11bHRpcGxpZXIgPSBhc3QudGV4dFswXSA9PT0gJy0nID8gLTEgOiAxO1xuICAgICAgICBpZiAoYXN0LnR5cGUgPT09ICdyZWFsJykge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG11bHRpcGxpZXIgKiBwYXJzZUludChhc3QuY2hpbGRyZW5bMF0udGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID1cbiAgICAgICAgICAgICAgICBtdWx0aXBsaWVyICpcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdChhc3QuY2hpbGRyZW5bMF0udGV4dCArICcuJyArIGFzdC5jaGlsZHJlblsxXS50ZXh0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXRWYWx1ZSh0YWJsZSwgY3VycmVudENlbGwpIHtcbiAgICAgICAgcmV0dXJuICgwLCBuZXZlcnRocm93XzEub2spKG5ldyByZXN1bHRzXzEuVmFsdWUoW1t0aGlzLnZhbHVlLnRvU3RyaW5nKCldXSkpO1xuICAgIH1cbn1cbmV4cG9ydHMuQ29uc3RhbnQgPSBDb25zdGFudDtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5BYnNvbHV0ZUNvbHVtbiA9IGV4cG9ydHMuQ29sdW1uID0gZXhwb3J0cy5uZXdDb2x1bW4gPSB2b2lkIDA7XG5jb25zdCBuZXZlcnRocm93XzEgPSByZXF1aXJlKFwiLi4vbmV2ZXJ0aHJvdy9uZXZlcnRocm93XCIpO1xuY29uc3QgYXN0X3V0aWxzXzEgPSByZXF1aXJlKFwiLi9hc3RfdXRpbHNcIik7XG5jb25zdCByZXN1bHRzXzEgPSByZXF1aXJlKFwiLi9yZXN1bHRzXCIpO1xuY29uc3QgbmV3Q29sdW1uID0gKGFzdCwgdGFibGUpID0+IHtcbiAgICB0cnkge1xuICAgICAgICBzd2l0Y2ggKGFzdC50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdyZWxhdGl2ZV9jb2x1bW4nOlxuICAgICAgICAgICAgICAgIHJldHVybiAoMCwgbmV2ZXJ0aHJvd18xLm9rKShuZXcgUmVsYXRpdmVDb2x1bW4oYXN0LCB0YWJsZSkpO1xuICAgICAgICAgICAgY2FzZSAnYWJzb2x1dGVfY29sdW1uJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gKDAsIG5ldmVydGhyb3dfMS5vaykobmV3IEFic29sdXRlQ29sdW1uKGFzdCwgdGFibGUpKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICgwLCBuZXZlcnRocm93XzEuZXJyKShuZXcgRXJyb3IoYEZvcm11bGEgZWxlbWVudCAnJHthc3QudGV4dH0nIGlzIGEgJHthc3QudHlwZX0gYnV0IGV4cGVjdGVkIGFuIGAgK1xuICAgICAgICAgICAgICAgICAgICAncmVsYXR2ZV9jb2x1bW4gb3IgYWJzb2x1dGVfY29sdW1uIGluIHRoaXMgcG9zaXRpb24uJykpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXR1cm4gKDAsIG5ldmVydGhyb3dfMS5lcnIpKGVycm9yKTtcbiAgICB9XG59O1xuZXhwb3J0cy5uZXdDb2x1bW4gPSBuZXdDb2x1bW47XG5jbGFzcyBDb2x1bW4ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmdldFZhbHVlID0gKHRhYmxlLCBjdXJyZW50Q2VsbCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgY29uc3QgdmFsID0gKChfYSA9IHRhYmxlLmdldENlbGxBdChjdXJyZW50Q2VsbC5yb3csIHRoaXMuZ2V0SW5kZXgoY3VycmVudENlbGwpKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRvVGV4dCgpKSB8fFxuICAgICAgICAgICAgICAgICcnO1xuICAgICAgICAgICAgcmV0dXJuICgwLCBuZXZlcnRocm93XzEub2spKG5ldyByZXN1bHRzXzEuVmFsdWUoW1t2YWxdXSkpO1xuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydHMuQ29sdW1uID0gQ29sdW1uO1xuY2xhc3MgUmVsYXRpdmVDb2x1bW4gZXh0ZW5kcyBDb2x1bW4ge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5nZXRJbmRleCA9IChjdXJyZW50Q2VsbCkgPT4gY3VycmVudENlbGwuY29sdW1uICsgdGhpcy5vZmZzZXQ7XG4gICAgICAgIHRoaXMuZ2V0QWJzb2x1dGVJbmRleCA9ICgpID0+ICgwLCBuZXZlcnRocm93XzEuZXJyKShhc3RfdXRpbHNfMS5lcnJSZWxhdGl2ZVJlZmVyZW5jZUluZGV4KTtcbiAgICAgICAgY29uc3QgdHlwZUVycm9yID0gKDAsIGFzdF91dGlsc18xLmNoZWNrVHlwZSkoYXN0LCAncmVsYXRpdmVfY29sdW1uJyk7XG4gICAgICAgIGlmICh0eXBlRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IHR5cGVFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsZW5ndGhFcnJvciA9ICgwLCBhc3RfdXRpbHNfMS5jaGVja0NoaWxkTGVuZ3RoKShhc3QsIDEpO1xuICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGxlbmd0aEVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG11bHRpcGxpZXIgPSBhc3QudGV4dFsxXSA9PT0gJy0nID8gLTEgOiAxO1xuICAgICAgICB0aGlzLm9mZnNldCA9IG11bHRpcGxpZXIgKiBwYXJzZUludChhc3QuY2hpbGRyZW5bMF0udGV4dCk7XG4gICAgfVxufVxuY2xhc3MgQWJzb2x1dGVDb2x1bW4gZXh0ZW5kcyBDb2x1bW4ge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5nZXRJbmRleCA9IChjdXJyZW50Q2VsbCkgPT4gdGhpcy5pbmRleDtcbiAgICAgICAgdGhpcy5nZXRBYnNvbHV0ZUluZGV4ID0gKCkgPT4gKDAsIG5ldmVydGhyb3dfMS5vaykodGhpcy5pbmRleCk7XG4gICAgICAgIGxldCBpbmRleCA9IC0xO1xuICAgICAgICBsZXQgc3ltYm9sID0gJyc7XG4gICAgICAgIHN3aXRjaCAoYXN0LmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHN5bWJvbCA9IGFzdC50ZXh0WzFdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVFcnJvciA9ICgwLCBhc3RfdXRpbHNfMS5jaGVja1R5cGUpKGFzdC5jaGlsZHJlblswXSwgJ2ludCcpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgKDAsIG5ldmVydGhyb3dfMS5lcnIpKHR5cGVFcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluZGV4ID0gcGFyc2VJbnQoYXN0LmNoaWxkcmVuWzBdLnRleHQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZvcm11bGEgZWxlbWVudCAnJHthc3QudGV4dH0nIGlzIGEgJHthc3QudHlwZX0gYnV0IGV4cGVjdGVkIGAgK1xuICAgICAgICAgICAgICAgICAgICAnYSBcXCdhYnNvbHV0ZV9jb2x1bW5cXCcgaW4gdGhpcyBwb3NpdGlvbi4nKTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKHN5bWJvbCkge1xuICAgICAgICAgICAgY2FzZSAnJzpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzwnOlxuICAgICAgICAgICAgICAgIGluZGV4ID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJz4nOlxuICAgICAgICAgICAgICAgIGluZGV4ID0gdGFibGUuZ2V0V2lkdGgoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGNvbHVtbiBzeW1ib2wgJyR7c3ltYm9sfSdgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IGFzdF91dGlsc18xLmVyckluZGV4MDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluZGV4ID0gaW5kZXggLSAxOyAvLyAtMSBmb3IgYmVpbmcgemVybyBpbmRleGVkXG4gICAgfVxufVxuZXhwb3J0cy5BYnNvbHV0ZUNvbHVtbiA9IEFic29sdXRlQ29sdW1uO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkFic29sdXRlUm93ID0gZXhwb3J0cy5Sb3cgPSBleHBvcnRzLm5ld1JvdyA9IHZvaWQgMDtcbmNvbnN0IG5ldmVydGhyb3dfMSA9IHJlcXVpcmUoXCIuLi9uZXZlcnRocm93L25ldmVydGhyb3dcIik7XG5jb25zdCBhc3RfdXRpbHNfMSA9IHJlcXVpcmUoXCIuL2FzdF91dGlsc1wiKTtcbmNvbnN0IHJlc3VsdHNfMSA9IHJlcXVpcmUoXCIuL3Jlc3VsdHNcIik7XG5jb25zdCBuZXdSb3cgPSAoYXN0LCB0YWJsZSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIHN3aXRjaCAoYXN0LnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3JlbGF0aXZlX3Jvdyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICgwLCBuZXZlcnRocm93XzEub2spKG5ldyBSZWxhdGl2ZVJvdyhhc3QsIHRhYmxlKSk7XG4gICAgICAgICAgICBjYXNlICdhYnNvbHV0ZV9yb3cnOlxuICAgICAgICAgICAgICAgIHJldHVybiAoMCwgbmV2ZXJ0aHJvd18xLm9rKShuZXcgQWJzb2x1dGVSb3coYXN0LCB0YWJsZSkpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gKDAsIG5ldmVydGhyb3dfMS5lcnIpKG5ldyBFcnJvcihgRm9ybXVsYSBlbGVtZW50ICcke2FzdC50ZXh0fScgaXMgYSAke2FzdC50eXBlfSBidXQgZXhwZWN0ZWQgYW4gYCArXG4gICAgICAgICAgICAgICAgICAgICdyZWxhdHZlX3JvdyBvciBhYnNvbHV0ZV9yb3cgIGluIHRoaXMgcG9zaXRpb24uJykpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXR1cm4gKDAsIG5ldmVydGhyb3dfMS5lcnIpKGVycm9yKTtcbiAgICB9XG59O1xuZXhwb3J0cy5uZXdSb3cgPSBuZXdSb3c7XG5jbGFzcyBSb3cge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmdldFZhbHVlID0gKHRhYmxlLCBjdXJyZW50Q2VsbCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgY29uc3QgdmFsID0gKChfYSA9IHRhYmxlXG4gICAgICAgICAgICAgICAgLmdldENlbGxBdCh0aGlzLmdldEluZGV4KGN1cnJlbnRDZWxsKSwgY3VycmVudENlbGwuY29sdW1uKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRvVGV4dCgpKSB8fCAnJztcbiAgICAgICAgICAgIHJldHVybiAoMCwgbmV2ZXJ0aHJvd18xLm9rKShuZXcgcmVzdWx0c18xLlZhbHVlKFtbdmFsXV0pKTtcbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnRzLlJvdyA9IFJvdztcbmNsYXNzIFJlbGF0aXZlUm93IGV4dGVuZHMgUm93IHtcbiAgICBjb25zdHJ1Y3Rvcihhc3QsIHRhYmxlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZ2V0SW5kZXggPSAoY3VycmVudENlbGwpID0+IGN1cnJlbnRDZWxsLnJvdyArIHRoaXMub2Zmc2V0O1xuICAgICAgICB0aGlzLmdldEFic29sdXRlSW5kZXggPSAoKSA9PiAoMCwgbmV2ZXJ0aHJvd18xLmVycikoYXN0X3V0aWxzXzEuZXJyUmVsYXRpdmVSZWZlcmVuY2VJbmRleCk7XG4gICAgICAgIGNvbnN0IHR5cGVFcnJvciA9ICgwLCBhc3RfdXRpbHNfMS5jaGVja1R5cGUpKGFzdCwgJ3JlbGF0aXZlX3JvdycpO1xuICAgICAgICBpZiAodHlwZUVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGVuZ3RoRXJyb3IgPSAoMCwgYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aCkoYXN0LCAxKTtcbiAgICAgICAgaWYgKGxlbmd0aEVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBsZW5ndGhFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtdWx0aXBsaWVyID0gYXN0LnRleHRbMV0gPT09ICctJyA/IC0xIDogMTtcbiAgICAgICAgdGhpcy5vZmZzZXQgPSBtdWx0aXBsaWVyICogcGFyc2VJbnQoYXN0LmNoaWxkcmVuWzBdLnRleHQpO1xuICAgIH1cbn1cbmNsYXNzIEFic29sdXRlUm93IGV4dGVuZHMgUm93IHtcbiAgICBjb25zdHJ1Y3Rvcihhc3QsIHRhYmxlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZ2V0SW5kZXggPSAoY3VycmVudENlbGwpID0+IHRoaXMuaW5kZXg7XG4gICAgICAgIHRoaXMuZ2V0QWJzb2x1dGVJbmRleCA9ICgpID0+ICgwLCBuZXZlcnRocm93XzEub2spKHRoaXMuaW5kZXgpO1xuICAgICAgICBsZXQgaW5kZXggPSAtMTtcbiAgICAgICAgbGV0IHN5bWJvbCA9ICcnO1xuICAgICAgICBzd2l0Y2ggKGFzdC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBzeW1ib2wgPSBhc3QudGV4dFsxXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlRXJyb3IgPSAoMCwgYXN0X3V0aWxzXzEuY2hlY2tUeXBlKShhc3QuY2hpbGRyZW5bMF0sICdpbnQnKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZUVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93ICgwLCBuZXZlcnRocm93XzEuZXJyKSh0eXBlRXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpbmRleCA9IHBhcnNlSW50KGFzdC5jaGlsZHJlblswXS50ZXh0KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGb3JtdWxhIGVsZW1lbnQgJyR7YXN0LnRleHR9JyBpcyBhICR7YXN0LnR5cGV9IGJ1dCBleHBlY3RlZCBgICtcbiAgICAgICAgICAgICAgICAgICAgJ2EgXFwnYWJzb2x1dGVfcm93XFwnIGluIHRoaXMgcG9zaXRpb24uJyk7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChzeW1ib2wpIHtcbiAgICAgICAgICAgIGNhc2UgJyc6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICc8JzpcbiAgICAgICAgICAgICAgICBpbmRleCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICc+JzpcbiAgICAgICAgICAgICAgICBpbmRleCA9IHRhYmxlLmdldEhlaWdodCgpIC0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0knOlxuICAgICAgICAgICAgICAgIGluZGV4ID0gMjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHJvdyBzeW1ib2wgJyR7c3ltYm9sfSdgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IGFzdF91dGlsc18xLmVyckluZGV4MDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5kZXggPT09IDEpIHtcbiAgICAgICAgICAgIHRoaXMuaW5kZXggPSAwOyAvLyBhY2NvdW50IGZvciBiZWluZyB6ZXJvIGluZGV4ZWRcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5kZXggPSBpbmRleDsgLy8gLTEgZm9yIGJlaW5nIHplcm8gaW5kZXhlZCwgYnV0IHBsdXMgMSB0byBza2lwIGhlYWRlclxuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5BYnNvbHV0ZVJvdyA9IEFic29sdXRlUm93O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlJlZmVyZW5jZSA9IHZvaWQgMDtcbmNvbnN0IG5ldmVydGhyb3dfMSA9IHJlcXVpcmUoXCIuLi9uZXZlcnRocm93L25ldmVydGhyb3dcIik7XG5jb25zdCBhc3RfdXRpbHNfMSA9IHJlcXVpcmUoXCIuL2FzdF91dGlsc1wiKTtcbmNvbnN0IGNvbHVtbl8xID0gcmVxdWlyZShcIi4vY29sdW1uXCIpO1xuY29uc3QgcmVzdWx0c18xID0gcmVxdWlyZShcIi4vcmVzdWx0c1wiKTtcbmNvbnN0IHJvd18xID0gcmVxdWlyZShcIi4vcm93XCIpO1xuY2xhc3MgUmVmZXJlbmNlIHtcbiAgICBjb25zdHJ1Y3Rvcihhc3QsIHRhYmxlKSB7XG4gICAgICAgIHRoaXMuZ2V0VmFsdWUgPSAodGFibGUsIGN1cnJlbnRDZWxsKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBjb25zdCBjZWxsID0ge1xuICAgICAgICAgICAgICAgIHJvdzogdGhpcy5yb3cgPyB0aGlzLnJvdy5nZXRJbmRleChjdXJyZW50Q2VsbCkgOiBjdXJyZW50Q2VsbC5yb3csXG4gICAgICAgICAgICAgICAgY29sdW1uOiB0aGlzLmNvbHVtblxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuY29sdW1uLmdldEluZGV4KGN1cnJlbnRDZWxsKVxuICAgICAgICAgICAgICAgICAgICA6IGN1cnJlbnRDZWxsLmNvbHVtbixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCB2YWwgPSAoKF9hID0gdGFibGUuZ2V0Q2VsbEF0KGNlbGwucm93LCBjZWxsLmNvbHVtbikpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50b1RleHQoKSkgfHwgJyc7XG4gICAgICAgICAgICByZXR1cm4gKDAsIG5ldmVydGhyb3dfMS5vaykobmV3IHJlc3VsdHNfMS5WYWx1ZShbW3ZhbF1dKSk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHR5cGVFcnIgPSAoMCwgYXN0X3V0aWxzXzEuY2hlY2tUeXBlKShhc3QsICdzb3VyY2VfcmVmZXJlbmNlJywgJ2Fic29sdXRlX3JlZmVyZW5jZScsICdyZWxhdGl2ZV9yZWZlcmVuY2UnKTtcbiAgICAgICAgaWYgKHR5cGVFcnIpIHtcbiAgICAgICAgICAgIHRocm93IHR5cGVFcnI7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhc3QuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gYXN0LmNoaWxkcmVuW2ldO1xuICAgICAgICAgICAgc3dpdGNoIChjaGlsZC50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAncmVsYXRpdmVfcm93JzpcbiAgICAgICAgICAgICAgICBjYXNlICdhYnNvbHV0ZV9yb3cnOlxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yb3cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1JlZmVyZW5jZSBtYXkgb25seSBoYXZlIGF0IG1vc3QgMSByb3csIG1vcmUgdGhhbiAxIHByb3ZpZGVkJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3JlYXRlZFJvdyA9ICgwLCByb3dfMS5uZXdSb3cpKGNoaWxkLCB0YWJsZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjcmVhdGVkUm93LmlzRXJyKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjcmVhdGVkUm93LmVycm9yID09PSBhc3RfdXRpbHNfMS5lcnJJbmRleDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBub3QgYWN0dWFsbHkgYW4gZXJyb3IsIGp1c3QgaW5kaWNhdGVzIHVzaW5nIGN1cnJlbnQgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGNyZWF0ZWRSb3cuZXJyb3I7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3cgPSBjcmVhdGVkUm93LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdyZWxhdGl2ZV9jb2x1bW4nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2Fic29sdXRlX2NvbHVtbic6XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbHVtbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcignUmVmZXJlbmNlIG1heSBvbmx5IGhhdmUgYXQgbW9zdCAxIGNvbHVtbiwgbW9yZSB0aGFuIDEgcHJvdmlkZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjcmVhdGVkQ29sID0gKDAsIGNvbHVtbl8xLm5ld0NvbHVtbikoY2hpbGQsIHRhYmxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNyZWF0ZWRDb2wuaXNFcnIoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNyZWF0ZWRDb2wuZXJyb3IgPT09IGFzdF91dGlsc18xLmVyckluZGV4MCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vdCBhY3R1YWxseSBhbiBlcnJvciwganVzdCBpbmRpY2F0ZXMgdXNpbmcgY3VycmVudCBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgY3JlYXRlZENvbC5lcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbiA9IGNyZWF0ZWRDb2wudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5SZWZlcmVuY2UgPSBSZWZlcmVuY2U7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuUmFuZ2UgPSB2b2lkIDA7XG5jb25zdCBuZXZlcnRocm93XzEgPSByZXF1aXJlKFwiLi4vbmV2ZXJ0aHJvdy9uZXZlcnRocm93XCIpO1xuY29uc3QgYXN0X3V0aWxzXzEgPSByZXF1aXJlKFwiLi9hc3RfdXRpbHNcIik7XG5jb25zdCByZWZlcmVuY2VfMSA9IHJlcXVpcmUoXCIuL3JlZmVyZW5jZVwiKTtcbmNvbnN0IHJlc3VsdHNfMSA9IHJlcXVpcmUoXCIuL3Jlc3VsdHNcIik7XG5jb25zdCBsb2Rhc2hfMSA9IHJlcXVpcmUoXCJsb2Rhc2hcIik7XG5jbGFzcyBSYW5nZSB7XG4gICAgY29uc3RydWN0b3IoYXN0LCB0YWJsZSkge1xuICAgICAgICB0aGlzLmdldFZhbHVlID0gKHRhYmxlLCBjdXJyZW50Q2VsbCkgPT4ge1xuICAgICAgICAgICAgLy8gaWYgbm8gc3RhcnQgY29sdW1uIGlzIHByb3ZpZGVkLCBjb3B5IGl0IGZyb20gdGhlIGN1cnJlbnRDZWxsXG4gICAgICAgICAgICBjb25zdCBzdGFydENvbHVtbiA9IHRoaXMuc3RhcnRDb2x1bW5cbiAgICAgICAgICAgICAgICA/IHRoaXMuc3RhcnRDb2x1bW4uZ2V0SW5kZXgoY3VycmVudENlbGwpXG4gICAgICAgICAgICAgICAgOiBjdXJyZW50Q2VsbC5jb2x1bW47XG4gICAgICAgICAgICAvLyBpZiB0aGUgY29sdW1uIGlzIHByb3ZpZGVkIGluIHRoZSBmaXJzdCBzZXQsIGJ1dCBub3QgdGhlIHNlY29uZCwgY29weSBpdFxuICAgICAgICAgICAgY29uc3QgZW5kQ29sdW1uID0gdGhpcy5lbmRDb2x1bW5cbiAgICAgICAgICAgICAgICA/IHRoaXMuZW5kQ29sdW1uLmdldEluZGV4KGN1cnJlbnRDZWxsKVxuICAgICAgICAgICAgICAgIDogc3RhcnRDb2x1bW47XG4gICAgICAgICAgICBjb25zdCBzdGFydFJvdyA9IHRoaXMuc3RhcnRSb3dcbiAgICAgICAgICAgICAgICA/IHRoaXMuc3RhcnRSb3cuZ2V0SW5kZXgoY3VycmVudENlbGwpXG4gICAgICAgICAgICAgICAgOiBjdXJyZW50Q2VsbC5yb3c7XG4gICAgICAgICAgICBjb25zdCBlbmRSb3cgPSB0aGlzLmVuZFJvd1xuICAgICAgICAgICAgICAgID8gdGhpcy5lbmRSb3cuZ2V0SW5kZXgoY3VycmVudENlbGwpXG4gICAgICAgICAgICAgICAgOiBjdXJyZW50Q2VsbC5yb3c7XG4gICAgICAgICAgICByZXR1cm4gKDAsIG5ldmVydGhyb3dfMS5vaykobmV3IHJlc3VsdHNfMS5WYWx1ZSgoMCwgbG9kYXNoXzEubWFwKSgoMCwgbG9kYXNoXzEucmFuZ2UpKHN0YXJ0Um93LCBlbmRSb3cgKyAxKSwgKHJvdykgPT4gKDAsIGxvZGFzaF8xLm1hcCkoKDAsIGxvZGFzaF8xLnJhbmdlKShzdGFydENvbHVtbiwgZW5kQ29sdW1uICsgMSksIChjb2wpID0+IHsgdmFyIF9hOyByZXR1cm4gKChfYSA9IHRhYmxlLmdldENlbGxBdChyb3csIGNvbCkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50b1RleHQoKSkgfHwgJyc7IH0pKSkpO1xuICAgICAgICB9O1xuICAgICAgICAvLyBUaGVyZSBuZWVkcyB0byBiZSBhIGRpc3RpbmN0aW9uIGJldHdlZW4gcmFuZ2VzIGZvciBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uXG4gICAgICAgIC8vIGEgZGVzdGluYXRpb24gcmFuZ2UgZG9lcyBub3QgYWxsb3cgcmVsYXRpdmUgcmVmZXJlbmNlcywgd2hpY2ggd291bGRcbiAgICAgICAgLy8gc29sdmUgdGhpcyBpc3N1ZSB3aXRoIGdldHRpbmcgdGhlIGluZGV4LlxuICAgICAgICB0aGlzLmFzQ2VsbHMgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc3RhcnRDb2x1bW4gfHwgIXRoaXMuc3RhcnRSb3cgfHwgIXRoaXMuZW5kUm93KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgwLCBuZXZlcnRocm93XzEuZXJyKShuZXcgRXJyb3IoJ0EgcmFuZ2UgdXNlZCBhcyBhIGRlc2ludGF0aW9uIG11c3QgZGVmaW5lIHJvd3MgYW5kIGNlbGxzJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSWYgdGhlIHNlY29uZCByZWZlcmVuY2UgaW4gdGhlIHJhbmdlIGRvZXMgbm90IGluY2x1ZGUgYSBjb2x1bW4sXG4gICAgICAgICAgICAvLyB1c2UgdGhlIHN0YXJ0IGNvbHVtbi5cbiAgICAgICAgICAgIGxldCBlbmRDb2x1bW4gPSB0aGlzLmVuZENvbHVtbjtcbiAgICAgICAgICAgIGlmICghZW5kQ29sdW1uKSB7XG4gICAgICAgICAgICAgICAgZW5kQ29sdW1uID0gdGhpcy5zdGFydENvbHVtbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0Um93SW5kZXggPSB0aGlzLnN0YXJ0Um93LmdldEFic29sdXRlSW5kZXgoKTtcbiAgICAgICAgICAgIGNvbnN0IGVuZFJvd0luZGV4ID0gdGhpcy5lbmRSb3cuZ2V0QWJzb2x1dGVJbmRleCgpO1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRDb2x1bW5JbmRleCA9IHRoaXMuc3RhcnRDb2x1bW4uZ2V0QWJzb2x1dGVJbmRleCgpO1xuICAgICAgICAgICAgY29uc3QgZW5kQ29sdW1uSW5kZXggPSBlbmRDb2x1bW4uZ2V0QWJzb2x1dGVJbmRleCgpO1xuICAgICAgICAgICAgaWYgKHN0YXJ0Um93SW5kZXguaXNFcnIoKSB8fFxuICAgICAgICAgICAgICAgIGVuZFJvd0luZGV4LmlzRXJyKCkgfHxcbiAgICAgICAgICAgICAgICBzdGFydENvbHVtbkluZGV4LmlzRXJyKCkgfHxcbiAgICAgICAgICAgICAgICBlbmRDb2x1bW5JbmRleC5pc0VycigpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgwLCBuZXZlcnRocm93XzEuZXJyKShuZXcgRXJyb3IoJ0EgcmVsYXRpdmUgcmFuZ2UgY2FuIG5vdCBiZSB1c2VkIGluIGEgZm9ybXVsYSBkZXN0aW5hdGlvbicpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG1pblJvdyA9IE1hdGgubWluKHN0YXJ0Um93SW5kZXgudmFsdWUsIGVuZFJvd0luZGV4LnZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IG1heFJvdyA9IE1hdGgubWF4KHN0YXJ0Um93SW5kZXgudmFsdWUsIGVuZFJvd0luZGV4LnZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IG1pbkNvbHVtbiA9IE1hdGgubWluKHN0YXJ0Q29sdW1uSW5kZXgudmFsdWUsIGVuZENvbHVtbkluZGV4LnZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IG1heENvbHVtbiA9IE1hdGgubWF4KHN0YXJ0Q29sdW1uSW5kZXgudmFsdWUsIGVuZENvbHVtbkluZGV4LnZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiAoMCwgbmV2ZXJ0aHJvd18xLm9rKSgoMCwgbG9kYXNoXzEuZmxhdE1hcCkoKDAsIGxvZGFzaF8xLnJhbmdlKShtaW5Sb3csIG1heFJvdyArIDEpLCAocm93TnVtKSA9PiAoMCwgbG9kYXNoXzEucmFuZ2UpKG1pbkNvbHVtbiwgbWF4Q29sdW1uICsgMSkubWFwKChjb2xOdW0pID0+ICh7IHJvdzogcm93TnVtLCBjb2x1bW46IGNvbE51bSB9KSkpKTtcbiAgICAgICAgfTtcbiAgICAgICAgbGV0IHR5cGVFcnIgPSAoMCwgYXN0X3V0aWxzXzEuY2hlY2tUeXBlKShhc3QsICdyYW5nZScpO1xuICAgICAgICBpZiAodHlwZUVycikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbGVuZ3RoRXJyb3IgPSAoMCwgYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aCkoYXN0LCAyKTtcbiAgICAgICAgaWYgKGxlbmd0aEVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBsZW5ndGhFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGFydENoaWxkID0gYXN0LmNoaWxkcmVuWzBdO1xuICAgICAgICBjb25zdCBlbmRDaGlsZCA9IGFzdC5jaGlsZHJlblsxXTtcbiAgICAgICAgdHlwZUVyciA9ICgwLCBhc3RfdXRpbHNfMS5jaGVja1R5cGUpKHN0YXJ0Q2hpbGQsICdzb3VyY2VfcmVmZXJlbmNlJyk7XG4gICAgICAgIGlmICh0eXBlRXJyKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyO1xuICAgICAgICB9XG4gICAgICAgIHR5cGVFcnIgPSAoMCwgYXN0X3V0aWxzXzEuY2hlY2tUeXBlKShlbmRDaGlsZCwgJ3NvdXJjZV9yZWZlcmVuY2UnKTtcbiAgICAgICAgaWYgKHR5cGVFcnIpIHtcbiAgICAgICAgICAgIHRocm93IHR5cGVFcnI7XG4gICAgICAgIH1cbiAgICAgICAgbGVuZ3RoRXJyb3IgPSAoMCwgYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aCkoc3RhcnRDaGlsZCwgMSk7XG4gICAgICAgIGlmIChsZW5ndGhFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbGVuZ3RoRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgbGVuZ3RoRXJyb3IgPSAoMCwgYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aCkoZW5kQ2hpbGQsIDEpO1xuICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGxlbmd0aEVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gbmV3IHJlZmVyZW5jZV8xLlJlZmVyZW5jZShzdGFydENoaWxkLmNoaWxkcmVuWzBdLCB0YWJsZSk7XG4gICAgICAgIGNvbnN0IGVuZCA9IG5ldyByZWZlcmVuY2VfMS5SZWZlcmVuY2UoZW5kQ2hpbGQuY2hpbGRyZW5bMF0sIHRhYmxlKTtcbiAgICAgICAgaWYgKChzdGFydC5yb3cgJiYgIWVuZC5yb3cpIHx8IChlbmQucm93ICYmICFzdGFydC5yb3cpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JhbmdlIG11c3QgdXNlIHJlZmVyZW5jZXMgb2YgdGhlIHNhbWUga2luZCcpO1xuICAgICAgICB9XG4gICAgICAgIC8vIE11c3QgcHJvdmlkZSBhdCBsZWFzdCBhIHJvdyBvciBhIGNvbHVtbiwgYnV0IGlmIHRoZSBmaXJzdCB2YWx1ZSBoYXMgYVxuICAgICAgICAvLyBjb2x1bW4gYnV0IHRoZSBzZWNvbmQgZG9lcyBub3QsIHRoZW4gY29weSB0aGUgZmlyc3QgY29sIHRvIHNlY29uZC5cbiAgICAgICAgaWYgKCFzdGFydC5yb3cgJiYgIXN0YXJ0LmNvbHVtbikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coc3RhcnQpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSYW5nZSBtdXN0IGhhdmUgYSByb3cgb3IgYSBjb2x1bW4gZGVmaW5lZCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFydC5yb3cpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRSb3cgPSBzdGFydC5yb3c7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXJ0LmNvbHVtbikge1xuICAgICAgICAgICAgdGhpcy5zdGFydENvbHVtbiA9IHN0YXJ0LmNvbHVtbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5kLnJvdykge1xuICAgICAgICAgICAgdGhpcy5lbmRSb3cgPSBlbmQucm93O1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmQuY29sdW1uKSB7XG4gICAgICAgICAgICB0aGlzLmVuZENvbHVtbiA9IGVuZC5jb2x1bW47XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVuZENvbHVtbiA9IHN0YXJ0LmNvbHVtbjtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydHMuUmFuZ2UgPSBSYW5nZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5SYW5nZURlc3RpbmF0aW9uID0gZXhwb3J0cy5DZWxsRGVzdGluYXRpb24gPSBleHBvcnRzLkNvbHVtbkRlc3RpbmF0aW9uID0gZXhwb3J0cy5Sb3dEZXN0aW5hdGlvbiA9IGV4cG9ydHMubmV3RGVzdGluYXRpb24gPSB2b2lkIDA7XG5jb25zdCBuZXZlcnRocm93XzEgPSByZXF1aXJlKFwiLi4vbmV2ZXJ0aHJvdy9uZXZlcnRocm93XCIpO1xuY29uc3QgYXN0X3V0aWxzXzEgPSByZXF1aXJlKFwiLi9hc3RfdXRpbHNcIik7XG5jb25zdCBjb2x1bW5fMSA9IHJlcXVpcmUoXCIuL2NvbHVtblwiKTtcbmNvbnN0IHJhbmdlXzEgPSByZXF1aXJlKFwiLi9yYW5nZVwiKTtcbmNvbnN0IHJvd18xID0gcmVxdWlyZShcIi4vcm93XCIpO1xuY29uc3QgbG9kYXNoXzEgPSByZXF1aXJlKFwibG9kYXNoXCIpO1xuY29uc3QgbmV3RGVzdGluYXRpb24gPSAoYXN0LCB0YWJsZSwgZm9ybWF0dGVyKSA9PiB7XG4gICAgY29uc3QgdHlwZUVyciA9ICgwLCBhc3RfdXRpbHNfMS5jaGVja1R5cGUpKGFzdCwgJ2Rlc3RpbmF0aW9uJyk7XG4gICAgaWYgKHR5cGVFcnIpIHtcbiAgICAgICAgcmV0dXJuICgwLCBuZXZlcnRocm93XzEuZXJyKSh0eXBlRXJyKTtcbiAgICB9XG4gICAgY29uc3QgbGVuZ3RoRXJyb3IgPSAoMCwgYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aCkoYXN0LCAxKTtcbiAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuICgwLCBuZXZlcnRocm93XzEuZXJyKShsZW5ndGhFcnJvcik7XG4gICAgfVxuICAgIGNvbnN0IGNoaWxkID0gYXN0LmNoaWxkcmVuWzBdO1xuICAgIGlmIChjaGlsZC50eXBlID09PSAncmFuZ2UnKSB7XG4gICAgICAgIHJldHVybiAoMCwgbmV2ZXJ0aHJvd18xLm9rKShuZXcgUmFuZ2VEZXN0aW5hdGlvbihjaGlsZCwgdGFibGUsIGZvcm1hdHRlcikpO1xuICAgIH1cbiAgICAvLyBtdXN0IGJlIGVpdGhlciBhbiBhYnNvbHV0ZV9yZWZlcmVuY2VcbiAgICB0cnkge1xuICAgICAgICBzd2l0Y2ggKGNoaWxkLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgIHJldHVybiAoMCwgbmV2ZXJ0aHJvd18xLm9rKShuZXcgQ2VsbERlc3RpbmF0aW9uKGNoaWxkLCB0YWJsZSwgZm9ybWF0dGVyKSk7XG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgY29uc3QgaW5uZXJDaGlsZCA9IGNoaWxkLmNoaWxkcmVuWzBdO1xuICAgICAgICAgICAgICAgIGlmIChpbm5lckNoaWxkLnR5cGUgPT09ICdhYnNvbHV0ZV9yb3cnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoMCwgbmV2ZXJ0aHJvd18xLm9rKShuZXcgUm93RGVzdGluYXRpb24oY2hpbGQsIHRhYmxlLCBmb3JtYXR0ZXIpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaW5uZXJDaGlsZC50eXBlID09PSAnYWJzb2x1dGVfY29sdW1uJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDAsIG5ldmVydGhyb3dfMS5vaykobmV3IENvbHVtbkRlc3RpbmF0aW9uKGNoaWxkLCB0YWJsZSwgZm9ybWF0dGVyKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gKDAsIG5ldmVydGhyb3dfMS5lcnIpKG5ldyBFcnJvcignVW5leHBlY3RlZCBkZXN0aW5hdGlvbiB0eXBlICcgKyBjaGlsZC50eXBlKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciA9PT0gYXN0X3V0aWxzXzEuZXJySW5kZXgwKSB7XG4gICAgICAgICAgICByZXR1cm4gKDAsIG5ldmVydGhyb3dfMS5lcnIpKG5ldyBFcnJvcignSW5kZXggMCBtYXkgbm90IGJlIHVzZWQgaW4gYSBkZXN0aW5hdGlvbicpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKDAsIG5ldmVydGhyb3dfMS5lcnIpKGVycm9yKTtcbiAgICB9XG59O1xuZXhwb3J0cy5uZXdEZXN0aW5hdGlvbiA9IG5ld0Rlc3RpbmF0aW9uO1xuY2xhc3MgUm93RGVzdGluYXRpb24ge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUsIGZvcm1hdHRlcikge1xuICAgICAgICB0aGlzLm1lcmdlID0gKHNvdXJjZSwgdGFibGUpID0+IHtcbiAgICAgICAgICAgIC8vIGZvciBjZWxsIGluIHJvdy4uLlxuICAgICAgICAgICAgY29uc3QgY2VsbHMgPSAoMCwgbG9kYXNoXzEucmFuZ2UpKDAsIHRhYmxlLmdldFdpZHRoKCkpLm1hcCgoY29sdW1uTnVtKSA9PiAoeyByb3c6IHRoaXMucm93LmluZGV4LCBjb2x1bW46IGNvbHVtbk51bSB9KSk7XG4gICAgICAgICAgICByZXR1cm4gbWVyZ2VGb3JDZWxscyhzb3VyY2UsIHRhYmxlLCBjZWxscywgdGhpcy5mb3JtYXR0ZXIpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZvcm1hdHRlciA9IGZvcm1hdHRlcjtcbiAgICAgICAgY29uc3QgdHlwZUVyciA9ICgwLCBhc3RfdXRpbHNfMS5jaGVja1R5cGUpKGFzdCwgJ2Fic29sdXRlX3JlZmVyZW5jZScpO1xuICAgICAgICBpZiAodHlwZUVycikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsZW5ndGhFcnJvciA9ICgwLCBhc3RfdXRpbHNfMS5jaGVja0NoaWxkTGVuZ3RoKShhc3QsIDEpO1xuICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGxlbmd0aEVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNoaWxkID0gYXN0LmNoaWxkcmVuWzBdO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5yb3cgPSBuZXcgcm93XzEuQWJzb2x1dGVSb3coY2hpbGQsIHRhYmxlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vIEluIGEgY29uc3RydWN0b3IsIHNvIHdlIG11c3QgdGhyb3dcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5Sb3dEZXN0aW5hdGlvbiA9IFJvd0Rlc3RpbmF0aW9uO1xuY2xhc3MgQ29sdW1uRGVzdGluYXRpb24ge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUsIGZvcm1hdHRlcikge1xuICAgICAgICB0aGlzLm1lcmdlID0gKHNvdXJjZSwgdGFibGUpID0+IHtcbiAgICAgICAgICAgIC8vIGZvciBjZWxsIGluIGNvbHVtbiAoZXhjbHVkaW5nIGhlYWRlcikuLi5cbiAgICAgICAgICAgIGNvbnN0IGNlbGxzID0gKDAsIGxvZGFzaF8xLnJhbmdlKSgyLCB0YWJsZS5nZXRIZWlnaHQoKSkubWFwKChyb3dOdW0pID0+ICh7IHJvdzogcm93TnVtLCBjb2x1bW46IHRoaXMuY29sdW1uLmluZGV4IH0pKTtcbiAgICAgICAgICAgIHJldHVybiBtZXJnZUZvckNlbGxzKHNvdXJjZSwgdGFibGUsIGNlbGxzLCB0aGlzLmZvcm1hdHRlcik7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZm9ybWF0dGVyID0gZm9ybWF0dGVyO1xuICAgICAgICBjb25zdCB0eXBlRXJyID0gKDAsIGFzdF91dGlsc18xLmNoZWNrVHlwZSkoYXN0LCAnYWJzb2x1dGVfcmVmZXJlbmNlJyk7XG4gICAgICAgIGlmICh0eXBlRXJyKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxlbmd0aEVycm9yID0gKDAsIGFzdF91dGlsc18xLmNoZWNrQ2hpbGRMZW5ndGgpKGFzdCwgMSk7XG4gICAgICAgIGlmIChsZW5ndGhFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbGVuZ3RoRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2hpbGQgPSBhc3QuY2hpbGRyZW5bMF07XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmNvbHVtbiA9IG5ldyBjb2x1bW5fMS5BYnNvbHV0ZUNvbHVtbihjaGlsZCwgdGFibGUpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgLy8gSW4gYSBjb25zdHJ1Y3Rvciwgc28gd2UgbXVzdCB0aHJvd1xuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnRzLkNvbHVtbkRlc3RpbmF0aW9uID0gQ29sdW1uRGVzdGluYXRpb247XG5jbGFzcyBDZWxsRGVzdGluYXRpb24ge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUsIGZvcm1hdHRlcikge1xuICAgICAgICB0aGlzLm1lcmdlID0gKHNvdXJjZSwgdGFibGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNlbGwgPSB7IHJvdzogdGhpcy5yb3cuaW5kZXgsIGNvbHVtbjogdGhpcy5jb2x1bW4uaW5kZXggfTtcbiAgICAgICAgICAgIHJldHVybiBtZXJnZUZvckNlbGxzKHNvdXJjZSwgdGFibGUsIFtjZWxsXSwgdGhpcy5mb3JtYXR0ZXIpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZvcm1hdHRlciA9IGZvcm1hdHRlcjtcbiAgICAgICAgY29uc3QgdHlwZUVyciA9ICgwLCBhc3RfdXRpbHNfMS5jaGVja1R5cGUpKGFzdCwgJ2Fic29sdXRlX3JlZmVyZW5jZScpO1xuICAgICAgICBpZiAodHlwZUVycikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycjtcbiAgICAgICAgfVxuICAgICAgICAvLyBBIGNlbGwgbmVlZHMgdG8gaGF2ZSB0d28gY2hpbGRyZW4sIGEgcm93IGFuZCBhIGNvbHVtblxuICAgICAgICBjb25zdCBsZW5ndGhFcnJvciA9ICgwLCBhc3RfdXRpbHNfMS5jaGVja0NoaWxkTGVuZ3RoKShhc3QsIDIpO1xuICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGxlbmd0aEVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJvd0NoaWxkID0gYXN0LmNoaWxkcmVuWzBdO1xuICAgICAgICBjb25zdCBjb2xDaGlsZCA9IGFzdC5jaGlsZHJlblsxXTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMucm93ID0gbmV3IHJvd18xLkFic29sdXRlUm93KHJvd0NoaWxkLCB0YWJsZSk7XG4gICAgICAgICAgICB0aGlzLmNvbHVtbiA9IG5ldyBjb2x1bW5fMS5BYnNvbHV0ZUNvbHVtbihjb2xDaGlsZCwgdGFibGUpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgLy8gSW4gYSBjb25zdHJ1Y3Rvciwgc28gd2UgbXVzdCB0aHJvd1xuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnRzLkNlbGxEZXN0aW5hdGlvbiA9IENlbGxEZXN0aW5hdGlvbjtcbmNsYXNzIFJhbmdlRGVzdGluYXRpb24ge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUsIGZvcm1hdHRlcikge1xuICAgICAgICB0aGlzLm1lcmdlID0gKHNvdXJjZSwgdGFibGUpID0+IHRoaXMucmFuZ2VcbiAgICAgICAgICAgIC5hc0NlbGxzKClcbiAgICAgICAgICAgIC5hbmRUaGVuKChjZWxscykgPT4gbWVyZ2VGb3JDZWxscyhzb3VyY2UsIHRhYmxlLCBjZWxscywgdGhpcy5mb3JtYXR0ZXIpKTtcbiAgICAgICAgdGhpcy5mb3JtYXR0ZXIgPSBmb3JtYXR0ZXI7XG4gICAgICAgIGNvbnN0IHR5cGVFcnIgPSAoMCwgYXN0X3V0aWxzXzEuY2hlY2tUeXBlKShhc3QsICdyYW5nZScpO1xuICAgICAgICBpZiAodHlwZUVycikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsZW5ndGhFcnJvciA9ICgwLCBhc3RfdXRpbHNfMS5jaGVja0NoaWxkTGVuZ3RoKShhc3QsIDIpO1xuICAgICAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGxlbmd0aEVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGFzdC5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgbGV0IGNoaWxkVHlwZUVyciA9ICgwLCBhc3RfdXRpbHNfMS5jaGVja1R5cGUpKGNoaWxkLCAnc291cmNlX3JlZmVyZW5jZScpO1xuICAgICAgICAgICAgaWYgKGNoaWxkVHlwZUVycikge1xuICAgICAgICAgICAgICAgIHRocm93IGNoaWxkVHlwZUVycjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGNoaWxkTGVuZ3RoRXJyb3IgPSAoMCwgYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aCkoY2hpbGQsIDEpO1xuICAgICAgICAgICAgaWYgKGNoaWxkTGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBjaGlsZExlbmd0aEVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2hpbGRUeXBlRXJyID0gKDAsIGFzdF91dGlsc18xLmNoZWNrVHlwZSkoY2hpbGQuY2hpbGRyZW5bMF0sICdhYnNvbHV0ZV9yZWZlcmVuY2UnKTtcbiAgICAgICAgICAgIGlmIChjaGlsZFR5cGVFcnIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBjaGlsZFR5cGVFcnI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJhbmdlID0gbmV3IHJhbmdlXzEuUmFuZ2UoYXN0LCB0YWJsZSk7XG4gICAgfVxufVxuZXhwb3J0cy5SYW5nZURlc3RpbmF0aW9uID0gUmFuZ2VEZXN0aW5hdGlvbjtcbmNvbnN0IG1lcmdlRm9yQ2VsbHMgPSAoc291cmNlLCB0YWJsZSwgY2VsbHMsIGZvcm1hdHRlcikgPT4gY2VsbHMucmVkdWNlKChjdXJyZW50VGFibGUsIGN1cnJlbnRDZWxsKSA9PiBjdXJyZW50VGFibGUuYW5kVGhlbigodCkgPT4gc291cmNlXG4gICAgLmdldFZhbHVlKHQsIGN1cnJlbnRDZWxsKVxuICAgIC5hbmRUaGVuKCh2YWwpID0+ICgwLCBuZXZlcnRocm93XzEub2spKHZhbC50b1N0cmluZygpKSlcbiAgICAuYW5kVGhlbigodmFsKSA9PiAoMCwgbmV2ZXJ0aHJvd18xLm9rKSh2YWwudHJpbSgpID09PSAnJyA/ICcwJyA6IHZhbCkpXG4gICAgLmFuZFRoZW4oKHZhbCkgPT4gKDAsIG5ldmVydGhyb3dfMS5vaykodC5zZXRDZWxsQXQoY3VycmVudENlbGwucm93LCBjdXJyZW50Q2VsbC5jb2x1bW4sIGZvcm1hdHRlci5mb3JtYXQodmFsKSkpKSksICgwLCBuZXZlcnRocm93XzEub2spKHRhYmxlKSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuRGlzcGxheURpcmVjdGl2ZSA9IGV4cG9ydHMuRGVmYXVsdEZvcm1hdHRlciA9IHZvaWQgMDtcbmNvbnN0IGFzdF91dGlsc18xID0gcmVxdWlyZShcIi4vYXN0X3V0aWxzXCIpO1xuY2xhc3MgRGVmYXVsdEZvcm1hdHRlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuZm9ybWF0ID0gKG51bSkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBudW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudW0udG9TdHJpbmcoKTtcbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnRzLkRlZmF1bHRGb3JtYXR0ZXIgPSBEZWZhdWx0Rm9ybWF0dGVyO1xuY2xhc3MgRGlzcGxheURpcmVjdGl2ZSB7XG4gICAgY29uc3RydWN0b3IoYXN0KSB7XG4gICAgICAgIHRoaXMuZm9ybWF0ID0gKG51bSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VkID0gdHlwZW9mIG51bSA9PT0gJ3N0cmluZycgPyBwYXJzZUZsb2F0KG51bSkgOiBudW07XG4gICAgICAgICAgICBpZiAodGhpcy5kaXNwbGF5QXNEYXRldGltZSkge1xuICAgICAgICAgICAgICAgIC8vIFNlcmlvdXNseSwgdGhlcmUncyBubyBkYXRlIGZvcm1hdHRpbmcgZnVuY3Rpb25hbGl0eSBpbiBKYXZhc2NyaXB0P1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShwYXJzZWQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhZCA9ICh2KSA9PiBgMCR7dn1gLnNsaWNlKC0yKTtcbiAgICAgICAgICAgICAgICBjb25zdCB5ID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vID0gcGFkKGRhdGUuZ2V0TW9udGgoKSArIDEpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBwYWQoZGF0ZS5nZXREYXRlKCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGggPSBwYWQoZGF0ZS5nZXRIb3VycygpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW4gPSBwYWQoZGF0ZS5nZXRNaW51dGVzKCkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHt5fS0ke21vfS0ke2R9ICR7aH06JHttaW59YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmRpc3BsYXlBc0hvdXJNaW51dGUpIHtcbiAgICAgICAgICAgICAgICBsZXQgc2lnbiA9IHBhcnNlZCA8IDAgPyAnLScgOiAnJztcbiAgICAgICAgICAgICAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcihNYXRoLmFicyhwYXJzZWQpIC8gNjAwMDApO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhZCA9ICh2KSA9PiBgMCR7dn1gLnNsaWNlKC0yKTtcbiAgICAgICAgICAgICAgICBjb25zdCBoID0gcGFkKE1hdGguZmxvb3IobWludXRlcyAvIDYwKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgbSA9IHBhZChtaW51dGVzICUgNjApO1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHtzaWdufSR7aH06JHttfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VkLnRvRml4ZWQodGhpcy5kZWNpbWFsTGVuZ3RoKTtcbiAgICAgICAgfTtcbiAgICAgICAgbGV0IHR5cGVFcnJvciA9ICgwLCBhc3RfdXRpbHNfMS5jaGVja1R5cGUpKGFzdCwgJ2Rpc3BsYXlfZGlyZWN0aXZlJyk7XG4gICAgICAgIGlmICh0eXBlRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IHR5cGVFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbGVuZ3RoRXJyb3IgPSAoMCwgYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aCkoYXN0LCAxKTtcbiAgICAgICAgaWYgKGxlbmd0aEVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBsZW5ndGhFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkaXNwbGF5RGlyZWN0aXZlT3B0aW9uID0gYXN0LmNoaWxkcmVuWzBdO1xuICAgICAgICB0eXBlRXJyb3IgPSAoMCwgYXN0X3V0aWxzXzEuY2hlY2tUeXBlKShkaXNwbGF5RGlyZWN0aXZlT3B0aW9uLCAnZGlzcGxheV9kaXJlY3RpdmVfb3B0aW9uJyk7XG4gICAgICAgIGlmICh0eXBlRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IHR5cGVFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBsZW5ndGhFcnJvciA9ICgwLCBhc3RfdXRpbHNfMS5jaGVja0NoaWxkTGVuZ3RoKShkaXNwbGF5RGlyZWN0aXZlT3B0aW9uLCAxKTtcbiAgICAgICAgaWYgKGxlbmd0aEVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBsZW5ndGhFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb3JtYXR0aW5nRGlyZWN0aXZlID0gZGlzcGxheURpcmVjdGl2ZU9wdGlvbi5jaGlsZHJlblswXTtcbiAgICAgICAgdHlwZUVycm9yID0gKDAsIGFzdF91dGlsc18xLmNoZWNrVHlwZSkoZm9ybWF0dGluZ0RpcmVjdGl2ZSwgJ2Zvcm1hdHRpbmdfZGlyZWN0aXZlJywgJ2RhdGV0aW1lX2RpcmVjdGl2ZScsICdob3VybWludXRlX2RpcmVjdGl2ZScpO1xuICAgICAgICBpZiAodHlwZUVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kaXNwbGF5QXNEYXRldGltZSA9IGZvcm1hdHRpbmdEaXJlY3RpdmUudHlwZSA9PT0gJ2RhdGV0aW1lX2RpcmVjdGl2ZSc7XG4gICAgICAgIHRoaXMuZGlzcGxheUFzSG91ck1pbnV0ZSA9XG4gICAgICAgICAgICBmb3JtYXR0aW5nRGlyZWN0aXZlLnR5cGUgPT09ICdob3VybWludXRlX2RpcmVjdGl2ZSc7XG4gICAgICAgIGlmICh0aGlzLmRpc3BsYXlBc0RhdGV0aW1lIHx8IHRoaXMuZGlzcGxheUFzSG91ck1pbnV0ZSkge1xuICAgICAgICAgICAgdGhpcy5kZWNpbWFsTGVuZ3RoID0gLTE7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGVuZ3RoRXJyb3IgPSAoMCwgYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aCkoZm9ybWF0dGluZ0RpcmVjdGl2ZSwgMSk7XG4gICAgICAgIGlmIChsZW5ndGhFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbGVuZ3RoRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm9ybWF0dGluZ0RpcmVjdGl2ZUxlbmd0aCA9IGZvcm1hdHRpbmdEaXJlY3RpdmUuY2hpbGRyZW5bMF07XG4gICAgICAgIHR5cGVFcnJvciA9ICgwLCBhc3RfdXRpbHNfMS5jaGVja1R5cGUpKGZvcm1hdHRpbmdEaXJlY3RpdmVMZW5ndGgsICdpbnQnKTtcbiAgICAgICAgaWYgKHR5cGVFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycm9yO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGVjaW1hbExlbmd0aCA9IHBhcnNlSW50KGZvcm1hdHRpbmdEaXJlY3RpdmVMZW5ndGgudGV4dCk7XG4gICAgfVxufVxuZXhwb3J0cy5EaXNwbGF5RGlyZWN0aXZlID0gRGlzcGxheURpcmVjdGl2ZTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5TaW5nbGVQYXJhbUZ1bmN0aW9uQ2FsbCA9IHZvaWQgMDtcbmNvbnN0IG5ldmVydGhyb3dfMSA9IHJlcXVpcmUoXCIuLi9uZXZlcnRocm93L25ldmVydGhyb3dcIik7XG5jb25zdCBhc3RfdXRpbHNfMSA9IHJlcXVpcmUoXCIuL2FzdF91dGlsc1wiKTtcbmNvbnN0IGNhbGNfMSA9IHJlcXVpcmUoXCIuL2NhbGNcIik7XG5jb25zdCByZXN1bHRzXzEgPSByZXF1aXJlKFwiLi9yZXN1bHRzXCIpO1xuY29uc3QgZGVjaW1hbF9qc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJkZWNpbWFsLmpzXCIpKTtcbmNsYXNzIFNpbmdsZVBhcmFtRnVuY3Rpb25DYWxsIHtcbiAgICBjb25zdHJ1Y3Rvcihhc3QsIHRhYmxlKSB7XG4gICAgICAgIHRoaXMuZ2V0VmFsdWUgPSAodGFibGUsIGNlbGwpID0+IHRoaXMucGFyYW0uZ2V0VmFsdWUodGFibGUsIGNlbGwpLmFuZFRoZW4oKHNvdXJjZURhdGEpID0+IFxuICAgICAgICAvLyBUaGUgb3BlcmF0aW9uIGZ1bmN0aW9ucyBkbyBub3QgdGhyb3cgZXJyb3JzIGJlY2F1c2UgZGF0YSBhcml0eSBoYXNcbiAgICAgICAgLy8gYWxyZWFkeSBiZWVuIHZhbGlkYXRlZC5cbiAgICAgICAgKDAsIG5ldmVydGhyb3dfMS5vaykodGhpcy5vcChzb3VyY2VEYXRhKSkpO1xuICAgICAgICBjb25zdCB0eXBlRXJyb3IgPSAoMCwgYXN0X3V0aWxzXzEuY2hlY2tUeXBlKShhc3QsICdzaW5nbGVfcGFyYW1fZnVuY3Rpb25fY2FsbCcpO1xuICAgICAgICBpZiAodHlwZUVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGVuZ3RoRXJyb3IgPSAoMCwgYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aCkoYXN0LCAyKTtcbiAgICAgICAgaWYgKGxlbmd0aEVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBsZW5ndGhFcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjaGlsZFR5cGVFcnJvciA9ICgwLCBhc3RfdXRpbHNfMS5jaGVja1R5cGUpKGFzdC5jaGlsZHJlblswXSwgJ3NpbmdsZV9wYXJhbV9mdW5jdGlvbicpO1xuICAgICAgICBpZiAoY2hpbGRUeXBlRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGNoaWxkVHlwZUVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9IGFzdC5jaGlsZHJlblswXS50ZXh0O1xuICAgICAgICBzd2l0Y2ggKGZ1bmN0aW9uTmFtZSkge1xuICAgICAgICAgICAgY2FzZSAnc3VtJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9wID0gc3VtO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbWVhbic6XG4gICAgICAgICAgICAgICAgdGhpcy5vcCA9IG1lYW47XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdVbmtub3duIHNpbmdsZSBwYXJhbSBmdW5jdGlvbiBjYWxsOiAnICsgZnVuY3Rpb25OYW1lKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBhcmFtID0gbmV3IGNhbGNfMS5Tb3VyY2UoYXN0LmNoaWxkcmVuWzFdLCB0YWJsZSk7XG4gICAgfVxufVxuZXhwb3J0cy5TaW5nbGVQYXJhbUZ1bmN0aW9uQ2FsbCA9IFNpbmdsZVBhcmFtRnVuY3Rpb25DYWxsO1xuLyoqXG4gKiBTdW0gYWxsIHRoZSBjZWxscyBpbiB0aGUgaW5wdXQgdmFsdWUsIHByb2R1Y2luZyBhIHNpbmdsZSBjZWxsIG91dHB1dC5cbiAqL1xuY29uc3Qgc3VtID0gKHZhbHVlKSA9PiB7XG4gICAgY29uc3QgdG90YWwgPSB2YWx1ZS52YWwucmVkdWNlKChydW5uaW5nVG90YWwsIGN1cnJlbnRSb3cpID0+IGN1cnJlbnRSb3cucmVkdWNlKChyb3dUb3RhbCwgY3VycmVudENlbGwpID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudENlbGxWYWx1ZSA9ICgwLCByZXN1bHRzXzEuRmxvYXRPck1pbGxpc2Vjb25kcykoY3VycmVudENlbGwpO1xuICAgICAgICByZXR1cm4gY3VycmVudENlbGxWYWx1ZS5hZGQocm93VG90YWwpO1xuICAgIH0sIHJ1bm5pbmdUb3RhbCksIG5ldyBkZWNpbWFsX2pzXzEuZGVmYXVsdCgwKSk7XG4gICAgcmV0dXJuIG5ldyByZXN1bHRzXzEuVmFsdWUoW1t0b3RhbC50b1N0cmluZygpXV0pO1xufTtcbi8qKlxuICogTWVhbiBvZiBhbGwgdGhlIGNlbGxzIGluIHRoZSBpbnB1dCB2YWx1ZSwgcHJvZHVjaW5nIGEgc2luZ2xlIGNlbGwgb3V0cHV0LlxuICovXG5jb25zdCBtZWFuID0gKHZhbHVlKSA9PiB7XG4gICAgY29uc3QgeyB0b3RhbCwgY291bnQgfSA9IHZhbHVlLnZhbC5yZWR1Y2UoKHsgdG90YWw6IHJ1bm5pbmdUb3RhbDEsIGNvdW50OiBjdXJyZW50Q291bnQxIH0sIGN1cnJlbnRSb3cpID0+IGN1cnJlbnRSb3cucmVkdWNlKCh7IHRvdGFsOiBydW5uaW5nVG90YWwyLCBjb3VudDogY3VycmVudENvdW50MiB9LCBjdXJyZW50Q2VsbCkgPT4gKHtcbiAgICAgICAgdG90YWw6IHJ1bm5pbmdUb3RhbDIgKyArY3VycmVudENlbGwsXG4gICAgICAgIGNvdW50OiBjdXJyZW50Q291bnQyICsgMSxcbiAgICB9KSwgeyB0b3RhbDogcnVubmluZ1RvdGFsMSwgY291bnQ6IGN1cnJlbnRDb3VudDEgfSksIHsgdG90YWw6IDAsIGNvdW50OiAwIH0pO1xuICAgIHJldHVybiBuZXcgcmVzdWx0c18xLlZhbHVlKFtbKHRvdGFsIC8gY291bnQpLnRvU3RyaW5nKCldXSk7XG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlRva2VuRXJyb3IgPSB2b2lkIDA7XG5jbGFzcyBUb2tlbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2UsIHRva2VuKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgICB0aGlzLnRva2VuID0gdG9rZW47XG4gICAgICAgIGlmICh0b2tlbiAmJiB0b2tlbi5lcnJvcnMpXG4gICAgICAgICAgICB0b2tlbi5lcnJvcnMucHVzaCh0aGlzKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgdGhpcztcbiAgICB9XG4gICAgaW5zcGVjdCgpIHtcbiAgICAgICAgcmV0dXJuICdTeW50YXhFcnJvcjogJyArIHRoaXMubWVzc2FnZTtcbiAgICB9XG59XG5leHBvcnRzLlRva2VuRXJyb3IgPSBUb2tlbkVycm9yO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VG9rZW5FcnJvci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8vIGh0dHBzOi8vd3d3Lmljcy51Y2kuZWR1L35wYXR0aXMvSUNTLTMzL2xlY3R1cmVzL2VibmYucGRmXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlBhcnNlciA9IGV4cG9ydHMuZmluZFJ1bGVCeU5hbWUgPSBleHBvcnRzLnBhcnNlUnVsZU5hbWUgPSBleHBvcnRzLmVzY2FwZVJlZ0V4cCA9IGV4cG9ydHMucmVhZFRva2VuID0gdm9pZCAwO1xuY29uc3QgVVBQRVJfU05BS0VfUkUgPSAvXltBLVowLTlfXSskLztcbmNvbnN0IGRlY29yYXRpb25SRSA9IC8oXFw/fFxcK3xcXCopJC87XG5jb25zdCBwcmVEZWNvcmF0aW9uUkUgPSAvXihAfCZ8ISkvO1xuY29uc3QgV1NfUlVMRSA9ICdXUyc7XG5jb25zdCBUb2tlbkVycm9yXzEgPSByZXF1aXJlKFwiLi9Ub2tlbkVycm9yXCIpO1xuZnVuY3Rpb24gcmVhZFRva2VuKHR4dCwgZXhwcikge1xuICAgIGxldCByZXN1bHQgPSBleHByLmV4ZWModHh0KTtcbiAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5pbmRleCA9PSAwKSB7XG4gICAgICAgIGlmIChyZXN1bHRbMF0ubGVuZ3RoID09IDAgJiYgZXhwci5zb3VyY2UubGVuZ3RoID4gMClcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgICAgICAgIHRleHQ6IHJlc3VsdFswXSxcbiAgICAgICAgICAgIHJlc3Q6IHR4dC5zdWJzdHIocmVzdWx0WzBdLmxlbmd0aCksXG4gICAgICAgICAgICBzdGFydDogMCxcbiAgICAgICAgICAgIGVuZDogcmVzdWx0WzBdLmxlbmd0aCAtIDEsXG4gICAgICAgICAgICBmdWxsVGV4dDogcmVzdWx0WzBdLFxuICAgICAgICAgICAgZXJyb3JzOiBbXSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgICAgIHBhcmVudDogbnVsbFxuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbmV4cG9ydHMucmVhZFRva2VuID0gcmVhZFRva2VuO1xuZnVuY3Rpb24gZXNjYXBlUmVnRXhwKHN0cikge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvW1xcLVxcW1xcXVxcL1xce1xcfVxcKFxcKVxcKlxcK1xcP1xcLlxcXFxcXF5cXCRcXHxdL2csICdcXFxcJCYnKTtcbn1cbmV4cG9ydHMuZXNjYXBlUmVnRXhwID0gZXNjYXBlUmVnRXhwO1xuZnVuY3Rpb24gZml4UmVzdCh0b2tlbikge1xuICAgIHRva2VuLnJlc3QgPSAnJztcbiAgICB0b2tlbi5jaGlsZHJlbiAmJiB0b2tlbi5jaGlsZHJlbi5mb3JFYWNoKGMgPT4gZml4UmVzdChjKSk7XG59XG5mdW5jdGlvbiBmaXhQb3NpdGlvbnModG9rZW4sIHN0YXJ0KSB7XG4gICAgdG9rZW4uc3RhcnQgKz0gc3RhcnQ7XG4gICAgdG9rZW4uZW5kICs9IHN0YXJ0O1xuICAgIHRva2VuLmNoaWxkcmVuICYmIHRva2VuLmNoaWxkcmVuLmZvckVhY2goYyA9PiBmaXhQb3NpdGlvbnMoYywgdG9rZW4uc3RhcnQpKTtcbn1cbmZ1bmN0aW9uIGFncmVnYXRlRXJyb3JzKGVycm9ycywgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4uZXJyb3JzICYmIHRva2VuLmVycm9ycy5sZW5ndGgpXG4gICAgICAgIHRva2VuLmVycm9ycy5mb3JFYWNoKGVyciA9PiBlcnJvcnMucHVzaChlcnIpKTtcbiAgICB0b2tlbi5jaGlsZHJlbiAmJiB0b2tlbi5jaGlsZHJlbi5mb3JFYWNoKHRvayA9PiBhZ3JlZ2F0ZUVycm9ycyhlcnJvcnMsIHRvaykpO1xufVxuZnVuY3Rpb24gcGFyc2VSdWxlTmFtZShuYW1lKSB7XG4gICAgbGV0IHBvc3REZWNvcmF0aW9uID0gZGVjb3JhdGlvblJFLmV4ZWMobmFtZSk7XG4gICAgbGV0IHByZURlY29yYXRpb24gPSBwcmVEZWNvcmF0aW9uUkUuZXhlYyhuYW1lKTtcbiAgICBsZXQgcG9zdERlY29yYXRpb25UZXh0ID0gKHBvc3REZWNvcmF0aW9uICYmIHBvc3REZWNvcmF0aW9uWzBdKSB8fCAnJztcbiAgICBsZXQgcHJlRGVjb3JhdGlvblRleHQgPSAocHJlRGVjb3JhdGlvbiAmJiBwcmVEZWNvcmF0aW9uWzBdKSB8fCAnJztcbiAgICBsZXQgb3V0ID0ge1xuICAgICAgICByYXc6IG5hbWUsXG4gICAgICAgIG5hbWU6IG5hbWUucmVwbGFjZShkZWNvcmF0aW9uUkUsICcnKS5yZXBsYWNlKHByZURlY29yYXRpb25SRSwgJycpLFxuICAgICAgICBpc09wdGlvbmFsOiBwb3N0RGVjb3JhdGlvblRleHQgPT0gJz8nIHx8IHBvc3REZWNvcmF0aW9uVGV4dCA9PSAnKicsXG4gICAgICAgIGFsbG93UmVwZXRpdGlvbjogcG9zdERlY29yYXRpb25UZXh0ID09ICcrJyB8fCBwb3N0RGVjb3JhdGlvblRleHQgPT0gJyonLFxuICAgICAgICBhdExlYXN0T25lOiBwb3N0RGVjb3JhdGlvblRleHQgPT0gJysnLFxuICAgICAgICBsb29rdXBQb3NpdGl2ZTogcHJlRGVjb3JhdGlvblRleHQgPT0gJyYnLFxuICAgICAgICBsb29rdXBOZWdhdGl2ZTogcHJlRGVjb3JhdGlvblRleHQgPT0gJyEnLFxuICAgICAgICBwaW5uZWQ6IHByZURlY29yYXRpb25UZXh0ID09ICdAJyxcbiAgICAgICAgbG9va3VwOiBmYWxzZSxcbiAgICAgICAgaXNMaXRlcmFsOiBmYWxzZVxuICAgIH07XG4gICAgb3V0LmlzTGl0ZXJhbCA9IG91dC5uYW1lWzBdID09IFwiJ1wiIHx8IG91dC5uYW1lWzBdID09ICdcIic7XG4gICAgb3V0Lmxvb2t1cCA9IG91dC5sb29rdXBOZWdhdGl2ZSB8fCBvdXQubG9va3VwUG9zaXRpdmU7XG4gICAgcmV0dXJuIG91dDtcbn1cbmV4cG9ydHMucGFyc2VSdWxlTmFtZSA9IHBhcnNlUnVsZU5hbWU7XG5mdW5jdGlvbiBmaW5kUnVsZUJ5TmFtZShuYW1lLCBwYXJzZXIpIHtcbiAgICBsZXQgcGFyc2VkID0gcGFyc2VSdWxlTmFtZShuYW1lKTtcbiAgICByZXR1cm4gcGFyc2VyLmNhY2hlZFJ1bGVzW3BhcnNlZC5uYW1lXSB8fCBudWxsO1xufVxuZXhwb3J0cy5maW5kUnVsZUJ5TmFtZSA9IGZpbmRSdWxlQnlOYW1lO1xuLy8vIFJlbW92ZXMgYWxsIHRoZSBub2RlcyBzdGFydGluZyB3aXRoICdSVUxFXydcbmZ1bmN0aW9uIHN0cmlwUnVsZXModG9rZW4sIHJlKSB7XG4gICAgaWYgKHRva2VuLmNoaWxkcmVuKSB7XG4gICAgICAgIGxldCBsb2NhbFJ1bGVzID0gdG9rZW4uY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlICYmIHJlLnRlc3QoeC50eXBlKSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbG9jYWxSdWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IGluZGV4T25DaGlsZHJlbiA9IHRva2VuLmNoaWxkcmVuLmluZGV4T2YobG9jYWxSdWxlc1tpXSk7XG4gICAgICAgICAgICBpZiAoaW5kZXhPbkNoaWxkcmVuICE9IC0xKSB7XG4gICAgICAgICAgICAgICAgdG9rZW4uY2hpbGRyZW4uc3BsaWNlKGluZGV4T25DaGlsZHJlbiwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdG9rZW4uY2hpbGRyZW4uZm9yRWFjaChjID0+IHN0cmlwUnVsZXMoYywgcmUpKTtcbiAgICB9XG59XG5jb25zdCBpZ25vcmVNaXNzaW5nUnVsZXMgPSBbJ0VPRiddO1xuY2xhc3MgUGFyc2VyIHtcbiAgICBjb25zdHJ1Y3RvcihncmFtbWFyUnVsZXMsIG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5ncmFtbWFyUnVsZXMgPSBncmFtbWFyUnVsZXM7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIHRoaXMuY2FjaGVkUnVsZXMgPSB7fTtcbiAgICAgICAgdGhpcy5kZWJ1ZyA9IG9wdGlvbnMgPyBvcHRpb25zLmRlYnVnID09PSB0cnVlIDogZmFsc2U7XG4gICAgICAgIGxldCBlcnJvcnMgPSBbXTtcbiAgICAgICAgbGV0IG5lZWRlZFJ1bGVzID0gW107XG4gICAgICAgIGdyYW1tYXJSdWxlcy5mb3JFYWNoKHJ1bGUgPT4ge1xuICAgICAgICAgICAgbGV0IHBhcnNlZE5hbWUgPSBwYXJzZVJ1bGVOYW1lKHJ1bGUubmFtZSk7XG4gICAgICAgICAgICBpZiAocGFyc2VkTmFtZS5uYW1lIGluIHRoaXMuY2FjaGVkUnVsZXMpIHtcbiAgICAgICAgICAgICAgICBlcnJvcnMucHVzaCgnRHVwbGljYXRlZCBydWxlICcgKyBwYXJzZWROYW1lLm5hbWUpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVkUnVsZXNbcGFyc2VkTmFtZS5uYW1lXSA9IHJ1bGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXJ1bGUuYm5mIHx8ICFydWxlLmJuZi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IgPSAnTWlzc2luZyBydWxlIGNvbnRlbnQsIHJ1bGU6ICcgKyBydWxlLm5hbWU7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9ycy5pbmRleE9mKGVycm9yKSA9PSAtMSlcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzLnB1c2goZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcnVsZS5ibmYuZm9yRWFjaChvcHRpb25zID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBhcnNlZCA9IHBhcnNlUnVsZU5hbWUob3B0aW9uc1swXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VkLm5hbWUgPT0gcnVsZS5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yID0gJ0xlZnQgcmVjdXJzaW9uIGlzIG5vdCBhbGxvd2VkLCBydWxlOiAnICsgcnVsZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcnMuaW5kZXhPZihlcnJvcikgPT0gLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBwYXJzZVJ1bGVOYW1lKG9wdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFuYW1lLmlzTGl0ZXJhbCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkZWRSdWxlcy5pbmRleE9mKG5hbWUubmFtZSkgPT0gLTEgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlTWlzc2luZ1J1bGVzLmluZGV4T2YobmFtZS5uYW1lKSA9PSAtMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZGVkUnVsZXMucHVzaChuYW1lLm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChXU19SVUxFID09IHJ1bGUubmFtZSlcbiAgICAgICAgICAgICAgICBydWxlLmltcGxpY2l0V3MgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChydWxlLmltcGxpY2l0V3MpIHtcbiAgICAgICAgICAgICAgICBpZiAobmVlZGVkUnVsZXMuaW5kZXhPZihXU19SVUxFKSA9PSAtMSlcbiAgICAgICAgICAgICAgICAgICAgbmVlZGVkUnVsZXMucHVzaChXU19SVUxFKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChydWxlLnJlY292ZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAobmVlZGVkUnVsZXMuaW5kZXhPZihydWxlLnJlY292ZXIpID09IC0xKVxuICAgICAgICAgICAgICAgICAgICBuZWVkZWRSdWxlcy5wdXNoKHJ1bGUucmVjb3Zlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBuZWVkZWRSdWxlcy5mb3JFYWNoKHJ1bGVOYW1lID0+IHtcbiAgICAgICAgICAgIGlmICghKHJ1bGVOYW1lIGluIHRoaXMuY2FjaGVkUnVsZXMpKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JzLnB1c2goJ01pc3NpbmcgcnVsZSAnICsgcnVsZU5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGVycm9ycy5sZW5ndGgpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JzLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gICAgZ2V0QVNUKHR4dCwgdGFyZ2V0KSB7XG4gICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICB0YXJnZXQgPSB0aGlzLmdyYW1tYXJSdWxlcy5maWx0ZXIoeCA9PiAheC5mcmFnbWVudCAmJiB4Lm5hbWUuaW5kZXhPZignJScpICE9IDApWzBdLm5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMucGFyc2UodHh0LCB0YXJnZXQpO1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICBhZ3JlZ2F0ZUVycm9ycyhyZXN1bHQuZXJyb3JzLCByZXN1bHQpO1xuICAgICAgICAgICAgZml4UG9zaXRpb25zKHJlc3VsdCwgMCk7XG4gICAgICAgICAgICAvLyBSRU1PVkUgQUxMIFRIRSBUQUdTIE1BVENISU5HIC9eJS9cbiAgICAgICAgICAgIHN0cmlwUnVsZXMocmVzdWx0LCAvXiUvKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5vcHRpb25zIHx8ICF0aGlzLm9wdGlvbnMua2VlcFVwcGVyUnVsZXMpXG4gICAgICAgICAgICAgICAgc3RyaXBSdWxlcyhyZXN1bHQsIFVQUEVSX1NOQUtFX1JFKTtcbiAgICAgICAgICAgIGxldCByZXN0ID0gcmVzdWx0LnJlc3Q7XG4gICAgICAgICAgICBpZiAocmVzdCkge1xuICAgICAgICAgICAgICAgIG5ldyBUb2tlbkVycm9yXzEuVG9rZW5FcnJvcignVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQ6IFxcbicgKyByZXN0LCByZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZml4UmVzdChyZXN1bHQpO1xuICAgICAgICAgICAgcmVzdWx0LnJlc3QgPSByZXN0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGVtaXRTb3VyY2UoKSB7XG4gICAgICAgIHJldHVybiAnQ0FOTk9UIEVNSVQgU09VUkNFIEZST00gQkFTRSBQYXJzZXInO1xuICAgIH1cbiAgICBwYXJzZSh0eHQsIHRhcmdldCwgcmVjdXJzaW9uID0gMCkge1xuICAgICAgICBsZXQgb3V0ID0gbnVsbDtcbiAgICAgICAgbGV0IHR5cGUgPSBwYXJzZVJ1bGVOYW1lKHRhcmdldCk7XG4gICAgICAgIGxldCBleHByO1xuICAgICAgICBsZXQgcHJpbnRhYmxlID0gdGhpcy5kZWJ1ZyAmJiAvKiFpc0xpdGVyYWwgJiovICFVUFBFUl9TTkFLRV9SRS50ZXN0KHR5cGUubmFtZSk7XG4gICAgICAgIHByaW50YWJsZSAmJlxuICAgICAgICAgICAgY29uc29sZS5sb2cobmV3IEFycmF5KHJlY3Vyc2lvbikuam9pbign4pSCICAnKSArICdUcnlpbmcgdG8gZ2V0ICcgKyB0YXJnZXQgKyAnIGZyb20gJyArIEpTT04uc3RyaW5naWZ5KHR4dC5zcGxpdCgnXFxuJylbMF0pKTtcbiAgICAgICAgbGV0IHJlYWxUeXBlID0gdHlwZS5uYW1lO1xuICAgICAgICBsZXQgdGFyZ2V0TGV4ID0gZmluZFJ1bGVCeU5hbWUodHlwZS5uYW1lLCB0aGlzKTtcbiAgICAgICAgaWYgKHR5cGUubmFtZSA9PSAnRU9GJykge1xuICAgICAgICAgICAgaWYgKHR4dC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHR4dC5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdFT0YnLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgcmVzdDogJycsXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0OiAwLFxuICAgICAgICAgICAgICAgICAgICBlbmQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIGZ1bGxUZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IG51bGxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoIXRhcmdldExleCAmJiB0eXBlLmlzTGl0ZXJhbCkge1xuICAgICAgICAgICAgICAgIGxldCBzcmMgPSB0eXBlLm5hbWUudHJpbSgpO1xuICAgICAgICAgICAgICAgIGlmIChzcmMuc3RhcnRzV2l0aCgnXCInKSkge1xuICAgICAgICAgICAgICAgICAgICBzcmMgPSBKU09OLnBhcnNlKHNyYyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNyYy5zdGFydHNXaXRoKFwiJ1wiKSkge1xuICAgICAgICAgICAgICAgICAgICBzcmMgPSBzcmMucmVwbGFjZSgvXicoLispJyQvLCAnJDEnKS5yZXBsYWNlKC9cXFxcJy9nLCBcIidcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzcmMgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnJSVFTVBUWSUlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdDogdHh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBmdWxsVGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGV4cHIgPSBuZXcgUmVnRXhwKGVzY2FwZVJlZ0V4cChzcmMpKTtcbiAgICAgICAgICAgICAgICByZWFsVHlwZSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgUmVmZXJlbmNlRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV4cHIpIHtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSByZWFkVG9rZW4odHh0LCBleHByKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQudHlwZSA9IHJlYWxUeXBlO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgb3B0aW9ucyA9IHRhcmdldExleC5ibmY7XG4gICAgICAgICAgICBpZiAob3B0aW9ucyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5mb3JFYWNoKHBoYXNlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvdXQpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIGxldCBwaW5uZWQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdG1wID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgZnVsbFRleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN0OiB0eHRcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldExleC5mcmFnbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgIHRtcC5mcmFnbWVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0bXBUeHQgPSB0eHQ7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGxldCBhbGxPcHRpb25hbCA9IHBoYXNlcy5sZW5ndGggPiAwO1xuICAgICAgICAgICAgICAgICAgICBsZXQgZm91bmRTb21ldGhpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwaGFzZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcGhhc2VzW2ldID09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvY2FsVGFyZ2V0ID0gcGFyc2VSdWxlTmFtZShwaGFzZXNbaV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbE9wdGlvbmFsID0gYWxsT3B0aW9uYWwgJiYgbG9jYWxUYXJnZXQuaXNPcHRpb25hbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZ290O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmb3VuZEF0TGVhc3RPbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRMZXguaW1wbGljaXRXcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290ID0gdGhpcy5wYXJzZSh0bXBUeHQsIGxvY2FsVGFyZ2V0Lm5hbWUsIHJlY3Vyc2lvbiArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFnb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgV1M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXUyA9IHRoaXMucGFyc2UodG1wVHh0LCBXU19SVUxFLCByZWN1cnNpb24gKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFdTKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAudGV4dCA9IHRtcC50ZXh0ICsgV1MudGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcC5lbmQgPSB0bXAudGV4dC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXUy5wYXJlbnQgPSB0bXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAuY2hpbGRyZW4ucHVzaChXUyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBUeHQgPSB0bXBUeHQuc3Vic3RyKFdTLnRleHQubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uICs9IFdTLnRleHQubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChXUyAmJiBXUy50ZXh0Lmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290ID0gZ290IHx8IHRoaXMucGFyc2UodG1wVHh0LCBsb2NhbFRhcmdldC5uYW1lLCByZWN1cnNpb24gKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcnVsZSA6Oj0gXCJ0cnVlXCIgIVthLXpBLVpdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5lZ2F0aXZlIGxvb2t1cCwgaWYgaXQgZG9lcyBub3QgbWF0Y2gsIHdlIHNob3VsZCBjb250aW51ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxUYXJnZXQubG9va3VwTmVnYXRpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnb3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIGNhbmNlbCB0aGlzIHBhdGggKi87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxUYXJnZXQubG9va3VwUG9zaXRpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZ290KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWdvdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsVGFyZ2V0LmlzT3B0aW9uYWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxUYXJnZXQuYXRMZWFzdE9uZSAmJiBmb3VuZEF0TGVhc3RPbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdvdCAmJiB0YXJnZXRMZXgucGlubmVkID09IGkgKyAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5uZWQgPSBnb3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGFibGUgJiYgY29uc29sZS5sb2cobmV3IEFycmF5KHJlY3Vyc2lvbiArIDEpLmpvaW4oJ+KUgiAgJykgKyAn4pSU4pSAICcgKyBnb3QudHlwZSArICcgUElOTkVEJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFnb3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3QgPSB0aGlzLnBhcnNlUmVjb3ZlcnkodGFyZ2V0TGV4LCB0bXBUeHQsIHJlY3Vyc2lvbiArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWdvdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBpbm5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IHRtcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3QgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdTeW50YXhFcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHRtcFR4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IHRtcFR4dC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yczogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxUZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdDogJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXBUeHQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUb2tlbkVycm9yXzEuVG9rZW5FcnJvcihgVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQuIEV4cGVjdGluZyAke2xvY2FsVGFyZ2V0Lm5hbWV9IEdvdDogJHt0bXBUeHR9YCwgZ290KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUb2tlbkVycm9yXzEuVG9rZW5FcnJvcihgVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQuIE1pc3NpbmcgJHtsb2NhbFRhcmdldC5uYW1lfWAsIGdvdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50YWJsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhuZXcgQXJyYXkocmVjdXJzaW9uICsgMSkuam9pbign4pSCICAnKSArICfilJTilIAgJyArIGdvdC50eXBlICsgJyAnICsgSlNPTi5zdHJpbmdpZnkoZ290LnRleHQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEF0TGVhc3RPbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZFNvbWV0aGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnb3QudHlwZSA9PSAnJSVFTVBUWSUlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290LnN0YXJ0ICs9IHBvc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3QuZW5kICs9IHBvc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxvY2FsVGFyZ2V0Lmxvb2t1cFBvc2l0aXZlICYmIGdvdC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ290LmZyYWdtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290LmNoaWxkcmVuICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdC5jaGlsZHJlbi5mb3JFYWNoKHggPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5zdGFydCArPSBwb3NpdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHguZW5kICs9IHBvc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5wYXJlbnQgPSB0bXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAuY2hpbGRyZW4ucHVzaCh4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3QucGFyZW50ID0gdG1wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcC5jaGlsZHJlbi5wdXNoKGdvdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsVGFyZ2V0Lmxvb2t1cClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdC5sb29rdXAgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGFibGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG5ldyBBcnJheShyZWN1cnNpb24gKyAxKS5qb2luKCfilIIgICcpICsgJ+KUlOKUgCAnICsgZ290LnR5cGUgKyAnICcgKyBKU09OLnN0cmluZ2lmeShnb3QudGV4dCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFYXQgaXQgZnJvbSB0aGUgaW5wdXQgc3RyZWFtLCBvbmx5IGlmIGl0IGlzIG5vdCBhIGxvb2t1cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxvY2FsVGFyZ2V0Lmxvb2t1cCAmJiAhZ290Lmxvb2t1cCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wLnRleHQgPSB0bXAudGV4dCArIGdvdC50ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wLmVuZCA9IHRtcC50ZXh0Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcFR4dCA9IHRtcFR4dC5zdWJzdHIoZ290LnRleHQubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uICs9IGdvdC50ZXh0Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAucmVzdCA9IHRtcFR4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChnb3QgJiYgbG9jYWxUYXJnZXQuYWxsb3dSZXBldGl0aW9uICYmIHRtcFR4dC5sZW5ndGggJiYgIWdvdC5sb29rdXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSAvKiBJUyBBIFJFR0VYUCAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdvdCA9IHJlYWRUb2tlbih0bXBUeHQsIHBoYXNlc1tpXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFnb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGFibGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cobmV3IEFycmF5KHJlY3Vyc2lvbiArIDEpLmpvaW4oJ+KUgiAgJykgKyAn4pSUPiAnICsgSlNPTi5zdHJpbmdpZnkoZ290LnRleHQpICsgcGhhc2VzW2ldLnNvdXJjZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRTb21ldGhpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdC5zdGFydCArPSBwb3NpdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3QuZW5kICs9IHBvc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcC50ZXh0ID0gdG1wLnRleHQgKyBnb3QudGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAuZW5kID0gdG1wLnRleHQubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcFR4dCA9IHRtcFR4dC5zdWJzdHIoZ290LnRleHQubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiArPSBnb3QudGV4dC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wLnJlc3QgPSB0bXBUeHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kU29tZXRoaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSB0bXA7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmludGFibGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhuZXcgQXJyYXkocmVjdXJzaW9uKS5qb2luKCfilIIgICcpICsgJ+KUnDzilIDilLQ8IFBVU0hJTkcgJyArIG91dC50eXBlICsgJyAnICsgSlNPTi5zdHJpbmdpZnkob3V0LnRleHQpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG91dCAmJiB0YXJnZXRMZXguc2ltcGxpZnlXaGVuT25lQ2hpbGRyZW4gJiYgb3V0LmNoaWxkcmVuLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgICAgICAgICAgb3V0ID0gb3V0LmNoaWxkcmVuWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghb3V0KSB7XG4gICAgICAgICAgICBwcmludGFibGUgJiYgY29uc29sZS5sb2codGFyZ2V0ICsgJyBOT1QgUkVTT0xWRUQgRlJPTSAnICsgdHh0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cbiAgICBwYXJzZVJlY292ZXJ5KHJlY292ZXJhYmxlVG9rZW4sIHRtcFR4dCwgcmVjdXJzaW9uKSB7XG4gICAgICAgIGlmIChyZWNvdmVyYWJsZVRva2VuLnJlY292ZXIgJiYgdG1wVHh0Lmxlbmd0aCkge1xuICAgICAgICAgICAgbGV0IHByaW50YWJsZSA9IHRoaXMuZGVidWc7XG4gICAgICAgICAgICBwcmludGFibGUgJiZcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhuZXcgQXJyYXkocmVjdXJzaW9uICsgMSkuam9pbign4pSCICAnKSArXG4gICAgICAgICAgICAgICAgICAgICdUcnlpbmcgdG8gcmVjb3ZlciB1bnRpbCB0b2tlbiAnICtcbiAgICAgICAgICAgICAgICAgICAgcmVjb3ZlcmFibGVUb2tlbi5yZWNvdmVyICtcbiAgICAgICAgICAgICAgICAgICAgJyBmcm9tICcgK1xuICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh0bXBUeHQuc3BsaXQoJ1xcbicpWzBdICsgdG1wVHh0LnNwbGl0KCdcXG4nKVsxXSkpO1xuICAgICAgICAgICAgbGV0IHRtcCA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnU3ludGF4RXJyb3InLFxuICAgICAgICAgICAgICAgIHRleHQ6ICcnLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgICAgICAgICBlbmQ6IDAsXG4gICAgICAgICAgICAgICAgZXJyb3JzOiBbXSxcbiAgICAgICAgICAgICAgICBmdWxsVGV4dDogJycsXG4gICAgICAgICAgICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgICAgICAgICAgIHN0YXJ0OiAwLFxuICAgICAgICAgICAgICAgIHJlc3Q6ICcnXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbGV0IGdvdDtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICBnb3QgPSB0aGlzLnBhcnNlKHRtcFR4dCwgcmVjb3ZlcmFibGVUb2tlbi5yZWNvdmVyLCByZWN1cnNpb24gKyAxKTtcbiAgICAgICAgICAgICAgICBpZiAoZ290KSB7XG4gICAgICAgICAgICAgICAgICAgIG5ldyBUb2tlbkVycm9yXzEuVG9rZW5FcnJvcignVW5leHBlY3RlZCBpbnB1dDogXCInICsgdG1wLnRleHQgKyBgXCIgRXhwZWN0aW5nOiAke3JlY292ZXJhYmxlVG9rZW4ubmFtZX1gLCB0bXApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRtcC50ZXh0ID0gdG1wLnRleHQgKyB0bXBUeHRbMF07XG4gICAgICAgICAgICAgICAgICAgIHRtcC5lbmQgPSB0bXAudGV4dC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHRtcFR4dCA9IHRtcFR4dC5zdWJzdHIoMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSB3aGlsZSAoIWdvdCAmJiB0bXBUeHQubGVuZ3RoID4gMCk7XG4gICAgICAgICAgICBpZiAodG1wLnRleHQubGVuZ3RoID4gMCAmJiBnb3QpIHtcbiAgICAgICAgICAgICAgICBwcmludGFibGUgJiYgY29uc29sZS5sb2cobmV3IEFycmF5KHJlY3Vyc2lvbiArIDEpLmpvaW4oJ+KUgiAgJykgKyAnUmVjb3ZlcmVkIHRleHQ6ICcgKyBKU09OLnN0cmluZ2lmeSh0bXAudGV4dCkpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0bXA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuZXhwb3J0cy5QYXJzZXIgPSBQYXJzZXI7XG5leHBvcnRzLmRlZmF1bHQgPSBQYXJzZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1QYXJzZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmZpbmRDaGlsZHJlbkJ5VHlwZSA9IHZvaWQgMDtcbi8qKlxuICogRmluZHMgYWxsIHRoZSBkaXJlY3QgY2hpbGRzIG9mIGEgc3BlY2lmeWVkIHR5cGVcbiAqL1xuZnVuY3Rpb24gZmluZENoaWxkcmVuQnlUeXBlKHRva2VuLCB0eXBlKSB7XG4gICAgcmV0dXJuIHRva2VuLmNoaWxkcmVuID8gdG9rZW4uY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlID09IHR5cGUpIDogW107XG59XG5leHBvcnRzLmZpbmRDaGlsZHJlbkJ5VHlwZSA9IGZpbmRDaGlsZHJlbkJ5VHlwZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNlbWFudGljSGVscGVycy5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JhY2t1cyVFMiU4MCU5M05hdXJfRm9ybVxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLypcbnN5bnRheCA6Oj0gUlVMRV9FT0wqIHJ1bGUrXG5ydWxlIDo6PSBcIiBcIiogXCI8XCIgcnVsZS1uYW1lIFwiPlwiIFwiIFwiKiBcIjo6PVwiIGZpcnN0RXhwcmVzc2lvbiBvdGhlckV4cHJlc3Npb24qIFwiIFwiKiBSVUxFX0VPTCsgXCIgXCIqXG5maXJzdEV4cHJlc3Npb24gOjo9IFwiIFwiKiBsaXN0XG5vdGhlckV4cHJlc3Npb24gOjo9IFwiIFwiKiBcInxcIiBcIiBcIiogbGlzdFxuUlVMRV9FT0wgOjo9IFwiXFxyXCIgfCBcIlxcblwiXG5saXN0IDo6PSB0ZXJtIFwiIFwiKiBsaXN0IHwgdGVybVxudGVybSA6Oj0gbGl0ZXJhbCB8IFwiPFwiIHJ1bGUtbmFtZSBcIj5cIlxubGl0ZXJhbCA6Oj0gJ1wiJyBSVUxFX0NIQVJBQ1RFUjEqICdcIicgfCBcIidcIiBSVUxFX0NIQVJBQ1RFUjIqIFwiJ1wiXG5SVUxFX0NIQVJBQ1RFUiA6Oj0gXCIgXCIgfCBSVUxFX0xFVFRFUiB8IFJVTEVfRElHSVQgfCBSVUxFX1NZTUJPTFxuUlVMRV9MRVRURVIgOjo9IFwiQVwiIHwgXCJCXCIgfCBcIkNcIiB8IFwiRFwiIHwgXCJFXCIgfCBcIkZcIiB8IFwiR1wiIHwgXCJIXCIgfCBcIklcIiB8IFwiSlwiIHwgXCJLXCIgfCBcIkxcIiB8IFwiTVwiIHwgXCJOXCIgfCBcIk9cIiB8IFwiUFwiIHwgXCJRXCIgfCBcIlJcIiB8IFwiU1wiIHwgXCJUXCIgfCBcIlVcIiB8IFwiVlwiIHwgXCJXXCIgfCBcIlhcIiB8IFwiWVwiIHwgXCJaXCIgfCBcImFcIiB8IFwiYlwiIHwgXCJjXCIgfCBcImRcIiB8IFwiZVwiIHwgXCJmXCIgfCBcImdcIiB8IFwiaFwiIHwgXCJpXCIgfCBcImpcIiB8IFwia1wiIHwgXCJsXCIgfCBcIm1cIiB8IFwiblwiIHwgXCJvXCIgfCBcInBcIiB8IFwicVwiIHwgXCJyXCIgfCBcInNcIiB8IFwidFwiIHwgXCJ1XCIgfCBcInZcIiB8IFwid1wiIHwgXCJ4XCIgfCBcInlcIiB8IFwielwiXG5SVUxFX0RJR0lUIDo6PSBcIjBcIiB8IFwiMVwiIHwgXCIyXCIgfCBcIjNcIiB8IFwiNFwiIHwgXCI1XCIgfCBcIjZcIiB8IFwiN1wiIHwgXCI4XCIgfCBcIjlcIlxuUlVMRV9TWU1CT0wgOjo9IFwiLVwiIHwgXCJfXCIgfCBcIiFcIiB8IFwiI1wiIHwgXCIkXCIgfCBcIiVcIiB8IFwiJlwiIHwgXCIoXCIgfCBcIilcIiB8IFwiKlwiIHwgXCIrXCIgfCBcIixcIiB8IFwiLVwiIHwgXCIuXCIgfCBcIi9cIiB8IFwiOlwiIHwgXCI7XCIgfCBcIjxcIiB8IFwiPVwiIHwgXCI+XCIgfCBcIj9cIiB8IFwiQFwiIHwgXCJbXCIgfCBcIlxcXCIgfCBcIl1cIiB8IFwiXlwiIHwgXCJfXCIgfCBcImBcIiB8IFwie1wiIHwgXCJ8XCIgfCBcIn1cIiB8IFwiflwiXG5SVUxFX0NIQVJBQ1RFUjEgOjo9IFJVTEVfQ0hBUkFDVEVSIHwgXCInXCJcblJVTEVfQ0hBUkFDVEVSMiA6Oj0gUlVMRV9DSEFSQUNURVIgfCAnXCInXG5ydWxlLW5hbWUgOjo9IFJVTEVfTEVUVEVSIFJVTEVfQ0hBUipcblJVTEVfQ0hBUiA6Oj0gUlVMRV9MRVRURVIgfCBSVUxFX0RJR0lUIHwgXCJfXCIgfCBcIi1cIlxuKi9cbmNvbnN0IFNlbWFudGljSGVscGVyc18xID0gcmVxdWlyZShcIi4uL1NlbWFudGljSGVscGVyc1wiKTtcbmNvbnN0IFBhcnNlcl8xID0gcmVxdWlyZShcIi4uL1BhcnNlclwiKTtcbnZhciBCTkY7XG4oZnVuY3Rpb24gKEJORikge1xuICAgIEJORi5SVUxFUyA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3N5bnRheCcsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfRU9MKicsICdydWxlKyddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAncnVsZScsXG4gICAgICAgICAgICBibmY6IFtcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICdcIiBcIionLFxuICAgICAgICAgICAgICAgICAgICAnXCI8XCInLFxuICAgICAgICAgICAgICAgICAgICAncnVsZS1uYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgJ1wiPlwiJyxcbiAgICAgICAgICAgICAgICAgICAgJ1wiIFwiKicsXG4gICAgICAgICAgICAgICAgICAgICdcIjo6PVwiJyxcbiAgICAgICAgICAgICAgICAgICAgJ2ZpcnN0RXhwcmVzc2lvbicsXG4gICAgICAgICAgICAgICAgICAgICdvdGhlckV4cHJlc3Npb24qJyxcbiAgICAgICAgICAgICAgICAgICAgJ1wiIFwiKicsXG4gICAgICAgICAgICAgICAgICAgICdSVUxFX0VPTCsnLFxuICAgICAgICAgICAgICAgICAgICAnXCIgXCIqJ1xuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2ZpcnN0RXhwcmVzc2lvbicsXG4gICAgICAgICAgICBibmY6IFtbJ1wiIFwiKicsICdsaXN0J11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdvdGhlckV4cHJlc3Npb24nLFxuICAgICAgICAgICAgYm5mOiBbWydcIiBcIionLCAnXCJ8XCInLCAnXCIgXCIqJywgJ2xpc3QnXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfRU9MJyxcbiAgICAgICAgICAgIGJuZjogW1snXCJcXFxcclwiJ10sIFsnXCJcXFxcblwiJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdsaXN0JyxcbiAgICAgICAgICAgIGJuZjogW1sndGVybScsICdcIiBcIionLCAnbGlzdCddLCBbJ3Rlcm0nXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3Rlcm0nLFxuICAgICAgICAgICAgYm5mOiBbWydsaXRlcmFsJ10sIFsnXCI8XCInLCAncnVsZS1uYW1lJywgJ1wiPlwiJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdsaXRlcmFsJyxcbiAgICAgICAgICAgIGJuZjogW1tgJ1wiJ2AsICdSVUxFX0NIQVJBQ1RFUjEqJywgYCdcIidgXSwgW2BcIidcImAsICdSVUxFX0NIQVJBQ1RFUjIqJywgYFwiJ1wiYF1dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdSVUxFX0NIQVJBQ1RFUicsXG4gICAgICAgICAgICBibmY6IFtbJ1wiIFwiJ10sIFsnUlVMRV9MRVRURVInXSwgWydSVUxFX0RJR0lUJ10sIFsnUlVMRV9TWU1CT0wnXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfTEVUVEVSJyxcbiAgICAgICAgICAgIGJuZjogW1xuICAgICAgICAgICAgICAgIFsnXCJBXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiQlwiJ10sXG4gICAgICAgICAgICAgICAgWydcIkNcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJEXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiRVwiJ10sXG4gICAgICAgICAgICAgICAgWydcIkZcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJHXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiSFwiJ10sXG4gICAgICAgICAgICAgICAgWydcIklcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJKXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiS1wiJ10sXG4gICAgICAgICAgICAgICAgWydcIkxcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJNXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiTlwiJ10sXG4gICAgICAgICAgICAgICAgWydcIk9cIiddLFxuICAgICAgICAgICAgICAgIFsnXCJQXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiUVwiJ10sXG4gICAgICAgICAgICAgICAgWydcIlJcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJTXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiVFwiJ10sXG4gICAgICAgICAgICAgICAgWydcIlVcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJWXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiV1wiJ10sXG4gICAgICAgICAgICAgICAgWydcIlhcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJZXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiWlwiJ10sXG4gICAgICAgICAgICAgICAgWydcImFcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJiXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiY1wiJ10sXG4gICAgICAgICAgICAgICAgWydcImRcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJlXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiZlwiJ10sXG4gICAgICAgICAgICAgICAgWydcImdcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJoXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiaVwiJ10sXG4gICAgICAgICAgICAgICAgWydcImpcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJrXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wibFwiJ10sXG4gICAgICAgICAgICAgICAgWydcIm1cIiddLFxuICAgICAgICAgICAgICAgIFsnXCJuXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wib1wiJ10sXG4gICAgICAgICAgICAgICAgWydcInBcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJxXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiclwiJ10sXG4gICAgICAgICAgICAgICAgWydcInNcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJ0XCInXSxcbiAgICAgICAgICAgICAgICBbJ1widVwiJ10sXG4gICAgICAgICAgICAgICAgWydcInZcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJ3XCInXSxcbiAgICAgICAgICAgICAgICBbJ1wieFwiJ10sXG4gICAgICAgICAgICAgICAgWydcInlcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJ6XCInXVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUlVMRV9ESUdJVCcsXG4gICAgICAgICAgICBibmY6IFtbJ1wiMFwiJ10sIFsnXCIxXCInXSwgWydcIjJcIiddLCBbJ1wiM1wiJ10sIFsnXCI0XCInXSwgWydcIjVcIiddLCBbJ1wiNlwiJ10sIFsnXCI3XCInXSwgWydcIjhcIiddLCBbJ1wiOVwiJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdSVUxFX1NZTUJPTCcsXG4gICAgICAgICAgICBibmY6IFtcbiAgICAgICAgICAgICAgICBbJ1wiLVwiJ10sXG4gICAgICAgICAgICAgICAgWydcIl9cIiddLFxuICAgICAgICAgICAgICAgIFsnXCIhXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiI1wiJ10sXG4gICAgICAgICAgICAgICAgWydcIiRcIiddLFxuICAgICAgICAgICAgICAgIFsnXCIlXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiJlwiJ10sXG4gICAgICAgICAgICAgICAgWydcIihcIiddLFxuICAgICAgICAgICAgICAgIFsnXCIpXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiKlwiJ10sXG4gICAgICAgICAgICAgICAgWydcIitcIiddLFxuICAgICAgICAgICAgICAgIFsnXCIsXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiLVwiJ10sXG4gICAgICAgICAgICAgICAgWydcIi5cIiddLFxuICAgICAgICAgICAgICAgIFsnXCIvXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiOlwiJ10sXG4gICAgICAgICAgICAgICAgWydcIjtcIiddLFxuICAgICAgICAgICAgICAgIFsnXCI8XCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiPVwiJ10sXG4gICAgICAgICAgICAgICAgWydcIj5cIiddLFxuICAgICAgICAgICAgICAgIFsnXCI/XCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiQFwiJ10sXG4gICAgICAgICAgICAgICAgWydcIltcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJcXFxcXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiXVwiJ10sXG4gICAgICAgICAgICAgICAgWydcIl5cIiddLFxuICAgICAgICAgICAgICAgIFsnXCJfXCInXSxcbiAgICAgICAgICAgICAgICBbJ1wiYFwiJ10sXG4gICAgICAgICAgICAgICAgWydcIntcIiddLFxuICAgICAgICAgICAgICAgIFsnXCJ8XCInXSxcbiAgICAgICAgICAgICAgICBbJ1wifVwiJ10sXG4gICAgICAgICAgICAgICAgWydcIn5cIiddXG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdSVUxFX0NIQVJBQ1RFUjEnLFxuICAgICAgICAgICAgYm5mOiBbWydSVUxFX0NIQVJBQ1RFUiddLCBbYFwiJ1wiYF1dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdSVUxFX0NIQVJBQ1RFUjInLFxuICAgICAgICAgICAgYm5mOiBbWydSVUxFX0NIQVJBQ1RFUiddLCBbYCdcIidgXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3J1bGUtbmFtZScsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfTEVUVEVSJywgJ1JVTEVfQ0hBUionXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfQ0hBUicsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfTEVUVEVSJ10sIFsnUlVMRV9ESUdJVCddLCBbJ1wiX1wiJ10sIFsnXCItXCInXV1cbiAgICAgICAgfVxuICAgIF07XG4gICAgQk5GLmRlZmF1bHRQYXJzZXIgPSBuZXcgUGFyc2VyXzEuUGFyc2VyKEJORi5SVUxFUywgeyBkZWJ1ZzogZmFsc2UgfSk7XG4gICAgZnVuY3Rpb24gZ2V0QWxsVGVybXMoZXhwcikge1xuICAgICAgICBsZXQgdGVybXMgPSBTZW1hbnRpY0hlbHBlcnNfMS5maW5kQ2hpbGRyZW5CeVR5cGUoZXhwciwgJ3Rlcm0nKS5tYXAodGVybSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gU2VtYW50aWNIZWxwZXJzXzEuZmluZENoaWxkcmVuQnlUeXBlKHRlcm0sICdsaXRlcmFsJykuY29uY2F0KFNlbWFudGljSGVscGVyc18xLmZpbmRDaGlsZHJlbkJ5VHlwZSh0ZXJtLCAncnVsZS1uYW1lJykpWzBdLnRleHQ7XG4gICAgICAgIH0pO1xuICAgICAgICBTZW1hbnRpY0hlbHBlcnNfMS5maW5kQ2hpbGRyZW5CeVR5cGUoZXhwciwgJ2xpc3QnKS5mb3JFYWNoKGV4cHIgPT4ge1xuICAgICAgICAgICAgdGVybXMgPSB0ZXJtcy5jb25jYXQoZ2V0QWxsVGVybXMoZXhwcikpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRlcm1zO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRSdWxlcyhzb3VyY2UsIHBhcnNlciA9IEJORi5kZWZhdWx0UGFyc2VyKSB7XG4gICAgICAgIGxldCBhc3QgPSBwYXJzZXIuZ2V0QVNUKHNvdXJjZSk7XG4gICAgICAgIGlmICghYXN0KVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgcGFyc2UgJyArIHNvdXJjZSk7XG4gICAgICAgIGlmIChhc3QuZXJyb3JzICYmIGFzdC5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBhc3QuZXJyb3JzWzBdO1xuICAgICAgICB9XG4gICAgICAgIGxldCBydWxlcyA9IFNlbWFudGljSGVscGVyc18xLmZpbmRDaGlsZHJlbkJ5VHlwZShhc3QsICdydWxlJyk7XG4gICAgICAgIGxldCByZXQgPSBydWxlcy5tYXAoKHJ1bGUpID0+IHtcbiAgICAgICAgICAgIGxldCBuYW1lID0gU2VtYW50aWNIZWxwZXJzXzEuZmluZENoaWxkcmVuQnlUeXBlKHJ1bGUsICdydWxlLW5hbWUnKVswXS50ZXh0O1xuICAgICAgICAgICAgbGV0IGV4cHJlc3Npb25zID0gU2VtYW50aWNIZWxwZXJzXzEuZmluZENoaWxkcmVuQnlUeXBlKHJ1bGUsICdmaXJzdEV4cHJlc3Npb24nKS5jb25jYXQoU2VtYW50aWNIZWxwZXJzXzEuZmluZENoaWxkcmVuQnlUeXBlKHJ1bGUsICdvdGhlckV4cHJlc3Npb24nKSk7XG4gICAgICAgICAgICBsZXQgYm5mID0gW107XG4gICAgICAgICAgICBleHByZXNzaW9ucy5mb3JFYWNoKGV4cHIgPT4ge1xuICAgICAgICAgICAgICAgIGJuZi5wdXNoKGdldEFsbFRlcm1zKGV4cHIpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICAgIGJuZlxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghcmV0LnNvbWUoeCA9PiB4Lm5hbWUgPT0gJ0VPTCcpKSB7XG4gICAgICAgICAgICByZXQucHVzaCh7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0VPTCcsXG4gICAgICAgICAgICAgICAgYm5mOiBbWydcIlxcXFxyXFxcXG5cIicsICdcIlxcXFxyXCInLCAnXCJcXFxcblwiJ11dXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgICBCTkYuZ2V0UnVsZXMgPSBnZXRSdWxlcztcbiAgICBmdW5jdGlvbiBUcmFuc2Zvcm0oc291cmNlLCBzdWJQYXJzZXIgPSBCTkYuZGVmYXVsdFBhcnNlcikge1xuICAgICAgICByZXR1cm4gZ2V0UnVsZXMoc291cmNlLmpvaW4oJycpLCBzdWJQYXJzZXIpO1xuICAgIH1cbiAgICBCTkYuVHJhbnNmb3JtID0gVHJhbnNmb3JtO1xuICAgIGNsYXNzIFBhcnNlciBleHRlbmRzIFBhcnNlcl8xLlBhcnNlciB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHNvdXJjZSwgb3B0aW9ucykge1xuICAgICAgICAgICAgY29uc3Qgc3ViUGFyc2VyID0gb3B0aW9ucyAmJiBvcHRpb25zLmRlYnVnUnVsZXNQYXJzZXIgPT09IHRydWUgPyBuZXcgUGFyc2VyXzEuUGFyc2VyKEJORi5SVUxFUywgeyBkZWJ1ZzogdHJ1ZSB9KSA6IEJORi5kZWZhdWx0UGFyc2VyO1xuICAgICAgICAgICAgc3VwZXIoZ2V0UnVsZXMoc291cmNlLCBzdWJQYXJzZXIpLCBvcHRpb25zKTtcbiAgICAgICAgICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICAgICAgICB9XG4gICAgICAgIGVtaXRTb3VyY2UoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgQk5GLlBhcnNlciA9IFBhcnNlcjtcbn0pKEJORiB8fCAoQk5GID0ge30pKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEJORjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJORi5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sLyNOVC1OYW1lXG4vLyBodHRwOi8vd3d3LmJvdHRsZWNhcHMuZGUvcnIvdWlcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIEdyYW1tYXJcdDo6PVx0UHJvZHVjdGlvbipcbi8vIFByb2R1Y3Rpb25cdDo6PVx0TkNOYW1lICc6Oj0nIENob2ljZVxuLy8gTkNOYW1lXHQ6Oj1cdFtodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtbmFtZXMvI05ULU5DTmFtZV1cbi8vIENob2ljZVx0Ojo9XHRTZXF1ZW5jZU9yRGlmZmVyZW5jZSAoICd8JyBTZXF1ZW5jZU9yRGlmZmVyZW5jZSApKlxuLy8gU2VxdWVuY2VPckRpZmZlcmVuY2VcdDo6PVx0KEl0ZW0gKCAnLScgSXRlbSB8IEl0ZW0qICkpP1xuLy8gSXRlbVx0Ojo9XHRQcmltYXJ5ICggJz8nIHwgJyonIHwgJysnICk/XG4vLyBQcmltYXJ5XHQ6Oj1cdE5DTmFtZSB8IFN0cmluZ0xpdGVyYWwgfCBDaGFyQ29kZSB8IENoYXJDbGFzcyB8ICcoJyBDaG9pY2UgJyknXG4vLyBTdHJpbmdMaXRlcmFsXHQ6Oj1cdCdcIicgW15cIl0qICdcIicgfCBcIidcIiBbXiddKiBcIidcIlxuLy8gQ2hhckNvZGVcdDo6PVx0JyN4JyBbMC05YS1mQS1GXStcbi8vIENoYXJDbGFzc1x0Ojo9XHQnWycgJ14nPyAoIFJVTEVfQ2hhciB8IENoYXJDb2RlIHwgQ2hhclJhbmdlIHwgQ2hhckNvZGVSYW5nZSApKyAnXSdcbi8vIFJVTEVfQ2hhclx0Ojo9XHRbaHR0cDovL3d3dy53My5vcmcvVFIveG1sI05ULVJVTEVfQ2hhcl1cbi8vIENoYXJSYW5nZVx0Ojo9XHRSVUxFX0NoYXIgJy0nICggUlVMRV9DaGFyIC0gJ10nIClcbi8vIENoYXJDb2RlUmFuZ2VcdDo6PVx0Q2hhckNvZGUgJy0nIENoYXJDb2RlXG4vLyBSVUxFX1dISVRFU1BBQ0VcdDo6PVx0UlVMRV9TIHwgQ29tbWVudFxuLy8gUlVMRV9TXHQ6Oj1cdCN4OSB8ICN4QSB8ICN4RCB8ICN4MjBcbi8vIENvbW1lbnRcdDo6PVx0Jy8qJyAoIFteKl0gfCAnKicrIFteKi9dICkqICcqJyogJyovJ1xuY29uc3QgUGFyc2VyXzEgPSByZXF1aXJlKFwiLi4vUGFyc2VyXCIpO1xudmFyIEJORjtcbihmdW5jdGlvbiAoQk5GKSB7XG4gICAgQk5GLlJVTEVTID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnR3JhbW1hcicsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfUyonLCAnJUF0b21pYyonLCAnRU9GJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclQXRvbWljJyxcbiAgICAgICAgICAgIGJuZjogW1snUHJvZHVjdGlvbicsICdSVUxFX1MqJ11dLFxuICAgICAgICAgICAgZnJhZ21lbnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1Byb2R1Y3Rpb24nLFxuICAgICAgICAgICAgYm5mOiBbWydOQ05hbWUnLCAnUlVMRV9TKicsICdcIjo6PVwiJywgJ1JVTEVfV0hJVEVTUEFDRSonLCAnQ2hvaWNlJywgJ1JVTEVfV0hJVEVTUEFDRSonLCAnUlVMRV9FT0wrJywgJ1JVTEVfUyonXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ05DTmFtZScsXG4gICAgICAgICAgICBibmY6IFtbL1thLXpBLVpdW2EtekEtWl8wLTldKi9dXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQ2hvaWNlJyxcbiAgICAgICAgICAgIGJuZjogW1snU2VxdWVuY2VPckRpZmZlcmVuY2UnLCAnJV9DaG9pY2VfMSonXV0sXG4gICAgICAgICAgICBmcmFnbWVudDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJV9DaG9pY2VfMScsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfV0hJVEVTUEFDRSonLCAnXCJ8XCInLCAnUlVMRV9XSElURVNQQUNFKicsICdTZXF1ZW5jZU9yRGlmZmVyZW5jZSddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdTZXF1ZW5jZU9yRGlmZmVyZW5jZScsXG4gICAgICAgICAgICBibmY6IFtbJ0l0ZW0nLCAnUlVMRV9XSElURVNQQUNFKicsICclX0l0ZW1fMT8nXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJyVfSXRlbV8xJyxcbiAgICAgICAgICAgIGJuZjogW1snTWludXMnLCAnSXRlbSddLCBbJ0l0ZW0qJ11dLFxuICAgICAgICAgICAgZnJhZ21lbnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ01pbnVzJyxcbiAgICAgICAgICAgIGJuZjogW1snXCItXCInXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0l0ZW0nLFxuICAgICAgICAgICAgYm5mOiBbWydSVUxFX1dISVRFU1BBQ0UqJywgJyVQcmltYXJ5JywgJ1ByaW1hcnlEZWNvcmF0aW9uPyddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdQcmltYXJ5RGVjb3JhdGlvbicsXG4gICAgICAgICAgICBibmY6IFtbJ1wiP1wiJ10sIFsnXCIqXCInXSwgWydcIitcIiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnRGVjb3JhdGlvbk5hbWUnLFxuICAgICAgICAgICAgYm5mOiBbWydcImVibmY6Ly9cIicsIC9bXlxceDVEI10rL11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclUHJpbWFyeScsXG4gICAgICAgICAgICBibmY6IFtbJ05DTmFtZSddLCBbJ1N0cmluZ0xpdGVyYWwnXSwgWydDaGFyQ29kZSddLCBbJ0NoYXJDbGFzcyddLCBbJ1N1Ykl0ZW0nXV0sXG4gICAgICAgICAgICBmcmFnbWVudDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnU3ViSXRlbScsXG4gICAgICAgICAgICBibmY6IFtbJ1wiKFwiJywgJ1JVTEVfV0hJVEVTUEFDRSonLCAnQ2hvaWNlJywgJ1JVTEVfV0hJVEVTUEFDRSonLCAnXCIpXCInXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1N0cmluZ0xpdGVyYWwnLFxuICAgICAgICAgICAgYm5mOiBbW2AnXCInYCwgL1teXCJdKi8sIGAnXCInYF0sIFtgXCInXCJgLCAvW14nXSovLCBgXCInXCJgXV0sXG4gICAgICAgICAgICBwaW5uZWQ6IDFcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0NoYXJDb2RlJyxcbiAgICAgICAgICAgIGJuZjogW1snXCIjeFwiJywgL1swLTlhLXpBLVpdKy9dXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQ2hhckNsYXNzJyxcbiAgICAgICAgICAgIGJuZjogW1tcIidbJ1wiLCBcIideJz9cIiwgJyVSVUxFX0NoYXJDbGFzc18xKycsICdcIl1cIiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJVJVTEVfQ2hhckNsYXNzXzEnLFxuICAgICAgICAgICAgYm5mOiBbWydDaGFyQ29kZVJhbmdlJ10sIFsnQ2hhclJhbmdlJ10sIFsnQ2hhckNvZGUnXSwgWydSVUxFX0NoYXInXV0sXG4gICAgICAgICAgICBmcmFnbWVudDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUlVMRV9DaGFyJyxcbiAgICAgICAgICAgIGJuZjogW1svXFx4MDkvXSwgWy9cXHgwQS9dLCBbL1xceDBEL10sIFsvW1xceDIwLVxceDVjXS9dLCBbL1tcXHg1ZS1cXHVEN0ZGXS9dLCBbL1tcXHVFMDAwLVxcdUZGRkRdL11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdDaGFyUmFuZ2UnLFxuICAgICAgICAgICAgYm5mOiBbWydSVUxFX0NoYXInLCAnXCItXCInLCAnUlVMRV9DaGFyJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdDaGFyQ29kZVJhbmdlJyxcbiAgICAgICAgICAgIGJuZjogW1snQ2hhckNvZGUnLCAnXCItXCInLCAnQ2hhckNvZGUnXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfV0hJVEVTUEFDRScsXG4gICAgICAgICAgICBibmY6IFtbJyVSVUxFX1dISVRFU1BBQ0VfQ0hBUionXSwgWydDb21tZW50JywgJ1JVTEVfV0hJVEVTUEFDRSonXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfUycsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfV0hJVEVTUEFDRScsICdSVUxFX1MqJ10sIFsnUlVMRV9FT0wnLCAnUlVMRV9TKiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJVJVTEVfV0hJVEVTUEFDRV9DSEFSJyxcbiAgICAgICAgICAgIGJuZjogW1svXFx4MDkvXSwgWy9cXHgyMC9dXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdDb21tZW50JyxcbiAgICAgICAgICAgIGJuZjogW1snXCIvKlwiJywgJyVSVUxFX0NvbW1lbnRfQm9keSonLCAnXCIqL1wiJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclUlVMRV9Db21tZW50X0JvZHknLFxuICAgICAgICAgICAgYm5mOiBbWychXCIqL1wiJywgL1teKl0vXV0sXG4gICAgICAgICAgICBmcmFnbWVudDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUlVMRV9FT0wnLFxuICAgICAgICAgICAgYm5mOiBbWy9cXHgwRC8sIC9cXHgwQS9dLCBbL1xceDBBL10sIFsvXFx4MEQvXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0xpbmsnLFxuICAgICAgICAgICAgYm5mOiBbW1wiJ1snXCIsICdVcmwnLCBcIiddJ1wiXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1VybCcsXG4gICAgICAgICAgICBibmY6IFtbL1teXFx4NUQ6Lz8jXS8sICdcIjovL1wiJywgL1teXFx4NUQjXSsvLCAnJVVybDE/J11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclVXJsMScsXG4gICAgICAgICAgICBibmY6IFtbJ1wiI1wiJywgJ05DTmFtZSddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH1cbiAgICBdO1xuICAgIEJORi5kZWZhdWx0UGFyc2VyID0gbmV3IFBhcnNlcl8xLlBhcnNlcihCTkYuUlVMRVMsIHsgZGVidWc6IGZhbHNlIH0pO1xuICAgIGNvbnN0IHByZURlY29yYXRpb25SRSA9IC9eKCF8JikvO1xuICAgIGNvbnN0IGRlY29yYXRpb25SRSA9IC8oXFw/fFxcK3xcXCopJC87XG4gICAgY29uc3Qgc3ViRXhwcmVzc2lvblJFID0gL14lLztcbiAgICBmdW5jdGlvbiBnZXRCTkZSdWxlKG5hbWUsIHBhcnNlcikge1xuICAgICAgICBpZiAodHlwZW9mIG5hbWUgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmIChwcmVEZWNvcmF0aW9uUkUudGVzdChuYW1lKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICBsZXQgc3ViZXhwcmVzc2lvbiA9IHN1YkV4cHJlc3Npb25SRS50ZXN0KG5hbWUpO1xuICAgICAgICAgICAgaWYgKHN1YmV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgICAgICBsZXQgZGVjb3JhdGlvbiA9IGRlY29yYXRpb25SRS5leGVjKG5hbWUpO1xuICAgICAgICAgICAgICAgIGxldCBkZWNvcmF0aW9uVGV4dCA9IGRlY29yYXRpb24gPyBkZWNvcmF0aW9uWzBdICsgJyAnIDogJyc7XG4gICAgICAgICAgICAgICAgbGV0IGxvbmVseSA9IGlzTG9uZWx5UnVsZShuYW1lLCBwYXJzZXIpO1xuICAgICAgICAgICAgICAgIGlmIChsb25lbHkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRCTkZCb2R5KG5hbWUsIHBhcnNlcikgKyBkZWNvcmF0aW9uVGV4dDtcbiAgICAgICAgICAgICAgICByZXR1cm4gJygnICsgZ2V0Qk5GQm9keShuYW1lLCBwYXJzZXIpICsgJyknICsgZGVjb3JhdGlvblRleHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuYW1lLnNvdXJjZVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcKD86eHx1KShbYS16QS1aMC05XSspL2csICcjeCQxJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbXFxcXCg/Onh8dSkoW2EtekEtWjAtOV0rKS1cXFxcKD86eHx1KShbYS16QS1aMC05XSspXFxdL2csICdbI3gkMS0jeCQyXScpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vLyBSZXR1cm5zIHRydWUgaWYgdGhlIHJ1bGUgaXMgYSBzdHJpbmcgbGl0ZXJhbCBvciByZWd1bGFyIGV4cHJlc3Npb24gd2l0aG91dCBhIGRlc2NlbmRhbnQgdHJlZVxuICAgIGZ1bmN0aW9uIGlzTG9uZWx5UnVsZShuYW1lLCBwYXJzZXIpIHtcbiAgICAgICAgbGV0IHJ1bGUgPSBQYXJzZXJfMS5maW5kUnVsZUJ5TmFtZShuYW1lLCBwYXJzZXIpO1xuICAgICAgICByZXR1cm4gKHJ1bGUgJiZcbiAgICAgICAgICAgIHJ1bGUuYm5mLmxlbmd0aCA9PSAxICYmXG4gICAgICAgICAgICBydWxlLmJuZlswXS5sZW5ndGggPT0gMSAmJlxuICAgICAgICAgICAgKHJ1bGUuYm5mWzBdWzBdIGluc3RhbmNlb2YgUmVnRXhwIHx8IHJ1bGUuYm5mWzBdWzBdWzBdID09ICdcIicgfHwgcnVsZS5ibmZbMF1bMF1bMF0gPT0gXCInXCIpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0Qk5GQ2hvaWNlKHJ1bGVzLCBwYXJzZXIpIHtcbiAgICAgICAgcmV0dXJuIHJ1bGVzLm1hcCh4ID0+IGdldEJORlJ1bGUoeCwgcGFyc2VyKSkuam9pbignICcpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRCTkZCb2R5KG5hbWUsIHBhcnNlcikge1xuICAgICAgICBsZXQgcnVsZSA9IFBhcnNlcl8xLmZpbmRSdWxlQnlOYW1lKG5hbWUsIHBhcnNlcik7XG4gICAgICAgIGlmIChydWxlKVxuICAgICAgICAgICAgcmV0dXJuIHJ1bGUuYm5mLm1hcCh4ID0+IGdldEJORkNob2ljZSh4LCBwYXJzZXIpKS5qb2luKCcgfCAnKTtcbiAgICAgICAgcmV0dXJuICdSVUxFX05PVF9GT1VORCB7JyArIG5hbWUgKyAnfSc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGVtaXQocGFyc2VyKSB7XG4gICAgICAgIGxldCBhY3VtdWxhdG9yID0gW107XG4gICAgICAgIHBhcnNlci5ncmFtbWFyUnVsZXMuZm9yRWFjaChsID0+IHtcbiAgICAgICAgICAgIGlmICghL14lLy50ZXN0KGwubmFtZSkpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVjb3ZlciA9IGwucmVjb3ZlciA/ICcgLyogeyByZWNvdmVyVW50aWw9JyArIGwucmVjb3ZlciArICcgfSAqLycgOiAnJztcbiAgICAgICAgICAgICAgICBhY3VtdWxhdG9yLnB1c2gobC5uYW1lICsgJyA6Oj0gJyArIGdldEJORkJvZHkobC5uYW1lLCBwYXJzZXIpICsgcmVjb3Zlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYWN1bXVsYXRvci5qb2luKCdcXG4nKTtcbiAgICB9XG4gICAgQk5GLmVtaXQgPSBlbWl0O1xuICAgIGxldCBzdWJpdGVtcyA9IDA7XG4gICAgZnVuY3Rpb24gcmVzdGFyKHRvdGFsLCByZXN0YSkge1xuICAgICAgICBjb25zb2xlLmxvZygncmViZXJpYSByZXN0YXIgJyArIHJlc3RhICsgJyBhICcgKyB0b3RhbCk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRGlmZmVyZW5jZSBub3Qgc3VwcG9ydGVkIHlldCcpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjb252ZXJ0UmVnZXgodHh0KSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHR4dFxuICAgICAgICAgICAgLnJlcGxhY2UoLyN4KFthLXpBLVowLTldezR9KS9nLCAnXFxcXHUkMScpXG4gICAgICAgICAgICAucmVwbGFjZSgvI3goW2EtekEtWjAtOV17M30pL2csICdcXFxcdTAkMScpXG4gICAgICAgICAgICAucmVwbGFjZSgvI3goW2EtekEtWjAtOV17Mn0pL2csICdcXFxceCQxJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC8jeChbYS16QS1aMC05XXsxfSkvZywgJ1xcXFx4MCQxJykpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRTdWJJdGVtcyh0bXBSdWxlcywgc2VxLCBwYXJlbnROYW1lKSB7XG4gICAgICAgIGxldCBhbnRlcmlvciA9IG51bGw7XG4gICAgICAgIGxldCBibmZTZXEgPSBbXTtcbiAgICAgICAgc2VxLmNoaWxkcmVuLmZvckVhY2goKHgsIGkpID0+IHtcbiAgICAgICAgICAgIGlmICh4LnR5cGUgPT0gJ01pbnVzJykge1xuICAgICAgICAgICAgICAgIHJlc3RhcihhbnRlcmlvciwgeCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBkZWNvcmF0aW9uID0gc2VxLmNoaWxkcmVuW2kgKyAxXTtcbiAgICAgICAgICAgIGRlY29yYXRpb24gPSAoZGVjb3JhdGlvbiAmJiBkZWNvcmF0aW9uLnR5cGUgPT0gJ1ByaW1hcnlEZWNvcmF0aW9uJyAmJiBkZWNvcmF0aW9uLnRleHQpIHx8ICcnO1xuICAgICAgICAgICAgbGV0IHByZURlY29yYXRpb24gPSAnJztcbiAgICAgICAgICAgIHN3aXRjaCAoeC50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnU3ViSXRlbSc6XG4gICAgICAgICAgICAgICAgICAgIGxldCBuYW1lID0gJyUnICsgKHBhcmVudE5hbWUgKyBzdWJpdGVtcysrKTtcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlUnVsZSh0bXBSdWxlcywgeCwgbmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGJuZlNlcS5wdXNoKHByZURlY29yYXRpb24gKyBuYW1lICsgZGVjb3JhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ05DTmFtZSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnU3RyaW5nTGl0ZXJhbCc6XG4gICAgICAgICAgICAgICAgICAgIGJuZlNlcS5wdXNoKHByZURlY29yYXRpb24gKyB4LnRleHQgKyBkZWNvcmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnQ2hhckNvZGUnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0NoYXJDbGFzcyc6XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWNvcmF0aW9uIHx8IHByZURlY29yYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdSdWxlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICclJyArIChwYXJlbnROYW1lICsgc3ViaXRlbXMrKyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm5mOiBbW2NvbnZlcnRSZWdleCh4LnRleHQpXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB0bXBSdWxlcy5wdXNoKG5ld1J1bGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm5mU2VxLnB1c2gocHJlRGVjb3JhdGlvbiArIG5ld1J1bGUubmFtZSArIGRlY29yYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm5mU2VxLnB1c2goY29udmVydFJlZ2V4KHgudGV4dCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1ByaW1hcnlEZWNvcmF0aW9uJzpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCcgSE9XIFNIT1VMRCBJIFBBUlNFIFRISVM/ICcgKyB4LnR5cGUgKyAnIC0+ICcgKyBKU09OLnN0cmluZ2lmeSh4LnRleHQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFudGVyaW9yID0geDtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBibmZTZXE7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZVJ1bGUodG1wUnVsZXMsIHRva2VuLCBuYW1lKSB7XG4gICAgICAgIGxldCBibmYgPSB0b2tlbi5jaGlsZHJlbi5maWx0ZXIoeCA9PiB4LnR5cGUgPT0gJ1NlcXVlbmNlT3JEaWZmZXJlbmNlJykubWFwKHMgPT4gZ2V0U3ViSXRlbXModG1wUnVsZXMsIHMsIG5hbWUpKTtcbiAgICAgICAgbGV0IHJ1bGUgPSB7XG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgYm5mXG4gICAgICAgIH07XG4gICAgICAgIGxldCByZWNvdmVyID0gbnVsbDtcbiAgICAgICAgYm5mLmZvckVhY2goeCA9PiB7XG4gICAgICAgICAgICByZWNvdmVyID0gcmVjb3ZlciB8fCB4WydyZWNvdmVyJ107XG4gICAgICAgICAgICBkZWxldGUgeFsncmVjb3ZlciddO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG5hbWUuaW5kZXhPZignJScpID09IDApXG4gICAgICAgICAgICBydWxlLmZyYWdtZW50ID0gdHJ1ZTtcbiAgICAgICAgaWYgKHJlY292ZXIpXG4gICAgICAgICAgICBydWxlLnJlY292ZXIgPSByZWNvdmVyO1xuICAgICAgICB0bXBSdWxlcy5wdXNoKHJ1bGUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRSdWxlcyhzb3VyY2UsIHBhcnNlciA9IEJORi5kZWZhdWx0UGFyc2VyKSB7XG4gICAgICAgIGxldCBhc3QgPSBwYXJzZXIuZ2V0QVNUKHNvdXJjZSk7XG4gICAgICAgIGlmICghYXN0KVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgcGFyc2UgJyArIHNvdXJjZSk7XG4gICAgICAgIGlmIChhc3QuZXJyb3JzICYmIGFzdC5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBhc3QuZXJyb3JzWzBdO1xuICAgICAgICB9XG4gICAgICAgIGxldCB0bXBSdWxlcyA9IFtdO1xuICAgICAgICBhc3QuY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlID09ICdQcm9kdWN0aW9uJykubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICBsZXQgbmFtZSA9IHguY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlID09ICdOQ05hbWUnKVswXS50ZXh0O1xuICAgICAgICAgICAgY3JlYXRlUnVsZSh0bXBSdWxlcywgeCwgbmFtZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdG1wUnVsZXM7XG4gICAgfVxuICAgIEJORi5nZXRSdWxlcyA9IGdldFJ1bGVzO1xuICAgIGZ1bmN0aW9uIFRyYW5zZm9ybShzb3VyY2UsIHN1YlBhcnNlciA9IEJORi5kZWZhdWx0UGFyc2VyKSB7XG4gICAgICAgIHJldHVybiBnZXRSdWxlcyhzb3VyY2Uuam9pbignJyksIHN1YlBhcnNlcik7XG4gICAgfVxuICAgIEJORi5UcmFuc2Zvcm0gPSBUcmFuc2Zvcm07XG4gICAgY2xhc3MgUGFyc2VyIGV4dGVuZHMgUGFyc2VyXzEuUGFyc2VyIHtcbiAgICAgICAgY29uc3RydWN0b3Ioc291cmNlLCBvcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBzdWJQYXJzZXIgPSBvcHRpb25zICYmIG9wdGlvbnMuZGVidWdSdWxlc1BhcnNlciA9PT0gdHJ1ZSA/IG5ldyBQYXJzZXJfMS5QYXJzZXIoQk5GLlJVTEVTLCB7IGRlYnVnOiB0cnVlIH0pIDogQk5GLmRlZmF1bHRQYXJzZXI7XG4gICAgICAgICAgICBzdXBlcihnZXRSdWxlcyhzb3VyY2UsIHN1YlBhcnNlciksIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGVtaXRTb3VyY2UoKSB7XG4gICAgICAgICAgICByZXR1cm4gZW1pdCh0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBCTkYuUGFyc2VyID0gUGFyc2VyO1xufSkoQk5GIHx8IChCTkYgPSB7fSkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gQk5GO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VzNDRUJORi5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sLyNOVC1OYW1lXG4vLyBodHRwOi8vd3d3LmJvdHRsZWNhcHMuZGUvcnIvdWlcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIEdyYW1tYXJcdDo6PVx0UHJvZHVjdGlvbipcbi8vIFByb2R1Y3Rpb25cdDo6PVx0TkNOYW1lICc6Oj0nIENob2ljZVxuLy8gTkNOYW1lXHQ6Oj1cdFtodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtbmFtZXMvI05ULU5DTmFtZV1cbi8vIENob2ljZVx0Ojo9XHRTZXF1ZW5jZU9yRGlmZmVyZW5jZSAoICd8JyBTZXF1ZW5jZU9yRGlmZmVyZW5jZSApKlxuLy8gU2VxdWVuY2VPckRpZmZlcmVuY2VcdDo6PVx0KEl0ZW0gKCAnLScgSXRlbSB8IEl0ZW0qICkpP1xuLy8gSXRlbVx0Ojo9XHRQcmltYXJ5ICggJz8nIHwgJyonIHwgJysnICk/XG4vLyBQcmltYXJ5XHQ6Oj1cdE5DTmFtZSB8IFN0cmluZ0xpdGVyYWwgfCBDaGFyQ29kZSB8IENoYXJDbGFzcyB8ICcoJyBDaG9pY2UgJyknXG4vLyBTdHJpbmdMaXRlcmFsXHQ6Oj1cdCdcIicgW15cIl0qICdcIicgfCBcIidcIiBbXiddKiBcIidcIlxuLy8gQ2hhckNvZGVcdDo6PVx0JyN4JyBbMC05YS1mQS1GXStcbi8vIENoYXJDbGFzc1x0Ojo9XHQnWycgJ14nPyAoIFJVTEVfQ2hhciB8IENoYXJDb2RlIHwgQ2hhclJhbmdlIHwgQ2hhckNvZGVSYW5nZSApKyAnXSdcbi8vIFJVTEVfQ2hhclx0Ojo9XHRbaHR0cDovL3d3dy53My5vcmcvVFIveG1sI05ULVJVTEVfQ2hhcl1cbi8vIENoYXJSYW5nZVx0Ojo9XHRSVUxFX0NoYXIgJy0nICggUlVMRV9DaGFyIC0gJ10nIClcbi8vIENoYXJDb2RlUmFuZ2VcdDo6PVx0Q2hhckNvZGUgJy0nIENoYXJDb2RlXG4vLyBSVUxFX1dISVRFU1BBQ0VcdDo6PVx0UlVMRV9TIHwgQ29tbWVudFxuLy8gUlVMRV9TXHQ6Oj1cdCN4OSB8ICN4QSB8ICN4RCB8ICN4MjBcbi8vIENvbW1lbnRcdDo6PVx0Jy8qJyAoIFteKl0gfCAnKicrIFteKi9dICkqICcqJyogJyovJ1xuY29uc3QgVG9rZW5FcnJvcl8xID0gcmVxdWlyZShcIi4uL1Rva2VuRXJyb3JcIik7XG5jb25zdCBQYXJzZXJfMSA9IHJlcXVpcmUoXCIuLi9QYXJzZXJcIik7XG52YXIgQk5GO1xuKGZ1bmN0aW9uIChCTkYpIHtcbiAgICBCTkYuUlVMRVMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdHcmFtbWFyJyxcbiAgICAgICAgICAgIGJuZjogW1snUlVMRV9TKicsICdBdHRyaWJ1dGVzPycsICdSVUxFX1MqJywgJyVBdG9taWMqJywgJ0VPRiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJUF0b21pYycsXG4gICAgICAgICAgICBibmY6IFtbJ1Byb2R1Y3Rpb24nLCAnUlVMRV9TKiddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdQcm9kdWN0aW9uJyxcbiAgICAgICAgICAgIGJuZjogW1xuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgJ05DTmFtZScsXG4gICAgICAgICAgICAgICAgICAgICdSVUxFX1MqJyxcbiAgICAgICAgICAgICAgICAgICAgJ1wiOjo9XCInLFxuICAgICAgICAgICAgICAgICAgICAnUlVMRV9XSElURVNQQUNFKicsXG4gICAgICAgICAgICAgICAgICAgICclQ2hvaWNlJyxcbiAgICAgICAgICAgICAgICAgICAgJ1JVTEVfV0hJVEVTUEFDRSonLFxuICAgICAgICAgICAgICAgICAgICAnQXR0cmlidXRlcz8nLFxuICAgICAgICAgICAgICAgICAgICAnUlVMRV9FT0wrJyxcbiAgICAgICAgICAgICAgICAgICAgJ1JVTEVfUyonXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnTkNOYW1lJyxcbiAgICAgICAgICAgIGJuZjogW1svW2EtekEtWl1bYS16QS1aXzAtOV0qL11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdBdHRyaWJ1dGVzJyxcbiAgICAgICAgICAgIGJuZjogW1snXCJ7XCInLCAnQXR0cmlidXRlJywgJyVBdHRyaWJ1dGVzKicsICdSVUxFX1MqJywgJ1wifVwiJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclQXR0cmlidXRlcycsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfUyonLCAnXCIsXCInLCAnQXR0cmlidXRlJ11dLFxuICAgICAgICAgICAgZnJhZ21lbnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0F0dHJpYnV0ZScsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfUyonLCAnTkNOYW1lJywgJ1JVTEVfV0hJVEVTUEFDRSonLCAnXCI9XCInLCAnUlVMRV9XSElURVNQQUNFKicsICdBdHRyaWJ1dGVWYWx1ZSddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQXR0cmlidXRlVmFsdWUnLFxuICAgICAgICAgICAgYm5mOiBbWydOQ05hbWUnXSwgWy9bMS05XVswLTldKi9dXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJUNob2ljZScsXG4gICAgICAgICAgICBibmY6IFtbJ1NlcXVlbmNlT3JEaWZmZXJlbmNlJywgJyVfQ2hvaWNlXzEqJ11dLFxuICAgICAgICAgICAgZnJhZ21lbnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJyVfQ2hvaWNlXzEnLFxuICAgICAgICAgICAgYm5mOiBbWydSVUxFX1MqJywgJ1wifFwiJywgJ1JVTEVfUyonLCAnU2VxdWVuY2VPckRpZmZlcmVuY2UnXV0sXG4gICAgICAgICAgICBmcmFnbWVudDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnU2VxdWVuY2VPckRpZmZlcmVuY2UnLFxuICAgICAgICAgICAgYm5mOiBbWyclSXRlbScsICdSVUxFX1dISVRFU1BBQ0UqJywgJyVfSXRlbV8xPyddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJV9JdGVtXzEnLFxuICAgICAgICAgICAgYm5mOiBbWydNaW51cycsICclSXRlbSddLCBbJyVJdGVtKiddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdNaW51cycsXG4gICAgICAgICAgICBibmY6IFtbJ1wiLVwiJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclSXRlbScsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfV0hJVEVTUEFDRSonLCAnUHJpbWFyeVByZURlY29yYXRpb24/JywgJyVQcmltYXJ5JywgJ1ByaW1hcnlEZWNvcmF0aW9uPyddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdQcmltYXJ5RGVjb3JhdGlvbicsXG4gICAgICAgICAgICBibmY6IFtbJ1wiP1wiJ10sIFsnXCIqXCInXSwgWydcIitcIiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUHJpbWFyeVByZURlY29yYXRpb24nLFxuICAgICAgICAgICAgYm5mOiBbWydcIiZcIiddLCBbJ1wiIVwiJ10sIFsnXCJ+XCInXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJyVQcmltYXJ5JyxcbiAgICAgICAgICAgIGJuZjogW1snTkNOYW1lJ10sIFsnU3RyaW5nTGl0ZXJhbCddLCBbJ0NoYXJDb2RlJ10sIFsnQ2hhckNsYXNzJ10sIFsnU3ViSXRlbSddXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdTdWJJdGVtJyxcbiAgICAgICAgICAgIGJuZjogW1snXCIoXCInLCAnUlVMRV9TKicsICclQ2hvaWNlJywgJ1JVTEVfUyonLCAnXCIpXCInXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1N0cmluZ0xpdGVyYWwnLFxuICAgICAgICAgICAgYm5mOiBbW2AnXCInYCwgL1teXCJdKi8sIGAnXCInYF0sIFtgXCInXCJgLCAvW14nXSovLCBgXCInXCJgXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0NoYXJDb2RlJyxcbiAgICAgICAgICAgIGJuZjogW1snXCIjeFwiJywgL1swLTlhLXpBLVpdKy9dXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQ2hhckNsYXNzJyxcbiAgICAgICAgICAgIGJuZjogW1tcIidbJ1wiLCBcIideJz9cIiwgJyVSVUxFX0NoYXJDbGFzc18xKycsICdcIl1cIiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJVJVTEVfQ2hhckNsYXNzXzEnLFxuICAgICAgICAgICAgYm5mOiBbWydDaGFyQ29kZVJhbmdlJ10sIFsnQ2hhclJhbmdlJ10sIFsnQ2hhckNvZGUnXSwgWydSVUxFX0NoYXInXV0sXG4gICAgICAgICAgICBmcmFnbWVudDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnUlVMRV9DaGFyJyxcbiAgICAgICAgICAgIGJuZjogW1svXFx4MDkvXSwgWy9cXHgwQS9dLCBbL1xceDBEL10sIFsvW1xceDIwLVxceDVjXS9dLCBbL1tcXHg1ZS1cXHVEN0ZGXS9dLCBbL1tcXHVFMDAwLVxcdUZGRkRdL11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdDaGFyUmFuZ2UnLFxuICAgICAgICAgICAgYm5mOiBbWydSVUxFX0NoYXInLCAnXCItXCInLCAnUlVMRV9DaGFyJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdDaGFyQ29kZVJhbmdlJyxcbiAgICAgICAgICAgIGJuZjogW1snQ2hhckNvZGUnLCAnXCItXCInLCAnQ2hhckNvZGUnXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfV0hJVEVTUEFDRScsXG4gICAgICAgICAgICBibmY6IFtbJyVSVUxFX1dISVRFU1BBQ0VfQ0hBUionXSwgWydDb21tZW50JywgJ1JVTEVfV0hJVEVTUEFDRSonXV1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfUycsXG4gICAgICAgICAgICBibmY6IFtbJ1JVTEVfV0hJVEVTUEFDRScsICdSVUxFX1MqJ10sIFsnUlVMRV9FT0wnLCAnUlVMRV9TKiddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJVJVTEVfV0hJVEVTUEFDRV9DSEFSJyxcbiAgICAgICAgICAgIGJuZjogW1svXFx4MDkvXSwgWy9cXHgyMC9dXSxcbiAgICAgICAgICAgIGZyYWdtZW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdDb21tZW50JyxcbiAgICAgICAgICAgIGJuZjogW1snXCIvKlwiJywgJyVSVUxFX0NvbW1lbnRfQm9keSonLCAnXCIqL1wiJ11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICclUlVMRV9Db21tZW50X0JvZHknLFxuICAgICAgICAgICAgYm5mOiBbWy9bXipdL10sIFsnXCIqXCIrJywgL1teL10qL11dLFxuICAgICAgICAgICAgZnJhZ21lbnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1JVTEVfRU9MJyxcbiAgICAgICAgICAgIGJuZjogW1svXFx4MEQvLCAvXFx4MEEvXSwgWy9cXHgwQS9dLCBbL1xceDBEL11dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdMaW5rJyxcbiAgICAgICAgICAgIGJuZjogW1tcIidbJ1wiLCAnVXJsJywgXCInXSdcIl1dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdVcmwnLFxuICAgICAgICAgICAgYm5mOiBbWy9bXlxceDVEOi8/I10vLCAnXCI6Ly9cIicsIC9bXlxceDVEI10rLywgJyVVcmwxPyddXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnJVVybDEnLFxuICAgICAgICAgICAgYm5mOiBbWydcIiNcIicsICdOQ05hbWUnXV0sXG4gICAgICAgICAgICBmcmFnbWVudDogdHJ1ZVxuICAgICAgICB9XG4gICAgXTtcbiAgICBCTkYuZGVmYXVsdFBhcnNlciA9IG5ldyBQYXJzZXJfMS5QYXJzZXIoQk5GLlJVTEVTLCB7IGRlYnVnOiBmYWxzZSB9KTtcbiAgICBjb25zdCBwcmVEZWNvcmF0aW9uUkUgPSAvXighfCYpLztcbiAgICBjb25zdCBkZWNvcmF0aW9uUkUgPSAvKFxcP3xcXCt8XFwqKSQvO1xuICAgIGNvbnN0IHN1YkV4cHJlc3Npb25SRSA9IC9eJS87XG4gICAgZnVuY3Rpb24gZ2V0Qk5GUnVsZShuYW1lLCBwYXJzZXIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBuYW1lID09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBsZXQgZGVjb3JhdGlvbiA9IGRlY29yYXRpb25SRS5leGVjKG5hbWUpO1xuICAgICAgICAgICAgbGV0IHByZURlY29yYXRpb24gPSBwcmVEZWNvcmF0aW9uUkUuZXhlYyhuYW1lKTtcbiAgICAgICAgICAgIGxldCBwcmVEZWNvcmF0aW9uVGV4dCA9IHByZURlY29yYXRpb24gPyBwcmVEZWNvcmF0aW9uWzBdIDogJyc7XG4gICAgICAgICAgICBsZXQgZGVjb3JhdGlvblRleHQgPSBkZWNvcmF0aW9uID8gZGVjb3JhdGlvblswXSArICcgJyA6ICcnO1xuICAgICAgICAgICAgbGV0IHN1YmV4cHJlc3Npb24gPSBzdWJFeHByZXNzaW9uUkUudGVzdChuYW1lKTtcbiAgICAgICAgICAgIGlmIChzdWJleHByZXNzaW9uKSB7XG4gICAgICAgICAgICAgICAgbGV0IGxvbmVseSA9IGlzTG9uZWx5UnVsZShuYW1lLCBwYXJzZXIpO1xuICAgICAgICAgICAgICAgIGlmIChsb25lbHkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmVEZWNvcmF0aW9uVGV4dCArIGdldEJORkJvZHkobmFtZSwgcGFyc2VyKSArIGRlY29yYXRpb25UZXh0O1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmVEZWNvcmF0aW9uVGV4dCArICcoJyArIGdldEJORkJvZHkobmFtZSwgcGFyc2VyKSArICcpJyArIGRlY29yYXRpb25UZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5hbWUucmVwbGFjZShwcmVEZWNvcmF0aW9uUkUsIHByZURlY29yYXRpb25UZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuYW1lLnNvdXJjZVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcKD86eHx1KShbYS16QS1aMC05XSspL2csICcjeCQxJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbXFxcXCg/Onh8dSkoW2EtekEtWjAtOV0rKS1cXFxcKD86eHx1KShbYS16QS1aMC05XSspXFxdL2csICdbI3gkMS0jeCQyXScpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vLyBSZXR1cm5zIHRydWUgaWYgdGhlIHJ1bGUgaXMgYSBzdHJpbmcgbGl0ZXJhbCBvciByZWd1bGFyIGV4cHJlc3Npb24gd2l0aG91dCBhIGRlc2NlbmRhbnQgdHJlZVxuICAgIGZ1bmN0aW9uIGlzTG9uZWx5UnVsZShuYW1lLCBwYXJzZXIpIHtcbiAgICAgICAgbGV0IHJ1bGUgPSBQYXJzZXJfMS5maW5kUnVsZUJ5TmFtZShuYW1lLCBwYXJzZXIpO1xuICAgICAgICByZXR1cm4gKHJ1bGUgJiZcbiAgICAgICAgICAgIHJ1bGUuYm5mLmxlbmd0aCA9PSAxICYmXG4gICAgICAgICAgICBydWxlLmJuZlswXS5sZW5ndGggPT0gMSAmJlxuICAgICAgICAgICAgKHJ1bGUuYm5mWzBdWzBdIGluc3RhbmNlb2YgUmVnRXhwIHx8IHJ1bGUuYm5mWzBdWzBdWzBdID09ICdcIicgfHwgcnVsZS5ibmZbMF1bMF1bMF0gPT0gXCInXCIpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0Qk5GQ2hvaWNlKHJ1bGVzLCBwYXJzZXIpIHtcbiAgICAgICAgcmV0dXJuIHJ1bGVzLm1hcCh4ID0+IGdldEJORlJ1bGUoeCwgcGFyc2VyKSkuam9pbignICcpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRCTkZCb2R5KG5hbWUsIHBhcnNlcikge1xuICAgICAgICBsZXQgcnVsZSA9IFBhcnNlcl8xLmZpbmRSdWxlQnlOYW1lKG5hbWUsIHBhcnNlcik7XG4gICAgICAgIGlmIChydWxlKVxuICAgICAgICAgICAgcmV0dXJuIHJ1bGUuYm5mLm1hcCh4ID0+IGdldEJORkNob2ljZSh4LCBwYXJzZXIpKS5qb2luKCcgfCAnKTtcbiAgICAgICAgcmV0dXJuICdSVUxFX05PVF9GT1VORCB7JyArIG5hbWUgKyAnfSc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGVtaXQocGFyc2VyKSB7XG4gICAgICAgIGxldCBhY3VtdWxhdG9yID0gW107XG4gICAgICAgIHBhcnNlci5ncmFtbWFyUnVsZXMuZm9yRWFjaChsID0+IHtcbiAgICAgICAgICAgIGlmICghL14lLy50ZXN0KGwubmFtZSkpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVjb3ZlciA9IGwucmVjb3ZlciA/ICcgeyByZWNvdmVyVW50aWw9JyArIGwucmVjb3ZlciArICcgfScgOiAnJztcbiAgICAgICAgICAgICAgICBhY3VtdWxhdG9yLnB1c2gobC5uYW1lICsgJyA6Oj0gJyArIGdldEJORkJvZHkobC5uYW1lLCBwYXJzZXIpICsgcmVjb3Zlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYWN1bXVsYXRvci5qb2luKCdcXG4nKTtcbiAgICB9XG4gICAgQk5GLmVtaXQgPSBlbWl0O1xuICAgIGxldCBzdWJpdGVtcyA9IDA7XG4gICAgZnVuY3Rpb24gcmVzdGFyKHRvdGFsLCByZXN0YSkge1xuICAgICAgICBjb25zb2xlLmxvZygncmViZXJpYSByZXN0YXIgJyArIHJlc3RhICsgJyBhICcgKyB0b3RhbCk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRGlmZmVyZW5jZSBub3Qgc3VwcG9ydGVkIHlldCcpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjb252ZXJ0UmVnZXgodHh0KSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHR4dFxuICAgICAgICAgICAgLnJlcGxhY2UoLyN4KFthLXpBLVowLTldezR9KS9nLCAnXFxcXHUkMScpXG4gICAgICAgICAgICAucmVwbGFjZSgvI3goW2EtekEtWjAtOV17M30pL2csICdcXFxcdTAkMScpXG4gICAgICAgICAgICAucmVwbGFjZSgvI3goW2EtekEtWjAtOV17Mn0pL2csICdcXFxceCQxJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC8jeChbYS16QS1aMC05XXsxfSkvZywgJ1xcXFx4MCQxJykpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRTdWJJdGVtcyh0bXBSdWxlcywgc2VxLCBwYXJlbnROYW1lLCBwYXJlbnRBdHRyaWJ1dGVzKSB7XG4gICAgICAgIGxldCBhbnRlcmlvciA9IG51bGw7XG4gICAgICAgIGxldCBibmZTZXEgPSBbXTtcbiAgICAgICAgc2VxLmNoaWxkcmVuLmZvckVhY2goKHgsIGkpID0+IHtcbiAgICAgICAgICAgIGlmICh4LnR5cGUgPT0gJ01pbnVzJykge1xuICAgICAgICAgICAgICAgIHJlc3RhcihhbnRlcmlvciwgeCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBkZWNvcmF0aW9uID0gc2VxLmNoaWxkcmVuW2kgKyAxXTtcbiAgICAgICAgICAgIGRlY29yYXRpb24gPSAoZGVjb3JhdGlvbiAmJiBkZWNvcmF0aW9uLnR5cGUgPT0gJ1ByaW1hcnlEZWNvcmF0aW9uJyAmJiBkZWNvcmF0aW9uLnRleHQpIHx8ICcnO1xuICAgICAgICAgICAgbGV0IHByZURlY29yYXRpb24gPSAnJztcbiAgICAgICAgICAgIGlmIChhbnRlcmlvciAmJiBhbnRlcmlvci50eXBlID09ICdQcmltYXJ5UHJlRGVjb3JhdGlvbicpIHtcbiAgICAgICAgICAgICAgICBwcmVEZWNvcmF0aW9uID0gYW50ZXJpb3IudGV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBwaW5uZWQgPSBwcmVEZWNvcmF0aW9uID09ICd+JyA/IDEgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAocGlubmVkKSB7XG4gICAgICAgICAgICAgICAgcHJlRGVjb3JhdGlvbiA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3dpdGNoICh4LnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdTdWJJdGVtJzpcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5hbWUgPSAnJScgKyAocGFyZW50TmFtZSArIHN1Yml0ZW1zKyspO1xuICAgICAgICAgICAgICAgICAgICBjcmVhdGVSdWxlKHRtcFJ1bGVzLCB4LCBuYW1lLCBwYXJlbnRBdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgICAgICAgYm5mU2VxLnB1c2gocHJlRGVjb3JhdGlvbiArIG5hbWUgKyBkZWNvcmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnTkNOYW1lJzpcbiAgICAgICAgICAgICAgICAgICAgYm5mU2VxLnB1c2gocHJlRGVjb3JhdGlvbiArIHgudGV4dCArIGRlY29yYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdTdHJpbmdMaXRlcmFsJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlY29yYXRpb24gfHwgcHJlRGVjb3JhdGlvbiB8fCAhL15bJ1wiLygpYS16QS1aMC05Jl8uOj0sKypcXC1cXF5cXFxcXSskLy50ZXN0KHgudGV4dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJuZlNlcS5wdXNoKHByZURlY29yYXRpb24gKyB4LnRleHQgKyBkZWNvcmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYyBvZiB4LnRleHQuc2xpY2UoMSwgLTEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudEF0dHJpYnV0ZXMgJiYgcGFyZW50QXR0cmlidXRlc1tcImlnbm9yZUNhc2VcIl0gPT0gXCJ0cnVlXCIgJiYgL1thLXpBLVpdLy50ZXN0KGMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJuZlNlcS5wdXNoKG5ldyBSZWdFeHAoXCJbXCIgKyBjLnRvVXBwZXJDYXNlKCkgKyBjLnRvTG93ZXJDYXNlKCkgKyBcIl1cIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm5mU2VxLnB1c2gobmV3IFJlZ0V4cChQYXJzZXJfMS5lc2NhcGVSZWdFeHAoYykpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnQ2hhckNvZGUnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0NoYXJDbGFzcyc6XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWNvcmF0aW9uIHx8IHByZURlY29yYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdSdWxlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICclJyArIChwYXJlbnROYW1lICsgc3ViaXRlbXMrKyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm5mOiBbW2NvbnZlcnRSZWdleCh4LnRleHQpXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubmVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgdG1wUnVsZXMucHVzaChuZXdSdWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJuZlNlcS5wdXNoKHByZURlY29yYXRpb24gKyBuZXdSdWxlLm5hbWUgKyBkZWNvcmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJuZlNlcS5wdXNoKGNvbnZlcnRSZWdleCh4LnRleHQpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdQcmltYXJ5UHJlRGVjb3JhdGlvbic6XG4gICAgICAgICAgICAgICAgY2FzZSAnUHJpbWFyeURlY29yYXRpb24nOlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJyBIT1cgU0hPVUxEIEkgUEFSU0UgVEhJUz8gJyArIHgudHlwZSArICcgLT4gJyArIEpTT04uc3RyaW5naWZ5KHgudGV4dCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYW50ZXJpb3IgPSB4O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGJuZlNlcTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlUnVsZSh0bXBSdWxlcywgdG9rZW4sIG5hbWUsIHBhcmVudEF0dHJpYnV0ZXMgPSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGV0IGF0dHJOb2RlID0gdG9rZW4uY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlID09ICdBdHRyaWJ1dGVzJylbMF07XG4gICAgICAgIGxldCBhdHRyaWJ1dGVzID0ge307XG4gICAgICAgIGlmIChhdHRyTm9kZSkge1xuICAgICAgICAgICAgYXR0ck5vZGUuY2hpbGRyZW4uZm9yRWFjaCh4ID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IHguY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlID09ICdOQ05hbWUnKVswXS50ZXh0O1xuICAgICAgICAgICAgICAgIGlmIChuYW1lIGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFRva2VuRXJyb3JfMS5Ub2tlbkVycm9yKCdEdXBsaWNhdGVkIGF0dHJpYnV0ZSAnICsgbmFtZSwgeCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzW25hbWVdID0geC5jaGlsZHJlbi5maWx0ZXIoeCA9PiB4LnR5cGUgPT0gJ0F0dHJpYnV0ZVZhbHVlJylbMF0udGV4dDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgYm5mID0gdG9rZW4uY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlID09ICdTZXF1ZW5jZU9yRGlmZmVyZW5jZScpLm1hcChzID0+IGdldFN1Ykl0ZW1zKHRtcFJ1bGVzLCBzLCBuYW1lLCBwYXJlbnRBdHRyaWJ1dGVzID8gcGFyZW50QXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMpKTtcbiAgICAgICAgbGV0IHJ1bGUgPSB7XG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgYm5mXG4gICAgICAgIH07XG4gICAgICAgIGlmIChuYW1lLmluZGV4T2YoJyUnKSA9PSAwKVxuICAgICAgICAgICAgcnVsZS5mcmFnbWVudCA9IHRydWU7XG4gICAgICAgIGlmIChhdHRyaWJ1dGVzWydyZWNvdmVyVW50aWwnXSkge1xuICAgICAgICAgICAgcnVsZS5yZWNvdmVyID0gYXR0cmlidXRlc1sncmVjb3ZlclVudGlsJ107XG4gICAgICAgICAgICBpZiAocnVsZS5ibmYubGVuZ3RoID4gMSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVG9rZW5FcnJvcl8xLlRva2VuRXJyb3IoJ29ubHkgb25lLW9wdGlvbiBwcm9kdWN0aW9ucyBhcmUgc3VpdGFibGUgZm9yIGVycm9yIHJlY292ZXJpbmcnLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCdwaW4nIGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIGxldCBudW0gPSBwYXJzZUludChhdHRyaWJ1dGVzWydwaW4nXSk7XG4gICAgICAgICAgICBpZiAoIWlzTmFOKG51bSkpIHtcbiAgICAgICAgICAgICAgICBydWxlLnBpbm5lZCA9IG51bTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChydWxlLmJuZi5sZW5ndGggPiAxKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUb2tlbkVycm9yXzEuVG9rZW5FcnJvcignb25seSBvbmUtb3B0aW9uIHByb2R1Y3Rpb25zIGFyZSBzdWl0YWJsZSBmb3IgcGlubmluZycsIHRva2VuKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJ3dzJyBpbiBhdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICBydWxlLmltcGxpY2l0V3MgPSBhdHRyaWJ1dGVzWyd3cyddICE9ICdleHBsaWNpdCc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBydWxlLmltcGxpY2l0V3MgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJ1bGUuZnJhZ21lbnQgPSBydWxlLmZyYWdtZW50IHx8IGF0dHJpYnV0ZXNbJ2ZyYWdtZW50J10gPT0gJ3RydWUnO1xuICAgICAgICBydWxlLnNpbXBsaWZ5V2hlbk9uZUNoaWxkcmVuID0gYXR0cmlidXRlc1snc2ltcGxpZnlXaGVuT25lQ2hpbGRyZW4nXSA9PSAndHJ1ZSc7XG4gICAgICAgIHRtcFJ1bGVzLnB1c2gocnVsZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldFJ1bGVzKHNvdXJjZSwgcGFyc2VyID0gQk5GLmRlZmF1bHRQYXJzZXIpIHtcbiAgICAgICAgbGV0IGFzdCA9IHBhcnNlci5nZXRBU1Qoc291cmNlKTtcbiAgICAgICAgaWYgKCFhc3QpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBwYXJzZSAnICsgc291cmNlKTtcbiAgICAgICAgaWYgKGFzdC5lcnJvcnMgJiYgYXN0LmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IGFzdC5lcnJvcnNbMF07XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGltcGxpY2l0V3MgPSBudWxsO1xuICAgICAgICBsZXQgYXR0ck5vZGUgPSBhc3QuY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlID09ICdBdHRyaWJ1dGVzJylbMF07XG4gICAgICAgIGxldCBhdHRyaWJ1dGVzID0ge307XG4gICAgICAgIGlmIChhdHRyTm9kZSkge1xuICAgICAgICAgICAgYXR0ck5vZGUuY2hpbGRyZW4uZm9yRWFjaCh4ID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IHguY2hpbGRyZW4uZmlsdGVyKHggPT4geC50eXBlID09ICdOQ05hbWUnKVswXS50ZXh0O1xuICAgICAgICAgICAgICAgIGlmIChuYW1lIGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFRva2VuRXJyb3JfMS5Ub2tlbkVycm9yKCdEdXBsaWNhdGVkIGF0dHJpYnV0ZSAnICsgbmFtZSwgeCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzW25hbWVdID0geC5jaGlsZHJlbi5maWx0ZXIoeCA9PiB4LnR5cGUgPT0gJ0F0dHJpYnV0ZVZhbHVlJylbMF0udGV4dDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpbXBsaWNpdFdzID0gYXR0cmlidXRlc1snd3MnXSA9PSAnaW1wbGljaXQnO1xuICAgICAgICBsZXQgdG1wUnVsZXMgPSBbXTtcbiAgICAgICAgYXN0LmNoaWxkcmVuLmZpbHRlcih4ID0+IHgudHlwZSA9PSAnUHJvZHVjdGlvbicpLm1hcCgoeCkgPT4ge1xuICAgICAgICAgICAgbGV0IG5hbWUgPSB4LmNoaWxkcmVuLmZpbHRlcih4ID0+IHgudHlwZSA9PSAnTkNOYW1lJylbMF0udGV4dDtcbiAgICAgICAgICAgIGNyZWF0ZVJ1bGUodG1wUnVsZXMsIHgsIG5hbWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgdG1wUnVsZXMuZm9yRWFjaChydWxlID0+IHtcbiAgICAgICAgICAgIGlmIChydWxlLmltcGxpY2l0V3MgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgcnVsZS5pbXBsaWNpdFdzID0gaW1wbGljaXRXcztcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0bXBSdWxlcztcbiAgICB9XG4gICAgQk5GLmdldFJ1bGVzID0gZ2V0UnVsZXM7XG4gICAgZnVuY3Rpb24gVHJhbnNmb3JtKHNvdXJjZSwgc3ViUGFyc2VyID0gQk5GLmRlZmF1bHRQYXJzZXIpIHtcbiAgICAgICAgcmV0dXJuIGdldFJ1bGVzKHNvdXJjZS5qb2luKCcnKSwgc3ViUGFyc2VyKTtcbiAgICB9XG4gICAgQk5GLlRyYW5zZm9ybSA9IFRyYW5zZm9ybTtcbiAgICBjbGFzcyBQYXJzZXIgZXh0ZW5kcyBQYXJzZXJfMS5QYXJzZXIge1xuICAgICAgICBjb25zdHJ1Y3Rvcihzb3VyY2UsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHN1YlBhcnNlciA9IG9wdGlvbnMgJiYgb3B0aW9ucy5kZWJ1Z1J1bGVzUGFyc2VyID09PSB0cnVlID8gbmV3IFBhcnNlcl8xLlBhcnNlcihCTkYuUlVMRVMsIHsgZGVidWc6IHRydWUgfSkgOiBCTkYuZGVmYXVsdFBhcnNlcjtcbiAgICAgICAgICAgIHN1cGVyKGdldFJ1bGVzKHNvdXJjZSwgc3ViUGFyc2VyKSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgZW1pdFNvdXJjZSgpIHtcbiAgICAgICAgICAgIHJldHVybiBlbWl0KHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIEJORi5QYXJzZXIgPSBQYXJzZXI7XG59KShCTkYgfHwgKEJORiA9IHt9KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBCTkY7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1DdXN0b20uanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgQk5GXzEgPSByZXF1aXJlKFwiLi9CTkZcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJCTkZcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEJORl8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgVzNDRUJORl8xID0gcmVxdWlyZShcIi4vVzNDRUJORlwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlczQ1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gVzNDRUJORl8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgQ3VzdG9tXzEgPSByZXF1aXJlKFwiLi9DdXN0b21cIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJDdXN0b21cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEN1c3RvbV8xLmRlZmF1bHQ7IH0gfSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBQYXJzZXJfMSA9IHJlcXVpcmUoXCIuL1BhcnNlclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlBhcnNlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gUGFyc2VyXzEuUGFyc2VyOyB9IH0pO1xudmFyIFRva2VuRXJyb3JfMSA9IHJlcXVpcmUoXCIuL1Rva2VuRXJyb3JcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUb2tlbkVycm9yXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBUb2tlbkVycm9yXzEuVG9rZW5FcnJvcjsgfSB9KTtcbmV4cG9ydHMuR3JhbW1hcnMgPSByZXF1aXJlKFwiLi9HcmFtbWFyc1wiKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5wYXJzZUZvcm11bGEgPSBleHBvcnRzLnBhcnNlQW5kQXBwbHkgPSBleHBvcnRzLlNvdXJjZSA9IGV4cG9ydHMuRm9ybXVsYSA9IHZvaWQgMDtcbmNvbnN0IG5ldmVydGhyb3dfMSA9IHJlcXVpcmUoXCIuLi9uZXZlcnRocm93L25ldmVydGhyb3dcIik7XG5jb25zdCBhbGdlYnJhaWNfb3BlcmF0aW9uXzEgPSByZXF1aXJlKFwiLi9hbGdlYnJhaWNfb3BlcmF0aW9uXCIpO1xuY29uc3QgYXN0X3V0aWxzXzEgPSByZXF1aXJlKFwiLi9hc3RfdXRpbHNcIik7XG5jb25zdCBjb25kaXRpb25hbF9mdW5jdGlvbl8xID0gcmVxdWlyZShcIi4vY29uZGl0aW9uYWxfZnVuY3Rpb25cIik7XG5jb25zdCBjb25zdGFudF8xID0gcmVxdWlyZShcIi4vY29uc3RhbnRcIik7XG5jb25zdCBkZXN0aW5hdGlvbl8xID0gcmVxdWlyZShcIi4vZGVzdGluYXRpb25cIik7XG5jb25zdCBkaXNwbGF5X2RpcmVjdGl2ZV8xID0gcmVxdWlyZShcIi4vZGlzcGxheV9kaXJlY3RpdmVcIik7XG5jb25zdCByYW5nZV8xID0gcmVxdWlyZShcIi4vcmFuZ2VcIik7XG5jb25zdCByZWZlcmVuY2VfMSA9IHJlcXVpcmUoXCIuL3JlZmVyZW5jZVwiKTtcbmNvbnN0IHNpbmdsZV9wYXJhbV9mdW5jdGlvbl8xID0gcmVxdWlyZShcIi4vc2luZ2xlX3BhcmFtX2Z1bmN0aW9uXCIpO1xuY29uc3QgZWJuZl8xID0gcmVxdWlyZShcImVibmZcIik7XG5jb25zdCBsb2Rhc2hfMSA9IHJlcXVpcmUoXCJsb2Rhc2hcIik7XG4vKipcbiAqIFczQyBncmFtbWFyIGRlc2NyaWJpbmcgYSB2YWxpZCBmb3JtdWxhIGF0IHRoZSBib3R0b20gb2YgYSB0YWJsZS5cbiAqXG4gKiBUaGUgbGlicmFyeSBiZWluZyB1c2VkIHRvIHBhcnNlIHRoZSBmb3JtdWxhIGRvZXMgbm90IHN1cG9ydCBFQk5GLCBvbmx5IEJORixcbiAqIHNvIFczQyBzeW50YXggd2FzIHVzZWQgaW4gb3JkZXIgdG8gZ2V0IGFjY2VzcyB0byBleHRlbmRlZCBmZWF0dXJlcy5cbiAqXG4gKiBUaGUgcGFyc2VyIGdlbmVyYXRlcyBhIFBFRyBwYXJzZXIsIHdoaWMgaXMgbm90IGFibGUgdG8gaGFuZGxlIGFtYmlndWl0eS4gVGhlXG4gKiBvcmRlciBvZiBjb25zdHJ1Y3Rpb25zIGlzIHNpZ25pZmljYW50LlxuICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9seXMtbGFuZy9ub2RlLWVibmYvaXNzdWVzLzM0XG4gKi9cbmNvbnN0IHBhcnNlckdyYW1tYXIgPSBgXG50YmxmbV9saW5lICAgOjo9IFwiPCEtLSBUQkxGTTogXCIgZm9ybXVsYV9saXN0IFwiIC0tPlwiXG5mb3JtdWxhX2xpc3QgOjo9IGZvcm11bGEgKCBcIjo6XCIgZm9ybXVsYV9saXN0ICk/XG5mb3JtdWxhICAgICAgOjo9IGRlc3RpbmF0aW9uIFwiPVwiIHNvdXJjZSBkaXNwbGF5X2RpcmVjdGl2ZT9cblxuc291cmNlICAgICAgICAgICA6Oj0gcmFuZ2UgfCBzb3VyY2VfcmVmZXJlbmNlIHwgc2luZ2xlX3BhcmFtX2Z1bmN0aW9uX2NhbGwgfCBjb25kaXRpb25hbF9mdW5jdGlvbl9jYWxsIHwgYWxnZWJyYWljX29wZXJhdGlvbiB8IGZsb2F0IHwgcmVhbFxucmFuZ2UgICAgICAgICAgICA6Oj0gc291cmNlX3JlZmVyZW5jZSBcIi4uXCIgc291cmNlX3JlZmVyZW5jZVxuc291cmNlX3JlZmVyZW5jZSA6Oj0gYWJzb2x1dGVfcmVmZXJlbmNlIHwgcmVsYXRpdmVfcmVmZXJlbmNlXG5kZXN0aW5hdGlvbiAgICAgIDo6PSByYW5nZSB8IGFic29sdXRlX3JlZmVyZW5jZVxuXG5yZWxhdGl2ZV9yZWZlcmVuY2UgOjo9IChyZWxhdGl2ZV9yb3cgfCBhYnNvbHV0ZV9yb3cpIChyZWxhdGl2ZV9jb2x1bW4gfCBhYnNvbHV0ZV9jb2x1bW4pIHwgcmVsYXRpdmVfcm93IHwgcmVsYXRpdmVfY29sdW1uXG5yZWxhdGl2ZV9yb3cgOjo9IFwiQFwiICggXCItXCIgfCBcIitcIiApIGludFxucmVsYXRpdmVfY29sdW1uIDo6PSBcIiRcIiAoIFwiLVwiIHwgXCIrXCIgKSBpbnRcblxuYWJzb2x1dGVfcmVmZXJlbmNlIDo6PSBhYnNvbHV0ZV9yb3cgYWJzb2x1dGVfY29sdW1uIHwgYWJzb2x1dGVfcm93IHwgYWJzb2x1dGVfY29sdW1uXG5hYnNvbHV0ZV9yb3cgOjo9IFwiQFwiICggXCJJXCIgfCBcIjxcIiB8IFwiPlwiIHwgaW50IClcbmFic29sdXRlX2NvbHVtbiA6Oj0gXCIkXCIgKCBcIjxcIiB8IFwiPlwiIHwgaW50IClcblxuc2luZ2xlX3BhcmFtX2Z1bmN0aW9uX2NhbGwgOjo9IHNpbmdsZV9wYXJhbV9mdW5jdGlvbiBcIihcIiBzb3VyY2UgXCIpXCIgXG5zaW5nbGVfcGFyYW1fZnVuY3Rpb24gICAgICA6Oj0gXCJtZWFuXCIgfCBcInN1bVwiXG5cbmNvbmRpdGlvbmFsX2Z1bmN0aW9uX2NhbGwgOjo9IFwiaWYoXCIgcHJlZGljYXRlIFwiLFwiIFwiIFwiPyBzb3VyY2UgXCIsXCIgXCIgXCI/IHNvdXJjZSBcIilcIlxucHJlZGljYXRlICAgICAgICAgICAgICAgICA6Oj0gc291cmNlX3dpdGhvdXRfcmFuZ2UgY29uZGl0aW9uYWxfb3BlcmF0b3Igc291cmNlX3dpdGhvdXRfcmFuZ2VcbnNvdXJjZV93aXRob3V0X3JhbmdlICAgICAgOjo9IHNvdXJjZV9yZWZlcmVuY2UgfCBzaW5nbGVfcGFyYW1fZnVuY3Rpb25fY2FsbCB8IGNvbmRpdGlvbmFsX2Z1bmN0aW9uX2NhbGwgfCBhbGdlYnJhaWNfb3BlcmF0aW9uIHwgZmxvYXQgfCByZWFsXG5jb25kaXRpb25hbF9vcGVyYXRvciAgICAgIDo6PSBcIj5cIiB8IFwiPFwiIHwgXCI+PVwiIHwgXCI8PVwiIHwgXCI9PVwiIHwgXCIhPVwiXG5cbmFsZ2VicmFpY19vcGVyYXRpb24gOjo9IFwiKFwiIHNvdXJjZSBcIiBcIj8gYWxnZWJyYWljX29wZXJhdG9yIFwiIFwiPyBzb3VyY2UgXCIpXCJcbmFsZ2VicmFpY19vcGVyYXRvciAgOjo9IFwiK1wiIHwgXCItXCIgfCBcIipcIiB8IFwiL1wiXG5cbmRpc3BsYXlfZGlyZWN0aXZlICAgICAgICA6Oj0gXCI7XCIgZGlzcGxheV9kaXJlY3RpdmVfb3B0aW9uXG5kaXNwbGF5X2RpcmVjdGl2ZV9vcHRpb24gOjo9IGZvcm1hdHRpbmdfZGlyZWN0aXZlIHwgZGF0ZXRpbWVfZGlyZWN0aXZlIHwgaG91cm1pbnV0ZV9kaXJlY3RpdmVcbmZvcm1hdHRpbmdfZGlyZWN0aXZlICAgICA6Oj0gXCIlLlwiIGludCBcImZcIlxuZGF0ZXRpbWVfZGlyZWN0aXZlICAgICAgIDo6PSBcImR0XCJcbmhvdXJtaW51dGVfZGlyZWN0aXZlICAgICA6Oj0gXCJobVwiXG5cbmZsb2F0IDo6PSBcIi1cIj8gaW50IFwiLlwiIGludFxucmVhbCA6Oj0gXCItXCI/IGludFxuaW50ICA6Oj0gWzAtOV0rXG5gO1xuY2xhc3MgRm9ybXVsYSB7XG4gICAgY29uc3RydWN0b3IoYXN0LCB0YWJsZSkge1xuICAgICAgICB0aGlzLm1lcmdlID0gKHRhYmxlKSA9PiB0aGlzLmRlc3RpbmF0aW9uLm1lcmdlKHRoaXMuc291cmNlLCB0YWJsZSk7XG4gICAgICAgIGxldCBmb3JtYXR0ZXIgPSBuZXcgZGlzcGxheV9kaXJlY3RpdmVfMS5EZWZhdWx0Rm9ybWF0dGVyKCk7XG4gICAgICAgIGlmIChhc3QuY2hpbGRyZW4ubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZXIgPSBuZXcgZGlzcGxheV9kaXJlY3RpdmVfMS5EaXNwbGF5RGlyZWN0aXZlKGFzdC5jaGlsZHJlblsyXSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGVzdGluYXRpb24gPSAoMCwgZGVzdGluYXRpb25fMS5uZXdEZXN0aW5hdGlvbikoYXN0LmNoaWxkcmVuWzBdLCB0YWJsZSwgZm9ybWF0dGVyKTtcbiAgICAgICAgaWYgKGRlc3RpbmF0aW9uLmlzRXJyKCkpIHtcbiAgICAgICAgICAgIHRocm93IGRlc3RpbmF0aW9uLmVycm9yO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbi52YWx1ZTtcbiAgICAgICAgdGhpcy5zb3VyY2UgPSBuZXcgU291cmNlKGFzdC5jaGlsZHJlblsxXSwgdGFibGUpO1xuICAgIH1cbn1cbmV4cG9ydHMuRm9ybXVsYSA9IEZvcm11bGE7XG5jbGFzcyBTb3VyY2Uge1xuICAgIGNvbnN0cnVjdG9yKGFzdCwgdGFibGUpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGdldFZhbHVlIHJldHVybnMgdGhlIGV2YWx1YXRlZCB2YWx1ZSBmb3IgdGhpcyBzb3VyY2UgcmVjdXJzaXZlbHkuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmdldFZhbHVlID0gKHRhYmxlLCBjdXJyZW50Q2VsbCkgPT4gdGhpcy5sb2NhdGlvbkRlc2NyaXB0b3IuZ2V0VmFsdWUodGFibGUsIGN1cnJlbnRDZWxsKTtcbiAgICAgICAgaWYgKGFzdC50eXBlICE9PSAnc291cmNlJyAmJiBhc3QudHlwZSAhPT0gJ3NvdXJjZV93aXRob3V0X3JhbmdlJykge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0ludmFsaWQgQVNUIHRva2VuIHR5cGUgb2YgJyArIGFzdC50eXBlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXN0LmNoaWxkcmVuLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1VuZXhwZWN0ZWQgY2hpbGRyZW4gbGVuZ3RoIGluIFNvdXJjZScpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcmFtQ2hpbGQgPSBhc3QuY2hpbGRyZW5bMF07XG4gICAgICAgIGNvbnN0IHZwID0gbmV3VmFsdWVQcm92aWRlcihwYXJhbUNoaWxkLCB0YWJsZSk7XG4gICAgICAgIGlmICh2cC5pc0VycigpKSB7XG4gICAgICAgICAgICB0aHJvdyB2cC5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvY2F0aW9uRGVzY3JpcHRvciA9IHZwLnZhbHVlO1xuICAgIH1cbn1cbmV4cG9ydHMuU291cmNlID0gU291cmNlO1xuY29uc3QgbmV3VmFsdWVQcm92aWRlciA9IChhc3QsIHRhYmxlKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgc3dpdGNoIChhc3QudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAncmFuZ2UnOlxuICAgICAgICAgICAgICAgIHJldHVybiAoMCwgbmV2ZXJ0aHJvd18xLm9rKShuZXcgcmFuZ2VfMS5SYW5nZShhc3QsIHRhYmxlKSk7XG4gICAgICAgICAgICBjYXNlICdzb3VyY2VfcmVmZXJlbmNlJzpcbiAgICAgICAgICAgICAgICBjb25zdCBsZW5ndGhFcnJvciA9ICgwLCBhc3RfdXRpbHNfMS5jaGVja0NoaWxkTGVuZ3RoKShhc3QsIDEpO1xuICAgICAgICAgICAgICAgIGlmIChsZW5ndGhFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDAsIG5ldmVydGhyb3dfMS5lcnIpKGxlbmd0aEVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuICgwLCBuZXZlcnRocm93XzEub2spKG5ldyByZWZlcmVuY2VfMS5SZWZlcmVuY2UoYXN0LmNoaWxkcmVuWzBdLCB0YWJsZSkpO1xuICAgICAgICAgICAgY2FzZSAnc2luZ2xlX3BhcmFtX2Z1bmN0aW9uX2NhbGwnOlxuICAgICAgICAgICAgICAgIHJldHVybiAoMCwgbmV2ZXJ0aHJvd18xLm9rKShuZXcgc2luZ2xlX3BhcmFtX2Z1bmN0aW9uXzEuU2luZ2xlUGFyYW1GdW5jdGlvbkNhbGwoYXN0LCB0YWJsZSkpO1xuICAgICAgICAgICAgY2FzZSAnY29uZGl0aW9uYWxfZnVuY3Rpb25fY2FsbCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICgwLCBuZXZlcnRocm93XzEub2spKG5ldyBjb25kaXRpb25hbF9mdW5jdGlvbl8xLkNvbmRpdGlvbmFsRnVuY3Rpb25DYWxsKGFzdCwgdGFibGUpKTtcbiAgICAgICAgICAgIGNhc2UgJ2FsZ2VicmFpY19vcGVyYXRpb24nOlxuICAgICAgICAgICAgICAgIHJldHVybiAoMCwgbmV2ZXJ0aHJvd18xLm9rKShuZXcgYWxnZWJyYWljX29wZXJhdGlvbl8xLkFsZ2VicmFpY09wZXJhdGlvbihhc3QsIHRhYmxlKSk7XG4gICAgICAgICAgICBjYXNlICdyZWFsJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gKDAsIG5ldmVydGhyb3dfMS5vaykobmV3IGNvbnN0YW50XzEuQ29uc3RhbnQoYXN0LCB0YWJsZSkpO1xuICAgICAgICAgICAgY2FzZSAnZmxvYXQnOlxuICAgICAgICAgICAgICAgIHJldHVybiAoMCwgbmV2ZXJ0aHJvd18xLm9rKShuZXcgY29uc3RhbnRfMS5Db25zdGFudChhc3QsIHRhYmxlKSk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdVbnJlY29nbml6ZWQgdmFsdWVQcm92aWRlciB0eXBlICcgKyBhc3QudHlwZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiAoMCwgbmV2ZXJ0aHJvd18xLmVycikoZXJyb3IpO1xuICAgIH1cbn07XG5jb25zdCBwYXJzZUFuZEFwcGx5ID0gKGZvcm11bGFMaW5lcywgdGFibGUpID0+IHtcbiAgICAvLyBQYXJzZSBlYWNoIGZvcm11bGEgbGluZSwgZmxhdHRlbmluZyB0aGUgcmVzdWx0aW5nIGxpc3RzIG9mIGZvcm11bGFzIGludG8gYVxuICAgIC8vIHNpbmdsZSBsaXN0LCBidXQgcmV0dXJuaW5nIGFuIGVycm9yIGlmIGFueSBmb3JtdWxhIGZhaWxzIHRvIHBhcnNlLlxuICAgIGNvbnN0IGZvcm11bGFzID0gZm9ybXVsYUxpbmVzLnJlZHVjZSgocHJldiwgZm9ybXVsYUxpbmUpID0+IHByZXYuYW5kVGhlbigoY3VycmVudEZvcm11bGFzKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0Zvcm11bGFzID0gKDAsIGV4cG9ydHMucGFyc2VGb3JtdWxhKShmb3JtdWxhTGluZSwgdGFibGUpO1xuICAgICAgICBpZiAobmV3Rm9ybXVsYXMuaXNFcnIoKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ld0Zvcm11bGFzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoMCwgbmV2ZXJ0aHJvd18xLm9rKSgoMCwgbG9kYXNoXzEuY29uY2F0KShuZXdGb3JtdWxhcy52YWx1ZSwgY3VycmVudEZvcm11bGFzKSk7XG4gICAgfSksICgwLCBuZXZlcnRocm93XzEub2spKFtdKSk7XG4gICAgLy8gSWYgdGhlcmUgaXMgbm8gZXJyb3IsXG4gICAgcmV0dXJuIGZvcm11bGFzLmFuZFRoZW4oKGlubmVyRm9ybXVsYXMpID0+IFxuICAgIC8vIGZvciBlYWNoIGZvcm11bGFcbiAgICBpbm5lckZvcm11bGFzLnJlZHVjZVJpZ2h0KChwcmV2VmFsdWUsIGZvcm11bGEpID0+IFxuICAgIC8vIElmIHRoZSBwcmV2aW91cyBmb3JtdWxhIGRpZG4ndCBnaXZlIGFuIGVycm9yXG4gICAgcHJldlZhbHVlLmFuZFRoZW4oKHByZXZUYWJsZSkgPT4gXG4gICAgLy8gYXR0ZW1wdCB0byBhcHBseSB0aGlzIGZvcm11bGEgdG8gdGhlIHRhYmxlIGFuZCByZXR1cm4gdGhlIHJlc3VsdFxuICAgIGZvcm11bGEubWVyZ2UocHJldlRhYmxlKSksIFxuICAgIC8vIFN0YXJ0IHdpdGggdGhlIGN1cnJlbnQgdGFibGUgc3RhdGVcbiAgICAoMCwgbmV2ZXJ0aHJvd18xLm9rKSh0YWJsZSkpKTtcbn07XG5leHBvcnRzLnBhcnNlQW5kQXBwbHkgPSBwYXJzZUFuZEFwcGx5O1xuLyoqXG4gKiBQYXJzZSB0aGUgcHJvdmlkZWQgbGluZSwgcmV0dXJuaW5nIGFueSBmb3VuZCBmb3JtdWxhcy4gQSBzaW5nbGUgbGluZSBtYXlcbiAqIGNvbnRhaW4gemVybyBvciBtb3JlIGZvcm11bGFzLlxuICpcbiAqIEBwYXJhbSBsaW5lIEEgbGluZSBvZiB0aGUgZm9ybSBgPCEtLSBUQkZNOiB7Rk9STVVMQX06OntGT1JNVUxBfSAtLT5gXG4gKi9cbmNvbnN0IHBhcnNlRm9ybXVsYSA9IChsaW5lLCB0YWJsZSkgPT4ge1xuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBlYm5mXzEuR3JhbW1hcnMuVzNDLlBhcnNlcihwYXJzZXJHcmFtbWFyKTtcbiAgICBjb25zdCBhc3QgPSBwYXJzZXIuZ2V0QVNUKGxpbmUpO1xuICAgIC8vIFRPRE86IERldGVybWluZSBob3cgdG8gcmV0dXJuIGVycm9ycyB3aGVuIGEgZm9ybXVsYS1saWtlIHN0cmluZ1xuICAgIC8vICAgICAgIGlzIG5vdCBhY3R1YWxseSBhIHZhbGlkIGZvcm11bGEuXG4gICAgaWYgKCFhc3QpIHtcbiAgICAgICAgcmV0dXJuICgwLCBuZXZlcnRocm93XzEuZXJyKShuZXcgRXJyb3IoYEZvcm11bGEgJyR7bGluZX0nIGNvdWxkIG5vdCBiZSBwYXJzZWRgKSk7XG4gICAgfVxuICAgIGNvbnN0IHR5cGVFcnJvciA9ICgwLCBhc3RfdXRpbHNfMS5jaGVja1R5cGUpKGFzdCwgJ3RibGZtX2xpbmUnKTtcbiAgICBpZiAodHlwZUVycm9yKSB7XG4gICAgICAgIHJldHVybiAoMCwgbmV2ZXJ0aHJvd18xLmVycikodHlwZUVycm9yKTtcbiAgICB9XG4gICAgY29uc3QgbGVuZ3RoRXJyb3IgPSAoMCwgYXN0X3V0aWxzXzEuY2hlY2tDaGlsZExlbmd0aCkoYXN0LCAxKTtcbiAgICBpZiAobGVuZ3RoRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuICgwLCBuZXZlcnRocm93XzEuZXJyKShsZW5ndGhFcnJvcik7XG4gICAgfVxuICAgIGxldCB1bnBhcnNlZEZvcm11bGFzID0gYXN0LmNoaWxkcmVuWzBdLmNoaWxkcmVuO1xuICAgIGNvbnN0IGZvcm11bGFzID0gW107XG4gICAgdHJ5IHtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgZm9ybXVsYXMucHVzaChuZXcgRm9ybXVsYSh1bnBhcnNlZEZvcm11bGFzWzBdLCB0YWJsZSkpO1xuICAgICAgICAgICAgaWYgKHVucGFyc2VkRm9ybXVsYXMubGVuZ3RoID4gMSAmJlxuICAgICAgICAgICAgICAgIHVucGFyc2VkRm9ybXVsYXNbMV0udHlwZSA9PT0gJ2Zvcm11bGFfbGlzdCcpIHtcbiAgICAgICAgICAgICAgICB1bnBhcnNlZEZvcm11bGFzID0gdW5wYXJzZWRGb3JtdWxhc1sxXS5jaGlsZHJlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHVucGFyc2VkRm9ybXVsYXMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSB3aGlsZSAodW5wYXJzZWRGb3JtdWxhcy5sZW5ndGggPiAwKTtcbiAgICAgICAgcmV0dXJuICgwLCBuZXZlcnRocm93XzEub2spKGZvcm11bGFzKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiAoMCwgbmV2ZXJ0aHJvd18xLmVycikoZXJyb3IpO1xuICAgIH1cbn07XG5leHBvcnRzLnBhcnNlRm9ybXVsYSA9IHBhcnNlRm9ybXVsYTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5UYWJsZSA9IHZvaWQgMDtcbmNvbnN0IGNhbGNfMSA9IHJlcXVpcmUoXCIuL2NhbGMvY2FsY1wiKTtcbmNvbnN0IGZvY3VzXzEgPSByZXF1aXJlKFwiLi9mb2N1c1wiKTtcbmNvbnN0IHBvaW50XzEgPSByZXF1aXJlKFwiLi9wb2ludFwiKTtcbmNvbnN0IHJhbmdlXzEgPSByZXF1aXJlKFwiLi9yYW5nZVwiKTtcbi8qKlxuICogQSBgVGFibGVgIG9iamVjdCByZXByZXNlbnRzIGEgdGFibGUuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuY2xhc3MgVGFibGUge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgYFRhYmxlYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm93cyAtIEFuIGFycmF5IG9mIHJvd3MgdGhhdCB0aGUgdGFibGUgY29udGFpbnMuXG4gICAgICogQHBhcmFtIGZvcm11bGFzIC0gQW4gYXJyYXkgb2YgZm9ybXVsYXMgYXR0YWNoZWQgdG8gdGhlIHRhYmxlLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHJvd3MpIHtcbiAgICAgICAgdGhpcy5fcm93cyA9IHJvd3Muc2xpY2UoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbnVtYmVyIG9mIHJvd3MgaW4gdGhlIHRhYmxlLlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIG51bWJlciBvZiByb3dzLlxuICAgICAqL1xuICAgIGdldEhlaWdodCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvd3MubGVuZ3RoO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBtYXhpbXVtIHdpZHRoIG9mIHRoZSByb3dzIGluIHRoZSB0YWJsZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBtYXhpbXVtIHdpZHRoIG9mIHRoZSByb3dzLlxuICAgICAqL1xuICAgIGdldFdpZHRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm93c1xuICAgICAgICAgICAgLm1hcCgocm93KSA9PiByb3cuZ2V0V2lkdGgoKSlcbiAgICAgICAgICAgIC5yZWR1Y2UoKHgsIHkpID0+IE1hdGgubWF4KHgsIHkpLCAwKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgd2lkdGggb2YgdGhlIGhlYWRlciByb3cuXG4gICAgICogQXNzdW1lcyB0aGF0IGl0IGlzIGNhbGxlZCBvbiBhIHZhbGlkIHRhYmxlIHdpdGggYSBoZWFkZXIgcm93LlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIHdpZHRoIG9mIHRoZSBoZWFkZXIgcm93XG4gICAgICovXG4gICAgZ2V0SGVhZGVyV2lkdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3dzWzBdLmdldFdpZHRoKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHJvd3MgdGhhdCB0aGUgdGFibGUgY29udGFpbnMuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiB0aGUgcm93cy5cbiAgICAgKi9cbiAgICBnZXRSb3dzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm93cy5zbGljZSgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBkZWxpbWl0ZXIgcm93IG9mIHRoZSB0YWJsZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBkZWxpbWl0ZXIgcm93OyBgdW5kZWZpbmVkYCBpZiB0aGVyZSBpcyBub3QgZGVsaW1pdGVyIHJvdy5cbiAgICAgKi9cbiAgICBnZXREZWxpbWl0ZXJSb3coKSB7XG4gICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuX3Jvd3NbMV07XG4gICAgICAgIGlmIChyb3cgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocm93LmlzRGVsaW1pdGVyKCkpIHtcbiAgICAgICAgICAgIHJldHVybiByb3c7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0cyBhIGNlbGwgYXQgdGhlIHNwZWNpZmllZCBpbmRleC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByb3dJbmRleCAtIFJvdyBpbmRleCBvZiB0aGUgY2VsbC5cbiAgICAgKiBAcGFyYW0gY29sdW1uSW5kZXggLSBDb2x1bW4gaW5kZXggb2YgdGhlIGNlbGwuXG4gICAgICogQHJldHVybnMgVGhlIGNlbGwgYXQgdGhlIHNwZWNpZmllZCBpbmRleDsgYHVuZGVmaW5lZGAgaWYgbm90IGZvdW5kLlxuICAgICAqL1xuICAgIGdldENlbGxBdChyb3dJbmRleCwgY29sdW1uSW5kZXgpIHtcbiAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5fcm93c1tyb3dJbmRleF07XG4gICAgICAgIGlmIChyb3cgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm93LmdldENlbGxBdChjb2x1bW5JbmRleCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGNlbGwgYXQgdGhlIGZvY3VzLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZvY3VzIC0gRm9jdXMgb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIFRoZSBjZWxsIGF0IHRoZSBmb2N1czsgYHVuZGVmaW5lZGAgaWYgbm90IGZvdW5kLlxuICAgICAqL1xuICAgIGdldEZvY3VzZWRDZWxsKGZvY3VzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENlbGxBdChmb2N1cy5yb3csIGZvY3VzLmNvbHVtbik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSB0YWJsZSB0byBhbiBhcnJheSBvZiB0ZXh0IHJlcHJlc2VudGF0aW9ucyBvZiB0aGUgcm93cy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHRleHQgcmVwcmVzZW50YXRpb25zIG9mIHRoZSByb3dzLlxuICAgICAqL1xuICAgIHRvTGluZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3dzLm1hcCgocm93KSA9PiByb3cudG9UZXh0KCkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXRzIGEgY2VsbCBpbiB0aGUgdGFibGUgdG8gYSBuZXcgdmFsdWUsIHJldHVybmluZyBhIGNvcHkgb2YgdGhlIHRhYmxlXG4gICAgICogd2l0aCB0aGUgbW9kaWZpZWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBJZiBhbiBpbnZhbGlkIGluZGV4IGlzIHByb3ZpZGVkLCB0aGUgdGFibGUgd2lsbCBiZSB1bmNoYW5nZWQuXG4gICAgICovXG4gICAgc2V0Q2VsbEF0KHJvd0luZGV4LCBjb2x1bW5JbmRleCwgdmFsdWUpIHtcbiAgICAgICAgY29uc3Qgcm93cyA9IHRoaXMuZ2V0Um93cygpOyAvLyBhIGNvcHlcbiAgICAgICAgcm93c1tyb3dJbmRleF0gPSByb3dzW3Jvd0luZGV4XS5zZXRDZWxsQXQoY29sdW1uSW5kZXgsIHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG5ldyBUYWJsZShyb3dzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYSBmb2N1cyBmcm9tIGEgcG9pbnQgaW4gdGhlIHRleHQgZWRpdG9yLlxuICAgICAqXG4gICAgICogQHBhcmFtIHBvcyAtIEEgcG9pbnQgaW4gdGhlIHRleHQgZWRpdG9yLlxuICAgICAqIEBwYXJhbSByb3dPZmZzZXQgLSBUaGUgcm93IGluZGV4IHdoZXJlIHRoZSB0YWJsZSBzdGFydHMgaW4gdGhlIHRleHQgZWRpdG9yLlxuICAgICAqIEByZXR1cm5zIEEgZm9jdXMgb2JqZWN0IHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIHNwZWNpZmllZCBwb2ludDtcbiAgICAgKiBgdW5kZWZpbmVkYCBpZiB0aGUgcm93IGluZGV4IGlzIG91dCBvZiBib3VuZHMuXG4gICAgICovXG4gICAgZm9jdXNPZlBvc2l0aW9uKHBvcywgcm93T2Zmc2V0KSB7XG4gICAgICAgIGNvbnN0IHJvd0luZGV4ID0gcG9zLnJvdyAtIHJvd09mZnNldDtcbiAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5fcm93c1tyb3dJbmRleF07XG4gICAgICAgIGlmIChyb3cgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocG9zLmNvbHVtbiA8IHJvdy5tYXJnaW5MZWZ0Lmxlbmd0aCArIDEpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgZm9jdXNfMS5Gb2N1cyhyb3dJbmRleCwgLTEsIHBvcy5jb2x1bW4pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNlbGxXaWR0aHMgPSByb3cuZ2V0Q2VsbHMoKS5tYXAoKGNlbGwpID0+IGNlbGwucmF3Q29udGVudC5sZW5ndGgpO1xuICAgICAgICBsZXQgY29sdW1uUG9zID0gcm93Lm1hcmdpbkxlZnQubGVuZ3RoICsgMTsgLy8gbGVmdCBtYXJnaW4gKyBhIHBpcGVcbiAgICAgICAgbGV0IGNvbHVtbkluZGV4ID0gMDtcbiAgICAgICAgZm9yICg7IGNvbHVtbkluZGV4IDwgY2VsbFdpZHRocy5sZW5ndGg7IGNvbHVtbkluZGV4KyspIHtcbiAgICAgICAgICAgIGlmIChjb2x1bW5Qb3MgKyBjZWxsV2lkdGhzW2NvbHVtbkluZGV4XSArIDEgPiBwb3MuY29sdW1uKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb2x1bW5Qb3MgKz0gY2VsbFdpZHRoc1tjb2x1bW5JbmRleF0gKyAxO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IHBvcy5jb2x1bW4gLSBjb2x1bW5Qb3M7XG4gICAgICAgIHJldHVybiBuZXcgZm9jdXNfMS5Gb2N1cyhyb3dJbmRleCwgY29sdW1uSW5kZXgsIG9mZnNldCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGEgcG9zaXRpb24gaW4gdGhlIHRleHQgZWRpdG9yIGZyb20gYSBmb2N1cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmb2N1cyAtIEEgZm9jdXMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSByb3dPZmZzZXQgLSBUaGUgcm93IGluZGV4IHdoZXJlIHRoZSB0YWJsZSBzdGFydHMgaW4gdGhlIHRleHQgZWRpdG9yLlxuICAgICAqIEByZXR1cm5zIEEgcG9zaXRpb24gaW4gdGhlIHRleHQgZWRpdG9yIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIGZvY3VzO1xuICAgICAqIGB1bmRlZmluZWRgIGlmIHRoZSBmb2N1c2VkIHJvdyAgaXMgb3V0IG9mIHRoZSB0YWJsZS5cbiAgICAgKi9cbiAgICBwb3NpdGlvbk9mRm9jdXMoZm9jdXMsIHJvd09mZnNldCkge1xuICAgICAgICBjb25zdCByb3cgPSB0aGlzLl9yb3dzW2ZvY3VzLnJvd107XG4gICAgICAgIGlmIChyb3cgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByb3dQb3MgPSBmb2N1cy5yb3cgKyByb3dPZmZzZXQ7XG4gICAgICAgIGlmIChmb2N1cy5jb2x1bW4gPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IHBvaW50XzEuUG9pbnQocm93UG9zLCBmb2N1cy5vZmZzZXQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNlbGxXaWR0aHMgPSByb3cuZ2V0Q2VsbHMoKS5tYXAoKGNlbGwpID0+IGNlbGwucmF3Q29udGVudC5sZW5ndGgpO1xuICAgICAgICBjb25zdCBtYXhJbmRleCA9IE1hdGgubWluKGZvY3VzLmNvbHVtbiwgY2VsbFdpZHRocy5sZW5ndGgpO1xuICAgICAgICBsZXQgY29sdW1uUG9zID0gcm93Lm1hcmdpbkxlZnQubGVuZ3RoICsgMTtcbiAgICAgICAgZm9yIChsZXQgY29sdW1uSW5kZXggPSAwOyBjb2x1bW5JbmRleCA8IG1heEluZGV4OyBjb2x1bW5JbmRleCsrKSB7XG4gICAgICAgICAgICBjb2x1bW5Qb3MgKz0gY2VsbFdpZHRoc1tjb2x1bW5JbmRleF0gKyAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgcG9pbnRfMS5Qb2ludChyb3dQb3MsIGNvbHVtblBvcyArIGZvY3VzLm9mZnNldCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGEgc2VsZWN0aW9uIHJhbmdlIGZyb20gYSBmb2N1cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmb2N1cyAtIEEgZm9jdXMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSByb3dPZmZzZXQgLSBUaGUgcm93IGluZGV4IHdoZXJlIHRoZSB0YWJsZSBzdGFydHMgaW4gdGhlIHRleHQgZWRpdG9yLlxuICAgICAqIEByZXR1cm5zIEEgcmFuZ2UgdG8gYmUgc2VsZWN0ZWQgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgZm9jdXM7XG4gICAgICogYHVuZGVmaW5lZGAgaWYgdGhlIGZvY3VzIGRvZXMgbm90IHNwZWNpZnkgYW55IGNlbGwgb3IgdGhlIHNwZWNpZmllZCBjZWxsIGlzIGVtcHR5LlxuICAgICAqL1xuICAgIHNlbGVjdGlvblJhbmdlT2ZGb2N1cyhmb2N1cywgcm93T2Zmc2V0KSB7XG4gICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuX3Jvd3NbZm9jdXMucm93XTtcbiAgICAgICAgaWYgKHJvdyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNlbGwgPSByb3cuZ2V0Q2VsbEF0KGZvY3VzLmNvbHVtbik7XG4gICAgICAgIGlmIChjZWxsID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNlbGwuY29udGVudCA9PT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgcm93UG9zID0gZm9jdXMucm93ICsgcm93T2Zmc2V0O1xuICAgICAgICBjb25zdCBjZWxsV2lkdGhzID0gcm93LmdldENlbGxzKCkubWFwKChjZWxsKSA9PiBjZWxsLnJhd0NvbnRlbnQubGVuZ3RoKTtcbiAgICAgICAgbGV0IGNvbHVtblBvcyA9IHJvdy5tYXJnaW5MZWZ0Lmxlbmd0aCArIDE7XG4gICAgICAgIGZvciAobGV0IGNvbHVtbkluZGV4ID0gMDsgY29sdW1uSW5kZXggPCBmb2N1cy5jb2x1bW47IGNvbHVtbkluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbHVtblBvcyArPSBjZWxsV2lkdGhzW2NvbHVtbkluZGV4XSArIDE7XG4gICAgICAgIH1cbiAgICAgICAgY29sdW1uUG9zICs9IGNlbGwucGFkZGluZ0xlZnQ7XG4gICAgICAgIHJldHVybiBuZXcgcmFuZ2VfMS5SYW5nZShuZXcgcG9pbnRfMS5Qb2ludChyb3dQb3MsIGNvbHVtblBvcyksIG5ldyBwb2ludF8xLlBvaW50KHJvd1BvcywgY29sdW1uUG9zICsgY2VsbC5jb250ZW50Lmxlbmd0aCkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFdmFsdWF0ZSB0aGUgZm9ybXVsYSwgYXBwbHlpbmcgdGhlIHJlc3VsdHMgdG8gdGhpcyB0YWJsZSBhbmQgcmV0dXJuaW5nIHRoZVxuICAgICAqIGNoYW5nZXMgYXMgYSBuZXcgdGFibGUuXG4gICAgICovXG4gICAgYXBwbHlGb3JtdWxhcyhmb3JtdWxhTGluZXMpIHtcbiAgICAgICAgcmV0dXJuICgwLCBjYWxjXzEucGFyc2VBbmRBcHBseSkoZm9ybXVsYUxpbmVzLCB0aGlzKTtcbiAgICB9XG59XG5leHBvcnRzLlRhYmxlID0gVGFibGU7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMucmVhZFRhYmxlID0gZXhwb3J0cy5fbWFyZ2luUmVnZXggPSBleHBvcnRzLm1hcmdpblJlZ2V4U3JjID0gZXhwb3J0cy5fcmVhZFJvdyA9IGV4cG9ydHMuX3NwbGl0Q2VsbHMgPSB2b2lkIDA7XG5jb25zdCB0YWJsZV8xID0gcmVxdWlyZShcIi4vdGFibGVcIik7XG5jb25zdCB0YWJsZV9jZWxsXzEgPSByZXF1aXJlKFwiLi90YWJsZS1jZWxsXCIpO1xuY29uc3QgdGFibGVfcm93XzEgPSByZXF1aXJlKFwiLi90YWJsZS1yb3dcIik7XG4vKipcbiAqIFNwbGl0cyBhIHRleHQgaW50byBjZWxscy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5jb25zdCBfc3BsaXRDZWxscyA9ICh0ZXh0KSA9PiB7XG4gICAgY29uc3QgY2VsbHMgPSBbXTtcbiAgICBsZXQgYnVmID0gJyc7XG4gICAgbGV0IHJlc3QgPSB0ZXh0O1xuICAgIHdoaWxlIChyZXN0ICE9PSAnJykge1xuICAgICAgICBzd2l0Y2ggKHJlc3RbMF0pIHtcbiAgICAgICAgICAgIGNhc2UgJ2AnOlxuICAgICAgICAgICAgICAgIC8vIHJlYWQgY29kZSBzcGFuXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGFydE1hdGNoID0gcmVzdC5tYXRjaCgvXmAqLyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGFydE1hdGNoID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlIHN0YXRlbWVudCBlbnN1cmVzIGZpcnN0IGNoYXIgaXMgYSBgIGFuZCB3ZSBjYW5ub3QgZ2V0IGhlcmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGp1c3Qgc2F0aXNmaWVzIHRoZSBjb21waWxlci5cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gc3RhcnRNYXRjaFswXTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGJ1ZjEgPSBzdGFydDtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3QxID0gcmVzdC5zdWJzdHIoc3RhcnQubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNsb3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAocmVzdDEgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdDFbMF0gPT09ICdgJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVuZE1hdGNoID0gcmVzdDEubWF0Y2goL15gKi8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbmRNYXRjaCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlIHN0YXRlbWVudCBlbnN1cmVzIGZpcnN0IGNoYXIgaXMgYSBgIGFuZCB3ZSBjYW5ub3QgZ2V0IGhlcmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMganVzdCBzYXRpc2ZpZXMgdGhlIGNvbXBpbGVyLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kID0gZW5kTWF0Y2hbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmMSArPSBlbmQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdDEgPSByZXN0MS5zdWJzdHIoZW5kLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVuZC5sZW5ndGggPT09IHN0YXJ0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYxICs9IHJlc3QxWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3QxID0gcmVzdDEuc3Vic3RyKDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChjbG9zZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiArPSBidWYxO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdCA9IHJlc3QxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVmICs9ICdgJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3QgPSByZXN0LnN1YnN0cigxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1xcXFwnOlxuICAgICAgICAgICAgICAgIC8vIGVzY2FwZSBuZXh0IGNoYXJhY3RlclxuICAgICAgICAgICAgICAgIGlmIChyZXN0Lmxlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZiArPSByZXN0LnN1YnN0cigwLCAyKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdCA9IHJlc3Quc3Vic3RyKDIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmICs9ICdcXFxcJztcbiAgICAgICAgICAgICAgICAgICAgcmVzdCA9IHJlc3Quc3Vic3RyKDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1snOlxuICAgICAgICAgICAgICAgIC8vIElmIHdlIGVuY291bnRlciBhIHJlbmFtZWQgW1tsaW5rfExpbmtdXSwgYXV0b21hdGljYWxseSBlc2NhcGUgdGhlIHBpcGVcbiAgICAgICAgICAgICAgICBidWYgKz0gJ1snO1xuICAgICAgICAgICAgICAgIHJlc3QgPSByZXN0LnN1YnN0cigxKTtcbiAgICAgICAgICAgICAgICBpZiAoL1xcW1teXFxcXHxcXF1dK1xcfFtefFxcXV0rXV0vLnRlc3QocmVzdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWR4ID0gcmVzdC5pbmRleE9mKCd8Jyk7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZiArPSByZXN0LnNsaWNlKDAsIGlkeCk7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZiArPSAnXFxcXHwnO1xuICAgICAgICAgICAgICAgICAgICByZXN0ID0gcmVzdC5zdWJzdHIoaWR4ICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnfCc6XG4gICAgICAgICAgICAgICAgLy8gZmx1c2ggYnVmZmVyXG4gICAgICAgICAgICAgICAgY2VsbHMucHVzaChidWYpO1xuICAgICAgICAgICAgICAgIGJ1ZiA9ICcnO1xuICAgICAgICAgICAgICAgIHJlc3QgPSByZXN0LnN1YnN0cigxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnVmICs9IHJlc3RbMF07XG4gICAgICAgICAgICAgICAgcmVzdCA9IHJlc3Quc3Vic3RyKDEpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNlbGxzLnB1c2goYnVmKTtcbiAgICByZXR1cm4gY2VsbHM7XG59O1xuZXhwb3J0cy5fc3BsaXRDZWxscyA9IF9zcGxpdENlbGxzO1xuLyoqXG4gKiBSZWFkcyBhIHRhYmxlIHJvdy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHRleHQgLSBBIHRleHQuXG4gKiBAcGFyYW0gW2xlZnRNYXJnaW5SZWdleD0vXlxccyokL10gLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBvYmplY3QgdGhhdCBtYXRjaGVzIGxlZnQgbWFyZ2luLlxuICovXG5jb25zdCBfcmVhZFJvdyA9ICh0ZXh0LCBsZWZ0TWFyZ2luUmVnZXggPSAvXlxccyokLykgPT4ge1xuICAgIGxldCBjZWxscyA9ICgwLCBleHBvcnRzLl9zcGxpdENlbGxzKSh0ZXh0KTtcbiAgICBsZXQgbWFyZ2luTGVmdDtcbiAgICBpZiAoY2VsbHMubGVuZ3RoID4gMCAmJiBsZWZ0TWFyZ2luUmVnZXgudGVzdChjZWxsc1swXSkpIHtcbiAgICAgICAgbWFyZ2luTGVmdCA9IGNlbGxzWzBdO1xuICAgICAgICBjZWxscyA9IGNlbGxzLnNsaWNlKDEpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgbWFyZ2luTGVmdCA9ICcnO1xuICAgIH1cbiAgICBsZXQgbWFyZ2luUmlnaHQ7XG4gICAgaWYgKGNlbGxzLmxlbmd0aCA+IDEgJiYgL15cXHMqJC8udGVzdChjZWxsc1tjZWxscy5sZW5ndGggLSAxXSkpIHtcbiAgICAgICAgbWFyZ2luUmlnaHQgPSBjZWxsc1tjZWxscy5sZW5ndGggLSAxXTtcbiAgICAgICAgY2VsbHMgPSBjZWxscy5zbGljZSgwLCBjZWxscy5sZW5ndGggLSAxKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIG1hcmdpblJpZ2h0ID0gJyc7XG4gICAgfVxuICAgIHJldHVybiBuZXcgdGFibGVfcm93XzEuVGFibGVSb3coY2VsbHMubWFwKChjZWxsKSA9PiBuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbChjZWxsKSksIG1hcmdpbkxlZnQsIG1hcmdpblJpZ2h0KTtcbn07XG5leHBvcnRzLl9yZWFkUm93ID0gX3JlYWRSb3c7XG4vKipcbiAqIENyZWF0ZXMgYSByZWdleCBzb3VyY2Ugc3RyaW5nIG9mIG1hcmdpbiBjaGFyYWN0ZXIgY2xhc3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSBjaGFycyAtIEEgc2V0IG9mIGFkZGl0aW9uYWwgbWFyZ2luIGNoYXJhY3RlcnMuXG4gKiBBIHBpcGUgYHxgLCBhIGJhY2tzbGFzaCBgXFxgLCBhbmQgYSBiYWNrcXVvdGUgd2lsbCBiZSBpZ25vcmVkLlxuICogQHJldHVybiBBIHJlZ2V4IHNvdXJjZSBzdHJpbmcuXG4gKi9cbmNvbnN0IG1hcmdpblJlZ2V4U3JjID0gKGNoYXJzKSA9PiB7XG4gICAgbGV0IGNzID0gJyc7XG4gICAgLy8gZm9yIChjb25zdCBjIGNoYXJzLnZhbHVlcygpKSB7XG4gICAgY2hhcnMuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICBpZiAoYyAhPT0gJ3wnICYmIGMgIT09ICdcXFxcJyAmJiBjICE9PSAnYCcpIHtcbiAgICAgICAgICAgIGNzICs9IGBcXFxcdXske2MuY29kZVBvaW50QXQoMCkudG9TdHJpbmcoMTYpfX1gO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGBbXFxcXHMke2NzfV0qYDtcbn07XG5leHBvcnRzLm1hcmdpblJlZ2V4U3JjID0gbWFyZ2luUmVnZXhTcmM7XG4vKipcbiAqIENyZWF0ZXMgYSByZWd1bGFyIGV4cHJlc3Npb24gb2JqZWN0IHRoYXQgbWF0Y2hlcyBtYXJnaW4gb2YgdGFibGVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gY2hhcnMgLSBBIHNldCBvZiBhZGRpdGlvbmFsIG1hcmdpbiBjaGFyYWN0ZXJzLlxuICogQSBwaXBlIGB8YCwgYSBiYWNrc2xhc2ggYFxcYCwgYW5kIGEgYmFja3F1b3RlIHdpbGwgYmUgaWdub3JlZC5cbiAqIEByZXR1cm4gQW4gcmVndWxhciBleHByZXNzaW9uIG9iamVjdCB0aGF0IG1hdGNoZXMgbWFyZ2luIG9mIHRhYmxlcy5cbiAqL1xuY29uc3QgX21hcmdpblJlZ2V4ID0gKGNoYXJzKSA9PiBuZXcgUmVnRXhwKGBeJHsoMCwgZXhwb3J0cy5tYXJnaW5SZWdleFNyYykoY2hhcnMpfSRgLCAndScpO1xuZXhwb3J0cy5fbWFyZ2luUmVnZXggPSBfbWFyZ2luUmVnZXg7XG4vKipcbiAqIFJlYWRzIGEgdGFibGUgZnJvbSBsaW5lcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIGxpbmVzIC0gQW4gYXJyYXkgb2YgdGV4dHMsIGVhY2ggdGV4dCByZXByZXNlbnRzIGEgcm93LlxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3QgY29udGFpbmluZyBvcHRpb25zIGZvciBwYXJzaW5nLlxuICogQHJldHVybnMgVGhlIHRhYmxlIHJlYWQgZnJvbSB0aGUgbGluZXMuXG4gKi9cbmNvbnN0IHJlYWRUYWJsZSA9IChsaW5lcywgb3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IGxlZnRNYXJnaW5SZWdleCA9ICgwLCBleHBvcnRzLl9tYXJnaW5SZWdleCkob3B0aW9ucy5sZWZ0TWFyZ2luQ2hhcnMpO1xuICAgIHJldHVybiBuZXcgdGFibGVfMS5UYWJsZShsaW5lcy5tYXAoKGxpbmUpID0+ICgwLCBleHBvcnRzLl9yZWFkUm93KShsaW5lLCBsZWZ0TWFyZ2luUmVnZXgpKSk7XG59O1xuZXhwb3J0cy5yZWFkVGFibGUgPSByZWFkVGFibGU7XG4iLCIvKlxyXG4gKiBHZW5lcmF0ZWQgYnkgc2NyaXB0LiBETyBOT1QgRURJVCFcclxuICpcclxuICogVGhlIHBhcnQgYmV0d2VlbiBCRUdJTiBhbmQgRU5EIGlzIGRlcml2ZWQgZnJvbSBVbmljb2RlIERhdGEgRmlsZXNcclxuICogYW5kIHByb3ZpZGVkIHVuZGVyIFVuaWNvZGUsIEluYy4gTGljZW5zZSBBZ3JlZW1lbnQuXHJcbiAqL1xyXG4vKiBCRUdJTiAqL1xyXG52YXIgZGVmcyA9IFtcclxuICAgIFswLCAzMSwgXCJOXCJdLFxyXG4gICAgWzMyLCAxMjYsIFwiTmFcIl0sXHJcbiAgICBbMTI3LCAxNjAsIFwiTlwiXSxcclxuICAgIFsxNjEsIDE2MSwgXCJBXCJdLFxyXG4gICAgWzE2MiwgMTYzLCBcIk5hXCJdLFxyXG4gICAgWzE2NCwgMTY0LCBcIkFcIl0sXHJcbiAgICBbMTY1LCAxNjYsIFwiTmFcIl0sXHJcbiAgICBbMTY3LCAxNjgsIFwiQVwiXSxcclxuICAgIFsxNjksIDE2OSwgXCJOXCJdLFxyXG4gICAgWzE3MCwgMTcwLCBcIkFcIl0sXHJcbiAgICBbMTcxLCAxNzEsIFwiTlwiXSxcclxuICAgIFsxNzIsIDE3MiwgXCJOYVwiXSxcclxuICAgIFsxNzMsIDE3NCwgXCJBXCJdLFxyXG4gICAgWzE3NSwgMTc1LCBcIk5hXCJdLFxyXG4gICAgWzE3NiwgMTgwLCBcIkFcIl0sXHJcbiAgICBbMTgxLCAxODEsIFwiTlwiXSxcclxuICAgIFsxODIsIDE4NiwgXCJBXCJdLFxyXG4gICAgWzE4NywgMTg3LCBcIk5cIl0sXHJcbiAgICBbMTg4LCAxOTEsIFwiQVwiXSxcclxuICAgIFsxOTIsIDE5NywgXCJOXCJdLFxyXG4gICAgWzE5OCwgMTk4LCBcIkFcIl0sXHJcbiAgICBbMTk5LCAyMDcsIFwiTlwiXSxcclxuICAgIFsyMDgsIDIwOCwgXCJBXCJdLFxyXG4gICAgWzIwOSwgMjE0LCBcIk5cIl0sXHJcbiAgICBbMjE1LCAyMTYsIFwiQVwiXSxcclxuICAgIFsyMTcsIDIyMSwgXCJOXCJdLFxyXG4gICAgWzIyMiwgMjI1LCBcIkFcIl0sXHJcbiAgICBbMjI2LCAyMjksIFwiTlwiXSxcclxuICAgIFsyMzAsIDIzMCwgXCJBXCJdLFxyXG4gICAgWzIzMSwgMjMxLCBcIk5cIl0sXHJcbiAgICBbMjMyLCAyMzQsIFwiQVwiXSxcclxuICAgIFsyMzUsIDIzNSwgXCJOXCJdLFxyXG4gICAgWzIzNiwgMjM3LCBcIkFcIl0sXHJcbiAgICBbMjM4LCAyMzksIFwiTlwiXSxcclxuICAgIFsyNDAsIDI0MCwgXCJBXCJdLFxyXG4gICAgWzI0MSwgMjQxLCBcIk5cIl0sXHJcbiAgICBbMjQyLCAyNDMsIFwiQVwiXSxcclxuICAgIFsyNDQsIDI0NiwgXCJOXCJdLFxyXG4gICAgWzI0NywgMjUwLCBcIkFcIl0sXHJcbiAgICBbMjUxLCAyNTEsIFwiTlwiXSxcclxuICAgIFsyNTIsIDI1MiwgXCJBXCJdLFxyXG4gICAgWzI1MywgMjUzLCBcIk5cIl0sXHJcbiAgICBbMjU0LCAyNTQsIFwiQVwiXSxcclxuICAgIFsyNTUsIDI1NiwgXCJOXCJdLFxyXG4gICAgWzI1NywgMjU3LCBcIkFcIl0sXHJcbiAgICBbMjU4LCAyNzIsIFwiTlwiXSxcclxuICAgIFsyNzMsIDI3MywgXCJBXCJdLFxyXG4gICAgWzI3NCwgMjc0LCBcIk5cIl0sXHJcbiAgICBbMjc1LCAyNzUsIFwiQVwiXSxcclxuICAgIFsyNzYsIDI4MiwgXCJOXCJdLFxyXG4gICAgWzI4MywgMjgzLCBcIkFcIl0sXHJcbiAgICBbMjg0LCAyOTMsIFwiTlwiXSxcclxuICAgIFsyOTQsIDI5NSwgXCJBXCJdLFxyXG4gICAgWzI5NiwgMjk4LCBcIk5cIl0sXHJcbiAgICBbMjk5LCAyOTksIFwiQVwiXSxcclxuICAgIFszMDAsIDMwNCwgXCJOXCJdLFxyXG4gICAgWzMwNSwgMzA3LCBcIkFcIl0sXHJcbiAgICBbMzA4LCAzMTEsIFwiTlwiXSxcclxuICAgIFszMTIsIDMxMiwgXCJBXCJdLFxyXG4gICAgWzMxMywgMzE4LCBcIk5cIl0sXHJcbiAgICBbMzE5LCAzMjIsIFwiQVwiXSxcclxuICAgIFszMjMsIDMyMywgXCJOXCJdLFxyXG4gICAgWzMyNCwgMzI0LCBcIkFcIl0sXHJcbiAgICBbMzI1LCAzMjcsIFwiTlwiXSxcclxuICAgIFszMjgsIDMzMSwgXCJBXCJdLFxyXG4gICAgWzMzMiwgMzMyLCBcIk5cIl0sXHJcbiAgICBbMzMzLCAzMzMsIFwiQVwiXSxcclxuICAgIFszMzQsIDMzNywgXCJOXCJdLFxyXG4gICAgWzMzOCwgMzM5LCBcIkFcIl0sXHJcbiAgICBbMzQwLCAzNTcsIFwiTlwiXSxcclxuICAgIFszNTgsIDM1OSwgXCJBXCJdLFxyXG4gICAgWzM2MCwgMzYyLCBcIk5cIl0sXHJcbiAgICBbMzYzLCAzNjMsIFwiQVwiXSxcclxuICAgIFszNjQsIDQ2MSwgXCJOXCJdLFxyXG4gICAgWzQ2MiwgNDYyLCBcIkFcIl0sXHJcbiAgICBbNDYzLCA0NjMsIFwiTlwiXSxcclxuICAgIFs0NjQsIDQ2NCwgXCJBXCJdLFxyXG4gICAgWzQ2NSwgNDY1LCBcIk5cIl0sXHJcbiAgICBbNDY2LCA0NjYsIFwiQVwiXSxcclxuICAgIFs0NjcsIDQ2NywgXCJOXCJdLFxyXG4gICAgWzQ2OCwgNDY4LCBcIkFcIl0sXHJcbiAgICBbNDY5LCA0NjksIFwiTlwiXSxcclxuICAgIFs0NzAsIDQ3MCwgXCJBXCJdLFxyXG4gICAgWzQ3MSwgNDcxLCBcIk5cIl0sXHJcbiAgICBbNDcyLCA0NzIsIFwiQVwiXSxcclxuICAgIFs0NzMsIDQ3MywgXCJOXCJdLFxyXG4gICAgWzQ3NCwgNDc0LCBcIkFcIl0sXHJcbiAgICBbNDc1LCA0NzUsIFwiTlwiXSxcclxuICAgIFs0NzYsIDQ3NiwgXCJBXCJdLFxyXG4gICAgWzQ3NywgNTkyLCBcIk5cIl0sXHJcbiAgICBbNTkzLCA1OTMsIFwiQVwiXSxcclxuICAgIFs1OTQsIDYwOCwgXCJOXCJdLFxyXG4gICAgWzYwOSwgNjA5LCBcIkFcIl0sXHJcbiAgICBbNjEwLCA3MDcsIFwiTlwiXSxcclxuICAgIFs3MDgsIDcwOCwgXCJBXCJdLFxyXG4gICAgWzcwOSwgNzEwLCBcIk5cIl0sXHJcbiAgICBbNzExLCA3MTEsIFwiQVwiXSxcclxuICAgIFs3MTIsIDcxMiwgXCJOXCJdLFxyXG4gICAgWzcxMywgNzE1LCBcIkFcIl0sXHJcbiAgICBbNzE2LCA3MTYsIFwiTlwiXSxcclxuICAgIFs3MTcsIDcxNywgXCJBXCJdLFxyXG4gICAgWzcxOCwgNzE5LCBcIk5cIl0sXHJcbiAgICBbNzIwLCA3MjAsIFwiQVwiXSxcclxuICAgIFs3MjEsIDcyNywgXCJOXCJdLFxyXG4gICAgWzcyOCwgNzMxLCBcIkFcIl0sXHJcbiAgICBbNzMyLCA3MzIsIFwiTlwiXSxcclxuICAgIFs3MzMsIDczMywgXCJBXCJdLFxyXG4gICAgWzczNCwgNzM0LCBcIk5cIl0sXHJcbiAgICBbNzM1LCA3MzUsIFwiQVwiXSxcclxuICAgIFs3MzYsIDc2NywgXCJOXCJdLFxyXG4gICAgWzc2OCwgODc5LCBcIkFcIl0sXHJcbiAgICBbODgwLCA5MTIsIFwiTlwiXSxcclxuICAgIFs5MTMsIDkyOSwgXCJBXCJdLFxyXG4gICAgWzkzMCwgOTMwLCBcIk5cIl0sXHJcbiAgICBbOTMxLCA5MzcsIFwiQVwiXSxcclxuICAgIFs5MzgsIDk0NCwgXCJOXCJdLFxyXG4gICAgWzk0NSwgOTYxLCBcIkFcIl0sXHJcbiAgICBbOTYyLCA5NjIsIFwiTlwiXSxcclxuICAgIFs5NjMsIDk2OSwgXCJBXCJdLFxyXG4gICAgWzk3MCwgMTAyNCwgXCJOXCJdLFxyXG4gICAgWzEwMjUsIDEwMjUsIFwiQVwiXSxcclxuICAgIFsxMDI2LCAxMDM5LCBcIk5cIl0sXHJcbiAgICBbMTA0MCwgMTEwMywgXCJBXCJdLFxyXG4gICAgWzExMDQsIDExMDQsIFwiTlwiXSxcclxuICAgIFsxMTA1LCAxMTA1LCBcIkFcIl0sXHJcbiAgICBbMTEwNiwgNDM1MSwgXCJOXCJdLFxyXG4gICAgWzQzNTIsIDQ0NDcsIFwiV1wiXSxcclxuICAgIFs0NDQ4LCA4MjA3LCBcIk5cIl0sXHJcbiAgICBbODIwOCwgODIwOCwgXCJBXCJdLFxyXG4gICAgWzgyMDksIDgyMTAsIFwiTlwiXSxcclxuICAgIFs4MjExLCA4MjE0LCBcIkFcIl0sXHJcbiAgICBbODIxNSwgODIxNSwgXCJOXCJdLFxyXG4gICAgWzgyMTYsIDgyMTcsIFwiQVwiXSxcclxuICAgIFs4MjE4LCA4MjE5LCBcIk5cIl0sXHJcbiAgICBbODIyMCwgODIyMSwgXCJBXCJdLFxyXG4gICAgWzgyMjIsIDgyMjMsIFwiTlwiXSxcclxuICAgIFs4MjI0LCA4MjI2LCBcIkFcIl0sXHJcbiAgICBbODIyNywgODIyNywgXCJOXCJdLFxyXG4gICAgWzgyMjgsIDgyMzEsIFwiQVwiXSxcclxuICAgIFs4MjMyLCA4MjM5LCBcIk5cIl0sXHJcbiAgICBbODI0MCwgODI0MCwgXCJBXCJdLFxyXG4gICAgWzgyNDEsIDgyNDEsIFwiTlwiXSxcclxuICAgIFs4MjQyLCA4MjQzLCBcIkFcIl0sXHJcbiAgICBbODI0NCwgODI0NCwgXCJOXCJdLFxyXG4gICAgWzgyNDUsIDgyNDUsIFwiQVwiXSxcclxuICAgIFs4MjQ2LCA4MjUwLCBcIk5cIl0sXHJcbiAgICBbODI1MSwgODI1MSwgXCJBXCJdLFxyXG4gICAgWzgyNTIsIDgyNTMsIFwiTlwiXSxcclxuICAgIFs4MjU0LCA4MjU0LCBcIkFcIl0sXHJcbiAgICBbODI1NSwgODMwNywgXCJOXCJdLFxyXG4gICAgWzgzMDgsIDgzMDgsIFwiQVwiXSxcclxuICAgIFs4MzA5LCA4MzE4LCBcIk5cIl0sXHJcbiAgICBbODMxOSwgODMxOSwgXCJBXCJdLFxyXG4gICAgWzgzMjAsIDgzMjAsIFwiTlwiXSxcclxuICAgIFs4MzIxLCA4MzI0LCBcIkFcIl0sXHJcbiAgICBbODMyNSwgODM2MCwgXCJOXCJdLFxyXG4gICAgWzgzNjEsIDgzNjEsIFwiSFwiXSxcclxuICAgIFs4MzYyLCA4MzYzLCBcIk5cIl0sXHJcbiAgICBbODM2NCwgODM2NCwgXCJBXCJdLFxyXG4gICAgWzgzNjUsIDg0NTAsIFwiTlwiXSxcclxuICAgIFs4NDUxLCA4NDUxLCBcIkFcIl0sXHJcbiAgICBbODQ1MiwgODQ1MiwgXCJOXCJdLFxyXG4gICAgWzg0NTMsIDg0NTMsIFwiQVwiXSxcclxuICAgIFs4NDU0LCA4NDU2LCBcIk5cIl0sXHJcbiAgICBbODQ1NywgODQ1NywgXCJBXCJdLFxyXG4gICAgWzg0NTgsIDg0NjYsIFwiTlwiXSxcclxuICAgIFs4NDY3LCA4NDY3LCBcIkFcIl0sXHJcbiAgICBbODQ2OCwgODQ2OSwgXCJOXCJdLFxyXG4gICAgWzg0NzAsIDg0NzAsIFwiQVwiXSxcclxuICAgIFs4NDcxLCA4NDgwLCBcIk5cIl0sXHJcbiAgICBbODQ4MSwgODQ4MiwgXCJBXCJdLFxyXG4gICAgWzg0ODMsIDg0ODUsIFwiTlwiXSxcclxuICAgIFs4NDg2LCA4NDg2LCBcIkFcIl0sXHJcbiAgICBbODQ4NywgODQ5MCwgXCJOXCJdLFxyXG4gICAgWzg0OTEsIDg0OTEsIFwiQVwiXSxcclxuICAgIFs4NDkyLCA4NTMwLCBcIk5cIl0sXHJcbiAgICBbODUzMSwgODUzMiwgXCJBXCJdLFxyXG4gICAgWzg1MzMsIDg1MzgsIFwiTlwiXSxcclxuICAgIFs4NTM5LCA4NTQyLCBcIkFcIl0sXHJcbiAgICBbODU0MywgODU0MywgXCJOXCJdLFxyXG4gICAgWzg1NDQsIDg1NTUsIFwiQVwiXSxcclxuICAgIFs4NTU2LCA4NTU5LCBcIk5cIl0sXHJcbiAgICBbODU2MCwgODU2OSwgXCJBXCJdLFxyXG4gICAgWzg1NzAsIDg1ODQsIFwiTlwiXSxcclxuICAgIFs4NTg1LCA4NTg1LCBcIkFcIl0sXHJcbiAgICBbODU4NiwgODU5MSwgXCJOXCJdLFxyXG4gICAgWzg1OTIsIDg2MDEsIFwiQVwiXSxcclxuICAgIFs4NjAyLCA4NjMxLCBcIk5cIl0sXHJcbiAgICBbODYzMiwgODYzMywgXCJBXCJdLFxyXG4gICAgWzg2MzQsIDg2NTcsIFwiTlwiXSxcclxuICAgIFs4NjU4LCA4NjU4LCBcIkFcIl0sXHJcbiAgICBbODY1OSwgODY1OSwgXCJOXCJdLFxyXG4gICAgWzg2NjAsIDg2NjAsIFwiQVwiXSxcclxuICAgIFs4NjYxLCA4Njc4LCBcIk5cIl0sXHJcbiAgICBbODY3OSwgODY3OSwgXCJBXCJdLFxyXG4gICAgWzg2ODAsIDg3MDMsIFwiTlwiXSxcclxuICAgIFs4NzA0LCA4NzA0LCBcIkFcIl0sXHJcbiAgICBbODcwNSwgODcwNSwgXCJOXCJdLFxyXG4gICAgWzg3MDYsIDg3MDcsIFwiQVwiXSxcclxuICAgIFs4NzA4LCA4NzEwLCBcIk5cIl0sXHJcbiAgICBbODcxMSwgODcxMiwgXCJBXCJdLFxyXG4gICAgWzg3MTMsIDg3MTQsIFwiTlwiXSxcclxuICAgIFs4NzE1LCA4NzE1LCBcIkFcIl0sXHJcbiAgICBbODcxNiwgODcxOCwgXCJOXCJdLFxyXG4gICAgWzg3MTksIDg3MTksIFwiQVwiXSxcclxuICAgIFs4NzIwLCA4NzIwLCBcIk5cIl0sXHJcbiAgICBbODcyMSwgODcyMSwgXCJBXCJdLFxyXG4gICAgWzg3MjIsIDg3MjQsIFwiTlwiXSxcclxuICAgIFs4NzI1LCA4NzI1LCBcIkFcIl0sXHJcbiAgICBbODcyNiwgODcyOSwgXCJOXCJdLFxyXG4gICAgWzg3MzAsIDg3MzAsIFwiQVwiXSxcclxuICAgIFs4NzMxLCA4NzMyLCBcIk5cIl0sXHJcbiAgICBbODczMywgODczNiwgXCJBXCJdLFxyXG4gICAgWzg3MzcsIDg3MzgsIFwiTlwiXSxcclxuICAgIFs4NzM5LCA4NzM5LCBcIkFcIl0sXHJcbiAgICBbODc0MCwgODc0MCwgXCJOXCJdLFxyXG4gICAgWzg3NDEsIDg3NDEsIFwiQVwiXSxcclxuICAgIFs4NzQyLCA4NzQyLCBcIk5cIl0sXHJcbiAgICBbODc0MywgODc0OCwgXCJBXCJdLFxyXG4gICAgWzg3NDksIDg3NDksIFwiTlwiXSxcclxuICAgIFs4NzUwLCA4NzUwLCBcIkFcIl0sXHJcbiAgICBbODc1MSwgODc1NSwgXCJOXCJdLFxyXG4gICAgWzg3NTYsIDg3NTksIFwiQVwiXSxcclxuICAgIFs4NzYwLCA4NzYzLCBcIk5cIl0sXHJcbiAgICBbODc2NCwgODc2NSwgXCJBXCJdLFxyXG4gICAgWzg3NjYsIDg3NzUsIFwiTlwiXSxcclxuICAgIFs4Nzc2LCA4Nzc2LCBcIkFcIl0sXHJcbiAgICBbODc3NywgODc3OSwgXCJOXCJdLFxyXG4gICAgWzg3ODAsIDg3ODAsIFwiQVwiXSxcclxuICAgIFs4NzgxLCA4Nzg1LCBcIk5cIl0sXHJcbiAgICBbODc4NiwgODc4NiwgXCJBXCJdLFxyXG4gICAgWzg3ODcsIDg3OTksIFwiTlwiXSxcclxuICAgIFs4ODAwLCA4ODAxLCBcIkFcIl0sXHJcbiAgICBbODgwMiwgODgwMywgXCJOXCJdLFxyXG4gICAgWzg4MDQsIDg4MDcsIFwiQVwiXSxcclxuICAgIFs4ODA4LCA4ODA5LCBcIk5cIl0sXHJcbiAgICBbODgxMCwgODgxMSwgXCJBXCJdLFxyXG4gICAgWzg4MTIsIDg4MTMsIFwiTlwiXSxcclxuICAgIFs4ODE0LCA4ODE1LCBcIkFcIl0sXHJcbiAgICBbODgxNiwgODgzMywgXCJOXCJdLFxyXG4gICAgWzg4MzQsIDg4MzUsIFwiQVwiXSxcclxuICAgIFs4ODM2LCA4ODM3LCBcIk5cIl0sXHJcbiAgICBbODgzOCwgODgzOSwgXCJBXCJdLFxyXG4gICAgWzg4NDAsIDg4NTIsIFwiTlwiXSxcclxuICAgIFs4ODUzLCA4ODUzLCBcIkFcIl0sXHJcbiAgICBbODg1NCwgODg1NiwgXCJOXCJdLFxyXG4gICAgWzg4NTcsIDg4NTcsIFwiQVwiXSxcclxuICAgIFs4ODU4LCA4ODY4LCBcIk5cIl0sXHJcbiAgICBbODg2OSwgODg2OSwgXCJBXCJdLFxyXG4gICAgWzg4NzAsIDg4OTQsIFwiTlwiXSxcclxuICAgIFs4ODk1LCA4ODk1LCBcIkFcIl0sXHJcbiAgICBbODg5NiwgODk3NywgXCJOXCJdLFxyXG4gICAgWzg5NzgsIDg5NzgsIFwiQVwiXSxcclxuICAgIFs4OTc5LCA4OTg1LCBcIk5cIl0sXHJcbiAgICBbODk4NiwgODk4NywgXCJXXCJdLFxyXG4gICAgWzg5ODgsIDkwMDAsIFwiTlwiXSxcclxuICAgIFs5MDAxLCA5MDAyLCBcIldcIl0sXHJcbiAgICBbOTAwMywgOTE5MiwgXCJOXCJdLFxyXG4gICAgWzkxOTMsIDkxOTYsIFwiV1wiXSxcclxuICAgIFs5MTk3LCA5MTk5LCBcIk5cIl0sXHJcbiAgICBbOTIwMCwgOTIwMCwgXCJXXCJdLFxyXG4gICAgWzkyMDEsIDkyMDIsIFwiTlwiXSxcclxuICAgIFs5MjAzLCA5MjAzLCBcIldcIl0sXHJcbiAgICBbOTIwNCwgOTMxMSwgXCJOXCJdLFxyXG4gICAgWzkzMTIsIDk0NDksIFwiQVwiXSxcclxuICAgIFs5NDUwLCA5NDUwLCBcIk5cIl0sXHJcbiAgICBbOTQ1MSwgOTU0NywgXCJBXCJdLFxyXG4gICAgWzk1NDgsIDk1NTEsIFwiTlwiXSxcclxuICAgIFs5NTUyLCA5NTg3LCBcIkFcIl0sXHJcbiAgICBbOTU4OCwgOTU5OSwgXCJOXCJdLFxyXG4gICAgWzk2MDAsIDk2MTUsIFwiQVwiXSxcclxuICAgIFs5NjE2LCA5NjE3LCBcIk5cIl0sXHJcbiAgICBbOTYxOCwgOTYyMSwgXCJBXCJdLFxyXG4gICAgWzk2MjIsIDk2MzEsIFwiTlwiXSxcclxuICAgIFs5NjMyLCA5NjMzLCBcIkFcIl0sXHJcbiAgICBbOTYzNCwgOTYzNCwgXCJOXCJdLFxyXG4gICAgWzk2MzUsIDk2NDEsIFwiQVwiXSxcclxuICAgIFs5NjQyLCA5NjQ5LCBcIk5cIl0sXHJcbiAgICBbOTY1MCwgOTY1MSwgXCJBXCJdLFxyXG4gICAgWzk2NTIsIDk2NTMsIFwiTlwiXSxcclxuICAgIFs5NjU0LCA5NjU1LCBcIkFcIl0sXHJcbiAgICBbOTY1NiwgOTY1OSwgXCJOXCJdLFxyXG4gICAgWzk2NjAsIDk2NjEsIFwiQVwiXSxcclxuICAgIFs5NjYyLCA5NjYzLCBcIk5cIl0sXHJcbiAgICBbOTY2NCwgOTY2NSwgXCJBXCJdLFxyXG4gICAgWzk2NjYsIDk2NjksIFwiTlwiXSxcclxuICAgIFs5NjcwLCA5NjcyLCBcIkFcIl0sXHJcbiAgICBbOTY3MywgOTY3NCwgXCJOXCJdLFxyXG4gICAgWzk2NzUsIDk2NzUsIFwiQVwiXSxcclxuICAgIFs5Njc2LCA5Njc3LCBcIk5cIl0sXHJcbiAgICBbOTY3OCwgOTY4MSwgXCJBXCJdLFxyXG4gICAgWzk2ODIsIDk2OTcsIFwiTlwiXSxcclxuICAgIFs5Njk4LCA5NzAxLCBcIkFcIl0sXHJcbiAgICBbOTcwMiwgOTcxMCwgXCJOXCJdLFxyXG4gICAgWzk3MTEsIDk3MTEsIFwiQVwiXSxcclxuICAgIFs5NzEyLCA5NzI0LCBcIk5cIl0sXHJcbiAgICBbOTcyNSwgOTcyNiwgXCJXXCJdLFxyXG4gICAgWzk3MjcsIDk3MzIsIFwiTlwiXSxcclxuICAgIFs5NzMzLCA5NzM0LCBcIkFcIl0sXHJcbiAgICBbOTczNSwgOTczNiwgXCJOXCJdLFxyXG4gICAgWzk3MzcsIDk3MzcsIFwiQVwiXSxcclxuICAgIFs5NzM4LCA5NzQxLCBcIk5cIl0sXHJcbiAgICBbOTc0MiwgOTc0MywgXCJBXCJdLFxyXG4gICAgWzk3NDQsIDk3NDcsIFwiTlwiXSxcclxuICAgIFs5NzQ4LCA5NzQ5LCBcIldcIl0sXHJcbiAgICBbOTc1MCwgOTc1NSwgXCJOXCJdLFxyXG4gICAgWzk3NTYsIDk3NTYsIFwiQVwiXSxcclxuICAgIFs5NzU3LCA5NzU3LCBcIk5cIl0sXHJcbiAgICBbOTc1OCwgOTc1OCwgXCJBXCJdLFxyXG4gICAgWzk3NTksIDk3OTEsIFwiTlwiXSxcclxuICAgIFs5NzkyLCA5NzkyLCBcIkFcIl0sXHJcbiAgICBbOTc5MywgOTc5MywgXCJOXCJdLFxyXG4gICAgWzk3OTQsIDk3OTQsIFwiQVwiXSxcclxuICAgIFs5Nzk1LCA5Nzk5LCBcIk5cIl0sXHJcbiAgICBbOTgwMCwgOTgxMSwgXCJXXCJdLFxyXG4gICAgWzk4MTIsIDk4MjMsIFwiTlwiXSxcclxuICAgIFs5ODI0LCA5ODI1LCBcIkFcIl0sXHJcbiAgICBbOTgyNiwgOTgyNiwgXCJOXCJdLFxyXG4gICAgWzk4MjcsIDk4MjksIFwiQVwiXSxcclxuICAgIFs5ODMwLCA5ODMwLCBcIk5cIl0sXHJcbiAgICBbOTgzMSwgOTgzNCwgXCJBXCJdLFxyXG4gICAgWzk4MzUsIDk4MzUsIFwiTlwiXSxcclxuICAgIFs5ODM2LCA5ODM3LCBcIkFcIl0sXHJcbiAgICBbOTgzOCwgOTgzOCwgXCJOXCJdLFxyXG4gICAgWzk4MzksIDk4MzksIFwiQVwiXSxcclxuICAgIFs5ODQwLCA5ODU0LCBcIk5cIl0sXHJcbiAgICBbOTg1NSwgOTg1NSwgXCJXXCJdLFxyXG4gICAgWzk4NTYsIDk4NzQsIFwiTlwiXSxcclxuICAgIFs5ODc1LCA5ODc1LCBcIldcIl0sXHJcbiAgICBbOTg3NiwgOTg4NSwgXCJOXCJdLFxyXG4gICAgWzk4ODYsIDk4ODcsIFwiQVwiXSxcclxuICAgIFs5ODg4LCA5ODg4LCBcIk5cIl0sXHJcbiAgICBbOTg4OSwgOTg4OSwgXCJXXCJdLFxyXG4gICAgWzk4OTAsIDk4OTcsIFwiTlwiXSxcclxuICAgIFs5ODk4LCA5ODk5LCBcIldcIl0sXHJcbiAgICBbOTkwMCwgOTkxNiwgXCJOXCJdLFxyXG4gICAgWzk5MTcsIDk5MTgsIFwiV1wiXSxcclxuICAgIFs5OTE5LCA5OTE5LCBcIkFcIl0sXHJcbiAgICBbOTkyMCwgOTkyMywgXCJOXCJdLFxyXG4gICAgWzk5MjQsIDk5MjUsIFwiV1wiXSxcclxuICAgIFs5OTI2LCA5OTMzLCBcIkFcIl0sXHJcbiAgICBbOTkzNCwgOTkzNCwgXCJXXCJdLFxyXG4gICAgWzk5MzUsIDk5MzksIFwiQVwiXSxcclxuICAgIFs5OTQwLCA5OTQwLCBcIldcIl0sXHJcbiAgICBbOTk0MSwgOTk1MywgXCJBXCJdLFxyXG4gICAgWzk5NTQsIDk5NTQsIFwiTlwiXSxcclxuICAgIFs5OTU1LCA5OTU1LCBcIkFcIl0sXHJcbiAgICBbOTk1NiwgOTk1OSwgXCJOXCJdLFxyXG4gICAgWzk5NjAsIDk5NjEsIFwiQVwiXSxcclxuICAgIFs5OTYyLCA5OTYyLCBcIldcIl0sXHJcbiAgICBbOTk2MywgOTk2OSwgXCJBXCJdLFxyXG4gICAgWzk5NzAsIDk5NzEsIFwiV1wiXSxcclxuICAgIFs5OTcyLCA5OTcyLCBcIkFcIl0sXHJcbiAgICBbOTk3MywgOTk3MywgXCJXXCJdLFxyXG4gICAgWzk5NzQsIDk5NzcsIFwiQVwiXSxcclxuICAgIFs5OTc4LCA5OTc4LCBcIldcIl0sXHJcbiAgICBbOTk3OSwgOTk4MCwgXCJBXCJdLFxyXG4gICAgWzk5ODEsIDk5ODEsIFwiV1wiXSxcclxuICAgIFs5OTgyLCA5OTgzLCBcIkFcIl0sXHJcbiAgICBbOTk4NCwgOTk4OCwgXCJOXCJdLFxyXG4gICAgWzk5ODksIDk5ODksIFwiV1wiXSxcclxuICAgIFs5OTkwLCA5OTkzLCBcIk5cIl0sXHJcbiAgICBbOTk5NCwgOTk5NSwgXCJXXCJdLFxyXG4gICAgWzk5OTYsIDEwMDIzLCBcIk5cIl0sXHJcbiAgICBbMTAwMjQsIDEwMDI0LCBcIldcIl0sXHJcbiAgICBbMTAwMjUsIDEwMDQ0LCBcIk5cIl0sXHJcbiAgICBbMTAwNDUsIDEwMDQ1LCBcIkFcIl0sXHJcbiAgICBbMTAwNDYsIDEwMDU5LCBcIk5cIl0sXHJcbiAgICBbMTAwNjAsIDEwMDYwLCBcIldcIl0sXHJcbiAgICBbMTAwNjEsIDEwMDYxLCBcIk5cIl0sXHJcbiAgICBbMTAwNjIsIDEwMDYyLCBcIldcIl0sXHJcbiAgICBbMTAwNjMsIDEwMDY2LCBcIk5cIl0sXHJcbiAgICBbMTAwNjcsIDEwMDY5LCBcIldcIl0sXHJcbiAgICBbMTAwNzAsIDEwMDcwLCBcIk5cIl0sXHJcbiAgICBbMTAwNzEsIDEwMDcxLCBcIldcIl0sXHJcbiAgICBbMTAwNzIsIDEwMTAxLCBcIk5cIl0sXHJcbiAgICBbMTAxMDIsIDEwMTExLCBcIkFcIl0sXHJcbiAgICBbMTAxMTIsIDEwMTMyLCBcIk5cIl0sXHJcbiAgICBbMTAxMzMsIDEwMTM1LCBcIldcIl0sXHJcbiAgICBbMTAxMzYsIDEwMTU5LCBcIk5cIl0sXHJcbiAgICBbMTAxNjAsIDEwMTYwLCBcIldcIl0sXHJcbiAgICBbMTAxNjEsIDEwMTc0LCBcIk5cIl0sXHJcbiAgICBbMTAxNzUsIDEwMTc1LCBcIldcIl0sXHJcbiAgICBbMTAxNzYsIDEwMjEzLCBcIk5cIl0sXHJcbiAgICBbMTAyMTQsIDEwMjIxLCBcIk5hXCJdLFxyXG4gICAgWzEwMjIyLCAxMDYyOCwgXCJOXCJdLFxyXG4gICAgWzEwNjI5LCAxMDYzMCwgXCJOYVwiXSxcclxuICAgIFsxMDYzMSwgMTEwMzQsIFwiTlwiXSxcclxuICAgIFsxMTAzNSwgMTEwMzYsIFwiV1wiXSxcclxuICAgIFsxMTAzNywgMTEwODcsIFwiTlwiXSxcclxuICAgIFsxMTA4OCwgMTEwODgsIFwiV1wiXSxcclxuICAgIFsxMTA4OSwgMTEwOTIsIFwiTlwiXSxcclxuICAgIFsxMTA5MywgMTEwOTMsIFwiV1wiXSxcclxuICAgIFsxMTA5NCwgMTEwOTcsIFwiQVwiXSxcclxuICAgIFsxMTA5OCwgMTE5MDMsIFwiTlwiXSxcclxuICAgIFsxMTkwNCwgMTE5MjksIFwiV1wiXSxcclxuICAgIFsxMTkzMCwgMTE5MzAsIFwiTlwiXSxcclxuICAgIFsxMTkzMSwgMTIwMTksIFwiV1wiXSxcclxuICAgIFsxMjAyMCwgMTIwMzEsIFwiTlwiXSxcclxuICAgIFsxMjAzMiwgMTIyNDUsIFwiV1wiXSxcclxuICAgIFsxMjI0NiwgMTIyNzEsIFwiTlwiXSxcclxuICAgIFsxMjI3MiwgMTIyODMsIFwiV1wiXSxcclxuICAgIFsxMjI4NCwgMTIyODcsIFwiTlwiXSxcclxuICAgIFsxMjI4OCwgMTIyODgsIFwiRlwiXSxcclxuICAgIFsxMjI4OSwgMTIzNTAsIFwiV1wiXSxcclxuICAgIFsxMjM1MSwgMTIzNTIsIFwiTlwiXSxcclxuICAgIFsxMjM1MywgMTI0MzgsIFwiV1wiXSxcclxuICAgIFsxMjQzOSwgMTI0NDAsIFwiTlwiXSxcclxuICAgIFsxMjQ0MSwgMTI1NDMsIFwiV1wiXSxcclxuICAgIFsxMjU0NCwgMTI1NDgsIFwiTlwiXSxcclxuICAgIFsxMjU0OSwgMTI1OTEsIFwiV1wiXSxcclxuICAgIFsxMjU5MiwgMTI1OTIsIFwiTlwiXSxcclxuICAgIFsxMjU5MywgMTI2ODYsIFwiV1wiXSxcclxuICAgIFsxMjY4NywgMTI2ODcsIFwiTlwiXSxcclxuICAgIFsxMjY4OCwgMTI3NzEsIFwiV1wiXSxcclxuICAgIFsxMjc3MiwgMTI3ODMsIFwiTlwiXSxcclxuICAgIFsxMjc4NCwgMTI4MzAsIFwiV1wiXSxcclxuICAgIFsxMjgzMSwgMTI4MzEsIFwiTlwiXSxcclxuICAgIFsxMjgzMiwgMTI4NzEsIFwiV1wiXSxcclxuICAgIFsxMjg3MiwgMTI4NzksIFwiQVwiXSxcclxuICAgIFsxMjg4MCwgMTk5MDMsIFwiV1wiXSxcclxuICAgIFsxOTkwNCwgMTk5NjcsIFwiTlwiXSxcclxuICAgIFsxOTk2OCwgNDIxMjQsIFwiV1wiXSxcclxuICAgIFs0MjEyNSwgNDIxMjcsIFwiTlwiXSxcclxuICAgIFs0MjEyOCwgNDIxODIsIFwiV1wiXSxcclxuICAgIFs0MjE4MywgNDMzNTksIFwiTlwiXSxcclxuICAgIFs0MzM2MCwgNDMzODgsIFwiV1wiXSxcclxuICAgIFs0MzM4OSwgNDQwMzEsIFwiTlwiXSxcclxuICAgIFs0NDAzMiwgNTUyMDMsIFwiV1wiXSxcclxuICAgIFs1NTIwNCwgNTczNDMsIFwiTlwiXSxcclxuICAgIFs1NzM0NCwgNjM3NDMsIFwiQVwiXSxcclxuICAgIFs2Mzc0NCwgNjQyNTUsIFwiV1wiXSxcclxuICAgIFs2NDI1NiwgNjUwMjMsIFwiTlwiXSxcclxuICAgIFs2NTAyNCwgNjUwMzksIFwiQVwiXSxcclxuICAgIFs2NTA0MCwgNjUwNDksIFwiV1wiXSxcclxuICAgIFs2NTA1MCwgNjUwNzEsIFwiTlwiXSxcclxuICAgIFs2NTA3MiwgNjUxMDYsIFwiV1wiXSxcclxuICAgIFs2NTEwNywgNjUxMDcsIFwiTlwiXSxcclxuICAgIFs2NTEwOCwgNjUxMjYsIFwiV1wiXSxcclxuICAgIFs2NTEyNywgNjUxMjcsIFwiTlwiXSxcclxuICAgIFs2NTEyOCwgNjUxMzEsIFwiV1wiXSxcclxuICAgIFs2NTEzMiwgNjUyODAsIFwiTlwiXSxcclxuICAgIFs2NTI4MSwgNjUzNzYsIFwiRlwiXSxcclxuICAgIFs2NTM3NywgNjU0NzAsIFwiSFwiXSxcclxuICAgIFs2NTQ3MSwgNjU0NzMsIFwiTlwiXSxcclxuICAgIFs2NTQ3NCwgNjU0NzksIFwiSFwiXSxcclxuICAgIFs2NTQ4MCwgNjU0ODEsIFwiTlwiXSxcclxuICAgIFs2NTQ4MiwgNjU0ODcsIFwiSFwiXSxcclxuICAgIFs2NTQ4OCwgNjU0ODksIFwiTlwiXSxcclxuICAgIFs2NTQ5MCwgNjU0OTUsIFwiSFwiXSxcclxuICAgIFs2NTQ5NiwgNjU0OTcsIFwiTlwiXSxcclxuICAgIFs2NTQ5OCwgNjU1MDAsIFwiSFwiXSxcclxuICAgIFs2NTUwMSwgNjU1MDMsIFwiTlwiXSxcclxuICAgIFs2NTUwNCwgNjU1MTAsIFwiRlwiXSxcclxuICAgIFs2NTUxMSwgNjU1MTEsIFwiTlwiXSxcclxuICAgIFs2NTUxMiwgNjU1MTgsIFwiSFwiXSxcclxuICAgIFs2NTUxOSwgNjU1MzIsIFwiTlwiXSxcclxuICAgIFs2NTUzMywgNjU1MzMsIFwiQVwiXSxcclxuICAgIFs2NTUzNCwgOTQxNzUsIFwiTlwiXSxcclxuICAgIFs5NDE3NiwgOTQxODAsIFwiV1wiXSxcclxuICAgIFs5NDE4MSwgOTQxOTEsIFwiTlwiXSxcclxuICAgIFs5NDE5MiwgOTQxOTMsIFwiV1wiXSxcclxuICAgIFs5NDE5NCwgOTQyMDcsIFwiTlwiXSxcclxuICAgIFs5NDIwOCwgMTAwMzQzLCBcIldcIl0sXHJcbiAgICBbMTAwMzQ0LCAxMDAzNTEsIFwiTlwiXSxcclxuICAgIFsxMDAzNTIsIDEwMTU4OSwgXCJXXCJdLFxyXG4gICAgWzEwMTU5MCwgMTAxNjMxLCBcIk5cIl0sXHJcbiAgICBbMTAxNjMyLCAxMDE2NDAsIFwiV1wiXSxcclxuICAgIFsxMDE2NDEsIDExMDU5MSwgXCJOXCJdLFxyXG4gICAgWzExMDU5MiwgMTEwODc4LCBcIldcIl0sXHJcbiAgICBbMTEwODc5LCAxMTA5MjcsIFwiTlwiXSxcclxuICAgIFsxMTA5MjgsIDExMDkzMCwgXCJXXCJdLFxyXG4gICAgWzExMDkzMSwgMTEwOTQ3LCBcIk5cIl0sXHJcbiAgICBbMTEwOTQ4LCAxMTA5NTEsIFwiV1wiXSxcclxuICAgIFsxMTA5NTIsIDExMDk1OSwgXCJOXCJdLFxyXG4gICAgWzExMDk2MCwgMTExMzU1LCBcIldcIl0sXHJcbiAgICBbMTExMzU2LCAxMjY5NzksIFwiTlwiXSxcclxuICAgIFsxMjY5ODAsIDEyNjk4MCwgXCJXXCJdLFxyXG4gICAgWzEyNjk4MSwgMTI3MTgyLCBcIk5cIl0sXHJcbiAgICBbMTI3MTgzLCAxMjcxODMsIFwiV1wiXSxcclxuICAgIFsxMjcxODQsIDEyNzIzMSwgXCJOXCJdLFxyXG4gICAgWzEyNzIzMiwgMTI3MjQyLCBcIkFcIl0sXHJcbiAgICBbMTI3MjQzLCAxMjcyNDcsIFwiTlwiXSxcclxuICAgIFsxMjcyNDgsIDEyNzI3NywgXCJBXCJdLFxyXG4gICAgWzEyNzI3OCwgMTI3Mjc5LCBcIk5cIl0sXHJcbiAgICBbMTI3MjgwLCAxMjczMzcsIFwiQVwiXSxcclxuICAgIFsxMjczMzgsIDEyNzM0MywgXCJOXCJdLFxyXG4gICAgWzEyNzM0NCwgMTI3MzczLCBcIkFcIl0sXHJcbiAgICBbMTI3Mzc0LCAxMjczNzQsIFwiV1wiXSxcclxuICAgIFsxMjczNzUsIDEyNzM3NiwgXCJBXCJdLFxyXG4gICAgWzEyNzM3NywgMTI3Mzg2LCBcIldcIl0sXHJcbiAgICBbMTI3Mzg3LCAxMjc0MDQsIFwiQVwiXSxcclxuICAgIFsxMjc0MDUsIDEyNzQ4NywgXCJOXCJdLFxyXG4gICAgWzEyNzQ4OCwgMTI3NDkwLCBcIldcIl0sXHJcbiAgICBbMTI3NDkxLCAxMjc1MDMsIFwiTlwiXSxcclxuICAgIFsxMjc1MDQsIDEyNzU0NywgXCJXXCJdLFxyXG4gICAgWzEyNzU0OCwgMTI3NTUxLCBcIk5cIl0sXHJcbiAgICBbMTI3NTUyLCAxMjc1NjAsIFwiV1wiXSxcclxuICAgIFsxMjc1NjEsIDEyNzU2NywgXCJOXCJdLFxyXG4gICAgWzEyNzU2OCwgMTI3NTY5LCBcIldcIl0sXHJcbiAgICBbMTI3NTcwLCAxMjc1ODMsIFwiTlwiXSxcclxuICAgIFsxMjc1ODQsIDEyNzU4OSwgXCJXXCJdLFxyXG4gICAgWzEyNzU5MCwgMTI3NzQzLCBcIk5cIl0sXHJcbiAgICBbMTI3NzQ0LCAxMjc3NzYsIFwiV1wiXSxcclxuICAgIFsxMjc3NzcsIDEyNzc4OCwgXCJOXCJdLFxyXG4gICAgWzEyNzc4OSwgMTI3Nzk3LCBcIldcIl0sXHJcbiAgICBbMTI3Nzk4LCAxMjc3OTgsIFwiTlwiXSxcclxuICAgIFsxMjc3OTksIDEyNzg2OCwgXCJXXCJdLFxyXG4gICAgWzEyNzg2OSwgMTI3ODY5LCBcIk5cIl0sXHJcbiAgICBbMTI3ODcwLCAxMjc4OTEsIFwiV1wiXSxcclxuICAgIFsxMjc4OTIsIDEyNzkwMywgXCJOXCJdLFxyXG4gICAgWzEyNzkwNCwgMTI3OTQ2LCBcIldcIl0sXHJcbiAgICBbMTI3OTQ3LCAxMjc5NTAsIFwiTlwiXSxcclxuICAgIFsxMjc5NTEsIDEyNzk1NSwgXCJXXCJdLFxyXG4gICAgWzEyNzk1NiwgMTI3OTY3LCBcIk5cIl0sXHJcbiAgICBbMTI3OTY4LCAxMjc5ODQsIFwiV1wiXSxcclxuICAgIFsxMjc5ODUsIDEyNzk4NywgXCJOXCJdLFxyXG4gICAgWzEyNzk4OCwgMTI3OTg4LCBcIldcIl0sXHJcbiAgICBbMTI3OTg5LCAxMjc5OTEsIFwiTlwiXSxcclxuICAgIFsxMjc5OTIsIDEyODA2MiwgXCJXXCJdLFxyXG4gICAgWzEyODA2MywgMTI4MDYzLCBcIk5cIl0sXHJcbiAgICBbMTI4MDY0LCAxMjgwNjQsIFwiV1wiXSxcclxuICAgIFsxMjgwNjUsIDEyODA2NSwgXCJOXCJdLFxyXG4gICAgWzEyODA2NiwgMTI4MjUyLCBcIldcIl0sXHJcbiAgICBbMTI4MjUzLCAxMjgyNTQsIFwiTlwiXSxcclxuICAgIFsxMjgyNTUsIDEyODMxNywgXCJXXCJdLFxyXG4gICAgWzEyODMxOCwgMTI4MzMwLCBcIk5cIl0sXHJcbiAgICBbMTI4MzMxLCAxMjgzMzQsIFwiV1wiXSxcclxuICAgIFsxMjgzMzUsIDEyODMzNSwgXCJOXCJdLFxyXG4gICAgWzEyODMzNiwgMTI4MzU5LCBcIldcIl0sXHJcbiAgICBbMTI4MzYwLCAxMjgzNzcsIFwiTlwiXSxcclxuICAgIFsxMjgzNzgsIDEyODM3OCwgXCJXXCJdLFxyXG4gICAgWzEyODM3OSwgMTI4NDA0LCBcIk5cIl0sXHJcbiAgICBbMTI4NDA1LCAxMjg0MDYsIFwiV1wiXSxcclxuICAgIFsxMjg0MDcsIDEyODQxOSwgXCJOXCJdLFxyXG4gICAgWzEyODQyMCwgMTI4NDIwLCBcIldcIl0sXHJcbiAgICBbMTI4NDIxLCAxMjg1MDYsIFwiTlwiXSxcclxuICAgIFsxMjg1MDcsIDEyODU5MSwgXCJXXCJdLFxyXG4gICAgWzEyODU5MiwgMTI4NjM5LCBcIk5cIl0sXHJcbiAgICBbMTI4NjQwLCAxMjg3MDksIFwiV1wiXSxcclxuICAgIFsxMjg3MTAsIDEyODcxNSwgXCJOXCJdLFxyXG4gICAgWzEyODcxNiwgMTI4NzE2LCBcIldcIl0sXHJcbiAgICBbMTI4NzE3LCAxMjg3MTksIFwiTlwiXSxcclxuICAgIFsxMjg3MjAsIDEyODcyMiwgXCJXXCJdLFxyXG4gICAgWzEyODcyMywgMTI4NzI0LCBcIk5cIl0sXHJcbiAgICBbMTI4NzI1LCAxMjg3MjcsIFwiV1wiXSxcclxuICAgIFsxMjg3MjgsIDEyODc0NiwgXCJOXCJdLFxyXG4gICAgWzEyODc0NywgMTI4NzQ4LCBcIldcIl0sXHJcbiAgICBbMTI4NzQ5LCAxMjg3NTUsIFwiTlwiXSxcclxuICAgIFsxMjg3NTYsIDEyODc2NCwgXCJXXCJdLFxyXG4gICAgWzEyODc2NSwgMTI4OTkxLCBcIk5cIl0sXHJcbiAgICBbMTI4OTkyLCAxMjkwMDMsIFwiV1wiXSxcclxuICAgIFsxMjkwMDQsIDEyOTI5MSwgXCJOXCJdLFxyXG4gICAgWzEyOTI5MiwgMTI5MzM4LCBcIldcIl0sXHJcbiAgICBbMTI5MzM5LCAxMjkzMzksIFwiTlwiXSxcclxuICAgIFsxMjkzNDAsIDEyOTM0OSwgXCJXXCJdLFxyXG4gICAgWzEyOTM1MCwgMTI5MzUwLCBcIk5cIl0sXHJcbiAgICBbMTI5MzUxLCAxMjk0MDAsIFwiV1wiXSxcclxuICAgIFsxMjk0MDEsIDEyOTQwMSwgXCJOXCJdLFxyXG4gICAgWzEyOTQwMiwgMTI5NDgzLCBcIldcIl0sXHJcbiAgICBbMTI5NDg0LCAxMjk0ODQsIFwiTlwiXSxcclxuICAgIFsxMjk0ODUsIDEyOTUzNSwgXCJXXCJdLFxyXG4gICAgWzEyOTUzNiwgMTI5NjQ3LCBcIk5cIl0sXHJcbiAgICBbMTI5NjQ4LCAxMjk2NTIsIFwiV1wiXSxcclxuICAgIFsxMjk2NTMsIDEyOTY1NSwgXCJOXCJdLFxyXG4gICAgWzEyOTY1NiwgMTI5NjU4LCBcIldcIl0sXHJcbiAgICBbMTI5NjU5LCAxMjk2NjMsIFwiTlwiXSxcclxuICAgIFsxMjk2NjQsIDEyOTY3MCwgXCJXXCJdLFxyXG4gICAgWzEyOTY3MSwgMTI5Njc5LCBcIk5cIl0sXHJcbiAgICBbMTI5NjgwLCAxMjk3MDQsIFwiV1wiXSxcclxuICAgIFsxMjk3MDUsIDEyOTcxMSwgXCJOXCJdLFxyXG4gICAgWzEyOTcxMiwgMTI5NzE4LCBcIldcIl0sXHJcbiAgICBbMTI5NzE5LCAxMjk3MjcsIFwiTlwiXSxcclxuICAgIFsxMjk3MjgsIDEyOTczMCwgXCJXXCJdLFxyXG4gICAgWzEyOTczMSwgMTI5NzQzLCBcIk5cIl0sXHJcbiAgICBbMTI5NzQ0LCAxMjk3NTAsIFwiV1wiXSxcclxuICAgIFsxMjk3NTEsIDEzMTA3MSwgXCJOXCJdLFxyXG4gICAgWzEzMTA3MiwgMTk2NjA1LCBcIldcIl0sXHJcbiAgICBbMTk2NjA2LCAxOTY2MDcsIFwiTlwiXSxcclxuICAgIFsxOTY2MDgsIDI2MjE0MSwgXCJXXCJdLFxyXG4gICAgWzI2MjE0MiwgOTE3NzU5LCBcIk5cIl0sXHJcbiAgICBbOTE3NzYwLCA5MTc5OTksIFwiQVwiXSxcclxuICAgIFs5MTgwMDAsIDk4MzAzOSwgXCJOXCJdLFxyXG4gICAgWzk4MzA0MCwgMTA0ODU3MywgXCJBXCJdLFxyXG4gICAgWzEwNDg1NzQsIDEwNDg1NzUsIFwiTlwiXSxcclxuICAgIFsxMDQ4NTc2LCAxMTE0MTA5LCBcIkFcIl0sXHJcbiAgICBbMTExNDExMCwgMTExNDExMSwgXCJOXCJdLFxyXG5dO1xyXG4vKiBFTkQgKi9cclxudmFyIHZlcnNpb24gPSBcIjEzLjAuMFwiO1xuXG4vKipcclxuICogR2V0cyB0aGUgRUFXIHByb3BlcnR5IG9mIGEgY29kZSBwb2ludC5cclxuICogQHBhcmFtIGNvZGVQb2ludCBDb2RlIHBvaW50XHJcbiAqIEByZXR1cm4gVGhlIEVBVyBwcm9wZXJ0eSBvZiB0aGUgY29kZSBwb2ludFxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0RUFXT2ZDb2RlUG9pbnQoY29kZVBvaW50KSB7XHJcbiAgICB2YXIgbWluID0gMDtcclxuICAgIHZhciBtYXggPSBkZWZzLmxlbmd0aCAtIDE7XHJcbiAgICB3aGlsZSAobWluICE9PSBtYXgpIHtcclxuICAgICAgICB2YXIgaSA9IG1pbiArICgobWF4IC0gbWluKSA+PiAxKTtcclxuICAgICAgICB2YXIgX2EgPSBkZWZzW2ldLCBzdGFydCA9IF9hWzBdLCBlbmQgPSBfYVsxXSwgcHJvcCA9IF9hWzJdO1xyXG4gICAgICAgIGlmIChjb2RlUG9pbnQgPCBzdGFydCkge1xyXG4gICAgICAgICAgICBtYXggPSBpIC0gMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoY29kZVBvaW50ID4gZW5kKSB7XHJcbiAgICAgICAgICAgIG1pbiA9IGkgKyAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHByb3A7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRlZnNbbWluXVsyXTtcclxufVxyXG4vKipcclxuICogR2V0cyB0aGUgRUFXIHByb3BlcnR5IG9mIGEgY2hhcmFjdGVyLlxyXG4gKiBAcGFyYW0gc3RyIENoYXJhY3RlciBzdHJpbmdcclxuICogQHBhcmFtIHBvcyBDaGFyYWN0ZXIgcG9zaXRpb24gKGluIGNvZGUgdW5pdCkgKGRlZmF1bHQgPSAwKVxyXG4gKiBAcmV0dXJuIFRoZSBFQVcgcHJvcGVydHkgb2YgdGhlIGNoYXJhY3RlclxyXG4gKiBAZXhhbXBsZVxyXG4gKiBpbXBvcnQgeyBnZXRFQVcgfSBmcm9tIFwibWVhd1wiO1xyXG4gKlxyXG4gKiAvLyBOYXJyb3dcclxuICogYXNzZXJ0KGdldEVBVyhcIkFcIikgPT09IFwiTmFcIik7XHJcbiAqIC8vIFdpZGVcclxuICogYXNzZXJ0KGdldEVBVyhcIuOBglwiKSA9PT0gXCJXXCIpO1xyXG4gKiBhc3NlcnQoZ2V0RUFXKFwi5a6JXCIpID09PSBcIldcIik7XHJcbiAqIGFzc2VydChnZXRFQVcoXCLwn42jXCIpID09PSBcIldcIik7XHJcbiAqIC8vIEZ1bGx3aWR0aFxyXG4gKiBhc3NlcnQoZ2V0RUFXKFwi77yhXCIpID09PSBcIkZcIik7XHJcbiAqIC8vIEhhbGZ3aWR0aFxyXG4gKiBhc3NlcnQoZ2V0RUFXKFwi772xXCIpID09PSBcIkhcIik7XHJcbiAqIC8vIEFtYmlndW91c1xyXG4gKiBhc3NlcnQoZ2V0RUFXKFwi4oiAXCIpID09PSBcIkFcIik7XHJcbiAqIGFzc2VydChnZXRFQVcoXCLihpJcIikgPT09IFwiQVwiKTtcclxuICogYXNzZXJ0KGdldEVBVyhcIs6pXCIpID09PSBcIkFcIik7XHJcbiAqIGFzc2VydChnZXRFQVcoXCLQr1wiKSA9PT0gXCJBXCIpO1xyXG4gKiAvLyBOZXV0cmFsXHJcbiAqIGFzc2VydChnZXRFQVcoXCLihLVcIikgPT09IFwiTlwiKTtcclxuICpcclxuICogLy8gY2hhcmFjdGVyIHBvc2l0aW9uIChpbiBjb2RlIHVuaXQpIGNhbiBiZSBzcGVjaWZpZWRcclxuICogYXNzZXJ0KGdldEVBVyhcIuKEtUHjgYLvvKHvvbHiiIBcIiwgMikgPT09IFwiV1wiKTtcclxuICovXHJcbmZ1bmN0aW9uIGdldEVBVyhzdHIsIHBvcykge1xyXG4gICAgaWYgKHBvcyA9PT0gdm9pZCAwKSB7IHBvcyA9IDA7IH1cclxuICAgIHZhciBjb2RlUG9pbnQgPSBzdHIuY29kZVBvaW50QXQocG9zKTtcclxuICAgIGlmIChjb2RlUG9pbnQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZ2V0RUFXT2ZDb2RlUG9pbnQoY29kZVBvaW50KTtcclxufVxuXG52YXIgZGVmYXVsdFdpZHRocyA9IHtcclxuICAgIE46IDEsXHJcbiAgICBOYTogMSxcclxuICAgIFc6IDIsXHJcbiAgICBGOiAyLFxyXG4gICAgSDogMSxcclxuICAgIEE6IDEsXHJcbn07XHJcbi8qKlxyXG4gKiBDb21wdXRlcyB0aGUgd2lkdGggb2YgYSBzdHJpbmcgYmFzZWQgb24gdGhlIEVBVyBwcm9wZXJ0aWVzIG9mIHRoZSBjaGFyYWN0ZXJzLlxyXG4gKiBCeSBkZWZhdWx0LCBjaGFyYWN0ZXJzIHdpdGggcHJvcGVydHkgV2lkZSAoVykgb3IgRnVsbHdpZHRoIChGKSBhcmUgdHJlYXRlZCBhcyB3aWRlICg9IDIpXHJcbiAqIGFuZCBvdGhlcnMgYXJlIGFzIG5hcnJvdyAoPSAxKS5cclxuICogQHBhcmFtIHN0ciBDaGFyYWN0ZXIgc3RyaW5nXHJcbiAqIEBwYXJhbSB3aWR0aHMgQW4gb2JqZWN0IHRoYXQgbWFwcyBFQVcgcHJvcGVydGllcyB0byBjaGFyYWN0ZXIgd2lkdGhzXHJcbiAqIEByZXR1cm4gVGhlIGNvbXB1dGVkIHdpZHRoXHJcbiAqIEBleGFtcGxlXHJcbiAqIGltcG9ydCB7IGNvbXB1dGVXaWR0aCB9IGZyb20gXCJtZWF3XCI7XHJcbiAqXHJcbiAqIGFzc2VydChjb21wdXRlV2lkdGgoXCJB44GC8J+No86pXCIpID09PSA2KTtcclxuICogLy8gY2hhcmFjdGVyIHdpZHRoIGZvciBlYWNoIEVBVyBwcm9wZXJ0eSBjYW4gYmUgY3VzdG9taXplZFxyXG4gKiBhc3NlcnQoY29tcHV0ZVdpZHRoKFwiQeOBgvCfjaPOqVwiLCB7IFwiQVwiOiAyIH0pID09PSA3KTtcclxuICovXHJcbmZ1bmN0aW9uIGNvbXB1dGVXaWR0aChzdHIsIHdpZHRocykge1xyXG4gICAgdmFyIHdpZHRoID0gMDtcclxuICAgIGZvciAodmFyIF9pID0gMCwgc3RyXzEgPSBzdHI7IF9pIDwgc3RyXzEubGVuZ3RoOyBfaSsrKSB7XHJcbiAgICAgICAgdmFyIGNoYXIgPSBzdHJfMVtfaV07XHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb24gLS0gY2hhciBjYW5ub3QgYmUgZW1wdHlcclxuICAgICAgICB2YXIgZWF3ID0gZ2V0RUFXKGNoYXIpO1xyXG4gICAgICAgIHdpZHRoICs9ICh3aWR0aHMgJiYgd2lkdGhzW2Vhd10pIHx8IGRlZmF1bHRXaWR0aHNbZWF3XTtcclxuICAgIH1cclxuICAgIHJldHVybiB3aWR0aDtcclxufVxuXG5leHBvcnQgeyBjb21wdXRlV2lkdGgsIHZlcnNpb24gYXMgZWF3VmVyc2lvbiwgZ2V0RUFXIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMubW92ZUNvbHVtbiA9IGV4cG9ydHMuZGVsZXRlQ29sdW1uID0gZXhwb3J0cy5pbnNlcnRDb2x1bW4gPSBleHBvcnRzLm1vdmVSb3cgPSBleHBvcnRzLmRlbGV0ZVJvdyA9IGV4cG9ydHMuaW5zZXJ0Um93ID0gZXhwb3J0cy5hbHRlckFsaWdubWVudCA9IGV4cG9ydHMuZm9ybWF0VGFibGUgPSBleHBvcnRzLkZvcm1hdFR5cGUgPSBleHBvcnRzLl93ZWFrRm9ybWF0VGFibGUgPSBleHBvcnRzLl9mb3JtYXRUYWJsZSA9IGV4cG9ydHMuX3BhZFRleHQgPSBleHBvcnRzLl9hbGlnblRleHQgPSBleHBvcnRzLl9jb21wdXRlVGV4dFdpZHRoID0gZXhwb3J0cy5jb21wbGV0ZVRhYmxlID0gZXhwb3J0cy5fZXh0ZW5kQXJyYXkgPSBleHBvcnRzLl9kZWxpbWl0ZXJUZXh0ID0gdm9pZCAwO1xuY29uc3QgYWxpZ25tZW50XzEgPSByZXF1aXJlKFwiLi9hbGlnbm1lbnRcIik7XG5jb25zdCB0YWJsZV8xID0gcmVxdWlyZShcIi4vdGFibGVcIik7XG5jb25zdCB0YWJsZV9jZWxsXzEgPSByZXF1aXJlKFwiLi90YWJsZS1jZWxsXCIpO1xuY29uc3QgdGFibGVfcm93XzEgPSByZXF1aXJlKFwiLi90YWJsZS1yb3dcIik7XG5jb25zdCBtZWF3XzEgPSByZXF1aXJlKFwibWVhd1wiKTtcbi8qKlxuICogQ3JlYXRlcyBhIGRlbGltaXRlciB0ZXh0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gd2lkdGggLSBXaWR0aCBvZiB0aGUgaG9yaXpvbnRhbCBiYXIgb2YgZGVsaW1pdGVyLlxuICogQHRocm93cyB7RXJyb3J9IFVua25vd24gYWxpZ25tZW50LlxuICovXG5jb25zdCBfZGVsaW1pdGVyVGV4dCA9IChhbGlnbm1lbnQsIHdpZHRoKSA9PiB7XG4gICAgY29uc3QgYmFyID0gJy0nLnJlcGVhdCh3aWR0aCk7XG4gICAgc3dpdGNoIChhbGlnbm1lbnQpIHtcbiAgICAgICAgY2FzZSBhbGlnbm1lbnRfMS5BbGlnbm1lbnQuTk9ORTpcbiAgICAgICAgICAgIHJldHVybiBgICR7YmFyfSBgO1xuICAgICAgICBjYXNlIGFsaWdubWVudF8xLkFsaWdubWVudC5MRUZUOlxuICAgICAgICAgICAgcmV0dXJuIGA6JHtiYXJ9IGA7XG4gICAgICAgIGNhc2UgYWxpZ25tZW50XzEuQWxpZ25tZW50LlJJR0hUOlxuICAgICAgICAgICAgcmV0dXJuIGAgJHtiYXJ9OmA7XG4gICAgICAgIGNhc2UgYWxpZ25tZW50XzEuQWxpZ25tZW50LkNFTlRFUjpcbiAgICAgICAgICAgIHJldHVybiBgOiR7YmFyfTpgO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGFsaWdubWVudDogJyArIGFsaWdubWVudCk7XG4gICAgfVxufTtcbmV4cG9ydHMuX2RlbGltaXRlclRleHQgPSBfZGVsaW1pdGVyVGV4dDtcbi8qKlxuICogRXh0ZW5kcyBhcnJheSBzaXplLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBDYWxsYmFjayBmdW5jdGlvbiB0byBmaWxsIG5ld2x5IGNyZWF0ZWQgY2VsbHMuXG4gKiBAcmV0dXJucyBFeHRlbmRlZCBhcnJheS5cbiAqL1xuY29uc3QgX2V4dGVuZEFycmF5ID0gKGFyciwgc2l6ZSwgY2FsbGJhY2spID0+IHtcbiAgICBjb25zdCBleHRlbmRlZCA9IGFyci5zbGljZSgpO1xuICAgIGZvciAobGV0IGkgPSBhcnIubGVuZ3RoOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgIGV4dGVuZGVkLnB1c2goY2FsbGJhY2soaSwgYXJyKSk7XG4gICAgfVxuICAgIHJldHVybiBleHRlbmRlZDtcbn07XG5leHBvcnRzLl9leHRlbmRBcnJheSA9IF9leHRlbmRBcnJheTtcbi8qKlxuICogQ29tcGxldGVzIGEgdGFibGUgYnkgYWRkaW5nIG1pc3NpbmcgZGVsaW1pdGVyIGFuZCBjZWxscy5cbiAqIEFmdGVyIGNvbXBsZXRpb24sIGFsbCByb3dzIGluIHRoZSB0YWJsZSBoYXZlIHRoZSBzYW1lIHdpZHRoLlxuICpcbiAqIEBwcml2YXRlXG4gKlxuICogQHRocm93cyB7RXJyb3J9IEVtcHR5IHRhYmxlLlxuICovXG5jb25zdCBjb21wbGV0ZVRhYmxlID0gKHRhYmxlLCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3QgdGFibGVIZWlnaHQgPSB0YWJsZS5nZXRIZWlnaHQoKTtcbiAgICBjb25zdCB0YWJsZVdpZHRoID0gdGFibGUuZ2V0V2lkdGgoKTtcbiAgICBpZiAodGFibGVIZWlnaHQgPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbXB0eSB0YWJsZScpO1xuICAgIH1cbiAgICBjb25zdCByb3dzID0gdGFibGUuZ2V0Um93cygpO1xuICAgIGNvbnN0IG5ld1Jvd3MgPSBbXTtcbiAgICAvLyBoZWFkZXJcbiAgICBjb25zdCBoZWFkZXJSb3cgPSByb3dzWzBdO1xuICAgIGNvbnN0IGhlYWRlckNlbGxzID0gaGVhZGVyUm93LmdldENlbGxzKCk7XG4gICAgbmV3Um93cy5wdXNoKG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdygoMCwgZXhwb3J0cy5fZXh0ZW5kQXJyYXkpKGhlYWRlckNlbGxzLCB0YWJsZVdpZHRoLCAoaikgPT4gbmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoaiA9PT0gaGVhZGVyQ2VsbHMubGVuZ3RoID8gaGVhZGVyUm93Lm1hcmdpblJpZ2h0IDogJycpKSwgaGVhZGVyUm93Lm1hcmdpbkxlZnQsIGhlYWRlckNlbGxzLmxlbmd0aCA8IHRhYmxlV2lkdGggPyAnJyA6IGhlYWRlclJvdy5tYXJnaW5SaWdodCkpO1xuICAgIC8vIGRlbGltaXRlclxuICAgIGNvbnN0IGRlbGltaXRlclJvdyA9IHRhYmxlLmdldERlbGltaXRlclJvdygpO1xuICAgIGlmIChkZWxpbWl0ZXJSb3cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBkZWxpbWl0ZXJDZWxscyA9IGRlbGltaXRlclJvdy5nZXRDZWxscygpO1xuICAgICAgICBuZXdSb3dzLnB1c2gobmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KCgwLCBleHBvcnRzLl9leHRlbmRBcnJheSkoZGVsaW1pdGVyQ2VsbHMsIHRhYmxlV2lkdGgsIChqKSA9PiBuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbCgoMCwgZXhwb3J0cy5fZGVsaW1pdGVyVGV4dCkoYWxpZ25tZW50XzEuQWxpZ25tZW50Lk5PTkUsIGogPT09IGRlbGltaXRlckNlbGxzLmxlbmd0aFxuICAgICAgICAgICAgPyBNYXRoLm1heChvcHRpb25zLm1pbkRlbGltaXRlcldpZHRoLCBkZWxpbWl0ZXJSb3cubWFyZ2luUmlnaHQubGVuZ3RoIC0gMilcbiAgICAgICAgICAgIDogb3B0aW9ucy5taW5EZWxpbWl0ZXJXaWR0aCkpKSwgZGVsaW1pdGVyUm93Lm1hcmdpbkxlZnQsIGRlbGltaXRlckNlbGxzLmxlbmd0aCA8IHRhYmxlV2lkdGggPyAnJyA6IGRlbGltaXRlclJvdy5tYXJnaW5SaWdodCkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgbmV3Um93cy5wdXNoKG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdygoMCwgZXhwb3J0cy5fZXh0ZW5kQXJyYXkpKFtdLCB0YWJsZVdpZHRoLCAoKSA9PiBuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbCgoMCwgZXhwb3J0cy5fZGVsaW1pdGVyVGV4dCkoYWxpZ25tZW50XzEuQWxpZ25tZW50Lk5PTkUsIG9wdGlvbnMubWluRGVsaW1pdGVyV2lkdGgpKSksICcnLCAnJykpO1xuICAgIH1cbiAgICAvLyBib2R5XG4gICAgZm9yIChsZXQgaSA9IGRlbGltaXRlclJvdyAhPT0gdW5kZWZpbmVkID8gMiA6IDE7IGkgPCB0YWJsZUhlaWdodDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHJvdyA9IHJvd3NbaV07XG4gICAgICAgIGNvbnN0IGNlbGxzID0gcm93LmdldENlbGxzKCk7XG4gICAgICAgIG5ld1Jvd3MucHVzaChuZXcgdGFibGVfcm93XzEuVGFibGVSb3coKDAsIGV4cG9ydHMuX2V4dGVuZEFycmF5KShjZWxscywgdGFibGVXaWR0aCwgKGopID0+IG5ldyB0YWJsZV9jZWxsXzEuVGFibGVDZWxsKGogPT09IGNlbGxzLmxlbmd0aCA/IHJvdy5tYXJnaW5SaWdodCA6ICcnKSksIHJvdy5tYXJnaW5MZWZ0LCBjZWxscy5sZW5ndGggPCB0YWJsZVdpZHRoID8gJycgOiByb3cubWFyZ2luUmlnaHQpKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdGFibGU6IG5ldyB0YWJsZV8xLlRhYmxlKG5ld1Jvd3MpLFxuICAgICAgICBkZWxpbWl0ZXJJbnNlcnRlZDogZGVsaW1pdGVyUm93ID09PSB1bmRlZmluZWQsXG4gICAgfTtcbn07XG5leHBvcnRzLmNvbXBsZXRlVGFibGUgPSBjb21wbGV0ZVRhYmxlO1xuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSB3aWR0aCBvZiBhIHRleHQgYmFzZWQgb24gY2hhcmFjdGVycycgRUFXIHByb3BlcnRpZXMuXG4gKlxuICogQHByaXZhdGVcbiAqXG4gKiBAcmV0dXJucyBDYWxjdWxhdGVkIHdpZHRoIG9mIHRoZSB0ZXh0LlxuICovXG5jb25zdCBfY29tcHV0ZVRleHRXaWR0aCA9ICh0ZXh0LCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IG9wdGlvbnMubm9ybWFsaXplID8gdGV4dC5ub3JtYWxpemUoJ05GQycpIDogdGV4dDtcbiAgICBsZXQgdyA9IDA7XG4gICAgZm9yIChjb25zdCBjaGFyIG9mIG5vcm1hbGl6ZWQpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMud2lkZUNoYXJzLmhhcyhjaGFyKSkge1xuICAgICAgICAgICAgdyArPSAyO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMubmFycm93Q2hhcnMuaGFzKGNoYXIpKSB7XG4gICAgICAgICAgICB3ICs9IDE7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKCgwLCBtZWF3XzEuZ2V0RUFXKShjaGFyKSkge1xuICAgICAgICAgICAgY2FzZSAnRic6XG4gICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICB3ICs9IDI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdBJzpcbiAgICAgICAgICAgICAgICB3ICs9IG9wdGlvbnMuYW1iaWd1b3VzQXNXaWRlID8gMiA6IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHcgKz0gMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdztcbn07XG5leHBvcnRzLl9jb21wdXRlVGV4dFdpZHRoID0gX2NvbXB1dGVUZXh0V2lkdGg7XG4vKipcbiAqIFJldHVybnMgYSBhbGlnbmVkIGNlbGwgY29udGVudC5cbiAqXG4gKiBAdGhyb3dzIHtFcnJvcn0gVW5rbm93biBhbGlnbm1lbnQuXG4gKiBAdGhyb3dzIHtFcnJvcn0gVW5leHBlY3RlZCBkZWZhdWx0IGFsaWdubWVudC5cbiAqL1xuY29uc3QgX2FsaWduVGV4dCA9ICh0ZXh0LCB3aWR0aCwgYWxpZ25tZW50LCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3Qgc3BhY2UgPSB3aWR0aCAtICgwLCBleHBvcnRzLl9jb21wdXRlVGV4dFdpZHRoKSh0ZXh0LCBvcHRpb25zKTtcbiAgICBpZiAoc3BhY2UgPCAwKSB7XG4gICAgICAgIHJldHVybiB0ZXh0O1xuICAgIH1cbiAgICBzd2l0Y2ggKGFsaWdubWVudCkge1xuICAgICAgICBjYXNlIGFsaWdubWVudF8xLkFsaWdubWVudC5OT05FOlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIGRlZmF1bHQgYWxpZ25tZW50Jyk7XG4gICAgICAgIGNhc2UgYWxpZ25tZW50XzEuQWxpZ25tZW50LkxFRlQ6XG4gICAgICAgICAgICByZXR1cm4gdGV4dCArICcgJy5yZXBlYXQoc3BhY2UpO1xuICAgICAgICBjYXNlIGFsaWdubWVudF8xLkFsaWdubWVudC5SSUdIVDpcbiAgICAgICAgICAgIHJldHVybiAnICcucmVwZWF0KHNwYWNlKSArIHRleHQ7XG4gICAgICAgIGNhc2UgYWxpZ25tZW50XzEuQWxpZ25tZW50LkNFTlRFUjpcbiAgICAgICAgICAgIHJldHVybiAoJyAnLnJlcGVhdChNYXRoLmZsb29yKHNwYWNlIC8gMikpICtcbiAgICAgICAgICAgICAgICB0ZXh0ICtcbiAgICAgICAgICAgICAgICAnICcucmVwZWF0KE1hdGguY2VpbChzcGFjZSAvIDIpKSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gYWxpZ25tZW50OiAnICsgYWxpZ25tZW50KTtcbiAgICB9XG59O1xuZXhwb3J0cy5fYWxpZ25UZXh0ID0gX2FsaWduVGV4dDtcbi8qKlxuICogSnVzdCBhZGRzIG9uZSBzcGFjZSBwYWRkaW5ncyB0byBib3RoIHNpZGVzIG9mIGEgdGV4dC5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5jb25zdCBfcGFkVGV4dCA9ICh0ZXh0KSA9PiBgICR7dGV4dH0gYDtcbmV4cG9ydHMuX3BhZFRleHQgPSBfcGFkVGV4dDtcbi8qKlxuICogRm9ybWF0cyBhIHRhYmxlLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmNvbnN0IF9mb3JtYXRUYWJsZSA9ICh0YWJsZSwgb3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHRhYmxlSGVpZ2h0ID0gdGFibGUuZ2V0SGVpZ2h0KCk7XG4gICAgY29uc3QgdGFibGVXaWR0aCA9IHRhYmxlLmdldFdpZHRoKCk7XG4gICAgaWYgKHRhYmxlSGVpZ2h0ID09PSAwKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICAgIG1hcmdpbkxlZnQ6ICcnLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBtYXJnaW5MZWZ0ID0gdGFibGUuZ2V0Um93cygpWzBdLm1hcmdpbkxlZnQ7XG4gICAgaWYgKHRhYmxlV2lkdGggPT09IDApIHtcbiAgICAgICAgY29uc3Qgcm93cyA9IG5ldyBBcnJheSh0YWJsZUhlaWdodCkuZmlsbChuZXcgdGFibGVfcm93XzEuVGFibGVSb3coW10sIG1hcmdpbkxlZnQsICcnKSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0YWJsZTogbmV3IHRhYmxlXzEuVGFibGUocm93cyksXG4gICAgICAgICAgICBtYXJnaW5MZWZ0LFxuICAgICAgICB9O1xuICAgIH1cbiAgICAvLyBjb21wdXRlIGNvbHVtbiB3aWR0aHNcbiAgICBjb25zdCBkZWxpbWl0ZXJSb3cgPSB0YWJsZS5nZXREZWxpbWl0ZXJSb3coKTtcbiAgICBjb25zdCBjb2x1bW5XaWR0aHMgPSBuZXcgQXJyYXkodGFibGVXaWR0aCkuZmlsbCgwKTtcbiAgICBpZiAoZGVsaW1pdGVyUm93ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgZGVsaW1pdGVyUm93V2lkdGggPSBkZWxpbWl0ZXJSb3cuZ2V0V2lkdGgoKTtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBkZWxpbWl0ZXJSb3dXaWR0aDsgaisrKSB7XG4gICAgICAgICAgICBjb2x1bW5XaWR0aHNbal0gPSBvcHRpb25zLm1pbkRlbGltaXRlcldpZHRoO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFibGVIZWlnaHQ7IGkrKykge1xuICAgICAgICBpZiAoZGVsaW1pdGVyUm93ICE9PSB1bmRlZmluZWQgJiYgaSA9PT0gMSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgcm93ID0gdGFibGUuZ2V0Um93cygpW2ldO1xuICAgICAgICBjb25zdCByb3dXaWR0aCA9IHJvdy5nZXRXaWR0aCgpO1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHJvd1dpZHRoOyBqKyspIHtcbiAgICAgICAgICAgIGNvbHVtbldpZHRoc1tqXSA9IE1hdGgubWF4KGNvbHVtbldpZHRoc1tqXSwgKDAsIGV4cG9ydHMuX2NvbXB1dGVUZXh0V2lkdGgpKHJvdy5nZXRDZWxsQXQoaikuY29udGVudCwgb3B0aW9ucy50ZXh0V2lkdGhPcHRpb25zKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gZ2V0IGNvbHVtbiBhbGlnbm1lbnRzXG4gICAgY29uc3QgYWxpZ25tZW50cyA9IGRlbGltaXRlclJvdyAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gKDAsIGV4cG9ydHMuX2V4dGVuZEFycmF5KShkZWxpbWl0ZXJSb3cuZ2V0Q2VsbHMoKS5tYXAoKGNlbGwpID0+IGNlbGwuZ2V0QWxpZ25tZW50KCkpLCB0YWJsZVdpZHRoLCBcbiAgICAgICAgLy8gU2FmZSBjb252ZXJzaW9uIGJlY2F1c2UgRGVmYXVsdEFsaWdubWVudCBpcyBhIHN1YnNldCBvZiBBbGlnbm1lbnRcbiAgICAgICAgKCkgPT4gb3B0aW9ucy5kZWZhdWx0QWxpZ25tZW50KVxuICAgICAgICA6IG5ldyBBcnJheSh0YWJsZVdpZHRoKS5maWxsKG9wdGlvbnMuZGVmYXVsdEFsaWdubWVudCk7XG4gICAgLy8gZm9ybWF0XG4gICAgY29uc3Qgcm93cyA9IFtdO1xuICAgIC8vIGhlYWRlclxuICAgIGNvbnN0IGhlYWRlclJvdyA9IHRhYmxlLmdldFJvd3MoKVswXTtcbiAgICByb3dzLnB1c2gobmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KGhlYWRlclJvd1xuICAgICAgICAuZ2V0Q2VsbHMoKVxuICAgICAgICAubWFwKChjZWxsLCBqKSA9PiBuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbCgoMCwgZXhwb3J0cy5fcGFkVGV4dCkoKDAsIGV4cG9ydHMuX2FsaWduVGV4dCkoY2VsbC5jb250ZW50LCBjb2x1bW5XaWR0aHNbal0sIG9wdGlvbnMuaGVhZGVyQWxpZ25tZW50ID09PSBhbGlnbm1lbnRfMS5IZWFkZXJBbGlnbm1lbnQuRk9MTE9XXG4gICAgICAgID8gYWxpZ25tZW50c1tqXSA9PT0gYWxpZ25tZW50XzEuQWxpZ25tZW50Lk5PTkVcbiAgICAgICAgICAgID8gb3B0aW9ucy5kZWZhdWx0QWxpZ25tZW50XG4gICAgICAgICAgICA6IGFsaWdubWVudHNbal1cbiAgICAgICAgOiBvcHRpb25zLmhlYWRlckFsaWdubWVudCwgb3B0aW9ucy50ZXh0V2lkdGhPcHRpb25zKSkpKSwgbWFyZ2luTGVmdCwgJycpKTtcbiAgICAvLyBkZWxpbWl0ZXJcbiAgICBpZiAoZGVsaW1pdGVyUm93ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcm93cy5wdXNoKG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdyhkZWxpbWl0ZXJSb3dcbiAgICAgICAgICAgIC5nZXRDZWxscygpXG4gICAgICAgICAgICAubWFwKChjZWxsLCBqKSA9PiBuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbCgoMCwgZXhwb3J0cy5fZGVsaW1pdGVyVGV4dCkoYWxpZ25tZW50c1tqXSwgY29sdW1uV2lkdGhzW2pdKSkpLCBtYXJnaW5MZWZ0LCAnJykpO1xuICAgIH1cbiAgICAvLyBib2R5XG4gICAgZm9yIChsZXQgaSA9IGRlbGltaXRlclJvdyAhPT0gdW5kZWZpbmVkID8gMiA6IDE7IGkgPCB0YWJsZUhlaWdodDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHJvdyA9IHRhYmxlLmdldFJvd3MoKVtpXTtcbiAgICAgICAgcm93cy5wdXNoKG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdyhyb3dcbiAgICAgICAgICAgIC5nZXRDZWxscygpXG4gICAgICAgICAgICAubWFwKChjZWxsLCBqKSA9PiBuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbCgoMCwgZXhwb3J0cy5fcGFkVGV4dCkoKDAsIGV4cG9ydHMuX2FsaWduVGV4dCkoY2VsbC5jb250ZW50LCBjb2x1bW5XaWR0aHNbal0sIGFsaWdubWVudHNbal0gPT09IGFsaWdubWVudF8xLkFsaWdubWVudC5OT05FXG4gICAgICAgICAgICA/IG9wdGlvbnMuZGVmYXVsdEFsaWdubWVudFxuICAgICAgICAgICAgOiBhbGlnbm1lbnRzW2pdLCBvcHRpb25zLnRleHRXaWR0aE9wdGlvbnMpKSkpLCBtYXJnaW5MZWZ0LCAnJykpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICB0YWJsZTogbmV3IHRhYmxlXzEuVGFibGUocm93cyksXG4gICAgICAgIG1hcmdpbkxlZnQsXG4gICAgfTtcbn07XG5leHBvcnRzLl9mb3JtYXRUYWJsZSA9IF9mb3JtYXRUYWJsZTtcbi8qKlxuICogRm9ybWF0cyBhIHRhYmxlIHdlYWtseS5cbiAqIFJvd3MgYXJlIGZvcm1hdHRlZCBpbmRlcGVuZGVudGx5IHRvIGVhY2ggb3RoZXIsIGNlbGwgY29udGVudHMgYXJlIGp1c3QgdHJpbW1lZCBhbmQgbm90IGFsaWduZWQuXG4gKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHVzaW5nIGEgbm9uLW1vbm9zcGFjZWQgZm9udCBvciBkZWFsaW5nIHdpdGggd2lkZSB0YWJsZXMuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuY29uc3QgX3dlYWtGb3JtYXRUYWJsZSA9ICh0YWJsZSwgb3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHRhYmxlSGVpZ2h0ID0gdGFibGUuZ2V0SGVpZ2h0KCk7XG4gICAgY29uc3QgdGFibGVXaWR0aCA9IHRhYmxlLmdldFdpZHRoKCk7XG4gICAgaWYgKHRhYmxlSGVpZ2h0ID09PSAwKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICAgIG1hcmdpbkxlZnQ6ICcnLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBtYXJnaW5MZWZ0ID0gdGFibGUuZ2V0Um93cygpWzBdLm1hcmdpbkxlZnQ7XG4gICAgaWYgKHRhYmxlV2lkdGggPT09IDApIHtcbiAgICAgICAgY29uc3Qgcm93cyA9IG5ldyBBcnJheSh0YWJsZUhlaWdodCkuZmlsbChuZXcgdGFibGVfcm93XzEuVGFibGVSb3coW10sIG1hcmdpbkxlZnQsICcnKSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0YWJsZTogbmV3IHRhYmxlXzEuVGFibGUocm93cyksXG4gICAgICAgICAgICBtYXJnaW5MZWZ0LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBkZWxpbWl0ZXJSb3cgPSB0YWJsZS5nZXREZWxpbWl0ZXJSb3coKTtcbiAgICAvLyBmb3JtYXRcbiAgICBjb25zdCByb3dzID0gW107XG4gICAgLy8gaGVhZGVyXG4gICAgY29uc3QgaGVhZGVyUm93ID0gdGFibGUuZ2V0Um93cygpWzBdO1xuICAgIHJvd3MucHVzaChuZXcgdGFibGVfcm93XzEuVGFibGVSb3coaGVhZGVyUm93LmdldENlbGxzKCkubWFwKChjZWxsKSA9PiBuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbCgoMCwgZXhwb3J0cy5fcGFkVGV4dCkoY2VsbC5jb250ZW50KSkpLCBtYXJnaW5MZWZ0LCAnJykpO1xuICAgIC8vIGRlbGltaXRlclxuICAgIGlmIChkZWxpbWl0ZXJSb3cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByb3dzLnB1c2gobmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KGRlbGltaXRlclJvd1xuICAgICAgICAgICAgLmdldENlbGxzKClcbiAgICAgICAgICAgIC5tYXAoKGNlbGwpID0+IG5ldyB0YWJsZV9jZWxsXzEuVGFibGVDZWxsKCgwLCBleHBvcnRzLl9kZWxpbWl0ZXJUZXh0KShjZWxsLmdldEFsaWdubWVudCgpLCBvcHRpb25zLm1pbkRlbGltaXRlcldpZHRoKSkpLCBtYXJnaW5MZWZ0LCAnJykpO1xuICAgIH1cbiAgICAvLyBib2R5XG4gICAgZm9yIChsZXQgaSA9IGRlbGltaXRlclJvdyAhPT0gdW5kZWZpbmVkID8gMiA6IDE7IGkgPCB0YWJsZUhlaWdodDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHJvdyA9IHRhYmxlLmdldFJvd3MoKVtpXTtcbiAgICAgICAgcm93cy5wdXNoKG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdyhyb3cuZ2V0Q2VsbHMoKS5tYXAoKGNlbGwpID0+IG5ldyB0YWJsZV9jZWxsXzEuVGFibGVDZWxsKCgwLCBleHBvcnRzLl9wYWRUZXh0KShjZWxsLmNvbnRlbnQpKSksIG1hcmdpbkxlZnQsICcnKSk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHRhYmxlOiBuZXcgdGFibGVfMS5UYWJsZShyb3dzKSxcbiAgICAgICAgbWFyZ2luTGVmdCxcbiAgICB9O1xufTtcbmV4cG9ydHMuX3dlYWtGb3JtYXRUYWJsZSA9IF93ZWFrRm9ybWF0VGFibGU7XG4vKipcbiAqIFJlcHJlc2VudHMgdGFibGUgZm9ybWF0IHR5cGUuXG4gKlxuICogLSBgRm9ybWF0VHlwZS5OT1JNQUxgIC0gRm9ybWF0cyB0YWJsZSBub3JtYWxseS5cbiAqIC0gYEZvcm1hdFR5cGUuV0VBS2AgLSBGb3JtYXRzIHRhYmxlIHdlYWtseSwgcm93cyBhcmUgZm9ybWF0dGVkIGluZGVwZW5kZW50bHkgdG8gZWFjaCBvdGhlciwgY2VsbFxuICogICBjb250ZW50cyBhcmUganVzdCB0cmltbWVkIGFuZCBub3QgYWxpZ25lZC5cbiAqL1xudmFyIEZvcm1hdFR5cGU7XG4oZnVuY3Rpb24gKEZvcm1hdFR5cGUpIHtcbiAgICBGb3JtYXRUeXBlW1wiTk9STUFMXCJdID0gXCJub3JtYWxcIjtcbiAgICBGb3JtYXRUeXBlW1wiV0VBS1wiXSA9IFwid2Vha1wiO1xufSkoRm9ybWF0VHlwZSB8fCAoZXhwb3J0cy5Gb3JtYXRUeXBlID0gRm9ybWF0VHlwZSA9IHt9KSk7XG4vKipcbiAqIEZvcm1hdHMgYSB0YWJsZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICpcbiAqIEB0aHJvd3Mge0Vycm9yfSBVbmtub3duIGZvcm1hdCB0eXBlLlxuICovXG5jb25zdCBmb3JtYXRUYWJsZSA9ICh0YWJsZSwgb3B0aW9ucykgPT4ge1xuICAgIHN3aXRjaCAob3B0aW9ucy5mb3JtYXRUeXBlKSB7XG4gICAgICAgIGNhc2UgRm9ybWF0VHlwZS5OT1JNQUw6XG4gICAgICAgICAgICByZXR1cm4gKDAsIGV4cG9ydHMuX2Zvcm1hdFRhYmxlKSh0YWJsZSwgb3B0aW9ucyk7XG4gICAgICAgIGNhc2UgRm9ybWF0VHlwZS5XRUFLOlxuICAgICAgICAgICAgcmV0dXJuICgwLCBleHBvcnRzLl93ZWFrRm9ybWF0VGFibGUpKHRhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBmb3JtYXQgdHlwZTogJyArIG9wdGlvbnMuZm9ybWF0VHlwZSk7XG4gICAgfVxufTtcbmV4cG9ydHMuZm9ybWF0VGFibGUgPSBmb3JtYXRUYWJsZTtcbi8qKlxuICogQWx0ZXJzIGEgY29sdW1uJ3MgYWxpZ25tZW50IG9mIGEgdGFibGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB0YWJsZSAtIEEgY29tcGxldGVkIG5vbi1lbXB0eSB0YWJsZS5cbiAqIEBwYXJhbSBjb2x1bW5JbmRleCAtIEFuIGluZGV4IG9mIHRoZSBjb2x1bW4uXG4gKiBAcGFyYW0gYWxpZ25tZW50IC0gQSBuZXcgYWxpZ25tZW50IG9mIHRoZSBjb2x1bW4uXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCBjb250YWluaW5nIG9wdGlvbnMgZm9yIGNvbXBsZXRpb24uXG4gKiBAcmV0dXJucyB7VGFibGV9IEFuIGFsdGVyZWQgdGFibGUgb2JqZWN0LlxuICogSWYgdGhlIGNvbHVtbiBpbmRleCBpcyBvdXQgb2YgcmFuZ2UsIHJldHVybnMgdGhlIG9yaWdpbmFsIHRhYmxlLlxuICovXG5jb25zdCBhbHRlckFsaWdubWVudCA9ICh0YWJsZSwgY29sdW1uSW5kZXgsIGFsaWdubWVudCwgb3B0aW9ucykgPT4ge1xuICAgIGlmICh0YWJsZS5nZXRIZWlnaHQoKSA8IDEpIHtcbiAgICAgICAgcmV0dXJuIHRhYmxlO1xuICAgIH1cbiAgICBjb25zdCBkZWxpbWl0ZXJSb3cgPSB0YWJsZS5nZXRSb3dzKClbMV07XG4gICAgaWYgKGNvbHVtbkluZGV4IDwgMCB8fCBkZWxpbWl0ZXJSb3cuZ2V0V2lkdGgoKSAtIDEgPCBjb2x1bW5JbmRleCkge1xuICAgICAgICByZXR1cm4gdGFibGU7XG4gICAgfVxuICAgIGNvbnN0IGRlbGltaXRlckNlbGxzID0gZGVsaW1pdGVyUm93LmdldENlbGxzKCk7XG4gICAgZGVsaW1pdGVyQ2VsbHNbY29sdW1uSW5kZXhdID0gbmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoKDAsIGV4cG9ydHMuX2RlbGltaXRlclRleHQpKGFsaWdubWVudCwgb3B0aW9ucy5taW5EZWxpbWl0ZXJXaWR0aCkpO1xuICAgIGNvbnN0IHJvd3MgPSB0YWJsZS5nZXRSb3dzKCk7XG4gICAgcm93c1sxXSA9IG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdyhkZWxpbWl0ZXJDZWxscywgZGVsaW1pdGVyUm93Lm1hcmdpbkxlZnQsIGRlbGltaXRlclJvdy5tYXJnaW5SaWdodCk7XG4gICAgcmV0dXJuIG5ldyB0YWJsZV8xLlRhYmxlKHJvd3MpO1xufTtcbmV4cG9ydHMuYWx0ZXJBbGlnbm1lbnQgPSBhbHRlckFsaWdubWVudDtcbi8qKlxuICogSW5zZXJ0cyBhIHJvdyB0byBhIHRhYmxlLlxuICogVGhlIHJvdyBpcyBhbHdheXMgaW5zZXJ0ZWQgYWZ0ZXIgdGhlIGhlYWRlciBhbmQgdGhlIGRlbGltaXRlciByb3dzLCBldmVuIGlmIHRoZSBpbmRleCBzcGVjaWZpZXNcbiAqIHRoZSBoZWFkZXIgb3IgdGhlIGRlbGltaXRlci5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHRhYmxlIC0gQSBjb21wbGV0ZWQgbm9uLWVtcHR5IHRhYmxlLlxuICogQHBhcmFtIHJvd0luZGV4IC0gQW4gcm93IGluZGV4IGF0IHdoaWNoIGEgbmV3IHJvdyB3aWxsIGJlIGluc2VydGVkLlxuICogQHBhcmFtIHJvdyAtIEEgdGFibGUgcm93IHRvIGJlIGluc2VydGVkLlxuICogQHJldHVybnMgQW4gYWx0ZXJlZCB0YWJsZSBvYmVqY3QuXG4gKi9cbmNvbnN0IGluc2VydFJvdyA9ICh0YWJsZSwgcm93SW5kZXgsIHJvdykgPT4ge1xuICAgIGNvbnN0IHJvd3MgPSB0YWJsZS5nZXRSb3dzKCk7XG4gICAgcm93cy5zcGxpY2UoTWF0aC5tYXgocm93SW5kZXgsIDIpLCAwLCByb3cpO1xuICAgIHJldHVybiBuZXcgdGFibGVfMS5UYWJsZShyb3dzKTtcbn07XG5leHBvcnRzLmluc2VydFJvdyA9IGluc2VydFJvdztcbi8qKlxuICogRGVsZXRlcyBhIHJvdyBpbiBhIHRhYmxlLlxuICogSWYgdGhlIGluZGV4IHNwZWNpZmllcyB0aGUgaGVhZGVyIHJvdywgdGhlIGNlbGxzIGFyZSBlbXB0aWVkIGJ1dCB0aGUgcm93IHdpbGwgbm90IGJlIHJlbW92ZWQuXG4gKiBJZiB0aGUgaW5kZXggc3BlY2lmaWVzIHRoZSBkZWxpbWl0ZXIgcm93LCBpdCBkb2VzIG5vdGhpbmcuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB0YWJsZSAtIEEgY29tcGxldGVkIG5vbi1lbXB0eSB0YWJsZS5cbiAqIEBwYXJhbSByb3dJbmRleCAtIEFuIGluZGV4IG9mIHRoZSByb3cgdG8gYmUgZGVsZXRlZC5cbiAqIEByZXR1cm5zIEFuIGFsdGVyZWQgdGFibGUgb2JlamN0LlxuICovXG5jb25zdCBkZWxldGVSb3cgPSAodGFibGUsIHJvd0luZGV4KSA9PiB7XG4gICAgaWYgKHJvd0luZGV4ID09PSAxKSB7XG4gICAgICAgIHJldHVybiB0YWJsZTtcbiAgICB9XG4gICAgY29uc3Qgcm93cyA9IHRhYmxlLmdldFJvd3MoKTtcbiAgICBpZiAocm93SW5kZXggPT09IDApIHtcbiAgICAgICAgY29uc3QgaGVhZGVyUm93ID0gcm93c1swXTtcbiAgICAgICAgcm93c1swXSA9IG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdyhuZXcgQXJyYXkoaGVhZGVyUm93LmdldFdpZHRoKCkpLmZpbGwobmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoJycpKSwgaGVhZGVyUm93Lm1hcmdpbkxlZnQsIGhlYWRlclJvdy5tYXJnaW5SaWdodCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByb3dzLnNwbGljZShyb3dJbmRleCwgMSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgdGFibGVfMS5UYWJsZShyb3dzKTtcbn07XG5leHBvcnRzLmRlbGV0ZVJvdyA9IGRlbGV0ZVJvdztcbi8qKlxuICogTW92ZXMgYSByb3cgYXQgdGhlIGluZGV4IHRvIHRoZSBzcGVjaWZpZWQgZGVzdGluYXRpb24uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB0YWJsZSAtIEEgY29tcGxldGVkIG5vbi1lbXB0eSB0YWJsZS5cbiAqIEBwYXJhbSByb3dJbmRleCAtIEluZGV4IG9mIHRoZSByb3cgdG8gYmUgbW92ZWQuXG4gKiBAcGFyYW0gZGVzdEluZGV4IC0gSW5kZXggb2YgdGhlIGRlc3RpbmF0aW9uLlxuICogQHJldHVybnMgQW4gYWx0ZXJlZCB0YWJsZSBvYmplY3QuXG4gKi9cbmNvbnN0IG1vdmVSb3cgPSAodGFibGUsIHJvd0luZGV4LCBkZXN0SW5kZXgpID0+IHtcbiAgICBpZiAocm93SW5kZXggPD0gMSB8fCBkZXN0SW5kZXggPD0gMSB8fCByb3dJbmRleCA9PT0gZGVzdEluZGV4KSB7XG4gICAgICAgIHJldHVybiB0YWJsZTtcbiAgICB9XG4gICAgY29uc3Qgcm93cyA9IHRhYmxlLmdldFJvd3MoKTtcbiAgICBjb25zdCByb3cgPSByb3dzW3Jvd0luZGV4XTtcbiAgICByb3dzLnNwbGljZShyb3dJbmRleCwgMSk7XG4gICAgcm93cy5zcGxpY2UoZGVzdEluZGV4LCAwLCByb3cpO1xuICAgIHJldHVybiBuZXcgdGFibGVfMS5UYWJsZShyb3dzKTtcbn07XG5leHBvcnRzLm1vdmVSb3cgPSBtb3ZlUm93O1xuLyoqXG4gKiBJbnNlcnRzIGEgY29sdW1uIHRvIGEgdGFibGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB0YWJsZSAtIEEgY29tcGxldGVkIG5vbi1lbXB0eSB0YWJsZS5cbiAqIEBwYXJhbSBjb2x1bW5JbmRleCAtIEFuIGNvbHVtbiBpbmRleCBhdCB3aGljaCB0aGUgbmV3IGNvbHVtbiB3aWxsIGJlIGluc2VydGVkLlxuICogQHBhcmFtIGNvbHVtbiAtIEFuIGFycmF5IG9mIGNlbGxzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3QgY29udGFpbmluZyBvcHRpb25zIGZvciBjb21wbGV0aW9uLlxuICogQHJldHVybnMgQW4gYWx0ZXJlZCB0YWJsZSBvYmVqY3QuXG4gKi9cbmNvbnN0IGluc2VydENvbHVtbiA9ICh0YWJsZSwgY29sdW1uSW5kZXgsIGNvbHVtbiwgb3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHJvd3MgPSB0YWJsZS5nZXRSb3dzKCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHJvdyA9IHJvd3NbaV07XG4gICAgICAgIGNvbnN0IGNlbGxzID0gcm93c1tpXS5nZXRDZWxscygpO1xuICAgICAgICBjb25zdCBjZWxsID0gaSA9PT0gMVxuICAgICAgICAgICAgPyBuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbCgoMCwgZXhwb3J0cy5fZGVsaW1pdGVyVGV4dCkoYWxpZ25tZW50XzEuQWxpZ25tZW50Lk5PTkUsIG9wdGlvbnMubWluRGVsaW1pdGVyV2lkdGgpKVxuICAgICAgICAgICAgOiBjb2x1bW5baSA+IDEgPyBpIC0gMSA6IGldO1xuICAgICAgICBjZWxscy5zcGxpY2UoY29sdW1uSW5kZXgsIDAsIGNlbGwpO1xuICAgICAgICByb3dzW2ldID0gbmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KGNlbGxzLCByb3cubWFyZ2luTGVmdCwgcm93Lm1hcmdpblJpZ2h0KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyB0YWJsZV8xLlRhYmxlKHJvd3MpO1xufTtcbmV4cG9ydHMuaW5zZXJ0Q29sdW1uID0gaW5zZXJ0Q29sdW1uO1xuLyoqXG4gKiBEZWxldGVzIGEgY29sdW1uIGluIGEgdGFibGUuXG4gKiBJZiB0aGVyZSB3aWxsIGJlIG5vIGNvbHVtbnMgYWZ0ZXIgdGhlIGRlbGV0aW9uLCB0aGUgY2VsbHMgYXJlIGVtcHRpZWQgYnV0IHRoZSBjb2x1bW4gd2lsbCBub3QgYmVcbiAqIHJlbW92ZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB0YWJsZSAtIEEgY29tcGxldGVkIG5vbi1lbXB0eSB0YWJsZS5cbiAqIEBwYXJhbSBjb2x1bW5JbmRleCAtIEFuIGluZGV4IG9mIHRoZSBjb2x1bW4gdG8gYmUgZGVsZXRlZC5cbiAqIEBwYXJhbSBvcHRpb25zIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgb3B0aW9ucyBmb3IgY29tcGxldGlvbi5cbiAqIEByZXR1cm5zIEFuIGFsdGVyZWQgdGFibGUgb2JqZWN0LlxuICovXG5jb25zdCBkZWxldGVDb2x1bW4gPSAodGFibGUsIGNvbHVtbkluZGV4LCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3Qgcm93cyA9IHRhYmxlLmdldFJvd3MoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qgcm93ID0gcm93c1tpXTtcbiAgICAgICAgbGV0IGNlbGxzID0gcm93LmdldENlbGxzKCk7XG4gICAgICAgIGlmIChjZWxscy5sZW5ndGggPD0gMSkge1xuICAgICAgICAgICAgY2VsbHMgPSBbXG4gICAgICAgICAgICAgICAgbmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoaSA9PT0gMVxuICAgICAgICAgICAgICAgICAgICA/ICgwLCBleHBvcnRzLl9kZWxpbWl0ZXJUZXh0KShhbGlnbm1lbnRfMS5BbGlnbm1lbnQuTk9ORSwgb3B0aW9ucy5taW5EZWxpbWl0ZXJXaWR0aClcbiAgICAgICAgICAgICAgICAgICAgOiAnJyksXG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY2VsbHMuc3BsaWNlKGNvbHVtbkluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgICByb3dzW2ldID0gbmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KGNlbGxzLCByb3cubWFyZ2luTGVmdCwgcm93Lm1hcmdpblJpZ2h0KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyB0YWJsZV8xLlRhYmxlKHJvd3MpO1xufTtcbmV4cG9ydHMuZGVsZXRlQ29sdW1uID0gZGVsZXRlQ29sdW1uO1xuLyoqXG4gKiBNb3ZlcyBhIGNvbHVtbiBhdCB0aGUgaW5kZXggdG8gdGhlIHNwZWNpZmllZCBkZXN0aW5hdGlvbi5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHRhYmxlIC0gQSBjb21wbGV0ZWQgbm9uLWVtcHR5IHRhYmxlLlxuICogQHBhcmFtIGNvbHVtbkluZGV4IC0gSW5kZXggb2YgdGhlIGNvbHVtbiB0byBiZSBtb3ZlZC5cbiAqIEBwYXJhbSBkZXN0SW5kZXggLSBJbmRleCBvZiB0aGUgZGVzdGluYXRpb24uXG4gKiBAcmV0dXJucyBBbiBhbHRlcmVkIHRhYmxlIG9iamVjdC5cbiAqL1xuY29uc3QgbW92ZUNvbHVtbiA9ICh0YWJsZSwgY29sdW1uSW5kZXgsIGRlc3RJbmRleCkgPT4ge1xuICAgIGlmIChjb2x1bW5JbmRleCA9PT0gZGVzdEluZGV4KSB7XG4gICAgICAgIHJldHVybiB0YWJsZTtcbiAgICB9XG4gICAgY29uc3Qgcm93cyA9IHRhYmxlLmdldFJvd3MoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qgcm93ID0gcm93c1tpXTtcbiAgICAgICAgY29uc3QgY2VsbHMgPSByb3cuZ2V0Q2VsbHMoKTtcbiAgICAgICAgY29uc3QgY2VsbCA9IGNlbGxzW2NvbHVtbkluZGV4XTtcbiAgICAgICAgY2VsbHMuc3BsaWNlKGNvbHVtbkluZGV4LCAxKTtcbiAgICAgICAgY2VsbHMuc3BsaWNlKGRlc3RJbmRleCwgMCwgY2VsbCk7XG4gICAgICAgIHJvd3NbaV0gPSBuZXcgdGFibGVfcm93XzEuVGFibGVSb3coY2VsbHMsIHJvdy5tYXJnaW5MZWZ0LCByb3cubWFyZ2luUmlnaHQpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IHRhYmxlXzEuVGFibGUocm93cyk7XG59O1xuZXhwb3J0cy5tb3ZlQ29sdW1uID0gbW92ZUNvbHVtbjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5zaG9ydGVzdEVkaXRTY3JpcHQgPSBleHBvcnRzLmFwcGx5RWRpdFNjcmlwdCA9IGV4cG9ydHMuX2FwcGx5Q29tbWFuZCA9IGV4cG9ydHMuRGVsZXRlID0gZXhwb3J0cy5JbnNlcnQgPSB2b2lkIDA7XG4vKipcbiAqIFRoZSBgSW5zZXJ0YCBjbGFzcyByZXByZXNlbnRzIGFuIGluc2VydGlvbiBvZiBhIGxpbmUuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuY2xhc3MgSW5zZXJ0IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdHMgYSBuZXcgYEluc2VydGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHJvdyAtIFJvdyBpbmRleCwgc3RhcnRzIGZyb20gYDBgLlxuICAgICAqIEBwYXJhbSBsaW5lIC0gQSBzdHJpbmcgdG8gYmUgaW5zZXJ0ZWQgYXQgdGhlIHJvdy5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihyb3csIGxpbmUpIHtcbiAgICAgICAgdGhpcy5yb3cgPSByb3c7XG4gICAgICAgIHRoaXMubGluZSA9IGxpbmU7XG4gICAgfVxufVxuZXhwb3J0cy5JbnNlcnQgPSBJbnNlcnQ7XG4vKipcbiAqIFRoZSBgRGVsZXRlYCBjbGFzcyByZXByZXNlbnRzIGEgZGVsZXRpb24gb2YgYSBsaW5lLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmNsYXNzIERlbGV0ZSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBgRGVsZXRlYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm93IC0gUm93IGluZGV4LCBzdGFydHMgZnJvbSBgMGAuXG4gICAgICovXG4gICAgY29uc3RydWN0b3Iocm93KSB7XG4gICAgICAgIHRoaXMucm93ID0gcm93O1xuICAgIH1cbn1cbmV4cG9ydHMuRGVsZXRlID0gRGVsZXRlO1xuLyoqXG4gKiBBcHBsaWVzIGEgY29tbWFuZCB0byB0aGUgdGV4dCBlZGl0b3IuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB0ZXh0RWRpdG9yIC0gQW4gaW50ZXJmYWNlIHRvIHRoZSB0ZXh0IGVkaXRvci5cbiAqIEBwYXJhbSBjb21tYW5kIC0gQSBjb21tYW5kLlxuICogQHBhcmFtIHJvd09mZnNldCAtIE9mZnNldCB0byB0aGUgcm93IGluZGV4IG9mIHRoZSBjb21tYW5kLlxuICovXG5jb25zdCBfYXBwbHlDb21tYW5kID0gKHRleHRFZGl0b3IsIGNvbW1hbmQsIHJvd09mZnNldCkgPT4ge1xuICAgIGlmIChjb21tYW5kIGluc3RhbmNlb2YgSW5zZXJ0KSB7XG4gICAgICAgIHRleHRFZGl0b3IuaW5zZXJ0TGluZShyb3dPZmZzZXQgKyBjb21tYW5kLnJvdywgY29tbWFuZC5saW5lKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY29tbWFuZCBpbnN0YW5jZW9mIERlbGV0ZSkge1xuICAgICAgICB0ZXh0RWRpdG9yLmRlbGV0ZUxpbmUocm93T2Zmc2V0ICsgY29tbWFuZC5yb3cpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGNvbW1hbmQnKTtcbiAgICB9XG59O1xuZXhwb3J0cy5fYXBwbHlDb21tYW5kID0gX2FwcGx5Q29tbWFuZDtcbi8qKlxuICogQXBwbHkgYW4gZWRpdCBzY3JpcHQgKGFycmF5IG9mIGNvbW1hbmRzKSB0byB0aGUgdGV4dCBlZGl0b3IuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB0ZXh0RWRpdG9yIC0gQW4gaW50ZXJmYWNlIHRvIHRoZSB0ZXh0IGVkaXRvci5cbiAqIEBwYXJhbSBzY3JpcHQgLSBBbiBhcnJheSBvZiBjb21tYW5kcy5cbiAqIFRoZSBjb21tYW5kcyBhcmUgYXBwbGllZCBzZXF1ZW50aWFsbHkgaW4gdGhlIG9yZGVyIG9mIHRoZSBhcnJheS5cbiAqIEBwYXJhbSByb3dPZmZzZXQgLSBPZmZzZXQgdG8gdGhlIHJvdyBpbmRleCBvZiB0aGUgY29tbWFuZHMuXG4gKi9cbmNvbnN0IGFwcGx5RWRpdFNjcmlwdCA9ICh0ZXh0RWRpdG9yLCBzY3JpcHQsIHJvd09mZnNldCkgPT4ge1xuICAgIGZvciAoY29uc3QgY29tbWFuZCBvZiBzY3JpcHQpIHtcbiAgICAgICAgKDAsIGV4cG9ydHMuX2FwcGx5Q29tbWFuZCkodGV4dEVkaXRvciwgY29tbWFuZCwgcm93T2Zmc2V0KTtcbiAgICB9XG59O1xuZXhwb3J0cy5hcHBseUVkaXRTY3JpcHQgPSBhcHBseUVkaXRTY3JpcHQ7XG4vKipcbiAqIExpbmtlZCBsaXN0IHVzZWQgdG8gcmVtZW1iZXIgZWRpdCBzY3JpcHQuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuY2xhc3MgSUxpc3Qge1xuICAgIGdldCBjYXIoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuICAgIGdldCBjZHIoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuICAgIGlzRW1wdHkoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuICAgIHVuc2hpZnQodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb25zKHZhbHVlLCB0aGlzKTtcbiAgICB9XG4gICAgdG9BcnJheSgpIHtcbiAgICAgICAgY29uc3QgYXJyID0gW107XG4gICAgICAgIGxldCByZXN0ID0gdGhpcztcbiAgICAgICAgd2hpbGUgKCFyZXN0LmlzRW1wdHkoKSkge1xuICAgICAgICAgICAgYXJyLnB1c2gocmVzdC5jYXIpO1xuICAgICAgICAgICAgcmVzdCA9IHJlc3QuY2RyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgfVxufVxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5jbGFzcyBOaWwgZXh0ZW5kcyBJTGlzdCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuICAgIGdldCBjYXIoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRW1wdHkgbGlzdCcpO1xuICAgIH1cbiAgICBnZXQgY2RyKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VtcHR5IGxpc3QnKTtcbiAgICB9XG4gICAgaXNFbXB0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxufVxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5jbGFzcyBDb25zIGV4dGVuZHMgSUxpc3Qge1xuICAgIGNvbnN0cnVjdG9yKGNhciwgY2RyKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuX2NhciA9IGNhcjtcbiAgICAgICAgdGhpcy5fY2RyID0gY2RyO1xuICAgIH1cbiAgICBnZXQgY2FyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FyO1xuICAgIH1cbiAgICBnZXQgY2RyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2RyO1xuICAgIH1cbiAgICBpc0VtcHR5KCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuLyoqXG4gKiBDb21wdXRlcyB0aGUgc2hvcnRlc3QgZWRpdCBzY3JpcHQgYmV0d2VlbiB0d28gYXJyYXlzIG9mIHN0cmluZ3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSBmcm9tIC0gQW4gYXJyYXkgb2Ygc3RyaW5nIHRoZSBlZGl0IHN0YXJ0cyBmcm9tLlxuICogQHBhcmFtIHRvIC0gQW4gYXJyYXkgb2Ygc3RyaW5nIHRoZSBlZGl0IGdvZXMgdG8uXG4gKiBAcGFyYW0gW2xpbWl0PS0xXSAtIFVwcGVyIGxpbWl0IG9mIGVkaXQgZGlzdGFuY2UgdG8gYmUgc2VhcmNoZWQuXG4gKiBJZiBuZWdhdGl2ZSwgdGhlcmUgaXMgbm8gbGltaXQuXG4gKiBAcmV0dXJucyBUaGUgc2hvcnRlc3QgZWRpdCBzY3JpcHQgdGhhdCB0dXJucyBgZnJvbWAgaW50byBgdG9gO1xuICogYHVuZGVmaW5lZGAgaWYgbm8gZWRpdCBzY3JpcHQgaXMgZm91bmQgaW4gdGhlIGdpdmVuIHJhbmdlLlxuICovXG5jb25zdCBzaG9ydGVzdEVkaXRTY3JpcHQgPSAoZnJvbSwgdG8sIGxpbWl0ID0gLTEpID0+IHtcbiAgICBjb25zdCBmcm9tTGVuID0gZnJvbS5sZW5ndGg7XG4gICAgY29uc3QgdG9MZW4gPSB0by5sZW5ndGg7XG4gICAgY29uc3QgbWF4ZCA9IGxpbWl0ID49IDAgPyBNYXRoLm1pbihsaW1pdCwgZnJvbUxlbiArIHRvTGVuKSA6IGZyb21MZW4gKyB0b0xlbjtcbiAgICBjb25zdCBtZW0gPSBuZXcgQXJyYXkoTWF0aC5taW4obWF4ZCwgZnJvbUxlbikgKyBNYXRoLm1pbihtYXhkLCB0b0xlbikgKyAxKTtcbiAgICBjb25zdCBvZmZzZXQgPSBNYXRoLm1pbihtYXhkLCBmcm9tTGVuKTtcbiAgICBmb3IgKGxldCBkID0gMDsgZCA8PSBtYXhkOyBkKyspIHtcbiAgICAgICAgY29uc3QgbWluayA9IGQgPD0gZnJvbUxlbiA/IC1kIDogZCAtIDIgKiBmcm9tTGVuO1xuICAgICAgICBjb25zdCBtYXhrID0gZCA8PSB0b0xlbiA/IGQgOiAtZCArIDIgKiB0b0xlbjtcbiAgICAgICAgZm9yIChsZXQgayA9IG1pbms7IGsgPD0gbWF4azsgayArPSAyKSB7XG4gICAgICAgICAgICBsZXQgaTtcbiAgICAgICAgICAgIGxldCBzY3JpcHQ7XG4gICAgICAgICAgICBpZiAoZCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGkgPSAwO1xuICAgICAgICAgICAgICAgIHNjcmlwdCA9IG5ldyBOaWwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGsgPT09IC1kKSB7XG4gICAgICAgICAgICAgICAgaSA9IG1lbVtvZmZzZXQgKyBrICsgMV0uaSArIDE7XG4gICAgICAgICAgICAgICAgc2NyaXB0ID0gbWVtW29mZnNldCArIGsgKyAxXS5zY3JpcHQudW5zaGlmdChuZXcgRGVsZXRlKGkgKyBrKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChrID09PSBkKSB7XG4gICAgICAgICAgICAgICAgaSA9IG1lbVtvZmZzZXQgKyBrIC0gMV0uaTtcbiAgICAgICAgICAgICAgICBzY3JpcHQgPSBtZW1bb2Zmc2V0ICsgayAtIDFdLnNjcmlwdC51bnNoaWZ0KG5ldyBJbnNlcnQoaSArIGsgLSAxLCB0b1tpICsgayAtIDFdKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2aSA9IG1lbVtvZmZzZXQgKyBrICsgMV0uaSArIDE7XG4gICAgICAgICAgICAgICAgY29uc3QgaGkgPSBtZW1bb2Zmc2V0ICsgayAtIDFdLmk7XG4gICAgICAgICAgICAgICAgaWYgKHZpID4gaGkpIHtcbiAgICAgICAgICAgICAgICAgICAgaSA9IHZpO1xuICAgICAgICAgICAgICAgICAgICBzY3JpcHQgPSBtZW1bb2Zmc2V0ICsgayArIDFdLnNjcmlwdC51bnNoaWZ0KG5ldyBEZWxldGUoaSArIGspKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGkgPSBoaTtcbiAgICAgICAgICAgICAgICAgICAgc2NyaXB0ID0gbWVtW29mZnNldCArIGsgLSAxXS5zY3JpcHQudW5zaGlmdChuZXcgSW5zZXJ0KGkgKyBrIC0gMSwgdG9baSArIGsgLSAxXSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdoaWxlIChpIDwgZnJvbUxlbiAmJiBpICsgayA8IHRvTGVuICYmIGZyb21baV0gPT09IHRvW2kgKyBrXSkge1xuICAgICAgICAgICAgICAgIGkgKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChrID09PSB0b0xlbiAtIGZyb21MZW4gJiYgaSA9PT0gZnJvbUxlbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBzY3JpcHQudG9BcnJheSgpLnJldmVyc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1lbVtvZmZzZXQgKyBrXSA9IHsgaSwgc2NyaXB0IH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5leHBvcnRzLnNob3J0ZXN0RWRpdFNjcmlwdCA9IHNob3J0ZXN0RWRpdFNjcmlwdDtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5JVGV4dEVkaXRvciA9IHZvaWQgMDtcbi8qKlxuICogVGhlIGBJVGV4dEVkaXRvcmAgcmVwcmVzZW50cyBhbiBpbnRlcmZhY2UgdG8gYSB0ZXh0IGVkaXRvci5cbiAqXG4gKiBAaW50ZXJmYWNlXG4gKi9cbmNsYXNzIElUZXh0RWRpdG9yIHtcbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBjdXJyZW50IGN1cnNvciBwb3NpdGlvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIEEgcG9pbnQgb2JqZWN0IHRoYXQgcmVwcmVzZW50cyB0aGUgY3Vyc29yIHBvc2l0aW9uLlxuICAgICAqL1xuICAgIGdldEN1cnNvclBvc2l0aW9uKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZDogZ2V0Q3Vyc29yUG9zaXRpb24nKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgY3Vyc29yIHBvc2l0aW9uIHRvIGEgc3BlY2lmaWVkIG9uZS5cbiAgICAgKi9cbiAgICBzZXRDdXJzb3JQb3NpdGlvbihwb3MpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQ6IHNldEN1cnNvclBvc2l0aW9uJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHNlbGVjdGlvbiByYW5nZS5cbiAgICAgKiBUaGlzIG1ldGhvZCBhbHNvIGV4cGVjdHMgdGhlIGN1cnNvciBwb3NpdGlvbiB0byBiZSBtb3ZlZCBhcyB0aGUgZW5kIG9mIHRoZSBzZWxlY3Rpb24gcmFuZ2UuXG4gICAgICovXG4gICAgc2V0U2VsZWN0aW9uUmFuZ2UocmFuZ2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQ6IHNldFNlbGVjdGlvblJhbmdlJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGxhc3Qgcm93IGluZGV4IG9mIHRoZSB0ZXh0IGVkaXRvci5cbiAgICAgKi9cbiAgICBnZXRMYXN0Um93KCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZDogZ2V0TGFzdFJvdycpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIGVkaXRvciBhY2NlcHRzIGEgdGFibGUgYXQgYSByb3cgdG8gYmUgZWRpdHRlZC5cbiAgICAgKiBJdCBzaG91bGQgcmV0dXJuIGBmYWxzZWAgaWYsIGZvciBleGFtcGxlLCB0aGUgcm93IGlzIGluIGEgY29kZSBibG9jayAobm90IE1hcmtkb3duKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByb3cgLSBBIHJvdyBpbmRleCBpbiB0aGUgdGV4dCBlZGl0b3IuXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSB0YWJsZSBhdCB0aGUgcm93IGNhbiBiZSBlZGl0dGVkLlxuICAgICAqL1xuICAgIGFjY2VwdHNUYWJsZUVkaXQocm93KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkOiBhY2NlcHRzVGFibGVFZGl0Jyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldHMgYSBsaW5lIHN0cmluZyBhdCBhIHJvdy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByb3cgLSBSb3cgaW5kZXgsIHN0YXJ0cyBmcm9tIGAwYC5cbiAgICAgKiBAcmV0dXJucyBUaGUgbGluZSBhdCB0aGUgc3BlY2lmaWVkIHJvdy5cbiAgICAgKiBUaGUgbGluZSBtdXN0IG5vdCBjb250YWluIGFuIEVPTCBsaWtlIGBcIlxcblwiYCBvciBgXCJcXHJcImAuXG4gICAgICovXG4gICAgZ2V0TGluZShyb3cpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQ6IGdldExpbmUnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW5zZXJ0cyBhIGxpbmUgYXQgYSBzcGVjaWZpZWQgcm93LlxuICAgICAqXG4gICAgICogQHBhcmFtIHJvdyAtIFJvdyBpbmRleCwgc3RhcnRzIGZyb20gYDBgLlxuICAgICAqIEBwYXJhbSBsaW5lIC0gQSBzdHJpbmcgdG8gYmUgaW5zZXJ0ZWQuXG4gICAgICogVGhpcyBtdXN0IG5vdCBjb250YWluIGFuIEVPTCBsaWtlIGBcIlxcblwiYCBvciBgXCJcXHJcImAuXG4gICAgICovXG4gICAgaW5zZXJ0TGluZShyb3csIGxpbmUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQ6IGluc2VydExpbmUnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRGVsZXRlcyBhIGxpbmUgYXQgYSBzcGVjaWZpZWQgcm93LlxuICAgICAqXG4gICAgICogQHBhcmFtIHJvdyAtIFJvdyBpbmRleCwgc3RhcnRzIGZyb20gYDBgLlxuICAgICAqL1xuICAgIGRlbGV0ZUxpbmUocm93KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkOiBkZWxldGVMaW5lJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlcGxhY2UgbGluZXMgaW4gYSBzcGVjaWZpZWQgcmFuZ2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3RhcnRSb3cgLSBTdGFydCByb3cgaW5kZXgsIHN0YXJ0cyBmcm9tIGAwYC5cbiAgICAgKiBAcGFyYW0gZW5kUm93IC0gRW5kIHJvdyBpbmRleC5cbiAgICAgKiBMaW5lcyBmcm9tIGBzdGFydFJvd2AgdG8gYGVuZFJvdyAtIDFgIGlzIHJlcGxhY2VkLlxuICAgICAqIEBwYXJhbSBsaW5lcyAtIEFuIGFycmF5IG9mIHN0cmluZy5cbiAgICAgKiBFYWNoIHN0cmluZ3MgbXVzdCBub3QgY29udGFpbiBhbiBFT0wgbGlrZSBgXCJcXG5cImAgb3IgYFwiXFxyXCJgLlxuICAgICAqL1xuICAgIHJlcGxhY2VMaW5lcyhzdGFydFJvdywgZW5kUm93LCBsaW5lcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZDogcmVwbGFjZUxpbmVzJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEJhdGNoZXMgbXVsdGlwbGUgb3BlcmF0aW9ucyBhcyBhIHNpbmdsZSB1bmRvL3JlZG8gc3RlcC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmdW5jIC0gQSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGV4ZWN1dGVzIHNvbWUgb3BlcmF0aW9ucyBvbiB0aGUgdGV4dCBlZGl0b3IuXG4gICAgICovXG4gICAgdHJhbnNhY3QoZnVuYykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZDogdHJhbnNhY3QnKTtcbiAgICB9XG59XG5leHBvcnRzLklUZXh0RWRpdG9yID0gSVRleHRFZGl0b3I7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZGVmYXVsdE9wdGlvbnMgPSBleHBvcnRzLm9wdGlvbnNXaXRoRGVmYXVsdHMgPSB2b2lkIDA7XG5jb25zdCBhbGlnbm1lbnRfMSA9IHJlcXVpcmUoXCIuL2FsaWdubWVudFwiKTtcbmNvbnN0IGZvcm1hdHRlcl8xID0gcmVxdWlyZShcIi4vZm9ybWF0dGVyXCIpO1xuY29uc3QgREVGQVVMVF9URVhUX1dJRFRIX09QVElPTlMgPSB7XG4gICAgbm9ybWFsaXplOiB0cnVlLFxuICAgIHdpZGVDaGFyczogbmV3IFNldCgpLFxuICAgIG5hcnJvd0NoYXJzOiBuZXcgU2V0KCksXG4gICAgYW1iaWd1b3VzQXNXaWRlOiBmYWxzZSxcbn07XG5jb25zdCBERUZBVUxUX09QVElPTlMgPSB7XG4gICAgbGVmdE1hcmdpbkNoYXJzOiBuZXcgU2V0KCksXG4gICAgZm9ybWF0VHlwZTogZm9ybWF0dGVyXzEuRm9ybWF0VHlwZS5OT1JNQUwsXG4gICAgbWluRGVsaW1pdGVyV2lkdGg6IDMsXG4gICAgZGVmYXVsdEFsaWdubWVudDogYWxpZ25tZW50XzEuRGVmYXVsdEFsaWdubWVudC5MRUZULFxuICAgIGhlYWRlckFsaWdubWVudDogYWxpZ25tZW50XzEuSGVhZGVyQWxpZ25tZW50LkZPTExPVyxcbiAgICBzbWFydEN1cnNvcjogZmFsc2UsXG59O1xuLyoqXG4gKiBDcmVhdGUgYW4gT3B0aW9ucyBvYmplY3QgZm9yIHRoZSBmb3JtYXR0ZXIuXG4gKiBUaGUgZGVmYXVsdCB2YWx1ZXMgYXJlIHVzZWQgZm9yIG9wdGlvbnMgdGhhdCBhcmUgbm90IHNwZWNpZmllZC5cbiAqXG4gKiBUaGUgYXZhaWxhYmxlIG9wdGlvbnMgYW5kIGRlZmF1bHQgdmFsdWVzIGFyZSBsaXN0ZWQgYmVsb3cuXG4gKlxuICogfCBwcm9wZXJ0eSBuYW1lICAgICAgIHwgdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRlZmF1bHQgdmFsdWUgICAgICAgICAgICB8XG4gKiB8IC0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAqIHwgYGxlZnRNYXJnaW5DaGFyc2AgICB8IHtAbGluayBTZXR9Jmx0O3tAbGluayBzdHJpbmd9Jmd0OyB8IEEgc2V0IG9mIGFkZGl0aW9uYWwgbGVmdCBtYXJnaW4gY2hhcmFjdGVycy4gICAgICAgICAgICAgfCBgbmV3IFNldCgpYCAgICAgICAgICAgICAgfFxuICogfCBgZm9ybWF0VHlwZWAgICAgICAgIHwge0BsaW5rIEZvcm1hdFR5cGV9ICAgICAgICAgICAgICAgIHwgRm9ybWF0IHR5cGUsIG5vcm1hbCBvciB3ZWFrLiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBGb3JtYXRUeXBlLk5PUk1BTGAgICAgICB8XG4gKiB8IGBtaW5EZWxpbWl0ZXJXaWR0aGAgfCB7QGxpbmsgbnVtYmVyfSAgICAgICAgICAgICAgICAgICAgfCBNaW5pbXVtIHdpZHRoIG9mIGRlbGltaXRlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYDNgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYGRlZmF1bHRBbGlnbm1lbnRgICB8IHtAbGluayBEZWZhdWx0QWxpZ25tZW50fSAgICAgICAgICB8IERlZmF1bHQgYWxpZ25tZW50IG9mIGNvbHVtbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgRGVmYXVsdEFsaWdubWVudC5MRUZUYCAgfFxuICogfCBgaGVhZGVyQWxpZ25tZW50YCAgIHwge0BsaW5rIEhlYWRlckFsaWdubWVudH0gICAgICAgICAgIHwgQWxpZ25tZW50IG9mIGhlYWRlciBjZWxscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBIZWFkZXJBbGlnbm1lbnQuRk9MTE9XYCB8XG4gKiB8IGB0ZXh0V2lkdGhPcHRpb25zYCAgfCB7QGxpbmsgVGV4dFdpZHRoT3B0aW9uc30gICAgICAgICAgfCBBbiBvYmplY3QgY29udGFpbmluZyBvcHRpb25zIGZvciBjb21wdXRpbmcgdGV4dCB3aWR0aHMuIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYHNtYXJ0Q3Vyc29yYCAgICAgICB8IHtAbGluayBib29sZWFufSAgICAgICAgICAgICAgICAgICB8IEVuYWJsZXMgXCJTbWFydCBDdXJzb3JcIiBmZWF0dXJlLiAgICAgICAgICAgICAgICAgICAgICAgICB8IGBmYWxzZWAgICAgICAgICAgICAgICAgICB8XG4gKlxuICogVGhlIGF2YWlsYWJsZSBvcHRpb25zIGZvciBgdGV4dFdpZHRoT3B0aW9uc2AgYXJlIHRoZSBmb2xsb3dpbmcgb25lcy5cbiAqXG4gKiB8IHByb3BlcnR5IG5hbWUgICAgIHwgdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZWZhdWx0IHZhbHVlIHxcbiAqIHwgLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0gfFxuICogfCBgbm9ybWFsaXplYCAgICAgICB8IHtAbGluayBib29sZWFufSAgICAgICAgICAgICAgICAgICB8IE5vcm1hbGl6ZXMgdGV4dHMgYmVmb3JlIGNvbXB1dGluZyB0ZXh0IHdpZHRocy4gICAgICAgIHwgYHRydWVgICAgICAgICB8XG4gKiB8IGB3aWRlQ2hhcnNgICAgICAgIHwge0BsaW5rIFNldH0mbHQ7e0BsaW5rIHN0cmluZ30mZ3Q7IHwgQSBzZXQgb2YgY2hhcmFjdGVycyB0aGF0IHNob3VsZCBiZSB0cmVhdGVkIGFzIHdpZGUuICAgfCBgbmV3IFNldCgpYCAgIHxcbiAqIHwgYG5hcnJvd0NoYXJzYCAgICAgfCB7QGxpbmsgU2V0fSZsdDt7QGxpbmsgc3RyaW5nfSZndDsgfCBBIHNldCBvZiBjaGFyYWN0ZXJzIHRoYXQgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgbmFycm93LiB8IGBuZXcgU2V0KClgICAgfFxuICogfCBgYW1iaWd1b3VzQXNXaWRlYCB8IHtAbGluayBib29sZWFufSAgICAgICAgICAgICAgICAgICB8IFRyZWF0cyBFYXN0IEFzaWFuIEFtYmlndW91cyBjaGFyYWN0ZXJzIGFzIHdpZGUuICAgICAgIHwgYGZhbHNlYCAgICAgICB8XG4gKlxuICovXG5jb25zdCBvcHRpb25zV2l0aERlZmF1bHRzID0gKG9wdGlvbnMpID0+IChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9PUFRJT05TKSwgb3B0aW9ucyksIHsgdGV4dFdpZHRoT3B0aW9uczogb3B0aW9ucy50ZXh0V2lkdGhPcHRpb25zXG4gICAgICAgID8gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX1RFWFRfV0lEVEhfT1BUSU9OUyksIG9wdGlvbnMudGV4dFdpZHRoT3B0aW9ucykgOiBERUZBVUxUX1RFWFRfV0lEVEhfT1BUSU9OUyB9KSk7XG5leHBvcnRzLm9wdGlvbnNXaXRoRGVmYXVsdHMgPSBvcHRpb25zV2l0aERlZmF1bHRzO1xuZXhwb3J0cy5kZWZhdWx0T3B0aW9ucyA9ICgwLCBleHBvcnRzLm9wdGlvbnNXaXRoRGVmYXVsdHMpKHt9KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5UYWJsZUVkaXRvciA9IGV4cG9ydHMuX2NvbXB1dGVOZXdPZmZzZXQgPSBleHBvcnRzLl9jcmVhdGVJc1RhYmxlRm9ybXVsYVJlZ2V4ID0gZXhwb3J0cy5fY3JlYXRlSXNUYWJsZVJvd1JlZ2V4ID0gZXhwb3J0cy5Tb3J0T3JkZXIgPSB2b2lkIDA7XG5jb25zdCBlZGl0X3NjcmlwdF8xID0gcmVxdWlyZShcIi4vZWRpdC1zY3JpcHRcIik7XG5jb25zdCBmb2N1c18xID0gcmVxdWlyZShcIi4vZm9jdXNcIik7XG5jb25zdCBmb3JtYXR0ZXJfMSA9IHJlcXVpcmUoXCIuL2Zvcm1hdHRlclwiKTtcbmNvbnN0IHBhcnNlcl8xID0gcmVxdWlyZShcIi4vcGFyc2VyXCIpO1xuY29uc3QgcG9pbnRfMSA9IHJlcXVpcmUoXCIuL3BvaW50XCIpO1xuY29uc3QgcmFuZ2VfMSA9IHJlcXVpcmUoXCIuL3JhbmdlXCIpO1xuY29uc3QgdGFibGVfMSA9IHJlcXVpcmUoXCIuL3RhYmxlXCIpO1xuY29uc3QgdGFibGVfY2VsbF8xID0gcmVxdWlyZShcIi4vdGFibGUtY2VsbFwiKTtcbmNvbnN0IHRhYmxlX3Jvd18xID0gcmVxdWlyZShcIi4vdGFibGUtcm93XCIpO1xudmFyIFNvcnRPcmRlcjtcbihmdW5jdGlvbiAoU29ydE9yZGVyKSB7XG4gICAgU29ydE9yZGVyW1wiQXNjZW5kaW5nXCJdID0gXCJhc2NlbmRpbmdcIjtcbiAgICBTb3J0T3JkZXJbXCJEZXNjZW5kaW5nXCJdID0gXCJkZXNjZW5kaW5nXCI7XG59KShTb3J0T3JkZXIgfHwgKGV4cG9ydHMuU29ydE9yZGVyID0gU29ydE9yZGVyID0ge30pKTtcbi8qKlxuICogQ3JlYXRlcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBvYmplY3QgdGhhdCBtYXRjaGVzIGEgdGFibGUgcm93LlxuICpcbiAqIEBwYXJhbSBsZWZ0TWFyZ2luQ2hhcnMgLSBBIHNldCBvZiBhZGRpdGlvbmFsIGxlZnQgbWFyZ2luIGNoYXJhY3RlcnMuXG4gKiBBIHBpcGUgYHxgLCBhIGJhY2tzbGFzaCBgXFxgLCBhbmQgYSBiYWNrcXVvdGUgd2lsbCBiZSBpZ25vcmVkLlxuICogQHJldHVybnMgQSByZWd1bGFyIGV4cHJlc3Npb24gb2JqZWN0IHRoYXQgbWF0Y2hlcyBhIHRhYmxlIHJvdy5cbiAqL1xuY29uc3QgX2NyZWF0ZUlzVGFibGVSb3dSZWdleCA9IChsZWZ0TWFyZ2luQ2hhcnMpID0+IG5ldyBSZWdFeHAoYF4keygwLCBwYXJzZXJfMS5tYXJnaW5SZWdleFNyYykobGVmdE1hcmdpbkNoYXJzKX1cXFxcfGAsICd1Jyk7XG5leHBvcnRzLl9jcmVhdGVJc1RhYmxlUm93UmVnZXggPSBfY3JlYXRlSXNUYWJsZVJvd1JlZ2V4O1xuY29uc3QgX2NyZWF0ZUlzVGFibGVGb3JtdWxhUmVnZXggPSAobGVmdE1hcmdpbkNoYXJzKSA9PiBuZXcgUmVnRXhwKGBeJHsoMCwgcGFyc2VyXzEubWFyZ2luUmVnZXhTcmMpKGxlZnRNYXJnaW5DaGFycyl9PCEtLSA/ListLT4kYCwgJ3UnKTtcbmV4cG9ydHMuX2NyZWF0ZUlzVGFibGVGb3JtdWxhUmVnZXggPSBfY3JlYXRlSXNUYWJsZUZvcm11bGFSZWdleDtcbi8qKlxuICogQ29tcHV0ZXMgbmV3IGZvY3VzIG9mZnNldCBmcm9tIGluZm9ybWF0aW9uIG9mIGNvbXBsZXRlZCBhbmQgZm9ybWF0dGVkIHRhYmxlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIGZvY3VzIC0gQSBmb2N1cy5cbiAqIEBwYXJhbSB0YWJsZSAtIEEgY29tcGxldGVkIGJ1dCBub3QgZm9ybWF0dGVkIHRhYmxlIHdpdGggb3JpZ2luYWwgY2VsbCBjb250ZW50cy5cbiAqIEBwYXJhbSBmb3JtYXR0ZWQgLSBJbmZvcm1hdGlvbiBvZiB0aGUgZm9ybWF0dGVkIHRhYmxlLlxuICogQHBhcmFtIG1vdmVkIC0gSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGZvY3VzIHBvc2l0aW9uIGlzIG1vdmVkIGJ5IGEgY29tbWFuZCBvciBub3QuXG4gKi9cbmNvbnN0IF9jb21wdXRlTmV3T2Zmc2V0ID0gKGZvY3VzLCB0YWJsZSwgZm9ybWF0dGVkLCBtb3ZlZCkgPT4ge1xuICAgIGlmIChtb3ZlZCkge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWRGb2N1c2VkQ2VsbCA9IGZvcm1hdHRlZC50YWJsZS5nZXRGb2N1c2VkQ2VsbChmb2N1cyk7XG4gICAgICAgIGlmIChmb3JtYXR0ZWRGb2N1c2VkQ2VsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkRm9jdXNlZENlbGwuY29tcHV0ZVJhd09mZnNldCgwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9jdXMuY29sdW1uIDwgMCA/IGZvcm1hdHRlZC5tYXJnaW5MZWZ0Lmxlbmd0aCA6IDA7XG4gICAgfVxuICAgIGNvbnN0IGZvY3VzZWRDZWxsID0gdGFibGUuZ2V0Rm9jdXNlZENlbGwoZm9jdXMpO1xuICAgIGNvbnN0IGZvcm1hdHRlZEZvY3VzZWRDZWxsID0gZm9ybWF0dGVkLnRhYmxlLmdldEZvY3VzZWRDZWxsKGZvY3VzKTtcbiAgICBpZiAoZm9jdXNlZENlbGwgIT09IHVuZGVmaW5lZCAmJiBmb3JtYXR0ZWRGb2N1c2VkQ2VsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRPZmZzZXQgPSBNYXRoLm1pbihmb2N1c2VkQ2VsbC5jb21wdXRlQ29udGVudE9mZnNldChmb2N1cy5vZmZzZXQpLCBmb3JtYXR0ZWRGb2N1c2VkQ2VsbC5jb250ZW50Lmxlbmd0aCk7XG4gICAgICAgIHJldHVybiBmb3JtYXR0ZWRGb2N1c2VkQ2VsbC5jb21wdXRlUmF3T2Zmc2V0KGNvbnRlbnRPZmZzZXQpO1xuICAgIH1cbiAgICByZXR1cm4gZm9jdXMuY29sdW1uIDwgMCA/IGZvcm1hdHRlZC5tYXJnaW5MZWZ0Lmxlbmd0aCA6IDA7XG59O1xuZXhwb3J0cy5fY29tcHV0ZU5ld09mZnNldCA9IF9jb21wdXRlTmV3T2Zmc2V0O1xuLyoqXG4gKiBUaGUgYFRhYmxlRWRpdG9yYCBjbGFzcyBpcyBhdCB0aGUgY2VudGVyIG9mIHRoZSBtYXJrZG93bi10YWJsZS1lZGl0b3IuXG4gKiBXaGVuIGEgY29tbWFuZCBpcyBleGVjdXRlZCwgaXQgcmVhZHMgYSB0YWJsZSBmcm9tIHRoZSB0ZXh0IGVkaXRvciwgZG9lcyBzb21lIG9wZXJhdGlvbiBvbiB0aGVcbiAqIHRhYmxlLCBhbmQgdGhlbiBhcHBseSB0aGUgcmVzdWx0IHRvIHRoZSB0ZXh0IGVkaXRvci5cbiAqXG4gKiBUbyB1c2UgdGhpcyBjbGFzcywgdGhlIHRleHQgZWRpdG9yIChvciBhbiBpbnRlcmZhY2UgdG8gaXQpIG11c3QgaW1wbGVtZW50IHtAbGluayBJVGV4dEVkaXRvcn0uXG4gKi9cbmNsYXNzIFRhYmxlRWRpdG9yIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHRhYmxlIGVkaXRvciBpbnN0YW5jZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0ZXh0RWRpdG9yIC0gQSB0ZXh0IGVkaXRvciBpbnRlcmZhY2UuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IodGV4dEVkaXRvcikge1xuICAgICAgICB0aGlzLl90ZXh0RWRpdG9yID0gdGV4dEVkaXRvcjtcbiAgICAgICAgLy8gc21hcnQgY3Vyc29yXG4gICAgICAgIHRoaXMuX3NjQWN0aXZlID0gZmFsc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlc2V0cyB0aGUgc21hcnQgY3Vyc29yLlxuICAgICAqIENhbGwgdGhpcyBtZXRob2Qgd2hlbiB0aGUgdGFibGUgZWRpdG9yIGlzIGluYWN0aXZhdGVkLlxuICAgICAqL1xuICAgIHJlc2V0U21hcnRDdXJzb3IoKSB7XG4gICAgICAgIHRoaXMuX3NjQWN0aXZlID0gZmFsc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgY3Vyc29yIGlzIGluIGEgdGFibGUgcm93LiBSZXR1cm5zIGZhbHNlIGlmIHRoZSBjdXJzb3IgaXMgaW4gYVxuICAgICAqIHRhYmxlIGZvcm11bGEgcm93IChzZWUgY3Vyc29ySXNJblRhYmxlRm9ybXVsYSkuXG4gICAgICogVGhpcyBpcyB1c2VmdWwgdG8gY2hlY2sgd2hldGhlciB0aGUgdGFibGUgZWRpdG9yIHNob3VsZCBiZSBhY3RpdmF0ZWQgb3Igbm90LlxuICAgICAqXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBjdXJzb3IgaXMgaW4gYSB0YWJsZSByb3cuXG4gICAgICovXG4gICAgY3Vyc29ySXNJblRhYmxlKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcmUgPSAoMCwgZXhwb3J0cy5fY3JlYXRlSXNUYWJsZVJvd1JlZ2V4KShvcHRpb25zLmxlZnRNYXJnaW5DaGFycyk7XG4gICAgICAgIGNvbnN0IHBvcyA9IHRoaXMuX3RleHRFZGl0b3IuZ2V0Q3Vyc29yUG9zaXRpb24oKTtcbiAgICAgICAgcmV0dXJuICh0aGlzLl90ZXh0RWRpdG9yLmFjY2VwdHNUYWJsZUVkaXQocG9zLnJvdykgJiZcbiAgICAgICAgICAgIHJlLnRlc3QodGhpcy5fdGV4dEVkaXRvci5nZXRMaW5lKHBvcy5yb3cpKSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgY3Vyc29yIGlzIGluIGEgZm9ybXVsYSByb3cgYmVsb3cgYSB0YWJsZS5cbiAgICAgKiBUaGlzIGlzIHVzZWZ1bCB0byBjaGVjayB3aGV0aGVyIHRoZSB0YWJsZSBlZGl0b3Igc2hvdWxkIGJlIGFjdGl2YXRlZCBvciBub3QuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGN1cnNvciBpcyBpbiBhIGZvcm11bGEgcm93LlxuICAgICAqL1xuICAgIGN1cnNvcklzSW5UYWJsZUZvcm11bGEob3B0aW9ucykge1xuICAgICAgICBjb25zdCBmb3JtdWxhUmUgPSAoMCwgZXhwb3J0cy5fY3JlYXRlSXNUYWJsZUZvcm11bGFSZWdleCkob3B0aW9ucy5sZWZ0TWFyZ2luQ2hhcnMpO1xuICAgICAgICBjb25zdCBwb3MgPSB0aGlzLl90ZXh0RWRpdG9yLmdldEN1cnNvclBvc2l0aW9uKCk7XG4gICAgICAgIHJldHVybiAodGhpcy5fdGV4dEVkaXRvci5hY2NlcHRzVGFibGVFZGl0KHBvcy5yb3cpICYmXG4gICAgICAgICAgICBmb3JtdWxhUmUudGVzdCh0aGlzLl90ZXh0RWRpdG9yLmdldExpbmUocG9zLnJvdykpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRmluZHMgYSB0YWJsZSB1bmRlciB0aGUgY3VycmVudCBjdXJzb3IgcG9zaXRpb24uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB1bmRlZmluZWQgaWYgdGhlcmUgaXMgbm8gdGFibGUgb3IgdGhlIGRldGVybWluZWQgZm9jdXMgaXMgaW52YWxpZC5cbiAgICAgKi9cbiAgICBfZmluZFRhYmxlKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcmUgPSAoMCwgZXhwb3J0cy5fY3JlYXRlSXNUYWJsZVJvd1JlZ2V4KShvcHRpb25zLmxlZnRNYXJnaW5DaGFycyk7XG4gICAgICAgIGNvbnN0IGZvcm11bGFSZSA9ICgwLCBleHBvcnRzLl9jcmVhdGVJc1RhYmxlRm9ybXVsYVJlZ2V4KShvcHRpb25zLmxlZnRNYXJnaW5DaGFycyk7XG4gICAgICAgIGxldCBwb3MgPSB0aGlzLl90ZXh0RWRpdG9yLmdldEN1cnNvclBvc2l0aW9uKCk7XG4gICAgICAgIGNvbnN0IGxhc3RSb3cgPSB0aGlzLl90ZXh0RWRpdG9yLmdldExhc3RSb3coKTtcbiAgICAgICAgY29uc3QgbGluZXMgPSBbXTtcbiAgICAgICAgY29uc3QgZm9ybXVsYUxpbmVzID0gW107XG4gICAgICAgIGxldCBzdGFydFJvdyA9IHBvcy5yb3c7XG4gICAgICAgIGxldCBlbmRSb3cgPSBwb3Mucm93OyAvLyBlbmRSb3cgaXMgbGFzdCBsaW5lIGJlZm9yZSBmb211bGFzXG4gICAgICAgIC8vIGlmIHRoZSBjdXJzb3IgaXMgb24gZm9ybXVsYSBsaW5lLCB3b3JrIHVwIHVudGlsIHdlIGZpbmQgdGhlIGxhc3Qgcm93IG9mIHRoZSB0YWJsZVxuICAgICAgICB7XG4gICAgICAgICAgICBsZXQgbGluZSA9IHRoaXMuX3RleHRFZGl0b3IuZ2V0TGluZShwb3Mucm93KTtcbiAgICAgICAgICAgIHdoaWxlIChmb3JtdWxhUmUudGVzdChsaW5lKSAmJiBwb3Mucm93ID49IDApIHtcbiAgICAgICAgICAgICAgICBwb3MgPSBuZXcgcG9pbnRfMS5Qb2ludChwb3Mucm93IC0gMSwgcG9zLmNvbHVtbik7XG4gICAgICAgICAgICAgICAgZW5kUm93LS07XG4gICAgICAgICAgICAgICAgbGluZSA9IHRoaXMuX3RleHRFZGl0b3IuZ2V0TGluZShwb3Mucm93KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBjdXJyZW50IGxpbmVcbiAgICAgICAge1xuICAgICAgICAgICAgY29uc3QgbGluZSA9IHRoaXMuX3RleHRFZGl0b3IuZ2V0TGluZShwb3Mucm93KTtcbiAgICAgICAgICAgIGlmICghdGhpcy5fdGV4dEVkaXRvci5hY2NlcHRzVGFibGVFZGl0KHBvcy5yb3cpIHx8ICFyZS50ZXN0KGxpbmUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxpbmVzLnB1c2gobGluZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcHJldmlvdXMgbGluZXNcbiAgICAgICAgZm9yIChsZXQgcm93ID0gcG9zLnJvdyAtIDE7IHJvdyA+PSAwOyByb3ctLSkge1xuICAgICAgICAgICAgY29uc3QgbGluZSA9IHRoaXMuX3RleHRFZGl0b3IuZ2V0TGluZShyb3cpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl90ZXh0RWRpdG9yLmFjY2VwdHNUYWJsZUVkaXQocm93KSB8fCAhcmUudGVzdChsaW5lKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGluZXMudW5zaGlmdChsaW5lKTtcbiAgICAgICAgICAgIHN0YXJ0Um93ID0gcm93O1xuICAgICAgICB9XG4gICAgICAgIC8vIG5leHQgbGluZXNcbiAgICAgICAgZm9yIChsZXQgcm93ID0gcG9zLnJvdyArIDE7IHJvdyA8PSBsYXN0Um93OyByb3crKykge1xuICAgICAgICAgICAgY29uc3QgbGluZSA9IHRoaXMuX3RleHRFZGl0b3IuZ2V0TGluZShyb3cpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl90ZXh0RWRpdG9yLmFjY2VwdHNUYWJsZUVkaXQocm93KSB8fCAhcmUudGVzdChsaW5lKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGluZXMucHVzaChsaW5lKTtcbiAgICAgICAgICAgIGVuZFJvdyA9IHJvdztcbiAgICAgICAgfVxuICAgICAgICAvLyBmb3JtdWxhIGxpbmVzXG4gICAgICAgIGZvciAobGV0IHJvdyA9IGVuZFJvdyArIDE7IHJvdyA8PSBsYXN0Um93OyByb3crKykge1xuICAgICAgICAgICAgY29uc3QgbGluZSA9IHRoaXMuX3RleHRFZGl0b3IuZ2V0TGluZShyb3cpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl90ZXh0RWRpdG9yLmFjY2VwdHNUYWJsZUVkaXQocm93KSB8fCAhZm9ybXVsYVJlLnRlc3QobGluZSkpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvcm11bGFMaW5lcy5wdXNoKGxpbmUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJhbmdlID0gbmV3IHJhbmdlXzEuUmFuZ2UobmV3IHBvaW50XzEuUG9pbnQoc3RhcnRSb3csIDApLCBuZXcgcG9pbnRfMS5Qb2ludChlbmRSb3csIGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aCkpO1xuICAgICAgICBjb25zdCB0YWJsZSA9ICgwLCBwYXJzZXJfMS5yZWFkVGFibGUpKGxpbmVzLCBvcHRpb25zKTtcbiAgICAgICAgY29uc3QgZm9jdXMgPSB0YWJsZS5mb2N1c09mUG9zaXRpb24ocG9zLCBzdGFydFJvdyk7XG4gICAgICAgIGlmIChmb2N1cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBUT0RPOiBWYWxpZGF0ZSB0aGlzIGZvciBjb3JyZWN0bmVzc1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyByYW5nZSwgbGluZXMsIGZvcm11bGFMaW5lcywgdGFibGUsIGZvY3VzIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEZpbmRzIGEgdGFibGUgYW5kIGRvZXMgYW4gb3BlcmF0aW9uIHdpdGggaXQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSBmdW5jIC0gQSBmdW5jdGlvbiB0aGF0IGRvZXMgc29tZSBvcGVyYXRpb24gb24gdGFibGUgaW5mb3JtYXRpb24gb2J0YWluZWQgYnlcbiAgICAgKiB7QGxpbmsgVGFibGVFZGl0b3IjX2ZpbmRUYWJsZX0uXG4gICAgICovXG4gICAgX3dpdGhUYWJsZShvcHRpb25zLCBmdW5jKSB7XG4gICAgICAgIGNvbnN0IGluZm8gPSB0aGlzLl9maW5kVGFibGUob3B0aW9ucyk7XG4gICAgICAgIGlmIChpbmZvID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuYyhpbmZvKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVXBkYXRlcyBsaW5lcyBpbiBhIGdpdmVuIHJhbmdlIGluIHRoZSB0ZXh0IGVkaXRvci5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHN0YXJ0Um93IC0gU3RhcnQgcm93IGluZGV4LCBzdGFydHMgZnJvbSBgMGAuXG4gICAgICogQHBhcmFtIGVuZFJvdyAtIEVuZCByb3cgaW5kZXguXG4gICAgICogTGluZXMgZnJvbSBgc3RhcnRSb3dgIHRvIGBlbmRSb3cgLSAxYCBhcmUgcmVwbGFjZWQuXG4gICAgICogQHBhcmFtIG5ld0xpbmVzIC0gTmV3IGxpbmVzLlxuICAgICAqIEBwYXJhbSBbb2xkTGluZXM9dW5kZWZpbmVkXSAtIE9sZCBsaW5lcyB0byBiZSByZXBsYWNlZC5cbiAgICAgKi9cbiAgICBfdXBkYXRlTGluZXMoc3RhcnRSb3csIGVuZFJvdywgbmV3TGluZXMsIG9sZExpbmVzID0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChvbGRMaW5lcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBhcHBseSB0aGUgc2hvcnRlc3QgZWRpdCBzY3JpcHRcbiAgICAgICAgICAgIC8vIGlmIGEgdGFibGUgaXMgZWRpdGVkIGluIGEgbm9ybWFsIG1hbm5lciwgdGhlIGVkaXQgZGlzdGFuY2UgbmV2ZXIgZXhjZWVkcyAzXG4gICAgICAgICAgICBjb25zdCBzZXMgPSAoMCwgZWRpdF9zY3JpcHRfMS5zaG9ydGVzdEVkaXRTY3JpcHQpKG9sZExpbmVzLCBuZXdMaW5lcywgMyk7XG4gICAgICAgICAgICBpZiAoc2VzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAoMCwgZWRpdF9zY3JpcHRfMS5hcHBseUVkaXRTY3JpcHQpKHRoaXMuX3RleHRFZGl0b3IsIHNlcywgc3RhcnRSb3cpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnJlcGxhY2VMaW5lcyhzdGFydFJvdywgZW5kUm93LCBuZXdMaW5lcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE1vdmVzIHRoZSBjdXJzb3IgcG9zaXRpb24gdG8gdGhlIGZvY3VzZWQgY2VsbCxcbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHN0YXJ0Um93IC0gUm93IGluZGV4IHdoZXJlIHRoZSB0YWJsZSBzdGFydHMgaW4gdGhlIHRleHQgZWRpdG9yLlxuICAgICAqIEBwYXJhbSB0YWJsZSAtIEEgdGFibGUuXG4gICAgICogQHBhcmFtIGZvY3VzIC0gQSBmb2N1cyB0byB3aGljaCB0aGUgY3Vyc29yIHdpbGwgYmUgbW92ZWQuXG4gICAgICovXG4gICAgX21vdmVUb0ZvY3VzKHN0YXJ0Um93LCB0YWJsZSwgZm9jdXMpIHtcbiAgICAgICAgY29uc3QgcG9zID0gdGFibGUucG9zaXRpb25PZkZvY3VzKGZvY3VzLCBzdGFydFJvdyk7XG4gICAgICAgIGlmIChwb3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5zZXRDdXJzb3JQb3NpdGlvbihwb3MpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMgdGhlIGZvY3VzZWQgY2VsbC5cbiAgICAgKiBJZiB0aGUgY2VsbCBoYXMgbm8gY29udGVudCB0byBiZSBzZWxlY3RlZCwgdGhlbiBqdXN0IG1vdmVzIHRoZSBjdXJzb3IgcG9zaXRpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSBzdGFydFJvdyAtIFJvdyBpbmRleCB3aGVyZSB0aGUgdGFibGUgc3RhcnRzIGluIHRoZSB0ZXh0IGVkaXRvci5cbiAgICAgKiBAcGFyYW0gdGFibGUgLSBBIHRhYmxlLlxuICAgICAqIEBwYXJhbSBmb2N1cyAtIEEgZm9jdXMgdG8gYmUgc2VsZWN0ZWQuXG4gICAgICovXG4gICAgX3NlbGVjdEZvY3VzKHN0YXJ0Um93LCB0YWJsZSwgZm9jdXMpIHtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSB0YWJsZS5zZWxlY3Rpb25SYW5nZU9mRm9jdXMoZm9jdXMsIHN0YXJ0Um93KTtcbiAgICAgICAgaWYgKHJhbmdlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0b3Iuc2V0U2VsZWN0aW9uUmFuZ2UocmFuZ2UpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbW92ZVRvRm9jdXMoc3RhcnRSb3csIHRhYmxlLCBmb2N1cyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogRm9ybWF0cyB0aGUgdGFibGUgdW5kZXIgdGhlIGN1cnNvci5cbiAgICAgKi9cbiAgICBmb3JtYXQob3B0aW9ucykge1xuICAgICAgICB0aGlzLndpdGhDb21wbGV0ZWRUYWJsZShvcHRpb25zLCAoeyByYW5nZSwgbGluZXMsIHRhYmxlLCBmb2N1cyB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdGb2N1cyA9IGZvY3VzO1xuICAgICAgICAgICAgLy8gYXBwbHlcbiAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IudHJhbnNhY3QoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxpbmVzKHJhbmdlLnN0YXJ0LnJvdywgcmFuZ2UuZW5kLnJvdyArIDEsIHRhYmxlLnRvTGluZXMoKSwgbGluZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuX21vdmVUb0ZvY3VzKHJhbmdlLnN0YXJ0LnJvdywgdGFibGUsIG5ld0ZvY3VzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRm9ybWF0cyBhbmQgZXNjYXBlcyBmcm9tIHRoZSB0YWJsZS5cbiAgICAgKi9cbiAgICBlc2NhcGUob3B0aW9ucykge1xuICAgICAgICB0aGlzLl93aXRoVGFibGUob3B0aW9ucywgKHsgcmFuZ2UsIGxpbmVzLCB0YWJsZSwgZm9jdXMgfSkgPT4ge1xuICAgICAgICAgICAgLy8gY29tcGxldGVcbiAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZCA9ICgwLCBmb3JtYXR0ZXJfMS5jb21wbGV0ZVRhYmxlKSh0YWJsZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAvLyBmb3JtYXRcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9ICgwLCBmb3JtYXR0ZXJfMS5mb3JtYXRUYWJsZSkoY29tcGxldGVkLnRhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgICAgIC8vIGFwcGx5XG4gICAgICAgICAgICBjb25zdCBuZXdSb3cgPSByYW5nZS5lbmQucm93ICsgKGNvbXBsZXRlZC5kZWxpbWl0ZXJJbnNlcnRlZCA/IDIgOiAxKTtcbiAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IudHJhbnNhY3QoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxpbmVzKHJhbmdlLnN0YXJ0LnJvdywgcmFuZ2UuZW5kLnJvdyArIDEsIGZvcm1hdHRlZC50YWJsZS50b0xpbmVzKCksIGxpbmVzKTtcbiAgICAgICAgICAgICAgICBsZXQgbmV3UG9zO1xuICAgICAgICAgICAgICAgIGlmIChuZXdSb3cgPiB0aGlzLl90ZXh0RWRpdG9yLmdldExhc3RSb3coKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmluc2VydExpbmUobmV3Um93LCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIG5ld1BvcyA9IG5ldyBwb2ludF8xLlBvaW50KG5ld1JvdywgMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZSA9IG5ldyBSZWdFeHAoYF4keygwLCBwYXJzZXJfMS5tYXJnaW5SZWdleFNyYykob3B0aW9ucy5sZWZ0TWFyZ2luQ2hhcnMpfWAsICd1Jyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRMaW5lID0gdGhpcy5fdGV4dEVkaXRvci5nZXRMaW5lKG5ld1Jvdyk7XG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ET1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXJnaW4gPSByZS5leGVjKG5leHRMaW5lKVswXTtcbiAgICAgICAgICAgICAgICAgICAgbmV3UG9zID0gbmV3IHBvaW50XzEuUG9pbnQobmV3Um93LCBtYXJnaW4ubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5zZXRDdXJzb3JQb3NpdGlvbihuZXdQb3MpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnJlc2V0U21hcnRDdXJzb3IoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEFsdGVycyB0aGUgYWxpZ25tZW50IG9mIHRoZSBmb2N1c2VkIGNvbHVtbi5cbiAgICAgKi9cbiAgICBhbGlnbkNvbHVtbihhbGlnbm1lbnQsIG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy53aXRoQ29tcGxldGVkVGFibGUob3B0aW9ucywgKHsgcmFuZ2UsIGxpbmVzLCB0YWJsZSwgZm9jdXMgfSkgPT4ge1xuICAgICAgICAgICAgbGV0IG5ld0ZvY3VzID0gZm9jdXM7XG4gICAgICAgICAgICAvLyBhbHRlciBhbGlnbm1lbnRcbiAgICAgICAgICAgIGxldCBhbHRlcmVkID0gdGFibGU7XG4gICAgICAgICAgICBpZiAoMCA8PSBuZXdGb2N1cy5jb2x1bW4gJiZcbiAgICAgICAgICAgICAgICBuZXdGb2N1cy5jb2x1bW4gPD0gYWx0ZXJlZC5nZXRIZWFkZXJXaWR0aCgpIC0gMSkge1xuICAgICAgICAgICAgICAgIGFsdGVyZWQgPSAoMCwgZm9ybWF0dGVyXzEuYWx0ZXJBbGlnbm1lbnQpKHRhYmxlLCBuZXdGb2N1cy5jb2x1bW4sIGFsaWdubWVudCwgb3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBmb3JtYXRcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9ICgwLCBmb3JtYXR0ZXJfMS5mb3JtYXRUYWJsZSkoYWx0ZXJlZCwgb3B0aW9ucyk7XG4gICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldE9mZnNldCgoMCwgZXhwb3J0cy5fY29tcHV0ZU5ld09mZnNldCkobmV3Rm9jdXMsIHRhYmxlLCBmb3JtYXR0ZWQsIGZhbHNlKSk7XG4gICAgICAgICAgICAvLyBhcHBseVxuICAgICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci50cmFuc2FjdCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlTGluZXMocmFuZ2Uuc3RhcnQucm93LCByYW5nZS5lbmQucm93ICsgMSwgZm9ybWF0dGVkLnRhYmxlLnRvTGluZXMoKSwgbGluZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuX21vdmVUb0ZvY3VzKHJhbmdlLnN0YXJ0LnJvdywgZm9ybWF0dGVkLnRhYmxlLCBuZXdGb2N1cyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMgdGhlIGZvY3VzZWQgY2VsbCBjb250ZW50LlxuICAgICAqL1xuICAgIHNlbGVjdENlbGwob3B0aW9ucykge1xuICAgICAgICB0aGlzLndpdGhDb21wbGV0ZWRUYWJsZShvcHRpb25zLCAoeyByYW5nZSwgbGluZXMsIHRhYmxlLCBmb2N1cyB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdGb2N1cyA9IGZvY3VzO1xuICAgICAgICAgICAgLy8gYXBwbHlcbiAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IudHJhbnNhY3QoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxpbmVzKHJhbmdlLnN0YXJ0LnJvdywgcmFuZ2UuZW5kLnJvdyArIDEsIHRhYmxlLnRvTGluZXMoKSwgbGluZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdEZvY3VzKHJhbmdlLnN0YXJ0LnJvdywgdGFibGUsIG5ld0ZvY3VzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTW92ZXMgdGhlIGZvY3VzIHRvIGFub3RoZXIgY2VsbC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByb3dPZmZzZXQgLSBPZmZzZXQgaW4gcm93LlxuICAgICAqIEBwYXJhbSBjb2x1bW5PZmZzZXQgLSBPZmZzZXQgaW4gY29sdW1uLlxuICAgICAqL1xuICAgIG1vdmVGb2N1cyhyb3dPZmZzZXQsIGNvbHVtbk9mZnNldCwgb3B0aW9ucykge1xuICAgICAgICB0aGlzLndpdGhDb21wbGV0ZWRUYWJsZShvcHRpb25zLCAoeyByYW5nZSwgbGluZXMsIHRhYmxlLCBmb2N1cyB9KSA9PiB7XG4gICAgICAgICAgICBsZXQgbmV3Rm9jdXMgPSBmb2N1cztcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0Rm9jdXMgPSBuZXdGb2N1cztcbiAgICAgICAgICAgIC8vIG1vdmUgZm9jdXNcbiAgICAgICAgICAgIGlmIChyb3dPZmZzZXQgIT09IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBoZWlnaHQgPSB0YWJsZS5nZXRIZWlnaHQoKTtcbiAgICAgICAgICAgICAgICAvLyBza2lwIGRlbGltaXRlciByb3dcbiAgICAgICAgICAgICAgICBjb25zdCBza2lwID0gbmV3Rm9jdXMucm93IDwgMSAmJiBuZXdGb2N1cy5yb3cgKyByb3dPZmZzZXQgPj0gMVxuICAgICAgICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgICAgICAgOiBuZXdGb2N1cy5yb3cgPiAxICYmIG5ld0ZvY3VzLnJvdyArIHJvd09mZnNldCA8PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/IC0xXG4gICAgICAgICAgICAgICAgICAgICAgICA6IDA7XG4gICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRSb3coTWF0aC5taW4oTWF0aC5tYXgobmV3Rm9jdXMucm93ICsgcm93T2Zmc2V0ICsgc2tpcCwgMCksIGhlaWdodCA8PSAyID8gMCA6IGhlaWdodCAtIDEpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2x1bW5PZmZzZXQgIT09IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCB3aWR0aCA9IHRhYmxlLmdldEhlYWRlcldpZHRoKCk7XG4gICAgICAgICAgICAgICAgaWYgKCEobmV3Rm9jdXMuY29sdW1uIDwgMCAmJiBjb2x1bW5PZmZzZXQgPCAwKSAmJlxuICAgICAgICAgICAgICAgICAgICAhKG5ld0ZvY3VzLmNvbHVtbiA+IHdpZHRoIC0gMSAmJiBjb2x1bW5PZmZzZXQgPiAwKSkge1xuICAgICAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldENvbHVtbihNYXRoLm1pbihNYXRoLm1heChuZXdGb2N1cy5jb2x1bW4gKyBjb2x1bW5PZmZzZXQsIDApLCB3aWR0aCAtIDEpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBtb3ZlZCA9ICFuZXdGb2N1cy5wb3NFcXVhbHMoc3RhcnRGb2N1cyk7XG4gICAgICAgICAgICAvLyBmb3JtYXRcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9ICgwLCBmb3JtYXR0ZXJfMS5mb3JtYXRUYWJsZSkodGFibGUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRPZmZzZXQoKDAsIGV4cG9ydHMuX2NvbXB1dGVOZXdPZmZzZXQpKG5ld0ZvY3VzLCB0YWJsZSwgZm9ybWF0dGVkLCBtb3ZlZCkpO1xuICAgICAgICAgICAgLy8gYXBwbHlcbiAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IudHJhbnNhY3QoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxpbmVzKHJhbmdlLnN0YXJ0LnJvdywgcmFuZ2UuZW5kLnJvdyArIDEsIGZvcm1hdHRlZC50YWJsZS50b0xpbmVzKCksIGxpbmVzKTtcbiAgICAgICAgICAgICAgICBpZiAobW92ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0Rm9jdXMocmFuZ2Uuc3RhcnQucm93LCBmb3JtYXR0ZWQudGFibGUsIG5ld0ZvY3VzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX21vdmVUb0ZvY3VzKHJhbmdlLnN0YXJ0LnJvdywgZm9ybWF0dGVkLnRhYmxlLCBuZXdGb2N1cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAobW92ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0U21hcnRDdXJzb3IoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE1vdmVzIHRoZSBmb2N1cyB0byB0aGUgbmV4dCBjZWxsLlxuICAgICAqL1xuICAgIG5leHRDZWxsKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5fd2l0aFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgdGFibGUsIGZvY3VzIH0pID0+IHtcbiAgICAgICAgICAgIC8vIHJlc2V0IHNtYXJ0IGN1cnNvciBpZiBtb3ZlZFxuICAgICAgICAgICAgY29uc3QgZm9jdXNNb3ZlZCA9ICh0aGlzLl9zY1RhYmxlUG9zICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAhcmFuZ2Uuc3RhcnQuZXF1YWxzKHRoaXMuX3NjVGFibGVQb3MpKSB8fFxuICAgICAgICAgICAgICAgICh0aGlzLl9zY0xhc3RGb2N1cyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgICFmb2N1cy5wb3NFcXVhbHModGhpcy5fc2NMYXN0Rm9jdXMpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9zY0FjdGl2ZSAmJiBmb2N1c01vdmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldFNtYXJ0Q3Vyc29yKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgbmV3Rm9jdXMgPSBmb2N1cztcbiAgICAgICAgICAgIC8vIGNvbXBsZXRlXG4gICAgICAgICAgICBjb25zdCBjb21wbGV0ZWQgPSAoMCwgZm9ybWF0dGVyXzEuY29tcGxldGVUYWJsZSkodGFibGUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgaWYgKGNvbXBsZXRlZC5kZWxpbWl0ZXJJbnNlcnRlZCAmJiBuZXdGb2N1cy5yb3cgPiAwKSB7XG4gICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRSb3cobmV3Rm9jdXMucm93ICsgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzdGFydEZvY3VzID0gbmV3Rm9jdXM7XG4gICAgICAgICAgICBsZXQgYWx0ZXJlZCA9IGNvbXBsZXRlZC50YWJsZTtcbiAgICAgICAgICAgIC8vIG1vdmUgZm9jdXNcbiAgICAgICAgICAgIGlmIChuZXdGb2N1cy5yb3cgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAvLyBtb3ZlIHRvIG5leHQgcm93XG4gICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRSb3coMik7XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuc21hcnRDdXJzb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0ZvY3VzLmNvbHVtbiA8IDAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVyZWQuZ2V0SGVhZGVyV2lkdGgoKSAtIDEgPCBuZXdGb2N1cy5jb2x1bW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Q29sdW1uKDApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldENvbHVtbigwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gaW5zZXJ0IGFuIGVtcHR5IHJvdyBpZiBuZWVkZWRcbiAgICAgICAgICAgICAgICBpZiAobmV3Rm9jdXMucm93ID4gYWx0ZXJlZC5nZXRIZWlnaHQoKSAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm93ID0gbmV3IEFycmF5KGFsdGVyZWQuZ2V0SGVhZGVyV2lkdGgoKSkuZmlsbChuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbCgnJykpO1xuICAgICAgICAgICAgICAgICAgICBhbHRlcmVkID0gKDAsIGZvcm1hdHRlcl8xLmluc2VydFJvdykoYWx0ZXJlZCwgYWx0ZXJlZC5nZXRIZWlnaHQoKSwgbmV3IHRhYmxlX3Jvd18xLlRhYmxlUm93KHJvdywgJycsICcnKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gaW5zZXJ0IGFuIGVtcHR5IGNvbHVtbiBpZiBuZWVkZWRcbiAgICAgICAgICAgICAgICBpZiAobmV3Rm9jdXMuY29sdW1uID4gYWx0ZXJlZC5nZXRIZWFkZXJXaWR0aCgpIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW4gPSBuZXcgQXJyYXkoYWx0ZXJlZC5nZXRIZWlnaHQoKSAtIDEpLmZpbGwobmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoJycpKTtcbiAgICAgICAgICAgICAgICAgICAgYWx0ZXJlZCA9ICgwLCBmb3JtYXR0ZXJfMS5pbnNlcnRDb2x1bW4pKGFsdGVyZWQsIGFsdGVyZWQuZ2V0SGVhZGVyV2lkdGgoKSwgY29sdW1uLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gbW92ZSB0byBuZXh0IGNvbHVtblxuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Q29sdW1uKG5ld0ZvY3VzLmNvbHVtbiArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZm9ybWF0XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSAoMCwgZm9ybWF0dGVyXzEuZm9ybWF0VGFibGUpKGFsdGVyZWQsIG9wdGlvbnMpO1xuICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRPZmZzZXQoKDAsIGV4cG9ydHMuX2NvbXB1dGVOZXdPZmZzZXQpKG5ld0ZvY3VzLCBhbHRlcmVkLCBmb3JtYXR0ZWQsIHRydWUpKTtcbiAgICAgICAgICAgIC8vIGFwcGx5XG4gICAgICAgICAgICBjb25zdCBuZXdMaW5lcyA9IGZvcm1hdHRlZC50YWJsZS50b0xpbmVzKCk7XG4gICAgICAgICAgICBpZiAobmV3Rm9jdXMuY29sdW1uID4gZm9ybWF0dGVkLnRhYmxlLmdldEhlYWRlcldpZHRoKCkgLSAxKSB7XG4gICAgICAgICAgICAgICAgLy8gYWRkIG1hcmdpblxuICAgICAgICAgICAgICAgIG5ld0xpbmVzW25ld0ZvY3VzLnJvd10gKz0gJyAnO1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0T2Zmc2V0KDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci50cmFuc2FjdCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlTGluZXMocmFuZ2Uuc3RhcnQucm93LCByYW5nZS5lbmQucm93ICsgMSwgbmV3TGluZXMsIGxpbmVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RGb2N1cyhyYW5nZS5zdGFydC5yb3csIGZvcm1hdHRlZC50YWJsZSwgbmV3Rm9jdXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zbWFydEN1cnNvcikge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fc2NBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gYWN0aXZhdGUgc21hcnQgY3Vyc29yXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NjQWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2NUYWJsZVBvcyA9IHJhbmdlLnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRGb2N1cy5jb2x1bW4gPCAwIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWQudGFibGUuZ2V0SGVhZGVyV2lkdGgoKSAtIDEgPCBzdGFydEZvY3VzLmNvbHVtbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2NTdGFydEZvY3VzID0gbmV3IGZvY3VzXzEuRm9jdXMoc3RhcnRGb2N1cy5yb3csIDAsIDApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2NTdGFydEZvY3VzID0gc3RhcnRGb2N1cztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl9zY0xhc3RGb2N1cyA9IG5ld0ZvY3VzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTW92ZXMgdGhlIGZvY3VzIHRvIHRoZSBwcmV2aW91cyBjZWxsLlxuICAgICAqL1xuICAgIHByZXZpb3VzQ2VsbChvcHRpb25zKSB7XG4gICAgICAgIHRoaXMud2l0aENvbXBsZXRlZFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgdGFibGUsIGZvY3VzIH0pID0+IHtcbiAgICAgICAgICAgIGxldCBuZXdGb2N1cyA9IGZvY3VzO1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRGb2N1cyA9IG5ld0ZvY3VzO1xuICAgICAgICAgICAgLy8gbW92ZSBmb2N1c1xuICAgICAgICAgICAgaWYgKG5ld0ZvY3VzLnJvdyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGlmIChuZXdGb2N1cy5jb2x1bW4gPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Q29sdW1uKG5ld0ZvY3VzLmNvbHVtbiAtIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG5ld0ZvY3VzLnJvdyA9PT0gMSkge1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3IGZvY3VzXzEuRm9jdXMoMCwgdGFibGUuZ2V0SGVhZGVyV2lkdGgoKSAtIDEsIG5ld0ZvY3VzLm9mZnNldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAobmV3Rm9jdXMuY29sdW1uID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldENvbHVtbihuZXdGb2N1cy5jb2x1bW4gLSAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3IGZvY3VzXzEuRm9jdXMobmV3Rm9jdXMucm93ID09PSAyID8gMCA6IG5ld0ZvY3VzLnJvdyAtIDEsIHRhYmxlLmdldEhlYWRlcldpZHRoKCkgLSAxLCBuZXdGb2N1cy5vZmZzZXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG1vdmVkID0gIW5ld0ZvY3VzLnBvc0VxdWFscyhzdGFydEZvY3VzKTtcbiAgICAgICAgICAgIC8vIGZvcm1hdFxuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gKDAsIGZvcm1hdHRlcl8xLmZvcm1hdFRhYmxlKSh0YWJsZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldE9mZnNldCgoMCwgZXhwb3J0cy5fY29tcHV0ZU5ld09mZnNldCkobmV3Rm9jdXMsIHRhYmxlLCBmb3JtYXR0ZWQsIG1vdmVkKSk7XG4gICAgICAgICAgICAvLyBhcHBseVxuICAgICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci50cmFuc2FjdCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlTGluZXMocmFuZ2Uuc3RhcnQucm93LCByYW5nZS5lbmQucm93ICsgMSwgZm9ybWF0dGVkLnRhYmxlLnRvTGluZXMoKSwgbGluZXMpO1xuICAgICAgICAgICAgICAgIGlmIChtb3ZlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RGb2N1cyhyYW5nZS5zdGFydC5yb3csIGZvcm1hdHRlZC50YWJsZSwgbmV3Rm9jdXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbW92ZVRvRm9jdXMocmFuZ2Uuc3RhcnQucm93LCBmb3JtYXR0ZWQudGFibGUsIG5ld0ZvY3VzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChtb3ZlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRTbWFydEN1cnNvcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTW92ZXMgdGhlIGZvY3VzIHRvIHRoZSBuZXh0IHJvdy5cbiAgICAgKi9cbiAgICBuZXh0Um93KG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5fd2l0aFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgdGFibGUsIGZvY3VzIH0pID0+IHtcbiAgICAgICAgICAgIC8vIHJlc2V0IHNtYXJ0IGN1cnNvciBpZiBtb3ZlZFxuICAgICAgICAgICAgY29uc3QgZm9jdXNNb3ZlZCA9ICh0aGlzLl9zY1RhYmxlUG9zICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAhcmFuZ2Uuc3RhcnQuZXF1YWxzKHRoaXMuX3NjVGFibGVQb3MpKSB8fFxuICAgICAgICAgICAgICAgICh0aGlzLl9zY0xhc3RGb2N1cyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgICFmb2N1cy5wb3NFcXVhbHModGhpcy5fc2NMYXN0Rm9jdXMpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9zY0FjdGl2ZSAmJiBmb2N1c01vdmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldFNtYXJ0Q3Vyc29yKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgbmV3Rm9jdXMgPSBmb2N1cztcbiAgICAgICAgICAgIC8vIGNvbXBsZXRlXG4gICAgICAgICAgICBjb25zdCBjb21wbGV0ZWQgPSAoMCwgZm9ybWF0dGVyXzEuY29tcGxldGVUYWJsZSkodGFibGUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgaWYgKGNvbXBsZXRlZC5kZWxpbWl0ZXJJbnNlcnRlZCAmJiBuZXdGb2N1cy5yb3cgPiAwKSB7XG4gICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRSb3cobmV3Rm9jdXMucm93ICsgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzdGFydEZvY3VzID0gbmV3Rm9jdXM7XG4gICAgICAgICAgICBsZXQgYWx0ZXJlZCA9IGNvbXBsZXRlZC50YWJsZTtcbiAgICAgICAgICAgIC8vIG1vdmUgZm9jdXNcbiAgICAgICAgICAgIGlmIChuZXdGb2N1cy5yb3cgPT09IDApIHtcbiAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldFJvdygyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Um93KG5ld0ZvY3VzLnJvdyArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuc21hcnRDdXJzb3IpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fc2NBY3RpdmUgJiYgdGhpcy5fc2NTdGFydEZvY3VzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRDb2x1bW4odGhpcy5fc2NTdGFydEZvY3VzLmNvbHVtbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5ld0ZvY3VzLmNvbHVtbiA8IDAgfHxcbiAgICAgICAgICAgICAgICAgICAgYWx0ZXJlZC5nZXRIZWFkZXJXaWR0aCgpIC0gMSA8IG5ld0ZvY3VzLmNvbHVtbikge1xuICAgICAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldENvbHVtbigwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldENvbHVtbigwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGluc2VydCBlbXB0eSByb3cgaWYgbmVlZGVkXG4gICAgICAgICAgICBpZiAobmV3Rm9jdXMucm93ID4gYWx0ZXJlZC5nZXRIZWlnaHQoKSAtIDEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByb3cgPSBuZXcgQXJyYXkoYWx0ZXJlZC5nZXRIZWFkZXJXaWR0aCgpKS5maWxsKG5ldyB0YWJsZV9jZWxsXzEuVGFibGVDZWxsKCcnKSk7XG4gICAgICAgICAgICAgICAgYWx0ZXJlZCA9ICgwLCBmb3JtYXR0ZXJfMS5pbnNlcnRSb3cpKGFsdGVyZWQsIGFsdGVyZWQuZ2V0SGVpZ2h0KCksIG5ldyB0YWJsZV9yb3dfMS5UYWJsZVJvdyhyb3csICcnLCAnJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZm9ybWF0XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSAoMCwgZm9ybWF0dGVyXzEuZm9ybWF0VGFibGUpKGFsdGVyZWQsIG9wdGlvbnMpO1xuICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRPZmZzZXQoKDAsIGV4cG9ydHMuX2NvbXB1dGVOZXdPZmZzZXQpKG5ld0ZvY3VzLCBhbHRlcmVkLCBmb3JtYXR0ZWQsIHRydWUpKTtcbiAgICAgICAgICAgIC8vIGFwcGx5XG4gICAgICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnRyYW5zYWN0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVMaW5lcyhyYW5nZS5zdGFydC5yb3csIHJhbmdlLmVuZC5yb3cgKyAxLCBmb3JtYXR0ZWQudGFibGUudG9MaW5lcygpLCBsaW5lcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0Rm9jdXMocmFuZ2Uuc3RhcnQucm93LCBmb3JtYXR0ZWQudGFibGUsIG5ld0ZvY3VzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuc21hcnRDdXJzb3IpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3NjQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFjdGl2YXRlIHNtYXJ0IGN1cnNvclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zY0FjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NjVGFibGVQb3MgPSByYW5nZS5zdGFydDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0Rm9jdXMuY29sdW1uIDwgMCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkLnRhYmxlLmdldEhlYWRlcldpZHRoKCkgLSAxIDwgc3RhcnRGb2N1cy5jb2x1bW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NjU3RhcnRGb2N1cyA9IG5ldyBmb2N1c18xLkZvY3VzKHN0YXJ0Rm9jdXMucm93LCAwLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NjU3RhcnRGb2N1cyA9IHN0YXJ0Rm9jdXM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5fc2NMYXN0Rm9jdXMgPSBuZXdGb2N1cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEluc2VydHMgYW4gZW1wdHkgcm93IGF0IHRoZSBjdXJyZW50IGZvY3VzLlxuICAgICAqL1xuICAgIGluc2VydFJvdyhvcHRpb25zKSB7XG4gICAgICAgIHRoaXMud2l0aENvbXBsZXRlZFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgZm9ybXVsYUxpbmVzLCB0YWJsZSwgZm9jdXMgfSkgPT4ge1xuICAgICAgICAgICAgbGV0IG5ld0ZvY3VzID0gZm9jdXM7XG4gICAgICAgICAgICAvLyBtb3ZlIGZvY3VzXG4gICAgICAgICAgICBpZiAobmV3Rm9jdXMucm93IDw9IDEpIHtcbiAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldFJvdygyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Q29sdW1uKDApO1xuICAgICAgICAgICAgLy8gaW5zZXJ0IGFuIGVtcHR5IHJvd1xuICAgICAgICAgICAgY29uc3Qgcm93ID0gbmV3IEFycmF5KHRhYmxlLmdldEhlYWRlcldpZHRoKCkpLmZpbGwobmV3IHRhYmxlX2NlbGxfMS5UYWJsZUNlbGwoJycpKTtcbiAgICAgICAgICAgIGNvbnN0IGFsdGVyZWQgPSAoMCwgZm9ybWF0dGVyXzEuaW5zZXJ0Um93KSh0YWJsZSwgbmV3Rm9jdXMucm93LCBuZXcgdGFibGVfcm93XzEuVGFibGVSb3cocm93LCAnJywgJycpKTtcbiAgICAgICAgICAgIHRoaXMuZm9ybWF0QW5kQXBwbHkob3B0aW9ucywgcmFuZ2UsIGxpbmVzLCBmb3JtdWxhTGluZXMsIGFsdGVyZWQsIG5ld0ZvY3VzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIERlbGV0ZXMgYSByb3cgYXQgdGhlIGN1cnJlbnQgZm9jdXMuXG4gICAgICovXG4gICAgZGVsZXRlUm93KG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy53aXRoQ29tcGxldGVkVGFibGUob3B0aW9ucywgKHsgcmFuZ2UsIGxpbmVzLCBmb3JtdWxhTGluZXMsIHRhYmxlLCBmb2N1cyB9KSA9PiB7XG4gICAgICAgICAgICBsZXQgbmV3Rm9jdXMgPSBmb2N1cztcbiAgICAgICAgICAgIC8vIGRlbGV0ZSBhIHJvd1xuICAgICAgICAgICAgbGV0IGFsdGVyZWQgPSB0YWJsZTtcbiAgICAgICAgICAgIGxldCBtb3ZlZCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKG5ld0ZvY3VzLnJvdyAhPT0gMSkge1xuICAgICAgICAgICAgICAgIGFsdGVyZWQgPSAoMCwgZm9ybWF0dGVyXzEuZGVsZXRlUm93KShhbHRlcmVkLCBuZXdGb2N1cy5yb3cpO1xuICAgICAgICAgICAgICAgIG1vdmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAobmV3Rm9jdXMucm93ID4gYWx0ZXJlZC5nZXRIZWlnaHQoKSAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRSb3cobmV3Rm9jdXMucm93ID09PSAyID8gMCA6IG5ld0ZvY3VzLnJvdyAtIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZm9ybWF0QW5kQXBwbHkob3B0aW9ucywgcmFuZ2UsIGxpbmVzLCBmb3JtdWxhTGluZXMsIGFsdGVyZWQsIG5ld0ZvY3VzLCBtb3ZlZCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBNb3ZlcyB0aGUgZm9jdXNlZCByb3cgYnkgdGhlIHNwZWNpZmllZCBvZmZzZXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb2Zmc2V0IC0gQW4gb2Zmc2V0IHRoZSByb3cgaXMgbW92ZWQgYnkuXG4gICAgICovXG4gICAgbW92ZVJvdyhvZmZzZXQsIG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy53aXRoQ29tcGxldGVkVGFibGUob3B0aW9ucywgKHsgcmFuZ2UsIGxpbmVzLCBmb3JtdWxhTGluZXMsIHRhYmxlLCBmb2N1cyB9KSA9PiB7XG4gICAgICAgICAgICBsZXQgbmV3Rm9jdXMgPSBmb2N1cztcbiAgICAgICAgICAgIC8vIG1vdmUgcm93XG4gICAgICAgICAgICBsZXQgYWx0ZXJlZCA9IHRhYmxlO1xuICAgICAgICAgICAgaWYgKG5ld0ZvY3VzLnJvdyA+IDEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZXN0ID0gTWF0aC5taW4oTWF0aC5tYXgobmV3Rm9jdXMucm93ICsgb2Zmc2V0LCAyKSwgYWx0ZXJlZC5nZXRIZWlnaHQoKSAtIDEpO1xuICAgICAgICAgICAgICAgIGFsdGVyZWQgPSAoMCwgZm9ybWF0dGVyXzEubW92ZVJvdykoYWx0ZXJlZCwgbmV3Rm9jdXMucm93LCBkZXN0KTtcbiAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldFJvdyhkZXN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZm9ybWF0QW5kQXBwbHkob3B0aW9ucywgcmFuZ2UsIGxpbmVzLCBmb3JtdWxhTGluZXMsIGFsdGVyZWQsIG5ld0ZvY3VzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGV2YWx1YXRlRm9ybXVsYXMob3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoQ29tcGxldGVkVGFibGUob3B0aW9ucywgKHsgcmFuZ2UsIGxpbmVzLCBmb3JtdWxhTGluZXMsIHRhYmxlLCBmb2N1cywgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGFibGUuYXBwbHlGb3JtdWxhcyhmb3JtdWxhTGluZXMpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0VycigpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5lcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHsgdGFibGU6IGZvcm1hdHRlZFRhYmxlLCBmb2N1czogbmV3Rm9jdXMgfSA9IHRoaXMuZm9ybWF0QW5kQXBwbHkob3B0aW9ucywgcmFuZ2UsIGxpbmVzLCBmb3JtdWxhTGluZXMsIHJlc3VsdC52YWx1ZSwgZm9jdXMsIGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNvcnRzIHJvd3MgYWxwaGFudW1lcmljYWxseSB1c2luZyB0aGUgY29sdW1uIGF0IHRoZSBjdXJyZW50IGZvY3VzLlxuICAgICAqIElmIGFsbCBjZWxscyBpbiB0aGUgc29ydGluZyBjb2x1bW4gYXJlIG51bWJlcnMsIHRoZSBjb2x1bW4gaXMgc29ydGVkXG4gICAgICogbnVtZXJpY2FsbHkuXG4gICAgICovXG4gICAgc29ydFJvd3Moc29ydE9yZGVyLCBvcHRpb25zKSB7XG4gICAgICAgIHRoaXMud2l0aENvbXBsZXRlZFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgZm9ybXVsYUxpbmVzLCB0YWJsZSwgZm9jdXMgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYm9keVJvd3MgPSB0YWJsZS5nZXRSb3dzKCkuc2xpY2UoMik7XG4gICAgICAgICAgICBjb25zdCBpc051bWJlciA9IChzKSA9PiAvXlxccypbLStdPygoXFxkKyhcXC5cXGQrKT8pfChcXGQrXFwuKXwoXFwuXFxkKykpKFtlRV1bLStdP1xcZCspP1xccyokLy50ZXN0KHMpO1xuICAgICAgICAgICAgY29uc3Qgbm90QWxsTnVtcyA9IGJvZHlSb3dzXG4gICAgICAgICAgICAgICAgLm1hcCgocm93KSA9PiB7IHZhciBfYTsgcmV0dXJuIChfYSA9IHJvdy5nZXRDZWxsQXQoZm9jdXMuY29sdW1uKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNvbnRlbnQ7IH0pXG4gICAgICAgICAgICAgICAgLnNvbWUoKGNlbGwpID0+IGNlbGwgIT09IHVuZGVmaW5lZCAmJiBjZWxsICE9PSAnJyAmJiAhaXNOdW1iZXIoY2VsbCkpO1xuICAgICAgICAgICAgYm9keVJvd3Muc29ydCgocm93QSwgcm93QikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxBID0gcm93QS5nZXRDZWxsQXQoZm9jdXMuY29sdW1uKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjZWxsQiA9IHJvd0IuZ2V0Q2VsbEF0KGZvY3VzLmNvbHVtbik7XG4gICAgICAgICAgICAgICAgaWYgKGNlbGxBID09PSB1bmRlZmluZWQgfHwgY2VsbEEuY29udGVudCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxCID09PSB1bmRlZmluZWQgfHwgY2VsbEIuY29udGVudCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2VsbEIgPT09IHVuZGVmaW5lZCB8fCBjZWxsQi5jb250ZW50ID09PSAnJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudEEgPSBub3RBbGxOdW1zXG4gICAgICAgICAgICAgICAgICAgID8gY2VsbEEuY29udGVudC5yZXBsYWNlKC9bKn5fJF0vZywgJycpXG4gICAgICAgICAgICAgICAgICAgIDogcGFyc2VGbG9hdChjZWxsQS5jb250ZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50QiA9IG5vdEFsbE51bXNcbiAgICAgICAgICAgICAgICAgICAgPyBjZWxsQi5jb250ZW50LnJlcGxhY2UoL1sqfl8kXS9nLCAnJylcbiAgICAgICAgICAgICAgICAgICAgOiBwYXJzZUZsb2F0KGNlbGxCLmNvbnRlbnQpO1xuICAgICAgICAgICAgICAgIGlmIChjb250ZW50QSA9PT0gY29udGVudEIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRlbnRBID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjb250ZW50QiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudEEgPCBjb250ZW50QiA/IC0xIDogMTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHNvcnRPcmRlciA9PT0gU29ydE9yZGVyLkRlc2NlbmRpbmcpIHtcbiAgICAgICAgICAgICAgICBib2R5Um93cy5yZXZlcnNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhbGxSb3dzID0gdGFibGUuZ2V0Um93cygpLnNsaWNlKDAsIDIpLmNvbmNhdChib2R5Um93cyk7XG4gICAgICAgICAgICBjb25zdCBuZXdUYWJsZSA9IG5ldyB0YWJsZV8xLlRhYmxlKGFsbFJvd3MpO1xuICAgICAgICAgICAgY29uc3QgeyB0YWJsZTogZm9ybWF0dGVkVGFibGUsIGZvY3VzOiBuZXdGb2N1cyB9ID0gdGhpcy5mb3JtYXRBbmRBcHBseShvcHRpb25zLCByYW5nZSwgbGluZXMsIGZvcm11bGFMaW5lcywgbmV3VGFibGUsIGZvY3VzLCB0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuX21vdmVUb0ZvY3VzKHJhbmdlLnN0YXJ0LnJvdywgZm9ybWF0dGVkVGFibGUsIG5ld0ZvY3VzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEluc2VydHMgYW4gZW1wdHkgY29sdW1uIGF0IHRoZSBjdXJyZW50IGZvY3VzLlxuICAgICAqL1xuICAgIGluc2VydENvbHVtbihvcHRpb25zKSB7XG4gICAgICAgIHRoaXMud2l0aENvbXBsZXRlZFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgZm9ybXVsYUxpbmVzLCB0YWJsZSwgZm9jdXMgfSkgPT4ge1xuICAgICAgICAgICAgbGV0IG5ld0ZvY3VzID0gZm9jdXM7XG4gICAgICAgICAgICAvLyBtb3ZlIGZvY3VzXG4gICAgICAgICAgICBpZiAobmV3Rm9jdXMucm93ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRSb3coMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobmV3Rm9jdXMuY29sdW1uIDwgMCkge1xuICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Q29sdW1uKDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaW5zZXJ0IGFuIGVtcHR5IGNvbHVtblxuICAgICAgICAgICAgY29uc3QgY29sdW1uID0gbmV3IEFycmF5KHRhYmxlLmdldEhlaWdodCgpIC0gMSkuZmlsbChuZXcgdGFibGVfY2VsbF8xLlRhYmxlQ2VsbCgnJykpO1xuICAgICAgICAgICAgY29uc3QgYWx0ZXJlZCA9ICgwLCBmb3JtYXR0ZXJfMS5pbnNlcnRDb2x1bW4pKHRhYmxlLCBuZXdGb2N1cy5jb2x1bW4sIGNvbHVtbiwgb3B0aW9ucyk7XG4gICAgICAgICAgICB0aGlzLmZvcm1hdEFuZEFwcGx5KG9wdGlvbnMsIHJhbmdlLCBsaW5lcywgZm9ybXVsYUxpbmVzLCBhbHRlcmVkLCBuZXdGb2N1cyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZWxldGVzIGEgY29sdW1uIGF0IHRoZSBjdXJyZW50IGZvY3VzLlxuICAgICAqL1xuICAgIGRlbGV0ZUNvbHVtbihvcHRpb25zKSB7XG4gICAgICAgIHRoaXMud2l0aENvbXBsZXRlZFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgZm9ybXVsYUxpbmVzLCB0YWJsZSwgZm9jdXMgfSkgPT4ge1xuICAgICAgICAgICAgbGV0IG5ld0ZvY3VzID0gZm9jdXM7XG4gICAgICAgICAgICAvLyBtb3ZlIGZvY3VzXG4gICAgICAgICAgICBpZiAobmV3Rm9jdXMucm93ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRSb3coMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBkZWxldGUgYSBjb2x1bW5cbiAgICAgICAgICAgIGxldCBhbHRlcmVkID0gdGFibGU7XG4gICAgICAgICAgICBsZXQgbW92ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICgwIDw9IG5ld0ZvY3VzLmNvbHVtbiAmJlxuICAgICAgICAgICAgICAgIG5ld0ZvY3VzLmNvbHVtbiA8PSBhbHRlcmVkLmdldEhlYWRlcldpZHRoKCkgLSAxKSB7XG4gICAgICAgICAgICAgICAgYWx0ZXJlZCA9ICgwLCBmb3JtYXR0ZXJfMS5kZWxldGVDb2x1bW4pKHRhYmxlLCBuZXdGb2N1cy5jb2x1bW4sIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIG1vdmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAobmV3Rm9jdXMuY29sdW1uID4gYWx0ZXJlZC5nZXRIZWFkZXJXaWR0aCgpIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldENvbHVtbihhbHRlcmVkLmdldEhlYWRlcldpZHRoKCkgLSAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmZvcm1hdEFuZEFwcGx5KG9wdGlvbnMsIHJhbmdlLCBsaW5lcywgZm9ybXVsYUxpbmVzLCBhbHRlcmVkLCBuZXdGb2N1cywgbW92ZWQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTW92ZXMgdGhlIGZvY3VzZWQgY29sdW1uIGJ5IHRoZSBzcGVjaWZpZWQgb2Zmc2V0LlxuICAgICAqXG4gICAgICogQHBhcmFtIG9mZnNldCAtIEFuIG9mZnNldCB0aGUgY29sdW1uIGlzIG1vdmVkIGJ5LlxuICAgICAqL1xuICAgIG1vdmVDb2x1bW4ob2Zmc2V0LCBvcHRpb25zKSB7XG4gICAgICAgIHRoaXMud2l0aENvbXBsZXRlZFRhYmxlKG9wdGlvbnMsICh7IHJhbmdlLCBsaW5lcywgZm9ybXVsYUxpbmVzLCB0YWJsZSwgZm9jdXMgfSkgPT4ge1xuICAgICAgICAgICAgbGV0IG5ld0ZvY3VzID0gZm9jdXM7XG4gICAgICAgICAgICAvLyBtb3ZlIGNvbHVtblxuICAgICAgICAgICAgbGV0IGFsdGVyZWQgPSB0YWJsZTtcbiAgICAgICAgICAgIGlmICgwIDw9IG5ld0ZvY3VzLmNvbHVtbiAmJlxuICAgICAgICAgICAgICAgIG5ld0ZvY3VzLmNvbHVtbiA8PSBhbHRlcmVkLmdldEhlYWRlcldpZHRoKCkgLSAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVzdCA9IE1hdGgubWluKE1hdGgubWF4KG5ld0ZvY3VzLmNvbHVtbiArIG9mZnNldCwgMCksIGFsdGVyZWQuZ2V0SGVhZGVyV2lkdGgoKSAtIDEpO1xuICAgICAgICAgICAgICAgIGFsdGVyZWQgPSAoMCwgZm9ybWF0dGVyXzEubW92ZUNvbHVtbikoYWx0ZXJlZCwgbmV3Rm9jdXMuY29sdW1uLCBkZXN0KTtcbiAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldENvbHVtbihkZXN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZm9ybWF0QW5kQXBwbHkob3B0aW9ucywgcmFuZ2UsIGxpbmVzLCBmb3JtdWxhTGluZXMsIGFsdGVyZWQsIG5ld0ZvY3VzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEZvcm1hdHMgYWxsIHRoZSB0YWJsZXMgaW4gdGhlIHRleHQgZWRpdG9yLlxuICAgICAqL1xuICAgIGZvcm1hdEFsbChvcHRpb25zKSB7XG4gICAgICAgIHRoaXMuX3RleHRFZGl0b3IudHJhbnNhY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmUgPSAoMCwgZXhwb3J0cy5fY3JlYXRlSXNUYWJsZVJvd1JlZ2V4KShvcHRpb25zLmxlZnRNYXJnaW5DaGFycyk7XG4gICAgICAgICAgICBsZXQgcG9zID0gdGhpcy5fdGV4dEVkaXRvci5nZXRDdXJzb3JQb3NpdGlvbigpO1xuICAgICAgICAgICAgbGV0IGxpbmVzID0gW107XG4gICAgICAgICAgICBsZXQgc3RhcnRSb3cgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBsZXQgbGFzdFJvdyA9IHRoaXMuX3RleHRFZGl0b3IuZ2V0TGFzdFJvdygpO1xuICAgICAgICAgICAgLy8gZmluZCB0YWJsZXNcbiAgICAgICAgICAgIGZvciAobGV0IHJvdyA9IDA7IHJvdyA8PSBsYXN0Um93OyByb3crKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmUgPSB0aGlzLl90ZXh0RWRpdG9yLmdldExpbmUocm93KTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdGV4dEVkaXRvci5hY2NlcHRzVGFibGVFZGl0KHJvdykgJiYgcmUudGVzdChsaW5lKSkge1xuICAgICAgICAgICAgICAgICAgICBsaW5lcy5wdXNoKGxpbmUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRSb3cgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRSb3cgPSByb3c7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc3RhcnRSb3cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBnZXQgdGFibGUgaW5mb1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbmRSb3cgPSByb3cgLSAxO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByYW5nZSA9IG5ldyByYW5nZV8xLlJhbmdlKG5ldyBwb2ludF8xLlBvaW50KHN0YXJ0Um93LCAwKSwgbmV3IHBvaW50XzEuUG9pbnQoZW5kUm93LCBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5sZW5ndGgpKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gZm9ybXVsYUxpbmVzIGVtcHR5IGJlY2F1c2UgZm9ybWF0dGluZyBkb2VzIG5vdCBpbnZvbHZlIGZvcm11bGFzXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhYmxlID0gKDAsIHBhcnNlcl8xLnJlYWRUYWJsZSkobGluZXMsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmb2N1cyA9IHRhYmxlLmZvY3VzT2ZQb3NpdGlvbihwb3MsIHN0YXJ0Um93KTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRpZmY7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmb2N1cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3JtYXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdGb2N1cyA9IGZvY3VzO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcGxldGVkID0gKDAsIGZvcm1hdHRlcl8xLmNvbXBsZXRlVGFibGUpKHRhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb21wbGV0ZWQuZGVsaW1pdGVySW5zZXJ0ZWQgJiYgbmV3Rm9jdXMucm93ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0ZvY3VzID0gbmV3Rm9jdXMuc2V0Um93KG5ld0ZvY3VzLnJvdyArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gKDAsIGZvcm1hdHRlcl8xLmZvcm1hdFRhYmxlKShjb21wbGV0ZWQudGFibGUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRPZmZzZXQoKDAsIGV4cG9ydHMuX2NvbXB1dGVOZXdPZmZzZXQpKG5ld0ZvY3VzLCBjb21wbGV0ZWQudGFibGUsIGZvcm1hdHRlZCwgZmFsc2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcGx5XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdMaW5lcyA9IGZvcm1hdHRlZC50YWJsZS50b0xpbmVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVMaW5lcyhyYW5nZS5zdGFydC5yb3csIHJhbmdlLmVuZC5yb3cgKyAxLCBuZXdMaW5lcywgbGluZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXBkYXRlIGN1cnNvciBwb3NpdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgZGlmZiA9IG5ld0xpbmVzLmxlbmd0aCAtIGxpbmVzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IGZvcm1hdHRlZC50YWJsZS5wb3NpdGlvbk9mRm9jdXMobmV3Rm9jdXMsIHN0YXJ0Um93KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvcm1hdFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcGxldGVkID0gKDAsIGZvcm1hdHRlcl8xLmNvbXBsZXRlVGFibGUpKHRhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9ICgwLCBmb3JtYXR0ZXJfMS5mb3JtYXRUYWJsZSkoY29tcGxldGVkLnRhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcGx5XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdMaW5lcyA9IGZvcm1hdHRlZC50YWJsZS50b0xpbmVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVMaW5lcyhyYW5nZS5zdGFydC5yb3csIHJhbmdlLmVuZC5yb3cgKyAxLCBuZXdMaW5lcywgbGluZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXBkYXRlIGN1cnNvciBwb3NpdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgZGlmZiA9IG5ld0xpbmVzLmxlbmd0aCAtIGxpbmVzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3Mucm93ID4gZW5kUm93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gbmV3IHBvaW50XzEuUG9pbnQocG9zLnJvdyArIGRpZmYsIHBvcy5jb2x1bW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0XG4gICAgICAgICAgICAgICAgICAgIGxpbmVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0Um93ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGVcbiAgICAgICAgICAgICAgICAgICAgbGFzdFJvdyArPSBkaWZmO1xuICAgICAgICAgICAgICAgICAgICByb3cgKz0gZGlmZjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RhcnRSb3cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIC8vIGdldCB0YWJsZSBpbmZvXG4gICAgICAgICAgICAgICAgY29uc3QgZW5kUm93ID0gbGFzdFJvdztcbiAgICAgICAgICAgICAgICBjb25zdCByYW5nZSA9IG5ldyByYW5nZV8xLlJhbmdlKG5ldyBwb2ludF8xLlBvaW50KHN0YXJ0Um93LCAwKSwgbmV3IHBvaW50XzEuUG9pbnQoZW5kUm93LCBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5sZW5ndGgpKTtcbiAgICAgICAgICAgICAgICAvLyBmb3JtdWxhTGluZXMgZW1wdHkgYmVjYXVzZSBmb3JtYXR0aW5nIGRvZXMgbm90IGludm9sdmUgZm9ybXVsYXNcbiAgICAgICAgICAgICAgICBjb25zdCB0YWJsZSA9ICgwLCBwYXJzZXJfMS5yZWFkVGFibGUpKGxpbmVzLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmb2N1cyA9IHRhYmxlLmZvY3VzT2ZQb3NpdGlvbihwb3MsIHN0YXJ0Um93KTtcbiAgICAgICAgICAgICAgICAvLyBmb3JtYXRcbiAgICAgICAgICAgICAgICBsZXQgbmV3Rm9jdXMgPSBmb2N1cztcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wbGV0ZWQgPSAoMCwgZm9ybWF0dGVyXzEuY29tcGxldGVUYWJsZSkodGFibGUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ET1xuICAgICAgICAgICAgICAgIGlmIChjb21wbGV0ZWQuZGVsaW1pdGVySW5zZXJ0ZWQgJiYgbmV3Rm9jdXMucm93ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE9cbiAgICAgICAgICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRSb3cobmV3Rm9jdXMucm93ICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9ICgwLCBmb3JtYXR0ZXJfMS5mb3JtYXRUYWJsZSkoY29tcGxldGVkLnRhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE9cbiAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldE9mZnNldChcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE9cbiAgICAgICAgICAgICAgICAoMCwgZXhwb3J0cy5fY29tcHV0ZU5ld09mZnNldCkobmV3Rm9jdXMsIGNvbXBsZXRlZC50YWJsZSwgZm9ybWF0dGVkLCBmYWxzZSkpO1xuICAgICAgICAgICAgICAgIC8vIGFwcGx5XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3TGluZXMgPSBmb3JtYXR0ZWQudGFibGUudG9MaW5lcygpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxpbmVzKHJhbmdlLnN0YXJ0LnJvdywgcmFuZ2UuZW5kLnJvdyArIDEsIG5ld0xpbmVzLCBsaW5lcyk7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPXG4gICAgICAgICAgICAgICAgcG9zID0gZm9ybWF0dGVkLnRhYmxlLnBvc2l0aW9uT2ZGb2N1cyhuZXdGb2N1cywgc3RhcnRSb3cpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5zZXRDdXJzb3JQb3NpdGlvbihwb3MpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRXhwb3J0cyB0aGUgdGFibGUgYXMgYSB0d28gZGltZW5zaW9uYWwgc3RyaW5nIGFycmF5XG4gICAgICovXG4gICAgZXhwb3J0VGFibGUod2l0aHRIZWFkZXJzLCBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhDb21wbGV0ZWRUYWJsZShvcHRpb25zLCAoeyByYW5nZSwgbGluZXMsIGZvcm11bGFMaW5lcywgdGFibGUsIGZvY3VzIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJvZHlSb3dzID0gdGFibGUuZ2V0Um93cygpO1xuICAgICAgICAgICAgaWYgKGJvZHlSb3dzLmxlbmd0aCA+IDAgJiYgIXdpdGh0SGVhZGVycykge1xuICAgICAgICAgICAgICAgIGJvZHlSb3dzLnNwbGljZSgwLCAyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGVsc2UgaWYoYm9keVJvd3MubGVuZ3RoID4gMSkgYm9keVJvd3Muc3BsaWNlKDEsIDEpO1xuICAgICAgICAgICAgcmV0dXJuIGJvZHlSb3dzLm1hcCgocm93KSA9PiByb3cuZ2V0Q2VsbHMoKS5tYXAoKGNlbGwpID0+IGNlbGwuY29udGVudCkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRXhwb3J0cyB0aGUgdGFibGUgYXMgYSB0d28gZGltZW5zaW9uYWwgc3RyaW5nIGFycmF5XG4gICAgICovXG4gICAgZXhwb3J0Q1NWKHdpdGh0SGVhZGVycywgb3B0aW9ucykge1xuICAgICAgICBjb25zdCByID0gdGhpcy5leHBvcnRUYWJsZSh3aXRodEhlYWRlcnMsIG9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gIXIgPyB1bmRlZmluZWQgOiByLm1hcCgocm93KSA9PiByb3cuam9pbignXFx0JykpLmpvaW4oJ1xcbicpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBGaW5kcyBhIHRhYmxlLCBjb21wbGV0ZXMgaXQsIHRoZW4gZG9lcyBhbiBvcGVyYXRpb24gd2l0aCBpdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmdW5jIC0gQSBmdW5jdGlvbiB0aGF0IGRvZXMgc29tZSBvcGVyYXRpb24gb24gdGFibGUgaW5mb3JtYXRpb24gb2J0YWluZWQgYnlcbiAgICAgKiB7QGxpbmsgVGFibGVFZGl0b3IjX2ZpbmRUYWJsZX0uXG4gICAgICovXG4gICAgd2l0aENvbXBsZXRlZFRhYmxlKG9wdGlvbnMsIGZ1bmMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dpdGhUYWJsZShvcHRpb25zLCAodGFibGVJbmZvKSA9PiB7XG4gICAgICAgICAgICBsZXQgbmV3Rm9jdXMgPSB0YWJsZUluZm8uZm9jdXM7XG4gICAgICAgICAgICAvLyBjb21wbGV0ZVxuICAgICAgICAgICAgY29uc3QgY29tcGxldGVkID0gKDAsIGZvcm1hdHRlcl8xLmNvbXBsZXRlVGFibGUpKHRhYmxlSW5mby50YWJsZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICBpZiAoY29tcGxldGVkLmRlbGltaXRlckluc2VydGVkICYmIG5ld0ZvY3VzLnJvdyA+IDApIHtcbiAgICAgICAgICAgICAgICBuZXdGb2N1cyA9IG5ld0ZvY3VzLnNldFJvdyhuZXdGb2N1cy5yb3cgKyAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGZvcm1hdFxuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gKDAsIGZvcm1hdHRlcl8xLmZvcm1hdFRhYmxlKShjb21wbGV0ZWQudGFibGUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRPZmZzZXQoKDAsIGV4cG9ydHMuX2NvbXB1dGVOZXdPZmZzZXQpKG5ld0ZvY3VzLCBjb21wbGV0ZWQudGFibGUsIGZvcm1hdHRlZCwgZmFsc2UpKTtcbiAgICAgICAgICAgIHRhYmxlSW5mby50YWJsZSA9IGZvcm1hdHRlZC50YWJsZTtcbiAgICAgICAgICAgIHRhYmxlSW5mby5mb2N1cyA9IG5ld0ZvY3VzO1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmModGFibGVJbmZvKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEZvcm1hdHMgdGhlIHRhYmxlIGFuZCBhcHBsaWVzIGFueSBjaGFuZ2VzIGJhc2VkIG9uIHRoZSBkaWZmZXJlbmNlIGJldHdlZW5cbiAgICAgKiBvcmlnaW5hbExpbmVzIGFuZCB0aGUgbmV3VGFibGUuIFNob3VsZCBnZW5lcmFsbHkgYmUgdGhlIGxhc3QgZnVuY3Rpb24gY2FsbFxuICAgICAqIGluIGEgVGFibGVFZGl0b3IgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZm9ybWF0QW5kQXBwbHkob3B0aW9ucywgcmFuZ2UsIG9yaWdpbmFsTGluZXMsIGZvcm11bGFMaW5lcywgbmV3VGFibGUsIG5ld0ZvY3VzLCBtb3ZlZCA9IGZhbHNlKSB7XG4gICAgICAgIC8vIGZvcm1hdFxuICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSAoMCwgZm9ybWF0dGVyXzEuZm9ybWF0VGFibGUpKG5ld1RhYmxlLCBvcHRpb25zKTtcbiAgICAgICAgbmV3Rm9jdXMgPSBuZXdGb2N1cy5zZXRPZmZzZXQoKDAsIGV4cG9ydHMuX2NvbXB1dGVOZXdPZmZzZXQpKG5ld0ZvY3VzLCBuZXdUYWJsZSwgZm9ybWF0dGVkLCBtb3ZlZCkpO1xuICAgICAgICAvLyBhcHBseVxuICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnRyYW5zYWN0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxpbmVzKHJhbmdlLnN0YXJ0LnJvdywgcmFuZ2UuZW5kLnJvdyArIDEsIGZvcm1hdHRlZC50YWJsZS50b0xpbmVzKCksIG9yaWdpbmFsTGluZXMpO1xuICAgICAgICAgICAgaWYgKG1vdmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0Rm9jdXMocmFuZ2Uuc3RhcnQucm93LCBmb3JtYXR0ZWQudGFibGUsIG5ld0ZvY3VzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX21vdmVUb0ZvY3VzKHJhbmdlLnN0YXJ0LnJvdywgZm9ybWF0dGVkLnRhYmxlLCBuZXdGb2N1cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlc2V0U21hcnRDdXJzb3IoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJhbmdlLFxuICAgICAgICAgICAgbGluZXM6IG9yaWdpbmFsTGluZXMsXG4gICAgICAgICAgICBmb3JtdWxhTGluZXMsXG4gICAgICAgICAgICB0YWJsZTogZm9ybWF0dGVkLnRhYmxlLFxuICAgICAgICAgICAgZm9jdXM6IG5ld0ZvY3VzLFxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydHMuVGFibGVFZGl0b3IgPSBUYWJsZUVkaXRvcjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Tb3J0T3JkZXIgPSBleHBvcnRzLlRhYmxlRWRpdG9yID0gZXhwb3J0cy5vcHRpb25zV2l0aERlZmF1bHRzID0gZXhwb3J0cy5kZWZhdWx0T3B0aW9ucyA9IGV4cG9ydHMuSVRleHRFZGl0b3IgPSBleHBvcnRzLnNob3J0ZXN0RWRpdFNjcmlwdCA9IGV4cG9ydHMuYXBwbHlFZGl0U2NyaXB0ID0gZXhwb3J0cy5EZWxldGUgPSBleHBvcnRzLkluc2VydCA9IGV4cG9ydHMubW92ZUNvbHVtbiA9IGV4cG9ydHMuZGVsZXRlQ29sdW1uID0gZXhwb3J0cy5pbnNlcnRDb2x1bW4gPSBleHBvcnRzLm1vdmVSb3cgPSBleHBvcnRzLmRlbGV0ZVJvdyA9IGV4cG9ydHMuaW5zZXJ0Um93ID0gZXhwb3J0cy5hbHRlckFsaWdubWVudCA9IGV4cG9ydHMuZm9ybWF0VGFibGUgPSBleHBvcnRzLmNvbXBsZXRlVGFibGUgPSBleHBvcnRzLkZvcm1hdFR5cGUgPSBleHBvcnRzLnJlYWRUYWJsZSA9IGV4cG9ydHMuVGFibGUgPSBleHBvcnRzLlRhYmxlUm93ID0gZXhwb3J0cy5UYWJsZUNlbGwgPSBleHBvcnRzLkhlYWRlckFsaWdubWVudCA9IGV4cG9ydHMuRGVmYXVsdEFsaWdubWVudCA9IGV4cG9ydHMuQWxpZ25tZW50ID0gZXhwb3J0cy5Gb2N1cyA9IGV4cG9ydHMuUmFuZ2UgPSBleHBvcnRzLlBvaW50ID0gdm9pZCAwO1xudmFyIHBvaW50XzEgPSByZXF1aXJlKFwiLi9wb2ludFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlBvaW50XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBwb2ludF8xLlBvaW50OyB9IH0pO1xudmFyIHJhbmdlXzEgPSByZXF1aXJlKFwiLi9yYW5nZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJhbmdlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiByYW5nZV8xLlJhbmdlOyB9IH0pO1xudmFyIGZvY3VzXzEgPSByZXF1aXJlKFwiLi9mb2N1c1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkZvY3VzXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBmb2N1c18xLkZvY3VzOyB9IH0pO1xudmFyIGFsaWdubWVudF8xID0gcmVxdWlyZShcIi4vYWxpZ25tZW50XCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQWxpZ25tZW50XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBhbGlnbm1lbnRfMS5BbGlnbm1lbnQ7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEZWZhdWx0QWxpZ25tZW50XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBhbGlnbm1lbnRfMS5EZWZhdWx0QWxpZ25tZW50OyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiSGVhZGVyQWxpZ25tZW50XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBhbGlnbm1lbnRfMS5IZWFkZXJBbGlnbm1lbnQ7IH0gfSk7XG52YXIgdGFibGVfY2VsbF8xID0gcmVxdWlyZShcIi4vdGFibGUtY2VsbFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRhYmxlQ2VsbFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGFibGVfY2VsbF8xLlRhYmxlQ2VsbDsgfSB9KTtcbnZhciB0YWJsZV9yb3dfMSA9IHJlcXVpcmUoXCIuL3RhYmxlLXJvd1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRhYmxlUm93XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0YWJsZV9yb3dfMS5UYWJsZVJvdzsgfSB9KTtcbnZhciB0YWJsZV8xID0gcmVxdWlyZShcIi4vdGFibGVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUYWJsZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGFibGVfMS5UYWJsZTsgfSB9KTtcbnZhciBwYXJzZXJfMSA9IHJlcXVpcmUoXCIuL3BhcnNlclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInJlYWRUYWJsZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gcGFyc2VyXzEucmVhZFRhYmxlOyB9IH0pO1xudmFyIGZvcm1hdHRlcl9qc18xID0gcmVxdWlyZShcIi4vZm9ybWF0dGVyLmpzXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiRm9ybWF0VHlwZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9ybWF0dGVyX2pzXzEuRm9ybWF0VHlwZTsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImNvbXBsZXRlVGFibGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZvcm1hdHRlcl9qc18xLmNvbXBsZXRlVGFibGU7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJmb3JtYXRUYWJsZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9ybWF0dGVyX2pzXzEuZm9ybWF0VGFibGU7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJhbHRlckFsaWdubWVudFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9ybWF0dGVyX2pzXzEuYWx0ZXJBbGlnbm1lbnQ7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJpbnNlcnRSb3dcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZvcm1hdHRlcl9qc18xLmluc2VydFJvdzsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlbGV0ZVJvd1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9ybWF0dGVyX2pzXzEuZGVsZXRlUm93OyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibW92ZVJvd1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9ybWF0dGVyX2pzXzEubW92ZVJvdzsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImluc2VydENvbHVtblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9ybWF0dGVyX2pzXzEuaW5zZXJ0Q29sdW1uOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGVsZXRlQ29sdW1uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBmb3JtYXR0ZXJfanNfMS5kZWxldGVDb2x1bW47IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJtb3ZlQ29sdW1uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBmb3JtYXR0ZXJfanNfMS5tb3ZlQ29sdW1uOyB9IH0pO1xudmFyIGVkaXRfc2NyaXB0XzEgPSByZXF1aXJlKFwiLi9lZGl0LXNjcmlwdFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkluc2VydFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZWRpdF9zY3JpcHRfMS5JbnNlcnQ7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEZWxldGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGVkaXRfc2NyaXB0XzEuRGVsZXRlOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiYXBwbHlFZGl0U2NyaXB0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBlZGl0X3NjcmlwdF8xLmFwcGx5RWRpdFNjcmlwdDsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInNob3J0ZXN0RWRpdFNjcmlwdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZWRpdF9zY3JpcHRfMS5zaG9ydGVzdEVkaXRTY3JpcHQ7IH0gfSk7XG52YXIgdGV4dF9lZGl0b3JfMSA9IHJlcXVpcmUoXCIuL3RleHQtZWRpdG9yXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiSVRleHRFZGl0b3JcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRleHRfZWRpdG9yXzEuSVRleHRFZGl0b3I7IH0gfSk7XG52YXIgb3B0aW9uc18xID0gcmVxdWlyZShcIi4vb3B0aW9uc1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlZmF1bHRPcHRpb25zXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBvcHRpb25zXzEuZGVmYXVsdE9wdGlvbnM7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJvcHRpb25zV2l0aERlZmF1bHRzXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBvcHRpb25zXzEub3B0aW9uc1dpdGhEZWZhdWx0czsgfSB9KTtcbnZhciB0YWJsZV9lZGl0b3JfMSA9IHJlcXVpcmUoXCIuL3RhYmxlLWVkaXRvclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRhYmxlRWRpdG9yXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0YWJsZV9lZGl0b3JfMS5UYWJsZUVkaXRvcjsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlNvcnRPcmRlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGFibGVfZWRpdG9yXzEuU29ydE9yZGVyOyB9IH0pO1xuIiwiaW1wb3J0IHtcbiAgRm9ybWF0VHlwZSxcbiAgT3B0aW9ucyxcbiAgb3B0aW9uc1dpdGhEZWZhdWx0cyxcbn0gZnJvbSAnQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzJztcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRTZXR0aW5nczogUGFydGlhbDxJU2V0dGluZ3M+ID0ge1xuICBmb3JtYXRUeXBlOiBGb3JtYXRUeXBlLk5PUk1BTCxcbiAgc2hvd1JpYmJvbkljb246IHRydWUsXG4gIGJpbmRFbnRlcjogdHJ1ZSxcbiAgYmluZFRhYjogdHJ1ZSxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNldHRpbmdzIHtcbiAgZm9ybWF0VHlwZTogRm9ybWF0VHlwZTtcbiAgc2hvd1JpYmJvbkljb246IGJvb2xlYW47XG4gIGJpbmRFbnRlcjogYm9vbGVhbjtcbiAgYmluZFRhYjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxlRWRpdG9yUGx1Z2luU2V0dGluZ3MgaW1wbGVtZW50cyBJU2V0dGluZ3Mge1xuICBwdWJsaWMgZm9ybWF0VHlwZTogRm9ybWF0VHlwZTtcbiAgcHVibGljIHNob3dSaWJib25JY29uOiBib29sZWFuO1xuXG4gIHB1YmxpYyBiaW5kRW50ZXI6IGJvb2xlYW47XG4gIHB1YmxpYyBiaW5kVGFiOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKGxvYWRlZERhdGE6IFBhcnRpYWw8SVNldHRpbmdzPikge1xuICAgIGNvbnN0IGFsbEZpZWxkcyA9IHsgLi4uZGVmYXVsdFNldHRpbmdzLCAuLi5sb2FkZWREYXRhIH07XG4gICAgdGhpcy5mb3JtYXRUeXBlID0gYWxsRmllbGRzLmZvcm1hdFR5cGU7XG4gICAgdGhpcy5zaG93UmliYm9uSWNvbiA9IGFsbEZpZWxkcy5zaG93UmliYm9uSWNvbjtcbiAgICB0aGlzLmJpbmRFbnRlciA9IGFsbEZpZWxkcy5iaW5kRW50ZXI7XG4gICAgdGhpcy5iaW5kVGFiID0gYWxsRmllbGRzLmJpbmRUYWI7XG4gIH1cblxuICBwdWJsaWMgYXNPcHRpb25zKCk6IE9wdGlvbnMge1xuICAgIHJldHVybiBvcHRpb25zV2l0aERlZmF1bHRzKHsgZm9ybWF0VHlwZTogdGhpcy5mb3JtYXRUeXBlIH0pO1xuICB9XG59XG4iLCJpbXBvcnQgeyBQb2ludCwgUmFuZ2UgfSBmcm9tICdAdGdyb3Npbmdlci9tZC1hZHZhbmNlZC10YWJsZXMnO1xuaW1wb3J0IHsgQXBwLCBFZGl0b3IsIFRGaWxlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG4vKipcbiAqIE9ic2lkaWFuVGV4dEVkaXRvciBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSVRleHRFZGl0b3IgaW50ZXJmYWNlIGZyb21cbiAqIHRoZSBtdGUta2VybmVsIGxpYnJhcnkuIEl0IHRlYWNoZXMgdGhlIHRhYmxlIGVkaXRvciBsaWJyYXJ5IGhvdyB0byBpbnRlcmZhY2VcbiAqIHdpdGggT2JzaWRpYW4uXG4gKi9cbmV4cG9ydCBjbGFzcyBPYnNpZGlhblRleHRFZGl0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IGFwcDogQXBwO1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbGU6IFRGaWxlO1xuICBwcml2YXRlIHJlYWRvbmx5IGVkaXRvcjogRWRpdG9yO1xuXG4gIGNvbnN0cnVjdG9yKGFwcDogQXBwLCBmaWxlOiBURmlsZSwgZWRpdG9yOiBFZGl0b3IpIHtcbiAgICB0aGlzLmFwcCA9IGFwcDtcbiAgICB0aGlzLmZpbGUgPSBmaWxlO1xuICAgIHRoaXMuZWRpdG9yID0gZWRpdG9yO1xuICB9XG5cbiAgcHVibGljIGdldEN1cnNvclBvc2l0aW9uID0gKCk6IFBvaW50ID0+IHtcbiAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuZWRpdG9yLmdldEN1cnNvcigpO1xuICAgIHJldHVybiBuZXcgUG9pbnQocG9zaXRpb24ubGluZSwgcG9zaXRpb24uY2gpO1xuICB9O1xuXG4gIHB1YmxpYyBzZXRDdXJzb3JQb3NpdGlvbiA9IChwb3M6IFBvaW50KTogdm9pZCA9PiB7XG4gICAgdGhpcy5lZGl0b3Iuc2V0Q3Vyc29yKHsgbGluZTogcG9zLnJvdywgY2g6IHBvcy5jb2x1bW4gfSk7XG4gIH07XG5cbiAgcHVibGljIHNldFNlbGVjdGlvblJhbmdlID0gKHJhbmdlOiBSYW5nZSk6IHZvaWQgPT4ge1xuICAgIHRoaXMuZWRpdG9yLnNldFNlbGVjdGlvbihcbiAgICAgIHsgbGluZTogcmFuZ2Uuc3RhcnQucm93LCBjaDogcmFuZ2Uuc3RhcnQuY29sdW1uIH0sXG4gICAgICB7IGxpbmU6IHJhbmdlLmVuZC5yb3csIGNoOiByYW5nZS5lbmQuY29sdW1uIH0sXG4gICAgKTtcbiAgfTtcblxuICBwdWJsaWMgZ2V0TGFzdFJvdyA9ICgpOiBudW1iZXIgPT4gdGhpcy5lZGl0b3IubGFzdExpbmUoKTtcblxuICBwdWJsaWMgYWNjZXB0c1RhYmxlRWRpdCA9IChyb3c6IG51bWJlcik6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IGNhY2hlID0gdGhpcy5hcHAubWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUodGhpcy5maWxlKTtcbiAgICBpZiAoIWNhY2hlLnNlY3Rpb25zKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCB0YWJsZSA9IGNhY2hlLnNlY3Rpb25zLmZpbmQoXG4gICAgICAoc2VjdGlvbik6IGJvb2xlYW4gPT5cbiAgICAgICAgc2VjdGlvbi5wb3NpdGlvbi5zdGFydC5saW5lIDw9IHJvdyAmJlxuICAgICAgICBzZWN0aW9uLnBvc2l0aW9uLmVuZC5saW5lID49IHJvdyAmJlxuICAgICAgICBzZWN0aW9uLnR5cGUgIT09ICdjb2RlJyAmJlxuICAgICAgICBzZWN0aW9uLnR5cGUgIT09ICdtYXRoJyxcbiAgICApO1xuICAgIGlmICh0YWJsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgdGhhdCB0aGUgdGV4dCBgLXR4LWAgaXMgbm90IG9uIHRoZSBsaW5lIGltbWVkaWF0ZWx5IHByZWNlZWRpbmcgdGhlXG4gICAgLy8gdGFibGUgZm91bmQgaW4gdGhlIHByZXZpb3VzIGNoZWNrLlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90Z3Jvc2luZ2VyL2FkdmFuY2VkLXRhYmxlcy1vYnNpZGlhbi9pc3N1ZXMvMTMzXG4gICAgY29uc3QgcHJlY2VlZGluZ0xpbmVJbmRleCA9IHRhYmxlLnBvc2l0aW9uLnN0YXJ0LmxpbmU7XG4gICAgaWYgKHByZWNlZWRpbmdMaW5lSW5kZXggPj0gMCkge1xuICAgICAgY29uc3QgcHJlY2VlZGluZ0xpbmUgPSB0aGlzLmdldExpbmUocHJlY2VlZGluZ0xpbmVJbmRleCk7XG4gICAgICBpZiAocHJlY2VlZGluZ0xpbmUgPT09ICctdHgtJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgcHVibGljIGdldExpbmUgPSAocm93OiBudW1iZXIpOiBzdHJpbmcgPT4gdGhpcy5lZGl0b3IuZ2V0TGluZShyb3cpO1xuXG4gIHB1YmxpYyBpbnNlcnRMaW5lID0gKHJvdzogbnVtYmVyLCBsaW5lOiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgICBpZiAocm93ID4gdGhpcy5nZXRMYXN0Um93KCkpIHtcbiAgICAgIHRoaXMuZWRpdG9yLnJlcGxhY2VSYW5nZSgnXFxuJyArIGxpbmUsIHsgbGluZTogcm93LCBjaDogMCB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lZGl0b3IucmVwbGFjZVJhbmdlKGxpbmUgKyAnXFxuJywgeyBsaW5lOiByb3csIGNoOiAwIH0pO1xuICAgIH1cbiAgfTtcblxuICBwdWJsaWMgZGVsZXRlTGluZSA9IChyb3c6IG51bWJlcik6IHZvaWQgPT4ge1xuICAgIC8vIElmIG9uIHRoZSBsYXN0IGxpbmUgb2YgdGhlIGZpbGUsIHdlIGNhbm5vdCByZXBsYWNlIHRvIHRoZSBuZXh0IHJvdy5cbiAgICAvLyBJbnN0ZWFkLCByZXBsYWNlIGFsbCB0aGUgY29udGVudHMgb2YgdGhpcyBsaW5lLlxuICAgIGlmIChyb3cgPT09IHRoaXMuZ2V0TGFzdFJvdygpKSB7XG4gICAgICBjb25zdCByb3dDb250ZW50cyA9IHRoaXMuZ2V0TGluZShyb3cpO1xuICAgICAgdGhpcy5lZGl0b3IucmVwbGFjZVJhbmdlKFxuICAgICAgICAnJyxcbiAgICAgICAgeyBsaW5lOiByb3csIGNoOiAwIH0sXG4gICAgICAgIHsgbGluZTogcm93LCBjaDogcm93Q29udGVudHMubGVuZ3RoIH0sXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVkaXRvci5yZXBsYWNlUmFuZ2UoXG4gICAgICAgICcnLFxuICAgICAgICB7IGxpbmU6IHJvdywgY2g6IDAgfSxcbiAgICAgICAgeyBsaW5lOiByb3cgKyAxLCBjaDogMCB9LFxuICAgICAgKTtcbiAgICB9XG4gIH07XG5cbiAgcHVibGljIHJlcGxhY2VMaW5lcyA9IChcbiAgICBzdGFydFJvdzogbnVtYmVyLFxuICAgIGVuZFJvdzogbnVtYmVyLFxuICAgIGxpbmVzOiBzdHJpbmdbXSxcbiAgKTogdm9pZCA9PiB7XG4gICAgLy8gVGFrZSBvbmUgb2ZmIHRoZSBlbmRSb3cgYW5kIGluc3RlYWQgZ28gdG8gdGhlIGVuZCBvZiB0aGF0IGxpbmVcbiAgICBjb25zdCByZWFsRW5kUm93ID0gZW5kUm93IC0gMTtcbiAgICBjb25zdCBlbmRSb3dDb250ZW50cyA9IHRoaXMuZWRpdG9yLmdldExpbmUocmVhbEVuZFJvdyk7XG4gICAgY29uc3QgZW5kUm93RmluYWxJbmRleCA9IGVuZFJvd0NvbnRlbnRzLmxlbmd0aDtcblxuICAgIHRoaXMuZWRpdG9yLnJlcGxhY2VSYW5nZShcbiAgICAgIGxpbmVzLmpvaW4oJ1xcbicpLFxuICAgICAgeyBsaW5lOiBzdGFydFJvdywgY2g6IDAgfSxcbiAgICAgIHsgbGluZTogcmVhbEVuZFJvdywgY2g6IGVuZFJvd0ZpbmFsSW5kZXggfSxcbiAgICApO1xuICB9O1xuXG4gIHB1YmxpYyB0cmFuc2FjdCA9IChmdW5jOiBGdW5jdGlvbik6IHZvaWQgPT4ge1xuICAgIC8qXG4gICAgdGhpcy5lZGl0b3Iub3BlcmF0aW9uKCgpID0+IHtcbiAgICAgIGZ1bmMoKTtcbiAgICB9KTtcbiAgICAqL1xuICAgIGZ1bmMoKTtcbiAgfTtcbn1cbiIsImltcG9ydCB7IE9ic2lkaWFuVGV4dEVkaXRvciB9IGZyb20gJy4vb2JzaWRpYW4tdGV4dC1lZGl0b3InO1xuaW1wb3J0IHsgVGFibGVFZGl0b3JQbHVnaW5TZXR0aW5ncyB9IGZyb20gJy4vc2V0dGluZ3MnO1xuaW1wb3J0IHtcbiAgQWxpZ25tZW50LFxuICBTb3J0T3JkZXIsXG4gIFRhYmxlRWRpdG9yIGFzIE1URUVkaXRvcixcbn0gZnJvbSAnQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzJztcbmltcG9ydCB7IEFwcCwgRWRpdG9yLCBNb2RhbCwgTm90aWNlLCBURmlsZSB9IGZyb20gJ29ic2lkaWFuJztcblxuZXhwb3J0IGNsYXNzIFRhYmxlRWRpdG9yIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhcHA6IEFwcDtcbiAgcHJpdmF0ZSByZWFkb25seSBzZXR0aW5nczogVGFibGVFZGl0b3JQbHVnaW5TZXR0aW5ncztcbiAgcHJpdmF0ZSByZWFkb25seSBtdGU6IE1URUVkaXRvcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhcHA6IEFwcCxcbiAgICBmaWxlOiBURmlsZSxcbiAgICBlZGl0b3I6IEVkaXRvcixcbiAgICBzZXR0aW5nczogVGFibGVFZGl0b3JQbHVnaW5TZXR0aW5ncyxcbiAgKSB7XG4gICAgdGhpcy5hcHAgPSBhcHA7XG4gICAgdGhpcy5zZXR0aW5ncyA9IHNldHRpbmdzO1xuXG4gICAgY29uc3Qgb3RlID0gbmV3IE9ic2lkaWFuVGV4dEVkaXRvcihhcHAsIGZpbGUsIGVkaXRvcik7XG4gICAgdGhpcy5tdGUgPSBuZXcgTVRFRWRpdG9yKG90ZSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgY3Vyc29ySXNJblRhYmxlRm9ybXVsYSA9ICgpOiBib29sZWFuID0+XG4gICAgdGhpcy5tdGUuY3Vyc29ySXNJblRhYmxlRm9ybXVsYSh0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY3Vyc29ySXNJblRhYmxlID0gKCk6IGJvb2xlYW4gPT5cbiAgICB0aGlzLm10ZS5jdXJzb3JJc0luVGFibGUodGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG5leHRDZWxsID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMubXRlLm5leHRDZWxsKHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBwcmV2aW91c0NlbGwgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5tdGUucHJldmlvdXNDZWxsKHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBuZXh0Um93ID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMubXRlLm5leHRSb3codGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IGZvcm1hdFRhYmxlID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMubXRlLmZvcm1hdCh0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZm9ybWF0QWxsVGFibGVzID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMubXRlLmZvcm1hdEFsbCh0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgaW5zZXJ0Q29sdW1uID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMubXRlLmluc2VydENvbHVtbih0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgaW5zZXJ0Um93ID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMubXRlLmluc2VydFJvdyh0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbGVmdEFsaWduQ29sdW1uID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMubXRlLmFsaWduQ29sdW1uKEFsaWdubWVudC5MRUZULCB0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY2VudGVyQWxpZ25Db2x1bW4gPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5tdGUuYWxpZ25Db2x1bW4oQWxpZ25tZW50LkNFTlRFUiwgdGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IHJpZ2h0QWxpZ25Db2x1bW4gPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5tdGUuYWxpZ25Db2x1bW4oQWxpZ25tZW50LlJJR0hULCB0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbW92ZUNvbHVtbkxlZnQgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5tdGUubW92ZUNvbHVtbigtMSwgdGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IG1vdmVDb2x1bW5SaWdodCA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5tb3ZlQ29sdW1uKDEsIHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBtb3ZlUm93VXAgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5tdGUubW92ZVJvdygtMSwgdGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IG1vdmVSb3dEb3duID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMubXRlLm1vdmVSb3coMSwgdGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IGRlbGV0ZUNvbHVtbiA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5kZWxldGVDb2x1bW4odGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IGRlbGV0ZVJvdyA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLm10ZS5kZWxldGVSb3codGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gIH07XG5cbiAgcHVibGljIHJlYWRvbmx5IHNvcnRSb3dzQXNjID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMubXRlLnNvcnRSb3dzKFNvcnRPcmRlci5Bc2NlbmRpbmcsIHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBzb3J0Um93c0Rlc2MgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5tdGUuc29ydFJvd3MoU29ydE9yZGVyLkRlc2NlbmRpbmcsIHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBlc2NhcGUgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5tdGUuZXNjYXBlKHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBldmFsdWF0ZUZvcm11bGFzID0gKCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGVyciA9IHRoaXMubXRlLmV2YWx1YXRlRm9ybXVsYXModGhpcy5zZXR0aW5ncy5hc09wdGlvbnMoKSk7XG4gICAgaWYgKGVycikge1xuICAgICAgbmV3IE5vdGljZShlcnIubWVzc2FnZSk7XG4gICAgfVxuICB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBleHBvcnRDU1ZNb2RhbCA9ICgpOiB2b2lkID0+IHtcbiAgICBuZXcgQ1NWTW9kYWwodGhpcy5hcHAsIHRoaXMubXRlLCB0aGlzLnNldHRpbmdzKS5vcGVuKCk7XG4gIH07XG59XG5cbmNsYXNzIENTVk1vZGFsIGV4dGVuZHMgTW9kYWwge1xuICBwcml2YXRlIHJlYWRvbmx5IG10ZTogTVRFRWRpdG9yO1xuICBwcml2YXRlIHJlYWRvbmx5IHNldHRpbmdzOiBUYWJsZUVkaXRvclBsdWdpblNldHRpbmdzO1xuXG4gIGNvbnN0cnVjdG9yKGFwcDogQXBwLCBtdGU6IE1URUVkaXRvciwgc2V0dGluZ3M6IFRhYmxlRWRpdG9yUGx1Z2luU2V0dGluZ3MpIHtcbiAgICBzdXBlcihhcHApO1xuICAgIHRoaXMubXRlID0gbXRlO1xuICAgIHRoaXMuc2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgfVxuXG4gIHB1YmxpYyBvbk9wZW4oKTogdm9pZCB7XG4gICAgY29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XG4gICAgY29uc3QgZGl2ID0gY29udGVudEVsLmNyZWF0ZURpdih7XG4gICAgICBjbHM6ICdhZHZhbmNlZC10YWJsZXMtY3N2LWV4cG9ydCcsXG4gICAgfSk7XG5cbiAgICBjb25zdCB0YSA9IGRpdi5jcmVhdGVFbCgndGV4dGFyZWEnLCB7XG4gICAgICBhdHRyOiB7XG4gICAgICAgIHJlYWRvbmx5OiB0cnVlLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICB0YS52YWx1ZSA9IHRoaXMubXRlLmV4cG9ydENTVih0cnVlLCB0aGlzLnNldHRpbmdzLmFzT3B0aW9ucygpKTtcbiAgICB0YS5vbkNsaWNrRXZlbnQoKCkgPT4gdGEuc2VsZWN0KCkpO1xuXG4gICAgY29uc3QgbGIgPSBkaXYuY3JlYXRlRWwoJ2xhYmVsJyk7XG4gICAgY29uc3QgY2IgPSBsYi5jcmVhdGVFbCgnaW5wdXQnLCB7XG4gICAgICB0eXBlOiAnY2hlY2tib3gnLFxuICAgICAgYXR0cjoge1xuICAgICAgICBjaGVja2VkOiB0cnVlLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBsYi5jcmVhdGVTcGFuKCkuc2V0VGV4dCgnSW5jbHVkZSB0YWJsZSBoZWFkZXJzJyk7XG4gICAgY2Iub25DbGlja0V2ZW50KCgpID0+IHtcbiAgICAgIHRhLnZhbHVlID0gdGhpcy5tdGUuZXhwb3J0Q1NWKGNiLmNoZWNrZWQsIHRoaXMuc2V0dGluZ3MuYXNPcHRpb25zKCkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uQ2xvc2UoKTogdm9pZCB7XG4gICAgY29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XG4gICAgY29udGVudEVsLmVtcHR5KCk7XG4gIH1cbn1cbiIsImltcG9ydCB7IGljb25zIH0gZnJvbSAnLi9pY29ucyc7XG5pbXBvcnQgeyBUYWJsZUVkaXRvclBsdWdpblNldHRpbmdzIH0gZnJvbSAnLi9zZXR0aW5ncyc7XG5pbXBvcnQgeyBUYWJsZUVkaXRvciB9IGZyb20gJy4vdGFibGUtZWRpdG9yJztcbmltcG9ydCB7XG4gIEVkaXRvcixcbiAgSXRlbVZpZXcsXG4gIE1hcmtkb3duVmlldyxcbiAgTm90aWNlLFxuICBXb3Jrc3BhY2VMZWFmLFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmV4cG9ydCBjb25zdCBUYWJsZUNvbnRyb2xzVmlld1R5cGUgPSAnYWR2YW5jZWQtdGFibGVzLXRvb2xiYXInO1xuXG5leHBvcnQgY2xhc3MgVGFibGVDb250cm9sc1ZpZXcgZXh0ZW5kcyBJdGVtVmlldyB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2V0dGluZ3M6IFRhYmxlRWRpdG9yUGx1Z2luU2V0dGluZ3M7XG5cbiAgY29uc3RydWN0b3IobGVhZjogV29ya3NwYWNlTGVhZiwgc2V0dGluZ3M6IFRhYmxlRWRpdG9yUGx1Z2luU2V0dGluZ3MpIHtcbiAgICBzdXBlcihsZWFmKTtcbiAgICB0aGlzLnNldHRpbmdzID0gc2V0dGluZ3M7XG4gIH1cblxuICBwdWJsaWMgZ2V0Vmlld1R5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVGFibGVDb250cm9sc1ZpZXdUeXBlO1xuICB9XG5cbiAgcHVibGljIGdldERpc3BsYXlUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdBZHZhbmNlZCBUYWJsZXMnO1xuICB9XG5cbiAgcHVibGljIGdldEljb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ3NwcmVhZHNoZWV0JztcbiAgfVxuXG4gIHB1YmxpYyBsb2FkKCk6IHZvaWQge1xuICAgIHN1cGVyLmxvYWQoKTtcbiAgICB0aGlzLmRyYXcoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgZHJhdyA9ICgpOiB2b2lkID0+IHtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lckVsLmNoaWxkcmVuWzFdO1xuXG4gICAgY29uc3Qgcm9vdEVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgcm9vdEVsLmFkZENsYXNzKFwiYWR2YW5jZWQtdGFibGVzLWJ1dHRvbnNcIik7XG5cbiAgICByb290RWwuY3JlYXRlRGl2KCkuXG4gICAgICBjcmVhdGVTcGFuKHsgY2xzOiAndGl0bGUnIH0pLlxuICAgICAgc2V0VGV4dChcIkFkdmFuY2VkIFRhYmxlc1wiKVxuXG4gICAgY29uc3QgbmF2SGVhZGVyID0gcm9vdEVsLmNyZWF0ZURpdih7IGNsczogJ25hdi1oZWFkZXInIH0pO1xuICAgIGNvbnN0IHJvd09uZUJ0bnMgPSBuYXZIZWFkZXIuY3JlYXRlRGl2KHsgY2xzOiAnbmF2LWJ1dHRvbnMtY29udGFpbmVyJyB9KTtcbiAgICByb3dPbmVCdG5zLmNyZWF0ZVNwYW4oeyBjbHM6ICdhZHZhbmNlZC10YWJsZXMtcm93LWxhYmVsJyB9KS5zZXRUZXh0KFwiQWxpZ246XCIpO1xuICAgIHRoaXMuZHJhd0J0bihyb3dPbmVCdG5zLCAnYWxpZ25MZWZ0JywgJ2xlZnQgYWxpZ24gY29sdW1uJywgKHRlKSA9PlxuICAgICAgdGUubGVmdEFsaWduQ29sdW1uKCksXG4gICAgKTtcbiAgICB0aGlzLmRyYXdCdG4ocm93T25lQnRucywgJ2FsaWduQ2VudGVyJywgJ2NlbnRlciBhbGlnbiBjb2x1bW4nLCAodGUpID0+XG4gICAgICB0ZS5jZW50ZXJBbGlnbkNvbHVtbigpLFxuICAgICk7XG4gICAgdGhpcy5kcmF3QnRuKHJvd09uZUJ0bnMsICdhbGlnblJpZ2h0JywgJ3JpZ2h0IGFsaWduIGNvbHVtbicsICh0ZSkgPT5cbiAgICAgIHRlLnJpZ2h0QWxpZ25Db2x1bW4oKSxcbiAgICApO1xuXG4gICAgY29uc3Qgcm93VHdvQnRucyA9IG5hdkhlYWRlci5jcmVhdGVEaXYoeyBjbHM6ICduYXYtYnV0dG9ucy1jb250YWluZXInIH0pO1xuICAgIHJvd1R3b0J0bnMuY3JlYXRlU3Bhbih7IGNsczogJ2FkdmFuY2VkLXRhYmxlcy1yb3ctbGFiZWwnIH0pLnNldFRleHQoXCJNb3ZlOlwiKTtcbiAgICB0aGlzLmRyYXdCdG4ocm93VHdvQnRucywgJ21vdmVSb3dEb3duJywgJ21vdmUgcm93IGRvd24nLCAodGUpID0+XG4gICAgICB0ZS5tb3ZlUm93RG93bigpLFxuICAgICk7XG4gICAgdGhpcy5kcmF3QnRuKHJvd1R3b0J0bnMsICdtb3ZlUm93VXAnLCAnbW92ZSByb3cgdXAnLCAodGUpID0+XG4gICAgICB0ZS5tb3ZlUm93VXAoKSxcbiAgICApO1xuICAgIHRoaXMuZHJhd0J0bihyb3dUd29CdG5zLCAnbW92ZUNvbHVtblJpZ2h0JywgJ21vdmUgY29sdW1uIHJpZ2h0JywgKHRlKSA9PlxuICAgICAgdGUubW92ZUNvbHVtblJpZ2h0KCksXG4gICAgKTtcbiAgICB0aGlzLmRyYXdCdG4ocm93VHdvQnRucywgJ21vdmVDb2x1bW5MZWZ0JywgJ21vdmUgY29sdW1uIGxlZnQnLCAodGUpID0+XG4gICAgICB0ZS5tb3ZlQ29sdW1uTGVmdCgpLFxuICAgICk7XG5cbiAgICBjb25zdCByb3dUaHJlZUJ0bnMgPSBuYXZIZWFkZXIuY3JlYXRlRGl2KHsgY2xzOiAnbmF2LWJ1dHRvbnMtY29udGFpbmVyJyB9KTtcbiAgICByb3dUaHJlZUJ0bnMuY3JlYXRlU3Bhbih7IGNsczogJ2FkdmFuY2VkLXRhYmxlcy1yb3ctbGFiZWwnIH0pLnNldFRleHQoXCJFZGl0OlwiKTtcbiAgICB0aGlzLmRyYXdCdG4ocm93VGhyZWVCdG5zLCAnaW5zZXJ0Um93JywgJ2luc2VydCByb3cgYWJvdmUnLCAodGUpID0+XG4gICAgICB0ZS5pbnNlcnRSb3coKSxcbiAgICApO1xuICAgIHRoaXMuZHJhd0J0bihyb3dUaHJlZUJ0bnMsICdpbnNlcnRDb2x1bW4nLCAnaW5zZXJ0IGNvbHVtbiBsZWZ0JywgKHRlKSA9PlxuICAgICAgdGUuaW5zZXJ0Q29sdW1uKCksXG4gICAgKTtcbiAgICB0aGlzLmRyYXdCdG4ocm93VGhyZWVCdG5zLCAnZGVsZXRlUm93JywgJ2RlbGV0ZSByb3cnLCAodGUpID0+XG4gICAgICB0ZS5kZWxldGVSb3coKSxcbiAgICApO1xuICAgIHRoaXMuZHJhd0J0bihyb3dUaHJlZUJ0bnMsICdkZWxldGVDb2x1bW4nLCAnZGVsZXRlIGNvbHVtbicsICh0ZSkgPT5cbiAgICAgIHRlLmRlbGV0ZUNvbHVtbigpLFxuICAgICk7XG5cbiAgICBjb25zdCByb3dGb3VyQnRucyA9IG5hdkhlYWRlci5jcmVhdGVEaXYoeyBjbHM6ICduYXYtYnV0dG9ucy1jb250YWluZXInIH0pO1xuICAgIHJvd0ZvdXJCdG5zLmNyZWF0ZVNwYW4oeyBjbHM6ICdhZHZhbmNlZC10YWJsZXMtcm93LWxhYmVsJyB9KS5zZXRUZXh0KFwiU29ydC9GOlwiKTtcbiAgICB0aGlzLmRyYXdCdG4ocm93Rm91ckJ0bnMsICdzb3J0QXNjJywgJ3NvcnQgYnkgY29sdW1uIGFzY2VuZGluZycsICh0ZSkgPT5cbiAgICAgIHRlLnNvcnRSb3dzQXNjKCksXG4gICAgKTtcbiAgICB0aGlzLmRyYXdCdG4ocm93Rm91ckJ0bnMsICdzb3J0RGVzYycsICdzb3J0IGJ5IGNvbHVtbiBkZXNjZW5kaW5nJywgKHRlKSA9PlxuICAgICAgdGUuc29ydFJvd3NEZXNjKCksXG4gICAgKTtcbiAgICB0aGlzLmRyYXdCdG4ocm93Rm91ckJ0bnMsICdmb3JtdWxhJywgJ2V2YWx1YXRlIGZvcm11bGFzJywgKHRlKSA9PlxuICAgICAgdGUuZXZhbHVhdGVGb3JtdWxhcygpLFxuICAgICk7XG5cbiAgICBjb25zdCByb3dGaXZlQnRucyA9IG5hdkhlYWRlci5jcmVhdGVEaXYoeyBjbHM6ICduYXYtYnV0dG9ucy1jb250YWluZXInIH0pO1xuICAgIHJvd0ZpdmVCdG5zLmNyZWF0ZVNwYW4oeyBjbHM6ICdhZHZhbmNlZC10YWJsZXMtcm93LWxhYmVsJyB9KS5zZXRUZXh0KFwiTWlzYzpcIik7XG4gICAgdGhpcy5kcmF3QnRuKHJvd0ZpdmVCdG5zLCAnY3N2JywgJ2V4cG9ydCBhcyBjc3YnLCAodGUpID0+XG4gICAgICB0ZS5leHBvcnRDU1ZNb2RhbCgpLFxuICAgICk7XG4gICAgdGhpcy5kcmF3QnRuKHJvd0ZpdmVCdG5zLCAnaGVscCcsICdoZWxwJywgKCkgPT5cbiAgICAgIHdpbmRvdy5vcGVuKFxuICAgICAgICAnaHR0cHM6Ly9naXRodWIuY29tL3Rncm9zaW5nZXIvYWR2YW5jZWQtdGFibGVzLW9ic2lkaWFuL2Jsb2IvbWFpbi9kb2NzL2hlbHAubWQnLFxuICAgICAgKSxcbiAgICApO1xuXG4gICAgY29udGFpbmVyLmVtcHR5KCk7XG4gICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHJvb3RFbCk7XG4gIH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkcmF3QnRuID0gKFxuICAgIHBhcmVudDogSFRNTERpdkVsZW1lbnQsXG4gICAgaWNvbk5hbWU6IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGZuOiAodGU6IFRhYmxlRWRpdG9yKSA9PiB2b2lkLFxuICApOiB2b2lkID0+IHtcbiAgICBjb25zdCBjdXJzb3JDaGVjayA9ICh0ZTogVGFibGVFZGl0b3IpOiBib29sZWFuID0+IHtcbiAgICAgIGlmICh0aXRsZSA9PT0gJ2V2YWx1YXRlIGZvcm11bGFzJykge1xuICAgICAgICByZXR1cm4gdGUuY3Vyc29ySXNJblRhYmxlKCkgfHwgdGUuY3Vyc29ySXNJblRhYmxlRm9ybXVsYSgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRlLmN1cnNvcklzSW5UYWJsZSgpO1xuICAgIH07XG5cbiAgICBjb25zdCBidXR0b24gPSBwYXJlbnQuY3JlYXRlRGl2KHsgY2xzOiAnYWR2YW5jZWQtdGFibGVzLWJ1dHRvbiBuYXYtYWN0aW9uLWJ1dHRvbicsIHRpdGxlIH0pO1xuICAgIGJ1dHRvbi5vbkNsaWNrRXZlbnQoKCkgPT4gdGhpcy53aXRoVEUoZm4sIGN1cnNvckNoZWNrKSk7XG4gICAgYnV0dG9uLmFwcGVuZENoaWxkKEVsZW1lbnQoaWNvbnNbaWNvbk5hbWVdKSk7XG4gIH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSB3aXRoVEUgPSAoXG4gICAgZm46ICh0ZTogVGFibGVFZGl0b3IpID0+IHZvaWQsXG4gICAgY3Vyc29yQ2hlY2s6ICh0ZTogVGFibGVFZGl0b3IpID0+IGJvb2xlYW4sXG4gICAgYWxlcnRPbk5vVGFibGUgPSB0cnVlLFxuICApOiB2b2lkID0+IHtcbiAgICBsZXQgZWRpdG9yOiBFZGl0b3I7XG4gICAgY29uc3QgbGVhZiA9IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRNb3N0UmVjZW50TGVhZigpO1xuICAgIGlmIChsZWFmLnZpZXcgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcpIHtcbiAgICAgIGVkaXRvciA9IGxlYWYudmlldy5lZGl0b3I7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybignQWR2YW5jZWQgVGFibGVzOiBVbmFibGUgdG8gZGV0ZXJtaW5lIGN1cnJlbnQgZWRpdG9yLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRlID0gbmV3IFRhYmxlRWRpdG9yKHRoaXMuYXBwLCBsZWFmLnZpZXcuZmlsZSwgZWRpdG9yLCB0aGlzLnNldHRpbmdzKTtcbiAgICBpZiAoIWN1cnNvckNoZWNrKHRlKSkge1xuICAgICAgaWYgKGFsZXJ0T25Ob1RhYmxlKSB7XG4gICAgICAgIG5ldyBOb3RpY2UoJ0FkdmFuY2VkIFRhYmxlczogQ3Vyc29yIG11c3QgYmUgaW4gYSB0YWJsZS4nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmbih0ZSk7XG4gIH07XG59XG5cbi8qKlxuICogQ29udmVydCBhbiBzdmcgc3RyaW5nIGludG8gYW4gSFRNTCBlbGVtZW50LlxuICpcbiAqIEBwYXJhbSBzdmdUZXh0IHN2ZyBpbWFnZSBhcyBhIHN0cmluZ1xuICovXG5jb25zdCBFbGVtZW50ID0gKHN2Z1RleHQ6IHN0cmluZyk6IEhUTUxFbGVtZW50ID0+IHtcbiAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xuICByZXR1cm4gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhzdmdUZXh0LCAndGV4dC94bWwnKS5kb2N1bWVudEVsZW1lbnQ7XG59O1xuIiwiaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICcuL2ljb25zJztcbmltcG9ydCB7IGRlZmF1bHRTZXR0aW5ncywgVGFibGVFZGl0b3JQbHVnaW5TZXR0aW5ncyB9IGZyb20gJy4vc2V0dGluZ3MnO1xuaW1wb3J0IHtcbiAgVGFibGVDb250cm9sc1ZpZXcsXG4gIFRhYmxlQ29udHJvbHNWaWV3VHlwZSxcbn0gZnJvbSAnLi90YWJsZS1jb250cm9scy12aWV3JztcbmltcG9ydCB7IFRhYmxlRWRpdG9yIH0gZnJvbSAnLi90YWJsZS1lZGl0b3InO1xuaW1wb3J0IHsgRXh0ZW5zaW9uLCBQcmVjIH0gZnJvbSAnQGNvZGVtaXJyb3Ivc3RhdGUnO1xuaW1wb3J0IHsgS2V5QmluZGluZywga2V5bWFwIH0gZnJvbSAnQGNvZGVtaXJyb3Ivdmlldyc7XG5pbXBvcnQgeyBGb3JtYXRUeXBlIH0gZnJvbSAnQHRncm9zaW5nZXIvbWQtYWR2YW5jZWQtdGFibGVzJztcbmltcG9ydCB7XG4gIEFwcCxcbiAgRWRpdG9yLFxuICBNYXJrZG93blZpZXcsXG4gIE5vdGljZSxcbiAgUGx1Z2luLFxuICBQbHVnaW5TZXR0aW5nVGFiLFxuICBTZXR0aW5nLFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRhYmxlRWRpdG9yUGx1Z2luIGV4dGVuZHMgUGx1Z2luIHtcbiAgcHVibGljIHNldHRpbmdzOiBUYWJsZUVkaXRvclBsdWdpblNldHRpbmdzO1xuXG4gIHB1YmxpYyBhc3luYyBvbmxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc29sZS5sb2coJ2xvYWRpbmcgbWFya2Rvd24tdGFibGUtZWRpdG9yIHBsdWdpbicpO1xuXG4gICAgYXdhaXQgdGhpcy5sb2FkU2V0dGluZ3MoKTtcblxuICAgIHRoaXMucmVnaXN0ZXJWaWV3KFxuICAgICAgVGFibGVDb250cm9sc1ZpZXdUeXBlLFxuICAgICAgKGxlYWYpID0+IG5ldyBUYWJsZUNvbnRyb2xzVmlldyhsZWFmLCB0aGlzLnNldHRpbmdzKSxcbiAgICApO1xuXG4gICAgYWRkSWNvbnMoKTtcblxuICAgIGlmICh0aGlzLnNldHRpbmdzLnNob3dSaWJib25JY29uKSB7XG4gICAgICB0aGlzLmFkZFJpYmJvbkljb24oJ3NwcmVhZHNoZWV0JywgJ0FkdmFuY2VkIFRhYmxlcyBUb29sYmFyJywgKCkgPT4ge1xuICAgICAgICB0aGlzLnRvZ2dsZVRhYmxlQ29udHJvbHNWaWV3KCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBDTTYgZWRpdG9yIGV4dGVuc2lvbiBmb3IgcmVtYXBwaW5nIGtleXNcbiAgICB0aGlzLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKHRoaXMubWFrZUVkaXRvckV4dGVuc2lvbigpKTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ25leHQtcm93JyxcbiAgICAgIG5hbWU6ICdHbyB0byBuZXh0IHJvdycsXG4gICAgICBpY29uOiAnYXJyb3dlbnRlcicsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzLmJpbmRFbnRlciAmJiAhdGhpcy5pc01vYmlsZSkge1xuICAgICAgICAgIG5ldyBOb3RpY2UoXG4gICAgICAgICAgICAnQWR2YW5jZWQgVGFibGVzOiBOZXh0IHJvdyBhbHNvIGJvdW5kIHRvIGVudGVyLiAnICtcbiAgICAgICAgICAgICAgJ1Bvc3NpYmx5IHByb2R1Y2luZyBkb3VibGUgYWN0aW9ucy4gU2VlIEFkdmFuY2VkIFRhYmxlcyBzZXR0aW5ncy4nLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGUubmV4dFJvdygpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICduZXh0LWNlbGwnLFxuICAgICAgbmFtZTogJ0dvIHRvIG5leHQgY2VsbCcsXG4gICAgICBpY29uOiAnYXJyb3d0YWInLFxuICAgICAgZWRpdG9yQ2hlY2tDYWxsYmFjazogdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb24oKHRlOiBUYWJsZUVkaXRvcikgPT4ge1xuICAgICAgICBpZiAodGhpcy5zZXR0aW5ncy5iaW5kVGFiICYmICF0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgbmV3IE5vdGljZShcbiAgICAgICAgICAgICdBZHZhbmNlZCBUYWJsZXM6IE5leHQgY2VsbCBhbHNvIGJvdW5kIHRvIHRhYi4gJyArXG4gICAgICAgICAgICAgICdQb3NzaWJseSBwcm9kdWNpbmcgZG91YmxlIGFjdGlvbnMuIFNlZSBBZHZhbmNlZCBUYWJsZXMgc2V0dGluZ3MuJyxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRlLm5leHRDZWxsKCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ3ByZXZpb3VzLWNlbGwnLFxuICAgICAgbmFtZTogJ0dvIHRvIHByZXZpb3VzIGNlbGwnLFxuICAgICAgZWRpdG9yQ2hlY2tDYWxsYmFjazogdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb24oKHRlOiBUYWJsZUVkaXRvcikgPT4ge1xuICAgICAgICBpZiAodGhpcy5zZXR0aW5ncy5iaW5kVGFiICYmICF0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgbmV3IE5vdGljZShcbiAgICAgICAgICAgICdBZHZhbmNlZCBUYWJsZXM6IFByZXZpb3VzIGNlbGwgYWxzbyBib3VuZCB0byBzaGlmdCt0YWIuICcgK1xuICAgICAgICAgICAgICAnUG9zc2libHkgcHJvZHVjaW5nIGRvdWJsZSBhY3Rpb25zLiBTZWUgQWR2YW5jZWQgVGFibGVzIHNldHRpbmdzLicsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0ZS5wcmV2aW91c0NlbGwoKTtcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAnZm9ybWF0LXRhYmxlJyxcbiAgICAgIG5hbWU6ICdGb3JtYXQgdGFibGUgYXQgdGhlIGN1cnNvcicsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLmZvcm1hdFRhYmxlKCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ2Zvcm1hdC1hbGwtdGFibGVzJyxcbiAgICAgIG5hbWU6ICdGb3JtYXQgYWxsIHRhYmxlcyBpbiB0aGlzIGZpbGUnLFxuICAgICAgZWRpdG9yQ2FsbGJhY2s6IChlZGl0b3I6IEVkaXRvciwgdmlldzogTWFya2Rvd25WaWV3KSA9PiB7XG4gICAgICAgIGNvbnN0IHRlID0gbmV3IFRhYmxlRWRpdG9yKHRoaXMuYXBwLCB2aWV3LmZpbGUsIGVkaXRvciwgdGhpcy5zZXR0aW5ncyk7XG4gICAgICAgIHRlLmZvcm1hdEFsbFRhYmxlcygpO1xuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ2luc2VydC1jb2x1bW4nLFxuICAgICAgbmFtZTogJ0luc2VydCBjb2x1bW4gYmVmb3JlIGN1cnJlbnQnLFxuICAgICAgaWNvbjogJ2luc2VydENvbHVtbicsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLmluc2VydENvbHVtbigpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdpbnNlcnQtcm93JyxcbiAgICAgIG5hbWU6ICdJbnNlcnQgcm93IGJlZm9yZSBjdXJyZW50JyxcbiAgICAgIGljb246ICdpbnNlcnRSb3cnLFxuICAgICAgZWRpdG9yQ2hlY2tDYWxsYmFjazogdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb24oKHRlOiBUYWJsZUVkaXRvcikgPT4ge1xuICAgICAgICB0ZS5pbnNlcnRSb3coKTtcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAnZXNjYXBlLXRhYmxlJyxcbiAgICAgIG5hbWU6ICdNb3ZlIGN1cnNvciBvdXQgb2YgdGFibGUnLFxuICAgICAgZWRpdG9yQ2hlY2tDYWxsYmFjazogdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb24oKHRlOiBUYWJsZUVkaXRvcikgPT4ge1xuICAgICAgICB0ZS5lc2NhcGUoKTtcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAnbGVmdC1hbGlnbi1jb2x1bW4nLFxuICAgICAgbmFtZTogJ0xlZnQgYWxpZ24gY29sdW1uJyxcbiAgICAgIGljb246ICdhbGlnbkxlZnQnLFxuICAgICAgZWRpdG9yQ2hlY2tDYWxsYmFjazogdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb24oKHRlOiBUYWJsZUVkaXRvcikgPT4ge1xuICAgICAgICB0ZS5sZWZ0QWxpZ25Db2x1bW4oKTtcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAnY2VudGVyLWFsaWduLWNvbHVtbicsXG4gICAgICBuYW1lOiAnQ2VudGVyIGFsaWduIGNvbHVtbicsXG4gICAgICBpY29uOiAnYWxpZ25DZW50ZXInLFxuICAgICAgZWRpdG9yQ2hlY2tDYWxsYmFjazogdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb24oKHRlOiBUYWJsZUVkaXRvcikgPT4ge1xuICAgICAgICB0ZS5jZW50ZXJBbGlnbkNvbHVtbigpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdyaWdodC1hbGlnbi1jb2x1bW4nLFxuICAgICAgbmFtZTogJ1JpZ2h0IGFsaWduIGNvbHVtbicsXG4gICAgICBpY29uOiAnYWxpZ25SaWdodCcsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLnJpZ2h0QWxpZ25Db2x1bW4oKTtcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAnbW92ZS1jb2x1bW4tbGVmdCcsXG4gICAgICBuYW1lOiAnTW92ZSBjb2x1bW4gbGVmdCcsXG4gICAgICBpY29uOiAnbW92ZUNvbHVtbkxlZnQnLFxuICAgICAgZWRpdG9yQ2hlY2tDYWxsYmFjazogdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb24oKHRlOiBUYWJsZUVkaXRvcikgPT4ge1xuICAgICAgICB0ZS5tb3ZlQ29sdW1uTGVmdCgpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdtb3ZlLWNvbHVtbi1yaWdodCcsXG4gICAgICBuYW1lOiAnTW92ZSBjb2x1bW4gcmlnaHQnLFxuICAgICAgaWNvbjogJ21vdmVDb2x1bW5SaWdodCcsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLm1vdmVDb2x1bW5SaWdodCgpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdtb3ZlLXJvdy11cCcsXG4gICAgICBuYW1lOiAnTW92ZSByb3cgdXAnLFxuICAgICAgaWNvbjogJ21vdmVSb3dVcCcsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLm1vdmVSb3dVcCgpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdtb3ZlLXJvdy1kb3duJyxcbiAgICAgIG5hbWU6ICdNb3ZlIHJvdyBkb3duJyxcbiAgICAgIGljb246ICdtb3ZlUm93RG93bicsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLm1vdmVSb3dEb3duKCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ2RlbGV0ZS1jb2x1bW4nLFxuICAgICAgbmFtZTogJ0RlbGV0ZSBjb2x1bW4nLFxuICAgICAgaWNvbjogJ2RlbGV0ZUNvbHVtbicsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLmRlbGV0ZUNvbHVtbigpO1xuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdkZWxldGUtcm93JyxcbiAgICAgIG5hbWU6ICdEZWxldGUgcm93JyxcbiAgICAgIGljb246ICdkZWxldGVSb3cnLFxuICAgICAgZWRpdG9yQ2hlY2tDYWxsYmFjazogdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb24oKHRlOiBUYWJsZUVkaXRvcikgPT4ge1xuICAgICAgICB0ZS5kZWxldGVSb3coKTtcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAnc29ydC1yb3dzLWFzY2VuZGluZycsXG4gICAgICBuYW1lOiAnU29ydCByb3dzIGFzY2VuZGluZycsXG4gICAgICBpY29uOiAnc29ydEFzYycsXG4gICAgICBlZGl0b3JDaGVja0NhbGxiYWNrOiB0aGlzLm5ld1BlcmZvcm1UYWJsZUFjdGlvbigodGU6IFRhYmxlRWRpdG9yKSA9PiB7XG4gICAgICAgIHRlLnNvcnRSb3dzQXNjKCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ3NvcnQtcm93cy1kZXNjZW5kaW5nJyxcbiAgICAgIG5hbWU6ICdTb3J0IHJvd3MgZGVzY2VuZGluZycsXG4gICAgICBpY29uOiAnc29ydERlc2MnLFxuICAgICAgZWRpdG9yQ2hlY2tDYWxsYmFjazogdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb24oKHRlOiBUYWJsZUVkaXRvcikgPT4ge1xuICAgICAgICB0ZS5zb3J0Um93c0Rlc2MoKTtcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAnZXZhbHVhdGUtZm9ybXVsYXMnLFxuICAgICAgbmFtZTogJ0V2YWx1YXRlIHRhYmxlIGZvcm11bGFzJyxcbiAgICAgIGljb246ICdmb3JtdWxhJyxcbiAgICAgIGVkaXRvckNoZWNrQ2FsbGJhY2s6IChcbiAgICAgICAgY2hlY2tpbmc6IGJvb2xlYW4sXG4gICAgICAgIGVkaXRvcjogRWRpdG9yLFxuICAgICAgICB2aWV3OiBNYXJrZG93blZpZXcsXG4gICAgICApOiBib29sZWFuIHwgdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IHRlID0gbmV3IFRhYmxlRWRpdG9yKHRoaXMuYXBwLCB2aWV3LmZpbGUsIGVkaXRvciwgdGhpcy5zZXR0aW5ncyk7XG4gICAgICAgIGlmIChjaGVja2luZykge1xuICAgICAgICAgIHJldHVybiB0ZS5jdXJzb3JJc0luVGFibGUoKSB8fCB0ZS5jdXJzb3JJc0luVGFibGVGb3JtdWxhKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGUuZXZhbHVhdGVGb3JtdWxhcygpO1xuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ3RhYmxlLWNvbnRyb2wtYmFyJyxcbiAgICAgIG5hbWU6ICdPcGVuIHRhYmxlIGNvbnRyb2xzIHRvb2xiYXInLFxuICAgICAgaG90a2V5czogW1xuICAgICAgICB7XG4gICAgICAgICAgbW9kaWZpZXJzOiBbJ01vZCcsICdTaGlmdCddLFxuICAgICAgICAgIGtleTogJ2QnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIHRoaXMudG9nZ2xlVGFibGVDb250cm9sc1ZpZXcoKTtcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZFNldHRpbmdUYWIobmV3IFRhYmxlRWRpdG9yU2V0dGluZ3NUYWIodGhpcy5hcHAsIHRoaXMpKTtcbiAgfVxuXG4gIC8vIG1ha2VFZGl0b3JFeHRlbnNpb24gaXMgdXNlZCB0byBiaW5kIFRhYiBhbmQgRW50ZXIgaW4gdGhlIG5ldyBDTTYgTGl2ZSBQcmV2aWV3IGVkaXRvci5cbiAgcHJpdmF0ZSByZWFkb25seSBtYWtlRWRpdG9yRXh0ZW5zaW9uID0gKCk6IEV4dGVuc2lvbiA9PiB7XG4gICAgY29uc3Qga2V5bWFwczogS2V5QmluZGluZ1tdID0gW107XG5cbiAgICBpZiAodGhpcy5zZXR0aW5ncy5iaW5kRW50ZXIpIHtcbiAgICAgIGtleW1hcHMucHVzaCh7XG4gICAgICAgIGtleTogJ0VudGVyJyxcbiAgICAgICAgcnVuOiAoKTogYm9vbGVhbiA9PlxuICAgICAgICAgIHRoaXMubmV3UGVyZm9ybVRhYmxlQWN0aW9uQ002KCh0ZTogVGFibGVFZGl0b3IpID0+IHRlLm5leHRSb3coKSkoKSxcbiAgICAgICAgcHJldmVudERlZmF1bHQ6IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZXR0aW5ncy5iaW5kVGFiKSB7XG4gICAgICBrZXltYXBzLnB1c2goe1xuICAgICAgICBrZXk6ICdUYWInLFxuICAgICAgICBydW46ICgpOiBib29sZWFuID0+XG4gICAgICAgICAgdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb25DTTYoKHRlOiBUYWJsZUVkaXRvcikgPT4gdGUubmV4dENlbGwoKSkoKSxcbiAgICAgICAgc2hpZnQ6ICgpOiBib29sZWFuID0+XG4gICAgICAgICAgdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb25DTTYoKHRlOiBUYWJsZUVkaXRvcikgPT5cbiAgICAgICAgICAgIHRlLnByZXZpb3VzQ2VsbCgpLFxuICAgICAgICAgICkoKSxcbiAgICAgICAgcHJldmVudERlZmF1bHQ6IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gUHJlYy5oaWdoZXN0KGtleW1hcC5vZihrZXltYXBzKSk7XG4gIH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBuZXdQZXJmb3JtVGFibGVBY3Rpb25DTTYgPVxuICAgIChmbjogKHRlOiBUYWJsZUVkaXRvcikgPT4gdm9pZCk6ICgoKSA9PiBib29sZWFuKSA9PlxuICAgICgpOiBib29sZWFuID0+IHtcbiAgICAgIGNvbnN0IHZpZXcgPSB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlVmlld09mVHlwZShNYXJrZG93blZpZXcpO1xuICAgICAgaWYgKHZpZXcpIHtcbiAgICAgICAgY29uc3QgY3VycmVudE1vZGUgPSB2aWV3LmN1cnJlbnRNb2RlO1xuICAgICAgICBpZiAoJ3NvdXJjZU1vZGUnIGluIGN1cnJlbnRNb2RlICYmICFjdXJyZW50TW9kZS5zb3VyY2VNb2RlKSB7XG4gICAgICAgICAgLy8gQXZvaWQgY29uZmxpY3Rpbmcgd2l0aCBXWVNJV1lHIHRhYmxlcyBpbiBsaXZlIHByZXZpZXcgbW9kZS5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0ZSA9IG5ldyBUYWJsZUVkaXRvcihcbiAgICAgICAgICB0aGlzLmFwcCxcbiAgICAgICAgICB2aWV3LmZpbGUsXG4gICAgICAgICAgdmlldy5lZGl0b3IsXG4gICAgICAgICAgdGhpcy5zZXR0aW5ncyxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAodGUuY3Vyc29ySXNJblRhYmxlKCkpIHtcbiAgICAgICAgICBmbih0ZSk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbmV3UGVyZm9ybVRhYmxlQWN0aW9uID1cbiAgICAoZm46ICh0ZTogVGFibGVFZGl0b3IpID0+IHZvaWQsIGFsZXJ0T25Ob1RhYmxlID0gdHJ1ZSkgPT5cbiAgICAoY2hlY2tpbmc6IGJvb2xlYW4sIGVkaXRvcjogRWRpdG9yLCB2aWV3OiBNYXJrZG93blZpZXcpOiBib29sZWFuIHwgdm9pZCA9PiB7XG4gICAgICBjb25zdCB0ZSA9IG5ldyBUYWJsZUVkaXRvcih0aGlzLmFwcCwgdmlldy5maWxlLCBlZGl0b3IsIHRoaXMuc2V0dGluZ3MpO1xuXG4gICAgICBpZiAoY2hlY2tpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRlLmN1cnNvcklzSW5UYWJsZSgpO1xuICAgICAgfVxuXG4gICAgICBmbih0ZSk7XG4gICAgfTtcblxuICAvLyBoYW5kbGVLZXlEb3duIGlzIHVzZWQgdG8gYmluZCB0aGUgdGFiIGFuZCBlbnRlciBrZXlzIGluIHRoZSBsZWdhY3kgQ001IGVkaXRvci5cbiAgcHJpdmF0ZSByZWFkb25seSBoYW5kbGVLZXlEb3duID0gKFxuICAgIGNtOiBDb2RlTWlycm9yLkVkaXRvcixcbiAgICBldmVudDogS2V5Ym9hcmRFdmVudCxcbiAgKTogdm9pZCA9PiB7XG4gICAgaWYgKFsnVGFiJywgJ0VudGVyJ10uY29udGFpbnMoZXZlbnQua2V5KSkge1xuICAgICAgbGV0IGVkaXRvcjogRWRpdG9yO1xuICAgICAgbGV0IHZpZXc6IE1hcmtkb3duVmlldztcbiAgICAgIGNvbnN0IGFjdGl2ZUxlYWYgPSB0aGlzLmFwcC53b3Jrc3BhY2UuYWN0aXZlTGVhZjtcbiAgICAgIGlmIChhY3RpdmVMZWFmLnZpZXcgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcpIHtcbiAgICAgICAgZWRpdG9yID0gYWN0aXZlTGVhZi52aWV3LmVkaXRvcjtcbiAgICAgICAgdmlldyA9IGFjdGl2ZUxlYWYudmlldztcbiAgICAgIH1cblxuICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5uZXdQZXJmb3JtVGFibGVBY3Rpb24oKHRlOiBUYWJsZUVkaXRvcikgPT4ge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICAgIGNhc2UgJ1RhYic6XG4gICAgICAgICAgICBpZiAoIXRoaXMuc2V0dGluZ3MuYmluZFRhYikge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICB0ZS5wcmV2aW91c0NlbGwoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRlLm5leHRDZWxsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgICBpZiAoIXRoaXMuc2V0dGluZ3MuYmluZEVudGVyKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICAgIHRlLmVzY2FwZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuYWx0S2V5KSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRlLm5leHRSb3coKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9LCBmYWxzZSk7XG5cbiAgICAgIC8vIENoZWNrIGZpcnN0IGlmIHdlIGFyZSBpbiBhIHRhYmxlLCBpZiBzbywgdGhlbiBleGVjdXRlLlxuICAgICAgaWYgKGFjdGlvbih0cnVlLCBlZGl0b3IsIHZpZXcpKSB7XG4gICAgICAgIGFjdGlvbihmYWxzZSwgZWRpdG9yLCB2aWV3KTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSB0b2dnbGVUYWJsZUNvbnRyb2xzVmlldyA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRMZWF2ZXNPZlR5cGUoVGFibGVDb250cm9sc1ZpZXdUeXBlKTtcbiAgICBpZiAoZXhpc3RpbmcubGVuZ3RoKSB7XG4gICAgICB0aGlzLmFwcC53b3Jrc3BhY2UucmV2ZWFsTGVhZihleGlzdGluZ1swXSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5hcHAud29ya3NwYWNlLmdldFJpZ2h0TGVhZihmYWxzZSkuc2V0Vmlld1N0YXRlKHtcbiAgICAgIHR5cGU6IFRhYmxlQ29udHJvbHNWaWV3VHlwZSxcbiAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHRoaXMuYXBwLndvcmtzcGFjZS5yZXZlYWxMZWFmKFxuICAgICAgdGhpcy5hcHAud29ya3NwYWNlLmdldExlYXZlc09mVHlwZShUYWJsZUNvbnRyb2xzVmlld1R5cGUpWzBdLFxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkU2V0dGluZ3MoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc2V0dGluZ3NPcHRpb25zID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIGRlZmF1bHRTZXR0aW5ncyxcbiAgICAgIGF3YWl0IHRoaXMubG9hZERhdGEoKSxcbiAgICApO1xuICAgIHRoaXMuc2V0dGluZ3MgPSBuZXcgVGFibGVFZGl0b3JQbHVnaW5TZXR0aW5ncyhzZXR0aW5nc09wdGlvbnMpO1xuICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGlzTW9iaWxlID0gKCk6IGJvb2xlYW4gPT4gKHRoaXMuYXBwIGFzIGFueSkuaXNNb2JpbGU7XG59XG5cbmNsYXNzIFRhYmxlRWRpdG9yU2V0dGluZ3NUYWIgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcbiAgcHJpdmF0ZSByZWFkb25seSBwbHVnaW46IFRhYmxlRWRpdG9yUGx1Z2luO1xuXG4gIGNvbnN0cnVjdG9yKGFwcDogQXBwLCBwbHVnaW46IFRhYmxlRWRpdG9yUGx1Z2luKSB7XG4gICAgc3VwZXIoYXBwLCBwbHVnaW4pO1xuICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuICB9XG5cbiAgcHVibGljIGRpc3BsYXkoKTogdm9pZCB7XG4gICAgY29uc3QgeyBjb250YWluZXJFbCB9ID0gdGhpcztcbiAgICBjb250YWluZXJFbC5lbXB0eSgpO1xuXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2gyJywgeyB0ZXh0OiAnQWR2YW5jZWQgVGFibGVzIFBsdWdpbiAtIFNldHRpbmdzJyB9KTtcblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoJ0JpbmQgZW50ZXIgdG8gdGFibGUgbmF2aWdhdGlvbicpXG4gICAgICAuc2V0RGVzYyhcbiAgICAgICAgJ1JlcXVpcmVzIHJlc3RhcnQgb2YgT2JzaWRpYW4uIElmIGVuYWJsZWQsIHdoZW4gdGhlIGN1cnNvciBpcyBpbiBhIHRhYmxlLCBlbnRlciBhZHZhbmNlcyB0byB0aGUgbmV4dCAnICtcbiAgICAgICAgICAncm93LiBEaXNhYmxpbmcgdGhpcyBjYW4gaGVscCBhdm9pZCBjb25mbGljdGluZyB3aXRoIHRhZyBvciBDSksgJyArXG4gICAgICAgICAgJ2F1dG9jb21wbGV0aW9uLiBJZiBkaXNhYmxpbmcsIGJpbmQgXCJHbyB0byAuLi5cIiBpbiB0aGUgT2JzaWRpYW4gSG90a2V5cyBzZXR0aW5ncy4nLFxuICAgICAgKVxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxuICAgICAgICB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuYmluZEVudGVyKS5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5iaW5kRW50ZXIgPSB2YWx1ZTtcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XG4gICAgICAgICAgdGhpcy5kaXNwbGF5KCk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoJ0JpbmQgdGFiIHRvIHRhYmxlIG5hdmlnYXRpb24nKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgICdSZXF1aXJlcyByZXN0YXJ0IG9mIE9ic2lkaWFuLiBJZiBlbmFibGVkLCB3aGVuIHRoZSBjdXJzb3IgaXMgaW4gYSB0YWJsZSwgdGFiL3NoaWZ0K3RhYiBuYXZpZ2F0ZSAnICtcbiAgICAgICAgICAnYmV0d2VlbiBjZWxscy4gRGlzYWJsaW5nIHRoaXMgY2FuIGhlbHAgYXZvaWQgY29uZmxpY3Rpbmcgd2l0aCB0YWcgJyArXG4gICAgICAgICAgJ29yIENKSyBhdXRvY29tcGxldGlvbi4gSWYgZGlzYWJsaW5nLCBiaW5kIFwiR28gdG8gLi4uXCIgaW4gdGhlIE9ic2lkaWFuIEhvdGtleXMgc2V0dGluZ3MuJyxcbiAgICAgIClcbiAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT5cbiAgICAgICAgdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmJpbmRUYWIpLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmJpbmRUYWIgPSB2YWx1ZTtcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XG4gICAgICAgICAgdGhpcy5kaXNwbGF5KCk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoJ1BhZCBjZWxsIHdpZHRoIHVzaW5nIHNwYWNlcycpXG4gICAgICAuc2V0RGVzYyhcbiAgICAgICAgJ0lmIGVuYWJsZWQsIHRhYmxlIGNlbGxzIHdpbGwgaGF2ZSBzcGFjZXMgYWRkZWQgdG8gbWF0Y2ggdGhlIHdpZHRoIG9mIHRoZSAnICtcbiAgICAgICAgICAnbG9uZ2VzdCBjZWxsIGluIHRoZSBjb2x1bW4uJyxcbiAgICAgIClcbiAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT5cbiAgICAgICAgdG9nZ2xlXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmZvcm1hdFR5cGUgPT09IEZvcm1hdFR5cGUuTk9STUFMKVxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmZvcm1hdFR5cGUgPSB2YWx1ZVxuICAgICAgICAgICAgICA/IEZvcm1hdFR5cGUuTk9STUFMXG4gICAgICAgICAgICAgIDogRm9ybWF0VHlwZS5XRUFLO1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5KCk7XG4gICAgICAgICAgfSksXG4gICAgICApO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZSgnU2hvdyBpY29uIGluIHNpZGViYXInKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgICdJZiBlbmFibGVkLCBhIGJ1dHRvbiB3aGljaCBvcGVucyB0aGUgdGFibGUgY29udHJvbHMgdG9vbGJhciB3aWxsIGJlIGFkZGVkIHRvIHRoZSBPYnNpZGlhbiBzaWRlYmFyLiAnICtcbiAgICAgICAgICAnVGhlIHRvb2xiYXIgY2FuIGFsc28gYmUgb3BlbmVkIHdpdGggYSBIb3RrZXkuIENoYW5nZXMgb25seSB0YWtlIGVmZmVjdCBvbiByZWxvYWQuJyxcbiAgICAgIClcbiAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT5cbiAgICAgICAgdG9nZ2xlXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLnNob3dSaWJib25JY29uKVxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnNob3dSaWJib25JY29uID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXkoKTtcbiAgICAgICAgICB9KSxcbiAgICAgICk7XG5cbiAgICBjb25zdCBkaXYgPSBjb250YWluZXJFbC5jcmVhdGVFbCgnZGl2Jywge1xuICAgICAgY2xzOiAnYWR2YW5jZWQtdGFibGVzLWRvbmF0aW9uJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGRvbmF0ZVRleHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XG4gICAgZG9uYXRlVGV4dC5hcHBlbmRUZXh0KFxuICAgICAgJ0lmIHRoaXMgcGx1Z2luIGFkZHMgdmFsdWUgZm9yIHlvdSBhbmQgeW91IHdvdWxkIGxpa2UgdG8gaGVscCBzdXBwb3J0ICcgK1xuICAgICAgICAnY29udGludWVkIGRldmVsb3BtZW50LCBwbGVhc2UgdXNlIHRoZSBidXR0b25zIGJlbG93OicsXG4gICAgKTtcbiAgICBkaXYuYXBwZW5kQ2hpbGQoZG9uYXRlVGV4dCk7XG5cbiAgICBjb25zdCBwYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7XG5cbiAgICBkaXYuYXBwZW5kQ2hpbGQoXG4gICAgICBjcmVhdGVEb25hdGVCdXR0b24oXG4gICAgICAgICdodHRwczovL3BheXBhbC5tZS90Z3Jvc2luZ2VyJyxcbiAgICAgICAgcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhwYXlwYWwsICd0ZXh0L3htbCcpLmRvY3VtZW50RWxlbWVudCxcbiAgICAgICksXG4gICAgKTtcblxuICAgIGRpdi5hcHBlbmRDaGlsZChcbiAgICAgIGNyZWF0ZURvbmF0ZUJ1dHRvbihcbiAgICAgICAgJ2h0dHBzOi8vd3d3LmJ1eW1lYWNvZmZlZS5jb20vdGdyb3NpbmdlcicsXG4gICAgICAgIHBhcnNlci5wYXJzZUZyb21TdHJpbmcoYnV5TWVBQ29mZmVlLCAndGV4dC94bWwnKS5kb2N1bWVudEVsZW1lbnQsXG4gICAgICApLFxuICAgICk7XG4gIH1cbn1cblxuY29uc3QgY3JlYXRlRG9uYXRlQnV0dG9uID0gKGxpbms6IHN0cmluZywgaW1nOiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50ID0+IHtcbiAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgYS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBsaW5rKTtcbiAgYS5hZGRDbGFzcygnYWR2YW5jZWQtdGFibGVzLWRvbmF0ZS1idXR0b24nKTtcbiAgYS5hcHBlbmRDaGlsZChpbWcpO1xuICByZXR1cm4gYTtcbn07XG5cbmNvbnN0IGJ1eU1lQUNvZmZlZSA9IGBcbjxzdmcgd2lkdGg9XCIxNTBcIiBoZWlnaHQ9XCI0MlwiIHZpZXdCb3g9XCIwIDAgMjYwIDczXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48cGF0aCBkPVwiTTAgMTEuNjhDMCA1LjIyOTMyIDUuMjI5MzEgMCAxMS42OCAwSDI0OC4yQzI1NC42NTEgMCAyNTkuODggNS4yMjkzMSAyNTkuODggMTEuNjhWNjEuMzJDMjU5Ljg4IDY3Ljc3MDcgMjU0LjY1MSA3MyAyNDguMiA3M0gxMS42OEM1LjIyOTMxIDczIDAgNjcuNzcwNyAwIDYxLjMyVjExLjY4WlwiIGZpbGw9XCIjRkZERDAwXCIvPlxuPHBhdGggZD1cIk01Mi4yNTY2IDI0LjAwNzhMNTIuMjI0NiAyMy45ODg5TDUyLjE1MDQgMjMuOTY2M0M1Mi4xODAyIDIzLjk5MTUgNTIuMjE3NiAyNC4wMDYxIDUyLjI1NjYgMjQuMDA3OFpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cbjxwYXRoIGQ9XCJNNTIuNzI0OCAyNy4zNDU3TDUyLjY4OTUgMjcuMzU1Nkw1Mi43MjQ4IDI3LjM0NTdaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XG48cGF0aCBkPVwiTTUyLjI3MDEgMjQuMDAyNEM1Mi4yNjYgMjQuMDAxOSA1Mi4yNjE5IDI0LjAwMDkgNTIuMjU4IDIzLjk5OTVDNTIuMjU3OCAyNC4wMDIyIDUyLjI1NzggMjQuMDA0OSA1Mi4yNTggMjQuMDA3NkM1Mi4yNjI0IDI0LjAwNyA1Mi4yNjY2IDI0LjAwNTIgNTIuMjcwMSAyNC4wMDI0WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxuPHBhdGggZD1cIk01Mi4yNTc4IDI0LjAwOTRINTIuMjY0M1YyNC4wMDU0TDUyLjI1NzggMjQuMDA5NFpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cbjxwYXRoIGQ9XCJNNTIuNjk3MyAyNy4zMzk0TDUyLjc1MTMgMjcuMzA4Nkw1Mi43NzE0IDI3LjI5NzNMNTIuNzg5NyAyNy4yNzc4QzUyLjc1NTQgMjcuMjkyNiA1Mi43MjQxIDI3LjMxMzUgNTIuNjk3MyAyNy4zMzk0WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxuPHBhdGggZD1cIk01Mi4zNDg0IDI0LjA4MTJMNTIuMjk1NiAyNC4wMzFMNTIuMjU5OCAyNC4wMTE1QzUyLjI3OSAyNC4wNDU0IDUyLjMxMDggMjQuMDcwNSA1Mi4zNDg0IDI0LjA4MTJaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XG48cGF0aCBkPVwiTTM5LjA2ODQgNTYuNDY5QzM5LjAyNjIgNTYuNDg3MiAzOC45ODkzIDU2LjUxNTggMzguOTYwOSA1Ni41NTJMMzguOTk0MyA1Ni41MzA2QzM5LjAxNjkgNTYuNTA5OCAzOS4wNDg5IDU2LjQ4NTMgMzkuMDY4NCA1Ni40NjlaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XG48cGF0aCBkPVwiTTQ2Ljc4MDIgNTQuOTUxOEM0Ni43ODAyIDU0LjkwNDEgNDYuNzU2OSA1NC45MTI5IDQ2Ljc2MjYgNTUuMDgyNkM0Ni43NjI2IDU1LjA2ODcgNDYuNzY4MyA1NS4wNTQ5IDQ2Ljc3MDggNTUuMDQxN0M0Ni43NzM5IDU1LjAxMTUgNDYuNzc2NCA1NC45ODIgNDYuNzgwMiA1NC45NTE4WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxuPHBhdGggZD1cIk00NS45ODQ0IDU2LjQ2OUM0NS45NDIyIDU2LjQ4NzIgNDUuOTA1MyA1Ni41MTU4IDQ1Ljg3NyA1Ni41NTJMNDUuOTEwMyA1Ni41MzA2QzQ1LjkzMjkgNTYuNTA5OCA0NS45NjQ5IDU2LjQ4NTMgNDUuOTg0NCA1Ni40NjlaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XG48cGF0aCBkPVwiTTMzLjYzMDcgNTYuODMwMUMzMy41OTg3IDU2LjgwMjMgMzMuNTU5NSA1Ni43ODQgMzMuNTE3NiA1Ni43NzczQzMzLjU1MTUgNTYuNzkzNyAzMy41ODU1IDU2LjgxIDMzLjYwODEgNTYuODIyNkwzMy42MzA3IDU2LjgzMDFaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XG48cGF0aCBkPVwiTTMyLjQxMTggNTUuNjU5OEMzMi40MDY4IDU1LjYxMDMgMzIuMzkxNiA1NS41NjI0IDMyLjM2NzIgNTUuNTE5QzMyLjM4NDUgNTUuNTY0MiAzMi4zOTkgNTUuNjEwNCAzMi40MTA2IDU1LjY1NzNMMzIuNDExOCA1NS42NTk4WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxuPHBhdGggZD1cIk00MC42MjMgMzQuNzIyMUMzOC45NDQ5IDM1LjQ0MDUgMzcuMDQwNCAzNi4yNTUxIDM0LjU3MjIgMzYuMjU1MUMzMy41Mzk3IDM2LjI1MzEgMzIuNTEyMiAzNi4xMTE0IDMxLjUxNzYgMzUuODM0TDMzLjIyNDcgNTMuMzYwNUMzMy4yODUxIDU0LjA5MyAzMy42MTg4IDU0Ljc3NjEgMzQuMTU5NSA1NS4yNzM5QzM0LjcwMDMgNTUuNzcxOCAzNS40MDg1IDU2LjA0ODIgMzYuMTQzNSA1Ni4wNDhDMzYuMTQzNSA1Ni4wNDggMzguNTY0IDU2LjE3MzcgMzkuMzcxNiA1Ni4xNzM3QzQwLjI0MDkgNTYuMTczNyA0Mi44NDc0IDU2LjA0OCA0Mi44NDc0IDU2LjA0OEM0My41ODIzIDU2LjA0OCA0NC4yOTA0IDU1Ljc3MTYgNDQuODMxIDU1LjI3MzdDNDUuMzcxNiA1NC43NzU5IDQ1LjcwNTIgNTQuMDkyOSA0NS43NjU2IDUzLjM2MDVMNDcuNTk0IDMzLjk5M0M0Ni43NzY5IDMzLjcxNCA0NS45NTIzIDMzLjUyODYgNDUuMDIyNyAzMy41Mjg2QzQzLjQxNSAzMy41Mjc5IDQyLjExOTYgMzQuMDgxNyA0MC42MjMgMzQuNzIyMVpcIiBmaWxsPVwid2hpdGVcIi8+XG48cGF0aCBkPVwiTTI2LjIzNDQgMjcuMjQ0OUwyNi4yNjMzIDI3LjI3MTlMMjYuMjgyMSAyNy4yODMyQzI2LjI2NzYgMjcuMjY4OCAyNi4yNTE2IDI3LjI1NTkgMjYuMjM0NCAyNy4yNDQ5WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxuPHBhdGggZD1cIk01NS40OTA2IDI1LjYyNzRMNTUuMjMzNiAyNC4zMzA3QzU1LjAwMjkgMjMuMTY3MyA1NC40NzkzIDIyLjA2OCA1My4yODUxIDIxLjY0NzVDNTIuOTAyNCAyMS41MTMgNTIuNDY4IDIxLjQ1NTIgNTIuMTc0NSAyMS4xNzY4QzUxLjg4MSAyMC44OTgzIDUxLjc5NDMgMjAuNDY1OSA1MS43MjY0IDIwLjA2NDlDNTEuNjAwNyAxOS4zMjg5IDUxLjQ4MjUgMTguNTkyMyA1MS4zNTM3IDE3Ljg1NzVDNTEuMjQyNCAxNy4yMjU5IDUxLjE1NDQgMTYuNTE2MyA1MC44NjQ3IDE1LjkzNjhDNTAuNDg3NiAxNS4xNTg2IDQ5LjcwNSAxNC43MDM2IDQ4LjkyNjkgMTQuNDAyNUM0OC41MjgyIDE0LjI1MzcgNDguMTIxMyAxNC4xMjc4IDQ3LjcwODIgMTQuMDI1NEM0NS43NjQyIDEzLjUxMjUgNDMuNzIwMiAxMy4zMjQgNDEuNzIwMiAxMy4yMTY1QzM5LjMxOTcgMTMuMDg0IDM2LjkxMjggMTMuMTIzOSAzNC41MTggMTMuMzM1OUMzMi43MzU1IDEzLjQ5ODEgMzAuODU4MSAxMy42OTQyIDI5LjE2NDIgMTQuMzEwOEMyOC41NDUxIDE0LjUzNjQgMjcuOTA3MSAxNC44MDczIDI3LjQzNjQgMTUuMjg1NkMyNi44NTg3IDE1Ljg3MzMgMjYuNjcwMiAxNi43ODIxIDI3LjA5MTkgMTcuNTE1QzI3LjM5MTcgMTguMDM1NCAyNy44OTk2IDE4LjQwMzEgMjguNDM4MiAxOC42NDYzQzI5LjEzOTggMTguOTU5NyAyOS44NzI2IDE5LjE5ODIgMzAuNjI0MiAxOS4zNTc4QzMyLjcxNzIgMTkuODIwNCAzNC44ODUgMjAuMDAyMSAzNy4wMjMzIDIwLjA3OTRDMzkuMzkzMiAyMC4xNzUgNDEuNzY3IDIwLjA5NzUgNDQuMTI1NiAxOS44NDc0QzQ0LjcwODkgMTkuNzgzMyA0NS4yOTExIDE5LjcwNjQgNDUuODcyMyAxOS42MTY4QzQ2LjU1NjggMTkuNTExOCA0Ni45OTYxIDE4LjYxNjggNDYuNzk0MyAxNy45OTMzQzQ2LjU1MyAxNy4yNDc5IDQ1LjkwNDQgMTYuOTU4NyA0NS4xNzA5IDE3LjA3MTJDNDUuMDYyOCAxNy4wODgyIDQ0Ljk1NTMgMTcuMTAzOSA0NC44NDcyIDE3LjExOTZMNDQuNzY5MiAxNy4xMzFDNDQuNTIwOCAxNy4xNjI0IDQ0LjI3MjMgMTcuMTkxNyA0NC4wMjM4IDE3LjIxOUM0My41MTA1IDE3LjI3NDMgNDIuOTk1OSAxNy4zMTk1IDQyLjQ4MDEgMTcuMzU0N0M0MS4zMjQ5IDE3LjQzNTIgNDAuMTY2NSAxNy40NzIyIDM5LjAwODggMTcuNDc0MUMzNy44NzEyIDE3LjQ3NDEgMzYuNzMyOSAxNy40NDIxIDM1LjU5NzggMTcuMzY3M0MzNS4wNzk5IDE3LjMzMzMgMzQuNTYzMiAxNy4yOTAyIDM0LjA0NzggMTcuMjM3OEMzMy44MTM0IDE3LjIxMzMgMzMuNTc5NiAxNy4xODc1IDMzLjM0NTggMTcuMTU4NkwzMy4xMjMzIDE3LjEzMDNMMzMuMDc0OSAxNy4xMjM0TDMyLjg0NDIgMTcuMDkwMUMzMi4zNzI4IDE3LjAxOTEgMzEuOTAxNCAxNi45Mzc0IDMxLjQzNSAxNi44Mzg3QzMxLjM4OCAxNi44MjgzIDMxLjM0NTkgMTYuODAyMSAzMS4zMTU3IDE2Ljc2NDVDMzEuMjg1NiAxNi43MjY5IDMxLjI2OTEgMTYuNjgwMSAzMS4yNjkxIDE2LjYzMTlDMzEuMjY5MSAxNi41ODM3IDMxLjI4NTYgMTYuNTM2OSAzMS4zMTU3IDE2LjQ5OTNDMzEuMzQ1OSAxNi40NjE3IDMxLjM4OCAxNi40MzU2IDMxLjQzNSAxNi40MjUxSDMxLjQ0MzhDMzEuODQ4IDE2LjMzOSAzMi4yNTUzIDE2LjI2NTUgMzIuNjYzOCAxNi4yMDE0QzMyLjggMTYuMTggMzIuOTM2NiAxNi4xNTkgMzMuMDczNiAxNi4xMzg1SDMzLjA3NzRDMzMuMzMzMiAxNi4xMjE1IDMzLjU5MDMgMTYuMDc1NyAzMy44NDQ4IDE2LjA0NTVDMzYuMDU5NSAxNS44MTUxIDM4LjI4NzQgMTUuNzM2NiA0MC41MTI4IDE1LjgxMDRDNDEuNTkzMyAxNS44NDE5IDQyLjY3MzEgMTUuOTA1MyA0My43NDg1IDE2LjAxNDdDNDMuOTc5OCAxNi4wMzg2IDQ0LjIwOTggMTYuMDYzNyA0NC40Mzk5IDE2LjA5MkM0NC41Mjc5IDE2LjEwMjcgNDQuNjE2NSAxNi4xMTUzIDQ0LjcwNTEgMTYuMTI1OUw0NC44ODM2IDE2LjE1MTdDNDUuNDA0IDE2LjIyOTIgNDUuOTIxNyAxNi4zMjMzIDQ2LjQzNjcgMTYuNDMzOUM0Ny4xOTk3IDE2LjU5OTkgNDguMTc5NiAxNi42NTM5IDQ4LjUxOSAxNy40ODk4QzQ4LjYyNzEgMTcuNzU1MSA0OC42NzYxIDE4LjA0OTkgNDguNzM1OSAxOC4zMjgzTDQ4LjgxMTkgMTguNjgzNEM0OC44MTM5IDE4LjY4OTggNDguODE1NCAxOC42OTYzIDQ4LjgxNjMgMTguNzAyOUM0OC45OTYxIDE5LjU0MDkgNDkuMTc2IDIwLjM3OSA0OS4zNTYyIDIxLjIxN0M0OS4zNjk0IDIxLjI3ODkgNDkuMzY5NyAyMS4zNDI5IDQ5LjM1NzEgMjEuNDA0OUM0OS4zNDQ1IDIxLjQ2NjkgNDkuMzE5MyAyMS41MjU3IDQ5LjI4MjkgMjEuNTc3NkM0OS4yNDY2IDIxLjYyOTQgNDkuMiAyMS42NzMyIDQ5LjE0NiAyMS43MDYyQzQ5LjA5MiAyMS43MzkyIDQ5LjAzMTcgMjEuNzYwOCA0OC45NjkgMjEuNzY5NUg0OC45NjRMNDguODU0IDIxLjc4NDZMNDguNzQ1MyAyMS43OTlDNDguNDAwOSAyMS44NDM5IDQ4LjA1NiAyMS44ODU4IDQ3LjcxMDcgMjEuOTI0N0M0Ny4wMzA3IDIyLjAwMjIgNDYuMzQ5NiAyMi4wNjkzIDQ1LjY2NzQgMjIuMTI1OUM0NC4zMTE5IDIyLjIzODYgNDIuOTUzNiAyMi4zMTI1IDQxLjU5MjcgMjIuMzQ3N0M0MC44OTkyIDIyLjM2NjIgNDAuMjA1OSAyMi4zNzQ4IDM5LjUxMjkgMjIuMzczNUMzNi43NTQzIDIyLjM3MTMgMzMuOTk4MSAyMi4yMTEgMzEuMjU3OCAyMS44OTMzQzMwLjk2MTEgMjEuODU4MSAzMC42NjQ1IDIxLjgyMDQgMzAuMzY3OCAyMS43ODIxQzMwLjU5NzggMjEuODExNiAzMC4yMDA2IDIxLjc1OTQgMzAuMTIwMiAyMS43NDgxQzI5LjkzMTYgMjEuNzIxNyAyOS43NDMxIDIxLjY5NDMgMjkuNTU0NSAyMS42NjU4QzI4LjkyMTYgMjEuNTcwOSAyOC4yOTI0IDIxLjQ1NCAyNy42NjA3IDIxLjM1MTVDMjYuODk3MSAyMS4yMjU4IDI2LjE2NjcgMjEuMjg4NyAyNS40NzYgMjEuNjY1OEMyNC45MDkgMjEuOTc2IDI0LjQ1MDEgMjIuNDUxOCAyNC4xNjA1IDIzLjAyOTdDMjMuODYyNiAyMy42NDU2IDIzLjc3MzkgMjQuMzE2MyAyMy42NDA3IDI0Ljk3ODFDMjMuNTA3NCAyNS42Mzk5IDIzLjMgMjYuMzUyMSAyMy4zNzg2IDI3LjAzMTVDMjMuNTQ3NyAyOC40OTc5IDI0LjU3MjggMjkuNjg5NSAyNi4wNDczIDI5Ljk1NkMyNy40MzQ1IDMwLjIwNzQgMjguODI5MiAzMC40MTExIDMwLjIyNzYgMzAuNTg0NkMzNS43MjEyIDMxLjI1NzQgNDEuMjcxMSAzMS4zMzc5IDQ2Ljc4MTggMzAuODI0N0M0Ny4yMzA1IDMwLjc4MjggNDcuNjc4NyAzMC43MzcxIDQ4LjEyNjIgMzAuNjg3NkM0OC4yNjYgMzAuNjcyMyA0OC40MDc0IDMwLjY4ODQgNDguNTQwMSAzMC43MzQ4QzQ4LjY3MjkgMzAuNzgxMiA0OC43OTM2IDMwLjg1NjYgNDguODkzNCAzMC45NTU3QzQ4Ljk5MzIgMzEuMDU0OCA0OS4wNjk1IDMxLjE3NDkgNDkuMTE2OSAzMS4zMDczQzQ5LjE2NDIgMzEuNDM5NyA0OS4xODE0IDMxLjU4MTEgNDkuMTY3IDMxLjcyMDlMNDkuMDI3NSAzMy4wNzczQzQ4Ljc0NjMgMzUuODE4MSA0OC40NjUyIDM4LjU1ODcgNDguMTg0IDQxLjI5OUM0Ny44OTA3IDQ0LjE3NjkgNDcuNTk1NSA0Ny4wNTQ1IDQ3LjI5ODQgNDkuOTMxOUM0Ny4yMTQ2IDUwLjc0MjIgNDcuMTMwOCA1MS41NTI0IDQ3LjA0NyA1Mi4zNjI0QzQ2Ljk2NjYgNTMuMTYgNDYuOTU1MiA1My45ODI3IDQ2LjgwMzggNTQuNzcwOUM0Ni41NjQ5IDU2LjAxMDMgNDUuNzI1OCA1Ni43NzE1IDQ0LjUwMTUgNTcuMDQ5OUM0My4zNzk4IDU3LjMwNTIgNDIuMjMzOSA1Ny40MzkyIDQxLjA4MzYgNTcuNDQ5N0MzOS44MDgzIDU3LjQ1NjYgMzguNTMzNiA1Ny40IDM3LjI1ODMgNTcuNDA2OUMzNS44OTcgNTcuNDE0NSAzNC4yMjk1IDU3LjI4ODcgMzMuMTc4NiA1Ni4yNzU2QzMyLjI1NTMgNTUuMzg1NiAzMi4xMjc3IDUzLjk5MjEgMzIuMDAyIDUyLjc4NzJDMzEuODM0NCA1MS4xOTIgMzEuNjY4MiA0OS41OTcxIDMxLjUwMzYgNDguMDAyM0wzMC41Nzk2IDM5LjEzNDRMMjkuOTgxOSAzMy4zOTY2QzI5Ljk3MTggMzMuMzAxNyAyOS45NjE4IDMzLjIwOCAyOS45NTI0IDMzLjExMjVDMjkuODgwNyAzMi40MjggMjkuMzk2MSAzMS43NTggMjguNjMyNCAzMS43OTI2QzI3Ljk3ODggMzEuODIxNSAyNy4yMzU5IDMyLjM3NzEgMjcuMzEyNSAzMy4xMTI1TDI3Ljc1NTcgMzcuMzY2NEwyOC42NzIgNDYuMTY1N0MyOC45MzMxIDQ4LjY2NTIgMjkuMTkzNSA1MS4xNjUgMjkuNDUzMyA1My42NjUzQzI5LjUwMzYgNTQuMTQ0MiAyOS41NTA3IDU0LjYyNDQgMjkuNjAzNSA1NS4xMDM0QzI5Ljg5MDggNTcuNzIwNSAzMS44ODk1IDU5LjEzMSAzNC4zNjQ2IDU5LjUyODJDMzUuODEwMiA1OS43NjA3IDM3LjI5MSA1OS44MDg1IDM4Ljc1OCA1OS44MzI0QzQwLjYzODYgNTkuODYyNiA0Mi41MzggNTkuOTM0OCA0NC4zODc3IDU5LjU5NDJDNDcuMTI4NyA1OS4wOTE0IDQ5LjE4NTMgNTcuMjYxMSA0OS40Nzg4IDU0LjQyMkM0OS41NjI2IDUzLjYwMjQgNDkuNjQ2NCA1Mi43ODI2IDQ5LjczMDIgNTEuOTYyNkM1MC4wMDg4IDQ5LjI1MDcgNTAuMjg3MSA0Ni41Mzg2IDUwLjU2NDkgNDMuODI2M0w1MS40NzM3IDM0Ljk2NDFMNTEuODkwNCAzMC45MDI2QzUxLjkxMTIgMzAuNzAxMiA1MS45OTYyIDMwLjUxMTggNTIuMTMzIDMwLjM2MjVDNTIuMjY5NyAzMC4yMTMyIDUyLjQ1MDkgMzAuMTExOSA1Mi42NDk3IDMwLjA3MzZDNTMuNDMzNSAyOS45MjA4IDU0LjE4MjcgMjkuNjYgNTQuNzQwMiAyOS4wNjM1QzU1LjYyNzcgMjguMTEzOCA1NS44MDQzIDI2Ljg3NTYgNTUuNDkwNiAyNS42Mjc0Wk0yNi4wMDcxIDI2LjUwMzVDMjYuMDE5IDI2LjQ5NzkgMjUuOTk3IDI2LjYwMDMgMjUuOTg3NiAyNi42NDgxQzI1Ljk4NTcgMjYuNTc1OCAyNS45ODk1IDI2LjUxMTcgMjYuMDA3MSAyNi41MDM1Wk0yNi4wODMxIDI3LjA5MThDMjYuMDg5NCAyNy4wODc0IDI2LjEwODMgMjcuMTEyNiAyNi4xMjc4IDI3LjE0MjhDMjYuMDk4MiAyNy4xMTUxIDI2LjA3OTQgMjcuMDk0NCAyNi4wODI1IDI3LjA5MThIMjYuMDgzMVpNMjYuMTU3OSAyNy4xOTA1QzI2LjE4NSAyNy4yMzY0IDI2LjE5OTQgMjcuMjY1MyAyNi4xNTc5IDI3LjE5MDVWMjcuMTkwNVpNMjYuMzA4MiAyNy4zMTI1SDI2LjMxMTlDMjYuMzExOSAyNy4zMTY5IDI2LjMxODggMjcuMzIxMyAyNi4zMjE0IDI3LjMyNTdDMjYuMzE3MiAyNy4zMjA4IDI2LjMxMjYgMjcuMzE2NCAyNi4zMDc1IDI3LjMxMjVIMjYuMzA4MlpNNTIuNjEzMiAyNy4xMzAyQzUyLjMzMTcgMjcuMzk3OSA1MS45MDc0IDI3LjUyMjQgNTEuNDg4MiAyNy41ODQ2QzQ2Ljc4NjggMjguMjgyMyA0Mi4wMTY5IDI4LjYzNTUgMzcuMjY0IDI4LjQ3OTZDMzMuODYyNCAyOC4zNjMzIDMwLjQ5NjcgMjcuOTg1NiAyNy4xMjkgMjcuNTA5OEMyNi43OTkgMjcuNDYzMyAyNi40NDE0IDI3LjQwMyAyNi4yMTQ1IDI3LjE1OTdDMjUuNzg3MSAyNi43MDA5IDI1Ljk5NyAyNS43NzcgMjYuMTA4MyAyNS4yMjI2QzI2LjIxMDEgMjQuNzE0OCAyNi40MDUgMjQuMDM3OCAyNy4wMDkgMjMuOTY1NkMyNy45NTE4IDIzLjg1NDkgMjkuMDQ2NiAyNC4yNTI4IDI5Ljk3OTQgMjQuMzk0MkMzMS4xMDIzIDI0LjU2NTYgMzIuMjI5NSAyNC43MDI4IDMzLjM2MDkgMjQuODA1OUMzOC4xODkyIDI1LjI0NTkgNDMuMDk4NiAyNS4xNzc0IDQ3LjkwNTYgMjQuNTMzN0M0OC43ODE3IDI0LjQxNiA0OS42NTQ4IDI0LjI3OTIgNTAuNTI0NiAyNC4xMjMzQzUxLjI5OTYgMjMuOTg0NCA1Mi4xNTg4IDIzLjcyMzYgNTIuNjI3MSAyNC41MjYyQzUyLjk0ODIgMjUuMDczIDUyLjk5MSAyNS44MDQ2IDUyLjk0MTMgMjYuNDIyNUM1Mi45MjYgMjYuNjkxNyA1Mi44MDg0IDI2Ljk0NDggNTIuNjEyNiAyNy4xMzAySDUyLjYxMzJaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XG48cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNODEuMTMwMiA0MC4xOTI5QzgwLjg1NTYgNDAuNzE2OSA4MC40NzgxIDQxLjE3MzIgNzkuOTk3OCA0MS41NjA0Qzc5LjUxNzUgNDEuOTQ3OSA3OC45NTcxIDQyLjI2MzMgNzguMzE2NiA0Mi41MDYyQzc3LjY3NjEgNDIuNzQ5NyA3Ny4wMzE1IDQyLjkxMzEgNzYuMzgzNSA0Mi45OTY0Qzc1LjczNTIgNDMuMDc5OSA3NS4xMDYgNDMuMDcyNyA3NC40OTYzIDQyLjk3MzVDNzMuODg2MyA0Mi44NzQ5IDczLjM2NzQgNDIuNjczNyA3Mi45NDA4IDQyLjM2OTVMNzMuNDIxNCAzNy4zNzc5QzczLjg2MzMgMzcuMjI2MSA3NC40MTk3IDM3LjA3MDMgNzUuMDkwOSAzNi45MTA3Qzc1Ljc2MTkgMzYuNzUxMyA3Ni40NTIgMzYuNjM3MSA3Ny4xNjEzIDM2LjU2ODlDNzcuODcwNSAzNi41MDAzIDc4LjU0MTIgMzYuNTA4NCA3OS4xNzQ0IDM2LjU5MTdDNzkuODA2OCAzNi42NzUzIDgwLjMwNjUgMzYuODc2NSA4MC42NzI1IDM3LjE5NThDODAuODcwNyAzNy4zNzggODEuMDM4NyAzNy41NzU0IDgxLjE3NiAzNy43ODgzQzgxLjMxMyAzOC4wMDExIDgxLjM5NjkgMzguMjIxNCA4MS40Mjc2IDM4LjQ0OTNDODEuNTAzNyAzOS4wODc1IDgxLjQwNDcgMzkuNjY4NyA4MS4xMzAyIDQwLjE5MjlaTTc0LjE1MyAyOS41NjAyQzc0LjQ3MzQgMjkuMzYyNyA3NC44NTg1IDI5LjE4NzcgNzUuMzA4MyAyOS4wMzU2Qzc1Ljc1ODEgMjguODg0MSA3Ni4yMTk1IDI4Ljc3NzQgNzYuNjkyMyAyOC43MTY3Qzc3LjE2NDggMjguNjU2MiA3Ny42MjYyIDI4LjY0ODEgNzguMDc2MyAyOC42OTM4Qzc4LjUyNTggMjguNzM5NSA3OC45MjI4IDI4Ljg2NDcgNzkuMjY1OSAyOS4wNjk3Qzc5LjYwODkgMjkuMjc1MSA3OS44NjQzIDI5LjU3MTQgODAuMDMyIDI5Ljk1ODZDODAuMTk5NyAzMC4zNDY0IDgwLjI0NTYgMzAuODM2NSA4MC4xNjkzIDMxLjQyOUM4MC4xMDgzIDMxLjkwMDEgNzkuOTIxMSAzMi4yOTkxIDc5LjYwODkgMzIuNjI1NkM3OS4yOTYzIDMyLjk1MjYgNzguOTE0NyAzMy4yMjU5IDc4LjQ2NTIgMzMuNDQ2MkM3OC4wMTU0IDMzLjY2NjggNzcuNTM4OCAzMy44NDE1IDc3LjAzNTYgMzMuOTcwMkM3Ni41MzIxIDM0LjA5OTcgNzYuMDQ3NyAzNC4xOTQ5IDc1LjU4MjggMzQuMjU1M0M3NS4xMTc2IDM0LjMxNjMgNzQuNzEzNyAzNC4zNTQ1IDc0LjM3MDYgMzQuMzY5MkM3NC4wMjczIDM0LjM4NDUgNzMuODAyMSAzNC4zOTIxIDczLjY5NTYgMzQuMzkyMUw3NC4xNTMgMjkuNTYwMlpNODMuNjAwNyAzNi45Njc2QzgzLjM1NjYgMzYuNDM2MSA4My4wMjg3IDM1Ljk2ODkgODIuNjE3MiAzNS41NjU4QzgyLjIwNTQgMzUuMTYzMyA4MS43MTcgMzQuODcwOSA4MS4xNTMxIDM0LjY4ODVDODEuMzk2OSAzNC40OTEgODEuNjM3MSAzNC4xNzk1IDgxLjg3MzcgMzMuNzUzOUM4Mi4xMDk5IDMzLjMyODggODIuMzExOSAzMi44NjUgODIuNDc5NiAzMi4zNjM2QzgyLjY0NzQgMzEuODYxOSA4Mi43NjIgMzEuMzU3IDgyLjgyMjkgMzAuODQ3OEM4Mi44ODM2IDMwLjMzODkgODIuODYwNyAyOS45MDIgODIuNzU0NCAyOS41MzdDODIuNDk0NyAyOC42MjU2IDgyLjA4NyAyNy45MTE0IDgxLjUzMDMgMjcuMzk0NkM4MC45NzM0IDI2Ljg3ODIgODAuMzI1NyAyNi41MjExIDc5LjU4NiAyNi4zMjMzQzc4Ljg0NjIgMjYuMTI2NCA3OC4wMzA0IDI2LjA4NDIgNzcuMTM4MyAyNi4xOTgxQzc2LjI0NjIgMjYuMzEyIDc1LjMzNDcgMjYuNTM2MSA3NC40MDQ5IDI2Ljg3MDRDNzQuNDA0OSAyNi43OTQ2IDc0LjQxMjQgMjYuNzE0OCA3NC40Mjc4IDI2LjYzMTJDNzQuNDQyNiAyNi41NDggNzQuNDUwNCAyNi40NjA0IDc0LjQ1MDQgMjYuMzY5Qzc0LjQ1MDQgMjYuMTQxMSA3NC4zMzYxIDI1Ljk0MzkgNzQuMTA3NCAyNS43NzY1QzczLjg3ODcgMjUuNjA5MyA3My42MTU1IDI1LjUxMDcgNzMuMzE4MyAyNS40ODAxQzczLjAyMDkgMjUuNDUgNzIuNzMxIDI1LjUxNDIgNzIuNDQ4OSAyNS42NzM4QzcyLjE2NjUgMjUuODMzNCA3MS45NzIxIDI2LjEyNjQgNzEuODY1NiAyNi41NTExQzcxLjc0MzQgMjcuOTE4OSA3MS42MjE1IDI5LjMzOTggNzEuNDk5NiAzMC44MTM0QzcxLjM3NzQgMzIuMjg3NSA3MS4yNDggMzMuNzc2NyA3MS4xMTA3IDM1LjI4MTJDNzAuOTczNSAzNi43ODU1IDcwLjgzNjIgMzguMjc4NCA3MC42OTg5IDM5Ljc1OThDNzAuNTYxNiA0MS4yNDE0IDcwLjQyNDQgNDIuNjY1OSA3MC4yODcxIDQ0LjAzMzNDNzAuMzMzIDQ0LjQ0MzYgNzAuNDQ3MyA0NC43NjI5IDcwLjYzMDQgNDQuOTkwN0M3MC44MTMzIDQ1LjIxODkgNzEuMDI2OCA0NS4zNTU2IDcxLjI3MDkgNDUuNDAxQzcxLjUxNDcgNDUuNDQ2NyA3MS43NzA0IDQ1LjQwNDUgNzIuMDM3MSA0NS4yNzU1QzcyLjMwMzggNDUuMTQ2OSA3Mi41MzY1IDQ0LjkyMjIgNzIuNzM1IDQ0LjYwMzJDNzMuMzQ0NyA0NC45Mzc1IDc0LjAzMTEgNDUuMTU0MSA3NC43OTM4IDQ1LjI1M0M3NS41NTYxIDQ1LjM1MTYgNzYuMzI5OCA0NS4zNTE2IDc3LjExNTcgNDUuMjUzQzc3LjkwMDcgNDUuMTU0MSA3OC42NzQ3IDQ0Ljk2ODIgNzkuNDM3NCA0NC42OTQzQzgwLjE5OTcgNDQuNDIxMSA4MC44OTM2IDQ0LjA3OSA4MS41MTkgNDMuNjY5QzgyLjE0NDEgNDMuMjU4NiA4Mi42NzAzIDQyLjc5MTEgODMuMDk3NSA0Mi4yNjcxQzgzLjUyNDQgNDEuNzQyNiA4My44MDY1IDQxLjE3NjcgODMuOTQzNyA0MC41NjkxQzg0LjA4MSAzOS45NDYgODQuMTE5IDM5LjMyMzEgODQuMDU4MSAzOC43QzgzLjk5NzEgMzguMDc3MSA4My44NDQ1IDM3LjUgODMuNjAwNyAzNi45Njc2WlwiIGZpbGw9XCIjMEQwQzIzXCIvPlxuPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTEwNS45MTUgNDkuMDAxN0MxMDUuODMyIDQ5LjUwMzEgMTA1LjcxMyA1MC4wMzExIDEwNS41NjEgNTAuNTg2QzEwNS40MDggNTEuMTQwMyAxMDUuMjI5IDUxLjY0NTggMTA1LjAyMyA1Mi4xMDE4QzEwNC44MTggNTIuNTU3NSAxMDQuNTg5IDUyLjkyNTYgMTA0LjMzNyA1My4yMDdDMTA0LjA4NSA1My40ODggMTAzLjgxNSA1My42MDYgMTAzLjUyNSA1My41NjA2QzEwMy4yOTYgNTMuNTI5NyAxMDMuMTUxIDUzLjM4NTQgMTAzLjA5MSA1My4xMjc0QzEwMy4wMjkgNTIuODY4NiAxMDMuMDI5IDUyLjU0OTcgMTAzLjA5MSA1Mi4xN0MxMDMuMTUxIDUxLjc5MDEgMTAzLjI2OSA1MS4zNjA3IDEwMy40NDUgNTAuODgyMUMxMDMuNjIgNTAuNDAzNSAxMDMuODM0IDQ5LjkyODQgMTA0LjA4NSA0OS40NTc3QzEwNC4zMzcgNDguOTg2NCAxMDQuNjIzIDQ4LjUzNDcgMTA0Ljk0MyA0OC4xMDE1QzEwNS4yNjQgNDcuNjY4NiAxMDUuNTk5IDQ3LjMwNzUgMTA1Ljk1IDQ3LjAxODlDMTA2LjAyNiA0Ny4xMSAxMDYuMDYgNDcuMzM3OCAxMDYuMDUzIDQ3LjcwMjhDMTA2LjA0NSA0OC4wNjc0IDEwNS45OTkgNDguNTAwNiAxMDUuOTE1IDQ5LjAwMTdaTTExMy42NyAzOS4xMDk3QzExMy40NjQgMzguODgxOSAxMTMuMjEzIDM4Ljc1MjkgMTEyLjkxNSAzOC43MjIzQzExMi42MTggMzguNjkxOSAxMTIuMzE3IDM4Ljg1OSAxMTIuMDEyIDM5LjIyMzdDMTExLjgxMyAzOS41ODgzIDExMS41NjIgMzkuOTM3OSAxMTEuMjU3IDQwLjI3MjJDMTEwLjk1MiA0MC42MDY3IDExMC42MzUgNDAuOTEwMyAxMTAuMzA3IDQxLjE4MzlDMTA5Ljk4IDQxLjQ1NzIgMTA5LjY2NyA0MS42OTMxIDEwOS4zNyA0MS44OTAzQzEwOS4wNzIgNDIuMDg4MSAxMDguODQgNDIuMjMyNCAxMDguNjcyIDQyLjMyMzVDMTA4LjYxMSA0MS44Mzc0IDEwOC41NzYgNDEuMzEzMiAxMDguNTY5IDQwLjc1MDdDMTA4LjU2MSA0MC4xODg2IDEwOC41NzMgMzkuNjE5IDEwOC42MDMgMzkuMDQxNUMxMDguNjQ5IDM4LjIyMDkgMTA4Ljc0NCAzNy4zOTMgMTA4Ljg4OSAzNi41NTdDMTA5LjAzNCAzNS43MjEzIDEwOS4yNDQgMzQuOTAwNyAxMDkuNTE4IDM0LjA5NTFDMTA5LjUxOCAzMy42NyAxMDkuNDE5IDMzLjMyNDIgMTA5LjIyMSAzMy4wNTgyQzEwOS4wMjIgMzIuNzkyNCAxMDguNzgyIDMyLjYyNSAxMDguNSAzMi41NTY3QzEwOC4yMTggMzIuNDg4NSAxMDcuOTI5IDMyLjUyNjQgMTA3LjYzMSAzMi42NzA3QzEwNy4zMzQgMzIuODE1MyAxMDcuMDc4IDMzLjA3NzUgMTA2Ljg2NSAzMy40NTY5QzEwNi42ODIgMzMuOTU4NiAxMDYuNDcyIDM0LjUyMDcgMTA2LjIzNiAzNS4xNDM2QzEwNS45OTkgMzUuNzY2NyAxMDUuNzMyIDM2LjQwMTIgMTA1LjQzNSAzNy4wNDY5QzEwNS4xMzggMzcuNjkzMSAxMDQuODA2IDM4LjMxOTcgMTA0LjQ0IDM4LjkyNzNDMTA0LjA3NCAzOS41MzU0IDEwMy42NzQgNDAuMDc1IDEwMy4yMzkgNDAuNTQ1N0MxMDIuODA0IDQxLjAxNjggMTAyLjMzMSA0MS4zODU0IDEwMS44MjEgNDEuNjUxMkMxMDEuMzEgNDEuOTE3MiAxMDAuNzU3IDQyLjAzNDkgMTAwLjE2MiA0Mi4wMDQ1Qzk5Ljg4NzYgNDEuOTI4NSA5OS42ODkzIDQxLjcyMzUgOTkuNTY3NSA0MS4zODg5Qzk5LjQ0NTMgNDEuMDU0OSA5OS4zNzMgNDAuNjM2OCA5OS4zNTA0IDQwLjEzNTRDOTkuMzI3NSAzOS42MzQgOTkuMzUwNCAzOS4wODMxIDk5LjQxODkgMzguNDgyOEM5OS40ODc3IDM3Ljg4MjggOTkuNTc5MSAzNy4yODYzIDk5LjY5MzQgMzYuNjkzOEM5OS44MDc4IDM2LjEwMSA5OS45MzM3IDM1LjUzODkgMTAwLjA3MSAzNS4wMDcxQzEwMC4yMDggMzQuNDc1MyAxMDAuMzM3IDM0LjAyNjggMTAwLjQ2IDMzLjY2MjJDMTAwLjY0MyAzMy4yMjE4IDEwMC42NDMgMzIuODUyOSAxMDAuNDYgMzIuNTU2N0MxMDAuMjc3IDMyLjI2MDQgMTAwLjAyNSAzMi4wNjMxIDk5LjcwNSAzMS45NjRDOTkuMzg0NiAzMS44NjU0IDk5LjA0ODkgMzEuODY5NCA5OC42OTgzIDMxLjk3NTVDOTguMzQ3NCAzMi4wODE5IDk4LjA5NTggMzIuMzE3MyA5Ny45NDM1IDMyLjY4MkM5Ny42ODQgMzMuMzA1NCA5Ny40NDc1IDM0LjAwNCA5Ny4yMzQyIDM0Ljc3OUM5Ny4wMjA2IDM1LjU1MzkgOTYuODQ5MSAzNi4zNTU4IDk2LjcxOTcgMzcuMTgzNkM5Ni41ODk2IDM4LjAxMjEgOTYuNTE3MSAzOC44MzI3IDk2LjUwMiAzOS42NDU2Qzk2LjUwMTEgMzkuNjk4NSA5Ni41MDM3IDM5Ljc0ODggOTYuNTAzNCAzOS44MDE0Qzk2LjE3MDkgNDAuNjg0OCA5NS44NTQgNDEuMzUyNSA5NS41NTMgNDEuNzk5MkM5NS4xNjQxIDQyLjM3NyA5NC43MjUzIDQyLjYyNzcgOTQuMjM3NSA0Mi41NTEzQzk0LjAyMzYgNDIuNDYwMyA5My44ODMyIDQyLjI0NzcgOTMuODE0NyA0MS45MTMyQzkzLjc0NTMgNDEuNTc5MiA5My43MjI3IDQxLjE2ODkgOTMuNzQ1MyA0MC42ODIyQzkzLjc2ODggNDAuMTk2NCA5My44MjYgMzkuNjQ1NiA5My45MTcxIDM5LjAyOTlDOTQuMDA5MSAzOC40MTQ2IDk0LjEyMjkgMzcuNzc2NCA5NC4yNjAxIDM3LjExNTRDOTQuMzk3NyAzNi40NTQxIDk0LjU0MjUgMzUuNzg5OSA5NC42OTQ5IDM1LjEyMUM5NC44NDcyIDM0LjQ1MjUgOTQuOTg0NSAzMy44MjE4IDk1LjEwNyAzMy4yMjkxQzk1LjA5MTYgMzIuNjk3MyA5NC45MzUyIDMyLjI5MSA5NC42Mzc3IDMyLjAwOTdDOTQuMzQwNSAzMS43Mjg5IDkzLjkyNDcgMzEuNjE4NyA5My4zOTEzIDMxLjY3OTFDOTMuMDI1MyAzMS44MzEyIDkyLjc1NDIgMzIuMDI5IDkyLjU3OSAzMi4yNzE5QzkyLjQwMzQgMzIuNTE0OCA5Mi4yNjIzIDMyLjgyNjUgOTIuMTU1OCAzMy4yMDYyQzkyLjA5NDYgMzMuNDA0IDkyLjAwMzIgMzMuNzk5IDkxLjg4MTMgMzQuMzkxOEM5MS43NTkxIDM0Ljk4NCA5MS42MDMgMzUuNjY0NCA5MS40MTIzIDM2LjQzMTVDOTEuMjIxNyAzNy4xOTkyIDkwLjk5NjcgMzguMDAwNSA5MC43Mzc2IDM4LjgzNjJDOTAuNDc4MSAzOS42NzE5IDkwLjE4ODUgNDAuNDI4MyA4OS44Njg0IDQxLjEwNDFDODkuNTQ4IDQxLjc4MDEgODkuMTk3MiA0Mi4zMjM1IDg4LjgxNjEgNDIuNzMzOEM4OC40MzQ4IDQzLjE0MzggODguMDIzIDQzLjMxMTMgODcuNTgwNyA0My4yMzUyQzg3LjMzNjYgNDMuMTg5NSA4Ny4xODA1IDQyLjkzODggODcuMTEyIDQyLjQ4MzFDODcuMDQzMiA0Mi4wMjcxIDg3LjAzMTkgNDEuNDY1MyA4Ny4wNzc1IDQwLjc5NjRDODcuMTIzMyA0MC4xMjc5IDg3LjIxNDggMzkuMzk0NiA4Ny4zNTIgMzguNTk3MUM4Ny40ODkzIDM3Ljc5OTMgODcuNjMgMzcuMDQzNCA4Ny43NzUyIDM2LjMyODlDODcuOTIgMzUuNjE0OSA4OC4wNTM1IDM0Ljk4NCA4OC4xNzU2IDM0LjQzNzJDODguMjk3NSAzMy44OTAxIDg4LjM4MTQgMzMuNTI1NCA4OC40MjcyIDMzLjM0MzNDODguNDI3MiAzMi45MDI2IDg4LjMyNzcgMzIuNTQ5NSA4OC4xMjk4IDMyLjI4MzJDODcuOTMxMyAzMi4wMTc4IDg3LjY5MTMgMzEuODUwMyA4Ny40MDkyIDMxLjc4MThDODcuMTI2OCAzMS43MTM2IDg2LjgzNzIgMzEuNzUxNCA4Ni41NCAzMS44OTU3Qzg2LjI0MjYgMzIuMDQwMyA4NS45ODcyIDMyLjMwMjYgODUuNzczNiAzMi42ODJDODUuNjk3MyAzMy4wOTIzIDg1LjU5OCAzMy41Njc0IDg1LjQ3NjEgMzQuMTA2N0M4NS4zNTM5IDM0LjY0NTkgODUuMjM2MSAzNS4yMDA2IDg1LjEyMTggMzUuNzcwNUM4NS4wMDc0IDM2LjM0MDQgODQuOTAwMyAzNi44OTg4IDg0LjgwMTQgMzcuNDQ1OUM4NC43MDIxIDM3Ljk5MyA4NC42Mjk5IDM4LjQ3MTYgODQuNTg0IDM4Ljg4MTlDODQuNTUzNiAzOS4yMDA4IDg0LjUxOSAzOS41OTIzIDg0LjQ4MTMgNDAuMDU1NkM4NC40NDMgNDAuNTE5NCA4NC40MjM4IDQxLjAwOTIgODQuNDIzOCA0MS41MjU3Qzg0LjQyMzggNDIuMDQyNyA4NC40NjE4IDQyLjU1NTQgODQuNTM4NSA0My4wNjQzQzg0LjYxNDUgNDMuNTczNSA4NC43NTE4IDQ0LjA0MDggODQuOTUgNDQuNDY1OUM4NS4xNDgyIDQ0Ljg5MTUgODUuNDI2NSA0NS4yNDA4IDg1Ljc4NTIgNDUuNTE0NEM4Ni4xNDMzIDQ1Ljc4NzkgODYuNTk3MiA0NS45Mzk3IDg3LjE0NjMgNDUuOTcwNEM4Ny43MTAxIDQ2LjAwMDUgODguMjAyIDQ1Ljk1OTEgODguNjIxNyA0NS44NDQ5Qzg5LjA0MSA0NS43MzEgODkuNDIyMSA0NS41NTIzIDg5Ljc2NTQgNDUuMzA5MUM5MC4xMDg0IDQ1LjA2NjUgOTAuNDIxIDQ0Ljc3NzYgOTAuNzAzMyA0NC40NDNDOTAuOTg1MSA0NC4xMDkxIDkxLjI2MzcgNDMuNzQ0NCA5MS41MzgzIDQzLjM0OTFDOTEuNzk3NCA0My45MjY5IDkyLjEzMjkgNDQuMzc0OCA5Mi41NDQ3IDQ0LjY5NEM5Mi45NTY1IDQ1LjAxMyA5My4zOTEzIDQ1LjIwMzIgOTMuODQ4NiA0NS4yNjM3Qzk0LjMwNiA0NS4zMjQxIDk0Ljc3MTUgNDUuMjYwMiA5NS4yNDQyIDQ1LjA2OTlDOTUuNzE2NyA0NC44ODAzIDk2LjE0MzYgNDQuNTU3MyA5Ni41MjUyIDQ0LjEwMTJDOTYuNzc2MiA0My44MjE2IDk3LjAxMzEgNDMuNTAzOCA5Ny4yMzU0IDQzLjE1MjVDOTcuMzI5NyA0My4zMTcgOTcuNDMwMSA0My40NzU4IDk3LjU0MyA0My42MjI0Qzk3LjkxNjggNDQuMTA5MSA5OC40MjQgNDQuNDQzIDk5LjA2NDUgNDQuNjI1NUM5OS43NTA2IDQ0LjgwOCAxMDAuNDIxIDQ0LjgzODYgMTAxLjA3NyA0NC43MTY5QzEwMS43MzMgNDQuNTk1NCAxMDIuMzU4IDQ0LjM3NDggMTAyLjk1MyA0NC4wNTU5QzEwMy41NDggNDMuNzM2NiAxMDQuMTAxIDQzLjM1MzIgMTA0LjYxMiA0Mi45MDQ3QzEwNS4xMjIgNDIuNDU2NSAxMDUuNTY4IDQxLjk4OTUgMTA1Ljk1IDQxLjUwMjhDMTA1LjkzNCA0MS44NTI0IDEwNS45MjcgNDIuMTgzMiAxMDUuOTI3IDQyLjQ5NDRDMTA1LjkyNyA0Mi44MDYxIDEwNS45MTkgNDMuMTQzOCAxMDUuOTA0IDQzLjUwODhDMTA1LjE0MSA0NC4wNDA4IDEwNC40MjEgNDQuNjc5IDEwMy43NDIgNDUuNDIzM0MxMDMuMDY0IDQ2LjE2NzYgMTAyLjQ2OSA0Ni45NjE2IDEwMS45NTggNDcuODA1MUMxMDEuNDQ3IDQ4LjY0ODMgMTAxLjA0NyA0OS41MDMxIDEwMC43NTcgNTAuMzY5MUMxMDAuNDY3IDUxLjIzNTcgMTAwLjMyNiA1Mi4wNDQ1IDEwMC4zMzQgNTIuNzk2OUMxMDAuMzQxIDUzLjU0OSAxMDAuNTIxIDU0LjIwNiAxMDAuODcxIDU0Ljc2ODFDMTAxLjIyMiA1NS4zMzA2IDEwMS43OTQgNTUuNzMzMSAxMDIuNTg3IDU1Ljk3NjNDMTAzLjQxMSA1Ni4yMzQ4IDEwNC4xMzUgNTYuMjQyIDEwNC43NiA1NS45OTkxQzEwNS4zODYgNTUuNzU1OSAxMDUuOTMxIDU1LjM1MzEgMTA2LjM5NiA1NC43OTFDMTA2Ljg2MSA1NC4yMjg5IDEwNy4yNDIgNTMuNTQ5IDEwNy41NCA1Mi43NTEyQzEwNy44MzcgNTEuOTUzNCAxMDguMDczIDUxLjEyMTUgMTA4LjI0OSA1MC4yNTU1QzEwOC40MjQgNDkuMzg5NCAxMDguNTM1IDQ4LjUzNzkgMTA4LjU4IDQ3LjcwMjhDMTA4LjYyNiA0Ni44NjY4IDEwOC42MjYgNDYuMTIxOSAxMDguNTggNDUuNDY4N0MxMDkuODkyIDQ0LjkyMTkgMTEwLjk2NyA0NC4yMzA1IDExMS44MDYgNDMuMzk0NUMxMTIuNjQ1IDQyLjU1OTQgMTEzLjMzOCA0MS42Nzc4IDExMy44ODcgNDAuNzUwN0MxMTQuMDU1IDQwLjUyMjkgMTE0LjExMiA0MC4yNDkzIDExNC4wNTkgMzkuOTMwNEMxMTQuMDA2IDM5LjYxMTEgMTEzLjg3NiAzOS4zMzc2IDExMy42NyAzOS4xMDk3WlwiIGZpbGw9XCIjMEQwQzIzXCIvPlxuPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTE0Mi41MyAzNy42NTE1QzE0Mi41NzUgMzcuMzAyMiAxNDIuNjQ0IDM2LjkzMzUgMTQyLjczNSAzNi41NDZDMTQyLjgyNyAzNi4xNTg1IDE0Mi45NDEgMzUuNzgyMyAxNDMuMDc5IDM1LjQxNzdDMTQzLjIxNiAzNS4wNTMxIDE0My4zNzYgMzQuNzM3OSAxNDMuNTU5IDM0LjQ3MThDMTQzLjc0MiAzNC4yMDYxIDE0My45MzcgMzQuMDE2MSAxNDQuMTQyIDMzLjkwMTlDMTQ0LjM0OCAzMy43ODgzIDE0NC41NTggMzMuNzk5NSAxNDQuNzcxIDMzLjkzNkMxNDUgMzQuMDczMSAxNDUuMTQxIDM0LjM2MTcgMTQ1LjE5NSAzNC44MDIxQzE0NS4yNDggMzUuMjQzMyAxNDUuMTk1IDM1LjcxNDEgMTQ1LjAzNCAzNi4yMTU1QzE0NC44NzQgMzYuNzE3MiAxNDQuNTg4IDM3LjE4NzkgMTQ0LjE3NyAzNy42Mjg2QzE0My43NjUgMzguMDY5NiAxNDMuMjA4IDM4LjM1NzkgMTQyLjUwNyAzOC40OTQ3QzE0Mi40NzYgMzguMjgyNCAxNDIuNDg0IDM4LjAwMTEgMTQyLjUzIDM3LjY1MTVaTTE1MC40NTYgMzguNTg1N0MxNTAuMjA0IDM4LjUxMDMgMTQ5Ljk2NCAzOC41MDI1IDE0OS43MzUgMzguNTYzMkMxNDkuNTA2IDM4LjYyMzkgMTQ5LjM2MSAzOC43ODM1IDE0OS4zMDEgMzkuMDQyQzE0OS4xNzggMzkuNTI4MSAxNDguOTg0IDQwLjAyNTggMTQ4LjcxNyA0MC41MzQ3QzE0OC40NSA0MS4wNDM5IDE0OC4xMjIgNDEuNTI2MiAxNDcuNzM0IDQxLjk4MjJDMTQ3LjM0NSA0Mi40MzggMTQ2LjkwNiA0Mi44NDA4IDE0Ni40MTggNDMuMTkwMUMxNDUuOTMgNDMuNTM5NyAxNDUuNDE5IDQzLjc5MDQgMTQ0Ljg4NiA0My45NDIyQzE0NC4zNTEgNDQuMTA5NiAxNDMuOTEgNDQuMTI4NCAxNDMuNTU5IDQzLjk5OTFDMTQzLjIwOCA0My44NzA1IDE0Mi45MyA0My42NDk4IDE0Mi43MjQgNDMuMzM4NEMxNDIuNTE4IDQzLjAyNyAxNDIuMzY5IDQyLjY1MDggMTQyLjI3OCA0Mi4yMTAxQzE0Mi4xODYgNDEuNzY5NCAxNDIuMTMzIDQxLjMxMzcgMTQyLjExOCA0MC44NDI0QzE0Mi45ODcgNDAuOTAzNCAxNDMuNzYxIDQwLjc0NzggMTQ0LjQ0IDQwLjM3NTFDMTQ1LjExOCA0MC4wMDMyIDE0NS42OTQgMzkuNTA5IDE0Ni4xNjcgMzguODkzN0MxNDYuNjM5IDM4LjI3ODQgMTQ2Ljk5OCAzNy41ODcgMTQ3LjI0MiAzNi44MTk1QzE0Ny40ODUgMzYuMDUyNCAxNDcuNjIzIDM1LjI4ODcgMTQ3LjY1MyAzNC41Mjg4QzE0Ny42NjkgMzMuODE0NiAxNDcuNTYyIDMzLjIxMDggMTQ3LjMzMyAzMi43MTY5QzE0Ny4xMDUgMzIuMjIzMyAxNDYuNzk2IDMxLjgzOSAxNDYuNDA3IDMxLjU2NThDMTQ2LjAxOCAzMS4yOTIyIDE0NS41NzIgMzEuMTMyNiAxNDUuMDY5IDMxLjA4NzJDMTQ0LjU2NiAzMS4wNDE1IDE0NC4wNTQgMzEuMTEgMTQzLjUzNiAzMS4yOTIyQzE0Mi45MSAzMS41MDUgMTQyLjM4MSAzMS44NTA2IDE0MS45NDYgMzIuMzI5NEMxNDEuNTEyIDMyLjgwOCAxNDEuMTQ5IDMzLjM2MjkgMTQwLjg2IDMzLjk5MzNDMTQwLjU3IDM0LjYyMzkgMTQwLjM0MSAzNS4zMDM4IDE0MC4xNzMgMzYuMDMzQzE0MC4wMDUgMzYuNzYyNiAxMzkuODgzIDM3LjQ4MDYgMTM5LjgwNyAzOC4xODczQzEzOS43MzkgMzguODIxNCAxMzkuNzAyIDM5LjQyNzggMTM5LjY4OSA0MC4wMTNDMTM5LjY1NyA0MC4wODc0IDEzOS42MjUgNDAuMTU4OCAxMzkuNTkgNDAuMjM4M0MxMzkuMzU0IDQwLjc3ODIgMTM5LjA3OSA0MS4zMDYyIDEzOC43NjYgNDEuODIyNkMxMzguNDU0IDQyLjMzOTQgMTM4LjEwNyA0Mi43NzI1IDEzNy43MjYgNDMuMTIxOEMxMzcuMzQ0IDQzLjQ3MTQgMTM2Ljk0OCA0My41OTI5IDEzNi41MzYgNDMuNDg2NUMxMzYuMjkyIDQzLjQyNiAxMzYuMTU5IDQzLjE0NDQgMTM2LjEzNiA0Mi42NDMzQzEzNi4xMTMgNDIuMTQxNiAxMzYuMTM5IDQxLjUxODcgMTM2LjIxNiA0MC43NzQxQzEzNi4yOTIgNDAuMDI5OCAxMzYuMzggMzkuMjIzOSAxMzYuNDc5IDM4LjM1NzlDMTM2LjU3OCAzNy40OTE4IDEzNi42MjggMzYuNjY0IDEzNi42MjggMzUuODczN0MxMzYuNjI4IDM1LjE4OTggMTM2LjQ5OCAzNC41MzI5IDEzNi4yMzkgMzMuOTAxOUMxMzUuOTc5IDMzLjI3MTggMTM1LjYyNSAzMi43NDczIDEzNS4xNzUgMzIuMzI5NEMxMzQuNzI1IDMxLjkxMTMgMTM0LjIwMyAzMS42MzQgMTMzLjYwOCAzMS40OTc1QzEzMy4wMTMgMzEuMzYwNSAxMzIuMzczIDMxLjQ1MTggMTMxLjY4NyAzMS43NzA4QzEzMSAzMi4wOSAxMzAuNDU1IDMyLjUzODIgMTMwLjA1MSAzMy4xMTU3QzEyOS42NDcgMzMuNjkzNCAxMjkuMjc3IDM0LjMwMDkgMTI4Ljk0MiAzNC45MzkxQzEyOC44MTkgMzQuNDUyOCAxMjguNjQxIDM0LjAwMTEgMTI4LjQwNCAzMy41ODNDMTI4LjE2NyAzMy4xNjUxIDEyNy44NzggMzIuODAwNSAxMjcuNTM1IDMyLjQ4ODhDMTI3LjE5MSAzMi4xNzc2IDEyNi44MDYgMzEuOTM0NCAxMjYuMzggMzEuNzU5NUMxMjUuOTUzIDMxLjU4NTEgMTI1LjUwMiAzMS40OTc1IDEyNS4wMyAzMS40OTc1QzEyNC41NzIgMzEuNDk3NSAxMjQuMTQ5IDMxLjU4NTEgMTIzLjc2IDMxLjc1OTVDMTIzLjM3MSAzMS45MzQ0IDEyMy4wMTcgMzIuMTU4MyAxMjIuNjk2IDMyLjQzMThDMTIyLjM3NiAzMi43MDU2IDEyMi4wODcgMzMuMDEzIDEyMS44MjcgMzMuMzU1MUMxMjEuNTY4IDMzLjY5NjkgMTIxLjMzOSAzNC4wMzUyIDEyMS4xNDEgMzQuMzY5MkMxMjEuMTEgMzMuOTc0MiAxMjEuMDc2IDMzLjYyODYgMTIxLjAzOCAzMy4zMzJDMTIxIDMzLjAzNTkgMTIwLjkzMSAzMi43ODUyIDEyMC44MzIgMzIuNTgwMUMxMjAuNzMzIDMyLjM3NDggMTIwLjU5MiAzMi4yMTkzIDEyMC40MDkgMzIuMTEyOUMxMjAuMjI2IDMyLjAwNjcgMTE5Ljk2NyAzMS45NTMyIDExOS42MzIgMzEuOTUzMkMxMTkuNDY0IDMxLjk1MzIgMTE5LjI5NiAzMS45ODc0IDExOS4xMjggMzIuMDU1NkMxMTguOTYgMzIuMTI0MSAxMTguODExIDMyLjIxOTMgMTE4LjY4MiAzMi4zNDA3QzExOC41NTIgMzIuNDYyNyAxMTguNDUzIDMyLjYxMDUgMTE4LjM4NSAzMi43ODUyQzExOC4zMTYgMzIuOTU5OCAxMTguMjk3IDMzLjE2MTQgMTE4LjMyNyAzMy4zODkyQzExOC4zNDIgMzMuNTU2NiAxMTguMzg1IDMzLjc1NzYgMTE4LjQ1MyAzMy45OTMzQzExOC41MjIgMzQuMjI4OSAxMTguNTg3IDM0LjUzNjkgMTE4LjY0OCAzNC45MTYzQzExOC43MDggMzUuMjk2MiAxMTguNzU4IDM1Ljc1NiAxMTguNzk2IDM2LjI5NTNDMTE4LjgzNCAzNi44MzQ5IDExOC44NDYgMzcuNDk1OSAxMTguODMxIDM4LjI3ODRDMTE4LjgxNSAzOS4wNjExIDExOC43NTggMzkuOTc2MyAxMTguNjU5IDQxLjAyNDhDMTE4LjU2IDQyLjA3MzMgMTE4LjQwMyA0My4yODkgMTE4LjE5IDQ0LjY3MTRDMTE4LjE2IDQ0Ljk5MDcgMTE4LjI4MiA0NS4yNDkyIDExOC41NTYgNDUuNDQ2N0MxMTguODMxIDQ1LjY0MzkgMTE5LjE0MyA0NS43NTc4IDExOS40OTQgNDUuNzg4NUMxMTkuODQ1IDQ1LjgxODggMTIwLjE3NyA0NS43NTc4IDEyMC40ODkgNDUuNjA2M0MxMjAuODAyIDQ1LjQ1MzkgMTIwLjk4MSA0NS4xODgyIDEyMS4wMjcgNDQuODA4NUMxMjEuMDcyIDQ0LjA5NDMgMTIxLjE2IDQzLjMzNDcgMTIxLjI5IDQyLjUyOUMxMjEuNDE5IDQxLjcyNCAxMjEuNTc5IDQwLjkyNjIgMTIxLjc3IDQwLjEzNTlDMTIxLjk2MSAzOS4zNDYgMTIyLjE3OCAzOC41OTM4IDEyMi40MjIgMzcuODc5M0MxMjIuNjY2IDM3LjE2NTEgMTIyLjkzNyAzNi41MzQ3IDEyMy4yMzQgMzUuOTg3NkMxMjMuNTMyIDM1LjQ0MDUgMTIzLjg0IDM1LjAwMzkgMTI0LjE2MSAzNC42NzcxQzEyNC40ODEgMzQuMzUwNCAxMjQuODE2IDM0LjE4NyAxMjUuMTY3IDM0LjE4N0MxMjUuNTk0IDM0LjE4NyAxMjUuOTI2IDM0LjM4MDUgMTI2LjE2MiAzNC43Njc5QzEyNi4zOTggMzUuMTU1NyAxMjYuNTY2IDM1LjY1MzYgMTI2LjY2NiAzNi4yNjA5QzEyNi43NjUgMzYuODY5IDEyNi44MSAzNy41MzQxIDEyNi44MDMgMzguMjU1NUMxMjYuNzk1IDM4Ljk3NzMgMTI2Ljc2NSAzOS42NzI0IDEyNi43MTEgNDAuMzQxQzEyNi42NTggNDEuMDA5OCAxMjYuNTk3IDQxLjYwNiAxMjYuNTI4IDQyLjEzMDNDMTI2LjQ2IDQyLjY1NDUgMTI2LjQxIDQzLjAxNTcgMTI2LjM4IDQzLjIxMjlDMTI2LjM4IDQzLjU2MjUgMTI2LjUxMyA0My44Mzk1IDEyNi43OCA0NC4wNDQ4QzEyNy4wNDYgNDQuMjQ5OCAxMjcuMzQ0IDQ0LjM3MTYgMTI3LjY3MiA0NC40MDk1QzEyOCA0NC40NDc2IDEyOC4zMDkgNDQuMzg2NiAxMjguNTk4IDQ0LjIyN0MxMjguODg4IDQ0LjA2NzQgMTI5LjA1NiA0My43OTgyIDEyOS4xMDIgNDMuNDE3OUMxMjkuMjU0IDQyLjMyNCAxMjkuNDY0IDQxLjIyNjQgMTI5LjczMSA0MC4xMjQ3QzEyOS45OTcgMzkuMDIzIDEzMC4zMDMgMzguMDM1NSAxMzAuNjQ2IDM3LjE2MTZDMTMwLjk4OSAzNi4yODc4IDEzMS4zNyAzNS41NzM1IDEzMS43OSAzNS4wMTg5QzEzMi4yMDkgMzQuNDY0NiAxMzIuNjU1IDM0LjE4NyAxMzMuMTI4IDM0LjE4N0MxMzMuMzcxIDM0LjE4NyAxMzMuNTU5IDM0LjM1NDQgMTMzLjY4OCAzNC42ODg0QzEzMy44MTggMzUuMDIyNyAxMzMuODgzIDM1LjQ3ODQgMTMzLjg4MyAzNi4wNTU5QzEzMy44ODMgMzYuNDgxNSAxMzMuODQ4IDM2LjkxODQgMTMzLjc4IDM3LjM2NjZDMTMzLjcxMSAzNy44MTQ4IDEzMy42MzEgMzguMjc4NCAxMzMuNTQgMzguNzU2OUMxMzMuNDQ4IDM5LjIzNTggMTMzLjM2OCAzOS43MjU2IDEzMy4yOTkgNDAuMjI3QzEzMy4yMzEgNDAuNzI4NyAxMzMuMTk2IDQxLjI1MjcgMTMzLjE5NiA0MS43OTk4QzEzMy4xOTYgNDIuMTc5NyAxMzMuMjM1IDQyLjYyMDQgMTMzLjMxMSA0My4xMjE4QzEzMy4zODcgNDMuNjIyOSAxMzMuNTMyIDQ0LjA5ODMgMTMzLjc0NSA0NC41NDYyQzEzMy45NTkgNDQuOTk0NyAxMzQuMjUyIDQ1LjM3NDQgMTM0LjYyNiA0NS42ODU4QzEzNSA0NS45OTczIDEzNS40NzYgNDYuMTUzMSAxMzYuMDU2IDQ2LjE1MzFDMTM2LjkyNSA0Ni4xNTMxIDEzNy42OTUgNDUuOTY2OSAxMzguMzY2IDQ1LjU5NDdDMTM5LjAzNyA0NS4yMjI2IDEzOS42MTMgNDQuNzM2NSAxNDAuMDkzIDQ0LjEzNjJDMTQwLjExOCA0NC4xMDQ3IDE0MC4xNDEgNDQuMDcxMSAxNDAuMTY1IDQ0LjAzOTlDMTQwLjIwMiA0NC4xMjg3IDE0MC4yMzUgNDQuMjIyNyAxNDAuMjc2IDQ0LjMwNzFDMTQwLjYwNCA0NC45NzU2IDE0MS4wNSA0NS40OTIxIDE0MS42MTUgNDUuODU3QzE0Mi4xNzggNDYuMjIxNiAxNDIuODQyIDQ2LjQyMjkgMTQzLjYwNSA0Ni40NjExQzE0NC4zNjcgNDYuNDk4NyAxNDUuMTk4IDQ2LjM1ODEgMTQ2LjA5OCA0Ni4wMzkyQzE0Ni43NjkgNDUuNzk2IDE0Ny4zNTIgNDUuNDkyMSAxNDcuODQ4IDQ1LjEyNzVDMTQ4LjM0MyA0NC43NjI4IDE0OC43ODkgNDQuMzE4NCAxNDkuMTg2IDQzLjc5NDFDMTQ5LjU4MyA0My4yNjk5IDE0OS45NDUgNDIuNjY1OCAxNTAuMjczIDQxLjk4MjJDMTUwLjYwMSA0MS4yOTgxIDE1MC45MzIgNDAuNTE1OSAxNTEuMjY4IDM5LjYzNDJDMTUxLjMyOSAzOS4zOTE2IDE1MS4yNzIgMzkuMTc1MSAxNTEuMDk3IDM4Ljk4NDhDMTUwLjkyMSAzOC43OTUxIDE1MC43MDggMzguNjYyMSAxNTAuNDU2IDM4LjU4NTdaXCIgZmlsbD1cIiMwRDBDMjNcIi8+XG48cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMTYyLjg4NyAzNi4wNDM0QzE2Mi44MSAzNi40OTE4IDE2Mi43MDcgMzYuOTg2IDE2Mi41NzggMzcuNTI1QzE2Mi40NDggMzguMDY0NiAxNjIuMjg0IDM4LjYyMyAxNjIuMDg2IDM5LjIwMDRDMTYxLjg4OCAzOS43Nzc5IDE2MS42NDQgNDAuMjk4NCAxNjEuMzU0IDQwLjc2MTZDMTYxLjA2NCA0MS4yMjU0IDE2MC43MzMgNDEuNTkzNSAxNjAuMzU5IDQxLjg2NzFDMTU5Ljk4NSA0Mi4xNDA2IDE1OS41NTUgNDIuMjU0NiAxNTkuMDY2IDQyLjIwODlDMTU4LjgyMiA0Mi4xNzg4IDE1OC42MzUgNDIuMDExNyAxNTguNTA2IDQxLjcwNzVDMTU4LjM3NiA0MS40MDM4IDE1OC4zMDggNDEuMDE2MSAxNTguMyA0MC41NDVDMTU4LjI5MiA0MC4wNzQzIDE1OC4zMzQgMzkuNTU3NSAxNTguNDI2IDM4Ljk5NTFDMTU4LjUxNyAzOC40MzMzIDE1OC42NTggMzcuODgyMSAxNTguODQ5IDM3LjM0MjZDMTU5LjA0IDM2LjgwMzYgMTU5LjI3MiAzNi4zMDU2IDE1OS41NDcgMzUuODQ5NkMxNTkuODIxIDM1LjM5MzkgMTYwLjEzOCAzNS4wNDA1IDE2MC40OTYgMzQuNzg5OEMxNjAuODU0IDM0LjUzOTEgMTYxLjI0NyAzNC40MjE3IDE2MS42NzQgMzQuNDM2NUMxNjIuMTAxIDM0LjQ1MTggMTYyLjU1OSAzNC42NjQzIDE2My4wNDcgMzUuMDc0N0MxNjMuMDE2IDM1LjI3MjUgMTYyLjk2MyAzNS41OTU0IDE2Mi44ODcgMzYuMDQzNFpNMTcxLjAxOSAzNy43ODdDMTcwLjc4MiAzNy42NjU2IDE3MC41MzggMzcuNjM5MiAxNzAuMjg3IDM3LjcwNzVDMTcwLjAzNSAzNy43NzU3IDE2OS44NTYgMzguMDA3NiAxNjkuNzQ5IDM4LjQwMjZDMTY5LjY4OCAzOC44MjgzIDE2OS41NTEgMzkuMzI5NCAxNjkuMzM4IDM5LjkwNjlDMTY5LjEyNCA0MC40ODQzIDE2OC44NjEgNDEuMDMxNyAxNjguNTQ4IDQxLjU0NzhDMTY4LjIzNiA0Mi4wNjQ2IDE2Ny44NzcgNDIuNDk0IDE2Ny40NzMgNDIuODM1OEMxNjcuMDY5IDQzLjE3NzggMTY2LjYzOCA0My4zMzM3IDE2Ni4xODEgNDMuMzAyOEMxNjUuNzk5IDQzLjI3MjcgMTY1LjUzMiA0My4wNzkgMTY1LjM4IDQyLjcyMThDMTY1LjIyNyA0Mi4zNjQ3IDE2NS4xNDcgNDEuOTE2OCAxNjUuMTQgNDEuMzc2OUMxNjUuMTMyIDQwLjgzOCAxNjUuMTg2IDQwLjIzMDEgMTY1LjMgMzkuNTUzOEMxNjUuNDE0IDM4Ljg3NzcgMTY1LjU1MiAzOC4yMDU0IDE2NS43MTIgMzcuNTM2M0MxNjUuODcyIDM2Ljg2OCAxNjYuMDM2IDM2LjIyNTggMTY2LjIwNCAzNS42MTA1QzE2Ni4zNzEgMzQuOTk1MSAxNjYuNTA4IDM0LjQ3NDcgMTY2LjYxNiAzNC4wNDkzQzE2Ni43MzggMzMuNjY5MyAxNjYuNjk5IDMzLjM0NjYgMTY2LjUwMSAzMy4wODAzQzE2Ni4zMDMgMzIuODE0OSAxNjYuMDU1IDMyLjYyNDYgMTY1Ljc1OCAzMi41MTA3QzE2NS40NiAzMi4zOTY3IDE2NS4xNTkgMzIuMzY2NCAxNjQuODU0IDMyLjQxOTZDMTY0LjU0OSAzMi40NzI4IDE2NC4zNTEgMzIuNjM2MiAxNjQuMjU5IDMyLjkwOTRDMTYzLjM1OSAzMi4xMzQ1IDE2Mi40OTQgMzEuNzE2NiAxNjEuNjYzIDMxLjY1NTlDMTYwLjgzMSAzMS41OTUyIDE2MC4wNjUgMzEuNzc3NiAxNTkuMzY0IDMyLjIwM0MxNTguNjYyIDMyLjYyODQgMTU4LjA0MSAzMy4yNDM3IDE1Ny41IDM0LjA0OTNDMTU2Ljk1OCAzNC44NTQ5IDE1Ni41MiAzNS43MzIyIDE1Ni4xODQgMzYuNjgxOEMxNTUuODQ5IDM3LjYzMTQgMTU1LjYzOSAzOC42MDA0IDE1NS41NTUgMzkuNTg3OUMxNTUuNDcxIDQwLjU3NTcgMTU1LjUzNiA0MS40NzYxIDE1NS43NSA0Mi4yODlDMTU1Ljk2MyA0My4xMDE4IDE1Ni4zNCA0My43NjY5IDE1Ni44ODIgNDQuMjgzQzE1Ny40MjMgNDQuNzk5OCAxNTguMTU5IDQ1LjA1ODMgMTU5LjA4OSA0NS4wNTgzQzE1OS41MDEgNDUuMDU4MyAxNTkuODk4IDQ0Ljk3NDcgMTYwLjI3OSA0NC44MDc2QzE2MC42NiA0NC42NDAxIDE2MS4wMTEgNDQuNDQyNiAxNjEuMzMxIDQ0LjIxNDhDMTYxLjY1MSA0My45ODY5IDE2MS45MzMgNDMuNzQ3NSAxNjIuMTc4IDQzLjQ5NjhDMTYyLjQyMSA0My4yNDYxIDE2Mi42MTIgNDMuMDM3MyAxNjIuNzQ5IDQyLjg2OTlDMTYyLjg1NiA0My40MTcgMTYzLjAzMiA0My44ODA4IDE2My4yNzYgNDQuMjYwNUMxNjMuNTE5IDQ0LjY0MDEgMTYzLjc5OCA0NC45NTIxIDE2NC4xMTEgNDUuMTk0OEMxNjQuNDIzIDQ1LjQzNzYgMTY0Ljc1MSA0NS42MTY0IDE2NS4wOTQgNDUuNzMwNkMxNjUuNDM3IDQ1Ljg0NDUgMTY1Ljc2OSA0NS45MDE1IDE2Ni4wODkgNDUuOTAxNUMxNjYuODA2IDQ1LjkwMTUgMTY3LjQ3NyA0NS42NTgzIDE2OC4xMDIgNDUuMTcxOUMxNjguNzI3IDQ0LjY4NjEgMTY5LjI4OCA0NC4wODkzIDE2OS43ODQgNDMuMzgyOUMxNzAuMjc5IDQyLjY3NjIgMTcwLjY4NyA0MS45MzE5IDE3MS4wMDcgNDEuMTQ5MUMxNzEuMzI4IDQwLjM2NjYgMTcxLjU0MSAzOS42NzE1IDE3MS42NDggMzkuMDYzNEMxNzEuNzU1IDM4LjgzNTUgMTcxLjczNSAzOC41OTY0IDE3MS41OTEgMzguMzQ1N0MxNzEuNDQ2IDM4LjA5NSAxNzEuMjU1IDM3LjkwOSAxNzEuMDE5IDM3Ljc4N1pcIiBmaWxsPVwiIzBEMEMyM1wiLz5cbjxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0yMTIuMTk0IDUwLjM3MDFDMjEyLjA2NCA1MC44ODY2IDIxMS44NjIgNTEuMzIzOCAyMTEuNTg3IDUxLjY4MDZDMjExLjMxMyA1Mi4wMzc3IDIxMC45NyA1Mi4yMjM5IDIxMC41NTggNTIuMjM5M0MyMTAuMjk5IDUyLjI1NDMgMjEwLjEwMSA1Mi4xMTc1IDIwOS45NjMgNTEuODI4OUMyMDkuODI2IDUxLjU0MDEgMjA5LjczMSA1MS4xNjc5IDIwOS42NzggNTAuNzEyMkMyMDkuNjI0IDUwLjI1NjIgMjA5LjYwMSA0OS43NDcgMjA5LjYwOSA0OS4xODQ5QzIwOS42MTYgNDguNjIyNyAyMDkuNjM5IDQ4LjA2ODEgMjA5LjY3OCA0Ny41MjFDMjA5LjcxNSA0Ni45NzQyIDIwOS43NjEgNDYuNDY0NyAyMDkuODE1IDQ1Ljk5MzlDMjA5Ljg2OCA0NS41MjI2IDIwOS45MSA0NS4xNTg2IDIwOS45NCA0NC45QzIxMC40NTkgNDQuOTYwOCAyMTAuODkgNDUuMTg0NiAyMTEuMjMzIDQ1LjU3MjNDMjExLjU3NiA0NS45NTk4IDIxMS44MzkgNDYuNDE5MyAyMTIuMDIyIDQ2Ljk1MTRDMjEyLjIwNSA0Ny40ODMxIDIxMi4zMTIgNDguMDU2OCAyMTIuMzQzIDQ4LjY3MjJDMjEyLjM3MyA0OS4yODc1IDIxMi4zMjMgNDkuODUzNCAyMTIuMTk0IDUwLjM3MDFaTTIwMy45MTMgNTAuMzcwMUMyMDMuNzgzIDUwLjg4NjYgMjAzLjU4MSA1MS4zMjM4IDIwMy4zMDcgNTEuNjgwNkMyMDMuMDMyIDUyLjAzNzcgMjAyLjY4OSA1Mi4yMjM5IDIwMi4yNzcgNTIuMjM5M0MyMDIuMDE4IDUyLjI1NDMgMjAxLjgyIDUyLjExNzUgMjAxLjY4MyA1MS44Mjg5QzIwMS41NDUgNTEuNTQwMSAyMDEuNDUgNTEuMTY3OSAyMDEuMzk3IDUwLjcxMjJDMjAxLjM0MyA1MC4yNTYyIDIwMS4zMiA0OS43NDcgMjAxLjMyOCA0OS4xODQ5QzIwMS4zMzYgNDguNjIyNyAyMDEuMzU4IDQ4LjA2ODEgMjAxLjM5NyA0Ny41MjFDMjAxLjQzNCA0Ni45NzQyIDIwMS40OCA0Ni40NjQ3IDIwMS41MzQgNDUuOTkzOUMyMDEuNTg3IDQ1LjUyMjYgMjAxLjYyOSA0NS4xNTg2IDIwMS42NiA0NC45QzIwMi4xNzggNDQuOTYwOCAyMDIuNjA5IDQ1LjE4NDYgMjAyLjk1MiA0NS41NzIzQzIwMy4yOTUgNDUuOTU5OCAyMDMuNTU4IDQ2LjQxOTMgMjAzLjc0MSA0Ni45NTE0QzIwMy45MjQgNDcuNDgzMSAyMDQuMDMxIDQ4LjA1NjggMjA0LjA2MiA0OC42NzIyQzIwNC4wOTIgNDkuMjg3NSAyMDQuMDQyIDQ5Ljg1MzQgMjAzLjkxMyA1MC4zNzAxWk0xOTUuNDE1IDM3LjQyNDFDMTk1LjM5OSAzNy43ODg0IDE5NS4zNjUgMzguMTExNCAxOTUuMzEyIDM4LjM5MjVDMTk1LjI1OCAzOC42NzQxIDE5NS4xODYgMzguODUyMiAxOTUuMDk1IDM4LjkyODNDMTk0LjkyNyAzOC44MzY5IDE5NC43MjEgMzguNjAxOCAxOTQuNDc3IDM4LjIyMTZDMTk0LjIzMyAzNy44NDE5IDE5NC4wNDIgMzcuNDEyMiAxOTMuOTA1IDM2LjkzMzZDMTkzLjc2OCAzNi40NTUxIDE5My43MjUgMzUuOTg0MyAxOTMuNzc5IDM1LjUyMDVDMTkzLjgzMiAzNS4wNTczIDE5NC4wNzMgMzQuNjk2NyAxOTQuNSAzNC40Mzc5QzE5NC42NjcgMzQuMzQ2OCAxOTQuODEyIDM0LjM4MDkgMTk0LjkzNCAzNC41NDA1QzE5NS4wNTYgMzQuNzAwMSAxOTUuMTU1IDM0LjkzMTggMTk1LjIzMiAzNS4yMzU3QzE5NS4zMDggMzUuNTM5OSAxOTUuMzYxIDM1Ljg4OTIgMTk1LjM5MiAzNi4yODQyQzE5NS40MjIgMzYuNjc5NSAxOTUuNDMgMzcuMDU5MSAxOTUuNDE1IDM3LjQyNDFaTTE5My4zOSA0MS45NzExQzE5My4xNTQgNDIuMjIxNSAxOTIuODkgNDIuNDM4MSAxOTIuNjAxIDQyLjYyMDZDMTkyLjMxMSA0Mi44MDMgMTkyLjAxNCA0Mi45Mzk4IDE5MS43MDkgNDMuMDMwOUMxOTEuNDA0IDQzLjEyMjMgMTkxLjEyOSA0My4xNDQ4IDE5MC44ODUgNDMuMDk5MUMxOTAuMTk5IDQyLjk2MjcgMTg5LjY3MyA0Mi42NjYgMTg5LjMwNyA0Mi4yMTAzQzE4OC45NDEgNDEuNzU0NSAxODguNzA4IDQxLjIxOSAxODguNjA5IDQwLjYwMzdDMTg4LjUxIDM5Ljk4ODEgMTg4LjUyMSAzOS4zMzA4IDE4OC42NDQgMzguNjMxOUMxODguNzY1IDM3LjkzMyAxODguOTcxIDM3LjI4MzUgMTg5LjI2MSAzNi42ODMyQzE4OS41NTEgMzYuMDgyOSAxODkuOTAyIDM1LjU2NjIgMTkwLjMxMyAzNS4xMzMzQzE5MC43MjUgMzQuNzAwMSAxOTEuMTc1IDM0LjQzMDYgMTkxLjY2MyAzNC4zMjM5QzE5MS40OCAzNS4wOTg5IDE5MS40MTkgMzUuOTAwNyAxOTEuNDggMzYuNzI4NkMxOTEuNTQxIDM3LjU1NjggMTkxLjczOSAzOC4zMzU1IDE5Mi4wNzUgMzkuMDY0OEMxOTIuMjg4IDM5LjUwNiAxOTIuNTQ0IDM5LjkwODIgMTkyLjg0MSA0MC4yNzI5QzE5My4xMzkgNDAuNjM3OCAxOTMuNTAxIDQwLjk0OTIgMTkzLjkyOCA0MS4yMDc1QzE5My44MDYgNDEuNDY2IDE5My42MjYgNDEuNzIwNCAxOTMuMzkgNDEuOTcxMVpNMjE4LjcwMiAzNy42NTE5QzIxOC43NDcgMzcuMzAyNiAyMTguODE2IDM2LjkzMzYgMjE4LjkwOCAzNi41NDYyQzIxOC45OTkgMzYuMTU5IDIxOS4xMTQgMzUuNzgyOCAyMTkuMjUxIDM1LjQxODFDMjE5LjM4OCAzNS4wNTMyIDIxOS41NDggMzQuNzM4IDIxOS43MzEgMzQuNDcyM0MyMTkuOTE0IDM0LjIwNjUgMjIwLjEwOCAzNC4wMTYzIDIyMC4zMTQgMzMuOTAyNEMyMjAuNTIgMzMuNzg4NCAyMjAuNzMgMzMuNzk5NyAyMjAuOTQzIDMzLjkzNjVDMjIxLjE3MiAzNC4wNzM1IDIyMS4zMTMgMzQuMzYyMSAyMjEuMzY3IDM0LjgwMjVDMjIxLjQyIDM1LjI0MzUgMjIxLjM2NyAzNS43MTQyIDIyMS4yMDcgMzYuMjE1OUMyMjEuMDQ2IDM2LjcxNzMgMjIwLjc2MSAzNy4xODg0IDIyMC4zNDkgMzcuNjI4OEMyMTkuOTM3IDM4LjA3IDIxOS4zOCAzOC4zNTgzIDIxOC42NzkgMzguNDk1MUMyMTguNjQ4IDM4LjI4MjYgMjE4LjY1NiAzOC4wMDE1IDIxOC43MDIgMzcuNjUxOVpNMjI3LjkyMSAzNy42NTE5QzIyNy45NjYgMzcuMzAyNiAyMjguMDM1IDM2LjkzMzYgMjI4LjEyNiAzNi41NDYyQzIyOC4yMTggMzYuMTU5IDIyOC4zMzIgMzUuNzgyOCAyMjguNDcgMzUuNDE4MUMyMjguNjA3IDM1LjA1MzIgMjI4Ljc2NyAzNC43MzggMjI4Ljk1IDM0LjQ3MjNDMjI5LjEzMyAzNC4yMDY1IDIyOS4zMjggMzQuMDE2MyAyMjkuNTMzIDMzLjkwMjRDMjI5LjczOSAzMy43ODg0IDIyOS45NDkgMzMuNzk5NyAyMzAuMTYyIDMzLjkzNjVDMjMwLjM5MSAzNC4wNzM1IDIzMC41MzIgMzQuMzYyMSAyMzAuNTg2IDM0LjgwMjVDMjMwLjYzOSAzNS4yNDM1IDIzMC41ODYgMzUuNzE0MiAyMzAuNDI1IDM2LjIxNTlDMjMwLjI2NSAzNi43MTczIDIyOS45NzkgMzcuMTg4NCAyMjkuNTY4IDM3LjYyODhDMjI5LjE1NiAzOC4wNyAyMjguNTk5IDM4LjM1ODMgMjI3Ljg5OCAzOC40OTUxQzIyNy44NjcgMzguMjgyNiAyMjcuODc1IDM4LjAwMTUgMjI3LjkyMSAzNy42NTE5Wk0yMzYuNDg4IDM4Ljk4NTJDMjM2LjMxMiAzOC43OTU1IDIzNi4wOTkgMzguNjYyNSAyMzUuODQ3IDM4LjU4NjJDMjM1LjU5NSAzOC41MTA0IDIzNS4zNTUgMzguNTAyOSAyMzUuMTI2IDM4LjU2MzZDMjM0Ljg5NyAzOC42MjQ0IDIzNC43NTIgMzguNzg0IDIzNC42OTIgMzkuMDQyMkMyMzQuNTcgMzkuNTI4NiAyMzQuMzc1IDQwLjAyNjIgMjM0LjEwOCA0MC41MzQ5QzIzMy44NDEgNDEuMDQ0NCAyMzMuNTE0IDQxLjUyNjcgMjMzLjEyNSA0MS45ODI0QzIzMi43MzYgNDIuNDM4MSAyMzIuMjk3IDQyLjg0MTIgMjMxLjgxIDQzLjE5MDVDMjMxLjMyMSA0My41NDAxIDIzMC44MSA0My43OTA4IDIzMC4yNzcgNDMuOTQyM0MyMjkuNzQzIDQ0LjExMDEgMjI5LjMwMSA0NC4xMjg5IDIyOC45NSA0My45OTk2QzIyOC41OTkgNDMuODcwNiAyMjguMzIxIDQzLjY1MDMgMjI4LjExNSA0My4zMzg5QzIyNy45MDkgNDMuMDI3MSAyMjcuNzYxIDQyLjY1MTIgMjI3LjY2OSA0Mi4yMTAzQzIyNy41NzggNDEuNzY5OSAyMjcuNTI0IDQxLjMxNDIgMjI3LjUwOSA0MC44NDI4QzIyOC4zNzggNDAuOTAzOCAyMjkuMTUyIDQwLjc0ODMgMjI5LjgzMSA0MC4zNzU1QzIzMC41MDkgNDAuMDAzNCAyMzEuMDg1IDM5LjUwOTIgMjMxLjU1OCAzOC44OTM5QzIzMi4wMzEgMzguMjc4OCAyMzIuMzg5IDM3LjU4NzQgMjMyLjYzMyAzNi44MkMyMzIuODc3IDM2LjA1MjYgMjMzLjAxNCAzNS4yODkyIDIzMy4wNDUgMzQuNTI5M0MyMzMuMDYgMzMuODE1IDIzMi45NTMgMzMuMjExIDIzMi43MjQgMzIuNzE3MUMyMzIuNDk2IDMyLjIyMzUgMjMyLjE4NyAzMS44Mzk1IDIzMS43OTggMzEuNTY2MkMyMzEuNDA5IDMxLjI5MjQgMjMwLjk2MyAzMS4xMzMgMjMwLjQ2IDMxLjA4NzRDMjI5Ljk1NyAzMS4wNDE3IDIyOS40NDUgMzEuMTEwNSAyMjguOTI3IDMxLjI5MjRDMjI4LjMwMiAzMS41MDU1IDIyNy43NzIgMzEuODUxIDIyNy4zMzggMzIuMzI5NkMyMjYuOTAzIDMyLjgwODUgMjI2LjU0IDMzLjM2MzQgMjI2LjI1MSAzMy45OTM0QzIyNS45NjEgMzQuNjI0NCAyMjUuNzMyIDM1LjMwMzkgMjI1LjU2NCAzNi4wMzM1QzIyNS4zOTYgMzYuNzYyNyAyMjUuMjc0IDM3LjQ4MSAyMjUuMTk5IDM4LjE4NzRDMjI1LjEyNCAzOC44NzMgMjI1LjA4NCAzOS41MjkyIDIyNS4wNzUgNDAuMTU3MkMyMjUuMDE3IDQwLjI4MjQgMjI0Ljk1NiA0MC40MDgyIDIyNC44ODkgNDAuNTM0OUMyMjQuNjIyIDQxLjA0NDQgMjI0LjI5NSA0MS41MjY3IDIyMy45MDYgNDEuOTgyNEMyMjMuNTE3IDQyLjQzODEgMjIzLjA3OCA0Mi44NDEyIDIyMi41OTEgNDMuMTkwNUMyMjIuMTAyIDQzLjU0MDEgMjIxLjU5MiA0My43OTA4IDIyMS4wNTggNDMuOTQyM0MyMjAuNTI0IDQ0LjExMDEgMjIwLjA4MiA0NC4xMjg5IDIxOS43MzEgNDMuOTk5NkMyMTkuMzggNDMuODcwNiAyMTkuMTAyIDQzLjY1MDMgMjE4Ljg5NiA0My4zMzg5QzIxOC42OTEgNDMuMDI3MSAyMTguNTQyIDQyLjY1MTIgMjE4LjQ1IDQyLjIxMDNDMjE4LjM1OSA0MS43Njk5IDIxOC4zMDUgNDEuMzE0MiAyMTguMjkgNDAuODQyOEMyMTkuMTU5IDQwLjkwMzggMjE5LjkzMyA0MC43NDgzIDIyMC42MTIgNDAuMzc1NUMyMjEuMjkgNDAuMDAzNCAyMjEuODY2IDM5LjUwOTIgMjIyLjMzOSAzOC44OTM5QzIyMi44MTEgMzguMjc4OCAyMjMuMTcgMzcuNTg3NCAyMjMuNDE0IDM2LjgyQzIyMy42NTggMzYuMDUyNiAyMjMuNzk1IDM1LjI4OTIgMjIzLjgyNiAzNC41MjkzQzIyMy44NDEgMzMuODE1IDIyMy43MzQgMzMuMjExIDIyMy41MDYgMzIuNzE3MUMyMjMuMjc3IDMyLjIyMzUgMjIyLjk2OCAzMS44Mzk1IDIyMi41NzkgMzEuNTY2MkMyMjIuMTkgMzEuMjkyNCAyMjEuNzQ0IDMxLjEzMyAyMjEuMjQxIDMxLjA4NzRDMjIwLjczOCAzMS4wNDE3IDIyMC4yMjcgMzEuMTEwNSAyMTkuNzA4IDMxLjI5MjRDMjE5LjA4MyAzMS41MDU1IDIxOC41NTMgMzEuODUxIDIxOC4xMTkgMzIuMzI5NkMyMTcuNjg0IDMyLjgwODUgMjE3LjMyMSAzMy4zNjM0IDIxNy4wMzIgMzMuOTkzNEMyMTYuNzQyIDM0LjYyNDQgMjE2LjUxMyAzNS4zMDM5IDIxNi4zNDYgMzYuMDMzNUMyMTYuMTc4IDM2Ljc2MjcgMjE2LjA1NiAzNy40ODEgMjE1Ljk4IDM4LjE4NzRDMjE1LjkzNiAzOC41ODU5IDIxNS45MDcgMzguOTcyMiAyMTUuODg2IDM5LjM1MTZDMjE1LjczOSAzOS40NzY1IDIxNS41OTUgMzkuNjAyMyAyMTUuNDQyIDM5LjcyNThDMjE0LjkxNiA0MC4xNTE0IDIxNC4zNjMgNDAuNTM0OSAyMTMuNzg0IDQwLjg3NjlDMjEzLjIwNCA0MS4yMTkgMjEyLjYwMSA0MS41MDAxIDIxMS45NzcgNDEuNzIwNEMyMTEuMzUxIDQxLjk0MDggMjEwLjcxIDQyLjA3MzggMjEwLjA1NSA0Mi4xMTkyTDIxMS40NzMgMjYuOTg0N0MyMTEuNTY1IDI2LjY2NTUgMjExLjUxOSAyNi4zODQ3IDIxMS4zMzYgMjYuMTQxNUMyMTEuMTUzIDI1Ljg5ODMgMjEwLjkxNiAyNS43MzEyIDIxMC42MjcgMjUuNjQwMUMyMTAuMzM3IDI1LjU0ODggMjEwLjAyOCAyNS41NTY2IDIwOS43IDI1LjY2MjdDMjA5LjM3MiAyNS43Njk0IDIwOS4xMDIgMjYuMDEyNiAyMDguODg4IDI2LjM5MTlDMjA4Ljc4MSAyNi45Njk3IDIwOC42NzEgMjcuNzU5NyAyMDguNTU3IDI4Ljc2MjVDMjA4LjQ0MiAyOS43NjUzIDIwOC4zMjggMzAuODU5NSAyMDguMjEzIDMyLjA0NDhDMjA4LjA5OSAzMy4yMyAyMDcuOTg1IDM0LjQ1MzIgMjA3Ljg3IDM1LjcxNDJDMjA3Ljc1NiAzNi45NzU5IDIwNy42NTcgMzguMTUzMyAyMDcuNTczIDM5LjI0NzJDMjA3LjU2OSAzOS4yOTU4IDIwNy41NjYgMzkuMzM5OCAyMDcuNTYyIDM5LjM4NzhDMjA3LjQyOSAzOS41MDA1IDIwNy4yOTkgMzkuNjE0MiAyMDcuMTYxIDM5LjcyNThDMjA2LjYzNSA0MC4xNTE0IDIwNi4wODIgNDAuNTM0OSAyMDUuNTAzIDQwLjg3NjlDMjA0LjkyMyA0MS4yMTkgMjA0LjMyMSA0MS41MDAxIDIwMy42OTYgNDEuNzIwNEMyMDMuMDcgNDEuOTQwOCAyMDIuNDI5IDQyLjA3MzggMjAxLjc3NCA0Mi4xMTkyTDIwMy4xOTIgMjYuOTg0N0MyMDMuMjg0IDI2LjY2NTUgMjAzLjIzOCAyNi4zODQ3IDIwMy4wNTUgMjYuMTQxNUMyMDIuODcyIDI1Ljg5ODMgMjAyLjYzNSAyNS43MzEyIDIwMi4zNDYgMjUuNjQwMUMyMDIuMDU2IDI1LjU0ODggMjAxLjc0NyAyNS41NTY2IDIwMS40MTkgMjUuNjYyN0MyMDEuMDkxIDI1Ljc2OTQgMjAwLjgyMSAyNi4wMTI2IDIwMC42MDcgMjYuMzkxOUMyMDAuNTAxIDI2Ljk2OTcgMjAwLjM5IDI3Ljc1OTcgMjAwLjI3NiAyOC43NjI1QzIwMC4xNjEgMjkuNzY1MyAyMDAuMDQ3IDMwLjg1OTUgMTk5LjkzMyAzMi4wNDQ4QzE5OS44MTggMzMuMjMgMTk5LjcwNCAzNC40NTMyIDE5OS41ODkgMzUuNzE0MkMxOTkuNDc1IDM2Ljk3NTkgMTk5LjM3NiAzOC4xNTMzIDE5OS4yOTIgMzkuMjQ3MkMxOTkuMjkgMzkuMjY5MiAxOTkuMjg5IDM5LjI4OTEgMTk5LjI4NyAzOS4zMTExQzE5OS4wNDggMzkuNDIxOSAxOTguNzg2IDM5LjUxOSAxOTguNTAzIDM5LjYwMDZDMTk4LjIxMyAzOS42ODQ0IDE5Ny44ODUgMzkuNzMzOSAxOTcuNTE5IDM5Ljc0ODlDMTk3LjU4IDM5LjQ3NTEgMTk3LjYzIDM5LjE3MTIgMTk3LjY2OCAzOC44MzY5QzE5Ny43MDYgMzguNTAyOSAxOTcuNzM3IDM4LjE1MzMgMTk3Ljc2IDM3Ljc4ODRDMTk3Ljc4MiAzNy40MjQxIDE5Ny43OSAzNy4wNTkxIDE5Ny43ODIgMzYuNjk0NUMxOTcuNzc0IDM2LjMyOTYgMTk3Ljc1NSAzNS45OTU2IDE5Ny43MjUgMzUuNjkxNEMxOTcuNjQ5IDM1LjAzODUgMTk3LjUwOCAzNC40MTkxIDE5Ny4zMDIgMzMuODMzOEMxOTcuMDk2IDMzLjI0OTEgMTk2LjgxOCAzMi43NTkzIDE5Ni40NjcgMzIuMzYzN0MxOTYuMTE2IDMxLjk2ODcgMTk1LjY3OCAzMS43MDI3IDE5NS4xNTEgMzEuNTY2MkMxOTQuNjI2IDMxLjQyOTQgMTk0LjAxMiAzMS40NzQ4IDE5My4zMSAzMS43MDI3QzE5Mi4yNzMgMzEuNTY2MiAxOTEuMzM5IDMxLjY2MTMgMTkwLjUwOCAzMS45ODc4QzE4OS42NzcgMzIuMzE0OSAxODguOTU2IDMyLjc4OTQgMTg4LjM0NiAzMy40MTIyQzE4Ny43MzYgMzQuMDM1NyAxODcuMjM3IDM0Ljc2ODQgMTg2Ljg0OCAzNS42MTE5QzE4Ni40NTkgMzYuNDU1MSAxODYuMiAzNy4zMjE0IDE4Ni4wNyAzOC4yMUMxODYuMDE1IDM4LjU4NjggMTg1Ljk4OCAzOC45NjE4IDE4NS45OCAzOS4zMzZDMTg1Ljc0NCAzOS44MTc3IDE4NS40ODYgNDAuMjM4OCAxODUuMjAxIDQwLjU5MjFDMTg0Ljc5NyA0MS4wOTM1IDE4NC4zNzcgNDEuNTAzOCAxODMuOTQzIDQxLjgyMjhDMTgzLjUwOCA0Mi4xNDIgMTgzLjA3NyA0Mi4zODUyIDE4Mi42NSA0Mi41NTIzQzE4Mi4yMjMgNDIuNzE5OCAxODEuODQyIDQyLjgzMzcgMTgxLjUwNyA0Mi44OTQxQzE4MS4xMSA0Mi45NzAyIDE4MC43MjkgNDIuOTc4IDE4MC4zNjMgNDIuOTE3QzE3OS45OTcgNDIuODU2NSAxNzkuNjYxIDQyLjY4MTYgMTc5LjM1NyA0Mi4zOTI3QzE3OS4xMTIgNDIuMTgwMiAxNzguOTI1IDQxLjgzODEgMTc4Ljc5NiA0MS4zNjcxQzE3OC42NjYgNDAuODk2IDE3OC41OSA0MC4zNjA4IDE3OC41NjcgMzkuNzYwMkMxNzguNTQ0IDM5LjE1OTkgMTc4LjU2NyAzOC41MzMgMTc4LjYzNiAzNy44Nzk4QzE3OC43MDUgMzcuMjI2NiAxNzguODIyIDM2LjYwNzIgMTc4Ljk5IDM2LjAyMjJDMTc5LjE1OCAzNS40MzcyIDE3OS4zNzEgMzQuOTEzIDE3OS42MzEgMzQuNDQ5MkMxNzkuODkgMzMuOTg2MiAxODAuMTk1IDMzLjY1NTQgMTgwLjU0NiAzMy40NTc5QzE4MC43NDQgMzMuNDg4NiAxODAuODY2IDMzLjYwNiAxODAuOTEyIDMzLjgxMUMxODAuOTU4IDM0LjAxNjMgMTgwLjk2OSAzNC4yNTk1IDE4MC45NDYgMzQuNTQwNUMxODAuOTIzIDM0LjgyMTkgMTgwLjg4OSAzNS4xMTA1IDE4MC44NDMgMzUuNDA2NkMxODAuNzk3IDM1LjcwMyAxODAuNzc1IDM1Ljk1MDIgMTgwLjc3NSAzNi4xNDc0QzE4MC44NTEgMzYuNTU3NyAxODAuOTk5IDM2Ljg3NyAxODEuMjIxIDM3LjEwNDhDMTgxLjQ0MSAzNy4zMzI3IDE4MS42OSAzNy40NjYgMTgxLjk2NCAzNy41MDM2QzE4Mi4yMzkgMzcuNTQxNyAxODIuNTA5IDM3LjQ3NzMgMTgyLjc3NiAzNy4zMDk4QzE4My4wNDMgMzcuMTQzIDE4My4yNiAzNi44NzcgMTgzLjQyOCAzNi41MTJDMTgzLjQ0MyAzNi41Mjc0IDE4My40NjYgMzYuNTM0OSAxODMuNDk3IDM2LjUzNDlMMTgzLjgxNyAzMy42NDA0QzE4My45MDkgMzMuMjQ1MSAxODMuODQ3IDMyLjg5NTggMTgzLjYzNCAzMi41OTE5QzE4My40MiAzMi4yODggMTgzLjEzOCAzMi4xMTMgMTgyLjc4OCAzMi4wNjc2QzE4Mi4zNDUgMzEuNDI5NCAxODEuNzQ3IDMxLjA5MTQgMTgwLjk5MiAzMS4wNTMyQzE4MC4yMzcgMzEuMDE1NCAxNzkuNDYzIDMxLjI2MjMgMTc4LjY3IDMxLjc5NDFDMTc4LjE4MiAzMi4xNDQgMTc3Ljc1MSAzMi42MjYgMTc3LjM3OCAzMy4yNDEzQzE3Ny4wMDQgMzMuODU3IDE3Ni42OTkgMzQuNTQwNSAxNzYuNDYzIDM1LjI5MjZDMTc2LjIyNiAzNi4wNDQ4IDE3Ni4wNTggMzYuODM5MSAxNzUuOTU5IDM3LjY3NDhDMTc1Ljg2IDM4LjUxMDQgMTc1Ljg0MSAzOS4zMjM2IDE3NS45MDIgNDAuMTEzM0MxNzUuOTYzIDQwLjkwMzggMTc2LjEwNCA0MS42NDg0IDE3Ni4zMjUgNDIuMzQ3QzE3Ni41NDYgNDMuMDQ2MiAxNzYuODU1IDQzLjYzMTIgMTc3LjI1MiA0NC4xMDJDMTc3LjU4NyA0NC41MTIzIDE3Ny45NjggNDQuODEyNyAxNzguMzk1IDQ1LjAwMjdDMTc4LjgyMiA0NS4xOTI3IDE3OS4yNjggNDUuMzEwMSAxNzkuNzM0IDQ1LjM1NThDMTgwLjE5OSA0NS40MDEyIDE4MC42NiA0NS4zODIxIDE4MS4xMTggNDUuMjk4OEMxODEuNTc1IDQ1LjIxNTUgMTgyLjAxIDQ1LjA5NzggMTgyLjQyMSA0NC45NDU0QzE4Mi45NTUgNDQuNzQ4MiAxODMuNTA1IDQ0LjQ5NzIgMTg0LjA2OSA0NC4xOTMzQzE4NC42MzMgNDMuODg5NyAxODUuMTc0IDQzLjUyNDggMTg1LjY5MyA0My4wOTkxQzE4NS45NjYgNDIuODc1MyAxODYuMjI4IDQyLjYzMTMgMTg2LjQ4MiA0Mi4zNjk2QzE4Ni41OTggNDIuNjU1MyAxODYuNzI3IDQyLjkzMTcgMTg2Ljg4MiA0My4xOTA1QzE4Ny4yOTQgNDMuODc0MSAxODcuODUgNDQuNDI5IDE4OC41NTIgNDQuODU0NEMxODkuMjUzIDQ1LjI3OTcgMTkwLjExNSA0NS40ODQ0IDE5MS4xMzcgNDUuNDY5N0MxOTIuMjM1IDQ1LjQ1NDQgMTkzLjI0OSA0NS4xNzc0IDE5NC4xOCA0NC42Mzc4QzE5NS4xMSA0NC4wOTg4IDE5NS44NzIgNDMuMzA0MiAxOTYuNDY3IDQyLjI1NkMxOTcuMzU4IDQyLjI1NiAxOTguMjM0IDQyLjEwOTYgMTk5LjA5NiA0MS44MTlDMTk5LjA4OSA0MS45MTEgMTk5LjA4MSA0Mi4wMDc5IDE5OS4wNzUgNDIuMDk2NkMxOTkuMDE0IDQyLjkwMTkgMTk4Ljk4MyA0My40NDg3IDE5OC45ODMgNDMuNzM3NkMxOTguOTY4IDQ0LjIzOSAxOTguOTM0IDQ0Ljg1ODEgMTk4Ljg4IDQ1LjU5NDlDMTk4LjgyNyA0Ni4zMzIgMTk4Ljc5MyA0Ny4xMDY5IDE5OC43NzggNDcuOTE5OEMxOTguNzYzIDQ4LjczMjYgMTk4Ljc5MyA0OS41NTMyIDE5OC44NjkgNTAuMzgxN0MxOTguOTQ1IDUxLjIwOTYgMTk5LjEwNSA1MS45NjIgMTk5LjM0OSA1Mi42MzgzQzE5OS41OTMgNTMuMzE0MSAxOTkuOTQgNTMuODg3OCAyMDAuMzkgNTQuMzU5MUMyMDAuODQgNTQuODI5OSAyMDEuNDMxIDU1LjExMTIgMjAyLjE2MyA1NS4yMDIzQzIwMi45NDEgNTUuMzA4NCAyMDMuNjEyIDU1LjE3MTcgMjA0LjE3NiA1NC43OTJDMjA0Ljc0IDU0LjQxMiAyMDUuMTk4IDUzLjg5MTggMjA1LjU0OSA1My4yMzA4QzIwNS44OTkgNTIuNTY5NSAyMDYuMTQ3IDUxLjgwNjEgMjA2LjI5MiA1MC45NDAxQzIwNi40MzcgNTAuMDc0IDIwNi40NzkgNDkuMjAzOSAyMDYuNDE4IDQ4LjMzMDFDMjA2LjM1NyA0Ny40NTYyIDIwNi4xOTYgNDYuNjMyMSAyMDUuOTM3IDQ1Ljg1NzVDMjA1LjY3OCA0NS4wODIyIDIwNS4zMTkgNDQuNDQ0IDIwNC44NjIgNDMuOTQyM0MyMDUuMTM3IDQzLjg2NjkgMjA1LjQ2NSA0My43MjI2IDIwNS44NDYgNDMuNTA5NUMyMDYuMjI3IDQzLjI5NjkgMjA2LjYyIDQzLjA1NzUgMjA3LjAyNCA0Mi43OTE1QzIwNy4xMjMgNDIuNzI2MSAyMDcuMjIxIDQyLjY1NzMgMjA3LjMyIDQyLjU5MDJDMjA3LjI4MyA0My4xMjg2IDIwNy4yNjQgNDMuNTEyNiAyMDcuMjY0IDQzLjczNzZDMjA3LjI0OSA0NC4yMzkgMjA3LjIxNSA0NC44NTgxIDIwNy4xNjEgNDUuNTk0OUMyMDcuMTA4IDQ2LjMzMiAyMDcuMDczIDQ3LjEwNjkgMjA3LjA1OCA0Ny45MTk4QzIwNy4wNDMgNDguNzMyNiAyMDcuMDczIDQ5LjU1MzIgMjA3LjE1IDUwLjM4MTdDMjA3LjIyNiA1MS4yMDk2IDIwNy4zODYgNTEuOTYyIDIwNy42MyA1Mi42MzgzQzIwNy44NzQgNTMuMzE0MSAyMDguMjIxIDUzLjg4NzggMjA4LjY3MSA1NC4zNTkxQzIwOS4xMjEgNTQuODI5OSAyMDkuNzEyIDU1LjExMTIgMjEwLjQ0NCA1NS4yMDIzQzIxMS4yMjEgNTUuMzA4NCAyMTEuODkyIDU1LjE3MTcgMjEyLjQ1NyA1NC43OTJDMjEzLjAyMSA1NC40MTIgMjEzLjQ3OCA1My44OTE4IDIxMy44MyA1My4yMzA4QzIxNC4xOCA1Mi41Njk1IDIxNC40MjggNTEuODA2MSAyMTQuNTczIDUwLjk0MDFDMjE0LjcxOCA1MC4wNzQgMjE0Ljc1OSA0OS4yMDM5IDIxNC42OTkgNDguMzMwMUMyMTQuNjM3IDQ3LjQ1NjIgMjE0LjQ3NyA0Ni42MzIxIDIxNC4yMTggNDUuODU3NUMyMTMuOTU5IDQ1LjA4MjIgMjEzLjYwMSA0NC40NDQgMjEzLjE0MyA0My45NDIzQzIxMy40MTggNDMuODY2OSAyMTMuNzQ1IDQzLjcyMjYgMjE0LjEyNyA0My41MDk1QzIxNC41MDggNDMuMjk2OSAyMTQuOSA0My4wNTc1IDIxNS4zMDUgNDIuNzkxNUMyMTUuNTE1IDQyLjY1MzMgMjE1LjcyNCA0Mi41MTA3IDIxNS45MzIgNDIuMzY0MUMyMTYuMDEgNDMuMTA3MiAyMTYuMTc5IDQzLjc1OSAyMTYuNDQ4IDQ0LjMwNzNDMjE2Ljc3NiA0NC45NzYxIDIxNy4yMjIgNDUuNDkyNSAyMTcuNzg3IDQ1Ljg1NzVDMjE4LjM1MSA0Ni4yMjE4IDIxOS4wMTQgNDYuNDIzNCAyMTkuNzc3IDQ2LjQ2MTJDMjIwLjUzOSA0Ni40OTg4IDIyMS4zNyA0Ni4zNTg2IDIyMi4yNzEgNDYuMDM5M0MyMjIuOTQxIDQ1Ljc5NjUgMjIzLjUyNSA0NS40OTI1IDIyNC4wMiA0NS4xMjc5QzIyNC41MTYgNDQuNzYzIDIyNC45NjIgNDQuMzE4NSAyMjUuMzU4IDQzLjc5NDZDMjI1LjM4MSA0My43NjQyIDIyNS40MDMgNDMuNzMxMyAyMjUuNDI1IDQzLjcwMDZDMjI1LjQ5NiA0My45MTM0IDIyNS41NzQgNDQuMTE3OSAyMjUuNjY3IDQ0LjMwNzNDMjI1Ljk5NSA0NC45NzYxIDIyNi40NDEgNDUuNDkyNSAyMjcuMDA2IDQ1Ljg1NzVDMjI3LjU2OSA0Ni4yMjE4IDIyOC4yMzMgNDYuNDIzNCAyMjguOTk2IDQ2LjQ2MTJDMjI5Ljc1OCA0Ni40OTg4IDIzMC41ODkgNDYuMzU4NiAyMzEuNDg5IDQ2LjAzOTNDMjMyLjE2IDQ1Ljc5NjUgMjMyLjc0NCA0NS40OTI1IDIzMy4yMzkgNDUuMTI3OUMyMzMuNzM1IDQ0Ljc2MyAyMzQuMTgxIDQ0LjMxODUgMjM0LjU3NyA0My43OTQ2QzIzNC45NzQgNDMuMjcgMjM1LjMzNiA0Mi42NjYgMjM1LjY2NCA0MS45ODI0QzIzNS45OTIgNDEuMjk4NSAyMzYuMzIzIDQwLjUxNjQgMjM2LjY1OSAzOS42MzQ3QzIzNi43MiAzOS4zOTE4IDIzNi42NjMgMzkuMTc1MiAyMzYuNDg4IDM4Ljk4NTJaXCIgZmlsbD1cIiMwRDBDMjNcIi8+XG48L3N2Zz5gO1xuXG5jb25zdCBwYXlwYWwgPSBgXG48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE1MFwiIGhlaWdodD1cIjQwXCI+XG48cGF0aCBmaWxsPVwiIzI1M0I4MFwiIGQ9XCJNNDYuMjExIDYuNzQ5aC02LjgzOWEuOTUuOTUgMCAwIDAtLjkzOS44MDJsLTIuNzY2IDE3LjUzN2EuNTcuNTcgMCAwIDAgLjU2NC42NThoMy4yNjVhLjk1Ljk1IDAgMCAwIC45MzktLjgwM2wuNzQ2LTQuNzNhLjk1Ljk1IDAgMCAxIC45MzgtLjgwM2gyLjE2NWM0LjUwNSAwIDcuMTA1LTIuMTggNy43ODQtNi41LjMwNi0xLjg5LjAxMy0zLjM3NS0uODcyLTQuNDE1LS45NzItMS4xNDItMi42OTYtMS43NDYtNC45ODUtMS43NDZ6TTQ3IDEzLjE1NGMtLjM3NCAyLjQ1NC0yLjI0OSAyLjQ1NC00LjA2MiAyLjQ1NGgtMS4wMzJsLjcyNC00LjU4M2EuNTcuNTcgMCAwIDEgLjU2My0uNDgxaC40NzNjMS4yMzUgMCAyLjQgMCAzLjAwMi43MDQuMzU5LjQyLjQ2OSAxLjA0NC4zMzIgMS45MDZ6TTY2LjY1NCAxMy4wNzVoLTMuMjc1YS41Ny41NyAwIDAgMC0uNTYzLjQ4MWwtLjE0NS45MTYtLjIyOS0uMzMyYy0uNzA5LTEuMDI5LTIuMjktMS4zNzMtMy44NjgtMS4zNzMtMy42MTkgMC02LjcxIDIuNzQxLTcuMzEyIDYuNTg2LS4zMTMgMS45MTguMTMyIDMuNzUyIDEuMjIgNS4wMzEuOTk4IDEuMTc2IDIuNDI2IDEuNjY2IDQuMTI1IDEuNjY2IDIuOTE2IDAgNC41MzMtMS44NzUgNC41MzMtMS44NzVsLS4xNDYuOTFhLjU3LjU3IDAgMCAwIC41NjIuNjZoMi45NWEuOTUuOTUgMCAwIDAgLjkzOS0uODAzbDEuNzctMTEuMjA5YS41NjguNTY4IDAgMCAwLS41NjEtLjY1OHptLTQuNTY1IDYuMzc0Yy0uMzE2IDEuODcxLTEuODAxIDMuMTI3LTMuNjk1IDMuMTI3LS45NTEgMC0xLjcxMS0uMzA1LTIuMTk5LS44ODMtLjQ4NC0uNTc0LS42NjgtMS4zOTEtLjUxNC0yLjMwMS4yOTUtMS44NTUgMS44MDUtMy4xNTIgMy42Ny0zLjE1Mi45MyAwIDEuNjg2LjMwOSAyLjE4NC44OTIuNDk5LjU4OS42OTcgMS40MTEuNTU0IDIuMzE3ek04NC4wOTYgMTMuMDc1aC0zLjI5MWEuOTU0Ljk1NCAwIDAgMC0uNzg3LjQxN2wtNC41MzkgNi42ODYtMS45MjQtNi40MjVhLjk1My45NTMgMCAwIDAtLjkxMi0uNjc4aC0zLjIzNGEuNTcuNTcgMCAwIDAtLjU0MS43NTRsMy42MjUgMTAuNjM4LTMuNDA4IDQuODExYS41Ny41NyAwIDAgMCAuNDY1LjloMy4yODdhLjk0OS45NDkgMCAwIDAgLjc4MS0uNDA4bDEwLjk0Ni0xNS44YS41Ny41NyAwIDAgMC0uNDY4LS44OTV6XCIvPlxuPHBhdGggZmlsbD1cIiMxNzlCRDdcIiBkPVwiTTk0Ljk5MiA2Ljc0OWgtNi44NGEuOTUuOTUgMCAwIDAtLjkzOC44MDJsLTIuNzY2IDE3LjUzN2EuNTY5LjU2OSAwIDAgMCAuNTYyLjY1OGgzLjUxYS42NjUuNjY1IDAgMCAwIC42NTYtLjU2MmwuNzg1LTQuOTcxYS45NS45NSAwIDAgMSAuOTM4LS44MDNoMi4xNjRjNC41MDYgMCA3LjEwNS0yLjE4IDcuNzg1LTYuNS4zMDctMS44OS4wMTItMy4zNzUtLjg3My00LjQxNS0uOTcxLTEuMTQyLTIuNjk0LTEuNzQ2LTQuOTgzLTEuNzQ2em0uNzg5IDYuNDA1Yy0uMzczIDIuNDU0LTIuMjQ4IDIuNDU0LTQuMDYyIDIuNDU0aC0xLjAzMWwuNzI1LTQuNTgzYS41NjguNTY4IDAgMCAxIC41NjItLjQ4MWguNDczYzEuMjM0IDAgMi40IDAgMy4wMDIuNzA0LjM1OS40Mi40NjggMS4wNDQuMzMxIDEuOTA2ek0xMTUuNDM0IDEzLjA3NWgtMy4yNzNhLjU2Ny41NjcgMCAwIDAtLjU2Mi40ODFsLS4xNDUuOTE2LS4yMy0uMzMyYy0uNzA5LTEuMDI5LTIuMjg5LTEuMzczLTMuODY3LTEuMzczLTMuNjE5IDAtNi43MDkgMi43NDEtNy4zMTEgNi41ODYtLjMxMiAxLjkxOC4xMzEgMy43NTIgMS4yMTkgNS4wMzEgMSAxLjE3NiAyLjQyNiAxLjY2NiA0LjEyNSAxLjY2NiAyLjkxNiAwIDQuNTMzLTEuODc1IDQuNTMzLTEuODc1bC0uMTQ2LjkxYS41Ny41NyAwIDAgMCAuNTY0LjY2aDIuOTQ5YS45NS45NSAwIDAgMCAuOTM4LS44MDNsMS43NzEtMTEuMjA5YS41NzEuNTcxIDAgMCAwLS41NjUtLjY1OHptLTQuNTY1IDYuMzc0Yy0uMzE0IDEuODcxLTEuODAxIDMuMTI3LTMuNjk1IDMuMTI3LS45NDkgMC0xLjcxMS0uMzA1LTIuMTk5LS44ODMtLjQ4NC0uNTc0LS42NjYtMS4zOTEtLjUxNC0yLjMwMS4yOTctMS44NTUgMS44MDUtMy4xNTIgMy42Ny0zLjE1Mi45MyAwIDEuNjg2LjMwOSAyLjE4NC44OTIuNTAxLjU4OS42OTkgMS40MTEuNTU0IDIuMzE3ek0xMTkuMjk1IDcuMjNsLTIuODA3IDE3Ljg1OGEuNTY5LjU2OSAwIDAgMCAuNTYyLjY1OGgyLjgyMmMuNDY5IDAgLjg2Ny0uMzQuOTM5LS44MDNsMi43NjgtMTcuNTM2YS41Ny41NyAwIDAgMC0uNTYyLS42NTloLTMuMTZhLjU3MS41NzEgMCAwIDAtLjU2Mi40ODJ6XCIvPlxuPHBhdGggZmlsbD1cIiMyNTNCODBcIiBkPVwiTTcuMjY2IDI5LjE1NGwuNTIzLTMuMzIyLTEuMTY1LS4wMjdIMS4wNjFMNC45MjcgMS4yOTJhLjMxNi4zMTYgMCAwIDEgLjMxNC0uMjY4aDkuMzhjMy4xMTQgMCA1LjI2My42NDggNi4zODUgMS45MjcuNTI2LjYuODYxIDEuMjI3IDEuMDIzIDEuOTE3LjE3LjcyNC4xNzMgMS41ODkuMDA3IDIuNjQ0bC0uMDEyLjA3N3YuNjc2bC41MjYuMjk4YTMuNjkgMy42OSAwIDAgMSAxLjA2NS44MTJjLjQ1LjUxMy43NDEgMS4xNjUuODY0IDEuOTM4LjEyNy43OTUuMDg1IDEuNzQxLS4xMjMgMi44MTItLjI0IDEuMjMyLS42MjggMi4zMDUtMS4xNTIgMy4xODNhNi41NDcgNi41NDcgMCAwIDEtMS44MjUgMmMtLjY5Ni40OTQtMS41MjMuODY5LTIuNDU4IDEuMTA5LS45MDYuMjM2LTEuOTM5LjM1NS0zLjA3Mi4zNTVoLS43M2MtLjUyMiAwLTEuMDI5LjE4OC0xLjQyNy41MjVhMi4yMSAyLjIxIDAgMCAwLS43NDQgMS4zMjhsLS4wNTUuMjk5LS45MjQgNS44NTUtLjA0Mi4yMTVjLS4wMTEuMDY4LS4wMy4xMDItLjA1OC4xMjVhLjE1NS4xNTUgMCAwIDEtLjA5Ni4wMzVINy4yNjZ6XCIvPlxuPHBhdGggZmlsbD1cIiMxNzlCRDdcIiBkPVwiTTIzLjA0OCA3LjY2N2MtLjAyOC4xNzktLjA2LjM2Mi0uMDk2LjU1LTEuMjM3IDYuMzUxLTUuNDY5IDguNTQ1LTEwLjg3NCA4LjU0NUg5LjMyNmMtLjY2MSAwLTEuMjE4LjQ4LTEuMzIxIDEuMTMyTDYuNTk2IDI2LjgzbC0uMzk5IDIuNTMzYS43MDQuNzA0IDAgMCAwIC42OTUuODE0aDQuODgxYy41NzggMCAxLjA2OS0uNDIgMS4xNi0uOTlsLjA0OC0uMjQ4LjkxOS01LjgzMi4wNTktLjMyYy4wOS0uNTcyLjU4Mi0uOTkyIDEuMTYtLjk5MmguNzNjNC43MjkgMCA4LjQzMS0xLjkyIDkuNTEzLTcuNDc2LjQ1Mi0yLjMyMS4yMTgtNC4yNTktLjk3OC01LjYyMmE0LjY2NyA0LjY2NyAwIDAgMC0xLjMzNi0xLjAzelwiLz5cbjxwYXRoIGZpbGw9XCIjMjIyRDY1XCIgZD1cIk0yMS43NTQgNy4xNTFhOS43NTcgOS43NTcgMCAwIDAtMS4yMDMtLjI2NyAxNS4yODQgMTUuMjg0IDAgMCAwLTIuNDI2LS4xNzdoLTcuMzUyYTEuMTcyIDEuMTcyIDAgMCAwLTEuMTU5Ljk5Mkw4LjA1IDE3LjYwNWwtLjA0NS4yODlhMS4zMzYgMS4zMzYgMCAwIDEgMS4zMjEtMS4xMzJoMi43NTJjNS40MDUgMCA5LjYzNy0yLjE5NSAxMC44NzQtOC41NDUuMDM3LS4xODguMDY4LS4zNzEuMDk2LS41NWE2LjU5NCA2LjU5NCAwIDAgMC0xLjAxNy0uNDI5IDkuMDQ1IDkuMDQ1IDAgMCAwLS4yNzctLjA4N3pcIi8+XG48cGF0aCBmaWxsPVwiIzI1M0I4MFwiIGQ9XCJNOS42MTQgNy42OTlhMS4xNjkgMS4xNjkgMCAwIDEgMS4xNTktLjk5MWg3LjM1MmMuODcxIDAgMS42ODQuMDU3IDIuNDI2LjE3N2E5Ljc1NyA5Ljc1NyAwIDAgMSAxLjQ4MS4zNTNjLjM2NS4xMjEuNzA0LjI2NCAxLjAxNy40MjkuMzY4LTIuMzQ3LS4wMDMtMy45NDUtMS4yNzItNS4zOTJDMjAuMzc4LjY4MiAxNy44NTMgMCAxNC42MjIgMGgtOS4zOGMtLjY2IDAtMS4yMjMuNDgtMS4zMjUgMS4xMzNMLjAxIDI1Ljg5OGEuODA2LjgwNiAwIDAgMCAuNzk1LjkzMmg1Ljc5MWwxLjQ1NC05LjIyNSAxLjU2NC05LjkwNnpcIi8+XG48L3N2Zz5gO1xuIl0sIm5hbWVzIjpbImFkZEljb24iLCJyYW5nZSIsIlJhbmdlIiwicmVxdWlyZSQkMCIsInRoaXMiLCJ1bmRlZmluZWQiLCJnbG9iYWwiLCJyZXF1aXJlJCQxIiwicmVxdWlyZSQkMiIsInJlcXVpcmUkJDMiLCJyZXF1aXJlJCQ0IiwibmV2ZXJ0aHJvd18xIiwiYXN0X3V0aWxzXzEiLCJyZXN1bHRzXzEiLCJjb2x1bW5fMSIsInJvd18xIiwibG9kYXNoXzEiLCJyYW5nZV8xIiwicmVxdWlyZSQkNSIsIlRva2VuRXJyb3JfMSIsIlRva2VuRXJyb3IiLCJQYXJzZXJfMSIsIlBhcnNlciIsIkJORl8xIiwiQk5GIiwicmVxdWlyZSQkNiIsInJlcXVpcmUkJDciLCJyZXF1aXJlJCQ4IiwicmVxdWlyZSQkOSIsInJlcXVpcmUkJDEwIiwicmVxdWlyZSQkMTEiLCJyZXF1aXJlJCQxMiIsIkZvcm1hdFR5cGUiLCJvcHRpb25zV2l0aERlZmF1bHRzIiwiUG9pbnQiLCJBbGlnbm1lbnQiLCJTb3J0T3JkZXIiLCJOb3RpY2UiLCJNVEVFZGl0b3IiLCJNb2RhbCIsIk1hcmtkb3duVmlldyIsIkl0ZW1WaWV3IiwiUHJlYyIsImtleW1hcCIsIlBsdWdpbiIsIlNldHRpbmciLCJQbHVnaW5TZXR0aW5nVGFiIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksYUFBYSxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNuQyxJQUFJLGFBQWEsR0FBRyxNQUFNLENB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QUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7QUFDbkcsUUFBUSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7QUFDdEcsUUFBUSxTQUFTLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUU7QUFDdEgsUUFBUSxJQUFJLENBQUMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDOUUsS0FBSyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBQ0Q7QUFDTyxTQUFTLFdBQVcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFO0FBQzNDLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNySCxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxPQUFPLE1BQU0sS0FBSyxVQUFVLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxXQUFXLEVBQUUsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdKLElBQUksU0FBUyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDdEUsSUFBSSxTQUFTLElBQUksQ0FBQyxFQUFFLEVBQUU7QUFDdEIsUUFBUSxJQUFJLENBQUMsRUFBRSxNQUFNLElBQUksU0FBUyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7QUFDdEUsUUFBUSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUN0RCxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFD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SSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksWUFBWSxFQUFFO0FBQ3hELE9BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7T0FDVixPQUFPLENBQUMsQ0FBQztNQUNWO0FBQ0w7S0FDSSxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ25DLEtBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLEdBQUcsUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM3QztBQUNBLEtBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRTtLQUNJLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDckI7S0FDSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUM7S0FDOUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNOLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLEtBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2hCLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDWDtBQUNBO0FBQ0EsS0FBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRztPQUNoQixFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN4QixPQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEM7T0FDTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN4QixPQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakM7QUFDQSxPQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7TUFDL0Q7QUFDTDtBQUNBLEtBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JDO0tBQ0ksUUFBUSxHQUFHLElBQUksQ0FBQztBQUNwQjtBQUNBLEtBQUksT0FBTyxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3RFLElBQUcsQ0FBQztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUUsQ0FBQyxDQUFDLFFBQVEsR0FBRyxZQUFZO0FBQzNCLEtBQUksT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNwQixJQUFHLENBQUM7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7R0FDRSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsWUFBWTtLQUNsQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUN4RSxJQUFHLENBQUM7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsWUFBWTtBQUN4QixLQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ25CLElBQUcsQ0FBQztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtHQUNFLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxZQUFZO0FBQ3ZDLEtBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0QixJQUFHLENBQUM7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7R0FDRSxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsWUFBWTtBQUN2QyxLQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEIsSUFBRyxDQUFDO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRSxDQUFDLENBQUMsTUFBTSxHQUFHLFlBQVk7QUFDekIsS0FBSSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZDLElBQUcsQ0FBQztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtHQUNFLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxVQUFVLENBQUMsRUFBRTtLQUMvQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLElBQUcsQ0FBQztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtHQUNFLENBQUMsQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0tBQ3pDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0IsSUFBRyxDQUFDO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtHQUNFLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxVQUFVLElBQUksRUFBRTtBQUN4QyxLQUFJLElBQUksUUFBUSxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUM7T0FDOUMsR0FBRyxHQUFHLElBQUk7QUFDaEIsT0FBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLFdBQVc7QUFDNUIsT0FBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVM7QUFDekIsT0FBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVE7T0FDbEIsS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNoQjtBQUNBO0FBQ0EsS0FBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUU7QUFDdEIsT0FBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7T0FDcEIsUUFBUSxHQUFHLElBQUksQ0FBQztBQUN0QixNQUFLLE1BQU07QUFDWCxPQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QixPQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2pCO0FBQ0E7QUFDQSxPQUFNLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hFO09BQ00sUUFBUSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7TUFDeEI7QUFDTDtBQUNBLEtBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDZDtBQUNBO0tBQ0ksSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQy9DLE9BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztNQUN6RTtBQUNMO0FBQ0E7QUFDQTtLQUNJLElBQUksUUFBUSxFQUFFO0FBQ2xCLE9BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtTQUNoQixHQUFHLEdBQUcsSUFBSSxDQUFDO0FBQ25CLFFBQU8sTUFBTTtBQUNiLFNBQVEsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDOUMsU0FBUSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNmO01BQ0Y7QUFDTDtLQUNJLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDckIsS0FBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQztLQUNoQixHQUFHLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3BDLEtBQUksV0FBVyxHQUFHLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDakY7QUFDQTtBQUNBLEtBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLElBQUksbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQzlDO0FBQ0EsT0FBTSxHQUFHO1NBQ0QsRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUNULEdBQUcsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDeEMsU0FBUSxXQUFXLEdBQUcsUUFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNyRixTQUFRLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDNUM7U0FDUSxJQUFJLENBQUMsR0FBRyxFQUFFO0FBQ2xCO0FBQ0E7V0FDVSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRTtBQUNyRSxhQUFZLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDNUI7QUFDWDtBQUNBLFdBQVUsTUFBTTtVQUNQO0FBQ1QsUUFBTyxRQUFRLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtNQUNqRDtBQUNMO0tBQ0ksUUFBUSxHQUFHLElBQUksQ0FBQztBQUNwQjtLQUNJLE9BQU8sUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDL0IsSUFBRyxDQUFDO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtHQUNFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsRUFBRTtLQUM3QixJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRTtPQUM5QyxDQUFDLEdBQUcsSUFBSTtBQUNkLE9BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUM7QUFDM0I7QUFDQSxLQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQjtBQUNBO0tBQ0ksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ3RCO0FBQ0E7QUFDQSxPQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUM7QUFDQTtBQUNBLFlBQVcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO1lBQ1csQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUN0RDtPQUNNLE9BQU8sQ0FBQyxDQUFDO01BQ1Y7QUFDTDtBQUNBO0tBQ0ksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7T0FDZCxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQixPQUFNLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztNQUNsQjtBQUNMO0FBQ0EsS0FBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNiLEtBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDYixLQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0FBQ3hCLEtBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDdkI7QUFDQTtBQUNBLEtBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUMxQjtBQUNBO0FBQ0EsT0FBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1QjtBQUNBO0FBQ0EsWUFBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEM7QUFDQTtBQUNBO0FBQ0EsWUFBVyxPQUFPLElBQUksSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUM7QUFDQSxPQUFNLE9BQU8sUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztNQUMzQztBQUNMO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO0tBQzlCLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztBQUNuQztBQUNBLEtBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNwQixLQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2Y7QUFDQTtLQUNJLElBQUksQ0FBQyxFQUFFO0FBQ1gsT0FBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQjtPQUNNLElBQUksSUFBSSxFQUFFO1NBQ1IsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNmLFNBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2YsU0FBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztBQUN4QixRQUFPLE1BQU07U0FDTCxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQ1AsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNmLFNBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDakI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3REO0FBQ0EsT0FBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7U0FDVCxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2QsU0FBUSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNkO0FBQ1A7QUFDQTtBQUNBLE9BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ2xCLE9BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEMsT0FBTSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDbEI7QUFDQTtBQUNBLE1BQUssTUFBTTtBQUNYO0FBQ0E7QUFDQTtBQUNBLE9BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDcEIsT0FBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztBQUN0QixPQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ3JCLE9BQU0sSUFBSSxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUN4QjtPQUNNLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1NBQ3hCLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTtXQUNsQixJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQixXQUFVLE1BQU07VUFDUDtRQUNGO0FBQ1A7T0FDTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO01BQ1A7QUFDTDtLQUNJLElBQUksSUFBSSxFQUFFO09BQ1IsQ0FBQyxHQUFHLEVBQUUsQ0FBQztPQUNQLEVBQUUsR0FBRyxFQUFFLENBQUM7T0FDUixFQUFFLEdBQUcsQ0FBQyxDQUFDO09BQ1AsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDWjtBQUNMO0FBQ0EsS0FBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztBQUNwQjtBQUNBO0FBQ0E7S0FDSSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN4RDtBQUNBO0tBQ0ksS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHO0FBQ2hDO09BQ00sSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7U0FDbkIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7QUFDMUQsU0FBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoQixTQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDZjtBQUNQO09BQ00sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztNQUNoQjtBQUNMO0FBQ0E7QUFDQSxLQUFJLE9BQU8sRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUN0QztBQUNBO0FBQ0EsS0FBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3hDO0FBQ0E7S0FDSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNuRDtBQUNBLEtBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDVCxDQUFDLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuQztBQUNBLEtBQUksT0FBTyxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlDLElBQUcsQ0FBQztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7R0FDRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDbEMsS0FBSSxJQUFJLENBQUM7T0FDSCxDQUFDLEdBQUcsSUFBSTtBQUNkLE9BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUM7QUFDM0I7QUFDQSxLQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQjtBQUNBO0FBQ0EsS0FBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM3RDtBQUNBO0FBQ0EsS0FBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUNoQyxPQUFNLE9BQU8sUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO01BQzdEO0FBQ0w7QUFDQTtLQUNJLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDckI7QUFDQSxLQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsT0FBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN0QyxPQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQixNQUFLLE1BQU07QUFDWCxPQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztNQUNyQztBQUNMO0tBQ0ksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkI7S0FDSSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQ3BCO0FBQ0EsS0FBSSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEIsSUFBRyxDQUFDO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtHQUNFLENBQUMsQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLFlBQVk7QUFDN0MsS0FBSSxPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3BDLElBQUcsQ0FBQztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0dBQ0UsQ0FBQyxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsWUFBWTtBQUMxQyxLQUFJLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEMsSUFBRyxDQUFDO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7R0FDRSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsWUFBWTtLQUM5QixJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDbkMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDZixLQUFJLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLElBQUcsQ0FBQztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7R0FDRSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDaEMsS0FBSSxJQUFJLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7T0FDeEMsQ0FBQyxHQUFHLElBQUk7QUFDZCxPQUFNLElBQUksR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDO0FBQzNCO0FBQ0EsS0FBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEI7QUFDQTtLQUNJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUN0QjtBQUNBO0FBQ0EsT0FBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7WUFDVyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ2hFO09BQ00sT0FBTyxDQUFDLENBQUM7TUFDVjtBQUNMO0FBQ0E7S0FDSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtPQUNkLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pCLE9BQU0sT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO01BQ25CO0FBQ0w7QUFDQSxLQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2IsS0FBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNiLEtBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7QUFDeEIsS0FBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUN2QjtBQUNBO0FBQ0EsS0FBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLE9BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEM7QUFDQSxPQUFNLE9BQU8sUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztNQUMzQztBQUNMO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO0tBQzlCLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztBQUNsQztBQUNBLEtBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNwQixLQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2Q7QUFDQTtLQUNJLElBQUksQ0FBQyxFQUFFO0FBQ1g7QUFDQSxPQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtTQUNULENBQUMsR0FBRyxFQUFFLENBQUM7QUFDZixTQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNmLFNBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDeEIsUUFBTyxNQUFNO1NBQ0wsQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUNQLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZCxTQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2pCO0FBQ1A7QUFDQTtPQUNNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQztBQUNuQyxPQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUN0QztBQUNBLE9BQU0sSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFO1NBQ1gsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUNoQixTQUFRLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2Q7QUFDUDtBQUNBO0FBQ0EsT0FBTSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7T0FDWixPQUFPLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0IsT0FBTSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7TUFDYjtBQUNMO0FBQ0EsS0FBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztBQUNwQixLQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO0FBQ2xCO0FBQ0E7QUFDQSxLQUFJLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7T0FDZixDQUFDLEdBQUcsR0FBRyxDQUFDO09BQ1IsQ0FBQyxHQUFHLEVBQUUsQ0FBQztPQUNQLEVBQUUsR0FBRyxFQUFFLENBQUM7T0FDUixFQUFFLEdBQUcsQ0FBQyxDQUFDO01BQ1I7QUFDTDtBQUNBO0FBQ0EsS0FBSSxLQUFLLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHO09BQ2xCLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7QUFDM0QsT0FBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO01BQ2Y7QUFDTDtLQUNJLElBQUksS0FBSyxFQUFFO0FBQ2YsT0FBTSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO09BQ2xCLEVBQUUsQ0FBQyxDQUFDO01BQ0w7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFJLEtBQUssR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwRDtBQUNBLEtBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDVCxDQUFDLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuQztBQUNBLEtBQUksT0FBTyxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlDLElBQUcsQ0FBQztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7R0FDRSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDcEMsS0FBSSxJQUFJLENBQUM7T0FDSCxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ2Y7S0FDSSxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzFGO0FBQ0EsS0FBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7T0FDUCxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1QixPQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEMsTUFBSyxNQUFNO09BQ0wsQ0FBQyxHQUFHLEdBQUcsQ0FBQztNQUNUO0FBQ0w7S0FDSSxPQUFPLENBQUMsQ0FBQztBQUNiLElBQUcsQ0FBQztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRSxDQUFDLENBQUMsS0FBSyxHQUFHLFlBQVk7S0FDcEIsSUFBSSxDQUFDLEdBQUcsSUFBSTtBQUNoQixPQUFNLElBQUksR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDO0FBQzNCO0FBQ0EsS0FBSSxPQUFPLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDekQsSUFBRyxDQUFDO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtHQUNFLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxZQUFZO0tBQzNCLElBQUksRUFBRSxFQUFFLEVBQUU7T0FDUixDQUFDLEdBQUcsSUFBSTtBQUNkLE9BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUM7QUFDM0I7QUFDQSxLQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QyxLQUFJLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkM7QUFDQSxLQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0FBQ3hCLEtBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7S0FDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUMzRCxLQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCO0FBQ0EsS0FBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QztBQUNBLEtBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFDeEIsS0FBSSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUN2QjtLQUNJLE9BQU8sUUFBUSxDQUFDLFFBQVEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzlELElBQUcsQ0FBQztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7R0FDRSxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsWUFBWTtLQUNsQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztPQUNyQixDQUFDLEdBQUcsSUFBSTtBQUNkLE9BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2IsT0FBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDYixPQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNiLE9BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUM7QUFDM0I7QUFDQTtBQUNBLEtBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ2hDLE9BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztNQUNwRTtBQUNMO0tBQ0ksUUFBUSxHQUFHLEtBQUssQ0FBQztBQUNyQjtBQUNBO0tBQ0ksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QjtBQUNBO0FBQ0E7S0FDSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDOUIsT0FBTSxDQUFDLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCO0FBQ0EsT0FBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDO09BQ3RDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO09BQ2pCLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BEO0FBQ0EsT0FBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCLFNBQVEsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7QUFDckIsUUFBTyxNQUFNO0FBQ2IsU0FBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO0FBQzlCLFNBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDO0FBQ1A7QUFDQSxPQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QixNQUFLLE1BQU07T0FDTCxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7TUFDNUI7QUFDTDtLQUNJLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQztBQUNsQztBQUNBO0FBQ0EsS0FBSSxTQUFTO09BQ1AsQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUNOLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckQ7QUFDQTtBQUNBLE9BQU0sSUFBSSxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQ3ZGLFNBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDcEM7QUFDQTtBQUNBO1NBQ1EsSUFBSSxDQUFDLElBQUksTUFBTSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxNQUFNLEVBQUU7QUFDaEQ7QUFDQTtBQUNBO1dBQ1UsSUFBSSxDQUFDLEdBQUcsRUFBRTthQUNSLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNsQztBQUNBLGFBQVksSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTtlQUNwQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLGVBQWMsTUFBTTtjQUNQO1lBQ0Y7QUFDWDtXQUNVLEVBQUUsSUFBSSxDQUFDLENBQUM7V0FDUixHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCLFVBQVMsTUFBTTtBQUNmO0FBQ0E7QUFDQTtXQUNVLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRTtBQUN6RDtBQUNBO2FBQ1ksUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLGFBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkI7QUFDWDtBQUNBLFdBQVUsTUFBTTtVQUNQO1FBQ0Y7TUFDRjtBQUNMO0tBQ0ksUUFBUSxHQUFHLElBQUksQ0FBQztBQUNwQjtBQUNBLEtBQUksT0FBTyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzVDLElBQUcsQ0FBQztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtHQUNFLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxZQUFZO0tBQzlCLElBQUksRUFBRSxFQUFFLEVBQUU7T0FDUixDQUFDLEdBQUcsSUFBSTtBQUNkLE9BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUM7QUFDM0I7QUFDQSxLQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QyxLQUFJLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkM7QUFDQSxLQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0FBQ3hCLEtBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDdkIsS0FBSSxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDN0IsS0FBSSxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztBQUN0QjtBQUNBLEtBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQixLQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ1osS0FBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDcEU7QUFDQSxLQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBQ3hCLEtBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDdkI7S0FDSSxPQUFPLFFBQVEsQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2hGLElBQUcsQ0FBQztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7R0FDRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDakMsS0FBSSxJQUFJLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRztPQUNwQyxDQUFDLEdBQUcsSUFBSTtBQUNkLE9BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxXQUFXO0FBQzFCLE9BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2QsT0FBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQy9CO0FBQ0EsS0FBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDZjtBQUNBO0FBQ0EsS0FBSSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ3hDO0FBQ0EsT0FBTSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUN4RTtBQUNBO0FBQ0E7QUFDQSxXQUFVLEdBQUc7QUFDYjtBQUNBO0FBQ0E7QUFDQSxXQUFVLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7TUFDckM7QUFDTDtBQUNBLEtBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO0FBQzlELEtBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDcEIsS0FBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztBQUNwQjtBQUNBO0FBQ0EsS0FBSSxJQUFJLEdBQUcsR0FBRyxHQUFHLEVBQUU7T0FDYixDQUFDLEdBQUcsRUFBRSxDQUFDO09BQ1AsRUFBRSxHQUFHLEVBQUUsQ0FBQztPQUNSLEVBQUUsR0FBRyxDQUFDLENBQUM7T0FDUCxFQUFFLEdBQUcsR0FBRyxDQUFDO09BQ1QsR0FBRyxHQUFHLEdBQUcsQ0FBQztPQUNWLEdBQUcsR0FBRyxFQUFFLENBQUM7TUFDVjtBQUNMO0FBQ0E7S0FDSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ1gsS0FBSSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUNuQixLQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pDO0FBQ0E7S0FDSSxLQUFLLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHO09BQ3ZCLEtBQUssR0FBRyxDQUFDLENBQUM7T0FDVixLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUc7U0FDeEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO1NBQ3pDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLFNBQVEsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCO0FBQ1A7QUFDQSxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztNQUNsQztBQUNMO0FBQ0E7QUFDQSxLQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDOUI7QUFDQSxLQUFJLElBQUksS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ25CLFVBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ25CO0FBQ0EsS0FBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNSLENBQUMsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xDO0FBQ0EsS0FBSSxPQUFPLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyRSxJQUFHLENBQUM7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7R0FDRSxDQUFDLENBQUMsUUFBUSxHQUFHLFVBQVUsRUFBRSxFQUFFLEVBQUUsRUFBRTtLQUM3QixPQUFPLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMzQyxJQUFHLENBQUM7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFFLENBQUMsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUU7S0FDN0MsSUFBSSxDQUFDLEdBQUcsSUFBSTtBQUNoQixPQUFNLElBQUksR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDO0FBQzNCO0FBQ0EsS0FBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDaEIsSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDaEM7S0FDSSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNsQztLQUNJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1VBQ2pDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlCO0FBQ0EsS0FBSSxPQUFPLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3pDLElBQUcsQ0FBQztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0dBQ0UsQ0FBQyxDQUFDLGFBQWEsR0FBRyxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDdEMsS0FBSSxJQUFJLEdBQUc7T0FDTCxDQUFDLEdBQUcsSUFBSTtBQUNkLE9BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUM7QUFDM0I7QUFDQSxLQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxFQUFFO09BQ2pCLEdBQUcsR0FBRyxjQUFjLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3BDLE1BQUssTUFBTTtPQUNMLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ3BDO09BQ00sSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDakMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEM7QUFDQSxPQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM1QyxPQUFNLEdBQUcsR0FBRyxjQUFjLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7TUFDdkM7QUFDTDtBQUNBLEtBQUksT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDdEQsSUFBRyxDQUFDO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0dBQ0UsQ0FBQyxDQUFDLE9BQU8sR0FBRyxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUU7S0FDNUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztPQUNSLENBQUMsR0FBRyxJQUFJO0FBQ2QsT0FBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQztBQUMzQjtBQUNBLEtBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUU7QUFDdkIsT0FBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlCLE1BQUssTUFBTTtPQUNMLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ3BDO09BQ00sSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDakMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEM7T0FDTSxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsRCxPQUFNLEdBQUcsR0FBRyxjQUFjLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztNQUM5QztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUksT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDdEQsSUFBRyxDQUFDO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFFLENBQUMsQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLEVBQUU7S0FDN0IsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7T0FDMUMsQ0FBQyxHQUFHLElBQUk7QUFDZCxPQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNkLE9BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUM7QUFDM0I7S0FDSSxJQUFJLENBQUMsRUFBRSxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEM7S0FDSSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3RCLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUI7QUFDQSxLQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNyQixLQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QyxLQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDO0tBQ2pCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkQ7QUFDQSxLQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRTtBQUN0QjtBQUNBO09BQ00sSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUM1QixNQUFLLE1BQU07QUFDWCxPQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUNuQixJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25FLE9BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztNQUN2QztBQUNMO0tBQ0ksUUFBUSxHQUFHLEtBQUssQ0FBQztLQUNqQixDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDckMsS0FBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztBQUN4QixLQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQztBQUNsRDtBQUNBLEtBQUksVUFBVTtBQUNkLE9BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEMsT0FBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7T0FDMUIsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNO09BQzdCLEVBQUUsR0FBRyxFQUFFLENBQUM7T0FDUixFQUFFLEdBQUcsRUFBRSxDQUFDO09BQ1IsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNkLE9BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO09BQzFCLEVBQUUsR0FBRyxFQUFFLENBQUM7T0FDUixFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2IsT0FBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7T0FDekIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztNQUNSO0FBQ0w7QUFDQSxLQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3QyxLQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMvQixLQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztLQUMzQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QjtBQUNBO0FBQ0EsS0FBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUM7V0FDOUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDOUI7QUFDQSxLQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0tBQ3BCLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDcEI7S0FDSSxPQUFPLENBQUMsQ0FBQztBQUNiLElBQUcsQ0FBQztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUUsQ0FBQyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLFVBQVUsRUFBRSxFQUFFLEVBQUUsRUFBRTtLQUM1QyxPQUFPLGNBQWMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM1QyxJQUFHLENB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VSxLQUFLLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQ3REO0FBQ0E7V0FDVSxDQUFDLElBQUksUUFBUSxDQUFDO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLFdBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLEdBQUcsTUFBTSxDQUFDO0FBQ3BDO0FBQ0E7V0FDVSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1VBQzNEO1FBQ0Y7QUFDUDtBQUNBO0FBQ0EsT0FBTSxXQUFXLEdBQUcsV0FBVyxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3pDLFNBQVEsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU0sT0FBTyxHQUFHLEVBQUUsR0FBRyxDQUFDO1dBQ1osQ0FBQyxFQUFFLElBQUksV0FBVyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNyRSxXQUFVLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLFdBQVcsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNqRTtBQUNBO0FBQ0EsV0FBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMs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QUM7QUFDaEMsTUFBSyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUN0QjtBQUNBO0FBQ0EsT0FBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztNQUNoQjtBQUNMO0FBQ0E7QUFDQSxLQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQy9DO0FBQ0E7S0FDSSxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQzlELEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUM1QjtLQUNJLElBQUksR0FBRyxFQUFFO09BQ1AsR0FBRyxJQUFJLENBQUMsQ0FBQztPQUNULENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLE9BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO09BQ00sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUM7T0FDdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxRQUFRLENBQUM7QUFDL0I7QUFDQSxPQUFNLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRTtBQUNuQixTQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsQyxLQUFLLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxD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QUFDQSxHQUFFLFNBQVMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUU7QUFDckQsU0FBUSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUUsQ0FBQSxDQUFDLEVBQUUsRUFBRSxDQUFBO09BRWIsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUE7T0FDbkIsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLFFBQVEsRUFBRTtBQUNuQztLQUNJLFFBQVEsR0FBRyxLQUFLLENBQUM7S0FDakIsRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEIsS0FBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEI7QUFDQSxLQUFJLFNBQVM7T0FDUCxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDMUQsT0FBTSxDQUFDLEdBQUcsWUFBWSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztPQUMxQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7T0FDcEQsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEI7T0FDTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUU7U0FDckIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQy9DLFNBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsTUFBTTtRQUNwQjtBQUNQO09BQ00sQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUNOLENBQUMsR0FBRyxDQUFDLENBQUM7T0FDTixDQUFDLEdBQUcsQ0FBQyxDQUFDO09BQ04sQ0FBQyxHQUFHLENBQUMsQ0FBQztNQUVQO0FBQ0w7S0FDSSxRQUFRLEdBQUcsSUFBSSxDQUFDO0tBQ2hCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkI7S0FDSSxPQUFPLENBQUMsQ0FBQztJQUNWO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRSxTQUFTLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3pCLEtBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2QsS0FBSSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDbkIsT0FBTyxDQUFDLENBQUM7SUFDVjtBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUUsU0FBUyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO0FBQ3JDLEtBQUksSUFBSSxDQUFDO0FBQ1QsT0FBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO09BQ2YsRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7T0FDbkMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0I7QUFDQSxLQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDaEI7QUFDQSxLQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUN2QixPQUFNLFFBQVEsR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUN6QixPQUFPLENBQUMsQ0FBQztNQUNWO0FBQ0w7S0FDSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN2QjtBQUNBLEtBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7QUFDcEIsT0FBTSxRQUFRLEdBQUcsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0IsTUFBSyxNQUFNO0FBQ1gsT0FBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDL0I7QUFDQTtBQUNBLE9BQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQ3pCLFNBQVEsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3hELE9BQU8sQ0FBQyxDQUFDO1FBQ1Y7QUFDUDtBQUNBLE9BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO01BQ3pEO0FBQ0w7S0FDSSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDMUI7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtHQUNFLFNBQVMsY0FBYyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUM5QyxLQUFJLElBQUksSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQy9DLE9BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxXQUFXO0FBQzFCLE9BQU0sS0FBSyxHQUFHLEVBQUUsS0FBSyxLQUFLLENBQUMsQ0FBQztBQUM1QjtLQUNJLElBQUksS0FBSyxFQUFFO09BQ1QsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7T0FDOUIsSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDakMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEMsTUFBSyxNQUFNO0FBQ1gsT0FBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztBQUMxQixPQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO01BQ3BCO0FBQ0w7QUFDQSxLQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7QUFDdkIsT0FBTSxHQUFHLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakMsTUFBSyxNQUFNO0FBQ1gsT0FBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO09BQ3hCLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtPQUNNLElBQUksS0FBSyxFQUFFO1NBQ1QsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUNqQixTQUFRLElBQUksT0FBTyxJQUFJLEVBQUUsRUFBRTtBQUMzQixXQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMxQixVQUFTLE1BQU0sSUFBSSxPQUFPLElBQUksQ0FBQyxFQUFFO0FBQ2pDLFdBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1VBQ2pCO0FBQ1QsUUFBTyxNQUFNO1NBQ0wsSUFBSSxHQUFHLE9BQU8sQ0FBQztRQUNoQjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtTQUNWLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNuQyxTQUFRLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNoQixDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQzdCLFNBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUMvQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ2xCO0FBQ1A7T0FDTSxFQUFFLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdEMsT0FBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDMUI7QUFDQTtBQUNBLE9BQU0sT0FBTyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3ZDO0FBQ0EsT0FBTSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ2xCLFNBQVEsR0FBRyxHQUFHLEtBQUssR0FBRyxNQUFNLEdBQUcsR0FBRyxDQUFDO0FBQ25DLFFBQU8sTUFBTTtBQUNiLFNBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1dBQ1QsQ0FBQyxFQUFFLENBQUM7QUFDZCxVQUFTLE1BQU07QUFDZixXQUFVLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQixXQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ25CLFdBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEIsV0FBVSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDNUMsV0FBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQixXQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1dBQ1IsT0FBTyxHQUFHLE9BQU8sQ0FBQztVQUNuQjtBQUNUO0FBQ0E7QUFDQSxTQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbkIsU0FBUSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUNyQixTQUFRLE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztBQUNuRDtBQUNBLFNBQVEsT0FBTyxHQUFHLEVBQUUsR0FBRyxDQUFDO2FBQ1osQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksT0FBTyxNQUFNLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUNuRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxPQUFPLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDbEYsYUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEM7QUFDQSxTQUFRLEVBQUUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3ZCO1NBQ1EsSUFBSSxPQUFPLEVBQUU7QUFDckI7QUFDQTtXQUNVLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHO0FBQ3pDLGFBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNYLElBQUksQ0FBQyxFQUFFLEVBQUU7ZUFDUCxFQUFFLENBQUMsQ0FBQztBQUNsQixlQUFjLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Y0FDZjtZQUNGO1VBQ0Y7QUFDVDtBQUNBO0FBQ0EsU0FBUSxLQUFLLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ25EO0FBQ0E7U0FDUSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFFO0FBQ0E7U0FDUSxJQUFJLEtBQUssRUFBRTtBQUNuQixXQUFVLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRTthQUNYLElBQUksT0FBTyxJQUFJLEVBQUUsSUFBSSxPQUFPLElBQUksQ0FBQyxFQUFFO2VBQ2pDLENBQUMsR0FBRyxPQUFPLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEMsZUFBYyxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBQztlQUN2QyxFQUFFLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDbkQsZUFBYyxLQUFLLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3pEO0FBQ0E7ZUFDYyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xGLGNBQWEsTUFBTTtBQUNuQixlQUFjLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2NBQzFDO1lBQ0Y7QUFDWDtBQUNBLFdBQVUsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEQsVUFBUyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtXQUNoQixPQUFPLEVBQUUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ3ZDLFdBQVUsR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLENBQUM7QUFDM0IsVUFBUyxNQUFNO0FBQ2YsV0FBVSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztVQUM5RDtRQUNGO0FBQ1A7T0FDTSxHQUFHLEdBQUcsQ0FBQyxPQUFPLElBQUksRUFBRSxHQUFHLElBQUksR0FBRyxPQUFPLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxPQUFPLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxFQUFFLElBQUksR0FBRyxDQUFDO01BQ3JGO0FBQ0w7QUFDQSxLQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDbEM7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFFLFNBQVMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFDOUIsS0FBSSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFO0FBQzFCLE9BQU0sR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7T0FDakIsT0FBTyxJQUFJLENBQUM7TUFDYjtJQUNGO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFO0tBQ2QsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUMxQjtBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFFLFNBQVMsSUFBSSxDQUFDLENBQUMsRUFBRTtLQUNmLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0I7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFFLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFBRTtLQUNoQixPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzVCO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFFLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7S0FDakIsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUI7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFFLFNBQVMsSUFBSSxDQUFDLENBQUMsRUFBRTtLQUNmLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0I7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFFLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFBRTtLQUNoQixPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzVCO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRSxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUU7S0FDZixPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRSxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUU7S0FDaEIsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM1QjtBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUUsU0FBUyxLQUFLLENBQUMs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S0FDSSxPQUFPLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDO0FBQzFDLEtBQUksT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDMUIsS0FBSSxPQUFPLENBQUMsU0FBUyxHQUFHLGlCQUFpQixDQUFDO0FBQzFDO0FBQ0EsS0FBSSxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUN0QixLQUFJLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLEtBQUksT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDMUIsS0FBSSxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUN0QixLQUFJLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLEtBQUksT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDMUIsS0FBSSxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN4QixLQUFJLE9BQU8sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQzFCLEtBQUksT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDMUIsS0FBSSxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN4QixLQUFJLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLEtBQUksT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDMUIsS0FBSSxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUN0QixLQUFJLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLEtBQUksT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDdEIsS0FBSSxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUN0QixLQUFJLE9BQU8sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQzFCLEtBQUksT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDMUIsS0FBSSxPQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNwQixLQUFJLE9BQU8sQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ3RCLEtBQUksT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDMUIsS0FBSSxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN4QixLQUFJLE9BQU8sQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ3RCLEtBQUksT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDdEIsS0FBSSxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUN0QixLQUFJLE9BQU8sQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ3RCLEtBQUksT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDdEIsS0FBSSxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUM1QixLQUFJLE9BQU8sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQzFCLEtBQUksT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDeEIsS0FBSSxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUN0QixLQUFJLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLEtBQUksT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDeEIsS0FBSSxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUN0QixLQUFJLE9BQU8sQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ3RCLEtBQUksT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDdEIsS0FBSSxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN4QixLQUFJLE9BQU8sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQzFCO0tBQ0ksSUFBSSxHQUFHLEtBQUssS0FBSyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQztLQUM3QixJQUFJLEdBQUcsRUFBRTtBQUNiLE9BQU0sSUFBSSxH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QUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDO0lBQ3BEO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUU7S0FDZCxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzFCO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRSxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUU7S0FDZixPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRSxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUU7S0FDZixPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFFLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7S0FDakIsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0I7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0dBQ0UsU0FBUyxHQUFHLEdBQUc7S0FDYixJQUFJLENBQUMsR0FBRyxDQUFDO09BQ1AsSUFBSSxHQUFHLFNBQVM7T0FDaEIsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCO0tBQ0ksUUFBUSxHQUFHLEtBQUssQ0FBQztLQUNqQixPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN0RCxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQ3BCO0FBQ0EsS0FBSSxPQUFPLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkQ7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFFLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRTtLQUNkLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDMUI7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFFLFNBQVMsSUFBSSxDQUFDLENBQUMsRUFBRTtLQUNmLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0I7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRSxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUU7QUFDcEIsS0FBSSxPQUFPLFFBQVEsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUM7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFFLE9BQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDNUIsR0FBRSxPQUFPLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7R0FDeEMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFD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QUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRztBQUMvRCxLQUFJLFFBQVEsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQy9ELEtBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDL0QsS0FBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQzlFLEtBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRztBQUM5RSxLQUFJLFFBQVEsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQy9ELEtBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDL0QsS0FBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRztBQUMvRCxLQUFJLFFBQVEsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDOUUsS0FBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQzlFLEtBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRztLQUM3QixRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDaEQsS0FBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQzlFLEtBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRztBQUM5RSxLQUFJLFFBQVEsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQy9ELEtBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7S0FDM0QsUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0tBQzVDLFFBQVEsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRztLQUM1QyxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7S0FDNUMsUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHO0FBQ2hELEtBQUksUUFBUSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7QUFDL0QsS0FBSSxRQUFRLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRztL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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFO0FBQ3RDLEtBQUksSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1NBQ1YsTUFBTSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDbEQ7QUFDQSxLQUFJLE9BQU8sRUFBRSxLQUFLLEdBQUcsTUFBTSxFQUFFO0FBQzdCLE9BQU0sSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDMUQsU0FBUSxNQUFNO1FBQ1A7TUFDRjtLQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2Q7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUUsU0FBUyxjQUFjLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRTtBQUMzQyxLQUFJLElBQUksTUFBTSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDbEQ7S0FDSSxPQUFPLE1BQU0sRUFBRSxFQUFFO0FBQ3JCLE9BQU0sSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDNUQsU0FBUSxNQUFNO1FBQ1A7TUFDRjtLQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2Q7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRSxTQUFTLFVBQVUsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFO0FBQ3hDLEtBQUksSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1NBQ1YsTUFBTSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FB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QUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RDO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUUsU0FBUyxZQUFZLENBQUMsTUFBTSxFQUFFO0tBQzVCLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUM7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRSxJQUFJLFlBQVksSUFBSSxTQUFTLFlBQVksQ0FBQyxPQUFPLEVBQUU7QUFDckQsS0FBSSxPQUFPLEdBQUcsT0FBTyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7QUFDdEc7QUFDQTtBQUNBLEtBQUksSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUs7QUFDN0IsU0FBUSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUk7QUFDM0IsU0FBUSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUs7QUFDN0IsU0FBUSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVE7QUFDbkMsU0FBUSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUk7QUFDM0IsU0FBUSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU07QUFDL0IsU0FBUSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU07QUFDL0IsU0FBUSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU07QUFDL0IsU0FBUSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FB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LENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUM7T0FDRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMzQixPQUFNLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztPQUN0QixPQUFPLElBQUksQ0FBQztNQUNiO0FBQ0w7QUFDQTtBQUNBLEtBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDO0tBQ25DLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsV0FBVyxDQUFDO0FBQzVDLEtBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDO0FBQ25DLEtBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDO0FBQ25DLEtBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUU7QUFDN0MsT0FBTSxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1dBQ3RCLEtBQUssR0FBRyxDQUFDLEtBQUssSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDO1dBQ3BDLE1BQU0sR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDO0FBQ3RELFdBQVUsTUFBTSxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUM7V0FDM0QsV0FBVyxHQUFHLEtBQUssSUFBSSxLQUFLLElBQUksTUFBTSxJQUFJLE1BQU07QUFDMUQsV0FBVSxNQUFNLEdBQUcsV0FBVyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUU7QUFDckUsV0FBVSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNqQztBQUNBLE9BQU0sS0FBSyxJQUFJLEdBQUcsSUFBSSxLQUFLLEVBQUU7U0FDckIsSUFBSSxDQUFDLFNBQVMsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDekQsYUFBWSxFQUFFLFdBQVc7QUFDekI7Z0JBQ2UsR0FBRyxJQUFJLFFBQVE7QUFDOUI7aUJBQ2dCLE1BQU0sS0FBSyxHQUFHLElBQUksUUFBUSxJQUFJLEdBQUcsSUFBSSxRQUFRLENBQUMsQ0FBQztBQUMvRDtBQUNBLGlCQUFnQixNQUFNLEtBQUssR0FBRyxJQUFJLFFBQVEsSUFBSSxHQUFHLElBQUksWUFBWSxJQUFJLEdBQUcsSUFBSSxZQUFZLENBQUMsQ0FBQztBQUMxRjtBQUNBLGdCQUFlLE9BQU8sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDO0FBQ25DLGNBQWEsQ0FBQyxFQUFFO0FBQ2hCLFdBQVUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztVQUNsQjtRQUNGO09BQ0QsT0FBTyxNQUFNLENBQUM7TUFDZjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsV0FBVyxDQUFDLEtBQUssRUFBRTtBQUNoQyxPQUFNLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDaEMsT0FBTSxPQUFPLE1BQU0sR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBR0EsV0FBUyxDQUFDO01BQzlEO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFO0FBQ3ZDLE9BQU0sT0FBTyxXQUFXLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO01BQ3JFO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxZQUFZLENBQUMsS0FBSyxFQUFFO09BQzNCLE9BQU8sV0FBVyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO01BQ3RDO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7S0FDSSxTQUFTLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ2xELE9BQU0sSUFBSSxDQUFDLEtBQUssS0FBS0EsV0FBUyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDOUMsS0FBSyxLQUFLQSxXQUFTLElBQUksRUFBRSxHQUFHLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRTtTQUM3QyxlQUFlLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyQztNQUNGO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLFNBQVMsV0FBVyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQzdDLE9BQU0sSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pDLE9BQU0sSUFBSSxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDekQsS0FBSyxLQUFLQSxXQUFTLElBQUksRUFBRSxHQUFHLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRTtTQUM3QyxlQUFlLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyQztNQUNGO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFlBQVksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFO0FBQ3RDLE9BQU0sSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztPQUMxQixPQUFPLE1BQU0sRUFBRSxFQUFFO0FBQ3ZCLFNBQVEsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1dBQzdCLE9BQU8sTUFBTSxDQUFDO1VBQ2Y7UUFDRjtPQUNELE9BQU8sQ0FBQyxDQUFDLENBQUM7TUFDWDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLFNBQVMsY0FBYyxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTtPQUNqRSxRQUFRLENBQUMsVUFBVSxFQUFFLFNBQVMsS0FBSyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUU7QUFDNUQsU0FBUSxNQUFNLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDaEUsUUFBTyxDQUFDLENBQUM7T0FDSCxPQUFPLFdBQVcsQ0FBQztNQUNwQjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3hDLE9BQU0sT0FBTyxNQUFNLElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7TUFDM0Q7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUMxQyxPQUFNLE9BQU8sTUFBTSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO01BQzdEO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7S0FDSSxTQUFTLGVBQWUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtBQUNqRCxPQUFNLElBQUksR0FBRyxJQUFJLFdBQVcsSUFBSSxjQUFjLEVBQUU7QUFDaEQsU0FBUSxjQUFjLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtXQUMxQixjQUFjLEVBQUUsSUFBSTtXQUNwQixZQUFZLEVBQUUsSUFBSTtXQUNsQixPQUFPLEVBQUUsS0FBSztXQUNkLFVBQVUsRUFBRSxJQUFJO0FBQzFCLFVBQVMsQ0FBQyxDQUFDO0FBQ1gsUUFBTyxNQUFNO0FBQ2IsU0FBUSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3JCO01BQ0Y7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUU7QUFDbkMsT0FBTSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDcEIsV0FBVSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU07QUFDL0IsV0FBVSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUNoQyxXQUFVLElBQUksR0FBRyxNQUFNLElBQUksSUFBSSxDQUFDO0FBQ2hDO0FBQ0EsT0FBTSxPQUFPLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRTtBQUMvQixTQUFRLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLEdBQUdBLFdBQVMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzlEO09BQ0QsT0FBTyxNQUFNLENBQUM7TUFDZjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxTQUFTLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDN0MsT0FBTSxJQUFJLE1BQU0sS0FBSyxNQUFNLEVBQUU7QUFDN0IsU0FBUSxJQUFJLEtBQUssS0FBS0EsV0FBUyxFQUFFO1dBQ3ZCLE1BQU0sR0FBRyxNQUFNLElBQUksS0FBSyxHQUFHLE1BQU0sR0FBRyxLQUFLLENBQUM7VUFDM0M7QUFDVCxTQUFRLElBQUksS0FBSyxLQUFLQSxXQUFTLEVBQUU7V0FDdkIsTUFBTSxHQUFHLE1BQU0sSUFBSSxLQUFLLEdBQUcsTUFBTSxHQUFHLEtBQUssQ0FBQztVQUMzQztRQUNGO09BQ0QsT0FBTyxNQUFNLENBQUM7TUFDZjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO0FBQ3ZFLE9BQU0sSUFBSSxNQUFNO0FBQ2hCLFdBQVUsTUFBTSxHQUFHLE9BQU8sR0FBRyxlQUFlO0FBQzVDLFdBQVUsTUFBTSxHQUFHLE9BQU8sR0FBRyxlQUFlO0FBQzVDLFdBQVUsTUFBTSxHQUFHLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQztBQUNoRDtPQUNNLElBQUksVUFBVSxFQUFFO0FBQ3RCLFNBQVEsTUFBTSxHQUFHLE1BQU0sR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdFO0FBQ1AsT0FBTSxJQUFJLE1BQU0sS0FBS0EsV0FBUyxFQUFFO1NBQ3hCLE9BQU8sTUFBTSxDQUFDO1FBQ2Y7QUFDUCxPQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7U0FDcEIsT0FBTyxLQUFLLENBQUM7UUFDZDtBQUNQLE9BQU0sSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO09BQzNCLElBQUksS0FBSyxFQUFFO0FBQ2pCLFNBQVEsTUFBTSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMvQixJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ3JCLFdBQVUsT0FBTyxTQUFTLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1VBQ2pDO0FBQ1QsUUFBTyxNQUFNO0FBQ2IsU0FBUSxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO2FBQ25CLE1BQU0sR0FBRyxHQUFHLElBQUksT0FBTyxJQUFJLEdBQUcsSUFBSSxNQUFNLENBQUM7QUFDckQ7QUFDQSxTQUFRLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzdCLFdBQVUsT0FBTyxXQUFXLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1VBQ25DO0FBQ1QsU0FBUSxJQUFJLEdBQUcsSUFBSSxTQUFTLElBQUksR0FBRyxJQUFJLE9BQU8sS0FBSyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUN2RSxXQUFVLE1BQU0sR0FBRyxDQUFDLE1BQU0sSUFBSSxNQUFNLElBQUksRUFBRSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztXQUMxRCxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ3ZCLGFBQVksT0FBTyxNQUFNO2lCQUNULGFBQWEsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDakQsV0FBVyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDbkQ7QUFDWCxVQUFTLE1BQU07QUFDZixXQUFVLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDbkMsYUFBWSxPQUFPLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQzVCO1dBQ0QsTUFBTSxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1VBQzdDO1FBQ0Y7QUFDUDtBQUNBLE9BQU0sS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDO09BQzdCLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7T0FDL0IsSUFBSSxPQUFPLEVBQUU7U0FDWCxPQUFPLE9BQU8sQ0FBQztRQUNoQjtPQUNELEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQy9CO0FBQ0EsT0FBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUN4QixTQUFRLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxRQUFRLEVBQUU7QUFDekMsV0FBVSxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdkYsVUFBUyxDQUFDLENBQUM7QUFDWCxRQUFPLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7U0FDdkIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLFFBQVEsRUFBRSxHQUFHLEVBQUU7V0FDcEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN2RixVQUFTLENBQUMsQ0FBQztRQUNKO0FBQ1A7T0FDTSxJQUFJLFFBQVEsR0FBRyxNQUFNO0FBQzNCLFlBQVcsTUFBTSxHQUFHLFlBQVksR0FBRyxVQUFVO0FBQzdDLFlBQVcsTUFBTSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQztBQUNuQztPQUNNLElBQUksS0FBSyxHQUFHLEtBQUssR0FBR0EsV0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztPQUNoRCxTQUFTLENBQUMsS0FBSyxJQUFJLEtBQUssRUFBRSxTQUFTLFFBQVEsRUFBRSxHQUFHLEVBQUU7U0FDaEQsSUFBSSxLQUFLLEVBQUU7V0FDVCxHQUFHLEdBQUcsUUFBUSxDQUFDO0FBQ3pCLFdBQVUsUUFBUSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztVQUN2QjtBQUNUO1NBQ1EsV0FBVyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUM5RixRQUFPLENBQUMsQ0FBQztPQUNILE9BQU8sTUFBTSxDQUFDO01BQ2Y7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFlBQVksQ0FBQyxNQUFNLEVBQUU7QUFDbEMsT0FBTSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7T0FDekIsT0FBTyxTQUFTLE1BQU0sRUFBRTtTQUN0QixPQUFPLGNBQWMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3JELFFBQU8sQ0FBQztNQUNIO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxjQUFjLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7QUFDbkQsT0FBTSxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ2hDLE9BQU0sSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO1NBQ2xCLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDaEI7QUFDUCxPQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7T0FDeEIsT0FBTyxNQUFNLEVBQUUsRUFBRTtBQUN2QixTQUFRLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDL0IsYUFBWSxTQUFTLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztBQUNuQyxhQUFZLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEM7QUFDQSxTQUFRLElBQUksQ0FBQyxLQUFLLEtBQUtBLFdBQVMsSUFBSSxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtXQUNsRSxPQUFPLEtBQUssQ0FBQztVQUNkO1FBQ0Y7T0FDRCxPQUFPLElBQUksQ0FBQztNQUNiO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLFNBQVMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQ3pDLE9BQU0sSUFBSSxPQUFPLElBQUksSUFBSSxVQUFVLEVBQUU7QUFDckMsU0FBUSxNQUFNLElBQUksU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3RDO0FBQ1AsT0FBTSxPQUFPLFVBQVUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQ0EsV0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztNQUN0RTtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLFNBQVMsY0FBYyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRTtBQUNqRSxPQUFNLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztXQUNWLFFBQVEsR0FBRyxhQUFhO1dBQ3hCLFFBQVEsR0FBRyxJQUFJO0FBQ3pCLFdBQVUsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNO1dBQ3JCLE1BQU0sR0FBRyxFQUFFO0FBQ3JCLFdBQVUsWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDdkM7T0FDTSxJQUFJLENBQUMsTUFBTSxFQUFFO1NBQ1gsT0FBTyxNQUFNLENBQUM7UUFDZjtPQUNELElBQUksUUFBUSxFQUFFO1NBQ1osTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDaEQ7T0FDRCxJQUFJLFVBQVUsRUFBRTtTQUNkLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQztTQUM3QixRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2xCO0FBQ1AsWUFBVyxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksZ0JBQWdCLEVBQUU7U0FDMUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztTQUNwQixRQUFRLEdBQUcsS0FBSyxDQUFDO0FBQ3pCLFNBQVEsTUFBTSxHQUFHLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CO0FBQ1AsT0FBTSxLQUFLO0FBQ1gsT0FBTSxPQUFPLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRTtBQUMvQixTQUFRLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7QUFDaEMsYUFBWSxRQUFRLEdBQUcsUUFBUSxJQUFJLElBQUksR0FBRyxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xFO0FBQ0EsU0FBUSxLQUFLLEdBQUcsQ0FBQyxVQUFVLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ3hELFNBQVEsSUFBSSxRQUFRLElBQUksUUFBUSxLQUFLLFFBQVEsRUFBRTtBQUMvQyxXQUFVLElBQUksV0FBVyxHQUFHLFlBQVksQ0FBQztXQUMvQixPQUFPLFdBQVcsRUFBRSxFQUFFO0FBQ2hDLGFBQVksSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssUUFBUSxFQUFFO2VBQ3BDLFNBQVMsS0FBSyxDQUFDO2NBQ2hCO1lBQ0Y7QUFDWCxXQUFVLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7VUFDcEI7Y0FDSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLEVBQUU7QUFDMUQsV0FBVSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1VBQ3BCO1FBQ0Y7T0FDRCxPQUFPLE1BQU0sQ0FBQztNQUNmO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxJQUFJLFFBQVEsR0FBRyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksSUFBSSxhQUFhLEdBQUcsY0FBYyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxTQUFTLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRTtBQUM5QyxPQUFNLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztPQUNsQixRQUFRLENBQUMsVUFBVSxFQUFFLFNBQVMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7QUFDOUQsU0FBUSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQy9DLE9BQU8sTUFBTSxDQUFDO0FBQ3RCLFFBQU8sQ0FBQyxDQUFDO09BQ0gsT0FBTyxNQUFNLENBQUM7TUFDZjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7S0FDSSxTQUFTLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRTtBQUN2RCxPQUFNLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNwQixXQUFVLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ2hDO0FBQ0EsT0FBTSxPQUFPLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRTtBQUMvQixTQUFRLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7QUFDaEMsYUFBWSxPQUFPLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RDO0FBQ0EsU0FBUSxJQUFJLE9BQU8sSUFBSSxJQUFJLEtBQUssUUFBUSxLQUFLQSxXQUFTO2tCQUNyQyxPQUFPLEtBQUssT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztBQUMxRCxpQkFBZ0IsVUFBVSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUM7QUFDN0MsY0FBYSxFQUFFO1dBQ0wsSUFBSSxRQUFRLEdBQUcsT0FBTztlQUNsQixNQUFNLEdBQUcsS0FBSyxDQUFDO1VBQ3BCO1FBQ0Y7T0FDRCxPQUFPLE1BQU0sQ0FBQztNQUNmO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUNoRCxPQUFNLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDaEM7QUFDQSxPQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0IsT0FBTSxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7QUFDckIsU0FBUSxLQUFLLEdBQUcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxHQUFHLENBQUMsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDaEQ7QUFDUCxPQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsS0FBS0EsV0FBUyxJQUFJLEdBQUcsR0FBRyxNQUFNLElBQUksTUFBTSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMxRSxPQUFNLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRTtTQUNYLEdBQUcsSUFBSSxNQUFNLENBQUM7UUFDZjtBQUNQLE9BQU0sR0FBRyxHQUFHLEtBQUssR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QyxPQUFNLE9BQU8sS0FBSyxHQUFHLEdBQUcsRUFBRTtBQUMxQixTQUFRLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUN4QjtPQUNELE9BQU8sS0FBSyxDQUFDO01BQ2Q7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsVUFBVSxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUU7QUFDL0MsT0FBTSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7T0FDaEIsUUFBUSxDQUFDLFVBQVUsRUFBRSxTQUFTLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO1NBQ3RELElBQUksU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLEVBQUU7QUFDakQsV0FBVSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1VBQ3BCO0FBQ1QsUUFBTyxDQUFDLENBQUM7T0FDSCxPQUFPLE1BQU0sQ0FBQztNQUNmO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO0FBQ3BFLE9BQU0sSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLFdBQVUsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDaEM7QUFDQSxPQUFNLFNBQVMsS0FBSyxTQUFTLEdBQUcsYUFBYSxDQUFDLENBQUM7QUFDL0MsT0FBTSxNQUFNLEtBQUssTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQzlCO0FBQ0EsT0FBTSxPQUFPLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRTtBQUMvQixTQUFRLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN6QixJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzNDLFdBQVUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO0FBQ3pCO0FBQ0EsYUFBWSxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN2RSxZQUFXLE1BQU07QUFDakIsYUFBWSxTQUFTLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzFCO0FBQ1gsVUFBUyxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUU7V0FDcEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUM7VUFDL0I7UUFDRjtPQUNELE9BQU8sTUFBTSxDQUFDO01BQ2Y7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLElBQUksT0FBTyxHQUFHLGFBQWEsRUFBRSxDQUFDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLElBQUksWUFBWSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsVUFBVSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUU7T0FDcEMsT0FBTyxNQUFNLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7TUFDbEQ7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsZUFBZSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUU7T0FDekMsT0FBTyxNQUFNLElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7TUFDdkQ7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxhQUFhLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRTtBQUMxQyxPQUFNLE9BQU8sV0FBVyxDQUFDLEtBQUssRUFBRSxTQUFTLEdBQUcsRUFBRTtTQUN0QyxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN2QyxRQUFPLENBQUMsQ0FBQztNQUNKO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO09BQzdCLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3BDO09BQ00sSUFBSSxLQUFLLEdBQUcsQ0FBQztBQUNuQixXQUFVLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQy9CO09BQ00sT0FBTyxNQUFNLElBQUksSUFBSSxJQUFJLEtBQUssR0FBRyxNQUFNLEVBQUU7QUFDL0MsU0FBUSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkM7T0FDRCxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssSUFBSSxNQUFNLElBQUksTUFBTSxHQUFHQSxXQUFTLENBQUM7TUFDeEQ7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7S0FDSSxTQUFTLGNBQWMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTtBQUMzRCxPQUFNLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNwQyxPQUFNLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO01BQzFFO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxVQUFVLENBQUMsS0FBSyxFQUFFO0FBQy9CLE9BQU0sSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFO1NBQ2pCLE9BQU8sS0FBSyxLQUFLQSxXQUFTLEdBQUcsWUFBWSxHQUFHLE9BQU8sQ0FBQztRQUNyRDtPQUNELE9BQU8sQ0FBQyxjQUFjLElBQUksY0FBYyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7V0FDckQsU0FBUyxDQUFDLEtBQUssQ0FBQztBQUMxQixXQUFVLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztNQUMzQjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFO0FBQ2xDLE9BQU0sT0FBTyxLQUFLLEdBQUcsS0FBSyxDQUFDO01BQ3RCO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0FBQ2xDLE9BQU0sT0FBTyxNQUFNLElBQUksSUFBSSxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO01BQzNEO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFNBQVMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO09BQzlCLE9BQU8sTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO01BQ2hEO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7S0FDSSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUM3QyxPQUFNLE9BQU8sTUFBTSxJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLElBQUksTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7TUFDMUU7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRTtBQUM1RCxPQUFNLElBQUksUUFBUSxHQUFHLFVBQVUsR0FBRyxpQkFBaUIsR0FBRyxhQUFhO0FBQ25FLFdBQVUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNO0FBQ25DLFdBQVUsU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNO1dBQ3pCLFFBQVEsR0FBRyxTQUFTO0FBQzlCLFdBQVUsTUFBTSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7V0FDekIsU0FBUyxHQUFHLFFBQVE7V0FDcEIsTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUN0QjtPQUNNLE9BQU8sUUFBUSxFQUFFLEVBQUU7QUFDekIsU0FBUSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDckMsU0FBUSxJQUFJLFFBQVEsSUFBSSxRQUFRLEVBQUU7V0FDeEIsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7VUFDOUM7U0FDRCxTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDL0MsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxLQUFLLFFBQVEsS0FBSyxNQUFNLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUM7QUFDOUYsYUFBWSxJQUFJLFFBQVEsQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDO0FBQzNDLGFBQVlBLFdBQVMsQ0FBQztRQUNmO0FBQ1AsT0FBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hCO0FBQ0EsT0FBTSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDcEIsV0FBVSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNCO0FBQ0EsT0FBTSxLQUFLO09BQ0wsT0FBTyxFQUFFLEtBQUssR0FBRyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxTQUFTLEVBQUU7QUFDNUQsU0FBUSxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO2FBQ3BCLFFBQVEsR0FBRyxRQUFRLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUMxRDtBQUNBLFNBQVEsS0FBSyxHQUFHLENBQUMsVUFBVSxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztTQUNoRCxJQUFJLEVBQUUsSUFBSTtBQUNsQixpQkFBZ0IsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUM7QUFDeEMsaUJBQWdCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQztBQUN0RCxjQUFhLEVBQUU7V0FDTCxRQUFRLEdBQUcsU0FBUyxDQUFDO1dBQ3JCLE9BQU8sRUFBRSxRQUFRLEVBQUU7QUFDN0IsYUFBWSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDN0IsSUFBSSxFQUFFLEtBQUs7QUFDdkIscUJBQW9CLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDO3FCQUN6QixRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQzttQkFDbkQ7ZUFDSixTQUFTLEtBQUssQ0FBQztjQUNoQjtZQUNGO1dBQ0QsSUFBSSxJQUFJLEVBQUU7QUFDcEIsYUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JCO0FBQ1gsV0FBVSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1VBQ3BCO1FBQ0Y7T0FDRCxPQUFPLE1BQU0sQ0FBQztNQUNmO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO09BQzNELFVBQVUsQ0FBQyxNQUFNLEVBQUUsU0FBUyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRTtBQUN0RCxTQUFRLE1BQU0sQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMxRCxRQUFPLENBQUMsQ0FBQztPQUNILE9BQU8sV0FBVyxDQUFDO01BQ3BCO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLFNBQVMsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO09BQ3RDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO09BQzlCLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3BDLE9BQU0sSUFBSSxJQUFJLEdBQUcsTUFBTSxJQUFJLElBQUksR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JFLE9BQU0sT0FBTyxJQUFJLElBQUksSUFBSSxHQUFHQSxXQUFTLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7TUFDN0Q7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLGVBQWUsQ0FBQyxLQUFLLEVBQUU7QUFDcEMsT0FBTSxPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDO01BQzVEO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUU7QUFDdEMsT0FBTSxPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksY0FBYyxDQUFDO01BQ25FO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxVQUFVLENBQUMsS0FBSyxFQUFFO0FBQy9CLE9BQU0sT0FBTyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQztNQUM1RDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRTtBQUNuRSxPQUFNLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRTtTQUNuQixPQUFPLElBQUksQ0FBQztRQUNiO09BQ0QsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtTQUNwRixPQUFPLEtBQUssS0FBSyxLQUFLLElBQUksS0FBSyxLQUFLLEtBQUssQ0FBQztRQUMzQztBQUNQLE9BQU0sT0FBTyxlQUFlLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztNQUMvRTtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxlQUFlLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUU7QUFDbkYsT0FBTSxJQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0FBQ3BDLFdBQVUsUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7V0FDekIsTUFBTSxHQUFHLFFBQVEsR0FBRyxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztXQUM3QyxNQUFNLEdBQUcsUUFBUSxHQUFHLFFBQVEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkQ7T0FDTSxNQUFNLEdBQUcsTUFBTSxJQUFJLE9BQU8sR0FBRyxTQUFTLEdBQUcsTUFBTSxDQUFDO09BQ2hELE1BQU0sR0FBRyxNQUFNLElBQUksT0FBTyxHQUFHLFNBQVMsR0FBRyxNQUFNLENBQUM7QUFDdEQ7QUFDQSxPQUFNLElBQUksUUFBUSxHQUFHLE1BQU0sSUFBSSxTQUFTO0FBQ3hDLFdBQVUsUUFBUSxHQUFHLE1BQU0sSUFBSSxTQUFTO0FBQ3hDLFdBQVUsU0FBUyxHQUFHLE1BQU0sSUFBSSxNQUFNLENBQUM7QUFDdkM7QUFDQSxPQUFNLElBQUksU0FBUyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUN6QyxTQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7V0FDcEIsT0FBTyxLQUFLLENBQUM7VUFDZDtTQUNELFFBQVEsR0FBRyxJQUFJLENBQUM7U0FDaEIsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUNsQjtBQUNQLE9BQU0sSUFBSSxTQUFTLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDbEMsU0FBUSxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUM7QUFDckMsU0FBUSxPQUFPLENBQUMsUUFBUSxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUM7QUFDaEQsYUFBWSxXQUFXLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUM7QUFDN0UsYUFBWSxVQUFVLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUU7QUFDUCxPQUFNLElBQUksRUFBRSxPQUFPLEdBQUcsb0JBQW9CLENBQUMsRUFBRTtBQUM3QyxTQUFRLElBQUksWUFBWSxHQUFHLFFBQVEsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUM7QUFDakYsYUFBWSxZQUFZLEdBQUcsUUFBUSxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQ2pGO0FBQ0EsU0FBUSxJQUFJLFlBQVksSUFBSSxZQUFZLEVBQUU7V0FDaEMsSUFBSSxZQUFZLEdBQUcsWUFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxNQUFNO2VBQ3JELFlBQVksR0FBRyxZQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLEtBQUssQ0FBQztBQUNsRTtBQUNBLFdBQVUsS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDO0FBQ3ZDLFdBQVUsT0FBTyxTQUFTLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1VBQzFFO1FBQ0Y7T0FDRCxJQUFJLENBQUMsU0FBUyxFQUFFO1NBQ2QsT0FBTyxLQUFLLENBQUM7UUFDZDtBQUNQLE9BQU0sS0FBSyxLQUFLLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDO0FBQ25DLE9BQU0sT0FBTyxZQUFZLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztNQUMzRTtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsU0FBUyxDQUFDLEtBQUssRUFBRTtBQUM5QixPQUFNLE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUM7TUFDdkQ7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFO0FBQ2hFLE9BQU0sSUFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDLE1BQU07V0FDeEIsTUFBTSxHQUFHLEtBQUs7QUFDeEIsV0FBVSxZQUFZLEdBQUcsQ0FBQyxVQUFVLENBQUM7QUFDckM7QUFDQSxPQUFNLElBQUksTUFBTSxJQUFJLElBQUksRUFBRTtTQUNsQixPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ2hCO0FBQ1AsT0FBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO09BQ3hCLE9BQU8sS0FBSyxFQUFFLEVBQUU7QUFDdEIsU0FBUSxJQUFJLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEMsU0FBUSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7aUJBQ3BCLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNDLGlCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUM7ZUFDdEI7V0FDSixPQUFPLEtBQUssQ0FBQztVQUNkO1FBQ0Y7QUFDUCxPQUFNLE9BQU8sRUFBRSxLQUFLLEdBQUcsTUFBTSxFQUFFO0FBQy9CLFNBQVEsSUFBSSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoQyxTQUFRLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDekIsYUFBWSxRQUFRLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztBQUNsQyxhQUFZLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0I7QUFDQSxTQUFRLElBQUksWUFBWSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtXQUMzQixJQUFJLFFBQVEsS0FBS0EsV0FBUyxJQUFJLEVBQUUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxFQUFFO2FBQzlDLE9BQU8sS0FBSyxDQUFDO1lBQ2Q7QUFDWCxVQUFTLE1BQU07QUFDZixXQUFVLElBQUksS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDO1dBQ3RCLElBQUksVUFBVSxFQUFFO0FBQzFCLGFBQVksSUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDekU7QUFDWCxXQUFVLElBQUksRUFBRSxNQUFNLEtBQUtBLFdBQVM7QUFDcEMsbUJBQWtCLFdBQVcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixHQUFHLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUM7QUFDbkgsbUJBQWtCLE1BQU07QUFDeEIsZ0JBQWUsRUFBRTthQUNMLE9BQU8sS0FBSyxDQUFDO1lBQ2Q7VUFDRjtRQUNGO09BQ0QsT0FBTyxJQUFJLENBQUM7TUFDYjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxZQUFZLENBQUMsS0FBSyxFQUFFO09BQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1NBQ3ZDLE9BQU8sS0FBSyxDQUFDO1FBQ2Q7T0FDRCxJQUFJLE9BQU8sR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsVUFBVSxHQUFHLFlBQVksQ0FBQztPQUM1RCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7TUFDdEM7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFlBQVksQ0FBQyxLQUFLLEVBQUU7QUFDakMsT0FBTSxPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksU0FBUyxDQUFDO01BQzlEO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFO0FBQzlCLE9BQU0sT0FBTyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQztNQUN2RDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFO0FBQ3JDLE9BQU0sT0FBTyxZQUFZLENBQUMsS0FBSyxDQUFDO0FBQ2hDLFNBQVEsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO01BQ2pFO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxZQUFZLENBQUMsS0FBSyxFQUFFO0FBQ2pDO0FBQ0E7QUFDQSxPQUFNLElBQUksT0FBTyxLQUFLLElBQUksVUFBVSxFQUFFO1NBQzlCLE9BQU8sS0FBSyxDQUFDO1FBQ2Q7QUFDUCxPQUFNLElBQUksS0FBSyxJQUFJLElBQUksRUFBRTtTQUNqQixPQUFPLFFBQVEsQ0FBQztRQUNqQjtBQUNQLE9BQU0sSUFBSSxPQUFPLEtBQUssSUFBSSxRQUFRLEVBQUU7QUFDcEMsU0FBUSxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUM7YUFDakIsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRCxhQUFZLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QjtBQUNQLE9BQU0sT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7TUFDeEI7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFFBQVEsQ0FBQyxNQUFNLEVBQUU7QUFDOUIsT0FBTSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQ2hDLFNBQVEsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0I7QUFDUCxPQUFNLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztPQUNoQixLQUFLLElBQUksR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUN0QyxTQUFRLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLGFBQWEsRUFBRTtBQUN0RSxXQUFVLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7VUFDbEI7UUFDRjtPQUNELE9BQU8sTUFBTSxDQUFDO01BQ2Y7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDaEMsT0FBTSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQzdCLFNBQVEsT0FBTyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0I7QUFDUCxPQUFNLElBQUksT0FBTyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7V0FDN0IsTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUN0QjtBQUNBLE9BQU0sS0FBSyxJQUFJLEdBQUcsSUFBSSxNQUFNLEVBQUU7QUFDOUIsU0FBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLGFBQWEsS0FBSyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDdkYsV0FBVSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1VBQ2xCO1FBQ0Y7T0FDRCxPQUFPLE1BQU0sQ0FBQztNQUNmO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDbEMsT0FBTSxPQUFPLEtBQUssR0FBRyxLQUFLLENBQUM7TUFDdEI7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsT0FBTyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUU7QUFDM0MsT0FBTSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDcEIsV0FBVSxNQUFNLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzNFO09BQ00sUUFBUSxDQUFDLFVBQVUsRUFBRSxTQUFTLEtBQUssRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFO0FBQzVELFNBQVEsTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDM0QsUUFBTyxDQUFDLENBQUM7T0FDSCxPQUFPLE1BQU0sQ0FBQztNQUNmO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ2pDLE9BQU0sSUFBSSxTQUFTLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzNDLE9BQU0sSUFBSSxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDcEQsU0FBUSxPQUFPLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRTtPQUNELE9BQU8sU0FBUyxNQUFNLEVBQUU7QUFDOUIsU0FBUSxPQUFPLE1BQU0sS0FBSyxNQUFNLElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDM0UsUUFBTyxDQUFDO01BQ0g7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtPQUMzQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsRUFBRTtTQUMvQyxPQUFPLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RDtPQUNELE9BQU8sU0FBUyxNQUFNLEVBQUU7U0FDdEIsSUFBSSxRQUFRLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNqQyxPQUFPLENBQUMsUUFBUSxLQUFLQSxXQUFTLElBQUksUUFBUSxLQUFLLFFBQVE7QUFDL0QsYUFBWSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQzthQUNuQixXQUFXLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsR0FBRyxzQkFBc0IsQ0FBQyxDQUFDO0FBQzNGLFFBQU8sQ0FBQztNQUNIO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFO0FBQ3BFLE9BQU0sSUFBSSxNQUFNLEtBQUssTUFBTSxFQUFFO0FBQzdCLFNBQVEsT0FBTztRQUNSO09BQ0QsT0FBTyxDQUFDLE1BQU0sRUFBRSxTQUFTLFFBQVEsRUFBRSxHQUFHLEVBQUU7QUFDOUMsU0FBUSxLQUFLLEtBQUssS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUM7QUFDckMsU0FBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUNoQyxXQUFVLGFBQWEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztVQUM1RTtjQUNJO1dBQ0gsSUFBSSxRQUFRLEdBQUcsVUFBVTtlQUNyQixVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRSxRQUFRLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQztBQUMzRixlQUFjQSxXQUFTLENBQUM7QUFDeEI7QUFDQSxXQUFVLElBQUksUUFBUSxLQUFLQSxXQUFTLEVBQUU7YUFDMUIsUUFBUSxHQUFHLFFBQVEsQ0FBQztZQUNyQjtXQUNELGdCQUFnQixDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7VUFDekM7UUFDRixFQUFFLE1BQU0sQ0FBQyxDQUFDO01BQ1o7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxhQUFhLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFO09BQ2xGLElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pDLFdBQVUsUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDO1dBQy9CLE9BQU8sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3hDO09BQ00sSUFBSSxPQUFPLEVBQUU7U0FDWCxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9DLFNBQVEsT0FBTztRQUNSO09BQ0QsSUFBSSxRQUFRLEdBQUcsVUFBVTtBQUMvQixXQUFVLFVBQVUsQ0FBQyxRQUFRLEVBQUUsUUFBUSxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUM7QUFDM0UsV0FBVUEsV0FBUyxDQUFDO0FBQ3BCO0FBQ0EsT0FBTSxJQUFJLFFBQVEsR0FBRyxRQUFRLEtBQUtBLFdBQVMsQ0FBQztBQUM1QztPQUNNLElBQUksUUFBUSxFQUFFO0FBQ3BCLFNBQVEsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQzthQUN6QixNQUFNLEdBQUcsQ0FBQyxLQUFLLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQztBQUNqRCxhQUFZLE9BQU8sR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLE1BQU0sSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbEU7U0FDUSxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQzVCLFNBQVEsSUFBSSxLQUFLLElBQUksTUFBTSxJQUFJLE9BQU8sRUFBRTtBQUN4QyxXQUFVLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2FBQ3JCLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFDckI7QUFDWCxnQkFBZSxJQUFJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxFQUFFO0FBQ2hELGFBQVksUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoQztnQkFDSSxJQUFJLE1BQU0sRUFBRTthQUNmLFFBQVEsR0FBRyxLQUFLLENBQUM7YUFDakIsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDeEM7Z0JBQ0ksSUFBSSxPQUFPLEVBQUU7YUFDaEIsUUFBUSxHQUFHLEtBQUssQ0FBQzthQUNqQixRQUFRLEdBQUcsZUFBZSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM1QztnQkFDSTthQUNILFFBQVEsR0FBRyxFQUFFLENBQUM7WUFDZjtVQUNGO2NBQ0ksSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1dBQ3pELFFBQVEsR0FBRyxRQUFRLENBQUM7QUFDOUIsV0FBVSxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUNyQyxhQUFZLFFBQVEsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEM7Z0JBQ0ksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDaEUsYUFBWSxRQUFRLEdBQUcsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3RDO1VBQ0Y7Y0FDSTtXQUNILFFBQVEsR0FBRyxLQUFLLENBQUM7VUFDbEI7UUFDRjtPQUNELElBQUksUUFBUSxFQUFFO0FBQ3BCO1NBQ1EsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDdEMsU0FBUSxTQUFTLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ25FLFNBQVEsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNCO09BQ0QsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztNQUN6QztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRTtBQUMvQixPQUFNLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7T0FDMUIsSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNuQixTQUFRLE9BQU87UUFDUjtPQUNELENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDOUIsT0FBTSxPQUFPLE9BQU8sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxXQUFTLENBQUM7TUFDbEQ7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLFNBQVMsV0FBVyxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFO0FBQ3hELE9BQU0sSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFO1NBQ3BCLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxFQUFFLFNBQVMsUUFBUSxFQUFFO0FBQzNELFdBQVUsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7YUFDckIsT0FBTyxTQUFTLEtBQUssRUFBRTtBQUNuQyxlQUFjLE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7Y0FDdkU7WUFDRjtXQUNELE9BQU8sUUFBUSxDQUFDO0FBQzFCLFVBQVMsQ0FBQyxDQUFDO0FBQ1gsUUFBTyxNQUFNO0FBQ2IsU0FBUSxTQUFTLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QjtBQUNQO0FBQ0EsT0FBTSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNyQixPQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEU7QUFDQSxPQUFNLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxVQUFVLEVBQUUsU0FBUyxLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRTtTQUNoRSxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsU0FBUyxFQUFFLFNBQVMsUUFBUSxFQUFFO0FBQzlELFdBQVUsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakMsVUFBUyxDQUFDLENBQUM7QUFDWCxTQUFRLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDMUUsUUFBTyxDQUFDLENBQUM7QUFDVDtPQUNNLE9BQU8sVUFBVSxDQUFDLE1BQU0sRUFBRSxTQUFTLE1BQU0sRUFBRSxLQUFLLEVBQUU7U0FDaEQsT0FBTyxlQUFlLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN0RCxRQUFPLENBQUMsQ0FBQztNQUNKO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUU7T0FDL0IsT0FBTyxVQUFVLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEtBQUssRUFBRSxJQUFJLEVBQUU7QUFDN0QsU0FBUSxPQUFPLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkMsUUFBTyxDQUFDLENBQUM7TUFDSjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxVQUFVLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7QUFDbEQsT0FBTSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDcEIsV0FBVSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU07V0FDckIsTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUN0QjtBQUNBLE9BQU0sT0FBTyxFQUFFLEtBQUssR0FBRyxNQUFNLEVBQUU7QUFDL0IsU0FBUSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO2FBQ25CLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzFDO0FBQ0EsU0FBUSxJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUU7QUFDcEMsV0FBVSxPQUFPLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7VUFDaEQ7UUFDRjtPQUNELE9BQU8sTUFBTSxDQUFDO01BQ2Y7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLGdCQUFnQixDQUFDLElBQUksRUFBRTtPQUM5QixPQUFPLFNBQVMsTUFBTSxFQUFFO0FBQzlCLFNBQVEsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3JDLFFBQU8sQ0FBQztNQUNIO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxXQUFXLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFO0FBQzlELE9BQU0sSUFBSSxPQUFPLEdBQUcsVUFBVSxHQUFHLGVBQWUsR0FBRyxXQUFXO1dBQ3BELEtBQUssR0FBRyxDQUFDLENBQUM7QUFDcEIsV0FBVSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU07V0FDdEIsSUFBSSxHQUFHLEtBQUssQ0FBQztBQUN2QjtBQUNBLE9BQU0sSUFBSSxLQUFLLEtBQUssTUFBTSxFQUFFO0FBQzVCLFNBQVEsTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QjtPQUNELElBQUksUUFBUSxFQUFFO1NBQ1osSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDN0M7QUFDUCxPQUFNLE9BQU8sRUFBRSxLQUFLLEdBQUcsTUFBTSxFQUFFO1NBQ3ZCLElBQUksU0FBUyxHQUFHLENBQUM7QUFDekIsYUFBWSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQzthQUNyQixRQUFRLEdBQUcsUUFBUSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDMUQ7QUFDQSxTQUFRLE9BQU8sQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO0FBQ2xGLFdBQVUsSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFO2FBQ2xCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNqQztXQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztVQUNsQztRQUNGO09BQ0QsT0FBTyxLQUFLLENBQUM7TUFDZDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFO09BQ2xDLElBQUksTUFBTSxHQUFHLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUM7QUFDN0MsV0FBVSxTQUFTLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNqQztPQUNNLE9BQU8sTUFBTSxFQUFFLEVBQUU7QUFDdkIsU0FBUSxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDNUIsSUFBSSxNQUFNLElBQUksU0FBUyxJQUFJLEtBQUssS0FBSyxRQUFRLEVBQUU7QUFDdkQsV0FBVSxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDL0IsV0FBVSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTthQUNsQixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDekMsWUFBVyxNQUFNO0FBQ2pCLGFBQVksU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN6QjtVQUNGO1FBQ0Y7T0FDRCxPQUFPLEtBQUssQ0FBQztNQUNkO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsVUFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDdEMsT0FBTSxPQUFPLEtBQUssR0FBRyxXQUFXLENBQUMsWUFBWSxFQUFFLElBQUksS0FBSyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO01BQ2xFO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0FBQ3BELE9BQU0sSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLFdBQVUsTUFBTSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN4RSxXQUFVLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDakM7T0FDTSxPQUFPLE1BQU0sRUFBRSxFQUFFO1NBQ2YsTUFBTSxDQUFDLFNBQVMsR0FBRyxNQUFNLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7U0FDN0MsS0FBSyxJQUFJLElBQUksQ0FBQztRQUNmO09BQ0QsT0FBTyxNQUFNLENBQUM7TUFDZjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTtBQUNuQyxPQUFNLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztPQUNoQixJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLGdCQUFnQixFQUFFO1NBQzVDLE9BQU8sTUFBTSxDQUFDO1FBQ2Y7QUFDUDtBQUNBO0FBQ0EsT0FBTSxHQUFHO0FBQ1QsU0FBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7V0FDVCxNQUFNLElBQUksTUFBTSxDQUFDO1VBQ2xCO1NBQ0QsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDdkIsSUFBSSxDQUFDLEVBQUU7V0FDTCxNQUFNLElBQUksTUFBTSxDQUFDO1VBQ2xCO1FBQ0YsUUFBUSxDQUFDLEVBQUU7QUFDbEI7T0FDTSxPQUFPLE1BQU0sQ0FBQztNQUNmO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO0FBQ25DLE9BQU0sT0FBTyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO01BQ2hFO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxVQUFVLENBQUMsVUFBVSxFQUFFO09BQzlCLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO01BQ3hDO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFO0FBQzNDLE9BQU0sSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3JDLE9BQU0sT0FBTyxXQUFXLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO01BQzFEO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLFNBQVMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTtBQUN0RCxPQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7U0FDckIsT0FBTyxNQUFNLENBQUM7UUFDZjtPQUNELElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3BDO0FBQ0EsT0FBTSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDcEIsV0FBVSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU07QUFDOUIsV0FBVSxTQUFTLEdBQUcsTUFBTSxHQUFHLENBQUM7V0FDdEIsTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUMxQjtPQUNNLE9BQU8sTUFBTSxJQUFJLElBQUksSUFBSSxFQUFFLEtBQUssR0FBRyxNQUFNLEVBQUU7U0FDekMsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN4QixRQUFRLEdBQUcsS0FBSyxDQUFDO0FBQzdCO0FBQ0EsU0FBUSxJQUFJLEdBQUcsS0FBSyxXQUFXLElBQUksR0FBRyxLQUFLLGFBQWEsSUFBSSxHQUFHLEtBQUssV0FBVyxFQUFFO1dBQ3ZFLE9BQU8sTUFBTSxDQUFDO1VBQ2Y7QUFDVDtBQUNBLFNBQVEsSUFBSSxLQUFLLElBQUksU0FBUyxFQUFFO0FBQ2hDLFdBQVUsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JDLFdBQVUsUUFBUSxHQUFHLFVBQVUsR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBR0EsV0FBUyxDQUFDO0FBQ2hGLFdBQVUsSUFBSSxRQUFRLEtBQUtBLFdBQVMsRUFBRTtBQUN0QyxhQUFZLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDO0FBQ3pDLGlCQUFnQixRQUFRO0FBQ3hCLGtCQUFpQixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUMxQztVQUNGO1NBQ0QsV0FBVyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDM0MsU0FBUSxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCO09BQ0QsT0FBTyxNQUFNLENBQUM7TUFDZjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksSUFBSSxXQUFXLEdBQUcsQ0FBQyxPQUFPLEdBQUcsUUFBUSxHQUFHLFNBQVMsSUFBSSxFQUFFLElBQUksRUFBRTtPQUMzRCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztPQUN4QixPQUFPLElBQUksQ0FBQztBQUNsQixNQUFLLENBQUM7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLElBQUksZUFBZSxHQUFHLENBQUMsY0FBYyxHQUFHLFFBQVEsR0FBRyxTQUFTLElBQUksRUFBRSxNQUFNLEVBQUU7QUFDOUUsT0FBTSxPQUFPLGNBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1NBQ3RDLGNBQWMsRUFBRSxJQUFJO1NBQ3BCLFlBQVksRUFBRSxLQUFLO0FBQzNCLFNBQVEsT0FBTyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUM7U0FDekIsVUFBVSxFQUFFLElBQUk7QUFDeEIsUUFBTyxDQUFDLENBQUM7QUFDVCxNQUFLLENBQUM7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFdBQVcsQ0FBQyxVQUFVLEVBQUU7T0FDL0IsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7TUFDeEM7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLFNBQVMsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO0FBQzFDLE9BQU0sSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLFdBQVUsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDaEM7QUFDQSxPQUFNLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtBQUNyQixTQUFRLEtBQUssR0FBRyxDQUFDLEtBQUssR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQztRQUNoRDtPQUNELEdBQUcsR0FBRyxHQUFHLEdBQUcsTUFBTSxHQUFHLE1BQU0sR0FBRyxHQUFHLENBQUM7QUFDeEMsT0FBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUU7U0FDWCxHQUFHLElBQUksTUFBTSxDQUFDO1FBQ2Y7QUFDUCxPQUFNLE1BQU0sR0FBRyxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUM7T0FDakQsS0FBSyxNQUFNLENBQUMsQ0FBQztBQUNuQjtBQUNBLE9BQU0sSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2pDLE9BQU0sT0FBTyxFQUFFLEtBQUssR0FBRyxNQUFNLEVBQUU7U0FDdkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDdEM7T0FDRCxPQUFPLE1BQU0sQ0FBQztNQUNmO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsUUFBUSxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUU7T0FDdkMsSUFBSSxNQUFNLENBQUM7QUFDakI7T0FDTSxRQUFRLENBQUMsVUFBVSxFQUFFLFNBQVMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7U0FDdEQsTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQzdDLE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDdkIsUUFBTyxDQUFDLENBQUM7QUFDVCxPQUFNLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQztNQUNqQjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxlQUFlLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7T0FDakQsSUFBSSxHQUFHLEdBQUcsQ0FBQztXQUNQLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ3BEO0FBQ0EsT0FBTSxJQUFJLE9BQU8sS0FBSyxJQUFJLFFBQVEsSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxxQkFBcUIsRUFBRTtBQUN4RixTQUFRLE9BQU8sR0FBRyxHQUFHLElBQUksRUFBRTtXQUNqQixJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQztBQUN0QyxlQUFjLFFBQVEsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEM7V0FDVSxJQUFJLFFBQVEsS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO2dCQUN2QyxVQUFVLElBQUksUUFBUSxJQUFJLEtBQUssS0FBSyxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRTtBQUN2RSxhQUFZLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLFlBQVcsTUFBTTthQUNMLElBQUksR0FBRyxHQUFHLENBQUM7WUFDWjtVQUNGO1NBQ0QsT0FBTyxJQUFJLENBQUM7UUFDYjtPQUNELE9BQU8saUJBQWlCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7TUFDOUQ7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUU7T0FDN0QsSUFBSSxHQUFHLEdBQUcsQ0FBQztXQUNQLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ2xELE9BQU0sSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFO1NBQ2QsT0FBTyxDQUFDLENBQUM7UUFDVjtBQUNQO0FBQ0EsT0FBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlCLE9BQU0sSUFBSSxRQUFRLEdBQUcsS0FBSyxLQUFLLEtBQUs7QUFDcEMsV0FBVSxTQUFTLEdBQUcsS0FBSyxLQUFLLElBQUk7QUFDcEMsV0FBVSxXQUFXLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztBQUN2QyxXQUFVLGNBQWMsR0FBRyxLQUFLLEtBQUtBLFdBQVMsQ0FBQztBQUMvQztBQUNBLE9BQU0sT0FBTyxHQUFHLEdBQUcsSUFBSSxFQUFFO1NBQ2pCLElBQUksR0FBRyxHQUFHLFdBQVcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDO2FBQ25DLFFBQVEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNDLGFBQVksWUFBWSxHQUFHLFFBQVEsS0FBS0EsV0FBUztBQUNqRCxhQUFZLFNBQVMsR0FBRyxRQUFRLEtBQUssSUFBSTtBQUN6QyxhQUFZLGNBQWMsR0FBRyxRQUFRLEtBQUssUUFBUTtBQUNsRCxhQUFZLFdBQVcsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDN0M7U0FDUSxJQUFJLFFBQVEsRUFBRTtBQUN0QixXQUFVLElBQUksTUFBTSxHQUFHLFVBQVUsSUFBSSxjQUFjLENBQUM7VUFDM0MsTUFBTSxJQUFJLGNBQWMsRUFBRTtXQUN6QixNQUFNLEdBQUcsY0FBYyxLQUFLLFVBQVUsSUFBSSxZQUFZLENBQUMsQ0FBQztVQUN6RCxNQUFNLElBQUksU0FBUyxFQUFFO1dBQ3BCLE1BQU0sR0FBRyxjQUFjLElBQUksWUFBWSxLQUFLLFVBQVUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1VBQ3ZFLE1BQU0sSUFBSSxXQUFXLEVBQUU7QUFDaEMsV0FBVSxNQUFNLEdBQUcsY0FBYyxJQUFJLFlBQVksSUFBSSxDQUFDLFNBQVMsS0FBSyxVQUFVLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNoRyxVQUFTLE1BQU0sSUFBSSxTQUFTLElBQUksV0FBVyxFQUFFO1dBQ25DLE1BQU0sR0FBRyxLQUFLLENBQUM7QUFDekIsVUFBUyxNQUFNO0FBQ2YsV0FBVSxNQUFNLEdBQUcsVUFBVSxJQUFJLFFBQVEsSUFBSSxLQUFLLEtBQUssUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDO1VBQ2hFO1NBQ0QsSUFBSSxNQUFNLEVBQUU7QUFDcEIsV0FBVSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUN4QixVQUFTLE1BQU07V0FDTCxJQUFJLEdBQUcsR0FBRyxDQUFDO1VBQ1o7UUFDRjtBQUNQLE9BQU0sT0FBTyxTQUFTLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO01BQ3pDO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsY0FBYyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUU7QUFDN0MsT0FBTSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDcEIsV0FBVSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU07V0FDckIsUUFBUSxHQUFHLENBQUM7V0FDWixNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3RCO0FBQ0EsT0FBTSxPQUFPLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRTtBQUMvQixTQUFRLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7YUFDcEIsUUFBUSxHQUFHLFFBQVEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQzFEO1NBQ1EsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUU7QUFDM0MsV0FBVSxJQUFJLElBQUksR0FBRyxRQUFRLENBQUM7QUFDOUIsV0FBVSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxLQUFLLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7VUFDOUM7UUFDRjtPQUNELE9BQU8sTUFBTSxDQUFDO01BQ2Y7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsWUFBWSxDQUFDLEtBQUssRUFBRTtBQUNqQyxPQUFNLElBQUksT0FBTyxLQUFLLElBQUksUUFBUSxFQUFFO1NBQzVCLE9BQU8sS0FBSyxDQUFDO1FBQ2Q7QUFDUCxPQUFNLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1NBQ25CLE9BQU8sR0FBRyxDQUFDO1FBQ1o7T0FDRCxPQUFPLENBQUMsS0FBSyxDQUFDO01BQ2Y7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsWUFBWSxDQUFDLEtBQUssRUFBRTtBQUNqQztBQUNBLE9BQU0sSUFBSSxPQUFPLEtBQUssSUFBSSxRQUFRLEVBQUU7U0FDNUIsT0FBTyxLQUFLLENBQUM7UUFDZDtBQUNQLE9BQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDMUI7U0FDUSxPQUFPLFFBQVEsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzNDO0FBQ1AsT0FBTSxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtTQUNuQixPQUFPLGNBQWMsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN6RDtBQUNQLE9BQU0sSUFBSSxNQUFNLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ2hDLE9BQU0sT0FBTyxDQUFDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksR0FBRyxNQUFNLENBQUM7TUFDcEU7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFO0FBQ25ELE9BQU0sSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1dBQ1YsUUFBUSxHQUFHLGFBQWE7QUFDbEMsV0FBVSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU07V0FDckIsUUFBUSxHQUFHLElBQUk7V0FDZixNQUFNLEdBQUcsRUFBRTtXQUNYLElBQUksR0FBRyxNQUFNLENBQUM7QUFDeEI7T0FDTSxJQUFJLFVBQVUsRUFBRTtTQUNkLFFBQVEsR0FBRyxLQUFLLENBQUM7U0FDakIsUUFBUSxHQUFHLGlCQUFpQixDQUFDO1FBQzlCO0FBQ1AsWUFBVyxJQUFJLE1BQU0sSUFBSSxnQkFBZ0IsRUFBRTtTQUNuQyxJQUFJLEdBQUcsR0FBRyxRQUFRLEdBQUcsSUFBSSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3QyxJQUFJLEdBQUcsRUFBRTtBQUNqQixXQUFVLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1VBQ3hCO1NBQ0QsUUFBUSxHQUFHLEtBQUssQ0FBQztTQUNqQixRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQzVCLFNBQVEsSUFBSSxHQUFHLElBQUksUUFBUSxDQUFDO1FBQ3JCO1lBQ0k7QUFDWCxTQUFRLElBQUksR0FBRyxRQUFRLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUMvQjtBQUNQLE9BQU0sS0FBSztBQUNYLE9BQU0sT0FBTyxFQUFFLEtBQUssR0FBRyxNQUFNLEVBQUU7QUFDL0IsU0FBUSxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO2FBQ3BCLFFBQVEsR0FBRyxRQUFRLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUMxRDtBQUNBLFNBQVEsS0FBSyxHQUFHLENBQUMsVUFBVSxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUN4RCxTQUFRLElBQUksUUFBUSxJQUFJLFFBQVEsS0FBSyxRQUFRLEVBQUU7QUFDL0MsV0FBVSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1dBQzVCLE9BQU8sU0FBUyxFQUFFLEVBQUU7QUFDOUIsYUFBWSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxRQUFRLEVBQUU7ZUFDaEMsU0FBUyxLQUFLLENBQUM7Y0FDaEI7WUFDRjtXQUNELElBQUksUUFBUSxFQUFFO0FBQ3hCLGFBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyQjtBQUNYLFdBQVUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztVQUNwQjtjQUNJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsRUFBRTtBQUN4RCxXQUFVLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRTtBQUMvQixhQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckI7QUFDWCxXQUFVLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7VUFDcEI7UUFDRjtPQUNELE9BQU8sTUFBTSxDQUFDO01BQ2Y7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUU7T0FDL0IsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7T0FDOUIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDcEMsT0FBTSxPQUFPLE1BQU0sSUFBSSxJQUFJLElBQUksT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDM0Q7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFO0FBQzNELE9BQU0sT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO01BQzFFO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFO0FBQzVELE9BQU0sSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU07V0FDckIsS0FBSyxHQUFHLFNBQVMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDMUM7T0FDTSxPQUFPLENBQUMsU0FBUyxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxHQUFHLE1BQU07QUFDcEQsU0FBUSxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO0FBQ2pEO0FBQ0EsT0FBTSxPQUFPLE1BQU07QUFDbkIsV0FBVSxTQUFTLENBQUMsS0FBSyxHQUFHLFNBQVMsR0FBRyxDQUFDLEdBQUcsS0FBSyxJQUFJLFNBQVMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHLE1BQU0sRUFBRTtBQUNyRixXQUFVLFNBQVMsQ0FBQyxLQUFLLEdBQUcsU0FBUyxHQUFHLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFNBQVMsR0FBRyxNQUFNLEdBQUcsS0FBSyxFQUFFLENBQUM7TUFDakY7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLGdCQUFnQixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUU7QUFDOUMsT0FBTSxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7QUFDekIsT0FBTSxJQUFJLE1BQU0sWUFBWSxXQUFXLEVBQUU7QUFDekMsU0FBUSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3pCO09BQ0QsT0FBTyxXQUFXLENBQUMsT0FBTyxFQUFFLFNBQVMsTUFBTSxFQUFFLE1BQU0sRUFBRTtTQUNuRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDNUUsRUFBRSxNQUFNLENBQUMsQ0FBQztNQUNaO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLFNBQVMsT0FBTyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFO0FBQ25ELE9BQU0sSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNqQyxPQUFNLElBQUksTUFBTSxHQUFHLENBQUMsRUFBRTtBQUN0QixTQUFRLE9BQU8sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDMUM7QUFDUCxPQUFNLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNwQixXQUFVLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDakM7QUFDQSxPQUFNLE9BQU8sRUFBRSxLQUFLLEdBQUcsTUFBTSxFQUFFO0FBQy9CLFNBQVEsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUNqQyxhQUFZLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMxQjtBQUNBLFNBQVEsT0FBTyxFQUFFLFFBQVEsR0FBRyxNQUFNLEVBQUU7QUFDcEMsV0FBVSxJQUFJLFFBQVEsSUFBSSxLQUFLLEVBQUU7YUFDckIsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDaEc7VUFDRjtRQUNGO0FBQ1AsT0FBTSxPQUFPLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztNQUMvRDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUU7QUFDdEQsT0FBTSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDcEIsV0FBVSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU07QUFDL0IsV0FBVSxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU07V0FDMUIsTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUN0QjtBQUNBLE9BQU0sT0FBTyxFQUFFLEtBQUssR0FBRyxNQUFNLEVBQUU7QUFDL0IsU0FBUSxJQUFJLEtBQUssR0FBRyxLQUFLLEdBQUcsVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBR0EsV0FBUyxDQUFDO1NBQzNELFVBQVUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pDO09BQ0QsT0FBTyxNQUFNLENBQUM7TUFDZjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsbUJBQW1CLENBQUMsS0FBSyxFQUFFO09BQ2xDLE9BQU8saUJBQWlCLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztNQUM5QztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsWUFBWSxDQUFDLEtBQUssRUFBRTtPQUMzQixPQUFPLE9BQU8sS0FBSyxJQUFJLFVBQVUsR0FBRyxLQUFLLEdBQUcsUUFBUSxDQUFDO01BQ3REO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFO0FBQ3JDLE9BQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7U0FDbEIsT0FBTyxLQUFLLENBQUM7UUFDZDtBQUNQLE9BQU0sT0FBTyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO01BQ3ZFO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLFNBQVMsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO0FBQzFDLE9BQU0sSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztPQUMxQixHQUFHLEdBQUcsR0FBRyxLQUFLQSxXQUFTLEdBQUcsTUFBTSxHQUFHLEdBQUcsQ0FBQztBQUM3QyxPQUFNLE9BQU8sQ0FBQyxDQUFDLEtBQUssSUFBSSxHQUFHLElBQUksTUFBTSxJQUFJLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztNQUN6RTtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxJQUFJLFlBQVksR0FBRyxlQUFlLElBQUksU0FBUyxFQUFFLEVBQUU7QUFDdkQsT0FBTSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbkMsTUFBSyxDQUFDO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO09BQ25DLElBQUksTUFBTSxFQUFFO0FBQ2xCLFNBQVEsT0FBTyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkI7QUFDUCxPQUFNLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNO0FBQ2hDLFdBQVUsTUFBTSxHQUFHLFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3RGO0FBQ0EsT0FBTSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO09BQ3BCLE9BQU8sTUFBTSxDQUFDO01BQ2Y7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLGdCQUFnQixDQUFDLFdBQVcsRUFBRTtBQUMzQyxPQUFNLElBQUksTUFBTSxHQUFHLElBQUksV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDdkUsT0FBTSxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztPQUN4RCxPQUFPLE1BQU0sQ0FBQztNQUNmO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLGFBQWEsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFO0FBQzdDLE9BQU0sSUFBSSxNQUFNLEdBQUcsTUFBTSxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQ2hGLE9BQU0sT0FBTyxJQUFJLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO01BQ25GO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ2pDLE9BQU0sSUFBSSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQy9FLE9BQU0sTUFBTSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO09BQ3BDLE9BQU8sTUFBTSxDQUFDO01BQ2Y7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUU7QUFDakMsT0FBTSxPQUFPLGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztNQUNoRTtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxlQUFlLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRTtBQUNqRCxPQUFNLElBQUksTUFBTSxHQUFHLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztBQUNwRixPQUFNLE9BQU8sSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztNQUNyRjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFO0FBQzVDLE9BQU0sSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFO0FBQzNCLFNBQVEsSUFBSSxZQUFZLEdBQUcsS0FBSyxLQUFLQSxXQUFTO0FBQzlDLGFBQVksU0FBUyxHQUFHLEtBQUssS0FBSyxJQUFJO0FBQ3RDLGFBQVksY0FBYyxHQUFHLEtBQUssS0FBSyxLQUFLO0FBQzVDLGFBQVksV0FBVyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxQztBQUNBLFNBQVEsSUFBSSxZQUFZLEdBQUcsS0FBSyxLQUFLQSxXQUFTO0FBQzlDLGFBQVksU0FBUyxHQUFHLEtBQUssS0FBSyxJQUFJO0FBQ3RDLGFBQVksY0FBYyxHQUFHLEtBQUssS0FBSyxLQUFLO0FBQzVDLGFBQVksV0FBVyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxQztBQUNBLFNBQVEsSUFBSSxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxJQUFJLEtBQUssR0FBRyxLQUFLO2NBQzNELFdBQVcsSUFBSSxZQUFZLElBQUksY0FBYyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsV0FBVyxDQUFDO0FBQ3pGLGNBQWEsU0FBUyxJQUFJLFlBQVksSUFBSSxjQUFjLENBQUM7QUFDekQsY0FBYSxDQUFDLFlBQVksSUFBSSxjQUFjLENBQUM7YUFDakMsQ0FBQyxjQUFjLEVBQUU7V0FDbkIsT0FBTyxDQUFDLENBQUM7VUFDVjtBQUNULFNBQVEsSUFBSSxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxJQUFJLEtBQUssR0FBRyxLQUFLO2NBQzNELFdBQVcsSUFBSSxZQUFZLElBQUksY0FBYyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsV0FBVyxDQUFDO0FBQ3pGLGNBQWEsU0FBUyxJQUFJLFlBQVksSUFBSSxjQUFjLENBQUM7QUFDekQsY0FBYSxDQUFDLFlBQVksSUFBSSxjQUFjLENBQUM7YUFDakMsQ0FBQyxjQUFjLEVBQUU7V0FDbkIsT0FBTyxDQUFDLENBQUMsQ0FBQztVQUNYO1FBQ0Y7T0FDRCxPQUFPLENBQUMsQ0FBQztNQUNWO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxlQUFlLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDcEQsT0FBTSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDcEIsV0FBVSxXQUFXLEdBQUcsTUFBTSxDQUFDLFFBQVE7QUFDdkMsV0FBVSxXQUFXLEdBQUcsS0FBSyxDQUFDLFFBQVE7QUFDdEMsV0FBVSxNQUFNLEdBQUcsV0FBVyxDQUFDLE1BQU07QUFDckMsV0FBVSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUN2QztBQUNBLE9BQU0sT0FBTyxFQUFFLEtBQUssR0FBRyxNQUFNLEVBQUU7QUFDL0IsU0FBUSxJQUFJLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDdEUsSUFBSSxNQUFNLEVBQUU7QUFDcEIsV0FBVSxJQUFJLEtBQUssSUFBSSxZQUFZLEVBQUU7YUFDekIsT0FBTyxNQUFNLENBQUM7WUFDZjtBQUNYLFdBQVUsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BDLFdBQVUsT0FBTyxNQUFNLElBQUksS0FBSyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztVQUM1QztRQUNGO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7T0FDTSxPQUFPLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztNQUNuQztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLFNBQVMsV0FBVyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRTtBQUM3RCxPQUFNLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztBQUN4QixXQUFVLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTTtBQUNsQyxXQUFVLGFBQWEsR0FBRyxPQUFPLENBQUMsTUFBTTtXQUM5QixTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCLFdBQVUsVUFBVSxHQUFHLFFBQVEsQ0FBQyxNQUFNO1dBQzVCLFdBQVcsR0FBRyxTQUFTLENBQUMsVUFBVSxHQUFHLGFBQWEsRUFBRSxDQUFDLENBQUM7QUFDaEUsV0FBVSxNQUFNLEdBQUcsS0FBSyxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUM7QUFDbEQsV0FBVSxXQUFXLEdBQUcsQ0FBQyxTQUFTLENBQUM7QUFDbkM7QUFDQSxPQUFNLE9BQU8sRUFBRSxTQUFTLEdBQUcsVUFBVSxFQUFFO1NBQy9CLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekM7QUFDUCxPQUFNLE9BQU8sRUFBRSxTQUFTLEdBQUcsYUFBYSxFQUFFO0FBQzFDLFNBQVEsSUFBSSxXQUFXLElBQUksU0FBUyxHQUFHLFVBQVUsRUFBRTtBQUNuRCxXQUFVLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7VUFDOUM7UUFDRjtPQUNELE9BQU8sV0FBVyxFQUFFLEVBQUU7U0FDcEIsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDekM7T0FDRCxPQUFPLE1BQU0sQ0FBQztNQUNmO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUU7QUFDbEUsT0FBTSxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFDeEIsV0FBVSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU07V0FDeEIsWUFBWSxHQUFHLENBQUMsQ0FBQztBQUMzQixXQUFVLGFBQWEsR0FBRyxPQUFPLENBQUMsTUFBTTtXQUM5QixVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBQ3pCLFdBQVUsV0FBVyxHQUFHLFFBQVEsQ0FBQyxNQUFNO1dBQzdCLFdBQVcsR0FBRyxTQUFTLENBQUMsVUFBVSxHQUFHLGFBQWEsRUFBRSxDQUFDLENBQUM7QUFDaEUsV0FBVSxNQUFNLEdBQUcsS0FBSyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7QUFDbkQsV0FBVSxXQUFXLEdBQUcsQ0FBQyxTQUFTLENBQUM7QUFDbkM7QUFDQSxPQUFNLE9BQU8sRUFBRSxTQUFTLEdBQUcsV0FBVyxFQUFFO1NBQ2hDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckM7QUFDUCxPQUFNLElBQUksTUFBTSxHQUFHLFNBQVMsQ0FBQztBQUM3QixPQUFNLE9BQU8sRUFBRSxVQUFVLEdBQUcsV0FBVyxFQUFFO1NBQ2pDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BEO0FBQ1AsT0FBTSxPQUFPLEVBQUUsWUFBWSxHQUFHLGFBQWEsRUFBRTtBQUM3QyxTQUFRLElBQUksV0FBVyxJQUFJLFNBQVMsR0FBRyxVQUFVLEVBQUU7QUFDbkQsV0FBVSxNQUFNLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1VBQzVEO1FBQ0Y7T0FDRCxPQUFPLE1BQU0sQ0FBQztNQUNmO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFNBQVMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFO0FBQ3RDLE9BQU0sSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLFdBQVUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDakM7T0FDTSxLQUFLLEtBQUssS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLE9BQU0sT0FBTyxFQUFFLEtBQUssR0FBRyxNQUFNLEVBQUU7U0FDdkIsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QjtPQUNELE9BQU8sS0FBSyxDQUFDO01BQ2Q7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxVQUFVLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFO0FBQzNELE9BQU0sSUFBSSxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUM7QUFDMUIsT0FBTSxNQUFNLEtBQUssTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQzlCO0FBQ0EsT0FBTSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDcEIsV0FBVSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUNoQztBQUNBLE9BQU0sT0FBTyxFQUFFLEtBQUssR0FBRyxNQUFNLEVBQUU7QUFDL0IsU0FBUSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0I7U0FDUSxJQUFJLFFBQVEsR0FBRyxVQUFVO0FBQ2pDLGFBQVksVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7QUFDckUsYUFBWUEsV0FBUyxDQUFDO0FBQ3RCO0FBQ0EsU0FBUSxJQUFJLFFBQVEsS0FBS0EsV0FBUyxFQUFFO0FBQ3BDLFdBQVUsUUFBUSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztVQUN4QjtTQUNELElBQUksS0FBSyxFQUFFO1dBQ1QsZUFBZSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDakQsVUFBUyxNQUFNO1dBQ0wsV0FBVyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7VUFDcEM7UUFDRjtPQUNELE9BQU8sTUFBTSxDQUFDO01BQ2Y7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDekMsT0FBTSxPQUFPLFVBQVUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO01BQ3ZEO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLGFBQWEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQzNDLE9BQU0sT0FBTyxVQUFVLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztNQUN6RDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFO0FBQ25ELE9BQU0sT0FBTyxTQUFTLFVBQVUsRUFBRSxRQUFRLEVBQUU7U0FDcEMsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLGVBQWUsR0FBRyxjQUFjO2FBQzdELFdBQVcsR0FBRyxXQUFXLEdBQUcsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQzNEO0FBQ0EsU0FBUSxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDL0UsUUFBTyxDQUFDO01BQ0g7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLGNBQWMsQ0FBQyxRQUFRLEVBQUU7QUFDdEMsT0FBTSxPQUFPLFFBQVEsQ0FBQyxTQUFTLE1BQU0sRUFBRSxPQUFPLEVBQUU7QUFDaEQsU0FBUSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDdEIsYUFBWSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU07QUFDbkMsYUFBWSxVQUFVLEdBQUcsTUFBTSxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHQSxXQUFTO0FBQ3JFLGFBQVksS0FBSyxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxXQUFTLENBQUM7QUFDeEQ7QUFDQSxTQUFRLFVBQVUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sVUFBVSxJQUFJLFVBQVU7Y0FDL0QsTUFBTSxFQUFFLEVBQUUsVUFBVTtBQUNqQyxhQUFZQSxXQUFTLENBQUM7QUFDdEI7QUFDQSxTQUFRLElBQUksS0FBSyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFO1dBQzFELFVBQVUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxHQUFHQSxXQUFTLEdBQUcsVUFBVSxDQUFDO1dBQ2pELE1BQU0sR0FBRyxDQUFDLENBQUM7VUFDWjtBQUNULFNBQVEsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNoQyxTQUFRLE9BQU8sRUFBRSxLQUFLLEdBQUcsTUFBTSxFQUFFO0FBQ2pDLFdBQVUsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1dBQzVCLElBQUksTUFBTSxFQUFFO2FBQ1YsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQzdDO1VBQ0Y7U0FDRCxPQUFPLE1BQU0sQ0FBQztBQUN0QixRQUFPLENBQUMsQ0FBQztNQUNKO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLGNBQWMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFO0FBQ2pELE9BQU0sT0FBTyxTQUFTLFVBQVUsRUFBRSxRQUFRLEVBQUU7QUFDNUMsU0FBUSxJQUFJLFVBQVUsSUFBSSxJQUFJLEVBQUU7V0FDdEIsT0FBTyxVQUFVLENBQUM7VUFDbkI7QUFDVCxTQUFRLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUU7QUFDdEMsV0FBVSxPQUFPLFFBQVEsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7VUFDdkM7QUFDVCxTQUFRLElBQUksTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNO0FBQ3RDLGFBQVksS0FBSyxHQUFHLFNBQVMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQzNDLGFBQVksUUFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxQztTQUNRLFFBQVEsU0FBUyxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxHQUFHLE1BQU0sR0FBRztBQUN6RCxXQUFVLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssS0FBSyxFQUFFO0FBQ3BFLGFBQVksTUFBTTtZQUNQO1VBQ0Y7U0FDRCxPQUFPLFVBQVUsQ0FBQztBQUMxQixRQUFPLENBQUM7TUFDSDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsYUFBYSxDQUFDLFNBQVMsRUFBRTtBQUN0QyxPQUFNLE9BQU8sU0FBUyxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRTtBQUNsRCxTQUFRLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUN0QixhQUFZLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3JDLGFBQVksS0FBSyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7QUFDcEMsYUFBWSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUNsQztTQUNRLE9BQU8sTUFBTSxFQUFFLEVBQUU7QUFDekIsV0FBVSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsU0FBUyxHQUFHLE1BQU0sR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3hELFdBQVUsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDaEUsYUFBWSxNQUFNO1lBQ1A7VUFDRjtTQUNELE9BQU8sTUFBTSxDQUFDO0FBQ3RCLFFBQU8sQ0FBQztNQUNIO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLFNBQVMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ2hELE9BQU0sSUFBSSxNQUFNLEdBQUcsT0FBTyxHQUFHLGNBQWM7QUFDM0MsV0FBVSxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xDO09BQ00sU0FBUyxPQUFPLEdBQUc7QUFDekIsU0FBUSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksWUFBWSxPQUFPLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztBQUNsRixTQUFRLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxHQUFHLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNyRDtPQUNELE9BQU8sT0FBTyxDQUFDO01BQ2hCO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxlQUFlLENBQUMsVUFBVSxFQUFFO09BQ25DLE9BQU8sU0FBUyxNQUFNLEVBQUU7QUFDOUIsU0FBUSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xDO0FBQ0EsU0FBUSxJQUFJLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO2FBQy9CLGFBQWEsQ0FBQyxNQUFNLENBQUM7QUFDakMsYUFBWUEsV0FBUyxDQUFDO0FBQ3RCO1NBQ1EsSUFBSSxHQUFHLEdBQUcsVUFBVTthQUNoQixVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLGFBQVksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QjtTQUNRLElBQUksUUFBUSxHQUFHLFVBQVU7YUFDckIsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQzdDLGFBQVksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1QjtTQUNRLE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDO0FBQzVDLFFBQU8sQ0FBQztNQUNIO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUU7T0FDbEMsT0FBTyxTQUFTLE1BQU0sRUFBRTtTQUN0QixPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEYsUUFBTyxDQUFDO01BQ0g7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsVUFBVSxDQUFDLElBQUksRUFBRTtBQUM5QixPQUFNLE9BQU8sV0FBVztBQUN4QjtBQUNBO0FBQ0E7QUFDQSxTQUFRLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQztTQUNyQixRQUFRLElBQUksQ0FBQyxNQUFNO0FBQzNCLFdBQVUsS0FBSyxDQUFDLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQztBQUNsQyxXQUFVLEtBQUssQ0FBQyxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0MsV0FBVSxLQUFLLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztXQUMxQyxLQUFLLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7V0FDbkQsS0FBSyxDQUFDLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RSxXQUFVLEtBQUssQ0FBQyxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9FLFdBQVUsS0FBSyxDQUFDLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hGLFdBQVUsS0FBSyxDQUFDLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztVQUN4RjtTQUNELElBQUksV0FBVyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2FBQ3hDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNuRDtBQUNBO0FBQ0E7U0FDUSxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLEdBQUcsV0FBVyxDQUFDO0FBQ3ZELFFBQU8sQ0FBQztNQUNIO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7S0FDSSxTQUFTLFdBQVcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRTtBQUMvQyxPQUFNLElBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsQztPQUNNLFNBQVMsT0FBTyxHQUFHO0FBQ3pCLFNBQVEsSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU07QUFDckMsYUFBWSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQzthQUNwQixLQUFLLEdBQUcsTUFBTTtBQUMxQixhQUFZLFdBQVcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDN0M7U0FDUSxPQUFPLEtBQUssRUFBRSxFQUFFO1dBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztVQUNoQztTQUNELElBQUksT0FBTyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssV0FBVztBQUNoRyxhQUFZLEVBQUU7QUFDZCxhQUFZLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDOUM7QUFDQSxTQUFRLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDO0FBQ2pDLFNBQVEsSUFBSSxNQUFNLEdBQUcsS0FBSyxFQUFFO0FBQzVCLFdBQVUsT0FBTyxhQUFhO2FBQ2xCLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxXQUFXLEVBQUVBLFdBQVM7QUFDdkUsYUFBWSxJQUFJLEVBQUUsT0FBTyxFQUFFQSxXQUFTLEVBQUVBLFdBQVMsRUFBRSxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUM7VUFDeEQ7QUFDVCxTQUFRLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxZQUFZLE9BQU8sSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQzFFLE9BQU8sS0FBSyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUI7T0FDRCxPQUFPLE9BQU8sQ0FBQztNQUNoQjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsVUFBVSxDQUFDLGFBQWEsRUFBRTtBQUN2QyxPQUFNLE9BQU8sU0FBUyxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRTtBQUN4RCxTQUFRLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxQyxTQUFRLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUU7V0FDNUIsSUFBSSxRQUFRLEdBQUcsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuRCxXQUFVLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7V0FDOUIsU0FBUyxHQUFHLFNBQVMsR0FBRyxFQUFFLEVBQUUsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUM7VUFDOUU7U0FDRCxJQUFJLEtBQUssR0FBRyxhQUFhLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNwRSxTQUFRLE9BQU8sS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHQSxXQUFTLENBQUM7QUFDdkYsUUFBTyxDQUFDO01BQ0g7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFVBQVUsQ0FBQyxTQUFTLEVBQUU7QUFDbkMsT0FBTSxPQUFPLFFBQVEsQ0FBQyxTQUFTLEtBQUssRUFBRTtBQUN0QyxTQUFRLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNO2FBQ3JCLEtBQUssR0FBRyxNQUFNO0FBQzFCLGFBQVksTUFBTSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO0FBQ2xEO1NBQ1EsSUFBSSxTQUFTLEVBQUU7QUFDdkIsV0FBVSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7VUFDakI7U0FDRCxPQUFPLEtBQUssRUFBRSxFQUFFO0FBQ3hCLFdBQVUsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xDLFdBQVUsSUFBSSxPQUFPLElBQUksSUFBSSxVQUFVLEVBQUU7QUFDekMsYUFBWSxNQUFNLElBQUksU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3RDO0FBQ1gsV0FBVSxJQUFJLE1BQU0sSUFBSSxDQUFDLE9BQU8sSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksU0FBUyxFQUFFO2FBQ3hELElBQUksT0FBTyxHQUFHLElBQUksYUFBYSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMzQztVQUNGO0FBQ1QsU0FBUSxLQUFLLEdBQUcsT0FBTyxHQUFHLEtBQUssR0FBRyxNQUFNLENBQUM7QUFDekMsU0FBUSxPQUFPLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRTtBQUNqQyxXQUFVLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUI7QUFDQSxXQUFVLElBQUksUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7QUFDMUMsZUFBYyxJQUFJLEdBQUcsUUFBUSxJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUdBLFdBQVMsQ0FBQztBQUN2RTtXQUNVLElBQUksSUFBSSxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekMsaUJBQWdCLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxhQUFhLEdBQUcsZUFBZSxHQUFHLGlCQUFpQixHQUFHLGVBQWUsQ0FBQztBQUNsRyxpQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2lCQUMvQjthQUNKLE9BQU8sR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1RSxZQUFXLE1BQU07QUFDakIsYUFBWSxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDO0FBQzNELGlCQUFnQixPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDbkMsaUJBQWdCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEI7VUFDRjtBQUNULFNBQVEsT0FBTyxXQUFXO1dBQ2hCLElBQUksSUFBSSxHQUFHLFNBQVM7QUFDOUIsZUFBYyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlCO0FBQ0EsV0FBVSxJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7YUFDakQsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JDO1dBQ0QsSUFBSSxLQUFLLEdBQUcsQ0FBQztBQUN2QixlQUFjLE1BQU0sR0FBRyxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ3ZFO0FBQ0EsV0FBVSxPQUFPLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRTtBQUNuQyxhQUFZLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMxQztXQUNELE9BQU8sTUFBTSxDQUFDO0FBQ3hCLFVBQVMsQ0FBQztBQUNWLFFBQU8sQ0FBQyxDQUFDO01BQ0o7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxZQUFZLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ3RILE9BQU0sSUFBSSxLQUFLLEdBQUcsT0FBTyxHQUFHLGFBQWE7QUFDekMsV0FBVSxNQUFNLEdBQUcsT0FBTyxHQUFHLGNBQWM7QUFDM0MsV0FBVSxTQUFTLEdBQUcsT0FBTyxHQUFHLGtCQUFrQjtBQUNsRCxXQUFVLFNBQVMsR0FBRyxPQUFPLElBQUksZUFBZSxHQUFHLHFCQUFxQixDQUFDO0FBQ3pFLFdBQVUsTUFBTSxHQUFHLE9BQU8sR0FBRyxjQUFjO1dBQ2pDLElBQUksR0FBRyxTQUFTLEdBQUdBLFdBQVMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUQ7T0FDTSxTQUFTLE9BQU8sR0FBRztBQUN6QixTQUFRLElBQUksTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNO0FBQ3JDLGFBQVksSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7YUFDcEIsS0FBSyxHQUFHLE1BQU0sQ0FBQztBQUMzQjtTQUNRLE9BQU8sS0FBSyxFQUFFLEVBQUU7V0FDZCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1VBQ2hDO1NBQ0QsSUFBSSxTQUFTLEVBQUU7QUFDdkIsV0FBVSxJQUFJLFdBQVcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO2VBQ2hDLFlBQVksR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1VBQ3BEO1NBQ0QsSUFBSSxRQUFRLEVBQUU7QUFDdEIsV0FBVSxJQUFJLEdBQUcsV0FBVyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1VBQ3hEO1NBQ0QsSUFBSSxhQUFhLEVBQUU7QUFDM0IsV0FBVSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7VUFDdkU7U0FDRCxNQUFNLElBQUksWUFBWSxDQUFDO0FBQy9CLFNBQVEsSUFBSSxTQUFTLElBQUksTUFBTSxHQUFHLEtBQUssRUFBRTtXQUMvQixJQUFJLFVBQVUsR0FBRyxjQUFjLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQzdELFdBQVUsT0FBTyxhQUFhO2FBQ2xCLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxXQUFXLEVBQUUsT0FBTzthQUN6RCxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxHQUFHLE1BQU07QUFDekQsWUFBVyxDQUFDO1VBQ0g7QUFDVCxTQUFRLElBQUksV0FBVyxHQUFHLE1BQU0sR0FBRyxPQUFPLEdBQUcsSUFBSTthQUNyQyxFQUFFLEdBQUcsU0FBUyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDdEQ7QUFDQSxTQUFRLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ3JCLElBQUksTUFBTSxFQUFFO1dBQ1YsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdkMsVUFBUyxNQUFNLElBQUksTUFBTSxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDekMsV0FBVSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7VUFDaEI7QUFDVCxTQUFRLElBQUksS0FBSyxJQUFJLEdBQUcsR0FBRyxNQUFNLEVBQUU7QUFDbkMsV0FBVSxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztVQUNuQjtTQUNELElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxZQUFZLE9BQU8sRUFBRTtXQUNwRCxFQUFFLEdBQUcsSUFBSSxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztVQUM3QjtTQUNELE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEM7T0FDRCxPQUFPLE9BQU8sQ0FBQztNQUNoQjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRTtBQUNoRCxPQUFNLE9BQU8sU0FBUyxNQUFNLEVBQUUsUUFBUSxFQUFFO0FBQ3hDLFNBQVEsT0FBTyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDdEUsUUFBTyxDQUFDO01BQ0g7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRTtBQUN6RCxPQUFNLE9BQU8sU0FBUyxLQUFLLEVBQUUsS0FBSyxFQUFFO1NBQzVCLElBQUksTUFBTSxDQUFDO1NBQ1gsSUFBSSxLQUFLLEtBQUtBLFdBQVMsSUFBSSxLQUFLLEtBQUtBLFdBQVMsRUFBRTtXQUM5QyxPQUFPLFlBQVksQ0FBQztVQUNyQjtBQUNULFNBQVEsSUFBSSxLQUFLLEtBQUtBLFdBQVMsRUFBRTtXQUN2QixNQUFNLEdBQUcsS0FBSyxDQUFDO1VBQ2hCO0FBQ1QsU0FBUSxJQUFJLEtBQUssS0FBS0EsV0FBUyxFQUFFO0FBQ2pDLFdBQVUsSUFBSSxNQUFNLEtBQUtBLFdBQVMsRUFBRTthQUN4QixPQUFPLEtBQUssQ0FBQztZQUNkO1dBQ0QsSUFBSSxPQUFPLEtBQUssSUFBSSxRQUFRLElBQUksT0FBTyxLQUFLLElBQUksUUFBUSxFQUFFO0FBQ3BFLGFBQVksS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QyxhQUFZLEtBQUssR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEMsWUFBVyxNQUFNO0FBQ2pCLGFBQVksS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QyxhQUFZLEtBQUssR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0I7V0FDRCxNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztVQUNqQztTQUNELE9BQU8sTUFBTSxDQUFDO0FBQ3RCLFFBQU8sQ0FBQztNQUNIO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxVQUFVLENBQUMsU0FBUyxFQUFFO0FBQ25DLE9BQU0sT0FBTyxRQUFRLENBQUMsU0FBUyxTQUFTLEVBQUU7QUFDMUMsU0FBUSxTQUFTLEdBQUcsUUFBUSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLFNBQVEsT0FBTyxRQUFRLENBQUMsU0FBUyxJQUFJLEVBQUU7QUFDdkMsV0FBVSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDN0IsV0FBVSxPQUFPLFNBQVMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxRQUFRLEVBQUU7YUFDN0MsT0FBTyxLQUFLLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNsRCxZQUFXLENBQUMsQ0FBQztBQUNiLFVBQVMsQ0FBQyxDQUFDO0FBQ1gsUUFBTyxDQUFDLENBQUM7TUFDSjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLGFBQWEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFO0FBQzFDLE9BQU0sS0FBSyxHQUFHLEtBQUssS0FBS0EsV0FBUyxHQUFHLEdBQUcsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUQ7QUFDQSxPQUFNLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDckMsT0FBTSxJQUFJLFdBQVcsR0FBRyxDQUFDLEVBQUU7U0FDbkIsT0FBTyxXQUFXLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDeEQ7QUFDUCxPQUFNLElBQUksTUFBTSxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdFLE9BQU0sT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDO0FBQzlCLFdBQVUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztXQUNwRCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztNQUM3QjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxhQUFhLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFO0FBQzdELE9BQU0sSUFBSSxNQUFNLEdBQUcsT0FBTyxHQUFHLGNBQWM7QUFDM0MsV0FBVSxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xDO09BQ00sU0FBUyxPQUFPLEdBQUc7QUFDekIsU0FBUSxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFDMUIsYUFBWSxVQUFVLEdBQUcsU0FBUyxDQUFDLE1BQU07YUFDN0IsU0FBUyxHQUFHLENBQUMsQ0FBQztBQUMxQixhQUFZLFVBQVUsR0FBRyxRQUFRLENBQUMsTUFBTTtBQUN4QyxhQUFZLElBQUksR0FBRyxLQUFLLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztBQUNqRCxhQUFZLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksWUFBWSxPQUFPLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztBQUNsRjtBQUNBLFNBQVEsT0FBTyxFQUFFLFNBQVMsR0FBRyxVQUFVLEVBQUU7V0FDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztVQUN2QztTQUNELE9BQU8sVUFBVSxFQUFFLEVBQUU7V0FDbkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7VUFDNUM7QUFDVCxTQUFRLE9BQU8sS0FBSyxDQUFDLEVBQUUsRUFBRSxNQUFNLEdBQUcsT0FBTyxHQUFHLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqRDtPQUNELE9BQU8sT0FBTyxDQUFDO01BQ2hCO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxXQUFXLENBQUMsU0FBUyxFQUFFO0FBQ3BDLE9BQU0sT0FBTyxTQUFTLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFO0FBQ3hDLFNBQVEsSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLElBQUksUUFBUSxJQUFJLGNBQWMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFO0FBQ2pGLFdBQVUsR0FBRyxHQUFHLElBQUksR0FBR0EsV0FBUyxDQUFDO1VBQ3hCO0FBQ1Q7QUFDQSxTQUFRLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEMsU0FBUSxJQUFJLEdBQUcsS0FBS0EsV0FBUyxFQUFFO1dBQ3JCLEdBQUcsR0FBRyxLQUFLLENBQUM7V0FDWixLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLFVBQVMsTUFBTTtBQUNmLFdBQVUsR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztVQUNyQjtBQUNULFNBQVEsSUFBSSxHQUFHLElBQUksS0FBS0EsV0FBUyxJQUFJLEtBQUssR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNwRSxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUN0RCxRQUFPLENBQUM7TUFDSDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMseUJBQXlCLENBQUMsUUFBUSxFQUFFO0FBQ2pELE9BQU0sT0FBTyxTQUFTLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDcEMsU0FBUSxJQUFJLEVBQUUsT0FBTyxLQUFLLElBQUksUUFBUSxJQUFJLE9BQU8sS0FBSyxJQUFJLFFBQVEsQ0FBQyxFQUFFO0FBQ3JFLFdBQVUsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsQyxXQUFVLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7VUFDekI7QUFDVCxTQUFRLE9BQU8sUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN0QyxRQUFPLENBQUM7TUFDSDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLFNBQVMsYUFBYSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtBQUNqSCxPQUFNLElBQUksT0FBTyxHQUFHLE9BQU8sR0FBRyxlQUFlO0FBQzdDLFdBQVUsVUFBVSxHQUFHLE9BQU8sR0FBRyxPQUFPLEdBQUdBLFdBQVM7QUFDcEQsV0FBVSxlQUFlLEdBQUcsT0FBTyxHQUFHQSxXQUFTLEdBQUcsT0FBTztBQUN6RCxXQUFVLFdBQVcsR0FBRyxPQUFPLEdBQUcsUUFBUSxHQUFHQSxXQUFTO0FBQ3RELFdBQVUsZ0JBQWdCLEdBQUcsT0FBTyxHQUFHQSxXQUFTLEdBQUcsUUFBUSxDQUFDO0FBQzVEO09BQ00sT0FBTyxLQUFLLE9BQU8sR0FBRyxpQkFBaUIsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDO09BQ25FLE9BQU8sSUFBSSxFQUFFLE9BQU8sR0FBRyx1QkFBdUIsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDO0FBQzFFO0FBQ0EsT0FBTSxJQUFJLEVBQUUsT0FBTyxHQUFHLHFCQUFxQixDQUFDLEVBQUU7QUFDOUMsU0FBUSxPQUFPLElBQUksRUFBRSxjQUFjLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztRQUNuRDtPQUNELElBQUksT0FBTyxHQUFHO1NBQ1osSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0I7QUFDekUsU0FBUSxlQUFlLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLO0FBQzNDLFFBQU8sQ0FBQztBQUNSO09BQ00sSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQ0EsV0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3RELE9BQU0sSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDNUIsU0FBUSxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzFCO0FBQ1AsT0FBTSxNQUFNLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztPQUNqQyxPQUFPLGVBQWUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO01BQy9DO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxXQUFXLENBQUMsVUFBVSxFQUFFO0FBQ3JDLE9BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ2xDLE9BQU0sT0FBTyxTQUFTLE1BQU0sRUFBRSxTQUFTLEVBQUU7QUFDekMsU0FBUSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xDLFNBQVEsU0FBUyxHQUFHLFNBQVMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDakYsU0FBUSxJQUFJLFNBQVMsSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDakQ7QUFDQTtBQUNBLFdBQVUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUM7ZUFDMUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDbkU7QUFDQSxXQUFVLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BELFdBQVUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztVQUNsRDtBQUNULFNBQVEsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUIsUUFBTyxDQUFDO01BQ0g7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxJQUFJLFNBQVMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUMsR0FBRyxJQUFJLEdBQUcsU0FBUyxNQUFNLEVBQUU7QUFDeEcsT0FBTSxPQUFPLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzdCLE1BQUssQ0FBQztBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsYUFBYSxDQUFDLFFBQVEsRUFBRTtPQUMvQixPQUFPLFNBQVMsTUFBTSxFQUFFO0FBQzlCLFNBQVEsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2pDLFNBQVEsSUFBSSxHQUFHLElBQUksTUFBTSxFQUFFO0FBQzNCLFdBQVUsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7VUFDM0I7QUFDVCxTQUFRLElBQUksR0FBRyxJQUFJLE1BQU0sRUFBRTtBQUMzQixXQUFVLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1VBQzNCO1NBQ0QsT0FBTyxXQUFXLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3JELFFBQU8sQ0FBQztNQUNIO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtBQUN2RixPQUFNLElBQUksU0FBUyxHQUFHLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQztPQUM3QyxJQUFJLENBQUMsU0FBUyxJQUFJLE9BQU8sSUFBSSxJQUFJLFVBQVUsRUFBRTtBQUNuRCxTQUFRLE1BQU0sSUFBSSxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdEM7T0FDRCxJQUFJLE1BQU0sR0FBRyxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7T0FDNUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNuQixTQUFRLE9BQU8sSUFBSSxFQUFFLGlCQUFpQixHQUFHLHVCQUF1QixDQUFDLENBQUM7QUFDbEUsU0FBUSxRQUFRLEdBQUcsT0FBTyxHQUFHQSxXQUFTLENBQUM7UUFDaEM7QUFDUCxPQUFNLEdBQUcsR0FBRyxHQUFHLEtBQUtBLFdBQVMsR0FBRyxHQUFHLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuRSxPQUFNLEtBQUssR0FBRyxLQUFLLEtBQUtBLFdBQVMsR0FBRyxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO09BQ3ZELE1BQU0sSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDN0M7QUFDQSxPQUFNLElBQUksT0FBTyxHQUFHLHVCQUF1QixFQUFFO1NBQ3JDLElBQUksYUFBYSxHQUFHLFFBQVE7YUFDeEIsWUFBWSxHQUFHLE9BQU8sQ0FBQztBQUNuQztBQUNBLFNBQVEsUUFBUSxHQUFHLE9BQU8sR0FBR0EsV0FBUyxDQUFDO1FBQ2hDO09BQ0QsSUFBSSxJQUFJLEdBQUcsU0FBUyxHQUFHQSxXQUFTLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZEO09BQ00sSUFBSSxPQUFPLEdBQUc7QUFDcEIsU0FBUSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZO0FBQzlFLFNBQVEsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLO0FBQzFCLFFBQU8sQ0FBQztBQUNSO09BQ00sSUFBSSxJQUFJLEVBQUU7QUFDaEIsU0FBUSxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFCO0FBQ1AsT0FBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hCLE9BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQixPQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0IsT0FBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLE9BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQixPQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLQSxXQUFTO0FBQ25ELFlBQVcsU0FBUyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTTtXQUM1QixTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QztPQUNNLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxJQUFJLGVBQWUsR0FBRyxxQkFBcUIsQ0FBQyxFQUFFO0FBQ3pFLFNBQVEsT0FBTyxJQUFJLEVBQUUsZUFBZSxHQUFHLHFCQUFxQixDQUFDLENBQUM7UUFDdkQ7QUFDUCxPQUFNLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxJQUFJLGNBQWMsRUFBRTtTQUN6QyxJQUFJLE1BQU0sR0FBRyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqRCxNQUFNLElBQUksT0FBTyxJQUFJLGVBQWUsSUFBSSxPQUFPLElBQUkscUJBQXFCLEVBQUU7U0FDekUsTUFBTSxHQUFHLFdBQVcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ25ELFFBQU8sTUFBTSxJQUFJLENBQUMsT0FBTyxJQUFJLGlCQUFpQixJQUFJLE9BQU8sS0FBSyxjQUFjLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7QUFDdkgsU0FBUSxNQUFNLEdBQUcsYUFBYSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ2pFLFFBQU8sTUFBTTtTQUNMLE1BQU0sR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDQSxXQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDakQ7T0FDRCxJQUFJLE1BQU0sR0FBRyxJQUFJLEdBQUcsV0FBVyxHQUFHLE9BQU8sQ0FBQztBQUNoRCxPQUFNLE9BQU8sZUFBZSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO01BQ2hFO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7S0FDSSxTQUFTLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRTtPQUMvRCxJQUFJLFFBQVEsS0FBS0EsV0FBUztZQUNyQixFQUFFLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRTtTQUN6RSxPQUFPLFFBQVEsQ0FBQztRQUNqQjtPQUNELE9BQU8sUUFBUSxDQUFDO01BQ2pCO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO09BQzNFLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUNwRDtTQUNRLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3RDLFNBQVEsU0FBUyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUVBLFdBQVMsRUFBRSxtQkFBbUIsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM3RSxTQUFRLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQjtPQUNELE9BQU8sUUFBUSxDQUFDO01BQ2pCO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsZUFBZSxDQUFDLEtBQUssRUFBRTtPQUM5QixPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBR0EsV0FBUyxHQUFHLEtBQUssQ0FBQztNQUNqRDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFO0FBQzlFLE9BQU0sSUFBSSxTQUFTLEdBQUcsT0FBTyxHQUFHLG9CQUFvQjtBQUNwRCxXQUFVLFNBQVMsR0FBRyxLQUFLLENBQUMsTUFBTTtBQUNsQyxXQUFVLFNBQVMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ25DO0FBQ0EsT0FBTSxJQUFJLFNBQVMsSUFBSSxTQUFTLElBQUksRUFBRSxTQUFTLElBQUksU0FBUyxHQUFHLFNBQVMsQ0FBQyxFQUFFO1NBQ25FLE9BQU8sS0FBSyxDQUFDO1FBQ2Q7QUFDUDtPQUNNLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7T0FDbEMsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QyxPQUFNLElBQUksVUFBVSxJQUFJLFVBQVUsRUFBRTtTQUM1QixPQUFPLFVBQVUsSUFBSSxLQUFLLElBQUksVUFBVSxJQUFJLEtBQUssQ0FBQztRQUNuRDtBQUNQLE9BQU0sSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1dBQ1YsTUFBTSxHQUFHLElBQUk7V0FDYixJQUFJLEdBQUcsQ0FBQyxPQUFPLEdBQUcsc0JBQXNCLElBQUksSUFBSSxRQUFRLEdBQUdBLFdBQVMsQ0FBQztBQUMvRTtPQUNNLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO09BQ3hCLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzlCO0FBQ0E7QUFDQSxPQUFNLE9BQU8sRUFBRSxLQUFLLEdBQUcsU0FBUyxFQUFFO0FBQ2xDLFNBQVEsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztBQUNuQyxhQUFZLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEM7U0FDUSxJQUFJLFVBQVUsRUFBRTtXQUNkLElBQUksUUFBUSxHQUFHLFNBQVM7QUFDbEMsZUFBYyxVQUFVLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUM7QUFDeEUsZUFBYyxVQUFVLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztVQUNoRTtBQUNULFNBQVEsSUFBSSxRQUFRLEtBQUtBLFdBQVMsRUFBRTtXQUMxQixJQUFJLFFBQVEsRUFBRTtBQUN4QixhQUFZLFNBQVM7WUFDVjtXQUNELE1BQU0sR0FBRyxLQUFLLENBQUM7QUFDekIsV0FBVSxNQUFNO1VBQ1A7QUFDVDtTQUNRLElBQUksSUFBSSxFQUFFO1dBQ1IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxRQUFRLEVBQUUsUUFBUSxFQUFFO0FBQzdELGlCQUFnQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUM7QUFDN0Msc0JBQXFCLFFBQVEsS0FBSyxRQUFRLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFO0FBQzFHLG1CQUFrQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7a0JBQzVCO0FBQ2pCLGdCQUFlLENBQUMsRUFBRTthQUNOLE1BQU0sR0FBRyxLQUFLLENBQUM7QUFDM0IsYUFBWSxNQUFNO1lBQ1A7QUFDWCxVQUFTLE1BQU0sSUFBSTtlQUNMLFFBQVEsS0FBSyxRQUFRO2lCQUNuQixTQUFTLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQztBQUN6RSxjQUFhLEVBQUU7V0FDTCxNQUFNLEdBQUcsS0FBSyxDQUFDO0FBQ3pCLFdBQVUsTUFBTTtVQUNQO1FBQ0Y7QUFDUCxPQUFNLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3QixPQUFNLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztPQUN2QixPQUFPLE1BQU0sQ0FBQztNQUNmO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUU7QUFDbkYsT0FBTSxRQUFRLEdBQUc7QUFDakIsU0FBUSxLQUFLLFdBQVc7V0FDZCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVTtnQkFDckMsTUFBTSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUU7YUFDM0MsT0FBTyxLQUFLLENBQUM7WUFDZDtBQUNYLFdBQVUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDakMsV0FBVSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUMvQjtBQUNBLFNBQVEsS0FBSyxjQUFjO1dBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxVQUFVO0FBQ3BELGVBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTthQUM3RCxPQUFPLEtBQUssQ0FBQztZQUNkO1dBQ0QsT0FBTyxJQUFJLENBQUM7QUFDdEI7U0FDUSxLQUFLLE9BQU8sQ0FBQztTQUNiLEtBQUssT0FBTyxDQUFDO0FBQ3JCLFNBQVEsS0FBSyxTQUFTO0FBQ3RCO0FBQ0E7V0FDVSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3JDO0FBQ0EsU0FBUSxLQUFLLFFBQVE7QUFDckIsV0FBVSxPQUFPLE1BQU0sQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUM7QUFDOUU7U0FDUSxLQUFLLFNBQVMsQ0FBQztBQUN2QixTQUFRLEtBQUssU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQSxXQUFVLE9BQU8sTUFBTSxLQUFLLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztBQUN4QztBQUNBLFNBQVEsS0FBSyxNQUFNO0FBQ25CLFdBQVUsSUFBSSxPQUFPLEdBQUcsVUFBVSxDQUFDO0FBQ25DO0FBQ0EsU0FBUSxLQUFLLE1BQU07QUFDbkIsV0FBVSxJQUFJLFNBQVMsR0FBRyxPQUFPLEdBQUcsb0JBQW9CLENBQUM7QUFDekQsV0FBVSxPQUFPLEtBQUssT0FBTyxHQUFHLFVBQVUsQ0FBQyxDQUFDO0FBQzVDO1dBQ1UsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7YUFDM0MsT0FBTyxLQUFLLENBQUM7WUFDZDtBQUNYO1dBQ1UsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztXQUNoQyxJQUFJLE9BQU8sRUFBRTtBQUN2QixhQUFZLE9BQU8sT0FBTyxJQUFJLEtBQUssQ0FBQztZQUN6QjtXQUNELE9BQU8sSUFBSSxzQkFBc0IsQ0FBQztBQUM1QztBQUNBO1dBQ1UsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7V0FDekIsSUFBSSxNQUFNLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDM0csV0FBVSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7V0FDeEIsT0FBTyxNQUFNLENBQUM7QUFDeEI7QUFDQSxTQUFRLEtBQUssU0FBUztXQUNaLElBQUksYUFBYSxFQUFFO0FBQzdCLGFBQVksT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEU7UUFDSjtPQUNELE9BQU8sS0FBSyxDQUFDO01BQ2Q7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFlBQVksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRTtBQUNoRixPQUFNLElBQUksU0FBUyxHQUFHLE9BQU8sR0FBRyxvQkFBb0I7QUFDcEQsV0FBVSxRQUFRLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztBQUN2QyxXQUFVLFNBQVMsR0FBRyxRQUFRLENBQUMsTUFBTTtBQUNyQyxXQUFVLFFBQVEsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO0FBQ3RDLFdBQVUsU0FBUyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7QUFDdEM7QUFDQSxPQUFNLElBQUksU0FBUyxJQUFJLFNBQVMsSUFBSSxDQUFDLFNBQVMsRUFBRTtTQUN4QyxPQUFPLEtBQUssQ0FBQztRQUNkO0FBQ1AsT0FBTSxJQUFJLEtBQUssR0FBRyxTQUFTLENBQUM7T0FDdEIsT0FBTyxLQUFLLEVBQUUsRUFBRTtBQUN0QixTQUFRLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsQyxTQUFRLElBQUksRUFBRSxTQUFTLEdBQUcsR0FBRyxJQUFJLEtBQUssR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFO1dBQ2pFLE9BQU8sS0FBSyxDQUFDO1VBQ2Q7UUFDRjtBQUNQO09BQ00sSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztPQUNuQyxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hDLE9BQU0sSUFBSSxVQUFVLElBQUksVUFBVSxFQUFFO1NBQzVCLE9BQU8sVUFBVSxJQUFJLEtBQUssSUFBSSxVQUFVLElBQUksTUFBTSxDQUFDO1FBQ3BEO0FBQ1AsT0FBTSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUM7T0FDbEIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7T0FDekIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0I7QUFDQSxPQUFNLElBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQztBQUMvQixPQUFNLE9BQU8sRUFBRSxLQUFLLEdBQUcsU0FBUyxFQUFFO0FBQ2xDLFNBQVEsR0FBRyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5QixTQUFRLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDbEMsYUFBWSxRQUFRLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDO1NBQ1EsSUFBSSxVQUFVLEVBQUU7V0FDZCxJQUFJLFFBQVEsR0FBRyxTQUFTO0FBQ2xDLGVBQWMsVUFBVSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDO0FBQ3ZFLGVBQWMsVUFBVSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7VUFDL0Q7QUFDVDtBQUNBLFNBQVEsSUFBSSxFQUFFLFFBQVEsS0FBS0EsV0FBUztBQUNwQyxrQkFBaUIsUUFBUSxLQUFLLFFBQVEsSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQztBQUNuRyxpQkFBZ0IsUUFBUTtBQUN4QixjQUFhLEVBQUU7V0FDTCxNQUFNLEdBQUcsS0FBSyxDQUFDO0FBQ3pCLFdBQVUsTUFBTTtVQUNQO1NBQ0QsUUFBUSxLQUFLLFFBQVEsR0FBRyxHQUFHLElBQUksYUFBYSxDQUFDLENBQUM7UUFDL0M7QUFDUCxPQUFNLElBQUksTUFBTSxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQy9CLFNBQVEsSUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLFdBQVc7QUFDeEMsYUFBWSxPQUFPLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztBQUN4QztBQUNBO1NBQ1EsSUFBSSxPQUFPLElBQUksT0FBTztBQUM5QixjQUFhLGFBQWEsSUFBSSxNQUFNLElBQUksYUFBYSxJQUFJLEtBQUssQ0FBQzthQUNuRCxFQUFFLE9BQU8sT0FBTyxJQUFJLFVBQVUsSUFBSSxPQUFPLFlBQVksT0FBTztlQUMxRCxPQUFPLE9BQU8sSUFBSSxVQUFVLElBQUksT0FBTyxZQUFZLE9BQU8sQ0FBQyxFQUFFO1dBQ2pFLE1BQU0sR0FBRyxLQUFLLENBQUM7VUFDaEI7UUFDRjtBQUNQLE9BQU0sS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlCLE9BQU0sS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO09BQ3ZCLE9BQU8sTUFBTSxDQUFDO01BQ2Y7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFFBQVEsQ0FBQyxJQUFJLEVBQUU7QUFDNUIsT0FBTSxPQUFPLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFQSxXQUFTLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO01BQ25FO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxVQUFVLENBQUMsTUFBTSxFQUFFO09BQzFCLE9BQU8sY0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7TUFDakQ7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsWUFBWSxDQUFDLE1BQU0sRUFBRTtPQUM1QixPQUFPLGNBQWMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO01BQ3JEO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLElBQUksT0FBTyxHQUFHLENBQUMsT0FBTyxHQUFHLElBQUksR0FBRyxTQUFTLElBQUksRUFBRTtBQUNuRCxPQUFNLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQixNQUFLLENBQUM7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFdBQVcsQ0FBQyxJQUFJLEVBQUU7T0FDekIsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7QUFDbkMsV0FBVSxLQUFLLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztBQUNuQyxXQUFVLE1BQU0sR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUM3RTtPQUNNLE9BQU8sTUFBTSxFQUFFLEVBQUU7QUFDdkIsU0FBUSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ2hDLGFBQVksU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDMUIsSUFBSSxTQUFTLElBQUksSUFBSSxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUU7QUFDcEQsV0FBVSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7VUFDbEI7UUFDRjtPQUNELE9BQU8sTUFBTSxDQUFDO01BQ2Y7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFNBQVMsQ0FBQyxJQUFJLEVBQUU7QUFDN0IsT0FBTSxJQUFJLE1BQU0sR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQzlFLE9BQU0sT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDO01BQzNCO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxXQUFXLEdBQUc7T0FDckIsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUM7T0FDekMsTUFBTSxHQUFHLE1BQU0sS0FBSyxRQUFRLEdBQUcsWUFBWSxHQUFHLE1BQU0sQ0FBQztBQUMzRCxPQUFNLE9BQU8sU0FBUyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztNQUN2RTtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUNsQyxPQUFNLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7QUFDOUIsT0FBTSxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUM7V0FDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLFFBQVEsR0FBRyxRQUFRLEdBQUcsTUFBTSxDQUFDO1dBQ2hELElBQUksQ0FBQyxHQUFHLENBQUM7TUFDZDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsWUFBWSxDQUFDLE1BQU0sRUFBRTtBQUNsQyxPQUFNLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDL0IsV0FBVSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNqQztPQUNNLE9BQU8sTUFBTSxFQUFFLEVBQUU7QUFDdkIsU0FBUSxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ2hDLGFBQVksS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoQztBQUNBLFNBQVEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzFEO09BQ0QsT0FBTyxNQUFNLENBQUM7TUFDZjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxTQUFTLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtPQUM5QixJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO09BQ2xDLE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBR0EsV0FBUyxDQUFDO01BQ2hEO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFO09BQ3hCLElBQUksS0FBSyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQztBQUM1RCxXQUFVLEdBQUcsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDdEM7QUFDQSxPQUFNLElBQUk7QUFDVixTQUFRLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBR0EsV0FBUyxDQUFDO0FBQzFDLFNBQVEsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQzVCLFFBQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFO0FBQ3BCO09BQ00sSUFBSSxNQUFNLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO09BQzlDLElBQUksUUFBUSxFQUFFO1NBQ1osSUFBSSxLQUFLLEVBQUU7QUFDbkIsV0FBVSxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ3RDLFVBQVMsTUFBTTtBQUNmLFdBQVUsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7VUFDOUI7UUFDRjtPQUNELE9BQU8sTUFBTSxDQUFDO01BQ2Y7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksSUFBSSxVQUFVLEdBQUcsQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLEdBQUcsU0FBUyxNQUFNLEVBQUU7QUFDdEUsT0FBTSxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUU7U0FDbEIsT0FBTyxFQUFFLENBQUM7UUFDWDtBQUNQLE9BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztPQUN4QixPQUFPLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxTQUFTLE1BQU0sRUFBRTtTQUM1RCxPQUFPLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDekQsUUFBTyxDQUFDLENBQUM7QUFDVCxNQUFLLENBQUM7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksSUFBSSxZQUFZLEdBQUcsQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLEdBQUcsU0FBUyxNQUFNLEVBQUU7QUFDeEUsT0FBTSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7T0FDaEIsT0FBTyxNQUFNLEVBQUU7U0FDYixTQUFTLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzlDLFNBQVEsTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQjtPQUNELE9BQU8sTUFBTSxDQUFDO0FBQ3BCLE1BQUssQ0FBQztBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLElBQUksTUFBTSxHQUFHLFVBQVUsQ0FBQztBQUM1QjtBQUNBO0FBQ0EsS0FBSSxJQUFJLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVztVQUNuRSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDO1VBQ2pDLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksVUFBVSxDQUFDO1VBQ25ELEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUM7VUFDakMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxFQUFFO0FBQ3hELE9BQU0sTUFBTSxHQUFHLFNBQVMsS0FBSyxFQUFFO0FBQy9CLFNBQVEsSUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQzthQUMxQixJQUFJLEdBQUcsTUFBTSxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUMsV0FBVyxHQUFHQSxXQUFTO2FBQzFELFVBQVUsR0FBRyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwRDtTQUNRLElBQUksVUFBVSxFQUFFO0FBQ3hCLFdBQVUsUUFBUSxVQUFVO0FBQzVCLGFBQVksS0FBSyxrQkFBa0IsRUFBRSxPQUFPLFdBQVcsQ0FBQztBQUN4RCxhQUFZLEtBQUssYUFBYSxFQUFFLE9BQU8sTUFBTSxDQUFDO0FBQzlDLGFBQVksS0FBSyxpQkFBaUIsRUFBRSxPQUFPLFVBQVUsQ0FBQztBQUN0RCxhQUFZLEtBQUssYUFBYSxFQUFFLE9BQU8sTUFBTSxDQUFDO0FBQzlDLGFBQVksS0FBSyxpQkFBaUIsRUFBRSxPQUFPLFVBQVUsQ0FBQztZQUMzQztVQUNGO1NBQ0QsT0FBTyxNQUFNLENBQUM7QUFDdEIsUUFBTyxDQUFDO01BQ0g7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUU7QUFDN0MsT0FBTSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDcEIsV0FBVSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztBQUNyQztBQUNBLE9BQU0sT0FBTyxFQUFFLEtBQUssR0FBRyxNQUFNLEVBQUU7QUFDL0IsU0FBUSxJQUFJLElBQUksR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO0FBQ3BDLGFBQVksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDN0I7U0FDUSxRQUFRLElBQUksQ0FBQyxJQUFJO1dBQ2YsS0FBSyxNQUFNLE9BQU8sS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLE1BQU07V0FDdkMsS0FBSyxXQUFXLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLE1BQU07QUFDL0MsV0FBVSxLQUFLLE1BQU0sT0FBTyxHQUFHLEdBQUcsU0FBUyxDQUFDLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNO0FBQ3RFLFdBQVUsS0FBSyxXQUFXLEVBQUUsS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTTtVQUMvRDtRQUNGO09BQ0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO01BQ3ZDO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxjQUFjLENBQUMsTUFBTSxFQUFFO09BQzlCLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDOUMsT0FBTSxPQUFPLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztNQUNwRDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7T0FDdEMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDcEM7QUFDQSxPQUFNLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNwQixXQUFVLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTTtXQUNwQixNQUFNLEdBQUcsS0FBSyxDQUFDO0FBQ3pCO0FBQ0EsT0FBTSxPQUFPLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRTtTQUN2QixJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDckMsU0FBUSxJQUFJLEVBQUUsTUFBTSxHQUFHLE1BQU0sSUFBSSxJQUFJLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFO0FBQ2hFLFdBQVUsTUFBTTtVQUNQO0FBQ1QsU0FBUSxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCO0FBQ1AsT0FBTSxJQUFJLE1BQU0sSUFBSSxFQUFFLEtBQUssSUFBSSxNQUFNLEVBQUU7U0FDL0IsT0FBTyxNQUFNLENBQUM7UUFDZjtPQUNELE1BQU0sR0FBRyxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ2xELE9BQU0sT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQztVQUN4RCxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7TUFDNUM7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLGNBQWMsQ0FBQyxLQUFLLEVBQUU7QUFDbkMsT0FBTSxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTTtXQUNyQixNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2pEO0FBQ0E7QUFDQSxPQUFNLElBQUksTUFBTSxJQUFJLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsRUFBRTtBQUN4RixTQUFRLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztBQUNuQyxTQUFRLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUM1QjtPQUNELE9BQU8sTUFBTSxDQUFDO01BQ2Y7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLGVBQWUsQ0FBQyxNQUFNLEVBQUU7QUFDckMsT0FBTSxPQUFPLENBQUMsT0FBTyxNQUFNLENBQUMsV0FBVyxJQUFJLFVBQVUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7QUFDN0UsV0FBVSxVQUFVLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFDLFdBQVUsRUFBRSxDQUFDO01BQ1I7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLFNBQVMsY0FBYyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFO0FBQ2pELE9BQU0sSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztBQUNwQyxPQUFNLFFBQVEsR0FBRztBQUNqQixTQUFRLEtBQUssY0FBYztBQUMzQixXQUFVLE9BQU8sZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDMUM7U0FDUSxLQUFLLE9BQU8sQ0FBQztBQUNyQixTQUFRLEtBQUssT0FBTztBQUNwQixXQUFVLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNuQztBQUNBLFNBQVEsS0FBSyxXQUFXO0FBQ3hCLFdBQVUsT0FBTyxhQUFhLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQy9DO0FBQ0EsU0FBUSxLQUFLLFVBQVUsQ0FBQyxDQUFDLEtBQUssVUFBVSxDQUFDO1NBQ2pDLEtBQUssT0FBTyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQztBQUNuRCxTQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsS0FBSyxlQUFlLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLEtBQUssU0FBUztBQUMzRSxXQUFVLE9BQU8sZUFBZSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNqRDtBQUNBLFNBQVEsS0FBSyxNQUFNO1dBQ1QsT0FBTyxJQUFJLElBQUksQ0FBQztBQUMxQjtTQUNRLEtBQUssU0FBUyxDQUFDO0FBQ3ZCLFNBQVEsS0FBSyxTQUFTO0FBQ3RCLFdBQVUsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsQztBQUNBLFNBQVEsS0FBSyxTQUFTO0FBQ3RCLFdBQVUsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDckM7QUFDQSxTQUFRLEtBQUssTUFBTTtXQUNULE9BQU8sSUFBSSxJQUFJLENBQUM7QUFDMUI7QUFDQSxTQUFRLEtBQUssU0FBUztBQUN0QixXQUFVLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlCO01BQ0Y7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRTtBQUNoRCxPQUFNLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7T0FDNUIsSUFBSSxDQUFDLE1BQU0sRUFBRTtTQUNYLE9BQU8sTUFBTSxDQUFDO1FBQ2Y7QUFDUCxPQUFNLElBQUksU0FBUyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDakMsT0FBTSxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxFQUFFLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3pFLE9BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDdEQsT0FBTSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLHNCQUFzQixHQUFHLE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQztNQUNuRjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsYUFBYSxDQUFDLEtBQUssRUFBRTtPQUM1QixPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDO1NBQ3pDLENBQUMsRUFBRSxnQkFBZ0IsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztNQUM1RDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRTtBQUNwQyxPQUFNLElBQUksSUFBSSxHQUFHLE9BQU8sS0FBSyxDQUFDO09BQ3hCLE1BQU0sR0FBRyxNQUFNLElBQUksSUFBSSxHQUFHLGdCQUFnQixHQUFHLE1BQU0sQ0FBQztBQUMxRDtPQUNNLE9BQU8sQ0FBQyxDQUFDLE1BQU07VUFDWixJQUFJLElBQUksUUFBUTtZQUNkLElBQUksSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3JELGNBQWEsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQztNQUN4RDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7S0FDSSxTQUFTLGNBQWMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtBQUNsRCxPQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7U0FDckIsT0FBTyxLQUFLLENBQUM7UUFDZDtBQUNQLE9BQU0sSUFBSSxJQUFJLEdBQUcsT0FBTyxLQUFLLENBQUM7T0FDeEIsSUFBSSxJQUFJLElBQUksUUFBUTtBQUMxQixnQkFBZSxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ25FLGdCQUFlLElBQUksSUFBSSxRQUFRLElBQUksS0FBSyxJQUFJLE1BQU0sQ0FBQzthQUN2QztTQUNKLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqQztPQUNELE9BQU8sS0FBSyxDQUFDO01BQ2Q7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDbEMsT0FBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtTQUNsQixPQUFPLEtBQUssQ0FBQztRQUNkO0FBQ1AsT0FBTSxJQUFJLElBQUksR0FBRyxPQUFPLEtBQUssQ0FBQztPQUN4QixJQUFJLElBQUksSUFBSSxRQUFRLElBQUksSUFBSSxJQUFJLFFBQVEsSUFBSSxJQUFJLElBQUksU0FBUztXQUN6RCxLQUFLLElBQUksSUFBSSxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtTQUNwQyxPQUFPLElBQUksQ0FBQztRQUNiO0FBQ1AsT0FBTSxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztVQUMxRCxNQUFNLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztNQUMvQztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsU0FBUyxDQUFDLEtBQUssRUFBRTtBQUM5QixPQUFNLElBQUksSUFBSSxHQUFHLE9BQU8sS0FBSyxDQUFDO0FBQzlCLE9BQU0sT0FBTyxDQUFDLElBQUksSUFBSSxRQUFRLElBQUksSUFBSSxJQUFJLFFBQVEsSUFBSSxJQUFJLElBQUksUUFBUSxJQUFJLElBQUksSUFBSSxTQUFTO1lBQ2hGLEtBQUssS0FBSyxXQUFXO0FBQ2hDLFlBQVcsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDO01BQ3RCO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFVBQVUsQ0FBQyxJQUFJLEVBQUU7QUFDOUIsT0FBTSxJQUFJLFFBQVEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO0FBQ3RDLFdBQVUsS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNuQztBQUNBLE9BQU0sSUFBSSxPQUFPLEtBQUssSUFBSSxVQUFVLElBQUksRUFBRSxRQUFRLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1NBQ3RFLE9BQU8sS0FBSyxDQUFDO1FBQ2Q7QUFDUCxPQUFNLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRTtTQUNsQixPQUFPLElBQUksQ0FBQztRQUNiO0FBQ1AsT0FBTSxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7T0FDMUIsT0FBTyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDbkM7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFFBQVEsQ0FBQyxJQUFJLEVBQUU7T0FDdEIsT0FBTyxDQUFDLENBQUMsVUFBVSxLQUFLLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQztNQUM3QztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7S0FDSSxJQUFJLFVBQVUsR0FBRyxVQUFVLEdBQUcsVUFBVSxHQUFHLFNBQVMsQ0FBQztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFdBQVcsQ0FBQyxLQUFLLEVBQUU7QUFDaEMsT0FBTSxJQUFJLElBQUksR0FBRyxLQUFLLElBQUksS0FBSyxDQUFDLFdBQVc7QUFDM0MsV0FBVSxLQUFLLEdBQUcsQ0FBQyxPQUFPLElBQUksSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxXQUFXLENBQUM7QUFDL0U7QUFDQSxPQUFNLE9BQU8sS0FBSyxLQUFLLEtBQUssQ0FBQztNQUN4QjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUU7T0FDakMsT0FBTyxLQUFLLEtBQUssS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO01BQzVDO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsdUJBQXVCLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRTtPQUM5QyxPQUFPLFNBQVMsTUFBTSxFQUFFO0FBQzlCLFNBQVEsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO1dBQ2xCLE9BQU8sS0FBSyxDQUFDO1VBQ2Q7QUFDVCxTQUFRLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVE7QUFDdkMsWUFBVyxRQUFRLEtBQUtBLFdBQVMsS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5RCxRQUFPLENBQUM7TUFDSDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxhQUFhLENBQUMsSUFBSSxFQUFFO09BQzNCLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsU0FBUyxHQUFHLEVBQUU7QUFDL0MsU0FBUSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLEVBQUU7QUFDN0MsV0FBVSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7VUFDZjtTQUNELE9BQU8sR0FBRyxDQUFDO0FBQ25CLFFBQU8sQ0FBQyxDQUFDO0FBQ1Q7QUFDQSxPQUFNLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7T0FDekIsT0FBTyxNQUFNLENBQUM7TUFDZjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUU7QUFDckMsT0FBTSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzNCLFdBQVUsVUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDaEMsV0FBVSxVQUFVLEdBQUcsT0FBTyxHQUFHLFVBQVU7V0FDakMsUUFBUSxHQUFHLFVBQVUsSUFBSSxjQUFjLEdBQUcsa0JBQWtCLEdBQUcsYUFBYSxDQUFDLENBQUM7QUFDeEY7QUFDQSxPQUFNLElBQUksT0FBTztTQUNULENBQUMsQ0FBQyxVQUFVLElBQUksYUFBYSxNQUFNLE9BQU8sSUFBSSxlQUFlLENBQUM7VUFDN0QsQ0FBQyxVQUFVLElBQUksYUFBYSxNQUFNLE9BQU8sSUFBSSxlQUFlLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1VBQy9GLENBQUMsVUFBVSxLQUFLLGFBQWEsR0FBRyxlQUFlLENBQUMsTUFBTSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDO0FBQy9IO0FBQ0E7QUFDQSxPQUFNLElBQUksRUFBRSxRQUFRLElBQUksT0FBTyxDQUFDLEVBQUU7U0FDMUIsT0FBTyxJQUFJLENBQUM7UUFDYjtBQUNQO0FBQ0EsT0FBTSxJQUFJLFVBQVUsR0FBRyxjQUFjLEVBQUU7U0FDL0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1QjtTQUNRLFVBQVUsSUFBSSxPQUFPLEdBQUcsY0FBYyxHQUFHLENBQUMsR0FBRyxxQkFBcUIsQ0FBQztRQUNwRTtBQUNQO0FBQ0EsT0FBTSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7T0FDdEIsSUFBSSxLQUFLLEVBQUU7QUFDakIsU0FBUSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkIsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7U0FDckUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcs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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFO0FBQ3pDLE9BQU0sT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTTtBQUNuQyxXQUFVLFNBQVMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUM7QUFDM0QsV0FBVSxFQUFFLENBQUM7TUFDUjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLFNBQVMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUM1QyxPQUFNLElBQUksTUFBTSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7T0FDOUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtTQUNYLE9BQU8sRUFBRSxDQUFDO1FBQ1g7QUFDUCxPQUFNLElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxJQUFJLFFBQVEsSUFBSSxjQUFjLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRTtTQUM1RSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1NBQ1YsR0FBRyxHQUFHLE1BQU0sQ0FBQztRQUNkO09BQ0QsT0FBTyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7TUFDM0M7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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SyxFQUFFLEtBQUssQ0FBQztXQUN0QyxhQUFhLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7TUFDbEQ7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRTtBQUMzQixPQUFNLE9BQU8sQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxXQUFTLENBQUM7TUFDM0U7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDcEMsT0FBTSxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNO0FBQzlELFdBQVUsV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7QUFDcEMsV0FBVSxLQUFLLENBQUM7TUFDWDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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QUFTLE1BQU0sRUFBRTtBQUMxQyxPQUFNLE9BQU8sUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDdkUsTUFBSyxDQUFDLENBQUM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxTQUFTLE1BQU0sRUFBRTtBQUM1QyxPQUFNLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsQyxPQUFNLElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLEVBQUU7U0FDL0IsUUFBUSxHQUFHQSxXQUFTLENBQUM7UUFDdEI7T0FDRCxPQUFPLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLENBQUMsRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakcsTUFBSyxDQUFDLENBQUM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLFNBQVMsTUFBTSxFQUFFO0FBQzlDLE9BQU0sSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO09BQzlCLFVBQVUsR0FBRyxPQUFPLFVBQVUsSUFBSSxVQUFVLEdBQUcsVUFBVSxHQUFHQSxXQUFTLENBQUM7QUFDNUUsT0FBTSxPQUFPLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxJ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Q1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxLQUFLLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUU7T0FDM0MsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLFVBQVUsR0FBRyxTQUFTLENBQUM7T0FDeEQsSUFBSSxLQUFLLElBQUksY0FBYyxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUU7U0FDekQsU0FBUyxHQUFHQSxXQUFTLENBQUM7UUFDdkI7QUFDUCxPQUFNLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDcEQ7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsTUFBTSxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUU7T0FDckMsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLFdBQVcsR0FBRyxVQUFVLENBQUM7QUFDaEUsT0FBTSxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO01BQ3BEO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLElBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxJQUFJLFFBQVEsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsT0FBTyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUU7QUFDM0MsT0FBTSxPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO01BQ2xEO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFdBQVcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFO0FBQy9DLE9BQU0sT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztNQUN6RDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxZQUFZLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7QUFDdkQsT0FBTSxLQUFLLEdBQUcsS0FBSyxLQUFLQSxXQUFTLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6RCxPQUFNLE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7TUFDdEQ7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxPQUFPLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRTtPQUNyQyxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsU0FBUyxHQUFHLFFBQVEsQ0FBQztBQUM1RCxPQUFNLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDbkQ7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsWUFBWSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUU7T0FDMUMsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLGNBQWMsR0FBRyxhQUFhLENBQUM7QUFDdEUsT0FBTSxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFB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SyxJQUFJLFFBQVEsQ0FBQyxDQUFDO09BQ2pELE9BQU8sUUFBUSxDQUFDO01BQ2pCO0FBQ0w7QUFDQTtBQUNBLEtBQUksT0FBTyxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLE1BQU0sQ0FBQyxTQUFTLEVBQUU7QUFDL0IsT0FBTSxJQUFJLE9BQU8sU0FBUyxJQUFJLFVBQVUsRUFBRTtBQUMxQyxTQUFRLE1BQU0sSUFBSSxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdEM7QUFDUCxPQUFNLE9BQU8sV0FBVztBQUN4QixTQUFRLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQztTQUNyQixRQUFRLElBQUksQ0FBQyxNQUFNO1dBQ2pCLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9DLFdBQVUsS0FBSyxDQUFDLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1dBQzlDLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7V0FDdkQsS0FBSyxDQUFDLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7VUFDakU7U0FDRCxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDNUMsUUFBTyxDQUFDO01BQ0g7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxJQUFJLENBQUMsSUFBSSxFQUFFO0FBQ3hCLE9BQU0sT0FBTyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO01BQ3hCO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxTQUFTLElBQUksRUFBRSxVQUFVLEVBQUU7QUFDdkQsT0FBTSxVQUFVLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BFLFdBQVUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztBQUMzRCxXQUFVLFFBQVEsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDekU7QUFDQSxPQUFNLElBQUksV0FBVyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7QUFDMUMsT0FBTSxPQUFPLFFBQVEsQ0FBQyxTQUFTLElBQUksRUFBRTtBQUNyQyxTQUFRLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQzthQUNWLE1BQU0sR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztBQUN6RDtBQUNBLFNBQVEsT0FBTyxFQUFFLEtBQUss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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7QUFDakMsT0FBTSxJQUFJLE9BQU8sSUFBSSxJQUFJLFVBQVUsRUFBRTtBQUNyQyxTQUFRLE1BQU0sSUFBSSxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdEM7QUFDUCxPQUFNLEtBQUssR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLE9BQU0sT0FBTyxRQUFRLENBQUMsU0FBUyxJQUFJLEVBQUU7QUFDckMsU0FBUSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO2FBQ25CLFNBQVMsR0FBRyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNsRDtTQUNRLElBQUksS0FBSyxFQUFFO0FBQ25CLFdBQVUsU0FBUyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztVQUM3QjtTQUNELE9BQU8sS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDNUMsUUFBTyxDQUFDLENBQUM7TUFDSjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLFNBQVMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO09BQ3JDLElBQUksT0FBTyxHQUFHLElBQUk7V0FDZCxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQzFCO0FBQ0EsT0FBTSxJQUFJLE9BQU8sSUFBSSxJQUFJLFVBQVUsRUFBRTtBQUNyQyxTQUFRLE1BQU0sSUFBSSxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdEM7QUFDUCxPQUFNLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQzdCLFNBQVEsT0FBTyxHQUFHLFNBQVMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQ3JFLFNBQVEsUUFBUSxHQUFHLFVBQVUsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ2xFO0FBQ1AsT0FBTSxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1NBQzFCLFNBQVMsRUFBRSxPQUFPO1NBQ2xCLFNBQVMsRUFBRSxJQUFJO1NBQ2YsVUFBVSxFQUFFLFFBQVE7QUFDNUIsUUFBTyxDQUFDLENBQUM7TUFDSjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLEtBQUssQ0FBQyxJQUFJLEVBQUU7QUFDekIsT0FBTSxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7TUFDckI7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFO09BQzVCLE9BQU8sT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztNQUM5QztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLFNBQVMsU0FBUyxHQUFHO0FBQ3pCLE9BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUU7U0FDckIsT0FBTyxFQUFFLENBQUM7UUFDWDtBQUNQLE9BQU0sSUFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO09BQ3pCLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO01BQ3pDO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUU7QUFDMUIsT0FBTSxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztNQUM3QztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsU0FBUyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUU7T0FDcEMsVUFBVSxHQUFHLE9BQU8sVUFBVSxJQUFJLFVBQVUsR0FBRyxVQUFVLEdBQUdBLFdBQVMsQ0FBQztPQUN0RSxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxDQUFDLENBQUM7TUFDekQ7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFO09BQ3hCLE9BQU8sU0FBUyxDQUFDLEtBQUssRUFBRSxlQUFlLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztNQUMvRDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUU7T0FDeEMsVUFBVSxHQUFHLE9BQU8sVUFBVSxJQUFJLFVBQVUsR0FBRyxVQUFVLEdBQUdBLFdBQVMsQ0FBQztPQUN0RSxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsZUFBZSxHQUFHLGtCQUFrQixFQUFFLFVBQVUsQ0FBQyxDQUFDO01BQzNFO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDeEMsT0FBTSxPQUFPLE1BQU0sSUFBSSxJQUFJLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7TUFDdkU7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDOUIsT0FBTSxPQUFPLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssSUFBSSxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUM7TUFDaEU7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLElBQUksRUFBRSxHQUFHLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLElBQUksR0FBRyxHQUFHLHlCQUF5QixDQUFDLFNBQVMsS0FBSyxFQUFFLEtBQUssRUFBRTtBQUMvRCxPQUFNLE9BQU8sS0FBSyxJQUFJLEtBQUssQ0FBQztBQUM1QixNQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxJQUFJLFdBQVcsR0FBRyxlQUFlLENBQUMsV0FBVyxFQUFFLE9BQU8sU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsZUFBZSxHQUFHLFNBQVMsS0FBSyxFQUFFO0FBQzlHLE9BQU0sT0FBTyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksY0FBYyxDQUFD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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUU7QUFDOUIsT0FBTSxPQUFPLE9BQU8sS0FBSyxJQUFJLFFBQVEsSUFBSSxLQUFLLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO01BQzlEO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUU7QUFDN0IsT0FBTSxPQUFPLE9BQU8sS0FBSyxJQUFJLFFBQVE7QUFDckMsU0FBUSxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLGdCQUFnQixDQUFDO01BQzdEO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFO0FBQzdCLE9BQU0sSUFBSSxJQUFJLEdBQUcsT0FBTyxLQUFLLENBQUM7QUFDOUIsT0FBTSxPQUFPLEtBQUssSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLFFBQVEsSUFBSSxJQUFJLElBQUksVUFBVSxDQUFDLENBQUM7TUFDbEU7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxZQUFZLENBQUMsS0FBSyxFQUFFO09BQzNCLE9BQU8sS0FBSyxJQUFJLElBQUksSUFBSSxPQUFPLEtBQUssSUFBSSxRQUFRLENBQUM7TUFDbEQ7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7S0FDSSxJQUFJLEtBQUssR0FBRyxTQUFTLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3JDLE9BQU0sT0FBTyxNQUFNLEtBQUssTUFBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO01BQy9FO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUU7T0FDL0MsVUFBVSxHQUFHLE9BQU8sVUFBVSxJQUFJLFVBQVUsR0FBRyxVQUFVLEdBQUdBLFdBQVMsQ0FBQztBQUM1RSxPQUFNLE9BQU8sV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO01BQ3RFO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFO0FBQzFCO0FBQ0E7QUFDQTtPQUNNLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQztNQUMzQztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFO0FBQzdCLE9BQU0sSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDN0IsU0FBUSxNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2xDO0FBQ1AsT0FBTSxPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztNQUM1QjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxNQUFNLENBQUMsS0FBSyxFQUFFO0FBQzNCLE9BQU0sT0FBTyxLQUFLLEtBQUssSUFBSSxDQUFDO01BQ3ZCO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUU7QUFDMUIsT0FBTSxPQUFPLEtBQUssSUFBSSxJQUFJLENBQUM7TUFDdEI7QUFDTDtB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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksSUFBSSxRQUFRLEdBQUcsY0FBYyxDQUFDLFNBQVMsTUFBTSxFQUFFLE1BQU0sRUFBRTtPQUNyRCxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNqRCxNQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksSUFBSSxZQUFZLEdBQUcsY0FBYyxDQUFDLFNBQVMsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFO0FBQ3JGLE9BQU0sVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzdELE1BQUssQ0FBQyxDQUFDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksSUFBSSxVQUFVLEdBQUcsY0FBYyxDQUFDLFNBQVMsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFO0FBQ25GLE9BQU0sVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzNELE1BQUssQ0FBQyxDQUFDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxNQUFNLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRTtBQUMzQyxPQUFNLElBQUksTUFBTSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6QyxPQUFNLE9BQU8sVUFBVSxJQUFJLElBQUksR0FBRyxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztNQUNyRTtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksSUFBSSxRQUFRLEdBQUcsUUFBUSxDQUFDLFNBQVMsTUFBTSxFQUFFLE9BQU8sRUFBRTtBQUN0RCxPQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUI7QUFDQSxPQUFNLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3JCLE9BQU0sSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztBQUNsQyxPQUFNLElBQUksS0FBSyxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxXQUFTLENBQUM7QUFDdEQ7QUFDQSxPQUFNLElBQUksS0FBSyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFO1NBQzFELE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDWjtBQUNQO0FBQ0EsT0FBTSxPQUFPLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRTtBQUMvQixTQUFRLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwQyxTQUFRLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNuQyxTQUFRLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzVCLFNBQVEsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUN2QztBQUNBLFNBQVEsT0FBTyxFQUFFLFVBQVUsR0FBRyxXQUFXLEVBQUU7QUFDM0MsV0FBVSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDdEMsV0FBVSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEM7V0FDVSxJQUFJLEtBQUssS0FBS0EsV0FBUztnQkFDbEIsRUFBRSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUU7YUFDdEUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQjtVQUNGO1FBQ0Y7QUFDUDtPQUNNLE9BQU8sTUFBTSxDQUFDO0FBQ3BCLE1BQUssQ0FBQyxDQUFDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksSUFBSSxZQUFZLEdBQUcsUUFBUSxDQUFDLFNBQVMsSUFBSSxFQUFFO09BQ3pDLElBQUksQ0FBQyxJQUFJLENBQUNBLFdBQVMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO09BQzFDLE9BQU8sS0FBSyxDQUFDLFNBQVMsRUFBRUEsV0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQy9DLE1BQUssQ0FBQyxDQUFDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFO0FBQ3hDLE9BQU0sT0FBTyxXQUFXLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7TUFDbkU7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsV0FBVyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUU7QUFDNUMsT0FBTSxPQUFPLFdBQVcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQztNQUN4RTtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUU7T0FDL0IsT0FBTyxNQUFNLElBQUksSUFBSTtBQUMzQixXQUFVLE1BQU07QUFDaEIsV0FBVSxPQUFPLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7TUFDdkQ7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsVUFBVSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUU7T0FDcEMsT0FBTyxNQUFNLElBQUksSUFBSTtBQUMzQixXQUFVLE1BQU07QUFDaEIsV0FBVSxZQUFZLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7TUFDNUQ7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLE1BQU0sQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFO0FBQ3RDLE9BQU0sT0FBTyxNQUFNLElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDL0Q7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsV0FBVyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUU7QUFDM0MsT0FBTSxPQUFPLE1BQU0sSUFBSSxlQUFlLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztNQUNwRTtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxTQUFTLENBQUMsTUFBTSxFQUFFO0FBQy9CLE9BQU0sT0FBTyxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO01BQ2xFO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUU7QUFDakMsT0FBTSxPQUFPLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7TUFDcEU7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUU7QUFDN0MsT0FBTSxJQUFJLE1BQU0sR0FBRyxNQUFNLElBQUksSUFBSSxHQUFHQSxXQUFTLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztPQUNoRSxPQUFPLE1BQU0sS0FBS0EsV0FBUyxHQUFHLFlBQVksR0FBRyxNQUFNLENBQUM7TUFDckQ7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtBQUMvQixPQUFNLE9BQU8sTUFBTSxJQUFJLElBQUksSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztNQUN6RDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtBQUNqQyxPQUFNLE9BQU8sTUFBTSxJQUFJLElBQUksSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztNQUMzRDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksSUFBSSxNQUFNLEdBQUcsY0FBYyxDQUFDLFNBQVMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7T0FDdkQsSUFBSSxLQUFLLElBQUksSUFBSTtBQUN2QixXQUFVLE9BQU8sS0FBSyxDQUFDLFFBQVEsSUFBSSxVQUFVLEVBQUU7U0FDdkMsS0FBSyxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQztBQUNQO0FBQ0EsT0FBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQzFCLE1BQUssRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7S0FDSSxJQUFJLFFBQVEsR0FBRyxjQUFjLENBQUMsU0FBUyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtPQUN6RCxJQUFJLEtBQUssSUFBSSxJQUFJO0FBQ3ZCLFdBQVUsT0FBTyxLQUFLLENBQUMsUUFBUSxJQUFJLFVBQVUsRUFBRTtTQUN2QyxLQUFLLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDO0FBQ1A7T0FDTSxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFO1NBQ3RDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEMsUUFBTyxNQUFNO1NBQ0wsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkI7TUFDRixFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQzFCLE9BQU0sT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztNQUN2RTtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQzVCLE9BQU0sT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7TUFDL0U7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxPQUFPLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRTtBQUN2QyxPQUFNLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztPQUNoQixRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMxQztPQUNNLFVBQVUsQ0FBQyxNQUFNLEVBQUUsU0FBUyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRTtBQUN0RCxTQUFRLGVBQWUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLENB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QyxDQUFDLENBQUM7TUFDbEY7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLFNBQVMsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRTtPQUNyRCxVQUFVLEdBQUcsT0FBTyxVQUFVLElBQUksVUFBVSxHQUFHLFVBQVUsR0FBR0EsV0FBUyxDQUFDO09BQ3RFLE9BQU8sTUFBTSxJQUFJLElBQUksR0FBRyxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO01BQzlGO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLE1BQU0sQ0FBQyxNQUFNLEVBQUU7QUFDNUIsT0FBTSxPQUFPLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7TUFDL0Q7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxRQUFRLENBQUMsTUFBTSxFQUFFO0FBQzlCLE9BQU0sT0FBTyxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO01BQ2pFO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7S0FDSSxTQUFTLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtBQUN6QyxPQUFNLElBQUksS0FBSyxLQUFLQSxXQUFTLEVBQUU7U0FDdkIsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUNkLEtBQUssR0FBR0EsV0FBUyxDQUFDO1FBQ25CO0FBQ1AsT0FBTSxJQUFJLEtBQUssS0FBS0EsV0FBUyxFQUFFO0FBQy9CLFNBQVEsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN4QixLQUFLLEdBQUcsS0FBSyxLQUFLLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDO0FBQ1AsT0FBTSxJQUFJLEtBQUssS0FBS0EsV0FBUyxFQUFFO0FBQy9CLFNBQVEsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN4QixLQUFLLEdBQUcsS0FBSyxLQUFLLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDO0FBQ1AsT0FBTSxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO01BQ2xEO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7QUFDekMsT0FBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlCLE9BQU0sSUFBSSxHQUFHLEtBQUtBLFdBQVMsRUFBRTtTQUNyQixHQUFHLEdBQUcsS0FBSyxDQUFDO1NBQ1osS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNsQixRQUFPLE1BQU07QUFDYixTQUFRLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckI7QUFDUCxPQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7T0FDMUIsT0FBTyxXQUFXLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztNQUN4QztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7S0FDSSxTQUFTLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtBQUM1QyxPQUFNLElBQUksUUFBUSxJQUFJLE9BQU8sUUFBUSxJQUFJLFNBQVMsSUFBSSxjQUFjLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsRUFBRTtBQUM5RixTQUFRLEtBQUssR0FBRyxRQUFRLEdBQUdBLFdBQVMsQ0FBQztRQUM5QjtBQUNQLE9BQU0sSUFBSSxRQUFRLEtBQUtBLFdBQVMsRUFBRTtBQUNsQyxTQUFRLElBQUksT0FBTyxLQUFLLElBQUksU0FBUyxFQUFFO1dBQzdCLFFBQVEsR0FBRyxLQUFLLENBQUM7V0FDakIsS0FBSyxHQUFHQSxXQUFTLENBQUM7VUFDbkI7QUFDVCxjQUFhLElBQUksT0FBTyxLQUFLLElBQUksU0FBUyxFQUFFO1dBQ2xDLFFBQVEsR0FBRyxLQUFLLENBQUM7V0FDakIsS0FBSyxHQUFHQSxXQUFTLENBQUM7VUFDbkI7UUFDRjtPQUNELElBQUksS0FBSyxLQUFLQSxXQUFTLElBQUksS0FBSyxLQUFLQSxXQUFTLEVBQUU7U0FDOUMsS0FBSyxHQUFHLENBQUMsQ0FBQztTQUNWLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDWDtZQUNJO0FBQ1gsU0FBUSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hDLFNBQVEsSUFBSSxLQUFLLEtBQUtBLFdBQVMsRUFBRTtXQUN2QixLQUFLLEdBQUcsS0FBSyxDQUFDO1dBQ2QsS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNwQixVQUFTLE1BQU07QUFDZixXQUFVLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7VUFDekI7UUFDRjtBQUNQLE9BQU0sSUFBSSxLQUFLLEdBQUcsS0FBSyxFQUFFO0FBQ3pCLFNBQVEsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDO1NBQ2pCLEtBQUssR0FBRyxLQUFLLENBQUM7U0FDZCxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2Q7T0FDRCxJQUFJLFFBQVEsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7QUFDOUMsU0FBUSxJQUFJLElBQUksR0FBRyxZQUFZLEVBQUUsQ0FBQztBQUNsQyxTQUFRLE9BQU8sU0FBUyxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxHQUFHLEtBQUssR0FBRyxjQUFjLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUc7QUFDUCxPQUFNLE9BQU8sVUFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztNQUNqQztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7S0FDSSxJQUFJLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO0FBQ25FLE9BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUNoQyxPQUFNLE9BQU8sTUFBTSxJQUFJLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDeEQsTUFBSyxDQUFDLENBQUM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxVQUFVLENBQUMsTUFBTSxFQUFFO09BQzFCLE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO01BQ25EO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsTUFBTSxDQUFDLE1BQU0sRUFBRTtBQUM1QixPQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDaEMsT0FBTSxPQUFPLE1BQU0sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO01BQ2pGO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUU7QUFDaEQsT0FBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2hDLE9BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNwQztBQUNBLE9BQU0sSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNqQyxPQUFNLFFBQVEsR0FBRyxRQUFRLEtBQUtBLFdBQVM7QUFDdkMsV0FBVSxNQUFNO1dBQ04sU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDcEQ7QUFDQSxPQUFNLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQztBQUN6QixPQUFNLFFBQVEsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ2hDLE9BQU0sT0FBTyxRQUFRLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQztNQUMvRDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsTUFBTSxDQUFDLE1BQU0sRUFBRTtBQUM1QixPQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7T0FDMUIsT0FBTyxDQUFDLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQ3ZELFdBQVUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsY0FBYyxDQUFDO0FBQ3pELFdBQVUsTUFBTSxDQUFDO01BQ1o7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxZQUFZLENBQUMsTUFBTSxFQUFFO0FBQ2xDLE9BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztPQUMxQixPQUFPLENBQUMsTUFBTSxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQ3BELFdBQVUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDO0FBQzlDLFdBQVUsTUFBTSxDQUFDO01BQ1o7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLElBQUksU0FBUyxHQUFHLGdCQUFnQixDQUFDLFNBQVMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7QUFDbkUsT0FBTSxPQUFPLE1BQU0sSUFBSSxLQUFLLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUM5RCxNQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLElBQUksU0FBUyxHQUFHLGdCQUFnQixDQUFDLFNBQVMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7QUFDbkUsT0FBTSxPQUFPLE1BQU0sSUFBSSxLQUFLLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUM5RCxNQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksSUFBSSxVQUFVLEdBQUcsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLFNBQVMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO0FBQ3hDLE9BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNoQyxPQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDakM7T0FDTSxJQUFJLFNBQVMsR0FBRyxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0RCxPQUFNLElBQUksQ0FBQyxNQUFNLElBQUksU0FBUyxJQUFJLE1BQU0sRUFBRTtTQUNsQyxPQUFPLE1BQU0sQ0FBQztRQUNmO09BQ0QsSUFBSSxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsU0FBUyxJQUFJLENBQUMsQ0FBQztPQUNuQztTQUNFLGFBQWEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDO0FBQzlDLFNBQVEsTUFBTTtTQUNOLGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDO1NBQ3JDO01BQ0g7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7S0FDSSxTQUFTLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtBQUMzQyxPQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDaEMsT0FBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2pDO09BQ00sSUFBSSxTQUFTLEdBQUcsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEQsT0FBTSxPQUFPLENBQUMsTUFBTSxJQUFJLFNBQVMsR0FBRyxNQUFNO1lBQy9CLE1BQU0sR0FBRyxhQUFhLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFBRSxLQUFLLENBQUM7QUFDNUQsV0FBVSxNQUFNLENBQUM7TUFDWjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLFNBQVMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO0FBQzdDLE9BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNoQyxPQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDakM7T0FDTSxJQUFJLFNBQVMsR0FBRyxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0RCxPQUFNLE9BQU8sQ0FBQyxNQUFNLElBQUksU0FBUyxHQUFHLE1BQU07WUFDL0IsYUFBYSxDQUFDLE1BQU0sR0FBRyxTQUFTLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTTtBQUM1RCxXQUFVLE1BQU0sQ0FBQztNQUNaO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7S0FDSSxTQUFTLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtBQUM1QyxPQUFNLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUU7U0FDMUIsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNYLE1BQU0sSUFBSSxLQUFLLEVBQUU7QUFDeEIsU0FBUSxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDaEI7QUFDUCxPQUFNLE9BQU8sY0FBYyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztNQUM5RTtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7S0FDSSxTQUFTLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRTtBQUN0QyxPQUFNLEtBQUssS0FBSyxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBS0EsV0FBUyxHQUFHO1NBQ2hFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZCxRQUFPLE1BQU07QUFDYixTQUFRLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEI7T0FDRCxPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7TUFDeEM7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxPQUFPLEdBQUc7T0FDakIsSUFBSSxJQUFJLEdBQUcsU0FBUztXQUNoQixNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JDO09BQ00sT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDcEU7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLElBQUksU0FBUyxHQUFHLGdCQUFnQixDQUFDLFNBQVMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7QUFDbkUsT0FBTSxPQUFPLE1BQU0sSUFBSSxLQUFLLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUM5RCxNQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7S0FDSSxTQUFTLEtBQUssQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRTtBQUM3QyxPQUFNLElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxJQUFJLFFBQVEsSUFBSSxjQUFjLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRTtBQUN6RixTQUFRLFNBQVMsR0FBRyxLQUFLLEdBQUdBLFdBQVMsQ0FBQztRQUMvQjtPQUNELEtBQUssR0FBRyxLQUFLLEtBQUtBLFdBQVMsR0FBRyxnQkFBZ0IsR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDO09BQzdELElBQUksQ0FBQyxLQUFLLEVBQUU7U0FDVixPQUFPLEVBQUUsQ0FBQztRQUNYO0FBQ1AsT0FBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2hDLE9BQU0sSUFBSSxNQUFNO2FBQ0osT0FBTyxTQUFTLElBQUksUUFBUTtjQUMzQixTQUFTLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3ZELFlBQVcsRUFBRTtBQUNiLFNBQVEsU0FBUyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNwQyxJQUFJLENBQUMsU0FBUyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUM5QyxXQUFVLE9BQU8sU0FBUyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7VUFDbkQ7UUFDRjtPQUNELE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7TUFDdkM7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLElBQUksU0FBUyxHQUFHLGdCQUFnQixDQUFDLFNBQVMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7QUFDbkUsT0FBTSxPQUFPLE1BQU0sSUFBSSxLQUFLLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1RCxNQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLFNBQVMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFO0FBQ2xELE9BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNoQyxPQUFNLFFBQVEsR0FBRyxRQUFRLElBQUksSUFBSTtBQUNqQyxXQUFVLENBQUM7QUFDWCxXQUFVLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMzRDtBQUNBLE9BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNwQyxPQUFNLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUM7TUFDbkU7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7S0FDSSxTQUFTLFFBQVEsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRTtBQUM5QztBQUNBO0FBQ0E7QUFDQSxPQUFNLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztBQUM3QztPQUNNLElBQUksS0FBSyxJQUFJLGNBQWMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFO1NBQ25ELE9BQU8sR0FBR0EsV0FBUyxDQUFDO1FBQ3JCO0FBQ1AsT0FBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2hDLE9BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0FBQzVFO0FBQ0EsT0FBTSxJQUFJLE9BQU8sR0FBRyxZQUFZLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxzQkFBc0IsQ0FBQztBQUMvRixXQUFVLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1dBQzNCLGFBQWEsR0FBRyxVQUFVLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQzNEO0FBQ0EsT0FBTSxJQUFJLFVBQVU7QUFDcEIsV0FBVSxZQUFZO1dBQ1osS0FBSyxHQUFHLENBQUM7QUFDbkIsV0FBVSxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSxTQUFTO1dBQzlDLE1BQU0sR0FBRyxVQUFVLENBQUM7QUFDOUI7QUFDQTtPQUNNLElBQUksWUFBWSxHQUFHLE1BQU07U0FDdkIsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRSxNQUFNLEdBQUcsR0FBRztBQUNsRCxTQUFRLFdBQVcsQ0FBQyxNQUFNLEdBQUcsR0FBRztTQUN4QixDQUFDLFdBQVcsS0FBSyxhQUFhLEdBQUcsWUFBWSxHQUFHLFNBQVMsRUFBRSxNQUFNLEdBQUcsR0FBRztTQUN2RSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksU0FBUyxFQUFFLE1BQU0sR0FBRyxJQUFJO1NBQzdDLEdBQUcsQ0FBQyxDQUFDO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtPQUNNLElBQUksU0FBUyxHQUFHLGdCQUFnQjtBQUN0QyxVQUFTLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQztBQUNsRCxhQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxFQUFFLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDeEQsY0FBYSx5QkFBeUIsSUFBSSxFQUFFLGVBQWUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztVQUMxRCxHQUFHLElBQUksQ0FBQztBQUNqQjtBQUNBLE9BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsU0FBUyxLQUFLLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFO0FBQzFILFNBQVEsZ0JBQWdCLEtBQUssZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLENBQUM7QUFDakU7QUFDQTtBQUNBLFNBQVEsTUFBTSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0FBQzNGO0FBQ0E7U0FDUSxJQUFJLFdBQVcsRUFBRTtXQUNmLFVBQVUsR0FBRyxJQUFJLENBQUM7QUFDNUIsV0FBVSxNQUFNLElBQUksV0FBVyxHQUFHLFdBQVcsR0FBRyxRQUFRLENBQUM7VUFDaEQ7U0FDRCxJQUFJLGFBQWEsRUFBRTtXQUNqQixZQUFZLEdBQUcsSUFBSSxDQUFDO0FBQzlCLFdBQVUsTUFBTSxJQUFJLE1BQU0sR0FBRyxhQUFhLEdBQUcsYUFBYSxDQUFDO1VBQ2xEO1NBQ0QsSUFBSSxnQkFBZ0IsRUFBRTtBQUM5QixXQUFVLE1BQU0sSUFBSSxnQkFBZ0IsR0FBRyxnQkFBZ0IsR0FBRyw2QkFBNkIsQ0FBQztVQUMvRTtBQUNULFNBQVEsS0FBSyxHQUFHLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ3RDO0FBQ0E7QUFDQTtTQUNRLE9BQU8sS0FBSyxDQUFDO0FBQ3JCLFFBQU8sQ0FBQyxDQUFDO0FBQ1Q7T0FDTSxNQUFNLElBQUksTUFBTSxDQUFDO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLE9BQU0sSUFBSSxRQUFRLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQztPQUM1RSxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ3JCLFNBQVEsTUFBTSxHQUFHLGdCQUFnQixHQUFHLE1BQU0sR0FBRyxPQUFPLENBQUM7UUFDOUM7QUFDUDtBQUNBO0FBQ0EsWUFBVyxJQUFJLDBCQUEwQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUMxRCxTQUFRLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUMvQztBQUNQO0FBQ0E7QUFDQSxPQUFNLE1BQU0sR0FBRyxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQyxHQUFHLE1BQU07QUFDaEYsVUFBUyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDO0FBQzNDLFVBQVMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9DO0FBQ0E7T0FDTSxNQUFNLEdBQUcsV0FBVyxJQUFJLFFBQVEsSUFBSSxLQUFLLENBQUMsR0FBRyxPQUFPO0FBQzFELFVBQVMsUUFBUTtBQUNqQixhQUFZLEVBQUU7QUFDZCxhQUFZLHNCQUFzQjtVQUN6QjtBQUNULFNBQVEsbUJBQW1CO0FBQzNCLFVBQVMsVUFBVTtBQUNuQixjQUFhLGtCQUFrQjtBQUMvQixjQUFhLEVBQUU7VUFDTjtBQUNULFVBQVMsWUFBWTtBQUNyQixhQUFZLGlDQUFpQztBQUM3QyxhQUFZLHVEQUF1RDtBQUNuRSxhQUFZLEtBQUs7VUFDUjtBQUNULFNBQVEsTUFBTTtBQUNkLFNBQVEsZUFBZSxDQUFDO0FBQ3hCO0FBQ0EsT0FBTSxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsV0FBVztTQUM5QixPQUFPLFFBQVEsQ0FBQyxXQUFXLEVBQUUsU0FBUyxHQUFHLFNBQVMsR0FBRyxNQUFNLENBQUM7QUFDcEUsWUFBVyxLQUFLLENBQUNBLFdBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQztBQUMzQyxRQUFPLENBQUMsQ0FBQztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU0sTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDN0IsT0FBTSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtTQUNuQixNQUFNLE1BQU0sQ0FBQztRQUNkO09BQ0QsT0FBTyxNQUFNLENBQUM7TUFDZjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7T0FDdEIsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7TUFDdEM7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxPQUFPLENBQUMsS0FBSyxFQUFFO09BQ3RCLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO01BQ3RDO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLFNBQVMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO0FBQ3hDLE9BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztPQUMxQixJQUFJLE1BQU0sS0FBSyxLQUFLLElBQUksS0FBSyxLQUFLQSxXQUFTLENBQUMsRUFBRTtBQUNwRCxTQUFRLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pCO0FBQ1AsT0FBTSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1NBQzdDLE9BQU8sTUFBTSxDQUFDO1FBQ2Y7QUFDUCxPQUFNLElBQUksVUFBVSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7QUFDNUMsV0FBVSxVQUFVLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQztBQUMzQyxXQUFVLEtBQUssR0FBRyxlQUFlLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQztXQUMvQyxHQUFHLEdBQUcsYUFBYSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUQ7QUFDQSxPQUFNLE9BQU8sU0FBUyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO01BQ25EO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLFNBQVMsT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO0FBQzNDLE9BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztPQUMxQixJQUFJLE1BQU0sS0FBSyxLQUFLLElBQUksS0FBSyxLQUFLQSxXQUFTLENBQUMsRUFBRTtBQUNwRCxTQUFRLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JEO0FBQ1AsT0FBTSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1NBQzdDLE9BQU8sTUFBTSxDQUFDO1FBQ2Y7QUFDUCxPQUFNLElBQUksVUFBVSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7QUFDNUMsV0FBVSxHQUFHLEdBQUcsYUFBYSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEU7QUFDQSxPQUFNLE9BQU8sU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO01BQy9DO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLFNBQVMsU0FBUyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO0FBQzdDLE9BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztPQUMxQixJQUFJLE1BQU0sS0FBSyxLQUFLLElBQUksS0FBSyxLQUFLQSxXQUFTLENBQUMsRUFBRTtTQUM1QyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDO0FBQ1AsT0FBTSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1NBQzdDLE9BQU8sTUFBTSxDQUFDO1FBQ2Y7QUFDUCxPQUFNLElBQUksVUFBVSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7V0FDbEMsS0FBSyxHQUFHLGVBQWUsQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDcEU7QUFDQSxPQUFNLE9BQU8sU0FBUyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7TUFDOUM7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFFBQVEsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFO09BQ2pDLElBQUksTUFBTSxHQUFHLG9CQUFvQjtXQUM3QixRQUFRLEdBQUcsc0JBQXNCLENBQUM7QUFDNUM7QUFDQSxPQUFNLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQzdCLFNBQVEsSUFBSSxTQUFTLEdBQUcsV0FBVyxJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztBQUMvRSxTQUFRLE1BQU0sR0FBRyxRQUFRLElBQUksT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQzFFLFNBQVEsUUFBUSxHQUFHLFVBQVUsSUFBSSxPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDOUU7QUFDUCxPQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDaEM7QUFDQSxPQUFNLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDcEMsT0FBTSxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUM5QixTQUFRLElBQUksVUFBVSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMvQyxTQUFRLFNBQVMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQy9CO0FBQ1AsT0FBTSxJQUFJLE1BQU0sSUFBSSxTQUFTLEVBQUU7U0FDdkIsT0FBTyxNQUFNLENBQUM7UUFDZjtPQUNELElBQUksR0FBRyxHQUFHLE1BQU0sR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDOUMsT0FBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUU7U0FDWCxPQUFPLFFBQVEsQ0FBQztRQUNqQjtPQUNELElBQUksTUFBTSxHQUFHLFVBQVU7QUFDN0IsV0FBVSxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1dBQ3RDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQy9CO0FBQ0EsT0FBTSxJQUFJLFNBQVMsS0FBS0EsV0FBUyxFQUFFO0FBQ25DLFNBQVEsT0FBTyxNQUFNLEdBQUcsUUFBUSxDQUFDO1FBQzFCO09BQ0QsSUFBSSxVQUFVLEVBQUU7U0FDZCxHQUFHLEtBQUssTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQztRQUM5QjtBQUNQLE9BQU0sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUU7QUFDL0IsU0FBUSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFO0FBQ2pELFdBQVUsSUFBSSxLQUFLO2VBQ0wsU0FBUyxHQUFHLE1BQU0sQ0FBQztBQUNqQztBQUNBLFdBQVUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUU7YUFDckIsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDL0U7QUFDWCxXQUFVLFNBQVMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1dBQ3hCLFFBQVEsS0FBSyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUc7QUFDdEQsYUFBWSxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQzFCO0FBQ1gsV0FBVSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsTUFBTSxLQUFLQSxXQUFTLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDO1VBQy9EO0FBQ1QsUUFBTyxNQUFNLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFO1NBQzlELElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDbEQsU0FBUSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRTtXQUNkLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztVQUNqQztRQUNGO0FBQ1AsT0FBTSxPQUFPLE1BQU0sR0FBRyxRQUFRLENBQUM7TUFDMUI7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFFBQVEsQ0FBQyxNQUFNLEVBQUU7QUFDOUIsT0FBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO09BQzFCLE9BQU8sQ0FBQyxNQUFNLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUNyRCxXQUFVLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLGdCQUFnQixDQUFDO0FBQ3pELFdBQVUsTUFBTSxDQUFDO01BQ1o7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7S0FDSSxJQUFJLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO0FBQ25FLE9BQU0sT0FBTyxNQUFNLElBQUksS0FBSyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDOUQsTUFBSyxDQUFDLENBQUM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLElBQUksVUFBVSxHQUFHLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0tBQ0ksU0FBUyxLQUFLLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7QUFDM0MsT0FBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2hDLE9BQU0sT0FBTyxHQUFHLEtBQUssR0FBR0EsV0FBUyxHQUFHLE9BQU8sQ0FBQztBQUM1QztBQUNBLE9BQU0sSUFBSSxPQUFPLEtBQUtBLFdBQVMsRUFBRTtBQUNqQyxTQUFRLE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0U7T0FDRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO01BQ3BDO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7S0FDSSxJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsU0FBUyxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQ2hELE9BQU0sSUFBSTtTQUNGLE9BQU8sS0FBSyxDQUFDLElBQUksRUFBRUEsV0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JDLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDbEIsU0FBUSxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEM7QUFDUCxNQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtLQUNJLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxTQUFTLE1BQU0sRUFBRSxXQUFXLEVBQUU7QUFDekQsT0FBTSxTQUFTLENBQUMsV0FBVyxFQUFFLFNBQVMsR0FBRyxFQUFFO0FBQzNDLFNBQVEsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QixTQUFRLGVBQWUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNoRSxRQUFPLENBQUMsQ0FBQztPQUNILE9BQU8sTUFBTSxDQUFDO0FBQ3BCLE1BQUssQ0FBQyxDQUFDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLElBQUksQ0FBQyxLQUFLLEVBQUU7T0FDbkIsSUFBSSxNQUFNLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU07QUFDbkQsV0FBVSxVQUFVLEdBQUcsV0FBVyxFQUFFLENBQUM7QUFDckM7QUFDQSxPQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxTQUFTLElBQUksRUFBRTtTQUNwRCxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsRUFBRTtBQUMxQyxXQUFVLE1BQU0sSUFBSSxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7VUFDdEM7QUFDVCxTQUFRLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUMsUUFBTyxDQUFDLENBQUM7QUFDVDtBQUNBLE9BQU0sT0FBTyxRQUFRLENBQUMsU0FBUyxJQUFJLEVBQUU7QUFDckMsU0FBUSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN2QixTQUFRLE9BQU8sRUFBRSxLQUFLLEdBQUcsTUFBTSxFQUFFO0FBQ2pDLFdBQVUsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xDLFdBQVUsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRTtBQUMxQyxhQUFZLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbkM7VUFDRjtBQUNULFFBQU8sQ0FBQyxDQUFDO01BQ0o7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxRQUFRLENBQUMsTUFBTSxFQUFFO09BQ3hCLE9BQU8sWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztNQUN6RDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRTtBQUM3QixPQUFNLE9BQU8sV0FBVztTQUNoQixPQUFPLEtBQUssQ0FBQztBQUNyQixRQUFPLENBQUM7TUFDSDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRTtBQUM1QyxPQUFNLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQztNQUNsRTtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLElBQUksSUFBSSxHQUFHLFVBQVUsRUFBRSxDQUFDO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxJQUFJLFNBQVMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFO09BQ3ZCLE9BQU8sS0FBSyxDQUFDO01BQ2Q7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxRQUFRLENBQUMsSUFBSSxFQUFFO0FBQzVCLE9BQU0sT0FBTyxZQUFZLENBQUMsT0FBTyxJQUFJLElBQUksVUFBVSxHQUFHLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7TUFD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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksSUFBSSxTQUFTLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFJLElBQUksUUFBUSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSSxTQUFTLFFBQVEsQ0FBQyxJQUFJLEVBQUU7QUFDNUIsT0FBTSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7TUFDekU7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUksU0FBUyxVQUFVLENBQUMsTUFBTSxFQUFFO09BQzFCLE9BQU8sU0FBUyxJQUFJLEVBQUU7QUFDNUIsU0FBUSxPQUFPLE1BQU0sSUFBSSxJQUFJLEdBQUdBLFdBQVMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2xFLFFBQU8sQ0FBQztNQUNIO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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LENBQUMsS0FBSyxDQUFDO2lCQUNQLENBQUMsS0FBSyxDQUFDO2lCQUNQLENBQUMsS0FBSyxDQUFDO2lCQUNQLENBQUMsS0FBSyxDQUFDO2lCQUNQLENBQUMsS0FBSyxDQUFDO2lCQUNQLENBQUMsS0FBSyxDQUFDO2lCQUNQLENBQUMsS0FBSyxDQUFDO2lCQUNQLENBQUMsS0FBSyxDQUFDO2lCQUNQLENBQUMsS0FBSyxDQUFDO2lCQUNQLENBQUMsS0FBSyxDQUFDO2lCQUNQLENBQUMsS0FBSyxDQUFDO2lCQUNQLENBQUMsS0FBSyxDQUFDO2lCQUNQLENBQUMsS0FBSyxDQUFDO2lCQUNQLENBQUMsS0FBSyxDQUFDO2lCQUNQLENBQUMsS0FBSyxDQUFDO2lCQUNQLENBQUMsS0FBSyxDQUFDO2lCQUNQLENBQUMsS0FBSyxDQUFDO2lCQUNQLENBQUMsS0FBSyxDQUFDO2lCQUNQLENBQUMsS0FBSyxDQUFDO2lCQUNQLENBQUMsS0FBSyxDQUFDO2lCQUNQLENBQUMsS0FBSyxDQUFDO2lCQUNQLENBQUMsS0FBSyxDQUFDO2lCQUNQLENBQUMsS0FBSyxDQUFDO2lCQUNQLENBQUMsS0FBSyxDQUFDO2lCQUNQLENBQUMsS0FBSyxDQUFDO2lCQUNQLENBQUMsS0FBSyxDQUFDO2lCQUNQLENBQUMsS0FBSyxDQUFDO2NBQ1Y7VUFDSjtTQUNEO2FBQ0ksSUFBSSxFQUFFLFlBQVk7QUFDOUIsYUFBWSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1VBQ2xHO1NBQ0Q7YUFDSSxJQUFJLEVBQUUsYUFBYTtBQUMvQixhQUFZLEdBQUcsRUFBRTtpQkFDRCxDQUFDLEtBQUssQ0FBQztpQkFD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QixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQztBQUNwQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDO0FBQ3BCLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNwQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUM7QUFDckIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdEIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUM7QUFDeEIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQztBQUN4QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7QUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3hCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN6QixJQUFJLENBQUMsTUFBTSxF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OEJBQThCLEVBQzlCLE1BQU0sQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDLGVBQWUsQ0FDM0QsQ0FDRixDQUFDO0FBRUYsUUFBQSxHQUFHLENBQUMsV0FBVyxDQUNiLGtCQUFrQixDQUNoQix5Q0FBeUMsRUFDekMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUMsZUFBZSxDQUNqRSxDQUNGLENBQUM7S0FDSCxDQUFBO0lBQ0gsT0FBQyxzQkFBQSxDQUFBO0FBQUQsQ0F6R0EsQ0FBcUNDLHlCQUFnQixDQXlHcEQsQ0FBQSxDQUFBO0FBRUQsSUFBTSxrQkFBa0IsR0FBRyxVQUFDLElBQVksRUFBRSxHQUFnQixFQUFBO0lBQ3hELElBQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEMsSUFBQSxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM3QixJQUFBLENBQUMsQ0FBQyxRQUFRLENBQUMsK0JBQStCLENBQUMsQ0FBQztBQUM1QyxJQUFBLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkIsSUFBQSxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUMsQ0FBQztBQUVGLElBQU0sWUFBWSxHQUFHLDJnb0NBc0JkLENBQUM7QUFFUixJQUFNLE1BQU0sR0FBRywwMkhBUVI7Ozs7IiwieF9nb29nbGVfaWdub3JlTGlzdCI6WzAsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwXX0= diff --git a/.obsidian/plugins/table-editor-obsidian/manifest.json b/.obsidian/plugins/table-editor-obsidian/manifest.json index efde080..f8abb69 100644 --- a/.obsidian/plugins/table-editor-obsidian/manifest.json +++ b/.obsidian/plugins/table-editor-obsidian/manifest.json @@ -6,7 +6,7 @@ "description": "Improved table navigation, formatting, manipulation, and formulas", "isDesktopOnly": false, "minAppVersion": "1.0.0", - "version": "0.19.1", + "version": "0.21.0", "js": "main.js", "fundingUrl": { "Github Sponsor": "https://github.com/sponsors/tgrosinger", diff --git a/.obsidian/themes/Minimal/manifest.json b/.obsidian/themes/Minimal/manifest.json index bfd28ec..35ea971 100644 --- a/.obsidian/themes/Minimal/manifest.json +++ b/.obsidian/themes/Minimal/manifest.json @@ -1,7 +1,7 @@ { "name": "Minimal", - "version": "7.3.5", - "minAppVersion": "1.1.9", + "version": "7.5.3", + "minAppVersion": "1.5.4", "author": "@kepano", "authorUrl": "https://twitter.com/kepano", "fundingUrl": "https://www.buymeacoffee.com/kepano" diff --git a/.obsidian/themes/Minimal/theme.css b/.obsidian/themes/Minimal/theme.css index 4d3783e..0b8c8c7 100644 --- a/.obsidian/themes/Minimal/theme.css +++ b/.obsidian/themes/Minimal/theme.css @@ -38,7 +38,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -body{--font-editor-theme:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Inter,Ubuntu,sans-serif;--font-editor:var(--font-editor-override),var(--font-text-override),var(--font-editor-theme)}body{--blockquote-style:normal;--blockquote-color:var(--text-muted);--blockquote-border-thickness:1px;--blockquote-border-color:var(--quote-opening-modifier);--embed-block-shadow-hover:none;--font-ui-smaller:11px;--normal-weight:400;--bold-weight:600;--link-weight:inherit;--inline-title-margin-bottom:1rem;--h1-size:1.125em;--h2-size:1.05em;--h3-size:1em;--h4-size:0.90em;--h5-size:0.85em;--h6-size:0.85em;--h1-weight:600;--h2-weight:600;--h3-weight:500;--h4-weight:500;--h5-weight:500;--h6-weight:400;--h1-variant:normal;--h2-variant:normal;--h3-variant:normal;--h4-variant:normal;--h5-variant:small-caps;--h6-variant:small-caps;--h1-style:normal;--h2-style:normal;--h3-style:normal;--h4-style:normal;--h5-style:normal;--h6-style:normal;--line-width:40rem;--line-height:1.5;--line-height-normal:var(--line-height);--max-width:88%;--max-col-width:18em;--icon-muted:0.5;--nested-padding:1.1em;--folding-offset:32px;--list-edit-offset:0.5em;--list-indent:2em;--list-spacing:0.075em;--input-height:32px;--header-height:40px;--metadata-label-width:9rem;--metadata-label-font-size:var(--font-adaptive-small);--metadata-input-font-size:var(--font-adaptive-small);--mobile-left-sidebar-width:280pt;--mobile-right-sidebar-width:240pt;--top-left-padding-y:0px;--image-muted:0.7;--image-radius:4px;--heading-spacing:2em;--p-spacing:1.75rem;--border-width:1px;--table-border-width:var(--border-width);--table-selection:var(--text-selection);--table-selection-border-color:var(--text-selection);--table-selection-border-width:0px;--table-selection-border-radius:0px;--file-margins:var(--size-4-2) var(--size-4-12)}.mod-macos{--top-left-padding-y:24px}.is-phone{--metadata-label-font-size:var(--font-adaptive-smaller);--metadata-input-font-size:var(--font-adaptive-smaller)}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){.is-phone{--border-width:0.75px}}body{--base-h:0;--base-s:0%;--base-l:96%;--accent-h:201;--accent-s:17%;--accent-l:50%}.theme-dark,.theme-light{--color-red-rgb:208,66,85;--color-orange-rgb:213,118,63;--color-yellow-rgb:229,181,103;--color-green-rgb:168,195,115;--color-cyan-rgb:115,187,178;--color-blue-rgb:108,153,187;--color-purple-rgb:158,134,200;--color-pink-rgb:176,82,121;--color-red:#d04255;--color-orange:#d5763f;--color-yellow:#e5b567;--color-green:#a8c373;--color-cyan:#73bbb2;--color-blue:#6c99bb;--color-purple:#9e86c8;--color-pink:#b05279}.theme-light,.theme-light.minimal-default-light,body .excalidraw{--bg1:white;--bg2:hsl( var(--base-h), var(--base-s), var(--base-l) );--bg3:hsla( var(--base-h), var(--base-s), calc(var(--base-l) - 50%), 0.12 );--ui1:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 6%) );--ui2:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 12%) );--ui3:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 20%) );--tx1:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 90%) );--tx2:hsl( var(--base-h), calc(var(--base-s) - 20%), calc(var(--base-l) - 45%) );--tx3:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) - 25%) );--tx4:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) - 60%) );--ax1:hsl( var(--accent-h), var(--accent-s), var(--accent-l) );--ax2:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) - 8%) );--ax3:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) + 6%) );--hl1:hsla( var(--accent-h), 50%, calc(var(--base-l) - 20%), 30% );--hl2:rgba(255, 225, 0, 0.5);--sp1:white}.excalidraw.theme--dark,.theme-dark,.theme-dark.minimal-default-dark,.theme-light.minimal-light-contrast .titlebar,.theme-light.minimal-light-contrast.minimal-status-off .status-bar{--accent-l:60%;--base-l:15%;--bg1:hsl( var(--base-h), var(--base-s), var(--base-l) );--bg2:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 2%) );--bg3:hsla( var(--base-h), var(--base-s), calc(var(--base-l) + 40%), 0.12 );--ui1:hsl( var(--base-h), var(--base-s), calc(var(--base-l) + 6%) );--ui2:hsl( var(--base-h), var(--base-s), calc(var(--base-l) + 12%) );--ui3:hsl( var(--base-h), var(--base-s), calc(var(--base-l) + 20%) );--tx1:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) + 67%) );--tx2:hsl( var(--base-h), calc(var(--base-s) - 20%), calc(var(--base-l) + 45%) );--tx3:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) + 20%) );--tx4:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) + 50%) );--ax1:hsl( var(--accent-h), var(--accent-s), var(--accent-l) );--ax2:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) + 8%) );--ax3:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) - 5%) );--hl1:hsla( var(--accent-h), 50%, 40%, 30% );--hl2:rgba(255, 177, 80, 0.3);--sp1:white}.theme-light.minimal-light-white{--background-primary:white;--background-secondary:white;--background-secondary-alt:white;--ribbon-background:white;--titlebar-background:white;--bg1:white}.theme-dark.minimal-dark-black{--base-d:0%;--titlebar-background:black;--background-primary:black;--background-secondary:black;--background-secondary-alt:black;--ribbon-background:black;--background-modifier-hover:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 10%));--tx1:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 75%) );--tx2:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 50%) );--tx3:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 25%) );--ui1:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 12%) );--ui2:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 20%) );--ui3:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 30%) )}.theme-light{--mono100:black;--mono0:white}.theme-dark{--mono100:white;--mono0:black}.theme-dark,.theme-light,.theme-light.minimal-light-contrast .titlebar,.theme-light.minimal-light-contrast.is-mobile .workspace-drawer.mod-left,.theme-light.minimal-light-contrast.minimal-status-off .status-bar{--background-modifier-accent:var(--ax3);--background-modifier-border-focus:var(--ui3);--background-modifier-border-hover:var(--ui2);--background-modifier-border:var(--ui1);--background-modifier-form-field-highlighted:var(--bg1);--background-modifier-form-field:var(--bg1);--background-modifier-success:var(--color-green);--background-modifier-hover:var(--bg3);--background-modifier-active-hover:var(--bg3);--background-primary:var(--bg1);--background-primary-alt:var(--bg2);--background-secondary:var(--bg2);--background-secondary-alt:var(--bg1);--background-table-rows:var(--bg2);--checkbox-color:var(--ax3);--code-normal:var(--tx1);--divider-color:var(--ui1);--frame-divider-color:var(--ui1);--icon-color-active:var(--tx1);--icon-color-focused:var(--tx1);--icon-color-hover:var(--tx2);--icon-color:var(--tx2);--icon-hex:var(--mono0);--interactive-accent-hover:var(--ax1);--interactive-accent:var(--ax3);--interactive-hover:var(--ui1);--list-marker-color:var(--tx3);--modal-border-color:var(--ui2);--nav-item-background-active:var(--bg3);--nav-item-background-hover:var(--bg3);--nav-item-color:var(--tx2);--nav-item-color-active:var(--tx1);--nav-item-color-hover:var(--tx1);--nav-collapse-icon-color:var(--tx2);--nav-collapse-icon-color-collapsed:var(--tx2);--nav-indentation-guide-color:var(--ui1);--prompt-border-color:var(--ui3);--quote-opening-modifier:var(--ui2);--ribbon-background:var(--bg2);--scrollbar-active-thumb-bg:var(--ui3);--scrollbar-bg:transparent;--scrollbar-thumb-bg:var(--ui1);--search-result-background:var(--bg1);--tab-text-color-focused-active:var(--tx1);--tab-outline-color:var(--ui1);--text-accent-hover:var(--ax2);--text-accent:var(--ax1);--text-blockquote:var(--tx2);--text-bold:var(--tx1);--text-code:var(--tx4);--text-error:var(--color-red);--text-faint:var(--tx3);--text-highlight-bg:var(--hl2);--text-italic:var(--tx1);--text-muted:var(--tx2);--text-normal:var(--tx1);--text-on-accent:var(--sp1);--text-selection:var(--hl1);--title-color-inactive:var(--tx2);--title-color:var(--tx1);--titlebar-background:var(--bg2);--titlebar-background-focused:var(--bg2);--titlebar-text-color-focused:var(--tx1);--workspace-background-translucent:hsla(var(--base-h),var(--base-s), var(--base-l), 0.7)}.theme-dark .view-actions,.theme-light .view-actions{--icon-color-active:var(--ax1)}.theme-light.minimal-light-contrast{--workspace-background-translucent:rgba(0,0,0,0.6)}.theme-light.minimal-light-contrast .theme-dark{--tab-container-background:var(--bg2);--ribbon-background-collapsed:var(--bg2)}.theme-light{--interactive-normal:var(--bg1);--interactive-accent-rgb:220,220,220;--active-line-bg:rgba(0,0,0,0.035);--background-modifier-cover:hsla(var(--base-h),calc(var(--base-s) - 70%),calc(var(--base-l) - 20%),0.5);--text-highlight-bg-active:rgba(0, 0, 0, 0.1);--background-modifier-error:rgba(255,0,0,0.14);--background-modifier-error-hover:rgba(255,0,0,0.08);--shadow-color:rgba(0, 0, 0, 0.1);--btn-shadow-color:rgba(0, 0, 0, 0.05)}.theme-dark{--interactive-normal:var(--bg3);--interactive-accent-rgb:66,66,66;--active-line-bg:rgba(255,255,255,0.04);--background-modifier-cover:hsla(var(--base-h),var(--base-s), calc(var(--base-l) - 12%), 0.5);--text-highlight-bg-active:rgba(255, 255, 255, 0.1);--background-modifier-error:rgba(255,20,20,0.12);--background-modifier-error-hover:rgba(255,20,20,0.18);--background-modifier-box-shadow:rgba(0, 0, 0, 0.3);--shadow-color:rgba(0, 0, 0, 0.3);--btn-shadow-color:rgba(0, 0, 0, 0.2)}.theme-light.minimal-light-white{--background-table-rows:var(--bg2)}.theme-light.minimal-light-tonal{--background-primary:var(--bg2);--background-primary-alt:var(--bg3);--background-table-rows:var(--bg3)}.theme-dark.minimal-dark-tonal{--ribbon-background:var(--bg1);--background-secondary:var(--bg1);--background-table-rows:var(--bg3)}.theme-dark.minimal-dark-black{--background-primary-alt:var(--bg3);--background-table-rows:var(--bg3);--modal-border:var(--ui2);--active-line-bg:rgba(255,255,255,0.085);--background-modifier-form-field:var(--bg3);--background-modifier-cover:hsla(var(--base-h),var(--base-s),calc(var(--base-d) + 8%),0.9);--background-modifier-box-shadow:rgba(0, 0, 0, 1)}body{--font-adaptive-normal:var(--font-text-size,var(--editor-font-size));--font-adaptive-small:calc(var(--font-ui-small) * 1.07);--font-adaptive-smaller:var(--font-ui-small);--font-adaptive-smallest:var(--font-ui-smaller);--line-width-wide:calc(var(--line-width) + 12.5%);--font-code:calc(var(--font-adaptive-normal) * 0.9);--table-text-size:calc(var(--font-adaptive-normal) * 0.875)}.minimal-dev-block-width .mod-root .workspace-leaf-content:after{display:flex;align-items:flex-end;content:"\00a0pane\00a0";font-size:12px;color:gray;font-family:var(--font-monospace);width:100%;max-width:100%;height:100vh;top:0;z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable .mod-root .view-header:after{display:flex;align-items:flex-end;color:green;font-size:12px;font-family:var(--font-monospace);content:" ";width:var(--folding-offset);height:100vh;border-left:1px solid green;border-right:1px solid green;background-color:rgba(0,128,0,.1);top:0;left:max(calc(50% - var(--line-width)/ 2 - 1px),calc(50% - var(--max-width)/ 2 - 1px));z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable-off .mod-root .view-header:after{display:flex;align-items:flex-end;color:green;font-size:12px;font-family:var(--font-monospace);content:" ";width:var(--folding-offset);height:100vh;border-left:1px solid green;border-right:1px solid green;background-color:rgba(0,128,0,.1);top:0;left:calc(50% - var(--max-width)/ 2 - 1px);z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width .mod-root .view-content:before{display:flex;align-items:flex-end;content:"\00a0max\00a0";font-size:12px;color:red;width:var(--max-width);height:100vh;border-left:1px solid red;border-right:1px solid red;top:0;left:50%;transform:translate(-50%,0);z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable .mod-root .view-header:before{display:flex;align-items:flex-end;content:"\00a0wide\00a0";font-size:12px;color:orange;font-family:var(--font-monospace);width:var(--line-width-wide);max-width:var(--max-width);height:100vh;border-left:1px solid orange;border-right:1px solid orange;background-color:rgba(255,165,0,.05);top:0;left:50%;transform:translate(-50%,0);z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable .mod-root .view-content:after{display:flex;align-items:flex-end;color:#00f;font-size:12px;font-family:var(--font-monospace);content:"\00a0normal";width:var(--line-width);max-width:var(--max-width);height:100vh;border-left:1px solid #00f;border-right:1px solid #00f;background-color:rgba(0,0,255,.08);top:0;left:50%;transform:translate(-50%,0);z-index:999;position:fixed;pointer-events:none}.CodeMirror-wrap>div>textarea{opacity:0}.markdown-source-view.mod-cm6 hr{border-width:2px}.mod-cm6 .cm-editor .cm-line{padding-left:0;padding-right:0}.cm-editor .cm-content{padding-top:.5em}.markdown-source-view{color:var(--text-normal)}.markdown-source-view.mod-cm6 .cm-sizer{display:block}.markdown-source-view.mod-cm6 .cm-scroller{padding-left:0;padding-right:0}.cm-s-obsidian .cm-line.HyperMD-header{padding-top:calc(var(--p-spacing)/ 2)}.markdown-rendered .mod-header+div>*{margin-block-start:0}body :not(.canvas-node) .markdown-source-view.mod-cm6 .cm-gutters{position:absolute!important;z-index:0;margin-inline-end:0}body :not(.canvas-node) .markdown-source-view.mod-cm6.is-rtl .cm-gutters{right:0}body{--line-number-color:var(--text-faint);--line-number-color-active:var(--text-muted)}.markdown-source-view.mod-cm6 .cm-gutters{color:var(--line-number-color)!important}.markdown-source-view.mod-cm6 .cm-editor .cm-gutterElement.cm-active .cm-heading-marker,.markdown-source-view.mod-cm6 .cm-editor .cm-lineNumbers .cm-gutterElement.cm-active{color:var(--line-number-color-active)}.cm-editor .cm-lineNumbers{background-color:var(--gutter-background)}.cm-editor .cm-lineNumbers .cm-gutterElement{min-width:var(--folding-offset);padding-inline-end:0.5em}.is-rtl .cm-editor .cm-lineNumbers .cm-gutterElement{text-align:left}@media (max-width:400pt){.cm-editor .cm-lineNumbers .cm-gutterElement{padding-inline-end:4px;padding-inline-start:8px}}.cm-editor .cm-lineNumbers .cm-gutterElement{font-variant-numeric:tabular-nums}.cm-editor .cm-gutterElement.cm-active .cm-heading-marker,.cm-editor .cm-lineNumbers .cm-gutterElement.cm-active{color:var(--text-muted)}.markdown-source-view.mod-cm6 .edit-block-button{cursor:var(--cursor);color:var(--text-faint);background-color:var(--background-primary);top:0;opacity:0;transition:opacity .2s;padding:4px 4px 4px 9px}.markdown-source-view.mod-cm6 .edit-block-button svg{margin:0!important}.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.edit-block-button{width:30px!important;padding-left:7px!important}.is-live-preview:not(.is-readable-line-width) .cm-embed-block>.edit-block-button{padding-left:0!important;margin-left:0!important;padding:4px}.markdown-source-view.mod-cm6 .edit-block-button:hover{background-color:var(--background-primary);color:var(--text-muted)}.markdown-source-view.mod-cm6 .edit-block-button svg{opacity:1}.markdown-source-view.mod-cm6 .edit-block-button:hover svg{opacity:1}.markdown-source-view.mod-cm6 .cm-embed-block{padding:0;border:0;border-radius:0}.markdown-source-view.mod-cm6 .cm-embed-block:hover{border:0}.metadata-container{--input-height:2rem}.markdown-source-view .metadata-container{transform:translateX(-4px)}body.metadata-heading-off .metadata-properties-heading{display:none}.metadata-add-property-off .mod-root .metadata-add-button{display:none}.metadata-dividers{--metadata-divider-width:1px;--metadata-gap:0px}.metadata-icons-off .workspace-leaf-content[data-type=all-properties] .tree-item-inner{margin-left:-16px}.metadata-icons-off .workspace-leaf-content[data-type=all-properties] .tree-item-icon{display:none}.metadata-icons-off .metadata-property-icon{display:none}figure{margin-inline-start:0;margin-inline-end:0}.markdown-preview-view .mod-highlighted{transition:background-color .3s ease;background-color:var(--text-selection);color:inherit}.inline-title{padding-top:16px}.minimal-status-off .status-bar{--status-bar-position:static;--status-bar-radius:0;--status-bar-border-width:1px 0 0 0;--status-bar-background:var(--background-secondary);--status-bar-border-color:var(--ui1)}body:not(.minimal-status-off) .status-bar{background-color:var(--background-primary);--status-bar-border-width:0}.status-bar{transition:color .2s linear;color:var(--text-faint);font-size:var(--font-adaptive-smallest)}.status-bar .sync-status-icon.mod-success,.status-bar .sync-status-icon.mod-working{color:var(--text-faint)}.status-bar:hover,.status-bar:hover .sync-status-icon.mod-success,.status-bar:hover .sync-status-icon.mod-working{color:var(--text-muted);transition:color .2s linear}.status-bar .plugin-sync:hover .sync-status-icon.mod-success,.status-bar .plugin-sync:hover .sync-status-icon.mod-working{color:var(--text-normal)}.status-bar .status-bar-item{cursor:var(--cursor)!important}.status-bar .status-bar-item.cMenu-statusbar-button:hover,.status-bar .status-bar-item.mod-clickable:hover,.status-bar .status-bar-item.plugin-editor-status:hover,.status-bar .status-bar-item.plugin-sync:hover{text-align:center;background-color:var(--background-modifier-hover)!important}.tab-stack-top-flipped{--tab-stacked-text-transform:rotate(180deg);--tab-stacked-text-align:right}.tab-stack-center{--tab-stacked-text-align:center}.tab-stack-center-flipped{--tab-stacked-text-transform:rotate(180deg);--tab-stacked-text-align:center}.tab-stack-bottom{--tab-stacked-text-transform:rotate(180deg)}.tab-stack-bottom-flipped{--tab-stacked-text-align:right}.view-header-title,.view-header-title-parent{text-overflow:ellipsis}.view-header-title-container:not(.mod-at-end):after{display:none}body:not(.is-mobile) .view-actions .view-action:last-child{margin-left:-1px}.minimal-focus-mode .workspace-ribbon:not(.is-collapsed)~.mod-root .view-header:hover .view-actions,.mod-right.is-collapsed~.mod-root .view-header:hover .view-actions,.view-action.is-active:hover,.workspace-ribbon.mod-left.is-collapsed~.mod-root .view-header:hover .view-actions,body:not(.minimal-focus-mode) .workspace-ribbon:not(.is-collapsed)~.mod-root .view-actions{opacity:1;transition:opacity .25s ease-in-out}.view-header-title-container{opacity:0;transition:opacity .1s ease-in-out}.view-header-title-container:focus-within{opacity:1;transition:opacity .1s ease-in-out}.view-header:hover .view-header-title-container,.workspace-tab-header-container:hover+.workspace-tab-container .view-header-title-container{opacity:1;transition:opacity .1s ease-in-out}.is-phone .view-header-title-container,.minimal-tab-title-visible .view-header-title-container{opacity:1}.minimal-tab-title-hidden .view-header-title-container{opacity:0}.minimal-tab-title-hidden .view-header-title-container:focus-within{opacity:1;transition:opacity .1s ease-in-out}.minimal-tab-title-hidden .view-header:hover .view-header-title-container,.minimal-tab-title-hidden .workspace-tab-header-container:hover+.workspace-tab-container .view-header-title-container{opacity:0}body.window-title-off .titlebar-text{display:none}.titlebar-button-container.mod-right{background-color:transparent!important}.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame),.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame):not(.minimal-light-white){--titlebar-background:var(--bg1)}.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame).is-focused .sidebar-toggle-button.mod-right,.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame).is-focused .workspace-ribbon.mod-left.is-collapsed,.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame).is-focused .workspace-tabs.mod-top,.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame):not(.minimal-light-white).is-focused .sidebar-toggle-button.mod-right,.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame):not(.minimal-light-white).is-focused .workspace-ribbon.mod-left.is-collapsed,.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame):not(.minimal-light-white).is-focused .workspace-tabs.mod-top{--titlebar-background-focused:var(--bg1)}.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame):not(.minimal-dark-tonal):not(.minimal-light-white) .workspace-ribbon.mod-left:not(.is-collapsed),.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame):not(.minimal-light-white):not(.minimal-dark-tonal):not(.minimal-light-white) .workspace-ribbon.mod-left:not(.is-collapsed){--titlebar-background:var(--bg2)}.mod-macos.is-hidden-frameless:not(.is-popout-window) .sidebar-toggle-button.mod-right{right:0;padding-right:var(--size-4-2)}body.is-focused{--titlebar-background-focused:var(--background-secondary)}.is-hidden-frameless:not(.colorful-frame) .mod-left-split .mod-top .workspace-tab-header-container{--tab-container-background:var(--background-secondary)}.mod-root .workspace-tab-header-status-icon{color:var(--text-muted)}.modal button:not(.mod-warning),.modal.mod-settings button:not(.mod-cta):not(.mod-warning),.modal.mod-settings button:not(.mod-warning){white-space:nowrap;transition:background-color .2s ease-out,border-color .2s ease-out}button.mod-warning{border:1px solid var(--background-modifier-error);color:var(--text-error);box-shadow:0 1px 1px 0 var(--btn-shadow-color);transition:background-color .2s ease-out}button.mod-warning:hover{border:1px solid var(--background-modifier-error);color:var(--text-error);box-shadow:0 2px 3px 0 var(--btn-shadow-color);transition:background-color .2s ease-out}.document-replace,.document-search{max-width:100%;padding:0}.document-search-container{margin:0 auto;max-width:var(--max-width);width:var(--line-width)}.is-mobile .CodeMirror-foldgutter-open:after,.is-mobile span[title="Fold line"]:after{transform:translateX(-2px)!important}body.is-mobile .CodeMirror-foldgutter-folded:after,body.is-mobile span[title="Unfold line"]:after{content:"›";font-family:sans-serif;transform:translateY(-2px);transform:rotate(-90deg) translateY(2px) translateX(-.45em)}body.is-mobile .CodeMirror-foldgutter-open:after,body.is-mobile span[title="Fold line"]:after{content:"›";font-family:sans-serif;transform:rotate(360deg)}.modal-button-container .mod-checkbox{--checkbox-radius:4px}.modal-container.mod-confirmation .modal{width:480px;min-width:0}.theme-light{--progress-outline:rgba(0,0,0,0.05)}.theme-dark{--progress-outline:rgba(255,255,255,0.04)}body{--progress-complete:var(--text-accent)}.markdown-preview-view progress,.markdown-rendered progress,.markdown-source-view.is-live-preview progress{width:220px}.markdown-preview-view progress[value]::-webkit-progress-bar,.markdown-rendered progress[value]::-webkit-progress-bar,.markdown-source-view.is-live-preview progress[value]::-webkit-progress-bar{box-shadow:inset 0 0 0 var(--border-width) var(--progress-outline)}.markdown-preview-view progress[value^='1']::-webkit-progress-value,.markdown-preview-view progress[value^='2']::-webkit-progress-value,.markdown-preview-view progress[value^='3']::-webkit-progress-value,.markdown-rendered progress[value^='1']::-webkit-progress-value,.markdown-rendered progress[value^='2']::-webkit-progress-value,.markdown-rendered progress[value^='3']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='1']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='2']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='3']::-webkit-progress-value{background-color:var(--color-red)}.markdown-preview-view progress[value^='4']::-webkit-progress-value,.markdown-preview-view progress[value^='5']::-webkit-progress-value,.markdown-rendered progress[value^='4']::-webkit-progress-value,.markdown-rendered progress[value^='5']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='4']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='5']::-webkit-progress-value{background-color:var(--color-orange)}.markdown-preview-view progress[value^='6']::-webkit-progress-value,.markdown-preview-view progress[value^='7']::-webkit-progress-value,.markdown-rendered progress[value^='6']::-webkit-progress-value,.markdown-rendered progress[value^='7']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='6']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='7']::-webkit-progress-value{background-color:var(--color-yellow)}.markdown-preview-view progress[value^='8']::-webkit-progress-value,.markdown-preview-view progress[value^='9']::-webkit-progress-value,.markdown-rendered progress[value^='8']::-webkit-progress-value,.markdown-rendered progress[value^='9']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='8']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^='9']::-webkit-progress-value{background-color:var(--color-green)}.markdown-preview-view progress[value='1']::-webkit-progress-value,.markdown-preview-view progress[value='100']::-webkit-progress-value,.markdown-rendered progress[value='1']::-webkit-progress-value,.markdown-rendered progress[value='100']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='1']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='100']::-webkit-progress-value{background-color:var(--progress-complete)}.markdown-preview-view progress[value='0']::-webkit-progress-value,.markdown-preview-view progress[value='2']::-webkit-progress-value,.markdown-preview-view progress[value='3']::-webkit-progress-value,.markdown-preview-view progress[value='4']::-webkit-progress-value,.markdown-preview-view progress[value='5']::-webkit-progress-value,.markdown-preview-view progress[value='6']::-webkit-progress-value,.markdown-preview-view progress[value='7']::-webkit-progress-value,.markdown-preview-view progress[value='8']::-webkit-progress-value,.markdown-preview-view progress[value='9']::-webkit-progress-value,.markdown-rendered progress[value='0']::-webkit-progress-value,.markdown-rendered progress[value='2']::-webkit-progress-value,.markdown-rendered progress[value='3']::-webkit-progress-value,.markdown-rendered progress[value='4']::-webkit-progress-value,.markdown-rendered progress[value='5']::-webkit-progress-value,.markdown-rendered progress[value='6']::-webkit-progress-value,.markdown-rendered progress[value='7']::-webkit-progress-value,.markdown-rendered progress[value='8']::-webkit-progress-value,.markdown-rendered progress[value='9']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='0']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='2']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='3']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='4']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='5']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='6']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='7']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='8']::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value='9']::-webkit-progress-value{background-color:var(--color-red)}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar,body:not(.native-scrollbars) ::-webkit-scrollbar{width:11px;background-color:transparent}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar:horizontal,body:not(.native-scrollbars) ::-webkit-scrollbar:horizontal{height:11px}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-corner,body:not(.native-scrollbars) ::-webkit-scrollbar-corner{background-color:transparent}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-track,body:not(.native-scrollbars) ::-webkit-scrollbar-track{background-color:transparent}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-thumb,body:not(.native-scrollbars) ::-webkit-scrollbar-thumb{background-clip:padding-box;border-radius:20px;border:3px solid transparent;background-color:var(--background-modifier-border);border-width:3px 3px 3px 3px;min-height:45px}body:not(.hider-scrollbars).styled-scrollbars .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:hover,body:not(.hider-scrollbars).styled-scrollbars .modal .vertical-tab-header::-webkit-scrollbar-thumb:hover,body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-thumb:hover,body:not(.native-scrollbars) .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:hover,body:not(.native-scrollbars) .modal .vertical-tab-header::-webkit-scrollbar-thumb:hover,body:not(.native-scrollbars) ::-webkit-scrollbar-thumb:hover{background-color:var(--background-modifier-border-hover)}body:not(.hider-scrollbars).styled-scrollbars .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:active,body:not(.hider-scrollbars).styled-scrollbars .modal .vertical-tab-header::-webkit-scrollbar-thumb:active,body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-thumb:active,body:not(.native-scrollbars) .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:active,body:not(.native-scrollbars) .modal .vertical-tab-header::-webkit-scrollbar-thumb:active,body:not(.native-scrollbars) ::-webkit-scrollbar-thumb:active{background-color:var(--background-modifier-border-focus)}.tooltip{transition:none;animation:none}.tooltip.mod-left,.tooltip.mod-right{animation:none}.tooltip.mod-error{color:var(--text-error)}.markdown-preview-view blockquote{padding:0 0 0 var(--nested-padding);font-size:var(--blockquote-size)}.markdown-source-view.mod-cm6 .HyperMD-quote,.markdown-source-view.mod-cm6.is-live-preview .HyperMD-quote{font-size:var(--blockquote-size)}.is-live-preview .cm-hmd-indent-in-quote{color:var(--text-faint)}.is-live-preview.is-readable-line-width>.cm-callout .callout{max-width:var(--max-width);margin:0 auto}.callouts-outlined .callout .callout-title{background-color:var(--background-primary);margin-top:-24px;z-index:200;width:fit-content;padding:0 .5em;margin-left:-.75em;letter-spacing:.05em;font-variant-caps:all-small-caps}.callouts-outlined .callout{overflow:visible;--callout-border-width:1px;--callout-border-opacity:0.5;--callout-title-size:0.8em;--callout-blend-mode:normal;background-color:transparent}.callouts-outlined .cm-embed-block.cm-callout{padding-top:12px}.callouts-outlined .callout-content .callout{margin-top:18px}body{--checkbox-radius:50%;--checkbox-top:2px;--checkbox-left:0px;--checkbox-margin:0px 6px 0px -2em}.checkbox-square{--checkbox-size:calc(var(--font-text-size) * 0.85);--checkbox-radius:4px;--checkbox-top:1px;--checkbox-left:0px;--checkbox-margin:0px 8px 0px -2em}body.minimal-strike-lists{--checklist-done-decoration:line-through}body:not(.minimal-strike-lists){--checklist-done-decoration:none;--checklist-done-color:var(--text-normal)}.markdown-preview-section>.contains-task-list{padding-bottom:.5em}.mod-cm6 .HyperMD-task-line[data-task] .cm-formatting-list-ol~.task-list-label .task-list-item-checkbox{margin:1px}.markdown-preview-view .task-list-item-checkbox{position:relative;top:var(--checkbox-top);left:var(--checkbox-left);line-height:0}.markdown-preview-view ul>li.task-list-item{text-indent:0}.is-mobile .mod-cm6 .HyperMD-task-line[data-task] .task-list-item-checkbox{margin-inline-start:-.4em}.is-mobile .markdown-preview-view input[type=checkbox].task-list-item-checkbox{top:.2em}.minimal-code-scroll{--code-white-space:pre}.minimal-code-scroll .HyperMD-codeblock.HyperMD-codeblock-bg{overflow-y:scroll;white-space:pre}.minimal-code-scroll .cm-hmd-codeblock{white-space:pre!important}@media print{.print{--code-background:#eee!important}}body{--embed-max-height:none;--embed-decoration-style:solid;--embed-decoration-color:var(--background-modifier-border-hover)}.embed-strict{--embed-background:transparent;--embed-border-left:0;--embed-padding:0}.embed-strict .markdown-embed-content{--folding-offset:0px}.embed-strict .el-embed-heading.el-p>p{margin-block-start:0;margin-block-end:0}.embed-strict .internal-embed .markdown-embed,.embed-strict .markdown-preview-view .markdown-embed,.embed-strict.markdown-preview-view .markdown-embed{padding:0}.embed-strict .internal-embed .markdown-embed .markdown-embed-title,.embed-strict .markdown-embed-title{display:none}.embed-strict .internal-embed:not([src*="#^"]) .markdown-embed-link{width:24px;opacity:0}.embed-underline .internal-embed:not(.pdf-embed){text-decoration-line:underline;text-decoration-style:var(--embed-decoration-style);text-decoration-color:var(--embed-decoration-color)}.embed-hide-title .markdown-embed-title{display:none}.contextual-typography .embed-strict .internal-embed .markdown-preview-view .markdown-preview-sizer>div,.embed-strict.contextual-typography .internal-embed .markdown-preview-view .markdown-preview-sizer>div{margin:0;width:100%}.markdown-embed .markdown-preview-view .markdown-preview-sizer{padding-bottom:0!important}.markdown-preview-view.is-readable-line-width .markdown-embed .markdown-preview-sizer,.markdown-preview-view.markdown-embed .markdown-preview-sizer{max-width:100%;width:100%;min-height:0!important;padding-bottom:0!important}.markdown-embed .markdown-preview-section div:last-child p,.markdown-embed .markdown-preview-section div:last-child ul{margin-block-end:2px}.markdown-preview-view .markdown-embed{margin-top:var(--nested-padding);padding:0 calc(var(--nested-padding)/ 2) 0 var(--nested-padding)}.internal-embed:not([src*="#^"]) .markdown-embed-link{right:0;width:100%}.file-embed-link,.markdown-embed-link{top:0;right:0;text-align:right;justify-content:flex-end}.file-embed-link svg,.markdown-embed-link svg{width:16px;height:16px}.markdown-embed .file-embed-link,.markdown-embed .markdown-embed-link{opacity:.6;transition:opacity .1s linear}.markdown-embed .file-embed-link:hover,.markdown-embed .markdown-embed-link:hover{opacity:1}.markdown-embed .file-embed-link:hover:hover,.markdown-embed .markdown-embed-link:hover:hover{background-color:transparent;--icon-color:var(--text-accent)}.file-embed-link:hover,.markdown-embed-link:hover{color:var(--text-muted)}.markdown-embed .markdown-preview-view{padding:0}.internal-embed .markdown-embed{border:0;border-left:1px solid var(--quote-opening-modifier);border-radius:0}a[href*="obsidian://search"]{background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' width='17' height='17' class='search'><path fill='black' stroke='black' stroke-width='2' d='M42,6C23.2,6,8,21.2,8,40s15.2,34,34,34c7.4,0,14.3-2.4,19.9-6.4l26.3,26.3l5.6-5.6l-26-26.1c5.1-6,8.2-13.7,8.2-22.1 C76,21.2,60.8,6,42,6z M42,10c16.6,0,30,13.4,30,30S58.6,70,42,70S12,56.6,12,40S25.4,10,42,10z'></path></svg>")}.theme-dark a[href*="obsidian://search"]{background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' width='17' height='17' class='search'><path fill='white' stroke='white' stroke-width='2' d='M42,6C23.2,6,8,21.2,8,40s15.2,34,34,34c7.4,0,14.3-2.4,19.9-6.4l26.3,26.3l5.6-5.6l-26-26.1c5.1-6,8.2-13.7,8.2-22.1 C76,21.2,60.8,6,42,6z M42,10c16.6,0,30,13.4,30,30S58.6,70,42,70S12,56.6,12,40S25.4,10,42,10z'></path></svg>")}div>ol,div>ul{padding-inline-start:1.4em}ul>li{min-height:1.4em}ol>li{margin-inline-start:0}ol{margin-inline-start:0;list-style:default}body{--adaptive-list-edit-offset:var(--list-edit-offset)}.is-rtl{--adaptive-list-edit-offset:calc(var(--list-edit-offset)*-1)}.markdown-preview-view ol>li,.markdown-preview-view ul>li,.markdown-source-view ol>li,.markdown-source-view ul>li,.mod-cm6 .HyperMD-list-line.cm-line{padding-top:var(--list-spacing);padding-bottom:var(--list-spacing)}.is-mobile ul>li:not(.task-list-item)::marker{font-size:.8em}.is-mobile .markdown-rendered ol,.is-mobile .markdown-rendered ul{padding-inline-start:var(--list-indent)}.is-mobile .markdown-rendered div>ol,.is-mobile .markdown-rendered div>ul{padding-inline-start:2em}.is-mobile .el-ol>ol,.is-mobile .el-ul>ul{margin-inline-start:0}.is-mobile .workspace-leaf-content:not([data-type=search]) .workspace-leaf-content[data-type=markdown] .nav-buttons-container{border-bottom:none;padding-top:5px}.is-mobile .mod-root .workspace-leaf-content[data-type=markdown] .search-input-container{width:calc(100% - 160px)}.embedded-backlinks .nav-header~.search-input-container{width:calc(100% - 140px);margin-top:12px}.embedded-backlinks .nav-buttons-container{position:absolute;right:0;top:14px}.embedded-backlinks .backlink-pane>.tree-item-self,.embedded-backlinks .backlink-pane>.tree-item-self:hover{text-transform:none;color:var(--text-normal);font-size:var(--font-adaptive-normal);font-weight:500;letter-spacing:unset}body{--pdf-dark-opacity:1}.theme-dark:not(.pdf-shadows-on),.theme-light:not(.pdf-shadows-on){--pdf-shadow:none;--pdf-thumbnail-shadow:none}.theme-dark:not(.pdf-shadows-on) .pdf-viewer .page,.theme-light:not(.pdf-shadows-on) .pdf-viewer .page{border:0}.theme-dark:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnailSelectionRing,.theme-light:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnailSelectionRing{padding:0}.theme-dark:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnail::after,.theme-light:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnail::after{right:var(--size-4-2);bottom:var(--size-4-2)}.theme-dark{--pdf-thumbnail-shadow:0 0 1px 0 rgba(0,0,0,0.6);--pdf-shadow:0 0 1px 0 rgba(0,0,0,0.6)}.theme-dark .pdf-viewer .canvasWrapper{opacity:var(--pdf-dark-opacity)}.theme-dark.pdf-invert-dark .workspace-leaf-content[data-type=pdf] .pdf-thumbnail-view .thumbnailImage,.theme-dark.pdf-invert-dark .workspace-leaf-content[data-type=pdf] .pdf-viewer .canvasWrapper{filter:invert(1) hue-rotate(180deg);mix-blend-mode:screen}.theme-light.pdf-blend-light .workspace-leaf-content[data-type=pdf] .pdf-thumbnail-view .thumbnailImage,.theme-light.pdf-blend-light .workspace-leaf-content[data-type=pdf] .pdf-viewer .canvasWrapper{mix-blend-mode:multiply}body{--table-header-border-width:0;--table-column-first-border-width:0;--table-column-last-border-width:0;--table-row-last-border-width:0;--table-edge-cell-padding-first:0;--table-edge-cell-padding-last:0;--table-cell-padding:4px 10px;--table-header-size:var(--table-text-size)}.markdown-source-view.mod-cm6 table{border-collapse:collapse}.markdown-rendered th{--table-header-size:var(--table-text-size)}.markdown-preview-view table,.markdown-source-view.mod-cm6 table{border:var(--border-width) solid var(--border-color);border-collapse:collapse}.markdown-preview-view td,.markdown-preview-view th,.markdown-source-view.mod-cm6 td,.markdown-source-view.mod-cm6 th{padding:var(--table-cell-padding)}.markdown-preview-view td:first-child,.markdown-preview-view th:first-child,.markdown-source-view.mod-cm6 td:first-child,.markdown-source-view.mod-cm6 th:first-child{padding-left:var(--table-edge-cell-padding-first)}.markdown-preview-view td:first-child .table-cell-wrapper,.markdown-preview-view th:first-child .table-cell-wrapper,.markdown-source-view.mod-cm6 td:first-child .table-cell-wrapper,.markdown-source-view.mod-cm6 th:first-child .table-cell-wrapper{padding-left:0}.markdown-preview-view td:last-child,.markdown-preview-view th:last-child,.markdown-source-view.mod-cm6 td:last-child,.markdown-source-view.mod-cm6 th:last-child{padding-right:var(--table-edge-cell-padding-last)}.markdown-preview-view td:last-child .table-cell-wrapper,.markdown-preview-view th:last-child .table-cell-wrapper,.markdown-source-view.mod-cm6 td:last-child .table-cell-wrapper,.markdown-source-view.mod-cm6 th:last-child .table-cell-wrapper{padding-right:0}.markdown-preview-view th,.markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th,.table-view-table>thead>tr>th{padding:var(--table-cell-padding)}.markdown-preview-view th:first-child,.markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th:first-child,.table-view-table>thead>tr>th:first-child{padding-left:var(--table-edge-cell-padding-first)}.markdown-preview-view th:last-child,.markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th:last-child,.table-view-table>thead>tr>th:last-child{padding-right:var(--table-edge-cell-padding-last)}.is-live-preview .el-table{width:100%;max-width:100%}.cm-hmd-table-sep-dummy,.cm-s-obsidian .HyperMD-table-row span.cm-hmd-table-sep{color:var(--text-faint);font-weight:400}body.minimal-unstyled-tags{--tag-background:transparent;--tag-background-hover:transparent;--tag-border-width:0px;--tag-padding-x:0;--tag-padding-y:0;--tag-size:inherit;--tag-color-hover:var(--text-accent-hover)}body.minimal-unstyled-tags.is-mobile.theme-dark{--tag-background:transparent}body:not(.minimal-unstyled-tags){--tag-size:0.8em;--tag-padding-y:0.2em;--tag-background:transparent;--tag-background-hover:transparent;--tag-color:var(--text-muted);--tag-border-width:1px;--tag-border-color:var(--background-modifier-border);--tag-border-color-hover:var(--background-modifier-border-hover);--tag-color-hover:var(--text-normal)}body.is-mobile.theme-dark{--tag-background:transparent}h1,h2,h3,h4{letter-spacing:-.02em}body,button,input{font-family:var(--font-interface)}.cm-s-obsidian span.cm-error{color:var(--color-red)}.markdown-preview-view,.popover,.workspace-leaf-content[data-type=markdown]{font-family:var(--font-text)}.markdown-preview-view,.view-content>.cm-s-obsidian,.view-content>.markdown-source-view.mod-cm6.is-live-preview>.cm-scroller,body{font-size:var(--font-adaptive-normal);font-weight:var(--normal-weight)}.view-content>.cm-s-obsidian,.view-content>.markdown-source-view,.view-content>.markdown-source-view.mod-cm6 .cm-scroller{font-family:var(--font-editor)}.active-line-on .cm-line.cm-active,.active-line-on .markdown-source-view.mod-cm6.is-live-preview .HyperMD-quote.cm-active{background-color:var(--active-line-bg);box-shadow:-25vw 0 var(--active-line-bg),25vw 0 var(--active-line-bg)}body{--content-margin:auto;--content-margin-start:max( calc(50% - var(--line-width)/2), calc(50% - var(--max-width)/2) );--content-line-width:min(var(--line-width), var(--max-width))}.markdown-preview-view .markdown-preview-sizer.markdown-preview-sizer{max-width:100%;margin-inline:auto;width:100%}.markdown-source-view.mod-cm6.is-readable-line-width .cm-content,.markdown-source-view.mod-cm6.is-readable-line-width .cm-sizer{max-width:100%;width:100%}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div,.markdown-source-view.mod-cm6.is-readable-line-width .cm-sizer>.embedded-backlinks,.markdown-source-view.mod-cm6.is-readable-line-width .cm-sizer>.inline-title,.markdown-source-view.mod-cm6.is-readable-line-width .cm-sizer>.metadata-container{max-width:var(--max-width);width:var(--line-width);margin-inline:var(--content-margin)!important}.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>:not(div){max-width:var(--content-line-width);margin-inline-start:var(--content-margin-start)!important}.is-readable-line-width{--file-margins:1rem 0 0 0}.is-mobile .markdown-preview-view{--folding-offset:0}.minimal-line-nums .workspace-leaf-content[data-type=markdown]{--file-margins:var(--size-4-8) var(--size-4-8) var(--size-4-8) 48px}.minimal-line-nums .workspace-leaf-content[data-type=markdown].is-rtl{--file-margins:var(--size-4-8) 48px var(--size-4-8) var(--size-4-8)}.minimal-line-nums .workspace-leaf-content[data-type=markdown] .is-readable-line-width{--file-margins:1rem 0 0 var(--folding-offset)}.minimal-line-nums .workspace-leaf-content[data-type=markdown] .is-readable-line-width.is-rtl{--file-margins:1rem var(--folding-offset) 0 0}.minimal-line-nums .mod-left-split .markdown-preview-view,.minimal-line-nums .mod-left-split .markdown-source-view.mod-cm6 .cm-scroller,.minimal-line-nums .mod-right-split .markdown-preview-view,.minimal-line-nums .mod-right-split .markdown-source-view.mod-cm6 .cm-scroller{--file-margins:var(--size-4-5) var(--size-4-5) var(--size-4-5) 48px}.view-content .reader-mode-content.is-readable-line-width .markdown-preview-sizer{max-width:var(--max-width);width:var(--line-width)}.markdown-preview-view .inline-embed{--max-width:100%}body{--container-table-width:var(--line-width);--container-table-max-width:var(--max-width);--table-max-width:none;--table-width:auto;--table-margin:inherit;--container-img-width:var(--line-width);--container-img-max-width:var(--max-width);--img-max-width:100%;--img-width:auto;--img-margin-start:var(--content-margin-start);--img-line-width:var(--content-line-width);--container-chart-width:var(--line-width);--container-chart-max-width:var(--max-width);--chart-max-width:none;--chart-width:auto;--container-map-width:var(--line-width);--container-map-max-width:var(--max-width);--map-max-width:none;--map-width:auto;--container-iframe-width:var(--line-width);--container-iframe-max-width:var(--max-width);--iframe-max-width:none;--iframe-width:auto}body .wide{--line-width:var(--line-width-wide);--container-table-width:var(--line-width-wide);--container-img-width:var(--line-width-wide);--container-iframe-width:var(--line-width-wide);--container-map-width:var(--line-width-wide);--container-chart-width:var(--line-width-wide)}body .max{--line-width:var(--max-width);--container-table-width:var(--max-width);--container-img-width:var(--max-width);--container-iframe-width:var(--max-width);--container-map-width:var(--max-width);--container-chart-width:var(--max-width)}table.dataview{--table-min-width:min(var(--line-width),var(--max-width))}.cards table.dataview{--table-width:100%;--table-min-width:none}.maximize-tables-auto{--container-table-max-width:100%;--container-table-width:100%;--table-max-width:100%;--table-margin:var(--content-margin-start) auto;--table-width:auto}.maximize-tables-auto .cards{--container-table-max-width:var(--max-width)}.maximize-tables-auto .cards .block-language-dataview{--table-margin:auto}.maximize-tables{--container-table-max-width:100%;--container-table-width:100%;--table-min-width:min(var(--line-width), var(--max-width));--table-max-width:100%;--table-margin:auto;--table-width:auto;--table-edge-cell-padding-first:10px}.table-100,.table-max,.table-wide{--table-max-width:100%;--table-width:100%}.table-wide{--container-table-width:var(--line-width-wide);--table-edge-cell-padding-first:0px}.table-max{--container-table-width:var(--max-width);--table-edge-cell-padding-first:0px;--table-margin:0}.table-100{--container-table-width:100%;--container-table-max-width:100%;--table-edge-cell-padding-first:20px;--table-margin:0}.table-100 .dataview.list-view-ul{max-width:var(--max-width);width:var(--line-width);margin-inline:auto}.img-100,.img-max,.img-wide{--img-max-width:100%;--img-width:100%}.img-wide{--container-img-width:var(--line-width-wide);--img-line-width:var(--line-width-wide);--img-margin-start:calc(50% - var(--line-width-wide)/2)}.img-max{--container-img-width:var(--max-width);--img-line-width:var(--max-width);--img-margin-start:calc(50% - var(--max-width)/2)}.img-100{--container-img-width:100%;--container-img-max-width:100%;--img-line-width:100%;--img-margin-start:0}.map-100,.map-max,.map-wide{--map-max-width:100%;--map-width:100%}.map-wide{--container-map-width:var(--line-width-wide)}.map-max{--container-map-width:var(--max-width)}.map-100{--container-map-width:100%;--container-map-max-width:100%}.chart-100,.chart-max,.chart-wide{--chart-max-width:100%;--chart-width:100%}.chart-wide{--container-chart-width:var(--line-width-wide)}.chart-max{--container-chart-width:var(--max-width)}.chart-100{--container-chart-width:100%;--container-chart-max-width:100%}.iframe-100,.iframe-max,.iframe-wide{--iframe-max-width:100%;--iframe-width:100%}.iframe-wide{--container-iframe-width:var(--line-width-wide)}.iframe-max{--container-iframe-width:var(--max-width)}.iframe-100{--container-iframe-width:100%;--container-iframe-max-width:100%}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer .cm-table-widget,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(>.block-language-dataview>table),.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(>.block-language-dataviewjs),.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(>table),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content .cm-table-widget,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(>.block-language-dataview>table),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(>.block-language-dataviewjs),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(>table){width:var(--container-table-width);max-width:var(--container-table-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer table,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content table{width:var(--table-width);max-width:var(--table-max-width);margin-inline:var(--table-margin);min-width:var(--table-min-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer .block-language-dataviewjs>:is(p,h1,h2,h3,h4,h5,h6),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content .block-language-dataviewjs>:is(p,h1,h2,h3,h4,h5,h6){width:var(--line-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer .block-language-dataviewjs>.dataview-error,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content .block-language-dataviewjs>.dataview-error{margin:0 auto;width:var(--content-line-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer .dataview.dataview-error-box,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content .dataview.dataview-error-box{margin-inline:var(--table-margin)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.image-embed,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>.image-embed{padding-top:.25rem;padding-bottom:.25rem}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.image-embed,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(.image-embed),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>.image-embed,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(.image-embed){width:var(--container-img-width);max-width:var(--container-img-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.image-embed img,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(.image-embed) img,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>.image-embed img,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(.image-embed) img{max-width:var(--img-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>img,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>img{max-width:var(--img-line-width);margin-inline-start:var(--img-margin-start)!important}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-chart),.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-dataviewjs canvas),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-chart),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-dataviewjs canvas){width:var(--container-chart-width);max-width:var(--container-chart-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-chart) canvas,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-dataviewjs canvas) canvas,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-chart) canvas,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-dataviewjs canvas) canvas{max-width:var(--map-chart-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-leaflet),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-leaflet){width:var(--container-map-width);max-width:var(--container-map-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-leaflet) iframe,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-leaflet) iframe{max-width:var(--map-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.cm-html-embed),.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(>iframe),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.cm-html-embed),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(>iframe){width:var(--container-iframe-width);max-width:var(--container-iframe-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.cm-html-embed) iframe,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(>iframe) iframe,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.cm-html-embed) iframe,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(>iframe) iframe{max-width:var(--iframe-max-width);width:var(--iframe-width)}.borders-none{--divider-width:0px;--tab-outline-width:0px}body{--cards-min-width:180px;--cards-max-width:1fr;--cards-mobile-width:120px;--cards-image-height:400px;--cards-padding:1.2em;--cards-image-fit:contain;--cards-background:transparent;--cards-border-width:1px;--cards-aspect-ratio:auto;--cards-columns:repeat(auto-fit, minmax(var(--cards-min-width), var(--cards-max-width)))}@media (max-width:400pt){body{--cards-min-width:var(--cards-mobile-width)}}.cards.table-100 table.dataview tbody,.table-100 .cards table.dataview tbody{padding:.25rem .75rem}.cards table.dataview{--table-width:100%;--table-edge-cell-padding-first:calc(var(--cards-padding)/2);--table-edge-cell-padding-last:calc(var(--cards-padding)/2);--table-cell-padding:calc(var(--cards-padding)/3) calc(var(--cards-padding)/2);line-height:1.3}.cards table.dataview tbody{clear:both;padding:.5rem 0;display:grid;grid-template-columns:var(--cards-columns);grid-column-gap:0.75rem;grid-row-gap:0.75rem}.cards table.dataview>tbody>tr{background-color:var(--cards-background);border:var(--cards-border-width) solid var(--background-modifier-border);display:flex;flex-direction:column;margin:0;padding:0 0 calc(var(--cards-padding)/3) 0;border-radius:6px;overflow:hidden;transition:box-shadow .15s linear;max-width:var(--cards-max-width)}.cards table.dataview>tbody>tr:hover{border:var(--cards-border-width) solid var(--background-modifier-border-hover);box-shadow:0 4px 6px 0 rgba(0,0,0,.05),0 1px 3px 1px rgba(0,0,0,.025);transition:box-shadow .15s linear}.cards table.dataview tbody>tr>td:first-child{font-weight:var(--bold-weight);border:none}.cards table.dataview tbody>tr>td:first-child a{display:block}.cards table.dataview tbody>tr>td:last-child{border:none}.cards table.dataview tbody>tr>td:not(:first-child){font-size:calc(var(--table-text-size) * .9);color:var(--text-muted)}.cards table.dataview tbody>tr>td>*{padding:calc(var(--cards-padding)/3) 0}.cards table.dataview tbody>tr>td:not(:last-child):not(:first-child){padding:4px 0;border-bottom:1px solid var(--background-modifier-border);width:calc(100% - var(--cards-padding));margin:0 calc(var(--cards-padding)/2)}.cards table.dataview tbody>tr>td a{text-decoration:none}.cards table.dataview tbody>tr>td>button{width:100%;margin:calc(var(--cards-padding)/2) 0}.cards table.dataview tbody>tr>td:last-child>button{margin-bottom:calc(var(--cards-padding)/6)}.cards table.dataview tbody>tr>td>ul{width:100%;padding:.25em 0!important;margin:0 auto!important}.cards table.dataview tbody>tr>td:has(img){padding:0!important;background-color:var(--background-secondary);display:block;margin:0;width:100%}.cards table.dataview tbody>tr>td img{aspect-ratio:var(--cards-aspect-ratio);width:100%;object-fit:var(--cards-image-fit);max-height:var(--cards-image-height);background-color:var(--background-secondary);vertical-align:bottom}.markdown-source-view.mod-cm6.cards .dataview.table-view-table>tbody>tr>td,.trim-cols .cards table.dataview tbody>tr>td{white-space:normal}.links-int-on .cards table{--link-decoration:none}.markdown-source-view.mod-cm6.cards .edit-block-button{top:0}.cards.table-100 table.dataview thead>tr,.table-100 .cards table.dataview thead>tr{right:.75rem}.cards.table-100 table.dataview thead:before,.table-100 .cards table.dataview thead:before{margin-right:.75rem}.theme-light .cards table.dataview thead:before{background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 100 100"><path fill="black" d="M49.792 33.125l-5.892 5.892L33.333 28.45V83.333H25V28.45L14.438 39.017L8.542 33.125L29.167 12.5l20.625 20.625zm41.667 33.75L70.833 87.5l-20.625 -20.625l5.892 -5.892l10.571 10.567L66.667 16.667h8.333v54.883l10.567 -10.567l5.892 5.892z"></path></svg>')}.cards table.dataview thead{user-select:none;width:180px;display:block;float:right;position:relative;text-align:right;height:24px;padding-bottom:0}.cards table.dataview thead:hover:before{opacity:.5;background-color:var(--background-modifier-hover)}.cards table.dataview thead:before{content:'';position:absolute;right:0;top:0;width:10px;height:16px;background-repeat:no-repeat;cursor:var(--cursor);text-align:right;padding:var(--size-4-1) var(--size-4-2);margin-bottom:2px;border-radius:var(--radius-s);font-weight:500;font-size:var(--font-adaptive-small);opacity:.25;background-position:center center;background-size:16px;background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 100 100"><path fill="white" d="M49.792 33.125l-5.892 5.892L33.333 28.45V83.333H25V28.45L14.438 39.017L8.542 33.125L29.167 12.5l20.625 20.625zm41.667 33.75L70.833 87.5l-20.625 -20.625l5.892 -5.892l10.571 10.567L66.667 16.667h8.333v54.883l10.567 -10.567l5.892 5.892z"></path></svg>')}.cards table.dataview thead>tr{top:-1px;position:absolute;display:none;z-index:9;border:1px solid var(--background-modifier-border-hover);background-color:var(--background-secondary);box-shadow:var(--shadow-s);padding:6px;border-radius:var(--radius-m);flex-direction:column;margin:24px 0 0 0;width:100%}.cards table.dataview thead:hover>tr{display:flex}.cards table.dataview thead>tr>th{display:block;padding:3px 30px 3px 6px!important;border-radius:var(--radius-s);width:100%;font-weight:400;color:var(--text-normal);cursor:var(--cursor);border:none;font-size:var(--font-ui-small)}.cards table.dataview thead>tr>th[sortable-style=sortable-asc],.cards table.dataview thead>tr>th[sortable-style=sortable-desc]{color:var(--text-normal)}.cards table.dataview thead>tr>th:hover{color:var(--text-normal);background-color:var(--background-modifier-hover)}.list-cards.markdown-preview-view .list-bullet,.list-cards.markdown-preview-view .list-collapse-indicator,.list-cards.markdown-preview-view.markdown-rendered.show-indentation-guide li>ul::before{display:none}.list-cards.markdown-preview-view div>ul{display:grid;gap:.75rem;grid-template-columns:var(--cards-columns);padding:0;line-height:var(--line-height-tight)}.list-cards.markdown-preview-view div>ul>li{background-color:var(--cards-background);padding:calc(var(--cards-padding)/2);border-radius:var(--radius-s);border:var(--cards-border-width) solid var(--background-modifier-border);overflow:hidden}.list-cards.markdown-preview-view div>ul .image-embed{padding:0;display:block;background-color:var(--background-secondary);border-radius:var(--image-radius)}.list-cards.markdown-preview-view div>ul .image-embed img{aspect-ratio:var(--cards-aspect-ratio);object-fit:var(--cards-image-fit);max-height:var(--cards-image-height);background-color:var(--background-secondary);vertical-align:bottom}.list-cards.markdown-preview-view div>ul>li>a{--link-decoration:none;--link-external-decoration:none;font-weight:var(--bold-weight)}.list-cards.markdown-preview-view div ul>li:hover{border-color:var(--background-modifier-border-hover)}.list-cards.markdown-preview-view div ul ul{display:block;width:100%;color:var(--text-muted);font-size:var(--font-smallest);margin:calc(var(--cards-padding)/-4) 0;padding:calc(var(--cards-padding)/2) 0}.list-cards.markdown-preview-view div ul ul ul{padding-bottom:calc(var(--cards-padding)/4)}.list-cards.markdown-preview-view div ul ul>li{display:block}.cards.cards-16-9,.list-cards.cards-16-9{--cards-aspect-ratio:16/9}.cards.cards-1-1,.list-cards.cards-1-1{--cards-aspect-ratio:1/1}.cards.cards-2-1,.list-cards.cards-2-1{--cards-aspect-ratio:2/1}.cards.cards-2-3,.list-cards.cards-2-3{--cards-aspect-ratio:2/3}.cards.cards-cols-1,.list-cards.cards-cols-1{--cards-columns:repeat(1, minmax(0, 1fr))}.cards.cards-cols-2,.list-cards.cards-cols-2{--cards-columns:repeat(2, minmax(0, 1fr))}.cards.cards-cover,.list-cards.cards-cover{--cards-image-fit:cover}.cards.cards-align-bottom table.dataview tbody>tr>td:last-child,.list-cards.cards-align-bottom table.dataview tbody>tr>td:last-child{margin-top:auto}@media (max-width:400pt){.cards table.dataview tbody>tr>td:not(:first-child){font-size:80%}}@media (min-width:400pt){.cards-cols-3{--cards-columns:repeat(3, minmax(0, 1fr))}.cards-cols-4{--cards-columns:repeat(4, minmax(0, 1fr))}.cards-cols-5{--cards-columns:repeat(5, minmax(0, 1fr))}.cards-cols-6{--cards-columns:repeat(6, minmax(0, 1fr))}.cards-cols-7{--cards-columns:repeat(7, minmax(0, 1fr))}.cards-cols-8{--cards-columns:repeat(8, minmax(0, 1fr))}}.cm-formatting.cm-formatting-task.cm-property{font-family:var(--font-monospace);font-size:90%}input[data-task="!"]:checked,input[data-task="*"]:checked,input[data-task="-"]:checked,input[data-task="<"]:checked,input[data-task=">"]:checked,input[data-task="I"]:checked,input[data-task="b"]:checked,input[data-task="c"]:checked,input[data-task="d"]:checked,input[data-task="f"]:checked,input[data-task="k"]:checked,input[data-task="l"]:checked,input[data-task="p"]:checked,input[data-task="u"]:checked,input[data-task="w"]:checked,li[data-task="!"]>input:checked,li[data-task="!"]>p>input:checked,li[data-task="*"]>input:checked,li[data-task="*"]>p>input:checked,li[data-task="-"]>input:checked,li[data-task="-"]>p>input:checked,li[data-task="<"]>input:checked,li[data-task="<"]>p>input:checked,li[data-task=">"]>input:checked,li[data-task=">"]>p>input:checked,li[data-task="I"]>input:checked,li[data-task="I"]>p>input:checked,li[data-task="b"]>input:checked,li[data-task="b"]>p>input:checked,li[data-task="c"]>input:checked,li[data-task="c"]>p>input:checked,li[data-task="d"]>input:checked,li[data-task="d"]>p>input:checked,li[data-task="f"]>input:checked,li[data-task="f"]>p>input:checked,li[data-task="k"]>input:checked,li[data-task="k"]>p>input:checked,li[data-task="l"]>input:checked,li[data-task="l"]>p>input:checked,li[data-task="p"]>input:checked,li[data-task="p"]>p>input:checked,li[data-task="u"]>input:checked,li[data-task="u"]>p>input:checked,li[data-task="w"]>input:checked,li[data-task="w"]>p>input:checked{--checkbox-marker-color:transparent;border:none;border-radius:0;background-image:none;background-color:currentColor;-webkit-mask-size:var(--checkbox-icon);-webkit-mask-position:50% 50%}input[data-task=">"]:checked,li[data-task=">"]>input:checked,li[data-task=">"]>p>input:checked{color:var(--text-faint);transform:rotate(90deg);-webkit-mask-position:50% 100%;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M10.894 2.553a1 1 0 00-1.788 0l-7 14a1 1 0 001.169 1.409l5-1.429A1 1 0 009 15.571V11a1 1 0 112 0v4.571a1 1 0 00.725.962l5 1.428a1 1 0 001.17-1.408l-7-14z' /%3E%3C/svg%3E")}input[data-task="<"]:checked,li[data-task="<"]>input:checked,li[data-task="<"]>p>input:checked{color:var(--text-faint);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z' clip-rule='evenodd' /%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M6 2a1 1 0 00-1 1v1H4a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2h-1V3a1 1 0 10-2 0v1H7V3a1 1 0 00-1-1zm0 5a1 1 0 000 2h8a1 1 0 100-2H6z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="?"]:checked,li[data-task="?"]>input:checked,li[data-task="?"]>p>input:checked{--checkbox-marker-color:transparent;background-color:var(--color-yellow);border-color:var(--color-yellow);background-position:50% 50%;background-size:200% 90%;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 16 16"%3E%3Cpath fill="white" fill-rule="evenodd" d="M4.475 5.458c-.284 0-.514-.237-.47-.517C4.28 3.24 5.576 2 7.825 2c2.25 0 3.767 1.36 3.767 3.215c0 1.344-.665 2.288-1.79 2.973c-1.1.659-1.414 1.118-1.414 2.01v.03a.5.5 0 0 1-.5.5h-.77a.5.5 0 0 1-.5-.495l-.003-.2c-.043-1.221.477-2.001 1.645-2.712c1.03-.632 1.397-1.135 1.397-2.028c0-.979-.758-1.698-1.926-1.698c-1.009 0-1.71.529-1.938 1.402c-.066.254-.278.461-.54.461h-.777ZM7.496 14c.622 0 1.095-.474 1.095-1.09c0-.618-.473-1.092-1.095-1.092c-.606 0-1.087.474-1.087 1.091S6.89 14 7.496 14Z"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="?"]:checked,.theme-dark li[data-task="?"]>input:checked,.theme-dark li[data-task="?"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 16 16"%3E%3Cpath fill="black" fill-opacity="0.8" fill-rule="evenodd" d="M4.475 5.458c-.284 0-.514-.237-.47-.517C4.28 3.24 5.576 2 7.825 2c2.25 0 3.767 1.36 3.767 3.215c0 1.344-.665 2.288-1.79 2.973c-1.1.659-1.414 1.118-1.414 2.01v.03a.5.5 0 0 1-.5.5h-.77a.5.5 0 0 1-.5-.495l-.003-.2c-.043-1.221.477-2.001 1.645-2.712c1.03-.632 1.397-1.135 1.397-2.028c0-.979-.758-1.698-1.926-1.698c-1.009 0-1.71.529-1.938 1.402c-.066.254-.278.461-.54.461h-.777ZM7.496 14c.622 0 1.095-.474 1.095-1.09c0-.618-.473-1.092-1.095-1.092c-.606 0-1.087.474-1.087 1.091S6.89 14 7.496 14Z"%2F%3E%3C%2Fsvg%3E')}input[data-task="/"]:checked,li[data-task="/"]>input:checked,li[data-task="/"]>p>input:checked{background-image:none;background-color:transparent;position:relative;overflow:hidden}input[data-task="/"]:checked:after,li[data-task="/"]>input:checked:after,li[data-task="/"]>p>input:checked:after{top:0;left:0;content:" ";display:block;position:absolute;background-color:var(--background-modifier-accent);width:calc(50% - .5px);height:100%;-webkit-mask-image:none}input[data-task="!"]:checked,li[data-task="!"]>input:checked,li[data-task="!"]>p>input:checked{color:var(--color-orange);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="\""]:checked,input[data-task="“"]:checked,li[data-task="\""]>input:checked,li[data-task="\""]>p>input:checked,li[data-task="“"]>input:checked,li[data-task="“"]>p>input:checked{--checkbox-marker-color:transparent;background-position:50% 50%;background-color:var(--color-cyan);border-color:var(--color-cyan);background-size:75%;background-repeat:no-repeat;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"%3E%3Cpath fill="white" d="M6.5 10c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.318.142-.686.238-1.028.466c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.945c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 6.5 10zm11 0c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.317.143-.686.238-1.028.467c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.944c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 17.5 10z"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="\""]:checked,.theme-dark input[data-task="“"]:checked,.theme-dark li[data-task="\""]>input:checked,.theme-dark li[data-task="\""]>p>input:checked,.theme-dark li[data-task="“"]>input:checked,.theme-dark li[data-task="“"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"%3E%3Cpath fill="black" fill-opacity="0.7" d="M6.5 10c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.318.142-.686.238-1.028.466c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.945c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 6.5 10zm11 0c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.317.143-.686.238-1.028.467c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.944c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 17.5 10z"%2F%3E%3C%2Fsvg%3E')}input[data-task="-"]:checked,li[data-task="-"]>input:checked,li[data-task="-"]>p>input:checked{color:var(--text-faint);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z' clip-rule='evenodd' /%3E%3C/svg%3E")}body:not(.tasks) .markdown-preview-view ul li[data-task="-"].task-list-item.is-checked,body:not(.tasks) .markdown-source-view.mod-cm6 .HyperMD-task-line[data-task]:is([data-task="-"]),body:not(.tasks) li[data-task="-"].task-list-item.is-checked{color:var(--text-faint);text-decoration:line-through solid var(--text-faint) 1px}input[data-task="*"]:checked,li[data-task="*"]>input:checked,li[data-task="*"]>p>input:checked{color:var(--color-yellow);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z' /%3E%3C/svg%3E")}input[data-task="l"]:checked,li[data-task="l"]>input:checked,li[data-task="l"]>p>input:checked{color:var(--color-red);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="i"]:checked,li[data-task="i"]>input:checked,li[data-task="i"]>p>input:checked{--checkbox-marker-color:transparent;background-color:var(--color-blue);border-color:var(--color-blue);background-position:50%;background-size:100%;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512"%3E%3Cpath fill="none" stroke="white" stroke-linecap="round" stroke-linejoin="round" stroke-width="40" d="M196 220h64v172"%2F%3E%3Cpath fill="none" stroke="white" stroke-linecap="round" stroke-miterlimit="10" stroke-width="40" d="M187 396h138"%2F%3E%3Cpath fill="white" d="M256 160a32 32 0 1 1 32-32a32 32 0 0 1-32 32Z"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="i"]:checked,.theme-dark li[data-task="i"]>input:checked,.theme-dark li[data-task="i"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512"%3E%3Cpath fill="none" stroke="black" stroke-opacity="0.8" stroke-linecap="round" stroke-linejoin="round" stroke-width="40" d="M196 220h64v172"%2F%3E%3Cpath fill="none" stroke="black" stroke-opacity="0.8" stroke-linecap="round" stroke-miterlimit="10" stroke-width="40" d="M187 396h138"%2F%3E%3Cpath fill="black" fill-opacity="0.8" d="M256 160a32 32 0 1 1 32-32a32 32 0 0 1-32 32Z"%2F%3E%3C%2Fsvg%3E')}input[data-task="S"]:checked,li[data-task="S"]>input:checked,li[data-task="S"]>p>input:checked{--checkbox-marker-color:transparent;border-color:var(--color-green);background-color:var(--color-green);background-size:100%;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 48 48"%3E%3Cpath fill="white" fill-rule="evenodd" d="M26 8a2 2 0 1 0-4 0v2a8 8 0 1 0 0 16v8a4.002 4.002 0 0 1-3.773-2.666a2 2 0 0 0-3.771 1.332A8.003 8.003 0 0 0 22 38v2a2 2 0 1 0 4 0v-2a8 8 0 1 0 0-16v-8a4.002 4.002 0 0 1 3.773 2.666a2 2 0 0 0 3.771-1.332A8.003 8.003 0 0 0 26 10V8Zm-4 6a4 4 0 0 0 0 8v-8Zm4 12v8a4 4 0 0 0 0-8Z" clip-rule="evenodd"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="S"]:checked,.theme-dark li[data-task="S"]>input:checked,.theme-dark li[data-task="S"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 48 48"%3E%3Cpath fill-opacity="0.8" fill="black" fill-rule="evenodd" d="M26 8a2 2 0 1 0-4 0v2a8 8 0 1 0 0 16v8a4.002 4.002 0 0 1-3.773-2.666a2 2 0 0 0-3.771 1.332A8.003 8.003 0 0 0 22 38v2a2 2 0 1 0 4 0v-2a8 8 0 1 0 0-16v-8a4.002 4.002 0 0 1 3.773 2.666a2 2 0 0 0 3.771-1.332A8.003 8.003 0 0 0 26 10V8Zm-4 6a4 4 0 0 0 0 8v-8Zm4 12v8a4 4 0 0 0 0-8Z" clip-rule="evenodd"%2F%3E%3C%2Fsvg%3E')}input[data-task="I"]:checked,li[data-task="I"]>input:checked,li[data-task="I"]>p>input:checked{color:var(--color-yellow);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M11 3a1 1 0 10-2 0v1a1 1 0 102 0V3zM15.657 5.757a1 1 0 00-1.414-1.414l-.707.707a1 1 0 001.414 1.414l.707-.707zM18 10a1 1 0 01-1 1h-1a1 1 0 110-2h1a1 1 0 011 1zM5.05 6.464A1 1 0 106.464 5.05l-.707-.707a1 1 0 00-1.414 1.414l.707.707zM5 10a1 1 0 01-1 1H3a1 1 0 110-2h1a1 1 0 011 1zM8 16v-1h4v1a2 2 0 11-4 0zM12 14c.015-.34.208-.646.477-.859a4 4 0 10-4.954 0c.27.213.462.519.476.859h4.002z' /%3E%3C/svg%3E")}input[data-task="f"]:checked,li[data-task="f"]>input:checked,li[data-task="f"]>p>input:checked{color:var(--color-red);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12.395 2.553a1 1 0 00-1.45-.385c-.345.23-.614.558-.822.88-.214.33-.403.713-.57 1.116-.334.804-.614 1.768-.84 2.734a31.365 31.365 0 00-.613 3.58 2.64 2.64 0 01-.945-1.067c-.328-.68-.398-1.534-.398-2.654A1 1 0 005.05 6.05 6.981 6.981 0 003 11a7 7 0 1011.95-4.95c-.592-.591-.98-.985-1.348-1.467-.363-.476-.724-1.063-1.207-2.03zM12.12 15.12A3 3 0 017 13s.879.5 2.5.5c0-1 .5-4 1.25-4.5.5 1 .786 1.293 1.371 1.879A2.99 2.99 0 0113 13a2.99 2.99 0 01-.879 2.121z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="k"]:checked,li[data-task="k"]>input:checked,li[data-task="k"]>p>input:checked{color:var(--color-yellow);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M18 8a6 6 0 01-7.743 5.743L10 14l-1 1-1 1H6v2H2v-4l4.257-4.257A6 6 0 1118 8zm-6-4a1 1 0 100 2 2 2 0 012 2 1 1 0 102 0 4 4 0 00-4-4z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="u"]:checked,li[data-task="u"]>input:checked,li[data-task="u"]>p>input:checked{color:var(--color-green);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12 7a1 1 0 110-2h5a1 1 0 011 1v5a1 1 0 11-2 0V8.414l-4.293 4.293a1 1 0 01-1.414 0L8 10.414l-4.293 4.293a1 1 0 01-1.414-1.414l5-5a1 1 0 011.414 0L11 10.586 14.586 7H12z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="d"]:checked,li[data-task="d"]>input:checked,li[data-task="d"]>p>input:checked{color:var(--color-red);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12 13a1 1 0 100 2h5a1 1 0 001-1V9a1 1 0 10-2 0v2.586l-4.293-4.293a1 1 0 00-1.414 0L8 9.586 3.707 5.293a1 1 0 00-1.414 1.414l5 5a1 1 0 001.414 0L11 9.414 14.586 13H12z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="w"]:checked,li[data-task="w"]>input:checked,li[data-task="w"]>p>input:checked{color:var(--color-purple);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M6 3a1 1 0 011-1h.01a1 1 0 010 2H7a1 1 0 01-1-1zm2 3a1 1 0 00-2 0v1a2 2 0 00-2 2v1a2 2 0 00-2 2v.683a3.7 3.7 0 011.055.485 1.704 1.704 0 001.89 0 3.704 3.704 0 014.11 0 1.704 1.704 0 001.89 0 3.704 3.704 0 014.11 0 1.704 1.704 0 001.89 0A3.7 3.7 0 0118 12.683V12a2 2 0 00-2-2V9a2 2 0 00-2-2V6a1 1 0 10-2 0v1h-1V6a1 1 0 10-2 0v1H8V6zm10 8.868a3.704 3.704 0 01-4.055-.036 1.704 1.704 0 00-1.89 0 3.704 3.704 0 01-4.11 0 1.704 1.704 0 00-1.89 0A3.704 3.704 0 012 14.868V17a1 1 0 001 1h14a1 1 0 001-1v-2.132zM9 3a1 1 0 011-1h.01a1 1 0 110 2H10a1 1 0 01-1-1zm3 0a1 1 0 011-1h.01a1 1 0 110 2H13a1 1 0 01-1-1z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="p"]:checked,li[data-task="p"]>input:checked,li[data-task="p"]>p>input:checked{color:var(--color-green);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M2 10.5a1.5 1.5 0 113 0v6a1.5 1.5 0 01-3 0v-6zM6 10.333v5.43a2 2 0 001.106 1.79l.05.025A4 4 0 008.943 18h5.416a2 2 0 001.962-1.608l1.2-6A2 2 0 0015.56 8H12V4a2 2 0 00-2-2 1 1 0 00-1 1v.667a4 4 0 01-.8 2.4L6.8 7.933a4 4 0 00-.8 2.4z' /%3E%3C/svg%3E")}input[data-task="c"]:checked,li[data-task="c"]>input:checked,li[data-task="c"]>p>input:checked{color:var(--color-orange);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M18 9.5a1.5 1.5 0 11-3 0v-6a1.5 1.5 0 013 0v6zM14 9.667v-5.43a2 2 0 00-1.105-1.79l-.05-.025A4 4 0 0011.055 2H5.64a2 2 0 00-1.962 1.608l-1.2 6A2 2 0 004.44 12H8v4a2 2 0 002 2 1 1 0 001-1v-.667a4 4 0 01.8-2.4l1.4-1.866a4 4 0 00.8-2.4z' /%3E%3C/svg%3E")}input[data-task="b"]:checked,li[data-task="b"]>input:checked,li[data-task="b"]>p>input:checked{color:var(--color-orange);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M5 4a2 2 0 012-2h6a2 2 0 012 2v14l-5-2.5L5 18V4z' /%3E%3C/svg%3E")}.colorful-active .nav-files-container{--nav-item-background-active:var(--interactive-accent);--nav-item-color-active:var(--text-on-accent)}.colorful-active #calendar-container .active,.colorful-active #calendar-container .active.today,.colorful-active #calendar-container .active:hover,.colorful-active #calendar-container .day:active{background-color:var(--interactive-accent);color:var(--text-on-accent)}.colorful-active #calendar-container .active .dot,.colorful-active #calendar-container .day:active .dot,.colorful-active #calendar-container .today.active .dot{fill:var(--text-on-accent)}body:not(.colorful-active) .horizontal-tab-nav-item.is-active,body:not(.colorful-active) .vertical-tab-nav-item.is-active{background-color:var(--background-modifier-hover);color:var(--text-normal)}body{--frame-background:hsl( var(--frame-background-h), var(--frame-background-s), var(--frame-background-l));--frame-icon-color:var(--frame-muted-color)}.theme-light{--frame-background-h:var(--accent-h);--frame-background-s:var(--accent-s);--frame-background-l:calc(var(--accent-l) + 30%);--frame-outline-color:hsla( var(--frame-background-h), var(--frame-background-s), calc(var(--frame-background-l) - 6.5%), 1 );--frame-muted-color:hsl( var(--frame-background-h), calc(var(--frame-background-s) - 10%), calc(var(--frame-background-l) - 35%))}.theme-dark{--frame-background-h:var(--accent-h);--frame-background-s:var(--accent-s);--frame-background-l:calc(var(--accent-l) - 25%);--frame-outline-color:hsla( var(--frame-background-h), calc(var(--frame-background-s) - 2%), calc(var(--frame-background-l) + 6.5%), 1 );--frame-muted-color:hsl( var(--frame-background-h), calc(var(--frame-background-s) - 10%), calc(var(--frame-background-l) + 25%))}.colorful-frame.theme-dark{--tab-outline-width:0px}.colorful-frame,.colorful-frame.is-focused{--frame-divider-color:var(--frame-outline-color);--titlebar-background:var(--frame-background);--titlebar-background-focused:var(--frame-background);--titlebar-text-color:var(--frame-muted-color);--minimal-tab-text-color:var(--frame-muted-color)}.colorful-frame .workspace-tabs:not(.mod-stacked),.colorful-frame.is-focused .workspace-tabs:not(.mod-stacked){--tab-text-color:var(--minimal-tab-text-color);--tab-text-color-focused:var(--minimal-tab-text-color)}.colorful-frame .mod-top .workspace-tab-header-container,.colorful-frame .titlebar,.colorful-frame .workspace-ribbon.mod-left:before,.colorful-frame.is-focused .mod-top .workspace-tab-header-container,.colorful-frame.is-focused .titlebar,.colorful-frame.is-focused .workspace-ribbon.mod-left:before{--tab-outline-color:var(--frame-outline-color);--tab-divider-color:var(--frame-outline-color)}.colorful-frame .mod-root .workspace-tab-header .workspace-tab-header-inner-icon,.colorful-frame.is-focused .mod-root .workspace-tab-header .workspace-tab-header-inner-icon{--icon-color:var(--minimal-tab-text-color-active);--icon-color-hover:var(--minimal-tab-text-color-active);--icon-color-active:var(--minimal-tab-text-color-active);--icon-color-focused:var(--minimal-tab-text-color-active)}.colorful-frame .mod-left-split .mod-top .workspace-tab-header,.colorful-frame .mod-right-split .mod-top .workspace-tab-header,.colorful-frame .sidebar-toggle-button,.colorful-frame .workspace-tab-header-new-tab,.colorful-frame .workspace-tab-header-tab-list,.colorful-frame .workspace-tab-header:not(.is-active),.colorful-frame.is-focused .mod-left-split .mod-top .workspace-tab-header,.colorful-frame.is-focused .mod-right-split .mod-top .workspace-tab-header,.colorful-frame.is-focused .sidebar-toggle-button,.colorful-frame.is-focused .workspace-tab-header-new-tab,.colorful-frame.is-focused .workspace-tab-header-tab-list,.colorful-frame.is-focused .workspace-tab-header:not(.is-active){--background-modifier-hover:var(--frame-outline-color);--icon-color:var(--frame-icon-color);--icon-color-hover:var(--frame-icon-color);--icon-color-active:var(--frame-icon-color);--icon-color-focused:var(--frame-icon-color);--icon-color-focus:var(--frame-icon-color)}.colorful-frame .mod-left-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.colorful-frame .mod-right-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.colorful-frame.is-focused .mod-left-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.colorful-frame.is-focused .mod-right-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon{color:var(--frame-icon-color)}.workspace-leaf-resize-handle{transition:none}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle{-webkit-app-region:no-drag;border:0;z-index:15}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle:after{content:"";height:100%;width:1px;background:linear-gradient(180deg,var(--frame-outline-color) var(--header-height),var(--divider-color) var(--header-height));top:0;position:absolute}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle:hover:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle:hover:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle:hover:after{background:var(--divider-color-hover)}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle:after{left:0}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle:after{right:0}body.colorful-headings{--h1-color:var(--color-red);--h2-color:var(--color-orange);--h3-color:var(--color-yellow);--h4-color:var(--color-green);--h5-color:var(--color-blue);--h6-color:var(--color-purple)}body.colorful-headings .modal{--h1-color:var(--text-normal);--h2-color:var(--text-normal);--h3-color:var(--text-normal);--h4-color:var(--text-normal);--h5-color:var(--text-normal);--h6-color:var(--text-normal)}.is-mobile .tree-item-self .collapse-icon{width:20px}body:not(.minimal-icons-off) svg.calendar-day,body:not(.minimal-icons-off) svg.excalidraw-icon,body:not(.minimal-icons-off) svg.globe,body:not(.minimal-icons-off) svg.longform,body:not(.minimal-icons-off) svg.obsidian-leaflet-plugin-icon-map{background-color:currentColor}body:not(.minimal-icons-off) svg.excalidraw-icon path{display:none}body:not(.minimal-icons-off) svg.bar-graph{-webkit-mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="black" d="M20 7h-4V4c0-1.103-.897-2-2-2h-4c-1.103 0-2 .897-2 2v5H4c-1.103 0-2 .897-2 2v9a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V9c0-1.103-.897-2-2-2zM4 11h4v8H4v-8zm6-1V4h4v15h-4v-9zm10 9h-4V9h4v10z"></path></svg>')}body:not(.minimal-icons-off) svg.excalidraw-icon{-webkit-mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><g stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"%3E%3Cpath d="M12 19l7-7l3 3l-7 7l-3-3z"/%3E%3Cpath d="M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z"/%3E%3Cpath d="M2 2l7.586 7.586"/%3E%3Ccircle cx="11" cy="11" r="2"/%3E%3C/g%3E%3C/svg%3E%0A')}body:not(.minimal-icons-off) svg.globe{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-6 w-6' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M3.055 11H5a2 2 0 012 2v1a2 2 0 002 2 2 2 0 012 2v2.945M8 3.935V5.5A2.5 2.5 0 0010.5 8h.5a2 2 0 012 2 2 2 0 104 0 2 2 0 012-2h1.064M15 20.488V18a2 2 0 012-2h3.064M21 12a9 9 0 11-18 0 9 9 0 0118 0z' /%3E%3C/svg%3E")}body:not(.minimal-icons-off) svg.obsidian-leaflet-plugin-icon-map{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-6 w-6' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 20l-5.447-2.724A1 1 0 013 16.382V5.618a1 1 0 011.447-.894L9 7m0 13l6-3m-6 3V7m6 10l4.553 2.276A1 1 0 0021 18.382V7.618a1 1 0 00-.553-.894L15 4m0 13V4m0 0L9 7' /%3E%3C/svg%3E")}body:not(.minimal-icons-off) .workspace-tab-header[data-type=dictionary-view] svg.quote-glyph{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-6 w-6' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253' /%3E%3C/svg%3E")}body:not(.minimal-icons-off) svg.calendar-day{-webkit-mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 100 100"><path fill="black" d="M29.167 45.833H37.5V54.167H29.167zM29.167 62.5H37.5V70.833H29.167zM45.833 45.833H54.167V54.167H45.833zM45.833 62.5H54.167V70.833H45.833zM62.5 45.833H70.833V54.167H62.5zM62.5 62.5H70.833V70.833H62.5z M20.833 91.667h58.333c4.596 0 8.333 -3.738 8.333 -8.333V33.333V25c0 -4.596 -3.738 -8.333 -8.333 -8.333h-8.333V8.333h-8.333v8.333H37.5V8.333H29.167v8.333H20.833C16.238 16.667 12.5 20.404 12.5 25v8.333v50C12.5 87.929 16.238 91.667 20.833 91.667zM79.167 33.333l0.004 50H20.833V33.333H79.167z"></path></svg>')}body:not(.minimal-icons-off) svg.longform{-webkit-mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="black" d="M21 4H7a2 2 0 1 0 0 4h14v13a1 1 0 0 1-1 1H7a4 4 0 0 1-4-4V6a4 4 0 0 1 4-4h13a1 1 0 0 1 1 1v1zM5 18a2 2 0 0 0 2 2h12V10H7a3.982 3.982 0 0 1-2-.535V18zM20 7H7a1 1 0 1 1 0-2h13v2z"></path></svg>')}.workspace-ribbon.mod-left{border-left:0;transition:none}.minimal-focus-mode.is-translucent .workspace-ribbon.mod-left.is-collapsed,.minimal-focus-mode.is-translucent .workspace-ribbon.mod-left.is-collapsed:before{background-color:var(--background-primary)!important}.minimal-focus-mode .workspace-ribbon.mod-left{transition:background-color 0s linear 0s}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed{border-color:transparent;background-color:var(--background-primary)}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed:before{background-color:var(--background-primary);border-color:transparent}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed .side-dock-actions,.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed .side-dock-settings{opacity:0;transition:opacity .1s ease-in-out .1s}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed:hover .side-dock-actions,.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed:hover .side-dock-settings{opacity:1;transition:opacity .1s ease-in-out .1s}.minimal-focus-mode.borders-title .workspace-ribbon.mod-left.is-collapsed{border-right:none}.minimal-focus-mode .mod-top-right-space .sidebar-toggle-button.mod-right{opacity:0}.minimal-focus-mode:not(.minimal-status-off) .status-bar{opacity:0;transition:opacity .2s ease-in-out}.minimal-focus-mode .status-bar:hover{opacity:1;transition:opacity .2s ease-in-out}.minimal-focus-mode .mod-root .workspace-tabs{position:relative}.minimal-focus-mode .mod-root .workspace-tabs:before:hover{background-color:#00f}.minimal-focus-mode .mod-root .workspace-tab-header-container{height:0;transition:all .1s linear .6s;--tab-outline-width:0px}.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-container-inner,.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-new-tab,.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-tab-list{opacity:0;transition:opacity .1s linear .6s}.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-spacer:before{width:100%;content:" ";background-color:transparent;height:15px;position:absolute;z-index:100;top:0;left:0}.minimal-focus-mode .mod-root .workspace-tab-header-container:hover{height:var(--header-height);--tab-outline-width:1px;transition:all .1s linear 50ms}.minimal-focus-mode .mod-root .workspace-tab-header-container:hover .workspace-tab-header-container-inner,.minimal-focus-mode .mod-root .workspace-tab-header-container:hover .workspace-tab-header-new-tab,.minimal-focus-mode .mod-root .workspace-tab-header-container:hover .workspace-tab-header-tab-list{opacity:1;transition:opacity .1s linear 50ms}.minimal-focus-mode.mod-macos:not(.is-fullscreen) .workspace:not(.is-left-sidedock-open) .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header-inner{padding-top:30px}body.show-view-header .app-container .workspace-split.mod-root>.workspace-leaf .view-header{transition:height .1s linear .1s}body.minimal-focus-mode.show-view-header .mod-root .workspace-leaf .view-header{height:0;transition:all .1s linear .5s}body.minimal-focus-mode.show-view-header .view-header::after{width:100%;content:" ";background-color:transparent;height:40px;position:absolute;z-index:-9;top:0}body.minimal-focus-mode.show-view-header .view-actions,body.minimal-focus-mode.show-view-header .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .view-header-title-container{opacity:0;transition:all .1s linear .5s}body.minimal-focus-mode.show-view-header .mod-root .workspace-leaf .view-header:focus-within,body.minimal-focus-mode.show-view-header .mod-root .workspace-leaf .view-header:hover,body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header{height:calc(var(--header-height) + 2px);transition:all .1s linear .1s}body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header .view-actions,body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header .view-header-title-container,body.minimal-focus-mode.show-view-header .view-header:focus-within .view-actions,body.minimal-focus-mode.show-view-header .view-header:focus-within .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .view-header:focus-within .view-header-title-container,body.minimal-focus-mode.show-view-header .view-header:hover .view-actions,body.minimal-focus-mode.show-view-header .view-header:hover .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .view-header:hover .view-header-title-container{opacity:1;transition:all .1s linear .1s}body.minimal-focus-mode.show-view-header .view-content{height:100%}.full-width-media{--iframe-width:100%}.full-width-media .markdown-preview-view .external-embed,.full-width-media .markdown-preview-view .image-embed img:not(.link-favicon):not(.emoji):not([width]),.full-width-media .markdown-preview-view audio,.full-width-media .markdown-preview-view img:not(.link-favicon):not(.emoji):not([width]),.full-width-media .markdown-preview-view p:has(.external-embed),.full-width-media .markdown-preview-view video,.full-width-media .markdown-source-view .external-embed,.full-width-media .markdown-source-view .image-embed img:not(.link-favicon):not(.emoji):not([width]),.full-width-media .markdown-source-view audio,.full-width-media .markdown-source-view img:not(.link-favicon):not(.emoji):not([width]),.full-width-media .markdown-source-view p:has(.external-embed),.full-width-media .markdown-source-view video{width:100%}.markdown-rendered img:not(.emoji),.markdown-rendered video,.markdown-source-view img:not(.emoji),.markdown-source-view video{border-radius:var(--image-radius)}.table-small table:not(.calendar){--table-text-size:85%}.table-tiny table:not(.calendar){--table-text-size:75%}.row-hover{--table-edge-cell-padding-first:8px;--table-edge-cell-padding-last:8px}.row-alt{--table-row-alt-background:var(--background-table-rows);--table-edge-cell-padding-first:8px;--table-edge-cell-padding-last:8px}.col-alt .markdown-rendered:not(.cards){--table-column-alt-background:var(--background-table-rows)}.table-tabular table:not(.calendar){font-variant-numeric:tabular-nums}.table-lines{--table-border-width:var(--border-width);--table-header-border-width:var(--border-width);--table-column-first-border-width:var(--border-width);--table-column-last-border-width:var(--border-width);--table-row-last-border-width:var(--border-width);--table-edge-cell-padding:8px;--table-edge-cell-padding-first:8px;--table-edge-cell-padding-last:8px}.table-nowrap{--table-white-space:nowrap}.table-nowrap .table-wrap,.trim-cols{--table-white-space:normal}.table-numbers{--table-numbers-padding-right:0.5em}.table-numbers table:not(.calendar){counter-reset:section}.table-numbers table:not(.calendar)>thead>tr>th:first-child{white-space:nowrap}.table-numbers table:not(.calendar)>thead>tr>th:first-child::before{content:" ";padding-right:var(--table-numbers-padding-right);display:inline-block;min-width:2em}.table-numbers table:not(.calendar)>thead>tr>th:first-child .cm-s-obsidian,.table-numbers table:not(.calendar)>thead>tr>th:first-child .table-cell-wrapper{display:inline-block;min-width:10px}.table-numbers table:not(.calendar).table-editor>tbody>tr>td:first-child .table-cell-wrapper,.table-numbers table:not(.calendar):not(.table-editor)>tbody>tr>td:first-child{white-space:nowrap}.table-numbers table:not(.calendar).table-editor>tbody>tr>td:first-child .table-cell-wrapper::before,.table-numbers table:not(.calendar):not(.table-editor)>tbody>tr>td:first-child::before{counter-increment:section;content:counter(section) " ";text-align:center;padding-right:var(--table-numbers-padding-right);display:inline-block;min-width:2em;color:var(--text-faint);font-variant-numeric:tabular-nums}.table-numbers table:not(.calendar).table-editor>tbody>tr>td:first-child .table-cell-wrapper .cm-s-obsidian,.table-numbers table:not(.calendar):not(.table-editor)>tbody>tr>td:first-child .cm-s-obsidian{display:inline-block;min-width:10px}.table-numbers .table-editor{--table-numbers-padding-right:0}.row-lines-off .table-view-table>tbody>tr>td,.row-lines-off table:not(.calendar) tbody>tr:last-child>td,.row-lines-off table:not(.calendar) tbody>tr>td{border-bottom:none}.row-lines .table-view-table>tbody>tr>td,.row-lines table:not(.calendar) tbody>tr>td{border-bottom:var(--table-border-width) solid var(--table-border-color)}.row-lines table:not(.calendar) tbody>tr:last-child>td{border-bottom:none}.col-lines .table-view-table thead>tr>th:not(:last-child),.col-lines .table-view-table>tbody>tr>td:not(:last-child),.col-lines table:not(.calendar) tbody>tr>td:not(:last-child){border-right:var(--table-border-width) solid var(--background-modifier-border)}.row-hover{--table-row-background-hover:hsla( var(--accent-h), 50%, 80%, 20% )}.theme-dark .row-hover,.theme-dark.row-hover{--table-row-background-hover:hsla( var(--accent-h), 30%, 40%, 20% )}:root{--image-mix:normal}.image-blend-light{--image-mix:multiply}.theme-dark .markdown-preview-view img,.theme-dark .markdown-source-view img{opacity:var(--image-muted);transition:opacity .25s linear}@media print{body{--image-muted:1}}.theme-dark .markdown-preview-view img:hover,.theme-dark .markdown-source-view img:hover,.theme-dark .print-preview img{opacity:1;transition:opacity .25s linear}.theme-light img{mix-blend-mode:var(--image-mix)}div[src$="#invert"],div[src$="#multiply"]{background-color:var(--background-primary)}.theme-dark div[src$="#invert"] img,.theme-dark img[src$="#invert"],.theme-dark span[src$="#invert"] img{filter:invert(1) hue-rotate(180deg);mix-blend-mode:screen}.theme-dark div[src$="#multiply"] img,.theme-dark img[src$="#multiply"],.theme-dark span[src$="#multiply"] img{mix-blend-mode:screen}.theme-light div[src$="#multiply"] img,.theme-light img[src$="#multiply"],.theme-light span[src$="#multiply"] img{mix-blend-mode:multiply}.theme-light div[src$="#invertW"] img,.theme-light img[src$="#invertW"],.theme-light span[src$=invertW] img{filter:invert(1) hue-rotate(180deg)}img[src$="#circle"],span[src$="#circle"] img,span[src$="#round"] img{border-radius:50%;aspect-ratio:1/1}img[src$="#outline"],span[src$="#outline"] img{border:1px solid var(--ui1)}img[src$="#interface"],span[src$="#interface"] img{border:1px solid var(--ui1);box-shadow:0 .5px .9px rgba(0,0,0,.021),0 1.3px 2.5px rgba(0,0,0,.03),0 3px 6px rgba(0,0,0,.039),0 10px 20px rgba(0,0,0,.06);margin-top:10px;margin-bottom:15px;border-radius:var(--radius-m)}body{--image-grid-fit:cover;--image-grid-background:transparent;--img-grid-gap:0.5rem}@media (max-width:400pt){body{--img-grid-gap:0.25rem}}.img-grid-ratio{--image-grid-fit:contain}.img-grid .image-embed.is-loaded{line-height:0}.img-grid .image-embed.is-loaded img{background-color:var(--image-grid-background)}.img-grid .image-embed.is-loaded img:active{background-color:transparent}.img-grid .markdown-preview-section>div:has(.image-embed)>p{display:grid;margin-block-start:var(--img-grid-gap);margin-block-end:var(--img-grid-gap);grid-column-gap:var(--img-grid-gap);grid-row-gap:0;grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.img-grid .markdown-preview-section>div:has(.image-embed)>p>br{display:none}.img-grid .markdown-preview-section>div:has(.image-embed)>p>img{object-fit:var(--image-grid-fit);align-self:stretch}.img-grid .markdown-preview-section>div:has(.image-embed)>p>.internal-embed img{object-fit:var(--image-grid-fit);height:100%;align-self:center}body:not(.zoom-off) .view-content div:not(.canvas-node-content) img{max-width:100%;cursor:zoom-in}body:not(.zoom-off) .view-content img:active{cursor:zoom-out}body:not(.zoom-off) .view-content .markdown-preview-view img[referrerpolicy=no-referrer]:active{background-color:var(--background-primary);padding:10px}body:not(.zoom-off) .view-content .image-embed:not(.canvas-node-content):active,body:not(.zoom-off) .view-content .markdown-preview-view img[referrerpolicy=no-referrer]:active{--container-img-width:100%;--container-img-max-width:100%;aspect-ratio:unset;cursor:zoom-out;display:block;z-index:200;position:fixed;max-height:calc(100% + 1px);max-width:100%;height:calc(100% + 1px);width:100%;object-fit:contain;margin:-.5px auto 0!important;text-align:center;padding:0;left:0;right:0;bottom:0}body:not(.zoom-off) .view-content .image-embed:not(.canvas-node-content):active:after{background-color:var(--background-primary);opacity:.9;content:" ";height:calc(100% + 1px);width:100%;position:fixed;left:0;right:1px;z-index:0}body:not(.zoom-off) .view-content .image-embed:not(.canvas-node-content):active img{aspect-ratio:unset;top:50%;z-index:99;transform:translateY(-50%);padding:0;margin:0 auto;width:calc(100% - 20px);max-height:95vh;object-fit:contain;left:0;right:0;bottom:0;position:absolute;opacity:1}body:not(.zoom-off) .view-content .markdown-source-view.mod-cm6 .cm-content>[contenteditable=false]:has(.image-embed:not(.canvas-node-content):active){contain:unset!important}.labeled-nav.is-fullscreen:not(.colorful-frame),.labeled-nav.mod-windows{--labeled-nav-top-margin:0}.labeled-nav{--labeled-nav-top-margin:var(--header-height)}.labeled-nav.is-translucent .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-header-container-inner{background-color:transparent}.labeled-nav.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .workspace-tabs.mod-top-left-space .workspace-tab-header-container{padding-left:0}.labeled-nav.mod-macos .mod-left-split .mod-top .workspace-tab-header-container:before,.labeled-nav.mod-macos.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .mod-top .workspace-tab-header-container:before{-webkit-app-region:drag;position:absolute;width:calc(100% - var(--divider-width));height:calc(var(--header-height) - var(--tab-outline-width));border-bottom:0 solid var(--tab-outline-color)}.labeled-nav.mod-macos.is-hidden-frameless:not(.is-fullscreen) .workspace-ribbon.mod-left:not(.is-collapsed){border:none;--tab-outline-width:0px}.labeled-nav.colorful-frame.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .mod-top .workspace-tab-header-container:before,.labeled-nav.mod-macos:not(.hider-ribbon) .mod-left-split .mod-top .workspace-tab-header-container:before,.labeled-nav:not(.is-hidden-frameless) .mod-left-split .mod-top .workspace-tab-header-container:before{border-bottom:var(--tab-outline-width) solid var(--tab-outline-color)}.labeled-nav.colorful-frame.is-hidden-frameless:not(.is-fullscreen) .workspace-ribbon.mod-left:not(.is-collapsed),.labeled-nav.mod-macos:not(.hider-ribbon) .workspace-ribbon.mod-left:not(.is-collapsed),.labeled-nav:not(.is-hidden-frameless) .workspace-ribbon.mod-left:not(.is-collapsed){--tab-outline-width:1px}.labeled-nav:not(.is-hidden-frameless) .mod-left-split .mod-top .workspace-tab-header-container:before{position:absolute;top:0;content:" "}.labeled-nav.hider-ribbon.mod-macos.is-hidden-frameless:not(.is-fullscreen):not(.is-popout-window) .mod-left-split:not(.is-sidedock-collapsed) .workspace-tabs.mod-top-left-space .workspace-tab-header-container{padding-left:0}.labeled-nav:not(.is-grabbing):not(.is-fullscreen).is-hidden-frameless .mod-top .workspace-tab-header-container{-webkit-app-region:no-drag}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-spacer{display:none}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-inner-title{display:inline-block;font-weight:500;font-size:var(--font-adaptive-smaller)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container{position:relative;flex-direction:column-reverse!important;height:auto;width:100%}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .sidebar-toggle-button.mod-left{position:absolute;justify-content:flex-end;padding-right:var(--size-4-2);top:0;right:0}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-header-container-inner{padding-top:var(--size-4-2);margin-top:var(--labeled-nav-top-margin);flex-direction:column!important;background-color:var(--background-secondary)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-container-inner{flex-grow:1;gap:0;padding:var(--size-4-2) var(--size-4-3)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header{--icon-color:var(--text-muted);--tab-text-color:var(--text-muted);--tab-text-color-focused:var(--text-muted);padding:0;margin-bottom:2px;border:none;height:auto}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:not(:hover){background-color:transparent}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active,.labeled-nav .mod-left-split .mod-top .workspace-tab-header:hover{opacity:1;--tab-text-color-active:var(--text-normal);--tab-text-color-focused:var(--text-normal);--tab-text-color-focused-active:var(--text-normal);--tab-text-color-focused-active-current:var(--text-normal);--icon-color:var(--text-normal)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header .workspace-tab-header-inner{gap:var(--size-2-3);padding:var(--size-4-1) var(--size-4-2);box-shadow:none;border:none}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.has-active-menu:hover,.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:hover{background-color:transparent}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:hover .workspace-tab-header-inner,.labeled-nav .mod-left-split .mod-top .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner{background-color:var(--nav-item-background-hover)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.labeled-nav .mod-left-split .mod-top .workspace-tab-header:hover .workspace-tab-header-inner-icon{color:var(--icon-color-active)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container{border:none;padding:0}body:not(.links-int-on){--link-decoration:none}body:not(.links-ext-on){--link-external-decoration:none}body:not(.sidebar-color) .mod-right-split{--background-secondary:var(--background-primary)}body:not(.sidebar-color) .mod-right-split :not(.mod-top) .workspace-tab-header-container{--tab-container-background:var(--background-primary)}body{--minimal-tab-text-color:var(--text-muted);--minimal-tab-text-color-active:var(--text-normal)}.workspace-tabs:not(.mod-stacked){--tab-text-color:var(--minimal-tab-text-color);--tab-text-color-focused:var(--minimal-tab-text-color);--tab-text-color-active:var(--minimal-tab-text-color-active);--tab-text-color-focused-active:var(--minimal-tab-text-color-active);--tab-text-color-focused-active-current:var(--minimal-tab-text-color-active)}.tabs-plain-square .mod-root{--tab-curve:0;--tab-radius:0;--tab-radius-active:0}.tabs-plain-square .mod-root .workspace-tab-header-container{padding-right:0}.tabs-plain-square .mod-root .workspace-tab-header-container-inner{margin-top:-1px;margin-left:-15px}.tabs-plain-square .mod-root .workspace-tab-header{padding:0}.tabs-plain-square .mod-root .workspace-tab-header-inner{padding:0 8px}.tabs-square .mod-root{--tab-curve:0;--tab-radius:0;--tab-radius-active:0}.tabs-underline .mod-root{--tab-curve:0;--tab-radius:0;--tab-radius-active:0;--tab-outline-width:0px;--tab-background-active:transparent}.tabs-underline .mod-root .workspace-tab-header-container{border-bottom:1px solid var(--divider-color)}.tabs-underline .mod-root .workspace-tab-header{border-bottom:2px solid transparent}.tabs-underline .mod-root .workspace-tab-header:hover{border-bottom:2px solid var(--ui2)}.tabs-underline .mod-root .workspace-tab-header:hover .workspace-tab-header-inner{background-color:transparent}.tabs-underline .mod-root .workspace-tab-header.is-active{border-bottom:2px solid var(--ax3)}.tabs-underline .mod-root .workspace-tab-header-inner:hover{background-color:transparent}body:not(.sidebar-tabs-underline):not(.sidebar-tabs-index):not(.sidebar-tabs-square) .workspace>.workspace-split:not(.mod-root) .workspace-tabs:not(.mod-top) .workspace-tab-header-container{--tab-outline-width:0}.tabs-modern.colorful-frame .mod-root .mod-top.workspace-tabs:not(.mod-stacked){--tab-background:var(--frame-outline-color);--tab-outline-width:1px}.tabs-modern.colorful-frame .mod-root .mod-top.workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active .workspace-tab-header-inner-close-button,.tabs-modern.colorful-frame .mod-root .mod-top.workspace-tabs:not(.mod-stacked) .workspace-tab-header:hover .workspace-tab-header-inner-close-button{color:var(--minimal-tab-text-color-active)}.tabs-modern.minimal-focus-mode .mod-root .workspace-tab-header-container:hover{--tab-outline-width:0px}.tabs-modern .mod-root{--tab-container-background:var(--background-primary)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked){--tab-background:var(--background-modifier-hover);--tab-height:calc(var(--header-height) - 14px);--tab-outline-width:0px}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner::after,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header::after,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header::before{display:none}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-container-inner{align-items:center;margin:0;padding:2px var(--size-4-2) 0 var(--size-4-1)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner-title{text-overflow:ellipsis;-webkit-mask-image:none}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header{background:0 0;border-radius:5px;border:none;box-shadow:none;height:var(--tab-height);margin-left:var(--size-4-1);padding:0}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active .workspace-tab-header-inner-title{color:var(--tab-text-color-active)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active.mod-active,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header:hover{opacity:1;background-color:var(--tab-background)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-new-tab{margin-right:0}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner{padding:0 var(--size-4-1) 0 var(--size-4-2);border:1px solid transparent}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner{background-color:transparent}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active:not(.mod-active) .workspace-tab-header-inner,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header:not(:hover):not(.mod-active) .workspace-tab-header-inner{border:1px solid var(--tab-outline-color)}.tabs-modern.sidebar-tabs-default .mod-right-split,.tabs-modern.sidebar-tabs-wide .mod-right-split{--tab-outline-width:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-spacer,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-spacer,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-spacer{display:none}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container{padding-right:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner{padding:0;margin:0;flex-grow:1;gap:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header{flex-grow:1;border-radius:0;max-width:100px}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header.is-active,.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header:hover,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header.is-active,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header:hover,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header.is-active,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header:hover{background-color:transparent}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header:hover .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header:hover .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header:hover .workspace-tab-header-inner{background-color:transparent}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner{border-bottom:2px solid transparent;border-radius:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner:hover,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner:hover,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner:hover{border-color:var(--ui2)}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner{border-color:var(--ax3);padding-top:1px}.sidebar-tabs-square .mod-left-split,.sidebar-tabs-square .mod-right-split{--tab-radius:0px}.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top),.sidebar-tabs-index:not(.labeled-nav) .mod-left-split,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top),.sidebar-tabs-square:not(.labeled-nav) .mod-left-split{--tab-background-active:var(--background-secondary)}.sidebar-tabs-index .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-index:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner,.sidebar-tabs-square .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-square:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner{padding:1px var(--size-4-2) 0;margin:6px 0 calc(var(--tab-outline-width) * -1);flex-grow:1}.sidebar-tabs-index .mod-right-split .workspace-tab-header,.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header,.sidebar-tabs-index:not(.labeled-nav) .mod-left-split .workspace-tab-header,.sidebar-tabs-square .mod-right-split .workspace-tab-header,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header,.sidebar-tabs-square:not(.labeled-nav) .mod-left-split .workspace-tab-header{flex-grow:1;max-width:100px;border-radius:var(--tab-radius) var(--tab-radius) 0 0}.sidebar-tabs-index .mod-right-split .workspace-tab-header.is-active,.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header.is-active,.sidebar-tabs-index:not(.labeled-nav) .mod-left-split .workspace-tab-header.is-active,.sidebar-tabs-square .mod-right-split .workspace-tab-header.is-active,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header.is-active,.sidebar-tabs-square:not(.labeled-nav) .mod-left-split .workspace-tab-header.is-active{box-shadow:0 0 0 var(--tab-outline-width) var(--tab-outline-color);color:var(--tab-text-color-active);background-color:var(--tab-background-active)}.sidebar-tabs-wide .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner{flex-grow:1;border:1px solid var(--tab-outline-color);padding:3px;margin:6px 8px 6px;border-radius:4px}.sidebar-tabs-wide .mod-right-split .workspace-tab-header,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header{flex-grow:1}.sidebar-tabs-wide .mod-right-split .workspace-tab-header.is-active,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header.is-active,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header.is-active{border-color:transparent}.sidebar-tabs-wide .mod-right-split .workspace-tab-header-container,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header-container{padding-right:0}.sidebar-tabs-wide .mod-right-split .workspace-tab-header-spacer,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-spacer,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header-spacer{display:none}.full-file-names{--nav-item-white-space:normal}body:not(.full-file-names){--nav-item-white-space:nowrap}body:not(.full-file-names) .tree-item-self{white-space:nowrap}body:not(.full-file-names) .tree-item-inner{text-overflow:ellipsis;overflow:hidden}.theme-dark,.theme-light{--h1l:var(--ui1);--h2l:var(--ui1);--h3l:var(--ui1);--h4l:var(--ui1);--h5l:var(--ui1);--h6l:var(--ui1)}.h1-l .markdown-reading-view h1:not(.embedded-note-title),.h1-l .mod-cm6 .cm-editor .HyperMD-header-1{border-bottom:1px solid var(--h1l);padding-bottom:.4em;margin-block-end:0.6em}.h2-l .markdown-reading-view h2,.h2-l .mod-cm6 .cm-editor .HyperMD-header-2{border-bottom:1px solid var(--h2l);padding-bottom:.4em;margin-block-end:0.6em}.h3-l .markdown-reading-view h3,.h3-l .mod-cm6 .cm-editor .HyperMD-header-3{border-bottom:1px solid var(--h3l);padding-bottom:.4em;margin-block-end:0.6em}.h4-l .markdown-reading-view h4,.h4-l .mod-cm6 .cm-editor .HyperMD-header-4{border-bottom:1px solid var(--h4l);padding-bottom:.4em;margin-block-end:0.6em}.h5-l .markdown-reading-view h5,.h5-l .mod-cm6 .cm-editor .HyperMD-header-5{border-bottom:1px solid var(--h5l);padding-bottom:.4em;margin-block-end:0.6em}.h6-l .markdown-reading-view h6,.h6-l .mod-cm6 .cm-editor .HyperMD-header-6{border-bottom:1px solid var(--h6l);padding-bottom:.4em;margin-block-end:0.6em}.is-tablet .workspace-drawer{padding-top:0}.is-tablet .workspace-drawer:not(.is-pinned){margin:30px 16px 0;height:calc(100vh - 48px);border-radius:15px;border:none}.is-tablet .workspace-drawer-ribbon{background-color:var(--background-primary);border-right:1px solid var(--background-modifier-border)}.is-tablet .workspace-drawer-header,.is-tablet .workspace-drawer.is-pinned .workspace-drawer-header{padding-top:var(--size-4-4)}.is-mobile{--font-bold:600;--font-ui-medium:var(--font-adaptive-small);--interactive-normal:var(--background-secondary);--background-modifier-form-field:var(--background-secondary);--background-modifier-form-field-highlighted:var(--background-secondary)}.is-mobile .markdown-source-view.mod-cm6 .cm-gutters{margin-left:0}.is-mobile .workspace-drawer.mod-left.is-pinned{max-width:var(--mobile-left-sidebar-width);min-width:150pt}.is-mobile .workspace-drawer.mod-right.is-pinned{max-width:var(--mobile-right-sidebar-width);min-width:150pt}.backlink-pane>.tree-item-self,.backlink-pane>.tree-item-self:hover,.outgoing-link-pane>.tree-item-self,.outgoing-link-pane>.tree-item-self:hover{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:var(--font-adaptive-smallest);font-weight:500}body{--canvas-dot-pattern:var(--background-modifier-border-hover)}.canvas-node-label{font-size:var(--font-adaptive-small)}.canvas-edges :not(.is-themed) path.canvas-display-path{stroke:var(--background-modifier-border-focus)}.canvas-edges :not(.is-themed) polyline.canvas-path-end{stroke:var(--background-modifier-border-focus);fill:var(--background-modifier-border-focus)}.canvas-node-container{border:1.5px solid var(--background-modifier-border-focus)}.node-insert-event.mod-inside-iframe{--max-width:100%;--folding-offset:0px}.node-insert-event.mod-inside-iframe .cm-editor .cm-content{padding-top:0}.is-mobile .nav-folder.mod-root>.nav-folder-title .nav-folder-title-content{display:none}body:not(.is-mobile) .nav-folder.mod-root>.nav-folder-title .nav-folder-title-content{font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:var(--font-adaptive-smallest)}.nav-buttons-container{justify-content:flex-start}.nav-file-tag{padding-top:.2em;background-color:transparent;color:var(--text-faint)}.nav-file .is-active .nav-file-tag,.nav-file:hover .nav-file-tag{color:var(--text-muted)}input.prompt-input,input.prompt-input:focus,input.prompt-input:focus-visible,input.prompt-input:hover{border-color:rgba(var(--mono-rgb-100),.05)}.is-mobile .mod-publish .modal-content{display:unset;padding:10px 10px 10px;margin-bottom:120px;overflow-x:hidden}.is-mobile .mod-publish .button-container,.is-mobile .modal.mod-publish .modal-button-container{padding:10px 15px 30px;margin-left:0;left:0}.is-mobile .modal.mod-publish .modal-title{padding:10px 20px;margin:0 -10px;border-bottom:1px solid var(--background-modifier-border)}.is-mobile .publish-site-settings-container{margin-right:0;padding:0}.is-mobile .modal.mod-publish .modal-content .publish-sections-container{margin-right:0;padding-right:0}@media (max-width:400pt){.is-mobile .publish-changes-info,.is-mobile .publish-section-header{flex-wrap:wrap;border:none}.is-mobile .publish-changes-info .publish-changes-add-linked-btn{flex-basis:100%;margin-top:10px}.is-mobile .publish-section-header-text{flex-basis:100%;margin-bottom:10px;margin-left:20px;margin-top:-8px}.is-mobile .publish-section{background:var(--background-secondary);border-radius:10px;padding:12px 12px 1px}.is-mobile .publish-changes-switch-site{flex-grow:0;margin-right:10px}}.release-notes-view .cm-scroller.is-readable-line-width{width:var(--line-width);max-width:var(--max-width);margin:0 auto}.search-results-info{border-bottom:none}@media (max-width:400pt){.is-mobile .modal.mod-sync-log{width:100vw;height:100vh;max-height:calc(100vh - 32px);box-shadow:0 -32px 0 32px var(--background-primary);bottom:0;padding-bottom:10px}}.obsidian-banner.solid{border-bottom:var(--divider-width) solid var(--divider-color)}.contextual-typography .markdown-preview-view div.has-banner-icon.obsidian-banner-wrapper{overflow:visible}.theme-dark .markdown-preview-view img.emoji{opacity:1}body.theme-dark .button-default,body.theme-light .button-default{border:none;box-shadow:none;height:var(--input-height);background:var(--background-modifier-hover);color:var(--text-normal);font-size:revert;font-weight:500;transform:none;transition:all .1s linear;padding:0 20px}body.theme-dark .button-default:hover,body.theme-light .button-default:hover{border:none;background:var(--background-modifier-border-hover);box-shadow:none;transform:none;transition:all .1s linear}body.theme-dark .button-default:active,body.theme-dark .button-default:focus,body.theme-light .button-default:active,body.theme-light .button-default:focus{box-shadow:none}body .button-default.blue{background-color:var(--color-blue)!important}.button-default.red{background-color:var(--color-red)!important}.button-default.green{background-color:var(--color-green)!important}.button-default.yellow{background-color:var(--color-yellow)!important}.button-default.purple{background-color:var(--color-purple)!important}.workspace-leaf-content[data-type=calendar] .view-content{padding:5px 0 0 0}.mod-root #calendar-container{width:var(--line-width);max-width:var(--max-width);margin:0 auto;padding:0}body{--calendar-dot-active:var(--text-faint);--calendar-dot-today:var(--text-accent)}#calendar-container{padding:0 var(--size-4-4) var(--size-4-1);--color-background-day-empty:var(--background-secondary-alt);--color-background-day-active:var(--background-modifier-hover);--color-background-day-hover:var(--background-modifier-hover);--color-dot:var(--text-faint);--calendar-text-active:inherit;--color-text-title:var(--text-normal);--color-text-heading:var(--text-muted);--color-text-day:var(--text-normal);--color-text-today:var(--text-normal);--color-arrow:var(--text-faint);--color-background-day-empty:transparent}#calendar-container .table{border-collapse:separate;table-layout:fixed}#calendar-container h2{font-weight:400;font-size:var(--h2)}#calendar-container .arrow{cursor:var(--cursor);width:22px;border-radius:4px;padding:3px 7px}#calendar-container .arrow svg{width:12px;height:12px;color:var(--text-faint);opacity:.7}#calendar-container .arrow:hover{fill:var(--text-muted);color:var(--text-muted);background-color:var(--background-modifier-hover)}#calendar-container .arrow:hover svg{color:var(--text-muted);opacity:1}#calendar-container tr th{padding:2px 0 4px;font-weight:500;letter-spacing:.1em;font-size:var(--font-adaptive-smallest)}#calendar-container tr th:first-child{padding-left:0!important}#calendar-container tr td{padding:2px 0 0 0;border-radius:var(--radius-m);cursor:var(--cursor);border:1px solid transparent;transition:none}#calendar-container tr td:first-child{padding-left:0!important}#calendar-container .nav{padding:0;margin:var(--size-4-2) var(--size-4-1)}#calendar-container .dot{margin:0}#calendar-container .month,#calendar-container .title,#calendar-container .year{font-size:calc(var(--font-adaptive-small) + 2px);font-weight:400;color:var(--text-normal)}#calendar-container .today,#calendar-container .today.active{color:var(--text-accent);font-weight:600}#calendar-container .today .dot,#calendar-container .today.active .dot{fill:var(--calendar-dot-today)}#calendar-container .active .task{stroke:var(--text-faint)}#calendar-container .active{color:var(--text-normal)}#calendar-container .reset-button{text-transform:none;letter-spacing:0;font-size:var(--font-adaptive-smaller);font-weight:500;color:var(--text-muted);border-radius:4px;margin:0;padding:2px 8px}#calendar-container .reset-button:hover{color:var(--text-normal);background-color:var(--background-modifier-hover)}#calendar-container .day,#calendar-container .reset-button,#calendar-container .week-num{cursor:var(--cursor)}#calendar-container .day.adjacent-month{color:var(--text-faint);opacity:1}#calendar-container .day{padding:2px 4px 4px}#calendar-container .day,#calendar-container .week-num{font-size:calc(var(--font-adaptive-smaller) + 5%)}#calendar-container .active,#calendar-container .active.today,#calendar-container .day:hover,#calendar-container .week-num:hover{background-color:var(--color-background-day-active);color:var(--calendar-text-active)}#calendar-container .active .dot{fill:var(--calendar-dot-active)}#calendar-container .active .task{stroke:var(--text-faint)}.block-language-chart canvas,.block-language-dataviewjs canvas{margin:1em 0}.theme-dark,.theme-light{--chart-color-1:var(--color-blue);--chart-color-2:var(--color-red);--chart-color-3:var(--color-yellow);--chart-color-4:var(--color-green);--chart-color-5:var(--color-orange);--chart-color-6:var(--color-purple);--chart-color-7:var(--color-cyan);--chart-color-8:var(--color-pink)}.checklist-plugin-main .group .classic,.checklist-plugin-main .group .compact,.checklist-plugin-main .group .page,.checklist-plugin-main .group svg{cursor:var(--cursor)}.workspace .view-content .checklist-plugin-main{padding:10px 10px 15px 15px;--todoList-togglePadding--compact:2px;--todoList-listItemMargin--compact:2px}.checklist-plugin-main .title{font-weight:400;color:var(--text-muted);font-size:var(--font-adaptive-small)}.checklist-plugin-main .group svg{fill:var(--text-faint)}.checklist-plugin-main .group svg:hover{fill:var(--text-normal)}.checklist-plugin-main .group .title:hover{color:var(--text-normal)}.checklist-plugin-main .group:not(:last-child){border-bottom:1px solid var(--background-modifier-border)}.checklist-plugin-main .group{padding:0 0 2px 0}.checklist-plugin-main .group .classic:last-child,.checklist-plugin-main .group .compact:last-child{margin-bottom:10px}.checklist-plugin-main .group .classic,.checklist-plugin-main .group .compact{font-size:var(--font-adaptive-small)}.checklist-plugin-main .group .classic,.checklist-plugin-main .group .compact{background:0 0;border-radius:0;margin:1px auto;padding:0}.checklist-plugin-main .group .classic .content{padding:0}.checklist-plugin-main .group .classic:hover,.checklist-plugin-main .group .compact:hover{background:0 0}.markdown-preview-view.checklist-plugin-main ul>li:not(.task-list-item)::before{display:none}.checklist-plugin-main .group .compact>.toggle .checked{background:var(--text-accent);top:-1px;left:-1px;height:18px;width:18px}.checklist-plugin-main .compact .toggle:hover{opacity:1!important}.checklist-plugin-main .group .count{font-size:var(--font-adaptive-smaller);padding:0;background:0 0;font-weight:400;color:var(--text-faint)}.checklist-plugin-main .group .group-header:hover .count{color:var(--text-muted)}.checklist-plugin-main .group .checkbox{border:1px solid var(--background-modifier-border-hover);min-height:18px;min-width:18px;height:18px;width:18px}.checklist-plugin-main .group .checkbox:hover{border:1px solid var(--background-modifier-border-focus)}.checklist-plugin-main button:active,.checklist-plugin-main button:focus,.checklist-plugin-main button:hover{box-shadow:none!important}.checklist-plugin-main button.collapse{padding:0}body:not(.is-mobile) .checklist-plugin-main button.collapse svg{width:18px;height:18px}.is-mobile .checklist-plugin-main .group-header .title{flex-grow:1;flex-shrink:0}.is-mobile .checklist-plugin-main button{width:auto}.is-mobile .checklist-plugin-main.markdown-preview-view ul{padding-inline-start:0}.is-mobile .workspace .view-content .checklist-plugin-main{padding-bottom:50px}body #cMenuModalBar{box-shadow:0 2px 20px var(--shadow-color)}body #cMenuModalBar .cMenuCommandItem{cursor:var(--cursor)}body #cMenuModalBar button.cMenuCommandItem:hover{background-color:var(--background-modifier-hover)}.MiniSettings-statusbar-button{padding-top:0;padding-bottom:0}.dataview-inline-lists .markdown-preview-view .dataview-ul,.dataview-inline-lists .markdown-source-view .dataview-ul{--list-spacing:0}.dataview-inline-lists .markdown-preview-view .dataview-ul li:not(:last-child):after,.dataview-inline-lists .markdown-source-view .dataview-ul li:not(:last-child):after{content:", "}.dataview-inline-lists .markdown-preview-view ul.dataview-ul>li::before,.dataview-inline-lists .markdown-source-view ul.dataview-ul>li::before{display:none}.dataview-inline-lists .markdown-preview-view .dataview-ul li,.dataview-inline-lists .markdown-source-view .dataview-ul li{display:inline-block;padding-right:.25em}.markdown-preview-view .table-view-table>thead>tr>th,body .table-view-table>thead>tr>th{font-weight:400;font-size:var(--table-text-size);color:var(--text-muted);border-bottom:var(--table-border-width) solid var(--table-border-color);cursor:var(--cursor)}table.dataview ul.dataview-ul{list-style:none;padding-inline-start:0;margin-block-start:0em!important;margin-block-end:0em!important}.markdown-preview-view:not(.cards) .table-view-table>tbody>tr>td,.markdown-source-view.mod-cm6:not(.cards) .table-view-table>tbody>tr>td{max-width:var(--max-col-width)}body .dataview.small-text{color:var(--text-faint)}body:not(.row-hover) .dataview.task-list-basic-item:hover,body:not(.row-hover) .dataview.task-list-item:hover,body:not(.row-hover) .table-view-table>tbody>tr:hover{background-color:transparent!important;box-shadow:none}body.row-hover .dataview.task-list-basic-item:hover,body.row-hover .dataview.task-list-item:hover,body.row-hover .table-view-table>tbody>tr:hover{background-color:var(--table-row-background-hover)!important}body .dataview-error{background-color:transparent}.dataview.dataview-error,.markdown-source-view.mod-cm6 .cm-content .dataview.dataview-error{color:var(--text-muted)}body div.dataview-error-box{min-height:0;border:none;background-color:transparent;font-size:var(--table-text-size);border-radius:var(--radius-m);padding:15px 0;justify-content:flex-start}body div.dataview-error-box p{margin-block-start:0;margin-block-end:0;color:var(--text-faint)}.block-language-dataviewjs:has(.dataview-error-box) table.dataview{display:none}.trim-cols .markdown-preview-view .table-view-table>tbody>tr>td,.trim-cols .markdown-source-view.mod-cm6 .table-view-table>tbody>tr>td,.trim-cols .markdown-source-view.mod-cm6 .table-view-table>thead>tr>th{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}ul .dataview .task-list-basic-item:hover,ul .dataview .task-list-item:hover{background-color:transparent;box-shadow:none}body .dataview.result-group{padding-left:0}body .dataview .inline-field-standalone-value,body .dataview.inline-field-key,body .dataview.inline-field-value{font-family:var(--font-text);font-size:calc(var(--font-adaptive-normal) - 2px);background:0 0;color:var(--text-muted)}body .dataview.inline-field-key{padding:0}body .dataview .inline-field-standalone-value{padding:0}body .dataview.inline-field-key::after{margin-left:3px;content:"|";color:var(--background-modifier-border)}body .dataview.inline-field-value{padding:0 1px 0 3px}.markdown-preview-view .block-language-dataview table.calendar th{border:none;cursor:default;background-image:none}.markdown-preview-view .block-language-dataview table.calendar .day{font-size:var(--font-adaptive-small)}.database-plugin__navbar,.database-plugin__scroll-container,.database-plugin__table{width:100%}.dbfolder-table-container{--font-adaptive-normal:var(--table-text-size);--font-size-text:12px}.database-plugin__cell_size_wide .database-plugin__td{padding:.15rem}.database-plugin__table{border-spacing:0!important}.MuiAppBar-root{background-color:transparent!important}.workspace-leaf-content .view-content.dictionary-view-content{padding:0}div[data-type=dictionary-view] .contents{padding-bottom:2rem}div[data-type=dictionary-view] .results>.container{background-color:transparent;margin-top:0;max-width:none;padding:0 10px}div[data-type=dictionary-view] .error,div[data-type=dictionary-view] .errorDescription{text-align:left;font-size:var(--font-adaptive-small);padding:10px 12px 0;margin:0}div[data-type=dictionary-view] .results>.container h3{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:var(--font-adaptive-smallest);font-weight:500;padding:5px 7px 0 2px;margin-bottom:6px}div[data-type=dictionary-view] .container .main{border-radius:0;background-color:transparent;font-size:var(--font-adaptive-smaller);line-height:1.3;color:var(--text-muted);padding:5px 0 0}div[data-type=dictionary-view] .main .definition{padding:10px;border:1px solid var(--background-modifier-border);border-radius:5px;margin:10px 0 5px;background-color:var(--background-primary)}div[data-type=dictionary-view] .main .definition:last-child{border:1px solid var(--background-modifier-border)}div[data-type=dictionary-view] .main .synonyms{padding:10px 0 0}div[data-type=dictionary-view] .main .synonyms p{margin:0}div[data-type=dictionary-view] .main .definition>blockquote{margin:0}div[data-type=dictionary-view] .main .label{color:var(--text-normal);margin-bottom:2px;font-size:var(--font-adaptive-smaller);font-weight:500}div[data-type=dictionary-view] .main .mark{color:var(--text-normal);background-color:var(--text-selection);box-shadow:none}div[data-type=dictionary-view] .main>.opener{font-size:var(--font-adaptive-small);color:var(--text-normal);padding-left:5px}body .excalidraw,body .excalidraw.theme--dark{--color-primary-light:var(--text-selection);--color-primary:var(--interactive-accent);--color-primary-darker:var(--interactive-accent-hover);--color-primary-darkest:var(--interactive-accent-hover);--ui-font:var(--font-interface);--island-bg-color:var(--background-secondary);--icon-fill-color:var(--text-normal);--button-hover:var(--background-modifier-hover);--button-gray-1:var(--background-modifier-hover);--button-gray-2:var(--background-modifier-hover);--focus-highlight-color:var(--background-modifier-border-focus);--default-bg-color:var(--background-primary);--default-border-color:var(--background-modifier-border);--input-border-color:var(--background-modifier-border);--link-color:var(--text-accent);--overlay-bg-color:rgba(255, 255, 255, 0.88);--text-primary-color:var(--text-normal)}.git-view-body .opener{text-transform:uppercase;letter-spacing:.05em;font-size:var(--font-adaptive-smallest);font-weight:500;padding:5px 7px 5px 10px;margin-bottom:6px}.git-view-body .file-view .opener{text-transform:none;letter-spacing:normal;font-size:var(--font-adaptive-smallest);font-weight:400;padding:initial;margin-bottom:0}.git-view-body .file-view .opener .collapse-icon{display:flex!important;margin-left:-7px}.git-view-body{margin-top:6px}.git-view-body .file-view{margin-left:4px}.git-view-body .file-view main:hover{color:var(--text-normal)}.git-view-body .file-view .tools .type{display:none!important}.git-view-body .file-view .tools{opacity:0;transition:opacity .1s}.git-view-body .file-view main:hover>.tools{opacity:1}.git-view-body .staged{margin-bottom:12px}.git-view-body .opener.open{color:var(--text-normal)}div[data-type=git-view] .search-input-container{margin-left:0;width:100%}.git-view-body .opener .collapse-icon{display:none!important}.git-view-body main{background-color:var(--background-primary)!important;width:initial!important}.git-view-body .file-view>main:not(.topLevel){margin-left:7px}div[data-type=git-view] .commit-msg{min-height:2.5em!important;height:2.5em!important;padding:6.5px 8px!important}div[data-type=git-view] .search-input-clear-button{bottom:5.5px}.mod-macos.hider-frameless .workspace-ribbon{border:none}.is-tablet.hider-ribbon{--ribbon-width:0px}.is-tablet.hider-ribbon .side-dock-ribbon{display:none}.hider-ribbon .workspace-ribbon{padding:0}:root{--hider-ribbon-display:none}.ribbon-bottom-left-hover:not(.is-mobile){--hider-ribbon-display:flex}.hider-ribbon .workspace-ribbon-collapse-btn{display:none}.hider-ribbon .workspace-ribbon.mod-right{pointer-events:none}.hider-ribbon .workspace-ribbon.mod-left{position:absolute;border-right:0px;margin:0;height:var(--header-height);overflow:visible;flex-basis:0;bottom:0;top:auto;display:var(--hider-ribbon-display)!important;flex-direction:row;z-index:17;opacity:0;transition:opacity .25s ease-in-out;filter:drop-shadow(2px 10px 30px rgba(0,0,0,.2));gap:0}.hider-ribbon .side-dock-actions,.hider-ribbon .side-dock-settings{flex-direction:row;display:var(--hider-ribbon-display);border-top:var(--border-width) solid var(--background-modifier-border);background:var(--background-secondary);margin:0;position:relative;gap:var(--size-2-2)}.hider-ribbon .side-dock-actions{padding-left:8px}.hider-ribbon .side-dock-settings{border-right:var(--border-width) solid var(--background-modifier-border);border-top-right-radius:var(--radius-m);padding:0 var(--size-2-2)}.hider-ribbon .workspace-ribbon.mod-left .side-dock-ribbon-action{display:var(--hider-ribbon-display);margin:7px 0 8px}.hider-ribbon .workspace-ribbon.mod-left:hover{opacity:1;transition:opacity .25s ease-in-out}.hider-ribbon .workspace-ribbon.mod-left .workspace-ribbon-collapse-btn{opacity:0}.hider-ribbon .workspace-split.mod-left-split{margin:0}.hider-ribbon .workspace-leaf-content .item-list{padding-bottom:40px}.popover.hover-editor{--folding-offset:10px}.theme-dark,.theme-light{--he-title-bar-inactive-bg:var(--background-secondary);--he-title-bar-inactive-pinned-bg:var(--background-secondary);--he-title-bar-active-pinned-bg:var(--background-secondary);--he-title-bar-active-bg:var(--background-secondary);--he-title-bar-inactive-fg:var(--text-muted);--he-title-bar-active-fg:var(--text-normal);--he-title-bar-font-size:14px}.theme-light{--popover-shadow:0px 2.7px 3.1px rgba(0, 0, 0, 0.032),0px 5.9px 8.7px rgba(0, 0, 0, 0.052),0px 10.4px 18.1px rgba(0, 0, 0, 0.071),0px 20px 40px rgba(0, 0, 0, 0.11)}.theme-dark{--popover-shadow:0px 2.7px 3.1px rgba(0, 0, 0, 0.081),0px 5.9px 8.7px rgba(0, 0, 0, 0.131),0px 10.4px 18.1px rgba(0, 0, 0, 0.18),0px 20px 40px rgba(0, 0, 0, 0.28)}.popover.hover-editor:not(.snap-to-viewport){--max-width:92%}.popover.hover-editor:not(.snap-to-viewport) .markdown-preview-view,.popover.hover-editor:not(.snap-to-viewport) .markdown-source-view .cm-content{font-size:90%}body .popover.hover-editor:not(.is-loaded){box-shadow:var(--popover-shadow)}body .popover.hover-editor:not(.is-loaded) .markdown-preview-view{padding:15px 0 0 0}body .popover.hover-editor:not(.is-loaded) .view-content{height:100%;background-color:var(--background-primary)}body .popover.hover-editor:not(.is-loaded) .view-actions{height:auto}body .popover.hover-editor:not(.is-loaded) .popover-content{border:1px solid var(--background-modifier-border-hover)}body .popover.hover-editor:not(.is-loaded) .popover-titlebar{padding:0 4px}body .popover.hover-editor:not(.is-loaded) .popover-titlebar .popover-title{padding-left:4px;letter-spacing:-.02em;font-weight:var(--title-weight)}body .popover.hover-editor:not(.is-loaded) .markdown-embed{height:auto;font-size:unset;line-height:unset}body .popover.hover-editor:not(.is-loaded) .markdown-embed .markdown-preview-view{padding:0}body .popover.hover-editor:not(.is-loaded).show-navbar .popover-titlebar{border-bottom:var(--border-width) solid var(--background-modifier-border)}body .popover.hover-editor:not(.is-loaded) .popover-action,body .popover.hover-editor:not(.is-loaded) .popover-header-icon{cursor:var(--cursor);margin:4px 0;padding:4px 3px;border-radius:var(--radius-m);color:var(--icon-color)}body .popover.hover-editor:not(.is-loaded) .popover-action.mod-pin-popover,body .popover.hover-editor:not(.is-loaded) .popover-header-icon.mod-pin-popover{padding:4px 2px}body .popover.hover-editor:not(.is-loaded) .popover-action svg,body .popover.hover-editor:not(.is-loaded) .popover-header-icon svg{opacity:var(--icon-muted)}body .popover.hover-editor:not(.is-loaded) .popover-action:hover,body .popover.hover-editor:not(.is-loaded) .popover-header-icon:hover{background-color:var(--background-modifier-hover);color:var(--icon-color-hover)}body .popover.hover-editor:not(.is-loaded) .popover-action:hover svg,body .popover.hover-editor:not(.is-loaded) .popover-header-icon:hover svg{opacity:1;transition:opacity .1s ease-in-out}body .popover.hover-editor:not(.is-loaded) .popover-action.is-active,body .popover.hover-editor:not(.is-loaded) .popover-header-icon.is-active{color:var(--icon-color)}body.minimal-dark-black.theme-dark,body.minimal-dark-tonal.theme-dark,body.minimal-light-tonal.theme-light,body.minimal-light-white.theme-light,body.theme-dark{--kanban-border:0px}body:not(.is-mobile) .kanban-plugin__grow-wrap>textarea:focus{box-shadow:none}body:not(.minimal-icons-off) .kanban-plugin svg.cross{height:14px;width:14px}body .kanban-plugin__icon>svg,body .kanban-plugin__lane-settings-button svg{width:18px;height:18px}body .kanban-plugin{--kanban-border:var(--border-width);--interactive-accent:var(--text-selection);--interactive-accent-hover:var(--background-modifier-hover);--text-on-accent:var(--text-normal);background-color:var(--background-primary)}body .kanban-plugin__markdown-preview-view{font-family:var(--font-text)}body .kanban-plugin__board>div{margin:0 auto}body .kanban-plugin__checkbox-label{color:var(--text-muted)}body .kanban-plugin__item-markdown ul{margin:0}body .kanban-plugin__item-content-wrapper{box-shadow:none}body .kanban-plugin__grow-wrap::after,body .kanban-plugin__grow-wrap>textarea{padding:0;border:0;border-radius:0}body .kanban-plugin__grow-wrap::after,body .kanban-plugin__grow-wrap>textarea,body .kanban-plugin__item-title p,body .kanban-plugin__markdown-preview-view{font-size:var(--font-ui-medium);line-height:1.3}body .kanban-plugin__item{background-color:var(--background-primary)}body .kanban-plugin__item-title-wrapper{align-items:center}body .kanban-plugin__lane-form-wrapper{border:1px solid var(--background-modifier-border)}body .kanban-plugin__lane-header-wrapper{border-bottom:0}body .kanban-plugin__lane-header-wrapper .kanban-plugin__grow-wrap>textarea,body .kanban-plugin__lane-input-wrapper .kanban-plugin__grow-wrap>textarea,body .kanban-plugin__lane-title p{background:0 0;color:var(--text-normal);font-size:var(--font-ui-medium);font-weight:500}body .kanban-plugin__item-input-wrapper .kanban-plugin__grow-wrap>textarea{padding:0;border-radius:0;height:auto}body .kanban-plugin__item-form .kanban-plugin__grow-wrap{background-color:var(--background-primary)}body .kanban-plugin__item-input-wrapper .kanban-plugin__grow-wrap>textarea::placeholder{color:var(--text-faint)}body .kanban-plugin__item .kanban-plugin__item-edit-archive-button,body .kanban-plugin__item button.kanban-plugin__item-edit-button,body .kanban-plugin__item-settings-actions>button,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled,body .kanban-plugin__lane-action-wrapper>button{background:0 0;transition:color .1s ease-in-out}body .kanban-plugin__item .kanban-plugin__item-edit-archive-button:hover,body .kanban-plugin__item button.kanban-plugin__item-edit-button.is-enabled,body .kanban-plugin__item button.kanban-plugin__item-edit-button:hover,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button:hover{color:var(--text-normal);transition:color .1s ease-in-out;background:0 0}body .kanban-plugin__new-lane-button-wrapper{position:fixed;bottom:30px}body .kanban-plugin__lane-items>.kanban-plugin__placeholder:only-child{border:1px dashed var(--background-modifier-border);height:2em}body .kanban-plugin__item-postfix-button-wrapper{align-self:flex-start}body .kanban-plugin__item button.kanban-plugin__item-postfix-button.is-enabled,body .kanban-plugin__item button.kanban-plugin__item-prefix-button.is-enabled,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled{color:var(--text-muted)}body .kanban-plugin button{box-shadow:none;cursor:var(--cursor);height:auto}body .kanban-plugin__item button.kanban-plugin__item-postfix-button:hover,body .kanban-plugin__item button.kanban-plugin__item-prefix-button:hover,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button:hover{background-color:var(--background-modifier-hover)}body .kanban-plugin__item-button-wrapper>button{color:var(--text-muted);font-weight:400;background:0 0;min-height:calc(var(--input-height) + 8px)}body .kanban-plugin__item-button-wrapper>button:hover{color:var(--text-normal);background:var(--background-modifier-hover)}body .kanban-plugin__item-button-wrapper>button:focus{box-shadow:none}body .kanban-plugin__item-button-wrapper{padding:1px 6px 5px;border-top:none}body .kanban-plugin__lane-setting-wrapper>div:last-child{border:none;margin:0}body .kanban-plugin.something-is-dragging{cursor:grabbing;cursor:-webkit-grabbing}body .kanban-plugin__item.is-dragging{box-shadow:0 5px 30px rgba(0,0,0,.15),0 0 0 2px var(--text-selection)}body .kanban-plugin__lane-items{border:var(--kanban-border) solid var(--background-modifier-border);padding:0 4px;margin:0;background-color:var(--background-secondary)}body .kanban-plugin__lane{background:0 0;padding:0;border:var(--border-width) solid transparent}body .kanban-plugin__lane.is-dragging{box-shadow:0 5px 30px rgba(0,0,0,.15);border:1px solid var(--background-modifier-border)}body .kanban-plugin__lane .kanban-plugin__item-button-wrapper{border-top-left-radius:8px;border-top-right-radius:8px;border-top:1px solid var(--background-modifier-border);border-bottom-width:0;padding:4px 4px 0 4px}body .kanban-plugin__lane.will-prepend .kanban-plugin__lane-items{border-radius:8px}body .kanban-plugin__lane.will-prepend .kanban-plugin__item-form{border-top:1px solid var(--background-modifier-border);border-radius:8px 8px 0 0;padding:4px 4px 0;border-bottom-width:0}body .kanban-plugin__lane.will-prepend .kanban-plugin__item-form+.kanban-plugin__lane-items{border-top-width:0;border-radius:0 0 8px 8px}body .kanban-plugin__lane.will-prepend .kanban-plugin__item-button-wrapper+.kanban-plugin__lane-items{border-top-width:0;border-radius:0 0 8px 8px}body .kanban-plugin__lane:not(.will-prepend) .kanban-plugin__item-button-wrapper,body .kanban-plugin__lane:not(.will-prepend) .kanban-plugin__item-form{border-top:none;border-radius:0 0 8px 8px}body .kanban-plugin__lane:not(.will-prepend) .kanban-plugin__item-button-wrapper{padding:0 4px 4px 4px;border-bottom-width:1px}body .kanban-plugin__lane:not(.will-prepend) .kanban-plugin__lane-items{border-bottom:none;border-top-width:1px;border-radius:8px 8px 0 0}body .kanban-plugin__item-form .kanban-plugin__item-input-wrapper{min-height:calc(var(--input-height) + 8px);display:flex;justify-content:center}body .kanban-plugin__item-button-wrapper,body .kanban-plugin__item-form{background-color:var(--background-secondary);border:var(--kanban-border) solid var(--background-modifier-border)}body .kanban-plugin__item-form{padding:0 4px 5px}body .kanban-plugin__markdown-preview-view ol,body .kanban-plugin__markdown-preview-view ol.contains-task-list .contains-task-list,body .kanban-plugin__markdown-preview-view ul,body .kanban-plugin__markdown-preview-view ul.contains-task-list .contains-task-list{padding-inline-start:1.8em!important}@media (max-width:400pt){.kanban-plugin__board{flex-direction:column!important}.kanban-plugin__lane{width:100%!important;margin-bottom:1rem!important}}body .cm-heading-marker{cursor:var(--cursor);padding-left:10px}.theme-light{--leaflet-buttons:var(--bg1);--leaflet-borders:rgba(0,0,0,0.1)}.theme-dark{--leaflet-buttons:var(--bg2);--leaflet-borders:rgba(255,255,255,0.1)}.leaflet-top{transition:top .1s linear}.mod-macos.minimal-focus-mode .mod-root .map-100 .markdown-preview-sizer.markdown-preview-section .el-lang-leaflet:nth-child(3) .leaflet-top{top:calc(18px + var(--ewt-traffic-light-y));transition:top .1s linear}body .leaflet-container{background-color:var(--background-secondary);font-family:var(--font-interface)}.map-100 .markdown-preview-sizer.markdown-preview-section .el-lang-leaflet:nth-child(3){margin-top:-16px}.leaflet-control-attribution{display:none}.leaflet-popup-content{margin:10px}.block-language-leaflet{border-radius:var(--radius-m);overflow:hidden;border:var(--border-width) solid var(--background-modifier-border)}.map-wide .block-language-leaflet{border-radius:var(--radius-l)}.map-max .block-language-leaflet{border-radius:var(--radius-xl)}.workspace-leaf-content[data-type=obsidian-leaflet-map-view] .block-language-leaflet{border-radius:0;border:none}.map-100 .block-language-leaflet{border-radius:0;border-left:none;border-right:none}.block-language-leaflet .leaflet-control-expandable-list .input-container .input-item>input{appearance:none}body .block-language-leaflet .leaflet-bar.disabled>a{background-color:transparent;opacity:.3}body .leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}body .leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px}body .leaflet-control-layers-toggle{border-radius:4px}body .block-language-leaflet .leaflet-control-expandable,body .block-language-leaflet .leaflet-control-has-actions .control-actions.expanded,body .block-language-leaflet .leaflet-distance-control,body .leaflet-bar,body .leaflet-bar a,body .leaflet-control-layers-expanded,body .leaflet-control-layers-toggle{background-color:var(--leaflet-buttons);color:var(--text-muted);border:none;user-select:none}body .leaflet-bar a.leaflet-disabled,body .leaflet-bar a.leaflet-disabled:hover{background-color:var(--leaflet-buttons);color:var(--text-faint);opacity:.6;cursor:not-allowed}body .leaflet-control a{cursor:var(--cursor);color:var(--text-normal)}body .leaflet-bar a:hover{background-color:var(--background-modifier-hover);color:var(--text-normal);border:none}body .leaflet-touch .leaflet-control-layers{background-color:var(--leaflet-buttons)}body .leaflet-touch .leaflet-bar,body .leaflet-touch .leaflet-control-layers{border-radius:5px;box-shadow:2px 0 8px 0 rgba(0,0,0,.1);border:1px solid var(--ui1)}body .block-language-leaflet .leaflet-control-has-actions .control-actions{box-shadow:0;border:1px solid var(--ui1)}body .leaflet-control-expandable-list .leaflet-bar{box-shadow:none;border-radius:0}body .block-language-leaflet .leaflet-distance-control{padding:4px 10px;height:auto;cursor:var(--cursor)!important}body .block-language-leaflet .leaflet-marker-link-popup>.leaflet-popup-content-wrapper>*{font-size:var(--font-adaptive-small);font-family:var(--font-interface)}body .block-language-leaflet .leaflet-marker-link-popup>.leaflet-popup-content-wrapper{padding:4px 10px!important}.leaflet-marker-icon svg path{stroke:var(--background-primary);stroke-width:18px}.map-view-marker-name{font-weight:400}.workspace-leaf-content[data-type=map] .graph-controls{background-color:var(--background-primary)}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-split.mod-root .workspace-leaf-content[data-type=map] .view-header{position:fixed;background:0 0!important;width:100%;z-index:99}body:not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .view-header-title{display:none}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .view-actions{background:0 0}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .view-content{height:100%}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .leaflet-top.leaflet-right{top:var(--header-height)}.obsidian-metatable{--metatable-font-size:calc(var(--font-adaptive-normal) - 2px);--metatable-font-family:var(--font-interface);--metatable-background:transparent;--metatable-foreground:var(--text-faint);--metatable-key-background:transparent;--metatable-key-border-width:0;--metatable-key-border-color:transparent;--metatable-value-background:transparent;padding-bottom:.5rem}.obsidian-metatable::part(key),.obsidian-metatable::part(value){border-bottom:0 solid var(--background-modifier-border);padding:.1rem 0;text-overflow:ellipsis;overflow:hidden}.obsidian-metatable::part(key){font-weight:400;color:var(--tx3);font-size:calc(var(--font-adaptive-normal) - 2px)}.obsidian-metatable::part(value){font-size:calc(var(--font-adaptive-normal) - 2px);color:var(--tx1)}body .NLT__header-menu-header-container{font-size:85%}body .NLT__button{background:0 0;box-shadow:none;color:var(--text-muted)}body .NLT__button:active,body .NLT__button:focus,body .NLT__button:hover{background:0 0;color:var(--text-normal);box-shadow:none}.NLT__app .NLT__button{background:0 0;border:1px solid var(--background-modifier-border);box-shadow:0 .5px 1px 0 var(--btn-shadow-color);color:var(--text-muted);padding:2px 8px}.NLT__app .NLT__button:active,.NLT__app .NLT__button:focus,.NLT__app .NLT__button:hover{background:0 0;border-color:var(--background-modifier-border-hover);color:var(--text-normal);box-shadow:0 .5px 1px 0 var(--btn-shadow-color)}.NLT__td:nth-last-child(2),.NLT__th:nth-last-child(2){border-right:0}.NLT__app .NLT__td:last-child,.NLT__app .NLT__th:last-child{padding-right:0}.NLT__app .NLT__th{background-image:none!important}.NLT__app th.NLT__selectable:hover{background-color:transparent;cursor:var(--cursor)}.NLT__menu .NLT__menu-container{background-color:var(--background-secondary)}.NLT__menu .NLT__header-menu-item{font-size:var(--font-adaptive-small)}.NLT__menu .NLT__header-menu{padding:6px 4px}.NLT__menu .NLT__drag-menu{font-size:var(--font-adaptive-small);padding:6px 4px}.NLT__menu svg{color:var(--text-faint);margin-right:6px}.NLT__menu .NLT__selectable:hover,.NLT__menu .NLT__selected{background:0 0}.NLT__menu .NLT__selected>.NLT__selectable{background-color:var(--background-modifier-hover)}.NLT__menu .NLT__selectable{cursor:var(--cursor)}.NLT__menu div.NLT__selectable{min-width:110px;border-radius:var(--radius-m);padding:3px 8px 3px 4px;margin:1px 2px 1px;cursor:var(--cursor);height:auto;line-height:20px}.NLT__menu div.NLT__selectable:hover{background-color:var(--background-modifier-hover)}.NLT__menu .NLT__textarea{font-size:var(--table-text-size)}.NLT__tfoot tr:hover td{background-color:transparent}.modal .quickAddPrompt>h1,.modal .quickAddYesNoPrompt h1{margin-top:0;text-align:left!important;font-size:var(--h1);font-weight:600}.modal .quickAddYesNoPrompt p{text-align:left!important}.modal .quickAddYesNoPrompt button{font-size:var(--font-ui-small)}.modal .yesNoPromptButtonContainer{font-size:var(--font-ui-small);justify-content:flex-end}.quickAddModal .modal-content{padding:20px 2px 5px}div#quick-explorer{display:flex}div#quick-explorer span.explorable{align-items:center;color:var(--text-muted);display:flex;font-size:var(--font-adaptive-smaller);line-height:16px}div#quick-explorer span.explorable:last-of-type{font-size:var(--font-adaptive-smaller)}div#quick-explorer span.explorable.selected,div#quick-explorer span.explorable:hover{background-color:unset!important}div#quick-explorer span.explorable.selected .explorable-name,div#quick-explorer span.explorable:hover .explorable-name{color:var(--text-normal)}div#quick-explorer span.explorable.selected .explorable-separator,div#quick-explorer span.explorable:hover .explorable-separator{color:var(--text-normal)}div#quick-explorer .explorable-name{padding:0 4px;border-radius:4px}div#quick-explorer .explorable-separator::before{content:"\00a0›"!important;font-size:1.3em;font-weight:400;margin:0}body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label).selected,body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label):hover{background-color:var(--background-modifier-hover);color:var(--text-normal)}body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label).selected .menu-item-icon,body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label):hover .menu-item-icon{color:var(--text-normal)}.workspace-leaf-content[data-type=recent-files] .view-content{padding-top:10px}.mod-root .workspace-leaf-content[data-type=reminder-list] main{max-width:var(--max-width);margin:0 auto;padding:0}.modal .reminder-actions .later-select{font-size:var(--font-settings-small);vertical-align:bottom;margin-left:3px}.modal .reminder-actions .icon{line-height:1}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main{margin:0 auto;padding:15px}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .group-name{font-weight:500;color:var(--text-muted);font-size:var(--font-adaptive-small);padding-bottom:.5em;border-bottom:1px solid var(--background-modifier-border)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .reminder-list-item{line-height:1.3;font-size:var(--font-adaptive-small)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .no-reminders{color:var(--text-faint)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .reminder-time{font-family:var(--font-text);font-size:var(--font-adaptive-small)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .reminder-file{color:var(--text-faint)}body .modal .dtchooser{background-color:transparent}body .modal .dtchooser .reminder-calendar .year-month{font-weight:400;font-size:var(--font-adaptive-normal);padding-bottom:10px}body .modal .dtchooser .reminder-calendar .year-month .month,body .modal .dtchooser .reminder-calendar .year-month .year{color:var(--text-normal)}body .modal .dtchooser .reminder-calendar .year-month .month-nav:first-child{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z' clip-rule='evenodd' /%3E%3C/svg%3E")}body .modal .dtchooser .reminder-calendar .year-month .month-nav:last-child{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z' clip-rule='evenodd' /%3E%3C/svg%3E")}body .modal .dtchooser .reminder-calendar .year-month .month-nav{-webkit-mask-size:20px 20px;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;color:var(--text-faint);cursor:var(--cursor);border-radius:var(--radius-m);padding:0;width:30px;display:inline-block}body .modal .dtchooser .reminder-calendar .year-month .month-nav:hover{color:var(--text-muted)}body .modal .dtchooser .reminder-calendar th{padding:.5em 0;font-size:var(--font-adaptive-smallest);font-weight:500;text-transform:uppercase;letter-spacing:.1em}body .modal .dtchooser .reminder-calendar .calendar-date{transition:background-color .1s ease-in;padding:.3em 0;border-radius:var(--radius-m)}body .modal .dtchooser .reminder-calendar .calendar-date.is-selected,body .modal .dtchooser .reminder-calendar .calendar-date:hover{transition:background-color .1s ease-in;background-color:var(--background-modifier-hover)!important}body .modal .dtchooser .reminder-calendar .calendar-date.is-selected{font-weight:var(--bold-weight);color:var(--text-accent)!important}body .markdown-preview-view th,body .markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th,body .table-view-table>thead>tr>th{cursor:var(--cursor);background-image:none}.markdown-source-view.mod-cm6 th{background-repeat:no-repeat;background-position:right}.style-settings-container[data-level="2"]{background:var(--background-secondary);border:1px solid var(--ui1);border-radius:5px;padding:10px 20px;margin:2px 0 2px -20px}.workspace-leaf-content[data-type=style-settings] div[data-id=instructions] .setting-item-name{display:none}.workspace-leaf-content[data-type=style-settings] div[data-id=instructions] .setting-item-description{color:var(--text-normal);font-size:var(--font-adaptive-smaller);padding-bottom:.5em}.workspace-leaf-content[data-type=style-settings] .view-content{padding:var(--size-4-4) 0}.workspace-leaf-content[data-type=style-settings] .view-content>div{width:var(--line-width);max-width:var(--max-width);margin:0 auto}.workspace-leaf-content[data-type=style-settings] .style-settings-heading[data-level="0"] .setting-item-name{padding-left:17px}.workspace-leaf-content[data-type=style-settings] .setting-item{max-width:100%;margin:0 auto}.workspace-leaf-content[data-type=style-settings] .setting-item-name{position:relative}.workspace-leaf-content[data-type=style-settings] .style-settings-collapse-indicator{position:absolute;left:0}.setting-item-heading.style-settings-heading,.style-settings-container .style-settings-heading{cursor:var(--cursor)}.modal.mod-settings .setting-item .pickr button.pcr-button{box-shadow:none;border-radius:40px;height:24px;width:24px}.setting-item .pickr .pcr-button:after,.setting-item .pickr .pcr-button:before{border-radius:40px;box-shadow:none;border:none}.setting-item.setting-item-heading.style-settings-heading.is-collapsed{border-bottom:1px solid var(--background-modifier-border)}.setting-item.setting-item-heading.style-settings-heading{border:0;padding:10px 0 5px;margin-bottom:0}.setting-item .style-settings-export,.setting-item .style-settings-import{text-decoration:none;font-size:var(--font-ui-small);font-weight:500;color:var(--text-muted);margin:0;padding:2px 8px;border-radius:5px;cursor:var(--cursor)}.setting-item .style-settings-export:hover,.setting-item .style-settings-import:hover{background-color:var(--background-modifier-hover);color:var(--text-normal);cursor:var(--cursor)}.mod-root .workspace-leaf-content[data-type=style-settings] .style-settings-container .setting-item:not(.setting-item-heading){flex-direction:row;align-items:center;padding:.5em 0}.workspace-split:not(.mod-root) .workspace-leaf-content[data-type=style-settings] .setting-item-name{font-size:var(--font-adaptive-smaller)}.themed-color-wrapper>div+div{margin-top:0;margin-left:6px}.theme-light .themed-color-wrapper>.theme-light{background-color:transparent}.theme-light .themed-color-wrapper>.theme-dark{background-color:rgba(0,0,0,.8)}.theme-dark .themed-color-wrapper>.theme-dark{background-color:transparent}@media (max-width:400pt){.workspace-leaf-content[data-type=style-settings] .setting-item-name{font-size:var(--font-adaptive-small)}.workspace-leaf-content[data-type=style-settings] .setting-item-info:has(.search-input-container){width:100%;margin-right:0}}body .todoist-query-title{display:inline;font-size:var(--h4);font-variant:var(--h4-variant);letter-spacing:.02em;color:var(--h4-color);font-weight:var(--h4-weight);font-style:var(--h4-style)}body .is-live-preview .block-language-todoist{padding-left:0}ul.todoist-task-list>li.task-list-item .task-list-item-checkbox{margin:0}body .todoist-refresh-button{display:inline;float:right;background:0 0;padding:5px 6px 0;margin-right:0}body .is-live-preview .todoist-refresh-button{margin-right:30px}body .todoist-refresh-button:hover{box-shadow:none;background-color:var(--background-modifier-hover)}.todoist-refresh-button svg{width:15px;height:15px;opacity:var(--icon-muted)}ul.todoist-task-list{margin-left:-.25em}.is-live-preview ul.todoist-task-list{padding-left:0;margin-left:.5em;margin-block-start:0;margin-block-end:0}.contains-task-list.todoist-task-list .task-metadata{font-size:var(--font-adaptive-small);display:flex;color:var(--text-muted);justify-content:space-between;margin-left:.1em;margin-bottom:.25rem}.is-live-preview .contains-task-list.todoist-task-list .task-metadata{padding-left:calc(var(--checkbox-size) + .6em)}.todoist-task-list .task-date.task-overdue{color:var(--color-orange)}body .todoist-p1>input[type=checkbox]{border:1px solid var(--color-red)}body .todoist-p1>input[type=checkbox]:hover{opacity:.8}body .todoist-p2>input[type=checkbox]{border:1px solid var(--color-yellow)}body .todoist-p2>input[type=checkbox]:hover{opacity:.8}body .todoist-p3>input[type=checkbox]{border:1px solid var(--color-blue)}body .todoist-p3>input[type=checkbox]:hover{opacity:.8}body.theme-light{--color-axis-label:var(--tx1);--color-tick-label:var(--tx2);--color-dot-fill:var(--ax1);--color-line:var(--ui1)}.tracker-axis-label{font-family:var(--font-interface)}.tracker-axis{color:var(--ui2)}.tabs-manager .chat-view{--assistant-message-color:var(--background-primary);--padding-md:var(--size-4-2) var(--size-4-3);--padding-lg:var(--size-4-3) var(--size-4-3);--chat-box-color:var(--background-primary)}.tabs-manager .chat-view .ow-dialogue-timeline{padding:var(--size-4-4) var(--size-4-3) var(--size-4-8)}.tabs-manager .chat-view .ow-dialogue-timeline .ow-message-bubble .ow-content-wrapper{box-shadow:none;border-color:var(--background-modifier-border);border-radius:var(--radius-m)}.tabs-manager .chat-view .ow-dialogue-timeline .ow-message-bubble.ow-user-bubble .ow-content-wrapper{border-width:0;background-color:var(--interactive-accent)}.tabs-manager .chat-view .input-area .input-form .chat-box{border-radius:0;box-shadow:none;grid-row:1;grid-column:1/3;height:100px;border:none;padding:var(--size-4-3) var(--size-4-4) var(--size-4-2)}.tabs-manager .chat-view .input-area .input-form .chat-box:hover{height:100px}.tabs-manager .chat-view .input-area{padding:0;gap:0}.tabs-manager .chat-view .header{border-bottom:1px solid var(--background-modifier-border)}.tabs-manager .chat-view .input-form{border-top:1px solid var(--background-modifier-border)}.tabs-manager .chat-view .input-area .input-form .chat-box .info-bar span{color:var(--text-faint)}.tabs-manager .chat-view .input-area .input-form .btn-new-chat{display:none}.zoom-plugin-header{--link-color:var(--text-normal);--link-decoration:none;font-size:var(--font-ui-small);padding:0;justify-content:center;margin:var(--size-4-2) auto;max-width:var(--max-width)}.zoom-plugin-header>.zoom-plugin-title{text-decoration:none;max-width:15em;overflow:hidden}.zoom-plugin-header>.zoom-plugin-delimiter{color:var(--text-faint);padding:0 var(--size-4-1)}.theme-dark.minimal-atom-dark{--color-red-rgb:225,109,118;--color-orange-rgb:209,154,102;--color-yellow-rgb:206,193,103;--color-green-rgb:152,195,121;--color-cyan-rgb:88,182,194;--color-blue-rgb:98,175,239;--color-purple-rgb:198,120,222;--color-pink-rgb:225,109,118;--color-red:#e16d76;--color-orange:#d19a66;--color-yellow:#cec167;--color-green:#98c379;--color-cyan:#58b6c2;--color-blue:#62afef;--color-purple:#c678de;--color-pink:#e16d76}.theme-light.minimal-atom-light{--color-red-rgb:228,87,73;--color-orange-rgb:183,107,2;--color-yellow-rgb:193,131,2;--color-green-rgb:80,161,80;--color-cyan-rgb:13,151,179;--color-blue-rgb:98,175,239;--color-purple-rgb:166,38,164;--color-pink-rgb:228,87,73;--color-red:#e45749;--color-orange:#b76b02;--color-yellow:#c18302;--color-green:#50a150;--color-cyan:#0d97b3;--color-blue:#62afef;--color-purple:#a626a4;--color-pink:#e45749}.theme-light.minimal-atom-light{--base-h:106;--base-s:0%;--base-l:98%;--accent-h:231;--accent-s:76%;--accent-l:62%;--bg1:#fafafa;--bg2:#eaeaeb;--bg3:rgba(0,0,0,.1);--ui1:#dbdbdc;--ui2:#d8d8d9;--tx1:#232324;--tx2:#8e8e90;--tx3:#a0a1a8;--hl1:rgba(180,180,183,0.3);--hl2:rgba(209,154,102,0.35)}.theme-light.minimal-atom-light.minimal-light-white{--bg3:#eaeaeb}.theme-dark.minimal-atom-dark,.theme-light.minimal-atom-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-atom-light.minimal-light-contrast .titlebar,.theme-light.minimal-atom-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-atom-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-atom-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:220;--base-s:12%;--base-l:18%;--accent-h:220;--accent-s:86%;--accent-l:65%;--bg1:#282c34;--bg2:#21252c;--bg3:#3a3f4b;--divider-color:#181a1f;--tab-outline-color:#181a1f;--tx1:#d8dae1;--tx2:#898f9d;--tx3:#5d6370;--hl1:rgba(114,123,141,0.3);--hl2:rgba(209,154,102,0.3);--sp1:#fff}.theme-dark.minimal-atom-dark.minimal-dark-black{--base-d:5%;--bg3:#282c34;--divider-color:#282c34;--tab-outline-color:#282c34}.theme-light.minimal-ayu-light{--color-red-rgb:230,80,80;--color-orange-rgb:250,141,62;--color-yellow-rgb:242,174,73;--color-green-rgb:108,191,67;--color-cyan-rgb:76,191,153;--color-blue-rgb:57,158,230;--color-purple-rgb:163,122,204;--color-pink-rgb:255,115,131;--color-red:#e65050;--color-orange:#fa8d3e;--color-yellow:#f2ae49;--color-green:#6CBF43;--color-cyan:#4cbf99;--color-blue:#399ee6;--color-purple:#a37acc;--color-pink:#ff7383}.theme-dark.minimal-ayu-dark{--color-red-rgb:255,102,102;--color-orange-rgb:250,173,102;--color-yellow-rgb:255,209,55;--color-green-rgb:135,217,108;--color-cyan-rgb:149,230,203;--color-blue-rgb:115,208,255;--color-purple-rgb:223,191,255;--color-pink-rgb:242,121,131;--color-red:#ff6666;--color-orange:#ffad66;--color-yellow:#ffd137;--color-green:#87D96C;--color-cyan:#95e6cb;--color-blue:#73d0ff;--color-purple:#dfbfff;--color-pink:#f27983}.theme-light.minimal-ayu-light{--base-h:210;--base-s:17%;--base-l:98%;--accent-h:36;--accent-s:100%;--accent-l:50%;--bg1:#fff;--bg2:#f8f9fa;--bg3:rgba(209,218,224,0.5);--ui1:#E6EAED;--tx1:#5C6165;--tx2:#8A9199;--tx3:#AAAEB0;--hl1:rgba(3,91,214,0.15)}.theme-dark.minimal-ayu-dark,.theme-light.minimal-ayu-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-ayu-light.minimal-light-contrast .titlebar,.theme-light.minimal-ayu-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-ayu-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-ayu-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:222;--base-s:22%;--base-l:15%;--accent-h:35;--accent-s:100%;--accent-l:60%;--bg1:#232937;--bg2:#1E2431;--bg3:rgba(51,61,80,0.5);--ui1:#333C4A;--ui2:#333C4A;--ui3:#333C4A;--tx1:#cccac2;--tx2:#707A8C;--tx3:#495063;--hl1:rgba(64,159,255,0.25)}.theme-dark.minimal-ayu-dark.minimal-dark-black{--accent-h:40;--accent-s:75%;--accent-l:61%;--bg3:#0E1017;--tx1:#BFBDB6;--divider-color:#11151C;--tab-outline-color:#11151C}.theme-light.minimal-catppuccin-light{--color-red-rgb:230,69,83;--color-orange-rgb:254,100,12;--color-yellow-rgb:223,142,29;--color-green-rgb:64,160,43;--color-cyan-rgb:23,146,154;--color-blue-rgb:33,102,246;--color-purple-rgb:137,56,239;--color-pink-rgb:234,119,203;--color-red:#E64553;--color-orange:#FE640C;--color-yellow:#DF8E1D;--color-green:#40A02B;--color-cyan:#17929A;--color-blue:#2166F6;--color-purple:#8938EF;--color-pink:#EA77CB}.theme-dark.minimal-catppuccin-dark{--color-red-rgb:235,153,156;--color-orange-rgb:239,160,118;--color-yellow-rgb:229,200,144;--color-green-rgb:166,209,138;--color-cyan-rgb:129,200,190;--color-blue-rgb:140,170,238;--color-purple-rgb:202,158,230;--color-pink-rgb:244,185,229;--color-red:#EB999C;--color-orange:#EFA076;--color-yellow:#E5C890;--color-green:#A6D18A;--color-cyan:#81C8BE;--color-blue:#8CAAEE;--color-purple:#CA9EE6;--color-pink:#F4B9E5}.theme-light.minimal-catppuccin-light{--base-h:228;--base-s:20%;--base-l:95%;--accent-h:11;--accent-s:59%;--accent-l:67%;--bg1:#F0F1F5;--bg2:#DCE0E8;--bg3:hsla(228,11%,65%,.25);--ui1:#CCD0DA;--ui2:#BCC0CC;--ui3:#ACB0BE;--tx1:#4D4F69;--tx2:#5D5F77;--tx3:#8D8FA2;--hl1:rgba(172,176,190,.3);--hl2:rgba(223,142,29,.3)}.theme-light.minimal-catppuccin-light.minimal-light-tonal{--bg2:#DCE0E8}.theme-light.minimal-catppuccin-light.minimal-light-white{--bg3:#F0F1F5;--ui1:#DCE0E8}.theme-dark.minimal-catppuccin-dark,.theme-light.minimal-catppuccin-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-catppuccin-light.minimal-light-contrast .titlebar,.theme-light.minimal-catppuccin-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-catppuccin-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-catppuccin-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:229;--base-s:19%;--base-l:23%;--accent-h:10;--accent-s:57%;--accent-l:88%;--bg1:#303446;--bg2:#242634;--bg3:hsla(229,13%,52%,0.25);--ui1:#41455A;--ui2:#51576D;--ui3:#626880;--tx1:#C6D0F5;--tx2:#A6ADCE;--tx3:#848BA7;--sp1:#242634;--hl1:rgba(98,104,128,.5);--hl2:rgba(223,142,29,.4)}.theme-dark.minimal-catppuccin-dark.minimal-dark-black{--ui1:#303446;--hl2:rgba(223,142,29,.5)}.theme-dark.minimal-dracula-dark{--color-red-rgb:255,85,85;--color-orange-rgb:255,184,108;--color-yellow-rgb:241,250,140;--color-green-rgb:80,250,123;--color-cyan-rgb:139,233,253;--color-blue-rgb:98,114,164;--color-purple-rgb:189,147,249;--color-pink-rgb:255,121,198;--color-red:#ff5555;--color-orange:#ffb86c;--color-yellow:#f1fa8c;--color-green:#50fa7b;--color-cyan:#8be9fd;--color-blue:#6272a4;--color-purple:#bd93f9;--color-pink:#ff79c6}.theme-dark.minimal-dracula-dark,.theme-light.minimal-dracula-light.minimal-light-contrast .titlebar,.theme-light.minimal-dracula-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-dracula-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:232;--base-s:16%;--base-l:19%;--accent-h:265;--accent-s:89%;--accent-l:78%;--bg1:#282a37;--bg2:#21222c;--ui2:#44475a;--ui3:#6272a4;--tx1:#f8f8f2;--tx2:#949FBE;--tx3:#6272a4;--hl1:rgba(134, 140, 170, 0.3);--hl2:rgba(189, 147, 249, 0.35)}.theme-dark.minimal-dracula-dark.minimal-dark-black{--ui1:#282a36}.theme-dark.minimal-eink-dark,.theme-light.minimal-eink-light{--collapse-icon-color:var(--text-normal);--icon-color-active:var(--bg1);--icon-color-hover:var(--bg1);--icon-color-focused:var(--bg1);--icon-opacity:1;--indentation-guide-color:var(--tx1);--indentation-guide-color-active:var(--tx1);--indentation-guide-width-active:3px;--interactive-normal:var(--bg1);--input-shadow:0 0 0 1px var(--tx1);--link-unresolved-opacity:1;--link-unresolved-decoration-style:dashed;--link-unresolved-decoration-color:var(--tx1);--metadata-label-background-active:var(--bg1);--metadata-input-background-active:var(--bg1);--modal-border-color:var(--tx1);--modal-border-width:2px;--nav-item-color-hover:var(--bg1);--nav-item-color-active:var(--bg1);--prompt-border-color:var(--tx1);--prompt-border-width:2px;--calendar-dot-active:var(--bg1);--calendar-dot-today:var(--bg1);--calendar-text-active:var(--bg1);--tag-border-width:1.25px;--tag-background:transparent;--tag-background-hover:transparent;--tag-border-color:var(--tx1);--tag-border-color-hover:var(--tx1);--text-on-accent:var(--bg1);--text-on-accent-inverted:var(--bg1)}.theme-dark.minimal-eink-dark.tabs-modern,.theme-light.minimal-eink-light.tabs-modern{--minimal-tab-text-color-active:var(--bg1);--tab-text-color-focused-active-current:var(--bg1)}.theme-dark.minimal-eink-dark .suggestion-container,.theme-light.minimal-eink-light .suggestion-container{border-width:3px}.theme-dark.minimal-eink-dark .cm-s-obsidian span.cm-inline-code,.theme-dark.minimal-eink-dark .markdown-rendered code,.theme-light.minimal-eink-light .cm-s-obsidian span.cm-inline-code,.theme-light.minimal-eink-light .markdown-rendered code{font-weight:600}.theme-dark.minimal-eink-dark .metadata-property-icon,.theme-light.minimal-eink-light .metadata-property-icon{--icon-color-focused:var(--tx1)}.theme-dark.minimal-eink-dark .checkbox-container,.theme-light.minimal-eink-light .checkbox-container{background-color:var(--bg1);box-shadow:0 0 0 1px var(--tx1);--toggle-thumb-color:var(--tx1)}.theme-dark.minimal-eink-dark .checkbox-container.is-enabled,.theme-light.minimal-eink-light .checkbox-container.is-enabled{background-color:var(--tx1);--toggle-thumb-color:var(--bg1)}.theme-dark.minimal-eink-dark .cm-s-obsidian span.cm-formatting-highlight,.theme-dark.minimal-eink-dark .cm-s-obsidian span.cm-highlight,.theme-dark.minimal-eink-dark .community-item .suggestion-highlight,.theme-dark.minimal-eink-dark .dropdown:hover,.theme-dark.minimal-eink-dark .horizontal-tab-nav-item:hover,.theme-dark.minimal-eink-dark .markdown-rendered mark,.theme-dark.minimal-eink-dark .status-bar .plugin-sync:hover .sync-status-icon.mod-success,.theme-dark.minimal-eink-dark .status-bar .plugin-sync:hover .sync-status-icon.mod-working,.theme-dark.minimal-eink-dark .status-bar-item.mod-clickable:hover,.theme-dark.minimal-eink-dark .suggestion-item.is-selected,.theme-dark.minimal-eink-dark .text-icon-button:hover,.theme-dark.minimal-eink-dark .vertical-tab-nav-item:hover,.theme-dark.minimal-eink-dark button,.theme-dark.minimal-eink-dark select:hover,.theme-dark.minimal-eink-dark:not(.colorful-active) .horizontal-tab-nav-item.is-active,.theme-dark.minimal-eink-dark:not(.colorful-active) .vertical-tab-nav-item.is-active,.theme-light.minimal-eink-light .cm-s-obsidian span.cm-formatting-highlight,.theme-light.minimal-eink-light .cm-s-obsidian span.cm-highlight,.theme-light.minimal-eink-light .community-item .suggestion-highlight,.theme-light.minimal-eink-light .dropdown:hover,.theme-light.minimal-eink-light .horizontal-tab-nav-item:hover,.theme-light.minimal-eink-light .markdown-rendered mark,.theme-light.minimal-eink-light .status-bar .plugin-sync:hover .sync-status-icon.mod-success,.theme-light.minimal-eink-light .status-bar .plugin-sync:hover .sync-status-icon.mod-working,.theme-light.minimal-eink-light .status-bar-item.mod-clickable:hover,.theme-light.minimal-eink-light .suggestion-item.is-selected,.theme-light.minimal-eink-light .text-icon-button:hover,.theme-light.minimal-eink-light .vertical-tab-nav-item:hover,.theme-light.minimal-eink-light button,.theme-light.minimal-eink-light select:hover,.theme-light.minimal-eink-light:not(.colorful-active) .horizontal-tab-nav-item.is-active,.theme-light.minimal-eink-light:not(.colorful-active) .vertical-tab-nav-item.is-active{color:var(--bg1)}.theme-light.minimal-eink-light{--base-h:0;--base-s:0%;--base-l:100%;--accent-h:0;--accent-s:0%;--accent-l:0%;--ax3:#000;--bg1:#fff;--bg2:#fff;--bg3:#000;--ui1:#000;--ui2:#000;--ui3:#000;--tx1:#000;--tx2:#000;--tx3:#000;--hl1:#000;--hl2:#000;--sp1:#fff;--text-on-accent:#fff;--background-modifier-cover:rgba(235,235,235,1)}.theme-light.minimal-eink-light.minimal-light-white{--bg3:#fff}.theme-dark.minimal-eink-dark,.theme-light.minimal-eink-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-eink-light.minimal-light-contrast .titlebar,.theme-light.minimal-eink-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-eink-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-eink-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:0;--base-s:0%;--base-l:0%;--accent-h:0;--accent-s:0%;--accent-l:100%;--ax3:#fff;--bg1:#000;--bg2:#000;--bg3:#fff;--ui1:#fff;--ui2:#fff;--ui3:#fff;--tx1:#fff;--tx2:#fff;--tx3:#fff;--hl1:#fff;--hl2:#fff;--sp1:#000;--background-modifier-cover:rgba(20,20,20,1)}.theme-light.minimal-eink-light.minimal-light-tonal{--bg3:#bbb;--ui1:#bbb;--modal-border-color:var(--ui1);--prompt-border-color:var(--ui1)}.theme-dark.minimal-eink-dark.minimal-dark-tonal{--bg3:#444;--ui1:#444;--modal-border-color:var(--ui1);--prompt-border-color:var(--ui1)}.theme-light.minimal-everforest-light{--color-red-rgb:248,85,82;--color-orange-rgb:245,125,38;--color-yellow-rgb:223,160,0;--color-green-rgb:141,161,1;--color-cyan-rgb:53,167,124;--color-blue-rgb:56,148,196;--color-purple-rgb:223,105,186;--color-pink-rgb:223,105,186;--color-red:#f85552;--color-orange:#f57d26;--color-yellow:#dfa000;--color-green:#8da101;--color-cyan:#35a77c;--color-blue:#3795C5;--color-purple:#df69ba;--color-pink:#df69ba}.theme-dark.minimal-everforest-dark{--color-red-rgb:230,126,128;--color-orange-rgb:230,152,117;--color-yellow-rgb:219,188,127;--color-green-rgb:167,192,128;--color-cyan-rgb:131,192,146;--color-blue-rgb:127,187,179;--color-purple-rgb:223,105,186;--color-pink-rgb:223,105,186;--color-red:#e67e80;--color-orange:#e69875;--color-yellow:#dbbc7f;--color-green:#a7c080;--color-cyan:#83c092;--color-blue:#7fbbb3;--color-purple:#d699b6;--color-pink:#d699b6}.theme-light.minimal-everforest-light{--base-h:44;--base-s:87%;--base-l:94%;--accent-h:83;--accent-s:36%;--accent-l:53%;--bg1:#fdf6e3;--bg2:#efebd4;--bg3:rgba(226,222,198,.5);--ui1:#e0dcc7;--ui2:#bec5b2;--ui3:#bec5b2;--tx1:#5C6A72;--tx2:#829181;--tx3:#a6b0a0;--hl1:rgba(198,214,152,.4);--hl2:rgba(222,179,51,.3)}.theme-light.minimal-everforest-light.minimal-light-tonal{--bg2:#fdf6e3}.theme-light.minimal-everforest-light.minimal-light-white{--bg3:#f3efda;--ui1:#edead5}.theme-dark.minimal-everforest-dark,.theme-light.minimal-everforest-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-everforest-light.minimal-light-contrast .titlebar,.theme-light.minimal-everforest-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-everforest-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-everforest-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:203;--base-s:15%;--base-l:23%;--accent-h:81;--accent-s:34%;--accent-l:63%;--bg1:#2d353b;--bg2:#232a2e;--bg3:rgba(71,82,88,0.5);--ui1:#475258;--ui2:#4f585e;--ui3:#525c62;--tx1:#d3c6aa;--tx2:#9da9a0;--tx3:#7a8478;--hl1:rgba(134,70,93,.5);--hl2:rgba(147,185,96,.3)}.theme-dark.minimal-everforest-dark.minimal-dark-black{--hl1:rgba(134,70,93,.4);--ui1:#2b3339}.theme-light.minimal-flexoki-light{--color-red-rgb:175,48,41;--color-orange-rgb:188,82,21;--color-yellow-rgb:173,131,1;--color-green-rgb:102,128,11;--color-cyan-rgb:36,131,123;--color-blue-rgb:32,94,166;--color-purple-rgb:94,64,157;--color-pink-rgb:160,47,111;--color-red:#AF3029;--color-orange:#BC5215;--color-yellow:#AD8301;--color-green:#66800B;--color-cyan:#24837B;--color-blue:#205EA6;--color-purple:#5E409D;--color-pink:#A02F6F}.theme-dark.minimal-flexoki-dark{--color-red-rgb:209,77,65;--color-orange-rgb:218,112,44;--color-yellow-rgb:208,162,21;--color-green-rgb:135,154,57;--color-cyan-rgb:58,169,159;--color-blue-rgb:67,133,190;--color-purple-rgb:139,126,200;--color-pink-rgb:206,93,151;--color-red:#D14D41;--color-orange:#DA702C;--color-yellow:#D0A215;--color-green:#879A39;--color-cyan:#3AA99F;--color-blue:#4385BE;--color-purple:#8B7EC8;--color-pink:#CE5D97}.theme-light.minimal-flexoki-light{--base-h:48;--base-s:100%;--base-l:97%;--accent-h:175;--accent-s:57%;--accent-l:33%;--bg1:#FFFCF0;--bg2:#F2F0E5;--bg3:rgba(16,15,15,0.05);--ui1:#E6E4D9;--ui2:#DAD8CE;--ui3:#CECDC3;--tx1:#100F0F;--tx2:#6F6E69;--tx3:#B7B5AC;--hl1:rgba(187,220,206,0.3);--hl2:rgba(247,209,61,0.3)}.theme-light.minimal-flexoki-light.minimal-light-tonal{--bg2:#FFFCF0}.theme-dark.minimal-flexoki-dark,.theme-light.minimal-flexoki-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-flexoki-light.minimal-light-contrast .titlebar,.theme-light.minimal-flexoki-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-flexoki-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-flexoki-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:360;--base-s:3%;--base-l:6%;--accent-h:175;--accent-s:49%;--accent-l:45%;--bg1:#100F0F;--bg2:#1C1B1A;--bg3:rgba(254,252,240,0.05);--ui1:#282726;--ui2:#343331;--ui3:#403E3C;--tx1:#CECDC3;--tx2:#878580;--tx3:#575653;--hl1:rgba(30,95,91,0.3);--hl2:rgba(213,159,17,0.3)}.theme-dark.minimal-flexoki-dark.minimal-dark-black{--ui1:#1C1B1A}.theme-dark.minimal-gruvbox-dark,.theme-light.minimal-gruvbox-light{--color-red-rgb:204,36,29;--color-orange-rgb:214,93,14;--color-yellow-rgb:215,153,33;--color-green-rgb:152,151,26;--color-cyan-rgb:104,157,106;--color-blue-rgb:69,133,136;--color-purple-rgb:177,98,134;--color-pink-rgb:177,98,134;--color-red:#cc241d;--color-orange:#d65d0e;--color-yellow:#d79921;--color-green:#98971a;--color-cyan:#689d6a;--color-blue:#458588;--color-purple:#b16286;--color-pink:#b16286}.theme-light.minimal-gruvbox-light{--base-h:49;--base-s:92%;--base-l:89%;--accent-h:24;--accent-s:88%;--accent-l:45%;--bg1:#fcf2c7;--bg2:#f2e6bd;--bg3:#ebd9b3;--ui1:#ebdbb2;--ui2:#d5c4a1;--ui3:#bdae93;--tx1:#282828;--tx2:#7c7065;--tx3:#a89a85;--hl1:rgba(192,165,125,.3);--hl2:rgba(215,153,33,.4)}.theme-light.minimal-gruvbox-light.minimal-light-tonal{--bg2:#fcf2c7}.theme-light.minimal-gruvbox-light.minimal-light-white{--bg3:#faf5d7;--ui1:#f2e6bd}.theme-dark.minimal-gruvbox-dark,.theme-light.minimal-gruvbox-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-gruvbox-light.minimal-light-contrast .titlebar,.theme-light.minimal-gruvbox-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-gruvbox-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-gruvbox-light.minimal-light-contrast.minimal-status-off .status-bar{--accent-h:24;--accent-s:88%;--accent-l:45%;--bg1:#282828;--bg2:#1e2021;--bg3:#3d3836;--bg3:rgba(62,57,55,0.5);--ui1:#3c3836;--ui2:#504945;--ui3:#665c54;--tx1:#fbf1c7;--tx2:#bdae93;--tx3:#7c6f64;--hl1:rgba(173,149,139,0.3);--hl2:rgba(215,153,33,.4)}.theme-dark.minimal-gruvbox-dark.minimal-dark-black{--hl1:rgba(173,149,139,0.4);--ui1:#282828}.theme-dark.minimal-macos-dark,.theme-light.minimal-macos-light{--color-red-rgb:255,59,49;--color-orange-rgb:255,149,2;--color-yellow-rgb:255,204,0;--color-green-rgb:42,205,65;--color-cyan-rgb:2,199,190;--color-blue-rgb:2,122,255;--color-purple-rgb:176,81,222;--color-pink-rgb:255,46,85;--color-red:#ff3b31;--color-orange:#ff9502;--color-yellow:#ffcc00;--color-green:#2acd41;--color-cyan:#02c7be;--color-blue:#027aff;--color-purple:#b051de;--color-pink:#ff2e55}.theme-light.minimal-macos-light{--base-h:106;--base-s:0%;--base-l:94%;--accent-h:212;--accent-s:100%;--accent-l:50%;--bg1:#fff;--bg2:#f0f0f0;--bg3:rgba(0,0,0,.1);--ui1:#e7e7e7;--tx1:#454545;--tx2:#808080;--tx3:#b0b0b0;--hl1:#b3d7ff}.theme-light.minimal-macos-light.minimal-light-tonal{--bg1:#f0f0f0;--bg2:#f0f0f0}.theme-dark.minimal-macos-dark,.theme-light.minimal-macos-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-macos-light.minimal-light-contrast .titlebar,.theme-light.minimal-macos-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-macos-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-macos-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:106;--base-s:0%;--base-l:12%;--accent-h:212;--accent-s:100%;--accent-l:50%;--bg1:#1e1e1e;--bg2:#282828;--bg3:rgba(255,255,255,0.11);--divider-color:#000;--tab-outline-color:#000;--ui1:#373737;--ui2:#515151;--ui3:#595959;--tx1:#dcdcdc;--tx2:#8c8c8c;--tx3:#686868;--hl1:rgba(98,169,252,0.5);--sp1:#fff}.theme-dark.minimal-macos-dark.minimal-dark-black{--divider-color:#1e1e1e;--tab-outline-color:#1e1e1e}.theme-dark.minimal-nord-dark,.theme-light.minimal-nord-light{--color-red-rgb:191,97,106;--color-orange-rgb:208,138,112;--color-yellow-rgb:235,203,139;--color-green-rgb:163,190,140;--color-cyan-rgb:136,192,208;--color-blue-rgb:129,161,193;--color-purple-rgb:180,142,173;--color-pink-rgb:180,142,173;--color-red:#BF616A;--color-orange:#D08770;--color-yellow:#EBCB8B;--color-green:#A3BE8C;--color-cyan:#88C0D0;--color-blue:#81A1C1;--color-purple:#B48EAD;--color-pink:#B48EAD}.theme-light.minimal-nord-light{--base-h:221;--base-s:27%;--base-l:94%;--accent-h:213;--accent-s:32%;--accent-l:52%;--bg1:#fff;--bg2:#eceff4;--bg3:rgba(157,174,206,0.25);--ui1:#d8dee9;--ui2:#BBCADC;--ui3:#81a1c1;--tx1:#2e3440;--tx2:#7D8697;--tx3:#ADB1B8;--hl2:rgba(208, 135, 112, 0.35)}.theme-dark.minimal-nord-dark,.theme-light.minimal-nord-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-nord-light.minimal-light-contrast .titlebar,.theme-light.minimal-nord-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-nord-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-nord-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:220;--base-s:16%;--base-l:22%;--accent-h:213;--accent-s:32%;--accent-l:52%;--bg1:#2e3440;--bg2:#3b4252;--bg3:rgba(135,152,190,0.15);--ui1:#434c5e;--ui2:#58647b;--ui3:#58647b;--tx1:#d8dee9;--tx2:#9eafcc;--tx3:#4c566a;--hl1:rgba(129,142,180,0.3);--hl2:rgba(208, 135, 112, 0.35)}.theme-dark.minimal-nord-dark.minimal-dark-black{--ui1:#2e3440}.theme-light.minimal-notion-light{--base-h:39;--base-s:18%;--base-d:96%;--accent-h:197;--accent-s:71%;--accent-l:52%;--bg2:#f7f6f4;--bg3:#e8e7e4;--ui1:#ededec;--ui2:#dbdbda;--ui3:#aaa9a5;--tx1:#37352f;--tx2:#72706c;--tx3:#aaa9a5;--hl1:rgba(131,201,229,0.3);--link-weight:500}.theme-dark.minimal-notion-dark,.theme-light.minimal-notion-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-notion-light.minimal-light-contrast .titlebar,.theme-light.minimal-notion-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-notion-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-notion-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:203;--base-s:8%;--base-d:20%;--accent-h:197;--accent-s:71%;--accent-l:52%;--bg1:#2f3437;--bg2:#373c3f;--bg3:#4b5053;--ui1:#3e4245;--ui2:#585d5f;--ui3:#585d5f;--tx1:#ebebeb;--tx2:#909295;--tx3:#585d5f;--hl1:rgba(57,134,164,0.3);--link-weight:500}.theme-dark.minimal-notion-dark.minimal-dark-black{--base-d:5%;--bg3:#232729;--ui1:#2f3437}.theme-light.minimal-rose-pine-light{--color-red-rgb:180,99,122;--color-orange-rgb:215,130,125;--color-yellow-rgb:234,157,53;--color-green-rgb:40,105,131;--color-cyan-rgb:87,147,159;--color-blue-rgb:87,147,159;--color-purple-rgb:144,122,169;--color-pink-rgb:144,122,169;--color-red:#b4637a;--color-orange:#d7827e;--color-yellow:#ea9d34;--color-green:#286983;--color-cyan:#56949f;--color-blue:#56949f;--color-purple:#907aa9;--color-pink:#907aa9}.theme-dark.minimal-rose-pine-dark{--color-red-rgb:234,111,146;--color-orange-rgb:233,155,151;--color-yellow-rgb:246,193,119;--color-green-rgb:47,116,143;--color-cyan-rgb:157,207,215;--color-blue-rgb:157,207,215;--color-purple-rgb:196,167,231;--color-pink-rgb:196,167,231;--color-red:#eb6f92;--color-orange:#ea9a97;--color-yellow:#f6c177;--color-green:#31748f;--color-cyan:#9ccfd8;--color-blue:#9ccfd8;--color-purple:#c4a7e7;--color-pink:#c4a7e7}.theme-light.minimal-rose-pine-light{--base-h:32;--base-s:57%;--base-l:95%;--accent-h:3;--accent-s:53%;--accent-l:67%;--bg1:#fffaf3;--bg2:#faf4ed;--bg3:rgba(233,223,218,0.5);--ui1:#EAE3E1;--ui2:#dfdad9;--ui3:#cecacd;--tx1:#575279;--tx2:#797593;--tx3:#9893a5;--hl1:rgba(191,180,181,0.35)}.theme-dark.minimal-rose-pine-dark,.theme-light.minimal-rose-pine-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-rose-pine-light.minimal-light-contrast .titlebar,.theme-light.minimal-rose-pine-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-rose-pine-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-rose-pine-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:247;--base-s:23%;--base-l:15%;--accent-h:2;--accent-s:55%;--accent-l:83%;--bg1:#1f1d2e;--bg2:#191724;--bg3:rgba(68,66,86,0.5);--ui1:#312F41;--ui2:#403d52;--ui3:#524f67;--tx1:#e0def4;--tx2:#908caa;--tx3:#6e6a86;--hl1:rgba(126,121,155,0.35)}.theme-dark.minimal-rose-pine-dark.minimal-dark-black{--ui1:#21202e}.theme-dark.minimal-solarized-dark,.theme-light.minimal-solarized-light{--color-red-rgb:220,50,47;--color-orange-rgb:203,77,22;--color-yellow-rgb:181,137,0;--color-green-rgb:133,153,0;--color-cyan-rgb:42,161,152;--color-blue-rgb:38,139,210;--color-purple-rgb:108,113,196;--color-pink-rgb:211,54,130;--color-red:#dc322f;--color-orange:#cb4b16;--color-yellow:#b58900;--color-green:#859900;--color-cyan:#2aa198;--color-blue:#268bd2;--color-purple:#6c71c4;--color-pink:#d33682}.theme-light.minimal-solarized-light{--base-h:44;--base-s:87%;--base-l:94%;--accent-h:205;--accent-s:70%;--accent-l:48%;--bg1:#fdf6e3;--bg2:#eee8d5;--bg3:rgba(0,0,0,0.062);--ui1:#e9e1c8;--ui2:#d0cab8;--ui3:#d0cab8;--tx1:#073642;--tx2:#586e75;--tx3:#ABB2AC;--tx4:#586e75;--hl1:rgba(202,197,182,0.3);--hl2:rgba(203,75,22,0.3)}.theme-light.minimal-solarized-light.minimal-light-tonal{--bg2:#fdf6e3}.theme-dark.minimal-solarized-dark,.theme-light.minimal-solarized-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-solarized-light.minimal-light-contrast .titlebar,.theme-light.minimal-solarized-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-solarized-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-solarized-light.minimal-light-contrast.minimal-status-off .status-bar{--accent-h:205;--accent-s:70%;--accent-l:48%;--base-h:193;--base-s:98%;--base-l:11%;--bg1:#002b36;--bg2:#073642;--bg3:rgba(255,255,255,0.062);--ui1:#19414B;--ui2:#274850;--ui3:#31535B;--tx1:#93a1a1;--tx2:#657b83;--tx3:#31535B;--tx4:#657b83;--hl1:rgba(15,81,98,0.3);--hl2:rgba(203, 75, 22, 0.35)}.theme-dark.minimal-solarized-dark.minimal-dark-black{--hl1:rgba(15,81,98,0.55);--ui1:#002b36}.theme-dark.minimal-things-dark,.theme-light.minimal-things-light{--color-red-rgb:255,48,108;--color-orange-rgb:255,149,2;--color-yellow-rgb:255,213,0;--color-green-rgb:75,191,94;--color-cyan-rgb:73,174,164;--color-purple-rgb:176,81,222;--color-pink-rgb:255,46,85;--color-red:#FF306C;--color-orange:#ff9502;--color-yellow:#FFD500;--color-green:#4BBF5E;--color-cyan:#49AEA4;--color-purple:#b051de;--color-pink:#ff2e55}.theme-light.minimal-things-light{--color-blue-rgb:27,97,194;--color-blue:#1b61c2}.theme-dark.minimal-things-dark{--color-blue-rgb:77,149,247;--color-blue:#4d95f7}.theme-light.minimal-things-light{--accent-h:215;--accent-s:76%;--accent-l:43%;--bg1:white;--bg2:#f5f6f8;--bg3:rgba(162,177,187,0.25);--ui1:#eef0f4;--ui2:#D8DADD;--ui3:#c1c3c6;--tx1:#26272b;--tx2:#7D7F84;--tx3:#a9abb0;--hl1:#cae2ff}.theme-light.minimal-things-light.minimal-light-tonal{--ui1:#e6e8ec}.theme-light.minimal-things-light.minimal-light-white{--bg3:#f5f6f8}.theme-dark.minimal-things-dark,.theme-light.minimal-things-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-things-light.minimal-light-contrast .titlebar,.theme-light.minimal-things-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-things-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-things-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:218;--base-s:9%;--base-l:15%;--accent-h:215;--accent-s:91%;--accent-l:64%;--bg1:#24262a;--bg2:#202225;--bg3:#3d3f41;--divider-color:#17191c;--tab-outline-color:#17191c;--ui1:#3A3B3F;--ui2:#45464a;--ui3:#6c6e70;--tx1:#fbfbfb;--tx2:#CBCCCD;--tx3:#6c6e70;--hl1:rgba(40,119,236,0.35);--sp1:#fff}.theme-dark.minimal-things-dark.minimal-dark-black{--base-d:5%;--bg3:#24262a;--divider-color:#24262a;--tab-outline-color:#24262a} +body{--font-editor-theme:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Inter,Ubuntu,sans-serif;--font-editor:var(--font-editor-override),var(--font-text-override),var(--font-editor-theme)}body{--blockquote-style:normal;--blockquote-color:var(--text-muted);--blockquote-border-thickness:1px;--blockquote-border-color:var(--quote-opening-modifier);--embed-block-shadow-hover:none;--font-ui-smaller:11px;--normal-weight:400;--bold-weight:600;--link-weight:inherit;--inline-title-margin-bottom:1rem;--h1-size:1.125em;--h2-size:1.05em;--h3-size:1em;--h4-size:0.90em;--h5-size:0.85em;--h6-size:0.85em;--h1-weight:600;--h2-weight:600;--h3-weight:500;--h4-weight:500;--h5-weight:500;--h6-weight:400;--h1-variant:normal;--h2-variant:normal;--h3-variant:normal;--h4-variant:normal;--h5-variant:small-caps;--h6-variant:small-caps;--h1-style:normal;--h2-style:normal;--h3-style:normal;--h4-style:normal;--h5-style:normal;--h6-style:normal;--line-width:40rem;--line-height:1.5;--line-height-normal:var(--line-height);--max-width:88%;--max-col-width:18em;--icon-muted:0.5;--nested-padding:1.1em;--folding-offset:32px;--list-edit-offset:0.5em;--list-indent:2em;--list-spacing:0.075em;--input-height:32px;--header-height:40px;--metadata-label-width:9rem;--metadata-label-font-size:var(--font-adaptive-small);--metadata-input-font-size:var(--font-adaptive-small);--mobile-left-sidebar-width:280pt;--mobile-right-sidebar-width:240pt;--top-left-padding-y:0px;--image-muted:0.7;--image-radius:4px;--heading-spacing:2em;--p-spacing:1.75rem;--border-width:1px;--table-border-width:var(--border-width);--table-selection:var(--text-selection);--table-selection-border-color:var(--text-accent);--table-selection-border-width:0px;--table-selection-border-radius:0px;--table-drag-handle-background-active:var(--text-selection);--table-drag-handle-color-active:var(--text-accent);--table-add-button-border-width:0px;--file-margins:var(--size-4-2) var(--size-4-12)}.mod-macos{--top-left-padding-y:24px}.is-phone{--metadata-label-font-size:var(--font-adaptive-smaller);--metadata-input-font-size:var(--font-adaptive-smaller)}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){.is-phone{--border-width:0.75px}}body{--base-h:0;--base-s:0%;--base-l:96%;--accent-h:201;--accent-s:17%;--accent-l:50%}.theme-dark,.theme-light{--color-red-rgb:208,66,85;--color-orange-rgb:213,118,63;--color-yellow-rgb:229,181,103;--color-green-rgb:168,195,115;--color-cyan-rgb:115,187,178;--color-blue-rgb:108,153,187;--color-purple-rgb:158,134,200;--color-pink-rgb:176,82,121;--color-red:#d04255;--color-orange:#d5763f;--color-yellow:#e5b567;--color-green:#a8c373;--color-cyan:#73bbb2;--color-blue:#6c99bb;--color-purple:#9e86c8;--color-pink:#b05279}.theme-light,.theme-light.minimal-default-light,body .excalidraw{--bg1:white;--bg2:hsl( var(--base-h), var(--base-s), var(--base-l) );--bg3:hsla( var(--base-h), var(--base-s), calc(var(--base-l) - 50%), 0.12 );--ui1:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 6%) );--ui2:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 12%) );--ui3:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 20%) );--tx1:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 90%) );--tx2:hsl( var(--base-h), calc(var(--base-s) - 20%), calc(var(--base-l) - 50%) );--tx3:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) - 25%) );--tx4:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) - 60%) );--ax1:hsl( var(--accent-h), var(--accent-s), var(--accent-l) );--ax2:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) - 8%) );--ax3:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) + 6%) );--hl1:hsla( var(--accent-h), 50%, calc(var(--base-l) - 20%), 30% );--hl2:rgba(255, 225, 0, 0.5);--sp1:white}.excalidraw.theme--dark,.theme-dark,.theme-dark.minimal-default-dark,.theme-light.minimal-light-contrast .titlebar,.theme-light.minimal-light-contrast.minimal-status-off .status-bar{--accent-l:60%;--base-l:15%;--bg1:hsl( var(--base-h), var(--base-s), var(--base-l) );--bg2:hsl( var(--base-h), var(--base-s), calc(var(--base-l) - 2%) );--bg3:hsla( var(--base-h), var(--base-s), calc(var(--base-l) + 40%), 0.12 );--ui1:hsl( var(--base-h), var(--base-s), calc(var(--base-l) + 6%) );--ui2:hsl( var(--base-h), var(--base-s), calc(var(--base-l) + 12%) );--ui3:hsl( var(--base-h), var(--base-s), calc(var(--base-l) + 20%) );--tx1:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) + 67%) );--tx2:hsl( var(--base-h), calc(var(--base-s) - 20%), calc(var(--base-l) + 45%) );--tx3:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) + 20%) );--tx4:hsl( var(--base-h), calc(var(--base-s) - 10%), calc(var(--base-l) + 50%) );--ax1:hsl( var(--accent-h), var(--accent-s), var(--accent-l) );--ax2:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) + 8%) );--ax3:hsl( var(--accent-h), var(--accent-s), calc(var(--accent-l) - 5%) );--hl1:hsla( var(--accent-h), 50%, 40%, 30% );--hl2:rgba(255, 177, 80, 0.3);--sp1:white}.theme-light.minimal-light-white{--background-primary:white;--background-secondary:white;--background-secondary-alt:white;--ribbon-background:white;--titlebar-background:white;--bg1:white}.theme-dark.minimal-dark-black{--base-d:0%;--titlebar-background:black;--background-primary:black;--background-secondary:black;--background-secondary-alt:black;--ribbon-background:black;--background-modifier-hover:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 10%));--tx1:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 75%) );--tx2:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 50%) );--tx3:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 25%) );--ui1:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 12%) );--ui2:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 20%) );--ui3:hsl( var(--base-h), var(--base-s), calc(var(--base-d) + 30%) )}.theme-light{--mono100:black;--mono0:white}.theme-dark{--mono100:white;--mono0:black}.theme-dark,.theme-light,.theme-light.minimal-light-contrast .titlebar,.theme-light.minimal-light-contrast.is-mobile .workspace-drawer.mod-left,.theme-light.minimal-light-contrast.minimal-status-off .status-bar{--background-modifier-accent:var(--ax3);--background-modifier-border-focus:var(--ui3);--background-modifier-border-hover:var(--ui2);--background-modifier-border:var(--ui1);--background-modifier-form-field-highlighted:var(--bg1);--background-modifier-form-field:var(--bg1);--background-modifier-success:var(--color-green);--background-modifier-hover:var(--bg3);--background-modifier-active-hover:var(--bg3);--background-primary:var(--bg1);--background-primary-alt:var(--bg2);--background-secondary:var(--bg2);--background-secondary-alt:var(--bg1);--background-table-rows:var(--bg2);--checkbox-color:var(--ax3);--code-normal:var(--tx1);--divider-color:var(--ui1);--frame-divider-color:var(--ui1);--icon-color-active:var(--tx1);--icon-color-focused:var(--tx1);--icon-color-hover:var(--tx2);--icon-color:var(--tx2);--icon-hex:var(--mono0);--interactive-accent-hover:var(--ax1);--interactive-accent:var(--ax3);--interactive-hover:var(--ui1);--list-marker-color:var(--tx3);--modal-border-color:var(--ui2);--nav-item-background-active:var(--bg3);--nav-item-background-hover:var(--bg3);--nav-item-color:var(--tx2);--nav-item-color-active:var(--tx1);--nav-item-color-hover:var(--tx1);--nav-collapse-icon-color:var(--tx2);--nav-collapse-icon-color-collapsed:var(--tx2);--nav-indentation-guide-color:var(--ui1);--prompt-border-color:var(--ui3);--quote-opening-modifier:var(--ui2);--ribbon-background:var(--bg2);--scrollbar-active-thumb-bg:var(--ui3);--scrollbar-bg:transparent;--scrollbar-thumb-bg:var(--ui1);--search-result-background:var(--bg1);--tab-text-color-focused-active:var(--tx1);--tab-outline-color:var(--ui1);--text-accent-hover:var(--ax2);--text-accent:var(--ax1);--text-blockquote:var(--tx2);--text-bold:var(--tx1);--text-code:var(--tx4);--text-error:var(--color-red);--text-faint:var(--tx3);--text-highlight-bg:var(--hl2);--text-italic:var(--tx1);--text-muted:var(--tx2);--text-normal:var(--tx1);--text-on-accent:var(--sp1);--text-selection:var(--hl1);--text-formatting:var(--tx3);--title-color-inactive:var(--tx2);--title-color:var(--tx1);--titlebar-background:var(--bg2);--titlebar-background-focused:var(--bg2);--titlebar-text-color-focused:var(--tx1);--workspace-background-translucent:hsla(var(--base-h),var(--base-s), var(--base-l), 0.7)}.theme-dark .view-actions,.theme-light .view-actions{--icon-color-active:var(--ax1)}.theme-light.minimal-light-contrast{--workspace-background-translucent:rgba(0,0,0,0.6)}.theme-light.minimal-light-contrast .theme-dark{--tab-container-background:var(--bg2);--ribbon-background-collapsed:var(--bg2)}.theme-light{--interactive-normal:var(--bg1);--interactive-accent-rgb:220,220,220;--active-line-bg:rgba(0,0,0,0.035);--background-modifier-cover:hsla(var(--base-h),calc(var(--base-s) - 70%),calc(var(--base-l) - 20%),0.5);--text-highlight-bg-active:rgba(0, 0, 0, 0.1);--background-modifier-error:rgba(255,0,0,0.14);--background-modifier-error-hover:rgba(255,0,0,0.08);--shadow-color:rgba(0, 0, 0, 0.1);--btn-shadow-color:rgba(0, 0, 0, 0.05)}.theme-dark{--interactive-normal:var(--bg3);--interactive-accent-rgb:66,66,66;--active-line-bg:rgba(255,255,255,0.04);--background-modifier-cover:hsla(var(--base-h),var(--base-s), calc(var(--base-l) - 12%), 0.5);--text-highlight-bg-active:rgba(255, 255, 255, 0.1);--background-modifier-error:rgba(255,20,20,0.12);--background-modifier-error-hover:rgba(255,20,20,0.18);--background-modifier-box-shadow:rgba(0, 0, 0, 0.3);--shadow-color:rgba(0, 0, 0, 0.3);--btn-shadow-color:rgba(0, 0, 0, 0.2)}.theme-light.minimal-light-white{--background-table-rows:var(--bg2)}.theme-light.minimal-light-tonal{--background-primary:var(--bg2);--background-primary-alt:var(--bg3);--background-table-rows:var(--bg3)}.theme-dark.minimal-dark-tonal{--ribbon-background:var(--bg1);--background-secondary:var(--bg1);--background-table-rows:var(--bg3)}.theme-dark.minimal-dark-black{--background-primary-alt:var(--bg3);--background-table-rows:var(--bg3);--modal-border:var(--ui2);--active-line-bg:rgba(255,255,255,0.085);--background-modifier-form-field:var(--bg3);--background-modifier-cover:hsla(var(--base-h),var(--base-s),calc(var(--base-d) + 8%),0.9);--background-modifier-box-shadow:rgba(0, 0, 0, 1)}body{--font-adaptive-normal:var(--font-text-size,var(--editor-font-size));--font-adaptive-small:calc(var(--font-ui-small) * 1.07);--font-adaptive-smaller:var(--font-ui-small);--font-adaptive-smallest:var(--font-ui-smaller);--line-width-wide:calc(var(--line-width) + 12.5%);--font-code:calc(var(--font-adaptive-normal) * 0.9);--table-text-size:calc(var(--font-adaptive-normal) * 0.875)}.minimal-dev-block-width .mod-root .workspace-leaf-content:after{display:flex;align-items:flex-end;content:" pane ";font-size:12px;color:gray;font-family:var(--font-monospace);width:100%;max-width:100%;height:100vh;top:0;z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable .mod-root .view-header:after{display:flex;align-items:flex-end;color:green;font-size:12px;font-family:var(--font-monospace);content:" ";width:var(--folding-offset);height:100vh;border-left:1px solid green;border-right:1px solid green;background-color:rgba(0,128,0,.1);top:0;left:max(50% - var(--line-width)/2 - 1px,50% - var(--max-width)/2 - 1px);z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable-off .mod-root .view-header:after{display:flex;align-items:flex-end;color:green;font-size:12px;font-family:var(--font-monospace);content:" ";width:var(--folding-offset);height:100vh;border-left:1px solid green;border-right:1px solid green;background-color:rgba(0,128,0,.1);top:0;left:calc(50% - var(--max-width)/ 2 - 1px);z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width .mod-root .view-content:before{display:flex;align-items:flex-end;content:" max ";font-size:12px;color:red;width:var(--max-width);height:100vh;border-left:1px solid red;border-right:1px solid red;top:0;left:50%;transform:translate(-50%,0);z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable .mod-root .workspace-leaf-content:before{display:flex;align-items:flex-end;content:" wide ";font-size:12px;color:orange;font-family:var(--font-monospace);width:var(--line-width-wide);max-width:var(--max-width);height:100vh;border-left:1px solid orange;border-right:1px solid orange;background-color:rgba(255,165,0,.05);top:0;left:50%;transform:translate(-50%,0);z-index:999;position:fixed;pointer-events:none}.minimal-dev-block-width.minimal-readable .mod-root .view-content:after{display:flex;align-items:flex-end;color:#00f;font-size:12px;font-family:var(--font-monospace);content:" normal";width:var(--line-width);max-width:var(--max-width);height:100vh;border-left:1px solid #00f;border-right:1px solid #00f;background-color:rgba(0,0,255,.08);top:0;left:50%;transform:translate(-50%,0);z-index:999;position:fixed;pointer-events:none}.CodeMirror-wrap>div>textarea{opacity:0}.markdown-source-view.mod-cm6 hr{border-width:2px}.cm-editor .cm-content{padding-top:.5em}.markdown-source-view{color:var(--text-normal)}.markdown-source-view.mod-cm6 .cm-sizer{display:block}.markdown-source-view.mod-cm6 .cm-scroller{padding-left:0;padding-right:0}.cm-s-obsidian .cm-line.HyperMD-header{padding-top:calc(var(--p-spacing)/2)}.markdown-rendered .mod-header+div>*{margin-block-start:0}body :not(.canvas-node) .markdown-source-view.mod-cm6 .cm-gutters{position:absolute!important;z-index:0;margin-inline-end:0}body :not(.canvas-node) .markdown-source-view.mod-cm6.is-rtl .cm-gutters{right:0}body{--line-number-color:var(--text-faint);--line-number-color-active:var(--text-muted)}.markdown-source-view.mod-cm6 .cm-gutters{color:var(--line-number-color)!important}.markdown-source-view.mod-cm6 .cm-editor .cm-gutterElement.cm-active .cm-heading-marker,.markdown-source-view.mod-cm6 .cm-editor .cm-lineNumbers .cm-gutterElement.cm-active{color:var(--line-number-color-active)}.cm-editor .cm-lineNumbers{background-color:var(--gutter-background)}.cm-editor .cm-lineNumbers .cm-gutterElement{min-width:var(--folding-offset);padding-inline-end:.5em}.is-rtl .cm-editor .cm-lineNumbers .cm-gutterElement{text-align:left}@media(max-width:400pt){.cm-editor .cm-lineNumbers .cm-gutterElement{padding-inline-end:4px;padding-inline-start:8px}}.cm-editor .cm-gutterElement.cm-active .cm-heading-marker,.cm-editor .cm-lineNumbers .cm-gutterElement.cm-active{color:var(--text-muted)}.markdown-source-view.mod-cm6 .edit-block-button{cursor:var(--cursor);color:var(--text-faint);background-color:var(--background-primary);top:0;opacity:0;transition:opacity .2s;padding:4px 4px 4px 9px}.markdown-source-view.mod-cm6 .edit-block-button svg{margin:0!important}.markdown-source-view.mod-cm6.is-live-preview.is-readable-line-width .cm-embed-block>.edit-block-button{width:30px!important;padding-left:7px!important}.is-live-preview:not(.is-readable-line-width) .cm-embed-block>.edit-block-button{padding-left:0!important;margin-left:0!important;padding:4px}.markdown-source-view.mod-cm6 .edit-block-button:hover{background-color:var(--background-primary);color:var(--text-muted)}.markdown-source-view.mod-cm6 .edit-block-button svg{opacity:1}.markdown-source-view.mod-cm6 .edit-block-button:hover svg{opacity:1}.markdown-source-view.mod-cm6 .cm-embed-block{padding:0;border:0;border-radius:0}.markdown-source-view.mod-cm6 .cm-embed-block:hover{border:0}.metadata-container{--input-height:2rem}.markdown-source-view .metadata-container{transform:translateX(-4px)}body.metadata-heading-off .metadata-properties-heading{display:none}.metadata-add-property-off .mod-root .metadata-add-button{display:none}.metadata-dividers{--metadata-divider-width:1px;--metadata-gap:0px}.metadata-icons-off .workspace-leaf-content[data-type=all-properties] .tree-item-inner{margin-left:-16px}.metadata-icons-off .workspace-leaf-content[data-type=all-properties] .tree-item-icon{display:none}.metadata-icons-off .metadata-property-icon{display:none}figure{margin-inline-start:0;margin-inline-end:0}.markdown-preview-view .mod-highlighted{transition:background-color .3s ease;background-color:var(--text-selection);color:inherit}.inline-title{padding-top:16px}.minimal-status-off .status-bar{--status-bar-position:static;--status-bar-radius:0;--status-bar-border-width:1px 0 0 0;--status-bar-background:var(--background-secondary);--status-bar-border-color:var(--ui1)}body:not(.minimal-status-off) .status-bar{background-color:var(--background-primary);--status-bar-border-width:0}.status-bar{transition:color .2s linear;color:var(--text-faint);font-size:var(--font-adaptive-smallest)}.status-bar .sync-status-icon.mod-success,.status-bar .sync-status-icon.mod-working{color:var(--text-faint)}.status-bar:hover,.status-bar:hover .sync-status-icon.mod-success,.status-bar:hover .sync-status-icon.mod-working{color:var(--text-muted);transition:color .2s linear}.status-bar .plugin-sync:hover .sync-status-icon.mod-success,.status-bar .plugin-sync:hover .sync-status-icon.mod-working{color:var(--text-normal)}.status-bar .status-bar-item{cursor:var(--cursor)!important}.status-bar .status-bar-item.cMenu-statusbar-button:hover,.status-bar .status-bar-item.mod-clickable:hover,.status-bar .status-bar-item.plugin-editor-status:hover,.status-bar .status-bar-item.plugin-sync:hover{text-align:center;background-color:var(--background-modifier-hover)!important}.tab-stack-top-flipped{--tab-stacked-text-transform:rotate(180deg);--tab-stacked-text-align:right}.tab-stack-center{--tab-stacked-text-align:center}.tab-stack-center-flipped{--tab-stacked-text-transform:rotate(180deg);--tab-stacked-text-align:center}.tab-stack-bottom{--tab-stacked-text-transform:rotate(180deg)}.tab-stack-bottom-flipped{--tab-stacked-text-align:right}.view-header-title,.view-header-title-parent{text-overflow:ellipsis}.view-header-title-container:not(.mod-at-end):after{display:none}body:not(.is-mobile) .view-actions .view-action:last-child{margin-left:-1px}.minimal-focus-mode .workspace-ribbon:not(.is-collapsed)~.mod-root .view-header:hover .view-actions,.mod-right.is-collapsed~.mod-root .view-header:hover .view-actions,.view-action.is-active:hover,.workspace-ribbon.mod-left.is-collapsed~.mod-root .view-header:hover .view-actions,body:not(.minimal-focus-mode) .workspace-ribbon:not(.is-collapsed)~.mod-root .view-actions{opacity:1;transition:opacity .25s ease-in-out}.view-header-title-container{opacity:0;transition:opacity .1s ease-in-out}.view-header-title-container:focus-within{opacity:1;transition:opacity .1s ease-in-out}.view-header:hover .view-header-title-container,.workspace-tab-header-container:hover+.workspace-tab-container .view-header-title-container{opacity:1;transition:opacity .1s ease-in-out}.is-phone .view-header-title-container,.minimal-tab-title-visible .view-header-title-container{opacity:1}.minimal-tab-title-hidden .view-header-title-container{opacity:0}.minimal-tab-title-hidden .view-header-title-container:focus-within{opacity:1;transition:opacity .1s ease-in-out}.minimal-tab-title-hidden .view-header:hover .view-header-title-container,.minimal-tab-title-hidden .workspace-tab-header-container:hover+.workspace-tab-container .view-header-title-container{opacity:0}body.window-title-off .titlebar-text{display:none}.titlebar-button-container.mod-right{background-color:rgba(0,0,0,0)!important}.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame),.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame):not(.minimal-light-white){--titlebar-background:var(--bg1)}.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame).is-focused .sidebar-toggle-button.mod-right,.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame).is-focused .workspace-ribbon.mod-left.is-collapsed,.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame).is-focused .workspace-tabs.mod-top,.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame):not(.minimal-light-white).is-focused .sidebar-toggle-button.mod-right,.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame):not(.minimal-light-white).is-focused .workspace-ribbon.mod-left.is-collapsed,.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame):not(.minimal-light-white).is-focused .workspace-tabs.mod-top{--titlebar-background-focused:var(--bg1)}.is-hidden-frameless.theme-dark:not(.minimal-dark-black):not(.colorful-frame):not(.minimal-dark-tonal):not(.minimal-light-white) .workspace-ribbon.mod-left:not(.is-collapsed),.is-hidden-frameless.theme-light:not(.minimal-light-tonal):not(.colorful-frame):not(.minimal-light-white):not(.minimal-dark-tonal):not(.minimal-light-white) .workspace-ribbon.mod-left:not(.is-collapsed){--titlebar-background:var(--bg2)}.mod-macos.is-hidden-frameless:not(.is-popout-window) .sidebar-toggle-button.mod-right{right:0;padding-right:var(--size-4-2)}body.is-focused{--titlebar-background-focused:var(--background-secondary)}.is-hidden-frameless:not(.colorful-frame) .mod-left-split .mod-top .workspace-tab-header-container{--tab-container-background:var(--background-secondary)}.mod-root .workspace-tab-header-status-icon{color:var(--text-muted)}.modal button:not(.mod-warning),.modal.mod-settings button:not(.mod-cta):not(.mod-warning),.modal.mod-settings button:not(.mod-warning){white-space:nowrap;transition:background-color .2s ease-out,border-color .2s ease-out}button.mod-warning{border:1px solid var(--background-modifier-error);color:var(--text-error);box-shadow:0 1px 1px 0 var(--btn-shadow-color);transition:background-color .2s ease-out}button.mod-warning:hover{border:1px solid var(--background-modifier-error);color:var(--text-error);box-shadow:0 2px 3px 0 var(--btn-shadow-color);transition:background-color .2s ease-out}.document-replace,.document-search{max-width:100%;padding:0}.document-search-container{margin:0 auto;max-width:var(--max-width);width:var(--line-width)}.modal-button-container .mod-checkbox{--checkbox-radius:4px}.modal-container.mod-confirmation .modal{width:480px;min-width:0}body{--progress-outline:var(--background-modifier-border);--progress-complete:var(--text-accent)}.markdown-preview-view progress,.markdown-rendered progress,.markdown-source-view.is-live-preview progress{width:220px}.markdown-preview-view progress[value]::-webkit-progress-bar,.markdown-rendered progress[value]::-webkit-progress-bar,.markdown-source-view.is-live-preview progress[value]::-webkit-progress-bar{box-shadow:inset 0 0 0 var(--border-width) var(--progress-outline)}.markdown-preview-view progress[value^="1"]::-webkit-progress-value,.markdown-preview-view progress[value^="2"]::-webkit-progress-value,.markdown-preview-view progress[value^="3"]::-webkit-progress-value,.markdown-rendered progress[value^="1"]::-webkit-progress-value,.markdown-rendered progress[value^="2"]::-webkit-progress-value,.markdown-rendered progress[value^="3"]::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^="1"]::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^="2"]::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^="3"]::-webkit-progress-value{background-color:var(--color-red)}.markdown-preview-view progress[value^="4"]::-webkit-progress-value,.markdown-preview-view progress[value^="5"]::-webkit-progress-value,.markdown-rendered progress[value^="4"]::-webkit-progress-value,.markdown-rendered progress[value^="5"]::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^="4"]::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^="5"]::-webkit-progress-value{background-color:var(--color-orange)}.markdown-preview-view progress[value^="6"]::-webkit-progress-value,.markdown-preview-view progress[value^="7"]::-webkit-progress-value,.markdown-rendered progress[value^="6"]::-webkit-progress-value,.markdown-rendered progress[value^="7"]::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^="6"]::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^="7"]::-webkit-progress-value{background-color:var(--color-yellow)}.markdown-preview-view progress[value^="8"]::-webkit-progress-value,.markdown-preview-view progress[value^="9"]::-webkit-progress-value,.markdown-rendered progress[value^="8"]::-webkit-progress-value,.markdown-rendered progress[value^="9"]::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^="8"]::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value^="9"]::-webkit-progress-value{background-color:var(--color-green)}.markdown-preview-view progress[value="1"]::-webkit-progress-value,.markdown-preview-view progress[value="100"]::-webkit-progress-value,.markdown-rendered progress[value="1"]::-webkit-progress-value,.markdown-rendered progress[value="100"]::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value="1"]::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value="100"]::-webkit-progress-value{background-color:var(--progress-complete)}.markdown-preview-view progress[value="0"]::-webkit-progress-value,.markdown-preview-view progress[value="2"]::-webkit-progress-value,.markdown-preview-view progress[value="3"]::-webkit-progress-value,.markdown-preview-view progress[value="4"]::-webkit-progress-value,.markdown-preview-view progress[value="5"]::-webkit-progress-value,.markdown-preview-view progress[value="6"]::-webkit-progress-value,.markdown-preview-view progress[value="7"]::-webkit-progress-value,.markdown-preview-view progress[value="8"]::-webkit-progress-value,.markdown-preview-view progress[value="9"]::-webkit-progress-value,.markdown-rendered progress[value="0"]::-webkit-progress-value,.markdown-rendered progress[value="2"]::-webkit-progress-value,.markdown-rendered progress[value="3"]::-webkit-progress-value,.markdown-rendered progress[value="4"]::-webkit-progress-value,.markdown-rendered progress[value="5"]::-webkit-progress-value,.markdown-rendered progress[value="6"]::-webkit-progress-value,.markdown-rendered progress[value="7"]::-webkit-progress-value,.markdown-rendered progress[value="8"]::-webkit-progress-value,.markdown-rendered progress[value="9"]::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value="0"]::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value="2"]::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value="3"]::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value="4"]::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value="5"]::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value="6"]::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value="7"]::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value="8"]::-webkit-progress-value,.markdown-source-view.is-live-preview progress[value="9"]::-webkit-progress-value{background-color:var(--color-red)}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar,body:not(.native-scrollbars) ::-webkit-scrollbar{width:11px;background-color:rgba(0,0,0,0)}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar:horizontal,body:not(.native-scrollbars) ::-webkit-scrollbar:horizontal{height:11px}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-corner,body:not(.native-scrollbars) ::-webkit-scrollbar-corner{background-color:rgba(0,0,0,0)}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-track,body:not(.native-scrollbars) ::-webkit-scrollbar-track{background-color:rgba(0,0,0,0)}body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-thumb,body:not(.native-scrollbars) ::-webkit-scrollbar-thumb{background-clip:padding-box;border-radius:20px;border:3px solid transparent;background-color:var(--background-modifier-border);border-width:3px 3px 3px 3px;min-height:45px}body:not(.hider-scrollbars).styled-scrollbars .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:hover,body:not(.hider-scrollbars).styled-scrollbars .modal .vertical-tab-header::-webkit-scrollbar-thumb:hover,body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-thumb:hover,body:not(.native-scrollbars) .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:hover,body:not(.native-scrollbars) .modal .vertical-tab-header::-webkit-scrollbar-thumb:hover,body:not(.native-scrollbars) ::-webkit-scrollbar-thumb:hover{background-color:var(--background-modifier-border-hover)}body:not(.hider-scrollbars).styled-scrollbars .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:active,body:not(.hider-scrollbars).styled-scrollbars .modal .vertical-tab-header::-webkit-scrollbar-thumb:active,body:not(.hider-scrollbars).styled-scrollbars ::-webkit-scrollbar-thumb:active,body:not(.native-scrollbars) .mod-left-split .workspace-tabs ::-webkit-scrollbar-thumb:active,body:not(.native-scrollbars) .modal .vertical-tab-header::-webkit-scrollbar-thumb:active,body:not(.native-scrollbars) ::-webkit-scrollbar-thumb:active{background-color:var(--background-modifier-border-focus)}.tooltip{transition:none;animation:none}.tooltip.mod-left,.tooltip.mod-right{animation:none}.tooltip.mod-error{color:var(--text-error)}.markdown-preview-view blockquote{padding:0 0 0 var(--nested-padding);font-size:var(--blockquote-size)}.markdown-source-view.mod-cm6 .HyperMD-quote,.markdown-source-view.mod-cm6.is-live-preview .HyperMD-quote{font-size:var(--blockquote-size)}.is-live-preview .cm-hmd-indent-in-quote{color:var(--text-faint)}.is-live-preview.is-readable-line-width>.cm-callout .callout{max-width:var(--max-width);margin:0 auto}.callouts-outlined .callout .callout-title{background-color:var(--background-primary);margin-top:-24px;z-index:200;width:fit-content;padding:0 .5em;margin-left:-.75em;letter-spacing:.05em;font-variant-caps:all-small-caps}.callouts-outlined .callout{overflow:visible;--callout-border-width:1px;--callout-border-opacity:0.5;--callout-title-size:0.8em;--callout-blend-mode:normal;background-color:rgba(0,0,0,0)}.callouts-outlined .cm-embed-block.cm-callout{padding-top:12px}.callouts-outlined .callout-content .callout{margin-top:18px}body{--checkbox-radius:50%;--checkbox-top:2px;--checkbox-left:0px;--checkbox-margin:0px 6px 0px -2em}.checkbox-square{--checkbox-size:calc(var(--font-text-size) * 0.85);--checkbox-radius:4px;--checkbox-top:1px;--checkbox-left:0px;--checkbox-margin:0px 8px 0px -2em}body.minimal-strike-lists{--checklist-done-decoration:line-through}body:not(.minimal-strike-lists){--checklist-done-decoration:none;--checklist-done-color:var(--text-normal)}.markdown-preview-section>.contains-task-list{padding-bottom:.5em}.mod-cm6 .HyperMD-task-line[data-task] .cm-formatting-list-ol~.task-list-label .task-list-item-checkbox{margin:1px}.markdown-preview-view .task-list-item-checkbox{position:relative;top:var(--checkbox-top);left:var(--checkbox-left)}.markdown-preview-view ul>li.task-list-item{text-indent:0}.minimal-code-scroll{--code-white-space:pre}.minimal-code-scroll .HyperMD-codeblock.HyperMD-codeblock-bg{overflow-y:scroll;white-space:pre}.minimal-code-scroll .cm-hmd-codeblock{white-space:pre!important}@media print{.print{--code-background:#eee!important}}body{--embed-max-height:none;--embed-decoration-style:solid;--embed-decoration-color:var(--background-modifier-border-hover)}.embed-strict{--embed-background:transparent;--embed-border-left:0;--embed-padding:0}.embed-strict .markdown-embed-content{--folding-offset:0px}.embed-strict .internal-embed .markdown-embed,.embed-strict .markdown-preview-view .markdown-embed,.embed-strict.markdown-preview-view .markdown-embed{padding:0}.embed-strict .internal-embed .markdown-embed .markdown-embed-title,.embed-strict .markdown-embed-title{display:none}.embed-strict .internal-embed:not([src*="#^"]) .markdown-embed-link{width:24px;opacity:0}.embed-underline .internal-embed:not(.pdf-embed){text-decoration-line:underline;text-decoration-style:var(--embed-decoration-style);text-decoration-color:var(--embed-decoration-color)}.embed-hide-title .markdown-embed-title{display:none}.contextual-typography .embed-strict .internal-embed .markdown-preview-view .markdown-preview-sizer>div,.embed-strict.contextual-typography .internal-embed .markdown-preview-view .markdown-preview-sizer>div{margin:0;width:100%}.markdown-embed .markdown-preview-view .markdown-preview-sizer{padding-bottom:0!important}.markdown-preview-view.is-readable-line-width .markdown-embed .markdown-preview-sizer,.markdown-preview-view.markdown-embed .markdown-preview-sizer{max-width:100%;width:100%;min-height:0!important;padding-bottom:0!important}.markdown-embed .markdown-preview-section div:last-child p,.markdown-embed .markdown-preview-section div:last-child ul{margin-block-end:2px}.markdown-preview-view .markdown-embed{margin-top:var(--nested-padding);padding:0 calc(var(--nested-padding)/2) 0 var(--nested-padding)}.internal-embed:not([src*="#^"]) .markdown-embed-link{right:0;width:100%}.file-embed-link,.markdown-embed-link{top:0;right:0;text-align:right;justify-content:flex-end}.file-embed-link svg,.markdown-embed-link svg{width:16px;height:16px}.markdown-embed .file-embed-link,.markdown-embed .markdown-embed-link{opacity:.6;transition:opacity .1s linear}.markdown-embed .file-embed-link:hover,.markdown-embed .markdown-embed-link:hover{opacity:1}.markdown-embed .file-embed-link:hover:hover,.markdown-embed .markdown-embed-link:hover:hover{background-color:rgba(0,0,0,0);--icon-color:var(--text-accent)}.file-embed-link:hover,.markdown-embed-link:hover{color:var(--text-muted)}.markdown-embed .markdown-preview-view{padding:0}.internal-embed .markdown-embed{border:0;border-left:1px solid var(--quote-opening-modifier);border-radius:0}a[href*="obsidian://search"]{background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' width='17' height='17' class='search'><path fill='black' stroke='black' stroke-width='2' d='M42,6C23.2,6,8,21.2,8,40s15.2,34,34,34c7.4,0,14.3-2.4,19.9-6.4l26.3,26.3l5.6-5.6l-26-26.1c5.1-6,8.2-13.7,8.2-22.1 C76,21.2,60.8,6,42,6z M42,10c16.6,0,30,13.4,30,30S58.6,70,42,70S12,56.6,12,40S25.4,10,42,10z'></path></svg>")}.theme-dark a[href*="obsidian://search"]{background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' width='17' height='17' class='search'><path fill='white' stroke='white' stroke-width='2' d='M42,6C23.2,6,8,21.2,8,40s15.2,34,34,34c7.4,0,14.3-2.4,19.9-6.4l26.3,26.3l5.6-5.6l-26-26.1c5.1-6,8.2-13.7,8.2-22.1 C76,21.2,60.8,6,42,6z M42,10c16.6,0,30,13.4,30,30S58.6,70,42,70S12,56.6,12,40S25.4,10,42,10z'></path></svg>")}body{--adaptive-list-edit-offset:var(--list-edit-offset)}.is-rtl{--adaptive-list-edit-offset:calc(var(--list-edit-offset)*-1)}.markdown-preview-view ol>li,.markdown-preview-view ul>li,.markdown-source-view ol>li,.markdown-source-view ul>li,.mod-cm6 .HyperMD-list-line.cm-line{padding-top:var(--list-spacing);padding-bottom:var(--list-spacing)}.is-mobile ul>li:not(.task-list-item)::marker{font-size:.8em}.is-mobile .workspace-leaf-content:not([data-type=search]) .workspace-leaf-content[data-type=markdown] .nav-buttons-container{border-bottom:none;padding-top:5px}.is-mobile .mod-root .workspace-leaf-content[data-type=markdown] .search-input-container{width:calc(100% - 160px)}.embedded-backlinks .backlink-pane>.tree-item-self,.embedded-backlinks .backlink-pane>.tree-item-self:hover{text-transform:none;color:var(--text-normal);font-size:var(--font-adaptive-normal);font-weight:500;letter-spacing:unset}body{--pdf-dark-opacity:1}.theme-dark:not(.pdf-shadows-on),.theme-light:not(.pdf-shadows-on){--pdf-shadow:none;--pdf-thumbnail-shadow:none}.theme-dark:not(.pdf-shadows-on) .pdf-viewer .page,.theme-light:not(.pdf-shadows-on) .pdf-viewer .page{border:0}.theme-dark:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnailSelectionRing,.theme-light:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnailSelectionRing{padding:0}.theme-dark:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnail::after,.theme-light:not(.pdf-shadows-on) .pdf-sidebar-container .thumbnail::after{right:var(--size-4-2);bottom:var(--size-4-2)}.theme-dark{--pdf-thumbnail-shadow:0 0 1px 0 rgba(0,0,0,0.6);--pdf-shadow:0 0 1px 0 rgba(0,0,0,0.6)}.theme-dark .pdf-viewer .canvasWrapper{opacity:var(--pdf-dark-opacity)}.theme-dark.pdf-invert-dark .workspace-leaf-content[data-type=pdf] .pdf-viewer .canvasWrapper{filter:invert(1) hue-rotate(180deg);mix-blend-mode:screen}.theme-light.pdf-blend-light .workspace-leaf-content[data-type=pdf] .pdf-viewer .canvasWrapper{mix-blend-mode:multiply}body{--table-header-border-width:0;--table-column-first-border-width:0;--table-column-last-border-width:0;--table-row-last-border-width:0;--table-edge-cell-padding-first:0;--table-edge-cell-padding-last:0;--table-cell-padding:4px 10px;--table-header-size:var(--table-text-size)}.markdown-source-view.mod-cm6 table{border-collapse:collapse}.markdown-rendered th{--table-header-size:var(--table-text-size)}.markdown-preview-view table,.markdown-source-view.mod-cm6 table{border:var(--border-width) solid var(--border-color);border-collapse:collapse}.markdown-preview-view td,.markdown-preview-view th,.markdown-source-view.mod-cm6 td,.markdown-source-view.mod-cm6 th{padding:var(--table-cell-padding)}.markdown-preview-view td:first-child,.markdown-preview-view th:first-child,.markdown-source-view.mod-cm6 td:first-child,.markdown-source-view.mod-cm6 th:first-child{padding-left:var(--table-edge-cell-padding-first)}.markdown-preview-view td:first-child .table-cell-wrapper,.markdown-preview-view th:first-child .table-cell-wrapper,.markdown-source-view.mod-cm6 td:first-child .table-cell-wrapper,.markdown-source-view.mod-cm6 th:first-child .table-cell-wrapper{padding-left:0}.markdown-preview-view td:last-child,.markdown-preview-view th:last-child,.markdown-source-view.mod-cm6 td:last-child,.markdown-source-view.mod-cm6 th:last-child{padding-right:var(--table-edge-cell-padding-last)}.markdown-preview-view td:last-child .table-cell-wrapper,.markdown-preview-view th:last-child .table-cell-wrapper,.markdown-source-view.mod-cm6 td:last-child .table-cell-wrapper,.markdown-source-view.mod-cm6 th:last-child .table-cell-wrapper{padding-right:0}.cm-embed-block.cm-table-widget.markdown-rendered{margin-top:-8px!important;padding:var(--table-drag-padding)}.markdown-source-view.mod-cm6 .cm-table-widget .table-col-drag-handle{top:0}.markdown-source-view.mod-cm6 .cm-table-widget .table-row-drag-handle{left:0}.markdown-preview-view th,.markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th,.table-view-table>thead>tr>th{padding:var(--table-cell-padding)}.markdown-preview-view th:first-child,.markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th:first-child,.table-view-table>thead>tr>th:first-child{padding-left:var(--table-edge-cell-padding-first)}.markdown-preview-view th:last-child,.markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th:last-child,.table-view-table>thead>tr>th:last-child{padding-right:var(--table-edge-cell-padding-last)}.cm-hmd-table-sep-dummy,.cm-s-obsidian .HyperMD-table-row span.cm-hmd-table-sep{color:var(--text-faint);font-weight:400}body.minimal-unstyled-tags{--tag-background:transparent;--tag-background-hover:transparent;--tag-border-width:0px;--tag-padding-x:0;--tag-padding-y:0;--tag-size:inherit;--tag-color-hover:var(--text-accent-hover)}body.minimal-unstyled-tags.is-mobile.theme-dark{--tag-background:transparent}body:not(.minimal-unstyled-tags){--tag-size:0.8em;--tag-padding-y:0.2em;--tag-background:transparent;--tag-background-hover:transparent;--tag-color:var(--text-muted);--tag-border-width:1px;--tag-border-color:var(--background-modifier-border);--tag-border-color-hover:var(--background-modifier-border-hover);--tag-color-hover:var(--text-normal)}body.is-mobile.theme-dark{--tag-background:transparent}h1,h2,h3,h4{letter-spacing:-.02em}body,button,input{font-family:var(--font-interface)}.cm-s-obsidian span.cm-error{color:var(--color-red)}.markdown-preview-view,.popover,.workspace-leaf-content[data-type=markdown]{font-family:var(--font-text)}.markdown-preview-view,.view-content>.cm-s-obsidian,.view-content>.markdown-source-view.mod-cm6.is-live-preview>.cm-scroller,body{font-size:var(--font-adaptive-normal);font-weight:var(--normal-weight)}.view-content>.cm-s-obsidian,.view-content>.markdown-source-view,.view-content>.markdown-source-view.mod-cm6 .cm-scroller{font-family:var(--font-editor)}.cm-formatting:not(.cm-formatting-code-block):not(.cm-formatting-hashtag){color:var(--text-formatting)}.hide-markdown .is-live-preview .cm-formatting.cm-formatting-code.cm-inline-code,.hide-markdown .is-live-preview .cm-formatting.cm-formatting-em,.hide-markdown .is-live-preview .cm-formatting.cm-formatting-highlight,.hide-markdown .is-live-preview .cm-formatting.cm-formatting-link,.hide-markdown .is-live-preview .cm-formatting.cm-formatting-strikethrough,.hide-markdown .is-live-preview .cm-formatting.cm-formatting-strong{display:none}.hide-markdown .is-live-preview .cm-formatting-quote{opacity:0}.hide-markdown .is-live-preview .cm-formatting-link,.hide-markdown .is-live-preview .cm-formatting:has(+.cm-header),.hide-markdown .is-live-preview .cm-hmd-internal-link.cm-link-has-alias,.hide-markdown .is-live-preview .cm-link-alias-pipe{display:none}.active-line-on .cm-line.cm-active,.active-line-on .markdown-source-view.mod-cm6.is-live-preview .HyperMD-quote.cm-active{background-color:var(--active-line-bg);box-shadow:-25vw 0 var(--active-line-bg),25vw 0 var(--active-line-bg)}body{--content-margin:auto;--content-margin-start:max( calc(50% - var(--line-width)/2), calc(50% - var(--max-width)/2) );--content-line-width:min(var(--line-width), var(--max-width))}.markdown-preview-view .markdown-preview-sizer.markdown-preview-sizer{max-width:100%;margin-inline:auto;width:100%}.markdown-source-view.mod-cm6.is-readable-line-width .cm-content,.markdown-source-view.mod-cm6.is-readable-line-width .cm-sizer{max-width:100%;width:100%}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div,.markdown-source-view.mod-cm6.is-readable-line-width .cm-sizer>.embedded-backlinks,.markdown-source-view.mod-cm6.is-readable-line-width .cm-sizer>.inline-title,.markdown-source-view.mod-cm6.is-readable-line-width .cm-sizer>.metadata-container{max-width:var(--max-width);width:var(--line-width);margin-inline:var(--content-margin)!important}.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>:not(div){max-width:var(--content-line-width);margin-inline-start:var(--content-margin-start)!important}.is-readable-line-width{--file-margins:1rem 0 0 0}.is-mobile .markdown-preview-view{--folding-offset:0}.minimal-line-nums .workspace-leaf-content[data-type=markdown]{--file-margins:var(--size-4-8) var(--size-4-8) var(--size-4-8) 48px}.minimal-line-nums .workspace-leaf-content[data-type=markdown].is-rtl{--file-margins:var(--size-4-8) 48px var(--size-4-8) var(--size-4-8)}.minimal-line-nums .workspace-leaf-content[data-type=markdown] .is-readable-line-width{--file-margins:1rem 0 0 var(--folding-offset)}.minimal-line-nums .workspace-leaf-content[data-type=markdown] .is-readable-line-width.is-rtl{--file-margins:1rem var(--folding-offset) 0 0}.minimal-line-nums .mod-left-split .markdown-preview-view,.minimal-line-nums .mod-left-split .markdown-source-view.mod-cm6 .cm-scroller,.minimal-line-nums .mod-right-split .markdown-preview-view,.minimal-line-nums .mod-right-split .markdown-source-view.mod-cm6 .cm-scroller{--file-margins:var(--size-4-5) var(--size-4-5) var(--size-4-5) 48px}.view-content .reader-mode-content.is-readable-line-width .markdown-preview-sizer{max-width:var(--max-width);width:var(--line-width)}.markdown-preview-view .inline-embed{--max-width:100%}body{--container-table-max-width:var(--max-width);--table-max-width:none;--table-width:auto;--table-margin:inherit;--table-wrapper-width:fit-content;--container-dataview-table-width:var(--line-width);--container-img-width:var(--line-width);--container-img-max-width:var(--max-width);--img-max-width:100%;--img-width:auto;--img-margin-start:var(--content-margin-start);--img-line-width:var(--content-line-width);--container-chart-width:var(--line-width);--container-chart-max-width:var(--max-width);--chart-max-width:none;--chart-width:auto;--container-map-width:var(--line-width);--container-map-max-width:var(--max-width);--map-max-width:none;--map-width:auto;--container-iframe-width:var(--line-width);--container-iframe-max-width:var(--max-width);--iframe-max-width:none;--iframe-width:auto}body .wide{--line-width:var(--line-width-wide);--container-table-width:var(--line-width-wide);--container-dataview-table-width:var(--line-width-wide);--container-img-width:var(--line-width-wide);--container-iframe-width:var(--line-width-wide);--container-map-width:var(--line-width-wide);--container-chart-width:var(--line-width-wide)}body .max{--line-width:var(--max-width);--container-table-width:var(--max-width);--container-dataview-table-width:var(--max-width);--container-img-width:var(--max-width);--container-iframe-width:var(--max-width);--container-map-width:var(--max-width);--container-chart-width:var(--max-width)}table.dataview{--table-min-width:min(var(--line-width),var(--max-width))}.cards table.dataview{--table-width:100%;--table-min-width:none}body{--table-drag-space:16px;--container-table-margin:calc(var(--content-margin-start) - var(--table-drag-space));--container-table-width:calc(var(--line-width) + var(--table-drag-space)*2);--table-drag-padding:var(--table-drag-space)}body:not(.table-100):not(.table-max):not(.table-wide) .markdown-preview-view{--container-table-margin:var(--content-margin-start)}.maximize-tables-auto{--container-table-max-width:100%;--container-table-width:100%;--container-dataview-table-width:100%;--container-table-margin:0;--table-drag-padding:var(--table-drag-space) 0;--table-max-width:100%;--table-margin:var(--content-margin-start) auto;--table-width:auto}.maximize-tables-auto .cards{--container-table-max-width:var(--max-width)}.maximize-tables-auto .cards .block-language-dataview{--table-margin:auto}.maximize-tables{--container-table-max-width:100%;--container-table-width:100%;--container-table-margin:0;--table-drag-padding:var(--table-drag-space) 0;--table-min-width:min(var(--line-width), var(--max-width));--table-max-width:100%;--table-margin:auto;--table-width:auto;--table-edge-cell-padding-first:8px;--table-edge-cell-padding-last:8px;--table-wrapper-width:auto}.table-100,.table-max,.table-wide{--table-max-width:100%;--table-width:100%}.table-wide{--container-table-width:var(--line-width-wide);--container-dataview-table-width:var(--line-width-wide);--container-table-margin:auto;--table-edge-cell-padding-first:0px}.table-max{--container-table-width:var(--max-width);--container-table-max-width:calc(var(--max-width) + var(--table-drag-space)*2);--container-dataview-table-width:var(--max-width);--container-table-margin:auto;--table-edge-cell-padding-first:0px;--table-margin:0}.table-100{--container-table-width:100%;--container-dataview-table-width:100%;--container-table-max-width:100%;--container-table-margin:auto;--table-edge-cell-padding-first:16px;--table-edge-cell-padding-last:16px;--table-margin:0;--table-drag-padding:var(--table-drag-space) 0}.table-100 .dataview.list-view-ul{max-width:var(--max-width);width:var(--line-width);margin-inline:auto}.img-100,.img-max,.img-wide{--img-max-width:100%;--img-width:100%}.img-wide{--container-img-width:var(--line-width-wide);--img-line-width:var(--line-width-wide);--img-margin-start:calc(50% - var(--line-width-wide)/2)}.img-max{--container-img-width:var(--max-width);--img-line-width:var(--max-width);--img-margin-start:calc(50% - var(--max-width)/2)}.img-100{--container-img-width:100%;--container-img-max-width:100%;--img-line-width:100%;--img-margin-start:0}.map-100,.map-max,.map-wide{--map-max-width:100%;--map-width:100%}.map-wide{--container-map-width:var(--line-width-wide)}.map-max{--container-map-width:var(--max-width)}.map-100{--container-map-width:100%;--container-map-max-width:100%}.chart-100,.chart-max,.chart-wide{--chart-max-width:100%;--chart-width:100%}.chart-wide{--container-chart-width:var(--line-width-wide)}.chart-max{--container-chart-width:var(--max-width)}.chart-100{--container-chart-width:100%;--container-chart-max-width:100%}.iframe-100,.iframe-max,.iframe-wide{--iframe-max-width:100%;--iframe-width:100%}.iframe-wide{--container-iframe-width:var(--line-width-wide)}.iframe-max{--container-iframe-width:var(--max-width)}.iframe-100{--container-iframe-width:100%;--container-iframe-max-width:100%}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer .cm-table-widget,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(>table),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content .cm-table-widget,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(>table){width:var(--container-table-width);max-width:var(--container-table-max-width);margin-inline:var(--container-table-margin)!important}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer .table-wrapper,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content .table-wrapper{width:var(--table-wrapper-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(>.block-language-dataview>table),.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(>.block-language-dataviewjs),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(>.block-language-dataview>table),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(>.block-language-dataviewjs){width:var(--container-dataview-table-width);max-width:var(--container-table-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer table,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content table{width:var(--table-width);max-width:var(--table-max-width);margin-inline:var(--table-margin);min-width:var(--table-min-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer .block-language-dataviewjs>:is(p,h1,h2,h3,h4,h5,h6),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content .block-language-dataviewjs>:is(p,h1,h2,h3,h4,h5,h6){width:var(--line-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer .block-language-dataviewjs>.dataview-error,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content .block-language-dataviewjs>.dataview-error{margin:0 auto;width:var(--content-line-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer .dataview.dataview-error-box,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content .dataview.dataview-error-box{margin-inline:var(--table-margin)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.image-embed,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>.image-embed{padding-top:.25rem;padding-bottom:.25rem}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.image-embed,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(.image-embed),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>.image-embed,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(.image-embed){width:var(--container-img-width);max-width:var(--container-img-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>.image-embed img,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(.image-embed) img,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>.image-embed img,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(.image-embed) img{max-width:var(--img-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>img,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>img{max-width:var(--img-line-width);margin-inline-start:var(--img-margin-start)!important}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-chart),.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-dataviewjs canvas),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-chart),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-dataviewjs canvas){width:var(--container-chart-width);max-width:var(--container-chart-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-chart) canvas,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-dataviewjs canvas) canvas,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-chart) canvas,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-dataviewjs canvas) canvas{max-width:var(--map-chart-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-leaflet),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-leaflet){width:var(--container-map-width);max-width:var(--container-map-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.block-language-leaflet) iframe,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.block-language-leaflet) iframe{max-width:var(--map-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.cm-html-embed),.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(>iframe),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.cm-html-embed),.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(>iframe){width:var(--container-iframe-width);max-width:var(--container-iframe-max-width)}.markdown-preview-view.is-readable-line-width .markdown-preview-sizer div:has(>.cm-html-embed) iframe,.markdown-preview-view.is-readable-line-width .markdown-preview-sizer>div:has(>iframe) iframe,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content div:has(>.cm-html-embed) iframe,.markdown-source-view.mod-cm6.is-readable-line-width .cm-contentContainer.cm-contentContainer>.cm-content>div:has(>iframe) iframe{max-width:var(--iframe-max-width)}.borders-none{--divider-width:0px;--tab-outline-width:0px}body{--cards-min-width:180px;--cards-max-width:1fr;--cards-mobile-width:120px;--cards-image-height:400px;--cards-padding:1.2em;--cards-image-fit:contain;--cards-background:transparent;--cards-border-width:1px;--cards-aspect-ratio:auto;--cards-columns:repeat(auto-fit, minmax(var(--cards-min-width), var(--cards-max-width)))}@media(max-width:400pt){body{--cards-min-width:var(--cards-mobile-width)}}.cards.table-100 table.dataview tbody,.table-100 .cards table.dataview tbody{padding:.25rem .75rem}.cards table.dataview{--table-width:100%;--table-edge-cell-padding-first:calc(var(--cards-padding)/2);--table-edge-cell-padding-last:calc(var(--cards-padding)/2);--table-cell-padding:calc(var(--cards-padding)/3) calc(var(--cards-padding)/2);line-height:1.3}.cards table.dataview tbody{clear:both;padding:.5rem 0;display:grid;grid-template-columns:var(--cards-columns);grid-column-gap:.75rem;grid-row-gap:.75rem}.cards table.dataview>tbody>tr{background-color:var(--cards-background);border:var(--cards-border-width) solid var(--background-modifier-border);display:flex;flex-direction:column;margin:0;padding:0 0 calc(var(--cards-padding)/3) 0;border-radius:6px;overflow:hidden;transition:box-shadow .15s linear;max-width:var(--cards-max-width);height:auto}.cards table.dataview>tbody>tr:hover{border:var(--cards-border-width) solid var(--background-modifier-border-hover);box-shadow:0 4px 6px 0 rgba(0,0,0,.05),0 1px 3px 1px rgba(0,0,0,.025);transition:box-shadow .15s linear}.cards table.dataview tbody>tr>td:first-child{font-weight:var(--bold-weight);border:none}.cards table.dataview tbody>tr>td:first-child a{display:block}.cards table.dataview tbody>tr>td:last-child{border:none}.cards table.dataview tbody>tr>td:not(:first-child){font-size:calc(var(--table-text-size)*.9);color:var(--text-muted)}.cards table.dataview tbody>tr>td>*{padding:calc(var(--cards-padding)/3) 0}.cards table.dataview tbody>tr>td:not(:last-child):not(:first-child){padding:4px 0;border-bottom:1px solid var(--background-modifier-border);width:calc(100% - var(--cards-padding));margin:0 calc(var(--cards-padding)/2)}.cards table.dataview tbody>tr>td a{text-decoration:none}.cards table.dataview tbody>tr>td>button{width:100%;margin:calc(var(--cards-padding)/2) 0}.cards table.dataview tbody>tr>td:last-child>button{margin-bottom:calc(var(--cards-padding)/6)}.cards table.dataview tbody>tr>td>ul{width:100%;padding:.25em 0!important;margin:0 auto!important}.cards table.dataview tbody>tr>td:has(img){padding:0!important;background-color:var(--background-secondary);display:block;margin:0;width:100%}.cards table.dataview tbody>tr>td img{aspect-ratio:var(--cards-aspect-ratio);width:100%;object-fit:var(--cards-image-fit);max-height:var(--cards-image-height);background-color:var(--background-secondary);vertical-align:bottom}.markdown-source-view.mod-cm6.cards .dataview.table-view-table>tbody>tr>td,.trim-cols .cards table.dataview tbody>tr>td{white-space:normal}.links-int-on .cards table{--link-decoration:none}.markdown-source-view.mod-cm6.cards .edit-block-button{top:-1px;right:28px;opacity:1}.cards.table-100 table.dataview thead>tr,.table-100 .cards table.dataview thead>tr{right:.75rem}.cards.table-100 table.dataview thead:before,.table-100 .cards table.dataview thead:before{margin-right:.75rem}.cards table.dataview thead{user-select:none;width:180px;display:block;float:right;position:relative;text-align:right;height:24px;padding-bottom:0}.cards table.dataview thead:hover:after{background-color:var(--background-modifier-hover)}.cards table.dataview thead:hover:before{background-color:var(--text-muted)}.cards table.dataview thead:after,.cards table.dataview thead:before{content:"";position:absolute;right:0;top:0;width:10px;height:16px;cursor:var(--cursor);text-align:right;padding:var(--size-4-1) var(--size-4-2);margin-bottom:2px;border-radius:var(--radius-s);font-weight:500;font-size:var(--font-adaptive-small)}.cards table.dataview thead:before{background-color:var(--text-faint);-webkit-mask-repeat:no-repeat;-webkit-mask-size:16px;-webkit-mask-position:center center;-webkit-mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 100 100"><path fill="currentColor" d="M49.792 33.125l-5.892 5.892L33.333 28.45V83.333H25V28.45L14.438 39.017L8.542 33.125L29.167 12.5l20.625 20.625zm41.667 33.75L70.833 87.5l-20.625 -20.625l5.892 -5.892l10.571 10.567L66.667 16.667h8.333v54.883l10.567 -10.567l5.892 5.892z"></path></svg>')}.cards table.dataview thead>tr{top:-1px;position:absolute;display:none;z-index:9;border:1px solid var(--background-modifier-border-hover);background-color:var(--background-secondary);box-shadow:var(--shadow-s);padding:6px;border-radius:var(--radius-m);flex-direction:column;margin:24px 0 0 0;width:100%}.cards table.dataview thead:hover>tr{display:flex;height:auto}.cards table.dataview thead>tr>th{display:block;padding:3px 30px 3px 6px!important;border-radius:var(--radius-s);width:100%;font-weight:400;color:var(--text-normal);cursor:var(--cursor);border:none;font-size:var(--font-ui-small)}.cards table.dataview thead>tr>th[sortable-style=sortable-asc],.cards table.dataview thead>tr>th[sortable-style=sortable-desc]{color:var(--text-normal)}.cards table.dataview thead>tr>th:hover{color:var(--text-normal);background-color:var(--background-modifier-hover)}.list-cards.markdown-preview-view .list-bullet,.list-cards.markdown-preview-view .list-collapse-indicator,.list-cards.markdown-preview-view.markdown-rendered.show-indentation-guide li>ul::before{display:none}.list-cards.markdown-preview-view div>ul{display:grid;gap:.75rem;grid-template-columns:var(--cards-columns);padding:0;line-height:var(--line-height-tight)}.list-cards.markdown-preview-view div>ul .contains-task-list{padding-inline-start:calc(var(--cards-padding)*1.5)}.list-cards.markdown-preview-view div>ul>li{background-color:var(--cards-background);padding:calc(var(--cards-padding)/2);border-radius:var(--radius-s);border:var(--cards-border-width) solid var(--background-modifier-border);overflow:hidden}.list-cards.markdown-preview-view div>ul .image-embed{padding:0;display:block;background-color:var(--background-secondary);border-radius:var(--image-radius)}.list-cards.markdown-preview-view div>ul .image-embed img{aspect-ratio:var(--cards-aspect-ratio);object-fit:var(--cards-image-fit);max-height:var(--cards-image-height);background-color:var(--background-secondary);vertical-align:bottom}.list-cards.markdown-preview-view div>ul>li>a{--link-decoration:none;--link-external-decoration:none;font-weight:var(--bold-weight)}.list-cards.markdown-preview-view div ul>li:hover{border-color:var(--background-modifier-border-hover)}.list-cards.markdown-preview-view div ul ul{display:block;width:100%;color:var(--text-muted);font-size:var(--font-smallest);margin:calc(var(--cards-padding)/-4) 0;padding:calc(var(--cards-padding)/2) 0}.list-cards.markdown-preview-view div ul ul ul{padding-bottom:calc(var(--cards-padding)/4)}.list-cards.markdown-preview-view div ul ul>li{display:block}.cards.cards-16-9,.list-cards.cards-16-9{--cards-aspect-ratio:16/9}.cards.cards-1-1,.list-cards.cards-1-1{--cards-aspect-ratio:1/1}.cards.cards-2-1,.list-cards.cards-2-1{--cards-aspect-ratio:2/1}.cards.cards-2-3,.list-cards.cards-2-3{--cards-aspect-ratio:2/3}.cards.cards-cols-1,.list-cards.cards-cols-1{--cards-columns:repeat(1, minmax(0, 1fr))}.cards.cards-cols-2,.list-cards.cards-cols-2{--cards-columns:repeat(2, minmax(0, 1fr))}.cards.cards-cover,.list-cards.cards-cover{--cards-image-fit:cover}.cards.cards-align-bottom table.dataview tbody>tr>td:last-child,.list-cards.cards-align-bottom table.dataview tbody>tr>td:last-child{margin-top:auto}@media(max-width:400pt){.cards table.dataview tbody>tr>td:not(:first-child){font-size:80%}}@media(min-width:400pt){.cards-cols-3{--cards-columns:repeat(3, minmax(0, 1fr))}.cards-cols-4{--cards-columns:repeat(4, minmax(0, 1fr))}.cards-cols-5{--cards-columns:repeat(5, minmax(0, 1fr))}.cards-cols-6{--cards-columns:repeat(6, minmax(0, 1fr))}.cards-cols-7{--cards-columns:repeat(7, minmax(0, 1fr))}.cards-cols-8{--cards-columns:repeat(8, minmax(0, 1fr))}}.cm-formatting.cm-formatting-task.cm-property{font-family:var(--font-monospace);font-size:90%}input[data-task="!"]:checked,input[data-task="*"]:checked,input[data-task="-"]:checked,input[data-task="<"]:checked,input[data-task=">"]:checked,input[data-task=I]:checked,input[data-task=b]:checked,input[data-task=c]:checked,input[data-task=d]:checked,input[data-task=f]:checked,input[data-task=k]:checked,input[data-task=l]:checked,input[data-task=p]:checked,input[data-task=u]:checked,input[data-task=w]:checked,li[data-task="!"]>input:checked,li[data-task="!"]>p>input:checked,li[data-task="*"]>input:checked,li[data-task="*"]>p>input:checked,li[data-task="-"]>input:checked,li[data-task="-"]>p>input:checked,li[data-task="<"]>input:checked,li[data-task="<"]>p>input:checked,li[data-task=">"]>input:checked,li[data-task=">"]>p>input:checked,li[data-task=I]>input:checked,li[data-task=I]>p>input:checked,li[data-task=b]>input:checked,li[data-task=b]>p>input:checked,li[data-task=c]>input:checked,li[data-task=c]>p>input:checked,li[data-task=d]>input:checked,li[data-task=d]>p>input:checked,li[data-task=f]>input:checked,li[data-task=f]>p>input:checked,li[data-task=k]>input:checked,li[data-task=k]>p>input:checked,li[data-task=l]>input:checked,li[data-task=l]>p>input:checked,li[data-task=p]>input:checked,li[data-task=p]>p>input:checked,li[data-task=u]>input:checked,li[data-task=u]>p>input:checked,li[data-task=w]>input:checked,li[data-task=w]>p>input:checked{--checkbox-marker-color:transparent;border:none;border-radius:0;background-image:none;background-color:currentColor;-webkit-mask-size:var(--checkbox-icon);-webkit-mask-position:50% 50%}input[data-task=">"]:checked,li[data-task=">"]>input:checked,li[data-task=">"]>p>input:checked{color:var(--text-faint);transform:rotate(90deg);-webkit-mask-position:50% 100%;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M10.894 2.553a1 1 0 00-1.788 0l-7 14a1 1 0 001.169 1.409l5-1.429A1 1 0 009 15.571V11a1 1 0 112 0v4.571a1 1 0 00.725.962l5 1.428a1 1 0 001.17-1.408l-7-14z' /%3E%3C/svg%3E")}input[data-task="<"]:checked,li[data-task="<"]>input:checked,li[data-task="<"]>p>input:checked{color:var(--text-faint);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z' clip-rule='evenodd' /%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M6 2a1 1 0 00-1 1v1H4a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2h-1V3a1 1 0 10-2 0v1H7V3a1 1 0 00-1-1zm0 5a1 1 0 000 2h8a1 1 0 100-2H6z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task="?"]:checked,li[data-task="?"]>input:checked,li[data-task="?"]>p>input:checked{--checkbox-marker-color:transparent;background-color:var(--color-yellow);border-color:var(--color-yellow);background-position:50% 50%;background-size:200% 90%;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 16 16"%3E%3Cpath fill="white" fill-rule="evenodd" d="M4.475 5.458c-.284 0-.514-.237-.47-.517C4.28 3.24 5.576 2 7.825 2c2.25 0 3.767 1.36 3.767 3.215c0 1.344-.665 2.288-1.79 2.973c-1.1.659-1.414 1.118-1.414 2.01v.03a.5.5 0 0 1-.5.5h-.77a.5.5 0 0 1-.5-.495l-.003-.2c-.043-1.221.477-2.001 1.645-2.712c1.03-.632 1.397-1.135 1.397-2.028c0-.979-.758-1.698-1.926-1.698c-1.009 0-1.71.529-1.938 1.402c-.066.254-.278.461-.54.461h-.777ZM7.496 14c.622 0 1.095-.474 1.095-1.09c0-.618-.473-1.092-1.095-1.092c-.606 0-1.087.474-1.087 1.091S6.89 14 7.496 14Z"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task="?"]:checked,.theme-dark li[data-task="?"]>input:checked,.theme-dark li[data-task="?"]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 16 16"%3E%3Cpath fill="black" fill-opacity="0.8" fill-rule="evenodd" d="M4.475 5.458c-.284 0-.514-.237-.47-.517C4.28 3.24 5.576 2 7.825 2c2.25 0 3.767 1.36 3.767 3.215c0 1.344-.665 2.288-1.79 2.973c-1.1.659-1.414 1.118-1.414 2.01v.03a.5.5 0 0 1-.5.5h-.77a.5.5 0 0 1-.5-.495l-.003-.2c-.043-1.221.477-2.001 1.645-2.712c1.03-.632 1.397-1.135 1.397-2.028c0-.979-.758-1.698-1.926-1.698c-1.009 0-1.71.529-1.938 1.402c-.066.254-.278.461-.54.461h-.777ZM7.496 14c.622 0 1.095-.474 1.095-1.09c0-.618-.473-1.092-1.095-1.092c-.606 0-1.087.474-1.087 1.091S6.89 14 7.496 14Z"%2F%3E%3C%2Fsvg%3E')}input[data-task="/"]:checked,li[data-task="/"]>input:checked,li[data-task="/"]>p>input:checked{background-image:none;background-color:rgba(0,0,0,0);position:relative;overflow:hidden}input[data-task="/"]:checked:after,li[data-task="/"]>input:checked:after,li[data-task="/"]>p>input:checked:after{top:0;left:0;content:" ";display:block;position:absolute;background-color:var(--background-modifier-accent);width:calc(50% - .5px);height:100%;-webkit-mask-image:none}input[data-task="!"]:checked,li[data-task="!"]>input:checked,li[data-task="!"]>p>input:checked{color:var(--color-orange);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task='"']:checked,input[data-task=“]:checked,li[data-task='"']>input:checked,li[data-task='"']>p>input:checked,li[data-task=“]>input:checked,li[data-task=“]>p>input:checked{--checkbox-marker-color:transparent;background-position:50% 50%;background-color:var(--color-cyan);border-color:var(--color-cyan);background-size:75%;background-repeat:no-repeat;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"%3E%3Cpath fill="white" d="M6.5 10c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.318.142-.686.238-1.028.466c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.945c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 6.5 10zm11 0c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.317.143-.686.238-1.028.467c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.944c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 17.5 10z"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task='"']:checked,.theme-dark input[data-task=“]:checked,.theme-dark li[data-task='"']>input:checked,.theme-dark li[data-task='"']>p>input:checked,.theme-dark li[data-task=“]>input:checked,.theme-dark li[data-task=“]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"%3E%3Cpath fill="black" fill-opacity="0.7" d="M6.5 10c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.318.142-.686.238-1.028.466c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.945c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 6.5 10zm11 0c-.223 0-.437.034-.65.065c.069-.232.14-.468.254-.68c.114-.308.292-.575.469-.844c.148-.291.409-.488.601-.737c.201-.242.475-.403.692-.604c.213-.21.492-.315.714-.463c.232-.133.434-.28.65-.35l.539-.222l.474-.197l-.485-1.938l-.597.144c-.191.048-.424.104-.689.171c-.271.05-.56.187-.882.312c-.317.143-.686.238-1.028.467c-.344.218-.741.4-1.091.692c-.339.301-.748.562-1.05.944c-.33.358-.656.734-.909 1.162c-.293.408-.492.856-.702 1.299c-.19.443-.343.896-.468 1.336c-.237.882-.343 1.72-.384 2.437c-.034.718-.014 1.315.028 1.747c.015.204.043.402.063.539l.025.168l.026-.006A4.5 4.5 0 1 0 17.5 10z"%2F%3E%3C%2Fsvg%3E')}input[data-task="-"]:checked,li[data-task="-"]>input:checked,li[data-task="-"]>p>input:checked{color:var(--text-faint);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z' clip-rule='evenodd' /%3E%3C/svg%3E")}body:not(.tasks) .markdown-preview-view ul li[data-task="-"].task-list-item.is-checked,body:not(.tasks) .markdown-source-view.mod-cm6 .HyperMD-task-line[data-task]:is([data-task="-"]),body:not(.tasks) li[data-task="-"].task-list-item.is-checked{color:var(--text-faint);text-decoration:line-through solid var(--text-faint) 1px}input[data-task="*"]:checked,li[data-task="*"]>input:checked,li[data-task="*"]>p>input:checked{color:var(--color-yellow);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z' /%3E%3C/svg%3E")}input[data-task=l]:checked,li[data-task=l]>input:checked,li[data-task=l]>p>input:checked{color:var(--color-red);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task=i]:checked,li[data-task=i]>input:checked,li[data-task=i]>p>input:checked{--checkbox-marker-color:transparent;background-color:var(--color-blue);border-color:var(--color-blue);background-position:50%;background-size:100%;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512"%3E%3Cpath fill="none" stroke="white" stroke-linecap="round" stroke-linejoin="round" stroke-width="40" d="M196 220h64v172"%2F%3E%3Cpath fill="none" stroke="white" stroke-linecap="round" stroke-miterlimit="10" stroke-width="40" d="M187 396h138"%2F%3E%3Cpath fill="white" d="M256 160a32 32 0 1 1 32-32a32 32 0 0 1-32 32Z"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task=i]:checked,.theme-dark li[data-task=i]>input:checked,.theme-dark li[data-task=i]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512"%3E%3Cpath fill="none" stroke="black" stroke-opacity="0.8" stroke-linecap="round" stroke-linejoin="round" stroke-width="40" d="M196 220h64v172"%2F%3E%3Cpath fill="none" stroke="black" stroke-opacity="0.8" stroke-linecap="round" stroke-miterlimit="10" stroke-width="40" d="M187 396h138"%2F%3E%3Cpath fill="black" fill-opacity="0.8" d="M256 160a32 32 0 1 1 32-32a32 32 0 0 1-32 32Z"%2F%3E%3C%2Fsvg%3E')}input[data-task=S]:checked,li[data-task=S]>input:checked,li[data-task=S]>p>input:checked{--checkbox-marker-color:transparent;border-color:var(--color-green);background-color:var(--color-green);background-size:100%;background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 48 48"%3E%3Cpath fill="white" fill-rule="evenodd" d="M26 8a2 2 0 1 0-4 0v2a8 8 0 1 0 0 16v8a4.002 4.002 0 0 1-3.773-2.666a2 2 0 0 0-3.771 1.332A8.003 8.003 0 0 0 22 38v2a2 2 0 1 0 4 0v-2a8 8 0 1 0 0-16v-8a4.002 4.002 0 0 1 3.773 2.666a2 2 0 0 0 3.771-1.332A8.003 8.003 0 0 0 26 10V8Zm-4 6a4 4 0 0 0 0 8v-8Zm4 12v8a4 4 0 0 0 0-8Z" clip-rule="evenodd"%2F%3E%3C%2Fsvg%3E')}.theme-dark input[data-task=S]:checked,.theme-dark li[data-task=S]>input:checked,.theme-dark li[data-task=S]>p>input:checked{background-image:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="20" height="20" preserveAspectRatio="xMidYMid meet" viewBox="0 0 48 48"%3E%3Cpath fill-opacity="0.8" fill="black" fill-rule="evenodd" d="M26 8a2 2 0 1 0-4 0v2a8 8 0 1 0 0 16v8a4.002 4.002 0 0 1-3.773-2.666a2 2 0 0 0-3.771 1.332A8.003 8.003 0 0 0 22 38v2a2 2 0 1 0 4 0v-2a8 8 0 1 0 0-16v-8a4.002 4.002 0 0 1 3.773 2.666a2 2 0 0 0 3.771-1.332A8.003 8.003 0 0 0 26 10V8Zm-4 6a4 4 0 0 0 0 8v-8Zm4 12v8a4 4 0 0 0 0-8Z" clip-rule="evenodd"%2F%3E%3C%2Fsvg%3E')}input[data-task=I]:checked,li[data-task=I]>input:checked,li[data-task=I]>p>input:checked{color:var(--color-yellow);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M11 3a1 1 0 10-2 0v1a1 1 0 102 0V3zM15.657 5.757a1 1 0 00-1.414-1.414l-.707.707a1 1 0 001.414 1.414l.707-.707zM18 10a1 1 0 01-1 1h-1a1 1 0 110-2h1a1 1 0 011 1zM5.05 6.464A1 1 0 106.464 5.05l-.707-.707a1 1 0 00-1.414 1.414l.707.707zM5 10a1 1 0 01-1 1H3a1 1 0 110-2h1a1 1 0 011 1zM8 16v-1h4v1a2 2 0 11-4 0zM12 14c.015-.34.208-.646.477-.859a4 4 0 10-4.954 0c.27.213.462.519.476.859h4.002z' /%3E%3C/svg%3E")}input[data-task=f]:checked,li[data-task=f]>input:checked,li[data-task=f]>p>input:checked{color:var(--color-red);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12.395 2.553a1 1 0 00-1.45-.385c-.345.23-.614.558-.822.88-.214.33-.403.713-.57 1.116-.334.804-.614 1.768-.84 2.734a31.365 31.365 0 00-.613 3.58 2.64 2.64 0 01-.945-1.067c-.328-.68-.398-1.534-.398-2.654A1 1 0 005.05 6.05 6.981 6.981 0 003 11a7 7 0 1011.95-4.95c-.592-.591-.98-.985-1.348-1.467-.363-.476-.724-1.063-1.207-2.03zM12.12 15.12A3 3 0 017 13s.879.5 2.5.5c0-1 .5-4 1.25-4.5.5 1 .786 1.293 1.371 1.879A2.99 2.99 0 0113 13a2.99 2.99 0 01-.879 2.121z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task=k]:checked,li[data-task=k]>input:checked,li[data-task=k]>p>input:checked{color:var(--color-yellow);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M18 8a6 6 0 01-7.743 5.743L10 14l-1 1-1 1H6v2H2v-4l4.257-4.257A6 6 0 1118 8zm-6-4a1 1 0 100 2 2 2 0 012 2 1 1 0 102 0 4 4 0 00-4-4z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task=u]:checked,li[data-task=u]>input:checked,li[data-task=u]>p>input:checked{color:var(--color-green);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12 7a1 1 0 110-2h5a1 1 0 011 1v5a1 1 0 11-2 0V8.414l-4.293 4.293a1 1 0 01-1.414 0L8 10.414l-4.293 4.293a1 1 0 01-1.414-1.414l5-5a1 1 0 011.414 0L11 10.586 14.586 7H12z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task=d]:checked,li[data-task=d]>input:checked,li[data-task=d]>p>input:checked{color:var(--color-red);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12 13a1 1 0 100 2h5a1 1 0 001-1V9a1 1 0 10-2 0v2.586l-4.293-4.293a1 1 0 00-1.414 0L8 9.586 3.707 5.293a1 1 0 00-1.414 1.414l5 5a1 1 0 001.414 0L11 9.414 14.586 13H12z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task=w]:checked,li[data-task=w]>input:checked,li[data-task=w]>p>input:checked{color:var(--color-purple);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M6 3a1 1 0 011-1h.01a1 1 0 010 2H7a1 1 0 01-1-1zm2 3a1 1 0 00-2 0v1a2 2 0 00-2 2v1a2 2 0 00-2 2v.683a3.7 3.7 0 011.055.485 1.704 1.704 0 001.89 0 3.704 3.704 0 014.11 0 1.704 1.704 0 001.89 0 3.704 3.704 0 014.11 0 1.704 1.704 0 001.89 0A3.7 3.7 0 0118 12.683V12a2 2 0 00-2-2V9a2 2 0 00-2-2V6a1 1 0 10-2 0v1h-1V6a1 1 0 10-2 0v1H8V6zm10 8.868a3.704 3.704 0 01-4.055-.036 1.704 1.704 0 00-1.89 0 3.704 3.704 0 01-4.11 0 1.704 1.704 0 00-1.89 0A3.704 3.704 0 012 14.868V17a1 1 0 001 1h14a1 1 0 001-1v-2.132zM9 3a1 1 0 011-1h.01a1 1 0 110 2H10a1 1 0 01-1-1zm3 0a1 1 0 011-1h.01a1 1 0 110 2H13a1 1 0 01-1-1z' clip-rule='evenodd' /%3E%3C/svg%3E")}input[data-task=p]:checked,li[data-task=p]>input:checked,li[data-task=p]>p>input:checked{color:var(--color-green);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M2 10.5a1.5 1.5 0 113 0v6a1.5 1.5 0 01-3 0v-6zM6 10.333v5.43a2 2 0 001.106 1.79l.05.025A4 4 0 008.943 18h5.416a2 2 0 001.962-1.608l1.2-6A2 2 0 0015.56 8H12V4a2 2 0 00-2-2 1 1 0 00-1 1v.667a4 4 0 01-.8 2.4L6.8 7.933a4 4 0 00-.8 2.4z' /%3E%3C/svg%3E")}input[data-task=c]:checked,li[data-task=c]>input:checked,li[data-task=c]>p>input:checked{color:var(--color-orange);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M18 9.5a1.5 1.5 0 11-3 0v-6a1.5 1.5 0 013 0v6zM14 9.667v-5.43a2 2 0 00-1.105-1.79l-.05-.025A4 4 0 0011.055 2H5.64a2 2 0 00-1.962 1.608l-1.2 6A2 2 0 004.44 12H8v4a2 2 0 002 2 1 1 0 001-1v-.667a4 4 0 01.8-2.4l1.4-1.866a4 4 0 00.8-2.4z' /%3E%3C/svg%3E")}input[data-task=b]:checked,li[data-task=b]>input:checked,li[data-task=b]>p>input:checked{color:var(--color-orange);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M5 4a2 2 0 012-2h6a2 2 0 012 2v14l-5-2.5L5 18V4z' /%3E%3C/svg%3E")}.colorful-active .nav-files-container{--nav-item-background-active:var(--interactive-accent);--nav-item-color-active:var(--text-on-accent)}.colorful-active #calendar-container .active,.colorful-active #calendar-container .active.today,.colorful-active #calendar-container .active:hover,.colorful-active #calendar-container .day:active{background-color:var(--interactive-accent);color:var(--text-on-accent)}.colorful-active #calendar-container .active .dot,.colorful-active #calendar-container .day:active .dot,.colorful-active #calendar-container .today.active .dot{fill:var(--text-on-accent)}body:not(.colorful-active) .horizontal-tab-nav-item.is-active,body:not(.colorful-active) .vertical-tab-nav-item.is-active{background-color:var(--background-modifier-hover);color:var(--text-normal)}body{--frame-background:hsl( var(--frame-background-h), var(--frame-background-s), var(--frame-background-l));--frame-icon-color:var(--frame-muted-color)}.theme-light{--frame-background-h:var(--accent-h);--frame-background-s:var(--accent-s);--frame-background-l:calc(var(--accent-l) + 30%);--frame-outline-color:hsla( var(--frame-background-h), var(--frame-background-s), calc(var(--frame-background-l) - 6.5%), 1 );--frame-muted-color:hsl( var(--frame-background-h), calc(var(--frame-background-s) - 10%), calc(var(--frame-background-l) - 35%))}.theme-dark{--frame-background-h:var(--accent-h);--frame-background-s:var(--accent-s);--frame-background-l:calc(var(--accent-l) - 25%);--frame-outline-color:hsla( var(--frame-background-h), calc(var(--frame-background-s) - 2%), calc(var(--frame-background-l) + 6.5%), 1 );--frame-muted-color:hsl( var(--frame-background-h), calc(var(--frame-background-s) - 10%), calc(var(--frame-background-l) + 25%))}.colorful-frame.theme-dark{--tab-outline-width:0px}.colorful-frame,.colorful-frame.is-focused{--frame-divider-color:var(--frame-outline-color);--titlebar-background:var(--frame-background);--titlebar-background-focused:var(--frame-background);--titlebar-text-color:var(--frame-muted-color);--minimal-tab-text-color:var(--frame-muted-color)}.colorful-frame .workspace-tabs:not(.mod-stacked),.colorful-frame.is-focused .workspace-tabs:not(.mod-stacked){--tab-text-color:var(--minimal-tab-text-color);--tab-text-color-focused:var(--minimal-tab-text-color)}.colorful-frame .mod-top .workspace-tab-header-container,.colorful-frame .titlebar,.colorful-frame .workspace-ribbon.mod-left:before,.colorful-frame.is-focused .mod-top .workspace-tab-header-container,.colorful-frame.is-focused .titlebar,.colorful-frame.is-focused .workspace-ribbon.mod-left:before{--tab-outline-color:var(--frame-outline-color);--tab-divider-color:var(--frame-outline-color)}.colorful-frame .mod-root .workspace-tab-header .workspace-tab-header-inner-icon,.colorful-frame.is-focused .mod-root .workspace-tab-header .workspace-tab-header-inner-icon{--icon-color:var(--minimal-tab-text-color-active);--icon-color-hover:var(--minimal-tab-text-color-active);--icon-color-active:var(--minimal-tab-text-color-active);--icon-color-focused:var(--minimal-tab-text-color-active)}.colorful-frame .mod-left-split .mod-top .workspace-tab-header,.colorful-frame .mod-right-split .mod-top .workspace-tab-header,.colorful-frame .sidebar-toggle-button,.colorful-frame .workspace-tab-header-new-tab,.colorful-frame .workspace-tab-header-tab-list,.colorful-frame .workspace-tab-header:not(.is-active),.colorful-frame.is-focused .mod-left-split .mod-top .workspace-tab-header,.colorful-frame.is-focused .mod-right-split .mod-top .workspace-tab-header,.colorful-frame.is-focused .sidebar-toggle-button,.colorful-frame.is-focused .workspace-tab-header-new-tab,.colorful-frame.is-focused .workspace-tab-header-tab-list,.colorful-frame.is-focused .workspace-tab-header:not(.is-active){--background-modifier-hover:var(--frame-outline-color);--icon-color:var(--frame-icon-color);--icon-color-hover:var(--frame-icon-color);--icon-color-active:var(--frame-icon-color);--icon-color-focused:var(--frame-icon-color);--icon-color-focus:var(--frame-icon-color)}.colorful-frame .mod-left-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.colorful-frame .mod-right-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.colorful-frame.is-focused .mod-left-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.colorful-frame.is-focused .mod-right-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon{color:var(--frame-icon-color)}.workspace-leaf-resize-handle{transition:none}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle{-webkit-app-region:no-drag;border:0;z-index:15}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle:after{content:"";height:100%;width:1px;background:linear-gradient(180deg,var(--frame-outline-color) var(--header-height),var(--divider-color) var(--header-height));top:0;position:absolute}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle:hover:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle:hover:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle:hover:after{background:var(--divider-color-hover)}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-right-split>.workspace-leaf-resize-handle:after{left:0}.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-left-split>.workspace-leaf-resize-handle:after,.colorful-frame.is-hidden-frameless:not(.minimal-focus-mode) .workspace-split.mod-vertical>*>.workspace-leaf-resize-handle:after{right:0}body.colorful-headings{--h1-color:var(--color-red);--h2-color:var(--color-orange);--h3-color:var(--color-yellow);--h4-color:var(--color-green);--h5-color:var(--color-blue);--h6-color:var(--color-purple)}body.colorful-headings .modal{--h1-color:var(--text-normal);--h2-color:var(--text-normal);--h3-color:var(--text-normal);--h4-color:var(--text-normal);--h5-color:var(--text-normal);--h6-color:var(--text-normal)}.is-mobile .tree-item-self .collapse-icon{width:20px}body:not(.minimal-icons-off) svg.calendar-day,body:not(.minimal-icons-off) svg.excalidraw-icon,body:not(.minimal-icons-off) svg.globe,body:not(.minimal-icons-off) svg.longform,body:not(.minimal-icons-off) svg.obsidian-leaflet-plugin-icon-map{background-color:currentColor}body:not(.minimal-icons-off) svg.excalidraw-icon path{display:none}body:not(.minimal-icons-off) svg.bar-graph{-webkit-mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="black" d="M20 7h-4V4c0-1.103-.897-2-2-2h-4c-1.103 0-2 .897-2 2v5H4c-1.103 0-2 .897-2 2v9a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V9c0-1.103-.897-2-2-2zM4 11h4v8H4v-8zm6-1V4h4v15h-4v-9zm10 9h-4V9h4v10z"></path></svg>')}body:not(.minimal-icons-off) svg.excalidraw-icon{-webkit-mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><g stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"%3E%3Cpath d="M12 19l7-7l3 3l-7 7l-3-3z"/%3E%3Cpath d="M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z"/%3E%3Cpath d="M2 2l7.586 7.586"/%3E%3Ccircle cx="11" cy="11" r="2"/%3E%3C/g%3E%3C/svg%3E%0A')}body:not(.minimal-icons-off) svg.globe{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-6 w-6' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M3.055 11H5a2 2 0 012 2v1a2 2 0 002 2 2 2 0 012 2v2.945M8 3.935V5.5A2.5 2.5 0 0010.5 8h.5a2 2 0 012 2 2 2 0 104 0 2 2 0 012-2h1.064M15 20.488V18a2 2 0 012-2h3.064M21 12a9 9 0 11-18 0 9 9 0 0118 0z' /%3E%3C/svg%3E")}body:not(.minimal-icons-off) svg.obsidian-leaflet-plugin-icon-map{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-6 w-6' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 20l-5.447-2.724A1 1 0 013 16.382V5.618a1 1 0 011.447-.894L9 7m0 13l6-3m-6 3V7m6 10l4.553 2.276A1 1 0 0021 18.382V7.618a1 1 0 00-.553-.894L15 4m0 13V4m0 0L9 7' /%3E%3C/svg%3E")}body:not(.minimal-icons-off) .workspace-tab-header[data-type=dictionary-view] svg.quote-glyph{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-6 w-6' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253' /%3E%3C/svg%3E")}body:not(.minimal-icons-off) svg.calendar-day{-webkit-mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 100 100"><path fill="black" d="M29.167 45.833H37.5V54.167H29.167zM29.167 62.5H37.5V70.833H29.167zM45.833 45.833H54.167V54.167H45.833zM45.833 62.5H54.167V70.833H45.833zM62.5 45.833H70.833V54.167H62.5zM62.5 62.5H70.833V70.833H62.5z M20.833 91.667h58.333c4.596 0 8.333 -3.738 8.333 -8.333V33.333V25c0 -4.596 -3.738 -8.333 -8.333 -8.333h-8.333V8.333h-8.333v8.333H37.5V8.333H29.167v8.333H20.833C16.238 16.667 12.5 20.404 12.5 25v8.333v50C12.5 87.929 16.238 91.667 20.833 91.667zM79.167 33.333l0.004 50H20.833V33.333H79.167z"></path></svg>')}body:not(.minimal-icons-off) svg.longform{-webkit-mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="black" d="M21 4H7a2 2 0 1 0 0 4h14v13a1 1 0 0 1-1 1H7a4 4 0 0 1-4-4V6a4 4 0 0 1 4-4h13a1 1 0 0 1 1 1v1zM5 18a2 2 0 0 0 2 2h12V10H7a3.982 3.982 0 0 1-2-.535V18zM20 7H7a1 1 0 1 1 0-2h13v2z"></path></svg>')}.workspace-ribbon.mod-left{border-left:0;transition:none}.minimal-focus-mode.is-translucent .workspace-ribbon.mod-left.is-collapsed,.minimal-focus-mode.is-translucent .workspace-ribbon.mod-left.is-collapsed:before{background-color:var(--background-primary)!important}.minimal-focus-mode .workspace-ribbon.mod-left{transition:background-color 0s linear 0s}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed{border-color:transparent;background-color:var(--background-primary)}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed:before{background-color:var(--background-primary);border-color:transparent}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed .side-dock-actions,.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed .side-dock-settings{opacity:0;transition:opacity .1s ease-in-out .1s}.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed:hover .side-dock-actions,.minimal-focus-mode .workspace-ribbon.mod-left.is-collapsed:hover .side-dock-settings{opacity:1;transition:opacity .1s ease-in-out .1s}.minimal-focus-mode.borders-title .workspace-ribbon.mod-left.is-collapsed{border-right:none}.minimal-focus-mode .mod-top-right-space .sidebar-toggle-button.mod-right{opacity:0}.minimal-focus-mode:not(.minimal-status-off) .status-bar{opacity:0;transition:opacity .2s ease-in-out}.minimal-focus-mode .status-bar:hover{opacity:1;transition:opacity .2s ease-in-out}.minimal-focus-mode .mod-root .workspace-tabs{position:relative}.minimal-focus-mode .mod-root .workspace-tabs:before:hover{background-color:#00f}.minimal-focus-mode .mod-root .workspace-tab-header-container{height:0;transition:all .1s linear .6s;--tab-outline-width:0px}.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-container-inner,.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-new-tab,.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-tab-list{opacity:0;transition:opacity .1s linear .6s}.minimal-focus-mode .mod-root .workspace-tab-header-container .workspace-tab-header-spacer:before{width:100%;content:" ";background-color:rgba(0,0,0,0);height:15px;position:absolute;z-index:100;top:0;left:0}.minimal-focus-mode .mod-root .workspace-tab-header-container:hover{height:var(--header-height);--tab-outline-width:1px;transition:all .1s linear .05s}.minimal-focus-mode .mod-root .workspace-tab-header-container:hover .workspace-tab-header-container-inner,.minimal-focus-mode .mod-root .workspace-tab-header-container:hover .workspace-tab-header-new-tab,.minimal-focus-mode .mod-root .workspace-tab-header-container:hover .workspace-tab-header-tab-list{opacity:1;transition:opacity .1s linear .05s}.minimal-focus-mode.mod-macos:not(.is-fullscreen) .workspace:not(.is-left-sidedock-open) .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header-inner{padding-top:30px}body.show-view-header .app-container .workspace-split.mod-root>.workspace-leaf .view-header{transition:height .1s linear .1s}body.minimal-focus-mode.show-view-header .mod-root .workspace-leaf .view-header{height:0;transition:all .1s linear .5s}body.minimal-focus-mode.show-view-header .view-header::after{width:100%;content:" ";background-color:rgba(0,0,0,0);height:40px;position:absolute;z-index:-9;top:0}body.minimal-focus-mode.show-view-header .view-actions,body.minimal-focus-mode.show-view-header .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .view-header-title-container{opacity:0;transition:all .1s linear .5s}body.minimal-focus-mode.show-view-header .mod-root .workspace-leaf .view-header:focus-within,body.minimal-focus-mode.show-view-header .mod-root .workspace-leaf .view-header:hover,body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header{height:calc(var(--header-height) + 2px);transition:all .1s linear .1s}body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header .view-actions,body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .mod-root .workspace-tab-header-container:hover~.workspace-tab-container .view-header .view-header-title-container,body.minimal-focus-mode.show-view-header .view-header:focus-within .view-actions,body.minimal-focus-mode.show-view-header .view-header:focus-within .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .view-header:focus-within .view-header-title-container,body.minimal-focus-mode.show-view-header .view-header:hover .view-actions,body.minimal-focus-mode.show-view-header .view-header:hover .view-header-nav-buttons,body.minimal-focus-mode.show-view-header .view-header:hover .view-header-title-container{opacity:1;transition:all .1s linear .1s}body.minimal-focus-mode.show-view-header .view-content{height:100%}.full-width-media{--iframe-width:100%}.full-width-media .markdown-preview-view .external-embed,.full-width-media .markdown-preview-view .image-embed img:not(.link-favicon):not(.emoji):not([width]),.full-width-media .markdown-preview-view audio,.full-width-media .markdown-preview-view img:not(.link-favicon):not(.emoji):not([width]),.full-width-media .markdown-preview-view p:has(.external-embed),.full-width-media .markdown-preview-view video,.full-width-media .markdown-source-view .external-embed,.full-width-media .markdown-source-view .image-embed img:not(.link-favicon):not(.emoji):not([width]),.full-width-media .markdown-source-view audio,.full-width-media .markdown-source-view img:not(.link-favicon):not(.emoji):not([width]),.full-width-media .markdown-source-view p:has(.external-embed),.full-width-media .markdown-source-view video{width:100%}.markdown-rendered img:not(.emoji),.markdown-rendered video,.markdown-source-view img:not(.emoji),.markdown-source-view video{border-radius:var(--image-radius)}.tabular{font-variant-numeric:tabular-nums}.table-small table:not(.calendar){--table-text-size:85%}.table-tiny table:not(.calendar){--table-text-size:75%}.row-hover{--table-edge-cell-padding-first:8px;--table-edge-cell-padding-last:8px}.row-alt{--table-row-alt-background:var(--background-table-rows);--table-edge-cell-padding-first:8px;--table-edge-cell-padding-last:8px}.col-alt .markdown-rendered:not(.cards){--table-column-alt-background:var(--background-table-rows)}.table-tabular table:not(.calendar){font-variant-numeric:tabular-nums}.table-lines{--table-border-width:var(--border-width);--table-header-border-width:var(--border-width);--table-column-first-border-width:var(--border-width);--table-column-last-border-width:var(--border-width);--table-row-last-border-width:var(--border-width);--table-edge-cell-padding:8px;--table-edge-cell-padding-first:8px;--table-edge-cell-padding-last:8px;--table-add-button-border-width:1px}.table-nowrap{--table-white-space:nowrap}.table-nowrap .table-wrap,.trim-cols{--table-white-space:normal}.table-numbers{--table-numbers-padding-right:0.5em}.table-numbers table:not(.calendar){counter-reset:section}.table-numbers table:not(.calendar)>thead>tr>th:first-child{white-space:nowrap}.table-numbers table:not(.calendar)>thead>tr>th:first-child::before{content:" ";padding-right:var(--table-numbers-padding-right);display:inline-block;min-width:2em}.table-numbers table:not(.calendar)>thead>tr>th:first-child .cm-s-obsidian,.table-numbers table:not(.calendar)>thead>tr>th:first-child .table-cell-wrapper{display:inline-block;min-width:10px}.table-numbers table:not(.calendar).table-editor>tbody>tr>td:first-child .table-cell-wrapper,.table-numbers table:not(.calendar):not(.table-editor)>tbody>tr>td:first-child{white-space:nowrap}.table-numbers table:not(.calendar).table-editor>tbody>tr>td:first-child .table-cell-wrapper::before,.table-numbers table:not(.calendar):not(.table-editor)>tbody>tr>td:first-child::before{counter-increment:section;content:counter(section) " ";text-align:center;padding-right:var(--table-numbers-padding-right);display:inline-block;min-width:2em;color:var(--text-faint);font-variant-numeric:tabular-nums}.table-numbers table:not(.calendar).table-editor>tbody>tr>td:first-child .table-cell-wrapper .cm-s-obsidian,.table-numbers table:not(.calendar):not(.table-editor)>tbody>tr>td:first-child .cm-s-obsidian{display:inline-block;min-width:10px}.table-numbers .table-editor{--table-numbers-padding-right:0}.row-lines-off{--table-row-last-border-width:0}.row-lines-off .table-view-table>tbody>tr>td,.row-lines-off table:not(.calendar) tbody>tr:last-child>td,.row-lines-off table:not(.calendar) tbody>tr>td{border-bottom:none}.row-lines:not(.table-lines) .markdown-preview-view:not(.cards),.row-lines:not(.table-lines) .markdown-source-view:not(.cards){--table-row-last-border-width:0px}.row-lines:not(.table-lines) .markdown-preview-view:not(.cards) .table-view-table>tbody>tr:not(:last-child)>td,.row-lines:not(.table-lines) .markdown-preview-view:not(.cards) table:not(.calendar) tbody>tr:not(:last-child)>td,.row-lines:not(.table-lines) .markdown-source-view:not(.cards) .table-view-table>tbody>tr:not(:last-child)>td,.row-lines:not(.table-lines) .markdown-source-view:not(.cards) table:not(.calendar) tbody>tr:not(:last-child)>td{border-bottom:var(--table-border-width) solid var(--table-border-color)}.col-lines .table-view-table thead>tr>th:not(:last-child),.col-lines .table-view-table>tbody>tr>td:not(:last-child),.col-lines table:not(.calendar) tbody>tr>td:not(:last-child){border-right:var(--table-border-width) solid var(--background-modifier-border)}.row-hover{--table-row-background-hover:hsla( var(--accent-h), 50%, 80%, 20% )}.theme-dark .row-hover,.theme-dark.row-hover{--table-row-background-hover:hsla( var(--accent-h), 30%, 40%, 20% )}:root{--image-mix:normal}.image-blend-light{--image-mix:multiply}.theme-dark .markdown-preview-view img,.theme-dark .markdown-source-view img{opacity:var(--image-muted);transition:opacity .25s linear}@media print{body{--image-muted:1}}.theme-dark .markdown-preview-view img:hover,.theme-dark .markdown-source-view img:hover,.theme-dark .print-preview img{opacity:1;transition:opacity .25s linear}.theme-light img{mix-blend-mode:var(--image-mix)}div[src$="#invert"],div[src$="#multiply"]{background-color:var(--background-primary)}.theme-dark div[src$="#invert"] img,.theme-dark img[src$="#invert"],.theme-dark span[src$="#invert"] img{filter:invert(1) hue-rotate(180deg);mix-blend-mode:screen}.theme-dark div[src$="#multiply"] img,.theme-dark img[src$="#multiply"],.theme-dark span[src$="#multiply"] img{mix-blend-mode:screen}.theme-light div[src$="#multiply"] img,.theme-light img[src$="#multiply"],.theme-light span[src$="#multiply"] img{mix-blend-mode:multiply}.theme-light div[src$="#invertW"] img,.theme-light img[src$="#invertW"],.theme-light span[src$=invertW] img{filter:invert(1) hue-rotate(180deg)}img[src$="#circle"],span[src$="#circle"] img,span[src$="#round"] img{border-radius:50%;aspect-ratio:1/1}img[src$="#outline"],span[src$="#outline"] img{border:1px solid var(--ui1)}img[src$="#interface"],span[src$="#interface"] img{border:1px solid var(--ui1);box-shadow:0 .5px .9px rgba(0,0,0,.021),0 1.3px 2.5px rgba(0,0,0,.03),0 3px 6px rgba(0,0,0,.039),0 10px 20px rgba(0,0,0,.06);margin-top:10px;margin-bottom:15px;border-radius:var(--radius-m)}body{--image-grid-fit:cover;--image-grid-background:transparent;--img-grid-gap:0.5rem}@media(max-width:400pt){body{--img-grid-gap:0.25rem}}.img-grid-ratio{--image-grid-fit:contain}.img-grid .image-embed.is-loaded{line-height:0}.img-grid .image-embed.is-loaded img{background-color:var(--image-grid-background)}.img-grid .image-embed.is-loaded img:active{background-color:rgba(0,0,0,0)}.img-grid .markdown-preview-section>div:has(.image-embed)>p{display:grid;margin-block-start:var(--img-grid-gap);margin-block-end:var(--img-grid-gap);grid-column-gap:var(--img-grid-gap);grid-row-gap:0;grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.img-grid .markdown-preview-section>div:has(.image-embed)>p>br{display:none}.img-grid .markdown-preview-section>div:has(.image-embed)>p>img{object-fit:var(--image-grid-fit);align-self:stretch}.img-grid .markdown-preview-section>div:has(.image-embed)>p>.internal-embed img{object-fit:var(--image-grid-fit);height:100%;align-self:center}body:not(.zoom-off) .workspace-leaf-content[data-type=markdown] .view-content div:not(.canvas-node-content) img{max-width:100%;cursor:zoom-in}body:not(.zoom-off) .workspace-leaf-content[data-type=markdown] .view-content img:active{cursor:zoom-out}body:not(.zoom-off) .workspace-leaf-content[data-type=markdown] .view-content .markdown-preview-view img[referrerpolicy=no-referrer]:active{background-color:var(--background-primary);padding:10px}body:not(.zoom-off) .workspace-leaf-content[data-type=markdown] .view-content .image-embed:not(.canvas-node-content):active,body:not(.zoom-off) .workspace-leaf-content[data-type=markdown] .view-content .markdown-preview-view img[referrerpolicy=no-referrer]:active{--container-img-width:100%;--container-img-max-width:100%;aspect-ratio:unset;cursor:zoom-out;display:block;z-index:200;position:fixed;max-height:calc(100% + 1px);max-width:100%;height:calc(100% + 1px);width:100%;object-fit:contain;margin:-.5px auto 0!important;text-align:center;padding:0;left:0;right:0;bottom:0}body:not(.zoom-off) .workspace-leaf-content[data-type=markdown] .view-content .image-embed:not(.canvas-node-content):active:after{background-color:var(--background-primary);opacity:.9;content:" ";height:calc(100% + 1px);width:100%;position:fixed;left:0;right:1px;z-index:0}body:not(.zoom-off) .workspace-leaf-content[data-type=markdown] .view-content .image-embed:not(.canvas-node-content):active img{aspect-ratio:unset;top:50%;z-index:99;transform:translateY(-50%);padding:0;margin:0 auto;width:calc(100% - 20px);max-height:95vh;object-fit:contain;left:0;right:0;bottom:0;position:absolute;opacity:1}body:not(.zoom-off) .workspace-leaf-content[data-type=markdown] .view-content .markdown-source-view.mod-cm6 .cm-content>[contenteditable=false]:has(.image-embed:not(.canvas-node-content):active){contain:unset!important}.labeled-nav.is-fullscreen:not(.colorful-frame),.labeled-nav.mod-windows{--labeled-nav-top-margin:0}.labeled-nav{--labeled-nav-top-margin:var(--header-height)}.labeled-nav.is-translucent .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-header-container-inner{background-color:rgba(0,0,0,0)}.labeled-nav.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .workspace-tabs.mod-top-left-space .workspace-tab-header-container{padding-left:0}.labeled-nav.mod-macos .mod-left-split .mod-top .workspace-tab-header-container:before,.labeled-nav.mod-macos.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .mod-top .workspace-tab-header-container:before{-webkit-app-region:drag;position:absolute;width:calc(100% - var(--divider-width));height:calc(var(--header-height) - var(--tab-outline-width));border-bottom:0 solid var(--tab-outline-color)}.labeled-nav.mod-macos.is-hidden-frameless:not(.is-fullscreen) .workspace-ribbon.mod-left:not(.is-collapsed){border:none;--tab-outline-width:0px}.labeled-nav.colorful-frame.is-hidden-frameless:not(.is-fullscreen) .mod-left-split .mod-top .workspace-tab-header-container:before,.labeled-nav.mod-macos:not(.hider-ribbon) .mod-left-split .mod-top .workspace-tab-header-container:before,.labeled-nav:not(.is-hidden-frameless) .mod-left-split .mod-top .workspace-tab-header-container:before{border-bottom:var(--tab-outline-width) solid var(--tab-outline-color)}.labeled-nav.colorful-frame.is-hidden-frameless:not(.is-fullscreen) .workspace-ribbon.mod-left:not(.is-collapsed),.labeled-nav.mod-macos:not(.hider-ribbon) .workspace-ribbon.mod-left:not(.is-collapsed),.labeled-nav:not(.is-hidden-frameless) .workspace-ribbon.mod-left:not(.is-collapsed){--tab-outline-width:1px}.labeled-nav:not(.is-hidden-frameless) .mod-left-split .mod-top .workspace-tab-header-container:before{position:absolute;top:0;content:" "}.labeled-nav.hider-ribbon.mod-macos.is-hidden-frameless:not(.is-fullscreen):not(.is-popout-window) .mod-left-split:not(.is-sidedock-collapsed) .workspace-tabs.mod-top-left-space .workspace-tab-header-container{padding-left:0}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-spacer{display:none}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-inner-title{display:inline-block;font-weight:500;font-size:var(--font-adaptive-smaller)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container{position:relative;flex-direction:column-reverse!important;height:auto;width:100%}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .sidebar-toggle-button.mod-left{position:absolute;justify-content:flex-end;padding-right:var(--size-4-2);top:0;right:0}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-header-container-inner{padding-top:var(--size-4-2);margin-top:var(--labeled-nav-top-margin);flex-direction:column!important;background-color:var(--background-secondary)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container .workspace-tab-container-inner{flex-grow:1;gap:0;padding:var(--size-4-2) var(--size-4-3)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header{--icon-color:var(--text-muted);--tab-text-color:var(--text-muted);--tab-text-color-focused:var(--text-muted);padding:0;margin-bottom:2px;border:none;height:auto}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:not(:hover){background-color:rgba(0,0,0,0)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active,.labeled-nav .mod-left-split .mod-top .workspace-tab-header:hover{opacity:1;--tab-text-color-active:var(--text-normal);--tab-text-color-focused:var(--text-normal);--tab-text-color-focused-active:var(--text-normal);--tab-text-color-focused-active-current:var(--text-normal);--icon-color:var(--text-normal)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header .workspace-tab-header-inner{gap:var(--size-2-3);padding:var(--size-4-1) var(--size-4-2);box-shadow:none;border:none}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.has-active-menu:hover,.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:hover{background-color:rgba(0,0,0,0)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active:hover .workspace-tab-header-inner,.labeled-nav .mod-left-split .mod-top .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner{background-color:var(--nav-item-background-hover)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon,.labeled-nav .mod-left-split .mod-top .workspace-tab-header:hover .workspace-tab-header-inner-icon{color:var(--icon-color-active)}.labeled-nav .mod-left-split .mod-top .workspace-tab-header-container{border:none;padding:0}body:not(.links-int-on){--link-decoration:none}body:not(.links-ext-on){--link-external-decoration:none}body:not(.sidebar-color) .mod-right-split{--background-secondary:var(--background-primary)}body:not(.sidebar-color) .mod-right-split :not(.mod-top) .workspace-tab-header-container{--tab-container-background:var(--background-primary)}body{--minimal-tab-text-color:var(--text-muted);--minimal-tab-text-color-active:var(--text-normal)}.workspace-tabs:not(.mod-stacked){--tab-text-color:var(--minimal-tab-text-color);--tab-text-color-focused:var(--minimal-tab-text-color);--tab-text-color-active:var(--minimal-tab-text-color-active);--tab-text-color-focused-active:var(--minimal-tab-text-color-active);--tab-text-color-focused-active-current:var(--minimal-tab-text-color-active)}.tabs-plain-square .mod-root{--tab-curve:0;--tab-radius:0;--tab-radius-active:0}.tabs-plain-square .mod-root .workspace-tab-header-container{padding-right:0}.tabs-plain-square .mod-root .workspace-tab-header-container-inner{margin-top:-1px;margin-left:-15px}.tabs-plain-square .mod-root .workspace-tab-header{padding:0}.tabs-plain-square .mod-root .workspace-tab-header-inner{padding:0 8px}.tabs-square .mod-root{--tab-curve:0;--tab-radius:0;--tab-radius-active:0}.tabs-underline .mod-root{--tab-curve:0;--tab-radius:0;--tab-radius-active:0;--tab-outline-width:0px;--tab-background-active:transparent}.tabs-underline .mod-root .workspace-tab-header-container{border-bottom:1px solid var(--divider-color)}.tabs-underline .mod-root .workspace-tab-header{border-bottom:2px solid transparent}.tabs-underline .mod-root .workspace-tab-header:hover{border-bottom:2px solid var(--ui2)}.tabs-underline .mod-root .workspace-tab-header:hover .workspace-tab-header-inner{background-color:rgba(0,0,0,0)}.tabs-underline .mod-root .workspace-tab-header.is-active{border-bottom:2px solid var(--ax3)}.tabs-underline .mod-root .workspace-tab-header-inner:hover{background-color:rgba(0,0,0,0)}body:not(.sidebar-tabs-underline):not(.sidebar-tabs-index):not(.sidebar-tabs-square) .workspace>.workspace-split:not(.mod-root) .workspace-tabs:not(.mod-top) .workspace-tab-header-container{--tab-outline-width:0}.tabs-modern.colorful-frame .mod-root .mod-top.workspace-tabs:not(.mod-stacked){--tab-background:var(--frame-outline-color);--tab-outline-width:1px}.tabs-modern.colorful-frame .mod-root .mod-top.workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active .workspace-tab-header-inner-close-button,.tabs-modern.colorful-frame .mod-root .mod-top.workspace-tabs:not(.mod-stacked) .workspace-tab-header:hover .workspace-tab-header-inner-close-button{color:var(--minimal-tab-text-color-active)}.tabs-modern.minimal-focus-mode .mod-root .workspace-tab-header-container:hover{--tab-outline-width:0px}.tabs-modern .mod-root{--tab-container-background:var(--background-primary)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked){--tab-background:var(--background-modifier-hover);--tab-height:calc(var(--header-height) - 14px);--tab-outline-width:0px}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner::after,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header::after,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header::before{display:none}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-container-inner{align-items:center;margin:0;padding:2px var(--size-4-2) 0 var(--size-4-1)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner-title{text-overflow:ellipsis;-webkit-mask-image:none}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header{background:rgba(0,0,0,0);border-radius:5px;border:none;box-shadow:none;height:var(--tab-height);margin-left:var(--size-4-1);padding:0}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active .workspace-tab-header-inner-title{color:var(--tab-text-color-active)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active.mod-active,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header:hover{opacity:1;background-color:var(--tab-background)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-new-tab{margin-right:0}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner{padding:0 var(--size-4-1) 0 var(--size-4-2);border:1px solid transparent}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner{background-color:rgba(0,0,0,0)}.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active:not(.mod-active) .workspace-tab-header-inner,.tabs-modern .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header:not(:hover):not(.mod-active) .workspace-tab-header-inner{border:1px solid var(--tab-outline-color)}.tab-names-on .workspace-split:not(.mod-root) .workspace-tab-header-container-inner{--sidebar-tab-text-display:static}.tab-names-on .workspace-split:not(.mod-root) .workspace-tab-header-container-inner .workspace-tab-header-inner-title{font-weight:500}.tab-names-on .workspace-split:not(.mod-root) .workspace-tab-header-container-inner .workspace-tab-header-inner{gap:var(--size-2-3)}.tab-names-single .workspace-split:not(.mod-root) .workspace-tab-header-container-inner .workspace-tab-header:only-child{--sidebar-tab-text-display:static;background-color:rgba(0,0,0,0)}.tab-names-single .workspace-split:not(.mod-root) .workspace-tab-header-container-inner .workspace-tab-header:only-child .workspace-tab-header-inner-title{font-weight:500}.tab-names-single .workspace-split:not(.mod-root) .workspace-tab-header-container-inner .workspace-tab-header:only-child .workspace-tab-header-inner{gap:var(--size-2-3)}.tabs-modern.sidebar-tabs-default .mod-right-split,.tabs-modern.sidebar-tabs-wide .mod-right-split{--tab-outline-width:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-spacer,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-spacer,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-spacer{display:none}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container{padding-right:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner{padding:0;margin:0;flex-grow:1;gap:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header{flex-grow:1;border-radius:0;max-width:100px}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header.is-active,.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header:hover,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header.is-active,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header:hover,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header.is-active,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header:hover{background-color:rgba(0,0,0,0)}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header:hover .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header:hover .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header:hover .workspace-tab-header-inner{background-color:rgba(0,0,0,0)}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner{border-bottom:2px solid transparent;border-radius:0}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner:hover,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner:hover,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header .workspace-tab-header-inner:hover{border-color:var(--ui2)}.sidebar-tabs-underline .mod-right-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner,.sidebar-tabs-underline:not(.labeled-nav) .mod-left-split .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner{border-color:var(--ax3);padding-top:1px}.sidebar-tabs-square .mod-left-split,.sidebar-tabs-square .mod-right-split{--tab-radius:0px}.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top),.sidebar-tabs-index:not(.labeled-nav) .mod-left-split,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top),.sidebar-tabs-square:not(.labeled-nav) .mod-left-split{--tab-background-active:var(--background-secondary)}.sidebar-tabs-index .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-index:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner,.sidebar-tabs-square .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-square:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner{padding:1px var(--size-4-2) 0;margin:6px 0 calc(var(--tab-outline-width)*-1);flex-grow:1}.sidebar-tabs-index .mod-right-split .workspace-tab-header,.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header,.sidebar-tabs-index:not(.labeled-nav) .mod-left-split .workspace-tab-header,.sidebar-tabs-square .mod-right-split .workspace-tab-header,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header,.sidebar-tabs-square:not(.labeled-nav) .mod-left-split .workspace-tab-header{flex-grow:1;max-width:100px;border-radius:var(--tab-radius) var(--tab-radius) 0 0}.sidebar-tabs-index .mod-right-split .workspace-tab-header.is-active,.sidebar-tabs-index.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header.is-active,.sidebar-tabs-index:not(.labeled-nav) .mod-left-split .workspace-tab-header.is-active,.sidebar-tabs-square .mod-right-split .workspace-tab-header.is-active,.sidebar-tabs-square.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header.is-active,.sidebar-tabs-square:not(.labeled-nav) .mod-left-split .workspace-tab-header.is-active{box-shadow:0 0 0 var(--tab-outline-width) var(--tab-outline-color);color:var(--tab-text-color-active);background-color:var(--tab-background-active)}.sidebar-tabs-wide .mod-right-split .workspace-tab-header-container-inner,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container-inner,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header-container-inner{flex-grow:1;border:1px solid var(--tab-outline-color);padding:3px;margin:6px 8px 6px;border-radius:4px}.sidebar-tabs-wide .mod-right-split .workspace-tab-header,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header{flex-grow:1}.sidebar-tabs-wide .mod-right-split .workspace-tab-header.is-active,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header.is-active,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header.is-active{border-color:transparent}.sidebar-tabs-wide .mod-right-split .workspace-tab-header-container,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header-container{padding-right:0}.sidebar-tabs-wide .mod-right-split .workspace-tab-header-spacer,.sidebar-tabs-wide.labeled-nav .mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-spacer,.sidebar-tabs-wide:not(.labeled-nav) .mod-left-split .workspace-tab-header-spacer{display:none}.full-file-names{--nav-item-white-space:normal}body:not(.full-file-names){--nav-item-white-space:nowrap}body:not(.full-file-names) .tree-item-self{white-space:nowrap}body:not(.full-file-names) .tree-item-inner{text-overflow:ellipsis;overflow:hidden}.theme-dark,.theme-light{--h1l:var(--ui1);--h2l:var(--ui1);--h3l:var(--ui1);--h4l:var(--ui1);--h5l:var(--ui1);--h6l:var(--ui1)}.h1-l .markdown-reading-view h1:not(.embedded-note-title),.h1-l .mod-cm6 .cm-editor .HyperMD-header-1{border-bottom:1px solid var(--h1l);padding-bottom:.4em;margin-block-end:.6em}.h2-l .markdown-reading-view h2,.h2-l .mod-cm6 .cm-editor .HyperMD-header-2{border-bottom:1px solid var(--h2l);padding-bottom:.4em;margin-block-end:.6em}.h3-l .markdown-reading-view h3,.h3-l .mod-cm6 .cm-editor .HyperMD-header-3{border-bottom:1px solid var(--h3l);padding-bottom:.4em;margin-block-end:.6em}.h4-l .markdown-reading-view h4,.h4-l .mod-cm6 .cm-editor .HyperMD-header-4{border-bottom:1px solid var(--h4l);padding-bottom:.4em;margin-block-end:.6em}.h5-l .markdown-reading-view h5,.h5-l .mod-cm6 .cm-editor .HyperMD-header-5{border-bottom:1px solid var(--h5l);padding-bottom:.4em;margin-block-end:.6em}.h6-l .markdown-reading-view h6,.h6-l .mod-cm6 .cm-editor .HyperMD-header-6{border-bottom:1px solid var(--h6l);padding-bottom:.4em;margin-block-end:.6em}.is-tablet .workspace-drawer{padding-top:0}.is-tablet .workspace-drawer:not(.is-pinned){margin:30px 16px 0;height:calc(100vh - 48px);border-radius:15px;border:none}.is-tablet .workspace-drawer-ribbon{background-color:var(--background-primary);border-right:1px solid var(--background-modifier-border)}.is-tablet .workspace-drawer-header,.is-tablet .workspace-drawer.is-pinned .workspace-drawer-header{padding-top:var(--size-4-4)}.is-mobile{--font-bold:600;--font-ui-medium:var(--font-adaptive-small);--background-modifier-form-field:var(--background-secondary);--background-modifier-form-field-highlighted:var(--background-secondary)}.is-mobile .markdown-source-view.mod-cm6 .cm-gutters{margin-left:0}.is-mobile .workspace-drawer.mod-left.is-pinned{max-width:var(--mobile-left-sidebar-width);min-width:150pt}.is-mobile .workspace-drawer.mod-right.is-pinned{max-width:var(--mobile-right-sidebar-width);min-width:150pt}.backlink-pane>.tree-item-self,.backlink-pane>.tree-item-self:hover,.outgoing-link-pane>.tree-item-self,.outgoing-link-pane>.tree-item-self:hover{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:var(--font-adaptive-smallest);font-weight:500}body{--canvas-dot-pattern:var(--background-modifier-border-hover)}.canvas-node-label{font-size:var(--font-adaptive-small)}.canvas-edges :not(.is-themed) path.canvas-display-path{stroke:var(--background-modifier-border-focus)}.canvas-edges :not(.is-themed) polyline.canvas-path-end{stroke:var(--background-modifier-border-focus);fill:var(--background-modifier-border-focus)}.canvas-node-container{border:1.5px solid var(--background-modifier-border-focus)}.node-insert-event.mod-inside-iframe{--max-width:100%;--folding-offset:0px}.node-insert-event.mod-inside-iframe .cm-editor .cm-content{padding-top:0}.is-mobile .nav-folder.mod-root>.nav-folder-title .nav-folder-title-content{display:none}body:not(.is-mobile) .nav-folder.mod-root>.nav-folder-title .nav-folder-title-content{font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:var(--font-adaptive-smallest)}.nav-buttons-container{justify-content:flex-start}.nav-file-tag{padding-top:.2em;background-color:rgba(0,0,0,0);color:var(--text-faint)}.nav-file .is-active .nav-file-tag,.nav-file:hover .nav-file-tag{color:var(--text-muted)}input.prompt-input,input.prompt-input:focus,input.prompt-input:focus-visible,input.prompt-input:hover{border-color:rgba(var(--mono-rgb-100),.05)}.is-mobile .mod-publish .modal-content{display:unset;padding:10px 10px 10px;margin-bottom:120px;overflow-x:hidden}.is-mobile .mod-publish .button-container,.is-mobile .modal.mod-publish .modal-button-container{padding:10px 15px 30px;margin-left:0;left:0}.is-mobile .modal.mod-publish .modal-title{padding:10px 20px;margin:0 -10px;border-bottom:1px solid var(--background-modifier-border)}.is-mobile .publish-site-settings-container{margin-right:0;padding:0}.is-mobile .modal.mod-publish .modal-content .publish-sections-container{margin-right:0;padding-right:0}@media(max-width:400pt){.is-mobile .publish-changes-info,.is-mobile .publish-section-header{flex-wrap:wrap;border:none}.is-mobile .publish-changes-info .publish-changes-add-linked-btn{flex-basis:100%;margin-top:10px}.is-mobile .publish-section-header-text{flex-basis:100%;margin-bottom:10px;margin-left:20px;margin-top:-8px}.is-mobile .publish-section{background:var(--background-secondary);border-radius:10px;padding:12px 12px 1px}.is-mobile .publish-changes-switch-site{flex-grow:0;margin-right:10px}}.release-notes-view .cm-scroller.is-readable-line-width{width:var(--line-width);max-width:var(--max-width);margin:0 auto}.search-results-info{border-bottom:none}.obsidian-banner.solid{border-bottom:var(--divider-width) solid var(--divider-color)}.contextual-typography .markdown-preview-view div.has-banner-icon.obsidian-banner-wrapper{overflow:visible}.theme-dark .markdown-preview-view img.emoji{opacity:1}body.theme-dark .button-default,body.theme-light .button-default{border:none;box-shadow:none;height:var(--input-height);background:var(--background-modifier-hover);color:var(--text-normal);font-size:revert;font-weight:500;transform:none;transition:all .1s linear;padding:0 20px}body.theme-dark .button-default:hover,body.theme-light .button-default:hover{border:none;background:var(--background-modifier-border-hover);box-shadow:none;transform:none;transition:all .1s linear}body.theme-dark .button-default:active,body.theme-dark .button-default:focus,body.theme-light .button-default:active,body.theme-light .button-default:focus{box-shadow:none}body .button-default.blue{background-color:var(--color-blue)!important}.button-default.red{background-color:var(--color-red)!important}.button-default.green{background-color:var(--color-green)!important}.button-default.yellow{background-color:var(--color-yellow)!important}.button-default.purple{background-color:var(--color-purple)!important}.workspace-leaf-content[data-type=calendar] .view-content{padding:5px 0 0 0}.mod-root #calendar-container{width:var(--line-width);max-width:var(--max-width);margin:0 auto;padding:0}body{--calendar-dot-active:var(--text-faint);--calendar-dot-today:var(--text-accent)}#calendar-container{padding:0 var(--size-4-4) var(--size-4-1);--color-background-day-empty:var(--background-secondary-alt);--color-background-day-active:var(--background-modifier-hover);--color-background-day-hover:var(--background-modifier-hover);--color-dot:var(--text-faint);--calendar-text-active:inherit;--color-text-title:var(--text-normal);--color-text-heading:var(--text-muted);--color-text-day:var(--text-normal);--color-text-today:var(--text-normal);--color-arrow:var(--text-faint);--color-background-day-empty:transparent}#calendar-container .table{border-collapse:separate;table-layout:fixed}#calendar-container h2{font-weight:400;font-size:var(--h2)}#calendar-container .arrow{cursor:var(--cursor);width:22px;border-radius:4px;padding:3px 7px}#calendar-container .arrow svg{width:12px;height:12px;color:var(--text-faint);opacity:.7}#calendar-container .arrow:hover{fill:var(--text-muted);color:var(--text-muted);background-color:var(--background-modifier-hover)}#calendar-container .arrow:hover svg{color:var(--text-muted);opacity:1}#calendar-container tr th{padding:2px 0 4px;font-weight:500;letter-spacing:.1em;font-size:var(--font-adaptive-smallest)}#calendar-container tr th:first-child{padding-left:0!important}#calendar-container tr td{padding:2px 0 0 0;border-radius:var(--radius-m);cursor:var(--cursor);border:1px solid transparent;transition:none}#calendar-container tr td:first-child{padding-left:0!important}#calendar-container .nav{padding:0;margin:var(--size-4-2) var(--size-4-1)}#calendar-container .dot{margin:0}#calendar-container .month,#calendar-container .title,#calendar-container .year{font-size:calc(var(--font-adaptive-small) + 2px);font-weight:400;color:var(--text-normal)}#calendar-container .today,#calendar-container .today.active{color:var(--text-accent);font-weight:600}#calendar-container .today .dot,#calendar-container .today.active .dot{fill:var(--calendar-dot-today)}#calendar-container .active .task{stroke:var(--text-faint)}#calendar-container .active{color:var(--text-normal)}#calendar-container .reset-button{text-transform:none;letter-spacing:0;font-size:var(--font-adaptive-smaller);font-weight:500;color:var(--text-muted);border-radius:4px;margin:0;padding:2px 8px}#calendar-container .reset-button:hover{color:var(--text-normal);background-color:var(--background-modifier-hover)}#calendar-container .day,#calendar-container .reset-button,#calendar-container .week-num{cursor:var(--cursor)}#calendar-container .day.adjacent-month{color:var(--text-faint);opacity:1}#calendar-container .day{padding:2px 4px 4px}#calendar-container .day,#calendar-container .week-num{font-size:calc(var(--font-adaptive-smaller) + 5%)}#calendar-container .active,#calendar-container .active.today,#calendar-container .day:hover,#calendar-container .week-num:hover{background-color:var(--color-background-day-active);color:var(--calendar-text-active)}#calendar-container .active .dot{fill:var(--calendar-dot-active)}#calendar-container .active .task{stroke:var(--text-faint)}.block-language-chart canvas,.block-language-dataviewjs canvas{margin:1em 0}.theme-dark,.theme-light{--chart-color-1:var(--color-blue);--chart-color-2:var(--color-red);--chart-color-3:var(--color-yellow);--chart-color-4:var(--color-green);--chart-color-5:var(--color-orange);--chart-color-6:var(--color-purple);--chart-color-7:var(--color-cyan);--chart-color-8:var(--color-pink)}.checklist-plugin-main .group .classic,.checklist-plugin-main .group .compact,.checklist-plugin-main .group .page,.checklist-plugin-main .group svg{cursor:var(--cursor)}.workspace .view-content .checklist-plugin-main{padding:10px 10px 15px 15px;--todoList-togglePadding--compact:2px;--todoList-listItemMargin--compact:2px}.checklist-plugin-main .title{font-weight:400;color:var(--text-muted);font-size:var(--font-adaptive-small)}.checklist-plugin-main .group svg{fill:var(--text-faint)}.checklist-plugin-main .group svg:hover{fill:var(--text-normal)}.checklist-plugin-main .group .title:hover{color:var(--text-normal)}.checklist-plugin-main .group:not(:last-child){border-bottom:1px solid var(--background-modifier-border)}.checklist-plugin-main .group{padding:0 0 2px 0}.checklist-plugin-main .group .classic:last-child,.checklist-plugin-main .group .compact:last-child{margin-bottom:10px}.checklist-plugin-main .group .classic,.checklist-plugin-main .group .compact{font-size:var(--font-adaptive-small)}.checklist-plugin-main .group .classic,.checklist-plugin-main .group .compact{background:rgba(0,0,0,0);border-radius:0;margin:1px auto;padding:0}.checklist-plugin-main .group .classic .content{padding:0}.checklist-plugin-main .group .classic:hover,.checklist-plugin-main .group .compact:hover{background:rgba(0,0,0,0)}.markdown-preview-view.checklist-plugin-main ul>li:not(.task-list-item)::before{display:none}.checklist-plugin-main .group .compact>.toggle .checked{background:var(--text-accent);top:-1px;left:-1px;height:18px;width:18px}.checklist-plugin-main .compact .toggle:hover{opacity:1!important}.checklist-plugin-main .group .count{font-size:var(--font-adaptive-smaller);padding:0;background:rgba(0,0,0,0);font-weight:400;color:var(--text-faint)}.checklist-plugin-main .group .group-header:hover .count{color:var(--text-muted)}.checklist-plugin-main .group .checkbox{border:1px solid var(--background-modifier-border-hover);min-height:18px;min-width:18px;height:18px;width:18px}.checklist-plugin-main .group .checkbox:hover{border:1px solid var(--background-modifier-border-focus)}.checklist-plugin-main button:active,.checklist-plugin-main button:focus,.checklist-plugin-main button:hover{box-shadow:none!important}.checklist-plugin-main button.collapse{padding:0}body:not(.is-mobile) .checklist-plugin-main button.collapse svg{width:18px;height:18px}.is-mobile .checklist-plugin-main .group-header .title{flex-grow:1;flex-shrink:0}.is-mobile .checklist-plugin-main button{width:auto}.is-mobile .checklist-plugin-main.markdown-preview-view ul{padding-inline-start:0}.is-mobile .workspace .view-content .checklist-plugin-main{padding-bottom:50px}body #cMenuModalBar{box-shadow:0 2px 20px var(--shadow-color)}body #cMenuModalBar .cMenuCommandItem{cursor:var(--cursor)}body #cMenuModalBar button.cMenuCommandItem:hover{background-color:var(--background-modifier-hover)}.MiniSettings-statusbar-button{padding-top:0;padding-bottom:0}.dataview-inline-lists .markdown-preview-view .dataview-ul,.dataview-inline-lists .markdown-source-view .dataview-ul{--list-spacing:0}.dataview-inline-lists .markdown-preview-view .dataview-ul li:not(:last-child):after,.dataview-inline-lists .markdown-source-view .dataview-ul li:not(:last-child):after{content:", "}.dataview-inline-lists .markdown-preview-view ul.dataview-ul>li::before,.dataview-inline-lists .markdown-source-view ul.dataview-ul>li::before{display:none}.dataview-inline-lists .markdown-preview-view .dataview-ul li,.dataview-inline-lists .markdown-source-view .dataview-ul li{display:inline-block;padding-right:.25em}.markdown-rendered table.dataview{margin-block-start:0;margin-block-end:0}.markdown-preview-view .table-view-table>thead>tr>th,body .table-view-table>thead>tr>th{font-weight:400;font-size:var(--table-text-size);color:var(--text-muted);border-bottom:var(--table-border-width) solid var(--table-border-color);cursor:var(--cursor)}table.dataview ul.dataview-ul{list-style:none;padding-inline-start:0;margin-block-start:0em!important;margin-block-end:0em!important}.markdown-preview-view:not(.cards) .table-view-table>tbody>tr>td,.markdown-source-view.mod-cm6:not(.cards) .table-view-table>tbody>tr>td{max-width:var(--max-col-width)}body .dataview.small-text{color:var(--text-faint)}body:not(.row-hover) .dataview.task-list-basic-item:hover,body:not(.row-hover) .dataview.task-list-item:hover,body:not(.row-hover) .table-view-table>tbody>tr:hover{background-color:rgba(0,0,0,0)!important;box-shadow:none}body.row-hover .dataview.task-list-basic-item:hover,body.row-hover .dataview.task-list-item:hover,body.row-hover .table-view-table>tbody>tr:hover{background-color:var(--table-row-background-hover)!important}body .dataview-error{background-color:rgba(0,0,0,0)}.dataview.dataview-error,.markdown-source-view.mod-cm6 .cm-content .dataview.dataview-error{color:var(--text-muted)}body div.dataview-error-box{min-height:0;border:none;background-color:rgba(0,0,0,0);font-size:var(--table-text-size);border-radius:var(--radius-m);padding:15px 0;justify-content:flex-start}body div.dataview-error-box p{margin-block-start:0;margin-block-end:0;color:var(--text-faint)}table.dataview:has(+.dataview-error-box){display:none}.trim-cols .markdown-preview-view .table-view-table>tbody>tr>td,.trim-cols .markdown-source-view.mod-cm6 .table-view-table>tbody>tr>td,.trim-cols .markdown-source-view.mod-cm6 .table-view-table>thead>tr>th{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}ul .dataview .task-list-basic-item:hover,ul .dataview .task-list-item:hover{background-color:rgba(0,0,0,0);box-shadow:none}body .dataview.result-group{padding-left:0}body .dataview .inline-field-standalone-value,body .dataview.inline-field-key,body .dataview.inline-field-value{font-family:var(--font-text);font-size:calc(var(--font-adaptive-normal) - 2px);background:rgba(0,0,0,0);color:var(--text-muted)}body .dataview.inline-field-key{padding:0}body .dataview .inline-field-standalone-value{padding:0}body .dataview.inline-field-key::after{margin-left:3px;content:"|";color:var(--background-modifier-border)}body .dataview.inline-field-value{padding:0 1px 0 3px}.markdown-preview-view .block-language-dataview table.calendar th{border:none;cursor:default;background-image:none}.markdown-preview-view .block-language-dataview table.calendar .day{font-size:var(--font-adaptive-small)}.database-plugin__navbar,.database-plugin__scroll-container,.database-plugin__table{width:100%}.dbfolder-table-container{--font-adaptive-normal:var(--table-text-size);--font-size-text:12px}.database-plugin__cell_size_wide .database-plugin__td{padding:.15rem}.database-plugin__table{border-spacing:0!important}.MuiAppBar-root{background-color:rgba(0,0,0,0)!important}.workspace-leaf-content .view-content.dictionary-view-content{padding:0}div[data-type=dictionary-view] .contents{padding-bottom:2rem}div[data-type=dictionary-view] .results>.container{background-color:rgba(0,0,0,0);margin-top:0;max-width:none;padding:0 10px}div[data-type=dictionary-view] .error,div[data-type=dictionary-view] .errorDescription{text-align:left;font-size:var(--font-adaptive-small);padding:10px 12px 0;margin:0}div[data-type=dictionary-view] .results>.container h3{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:var(--font-adaptive-smallest);font-weight:500;padding:5px 7px 0 2px;margin-bottom:6px}div[data-type=dictionary-view] .container .main{border-radius:0;background-color:rgba(0,0,0,0);font-size:var(--font-adaptive-smaller);line-height:1.3;color:var(--text-muted);padding:5px 0 0}div[data-type=dictionary-view] .main .definition{padding:10px;border:1px solid var(--background-modifier-border);border-radius:5px;margin:10px 0 5px;background-color:var(--background-primary)}div[data-type=dictionary-view] .main .definition:last-child{border:1px solid var(--background-modifier-border)}div[data-type=dictionary-view] .main .synonyms{padding:10px 0 0}div[data-type=dictionary-view] .main .synonyms p{margin:0}div[data-type=dictionary-view] .main .definition>blockquote{margin:0}div[data-type=dictionary-view] .main .label{color:var(--text-normal);margin-bottom:2px;font-size:var(--font-adaptive-smaller);font-weight:500}div[data-type=dictionary-view] .main .mark{color:var(--text-normal);background-color:var(--text-selection);box-shadow:none}div[data-type=dictionary-view] .main>.opener{font-size:var(--font-adaptive-small);color:var(--text-normal);padding-left:5px}body .excalidraw,body .excalidraw.theme--dark{--color-primary-light:var(--text-selection);--color-primary:var(--interactive-accent);--color-primary-darker:var(--interactive-accent-hover);--color-primary-darkest:var(--interactive-accent-hover);--ui-font:var(--font-interface);--island-bg-color:var(--background-secondary);--icon-fill-color:var(--text-normal);--button-hover:var(--background-modifier-hover);--button-gray-1:var(--background-modifier-hover);--button-gray-2:var(--background-modifier-hover);--focus-highlight-color:var(--background-modifier-border-focus);--default-bg-color:var(--background-primary);--default-border-color:var(--background-modifier-border);--input-border-color:var(--background-modifier-border);--link-color:var(--text-accent);--overlay-bg-color:rgba(255, 255, 255, 0.88);--text-primary-color:var(--text-normal)}.git-view-body .opener{text-transform:uppercase;letter-spacing:.05em;font-size:var(--font-adaptive-smallest);font-weight:500;padding:5px 7px 5px 10px;margin-bottom:6px}.git-view-body .file-view .opener{text-transform:none;letter-spacing:normal;font-size:var(--font-adaptive-smallest);font-weight:400;padding:initial;margin-bottom:0}.git-view-body .file-view .opener .collapse-icon{display:flex!important;margin-left:-7px}.git-view-body{margin-top:6px}.git-view-body .file-view{margin-left:4px}.git-view-body .file-view main:hover{color:var(--text-normal)}.git-view-body .file-view .tools .type{display:none!important}.git-view-body .file-view .tools{opacity:0;transition:opacity .1s}.git-view-body .file-view main:hover>.tools{opacity:1}.git-view-body .staged{margin-bottom:12px}.git-view-body .opener.open{color:var(--text-normal)}div[data-type=git-view] .search-input-container{margin-left:0;width:100%}.git-view-body .opener .collapse-icon{display:none!important}.git-view-body main{background-color:var(--background-primary)!important;width:initial!important}.git-view-body .file-view>main:not(.topLevel){margin-left:7px}div[data-type=git-view] .commit-msg{min-height:2.5em!important;height:2.5em!important;padding:6.5px 8px!important}div[data-type=git-view] .search-input-clear-button{bottom:5.5px}.mod-macos.hider-frameless .workspace-ribbon{border:none}.is-tablet.hider-ribbon{--ribbon-width:0px}.is-tablet.hider-ribbon .side-dock-ribbon{display:none}.hider-ribbon .workspace-ribbon{padding:0}:root{--hider-ribbon-display:none}.ribbon-bottom-left-hover:not(.is-mobile){--hider-ribbon-display:flex}.hider-vault .nav-folder.mod-root>.nav-folder-title{height:4px}.hider-ribbon .workspace-ribbon-collapse-btn{display:none}.hider-ribbon .workspace-ribbon.mod-right{pointer-events:none}.hider-ribbon .workspace-ribbon.mod-left{position:absolute;border-right:0px;margin:0;height:var(--header-height);overflow:visible;flex-basis:0;bottom:0;top:auto;display:var(--hider-ribbon-display)!important;flex-direction:row;z-index:17;opacity:0;transition:opacity .25s ease-in-out;filter:drop-shadow(2px 10px 30px rgba(0, 0, 0, .2));gap:0}.hider-ribbon .side-dock-actions,.hider-ribbon .side-dock-settings{flex-direction:row;display:var(--hider-ribbon-display);border-top:var(--border-width) solid var(--background-modifier-border);background:var(--background-secondary);margin:0;position:relative;gap:var(--size-2-2)}.hider-ribbon .side-dock-actions{padding-left:8px}.hider-ribbon .side-dock-settings{border-right:var(--border-width) solid var(--background-modifier-border);border-top-right-radius:var(--radius-m);padding:0 var(--size-2-2)}.hider-ribbon .workspace-ribbon.mod-left .side-dock-ribbon-action{display:var(--hider-ribbon-display);margin:7px 0 8px}.hider-ribbon .workspace-ribbon.mod-left:hover{opacity:1;transition:opacity .25s ease-in-out}.hider-ribbon .workspace-ribbon.mod-left .workspace-ribbon-collapse-btn{opacity:0}.hider-ribbon .workspace-split.mod-left-split{margin:0}.hider-ribbon .workspace-leaf-content .item-list{padding-bottom:40px}.popover.hover-editor{--folding-offset:10px}.theme-dark,.theme-light{--he-title-bar-inactive-bg:var(--background-secondary);--he-title-bar-inactive-pinned-bg:var(--background-secondary);--he-title-bar-active-pinned-bg:var(--background-secondary);--he-title-bar-active-bg:var(--background-secondary);--he-title-bar-inactive-fg:var(--text-muted);--he-title-bar-active-fg:var(--text-normal);--he-title-bar-font-size:14px}.theme-light{--popover-shadow:0px 2.7px 3.1px rgba(0, 0, 0, 0.032),0px 5.9px 8.7px rgba(0, 0, 0, 0.052),0px 10.4px 18.1px rgba(0, 0, 0, 0.071),0px 20px 40px rgba(0, 0, 0, 0.11)}.theme-dark{--popover-shadow:0px 2.7px 3.1px rgba(0, 0, 0, 0.081),0px 5.9px 8.7px rgba(0, 0, 0, 0.131),0px 10.4px 18.1px rgba(0, 0, 0, 0.18),0px 20px 40px rgba(0, 0, 0, 0.28)}.popover.hover-editor:not(.snap-to-viewport){--max-width:92%}.popover.hover-editor:not(.snap-to-viewport) .markdown-preview-view,.popover.hover-editor:not(.snap-to-viewport) .markdown-source-view .cm-content{font-size:90%}body .popover.hover-editor:not(.is-loaded){box-shadow:var(--popover-shadow)}body .popover.hover-editor:not(.is-loaded) .markdown-preview-view{padding:15px 0 0 0}body .popover.hover-editor:not(.is-loaded) .view-content{height:100%;background-color:var(--background-primary)}body .popover.hover-editor:not(.is-loaded) .view-actions{height:auto}body .popover.hover-editor:not(.is-loaded) .popover-content{border:1px solid var(--background-modifier-border-hover)}body .popover.hover-editor:not(.is-loaded) .popover-titlebar{padding:0 4px}body .popover.hover-editor:not(.is-loaded) .popover-titlebar .popover-title{padding-left:4px;letter-spacing:-.02em;font-weight:var(--title-weight)}body .popover.hover-editor:not(.is-loaded) .markdown-embed{height:auto;font-size:unset;line-height:unset}body .popover.hover-editor:not(.is-loaded) .markdown-embed .markdown-preview-view{padding:0}body .popover.hover-editor:not(.is-loaded).show-navbar .popover-titlebar{border-bottom:var(--border-width) solid var(--background-modifier-border)}body .popover.hover-editor:not(.is-loaded) .popover-action,body .popover.hover-editor:not(.is-loaded) .popover-header-icon{cursor:var(--cursor);margin:4px 0;padding:4px 3px;border-radius:var(--radius-m);color:var(--icon-color)}body .popover.hover-editor:not(.is-loaded) .popover-action.mod-pin-popover,body .popover.hover-editor:not(.is-loaded) .popover-header-icon.mod-pin-popover{padding:4px 2px}body .popover.hover-editor:not(.is-loaded) .popover-action svg,body .popover.hover-editor:not(.is-loaded) .popover-header-icon svg{opacity:var(--icon-muted)}body .popover.hover-editor:not(.is-loaded) .popover-action:hover,body .popover.hover-editor:not(.is-loaded) .popover-header-icon:hover{background-color:var(--background-modifier-hover);color:var(--icon-color-hover)}body .popover.hover-editor:not(.is-loaded) .popover-action:hover svg,body .popover.hover-editor:not(.is-loaded) .popover-header-icon:hover svg{opacity:1;transition:opacity .1s ease-in-out}body .popover.hover-editor:not(.is-loaded) .popover-action.is-active,body .popover.hover-editor:not(.is-loaded) .popover-header-icon.is-active{color:var(--icon-color)}body.minimal-dark-black.theme-dark,body.minimal-dark-tonal.theme-dark,body.minimal-light-tonal.theme-light,body.minimal-light-white.theme-light,body.theme-dark{--kanban-border:0px}body:not(.is-mobile) .kanban-plugin__grow-wrap>textarea:focus{box-shadow:none}body:not(.minimal-icons-off) .kanban-plugin svg.cross{height:14px;width:14px}body .kanban-plugin__icon>svg,body .kanban-plugin__lane-settings-button svg{width:18px;height:18px}body .kanban-plugin{--kanban-border:var(--border-width);--interactive-accent:var(--text-selection);--interactive-accent-hover:var(--background-modifier-hover);--text-on-accent:var(--text-normal);background-color:var(--background-primary)}body .kanban-plugin__markdown-preview-view{font-family:var(--font-text)}body .kanban-plugin__board>div{margin:0 auto}body .kanban-plugin__checkbox-label{color:var(--text-muted)}body .kanban-plugin__item-markdown ul{margin:0}body .kanban-plugin__item-content-wrapper{box-shadow:none}body .kanban-plugin__grow-wrap::after,body .kanban-plugin__grow-wrap>textarea{padding:0;border:0;border-radius:0}body .kanban-plugin__grow-wrap::after,body .kanban-plugin__grow-wrap>textarea,body .kanban-plugin__item-title p,body .kanban-plugin__markdown-preview-view{font-size:var(--font-ui-medium);line-height:1.3}body .kanban-plugin__item{background-color:var(--background-primary)}body .kanban-plugin__item-title-wrapper{align-items:center}body .kanban-plugin__lane-form-wrapper{border:1px solid var(--background-modifier-border)}body .kanban-plugin__lane-header-wrapper{border-bottom:0}body .kanban-plugin__lane-header-wrapper .kanban-plugin__grow-wrap>textarea,body .kanban-plugin__lane-input-wrapper .kanban-plugin__grow-wrap>textarea,body .kanban-plugin__lane-title p{background:rgba(0,0,0,0);color:var(--text-normal);font-size:var(--font-ui-medium);font-weight:500}body .kanban-plugin__item-input-wrapper .kanban-plugin__grow-wrap>textarea{padding:0;border-radius:0;height:auto}body .kanban-plugin__item-form .kanban-plugin__grow-wrap{background-color:var(--background-primary)}body .kanban-plugin__item-input-wrapper .kanban-plugin__grow-wrap>textarea::placeholder{color:var(--text-faint)}body .kanban-plugin__item .kanban-plugin__item-edit-archive-button,body .kanban-plugin__item button.kanban-plugin__item-edit-button,body .kanban-plugin__item-settings-actions>button,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled,body .kanban-plugin__lane-action-wrapper>button{background:rgba(0,0,0,0);transition:color .1s ease-in-out}body .kanban-plugin__item .kanban-plugin__item-edit-archive-button:hover,body .kanban-plugin__item button.kanban-plugin__item-edit-button.is-enabled,body .kanban-plugin__item button.kanban-plugin__item-edit-button:hover,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button:hover{color:var(--text-normal);transition:color .1s ease-in-out;background:rgba(0,0,0,0)}body .kanban-plugin__new-lane-button-wrapper{position:fixed;bottom:30px}body .kanban-plugin__lane-items>.kanban-plugin__placeholder:only-child{border:1px dashed var(--background-modifier-border);height:2em}body .kanban-plugin__item-postfix-button-wrapper{align-self:flex-start}body .kanban-plugin__item button.kanban-plugin__item-postfix-button.is-enabled,body .kanban-plugin__item button.kanban-plugin__item-prefix-button.is-enabled,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled{color:var(--text-muted)}body .kanban-plugin button{box-shadow:none;cursor:var(--cursor);height:auto}body .kanban-plugin__item button.kanban-plugin__item-postfix-button:hover,body .kanban-plugin__item button.kanban-plugin__item-prefix-button:hover,body .kanban-plugin__lane button.kanban-plugin__lane-settings-button:hover{background-color:var(--background-modifier-hover)}body .kanban-plugin__item-button-wrapper>button{color:var(--text-muted);font-weight:400;background:rgba(0,0,0,0);min-height:calc(var(--input-height) + 8px)}body .kanban-plugin__item-button-wrapper>button:hover{color:var(--text-normal);background:var(--background-modifier-hover)}body .kanban-plugin__item-button-wrapper>button:focus{box-shadow:none}body .kanban-plugin__item-button-wrapper{padding:1px 6px 5px;border-top:none}body .kanban-plugin__lane-setting-wrapper>div:last-child{border:none;margin:0}body .kanban-plugin.something-is-dragging{cursor:grabbing;cursor:-webkit-grabbing}body .kanban-plugin__item.is-dragging{box-shadow:0 5px 30px rgba(0,0,0,.15),0 0 0 2px var(--text-selection)}body .kanban-plugin__lane-items{border:var(--kanban-border) solid var(--background-modifier-border);padding:0 4px;margin:0;background-color:var(--background-secondary)}body .kanban-plugin__lane{background:rgba(0,0,0,0);padding:0;border:var(--border-width) solid transparent}body .kanban-plugin__lane.is-dragging{box-shadow:0 5px 30px rgba(0,0,0,.15);border:1px solid var(--background-modifier-border)}body .kanban-plugin__lane .kanban-plugin__item-button-wrapper{border-top-left-radius:8px;border-top-right-radius:8px;border-top:1px solid var(--background-modifier-border);border-bottom-width:0;padding:4px 4px 0 4px}body .kanban-plugin__lane.will-prepend .kanban-plugin__lane-items{border-radius:8px}body .kanban-plugin__lane.will-prepend .kanban-plugin__item-form{border-top:1px solid var(--background-modifier-border);border-radius:8px 8px 0 0;padding:4px 4px 0;border-bottom-width:0}body .kanban-plugin__lane.will-prepend .kanban-plugin__item-form+.kanban-plugin__lane-items{border-top-width:0;border-radius:0 0 8px 8px}body .kanban-plugin__lane.will-prepend .kanban-plugin__item-button-wrapper+.kanban-plugin__lane-items{border-top-width:0;border-radius:0 0 8px 8px}body .kanban-plugin__lane:not(.will-prepend) .kanban-plugin__item-button-wrapper,body .kanban-plugin__lane:not(.will-prepend) .kanban-plugin__item-form{border-top:none;border-radius:0 0 8px 8px}body .kanban-plugin__lane:not(.will-prepend) .kanban-plugin__item-button-wrapper{padding:0 4px 4px 4px;border-bottom-width:1px}body .kanban-plugin__lane:not(.will-prepend) .kanban-plugin__lane-items{border-bottom:none;border-top-width:1px;border-radius:8px 8px 0 0}body .kanban-plugin__item-form .kanban-plugin__item-input-wrapper{min-height:calc(var(--input-height) + 8px);display:flex;justify-content:center}body .kanban-plugin__item-button-wrapper,body .kanban-plugin__item-form{background-color:var(--background-secondary);border:var(--kanban-border) solid var(--background-modifier-border)}body .kanban-plugin__item-form{padding:0 4px 5px}body .kanban-plugin__markdown-preview-view ol,body .kanban-plugin__markdown-preview-view ol.contains-task-list .contains-task-list,body .kanban-plugin__markdown-preview-view ul,body .kanban-plugin__markdown-preview-view ul.contains-task-list .contains-task-list{padding-inline-start:1.8em!important}@media(max-width:400pt){.kanban-plugin__board{flex-direction:column!important}.kanban-plugin__lane{width:100%!important;margin-bottom:1rem!important}}body .cm-heading-marker{cursor:var(--cursor);padding-left:10px}.theme-light{--leaflet-buttons:var(--bg1);--leaflet-borders:rgba(0,0,0,0.1)}.theme-dark{--leaflet-buttons:var(--bg2);--leaflet-borders:rgba(255,255,255,0.1)}.leaflet-top{transition:top .1s linear}body .leaflet-container{background-color:var(--background-secondary);font-family:var(--font-interface)}.leaflet-control-attribution{display:none}.leaflet-popup-content{margin:10px}.block-language-leaflet{border-radius:var(--radius-m);overflow:hidden;border:var(--border-width) solid var(--background-modifier-border)}.map-wide .block-language-leaflet{border-radius:var(--radius-l)}.map-max .block-language-leaflet{border-radius:var(--radius-xl)}.workspace-leaf-content[data-type=obsidian-leaflet-map-view] .block-language-leaflet{border-radius:0;border:none}.map-100 .block-language-leaflet{border-radius:0;border-left:none;border-right:none}.block-language-leaflet .leaflet-control-expandable-list .input-container .input-item>input{appearance:none}body .block-language-leaflet .leaflet-bar.disabled>a{background-color:rgba(0,0,0,0);opacity:.3}body .leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}body .leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px}body .leaflet-control-layers-toggle{border-radius:4px}body .block-language-leaflet .leaflet-control-expandable,body .block-language-leaflet .leaflet-control-has-actions .control-actions.expanded,body .block-language-leaflet .leaflet-distance-control,body .leaflet-bar,body .leaflet-bar a,body .leaflet-control-layers-expanded,body .leaflet-control-layers-toggle{background-color:var(--leaflet-buttons);color:var(--text-muted);border:none;user-select:none}body .leaflet-bar a.leaflet-disabled,body .leaflet-bar a.leaflet-disabled:hover{background-color:var(--leaflet-buttons);color:var(--text-faint);opacity:.6;cursor:not-allowed}body .leaflet-control a{cursor:var(--cursor);color:var(--text-normal)}body .leaflet-bar a:hover{background-color:var(--background-modifier-hover);color:var(--text-normal);border:none}body .leaflet-touch .leaflet-control-layers{background-color:var(--leaflet-buttons)}body .leaflet-touch .leaflet-bar,body .leaflet-touch .leaflet-control-layers{border-radius:5px;box-shadow:2px 0 8px 0 rgba(0,0,0,.1);border:1px solid var(--ui1)}body .block-language-leaflet .leaflet-control-has-actions .control-actions{box-shadow:0;border:1px solid var(--ui1)}body .leaflet-control-expandable-list .leaflet-bar{box-shadow:none;border-radius:0}body .block-language-leaflet .leaflet-distance-control{padding:4px 10px;height:auto;cursor:var(--cursor)!important}body .block-language-leaflet .leaflet-marker-link-popup>.leaflet-popup-content-wrapper>*{font-size:var(--font-adaptive-small);font-family:var(--font-interface)}body .block-language-leaflet .leaflet-marker-link-popup>.leaflet-popup-content-wrapper{padding:4px 10px!important}.leaflet-marker-icon svg path{stroke:var(--background-primary);stroke-width:18px}.map-view-marker-name{font-weight:400}.workspace-leaf-content[data-type=map] .graph-controls{background-color:var(--background-primary)}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-split.mod-root .workspace-leaf-content[data-type=map] .view-header{position:fixed;background:rgba(0,0,0,0)!important;width:100%;z-index:99}body:not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .view-header-title{display:none}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .view-actions{background:rgba(0,0,0,0)}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .view-content{height:100%}body:not(.is-mobile):not(.plugin-sliding-panes-rotate-header) .workspace-leaf-content[data-type=map] .leaflet-top.leaflet-right{top:var(--header-height)}.obsidian-metatable{--metatable-font-size:calc(var(--font-adaptive-normal) - 2px);--metatable-font-family:var(--font-interface);--metatable-background:transparent;--metatable-foreground:var(--text-faint);--metatable-key-background:transparent;--metatable-key-border-width:0;--metatable-key-border-color:transparent;--metatable-value-background:transparent;padding-bottom:.5rem}.obsidian-metatable::part(key),.obsidian-metatable::part(value){border-bottom:0 solid var(--background-modifier-border);padding:.1rem 0;text-overflow:ellipsis;overflow:hidden}.obsidian-metatable::part(key){font-weight:400;color:var(--tx3);font-size:calc(var(--font-adaptive-normal) - 2px)}.obsidian-metatable::part(value){font-size:calc(var(--font-adaptive-normal) - 2px);color:var(--tx1)}body .NLT__header-menu-header-container{font-size:85%}body .NLT__button{background:rgba(0,0,0,0);box-shadow:none;color:var(--text-muted)}body .NLT__button:active,body .NLT__button:focus,body .NLT__button:hover{background:rgba(0,0,0,0);color:var(--text-normal);box-shadow:none}.NLT__app .NLT__button{background:rgba(0,0,0,0);border:1px solid var(--background-modifier-border);box-shadow:0 .5px 1px 0 var(--btn-shadow-color);color:var(--text-muted);padding:2px 8px}.NLT__app .NLT__button:active,.NLT__app .NLT__button:focus,.NLT__app .NLT__button:hover{background:rgba(0,0,0,0);border-color:var(--background-modifier-border-hover);color:var(--text-normal);box-shadow:0 .5px 1px 0 var(--btn-shadow-color)}.NLT__td:nth-last-child(2),.NLT__th:nth-last-child(2){border-right:0}.NLT__app .NLT__td:last-child,.NLT__app .NLT__th:last-child{padding-right:0}.NLT__app .NLT__th{background-image:none!important}.NLT__app th.NLT__selectable:hover{background-color:rgba(0,0,0,0);cursor:var(--cursor)}.NLT__menu .NLT__menu-container{background-color:var(--background-secondary)}.NLT__menu .NLT__header-menu-item{font-size:var(--font-adaptive-small)}.NLT__menu .NLT__header-menu{padding:6px 4px}.NLT__menu .NLT__drag-menu{font-size:var(--font-adaptive-small);padding:6px 4px}.NLT__menu svg{color:var(--text-faint);margin-right:6px}.NLT__menu .NLT__selectable:hover,.NLT__menu .NLT__selected{background:rgba(0,0,0,0)}.NLT__menu .NLT__selected>.NLT__selectable{background-color:var(--background-modifier-hover)}.NLT__menu .NLT__selectable{cursor:var(--cursor)}.NLT__menu div.NLT__selectable{min-width:110px;border-radius:var(--radius-m);padding:3px 8px 3px 4px;margin:1px 2px 1px;cursor:var(--cursor);height:auto;line-height:20px}.NLT__menu div.NLT__selectable:hover{background-color:var(--background-modifier-hover)}.NLT__menu .NLT__textarea{font-size:var(--table-text-size)}.NLT__tfoot tr:hover td{background-color:rgba(0,0,0,0)}.modal .quickAddPrompt>h1,.modal .quickAddYesNoPrompt h1{margin-top:0;text-align:left!important;font-size:var(--h1);font-weight:600}.modal .quickAddYesNoPrompt p{text-align:left!important}.modal .quickAddYesNoPrompt button{font-size:var(--font-ui-small)}.modal .yesNoPromptButtonContainer{font-size:var(--font-ui-small);justify-content:flex-end}.quickAddModal .modal-content{padding:20px 2px 5px}div#quick-explorer{display:flex}div#quick-explorer span.explorable{align-items:center;color:var(--text-muted);display:flex;font-size:var(--font-adaptive-smaller);line-height:16px}div#quick-explorer span.explorable:last-of-type{font-size:var(--font-adaptive-smaller)}div#quick-explorer span.explorable.selected,div#quick-explorer span.explorable:hover{background-color:unset!important}div#quick-explorer span.explorable.selected .explorable-name,div#quick-explorer span.explorable:hover .explorable-name{color:var(--text-normal)}div#quick-explorer span.explorable.selected .explorable-separator,div#quick-explorer span.explorable:hover .explorable-separator{color:var(--text-normal)}div#quick-explorer .explorable-name{padding:0 4px;border-radius:4px}div#quick-explorer .explorable-separator::before{content:" ›"!important;font-size:1.3em;font-weight:400;margin:0}body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label).selected,body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label):hover{background-color:var(--background-modifier-hover);color:var(--text-normal)}body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label).selected .menu-item-icon,body:not(.colorful-active) .qe-popup-menu .menu-item:not(.is-disabled):not(.is-label):hover .menu-item-icon{color:var(--text-normal)}.workspace-leaf-content[data-type=recent-files] .view-content{padding-top:10px}.mod-root .workspace-leaf-content[data-type=reminder-list] main{max-width:var(--max-width);margin:0 auto;padding:0}.modal .reminder-actions .later-select{font-size:var(--font-settings-small);vertical-align:bottom;margin-left:3px}.modal .reminder-actions .icon{line-height:1}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main{margin:0 auto;padding:15px}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .group-name{font-weight:500;color:var(--text-muted);font-size:var(--font-adaptive-small);padding-bottom:.5em;border-bottom:1px solid var(--background-modifier-border)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .reminder-list-item{line-height:1.3;font-size:var(--font-adaptive-small)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .no-reminders{color:var(--text-faint)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .reminder-time{font-family:var(--font-text);font-size:var(--font-adaptive-small)}:not(.mod-root) .workspace-leaf-content[data-type=reminder-list] main .reminder-group .reminder-file{color:var(--text-faint)}body .modal .dtchooser{background-color:rgba(0,0,0,0)}body .modal .dtchooser .reminder-calendar .year-month{font-weight:400;font-size:var(--font-adaptive-normal);padding-bottom:10px}body .modal .dtchooser .reminder-calendar .year-month .month,body .modal .dtchooser .reminder-calendar .year-month .year{color:var(--text-normal)}body .modal .dtchooser .reminder-calendar .year-month .month-nav:first-child{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z' clip-rule='evenodd' /%3E%3C/svg%3E")}body .modal .dtchooser .reminder-calendar .year-month .month-nav:last-child{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-5 w-5' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z' clip-rule='evenodd' /%3E%3C/svg%3E")}body .modal .dtchooser .reminder-calendar .year-month .month-nav{-webkit-mask-size:20px 20px;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;color:var(--text-faint);cursor:var(--cursor);border-radius:var(--radius-m);padding:0;width:30px;display:inline-block}body .modal .dtchooser .reminder-calendar .year-month .month-nav:hover{color:var(--text-muted)}body .modal .dtchooser .reminder-calendar th{padding:.5em 0;font-size:var(--font-adaptive-smallest);font-weight:500;text-transform:uppercase;letter-spacing:.1em}body .modal .dtchooser .reminder-calendar .calendar-date{transition:background-color .1s ease-in;padding:.3em 0;border-radius:var(--radius-m)}body .modal .dtchooser .reminder-calendar .calendar-date.is-selected,body .modal .dtchooser .reminder-calendar .calendar-date:hover{transition:background-color .1s ease-in;background-color:var(--background-modifier-hover)!important}body .modal .dtchooser .reminder-calendar .calendar-date.is-selected{font-weight:var(--bold-weight);color:var(--text-accent)!important}body .markdown-preview-view th,body .markdown-source-view.mod-cm6 .dataview.table-view-table thead.table-view-thead tr th,body .table-view-table>thead>tr>th{cursor:var(--cursor);background-image:none}.markdown-source-view.mod-cm6 th{background-repeat:no-repeat;background-position:right}.style-settings-container[data-level="2"]{background:var(--background-secondary);border:1px solid var(--ui1);border-radius:5px;padding:10px 20px;margin:2px 0 2px -20px}.workspace-leaf-content[data-type=style-settings] div[data-id=instructions] .setting-item-name{display:none}.workspace-leaf-content[data-type=style-settings] div[data-id=instructions] .setting-item-description{color:var(--text-normal);font-size:var(--font-adaptive-smaller);padding-bottom:.5em}.workspace-leaf-content[data-type=style-settings] .view-content{padding:var(--size-4-4) 0}.workspace-leaf-content[data-type=style-settings] .view-content>div{width:var(--line-width);max-width:var(--max-width);margin:0 auto}.workspace-leaf-content[data-type=style-settings] .style-settings-heading[data-level="0"] .setting-item-name{padding-left:17px}.workspace-leaf-content[data-type=style-settings] .setting-item{max-width:100%;margin:0 auto}.workspace-leaf-content[data-type=style-settings] .setting-item-name{position:relative}.workspace-leaf-content[data-type=style-settings] .style-settings-collapse-indicator{position:absolute;left:0}.setting-item-heading.style-settings-heading,.style-settings-container .style-settings-heading{cursor:var(--cursor)}.modal.mod-settings .setting-item .pickr button.pcr-button{box-shadow:none;border-radius:40px;height:24px;width:24px}.setting-item .pickr .pcr-button:after,.setting-item .pickr .pcr-button:before{border-radius:40px;box-shadow:none;border:none}.setting-item.setting-item-heading.style-settings-heading.is-collapsed{border-bottom:1px solid var(--background-modifier-border)}.setting-item.setting-item-heading.style-settings-heading{border:0;padding:10px 0 5px;margin-bottom:0}.setting-item .style-settings-export,.setting-item .style-settings-import{text-decoration:none;font-size:var(--font-ui-small);font-weight:500;color:var(--text-muted);margin:0;padding:2px 8px;border-radius:5px;cursor:var(--cursor)}.setting-item .style-settings-export:hover,.setting-item .style-settings-import:hover{background-color:var(--background-modifier-hover);color:var(--text-normal);cursor:var(--cursor)}.mod-root .workspace-leaf-content[data-type=style-settings] .style-settings-container .setting-item:not(.setting-item-heading){flex-direction:row;align-items:center;padding:.5em 0}.workspace-split:not(.mod-root) .workspace-leaf-content[data-type=style-settings] .setting-item-name{font-size:var(--font-adaptive-smaller)}.themed-color-wrapper>div+div{margin-top:0;margin-left:6px}.theme-light .themed-color-wrapper>.theme-light{background-color:rgba(0,0,0,0)}.theme-light .themed-color-wrapper>.theme-dark{background-color:rgba(0,0,0,.8)}.theme-dark .themed-color-wrapper>.theme-dark{background-color:rgba(0,0,0,0)}@media(max-width:400pt){.workspace-leaf-content[data-type=style-settings] .setting-item-name{font-size:var(--font-adaptive-small)}.workspace-leaf-content[data-type=style-settings] .setting-item-info:has(.search-input-container){width:100%;margin-right:0}}body .todoist-query-title{display:inline;font-size:var(--h4);font-variant:var(--h4-variant);letter-spacing:.02em;color:var(--h4-color);font-weight:var(--h4-weight);font-style:var(--h4-style)}body .is-live-preview .block-language-todoist{padding-left:0}ul.todoist-task-list>li.task-list-item .task-list-item-checkbox{margin:0}body .todoist-refresh-button{display:inline;float:right;background:rgba(0,0,0,0);padding:5px 6px 0;margin-right:0}body .is-live-preview .todoist-refresh-button{margin-right:30px}body .todoist-refresh-button:hover{box-shadow:none;background-color:var(--background-modifier-hover)}.todoist-refresh-button svg{width:15px;height:15px;opacity:var(--icon-muted)}ul.todoist-task-list{margin-left:-.25em}.is-live-preview ul.todoist-task-list{padding-left:0;margin-left:.5em;margin-block-start:0;margin-block-end:0}.contains-task-list.todoist-task-list .task-metadata{font-size:var(--font-adaptive-small);display:flex;color:var(--text-muted);justify-content:space-between;margin-left:.1em;margin-bottom:.25rem}.is-live-preview .contains-task-list.todoist-task-list .task-metadata{padding-left:calc(var(--checkbox-size) + .6em)}.todoist-task-list .task-date.task-overdue{color:var(--color-orange)}body .todoist-p1>input[type=checkbox]{border:1px solid var(--color-red)}body .todoist-p1>input[type=checkbox]:hover{opacity:.8}body .todoist-p2>input[type=checkbox]{border:1px solid var(--color-yellow)}body .todoist-p2>input[type=checkbox]:hover{opacity:.8}body .todoist-p3>input[type=checkbox]{border:1px solid var(--color-blue)}body .todoist-p3>input[type=checkbox]:hover{opacity:.8}body.theme-light{--color-axis-label:var(--tx1);--color-tick-label:var(--tx2);--color-dot-fill:var(--ax1);--color-line:var(--ui1)}.tracker-axis-label{font-family:var(--font-interface)}.tracker-axis{color:var(--ui2)}.tabs-manager .chat-view{--assistant-message-color:var(--background-primary);--padding-md:var(--size-4-2) var(--size-4-3);--padding-lg:var(--size-4-3) var(--size-4-3);--chat-box-color:var(--background-primary)}.tabs-manager .chat-view .ow-dialogue-timeline{padding:var(--size-4-4) var(--size-4-3) var(--size-4-8)}.tabs-manager .chat-view .ow-dialogue-timeline .ow-message-bubble .ow-content-wrapper{box-shadow:none;border-color:var(--background-modifier-border);border-radius:var(--radius-m)}.tabs-manager .chat-view .ow-dialogue-timeline .ow-message-bubble.ow-user-bubble .ow-content-wrapper{border-width:0;background-color:var(--interactive-accent)}.tabs-manager .chat-view .input-area .input-form .chat-box{border-radius:0;box-shadow:none;grid-row:1;grid-column:1/3;height:100px;border:none;padding:var(--size-4-3) var(--size-4-4) var(--size-4-2)}.tabs-manager .chat-view .input-area .input-form .chat-box:hover{height:100px}.tabs-manager .chat-view .input-area{padding:0;gap:0}.tabs-manager .chat-view .header{border-bottom:1px solid var(--background-modifier-border)}.tabs-manager .chat-view .input-form{border-top:1px solid var(--background-modifier-border)}.tabs-manager .chat-view .input-area .input-form .chat-box .info-bar span{color:var(--text-faint)}.tabs-manager .chat-view .input-area .input-form .btn-new-chat{display:none}.zoom-plugin-header{--link-color:var(--text-normal);--link-decoration:none;font-size:var(--font-ui-small);padding:0;justify-content:center;margin:var(--size-4-2) auto;max-width:var(--max-width)}.zoom-plugin-header>.zoom-plugin-title{text-decoration:none;max-width:15em;overflow:hidden}.zoom-plugin-header>.zoom-plugin-delimiter{color:var(--text-faint);padding:0 var(--size-4-1)}.theme-dark.minimal-atom-dark{--color-red-rgb:225,109,118;--color-orange-rgb:209,154,102;--color-yellow-rgb:206,193,103;--color-green-rgb:152,195,121;--color-cyan-rgb:88,182,194;--color-blue-rgb:98,175,239;--color-purple-rgb:198,120,222;--color-pink-rgb:225,109,118;--color-red:#e16d76;--color-orange:#d19a66;--color-yellow:#cec167;--color-green:#98c379;--color-cyan:#58b6c2;--color-blue:#62afef;--color-purple:#c678de;--color-pink:#e16d76}.theme-light.minimal-atom-light{--color-red-rgb:228,87,73;--color-orange-rgb:183,107,2;--color-yellow-rgb:193,131,2;--color-green-rgb:80,161,80;--color-cyan-rgb:13,151,179;--color-blue-rgb:98,175,239;--color-purple-rgb:166,38,164;--color-pink-rgb:228,87,73;--color-red:#e45749;--color-orange:#b76b02;--color-yellow:#c18302;--color-green:#50a150;--color-cyan:#0d97b3;--color-blue:#62afef;--color-purple:#a626a4;--color-pink:#e45749}.theme-light.minimal-atom-light{--base-h:106;--base-s:0%;--base-l:98%;--accent-h:231;--accent-s:76%;--accent-l:62%;--bg1:#fafafa;--bg2:#eaeaeb;--bg3:rgba(0,0,0,.1);--ui1:#dbdbdc;--ui2:#d8d8d9;--tx1:#232324;--tx2:#8e8e90;--tx3:#a0a1a8;--hl1:rgba(180,180,183,0.3);--hl2:rgba(209,154,102,0.35)}.theme-light.minimal-atom-light.minimal-light-white{--bg3:#eaeaeb}.theme-dark.minimal-atom-dark,.theme-light.minimal-atom-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-atom-light.minimal-light-contrast .titlebar,.theme-light.minimal-atom-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-atom-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-atom-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:220;--base-s:12%;--base-l:18%;--accent-h:220;--accent-s:86%;--accent-l:65%;--bg1:#282c34;--bg2:#21252c;--bg3:#3a3f4b;--divider-color:#181a1f;--tab-outline-color:#181a1f;--tx1:#d8dae1;--tx2:#898f9d;--tx3:#5d6370;--hl1:rgba(114,123,141,0.3);--hl2:rgba(209,154,102,0.3);--sp1:#fff}.theme-dark.minimal-atom-dark.minimal-dark-black{--base-d:5%;--bg3:#282c34;--divider-color:#282c34;--tab-outline-color:#282c34}.theme-light.minimal-ayu-light{--color-red-rgb:230,80,80;--color-orange-rgb:250,141,62;--color-yellow-rgb:242,174,73;--color-green-rgb:108,191,67;--color-cyan-rgb:76,191,153;--color-blue-rgb:57,158,230;--color-purple-rgb:163,122,204;--color-pink-rgb:255,115,131;--color-red:#e65050;--color-orange:#fa8d3e;--color-yellow:#f2ae49;--color-green:#6CBF43;--color-cyan:#4cbf99;--color-blue:#399ee6;--color-purple:#a37acc;--color-pink:#ff7383}.theme-dark.minimal-ayu-dark{--color-red-rgb:255,102,102;--color-orange-rgb:250,173,102;--color-yellow-rgb:255,209,55;--color-green-rgb:135,217,108;--color-cyan-rgb:149,230,203;--color-blue-rgb:115,208,255;--color-purple-rgb:223,191,255;--color-pink-rgb:242,121,131;--color-red:#ff6666;--color-orange:#ffad66;--color-yellow:#ffd137;--color-green:#87D96C;--color-cyan:#95e6cb;--color-blue:#73d0ff;--color-purple:#dfbfff;--color-pink:#f27983}.theme-light.minimal-ayu-light{--base-h:210;--base-s:17%;--base-l:98%;--accent-h:36;--accent-s:100%;--accent-l:50%;--bg1:#fff;--bg2:#f8f9fa;--bg3:rgba(209,218,224,0.5);--ui1:#E6EAED;--tx1:#5C6165;--tx2:#8A9199;--tx3:#AAAEB0;--hl1:rgba(3,91,214,0.15)}.theme-dark.minimal-ayu-dark,.theme-light.minimal-ayu-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-ayu-light.minimal-light-contrast .titlebar,.theme-light.minimal-ayu-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-ayu-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-ayu-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:222;--base-s:22%;--base-l:15%;--accent-h:35;--accent-s:100%;--accent-l:60%;--bg1:#232937;--bg2:#1E2431;--bg3:rgba(51,61,80,0.5);--ui1:#333C4A;--ui2:#333C4A;--ui3:#333C4A;--tx1:#cccac2;--tx2:#707A8C;--tx3:#495063;--hl1:rgba(64,159,255,0.25)}.theme-dark.minimal-ayu-dark.minimal-dark-black{--accent-h:40;--accent-s:75%;--accent-l:61%;--bg3:#0E1017;--tx1:#BFBDB6;--divider-color:#11151C;--tab-outline-color:#11151C}.theme-light.minimal-catppuccin-light{--color-red-rgb:230,69,83;--color-orange-rgb:254,100,12;--color-yellow-rgb:223,142,29;--color-green-rgb:64,160,43;--color-cyan-rgb:23,146,154;--color-blue-rgb:33,102,246;--color-purple-rgb:137,56,239;--color-pink-rgb:234,119,203;--color-red:#E64553;--color-orange:#FE640C;--color-yellow:#DF8E1D;--color-green:#40A02B;--color-cyan:#17929A;--color-blue:#2166F6;--color-purple:#8938EF;--color-pink:#EA77CB}.theme-dark.minimal-catppuccin-dark{--color-red-rgb:235,153,156;--color-orange-rgb:239,160,118;--color-yellow-rgb:229,200,144;--color-green-rgb:166,209,138;--color-cyan-rgb:129,200,190;--color-blue-rgb:140,170,238;--color-purple-rgb:202,158,230;--color-pink-rgb:244,185,229;--color-red:#EB999C;--color-orange:#EFA076;--color-yellow:#E5C890;--color-green:#A6D18A;--color-cyan:#81C8BE;--color-blue:#8CAAEE;--color-purple:#CA9EE6;--color-pink:#F4B9E5}.theme-light.minimal-catppuccin-light{--base-h:228;--base-s:20%;--base-l:95%;--accent-h:11;--accent-s:59%;--accent-l:67%;--bg1:#F0F1F5;--bg2:#DCE0E8;--bg3:hsla(228,11%,65%,.25);--ui1:#CCD0DA;--ui2:#BCC0CC;--ui3:#ACB0BE;--tx1:#4D4F69;--tx2:#5D5F77;--tx3:#8D8FA2;--hl1:rgba(172,176,190,.3);--hl2:rgba(223,142,29,.3)}.theme-light.minimal-catppuccin-light.minimal-light-tonal{--bg2:#DCE0E8}.theme-light.minimal-catppuccin-light.minimal-light-white{--bg3:#F0F1F5;--ui1:#DCE0E8}.theme-dark.minimal-catppuccin-dark,.theme-light.minimal-catppuccin-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-catppuccin-light.minimal-light-contrast .titlebar,.theme-light.minimal-catppuccin-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-catppuccin-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-catppuccin-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:229;--base-s:19%;--base-l:23%;--accent-h:10;--accent-s:57%;--accent-l:88%;--bg1:#303446;--bg2:#242634;--bg3:hsla(229,13%,52%,0.25);--ui1:#41455A;--ui2:#51576D;--ui3:#626880;--tx1:#C6D0F5;--tx2:#A6ADCE;--tx3:#848BA7;--sp1:#242634;--hl1:rgba(98,104,128,.5);--hl2:rgba(223,142,29,.4)}.theme-dark.minimal-catppuccin-dark.minimal-dark-black{--ui1:#303446;--hl2:rgba(223,142,29,.5)}.theme-dark.minimal-dracula-dark{--color-red-rgb:255,85,85;--color-orange-rgb:255,184,108;--color-yellow-rgb:241,250,140;--color-green-rgb:80,250,123;--color-cyan-rgb:139,233,253;--color-blue-rgb:98,114,164;--color-purple-rgb:189,147,249;--color-pink-rgb:255,121,198;--color-red:#ff5555;--color-orange:#ffb86c;--color-yellow:#f1fa8c;--color-green:#50fa7b;--color-cyan:#8be9fd;--color-blue:#6272a4;--color-purple:#bd93f9;--color-pink:#ff79c6}.theme-dark.minimal-dracula-dark,.theme-light.minimal-dracula-light.minimal-light-contrast .titlebar,.theme-light.minimal-dracula-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-dracula-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:232;--base-s:16%;--base-l:19%;--accent-h:265;--accent-s:89%;--accent-l:78%;--bg1:#282a37;--bg2:#21222c;--ui2:#44475a;--ui3:#6272a4;--tx1:#f8f8f2;--tx2:#949FBE;--tx3:#6272a4;--hl1:rgba(134, 140, 170, 0.3);--hl2:rgba(189, 147, 249, 0.35)}.theme-dark.minimal-dracula-dark.minimal-dark-black{--ui1:#282a36}.theme-dark.minimal-eink-dark,.theme-light.minimal-eink-light{--collapse-icon-color:var(--text-normal);--icon-color-active:var(--bg1);--icon-color-hover:var(--bg1);--icon-color-focused:var(--bg1);--icon-opacity:1;--indentation-guide-color:var(--tx1);--indentation-guide-color-active:var(--tx1);--indentation-guide-width-active:3px;--interactive-normal:var(--bg1);--input-shadow:0 0 0 1px var(--tx1);--link-unresolved-opacity:1;--link-unresolved-decoration-style:dashed;--link-unresolved-decoration-color:var(--tx1);--metadata-label-background-active:var(--bg1);--metadata-input-background-active:var(--bg1);--modal-border-color:var(--tx1);--modal-border-width:2px;--nav-item-color-hover:var(--bg1);--nav-item-color-active:var(--bg1);--prompt-border-color:var(--tx1);--prompt-border-width:2px;--calendar-dot-active:var(--bg1);--calendar-dot-today:var(--bg1);--calendar-text-active:var(--bg1);--tag-border-width:1.25px;--tag-background:transparent;--tag-background-hover:transparent;--tag-border-color:var(--tx1);--tag-border-color-hover:var(--tx1);--text-on-accent:var(--bg1);--text-on-accent-inverted:var(--bg1)}.theme-dark.minimal-eink-dark.tabs-modern,.theme-light.minimal-eink-light.tabs-modern{--minimal-tab-text-color-active:var(--bg1);--tab-text-color-focused-active-current:var(--bg1)}.theme-dark.minimal-eink-dark .suggestion-container,.theme-light.minimal-eink-light .suggestion-container{border-width:3px}.theme-dark.minimal-eink-dark .cm-s-obsidian span.cm-inline-code,.theme-dark.minimal-eink-dark .markdown-rendered code,.theme-light.minimal-eink-light .cm-s-obsidian span.cm-inline-code,.theme-light.minimal-eink-light .markdown-rendered code{font-weight:600}.theme-dark.minimal-eink-dark .metadata-property-icon,.theme-light.minimal-eink-light .metadata-property-icon{--icon-color-focused:var(--tx1)}.theme-dark.minimal-eink-dark .checkbox-container,.theme-light.minimal-eink-light .checkbox-container{background-color:var(--bg1);box-shadow:0 0 0 1px var(--tx1);--toggle-thumb-color:var(--tx1)}.theme-dark.minimal-eink-dark .checkbox-container.is-enabled,.theme-light.minimal-eink-light .checkbox-container.is-enabled{background-color:var(--tx1);--toggle-thumb-color:var(--bg1)}.theme-dark.minimal-eink-dark .cm-s-obsidian span.cm-formatting-highlight,.theme-dark.minimal-eink-dark .cm-s-obsidian span.cm-highlight,.theme-dark.minimal-eink-dark .community-item .suggestion-highlight,.theme-dark.minimal-eink-dark .dropdown:hover,.theme-dark.minimal-eink-dark .horizontal-tab-nav-item:hover,.theme-dark.minimal-eink-dark .markdown-rendered mark,.theme-dark.minimal-eink-dark .status-bar .plugin-sync:hover .sync-status-icon.mod-success,.theme-dark.minimal-eink-dark .status-bar .plugin-sync:hover .sync-status-icon.mod-working,.theme-dark.minimal-eink-dark .status-bar-item.mod-clickable:hover,.theme-dark.minimal-eink-dark .suggestion-item.is-selected,.theme-dark.minimal-eink-dark .text-icon-button:hover,.theme-dark.minimal-eink-dark .vertical-tab-nav-item:hover,.theme-dark.minimal-eink-dark button,.theme-dark.minimal-eink-dark select:hover,.theme-dark.minimal-eink-dark:not(.colorful-active) .horizontal-tab-nav-item.is-active,.theme-dark.minimal-eink-dark:not(.colorful-active) .vertical-tab-nav-item.is-active,.theme-light.minimal-eink-light .cm-s-obsidian span.cm-formatting-highlight,.theme-light.minimal-eink-light .cm-s-obsidian span.cm-highlight,.theme-light.minimal-eink-light .community-item .suggestion-highlight,.theme-light.minimal-eink-light .dropdown:hover,.theme-light.minimal-eink-light .horizontal-tab-nav-item:hover,.theme-light.minimal-eink-light .markdown-rendered mark,.theme-light.minimal-eink-light .status-bar .plugin-sync:hover .sync-status-icon.mod-success,.theme-light.minimal-eink-light .status-bar .plugin-sync:hover .sync-status-icon.mod-working,.theme-light.minimal-eink-light .status-bar-item.mod-clickable:hover,.theme-light.minimal-eink-light .suggestion-item.is-selected,.theme-light.minimal-eink-light .text-icon-button:hover,.theme-light.minimal-eink-light .vertical-tab-nav-item:hover,.theme-light.minimal-eink-light button,.theme-light.minimal-eink-light select:hover,.theme-light.minimal-eink-light:not(.colorful-active) .horizontal-tab-nav-item.is-active,.theme-light.minimal-eink-light:not(.colorful-active) .vertical-tab-nav-item.is-active{color:var(--bg1)}.theme-light.minimal-eink-light{--base-h:0;--base-s:0%;--base-l:100%;--accent-h:0;--accent-s:0%;--accent-l:0%;--ax3:#000;--bg1:#fff;--bg2:#fff;--bg3:#000;--ui1:#000;--ui2:#000;--ui3:#000;--tx1:#000;--tx2:#000;--tx3:#000;--hl1:#000;--hl2:#000;--sp1:#fff;--text-on-accent:#fff;--background-modifier-cover:rgba(235,235,235,1)}.theme-light.minimal-eink-light.minimal-light-white{--bg3:#fff}.theme-dark.minimal-eink-dark,.theme-light.minimal-eink-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-eink-light.minimal-light-contrast .titlebar,.theme-light.minimal-eink-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-eink-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-eink-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:0;--base-s:0%;--base-l:0%;--accent-h:0;--accent-s:0%;--accent-l:100%;--ax3:#fff;--bg1:#000;--bg2:#000;--bg3:#fff;--ui1:#fff;--ui2:#fff;--ui3:#fff;--tx1:#fff;--tx2:#fff;--tx3:#fff;--hl1:#fff;--hl2:#fff;--sp1:#000;--background-modifier-cover:rgba(20,20,20,1)}.theme-light.minimal-eink-light.minimal-light-tonal{--bg3:#bbb;--ui1:#bbb;--modal-border-color:var(--ui1);--prompt-border-color:var(--ui1)}.theme-dark.minimal-eink-dark.minimal-dark-tonal{--bg3:#444;--ui1:#444;--modal-border-color:var(--ui1);--prompt-border-color:var(--ui1)}.theme-light.minimal-everforest-light{--color-red-rgb:248,85,82;--color-orange-rgb:245,125,38;--color-yellow-rgb:223,160,0;--color-green-rgb:141,161,1;--color-cyan-rgb:53,167,124;--color-blue-rgb:56,148,196;--color-purple-rgb:223,105,186;--color-pink-rgb:223,105,186;--color-red:#f85552;--color-orange:#f57d26;--color-yellow:#dfa000;--color-green:#8da101;--color-cyan:#35a77c;--color-blue:#3795C5;--color-purple:#df69ba;--color-pink:#df69ba}.theme-dark.minimal-everforest-dark{--color-red-rgb:230,126,128;--color-orange-rgb:230,152,117;--color-yellow-rgb:219,188,127;--color-green-rgb:167,192,128;--color-cyan-rgb:131,192,146;--color-blue-rgb:127,187,179;--color-purple-rgb:223,105,186;--color-pink-rgb:223,105,186;--color-red:#e67e80;--color-orange:#e69875;--color-yellow:#dbbc7f;--color-green:#a7c080;--color-cyan:#83c092;--color-blue:#7fbbb3;--color-purple:#d699b6;--color-pink:#d699b6}.theme-light.minimal-everforest-light{--base-h:44;--base-s:87%;--base-l:94%;--accent-h:83;--accent-s:36%;--accent-l:53%;--bg1:#fdf6e3;--bg2:#efebd4;--bg3:rgba(226,222,198,.5);--ui1:#e0dcc7;--ui2:#bec5b2;--ui3:#bec5b2;--tx1:#5C6A72;--tx2:#829181;--tx3:#a6b0a0;--hl1:rgba(198,214,152,.4);--hl2:rgba(222,179,51,.3)}.theme-light.minimal-everforest-light.minimal-light-tonal{--bg2:#fdf6e3}.theme-light.minimal-everforest-light.minimal-light-white{--bg3:#f3efda;--ui1:#edead5}.theme-dark.minimal-everforest-dark,.theme-light.minimal-everforest-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-everforest-light.minimal-light-contrast .titlebar,.theme-light.minimal-everforest-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-everforest-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-everforest-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:203;--base-s:15%;--base-l:23%;--accent-h:81;--accent-s:34%;--accent-l:63%;--bg1:#2d353b;--bg2:#232a2e;--bg3:rgba(71,82,88,0.5);--ui1:#475258;--ui2:#4f585e;--ui3:#525c62;--tx1:#d3c6aa;--tx2:#9da9a0;--tx3:#7a8478;--hl1:rgba(134,70,93,.5);--hl2:rgba(147,185,96,.3)}.theme-dark.minimal-everforest-dark.minimal-dark-black{--hl1:rgba(134,70,93,.4);--ui1:#2b3339}.theme-light.minimal-flexoki-light{--color-red-rgb:175,48,41;--color-orange-rgb:188,82,21;--color-yellow-rgb:173,131,1;--color-green-rgb:102,128,11;--color-cyan-rgb:36,131,123;--color-blue-rgb:32,94,166;--color-purple-rgb:94,64,157;--color-pink-rgb:160,47,111;--color-red:#AF3029;--color-orange:#BC5215;--color-yellow:#AD8301;--color-green:#66800B;--color-cyan:#24837B;--color-blue:#205EA6;--color-purple:#5E409D;--color-pink:#A02F6F}.theme-dark.minimal-flexoki-dark{--color-red-rgb:209,77,65;--color-orange-rgb:218,112,44;--color-yellow-rgb:208,162,21;--color-green-rgb:135,154,57;--color-cyan-rgb:58,169,159;--color-blue-rgb:67,133,190;--color-purple-rgb:139,126,200;--color-pink-rgb:206,93,151;--color-red:#D14D41;--color-orange:#DA702C;--color-yellow:#D0A215;--color-green:#879A39;--color-cyan:#3AA99F;--color-blue:#4385BE;--color-purple:#8B7EC8;--color-pink:#CE5D97}.theme-light.minimal-flexoki-light{--base-h:48;--base-s:100%;--base-l:97%;--accent-h:175;--accent-s:57%;--accent-l:33%;--bg1:#FFFCF0;--bg2:#F2F0E5;--bg3:rgba(16,15,15,0.05);--ui1:#E6E4D9;--ui2:#DAD8CE;--ui3:#CECDC3;--tx1:#100F0F;--tx2:#6F6E69;--tx3:#B7B5AC;--hl1:rgba(187,220,206,0.3);--hl2:rgba(247,209,61,0.3)}.theme-light.minimal-flexoki-light.minimal-light-tonal{--bg2:#FFFCF0}.theme-dark.minimal-flexoki-dark,.theme-light.minimal-flexoki-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-flexoki-light.minimal-light-contrast .titlebar,.theme-light.minimal-flexoki-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-flexoki-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-flexoki-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:360;--base-s:3%;--base-l:6%;--accent-h:175;--accent-s:49%;--accent-l:45%;--bg1:#100F0F;--bg2:#1C1B1A;--bg3:rgba(254,252,240,0.05);--ui1:#282726;--ui2:#343331;--ui3:#403E3C;--tx1:#CECDC3;--tx2:#878580;--tx3:#575653;--hl1:rgba(30,95,91,0.3);--hl2:rgba(213,159,17,0.3)}.theme-dark.minimal-flexoki-dark.minimal-dark-black{--ui1:#1C1B1A}.theme-dark.minimal-gruvbox-dark,.theme-light.minimal-gruvbox-light{--color-red-rgb:204,36,29;--color-orange-rgb:214,93,14;--color-yellow-rgb:215,153,33;--color-green-rgb:152,151,26;--color-cyan-rgb:104,157,106;--color-blue-rgb:69,133,136;--color-purple-rgb:177,98,134;--color-pink-rgb:177,98,134;--color-red:#cc241d;--color-orange:#d65d0e;--color-yellow:#d79921;--color-green:#98971a;--color-cyan:#689d6a;--color-blue:#458588;--color-purple:#b16286;--color-pink:#b16286}.theme-light.minimal-gruvbox-light{--base-h:49;--base-s:92%;--base-l:89%;--accent-h:24;--accent-s:88%;--accent-l:45%;--bg1:#fcf2c7;--bg2:#f2e6bd;--bg3:#ebd9b3;--ui1:#ebdbb2;--ui2:#d5c4a1;--ui3:#bdae93;--tx1:#282828;--tx2:#7c7065;--tx3:#a89a85;--hl1:rgba(192,165,125,.3);--hl2:rgba(215,153,33,.4)}.theme-light.minimal-gruvbox-light.minimal-light-tonal{--bg2:#fcf2c7}.theme-light.minimal-gruvbox-light.minimal-light-white{--bg3:#faf5d7;--ui1:#f2e6bd}.theme-dark.minimal-gruvbox-dark,.theme-light.minimal-gruvbox-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-gruvbox-light.minimal-light-contrast .titlebar,.theme-light.minimal-gruvbox-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-gruvbox-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-gruvbox-light.minimal-light-contrast.minimal-status-off .status-bar{--accent-h:24;--accent-s:88%;--accent-l:45%;--bg1:#282828;--bg2:#1e2021;--bg3:#3d3836;--bg3:rgba(62,57,55,0.5);--ui1:#3c3836;--ui2:#504945;--ui3:#665c54;--tx1:#fbf1c7;--tx2:#bdae93;--tx3:#7c6f64;--hl1:rgba(173,149,139,0.3);--hl2:rgba(215,153,33,.4)}.theme-dark.minimal-gruvbox-dark.minimal-dark-black{--hl1:rgba(173,149,139,0.4);--ui1:#282828}.theme-dark.minimal-macos-dark,.theme-light.minimal-macos-light{--color-red-rgb:255,59,49;--color-orange-rgb:255,149,2;--color-yellow-rgb:255,204,0;--color-green-rgb:42,205,65;--color-cyan-rgb:2,199,190;--color-blue-rgb:2,122,255;--color-purple-rgb:176,81,222;--color-pink-rgb:255,46,85;--color-red:#ff3b31;--color-orange:#ff9502;--color-yellow:#ffcc00;--color-green:#2acd41;--color-cyan:#02c7be;--color-blue:#027aff;--color-purple:#b051de;--color-pink:#ff2e55}.theme-light.minimal-macos-light{--base-h:106;--base-s:0%;--base-l:94%;--accent-h:212;--accent-s:100%;--accent-l:50%;--bg1:#fff;--bg2:#f0f0f0;--bg3:rgba(0,0,0,.1);--ui1:#e7e7e7;--tx1:#454545;--tx2:#808080;--tx3:#b0b0b0;--hl1:#b3d7ff}.theme-light.minimal-macos-light.minimal-light-tonal{--bg1:#f0f0f0;--bg2:#f0f0f0}.theme-dark.minimal-macos-dark,.theme-light.minimal-macos-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-macos-light.minimal-light-contrast .titlebar,.theme-light.minimal-macos-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-macos-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-macos-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:106;--base-s:0%;--base-l:12%;--accent-h:212;--accent-s:100%;--accent-l:50%;--bg1:#1e1e1e;--bg2:#282828;--bg3:rgba(255,255,255,0.11);--divider-color:#000;--tab-outline-color:#000;--ui1:#373737;--ui2:#515151;--ui3:#595959;--tx1:#dcdcdc;--tx2:#8c8c8c;--tx3:#686868;--hl1:rgba(98,169,252,0.5);--sp1:#fff}.theme-dark.minimal-macos-dark.minimal-dark-black{--divider-color:#1e1e1e;--tab-outline-color:#1e1e1e}.theme-dark.minimal-nord-dark,.theme-light.minimal-nord-light{--color-red-rgb:191,97,106;--color-orange-rgb:208,138,112;--color-yellow-rgb:235,203,139;--color-green-rgb:163,190,140;--color-cyan-rgb:136,192,208;--color-blue-rgb:129,161,193;--color-purple-rgb:180,142,173;--color-pink-rgb:180,142,173;--color-red:#BF616A;--color-orange:#D08770;--color-yellow:#EBCB8B;--color-green:#A3BE8C;--color-cyan:#88C0D0;--color-blue:#81A1C1;--color-purple:#B48EAD;--color-pink:#B48EAD}.theme-light.minimal-nord-light{--base-h:221;--base-s:27%;--base-l:94%;--accent-h:213;--accent-s:32%;--accent-l:52%;--bg1:#fff;--bg2:#eceff4;--bg3:rgba(157,174,206,0.25);--ui1:#d8dee9;--ui2:#BBCADC;--ui3:#81a1c1;--tx1:#2e3440;--tx2:#7D8697;--tx3:#ADB1B8;--hl2:rgba(208, 135, 112, 0.35)}.theme-dark.minimal-nord-dark,.theme-light.minimal-nord-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-nord-light.minimal-light-contrast .titlebar,.theme-light.minimal-nord-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-nord-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-nord-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:220;--base-s:16%;--base-l:22%;--accent-h:213;--accent-s:32%;--accent-l:52%;--bg1:#2e3440;--bg2:#3b4252;--bg3:rgba(135,152,190,0.15);--ui1:#434c5e;--ui2:#58647b;--ui3:#58647b;--tx1:#d8dee9;--tx2:#9eafcc;--tx3:#4c566a;--hl1:rgba(129,142,180,0.3);--hl2:rgba(208, 135, 112, 0.35)}.theme-dark.minimal-nord-dark.minimal-dark-black{--ui1:#2e3440}.theme-light.minimal-notion-light{--base-h:39;--base-s:18%;--base-d:96%;--accent-h:197;--accent-s:71%;--accent-l:52%;--bg2:#f7f6f4;--bg3:#e8e7e4;--ui1:#ededec;--ui2:#dbdbda;--ui3:#aaa9a5;--tx1:#37352f;--tx2:#72706c;--tx3:#aaa9a5;--hl1:rgba(131,201,229,0.3);--link-weight:500}.theme-dark.minimal-notion-dark,.theme-light.minimal-notion-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-notion-light.minimal-light-contrast .titlebar,.theme-light.minimal-notion-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-notion-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-notion-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:203;--base-s:8%;--base-d:20%;--accent-h:197;--accent-s:71%;--accent-l:52%;--bg1:#2f3437;--bg2:#373c3f;--bg3:#4b5053;--ui1:#3e4245;--ui2:#585d5f;--ui3:#585d5f;--tx1:#ebebeb;--tx2:#909295;--tx3:#585d5f;--hl1:rgba(57,134,164,0.3);--link-weight:500}.theme-dark.minimal-notion-dark.minimal-dark-black{--base-d:5%;--bg3:#232729;--ui1:#2f3437}.theme-light.minimal-rose-pine-light{--color-red-rgb:180,99,122;--color-orange-rgb:215,130,125;--color-yellow-rgb:234,157,53;--color-green-rgb:40,105,131;--color-cyan-rgb:87,147,159;--color-blue-rgb:87,147,159;--color-purple-rgb:144,122,169;--color-pink-rgb:144,122,169;--color-red:#b4637a;--color-orange:#d7827e;--color-yellow:#ea9d34;--color-green:#286983;--color-cyan:#56949f;--color-blue:#56949f;--color-purple:#907aa9;--color-pink:#907aa9}.theme-dark.minimal-rose-pine-dark{--color-red-rgb:234,111,146;--color-orange-rgb:233,155,151;--color-yellow-rgb:246,193,119;--color-green-rgb:47,116,143;--color-cyan-rgb:157,207,215;--color-blue-rgb:157,207,215;--color-purple-rgb:196,167,231;--color-pink-rgb:196,167,231;--color-red:#eb6f92;--color-orange:#ea9a97;--color-yellow:#f6c177;--color-green:#31748f;--color-cyan:#9ccfd8;--color-blue:#9ccfd8;--color-purple:#c4a7e7;--color-pink:#c4a7e7}.theme-light.minimal-rose-pine-light{--base-h:32;--base-s:57%;--base-l:95%;--accent-h:3;--accent-s:53%;--accent-l:67%;--bg1:#fffaf3;--bg2:#faf4ed;--bg3:rgba(233,223,218,0.5);--ui1:#EAE3E1;--ui2:#dfdad9;--ui3:#cecacd;--tx1:#575279;--tx2:#797593;--tx3:#9893a5;--hl1:rgba(191,180,181,0.35)}.theme-dark.minimal-rose-pine-dark,.theme-light.minimal-rose-pine-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-rose-pine-light.minimal-light-contrast .titlebar,.theme-light.minimal-rose-pine-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-rose-pine-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-rose-pine-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:247;--base-s:23%;--base-l:15%;--accent-h:2;--accent-s:55%;--accent-l:83%;--bg1:#1f1d2e;--bg2:#191724;--bg3:rgba(68,66,86,0.5);--ui1:#312F41;--ui2:#403d52;--ui3:#524f67;--tx1:#e0def4;--tx2:#908caa;--tx3:#6e6a86;--hl1:rgba(126,121,155,0.35)}.theme-dark.minimal-rose-pine-dark.minimal-dark-black{--ui1:#21202e}.theme-dark.minimal-solarized-dark,.theme-light.minimal-solarized-light{--color-red-rgb:220,50,47;--color-orange-rgb:203,77,22;--color-yellow-rgb:181,137,0;--color-green-rgb:133,153,0;--color-cyan-rgb:42,161,152;--color-blue-rgb:38,139,210;--color-purple-rgb:108,113,196;--color-pink-rgb:211,54,130;--color-red:#dc322f;--color-orange:#cb4b16;--color-yellow:#b58900;--color-green:#859900;--color-cyan:#2aa198;--color-blue:#268bd2;--color-purple:#6c71c4;--color-pink:#d33682}.theme-light.minimal-solarized-light{--base-h:44;--base-s:87%;--base-l:94%;--accent-h:205;--accent-s:70%;--accent-l:48%;--bg1:#fdf6e3;--bg2:#eee8d5;--bg3:rgba(0,0,0,0.062);--ui1:#e9e1c8;--ui2:#d0cab8;--ui3:#d0cab8;--tx1:#073642;--tx2:#586e75;--tx3:#ABB2AC;--tx4:#586e75;--hl1:rgba(202,197,182,0.3);--hl2:rgba(203,75,22,0.3)}.theme-light.minimal-solarized-light.minimal-light-tonal{--bg2:#fdf6e3}.theme-dark.minimal-solarized-dark,.theme-light.minimal-solarized-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-solarized-light.minimal-light-contrast .titlebar,.theme-light.minimal-solarized-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-solarized-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-solarized-light.minimal-light-contrast.minimal-status-off .status-bar{--accent-h:205;--accent-s:70%;--accent-l:48%;--base-h:193;--base-s:98%;--base-l:11%;--bg1:#002b36;--bg2:#073642;--bg3:rgba(255,255,255,0.062);--ui1:#19414B;--ui2:#274850;--ui3:#31535B;--tx1:#93a1a1;--tx2:#657b83;--tx3:#31535B;--tx4:#657b83;--hl1:rgba(15,81,98,0.3);--hl2:rgba(203, 75, 22, 0.35)}.theme-dark.minimal-solarized-dark.minimal-dark-black{--hl1:rgba(15,81,98,0.55);--ui1:#002b36}.theme-dark.minimal-things-dark,.theme-light.minimal-things-light{--color-red-rgb:255,48,108;--color-orange-rgb:255,149,2;--color-yellow-rgb:255,213,0;--color-green-rgb:75,191,94;--color-cyan-rgb:73,174,164;--color-purple-rgb:176,81,222;--color-pink-rgb:255,46,85;--color-red:#FF306C;--color-orange:#ff9502;--color-yellow:#FFD500;--color-green:#4BBF5E;--color-cyan:#49AEA4;--color-purple:#b051de;--color-pink:#ff2e55}.theme-light.minimal-things-light{--color-blue-rgb:27,97,194;--color-blue:#1b61c2}.theme-dark.minimal-things-dark{--color-blue-rgb:77,149,247;--color-blue:#4d95f7}.theme-light.minimal-things-light{--accent-h:215;--accent-s:76%;--accent-l:43%;--bg1:white;--bg2:#f5f6f8;--bg3:rgba(162,177,187,0.25);--ui1:#eef0f4;--ui2:#D8DADD;--ui3:#c1c3c6;--tx1:#26272b;--tx2:#7D7F84;--tx3:#a9abb0;--hl1:#cae2ff}.theme-light.minimal-things-light.minimal-light-tonal{--ui1:#e6e8ec}.theme-light.minimal-things-light.minimal-light-white{--bg3:#f5f6f8}.theme-dark.minimal-things-dark,.theme-light.minimal-things-light.minimal-light-contrast .mod-left-split,.theme-light.minimal-things-light.minimal-light-contrast .titlebar,.theme-light.minimal-things-light.minimal-light-contrast .workspace-drawer.mod-left,.theme-light.minimal-things-light.minimal-light-contrast .workspace-ribbon.mod-left:not(.is-collapsed),.theme-light.minimal-things-light.minimal-light-contrast.minimal-status-off .status-bar{--base-h:218;--base-s:9%;--base-l:15%;--accent-h:215;--accent-s:91%;--accent-l:64%;--bg1:#24262a;--bg2:#202225;--bg3:#3d3f41;--divider-color:#17191c;--tab-outline-color:#17191c;--ui1:#3A3B3F;--ui2:#45464a;--ui3:#6c6e70;--tx1:#fbfbfb;--tx2:#CBCCCD;--tx3:#6c6e70;--hl1:rgba(40,119,236,0.35);--sp1:#fff}.theme-dark.minimal-things-dark.minimal-dark-black{--base-d:5%;--bg3:#24262a;--divider-color:#24262a;--tab-outline-color:#24262a} /* Plugin compatibility */ /* @plugins @@ -1158,24 +1158,6 @@ settings: type: heading level: 2 collapsed: true - - - id: ig-adjust-reading - title: Horizontal adjustment in reading mode - type: variable-number-slider - default: -0.65 - min: -1.2 - max: 0 - step: 0.05 - format: em - - - id: ig-adjust-edit - title: Horizontal adjustment in edit mode - type: variable-number-slider - default: -1 - min: -10 - max: 10 - step: 1 - format: px - id: indentation-guide-color title: Indentation guide color @@ -1467,11 +1449,6 @@ settings: type: heading level: 2 collapsed: true - - - id: sidebar-lines-off - title: Hide sidebar relationship lines - description: Turns off lines in file navigation - type: class-toggle - id: sidebar-tabs-style title: Sidebar tab style @@ -1494,7 +1471,22 @@ settings: - label: Underline value: sidebar-tabs-underline - + - + id: sidebar-tabs-names + title: Sidebar tab names + type: class-select + allowEmpty: false + default: tab-names-off + options: + - + label: Hidden + value: tab-names-off + - + label: Visible + value: tab-names-on + - + label: Single tab only + value: tab-names-single - id: mobile-left-sidebar-width title: Mobile left sidebar width @@ -1541,6 +1533,16 @@ settings: description: All of the following settings apply to all tables globally. To turn on these features on a per-note basis use helper classes. See documentation. type: variable-text default: 1em + - + id: table-column-min-width + title: Minimum column width + type: variable-text + default: 6ch + - + id: table-column-max-width + title: Maximum column width + type: variable-text + default: none - id: maximize-tables-off title: Maximize table width @@ -1829,6 +1831,15 @@ settings: format: hex default-light: '#' default-dark: '#' + - + id: text-formatting + title: Markdown syntax color + description: Markdown formatting syntax text color + type: variable-themed-color + opacity: true + format: hex + default-light: '#' + default-dark: '#' - id: italic-color title: Italic text color @@ -2095,6 +2106,11 @@ settings: name: Minimal Advanced Settings id: minimal-advanced settings: + - + id: hide-markdown + title: Hide Markdown syntax + description: (EXPERIMENTAL) Warning, this can be confusing because the characters still exist they are just hidden. + type: class-toggle - id: styled-scrollbars title: Styled scrollbars diff --git a/.obsidian/types.json b/.obsidian/types.json new file mode 100644 index 0000000..22adda3 --- /dev/null +++ b/.obsidian/types.json @@ -0,0 +1,26 @@ +{ + "types": { + "aliases": "aliases", + "cssclasses": "multitext", + "tags": "tags", + "excalidraw-plugin": "text", + "excalidraw-export-transparent": "checkbox", + "excalidraw-mask": "checkbox", + "excalidraw-export-dark": "checkbox", + "excalidraw-export-padding": "number", + "excalidraw-export-pngscale": "number", + "excalidraw-link-prefix": "text", + "excalidraw-url-prefix": "text", + "excalidraw-link-brackets": "checkbox", + "excalidraw-onload-script": "text", + "excalidraw-linkbutton-opacity": "number", + "excalidraw-default-mode": "text", + "excalidraw-font": "text", + "excalidraw-font-color": "text", + "excalidraw-border-color": "text", + "excalidraw-css": "text", + "excalidraw-autoexport": "text", + "excalidraw-iframe-theme": "text", + "excalidraw-open-md": "checkbox" + } +} \ No newline at end of file diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 90ebb32..68dcd91 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -77,7 +77,8 @@ } ], "direction": "horizontal", - "width": 315.5 + "width": 315.5, + "collapsed": true }, "right": { "id": "c501495747cfa761", @@ -144,8 +145,17 @@ "type": "advanced-tables-toolbar", "state": {} } + }, + { + "id": "263334546753593f", + "type": "leaf", + "state": { + "type": "quiet-outline", + "state": {} + } } - ] + ], + "currentTab": 5 } ], "direction": "horizontal", @@ -154,17 +164,17 @@ }, "left-ribbon": { "hiddenItems": { - "obsidian-excalidraw-plugin:Create new drawing": false, "switcher:Open quick switcher": false, "graph:Open graph view": false, "templates:Insert template": false, "command-palette:Open command palette": false, "oz-clear-unused-images:Clear Unused Images": false, "table-editor-obsidian:Advanced Tables Toolbar": false, + "obsidian-excalidraw-plugin:Create new drawing": false, "notion-like-tables:Create loom": false } }, - "active": "37c3469d51811935", + "active": "768c7ad67bbbb63e", "lastOpenFiles": [ "Books/动手学深度学习/引言.md", "Study/DL/动手学深度学习/预备知识.md",